commit 9a3748aa8e43e5698e046db9fd1e71f4aa49c3e6 Author: Walter Lapchynski Date: Mon Nov 28 21:52:15 2016 -0800 initial commit diff --git a/plugins/404page/404page.js b/plugins/404page/404page.js new file mode 100644 index 0000000..f0dafc9 --- /dev/null +++ b/plugins/404page/404page.js @@ -0,0 +1,20 @@ +jQuery(document).ready(function($) { + jQuery( '#select404page' ).change(function() { + jQuery( '#edit_404_page, #test_404_page' ).prop( 'disabled', !( jQuery( '#select404page' ).val() == jQuery( '#404page_current_value').text() != 0 ) ); + }); + jQuery( '#select404page' ).trigger( 'change' ); + jQuery( '#edit_404_page' ).click(function() { + window.location.href = jQuery( '#404page_edit_link' ).text(); + }); + jQuery( '#test_404_page' ).click(function() { + window.location.href = jQuery( '#404page_test_link' ).text(); + }); + jQuery( '#404page_admin_notice .notice-dismiss' ).click( function() { + jQuery.ajax({ + url: ajaxurl, + data: { + action: '404page_dismiss_admin_notice' + } + }); + }); +}); \ No newline at end of file diff --git a/plugins/404page/404page.php b/plugins/404page/404page.php new file mode 100644 index 0000000..f6584c4 --- /dev/null +++ b/plugins/404page/404page.php @@ -0,0 +1,641 @@ +plugin_name = '404page'; + $this->plugin_slug = '404page'; + $this->version = '2.3'; + $this->get_settings(); + $this->init(); + } + + // get all settings + private function get_settings() { + $this->settings = array(); + $this->settings['404page_page_id'] = $this->get_404page_id(); + $this->settings['404page_hide'] = $this->get_404page_hide(); + $this->settings['404page_fire_error'] = $this->get_404page_fire_error(); + // $this->settings['404page_method'] = $this->get_404page_method(); --> moved to set_mode in v 2.2 because this may be too early here + $this->settings['404page_native'] = false; + } + + // do plugin init + private function init() { + + // as of v 2.2 always call set_mode + add_action( 'init', array( $this, 'set_mode' ) ); + + if ( !is_admin() ) { + + add_action( 'pre_get_posts', array ( $this, 'exclude_404page' ) ); + add_filter( 'get_pages', array ( $this, 'remove_404page_from_array' ), 10, 2 ); + + } else { + + add_action( 'admin_init', array( $this, 'admin_init' ) ); + add_action( 'admin_menu', array( $this, 'admin_menu' ) ); + add_action( 'admin_head', array( $this, 'admin_css' ) ); + add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), array( $this, 'add_settings_link' ) ); + + if ( $this->settings['404page_hide'] and $this->settings['404page_page_id'] > 0 ) { + add_action( 'pre_get_posts' ,array ( $this, 'exclude_404page' ) ); + } + + } + + } + + // init filters + function set_mode() { + + $this->settings['404page_method'] = $this->get_404page_method(); + + if ( !is_admin() ) { + + if ( defined( 'CUSTOMIZR_VER' ) ) { + + // Customizr Compatibility Mode + + add_filter( 'tc_404_header_content', array( $this, 'show404title_customizr_mode' ), 999 ); + add_filter( 'tc_404_content', array( $this, 'show404_customizr_mode' ), 999 ); + add_filter( 'tc_404_selectors', array( $this, 'show404articleselectors_customizr_mode' ), 999 ); + + } elseif ( $this->settings['404page_method'] != 'STD' ) { + + // Compatibility Mode + add_filter( 'posts_results', array( $this, 'show404_compatiblity_mode' ), 999 ); + + } else { + + // Standard Mode + add_filter( '404_template', array( $this, 'show404_standard_mode' ), 999 ); + if ( $this->settings['404page_fire_error'] ) { + add_action( 'template_redirect', array( $this, 'do_404_header_standard_mode' ) ); + } + + } + + } + + } + + // show 404 page - Standard Mode + function show404_standard_mode( $template ) { + + global $wp_query; + $pageid = $this->settings['404page_page_id']; + if ( $pageid > 0 ) { + if ( ! $this->settings['404page_native'] ) { + $wp_query = null; + $wp_query = new WP_Query(); + $wp_query->query( 'page_id=' . $pageid ); + $wp_query->the_post(); + $template = get_page_template(); + rewind_posts(); + add_filter( 'body_class', array( $this, 'add_404_body_class' ) ); + } + $this->do_404page_action(); + } + return $template; + + } + + // show 404 page - Compatibility Mode + function show404_compatiblity_mode( $posts ) { + + // remove the filter so we handle only the first query - no custom queries + remove_filter( 'posts_results', array( $this, 'show404_compatiblity_mode' ), 999 ); + + $pageid = $this->settings['404page_page_id']; + if ( $pageid > 0 && ! $this->settings['404page_native'] ) { + if ( empty( $posts ) && is_main_query() && !is_robots() && !is_home() && !is_feed() && !is_search() && !is_archive() && ( !defined('DOING_AJAX') || !DOING_AJAX ) ) { + // we need to get the 404 page + + $pageid = $this->get_page_id( $pageid ); + + // as of v2.1 we do not alter the posts argument here because this does not work with SiteOrigin's Page Builder Plugin, template_include filter introduced + $this->postid = $pageid; + $this->template = get_page_template_slug( $pageid ); + if ( $this->template == '' ) { + $this->template = get_page_template(); + } + add_action( 'wp', array( $this, 'do_404_header' ) ); + add_filter( 'body_class', array( $this, 'add_404_body_class' ) ); + add_filter( 'template_include', array( $this, 'change_404_template' ), 999 ); + + $posts[] = get_post( $pageid ); + + $this->do_404page_action(); + + } elseif ( 1 == count( $posts ) && 'page' == $posts[0]->post_type ) { + + // Do a 404 if the 404 page is opened directly + if ( $this->settings['404page_fire_error'] ) { + $curpageid = $posts[0]->ID; + + if ( defined( 'ICL_SITEPRESS_VERSION' ) ) { + + // WPML is active - get the post ID of the default language + global $sitepress; + $curpageid = apply_filters( 'wpml_object_id', $curpageid, 'page', $sitepress->get_default_language() ); + $pageid = apply_filters( 'wpml_object_id', $pageid, 'page', $sitepress->get_default_language() ); + + } elseif ( defined( 'POLYLANG_VERSION' ) ) { + + // Polylang is active - get the post ID of the default language + $curpageid = pll_get_post( $curpageid, pll_default_language() ); + $pageid = pll_get_post( $pageid, pll_default_language() ); + + } + + if ( $pageid == $curpageid ) { + add_action( 'wp', array( $this, 'do_404_header' ) ); + add_filter( 'body_class', array( $this, 'add_404_body_class' ) ); + $this->do_404page_action(); + } + } + + } + } elseif ( $pageid > 0 && $this->settings['404page_native'] ) { + $this->do_404page_action(); + } + return $posts; + } + + // this function overrides the page template in compatibilty mode + function change_404_template( $template ) { + // we have to check if the template file is there because if the theme was changed maybe a wrong template is stored in the database + $new_template = locate_template( array( $this->template ) ); + if ( '' != $new_template ) { + return $new_template ; + } + return $template; + } + + // send a 404 HTTP header - Standard Mode + function do_404_header_standard_mode() { + if ( is_page() && get_the_ID() == $this->settings['404page_page_id'] && !is_404() ) { + status_header( 404 ); + nocache_headers(); + $this->do_404page_action(); + } + } + + // send a 404 HTTP header - Compatibility Mode + function do_404_header() { + // remove the action so we handle only the first query - no custom queries + remove_action( 'wp', array( $this, 'do_404_header' ) ); + status_header( 404 ); + nocache_headers(); + } + + // adds the error404 class to the body classes + function add_404_body_class( $classes ) { + $classes[] = 'error404'; + return $classes; + } + + // show title - Customizr Compatibility Mode + function show404title_customizr_mode( $title ) { + if ( ! $this->settings['404page_native'] ) { + return '

' . get_the_title( $this->settings['404page_page_id'] ) . '

'; + } else { + return $title; + } + } + + // show content - Customizr Compatibility Mode + function show404_customizr_mode( $content ) { + if ( ! $this->settings['404page_native'] ) { + return '
' . apply_filters( 'the_content', get_post_field( 'post_content', $this->settings['404page_page_id'] ) ) . '
'; + } else { + return $content; + } + $this->do_404page_action(); + } + + // change article selectors - Customizr Compatibility Mode + function show404articleselectors_customizr_mode( $selectors ) { + if ( ! $this->settings['404page_native'] ) { + return 'id="post-' . $this->settings['404page_page_id'] . '" ' . 'class="' . join( ' ', get_post_class( 'row-fluid', $this->settings['404page_page_id'] ) ) . '"'; + } else { + return $selectors; + } + } + + // init the admin section + function admin_init() { + $this->wp_url = 'https://wordpress.org/plugins/' . $this->plugin_slug; + $this->my_url = 'http://petersplugins.com/free-wordpress-plugins/' . $this->plugin_slug; + $this->dc_url = 'http://petersplugins.com/docs/' . $this->plugin_slug; + load_plugin_textdomain( '404page' ); + add_settings_section( '404page-settings', null, null, '404page_settings_section' ); + register_setting( '404page_settings', '404page_page_id' ); + register_setting( '404page_settings', '404page_hide' ); + register_setting( '404page_settings', '404page_method' ); + register_setting( '404page_settings', '404page_fire_error' ); + add_settings_field( '404page_settings_404page', __( 'Page to be displayed as 404 page', '404page' ) . ' ' , array( $this, 'admin_404page' ), '404page_settings_section', '404page-settings', array( 'label_for' => '404page_page_id' ) ); + add_settings_field( '404page_settings_hide', __( 'Hide 404 page', '404page' ) . ' ' , array( $this, 'admin_hide' ), '404page_settings_section', '404page-settings', array( 'label_for' => '404page_hide' ) ); + add_settings_field( '404page_settings_fire', __( 'Fire 404 error', '404page' ) . ' ' , array( $this, 'admin_fire404' ), '404page_settings_section', '404page-settings', array( 'label_for' => '404page_fire_error' ) ); + add_settings_field( '404page_settings_method', __( 'Operating Method', '404page' ) . ' ' , array( $this, 'admin_method' ), '404page_settings_section', '404page-settings', array( 'label_for' => '404page_method' ) ); + } + + // add css + function admin_css() { + echo ''; + } + + // handle the settings field page id + function admin_404page() { + if ( $this->settings['404page_page_id'] < 0 ) { + echo '
' . __( 'The page you have selected as 404 page does not exist anymore. Please choose another page.', '404page' ) . '
'; + } + wp_dropdown_pages( array( 'name' => '404page_page_id', 'id' => 'select404page', 'echo' => 1, 'show_option_none' => __( '— NONE (WP default 404 page) —', '404page'), 'option_none_value' => '0', 'selected' => $this->settings['404page_page_id'] ) ); + echo ''; + echo ''; + echo ''; + echo '

 

'; + } + + // handle the settings field hide + function admin_hide() { + echo '

settings['404page_hide'], false ) . '/>'; + echo '

'; + echo '

 ' . __( 'For Administrators the page is always visible.', '404page' ) . '

'; + } + + // handle the settings field fire 404 error + function admin_fire404() { + echo '

settings['404page_fire_error'], false ) . '/>'; + echo '

'; + echo '

 ' . __( 'Uncheck this if you want the selected page to be accessible.', '404page' ) . '

'; + if ( function_exists( 'wpsupercache_activate' ) ) { + echo '

 ' . __( 'WP Super Cache Plugin detected', '404page' ) . '. ' . __ ( 'If the page you selected as 404 error page is in cache, always a HTTP code 200 is sent. To avoid this and send a HTTP code 404 you have to exlcude this page from caching', '404page' ) . ' (' . __( 'Click here', '404page' ) . ').
(' . __( 'Read more', '404page' ) . ')

'; + } + } + + // handle the settings field method + function admin_method() { + + if ( $this->settings['404page_native'] ) { + + echo '

 ' . __( 'This setting is not available because the Theme you are using natively supports the 404page plugin.', '404page' ) . ' (' . __( 'Read more', '404page' ) . ')

'; + + } elseif ( defined( 'CUSTOMIZR_VER' ) ) { + + echo '

 ' . __( 'This setting is not availbe because the 404page Plugin works in Customizr Compatibility Mode.', '404page' ) . ' (' . __( 'Read more', '404page' ) . ')

'; + + } elseif ( defined( 'ICL_SITEPRESS_VERSION' ) ) { + + echo '

 ' . __( 'This setting is not availbe because the 404page Plugin works in WPML Mode.', '404page' ) . ' (' . __( 'Read more', '404page' ) . ')

'; + + } elseif ( defined( 'POLYLANG_VERSION' ) ) { + + echo '

 ' . __( 'This setting is not availbe because the 404page Plugin works in Polylang Mode.', '404page' ) . ' (' . __( 'Read more', '404page' ) . ')

'; + + } else { + + echo '

settings['404page_method'], false ) . ' />'; + echo '

'; + + echo '

settings['404page_method'], false ) . '/>'; + echo '

'; + + echo '

 ' . __( 'Standard Mode uses the WordPress Template System and should work in most cases. If the 404page plugin does not work properly, probably you are using a theme or plugin that modifies the WordPress Template System. In this case the Compatibility Mode maybe can fix the problem, although it cannot be guaranteed that every possible configuration can be handled by Compatibility Mode. Standard Mode is the recommended method, only switch to Compatibility Mode if you have any problems.', '404page' ) . '

'; + + } + + } + + // this function hides the selected page from the list of pages + function exclude_404page( $query ) { + if ( $this->settings['404page_page_id'] > 0 ) { + global $pagenow; + + $post_type = $query->get( 'post_type' ); + + // as of v 2.3 we check the post_type on front end + if( ( is_admin() && ( 'edit.php' == $pagenow && !current_user_can( 'create_users' ) ) ) || ( ! is_admin() && ( !empty( $post_type) && ( ('page' === $post_type || 'any' === $post_type) || ( is_array( $post_type ) && in_array( 'page', $post_type ) ) ) )) ) { + $pageid = $this->settings['404page_page_id']; + + if ( ! is_admin() ) { + $pageid = $this->get_page_id( $pageid ); + } + + // as of v 2.3 we add the ID of the 404 page to post__not_in + // using just $query->set() overrides existing settings but not adds a new setting + $query->set( 'post__not_in', array_merge( (array)$query->get( 'post__not_in', array() ), array( $pageid ) ) ); + + } + } + } + + // this function removes the 404 page from get_pages result array + function remove_404page_from_array( $pages, $r ) { + if ( $this->settings['404page_page_id'] > 0 ) { + $pageid = $this->get_page_id( $this->settings['404page_page_id'] ); + for ( $i = 0; $i < sizeof( $pages ); $i++ ) { + if ( $pages[$i]->ID == $pageid ) { + unset( $pages[$i] ); + break; + } + } + } + return array_values( $pages ); + } + + // adds the options page to admin menu + function admin_menu() { + $page_handle = add_theme_page ( __( '404 Error Page', "404page" ), __( '404 Error Page', '404page' ), 'manage_options', '404pagesettings', array( $this, 'admin_page' ) ); + add_action( 'admin_print_scripts', array( $this, 'admin_js' ) ); + } + + // adds javascript to the 404page settings page + function admin_js() { + wp_enqueue_script( '404pagejs', plugins_url( '/404page.js', __FILE__ ), 'jquery', $this->version, true ); + } + + // creates the options page + function admin_page() { + if ( !current_user_can( 'manage_options' ) ) { + wp_die( __( 'You do not have sufficient permissions to access this page.' ) ); + } + ?> +
+ +

404page

+ +
+

Plugin Version: version; ?>

+
+
+
+
+
+
+
+ +
+
+
+
+
+ show_meta_boxes(); } ?> +
+
+
+
+ post_status != 'publish' ) { + $pageid = -1; + } + } + return $pageid; + } + + // returns the selected method + private function get_404page_method() { + if ( defined( 'ICL_SITEPRESS_VERSION' ) || defined( 'POLYLANG_VERSION' ) ) { + // WPML or Polylang is active + return 'CMP'; + } else { + return get_option( '404page_method', 'STD' ); + } + } + + // should we hide the selected 404 page from the page list? + private function get_404page_hide() { + return (bool)get_option( '404page_hide', false ); + } + + // should we fire an 404 error if the selected page is accessed directly? + private function get_404page_fire_error() { + return (bool)get_option( '404page_fire_error', true ); + } + + // this function gets the id of the translated page if WPML or Polylang is active - otherwise the original pageid is returned + private function get_page_id( $pageid ) { + + if ( defined( 'ICL_SITEPRESS_VERSION' ) ) { + + // WPML is active + $pageid = apply_filters( 'wpml_object_id', $pageid, 'page', true ); + + } elseif ( defined( 'POLYLANG_VERSION' ) ) { + + // Polylang is active + $translatedpageid = pll_get_post( $pageid ); + if ( !empty( $translatedpageid ) && 'publish' == get_post_status( $translatedpageid ) ) { + $pageid = $translatedpageid; + } + + } + + return $pageid; + + } + + // make plugin expandable + function do_404page_action() { + do_action( '404page_after_404' ); + } + + // show meta boxes + function show_meta_boxes() { + ?> +
+
+
+

+
+
    +
  •   
  • +
  •   
  • +
  •   
  • +
  •   
  • +
  •   
  • +
+
+
+
+

+
+
    +
  •   
  • +
  •   
  • +
  •   
  • +
  •   
  • +
+
+
+
+

+
+

+

+
+
+
+
+ ' . __( 'Settings', '404page' ) . '') ); + } + + // uninstall plugin + function uninstall() { + if( is_multisite() ) { + $this->uninstall_network(); + } else { + $this->uninstall_single(); + } + } + + // uninstall network wide + function uninstall_network() { + global $wpdb; + $activeblog = $wpdb->blogid; + $blogids = $wpdb->get_col( esc_sql( 'SELECT blog_id FROM ' . $wpdb->blogs ) ); + foreach ($blogids as $blogid) { + switch_to_blog( $blogid ); + $this->uninstall_single(); + } + switch_to_blog( $activeblog ); + } + + // uninstall single blog + function uninstall_single() { + foreach ( $this->settings as $key => $value) { + delete_option( $key ); + } + } + + // * + // * functions for theme usage + // * + + // check if there's a custom 404 page set + function pp_404_is_active() { + return ( $this->settings['404page_page_id'] > 0 ); + } + + // activate the native theme support + function pp_404_set_native_support() { + $this->settings['404page_native'] = true; + } + + // get the title - native theme support + function pp_404_get_the_title() { + $title = ''; + if ( $this->settings['404page_page_id'] > 0 && $this->settings['404page_native'] ) { + $title = get_the_title( $this->settings['404page_page_id'] ); + } + return $title; + } + + // print title - native theme support + function pp_404_the_title() { + echo $this->pp_404_get_the_title(); + } + + // get the content - native theme support + function pp_404_get_the_content() { + $content = ''; + if ( $this->settings['404page_page_id'] > 0 && $this->settings['404page_native'] ) { + $content = apply_filters( 'the_content', get_post_field( 'post_content', $this->settings['404page_page_id'] ) ); + } + return $content; + } + + // print content - native theme support + function pp_404_the_content() { + echo $this->pp_404_get_the_content(); + } + +} + +$smart404page = new Smart404Page(); + +// this function can be used by a theme to check if there's an active custom 404 page +function pp_404_is_active() { + global $smart404page; + return $smart404page->pp_404_is_active(); +} + +// this function can be used by a theme to activate native support +function pp_404_set_native_support() { + global $smart404page; + $smart404page->pp_404_set_native_support(); +} + +// this function can be used by a theme to get the title of the custom 404 page in native support +function pp_404_get_the_title() { + global $smart404page; + return $smart404page->pp_404_get_the_title(); +} + +// this function can be used by a theme to print out the title of the custom 404 page in native support +function pp_404_the_title() { + global $smart404page; + $smart404page->pp_404_the_title(); +} + +// this function can be used by a theme to get the content of the custom 404 page in native support +function pp_404_get_the_content() { + global $smart404page; + return $smart404page->pp_404_get_the_content(); +} + +// this function can be used by a theme to print out the content of the custom 404 page in native support +function pp_404_the_content() { + global $smart404page; + return $smart404page->pp_404_the_content(); +} + +?> \ No newline at end of file diff --git a/plugins/404page/pluginicon.png b/plugins/404page/pluginicon.png new file mode 100644 index 0000000..25b8148 Binary files /dev/null and b/plugins/404page/pluginicon.png differ diff --git a/plugins/404page/readme.txt b/plugins/404page/readme.txt new file mode 100644 index 0000000..082108b --- /dev/null +++ b/plugins/404page/readme.txt @@ -0,0 +1,197 @@ +=== 404page - your smart custom 404 error page === +Contributors: petersplugins, smartware.cc +Donate link:http://petersplugins.com/make-a-donation/ +Tags: page, 404, error, error page, 404 page, page not found, page not found error, 404 error page, missing, broken link, template, 404 link, seo, custom 404, custom 404 page, custom 404 error, custom 404 error page, customize 404, customize 404 page, customize 404 error page +Requires at least: 3.0 +Tested up to: 4.6 +Stable tag: 2.3 +License: GPLv2 or later +License URI: http://www.gnu.org/licenses/gpl-2.0.html + +Custom 404 the easy way! Set any page as custom 404 error page. No coding needed. Works with (almost) every Theme. + +== Description == + +> Create your custom 404 Error Page using the full Power of WordPress + +**See also [Plugin Homepage](http://petersplugins.com/free-wordpress-plugins/404page/) and [Plugin Doc](http://petersplugins.com/docs/404page/)** + +https://www.youtube.com/watch?v=VTL07Lf0IsY + +Create your custom 404 Page as a normal WordPress Page using the full power of WordPress. You can use a Custom Page Template or Custom Fields, you can set a Featured Image - everything like on every other Page. Then go to 'Appearance' -> '404 Error Page' from your WordPress Dashbord and select the created Page as your 404 error page. That's it! + += Why you should choose this plugin = + +* Different from other similar plugins the 404page plugin **does not create redirects**. That’s **quite important** because a correct code 404 is delivered which tells search engines that the page does not exist and has to be removed from the index. A redirect would result in a HTTP code 301 or 302 and the URL would remain in the search index. +* Different from other similar plugins the 404page plugin **does not create additional server requests**. + += Translations = + +The 404page Plugin uses GlotPress - the wordpress.org Translation System - for translations. Translations can be submitted at [translate.wordpress.org](https://translate.wordpress.org/projects/wp-plugins/404page). + +**Translation are highly appreciated**. It would be great if you'd support the 404page Plugin by adding a new translation or keeping an existing one up to date. If you're new to GlotPress take a look at the [Translator Handbook](https://make.wordpress.org/polyglots/handbook/tools/glotpress-translate-wordpress-org/). + += Do you like the 404page Plugin? = + +Thanks, I appreciate that. You don’t need to make a donation. No money, no beer, no coffee. Please, just [tell the world that you like what I’m doing](http://petersplugins.com/make-a-donation/)! And that’s all. + += More plugins from Peter = + +* **[hashtagger](https://wordpress.org/plugins/hashtagger/)** - Use hashtags in WordPress +* **[smart Archive Page Remove](https://wordpress.org/plugins/smart-archive-page-remove/)** - Completely remove unwated Archive Pages from your Blog +* **[smart User Slug Hider](https://wordpress.org/plugins/smart-user-slug-hider/)** - Hide usernames in author pages URLs to enhance security +* [See all](https://profiles.wordpress.org/petersplugins/#content-plugins) + +== Installation == + += From your WordPress dashboard = + +1. Visit 'Plugins' -> 'Add New' +1. Search for '404page' +1. Activate the plugin through the 'Plugins' menu in WordPress + += Manually from wordpress.org = + +1. Download 404page from wordpress.org and unzip the archive +1. Upload the `404page` folder to your `/wp-content/plugins/` directory +1. Activate the plugin through the 'Plugins' menu in WordPress + +== Frequently Asked Questions == + += Are there any requirements? = + +To enable the WordPress 404 error handling you have to set the Permalink Structure ('Settings' -> 'Permalinks') to anything else but 'Default'. Otherwise 404 errors are handled by the webserver and not by WordPress. + += Are 404 errors redirected? = + +No, there is no redirection! The chosen page is delivered as a 'real' 404 error page. This results in a HTTP 404 code and not in 301 or 302, which is important for Search Engines to tell them, that the page does not exist and should be deleted from the index. + += What about PHP Version 7? = +The plugin works smoothly with PHP 7. + += Is it possible to add custom CSS to the 404 page? = +The 404page plugin adds a CSS class `error404` to the `` tag which can be used for extra styling. + +== Screenshots == + +1. Create your 404 Page as a normal WordPress Page +2. Define the created Page as 404 Error Page +3. Your custom 404 Error Page is shown in case of a 404 error + +== Changelog == + += 2.3 (2016-11-21) = +* a few minor bug fixes solve some problems with page templates in certain combinations + += 2.2 (2016-09-26) = +* automatic switch to Compatibility Mode for several plugins removed +* enhanced support for WPML and Polylang +* remove the 404 page from search results (for all languages if WPML or Polylang is used) +* remove the 404 page from sitemap or other page lists (for all languages if WPML or Polylang is used) +* bugfix for author archives +* confusing admin message removed + += 2.1 (2016-04-22) = +* introduction of selectable Operating Methods +* several changes to Compatibility Mode for improved WPML and bbPress compatibility plus compatibility with Page Builder by SiteOrigin +* Polylang compatibility +* automatic switch to Compatibility Mode if WPML, bbPress, Polylang or Page Builder by SiteOrigin is detected +* completely new Customizr Compatibility Mode (automatically enabled if Customizr is detected) +* firing an 404 error in case of directly accessing the 404 error page can now be deactivated +* WP Super Cache support +* option to hide the 404 error page from the Pages list +* 404 error test +* plugin expandable by action +* delete all settings on uninstall + += 2.0 (2016-03-08) = +* WPML compatibility +* bbPress compatibility +* Customizr compatibility +* directly accessing the 404 error page now throws an 404 error +* class `error404` added to the classes that are assigned to the body HTML element +* the settings menu was moved from 'Settings' to 'Appearance' +* translation files removed, using GlotPress exclusively +* [Read more](http://petersplugins.com/blog/2016/02/23/the-404page-plugin-now-works-with-wpml-and-other-enhancements/) + += 1.4 (2015-08-07) = +* edit the 404 page directly from settings page +* Portuguese translation + += 1.3 (2015-01-12) = +* technical improvement (rewritten as class) +* cosmetics + += 1.2 (2014-07-28) = +* Spanish translation +* Serbo-Croatian translation + += 1.1 (2014-06-03) = +* Multilingual support added +* German translation + += 1.0 (2013-09-30) = +* Initial Release + +== Upgrade Notice == + += 2.2 = +Enhanced compatibility. Automated Operating Method select removed. Several fixes. + += 2.1 = +Introduced Compatibility Mode, improved compatibility with several plugins. + += 2.0 = +Version 2.0 is more or less a completely new development and a big step forward. [Read more](http://petersplugins.com/blog/2016/02/23/the-404page-plugin-now-works-with-wpml-and-other-enhancements/) + += 1.4 = +Editing of the 404 page is now possible directly from settings page. Portuguese translation added. + +== Compatibility == + += The 404page plugin was sucessfully tested by the author with the following themes = +* [Athena](https://wordpress.org/themes/athena/) +* [Customizr](https://wordpress.org/themes/customizr/) (Read more about [Customizr Compatibility Mode](http://petersplugins.com/docs/404page/#settings_operating_method)) +* [evolve](https://wordpress.org/themes/evolve/) +* [GeneratePress](https://wordpress.org/themes/generatepress/) +* [Graphene](https://wordpress.org/themes/graphene/) +* [Hemingway](https://wordpress.org/themes/hemingway/) +* [Hueman](https://wordpress.org/themes/hueman/) +* [Responsive](https://wordpress.org/themes/responsive/) +* [Spacious](https://wordpress.org/themes/spacious/) +* [Sparkling](https://wordpress.org/themes/sparkling/) +* [Sydney](https://wordpress.org/themes/sydney/) +* [Twenty Ten](https://wordpress.org/themes/twentyten/) +* [Twenty Eleven](https://wordpress.org/themes/twentyeleven/) +* [Twenty Twelve](https://wordpress.org/themes/twentytwelve/) +* [Twenty Thirteen](https://wordpress.org/themes/twentythirteen/) +* [Twenty Fourteen](https://wordpress.org/themes/twentyfourteen/) +* [Twenty Fifteen](https://wordpress.org/themes/twentyfifteen/) +* [Twenty Sixteen](https://wordpress.org/themes/twentysixteen/) +* [Vantage](https://wordpress.org/themes/vantage/) +* [Virtue](https://wordpress.org/themes/virtue/) +* [Zerif Lite](http://themeisle.com/themes/zerif-lite/) + += The 404page plugin was sucessfully tested by the author with the following starter themes = +* [Bones}(http://themble.com/bones/) +* [JointsWP](http://jointswp.com/) +* [undersores](http://underscores.me/) + += The 404page plugin was sucessfully tested by the author with the following plugins = +* [bbPress](https://wordpress.org/plugins/bbpress/) +* [BuddyPress](https://wordpress.org/plugins/buddypress/) +* [hashtagger](https://wordpress.org/plugins/hashtagger/) +* [Page Builder by SiteOrigin](https://wordpress.org/plugins/siteorigin-panels/) +* [Polylang](https://wordpress.org/plugins/polylang/) +* [User Submitted Posts](https://wordpress.org/plugins/user-submitted-posts/) +* [WooCommerce](https://wordpress.org/plugins/woocommerce/) +* [WP Super Cache](https://wordpress.org/plugins/wp-super-cache/)(Read more about [WP Super Cache Compatibility](http://petersplugins.com/docs/404page/#wp_super_cache) +* [WPML WordPress Multilingual Plugin](https://wpml.org/)([officially approved by WPML team](https://wpml.org/plugin/404page/)) + +== For developers == + += Action Hook = +The plugin adds an action hook 404page_after_404 which you can use to add extra functionality. The exact position the action occurs after an 404 error is detected depends on the Operating Method. Your function must not generate any output. There are no parameters. + += Native Support = +If you are a theme developer you can add native support for the 404page plugin to your theme for full control. [Read more](http://petersplugins.com/docs/404page/#theme_native_support). \ No newline at end of file diff --git a/plugins/404page/uninstall.php b/plugins/404page/uninstall.php new file mode 100644 index 0000000..dc3539d --- /dev/null +++ b/plugins/404page/uninstall.php @@ -0,0 +1,12 @@ +uninstall(); +?> \ No newline at end of file diff --git a/plugins/akismet/.htaccess b/plugins/akismet/.htaccess new file mode 100644 index 0000000..49d72d7 --- /dev/null +++ b/plugins/akismet/.htaccess @@ -0,0 +1,34 @@ +# Only allow direct access to specific Web-available files. + +# Apache 2.2 + + Order Deny,Allow + Deny from all + + +# Apache 2.4 + + Require all denied + + +# Akismet CSS and JS + + + Allow from all + + + + Require all granted + + + +# Akismet images + + + Allow from all + + + + Require all granted + + \ No newline at end of file diff --git a/plugins/akismet/LICENSE.txt b/plugins/akismet/LICENSE.txt new file mode 100644 index 0000000..d159169 --- /dev/null +++ b/plugins/akismet/LICENSE.txt @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/plugins/akismet/_inc/akismet.css b/plugins/akismet/_inc/akismet.css new file mode 100644 index 0000000..d38e14b --- /dev/null +++ b/plugins/akismet/_inc/akismet.css @@ -0,0 +1,474 @@ + +#submitted-on { + position: relative; +} +#the-comment-list .author .akismet-user-comment-count { + display: inline; +} +#the-comment-list .author a span { + text-decoration: none; + color: #999; +} +#the-comment-list .author a span.akismet-span-link { + text-decoration: inherit; + color: inherit; +} +#the-comment-list .remove_url { + margin-left: 3px; + color: #999; + padding: 2px 3px 2px 0; +} +#the-comment-list .remove_url:hover { + color: #A7301F; + font-weight: bold; + padding: 2px 2px 2px 0; +} +#dashboard_recent_comments .akismet-status { + display: none; +} +.akismet-status { + float: right; +} +.akismet-status a { + color: #AAA; + font-style: italic; +} +table.comments td.comment p a { + text-decoration: underline; +} +table.comments td.comment p a:after { + content: attr(href); + color: #aaa; + display: inline-block; /* Show the URL without the link's underline extending under it. */ + padding: 0 1ex; /* Because it's inline block, we can't just use spaces in the content: attribute to separate it from the link text. */ +} +.mshot-arrow { + width: 0; + height: 0; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + border-right: 10px solid #5C5C5C; + position: absolute; + left: -6px; + top: 91px; +} +.mshot-container { + background: #5C5C5C; + position: absolute; + top: -94px; + padding: 7px; + width: 450px; + height: 338px; + z-index: 20000; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-border-radius: 6px; +} +.akismet-mshot { + position: absolute; + z-index: 100; +} +.akismet-mshot .mshot-image { + margin: 0; + height: 338px; + width: 450px; +} +h2.ak-header { + padding: 30px; + background: #649316 url('img/logo-full-2x.png') no-repeat 20px center; + background-size: 185px 33px; + height: 33px; + text-indent: -9999em; + margin-right: 10px; +} +.checkforspam { + display: inline-block !important; +} +.checkforspam-spinner { + display: inline-block; + margin-top: 7px; +} + +.config-wrap { + margin-top: 2em; + max-width: 700px; +} + +.activate-option { + background: #e3e3e3; + border-radius: 3px; + margin-bottom: 30px; + overflow: hidden; + padding: 20px; +} +.activate-option.clicked { + background: #649316; + color: #fff; +} +.activate-option.clicked:hover { + background: #68802E; + color: #fff; +} + +.activate-option .button.button-secondary { + margin: 15px 0; +} + +.activate-option p { + margin: 10px 0 10px; +} + +.activate-highlight { + background: #fff; + padding: 30px; + margin-right: 10px; +} + +.activate-highlight.secondary { + background: #ddd; + padding: 20px 30px; +} + +.activate-highlight h3 { + margin: 0 0 0.3em; +} +.activate-highlight p { + color: #777; +} +.activate-highlight .button-primary { + margin-top: 15px; +} + +#akismet-enter-api-key .regular-text { + width: 18em; + margin-top: 15px; +} + +.right { + float: right; +} + +.alert-text { + color: #dd3d36; +} +.success { + color: #649316; +} +.option-description { + float: left; + font-size: 16px; +} +.option-description span { + color: #666; + display: block; + font-size: 14px; + margin-top: 5px; +} +.option-action { + float: right; +} +.key-config-link { + font-size: 14px; + margin-left: 20px; +} +.jetpack-account { + float: left; + font-size: 18px; + margin-right: 40px; +} +.small-heading { + color: #777; + display: block; + font-size: 12px; + font-weight: bold; + margin-bottom: 5px; + text-transform: uppercase; +} +.inline-label { + background: #ddd; + border-radius: 3px; + font-size: 11px; + padding: 3px 8px; + text-transform: uppercase; +} +.inline-label.alert { + background: #e54747; + color: #fff; +} +.jetpack-account .inline-label { + margin-left: 5px; +} +.option-action .manual-key { + margin-top: 7px; +} + +.alert { + border: 1px solid #e5e5e5; + padding: 0.4em 1em 1.4em 1em; + border-radius: 3px; + -webkit-border-radius: 3px; + border-width: 1px; + border-style: solid; +} + +.alert h3.key-status { + color: #fff; + margin: 1em 0 0.5em 0; +} + +.alert.critical { + background-color: #993300; +} + +.alert.active { + background-color: #649316; +} + +.alert p.key-status { + font-size: 24px; +} + +.alert p.description { + color:#fff; + font-size: 14px; + margin: 0 0; + font-style: normal; +} + +.alert p.description a, +.alert p.description a, +.alert p.description a, +.alert p.description a { + color: #fff; +} + +.new-snapshot { + margin-top: 1em; + padding: 1em; + text-align: center; +} + +.new-snapshot.stats { + background: #fff; + border: 1px solid #e5e5e5; +} + +.new-snapshot h3 { + background: #f5f5f5; + color: #888; + font-size: 11px; + margin: 0; + padding: 3px; +} + +.new-snapspot ul { + font-size: 12px; + width: 100%; +} + +.new-snapshot ul li { + color: #999; + float: left; + font-size: 11px; + padding: 0 20px; + text-transform: uppercase; + width: 33%; + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + -ms-box-sizing: border-box; +} + +.new-snapshot.stats ul li:first-child, +.new-snapshot.stats ul li:nth-child(2) { + border-right:1px dotted #ccc; +} + +.new-snapshot.account ul li:nth-child(2) { + border-right: none; +} + +.new-snapshot ul li span { + color: #52accc; + display: block; + font-size: 32px; + font-weight: lighter; + line-height: 1.5em; +} + +.new-snapshot.stats { +} + +.new-snapshot.account, +.new-snapshot.settings { + float: left; + padding: 0; + text-align: left; + width: 50%; + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + -ms-box-sizing: border-box; +} + +.account-container { + background: #fff; + border: 1px solid #e5e5e5; + margin-right: 0.5em; +} + +.settings-container { + background: #fff; + border: 1px solid #e5e5e5; + margin-left: 0.5em; +} + +.new-snapshot.account ul li { + width:100% +} + +.new-snapshot.account ul li span { + font-size: 14px; + font-weight: normal; +} + + +.new-snapshot.settings ul li { + border: none; + display: block; + width:100% +} + +.new-snapshot.settings ul li span { + display: block; + font-size: 14px; + font-weight: normal; +} + +.new-snapshot.settings p.submit { + margin: 0; + text-align: center; +} + +.akismet-settings th:first-child { + vertical-align: top; + padding-top: 15px; +} + +.akismet-settings th.akismet-api-key { + vertical-align: middle; + padding-top: 0; +} + +.akismet-settings input[type=text] { + width: 75%; +} + +.akismet-settings span.note{ + float: left; + padding-left: 23px; + font-size: 75%; + margin-top: -10px; +} + +.clearfix { + clear:both; +} + +/** + * For the activation notice on the plugins page. + */ +.akismet_activate { + min-width: 825px; + border: 1px solid #4F800D; + padding: 5px; + margin: 15px 0; + background: #83AF24; + background-image: -webkit-gradient(linear, 0% 0, 80% 100%, from(#83AF24), to(#4F800D)); + background-image: -moz-linear-gradient(80% 100% 120deg, #4F800D, #83AF24); + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-border-radius: 3px; + position: relative; + overflow: hidden; +} + +.akismet_activate .aa_a { + position: absolute; + top: -5px; + right: 10px; + font-size: 140px; + color: #769F33; + font-family: Georgia, "Times New Roman", Times, serif; + z-index: 1; +} + +.akismet_activate .aa_button { + font-weight: bold; + border: 1px solid #029DD6; + border-top: 1px solid #06B9FD; + font-size: 15px; + text-align: center; + padding: 9px 0 8px 0; + color: #FFF; + background: #029DD6; + background-image: -webkit-gradient(linear, 0% 0, 0% 100%, from(#029DD6), to(#0079B1)); + background-image: -moz-linear-gradient(0% 100% 90deg, #0079B1, #029DD6); + -moz-border-radius: 2px; + border-radius: 2px; + -webkit-border-radius: 2px; + width: 100%; + cursor: pointer; + margin: 0; +} + +.akismet_activate .aa_button:hover { + text-decoration: none !important; + border: 1px solid #029DD6; + border-bottom: 1px solid #00A8EF; + font-size: 15px; + text-align: center; + padding: 9px 0 8px 0; + color: #F0F8FB; + background: #0079B1; + background-image: -webkit-gradient(linear, 0% 0, 0% 100%, from(#0079B1), to(#0092BF)); + background-image: -moz-linear-gradient(0% 100% 90deg, #0092BF, #0079B1); + -moz-border-radius: 2px; + border-radius: 2px; + -webkit-border-radius: 2px; +} + +.akismet_activate .aa_button_border { + border: 1px solid #006699; + -moz-border-radius: 2px; + border-radius: 2px; + -webkit-border-radius: 2px; + background: #029DD6; + background-image: -webkit-gradient(linear, 0% 0, 0% 100%, from(#029DD6), to(#0079B1)); + background-image: -moz-linear-gradient(0% 100% 90deg, #0079B1, #029DD6); +} + +.akismet_activate .aa_button_container { + display: inline-block; + background: #DEF1B8; + padding: 5px; + -moz-border-radius: 2px; + border-radius: 2px; + -webkit-border-radius: 2px; + width: 266px; +} + +.akismet_activate .aa_description { + position: absolute; + top: 22px; + left: 285px; + margin-left: 25px; + color: #E5F2B1; + font-size: 15px; + z-index: 1000; +} + +.akismet_activate .aa_description strong { + color: #FFF; + font-weight: normal; +} \ No newline at end of file diff --git a/plugins/akismet/_inc/akismet.js b/plugins/akismet/_inc/akismet.js new file mode 100644 index 0000000..ca4ebd2 --- /dev/null +++ b/plugins/akismet/_inc/akismet.js @@ -0,0 +1,197 @@ +jQuery( function ( $ ) { + var mshotRemovalTimer = null; + var mshotSecondTryTimer = null + var mshotThirdTryTimer = null + + $( 'a.activate-option' ).click( function(){ + var link = $( this ); + if ( link.hasClass( 'clicked' ) ) { + link.removeClass( 'clicked' ); + } + else { + link.addClass( 'clicked' ); + } + $( '.toggle-have-key' ).slideToggle( 'slow', function() {}); + return false; + }); + $('.akismet-status').each(function () { + var thisId = $(this).attr('commentid'); + $(this).prependTo('#comment-' + thisId + ' .column-comment'); + }); + $('.akismet-user-comment-count').each(function () { + var thisId = $(this).attr('commentid'); + $(this).insertAfter('#comment-' + thisId + ' .author strong:first').show(); + }); + $('#the-comment-list') + .find('tr.comment, tr[id ^= "comment-"]') + .find('.column-author a[href^="http"]:first') // Ignore mailto: links, which would be the comment author's email. + .each(function () { + var linkHref = $(this).attr( 'href' ); + + // Ignore any links to the current domain, which are diagnostic tools, like the IP address link + // or any other links another plugin might add. + var currentHostParts = document.location.href.split( '/' ); + var currentHost = currentHostParts[0] + '//' + currentHostParts[2] + '/'; + + if ( linkHref.indexOf( currentHost ) != 0 ) { + var thisCommentId = $(this).parents('tr:first').attr('id').split("-"); + + $(this) + .attr("id", "author_comment_url_"+ thisCommentId[1]) + .after( + $( 'x' ) + .attr( 'commentid', thisCommentId[1] ) + .attr( 'title', WPAkismet.strings['Remove this URL'] ) + ); + } + }); + + $( '#the-comment-list' ).on( 'click', '.remove_url', function () { + var thisId = $(this).attr('commentid'); + var data = { + action: 'comment_author_deurl', + _wpnonce: WPAkismet.comment_author_url_nonce, + id: thisId + }; + $.ajax({ + url: ajaxurl, + type: 'POST', + data: data, + beforeSend: function () { + // Removes "x" link + $("a[commentid='"+ thisId +"']").hide(); + // Show temp status + $("#author_comment_url_"+ thisId).html( $( '' ).text( WPAkismet.strings['Removing...'] ) ); + }, + success: function (response) { + if (response) { + // Show status/undo link + $("#author_comment_url_"+ thisId) + .attr('cid', thisId) + .addClass('akismet_undo_link_removal') + .html( + $( '' ).text( WPAkismet.strings['URL removed'] ) + ) + .append( ' ' ) + .append( + $( '' ) + .text( WPAkismet.strings['(undo)'] ) + .addClass( 'akismet-span-link' ) + ); + } + } + }); + + return false; + }).on( 'click', '.akismet_undo_link_removal', function () { + var thisId = $(this).attr('cid'); + var thisUrl = $(this).attr('href'); + var data = { + action: 'comment_author_reurl', + _wpnonce: WPAkismet.comment_author_url_nonce, + id: thisId, + url: thisUrl + }; + $.ajax({ + url: ajaxurl, + type: 'POST', + data: data, + beforeSend: function () { + // Show temp status + $("#author_comment_url_"+ thisId).html( $( '' ).text( WPAkismet.strings['Re-adding...'] ) ); + }, + success: function (response) { + if (response) { + // Add "x" link + $("a[commentid='"+ thisId +"']").show(); + // Show link. Core strips leading http://, so let's do that too. + $("#author_comment_url_"+ thisId).removeClass('akismet_undo_link_removal').text( thisUrl.replace( /^http:\/\/(www\.)?/ig, '' ) ); + } + } + }); + + return false; + }); + + // Show a preview image of the hovered URL. Applies to author URLs and URLs inside the comments. + $( 'a[id^="author_comment_url"], tr.pingback td.column-author a:first-of-type, table.comments td.comment p a' ).mouseover( function () { + clearTimeout( mshotRemovalTimer ); + + if ( $( '.akismet-mshot' ).length > 0 ) { + if ( $( '.akismet-mshot:first' ).data( 'link' ) == this ) { + // The preview is already showing for this link. + return; + } + else { + // A new link is being hovered, so remove the old preview. + $( '.akismet-mshot' ).remove(); + } + } + + clearTimeout( mshotSecondTryTimer ); + clearTimeout( mshotThirdTryTimer ); + + var thisHref = $.URLEncode( $( this ).attr( 'href' ) ); + + var mShot = $( '
' ); + mShot.data( 'link', this ); + + var offset = $( this ).offset(); + + mShot.offset( { + left : Math.min( $( window ).width() - 475, offset.left + $( this ).width() + 10 ), // Keep it on the screen if the link is near the edge of the window. + top: offset.top + ( $( this ).height() / 2 ) - 101 // 101 = top offset of the arrow plus the top border thickness + } ); + + mshotSecondTryTimer = setTimeout( function () { + mShot.find( '.mshot-image' ).attr( 'src', '//s0.wordpress.com/mshots/v1/'+thisHref+'?w=450&r=2' ); + }, 6000 ); + + mshotThirdTryTimer = setTimeout( function () { + mShot.find( '.mshot-image' ).attr( 'src', '//s0.wordpress.com/mshots/v1/'+thisHref+'?w=450&r=3' ); + }, 12000 ); + + $( 'body' ).append( mShot ); + } ).mouseout( function () { + mshotRemovalTimer = setTimeout( function () { + clearTimeout( mshotSecondTryTimer ); + clearTimeout( mshotThirdTryTimer ); + + $( '.akismet-mshot' ).remove(); + }, 200 ); + } ); + + $('.checkforspam:not(.button-disabled)').click( function(e) { + $('.checkforspam:not(.button-disabled)').addClass('button-disabled'); + $('.checkforspam-spinner').addClass( 'spinner' ); + akismet_check_for_spam(0, 100); + e.preventDefault(); + }); + + function akismet_check_for_spam(offset, limit) { + $.post( + ajaxurl, + { + 'action': 'akismet_recheck_queue', + 'offset': offset, + 'limit': limit + }, + function(result) { + if (result.counts.processed < limit) { + window.location.reload(); + } + else { + // Account for comments that were caught as spam and moved out of the queue. + akismet_check_for_spam(offset + limit - result.counts.spam, limit); + } + } + ); + } +}); +// URL encode plugin +jQuery.extend({URLEncode:function(c){var o='';var x=0;c=c.toString();var r=/(^[a-zA-Z0-9_.]*)/; + while(x1 && m[1]!=''){o+=m[1];x+=m[1].length; + }else{if(c[x]==' ')o+='+';else{var d=c.charCodeAt(x);var h=d.toString(16); + o+='%'+(h.length<2?'0':'')+h.toUpperCase();}x++;}}return o;} +}); diff --git a/plugins/akismet/_inc/form.js b/plugins/akismet/_inc/form.js new file mode 100644 index 0000000..3a5be8a --- /dev/null +++ b/plugins/akismet/_inc/form.js @@ -0,0 +1,30 @@ +var ak_js = document.getElementById( "ak_js" ); + +if ( ! ak_js ) { + ak_js = document.createElement( 'input' ); + ak_js.setAttribute( 'id', 'ak_js' ); + ak_js.setAttribute( 'name', 'ak_js' ); + ak_js.setAttribute( 'type', 'hidden' ); +} +else { + ak_js.parentNode.removeChild( ak_js ); +} + +ak_js.setAttribute( 'value', ( new Date() ).getTime() ); + +var commentForm = document.getElementById( 'commentform' ); + +if ( commentForm ) { + commentForm.appendChild( ak_js ); +} +else { + var replyRowContainer = document.getElementById( 'replyrow' ); + + if ( replyRowContainer ) { + var children = replyRowContainer.getElementsByTagName( 'td' ); + + if ( children.length > 0 ) { + children[0].appendChild( ak_js ); + } + } +} \ No newline at end of file diff --git a/plugins/akismet/_inc/img/logo-full-2x.png b/plugins/akismet/_inc/img/logo-full-2x.png new file mode 100644 index 0000000..a9bed8b Binary files /dev/null and b/plugins/akismet/_inc/img/logo-full-2x.png differ diff --git a/plugins/akismet/akismet.php b/plugins/akismet/akismet.php new file mode 100644 index 0000000..61b41fa --- /dev/null +++ b/plugins/akismet/akismet.php @@ -0,0 +1,63 @@ +protect your blog from spam. It keeps your site protected even while you sleep. To get started: 1) Click the "Activate" link to the left of this description, 2) Sign up for an Akismet plan to get an API key, and 3) Go to your Akismet configuration page, and save your API key. +Version: 3.2 +Author: Automattic +Author URI: https://automattic.com/wordpress-plugins/ +License: GPLv2 or later +Text Domain: akismet +*/ + +/* +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +Copyright 2005-2015 Automattic, Inc. +*/ + +// Make sure we don't expose any info if called directly +if ( !function_exists( 'add_action' ) ) { + echo 'Hi there! I\'m just a plugin, not much I can do when called directly.'; + exit; +} + +define( 'AKISMET_VERSION', '3.2' ); +define( 'AKISMET__MINIMUM_WP_VERSION', '3.7' ); +define( 'AKISMET__PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); +define( 'AKISMET_DELETE_LIMIT', 100000 ); + +register_activation_hook( __FILE__, array( 'Akismet', 'plugin_activation' ) ); +register_deactivation_hook( __FILE__, array( 'Akismet', 'plugin_deactivation' ) ); + +require_once( AKISMET__PLUGIN_DIR . 'class.akismet.php' ); +require_once( AKISMET__PLUGIN_DIR . 'class.akismet-widget.php' ); + +add_action( 'init', array( 'Akismet', 'init' ) ); + +if ( is_admin() || ( defined( 'WP_CLI' ) && WP_CLI ) ) { + require_once( AKISMET__PLUGIN_DIR . 'class.akismet-admin.php' ); + add_action( 'init', array( 'Akismet_Admin', 'init' ) ); +} + +//add wrapper class around deprecated akismet functions that are referenced elsewhere +require_once( AKISMET__PLUGIN_DIR . 'wrapper.php' ); + +if ( defined( 'WP_CLI' ) && WP_CLI ) { + require_once( AKISMET__PLUGIN_DIR . 'class.akismet-cli.php' ); +} \ No newline at end of file diff --git a/plugins/akismet/class.akismet-admin.php b/plugins/akismet/class.akismet-admin.php new file mode 100644 index 0000000..2d29cab --- /dev/null +++ b/plugins/akismet/class.akismet-admin.php @@ -0,0 +1,1000 @@ + array( + 'href' => true, + 'title' => true, + ), + 'b' => array(), + 'code' => array(), + 'del' => array( + 'datetime' => true, + ), + 'em' => array(), + 'i' => array(), + 'q' => array( + 'cite' => true, + ), + 'strike' => array(), + 'strong' => array(), + ); + + public static function init() { + if ( ! self::$initiated ) { + self::init_hooks(); + } + + if ( isset( $_POST['action'] ) && $_POST['action'] == 'enter-key' ) { + self::enter_api_key(); + } + } + + public static function init_hooks() { + // The standalone stats page was removed in 3.0 for an all-in-one config and stats page. + // Redirect any links that might have been bookmarked or in browser history. + if ( isset( $_GET['page'] ) && 'akismet-stats-display' == $_GET['page'] ) { + wp_safe_redirect( esc_url_raw( self::get_page_url( 'stats' ) ), 301 ); + die; + } + + self::$initiated = true; + + add_action( 'admin_init', array( 'Akismet_Admin', 'admin_init' ) ); + add_action( 'admin_menu', array( 'Akismet_Admin', 'admin_menu' ), 5 ); # Priority 5, so it's called before Jetpack's admin_menu. + add_action( 'admin_notices', array( 'Akismet_Admin', 'display_notice' ) ); + add_action( 'admin_enqueue_scripts', array( 'Akismet_Admin', 'load_resources' ) ); + add_action( 'activity_box_end', array( 'Akismet_Admin', 'dashboard_stats' ) ); + add_action( 'rightnow_end', array( 'Akismet_Admin', 'rightnow_stats' ) ); + add_action( 'manage_comments_nav', array( 'Akismet_Admin', 'check_for_spam_button' ) ); + add_action( 'admin_action_akismet_recheck_queue', array( 'Akismet_Admin', 'recheck_queue' ) ); + add_action( 'wp_ajax_akismet_recheck_queue', array( 'Akismet_Admin', 'recheck_queue' ) ); + add_action( 'wp_ajax_comment_author_deurl', array( 'Akismet_Admin', 'remove_comment_author_url' ) ); + add_action( 'wp_ajax_comment_author_reurl', array( 'Akismet_Admin', 'add_comment_author_url' ) ); + add_action( 'jetpack_auto_activate_akismet', array( 'Akismet_Admin', 'connect_jetpack_user' ) ); + + add_filter( 'plugin_action_links', array( 'Akismet_Admin', 'plugin_action_links' ), 10, 2 ); + add_filter( 'comment_row_actions', array( 'Akismet_Admin', 'comment_row_action' ), 10, 2 ); + + add_filter( 'plugin_action_links_'.plugin_basename( plugin_dir_path( __FILE__ ) . 'akismet.php'), array( 'Akismet_Admin', 'admin_plugin_settings_link' ) ); + + add_filter( 'wxr_export_skip_commentmeta', array( 'Akismet_Admin', 'exclude_commentmeta_from_export' ), 10, 3 ); + } + + public static function admin_init() { + load_plugin_textdomain( 'akismet' ); + add_meta_box( 'akismet-status', __('Comment History', 'akismet'), array( 'Akismet_Admin', 'comment_status_meta_box' ), 'comment', 'normal' ); + } + + public static function admin_menu() { + if ( class_exists( 'Jetpack' ) ) + add_action( 'jetpack_admin_menu', array( 'Akismet_Admin', 'load_menu' ) ); + else + self::load_menu(); + } + + public static function admin_head() { + if ( !current_user_can( 'manage_options' ) ) + return; + } + + public static function admin_plugin_settings_link( $links ) { + $settings_link = ''.__('Settings', 'akismet').''; + array_unshift( $links, $settings_link ); + return $links; + } + + public static function load_menu() { + if ( class_exists( 'Jetpack' ) ) + $hook = add_submenu_page( 'jetpack', __( 'Akismet' , 'akismet'), __( 'Akismet' , 'akismet'), 'manage_options', 'akismet-key-config', array( 'Akismet_Admin', 'display_page' ) ); + else + $hook = add_options_page( __('Akismet', 'akismet'), __('Akismet', 'akismet'), 'manage_options', 'akismet-key-config', array( 'Akismet_Admin', 'display_page' ) ); + + if ( version_compare( $GLOBALS['wp_version'], '3.3', '>=' ) ) { + add_action( "load-$hook", array( 'Akismet_Admin', 'admin_help' ) ); + } + } + + public static function load_resources() { + global $hook_suffix; + + if ( in_array( $hook_suffix, array( + 'index.php', # dashboard + 'edit-comments.php', + 'comment.php', + 'post.php', + 'settings_page_akismet-key-config', + 'jetpack_page_akismet-key-config', + 'plugins.php', + ) ) ) { + wp_register_style( 'akismet.css', plugin_dir_url( __FILE__ ) . '_inc/akismet.css', array(), AKISMET_VERSION ); + wp_enqueue_style( 'akismet.css'); + + wp_register_script( 'akismet.js', plugin_dir_url( __FILE__ ) . '_inc/akismet.js', array('jquery','postbox'), AKISMET_VERSION ); + wp_enqueue_script( 'akismet.js' ); + wp_localize_script( 'akismet.js', 'WPAkismet', array( + 'comment_author_url_nonce' => wp_create_nonce( 'comment_author_url_nonce' ), + 'strings' => array( + 'Remove this URL' => __( 'Remove this URL' , 'akismet'), + 'Removing...' => __( 'Removing...' , 'akismet'), + 'URL removed' => __( 'URL removed' , 'akismet'), + '(undo)' => __( '(undo)' , 'akismet'), + 'Re-adding...' => __( 'Re-adding...' , 'akismet'), + ) + ) ); + } + } + + /** + * Add help to the Akismet page + * + * @return false if not the Akismet page + */ + public static function admin_help() { + $current_screen = get_current_screen(); + + // Screen Content + if ( current_user_can( 'manage_options' ) ) { + if ( !Akismet::get_api_key() || ( isset( $_GET['view'] ) && $_GET['view'] == 'start' ) ) { + //setup page + $current_screen->add_help_tab( + array( + 'id' => 'overview', + 'title' => __( 'Overview' , 'akismet'), + 'content' => + '

' . esc_html__( 'Akismet Setup' , 'akismet') . '

' . + '

' . esc_html__( 'Akismet filters out spam, so you can focus on more important things.' , 'akismet') . '

' . + '

' . esc_html__( 'On this page, you are able to set up the Akismet plugin.' , 'akismet') . '

', + ) + ); + + $current_screen->add_help_tab( + array( + 'id' => 'setup-signup', + 'title' => __( 'New to Akismet' , 'akismet'), + 'content' => + '

' . esc_html__( 'Akismet Setup' , 'akismet') . '

' . + '

' . esc_html__( 'You need to enter an API key to activate the Akismet service on your site.' , 'akismet') . '

' . + '

' . sprintf( __( 'Sign up for an account on %s to get an API Key.' , 'akismet'), 'Akismet.com' ) . '

', + ) + ); + + $current_screen->add_help_tab( + array( + 'id' => 'setup-manual', + 'title' => __( 'Enter an API Key' , 'akismet'), + 'content' => + '

' . esc_html__( 'Akismet Setup' , 'akismet') . '

' . + '

' . esc_html__( 'If you already have an API key' , 'akismet') . '

' . + '
    ' . + '
  1. ' . esc_html__( 'Copy and paste the API key into the text field.' , 'akismet') . '
  2. ' . + '
  3. ' . esc_html__( 'Click the Use this Key button.' , 'akismet') . '
  4. ' . + '
', + ) + ); + } + elseif ( isset( $_GET['view'] ) && $_GET['view'] == 'stats' ) { + //stats page + $current_screen->add_help_tab( + array( + 'id' => 'overview', + 'title' => __( 'Overview' , 'akismet'), + 'content' => + '

' . esc_html__( 'Akismet Stats' , 'akismet') . '

' . + '

' . esc_html__( 'Akismet filters out spam, so you can focus on more important things.' , 'akismet') . '

' . + '

' . esc_html__( 'On this page, you are able to view stats on spam filtered on your site.' , 'akismet') . '

', + ) + ); + } + else { + //configuration page + $current_screen->add_help_tab( + array( + 'id' => 'overview', + 'title' => __( 'Overview' , 'akismet'), + 'content' => + '

' . esc_html__( 'Akismet Configuration' , 'akismet') . '

' . + '

' . esc_html__( 'Akismet filters out spam, so you can focus on more important things.' , 'akismet') . '

' . + '

' . esc_html__( 'On this page, you are able to enter/remove an API key, view account information and view spam stats.' , 'akismet') . '

', + ) + ); + + $current_screen->add_help_tab( + array( + 'id' => 'settings', + 'title' => __( 'Settings' , 'akismet'), + 'content' => + '

' . esc_html__( 'Akismet Configuration' , 'akismet') . '

' . + '

' . esc_html__( 'API Key' , 'akismet') . ' - ' . esc_html__( 'Enter/remove an API key.' , 'akismet') . '

' . + '

' . esc_html__( 'Comments' , 'akismet') . ' - ' . esc_html__( 'Show the number of approved comments beside each comment author in the comments list page.' , 'akismet') . '

' . + '

' . esc_html__( 'Strictness' , 'akismet') . ' - ' . esc_html__( 'Choose to either discard the worst spam automatically or to always put all spam in spam folder.' , 'akismet') . '

', + ) + ); + + $current_screen->add_help_tab( + array( + 'id' => 'account', + 'title' => __( 'Account' , 'akismet'), + 'content' => + '

' . esc_html__( 'Akismet Configuration' , 'akismet') . '

' . + '

' . esc_html__( 'Subscription Type' , 'akismet') . ' - ' . esc_html__( 'The Akismet subscription plan' , 'akismet') . '

' . + '

' . esc_html__( 'Status' , 'akismet') . ' - ' . esc_html__( 'The subscription status - active, cancelled or suspended' , 'akismet') . '

', + ) + ); + } + } + + // Help Sidebar + $current_screen->set_help_sidebar( + '

' . esc_html__( 'For more information:' , 'akismet') . '

' . + '

' . esc_html__( 'Akismet FAQ' , 'akismet') . '

' . + '

' . esc_html__( 'Akismet Support' , 'akismet') . '

' + ); + } + + public static function enter_api_key() { + if ( function_exists('current_user_can') && !current_user_can('manage_options') ) + die(__('Cheatin’ uh?', 'akismet')); + + if ( !wp_verify_nonce( $_POST['_wpnonce'], self::NONCE ) ) + return false; + + foreach( array( 'akismet_strictness', 'akismet_show_user_comments_approved' ) as $option ) { + update_option( $option, isset( $_POST[$option] ) && (int) $_POST[$option] == 1 ? '1' : '0' ); + } + + if ( defined( 'WPCOM_API_KEY' ) ) + return false; //shouldn't have option to save key if already defined + + $new_key = preg_replace( '/[^a-f0-9]/i', '', $_POST['key'] ); + $old_key = Akismet::get_api_key(); + + if ( empty( $new_key ) ) { + if ( !empty( $old_key ) ) { + delete_option( 'wordpress_api_key' ); + self::$notices[] = 'new-key-empty'; + } + } + elseif ( $new_key != $old_key ) { + self::save_key( $new_key ); + } + + return true; + } + + public static function save_key( $api_key ) { + $key_status = Akismet::verify_key( $api_key ); + + if ( $key_status == 'valid' ) { + $akismet_user = self::get_akismet_user( $api_key ); + + if ( $akismet_user ) { + if ( in_array( $akismet_user->status, array( 'active', 'active-dunning', 'no-sub' ) ) ) + update_option( 'wordpress_api_key', $api_key ); + + if ( $akismet_user->status == 'active' ) + self::$notices['status'] = 'new-key-valid'; + elseif ( $akismet_user->status == 'notice' ) + self::$notices['status'] = $akismet_user; + else + self::$notices['status'] = $akismet_user->status; + } + else + self::$notices['status'] = 'new-key-invalid'; + } + elseif ( in_array( $key_status, array( 'invalid', 'failed' ) ) ) + self::$notices['status'] = 'new-key-'.$key_status; + } + + public static function dashboard_stats() { + if ( !function_exists('did_action') || did_action( 'rightnow_end' ) ) + return; // We already displayed this info in the "Right Now" section + + if ( !$count = get_option('akismet_spam_count') ) + return; + + global $submenu; + + echo '

' . esc_html( _x( 'Spam', 'comments' , 'akismet') ) . '

'; + + echo '

'.sprintf( _n( + 'Akismet has protected your site from %3$s spam comment.', + 'Akismet has protected your site from %3$s spam comments.', + $count + , 'akismet'), 'https://akismet.com/wordpress/', esc_url( add_query_arg( array( 'page' => 'akismet-admin' ), admin_url( isset( $submenu['edit-comments.php'] ) ? 'edit-comments.php' : 'edit.php' ) ) ), number_format_i18n($count) ).'

'; + } + + // WP 2.5+ + public static function rightnow_stats() { + if ( $count = get_option('akismet_spam_count') ) { + $intro = sprintf( _n( + 'Akismet has protected your site from %2$s spam comment already. ', + 'Akismet has protected your site from %2$s spam comments already. ', + $count + , 'akismet'), 'https://akismet.com/wordpress/', number_format_i18n( $count ) ); + } else { + $intro = sprintf( __('Akismet blocks spam from getting to your blog. ', 'akismet'), 'https://akismet.com/wordpress/' ); + } + + $link = add_query_arg( array( 'comment_status' => 'spam' ), admin_url( 'edit-comments.php' ) ); + + if ( $queue_count = self::get_spam_count() ) { + $queue_text = sprintf( _n( + 'There’s %1$s comment in your spam queue right now.', + 'There are %1$s comments in your spam queue right now.', + $queue_count + , 'akismet'), number_format_i18n( $queue_count ), esc_url( $link ) ); + } else { + $queue_text = sprintf( __( "There’s nothing in your spam queue at the moment." , 'akismet'), esc_url( $link ) ); + } + + $text = $intro . '
' . $queue_text; + echo "

$text

\n"; + } + + public static function check_for_spam_button( $comment_status ) { + // The "Check for Spam" button should only appear when the page might be showing + // a comment with comment_approved=0, which means an un-trashed, un-spammed, + // not-yet-moderated comment. + if ( 'all' != $comment_status && 'moderated' != $comment_status ) { + return; + } + + if ( function_exists('plugins_url') ) + $link = add_query_arg( array( 'action' => 'akismet_recheck_queue' ), admin_url( 'admin.php' ) ); + else + $link = add_query_arg( array( 'page' => 'akismet-admin', 'recheckqueue' => 'true', 'noheader' => 'true' ), admin_url( 'edit-comments.php' ) ); + + echo '
' . esc_html__('Check for Spam', 'akismet') . ''; + } + + public static function recheck_queue() { + global $wpdb; + + Akismet::fix_scheduled_recheck(); + + if ( ! ( isset( $_GET['recheckqueue'] ) || ( isset( $_REQUEST['action'] ) && 'akismet_recheck_queue' == $_REQUEST['action'] ) ) ) { + return; + } + + $result_counts = self::recheck_queue_portion( empty( $_POST['offset'] ) ? 0 : $_POST['offset'], empty( $_POST['limit'] ) ? 100 : $_POST['limit'] ); + + if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { + wp_send_json( array( + 'counts' => $result_counts, + )); + } + else { + $redirect_to = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : admin_url( 'edit-comments.php' ); + wp_safe_redirect( $redirect_to ); + exit; + } + } + + public static function recheck_queue_portion( $start = 0, $limit = 100 ) { + global $wpdb; + + $paginate = ''; + + if ( $limit <= 0 ) { + $limit = 100; + } + + if ( $start < 0 ) { + $start = 0; + } + + $moderation = $wpdb->get_col( $wpdb->prepare( "SELECT * FROM {$wpdb->comments} WHERE comment_approved = '0' LIMIT %d OFFSET %d", $limit, $start ) ); + + $result_counts = array( + 'processed' => count( $moderation ), + 'spam' => 0, + 'ham' => 0, + 'error' => 0, + ); + + foreach ( $moderation as $comment_id ) { + $api_response = Akismet::recheck_comment( $comment_id, 'recheck_queue' ); + + if ( 'true' === $api_response ) { + ++$result_counts['spam']; + } + elseif ( 'false' === $api_response ) { + ++$result_counts['ham']; + } + else { + ++$result_counts['error']; + } + } + + return $result_counts; + } + + // Adds an 'x' link next to author URLs, clicking will remove the author URL and show an undo link + public static function remove_comment_author_url() { + if ( !empty( $_POST['id'] ) && check_admin_referer( 'comment_author_url_nonce' ) ) { + $comment_id = intval( $_POST['id'] ); + $comment = get_comment( $comment_id, ARRAY_A ); + if ( $comment && current_user_can( 'edit_comment', $comment['comment_ID'] ) ) { + $comment['comment_author_url'] = ''; + do_action( 'comment_remove_author_url' ); + print( wp_update_comment( $comment ) ); + die(); + } + } + } + + public static function add_comment_author_url() { + if ( !empty( $_POST['id'] ) && !empty( $_POST['url'] ) && check_admin_referer( 'comment_author_url_nonce' ) ) { + $comment_id = intval( $_POST['id'] ); + $comment = get_comment( $comment_id, ARRAY_A ); + if ( $comment && current_user_can( 'edit_comment', $comment['comment_ID'] ) ) { + $comment['comment_author_url'] = esc_url( $_POST['url'] ); + do_action( 'comment_add_author_url' ); + print( wp_update_comment( $comment ) ); + die(); + } + } + } + + public static function comment_row_action( $a, $comment ) { + + // failsafe for old WP versions + if ( !function_exists('add_comment_meta') ) + return $a; + + $akismet_result = get_comment_meta( $comment->comment_ID, 'akismet_result', true ); + $akismet_error = get_comment_meta( $comment->comment_ID, 'akismet_error', true ); + $user_result = get_comment_meta( $comment->comment_ID, 'akismet_user_result', true); + $comment_status = wp_get_comment_status( $comment->comment_ID ); + $desc = null; + if ( $akismet_error ) { + $desc = __( 'Awaiting spam check' , 'akismet'); + } elseif ( !$user_result || $user_result == $akismet_result ) { + // Show the original Akismet result if the user hasn't overridden it, or if their decision was the same + if ( $akismet_result == 'true' && $comment_status != 'spam' && $comment_status != 'trash' ) + $desc = __( 'Flagged as spam by Akismet' , 'akismet'); + elseif ( $akismet_result == 'false' && $comment_status == 'spam' ) + $desc = __( 'Cleared by Akismet' , 'akismet'); + } else { + $who = get_comment_meta( $comment->comment_ID, 'akismet_user', true ); + if ( $user_result == 'true' ) + $desc = sprintf( __('Flagged as spam by %s', 'akismet'), $who ); + else + $desc = sprintf( __('Un-spammed by %s', 'akismet'), $who ); + } + + // add a History item to the hover links, just after Edit + if ( $akismet_result ) { + $b = array(); + foreach ( $a as $k => $item ) { + $b[ $k ] = $item; + if ( + $k == 'edit' + || ( $k == 'unspam' && $GLOBALS['wp_version'] >= 3.4 ) + ) { + $b['history'] = ' '. esc_html__('History', 'akismet') . ''; + } + } + + $a = $b; + } + + if ( $desc ) + echo ''.esc_html( $desc ).''; + + $show_user_comments = apply_filters( 'akismet_show_user_comments_approved', get_option('akismet_show_user_comments_approved') ); + $show_user_comments = $show_user_comments === 'false' ? false : $show_user_comments; //option used to be saved as 'false' / 'true' + + if ( $show_user_comments ) { + $comment_count = Akismet::get_user_comments_approved( $comment->user_id, $comment->comment_author_email, $comment->comment_author, $comment->comment_author_url ); + $comment_count = intval( $comment_count ); + echo ''; + } + + return $a; + } + + public static function comment_status_meta_box( $comment ) { + $history = Akismet::get_comment_history( $comment->comment_ID ); + + if ( $history ) { + echo '
'; + + foreach ( $history as $row ) { + $time = date( 'D d M Y @ h:i:m a', $row['time'] ) . ' GMT'; + + $message = ''; + + if ( ! empty( $row['message'] ) ) { + // Old versions of Akismet stored the message as a literal string in the commentmeta. + // New versions don't do that for two reasons: + // 1) Save space. + // 2) The message can be translated into the current language of the blog, not stuck + // in the language of the blog when the comment was made. + $message = $row['message']; + } + + // If possible, use a current translation. + switch ( $row['event'] ) { + case 'recheck-spam'; + $message = __( 'Akismet re-checked and caught this comment as spam.', 'akismet' ); + break; + case 'check-spam': + $message = __( 'Akismet caught this comment as spam.', 'akismet' ); + break; + case 'recheck-ham': + $message = __( 'Akismet re-checked and cleared this comment.', 'akismet' ); + break; + case 'check-ham': + $message = __( 'Akismet cleared this comment.', 'akismet' ); + break; + case 'wp-blacklisted': + $message = __( 'Comment was caught by wp_blacklist_check.', 'akismet' ); + break; + case 'report-spam': + if ( isset( $row['user'] ) ) { + $message = sprintf( __( '%s reported this comment as spam.', 'akismet' ), $row['user'] ); + } + else if ( ! $message ) { + $message = __( 'This comment was reported as spam.', 'akismet' ); + } + break; + case 'report-ham': + if ( isset( $row['user'] ) ) { + $message = sprintf( __( '%s reported this comment as not spam.', 'akismet' ), $row['user'] ); + } + else if ( ! $message ) { + $message = __( 'This comment was reported as not spam.', 'akismet' ); + } + break; + case 'cron-retry-spam': + $message = __( 'Akismet caught this comment as spam during an automatic retry.' , 'akismet'); + break; + case 'cron-retry-ham': + $message = __( 'Akismet cleared this comment during an automatic retry.', 'akismet'); + break; + case 'check-error': + if ( isset( $row['meta'], $row['meta']['response'] ) ) { + $message = sprintf( __( 'Akismet was unable to check this comment (response: %s) but will automatically retry later.', 'akismet'), $row['meta']['response'] ); + } + break; + case 'recheck-error': + if ( isset( $row['meta'], $row['meta']['response'] ) ) { + $message = sprintf( __( 'Akismet was unable to recheck this comment (response: %s).', 'akismet'), $row['meta']['response'] ); + } + break; + default: + if ( preg_match( '/^status-changed/', $row['event'] ) ) { + // Half of these used to be saved without the dash after 'status-changed'. + // See https://plugins.trac.wordpress.org/changeset/1150658/akismet/trunk + $new_status = preg_replace( '/^status-changed-?/', '', $row['event'] ); + $message = sprintf( __( 'Comment status was changed to %s', 'akismet' ), $new_status ); + } + else if ( preg_match( '/^status-/', $row['event'] ) ) { + $new_status = preg_replace( '/^status-/', '', $row['event'] ); + + if ( isset( $row['user'] ) ) { + $message = sprintf( __( '%1$s changed the comment status to %2$s.', 'akismet' ), $row['user'], $new_status ); + } + } + break; + + } + + echo '
'; + echo '' . sprintf( esc_html__('%s ago', 'akismet'), human_time_diff( $row['time'] ) ) . ''; + echo ' - '; + echo esc_html( $message ); + echo '
'; + } + + echo '
'; + } + } + + public static function plugin_action_links( $links, $file ) { + if ( $file == plugin_basename( plugin_dir_url( __FILE__ ) . '/akismet.php' ) ) { + $links[] = ''.esc_html__( 'Settings' , 'akismet').''; + } + + return $links; + } + + // Total spam in queue + // get_option( 'akismet_spam_count' ) is the total caught ever + public static function get_spam_count( $type = false ) { + global $wpdb; + + if ( !$type ) { // total + $count = wp_cache_get( 'akismet_spam_count', 'widget' ); + if ( false === $count ) { + if ( function_exists('wp_count_comments') ) { + $count = wp_count_comments(); + $count = $count->spam; + } else { + $count = (int) $wpdb->get_var("SELECT COUNT(comment_ID) FROM {$wpdb->comments} WHERE comment_approved = 'spam'"); + } + wp_cache_set( 'akismet_spam_count', $count, 'widget', 3600 ); + } + return $count; + } elseif ( 'comments' == $type || 'comment' == $type ) { // comments + $type = ''; + } + + return (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(comment_ID) FROM {$wpdb->comments} WHERE comment_approved = 'spam' AND comment_type = %s", $type ) ); + } + + // Check connectivity between the WordPress blog and Akismet's servers. + // Returns an associative array of server IP addresses, where the key is the IP address, and value is true (available) or false (unable to connect). + public static function check_server_ip_connectivity() { + + $servers = $ips = array(); + + // Some web hosts may disable this function + if ( function_exists('gethostbynamel') ) { + + $ips = gethostbynamel( 'rest.akismet.com' ); + if ( $ips && is_array($ips) && count($ips) ) { + $api_key = Akismet::get_api_key(); + + foreach ( $ips as $ip ) { + $response = Akismet::verify_key( $api_key, $ip ); + // even if the key is invalid, at least we know we have connectivity + if ( $response == 'valid' || $response == 'invalid' ) + $servers[$ip] = 'connected'; + else + $servers[$ip] = $response ? $response : 'unable to connect'; + } + } + } + + return $servers; + } + + // Simpler connectivity check + public static function check_server_connectivity($cache_timeout = 86400) { + + $debug = array(); + $debug[ 'PHP_VERSION' ] = PHP_VERSION; + $debug[ 'WORDPRESS_VERSION' ] = $GLOBALS['wp_version']; + $debug[ 'AKISMET_VERSION' ] = AKISMET_VERSION; + $debug[ 'AKISMET__PLUGIN_DIR' ] = AKISMET__PLUGIN_DIR; + $debug[ 'SITE_URL' ] = site_url(); + $debug[ 'HOME_URL' ] = home_url(); + + $servers = get_option('akismet_available_servers'); + if ( (time() - get_option('akismet_connectivity_time') < $cache_timeout) && $servers !== false ) { + $servers = self::check_server_ip_connectivity(); + update_option('akismet_available_servers', $servers); + update_option('akismet_connectivity_time', time()); + } + + if ( function_exists( 'wp_http_supports' ) && ( wp_http_supports( array( 'ssl' ) ) ) ) { + $response = wp_remote_get( 'https://rest.akismet.com/1.1/test' ); + } + else { + $response = wp_remote_get( 'http://rest.akismet.com/1.1/test' ); + } + + $debug[ 'gethostbynamel' ] = function_exists('gethostbynamel') ? 'exists' : 'not here'; + $debug[ 'Servers' ] = $servers; + $debug[ 'Test Connection' ] = $response; + + Akismet::log( $debug ); + + if ( $response && 'connected' == wp_remote_retrieve_body( $response ) ) + return true; + + return false; + } + + // Check the server connectivity and store the available servers in an option. + public static function get_server_connectivity($cache_timeout = 86400) { + return self::check_server_connectivity( $cache_timeout ); + } + + public static function get_number_spam_waiting() { + global $wpdb; + return (int) $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->commentmeta} WHERE meta_key = 'akismet_error'" ); + } + + public static function get_page_url( $page = 'config' ) { + + $args = array( 'page' => 'akismet-key-config' ); + + if ( $page == 'stats' ) + $args = array( 'page' => 'akismet-key-config', 'view' => 'stats' ); + elseif ( $page == 'delete_key' ) + $args = array( 'page' => 'akismet-key-config', 'view' => 'start', 'action' => 'delete-key', '_wpnonce' => wp_create_nonce( self::NONCE ) ); + + $url = add_query_arg( $args, class_exists( 'Jetpack' ) ? admin_url( 'admin.php' ) : admin_url( 'options-general.php' ) ); + + return $url; + } + + public static function get_akismet_user( $api_key ) { + $akismet_user = false; + + $subscription_verification = Akismet::http_post( Akismet::build_query( array( 'key' => $api_key, 'blog' => get_option( 'home' ) ) ), 'get-subscription' ); + + if ( ! empty( $subscription_verification[1] ) ) { + if ( 'invalid' !== $subscription_verification[1] ) { + $akismet_user = json_decode( $subscription_verification[1] ); + } + } + + return $akismet_user; + } + + public static function get_stats( $api_key ) { + $stat_totals = array(); + + foreach( array( '6-months', 'all' ) as $interval ) { + $response = Akismet::http_post( Akismet::build_query( array( 'blog' => get_option( 'home' ), 'key' => $api_key, 'from' => $interval ) ), 'get-stats' ); + + if ( ! empty( $response[1] ) ) { + $stat_totals[$interval] = json_decode( $response[1] ); + } + } + + return $stat_totals; + } + + public static function verify_wpcom_key( $api_key, $user_id, $extra = array() ) { + $akismet_account = Akismet::http_post( Akismet::build_query( array_merge( array( + 'user_id' => $user_id, + 'api_key' => $api_key, + 'get_account_type' => 'true' + ), $extra ) ), 'verify-wpcom-key' ); + + if ( ! empty( $akismet_account[1] ) ) + $akismet_account = json_decode( $akismet_account[1] ); + + Akismet::log( compact( 'akismet_account' ) ); + + return $akismet_account; + } + + public static function connect_jetpack_user() { + + if ( $jetpack_user = self::get_jetpack_user() ) { + if ( isset( $jetpack_user['user_id'] ) && isset( $jetpack_user['api_key'] ) ) { + $akismet_user = self::verify_wpcom_key( $jetpack_user['api_key'], $jetpack_user['user_id'], array( 'action' => 'connect_jetpack_user' ) ); + + if ( is_object( $akismet_user ) ) { + self::save_key( $akismet_user->api_key ); + return in_array( $akismet_user->status, array( 'active', 'active-dunning', 'no-sub' ) ); + } + } + } + + return false; + } + + public static function display_alert() { + Akismet::view( 'notice', array( + 'type' => 'alert', + 'code' => (int) get_option( 'akismet_alert_code' ), + 'msg' => get_option( 'akismet_alert_msg' ) + ) ); + } + + public static function display_spam_check_warning() { + Akismet::fix_scheduled_recheck(); + + if ( wp_next_scheduled('akismet_schedule_cron_recheck') > time() && self::get_number_spam_waiting() > 0 ) { + $link_text = apply_filters( 'akismet_spam_check_warning_link_text', sprintf( __( 'Please check your Akismet configuration and contact your web host if problems persist.', 'akismet'), esc_url( self::get_page_url() ) ) ); + Akismet::view( 'notice', array( 'type' => 'spam-check', 'link_text' => $link_text ) ); + } + } + + public static function display_invalid_version() { + Akismet::view( 'notice', array( 'type' => 'version' ) ); + } + + public static function display_api_key_warning() { + Akismet::view( 'notice', array( 'type' => 'plugin' ) ); + } + + public static function display_page() { + if ( !Akismet::get_api_key() || ( isset( $_GET['view'] ) && $_GET['view'] == 'start' ) ) + self::display_start_page(); + elseif ( isset( $_GET['view'] ) && $_GET['view'] == 'stats' ) + self::display_stats_page(); + else + self::display_configuration_page(); + } + + public static function display_start_page() { + if ( isset( $_GET['action'] ) ) { + if ( $_GET['action'] == 'delete-key' ) { + if ( isset( $_GET['_wpnonce'] ) && wp_verify_nonce( $_GET['_wpnonce'], self::NONCE ) ) + delete_option( 'wordpress_api_key' ); + } + } + + if ( $api_key = Akismet::get_api_key() && ( empty( self::$notices['status'] ) || 'existing-key-invalid' != self::$notices['status'] ) ) { + self::display_configuration_page(); + return; + } + + //the user can choose to auto connect their API key by clicking a button on the akismet done page + //if jetpack, get verified api key by using connected wpcom user id + //if no jetpack, get verified api key by using an akismet token + + $akismet_user = false; + + if ( isset( $_GET['token'] ) && preg_match('/^(\d+)-[0-9a-f]{20}$/', $_GET['token'] ) ) + $akismet_user = self::verify_wpcom_key( '', '', array( 'token' => $_GET['token'] ) ); + elseif ( $jetpack_user = self::get_jetpack_user() ) + $akismet_user = self::verify_wpcom_key( $jetpack_user['api_key'], $jetpack_user['user_id'] ); + + if ( isset( $_GET['action'] ) ) { + if ( $_GET['action'] == 'save-key' ) { + if ( is_object( $akismet_user ) ) { + self::save_key( $akismet_user->api_key ); + self::display_notice(); + self::display_configuration_page(); + return; + } + } + } + + echo '

'.esc_html__('Akismet', 'akismet').'

'; + + self::display_status(); + + Akismet::view( 'start', compact( 'akismet_user' ) ); + } + + public static function display_stats_page() { + Akismet::view( 'stats' ); + } + + public static function display_configuration_page() { + $api_key = Akismet::get_api_key(); + $akismet_user = self::get_akismet_user( $api_key ); + + if ( ! $akismet_user ) { + // This could happen if the user's key became invalid after it was previously valid and successfully set up. + self::$notices['status'] = 'existing-key-invalid'; + self::display_start_page(); + return; + } + + $stat_totals = self::get_stats( $api_key ); + + // If unset, create the new strictness option using the old discard option to determine its default + if ( get_option( 'akismet_strictness' ) === false ) + add_option( 'akismet_strictness', (get_option('akismet_discard_month') === 'true' ? '1' : '0') ); + + if ( empty( self::$notices ) ) { + //show status + if ( ! empty( $stat_totals['all'] ) && isset( $stat_totals['all']->time_saved ) && $akismet_user->status == 'active' && $akismet_user->account_type == 'free-api-key' ) { + + $time_saved = false; + + if ( $stat_totals['all']->time_saved > 1800 ) { + $total_in_minutes = round( $stat_totals['all']->time_saved / 60 ); + $total_in_hours = round( $total_in_minutes / 60 ); + $total_in_days = round( $total_in_hours / 8 ); + $cleaning_up = __( 'Cleaning up spam takes time.' , 'akismet'); + + if ( $total_in_days > 1 ) + $time_saved = $cleaning_up . ' ' . sprintf( _n( 'Akismet has saved you %s day!', 'Akismet has saved you %s days!', $total_in_days, 'akismet' ), number_format_i18n( $total_in_days ) ); + elseif ( $total_in_hours > 1 ) + $time_saved = $cleaning_up . ' ' . sprintf( _n( 'Akismet has saved you %d hour!', 'Akismet has saved you %d hours!', $total_in_hours, 'akismet' ), $total_in_hours ); + elseif ( $total_in_minutes >= 30 ) + $time_saved = $cleaning_up . ' ' . sprintf( _n( 'Akismet has saved you %d minute!', 'Akismet has saved you %d minutes!', $total_in_minutes, 'akismet' ), $total_in_minutes ); + } + + Akismet::view( 'notice', array( 'type' => 'active-notice', 'time_saved' => $time_saved ) ); + } + + if ( !empty( $akismet_user->limit_reached ) && in_array( $akismet_user->limit_reached, array( 'yellow', 'red' ) ) ) { + Akismet::view( 'notice', array( 'type' => 'limit-reached', 'level' => $akismet_user->limit_reached ) ); + } + } + + if ( !isset( self::$notices['status'] ) && in_array( $akismet_user->status, array( 'cancelled', 'suspended', 'missing', 'no-sub' ) ) ) + Akismet::view( 'notice', array( 'type' => $akismet_user->status ) ); + + Akismet::log( compact( 'stat_totals', 'akismet_user' ) ); + Akismet::view( 'config', compact( 'api_key', 'akismet_user', 'stat_totals' ) ); + } + + public static function display_notice() { + global $hook_suffix; + + if ( in_array( $hook_suffix, array( 'jetpack_page_akismet-key-config', 'settings_page_akismet-key-config', 'edit-comments.php' ) ) && (int) get_option( 'akismet_alert_code' ) > 0 ) { + Akismet::verify_key( Akismet::get_api_key() ); //verify that the key is still in alert state + + if ( get_option( 'akismet_alert_code' ) > 0 ) + self::display_alert(); + } + elseif ( $hook_suffix == 'plugins.php' && !Akismet::get_api_key() ) { + self::display_api_key_warning(); + } + elseif ( $hook_suffix == 'edit-comments.php' && wp_next_scheduled( 'akismet_schedule_cron_recheck' ) ) { + self::display_spam_check_warning(); + } + elseif ( in_array( $hook_suffix, array( 'jetpack_page_akismet-key-config', 'settings_page_akismet-key-config' ) ) && Akismet::get_api_key() ) { + self::display_status(); + } + } + + public static function display_status() { + $type = ''; + + if ( !self::get_server_connectivity() ) + $type = 'servers-be-down'; + + if ( !empty( $type ) ) + Akismet::view( 'notice', compact( 'type' ) ); + elseif ( !empty( self::$notices ) ) { + foreach ( self::$notices as $type ) { + if ( is_object( $type ) ) { + $notice_header = $notice_text = ''; + + if ( property_exists( $type, 'notice_header' ) ) + $notice_header = wp_kses( $type->notice_header, self::$allowed ); + + if ( property_exists( $type, 'notice_text' ) ) + $notice_text = wp_kses( $type->notice_text, self::$allowed ); + + if ( property_exists( $type, 'status' ) ) { + $type = wp_kses( $type->status, self::$allowed ); + Akismet::view( 'notice', compact( 'type', 'notice_header', 'notice_text' ) ); + } + } + else + Akismet::view( 'notice', compact( 'type' ) ); + } + } + } + + private static function get_jetpack_user() { + if ( !class_exists('Jetpack') ) + return false; + + Jetpack::load_xml_rpc_client(); + $xml = new Jetpack_IXR_ClientMulticall( array( 'user_id' => get_current_user_id() ) ); + + $xml->addCall( 'wpcom.getUserID' ); + $xml->addCall( 'akismet.getAPIKey' ); + $xml->query(); + + Akismet::log( compact( 'xml' ) ); + + if ( !$xml->isError() ) { + $responses = $xml->getResponse(); + if ( count( $responses ) > 1 ) { + $api_key = array_shift( $responses[0] ); + $user_id = (int) array_shift( $responses[1] ); + return compact( 'api_key', 'user_id' ); + } + } + return false; + } + + /** + * Some commentmeta isn't useful in an export file. Suppress it (when supported). + * + * @param bool $exclude + * @param string $key The meta key + * @param object $meta The meta object + * @return bool Whether to exclude this meta entry from the export. + */ + public static function exclude_commentmeta_from_export( $exclude, $key, $meta ) { + if ( in_array( $key, array( 'akismet_as_submitted', 'akismet_rechecking', 'akismet_delayed_moderation_email' ) ) ) { + return true; + } + + return $exclude; + } +} \ No newline at end of file diff --git a/plugins/akismet/class.akismet-cli.php b/plugins/akismet/class.akismet-cli.php new file mode 100644 index 0000000..b0b4836 --- /dev/null +++ b/plugins/akismet/class.akismet-cli.php @@ -0,0 +1,91 @@ +... + * : The ID(s) of the comment(s) to check. + * + * [--noaction] + * : Don't change the status of the comment. Just report what Akismet thinks it is. + * + * ## EXAMPLES + * + * wp akismet check 12345 + * + * @alias comment-check + */ + public function check( $args, $assoc_args ) { + foreach ( $args as $comment_id ) { + if ( isset( $assoc_args['noaction'] ) ) { + // Check the comment, but don't reclassify it. + $api_response = Akismet::check_db_comment( $comment_id, 'wp-cli' ); + } + else { + $api_response = Akismet::recheck_comment( $comment_id, 'wp-cli' ); + } + + if ( 'true' === $api_response ) { + WP_CLI::line( sprintf( __( "Comment #%d is spam.", 'akismet' ), $comment_id ) ); + } + else if ( 'false' === $api_response ) { + WP_CLI::line( sprintf( __( "Comment #%d is not spam.", 'akismet' ), $comment_id ) ); + } + else { + if ( false === $api_response ) { + WP_CLI::error( __( "Failed to connect to Akismet.", 'akismet' ) ); + } + else if ( is_wp_error( $api_response ) ) { + WP_CLI::warning( sprintf( __( "Comment #%d could not be checked.", 'akismet' ), $comment_id ) ); + } + } + } + } + + /** + * Recheck all comments in the Pending queue. + * + * ## EXAMPLES + * + * wp akismet recheck_queue + * + * @alias recheck-queue + */ + public function recheck_queue() { + $batch_size = 100; + $start = 0; + + $total_counts = array(); + + do { + $result_counts = Akismet_Admin::recheck_queue_portion( $start, $batch_size ); + + if ( $result_counts['processed'] > 0 ) { + foreach ( $result_counts as $key => $count ) { + if ( ! isset( $total_counts[ $key ] ) ) { + $total_counts[ $key ] = $count; + } + else { + $total_counts[ $key ] += $count; + } + } + $start += $batch_size; + $start -= $result_counts['spam']; // These comments will have been removed from the queue. + } + } while ( $result_counts['processed'] > 0 ); + + WP_CLI::line( sprintf( _n( "Processed %d comment.", "Processed %d comments.", $total_counts['processed'], 'akismet' ), number_format( $total_counts['processed'] ) ) ); + WP_CLI::line( sprintf( _n( "%d comment moved to Spam.", "%d comments moved to Spam.", $total_counts['spam'], 'akismet' ), number_format( $total_counts['spam'] ) ) ); + + if ( $total_counts['error'] ) { + WP_CLI::line( sprintf( _n( "%d comment could not be checked.", "%d comments could not be checked.", $total_counts['error'], 'akismet' ), number_format( $total_counts['error'] ) ) ); + } + } +} \ No newline at end of file diff --git a/plugins/akismet/class.akismet-widget.php b/plugins/akismet/class.akismet-widget.php new file mode 100644 index 0000000..474f759 --- /dev/null +++ b/plugins/akismet/class.akismet-widget.php @@ -0,0 +1,114 @@ + __( 'Display the number of spam comments Akismet has caught' , 'akismet') ) + ); + + if ( is_active_widget( false, false, $this->id_base ) ) { + add_action( 'wp_head', array( $this, 'css' ) ); + } + } + + function css() { +?> + + + + + +

+ + +

+ + + + + + '', 'blog_charset' => '', 'blog_lang' => '', 'blog_ua' => '', 'comment_agent' => '', 'comment_author' => '', 'comment_author_IP' => '', 'comment_author_email' => '', 'comment_author_url' => '', 'comment_content' => '', 'comment_date_gmt' => '', 'comment_tags' => '', 'comment_type' => '', 'guid' => '', 'is_test' => '', 'permalink' => '', 'reporter' => '', 'site_domain' => '', 'submit_referer' => '', 'submit_uri' => '', 'user_ID' => '', 'user_agent' => '', 'user_id' => '', 'user_ip' => '' ); + + public static function init() { + if ( ! self::$initiated ) { + self::init_hooks(); + } + } + + /** + * Initializes WordPress hooks + */ + private static function init_hooks() { + self::$initiated = true; + + add_action( 'wp_insert_comment', array( 'Akismet', 'auto_check_update_meta' ), 10, 2 ); + add_filter( 'preprocess_comment', array( 'Akismet', 'auto_check_comment' ), 1 ); + add_action( 'akismet_scheduled_delete', array( 'Akismet', 'delete_old_comments' ) ); + add_action( 'akismet_scheduled_delete', array( 'Akismet', 'delete_old_comments_meta' ) ); + add_action( 'akismet_schedule_cron_recheck', array( 'Akismet', 'cron_recheck' ) ); + + /** + * To disable the Akismet comment nonce, add a filter for the 'akismet_comment_nonce' tag + * and return any string value that is not 'true' or '' (empty string). + * + * Don't return boolean false, because that implies that the 'akismet_comment_nonce' option + * has not been set and that Akismet should just choose the default behavior for that + * situation. + */ + $akismet_comment_nonce_option = apply_filters( 'akismet_comment_nonce', get_option( 'akismet_comment_nonce' ) ); + + if ( $akismet_comment_nonce_option == 'true' || $akismet_comment_nonce_option == '' ) + add_action( 'comment_form', array( 'Akismet', 'add_comment_nonce' ), 1 ); + + add_action( 'admin_head-edit-comments.php', array( 'Akismet', 'load_form_js' ) ); + add_action( 'comment_form', array( 'Akismet', 'load_form_js' ) ); + add_action( 'comment_form', array( 'Akismet', 'inject_ak_js' ) ); + + add_filter( 'comment_moderation_recipients', array( 'Akismet', 'disable_moderation_emails_if_unreachable' ), 1000, 2 ); + add_filter( 'pre_comment_approved', array( 'Akismet', 'last_comment_status' ), 10, 2 ); + + add_action( 'transition_comment_status', array( 'Akismet', 'transition_comment_status' ), 10, 3 ); + + // Run this early in the pingback call, before doing a remote fetch of the source uri + add_action( 'xmlrpc_call', array( 'Akismet', 'pre_check_pingback' ) ); + + // Jetpack compatibility + add_filter( 'jetpack_options_whitelist', array( 'Akismet', 'add_to_jetpack_options_whitelist' ) ); + add_action( 'update_option_wordpress_api_key', array( 'Akismet', 'updated_option' ), 10, 2 ); + } + + public static function get_api_key() { + return apply_filters( 'akismet_get_api_key', defined('WPCOM_API_KEY') ? constant('WPCOM_API_KEY') : get_option('wordpress_api_key') ); + } + + public static function check_key_status( $key, $ip = null ) { + return self::http_post( Akismet::build_query( array( 'key' => $key, 'blog' => get_option( 'home' ) ) ), 'verify-key', $ip ); + } + + public static function verify_key( $key, $ip = null ) { + $response = self::check_key_status( $key, $ip ); + + if ( $response[1] != 'valid' && $response[1] != 'invalid' ) + return 'failed'; + + return $response[1]; + } + + public static function deactivate_key( $key ) { + $response = self::http_post( Akismet::build_query( array( 'key' => $key, 'blog' => get_option( 'home' ) ) ), 'deactivate' ); + + if ( $response[1] != 'deactivated' ) + return 'failed'; + + return $response[1]; + } + + /** + * Add the akismet option to the Jetpack options management whitelist. + * + * @param array $options The list of whitelisted option names. + * @return array The updated whitelist + */ + public static function add_to_jetpack_options_whitelist( $options ) { + $options[] = 'wordpress_api_key'; + return $options; + } + + /** + * When the akismet option is updated, run the registration call. + * + * This should only be run when the option is updated from the Jetpack/WP.com + * API call, and only if the new key is different than the old key. + * + * @param mixed $old_value The old option value. + * @param mixed $value The new option value. + */ + public static function updated_option( $old_value, $value ) { + // Not an API call + if ( ! class_exists( 'WPCOM_JSON_API_Update_Option_Endpoint' ) ) { + return; + } + // Only run the registration if the old key is different. + if ( $old_value !== $value ) { + self::verify_key( $value ); + } + } + + public static function auto_check_comment( $commentdata ) { + self::$last_comment_result = null; + + $comment = $commentdata; + + $comment['user_ip'] = self::get_ip_address(); + $comment['user_agent'] = self::get_user_agent(); + $comment['referrer'] = self::get_referer(); + $comment['blog'] = get_option( 'home' ); + $comment['blog_lang'] = get_locale(); + $comment['blog_charset'] = get_option('blog_charset'); + $comment['permalink'] = get_permalink( $comment['comment_post_ID'] ); + + if ( !empty( $comment['user_ID'] ) ) + $comment['user_role'] = Akismet::get_user_roles( $comment['user_ID'] ); + + /** See filter documentation in init_hooks(). */ + $akismet_nonce_option = apply_filters( 'akismet_comment_nonce', get_option( 'akismet_comment_nonce' ) ); + $comment['akismet_comment_nonce'] = 'inactive'; + if ( $akismet_nonce_option == 'true' || $akismet_nonce_option == '' ) { + $comment['akismet_comment_nonce'] = 'failed'; + if ( isset( $_POST['akismet_comment_nonce'] ) && wp_verify_nonce( $_POST['akismet_comment_nonce'], 'akismet_comment_nonce_' . $comment['comment_post_ID'] ) ) + $comment['akismet_comment_nonce'] = 'passed'; + + // comment reply in wp-admin + if ( isset( $_POST['_ajax_nonce-replyto-comment'] ) && check_ajax_referer( 'replyto-comment', '_ajax_nonce-replyto-comment' ) ) + $comment['akismet_comment_nonce'] = 'passed'; + + } + + if ( self::is_test_mode() ) + $comment['is_test'] = 'true'; + + foreach( $_POST as $key => $value ) { + if ( is_string( $value ) ) + $comment["POST_{$key}"] = $value; + } + + foreach ( $_SERVER as $key => $value ) { + if ( ! is_string( $value ) ) { + continue; + } + + if ( preg_match( "/^HTTP_COOKIE/", $key ) ) { + continue; + } + + // Send any potentially useful $_SERVER vars, but avoid sending junk we don't need. + if ( preg_match( "/^(HTTP_|REMOTE_ADDR|REQUEST_URI|DOCUMENT_URI)/", $key ) ) { + $comment[ "$key" ] = $value; + } + } + + $post = get_post( $comment['comment_post_ID'] ); + $comment[ 'comment_post_modified_gmt' ] = $post->post_modified_gmt; + + $response = self::http_post( Akismet::build_query( $comment ), 'comment-check' ); + + do_action( 'akismet_comment_check_response', $response ); + + $commentdata['comment_as_submitted'] = array_intersect_key( $comment, self::$comment_as_submitted_allowed_keys ); + $commentdata['akismet_result'] = $response[1]; + + if ( isset( $response[0]['x-akismet-pro-tip'] ) ) + $commentdata['akismet_pro_tip'] = $response[0]['x-akismet-pro-tip']; + + if ( isset( $response[0]['x-akismet-error'] ) ) { + // An error occurred that we anticipated (like a suspended key) and want the user to act on. + // Send to moderation. + self::$last_comment_result = '0'; + } + else if ( 'true' == $response[1] ) { + // akismet_spam_count will be incremented later by comment_is_spam() + self::$last_comment_result = 'spam'; + + $discard = ( isset( $commentdata['akismet_pro_tip'] ) && $commentdata['akismet_pro_tip'] === 'discard' && self::allow_discard() ); + + do_action( 'akismet_spam_caught', $discard ); + + if ( $discard ) { + // akismet_result_spam() won't be called so bump the counter here + if ( $incr = apply_filters('akismet_spam_count_incr', 1) ) + update_option( 'akismet_spam_count', get_option('akismet_spam_count') + $incr ); + $redirect_to = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : get_permalink( $post ); + wp_safe_redirect( esc_url_raw( $redirect_to ) ); + die(); + } + } + + // if the response is neither true nor false, hold the comment for moderation and schedule a recheck + if ( 'true' != $response[1] && 'false' != $response[1] ) { + if ( !current_user_can('moderate_comments') ) { + // Comment status should be moderated + self::$last_comment_result = '0'; + } + if ( function_exists('wp_next_scheduled') && function_exists('wp_schedule_single_event') ) { + if ( !wp_next_scheduled( 'akismet_schedule_cron_recheck' ) ) { + wp_schedule_single_event( time() + 1200, 'akismet_schedule_cron_recheck' ); + do_action( 'akismet_scheduled_recheck', 'invalid-response-' . $response[1] ); + } + } + + self::$prevent_moderation_email_for_these_comments[] = $commentdata; + } + + if ( function_exists('wp_next_scheduled') && function_exists('wp_schedule_event') ) { + // WP 2.1+: delete old comments daily + if ( !wp_next_scheduled( 'akismet_scheduled_delete' ) ) + wp_schedule_event( time(), 'daily', 'akismet_scheduled_delete' ); + } + elseif ( (mt_rand(1, 10) == 3) ) { + // WP 2.0: run this one time in ten + self::delete_old_comments(); + } + + self::set_last_comment( $commentdata ); + self::fix_scheduled_recheck(); + + return $commentdata; + } + + public static function get_last_comment() { + return self::$last_comment; + } + + public static function set_last_comment( $comment ) { + if ( is_null( $comment ) ) { + self::$last_comment = null; + } + else { + // We filter it here so that it matches the filtered comment data that we'll have to compare against later. + // wp_filter_comment expects comment_author_IP + self::$last_comment = wp_filter_comment( + array_merge( + array( 'comment_author_IP' => self::get_ip_address() ), + $comment + ) + ); + } + } + + // this fires on wp_insert_comment. we can't update comment_meta when auto_check_comment() runs + // because we don't know the comment ID at that point. + public static function auto_check_update_meta( $id, $comment ) { + + // failsafe for old WP versions + if ( !function_exists('add_comment_meta') ) + return false; + + if ( !isset( self::$last_comment['comment_author_email'] ) ) + self::$last_comment['comment_author_email'] = ''; + + // wp_insert_comment() might be called in other contexts, so make sure this is the same comment + // as was checked by auto_check_comment + if ( is_object( $comment ) && !empty( self::$last_comment ) && is_array( self::$last_comment ) ) { + if ( self::matches_last_comment( $comment ) ) { + + load_plugin_textdomain( 'akismet' ); + + // normal result: true or false + if ( self::$last_comment['akismet_result'] == 'true' ) { + update_comment_meta( $comment->comment_ID, 'akismet_result', 'true' ); + self::update_comment_history( $comment->comment_ID, '', 'check-spam' ); + if ( $comment->comment_approved != 'spam' ) + self::update_comment_history( + $comment->comment_ID, + '', + 'status-changed-'.$comment->comment_approved + ); + } + elseif ( self::$last_comment['akismet_result'] == 'false' ) { + update_comment_meta( $comment->comment_ID, 'akismet_result', 'false' ); + self::update_comment_history( $comment->comment_ID, '', 'check-ham' ); + // Status could be spam or trash, depending on the WP version and whether this change applies: + // https://core.trac.wordpress.org/changeset/34726 + if ( $comment->comment_approved == 'spam' || $comment->comment_approved == 'trash' ) { + if ( wp_blacklist_check($comment->comment_author, $comment->comment_author_email, $comment->comment_author_url, $comment->comment_content, $comment->comment_author_IP, $comment->comment_agent) ) + self::update_comment_history( $comment->comment_ID, '', 'wp-blacklisted' ); + else + self::update_comment_history( $comment->comment_ID, '', 'status-changed-'.$comment->comment_approved ); + } + } // abnormal result: error + else { + update_comment_meta( $comment->comment_ID, 'akismet_error', time() ); + self::update_comment_history( + $comment->comment_ID, + '', + 'check-error', + array( 'response' => substr( self::$last_comment['akismet_result'], 0, 50 ) ) + ); + } + + // record the complete original data as submitted for checking + if ( isset( self::$last_comment['comment_as_submitted'] ) ) + update_comment_meta( $comment->comment_ID, 'akismet_as_submitted', self::$last_comment['comment_as_submitted'] ); + + if ( isset( self::$last_comment['akismet_pro_tip'] ) ) + update_comment_meta( $comment->comment_ID, 'akismet_pro_tip', self::$last_comment['akismet_pro_tip'] ); + } + } + } + + public static function delete_old_comments() { + global $wpdb; + + /** + * Determines how many comments will be deleted in each batch. + * + * @param int The default, as defined by AKISMET_DELETE_LIMIT. + */ + $delete_limit = apply_filters( 'akismet_delete_comment_limit', defined( 'AKISMET_DELETE_LIMIT' ) ? AKISMET_DELETE_LIMIT : 10000 ); + $delete_limit = max( 1, intval( $delete_limit ) ); + + /** + * Determines how many days a comment will be left in the Spam queue before being deleted. + * + * @param int The default number of days. + */ + $delete_interval = apply_filters( 'akismet_delete_comment_interval', 15 ); + $delete_interval = max( 1, intval( $delete_interval ) ); + + while ( $comment_ids = $wpdb->get_col( $wpdb->prepare( "SELECT comment_id FROM {$wpdb->comments} WHERE DATE_SUB(NOW(), INTERVAL %d DAY) > comment_date_gmt AND comment_approved = 'spam' LIMIT %d", $delete_interval, $delete_limit ) ) ) { + if ( empty( $comment_ids ) ) + return; + + $wpdb->queries = array(); + + foreach ( $comment_ids as $comment_id ) { + do_action( 'delete_comment', $comment_id ); + } + + // Prepared as strings since comment_id is an unsigned BIGINT, and using %d will constrain the value to the maximum signed BIGINT. + $format_string = implode( ", ", array_fill( 0, count( $comment_ids ), '%s' ) ); + + $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->comments} WHERE comment_id IN ( " . $format_string . " )", $comment_ids ) ); + $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->commentmeta} WHERE comment_id IN ( " . $format_string . " )", $comment_ids ) ); + + clean_comment_cache( $comment_ids ); + } + + if ( apply_filters( 'akismet_optimize_table', ( mt_rand(1, 5000) == 11), $wpdb->comments ) ) // lucky number + $wpdb->query("OPTIMIZE TABLE {$wpdb->comments}"); + } + + public static function delete_old_comments_meta() { + global $wpdb; + + $interval = apply_filters( 'akismet_delete_commentmeta_interval', 15 ); + + # enfore a minimum of 1 day + $interval = absint( $interval ); + if ( $interval < 1 ) + $interval = 1; + + // akismet_as_submitted meta values are large, so expire them + // after $interval days regardless of the comment status + while ( $comment_ids = $wpdb->get_col( $wpdb->prepare( "SELECT m.comment_id FROM {$wpdb->commentmeta} as m INNER JOIN {$wpdb->comments} as c USING(comment_id) WHERE m.meta_key = 'akismet_as_submitted' AND DATE_SUB(NOW(), INTERVAL %d DAY) > c.comment_date_gmt LIMIT 10000", $interval ) ) ) { + if ( empty( $comment_ids ) ) + return; + + $wpdb->queries = array(); + + foreach ( $comment_ids as $comment_id ) { + delete_comment_meta( $comment_id, 'akismet_as_submitted' ); + } + } + + if ( apply_filters( 'akismet_optimize_table', ( mt_rand(1, 5000) == 11), $wpdb->commentmeta ) ) // lucky number + $wpdb->query("OPTIMIZE TABLE {$wpdb->commentmeta}"); + } + + // how many approved comments does this author have? + public static function get_user_comments_approved( $user_id, $comment_author_email, $comment_author, $comment_author_url ) { + global $wpdb; + + if ( !empty( $user_id ) ) + return (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM {$wpdb->comments} WHERE user_id = %d AND comment_approved = 1", $user_id ) ); + + if ( !empty( $comment_author_email ) ) + return (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM {$wpdb->comments} WHERE comment_author_email = %s AND comment_author = %s AND comment_author_url = %s AND comment_approved = 1", $comment_author_email, $comment_author, $comment_author_url ) ); + + return 0; + } + + // get the full comment history for a given comment, as an array in reverse chronological order + public static function get_comment_history( $comment_id ) { + + // failsafe for old WP versions + if ( !function_exists('add_comment_meta') ) + return false; + + $history = get_comment_meta( $comment_id, 'akismet_history', false ); + usort( $history, array( 'Akismet', '_cmp_time' ) ); + return $history; + } + + /** + * Log an event for a given comment, storing it in comment_meta. + * + * @param int $comment_id The ID of the relevant comment. + * @param string $message The string description of the event. No longer used. + * @param string $event The event code. + * @param array $meta Metadata about the history entry. e.g., the user that reported or changed the status of a given comment. + */ + public static function update_comment_history( $comment_id, $message, $event=null, $meta=null ) { + global $current_user; + + // failsafe for old WP versions + if ( !function_exists('add_comment_meta') ) + return false; + + $user = ''; + + $event = array( + 'time' => self::_get_microtime(), + 'event' => $event, + ); + + if ( is_object( $current_user ) && isset( $current_user->user_login ) ) { + $event['user'] = $current_user->user_login; + } + + if ( ! empty( $meta ) ) { + $event['meta'] = $meta; + } + + // $unique = false so as to allow multiple values per comment + $r = add_comment_meta( $comment_id, 'akismet_history', $event, false ); + } + + public static function check_db_comment( $id, $recheck_reason = 'recheck_queue' ) { + global $wpdb; + + $c = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->comments} WHERE comment_ID = %d", $id ), ARRAY_A ); + + if ( ! $c ) { + return new WP_Error( 'invalid-comment-id', __( 'Comment not found.', 'akismet' ) ); + } + + $c['user_ip'] = $c['comment_author_IP']; + $c['user_agent'] = $c['comment_agent']; + $c['referrer'] = ''; + $c['blog'] = get_option( 'home' ); + $c['blog_lang'] = get_locale(); + $c['blog_charset'] = get_option('blog_charset'); + $c['permalink'] = get_permalink($c['comment_post_ID']); + $c['recheck_reason'] = $recheck_reason; + + $c['user_role'] = ''; + if ( isset( $c['user_ID'] ) ) + $c['user_role'] = Akismet::get_user_roles($c['user_ID']); + + if ( self::is_test_mode() ) + $c['is_test'] = 'true'; + + $response = self::http_post( Akismet::build_query( $c ), 'comment-check' ); + + if ( ! empty( $response[1] ) ) { + return $response[1]; + } + + return false; + } + + public static function recheck_comment( $id, $recheck_reason = 'recheck_queue' ) { + add_comment_meta( $id, 'akismet_rechecking', true ); + + $api_response = self::check_db_comment( $id, $recheck_reason ); + + delete_comment_meta( $id, 'akismet_rechecking' ); + + if ( is_wp_error( $api_response ) ) { + // Invalid comment ID. + } + else if ( 'true' === $api_response ) { + wp_set_comment_status( $id, 'spam' ); + update_comment_meta( $id, 'akismet_result', 'true' ); + delete_comment_meta( $id, 'akismet_error' ); + delete_comment_meta( $id, 'akismet_delayed_moderation_email' ); + Akismet::update_comment_history( $id, '', 'recheck-spam' ); + } + elseif ( 'false' === $api_response ) { + update_comment_meta( $id, 'akismet_result', 'false' ); + delete_comment_meta( $id, 'akismet_error' ); + delete_comment_meta( $id, 'akismet_delayed_moderation_email' ); + Akismet::update_comment_history( $id, '', 'recheck-ham' ); + } + else { + // abnormal result: error + update_comment_meta( $id, 'akismet_result', 'error' ); + Akismet::update_comment_history( + $id, + '', + 'recheck-error', + array( 'response' => substr( $api_response, 0, 50 ) ) + ); + } + + return $api_response; + } + + public static function transition_comment_status( $new_status, $old_status, $comment ) { + + if ( $new_status == $old_status ) + return; + + # we don't need to record a history item for deleted comments + if ( $new_status == 'delete' ) + return; + + if ( !current_user_can( 'edit_post', $comment->comment_post_ID ) && !current_user_can( 'moderate_comments' ) ) + return; + + if ( defined('WP_IMPORTING') && WP_IMPORTING == true ) + return; + + // if this is present, it means the status has been changed by a re-check, not an explicit user action + if ( get_comment_meta( $comment->comment_ID, 'akismet_rechecking' ) ) + return; + + global $current_user; + $reporter = ''; + if ( is_object( $current_user ) ) + $reporter = $current_user->user_login; + + // Assumption alert: + // We want to submit comments to Akismet only when a moderator explicitly spams or approves it - not if the status + // is changed automatically by another plugin. Unfortunately WordPress doesn't provide an unambiguous way to + // determine why the transition_comment_status action was triggered. And there are several different ways by which + // to spam and unspam comments: bulk actions, ajax, links in moderation emails, the dashboard, and perhaps others. + // We'll assume that this is an explicit user action if certain POST/GET variables exist. + if ( ( isset( $_POST['status'] ) && in_array( $_POST['status'], array( 'spam', 'unspam' ) ) ) || + ( isset( $_POST['spam'] ) && (int) $_POST['spam'] == 1 ) || + ( isset( $_POST['unspam'] ) && (int) $_POST['unspam'] == 1 ) || + ( isset( $_POST['comment_status'] ) && in_array( $_POST['comment_status'], array( 'spam', 'unspam' ) ) ) || + ( isset( $_GET['action'] ) && in_array( $_GET['action'], array( 'spam', 'unspam', 'spamcomment', 'unspamcomment', ) ) ) || + ( isset( $_POST['action'] ) && in_array( $_POST['action'], array( 'editedcomment' ) ) ) || + ( isset( $_GET['for'] ) && ( 'jetpack' == $_GET['for'] ) ) // Moderation via WP.com notifications/WP app/etc. + ) { + if ( $new_status == 'spam' && ( $old_status == 'approved' || $old_status == 'unapproved' || !$old_status ) ) { + return self::submit_spam_comment( $comment->comment_ID ); + } elseif ( $old_status == 'spam' && ( $new_status == 'approved' || $new_status == 'unapproved' ) ) { + return self::submit_nonspam_comment( $comment->comment_ID ); + } + } + + self::update_comment_history( $comment->comment_ID, '', 'status-' . $new_status ); + } + + public static function submit_spam_comment( $comment_id ) { + global $wpdb, $current_user, $current_site; + + $comment_id = (int) $comment_id; + + $comment = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->comments} WHERE comment_ID = %d", $comment_id ) ); + + if ( !$comment ) // it was deleted + return; + + if ( 'spam' != $comment->comment_approved ) + return; + + // use the original version stored in comment_meta if available + $as_submitted = self::sanitize_comment_as_submitted( get_comment_meta( $comment_id, 'akismet_as_submitted', true ) ); + + if ( $as_submitted && is_array( $as_submitted ) && isset( $as_submitted['comment_content'] ) ) + $comment = (object) array_merge( (array)$comment, $as_submitted ); + + $comment->blog = get_option( 'home' ); + $comment->blog_lang = get_locale(); + $comment->blog_charset = get_option('blog_charset'); + $comment->permalink = get_permalink($comment->comment_post_ID); + + if ( is_object($current_user) ) + $comment->reporter = $current_user->user_login; + + if ( is_object($current_site) ) + $comment->site_domain = $current_site->domain; + + $comment->user_role = ''; + if ( isset( $comment->user_ID ) ) + $comment->user_role = Akismet::get_user_roles( $comment->user_ID ); + + if ( self::is_test_mode() ) + $comment->is_test = 'true'; + + $post = get_post( $comment->comment_post_ID ); + $comment->comment_post_modified_gmt = $post->post_modified_gmt; + + $response = Akismet::http_post( Akismet::build_query( $comment ), 'submit-spam' ); + if ( $comment->reporter ) { + self::update_comment_history( $comment_id, '', 'report-spam' ); + update_comment_meta( $comment_id, 'akismet_user_result', 'true' ); + update_comment_meta( $comment_id, 'akismet_user', $comment->reporter ); + } + + do_action('akismet_submit_spam_comment', $comment_id, $response[1]); + } + + public static function submit_nonspam_comment( $comment_id ) { + global $wpdb, $current_user, $current_site; + + $comment_id = (int) $comment_id; + + $comment = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->comments} WHERE comment_ID = %d", $comment_id ) ); + if ( !$comment ) // it was deleted + return; + + // use the original version stored in comment_meta if available + $as_submitted = self::sanitize_comment_as_submitted( get_comment_meta( $comment_id, 'akismet_as_submitted', true ) ); + + if ( $as_submitted && is_array($as_submitted) && isset($as_submitted['comment_content']) ) + $comment = (object) array_merge( (array)$comment, $as_submitted ); + + $comment->blog = get_option( 'home' ); + $comment->blog_lang = get_locale(); + $comment->blog_charset = get_option('blog_charset'); + $comment->permalink = get_permalink( $comment->comment_post_ID ); + $comment->user_role = ''; + + if ( is_object($current_user) ) + $comment->reporter = $current_user->user_login; + + if ( is_object($current_site) ) + $comment->site_domain = $current_site->domain; + + if ( isset( $comment->user_ID ) ) + $comment->user_role = Akismet::get_user_roles($comment->user_ID); + + if ( Akismet::is_test_mode() ) + $comment->is_test = 'true'; + + $post = get_post( $comment->comment_post_ID ); + $comment->comment_post_modified_gmt = $post->post_modified_gmt; + + $response = self::http_post( Akismet::build_query( $comment ), 'submit-ham' ); + if ( $comment->reporter ) { + self::update_comment_history( $comment_id, '', 'report-ham' ); + update_comment_meta( $comment_id, 'akismet_user_result', 'false' ); + update_comment_meta( $comment_id, 'akismet_user', $comment->reporter ); + } + + do_action('akismet_submit_nonspam_comment', $comment_id, $response[1]); + } + + public static function cron_recheck() { + global $wpdb; + + $api_key = self::get_api_key(); + + $status = self::verify_key( $api_key ); + if ( get_option( 'akismet_alert_code' ) || $status == 'invalid' ) { + // since there is currently a problem with the key, reschedule a check for 6 hours hence + wp_schedule_single_event( time() + 21600, 'akismet_schedule_cron_recheck' ); + do_action( 'akismet_scheduled_recheck', 'key-problem-' . get_option( 'akismet_alert_code' ) . '-' . $status ); + return false; + } + + delete_option('akismet_available_servers'); + + $comment_errors = $wpdb->get_col( "SELECT comment_id FROM {$wpdb->commentmeta} WHERE meta_key = 'akismet_error' LIMIT 100" ); + + load_plugin_textdomain( 'akismet' ); + + foreach ( (array) $comment_errors as $comment_id ) { + // if the comment no longer exists, or is too old, remove the meta entry from the queue to avoid getting stuck + $comment = get_comment( $comment_id ); + if ( !$comment || strtotime( $comment->comment_date_gmt ) < strtotime( "-15 days" ) ) { + delete_comment_meta( $comment_id, 'akismet_error' ); + delete_comment_meta( $comment_id, 'akismet_delayed_moderation_email' ); + continue; + } + + add_comment_meta( $comment_id, 'akismet_rechecking', true ); + $status = self::check_db_comment( $comment_id, 'retry' ); + + $event = ''; + if ( $status == 'true' ) { + $event = 'cron-retry-spam'; + } elseif ( $status == 'false' ) { + $event = 'cron-retry-ham'; + } + + // If we got back a legit response then update the comment history + // other wise just bail now and try again later. No point in + // re-trying all the comments once we hit one failure. + if ( !empty( $event ) ) { + delete_comment_meta( $comment_id, 'akismet_error' ); + self::update_comment_history( $comment_id, '', $event ); + update_comment_meta( $comment_id, 'akismet_result', $status ); + // make sure the comment status is still pending. if it isn't, that means the user has already moved it elsewhere. + $comment = get_comment( $comment_id ); + if ( $comment && 'unapproved' == wp_get_comment_status( $comment_id ) ) { + if ( $status == 'true' ) { + wp_spam_comment( $comment_id ); + } elseif ( $status == 'false' ) { + // comment is good, but it's still in the pending queue. depending on the moderation settings + // we may need to change it to approved. + if ( check_comment($comment->comment_author, $comment->comment_author_email, $comment->comment_author_url, $comment->comment_content, $comment->comment_author_IP, $comment->comment_agent, $comment->comment_type) ) + wp_set_comment_status( $comment_id, 1 ); + else if ( get_comment_meta( $comment_id, 'akismet_delayed_moderation_email', true ) ) + wp_notify_moderator( $comment_id ); + } + } + + delete_comment_meta( $comment_id, 'akismet_delayed_moderation_email' ); + } else { + // If this comment has been pending moderation for longer than MAX_DELAY_BEFORE_MODERATION_EMAIL, + // send a moderation email now. + if ( ( intval( gmdate( 'U' ) ) - strtotime( $comment->comment_date_gmt ) ) < self::MAX_DELAY_BEFORE_MODERATION_EMAIL ) { + delete_comment_meta( $comment_id, 'akismet_delayed_moderation_email' ); + wp_notify_moderator( $comment_id ); + } + + delete_comment_meta( $comment_id, 'akismet_rechecking' ); + wp_schedule_single_event( time() + 1200, 'akismet_schedule_cron_recheck' ); + do_action( 'akismet_scheduled_recheck', 'check-db-comment-' . $status ); + return; + } + delete_comment_meta( $comment_id, 'akismet_rechecking' ); + } + + $remaining = $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->commentmeta} WHERE meta_key = 'akismet_error'" ); + if ( $remaining && !wp_next_scheduled('akismet_schedule_cron_recheck') ) { + wp_schedule_single_event( time() + 1200, 'akismet_schedule_cron_recheck' ); + do_action( 'akismet_scheduled_recheck', 'remaining' ); + } + } + + public static function fix_scheduled_recheck() { + $future_check = wp_next_scheduled( 'akismet_schedule_cron_recheck' ); + if ( !$future_check ) { + return; + } + + if ( get_option( 'akismet_alert_code' ) > 0 ) { + return; + } + + $check_range = time() + 1200; + if ( $future_check > $check_range ) { + wp_clear_scheduled_hook( 'akismet_schedule_cron_recheck' ); + wp_schedule_single_event( time() + 300, 'akismet_schedule_cron_recheck' ); + do_action( 'akismet_scheduled_recheck', 'fix-scheduled-recheck' ); + } + } + + public static function add_comment_nonce( $post_id ) { + echo '

'; + wp_nonce_field( 'akismet_comment_nonce_' . $post_id, 'akismet_comment_nonce', FALSE ); + echo '

'; + } + + public static function is_test_mode() { + return defined('AKISMET_TEST_MODE') && AKISMET_TEST_MODE; + } + + public static function allow_discard() { + if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) + return false; + if ( is_user_logged_in() ) + return false; + + return ( get_option( 'akismet_strictness' ) === '1' ); + } + + public static function get_ip_address() { + return isset( $_SERVER['REMOTE_ADDR'] ) ? $_SERVER['REMOTE_ADDR'] : null; + } + + /** + * Do these two comments, without checking the comment_ID, "match"? + * + * @param mixed $comment1 A comment object or array. + * @param mixed $comment2 A comment object or array. + * @return bool Whether the two comments should be treated as the same comment. + */ + private static function comments_match( $comment1, $comment2 ) { + $comment1 = (array) $comment1; + $comment2 = (array) $comment2; + + $comments_match = ( + isset( $comment1['comment_post_ID'], $comment2['comment_post_ID'] ) + && intval( $comment1['comment_post_ID'] ) == intval( $comment2['comment_post_ID'] ) + && ( + // The comment author length max is 255 characters, limited by the TINYTEXT column type. + // If the comment author includes multibyte characters right around the 255-byte mark, they + // may be stripped when the author is saved in the DB, so a 300+ char author may turn into + // a 253-char author when it's saved, not 255 exactly. The longest possible character is + // theoretically 6 bytes, so we'll only look at the first 248 bytes to be safe. + substr( $comment1['comment_author'], 0, 248 ) == substr( $comment2['comment_author'], 0, 248 ) + || substr( stripslashes( $comment1['comment_author'] ), 0, 248 ) == substr( $comment2['comment_author'], 0, 248 ) + || substr( $comment1['comment_author'], 0, 248 ) == substr( stripslashes( $comment2['comment_author'] ), 0, 248 ) + // Certain long comment author names will be truncated to nothing, depending on their encoding. + || ( ! $comment1['comment_author'] && strlen( $comment2['comment_author'] ) > 248 ) + || ( ! $comment2['comment_author'] && strlen( $comment1['comment_author'] ) > 248 ) + ) + && ( + // The email max length is 100 characters, limited by the VARCHAR(100) column type. + // Same argument as above for only looking at the first 93 characters. + substr( $comment1['comment_author_email'], 0, 93 ) == substr( $comment2['comment_author_email'], 0, 93 ) + || substr( stripslashes( $comment1['comment_author_email'] ), 0, 93 ) == substr( $comment2['comment_author_email'], 0, 93 ) + || substr( $comment1['comment_author_email'], 0, 93 ) == substr( stripslashes( $comment2['comment_author_email'] ), 0, 93 ) + // Very long emails can be truncated and then stripped if the [0:100] substring isn't a valid address. + || ( ! $comment1['comment_author_email'] && strlen( $comment2['comment_author_email'] ) > 100 ) + || ( ! $comment2['comment_author_email'] && strlen( $comment1['comment_author_email'] ) > 100 ) + ) + ); + + return $comments_match; + } + + // Does the supplied comment match the details of the one most recently stored in self::$last_comment? + public static function matches_last_comment( $comment ) { + if ( is_object( $comment ) ) + $comment = (array) $comment; + + return self::comments_match( self::$last_comment, $comment ); + } + + private static function get_user_agent() { + return isset( $_SERVER['HTTP_USER_AGENT'] ) ? $_SERVER['HTTP_USER_AGENT'] : null; + } + + private static function get_referer() { + return isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : null; + } + + // return a comma-separated list of role names for the given user + public static function get_user_roles( $user_id ) { + $roles = false; + + if ( !class_exists('WP_User') ) + return false; + + if ( $user_id > 0 ) { + $comment_user = new WP_User( $user_id ); + if ( isset( $comment_user->roles ) ) + $roles = join( ',', $comment_user->roles ); + } + + if ( is_multisite() && is_super_admin( $user_id ) ) { + if ( empty( $roles ) ) { + $roles = 'super_admin'; + } else { + $comment_user->roles[] = 'super_admin'; + $roles = join( ',', $comment_user->roles ); + } + } + + return $roles; + } + + // filter handler used to return a spam result to pre_comment_approved + public static function last_comment_status( $approved, $comment ) { + if ( is_null( self::$last_comment_result ) ) { + // We didn't have reason to store the result of the last check. + return $approved; + } + + // Only do this if it's the correct comment + if ( ! self::matches_last_comment( $comment ) ) { + self::log( "comment_is_spam mismatched comment, returning unaltered $approved" ); + return $approved; + } + + // bump the counter here instead of when the filter is added to reduce the possibility of overcounting + if ( $incr = apply_filters('akismet_spam_count_incr', 1) ) + update_option( 'akismet_spam_count', get_option('akismet_spam_count') + $incr ); + + return self::$last_comment_result; + } + + /** + * If Akismet is temporarily unreachable, we don't want to "spam" the blogger with + * moderation emails for comments that will be automatically cleared or spammed on + * the next retry. + * + * For comments that will be rechecked later, empty the list of email addresses that + * the moderation email would be sent to. + * + * @param array $emails An array of email addresses that the moderation email will be sent to. + * @param int $comment_id The ID of the relevant comment. + * @return array An array of email addresses that the moderation email will be sent to. + */ + public static function disable_moderation_emails_if_unreachable( $emails, $comment_id ) { + if ( ! empty( self::$prevent_moderation_email_for_these_comments ) && ! empty( $emails ) ) { + $comment = get_comment( $comment_id ); + + foreach ( self::$prevent_moderation_email_for_these_comments as $possible_match ) { + if ( self::comments_match( $possible_match, $comment ) ) { + update_comment_meta( $comment_id, 'akismet_delayed_moderation_email', true ); + return array(); + } + } + } + + return $emails; + } + + public static function _cmp_time( $a, $b ) { + return $a['time'] > $b['time'] ? -1 : 1; + } + + public static function _get_microtime() { + $mtime = explode( ' ', microtime() ); + return $mtime[1] + $mtime[0]; + } + + /** + * Make a POST request to the Akismet API. + * + * @param string $request The body of the request. + * @param string $path The path for the request. + * @param string $ip The specific IP address to hit. + * @return array A two-member array consisting of the headers and the response body, both empty in the case of a failure. + */ + public static function http_post( $request, $path, $ip=null ) { + + $akismet_ua = sprintf( 'WordPress/%s | Akismet/%s', $GLOBALS['wp_version'], constant( 'AKISMET_VERSION' ) ); + $akismet_ua = apply_filters( 'akismet_ua', $akismet_ua ); + + $content_length = strlen( $request ); + + $api_key = self::get_api_key(); + $host = self::API_HOST; + + if ( !empty( $api_key ) ) + $host = $api_key.'.'.$host; + + $http_host = $host; + // use a specific IP if provided + // needed by Akismet_Admin::check_server_connectivity() + if ( $ip && long2ip( ip2long( $ip ) ) ) { + $http_host = $ip; + } + + $http_args = array( + 'body' => $request, + 'headers' => array( + 'Content-Type' => 'application/x-www-form-urlencoded; charset=' . get_option( 'blog_charset' ), + 'Host' => $host, + 'User-Agent' => $akismet_ua, + ), + 'httpversion' => '1.0', + 'timeout' => 15 + ); + + $akismet_url = $http_akismet_url = "http://{$http_host}/1.1/{$path}"; + + /** + * Try SSL first; if that fails, try without it and don't try it again for a while. + */ + + $ssl = $ssl_failed = false; + + // Check if SSL requests were disabled fewer than X hours ago. + $ssl_disabled = get_option( 'akismet_ssl_disabled' ); + + if ( $ssl_disabled && $ssl_disabled < ( time() - 60 * 60 * 24 ) ) { // 24 hours + $ssl_disabled = false; + delete_option( 'akismet_ssl_disabled' ); + } + else if ( $ssl_disabled ) { + do_action( 'akismet_ssl_disabled' ); + } + + if ( ! $ssl_disabled && function_exists( 'wp_http_supports') && ( $ssl = wp_http_supports( array( 'ssl' ) ) ) ) { + $akismet_url = set_url_scheme( $akismet_url, 'https' ); + + do_action( 'akismet_https_request_pre' ); + } + + $response = wp_remote_post( $akismet_url, $http_args ); + + Akismet::log( compact( 'akismet_url', 'http_args', 'response' ) ); + + if ( $ssl && is_wp_error( $response ) ) { + do_action( 'akismet_https_request_failure', $response ); + + // Intermittent connection problems may cause the first HTTPS + // request to fail and subsequent HTTP requests to succeed randomly. + // Retry the HTTPS request once before disabling SSL for a time. + $response = wp_remote_post( $akismet_url, $http_args ); + + Akismet::log( compact( 'akismet_url', 'http_args', 'response' ) ); + + if ( is_wp_error( $response ) ) { + $ssl_failed = true; + + do_action( 'akismet_https_request_failure', $response ); + + do_action( 'akismet_http_request_pre' ); + + // Try the request again without SSL. + $response = wp_remote_post( $http_akismet_url, $http_args ); + + Akismet::log( compact( 'http_akismet_url', 'http_args', 'response' ) ); + } + } + + if ( is_wp_error( $response ) ) { + do_action( 'akismet_request_failure', $response ); + + return array( '', '' ); + } + + if ( $ssl_failed ) { + // The request failed when using SSL but succeeded without it. Disable SSL for future requests. + update_option( 'akismet_ssl_disabled', time() ); + + do_action( 'akismet_https_disabled' ); + } + + $simplified_response = array( $response['headers'], $response['body'] ); + + self::update_alert( $simplified_response ); + + return $simplified_response; + } + + // given a response from an API call like check_key_status(), update the alert code options if an alert is present. + private static function update_alert( $response ) { + $code = $msg = null; + if ( isset( $response[0]['x-akismet-alert-code'] ) ) { + $code = $response[0]['x-akismet-alert-code']; + $msg = $response[0]['x-akismet-alert-msg']; + } + + // only call update_option() if the value has changed + if ( $code != get_option( 'akismet_alert_code' ) ) { + if ( ! $code ) { + delete_option( 'akismet_alert_code' ); + delete_option( 'akismet_alert_msg' ); + } + else { + update_option( 'akismet_alert_code', $code ); + update_option( 'akismet_alert_msg', $msg ); + } + } + } + + public static function load_form_js() { + // WP < 3.3 can't enqueue a script this late in the game and still have it appear in the footer. + // Once we drop support for everything pre-3.3, this can change back to a single enqueue call. + wp_register_script( 'akismet-form', plugin_dir_url( __FILE__ ) . '_inc/form.js', array(), AKISMET_VERSION, true ); + add_action( 'wp_footer', array( 'Akismet', 'print_form_js' ) ); + add_action( 'admin_footer', array( 'Akismet', 'print_form_js' ) ); + } + + public static function print_form_js() { + wp_print_scripts( 'akismet-form' ); + } + + public static function inject_ak_js( $fields ) { + echo '

'; + echo ''; + echo '

'; + } + + private static function bail_on_activation( $message, $deactivate = true ) { +?> + + + + + + +

+ + + $plugin ) { + if ( $plugin === $akismet ) { + $plugins[$i] = false; + $update = true; + } + } + + if ( $update ) { + update_option( 'active_plugins', array_filter( $plugins ) ); + } + } + exit; + } + + public static function view( $name, array $args = array() ) { + $args = apply_filters( 'akismet_view_arguments', $args, $name ); + + foreach ( $args AS $key => $val ) { + $$key = $val; + } + + load_plugin_textdomain( 'akismet' ); + + $file = AKISMET__PLUGIN_DIR . 'views/'. $name . '.php'; + + include( $file ); + } + + /** + * Attached to activate_{ plugin_basename( __FILES__ ) } by register_activation_hook() + * @static + */ + public static function plugin_activation() { + if ( version_compare( $GLOBALS['wp_version'], AKISMET__MINIMUM_WP_VERSION, '<' ) ) { + load_plugin_textdomain( 'akismet' ); + + $message = ''.sprintf(esc_html__( 'Akismet %s requires WordPress %s or higher.' , 'akismet'), AKISMET_VERSION, AKISMET__MINIMUM_WP_VERSION ).' '.sprintf(__('Please upgrade WordPress to a current version, or downgrade to version 2.4 of the Akismet plugin.', 'akismet'), 'https://codex.wordpress.org/Upgrading_WordPress', 'https://wordpress.org/extend/plugins/akismet/download/'); + + Akismet::bail_on_activation( $message ); + } + } + + /** + * Removes all connection options + * @static + */ + public static function plugin_deactivation( ) { + return self::deactivate_key( self::get_api_key() ); + } + + /** + * Essentially a copy of WP's build_query but one that doesn't expect pre-urlencoded values. + * + * @param array $args An array of key => value pairs + * @return string A string ready for use as a URL query string. + */ + public static function build_query( $args ) { + return _http_build_query( $args, '', '&' ); + } + + /** + * Log debugging info to the error log. + * + * Enabled when WP_DEBUG_LOG is enabled (and WP_DEBUG, since according to + * core, "WP_DEBUG_DISPLAY and WP_DEBUG_LOG perform no function unless + * WP_DEBUG is true), but can be disabled via the akismet_debug_log filter. + * + * @param mixed $akismet_debug The data to log. + */ + public static function log( $akismet_debug ) { + if ( apply_filters( 'akismet_debug_log', defined( 'WP_DEBUG' ) && WP_DEBUG && defined( 'WP_DEBUG_LOG' ) && WP_DEBUG_LOG ) ) { + error_log( print_r( compact( 'akismet_debug' ), true ) ); + } + } + + public static function pre_check_pingback( $method ) { + if ( $method !== 'pingback.ping' ) + return; + + global $wp_xmlrpc_server; + + if ( !is_object( $wp_xmlrpc_server ) ) + return false; + + // Lame: tightly coupled with the IXR class. + $args = $wp_xmlrpc_server->message->params; + + if ( !empty( $args[1] ) ) { + $post_id = url_to_postid( $args[1] ); + + // If this gets through the pre-check, make sure we properly identify the outbound request as a pingback verification + Akismet::pingback_forwarded_for( null, $args[0] ); + add_filter( 'http_request_args', array( 'Akismet', 'pingback_forwarded_for' ), 10, 2 ); + + $comment = array( + 'comment_author_url' => $args[0], + 'comment_post_ID' => $post_id, + 'comment_author' => '', + 'comment_author_email' => '', + 'comment_content' => '', + 'comment_type' => 'pingback', + 'akismet_pre_check' => '1', + 'comment_pingback_target' => $args[1], + ); + + $comment = Akismet::auto_check_comment( $comment ); + + if ( isset( $comment['akismet_result'] ) && 'true' == $comment['akismet_result'] ) { + // Lame: tightly coupled with the IXR classes. Unfortunately the action provides no context and no way to return anything. + $wp_xmlrpc_server->error( new IXR_Error( 0, 'Invalid discovery target' ) ); + } + } + } + + public static function pingback_forwarded_for( $r, $url ) { + static $urls = array(); + + // Call this with $r == null to prime the callback to add headers on a specific URL + if ( is_null( $r ) && !in_array( $url, $urls ) ) { + $urls[] = $url; + } + + // Add X-Pingback-Forwarded-For header, but only for requests to a specific URL (the apparent pingback source) + if ( is_array( $r ) && is_array( $r['headers'] ) && !isset( $r['headers']['X-Pingback-Forwarded-For'] ) && in_array( $url, $urls ) ) { + $remote_ip = preg_replace( '/[^a-fx0-9:.,]/i', '', $_SERVER['REMOTE_ADDR'] ); + + // Note: this assumes REMOTE_ADDR is correct, and it may not be if a reverse proxy or CDN is in use + $r['headers']['X-Pingback-Forwarded-For'] = $remote_ip; + + // Also identify the request as a pingback verification in the UA string so it appears in logs + $r['user-agent'] .= '; verifying pingback from ' . $remote_ip; + } + + return $r; + } + + /** + * Ensure that we are loading expected scalar values from akismet_as_submitted commentmeta. + * + * @param mixed $meta_value + * @return mixed + */ + private static function sanitize_comment_as_submitted( $meta_value ) { + if ( empty( $meta_value ) ) { + return $meta_value; + } + + $meta_value = (array) $meta_value; + + foreach ( $meta_value as $key => $value ) { + if ( ! isset( self::$comment_as_submitted_allowed_keys[$key] ) || ! is_scalar( $value ) ) { + unset( $meta_value[$key] ); + } + } + + return $meta_value; + } +} diff --git a/plugins/akismet/index.php b/plugins/akismet/index.php new file mode 100644 index 0000000..cf879a5 --- /dev/null +++ b/plugins/akismet/index.php @@ -0,0 +1,2 @@ + + +

+ +
+ + spam > 0 ) : ?> + +
+ + + + + + +
    +
  • +

    + spam );?> + spam, 'akismet' ) ); ?> +
  • +
  • +

    + spam );?> + spam, 'akismet' ) ); ?> +
  • +
  • +

    + accuracy ); ?>% + missed_spam, 'akismet' ), number_format( $stat_totals['all']->missed_spam ) ); ?> + | + false_positives, 'akismet' ), number_format( $stat_totals['all']->false_positives ) ); ?> +
  • +
+
+
+ + + + +
+ +
+
+
+

+

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+

+ wp_http_supports' ); ?> +

+
+

+ +

+
+
+

+

+
+ + spam folder older than 1 day is deleted automatically.', + 'Spam in the spam folder older than %2$d days is deleted automatically.', + $delete_interval, + 'akismet' + ), + admin_url( 'edit-comments.php?comment_status=spam' ), + $delete_interval + ); + + ?> +
+
+
+ +
+ +
+ + +
+ + + +
+
+
+
+
+
+
+
+
+
+

+

+
+ + + + + + + + + + + next_billing_date ) : ?> + + + + + + +
+ + account_name ); ?> +
+ + status ) : + esc_html_e( 'Cancelled', 'akismet' ); + elseif ( 'suspended' == $akismet_user->status ) : + esc_html_e( 'Suspended', 'akismet' ); + elseif ( 'missing' == $akismet_user->status ) : + esc_html_e( 'Missing', 'akismet' ); + elseif ( 'no-sub' == $akismet_user->status ) : + esc_html_e( 'No Subscription Found', 'akismet' ); + else : + esc_html_e( 'Active', 'akismet' ); + endif; ?> +
+ + next_billing_date ); ?> +
+
+
+
+ ( $akismet_user->account_type == 'free-api-key' && $akismet_user->status == 'active' ? __( 'Upgrade' , 'akismet') : __( 'Change' , 'akismet') ), 'redirect' => 'upgrade' ) ); ?> +
+
+
+
+
+
+
+ + + +
+
\ No newline at end of file diff --git a/plugins/akismet/views/get.php b/plugins/akismet/views/get.php new file mode 100644 index 0000000..4bd6a9c --- /dev/null +++ b/plugins/akismet/views/get.php @@ -0,0 +1,6 @@ +
+ + + + +
\ No newline at end of file diff --git a/plugins/akismet/views/notice.php b/plugins/akismet/views/notice.php new file mode 100644 index 0000000..8e6e508 --- /dev/null +++ b/plugins/akismet/views/notice.php @@ -0,0 +1,123 @@ + +
+
+
+
A
+
+
+ +
+
+
Almost done - activate Akismet and say goodbye to spam', 'akismet');?>
+
+
+
+ +
+

+

+ +

+ +
+ +

upgrade WordPress to a current version, or downgrade to version 2.4 of the Akismet plugin.', 'akismet'), 'https://codex.wordpress.org/Upgrading_WordPress', 'https://wordpress.org/extend/plugins/akismet/download/');?>

+ +
+

+

+

https://akismet.com/errors/' . $code . '' ); + + ?> +

+
+ +
+

+

+ +

+
+ +
+

+

gethostbynamel function. Akismet cannot work correctly until this is fixed. Please contact your web host or firewall administrator and give them this information about Akismet’s system requirements.', 'akismet'), 'https://blog.akismet.com/akismet-hosting-faq/'); ?>

+
+ +
+

+

our guide about firewalls.', 'akismet'), 'https://blog.akismet.com/akismet-hosting-faq/'); ?>

+
+ +
+

+

update your payment details.', 'akismet'), 'https://akismet.com/account/'); ?>

+
+ +
+

+

Akismet account page to reactivate your subscription.', 'akismet'), 'https://akismet.com/account/'); ?>

+
+ +
+

+

Akismet support for assistance.', 'akismet'), 'https://akismet.com/contact/'); ?>

+
+ +
+

+

contributing a token amount.', 'akismet'), 'https://akismet.com/account/upgrade/'); ?>

+
+ +
+

+

Akismet support for assistance.', 'akismet'), 'https://akismet.com/contact/'); ?>

+
+ +
+

+

+ sign into your account and choose one.', 'akismet'), 'https://akismet.com/account/upgrade/' ); ?> +

+ contact our support team with any questions.', 'akismet' ), 'https://akismet.com/contact/' ); ?> +

+
+ +
+

+
+ +
+

+
+ +
+

+
+ +
+

+

our guide about firewalls and check your server configuration.', 'akismet'), 'https://blog.akismet.com/akismet-hosting-faq/'); ?>

+
+ +
+ +

+

+ purchase additional Pro subscriptions or upgrade to an Enterprise subscription that allows the use of Akismet on unlimited sites.', 'akismet' ), 'https://docs.akismet.com/billing/add-more-sites/' ); ?> +

+ contact our support team with any questions.', 'akismet' ), 'https://akismet.com/contact/'); ?> +

+ +

+

+ upgrade to an Enterprise subscription, which covers an unlimited number of sites.', 'akismet'), 'https://akismet.com/account/upgrade/' ); ?>

+

+ contact our support team with any questions.', 'akismet' ), 'https://akismet.com/contact/'); ?>

+

+ +
+ \ No newline at end of file diff --git a/plugins/akismet/views/start.php b/plugins/akismet/views/start.php new file mode 100644 index 0000000..751da6e --- /dev/null +++ b/plugins/akismet/views/start.php @@ -0,0 +1,97 @@ +
status, array( 'active', 'active-dunning', 'no-sub', 'missing', 'cancelled', 'suspended' ) ) ) : + if ( in_array( $akismet_user->status, array( 'no-sub', 'missing' ) ) ) :?> +

+
+
+ + user_email ); ?> +
+
+ + + + + +
+
+status == 'cancelled' ) :?> +

+
+
+ + user_email ) ); ?> +
+
+ + + + + +
+
+status == 'suspended' ) : ?> +

+
+ +

user_email ) ); ?>

+

+ +
+ +

+
+
+ + user_email ); ?> +
+
+ + + + +
+
+ +
+
+ +

+
+ __( 'Sign up with a different email address' , 'akismet'), 'classes' => array( 'right', 'button', 'button-secondary' ) ) ); ?> +
+
+
+ +

+
+
+ + + + +
+
+ +

+
+
+ +

+
+ __( 'Get your API key' , 'akismet'), 'classes' => array( 'right', 'button', 'button-primary' ) ) ); ?> +
+
+
+ +

+
+
+ + + + +
+
+
\ No newline at end of file diff --git a/plugins/akismet/views/stats.php b/plugins/akismet/views/stats.php new file mode 100644 index 0000000..a536f3a --- /dev/null +++ b/plugins/akismet/views/stats.php @@ -0,0 +1,4 @@ +
+

+ +
\ No newline at end of file diff --git a/plugins/akismet/views/strict.php b/plugins/akismet/views/strict.php new file mode 100644 index 0000000..83d7a50 --- /dev/null +++ b/plugins/akismet/views/strict.php @@ -0,0 +1,17 @@ +
+ + + +

+ +

+

+ +

+
diff --git a/plugins/akismet/wrapper.php b/plugins/akismet/wrapper.php new file mode 100644 index 0000000..a77d4ce --- /dev/null +++ b/plugins/akismet/wrapper.php @@ -0,0 +1,213 @@ +strpos( $name, 'display_settings_page_' ) === 0 ) { + return $this->display_settings_page( $this->substr( $name, 22 ) ); + } + $error = __( sprintf( "Method %s doesn't exist", $name ), 'all-in-one-seo-pack' ); + if ( class_exists( 'BadMethodCallException' ) ) { + throw new BadMethodCallException( $error ); + } + throw new Exception( $error ); + } + + /** + * All_in_One_SEO_Pack_Module constructor. + */ + function __construct() { + if ( empty( $this->file ) ) { + $this->file = __FILE__; + } + $this->plugin_name = AIOSEOP_PLUGIN_NAME; + $this->plugin_path = array(); +// $this->plugin_path['dir'] = plugin_dir_path( $this->file ); + $this->plugin_path['basename'] = plugin_basename( $this->file ); + $this->plugin_path['dirname'] = dirname( $this->plugin_path['basename'] ); + $this->plugin_path['url'] = plugin_dir_url( $this->file ); + $this->plugin_path['images_url'] = $this->plugin_path['url'] . 'images'; + $this->script_data['plugin_path'] = $this->plugin_path; + } + + /** + * Get options for module, stored individually or together. + */ + function get_class_option() { + $option_name = $this->get_option_name(); + if ( $this->store_option || $option_name == $this->parent_option ) { + return get_option( $option_name ); + } else { + $option = get_option( $this->parent_option ); + if ( isset( $option['modules'] ) && isset( $option['modules'][ $option_name ] ) ) { + return $option['modules'][ $option_name ]; + } + } + + return false; + } + + /** + * Update options for module, stored individually or together. + * + * @param $option_data + * @param bool $option_name + * + * @return bool + */ + function update_class_option( $option_data, $option_name = false ) { + if ( $option_name == false ) { + $option_name = $this->get_option_name(); + } + if ( $this->store_option || $option_name == $this->parent_option ) { + return update_option( $option_name, $option_data ); + } else { + $option = get_option( $this->parent_option ); + if ( ! isset( $option['modules'] ) ) { + $option['modules'] = array(); + } + $option['modules'][ $option_name ] = $option_data; + + return update_option( $this->parent_option, $option ); + } + } + + /** + * Delete options for module, stored individually or together. + * + * @param bool $delete + * + * @return bool + */ + function delete_class_option( $delete = false ) { + $option_name = $this->get_option_name(); + if ( $this->store_option || $delete ) { + delete_option( $option_name ); + } else { + $option = get_option( $this->parent_option ); + if ( isset( $option['modules'] ) && isset( $option['modules'][ $option_name ] ) ) { + unset( $option['modules'][ $option_name ] ); + + return update_option( $this->parent_option, $option ); + } + } + + return false; + } + + /** + * Get the option name with prefix. + */ + function get_option_name() { + if ( ! isset( $this->option_name ) || empty( $this->option_name ) ) { + $this->option_name = $this->prefix . 'options'; + } + + return $this->option_name; + } + + /** + * Convenience function to see if an option is set. + * + * @param string $option + * + * @param null $location + * + * @return bool + */ + function option_isset( $option, $location = null ) { + $prefix = $this->get_prefix( $location ); + $opt = $prefix . $option; + + return ( isset( $this->options[ $opt ] ) && $this->options[ $opt ] ); + } + + /*** Case conversion; handle non UTF-8 encodings and fallback ** + * + * @param $str + * @param string $mode + * + * @return string + */ + + function convert_case( $str, $mode = 'upper' ) { + static $charset = null; + if ( $charset == null ) { + $charset = get_bloginfo( 'charset' ); + } + $str = (string) $str; + if ( $mode == 'title' ) { + if ( function_exists( 'mb_convert_case' ) ) { + return mb_convert_case( $str, MB_CASE_TITLE, $charset ); + } else { + return ucwords( $str ); + } + } + + if ( $charset == 'UTF-8' ) { + global $UTF8_TABLES; + include_once( AIOSEOP_PLUGIN_DIR . 'inc/aioseop_UTF8.php' ); + if ( is_array( $UTF8_TABLES ) ) { + if ( $mode == 'upper' ) { + return strtr( $str, $UTF8_TABLES['strtoupper'] ); + } + if ( $mode == 'lower' ) { + return strtr( $str, $UTF8_TABLES['strtolower'] ); + } + } + } + + if ( $mode == 'upper' ) { + if ( function_exists( 'mb_strtoupper' ) ) { + return mb_strtoupper( $str, $charset ); + } else { + return strtoupper( $str ); + } + } + + if ( $mode == 'lower' ) { + if ( function_exists( 'mb_strtolower' ) ) { + return mb_strtolower( $str, $charset ); + } else { + return strtolower( $str ); + } + } + + return $str; + } + + /** + * Convert a string to lower case + * Compatible with mb_strtolower(), an UTF-8 friendly replacement for strtolower() + * + * @param $str + * + * @return string + */ + function strtolower( $str ) { + return $this->convert_case( $str, 'lower' ); + } + + /** + * Convert a string to upper case + * Compatible with mb_strtoupper(), an UTF-8 friendly replacement for strtoupper() + * + * @param $str + * + * @return string + */ + function strtoupper( $str ) { + return $this->convert_case( $str, 'upper' ); + } + + /** + * Convert a string to title case + * Compatible with mb_convert_case(), an UTF-8 friendly replacement for ucwords() + * + * @param $str + * + * @return string + */ + function ucwords( $str ) { + return $this->convert_case( $str, 'title' ); + } + + /** + * Wrapper for strlen() - uses mb_strlen() if possible. + * + * @param $string + * + * @return int + */ + function strlen( $string ) { + if ( function_exists( 'mb_strlen' ) ) { + return mb_strlen( $string ); + } + + return strlen( $string ); + } + + /** + * Wrapper for substr() - uses mb_substr() if possible. + * + * @param $string + * @param int $start + * @param int $length + * + * @return mixed + */ + function substr( $string, $start = 0, $length = 2147483647 ) { + $args = func_get_args(); + if ( function_exists( 'mb_substr' ) ) { + return call_user_func_array( 'mb_substr', $args ); + } + + return call_user_func_array( 'substr', $args ); + } + + /** + * Wrapper for strpos() - uses mb_strpos() if possible. + * + * @param $haystack + * @param string $needle + * + * @param int $offset + * + * @return bool|int + */ + function strpos( $haystack, $needle, $offset = 0 ) { + if ( function_exists( 'mb_strpos' ) ) { + return mb_strpos( $haystack, $needle, $offset ); + } + + return strpos( $haystack, $needle, $offset ); + } + + /** + * Wrapper for strrpos() - uses mb_strrpos() if possible. + * + * @param $haystack + * @param string $needle + * + * @param int $offset + * + * @return bool|int + */ + function strrpos( $haystack, $needle, $offset = 0 ) { + if ( function_exists( 'mb_strrpos' ) ) { + return mb_strrpos( $haystack, $needle, $offset ); + } + + return strrpos( $haystack, $needle, $offset ); + } + + /** + * convert xml string to php array - useful to get a serializable value + * + * @param string $xmlstr + * + * @return array + * + * @author Adrien aka Gaarf & contributors + * @see http://gaarf.info/2009/08/13/xml-string-to-php-array/ + */ + function html_string_to_array( $xmlstr ) { + if ( ! class_exists( 'DOMDocument' ) ) { + return array(); + } else { + $doc = new DOMDocument(); + $doc->loadHTML( $xmlstr ); + + return $this->domnode_to_array( $doc->documentElement ); + } + } + + /** + * @param $xmlstr + * + * @return array|string + */ + function xml_string_to_array( $xmlstr ) { + if ( ! class_exists( 'DOMDocument' ) ) { + return array(); + } else { + $doc = new DOMDocument(); + $doc->loadXML( $xmlstr ); + + return $this->domnode_to_array( $doc->documentElement ); + } + } + + /** + * @param DOMElement $node + * + * @return array|string + */ + function domnode_to_array( $node ) { + switch ( $node->nodeType ) { + case XML_CDATA_SECTION_NODE: + case XML_TEXT_NODE: + return trim( $node->textContent ); + break; + case XML_ELEMENT_NODE: + $output = array(); + for ( $i = 0, $m = $node->childNodes->length; $i < $m; $i ++ ) { + $child = $node->childNodes->item( $i ); + $v = $this->domnode_to_array( $child ); + if ( isset( $child->tagName ) ) { + $t = $child->tagName; + if ( ! isset( $output[ $t ] ) ) { + $output[ $t ] = array(); + } + if ( is_array( $output ) ) { + $output[ $t ][] = $v; + } + } elseif ( $v || $v === '0' ) { + $output = (string) $v; + } + } + if ( $node->attributes->length && ! is_array( $output ) ) //Has attributes but isn't an array + { + $output = array( '@content' => $output ); + } //Change output into an array. + if ( is_array( $output ) ) { + if ( $node->attributes->length ) { + $a = array(); + foreach ( $node->attributes as $attrName => $attrNode ) { + $a[ $attrName ] = (string) $attrNode->value; + } + $output['@attributes'] = $a; + } + foreach ( $output as $t => $v ) { + if ( is_array( $v ) && count( $v ) == 1 && $t != '@attributes' ) { + $output[ $t ] = $v[0]; + } + } + } + } + if ( empty( $output ) ) { + return ''; + } + + return $output; + } + + /*** adds support for using %cf_(name of field)% for using custom fields / Advanced Custom Fields in titles / descriptions etc. ** + * + * @param $format + * + * @return mixed + */ + function apply_cf_fields( $format ) { + return preg_replace_callback( '/%cf_([^%]*?)%/', array( $this, 'cf_field_replace' ), $format ); + } + + /** + * @param $matches + * + * @return bool|mixed|string + */ + function cf_field_replace( $matches ) { + $result = ''; + if ( ! empty( $matches ) ) { + if ( ! empty( $matches[1] ) ) { + if ( function_exists( 'get_field' ) ) { + $result = get_field( $matches[1] ); + } + if ( empty( $result ) ) { + global $post; + if ( ! empty( $post ) ) { + $result = get_post_meta( $post->ID, $matches[1], true ); + } + } + if ( empty( $result ) ) { + $result = $matches[0]; + } + } else { + $result = $matches[0]; + } + } + $result = strip_tags( $result ); + + return $result; + } + + /** + * Returns child blogs of parent in a multisite. + */ + function get_child_blogs() { + global $wpdb, $blog_id; + $site_id = $wpdb->siteid; + if ( is_multisite() ) { + if ( $site_id != $blog_id ) { + return false; + } + + return $wpdb->get_col( "SELECT blog_id FROM {$wpdb->blogs} WHERE site_id = {$blog_id} AND site_id != blog_id" ); + } + + return false; + } + + /** + * Checks if the plugin is active on a given blog by blogid on a multisite. + * + * @param bool $bid + * + * @return bool + */ + function is_aioseop_active_on_blog( $bid = false ) { + global $blog_id; + if ( empty( $bid ) || ( $bid == $blog_id ) || ! is_multisite() ) { + return true; + } + if ( ! function_exists( 'is_plugin_active_for_network' ) ) { + require_once( ABSPATH . '/wp-admin/includes/plugin.php' ); + } + if ( is_plugin_active_for_network( AIOSEOP_PLUGIN_BASENAME ) ) { + return true; + } + + return in_array( AIOSEOP_PLUGIN_BASENAME, (array) get_blog_option( $bid, 'active_plugins', array() ) ); + } + + /** + * @param $list + * @param string $quote + * + * @return string + */ + function quote_list_for_regex( $list, $quote = '/' ) { + $regex = ''; + $cont = 0; + foreach ( $list as $l ) { + if ( $cont ) { + $regex .= '|'; + } + $cont = 1; + $regex .= preg_quote( trim( $l ), $quote ); + } + + return $regex; + } + + // original code thanks to Sean M. Brown -- http://smbrown.wordpress.com/2009/04/29/verify-googlebot-forward-reverse-dns/ + /** + * @return bool + */ + function is_good_bot() { + $botlist = array( + 'Yahoo! Slurp' => 'crawl.yahoo.net', + 'googlebot' => '.googlebot.com', + 'msnbot' => 'search.msn.com', + ); + $botlist = apply_filters( $this->prefix . 'botlist', $botlist ); + if ( ! empty( $botlist ) ) { + if ( ! isset( $_SERVER['HTTP_USER_AGENT'] ) ) { + return false; + } + $ua = $_SERVER['HTTP_USER_AGENT']; + $uas = $this->quote_list_for_regex( $botlist ); + if ( preg_match( '/' . $uas . '/i', $ua ) ) { + $ip = $_SERVER['REMOTE_ADDR']; + $hostname = gethostbyaddr( $ip ); + $ip_by_hostname = gethostbyname( $hostname ); + if ( $ip_by_hostname == $ip ) { + $hosts = array_values( $botlist ); + foreach ( $hosts as $k => $h ) { + $hosts[ $k ] = preg_quote( $h ) . '$'; + } + $hosts = join( '|', $hosts ); + if ( preg_match( '/' . $hosts . '/i', $hostname ) ) { + return true; + } + } + } + + return false; + } + } + + /** + * @return array + */ + function default_bad_bots() { + $botlist = array( + 'Abonti', + 'aggregator', + 'AhrefsBot', + 'asterias', + 'BDCbot', + 'BLEXBot', + 'BuiltBotTough', + 'Bullseye', + 'BunnySlippers', + 'ca-crawler', + 'CCBot', + 'Cegbfeieh', + 'CheeseBot', + 'CherryPicker', + 'CopyRightCheck', + 'cosmos', + 'Crescent', + 'discobot', + 'DittoSpyder', + 'DotBot', + 'Download Ninja', + 'EasouSpider', + 'EmailCollector', + 'EmailSiphon', + 'EmailWolf', + 'EroCrawler', + 'Exabot', + 'ExtractorPro', + 'Fasterfox', + 'FeedBooster', + 'Foobot', + 'Genieo', + 'grub-client', + 'Harvest', + 'hloader', + 'httplib', + 'HTTrack', + 'humanlinks', + 'ieautodiscovery', + 'InfoNaviRobot', + 'IstellaBot', + 'Java/1.', + 'JennyBot', + 'k2spider', + 'Kenjin Spider', + 'Keyword Density/0.9', + 'larbin', + 'LexiBot', + 'libWeb', + 'libwww', + 'LinkextractorPro', + 'linko', + 'LinkScan/8.1a Unix', + 'LinkWalker', + 'LNSpiderguy', + 'lwp-trivial', + 'magpie', + 'Mata Hari', + 'MaxPointCrawler', + 'MegaIndex', + 'Microsoft URL Control', + 'MIIxpc', + 'Mippin', + 'Missigua Locator', + 'Mister PiX', + 'MJ12bot', + 'moget', + 'MSIECrawler', + 'NetAnts', + 'NICErsPRO', + 'Niki-Bot', + 'NPBot', + 'Nutch', + 'Offline Explorer', + 'Openfind', + 'panscient.com', + 'PHP/5.{', + 'ProPowerBot/2.14', + 'ProWebWalker', + 'Python-urllib', + 'QueryN Metasearch', + 'RepoMonkey', + 'SemrushBot', + 'SISTRIX', + 'sitecheck.Internetseer.com', + 'SiteSnagger', + 'SnapPreviewBot', + 'Sogou', + 'SpankBot', + 'spanner', + 'spbot', + 'Spinn3r', + 'suzuran', + 'Szukacz/1.4', + 'Teleport', + 'Telesoft', + 'The Intraformant', + 'TheNomad', + 'TightTwatBot', + 'Titan', + 'toCrawl/UrlDispatcher', + 'True_Robot', + 'turingos', + 'TurnitinBot', + 'UbiCrawler', + 'UnisterBot', + 'URLy Warning', + 'VCI', + 'WBSearchBot', + 'Web Downloader/6.9', + 'Web Image Collector', + 'WebAuto', + 'WebBandit', + 'WebCopier', + 'WebEnhancer', + 'WebmasterWorldForumBot', + 'WebReaper', + 'WebSauger', + 'Website Quester', + 'Webster Pro', + 'WebStripper', + 'WebZip', + 'Wotbox', + 'wsr-agent', + 'WWW-Collector-E', + 'Xenu', + 'Zao', + 'Zeus', + 'ZyBORG', + 'coccoc', + 'Incutio', + 'lmspider', + 'memoryBot', + 'SemrushBot', + 'serf', + 'Unknown', + 'uptime files', + ); + + return $botlist; + } + + /** + * @return bool + */ + function is_bad_bot() { + $botlist = $this->default_bad_bots(); + $botlist = apply_filters( $this->prefix . 'badbotlist', $botlist ); + if ( ! empty( $botlist ) ) { + if ( ! isset( $_SERVER['HTTP_USER_AGENT'] ) ) { + return false; + } + $ua = $_SERVER['HTTP_USER_AGENT']; + $uas = $this->quote_list_for_regex( $botlist ); + if ( preg_match( '/' . $uas . '/i', $ua ) ) { + return true; + } + } + + return false; + } + + /** + * @return array + */ + function default_bad_referers() { + $referlist = array( + 'semalt.com', + 'kambasoft.com', + 'savetubevideo.com', + 'buttons-for-website.com', + 'sharebutton.net', + 'soundfrost.org', + 'srecorder.com', + 'softomix.com', + 'softomix.net', + 'myprintscreen.com', + 'joinandplay.me', + 'fbfreegifts.com', + 'openmediasoft.com', + 'zazagames.org', + 'extener.org', + 'openfrost.com', + 'openfrost.net', + 'googlsucks.com', + 'best-seo-offer.com', + 'buttons-for-your-website.com', + 'www.Get-Free-Traffic-Now.com', + 'best-seo-solution.com', + 'buy-cheap-online.info', + 'site3.free-share-buttons.com', + 'webmaster-traffic.com', + ); + + return $referlist; + } + + /** + * @return bool + */ + function is_bad_referer() { + $referlist = $this->default_bad_referers(); + $referlist = apply_filters( $this->prefix . 'badreferlist', $referlist ); + + if ( ! empty( $referlist ) && ! empty( $_SERVER ) && ! empty( $_SERVER['HTTP_REFERER'] ) ) { + $ref = $_SERVER['HTTP_REFERER']; + $regex = $this->quote_list_for_regex( $referlist ); + if ( preg_match( '/' . $regex . '/i', $ref ) ) { + return true; + } + } + + return false; + } + + /** + * @return mixed|void + */ + function allow_bot() { + $allow_bot = true; + if ( ( ! $this->is_good_bot() ) && $this->is_bad_bot() && ! is_user_logged_in() ) { + $allow_bot = false; + } + + return apply_filters( $this->prefix . 'allow_bot', $allow_bot ); + } + + /** + * Displays tabs for tabbed locations on a settings page. + * + * @param $location + */ + function display_tabs( $location ) { + if ( ( $location != null ) && isset( $locations[ $location ]['tabs'] ) ) { + $tabs = $locations['location']['tabs']; + } else { + $tabs = $this->tabs; + } + if ( ! empty( $tabs ) ) { + ?> +
+ label ) ) { + $post_types[ $p ] = $post_objs[ $p ]->label; + } else { + $post_types[ $p ] = $p; + } + } + + return $post_types; + } + + /** + * @param $post_objs + * + * @return array + */ + function get_term_labels( $post_objs ) { + $post_types = array(); + foreach ( $post_objs as $p ) { + if ( ! empty( $p->name ) ) { + $post_types[ $p->term_id ] = $p->name; + } + } + + return $post_types; + } + + /** + * @param array $args + * + * @return array + */ + function get_post_type_titles( $args = array() ) { + return $this->get_object_labels( get_post_types( $args, 'objects' ) ); + } + + /** + * @param array $args + * + * @return array + */ + function get_taxonomy_titles( $args = array() ) { + return $this->get_object_labels( get_taxonomies( $args, 'objects' ) ); + } + + /** + * @param array $args + * + * @return array + */ + function get_category_titles( $args = array() ) { + return $this->get_term_labels( get_categories( $args ) ); + } + + /** + * Helper function for exporting settings on post data. + * + * @param string $prefix + * @param array $query + * + * @return string + */ + function post_data_export( $prefix = '_aioseop', $query = array( 'posts_per_page' => - 1 ) ) { + $buf = ''; + $posts_query = new WP_Query( $query ); + while ( $posts_query->have_posts() ) { + $posts_query->the_post(); + global $post; + $guid = $post->guid; + $type = $post->post_type; + $title = $post->post_title; + $date = $post->post_date; + $data = ''; + $post_custom_fields = get_post_custom( $post->ID ); + $has_data = null; + + if ( is_array( $post_custom_fields ) ) { + foreach ( $post_custom_fields as $field_name => $field ) { + if ( ( $this->strpos( $field_name, $prefix ) === 0 ) && $field[0] ) { + $has_data = true; + $data .= $field_name . " = '" . $field[0] . "'\n"; + } + } + } + if ( ! empty( $data ) ) { + $has_data = true; + } + + if ( $has_data != null ) { + $post_info = "\n[post_data]\n\n"; + $post_info .= "post_title = '" . $title . "'\n"; + $post_info .= "post_guid = '" . $guid . "'\n"; + $post_info .= "post_date = '" . $date . "'\n"; + $post_info .= "post_type = '" . $type . "'\n"; + if ( $data ) { + $buf .= $post_info . $data . "\n"; + } + } + } + wp_reset_postdata(); + + return $buf; + } + + /** + * Handles exporting settings data for a module. + * + * @param $buf + * + * @return string + */ + function settings_export( $buf ) { + global $aiosp; + $post_types = null; + $has_data = null; + $general_settings = null; + $exporter_choices = ''; + if ( ! empty( $_REQUEST['aiosp_importer_exporter_export_choices'] ) ) { + $exporter_choices = $_REQUEST['aiosp_importer_exporter_export_choices']; + } + if ( ! empty( $exporter_choices ) && is_array( $exporter_choices ) ) { + foreach ( $exporter_choices as $ex ) { + if ( $ex == 1 ) { + $general_settings = true; + } + if ( $ex == 2 && isset( $_REQUEST['aiosp_importer_exporter_export_post_types'] ) ) { + $post_types = $_REQUEST['aiosp_importer_exporter_export_post_types']; + } + } + } + + if ( ( $post_types != null ) && ( $this === $aiosp ) ) { + $buf .= $this->post_data_export( '_aioseop', array( + 'posts_per_page' => - 1, + 'post_type' => $post_types, + ) ); + } + + /* Add all active settings to settings file */ + $name = $this->get_option_name(); + $options = $this->get_class_option(); + if ( ! empty( $options ) && $general_settings != null ) { + $buf .= "\n[$name]\n\n"; + foreach ( $options as $key => $value ) { + if ( ( $name == $this->parent_option ) && ( $key == 'modules' ) ) { + continue; + } // don't re-export all module settings -- pdb + if ( is_array( $value ) ) { + $value = "'" . str_replace( array( "'", "\n", "\r" ), array( + "\'", + '\n', + '\r', + ), trim( serialize( $value ) ) ) . "'"; + } else { + $value = str_replace( array( "\n", "\r" ), array( + '\n', + '\r', + ), trim( var_export( $value, true ) ) ); + } + $buf .= "$key = $value\n"; + } + } + + return $buf; + } + + /** + * Order for adding the menus for the aioseop_modules_add_menus hook. + */ + function menu_order() { + return 10; + } + + /** + * Print a basic error message. + * + * @param $error + * + * @return bool + */ + function output_error( $error ) { + echo "
$error
"; + + return false; + } + + /*** + * Backwards compatibility - see http://php.net/manual/en/function.str-getcsv.php + * + * @param $input + * @param string $delimiter + * @param string $enclosure + * @param string $escape + * + * @return array + */ + function str_getcsv( $input, $delimiter = ',', $enclosure = '"', $escape = "\\" ) { + $fp = fopen( 'php://memory', 'r+' ); + fputs( $fp, $input ); + rewind( $fp ); + $data = fgetcsv( $fp, null, $delimiter, $enclosure ); // $escape only got added in 5.3.0 + fclose( $fp ); + + return $data; + } + + /*** + * Helper function to convert csv in key/value pair format to an associative array. + * + * @param $csv + * + * @return array + */ + function csv_to_array( $csv ) { + $args = array(); + if ( ! function_exists( 'str_getcsv' ) ) { + $v = $this->str_getcsv( $csv ); + } else { + $v = str_getcsv( $csv ); + } + $size = count( $v ); + if ( is_array( $v ) && isset( $v[0] ) && $size >= 2 ) { + for ( $i = 0; $i < $size; $i += 2 ) { + $args[ $v[ $i ] ] = $v[ $i + 1 ]; + } + } + + return $args; + } + + /** Allow modules to use WP Filesystem if available and desired, fall back to PHP filesystem access otherwise. + * + * @param string $method + * @param bool $form_fields + * @param string $url + * @param bool $error + * + * @return bool + */ + function use_wp_filesystem( $method = '', $form_fields = false, $url = '', $error = false ) { + if ( empty( $method ) ) { + $this->credentials = request_filesystem_credentials( $url ); + } else { + $this->credentials = request_filesystem_credentials( $url, $method, $error, false, $form_fields ); + } + + return $this->credentials; + } + + /** + * Wrapper function to get filesystem object. + */ + function get_filesystem_object() { + $cred = get_transient( 'aioseop_fs_credentials' ); + if ( ! empty( $cred ) ) { + $this->credentials = $cred; + } + + if ( function_exists( 'WP_Filesystem' ) && WP_Filesystem( $this->credentials ) ) { + global $wp_filesystem; + + return $wp_filesystem; + } else { + require_once( ABSPATH . 'wp-admin/includes/template.php' ); + require_once( ABSPATH . 'wp-admin/includes/screen.php' ); + require_once( ABSPATH . 'wp-admin/includes/file.php' ); + + if ( ! WP_Filesystem( $this->credentials ) ) { + $this->use_wp_filesystem(); + } + + if ( ! empty( $this->credentials ) ) { + set_transient( 'aioseop_fs_credentials', $this->credentials, 10800 ); + } + global $wp_filesystem; + if ( is_object( $wp_filesystem ) ) { + return $wp_filesystem; + } + } + + return false; + } + + /** + * See if a file exists using WP Filesystem. + * + * @param string $filename + * + * @return bool + */ + function file_exists( $filename ) { + $wpfs = $this->get_filesystem_object(); + if ( is_object( $wpfs ) ) { + return $wpfs->exists( $filename ); + } + + return $wpfs; + } + + /** + * See if the directory entry is a file using WP Filesystem. + * + * @param $filename + * + * @return bool + */ + function is_file( $filename ) { + $wpfs = $this->get_filesystem_object(); + if ( is_object( $wpfs ) ) { + return $wpfs->is_file( $filename ); + } + + return $wpfs; + } + + /** + * List files in a directory using WP Filesystem. + * + * @param $path + * + * @return array|bool + */ + function scandir( $path ) { + $wpfs = $this->get_filesystem_object(); + if ( is_object( $wpfs ) ) { + $dirlist = $wpfs->dirlist( $path ); + if ( empty( $dirlist ) ) { + return $dirlist; + } + + return array_keys( $dirlist ); + } + + return $wpfs; + } + + /** + * Load a file through WP Filesystem; implement basic support for offset and maxlen. + * + * @param $filename + * @param bool $use_include_path + * @param null $context + * @param int $offset + * @param int $maxlen + * + * @return bool|mixed + */ + function load_file( $filename, $use_include_path = false, $context = null, $offset = - 1, $maxlen = - 1 ) { + $wpfs = $this->get_filesystem_object(); + if ( is_object( $wpfs ) ) { + if ( ! $wpfs->exists( $filename ) ) { + return false; + } + if ( ( $offset > 0 ) || ( $maxlen >= 0 ) ) { + if ( $maxlen === 0 ) { + return ''; + } + if ( $offset < 0 ) { + $offset = 0; + } + $file = $wpfs->get_contents( $filename ); + if ( ! is_string( $file ) || empty( $file ) ) { + return $file; + } + if ( $maxlen < 0 ) { + return $this->substr( $file, $offset ); + } else { + return $this->substr( $file, $offset, $maxlen ); + } + } else { + return $wpfs->get_contents( $filename ); + } + } + + return false; + } + + /** + * Save a file through WP Filesystem. + * + * @param string $filename + * + * @param $contents + * + * @return bool + */ + function save_file( $filename, $contents ) { + $failed_str = __( sprintf( "Failed to write file %s!\n", $filename ), 'all-in-one-seo-pack' ); + $readonly_str = __( sprintf( "File %s isn't writable!\n", $filename ), 'all-in-one-seo-pack' ); + $wpfs = $this->get_filesystem_object(); + if ( is_object( $wpfs ) ) { + $file_exists = $wpfs->exists( $filename ); + if ( ! $file_exists || $wpfs->is_writable( $filename ) ) { + if ( $wpfs->put_contents( $filename, $contents ) === false ) { + return $this->output_error( $failed_str ); + } + } else { + return $this->output_error( $readonly_str ); + } + + return true; + } + + return false; + } + + /** + * Delete a file through WP Filesystem. + * + * @param string $filename + * + * @return bool + */ + function delete_file( $filename ) { + $wpfs = $this->get_filesystem_object(); + if ( is_object( $wpfs ) ) { + if ( $wpfs->exists( $filename ) ) { + if ( $wpfs->delete( $filename ) === false ) { + $this->output_error( __( sprintf( "Failed to delete file %s!\n", $filename ), 'all-in-one-seo-pack' ) ); + } else { + return true; + } + } else { + $this->output_error( __( sprintf( "File %s doesn't exist!\n", $filename ), 'all-in-one-seo-pack' ) ); + } + } + + return false; + } + + /** + * Rename a file through WP Filesystem. + * + * @param string $filename + * @param string $newname + * + * @return bool + */ + function rename_file( $filename, $newname ) { + $wpfs = $this->get_filesystem_object(); + if ( is_object( $wpfs ) ) { + $file_exists = $wpfs->exists( $filename ); + $newfile_exists = $wpfs->exists( $newname ); + if ( $file_exists && ! $newfile_exists ) { + if ( $wpfs->move( $filename, $newname ) === false ) { + $this->output_error( __( sprintf( "Failed to rename file %s!\n", $filename ), 'all-in-one-seo-pack' ) ); + } else { + return true; + } + } else { + if ( ! $file_exists ) { + $this->output_error( __( sprintf( "File %s doesn't exist!\n", $filename ), 'all-in-one-seo-pack' ) ); + } elseif ( $newfile_exists ) { + $this->output_error( __( sprintf( "File %s already exists!\n", $newname ), 'all-in-one-seo-pack' ) ); + } + } + } + + return false; + } + + /** + * Load multiple files. + * + * @param $options + * @param $opts + * @param $prefix + * + * @return mixed + */ + function load_files( $options, $opts, $prefix ) { + foreach ( $opts as $opt => $file ) { + $opt = $prefix . $opt; + $file = ABSPATH . $file; + $contents = $this->load_file( $file ); + if ( $contents !== false ) { + $options[ $opt ] = $contents; + } + } + + return $options; + } + + /** + * Save multiple files. + * + * @param $opts + * @param $prefix + */ + function save_files( $opts, $prefix ) { + foreach ( $opts as $opt => $file ) { + $opt = $prefix . $opt; + if ( isset( $_POST[ $opt ] ) ) { + $output = stripslashes_deep( $_POST[ $opt ] ); + $file = ABSPATH . $file; + $this->save_file( $file, $output ); + } + } + } + + /** + * Delete multiple files. + * + * @param $opts + */ + function delete_files( $opts ) { + foreach ( $opts as $opt => $file ) { + $file = ABSPATH . $file; + $this->delete_file( $file ); + } + } + + /** + * @param null $options + * @param null $p + * + * @return array + */ + function get_all_images_by_type( $options = null, $p = null ) { + $img = array(); + if ( empty( $img ) ) { + $size = apply_filters( 'post_thumbnail_size', 'large' ); + + global $aioseop_options, $wp_query, $aioseop_opengraph; + + if ( $p === null ) { + global $post; + } else { + $post = $p; + } + + $count = 1; + + if ( ! empty( $post ) ) { + if ( ! is_object( $post ) ) { + $post = get_post( $post ); + } + if ( is_object( $post ) && function_exists( 'get_post_thumbnail_id' ) ) { + if ( $post->post_type == 'attachment' ) { + $post_thumbnail_id = $post->ID; + } else { + $post_thumbnail_id = get_post_thumbnail_id( $post->ID ); + } + if ( ! empty( $post_thumbnail_id ) ) { + $image = wp_get_attachment_image_src( $post_thumbnail_id, $size ); + if ( is_array( $image ) ) { + $img[] = array( 'type' => 'featured', 'id' => $post_thumbnail_id, 'link' => $image[0] ); + } + } + } + + $post_id = $post->ID; + $p = $post; + $w = $wp_query; + + $meta_key = ''; + if ( is_array( $options ) && isset( $options['meta_key'] ) ) { + $meta_key = $options['meta_key']; + } + + if ( ! empty( $meta_key ) && ! empty( $post ) ) { + $meta_key = explode( ',', $meta_key ); + $image = $this->get_the_image_by_meta_key( array( + 'post_id' => $post->ID, + 'meta_key' => $meta_key, + ) ); + if ( ! empty( $image ) ) { + $img[] = array( 'type' => 'meta_key', 'id' => $meta_key, 'link' => $image ); + } + } + + if ( ! $post->post_modified_gmt != '' ) { + $wp_query = new WP_Query( array( 'p' => $post_id, 'post_type' => $post->post_type ) ); + } + if ( $post->post_type == 'page' ) { + $wp_query->is_page = true; + } elseif ( $post->post_type == 'attachment' ) { + $wp_query->is_attachment = true; + } else { + $wp_query->is_single = true; + } + if ( get_option( 'show_on_front' ) == 'page' && $post->ID == get_option( 'page_for_posts' ) ) { + $wp_query->is_home = true; + } + $args['options']['type'] = 'html'; + $args['options']['nowrap'] = false; + $args['options']['save'] = false; + $wp_query->queried_object = $post; + + $attachments = get_children( array( + 'post_parent' => $post->ID, + 'post_status' => 'inherit', + 'post_type' => 'attachment', + 'post_mime_type' => 'image', + 'order' => 'ASC', + 'orderby' => 'menu_order ID', + ) ); + if ( ! empty( $attachments ) ) { + foreach ( $attachments as $id => $attachment ) { + $image = wp_get_attachment_image_src( $id, $size ); + if ( is_array( $image ) ) { + $img[] = array( 'type' => 'attachment', 'id' => $id, 'link' => $image[0] ); + } + } + } + $matches = array(); + preg_match_all( '||i', get_post_field( 'post_content', $post->ID ), $matches ); + if ( isset( $matches ) && ! empty( $matches[1] ) && ! empty( $matches[1][0] ) ) { + foreach ( $matches[1] as $i => $m ) { + $img[] = array( 'type' => 'post_content', 'id' => 'post' . $count ++, 'link' => $m ); + } + } + wp_reset_postdata(); + $wp_query = $w; + $post = $p; + } + } + + return $img; + } + + /** + * @param null $options + * @param null $p + * + * @return array + */ + function get_all_images( $options = null, $p = null ) { + $img = $this->get_all_images_by_type( $options, $p ); + $legacy = array(); + foreach ( $img as $k => $v ) { + $v['link'] = set_url_scheme($v['link']); + if ( $v['type'] == 'featured' ) { + $legacy[ $v['link'] ] = 1; + } else { + $legacy[ $v['link'] ] = $v['id']; + } + } + + return $legacy; + } + + /*** Thanks to Justin Tadlock for the original get-the-image code - http://themehybrid.com/plugins/get-the-image ** + * + * @param null $options + * @param null $p + * + * @return bool|mixed|string + */ + + function get_the_image( $options = null, $p = null ) { + + if ( $p === null ) { + global $post; + } else { + $post = $p; + } + + $meta_key = ''; + if ( is_array( $options ) && isset( $options['meta_key'] ) ) { + $meta_key = $options['meta_key']; + } + + if ( ! empty( $meta_key ) && ! empty( $post ) ) { + $meta_key = explode( ',', $meta_key ); + $image = $this->get_the_image_by_meta_key( array( + 'post_id' => $post->ID, + 'meta_key' => $meta_key, + ) ); + } + if ( empty( $image ) ) { + $image = $this->get_the_image_by_post_thumbnail( $post ); + } + if ( empty( $image ) ) { + $image = $this->get_the_image_by_attachment( $post ); + } + if ( empty( $image ) ) { + $image = $this->get_the_image_by_scan( $post ); + } + if ( empty( $image ) ) { + $image = $this->get_the_image_by_default( $post ); + } + + return $image; + } + + /** + * @param null $p + * + * @return string + */ + function get_the_image_by_default( $p = null ) { + return ''; + } + + /** + * @param array $args + * + * @return bool|mixed + */ + function get_the_image_by_meta_key( $args = array() ) { + + /* If $meta_key is not an array. */ + if ( ! is_array( $args['meta_key'] ) ) { + $args['meta_key'] = array( $args['meta_key'] ); + } + + /* Loop through each of the given meta keys. */ + foreach ( $args['meta_key'] as $meta_key ) { + /* Get the image URL by the current meta key in the loop. */ + $image = get_post_meta( $args['post_id'], $meta_key, true ); + /* If a custom key value has been given for one of the keys, return the image URL. */ + if ( ! empty( $image ) ) { + return $image; + } + } + + return false; + } + + /** + * @param null $p + * + * @return bool + */ + function get_the_image_by_post_thumbnail( $p = null ) { + + if ( $p === null ) { + global $post; + } else { + $post = $p; + } + + $post_thumbnail_id = null; + if ( function_exists( 'get_post_thumbnail_id' ) ) { + $post_thumbnail_id = get_post_thumbnail_id( $post->ID ); + } + + if ( empty( $post_thumbnail_id ) ) { + return false; + } + + $size = apply_filters( 'post_thumbnail_size', 'large' ); // Check if someone is using built-in WP filter. + $size = apply_filters( 'aioseop_thumbnail_size', $size ); + $image = wp_get_attachment_image_src( $post_thumbnail_id, $size ); + + return $image[0]; + } + + /** + * @param null $p + * + * @return bool + */ + function get_the_image_by_attachment( $p = null ) { + + if ( $p === null ) { + global $post; + } else { + $post = $p; + } + + $attachments = get_children( array( + 'post_parent' => $post->ID, + 'post_status' => 'inherit', + 'post_type' => 'attachment', + 'post_mime_type' => 'image', + 'order' => 'ASC', + 'orderby' => 'menu_order ID', + ) ); + + if ( empty( $attachments ) && 'attachment' == get_post_type( $post->ID ) ) { + $size = 'large'; + $size = apply_filters( 'aioseop_attachment_size', $size ); + $image = wp_get_attachment_image_src( $post->ID, $size ); + } + + /* If no attachments or image is found, return false. */ + if ( empty( $attachments ) && empty( $image ) ) { + return false; + } + + /* Set the default iterator to 0. */ + $i = 0; + + /* Loop through each attachment. Once the $order_of_image (default is '1') is reached, break the loop. */ + foreach ( $attachments as $id => $attachment ) { + if ( ++ $i == 1 ) { + $size = 'large'; + $size = apply_filters( 'aioseop_attachment_size', $size ); + $image = wp_get_attachment_image_src( $id, $size ); + $alt = trim( strip_tags( get_post_field( 'post_excerpt', $id ) ) ); + break; + } + } + + /* Return the image URL. */ + + return $image[0]; + + } + + /** + * @param null $p + * + * @return bool + */ + function get_the_image_by_scan( $p = null ) { + + if ( $p === null ) { + global $post; + } else { + $post = $p; + } + + /* Search the post's content for the tag and get its URL. */ + preg_match_all( '||i', get_post_field( 'post_content', $post->ID ), $matches ); + + /* If there is a match for the image, return its URL. */ + if ( isset( $matches ) && ! empty( $matches[1][0] ) ) { + return $matches[1][0]; + } + + return false; + } + + /** + * @param $default_options + * @param $options + * @param string $help_link + */ + function help_text_helper( &$default_options, $options, $help_link = '' ) { + foreach ( $options as $o ) { + $ht = ''; + if ( ! empty( $this->help_text[ $o ] ) ) { + $ht = $this->help_text[ $o ]; + } elseif ( ! empty( $default_options[ $o ]['help_text'] ) ) { + $ht = $default_options[ $o ]['help_text']; + } + if ( $ht && ! is_array( $ht ) ) { + $ha = ''; + $hl = $help_link; + if ( strpos( $o, 'ga_' ) === 0 ) { // special case -- pdb + $hl = 'https://semperplugins.com/documentation/advanced-google-analytics-settings/'; + } + if ( ! empty( $this->help_anchors[ $o ] ) ) { + $ha = $this->help_anchors[ $o ]; + } + if ( ! empty( $ha ) && ( $pos = strrpos( $hl, '#' ) ) ) { + $hl = substr( $hl, 0, $pos ); + } + if ( ! empty( $ha ) && ( $ha[0] == 'h' ) ) { + $hl = ''; + } + if ( ! empty( $ha ) || ! isset( $this->help_anchors[ $o ] ) ) { + $ht .= "
" . __( 'Click here for documentation on this setting', 'all-in-one-seo-pack' ) . ''; + } + $default_options[ $o ]['help_text'] = $ht; + } + } + } + + function add_help_text_links() { + if ( ! empty( $this->help_text ) ) { + foreach ( $this->layout as $k => $v ) { + $this->help_text_helper( $this->default_options, $v['options'], $v['help_link'] ); + } + if ( ! empty( $this->locations ) ) { + foreach ( $this->locations as $k => $v ) { + if ( ! empty( $v['default_options'] ) && ! empty( $v['options'] ) ) { + $this->help_text_helper( $this->locations[ $k ]['default_options'], $v['options'], $v['help_link'] ); + } + } + } + } + } + + /** + * Load scripts and styles for metaboxes. + * + * edit-tags exists only for pre 4.5 support... remove when we drop 4.5 support. + * Also, that check and others should be pulled out into their own functions + */ + function enqueue_metabox_scripts() { + $screen = ''; + if ( function_exists( 'get_current_screen' ) ) { + $screen = get_current_screen(); + } + $bail = false; + if ( empty( $screen ) ) { + $bail = true; + } + if ( $bail != true ) { + if ( ( $screen->base != 'post' ) && ( $screen->base != 'term' ) && ( $screen->base != 'edit-tags' ) && ( $screen->base != 'toplevel_page_shopp-products' ) ) { + $bail = true; + } + } + $prefix = $this->get_prefix(); + $bail = apply_filters( $prefix . 'bail_on_enqueue', $bail, $screen ); + if ( $bail ) { + return; + } + $this->form = 'post'; + if ( $screen->base == 'term' || $screen->base == 'edit-tags' ) { + $this->form = 'edittag'; + } + if ( $screen->base == 'toplevel_page_shopp-products' ) { + $this->form = 'product'; + } + $this->form = apply_filters( $prefix . 'set_form_on_enqueue', $this->form, $screen ); + foreach ( $this->locations as $k => $v ) { + if ( $v['type'] === 'metabox' && isset( $v['display'] ) && ! empty( $v['display'] ) ) { + $enqueue_scripts = false; + $enqueue_scripts = ( ( ( $screen->base == 'toplevel_page_shopp-products' ) && in_array( 'shopp_product', $v['display'] ) ) ) || in_array( $screen->post_type, $v['display'] ); + $enqueue_scripts = apply_filters( $prefix . 'enqueue_metabox_scripts', $enqueue_scripts, $screen, $v ); + if ( $enqueue_scripts ) { + add_filter( 'aioseop_localize_script_data', array( $this, 'localize_script_data' ) ); + add_action( 'admin_print_scripts', array( $this, 'enqueue_scripts' ), 20 ); + add_action( 'admin_print_scripts', array( $this, 'enqueue_styles' ), 20 ); + } + } + } + } + + /** + * Load styles for module. + */ + function enqueue_styles() { + wp_enqueue_style( 'thickbox' ); + if ( ! empty( $this->pointers ) ) { + wp_enqueue_style( 'wp-pointer' ); + } + wp_enqueue_style( 'aioseop-module-style', AIOSEOP_PLUGIN_URL . 'css/modules/aioseop_module.css' ); + if ( function_exists( 'is_rtl' ) && is_rtl() ) { + wp_enqueue_style( 'aioseop-module-style-rtl', AIOSEOP_PLUGIN_URL . 'css/modules/aioseop_module-rtl.css', array( 'aioseop-module-style' ) ); + } + } + + /** + * Load scripts for module, can pass data to module script. + */ + function enqueue_scripts() { + wp_enqueue_script( 'sack' ); + wp_enqueue_script( 'jquery' ); + wp_enqueue_script( 'media-upload' ); + wp_enqueue_script( 'thickbox' ); + wp_enqueue_script( 'common' ); + wp_enqueue_script( 'wp-lists' ); + wp_enqueue_script( 'postbox' ); + if ( ! empty( $this->pointers ) ) { + wp_enqueue_script( 'wp-pointer', false, array( 'jquery' ) ); + } + wp_enqueue_script( 'aioseop-module-script', AIOSEOP_PLUGIN_URL . 'js/modules/aioseop_module.js', array(), AIOSEOP_VERSION ); + if ( ! empty( $this->script_data ) ) { + aioseop_localize_script_data(); + } + } + + /** + * @param $data + * + * @return array + */ + function localize_script_data( $data ) { + if ( ! is_array( $data ) ) { + $data = array( 0 => $data ); + } + if ( empty( $this->script_data ) ) { + $this->script_data = array(); + } + if ( ! empty( $this->pointers ) ) { + $this->script_data['pointers'] = $this->pointers; + } + if ( empty( $data[0]['condshow'] ) ) { + $data[0]['condshow'] = array(); + } + if ( empty( $this->script_data['condshow'] ) ) { + $this->script_data['condshow'] = array(); + } + $condshow = $this->script_data['condshow']; + $data[0]['condshow'] = array_merge( $data[0]['condshow'], $condshow ); + unset( $this->script_data['condshow'] ); + $data[0] = array_merge( $this->script_data, $data[0] ); + $this->script_data['condshow'] = $condshow; + + return $data; + } + + /** + * Override this to run code at the beginning of the settings page. + */ + function settings_page_init() { + + } + + /** + * Filter out admin pointers that have already been clicked. + */ + function filter_pointers() { + if ( ! empty( $this->pointers ) ) { + $dismissed = explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) ); + foreach ( $dismissed as $d ) { + if ( isset( $this->pointers[ $d ] ) ) { + unset( $this->pointers[ $d ] ); + } + } + } + } + + /** + * Add basic hooks when on the module's page. + */ + function add_page_hooks() { + $hookname = current_filter(); + if ( $this->strpos( $hookname, 'load-' ) === 0 ) { + $this->pagehook = $this->substr( $hookname, 5 ); + } + add_action( 'admin_print_scripts', array( $this, 'enqueue_scripts' ) ); + add_action( 'admin_print_styles', array( $this, 'enqueue_styles' ) ); + add_filter( 'aioseop_localize_script_data', array( $this, 'localize_script_data' ) ); + add_action( $this->prefix . 'settings_header', array( $this, 'display_tabs' ) ); + } + + /** + * @return array + */ + function get_admin_links() { + if ( ! empty( $this->menu_name ) ) { + $name = $this->menu_name; + } else { + $name = $this->name; + } + + $hookname = plugin_basename( $this->file ); + + $links = array(); + $url = ''; + if ( function_exists( 'menu_page_url' ) ) { + $url = menu_page_url( $hookname, 0 ); + } + if ( empty( $url ) ) { + $url = esc_url( admin_url( 'admin.php?page=' . $hookname ) ); + } + + if ( $this->locations === null ) { + array_unshift( $links, array( + 'parent' => AIOSEOP_PLUGIN_DIRNAME, + 'title' => $name, + 'id' => $hookname, + 'href' => $url, + 'order' => $this->menu_order(), + ) ); + } else { + foreach ( $this->locations as $k => $v ) { + if ( $v['type'] === 'settings' ) { + if ( $k === 'default' ) { + array_unshift( $links, array( + 'parent' => AIOSEOP_PLUGIN_DIRNAME, + 'title' => $name, + 'id' => $hookname, + 'href' => $url, + 'order' => $this->menu_order(), + ) ); + } else { + if ( ! empty( $v['menu_name'] ) ) { + $name = $v['menu_name']; + } else { + $name = $v['name']; + } + array_unshift( $links, array( + 'parent' => AIOSEOP_PLUGIN_DIRNAME, + 'title' => $name, + 'id' => $this->get_prefix( $k ) . $k, + 'href' => esc_url( admin_url( 'admin.php?page=' . $this->get_prefix( $k ) . $k ) ), + 'order' => $this->menu_order(), + ) ); + } + } + } + } + + return $links; + } + + function add_admin_bar_submenu() { + global $aioseop_admin_menu, $wp_admin_bar; + + if ( $aioseop_admin_menu ) { + $links = $this->get_admin_links(); + if ( ! empty( $links ) ) { + foreach ( $links as $l ) { + $wp_admin_bar->add_menu( $l ); + } + } + } + } + + /** + * Collect metabox data together for tabbed metaboxes. + * + * @param $args + * + * @return array + */ + function filter_return_metaboxes( $args ) { + return array_merge( $args, $this->post_metaboxes ); + } + + /** Add submenu for module, call page hooks, set up metaboxes. + * + * @param $parent_slug + * + * @return bool + */ + function add_menu( $parent_slug ) { + if ( ! empty( $this->menu_name ) ) { + $name = $this->menu_name; + } else { + $name = $this->name; + } + if ( $this->locations === null ) { + $hookname = add_submenu_page( $parent_slug, $name, $name, apply_filters( 'manage_aiosp', 'aiosp_manage_seo' ), plugin_basename( $this->file ), array( + $this, + 'display_settings_page', + ) ); + add_action( "load-{$hookname}", array( $this, 'add_page_hooks' ) ); + + return true; + } + foreach ( $this->locations as $k => $v ) { + if ( $v['type'] === 'settings' ) { + if ( $k === 'default' ) { + if ( ! empty( $this->menu_name ) ) { + $name = $this->menu_name; + } else { + $name = $this->name; + } + $hookname = add_submenu_page( $parent_slug, $name, $name, apply_filters( 'manage_aiosp', 'aiosp_manage_seo' ), plugin_basename( $this->file ), array( + $this, + 'display_settings_page', + ) ); + } else { + if ( ! empty( $v['menu_name'] ) ) { + $name = $v['menu_name']; + } else { + $name = $v['name']; + } + $hookname = add_submenu_page( $parent_slug, $name, $name, apply_filters( 'manage_aiosp', 'aiosp_manage_seo' ), $this->get_prefix( $k ) . $k, array( + $this, + "display_settings_page_$k", + ) ); + } + add_action( "load-{$hookname}", array( $this, 'add_page_hooks' ) ); + } elseif ( $v['type'] === 'metabox' ) { + $this->setting_options( $k ); // hack -- make sure this runs anyhow, for now -- pdb + add_action( 'edit_post', array( $this, 'save_post_data' ) ); + add_action( 'publish_post', array( $this, 'save_post_data' ) ); + add_action( 'add_attachment', array( $this, 'save_post_data' ) ); + add_action( 'edit_attachment', array( $this, 'save_post_data' ) ); + add_action( 'save_post', array( $this, 'save_post_data' ) ); + add_action( 'edit_page_form', array( $this, 'save_post_data' ) ); + if ( isset( $v['display'] ) && ! empty( $v['display'] ) ) { + add_action( 'admin_print_scripts', array( $this, 'enqueue_metabox_scripts' ), 5 ); + if ( $this->tabbed_metaboxes ) { + add_filter( 'aioseop_add_post_metabox', array( $this, 'filter_return_metaboxes' ) ); + } + foreach ( $v['display'] as $posttype ) { + $v['location'] = $k; + $v['posttype'] = $posttype; + if ( ! isset( $v['context'] ) ) { + $v['context'] = 'advanced'; + } + if ( ! isset( $v['priority'] ) ) { + $v['priority'] = 'default'; + } + if ( $this->tabbed_metaboxes ) { + $this->post_metaboxes[] = array( + 'id' => $v['prefix'] . $k, + 'title' => $v['name'], + 'callback' => array( $this, 'display_metabox' ), + 'post_type' => $posttype, + 'context' => $v['context'], + 'priority' => $v['priority'], + 'callback_args' => $v, + ); + } else { + $title = $v['name']; + if ( $title != $this->plugin_name ) { + $title = $this->plugin_name . ' - ' . $title; + } + if ( ! empty( $v['help_link'] ) ) { + $title .= "" . __( 'Help', 'all-in-one-seo-pack' ) . ''; + } + add_meta_box( $v['prefix'] . $k, $title, array( + $this, + 'display_metabox', + ), $posttype, $v['context'], $v['priority'], $v ); + } + } + } + } + } + } + + /** + * Update postmeta for metabox. + * + * @param $post_id + */ + function save_post_data( $post_id ) { + static $update = false; + if ( $update ) { + return; + } + if ( $this->locations !== null ) { + foreach ( $this->locations as $k => $v ) { + if ( isset( $v['type'] ) && ( $v['type'] === 'metabox' ) ) { + $opts = $this->default_options( $k ); + $options = array(); + $update = false; + foreach ( $opts as $l => $o ) { + if ( isset( $_POST[ $l ] ) ) { + $options[ $l ] = stripslashes_deep( $_POST[ $l ] ); + $options[ $l ] = esc_attr( $options[ $l ] ); + $update = true; + } + } + if ( $update ) { + $prefix = $this->get_prefix( $k ); + $options = apply_filters( $prefix . 'filter_metabox_options', $options, $k, $post_id ); + update_post_meta( $post_id, '_' . $prefix . $k, $options ); + } + } + } + } + } + + /** + * Outputs radio buttons, checkboxes, selects, multiselects, handles groups. + * + * @param $args + * + * @return string + */ + function do_multi_input( $args ) { + extract( $args ); + $buf1 = ''; + $type = $options['type']; + + $strings = array( + 'block' => "\n", + 'group' => "\t\n%s\t\n", + 'item' => "\t\n", + 'item_args' => array( 'sel', 'v', 'subopt' ), + 'selected' => 'selected ', + ); + + if ( ( $type === 'radio' ) || ( $type === 'checkbox' ) ) { + $strings = array( + 'block' => "%s\n", + 'group' => "\t%s
\n%s\n", + 'item' => "\t\n", + 'item_args' => array( 'sel', 'name', 'v', 'attr', 'subopt' ), + 'selected' => 'checked ', + ); + } + + $setsel = $strings['selected']; + if ( isset( $options['initial_options'] ) && is_array( $options['initial_options'] ) ) { + foreach ( $options['initial_options'] as $l => $option ) { + $is_group = is_array( $option ); + if ( ! $is_group ) { + $option = array( $l => $option ); + } + $buf2 = ''; + foreach ( $option as $v => $subopt ) { + $sel = ''; + $is_arr = is_array( $value ); + if ( is_string( $v ) || is_string( $value ) ) { + if ( is_string( $value ) ) { + $cmp = ! strcmp( $v, $value ); + } else { + $cmp = ! strcmp( $v, '' ); + } + // $cmp = !strcmp( (string)$v, (string)$value ); + } else { + $cmp = ( $value == $v ); + } + if ( ( ! $is_arr && $cmp ) || ( $is_arr && in_array( $v, $value ) ) ) { + $sel = $setsel; + } + $item_arr = array(); + foreach ( $strings['item_args'] as $arg ) { + $item_arr[] = $$arg; + } + $buf2 .= vsprintf( $strings['item'], $item_arr ); + } + if ( $is_group ) { + $buf1 .= sprintf( $strings['group'], $l, $buf2 ); + } else { + $buf1 .= $buf2; + } + } + $buf1 = sprintf( $strings['block'], $buf1 ); + } + + return $buf1; + } + + /** + * Outputs a setting item for settings pages and metaboxes. + * + * @param $args + * + * @return string + */ + function get_option_html( $args ) { + static $n = 0; + extract( $args ); + if ( $options['type'] == 'custom' ) { + return apply_filters( "{$prefix}output_option", '', $args ); + } + if ( in_array( $options['type'], array( + 'multiselect', + 'select', + 'multicheckbox', + 'radio', + 'checkbox', + 'textarea', + 'text', + 'submit', + 'hidden', + ) ) && is_string( $value ) + ) { + $value = esc_attr( $value ); + } + $buf = ''; + $onload = ''; + if ( ! empty( $options['count'] ) ) { + $n ++; + $attr .= " onKeyDown='if (typeof countChars == \"function\") countChars(document.{$this->form}.$name,document.{$this->form}.{$prefix}length$n)' onKeyUp='if (typeof countChars == \"function\") countChars(document.{$this->form}.$name,document.{$this->form}.{$prefix}length$n)'"; + $onload = "if (typeof countChars == \"function\") countChars(document.{$this->form}.$name,document.{$this->form}.{$prefix}length$n);"; + } + if ( isset( $opts['id'] ) ) { + $attr .= " id=\"{$opts['id']}\" "; + } + switch ( $options['type'] ) { + case 'multiselect': + $attr .= ' MULTIPLE'; + $args['attr'] = $attr; + $args['name'] = $name = "{$name}[]"; + case 'select': + $buf .= $this->do_multi_input( $args ); + break; + case 'multicheckbox': + $args['name'] = $name = "{$name}[]"; + $args['options']['type'] = $options['type'] = 'checkbox'; + case 'radio': + $buf .= $this->do_multi_input( $args ); + break; + case 'checkbox': + if ( $value ) { + $attr .= ' CHECKED'; + } + $buf .= "\n"; + break; + case 'textarea': + $buf .= ""; + break; + case 'image': + $buf .= "" . + "\n"; + break; + case 'html': + $buf .= $value; + break; + case 'esc_html': + $buf .= "
" . esc_html( $value ) . "
\n"; + break; + default: + $buf .= "\n"; + } + if ( ! empty( $options['count'] ) ) { + $size = 60; + if ( isset( $options['size'] ) ) { + $size = $options['size']; + } elseif ( isset( $options['rows'] ) && isset( $options['cols'] ) ) { + $size = $options['rows'] * $options['cols']; + } + if ( isset( $options['count_desc'] ) ) { + $count_desc = $options['count_desc']; + } else { + $count_desc = __( ' characters. Most search engines use a maximum of %s chars for the %s.', 'all-in-one-seo-pack' ); + } + $buf .= "
" + . sprintf( $count_desc, $size, trim( $this->strtolower( $options['name'] ), ':' ) ); + if ( ! empty( $onload ) ) { + $buf .= ""; + } + } + + return $buf; + } + + const DISPLAY_HELP_START = ''; + const DISPLAY_HELP_END = ''; + const DISPLAY_LABEL_FORMAT = '%s'; + const DISPLAY_TOP_LABEL = "\n
\n"; + const DISPLAY_ROW_TEMPLATE = '
%s
%s
%s

'; + + /** + * Format a row for an option on a settings page. + * + * @param $name + * @param $opts + * @param $args + * + * @return string + */ + function get_option_row( $name, $opts, $args ) { + $label_text = $input_attr = $help_text_2 = $id_attr = ''; + + $align = 'right'; + if ( $opts['label'] == 'top' ) { + $align = 'left'; + } + if ( isset( $opts['id'] ) ) { + $id_attr .= " id=\"{$opts['id']}_div\" "; + } + if ( $opts['label'] != 'none' ) { + if ( isset( $opts['help_text'] ) ) { + $help_text = sprintf( All_in_One_SEO_Pack_Module::DISPLAY_HELP_START, __( 'Click for Help!', 'all-in-one-seo-pack' ), $name, $opts['name'] ); + $help_text_2 = sprintf( All_in_One_SEO_Pack_Module::DISPLAY_HELP_END, $name, $opts['help_text'] ); + } else { + $help_text = $opts['name']; + } + $label_text = sprintf( All_in_One_SEO_Pack_Module::DISPLAY_LABEL_FORMAT, $align, $help_text ); + } else { + $input_attr .= ' aioseop_no_label '; + } + if ( $opts['label'] == 'top' ) { + $label_text .= All_in_One_SEO_Pack_Module::DISPLAY_TOP_LABEL; + } + $input_attr .= " aioseop_{$opts['type']}_type"; + + return sprintf( All_in_One_SEO_Pack_Module::DISPLAY_ROW_TEMPLATE, $input_attr, $name, $label_text, $id_attr, $this->get_option_html( $args ), $help_text_2 ); + } + + /** + * Display options for settings pages and metaboxes, allows for filtering settings, custom display options. + * + * @param null $location + * @param null $meta_args + */ + function display_options( $location = null, $meta_args = null ) { + static $location_settings = array(); + $defaults = null; + $prefix = $this->get_prefix( $location ); + $help_link = ''; + if ( is_array( $meta_args['args'] ) && ! empty( $meta_args['args']['default_options'] ) ) { + $defaults = $meta_args['args']['default_options']; + } + if ( ! empty( $meta_args['callback_args'] ) && ! empty( $meta_args['callback_args']['help_link'] ) ) { + $help_link = $meta_args['callback_args']['help_link']; + } + if ( ! empty( $help_link ) ) { + echo "" . __( 'Help', 'all-in-one-seo-pack' ) . ''; + } + + if ( ! isset( $location_settings[ $prefix ] ) ) { + $current_options = apply_filters( "{$this->prefix}display_options", $this->get_current_options( array(), $location, $defaults ), $location ); + $settings = apply_filters( "{$this->prefix}display_settings", $this->setting_options( $location, $defaults ), $location, $current_options ); + $current_options = apply_filters( "{$this->prefix}override_options", $current_options, $location, $settings ); + $location_settings[ $prefix ]['current_options'] = $current_options; + $location_settings[ $prefix ]['settings'] = $settings; + } else { + $current_options = $location_settings[ $prefix ]['current_options']; + $settings = $location_settings[ $prefix ]['settings']; + } + // $opts["snippet"]["default"] = sprintf( $opts["snippet"]["default"], "foo", "bar", "moby" ); + $container = "
"; + if ( is_array( $meta_args['args'] ) && ! empty( $meta_args['args']['options'] ) ) { + $args = array(); + $arg_keys = array(); + foreach ( $meta_args['args']['options'] as $a ) { + if ( ! empty( $location ) ) { + $key = $prefix . $location . '_' . $a; + if ( ! isset( $settings[ $key ] ) ) { + $key = $a; + } + } else { + $key = $prefix . $a; + } + if ( isset( $settings[ $key ] ) ) { + $arg_keys[ $key ] = 1; + } elseif ( isset( $settings[ $a ] ) ) { + $arg_keys[ $a ] = 1; + } + } + $setting_keys = array_keys( $settings ); + foreach ( $setting_keys as $s ) { + if ( ! empty( $arg_keys[ $s ] ) ) { + $args[ $s ] = $settings[ $s ]; + } + } + } else { + $args = $settings; + } + foreach ( $args as $name => $opts ) { + $attr_list = array( 'class', 'style', 'readonly', 'disabled', 'size', 'placeholder' ); + if ( $opts['type'] == 'textarea' ) { + $attr_list = array_merge( $attr_list, array( 'rows', 'cols' ) ); + } + $attr = ''; + foreach ( $attr_list as $a ) { + if ( isset( $opts[ $a ] ) ) { + $attr .= ' ' . $a . '="' . esc_attr( $opts[ $a ] ) . '" '; + } + } + $opt = ''; + if ( isset( $current_options[ $name ] ) ) { + $opt = $current_options[ $name ]; + } + if ( $opts['label'] == 'none' && $opts['type'] == 'submit' && $opts['save'] == false ) { + $opt = $opts['name']; + } + if ( $opts['type'] == 'html' && empty( $opt ) && $opts['save'] == false ) { + $opt = $opts['default']; + } + + $args = array( + 'name' => $name, + 'options' => $opts, + 'attr' => $attr, + 'value' => $opt, + 'prefix' => $prefix, + ); + if ( ! empty( $opts['nowrap'] ) ) { + echo $this->get_option_html( $args ); + } else { + if ( $container ) { + echo $container; + $container = ''; + } + echo $this->get_option_row( $name, $opts, $args ); + } + } + if ( ! $container ) { + echo '
'; + } + } + + /** + * @param $domain + * + * @return mixed|string + */ + function sanitize_domain( $domain ) { + $domain = trim( $domain ); + $domain = $this->strtolower( $domain ); + if ( $this->strpos( $domain, 'http://' ) === 0 ) { + $domain = $this->substr( $domain, 7 ); + } elseif ( $this->strpos( $domain, 'https://' ) === 0 ) { + $domain = $this->substr( $domain, 8 ); + } + $domain = untrailingslashit( $domain ); + + return $domain; + } + + /** Sanitize options + * + * @param null $location + */ + function sanitize_options( $location = null ) { + foreach ( $this->setting_options( $location ) as $k => $v ) { + if ( isset( $this->options[ $k ] ) ) { + if ( ! empty( $v['sanitize'] ) ) { + $type = $v['sanitize']; + } else { + $type = $v['type']; + } + switch ( $type ) { + case 'multiselect': + case 'multicheckbox': + $this->options[ $k ] = urlencode_deep( $this->options[ $k ] ); + break; + case 'textarea': + $this->options[ $k ] = wp_kses_post( $this->options[ $k ] ); + $this->options[ $k ] = htmlspecialchars( $this->options[ $k ], ENT_QUOTES ); + break; + case 'filename': + $this->options[ $k ] = sanitize_file_name( $this->options[ $k ] ); + break; + case 'text': + $this->options[ $k ] = wp_kses_post( $this->options[ $k ] ); + case 'checkbox': + case 'radio': + case 'select': + default: + if ( ! is_array( $this->options[ $k ] ) ) { + $this->options[ $k ] = esc_attr( $this->options[ $k ] ); + } + } + } + } + } + + /** + * Display metaboxes with display_options() + * + * @param $post + * @param $metabox + */ + function display_metabox( $post, $metabox ) { + $this->display_options( $metabox['args']['location'], $metabox ); + } + + /** + * Handle resetting options to defaults. + * + * @param null $location + * @param bool $delete + */ + function reset_options( $location = null, $delete = false ) { + if ( $delete === true ) { + $this->delete_class_option( $delete ); + $this->options = array(); + } + $default_options = $this->default_options( $location ); + foreach ( $default_options as $k => $v ) { + $this->options[ $k ] = $v; + } + $this->update_class_option( $this->options ); + } + + /** handle option resetting and updating + * + * @param null $location + * + * @return mixed|string|void + */ + function handle_settings_updates( $location = null ) { + $message = ''; + if ( ( isset( $_POST['action'] ) && $_POST['action'] == 'aiosp_update_module' && + ( isset( $_POST['Submit_Default'] ) || isset( $_POST['Submit_All_Default'] ) || ! empty( $_POST['Submit'] ) ) ) + ) { + $nonce = $_POST['nonce-aioseop']; + if ( ! wp_verify_nonce( $nonce, 'aioseop-nonce' ) ) { + die ( __( 'Security Check - If you receive this in error, log out and back in to WordPress', 'all-in-one-seo-pack' ) ); + } + if ( isset( $_POST['Submit_Default'] ) || isset( $_POST['Submit_All_Default'] ) ) { + $message = __( 'Options Reset.', 'all-in-one-seo-pack' ); + if ( isset( $_POST['Submit_All_Default'] ) ) { + $this->reset_options( $location, true ); + do_action( 'aioseop_options_reset' ); + } else { + $this->reset_options( $location ); + } + } + if ( ! empty( $_POST['Submit'] ) ) { + $message = __( 'All in One SEO Options Updated.', 'all-in-one-seo-pack' ); + $default_options = $this->default_options( $location ); + foreach ( $default_options as $k => $v ) { + if ( isset( $_POST[ $k ] ) ) { + $this->options[ $k ] = stripslashes_deep( $_POST[ $k ] ); + } else { + $this->options[ $k ] = ''; + } + } + $this->sanitize_options( $location ); + $this->options = apply_filters( $this->prefix . 'update_options', $this->options, $location ); + $this->update_class_option( $this->options ); + wp_cache_flush(); + } + do_action( $this->prefix . 'settings_update', $this->options, $location ); + } + + return $message; + } + + /** Update / reset settings, printing options, sanitizing, posting back + * + * @param null $location + */ + function display_settings_page( $location = null ) { + if ( $location != null ) { + $location_info = $this->locations[ $location ]; + } + $name = null; + if ( $location && isset( $location_info['name'] ) ) { + $name = $location_info['name']; + } + if ( ! $name ) { + $name = $this->name; + } + $message = $this->handle_settings_updates( $location ); + $this->settings_page_init(); + ?> +
+
+

$message

"; + } ?> +

+

+ +
+ prefix . 'settings_header', $location ); + ?> +
+
+
+ array( 'type' => 'hidden', 'value' => 'aiosp_update_module' ), + 'module' => array( 'type' => 'hidden', 'value' => get_class( $this ) ), + 'location' => array( 'type' => 'hidden', 'value' => $location ), + 'nonce-aioseop' => array( + 'type' => 'hidden', + 'value' => wp_create_nonce( 'aioseop-nonce' ), + ), + 'page_options' => array( 'type' => 'hidden', 'value' => 'aiosp_home_description' ), + 'Submit' => array( + 'type' => 'submit', + 'class' => 'button-primary', + 'value' => __( 'Update Options', 'all-in-one-seo-pack' ) . ' »', + ), + 'Submit_Default' => array( + 'type' => 'submit', + 'class' => 'button-secondary', + 'value' => __( sprintf( 'Reset %s Settings to Defaults', $name ), 'all-in-one-seo-pack' ) . ' »', + ), + ); + $submit_options = apply_filters( "{$this->prefix}submit_options", $submit_options, $location ); + foreach ( $submit_options as $k => $s ) { + if ( $s['type'] == 'submit' && $k != 'Submit' ) { + continue; + } + $class = ''; + if ( isset( $s['class'] ) ) { + $class = " class='{$s['class']}' "; + } + echo $this->get_option_html( array( + 'name' => $k, + 'options' => $s, + 'attr' => $class, + 'value' => $s['value'], + ) ); + } + ?> +
+
+ get_class_option(); + if ( $opts !== false ) { + $this->options = $opts; + } + if ( is_array( $this->layout ) ) { + foreach ( $this->layout as $l => $lopts ) { + if ( ! isset( $lopts['tab'] ) || ( $this->current_tab == $lopts['tab'] ) ) { + $title = $lopts['name']; + if ( ! empty( $lopts['help_link'] ) ) { + $title .= "" . __( 'Help', 'all-in-one-seo-pack' ) . ''; + } + add_meta_box( $this->get_prefix( $location ) . $l . '_metabox', $title, array( + $this, + 'display_options', + ), + "{$this->prefix}settings", 'advanced', 'default', $lopts ); + } + } + } else { + add_meta_box( $this->get_prefix( $location ) . 'metabox', $name, array( + $this, + 'display_options', + ), "{$this->prefix}settings", 'advanced' ); + } + do_meta_boxes( "{$this->prefix}settings", 'advanced', $location ); + ?>

$s ) { + $class = ''; + if ( isset( $s['class'] ) ) { + $class = " class='{$s['class']}' "; + } + echo $this->get_option_html( array( + 'name' => $k, + 'options' => $s, + 'attr' => $class, + 'value' => $s['value'], + ) ); + } + ?>

+
+
+ prefix . 'settings_footer', $location ); + do_action( 'aioseop_global_settings_footer', $location ); ?> +
locations[ $location ]['prefix'] ) ) { + return $this->locations[ $location ]['prefix']; + } + + return $this->prefix; + } + + /** Sets up initial settings + * + * @param null $location + * @param null $defaults + * + * @return array + */ + function setting_options( $location = null, $defaults = null ) { + if ( $defaults === null ) { + $defaults = $this->default_options; + } + $prefix = $this->get_prefix( $location ); + $opts = array(); + if ( $location == null || $this->locations[ $location ]['options'] === null ) { + $options = $defaults; + } else { + $options = array(); + $prefix = "{$prefix}{$location}_"; + if ( ! empty( $this->locations[ $location ]['default_options'] ) ) { + $options = $this->locations[ $location ]['default_options']; + } + foreach ( $this->locations[ $location ]['options'] as $opt ) { + if ( isset( $defaults[ $opt ] ) ) { + $options[ $opt ] = $defaults[ $opt ]; + } + } + } + if ( ! $prefix ) { + $prefix = $this->prefix; + } + if ( ! empty( $options ) ) { + foreach ( $options as $k => $v ) { + if ( ! isset( $v['name'] ) ) { + $v['name'] = $this->ucwords( strtr( $k, '_', ' ' ) ); + } + if ( ! isset( $v['type'] ) ) { + $v['type'] = 'checkbox'; + } + if ( ! isset( $v['default'] ) ) { + $v['default'] = null; + } + if ( ! isset( $v['initial_options'] ) ) { + $v['initial_options'] = $v['default']; + } + if ( $v['type'] == 'custom' && ( ! isset( $v['nowrap'] ) ) ) { + $v['nowrap'] = true; + } elseif ( ! isset( $v['nowrap'] ) ) { + $v['nowrap'] = null; + } + if ( isset( $v['condshow'] ) ) { + if ( ! is_array( $this->script_data ) ) { + $this->script_data = array(); + } + if ( ! isset( $this->script_data['condshow'] ) ) { + $this->script_data['condshow'] = array(); + } + $this->script_data['condshow'][ $prefix . $k ] = $v['condshow']; + } + if ( $v['type'] == 'submit' ) { + if ( ! isset( $v['save'] ) ) { + $v['save'] = false; + } + if ( ! isset( $v['label'] ) ) { + $v['label'] = 'none'; + } + if ( ! isset( $v['prefix'] ) ) { + $v['prefix'] = false; + } + } else { + if ( ! isset( $v['label'] ) ) { + $v['label'] = null; + } + } + if ( $v['type'] == 'hidden' ) { + if ( ! isset( $v['label'] ) ) { + $v['label'] = 'none'; + } + if ( ! isset( $v['prefix'] ) ) { + $v['prefix'] = false; + } + } + if ( ( $v['type'] == 'text' ) && ( ! isset( $v['size'] ) ) ) { + $v['size'] = 57; + } + if ( $v['type'] == 'textarea' ) { + if ( ! isset( $v['cols'] ) ) { + $v['cols'] = 57; + } + if ( ! isset( $v['rows'] ) ) { + $v['rows'] = 2; + } + } + if ( ! isset( $v['save'] ) ) { + $v['save'] = true; + } + if ( ! isset( $v['prefix'] ) ) { + $v['prefix'] = true; + } + if ( $v['prefix'] ) { + $opts[ $prefix . $k ] = $v; + } else { + $opts[ $k ] = $v; + } + } + } + + return $opts; + } + + /** Generates just the default option names and values + * + * @param null $location + * @param null $defaults + * + * @return array + */ + function default_options( $location = null, $defaults = null ) { + $options = $this->setting_options( $location, $defaults ); + $opts = array(); + foreach ( $options as $k => $v ) { + if ( $v['save'] ) { + $opts[ $k ] = $v['default']; + } + } + + return $opts; + } + + /** Gets the current options stored for a given location. + * + * @param array $opts + * @param null $location + * @param null $defaults + * @param null $post + * + * @return array + */ + function get_current_options( $opts = array(), $location = null, $defaults = null, $post = null ) { + $prefix = $this->get_prefix( $location ); + $get_opts = ''; + if ( empty( $location ) ) { + $type = 'settings'; + } else { + $type = $this->locations[ $location ]['type']; + } + if ( $type === 'settings' ) { + $get_opts = $this->get_class_option(); + } elseif ( $type == 'metabox' ) { + if ( $post == null ) { + global $post; + } + + if ( ( isset( $_GET['taxonomy'] ) && isset( $_GET['tag_ID'] ) ) || is_category() || is_tag() || is_tax() ) { + + if ( AIOSEOPPRO ) { + $get_opts = AIO_ProGeneral::getprotax( $get_opts ); + } + + } elseif ( isset( $post ) ) { + $get_opts = get_post_meta( $post->ID, '_' . $prefix . $location, true ); + } + } + $defs = $this->default_options( $location, $defaults ); + if ( $get_opts == '' ) { + $get_opts = $defs; + } else { + $get_opts = wp_parse_args( $get_opts, $defs ); + } + $opts = wp_parse_args( $opts, $get_opts ); + + return $opts; + } + + /** Updates the options array in the module; loads saved settings with get_option() or uses defaults + * + * @param array $opts + * @param null $location + * @param null $defaults + */ + function update_options( $opts = array(), $location = null, $defaults = null ) { + if ( $location === null ) { + $type = 'settings'; + } else { + $type = $this->locations[ $location ][ $type ]; + } + if ( $type === 'settings' ) { + $get_opts = $this->get_class_option(); + } + if ( $get_opts === false ) { + $get_opts = $this->default_options( $location, $defaults ); + } else { + $this->setting_options( $location, $defaults ); + } // hack -- make sure this runs anyhow, for now -- pdb + $this->options = wp_parse_args( $opts, $get_opts ); + } + } +} diff --git a/plugins/all-in-one-seo-pack/admin/aioseop_module_manager.php b/plugins/all-in-one-seo-pack/admin/aioseop_module_manager.php new file mode 100644 index 0000000..1700c5d --- /dev/null +++ b/plugins/all-in-one-seo-pack/admin/aioseop_module_manager.php @@ -0,0 +1,208 @@ +modules['feature_manager'] = null; + foreach ( $mod as $m ) { + $this->modules[ $m ] = null; + } + $reset = false; + $reset_all = ( isset( $_POST['Submit_All_Default'] ) && '' !== $_POST['Submit_All_Default'] ); + $reset = ( ( isset( $_POST['Submit_Default'] ) && '' !== $_POST['Submit_Default'] ) || $reset_all ); + $update = ( isset( $_POST['action'] ) && $_POST['action'] + && ( ( isset( $_POST['Submit'] ) && '' !== $_POST['Submit'] ) || $reset ) + ); + if ( $update ) { + if ( $reset ) { + $this->settings_reset = true; + } + if ( $reset_all ) { + $this->settings_reset_all = true; + } + if ( 'aiosp_update' === $_POST['action'] ) { + $this->settings_update = true; + } + if ( 'aiosp_update_module' === $_POST['action'] ) { + $this->module_settings_update = true; + } + } + $this->do_load_module( 'feature_manager', $mod ); + } + + /** + * Return module. + * + * @param $class + * + * @return $this|bool|mixed + */ + function return_module( $class ) { + global $aiosp; + if ( get_class( $aiosp ) === $class ) { + return $aiosp; + } + if ( get_class( $aiosp ) === $class ) { + return $this; + } + foreach ( $this->modules as $m ) { + if ( is_object( $m ) && ( get_class( $m ) === $class ) ) { + return $m; + } + } + + return false; + } + + /** + * @return array + */ + function get_loaded_module_list() { + $module_list = array(); + if ( ! empty( $this->modules ) ) { + foreach ( $this->modules as $k => $v ) { + if ( ! empty( $v ) ) { + $module_list[ $k ] = get_class( $v ); + } + } + } + + return $module_list; + } + + /** + * @param $mod Module. + * @param null $args + * + * @return bool + */ + function do_load_module( $mod, $args = null ) { + // Module name is used for these automatic settings: + // The aiosp_enable_$module settings - whether each plugin is active or not. + // The name of the .php file containing the module - aioseop_$module.php. + // The name of the class - All_in_One_SEO_Pack_$Module. + // The global $aioseop_$module. + // $this->modules[$module]. + + $mod_path = apply_filters( "aioseop_include_$mod", AIOSEOP_PLUGIN_DIR . "modules/aioseop_$mod.php" ); + if ( ! empty( $mod_path ) ) { + require_once( $mod_path ); + } + $ref = "aioseop_$mod"; + $classname = 'All_in_One_SEO_Pack_' . strtr( ucwords( strtr( $mod, '_', ' ' ) ), ' ', '_' ); + $classname = apply_filters( "aioseop_class_$mod", $classname ); + $module_class = new $classname( $args ); + $GLOBALS[ $ref ] = $module_class; + $this->modules[ $mod ] = $module_class; + if ( is_user_logged_in() && is_admin_bar_showing() && current_user_can( 'aiosp_manage_seo' ) ) { + add_action( 'admin_bar_menu', array( + $module_class, + 'add_admin_bar_submenu', + ), 1001 + $module_class->menu_order() ); + } + if ( is_admin() ) { + add_action( 'aioseop_modules_add_menus', array( + $module_class, + 'add_menu', + ), $module_class->menu_order() ); + add_action( 'aiosoep_options_reset', array( $module_class, 'reset_options' ) ); + add_filter( 'aioseop_export_settings', array( $module_class, 'settings_export' ) ); + } + + return true; + } + + /** + * @param $mod + * + * @return bool + */ + function load_module( $mod ) { + static $feature_options = null; + static $feature_prefix = null; + if ( ! is_array( $this->modules ) ) { + return false; + } + $v = $this->modules[ $mod ]; + if ( null !== $v ) { + return false; + } // Already loaded. + if ( 'performance' === $mod && ! is_super_admin() ) { + return false; + } + if ( ( 'file_editor' === $mod || 'robots' === $mod ) + && ( ( defined( 'DISALLOW_FILE_EDIT' ) && DISALLOW_FILE_EDIT ) + || ( defined( 'DISALLOW_FILE_MODS' ) && DISALLOW_FILE_MODS ) + || ! is_super_admin() ) + ) { + return false; + } + $mod_enable = false; + $fm_page = ( $this->module_settings_update && wp_verify_nonce( $_POST['nonce-aioseop'], 'aioseop-nonce' ) && + isset( $_REQUEST['page'] ) && trailingslashit( AIOSEOP_PLUGIN_DIRNAME ) . 'modules/aioseop_feature_manager.php' === $_REQUEST['page'] ); + if ( $fm_page && ! $this->settings_reset ) { + if ( isset( $_POST["aiosp_feature_manager_enable_$mod"] ) ) { + $mod_enable = $_POST["aiosp_feature_manager_enable_$mod"]; + } else { + $mod_enable = false; + } + } else { + if ( null === $feature_prefix ) { + $feature_prefix = $this->modules['feature_manager']->get_prefix(); + } + if ( $fm_page && $this->settings_reset ) { + $feature_options = $this->modules['feature_manager']->default_options(); + } + if ( null === $feature_options ) { + if ( $this->module_settings_update && $this->settings_reset_all && wp_verify_nonce( $_POST['nonce-aioseop'], 'aioseop-nonce' ) ) { + $feature_options = $this->modules['feature_manager']->default_options(); + } else { + $feature_options = $this->modules['feature_manager']->get_current_options(); + } + } + if ( isset( $feature_options["{$feature_prefix}enable_$mod"] ) ) { + $mod_enable = $feature_options["{$feature_prefix}enable_$mod"]; + } + } + if ( $mod_enable ) { + return $this->do_load_module( $mod ); + } + + return false; + } + + function load_modules() { + if ( is_array( $this->modules ) ) { + foreach ( $this->modules as $k => $v ) { + $this->load_module( $k ); + } + } + } + } +} diff --git a/plugins/all-in-one-seo-pack/admin/display/credits-content.php b/plugins/all-in-one-seo-pack/admin/display/credits-content.php new file mode 100644 index 0000000..f59e5c5 --- /dev/null +++ b/plugins/all-in-one-seo-pack/admin/display/credits-content.php @@ -0,0 +1,107 @@ + diff --git a/plugins/all-in-one-seo-pack/admin/display/dashboard_widget.php b/plugins/all-in-one-seo-pack/admin/display/dashboard_widget.php new file mode 100644 index 0000000..0a47f6c --- /dev/null +++ b/plugins/all-in-one-seo-pack/admin/display/dashboard_widget.php @@ -0,0 +1,121 @@ +show_widget() ) { + wp_add_dashboard_widget( "semperplugins-rss-feed", __( 'SEO News', 'all-in-one-seo-pack' ), array( + $this, + 'aioseop_display_rss_dashboard_widget', + ) ); + } + + } + + /** + * @since 2.3.10.2 + */ + function show_widget() { + + $show = true; + + if ( apply_filters( 'aioseo_show_seo_news', true ) === false ) { + // API filter hook to disable showing SEO News dashboard widget. + return false; + } + + global $aioseop_options; + + if ( AIOSEOPPRO && isset( $aioseop_options['aiosp_showseonews'] ) && ! $aioseop_options['aiosp_showseonews'] ) { + return false; + } + + return $show; + } + + /** + * @since 2.3.10 + */ + function aioseop_display_rss_dashboard_widget() { + + include_once( ABSPATH . WPINC . "/feed.php" ); + + if ( false === ( $rss_items = get_transient( 'aioseop_feed' ) ) ) { + + $rss = fetch_feed( "https://www.semperplugins.com/feed/" ); + if ( is_wp_error( $rss ) ) { + echo '{Temporarily unable to load feed.}'; + + return; + } + $rss_items = $rss->get_items( 0, 4 ); // Show four items. + + $cached = array(); + foreach ( $rss_items as $item ) { + $cached[] = array( + 'url' => $item->get_permalink(), + 'title' => $item->get_title(), + 'date' => $item->get_date( "M jS Y" ), + 'content' => substr( strip_tags( $item->get_content() ), 0, 128 ) . "...", + ); + } + $rss_items = $cached; + + set_transient( 'aioseop_feed', $cached, 12 * HOUR_IN_SECONDS ); + + } + + ?> + +
    + No items"; + + return; + } + + foreach ( $rss_items as $item ) { + ?> +
  • + + + + +
    + +
    +
  • + +
+ + "; + switch ( $meta['id'] ) { + case 'aioseop-about': + ?> +
+

+ ID; + $ignore = get_user_meta( $user_id, 'aioseop_ignore_notice' ); + if ( ! empty( $ignore ) ) { + $qa = Array(); + wp_parse_str( $_SERVER['QUERY_STRING'], $qa ); + $qa['aioseop_reset_notices'] = 1; + $url = '?' . build_query( $qa ); + echo '

' . __( 'Reset Dismissed Notices', 'all-in-one-seo-pack' ) . '

'; + } + if ( ! AIOSEOPPRO ) { + ?> +

+ to upgrade to Pro Version and get: +

+ +
+ +
+ + +
+

+ +

+
+ + +
+ +
+ + + +
+ +
+
+ percent_translated < 100 ) { + + /* translators: %1$s expands to the number of languages All in One SEO Pack has been translated into. $2%s to the percentage translated of the current language, $3%s to the language name, %4$s and %5$s to anchor tags with link to translation page at translate.wordpress.org */ + printf( __( + 'All in One SEO Pack has been translated into %1$s languages, but currently the %3$s translation is only %2$s percent complete. %4$s Click here %5$s to help get it to 100 percent.', 'all-in-one-seo-pack' ), + $aiosp_trans->translated_count, + $aiosp_trans->percent_translated, + $aiosp_trans->name, + "translation_url\" target=\"_BLANK\">", + '' ); + } + + ?> +
+ +
+ +
+
+

+

+ +

+

+

+
+
+ +
+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+
+ '; + } + + static function pro_meta_content() { + + echo '
    '; + + if ( class_exists( 'WooCommerce' ) ) { + echo '
  • Advanced support for WooCommerce
  • '; + }else{ + echo '
  • Advanced support for e-commerce
  • '; + } + + echo '
  • Video SEO Module
  • '; + echo '
  • SEO for Categories, Tags and Custom Taxonomies
  • '; + echo '
  • Access to Video Screencasts
  • '; + echo '
  • Access to Premium Support Forums
  • '; + echo '
  • Access to Knowledge Center
  • '; + + echo '
'; + + } + +} diff --git a/plugins/all-in-one-seo-pack/admin/display/index.php b/plugins/all-in-one-seo-pack/admin/display/index.php new file mode 100644 index 0000000..3c379e1 --- /dev/null +++ b/plugins/all-in-one-seo-pack/admin/display/index.php @@ -0,0 +1,4 @@ + +
+
+
+

+

+

+

+

+

+

+
+ +
+

+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • + +
  • +
  • +
  • +
  • +
  • +
+
+ +
+

+
    +
  • +
  • +
  • +
  • +
  • +
  • +
+
+
+
+

+ » +

+ diff --git a/plugins/all-in-one-seo-pack/admin/display/welcome.php b/plugins/all-in-one-seo-pack/admin/display/welcome.php new file mode 100644 index 0000000..b768640 --- /dev/null +++ b/plugins/all-in-one-seo-pack/admin/display/welcome.php @@ -0,0 +1,137 @@ + 'aioseop-about' ), admin_url( 'index.php' ) ) ); + exit; + } + + /** + * Outputs the about screen. + */ + function about_screen() { + aiosp_common::clear_wpe_cache(); + $version = AIOSEOP_VERSION; + + ?> + +
+

+
+ + + + +
+
+
+
+ +
+ + + wp_create_nonce( 'wpseo-import' ) ), admin_url( 'admin.php?page=wpseo_tools&tool=import-export&import=1&importaioseo=1#top#import-seo' ) ); + $aiourl = add_query_arg( array( '_wpnonce' => wp_create_nonce( 'aiosp-import' ) ), admin_url( 'tools.php?page=aiosp_import' ) ); + + $aioseop_yst_detected_notice_dismissed = get_user_meta( get_current_user_id(), 'aioseop_yst_detected_notice_dismissed', true ); + + if ( empty( $aioseop_yst_detected_notice_dismissed ) ) { + + echo '

', sprintf( esc_html__( 'The plugin Yoast SEO has been detected. Do you want to %simport its settings%s into All in One SEO Pack?', 'all-in-one-seo-pack' ), sprintf( '', esc_url( $aiourl ) ), '' ), '

'; + + } + + echo '

', sprintf( esc_html__( 'The plugin All-In-One-SEO has been detected. Do you want to %simport its settings%s?', 'wordpress-seo' ), sprintf( '', esc_url( $yoasturl ) ), '' ), '

'; + + } + + public function show_deactivate_notice() { + echo '

', esc_html__( 'All in One SEO has been deactivated', 'all-in-one-seo-pack' ), '

'; + } + } +} else { + if(is_admin()) { + add_action( 'init', 'mi_aioseop_yst_detected_notice_dismissed' ); + } +} + +/** + * Deletes the stored dismissal of the notice. + * + * This should only happen after reactivating after being deactivated. + */ +function mi_aioseop_yst_detected_notice_dismissed() { + delete_user_meta( get_current_user_id(), 'aioseop_yst_detected_notice_dismissed' ); +} + +/** + * Init for settings import class. + * + * At the moment we just register the admin menu page. + */ +function aiosp_seometa_settings_init() { + global $_aiosp_seometa_admin_pagehook; + + // TODO Put this in with the rest of the import/export stuff. + $_aiosp_seometa_admin_pagehook = add_submenu_page( 'tools.php', __( 'Import SEO Data', 'all-in-one-seo-pack' ), __( 'SEO Data Import', 'all-in-one-seo-pack' ), 'manage_options', 'aiosp_import', 'aiosp_seometa_admin' ); +} +add_action( 'admin_menu', 'aiosp_seometa_settings_init' ); + + +/** + * Intercept POST data from the form submission. + * + * Use the intercepted data to convert values in the postmeta table from one platform to another. + */ +function aiosp_seometa_action() { + + if ( empty( $_REQUEST['_wpnonce'] ) ) { + return; + } + + if ( empty( $_REQUEST['platform_old'] ) ) { + printf( '

%s

', __( 'Sorry, you can\'t do that. Please choose a platform and then click Analyze or Convert.' ) ); + + return; + } + + if ( 'All in One SEO Pack' === $_REQUEST['platform_old'] ) { + printf( '

%s

', __( 'Sorry, you can\'t do that. Please choose a platform and then click Analyze or Convert.' ) ); + + return; + } + + check_admin_referer( 'aiosp_nonce' ); // Verify nonce. TODO We should make this better. + + if ( ! empty( $_REQUEST['analyze'] ) ) { + + printf( '

%s

', __( 'Analysis Results', 'all-in-one-seo-pack' ) ); + + $response = aiosp_seometa_post_meta_analyze( $_REQUEST['platform_old'], 'All in One SEO Pack' ); + if ( is_wp_error( $response ) ) { + printf( '

%s

', __( 'Sorry, something went wrong. Please try again' ) ); + + return; + } + + printf( __( '

Analyzing records in a %s to %s conversion…', 'all-in-one-seo-pack' ), esc_html( $_POST['platform_old'] ), 'All in One SEO Pack' ); + printf( '

%d Compatible Records were identified

', $response->update ); + // printf( '

%d Compatible Records will be ignored

', $response->ignore ); + + printf( '

%s

', __( 'Compatible data:', 'all-in-one-seo-pack' ) ); + echo '
    '; + foreach ( (array) $response->elements as $element ) { + printf( '
  1. %s
  2. ', $element ); + } + echo '
'; + + return; + } + + printf( '

%s

', __( 'Conversion Results', 'all-in-one-seo-pack' ) ); + + $result = aiosp_seometa_post_meta_convert( stripslashes( $_REQUEST['platform_old'] ), 'All in One SEO Pack' ); + if ( is_wp_error( $result ) ) { + printf( '

%s

', __( 'Sorry, something went wrong. Please try again' ) ); + + return; + } + + printf( '

%d Records were updated

', isset( $result->updated ) ? $result->updated : 0 ); + printf( '

%d Records were ignored

', isset( $result->ignored ) ? $result->ignored : 0 ); + +} + +/** + * This function displays feedback to the user about compatible conversion + * elements and the conversion process via the admin_alert hook. + */ + +/** + * The admin page output + */ +function aiosp_seometa_admin() { + global $_aiosp_seometa_themes, $_aiosp_seometa_plugins, $_aiosp_seometa_platforms; + ?> + +
+ + +

+ +

+

+ +

+

+ +

+

+ +

+

+ +

', esc_url( 'https://semperfiwebdesign.com/backupbuddy/' ) ), '' ); ?> +

+ + +
+ '; + printf( '', __( 'Choose platform:', 'all-in-one-seo-pack' ) ); + + printf( '', __( 'Plugins', 'all-in-one-seo-pack' ) ); + foreach ( $_aiosp_seometa_plugins as $platform => $data ) { + if ( 'All in One SEO Pack' !== $platform ) { + printf( '', $platform, selected( $platform, $platform_old, 0 ), $platform ); + } + } + printf( '' ); + + printf( '', __( 'Themes', 'all-in-one-seo-pack' ) ); + foreach ( $_aiosp_seometa_themes as $platform => $data ) { + printf( '', $platform, selected( $platform, $platform_old, 0 ), $platform ); + } + printf( '' ); + + echo '' . "\n\n"; + + ?> + + + + +
+ + + +
+ + WP_Error = 1; + + return $output; + } + + // See which records we need to ignore, if any. + $exclude = $wpdb->get_results( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = %s", $new ) ); + + // If no records to ignore, we'll do a basic UPDATE and DELETE. + if ( ! $exclude ) { + + $output->updated = $wpdb->update( $wpdb->postmeta, array( 'meta_key' => $new ), array( 'meta_key' => $old ) ); + $output->deleted = $delete_old ? $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE meta_key = %s", $old ) ) : 0; + $output->ignored = 0; + + } // Else, do a more complex UPDATE and DELETE. + else { + + foreach ( (array) $exclude as $key => $value ) { + $not_in[] = $value->post_id; + } + $not_in = implode( ', ', (array) $not_in ); + + $output->updated = $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->postmeta SET meta_key = %s WHERE meta_key = %s AND post_id NOT IN ($not_in)", $new, $old ) ); + $output->deleted = $delete_old ? $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE meta_key = %s", $old ) ) : 0; + $output->ignored = count( $exclude ); + + } + + do_action( 'aiosp_seometa_meta_key_convert', $output, $old, $new, $delete_old ); + + return $output; + +} + +/** + * Convert old to new postmeta. + * + * Cycle through all compatible SEO entries of two platforms and aiosp_seometa_meta_key_convert conversion for each key. + * + * @param string $old_platform + * @param string $new_platform + * @param bool $delete_old + * + * @return stdClass Results object. + */ +function aiosp_seometa_post_meta_convert( $old_platform = '', $new_platform = 'All in One SEO Pack', $delete_old = false ) { + + do_action( 'pre_aiosp_seometa_post_meta_convert', $old_platform, $new_platform, $delete_old ); + + global $_aiosp_seometa_platforms; + + $output = new stdClass; + + if ( empty( $_aiosp_seometa_platforms[ $old_platform ] ) || empty( $_aiosp_seometa_platforms[ $new_platform ] ) ) { + $output->WP_Error = 1; + + return $output; + } + + $output->updated = 0; + $output->deleted = 0; + $output->ignored = 0; + + foreach ( (array) $_aiosp_seometa_platforms[ $old_platform ] as $label => $meta_key ) { + + // Skip iterations where no $new analog exists. + if ( empty( $_aiosp_seometa_platforms[ $new_platform ][ $label ] ) ) { + continue; + } + + // Set $old and $new meta_key values. + $old = $_aiosp_seometa_platforms[ $old_platform ][ $label ]; + $new = $_aiosp_seometa_platforms[ $new_platform ][ $label ]; + + // Convert. + $result = aiosp_seometa_meta_key_convert( $old, $new, $delete_old ); + + // Error check. + if ( is_wp_error( $result ) ) { + continue; + } + + // Update total updated/ignored count. + $output->updated += (int) $result->updated; + $output->ignored += (int) $result->ignored; + + } + + do_action( 'aiosp_seometa_post_meta_convert', $output, $old_platform, $new_platform, $delete_old ); + + return $output; + +} + +/** + * Analyze two platforms to find shared and compatible elements. + * + * See what data can be converted from one to the other. + * + * @param string $old_platform + * @param string $new_platform + * + * @return stdClass + */ +function aiosp_seometa_post_meta_analyze( $old_platform = '', $new_platform = 'All in One SEO Pack' ) { + // TODO Figure out which elements to ignore. + do_action( 'pre_aiosp_seometa_post_meta_analyze', $old_platform, $new_platform ); + + global $wpdb, $_aiosp_seometa_platforms; + + $output = new stdClass; + + if ( empty( $_aiosp_seometa_platforms[ $old_platform ] ) || empty( $_aiosp_seometa_platforms[ $new_platform ] ) ) { + $output->WP_Error = 1; + + return $output; + } + + $output->update = 0; + $output->ignore = 0; + $output->elements = ''; + + foreach ( (array) $_aiosp_seometa_platforms[ $old_platform ] as $label => $meta_key ) { + + // Skip iterations where no $new analog exists. + if ( empty( $_aiosp_seometa_platforms[ $new_platform ][ $label ] ) ) { + continue; + } + + $elements[] = $label; + + // See which records to ignore, if any. + $ignore = 0; + // $ignore = $wpdb->get_results( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = %s", $meta_key ) ); + + // See which records to update, if any. + $update = $wpdb->get_results( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = %s", $meta_key ) ); + + // Count items in returned arrays. + // $ignore = count( (array)$ignore ); + $update = count( (array) $update ); + + // Calculate update/ignore by comparison. + // $update = ( (int)$update > (int)$ignore ) ? ( (int)$update - (int)$ignore ) : 0; + + // update output numbers + $output->update += (int) $update; + $output->ignore += (int) $ignore; + + } + + $output->elements = $elements; + + do_action( 'aiosp_seometa_post_meta_analyze', $output, $old_platform, $new_platform ); + + return $output; + +} + + +// define('aiosp_seometa_PLUGIN_DIR', dirname(__FILE__)); + +//add_action( 'plugins_loaded', 'aiosp_seometa_import' ); +/** + * Initialize the SEO Data Transporter plugin + */ +function aiosp_seometa_import() { + + global $_aiosp_seometa_themes, $_aiosp_seometa_plugins, $_aiosp_seometa_platforms; + + /** + * The associative array of supported themes. + */ + $_aiosp_seometa_themes = array( + // alphabatized + 'Builder' => array( + 'Custom Doctitle' => '_builder_seo_title', + 'META Description' => '_builder_seo_description', + 'META Keywords' => '_builder_seo_keywords', + ), + 'Catalyst' => array( + 'Custom Doctitle' => '_catalyst_title', + 'META Description' => '_catalyst_description', + 'META Keywords' => '_catalyst_keywords', + 'noindex' => '_catalyst_noindex', + 'nofollow' => '_catalyst_nofollow', + 'noarchive' => '_catalyst_noarchive', + ), + 'Frugal' => array( + 'Custom Doctitle' => '_title', + 'META Description' => '_description', + 'META Keywords' => '_keywords', + 'noindex' => '_noindex', + 'nofollow' => '_nofollow', + ), + 'Genesis' => array( + 'Custom Doctitle' => '_genesis_title', + 'META Description' => '_genesis_description', + 'META Keywords' => '_genesis_keywords', + 'noindex' => '_genesis_noindex', + 'nofollow' => '_genesis_nofollow', + 'noarchive' => '_genesis_noarchive', + 'Canonical URI' => '_genesis_canonical_uri', + 'Custom Scripts' => '_genesis_scripts', + 'Redirect URI' => 'redirect', + ), + 'Headway' => array( + 'Custom Doctitle' => '_title', + 'META Description' => '_description', + 'META Keywords' => '_keywords', + ), + 'Hybrid' => array( + 'Custom Doctitle' => 'Title', + 'META Description' => 'Description', + 'META Keywords' => 'Keywords', + ), + 'Thesis 1.x' => array( + 'Custom Doctitle' => 'thesis_title', + 'META Description' => 'thesis_description', + 'META Keywords' => 'thesis_keywords', + 'Custom Scripts' => 'thesis_javascript_scripts', + 'Redirect URI' => 'thesis_redirect', + ), + /* + 'Thesis 2.x' => array( + 'Custom Doctitle' => '_thesis_title_tag', + 'META Description' => '_thesis_meta_description', + 'META Keywords' => '_thesis_meta_keywords', + 'Custom Scripts' => '_thesis_javascript_scripts', + 'Canonical URI' => '_thesis_canonical_link', + 'Redirect URI' => '_thesis_redirect', + ), + */ + 'WooFramework' => array( + 'Custom Doctitle' => 'seo_title', + 'META Description' => 'seo_description', + 'META Keywords' => 'seo_keywords', + ), + ); + + /** + * The associative array of supported plugins. + */ + $_aiosp_seometa_plugins = array( + // alphabatized + 'Add Meta Tags' => array( + 'Custom Doctitle' => '_amt_title', + 'META Description' => '_amt_description', + 'META Keywords' => '_amt_keywords', + ), + 'All in One SEO Pack' => array( + 'Custom Doctitle' => '_aioseop_title', + 'META Description' => '_aioseop_description', + 'META Keywords' => '_aioseop_keywords', + ), + 'Greg\'s High Performance SEO' => array( + 'Custom Doctitle' => '_ghpseo_secondary_title', + 'META Description' => '_ghpseo_alternative_description', + 'META Keywords' => '_ghpseo_keywords', + ), + 'Headspace2' => array( + 'Custom Doctitle' => '_headspace_page_title', + 'META Description' => '_headspace_description', + 'META Keywords' => '_headspace_keywords', + 'Custom Scripts' => '_headspace_scripts', + ), + 'Infinite SEO' => array( + 'Custom Doctitle' => '_wds_title', + 'META Description' => '_wds_metadesc', + 'META Keywords' => '_wds_keywords', + 'noindex' => '_wds_meta-robots-noindex', + 'nofollow' => '_wds_meta-robots-nofollow', + 'Canonical URI' => '_wds_canonical', + 'Redirect URI' => '_wds_redirect', + ), + 'Meta SEO Pack' => array( + 'META Description' => '_msp_description', + 'META Keywords' => '_msp_keywords', + ), + 'Platinum SEO' => array( + 'Custom Doctitle' => 'title', + 'META Description' => 'description', + 'META Keywords' => 'keywords', + ), + 'SEO Title Tag' => array( + 'Custom Doctitle' => 'title_tag', + 'META Description' => 'meta_description', + ), + 'SEO Ultimate' => array( + 'Custom Doctitle' => '_su_title', + 'META Description' => '_su_description', + 'META Keywords' => '_su_keywords', + 'noindex' => '_su_meta_robots_noindex', + 'nofollow' => '_su_meta_robots_nofollow', + ), + 'Yoast SEO' => array( + 'Custom Doctitle' => '_yoast_wpseo_title', + 'META Description' => '_yoast_wpseo_metadesc', + 'META Keywords' => '_yoast_wpseo_metakeywords', + 'noindex' => '_yoast_wpseo_meta-robots-noindex', + 'nofollow' => '_yoast_wpseo_meta-robots-nofollow', + 'Canonical URI' => '_yoast_wpseo_canonical', + 'Redirect URI' => '_yoast_wpseo_redirect', + ), + ); + + /** + * The combined array of supported platforms. + */ + $_aiosp_seometa_platforms = array_merge( $_aiosp_seometa_themes, $_aiosp_seometa_plugins ); + + /** + * Include the other elements of the plugin. + */ + // require_once( aiosp_seometa_PLUGIN_DIR . '/admin.php' ); + // require_once( aiosp_seometa_PLUGIN_DIR . '/functions.php' ); + + /** + * Init hook. + * + * Hook fires after plugin functions are loaded. + * + * @since 0.9.10 + * + */ + do_action( 'aiosp_seometa_import' ); + +} + +/** + * Activation Hook + * @since 0.9.4 + */ +register_activation_hook( __FILE__, 'aiosp_seometa_activation_hook' ); +function aiosp_seometa_activation_hook() { + + // require_once( aiosp_seometa_PLUGIN_DIR . '/functions.php' ); + + aiosp_seometa_meta_key_convert( '_yoast_seo_title', 'yoast_wpseo_title', true ); + aiosp_seometa_meta_key_convert( '_yoast_seo_metadesc', 'yoast_wpseo_metadesc', true ); + +} + +/** + * Manual conversion test + */ +/* +$aiosp_seometa_convert = aiosp_seometa_post_meta_convert( 'All in One SEO Pack', 'Genesis', false ); +printf( '%d records were updated', $aiosp_seometa_convert->updated ); +/**/ + +/** + * Manual analysis test + */ +/* +$aiosp_seometa_analyze = aiosp_seometa_post_meta_analyze( 'All in One SEO Pack', 'Genesis' ); +printf( '

%d Compatible Records were identified

', $aiosp_seometa_analyze->update ); +/**/ + +/** + * Delete all SEO data, from every platform + */ +/* +foreach ( $_aiosp_seometa_platforms as $platform => $data ) { + + foreach ( $data as $field ) { + $deleted = $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE meta_key = %s", $field ) ); + printf( '%d %s records deleted
', $deleted, $field ); + } + +} +/**/ + +/** + * Query all SEO data to find the number of records to change + */ + + diff --git a/plugins/all-in-one-seo-pack/aioseop-init.php b/plugins/all-in-one-seo-pack/aioseop-init.php new file mode 100644 index 0000000..8e205b8 --- /dev/null +++ b/plugins/all-in-one-seo-pack/aioseop-init.php @@ -0,0 +1,7 @@ +log_file = dirname( __FILE__ ) . '/all-in-one-seo-pack.log'; // PHP <5.3 compatibility, once we drop support we can use __DIR___. + + if ( ! empty( $aioseop_options ) && isset( $aioseop_options['aiosp_do_log'] ) && $aioseop_options['aiosp_do_log'] ) { + $this->do_log = true; + } else { + $this->do_log = false; + } + + $this->name = sprintf( __( '%s Plugin Options', 'all-in-one-seo-pack' ), AIOSEOP_PLUGIN_NAME ); + $this->menu_name = __( 'General Settings', 'all-in-one-seo-pack' ); + + $this->prefix = 'aiosp_'; // Option prefix. + $this->option_name = 'aioseop_options'; + $this->store_option = true; + $this->file = __FILE__; // The current file. + $blog_name = esc_attr( get_bloginfo( 'name' ) ); + parent::__construct(); + + $this->help_text = array( + 'license_key' => __( 'This will be the license key received when the product was purchased. This is used for automatic upgrades.', 'all-in-one-seo-pack' ), + 'can' => __( "This option will automatically generate Canonical URLs for your entire WordPress installation. This will help to prevent duplicate content penalties by Google", 'all-in-one-seo-pack' ), + 'no_paged_canonical_links' => __( 'Checking this option will set the Canonical URL for all paginated content to the first page.', 'all-in-one-seo-pack' ), + 'customize_canonical_links' => __( 'Checking this option will allow you to customize Canonical URLs for specific posts.', 'all-in-one-seo-pack' ), + 'use_original_title' => __( 'Use wp_title to get the title used by the theme; this is disabled by default. If you use this option, set your title formats appropriately, as your theme might try to do its own title SEO as well.', 'all-in-one-seo-pack' ), + 'do_log' => __( 'Check this and All in One SEO Pack will create a log of important events (all-in-one-seo-pack.log) in its plugin directory which might help debugging. Make sure this directory is writable.', 'all-in-one-seo-pack' ), + 'home_title' => __( 'As the name implies, this will be the Meta Title of your homepage. This is independent of any other option. If not set, the default Site Title (found in WordPress under Settings, General, Site Title) will be used.', 'all-in-one-seo-pack' ), + 'home_description' => __( 'This will be the Meta Description for your homepage. This is independent of any other option. The default is no Meta Description at all if this is not set.', 'all-in-one-seo-pack' ), + 'home_keywords' => __( 'Enter a comma separated list of your most important keywords for your site that will be written as Meta Keywords on your homepage. Do not stuff everything in here.', 'all-in-one-seo-pack' ), + 'use_static_home_info' => __( 'Checking this option uses the title, description, and keywords set on your static Front Page.', 'all-in-one-seo-pack' ), + 'togglekeywords' => __( 'This option allows you to toggle the use of Meta Keywords throughout the whole of the site.', 'all-in-one-seo-pack' ), + 'use_categories' => __( 'Check this if you want your categories for a given post used as the Meta Keywords for this post (in addition to any keywords you specify on the Edit Post screen).', 'all-in-one-seo-pack' ), + 'use_tags_as_keywords' => __( 'Check this if you want your tags for a given post used as the Meta Keywords for this post (in addition to any keywords you specify on the Edit Post screen).', 'all-in-one-seo-pack' ), + 'dynamic_postspage_keywords' => __( 'Check this if you want your keywords on your Posts page (set in WordPress under Settings, Reading, Front Page Displays) and your archive pages to be dynamically generated from the keywords of the posts showing on that page. If unchecked, it will use the keywords set in the edit page screen for the posts page.', 'all-in-one-seo-pack' ), + 'rewrite_titles' => __( "Note that this is all about the title tag. This is what you see in your browser's window title bar. This is NOT visible on a page, only in the title bar and in the source code. If enabled, all page, post, category, search and archive page titles get rewritten. You can specify the format for most of them. For example: Using the default post title format below, Rewrite Titles will write all post titles as 'Post Title | Blog Name'. If you have manually defined a title using All in One SEO Pack, this will become the title of your post in the format string.", 'all-in-one-seo-pack' ), + 'cap_titles' => __( 'Check this and Search Page Titles and Tag Page Titles will have the first letter of each word capitalized.', 'all-in-one-seo-pack' ), + 'home_page_title_format' => + __( 'This controls the format of the title tag for your Home Page.
The following macros are supported:', 'all-in-one-seo-pack' ) + . '
  • ' . __( '%blog_title% - Your blog title', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%blog_description% - Your blog description', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%page_title% - The original title of the page', 'all-in-one-seo-pack' ) . '
  • ' . + __( "%page_author_login% - This page's author' login", 'all-in-one-seo-pack' ) . '
  • ' . + __( "%page_author_nicename% - This page's author' nicename", 'all-in-one-seo-pack' ) . '
  • ' . + __( "%page_author_firstname% - This page's author' first name (capitalized)", 'all-in-one-seo-pack' ) . '
  • ' . + __( "%page_author_lastname% - This page's author' last name (capitalized)", 'all-in-one-seo-pack' ) . '
  • ' . + __( "%current_date% - The current date (localized)", 'all-in-one-seo-pack' ) . '
', + 'page_title_format' => + __( 'This controls the format of the title tag for Pages.
The following macros are supported:', 'all-in-one-seo-pack' ) + . '
  • ' . __( '%blog_title% - Your blog title', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%blog_description% - Your blog description', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%page_title% - The original title of the page', 'all-in-one-seo-pack' ) . '
  • ' . + __( "%page_author_login% - This page's author' login", 'all-in-one-seo-pack' ) . '
  • ' . + __( "%page_author_nicename% - This page's author' nicename", 'all-in-one-seo-pack' ) . '
  • ' . + __( "%page_author_firstname% - This page's author' first name (capitalized)", 'all-in-one-seo-pack' ) . '
  • ' . + __( "%page_author_lastname% - This page's author' last name (capitalized)", 'all-in-one-seo-pack' ) . '
  • ' . + __( "%current_date% - The current date (localized)", 'all-in-one-seo-pack' ) . '
', + 'post_title_format' => + __( 'This controls the format of the title tag for Posts.
The following macros are supported:', 'all-in-one-seo-pack' ) + . '
  • ' . __( '%blog_title% - Your blog title', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%blog_description% - Your blog description', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%post_title% - The original title of the post', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%category_title% - The (main) category of the post', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%category% - Alias for %category_title%', 'all-in-one-seo-pack' ) . '
  • ' . + __( "%post_author_login% - This post's author' login", 'all-in-one-seo-pack' ) . '
  • ' . + __( "%post_author_nicename% - This post's author' nicename", 'all-in-one-seo-pack' ) . '
  • ' . + __( "%post_author_firstname% - This post's author' first name (capitalized)", 'all-in-one-seo-pack' ) . '
  • ' . + __( "%post_author_lastname% - This post's author' last name (capitalized)", 'all-in-one-seo-pack' ) . '
  • ' . + __( "%current_date% - The current date (localized)", 'all-in-one-seo-pack' ) . '
', + 'category_title_format' => + __( 'This controls the format of the title tag for Category Archives.
The following macros are supported:', 'all-in-one-seo-pack' ) . + '
  • ' . __( '%blog_title% - Your blog title', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%blog_description% - Your blog description', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%category_title% - The original title of the category', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%category_description% - The description of the category', 'all-in-one-seo-pack' ) . '
', + 'archive_title_format' => + __( 'This controls the format of the title tag for Custom Post Archives.
The following macros are supported:', 'all-in-one-seo-pack' ) . + '
  • ' . __( '%blog_title% - Your blog title', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%blog_description% - Your blog description', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%archive_title - The original archive title given by wordpress', 'all-in-one-seo-pack' ) . '
', + 'date_title_format' => + __( 'This controls the format of the title tag for Date Archives.
The following macros are supported:', 'all-in-one-seo-pack' ) . + '
  • ' . __( '%blog_title% - Your blog title', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%blog_description% - Your blog description', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%date% - The original archive title given by wordpress, e.g. "2007" or "2007 August"', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%day% - The original archive day given by wordpress, e.g. "17"', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%month% - The original archive month given by wordpress, e.g. "August"', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%year% - The original archive year given by wordpress, e.g. "2007"', 'all-in-one-seo-pack' ) . '
', + 'author_title_format' => + __( 'This controls the format of the title tag for Author Archives.
The following macros are supported:', 'all-in-one-seo-pack' ) . + '
  • ' . __( '%blog_title% - Your blog title', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%blog_description% - Your blog description', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%author% - The original archive title given by wordpress, e.g. "Steve" or "John Smith"', 'all-in-one-seo-pack' ) . '
', + 'tag_title_format' => + __( 'This controls the format of the title tag for Tag Archives.
The following macros are supported:', 'all-in-one-seo-pack' ) . + '
  • ' . __( '%blog_title% - Your blog title', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%blog_description% - Your blog description', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%tag% - The name of the tag', 'all-in-one-seo-pack' ) . '
', + 'search_title_format' => + __( 'This controls the format of the title tag for the Search page.
The following macros are supported:', 'all-in-one-seo-pack' ) . + '
  • ' . __( '%blog_title% - Your blog title', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%blog_description% - Your blog description', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%search% - What was searched for', 'all-in-one-seo-pack' ) . '
', + 'description_format' => __( 'This controls the format of Meta Descriptions.The following macros are supported:', 'all-in-one-seo-pack' ) . + '
  • ' . __( '%blog_title% - Your blog title', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%blog_description% - Your blog description', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%description% - The original description as determined by the plugin, e.g. the excerpt if one is set or an auto-generated one if that option is set', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%post_title% - The original title of the post', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%wp_title% - The original wordpress title, e.g. post_title for posts', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%current_date% - The current date (localized)', 'all-in-one-seo-pack' ) . '
', + '404_title_format' => __( 'This controls the format of the title tag for the 404 page.
The following macros are supported:', 'all-in-one-seo-pack' ) . + '
  • ' . __( '%blog_title% - Your blog title', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%blog_description% - Your blog description', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%request_url% - The original URL path, like "/url-that-does-not-exist/"', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%request_words% - The URL path in human readable form, like "Url That Does Not Exist"', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%404_title% - Additional 404 title input"', 'all-in-one-seo-pack' ) . '
', + 'paged_format' => __( 'This string gets appended/prepended to titles of paged index pages (like home or archive pages).', 'all-in-one-seo-pack' ) + . __( 'The following macros are supported:', 'all-in-one-seo-pack' ) + . '
  • ' . __( '%page% - The page number', 'all-in-one-seo-pack' ) . '
', + 'enablecpost' => __( 'Check this if you want to use All in One SEO Pack with any Custom Post Types on this site.', 'all-in-one-seo-pack' ), + 'cpostadvanced' => __( 'This will show or hide the advanced options for SEO for Custom Post Types.', 'all-in-one-seo-pack' ), + 'cpostactive' => __( 'Use these checkboxes to select which Post Types you want to use All in One SEO Pack with.', 'all-in-one-seo-pack' ), + 'taxactive' => __( 'Use these checkboxes to select which Taxonomies you want to use All in One SEO Pack with.', 'all-in-one-seo-pack' ), + 'cposttitles' => __( 'This allows you to set the title tags for each Custom Post Type.', 'all-in-one-seo-pack' ), + 'posttypecolumns' => __( 'This lets you select which screens display the SEO Title, SEO Keywords and SEO Description columns.', 'all-in-one-seo-pack' ), + 'google_verify' => __( "Enter your verification code here to verify your site with Google Webmaster Tools.
Click here for documentation on this setting", 'all-in-one-seo-pack' ), + 'bing_verify' => __( "Enter your verification code here to verify your site with Bing Webmaster Tools.
Click here for documentation on this setting", 'all-in-one-seo-pack' ), + 'pinterest_verify' => __( "Enter your verification code here to verify your site with Pinterest.
Click here for documentation on this setting", 'all-in-one-seo-pack' ), + 'google_publisher' => __( 'Enter your Google+ Profile URL here to add the rel=“author” tag to your site for Google authorship. It is recommended that the URL you enter here should be your personal Google+ profile. Use the Advanced Authorship Options below if you want greater control over the use of authorship.', 'all-in-one-seo-pack' ), + 'google_disable_profile' => __( 'Check this to remove the Google Plus field from the user profile screen.', 'all-in-one-seo-pack' ), + 'google_author_advanced' => __( 'Enable this to display advanced options for controlling Google Plus authorship information on your website.', 'all-in-one-seo-pack' ), + 'google_author_location' => __( 'This option allows you to control which types of pages you want to display rel=\"author\" on for Google authorship. The options include the Front Page (the homepage of your site), Posts, Pages, and any Custom Post Types. The Everywhere Else option includes 404, search, categories, tags, custom taxonomies, date archives, author archives and any other page template.', 'all-in-one-seo-pack' ), + 'google_enable_publisher' => __( 'This option allows you to control whether rel=\"publisher\" is displayed on the homepage of your site. Google recommends using this if the site is a business website.', 'all-in-one-seo-pack' ), + 'google_specify_publisher' => __( 'The Google+ profile you enter here will appear on your homepage only as the rel=\"publisher\" tag. It is recommended that the URL you enter here should be the Google+ profile for your business.', 'all-in-one-seo-pack' ), + 'google_sitelinks_search' => __( 'Add markup to display the Google Sitelinks Search Box next to your search results in Google.', 'all-in-one-seo-pack' ), + 'google_set_site_name' => __( 'Add markup to tell Google the preferred name for your website.', 'all-in-one-seo-pack' ), + 'google_connect' => __( 'Press the connect button to connect with Google Analytics; or if already connected, press the disconnect button to disable and remove any stored analytics credentials.', 'all-in-one-seo-pack' ), + 'google_analytics_id' => __( 'Enter your Google Analytics ID here to track visitor behavior on your site using Google Analytics.', 'all-in-one-seo-pack' ), + 'ga_advanced_options' => __( 'Check to use advanced Google Analytics options.', 'all-in-one-seo-pack' ), + 'ga_domain' => __( 'Enter your domain name without the http:// to set your cookie domain.', 'all-in-one-seo-pack' ), + 'ga_multi_domain' => __( 'Use this option to enable tracking of multiple or additional domains.', 'all-in-one-seo-pack' ), + 'ga_addl_domains' => __( 'Add a list of additional domains to track here. Enter one domain name per line without the http://.', 'all-in-one-seo-pack' ), + 'ga_anonymize_ip' => __( 'This enables support for IP Anonymization in Google Analytics.', 'all-in-one-seo-pack' ), + 'ga_display_advertising' => __( 'This enables support for the Display Advertiser Features in Google Analytics.', 'all-in-one-seo-pack' ), + 'ga_exclude_users' => __( 'Exclude logged-in users from Google Analytics tracking by role.', 'all-in-one-seo-pack' ), + 'ga_track_outbound_links' => __( 'Check this if you want to track outbound links with Google Analytics.', 'all-in-one-seo-pack' ), + 'ga_link_attribution' => __( 'This enables support for the Enhanced Link Attribution in Google Analytics.', 'all-in-one-seo-pack' ), + 'ga_enhanced_ecommerce' => __( 'This enables support for the Enhanced Ecommerce in Google Analytics.', 'all-in-one-seo-pack' ), + 'cpostnoindex' => __( 'Set the default NOINDEX setting for each Post Type.', 'all-in-one-seo-pack' ), + 'cpostnofollow' => __( 'Set the default NOFOLLOW setting for each Post Type.', 'all-in-one-seo-pack' ), + + 'category_noindex' => __( 'Check this to ask search engines not to index Category Archives. Useful for avoiding duplicate content.', 'all-in-one-seo-pack' ), + 'archive_date_noindex' => __( 'Check this to ask search engines not to index Date Archives. Useful for avoiding duplicate content.', 'all-in-one-seo-pack' ), + 'archive_author_noindex' => __( 'Check this to ask search engines not to index Author Archives. Useful for avoiding duplicate content.', 'all-in-one-seo-pack' ), + 'tags_noindex' => __( 'Check this to ask search engines not to index Tag Archives. Useful for avoiding duplicate content.', 'all-in-one-seo-pack' ), + 'search_noindex' => __( 'Check this to ask search engines not to index the Search page. Useful for avoiding duplicate content.', 'all-in-one-seo-pack' ), + '404_noindex' => __( 'Check this to ask search engines not to index the 404 page.', 'all-in-one-seo-pack' ), + 'tax_noindex' => __( 'Check this to ask search engines not to index custom Taxonomy archive pages. Useful for avoiding duplicate content.', 'all-in-one-seo-pack' ), + 'paginated_noindex' => __( 'Check this to ask search engines not to index paginated pages/posts. Useful for avoiding duplicate content.', 'all-in-one-seo-pack' ), + 'paginated_nofollow' => __( 'Check this to ask search engines not to follow links from paginated pages/posts. Useful for avoiding duplicate content.', 'all-in-one-seo-pack' ), + 'noodp' => __( 'Check this box to ask search engines not to use descriptions from the Open Directory Project for your entire site.', 'all-in-one-seo-pack' ), + 'cpostnoodp' => __( 'Set the default noodp setting for each Post Type.', 'all-in-one-seo-pack' ), + 'noydir' => __( 'Check this box to ask Yahoo! not to use descriptions from the Yahoo! directory for your entire site.', 'all-in-one-seo-pack' ), + 'cpostnoydir' => __( 'Set the default noydir setting for each Post Type.', 'all-in-one-seo-pack' ), + 'skip_excerpt' => __( "Check this and your Meta Descriptions won't be generated from the excerpt.", 'all-in-one-seo-pack' ), + 'generate_descriptions' => __( 'Check this and your Meta Descriptions will be auto-generated from your excerpt or content.', 'all-in-one-seo-pack' ), + 'run_shortcodes' => __( 'Check this and shortcodes will get executed for descriptions auto-generated from content.', 'all-in-one-seo-pack' ), + 'hide_paginated_descriptions' => __( 'Check this and your Meta Descriptions will be removed from page 2 or later of paginated content.', 'all-in-one-seo-pack' ), + 'dont_truncate_descriptions' => __( 'Check this to prevent your Description from being truncated regardless of its length.', 'all-in-one-seo-pack' ), + 'schema_markup' => __( 'Check this to support Schema.org markup, i.e., itemprop on supported metadata.', 'all-in-one-seo-pack' ), + 'unprotect_meta' => __( "Check this to unprotect internal postmeta fields for use with XMLRPC. If you don't know what that is, leave it unchecked.", 'all-in-one-seo-pack' ), + 'redirect_attachement_parent' => __( 'Redirect attachment pages to post parent.', 'all-in-one-seo-pack' ), + 'ex_pages' => __( 'Enter a comma separated list of pages here to be excluded by All in One SEO Pack. This is helpful when using plugins which generate their own non-WordPress dynamic pages. Ex: /forum/, /contact/ For instance, if you want to exclude the virtual pages generated by a forum plugin, all you have to do is add forum or /forum or /forum/ or and any URL with the word \"forum\" in it, such as http://mysite.com/forum or http://mysite.com/forum/someforumpage here and it will be excluded from All in One SEO Pack.', 'all-in-one-seo-pack' ), + 'post_meta_tags' => __( 'What you enter here will be copied verbatim to the header of all Posts. You can enter whatever additional headers you want here, even references to stylesheets.', 'all-in-one-seo-pack' ), + 'page_meta_tags' => __( 'What you enter here will be copied verbatim to the header of all Pages. You can enter whatever additional headers you want here, even references to stylesheets.', 'all-in-one-seo-pack' ), + 'front_meta_tags' => __( 'What you enter here will be copied verbatim to the header of the front page if you have set a static page in Settings, Reading, Front Page Displays. You can enter whatever additional headers you want here, even references to stylesheets. This will fall back to using Additional Page Headers if you have them set and nothing is entered here.', 'all-in-one-seo-pack' ), + 'home_meta_tags' => __( 'What you enter here will be copied verbatim to the header of the home page if you have Front page displays your latest posts selected in Settings, Reading.  It will also be copied verbatim to the header on the Posts page if you have one set in Settings, Reading. You can enter whatever additional headers you want here, even references to stylesheets.', 'all-in-one-seo-pack' ), + ); + + $this->help_anchors = array( + 'license_key' => '#license-key', + 'can' => '#canonical-urls', + 'no_paged_canonical_links' => '#no-pagination-for-canonical-urls', + 'customize_canonical_links' => '#enable-custom-canonical-urls', + 'use_original_title' => '#use-original-title', + 'schema_markup' => '#use-schema-markup', + 'do_log' => '#log-important-events', + 'home_title' => '#home-title', + 'home_description' => '#home-description', + 'home_keywords' => '#home-keywords', + 'use_static_home_info' => '#use-static-front-page-instead', + 'togglekeywords' => '#use-keywords', + 'use_categories' => '#use-categories-for-meta-keywords', + 'use_tags_as_keywords' => '#use-tags-for-meta-keywords', + 'dynamic_postspage_keywords' => '#dynamically-generate-keywords-for-posts-page', + 'rewrite_titles' => '#rewrite-titles', + 'cap_titles' => '#capitalize-titles', + 'home_page_title_format' => '#title-format-fields', + 'page_title_format' => '#title-format-fields', + 'post_title_format' => '#title-format-fields', + 'category_title_format' => '#title-format-fields', + 'archive_title_format' => '#title-format-fields', + 'date_title_format' => '#title-format-fields', + 'author_title_format' => '#title-format-fields', + 'tag_title_format' => '#title-format-fields', + 'search_title_format' => '#title-format-fields', + 'description_format' => '#title-format-fields', + '404_title_format' => '#title-format-fields', + 'paged_format' => '#title-format-fields', + 'enablecpost' => '#seo-for-custom-post-types', + 'cpostadvanced' => '#enable-advanced-options', + 'cpostactive' => '#seo-on-only-these-post-types', + 'taxactive' => '#seo-on-only-these-taxonomies', + 'cposttitles' => '#custom-titles', + 'posttypecolumns' => '#show-column-labels-for-custom-post-types', + 'google_verify' => '', + 'bing_verify' => '', + 'pinterest_verify' => '', + 'google_publisher' => '#google-plus-default-profile', + 'google_disable_profile' => '#disable-google-plus-profile', + 'google_sitelinks_search' => '#display-sitelinks-search-box', + 'google_set_site_name' => '#set-preferred-site-name', + 'google_author_advanced' => '#advanced-authorship-options', + 'google_author_location' => '#display-google-authorship', + 'google_enable_publisher' => '#display-publisher-meta-on-front-page', + 'google_specify_publisher' => '#specify-publisher-url', + 'google_analytics_id' => 'https://semperplugins.com/documentation/setting-up-google-analytics/', + 'ga_domain' => '#tracking-domain', + 'ga_multi_domain' => '#track-multiple-domains-additional-domains', + 'ga_addl_domains' => '#track-multiple-domains-additional-domains', + 'ga_anonymize_ip' => '#anonymize-ip-addresses', + 'ga_display_advertising' => '#display-advertiser-tracking', + 'ga_exclude_users' => '#exclude-users-from-tracking', + 'ga_track_outbound_links' => '#track-outbound-links', + 'ga_link_attribution' => '#enhanced-link-attribution', + 'ga_enhanced_ecommerce' => '#enhanced-ecommerce', + 'cpostnoindex' => '#noindex', + 'cpostnofollow' => '#nofollow', + 'cpostnoodp' => '#noodp', + 'cpostnoydir' => '#noydir', + 'category_noindex' => '#noindex-settings', + 'archive_date_noindex' => '#noindex-settings', + 'archive_author_noindex' => '#noindex-settings', + 'tags_noindex' => '#noindex-settings', + 'search_noindex' => '#use-noindex-for-the-search-page', + '404_noindex' => '#use-noindex-for-the-404-page', + 'tax_noindex' => '#use-noindex-for-the-taxonomy-archives', + 'paginated_noindex' => '#use-noindex-for-paginated-pages-posts', + 'paginated_nofollow' => '#use-nofollow-for-paginated-pages-posts', + 'noodp' => '#exclude-site-from-the-open-directory-project', + 'noydir' => '#exclude-site-from-yahoo-directory', + 'skip_excerpt' => '#avoid-using-the-excerpt-in-descriptions', + 'generate_descriptions' => '#autogenerate-descriptions', + 'run_shortcodes' => '#run-shortcodes-in-autogenerated-descriptions', + 'hide_paginated_descriptions' => '#remove-descriptions-for-paginated-pages', + 'dont_truncate_descriptions' => '#never-shorten-long-descriptions', + 'unprotect_meta' => '#unprotect-post-meta-fields', + 'redirect_attachement_parent' => '#redirect-attachments-to-post-parent', + 'ex_pages' => '#exclude-pages', + 'post_meta_tags' => '#additional-post-headers', + 'page_meta_tags' => '#additional-page-headers', + 'front_meta_tags' => '#additional-front-page-headers', + 'home_meta_tags' => '#additional-blog-page-headers', + ); + + $meta_help_text = array( + 'snippet' => __( 'A preview of what this page might look like in search engine results.', 'all-in-one-seo-pack' ), + 'title' => __( 'A custom title that shows up in the title tag for this page.', 'all-in-one-seo-pack' ), + 'description' => __( 'The META description for this page. This will override any autogenerated descriptions.', 'all-in-one-seo-pack' ), + 'keywords' => __( 'A comma separated list of your most important keywords for this page that will be written as META keywords.', 'all-in-one-seo-pack' ), + 'custom_link' => __( 'Override the canonical URLs for this post.', 'all-in-one-seo-pack' ), + 'noindex' => __( 'Check this box to ask search engines not to index this page.', 'all-in-one-seo-pack' ), + 'nofollow' => __( 'Check this box to ask search engines not to follow links from this page.', 'all-in-one-seo-pack' ), + 'noodp' => __( 'Check this box to ask search engines not to use descriptions from the Open Directory Project for this page.', 'all-in-one-seo-pack' ), + 'noydir' => __( 'Check this box to ask Yahoo! not to use descriptions from the Yahoo! directory for this page.', 'all-in-one-seo-pack' ), + 'sitemap_exclude' => __( "Don't display this page in the sitemap.", 'all-in-one-seo-pack' ), + 'disable' => __( 'Disable SEO on this page.', 'all-in-one-seo-pack' ), + 'disable_analytics' => __( 'Disable Google Analytics on this page.', 'all-in-one-seo-pack' ), + ); + + $this->default_options = array( + 'license_key' => array( + 'name' => __( 'License Key:', 'all-in-one-seo-pack' ), + 'type' => 'text', + ), + 'home_title' => array( + 'name' => __( 'Home Title:', 'all-in-one-seo-pack' ), + 'default' => null, + 'type' => 'text', + 'sanitize' => 'text', + 'count' => true, + 'rows' => 1, + 'cols' => 60, + 'condshow' => array( 'aiosp_use_static_home_info' => 0 ), + ), + 'home_description' => array( + 'name' => __( 'Home Description:', 'all-in-one-seo-pack' ), + 'default' => '', + 'type' => 'textarea', + 'sanitize' => 'text', + 'count' => true, + 'cols' => 80, + 'rows' => 2, + 'condshow' => array( 'aiosp_use_static_home_info' => 0 ), + ), + 'togglekeywords' => array( + 'name' => __( 'Use Keywords:', 'all-in-one-seo-pack' ), + 'default' => 1, + 'type' => 'radio', + 'initial_options' => array( + 0 => __( 'Enabled', 'all-in-one-seo-pack' ), + 1 => __( 'Disabled', 'all-in-one-seo-pack' ), + ), + ), + 'home_keywords' => array( + 'name' => __( 'Home Keywords (comma separated):', 'all-in-one-seo-pack' ), + 'default' => null, + 'type' => 'textarea', + 'sanitize' => 'text', + 'condshow' => array( 'aiosp_togglekeywords' => 0, 'aiosp_use_static_home_info' => 0 ), + ), + 'use_static_home_info' => array( + 'name' => __( 'Use Static Front Page Instead', 'all-in-one-seo-pack' ), + 'default' => 0, + 'type' => 'radio', + 'initial_options' => array( + 1 => __( 'Enabled', 'all-in-one-seo-pack' ), + 0 => __( 'Disabled', 'all-in-one-seo-pack' ), + ), + ), + 'can' => array( + 'name' => __( 'Canonical URLs:', 'all-in-one-seo-pack' ), + 'default' => 1, + ), + 'no_paged_canonical_links' => array( + 'name' => __( 'No Pagination for Canonical URLs:', 'all-in-one-seo-pack' ), + 'default' => 0, + 'condshow' => array( 'aiosp_can' => 'on' ), + ), + 'customize_canonical_links' => array( + 'name' => __( 'Enable Custom Canonical URLs:', 'all-in-one-seo-pack' ), + 'default' => 0, + 'condshow' => array( 'aiosp_can' => 'on' ), + ), + 'rewrite_titles' => array( + 'name' => __( 'Rewrite Titles:', 'all-in-one-seo-pack' ), + 'default' => 1, + 'type' => 'radio', + 'initial_options' => array( + 1 => __( 'Enabled', 'all-in-one-seo-pack' ), + 0 => __( 'Disabled', 'all-in-one-seo-pack' ), + ), + ), + 'force_rewrites' => array( + 'name' => __( 'Force Rewrites:', 'all-in-one-seo-pack' ), + 'default' => 1, + 'type' => 'hidden', + 'prefix' => $this->prefix, + 'initial_options' => array( + 1 => __( 'Enabled', 'all-in-one-seo-pack' ), + 0 => __( 'Disabled', 'all-in-one-seo-pack' ), + ), + ), + 'use_original_title' => array( + 'name' => __( 'Use Original Title:', 'all-in-one-seo-pack' ), + 'type' => 'radio', + 'default' => 0, + 'initial_options' => array( + 1 => __( 'Enabled', 'all-in-one-seo-pack' ), + 0 => __( 'Disabled', 'all-in-one-seo-pack' ), + ), + ), + 'cap_titles' => array( + 'name' => __( 'Capitalize Tag and Search Titles:', 'all-in-one-seo-pack' ), + 'default' => 1, + ), + 'home_page_title_format' => array( + 'name' => __( 'Home Page Title Format:', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'default' => '%page_title%', + 'condshow' => array( 'aiosp_rewrite_titles' => 1 ), + ), + 'page_title_format' => array( + 'name' => __( 'Page Title Format:', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'default' => '%page_title% | %blog_title%', + 'condshow' => array( 'aiosp_rewrite_titles' => 1 ), + ), + 'post_title_format' => array( + 'name' => __( 'Post Title Format:', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'default' => '%post_title% | %blog_title%', + 'condshow' => array( 'aiosp_rewrite_titles' => 1 ), + ), + 'category_title_format' => array( + 'name' => __( 'Category Title Format:', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'default' => '%category_title% | %blog_title%', + 'condshow' => array( 'aiosp_rewrite_titles' => 1 ), + ), + 'archive_title_format' => array( + 'name' => __( 'Archive Title Format:', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'default' => '%archive_title% | %blog_title%', + 'condshow' => array( 'aiosp_rewrite_titles' => 1 ), + ), + 'date_title_format' => array( + 'name' => __( 'Date Archive Title Format:', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'default' => '%date% | %blog_title%', + 'condshow' => array( 'aiosp_rewrite_titles' => 1 ), + ), + 'author_title_format' => array( + 'name' => __( 'Author Archive Title Format:', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'default' => '%author% | %blog_title%', + 'condshow' => array( 'aiosp_rewrite_titles' => 1 ), + ), + 'tag_title_format' => array( + 'name' => __( 'Tag Title Format:', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'default' => '%tag% | %blog_title%', + 'condshow' => array( 'aiosp_rewrite_titles' => 1 ), + ), + 'search_title_format' => array( + 'name' => __( 'Search Title Format:', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'default' => '%search% | %blog_title%', + 'condshow' => array( 'aiosp_rewrite_titles' => 1 ), + ), + 'description_format' => array( + 'name' => __( 'Description Format', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'default' => '%description%', + 'condshow' => array( 'aiosp_rewrite_titles' => 1 ), + ), + '404_title_format' => array( + 'name' => __( '404 Title Format:', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'default' => 'Nothing found for %request_words%', + 'condshow' => array( 'aiosp_rewrite_titles' => 1 ), + ), + 'paged_format' => array( + 'name' => __( 'Paged Format:', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'default' => ' - Part %page%', + 'condshow' => array( 'aiosp_rewrite_titles' => 1 ), + ), + 'enablecpost' => array( + 'name' => __( 'SEO for Custom Post Types:', 'all-in-one-seo-pack' ), + 'default' => 'on', + 'type' => 'radio', + 'initial_options' => array( + 'on' => __( 'Enabled', 'all-in-one-seo-pack' ), + 0 => __( 'Disabled', 'all-in-one-seo-pack' ), + ), + ), + 'cpostactive' => array( + 'name' => __( 'SEO on only these post types:', 'all-in-one-seo-pack' ), + 'type' => 'multicheckbox', + 'default' => array( 'post', 'page' ), + 'condshow' => array( 'aiosp_enablecpost' => 'on' ), + ), + 'taxactive' => array( + 'name' => __( 'SEO on only these taxonomies:', 'all-in-one-seo-pack' ), + 'type' => 'multicheckbox', + 'default' => array( 'category', 'post_tag' ), + 'condshow' => array( 'aiosp_enablecpost' => 'on' ), + ), + 'cpostadvanced' => array( + 'name' => __( 'Enable Advanced Options:', 'all-in-one-seo-pack' ), + 'default' => 0, + 'type' => 'radio', + 'initial_options' => array( + 'on' => __( 'Enabled', 'all-in-one-seo-pack' ), + 0 => __( 'Disabled', 'all-in-one-seo-pack' ), + ), + 'label' => null, + 'condshow' => array( 'aiosp_enablecpost' => 'on' ), + ), + 'cpostnoindex' => array( + 'name' => __( 'Default to NOINDEX:', 'all-in-one-seo-pack' ), + 'type' => 'multicheckbox', + 'default' => array(), + ), + 'cpostnofollow' => array( + 'name' => __( 'Default to NOFOLLOW:', 'all-in-one-seo-pack' ), + 'type' => 'multicheckbox', + 'default' => array(), + ), + 'cpostnoodp' => array( + 'name' => __( 'Default to NOODP:', 'all-in-one-seo-pack' ), + 'type' => 'multicheckbox', + 'default' => array(), + ), + 'cpostnoydir' => array( + 'name' => __( 'Default to NOYDIR:', 'all-in-one-seo-pack' ), + 'type' => 'multicheckbox', + 'default' => array(), + ), + 'cposttitles' => array( + 'name' => __( 'Custom titles:', 'all-in-one-seo-pack' ), + 'type' => 'checkbox', + 'default' => 0, + 'condshow' => array( + 'aiosp_rewrite_titles' => 1, + 'aiosp_enablecpost' => 'on', + 'aiosp_cpostadvanced' => 'on', + ), + ), + 'posttypecolumns' => array( + 'name' => __( 'Show Column Labels for Custom Post Types:', 'all-in-one-seo-pack' ), + 'type' => 'multicheckbox', + 'default' => array( 'post', 'page' ), + 'condshow' => array( 'aiosp_enablecpost' => 'on' ), + ), + 'google_verify' => array( + 'name' => __( 'Google Webmaster Tools:', 'all-in-one-seo-pack' ), + 'default' => '', + 'type' => 'text', + ), + 'bing_verify' => array( + 'name' => __( 'Bing Webmaster Center:', 'all-in-one-seo-pack' ), + 'default' => '', + 'type' => 'text', + ), + 'pinterest_verify' => array( + 'name' => __( 'Pinterest Site Verification:', 'all-in-one-seo-pack' ), + 'default' => '', + 'type' => 'text', + ), + 'google_publisher' => array( + 'name' => __( 'Google Plus Default Profile:', 'all-in-one-seo-pack' ), + 'default' => '', + 'type' => 'text', + ), + 'google_disable_profile' => array( + 'name' => __( 'Disable Google Plus Profile:', 'all-in-one-seo-pack' ), + 'default' => 0, + 'type' => 'checkbox', + ), + 'google_sitelinks_search' => array( + 'name' => __( 'Display Sitelinks Search Box:', 'all-in-one-seo-pack' ), + ), + 'google_set_site_name' => array( + 'name' => __( 'Set Preferred Site Name:', 'all-in-one-seo-pack' ), + ), + 'google_specify_site_name' => array( + 'name' => __( 'Specify A Preferred Name:', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'placeholder' => $blog_name, + 'condshow' => array( 'aiosp_google_set_site_name' => 'on' ), + ), + 'google_author_advanced' => array( + 'name' => __( 'Advanced Authorship Options:', 'all-in-one-seo-pack' ), + 'default' => 0, + 'type' => 'radio', + 'initial_options' => array( + 'on' => __( 'Enabled', 'all-in-one-seo-pack' ), + 0 => __( 'Disabled', 'all-in-one-seo-pack' ), + ), + 'label' => null, + ), + 'google_author_location' => array( + 'name' => __( 'Display Google Authorship:', 'all-in-one-seo-pack' ), + 'default' => array( 'all' ), + 'type' => 'multicheckbox', + 'condshow' => array( 'aiosp_google_author_advanced' => 'on' ), + ), + 'google_enable_publisher' => array( + 'name' => __( 'Display Publisher Meta on Front Page:', 'all-in-one-seo-pack' ), + 'default' => 'on', + 'type' => 'radio', + 'initial_options' => array( + 'on' => __( 'Enabled', 'all-in-one-seo-pack' ), + 0 => __( 'Disabled', 'all-in-one-seo-pack' ), + ), + 'condshow' => array( 'aiosp_google_author_advanced' => 'on' ), + ), + 'google_specify_publisher' => array( + 'name' => __( 'Specify Publisher URL:', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'condshow' => array( 'aiosp_google_author_advanced' => 'on', 'aiosp_google_enable_publisher' => 'on' ), + ), + // "google_connect"=>array( 'name' => __( 'Connect With Google Analytics', 'all-in-one-seo-pack' ), ), + 'google_analytics_id' => array( + 'name' => __( 'Google Analytics ID:', 'all-in-one-seo-pack' ), + 'default' => null, + 'type' => 'text', + 'placeholder' => 'UA-########-#', + ), + 'ga_advanced_options' => array( + 'name' => __( 'Advanced Analytics Options:', 'all-in-one-seo-pack' ), + 'default' => 'on', + 'type' => 'radio', + 'initial_options' => array( + 'on' => __( 'Enabled', 'all-in-one-seo-pack' ), + 0 => __( 'Disabled', 'all-in-one-seo-pack' ), + ), + 'condshow' => array( + 'aiosp_google_analytics_id' => array( + 'lhs' => 'aiosp_google_analytics_id', + 'op' => '!=', + 'rhs' => '', + ), + ), + ), + 'ga_domain' => array( + 'name' => __( 'Tracking Domain:', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'condshow' => array( + 'aiosp_google_analytics_id' => array( + 'lhs' => 'aiosp_google_analytics_id', + 'op' => '!=', + 'rhs' => '', + ), + 'aiosp_ga_advanced_options' => 'on', + ), + ), + 'ga_multi_domain' => array( + 'name' => __( 'Track Multiple Domains:', 'all-in-one-seo-pack' ), + 'default' => 0, + 'condshow' => array( + 'aiosp_google_analytics_id' => array( + 'lhs' => 'aiosp_google_analytics_id', + 'op' => '!=', + 'rhs' => '', + ), + 'aiosp_ga_advanced_options' => 'on', + ), + ), + 'ga_addl_domains' => array( + 'name' => __( 'Additional Domains:', 'all-in-one-seo-pack' ), + 'type' => 'textarea', + 'condshow' => array( + 'aiosp_google_analytics_id' => array( + 'lhs' => 'aiosp_google_analytics_id', + 'op' => '!=', + 'rhs' => '', + ), + 'aiosp_ga_advanced_options' => 'on', + 'aiosp_ga_multi_domain' => 'on', + ), + ), + 'ga_anonymize_ip' => array( + 'name' => __( 'Anonymize IP Addresses:', 'all-in-one-seo-pack' ), + 'type' => 'checkbox', + 'condshow' => array( + 'aiosp_google_analytics_id' => array( + 'lhs' => 'aiosp_google_analytics_id', + 'op' => '!=', + 'rhs' => '', + ), + 'aiosp_ga_advanced_options' => 'on', + ), + ), + 'ga_display_advertising' => array( + 'name' => __( 'Display Advertiser Tracking:', 'all-in-one-seo-pack' ), + 'type' => 'checkbox', + 'condshow' => array( + 'aiosp_google_analytics_id' => array( + 'lhs' => 'aiosp_google_analytics_id', + 'op' => '!=', + 'rhs' => '', + ), + 'aiosp_ga_advanced_options' => 'on', + ), + ), + 'ga_exclude_users' => array( + 'name' => __( 'Exclude Users From Tracking:', 'all-in-one-seo-pack' ), + 'type' => 'multicheckbox', + 'condshow' => array( + 'aiosp_google_analytics_id' => array( + 'lhs' => 'aiosp_google_analytics_id', + 'op' => '!=', + 'rhs' => '', + ), + 'aiosp_ga_advanced_options' => 'on', + ), + ), + 'ga_track_outbound_links' => array( + 'name' => __( 'Track Outbound Links:', 'all-in-one-seo-pack' ), + 'default' => 0, + 'condshow' => array( + 'aiosp_google_analytics_id' => array( + 'lhs' => 'aiosp_google_analytics_id', + 'op' => '!=', + 'rhs' => '', + ), + 'aiosp_ga_advanced_options' => 'on', + ), + ), + 'ga_link_attribution' => array( + 'name' => __( 'Enhanced Link Attribution:', 'all-in-one-seo-pack' ), + 'default' => 0, + 'condshow' => array( + 'aiosp_google_analytics_id' => array( + 'lhs' => 'aiosp_google_analytics_id', + 'op' => '!=', + 'rhs' => '', + ), + 'aiosp_ga_advanced_options' => 'on', + ), + ), + 'ga_enhanced_ecommerce' => array( + 'name' => __( 'Enhanced Ecommerce:', 'all-in-one-seo-pack' ), + 'default' => 0, + 'condshow' => array( + 'aiosp_google_analytics_id' => array( + 'lhs' => 'aiosp_google_analytics_id', + 'op' => '!=', + 'rhs' => '', + ), + 'aiosp_ga_advanced_options' => 'on', + ), + ), + 'use_categories' => array( + 'name' => __( 'Use Categories for META keywords:', 'all-in-one-seo-pack' ), + 'default' => 0, + 'condshow' => array( 'aiosp_togglekeywords' => 0 ), + ), + 'use_tags_as_keywords' => array( + 'name' => __( 'Use Tags for META keywords:', 'all-in-one-seo-pack' ), + 'default' => 1, + 'condshow' => array( 'aiosp_togglekeywords' => 0 ), + ), + 'dynamic_postspage_keywords' => array( + 'name' => __( 'Dynamically Generate Keywords for Posts Page/Archives:', 'all-in-one-seo-pack' ), + 'default' => 1, + 'condshow' => array( 'aiosp_togglekeywords' => 0 ), + ), + 'category_noindex' => array( + 'name' => __( 'Use noindex for Categories:', 'all-in-one-seo-pack' ), + 'default' => 1, + ), + 'archive_date_noindex' => array( + 'name' => __( 'Use noindex for Date Archives:', 'all-in-one-seo-pack' ), + 'default' => 1, + ), + 'archive_author_noindex' => array( + 'name' => __( 'Use noindex for Author Archives:', 'all-in-one-seo-pack' ), + 'default' => 1, + ), + 'tags_noindex' => array( + 'name' => __( 'Use noindex for Tag Archives:', 'all-in-one-seo-pack' ), + 'default' => 0, + ), + 'search_noindex' => array( + 'name' => __( 'Use noindex for the Search page:', 'all-in-one-seo-pack' ), + 'default' => 0, + ), + '404_noindex' => array( + 'name' => __( 'Use noindex for the 404 page:', 'all-in-one-seo-pack' ), + 'default' => 0, + ), + 'tax_noindex' => array( + 'name' => __( 'Use noindex for Taxonomy Archives:', 'all-in-one-seo-pack' ), + 'type' => 'multicheckbox', + 'default' => array(), + 'condshow' => array( 'aiosp_enablecpost' => 'on', 'aiosp_cpostadvanced' => 'on' ), + ), + 'paginated_noindex' => array( + 'name' => __( 'Use noindex for paginated pages/posts:', 'all-in-one-seo-pack' ), + 'default' => 0, + ), + 'paginated_nofollow' => array( + 'name' => __( 'Use nofollow for paginated pages/posts:', 'all-in-one-seo-pack' ), + 'default' => 0, + ), + 'noodp' => array( + 'name' => __( 'Exclude site from the Open Directory Project:', 'all-in-one-seo-pack' ), + 'default' => 0, + ), + 'noydir' => array( + 'name' => __( 'Exclude site from Yahoo! Directory:', 'all-in-one-seo-pack' ), + 'default' => 0, + ), + 'skip_excerpt' => array( + 'name' => __( 'Avoid Using The Excerpt In Descriptions:', 'all-in-one-seo-pack' ), + 'default' => 0, + ), + 'generate_descriptions' => array( + 'name' => __( 'Autogenerate Descriptions:', 'all-in-one-seo-pack' ), + 'default' => 0, + ), + 'run_shortcodes' => array( + 'name' => __( 'Run Shortcodes In Autogenerated Descriptions:', 'all-in-one-seo-pack' ), + 'default' => 0, + 'condshow' => array( 'aiosp_generate_descriptions' => 'on' ), + ), + 'hide_paginated_descriptions' => array( + 'name' => __( 'Remove Descriptions For Paginated Pages:', 'all-in-one-seo-pack' ), + 'default' => 0, + ), + 'dont_truncate_descriptions' => array( + 'name' => __( 'Never Shorten Long Descriptions:', 'all-in-one-seo-pack' ), + 'default' => 0, + ), + 'schema_markup' => array( + 'name' => __( 'Use Schema.org Markup', 'all-in-one-seo-pack' ), + 'default' => 1, + ), + 'unprotect_meta' => array( + 'name' => __( 'Unprotect Post Meta Fields:', 'all-in-one-seo-pack' ), + 'default' => 0, + ), + 'redirect_attachement_parent' => array( + 'name' => __( 'Redirect Attachments to Post Parent:', 'all-in-one-seo-pack'), + 'default' => 0, + ), + 'ex_pages' => array( + 'name' => __( 'Exclude Pages:', 'all-in-one-seo-pack' ), + 'type' => 'textarea', + 'default' => '', + ), + 'post_meta_tags' => array( + 'name' => __( 'Additional Post Headers:', 'all-in-one-seo-pack' ), + 'type' => 'textarea', + 'default' => '', + 'sanitize' => 'default', + ), + 'page_meta_tags' => array( + 'name' => __( 'Additional Page Headers:', 'all-in-one-seo-pack' ), + 'type' => 'textarea', + 'default' => '', + 'sanitize' => 'default', + ), + 'front_meta_tags' => array( + 'name' => __( 'Additional Front Page Headers:', 'all-in-one-seo-pack' ), + 'type' => 'textarea', + 'default' => '', + 'sanitize' => 'default', + ), + 'home_meta_tags' => array( + 'name' => __( 'Additional Blog Page Headers:', 'all-in-one-seo-pack' ), + 'type' => 'textarea', + 'default' => '', + 'sanitize' => 'default', + ), + 'do_log' => array( + 'name' => __( 'Log important events:', 'all-in-one-seo-pack' ), + 'default' => null, + ), + ); + + if ( ! AIOSEOPPRO ) { + unset( $this->default_options['license_key'] ); + unset( $this->default_options['taxactive'] ); + } + + $this->locations = array( + 'default' => array( 'name' => $this->name, 'prefix' => 'aiosp_', 'type' => 'settings', 'options' => null ), + 'aiosp' => array( + 'name' => $this->plugin_name, + 'type' => 'metabox', + 'prefix' => '', + 'help_link' => 'https://semperplugins.com/sections/postpage-settings/', + 'options' => array( + 'edit', + 'nonce-aioseop-edit', + AIOSEOPPRO ? 'support' : 'upgrade', + 'snippet', + 'title', + 'description', + 'keywords', + 'custom_link', + 'noindex', + 'nofollow', + 'noodp', + 'noydir', + 'sitemap_exclude', + 'disable', + 'disable_analytics', + ), + 'default_options' => array( + 'edit' => array( + 'type' => 'hidden', + 'default' => 'aiosp_edit', + 'prefix' => true, + 'nowrap' => 1, + ), + 'nonce-aioseop-edit' => array( + 'type' => 'hidden', + 'default' => null, + 'prefix' => false, + 'nowrap' => 1, + ), + 'upgrade' => array( + 'type' => 'html', + 'label' => 'none', + 'default' => aiosp_common::get_upgrade_hyperlink( 'meta', __( 'Upgrade to All in One SEO Pack Pro Version', 'all-in-one-seo-pack' ), __( 'UPGRADE TO PRO VERSION', 'all-in-one-seo-pack' ), '_blank' ), + ), + 'support' => array( + 'type' => 'html', + 'label' => 'none', + 'default' => '' + . __( 'Support Forum', 'all-in-one-seo-pack' ) . '', + ), + 'snippet' => array( + 'name' => __( 'Preview Snippet', 'all-in-one-seo-pack' ), + 'type' => 'custom', + 'label' => 'top', + 'default' => ' + +

%s

%s
%s
', + ), + 'title' => array( + 'name' => __( 'Title', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'count' => true, + 'size' => 60, + ), + 'description' => array( + 'name' => __( 'Description', 'all-in-one-seo-pack' ), + 'type' => 'textarea', + 'count' => true, + 'cols' => 80, + 'rows' => 2, + ), + + 'keywords' => array( + 'name' => __( 'Keywords (comma separated)', 'all-in-one-seo-pack' ), + 'type' => 'text', + ), + 'custom_link' => array( + 'name' => __( 'Custom Canonical URL', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'size' => 60, + ), + 'noindex' => array( + 'name' => __( 'Robots Meta NOINDEX', 'all-in-one-seo-pack' ), + 'default' => '', + ), + 'nofollow' => array( + 'name' => __( 'Robots Meta NOFOLLOW', 'all-in-one-seo-pack' ), + 'default' => '', + ), + 'noodp' => array( 'name' => __( 'Robots Meta NOODP', 'all-in-one-seo-pack' ) ), + 'noydir' => array( 'name' => __( 'Robots Meta NOYDIR', 'all-in-one-seo-pack' ) ), + 'sitemap_exclude' => array( 'name' => __( 'Exclude From Sitemap', 'all-in-one-seo-pack' ) ), + 'disable' => array( 'name' => __( 'Disable on this page/post', 'all-in-one-seo-pack' ) ), + 'disable_analytics' => array( + 'name' => __( 'Disable Google Analytics', 'all-in-one-seo-pack' ), + 'condshow' => array( 'aiosp_disable' => 'on' ), + ), + ), + 'display' => null, + ), + ); + + if ( ! empty( $meta_help_text ) ) { + foreach ( $meta_help_text as $k => $v ) { + $this->locations['aiosp']['default_options'][ $k ]['help_text'] = $v; + } + } + + $this->layout = array( + 'default' => array( + 'name' => __( 'General Settings', 'all-in-one-seo-pack' ), + 'help_link' => 'https://semperplugins.com/documentation/general-settings/', + 'options' => array(), // This is set below, to the remaining options -- pdb. + ), + 'home' => array( + 'name' => __( 'Home Page Settings', 'all-in-one-seo-pack' ), + 'help_link' => 'https://semperplugins.com/documentation/home-page-settings/', + 'options' => array( 'home_title', 'home_description', 'home_keywords', 'use_static_home_info' ), + ), + 'title' => array( + 'name' => __( 'Title Settings', 'all-in-one-seo-pack' ), + 'help_link' => 'https://semperplugins.com/documentation/title-settings/', + 'options' => array( + 'rewrite_titles', + 'force_rewrites', + 'cap_titles', + 'home_page_title_format', + 'page_title_format', + 'post_title_format', + 'category_title_format', + 'archive_title_format', + 'date_title_format', + 'author_title_format', + 'tag_title_format', + 'search_title_format', + 'description_format', + '404_title_format', + 'paged_format', + ), + ), + 'cpt' => array( + 'name' => __( 'Custom Post Type Settings', 'all-in-one-seo-pack' ), + 'help_link' => 'https://semperplugins.com/documentation/custom-post-type-settings/', + 'options' => array( 'enablecpost', 'cpostadvanced', 'taxactive', 'cpostactive', 'cposttitles' ), + ), + 'display' => array( + 'name' => __( 'Display Settings', 'all-in-one-seo-pack' ), + 'help_link' => 'https://semperplugins.com/documentation/display-settings/', + 'options' => array( 'posttypecolumns' ), + ), + 'webmaster' => array( + 'name' => __( 'Webmaster Verification', 'all-in-one-seo-pack' ), + 'help_link' => 'https://semperplugins.com/sections/webmaster-verification/', + 'options' => array( 'google_verify', 'bing_verify', 'pinterest_verify' ), + ), + 'google' => array( + 'name' => __( 'Google Settings', 'all-in-one-seo-pack' ), + 'help_link' => 'https://semperplugins.com/documentation/google-settings/', + 'options' => array( + 'google_publisher', + 'google_disable_profile', + 'google_sitelinks_search', + 'google_set_site_name', + 'google_specify_site_name', + 'google_author_advanced', + 'google_author_location', + 'google_enable_publisher', + 'google_specify_publisher', + // "google_connect", + 'google_analytics_id', + 'ga_advanced_options', + 'ga_domain', + 'ga_multi_domain', + 'ga_addl_domains', + 'ga_anonymize_ip', + 'ga_display_advertising', + 'ga_exclude_users', + 'ga_track_outbound_links', + 'ga_link_attribution', + 'ga_enhanced_ecommerce', + ), + ), + 'noindex' => array( + 'name' => __( 'Noindex Settings', 'all-in-one-seo-pack' ), + 'help_link' => 'https://semperplugins.com/documentation/noindex-settings/', + 'options' => array( + 'cpostnoindex', + 'cpostnofollow', + 'cpostnoodp', + 'cpostnoydir', + 'category_noindex', + 'archive_date_noindex', + 'archive_author_noindex', + 'tags_noindex', + 'search_noindex', + '404_noindex', + 'tax_noindex', + 'paginated_noindex', + 'paginated_nofollow', + 'noodp', + 'noydir', + ), + ), + 'advanced' => array( + 'name' => __( 'Advanced Settings', 'all-in-one-seo-pack' ), + 'help_link' => 'https://semperplugins.com/documentation/all-in-one-seo-pack-advanced-settings/', + 'options' => array( + 'generate_descriptions', + 'skip_excerpt', + 'run_shortcodes', + 'hide_paginated_descriptions', + 'dont_truncate_descriptions', + 'unprotect_meta', + 'redirect_attachement_parent', + 'ex_pages', + 'post_meta_tags', + 'page_meta_tags', + 'front_meta_tags', + 'home_meta_tags', + ), + ), + 'keywords' => array( + 'name' => __( 'Keyword Settings', 'all-in-one-seo-pack' ), + 'help_link' => 'https://semperplugins.com/documentation/keyword-settings/', + 'options' => array( + 'togglekeywords', + 'use_categories', + 'use_tags_as_keywords', + 'dynamic_postspage_keywords', + ), + ), + ); + + if ( AIOSEOPPRO ) { + // Add Pro options. + $this->default_options = aioseop_add_pro_opt( $this->default_options ); + $this->help_text = aioseop_add_pro_help( $this->help_text ); + $this->layout = aioseop_add_pro_layout( $this->layout ); + } + + if ( ! AIOSEOPPRO ) { + unset( $this->layout['cpt']['options']['2'] ); + } + + $other_options = array(); + foreach ( $this->layout as $k => $v ) { + $other_options = array_merge( $other_options, $v['options'] ); + } + + $this->layout['default']['options'] = array_diff( array_keys( $this->default_options ), $other_options ); + + if ( is_admin() ) { + $this->add_help_text_links(); + add_action( 'aioseop_global_settings_header', array( $this, 'display_right_sidebar' ) ); + add_action( 'aioseop_global_settings_footer', array( $this, 'display_settings_footer' ) ); + add_action( 'output_option', array( $this, 'custom_output_option' ), 10, 2 ); + add_action( 'all_admin_notices', array( $this, 'visibility_warning' ) ); + + if ( ! AIOSEOPPRO ) { + // add_action('all_admin_notices', array( $this, 'woo_upgrade_notice')); + } + } + if ( AIOSEOPPRO ) { + add_action( 'split_shared_term', array( $this, 'split_shared_term' ), 10, 4 ); + } + } + + //good candidate for pro dir + + /** + * Use custom callback for outputting snippet + * + * @param $buf + * @param $args + * + * @return string + */ + function custom_output_option( $buf, $args ) { + if ( 'aiosp_snippet' === $args['name'] ) { + $args['options']['type'] = 'html'; + $args['options']['nowrap'] = false; + $args['options']['save'] = false; + $info = $this->get_page_snippet_info(); + extract( $info ); + } else { + return ''; + } + + if ( $this->strlen( $title ) > 70 ) { + $title = $this->trim_excerpt_without_filters( $title, 70 ) . '...'; + } + if ( $this->strlen( $description ) > 156 ) { + $description = $this->trim_excerpt_without_filters( $description, 156 ) . '...'; + } + $extra_title_len = 0; + if ( empty( $title_format ) ) { + $title = '' . esc_attr( wp_strip_all_tags( html_entity_decode( $title ) ) ) . ''; + } else { + if ( strpos( $title_format, '%blog_title%' ) !== false ) { + $title_format = str_replace( '%blog_title%', get_bloginfo( 'name' ), $title_format ); + } + $title_format = $this->apply_cf_fields( $title_format ); + $replace_title = '' . esc_attr( wp_strip_all_tags( html_entity_decode( $title ) ) ) . ''; + if ( strpos( $title_format, '%post_title%' ) !== false ) { + $title_format = str_replace( '%post_title%', $replace_title, $title_format ); + } + if ( strpos( $title_format, '%page_title%' ) !== false ) { + $title_format = str_replace( '%page_title%', $replace_title, $title_format ); + } + if ( strpos( $title_format, '%current_date%' ) !== false ) { + $title_format = str_replace( '%current_date%', date_i18n( get_option( 'date_format' ) ), $title_format ); + } + if ( $w->is_category || $w->is_tag || $w->is_tax ) { + if ( AIOSEOPPRO && ! empty( $_GET ) && ! empty( $_GET['taxonomy'] ) && ! empty( $_GET['tag_ID'] ) && function_exists( 'wp_get_split_terms' ) ) { + $term_id = intval( $_GET['tag_ID'] ); + $was_split = get_term_meta( $term_id, '_aioseop_term_was_split', true ); + if ( ! $was_split ) { + $split_terms = wp_get_split_terms( $term_id, $_GET['taxonomy'] ); + if ( ! empty( $split_terms ) ) { + foreach ( $split_terms as $new_tax => $new_term ) { + $this->split_shared_term( $term_id, $new_term ); + } + } + } + } + if ( strpos( $title_format, '%category_title%' ) !== false ) { + $title_format = str_replace( '%category_title%', $replace_title, $title_format ); + } + if ( strpos( $title_format, '%taxonomy_title%' ) !== false ) { + $title_format = str_replace( '%taxonomy_title%', $replace_title, $title_format ); + } + } else { + if ( strpos( $title_format, '%category%' ) !== false ) { + $title_format = str_replace( '%category%', $category, $title_format ); + } + if ( strpos( $title_format, '%category_title%' ) !== false ) { + $title_format = str_replace( '%category_title%', $category, $title_format ); + } + if ( strpos( $title_format, '%taxonomy_title%' ) !== false ) { + $title_format = str_replace( '%taxonomy_title%', $category, $title_format ); + } + if ( AIOSEOPPRO ) { + if ( strpos( $title_format, '%tax_' ) && ! empty( $p ) ) { + $taxes = get_object_taxonomies( $p, 'objects' ); + if ( ! empty( $taxes ) ) { + foreach ( $taxes as $t ) { + if ( strpos( $title_format, "%tax_{$t->name}%" ) ) { + $terms = $this->get_all_terms( $p->ID, $t->name ); + $term = ''; + if ( count( $terms ) > 0 ) { + $term = $terms[0]; + } + $title_format = str_replace( "%tax_{$t->name}%", $term, $title_format ); + } + } + } + } + } + } + if ( strpos( $title_format, '%taxonomy_description%' ) !== false ) { + $title_format = str_replace( '%taxonomy_description%', $description, $title_format ); + } + + $title_format = preg_replace( '/%([^%]*?)%/', '', $title_format ); + $title = $title_format; + $extra_title_len = strlen( str_replace( $replace_title, '', $title_format ) ); + } + + $args['value'] = sprintf( $args['value'], $title, esc_url( $url ), esc_attr( wp_strip_all_tags( $description ) ) ); + $extra_title_len = (int) $extra_title_len; + $args['value'] .= ""; + $buf = $this->get_option_row( $args['name'], $args['options'], $args ); + + return $buf; + } + +//good candidate for pro dir + + /** + * @return array + */ + function get_page_snippet_info() { + static $info = array(); + if ( ! empty( $info ) ) { + return $info; + } + global $post, $aioseop_options, $wp_query; + $title = $url = $description = $term = $category = ''; + $p = $post; + $w = $wp_query; + if ( ! is_object( $post ) ) { + $post = $this->get_queried_object(); + } + if ( empty( $this->meta_opts ) ) { + $this->meta_opts = $this->get_current_options( array(), 'aiosp' ); + } + if ( ! is_object( $post ) && is_admin() && ! empty( $_GET ) && ! empty( $_GET['post_type'] ) && ! empty( $_GET['taxonomy'] ) && ! empty( $_GET['tag_ID'] ) ) { + $term = get_term_by( 'id', $_GET['tag_ID'], $_GET['taxonomy'] ); + } + if ( is_object( $post ) ) { + $opts = $this->meta_opts; + $post_id = $p->ID; + if ( empty( $post->post_modified_gmt ) ) { + $wp_query = new WP_Query( array( 'p' => $post_id, 'post_type' => $post->post_type ) ); + } + if ( 'page' === $post->post_type ) { + $wp_query->is_page = true; + } elseif ( 'attachment' === $post->post_type ) { + $wp_query->is_attachment = true; + } else { + $wp_query->is_single = true; + } + if ( empty( $this->is_front_page ) ) { + $this->is_front_page = false; + } + if ( 'page' === get_option( 'show_on_front' ) ) { + if ( is_page() && $post->ID == get_option( 'page_on_front' ) ) { + $this->is_front_page = true; + } elseif ( $post->ID == get_option( 'page_for_posts' ) ) { + $wp_query->is_home = true; + } + } + $wp_query->queried_object = $post; + if ( ! empty( $post ) && ! $wp_query->is_home && ! $this->is_front_page ) { + $title = $this->internationalize( get_post_meta( $post->ID, '_aioseop_title', true ) ); + if ( empty( $title ) ) { + $title = $post->post_title; + } + } + $title_format = ''; + if ( empty( $title ) ) { + $title = $this->wp_title(); + } + $description = $this->get_main_description( $post ); + + // All this needs to be in it's own function (class really) + + if ( empty( $title_format ) ) { + if ( is_page() ) { + $title_format = $aioseop_options['aiosp_page_title_format']; + + } elseif ( is_single() || is_attachment() ) { + $title_format = $this->get_post_title_format( 'post', $post ); + } + } + if ( empty( $title_format ) ) { + $title_format = '%post_title%'; + } + $categories = $this->get_all_categories( $post_id ); + $category = ''; + if ( count( $categories ) > 0 ) { + $category = $categories[0]; + } + } else if ( is_object( $term ) ) { + if ( 'category' === $_GET['taxonomy'] ) { + query_posts( array( 'cat' => $_GET['tag_ID'] ) ); + } else if ( 'post_tag' === $_GET['taxonomy'] ) { + query_posts( array( 'tag' => $term->slug ) ); + } else { + query_posts( array( + 'page' => '', + $_GET['taxonomy'] => $term->slug, + 'post_type' => $_GET['post_type'], + ) ); + } + if ( empty( $this->meta_opts ) ) { + $this->meta_opts = $this->get_current_options( array(), 'aiosp' ); + } + $title = $this->get_tax_name( $_GET['taxonomy'] ); + $title_format = $this->get_tax_title_format(); + $opts = $this->meta_opts; + if ( ! empty( $opts ) ) { + $description = $opts['aiosp_description']; + } + if ( empty( $description ) ) { + $description = term_description(); + } + $description = $this->internationalize( $description ); + } + if($this->is_front_page == true ){ + //$title_format = $aioseop_options['aiosp_home_page_title_format']; + $title_format = ''; // Not sure why this needs to be this way, but we should extract all this out to figure out what's going on. + } + $show_page = true; + if ( ! empty( $aioseop_options['aiosp_no_paged_canonical_links'] ) ) { + $show_page = false; + } + if ( $aioseop_options['aiosp_can'] ) { + if ( ! empty( $aioseop_options['aiosp_customize_canonical_links'] ) && ! empty( $opts['aiosp_custom_link'] ) ) { + $url = $opts['aiosp_custom_link']; + } + if ( empty( $url ) ) { + $url = $this->aiosp_mrt_get_url( $wp_query, $show_page ); + } + $url = apply_filters( 'aioseop_canonical_url', $url ); + } + if ( ! $url ) { + $url = get_permalink(); + } + + $title = $this->apply_cf_fields( $title ); + $description = $this->apply_cf_fields( $description ); + $description = apply_filters( 'aioseop_description', $description ); + + $keywords = $this->get_main_keywords(); + $keywords = $this->apply_cf_fields( $keywords ); + $keywords = apply_filters( 'aioseop_keywords', $keywords ); + + $info = array( + 'title' => $title, + 'description' => $description, + 'keywords' => $keywords, + 'url' => $url, + 'title_format' => $title_format, + 'category' => $category, + 'w' => $wp_query, + 'p' => $post, + ); + wp_reset_postdata(); + $wp_query = $w; + $post = $p; + + return $info; + } + + /** + * @return null|object|WP_Post + */ + function get_queried_object() { + static $p = null; + global $wp_query, $post; + if ( null !== $p ) { + return $p; + } + if ( is_object( $post ) ) { + $p = $post; + } else { + if ( ! $wp_query ) { + return null; + } + $p = $wp_query->get_queried_object(); + } + + return $p; + } + + /** + * @param array $opts + * @param null $location + * @param null $defaults + * @param null $post + * + * @return array + */ + function get_current_options( $opts = array(), $location = null, $defaults = null, $post = null ) { + if ( ( 'aiosp' === $location) && ( 'metabox' == $this->locations[ $location ]['type'] ) ) { + if ( null === $post ) { + global $post; + } + $post_id = $post; + if ( is_object( $post_id ) ) { + $post_id = $post_id->ID; + } + $get_opts = $this->default_options( $location ); + $optlist = array( + 'keywords', + 'description', + 'title', + 'custom_link', + 'sitemap_exclude', + 'disable', + 'disable_analytics', + 'noindex', + 'nofollow', + 'noodp', + 'noydir', + ); + if ( ! ( ! empty( $this->options['aiosp_can'] ) ) && ( ! empty( $this->options['aiosp_customize_canonical_links'] ) ) ) { + unset( $optlist['custom_link'] ); + } + foreach ( $optlist as $f ) { + $meta = ''; + $field = "aiosp_$f"; + + if ( AIOSEOPPRO ) { + if ( ( isset( $_GET['taxonomy'] ) && isset( $_GET['tag_ID'] ) ) || is_category() || is_tag() || is_tax() ) { + if ( is_admin() && isset( $_GET['tag_ID'] ) ) { + $meta = get_term_meta( $_GET['tag_ID'], '_aioseop_' . $f, true ); + } else { + $queried_object = get_queried_object(); + if ( ! empty( $queried_object ) && ! empty( $queried_object->term_id ) ) { + $meta = get_term_meta( $queried_object->term_id, '_aioseop_' . $f, true ); + } + } + } else { + $meta = get_post_meta( $post_id, '_aioseop_' . $f, true ); + } + if ( 'title' === $f || 'description' === $f ) { + $get_opts[ $field ] = htmlspecialchars( $meta ); + } else { + $get_opts[ $field ] = htmlspecialchars( stripslashes( $meta ) ); + } + } else { + $field = "aiosp_$f"; + $meta = get_post_meta( $post_id, '_aioseop_' . $f, true ); + if ( 'title' === $f || 'description' === $f ) { + $get_opts[ $field ] = htmlspecialchars( $meta ); + } else { + $get_opts[ $field ] = htmlspecialchars( stripslashes( $meta ) ); + } + } + + } + $opts = wp_parse_args( $opts, $get_opts ); + + return $opts; + } else { + $options = parent::get_current_options( $opts, $location, $defaults ); + + return $options; + } + } + + /** + * @param $in + * + * @return mixed|void + */ + function internationalize( $in ) { + if ( function_exists( 'langswitch_filter_langs_with_message' ) ) { + $in = langswitch_filter_langs_with_message( $in ); + } + + if ( function_exists( 'polyglot_filter' ) ) { + $in = polyglot_filter( $in ); + } + + if ( function_exists( 'qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage' ) ) { + $in = qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage( $in ); + } elseif ( function_exists( 'ppqtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage' ) ) { + $in = ppqtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage( $in ); + } elseif ( function_exists( 'qtranxf_useCurrentLanguageIfNotFoundUseDefaultLanguage' ) ) { + $in = qtranxf_useCurrentLanguageIfNotFoundUseDefaultLanguage( $in ); + } + + return apply_filters( 'localization', $in ); + } + + /*** Used to filter wp_title(), get our title. ***/ + function wp_title() { + global $aioseop_options; + $title = false; + $post = $this->get_queried_object(); + if ( ! empty( $aioseop_options['aiosp_rewrite_titles'] ) ) { + $title = $this->get_aioseop_title( $post ); + $title = $this->apply_cf_fields( $title ); + } + + if ( false === $title ) { + $title = $this->get_original_title(); + } + + // If we're going to have this here, which seems logical, we should probably take it out of other places... do all titles pass through here? + // The following lines have been commented out to fix an error with Capitalize Titles as reported in the WP forums + // if ( !empty( $aioseop_options['aiosp_cap_titles'] ) ) + // $title = $this->capitalize( $title ); + + return apply_filters( 'aioseop_title', $title ); + } + + /** + * Gets the title that will be used by AIOSEOP for title rewrites or returns false. + * + * @param $post + * + * @return bool|string + */ + function get_aioseop_title( $post ) { + global $aioseop_options; + // the_search_query() is not suitable, it cannot just return. + global $s, $STagging; + $opts = $this->meta_opts; + if ( is_front_page() ) { + if ( ! empty( $aioseop_options['aiosp_use_static_home_info'] ) ) { + global $post; + if ( get_option( 'show_on_front' ) == 'page' && is_page() && $post->ID == get_option( 'page_on_front' ) ) { + $title = $this->internationalize( get_post_meta( $post->ID, '_aioseop_title', true ) ); + if ( ! $title ) { + $title = $this->internationalize( $post->post_title ); + } + if ( ! $title ) { + $title = $this->internationalize( $this->get_original_title( '', false ) ); + } + if ( ! empty( $aioseop_options['aiosp_home_page_title_format'] ) ) { + $title = $this->apply_page_title_format( $title, $post, $aioseop_options['aiosp_home_page_title_format'] ); + } + $title = $this->paged_title( $title ); + $title = apply_filters( 'aioseop_home_page_title', $title ); + } + } else { + $title = $this->internationalize( $aioseop_options['aiosp_home_title'] ); + if ( ! empty( $aioseop_options['aiosp_home_page_title_format'] ) ) { + $title = $this->apply_page_title_format( $title, null, $aioseop_options['aiosp_home_page_title_format'] ); + } + } + if ( empty( $title ) ) { + $title = $this->internationalize( get_option( 'blogname' ) ) . ' | ' . $this->internationalize( get_bloginfo( 'description' ) ); + } + + global $post; + $post_id = $post->ID; + + if ( is_post_type_archive() && is_post_type_archive( 'product' ) && $post_id = woocommerce_get_page_id( 'shop' ) && $post = get_post( $post_id ) ) { + $frontpage_id = get_option( 'page_on_front' ); + + if ( woocommerce_get_page_id( 'shop' ) == get_option( 'page_on_front' ) && ! empty( $aioseop_options['aiosp_use_static_home_info'] ) ) { + $title = $this->internationalize( get_post_meta( $post->ID, '_aioseop_title', true ) ); + } + // $title = $this->internationalize( $aioseop_options['aiosp_home_title'] ); + if ( ! $title ) { + $title = $this->internationalize( get_post_meta( $frontpage_id, '_aioseop_title', true ) ); + } // This is/was causing the first product to come through. + if ( ! $title ) { + $title = $this->internationalize( $post->post_title ); + } + if ( ! $title ) { + $title = $this->internationalize( $this->get_original_title( '', false ) ); + } + + $title = $this->apply_page_title_format( $title, $post ); + $title = $this->paged_title( $title ); + $title = apply_filters( 'aioseop_title_page', $title ); + + return $title; + + } + + return $this->paged_title( $title ); //this is returned for woo + } else if ( is_attachment() ) { + if ( null === $post ) { + return false; + } + $title = get_post_meta( $post->ID, '_aioseop_title', true ); + if ( empty( $title ) ) { + $title = $post->post_title; + } + if ( empty( $title ) ) { + $title = $this->get_original_title( '', false ); + } + if ( empty( $title ) ) { + $title = get_the_title( $post->post_parent ); + } + $title = apply_filters( 'aioseop_attachment_title', $this->internationalize( $this->apply_post_title_format( $title, '', $post ) ) ); + + return $title; + } else if ( is_page() || $this->is_static_posts_page() || ( is_home() && ! $this->is_static_posts_page() ) ) { + if ( null === $post ) { + return false; + } + if ( $this->is_static_front_page() && ( $home_title = $this->internationalize( $aioseop_options['aiosp_home_title'] ) ) ) { + if ( ! empty( $aioseop_options['aiosp_home_page_title_format'] ) ) { + $home_title = $this->apply_page_title_format( $home_title, $post, $aioseop_options['aiosp_home_page_title_format'] ); + } + + // Home title filter. + return apply_filters( 'aioseop_home_page_title', $home_title ); + } else { + $page_for_posts = ''; + if ( is_home() ) { + $page_for_posts = get_option( 'page_for_posts' ); + } + if ( $page_for_posts ) { + $title = $this->internationalize( get_post_meta( $page_for_posts, '_aioseop_title', true ) ); + if ( ! $title ) { + $post_page = get_post( $page_for_posts ); + $title = $this->internationalize( $post_page->post_title ); + } + } else { + $title = $this->internationalize( get_post_meta( $post->ID, '_aioseop_title', true ) ); + if ( ! $title ) { + $title = $this->internationalize( $post->post_title ); + } + } + if ( ! $title ) { + $title = $this->internationalize( $this->get_original_title( '', false ) ); + } + + $title = $this->apply_page_title_format( $title, $post ); + $title = $this->paged_title( $title ); + $title = apply_filters( 'aioseop_title_page', $title ); + if ( $this->is_static_posts_page() ) { + $title = apply_filters( 'single_post_title', $title ); + } + + return $title; + } + } else if ( function_exists( 'woocommerce_get_page_id' ) && is_post_type_archive( 'product' ) && ( $post_id = woocommerce_get_page_id( 'shop' ) ) && ( $post = get_post( $post_id ) ) ) { + // Too far down? -mrt. + $title = $this->internationalize( get_post_meta( $post->ID, '_aioseop_title', true ) ); + if ( ! $title ) { + $title = $this->internationalize( $post->post_title ); + } + if ( ! $title ) { + $title = $this->internationalize( $this->get_original_title( '', false ) ); + } + $title = $this->apply_page_title_format( $title, $post ); + $title = $this->paged_title( $title ); + $title = apply_filters( 'aioseop_title_page', $title ); + + return $title; + } else if ( is_single() ) { + // We're not in the loop :(. + if ( null === $post ) { + return false; + } + $categories = $this->get_all_categories(); + $category = ''; + if ( count( $categories ) > 0 ) { + $category = $categories[0]; + } + $title = $this->internationalize( get_post_meta( $post->ID, '_aioseop_title', true ) ); + if ( ! $title ) { + $title = $this->internationalize( get_post_meta( $post->ID, 'title_tag', true ) ); + if ( ! $title ) { + $title = $this->internationalize( $this->get_original_title( '', false ) ); + } + } + if ( empty( $title ) ) { + $title = $post->post_title; + } + if ( ! empty( $title ) ) { + $title = $this->apply_post_title_format( $title, $category, $post ); + } + $title = $this->paged_title( $title ); + + return apply_filters( 'aioseop_title_single', $title ); + } else if ( is_search() && isset( $s ) && ! empty( $s ) ) { + $search = esc_attr( stripslashes( $s ) ); + if ( ! empty( $aioseop_options['aiosp_cap_titles'] ) ) { + $search = $this->capitalize( $search ); + } + $title_format = $aioseop_options['aiosp_search_title_format']; + $title = str_replace( '%blog_title%', $this->internationalize( get_bloginfo( 'name' ) ), $title_format ); + if ( strpos( $title, '%blog_description%' ) !== false ) { + $title = str_replace( '%blog_description%', $this->internationalize( get_bloginfo( 'description' ) ), $title ); + } + if ( strpos( $title, '%search%' ) !== false ) { + $title = str_replace( '%search%', $search, $title ); + } + $title = $this->paged_title( $title ); + + return $title; + } else if ( is_tag() ) { + global $utw; + $tag = $tag_description = ''; + if ( $utw ) { + $tags = $utw->GetCurrentTagSet(); + $tag = $tags[0]->tag; + $tag = str_replace( '-', ' ', $tag ); + } else { + if ( AIOSEOPPRO ) { + if ( ! empty( $opts ) && ! empty( $opts['aiosp_title'] ) ) { + $tag = $opts['aiosp_title']; + } + if ( ! empty( $opts ) ) { + if ( ! empty( $opts['aiosp_title'] ) ) { + $tag = $opts['aiosp_title']; + } + if ( ! empty( $opts['aiosp_description'] ) ) { + $tag_description = $opts['aiosp_description']; + } + } + } + if ( empty( $tag ) ) { + $tag = $this->get_original_title( '', false ); + } + if ( empty( $tag_description ) ) { + $tag_description = tag_description(); + } + $tag = $this->internationalize( $tag ); + $tag_description = $this->internationalize( $tag_description ); + } + if ( $tag ) { + if ( ! empty( $aioseop_options['aiosp_cap_titles'] ) ) { + $tag = $this->capitalize( $tag ); + } + $title_format = $aioseop_options['aiosp_tag_title_format']; + $title = str_replace( '%blog_title%', $this->internationalize( get_bloginfo( 'name' ) ), $title_format ); + if ( strpos( $title, '%blog_description%' ) !== false ) { + $title = str_replace( '%blog_description%', $this->internationalize( get_bloginfo( 'description' ) ), $title ); + } + if ( strpos( $title, '%tag%' ) !== false ) { + $title = str_replace( '%tag%', $tag, $title ); + } + if ( strpos( $title, '%tag_description%' ) !== false ) { + $title = str_replace( '%tag_description%', $tag_description, $title ); + } + if ( strpos( $title, '%taxonomy_description%' ) !== false ) { + $title = str_replace( '%taxonomy_description%', $tag_description, $title ); + } + $title = trim( wp_strip_all_tags( $title ) ); + $title = str_replace( array( '"', "\r\n", "\n" ), array( '"', ' ', ' ' ), $title ); + $title = $this->paged_title( $title ); + + return $title; + } + } else if ( ( is_tax() || is_category() ) && ! is_feed() ) { + return $this->get_tax_title(); + } else if ( isset( $STagging ) && $STagging->is_tag_view() ) { // Simple tagging support. + $tag = $STagging->search_tag; + if ( $tag ) { + if ( ! empty( $aioseop_options['aiosp_cap_titles'] ) ) { + $tag = $this->capitalize( $tag ); + } + $title_format = $aioseop_options['aiosp_tag_title_format']; + $title = str_replace( '%blog_title%', $this->internationalize( get_bloginfo( 'name' ) ), $title_format ); + if ( strpos( $title, '%blog_description%' ) !== false ) { + $title = str_replace( '%blog_description%', $this->internationalize( get_bloginfo( 'description' ) ), $title ); + } + if ( strpos( $title, '%tag%' ) !== false ) { + $title = str_replace( '%tag%', $tag, $title ); + } + $title = $this->paged_title( $title ); + + return $title; + } + } else if ( is_archive() || is_post_type_archive() ) { + if ( is_author() ) { + $author = $this->internationalize( $this->get_original_title( '', false ) ); + $title_format = $aioseop_options['aiosp_author_title_format']; + $new_title = str_replace( '%author%', $author, $title_format ); + } else if ( is_date() ) { + global $wp_query; + $date = $this->internationalize( $this->get_original_title( '', false ) ); + $title_format = $aioseop_options['aiosp_date_title_format']; + $new_title = str_replace( '%date%', $date, $title_format ); + $day = get_query_var( 'day' ); + if ( empty( $day ) ) { + $day = ''; + } + $new_title = str_replace( '%day%', $day, $new_title ); + $monthnum = get_query_var( 'monthnum' ); + $year = get_query_var( 'year' ); + if ( empty( $monthnum ) || is_year() ) { + $month = ''; + $monthnum = 0; + } + $month = date( 'F', mktime( 0, 0, 0, (int) $monthnum, 1, (int) $year ) ); + $new_title = str_replace( '%monthnum%', $monthnum, $new_title ); + if ( strpos( $new_title, '%month%' ) !== false ) { + $new_title = str_replace( '%month%', $month, $new_title ); + } + if ( strpos( $new_title, '%year%' ) !== false ) { + $new_title = str_replace( '%year%', get_query_var( 'year' ), $new_title ); + } + } else if ( is_post_type_archive() ) { + if ( empty( $title ) ) { + $title = $this->get_original_title( '', false ); + } + $new_title = apply_filters( 'aioseop_archive_title', $this->apply_archive_title_format( $title ) ); + } else { + return false; + } + $new_title = str_replace( '%blog_title%', $this->internationalize( get_bloginfo( 'name' ) ), $new_title ); + if ( strpos( $new_title, '%blog_description%' ) !== false ) { + $new_title = str_replace( '%blog_description%', $this->internationalize( get_bloginfo( 'description' ) ), $new_title ); + } + $title = trim( $new_title ); + $title = $this->paged_title( $title ); + + return $title; + } else if ( is_404() ) { + $title_format = $aioseop_options['aiosp_404_title_format']; + $new_title = str_replace( '%blog_title%', $this->internationalize( get_bloginfo( 'name' ) ), $title_format ); + if ( strpos( $new_title, '%blog_description%' ) !== false ) { + $new_title = str_replace( '%blog_description%', $this->internationalize( get_bloginfo( 'description' ) ), $new_title ); + } + if ( strpos( $new_title, '%request_url%' ) !== false ) { + $new_title = str_replace( '%request_url%', $_SERVER['REQUEST_URI'], $new_title ); + } + if ( strpos( $new_title, '%request_words%' ) !== false ) { + $new_title = str_replace( '%request_words%', $this->request_as_words( $_SERVER['REQUEST_URI'] ), $new_title ); + } + if ( strpos( $new_title, '%404_title%' ) !== false ) { + $new_title = str_replace( '%404_title%', $this->internationalize( $this->get_original_title( '', false ) ), $new_title ); + } + + return $new_title; + } + + return false; + } + + /** + * @param string $sep + * @param bool $echo + * @param string $seplocation + * + * @return The original title as delivered by WP (well, in most cases). + */ + function get_original_title( $sep = '|', $echo = false, $seplocation = '' ) { + global $aioseop_options; + if ( ! empty( $aioseop_options['aiosp_use_original_title'] ) ) { + $has_filter = has_filter( 'wp_title', array( $this, 'wp_title' ) ); + if ( false !== $has_filter ) { + remove_filter( 'wp_title', array( $this, 'wp_title' ), $has_filter ); + } + if ( current_theme_supports( 'title-tag' ) ) { + $sep = '|'; + $echo = false; + $seplocation = 'right'; + } + $title = wp_title( $sep, $echo, $seplocation ); + if ( false !== $has_filter ) { + add_filter( 'wp_title', array( $this, 'wp_title' ), $has_filter ); + } + if ( $title && ( $title = trim( $title ) ) ) { + return trim( $title ); + } + } + + // the_search_query() is not suitable, it cannot just return. + global $s; + + $title = null; + + if ( is_home() ) { + $title = get_option( 'blogname' ); + } else if ( is_single() ) { + $title = $this->internationalize( single_post_title( '', false ) ); + } else if ( is_search() && isset( $s ) && ! empty( $s ) ) { + $search = esc_attr( stripslashes( $s ) ); + if ( ! empty( $aioseop_options['aiosp_cap_titles'] ) ) { + $search = $this->capitalize( $search ); + } + $title = $search; + } else if ( ( is_tax() || is_category() ) && ! is_feed() ) { + $category_name = $this->ucwords( $this->internationalize( single_cat_title( '', false ) ) ); + $title = $category_name; + } else if ( is_page() ) { + $title = $this->internationalize( single_post_title( '', false ) ); + } else if ( is_tag() ) { + global $utw; + if ( $utw ) { + $tags = $utw->GetCurrentTagSet(); + $tag = $tags[0]->tag; + $tag = str_replace( '-', ' ', $tag ); + } else { + // For WordPress > 2.3. + $tag = $this->internationalize( single_term_title( '', false ) ); + } + if ( $tag ) { + $title = $tag; + } + } else if ( is_author() ) { + $author = get_userdata( get_query_var( 'author' ) ); + if ( $author === false ) { + global $wp_query; + $author = $wp_query->get_queried_object(); + } + if ( $author !== false ) { + $title = $author->display_name; + } + } else if ( is_day() ) { + $title = get_the_date(); + } else if ( is_month() ) { + $title = get_the_date( 'F, Y' ); + } else if ( is_year() ) { + $title = get_the_date( 'Y' ); + } else if ( is_archive() ) { + $title = $this->internationalize( post_type_archive_title( '', false ) ); + } else if ( is_404() ) { + $title_format = $aioseop_options['aiosp_404_title_format']; + $new_title = str_replace( '%blog_title%', $this->internationalize( get_bloginfo( 'name' ) ), $title_format ); + if ( strpos( $new_title, '%blog_description%' ) !== false ) { + $new_title = str_replace( '%blog_description%', $this->internationalize( get_bloginfo( 'description' ) ), $new_title ); + } + if ( strpos( $new_title, '%request_url%' ) !== false ) { + $new_title = str_replace( '%request_url%', $_SERVER['REQUEST_URI'], $new_title ); + } + if ( strpos( $new_title, '%request_words%' ) !== false ) { + $new_title = str_replace( '%request_words%', $this->request_as_words( $_SERVER['REQUEST_URI'] ), $new_title ); + } + $title = $new_title; + } + + return trim( $title ); + } + + /** + * @param $s + * + * @return string + */ + function capitalize( $s ) { + $s = trim( $s ); + $tokens = explode( ' ', $s ); + while ( list( $key, $val ) = each( $tokens ) ) { + $tokens[ $key ] = trim( $tokens[ $key ] ); + $tokens[ $key ] = $this->strtoupper( $this->substr( $tokens[ $key ], 0, 1 ) ) . $this->substr( $tokens[ $key ], 1 ); + } + $s = implode( ' ', $tokens ); + + return $s; + } + + /** + * @param $request + * + * @return User -readable nice words for a given request. + */ + function request_as_words( $request ) { + $request = htmlspecialchars( $request ); + $request = str_replace( '.html', ' ', $request ); + $request = str_replace( '.htm', ' ', $request ); + $request = str_replace( '.', ' ', $request ); + $request = str_replace( '/', ' ', $request ); + $request = str_replace( '-', ' ', $request ); + $request_a = explode( ' ', $request ); + $request_new = array(); + foreach ( $request_a as $token ) { + $request_new[] = $this->ucwords( trim( $token ) ); + } + $request = implode( ' ', $request_new ); + + return $request; + } + + /** + * @param $title + * @param null $p + * @param string $title_format + * + * @return string + */ + function apply_page_title_format( $title, $p = null, $title_format = '' ) { + global $aioseop_options; + if ( $p === null ) { + global $post; + } else { + $post = $p; + } + if ( empty( $title_format ) ) { + $title_format = $aioseop_options['aiosp_page_title_format']; + } + + return $this->title_placeholder_helper( $title, $post, 'page', $title_format ); + } + + /** + * @param $title + * @param $post + * @param string $type + * @param string $title_format + * @param string $category + * + * @return string + */ + function title_placeholder_helper( $title, $post, $type = 'post', $title_format = '', $category = '' ) { + if ( ! empty( $post ) ) { + $authordata = get_userdata( $post->post_author ); + } else { + $authordata = new WP_User(); + } + $new_title = str_replace( '%blog_title%', $this->internationalize( get_bloginfo( 'name' ) ), $title_format ); + if ( strpos( $new_title, '%blog_description%' ) !== false ) { + $new_title = str_replace( '%blog_description%', $this->internationalize( get_bloginfo( 'description' ) ), $new_title ); + } + if ( strpos( $new_title, "%{$type}_title%" ) !== false ) { + $new_title = str_replace( "%{$type}_title%", $title, $new_title ); + } + if ( $type == 'post' ) { + if ( strpos( $new_title, '%category%' ) !== false ) { + $new_title = str_replace( '%category%', $category, $new_title ); + } + if ( strpos( $new_title, '%category_title%' ) !== false ) { + $new_title = str_replace( '%category_title%', $category, $new_title ); + } + if ( strpos( $new_title, '%tax_' ) && ! empty( $post ) ) { + $taxes = get_object_taxonomies( $post, 'objects' ); + if ( ! empty( $taxes ) ) { + foreach ( $taxes as $t ) { + if ( strpos( $new_title, "%tax_{$t->name}%" ) ) { + $terms = $this->get_all_terms( $post->ID, $t->name ); + $term = ''; + if ( count( $terms ) > 0 ) { + $term = $terms[0]; + } + $new_title = str_replace( "%tax_{$t->name}%", $term, $new_title ); + } + } + } + } + } + if ( strpos( $new_title, "%{$type}_author_login%" ) !== false ) { + $new_title = str_replace( "%{$type}_author_login%", $authordata->user_login, $new_title ); + } + if ( strpos( $new_title, "%{$type}_author_nicename%" ) !== false ) { + $new_title = str_replace( "%{$type}_author_nicename%", $authordata->user_nicename, $new_title ); + } + if ( strpos( $new_title, "%{$type}_author_firstname%" ) !== false ) { + $new_title = str_replace( "%{$type}_author_firstname%", $this->ucwords( $authordata->first_name ), $new_title ); + } + if ( strpos( $new_title, "%{$type}_author_lastname%" ) !== false ) { + $new_title = str_replace( "%{$type}_author_lastname%", $this->ucwords( $authordata->last_name ), $new_title ); + } + if ( strpos( $new_title, "%current_date%" ) !== false ){ + $new_title = str_replace( '%current_date%', date_i18n( get_option( 'date_format' ) ), $new_title ); + } + $title = trim( $new_title ); + + return $title; + } + + /** + * @param $id + * @param $taxonomy + * + * @return array + */ + function get_all_terms( $id, $taxonomy ) { + $keywords = array(); + $terms = get_the_terms( $id, $taxonomy ); + if ( ! empty( $terms ) ) { + foreach ( $terms as $term ) { + $keywords[] = $this->internationalize( $term->name ); + } + } + + return $keywords; + } + + /** + * @param $title + * + * @return string + */ + function paged_title( $title ) { + // The page number if paged. + global $paged; + global $aioseop_options; + // Simple tagging support. + global $STagging; + $page = get_query_var( 'page' ); + if ( $paged > $page ) { + $page = $paged; + } + if ( is_paged() || ( isset( $STagging ) && $STagging->is_tag_view() && $paged ) || ( $page > 1 ) ) { + $part = $this->internationalize( $aioseop_options['aiosp_paged_format'] ); + if ( isset( $part ) || ! empty( $part ) ) { + $part = ' ' . trim( $part ); + $part = str_replace( '%page%', $page, $part ); + $this->log( "paged_title() [$title] [$part]" ); + $title .= $part; + } + } + + return $title; + } + + /** + * @param $message + */ + function log( $message ) { + if ( $this->do_log ) { + @error_log( date( 'Y-m-d H:i:s' ) . ' ' . $message . "\n", 3, $this->log_file ); + } + } + + /** + * @param $title + * @param string $category + * @param null $p + * + * @return string + */ + function apply_post_title_format( $title, $category = '', $p = null ) { + if ( $p === null ) { + global $post; + } else { + $post = $p; + } + $title_format = $this->get_post_title_format( 'post', $post ); + + return $this->title_placeholder_helper( $title, $post, 'post', $title_format, $category ); + } + + /** + * @param string $title_type + * @param null $p + * + * @return bool|string + */ + function get_post_title_format( $title_type = 'post', $p = null ) { + global $aioseop_options; + if ( ( $title_type != 'post' ) && ( $title_type != 'archive' ) ) { + return false; + } + $title_format = "%{$title_type}_title% | %blog_title%"; + if ( isset( $aioseop_options["aiosp_{$title_type}_title_format"] ) ) { + $title_format = $aioseop_options["aiosp_{$title_type}_title_format"]; + } + if ( ! empty( $aioseop_options['aiosp_enablecpost'] ) && ! empty( $aioseop_options['aiosp_cpostactive'] ) ) { + $wp_post_types = $aioseop_options['aiosp_cpostactive']; + if ( ! empty( $aioseop_options['aiosp_cposttitles'] ) ) { + if ( ( ( $title_type == 'archive' ) && is_post_type_archive( $wp_post_types ) && $prefix = "aiosp_{$title_type}_" ) || + ( ( $title_type == 'post' ) && $this->is_singular( $wp_post_types, $p ) && $prefix = 'aiosp_' ) + ) { + $post_type = get_post_type( $p ); + if ( ! empty( $aioseop_options["{$prefix}{$post_type}_title_format"] ) ) { + $title_format = $aioseop_options["{$prefix}{$post_type}_title_format"]; + } + } + } + } + + return $title_format; + } + + /** + * @param array $post_types + * @param null $post + * + * @return bool + */ + function is_singular( $post_types = array(), $post = null ) { + if ( ! empty( $post_types ) && is_object( $post ) ) { + return in_array( $post->post_type, (array) $post_types ); + } else { + return is_singular( $post_types ); + } + } + + /** + * @return bool|null + */ + function is_static_posts_page() { + static $is_posts_page = null; + if ( $is_posts_page !== null ) { + return $is_posts_page; + } + $post = $this->get_queried_object(); + $is_posts_page = ( get_option( 'show_on_front' ) == 'page' && is_home() && ! empty( $post ) && $post->ID == get_option( 'page_for_posts' ) ); + + return $is_posts_page; + } + + /** + * @return bool|null + */ + function is_static_front_page() { + if ( isset( $this->is_front_page ) && $this->is_front_page !== null ) { + return $this->is_front_page; + } + $post = $this->get_queried_object(); + $this->is_front_page = ( get_option( 'show_on_front' ) == 'page' && is_page() && ! empty( $post ) && $post->ID == get_option( 'page_on_front' ) ); + + return $this->is_front_page; + } + + /** + * @param int $id + * + * @return array + */ + function get_all_categories( $id = 0 ) { + $keywords = array(); + $categories = get_the_category( $id ); + if ( ! empty( $categories ) ) { + foreach ( $categories as $category ) { + $keywords[] = $this->internationalize( $category->cat_name ); + } + } + + return $keywords; + } + + /** + * @param string $tax + * + * @return string + */ + function get_tax_title( $tax = '' ) { + if ( AIOSEOPPRO ) { + if ( empty( $this->meta_opts ) ) { + $this->meta_opts = $this->get_current_options( array(), 'aiosp' ); + } + } + if ( empty( $tax ) ) { + if ( is_category() ) { + $tax = 'category'; + } else { + $tax = get_query_var( 'taxonomy' ); + } + } + $name = $this->get_tax_name( $tax ); + $desc = $this->get_tax_desc( $tax ); + + return $this->apply_tax_title_format( $name, $desc, $tax ); + } + + // Handle prev / next links. + + /** + * + * Gets taxonomy name. + * + * @param $tax + * + * As of 2.3.10, we've removed the option for capitalize categories. We still respect the option, + * and the default (true) or a legacy option in the db can be overridden with the new filter hook aioseop_capitalize_categories + * + * @return mixed|void + */ + function get_tax_name( $tax ) { + global $aioseop_options; + if ( AIOSEOPPRO ) { + $opts = $this->meta_opts; + if ( ! empty( $opts ) ) { + $name = $opts['aiosp_title']; + } + } else { + $name = ''; + } + if ( empty( $name ) ) { + $name = single_term_title( '', false ); + } + + $cap_cats = true; // Default to uppercase category/taxonomy titles. + if ( isset( $aioseop_options['aiosp_cap_cats'] ) && ! empty( $aioseop_options['aiosp_cap_cats'] ) ) { + // Legacy option is checked. + $cap_cats = true; + + } + + if ( isset( $aioseop_options['aiosp_cap_cats'] ) && empty( $aioseop_options['aiosp_cap_cats'] ) ) { + // Legacy option is unchecked. + $cap_cats = false; + } + + $cap_cats = apply_filters( 'aioseop_capitalize_categories', $cap_cats ); // This will override any legacy settings. + + // Apparently we're already ucwordsing this elsewhere, and doing it a second time messes it up... why aren't we just doing this at the end? + if ( ( $tax == 'category' ) && $cap_cats == true ) { + $name = $this->ucwords( $name ); + } + + return $this->internationalize( $name ); + } + + /** + * @param $tax + * + * @return mixed|void + */ + function get_tax_desc( $tax ) { + if ( AIOSEOPPRO ) { + $opts = $this->meta_opts; + if ( ! empty( $opts ) ) { + $desc = $opts['aiosp_description']; + } + } else { + $desc = ''; + } + if ( empty( $desc ) ) { + $desc = term_description( '', $tax ); + } + + return $this->internationalize( $desc ); + } + + /** + * @param $category_name + * @param $category_description + * @param string $tax + * + * @return string + */ + function apply_tax_title_format( $category_name, $category_description, $tax = '' ) { + if ( empty( $tax ) ) { + $tax = get_query_var( 'taxonomy' ); + } + $title_format = $this->get_tax_title_format( $tax ); + $title = str_replace( '%taxonomy_title%', $category_name, $title_format ); + if ( strpos( $title, '%taxonomy_description%' ) !== false ) { + $title = str_replace( '%taxonomy_description%', $category_description, $title ); + } + if ( strpos( $title, '%category_title%' ) !== false ) { + $title = str_replace( '%category_title%', $category_name, $title ); + } + if ( strpos( $title, '%category_description%' ) !== false ) { + $title = str_replace( '%category_description%', $category_description, $title ); + } + if ( strpos( $title, '%blog_title%' ) !== false ) { + $title = str_replace( '%blog_title%', $this->internationalize( get_bloginfo( 'name' ) ), $title ); + } + if ( strpos( $title, '%blog_description%' ) !== false ) { + $title = str_replace( '%blog_description%', $this->internationalize( get_bloginfo( 'description' ) ), $title ); + } + $title = wp_strip_all_tags( $title ); + + return $this->paged_title( $title ); + } + + /** + * @param string $tax + * + * @return string + */ + function get_tax_title_format( $tax = '' ) { + global $aioseop_options; + if ( AIOSEOPPRO ) { + $title_format = '%taxonomy_title% | %blog_title%'; + if ( is_category() ) { + $title_format = $aioseop_options['aiosp_category_title_format']; + } else { + $taxes = $aioseop_options['aiosp_taxactive']; + if ( empty( $tax ) ) { + $tax = get_query_var( 'taxonomy' ); + } + if ( ! empty( $aioseop_options["aiosp_{$tax}_tax_title_format"] ) ) { + $title_format = $aioseop_options["aiosp_{$tax}_tax_title_format"]; + } + } + if ( empty( $title_format ) ) { + $title_format = '%category_title% | %blog_title%'; + } + } else { + $title_format = '%category_title% | %blog_title%'; + if ( ! empty( $aioseop_options['aiosp_category_title_format'] ) ) { + $title_format = $aioseop_options['aiosp_category_title_format']; + } + + return $title_format; + } + + return $title_format; + } + + /** + * @param $title + * @param string $category + * + * @return string + */ + function apply_archive_title_format( $title, $category = '' ) { + $title_format = $this->get_archive_title_format(); + $r_title = array( '%blog_title%', '%blog_description%', '%archive_title%' ); + $d_title = array( + $this->internationalize( get_bloginfo( 'name' ) ), + $this->internationalize( get_bloginfo( 'description' ) ), + post_type_archive_title( '', false ), + ); + $title = trim( str_replace( $r_title, $d_title, $title_format ) ); + + return $title; + } + + /** + * @return bool|string + */ + function get_archive_title_format() { + return $this->get_post_title_format( 'archive' ); + } + + /** + * @param null $post + * + * @return mixed|string|void + */ + function get_main_description( $post = null ) { + global $aioseop_options; + $opts = $this->meta_opts; + $description = ''; + if ( is_author() && $this->show_page_description() ) { + $description = $this->internationalize( get_the_author_meta( 'description' ) ); + } else if ( function_exists( 'woocommerce_get_page_id' ) && is_post_type_archive( 'product' ) && ( $post_id = woocommerce_get_page_id( 'shop' ) ) && ( $post = get_post( $post_id ) ) ) { + // $description = $this->get_post_description( $post ); + // $description = $this->apply_cf_fields( $description ); + if ( ! ( woocommerce_get_page_id( 'shop' ) == get_option( 'page_on_front' ) ) ) { + $description = trim( $this->internationalize( get_post_meta( $post->ID, '_aioseop_description', true ) ) ); + } else if ( woocommerce_get_page_id( 'shop' ) == get_option( 'page_on_front' ) && ! empty( $aioseop_options['aiosp_use_static_home_info'] ) ) { + // $description = $this->get_aioseop_description( $post ); + $description = trim( $this->internationalize( get_post_meta( $post->ID, '_aioseop_description', true ) ) ); + } else if ( woocommerce_get_page_id( 'shop' ) == get_option( 'page_on_front' ) && empty( $aioseop_options['aiosp_use_static_home_info'] ) ) { + $description = $this->get_aioseop_description( $post ); + } + } else if ( is_front_page() ) { + $description = $this->get_aioseop_description( $post ); + } else if ( is_single() || is_page() || is_attachment() || is_home() || $this->is_static_posts_page() ) { + $description = $this->get_aioseop_description( $post ); + } else if ( ( is_category() || is_tag() || is_tax() ) && $this->show_page_description() ) { + if ( ! empty( $opts ) && AIOSEOPPRO ) { + $description = $opts['aiosp_description']; + } + if ( empty( $description ) ) { + $description = term_description(); + } + $description = $this->internationalize( $description ); + } + if ( empty( $aioseop_options['aiosp_dont_truncate_descriptions'] ) ) { + $description = $this->trim_excerpt_without_filters( $description ); + } + + return $description; + } + + /** + * @return bool + */ + function show_page_description() { + global $aioseop_options; + if ( ! empty( $aioseop_options['aiosp_hide_paginated_descriptions'] ) ) { + $page = $this->get_page_number(); + if ( ! empty( $page ) && ( $page > 1 ) ) { + return false; + } + } + + return true; + } + + /** + * @return mixed + */ + function get_page_number() { + $page = get_query_var( 'page' ); + if ( empty( $page ) ) { + $page = get_query_var( 'paged' ); + } + + return $page; + } + + /** + * @param null $post + * + * @return mixed|string + */ + function get_aioseop_description( $post = null ) { + global $aioseop_options; + if ( null === $post ) { + $post = $GLOBALS['post']; + } + $blog_page = aiosp_common::get_blog_page(); + $description = ''; + if ( is_front_page() && empty( $aioseop_options['aiosp_use_static_home_info'] ) ) { + $description = trim( $this->internationalize( $aioseop_options['aiosp_home_description'] ) ); + } elseif ( ! empty( $blog_page ) ) { + $description = $this->get_post_description( $blog_page ); + } + if ( empty( $description ) && is_object( $post ) && ! is_archive() && empty( $blog_page ) ) { + $description = $this->get_post_description( $post ); + } + $description = $this->apply_cf_fields( $description ); + + return $description; + } + + /** + * @param $post + * + * @return mixed|string + */ + function get_post_description( $post ) { + global $aioseop_options; + $description = ''; + if ( ! $this->show_page_description() ) { + return ''; + } + $description = trim( $this->internationalize( get_post_meta( $post->ID, '_aioseop_description', true ) ) ); + if ( ! empty( $post ) && post_password_required( $post ) ) { + return $description; + } + if ( ! $description ) { + if ( empty( $aioseop_options['aiosp_skip_excerpt'] ) ) { + $description = $this->trim_excerpt_without_filters_full_length( $this->internationalize( $post->post_excerpt ) ); + } + if ( ! $description && isset( $aioseop_options['aiosp_generate_descriptions'] ) && $aioseop_options['aiosp_generate_descriptions'] ) { + $content = $post->post_content; + if ( ! empty( $aioseop_options['aiosp_run_shortcodes'] ) ) { + $content = do_shortcode( $content ); + } + $content = wp_strip_all_tags( $content ); + $description = $this->trim_excerpt_without_filters( $this->internationalize( $content ) ); + } + } + + // Internal whitespace trim. + $description = preg_replace( '/\s\s+/u', ' ', $description ); + + return $description; + } + + /** + * @param $text + * + * @return string + */ + function trim_excerpt_without_filters_full_length( $text ) { + $text = str_replace( ']]>', ']]>', $text ); + $text = preg_replace( '|\[(.+?)\](.+?\[/\\1\])?|s', '', $text ); + $text = wp_strip_all_tags( $text ); + + return trim( $text ); + } + + /** + * @param $text + * @param int $max + * + * @return string + */ + function trim_excerpt_without_filters( $text, $max = 0 ) { + $text = str_replace( ']]>', ']]>', $text ); + $text = preg_replace( '|\[(.+?)\](.+?\[/\\1\])?|s', '', $text ); + $text = wp_strip_all_tags( $text ); + // Treat other common word-break characters like a space. + $text2 = preg_replace( '/[,._\-=+&!\?;:*]/s', ' ', $text ); + if ( ! $max ) { + $max = $this->maximum_description_length; + } + $max_orig = $max; + $len = $this->strlen( $text2 ); + if ( $max < $len ) { + if ( function_exists( 'mb_strrpos' ) ) { + $pos = mb_strrpos( $text2, ' ', - ( $len - $max ) ); + if ( false === $pos ) { + $pos = $max; + } + if ( $pos > $this->minimum_description_length ) { + $max = $pos; + } else { + $max = $this->minimum_description_length; + } + } else { + while ( ' ' != $text2[ $max ] && $max > $this->minimum_description_length ) { + $max --; + } + } + + // Probably no valid chars to break on? + if ( $len > $max_orig && $max < intval( $max_orig / 2 ) ) { + $max = $max_orig; + } + } + $text = $this->substr( $text, 0, $max ); + + return trim( $text ); + } + + /** + * @param $query + * @param bool $show_page + * + * @return bool|false|string + */ + function aiosp_mrt_get_url( $query, $show_page = true ) { + if ( $query->is_404 || $query->is_search ) { + return false; + } + $link = ''; + $haspost = count( $query->posts ) > 0; + if ( get_query_var( 'm' ) ) { + $m = preg_replace( '/[^0-9]/', '', get_query_var( 'm' ) ); + switch ( $this->strlen( $m ) ) { + case 4: + $link = get_year_link( $m ); + break; + case 6: + $link = get_month_link( $this->substr( $m, 0, 4 ), $this->substr( $m, 4, 2 ) ); + break; + case 8: + $link = get_day_link( $this->substr( $m, 0, 4 ), $this->substr( $m, 4, 2 ), $this->substr( $m, 6, 2 ) ); + break; + default: + return false; + } + } elseif ( $query->is_home && ( get_option( 'show_on_front' ) == 'page' ) && ( $pageid = get_option( 'page_for_posts' ) ) ) { + $link = get_permalink( $pageid ); + } elseif ( is_front_page() || ( $query->is_home && ( get_option( 'show_on_front' ) != 'page' || ! get_option( 'page_for_posts' ) ) ) ) { + if ( function_exists( 'icl_get_home_url' ) ) { + $link = icl_get_home_url(); + } else { + $link = trailingslashit( home_url() ); + } + } elseif ( ( $query->is_single || $query->is_page ) && $haspost ) { + $post = $query->posts[0]; + $link = get_permalink( $post->ID ); + } elseif ( $query->is_author && $haspost ) { + $author = get_userdata( get_query_var( 'author' ) ); + if ( false === $author ) { + return false; + } + $link = get_author_posts_url( $author->ID, $author->user_nicename ); + } elseif ( $query->is_category && $haspost ) { + $link = get_category_link( get_query_var( 'cat' ) ); + } elseif ( $query->is_tag && $haspost ) { + $tag = get_term_by( 'slug', get_query_var( 'tag' ), 'post_tag' ); + if ( ! empty( $tag->term_id ) ) { + $link = get_tag_link( $tag->term_id ); + } + } elseif ( $query->is_day && $haspost ) { + $link = get_day_link( get_query_var( 'year' ), + get_query_var( 'monthnum' ), + get_query_var( 'day' ) ); + } elseif ( $query->is_month && $haspost ) { + $link = get_month_link( get_query_var( 'year' ), + get_query_var( 'monthnum' ) ); + } elseif ( $query->is_year && $haspost ) { + $link = get_year_link( get_query_var( 'year' ) ); + } elseif ( $query->is_tax && $haspost ) { + $taxonomy = get_query_var( 'taxonomy' ); + $term = get_query_var( 'term' ); + if ( ! empty( $term ) ) { + $link = get_term_link( $term, $taxonomy ); + } + } elseif ( $query->is_archive && function_exists( 'get_post_type_archive_link' ) && ( $post_type = get_query_var( 'post_type' ) ) ) { + if ( is_array( $post_type ) ) { + $post_type = reset( $post_type ); + } + $link = get_post_type_archive_link( $post_type ); + } else { + return false; + } + if ( empty( $link ) || ! is_string( $link ) ) { + return false; + } + if ( apply_filters( 'aioseop_canonical_url_pagination', $show_page ) ) { + $link = $this->get_paged( $link ); + } + + return $link; + } + + /** + * @param $link + * + * @return string + */ + function get_paged( $link ) { + global $wp_rewrite; + $page = $this->get_page_number(); + $page_name = 'page'; + if ( ! empty( $wp_rewrite ) && ! empty( $wp_rewrite->pagination_base ) ) { + $page_name = $wp_rewrite->pagination_base; + } + if ( ! empty( $page ) && $page > 1 ) { + if ( $page == get_query_var( 'page' ) ) { + $link = trailingslashit( $link ) . "$page"; + } else { + $link = trailingslashit( $link ) . trailingslashit( $page_name ) . $page; + } + $link = user_trailingslashit( $link, 'paged' ); + } + + return $link; + } + + /** + * @return comma|string + */ + function get_main_keywords() { + global $aioseop_options; + global $aioseop_keywords; + global $post; + $opts = $this->meta_opts; + if ( ( is_front_page() && $aioseop_options['aiosp_home_keywords'] && ! $this->is_static_posts_page() ) || $this->is_static_front_page() ) { + if ( ! empty( $aioseop_options['aiosp_use_static_home_info'] ) ) { + $keywords = $this->get_all_keywords(); + } else { + $keywords = trim( $this->internationalize( $aioseop_options['aiosp_home_keywords'] ) ); + } + } elseif ( empty( $aioseop_options['aiosp_dynamic_postspage_keywords'] ) && $this->is_static_posts_page() ) { + $keywords = stripslashes( $this->internationalize( $opts['aiosp_keywords'] ) ); // And if option = use page set keywords instead of keywords from recent posts. + } elseif ( ( $blog_page = aiosp_common::get_blog_page( $post ) ) && empty( $aioseop_options['aiosp_dynamic_postspage_keywords'] ) ) { + $keywords = stripslashes( $this->internationalize( get_post_meta( $blog_page->ID, '_aioseop_keywords', true ) ) ); + } elseif ( empty( $aioseop_options['aiosp_dynamic_postspage_keywords'] ) && ( is_archive() || is_post_type_archive() ) ) { + $keywords = ''; + } else { + $keywords = $this->get_all_keywords(); + } + + return $keywords; + } + + /** + * @return comma-separated list of unique keywords + */ + function get_all_keywords() { + global $posts; + global $aioseop_options; + if ( is_404() ) { + return null; + } + // If we are on synthetic pages. + if ( ! is_home() && ! is_page() && ! is_single() && ! $this->is_static_front_page() && ! $this->is_static_posts_page() && ! is_archive() && ! is_post_type_archive() && ! is_category() && ! is_tag() && ! is_tax() ) { + return null; + } + $keywords = array(); + $opts = $this->meta_opts; + if ( ! empty( $opts['aiosp_keywords'] ) ) { + $traverse = $this->keyword_string_to_list( $this->internationalize( $opts['aiosp_keywords'] ) ); + if ( ! empty( $traverse ) ) { + foreach ( $traverse as $keyword ) { + $keywords[] = $keyword; + } + } + } + if ( empty( $posts ) ) { + global $post; + $post_arr = array( $post ); + } else { + $post_arr = $posts; + } + if ( is_array( $post_arr ) ) { + $postcount = count( $post_arr ); + foreach ( $post_arr as $p ) { + if ( $p ) { + $id = $p->ID; + if ( 1 == $postcount || ! empty( $aioseop_options['aiosp_dynamic_postspage_keywords'] ) ) { + // Custom field keywords. + $keywords_i = null; + $keywords_i = stripslashes( $this->internationalize( get_post_meta( $id, '_aioseop_keywords', true ) ) ); + if ( is_attachment() ) { + $id = $p->post_parent; + if ( empty( $keywords_i ) ) { + $keywords_i = stripslashes( $this->internationalize( get_post_meta( $id, '_aioseop_keywords', true ) ) ); + } + } + $traverse = $this->keyword_string_to_list( $keywords_i ); + if ( ! empty( $traverse ) ) { + foreach ( $traverse as $keyword ) { + $keywords[] = $keyword; + } + } + } + + if ( ! empty( $aioseop_options['aiosp_use_tags_as_keywords'] ) ) { + $keywords = array_merge( $keywords, $this->get_all_tags( $id ) ); + } + // Autometa. + $autometa = stripslashes( get_post_meta( $id, 'autometa', true ) ); + if ( isset( $autometa ) && ! empty( $autometa ) ) { + $autometa_array = explode( ' ', $autometa ); + foreach ( $autometa_array as $e ) { + $keywords[] = $e; + } + } + + if ( isset( $aioseop_options['aiosp_use_categories'] ) && $aioseop_options['aiosp_use_categories'] && ! is_page() ) { + $keywords = array_merge( $keywords, $this->get_all_categories( $id ) ); + } + } + } + } + + return $this->get_unique_keywords( $keywords ); + } + + /** + * @param $keywords + * + * @return array + */ + function keyword_string_to_list( $keywords ) { + $traverse = array(); + $keywords_i = str_replace( '"', '', $keywords ); + if ( isset( $keywords_i ) && ! empty( $keywords_i ) ) { + $traverse = explode( ',', $keywords_i ); + } + + return $traverse; + } + + /** + * @param int $id + * + * @return array + */ + function get_all_tags( $id = 0 ) { + $keywords = array(); + $tags = get_the_tags( $id ); + if ( ! empty( $tags ) && is_array( $tags ) ) { + foreach ( $tags as $tag ) { + $keywords[] = $this->internationalize( $tag->name ); + } + } + // Ultimate Tag Warrior integration. + global $utw; + if ( $utw ) { + $tags = $utw->GetTagsForPost( $p ); + if ( is_array( $tags ) ) { + foreach ( $tags as $tag ) { + $tag = $tag->tag; + $tag = str_replace( '_', ' ', $tag ); + $tag = str_replace( '-', ' ', $tag ); + $tag = stripslashes( $tag ); + $keywords[] = $tag; + } + } + } + + return $keywords; + } + + /** + * @param $keywords + * + * @return string + */ + function get_unique_keywords( $keywords ) { + return implode( ',', $this->clean_keyword_list( $keywords ) ); + } + + /** + * @param $keywords + * + * @return array + */ + function clean_keyword_list( $keywords ) { + $small_keywords = array(); + if ( ! is_array( $keywords ) ) { + $keywords = $this->keyword_string_to_list( $keywords ); + } + if ( ! empty( $keywords ) ) { + foreach ( $keywords as $word ) { + $small_keywords[] = trim( $this->strtolower( $word ) ); + } + } + + return array_unique( $small_keywords ); + } + + /** + * @param $term_id + * @param $new_term_id + * @param string $term_taxonomy_id + * @param string $taxonomy + */ + function split_shared_term( $term_id, $new_term_id, $term_taxonomy_id = '', $taxonomy = '' ) { + $terms = $this->get_all_term_data( $term_id ); + if ( ! empty( $terms ) ) { + $new_terms = $this->get_all_term_data( $new_term_id ); + if ( empty( $new_terms ) ) { + foreach ( $terms as $k => $v ) { + add_term_meta( $new_term_id, $k, $v, true ); + } + add_term_meta( $term_id, '_aioseop_term_was_split', true, true ); + } + } + } + + /** + * @param $term_id + * + * @return array + */ + function get_all_term_data( $term_id ) { + $terms = array(); + $optlist = array( + 'keywords', + 'description', + 'title', + 'custom_link', + 'sitemap_exclude', + 'disable', + 'disable_analytics', + 'noindex', + 'nofollow', + 'noodp', + 'noydir', + ); + foreach ( $optlist as $f ) { + $meta = get_term_meta( $term_id, '_aioseop_' . $f, true ); + if ( ! empty( $meta ) ) { + $terms[ '_aioseop_' . $f ] = $meta; + } + } + + return $terms; + } + + function add_page_icon() { + wp_enqueue_script( 'wp-pointer', false, array( 'jquery' ) ); + wp_enqueue_style( 'wp-pointer' ); + //$this->add_admin_pointers(); + + wp_enqueue_style( 'aiosp_admin_style', AIOSEOP_PLUGIN_URL . 'css/aiosp_admin.css' ); + ?> + + pointers['aioseop_menu_2640'] = array( + 'pointer_target' => "#toplevel_page_all-in-one-seo-pack$pro-aioseop_class", + 'pointer_text' => '

' . __( 'Review Your Settings', 'all-in-one-seo-pack' ) + . '

' . sprintf( __( 'Welcome to version %s. Thank you for running the latest and greatest All in One SEO Pack Pro ever! Please review your settings, as we\'re always adding new features for you!', 'all-in-one-seo-pack' ), AIOSEOP_VERSION ) . '

', + 'pointer_edge' => 'top', + 'pointer_align' => 'left', + 'pointer_scope' => 'global', + ); + + $this->pointers['aioseop_menu_2361'] = array( + 'pointer_target' => '#aioseop_top_button', + 'pointer_text' => '

' . sprintf( __( 'Welcome to Version %s!', 'all-in-one-seo-pack' ), AIOSEOP_VERSION ) + . '

' . __( 'Thank you for running the latest and greatest All in One SEO Pack Pro ever! Please review your settings, as we\'re always adding new features for you!', 'all-in-one-seo-pack' ) . '

', + 'pointer_edge' => 'top', + 'pointer_align' => 'left', + 'pointer_scope' => 'global', + ); + $this->pointers['aioseop_welcome_230'] = array( + 'pointer_target' => '#aioseop_top_button', + 'pointer_text' => '

' . sprintf( __( 'Review Your Settings', 'all-in-one-seo-pack' ), AIOSEOP_VERSION ) + . '

' . __( 'New in 2.4: Improved support for taxonomies, Woocommerce and massive performance improvements under the hood! Please review your settings on each options page!', 'all-in-one-seo-pack' ) . '

', + 'pointer_edge' => 'bottom', + 'pointer_align' => 'left', + 'pointer_scope' => 'local', + ); + $this->filter_pointers(); + + $this->pointers['aioseop_menu_2205'] = array( + 'pointer_target' => '#toplevel_page_all-in-one-seo-pack-aioseop_class', + 'pointer_text' => '

' . sprintf( __( 'Welcome to Version %s!', 'all-in-one-seo-pack' ), AIOSEOP_VERSION ) + . '

' . __( 'Thank you for running the latest and greatest All in One SEO Pack ever! Please review your settings, as we\'re always adding new features for you!', 'all-in-one-seo-pack' ) . '

', + 'pointer_edge' => 'top', + 'pointer_align' => 'left', + 'pointer_scope' => 'global', + ); + $this->pointers['aioseop_welcome_220534'] = array( + 'pointer_target' => '#aioseop_top_button', + 'pointer_text' => '

' . sprintf( __( 'Review Your Settings', 'all-in-one-seo-pack' ), AIOSEOP_VERSION ) + . '

' . __( 'Thank you for running the latest and greatest All in One SEO Pack ever! New since 2.2: Control who accesses your site with the new Robots.txt Editor and File Editor modules! Enable them from the Feature Manager. Remember to review your settings, we have added some new ones!', 'all-in-one-seo-pack' ) . '

', + 'pointer_edge' => 'bottom', + 'pointer_align' => 'left', + 'pointer_scope' => 'local', + ); + $this->filter_pointers(); + + } + + function add_page_hooks() { + + global $aioseop_options; + + $post_objs = get_post_types( '', 'objects' ); + $pt = array_keys( $post_objs ); + $rempost = array( 'revision', 'nav_menu_item' ); + $pt = array_diff( $pt, $rempost ); + $post_types = array(); + + $aiosp_enablecpost = ''; + if ( isset( $_REQUEST['aiosp_enablecpost'] ) ) { + $aiosp_enablecpost = $_REQUEST['aiosp_enablecpost']; + } + + foreach ( $pt as $p ) { + if ( ! empty( $post_objs[ $p ]->label ) ) { + if ( $post_objs[ $p ]->_builtin && empty( $aioseop_options['aiosp_enablecpost'] ) ) { + $post_types[ $p ] = $post_objs[ $p ]->label; + } elseif ( ! empty( $aioseop_options['aiosp_enablecpost'] ) || $aiosp_enablecpost == 'on' ) { + $post_types[ $p ] = $post_objs[ $p ]->label; + } + } else { + $post_types[ $p ] = $p; + } + } + + foreach ( $pt as $p ) { + if ( ! empty( $post_objs[ $p ]->label ) ) { + $all_post_types[ $p ] = $post_objs[ $p ]->label; + } + } + + $taxes = get_taxonomies( '', 'objects' ); + $tx = array_keys( $taxes ); + $remtax = array( 'nav_menu', 'link_category', 'post_format' ); + $tx = array_diff( $tx, $remtax ); + $tax_types = array(); + foreach ( $tx as $t ) { + if ( ! empty( $taxes[ $t ]->label ) ) { + $tax_types[ $t ] = $taxes[ $t ]->label; + } else { + $taxes[ $t ] = $t; + } + } + + $this->default_options['posttypecolumns']['initial_options'] = $post_types; + $this->default_options['cpostactive']['initial_options'] = $all_post_types; + $this->default_options['cpostnoindex']['initial_options'] = $post_types; + $this->default_options['cpostnofollow']['initial_options'] = $post_types; + $this->default_options['cpostnoodp']['initial_options'] = $post_types; + $this->default_options['cpostnoydir']['initial_options'] = $post_types; + if ( AIOSEOPPRO ) { + $this->default_options['taxactive']['initial_options'] = $tax_types; + } + $this->default_options['google_author_location']['initial_options'] = $post_types; + $this->default_options['google_author_location']['initial_options'] = array_merge( array( 'front' => __( 'Front Page', 'all-in-one-seo-pack' ) ), $post_types, array( 'all' => __( 'Everywhere Else', 'all-in-one-seo-pack' ) ) ); + $this->default_options['google_author_location']['default'] = array_keys( $this->default_options['google_author_location']['initial_options'] ); + + foreach ( $post_types as $p => $pt ) { + $field = $p . '_title_format'; + $name = $post_objs[ $p ]->labels->singular_name; + if ( ! isset( $this->default_options[ $field ] ) ) { + $this->default_options[ $field ] = array( + 'name' => "$name " . __( 'Title Format:', 'all-in-one-seo-pack' ) . "
($p)", + 'type' => 'text', + 'default' => '%post_title% | %blog_title%', + 'condshow' => array( + 'aiosp_rewrite_titles' => 1, + 'aiosp_enablecpost' => 'on', + 'aiosp_cpostadvanced' => 'on', + 'aiosp_cposttitles' => 'on', + 'aiosp_cpostactive\[\]' => $p, + ), + ); + $this->help_text[ $field ] = __( 'The following macros are supported:', 'all-in-one-seo-pack' ) + . '
  • ' . __( '%blog_title% - Your blog title', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%blog_description% - Your blog description', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%post_title% - The original title of the post.', 'all-in-one-seo-pack' ) . '
  • '; + $taxes = get_object_taxonomies( $p, 'objects' ); + if ( ! empty( $taxes ) ) { + foreach ( $taxes as $n => $t ) { + $this->help_text[ $field ] .= sprintf( __( "%%tax_%s%% - This post's associated %s taxonomy title", 'all-in-one-seo-pack' ), $n, $t->label ) . '
  • '; + } + } + $this->help_text[ $field ] .= + __( "%post_author_login% - This post's author' login", 'all-in-one-seo-pack' ) . '
  • ' . + __( "%post_author_nicename% - This post's author' nicename", 'all-in-one-seo-pack' ) . '
  • ' . + __( "%post_author_firstname% - This post's author' first name (capitalized)", 'all-in-one-seo-pack' ) . '
  • ' . + __( "%post_author_lastname% - This post's author' last name (capitalized)", 'all-in-one-seo-pack' ) . '
  • ' . + __( "%current_date% - The current date (localized)", 'all-in-one-seo-pack' ) . '
' . + ''; + $this->help_anchors[ $field ] = '#custom-titles'; + $this->layout['cpt']['options'][] = $field; + } + } + global $wp_roles; + if ( ! isset( $wp_roles ) ) { + $wp_roles = new WP_Roles(); + } + $role_names = $wp_roles->get_names(); + ksort( $role_names ); + $this->default_options['ga_exclude_users']['initial_options'] = $role_names; + + unset( $tax_types['category'] ); + unset( $tax_types['post_tag'] ); + $this->default_options['tax_noindex']['initial_options'] = $tax_types; + if ( empty( $tax_types ) ) { + unset( $this->default_options['tax_noindex'] ); + } + + if ( AIOSEOPPRO ) { + foreach ( $tax_types as $p => $pt ) { + $field = $p . '_tax_title_format'; + $name = $pt; + if ( ! isset( $this->default_options[ $field ] ) ) { + $this->default_options[ $field ] = array( + 'name' => "$name " . __( 'Taxonomy Title Format:', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'default' => '%taxonomy_title% | %blog_title%', + 'condshow' => array( + 'aiosp_rewrite_titles' => 1, + 'aiosp_enablecpost' => 'on', + 'aiosp_cpostadvanced' => 'on', + 'aiosp_cposttitles' => 'on', + 'aiosp_taxactive\[\]' => $p, + ), + ); + $this->help_text[ $field ] = __( 'The following macros are supported:', 'all-in-one-seo-pack' ) . + '
  • ' . __( '%blog_title% - Your blog title', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%blog_description% - Your blog description', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%taxonomy_title% - The original title of the taxonomy', 'all-in-one-seo-pack' ) . '
  • ' . + __( '%taxonomy_description% - The description of the taxonomy', 'all-in-one-seo-pack' ) . '
'; + $this->help_anchors[ $field ] = '#custom-titles'; + $this->layout['cpt']['options'][] = $field; + } + } + } + $this->setting_options(); + $this->add_help_text_links(); + + if ( AIOSEOPPRO ) { + global $aioseop_update_checker; + add_action( "{$this->prefix}update_options", array( + $aioseop_update_checker, + 'license_change_check', + ), 10, 2 ); + add_action( "{$this->prefix}settings_update", array( $aioseop_update_checker, 'update_check' ), 10, 2 ); + } + + add_filter( "{$this->prefix}display_options", array( $this, 'filter_options' ), 10, 2 ); + parent::add_page_hooks(); + } + + function settings_page_init() { + add_filter( "{$this->prefix}submit_options", array( $this, 'filter_submit' ) ); + } + + function enqueue_scripts() { + add_filter( "{$this->prefix}display_settings", array( $this, 'filter_settings' ), 10, 3 ); + add_filter( "{$this->prefix}display_options", array( $this, 'filter_options' ), 10, 2 ); + parent::enqueue_scripts(); + } + + /** + * @param $submit + * + * @return mixed + */ + function filter_submit( $submit ) { + $submit['Submit_Default']['value'] = __( 'Reset General Settings to Defaults', 'all-in-one-seo-pack' ) . ' »'; + $submit['Submit_All_Default'] = array( + 'type' => 'submit', + 'class' => 'button-secondary', + 'value' => __( 'Reset ALL Settings to Defaults', 'all-in-one-seo-pack' ) . ' »', + ); + + return $submit; + } + + /** + * Handle resetting options to defaults, but preserve the license key if pro. + * + * @param null $location + * @param bool $delete + */ + function reset_options( $location = null, $delete = false ) { + if ( AIOSEOPPRO ) { + global $aioseop_update_checker; + } + if ( $delete === true ) { + + if ( AIOSEOPPRO ) { + $license_key = ''; + if ( isset( $this->options ) && isset( $this->options['aiosp_license_key'] ) ) { + $license_key = $this->options['aiosp_license_key']; + } + } + + $this->delete_class_option( $delete ); + + if ( AIOSEOPPRO ) { + $this->options = array( 'aiosp_license_key' => $license_key ); + } else { + $this->options = array(); + } + } + $default_options = $this->default_options( $location ); + + if ( AIOSEOPPRO ) { + foreach ( $default_options as $k => $v ) { + if ( $k != 'aiosp_license_key' ) { + $this->options[ $k ] = $v; + } + } + $aioseop_update_checker->license_key = $this->options['aiosp_license_key']; + } else { + foreach ( $default_options as $k => $v ) { + $this->options[ $k ] = $v; + } + } + $this->update_class_option( $this->options ); + } + + /** + * @param $settings + * @param $location + * @param $current + * + * @return mixed + */ + function filter_settings( $settings, $location, $current ) { + if ( $location == null ) { + $prefix = $this->prefix; + + foreach ( array( 'seopostcol', 'seocustptcol', 'debug_info', 'max_words_excerpt' ) as $opt ) { + unset( $settings["{$prefix}$opt"] ); + } + + if ( ! class_exists( 'DOMDocument' ) ) { + unset( $settings['{prefix}google_connect'] ); + } + if ( AIOSEOPPRO ) { + if ( ! empty( $this->options['aiosp_license_key'] ) ) { + $settings['aiosp_license_key']['type'] = 'password'; + $settings['aiosp_license_key']['size'] = 38; + } + } + } elseif ( $location == 'aiosp' ) { + global $post, $aioseop_sitemap; + $prefix = $this->get_prefix( $location ) . $location . '_'; + if ( ! empty( $post ) ) { + $post_type = get_post_type( $post ); + if ( ! empty( $this->options['aiosp_cpostnoindex'] ) && in_array( $post_type, $this->options['aiosp_cpostnoindex'] ) ) { + $settings["{$prefix}noindex"]['type'] = 'select'; + $settings["{$prefix}noindex"]['initial_options'] = array( + '' => __( 'Default - noindex', 'all-in-one-seo-pack' ), + 'off' => __( 'index', 'all-in-one-seo-pack' ), + 'on' => __( 'noindex', 'all-in-one-seo-pack' ), + ); + } + if ( ! empty( $this->options['aiosp_cpostnofollow'] ) && in_array( $post_type, $this->options['aiosp_cpostnofollow'] ) ) { + $settings["{$prefix}nofollow"]['type'] = 'select'; + $settings["{$prefix}nofollow"]['initial_options'] = array( + '' => __( 'Default - nofollow', 'all-in-one-seo-pack' ), + 'off' => __( 'follow', 'all-in-one-seo-pack' ), + 'on' => __( 'nofollow', 'all-in-one-seo-pack' ), + ); + } + if ( ! empty( $this->options['aiosp_cpostnoodp'] ) && in_array( $post_type, $this->options['aiosp_cpostnoodp'] ) ) { + $settings["{$prefix}noodp"]['type'] = 'select'; + $settings["{$prefix}noodp"]['initial_options'] = array( + '' => __( 'Default - noodp', 'all-in-one-seo-pack' ), + 'off' => __( 'odp', 'all-in-one-seo-pack' ), + 'on' => __( 'noodp', 'all-in-one-seo-pack' ), + ); + } + if ( ! empty( $this->options['aiosp_cpostnoydir'] ) && in_array( $post_type, $this->options['aiosp_cpostnoydir'] ) ) { + $settings["{$prefix}noydir"]['type'] = 'select'; + $settings["{$prefix}noydir"]['initial_options'] = array( + '' => __( 'Default - noydir', 'all-in-one-seo-pack' ), + 'off' => __( 'ydir', 'all-in-one-seo-pack' ), + 'on' => __( 'noydir', 'all-in-one-seo-pack' ), + ); + } + global $post; + $info = $this->get_page_snippet_info(); + extract( $info ); + $settings["{$prefix}title"]['placeholder'] = $title; + $settings["{$prefix}description"]['placeholder'] = $description; + $settings["{$prefix}keywords"]['placeholder'] = $keywords; + } + + if ( ! AIOSEOPPRO ) { + if ( ! current_user_can( 'update_plugins' ) ) { + unset( $settings["{$prefix}upgrade"] ); + } + } + + if ( ! is_object( $aioseop_sitemap ) ) { + unset( $settings['aiosp_sitemap_exclude'] ); + } + + if ( ! empty( $this->options[ $this->prefix . 'togglekeywords' ] ) ) { + unset( $settings["{$prefix}keywords"] ); + unset( $settings["{$prefix}togglekeywords"] ); + } elseif ( ! empty( $current["{$prefix}togglekeywords"] ) ) { + unset( $settings["{$prefix}keywords"] ); + } + if ( empty( $this->options['aiosp_can'] ) || empty( $this->options['aiosp_customize_canonical_links'] ) ) { + unset( $settings["{$prefix}custom_link"] ); + } + } + + return $settings; + } + + /** + * @param $options + * @param $location + * + * @return mixed + */ + function filter_options( $options, $location ) { + if ( $location == 'aiosp' ) { + global $post; + if ( ! empty( $post ) ) { + $prefix = $this->prefix; + $post_type = get_post_type( $post ); + foreach ( array( 'noindex', 'nofollow', 'noodp', 'noydir' ) as $no ) { + if ( empty( $this->options[ 'aiosp_cpost' . $no ] ) || ( ! in_array( $post_type, $this->options[ 'aiosp_cpost' . $no ] ) ) ) { + if ( isset( $options["{$prefix}{$no}"] ) && ( $options["{$prefix}{$no}"] != 'on' ) ) { + unset( $options["{$prefix}{$no}"] ); + } + } + } + } + } + if ( $location == null ) { + $prefix = $this->prefix; + if ( isset( $options["{$prefix}rewrite_titles"] ) && ( ! empty( $options["{$prefix}rewrite_titles"] ) ) ) { + $options["{$prefix}rewrite_titles"] = 1; + } + if ( isset( $options["{$prefix}enablecpost"] ) && ( $options["{$prefix}enablecpost"] === '' ) ) { + $options["{$prefix}enablecpost"] = 0; + } + if ( isset( $options["{$prefix}use_original_title"] ) && ( $options["{$prefix}use_original_title"] === '' ) ) { + $options["{$prefix}use_original_title"] = 0; + } + } + + return $options; + } + + function template_redirect() { + global $aioseop_options; + + $post = $this->get_queried_object(); + + if ( ! $this->is_page_included() ) { + return; + } + + if ( ! empty( $aioseop_options['aiosp_rewrite_titles'] ) ) { + $force_rewrites = 1; + if ( isset( $aioseop_options['aiosp_force_rewrites'] ) ) { + $force_rewrites = $aioseop_options['aiosp_force_rewrites']; + } + if ( $force_rewrites ) { + ob_start( array( $this, 'output_callback_for_title' ) ); + } else { + add_filter( 'wp_title', array( $this, 'wp_title' ), 20 ); + } + } + } + + /** + * @return bool + */ + function is_page_included() { + global $aioseop_options; + if ( is_feed() ) { + return false; + } + if ( aioseop_mrt_exclude_this_page() ) { + return false; + } + $post = $this->get_queried_object(); + $post_type = ''; + if ( ! empty( $post ) && ! empty( $post->post_type ) ) { + $post_type = $post->post_type; + } + if ( empty( $aioseop_options['aiosp_enablecpost'] ) ) { + $wp_post_types = get_post_types( array( '_builtin' => true ) ); // Don't display meta if SEO isn't enabled on custom post types -- pdb. + if ( is_singular() && ! in_array( $post_type, $wp_post_types ) && ! is_front_page() ) { + return false; + } + } else { + $wp_post_types = $aioseop_options['aiosp_cpostactive']; + if ( empty( $wp_post_types ) ) { + $wp_post_types = array(); + } + if ( AIOSEOPPRO ) { + if ( is_tax() ) { + if ( empty( $aioseop_options['aiosp_taxactive'] ) || ! is_tax( $aioseop_options['aiosp_taxactive'] ) ) { + return false; + } + } elseif ( is_category() ) { + if ( empty( $aioseop_options['aiosp_taxactive'] ) || ! in_array( 'category', $aioseop_options['aiosp_taxactive'] ) ) { + return false; + } + } elseif ( is_tag() ) { + if ( empty( $aioseop_options['aiosp_taxactive'] ) || ! in_array( 'post_tag', $aioseop_options['aiosp_taxactive'] ) ) { + return false; + } + } else if ( ! in_array( $post_type, $wp_post_types ) && ! is_front_page() && ! is_post_type_archive( $wp_post_types ) && ! is_404() ) { + return false; + } + } else { + if ( is_singular() && ! in_array( $post_type, $wp_post_types ) && ! is_front_page() ) { + return false; + } + if ( is_post_type_archive() && ! is_post_type_archive( $wp_post_types ) ) { + return false; + } + } + } + + $this->meta_opts = $this->get_current_options( array(), 'aiosp' ); + + $aiosp_disable = $aiosp_disable_analytics = false; + + if ( ! empty( $this->meta_opts ) ) { + if ( isset( $this->meta_opts['aiosp_disable'] ) ) { + $aiosp_disable = $this->meta_opts['aiosp_disable']; + } + if ( isset( $this->meta_opts['aiosp_disable_analytics'] ) ) { + $aiosp_disable_analytics = $this->meta_opts['aiosp_disable_analytics']; + } + } + + $aiosp_disable = apply_filters( 'aiosp_disable', $aiosp_disable ); // API filter to disable AIOSEOP. + + if ( $aiosp_disable ) { + if ( ! $aiosp_disable_analytics ) { + if ( aioseop_option_isset( 'aiosp_google_analytics_id' ) ) { + remove_action( 'aioseop_modules_wp_head', array( $this, 'aiosp_google_analytics' ) ); + add_action( 'wp_head', array( $this, 'aiosp_google_analytics' ) ); + } + } + + return false; + } + + if ( ! empty( $this->meta_opts ) && $this->meta_opts['aiosp_disable'] == true ) { + return false; + } + + return true; + } + + /** + * @param $content + * + * @return mixed|string + */ + function output_callback_for_title( $content ) { + return $this->rewrite_title( $content ); + } + + /** + * Used for forcing title rewrites. + * + * @param $header + * + * @return mixed|string + */ + function rewrite_title( $header ) { + global $wp_query; + if ( ! $wp_query ) { + $header .= "\n"; + + return $header; + } + $title = $this->wp_title(); + if ( ! empty( $title ) ) { + $header = $this->replace_title( $header, $title ); + } + + return $header; + } + + /** + * @param $content + * @param $title + * + * @return mixed + */ + function replace_title( $content, $title ) { + // We can probably improve this... I'm not sure half of this is even being used. + $title = trim( strip_tags( $title ) ); + $title_tag_start = 'strpos( $content, $title_tag_start ); + $end = $this->strpos( $content, $title_tag_end ); + $this->title_start = $start; + $this->title_end = $end; + $this->orig_title = $title; + + return preg_replace( '/]*?)\s*>([^<]*?)<\/title\s*>/is', '' . preg_replace( '/(\$|\\\\)(?=\d)/', '\\\\\1', strip_tags( $title ) ) . '', $content, 1 ); + } + + function add_hooks() { + global $aioseop_options, $aioseop_update_checker; + + // MOVED TO MAIN PLUGIN FILE IN ORDER TO FIRE SOONS + //$role = get_role( 'administrator' ); + //if ( is_object( $role ) ) { + // $role->add_cap( 'aiosp_manage_seo' ); + //} + + aioseop_update_settings_check(); + add_filter( 'user_contactmethods', 'aioseop_add_contactmethods' ); + if ( is_user_logged_in() && is_admin_bar_showing() && current_user_can( 'aiosp_manage_seo' ) ) { + add_action( 'admin_bar_menu', array( $this, 'admin_bar_menu' ), 1000 ); + } + + if ( is_admin() ) { + add_action( 'admin_menu', array( $this, 'admin_menu' ) ); + add_action( 'admin_head', array( $this, 'add_page_icon' ) ); + add_action( 'admin_init', 'aioseop_addmycolumns', 1 ); + add_action( 'admin_init', 'aioseop_handle_ignore_notice' ); + if ( AIOSEOPPRO ) { + if ( current_user_can( 'update_plugins' ) ) { + add_action( 'admin_notices', array( $aioseop_update_checker, 'key_warning' ) ); + } + add_action( 'after_plugin_row_' . AIOSEOP_PLUGIN_BASENAME, array( + $aioseop_update_checker, + 'add_plugin_row', + ) ); + } + } else { + if ( $aioseop_options['aiosp_can'] == '1' || $aioseop_options['aiosp_can'] == 'on' ) { + remove_action( 'wp_head', 'rel_canonical' ); + } + // Analytics. + if ( aioseop_option_isset( 'aiosp_google_analytics_id' ) ) { + add_action( 'aioseop_modules_wp_head', array( $this, 'aiosp_google_analytics' ) ); + } + add_action( 'wp_head', array( $this, 'wp_head' ), apply_filters( 'aioseop_wp_head_priority', 1 ) ); + add_action( 'template_redirect', array( $this, 'template_redirect' ), 0 ); + } + } + + function visibility_warning() { + + $aioseop_visibility_notice_dismissed = get_user_meta( get_current_user_id(), 'aioseop_visibility_notice_dismissed', true ); + + if ( '0' == get_option( 'blog_public' ) && empty( $aioseop_visibility_notice_dismissed ) ) { + + printf( ' +
+

+ %1$s + %2$s + +

+
', + __( 'Warning: You\'re blocking access to search engines.', 'all-in-one-seo-pack' ), + sprintf( __( 'You can %s click here%s to go to your reading settings and toggle your blog visibility.', 'all-in-one-seo-pack' ), sprintf( '', esc_url( admin_url( 'options-reading.php' ) ) ), '' ) ); + + } elseif ( '1' == get_option( 'blog_public' ) && ! empty( $aioseop_visibility_notice_dismissed ) ) { + delete_user_meta( get_current_user_id(), 'aioseop_visibility_notice_dismissed' ); + } + } + + function woo_upgrade_notice() { + + $aioseop_woo_upgrade_notice_dismissed = get_user_meta( get_current_user_id(), 'aioseop_woo_upgrade_notice_dismissed', true ); + + if ( class_exists( 'WooCommerce' ) && empty( $aioseop_woo_upgrade_notice_dismissed ) && current_user_can( 'manage_options' ) ) { + + printf( ' +
+

+ %1$s + %2$s + +

+
', + __( 'We\'ve detected you\'re running WooCommerce.', 'all-in-one-seo-pack' ), + sprintf( __( '%s Upgrade%s to All in One SEO Pack Pro for increased SEO compatibility for your products.', 'all-in-one-seo-pack' ), sprintf( '', esc_url( 'https://semperplugins.com/plugins/all-in-one-seo-pack-pro-version/?loc=woo' ) ), '' ) ); + + } elseif ( ! class_exists( 'WooCommerce' ) && ! empty( $aioseop_woo_upgrade_notice_dismissed ) ) { + delete_user_meta( get_current_user_id(), 'aioseop_woo_upgrade_notice_dismissed' ); + } + } + + /** + * @param $description + * + * @return string + */ + function make_unique_att_desc( $description ) { + global $wp_query; + if ( is_attachment() ) { + + $url = $this->aiosp_mrt_get_url( $wp_query ); + if ( $url ) { + $matches = array(); + preg_match_all( '/(\d+)/', $url, $matches ); + if ( is_array( $matches ) ) { + $uniqueDesc = join( '', $matches[0] ); + } + } + $description .= ' ' . $uniqueDesc; + } + + return $description; + } + + function wp_head() { + if ( ! $this->is_page_included() ) { + return; + } + $opts = $this->meta_opts; + global $aioseop_update_checker, $wp_query, $aioseop_options, $posts; + static $aioseop_dup_counter = 0; + $aioseop_dup_counter ++; + if ( $aioseop_dup_counter > 1 ) { + echo "\n\n"; + + return; + } + if ( is_home() && ! is_front_page() ) { + $post = aiosp_common::get_blog_page(); + } else { + $post = $this->get_queried_object(); + } + $meta_string = null; + $description = ''; + // Logging - rewrite handler check for output buffering. + $this->check_rewrite_handler(); + if ( AIOSEOPPRO ) { + echo "\n\n"; + if ( AIOSEOPPRO ) { + echo '\n"; + } + $blog_page = aiosp_common::get_blog_page( $post ); + $save_posts = $posts; + if ( function_exists( 'woocommerce_get_page_id' ) && is_post_type_archive( 'product' ) && ( $post_id = woocommerce_get_page_id( 'shop' ) ) && ( $post = get_post( $post_id ) ) ) { + global $posts; + $opts = $this->meta_opts = $this->get_current_options( array(), 'aiosp', null, $post ); + $posts = array(); + $posts[] = $post; + } + $posts = $save_posts; + $description = apply_filters( 'aioseop_description', $this->get_main_description( $post ) ); // Get the description. + // Handle the description format. + if ( isset( $description ) && ( $this->strlen( $description ) > $this->minimum_description_length ) && ! ( is_front_page() && is_paged() ) ) { + $description = $this->trim_description( $description ); + if ( ! isset( $meta_string ) ) { + $meta_string = ''; + } + // Description format. + $description = apply_filters( 'aioseop_description_full', $this->apply_description_format( $description, $post ) ); + $desc_attr = ''; + if ( ! empty( $aioseop_options['aiosp_schema_markup'] ) ) { + $desc_attr = ''; + } + $desc_attr = apply_filters( 'aioseop_description_attributes', $desc_attr ); + $meta_string .= sprintf( "\n", $desc_attr, $description ); + } + // Get the keywords. + $togglekeywords = 0; + if ( isset( $aioseop_options['aiosp_togglekeywords'] ) ) { + $togglekeywords = $aioseop_options['aiosp_togglekeywords']; + } + if ( $togglekeywords == 0 && ! ( is_front_page() && is_paged() ) ) { + $keywords = $this->get_main_keywords(); + $keywords = $this->apply_cf_fields( $keywords ); + $keywords = apply_filters( 'aioseop_keywords', $keywords ); + + if ( isset( $keywords ) && ! empty( $keywords ) ) { + if ( isset( $meta_string ) ) { + $meta_string .= "\n"; + } + $keywords = wp_filter_nohtml_kses( str_replace( '"', '', $keywords ) ); + $key_attr = apply_filters( 'aioseop_keywords_attributes', '' ); + $meta_string .= sprintf( "\n", $key_attr, $keywords ); + } + } + // Handle noindex, nofollow - robots meta. + $robots_meta = apply_filters( 'aioseop_robots_meta', $this->get_robots_meta() ); + if ( ! empty( $robots_meta ) ) { + $meta_string .= '' . "\n"; + } + // Handle site verification. + if ( is_front_page() ) { + foreach ( + array( + 'google' => 'google-site-verification', + 'bing' => 'msvalidate.01', + 'pinterest' => 'p:domain_verify', + ) as $k => $v + ) { + if ( ! empty( $aioseop_options["aiosp_{$k}_verify"] ) ) { + $meta_string .= '' . "\n"; + } + } + + // Sitelinks search. + if ( ! empty( $aioseop_options['aiosp_google_sitelinks_search'] ) || ! empty( $aioseop_options['aiosp_google_set_site_name'] ) ) { + $meta_string .= $this->sitelinks_search_box() . "\n"; + } + } + // Handle extra meta fields. + foreach ( array( 'page_meta', 'post_meta', 'home_meta', 'front_meta' ) as $meta ) { + if ( ! empty( $aioseop_options["aiosp_{$meta}_tags"] ) ) { + $$meta = html_entity_decode( stripslashes( $aioseop_options["aiosp_{$meta}_tags"] ), ENT_QUOTES ); + } else { + $$meta = ''; + } + } + if ( is_page() && isset( $page_meta ) && ! empty( $page_meta ) && ( ! is_front_page() || empty( $front_meta ) ) ) { + if ( isset( $meta_string ) ) { + $meta_string .= "\n"; + } + $meta_string .= $page_meta; + } + if ( is_single() && isset( $post_meta ) && ! empty( $post_meta ) ) { + if ( isset( $meta_string ) ) { + $meta_string .= "\n"; + } + $meta_string .= $post_meta; + } + // Handle authorship. + $authorship = $this->get_google_authorship( $post ); + $publisher = apply_filters( 'aioseop_google_publisher', $authorship['publisher'] ); + if ( ! empty( $publisher ) ) { + $meta_string = '' . "\n" . $meta_string; + } + $author = apply_filters( 'aioseop_google_author', $authorship['author'] ); + if ( ! empty( $author ) ) { + $meta_string = '' . "\n" . $meta_string; + } + + if ( is_front_page() && ! empty( $front_meta ) ) { + if ( isset( $meta_string ) ) { + $meta_string .= "\n"; + } + $meta_string .= $front_meta; + } else { + if ( is_home() && ! empty( $home_meta ) ) { + if ( isset( $meta_string ) ) { + $meta_string .= "\n"; + } + $meta_string .= $home_meta; + } + } + $prev_next = $this->get_prev_next_links( $post ); + $prev = apply_filters( 'aioseop_prev_link', $prev_next['prev'] ); + $next = apply_filters( 'aioseop_next_link', $prev_next['next'] ); + if ( ! empty( $prev ) ) { + $meta_string .= "\n"; + } + if ( ! empty( $next ) ) { + $meta_string .= "\n"; + } + if ( $meta_string != null ) { + echo "$meta_string\n"; + } + + // Handle canonical links. + $show_page = true; + if ( ! empty( $aioseop_options['aiosp_no_paged_canonical_links'] ) ) { + $show_page = false; + } + + if ( $aioseop_options['aiosp_can'] ) { + $url = ''; + if ( ! empty( $aioseop_options['aiosp_customize_canonical_links'] ) && ! empty( $opts['aiosp_custom_link'] ) ) { + $url = $opts['aiosp_custom_link']; + } + if ( empty( $url ) ) { + $url = $this->aiosp_mrt_get_url( $wp_query, $show_page ); + } + + $url = $this->validate_url_scheme( $url ); + + $url = apply_filters( 'aioseop_canonical_url', $url ); + if ( ! empty( $url ) ) { + echo '' . "\n"; + } + } + do_action( 'aioseop_modules_wp_head' ); + if ( AIOSEOPPRO ) { + echo "\n"; + } else { + echo "\n"; + } + } + + /** + * Check rewrite handler. + */ + function check_rewrite_handler() { + global $aioseop_options; + + $force_rewrites = 1; + if ( isset( $aioseop_options['aiosp_force_rewrites'] ) ) { + $force_rewrites = $aioseop_options['aiosp_force_rewrites']; + } + + if ( ! empty( $aioseop_options['aiosp_rewrite_titles'] ) && $force_rewrites ) { + // Make the title rewrite as short as possible. + if ( function_exists( 'ob_list_handlers' ) ) { + $active_handlers = ob_list_handlers(); + } else { + $active_handlers = array(); + } + if ( sizeof( $active_handlers ) > 0 && + $this->strtolower( $active_handlers[ sizeof( $active_handlers ) - 1 ] ) == + $this->strtolower( 'All_in_One_SEO_Pack::output_callback_for_title' ) + ) { + ob_end_flush(); + } else { + $this->log( 'another plugin interfering?' ); + // If we get here there *could* be trouble with another plugin :(. + $this->ob_start_detected = true; + if ( $this->option_isset( 'rewrite_titles' ) ) { // Try alternate method -- pdb. + $aioseop_options['aiosp_rewrite_titles'] = 0; + $force_rewrites = 0; + add_filter( 'wp_title', array( $this, 'wp_title' ), 20 ); + } + if ( function_exists( 'ob_list_handlers' ) ) { + foreach ( ob_list_handlers() as $handler ) { + $this->log( "detected output handler $handler" ); + } + } + } + } + } + + /** + * @param $description + * + * @return mixed|string + */ + function trim_description( $description ) { + $description = trim( wp_strip_all_tags( $description ) ); + $description = str_replace( '"', '"', $description ); + $description = str_replace( "\r\n", ' ', $description ); + $description = str_replace( "\n", ' ', $description ); + + return $description; + } + + /** + * @param $description + * @param null $post + * + * @return mixed + */ + function apply_description_format( $description, $post = null ) { + global $aioseop_options; + $description_format = $aioseop_options['aiosp_description_format']; + if ( ! isset( $description_format ) || empty( $description_format ) ) { + $description_format = '%description%'; + } + $description = str_replace( '%description%', apply_filters( 'aioseop_description_override', $description ), $description_format ); + if ( strpos( $description, '%blog_title%' ) !== false ) { + $description = str_replace( '%blog_title%', get_bloginfo( 'name' ), $description ); + } + if ( strpos( $description, '%blog_description%' ) !== false ) { + $description = str_replace( '%blog_description%', get_bloginfo( 'description' ), $description ); + } + if ( strpos( $description, '%wp_title%' ) !== false ) { + $description = str_replace( '%wp_title%', $this->get_original_title(), $description ); + } + if ( strpos( $description, '%post_title%' ) !== false ) { + $description = str_replace( '%post_title%', $this->get_aioseop_title( $post ), $description ); + } + if ( strpos( $description, '%current_date%' ) !== false ) { + $description = str_replace( '%current_date%', date_i18n( get_option( 'date_format' ) ), $description ); + } + + /*this was intended to make attachment descriptions unique if pulling from the parent... let's remove it and see if there are any problems + *on the roadmap is to have a better hierarchy for attachment description pulling + * if ($aioseop_options['aiosp_can']) $description = $this->make_unique_att_desc($description); + */ + $description = $this->apply_cf_fields($description); + return $description; + } + + /** + * @return string + */ + function get_robots_meta() { + global $aioseop_options; + $opts = $this->meta_opts; + $page = $this->get_page_number(); + $robots_meta = $tax_noindex = ''; + if ( isset( $aioseop_options['aiosp_tax_noindex'] ) ) { + $tax_noindex = $aioseop_options['aiosp_tax_noindex']; + } + + if ( empty( $tax_noindex ) || ! is_array( $tax_noindex ) ) { + $tax_noindex = array(); + } + + $aiosp_noindex = $aiosp_nofollow = $aiosp_noodp = $aiosp_noydir = ''; + $noindex = 'index'; + $nofollow = 'follow'; + if ( ( is_category() && ! empty( $aioseop_options['aiosp_category_noindex'] ) ) || ( ! is_category() && is_archive() && ! is_tag() && ! is_tax() + && ( ( is_date() && ! empty( $aioseop_options['aiosp_archive_date_noindex'] ) ) || ( is_author() && ! empty( $aioseop_options['aiosp_archive_author_noindex'] ) ) ) ) + || ( is_tag() && ! empty( $aioseop_options['aiosp_tags_noindex'] ) ) + || ( is_search() && ! empty( $aioseop_options['aiosp_search_noindex'] ) ) + || ( is_404() && ! empty( $aioseop_options['aiosp_404_noindex'] ) ) + || ( is_tax() && in_array( get_query_var( 'taxonomy' ), $tax_noindex ) ) + ) { + $noindex = 'noindex'; + } elseif ( is_single() || is_page() || $this->is_static_posts_page() || is_attachment() || is_category() || is_tag() || is_tax() || ( $page > 1 ) ) { + $post_type = get_post_type(); + if ( ! empty( $opts ) ) { + $aiosp_noindex = htmlspecialchars( stripslashes( $opts['aiosp_noindex'] ) ); + $aiosp_nofollow = htmlspecialchars( stripslashes( $opts['aiosp_nofollow'] ) ); + $aiosp_noodp = htmlspecialchars( stripslashes( $opts['aiosp_noodp'] ) ); + $aiosp_noydir = htmlspecialchars( stripslashes( $opts['aiosp_noydir'] ) ); + } + if ( $aiosp_noindex || $aiosp_nofollow || $aiosp_noodp || $aiosp_noydir || ! empty( $aioseop_options['aiosp_cpostnoindex'] ) + || ! empty( $aioseop_options['aiosp_cpostnofollow'] ) || ! empty( $aioseop_options['aiosp_cpostnoodp'] ) || ! empty( $aioseop_options['aiosp_cpostnoydir'] ) + || ! empty( $aioseop_options['aiosp_paginated_noindex'] ) || ! empty( $aioseop_options['aiosp_paginated_nofollow'] ) + ) { + if ( ( $aiosp_noindex == 'on' ) || ( ( ! empty( $aioseop_options['aiosp_paginated_noindex'] ) ) && $page > 1 ) || + ( ( $aiosp_noindex == '' ) && ( ! empty( $aioseop_options['aiosp_cpostnoindex'] ) ) && in_array( $post_type, $aioseop_options['aiosp_cpostnoindex'] ) ) + ) { + $noindex = 'noindex'; + } + if ( ( $aiosp_nofollow == 'on' ) || ( ( ! empty( $aioseop_options['aiosp_paginated_nofollow'] ) ) && $page > 1 ) || + ( ( $aiosp_nofollow == '' ) && ( ! empty( $aioseop_options['aiosp_cpostnofollow'] ) ) && in_array( $post_type, $aioseop_options['aiosp_cpostnofollow'] ) ) + ) { + $nofollow = 'nofollow'; + } + if ( ( $aiosp_noodp == 'on' ) || ( empty( $aiosp_noodp ) && ( ! empty( $aioseop_options['aiosp_cpostnoodp'] ) && in_array( $post_type, $aioseop_options['aiosp_cpostnoodp'] ) ) ) ) { + $aiosp_noodp = true; + } else { + $aiosp_noodp = false; + } + if ( ( $aiosp_noydir == 'on' ) || ( empty( $aiosp_noydir ) && ( ! empty( $aioseop_options['aiosp_cpostnoydir'] ) && in_array( $post_type, $aioseop_options['aiosp_cpostnoydir'] ) ) ) ) { + $aiosp_noydir = true; + } else { + $aiosp_noydir = false; + } + } + } + if ( ! empty( $aioseop_options['aiosp_noodp'] ) && $aioseop_options['aiosp_noodp'] ) { + $aiosp_noodp = true; + } + if ( ! empty( $aioseop_options['aiosp_noydir'] ) && $aioseop_options['aiosp_noydir'] ) { + $aiosp_noydir = true; + } + if ( $aiosp_noodp ) { + $nofollow .= ',noodp'; + } + if ( $aiosp_noydir ) { + $nofollow .= ',noydir'; + } + $robots_meta = $noindex . ',' . $nofollow; + if ( $robots_meta == 'index,follow' ) { + $robots_meta = ''; + } + + return $robots_meta; + } + + /** + * @return mixed|void + */ + function sitelinks_search_box() { + global $aioseop_options; + $home_url = esc_url( get_home_url() ); + $name_block = $search_block = ''; + if ( ! empty( $aioseop_options['aiosp_google_set_site_name'] ) ) { + if ( ! empty( $aioseop_options['aiosp_google_specify_site_name'] ) ) { + $blog_name = $aioseop_options['aiosp_google_specify_site_name']; + } else { + $blog_name = get_bloginfo( 'name' ); + } + $blog_name = esc_attr( $blog_name ); + $name_block = << + { + "@context": "http://schema.org", + "@type": "WebSite", +EOF; + if ( ! empty( $name_block ) ) { + $search_box .= $name_block; + } + if ( ! empty( $search_block ) ) { + $search_box .= $search_block; + } + $search_box .= << +EOF; + + return apply_filters( 'aiosp_sitelinks_search_box', $search_box ); + } + + /** + * @param $post + * + * @return array + */ + function get_google_authorship( $post ) { + global $aioseop_options; + $page = $this->get_page_number(); + // Handle authorship. + $googleplus = $publisher = $author = ''; + + if ( ! empty( $post ) && isset( $post->post_author ) && empty( $aioseop_options['aiosp_google_disable_profile'] ) ) { + $googleplus = get_the_author_meta( 'googleplus', $post->post_author ); + } + + if ( empty( $googleplus ) && ! empty( $aioseop_options['aiosp_google_publisher'] ) ) { + $googleplus = $aioseop_options['aiosp_google_publisher']; + } + + if ( is_front_page() && ( $page < 2 ) ) { + if ( ! empty( $aioseop_options['aiosp_google_publisher'] ) ) { + $publisher = $aioseop_options['aiosp_google_publisher']; + } + + if ( ! empty( $aioseop_options['aiosp_google_author_advanced'] ) ) { + if ( empty( $aioseop_options['aiosp_google_enable_publisher'] ) ) { + $publisher = ''; + } elseif ( ! empty( $aioseop_options['aiosp_google_specify_publisher'] ) ) { + $publisher = $aioseop_options['aiosp_google_specify_publisher']; + } + } + } + if ( is_singular() && ( ! empty( $googleplus ) ) ) { + $author = $googleplus; + } else if ( ! empty( $aioseop_options['aiosp_google_publisher'] ) ) { + $author = $aioseop_options['aiosp_google_publisher']; + } + + if ( ! empty( $aioseop_options['aiosp_google_author_advanced'] ) && isset( $aioseop_options['aiosp_google_author_location'] ) ) { + if ( empty( $aioseop_options['aiosp_google_author_location'] ) ) { + $aioseop_options['aiosp_google_author_location'] = array(); + } + if ( is_front_page() && ! in_array( 'front', $aioseop_options['aiosp_google_author_location'] ) ) { + $author = ''; + } else { + if ( in_array( 'all', $aioseop_options['aiosp_google_author_location'] ) ) { + if ( is_singular() && ! is_singular( $aioseop_options['aiosp_google_author_location'] ) ) { + $author = ''; + } + } else { + if ( ! is_singular( $aioseop_options['aiosp_google_author_location'] ) ) { + $author = ''; + } + } + } + } + + return array( 'publisher' => $publisher, 'author' => $author ); + } + + /** + * @param null $post + * + * @return array + */ + function get_prev_next_links( $post = null ) { + $prev = $next = ''; + $page = $this->get_page_number(); + if ( is_home() || is_archive() || is_paged() ) { + global $wp_query; + $max_page = $wp_query->max_num_pages; + if ( $page > 1 ) { + $prev = get_previous_posts_page_link(); + } + if ( $page < $max_page ) { + $paged = $GLOBALS['paged']; + if ( ! is_single() ) { + if ( ! $paged ) { + $paged = 1; + } + $nextpage = intval( $paged ) + 1; + if ( ! $max_page || $max_page >= $nextpage ) { + $next = get_pagenum_link( $nextpage ); + } + } + } + } else if ( is_page() || is_single() ) { + $numpages = 1; + $multipage = 0; + $page = get_query_var( 'page' ); + if ( ! $page ) { + $page = 1; + } + if ( is_single() || is_page() || is_feed() ) { + $more = 1; + } + $content = $post->post_content; + if ( false !== strpos( $content, '' ) ) { + if ( $page > 1 ) { + $more = 1; + } + $content = str_replace( "\n\n", '', $content ); + $content = str_replace( "\n", '', $content ); + $content = str_replace( "\n", '', $content ); + // Ignore nextpage at the beginning of the content. + if ( 0 === strpos( $content, '' ) ) { + $content = substr( $content, 15 ); + } + $pages = explode( '', $content ); + $numpages = count( $pages ); + if ( $numpages > 1 ) { + $multipage = 1; + } + } + if ( ! empty( $page ) ) { + if ( $page > 1 ) { + $prev = _wp_link_page( $page - 1 ); + } + if ( $page + 1 <= $numpages ) { + $next = _wp_link_page( $page + 1 ); + } + } + if ( ! empty( $prev ) ) { + $prev = $this->substr( $prev, 9, - 2 ); + } + if ( ! empty( $next ) ) { + $next = $this->substr( $next, 9, - 2 ); + } + } + + return array( 'prev' => $prev, 'next' => $next ); + } + + /** + * + * Validates whether the url should be https or http. + * + * Mainly we're just using this for canonical URLS, but eventually it may be useful for other things + * + * @param $url + * + * @return string $url + * + * @since 2.3.5 + * @since 2.3.11 Removed check for legacy protocol setting. Added filter. + */ + function validate_url_scheme( $url ) { + + // TODO we should check for the site setting in the case of auto. + + global $aioseop_options; + + $scheme = apply_filters( 'aioseop_canonical_protocol', false ); + + if ( 'http' === $scheme ) { + $url = preg_replace( '/^https:/i', 'http:', $url ); + } + if ( 'https' === $scheme ) { + $url = preg_replace( '/^http:/i', 'https:', $url ); + } + + return $url; + } + + /** + * @param $options + * @param $location + * @param $settings + * + * @return mixed + */ + function override_options( $options, $location, $settings ) { + if ( class_exists( 'DOMDocument' ) ) { + $options['aiosp_google_connect'] = $settings['aiosp_google_connect']['default']; + } + + return $options; + } + + function aiosp_google_analytics() { + new aioseop_google_analytics; + } + + /** + * @param $id + * + * @return bool + */ + function save_post_data( $id ) { + $awmp_edit = $nonce = null; + if ( empty( $_POST ) ) { + return false; + } + if ( isset( $_POST['aiosp_edit'] ) ) { + $awmp_edit = $_POST['aiosp_edit']; + } + if ( isset( $_POST['nonce-aioseop-edit'] ) ) { + $nonce = $_POST['nonce-aioseop-edit']; + } + + if ( isset( $awmp_edit ) && ! empty( $awmp_edit ) && wp_verify_nonce( $nonce, 'edit-aioseop-nonce' ) ) { + + $optlist = array( + 'keywords', + 'description', + 'title', + 'custom_link', + 'sitemap_exclude', + 'disable', + 'disable_analytics', + 'noindex', + 'nofollow', + 'noodp', + 'noydir', + ); + if ( ! ( ! empty( $this->options['aiosp_can'] ) ) && ( ! empty( $this->options['aiosp_customize_canonical_links'] ) ) ) { + unset( $optlist['custom_link'] ); + } + foreach ( $optlist as $f ) { + $field = "aiosp_$f"; + if ( isset( $_POST[ $field ] ) ) { + $$field = $_POST[ $field ]; + } + } + + $optlist = array( + 'keywords', + 'description', + 'title', + 'custom_link', + 'noindex', + 'nofollow', + 'noodp', + 'noydir', + ); + if ( ! ( ! empty( $this->options['aiosp_can'] ) ) && ( ! empty( $this->options['aiosp_customize_canonical_links'] ) ) ) { + unset( $optlist['custom_link'] ); + } + foreach ( $optlist as $f ) { + delete_post_meta( $id, "_aioseop_{$f}" ); + } + + delete_post_meta( $id, '_aioseop_sitemap_exclude' ); + delete_post_meta( $id, '_aioseop_disable' ); + delete_post_meta( $id, '_aioseop_disable_analytics' ); + + foreach ( $optlist as $f ) { + $var = "aiosp_$f"; + $field = "_aioseop_$f"; + if ( isset( $$var ) && ! empty( $$var ) ) { + add_post_meta( $id, $field, $$var ); + } + } + if ( isset( $aiosp_sitemap_exclude ) && ! empty( $aiosp_sitemap_exclude ) ) { + add_post_meta( $id, '_aioseop_sitemap_exclude', $aiosp_sitemap_exclude ); + } + if ( isset( $aiosp_disable ) && ! empty( $aiosp_disable ) ) { + add_post_meta( $id, '_aioseop_disable', $aiosp_disable ); + if ( isset( $aiosp_disable_analytics ) && ! empty( $aiosp_disable_analytics ) ) { + add_post_meta( $id, '_aioseop_disable_analytics', $aiosp_disable_analytics ); + } + } + } + } + + /** + * @param $post + * @param $metabox + */ + function display_tabbed_metabox( $post, $metabox ) { + $tabs = $metabox['args']; + echo '
'; + $header = $this->get_metabox_header( $tabs ); + echo $header; + $active = ''; + foreach ( $tabs as $m ) { + echo '
'; + if ( ! $active ) { + $active = ' style="display:none;"'; + } + $m['args'] = $m['callback_args']; + $m['callback'][0]->{$m['callback'][1]}( $post, $m ); + echo '
'; + } + echo '
'; + } + + /** + * @param $tabs + * + * @return string + */ + function get_metabox_header( $tabs ) { + $header = '
    '; + $active = ' active'; + foreach ( $tabs as $t ) { + if ( $active ) { + $title = __( 'Main Settings', 'all-in-one-seo-pack' ); + } else { + $title = $t['title']; + } + $header .= '
  • '; + $active = ''; + } + $header .= '
'; + + return $header; + } + + function admin_bar_menu() { + + + if ( apply_filters( 'aioseo_show_in_admin_bar', true ) === false ) { + // API filter hook to disable showing SEO in admin bar. + return; + } + + + global $wp_admin_bar, $aioseop_admin_menu, $post, $aioseop_options; + + $toggle = ''; + if ( isset( $_POST['aiosp_use_original_title'] ) && isset( $_POST['aiosp_admin_bar'] ) && AIOSEOPPRO ) { + $toggle = 'on'; + } + if ( isset( $_POST['aiosp_use_original_title'] ) && ! isset( $_POST['aiosp_admin_bar'] ) && AIOSEOPPRO ) { + $toggle = 'off'; + } + + if ( ( ! isset( $aioseop_options['aiosp_admin_bar'] ) && 'off' !== $toggle ) || ( ! empty( $aioseop_options['aiosp_admin_bar'] ) && 'off' !== $toggle ) || isset( $_POST['aiosp_admin_bar'] ) || true == apply_filters( 'aioseo_show_in_admin_bar', false ) ) { + + if ( apply_filters( 'aioseo_show_in_admin_bar', true ) === false ) { + // API filter hook to disable showing SEO in admin bar. + return; + } + + $menu_slug = plugin_basename( __FILE__ ); + + $url = ''; + if ( function_exists( 'menu_page_url' ) ) { + $url = menu_page_url( $menu_slug, 0 ); + } + if ( empty( $url ) ) { + $url = esc_url( admin_url( 'admin.php?page=' . $menu_slug ) ); + } + + $wp_admin_bar->add_menu( array( + 'id' => AIOSEOP_PLUGIN_DIRNAME, + 'title' => __( 'SEO', 'all-in-one-seo-pack' ), + 'href' => $url, + ) ); + + if ( current_user_can( 'update_plugins' ) && ! AIOSEOPPRO ) { + $wp_admin_bar->add_menu( array( + 'parent' => AIOSEOP_PLUGIN_DIRNAME, + 'title' => __( 'Upgrade To Pro', 'all-in-one-seo-pack' ), + 'id' => 'aioseop-pro-upgrade', + 'href' => 'https://semperplugins.com/plugins/all-in-one-seo-pack-pro-version/?loc=menu', + 'meta' => array( 'target' => '_blank' ), + ) ); + // add_action( 'admin_bar_menu', array( $this, 'admin_bar_upgrade_menu' ), 1101 ); + } + + $aioseop_admin_menu = 1; + if ( ! is_admin() && ! empty( $post ) ) { + + $blog_page = aiosp_common::get_blog_page( $post ); + if ( ! empty( $blog_page ) ) { + $post = $blog_page; + } + if ( ! is_home() || ( ! is_front_page() && ! is_home() ) ) { + // Don't show if we're on the home page and the home page is the latest posts. + $wp_admin_bar->add_menu( array( + 'id' => 'aiosp_edit_' . $post->ID, + 'parent' => AIOSEOP_PLUGIN_DIRNAME, + 'title' => __( 'Edit SEO', 'all-in-one-seo-pack' ), + 'href' => get_edit_post_link( $post->ID ) . '#aiosp', + ) ); + } + } + } + } + + /** + * Order for adding the menus for the aioseop_modules_add_menus hook. + */ + function menu_order() { + return 5; + } + + /** + * @param $tax + */ + function display_category_metaboxes( $tax ) { + $screen = 'edit-' . $tax->taxonomy; + ?> +
+ +
+ options['aiosp_can'] ) ) && ( ! empty( $this->options['aiosp_customize_canonical_links'] ) ) ) { + unset( $optlist['custom_link'] ); + } + foreach ( $optlist as $f ) { + delete_term_meta( $id, "_aioseop_{$f}" ); + } + + if ( current_user_can( 'activate_plugins' ) ) { + delete_term_meta( $id, '_aioseop_sitemap_exclude' ); + delete_term_meta( $id, '_aioseop_disable' ); + delete_term_meta( $id, '_aioseop_disable_analytics' ); + } + + foreach ( $optlist as $f ) { + $var = "aiosp_$f"; + $field = "_aioseop_$f"; + if ( isset( $$var ) && ! empty( $$var ) ) { + add_term_meta( $id, $field, $$var ); + } + } + if ( isset( $aiosp_sitemap_exclude ) && ! empty( $aiosp_sitemap_exclude ) && current_user_can( 'activate_plugins' ) ) { + add_term_meta( $id, '_aioseop_sitemap_exclude', $aiosp_sitemap_exclude ); + } + if ( isset( $aiosp_disable ) && ! empty( $aiosp_disable ) && current_user_can( 'activate_plugins' ) ) { + add_term_meta( $id, '_aioseop_disable', $aiosp_disable ); + if ( isset( $aiosp_disable_analytics ) && ! empty( $aiosp_disable_analytics ) ) { + add_term_meta( $id, '_aioseop_disable_analytics', $aiosp_disable_analytics ); + } + } + } + } + + function admin_menu() { + $file = plugin_basename( __FILE__ ); + $menu_name = __( 'All in One SEO', 'all-in-one-seo-pack' ); + + $this->locations['aiosp']['default_options']['nonce-aioseop-edit']['default'] = wp_create_nonce( 'edit-aioseop-nonce' ); + + $custom_menu_order = false; + global $aioseop_options; + if ( ! isset( $aioseop_options['custom_menu_order'] ) ) { + $custom_menu_order = true; + } + + $this->update_options(); + + // For now we're removing admin pointers. + /* + $this->add_admin_pointers(); + if ( ! empty( $this->pointers ) ) { + foreach ( $this->pointers as $k => $p ) { + if ( ! empty( $p['pointer_scope'] ) && ( $p['pointer_scope'] == 'global' ) ) { + unset( $this->pointers[ $k ] ); + } + } + } + */ + + if ( isset( $_POST ) && isset( $_POST['module'] ) && isset( $_POST['nonce-aioseop'] ) && ( $_POST['module'] == 'All_in_One_SEO_Pack' ) && wp_verify_nonce( $_POST['nonce-aioseop'], 'aioseop-nonce' ) ) { + if ( isset( $_POST['Submit'] ) && AIOSEOPPRO ) { + if ( isset( $_POST['aiosp_custom_menu_order'] ) ) { + $custom_menu_order = $_POST['aiosp_custom_menu_order']; + } else { + $custom_menu_order = false; + } + } else if ( isset( $_POST['Submit_Default'] ) || isset( $_POST['Submit_All_Default'] ) ) { + $custom_menu_order = true; + } + } else { + if ( isset( $this->options['aiosp_custom_menu_order'] ) ) { + $custom_menu_order = $this->options['aiosp_custom_menu_order']; + } + } + + if ( ( $custom_menu_order && false !== apply_filters( 'aioseo_custom_menu_order', $custom_menu_order ) ) || true === apply_filters( 'aioseo_custom_menu_order', $custom_menu_order ) ) { + add_filter( 'custom_menu_order', '__return_true' ); + add_filter( 'menu_order', array( $this, 'set_menu_order' ), 11 ); + } + + if ( ! AIOSEOPPRO ) { + if ( ! empty( $this->pointers ) ) { + foreach ( $this->pointers as $k => $p ) { + if ( ! empty( $p['pointer_scope'] ) && ( $p['pointer_scope'] == 'global' ) ) { + unset( $this->pointers[ $k ] ); + } + } + } + + $this->filter_pointers(); + } + + if ( ! empty( $this->options['aiosp_enablecpost'] ) && $this->options['aiosp_enablecpost'] ) { + if ( AIOSEOPPRO ) { + $this->locations['aiosp']['display'] = $this->options['aiosp_cpostactive']; + if ( ! empty( $this->options['aiosp_taxactive'] ) ) { + foreach ( $this->options['aiosp_taxactive'] as $tax ) { + $this->locations['aiosp']['display'][] = 'edit-' . $tax; + add_action( "{$tax}_edit_form", array( $this, 'display_category_metaboxes' ) ); + add_action( "edited_{$tax}", array( $this, 'save_category_metaboxes' ) ); + } + } + } else { + if ( ! empty( $this->options['aiosp_cpostactive'] ) ) { + $this->locations['aiosp']['display'] = $this->options['aiosp_cpostactive']; + } else { + $this->locations['aiosp']['display'] = array(); + } + } + } else { + $this->locations['aiosp']['display'] = array( 'post', 'page' ); + } + + + add_menu_page( $menu_name, $menu_name, apply_filters( 'manage_aiosp', 'aiosp_manage_seo' ), $file, array( + $this, + 'display_settings_page', + ) ); + + add_meta_box( 'aioseop-list', __( 'Join Our Mailing List', 'all-in-one-seo-pack' ), array( + 'aiosp_metaboxes', + 'display_extra_metaboxes', + ), 'aioseop_metaboxes', 'normal', 'core' ); + if ( AIOSEOPPRO ) { + add_meta_box( 'aioseop-about', __( 'About', 'all-in-one-seo-pack' ), array( + 'aiosp_metaboxes', + 'display_extra_metaboxes', + ), 'aioseop_metaboxes', 'side', 'core' ); + } else { + add_meta_box( 'aioseop-about', "About Version " . AIOSEOP_VERSION . '', array( + 'aiosp_metaboxes', + 'display_extra_metaboxes', + ), 'aioseop_metaboxes', 'side', 'core' ); + } + add_meta_box( 'aioseop-support', __( 'Support', 'all-in-one-seo-pack' ) . " " . __( 'Version', 'all-in-one-seo-pack' ) . ' ' . AIOSEOP_VERSION . '', array( + 'aiosp_metaboxes', + 'display_extra_metaboxes', + ), 'aioseop_metaboxes', 'side', 'core' ); + + add_action( 'aioseop_modules_add_menus', array( $this, 'add_menu' ), 5 ); + do_action( 'aioseop_modules_add_menus', $file ); + + $metaboxes = apply_filters( 'aioseop_add_post_metabox', array() ); + + if ( ! empty( $metaboxes ) ) { + if ( $this->tabbed_metaboxes ) { + $tabs = array(); + $tab_num = 0; + foreach ( $metaboxes as $m ) { + if ( ! isset( $tabs[ $m['post_type'] ] ) ) { + $tabs[ $m['post_type'] ] = array(); + } + $tabs[ $m['post_type'] ][] = $m; + } + + if ( ! empty( $tabs ) ) { + foreach ( $tabs as $p => $m ) { + $tab_num = count( $m ); + $title = $m[0]['title']; + if ( $title != $this->plugin_name ) { + $title = $this->plugin_name . ' - ' . $title; + } + if ( $tab_num <= 1 ) { + if ( ! empty( $m[0]['callback_args']['help_link'] ) ) { + $title .= "" . __( 'Help', 'all-in-one-seo-pack' ) . ''; + } + add_meta_box( $m[0]['id'], $title, $m[0]['callback'], $m[0]['post_type'], $m[0]['context'], $m[0]['priority'], $m[0]['callback_args'] ); + } elseif ( $tab_num > 1 ) { + add_meta_box( $m[0]['id'] . '_tabbed', $title, array( + $this, + 'display_tabbed_metabox', + ), $m[0]['post_type'], $m[0]['context'], $m[0]['priority'], $m ); + } + } + } + } else { + foreach ( $metaboxes as $m ) { + $title = $m['title']; + if ( $title != $this->plugin_name ) { + $title = $this->plugin_name . ' - ' . $title; + } + if ( ! empty( $m['help_link'] ) ) { + $title .= "" . __( 'Help', 'all-in-one-seo-pack' ) . ''; + } + add_meta_box( $m['id'], $title, $m['callback'], $m['post_type'], $m['context'], $m['priority'], $m['callback_args'] ); + } + } + } + } + + /** + * @param $menu_order + * + * @return array + */ + function set_menu_order( $menu_order ) { + $order = array(); + $file = plugin_basename( __FILE__ ); + foreach ( $menu_order as $index => $item ) { + if ( $item != $file ) { + $order[] = $item; + } + if ( $index == 0 ) { + $order[] = $file; + } + } + + return $order; + } + + function display_settings_header() { + } + + function display_settings_footer() { + } + + function display_right_sidebar() { + global $wpdb; + + if ( ! get_option( 'aioseop_options' ) ) { + $msg = "

Your database options need to be updated.(Back up your database before updating.) +

+ + +
+

"; + aioseop_output_dismissable_notice( $msg, '', 'error' ); + } + ?> +
+
+ +
+
+ +
+ +
+ + + +
+ + +
> +
+
+
+ +
+
+ . +*/ + +/** + * All in One SEO Pack. + * The original WordPress SEO plugin. + * + * @package All-in-One-SEO-Pack + * @version 2.3.11 + */ + +if ( ! defined( 'AIOSEOPPRO' ) ) { + define( 'AIOSEOPPRO', false ); +} +if ( ! defined( 'AIOSEOP_VERSION' ) ) { + define( 'AIOSEOP_VERSION', '2.3.11' ); +} +global $aioseop_plugin_name; +$aioseop_plugin_name = 'All in One SEO Pack'; + +/* + * DO NOT EDIT BELOW THIS LINE. + */ + +if ( ! defined( 'ABSPATH' ) ) { + return; +} + +if ( AIOSEOPPRO ) { + + add_action( 'admin_head', 'disable_all_in_one_free', 1 ); + +} + +if ( ! function_exists( 'aiosp_add_cap' ) ) { + + function aiosp_add_cap() { + /* + TODO we should put this into an install script. We just need to make sure it runs soon enough and we need to make + sure people updating from previous versions have access to it. + */ + + $role = get_role( 'administrator' ); + if ( is_object( $role ) ) { + $role->add_cap( 'aiosp_manage_seo' ); + } + } +} +add_action( 'plugins_loaded', 'aiosp_add_cap' ); + +if ( ! defined( 'AIOSEOP_PLUGIN_NAME' ) ) { + define( 'AIOSEOP_PLUGIN_NAME', $aioseop_plugin_name ); +} + +if ( ! defined( 'AIOSEOP_PLUGIN_DIR' ) ) { + define( 'AIOSEOP_PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); +} elseif ( AIOSEOP_PLUGIN_DIR !== plugin_dir_path( __FILE__ ) ) { + + /* + This is not a great message. + add_action( 'admin_notices', create_function( '', 'echo "' . "
" . sprintf( + __( "%s detected a conflict; please deactivate the plugin located in %s.", 'all-in-one-seo-pack' ), + $aioseop_plugin_name, AIOSEOP_PLUGIN_DIR ) . "
" . '";' ) ); + */ + + return; +} + +if ( ! defined( 'AIOSEOP_PLUGIN_BASENAME' ) ) { + define( 'AIOSEOP_PLUGIN_BASENAME', plugin_basename( __FILE__ ) ); +} +if ( ! defined( 'AIOSEOP_PLUGIN_DIRNAME' ) ) { + define( 'AIOSEOP_PLUGIN_DIRNAME', dirname( AIOSEOP_PLUGIN_BASENAME ) ); +} +if ( ! defined( 'AIOSEOP_PLUGIN_URL' ) ) { + define( 'AIOSEOP_PLUGIN_URL', plugin_dir_url( __FILE__ ) ); +} +if ( ! defined( 'AIOSEOP_PLUGIN_IMAGES_URL' ) ) { + define( 'AIOSEOP_PLUGIN_IMAGES_URL', AIOSEOP_PLUGIN_URL . 'images/' ); +} +if ( ! defined( 'AIOSEOP_BASELINE_MEM_LIMIT' ) ) { + define( 'AIOSEOP_BASELINE_MEM_LIMIT', 268435456 ); +} // 256MB +if ( ! defined( 'WP_CONTENT_URL' ) ) { + define( 'WP_CONTENT_URL', site_url() . '/wp-content' ); +} +if ( ! defined( 'WP_ADMIN_URL' ) ) { + define( 'WP_ADMIN_URL', site_url() . '/wp-admin' ); +} +if ( ! defined( 'WP_CONTENT_DIR' ) ) { + define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' ); +} +if ( ! defined( 'WP_PLUGIN_URL' ) ) { + define( 'WP_PLUGIN_URL', WP_CONTENT_URL . '/plugins' ); +} +if ( ! defined( 'WP_PLUGIN_DIR' ) ) { + define( 'WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins' ); +} + +global $aiosp, $aioseop_options, $aioseop_modules, $aioseop_module_list, $aiosp_activation, $aioseop_mem_limit, $aioseop_get_pages_start, $aioseop_admin_menu; +$aioseop_get_pages_start = $aioseop_admin_menu = 0; + +if ( AIOSEOPPRO ) { + global $aioseop_update_checker; +} + +$aioseop_options = get_option( 'aioseop_options' ); + +$aioseop_mem_limit = @ini_get( 'memory_limit' ); + +if ( ! function_exists( 'aioseop_convert_bytestring' ) ) { + /** + * @param $byte_string + * + * @return int + */ + function aioseop_convert_bytestring( $byte_string ) { + $num = 0; + preg_match( '/^\s*([0-9.]+)\s*([KMGTPE])B?\s*$/i', $byte_string, $matches ); + if ( ! empty( $matches ) ) { + $num = (float) $matches[1]; + switch ( strtoupper( $matches[2] ) ) { + case 'E': + $num *= 1024; + case 'P': + $num *= 1024; + case 'T': + $num *= 1024; + case 'G': + $num *= 1024; + case 'M': + $num *= 1024; + case 'K': + $num *= 1024; + } + } + + return intval( $num ); + } +} + +if ( is_array( $aioseop_options ) && isset( $aioseop_options['modules'] ) && isset( $aioseop_options['modules']['aiosp_performance_options'] ) ) { + $perf_opts = $aioseop_options['modules']['aiosp_performance_options']; + if ( isset( $perf_opts['aiosp_performance_memory_limit'] ) ) { + $aioseop_mem_limit = $perf_opts['aiosp_performance_memory_limit']; + } + if ( isset( $perf_opts['aiosp_performance_execution_time'] ) && ( '' !== $perf_opts['aiosp_performance_execution_time'] ) ) { + @ini_set( 'max_execution_time', (int) $perf_opts['aiosp_performance_execution_time'] ); + @set_time_limit( (int) $perf_opts['aiosp_performance_execution_time'] ); + } +} else { + $aioseop_mem_limit = aioseop_convert_bytestring( $aioseop_mem_limit ); + if ( ( $aioseop_mem_limit > 0 ) && ( $aioseop_mem_limit < AIOSEOP_BASELINE_MEM_LIMIT ) ) { + $aioseop_mem_limit = AIOSEOP_BASELINE_MEM_LIMIT; + } +} + +if ( ! empty( $aioseop_mem_limit ) ) { + if ( ! is_int( $aioseop_mem_limit ) ) { + $aioseop_mem_limit = aioseop_convert_bytestring( $aioseop_mem_limit ); + } + if ( ( $aioseop_mem_limit > 0 ) && ( $aioseop_mem_limit <= AIOSEOP_BASELINE_MEM_LIMIT ) ) { + @ini_set( 'memory_limit', $aioseop_mem_limit ); + } +} + +$aiosp_activation = false; +$aioseop_module_list = array( + 'sitemap', + 'opengraph', + 'robots', + 'file_editor', + 'importer_exporter', + 'bad_robots', + 'performance', +); // list all available modules here + +if ( AIOSEOPPRO ) { + $aioseop_module_list[] = 'video_sitemap'; +} + +if ( class_exists( 'All_in_One_SEO_Pack' ) ) { + add_action( 'admin_notices', create_function( '', 'echo "
The All In One SEO Pack class is already defined";' + . "if ( class_exists( 'ReflectionClass' ) ) { \$r = new ReflectionClass( 'All_in_One_SEO_Pack' ); echo ' in ' . \$r->getFileName(); } " + . ' echo ", preventing All In One SEO Pack from loading.
";' ) ); + + return; +} + +if ( AIOSEOPPRO ) { + + require( AIOSEOP_PLUGIN_DIR . 'pro/sfwd_update_checker.php' ); + $aiosp_update_url = 'https://semperplugins.com/upgrade_plugins.php'; + if( defined( 'AIOSEOP_UPDATE_URL' ) ) { + $aiosp_update_url = AIOSEOP_UPDATE_URL; + } + $aioseop_update_checker = new SFWD_Update_Checker( + $aiosp_update_url, + __FILE__, + 'aioseop' + ); + + $aioseop_update_checker->plugin_name = AIOSEOP_PLUGIN_NAME; + $aioseop_update_checker->plugin_basename = AIOSEOP_PLUGIN_BASENAME; + if ( ! empty( $aioseop_options['aiosp_license_key'] ) ) { + $aioseop_update_checker->license_key = $aioseop_options['aiosp_license_key']; + } else { + $aioseop_update_checker->license_key = ''; + } + $aioseop_update_checker->options_page = AIOSEOP_PLUGIN_DIRNAME . "/aioseop_class.php"; + $aioseop_update_checker->renewal_page = 'https://semperplugins.com/all-in-one-seo-pack-pro-support-updates-renewal/'; + + $aioseop_update_checker->addQueryArgFilter( array( $aioseop_update_checker, 'add_secret_key' ) ); +} + + +if ( ! function_exists( 'aioseop_activate' ) ) { + + function aioseop_activate() { + + //Check if we just got activated. + global $aiosp_activation; + if ( AIOSEOPPRO ) { + global $aioseop_update_checker; + } + $aiosp_activation = true; + + // These checks might be duplicated in the function being called. + if( ! is_network_admin() || !isset( $_GET['activate-multi'] ) ) { + set_transient( '_aioseop_activation_redirect', true, 30 ); // Sets 30 second transient for welcome screen redirect on activation. + } + + delete_user_meta( get_current_user_id(), 'aioseop_yst_detected_notice_dismissed' ); + + if ( AIOSEOPPRO ) { + $aioseop_update_checker->checkForUpdates(); + } + } +} + +add_action( 'plugins_loaded', 'aioseop_init_class' ); + +if ( ! function_exists( 'aiosp_plugin_row_meta' ) ) { + + add_filter( 'plugin_row_meta', 'aiosp_plugin_row_meta', 10, 2 ); + + /** + * @param $actions + * @param $plugin_file + * + * @return array + */ + function aiosp_plugin_row_meta( $actions, $plugin_file ) { + + if ( ! AIOSEOPPRO ) { + + $action_links = array( + + ); + + } else { + $action_links = ''; + } + + return aiosp_action_links( $actions, $plugin_file, $action_links, 'after' ); + } +} + +if ( ! function_exists( 'aiosp_add_action_links' ) ) { + + + add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), 'aiosp_add_action_links', 10, 2 ); + + /** + * @param $actions + * @param $plugin_file + * + * @return array + */ + function aiosp_add_action_links( $actions, $plugin_file ) { + + $aioseop_plugin_dirname = AIOSEOP_PLUGIN_DIRNAME; + $action_links = array(); + $action_links = array( + 'settings' => array( + 'label' => __( 'SEO Settings', 'all-in-one-seo-pack' ), + 'url' => get_admin_url( null, "admin.php?page=$aioseop_plugin_dirname/aioseop_class.php" ), + ), + + 'forum' => array( + 'label' => __( 'Support Forum', 'all-in-one-seo-pack' ), + 'url' => 'https://semperplugins.com/support/', + ), + + 'docs' => array( + 'label' => __( 'Documentation', 'all-in-one-seo-pack' ), + 'url' => 'https://semperplugins.com/documentation/', + ), + + ); + + unset( $actions['edit'] ); + + if ( ! AIOSEOPPRO ) { + $action_links['proupgrade'] = + array( + 'label' => __( 'Upgrade to Pro', 'all-in-one-seo-pack' ), + 'url' => 'https://semperplugins.com/plugins/all-in-one-seo-pack-pro-version/?loc=plugins', + + ); + } + + return aiosp_action_links( $actions, $plugin_file, $action_links, 'before' ); + } +} + +if ( ! function_exists( 'aiosp_action_links' ) ) { + + /** + * @param $actions + * @param $plugin_file + * @param array $action_links + * @param string $position + * + * @return array + */ + function aiosp_action_links( $actions, $plugin_file, $action_links = array(), $position = 'after' ) { + static $plugin; + if ( ! isset( $plugin ) ) { + $plugin = plugin_basename( __FILE__ ); + } + if ( $plugin === $plugin_file && ! empty( $action_links ) ) { + foreach ( $action_links as $key => $value ) { + $link = array( $key => '' . $value['label'] . '' ); + if ( 'after' === $position ) { + $actions = array_merge( $actions, $link ); + } else { + $actions = array_merge( $link, $actions ); + } + }//foreach + }// if + return $actions; + } +} + +if ( ! function_exists( 'aioseop_init_class' ) ) { + function aioseop_init_class() { + global $aiosp; + load_plugin_textdomain( 'all-in-one-seo-pack', false, dirname( plugin_basename( __FILE__ ) ) . '/i18n/' ); + require_once( AIOSEOP_PLUGIN_DIR . 'inc/aioseop_functions.php' ); + require_once( AIOSEOP_PLUGIN_DIR . 'aioseop_class.php' ); + require_once( AIOSEOP_PLUGIN_DIR . 'inc/aioseop_updates_class.php' ); + require_once( AIOSEOP_PLUGIN_DIR . 'inc/commonstrings.php' ); + require_once( AIOSEOP_PLUGIN_DIR . 'admin/display/postedit.php' ); + require_once( AIOSEOP_PLUGIN_DIR . 'admin/display/general-metaboxes.php' ); + require_once( AIOSEOP_PLUGIN_DIR . 'inc/aiosp_common.php' ); + require_once( AIOSEOP_PLUGIN_DIR . 'admin/meta_import.php' ); + require_once( AIOSEOP_PLUGIN_DIR . 'inc/translations.php' ); + require_once( AIOSEOP_PLUGIN_DIR . 'public/opengraph.php' ); + require_once( AIOSEOP_PLUGIN_DIR . 'inc/compatability/compat-init.php'); + require_once( AIOSEOP_PLUGIN_DIR . 'public/front.php' ); + require_once( AIOSEOP_PLUGIN_DIR . 'public/google-analytics.php' ); + require_once( AIOSEOP_PLUGIN_DIR . 'admin/display/welcome.php' ); + require_once( AIOSEOP_PLUGIN_DIR . 'admin/display/dashboard_widget.php' ); + + $aioseop_welcome = new aioseop_welcome(); // TODO move this to updates file. + + if ( AIOSEOPPRO ) { + require_once( AIOSEOP_PLUGIN_DIR . 'pro/class-aio-pro-init.php' ); // Loads pro files and other pro init stuff. + } + aiosp_seometa_import(); // call importer functions... this should be moved somewhere better + + $aiosp = new All_in_One_SEO_Pack(); + + $aioseop_updates = new AIOSEOP_Updates(); + + if ( AIOSEOPPRO ) { + $aioseop_pro_updates = new AIOSEOP_Pro_Updates(); + add_action( 'admin_init', array( $aioseop_pro_updates, 'version_updates' ), 12 ); + } + + add_action( 'admin_init', 'aioseop_welcome' ); + + if ( aioseop_option_isset( 'aiosp_unprotect_meta' ) ) { + add_filter( 'is_protected_meta', 'aioseop_unprotect_meta', 10, 3 ); + } + + add_action( 'init', array( $aiosp, 'add_hooks' ) ); + add_action( 'admin_init', array( $aioseop_updates, 'version_updates' ), 11 ); + + if ( defined( 'DOING_AJAX' ) && ! empty( $_POST ) && ! empty( $_POST['action'] ) && 'aioseop_ajax_scan_header' === $_POST['action'] ) { + remove_action( 'init', array( $aiosp, 'add_hooks' ) ); + add_action( 'admin_init', 'aioseop_scan_post_header' ); + add_action( 'shutdown', 'aioseop_ajax_scan_header' ); // if the action doesn't run -- pdb + include_once( ABSPATH . 'wp-admin/includes/screen.php' ); + global $current_screen; + if ( class_exists( 'WP_Screen' ) ) { + $current_screen = WP_Screen::get( 'front' ); + } + } + } +} + + + +if ( ! function_exists( 'aioseop_welcome' ) ){ + function aioseop_welcome(){ + if( get_transient( '_aioseop_activation_redirect') ){ + $aioseop_welcome = new aioseop_welcome(); + delete_transient( '_aioseop_activation_redirect' ); + $aioseop_welcome->init( TRUE ); + } + + } +} + +add_action( 'init', 'aioseop_load_modules', 1 ); +//add_action( 'after_setup_theme', 'aioseop_load_modules' ); + +if ( is_admin() ) { + add_action( 'wp_ajax_aioseop_ajax_save_meta', 'aioseop_ajax_save_meta' ); + add_action( 'wp_ajax_aioseop_ajax_save_url', 'aioseop_ajax_save_url' ); + add_action( 'wp_ajax_aioseop_ajax_delete_url', 'aioseop_ajax_delete_url' ); + add_action( 'wp_ajax_aioseop_ajax_scan_header', 'aioseop_ajax_scan_header' ); + if ( AIOSEOPPRO ) { + add_action( 'wp_ajax_aioseop_ajax_facebook_debug', 'aioseop_ajax_facebook_debug' ); + } + add_action( 'wp_ajax_aioseop_ajax_save_settings', 'aioseop_ajax_save_settings' ); + add_action( 'wp_ajax_aioseop_ajax_get_menu_links', 'aioseop_ajax_get_menu_links' ); + add_action( 'wp_ajax_aioseo_dismiss_yst_notice', 'aioseop_update_yst_detected_notice' ); + add_action( 'wp_ajax_aioseo_dismiss_visibility_notice', 'aioseop_update_user_visibilitynotice' ); + add_action( 'wp_ajax_aioseo_dismiss_woo_upgrade_notice', 'aioseop_woo_upgrade_notice_dismissed' ); + if ( AIOSEOPPRO ) { + add_action( 'wp_ajax_aioseop_ajax_update_oembed', 'aioseop_ajax_update_oembed' ); + } +} + +if ( ! function_exists( 'aioseop_scan_post_header' ) ) { + function aioseop_scan_post_header() { + require_once( ABSPATH . WPINC . '/default-filters.php' ); + global $wp_query; + $wp_query->query_vars['paged'] = 0; + query_posts( 'post_type=post&posts_per_page=1' ); + if ( have_posts() ) { + the_post(); + } + } +} + +require_once( AIOSEOP_PLUGIN_DIR . 'aioseop-init.php' ); + +if ( ! function_exists( 'aioseop_install' ) ) { + register_activation_hook( __FILE__, 'aioseop_install' ); + + function aioseop_install() { + aioseop_activate(); + } +} + +if ( ! function_exists( 'disable_all_in_one_free' ) ) { + function disable_all_in_one_free() { + if ( AIOSEOPPRO && is_plugin_active( 'all-in-one-seo-pack/all_in_one_seo_pack.php' ) ) { + deactivate_plugins( 'all-in-one-seo-pack/all_in_one_seo_pack.php' ); + } + } +} diff --git a/plugins/all-in-one-seo-pack/css/aiosp_admin.css b/plugins/all-in-one-seo-pack/css/aiosp_admin.css new file mode 100644 index 0000000..3a10431 --- /dev/null +++ b/plugins/all-in-one-seo-pack/css/aiosp_admin.css @@ -0,0 +1,129 @@ +#toplevel_page_all-in-one-seo-pack-pro-aioseop_class .wp-menu-image { + background: url(../images/shield-sprite-16.png) no-repeat 8px 6px !important; +} + +#toplevel_page_all-in-one-seo-pack-aioseop_class .wp-menu-image { + background: url(../images/shield-sprite-16.png) no-repeat 8px 6px !important; +} + +#toplevel_page_all-in-one-seo-pack-pro-aioseop_class .wp-menu-image img { + display: none; +} + +#toplevel_page_all-in-one-seo-pack-aioseop_class .wp-menu-image img { + display: none; +} + +#adminmenu #toplevel_page_all-in-one-seo-pack-pro-aioseop_class .wp-menu-image:before { + content: ''; +} + +#toplevel_page_all-in-one-seo-pack-aioseop_class .wp-menu-image:before { + content: '' !important; +} + +#toplevel_page_all-in-one-seo-pack-pro-aioseop_class:hover .wp-menu-image, #toplevel_page_all-in-one-seo-pack-pro-aioseop_class.wp-has-current-submenu .wp-menu-image { + background-position: 8px -26px !important; +} + +#toplevel_page_all-in-one-seo-pack-aioseop_class:hover .wp-menu-image, #toplevel_page_all-in-one-seo-pack-aioseop_class.wp-has-current-submenu .wp-menu-image { + background-position: 8px -26px !important; +} + +#icon-aioseop.icon32 { + background: url(../images/shield32.png) no-repeat left top !important; +} + +#aioseop_settings_header #message { + padding: 5px 0px 5px 50px; + background-image: url(../images/update32.png); + background-repeat: no-repeat; + background-position: 10px; + font-size: 14px; + min-height: 32px; + clear: none; +} + +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and ( min--moz-device-pixel-ratio: 1.5), only screen and ( -o-min-device-pixel-ratio: 3/2), only screen and ( min-device-pixel-ratio: 1.5), only screen and ( min-resolution: 1.5dppx) { + + #toplevel_page_all-in-one-seo-pack-pro-aioseop_class .wp-menu-image { + background-image: url('../images/shield-sprite-32.png') !important; + -webkit-background-size: 16px 48px !important; + -moz-background-size: 16px 48px !important; + background-size: 16px 48px !important; + } + + #toplevel_page_all-in-one-seo-pack-aioseop_class .wp-menu-image { + background-image: url('../images/shield-sprite-32.png') !important; + -webkit-background-size: 16px 48px !important; + -moz-background-size: 16px 48px !important; + background-size: 16px 48px !important; + } + + #icon-aioseop.icon32 { + background-image: url('../images/shield64.png') !important; + -webkit-background-size: 32px 32px !important; + -moz-background-size: 32px 32px !important; + background-size: 32px 32px !important; + } + + #aioseop_settings_header #message { + background-image: url(../images/update64.png) !important; + -webkit-background-size: 32px 32px !important; + -moz-background-size: 32px 32px !important; + background-size: 32px 32px !important; + } +} + +.proupgrade a { + font-weight: 900; + color: #d54e21; + font-size: 105%; +} + +li#wp-admin-bar-aioseop-pro-upgrade a.ab-item { + font-weight: 900; + color: #d54e21 !important; + font-size: 110%; +} + +#aio-pro-update{ + font-weight: 900; + color: #d54e21 !important; + font-size: 110%; +} + +/* Dashicons in sidebar */ + +.aiosp-di .dashicons { + margin:1px; + line-height: 1; + width: 42px; + height:36px; + color:#fff; + padding:3px; + vertical-align:middle; +} +.aiosp-di .dashicons:before { + -webkit-font-smoothing:antialiased; + font:400 30px/1 dashicons; + line-height: 38px; +} +.aiosp-di .dashicons.di-facebook { + margin:0; +} +.aiosp-di .dashicons.di-facebook:before { + content:"\f304"; + font-size:52px; +} +.aiosp-di .dashicons.di-twitter:before { + content:"\f301" +} +.aiosp-di .dashicons.di-facebook { + color: #3B5998; +} +.aiosp-di .dashicons.di-twitter { + width: 36px; + background-color:#00aced; + border-radius:2px; +} diff --git a/plugins/all-in-one-seo-pack/css/modules/aioseop_module-rtl.css b/plugins/all-in-one-seo-pack/css/modules/aioseop_module-rtl.css new file mode 100644 index 0000000..b254bf2 --- /dev/null +++ b/plugins/all-in-one-seo-pack/css/modules/aioseop_module-rtl.css @@ -0,0 +1,319 @@ +* { + direction: rtl !important +} + +.form-table.aioseop { + clear: none +} + +.form-table.aioseop th { + padding: 10px 9px 12px 0; + direction: rtl +} + +.aioseop_help_text_link, +.aioseop_help_text_link:active { + text-align: right; + float: right +} + +.aioseop_help_text_link span { + left: -60px; +} + +.aioseop_meta_box_help > label { + margin-left: 0; + margin-right: 8px +} + +.aioseop_help_text_link img { + float: left +} + +.aioseop_meta_box_help, +.aioseop_meta_box_help:active { + float: left; + padding-left: 0; + margin-right: 0; + margin-left: 64px +} + +.aioseop_label { + padding-left: 0; + padding-right: 20px; + text-align: right; + direction: rtl +} + +.aioseop input[type="text"] { + padding: 2px 10px 2px 0 +} + +.aioseop textarea { + padding: 10px 10px 0 0 +} + +.aioseop_help_text_div { + text-align: right; + margin: 8px 0 10px 0 +} + +.aioseop_help_text { + float: right; + clear: right +} + +.aioseop_head_nav { + float: right +} + +.aioseop_head_nav_tab { + margin: 0 15px 0 0; + float: right +} + +.aioseop_head_nav_tab:first-child { + margin-right: 0 +} + +.aioseop_header { + float: right; + clear: right +} + +.aioseop_nopad { + padding-right: 0 +} + +.aioseop_adverts { + float: left +} + +.aioseop_content { + clear: right +} + +#aiosp_feature_manager_metabox.postbox { + float: right +} + +.aioseop_sidebar { + margin-left: 0; + margin-right: 10px +} + +.aioseop_option_label { + float: right !important; + clear: right !important; +} + +.aioseop_settings_left { + float: right; +} + +.aioseop_option_input { + float: left; /*clear: right !important;*/ + padding-left: 0; + padding-right: 1px; + margin-bottom: 20px; + width: 60%; + min-width: 160px; +} + +.aioseop_top { + margin: 10px 0 0 10px +} + +.aioseop_right_sidebar { + float: left +} + +div.aioseop_feature { + float: right +} + +.aioseop_feature #free-flag { + float: left; + margin-right: 0; + background: none repeat scroll 0 0 #D23D46; + color: #FFFFFF; + padding: 5px 12px; + position: relative; +} + +.aioseop_feature #free-flag:before, +.aioseop_feature #free-flag:after { + display: none; +} + +.aioseop_feature .feature_button { + float: left; + margin-right: 0; + margin-left: 10px +} + +.aioseop_follow_button { + margin-right: 0; + margin-left: 5px +} + +.aioseop_wrapper { + padding-left: 0; + padding-right: 5px; + direction: rtl +} + +.aioseop_input { + clear: left +} + +#aiosp div.preview_snippet { + padding: 15px 7px 20px 15px +} + +#aiosp_sitemap_addl_pages, +#aiosp_video_sitemap_addl_pages { + clear: right; + margin-left: 0; + margin-right: 20px +} + +.All_in_One_SEO_Pack_Opengraph table.aioseop_table { + border-left: 0 solid #dfdfdf; + border-right: 1px solid #dfdfdf +} + +.All_in_One_SEO_Pack_Opengraph table.aioseop_table th { + border-right: 0 solid #dfdfdf; + border-left: 1px solid #dfdfdf +} + +.All_in_One_SEO_Pack_Opengraph table.aioseop_table td { + border-right: 0 solid #dfdfdf; + border-left: 1px solid #dfdfdf +} + +#aiosp_sitemap_addl_pages_metabox table.aioseop_table td, +#aiosp_video_sitemap_addl_pages_metabox table.aioseop_table td { + padding-left: 0; + padding-right: 5% +} + +.aioseop_settings_left .postbox { + float: right +} + +.aioseop_option_setting_label { + padding-left: 0; + padding-right: 1px +} + +.aioseop_settings_left .postbox .inside { + clear: left +} + +.postbox h2 .Taha { + float: left !important; +} + +#aiosp_settings_form .aioseop_no_label, +.aioseop_no_label { + float: right; + margin: 0 13px 0 23px +} + +.aioseop_module.error.below-h2 { + margin: 0 0 15px 477px !important +} + +.robots img { + margin: 0 2px 0 0 +} + +/* Robots.txt styling */ +#aiosp_robots_generator_robotgen_wrapper .aioseop_option_div, +#aiosp_robots_generator_robothtml_wrapper .aioseop_option_div { + margin-top: 10px; +} + +div.aioseop_notice a.aioseop_dismiss_link { + position: absolute; + top: 10px; + left: 10px; + text-align: left; +} + +/* +.ButtonB{ + border: 1px solid red !important; + float: left; + clear: right; + +}*/ +.aioseop_help_text ul { + margin: 15px 20px 0 0 +} + +.aioseop_header_tabs li a.aioseop_header_tab { + margin: 5px 0 0 5px +} + +.aioseop_header_tabs li:first-child a.aioseop_header_tab { + border-left: solid 0 #CCC; + border-right: solid 1px #CCC; + margin-left: 0; + margin-right: 5px +} + +.aioseop_tab { + padding-left: 0; + padding-right: 5px +} + +form#aiosp_settings_form, +.aioseop_tabs_div { + padding-right: 0; + padding-left: 477px +} + +#aiosp_settings_form ul.sfwd_debug_settings li strong { + float: right; + text-align: left; + margin-right: 0; + margin-left: 8px; + padding-right: 0; + padding-left: 8px +} + +#aiosp_settings_form ul.sfwd_debug_settings li { + clear: right +} + +.aioseop_advert { + direction: rtl; + float: right; + z-index: 999999 +} + +.aioseop_advert form input { + float: left +} + +.MRL { + margin-left: 0 !important; + margin-right: 20px !important; +} + +.aioseop_upload_image_label { + clear: right !important; + float: none !important; +} + +.aioseop_upload_image_button { + float: right !important; + margin-bottom: 5px !important; +} + +#aioseop-about .aioseop_metabox_text ul { + padding-right: 15px; +} \ No newline at end of file diff --git a/plugins/all-in-one-seo-pack/css/modules/aioseop_module.css b/plugins/all-in-one-seo-pack/css/modules/aioseop_module.css new file mode 100644 index 0000000..8f12623 --- /dev/null +++ b/plugins/all-in-one-seo-pack/css/modules/aioseop_module.css @@ -0,0 +1,1334 @@ +/** + * Controls all the styling of the plugin. + * + * @author Michael Torbert. + * @author Semper Fi Web Design. + * @copyright http://semperplugins.com + * @package All-in-One-SEO-Pack. + */ + +.form-table.aioseop { + clear: none; +} + +.form-table.aioseop td { + vertical-align: top; + padding: 16px 0 10px 0; + line-height: 20px; + font-size: 12px; +} + +.form-table.aioseop th { + width: 200px; + padding: 10px 0 12px 9px; +} + +.aioseop_help_text_link, +.aioseop_help_text_link:active { + text-align: left; + float: left; + max-width: 300px; + min-width: 1px; + padding-top: 2px; + outline: none; + color: #888; + border: 2px solid #888; + border-radius: 33px; + width: 22px; + height: 20px; + font-family: sans-serif; +} + +.aioseop_help_text_link span { + position: absolute; + left: 21px; + font-size: 14px; +} + +.aioseop_help_text_link:before { + content: '\a0?'; + color: #888; + font-size: 19px; +} + +#aioseop-support .aioseop_metabox_text, +#aioseop-support a { + font-size: 14px; + color: #000; + text-decoration: none; +} + +.aioseop_icon { + display: inline-block; + width: 40px; + height: 40px; + background-repeat: no-repeat; + background-size: 100%; + vertical-align: middle; + margin: 10px; +} + +.aioseop_book_icon { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAKlBMVEUAAAAAn+cAneEAnuABnuEBnuEAnuEAn+QAn+QAneAAnuEAneAAnuAAneFPI9ocAAAADnRSTlMAII/P/wCQMADwANDvnyPbz6kAAAB9SURBVHgB7c+xCQMgEIVhZwiSSRzhkRBImsA5gVUmuBGcJbUDxlhY6T2wvh/sPvBd+HdJWCSj0N8bsEEiIIOAyEBhIDGAcwA4cDBy4MDBTeuqCR5abXCvBHy+6ybQrs2R0jsH/As+srEzC55qggi81AIZ+waQxkBmQK5tD34LnXJVZf9y5gAAAABJRU5ErkJggg==); +} + +.aioseop_cog_icon { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAeFBMVEUAAAAAn+MAnOIAn+cAneIAneEAn+MAnuEAneIAnuAAnuAAneEAn+cAn+QAn98AnuEAn98AneAAneEAneAAnOIAnuAAnuEAnuAAneEAn+EAnuEAnuAAneEAneAAneAAn+QAnuEAnuABnuEAneAAn+EAnuIAnuMBnuHeY3dlAAAAJ3RSTlMAQFAAYIAAkADP3wAgMACgEACfrwC/X++PbwAAcODwALDAANAATz8hP00ZAAACHklEQVR4Xq3XbWObIBAHcPAJJRjJVmtso4vL2vv+33AzJO2J/LuE9PfGFyR4HHiAgCQxyRMiYEtGTL5BBGzJiVEviIAtFTH6FRGowdBC/QsQqKGhhebeIdTkqe+LwFbkqew2SGyDftDKz12Q2AXYlhgeA46AD/G5oyD9zJO0zIEhvXd91L0mSPcmnZlek0nPhHu4mKu2ov+q2rZzOWE5kBRBFjNRzDRFqD6X8oGiHK5fo+0oSmcv06goknLfQk3RzHkaWwIGlUhrZaIGAto5iQn6uyw+yAFOpSgUTDEHJqqZc5DR2rgqw8lIa7mbRkkMLOOBoWZlWYrynwzGzx1C/3cdlEcvf7sgL5MTq8rGz22QNwjDP+cGBYBDOC6qcnLTNqQCeRbuYdEU4In47YjL84RSwEk+Tq8qT7xvhMc5eXsj78Buga866O4dQrXs4OEk3jaNTWC1Cfc43nSa0MQ0fCFFLWXL9saWFjQMgFOfEUR+zsl1KWeRBaWr3e7c01q3Lmld+FfiSVFQ/2ehp6B8IzaorGvJ8q8Jl/ViIkDv396tfX/bawKm81J+eGtLH91cX+xIUUZ7XYmPHTBmA0U4feMh6zqVwzTe8ubQvmBoUJeDphoIGtT5tVaq0Ttopvyom4M4xqz8YGXhiCLAnIKhg8N2iA30cLzrxmJH/H4cASejrjzcFHXpwrcukwIiRQZv2QICtjQP352/9fYuC+Qv593CTVvcgwkAAAAASUVORK5CYII=); +} + +.aioseop_file_icon { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAPFBMVEUAAAAAneAAn98AneIAneEAnuAAn+QAnuAAnuAAnuEAn+MAnuEAneAAnuEAn+EAneEAnOIAnuEAnuABnuG5yOaaAAAAE3RSTlMA0BBgn88wv++gQLCvX2+PUJDAyp/15gAAALdJREFUeF7t1z2ygzAMhVFJjm0C5Ff732uaMCSWCVzTJO/paz1zRsVtTM/OUT+Wx5PQchJ1Q2O/CETdVk51IOjWugAeYLvUAEU6rAO4oLhQB2bSvh+NAAKU2AgYQGIEDHgXbjhQCFcYKIQuoUApZBQwQg8CRhhAwArSBlCagNAI0LTqAQCq3fcC+jOA7e8DDuhK/wDwHfgOfAe+A98B2BcC3Aaw+XiCBdp3AtOcNAgs9FoACZ7ufwCe6pfMGb29UwAAAABJRU5ErkJggg==); +} + +.aioseop_help_icon { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAflBMVEUAAAAAn98AnuIAn+EAneAAnuAAnuAAn+QAn+QAneEAnuAAnuAAn+EAnuAAnuEAneAAn+cAneAAnuAAn98AnOIAnuEAneIAn+MAnuEAnuEAn+EAneIAneEAneEAnuEAn+MAneAAneEAnuMAnOIAn+cAneEBnuEAneAAnuMBnuEoGewkAAAAKXRSTlMAEE9/r7/fADCPzwBv718AIPDAAFCwYEAAoAAAn4CQAOAAPwAAcADQAFP96WQAAAMNSURBVHhelZcNc5swDIatBghpoCGEj9Jij2XLMv3/P7glkoNtZJo+d+0lhBOveSXZUjHgZZOkGf4nS5PNC5wiKPFqvnvFgNddvpVQy0tQZCiSFfCEAtiUGKXcwFcB3kpcpXx791HetypFn2NdH9EnrX67KPdL46g/tl3PeqHvWidM2fxyUM7n3fzgof8R0A9zjN3PGTV/HB+6teg66EeIUQqQIGOiSQMGmeRgUQfGPn/Ktyv0k9UQKrCxWzitAq3V6dvYIDG8f8mAROO6ULF/3ecTaHazcvIgjTw/PxfFeVFErCHd31C3fx2v39cKGy6qLKyA1tGr/v8BLWDyb3OLqiw+XGCiq8DFxIvypMKIHqMXvaeLmmyEkn1xSTCAjWcMS7gruFD+eo/QuEC7AYCy+nJXkC1/r5A4Gq2NrQCvjMnL7OZCLggY3KoAI5jMEvKt2hohBYK3wiveuwx8i3qn/uvVf0O2Hh5MnLwOZMTrXgGt4OCi7RuyXNg1F1oDqEZIQh2K6oUALalSWqgiIwUIM4VVqZZvdlkE7QQFFLRVNS3l5NLZarMkgkx6ebWiNPqzSu9nEkM2KDZhjbykh+19KKri3+LkIxLhVlE/E4CaAjsd4AYo9zJkR9huGF7CtPYSX9FyXG4XFHe2UQIt9fIGa6NNJBErX2r35O0wp7KEbZYSNpVtMYngSpbZYoI1G9YClFzOp+vKS6jviLFJ+fWgDralfZO5peW2xX8LKB9NdTtxsQuc7/wV0OTv/YRyiUuIugCls7FwizffsXHgzcRurjEjYgH8zdVKyODZJUDGAuxZubNnt5BIgMQ7YNyowy2c0XfCqyNX6HzE2Ve8A28+nmDDHaJyD9sNChpkxvCYRxgkEjitAkl40AzPjxm7KdNnSAzLgaNFZhcVATtkBmliGaTJSJ6mBnnkMWgpx+XAMZZoMbGZqXEHm6Q4sxA4F4k7DEkjD1PVGJCmGFDLQ5elO+Iqx7B/q88A0FKI+DSlBLMuE4pMF3h6+DZXDLia6PAtA41u67uUqW51E02uf46zvXx+HY4YAAAAAElFTkSuQmCC); +} + +.aioseop_support_icon { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAe1BMVEUAAAAAn98AnuIAn+EAneAAnuAAnuABnuEAn98An+QAneEAnuAAn+QAn+EAnuAAnuEAneAAnuEAneIAn+MAn+cAn+cAnuEAnuEAnOIAneEAneEAnOIAnuAAneEAn+MAneAAneEAneIAnuEAnuIAneAAnuAAneABnuEAnuPdwDkgAAAAKXRSTlMAEE9/r7/f/wAwj88Ab+9f0JBgQCAAALBQcAAAAJ8AAIAAoADgwPAAP4Dl7rAAAALsSURBVHgBtdcBc6I6EAfwRCH/KjUSTCW2eHK8kHff/xM+Dg5NlsTTOu830xmc0BhJdtllKXy1znKBgciz9Yq/JbC3mM22AFFsN+8x7H2B7wSixI4/sAK+lkiSa/63CfbXfy9VddAfA32oVHmdYn8MsaNP55jUhpOFmRqTXH/4mP/BSExOnxEnTKT58jDveouZaCIEZltvWna7POPm8GPhgJtzbIIMnvq4UMOTXWZsvjgjoD8IjcCZrkAh1H4SLUIq3EYDQjSEBGH8XdASVPUzUIGS2jsHORbyJpC8gzWDChGaPsL4ItnwxyUiuuPqnBdAkW9X/3SIkPxPMLWIkZJcL7XTNnKJb5J8XMEJ33YaVyCQYJUZ0tjGKIsE8XsXNuNUFpStvFMQGR4Xvhlyoppi51AjUAcZhdPRIVzr8UCzYzEfS91afxOJDle2Hc9IBaBoGMdg/raq/3s49/NPm/6TGQDl5Up3DoCN5G9uAbjOO6AlAMPa8Zd4JI0kP55k41EAWlaT+w0Ae4mytyAenQDUrCcZsCMr8igydADQM0ECrydf4zEA+uZGAygYBv96ivF4RG3GffNgsJiAfr439v9MUN7/CeXFgwGzrz1Eu9hG9eQ2Rg+SaKJE5CB1y6Ps7h1ld/FMR9mEm6vPEoCIBZMAIM/e8xoTQRjO+5y8fT0ZJvlc5PwJ57fymlDWMloBLKoHsb4mlPLCLnNKyxDIwpRGR72UtsEgUhoKrx7bR4Z3c1J9Tyft7ep3Wl9t04l/rFBefrFwh29y/N7L1TlynXy5JpbQHY3qS6Dslfnq4guYa+UXC4xBj4W+CSTvYFMEuOeLLKf9Ytssd5hw6TJv9FKhOeqeK3W7ZcNRP1Nsd7GOpXu83O/iLY8ij5CwmKlUz2TcIy2PIy2PT/eYZLRV5fsMk542XaHK3VrV/a+p7fu1uzWyjiZs9pPgrUOSa6ONJ8FPFlH2xB9uvlUJolTJ5juOm7buLQa2r1uvkSX+A/xd+1xZLxG0AAAAAElFTkSuQmCC); +} + +.aioseop_youtube_icon { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAARVBMVEUAAAAAn+cAn+EAneAAnuABnuEAn+cAn98AneEAn98AnOIAnuAAnOIAneIAneIAnuEAnuEAneEAnuEBnuEAn+QAneAAneCXjc90AAAAF3RSTlMAIG+vz/8AEJ8AUO8AYACgAHCwADDw0E/SOHoAAAEBSURBVHgB7dbBjsIgGATgH+UvCAso3fL+j7rDYZMerGGZQ5NNv8TrREZLRy47F3O7Wx1m7zezAMjSOa9/5t2jkweEqBNi+ALBJ+mklHOWnINOC/0buKjTokMHRQnlKUYpRl5HBQ32KFXfW783HVDFHgWsrg0EWNEDK4z0+yEAEhuAIsgAFMEFQOECILEBKIIMQBFcABQuABIbgCLIABTBBUBhAzx5BEuWGM/9GT35V7bkwxTPfZw9eaVZ8lKN517rI8NHmr43cPyufXi5Rh1Q+dc7PTAWduI83abTNteHJjvz6KEJYeoU2+/UBVcm+tuNbTCv2nRYq2k/9ylXwL8I+AGj+lzlceKDYQAAAABJRU5ErkJggg==); +} + +.aioseop_help_text_link.aioseop_meta_box_help:before { + font-size: 14px; +} + +.aioseop_meta_box_help > label { + position: absolute; + margin-left: 8px; +} + +div.aioseop_tip_icon { + font-size: 14px; + border: 1px solid #888; + width: 1em; + text-align: center; + padding: 0 4px; + -webkit-border-radius: 12px; + -moz-border-radius: 12px; + -webkit-box-shadow: 1px 1px 1px #888; + -moz-box-shadow: 1px 1px 1px #888; + box-shadow: 1px 1px 1px #888; + border-radius: 12px; +} + +div.aioseop_tip_icon:before { + content: '?'; +} + +.aioseop_help_text_link img { + width: 40px; + float: left; +} + +.aioseop_meta_box_help, +.aioseop_meta_box_help:active { + float: right; + padding-left: 0; + width: 16px; + margin-right: 32px; + text-decoration: none; + height: 15px; + padding-top: 1px; + position: relative; +} + +.aioseop_label { + color: #5F5F5F; + font-weight: bold; + line-height: 19px; + padding-left: 10px; /*changed from 20px to 10px for certain language support*/ + display: inline-block; + text-align: left; + position: absolute; + font-family: 'Open Sans', sans-serif; + width: 26%; + min-width: 120px; + max-width: 230px; +} + +.aioseop_option_div { + max-height: 360px; + min-height: 43px; + width: 95%; + overflow-y: auto; +} + +.aioseop_overflowed { + border: 1px solid #e1e1e1; +} + +.aioseop input[type="text"] { + color: #515151; + height: 35px; + padding: 10px 0 10px 10px; + font-size: 14px; + width: 95%; + max-width: 600px; +} + +.aioseop textarea { + color: #515151; + padding: 10px 0 0 10px; + margin: 0; + font-size: 14px; + line-height: 25px; + width: 95%; + max-width: 600px; +} + +.aioseop_help_text_div { + text-align: left; + width: 100%; + margin: 10px 0 10px 0; +} + +.aioseop_help_text { + font-size: 12px; + float: left; + clear: left; + color: #797979; + line-height: 15px; + font-style: italic; +} + +.aioseop_head_tagline { + color: #5F5F5F; + font-size: 13px; +} + +.aioseop_head_nav { + float: left; + font-size: 18px; + margin: 0 0 16px 0; + font-family: "HelveticaNeue-Light", + "Helvetica Neue Light", + "Helvetica Neue", + sans-serif; + border-bottom: 1px solid #CCC; + width: 100%; +} + +.aioseop_head_nav_tab { + padding: 10px 15px 10px 15px; + margin: 0 0 0 15px; + border-radius: 4px 4px 0 0; + border: 1px solid #CCC; + border-bottom: 0 white; + float: left; + opacity: 0.5; + color: black; + text-shadow: white 0 1px 0; + text-decoration: none; +} + +.aioseop_head_nav_tab.aioseop_head_nav_active { + opacity: 1; + margin-bottom: -1px; + border-width: 1px; +} + +.aioseop_head_nav_tab:first-child { + margin-left: 0; +} + +.aioseop_head_nav_tab:hover { + opacity: 1; +} + +.aioseop_header { + float: left; + clear: left; +} + +.aioseop_advert { + padding: 10px; + margin-bottom: 30px; + border: 1px solid #DDD; + height: 200px; + width: 423px; +} + +.aioseop_nopad { + padding-left: 0; + padding-top: 0; +} + +.aioseop_nopad_all { + padding: 0; + height: 220px; + width: 445px; + margin-bottom: 20px; + border: none; +} + +.aioseop_adverts { + float: right; +} + +.wincherad { + width: 100%; + height: 100%; + background-size: 100%; + background-repeat: no-repeat; + margin-bottom: 0; + border: none; +} + +#wincher21 { + background-image: url(../../modules/images/banner21.jpg); +} + +#wincher22 { + background-image: url(../../modules/images/banner22.jpg); +} + +.aioseop_content { + min-width: 760px; + clear: left; +} + +.aioseop_options_wrapper { +} + +.aioseop_options_wrapper .hndle { + font-size: 15px; + font-family: Georgia, + "Times New Roman", + "Bitstream Charter", + Times, + serif; + font-weight: normal; + padding: 7px 10px; + margin: 0; + line-height: 1; +} + +.aioseop_options_wrapper .submit input.button-primary { + margin-bottom: 5px; +} + +#aiosp_feature_manager_metabox.postbox { + margin-top: 20px; + float: left; +} + +.aioseop_advert p { + margin: 25px 0 25px 0; +} + +.aioseop_options_wrapper .postarea { + border-color: #DFDFDF; + -moz-box-shadow: inset 0 1px 0 #fff; + -webkit-box-shadow: inset 0 1px 0 #fff; + box-shadow: inset 0 1px 0 #fff; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +.aioseop_advert h3 { + padding: 0; + margin-top: 6px; +} + +.aioseop_metabox_text p { + margin: 0 0 0 0; + width: 101%; +} + +.aioseop_sidebar { + width: 457px; + margin-left: 10px; +} + +.aioseop_metabox_text { + margin-bottom: 0; +} + +.aioseop_metabox_wrapper { + padding: 0; +} + +.aioseop_metabox_text *:last-child { + margin: 0; +} + +.aioseop_metabox_feature { + margin-top: 20px; +} + +.aioseop_option_label { + float: left; + margin: 0; + min-width: 150px; + width: 37%; + max-width: 270px; + padding-top: 3px; + padding-bottom: 3px; + height: 67px !important; /*added for certain language support*/ +} + +.aioseop_metabox_text h2 { + font-size: 14px; + padding: 0; + font-weight: bold; + line-height: 29px; +} + +#aioseop-about { + width: 443px; + margin-bottom: 20px; +} + +#aioseop-about .aioseop_metabox_text #mc-embedded-subscribe-form h2 { + font-size: 13px; +} + +.aioseop_sidebar #mc-embedded-subscribe-form { + margin: 0 0 10px 0; + background: white; + padding: 10px 10px; + border: 1px solid #DDD; +} + +#aioseop-about .aioseop_metabox_text ul { + list-style-type: disc; + padding-left: 15px; +} + +.aioseop input[readonly] { + background-color: #EEE; + margin: 5px 0 5px 0 !important; +} + +.aioseop_settings_left { + float: left; + padding: 0; + margin: 0; + width: 100%; +} + +body.all-in-one-seo_page_all-in-one-seo-pack-aioseop_feature_manager .aioseop_settings_left { + margin-top: 20px; +} + +body.all-in-one-seo_page_all-in-one-seo-pack-pro-aioseop_feature_manager .aioseop_settings_left { + margin-top: 20px; +} + +#aioseop_top_button { + margin-top: 5px; + height: 30px; +} + +#aioseop-list #mce-EMAIL { + margin-top: 5px; + width: 250px; +} + +.aioseop_top { + margin: 10px 10px 0 0; + /* margin: 10px 477px 0px 0px; */ +} + +.aioseop_top #aioseop-list { + margin-bottom: 0; +} + +.aioseop_top #aioseop-list.postbox.closed { + overflow: hidden; +} + +.aioseop_right_sidebar { + float: right; + margin-top: 35px; +} + +#aiosp_settings_form .button-primary.hidden { + display: none; +} + +form#edittag div#aiosp_titleatr_wrapper, +form#edittag div#aiosp_menulabel_wrapper, +form#edittag div#aiosp_sitemap_exclude_wrapper { + display: none; +} + +.All_in_One_SEO_Pack_Feature_Manager > #aiosp_settings_form > #aioseop_top_button { + height: 5px; + position: absolute; + top: 0; + width: 97%; +} + +.All_in_One_SEO_Pack_Feature_Manager > #aiosp_settings_form > .aioseop_settings_left { + margin-top: 10px; +} + +.All_in_One_SEO_Pack_Feature_Manager > .aioseop_right_sidebar.aioseop_options_wrapper { + margin-top: 10px; +} + +div#aiosp_feature_manager_metabox .inside { + padding: 8px; +} + +div.aioseop_feature { + position: relative; + display: inline-block; + float: left; + vertical-align: top; + width: 240px; + height: 288px; + margin: 8px; + border: 1px solid #DEDEDE; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + background: white; + padding: 10px 0 0; + -webkit-box-shadow: inset 0 1px 0 #fff, + inset 0 0 20px rgba(0, 0, 0, 0.05), + 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 0 #fff, + inset 0 0 20px rgba(0, 0, 0, 0.05), + 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 0 #fff, + inset 0 0 20px rgba(0, 0, 0, 0.05), + 0 1px 2px rgba(0, 0, 0, 0.1); + -webkit-transition-duration: .4s; + -moz-transition-duration: .4s; +} + +.aioseop_feature .flag { + float: right; + margin-right: -7px; + background: none repeat scroll 0 0 #D23D46; + color: #FFFFFF; + padding: 5px 12px 6px 5px; + position: relative; +} + +.aioseop_feature .flag:before { + border-color: #D23D46 #D23D46 #D23D46 transparent; + border-style: solid; + border-width: 14px 4px 15px 10px; + content: ""; + left: -14px; + position: absolute; + top: 0; +} + +.aioseop_feature .flag:after { + border-color: #892026 transparent transparent; + border-style: solid; + border-width: 6px 6px 6px 0; + bottom: -12px; + content: ""; + position: absolute; + right: 0; +} + +.aioseop_feature .flag.pro { + display: none; +} + +#aioseop_coming_soon .free.flag, +.all-in-one-seo_page_all-in-one-seo-pack-pro-modules-aioseop_feature_manager .aioseop_feature .free.flag { + display: none; +} + +#aioseop_coming_soon .flag.pro { + display: block; + margin-top: -30px; +} + +.all-in-one-seo_page_all-in-one-seo-pack-pro-modules-aioseop_feature_manager #aioseop_coming_soon .flag.pro { + display: none; +} + +.aioseop_feature h3 { + font-size: 17px; + margin: 0; + padding: 0 10px 5px 10px; + font-weight: normal; + font-style: normal; + font-family: "Helvetica Neue", + Helvetica, + Arial, + "Lucida Grande", + Verdana, + "Bitstream Vera Sans", + sans-serif; +} + +.aioseop_feature p { + line-height: 150%; + font-size: 12px; + font-family: Georgia, + "Times New Roman", + "Bitstream Charter", + Times, serif; + margin-bottom: 20px; + color: #666; + padding: 0 10px; +} + +.aioseop_feature p.aioseop_desc { + min-height: 80px; +} + +.aioseop_feature .feature_button { + float: right; + margin-bottom: 10px; + margin-right: 10px; + min-width: 80px; + text-align: center; +} + +.aioseop_feature .feature_button:before { + content: "Activate"; +} + +.aioseop_feature .active.feature_button:before { + content: "Deactivate"; +} + +div.aioseop_feature .aioseop_featured_image { + min-height: 100px; + background-repeat: no-repeat; + display: block; + margin: 0 auto; + width: 133px; +} + +div.aioseop_feature .aioseop_featured_image { + background-image: url(../../modules/images/Default-BW-Standard.png); +} + +div.aioseop_feature .aioseop_featured_image.active { + background-image: url(../../modules/images/Default-Color-Standard.png); +} + +div.aioseop_feature#aioseop_sitemap .aioseop_featured_image { + background-image: url(../../modules/images/XMLSitemaps-BW-Standard.png); +} + +div.aioseop_feature#aioseop_sitemap .aioseop_featured_image.active { + background-image: url(../../modules/images/XMLSitemaps-Color-Standard.png); +} + +div.aioseop_feature#aioseop_video_sitemap .aioseop_featured_image { + background-image: url(../../modules/images/VideoSitemap-BW-Standard.png); +} + +div.aioseop_feature#aioseop_video_sitemap .aioseop_featured_image.active { + background-image: url(../../modules/images/VideoSitemap-Color-Standard.png); +} + +div.aioseop_feature#aioseop_opengraph .aioseop_featured_image { + background-image: url(../../modules/images/SocialMeta-BW-Standard.png); +} + +div.aioseop_feature#aioseop_opengraph .aioseop_featured_image.active { + background-image: url(../../modules/images/SocialMeta-Color-Standard.png); +} + +div.aioseop_feature#aioseop_robots .aioseop_featured_image, div.aioseop_feature#aioseop_bad_robots .aioseop_featured_image { + background-image: url(../../modules/images/Robots-BW-Standard.png); +} + +div.aioseop_feature#aioseop_robots .aioseop_featured_image.active, div.aioseop_feature#aioseop_bad_robots .aioseop_featured_image.active { + background-image: url(../../modules/images/Robots-Color-Standard.png); +} + +div.aioseop_feature#aioseop_file_editor .aioseop_featured_image { + background-image: url(../../modules/images/FileEditor-BW-Standard.png); +} + +div.aioseop_feature#aioseop_file_editor .aioseop_featured_image.active { + background-image: url(../../modules/images/FileEditor-Color-Standard.png); +} + +div.aioseop_feature#aioseop_importer_exporter .aioseop_featured_image { + background-image: url(../../modules/images/ImporterExporter-BW-Standard.png); +} + +div.aioseop_feature#aioseop_importer_exporter .aioseop_featured_image.active { + background-image: url(../../modules/images/ImporterExporter-Color-Standard.png); +} + +div.aioseop_feature#aioseop_performance .aioseop_featured_image { + background-image: url(../../modules/images/Performance-BW-Standard.png); +} + +div.aioseop_feature#aioseop_performance .aioseop_featured_image.active { + background-image: url(../../modules/images/Performance-Color-Standard.png); +} + +div.aioseop_feature#aioseop_coming_soon .aioseop_featured_image { + background-image: url(../../modules/images/Default-Color-Standard.png); +} + +div.aioseop_feature#aioseop_coming_soon2 .aioseop_featured_image { + background-image: url(../../modules/images/Default-Color-Standard.png); +} + +.All_in_One_SEO_Pack_Sitemap > form > .wrap > .form-table, +.All_in_One_SEO_Pack_Video_Sitemap > form > .wrap > .form-table { + max-width: 500px; + clear: none; +} + +.aioseop_follow_button { + min-height: 50px; + background-repeat: no-repeat; + display: inline-block; + width: 100px; + background-size: auto 50px !important; + margin-right: 0; +} + +.aioseop_facebook_follow { + background-image: url(../../modules/images/facebook-follow-standard.png); +} + +.aioseop_twitter_follow { + background-image: url(../../modules/images/twitter-follow-standard.png); +} + +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and ( min--moz-device-pixel-ratio: 1.5), only screen and ( -o-min-device-pixel-ratio: 3/2), only screen and ( min-device-pixel-ratio: 1.5), only screen and ( min-resolution: 1.5dppx) { + div.aioseop_feature .aioseop_featured_image { + background-size: auto 100px !important; + } + + div.aioseop_feature .aioseop_featured_image.active { + background-image: url(../../modules/images/Default-Color-Retina.png); + } + + div.aioseop_feature .aioseop_featured_image { + background-image: url(../../modules/images/Default-BW-Retina.png); + } + + div.aioseop_feature#aioseop_sitemap .aioseop_featured_image { + background-image: url(../../modules/images/XMLSitemaps-BW-Retina.png); + } + + div.aioseop_feature#aioseop_sitemap .aioseop_featured_image.active { + background-image: url(../../modules/images/XMLSitemaps-Color-Retina.png); + } + + div.aioseop_feature#aioseop_video_sitemap .aioseop_featured_image { + background-image: url(../../modules/images/VideoSitemap-BW-Retina.png); + } + + div.aioseop_feature#aioseop_video_sitemap .aioseop_featured_image.active { + background-image: url(../../modules/images/VideoSitemap-Color-Retina.png); + } + + div.aioseop_feature#aioseop_opengraph .aioseop_featured_image { + background-image: url(../../modules/images/SocialMeta-BW-Retina.png); + } + + div.aioseop_feature#aioseop_opengraph .aioseop_featured_image.active { + background-image: url(../../modules/images/SocialMeta-Color-Retina.png); + } + + div.aioseop_feature#aioseop_robots .aioseop_featured_image, div.aioseop_feature#aioseop_bad_robots .aioseop_featured_image { + background-image: url(../../modules/images/Robots-BW-Retina.png); + } + + div.aioseop_feature#aioseop_robots .aioseop_featured_image.active, div.aioseop_feature#aioseop_bad_robots .aioseop_featured_image.active { + background-image: url(../../modules/images/Robots-Color-Retina.png); + } + + div.aioseop_feature#aioseop_file_editor .aioseop_featured_image { + background-image: url(../../modules/images/FileEditor-BW-Retina.png); + } + + div.aioseop_feature#aioseop_file_editor .aioseop_featured_image.active { + background-image: url(../../modules/images/FileEditor-Color-Retina.png); + } + + div.aioseop_feature#aioseop_importer_exporter .aioseop_featured_image { + background-image: url(../../modules/images/ImporterExporter-BW-Retina.png); + } + + div.aioseop_feature#aioseop_importer_exporter .aioseop_featured_image.active { + background-image: url(../../modules/images/ImporterExporter-Color-Retina.png); + } + + div.aioseop_feature#aioseop_performance .aioseop_featured_image { + background-image: url(../../modules/images/Performance-BW-Retina.png); + } + + div.aioseop_feature#aioseop_performance .aioseop_featured_image.active { + background-image: url(../../modules/images/Performance-Color-Retina.png); + } + + div.aioseop_feature#aioseop_coming_soon .aioseop_featured_image { + background-image: url(../../modules/images/Default-BW-Retina.png); + } + + div.aioseop_feature#aioseop_coming_soon2 .aioseop_featured_image { + background-image: url(../../modules/images/Default-BW-Retina.png); + } + + .aioseop_facebook_follow { + background-image: url(../../modules/images/facebook-follow-retina.png); + } + + .aioseop_twitter_follow { + background-image: url(../../modules/images/twitter-follow-retina.png); + } +} + +.aioseop_options { + width: 100%; + margin: 18px 0 10px 0; +} + +.aioseop_wrapper { + width: 100%; + padding-left: 5px; +} + +.aioseop_input { + clear: left; + width: 100%; + padding: 5px; + display: inline; +} + +.aioseop_option_input { + float: left; + width: 61%; + margin: 0; + padding-left: 1px; + min-width: 160px; + /* max-width: 900px; */ +} + +#aiosp div.preview_snippet { + border: 1px solid #ebebeb; + padding: 15px 15px 20px 7px; + background-color: #fff; +} + +div#aioseop_snippet { + font-family: arial, sans-serif; + font-size: 13px; +} + +div#aioseop_snippet > h3 { + font-size: 16px; + padding: 8px 0; + border: 0; + background: inherit; +} + +div#aioseop_snippet > h3 > a { + color: #12c; + text-decoration: none; + cursor: pointer; +} + +div#aioseop_snippet > div { + color: #222; + max-width: 42em; +} + +div#aioseop_snippet > div > div { + display: block; + margin-bottom: 1px; +} + +div#aioseop_snippet > div > div > cite { + color: #093; + font-style: normal; +} + +div#aioseop_snippet > div > span { + margin: 0; + padding: 0; + border: 0; +} + +#aiosp_sitemap_addl_pages, +#aiosp_video_sitemap_addl_pages { + clear: left; + margin-left: 20px; + max-width: 1072px; +} + +#aiosp_sitemap_addl_pages_metabox .aioseop_wrapper, +#aiosp_video_sitemap_addl_pages_metabox .aioseop_wrapper { + width: 23%; + min-width: 165px; + display: inline-block; + max-width: 265px; +} + +#aiosp_sitemap_addl_pages_metabox .aioseop_help_text_div, +#aiosp_video_sitemap_addl_pages_metabox .aioseop_help_text_div { + position: absolute; + margin: 5px 0 10px 0; +} + +#aiosp_sitemap_addl_pages_metabox .aioseop_option_input, +#aiosp_video_sitemap_addl_pages_metabox .aioseop_option_input { + width: 94%; + min-width: 94%; +} + +#aiosp_sitemap_addl_pages_metabox table.aioseop_table, +#aiosp_video_sitemap_addl_pages_metabox table.aioseop_table { + width: 96%; + border: 1px solid #CCC; + margin: 5px 0 10px 0; +} + +table.aioseop_table tr:nth-child(odd) { + background-color: #EEE; +} + +.All_in_One_SEO_Pack_Opengraph table.aioseop_table tr:nth-child(odd) { + background-color: rgba(238, 238, 238, 0.5); +} + +table.aioseop_table td { + width: 23%; +} + +.All_in_One_SEO_Pack_Opengraph table.aioseop_table { + width: 80%; + max-width: 800px; + display: block; + border-top: 1px solid #dfdfdf; + border-left: 1px solid #dfdfdf; +} + +.All_in_One_SEO_Pack_Opengraph table.aioseop_table th { + width: 18%; + border-right: 1px solid #dfdfdf; + border-bottom: 1px solid #dfdfdf; +} + +.All_in_One_SEO_Pack_Opengraph div.aioseop_meta_info { + margin-top: 10px; + border: 1px solid #dfdfdf; + width: 80%; + max-width: 800px; +} + +.All_in_One_SEO_Pack_Opengraph table.aioseop_table tr.aioseop_table_header th { + background: #f1f1f1; + background-image: -webkit-gradient(linear, left bottom, left top, from(#ececec), to(#f9f9f9)); + background-image: -webkit-linear-gradient(bottom, #ececec, #f9f9f9); + background-image: -moz-linear-gradient(bottom, #ececec, #f9f9f9); + background-image: -o-linear-gradient(bottom, #ececec, #f9f9f9); + background-image: linear-gradient(to top, #ececec, #f9f9f9); + padding: 5px; + border-bottom-color: #dfdfdf; + text-shadow: #fff 0 1px 0; + -webkit-box-shadow: 0 1px 0 #fff; + -moz-box-shadow: 0 1px 0 #fff; + box-shadow: 0 1px 0 #fff; +} + +.All_in_One_SEO_Pack_Opengraph table.aioseop_table td { + border-right: 1px solid #dfdfdf; + border-bottom: 1px solid #dfdfdf; +} + +#aioseop_opengraph_settings_facebook_debug_result li.aioseop_opengraph_settings_facebook_debug_item { + display: inline-block; + width: 30%; + vertical-align: top; +} + +#aioseop_opengraph_settings_facebook_debug_result li.aioseop_opengraph_settings_facebook_debug_item:nth-child(even) { + font-weight: bold; +} + +#aioseop_opengraph_settings_facebook_debug_result li.aioseop_opengraph_settings_facebook_debug_item:nth-child(odd) { + width: 70%; +} + +#aiosp_sitemap_addl_pages_metabox table.aioseop_table td, +#aiosp_video_sitemap_addl_pages_metabox table.aioseop_table td { + width: 25%; + padding-left: 5%; +} + +table.aioseop_table td, table.aioseop_table th { + padding: 3px; +} + +.aioseop_top_label .aioseop_option_input, +.aioseop_no_label .aioseop_option_input { + width: 100%; +} + +#aiosp_settings_form .postbox { + margin: 0 0 20px 0; +} + +.aioseop_settings_left .postbox { + float: left; + width: 100%; +} + +.aioseop_option_setting_label { + min-height: 35px; + display: inline-block; + white-space: nowrap; + overflow: hidden; + padding-left: 1px; + max-width: 229px; + min-width: 160px; + width: 33%; +} + +.aioseop_settings_left .postbox .inside { + padding: 0; + margin: 0; + clear: right; +} + +#aiosp_settings_form .aioseop_no_label, .aioseop_no_label { + float: left; + width: 92%; + max-width: 100%; + margin: 0 23px 0 13px; +} + +#aiosp_sitemap_status_metabox .handlediv.button-link { + display: none; +} + +#aiosp_sitemap_status_metabox.closed .inside { + display: block; +} + +.aioseop_top_label { + width: 96%; + margin: 0 10px; +} + +.aioseop_hidden_type { + margin: 0; + padding: 0; + height: 0; +} + +.aioseop_module.error.below-h2 { + padding: 5px 0; + margin: 0 477px 15px 0 !important; +} + +#aioseop_opengraph_settings .inside { + margin: 0; + padding: 0; +} + +#aioseop_opengraph_settings_image_wrapper img { + width: auto; + height: 75px; +} + +#aioseop_opengraph_settings_image_wrapper .aioseop_option_setting_label { + max-width: 160px; + min-width: 100px; + width: 30%; +} + +.aioseop_input input[type="checkbox"], +.aioseop_input input[type="radio"] { + vertical-align: text-bottom; + margin-top: 8px; +} + +#aiosp_importer_exporter_import_export_help_wrapper .aioseop_option_div { + max-height: initial; +} + +#aiosp { + width: 100%; +} + +.aioseop_input.aioseop_top_label .aioseop_option_input { + margin: 0 0 10px 0; +} + +.aiosp_file_editor_settings > .aioseop_textarea_type .aioseop_option_div { + max-height: none; +} + +/* Robots.txt styling */ +#aiosp_robots_generator_robotgen_wrapper .aioseop_option_div, +#aiosp_robots_generator_robothtml_wrapper .aioseop_option_div { + max-height: none; +} + +.aioseop_option_input .widefat td { + vertical-align: middle; +} + +.entry-row.robots.quirks { + font-weight: bold; + opacity: 1; +} + +.entry-row.robots { + opacity: 0.8; +} + +.entry-row.robots.invalid { + opacity: 1; + font-weight: bold; +} + +.invalid .entry_label { + font-weight: bold; +} + +.aioseop .aioseop_option_input tbody { + background: #FCFCFC; +} + +.All_in_One_SEO_Pack_Robots .aioseop .aioseop_option_input tbody { + background: transparent; +} + +.entry-row.robots div { + height: 20px; + vertical-align: middle; + width: 90%; + margin: 0 0 4px 0; +} + +.robots img { + margin: 0 0 0 2px; + opacity: 0.6; +} + +.aioseop_option_docs { + width: 98%; + display: none; + border: 1px solid #D3D3D3; + margin-top: 20px; + padding: 1%; + background-color: #EEE; +} + +.aioseop_option_docs h3 { + background: none; +} + +div.aioseop_notice { + position: relative; +} + +div.aioseop_notice a.aioseop_dismiss_link { + position: absolute; + top: 10px; + right: 10px; +} + +.aioseop_error_notice { + color: #f00; + font-weight: bold; +} + +.aioseop_input select { + margin: 7px 0; +} + +.aioseop_help_text ul { + margin: 15px 0 0 20px; +} + +.aioseop_help_text ul li { + line-height: 20px; + margin: 0; +} + +.aioseop_sidebar #side-sortables { + width: 98%; +} + +#aioseop_opengraph_settings .aioseop_option_label { + width: 30%; +} + +.aioseop_tabs { + padding-top: 6px; +} + +.aioseop_tabs.hide, +.aioseop_header_tabs.hide { + display: block !important; +} + +.aioseop_header_tabs li { + display: inline; + padding: 0; + margin: 0; +} + +.aioseop_header_tabs { + margin: 0; +} + +.aioseop_header_nav { + margin: 0; +} + +.aioseop_header_tabs li a.aioseop_header_tab.active { + background-color: rgb(255, 255, 255); + border-bottom-color: rgba(255, 255, 255, 0.5); + font-weight: bold; +} + +.aioseop_header_tabs li a.aioseop_header_tab { + height: 18px; + font: 13px/18px Arial, + Helvetica, + sans-serif normal; + text-decoration: none; + margin: 5px 5px 0 0; + padding: 4px 5px 2px; + cursor: pointer; + -webkit-border-top-right-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-top-right-radius: 3px; + border-top-left-radius: 3px; + background-color: rgb(255, 255, 255); + background-color: rgba(255, 255, 255, 0.5); + border: 1px solid #ccc; + color: #5F5F5F; +} + +/* Fix for Chrome */ +@media screen and (-webkit-min-device-pixel-ratio:0) { + + .aioseop_header_tabs li a.aioseop_header_tab { + padding-bottom: 0; + } +} + +/* Fix for Safari */ +_:-webkit-full-screen:not(:root:root), .aioseop_header_tabs li a.aioseop_header_tab { + padding-bottom: 2px; +} + +.aioseop_header_tabs li:first-child a.aioseop_header_tab { + border-left: solid 1px #CCC; + margin-left: 5px; +} + +.aioseop_tab { + border: solid 1px #CCC; + background-color: rgb(255, 255, 255); + background-color: rgba(255, 255, 255, 0.5); + padding-left: 5px; +} + +.aioseop_loading { + background-image: url('../../images/activity.gif'); + display: inline-block; + width: 24px; + height: 24px; + margin: 0; + padding: 0; + vertical-align: bottom; +} + +.aiosp_delete_url { + background-image: url('../../images/delete.png'); + display: inline-block; + width: 16px; + height: 16px; + margin: 0; + padding: 0; + vertical-align: bottom; +} + +form#aiosp_settings_form, +.aioseop_tabs_div { + padding-right: 477px; +} + +.aioseop_tabs_div { + margin-top: 10px; +} + +#aiosp_settings_form ul.sfwd_debug_settings li strong { + display: block; + float: left; + text-align: right; + background-color: #DDD; + margin-right: 8px; + padding: 1px 8px 1px 1px; + overflow: auto; + width: 200px; + min-height: 16px; +} + +#aiosp_settings_form ul.sfwd_debug_settings li:nth-child(2n+1) strong { + background-color: #CCC; +} + +#aiosp_settings_form ul.sfwd_debug_settings li { + clear: left; + margin: 0; + padding: 0; + background-color: #EEE; + overflow: auto; + max-width: 75%; + min-width: 800px; +} + +#aiosp_settings_form ul.sfwd_debug_settings li:nth-child(2n) { + background-color: #DDD; +} + +div.sfwd_debug_mail_sent { + background-color: #080; + border: 1px solid #0A0; + margin: 10px 0 10px 0; + width: 598px; + color: #FFF; + text-align: center; +} + +div.sfwd_debug_error { + background-color: #F00; + color: #FFF; + border: 1px solid #A00; + margin: 10px 0 10px 0; + width: 598px; + text-align: center; + font-weight: bolder; +} + +#aiosp_performance_status_wrapper .aioseop_option_div { + max-height: 420px; +} + +#aioseop_coming_soon, #aioseop_coming_soon2 { + padding-top: 40px; + text-align: center; + height: 258px; + font-size: 16px; +} + +.MRL { + margin-left: 20px !important; + margin-bottom: 10px !important; +} diff --git a/plugins/all-in-one-seo-pack/css/welcome.css b/plugins/all-in-one-seo-pack/css/welcome.css new file mode 100644 index 0000000..ec5f7b4 --- /dev/null +++ b/plugins/all-in-one-seo-pack/css/welcome.css @@ -0,0 +1,129 @@ +h2.nav-tab-wrapper { + margin:22px 0 0 0; +} + +#sections { + padding:22px; + background: #fff; + border:1px solid #ccc; + border-top:0px; +} + +section { + display:none; +} + +section:first-child { + display:block; +} + + +.no-js h2.nav-tab-wrapper { + display:none; +} + +.no-js #sections { + border-top:1px solid #ccc; + margin-top:22px; +} + +.no-js section { + border-top: 1px dashed #aaa; + margin-top:22px; + padding-top:22px; +} + +.no-js section:first-child { + margin:0px; + padding:0px; + border:0px; +} + +.nav-tab-active { + background-color:white; +} + + + +/* Welcome Panel */ + +.welcome-panel-close { + display: none; +} +.welcome-panel-close { + z-index: 2; +} +.welcome-panel .welcome-widgets-menus:before, +.welcome-panel .welcome-comments:before, +.welcome-panel .welcome-learn-more:before{ + content: ''; +} +.welcome-panel .welcome-widgets-menus { + background: url(/path/to/icon) 0 50% no-repeat; +} +.welcome-panel .welcome-comments { + background: url(/path/to/icon) 0 50% no-repeat; +} +.welcome-panel .welcome-learn-more { + background: url(/path/to/icon) 0 50% no-repeat; +} + + +/* + * Welcome Panel + */ +#welcome-panel > p { + margin-left: 15px; +} + +.welcome-panel-column { + width: 30%; + margin-right: 3%; + display: inline-block; + vertical-align: top; +} + +.welcome-panel-column:last-child { + margin-right: 0; +} + +.welcome-panel-column p.aioseop-message { + width: 70%; + display: inline-block; + vertical-align: top; +} + +.welcome-panel-column p.call-to-action { + display: inline-block; + width: 25%; + vertical-align: top; + margin-left: 3%; + margin-top: 13px; +} + +.welcome-panel-column p.call-to-action .button-orange { + background: #d54e21; + border-color: #d54e21; + -webkit-box-shadow: 0 1px 0 #d54e21; + box-shadow: 0 1px 0 #d54e21; + color: #fff; + text-decoration: none; + text-shadow: 0 -1px 1px #d54e21,1px 0 1px #d54e21,0 1px 1px #d54e21,-1px 0 1px #d54e21; +} + +.welcome-panel-column ul { + margin-left: 20px; +} + +.welcome-panel-column ul li { + margin-bottom: 12px; + list-style-type: square; +} + +@media screen and (max-width: 850px) { + .welcome-panel-column { + width: 100%; + margin-right: 0; + display: block; + } +} diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-am.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-am.mo new file mode 100644 index 0000000..6a7ad3c Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-am.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-arq.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-arq.mo new file mode 100644 index 0000000..db774d6 Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-arq.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-az.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-az.mo new file mode 100644 index 0000000..6758ddf Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-az.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-az_TR.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-az_TR.mo new file mode 100644 index 0000000..5a43166 Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-az_TR.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-bg_NO.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-bg_NO.mo new file mode 100644 index 0000000..c336480 Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-bg_NO.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-bn_BD.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-bn_BD.mo new file mode 100644 index 0000000..2b9a64a Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-bn_BD.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-bs_BA.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-bs_BA.mo new file mode 100644 index 0000000..e1d383f Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-bs_BA.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-ceb.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-ceb.mo new file mode 100644 index 0000000..1dc4522 Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-ceb.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-cs_CZ.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-cs_CZ.mo new file mode 100644 index 0000000..0e4a1b6 Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-cs_CZ.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-da_DK.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-da_DK.mo new file mode 100644 index 0000000..cca5b98 Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-da_DK.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-en_ZA.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-en_ZA.mo new file mode 100644 index 0000000..2c48638 Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-en_ZA.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-eo.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-eo.mo new file mode 100644 index 0000000..5696f7a Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-eo.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-es_AR.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-es_AR.mo new file mode 100644 index 0000000..46ab560 Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-es_AR.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-es_CO.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-es_CO.mo new file mode 100644 index 0000000..1eaeb4f Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-es_CO.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-es_PE.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-es_PE.mo new file mode 100644 index 0000000..1eaeb4f Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-es_PE.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-es_PR.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-es_PR.mo new file mode 100644 index 0000000..1eaeb4f Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-es_PR.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-es_VE.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-es_VE.mo new file mode 100644 index 0000000..8b128d9 Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-es_VE.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-et.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-et.mo new file mode 100644 index 0000000..beb48a0 Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-et.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-he_IL.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-he_IL.mo new file mode 100644 index 0000000..846068d Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-he_IL.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-hy.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-hy.mo new file mode 100644 index 0000000..161f569 Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-hy.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-ja.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-ja.mo new file mode 100644 index 0000000..ac6d9aa Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-ja.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-jv_ID.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-jv_ID.mo new file mode 100644 index 0000000..b222716 Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-jv_ID.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-lt.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-lt.mo new file mode 100644 index 0000000..469694e Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-lt.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-mk_MK.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-mk_MK.mo new file mode 100644 index 0000000..b103ade Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-mk_MK.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-mn.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-mn.mo new file mode 100644 index 0000000..a0118a6 Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-mn.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-mr.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-mr.mo new file mode 100644 index 0000000..531b172 Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-mr.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-ms_MY.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-ms_MY.mo new file mode 100644 index 0000000..175d855 Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-ms_MY.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-pa_IN.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-pa_IN.mo new file mode 100644 index 0000000..007b28c Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-pa_IN.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-ps.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-ps.mo new file mode 100644 index 0000000..20a5153 Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-ps.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-pt_BR.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-pt_BR.mo new file mode 100644 index 0000000..fd60d62 Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-pt_BR.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-ru_UA.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-ru_UA.mo new file mode 100644 index 0000000..75e40d3 Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-ru_UA.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-si_LK.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-si_LK.mo new file mode 100644 index 0000000..c0aaefc Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-si_LK.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-sk_SK.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-sk_SK.mo new file mode 100644 index 0000000..4f4d265 Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-sk_SK.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-sv_SE.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-sv_SE.mo new file mode 100644 index 0000000..0558729 Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-sv_SE.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-ta_IN.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-ta_IN.mo new file mode 100644 index 0000000..c35ad3c Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-ta_IN.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-tg.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-tg.mo new file mode 100644 index 0000000..93a8929 Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-tg.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-uk.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-uk.mo new file mode 100644 index 0000000..7f91f69 Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-uk.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-ur.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-ur.mo new file mode 100644 index 0000000..fc6cb7c Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-ur.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-zh_CH.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-zh_CH.mo new file mode 100644 index 0000000..0323d3a Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-zh_CH.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-zh_TW.mo b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-zh_TW.mo new file mode 100644 index 0000000..555802e Binary files /dev/null and b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack-zh_TW.mo differ diff --git a/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack.pot b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack.pot new file mode 100644 index 0000000..47b917a --- /dev/null +++ b/plugins/all-in-one-seo-pack/i18n/all-in-one-seo-pack.pot @@ -0,0 +1,3507 @@ +# Copyright (C) 2016 All In One SEO Pack +# This file is distributed under the same license as the All In One SEO Pack package. +msgid "" +msgstr "" +"Project-Id-Version: All In One SEO Pack 2.2.7.6.2\n" +"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/all-in-one-seo-" +"pack\n" +"POT-Creation-Date: 2016-02-20 22:15:58+00:00\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2016-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" + +#: aioseop_class.php:61 +msgid "%s Plugin Options" +msgstr "" + +#: aioseop_class.php:62 aioseop_class.php:752 +#: modules/aioseop_opengraph.php:267 +msgid "General Settings" +msgstr "" + +#: aioseop_class.php:72 +msgid "All donations support continued development of this free software." +msgstr "" + +#: aioseop_class.php:73 +msgid "" +"This will be the license key received when the product was purchased. This " +"is used for automatic upgrades." +msgstr "" + +#: aioseop_class.php:74 +msgid "" +"This option will automatically generate Canonical URLs for your entire " +"WordPress installation. This will help to prevent duplicate content " +"penalties by Google." +msgstr "" + +#: aioseop_class.php:75 +msgid "" +"Checking this option will set the Canonical URL for all paginated content to " +"the first page." +msgstr "" + +#: aioseop_class.php:76 +msgid "" +"Checking this option will allow you to customize Canonical URLs for specific " +"posts." +msgstr "" + +#: aioseop_class.php:77 +msgid "Set protocol for canonical URLs." +msgstr "" + +#: aioseop_class.php:78 +msgid "" +"Use wp_title to get the title used by the theme; this is disabled by " +"default. If you use this option, set your title formats appropriately, as " +"your theme might try to do its own title SEO as well." +msgstr "" + +#: aioseop_class.php:79 +msgid "" +"Check this and All in One SEO Pack will create a log of important events " +"(all-in-one-seo-pack.log) in its plugin directory which might help " +"debugging. Make sure this directory is writable." +msgstr "" + +#: aioseop_class.php:80 +msgid "" +"As the name implies, this will be the Meta Title of your homepage. This is " +"independent of any other option. If not set, the default Site Title (found " +"in WordPress under Settings, General, Site Title) will be used." +msgstr "" + +#: aioseop_class.php:81 +msgid "" +"This will be the Meta Description for your homepage. This is independent of " +"any other option. The default is no Meta Description at all if this is not " +"set." +msgstr "" + +#: aioseop_class.php:82 +msgid "" +"Enter a comma separated list of your most important keywords for your site " +"that will be written as Meta Keywords on your homepage. Don\\'t stuff " +"everything in here." +msgstr "" + +#: aioseop_class.php:83 +msgid "" +"Checking this option uses the title, description, and keywords set on your " +"static Front Page." +msgstr "" + +#: aioseop_class.php:84 +msgid "" +"This option allows you to toggle the use of Meta Keywords throughout the " +"whole of the site." +msgstr "" + +#: aioseop_class.php:85 +msgid "" +"Check this if you want your categories for a given post used as the Meta " +"Keywords for this post (in addition to any keywords you specify on the Edit " +"Post screen)." +msgstr "" + +#: aioseop_class.php:86 +msgid "" +"Check this if you want your tags for a given post used as the Meta Keywords " +"for this post (in addition to any keywords you specify on the Edit Post " +"screen)." +msgstr "" + +#: aioseop_class.php:87 +msgid "" +"Check this if you want your keywords on your Posts page (set in WordPress " +"under Settings, Reading, Front Page Displays) and your archive pages to be " +"dynamically generated from the keywords of the posts showing on that page. " +"If unchecked, it will use the keywords set in the edit page screen for the " +"posts page." +msgstr "" + +#: aioseop_class.php:88 +msgid "" +"Note that this is all about the title tag. This is what you see in your " +"browser's window title bar. This is NOT visible on a page, only in the title " +"bar and in the source code. If enabled, all page, post, category, search and " +"archive page titles get rewritten. You can specify the format for most of " +"them. For example: Using the default post title format below, Rewrite Titles " +"will write all post titles as 'Post Title | Blog Name'. If you have manually " +"defined a title using All in One SEO Pack, this will become the title of " +"your post in the format string." +msgstr "" + +#: aioseop_class.php:89 +msgid "" +"Check this and Search Page Titles and Tag Page Titles will have the first " +"letter of each word capitalized." +msgstr "" + +#: aioseop_class.php:90 +msgid "" +"Check this and Category Titles will have the first letter of each word " +"capitalized." +msgstr "" + +#: aioseop_class.php:92 +msgid "" +"This controls the format of the title tag for your Home Page.
The " +"following macros are supported:" +msgstr "" + +#: aioseop_class.php:93 aioseop_class.php:103 aioseop_class.php:113 +#: aioseop_class.php:125 aioseop_class.php:131 aioseop_class.php:136 +#: aioseop_class.php:144 aioseop_class.php:149 aioseop_class.php:154 +#: aioseop_class.php:158 aioseop_class.php:164 aioseop_class.php:1208 +#: aioseop_class.php:1251 +msgid "%blog_title% - Your blog title" +msgstr "" + +#: aioseop_class.php:94 aioseop_class.php:104 aioseop_class.php:114 +#: aioseop_class.php:126 aioseop_class.php:132 aioseop_class.php:137 +#: aioseop_class.php:145 aioseop_class.php:150 aioseop_class.php:155 +#: aioseop_class.php:159 aioseop_class.php:165 aioseop_class.php:1209 +#: aioseop_class.php:1252 +msgid "%blog_description% - Your blog description" +msgstr "" + +#: aioseop_class.php:95 aioseop_class.php:105 +msgid "%page_title% - The original title of the page" +msgstr "" + +#: aioseop_class.php:96 aioseop_class.php:106 +msgid "%page_author_login% - This page's author' login" +msgstr "" + +#: aioseop_class.php:97 aioseop_class.php:107 +msgid "%page_author_nicename% - This page's author' nicename" +msgstr "" + +#: aioseop_class.php:98 aioseop_class.php:108 +msgid "%page_author_firstname% - This page's author' first name (capitalized)" +msgstr "" + +#: aioseop_class.php:99 aioseop_class.php:109 +msgid "%page_author_lastname% - This page's author' last name (capitalized)" +msgstr "" + +#: aioseop_class.php:102 +msgid "" +"This controls the format of the title tag for Pages.
The following " +"macros are supported:" +msgstr "" + +#: aioseop_class.php:112 +msgid "" +"This controls the format of the title tag for Posts.
The following " +"macros are supported:" +msgstr "" + +#: aioseop_class.php:115 aioseop_class.php:161 +msgid "%post_title% - The original title of the post" +msgstr "" + +#: aioseop_class.php:116 +msgid "%category_title% - The (main) category of the post" +msgstr "" + +#: aioseop_class.php:117 +msgid "%category% - Alias for %category_title%" +msgstr "" + +#: aioseop_class.php:118 aioseop_class.php:1216 +msgid "%post_author_login% - This post's author' login" +msgstr "" + +#: aioseop_class.php:119 aioseop_class.php:1217 +msgid "%post_author_nicename% - This post's author' nicename" +msgstr "" + +#: aioseop_class.php:120 aioseop_class.php:1218 +msgid "%post_author_firstname% - This post's author' first name (capitalized)" +msgstr "" + +#: aioseop_class.php:121 aioseop_class.php:1219 +msgid "%post_author_lastname% - This post's author' last name (capitalized)" +msgstr "" + +#: aioseop_class.php:124 +msgid "" +"This controls the format of the title tag for Category Archives.
The " +"following macros are supported:" +msgstr "" + +#: aioseop_class.php:127 +msgid "%category_title% - The original title of the category" +msgstr "" + +#: aioseop_class.php:128 +msgid "%category_description% - The description of the category" +msgstr "" + +#: aioseop_class.php:130 +msgid "" +"This controls the format of the title tag for Custom Post Archives.
The " +"following macros are supported:" +msgstr "" + +#: aioseop_class.php:133 +msgid "%archive_title - The original archive title given by wordpress" +msgstr "" + +#: aioseop_class.php:135 +msgid "" +"This controls the format of the title tag for Date Archives.
The " +"following macros are supported:" +msgstr "" + +#: aioseop_class.php:138 +msgid "" +"%date% - The original archive title given by wordpress, e.g. \"2007\" or " +"\"2007 August\"" +msgstr "" + +#: aioseop_class.php:139 +msgid "%day% - The original archive day given by wordpress, e.g. \"17\"" +msgstr "" + +#: aioseop_class.php:140 +msgid "" +"%month% - The original archive month given by wordpress, e.g. \"August\"" +msgstr "" + +#: aioseop_class.php:141 +msgid "%year% - The original archive year given by wordpress, e.g. \"2007\"" +msgstr "" + +#: aioseop_class.php:143 +msgid "" +"This controls the format of the title tag for Author Archives.
The " +"following macros are supported:" +msgstr "" + +#: aioseop_class.php:146 +msgid "" +"%author% - The original archive title given by wordpress, e.g. \"Steve\" or " +"\"John Smith\"" +msgstr "" + +#: aioseop_class.php:148 +msgid "" +"This controls the format of the title tag for Tag Archives.
The " +"following macros are supported:" +msgstr "" + +#: aioseop_class.php:151 +msgid "%tag% - The name of the tag" +msgstr "" + +#: aioseop_class.php:153 +msgid "" +"This controls the format of the title tag for the Search page.
The " +"following macros are supported:" +msgstr "" + +#: aioseop_class.php:156 +msgid "%search% - What was searched for" +msgstr "" + +#: aioseop_class.php:157 +msgid "" +"This controls the format of Meta Descriptions.The following macros are " +"supported:" +msgstr "" + +#: aioseop_class.php:160 +msgid "" +"%description% - The original description as determined by the plugin, e.g. " +"the excerpt if one is set or an auto-generated one if that option is set" +msgstr "" + +#: aioseop_class.php:162 +msgid "%wp_title% - The original wordpress title, e.g. post_title for posts" +msgstr "" + +#: aioseop_class.php:163 +msgid "" +"This controls the format of the title tag for the 404 page.
The " +"following macros are supported:" +msgstr "" + +#: aioseop_class.php:166 +msgid "" +"%request_url% - The original URL path, like \"/url-that-does-not-exist/\"" +msgstr "" + +#: aioseop_class.php:167 +msgid "" +"%request_words% - The URL path in human readable form, like \"Url That Does " +"Not Exist\"" +msgstr "" + +#: aioseop_class.php:168 +msgid "%404_title% - Additional 404 title input\"" +msgstr "" + +#: aioseop_class.php:169 +msgid "" +"This string gets appended/prepended to titles of paged index pages (like " +"home or archive pages)." +msgstr "" + +#: aioseop_class.php:170 aioseop_class.php:1207 aioseop_class.php:1250 +msgid "The following macros are supported:" +msgstr "" + +#: aioseop_class.php:171 +msgid "%page% - The page number" +msgstr "" + +#: aioseop_class.php:172 +msgid "" +"Check this if you want to use All in One SEO Pack with any Custom Post Types " +"on this site." +msgstr "" + +#: aioseop_class.php:173 +msgid "" +"This will show or hide the advanced options for SEO for Custom Post Types." +msgstr "" + +#: aioseop_class.php:174 +msgid "" +"Use these checkboxes to select which Post Types you want to use All in One " +"SEO Pack with." +msgstr "" + +#: aioseop_class.php:175 +msgid "" +"Use these checkboxes to select which Taxonomies you want to use All in One " +"SEO Pack with." +msgstr "" + +#: aioseop_class.php:176 +msgid "This allows you to set the title tags for each Custom Post Type." +msgstr "" + +#: aioseop_class.php:177 +msgid "" +"This lets you select which screens display the SEO Title, SEO Keywords and " +"SEO Description columns." +msgstr "" + +#: aioseop_class.php:178 +msgid "" +"Check this to add All in One SEO Pack to the Admin Bar for easy access to " +"your SEO settings." +msgstr "" + +#: aioseop_class.php:179 +msgid "" +"Check this to move the All in One SEO Pack menu item to the top of your " +"WordPress Dashboard menu." +msgstr "" + +#: aioseop_class.php:180 +msgid "" +"Enter your verification code here to verify your site with Google Webmaster " +"Tools.
Click here for documentation on this " +"setting" +msgstr "" + +#: aioseop_class.php:181 +msgid "" +"Enter your verification code here to verify your site with Bing Webmaster " +"Tools.
Click here for documentation on this setting" +msgstr "" + +#: aioseop_class.php:182 +msgid "" +"Enter your verification code here to verify your site with Pinterest.
Click here for documentation on this setting" +msgstr "" + +#: aioseop_class.php:183 +msgid "" +"Enter your Google+ Profile URL here to add the rel=“author” tag to your site " +"for Google authorship. It is recommended that the URL you enter here should " +"be your personal Google+ profile. Use the Advanced Authorship Options below " +"if you want greater control over the use of authorship." +msgstr "" + +#: aioseop_class.php:184 +msgid "" +"Check this to remove the Google Plus field from the user profile screen." +msgstr "" + +#: aioseop_class.php:185 +msgid "" +"Enable this to display advanced options for controlling Google Plus " +"authorship information on your website." +msgstr "" + +#: aioseop_class.php:186 +msgid "" +"This option allows you to control which types of pages you want to display " +"rel=\"author\" on for Google authorship. The options include the Front Page " +"(the homepage of your site), Posts, Pages, and any Custom Post Types. The " +"Everywhere Else option includes 404, search, categories, tags, custom " +"taxonomies, date archives, author archives and any other page template." +msgstr "" + +#: aioseop_class.php:187 +msgid "" +"This option allows you to control whether rel=\"publisher\" is displayed on " +"the homepage of your site. Google recommends using this if the site is a " +"business website." +msgstr "" + +#: aioseop_class.php:188 +msgid "" +"The Google+ profile you enter here will appear on your homepage only as the " +"rel=\"publisher\" tag. It is recommended that the URL you enter here should " +"be the Google+ profile for your business." +msgstr "" + +#: aioseop_class.php:189 +msgid "" +"Add markup to display the Google Sitelinks Search Box next to your search " +"results in Google." +msgstr "" + +#: aioseop_class.php:190 +msgid "Add markup to tell Google the preferred name for your website." +msgstr "" + +#: aioseop_class.php:191 +msgid "" +"Press the connect button to connect with Google Analytics; or if already " +"connected, press the disconnect button to disable and remove any stored " +"analytics credentials." +msgstr "" + +#: aioseop_class.php:192 +msgid "" +"Enter your Google Analytics ID here to track visitor behavior on your site " +"using Google Analytics." +msgstr "" + +#: aioseop_class.php:193 +msgid "Use the new Universal Analytics tracking code for Google Analytics." +msgstr "" + +#: aioseop_class.php:194 +msgid "Check to use advanced Google Analytics options." +msgstr "" + +#: aioseop_class.php:195 +msgid "Enter your domain name without the http:// to set your cookie domain." +msgstr "" + +#: aioseop_class.php:196 +msgid "Use this option to enable tracking of multiple or additional domains." +msgstr "" + +#: aioseop_class.php:197 +msgid "" +"Add a list of additional domains to track here. Enter one domain name per " +"line without the http://." +msgstr "" + +#: aioseop_class.php:198 +msgid "This enables support for IP Anonymization in Google Analytics." +msgstr "" + +#: aioseop_class.php:199 +msgid "" +"This enables support for the Display Advertiser Features in Google Analytics." +msgstr "" + +#: aioseop_class.php:200 +msgid "Exclude logged-in users from Google Analytics tracking by role." +msgstr "" + +#: aioseop_class.php:201 +msgid "Check this if you want to track outbound links with Google Analytics." +msgstr "" + +#: aioseop_class.php:202 +msgid "" +"This enables support for the Enhanced Link Attribution in Google Analytics." +msgstr "" + +#: aioseop_class.php:203 +msgid "This enables support for the Enhanced Ecommerce in Google Analytics." +msgstr "" + +#: aioseop_class.php:204 +msgid "Set the default NOINDEX setting for each Post Type." +msgstr "" + +#: aioseop_class.php:205 +msgid "Set the default NOFOLLOW setting for each Post Type." +msgstr "" + +#: aioseop_class.php:206 +msgid "" +"Check this to ask search engines not to index Category Archives. Useful for " +"avoiding duplicate content." +msgstr "" + +#: aioseop_class.php:207 +msgid "" +"Check this to ask search engines not to index Date Archives. Useful for " +"avoiding duplicate content." +msgstr "" + +#: aioseop_class.php:208 +msgid "" +"Check this to ask search engines not to index Author Archives. Useful for " +"avoiding duplicate content." +msgstr "" + +#: aioseop_class.php:209 +msgid "" +"Check this to ask search engines not to index Tag Archives. Useful for " +"avoiding duplicate content." +msgstr "" + +#: aioseop_class.php:210 +msgid "" +"Check this to ask search engines not to index the Search page. Useful for " +"avoiding duplicate content." +msgstr "" + +#: aioseop_class.php:211 +msgid "Check this to ask search engines not to index the 404 page." +msgstr "" + +#: aioseop_class.php:212 +msgid "" +"Check this to ask search engines not to index custom Taxonomy archive pages. " +"Useful for avoiding duplicate content." +msgstr "" + +#: aioseop_class.php:213 +msgid "" +"Check this to ask search engines not to index paginated pages/posts. Useful " +"for avoiding duplicate content." +msgstr "" + +#: aioseop_class.php:214 +msgid "" +"Check this to ask search engines not to follow links from paginated pages/" +"posts. Useful for avoiding duplicate content." +msgstr "" + +#: aioseop_class.php:215 +msgid "" +"Check this box to ask search engines not to use descriptions from the Open " +"Directory Project for your entire site." +msgstr "" + +#: aioseop_class.php:216 +msgid "Set the default noodp setting for each Post Type." +msgstr "" + +#: aioseop_class.php:217 +msgid "" +"Check this box to ask Yahoo! not to use descriptions from the Yahoo! " +"directory for your entire site." +msgstr "" + +#: aioseop_class.php:218 +msgid "Set the default noydir setting for each Post Type." +msgstr "" + +#: aioseop_class.php:219 +msgid "" +"Check this and your Meta Descriptions won't be generated from the excerpt." +msgstr "" + +#: aioseop_class.php:220 +msgid "" +"Check this and your Meta Descriptions will be auto-generated from your " +"excerpt or content." +msgstr "" + +#: aioseop_class.php:221 +msgid "" +"Check this and shortcodes will get executed for descriptions auto-generated " +"from content." +msgstr "" + +#: aioseop_class.php:222 +msgid "" +"Check this and your Meta Descriptions will be removed from page 2 or later " +"of paginated content." +msgstr "" + +#: aioseop_class.php:223 +msgid "" +"Check this to prevent your Description from being truncated regardless of " +"its length." +msgstr "" + +#: aioseop_class.php:224 +msgid "" +"Check this to support Schema.org markup, i.e., itemprop on supported " +"metadata." +msgstr "" + +#: aioseop_class.php:225 +msgid "" +"Check this to unprotect internal postmeta fields for use with XMLRPC. If you " +"don't know what that is, leave it unchecked." +msgstr "" + +#: aioseop_class.php:226 +msgid "" +"Enter a comma separated list of pages here to be excluded by All in One SEO " +"Pack. This is helpful when using plugins which generate their own non-" +"WordPress dynamic pages. Ex: /forum/, /contact/ For instance, if " +"you want to exclude the virtual pages generated by a forum plugin, all you " +"have to do is add forum or /forum or /forum/ or and any URL with the word " +"\"forum\" in it, such as http://mysite.com/forum or http://mysite.com/forum/" +"someforumpage here and it will be excluded from All in One SEO Pack." +msgstr "" + +#: aioseop_class.php:227 +msgid "" +"What you enter here will be copied verbatim to the header of all Posts. You " +"can enter whatever additional headers you want here, even references to " +"stylesheets." +msgstr "" + +#: aioseop_class.php:228 +msgid "" +"What you enter here will be copied verbatim to the header of all Pages. You " +"can enter whatever additional headers you want here, even references to " +"stylesheets." +msgstr "" + +#: aioseop_class.php:229 +msgid "" +"What you enter here will be copied verbatim to the header of the front page " +"if you have set a static page in Settings, Reading, Front Page Displays. You " +"can enter whatever additional headers you want here, even references to " +"stylesheets. This will fall back to using Additional Page Headers if you " +"have them set and nothing is entered here." +msgstr "" + +#: aioseop_class.php:230 +msgid "" +"What you enter here will be copied verbatim to the header of the home page " +"if you have Front page displays your latest posts selected in Settings, " +"Reading.  It will also be copied verbatim to the header on the Posts page if " +"you have one set in Settings, Reading. You can enter whatever additional " +"headers you want here, even references to stylesheets." +msgstr "" + +#: aioseop_class.php:305 +msgid "A preview of what this page might look like in search engine results." +msgstr "" + +#: aioseop_class.php:306 +msgid "A custom title that shows up in the title tag for this page." +msgstr "" + +#: aioseop_class.php:307 +msgid "" +"The META description for this page. This will override any autogenerated " +"descriptions." +msgstr "" + +#: aioseop_class.php:308 +msgid "" +"A comma separated list of your most important keywords for this page that " +"will be written as META keywords." +msgstr "" + +#: aioseop_class.php:309 +msgid "Override the canonical URLs for this post." +msgstr "" + +#: aioseop_class.php:310 +msgid "Check this box to ask search engines not to index this page." +msgstr "" + +#: aioseop_class.php:311 +msgid "" +"Check this box to ask search engines not to follow links from this page." +msgstr "" + +#: aioseop_class.php:312 +msgid "" +"Check this box to ask search engines not to use descriptions from the Open " +"Directory Project for this page." +msgstr "" + +#: aioseop_class.php:313 +msgid "" +"Check this box to ask Yahoo! not to use descriptions from the Yahoo! " +"directory for this page." +msgstr "" + +#: aioseop_class.php:314 +msgid "Set the title attribute for menu links." +msgstr "" + +#: aioseop_class.php:315 +msgid "Set the label for this page menu item." +msgstr "" + +#: aioseop_class.php:316 +msgid "Don't display this page in the sitemap." +msgstr "" + +#: aioseop_class.php:317 +msgid "Disable SEO on this page." +msgstr "" + +#: aioseop_class.php:318 +msgid "Disable Google Analytics on this page." +msgstr "" + +#: aioseop_class.php:323 +msgid "License Key:" +msgstr "" + +#: aioseop_class.php:326 +msgid "I enjoy this plugin and have made a donation:" +msgstr "" + +#: aioseop_class.php:328 +msgid "Home Title:" +msgstr "" + +#: aioseop_class.php:333 +msgid "Home Description:" +msgstr "" + +#: aioseop_class.php:338 +msgid "Use Keywords:" +msgstr "" + +#: aioseop_class.php:341 aioseop_class.php:352 aioseop_class.php:379 +#: aioseop_class.php:387 aioseop_class.php:394 aioseop_class.php:453 +#: aioseop_class.php:469 aioseop_class.php:535 aioseop_class.php:546 +#: aioseop_class.php:566 modules/aioseop_performance.php:45 +msgid "Enabled" +msgstr "" + +#: aioseop_class.php:342 aioseop_class.php:353 aioseop_class.php:380 +#: aioseop_class.php:388 aioseop_class.php:395 aioseop_class.php:454 +#: aioseop_class.php:470 aioseop_class.php:536 aioseop_class.php:547 +#: aioseop_class.php:567 modules/aioseop_performance.php:46 +msgid "Disabled" +msgstr "" + +#: aioseop_class.php:345 +msgid "Home Keywords (comma separated):" +msgstr "" + +#: aioseop_class.php:349 +msgid "Use Static Front Page Instead" +msgstr "" + +#: aioseop_class.php:356 +msgid "Canonical URLs:" +msgstr "" + +#: aioseop_class.php:359 +msgid "No Pagination for Canonical URLs:" +msgstr "" + +#: aioseop_class.php:363 +msgid "Enable Custom Canonical URLs:" +msgstr "" + +#: aioseop_class.php:367 +msgid "Set Protocol For Canonical URLs:" +msgstr "" + +#: aioseop_class.php:370 +msgid "Auto" +msgstr "" + +#: aioseop_class.php:371 +msgid "HTTP" +msgstr "" + +#: aioseop_class.php:372 +msgid "HTTPS" +msgstr "" + +#: aioseop_class.php:376 +msgid "Rewrite Titles:" +msgstr "" + +#: aioseop_class.php:383 modules/aioseop_performance.php:43 +msgid "Force Rewrites:" +msgstr "" + +#: aioseop_class.php:391 +msgid "Use Original Title:" +msgstr "" + +#: aioseop_class.php:398 +msgid "Capitalize Titles:" +msgstr "" + +#: aioseop_class.php:400 +msgid "Capitalize Category Titles:" +msgstr "" + +#: aioseop_class.php:402 +msgid "Home Page Title Format:" +msgstr "" + +#: aioseop_class.php:406 +msgid "Page Title Format:" +msgstr "" + +#: aioseop_class.php:410 +msgid "Post Title Format:" +msgstr "" + +#: aioseop_class.php:414 +msgid "Category Title Format:" +msgstr "" + +#: aioseop_class.php:418 +msgid "Archive Title Format:" +msgstr "" + +#: aioseop_class.php:422 +msgid "Date Archive Title Format:" +msgstr "" + +#: aioseop_class.php:426 +msgid "Author Archive Title Format:" +msgstr "" + +#: aioseop_class.php:430 +msgid "Tag Title Format:" +msgstr "" + +#: aioseop_class.php:434 +msgid "Search Title Format:" +msgstr "" + +#: aioseop_class.php:438 +msgid "Description Format" +msgstr "" + +#: aioseop_class.php:442 +msgid "404 Title Format:" +msgstr "" + +#: aioseop_class.php:446 +msgid "Paged Format:" +msgstr "" + +#: aioseop_class.php:450 +msgid "SEO for Custom Post Types:" +msgstr "" + +#: aioseop_class.php:457 +msgid "SEO on only these post types:" +msgstr "" + +#: aioseop_class.php:462 +msgid "SEO on only these taxonomies:" +msgstr "" + +#: aioseop_class.php:467 +msgid "Enable Advanced Options:" +msgstr "" + +#: aioseop_class.php:475 +msgid "Default to NOINDEX:" +msgstr "" + +#: aioseop_class.php:479 +msgid "Default to NOFOLLOW:" +msgstr "" + +#: aioseop_class.php:483 +msgid "Default to NOODP:" +msgstr "" + +#: aioseop_class.php:487 +msgid "Default to NOYDIR:" +msgstr "" + +#: aioseop_class.php:491 +msgid "Custom titles:" +msgstr "" + +#: aioseop_class.php:496 +msgid "Show Column Labels for Custom Post Types:" +msgstr "" + +#: aioseop_class.php:500 +msgid "Display Menu In Admin Bar:" +msgstr "" + +#: aioseop_class.php:503 +msgid "Display Menu At The Top:" +msgstr "" + +#: aioseop_class.php:506 +msgid "Google Webmaster Tools:" +msgstr "" + +#: aioseop_class.php:509 +msgid "Bing Webmaster Center:" +msgstr "" + +#: aioseop_class.php:512 +msgid "Pinterest Site Verification:" +msgstr "" + +#: aioseop_class.php:515 +msgid "Google Plus Default Profile:" +msgstr "" + +#: aioseop_class.php:518 +msgid "Disable Google Plus Profile:" +msgstr "" + +#: aioseop_class.php:521 +msgid "Display Sitelinks Search Box:" +msgstr "" + +#: aioseop_class.php:524 +msgid "Set Preferred Site Name:" +msgstr "" + +#: aioseop_class.php:527 +msgid "Specify A Preferred Name:" +msgstr "" + +#: aioseop_class.php:533 +msgid "Advanced Authorship Options:" +msgstr "" + +#: aioseop_class.php:540 +msgid "Display Google Authorship:" +msgstr "" + +#: aioseop_class.php:544 +msgid "Display Publisher Meta on Front Page:" +msgstr "" + +#: aioseop_class.php:551 +msgid "Specify Publisher URL:" +msgstr "" + +#: aioseop_class.php:556 +msgid "Google Analytics ID:" +msgstr "" + +#: aioseop_class.php:559 +msgid "Use Universal Analytics:" +msgstr "" + +#: aioseop_class.php:563 +msgid "Advanced Analytics Options:" +msgstr "" + +#: aioseop_class.php:570 +msgid "Tracking Domain:" +msgstr "" + +#: aioseop_class.php:574 +msgid "Track Multiple Domains:" +msgstr "" + +#: aioseop_class.php:578 +msgid "Additional Domains:" +msgstr "" + +#: aioseop_class.php:582 +msgid "Anonymize IP Addresses:" +msgstr "" + +#: aioseop_class.php:586 +msgid "Display Advertiser Tracking:" +msgstr "" + +#: aioseop_class.php:590 +msgid "Exclude Users From Tracking:" +msgstr "" + +#: aioseop_class.php:594 +msgid "Track Outbound Links:" +msgstr "" + +#: aioseop_class.php:598 +msgid "Enhanced Link Attribution:" +msgstr "" + +#: aioseop_class.php:602 +msgid "Enhanced Ecommerce:" +msgstr "" + +#: aioseop_class.php:606 +msgid "Use Categories for META keywords:" +msgstr "" + +#: aioseop_class.php:610 +msgid "Use Tags for META keywords:" +msgstr "" + +#: aioseop_class.php:614 +msgid "Dynamically Generate Keywords for Posts Page/Archives:" +msgstr "" + +#: aioseop_class.php:618 +msgid "Use noindex for Categories:" +msgstr "" + +#: aioseop_class.php:621 +msgid "Use noindex for Date Archives:" +msgstr "" + +#: aioseop_class.php:624 +msgid "Use noindex for Author Archives:" +msgstr "" + +#: aioseop_class.php:627 +msgid "Use noindex for Tag Archives:" +msgstr "" + +#: aioseop_class.php:630 +msgid "Use noindex for the Search page:" +msgstr "" + +#: aioseop_class.php:633 +msgid "Use noindex for the 404 page:" +msgstr "" + +#: aioseop_class.php:636 +msgid "Use noindex for Taxonomy Archives:" +msgstr "" + +#: aioseop_class.php:641 +msgid "Use noindex for paginated pages/posts:" +msgstr "" + +#: aioseop_class.php:644 +msgid "Use nofollow for paginated pages/posts:" +msgstr "" + +#: aioseop_class.php:647 +msgid "Exclude site from the Open Directory Project:" +msgstr "" + +#: aioseop_class.php:650 +msgid "Exclude site from Yahoo! Directory:" +msgstr "" + +#: aioseop_class.php:653 +msgid "Avoid Using The Excerpt In Descriptions:" +msgstr "" + +#: aioseop_class.php:656 +msgid "Autogenerate Descriptions:" +msgstr "" + +#: aioseop_class.php:659 +msgid "Run Shortcodes In Autogenerated Descriptions:" +msgstr "" + +#: aioseop_class.php:663 +msgid "Remove Descriptions For Paginated Pages:" +msgstr "" + +#: aioseop_class.php:666 +msgid "Never Shorten Long Descriptions:" +msgstr "" + +#: aioseop_class.php:669 +msgid "Use Schema.org Markup" +msgstr "" + +#: aioseop_class.php:672 +msgid "Unprotect Post Meta Fields:" +msgstr "" + +#: aioseop_class.php:675 +msgid "Exclude Pages:" +msgstr "" + +#: aioseop_class.php:678 +msgid "Additional Post Headers:" +msgstr "" + +#: aioseop_class.php:681 +msgid "Additional Page Headers:" +msgstr "" + +#: aioseop_class.php:684 +msgid "Additional Front Page Headers:" +msgstr "" + +#: aioseop_class.php:687 +msgid "Additional Blog Page Headers:" +msgstr "" + +#: aioseop_class.php:690 +msgid "Log important events:" +msgstr "" + +#: aioseop_class.php:710 +msgid "Upgrade to All in One SEO Pack Pro Version" +msgstr "" + +#: aioseop_class.php:714 all_in_one_seo_pack.php:204 +msgid "Support Forum" +msgstr "" + +#: aioseop_class.php:716 +msgid "Preview Snippet" +msgstr "" + +#: aioseop_class.php:729 modules/aioseop_opengraph.php:210 +msgid "Title" +msgstr "" + +#: aioseop_class.php:730 modules/aioseop_opengraph.php:212 +msgid "Description" +msgstr "" + +#: aioseop_class.php:732 +msgid "Keywords (comma separated)" +msgstr "" + +#: aioseop_class.php:733 +msgid "Custom Canonical URL" +msgstr "" + +#: aioseop_class.php:734 +msgid "Robots Meta NOINDEX" +msgstr "" + +#: aioseop_class.php:735 +msgid "Robots Meta NOFOLLOW" +msgstr "" + +#: aioseop_class.php:736 +msgid "Robots Meta NOODP" +msgstr "" + +#: aioseop_class.php:737 +msgid "Robots Meta NOYDIR" +msgstr "" + +#: aioseop_class.php:738 +msgid "Title Attribute" +msgstr "" + +#: aioseop_class.php:739 +msgid "Menu Label" +msgstr "" + +#: aioseop_class.php:740 +msgid "Exclude From Sitemap" +msgstr "" + +#: aioseop_class.php:741 +msgid "Disable on this page/post" +msgstr "" + +#: aioseop_class.php:742 +msgid "Disable Google Analytics" +msgstr "" + +#: aioseop_class.php:757 modules/aioseop_opengraph.php:272 +msgid "Home Page Settings" +msgstr "" + +#: aioseop_class.php:762 +msgid "Keyword Settings" +msgstr "" + +#: aioseop_class.php:767 +msgid "Title Settings" +msgstr "" + +#: aioseop_class.php:773 +msgid "Custom Post Type Settings" +msgstr "" + +#: aioseop_class.php:778 +msgid "Display Settings" +msgstr "" + +#: aioseop_class.php:783 +msgid "Webmaster Verification" +msgstr "" + +#: aioseop_class.php:788 +msgid "Google Settings" +msgstr "" + +#: aioseop_class.php:795 +msgid "Noindex Settings" +msgstr "" + +#: aioseop_class.php:800 +msgid "Advanced Settings" +msgstr "" + +#: aioseop_class.php:1194 +msgid "Front Page" +msgstr "" + +#: aioseop_class.php:1194 +msgid "Everywhere Else" +msgstr "" + +#: aioseop_class.php:1202 +msgid "Title Format:" +msgstr "" + +#: aioseop_class.php:1210 +msgid "%post_title% - The original title of the post." +msgstr "" + +#: aioseop_class.php:1214 +msgid "%%tax_%s%% - This post's associated %s taxonomy title" +msgstr "" + +#: aioseop_class.php:1245 +msgid "Taxonomy Title Format:" +msgstr "" + +#: aioseop_class.php:1253 +msgid "%taxonomy_title% - The original title of the taxonomy" +msgstr "" + +#: aioseop_class.php:1254 +msgid "%taxonomy_description% - The description of the taxonomy" +msgstr "" + +#: aioseop_class.php:1276 aioseop_class.php:1293 +msgid "Welcome to Version %s!" +msgstr "" + +#: aioseop_class.php:1277 +msgid "" +"Thank you for running the latest and greatest All in One SEO Pack Pro ever! " +"Please review your settings, as we're always adding new features for you!" +msgstr "" + +#: aioseop_class.php:1283 aioseop_class.php:1300 +msgid "Review Your Settings" +msgstr "" + +#: aioseop_class.php:1284 +msgid "" +"New in 2.3: improved support for taxonomies and a Video Sitemap module; " +"enable modules from our feature manager! And please review your settings, we " +"have added some new ones!" +msgstr "" + +#: aioseop_class.php:1294 +msgid "" +"Thank you for running the latest and greatest All in One SEO Pack ever! " +"Please review your settings, as we're always adding new features for you!" +msgstr "" + +#: aioseop_class.php:1301 +msgid "" +"Thank you for running the latest and greatest All in One SEO Pack ever! New " +"since 2.2: Control who accesses your site with the new Robots.txt Editor and " +"File Editor modules! Enable them from the Feature Manager. Remember to " +"review your settings, we have added some new ones!" +msgstr "" + +#: aioseop_class.php:1321 +msgid "Reset General Settings to Defaults" +msgstr "" + +#: aioseop_class.php:1322 +msgid "Reset ALL Settings to Defaults" +msgstr "" + +#: aioseop_class.php:1430 +msgid "Default - noindex" +msgstr "" + +#: aioseop_class.php:1430 +msgid "index" +msgstr "" + +#: aioseop_class.php:1430 +msgid "noindex" +msgstr "" + +#: aioseop_class.php:1434 +msgid "Default - nofollow" +msgstr "" + +#: aioseop_class.php:1434 +msgid "follow" +msgstr "" + +#: aioseop_class.php:1434 +msgid "nofollow" +msgstr "" + +#: aioseop_class.php:1438 +msgid "Default - noodp" +msgstr "" + +#: aioseop_class.php:1438 +msgid "odp" +msgstr "" + +#: aioseop_class.php:1438 +msgid "noodp" +msgstr "" + +#: aioseop_class.php:1442 +msgid "Default - noydir" +msgstr "" + +#: aioseop_class.php:1442 +msgid "ydir" +msgstr "" + +#: aioseop_class.php:1442 +msgid "noydir" +msgstr "" + +#: aioseop_class.php:1508 +msgid "by %s of %s." +msgstr "" + +#: aioseop_class.php:1519 +msgid "Reset Dismissed Notices" +msgstr "" + +#: aioseop_class.php:1524 +msgid "Pro Version" +msgstr "" + +#: aioseop_class.php:1526 +msgid "UPGRADE TO PRO VERSION" +msgstr "" + +#: aioseop_class.php:1548 all_in_one_seo_pack.php:235 +msgid "Donate" +msgstr "" + +#: aioseop_class.php:1550 +msgid "Donate with Paypal" +msgstr "" + +#: aioseop_class.php:1552 +msgid "My Amazon Wish List" +msgstr "" + +#: aioseop_class.php:1555 +msgid "Follow us on Facebook" +msgstr "" + +#: aioseop_class.php:1556 +msgid "Follow us on Twitter" +msgstr "" + +#: aioseop_class.php:1566 +msgid "Join our mailing list for tips, tricks, and WordPress secrets." +msgstr "" + +#: aioseop_class.php:1567 +msgid "" +"Sign up today and receive a free copy of the e-book 5 SEO Tips for WordPress " +"($39 value)." +msgstr "" + +#: aioseop_class.php:1576 +msgid "Read the All in One SEO Pack user guide" +msgstr "" + +#: aioseop_class.php:1577 +msgid "All in One SEO Pro Plugin Support Forum" +msgstr "" + +#: aioseop_class.php:1578 +msgid "Access our Premium Support Forums" +msgstr "" + +#: aioseop_class.php:1579 +msgid "All in One SEO Pro Plugin Changelog" +msgstr "" + +#: aioseop_class.php:1580 +msgid "View the Changelog" +msgstr "" + +#: aioseop_class.php:1581 +msgid "Watch video tutorials" +msgstr "" + +#: aioseop_class.php:1582 +msgid "Getting started? Read the Beginners Guide" +msgstr "" + +#: aioseop_class.php:1879 +msgid "Warning: You're blocking access to search engines." +msgstr "" + +#: aioseop_class.php:1880 +msgid "" +"You can %s click here%s to go to your reading settings and toggle your blog " +"visibility." +msgstr "" + +#: aioseop_class.php:2039 +msgid "" +"Debug Warning: All in One SEO Pack meta data was included again from %s " +"filter. Called %s times!" +msgstr "" + +#: aioseop_class.php:2060 +msgid "Debug String" +msgstr "" + +#: aioseop_class.php:2302 +msgid "Disconnect From Google Analytics" +msgstr "" + +#: aioseop_class.php:2303 +msgid "Remove Stored Credentials" +msgstr "" + +#: aioseop_class.php:2310 +msgid "Connect With Google Analytics" +msgstr "" + +#: aioseop_class.php:2325 aioseop_class.php:2343 aioseop_class.php:2375 +msgid "Google Analytics" +msgstr "" + +#: aioseop_class.php:3637 +msgid "SEO" +msgstr "" + +#: aioseop_class.php:3644 +msgid "Edit SEO" +msgstr "" + +#: aioseop_class.php:3651 +msgid "Upgrade To Pro" +msgstr "" + +#: aioseop_class.php:3709 +msgid "All in One SEO" +msgstr "" + +#: aioseop_class.php:3753 +msgid "Thank you!" +msgstr "" + +#: aioseop_class.php:3754 +msgid "" +"Thank you for your donation, it helps keep this plugin free and actively " +"developed!" +msgstr "" + +#: aioseop_class.php:3793 +msgid "Join Our Mailing List" +msgstr "" + +#: aioseop_class.php:3795 +msgid "About" +msgstr "" + +#: aioseop_class.php:3799 +msgid "Support" +msgstr "" + +#: aioseop_class.php:3799 +msgid "Version" +msgstr "" + +#: aioseop_class.php:3822 aioseop_class.php:3834 aioseop_module_class.php:1448 +#: aioseop_module_class.php:1638 aioseop_module_class.php:1833 +msgid "Help" +msgstr "" + +#: aioseop_class.php:3846 +msgid "Main Settings" +msgstr "" + +#: aioseop_functions.php:146 +msgid "SEO Title" +msgstr "" + +#: aioseop_functions.php:147 +msgid "SEO Description" +msgstr "" + +#: aioseop_functions.php:149 +msgid "SEO Keywords" +msgstr "" + +#: aioseop_functions.php:207 aioseop_functions.php:286 +#: aioseop_functions.php:564 +msgid "Edit" +msgstr "" + +#: aioseop_functions.php:207 +msgid "Post" +msgstr "" + +#: aioseop_functions.php:207 +msgid "Save" +msgstr "" + +#: aioseop_functions.php:207 +msgid "Cancel" +msgstr "" + +#: aioseop_functions.php:208 +msgid "Please wait..." +msgstr "" + +#: aioseop_functions.php:208 +msgid "Slug may not be empty!" +msgstr "" + +#: aioseop_functions.php:209 +msgid "Revisions" +msgstr "" + +#: aioseop_functions.php:209 +msgid "Insert time" +msgstr "" + +#: aioseop_functions.php:282 aioseop_functions.php:560 +#: modules/aioseop_performance.php:155 modules/aioseop_performance.php:157 +#: modules/aioseop_performance.php:159 modules/aioseop_performance.php:172 +msgid "No" +msgstr "" + +#: aioseop_functions.php:303 +msgid "Unauthorized access; try reloading the page." +msgstr "" + +#: aioseop_functions.php:377 +msgid "Row %s not found; no rows were deleted." +msgstr "" + +#: aioseop_functions.php:439 +msgid "Duplicate %s Meta" +msgstr "" + +#: aioseop_functions.php:441 +msgid "No duplicate meta tags found." +msgstr "" + +#: aioseop_functions.php:444 +msgid "What Does This Mean?" +msgstr "" + +#: aioseop_functions.php:445 +msgid "" +"All in One SEO Pack has detected that a plugin(s) or theme is also " +"outputting social meta tags on your site.  You can view this social meta in " +"the source code of your site (check your browser help for instructions on " +"how to view source code)." +msgstr "" + +#: aioseop_functions.php:446 +msgid "" +"You may prefer to use the social meta tags that are being output by the " +"other plugin(s) or theme.  If so, then you should deactivate this Social " +"Meta feature in All in One SEO Pack Feature Manager." +msgstr "" + +#: aioseop_functions.php:447 +msgid "" +"You should avoid duplicate social meta tags.  You can use these free tools " +"from Facebook, Google and Twitter to validate your social meta and check for " +"errors:" +msgstr "" + +#: aioseop_functions.php:452 +msgid "" +"Please refer to the document for each tool for help in using these to debug " +"your social meta." +msgstr "" + +#: aioseop_functions.php:675 +msgid "Google+" +msgstr "" + +#: aioseop_functions.php:680 +msgid "Twitter" +msgstr "" + +#: aioseop_functions.php:682 +msgid "Facebook" +msgstr "" + +#: aioseop_module_class.php:1210 +msgid "Click here for documentation on this setting" +msgstr "" + +#: aioseop_module_class.php:1585 +msgid " characters. Most search engines use a maximum of %s chars for the %s." +msgstr "" + +#: aioseop_module_class.php:1611 +msgid "Click for Help!" +msgstr "" + +#: aioseop_module_class.php:1756 modules/aioseop_sitemap.php:510 +msgid "" +"Security Check - If you receive this in error, log out and back in to " +"WordPress" +msgstr "" + +#: aioseop_module_class.php:1758 +msgid "Options Reset." +msgstr "" + +#: aioseop_module_class.php:1767 +msgid "All in One SEO Options Updated." +msgstr "" + +#: aioseop_module_class.php:1813 +msgid "Update Options" +msgstr "" + +#: all_in_one_seo_pack.php:50 +msgid "%s detected a conflict; please deactivate the plugin located in %s." +msgstr "" + +#: all_in_one_seo_pack.php:199 +msgid "SEO Settings" +msgstr "" + +#: all_in_one_seo_pack.php:209 +msgid "Documentation" +msgstr "" + +#: all_in_one_seo_pack.php:220 +msgid "Upgrade to Pro" +msgstr "" + +#: all_in_one_seo_pack.php:240 +msgid "Amazon Wishlist" +msgstr "" + +#: inc/commonstrings.php:8 modules/aioseop_feature_manager.php:42 +#: modules/aioseop_feature_manager.php:49 +msgid "Video Sitemap" +msgstr "" + +#: inc/commonstrings.php:9 +msgid "Show Only Posts With Videos" +msgstr "" + +#: inc/commonstrings.php:10 +msgid "Scan Posts For Videos" +msgstr "" + +#: inc/commonstrings.php:11 +msgid "Restrict Access to Video Sitemap" +msgstr "" + +#: inc/commonstrings.php:12 +msgid "" +"Press the Scan button to scan your posts for videos! Do this if video " +"content from a post or posts is not showing up in your sitemap." +msgstr "" + +#: inc/commonstrings.php:13 +msgid "" +"If checked, only posts that have videos in them will be displayed on the " +"sitemap." +msgstr "" + +#: inc/commonstrings.php:14 +msgid "" +"Enable this option to only allow access to your sitemap by site " +"administrators and major search engines." +msgstr "" + +#: inc/commonstrings.php:15 +msgid "" +"You do not have access to this page; try logging in as an administrator." +msgstr "" + +#: inc/commonstrings.php:16 +msgid "Scan" +msgstr "" + +#: inc/commonstrings.php:19 +msgid "Finished scanning posts" +msgstr "" + +#: inc/commonstrings.php:22 +msgid "Purchase one now" +msgstr "" + +#: inc/commonstrings.php:23 +msgid "License Key is not set yet or invalid. " +msgstr "" + +#: inc/commonstrings.php:24 +msgid " Need a license key?" +msgstr "" + +#: inc/commonstrings.php:25 +msgid "Notice: " +msgstr "" + +#: inc/commonstrings.php:26 +msgid "Manage Licenses" +msgstr "" + +#: modules/aioseop_bad_robots.php:11 modules/aioseop_feature_manager.php:29 +msgid "Bad Bot Blocker" +msgstr "" + +#: modules/aioseop_bad_robots.php:17 +msgid "Block requests from user agents that are known to misbehave with 503." +msgstr "" + +#: modules/aioseop_bad_robots.php:18 +msgid "Block Referral Spam using HTTP." +msgstr "" + +#: modules/aioseop_bad_robots.php:19 +msgid "Log and show recent requests from blocked bots." +msgstr "" + +#: modules/aioseop_bad_robots.php:20 +msgid "" +"Block bad robots via Apaache .htaccess rules. Warning: this will change your " +"web server configuration, make sure you are able to edit this file manually " +"as well." +msgstr "" + +#: modules/aioseop_bad_robots.php:21 +msgid "" +"Check this to edit the list of disallowed user agents for blocking bad bots." +msgstr "" + +#: modules/aioseop_bad_robots.php:22 +msgid "This is the list of disallowed user agents used for blocking bad bots." +msgstr "" + +#: modules/aioseop_bad_robots.php:23 +msgid "This is the list of disallowed referers used for blocking bad bots." +msgstr "" + +#: modules/aioseop_bad_robots.php:24 +msgid "" +"Shows log of most recent requests from blocked bots. Note: this will not " +"track any bots that were already blocked at the web server / .htaccess level." +msgstr "" + +#: modules/aioseop_bad_robots.php:28 +msgid "Block Bad Bots using HTTP" +msgstr "" + +#: modules/aioseop_bad_robots.php:29 +msgid "Block Referral Spam using HTTP" +msgstr "" + +#: modules/aioseop_bad_robots.php:30 +msgid "Track Blocked Bots" +msgstr "" + +#: modules/aioseop_bad_robots.php:31 +msgid "Block Bad Bots using .htaccess" +msgstr "" + +#: modules/aioseop_bad_robots.php:32 +msgid "Use Custom Blocklists" +msgstr "" + +#: modules/aioseop_bad_robots.php:33 +msgid "User Agent Blocklist" +msgstr "" + +#: modules/aioseop_bad_robots.php:34 +msgid "Referer Blocklist" +msgstr "" + +#: modules/aioseop_bad_robots.php:35 +msgid "Log Of Blocked Bots" +msgstr "" + +#: modules/aioseop_bad_robots.php:35 +msgid "No requests yet." +msgstr "" + +#: modules/aioseop_bad_robots.php:67 +msgid "Blocked bot with IP %s -- matched user agent %s found in blocklist." +msgstr "" + +#: modules/aioseop_bad_robots.php:73 +msgid "Blocked bot with IP %s -- matched referer %s found in blocklist." +msgstr "" + +#: modules/aioseop_bad_robots.php:82 modules/aioseop_bad_robots.php:115 +msgid "Updated .htaccess rules." +msgstr "" + +#: modules/aioseop_bad_robots.php:84 modules/aioseop_bad_robots.php:117 +msgid "Failed to update .htaccess rules!" +msgstr "" + +#: modules/aioseop_bad_robots.php:95 +msgid "Apache module %s is required!" +msgstr "" + +#: modules/aioseop_bad_robots.php:120 +msgid "No rules to update!" +msgstr "" + +#: modules/aioseop_feature_manager.php:14 +msgid "Feature Manager" +msgstr "" + +#: modules/aioseop_feature_manager.php:19 +msgid "XML Sitemaps" +msgstr "" + +#: modules/aioseop_feature_manager.php:20 +msgid "" +"Create and manage your XML Sitemaps using this feature and submit your XML " +"Sitemap to Google, Bing/Yahoo and Ask.com." +msgstr "" + +#: modules/aioseop_feature_manager.php:21 modules/aioseop_opengraph.php:14 +msgid "Social Meta" +msgstr "" + +#: modules/aioseop_feature_manager.php:22 +msgid "" +"Activate this feature to add Social Meta data to your site to deliver closer " +"integration between your website/blog and Facebook, Twitter, and Google+." +msgstr "" + +#: modules/aioseop_feature_manager.php:23 modules/aioseop_robots.php:12 +#: modules/aioseop_robots.php:91 +msgid "Robots.txt" +msgstr "" + +#: modules/aioseop_feature_manager.php:24 +msgid "" +"Generate and validate your robots.txt file to guide search engines through " +"your site." +msgstr "" + +#: modules/aioseop_feature_manager.php:25 modules/aioseop_file_editor.php:12 +msgid "File Editor" +msgstr "" + +#: modules/aioseop_feature_manager.php:26 +msgid "" +"Edit your robots.txt file and your .htaccess file to fine-tune your site." +msgstr "" + +#: modules/aioseop_feature_manager.php:27 +#: modules/aioseop_importer_exporter.php:12 +msgid "Importer & Exporter" +msgstr "" + +#: modules/aioseop_feature_manager.php:28 +msgid "Exports and imports your All in One SEO Pack plugin settings." +msgstr "" + +#: modules/aioseop_feature_manager.php:30 +msgid "Stop badly behaving bots from slowing down your website." +msgstr "" + +#: modules/aioseop_feature_manager.php:31 modules/aioseop_performance.php:14 +msgid "Performance" +msgstr "" + +#: modules/aioseop_feature_manager.php:32 +msgid "Optimize performance related to SEO and check your system status." +msgstr "" + +#: modules/aioseop_feature_manager.php:39 +#: modules/aioseop_feature_manager.php:48 +msgid "Coming Soon..." +msgstr "" + +#: modules/aioseop_feature_manager.php:40 +msgid "Image SEO" +msgstr "" + +#: modules/aioseop_feature_manager.php:43 +msgid "" +"Create and manage your Video Sitemap using this feature and submit your " +"Video Sitemap to Google, Bing/Yahoo and Ask.com." +msgstr "" + +#: modules/aioseop_feature_manager.php:103 +msgid "Update Features" +msgstr "" + +#: modules/aioseop_feature_manager.php:105 +msgid "Reset Features" +msgstr "" + +#: modules/aioseop_file_editor.php:22 modules/aioseop_robots.php:21 +msgid "Robots.txt editor" +msgstr "" + +#: modules/aioseop_file_editor.php:23 +msgid ".htaccess editor" +msgstr "" + +#: modules/aioseop_file_editor.php:26 +msgid "Edit Robots.txt" +msgstr "" + +#: modules/aioseop_file_editor.php:28 modules/aioseop_file_editor.php:47 +msgid "Edit .htaccess" +msgstr "" + +#: modules/aioseop_file_editor.php:36 +msgid "robots.txt" +msgstr "" + +#: modules/aioseop_file_editor.php:37 +msgid ".htaccess" +msgstr "" + +#: modules/aioseop_file_editor.php:42 +msgid "Edit robots.txt" +msgstr "" + +#: modules/aioseop_file_editor.php:70 +msgid "Update robots.txt" +msgstr "" + +#: modules/aioseop_file_editor.php:72 +msgid "Update .htaccess" +msgstr "" + +#: modules/aioseop_importer_exporter.php:17 +msgid "" +"Select a valid All in One SEO Pack ini file and click 'Import' to import " +"options from a previous state or install of All in One SEO Pack.
Click here for documentation on this setting" +msgstr "" + +#: modules/aioseop_importer_exporter.php:18 +msgid "" +"You may choose to export settings from active modules, and content from post " +"data.
Click here for documentation on this setting" +msgstr "" + +#: modules/aioseop_importer_exporter.php:19 +msgid "" +"Select which Post Types you want to export your All in One SEO Pack meta " +"data for.
Click here for documentation on this " +"setting" +msgstr "" + +#: modules/aioseop_importer_exporter.php:23 +#: modules/aioseop_importer_exporter.php:57 +msgid "Import" +msgstr "" + +#: modules/aioseop_importer_exporter.php:24 +msgid "Export Settings" +msgstr "" + +#: modules/aioseop_importer_exporter.php:28 +msgid "Export Post Types:" +msgstr "" + +#: modules/aioseop_importer_exporter.php:32 +msgid "" +"Note: If General Settings is checked, the General Settings, the Feature " +"Manager settings, and the following currently active modules will have their " +"settings data exported:" +msgstr "" + +#: modules/aioseop_importer_exporter.php:60 +msgid "Export" +msgstr "" + +#: modules/aioseop_importer_exporter.php:80 +msgid "There are no other modules currently loaded!" +msgstr "" + +#: modules/aioseop_importer_exporter.php:82 +msgid "" +"You may change this by activating or deactivating modules in the Feature " +"Manager." +msgstr "" + +#: modules/aioseop_importer_exporter.php:247 +msgid "Warning: Line not matched: \"%s\", On Line: %s" +msgstr "" + +#: modules/aioseop_importer_exporter.php:270 +msgid "Warning: This following post could not be found: \"%s\"" +msgstr "" + +#: modules/aioseop_importer_exporter.php:298 +msgid "Settings export file for All in One SEO Pack" +msgstr "" + +#: modules/aioseop_opengraph.php:19 +msgid "Activity" +msgstr "" + +#: modules/aioseop_opengraph.php:20 +msgid "Sport" +msgstr "" + +#: modules/aioseop_opengraph.php:23 +msgid "Bar" +msgstr "" + +#: modules/aioseop_opengraph.php:24 +msgid "Company" +msgstr "" + +#: modules/aioseop_opengraph.php:25 +msgid "Cafe" +msgstr "" + +#: modules/aioseop_opengraph.php:26 +msgid "Hotel" +msgstr "" + +#: modules/aioseop_opengraph.php:27 +msgid "Restaurant" +msgstr "" + +#: modules/aioseop_opengraph.php:30 +msgid "Cause" +msgstr "" + +#: modules/aioseop_opengraph.php:31 +msgid "Sports League" +msgstr "" + +#: modules/aioseop_opengraph.php:32 +msgid "Sports Team" +msgstr "" + +#: modules/aioseop_opengraph.php:35 +msgid "Band" +msgstr "" + +#: modules/aioseop_opengraph.php:36 +msgid "Government" +msgstr "" + +#: modules/aioseop_opengraph.php:37 +msgid "Non Profit" +msgstr "" + +#: modules/aioseop_opengraph.php:38 +msgid "School" +msgstr "" + +#: modules/aioseop_opengraph.php:39 +msgid "University" +msgstr "" + +#: modules/aioseop_opengraph.php:42 +msgid "Actor" +msgstr "" + +#: modules/aioseop_opengraph.php:43 +msgid "Athlete" +msgstr "" + +#: modules/aioseop_opengraph.php:44 +msgid "Author" +msgstr "" + +#: modules/aioseop_opengraph.php:45 +msgid "Director" +msgstr "" + +#: modules/aioseop_opengraph.php:46 +msgid "Musician" +msgstr "" + +#: modules/aioseop_opengraph.php:47 +msgid "Politician" +msgstr "" + +#: modules/aioseop_opengraph.php:48 +msgid "Profile" +msgstr "" + +#: modules/aioseop_opengraph.php:49 +msgid "Public Figure" +msgstr "" + +#: modules/aioseop_opengraph.php:52 +msgid "City" +msgstr "" + +#: modules/aioseop_opengraph.php:53 +msgid "Country" +msgstr "" + +#: modules/aioseop_opengraph.php:54 +msgid "Landmark" +msgstr "" + +#: modules/aioseop_opengraph.php:55 +msgid "State Province" +msgstr "" + +#: modules/aioseop_opengraph.php:58 +msgid "Album" +msgstr "" + +#: modules/aioseop_opengraph.php:59 +msgid "Book" +msgstr "" + +#: modules/aioseop_opengraph.php:60 +msgid "Drink" +msgstr "" + +#: modules/aioseop_opengraph.php:61 +msgid "Food" +msgstr "" + +#: modules/aioseop_opengraph.php:62 +msgid "Game" +msgstr "" + +#: modules/aioseop_opengraph.php:63 +msgid "Movie" +msgstr "" + +#: modules/aioseop_opengraph.php:64 +msgid "Product" +msgstr "" + +#: modules/aioseop_opengraph.php:65 +msgid "Song" +msgstr "" + +#: modules/aioseop_opengraph.php:66 +msgid "TV Show" +msgstr "" + +#: modules/aioseop_opengraph.php:67 +msgid "Episode" +msgstr "" + +#: modules/aioseop_opengraph.php:69 modules/aioseop_opengraph.php:76 +msgid "Article" +msgstr "" + +#: modules/aioseop_opengraph.php:70 modules/aioseop_opengraph.php:76 +msgid "Blog" +msgstr "" + +#: modules/aioseop_opengraph.php:71 modules/aioseop_opengraph.php:76 +msgid "Website" +msgstr "" + +#: modules/aioseop_opengraph.php:79 +msgid "" +"Checking this box will use the Home Title and Home Description set in All in " +"One SEO Pack, General Settings as the Open Graph title and description for " +"your home page." +msgstr "" + +#: modules/aioseop_opengraph.php:80 +msgid "" +"Enter your Facebook Admin ID here. Information about how to get your " +"Facebook Admin ID can be found at https://developers.facebook.com/docs/" +"platforminsights/domains" +msgstr "" + +#: modules/aioseop_opengraph.php:81 +msgid "" +"Enter your Facebook App ID here. Information about how to get your Facebook " +"App ID can be found at https://developers.facebook.com/docs/platforminsights/" +"domains" +msgstr "" + +#: modules/aioseop_opengraph.php:82 +msgid "Run shortcodes that appear in social title meta tags." +msgstr "" + +#: modules/aioseop_opengraph.php:83 +msgid "Run shortcodes that appear in social description meta tags." +msgstr "" + +#: modules/aioseop_opengraph.php:84 +msgid "The Site Name is the name that is used to identify your website." +msgstr "" + +#: modules/aioseop_opengraph.php:85 +msgid "The Home Title is the Open Graph title for your home page." +msgstr "" + +#: modules/aioseop_opengraph.php:86 +msgid "The Home Description is the Open Graph description for your home page." +msgstr "" + +#: modules/aioseop_opengraph.php:87 +msgid "The Home Image is the Open Graph image for your home page." +msgstr "" + +#: modules/aioseop_opengraph.php:88 +msgid "" +"The Home Tag allows you to add a list of keywords that best describe your " +"home page content." +msgstr "" + +#: modules/aioseop_opengraph.php:89 +msgid "" +"Check this and your Open Graph descriptions will be auto-generated from your " +"content." +msgstr "" + +#: modules/aioseop_opengraph.php:90 +msgid "" +"This option lets you choose which image will be displayed by default for the " +"Open Graph image. You may override this on individual posts." +msgstr "" + +#: modules/aioseop_opengraph.php:91 +msgid "" +"This option lets you fall back to the default image if no image could be " +"found above." +msgstr "" + +#: modules/aioseop_opengraph.php:92 +msgid "" +"This option sets a default image that can be used for the Open Graph image. " +"You can upload an image, select an image from your Media Library or paste " +"the URL of an image here." +msgstr "" + +#: modules/aioseop_opengraph.php:93 +msgid "" +"This option lets you set a default width for your images, where unspecified." +msgstr "" + +#: modules/aioseop_opengraph.php:94 +msgid "" +"This option lets you set a default height for your images, where unspecified." +msgstr "" + +#: modules/aioseop_opengraph.php:95 +msgid "" +"Enter the name of a custom field (or multiple field names separated by " +"commas) to use that field to specify the Open Graph image on Pages or Posts." +msgstr "" + +#: modules/aioseop_opengraph.php:96 +msgid "Set the Open Graph type for your website as either a blog or a website." +msgstr "" + +#: modules/aioseop_opengraph.php:97 +msgid "" +"This option lets you select the Open Graph image that will be used for this " +"Page or Post, overriding the default settings." +msgstr "" + +#: modules/aioseop_opengraph.php:98 +msgid "" +"This option lets you upload an image to use as the Open Graph image for this " +"Page or Post." +msgstr "" + +#: modules/aioseop_opengraph.php:99 +msgid "Enter the width for your Open Graph image in pixels (i.e. 600)." +msgstr "" + +#: modules/aioseop_opengraph.php:100 +msgid "Enter the height for your Open Graph image in pixels (i.e. 600)." +msgstr "" + +#: modules/aioseop_opengraph.php:101 +msgid "" +"This option lets you specify a link to the Open Graph video used on this " +"Page or Post." +msgstr "" + +#: modules/aioseop_opengraph.php:102 +msgid "Enter the width for your Open Graph video in pixels (i.e. 600)." +msgstr "" + +#: modules/aioseop_opengraph.php:103 +msgid "Enter the height for your Open Graph video in pixels (i.e. 600)." +msgstr "" + +#: modules/aioseop_opengraph.php:104 modules/aioseop_opengraph.php:105 +msgid "Select the default type of Twitter card to display." +msgstr "" + +#: modules/aioseop_opengraph.php:106 +msgid "Enter the Twitter username associated with your website here." +msgstr "" + +#: modules/aioseop_opengraph.php:107 +msgid "" +"Allows your authors to be identified by their Twitter usernames as content " +"creators on the Twitter cards for their posts." +msgstr "" + +#: modules/aioseop_opengraph.php:108 +msgid "Enter the name of your website here." +msgstr "" + +#: modules/aioseop_opengraph.php:109 +msgid "" +"Automatically generate article tags for Facebook type article when not " +"provided." +msgstr "" + +#: modules/aioseop_opengraph.php:110 +msgid "Use keywords in generated article tags." +msgstr "" + +#: modules/aioseop_opengraph.php:111 +msgid "Use catergories in generated article tags." +msgstr "" + +#: modules/aioseop_opengraph.php:112 +msgid "Use post tags in generated article tags." +msgstr "" + +#: modules/aioseop_opengraph.php:113 +msgid "" +"Select which Post Types you want to use All in One SEO Pack to set Open " +"Graph meta values for." +msgstr "" + +#: modules/aioseop_opengraph.php:114 +msgid "This is the Open Graph title of this Page or Post." +msgstr "" + +#: modules/aioseop_opengraph.php:115 +msgid "This is the Open Graph description of this Page or Post." +msgstr "" + +#: modules/aioseop_opengraph.php:116 +msgid "" +"Select the Open Graph type that best describes the content of this Page or " +"Post." +msgstr "" + +#: modules/aioseop_opengraph.php:117 +msgid "Press this button to have Facebook re-fetch and debug this page." +msgstr "" + +#: modules/aioseop_opengraph.php:118 +msgid "" +"This Open Graph meta allows you to add a general section name that best " +"describes this content." +msgstr "" + +#: modules/aioseop_opengraph.php:119 +msgid "" +"This Open Graph meta allows you to add a list of keywords that best describe " +"this content." +msgstr "" + +#: modules/aioseop_opengraph.php:120 +msgid "Link articles to the Facebook page associated with your website." +msgstr "" + +#: modules/aioseop_opengraph.php:121 +msgid "" +"Allows your authors to be identified by their Facebook pages as content " +"authors on the Opengraph meta for their articles." +msgstr "" + +#: modules/aioseop_opengraph.php:122 +msgid "" +"Are the social profile links for your website for a person or an " +"organization?" +msgstr "" + +#: modules/aioseop_opengraph.php:123 +msgid "" +"Add URLs for your website's social profiles here (Facebook, Twitter, Google" +"+, Instagram, LinkedIn), one per line." +msgstr "" + +#: modules/aioseop_opengraph.php:124 +msgid "Add the name of the person or organization who owns these profiles." +msgstr "" + +#: modules/aioseop_opengraph.php:152 +msgid " characters. Open Graph allows up to a maximum of %s chars for the %s." +msgstr "" + +#: modules/aioseop_opengraph.php:154 +msgid "Scan Header" +msgstr "" + +#: modules/aioseop_opengraph.php:155 +msgid "Use AIOSEO Title and Description" +msgstr "" + +#: modules/aioseop_opengraph.php:156 +msgid "Facebook Admin ID" +msgstr "" + +#: modules/aioseop_opengraph.php:157 +msgid "Facebook App ID" +msgstr "" + +#: modules/aioseop_opengraph.php:158 +msgid "Run Shortcodes In Title" +msgstr "" + +#: modules/aioseop_opengraph.php:159 +msgid "Run Shortcodes In Description" +msgstr "" + +#: modules/aioseop_opengraph.php:160 +msgid "Site Name" +msgstr "" + +#: modules/aioseop_opengraph.php:161 +msgid "Home Title" +msgstr "" + +#: modules/aioseop_opengraph.php:163 +msgid "Home Description" +msgstr "" + +#: modules/aioseop_opengraph.php:165 +msgid "Home Image" +msgstr "" + +#: modules/aioseop_opengraph.php:167 +msgid "Home Article Tags" +msgstr "" + +#: modules/aioseop_opengraph.php:169 +msgid "Autogenerate OG Descriptions" +msgstr "" + +#: modules/aioseop_opengraph.php:170 +msgid "Select OG:Image Source" +msgstr "" + +#: modules/aioseop_opengraph.php:170 +msgid "Default Image" +msgstr "" + +#: modules/aioseop_opengraph.php:170 +msgid "Featured Image" +msgstr "" + +#: modules/aioseop_opengraph.php:170 +msgid "First Attached Image" +msgstr "" + +#: modules/aioseop_opengraph.php:170 +msgid "First Image In Content" +msgstr "" + +#: modules/aioseop_opengraph.php:170 +msgid "Image From Custom Field" +msgstr "" + +#: modules/aioseop_opengraph.php:170 +msgid "Post Author Image" +msgstr "" + +#: modules/aioseop_opengraph.php:170 +msgid "First Available Image" +msgstr "" + +#: modules/aioseop_opengraph.php:171 +msgid "Use Default If No Image Found" +msgstr "" + +#: modules/aioseop_opengraph.php:172 +msgid "Default OG:Image" +msgstr "" + +#: modules/aioseop_opengraph.php:173 +msgid "Default Image Width" +msgstr "" + +#: modules/aioseop_opengraph.php:175 +msgid "Default Image Height" +msgstr "" + +#: modules/aioseop_opengraph.php:177 +msgid "Use Custom Field For Image" +msgstr "" + +#: modules/aioseop_opengraph.php:178 modules/aioseop_opengraph.php:214 +msgid "Facebook Object Type" +msgstr "" + +#: modules/aioseop_opengraph.php:180 +msgid "Image" +msgstr "" + +#: modules/aioseop_opengraph.php:182 +msgid "Custom Image" +msgstr "" + +#: modules/aioseop_opengraph.php:184 +msgid "Specify Image Width" +msgstr "" + +#: modules/aioseop_opengraph.php:186 +msgid "Specify Image Height" +msgstr "" + +#: modules/aioseop_opengraph.php:188 +msgid "Custom Video" +msgstr "" + +#: modules/aioseop_opengraph.php:190 +msgid "Specify Video Width" +msgstr "" + +#: modules/aioseop_opengraph.php:192 +msgid "Specify Video Height" +msgstr "" + +#: modules/aioseop_opengraph.php:194 +msgid "Default Twitter Card" +msgstr "" + +#: modules/aioseop_opengraph.php:195 modules/aioseop_opengraph.php:197 +msgid "Summary" +msgstr "" + +#: modules/aioseop_opengraph.php:195 modules/aioseop_opengraph.php:197 +msgid "Summary Large Image" +msgstr "" + +#: modules/aioseop_opengraph.php:196 +msgid "Twitter Card Type" +msgstr "" + +#: modules/aioseop_opengraph.php:198 +msgid "Twitter Site" +msgstr "" + +#: modules/aioseop_opengraph.php:200 +msgid "Show Twitter Author" +msgstr "" + +#: modules/aioseop_opengraph.php:201 +msgid "Twitter Domain" +msgstr "" + +#: modules/aioseop_opengraph.php:203 +msgid "Automatically Generate Article Tags" +msgstr "" + +#: modules/aioseop_opengraph.php:204 +msgid "Use Keywords In Article Tags" +msgstr "" + +#: modules/aioseop_opengraph.php:205 +msgid "Use Categories In Article Tags" +msgstr "" + +#: modules/aioseop_opengraph.php:206 +msgid "Use Post Tags In Article Tags" +msgstr "" + +#: modules/aioseop_opengraph.php:207 +msgid "Enable Facebook Meta for" +msgstr "" + +#: modules/aioseop_opengraph.php:219 +msgid "Facebook Debug" +msgstr "" + +#: modules/aioseop_opengraph.php:232 +msgid "Debug This Post" +msgstr "" + +#: modules/aioseop_opengraph.php:235 +msgid "Article Section" +msgstr "" + +#: modules/aioseop_opengraph.php:237 +msgid "Article Tags" +msgstr "" + +#: modules/aioseop_opengraph.php:239 +msgid "Show Facebook Publisher on Articles" +msgstr "" + +#: modules/aioseop_opengraph.php:240 +msgid "Show Facebook Author on Articles" +msgstr "" + +#: modules/aioseop_opengraph.php:241 modules/aioseop_opengraph.php:282 +msgid "Social Profile Links" +msgstr "" + +#: modules/aioseop_opengraph.php:242 +msgid "Person or Organization?" +msgstr "" + +#: modules/aioseop_opengraph.php:243 +msgid "Person" +msgstr "" + +#: modules/aioseop_opengraph.php:243 +msgid "Organization" +msgstr "" + +#: modules/aioseop_opengraph.php:244 +msgid "Associated Name" +msgstr "" + +#: modules/aioseop_opengraph.php:258 +msgid "Social Settings" +msgstr "" + +#: modules/aioseop_opengraph.php:277 +msgid "Image Settings" +msgstr "" + +#: modules/aioseop_opengraph.php:287 +msgid "Facebook Settings" +msgstr "" + +#: modules/aioseop_opengraph.php:292 +msgid "Twitter Settings" +msgstr "" + +#: modules/aioseop_opengraph.php:297 +msgid "Scan Social Meta" +msgstr "" + +#: modules/aioseop_opengraph.php:328 +msgid "" +"Static front page detected, suggested Facebook Object Type is 'website'." +msgstr "" + +#: modules/aioseop_opengraph.php:333 +msgid "Blog on front page detected, suggested Facebook Object Type is 'blog'." +msgstr "" + +#: modules/aioseop_opengraph.php:380 +msgid "Default " +msgstr "" + +#: modules/aioseop_opengraph.php:427 +msgid "Scan Now" +msgstr "" + +#: modules/aioseop_opengraph.php:428 +msgid "Scan your site for duplicate social meta tags." +msgstr "" + +#: modules/aioseop_opengraph.php:873 +msgid "Object Type" +msgstr "" + +#: modules/aioseop_opengraph.php:880 +msgid "" +"Choose a default value that best describes the content of your post type." +msgstr "" + +#: modules/aioseop_performance.php:20 +msgid "" +"This setting allows you to raise your PHP memory limit to a reasonable " +"value. Note: WordPress core and other WordPress plugins may also change the " +"value of the memory limit." +msgstr "" + +#: modules/aioseop_performance.php:21 +msgid "" +"This setting allows you to raise your PHP execution time to a reasonable " +"value." +msgstr "" + +#: modules/aioseop_performance.php:22 +msgid "" +"Use output buffering to ensure that the title gets rewritten. Enable this " +"option if you run into issues with the title tag being set by your theme or " +"another plugin." +msgstr "" + +#: modules/aioseop_performance.php:26 +msgid "Raise memory limit" +msgstr "" + +#: modules/aioseop_performance.php:28 modules/aioseop_performance.php:31 +msgid "Use the system default" +msgstr "" + +#: modules/aioseop_performance.php:29 +msgid "Raise execution time" +msgstr "" + +#: modules/aioseop_performance.php:31 +msgid "No limit" +msgstr "" + +#: modules/aioseop_performance.php:63 +msgid "System Status" +msgstr "" + +#: modules/aioseop_performance.php:139 +msgid "Not set" +msgstr "" + +#: modules/aioseop_performance.php:140 modules/aioseop_performance.php:142 +msgid "On" +msgstr "" + +#: modules/aioseop_performance.php:141 modules/aioseop_performance.php:143 +msgid "Off" +msgstr "" + +#: modules/aioseop_performance.php:145 modules/aioseop_performance.php:147 +#: modules/aioseop_performance.php:149 modules/aioseop_performance.php:151 +#: modules/aioseop_performance.php:153 modules/aioseop_performance.php:175 +msgid "N/A" +msgstr "" + +#: modules/aioseop_performance.php:152 +msgid " MByte" +msgstr "" + +#: modules/aioseop_performance.php:154 modules/aioseop_performance.php:156 +#: modules/aioseop_performance.php:158 modules/aioseop_performance.php:170 +msgid "Yes" +msgstr "" + +#: modules/aioseop_performance.php:182 +msgid "Operating System" +msgstr "" + +#: modules/aioseop_performance.php:183 +msgid "Server" +msgstr "" + +#: modules/aioseop_performance.php:184 +msgid "Memory usage" +msgstr "" + +#: modules/aioseop_performance.php:185 +msgid "MYSQL Version" +msgstr "" + +#: modules/aioseop_performance.php:186 +msgid "SQL Mode" +msgstr "" + +#: modules/aioseop_performance.php:187 +msgid "PHP Version" +msgstr "" + +#: modules/aioseop_performance.php:188 +msgid "PHP Safe Mode" +msgstr "" + +#: modules/aioseop_performance.php:189 +msgid "PHP Allow URL fopen" +msgstr "" + +#: modules/aioseop_performance.php:190 +msgid "PHP Memory Limit" +msgstr "" + +#: modules/aioseop_performance.php:191 +msgid "PHP Max Upload Size" +msgstr "" + +#: modules/aioseop_performance.php:192 +msgid "PHP Max Post Size" +msgstr "" + +#: modules/aioseop_performance.php:193 +msgid "PHP Max Script Execute Time" +msgstr "" + +#: modules/aioseop_performance.php:194 +msgid "PHP Exif support" +msgstr "" + +#: modules/aioseop_performance.php:195 +msgid "PHP IPTC support" +msgstr "" + +#: modules/aioseop_performance.php:196 +msgid "PHP XML support" +msgstr "" + +#: modules/aioseop_performance.php:197 +msgid "Site URL" +msgstr "" + +#: modules/aioseop_performance.php:198 +msgid "Home URL" +msgstr "" + +#: modules/aioseop_performance.php:199 +msgid "WordPress Version" +msgstr "" + +#: modules/aioseop_performance.php:200 +msgid "WordPress DB Version" +msgstr "" + +#: modules/aioseop_performance.php:201 +msgid "Multisite" +msgstr "" + +#: modules/aioseop_performance.php:202 +msgid "Active Theme" +msgstr "" + +#: modules/aioseop_performance.php:217 +msgid "All in One SEO Pack Pro Debug Info" +msgstr "" + +#: modules/aioseop_performance.php:233 +msgid "Form submission error: verification check failed." +msgstr "" + +#: modules/aioseop_performance.php:239 +msgid "%s has checked for updates." +msgstr "" + +#: modules/aioseop_performance.php:245 +msgid "SFWD Debug Mail From Site %s." +msgstr "" + +#: modules/aioseop_performance.php:246 +msgid "Sent to %s." +msgstr "" + +#: modules/aioseop_performance.php:248 +msgid "Failed to send to %s." +msgstr "" + +#: modules/aioseop_performance.php:251 +msgid "Error: please enter an e-mail address before submitting." +msgstr "" + +#: modules/aioseop_performance.php:256 +msgid "E-mail debug information" +msgstr "" + +#: modules/aioseop_performance.php:257 +msgid "Submit" +msgstr "" + +#: modules/aioseop_performance.php:260 +msgid "Check For Updates" +msgstr "" + +#: modules/aioseop_robots.php:18 modules/aioseop_robots.php:28 +msgid "Rule Type" +msgstr "" + +#: modules/aioseop_robots.php:19 modules/aioseop_robots.php:31 +msgid "User Agent" +msgstr "" + +#: modules/aioseop_robots.php:20 modules/aioseop_robots.php:34 +msgid "Directory Path" +msgstr "" + +#: modules/aioseop_robots.php:26 +msgid "" +"Use the rule builder below to add rules to create a new Robots.txt file.  If " +"you already have a Robots.txt file you should use the File Editor feature in " +"All in One SEO Pack to edit it or you can delete your current Robots.txt " +"file and start a new one with the rule builder below." +msgstr "" + +#: modules/aioseop_robots.php:37 +msgid "Generate Robots.txt" +msgstr "" + +#: modules/aioseop_robots.php:40 +msgid "Add Rule" +msgstr "" + +#: modules/aioseop_robots.php:41 +msgid "Save Robots.txt File" +msgstr "" + +#: modules/aioseop_robots.php:42 +msgid "Delete Robots.txt File" +msgstr "" + +#: modules/aioseop_robots.php:44 +msgid "" +"Click the Optimize button below and All in One SEO Pack will analyze your " +"Robots.txt file to make sure it complies with the standards for Robots.txt " +"files.  The results will be displayed in a table below." +msgstr "" + +#: modules/aioseop_robots.php:46 +msgid "Update Robots.txt File" +msgstr "" + +#: modules/aioseop_robots.php:47 +msgid "Disregard Changes" +msgstr "" + +#: modules/aioseop_robots.php:48 +msgid "Optimize" +msgstr "" + +#: modules/aioseop_robots.php:61 +msgid "Create a Robots.txt File" +msgstr "" + +#: modules/aioseop_robots.php:66 +msgid "Optimize your Robots.txt File" +msgstr "" + +#: modules/aioseop_robots.php:71 +msgid "" +"Your Robots.txt file has been optimized.  Here are the results and " +"recommendations.  Click the Update Robots.txt File button below to write " +"these changes to your Robots.txt file.  Click the Disregard Changes button " +"to ignore these recommendations and keep your current Robots.txt file." +msgstr "" + +#: modules/aioseop_robots.php:161 modules/aioseop_robots.php:163 +msgid "Current File" +msgstr "" + +#: modules/aioseop_robots.php:161 +msgid "Proposed Changes" +msgstr "" + +#: modules/aioseop_robots.php:217 +msgid "Legend" +msgstr "" + +#: modules/aioseop_robots.php:219 +msgid "" +"The yellow indicator means that a non-standard extension was recognized; not " +"all crawlers may recognize it or interpret it the same way. The Allow and " +"Sitemap directives are commonly used by Google and Yahoo." +msgstr "" + +#: modules/aioseop_robots.php:220 +msgid "" +"The red indicator means that the syntax is invalid for a robots.txt file." +msgstr "" + +#: modules/aioseop_robots.php:222 +msgid "More Information" +msgstr "" + +#: modules/aioseop_sitemap.php:24 +msgid "XML Sitemap" +msgstr "" + +#: modules/aioseop_sitemap.php:31 +msgid "" +"Sitemap %s generated by All in One SEO Pack %s by Michael Torbert of Semper " +"Fi Web Design on %s" +msgstr "" + +#: modules/aioseop_sitemap.php:34 +msgid "" +"Specifies the name of your sitemap file. This will default to 'sitemap'." +msgstr "" + +#: modules/aioseop_sitemap.php:35 +msgid "Notify Google when you update your sitemap settings." +msgstr "" + +#: modules/aioseop_sitemap.php:36 +msgid "Notify Bing when you update your sitemap settings." +msgstr "" + +#: modules/aioseop_sitemap.php:37 +msgid "" +"Notify search engines daily, and also update static sitemap daily if in use. " +"(this uses WP-Cron, so make sure this is working properly on your server as " +"well)" +msgstr "" + +#: modules/aioseop_sitemap.php:38 +msgid "" +"Organize sitemap entries into distinct files in your sitemap. Enable this " +"only if your sitemap contains over 50,000 URLs or the file is over 5MB in " +"size." +msgstr "" + +#: modules/aioseop_sitemap.php:39 +msgid "Split long sitemaps into separate files." +msgstr "" + +#: modules/aioseop_sitemap.php:40 +msgid "" +"Allows you to specify the maximum number of posts in a sitemap (up to " +"50,000)." +msgstr "" + +#: modules/aioseop_sitemap.php:41 +msgid "Select which Post Types appear in your sitemap." +msgstr "" + +#: modules/aioseop_sitemap.php:42 +msgid "Select which taxonomy archives appear in your sitemap" +msgstr "" + +#: modules/aioseop_sitemap.php:43 +msgid "Include Date Archives in your sitemap." +msgstr "" + +#: modules/aioseop_sitemap.php:44 +msgid "Include Author Archives in your sitemap." +msgstr "" + +#: modules/aioseop_sitemap.php:45 +msgid "Create a compressed sitemap file in .xml.gz format." +msgstr "" + +#: modules/aioseop_sitemap.php:46 +msgid "Places a link to your Sitemap.xml into your virtual Robots.txt file." +msgstr "" + +#: modules/aioseop_sitemap.php:47 +msgid "" +"Places a link to the sitemap file in your virtual Robots.txt file which " +"WordPress creates." +msgstr "" + +#: modules/aioseop_sitemap.php:48 +msgid "Tells search engines not to index the sitemap file itself." +msgstr "" + +#: modules/aioseop_sitemap.php:49 +msgid "" +"Use rewrites to generate your sitemap on the fly. NOTE: This is required for " +"WordPress Multisite." +msgstr "" + +#: modules/aioseop_sitemap.php:50 +msgid "URL to the page." +msgstr "" + +#: modules/aioseop_sitemap.php:51 +msgid "The priority of the page." +msgstr "" + +#: modules/aioseop_sitemap.php:52 +msgid "The frequency of the page." +msgstr "" + +#: modules/aioseop_sitemap.php:53 +msgid "Last modified date of the page." +msgstr "" + +#: modules/aioseop_sitemap.php:54 +msgid "Entries from these categories will be excluded from the sitemap." +msgstr "" + +#: modules/aioseop_sitemap.php:55 +msgid "" +"Use page slugs or page IDs, seperated by commas, to exclude pages from the " +"sitemap." +msgstr "" + +#: modules/aioseop_sitemap.php:79 +msgid "Filename Prefix" +msgstr "" + +#: modules/aioseop_sitemap.php:81 +msgid "Notify Google" +msgstr "" + +#: modules/aioseop_sitemap.php:82 +msgid "Notify Bing" +msgstr "" + +#: modules/aioseop_sitemap.php:83 +msgid "Schedule Updates" +msgstr "" + +#: modules/aioseop_sitemap.php:84 +msgid "No Schedule" +msgstr "" + +#: modules/aioseop_sitemap.php:85 +msgid "Daily" +msgstr "" + +#: modules/aioseop_sitemap.php:86 +msgid "Weekly" +msgstr "" + +#: modules/aioseop_sitemap.php:87 +msgid "Monthly" +msgstr "" + +#: modules/aioseop_sitemap.php:89 +msgid "Enable Sitemap Indexes" +msgstr "" + +#: modules/aioseop_sitemap.php:90 +msgid "Paginate Sitemap Indexes" +msgstr "" + +#: modules/aioseop_sitemap.php:92 +msgid "Maximum Posts Per Sitemap" +msgstr "" + +#: modules/aioseop_sitemap.php:95 +msgid "Post Types" +msgstr "" + +#: modules/aioseop_sitemap.php:97 +msgid "Taxonomies" +msgstr "" + +#: modules/aioseop_sitemap.php:99 +msgid "Include Date Archive Pages" +msgstr "" + +#: modules/aioseop_sitemap.php:100 +msgid "Include Author Pages" +msgstr "" + +#: modules/aioseop_sitemap.php:101 +msgid "Create Compressed Sitemap" +msgstr "" + +#: modules/aioseop_sitemap.php:102 +msgid "Link From Virtual Robots.txt" +msgstr "" + +#: modules/aioseop_sitemap.php:103 +msgid "Dynamically Generate Sitemap" +msgstr "" + +#: modules/aioseop_sitemap.php:104 +msgid "Noindex Sitemap file" +msgstr "" + +#: modules/aioseop_sitemap.php:110 +msgid "Debug Log" +msgstr "" + +#: modules/aioseop_sitemap.php:115 +msgid "Sitemap Status" +msgstr "" + +#: modules/aioseop_sitemap.php:130 +msgid "Do Not Override" +msgstr "" + +#: modules/aioseop_sitemap.php:131 +msgid "Select Individual" +msgstr "" + +#: modules/aioseop_sitemap.php:140 +msgid "priority" +msgstr "" + +#: modules/aioseop_sitemap.php:140 +msgid "frequency" +msgstr "" + +#: modules/aioseop_sitemap.php:143 +msgid "homepage" +msgstr "" + +#: modules/aioseop_sitemap.php:144 +msgid "posts" +msgstr "" + +#: modules/aioseop_sitemap.php:145 +msgid "taxonomies" +msgstr "" + +#: modules/aioseop_sitemap.php:146 +msgid "archive pages" +msgstr "" + +#: modules/aioseop_sitemap.php:147 +msgid "author pages" +msgstr "" + +#: modules/aioseop_sitemap.php:155 +msgid "Manually set the %s of your %s." +msgstr "" + +#: modules/aioseop_sitemap.php:162 +msgid "" +"Enter information below for any additional links for your sitemap not " +"already managed through WordPress." +msgstr "" + +#: modules/aioseop_sitemap.php:163 +msgid "Page URL" +msgstr "" + +#: modules/aioseop_sitemap.php:164 +msgid "Page Priority" +msgstr "" + +#: modules/aioseop_sitemap.php:165 +msgid "Page Frequency" +msgstr "" + +#: modules/aioseop_sitemap.php:166 +msgid "Last Modified" +msgstr "" + +#: modules/aioseop_sitemap.php:167 modules/aioseop_sitemap.php:177 +msgid "Additional Pages" +msgstr "" + +#: modules/aioseop_sitemap.php:168 +msgid "Add URL" +msgstr "" + +#: modules/aioseop_sitemap.php:172 +msgid "Excluded Categories" +msgstr "" + +#: modules/aioseop_sitemap.php:173 +msgid "Excluded Pages" +msgstr "" + +#: modules/aioseop_sitemap.php:183 +msgid "Excluded Items" +msgstr "" + +#: modules/aioseop_sitemap.php:189 +msgid "Priorities" +msgstr "" + +#: modules/aioseop_sitemap.php:195 +msgid "Frequencies" +msgstr "" + +#: modules/aioseop_sitemap.php:218 +msgid "Once Weekly" +msgstr "" + +#: modules/aioseop_sitemap.php:222 +msgid "Once Monthly" +msgstr "" + +#: modules/aioseop_sitemap.php:236 +msgid "Daily scheduled sitemap check has finished." +msgstr "" + +#: modules/aioseop_sitemap.php:294 +msgid "Media / Attachments" +msgstr "" + +#: modules/aioseop_sitemap.php:295 +msgid "All Post Types" +msgstr "" + +#: modules/aioseop_sitemap.php:296 +msgid "All Taxonomies" +msgstr "" + +#: modules/aioseop_sitemap.php:300 +msgid "Manually set the priority for the " +msgstr "" + +#: modules/aioseop_sitemap.php:301 +msgid "Manually set the frequency for the " +msgstr "" + +#: modules/aioseop_sitemap.php:302 +msgid " Post Type" +msgstr "" + +#: modules/aioseop_sitemap.php:303 +msgid " Taxonomy" +msgstr "" + +#: modules/aioseop_sitemap.php:334 modules/aioseop_sitemap.php:366 +msgid "Update Sitemap" +msgstr "" + +#: modules/aioseop_sitemap.php:364 +msgid "" +"Please review your settings below and click %s to build your sitemap; then, " +"%s." +msgstr "" + +#: modules/aioseop_sitemap.php:367 +msgid "view your sitemap" +msgstr "" + +#: modules/aioseop_sitemap.php:370 +msgid "" +"Note: you are using dynamic sitemap generation to keep your sitemap current; " +"this will not generate a static sitemap file." +msgstr "" + +#: modules/aioseop_sitemap.php:374 +msgid "" +"Dynamic sitemap generation appears to be using the correct rewrite rules." +msgstr "" + +#: modules/aioseop_sitemap.php:376 +msgid "" +"Dynamic sitemap generation does not appear to be using the correct rewrite " +"rules; please disable any other sitemap plugins or functionality on your " +"site and reset your permalinks." +msgstr "" + +#: modules/aioseop_sitemap.php:381 +msgid "Reading Settings" +msgstr "" + +#: modules/aioseop_sitemap.php:383 +msgid "Privacy Settings" +msgstr "" + +#: modules/aioseop_sitemap.php:385 +msgid "" +"Warning: your privacy settings are configured to ask search engines to not " +"index your site; you can change this under %s for your blog." +msgstr "" + +#: modules/aioseop_sitemap.php:506 +msgid "Warning: dynamic sitemap generation must have permalinks enabled." +msgstr "" + +#: modules/aioseop_sitemap.php:519 +msgid "Deleted %s." +msgstr "" + +#: modules/aioseop_sitemap.php:528 +msgid "Couldn't rename file %s!" +msgstr "" + +#: modules/aioseop_sitemap.php:532 +msgid "Renamed %s to %s." +msgstr "" + +#: modules/aioseop_sitemap.php:534 +msgid "Couldn't find file %s!" +msgstr "" + +#: modules/aioseop_sitemap.php:586 +msgid "" +"Warning: a static sitemap '%s' generated by All in One SEO Pack %s on %s " +"already exists that may conflict with dynamic sitemap generation." +msgstr "" + +#: modules/aioseop_sitemap.php:591 +msgid "Potential conflict with unknown file %s." +msgstr "" + +#: modules/aioseop_sitemap.php:610 +msgid "Rename Conflicting Files" +msgstr "" + +#: modules/aioseop_sitemap.php:611 +msgid "Delete Conflicting Files" +msgstr "" + +#: modules/aioseop_sitemap.php:700 +msgid "compressed" +msgstr "" + +#: modules/aioseop_sitemap.php:702 +msgid "dynamic" +msgstr "" + +#: modules/aioseop_sitemap.php:704 +msgid "static" +msgstr "" + +#: modules/aioseop_sitemap.php:770 +msgid "dynamically" +msgstr "" + +#: modules/aioseop_sitemap.php:794 +msgid "Successfully notified %s about changes to your sitemap at %s." +msgstr "" + +#: modules/aioseop_sitemap.php:796 +msgid "Failed to notify %s about changes to your sitemap at %s, error code %s." +msgstr "" + +#: modules/aioseop_sitemap.php:799 +msgid "" +"Failed to notify %s about changes to your sitemap at %s, unable to access " +"via wp_remote_get()." +msgstr "" + +#: modules/aioseop_sitemap.php:802 +msgid "Did not notify %s about changes to your sitemap." +msgstr "" + +#: modules/aioseop_sitemap.php:829 modules/aioseop_sitemap.php:971 +#: modules/aioseop_sitemap.php:989 +msgid "file '%s' statically" +msgstr "" + +#: modules/aioseop_sitemap.php:841 +msgid "Updated sitemap settings." +msgstr "" + +#. Plugin Name of the plugin/theme +msgid "All In One SEO Pack" +msgstr "" + +#. Plugin URI of the plugin/theme +msgid "http://semperfiwebdesign.com" +msgstr "" + +#. Description of the plugin/theme +msgid "" +"Out-of-the-box SEO for your WordPress blog. Features like XML Sitemaps, SEO " +"for custom post types, SEO for blogs or business sites, SEO for ecommerce " +"sites, and much more. Almost 30 million downloads since 2007." +msgstr "" + +#. Author of the plugin/theme +msgid "Michael Torbert" +msgstr "" + +#. Author URI of the plugin/theme +msgid "http://michaeltorbert.com" +msgstr "" diff --git a/plugins/all-in-one-seo-pack/images/accept.png b/plugins/all-in-one-seo-pack/images/accept.png new file mode 100644 index 0000000..68477d0 Binary files /dev/null and b/plugins/all-in-one-seo-pack/images/accept.png differ diff --git a/plugins/all-in-one-seo-pack/images/activity.gif b/plugins/all-in-one-seo-pack/images/activity.gif new file mode 100644 index 0000000..abbf5c7 Binary files /dev/null and b/plugins/all-in-one-seo-pack/images/activity.gif differ diff --git a/plugins/all-in-one-seo-pack/images/cog_edit.png b/plugins/all-in-one-seo-pack/images/cog_edit.png new file mode 100644 index 0000000..aa160d8 Binary files /dev/null and b/plugins/all-in-one-seo-pack/images/cog_edit.png differ diff --git a/plugins/all-in-one-seo-pack/images/default-user-image.png b/plugins/all-in-one-seo-pack/images/default-user-image.png new file mode 100644 index 0000000..eeae0e0 Binary files /dev/null and b/plugins/all-in-one-seo-pack/images/default-user-image.png differ diff --git a/plugins/all-in-one-seo-pack/images/delete.png b/plugins/all-in-one-seo-pack/images/delete.png new file mode 100644 index 0000000..9d0f0be Binary files /dev/null and b/plugins/all-in-one-seo-pack/images/delete.png differ diff --git a/plugins/all-in-one-seo-pack/images/shield-sprite-16.png b/plugins/all-in-one-seo-pack/images/shield-sprite-16.png new file mode 100644 index 0000000..71e4d7b Binary files /dev/null and b/plugins/all-in-one-seo-pack/images/shield-sprite-16.png differ diff --git a/plugins/all-in-one-seo-pack/images/shield-sprite-32.png b/plugins/all-in-one-seo-pack/images/shield-sprite-32.png new file mode 100644 index 0000000..a638fd1 Binary files /dev/null and b/plugins/all-in-one-seo-pack/images/shield-sprite-32.png differ diff --git a/plugins/all-in-one-seo-pack/images/shield32.png b/plugins/all-in-one-seo-pack/images/shield32.png new file mode 100644 index 0000000..ef8fd6c Binary files /dev/null and b/plugins/all-in-one-seo-pack/images/shield32.png differ diff --git a/plugins/all-in-one-seo-pack/images/shield32fade.png b/plugins/all-in-one-seo-pack/images/shield32fade.png new file mode 100644 index 0000000..f8d3f89 Binary files /dev/null and b/plugins/all-in-one-seo-pack/images/shield32fade.png differ diff --git a/plugins/all-in-one-seo-pack/images/shield64.png b/plugins/all-in-one-seo-pack/images/shield64.png new file mode 100644 index 0000000..b79b8d1 Binary files /dev/null and b/plugins/all-in-one-seo-pack/images/shield64.png differ diff --git a/plugins/all-in-one-seo-pack/images/update32.png b/plugins/all-in-one-seo-pack/images/update32.png new file mode 100644 index 0000000..19684ff Binary files /dev/null and b/plugins/all-in-one-seo-pack/images/update32.png differ diff --git a/plugins/all-in-one-seo-pack/images/update64.png b/plugins/all-in-one-seo-pack/images/update64.png new file mode 100644 index 0000000..c2922db Binary files /dev/null and b/plugins/all-in-one-seo-pack/images/update64.png differ diff --git a/plugins/all-in-one-seo-pack/inc/aioseop_UTF8.php b/plugins/all-in-one-seo-pack/inc/aioseop_UTF8.php new file mode 100644 index 0000000..003c873 --- /dev/null +++ b/plugins/all-in-one-seo-pack/inc/aioseop_UTF8.php @@ -0,0 +1,450 @@ + "ÔΩö", "Ôºπ" => "ÔΩô", "X" => "ÔΩò", + "W" => "ÔΩó", "V" => "ÔΩñ", "U" => "ÔΩï", + "T" => "ÔΩî", "S" => "ÔΩì", "R" => "ÔΩí", + "Q" => "ÔΩë", "P" => "ÔΩê", "O" => "ÔΩè", + "N" => "ÔΩé", "M" => "ÔΩç", "L" => "ÔΩå", + "Ôº´" => "ÔΩã", "J" => "ÔΩä", "I" => "ÔΩâ", + "H" => "ÔΩà", "G" => "ÔΩá", "F" => "ÔΩÜ", + "E" => "ÔΩÖ", "D" => "ÔΩÑ", "C" => "ÔΩÉ", + "B" => "ÔΩÇ", "Ôº°" => "ÔΩÅ", "‚Ñ´" => "å", + "‚Ñ™" => "k", "Ω" => "ω", "·øª" => "·ΩΩ", + "·ø∫" => "·Ωº", "·øπ" => "·Ωπ", "·ø∏" => "·Ω∏", + "·ø¨" => "·ø•", "·ø´" => "·Ωª", "·ø™" => "·Ω∫", + "·ø©" => "·ø°", "·ø®" => "·ø ", "·øõ" => "·Ω∑", + "·øö" => "·Ω∂", "·øô" => "·øë", "·øò" => "·øê", + "·øã" => "·Ωµ", "·øä" => "·Ω¥", "·øâ" => "·Ω≥", + "·øà" => "·Ω≤", "Ά" => "·Ω±", "·æ∫" => "·Ω∞", + "·æπ" => "·æ±", "·æ∏" => "·æ∞", "·ΩØ" => "·Ωß", + "·ΩÆ" => "·Ω¶", "·Ω≠" => "·Ω•", "·Ω¨" => "·Ω§", + "·Ω´" => "·Ω£", "·Ω™" => "·Ω¢", "·Ω©" => "·Ω°", + "·Ω®" => "·Ω ", "·Ωü" => "·Ωó", "·Ωù" => "·Ωï", + "·Ωõ" => "·Ωì", "·Ωô" => "·Ωë", "·Ωç" => "·ΩÖ", + "·Ωå" => "·ΩÑ", "·Ωã" => "·ΩÉ", "·Ωä" => "·ΩÇ", + "·Ωâ" => "·ΩÅ", "·Ωà" => "·ΩÄ", "·ºø" => "ἷ", + "Ἶ" => "ἶ", "·ºΩ" => "ἵ", "Ἴ" => "ἴ", + "Ἳ" => "ἳ", "Ἲ" => "ἲ", "·ºπ" => "ἱ", + "Ἰ" => "ἰ", "Ἧ" => "ἧ", "Ἦ" => "ἦ", + "Ἥ" => "ἥ", "Ἤ" => "ἤ", "·º´" => "ἣ", + "Ἢ" => "ἢ", "Ἡ" => "·º°", "Ἠ" => "·º ", + "·ºù" => "ἕ", "·ºú" => "ἔ", "·ºõ" => "ἓ", + "·ºö" => "ἒ", "·ºô" => "ἑ", "·ºò" => "ἐ", + "Ἇ" => "ἇ", "Ἆ" => "ἆ", "Ἅ" => "·ºÖ", + "Ἄ" => "ἄ", "Ἃ" => "ἃ", "Ἂ" => "ἂ", + "Ἁ" => "ἁ", "Ἀ" => "ἀ", "Ỹ" => "·ªπ", + "Ỷ" => "ỷ", "Ỵ" => "ỵ", "Ỳ" => "ỳ", + "Ự" => "ự", "Ữ" => "ữ", "Ử" => "ử", + "Ừ" => "·ª´", "Ứ" => "ứ", "Ủ" => "ủ", + "Ụ" => "ụ", "Ợ" => "ợ", "·ª " => "·ª°", + "·ªû" => "ở", "·ªú" => "·ªù", "·ªö" => "·ªõ", + "·ªò" => "·ªô", "Ỗ" => "·ªó", "Ổ" => "ổ", + "Ồ" => "ồ", "Ố" => "ố", "Ỏ" => "ỏ", + "Ọ" => "ọ", "Ị" => "ị", "Ỉ" => "ỉ", + "Ệ" => "ệ", "Ễ" => "·ªÖ", "Ể" => "ể", + "Ề" => "ề", "Ế" => "·∫ø", "Ẽ" => "·∫Ω", + "·∫∫" => "ẻ", "·∫∏" => "·∫π", "·∫∂" => "·∫∑", + "·∫¥" => "·∫µ", "·∫≤" => "·∫≥", "·∫∞" => "·∫±", + "Ắ" => "ắ", "Ậ" => "·∫≠", "·∫™" => "·∫´", + "·∫®" => "ẩ", "Ầ" => "ầ", "Ấ" => "ấ", + "·∫¢" => "·∫£", "·∫ " => "·∫°", "Ẕ" => "ẕ", + "Ẓ" => "ẓ", "Ẑ" => "ẑ", "Ẏ" => "ẏ", + "Ẍ" => "ẍ", "Ẋ" => "ẋ", "Ẉ" => "ẉ", + "Ẇ" => "ẇ", "Ẅ" => "·∫Ö", "Ẃ" => "ẃ", + "Ẁ" => "ẁ", "·πæ" => "·πø", "·πº" => "·πΩ", + "·π∫" => "·πª", "·π∏" => "·ππ", "·π∂" => "·π∑", + "·π¥" => "·πµ", "·π≤" => "·π≥", "·π∞" => "·π±", + "Ṯ" => "ṯ", "·π¨" => "·π≠", "·π™" => "·π´", + "·π®" => "·π©", "·π¶" => "·πß", "·π§" => "·π•", + "·π¢" => "·π£", "·π " => "·π°", "·πû" => "·πü", + "·πú" => "·πù", "·πö" => "·πõ", "·πò" => "·πô", + "·πñ" => "·πó", "·πî" => "·πï", "·πí" => "·πì", + "·πê" => "·πë", "·πé" => "·πè", "·πå" => "·πç", + "·πä" => "·πã", "·πà" => "·πâ", "Ṇ" => "·πá", + "Ṅ" => "·πÖ", "Ṃ" => "ṃ", "Ṁ" => "ṁ", + "Ḿ" => "·∏ø", "Ḽ" => "·∏Ω", "·∏∫" => "ḻ", + "·∏∏" => "·∏π", "·∏∂" => "·∏∑", "·∏¥" => "·∏µ", + "·∏≤" => "·∏≥", "·∏∞" => "·∏±", "Ḯ" => "ḯ", + "Ḭ" => "·∏≠", "·∏™" => "·∏´", "·∏®" => "ḩ", + "Ḧ" => "ḧ", "Ḥ" => "ḥ", "·∏¢" => "·∏£", + "·∏ " => "·∏°", "·∏û" => "ḟ", "·∏ú" => "·∏ù", + "·∏ö" => "·∏õ", "·∏ò" => "·∏ô", "Ḗ" => "·∏ó", + "Ḕ" => "ḕ", "Ḓ" => "ḓ", "Ḑ" => "ḑ", + "Ḏ" => "ḏ", "Ḍ" => "ḍ", "Ḋ" => "ḋ", + "Ḉ" => "ḉ", "Ḇ" => "ḇ", "Ḅ" => "·∏Ö", + "Ḃ" => "ḃ", "Ḁ" => "ḁ", "’ñ" => "ֆ", + "’ï" => "÷Ö", "’î" => "ք", "’ì" => "փ", + "’í" => "ւ", "’ë" => "ց", "’ê" => "ր", + "’è" => "’ø", "’é" => "’æ", "’ç" => "’Ω", + "’å" => "’º", "’ã" => "’ª", "’ä" => "’∫", + "’â" => "’π", "’à" => "’∏", "’á" => "’∑", + "’Ü" => "’∂", "’Ö" => "’µ", "’Ñ" => "’¥", + "’É" => "’≥", "’Ç" => "’≤", "’Å" => "’±", + "’Ä" => "’∞", "‘ø" => "’Ø", "‘æ" => "’Æ", + "‘Ω" => "’≠", "Լ" => "’¨", "Ի" => "’´", + "‘∫" => "’™", "‘π" => "’©", "‘∏" => "’®", + "‘∑" => "’ß", "‘∂" => "’¶", "‘µ" => "’•", + "‘¥" => "’§", "‘≥" => "’£", "‘≤" => "’¢", + "‘±" => "’°", "‘é" => "‘è", "‘å" => "‘ç", + "‘ä" => "‘ã", "‘à" => "‘â", "‘Ü" => "‘á", + "‘Ñ" => "‘Ö", "‘Ç" => "‘É", "‘Ä" => "‘Å", + "”∏" => "”π", "Ӵ" => "”µ", "”≤" => "”≥", + "”∞" => "”±", "Ӯ" => "ӯ", "Ӭ" => "”≠", + "”™" => "”´", "”®" => "”©", "Ӧ" => "ӧ", + "Ӥ" => "”•", "Ӣ" => "ӣ", "” " => "”°", + "”û" => "ӟ", "”ú" => "”ù", "”ö" => "”õ", + "”ò" => "”ô", "Ӗ" => "”ó", "Ӕ" => "ӕ", + "Ӓ" => "ӓ", "Ӑ" => "ӑ", "Ӎ" => "ӎ", + "Ӌ" => "ӌ", "Ӊ" => "ӊ", "Ӈ" => "ӈ", + "”Ö" => "ӆ", "Ӄ" => "ӄ", "Ӂ" => "ӂ", + "“æ" => "“ø", "Ҽ" => "“Ω", "“∫" => "һ", + "“∏" => "“π", "“∂" => "“∑", "“¥" => "“µ", + "“≤" => "“≥", "“∞" => "“±", "“Æ" => "“Ø", + "Ҭ" => "“≠", "“™" => "“´", "“®" => "“©", + "Ҧ" => "“ß", "Ҥ" => "“•", "“¢" => "“£", + "“ " => "“°", "“û" => "“ü", "“ú" => "“ù", + "“ö" => "“õ", "“ò" => "“ô", "“ñ" => "“ó", + "“î" => "“ï", "“í" => "“ì", "“ê" => "“ë", + "“é" => "“è", "“å" => "“ç", "“ä" => "“ã", + "“Ä" => "“Å", "—æ" => "—ø", "—º" => "—Ω", + "—∫" => "—ª", "—∏" => "—π", "—∂" => "—∑", + "—¥" => "—µ", "—≤" => "—≥", "—∞" => "—±", + "—Æ" => "—Ø", "—¨" => "—≠", "—™" => "—´", + "—®" => "—©", "—¶" => "—ß", "—§" => "—•", + "—¢" => "—£", "— " => "—°", "–Ø" => "—è", + "–Æ" => "—é", "–≠" => "—ç", "–¨" => "—å", + "–´" => "—ã", "–™" => "—ä", "–©" => "—â", + "–®" => "—à", "–ß" => "—á", "–¶" => "—Ü", + "–•" => "—Ö", "–§" => "—Ñ", "–£" => "—É", + "–¢" => "—Ç", "–°" => "—Å", "– " => "—Ä", + "–ü" => "–ø", "–û" => "–æ", "–ù" => "–Ω", + "–ú" => "–º", "–õ" => "–ª", "–ö" => "–∫", + "–ô" => "–π", "–ò" => "–∏", "–ó" => "–∑", + "–ñ" => "–∂", "–ï" => "–µ", "–î" => "–¥", + "–ì" => "–≥", "–í" => "–≤", "–ë" => "–±", + "–ê" => "–∞", "–è" => "—ü", "–é" => "—û", + "–ç" => "—ù", "–å" => "—ú", "–ã" => "—õ", + "–ä" => "—ö", "–â" => "—ô", "–à" => "—ò", + "–á" => "—ó", "–Ü" => "—ñ", "–Ö" => "—ï", + "–Ñ" => "—î", "–É" => "—ì", "–Ç" => "—í", + "–Å" => "—ë", "–Ä" => "—ê", "Å“Â¥" => "θ", + "Ϯ" => "ϯ", "Ϭ" => "ϭ", "Å“â„¢" => "ϫ", + "Ϩ" => "ϩ", "Ϧ" => "ϧ", "Ϥ" => "ϥ", + "Ϣ" => "ϣ", "Å“ " => "ϡ", "Ϟ" => "ϟ", + "Ϝ" => "ϝ", "Ϛ" => "ϛ", "Ϙ" => "ϙ", + "Ϋ" => "ϋ", "Å’â„¢" => "ϊ", "Ω" => "ω", + "Ψ" => "ψ", "Χ" => "χ", "Φ" => "Å“Ãœ", + "Υ" => "υ", "Τ" => "τ", "Σ" => "σ", + "Ρ" => "Å“Ã…", "Å’ " => "π", "Ο" => "ο", + "Ξ" => "ξ", "Ν" => "ν", "Μ" => "μ", + "Λ" => "λ", "Κ" => "κ", "Ι" => "Å’Ï€", + "Θ" => "θ", "Η" => "η", "Ζ" => "ζ", + "Ε" => "ε", "Δ" => "Å’Â¥", "Γ" => "γ", + "Β" => "β", "Α" => "α", "Ώ" => "ώ", + "Ύ" => "ύ", "Å’Ã¥" => "Å“Ã¥", "Ί" => "ί", + "Ή" => "ή", "Έ" => "έ", "Å’Ãœ" => "ά", + "»≤" => "»≥", "»∞" => "»±", "Ȯ" => "ȯ", + "Ȭ" => "»≠", "»™" => "»´", "»®" => "»©", + "Ȧ" => "ȧ", "Ȥ" => "»•", "Ȣ" => "ȣ", + "» " => "∆û", "»û" => "ȟ", "»ú" => "»ù", + "»ö" => "»õ", "»ò" => "»ô", "Ȗ" => "»ó", + "Ȕ" => "ȕ", "Ȓ" => "ȓ", "Ȑ" => "ȑ", + "Ȏ" => "ȏ", "Ȍ" => "ȍ", "Ȋ" => "ȋ", + "Ȉ" => "ȉ", "Ȇ" => "ȇ", "Ȅ" => "»Ö", + "Ȃ" => "ȃ", "Ȁ" => "ȁ", "«æ" => "«ø", + "Ǽ" => "«Ω", "«∫" => "ǻ", "«∏" => "«π", + "«∑" => "∆ø", "«∂" => "ƕ", "«¥" => "«µ", + "«±" => "«≥", "«Æ" => "«Ø", "Ǭ" => "«≠", + "«™" => "«´", "«®" => "«©", "Ǧ" => "«ß", + "Ǥ" => "«•", "«¢" => "«£", "« " => "«°", + "«û" => "«ü", "«õ" => "«ú", "«ô" => "«ö", + "«ó" => "«ò", "«ï" => "«ñ", "«ì" => "«î", + "«ë" => "«í", "«è" => "«ê", "«ç" => "«é", + "«ä" => "«å", "«á" => "«â", "«Ñ" => "«Ü", + "Ƽ" => "∆Ω", "∆∏" => "∆π", "∆∑" => " í", + "∆µ" => "∆∂", "∆≥" => "∆¥", "∆≤" => " ã", + "∆±" => " ä", "Ư" => "∆∞", "Ʈ" => " à", + "Ƭ" => "∆≠", "Ʃ" => " É", "Ƨ" => "∆®", + "Ʀ" => " Ä", "Ƥ" => "ƥ", "∆¢" => "∆£", + "∆ " => "∆°", "Ɵ" => "…µ", "∆ù" => "…≤", + "∆ú" => "…Ø", "∆ò" => "∆ô", "∆ó" => "…®", + "Ɩ" => "…©", "Ɣ" => "…£", "Ɠ" => "… ", + "Ƒ" => "ƒ", "Ɛ" => "…õ", "Ə" => "…ô", + "Ǝ" => "«ù", "Ƌ" => "ƌ", "Ɗ" => "…ó", + "Ɖ" => "…ñ", "Ƈ" => "ƈ", "Ɔ" => "…î", + "Ƅ" => "∆Ö", "Ƃ" => "ƃ", "Ɓ" => "…ì", + "≈Ω" => "ž", "Ż" => "ż", "≈π" => "≈∫", + "≈∏" => "ÿ", "≈∂" => "≈∑", "≈¥" => "≈µ", + "≈≤" => "≈≥", "≈∞" => "≈±", "Ů" => "ů", + "Ŭ" => "≈≠", "≈™" => "≈´", "≈®" => "ũ", + "Ŧ" => "ŧ", "Ť" => "ť", "Ţ" => "≈£", + "≈ " => "š", "≈û" => "ş", "≈ú" => "≈ù", + "≈ö" => "≈õ", "≈ò" => "≈ô", "Ŗ" => "≈ó", + "Ŕ" => "ŕ", "Œ" => "œ", "Ő" => "ő", + "Ŏ" => "ŏ", "Ō" => "ō", "Ŋ" => "ŋ", + "Ň" => "ň", "≈Ö" => "ņ", "Ń" => "ń", + "Ł" => "ł", "ƒø" => "ŀ", "ƒΩ" => "ľ", + "Ļ" => "ļ", "Æ’Ï€" => "ĺ", "Ķ" => "ķ", + "Æ’Â¥" => "ĵ", "IJ" => "ij", "İ" => "i", + "Į" => "į", "Ĭ" => "ĭ", "Æ’â„¢" => "ƒ´", + "Ĩ" => "ĩ", "Ħ" => "ħ", "Ĥ" => "ĥ", + "Ģ" => "ģ", "Æ’ " => "ƒ°", "ƒû" => "ğ", + "ƒú" => "ƒù", "ƒö" => "ƒõ", "ƒò" => "ƒô", + "Ė" => "ƒó", "Ĕ" => "ĕ", "Ē" => "ē", + "Đ" => "đ", "Ď" => "ď", "Æ’Ã¥" => "č", + "Ċ" => "ċ", "Ĉ" => "ĉ", "Æ’Ãœ" => "ć", + "Ą" => "ƒÖ", "Ă" => "ă", "Ā" => "Æ’Ã…", + "√û" => "þ", "√ù" => "√Ω", "√ú" => "ü", + "√õ" => "û", "√ö" => "√∫", "√ô" => "√π", + "√ò" => "√∏", "Ö" => "ö", "Õ" => "õ", + "Ô" => "ô", "Ó" => "ó", "Ò" => "ò", + "Ñ" => "ñ", "Ð" => "√∞", "Ï" => "ï", + "Î" => "î", "Í" => "í", "Ì" => "ì", + "Ë" => "ë", "Ê" => "ê", "É" => "é", + "È" => "è", "Ç" => "ç", "Æ" => "æ", + "√Ö" => "å", "Ä" => "ä", "Ã" => "√£", + "Â" => "√¢", "Á" => "√°", "À" => "√ ", + "Z" => "z", "Y" => "y", "X" => "x", + "W" => "w", "V" => "v", "U" => "u", + "T" => "t", "S" => "s", "R" => "r", + "Q" => "q", "P" => "p", "O" => "o", + "N" => "n", "M" => "m", "L" => "l", + "K" => "k", "J" => "j", "I" => "i", + "H" => "h", "G" => "g", "F" => "f", + "E" => "e", "D" => "d", "C" => "c", + "B" => "b", "A" => "a", +); + + +$UTF8_TABLES['strtoupper'] = array( + "ÔΩö" => "Z", "ÔΩô" => "Ôºπ", "ÔΩò" => "X", + "ÔΩó" => "W", "ÔΩñ" => "V", "ÔΩï" => "U", + "ÔΩî" => "T", "ÔΩì" => "S", "ÔΩí" => "R", + "ÔΩë" => "Q", "ÔΩê" => "P", "ÔΩè" => "O", + "ÔΩé" => "N", "ÔΩç" => "M", "ÔΩå" => "L", + "ÔΩã" => "Ôº´", "ÔΩä" => "J", "ÔΩâ" => "I", + "ÔΩà" => "H", "ÔΩá" => "G", "ÔΩÜ" => "F", + "ÔΩÖ" => "E", "ÔΩÑ" => "D", "ÔΩÉ" => "C", + "ÔΩÇ" => "B", "ÔΩÅ" => "Ôº°", "·ø≥" => "·øº", + "·ø•" => "·ø¨", "·ø°" => "·ø©", "·ø " => "·ø®", + "·øë" => "·øô", "·øê" => "·øò", "·øÉ" => "·øå", + "·ææ" => "Ι", "·æ≥" => "ᾼ", "·æ±" => "·æπ", + "·æ∞" => "·æ∏", "·æß" => "ᾯ", "ᾦ" => "ᾮ", + "·æ•" => "·æ≠", "ᾤ" => "ᾬ", "ᾣ" => "·æ´", + "ᾢ" => "·æ™", "·æ°" => "·æ©", "·æ " => "·æ®", + "·æó" => "·æü", "·æñ" => "·æû", "·æï" => "·æù", + "·æî" => "·æú", "·æì" => "·æõ", "·æí" => "·æö", + "·æë" => "·æô", "·æê" => "·æò", "·æá" => "·æè", + "ᾆ" => "·æé", "·æÖ" => "·æç", "ᾄ" => "·æå", + "ᾃ" => "·æã", "ᾂ" => "·æä", "ᾁ" => "·æâ", + "ᾀ" => "·æà", "·ΩΩ" => "·øª", "·Ωº" => "·ø∫", + "·Ωª" => "·ø´", "·Ω∫" => "·ø™", "·Ωπ" => "·øπ", + "·Ω∏" => "·ø∏", "·Ω∑" => "·øõ", "·Ω∂" => "·øö", + "·Ωµ" => "·øã", "·Ω¥" => "·øä", "·Ω≥" => "·øâ", + "·Ω≤" => "·øà", "·Ω±" => "Ά", "·Ω∞" => "·æ∫", + "·Ωß" => "·ΩØ", "·Ω¶" => "·ΩÆ", "·Ω•" => "·Ω≠", + "·Ω§" => "·Ω¨", "·Ω£" => "·Ω´", "·Ω¢" => "·Ω™", + "·Ω°" => "·Ω©", "·Ω " => "·Ω®", "·Ωó" => "·Ωü", + "·Ωï" => "·Ωù", "·Ωì" => "·Ωõ", "·Ωë" => "·Ωô", + "·ΩÖ" => "·Ωç", "·ΩÑ" => "·Ωå", "·ΩÉ" => "·Ωã", + "·ΩÇ" => "·Ωä", "·ΩÅ" => "·Ωâ", "·ΩÄ" => "·Ωà", + "ἷ" => "·ºø", "ἶ" => "Ἶ", "ἵ" => "·ºΩ", + "ἴ" => "Ἴ", "ἳ" => "Ἳ", "ἲ" => "Ἲ", + "ἱ" => "·ºπ", "ἰ" => "Ἰ", "ἧ" => "Ἧ", + "ἦ" => "Ἦ", "ἥ" => "Ἥ", "ἤ" => "Ἤ", + "ἣ" => "·º´", "ἢ" => "Ἢ", "·º°" => "Ἡ", + "·º " => "Ἠ", "ἕ" => "·ºù", "ἔ" => "·ºú", + "ἓ" => "·ºõ", "ἒ" => "·ºö", "ἑ" => "·ºô", + "ἐ" => "·ºò", "ἇ" => "Ἇ", "ἆ" => "Ἆ", + "·ºÖ" => "Ἅ", "ἄ" => "Ἄ", "ἃ" => "Ἃ", + "ἂ" => "Ἂ", "ἁ" => "Ἁ", "ἀ" => "Ἀ", + "·ªπ" => "Ỹ", "ỷ" => "Ỷ", "ỵ" => "Ỵ", + "ỳ" => "Ỳ", "ự" => "Ự", "ữ" => "Ữ", + "ử" => "Ử", "·ª´" => "Ừ", "ứ" => "Ứ", + "ủ" => "Ủ", "ụ" => "Ụ", "ợ" => "Ợ", + "·ª°" => "·ª ", "ở" => "·ªû", "·ªù" => "·ªú", + "·ªõ" => "·ªö", "·ªô" => "·ªò", "·ªó" => "Ỗ", + "ổ" => "Ổ", "ồ" => "Ồ", "ố" => "Ố", + "ỏ" => "Ỏ", "ọ" => "Ọ", "ị" => "Ị", + "ỉ" => "Ỉ", "ệ" => "Ệ", "·ªÖ" => "Ễ", + "ể" => "Ể", "ề" => "Ề", "·∫ø" => "Ế", + "·∫Ω" => "Ẽ", "ẻ" => "·∫∫", "·∫π" => "·∫∏", + "·∫∑" => "·∫∂", "·∫µ" => "·∫¥", "·∫≥" => "·∫≤", + "·∫±" => "·∫∞", "ắ" => "Ắ", "·∫≠" => "Ậ", + "·∫´" => "·∫™", "ẩ" => "·∫®", "ầ" => "Ầ", + "ấ" => "Ấ", "·∫£" => "·∫¢", "·∫°" => "·∫ ", + "·∫õ" => "·π ", "ẕ" => "Ẕ", "ẓ" => "Ẓ", + "ẑ" => "Ẑ", "ẏ" => "Ẏ", "ẍ" => "Ẍ", + "ẋ" => "Ẋ", "ẉ" => "Ẉ", "ẇ" => "Ẇ", + "·∫Ö" => "Ẅ", "ẃ" => "Ẃ", "ẁ" => "Ẁ", + "·πø" => "·πæ", "·πΩ" => "·πº", "·πª" => "·π∫", + "·ππ" => "·π∏", "·π∑" => "·π∂", "·πµ" => "·π¥", + "·π≥" => "·π≤", "·π±" => "·π∞", "ṯ" => "Ṯ", + "·π≠" => "·π¨", "·π´" => "·π™", "·π©" => "·π®", + "·πß" => "·π¶", "·π•" => "·π§", "·π£" => "·π¢", + "·π°" => "·π ", "·πü" => "·πû", "·πù" => "·πú", + "·πõ" => "·πö", "·πô" => "·πò", "·πó" => "·πñ", + "·πï" => "·πî", "·πì" => "·πí", "·πë" => "·πê", + "·πè" => "·πé", "·πç" => "·πå", "·πã" => "·πä", + "·πâ" => "·πà", "·πá" => "Ṇ", "·πÖ" => "Ṅ", + "ṃ" => "Ṃ", "ṁ" => "Ṁ", "·∏ø" => "Ḿ", + "·∏Ω" => "Ḽ", "ḻ" => "·∏∫", "·∏π" => "·∏∏", + "·∏∑" => "·∏∂", "·∏µ" => "·∏¥", "·∏≥" => "·∏≤", + "·∏±" => "·∏∞", "ḯ" => "Ḯ", "·∏≠" => "Ḭ", + "·∏´" => "·∏™", "ḩ" => "·∏®", "ḧ" => "Ḧ", + "ḥ" => "Ḥ", "·∏£" => "·∏¢", "·∏°" => "·∏ ", + "ḟ" => "·∏û", "·∏ù" => "·∏ú", "·∏õ" => "·∏ö", + "·∏ô" => "·∏ò", "·∏ó" => "Ḗ", "ḕ" => "Ḕ", + "ḓ" => "Ḓ", "ḑ" => "Ḑ", "ḏ" => "Ḏ", + "ḍ" => "Ḍ", "ḋ" => "Ḋ", "ḉ" => "Ḉ", + "ḇ" => "Ḇ", "·∏Ö" => "Ḅ", "ḃ" => "Ḃ", + "ḁ" => "Ḁ", "ֆ" => "’ñ", "÷Ö" => "’ï", + "ք" => "’î", "փ" => "’ì", "ւ" => "’í", + "ց" => "’ë", "ր" => "’ê", "’ø" => "’è", + "’æ" => "’é", "’Ω" => "’ç", "’º" => "’å", + "’ª" => "’ã", "’∫" => "’ä", "’π" => "’â", + "’∏" => "’à", "’∑" => "’á", "’∂" => "’Ü", + "’µ" => "’Ö", "’¥" => "’Ñ", "’≥" => "’É", + "’≤" => "’Ç", "’±" => "’Å", "’∞" => "’Ä", + "’Ø" => "‘ø", "’Æ" => "‘æ", "’≠" => "‘Ω", + "’¨" => "Լ", "’´" => "Ի", "’™" => "‘∫", + "’©" => "‘π", "’®" => "‘∏", "’ß" => "‘∑", + "’¶" => "‘∂", "’•" => "‘µ", "’§" => "‘¥", + "’£" => "‘≥", "’¢" => "‘≤", "’°" => "‘±", + "‘è" => "‘é", "‘ç" => "‘å", "‘ã" => "‘ä", + "‘â" => "‘à", "‘á" => "‘Ü", "‘Ö" => "‘Ñ", + "‘É" => "‘Ç", "‘Å" => "‘Ä", "”π" => "”∏", + "”µ" => "Ӵ", "”≥" => "”≤", "”±" => "”∞", + "ӯ" => "Ӯ", "”≠" => "Ӭ", "”´" => "”™", + "”©" => "”®", "ӧ" => "Ӧ", "”•" => "Ӥ", + "ӣ" => "Ӣ", "”°" => "” ", "ӟ" => "”û", + "”ù" => "”ú", "”õ" => "”ö", "”ô" => "”ò", + "”ó" => "Ӗ", "ӕ" => "Ӕ", "ӓ" => "Ӓ", + "ӑ" => "Ӑ", "ӎ" => "Ӎ", "ӌ" => "Ӌ", + "ӊ" => "Ӊ", "ӈ" => "Ӈ", "ӆ" => "”Ö", + "ӄ" => "Ӄ", "ӂ" => "Ӂ", "“ø" => "“æ", + "“Ω" => "Ҽ", "һ" => "“∫", "“π" => "“∏", + "“∑" => "“∂", "“µ" => "“¥", "“≥" => "“≤", + "“±" => "“∞", "“Ø" => "“Æ", "“≠" => "Ҭ", + "“´" => "“™", "“©" => "“®", "“ß" => "Ҧ", + "“•" => "Ҥ", "“£" => "“¢", "“°" => "“ ", + "“ü" => "“û", "“ù" => "“ú", "“õ" => "“ö", + "“ô" => "“ò", "“ó" => "“ñ", "“ï" => "“î", + "“ì" => "“í", "“ë" => "“ê", "“è" => "“é", + "“ç" => "“å", "“ã" => "“ä", "“Å" => "“Ä", + "—ø" => "—æ", "—Ω" => "—º", "—ª" => "—∫", + "—π" => "—∏", "—∑" => "—∂", "—µ" => "—¥", + "—≥" => "—≤", "—±" => "—∞", "—Ø" => "—Æ", + "—≠" => "—¨", "—´" => "—™", "—©" => "—®", + "—ß" => "—¶", "—•" => "—§", "—£" => "—¢", + "—°" => "— ", "—ü" => "–è", "—û" => "–é", + "—ù" => "–ç", "—ú" => "–å", "—õ" => "–ã", + "—ö" => "–ä", "—ô" => "–â", "—ò" => "–à", + "—ó" => "–á", "—ñ" => "–Ü", "—ï" => "–Ö", + "—î" => "–Ñ", "—ì" => "–É", "—í" => "–Ç", + "—ë" => "–Å", "—ê" => "–Ä", "—è" => "–Ø", + "—é" => "–Æ", "—ç" => "–≠", "—å" => "–¨", + "—ã" => "–´", "—ä" => "–™", "—â" => "–©", + "—à" => "–®", "—á" => "–ß", "—Ü" => "–¶", + "—Ö" => "–•", "—Ñ" => "–§", "—É" => "–£", + "—Ç" => "–¢", "—Å" => "–°", "—Ä" => "– ", + "–ø" => "–ü", "–æ" => "–û", "–Ω" => "–ù", + "–º" => "–ú", "–ª" => "–õ", "–∫" => "–ö", + "–π" => "–ô", "–∏" => "–ò", "–∑" => "–ó", + "–∂" => "–ñ", "–µ" => "–ï", "–¥" => "–î", + "–≥" => "–ì", "–≤" => "–í", "–±" => "–ë", + "–∞" => "–ê", "ϵ" => "Ε", "ϲ" => "Σ", + "ϱ" => "Ρ", "ϰ" => "Κ", "ϯ" => "Ϯ", + "ϭ" => "Ϭ", "ϫ" => "Å“â„¢", "ϩ" => "Ϩ", + "ϧ" => "Ϧ", "ϥ" => "Ϥ", "ϣ" => "Ϣ", + "ϡ" => "Å“ ", "ϟ" => "Ϟ", "ϝ" => "Ϝ", + "ϛ" => "Ϛ", "ϙ" => "Ϙ", "ϖ" => "Å’ ", + "ϕ" => "Φ", "ϑ" => "Θ", "ϐ" => "Β", + "ώ" => "Ώ", "ύ" => "Ύ", "Å“Ã¥" => "Å’Ã¥", + "ϋ" => "Ϋ", "ϊ" => "Å’â„¢", "ω" => "Ω", + "ψ" => "Ψ", "χ" => "Χ", "Å“Ãœ" => "Φ", + "υ" => "Υ", "τ" => "Τ", "σ" => "Σ", + "ς" => "Σ", "Å“Ã…" => "Ρ", "π" => "Å’ ", + "ο" => "Ο", "ξ" => "Ξ", "ν" => "Ν", + "μ" => "Μ", "λ" => "Λ", "κ" => "Κ", + "Å’Ï€" => "Ι", "θ" => "Θ", "η" => "Η", + "ζ" => "Ζ", "ε" => "Ε", "Å’Â¥" => "Δ", + "γ" => "Γ", "β" => "Β", "α" => "Α", + "ί" => "Ί", "ή" => "Ή", "έ" => "Έ", + "ά" => "Å’Ãœ", " í" => "∆∑", " ã" => "∆≤", + " ä" => "∆±", " à" => "Ʈ", " É" => "Ʃ", + " Ä" => "Ʀ", "…µ" => "Ɵ", "…≤" => "∆ù", + "…Ø" => "∆ú", "…©" => "Ɩ", "…®" => "∆ó", + "…£" => "Ɣ", "… " => "Ɠ", "…õ" => "Ɛ", + "…ô" => "Ə", "…ó" => "Ɗ", "…ñ" => "Ɖ", + "…î" => "Ɔ", "…ì" => "Ɓ", "»≥" => "»≤", + "»±" => "»∞", "ȯ" => "Ȯ", "»≠" => "Ȭ", + "»´" => "»™", "»©" => "»®", "ȧ" => "Ȧ", + "»•" => "Ȥ", "ȣ" => "Ȣ", "ȟ" => "»û", + "»ù" => "»ú", "»õ" => "»ö", "»ô" => "»ò", + "»ó" => "Ȗ", "ȕ" => "Ȕ", "ȓ" => "Ȓ", + "ȑ" => "Ȑ", "ȏ" => "Ȏ", "ȍ" => "Ȍ", + "ȋ" => "Ȋ", "ȉ" => "Ȉ", "ȇ" => "Ȇ", + "»Ö" => "Ȅ", "ȃ" => "Ȃ", "ȁ" => "Ȁ", + "«ø" => "«æ", "«Ω" => "Ǽ", "ǻ" => "«∫", + "«π" => "«∏", "«µ" => "«¥", "«≥" => "«≤", + "«Ø" => "«Æ", "«≠" => "Ǭ", "«´" => "«™", + "«©" => "«®", "«ß" => "Ǧ", "«•" => "Ǥ", + "«£" => "«¢", "«°" => "« ", "«ü" => "«û", + "«ù" => "Ǝ", "«ú" => "«õ", "«ö" => "«ô", + "«ò" => "«ó", "«ñ" => "«ï", "«î" => "«ì", + "«í" => "«ë", "«ê" => "«è", "«é" => "«ç", + "«å" => "«ã", "«â" => "«à", "«Ü" => "«Ö", + "∆ø" => "«∑", "∆Ω" => "Ƽ", "∆π" => "∆∏", + "∆∂" => "∆µ", "∆¥" => "∆≥", "∆∞" => "Ư", + "∆≠" => "Ƭ", "∆®" => "Ƨ", "ƥ" => "Ƥ", + "∆£" => "∆¢", "∆°" => "∆ ", "∆û" => "» ", + "∆ô" => "∆ò", "ƕ" => "«∂", "ƒ" => "Ƒ", + "ƌ" => "Ƌ", "ƈ" => "Ƈ", "∆Ö" => "Ƅ", + "ƃ" => "Ƃ", "≈ø" => "S", "ž" => "≈Ω", + "ż" => "Ż", "≈∫" => "≈π", "≈∑" => "≈∂", + "≈µ" => "≈¥", "≈≥" => "≈≤", "≈±" => "≈∞", + "ů" => "Ů", "≈≠" => "Ŭ", "≈´" => "≈™", + "ũ" => "≈®", "ŧ" => "Ŧ", "ť" => "Ť", + "≈£" => "Ţ", "š" => "≈ ", "ş" => "≈û", + "≈ù" => "≈ú", "≈õ" => "≈ö", "≈ô" => "≈ò", + "≈ó" => "Ŗ", "ŕ" => "Ŕ", "œ" => "Œ", + "ő" => "Ő", "ŏ" => "Ŏ", "ō" => "Ō", + "ŋ" => "Ŋ", "ň" => "Ň", "ņ" => "≈Ö", + "ń" => "Ń", "ł" => "Ł", "ŀ" => "ƒø", + "ľ" => "ƒΩ", "ļ" => "Ļ", "ĺ" => "Æ’Ï€", + "ķ" => "Ķ", "ĵ" => "Æ’Â¥", "ij" => "IJ", + "ı" => "I", "į" => "Į", "ĭ" => "Ĭ", + "ƒ´" => "Æ’â„¢", "ĩ" => "Ĩ", "ħ" => "Ħ", + "ĥ" => "Ĥ", "ģ" => "Ģ", "ƒ°" => "Æ’ ", + "ğ" => "ƒû", "ƒù" => "ƒú", "ƒõ" => "ƒö", + "ƒô" => "ƒò", "ƒó" => "Ė", "ĕ" => "Ĕ", + "ē" => "Ē", "đ" => "Đ", "ď" => "Ď", + "č" => "Æ’Ã¥", "ċ" => "Ċ", "ĉ" => "Ĉ", + "ć" => "Æ’Ãœ", "ƒÖ" => "Ą", "ă" => "Ă", + "Æ’Ã…" => "Ā", "ÿ" => "≈∏", "þ" => "√û", + "√Ω" => "√ù", "ü" => "√ú", "û" => "√õ", + "√∫" => "√ö", "√π" => "√ô", "√∏" => "√ò", + "ö" => "Ö", "õ" => "Õ", "ô" => "Ô", + "ó" => "Ó", "ò" => "Ò", "ñ" => "Ñ", + "√∞" => "Ð", "ï" => "Ï", "î" => "Î", + "í" => "Í", "ì" => "Ì", "ë" => "Ë", + "ê" => "Ê", "é" => "É", "è" => "È", + "ç" => "Ç", "æ" => "Æ", "å" => "√Ö", + "ä" => "Ä", "√£" => "Ã", "√¢" => "Â", + "√°" => "Á", "√ " => "À", "µ" => "Μ", + "z" => "Z", "y" => "Y", "x" => "X", + "w" => "W", "v" => "V", "u" => "U", + "t" => "T", "s" => "S", "r" => "R", + "q" => "Q", "p" => "P", "o" => "O", + "n" => "N", "m" => "M", "l" => "L", + "k" => "K", "j" => "J", "i" => "I", + "h" => "H", "g" => "G", "f" => "F", + "e" => "E", "d" => "D", "c" => "C", + "b" => "B", "a" => "A", +); diff --git a/plugins/all-in-one-seo-pack/inc/aioseop_functions.php b/plugins/all-in-one-seo-pack/inc/aioseop_functions.php new file mode 100644 index 0000000..c100e70 --- /dev/null +++ b/plugins/all-in-one-seo-pack/inc/aioseop_functions.php @@ -0,0 +1,958 @@ +load_modules(); + } +} + +if ( ! function_exists( 'aioseop_get_options' ) ) { + /** + * @return mixed|void + */ + function aioseop_get_options() { + global $aioseop_options; + $aioseop_options = get_option( 'aioseop_options' ); + $aioseop_options = apply_filters( 'aioseop_get_options', $aioseop_options ); + + return $aioseop_options; + } +} + +if ( ! function_exists( 'aioseop_update_settings_check' ) ) { + /** + * Check if settings need to be updated / migrated from old version. + * + * @TODO See when this is from and if we can move it elsewhere... our new db updates/upgrades class? + */ + function aioseop_update_settings_check() { + global $aioseop_options; + if ( empty( $aioseop_options ) || isset( $_POST['aioseop_migrate_options'] ) ) { + aioseop_mrt_mkarry(); + } + // WPML has now attached to filters, read settings again so they can be translated. + aioseop_get_options(); + $update_options = false; + if ( ! empty( $aioseop_options ) ) { + if ( ! empty( $aioseop_options['aiosp_archive_noindex'] ) ) { // Migrate setting for noindex archives. + $aioseop_options['aiosp_archive_date_noindex'] = $aioseop_options['aiosp_archive_author_noindex'] = $aioseop_options['aiosp_archive_noindex']; + unset( $aioseop_options['aiosp_archive_noindex'] ); + $update_options = true; + } + if ( ! empty( $aioseop_options['aiosp_archive_title_format'] ) && empty( $aioseop_options['aiosp_date_title_format'] ) ) { + $aioseop_options['aiosp_date_title_format'] = $aioseop_options['aiosp_archive_title_format']; + unset( $aioseop_options['aiosp_archive_title_format'] ); + $update_options = true; + } + if ( ! empty( $aioseop_options['aiosp_archive_title_format'] ) && ( $aioseop_options['aiosp_archive_title_format'] === '%date% | %blog_title%' ) ) { + $aioseop_options['aiosp_archive_title_format'] = '%archive_title% | %blog_title%'; + $update_options = true; + } + if ( $update_options ) { + update_option( 'aioseop_options', $aioseop_options ); + } + } + } +} + +if ( ! function_exists( 'aioseop_mrt_mkarry' ) ) { + /** + * Initialize settings to defaults. + * + * @TODO Should also move. + */ + function aioseop_mrt_mkarry() { + global $aiosp; + global $aioseop_options; + $naioseop_options = $aiosp->default_options(); + + if ( get_option( 'aiosp_post_title_format' ) ) { + foreach ( $naioseop_options as $aioseop_opt_name => $value ) { + if ( $aioseop_oldval = get_option( $aioseop_opt_name ) ) { + $naioseop_options[ $aioseop_opt_name ] = $aioseop_oldval; + } + if ( $aioseop_oldval == '' ) { + $naioseop_options[ $aioseop_opt_name ] = ''; + } + delete_option( $aioseop_opt_name ); + } + } + add_option( 'aioseop_options', $naioseop_options ); + $aioseop_options = $naioseop_options; + } +} + +if ( ! function_exists( 'aioseop_get_version' ) ) { + /** + * Returns the version. + * + * I'm not sure why we have BOTH a function and a constant for this. -mrt + * + * @return string + */ + function aioseop_get_version() { + return AIOSEOP_VERSION; + } +} + +if ( ! function_exists( 'aioseop_option_isset' ) ) { + /** + * Checks if an option isset. + * + * @param $option + * + * @return bool + */ + function aioseop_option_isset( $option ) { + global $aioseop_options; + + return ( isset( $aioseop_options[ $option ] ) && $aioseop_options[ $option ] ); + } +} + +if ( ! function_exists( 'aioseop_addmycolumns' ) ) { + /** + * Adds posttype columns. + * + */ + function aioseop_addmycolumns() { + global $aioseop_options, $pagenow; + $aiosp_posttypecolumns = Array(); + if ( ! empty( $aioseop_options ) && ! empty( $aioseop_options['aiosp_posttypecolumns'] ) ) { + $aiosp_posttypecolumns = $aioseop_options['aiosp_posttypecolumns']; + } + if ( ! empty( $pagenow ) && ( $pagenow === 'upload.php' ) ) { + $post_type = 'attachment'; + } elseif ( ! isset( $_REQUEST['post_type'] ) ) { + $post_type = 'post'; + } else { + $post_type = $_REQUEST['post_type']; + } + if ( is_array( $aiosp_posttypecolumns ) && in_array( $post_type, $aiosp_posttypecolumns ) ) { + add_action( 'admin_head', 'aioseop_admin_head' ); + if ( $post_type === 'page' ) { + add_filter( 'manage_pages_columns', 'aioseop_mrt_pcolumns' ); + } elseif ( $post_type === 'attachment' ) { + add_filter( 'manage_media_columns', 'aioseop_mrt_pcolumns' ); + } else { + add_filter( 'manage_posts_columns', 'aioseop_mrt_pcolumns' ); + } + if ( $post_type === 'attachment' ) { + add_action( 'manage_media_custom_column', 'aioseop_mrt_pccolumn', 10, 2 ); + } elseif ( is_post_type_hierarchical( $post_type ) ) { + add_action( 'manage_pages_custom_column', 'aioseop_mrt_pccolumn', 10, 2 ); + } else { + add_action( 'manage_posts_custom_column', 'aioseop_mrt_pccolumn', 10, 2 ); + } + } + } +} + +if ( ! function_exists( 'aioseop_mrt_pcolumns' ) ) { + + /** + * @param $aioseopc + * + * @return mixed + */ + function aioseop_mrt_pcolumns( $aioseopc ) { + global $aioseop_options; + $aioseopc['seotitle'] = __( 'SEO Title', 'all-in-one-seo-pack' ); + $aioseopc['seodesc'] = __( 'SEO Description', 'all-in-one-seo-pack' ); + if ( empty( $aioseop_options['aiosp_togglekeywords'] ) ) { + $aioseopc['seokeywords'] = __( 'SEO Keywords', 'all-in-one-seo-pack' ); + } + + return $aioseopc; + } +} + +if ( ! function_exists( 'aioseop_admin_head' ) ) { + + function aioseop_admin_head() { + echo ''; + ?> + + + + ID; + + if ( ! empty( $_GET['aioseop_reset_notices'] ) ) { + delete_user_meta( $user_id, 'aioseop_ignore_notice' ); + } + if ( ! empty( $_GET['aioseop_ignore_notice'] ) ) { + add_user_meta( $user_id, 'aioseop_ignore_notice', $_GET['aioseop_ignore_notice'], false ); + } + } + } +} + +if ( ! function_exists( 'aioseop_output_notice' ) ) { + + /** + * @param $message + * @param string $id + * @param string $class + * + * @return bool + */ + function aioseop_output_notice( $message, $id = '', $class = 'updated fade' ) { + $class = 'aioseop_notice ' . $class; + if ( ! empty( $class ) ) { + $class = ' class="' . esc_attr( $class ) . '"'; + } + if ( ! empty( $id ) ) { + $class .= ' id="' . esc_attr( $id ) . '"'; + } + $dismiss = ' '; + echo "" . wp_kses_post( $message ) . '
'; + + return true; + } +} + +if ( ! function_exists( 'aioseop_output_dismissable_notice' ) ) { + + /** + * @param $message + * @param string $id + * @param string $class + * + * @return bool + */ + function aioseop_output_dismissable_notice( $message, $id = '', $class = 'updated fade' ) { + global $current_user; + if ( ! empty( $current_user ) ) { + $user_id = $current_user->ID; + $msgid = md5( $message ); + $ignore = get_user_meta( $user_id, 'aioseop_ignore_notice' ); + if ( ! empty( $ignore ) && in_array( $msgid, $ignore ) ) { + return false; + } + global $wp; + $qa = Array(); + wp_parse_str( $_SERVER['QUERY_STRING'], $qa ); + $qa['aioseop_ignore_notice'] = $msgid; + $url = '?' . build_query( $qa ); + $message = '

' . $message . '

Dismiss

'; + } + + return aioseop_output_notice( $message, $id, $class ); + } +} + +if ( ! function_exists( 'aioseop_ajax_save_meta' ) ) { + + function aioseop_ajax_save_meta() { + if ( ! empty( $_POST['_inline_edit'] ) && ( $_POST['_inline_edit'] !== 'undefined' ) ) { + check_ajax_referer( 'inlineeditnonce', '_inline_edit' ); + } + $post_id = intval( $_POST['post_id'] ); + $new_meta = strip_tags( $_POST['new_meta'] ); + $target = $_POST['target_meta']; + check_ajax_referer( 'aioseop_meta_' . $target . '_' . $post_id, '_nonce' ); + $result = ''; + if ( in_array( $target, Array( + 'title', + 'description', + 'keywords', + ) ) && current_user_can( 'edit_post', $post_id ) + ) { + update_post_meta( $post_id, '_aioseop_' . $target, esc_attr( $new_meta ) ); + $result = get_post_meta( $post_id, '_aioseop_' . $target, true ); + } else { + die(); + } + if ( $result != '' ): + $label = "'; + else: + $label = "" . __( 'No', 'all-in-one-seo-pack' ) . ' ' . $target . ''; + endif; + $nonce = wp_create_nonce( "aioseop_meta_{$target}_{$post_id}" ); + $output = '' + . ' ' . $label; + die( "jQuery('div#aioseop_" . $target . '_' . $post_id . "').fadeOut('fast', function() { var my_label = " . json_encode( $output ) . "; + jQuery('div#aioseop_" . $target . '_' . $post_id . "').html(my_label).fadeIn('fast'); + });" ); + } +} + +if ( ! function_exists( 'aioseop_ajax_init' ) ) { + + function aioseop_ajax_init() { + if ( ! empty( $_POST ) && ! empty( $_POST['settings'] ) && ( ! empty( $_POST['nonce-aioseop'] ) || ( ! empty( $_POST['nonce-aioseop-edit'] ) ) ) && ! empty( $_POST['options'] ) ) { + $_POST = stripslashes_deep( $_POST ); + $settings = esc_attr( $_POST['settings'] ); + if ( ! defined( 'AIOSEOP_AJAX_MSG_TMPL' ) ) { + define( 'AIOSEOP_AJAX_MSG_TMPL', "jQuery('div#aiosp_$settings').fadeOut('fast', function(){jQuery('div#aiosp_$settings').html('%s').fadeIn('fast');});" ); + } + + if ( ! wp_verify_nonce( $_POST['nonce-aioseop'], 'aioseop-nonce' ) ) { + die( sprintf( AIOSEOP_AJAX_MSG_TMPL, __( 'Unauthorized access; try reloading the page.', 'all-in-one-seo-pack' ) ) ); + } + } else { + die( 0 ); + } + } +} + +/** + * @param $return + * @param $url + * @param $attr + * + * @return mixed + */ +function aioseop_embed_handler_html( $return, $url, $attr ) { + return AIO_ProGeneral::aioseop_embed_handler_html(); +} + +function aioseop_ajax_update_oembed() { + AIO_ProGeneral::aioseop_ajax_update_oembed(); +} + +if ( ! function_exists( 'aioseop_ajax_save_url' ) ) { + + function aioseop_ajax_save_url() { + aioseop_ajax_init(); + $options = Array(); + parse_str( $_POST['options'], $options ); + foreach ( $options as $k => $v ) { + $_POST[ $k ] = $v; + } + $_POST['action'] = 'aiosp_update_module'; + global $aiosp, $aioseop_modules; + aioseop_load_modules(); + $aiosp->admin_menu(); + if ( ! empty( $_POST['settings'] ) && ( $_POST['settings'] === 'video_sitemap_addl_pages' ) ) { + $module = $aioseop_modules->return_module( 'All_in_One_SEO_Pack_Video_Sitemap' ); + } elseif ( ! empty( $_POST['settings'] ) && ( $_POST['settings'] === 'news_sitemap_addl_pages' ) ) { + $module = $aioseop_modules->return_module( 'All_in_One_SEO_Pack_News_Sitemap' ); + } else { + $module = $aioseop_modules->return_module( 'All_in_One_SEO_Pack_Sitemap' ); + } + $_POST['location'] = null; + $_POST['Submit'] = 'ajax'; + $module->add_page_hooks(); + $prefix = $module->get_prefix(); + $_POST = $module->get_current_options( $_POST, null ); + $module->handle_settings_updates( null ); + $options = $module->get_current_options( Array(), null ); + $output = $module->display_custom_options( '', Array( + 'name' => $prefix . 'addl_pages', + 'type' => 'custom', + 'save' => true, + 'value' => $options[ $prefix . 'addl_pages' ], + 'attr' => '', + ) ); + $output = str_replace( "'", "\'", $output ); + $output = str_replace( "\n", '\n', $output ); + die( sprintf( AIOSEOP_AJAX_MSG_TMPL, $output ) ); + } +} + +if ( ! function_exists( 'aioseop_ajax_delete_url' ) ) { + + function aioseop_ajax_delete_url() { + aioseop_ajax_init(); + $options = Array(); + $options = esc_attr( $_POST['options'] ); + $_POST['action'] = 'aiosp_update_module'; + global $aiosp, $aioseop_modules; + aioseop_load_modules(); + $aiosp->admin_menu(); + $module = $aioseop_modules->return_module( 'All_in_One_SEO_Pack_Sitemap' ); + $_POST['location'] = null; + $_POST['Submit'] = 'ajax'; + $module->add_page_hooks(); + $_POST = (Array) $module->get_current_options( $_POST, null ); + if ( ! empty( $_POST['aiosp_sitemap_addl_pages'] ) && is_object( $_POST['aiosp_sitemap_addl_pages'] ) ) { + $_POST['aiosp_sitemap_addl_pages'] = (Array) $_POST['aiosp_sitemap_addl_pages']; + } + if ( ! empty( $_POST['aiosp_sitemap_addl_pages'] ) && ( ! empty( $_POST['aiosp_sitemap_addl_pages'][ $options ] ) ) ) { + unset( $_POST['aiosp_sitemap_addl_pages'][ $options ] ); + if ( empty( $_POST['aiosp_sitemap_addl_pages'] ) ) { + $_POST['aiosp_sitemap_addl_pages'] = ''; + } else { + $_POST['aiosp_sitemap_addl_pages'] = json_encode( $_POST['aiosp_sitemap_addl_pages'] ); + } + $module->handle_settings_updates( null ); + $options = $module->get_current_options( Array(), null ); + $output = $module->display_custom_options( '', Array( + 'name' => 'aiosp_sitemap_addl_pages', + 'type' => 'custom', + 'save' => true, + 'value' => $options['aiosp_sitemap_addl_pages'], + 'attr' => '', + ) ); + $output = str_replace( "'", "\'", $output ); + $output = str_replace( "\n", '\n', $output ); + } else { + $output = sprintf( __( 'Row %s not found; no rows were deleted.', 'all-in-one-seo-pack' ), esc_attr( $options ) ); + } + die( sprintf( AIOSEOP_AJAX_MSG_TMPL, $output ) ); + } +} + +if ( ! function_exists( 'aioseop_ajax_scan_header' ) ) { + + function aioseop_ajax_scan_header() { + $_POST['options'] = 'foo'; + aioseop_ajax_init(); + $options = Array(); + parse_str( $_POST['options'], $options ); + foreach ( $options as $k => $v ) { + $_POST[ $k ] = $v; + } + $_POST['action'] = 'aiosp_update_module'; + $_POST['location'] = null; + $_POST['Submit'] = 'ajax'; + ob_start(); + do_action( 'wp' ); + global $aioseop_modules; + $module = $aioseop_modules->return_module( 'All_in_One_SEO_Pack_Opengraph' ); + wp_head(); + $output = ob_get_clean(); + global $aiosp; + $output = $aiosp->html_string_to_array( $output ); + $meta = ''; + $metatags = Array( + 'facebook' => Array( 'name' => 'property', 'value' => 'content' ), + 'twitter' => Array( 'name' => 'name', 'value' => 'value' ), + 'google+' => Array( 'name' => 'itemprop', 'value' => 'content' ), + ); + $metadata = Array( + 'facebook' => Array( + 'title' => 'og:title', + 'type' => 'og:type', + 'url' => 'og:url', + 'thumbnail' => 'og:image', + 'sitename' => 'og:site_name', + 'key' => 'fb:admins', + 'description' => 'og:description', + ), + 'google+' => Array( + 'thumbnail' => 'image', + 'title' => 'name', + 'description' => 'description', + ), + 'twitter' => Array( + 'card' => 'twitter:card', + 'url' => 'twitter:url', + 'title' => 'twitter:title', + 'description' => 'twitter:description', + 'thumbnail' => 'twitter:image', + ), + ); + if ( ! empty( $output ) && ! empty( $output['head'] ) && ! empty( $output['head']['meta'] ) ) { + foreach ( $output['head']['meta'] as $v ) { + if ( ! empty( $v['@attributes'] ) ) { + $m = $v['@attributes']; + foreach ( $metatags as $type => $tags ) { + if ( ! empty( $m[ $tags['name'] ] ) && ! empty( $m[ $tags['value'] ] ) ) { + foreach ( $metadata[ $type ] as $tk => $tv ) { + if ( $m[ $tags['name'] ] == $tv ) { + $meta .= "" . sprintf( __( 'Duplicate %s Meta' ), ucwords( $type ) ) . '' . ucwords( $tk ) . "{$m[$tags['name']]}{$m[$tags['value']]}\n"; + } + } + } + } + } + } + } + if ( empty( $meta ) ) { + $meta = '' . __( 'No duplicate meta tags found.', 'all-in-one-seo-pack' ) . ''; + } else { + $meta = "" . $meta . '
Meta For SiteKind of MetaElement NameElement Value
'; + $meta .= "

" . __( 'What Does This Mean?', 'all-in-one-seo-pack' ) . "

" + . '

' . __( 'All in One SEO Pack has detected that a plugin(s) or theme is also outputting social meta tags on your site. You can view this social meta in the source code of your site (check your browser help for instructions on how to view source code).', 'all-in-one-seo-pack' ) + . '

' . __( 'You may prefer to use the social meta tags that are being output by the other plugin(s) or theme. If so, then you should deactivate this Social Meta feature in All in One SEO Pack Feature Manager.', 'all-in-one-seo-pack' ) + . '

' . __( 'You should avoid duplicate social meta tags. You can use these free tools from Facebook and Twitter to validate your social meta and check for errors:', 'all-in-one-seo-pack' ) . '

'; + + foreach ( + Array( + 'https://developers.facebook.com/tools/debug', + 'https://dev.twitter.com/docs/cards/validation/validator', + ) as $link + ) { + $meta .= "{$link}
"; + } + $meta .= '

' . __( 'Please refer to the document for each tool for help in using these to debug your social meta.', 'all-in-one-seo-pack' ) . '

'; + } + $output = $meta; + $output = str_replace( "'", "\'", $output ); + $output = str_replace( "\n", '\n', $output ); + die( sprintf( AIOSEOP_AJAX_MSG_TMPL, $output ) ); + } +} + +if ( ! function_exists( 'aioseop_ajax_save_settings' ) ) { + + function aioseop_ajax_save_settings() { + aioseop_ajax_init(); + $options = Array(); + parse_str( $_POST['options'], $options ); + $_POST = $options; + $_POST['action'] = 'aiosp_update_module'; + global $aiosp, $aioseop_modules; + aioseop_load_modules(); + $aiosp->admin_menu(); + $module = $aioseop_modules->return_module( $_POST['module'] ); + unset( $_POST['module'] ); + if ( empty( $_POST['location'] ) ) { + $_POST['location'] = null; + } + $_POST['Submit'] = 'ajax'; + $module->add_page_hooks(); + $output = $module->handle_settings_updates( $_POST['location'] ); + + if ( AIOSEOPPRO ) { + $output = '

' . $output . '

'; + } else { + $output = '

' . $output . '

'; + } + + die( sprintf( AIOSEOP_AJAX_MSG_TMPL, $output ) ); + } +} + +if ( ! function_exists( 'aioseop_ajax_get_menu_links' ) ) { + + function aioseop_ajax_get_menu_links() { + aioseop_ajax_init(); + $options = Array(); + parse_str( $_POST['options'], $options ); + $_POST = $options; + $_POST['action'] = 'aiosp_update_module'; + global $aiosp, $aioseop_modules; + aioseop_load_modules(); + $aiosp->admin_menu(); + if ( empty( $_POST['location'] ) ) { + $_POST['location'] = null; + } + $_POST['Submit'] = 'ajax'; + $modlist = $aioseop_modules->get_loaded_module_list(); + $links = Array(); + $link_list = Array(); + $link = $aiosp->get_admin_links(); + if ( ! empty( $link ) ) { + foreach ( $link as $l ) { + if ( ! empty( $l ) ) { + if ( empty( $link_list[ $l['order'] ] ) ) { + $link_list[ $l['order'] ] = Array(); + } + $link_list[ $l['order'] ][ $l['title'] ] = $l['href']; + } + } + } + if ( ! empty( $modlist ) ) { + foreach ( $modlist as $k => $v ) { + $mod = $aioseop_modules->return_module( $v ); + if ( is_object( $mod ) ) { + $mod->add_page_hooks(); + $link = $mod->get_admin_links(); + foreach ( $link as $l ) { + if ( ! empty( $l ) ) { + if ( empty( $link_list[ $l['order'] ] ) ) { + $link_list[ $l['order'] ] = Array(); + } + $link_list[ $l['order'] ][ $l['title'] ] = $l['href']; + } + } + } + } + } + if ( ! empty( $link_list ) ) { + ksort( $link_list ); + foreach ( $link_list as $ll ) { + foreach ( $ll as $k => $v ) { + $links[ $k ] = $v; + } + } + } + $output = '
    '; + if ( ! empty( $links ) ) { + foreach ( $links as $k => $v ) { + if ( $k === 'Feature Manager' ) { + $current = ' class="current"'; + } else { + $current = ''; + } + $output .= "" . esc_attr( $k ) . ''; + } + } + $output .= '
'; + die( sprintf( "jQuery('{$_POST['target']}').fadeOut('fast', function(){jQuery('{$_POST['target']}').html('%s').fadeIn('fast');});", addslashes( $output ) ) ); + } +} + +if ( ! function_exists( 'aioseop_mrt_pccolumn' ) ) { + + /** + * @param $aioseopcn + * @param $aioseoppi + */ + function aioseop_mrt_pccolumn( $aioseopcn, $aioseoppi ) { + $id = $aioseoppi; + $target = null; + if ( $aioseopcn === 'seotitle' ) { + $target = 'title'; + } + if ( $aioseopcn === 'seokeywords' ) { + $target = 'keywords'; + } + if ( $aioseopcn === 'seodesc' ) { + $target = 'description'; + } + if ( ! $target ) { + return; + } + if ( current_user_can( 'edit_post', $id ) ) { ?> +
+
+ " . $content . ''; + else: + $label = "" . __( 'No', 'all-in-one-seo-pack' ) . ' ' . $target . ''; + endif; + $nonce = wp_create_nonce( "aioseop_meta_{$target}_{$id}" ); + echo '' + . " " . $label; + ?> +
+
+ $v ) { + $excluded[ $k ] = trim( $v ); + if ( empty( $excluded[ $k ] ) ) { + unset( $excluded[ $k ] ); + } + } + } + if ( empty( $excluded ) ) { + $excluded = null; + } + } + } + if ( ! empty( $excluded ) ) { + if ( $url === null ) { + $url = $_SERVER['REQUEST_URI']; + } else { + $url = parse_url( $url ); + if ( ! empty( $url['path'] ) ) { + $url = $url['path']; + } else { + return false; + } + } + if ( ! empty( $url ) ) { + foreach ( $excluded as $exedd ) { + if ( $exedd && ( stripos( $url, $exedd ) !== false ) ) { + return true; + } + } + } + } + + return false; + } +} + +if ( ! function_exists( 'aioseop_add_contactmethods' ) ) { + + /** + * @param $contactmethods + * + * @return mixed + */ + function aioseop_add_contactmethods( $contactmethods ) { + global $aioseop_options, $aioseop_modules; + if ( empty( $aioseop_options['aiosp_google_disable_profile'] ) ) { + $contactmethods['googleplus'] = __( 'Google+', 'all-in-one-seo-pack' ); + } + if ( ! empty( $aioseop_modules ) && is_object( $aioseop_modules ) ) { + $m = $aioseop_modules->return_module( 'All_in_One_SEO_Pack_Opengraph' ); + if ( ( $m !== false ) && is_object( $m ) ) { + if ( $m->option_isset( 'twitter_creator' ) ) { + $contactmethods['twitter'] = __( 'Twitter', 'all-in-one-seo-pack' ); + } + if ( $m->option_isset( 'facebook_author' ) ) { + $contactmethods['facebook'] = __( 'Facebook', 'all-in-one-seo-pack' ); + } + } + } + + return $contactmethods; + } +} + +if ( ! function_exists( 'aioseop_localize_script_data' ) ) { + + function aioseop_localize_script_data() { + static $loaded = 0; + if ( ! $loaded ) { + $data = apply_filters( 'aioseop_localize_script_data', Array() ); + wp_localize_script( 'aioseop-module-script', 'aiosp_data', $data ); + $loaded = 1; + } + } +} + +if ( ! function_exists( 'aioseop_array_insert_after' ) ) { + /** + * Utility function for inserting elements into associative arrays by key. + * + * @param $arr + * @param $insertKey + * @param $newValues + * + * @return array + */ + function aioseop_array_insert_after( $arr, $insertKey, $newValues ) { + $keys = array_keys( $arr ); + $vals = array_values( $arr ); + $insertAfter = array_search( $insertKey, $keys ) + 1; + $keys2 = array_splice( $keys, $insertAfter ); + $vals2 = array_splice( $vals, $insertAfter ); + foreach ( $newValues as $k => $v ) { + $keys[] = $k; + $vals[] = $v; + } + + return array_merge( array_combine( $keys, $vals ), array_combine( $keys2, $vals2 ) ); + } +} + +if ( ! function_exists( 'fnmatch' ) ) { + /** + * Support for fnmatch() doesn't exist on Windows pre PHP 5.3. + * + * @param $pattern + * @param $string + * + * @return int + */ + function fnmatch( $pattern, $string ) { + return preg_match( '#^' . strtr( preg_quote( $pattern, '#' ), array( + '\*' => '.*', + '\?' => '.', + ) ) . "$#i", $string ); + } +} + +if ( ! function_exists('aiosp_log')) { + function aiosp_log ( $log ) { + + global $aioseop_options; + + if ( ! empty( $aioseop_options ) && isset( $aioseop_options['aiosp_do_log'] ) && $aioseop_options['aiosp_do_log'] ) { + + if ( is_array( $log ) || is_object( $log ) ) { + error_log( print_r( $log, true ) ); + } else { + error_log( $log ); + } + } + } +} + +if ( ! function_exists( 'parse_ini_string' ) ) { + /** + * Parse_ini_string() doesn't exist pre PHP 5.3. + * + * @param $string + * @param $process_sections + * + * @return array|bool + */ + function parse_ini_string( $string, $process_sections ) { + + if ( ! class_exists( 'parse_ini_filter' ) ) { + + /** + * Class parse_ini_filter + * + * Define our filter class. + */ + class parse_ini_filter extends php_user_filter { + static $buf = ''; + + /** + * The actual filter for parsing. + * + * @param $in + * @param $out + * @param $consumed + * @param $closing + * + * @return int + */ + function filter( $in, $out, &$consumed, $closing ) { + $bucket = stream_bucket_new( fopen( 'php://memory', 'wb' ), self::$buf ); + stream_bucket_append( $out, $bucket ); + + return PSFS_PASS_ON; + } + } + + // Register our filter with PHP. + if ( ! stream_filter_register( 'parse_ini', 'parse_ini_filter' ) ) { + return false; + } + } + parse_ini_filter::$buf = $string; + + return parse_ini_file( 'php://filter/read=parse_ini/resource=php://memory', $process_sections ); + } +} + +function aioseop_update_user_visibilitynotice() { + + update_user_meta( get_current_user_id(), 'aioseop_visibility_notice_dismissed', true ); +} + +function aioseop_update_yst_detected_notice() { + + update_user_meta( get_current_user_id(), 'aioseop_yst_detected_notice_dismissed', true ); +} + +function aioseop_woo_upgrade_notice_dismissed() { + + update_user_meta( get_current_user_id(), 'aioseop_woo_upgrade_notice_dismissed', true ); +} diff --git a/plugins/all-in-one-seo-pack/inc/aioseop_updates_class.php b/plugins/all-in-one-seo-pack/inc/aioseop_updates_class.php new file mode 100644 index 0000000..82edbc1 --- /dev/null +++ b/plugins/all-in-one-seo-pack/inc/aioseop_updates_class.php @@ -0,0 +1,268 @@ +do_version_updates( $last_active_version ); + do_action( 'after_doing_aioseop_updates' ); + // If we're running Pro, let the Pro updater set the version. + if ( ! AIOSEOPPRO ) { + + // Save the current plugin version as the new last_active_version. + $aioseop_options['last_active_version'] = AIOSEOP_VERSION; + $aiosp->update_class_option( $aioseop_options ); + } + + if( ! is_network_admin() || !isset( $_GET['activate-multi'] ) ) { + //set_transient( '_aioseop_activation_redirect', true, 30 ); // Sets 30 second transient for welcome screen redirect on activation. + } + delete_transient( 'aioseop_feed' ); + // add_action( 'admin_init', array( $this, 'aioseop_welcome' ) ); + + } + + /** + * Perform updates that are dependent on external factors, not + * just the plugin version. + */ + $this->do_feature_updates(); + } + + function aioseop_welcome(){ + if ( get_transient( '_aioseop_activation_redirect' ) ) { + delete_transient( '_aioseop_activation_redirect' ); + $aioseop_welcome = new aioseop_welcome(); + $aioseop_welcome->init( TRUE ); + } + + } + + /** + * Updates version. + * + * TODO: the compare here should be extracted into a function + * + * @global $aioseop_options . + * + * @param String $old_version + */ + function do_version_updates( $old_version ) { + global $aioseop_options; + if ( + ( ! AIOSEOPPRO && version_compare( $old_version, '2.3.3', '<' ) ) || + ( AIOSEOPPRO && version_compare( $old_version, '2.4.3', '<' ) ) + ) { + $this->bad_bots_201603(); + } + + if ( + ( ! AIOSEOPPRO && version_compare( $old_version, '2.3.4.1', '<' ) ) || + ( AIOSEOPPRO && version_compare( $old_version, '2.4.4.1', '<' ) ) + ) { + $this->bad_bots_remove_yandex_201604(); + } + + if ( + ( ! AIOSEOPPRO && version_compare( $old_version, '2.3.9', '<' ) ) || + ( AIOSEOPPRO && version_compare( $old_version, '2.4.9', '<' ) ) + ) { + $this->bad_bots_remove_seznambot_201608(); + set_transient( '_aioseop_activation_redirect', true, 30 ); // Sets 30 second transient for welcome screen redirect on activation. + } + + } + + /** + * Removes overzealous 'DOC' entry which is causing false-positive bad + * bot blocking. + * + * @since 2.3.3 + * @global $aiosp , $aioseop_options. + */ + function bad_bots_201603() { + global $aiosp, $aioseop_options; + + // Remove 'DOC' from bad bots list to avoid false positives. + if ( isset( $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_blocklist'] ) ) { + $list = $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_blocklist']; + $list = str_replace( array( + "DOC\r\n", + "DOC\n", + ), '', $list ); + $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_blocklist'] = $list; + update_option( 'aioseop_options', $aioseop_options ); + $aiosp->update_class_option( $aioseop_options ); + if ( isset( $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_htaccess_rules'] ) + && 'on' === $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_htaccess_rules'] + ) { + if ( ! class_exists( 'All_in_One_SEO_Pack_Bad_Robots' ) ) { + require_once( + AIOSEOP_PLUGIN_DIR . + 'admin/aioseop_module_class.php' + ); + require_once( + AIOSEOP_PLUGIN_DIR . + 'modules/aioseop_bad_robots.php' + ); + } + $aiosp_reset_htaccess = new All_in_One_SEO_Pack_Bad_Robots; + $aiosp_reset_htaccess->generate_htaccess_blocklist(); + } + if ( ! isset( $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_htaccess_rules'] ) + && extract_from_markers( get_home_path() . '.htaccess', 'Bad Bot Blocker' ) + ) { + insert_with_markers( get_home_path() . '.htaccess', 'Bad Bot Blocker', '' ); + } + } + } + + /* + * Functions for specific version milestones. + */ + + /** + * Remove 'yandex' entry. This is a major Russian search engine, and no longer needs to be blocked. + * + * @since 2.3.4.1 + * @global $aiosp , $aioseop_options. + */ + function bad_bots_remove_yandex_201604() { + global $aiosp, $aioseop_options; + + // Remove 'yandex' from bad bots list to avoid false positives. + if ( isset( $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_blocklist'] ) ) { + $list = $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_blocklist']; + $list = str_replace( array( + "yandex\r\n", + "yandex\n", + ), '', $list ); + $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_blocklist'] = $list; + update_option( 'aioseop_options', $aioseop_options ); + $aiosp->update_class_option( $aioseop_options ); + + if ( isset( $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_htaccess_rules'] ) && 'on' === $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_htaccess_rules'] ) { + + if ( ! class_exists( 'All_in_One_SEO_Pack_Bad_Robots' ) ) { + require_once( AIOSEOP_PLUGIN_DIR . 'admin/aioseop_module_class.php' ); + require_once( AIOSEOP_PLUGIN_DIR . 'modules/aioseop_bad_robots.php' ); + } + + $aiosp_reset_htaccess = new All_in_One_SEO_Pack_Bad_Robots; + $aiosp_reset_htaccess->generate_htaccess_blocklist(); + } + + if ( ! isset( $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_htaccess_rules'] ) && extract_from_markers( get_home_path() . '.htaccess', 'Bad Bot Blocker' ) ) { + insert_with_markers( get_home_path() . '.htaccess', 'Bad Bot Blocker', '' ); + } + } + } + + /** + * Remove 'SeznamBot' entry. + * + * @since 2.3.8 + * @global $aiosp , $aioseop_options. + */ + function bad_bots_remove_seznambot_201608() { + global $aiosp, $aioseop_options; + + // Remove 'SeznamBot' from bad bots list to avoid false positives. + if ( isset( $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_blocklist'] ) ) { + $list = $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_blocklist']; + $list = str_replace( array( + "SeznamBot\r\n", + "SeznamBot\n", + ), '', $list ); + $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_blocklist'] = $list; + update_option( 'aioseop_options', $aioseop_options ); + $aiosp->update_class_option( $aioseop_options ); + + if ( isset( $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_htaccess_rules'] ) && 'on' === $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_htaccess_rules'] ) { + + if ( ! class_exists( 'All_in_One_SEO_Pack_Bad_Robots' ) ) { + require_once( AIOSEOP_PLUGIN_DIR . 'admin/aioseop_module_class.php' ); + require_once( AIOSEOP_PLUGIN_DIR . 'modules/aioseop_bad_robots.php' ); + } + + $aiosp_reset_htaccess = new All_in_One_SEO_Pack_Bad_Robots; + $aiosp_reset_htaccess->generate_htaccess_blocklist(); + } + + if ( ! isset( $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_htaccess_rules'] ) && extract_from_markers( get_home_path() . '.htaccess', 'Bad Bot Blocker' ) ) { + insert_with_markers( get_home_path() . '.htaccess', 'Bad Bot Blocker', '' ); + } + } + } + + /** + * Updates features. + * + * @return null + * + * if ( ! ( isset( $aioseop_options['version_feature_flags']['FEATURE_NAME'] ) && + * $aioseop_options['version_feature_flags']['FEATURE_NAME'] === 'yes' ) ) { + * $this->some_feature_update_method(); // sets flag to 'yes' on completion. + */ + public function do_feature_updates() { + global $aioseop_options; + + // We don't need to check all the time. Use a transient to limit frequency. + if ( get_site_transient( 'aioseop_update_check_time' ) ) { + return; + } + + // If we're running Pro, let the Pro updater set the transient. + if ( ! AIOSEOPPRO ) { + + // We haven't checked recently. Reset the timestamp, timeout 6 hours. + set_site_transient( + 'aioseop_update_check_time', + time(), + apply_filters( 'aioseop_update_check_time', 3600 * 6 ) + ); + } + } +} diff --git a/plugins/all-in-one-seo-pack/inc/aiosp_calc_desc.php b/plugins/all-in-one-seo-pack/inc/aiosp_calc_desc.php new file mode 100644 index 0000000..dcc43b8 --- /dev/null +++ b/plugins/all-in-one-seo-pack/inc/aiosp_calc_desc.php @@ -0,0 +1,3 @@ +ID ) ) ) { + $blog_page = get_post( $page_for_posts ); + } + } + + return $blog_page; + } + + /** + * @param string $location + * @param string $title + * @param string $anchor + * @param string $target + * @param string $class + * @param string $id + * + * @return string + */ + static function get_upgrade_hyperlink( $location = '', $title = '', $anchor = '', $target = '', $class = '', $id = 'aio-pro-update' ) { + + $affiliate_id = ''; + + //call during plugins_loaded + $affiliate_id = apply_filters( 'aiosp_aff_id', $affiliate_id ); + + //build URL + $url = 'https://semperplugins.com/all-in-one-seo-pack-pro-version/'; + if ( $location ) { + $url .= '?loc=' . $location; + } + if ( $affiliate_id ) { + $url .= "?ap_id=$affiliate_id"; + } + + //build hyperlink + $hyperlink = '$anchor"; + + return $hyperlink; + } + + /** + * Gets the upgrade to Pro version URL. + */ + static function get_upgrade_url() { + //put build URL stuff in here + } +} diff --git a/plugins/all-in-one-seo-pack/inc/commonstrings.php b/plugins/all-in-one-seo-pack/inc/commonstrings.php new file mode 100644 index 0000000..46a3522 --- /dev/null +++ b/plugins/all-in-one-seo-pack/inc/commonstrings.php @@ -0,0 +1,49 @@ +load_compatibility_classes(); + + } + + /** + * Load Compatibility Hooks. + * + * @since 2.3.6 + */ + public function load_compatibility_hooks() { + // We'll use this until we set up our classes. + if ( class_exists( 'jetpack' ) ) { + add_filter( 'jetpack_get_available_modules', array( $this, 'remove_jetpack_sitemap' ) ); + add_filter( 'jetpack_site_verification_output', array( + $this, + 'filter_jetpack_site_verification_output', + ), 10, 1 ); + } + } + + /** + * Filter Jetpack's site verification. + * + * If we have a value for a particular verification, use ours. + * + * @param $ver_tag + * + * @since 2.3.7 + * + * @return string + */ + function filter_jetpack_site_verification_output( $ver_tag ) { + + global $aioseop_options; + + if ( isset( $aioseop_options['aiosp_pinterest_verify'] ) && ! empty( $aioseop_options['aiosp_pinterest_verify'] ) && strpos( $ver_tag, 'p:domain_verify' ) ) { + return ''; + + } + + if ( isset( $aioseop_options['aiosp_google_verify'] ) && ! empty( $aioseop_options['aiosp_google_verify'] ) && strpos( $ver_tag, 'google-site-verification' ) ) { + return ''; + } + + if ( isset( $aioseop_options['aiosp_bing_verify'] ) && ! empty( $aioseop_options['aiosp_bing_verify'] ) && strpos( $ver_tag, 'msvalidate.01' ) ) { + return ''; + } + + return $ver_tag; + + } + + /** + * Remove Jetpack's sitemap. + * + * @param array $modules All the Jetpack modules. + * + * @since 2.3.6 + * @since 2.3.6.1 Make sure we only disable Jetpack's sitemap if they're using ours. + * + * @return array + */ + public function remove_jetpack_sitemap( $modules ) { + + global $aioseop_options; + // Check if AIOSEOP's sitemap exists. + if ( isset( $aioseop_options['modules']['aiosp_feature_manager_options']['aiosp_feature_manager_enable_sitemap'] ) && $aioseop_options['modules']['aiosp_feature_manager_options']['aiosp_feature_manager_enable_sitemap'] === 'on' ) { + unset( $modules['sitemaps'] ); // Remove Jetpack's sitemap. + } + + return $modules; + } + + /** + * Load Compatibility classes. + * + * @since 2.3.6 + */ + public function load_compatibility_classes() { + // Eventually we'll load our other classes from here. + $this->load_compatibility_hooks(); + } + } + +} + +$aiosp_compat = new All_in_One_SEO_Pack_Compatibility(); diff --git a/plugins/all-in-one-seo-pack/inc/deprecated.php b/plugins/all-in-one-seo-pack/inc/deprecated.php new file mode 100644 index 0000000..8abc683 --- /dev/null +++ b/plugins/all-in-one-seo-pack/inc/deprecated.php @@ -0,0 +1,285 @@ +token = 'anonymous'; + $this->secret = 'anonymous'; + $preload = $this->get_class_option(); + $manual_ua = ''; + if ( ! empty( $_POST ) ) { + if ( ! empty( $_POST[ "{$this->prefix}google_connect" ] ) ) { + $manual_ua = 1; + } + } elseif ( ! empty( $preload[ "{$this->prefix}google_connect" ] ) ) { + $manual_ua = 1; + } + if ( ! empty( $manual_ua ) ) { + foreach ( array( 'token', 'secret', 'access_token', 'ga_token', 'account_cache' ) as $v ) { + if ( ! empty( $preload[ "{$this->prefix}{$v}" ] ) ) { + unset( $preload[ "{$this->prefix}{$v}" ] ); + unset( $this->$v ); + } + } + $this->update_class_option( $preload ); + $this->update_options(); + //return; + } + foreach ( array( 'token', 'secret', 'access_token', 'ga_token', 'account_cache' ) as $v ) { + if ( ! empty( $preload[ "{$this->prefix}{$v}" ] ) ) { + $this->$v = $preload[ "{$this->prefix}{$v}" ]; + } + } + $callback_url = null; + if ( ! empty( $_REQUEST['oauth_verifier'] ) ) { + $this->verifier = $_REQUEST['oauth_verifier']; + if ( ! empty( $_REQUEST['oauth_token'] ) ) { + if ( isset( $this->token ) && $this->token === $_REQUEST['oauth_token'] ) { + $this->access_token = $this->oauth_get_token( $this->verifier ); + if ( is_array( $this->access_token ) && ! empty( $this->access_token['oauth_token'] ) ) { + unset( $this->token ); + unset( $this->secret ); + $this->ga_token = $this->access_token['oauth_token']; + foreach ( array( 'token', 'secret', 'access_token', 'ga_token' ) as $v ) { + if ( ! empty( $this->$v ) ) { + $preload[ "{$this->prefix}{$v}" ] = $this->$v; + } + } + $this->update_class_option( $preload ); + } + } + wp_redirect( menu_page_url( plugin_basename( $this->file ), false ) ); + exit; + } + } + if ( ! empty( $this->ga_token ) ) { + if ( ! empty( $this->account_cache ) ) { + $ua = $this->account_cache['ua']; + $profiles = $this->account_cache['profiles']; + } else { + $this->token = $this->access_token['oauth_token']; + $this->secret = $this->access_token['oauth_token_secret']; + + $data = $this->oauth_get_data( 'https://www.googleapis.com/analytics/v2.4/management/accounts/~all/webproperties/~all/profiles' ); + + $http_code = wp_remote_retrieve_response_code( $data ); + + if ( 200 === $http_code ) { + $response = wp_remote_retrieve_body( $data ); + $xml = $this->xml_string_to_array( $response ); + $ua = array(); + $profiles = array(); + if ( ! empty( $xml['entry'] ) ) { + $rec = array(); + $results = array(); + if ( ! empty( $xml['entry'][0] ) ) { + $results = $xml['entry']; + } else { + $results[] = $xml['entry']; + } + foreach ( $results as $r ) { + foreach ( $r as $k => $v ) + switch ( $k ) { + case 'id': + $rec['id'] = $v; + break; + case 'title': + $rec['title'] = $v['@content']; + break; + case 'dxp:property': + $attr = array(); + foreach ( $v as $a => $f ) { + if ( is_array( $f ) && ! empty( $f['@attributes'] ) ) { + $rec[ $f['@attributes']['name'] ] = $f['@attributes']['value']; + } + } + break; + } + $ua[ $rec['title'] ] = array( $rec['ga:webPropertyId'] => $rec['ga:webPropertyId'] ); + $profiles[ $rec['ga:webPropertyId'] ] = $rec['ga:profileId']; + } + } + $this->account_cache = array(); + $this->account_cache['ua'] = $ua; + $this->account_cache['profiles'] = $profiles; + $preload["{$this->prefix}account_cache"] = $this->account_cache; + } else { + unset( $this->token ); + unset( $this->secret ); + unset( $this->ga_token ); + unset( $preload["{$this->prefix}ga_token"] ); // error condition here -- pdb + $response = wp_remote_retrieve_body( $data ); + $xml = $this->xml_string_to_array( $response ); + if ( ! empty( $xml ) && ! empty( $xml['error'] ) ) { + $error = 'Error: '; + if ( ! empty( $xml['error']['internalReason'] ) ) { + $error .= $xml['error']['internalReason']; + } else { + foreach ( $xml['error'] as $k => $v ) { + $error .= "$k: $v\n"; + } + } + $this->output_error( $error ); + } + } + } + } + if ( ! empty( $this->ga_token ) ) { + $this->default_options['google_analytics_id']['type'] = 'select'; + $this->default_options['google_analytics_id']['initial_options'] = $ua; + $this->default_options['google_connect']['type'] = 'html'; + $this->default_options['google_connect']['nolabel'] = 1; + $this->default_options['google_connect']['save'] = true; + $this->default_options['google_connect']['name'] = __( 'Disconnect From Google Analytics', 'all-in-one-seo-pack' ); + $this->default_options['google_connect']['default'] = ""; + add_filter( $this->prefix . 'override_options', Array( $this, 'override_options' ), 10, 3 ); + } else { + $this->default_options['google_connect']['type'] = 'html'; + $this->default_options['google_connect']['nolabel'] = 1; + $this->default_options['google_connect']['save'] = false; + $url = $this->oauth_connect(); + $this->default_options['google_connect']['default'] = "" . __( 'Connect With Google Analytics', 'all-in-one-seo-pack' ) . ''; + foreach ( array( 'token', 'secret', 'access_token', 'ga_token', 'account_cache' ) as $v ) { + if ( ! empty( $this->$v ) ) { + $preload["{$this->prefix}{$v}"] = $this->$v; + } + } + } + $this->update_class_option( $preload ); + $this->update_options(); + // $url = $this->report_query(); + if ( ! empty( $this->account_cache ) && ! empty( $this->options["{$this->prefix}google_analytics_id"] ) && ! empty( $this->account_cache['profiles'][ $this->options["{$this->prefix}google_analytics_id"] ] ) ) { + $this->profile_id = $this->account_cache['profiles'][ $this->options["{$this->prefix}google_analytics_id"] ]; + } +} + +/** + * @param $oauth_url + * @param null $args + * + * @return array|WP_Error + */ +function oauth_get_data( $oauth_url, $args = null ) { + if ( ! class_exists( 'OAuthConsumer' ) ) { + require_once( AIOSEOP_PLUGIN_DIR . 'inc/extlib/OAuth.php' ); + } + if ( $args === null ) { + $args = Array( + 'scope' => 'https://www.googleapis.com/auth/analytics.readonly', + 'xoauth_displayname' => AIOSEOP_PLUGIN_NAME . ' ' . __( 'Google Analytics', 'all-in-one-seo-pack' ) + ); + } + $req_token = new OAuthConsumer( $this->token, $this->secret ); + $req = $this->oauth_get_creds( $oauth_url, $req_token, $args ); + + return wp_remote_get( $req->to_url() ); +} + +/** + * @param $oauth_url + * @param null $req_token + * @param array $args + * @param null $callback + * + * @return OAuthRequest + */ +function oauth_get_creds( $oauth_url, $req_token = null, $args = array(), $callback = null ) { + if ( ! class_exists( 'OAuthConsumer' ) ) { + require_once( AIOSEOP_PLUGIN_DIR . 'inc/extlib/OAuth.php' ); + } + if ( ! empty( $callback ) ) { + $args['oauth_callback'] = $callback; + } + if ( empty( $this->sig_method ) ) { + $this->sig_method = new OAuthSignatureMethod_HMAC_SHA1(); + } + if ( empty( $this->consumer ) ) { + $this->consumer = new OAuthCOnsumer( 'anonymous', 'anonymous' ); + } + $req_req = OAuthRequest::from_consumer_and_token( $this->consumer, $req_token, 'GET', $oauth_url, $args ); + $req_req->sign_request( $this->sig_method, $this->consumer, $req_token ); + + return $req_req; +} + +/** + * @param $oauth_verifier + * + * @return array + */ +function oauth_get_token( $oauth_verifier ) { + if ( ! class_exists( 'OAuthConsumer' ) ) { + require_once( AIOSEOP_PLUGIN_DIR . 'inc/extlib/OAuth.php' ); + } + $args = array( + 'scope' => 'https://www.google.com/analytics/feeds/', + 'xoauth_displayname' => AIOSEOP_PLUGIN_NAME . ' ' . __( 'Google Analytics', 'all-in-one-seo-pack' ) + ); + $args['oauth_verifier'] = $oauth_verifier; + $oauth_access_token = 'https://www.google.com/accounts/OAuthGetAccessToken'; + $reqData = $this->oauth_get_data( $oauth_access_token, $args ); + $reqOAuthData = OAuthUtil::parse_parameters( wp_remote_retrieve_body( $reqData ) ); + + return $reqOAuthData; +} + +/** + * @param int $count + * + * @return string + */ +function oauth_connect( $count = 0 ) { + global $aiosp_activation; + if ( ! class_exists( 'OAuthConsumer' ) ) { + require_once( AIOSEOP_PLUGIN_DIR . 'inc/extlib/OAuth.php' ); + } + $url = ''; + $callback_url = null; + $consumer_key = 'anonymous'; + $consumer_secret = 'anonymous'; + $oauth_request_token = 'https://www.google.com/accounts/OAuthGetRequestToken'; + $oauth_authorize = 'https://www.google.com/accounts/OAuthAuthorizeToken'; + $oauth_access_token = 'https://www.google.com/accounts/OAuthGetAccessToken'; + if ( $aiosp_activation ) { + $oauth_current = false; + } else { + $oauth_current = get_transient( 'aioseop_oauth_current' ); + } + if ( ! empty( $this->token ) && ( $this->token != 'anonymous' ) && $oauth_current ) { + return $oauth_authorize . '?oauth_token=' . $this->token; + } else { + set_transient( 'aioseop_oauth_current', 1, 3600 ); + unset( $this->token ); + unset( $this->secret ); + } + $args = array( + 'scope' => 'https://www.google.com/analytics/feeds/', + 'xoauth_displayname' => AIOSEOP_PLUGIN_NAME . ' ' . __( 'Google Analytics', 'all-in-one-seo-pack' ) + ); + if ( AIOSEOPPRO ) { + $req_req = $this->oauth_get_creds( $oauth_request_token, null, $args, admin_url( 'admin.php?page=all-in-one-seo-pack-pro/aioseop_class.php' ) ); + } else { + $req_req = $this->oauth_get_creds( $oauth_request_token, null, $args, admin_url( 'admin.php?page=all-in-one-seo-pack/aioseop_class.php' ) ); + } + $reqData = wp_remote_get( $req_req->to_url() ); + $reqOAuthData = OAuthUtil::parse_parameters( wp_remote_retrieve_body( $reqData ) ); + if ( ! empty( $reqOAuthData['oauth_token'] ) ) { + $this->token = $reqOAuthData['oauth_token']; + } + if ( ! empty( $reqOAuthData['oauth_token_secret'] ) ) { + $this->secret = $reqOAuthData['oauth_token_secret']; + } + if ( ! empty( $this->token ) && ( $this->token != 'anonymous' ) && $oauth_current ) { + $url = $oauth_authorize . "?oauth_token={$this->token}"; + } else { + if ( ! $count ) { + return $this->oauth_connect( 1 ); + } + } + + return $url; +} diff --git a/plugins/all-in-one-seo-pack/inc/extlib/OAuth.php b/plugins/all-in-one-seo-pack/inc/extlib/OAuth.php new file mode 100644 index 0000000..59677b4 --- /dev/null +++ b/plugins/all-in-one-seo-pack/inc/extlib/OAuth.php @@ -0,0 +1,939 @@ +key = $key; + $this->secret = $secret; + $this->callback_url = $callback_url; + } + + function __toString() { + return "OAuthConsumer[key=$this->key,secret=$this->secret]"; + } + } +} + +if ( !class_exists( 'OAuthToken' ) ) { + class OAuthToken { + // access tokens and request tokens + public $key; + public $secret; + + /** + * key = the token + * secret = the token secret + */ + function __construct($key, $secret) { + $this->key = $key; + $this->secret = $secret; + } + + /** + * generates the basic string serialization of a token that a server + * would respond to request_token and access_token calls with + */ + function to_string() { + return "oauth_token=" . + OAuthUtil::urlencode_rfc3986($this->key) . + "&oauth_token_secret=" . + OAuthUtil::urlencode_rfc3986($this->secret); + } + + function __toString() { + return $this->to_string(); + } + } +} + +if ( !class_exists('OAuthSignatureMethod') ) { + /** + * A class for implementing a Signature Method + * See section 9 ("Signing Requests") in the spec + */ + abstract class OAuthSignatureMethod { + /** + * Needs to return the name of the Signature Method (ie HMAC-SHA1) + * @return string + */ + abstract public function get_name(); + + /** + * Build up the signature + * NOTE: The output of this function MUST NOT be urlencoded. + * the encoding is handled in OAuthRequest when the final + * request is serialized + * @param OAuthRequest $request + * @param OAuthConsumer $consumer + * @param OAuthToken $token + * @return string + */ + abstract public function build_signature($request, $consumer, $token); + + /** + * Verifies that a given signature is correct + * @param OAuthRequest $request + * @param OAuthConsumer $consumer + * @param OAuthToken $token + * @param string $signature + * @return bool + */ + public function check_signature($request, $consumer, $token, $signature) { + $built = $this->build_signature($request, $consumer, $token); + + // Check for zero length, although unlikely here + if (strlen($built) == 0 || strlen($signature) == 0) { + return false; + } + + if (strlen($built) != strlen($signature)) { + return false; + } + + // Avoid a timing leak with a (hopefully) time insensitive compare + $result = 0; + for ($i = 0; $i < strlen($signature); $i++) { + $result |= ord($built{$i}) ^ ord($signature{$i}); + } + + return $result == 0; + } + } +} + +if ( !class_exists('OAuthSignatureMethod_HMAC_SHA1') ) { + /** + * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104] + * where the Signature Base String is the text and the key is the concatenated values (each first + * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&' + * character (ASCII code 38) even if empty. + * - Chapter 9.2 ("HMAC-SHA1") + */ + class OAuthSignatureMethod_HMAC_SHA1 extends OAuthSignatureMethod { + function get_name() { + return "HMAC-SHA1"; + } + + public function build_signature($request, $consumer, $token) { + $base_string = $request->get_signature_base_string(); + $request->base_string = $base_string; + + $key_parts = array( + $consumer->secret, + ($token) ? $token->secret : "" + ); + + $key_parts = OAuthUtil::urlencode_rfc3986($key_parts); + $key = implode('&', $key_parts); + + return base64_encode(hash_hmac('sha1', $base_string, $key, true)); + } + } +} + +if ( !class_exists('OAuthSignatureMethod_PLAINTEXT') ) { + /** + * The PLAINTEXT method does not provide any security protection and SHOULD only be used + * over a secure channel such as HTTPS. It does not use the Signature Base String. + * - Chapter 9.4 ("PLAINTEXT") + */ + class OAuthSignatureMethod_PLAINTEXT extends OAuthSignatureMethod { + public function get_name() { + return "PLAINTEXT"; + } + + /** + * oauth_signature is set to the concatenated encoded values of the Consumer Secret and + * Token Secret, separated by a '&' character (ASCII code 38), even if either secret is + * empty. The result MUST be encoded again. + * - Chapter 9.4.1 ("Generating Signatures") + * + * Please note that the second encoding MUST NOT happen in the SignatureMethod, as + * OAuthRequest handles this! + */ + public function build_signature($request, $consumer, $token) { + $key_parts = array( + $consumer->secret, + ($token) ? $token->secret : "" + ); + + $key_parts = OAuthUtil::urlencode_rfc3986($key_parts); + $key = implode('&', $key_parts); + $request->base_string = $key; + + return $key; + } + } +} + + +if ( !class_exists('OAuthSignatureMethod_RSA_SHA1') ) { + /** + * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in + * [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for + * EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a + * verified way to the Service Provider, in a manner which is beyond the scope of this + * specification. + * - Chapter 9.3 ("RSA-SHA1") + */ + abstract class OAuthSignatureMethod_RSA_SHA1 extends OAuthSignatureMethod { + public function get_name() { + return "RSA-SHA1"; + } + + // Up to the SP to implement this lookup of keys. Possible ideas are: + // (1) do a lookup in a table of trusted certs keyed off of consumer + // (2) fetch via http using a url provided by the requester + // (3) some sort of specific discovery code based on request + // + // Either way should return a string representation of the certificate + protected abstract function fetch_public_cert(&$request); + + // Up to the SP to implement this lookup of keys. Possible ideas are: + // (1) do a lookup in a table of trusted certs keyed off of consumer + // + // Either way should return a string representation of the certificate + protected abstract function fetch_private_cert(&$request); + + public function build_signature($request, $consumer, $token) { + $base_string = $request->get_signature_base_string(); + $request->base_string = $base_string; + + // Fetch the private key cert based on the request + $cert = $this->fetch_private_cert($request); + + // Pull the private key ID from the certificate + $privatekeyid = openssl_get_privatekey($cert); + + // Sign using the key + $ok = openssl_sign($base_string, $signature, $privatekeyid); + + // Release the key resource + openssl_free_key($privatekeyid); + + return base64_encode($signature); + } + + public function check_signature($request, $consumer, $token, $signature) { + $decoded_sig = base64_decode($signature); + + $base_string = $request->get_signature_base_string(); + + // Fetch the public key cert based on the request + $cert = $this->fetch_public_cert($request); + + // Pull the public key ID from the certificate + $publickeyid = openssl_get_publickey($cert); + + // Check the computed signature against the one passed in the query + $ok = openssl_verify($base_string, $decoded_sig, $publickeyid); + + // Release the key resource + openssl_free_key($publickeyid); + + return $ok == 1; + } + } +} + +if ( !class_exists('OAuthRequest') ) { + class OAuthRequest { + protected $parameters; + protected $http_method; + protected $http_url; + // for debug purposes + public $base_string; + public static $version = '1.0'; + public static $POST_INPUT = 'php://input'; + + function __construct($http_method, $http_url, $parameters=NULL) { + $parameters = ($parameters) ? $parameters : array(); + $parameters = array_merge( OAuthUtil::parse_parameters(parse_url($http_url, PHP_URL_QUERY)), $parameters); + $this->parameters = $parameters; + $this->http_method = $http_method; + $this->http_url = $http_url; + } + + + /** + * attempt to build up a request from what was passed to the server + */ + public static function from_request($http_method=NULL, $http_url=NULL, $parameters=NULL) { + $scheme = (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on") + ? 'http' + : 'https'; + $http_url = ($http_url) ? $http_url : $scheme . + '://' . $_SERVER['SERVER_NAME'] . + ':' . + $_SERVER['SERVER_PORT'] . + $_SERVER['REQUEST_URI']; + $http_method = ($http_method) ? $http_method : $_SERVER['REQUEST_METHOD']; + + // We weren't handed any parameters, so let's find the ones relevant to + // this request. + // If you run XML-RPC or similar you should use this to provide your own + // parsed parameter-list + if (!$parameters) { + // Find request headers + $request_headers = OAuthUtil::get_headers(); + + // Parse the query-string to find GET parameters + $parameters = OAuthUtil::parse_parameters($_SERVER['QUERY_STRING']); + + // It's a POST request of the proper content-type, so parse POST + // parameters and add those overriding any duplicates from GET + if ($http_method == "POST" + && isset($request_headers['Content-Type']) + && strstr($request_headers['Content-Type'], + 'application/x-www-form-urlencoded') + ) { + $post_data = OAuthUtil::parse_parameters( + file_get_contents(self::$POST_INPUT) + ); + $parameters = array_merge($parameters, $post_data); + } + + // We have a Authorization-header with OAuth data. Parse the header + // and add those overriding any duplicates from GET or POST + if (isset($request_headers['Authorization']) && substr($request_headers['Authorization'], 0, 6) == 'OAuth ') { + $header_parameters = OAuthUtil::split_header( + $request_headers['Authorization'] + ); + $parameters = array_merge($parameters, $header_parameters); + } + + } + + return new OAuthRequest($http_method, $http_url, $parameters); + } + + /** + * pretty much a helper function to set up the request + */ + public static function from_consumer_and_token($consumer, $token, $http_method, $http_url, $parameters=NULL) { + $parameters = ($parameters) ? $parameters : array(); + $defaults = array("oauth_version" => OAuthRequest::$version, + "oauth_nonce" => OAuthRequest::generate_nonce(), + "oauth_timestamp" => OAuthRequest::generate_timestamp(), + "oauth_consumer_key" => $consumer->key); + if ($token) + $defaults['oauth_token'] = $token->key; + + $parameters = array_merge($defaults, $parameters); + + return new OAuthRequest($http_method, $http_url, $parameters); + } + + public function set_parameter($name, $value, $allow_duplicates = true) { + if ($allow_duplicates && isset($this->parameters[$name])) { + // We have already added parameter(s) with this name, so add to the list + if (is_scalar($this->parameters[$name])) { + // This is the first duplicate, so transform scalar (string) + // into an array so we can add the duplicates + $this->parameters[$name] = array($this->parameters[$name]); + } + + $this->parameters[$name][] = $value; + } else { + $this->parameters[$name] = $value; + } + } + + public function get_parameter($name) { + return isset($this->parameters[$name]) ? $this->parameters[$name] : null; + } + + public function get_parameters() { + return $this->parameters; + } + + public function unset_parameter($name) { + unset($this->parameters[$name]); + } + + /** + * The request parameters, sorted and concatenated into a normalized string. + * @return string + */ + public function get_signable_parameters() { + // Grab all parameters + $params = $this->parameters; + + // Remove oauth_signature if present + // Ref: Spec: 9.1.1 ("The oauth_signature parameter MUST be excluded.") + if (isset($params['oauth_signature'])) { + unset($params['oauth_signature']); + } + + return OAuthUtil::build_http_query($params); + } + + /** + * Returns the base string of this request + * + * The base string defined as the method, the url + * and the parameters (normalized), each urlencoded + * and the concated with &. + */ + public function get_signature_base_string() { + $parts = array( + $this->get_normalized_http_method(), + $this->get_normalized_http_url(), + $this->get_signable_parameters() + ); + + $parts = OAuthUtil::urlencode_rfc3986($parts); + + return implode('&', $parts); + } + + /** + * just uppercases the http method + */ + public function get_normalized_http_method() { + return strtoupper($this->http_method); + } + + /** + * parses the url and rebuilds it to be + * scheme://host/path + */ + public function get_normalized_http_url() { + $parts = parse_url($this->http_url); + + $scheme = (isset($parts['scheme'])) ? $parts['scheme'] : 'http'; + $port = (isset($parts['port'])) ? $parts['port'] : (($scheme == 'https') ? '443' : '80'); + $host = (isset($parts['host'])) ? strtolower($parts['host']) : ''; + $path = (isset($parts['path'])) ? $parts['path'] : ''; + + if (($scheme == 'https' && $port != '443') + || ($scheme == 'http' && $port != '80')) { + $host = "$host:$port"; + } + return "$scheme://$host$path"; + } + + /** + * builds a url usable for a GET request + */ + public function to_url() { + $post_data = $this->to_postdata(); + $out = $this->get_normalized_http_url(); + if ($post_data) { + $out .= '?'.$post_data; + } + return $out; + } + + /** + * builds the data one would send in a POST request + */ + public function to_postdata() { + return OAuthUtil::build_http_query($this->parameters); + } + + /** + * builds the Authorization: header + */ + public function to_header($realm=null) { + $first = true; + if($realm) { + $out = 'Authorization: OAuth realm="' . OAuthUtil::urlencode_rfc3986($realm) . '"'; + $first = false; + } else + $out = 'Authorization: OAuth'; + + $total = array(); + foreach ($this->parameters as $k => $v) { + if (substr($k, 0, 5) != "oauth") continue; + if (is_array($v)) { + throw new OAuthException('Arrays not supported in headers'); + } + $out .= ($first) ? ' ' : ','; + $out .= OAuthUtil::urlencode_rfc3986($k) . + '="' . + OAuthUtil::urlencode_rfc3986($v) . + '"'; + $first = false; + } + return $out; + } + + public function __toString() { + return $this->to_url(); + } + + + public function sign_request($signature_method, $consumer, $token) { + $this->set_parameter( + "oauth_signature_method", + $signature_method->get_name(), + false + ); + $signature = $this->build_signature($signature_method, $consumer, $token); + $this->set_parameter("oauth_signature", $signature, false); + } + + public function build_signature($signature_method, $consumer, $token) { + $signature = $signature_method->build_signature($this, $consumer, $token); + return $signature; + } + + /** + * util function: current timestamp + */ + private static function generate_timestamp() { + return time(); + } + + /** + * util function: current nonce + */ + private static function generate_nonce() { + $mt = microtime(); + $rand = mt_rand(); + + return md5($mt . $rand); // md5s look nicer than numbers + } + } +} + +if ( !class_exists('OAuthServer') ) { + class OAuthServer { + protected $timestamp_threshold = 300; // in seconds, five minutes + protected $version = '1.0'; // hi blaine + protected $signature_methods = array(); + + protected $data_store; + + function __construct($data_store) { + $this->data_store = $data_store; + } + + public function add_signature_method($signature_method) { + $this->signature_methods[$signature_method->get_name()] = + $signature_method; + } + + // high level functions + + /** + * process a request_token request + * returns the request token on success + */ + public function fetch_request_token(&$request) { + $this->get_version($request); + + $consumer = $this->get_consumer($request); + + // no token required for the initial token request + $token = NULL; + + $this->check_signature($request, $consumer, $token); + + // Rev A change + $callback = $request->get_parameter('oauth_callback'); + $new_token = $this->data_store->new_request_token($consumer, $callback); + + return $new_token; + } + + /** + * process an access_token request + * returns the access token on success + */ + public function fetch_access_token(&$request) { + $this->get_version($request); + + $consumer = $this->get_consumer($request); + + // requires authorized request token + $token = $this->get_token($request, $consumer, "request"); + + $this->check_signature($request, $consumer, $token); + + // Rev A change + $verifier = $request->get_parameter('oauth_verifier'); + $new_token = $this->data_store->new_access_token($token, $consumer, $verifier); + + return $new_token; + } + + /** + * verify an api call, checks all the parameters + */ + public function verify_request(&$request) { + $this->get_version($request); + $consumer = $this->get_consumer($request); + $token = $this->get_token($request, $consumer, "access"); + $this->check_signature($request, $consumer, $token); + return array($consumer, $token); + } + + // Internals from here + /** + * version 1 + */ + private function get_version(&$request) { + $version = $request->get_parameter("oauth_version"); + if (!$version) { + // Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present. + // Chapter 7.0 ("Accessing Protected Ressources") + $version = '1.0'; + } + if ($version !== $this->version) { + throw new OAuthException("OAuth version '$version' not supported"); + } + return $version; + } + + /** + * figure out the signature with some defaults + */ + private function get_signature_method($request) { + $signature_method = $request instanceof OAuthRequest + ? $request->get_parameter("oauth_signature_method") + : NULL; + + if (!$signature_method) { + // According to chapter 7 ("Accessing Protected Ressources") the signature-method + // parameter is required, and we can't just fallback to PLAINTEXT + throw new OAuthException('No signature method parameter. This parameter is required'); + } + + if (!in_array($signature_method, + array_keys($this->signature_methods))) { + throw new OAuthException( + "Signature method '$signature_method' not supported " . + "try one of the following: " . + implode(", ", array_keys($this->signature_methods)) + ); + } + return $this->signature_methods[$signature_method]; + } + + /** + * try to find the consumer for the provided request's consumer key + */ + private function get_consumer($request) { + $consumer_key = $request instanceof OAuthRequest + ? $request->get_parameter("oauth_consumer_key") + : NULL; + + if (!$consumer_key) { + throw new OAuthException("Invalid consumer key"); + } + + $consumer = $this->data_store->lookup_consumer($consumer_key); + if (!$consumer) { + throw new OAuthException("Invalid consumer"); + } + + return $consumer; + } + + /** + * try to find the token for the provided request's token key + */ + private function get_token($request, $consumer, $token_type="access") { + $token_field = $request instanceof OAuthRequest + ? $request->get_parameter('oauth_token') + : NULL; + + $token = $this->data_store->lookup_token( + $consumer, $token_type, $token_field + ); + if (!$token) { + throw new OAuthException("Invalid $token_type token: $token_field"); + } + return $token; + } + + /** + * all-in-one function to check the signature on a request + * should guess the signature method appropriately + */ + private function check_signature($request, $consumer, $token) { + // this should probably be in a different method + $timestamp = $request instanceof OAuthRequest + ? $request->get_parameter('oauth_timestamp') + : NULL; + $nonce = $request instanceof OAuthRequest + ? $request->get_parameter('oauth_nonce') + : NULL; + + $this->check_timestamp($timestamp); + $this->check_nonce($consumer, $token, $nonce, $timestamp); + + $signature_method = $this->get_signature_method($request); + + $signature = $request->get_parameter('oauth_signature'); + $valid_sig = $signature_method->check_signature( + $request, + $consumer, + $token, + $signature + ); + + if (!$valid_sig) { + throw new OAuthException("Invalid signature"); + } + } + + /** + * check that the timestamp is new enough + */ + private function check_timestamp($timestamp) { + if( ! $timestamp ) + throw new OAuthException( + 'Missing timestamp parameter. The parameter is required' + ); + + // verify that timestamp is recentish + $now = time(); + if (abs($now - $timestamp) > $this->timestamp_threshold) { + throw new OAuthException( + "Expired timestamp, yours $timestamp, ours $now" + ); + } + } + + /** + * check that the nonce is not repeated + */ + private function check_nonce($consumer, $token, $nonce, $timestamp) { + if( ! $nonce ) + throw new OAuthException( + 'Missing nonce parameter. The parameter is required' + ); + + // verify that the nonce is uniqueish + $found = $this->data_store->lookup_nonce( + $consumer, + $token, + $nonce, + $timestamp + ); + if ($found) { + throw new OAuthException("Nonce already used: $nonce"); + } + } + } +} + +if ( !class_exists('OAuthDataStore') ) { + class OAuthDataStore { + function lookup_consumer($consumer_key) { + // implement me + } + + function lookup_token($consumer, $token_type, $token) { + // implement me + } + + function lookup_nonce($consumer, $token, $nonce, $timestamp) { + // implement me + } + + function new_request_token($consumer, $callback = null) { + // return a new token attached to this consumer + } + + function new_access_token($token, $consumer, $verifier = null) { + // return a new access token attached to this consumer + // for the user associated with this token if the request token + // is authorized + // should also invalidate the request token + } + } +} + +if ( !class_exists('OAuthUtil') ) { + class OAuthUtil { + public static function urlencode_rfc3986($input) { + if (is_array($input)) { + return array_map(array('OAuthUtil', 'urlencode_rfc3986'), $input); + } else if (is_scalar($input)) { + return str_replace( + '+', + ' ', + str_replace('%7E', '~', rawurlencode($input)) + ); + } else { + return ''; + } + } + + // This decode function isn't taking into consideration the above + // modifications to the encoding process. However, this method doesn't + // seem to be used anywhere so leaving it as is. + public static function urldecode_rfc3986($string) { + return urldecode($string); + } + + // Utility function for turning the Authorization: header into + // parameters, has to do some unescaping + // Can filter out any non-oauth parameters if needed (default behaviour) + // May 28th, 2010 - method updated to tjerk.meesters for a speed improvement. + // see http://code.google.com/p/oauth/issues/detail?id=163 + public static function split_header($header, $only_allow_oauth_parameters = true) { + $params = array(); + if (preg_match_all('/('.($only_allow_oauth_parameters ? 'oauth_' : '').'[a-z_-]*)=(:?"([^"]*)"|([^,]*))/', $header, $matches)) { + foreach ($matches[1] as $i => $h) { + $params[$h] = OAuthUtil::urldecode_rfc3986(empty($matches[3][$i]) ? $matches[4][$i] : $matches[3][$i]); + } + if (isset($params['realm'])) { + unset($params['realm']); + } + } + return $params; + } + + // helper to try to sort out headers for people who aren't running apache + public static function get_headers() { + if (function_exists('apache_request_headers')) { + // we need this to get the actual Authorization: header + // because apache tends to tell us it doesn't exist + $headers = apache_request_headers(); + + // sanitize the output of apache_request_headers because + // we always want the keys to be Cased-Like-This and arh() + // returns the headers in the same case as they are in the + // request + $out = array(); + foreach ($headers AS $key => $value) { + $key = str_replace( + " ", + "-", + ucwords(strtolower(str_replace("-", " ", $key))) + ); + $out[$key] = $value; + } + } else { + // otherwise we don't have apache and are just going to have to hope + // that $_SERVER actually contains what we need + $out = array(); + if( isset($_SERVER['CONTENT_TYPE']) ) + $out['Content-Type'] = $_SERVER['CONTENT_TYPE']; + if( isset($_ENV['CONTENT_TYPE']) ) + $out['Content-Type'] = $_ENV['CONTENT_TYPE']; + + foreach ($_SERVER as $key => $value) { + if (substr($key, 0, 5) == "HTTP_") { + // this is chaos, basically it is just there to capitalize the first + // letter of every word that is not an initial HTTP and strip HTTP + // code from przemek + $key = str_replace( + " ", + "-", + ucwords(strtolower(str_replace("_", " ", substr($key, 5)))) + ); + $out[$key] = $value; + } + } + } + return $out; + } + + // This function takes a input like a=b&a=c&d=e and returns the parsed + // parameters like this + // array('a' => array('b','c'), 'd' => 'e') + public static function parse_parameters( $input ) { + if (!isset($input) || !$input) return array(); + + $pairs = explode('&', $input); + + $parsed_parameters = array(); + foreach ($pairs as $pair) { + $split = explode('=', $pair, 2); + $parameter = OAuthUtil::urldecode_rfc3986($split[0]); + $value = isset($split[1]) ? OAuthUtil::urldecode_rfc3986($split[1]) : ''; + + if (isset($parsed_parameters[$parameter])) { + // We have already recieved parameter(s) with this name, so add to the list + // of parameters with this name + + if (is_scalar($parsed_parameters[$parameter])) { + // This is the first duplicate, so transform scalar (string) into an array + // so we can add the duplicates + $parsed_parameters[$parameter] = array($parsed_parameters[$parameter]); + } + + $parsed_parameters[$parameter][] = $value; + } else { + $parsed_parameters[$parameter] = $value; + } + } + return $parsed_parameters; + } + + public static function build_http_query($params) { + if (!$params) return ''; + + // Urlencode both keys and values + $keys = OAuthUtil::urlencode_rfc3986(array_keys($params)); + $values = OAuthUtil::urlencode_rfc3986(array_values($params)); + $params = array_combine($keys, $values); + + // Parameters are sorted by name, using lexicographical byte value ordering. + // Ref: Spec: 9.1.1 (1) + uksort($params, 'strcmp'); + + $pairs = array(); + foreach ($params as $parameter => $value) { + if (is_array($value)) { + // If two or more parameters share the same name, they are sorted by their value + // Ref: Spec: 9.1.1 (1) + // June 12th, 2010 - changed to sort because of issue 164 by hidetaka + sort($value, SORT_STRING); + foreach ($value as $duplicate_value) { + $pairs[] = $parameter . '=' . $duplicate_value; + } + } else { + $pairs[] = $parameter . '=' . $value; + } + } + // For each parameter, the name is separated from the corresponding value by an '=' character (ASCII code 61) + // Each name-value pair is separated by an '&' character (ASCII code 38) + return implode('&', $pairs); + } + } +} \ No newline at end of file diff --git a/plugins/all-in-one-seo-pack/inc/index.php b/plugins/all-in-one-seo-pack/inc/index.php new file mode 100644 index 0000000..3c379e1 --- /dev/null +++ b/plugins/all-in-one-seo-pack/inc/index.php @@ -0,0 +1,4 @@ +'; +?> + + + + + + Sitemap + SitemapIndex + + + + + + <xsl:choose><xsl:when test="$fileType='Sitemap'">Sitemap</xsl:when> + <xsl:otherwise>Sitemap Index</xsl:otherwise> + </xsl:choose> + + + + + +
+
+

XML Sitemap

+

Generated by All in One SEO, this is an XML Sitemap, meant to be consumed by search engines like Google or Bing.
+ You can find more information about XML sitemaps at sitemaps.org.

+

+ + This sitemap contains URLs + This sitemap index contains sitemaps +

+
+ + + + + + +
+ + +
+ + + + + + + + + + + + + + + stripe + + + + + + +
URLLastChange
+ + + + + + + + +
+
+ + + + + + + + + + + + + + + + + stripe + + + + + + + + + +
URLPriorityChange FrequencyLastChange
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+current_locale = get_locale(); + + if( $this->current_locale === 'en_US'){ + return; + } + + $this->init(); + + } + + /** + * Fetch locale data from WP. + * + * @since 2.3.5 + * @since 2.3.6 Return FALSE on WP_Error object. + * + * @return mixed + */ + private function get_locale_data() { + $response = wp_remote_get( $this->url ); + + if ( is_wp_error( $response ) ) { + return false; + } + + return $response['body']; + } + + + /** + * + * @since 2.3.5 + * + * @param $locales + */ + private function set_current_locale_data( $locales ) { + + // Some locales are missing the locale code (wp_locale) so we need to check for that. + + foreach ( $locales as $locale ) { + + $wplocale = ''; + + if ( isset( $locale->wp_locale ) ) { + $wplocale = $locale->wp_locale; + } + + if ( $wplocale === $this->current_locale ) { + + $name = ''; + $percent_translated = ''; + + if ( isset( $locale->name ) ) { + $name = $locale->name; + } + + if ( isset( $locale->percent_translated ) ) { + $percent_translated = $locale->percent_translated; + } + + $this->name = $name; + $this->wplocale = $wplocale; + $this->percent_translated = $percent_translated; + $this->slug = $locale->locale; + + } + } + + } + + /** + * + * @since 2.3.5 + * + * @param $locales + * + * @return int + */ + private function count_translated_languages( $locales ) { + + $count = 0; + + foreach ( $locales as $locale ) { + + if ( $locale->percent_translated > 0 ) { + ++ $count; + } + } + + return $count; + } + + /** + * + * + * @since 2.3.5 + */ + private function set_translation_url() { + + if ( null !== $this->wplocale ) { + + $url = "https://translate.wordpress.org/projects/wp-plugins/all-in-one-seo-pack/dev/$this->slug/default"; + + $this->translation_url = $url; + } + + } + + /** + * + * @since 2.3.5 + * @since 2.3.6 Return FALSE on WP_Error object in get_locale_data(). + * + */ + private function init() { + + $json = $this->get_locale_data(); + + if ( $json === false ) { + return false; + } + + $translation_data = json_decode( $json ); + + $locales = $translation_data->translation_sets; + + $this->set_current_locale_data( $locales ); + + $this->translated_count = $this->count_translated_languages( $locales ); + + $this->set_translation_url(); + } + } + +endif; // End class_exists check. diff --git a/plugins/all-in-one-seo-pack/index.php b/plugins/all-in-one-seo-pack/index.php new file mode 100644 index 0000000..3c379e1 --- /dev/null +++ b/plugins/all-in-one-seo-pack/index.php @@ -0,0 +1,4 @@ + field_size ) { + cntfield.style.color = "#fff"; + cntfield.style.backgroundColor = "#f00"; + } else { + if ( cntfield.value > ( field_size - 6 ) ) { + cntfield.style.color = "#515151"; + cntfield.style.backgroundColor = "#ff0"; + } else { + cntfield.style.color = "#515151"; + cntfield.style.backgroundColor = "#eee"; + } + } +} + +/** + * @summary Returns the fields value. + * + * @since 1.0.0 + * @param String $field. + * @return Mixed. + */ +function aioseop_get_field_value( field ) { + if ( field.length == 0 ) + return field; + cur = jQuery('[name=' + field + ']'); + if ( cur.length == 0 ) + return field; + type = cur.attr('type'); + if ( type == "checkbox" || type == "radio" ) + cur = jQuery('input[name=' + field + ']:checked'); + return cur.val(); +} + +/** + * @summary Returns the fields value. + * + * @since 1.0.0 + * @param String $field. + * @return Mixed. + */ +function aioseop_get_field_values( field ) { + arr = []; + cur = jQuery( '[name=' + field + ']' ); + if ( cur.length == 0 ) + return field; + type = cur.attr('type'); + if ( type == "checkbox" || type == "radio" ) + jQuery( 'input[name=' + field + ']:checked' ).each(function() { + arr.push(jQuery(this).val()); + }); + if ( arr.length <= 0 ) + arr.push(cur.val()); + return arr; +} + +/** + * @summary Evaluates condshow logic. + * + * @since 1.0.0 + * @param String $statement. + * @return Mixed. + */ +function aioseop_eval_condshow_logic( statement ) { + var lhs, rhs; + if ( ( typeof statement ) == 'object' ) { + lhs = statement['lhs']; + rhs = statement['rhs']; + if ( lhs !== null && ( ( typeof lhs ) == 'object' ) ) + lhs = aioseop_eval_condshow_logic( statement['lhs'] ); + if ( rhs !== null && ( typeof rhs ) == 'object' ) + rhs = aioseop_eval_condshow_logic( statement['rhs'] ); + lhs = aioseop_get_field_value( lhs ); + rhs = aioseop_get_field_value( rhs ); + switch ( statement['op'] ) { + case 'NOT': + return ( ! lhs ); + case 'AND': + return ( lhs && rhs ); + case 'OR' : + return ( lhs || rhs ); + case '==' : + return ( lhs == rhs ); + case '!=' : + return ( lhs != rhs ); + default : + return null; + } + } + return statement; +} + +/** + * @summary Evaluates condshow logic. + * + * @since 1.0.0 + * @param String $index. + * @param $value. + * @return Mixed. + */ +function aioseop_do_condshow_match( index, value ) { + if ( typeof value != 'undefined' ) { + matches = true; + jQuery.each( value, function(subopt, setting) { + var statement; + if ( ( typeof setting ) == 'object' ) { + statement = aioseop_eval_condshow_logic( setting ); + if ( ! statement ) { + matches = false; + } + } else { + if ( subopt.match( /\\\[\\\]/ ) ) { // special case for these -- pdb + cur = aioseop_get_field_values( subopt ); + if ( jQuery.inArray( setting, cur, 0 ) < 0 ) { + matches = false; + } + } else { + cur = aioseop_get_field_value( subopt ); + if ( cur != setting ) { + matches = false; + } + } + } + }); + if ( matches ) { + jQuery( '#' + index + '_wrapper' ).show(); + } else { + jQuery( '#' + index + '_wrapper' ).hide(); + } + return matches; + } + return false; +} + +/** + * @summary Adds condshow handlers. + * + * @since 1.0.0 + * @param String $index. + * @param $value. + */ +function aioseop_add_condshow_handlers( index, value ) { + if ( typeof value != 'undefined' ) { + jQuery.each(value, function(subopt, setting) { + jQuery('[name=' + subopt + ']').bind( "change keyup", function() { + aioseop_do_condshow_match( index, value ); + }); + }); + } +} + +/** + * @summary Does condshow. + * + * @since 1.0.0 + * @param $condshow. + */ +function aioseop_do_condshow( condshow ) { + if ( typeof aiosp_data.condshow != 'undefined' ) { + jQuery.each( aiosp_data.condshow, function( index, value ) { + aioseop_do_condshow_match( index, value ); + aioseop_add_condshow_handlers( index, value ); + }); + } +} + +/** + * @since 1.0.0 + */ +jQuery( document ).ready(function() { + if ( typeof aiosp_data != 'undefined' ) { + if ( typeof aiosp_data.condshow != 'undefined' ) { + aioseop_do_condshow( aiosp_data.condshow ); + } + } +}); + +/** + * @since 1.0.0 + * @return boolean. + */ +jQuery( document ).ready(function() { + var image_field; + jQuery( '.aioseop_upload_image_button' ).click(function() { + window.send_to_editor = aioseopNewSendToEditor; + image_field = jQuery( this ).next(); + formfield = image_field.attr( 'name' ); + tb_show( '', 'media-upload.php?type=image&TB_iframe=true' ); + return false; + }); + aioseopStoreSendToEditor = window.send_to_editor; + aioseopNewSendToEditor = function(html) { + imgurl = jQuery( 'img',html ).attr( 'src' ); + if ( typeof( imgurl ) !== undefined ) + image_field.val( imgurl ); + tb_remove(); + window.send_to_editor = aioseopStoreSendToEditor; + }; +}); + +/** + * @summary workaround for bug that causes radio inputs to lose settings when meta box is dragged. + * + * props to commentluv for this fix + * @author commentluv. + * @link https://core.trac.wordpress.org/ticket/16972 + * @since 1.0.0 + */ +jQuery( document ).ready(function() { + + // listen for drag drop of metaboxes , bind mousedown to .hndle so it only fires when starting to drag + jQuery( '.hndle' ).mousedown(function() { + + // set live event listener for mouse up on the content .wrap and wait a tick to give the dragged div time to settle before firing the reclick function + jQuery( '.wrap').mouseup(function() { + aiosp_store_radio(); + setTimeout( 'aiosp_reclick_radio();', 50 ); + }); + }) +}); + +/** + * @summary Stores object of all radio buttons that are checked for entire form. + * + * @since 1.0.0 + */ +function aiosp_store_radio() { + var radioshack = {}; + jQuery( 'input[type="radio"]' ).each(function() { + if( jQuery( this ).is( ':checked' ) ) { + radioshack[ jQuery( this ).attr( 'name' ) ] = jQuery( this ).val(); + } + jQuery( document ).data( 'radioshack', radioshack ); + }); +} + +/** + * @summary Detects mouseup and restore all radio buttons that were checked. + * + * @since 1.0.0 + */ +function aiosp_reclick_radio() { + + // gets the object of checked radio button names and values + var radios = jQuery( document ).data( 'radioshack' ); + + //steps thru each object element and trigger a click on it's corresponding radio button + for( key in radios ) { + jQuery( 'input[name="' + key + '"]' ) + .filter( '[value="' + radios[ key ]+ '"]' ) + .trigger( 'click' ); + } + // unbinds the event listener on .wrap (prevents clicks on inputs from triggering function) + jQuery( '.wrap' ).unbind( 'mouseup' ); +} + +/** + * @summary Handdles ajax call. + * + * @since 1.0.0 + * @param $action. + * @param $setting. + * @param $options. + * @param $success. + */ +function aioseop_handle_ajax_call( action, settings, options, success ) { + var aioseop_sack = new sack( ajaxurl ); + aioseop_sack.execute = 1; + aioseop_sack.method = 'POST'; + aioseop_sack.setVar( "action", action ); + aioseop_sack.setVar( "settings", settings ); + aioseop_sack.setVar( "options", options ); + if ( typeof success != 'undefined' ) { + aioseop_sack.onCompletion = success; + } + aioseop_sack.setVar( + "nonce-aioseop", + jQuery( 'input[name="nonce-aioseop"]' ).val() + ); + aioseop_sack.setVar( + "nonce-aioseop-edit", + jQuery( 'input[name="nonce-aioseop-edit"]' ).val() + ); + aioseop_sack.onError = function() { + alert( 'Ajax error on saving.' ); + }; + aioseop_sack.runAJAX(); +} + +/** + * @summary Handdles posts URL. + * + * @since 1.0.0 + * @param $action. + * @param $setting. + * @param $options. + * @param $success. + */ +function aioseop_handle_post_url( action, settings, options, success) { + jQuery("div#aiosp_"+settings).fadeOut('fast', function() { + var loading = ' Please wait...'; + jQuery( "div#aiosp_"+ settings ).fadeIn( 'fast', function() { + aioseop_handle_ajax_call( action, settings, options, success); + }); + jQuery( "div#aiosp_" + settings ).html( loading ); + }) +}; + +/** + * @summary Handles when AIOSEOP is overflowed. + * + * @since 1.0.0 + * @param $element. + * @return mixed. + */ +function aioseop_is_overflowed( element ) { + return element.scrollHeight > element.clientHeight || element.scrollWidth > element.clientWidth; +} + +/** + * @summary Handles when overflowed border. + * + * @since 1.0.0 + * @param $el. + */ +function aioseop_overflow_border( el ) { + if ( aioseop_is_overflowed( el ) ) { + el.className = 'aioseop_option_div aioseop_overflowed'; + } else { + el.className = 'aioseop_option_div'; + } +} + +/** + * @since 1.0.0 + * @return mixed. + */ +jQuery( document ).ready(function() { + jQuery( "#poststuff .aioseop_radio_type input[type='radio']" ).on( 'click', function() { + var previousValue = jQuery( this ).attr( 'previousValue' ); + var name = jQuery( this ).attr( 'name' ); + if ( typeof previousValue == 'undefined' ) { + if ( jQuery( this ).prop( "checked" ) ) { + jQuery( this ).prop( 'checked', true ); + jQuery( this ).attr( 'previousValue', 'checked' ); + } else { + jQuery( this ).prop( 'checked', false ); + jQuery( this ).attr( 'previousValue', false ); + } + return; + } + if ( previousValue == 'checked' ) { + jQuery( this ).prop( 'checked', false ); + jQuery( this ).attr( 'previousValue', false ); + } else { + jQuery( "input[name=" + name + "]:radio" ) + .attr( 'previousValue', false ); + jQuery( this ).attr( 'previousValue', 'checked' ); + } + }); + if ( typeof aiosp_data.pointers != 'undefined' ) { + + /** + * @since 1.0.0 + * @param $index. + * @param $value. + * @return mixed. + */ + jQuery.each( aiosp_data.pointers, function( index, value ) { + if ( value != 'undefined' && value.pointer_text != '' ) { + aioseop_show_pointer( index, value ); + } + }); + } + + /** + * @since 1.0.0 + * @param $e. + * @return boolean. + */ + jQuery( ".all-in-one-seo_page_all-in-one-seo-pack-modules-aioseop_feature_manager #aiosp_settings_form .aioseop_settings_left" ) + .delegate("input[name='Submit']", "click", function( e ) { + e.preventDefault(); + return false; + }); + + /** + * @since 1.0.0 + * @param $e. + * @return boolean. + */ + jQuery( ".all-in-one-seo_page_all-in-one-seo-pack-modules-aioseop_feature_manager #aiosp_settings_form" ) + .delegate( "input[name='Submit']", "click", function( e ) { + e.preventDefault(); + aioseop_handle_post_url( + 'aioseop_ajax_save_settings', + 'ajax_settings_message', + jQuery( 'form#aiosp_settings_form' ).serialize(), + function() { + jQuery( '.wp-has-current-submenu' ).fadeIn( 'fast', function() { + aioseop_handle_ajax_call( + 'aioseop_ajax_get_menu_links', + 'ajax_settings_message', + jQuery.param( {target: '.wp-has-current-submenu > ul'} ) + ); + }); + } ); + return false; + }); + + /** + * @since 1.0.0 + * @param $e. + * @return boolean. + */ + jQuery( ".all-in-one-seo_page_all-in-one-seo-pack-pro-modules-aioseop_feature_manager #aiosp_settings_form .aioseop_settings_left" ) + .delegate("input[name='Submit']", "click", function( e ) { + e.preventDefault(); + return false; + }); + + /** + * @since 1.0.0 + * @param $e. + * @return boolean. + */ + jQuery( ".all-in-one-seo_page_all-in-one-seo-pack-pro-modules-aioseop_feature_manager #aiosp_settings_form" ) + .delegate( "input[name='Submit']", "click", function( e ) { + e.preventDefault(); + aioseop_handle_post_url( + 'aioseop_ajax_save_settings', + 'ajax_settings_message', + jQuery( 'form#aiosp_settings_form' ).serialize(), + function() { + jQuery( '.wp-has-current-submenu' ).fadeIn( 'fast', function() { + aioseop_handle_ajax_call( + 'aioseop_ajax_get_menu_links', + 'ajax_settings_message', + jQuery.param( {target: '.wp-has-current-submenu > ul'} ) + ); + }); + } ); + return false; + }); + + var selectors = + "div.aioseop_multicheckbox_type div.aioseop_option_div, #aiosp_sitemap_debug div.aioseop_option_div, #aiosp_performance_status div.aioseop_option_div"; + + /** + * @since 1.0.0 + * @return boolean. + */ + jQuery( "div#aiosp_sitemap_addl_pages_metabox" ) + .delegate( "input[name='Submit']", "click", function() { + aioseop_handle_post_url( + 'aioseop_ajax_save_url', + 'sitemap_addl_pages', + jQuery( 'div#aiosp_sitemap_addl_pages_metabox input, div#aiosp_sitemap_addl_pages_metabox select' ) + .serialize() + ); + return false; + }); + + /** + * @since 1.0.0 + * @return boolean. + */ + jQuery( "div#aiosp_video_sitemap_addl_pages_metabox" ) + .delegate( "input[name='Submit']", "click", function() { + aioseop_handle_post_url( + 'aioseop_ajax_save_url', + 'video_sitemap_addl_pages', + jQuery( 'div#aiosp_video_sitemap_addl_pages_metabox input, div#aiosp_video_sitemap_addl_pages_metabox select') + .serialize() + ); + return false; + }); + + /** + * @since 1.0.0 + * @param $e. + * @return boolean. + */ + jQuery( "div#aiosp_sitemap_addl_pages_metabox" ) + .delegate("a.aiosp_delete_url", "click", function( e ) { + e.preventDefault(); + aioseop_handle_post_url( + 'aioseop_ajax_delete_url', + 'sitemap_addl_pages', + jQuery( this ).attr( "title" ) + ); + return false; + }); + + /** + * @since 1.0.0 + * @param $e. + * @return boolean. + */ + jQuery( "div#aiosp_video_sitemap_addl_pages_metabox" ) + .delegate( "a.aiosp_delete_url", "click", function( e ) { + e.preventDefault(); + aioseop_handle_post_url( + 'aioseop_ajax_delete_url', + 'video_sitemap_addl_pages', + jQuery( this ).attr( "title" ) + ); + return false; + }); + + /** + * @since 1.0.0 + * @param $e. + * @return boolean. + */ + jQuery( "div#aiosp_opengraph_scan_header" ) + .delegate( "input[name='aiosp_opengraph_scan_header']", "click", function( e ) { + e.preventDefault(); + aioseop_handle_post_url( + 'aioseop_ajax_scan_header', + 'opengraph_scan_header', + jQuery( 'div#aiosp_opengraph_scan_header' ).serialize() + ); + return false; + }); + + /** + * @since 1.0.0 + */ + jQuery( 'input[name="aiosp_sitemap_posttypes[]"][value="all"], input[name="aiosp_video_sitemap_posttypes[]"][value="all"], input[name="aiosp_sitemap_taxonomies[]"][value="all"], input[name="aiosp_video_sitemap_taxonomies[]"][value="all"]' ) + .click(function() { + jQuery( this ) + .parents( 'div:eq(0)' ) + .find( ':checkbox' ) + .prop( 'checked', this.checked ); + }); + + /** + * @since 1.0.0 + */ + jQuery( 'input[name="aiosp_sitemap_posttypes[]"][value!="all"], input[name="aiosp_video_sitemap_posttypes[]"][value!="all"], input[name="aiosp_sitemap_taxonomies[]"][value!="all"], input[name="aiosp_video_sitemap_taxonomies[]"][value!="all"]' ) + .click(function () { + if ( ! this.checked ) + jQuery( this ) + .parents( 'div:eq(0)' ) + .find( 'input[value="all"]:checkbox' ) + .prop( 'checked', this.checked ); + }); + + /** + * @since 1.0.0 + */ + jQuery( ".aioseop_tab:not(:first)" ).hide(); + + /** + * @since 1.0.0 + */ + jQuery( ".aioseop_tab:first" ).show(); + + /** + * @since 1.0.0 + * @return boolean. + */ + jQuery( "a.aioseop_header_tab" ).click(function() { + var stringref = jQuery( this ).attr( "href" ).split( '#' )[1]; + jQuery( '.aioseop_tab:not(#' + stringref + ')' ).hide( 'slow' ); + jQuery( '.aioseop_tab#' + stringref ).show( 'slow' ); + jQuery( '.aioseop_header_tab[href!="#'+ stringref +'"]' ).removeClass( 'active' ); + jQuery( '.aioseop_header_tab[href="#' + stringref +'"]' ).addClass( 'active' ); + return false; + }); +}); diff --git a/plugins/all-in-one-seo-pack/js/quickedit_functions.js b/plugins/all-in-one-seo-pack/js/quickedit_functions.js new file mode 100644 index 0000000..9d8bb8c --- /dev/null +++ b/plugins/all-in-one-seo-pack/js/quickedit_functions.js @@ -0,0 +1,81 @@ +jQuery(document).on( 'click', '.visibility-notice', function() { + + jQuery.ajax({ + url: ajaxurl, + data: { + action: 'aioseo_dismiss_visibility_notice' + } + }) + +}) + +jQuery(document).on( 'click', '.yst_notice', function() { + + jQuery.ajax({ + url: ajaxurl, + data: { + action: 'aioseo_dismiss_yst_notice' + } + }) + +}) + +jQuery(document).on( 'click', '.woo-upgrade-notice', function() { + + jQuery.ajax({ + url: ajaxurl, + data: { + action: 'aioseo_dismiss_woo_upgrade_notice' + } + }) + +}) + + +function aioseop_ajax_edit_meta_form( post_id, meta, nonce ) { + var uform = jQuery('#aioseop_'+meta+'_' + post_id); + var post_title = jQuery('#aioseop_label_' + meta + '_' + post_id).text(); + var element = uform.html(); var input; + input = ''; + input += ''; + uform.html( input ); + uform.attr( "class", "aioseop_mpc_admin_meta_options aio_editing" ); + jQuery('#aioseop_'+meta+'_cancel_' + post_id).click(function() { + uform.html( element ); + uform.attr( "class", "aioseop_mpc_admin_meta_options" ); + }); + jQuery('#aioseop_'+meta+'_save_' + post_id).click(function() { + var new_meta = jQuery( '#aioseop_new_'+meta+'_' + post_id ).val(); + handle_post_meta( post_id, new_meta, meta, nonce ); + }); +} + +function handle_post_meta( p, t, m, n ) { + jQuery("div#aioseop_"+m+"_"+p).fadeOut('fast', function() { + var loading = '
Please wait…
'; + jQuery("div#aioseop_"+m+"_"+p).fadeIn('fast', function() { + var aioseop_sack = new sack(aioseopadmin.requestUrl); + aioseop_sack.execute = 1; + aioseop_sack.method = 'POST'; + aioseop_sack.setVar( "action", "aioseop_ajax_save_meta"); + aioseop_sack.setVar( "post_id", p ); + aioseop_sack.setVar( "new_meta", t ); + aioseop_sack.setVar( "target_meta", m ); + aioseop_sack.setVar( "_inline_edit", jQuery('input#_inline_edit').val() ); + aioseop_sack.setVar( "_nonce", n ); + aioseop_sack.onError = function() {alert('Ajax error on saving title'); }; + aioseop_sack.runAJAX(); + }) + jQuery("div#aioseop_"+m+"_"+p).html(loading); + jQuery("div#aioseop_"+m+"_"+p).attr( "class", "aioseop_mpc_admin_meta_options" ); + + }) +} \ No newline at end of file diff --git a/plugins/all-in-one-seo-pack/js/welcome.js b/plugins/all-in-one-seo-pack/js/welcome.js new file mode 100644 index 0000000..2c6d7f4 --- /dev/null +++ b/plugins/all-in-one-seo-pack/js/welcome.js @@ -0,0 +1,32 @@ +(function($) { + + $(document).on( 'click', '.nav-tab-wrapper a', function() { + $('section').hide(); + $('section').eq($(this).index()).show(); + + +//alert($('section')); + if($(this).attr('className') == 'nav-tab-active') { + // $(this).removeClass('nav-tab-active'); + // $(this).addClass('nav-tab-active'); + }else{ + // $(this).addClass('nav-tab-active'); + // $(this).removeClass('nav-tab-active'); + } + // $(this).addClass('nav-tab-active'); + // $(this).eq($(this).index()).removeClass('nav-tab-active'); + //$(this).removeClass('nav-tab-active'); + return false; + }) + + $("a.nav-tab").click(function() { + + $("a.nav-tab").removeClass('nav-tab-active'); + $(this).addClass('nav-tab-active'); + + }); + + + + +})( jQuery ); diff --git a/plugins/all-in-one-seo-pack/modules/aioseop_bad_robots.php b/plugins/all-in-one-seo-pack/modules/aioseop_bad_robots.php new file mode 100644 index 0000000..975d653 --- /dev/null +++ b/plugins/all-in-one-seo-pack/modules/aioseop_bad_robots.php @@ -0,0 +1,254 @@ +name = __( 'Bad Bot Blocker', 'all-in-one-seo-pack' ); // Human-readable name of the plugin. + $this->prefix = 'aiosp_bad_robots_'; // Option prefix. + $this->file = __FILE__; // The current file. + parent::__construct(); + + $help_text = array( + 'block_bots' => __( 'Block requests from user agents that are known to misbehave with 503.', 'all-in-one-seo-pack' ), + 'block_refer' => __( 'Block Referral Spam using HTTP.', 'all-in-one-seo-pack' ), + 'track_blocks' => __( 'Log and show recent requests from blocked bots.', 'all-in-one-seo-pack' ), + 'htaccess_rules' => __( 'Block bad robots via Apache .htaccess rules. Warning: this will change your web server configuration, make sure you are able to edit this file manually as well.', 'all-in-one-seo-pack' ), + 'edit_blocks' => __( 'Check this to edit the list of disallowed user agents for blocking bad bots.', 'all-in-one-seo-pack' ), + 'blocklist' => __( 'This is the list of disallowed user agents used for blocking bad bots.', 'all-in-one-seo-pack' ), + 'referlist' => __( 'This is the list of disallowed referers used for blocking bad bots.', 'all-in-one-seo-pack' ), + 'blocked_log' => __( 'Shows log of most recent requests from blocked bots. Note: this will not track any bots that were already blocked at the web server / .htaccess level.', 'all-in-one-seo-pack' ), + ); + + $this->default_options = array( + 'block_bots' => array( 'name' => __( 'Block Bad Bots using HTTP', 'all-in-one-seo-pack' ) ), + 'block_refer' => array( 'name' => __( 'Block Referral Spam using HTTP', 'all-in-one-seo-pack' ) ), + 'track_blocks' => array( 'name' => __( 'Track Blocked Bots', 'all-in-one-seo-pack' ) ), + 'htaccess_rules' => array( 'name' => __( 'Block Bad Bots using .htaccess', 'all-in-one-seo-pack' ) ), + 'edit_blocks' => array( 'name' => __( 'Use Custom Blocklists', 'all-in-one-seo-pack' ) ), + 'blocklist' => array( + 'name' => __( 'User Agent Blocklist', 'all-in-one-seo-pack' ), + 'type' => 'textarea', + 'rows' => 5, + 'cols' => 120, + 'condshow' => array( "{$this->prefix}edit_blocks" => 'on' ), + 'default' => join( "\n", $this->default_bad_bots() ), + ), + 'referlist' => array( + 'name' => __( 'Referer Blocklist', 'all-in-one-seo-pack' ), + 'type' => 'textarea', + 'rows' => 5, + 'cols' => 120, + 'condshow' => array( + "{$this->prefix}edit_blocks" => 'on', + "{$this->prefix}block_refer" => 'on', + ), + 'default' => join( "\n", $this->default_bad_referers() ), + ), + 'blocked_log' => array( + 'name' => __( 'Log Of Blocked Bots', 'all-in-one-seo-pack' ), + 'default' => __( 'No requests yet.', 'all-in-one-seo-pack' ), + 'type' => 'esc_html', + 'disabled' => 'disabled', + 'save' => false, + 'label' => 'top', + 'rows' => 5, + 'cols' => 120, + 'style' => 'min-width:950px', + 'condshow' => array( "{$this->prefix}track_blocks" => 'on' ), + ), + ); + $is_apache = false; + if ( ! empty( $_SERVER['SERVER_SOFTWARE'] ) && stristr( $_SERVER['SERVER_SOFTWARE'], 'Apache' ) !== false ) { + $is_apache = true; + add_action( $this->prefix . 'settings_update', array( $this, 'generate_htaccess_blocklist' ), 10 ); + } else { + unset( $this->default_options['htaccess_rules'] ); + unset( $help_text['htaccess_rules'] ); + } + + if ( ! empty( $help_text ) ) { + foreach ( $help_text as $k => $v ) { + $this->default_options[ $k ]['help_text'] = $v; + } + } + + add_filter( $this->prefix . 'display_options', array( $this, 'filter_display_options' ) ); + + // Load initial options / set defaults, + $this->update_options(); + + if ( $this->option_isset( 'edit_blocks' ) ) { + add_filter( $this->prefix . 'badbotlist', array( $this, 'filter_bad_botlist' ) ); + if ( $this->option_isset( 'block_refer' ) ) { + add_filter( $this->prefix . 'badreferlist', array( $this, 'filter_bad_referlist' ) ); + } + } + + if ( $this->option_isset( 'block_bots' ) ) { + if ( ! $this->allow_bot() ) { + status_header( 503 ); + $ip = $this->validate_ip( $_SERVER['REMOTE_ADDR'] ); + $user_agent = $_SERVER['HTTP_USER_AGENT']; + $this->blocked_message( sprintf( __( 'Blocked bot with IP %s -- matched user agent %s found in blocklist.', 'all-in-one-seo-pack' ), $ip, $user_agent ) ); + exit(); + } elseif ( $this->option_isset( 'block_refer' ) && $this->is_bad_referer() ) { + status_header( 503 ); + $ip = $this->validate_ip( $_SERVER['REMOTE_ADDR'] ); + $referer = $_SERVER['HTTP_REFERER']; + $this->blocked_message( sprintf( __( 'Blocked bot with IP %s -- matched referer %s found in blocklist.', 'all-in-one-seo-pack' ), $ip, $referer ) ); + } + } + } + + /** + * Validate IP. + * + * @param $ip + * + * @since 2.3.7 + * + * @return string + */ + function validate_ip( $ip ) { + + if ( filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 ) ) { + // Valid IPV4. + return $ip; + } + + if ( filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6 ) ) { + // Valid IPV6. + return $ip; + } + + // Doesn't seem to be a valid IP. + return 'invalid IP submitted'; + + } + + function generate_htaccess_blocklist() { + if ( ! $this->option_isset( 'htaccess_rules' ) ) { + + if ( insert_with_markers( get_home_path() . '.htaccess', $this->name, '' ) ) { + aioseop_output_notice( __( 'Updated .htaccess rules.', 'all-in-one-seo-pack' ) ); + } else { + aioseop_output_notice( __( 'Failed to update .htaccess rules!', 'all-in-one-seo-pack' ), '', 'error' ); + } + + return; + + } + + if ( function_exists( 'apache_get_modules' ) ) { + $modules = apache_get_modules(); + foreach ( array( 'mod_authz_host', 'mod_setenvif' ) as $m ) { + if ( ! in_array( $m, $modules ) ) { + aioseop_output_notice( sprintf( __( 'Apache module %s is required!', 'all-in-one-seo-pack' ), $m ), '', 'error' ); + } + } + } + $botlist = $this->default_bad_bots(); + $botlist = apply_filters( $this->prefix . 'badbotlist', $botlist ); + if ( ! empty( $botlist ) ) { + $regex = $this->quote_list_for_regex( $botlist, '"' ); + $htaccess = array(); + $htaccess[] = 'SetEnvIfNoCase User-Agent "' . $regex . '" bad_bot'; + if ( $this->option_isset( 'edit_blocks' ) && $this->option_isset( 'block_refer' ) && $this->option_isset( 'referlist' ) ) { + $referlist = $this->default_bad_referers(); + $referlist = apply_filters( $this->prefix . 'badreferlist', $botlist ); + if ( ! empty( $referlist ) ) { + $regex = $this->quote_list_for_regex( $referlist, '"' ); + $htaccess[] = 'SetEnvIfNoCase Referer "' . $regex . '" bad_bot'; + } + } + $htaccess[] = 'Deny from env=bad_bot'; + if ( insert_with_markers( get_home_path() . '.htaccess', $this->name, $htaccess ) ) { + aioseop_output_notice( __( 'Updated .htaccess rules.', 'all-in-one-seo-pack' ) ); + } else { + aioseop_output_notice( __( 'Failed to update .htaccess rules!', 'all-in-one-seo-pack' ), '', 'error' ); + } + } else { + aioseop_output_notice( __( 'No rules to update!', 'all-in-one-seo-pack' ), '', 'error' ); + } + } + + /** + * @param $referlist + * + * @return array + */ + function filter_bad_referlist( $referlist ) { + if ( $this->option_isset( 'edit_blocks' ) && $this->option_isset( 'block_refer' ) && $this->option_isset( 'referlist' ) ) { + $referlist = explode( "\n", $this->options["{$this->prefix}referlist"] ); + } + + return $referlist; + } + + /** + * @param $botlist + * + * @return array + */ + function filter_bad_botlist( $botlist ) { + if ( $this->option_isset( 'edit_blocks' ) && $this->option_isset( 'blocklist' ) ) { + $botlist = explode( "\n", $this->options["{$this->prefix}blocklist"] ); + } + + return $botlist; + } + + + /** + * Updates blocked message. + * + * @param string $msg + */ + function blocked_message( $msg ) { + if ( empty( $this->options["{$this->prefix}blocked_log"] ) ) { + $this->options["{$this->prefix}blocked_log"] = ''; + } + $this->options["{$this->prefix}blocked_log"] = date( 'Y-m-d H:i:s' ) . " {$msg}\n" . $this->options["{$this->prefix}blocked_log"]; + if ( $this->strlen( $this->options["{$this->prefix}blocked_log"] ) > 4096 ) { + $end = $this->strrpos( $this->options["{$this->prefix}blocked_log"], "\n" ); + if ( false === $end ) { + $end = 4096; + } + $this->options["{$this->prefix}blocked_log"] = $this->substr( $this->options["{$this->prefix}blocked_log"], 0, $end ); + } + $this->update_class_option( $this->options ); + } + + + /** + * Filter display options. + * + * Add in options for status display on settings page, sitemap rewriting on multisite. + * + * @param $options + * + * @return mixed + */ + function filter_display_options( $options ) { + + if ( $this->option_isset( 'blocked_log' ) ) { + if ( preg_match( '/\<(\?php|script)/', $options["{$this->prefix}blocked_log"] ) ) { + $options["{$this->prefix}blocked_log"] = "Probable XSS attempt detected!\n" . $options["{$this->prefix}blocked_log"]; + } + } + + return $options; + } + } +} diff --git a/plugins/all-in-one-seo-pack/modules/aioseop_feature_manager.php b/plugins/all-in-one-seo-pack/modules/aioseop_feature_manager.php new file mode 100644 index 0000000..9bcdfb7 --- /dev/null +++ b/plugins/all-in-one-seo-pack/modules/aioseop_feature_manager.php @@ -0,0 +1,191 @@ +name = __( 'Feature Manager', 'all-in-one-seo-pack' ); // Human-readable name of the plugin. + $this->prefix = 'aiosp_feature_manager_'; // Option prefix. + $this->file = __FILE__; // The current file. + parent::__construct(); + $this->module_info = array( + 'sitemap' => array( + 'name' => __( 'XML Sitemaps', 'all-in-one-seo-pack' ), + 'description' => __( 'Create and manage your XML Sitemaps using this feature and submit your XML Sitemap to Google, Bing/Yahoo and Ask.com.', 'all-in-one-seo-pack' ), + ), + 'opengraph' => array( + 'name' => __( 'Social Meta', 'all-in-one-seo-pack' ), + 'description' => __( 'Activate this feature to add Social Meta data to your site to deliver closer integration between your website/blog and Facebook, Twitter, and Google+.', 'all-in-one-seo-pack' ), + ), + 'robots' => array( + 'name' => __( 'Robots.txt', 'all-in-one-seo-pack' ), + 'description' => __( 'Generate and validate your robots.txt file to guide search engines through your site.', 'all-in-one-seo-pack' ), + ), + 'file_editor' => array( + 'name' => __( 'File Editor', 'all-in-one-seo-pack' ), + 'description' => __( 'Edit your robots.txt file and your .htaccess file to fine-tune your site.', 'all-in-one-seo-pack' ), + ), + 'importer_exporter' => array( + 'name' => __( 'Importer & Exporter', 'all-in-one-seo-pack' ), + 'description' => __( 'Exports and imports your All in One SEO Pack plugin settings.', 'all-in-one-seo-pack' ), + ), + 'bad_robots' => array( + 'name' => __( 'Bad Bot Blocker', 'all-in-one-seo-pack' ), + 'description' => __( 'Stop badly behaving bots from slowing down your website.', 'all-in-one-seo-pack' ), + ), + 'performance' => array( + 'name' => __( 'Performance', 'all-in-one-seo-pack' ), + 'description' => __( 'Optimize performance related to SEO and check your system status.', 'all-in-one-seo-pack' ), + 'default' => 'on', + ), + ); + + if ( AIOSEOPPRO ) { + + $this->module_info['coming_soon'] = array( + 'name' => __( 'Coming Soon...', 'all-in-one-seo-pack' ), + 'description' => __( 'Image SEO', 'all-in-one-seo-pack' ), + 'save' => false, + ); + $this->module_info['video_sitemap'] = array( + 'name' => __( 'Video Sitemap', 'all-in-one-seo-pack' ), + 'description' => __( 'Create and manage your Video Sitemap using this feature and submit your Video Sitemap to Google, Bing/Yahoo and Ask.com.', 'all-in-one-seo-pack' ), + ); + + } else { + + $this->module_info['coming_soon'] = array( + 'name' => __( 'Video Sitemap', 'all-in-one-seo-pack' ), + 'description' => __( 'Pro Version Only', 'all-in-one-seo-pack' ), + 'save' => false, + ); + + } + + // Set up default settings fields. + // Name - Human-readable name of the setting. + // Help_text - Inline documentation for the setting. + // Type - Type of field; this defaults to checkbox; currently supported types are checkbox, text, select, multiselect. + // Default - Default value of the field. + // Initial_options - Initial option list used for selects and multiselects. + // Other supported options: class, id, style -- allows you to set these HTML attributes on the field. + + $this->default_options = array(); + $this->module_info = apply_filters( 'aioseop_module_info', $this->module_info ); + $mod[] = 'coming_soon'; + + foreach ( $mod as $m ) { + if ( 'performance' === $m && ! is_super_admin() ) { + continue; + } + $this->default_options["enable_$m"] = array( + 'name' => $this->module_info[ $m ]['name'], + 'help_text' => $this->module_info[ $m ]['description'], + 'type' => 'custom', + 'class' => 'aioseop_feature', + 'id' => "aioseop_$m", + 'save' => true, + ); + + if ( ! empty( $this->module_info[ $m ]['image'] ) ) { + $this->default_options["enable_$m"]['image'] = $this->module_info[ $m ]['image']; + } + if ( ! empty( $this->module_info[ $m ] ) ) { + foreach ( array( 'save', 'default' ) as $option ) { + if ( isset( $this->module_info[ $m ][ $option ] ) ) { + $this->default_options["enable_$m"][ $option ] = $this->module_info[ $m ][ $option ]; + } + } + } + } + $this->layout = array( + 'default' => array( + 'name' => $this->name, + 'help_link' => 'https://semperplugins.com/documentation/feature-manager/', + 'options' => array_keys( $this->default_options ), + ), + ); + // Load initial options / set defaults. + $this->update_options(); + if ( is_admin() ) { + add_filter( $this->prefix . 'output_option', array( $this, 'display_option_div' ), 10, 2 ); + add_filter( $this->prefix . 'submit_options', array( $this, 'filter_submit' ) ); + } + } + + /** + * Determines the menu order. + * + * @return int + */ + function menu_order() { + return 20; + } + + /** + * @param $submit + * + * @return mixed + */ + function filter_submit( $submit ) { + $submit['Submit']['value'] = __( 'Update Features', 'all-in-one-seo-pack' ) . ' »'; + $submit['Submit']['class'] .= ' hidden'; + $submit['Submit_Default']['value'] = __( 'Reset Features', 'all-in-one-seo-pack' ) . ' »'; + + return $submit; + } + + /** + * @param $buf + * @param $args + * + * @return string + */ + function display_option_div( $buf, $args ) { + $name = $img = $desc = $checkbox = $class = ''; + if ( isset( $args['options']['help_text'] ) && ! empty( $args['options']['help_text'] ) ) { + $desc .= '

' . $args['options']['help_text'] . '

'; + } + if ( $args['value'] ) { + $class = ' active'; + } + if ( isset( $args['options']['image'] ) && ! empty( $args['options']['image'] ) ) { + $img .= '

'; + } else { + $img .= '

'; + } + + if ( $args['options']['save'] ) { + $name = "

{$args['options']['name']}

"; + $checkbox .= '
'; + } else { + $name = "{$args['options']['name']}"; + } + if ( ! empty( $args['options']['id'] ) ) { + $args['attr'] .= " id='{$args['options']['id']}'"; + } + + return $buf . "
"; + } + } +} diff --git a/plugins/all-in-one-seo-pack/modules/aioseop_file_editor.php b/plugins/all-in-one-seo-pack/modules/aioseop_file_editor.php new file mode 100644 index 0000000..5d0f41d --- /dev/null +++ b/plugins/all-in-one-seo-pack/modules/aioseop_file_editor.php @@ -0,0 +1,145 @@ +name = __( 'File Editor', 'all-in-one-seo-pack' ); // Human-readable name of the plugin + $this->prefix = 'aiosp_file_editor_'; // option prefix + $this->file = __FILE__; // the current file + parent::__construct(); + $this->current_tab = 'robots'; + if ( isset( $_REQUEST['tab'] ) ) { + $this->current_tab = $_REQUEST['tab']; + } + + $help_text = array( + 'robotfile' => __( 'Robots.txt editor', 'all-in-one-seo-pack' ), + 'htaccfile' => __( '.htaccess editor', 'all-in-one-seo-pack' ), + ); + $this->default_options = array( + 'robotfile' => array( + 'name' => __( 'Edit Robots.txt', 'all-in-one-seo-pack' ), + 'save' => false, + 'default' => '', + 'type' => 'textarea', + 'cols' => 70, + 'rows' => 25, + 'label' => 'top', + ), + 'htaccfile' => array( + 'name' => __( 'Edit .htaccess', 'all-in-one-seo-pack' ), + 'save' => false, + 'default' => '', + 'type' => 'textarea', + 'cols' => 70, + 'rows' => 25, + 'label' => 'top', + ), + ); + + if ( ! empty( $help_text ) ) { + foreach ( $help_text as $k => $v ) { + $this->default_options[ $k ]['help_text'] = $v; + } + } + $this->tabs = array( + 'robots' => array( 'name' => __( 'robots.txt' ) ), + 'htaccess' => array( 'name' => __( '.htaccess' ) ), + ); + + $this->layout = array( + 'robots' => array( + 'name' => __( 'Edit robots.txt', 'all-in-one-seo-pack' ), + 'options' => array( 'robotfile' ), + 'tab' => 'robots', + ), + 'htaccess' => array( + 'name' => __( 'Edit .htaccess', 'all-in-one-seo-pack' ), + 'options' => array( 'htaccfile' ), + 'tab' => 'htaccess', + ), + ); + + $this->update_options(); // load initial options / set defaults + } + + function settings_page_init() { + add_filter( $this->prefix . 'display_options', array( $this, 'filter_options' ), 10, 2 ); + add_filter( $this->prefix . 'submit_options', array( $this, 'filter_submit' ), 10, 2 ); + } + + function add_page_hooks() { + parent::add_page_hooks(); + add_action( $this->prefix . 'settings_update', array( $this, 'do_file_editor' ), 10, 2 ); + } + + /** + * @param $submit + * @param $location + * + * @return mixed + */ + function filter_submit( $submit, $location ) { + unset( $submit['Submit_Default'] ); + $submit['Submit']['type'] = 'hidden'; + if ( 'robots' === $this->current_tab ) { + $submit['Submit_File_Editor'] = array( + 'type' => 'submit', + 'class' => 'button-primary', + 'value' => __( 'Update robots.txt', 'all-in-one-seo-pack' ) . ' »', + ); + } elseif ( 'htaccess' === $this->current_tab ) { + $submit['Submit_htaccess'] = array( + 'type' => 'submit', + 'class' => 'button-primary', + 'value' => __( 'Update .htaccess', 'all-in-one-seo-pack' ) . ' »', + ); + } + + return $submit; + } + + /** + * @param $options + * @param $location + * + * @return mixed + */ + function filter_options( $options, $location ) { + $prefix = $this->get_prefix( $location ); + if ( 'robots' === $this->current_tab ) { + $options = $this->load_files( $options, array( 'robotfile' => 'robots.txt' ), $prefix ); + } elseif ( 'htaccess' === $this->current_tab ) { + $options = $this->load_files( $options, array( 'htaccfile' => '.htaccess' ), $prefix ); + } + + return $options; + } + + /** + * @param $options This seems to be unused. + * @param $location + */ + function do_file_editor( $options, $location ) { + $prefix = $this->get_prefix( $location ); + if ( 'robots' === $this->current_tab && isset( $_POST['Submit_File_Editor'] ) && $_POST['Submit_File_Editor'] ) { + $this->save_files( array( 'robotfile' => 'robots.txt' ), $prefix ); + } elseif ( 'htaccess' === $this->current_tab && isset( $_POST['Submit_htaccess'] ) && $_POST['Submit_htaccess'] ) { + $this->save_files( array( 'htaccfile' => '.htaccess' ), $prefix ); + } + } + } +} diff --git a/plugins/all-in-one-seo-pack/modules/aioseop_importer_exporter.php b/plugins/all-in-one-seo-pack/modules/aioseop_importer_exporter.php new file mode 100644 index 0000000..4d71789 --- /dev/null +++ b/plugins/all-in-one-seo-pack/modules/aioseop_importer_exporter.php @@ -0,0 +1,567 @@ +name = __( 'Importer & Exporter', 'all-in-one-seo-pack' ); // Human-readable name of the module + $this->prefix = 'aiosp_importer_exporter_'; // option prefix + $this->file = __FILE__; + parent::__construct(); + $help_text = Array( + 'import_submit' => __( + "Select a valid All in One SEO Pack ini file and click 'Import' to import options from a previous state or install of All in One SEO Pack.
Click here for documentation on this setting", + 'all-in-one-seo-pack' + ), + 'export_choices' => __( + "You may choose to export settings from active modules, and content from post data.
Click here for documentation on this setting", + 'all-in-one-seo-pack' + ), + 'export_post_types' => __( + "Select which Post Types you want to export your All in One SEO Pack meta data for.
Click here for documentation on this setting", + 'all-in-one-seo-pack' + ), + ); + $this->warnings = Array(); + $this->default_options = array( + 'import_submit' => Array( + 'name' => __( 'Import', 'all-in-one-seo-pack' ), + 'default' => '', + 'type' => 'file', + 'save' => false, + ), + 'export_choices' => Array( + 'name' => __( 'Export Settings', 'all-in-one-seo-pack' ), + 'type' => 'multicheckbox', + 'initial_options' => Array( + 1 => 'General Settings', + 2 => 'Post Data', + ), + ), + 'export_post_types' => Array( + 'name' => __( 'Export Post Types:', 'all-in-one-seo-pack' ), + 'default' => Array( + 'post' => 'post', + 'page' => 'page', + ), + 'type' => 'multicheckbox', + 'initial_options' => $this->get_post_type_titles( + Array( '_builtin' => false ) + ), + ), + 'import_export_help' => Array( + 'type' => 'html', + 'label' => 'none', + 'default' => __( + 'Note: If General Settings is checked, the + General Settings, the Feature Manager settings, + and the following currently active modules will + have their settings data exported:', + 'all-in-one-seo-pack' + ) . '
', + ), + ); + if ( ! empty( $help_text ) ) { + foreach ( $help_text as $k => $v ) { + $this->default_options[ $k ]['help_text'] = $v; + } + } + $this->layout = Array( + 'default' => Array( + 'name' => $this->name, + 'help_link' => 'https://semperplugins.com/documentation/importer-exporter-module/', + 'options' => array_keys( $this->default_options ), + ), + ); + + // load initial options / set defaults + add_action( 'admin_init', Array( $this, 'debug_post_types' ), 5 ); + } + + + function settings_page_init() { + add_filter( + $this->prefix . 'submit_options', + Array( $this, 'filter_submit' ) + ); + } + + + /** + * @param $submit + * + * @return array + */ + function filter_submit( $submit ) { + $submit['Submit']['value'] = __( + 'Import', + 'all-in-one-seo-pack' + ) + . ' »'; + + return Array( + 'export_submit' => Array( + 'type' => 'submit', + 'class' => 'button-primary', + 'value' => __( 'Export', 'all-in-one-seo-pack' ) . ' »', + ), + ) + $submit; + } + + + function debug_post_types() { + $post_types = $this->get_post_type_titles(); + $rempost = array( + 'attachment' => 1, + 'revision' => 1, + 'nav_menu_item' => 1, + ); + $this->default_options['export_post_types']['initial_options'] = array_diff_key( + $post_types, + $rempost + ); + global $aioseop_modules; + if ( ! empty( $aioseop_modules ) ) { + $modules = $aioseop_modules->get_loaded_module_list(); + if ( ! empty( $modules ) && ! empty( $modules['feature_manager'] ) ) { + unset( $modules['feature_manager'] ); + } + if ( ! empty( $modules ) ) { + $this->default_options['import_export_help']['default'] .= "
    \n"; + foreach ( $modules as $m ) { + $module = $aioseop_modules->return_module( $m ); + $this->default_options['import_export_help']['default'] .= + "\t
  • " . $module->name . "
  • \n"; + } + $this->default_options['import_export_help']['default'] .= "\n
\n"; + } else { + $this->default_options['import_export_help']['default'] .= '
' + . __( + 'There are no other modules currently loaded!', + 'all-in-one-seo-pack' + ); + } + } + $this->default_options['import_export_help']['default'] .= '
' + . __( + 'You may change this by activating or deactivating + modules in the Feature Manager.', + 'all-in-one-seo-pack' + ); + $this->update_options(); + if ( ! empty( $_REQUEST['export_submit'] ) ) { + $this->do_importer_exporter(); + } else { + add_action( + $this->prefix . 'settings_update', + Array( $this, 'do_importer_exporter' ) + ); + } + } + + + /** + * @param $args + * + * @return string + */ + function importer_exporter_export( $args ) { + + // Adds all settings to settings file + $name = $this->get_option_name(); + $buf = '[' . $this->get_option_name() . "]\n"; + if ( ! empty( $this->options ) ) { + foreach ( $this->options as $key => $value ) { + $buf .= "$key = '" . str_replace( + "'", + "\'", + trim( serialize( $value ) ) + ) . "'\n"; + } + } + + return $buf; + } + + + function show_import_warnings() { + + echo '
'; + + if ( is_array( $this->warnings ) ) { + foreach ( $this->warnings as $warning ) { + echo "

" . esc_html( $warning ) . "

"; + } + } + echo '
'; + } + + + /** + * @param $array + * + * @return array + */ + function parse_ini_helper( $array ) { + $returnArray = array(); + if ( is_array( $array ) ) { + foreach ( $array as $key => $value ) { + $e = explode( ':', $key ); + if ( ! empty( $e[1] ) ) { + $x = array(); + foreach ( $e as $tk => $tv ) { + $x[ $tk ] = trim( $tv ); + } + $x = array_reverse( $x, true ); + foreach ( $x as $k => $v ) { + $c = $x[0]; + if ( empty( $returnArray[ $c ] ) ) { + $returnArray[ $c ] = array(); + } + if ( isset( $returnArray[ $x[1] ] ) ) { + $returnArray[ $c ] = array_merge( + $returnArray[ $c ], $returnArray[ $x[1] ] + ); + } + if ( $k === 0 ) { + $returnArray[ $c ] = array_merge( + $returnArray[ $c ], $array[ $key ] + ); + } + } + } else { + $returnArray[ $key ] = $array[ $key ]; + } + } + } + + return $returnArray; + } + + + /** + * @param $array + * + * @return array + */ + function recursive_parse( $array ) { + $returnArray = array(); + if ( is_array( $array ) ) { + foreach ( $array as $key => $value ) { + if ( is_array( $value ) ) { + $array[ $key ] = $this->recursive_parse( $value ); + } + $x = explode( '.', $key ); + if ( ! empty( $x[1] ) ) { + $x = array_reverse( $x, true ); + if ( isset( $returnArray[ $key ] ) ) { + unset( $returnArray[ $key ] ); + } + if ( ! isset( $returnArray[ $x[0] ] ) ) { + $returnArray[ $x[0] ] = array(); + } + $first = true; + foreach ( $x as $k => $v ) { + if ( $first === true ) { + $b = $array[ $key ]; + $first = false; + } + $b = array( $v => $b ); + } + $returnArray[ $x[0] ] = array_merge_recursive( + $returnArray[ $x[0] ], $b[ $x[0] ] + ); + } else { + $returnArray[ $key ] = $array[ $key ]; + } + } + } + + return $returnArray; + } + + + /** + * @param $assoc_arr + * @param bool $has_sections + * + * @return string + */ + function get_ini_file( $assoc_arr, $has_sections = true ) { + $content = ''; + if ( $has_sections ) { + foreach ( $assoc_arr as $key => $elem ) { + $content .= '[' . $key . "]\n"; + foreach ( $elem as $key2 => $elem2 ) { + if ( is_array( $elem2 ) ) { + for ( $i = 0; $i < count( $elem2 ); $i ++ ) { + $content .= $key2 . "[] = \"" . $elem2[ $i ] . "\"\n"; + } + } else if ( $elem2 == '' ) { + $content .= $key2 . " = \n"; + } else { + $content .= $key2 . " = \"" . $elem2 . "\"\n"; + } + } + } + } else { + foreach ( $assoc_arr as $key => $elem ) { + if ( is_array( $elem ) ) { + for ( $i = 0; $i < count( $elem ); $i ++ ) { + $content .= $key2 . "[] = \"" . $elem[ $i ] . "\"\n"; + } + } else if ( $elem == '' ) { + $content .= $key2 . " = \n"; + } else { + $content .= $key2 . " = \"" . $elem . "\"\n"; + } + } + } + + return $content; + } + + + /** + * @param $string + * + * @return array + */ + function parse_ini_advanced( $string ) { + return $this->recursive_parse( + $this->parse_ini_helper( + parse_ini_string( $string, true ) + ) + ); + } + + + function do_importer_exporter() { + $submit = null; + $count = 0; + $post_exists = null; + $post_warning = null; + global $aioseop_options, $aiosp, $aioseop_module_list; + if ( isset( $_REQUEST['nonce-aioseop'] ) ) { + $nonce = $_REQUEST['nonce-aioseop']; + } + $post_fields = Array( + 'keywords', + 'description', + 'title', + 'meta', + 'disable', + 'disable', + 'disable_analytics', + 'togglekeywords', + ); + if ( ! empty( $_FILES['aiosp_importer_exporter_import_submit']['tmp_name'] ) ) { + $submit = 'Import'; + } + if ( ! empty( $_REQUEST['export_submit'] ) ) { + $submit = 'Export'; + } + if ( ( $submit != null ) && wp_verify_nonce( $nonce, 'aioseop-nonce' ) ) { + switch ( $submit ) { + case 'Import': + try { + // Parses export file + $file = $this->get_sanitized_file( + $_FILES['aiosp_importer_exporter_import_submit']['tmp_name'] + ); + $section = Array(); + $section_label = null; + foreach ( $file as $line_number => $line ) { + $line = trim( $line ); + $matches = Array(); + if ( empty( $line ) ) { + continue; + } + if ( $line[0] == ';' ) { + continue; + } + if ( preg_match( "/^\[(\S+)\]$/", $line, $label ) ) { + $section_label = strval( $label[1] ); + if ( $section_label == 'post_data' ) { + $count ++; + } + if ( ! isset( $section[ $section_label ] ) ) { + $section[ $section_label ] = Array(); + } + } elseif ( preg_match( "/^(\S+)\s*=\s*'(.*)'$/", $line, $matches ) ) { + if ( $section_label == 'post_data' ) { + $section[ $section_label ][ $count ][ $matches[1] ] = $matches[2]; + } else { + $section[ $section_label ][ $matches[1] ] = $matches[2]; + } + } elseif ( preg_match( "/^(\S+)\s*=\s*NULL$/", $line, $matches ) ) { + if ( $section_label == 'post_data' ) { + $section[ $section_label ][ $count ][ $matches[1] ] = null; + } else { + $section[ $section_label ][ $matches[1] ] = null; + } + } else { + $this->warnings[] = sprintf( + __( + 'Warning: Line not matched: "%s", On Line: %s', + 'all-in-one-seo-pack' + ), + $line, + $line_number + ); + } + } + + // Updates Plugin Settings + if ( is_array( $section ) ) { + foreach ( $section as $label => $module_options ) { + if ( is_array( $module_options ) ) { + foreach ( $module_options as $key => $value ) { + + // Updates Post Data + if ( $label == 'post_data' ) { + $post_exists = post_exists( + $module_options[ $key ]['post_title'], + '', + $module_options[ $key ]['post_date'] + ); + $target = get_post( $post_exists ); + if ( ( ! empty( $module_options[ $key ]['post_type'] ) ) + && $post_exists != null + ) { + if ( is_array( $value ) ) { + foreach ( $value as $field_name => $field_value ) { + if ( substr( $field_name, 1, 7 ) == 'aioseop' ) { + if ( $value ) { + update_post_meta( + $target->ID, + $field_name, + maybe_unserialize( $field_value ) + ); + } else { + delete_post_meta( + $target->ID, + $field_name + ); + } + } + } + } + $post_exists = null; + } else { + $target_title = $module_options[ $key ]['post_title']; + $post_warning = sprintf( + __( + 'Warning: This following post could not be found: "%s"', + 'all-in-one-seo-pack' + ), + $target_title + ); + } + if ( $post_warning != null ) { + $this->warnings[] = $post_warning; + $post_warning = null; + } + + // Updates Module Settings + } else { + $module_options[ $key ] = str_replace( + Array( "\'", '\n', '\r' ), + Array( "'", "\n", "\r" ), + maybe_unserialize( $value ) + ); + } + } + + // Updates Module Settings + $this->update_class_option( + $module_options, + $label + ); + } + } + } + } catch ( Exception $e ) { + $this->warnings[] = $e->getMessage(); + } + + // Shows all errors found + if ( ! empty( $this->warnings ) ) { + add_action( + $this->prefix . 'settings_header', + Array( $this, 'show_import_warnings' ), + 5 + ); + } + + break; + case 'Export': + + // Creates Files Contents + $settings_file = 'settings_aioseop.ini'; + $buf = '; ' . __( + 'Settings export file for All in One SEO Pack', ' + all-in-one-seo-pack' + ) . "\n"; + + // Adds all settings to settings file + $buf = $aiosp->settings_export( $buf ); + $buf = apply_filters( 'aioseop_export_settings', $buf ); + + // Sends File to browser + $strlength = strlen( $buf ); + header( 'Content-type: application/ini' ); + header( "Content-Disposition: attachment; filename=$settings_file" ); + header( 'Content-Length: ' . $strlength ); + echo $buf; + die(); + break; + } + } + } + + + function settings_update() { + } + + /** + * Returns sanitized imported file. + * + * @since + * + * @param string $filename Path to where the uploaded file is located. + * + * @return array Sanitized file as array. + * @throws Exception + */ + private function get_sanitized_file( $filename ) { + $file = file( $filename ); + for ( $i = count( $file ) - 1; $i >= 0; -- $i ) { + // Remove insecured lines + if ( preg_match( '/\<(\?php|script)/', $file[ $i ] ) ) { + throw new Exception( __( + 'Security warning: Your file looks compromised. Please check the file for any script-injection.', + 'all-in-one-seo-pack' + ) ); + } + // Apply security filters + $file[ $i ] = strip_tags( trim( $file[ $i ] ) ); + // Remove empty lines + if ( empty( $file[ $i ] ) ) { + unset( $file[ $i ] ); + } + } + + return $file; + } + } +} diff --git a/plugins/all-in-one-seo-pack/modules/aioseop_opengraph.php b/plugins/all-in-one-seo-pack/modules/aioseop_opengraph.php new file mode 100644 index 0000000..8f2c05c --- /dev/null +++ b/plugins/all-in-one-seo-pack/modules/aioseop_opengraph.php @@ -0,0 +1,1426 @@ +name = __( 'Social Meta', 'all-in-one-seo-pack' ); // Human-readable name of the plugin + $this->prefix = 'aiosp_opengraph_'; // option prefix + $this->file = __FILE__; // the current file + $this->fb_object_types = Array( + 'Activities' => Array( + 'activity' => __( 'Activity', 'all-in-one-seo-pack' ), + 'sport' => __( 'Sport', 'all-in-one-seo-pack' ), + ), + 'Businesses' => Array( + 'bar' => __( 'Bar', 'all-in-one-seo-pack' ), + 'company' => __( 'Company', 'all-in-one-seo-pack' ), + 'cafe' => __( 'Cafe', 'all-in-one-seo-pack' ), + 'hotel' => __( 'Hotel', 'all-in-one-seo-pack' ), + 'restaurant' => __( 'Restaurant', 'all-in-one-seo-pack' ), + ), + 'Groups' => Array( + 'cause' => __( 'Cause', 'all-in-one-seo-pack' ), + 'sports_league' => __( 'Sports League', 'all-in-one-seo-pack' ), + 'sports_team' => __( 'Sports Team', 'all-in-one-seo-pack' ), + ), + 'Organizations' => Array( + 'band' => __( 'Band', 'all-in-one-seo-pack' ), + 'government' => __( 'Government', 'all-in-one-seo-pack' ), + 'non_profit' => __( 'Non Profit', 'all-in-one-seo-pack' ), + 'school' => __( 'School', 'all-in-one-seo-pack' ), + 'university' => __( 'University', 'all-in-one-seo-pack' ), + ), + 'People' => Array( + 'actor' => __( 'Actor', 'all-in-one-seo-pack' ), + 'athlete' => __( 'Athlete', 'all-in-one-seo-pack' ), + 'author' => __( 'Author', 'all-in-one-seo-pack' ), + 'director' => __( 'Director', 'all-in-one-seo-pack' ), + 'musician' => __( 'Musician', 'all-in-one-seo-pack' ), + 'politician' => __( 'Politician', 'all-in-one-seo-pack' ), + 'profile' => __( 'Profile', 'all-in-one-seo-pack' ), + 'public_figure' => __( 'Public Figure', 'all-in-one-seo-pack' ), + ), + 'Places' => Array( + 'city' => __( 'City', 'all-in-one-seo-pack' ), + 'country' => __( 'Country', 'all-in-one-seo-pack' ), + 'landmark' => __( 'Landmark', 'all-in-one-seo-pack' ), + 'state_province' => __( 'State Province', 'all-in-one-seo-pack' ), + ), + 'Products and Entertainment' => Array( + 'album' => __( 'Album', 'all-in-one-seo-pack' ), + 'book' => __( 'Book', 'all-in-one-seo-pack' ), + 'drink' => __( 'Drink', 'all-in-one-seo-pack' ), + 'food' => __( 'Food', 'all-in-one-seo-pack' ), + 'game' => __( 'Game', 'all-in-one-seo-pack' ), + 'movie' => __( 'Movie', 'all-in-one-seo-pack' ), + 'product' => __( 'Product', 'all-in-one-seo-pack' ), + 'song' => __( 'Song', 'all-in-one-seo-pack' ), + 'tv_show' => __( 'TV Show', 'all-in-one-seo-pack' ), + 'episode' => __( 'Episode', 'all-in-one-seo-pack' ), + ), + 'Websites' => Array( + 'article' => __( 'Article', 'all-in-one-seo-pack' ), + 'blog' => __( 'Blog', 'all-in-one-seo-pack' ), + 'website' => __( 'Website', 'all-in-one-seo-pack' ), + ), + ); + parent::__construct(); + + $categories = Array( + 'blog' => __( 'Blog', 'all-in-one-seo-pack' ), + 'website' => __( 'Website', 'all-in-one-seo-pack' ), + 'article' => __( 'Article', 'all-in-one-seo-pack' ), + ); + + $this->help_text = Array( + "setmeta" => __( "Checking this box will use the Home Title and Home Description set in All in One SEO Pack, General Settings as the Open Graph title and description for your home page.", 'all-in-one-seo-pack' ), + "key" => __( "Enter your Facebook Admin ID here. You can look up your Facebook ID using this tool http://findmyfbid.com/", 'all-in-one-seo-pack' ), + "appid" => __( "Enter your Facebook App ID here. Information about how to get your Facebook App ID can be found at https://developers.facebook.com/docs/apps/register", 'all-in-one-seo-pack' ), + "title_shortcodes" => __( "Run shortcodes that appear in social title meta tags.", 'all-in-one-seo-pack' ), + "description_shortcodes" => __( "Run shortcodes that appear in social description meta tags.", 'all-in-one-seo-pack' ), + "sitename" => __( "The Site Name is the name that is used to identify your website.", 'all-in-one-seo-pack' ), + "hometitle" => __( "The Home Title is the Open Graph title for your home page.", 'all-in-one-seo-pack' ), + "description" => __( "The Home Description is the Open Graph description for your home page.", 'all-in-one-seo-pack' ), + "homeimage" => __( "The Home Image is the Open Graph image for your home page.", 'all-in-one-seo-pack' ), + "hometag" => __( "The Home Tag allows you to add a list of keywords that best describe your home page content.", 'all-in-one-seo-pack' ), + "generate_descriptions" => __( "Check this and your Open Graph descriptions will be auto-generated from your content.", 'all-in-one-seo-pack' ), + "defimg" => __( "This option lets you choose which image will be displayed by default for the Open Graph image. You may override this on individual posts.", 'all-in-one-seo-pack' ), + "fallback" => __( "This option lets you fall back to the default image if no image could be found above.", 'all-in-one-seo-pack' ), + "dimg" => __( "This option sets a default image that can be used for the Open Graph image. You can upload an image, select an image from your Media Library or paste the URL of an image here.", 'all-in-one-seo-pack' ), + "dimgwidth" => __( "This option lets you set a default width for your images, where unspecified.", 'all-in-one-seo-pack' ), + "dimgheight" => __( "This option lets you set a default height for your images, where unspecified.", 'all-in-one-seo-pack' ), + "meta_key" => __( "Enter the name of a custom field (or multiple field names separated by commas) to use that field to specify the Open Graph image on Pages or Posts.", 'all-in-one-seo-pack' ), + "categories" => __( "Set the Open Graph type for your website as either a blog or a website.", 'all-in-one-seo-pack' ), + "image" => __( "This option lets you select the Open Graph image that will be used for this Page or Post, overriding the default settings.", 'all-in-one-seo-pack' ), + "customimg" => __( "This option lets you upload an image to use as the Open Graph image for this Page or Post.", 'all-in-one-seo-pack' ), + "imagewidth" => __( "Enter the width for your Open Graph image in pixels (i.e. 600).", 'all-in-one-seo-pack' ), + "imageheight" => __( "Enter the height for your Open Graph image in pixels (i.e. 600).", 'all-in-one-seo-pack' ), + "video" => __( "This option lets you specify a link to the Open Graph video used on this Page or Post.", 'all-in-one-seo-pack' ), + "videowidth" => __( "Enter the width for your Open Graph video in pixels (i.e. 600).", 'all-in-one-seo-pack' ), + "videoheight" => __( "Enter the height for your Open Graph video in pixels (i.e. 600).", 'all-in-one-seo-pack' ), + "defcard" => __( "Select the default type of Twitter card to display.", 'all-in-one-seo-pack' ), + "setcard" => __( "Select the default type of Twitter card to display.", 'all-in-one-seo-pack' ), + "twitter_site" => __( "Enter the Twitter username associated with your website here.", 'all-in-one-seo-pack' ), + "twitter_creator" => __( "Allows your authors to be identified by their Twitter usernames as content creators on the Twitter cards for their posts.", 'all-in-one-seo-pack' ), + "twitter_domain" => __( "Enter the name of your website here.", 'all-in-one-seo-pack' ), + "customimg_twitter" => __( "This option lets you upload an image to use as the Twitter image for this Page or Post.", 'all-in-one-seo-pack' ), + "gen_tags" => __( "Automatically generate article tags for Facebook type article when not provided.", 'all-in-one-seo-pack' ), + "gen_keywords" => __( "Use keywords in generated article tags.", 'all-in-one-seo-pack' ), + "gen_categories" => __( "Use categories in generated article tags.", 'all-in-one-seo-pack' ), + "gen_post_tags" => __( "Use post tags in generated article tags.", 'all-in-one-seo-pack' ), + "types" => __( "Select which Post Types you want to use All in One SEO Pack to set Open Graph meta values for.", 'all-in-one-seo-pack' ), + "title" => __( "This is the Open Graph title of this Page or Post.", 'all-in-one-seo-pack' ), + "desc" => __( "This is the Open Graph description of this Page or Post.", 'all-in-one-seo-pack' ), + "category" => __( "Select the Open Graph type that best describes the content of this Page or Post.", 'all-in-one-seo-pack' ), + "facebook_debug" => __( "Press this button to have Facebook re-fetch and debug this page.", 'all-in-one-seo-pack' ), + "section" => __( "This Open Graph meta allows you to add a general section name that best describes this content.", 'all-in-one-seo-pack' ), + "tag" => __( "This Open Graph meta allows you to add a list of keywords that best describe this content.", 'all-in-one-seo-pack' ), + "facebook_publisher" => __( "Link articles to the Facebook page associated with your website.", 'all-in-one-seo-pack' ), + "facebook_author" => __( "Allows your authors to be identified by their Facebook pages as content authors on the Opengraph meta for their articles.", 'all-in-one-seo-pack' ), + "person_or_org" => __( "Are the social profile links for your website for a person or an organization?", 'all-in-one-seo-pack' ), + "profile_links" => __( "Add URLs for your website's social profiles here (Facebook, Twitter, Google+, Instagram, LinkedIn), one per line.", 'all-in-one-seo-pack' ), + "social_name" => __( "Add the name of the person or organization who owns these profiles.", 'all-in-one-seo-pack' ), + ); + + $this->help_anchors = Array( + 'title_shortcodes' => '#run-shortcodes-in-title', + 'description_shortcodes' => '#run-shortcodes-in-description', + 'generate_descriptions' => '#auto-generate-og-descriptions', + 'setmeta' => '#use-aioseo-title-and-description', + 'sitename' => '#site-name', + 'hometitle' => '#home-title-and-description', + 'description' => '#home-title-and-description', + 'homeimage' => '#home-image', + 'hometag' => '#home-article-tags', + 'defimg' => '#select-og-image-source', + 'fallback' => '#use-default-if-no-image-found', + 'dimg' => '#default-og-image', + 'dimgwidth' => '#default-image-width', + 'dimgheight' => '#default-image-height', + 'meta_key' => '#use-custom-field-for-image', + 'profile_links' => '#social-profile-links', + 'person_or_org' => '#social-profile-links', + 'social_name' => '#social-profile-links', + 'key' => '#facebook-admin-id', + 'appid' => '#facebook-app-id', + 'categories' => '#facebook-object-type', + 'gen_tags' => '#automatically-generate-article-tags', + 'gen_keywords' => '#use-keywords-in-article-tags', + 'gen_categories' => '#use-categories-in-article-tags', + 'gen_post_tags' => '#use-post-tags-in-article-tags', + 'facebook_publisher' => '#show-facebook-publisher-on-articles', + 'facebook_author' => '#show-facebook-author-on-articles', + 'types' => '#enable-facebook-meta-for', + 'defcard' => '#default-twitter-card', + 'setcard' => '#default-twitter-card', + 'twitter_site' => '#twitter-site', + 'twitter_creator' => '#show-twitter-author', + 'twitter_domain' => '#twitter-domain', + 'scan_header' => '#scan-social-meta', + 'title' => 'https://semperplugins.com/documentation/social-meta-settings-individual-pagepost-settings/#title', + 'desc' => 'https://semperplugins.com/documentation/social-meta-settings-individual-pagepost-settings/#description', + 'image' => 'https://semperplugins.com/documentation/social-meta-settings-individual-pagepost-settings/#image', + 'customimg' => 'https://semperplugins.com/documentation/social-meta-settings-individual-pagepost-settings/#custom-image', + 'imagewidth' => 'https://semperplugins.com/documentation/social-meta-settings-individual-pagepost-settings/#specify-image-width-height', + 'imageheight' => 'https://semperplugins.com/documentation/social-meta-settings-individual-pagepost-settings/#specify-image-width-height', + 'video' => 'https://semperplugins.com/documentation/social-meta-settings-individual-pagepost-settings/#custom-video', + 'videowidth' => 'https://semperplugins.com/documentation/social-meta-settings-individual-pagepost-settings/#specify-video-width-height', + 'videoheight' => 'https://semperplugins.com/documentation/social-meta-settings-individual-pagepost-settings/#specify-video-width-height', + 'category' => 'https://semperplugins.com/documentation/social-meta-settings-individual-pagepost-settings/#facebook-object-type', + 'facebook_debug' => 'https://semperplugins.com/documentation/social-meta-settings-individual-pagepost-settings/#facebook-debug', + 'section' => 'https://semperplugins.com/documentation/social-meta-settings-individual-pagepost-settings/#article-section', + 'tag' => 'https://semperplugins.com/documentation/social-meta-settings-individual-pagepost-settings/#article-tags', + 'setcard' => 'https://semperplugins.com/documentation/social-meta-settings-individual-pagepost-settings/#twitter-card-type', + 'customimg_twitter' => 'https://semperplugins.com/documentation/social-meta-settings-individual-pagepost-settings/#custom-twitter-image', + ); + + $count_desc = __( " characters. Open Graph allows up to a maximum of %s chars for the %s.", 'all-in-one-seo-pack' ); + $this->default_options = array( + 'scan_header' => Array( + 'name' => __( 'Scan Header', 'all-in-one-seo-pack' ), + 'type' => 'custom', + 'save' => true, + ), + 'setmeta' => Array( + 'name' => __( 'Use AIOSEO Title and Description', 'all-in-one-seo-pack' ), + 'type' => 'checkbox', + ), + 'key' => Array( + 'name' => __( 'Facebook Admin ID', 'all-in-one-seo-pack' ), + 'default' => '', + 'type' => 'text', + ), + 'appid' => Array( + 'name' => __( 'Facebook App ID', 'all-in-one-seo-pack' ), + 'default' => '', + 'type' => 'text', + ), + 'title_shortcodes' => Array( 'name' => __( 'Run Shortcodes In Title', 'all-in-one-seo-pack' ) ), + 'description_shortcodes' => Array( 'name' => __( 'Run Shortcodes In Description', 'all-in-one-seo-pack' ) ), + 'sitename' => Array( + 'name' => __( 'Site Name', 'all-in-one-seo-pack' ), + 'default' => get_bloginfo( 'name' ), + 'type' => 'text', + ), + 'hometitle' => Array( + 'name' => __( 'Home Title', 'all-in-one-seo-pack' ), + 'default' => '', + 'type' => 'textarea', + 'condshow' => Array( + 'aiosp_opengraph_setmeta' => Array( + 'lhs' => "aiosp_opengraph_setmeta", + 'op' => '!=', + 'rhs' => 'on', + ), + ), + ), + 'description' => Array( + 'name' => __( 'Home Description', 'all-in-one-seo-pack' ), + 'default' => '', + 'type' => 'textarea', + 'condshow' => Array( + 'aiosp_opengraph_setmeta' => Array( + 'lhs' => "aiosp_opengraph_setmeta", + 'op' => '!=', + 'rhs' => 'on', + ), + ), + ), + 'homeimage' => Array( + 'name' => __( 'Home Image', 'all-in-one-seo-pack' ), + 'type' => 'image', + ), + 'hometag' => Array( + 'name' => __( 'Home Article Tags', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'default' => '', + 'condshow' => Array( 'aiosp_opengraph_categories' => 'article' ), + ), + 'generate_descriptions' => Array( + 'name' => __( 'Autogenerate OG Descriptions', 'all-in-one-seo-pack' ), + 'default' => 1, + ), + 'defimg' => Array( + 'name' => __( 'Select OG:Image Source', 'all-in-one-seo-pack' ), + 'type' => 'select', + 'initial_options' => Array( + '' => __( 'Default Image' ), + 'featured' => __( 'Featured Image' ), + 'attach' => __( 'First Attached Image' ), + 'content' => __( 'First Image In Content' ), + 'custom' => __( 'Image From Custom Field' ), + 'author' => __( 'Post Author Image' ), + 'auto' => __( 'First Available Image' ), + ), + ), + 'fallback' => Array( + 'name' => __( 'Use Default If No Image Found', 'all-in-one-seo-pack' ), + 'type' => 'checkbox', + ), + 'dimg' => Array( + 'name' => __( 'Default OG:Image', 'all-in-one-seo-pack' ), + 'default' => AIOSEOP_PLUGIN_IMAGES_URL . 'default-user-image.png', + 'type' => 'image', + ), + 'dimgwidth' => Array( + 'name' => __( 'Default Image Width', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'default' => '', + ), + 'dimgheight' => Array( + 'name' => __( 'Default Image Height', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'default' => '', + ), + 'meta_key' => Array( + 'name' => __( 'Use Custom Field For Image', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'default' => '', + ), + 'categories' => Array( + 'name' => __( 'Facebook Object Type', 'all-in-one-seo-pack' ), + 'type' => 'radio', + 'initial_options' => $categories, + 'default' => 'blog', + ), + 'image' => Array( + 'name' => __( 'Image', 'all-in-one-seo-pack' ), + 'type' => 'radio', + 'initial_options' => Array( 0 => '' ), + ), + 'customimg' => Array( + 'name' => __( 'Custom Image', 'all-in-one-seo-pack' ), + 'type' => 'image', + ), + 'imagewidth' => Array( + 'name' => __( 'Specify Image Width', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'default' => '', + ), + 'imageheight' => Array( + 'name' => __( 'Specify Image Height', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'default' => '', + ), + 'video' => Array( + 'name' => __( 'Custom Video', 'all-in-one-seo-pack' ), + 'type' => 'text', + ), + 'videowidth' => Array( + 'name' => __( 'Specify Video Width', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'default' => '', + 'condshow' => Array( + 'aioseop_opengraph_settings_video' => Array( + 'lhs' => "aioseop_opengraph_settings_video", + 'op' => '!=', + 'rhs' => '', + ), + ), + ), + 'videoheight' => Array( + 'name' => __( 'Specify Video Height', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'default' => '', + 'condshow' => Array( + 'aioseop_opengraph_settings_video' => Array( + 'lhs' => "aioseop_opengraph_settings_video", + 'op' => '!=', + 'rhs' => '', + ), + ), + ), + 'defcard' => Array( + 'name' => __( 'Default Twitter Card', 'all-in-one-seo-pack' ), + 'type' => 'select', + 'initial_options' => Array( + 'summary' => __( 'Summary', 'all-in-one-seo-pack' ), + 'summary_large_image' => __( 'Summary Large Image', 'all-in-one-seo-pack' ) + /*, *******REMOVING THIS TWITTER CARD TYPE FROM SOCIAL META MODULE****** 'photo' => __( 'Photo', 'all-in-one-seo-pack' ) */ + ), + 'default' => 'summary', + ), + 'setcard' => Array( + 'name' => __( 'Twitter Card Type', 'all-in-one-seo-pack' ), + 'type' => 'select', + 'initial_options' => Array( + 'summary_large_image' => __( 'Summary Large Image', 'all-in-one-seo-pack' ), + 'summary' => __( 'Summary', 'all-in-one-seo-pack' ) + /*, *******REMOVING THIS TWITTER CARD TYPE FROM SOCIAL META MODULE****** 'photo' => __( 'Photo', 'all-in-one-seo-pack' ) */ + ), + ), + 'twitter_site' => Array( + 'name' => __( 'Twitter Site', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'default' => '', + ), + 'twitter_creator' => Array( 'name' => __( 'Show Twitter Author', 'all-in-one-seo-pack' ) ), + 'twitter_domain' => Array( + 'name' => __( 'Twitter Domain', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'default' => '', + ), + 'customimg_twitter' => Array( + 'name' => __( 'Custom Twitter Image', 'all-in-one-seo-pack' ), + 'type' => 'image', + ), + 'gen_tags' => Array( 'name' => __( 'Automatically Generate Article Tags', 'all-in-one-seo-pack' ) ), + 'gen_keywords' => Array( + 'name' => __( 'Use Keywords In Article Tags', 'all-in-one-seo-pack' ), + 'default' => 'on', + 'condshow' => Array( 'aiosp_opengraph_gen_tags' => 'on' ), + ), + 'gen_categories' => Array( + 'name' => __( 'Use Categories In Article Tags', 'all-in-one-seo-pack' ), + 'default' => 'on', + 'condshow' => Array( 'aiosp_opengraph_gen_tags' => 'on' ), + ), + 'gen_post_tags' => Array( + 'name' => __( 'Use Post Tags In Article Tags', 'all-in-one-seo-pack' ), + 'default' => 'on', + 'condshow' => Array( 'aiosp_opengraph_gen_tags' => 'on' ), + ), + 'types' => Array( + 'name' => __( 'Enable Facebook Meta for', 'all-in-one-seo-pack' ), + 'type' => 'multicheckbox', + 'initial_options' => $this->get_post_type_titles( Array( '_builtin' => false ) ), + 'default' => Array( 'post' => 'post', 'page' => 'page' ), + ), + 'title' => Array( + 'name' => __( 'Title', 'all-in-one-seo-pack' ), + 'default' => '', + 'type' => 'text', + 'size' => 95, + 'count' => 1, + 'count_desc' => $count_desc, + ), + 'desc' => Array( + 'name' => __( 'Description', 'all-in-one-seo-pack' ), + 'default' => '', + 'type' => 'textarea', + 'cols' => 250, + 'rows' => 4, + 'count' => 1, + 'count_desc' => $count_desc, + ), + 'category' => Array( + 'name' => __( 'Facebook Object Type', 'all-in-one-seo-pack' ), + 'type' => 'select', + 'style' => '', + 'initial_options' => $this->fb_object_types, + 'default' => '', + ), + 'facebook_debug' => Array( + 'name' => __( 'Facebook Debug', 'all-in-one-seo-pack' ), + 'type' => 'html', + 'save' => false, + 'default' => + ' + ' . __( 'Debug This Post', 'all-in-one-seo-pack' ) + . '', + ), + + 'section' => Array( + 'name' => __( 'Article Section', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'default' => '', + 'condshow' => Array( 'aioseop_opengraph_settings_category' => 'article' ), + ), + 'tag' => Array( + 'name' => __( 'Article Tags', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'default' => '', + 'condshow' => Array( 'aioseop_opengraph_settings_category' => 'article' ), + ), + 'facebook_publisher' => Array( + 'name' => __( 'Show Facebook Publisher on Articles', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'default' => '', + ), + 'facebook_author' => Array( 'name' => __( 'Show Facebook Author on Articles', 'all-in-one-seo-pack' ) ), + 'profile_links' => Array( + 'name' => __( 'Social Profile Links', 'all-in-one-seo-pack' ), + 'type' => 'textarea', + 'cols' => 60, + 'rows' => 5, + ), + 'person_or_org' => Array( + 'name' => __( 'Person or Organization?', 'all-in-one-seo-pack' ), + 'type' => 'radio', + 'initial_options' => Array( + 'person' => __( 'Person', 'all-in-one-seo-pack' ), + 'org' => __( 'Organization', 'all-in-one-seo-pack' ), + ), + ), + 'social_name' => Array( + 'name' => __( "Associated Name", 'all-in-one-seo-pack' ), + 'type' => 'text', + 'default' => "", + ), + ); + + // load initial options / set defaults + $this->update_options(); + + $display = Array(); + if ( isset( $this->options['aiosp_opengraph_types'] ) ) { + $display = $this->options['aiosp_opengraph_types']; + } + + $this->locations = array( + 'opengraph' => Array( + 'name' => $this->name, + 'prefix' => 'aiosp_', + 'type' => 'settings', + 'options' => Array( + 'scan_header', + 'setmeta', + 'key', + 'appid', + 'sitename', + 'title_shortcodes', + 'description_shortcodes', + 'hometitle', + 'description', + 'homeimage', + 'hometag', + 'generate_descriptions', + 'defimg', + 'fallback', + 'dimg', + 'dimgwidth', + 'dimgheight', + 'meta_key', + 'categories', + 'defcard', + 'profile_links', + 'person_or_org', + 'social_name', + 'twitter_site', + 'twitter_creator', + 'twitter_domain', + 'gen_tags', + 'gen_keywords', + 'gen_categories', + 'gen_post_tags', + 'types', + 'facebook_publisher', + 'facebook_author', + ), + ), + 'settings' => Array( + 'name' => __( 'Social Settings', 'all-in-one-seo-pack' ), + 'type' => 'metabox', + 'help_link' => 'https://semperplugins.com/documentation/social-meta-settings-individual-pagepost-settings/', + 'options' => Array( + 'title', + 'desc', + 'image', + 'customimg', + 'imagewidth', + 'imageheight', + 'video', + 'videowidth', + 'videoheight', + 'category', + 'facebook_debug', + 'section', + 'tag', + 'setcard', + 'customimg_twitter', + ), + 'display' => $display, + 'prefix' => 'aioseop_opengraph_', + ), + ); + + $this->layout = Array( + 'default' => Array( + 'name' => __( 'General Settings', 'all-in-one-seo-pack' ), + 'help_link' => 'https://semperplugins.com/documentation/social-meta-module/', + 'options' => Array() // this is set below, to the remaining options -- pdb + ), + 'home' => Array( + 'name' => __( 'Home Page Settings', 'all-in-one-seo-pack' ), + 'help_link' => 'https://semperplugins.com/documentation/social-meta-module/#use-aioseo-title-and-description', + 'options' => Array( 'setmeta', 'sitename', 'hometitle', 'description', 'homeimage', 'hometag' ), + ), + 'image' => Array( + 'name' => __( 'Image Settings', 'all-in-one-seo-pack' ), + 'help_link' => 'https://semperplugins.com/documentation/social-meta-module/#select-og-image-source', + 'options' => Array( 'defimg', 'fallback', 'dimg', 'dimgwidth', 'dimgheight', 'meta_key' ), + ), + 'links' => Array( + 'name' => __( 'Social Profile Links', 'all-in-one-seo-pack' ), + 'help_link' => 'https://semperplugins.com/documentation/social-meta-module/#social-profile-links', + 'options' => Array( 'profile_links', 'person_or_org', 'social_name' ), + ), + 'facebook' => Array( + 'name' => __( 'Facebook Settings', 'all-in-one-seo-pack' ), + 'help_link' => 'https://semperplugins.com/documentation/social-meta-module/#facebook-settings', + 'options' => Array( + 'key', + 'appid', + 'types', + 'gen_tags', + 'gen_keywords', + 'gen_categories', + 'gen_post_tags', + 'categories', + 'facebook_publisher', + 'facebook_author', + ), + ), + 'twitter' => Array( + 'name' => __( 'Twitter Settings', 'all-in-one-seo-pack' ), + 'help_link' => 'https://semperplugins.com/documentation/social-meta-module/#default-twitter-card', + 'options' => Array( 'defcard', 'setcard', 'twitter_site', 'twitter_creator', 'twitter_domain' ), + ), + 'scan_meta' => Array( + 'name' => __( 'Scan Social Meta', 'all-in-one-seo-pack' ), + 'help_link' => 'https://semperplugins.com/documentation/social-meta-module/#scan_meta', + 'options' => Array( 'scan_header' ), + ), + ); + + $other_options = Array(); + foreach ( $this->layout as $k => $v ) { + $other_options = array_merge( $other_options, $v['options'] ); + } + + $this->layout['default']['options'] = array_diff( array_keys( $this->default_options ), $other_options ); + + if ( is_admin() ) { + add_action( 'admin_init', Array( $this, 'debug_post_types' ), 5 ); + } else { + add_action( 'wp', Array( $this, 'type_setup' ) ); + } + + if ( ! is_admin() || defined( 'DOING_AJAX' ) ) { + $this->do_opengraph(); + } + + add_filter( 'jetpack_enable_open_graph', '__return_false' ); // Avoid having duplicate meta tags + + // Force refresh of Facebook cache. + add_action( 'post_updated', array( $this, 'force_fb_refresh_update' ), 10, 3 ); + add_action( 'transition_post_status', array( $this, 'force_fb_refresh_transition' ), 10, 3 ); + } + + /** + * Forces FaceBook OpenGraph to refresh its cache when a post is changed to + * + * @param $new_status + * @param $old_status + * @param $post + * + * @todo this and force_fb_refresh_update can probably have the remote POST extracted out. + * + * @see https://developers.facebook.com/docs/sharing/opengraph/using-objects#update + * @since 2.3.11 + */ + function force_fb_refresh_transition( $new_status, $old_status, $post ) { + if ( 'publish' !== $new_status ) { + return; + } + if ( 'future' !== $old_status ) { + return; + } + + $current_post_type = get_post_type(); + + // Only ping Facebook if Social SEO is enabled on this post type. + if ( $this->option_isset( 'types' ) && is_array( $this->options['aiosp_opengraph_types'] ) && in_array( $current_post_type, $this->options['aiosp_opengraph_types'] ) ) { + $post_url = get_permalink( $post->ID ); + $endpoint = sprintf( 'https://graph.facebook.com/?%s', http_build_query( array( + 'id' => $post_url, + 'scrape' => true, + ) ) ); + wp_remote_post( $endpoint, array( 'blocking' => false ) ); + } + } + + /** + * Forces FaceBook OpenGraph refresh on update. + * + * @param $post_ID + * @param $post_after + * + * @see https://developers.facebook.com/docs/sharing/opengraph/using-objects#update + * @since 2.3.11 + */ + function force_fb_refresh_update( $post_ID, $post_after ) { + + $current_post_type = get_post_type(); + + // Only ping Facebook if Social SEO is enabled on this post type. + if ( 'publish' === $post_after->post_status && $this->option_isset( 'types' ) && is_array( $this->options['aiosp_opengraph_types'] ) && in_array( $current_post_type, $this->options['aiosp_opengraph_types'] ) ) { + $post_url = get_permalink( $post_ID ); + $endpoint = sprintf( 'https://graph.facebook.com/?%s', http_build_query( array( + 'id' => $post_url, + 'scrape' => true, + ) ) ); + wp_remote_post( $endpoint, array( 'blocking' => false ) ); + } + } + + function settings_page_init() { + add_filter( 'aiosp_output_option', Array( $this, 'display_custom_options' ), 10, 2 ); + $cat = $this->options["{$this->prefix}categories"]; + if ( ! empty( $cat ) ) { + if ( $cat == 'blog' ) { + $show_on_front = get_option( 'show_on_front' ); + if ( ( $show_on_front == 'page' ) && ( get_option( 'page_on_front' ) ) ) { + $this->output_error( '

' . __( "Static front page detected, suggested Facebook Object Type is 'website'.", 'all-in-one-seo-pack' ) . '

' ); + } + } elseif ( $cat == 'website' ) { + $show_on_front = get_option( 'show_on_front' ); + if ( ( $show_on_front == 'posts' ) ) { + $this->output_error( '

' . __( "Blog on front page detected, suggested Facebook Object Type is 'blog'.", 'all-in-one-seo-pack' ) . '

' ); + } + } + } + } + + function filter_options( $options, $location ) { + if ( $location == 'settings' ) { + $prefix = $this->get_prefix( $location ) . $location . '_'; + list( $legacy, $images ) = $this->get_all_images( $options ); + if ( isset( $options ) && isset( $options["{$prefix}image"] ) ) { + $thumbnail = $options["{$prefix}image"]; + if ( ctype_digit( (string) $thumbnail ) || ( $thumbnail == 'post' ) ) { + if ( $thumbnail == 'post' ) { + $thumbnail = $images['post1']; + } else if ( ! empty( $legacy[ $thumbnail ] ) ) { + $thumbnail = $legacy[ $thumbnail ]; + } + } + $options["{$prefix}image"] = $thumbnail; + } + if ( empty( $options[ $prefix . 'image' ] ) ) { + $img = array_keys( $images ); + if ( ! empty( $img ) && ! empty( $img[1] ) ) { + $options[ $prefix . 'image' ] = $img[1]; + } + } + } + + return $options; + } + + function filter_settings( $settings, $location, $current ) { + if ( $location == 'opengraph' || $location == 'settings' ) { + $prefix = $this->get_prefix( $location ) . $location . '_'; + if ( $location == 'opengraph' ) { + return $settings; + } + if ( $location == 'settings' ) { + list( $legacy, $settings[ $prefix . 'image' ]['initial_options'] ) = $this->get_all_images( $current ); + $opts = Array( 'title', 'desc' ); + $current_post_type = get_post_type(); + if ( isset( $this->options["aiosp_opengraph_{$current_post_type}_fb_object_type"] ) ) { + $flat_type_list = Array(); + foreach ( $this->fb_object_types as $k => $v ) { + if ( is_array( $v ) ) { + $flat_type_list = array_merge( $flat_type_list, $v ); + } else { + $flat_type_list[ $k ] = $v; + } + } + $settings[ $prefix . 'category' ]['initial_options'] = array_merge( Array( + $this->options["aiosp_opengraph_{$current_post_type}_fb_object_type"] => __( 'Default ', 'all-in-one-seo-pack' ) . ' - ' + . $flat_type_list[ $this->options["aiosp_opengraph_{$current_post_type}_fb_object_type"] ], + ), + $settings[ $prefix . 'category' ]['initial_options'] ); + } + if ( isset( $this->options["aiosp_opengraph_defcard"] ) ) { + $settings[ $prefix . 'setcard' ]['default'] = $this->options["aiosp_opengraph_defcard"]; + } + global $aiosp; + $info = $aiosp->get_page_snippet_info(); + extract( $info ); + $settings["{$prefix}title"]['placeholder'] = $title; + $settings["{$prefix}desc"]['placeholder'] = $description; + } + if ( isset( $current[ $prefix . 'setmeta' ] ) && $current[ $prefix . 'setmeta' ] ) { + foreach ( $opts as $opt ) { + if ( isset( $settings[ $prefix . $opt ] ) ) { + $settings[ $prefix . $opt ]['type'] = 'hidden'; + $settings[ $prefix . $opt ]['label'] = 'none'; + $settings[ $prefix . $opt ]['help_text'] = ''; + unset( $settings[ $prefix . $opt ]['count'] ); + } + } + } + } + + return $settings; + } + + function override_options( $options, $location, $settings ) { + $opts = Array(); + foreach ( $settings as $k => $v ) { + if ( $v['save'] ) { + $opts[ $k ] = $v['default']; + } + } + foreach ( $options as $k => $v ) { + if ( $v === null ) { + unset( $options[ $k ] ); + } + } + $options = wp_parse_args( $options, $opts ); + + return $options; + } + + function filter_metabox_options( $options, $location, $post_id ) { + if ( $location == 'settings' ) { + $prefix = $this->get_prefix( $location ) . $location; + if ( ! empty( $options[ $prefix . '_customimg' ] ) ) { + $old_options = get_post_meta( $post_id, '_' . $prefix ); + $prefix .= '_'; + if ( empty( $old_options[ $prefix . 'customimg' ] ) || ( $old_options[ $prefix . 'customimg' ] != $options[ $prefix . 'customimg' ] ) ) { + $options[ $prefix . 'image' ] = $options[ $prefix . 'customimg' ]; + } + } + } + + return $options; + } + + /** Custom settings **/ + function display_custom_options( $buf, $args ) { + if ( $args['name'] == 'aiosp_opengraph_scan_header' ) { + $buf .= '
'; + $args['options']['type'] = 'submit'; + $args['attr'] = " class='button-primary' "; + $args['value'] = $args['options']['default'] = __( 'Scan Now', 'all-in-one-seo-pack' ); + $buf .= __( 'Scan your site for duplicate social meta tags.', 'all-in-one-seo-pack' ); + $buf .= '

' . $this->get_option_html( $args ); + $buf .= '
'; + } + + return $buf; + } + + function add_attributes( $output ) { // avoid having duplicate meta tags + $type = $this->type; + if ( empty( $type ) ) { + $type = 'website'; + } + + $schema_types = Array( + 'album' => 'MusicAlbum', + 'article' => 'Article', + 'bar' => 'BarOrPub', + 'blog' => 'Blog', + 'book' => 'Book', + 'cafe' => 'CafeOrCoffeeShop', + 'city' => 'City', + 'country' => 'Country', + 'episode' => 'Episode', + 'food' => 'FoodEvent', + 'game' => 'Game', + 'hotel' => 'Hotel', + 'landmark' => 'LandmarksOrHistoricalBuildings', + 'movie' => 'Movie', + 'product' => 'Product', + 'profile' => 'ProfilePage', + 'restaurant' => 'Restaurant', + 'school' => 'School', + 'sport' => 'SportsEvent', + 'website' => 'WebSite', + ); + + if ( ! empty( $schema_types[ $type ] ) ) { + $type = $schema_types[ $type ]; + } else { + $type = 'WebSite'; + } + + $attributes = apply_filters( $this->prefix . 'attributes', Array( + 'itemscope', + 'itemtype="http://schema.org/' . ucfirst( $type ) . '"', + 'prefix="og: http://ogp.me/ns#"' + ) ); + + foreach ( $attributes as $attr ) { + if ( strpos( $output, $attr ) === false ) { + $output .= "\n\t$attr "; + } + } + + return $output; + } + + function add_meta() { + global $post, $aiosp, $aioseop_options, $wp_query; + $metabox = $this->get_current_options( Array(), 'settings' ); + $key = $this->options['aiosp_opengraph_key']; + $dimg = $this->options['aiosp_opengraph_dimg']; + $current_post_type = get_post_type(); + $title = $description = $image = $video = ''; + $type = $this->type; + $sitename = $this->options['aiosp_opengraph_sitename']; + + $appid = isset( $this->options['aiosp_opengraph_appid'] ) ? $this->options['aiosp_opengraph_appid'] : ''; + + if ( ! empty( $aioseop_options['aiosp_hide_paginated_descriptions'] ) ) { + $first_page = false; + if ( $aiosp->get_page_number() < 2 ) { + $first_page = true; + } + } else { + $first_page = true; + } + $url = $aiosp->aiosp_mrt_get_url( $wp_query ); + $url = apply_filters( 'aioseop_canonical_url', $url ); + + $setmeta = $this->options['aiosp_opengraph_setmeta']; + $social_links = ''; + if ( is_front_page() ) { + $title = $this->options['aiosp_opengraph_hometitle']; + if ( $first_page ) { + $description = $this->options['aiosp_opengraph_description']; + } + if ( ! empty( $this->options['aiosp_opengraph_homeimage'] ) ) { + $thumbnail = $this->options['aiosp_opengraph_homeimage']; + } else { + $thumbnail = $this->options['aiosp_opengraph_dimg']; + } + + /* If Use AIOSEO Title and Desc Selected */ + if ( $setmeta ) { + $title = $aiosp->wp_title(); + if ( $first_page ) { + $description = $aiosp->get_aioseop_description( $post ); + } + } + + /* Add some defaults */ + if ( empty( $title ) ) { + $title = get_bloginfo( 'name' ); + } + if ( empty( $sitename ) ) { + $sitename = get_bloginfo( 'name' ); + } + + if ( empty( $description ) && $first_page && ( ! empty( $this->options['aiosp_opengraph_generate_descriptions'] ) ) && ! empty( $post ) && ! empty( $post->post_content ) && ! post_password_required( $post ) ) { + $description = $aiosp->trim_excerpt_without_filters( $aiosp->internationalize( preg_replace( '/\s+/', ' ', $post->post_content ) ), 1000 ); + } + + if ( empty( $description ) && $first_page ) { + $description = get_bloginfo( 'description' ); + } + if ( $type == 'article' && ( ! empty( $this->options['aiosp_opengraph_hometag'] ) ) ) { + $tag = $this->options['aiosp_opengraph_hometag']; + } + if ( ! empty( $this->options['aiosp_opengraph_profile_links'] ) ) { + $social_links = $this->options['aiosp_opengraph_profile_links']; + if ( ! empty( $this->options['aiosp_opengraph_social_name'] ) ) { + $social_name = $this->options['aiosp_opengraph_social_name']; + } + if ( $this->options['aiosp_opengraph_person_or_org'] == 'person' ) { + $social_type = "Person"; + } else { + $social_type = "Organization"; + } + } + } elseif ( is_singular() && $this->option_isset( 'types' ) + && is_array( $this->options['aiosp_opengraph_types'] ) + && in_array( $current_post_type, $this->options['aiosp_opengraph_types'] ) + ) { + + if ( $type == 'article' ) { + if ( ! empty( $metabox['aioseop_opengraph_settings_section'] ) ) { + $section = $metabox['aioseop_opengraph_settings_section']; + } + if ( ! empty( $metabox['aioseop_opengraph_settings_tag'] ) ) { + $tag = $metabox['aioseop_opengraph_settings_tag']; + } + if ( ! empty( $this->options['aiosp_opengraph_facebook_publisher'] ) ) { + $publisher = $this->options['aiosp_opengraph_facebook_publisher']; + } + } + + if ( ! empty( $this->options['aiosp_opengraph_twitter_domain'] ) ) { + $domain = $this->options['aiosp_opengraph_twitter_domain']; + } + + if ( $type == 'article' && ! empty( $post ) ) { + if ( isset( $post->post_author ) && ! empty( $this->options['aiosp_opengraph_facebook_author'] ) ) { + $author = get_the_author_meta( 'facebook', $post->post_author ); + } + + if ( isset( $post->post_date ) ) { + $published_time = date( 'Y-m-d\TH:i:s\Z', mysql2date( 'U', $post->post_date ) ); + } + + if ( isset( $post->post_modified ) ) { + $modified_time = date( 'Y-m-d\TH:i:s\Z', mysql2date( 'U', $post->post_modified ) ); + } + } + + $image = $metabox['aioseop_opengraph_settings_image']; + $video = $metabox['aioseop_opengraph_settings_video']; + $title = $metabox['aioseop_opengraph_settings_title']; + $description = $metabox['aioseop_opengraph_settings_desc']; + + /* Add AIOSEO variables if Site Title and Desc from AIOSEOP not selected */ + global $aiosp; + if ( empty( $title ) ) { + $title = $aiosp->wp_title(); + } + if ( empty( $description ) ) { + $description = trim( strip_tags( get_post_meta( $post->ID, "_aioseop_description", true ) ) ); + } + + /* Add some defaults */ + if ( empty( $title ) ) { + $title = get_the_title(); + } + if ( empty( $description ) && ( $this->options['aiosp_opengraph_generate_descriptions'] ) && ! post_password_required( $post ) ) { + $description = $post->post_content; + } + if ( empty( $type ) ) { + $type = 'article'; + } + } else { + return; + } + + if ( $type == 'article' ) { + if ( ! empty( $this->options['aiosp_opengraph_gen_tags'] ) ) { + if ( ! empty( $this->options['aiosp_opengraph_gen_keywords'] ) ) { + $keywords = $aiosp->get_main_keywords(); + $keywords = $this->apply_cf_fields( $keywords ); + $keywords = apply_filters( 'aioseop_keywords', $keywords ); + if ( ! empty( $keywords ) && ! empty( $tag ) ) { + $tag .= ',' . $keywords; + } elseif ( empty( $tag ) ) { + $tag = $keywords; + } + } + $tag = $aiosp->keyword_string_to_list( $tag ); + if ( ! empty( $this->options['aiosp_opengraph_gen_categories'] ) ) { + $tag = array_merge( $tag, $aiosp->get_all_categories( $post->ID ) ); + } + if ( ! empty( $this->options['aiosp_opengraph_gen_post_tags'] ) ) { + $tag = array_merge( $tag, $aiosp->get_all_tags( $post->ID ) ); + } + } + if ( ! empty( $tag ) ) { + $tag = $aiosp->clean_keyword_list( $tag ); + } + } + + if ( ! empty( $this->options['aiosp_opengraph_title_shortcodes'] ) ) { + $title = do_shortcode( $title ); + } + + if ( ! empty( $description ) ) { + $description = $aiosp->internationalize( preg_replace( '/\s+/', ' ', $description ) ); + if ( ! empty( $this->options['aiosp_opengraph_description_shortcodes'] ) ) { + $description = do_shortcode( $description ); + } + $description = $aiosp->trim_excerpt_without_filters( $description, 1000 ); + } + + $title = $this->apply_cf_fields( $title ); + $description = $this->apply_cf_fields( $description ); + + /* Data Validation */ + $title = strip_tags( esc_attr( $title ) ); + $sitename = strip_tags( esc_attr( $sitename ) ); + $description = strip_tags( esc_attr( $description ) ); + + if ( empty( $thumbnail ) && ! empty( $image ) ) { + $thumbnail = $image; + } + + /* Get the first image attachment on the post */ + // if( empty($thumbnail) ) $thumbnail = $this->get_the_image(); + + /* Add user supplied default image */ + if ( empty( $thumbnail ) ) { + if ( empty( $this->options['aiosp_opengraph_defimg'] ) ) { + $thumbnail = $this->options['aiosp_opengraph_dimg']; + } else { + switch ( $this->options['aiosp_opengraph_defimg'] ) { + case 'featured' : + $thumbnail = $this->get_the_image_by_post_thumbnail(); + break; + case 'attach' : + $thumbnail = $this->get_the_image_by_attachment(); + break; + case 'content' : + $thumbnail = $this->get_the_image_by_scan(); + break; + case 'custom' : + $meta_key = $this->options['aiosp_opengraph_meta_key']; + if ( ! empty( $meta_key ) && ! empty( $post ) ) { + $meta_key = explode( ',', $meta_key ); + $thumbnail = $this->get_the_image_by_meta_key( Array( + 'post_id' => $post->ID, + 'meta_key' => $meta_key, + ) ); + } + break; + case 'auto' : + $thumbnail = $this->get_the_image(); + break; + case 'author' : + $thumbnail = $this->get_the_image_by_author(); + break; + default : + $thumbnail = $this->options['aiosp_opengraph_dimg']; + } + } + } + + if ( ( empty( $thumbnail ) && ! empty( $this->options['aiosp_opengraph_fallback'] ) ) ) { + $thumbnail = $this->options['aiosp_opengraph_dimg']; + } + + if ( ! empty( $thumbnail ) ) { + $thumbnail = esc_url( $thumbnail ); + $thumbnail = set_url_scheme( $thumbnail ); + } + + $width = $height = ''; + if ( ! empty( $thumbnail ) ) { + if ( ! empty( $metabox['aioseop_opengraph_settings_imagewidth'] ) ) { + $width = $metabox['aioseop_opengraph_settings_imagewidth']; + } + if ( ! empty( $metabox['aioseop_opengraph_settings_imageheight'] ) ) { + $height = $metabox['aioseop_opengraph_settings_imageheight']; + } + if ( empty( $width ) && ! empty( $this->options['aiosp_opengraph_dimgwidth'] ) ) { + $width = $this->options['aiosp_opengraph_dimgwidth']; + } + if ( empty( $height ) && ! empty( $this->options['aiosp_opengraph_dimgheight'] ) ) { + $height = $this->options['aiosp_opengraph_dimgheight']; + } + } + + if ( ! empty( $video ) ) { + if ( ! empty( $metabox['aioseop_opengraph_settings_videowidth'] ) ) { + $videowidth = $metabox['aioseop_opengraph_settings_videowidth']; + } + if ( ! empty( $metabox['aioseop_opengraph_settings_videoheight'] ) ) { + $videoheight = $metabox['aioseop_opengraph_settings_videoheight']; + } + } + + $card = 'summary'; + if ( ! empty( $this->options['aiosp_opengraph_defcard'] ) ) { + $card = $this->options['aiosp_opengraph_defcard']; + } + + if ( ! empty( $metabox['aioseop_opengraph_settings_setcard'] ) ) { + $card = $metabox['aioseop_opengraph_settings_setcard']; + } + + //support for changing legacy twitter cardtype-photo to summary large image + if ( $card == 'photo' ) { + $card = 'summary_large_image'; + } + + $site = $domain = $creator = ''; + + if ( ! empty( $this->options['aiosp_opengraph_twitter_site'] ) ) { + $site = $this->options['aiosp_opengraph_twitter_site']; + $site = AIOSEOP_Opengraph_Public::prepare_twitter_username( $site ); + } + + if ( ! empty( $this->options['aiosp_opengraph_twitter_domain'] ) ) { + $domain = $this->options['aiosp_opengraph_twitter_domain']; + } + + if ( ! empty( $post ) && isset( $post->post_author ) && ! empty( $this->options['aiosp_opengraph_twitter_creator'] ) ) { + $creator = get_the_author_meta( 'twitter', $post->post_author ); + $creator = AIOSEOP_Opengraph_Public::prepare_twitter_username( $creator ); + } + + $twitter_thumbnail = $thumbnail; // Default Twitter image if custom isn't set. + + if ( isset( $metabox['aioseop_opengraph_settings_customimg_twitter'] ) && ! empty( $metabox['aioseop_opengraph_settings_customimg_twitter'] ) ) { + // Set Twitter image from custom. + $twitter_thumbnail = set_url_scheme( $metabox['aioseop_opengraph_settings_customimg_twitter'] ); + } + + $meta = Array( + 'facebook' => Array( + 'title' => 'og:title', + 'type' => 'og:type', + 'url' => 'og:url', + 'thumbnail' => 'og:image', + 'width' => 'og:image:width', + 'height' => 'og:image:height', + 'video' => 'og:video', + 'videowidth' => 'og:video:width', + 'videoheight' => 'og:video:height', + 'sitename' => 'og:site_name', + 'key' => 'fb:admins', + 'appid' => 'fb:app_id', + 'description' => 'og:description', + 'section' => 'article:section', + 'tag' => 'article:tag', + 'publisher' => 'article:publisher', + 'author' => 'article:author', + 'published_time' => 'article:published_time', + 'modified_time' => 'article:modified_time', + ), + 'twitter' => Array( + 'card' => 'twitter:card', + 'site' => 'twitter:site', + 'creator' => 'twitter:creator', + 'domain' => 'twitter:domain', + 'title' => 'twitter:title', + 'description' => 'twitter:description', + 'twitter_thumbnail' => 'twitter:image', + ), + ); + + //Only show if "use schema.org markup is checked" + if ( ! empty( $aioseop_options['aiosp_schema_markup'] ) ) { + $meta['google+'] = Array( 'thumbnail' => 'image' ); + } + + // Add links to testing tools + + /* + http://developers.facebook.com/tools/debug + https://dev.twitter.com/docs/cards/preview + http://www.google.com/webmasters/tools/richsnippets + */ + /* + $meta = Array( + 'facebook' => Array( + 'title' => 'og:title', + 'type' => 'og:type', + 'url' => 'og:url', + 'thumbnail' => 'og:image', + 'sitename' => 'og:site_name', + 'key' => 'fb:admins', + 'description' => 'og:description' + ), + 'google+' => Array( + 'thumbnail' => 'image', + 'title' => 'name', + 'description' => 'description' + ), + 'twitter' => Array( + 'card' => 'twitter:card', + 'url' => 'twitter:url', + 'title' => 'twitter:title', + 'description' => 'twitter:description', + 'thumbnail' => 'twitter:image' + + ) + ); + */ + + $tags = Array( + 'facebook' => Array( 'name' => 'property', 'value' => 'content' ), + 'twitter' => Array( 'name' => 'name', 'value' => 'content' ), + 'google+' => Array( 'name' => 'itemprop', 'value' => 'content' ), + ); + + foreach ( $meta as $t => $data ) { + foreach ( $data as $k => $v ) { + if ( empty( $$k ) ) { + $$k = ''; + } + $filtered_value = $$k; + $filtered_value = apply_filters( $this->prefix . 'meta', $filtered_value, $t, $k ); + if ( ! empty( $filtered_value ) ) { + if ( ! is_array( $filtered_value ) ) { + $filtered_value = Array( $filtered_value ); + } + foreach ( $filtered_value as $f ) { + echo '' . "\n"; + } + } + } + } + $social_link_schema = ''; + if ( ! empty( $social_links ) ) { + $home_url = esc_url( get_home_url() ); + $social_links = explode( "\n", $social_links ); + foreach ( $social_links as $k => $v ) { + $v = trim( $v ); + if ( empty( $v ) ) { + unset( $social_links[ $k ] ); + } else { + $v = esc_url( $v ); + $social_links[ $k ] = $v; + } + } + $social_links = join( '","', $social_links ); + $social_link_schema = << +{ "@context" : "http://schema.org", + "@type" : "{$social_type}", + "name" : "{$social_name}", + "url" : "{$home_url}", + "sameAs" : ["{$social_links}"] +} + + +END; + } + echo apply_filters( 'aiosp_opengraph_social_link_schema', $social_link_schema ); + } + + function do_opengraph() { + global $aioseop_options; + if ( ! empty( $aioseop_options ) && ! empty( $aioseop_options['aiosp_schema_markup'] ) ) { + add_filter( 'language_attributes', Array( $this, 'add_attributes' ) ); + } + if ( ! defined( 'DOING_AJAX' ) ) { + add_action( 'aioseop_modules_wp_head', Array( $this, 'add_meta' ), 5 ); + } + } + + function type_setup() { + global $aiosp, $wp_query; + $this->type = ''; + if ( $aiosp->is_static_front_page() ) { + if ( ! empty( $this->options ) && ! empty( $this->options['aiosp_opengraph_categories'] ) ) { + $this->type = $this->options['aiosp_opengraph_categories']; + } + } elseif ( is_singular() && $this->option_isset( 'types' ) ) { + $metabox = $this->get_current_options( Array(), 'settings' ); + $current_post_type = get_post_type(); + if ( ! empty( $metabox['aioseop_opengraph_settings_category'] ) ) { + $this->type = $metabox['aioseop_opengraph_settings_category']; + } elseif ( isset( $this->options["aiosp_opengraph_{$current_post_type}_fb_object_type"] ) ) { + $this->type = $this->options["aiosp_opengraph_{$current_post_type}_fb_object_type"]; + } + } + } + + function debug_post_types() { + add_filter( $this->prefix . 'display_settings', Array( $this, 'filter_settings' ), 10, 3 ); + add_filter( $this->prefix . 'override_options', Array( $this, 'override_options' ), 10, 3 ); + add_filter( $this->get_prefix( 'settings' ) . 'filter_metabox_options', Array( + $this, + 'filter_metabox_options', + ), 10, 3 ); + $post_types = $this->get_post_type_titles(); + $rempost = array( 'revision' => 1, 'nav_menu_item' => 1 ); + $post_types = array_diff_key( $post_types, $rempost ); + $this->default_options['types']['initial_options'] = $post_types; + foreach ( $post_types as $slug => $name ) { + $field = $slug . '_fb_object_type'; + $this->default_options[ $field ] = Array( + 'name' => "$name " . __( 'Object Type', 'all-in-one-seo-pack' ) . "
($slug)", + 'type' => 'select', + 'style' => '', + 'initial_options' => $this->fb_object_types, + 'default' => 'article', + 'condshow' => Array( 'aiosp_opengraph_types\[\]' => $slug ), + ); + $this->help_text[ $field ] = __( 'Choose a default value that best describes the content of your post type.', 'all-in-one-seo-pack' ); + $this->help_anchors[ $field ] = '#content-object-types'; + $this->locations['opengraph']['options'][] = $field; + $this->layout['facebook']['options'][] = $field; + } + $this->setting_options(); + $this->add_help_text_links(); + + } + + function get_all_images( $options = null, $p = null ) { + static $img = Array(); + if ( ! is_array( $options ) ) { + $options = Array(); + } + if ( ! empty( $this->options['aiosp_opengraph_meta_key'] ) ) { + $options['meta_key'] = $this->options['aiosp_opengraph_meta_key']; + } + if ( empty( $img ) ) { + $size = apply_filters( 'post_thumbnail_size', 'large' ); + $default = $this->get_the_image_by_default(); + if ( ! empty( $default ) ) { + $default = set_url_scheme( $default ); + $img[ $default ] = 0; + } + $img = array_merge( $img, parent::get_all_images( $options, null ) ); + } + + if ( ! empty( $options ) && ! empty( $options['aioseop_opengraph_settings_customimg'] ) ) { + $img[ $options['aioseop_opengraph_settings_customimg'] ] = 'customimg'; + } + + if ( ! empty( $options ) && ! empty( $options['aioseop_opengraph_settings_customimg'] ) ) { + $img[ $options['aioseop_opengraph_settings_customimg'] ] = 'customimg'; + $img[ $options['aioseop_opengraph_settings_customimg_twitter'] ] = 'customimg_twitter'; + } + + if ( $author_img = $this->get_the_image_by_author( $p ) ) { + $image["author"] = $author_img; + } + $image = array_flip( $img ); + $images = Array(); + if ( ! empty( $image ) ) { + foreach ( $image as $k => $v ) { + $images[ $v ] = ''; + } + } + + return Array( $image, $images ); + } + + function get_the_image_by_author( $options = null, $p = null ) { + if ( $p === null ) { + global $post; + } else { + $post = $p; + } + if ( ! empty( $post ) && ! empty( $post->post_author ) ) { + $matches = Array(); + $get_avatar = get_avatar( $post->post_author, 300 ); + if ( preg_match( "/src='(.*?)'/i", $get_avatar, $matches ) ) { + return $matches[1]; + } + } + + return false; + } + + function get_the_image( $options = null, $p = null ) { + $meta_key = $this->options['aiosp_opengraph_meta_key']; + + return parent::get_the_image( Array( 'meta_key' => $meta_key ), $p ); + } + + function get_the_image_by_default( $args = array() ) { + return $this->options['aiosp_opengraph_dimg']; + } + + function settings_update() { + + } + } +} diff --git a/plugins/all-in-one-seo-pack/modules/aioseop_performance.php b/plugins/all-in-one-seo-pack/modules/aioseop_performance.php new file mode 100644 index 0000000..df2d8a2 --- /dev/null +++ b/plugins/all-in-one-seo-pack/modules/aioseop_performance.php @@ -0,0 +1,324 @@ +name = __( 'Performance', 'all-in-one-seo-pack' ); // Human-readable name of the plugin. + $this->prefix = 'aiosp_performance_'; // Option prefix. + $this->file = __FILE__; // The current file. + parent::__construct(); + + $this->help_text = array( + 'memory_limit' => __( 'This setting allows you to raise your PHP memory limit to a reasonable value. Note: WordPress core and other WordPress plugins may also change the value of the memory limit.', 'all-in-one-seo-pack' ), + 'execution_time' => __( 'This setting allows you to raise your PHP execution time to a reasonable value.', 'all-in-one-seo-pack' ), + 'force_rewrites' => __( 'Use output buffering to ensure that the title gets rewritten. Enable this option if you run into issues with the title tag being set by your theme or another plugin.', 'all-in-one-seo-pack' ), + ); + + $this->default_options = array( + 'memory_limit' => array( + 'name' => __( 'Raise memory limit', 'all-in-one-seo-pack' ), + 'default' => '256M', + 'type' => 'select', + 'initial_options' => array( + 0 => __( 'Use the system default', 'all-in-one-seo-pack' ), + '32M' => '32MB', + '64M' => '64MB', + '128M' => '128MB', + '256M' => '256MB', + ), + ), + 'execution_time' => array( + 'name' => __( 'Raise execution time', 'all-in-one-seo-pack' ), + 'default' => '', + 'type' => 'select', + 'initial_options' => array( + '' => __( 'Use the system default', 'all-in-one-seo-pack' ), + 30 => '30s', + 60 => '1m', + 120 => '2m', + 300 => '5m', + 0 => __( 'No limit', 'all-in-one-seo-pack' ), + ), + ), + ); + + $this->help_anchors = array( + 'memory_limit' => '#raise-memory-limit', + 'execution_time' => '#raise-execution-time', + 'force_rewrites' => '#force-rewrites', + ); + + global $aiosp, $aioseop_options; + if ( aioseop_option_isset( 'aiosp_rewrite_titles' ) && $aioseop_options['aiosp_rewrite_titles'] ) { + $this->default_options['force_rewrites'] = array( + 'name' => __( 'Force Rewrites:', 'all-in-one-seo-pack' ), + 'default' => 1, + 'type' => 'radio', + 'initial_options' => array( + 1 => __( 'Enabled', 'all-in-one-seo-pack' ), + 0 => __( 'Disabled', 'all-in-one-seo-pack' ), + ), + ); + } + + $this->layout = array( + 'default' => array( + 'name' => $this->name, + 'help_link' => 'https://semperplugins.com/documentation/performance-settings/', + 'options' => array_keys( $this->default_options ), + ), + ); + + $system_status = array( + 'status' => array( 'default' => '', 'type' => 'html', 'label' => 'none', 'save' => false ), + ); + + $this->layout['system_status'] = array( + 'name' => __( 'System Status', 'all-in-one-seo-pack' ), + 'help_link' => 'https://semperplugins.com/documentation/performance-settings/', + 'options' => array_keys( $system_status ), + ); + + $this->default_options = array_merge( $this->default_options, $system_status ); + + $this->add_help_text_links(); + + add_filter( $this->prefix . 'display_options', array( $this, 'display_options_filter' ), 10, 2 ); + add_filter( $this->prefix . 'update_options', array( $this, 'update_options_filter' ), 10, 2 ); + add_action( $this->prefix . 'settings_update', array( $this, 'settings_update_action' ), 10, 2 ); + } + + function update_options_filter( $options, $location ) { + if ( $location == null && isset( $options[ $this->prefix . 'force_rewrites' ] ) ) { + unset( $options[ $this->prefix . 'force_rewrites' ] ); + } + + return $options; + } + + function display_options_filter( $options, $location ) { + if ( $location == null ) { + $options[ $this->prefix . 'force_rewrites' ] = 1; + global $aiosp; + if ( aioseop_option_isset( 'aiosp_rewrite_titles' ) ) { + $opts = $aiosp->get_current_options( array(), null ); + $options[ $this->prefix . 'force_rewrites' ] = $opts['aiosp_force_rewrites']; + } + } + + return $options; + } + + function settings_update_action( $options, $location ) { + if ( $location == null && isset( $_POST[ $this->prefix . 'force_rewrites' ] ) ) { + $force_rewrites = $_POST[ $this->prefix . 'force_rewrites' ]; + if ( ( $force_rewrites == 0 ) || ( $force_rewrites == 1 ) ) { + global $aiosp; + $opts = $aiosp->get_current_options( array(), null ); + $opts['aiosp_force_rewrites'] = $force_rewrites; + $aiosp->update_class_option( $opts ); + wp_cache_flush(); + } + } + } + + function add_page_hooks() { + $memory_usage = memory_get_peak_usage() / 1024 / 1024; + if ( $memory_usage > 32 ) { + unset( $this->default_options['memory_limit']['initial_options']['32M'] ); + if ( $memory_usage > 64 ) { + unset( $this->default_options['memory_limit']['initial_options']['64M'] ); + } + if ( $memory_usage > 128 ) { + unset( $this->default_options['memory_limit']['initial_options']['128M'] ); + } + if ( $memory_usage > 256 ) { + unset( $this->default_options['memory_limit']['initial_options']['256M'] ); + } + } + $this->update_options(); + parent::add_page_hooks(); + } + + function settings_page_init() { + $this->default_options['status']['default'] = $this->get_serverinfo(); + } + + function menu_order() { + return 7; + } + + function get_serverinfo() { + global $wpdb; + global $wp_version; + + $sqlversion = $wpdb->get_var( "SELECT VERSION() AS version" ); + $mysqlinfo = $wpdb->get_results( "SHOW VARIABLES LIKE 'sql_mode'" ); + if ( is_array( $mysqlinfo ) ) { + $sql_mode = $mysqlinfo[0]->Value; + } + if ( empty( $sql_mode ) ) { + $sql_mode = __( 'Not set', 'all-in-one-seo-pack' ); + } + if ( ini_get( 'allow_url_fopen' ) ) { + $allow_url_fopen = __( 'On', 'all-in-one-seo-pack' ); + } else { + $allow_url_fopen = __( 'Off', 'all-in-one-seo-pack' ); + } + if ( ini_get( 'upload_max_filesize' ) ) { + $upload_max = ini_get( 'upload_max_filesize' ); + } else { + $upload_max = __( 'N/A', 'all-in-one-seo-pack' ); + } + if ( ini_get( 'post_max_size' ) ) { + $post_max = ini_get( 'post_max_size' ); + } else { + $post_max = __( 'N/A', 'all-in-one-seo-pack' ); + } + if ( ini_get( 'max_execution_time' ) ) { + $max_execute = ini_get( 'max_execution_time' ); + } else { + $max_execute = __( 'N/A', 'all-in-one-seo-pack' ); + } + if ( ini_get( 'memory_limit' ) ) { + $memory_limit = ini_get( 'memory_limit' ); + } else { + $memory_limit = __( 'N/A', 'all-in-one-seo-pack' ); + } + if ( function_exists( 'memory_get_usage' ) ) { + $memory_usage = round( memory_get_usage() / 1024 / 1024, 2 ) . __( ' MByte', 'all-in-one-seo-pack' ); + } else { + $memory_usage = __( 'N/A', 'all-in-one-seo-pack' ); + } + if ( is_callable( 'exif_read_data' ) ) { + $exif = __( 'Yes', 'all-in-one-seo-pack' ) . ' ( V' . $this->substr( phpversion( 'exif' ), 0, 4 ) . ')'; + } else { + $exif = __( 'No', 'all-in-one-seo-pack' ); + } + if ( is_callable( 'iptcparse' ) ) { + $iptc = __( 'Yes', 'all-in-one-seo-pack' ); + } else { + $iptc = __( 'No', 'all-in-one-seo-pack' ); + } + if ( is_callable( 'xml_parser_create' ) ) { + $xml = __( 'Yes', 'all-in-one-seo-pack' ); + } else { + $xml = __( 'No', 'all-in-one-seo-pack' ); + } + + $theme = wp_get_theme(); + + if ( function_exists( 'is_multisite' ) ) { + if ( is_multisite() ) { + $ms = __( 'Yes', 'all-in-one-seo-pack' ); + } else { + $ms = __( 'No', 'all-in-one-seo-pack' ); + } + + } else { + $ms = __( 'N/A', 'all-in-one-seo-pack' ); + } + + $siteurl = get_option( 'siteurl' ); + $homeurl = get_option( 'home' ); + $db_version = get_option( 'db_version' ); + + $debug_info = array( + __( 'Operating System', 'all-in-one-seo-pack' ) => PHP_OS, + __( 'Server', 'all-in-one-seo-pack' ) => $_SERVER['SERVER_SOFTWARE'], + __( 'Memory usage', 'all-in-one-seo-pack' ) => $memory_usage, + __( 'MYSQL Version', 'all-in-one-seo-pack' ) => $sqlversion, + __( 'SQL Mode', 'all-in-one-seo-pack' ) => $sql_mode, + __( 'PHP Version', 'all-in-one-seo-pack' ) => PHP_VERSION, + __( 'PHP Allow URL fopen', 'all-in-one-seo-pack' ) => $allow_url_fopen, + __( 'PHP Memory Limit', 'all-in-one-seo-pack' ) => $memory_limit, + __( 'PHP Max Upload Size', 'all-in-one-seo-pack' ) => $upload_max, + __( 'PHP Max Post Size', 'all-in-one-seo-pack' ) => $post_max, + __( 'PHP Max Script Execute Time', 'all-in-one-seo-pack' ) => $max_execute, + __( 'PHP Exif support', 'all-in-one-seo-pack' ) => $exif, + __( 'PHP IPTC support', 'all-in-one-seo-pack' ) => $iptc, + __( 'PHP XML support', 'all-in-one-seo-pack' ) => $xml, + __( 'Site URL', 'all-in-one-seo-pack' ) => $siteurl, + __( 'Home URL', 'all-in-one-seo-pack' ) => $homeurl, + __( 'WordPress Version', 'all-in-one-seo-pack' ) => $wp_version, + __( 'WordPress DB Version', 'all-in-one-seo-pack' ) => $db_version, + __( 'Multisite', 'all-in-one-seo-pack' ) => $ms, + __( 'Active Theme', 'all-in-one-seo-pack' ) => $theme['Name'] . ' ' . $theme['Version'], + ); + $debug_info['Active Plugins'] = null; + $active_plugins = $inactive_plugins = array(); + $plugins = get_plugins(); + foreach ( $plugins as $path => $plugin ) { + if ( is_plugin_active( $path ) ) { + $debug_info[ $plugin['Name'] ] = $plugin['Version']; + } else { + $inactive_plugins[ $plugin['Name'] ] = $plugin['Version']; + } + } + $debug_info['Inactive Plugins'] = null; + $debug_info = array_merge( $debug_info, (array) $inactive_plugins ); + + $mail_text = __( 'All in One SEO Pack Pro Debug Info', 'all-in-one-seo-pack' ) . "\r\n------------------\r\n\r\n"; + $page_text = ''; + if ( ! empty( $debug_info ) ) { + foreach ( $debug_info as $name => $value ) { + if ( $value !== null ) { + $page_text .= "
  • $name $value
  • "; + $mail_text .= "$name: $value\r\n"; + } else { + $page_text .= "

    $name

      "; + $mail_text .= "\r\n$name\r\n----------\r\n"; + } + } + } + + do { + if ( ! empty( $_REQUEST['sfwd_debug_submit'] ) || ! empty( $_REQUEST['sfwd_update_check'] ) ) { + $nonce = $_REQUEST['sfwd_debug_nonce']; + if ( ! wp_verify_nonce( $nonce, 'sfwd-debug-nonce' ) ) { + echo "
      " . __( 'Form submission error: verification check failed.', 'all-in-one-seo-pack' ) . '
      '; + break; + } + if ( $_REQUEST['sfwd_update_check'] ) { + global $aioseop_update_checker; + $aioseop_update_checker->checkForUpdates(); + echo "
      " . sprintf( __( '%s has checked for updates.', 'all-in-one-seo-pack' ), AIOSEOP_PLUGIN_NAME ) . '
      '; + break; + } + $email = ''; + if ( ! empty( $_REQUEST['sfwd_debug_send_email'] ) ) { + $email = sanitize_email( $_REQUEST['sfwd_debug_send_email'] ); + } + if ( $email ) { + if ( wp_mail( $email, sprintf( __( 'SFWD Debug Mail From Site %s.', 'all-in-one-seo-pack' ), $siteurl ), $mail_text ) ) { + echo "
      " . sprintf( __( 'Sent to %s.', 'all-in-one-seo-pack' ), $email ) . '
      '; + } else { + echo "
      " . sprintf( __( 'Failed to send to %s.', 'all-in-one-seo-pack' ), $email ) . '
      '; + } + } else { + echo "
      " . __( 'Error: please enter an e-mail address before submitting.', 'all-in-one-seo-pack' ) . '
      '; + } + } + } while ( 0 ); // Control structure for use with break. + $nonce = wp_create_nonce( 'sfwd-debug-nonce' ); + $buf = "
        \n{$page_text}\n
      \n

      \n" . + ''; + + if ( AIOSEOPPRO ) { + $buf .= '

      '; + } + + return $buf; + } + } +} diff --git a/plugins/all-in-one-seo-pack/modules/aioseop_robots.php b/plugins/all-in-one-seo-pack/modules/aioseop_robots.php new file mode 100644 index 0000000..6915bf7 --- /dev/null +++ b/plugins/all-in-one-seo-pack/modules/aioseop_robots.php @@ -0,0 +1,642 @@ +name = __( 'Robots.txt', 'all-in-one-seo-pack' ); // Human-readable name of the plugin + $this->prefix = 'aiosp_robots_'; // option prefix + $this->file = __FILE__; // the current file + parent::__construct(); + + $help_text = Array( + 'additional' => __( 'Rule Type', 'all-in-one-seo-pack' ), + 'useragent' => __( 'User Agent', 'all-in-one-seo-pack' ), + 'path' => __( 'Directory Path', 'all-in-one-seo-pack' ), + 'robotgen' => __( 'Robots.txt editor', 'all-in-one-seo-pack' ), + ); + + $this->default_options = array( + 'usage' => Array( + 'type' => 'html', + 'label' => 'none', + 'default' => __( 'Use the rule builder below to add rules to create a new Robots.txt file.  If you already have a Robots.txt file you should use the File Editor feature in All in One SEO Pack to edit it or you can delete your current Robots.txt file and start a new one with the rule builder below.', 'all-in-one-seo-pack' ), + 'save' => false, + ), + 'additional' => Array( + 'name' => __( 'Rule Type', 'all-in-one-seo-pack' ), + 'save' => false, + 'type' => 'select', + 'initial_options' => Array( 'allow' => 'Allow', 'block' => 'Block' ), + ), + 'useragent' => Array( + 'name' => __( 'User Agent', 'all-in-one-seo-pack' ), + 'save' => false, + 'type' => 'text', + ), + 'path' => Array( + 'name' => __( 'Directory Path', 'all-in-one-seo-pack' ), + 'save' => false, + 'type' => 'text', + ), + 'robotgen' => Array( + 'name' => __( 'Generate Robots.txt', 'all-in-one-seo-pack' ), + 'save' => false, + 'default' => '', + 'type' => 'textarea', + 'cols' => 57, + 'rows' => 20, + 'label' => 'none', + 'readonly' => 'readonly', + ), + 'Submit_Preview' => Array( + 'type' => 'submit', + 'class' => 'button-primary MRL', + 'name' => __( 'Add Rule', 'all-in-one-seo-pack' ) . ' »', + 'nowrap' => 1, + ), + 'Submit_Update' => Array( + 'type' => 'submit', + 'class' => 'button-primary', + 'name' => __( 'Save Robots.txt File', 'all-in-one-seo-pack' ) . ' »', + 'nowrap' => 1, + ), + 'Submit_Delete' => Array( + 'type' => 'submit', + 'class' => 'button-primary', + 'name' => __( 'Delete Robots.txt File', 'all-in-one-seo-pack' ) . ' »', + 'nowrap' => 1, + ), + 'optusage' => Array( + 'type' => 'html', + 'label' => 'none', + 'default' => __( 'Click the Optimize button below and All in One SEO Pack will analyze your Robots.txt file to make sure it complies with the standards for Robots.txt files.  The results will be displayed in a table below.', 'all-in-one-seo-pack' ), + 'save' => false, + ), + 'Submit_Opt_Update' => Array( + 'type' => 'submit', + 'class' => 'button-primary', + 'name' => __( 'Update Robots.txt File', 'all-in-one-seo-pack' ) . ' »', + 'nowrap' => 1, + 'style' => 'margin-left: 20px;', + ), + 'Submit_Opt_Preview' => Array( + 'type' => 'submit', + 'class' => 'button-primary', + 'name' => __( 'Disregard Changes', 'all-in-one-seo-pack' ) . ' »', + 'nowrap' => 1, + ), + 'Submit_Optimize' => Array( + 'type' => 'submit', + 'class' => 'button-primary', + 'name' => __( 'Optimize', 'all-in-one-seo-pack' ) . ' »', + ), + ); + + if ( ! empty( $help_text ) ) { + foreach ( $help_text as $k => $v ) { + $this->default_options[ $k ]['help_text'] = $v; + } + } + + $this->locations = array( + 'generator' => Array( + 'name' => "Robots.txt", + 'type' => 'settings', + 'options' => Array( + 'usage', + 'additional', + 'useragent', + 'path', + 'Submit_Preview', + 'Submit_Update', + 'Submit_Delete', + 'robotgen', + 'optusage', + 'Submit_Opt_Update', + 'Submit_Opt_Preview', + 'Submit_Optimize', + ), + ), + ); + + $this->layout = Array( + 'default' => Array( + 'name' => __( 'Create a Robots.txt File', 'all-in-one-seo-pack' ), + 'options' => Array( + 'usage', + 'additional', + 'useragent', + 'path', + 'Submit_Preview', + 'Submit_Update', + 'Submit_Delete', + 'robotgen', + ) // this is set below, to the remaining options -- pdb + ), + ); + $this->layout['optimize'] = Array( + 'name' => __( 'Optimize your Robots.txt File', 'all-in-one-seo-pack' ), + 'options' => Array( 'optusage', 'Submit_Optimize' ), + ); + if ( isset( $_POST['Submit_Optimize'] ) ) { + $this->layout['optimize']['options'] = Array( + 'optusage', + 'Submit_Opt_Update', + 'Submit_Opt_Preview', + 'robothtml', + ); + $this->default_options['optusage']['default'] = __( "Your Robots.txt file has been optimized.  Here are the results and recommendations.  Click the Update Robots.txt File button below to write these changes to your Robots.txt file.  Click the Disregard Changes button to ignore these recommendations and keep your current Robots.txt file.", 'all-in-one-seo-pack' ); + } + + // load initial options / set defaults + $this->update_options(); + + add_action( $this->prefix . 'settings_update', Array( $this, 'do_robots' ), 10, 2 ); + add_filter( $this->prefix . 'display_options', Array( $this, 'filter_options' ), 10, 2 ); + add_filter( $this->prefix . 'submit_options', Array( $this, 'filter_submit' ), 10, 2 ); + add_filter( $this->prefix . 'display_settings', Array( $this, 'filter_settings' ), 10, 2 ); + } + + function filter_settings( $settings, $location ) { + if ( $location == 'generator' ) { + $prefix = $this->get_prefix( $location ) . $location . '_'; + if ( isset( $_POST['Submit_Optimize'] ) ) { + if ( isset( $settings[ $prefix . 'robotgen' ] ) ) { + $settings[ $prefix . 'robotgen' ]['type'] = 'hidden'; + $settings[ $prefix . 'robotgen' ]['label'] = 'none'; + $settings[ $prefix . 'robotgen' ]['help_text'] = ''; + $settings[ $prefix . 'robothtml' ] = Array( + 'name' => __( 'Robots.txt', 'all-in-one-seo-pack' ), + 'save' => false, + 'default' => '', + 'type' => 'html', + 'label' => 'none', + 'style' => 'margin-top:10px;', + ); + } + } + } + + return $settings; + } + + function filter_submit( $submit, $location ) { + if ( $location == 'generator' ) { + unset( $submit['Submit_Default'] ); + $submit['Submit']['type'] = 'hidden'; + } + + return $submit; + } + + /** + * Returns the sitemap filename; + * + * @return bool + */ + function get_sitemap_filename() { + + global $aioseop_options; + if ( isset( $aioseop_options['modules']['aiosp_sitemap_options']['aiosp_sitemap_filename'] ) ) { + return $aioseop_options['modules']['aiosp_sitemap_options']['aiosp_sitemap_filename']; + } + + return false; + } + + /** + * Filters the options. + * + * @todo Much of this couldn't be considered filtering options, and should be extracted to other functions. + * @since ?? + * @since 2.3.6 + */ + function filter_options( $options, $location ) { + if ( $location ) { + $prefix = $this->get_prefix( $location ) . $location . '_'; + } + if ( $location === 'generator' ) { + $optimize = false; + $robotgen = ''; + if ( ! empty( $_POST[ $prefix . 'robotgen' ] ) ) { + $robotgen = str_replace( "\r\n", "\n", $_POST[ $prefix . 'robotgen' ] ); + } + if ( isset( $_POST['Submit_Preview'] ) ) { + $options[ $prefix . 'robotgen' ] = $robotgen; + } + if ( ! isset( $_POST['Submit_Preview'] ) ) { + if ( isset( $_POST['Submit_Optimize'] ) && ! isset( $_POST['Submit_Delete'] ) && ! isset( $_POST['Submit_Update'] ) && ! isset( $_POST['Submit_Opt_Update'] ) ) { + $optimize = true; + } + if ( ! isset( $options[ $prefix . 'robotgen' ] ) || empty( $options[ $prefix . 'robotgen' ] ) ) { + if ( $optimize ) { + $options[ $prefix . 'robotgen' ] = $robotgen; + } + if ( empty( $options[ $prefix . 'robotgen' ] ) ) { + $options = $this->load_files( $options, Array( 'robotgen' => 'robots.txt' ), $prefix ); + } + } + } + $access = ( get_option( 'blog_public' ) ) ? 'allow' : 'block'; + if ( $access ) { + global $aioseop_options; + $sitemap_url = ''; + $sitemap_filename = $this->get_sitemap_filename(); + if ( $sitemap_filename ) { + $sitemapurl = trailingslashit( get_home_url() ) . $sitemap_filename . '.xml'; + } + $allow_rule = "Sitemap: $sitemapurl \n\n# global\nUser-agent: *\nDisallow: /xmlrpc.php\n\n"; + $block_rule = "# global\nUser-agent: *\nDisallow: /\n\n"; + if ( empty( $options[ $prefix . 'robotgen' ] ) ) { + $options[ $prefix . 'robotgen' ] = ''; + } + if ( isset( $_POST['Submit_Preview'] ) && ( ( $options[ $prefix . 'robotgen' ] == $allow_rule ) || + ( $options[ $prefix . 'robotgen' ] == $block_rule ) ) + ) { + $options[ $prefix . 'robotgen' ] = ''; + } + if ( $access === 'block' && empty( $options[ $prefix . 'robotgen' ] ) ) { + $options[ $prefix . 'robotgen' ] .= $block_rule; + } elseif ( $access === 'allow' && empty( $options[ $prefix . 'robotgen' ] ) ) { + $options[ $prefix . 'robotgen' ] .= $allow_rule; + } + } + foreach ( Array( 'ad' => 'additional', 'ua' => 'useragent', 'dp' => 'path' ) as $k => $v ) { + if ( isset( $_POST[ $prefix . $v ] ) ) { + $$k = $_POST[ $prefix . $v ]; + } + } + if ( ! empty( $ad ) && ! empty( $ua ) && ! empty( $dp ) ) { + if ( $ad === 'allow' ) { + $ad = "Allow: "; + } else { + $ad = "Disallow: "; + } + $options[ $prefix . 'robotgen' ] .= "User-agent: $ua\n$ad $dp\n\n"; + } + $file = explode( "\n", $options[ $prefix . 'robotgen' ] ); + if ( $optimize ) { + $rules = $this->parse_robots( $file ); + $user_agents = $this->get_robot_user_agents( $rules ); + foreach ( $user_agents as $ua => $rules ) { + $user_agents[ $ua ]['disallow'] = $this->opt_robot_rule( $rules['disallow'] ); + $user_agents[ $ua ]['allow'] = $this->opt_robot_rule( $rules['allow'] ); + } + $rules = $this->flatten_user_agents( $user_agents ); + unset( $user_agents ); + foreach ( $rules as $r ) { + $r['disallow'] = $this->opt_robot_rule( $r['disallow'] ); + $r['allow'] = $this->opt_robot_rule( $r['allow'] ); + } + $options[ $prefix . 'robotgen' ] = $this->output_robots( $rules ); + $file2 = explode( "\n", $options[ $prefix . 'robotgen' ] ); + $options[ $prefix . 'robothtml' ] = '
      ' . $this->annotate_robots_html( $file, true, __( "Current File", 'all-in-one-seo-pack' ) ) . '' . $this->annotate_robots_html( $file2, true, __( "Proposed Changes", 'all-in-one-seo-pack' ) ) . '
      '; + } else { + $options[ $prefix . 'robothtml' ] = $this->annotate_robots_html( $file, true, __( "Current File", 'all-in-one-seo-pack' ) ); + } + } + + return $options; + } + + function do_robots( $options, $location ) { + if ( $location ) { + $prefix = $this->get_prefix( $location ) . $location . '_'; + } + if ( $location === 'generator' ) { + if ( isset( $_POST['Submit_Update'] ) || isset( $_POST['Submit_Opt_Update'] ) ) { + $this->save_files( Array( 'robotgen' => 'robots.txt' ), $prefix ); + } elseif ( isset( $_POST['Submit_Delete'] ) ) { + $this->delete_files( Array( 'robotgen' => 'robots.txt' ) ); + } + } + } + + function annotate_robots_html( $file, $show_help = false, $title = '' ) { + $robots = $this->annotate_robots( $file ); + if ( ! empty( $robots ) ) { + $buf = ''; + if ( ! empty( $title ) ) { + $buf .= ""; + } + $buf .= ''; + $buf .= ''; + $buf .= ''; + $buf .= ""; + + foreach ( $robots as $r ) { + $class = 'robots'; + $status = "#9cf975"; + $help = ''; + if ( ! $r['valid'] || ! $r['strict'] ) { + if ( ! $r['strict'] ) { + $class .= ' quirks'; + $status = "yellow"; + } + if ( ! $r['valid'] ) { + $class .= ' invalid'; + $status = "#f9534a"; + } + if ( $show_help ) { + $help = '' + . '
      '; + } + } + $buf .= ""; + } + $buf .= ''; + + $buf .= '
      " . $title . "
      ParameterStatus
      {$help}
      '; + if ( $show_help ) { + $buf .= '

      +

      ' . __( 'Legend', 'all-in-one-seo-pack' ) . '

      +
        +
      • ' . __( 'The yellow indicator means that a non-standard extension was recognized; not all crawlers may recognize it or interpret it the same way. The Allow and Sitemap directives are commonly used by Google and Yahoo.', 'all-in-one-seo-pack' ) . '
      • +
      • ' . __( 'The red indicator means that the syntax is invalid for a robots.txt file.', 'all-in-one-seo-pack' ) . '
      • +
      + ' . __( 'More Information', 'all-in-one-seo-pack' ) . ' +
      '; + } + } else { + $buf = '

      Your Robots.txt file is either empty, cannot be found, or has invalid data.

      '; + } + + return $buf; + } + + function annotate_robots( $robots ) { + $state = 0; + $rules = Array(); + foreach ( $robots as $l ) { + $l = trim( $l ); + if ( empty( $l[0] ) ) { + if ( $state > 1 ) { + $rules[] = Array( + 'state' => 0, + 'type' => 'blank', + 'content' => $l, + 'valid' => true, + 'strict' => true, + ); + $state = 0; + } + } elseif ( $l[0] === '#' ) { + if ( $state < 1 ) { + $state = 1; + } + $rules[] = Array( + 'state' => $state, + 'type' => 'comment', + 'content' => $l, + 'valid' => true, + 'strict' => true, + ); + } elseif ( stripos( $l, 'sitemap' ) === 0 ) { + $state = 2; + $rules[] = Array( + 'state' => $state, + 'type' => 'sitemap', + 'content' => $l, + 'valid' => true, + 'strict' => false, + ); + } elseif ( stripos( $l, 'crawl-delay' ) === 0 ) { + $state = 3; + $rules[] = Array( + 'state' => $state, + 'type' => 'crawl-delay', + 'content' => $l, + 'valid' => true, + 'strict' => false, + ); + } elseif ( stripos( $l, 'user-agent' ) === 0 ) { + $state = 3; + $rules[] = Array( + 'state' => $state, + 'type' => 'user-agent', + 'content' => $l, + 'valid' => true, + 'strict' => true, + ); + } elseif ( stripos( $l, 'useragent' ) === 0 ) { + $state = 3; + $rules[] = Array( + 'state' => $state, + 'type' => 'user-agent', + 'content' => $l, + 'valid' => true, + 'strict' => false, + ); + } elseif ( stripos( $l, 'disallow' ) === 0 ) { + if ( $state < 3 ) { + $rules[] = Array( + 'state' => $state, + 'type' => 'disallow', + 'content' => $l, + 'valid' => false, + 'strict' => false, + ); + continue; + } + $state = 3; + $rules[] = Array( + 'state' => $state, + 'type' => 'disallow', + 'content' => $l, + 'valid' => true, + 'strict' => true, + ); + } elseif ( stripos( $l, 'allow' ) === 0 ) { + if ( $state < 3 ) { + $rules[] = Array( + 'state' => $state, + 'type' => 'allow', + 'content' => $l, + 'valid' => false, + 'strict' => false, + ); + continue; + } + $state = 3; + $rules[] = Array( + 'state' => $state, + 'type' => 'allow', + 'content' => $l, + 'valid' => true, + 'strict' => false, + ); + } else { + $rules[] = Array( + 'state' => $state, + 'type' => 'unknown', + 'content' => $l, + 'valid' => false, + 'strict' => false, + ); + } + } + + return $rules; + } + + function parse_annotated_robots( $robots ) { + $state = 0; + $rules = Array(); + $opts = Array( 'sitemap', 'crawl-delay', 'user-agent', 'allow', 'disallow', 'comment' ); + $rule = Array(); + foreach ( $opts as $o ) { + $rule[ $o ] = Array(); + } + $blank_rule = $rule; + foreach ( $robots as $l ) { + switch ( $l['type'] ) { + case 'blank': + if ( $state >= 1 ) { + if ( ( $state === 1 ) && ( empty( $rule['user-agent'] ) ) ) { + $rule['user-agent'] = Array( null ); + } + $rules[] = $rule; + $rule = $blank_rule; + } + continue; + case 'comment': + $rule['comment'][] = $l['content']; + continue; + case 'sitemap': + $rule['sitemap'][] = trim( substr( $l['content'], 8 ) ); + break; + case 'crawl-delay': + $rule['crawl-delay'][] = trim( substr( $l['content'], 12 ) ); + break; + case 'user-agent': + if ( $l['strict'] ) { + $ua = trim( substr( $l['content'], 11 ) ); + } else { + $ua = trim( substr( $l['content'], 10 ) ); + } + $rule['user-agent'][] = $ua; + break; + case 'disallow': + if ( $l['valid'] ) { + $rule['disallow'][] = trim( substr( $l['content'], 9 ) ); + break; + } + continue; + case 'allow': + if ( $l['valid'] ) { + $rule['allow'][] = trim( substr( $l['content'], 6 ) ); + break; + } + continue; + case 'unknown': + default: + } + $state = $l['state']; + } + if ( ( $state === 1 ) && ( empty( $rule['user-agent'] ) ) ) { + $rule['user-agent'] = Array( null ); + } + if ( $state >= 1 ) { + $rules[] = $rule; + } + + return $rules; + } + + function parse_robots( $robots ) { + return $this->parse_annotated_robots( $this->annotate_robots( $robots ) ); + } + + function get_robot_user_agents( $rules ) { + $opts = Array( 'sitemap', 'crawl-delay', 'user-agent', 'allow', 'disallow', 'comment' ); + $user_agents = Array(); + foreach ( $rules as $r ) { + if ( ! empty( $r['sitemap'] ) && empty( $r['user-agent'] ) ) { + $r['user-agent'] = Array( null ); + } + foreach ( $r['user-agent'] as $ua ) { + if ( ! isset( $user_agents[ $ua ] ) ) { + $user_agents[ $ua ] = Array(); + } + foreach ( $opts as $o ) { + if ( ! isset( $user_agents[ $ua ][ $o ] ) ) { + $user_agents[ $ua ][ $o ] = $r[ $o ]; + } else { + $user_agents[ $ua ][ $o ] = array_merge( $user_agents[ $ua ][ $o ], $r[ $o ] ); + } + } + } + } + + return $user_agents; + } + + function flatten_user_agents( $user_agents ) { + $rules = Array(); + foreach ( $user_agents as $ua => $r ) { + $r['user-agent'] = Array( $ua ); + $rules[] = $r; + } + + return $rules; + } + + function opt_robot_rule( $dis ) { + if ( is_array( $dis ) ) { // unique rules only + $dis = array_unique( $dis, SORT_STRING ); + $pd = null; + foreach ( $dis as $k => $d ) { + $d = trim( $d ); + if ( ! empty( $pd ) && ! empty( $d ) ) { + if ( strpos( $d, $pd ) === 0 ) { + unset( $dis[ $k ] ); + continue; // get rid of subpaths of $pd + } + } + $l = strlen( $d ); + if ( ( $l > 0 ) && ( $d[ $l - 1 ] !== '/' ) ) { + continue; + } + $pd = $d; // only allow directory paths for $pd + } + } + + return $dis; + } + + function output_robots( $rules ) { + $robots = ''; + foreach ( $rules as $r ) { + foreach ( $r['comment'] as $c ) { + $robots .= "$c\n"; + } + foreach ( $r['user-agent'] as $u ) { + if ( $u != '' ) { + $robots .= "User-agent: $u\n"; + } + } + foreach ( $r['crawl-delay'] as $c ) { + $robots .= "Crawl-Delay: $c\n"; + } + foreach ( $r['allow'] as $a ) { + $robots .= "Allow: $a\n"; + } + foreach ( $r['disallow'] as $d ) { + $robots .= "Disallow: $d\n"; + } + foreach ( $r['sitemap'] as $s ) { + $robots .= "Sitemap: $s\n"; + } + $robots .= "\n"; + } + + return $robots; + } + } +} diff --git a/plugins/all-in-one-seo-pack/modules/aioseop_sitemap.php b/plugins/all-in-one-seo-pack/modules/aioseop_sitemap.php new file mode 100644 index 0000000..d617e43 --- /dev/null +++ b/plugins/all-in-one-seo-pack/modules/aioseop_sitemap.php @@ -0,0 +1,2961 @@ +name = __( 'XML Sitemap', 'all-in-one-seo-pack' ); // Human-readable name of the plugin. + $this->prefix = 'aiosp_sitemap_'; // Option prefix. + $this->file = __FILE__; // The current file. + $this->extra_sitemaps = array(); + $this->extra_sitemaps = apply_filters( $this->prefix . 'extra', $this->extra_sitemaps ); + } + parent::__construct(); + $this->comment_string = 'Sitemap %s generated by All in One SEO Pack %s by Michael Torbert of Semper Fi Web Design on %s'; + + $this->help_text = array( + 'filename' => __( "Specifies the name of your sitemap file. This will default to 'sitemap'.", 'all-in-one-seo-pack' ), + 'daily_cron' => __( 'Notify search engines based on the selected schedule, and also update static sitemap daily if in use. (this uses WP-Cron, so make sure this is working properly on your server as well)', 'all-in-one-seo-pack' ), + 'indexes' => __( 'Organize sitemap entries into distinct files in your sitemap. Enable this only if your sitemap contains over 50,000 URLs or the file is over 5MB in size.', 'all-in-one-seo-pack' ), + 'paginate' => __( 'Split long sitemaps into separate files.', 'all-in-one-seo-pack' ), + 'max_posts' => __( 'Allows you to specify the maximum number of posts in a sitemap (up to 50,000).', 'all-in-one-seo-pack' ), + 'posttypes' => __( 'Select which Post Types appear in your sitemap.', 'all-in-one-seo-pack' ), + 'taxonomies' => __( 'Select which taxonomy archives appear in your sitemap', 'all-in-one-seo-pack' ), + 'archive' => __( 'Include Date Archives in your sitemap.', 'all-in-one-seo-pack' ), + 'author' => __( 'Include Author Archives in your sitemap.', 'all-in-one-seo-pack' ), + 'gzipped' => __( 'Create a compressed sitemap file in .xml.gz format.', 'all-in-one-seo-pack' ), + 'robots' => __( 'Places a link to your Sitemap.xml into your virtual Robots.txt file.', 'all-in-one-seo-pack' ), + 'rewrite' => __( 'Dynamically creates the XML sitemap instead of using a static file.', 'all-in-one-seo-pack' ), + 'addl_url' => __( 'URL to the page.', 'all-in-one-seo-pack' ), + 'addl_prio' => __( 'The priority of the page.', 'all-in-one-seo-pack' ), + 'addl_freq' => __( 'The frequency of the page.', 'all-in-one-seo-pack' ), + 'addl_mod' => __( 'Last modified date of the page.', 'all-in-one-seo-pack' ), + 'excl_categories' => __( 'Entries from these categories will be excluded from the sitemap.', 'all-in-one-seo-pack' ), + 'excl_pages' => __( 'Use page slugs or page IDs, seperated by commas, to exclude pages from the sitemap.', 'all-in-one-seo-pack' ), + ); + + $this->help_anchors = array( + 'filename' => '#filename-prefix', + 'daily_cron' => '#schedule-updates', + 'indexes' => '#enable-sitemap-indexes', + 'paginate' => '#enable-sitemap-indexes', + 'max_posts' => '#enable-sitemap-indexes', + 'posttypes' => '#post-types-and-taxonomies', + 'taxonomies' => '#post-types-and-taxonomies', + 'archive' => '#include-archive-pages', + 'author' => '#include-archive-pages', + 'gzipped' => '#create-compressed-sitemap', + 'robots' => '#link-from-virtual-robots', + 'rewrite' => '#dynamically-generate-sitemap', + 'addl_url' => '#additional-pages', + 'addl_prio' => '#additional-pages', + 'addl_freq' => '#additional-pages', + 'addl_mod' => '#additional-pages', + 'excl_categories' => '#excluded-items', + 'excl_pages' => '#excluded-items', + ); + + $this->default_options = array( + 'filename' => array( + 'name' => __( 'Filename Prefix', 'all-in-one-seo-pack' ), + 'default' => 'sitemap', + 'type' => 'text', + 'sanitize' => 'filename', + ), + 'daily_cron' => array( + 'name' => __( 'Schedule Updates', 'all-in-one-seo-pack' ), + 'type' => 'select', + 'initial_options' => array( + 0 => __( 'No Schedule', 'all-in-one-seo-pack' ), + 'daily' => __( 'Daily', 'all-in-one-seo-pack' ), + 'weekly' => __( 'Weekly', 'all-in-one-seo-pack' ), + 'monthly' => __( 'Monthly', 'all-in-one-seo-pack' ), + ), + 'default' => 0, + ), + 'indexes' => array( 'name' => __( 'Enable Sitemap Indexes', 'all-in-one-seo-pack' ) ), + 'paginate' => array( + 'name' => __( 'Paginate Sitemap Indexes', 'all-in-one-seo-pack' ), + 'condshow' => array( "{$this->prefix}indexes" => 'on' ), + ), + 'max_posts' => array( + 'name' => __( 'Maximum Posts Per Sitemap', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'default' => 50000, + 'condshow' => array( "{$this->prefix}indexes" => 'on', "{$this->prefix}paginate" => 'on' ), + ), + 'posttypes' => array( + 'name' => __( 'Post Types', 'all-in-one-seo-pack' ), + 'type' => 'multicheckbox', + 'default' => 'all', + ), + 'taxonomies' => array( + 'name' => __( 'Taxonomies', 'all-in-one-seo-pack' ), + 'type' => 'multicheckbox', + 'default' => 'all', + ), + 'archive' => array( 'name' => __( 'Include Date Archive Pages', 'all-in-one-seo-pack' ) ), + 'author' => array( 'name' => __( 'Include Author Pages', 'all-in-one-seo-pack' ) ), + 'gzipped' => array( + 'name' => __( 'Create Compressed Sitemap', 'all-in-one-seo-pack' ), + 'default' => 'On', + ), + 'robots' => array( + 'name' => __( 'Link From Virtual Robots.txt', 'all-in-one-seo-pack' ), + 'default' => 'On', + ), + 'rewrite' => array( + 'name' => __( 'Dynamically Generate Sitemap', 'all-in-one-seo-pack' ), + 'default' => 'On', + ), + ); + + $status_options = array( + 'link' => array( 'default' => '', 'type' => 'html', 'label' => 'none', 'save' => false ), + ); + + $this->layout = array( + 'status' => array( + 'name' => __( 'Sitemap Status', 'all-in-one-seo-pack' ), + 'help_link' => 'https://semperplugins.com/documentation/xml-sitemaps-module/', + 'options' => array_keys( $status_options ), + ), + 'default' => array( + 'name' => $this->name, + 'help_link' => 'https://semperplugins.com/documentation/xml-sitemaps-module/', + 'options' => array_keys( $this->default_options ), + ), + ); + + $prio = array(); + for ( $i = 0; $i <= 10; $i ++ ) { + $str = sprintf( '%0.1f', $i / 10.0 ); + $prio[ $str ] = $str; + } + $arr_no = array( 'no' => __( 'Do Not Override', 'all-in-one-seo-pack' ) ); + $arr_sel = array( 'sel' => __( 'Select Individual', 'all-in-one-seo-pack' ) ); + $this->prio_sel = array_merge( $arr_no, $arr_sel, $prio ); + $this->prio = array_merge( $arr_no, $prio ); + + $freq = array(); + foreach ( array( 'always', 'hourly', 'daily', 'weekly', 'monthly', 'yearly', 'never' ) as $f ) { + $freq[ $f ] = $f; + } + $this->freq_sel = array_merge( $arr_no, $arr_sel, $freq ); + $this->freq = array_merge( $arr_no, $freq ); + + foreach ( + array( + 'prio' => __( 'priority', 'all-in-one-seo-pack' ), + 'freq' => __( 'frequency', 'all-in-one-seo-pack' ), + ) as $k => $v + ) { + $s = "{$k}_options"; + $$s = array(); + foreach ( + array( + 'homepage' => __( 'homepage', 'all-in-one-seo-pack' ), + 'post' => __( 'posts', 'all-in-one-seo-pack' ), + 'taxonomies' => __( 'taxonomies', 'all-in-one-seo-pack' ), + 'archive' => __( 'archive pages', 'all-in-one-seo-pack' ), + 'author' => __( 'author pages', 'all-in-one-seo-pack' ), + ) as $opt => $val + ) { + $arr = $$s; + if ( ( 'post' === $opt ) || ( 'taxonomies' === $opt ) ) { + $iopts = $this->{"{$k}_sel"}; + } else { + $iopts = $this->$k; + } + + $arr[ $k . '_' . $opt ] = array( + 'name' => $this->ucwords( $val ), + 'help_text' => sprintf( __( 'Manually set the %s of your %s.', 'all-in-one-seo-pack' ), $v, $val ), + 'type' => 'select', + 'initial_options' => $iopts, + 'default' => 'no', + ); + if ( ( 'archive' === $opt ) || ( 'author' === $opt ) ) { + $arr[ $k . '_' . $opt ]['condshow'] = array( $this->prefix . $opt => 'on' ); + } + $$s = $arr; + } + } + + $addl_options = array( + 'addl_instructions' => array( + 'default' => '
      ' . __( 'Enter information below for any additional links for your sitemap not already managed through WordPress.', 'all-in-one-seo-pack' ) . '

      ', + 'type' => 'html', + 'label' => 'none', + 'save' => false, + ), + 'addl_url' => array( + 'name' => __( 'Page URL', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'label' => 'top', + 'save' => false, + ), + 'addl_prio' => array( + 'name' => __( 'Page Priority', 'all-in-one-seo-pack' ), + 'type' => 'select', + 'initial_options' => $prio, + 'label' => 'top', + 'save' => false, + ), + 'addl_freq' => array( + 'name' => __( 'Page Frequency', 'all-in-one-seo-pack' ), + 'type' => 'select', + 'initial_options' => $freq, + 'label' => 'top', + 'save' => false, + ), + 'addl_mod' => array( + 'name' => __( 'Last Modified', 'all-in-one-seo-pack' ), + 'type' => 'text', + 'label' => 'top', + 'save' => false, + ), + 'addl_pages' => array( + 'name' => __( 'Additional Pages', 'all-in-one-seo-pack' ), + 'type' => 'custom', + 'save' => true, + ), + 'Submit' => array( + 'type' => 'submit', + 'class' => 'button-primary', + 'name' => __( 'Add URL', 'all-in-one-seo-pack' ) . ' »', + 'style' => 'margin-left: 20px;', + 'label' => 'none', + 'save' => false, + 'value' => 1, + ), + ); + + $excl_options = array( + 'excl_categories' => array( + 'name' => __( 'Excluded Categories', 'all-in-one-seo-pack' ), + 'type' => 'multicheckbox', + 'initial_options' => '', + ), + 'excl_pages' => array( 'name' => __( 'Excluded Pages', 'all-in-one-seo-pack' ), 'type' => 'text' ), + ); + + $this->layout['addl_pages'] = array( + 'name' => __( 'Additional Pages', 'all-in-one-seo-pack' ), + 'help_link' => 'https://semperplugins.com/documentation/xml-sitemaps-module/#additional-pages', + 'options' => array_keys( $addl_options ), + ); + + $this->layout['excl_pages'] = array( + 'name' => __( 'Excluded Items', 'all-in-one-seo-pack' ), + 'help_link' => 'https://semperplugins.com/documentation/xml-sitemaps-module/#excluded-items', + 'options' => array_keys( $excl_options ), + ); + + $this->layout['priorities'] = array( + 'name' => __( 'Priorities', 'all-in-one-seo-pack' ), + 'help_link' => 'https://semperplugins.com/documentation/xml-sitemaps-module/#priorities-and-frequencies', + 'options' => array_keys( $prio_options ), + ); + + $this->layout['frequencies'] = array( + 'name' => __( 'Frequencies', 'all-in-one-seo-pack' ), + 'help_link' => 'https://semperplugins.com/documentation/xml-sitemaps-module/#priorities-and-frequencies', + 'options' => array_keys( $freq_options ), + ); + + $this->default_options = array_merge( $status_options, $this->default_options, $addl_options, $excl_options, $prio_options, $freq_options ); + + $this->add_help_text_links(); + + add_action( 'after_doing_aioseop_updates', array( + $this, + 'do_sitemaps', + ) ); // Update static sitemap when AIOSEOP is upgrade to new version. + add_action( 'init', array( $this, 'load_sitemap_options' ) ); + add_action( $this->prefix . 'settings_update', array( $this, 'do_sitemaps' ) ); + add_filter( $this->prefix . 'display_settings', array( $this, 'update_post_data' ) ); + add_filter( $this->prefix . 'display_options', array( $this, 'filter_display_options' ) ); + add_filter( $this->prefix . 'update_options', array( $this, 'filter_options' ) ); + add_filter( $this->prefix . 'output_option', array( $this, 'display_custom_options' ), 10, 2 ); + add_action( $this->prefix . 'daily_update_cron', array( $this, 'daily_update' ) ); + add_action( 'init', array( $this, 'make_dynamic_xsl' ) ); + add_action( 'transition_post_status', array( $this, 'update_sitemap_from_posts' ), 10, 3 ); + add_action( 'after_doing_aioseop_updates', array( $this, 'scan_sitemaps' ) ); + } + + + /** + * Update sitemap from posts. + * + * @param $new_status + * @param $old_status + * @param $post + */ + function update_sitemap_from_posts( $new_status, $old_status, $post ) { + + if ( $this->option_isset( 'rewrite' ) ) { + // TODO if dynamic, delete transient (we currently don't do transients). + return; + } + + $posttypes = array(); + if ( ! empty( $this->options["{$this->prefix}posttypes"] ) ) { + $posttypes = $this->options["{$this->prefix}posttypes"]; + } + + if ( ! in_array( $post->post_type, $posttypes, true ) ) { + return; + } + + $statuses_for_updating = array( 'new', 'publish', 'trash' ); + if ( ! in_array( $new_status, $statuses_for_updating, true ) ) { + return; + } + + $this->do_sitemaps(); + } + + /** + * Add cron schedules. + * + * Add new intervals of a week and a month. + * + * @link https://codex.wordpress.org/Plugin_API/Filter_Reference/cron_schedules + * + * @param $schedules + * + * @return mixed + */ + function add_cron_schedules( $schedules ) { + $schedules['weekly'] = array( + 'interval' => 604800, // 1 week in seconds. + 'display' => __( 'Once Weekly', 'all-in-one-seo-pack' ), + ); + $schedules['monthly'] = array( + 'interval' => 2629740, // 1 month in seconds. + 'display' => __( 'Once Monthly', 'all-in-one-seo-pack' ), + ); + + return $schedules; + } + + /** + * Cron update. + */ + function cron_update() { + add_filter( 'cron_schedules', array( $this, 'add_cron_schedules' ) ); + if ( ! wp_next_scheduled( $this->prefix . 'daily_update_cron' ) ) { + wp_schedule_event( time(), $this->options[ $this->prefix . 'daily_cron' ], $this->prefix . 'daily_update_cron' ); + } + } + + /** + * Daily update. + */ + function daily_update() { + $last_run = get_option( $this->prefix . 'cron_last_run' ); + if ( empty( $last_run ) || ( time() - $last_run > 23.5 * 60 * 60 ) ) { + // Sanity check. + $this->do_sitemaps( __( 'Daily scheduled sitemap check has finished.', 'all-in-one-seo-pack' ) ); + } + $last_run = time(); + update_option( $this->prefix . 'cron_last_run', $last_run ); + } + + /** + * Initialize options, after constructor. + */ + function load_sitemap_options() { + // Load initial options / set defaults. + $this->update_options(); + if ( ! empty( $this->options["{$this->prefix}indexes"] ) && ! empty( $this->options["{$this->prefix}paginate"] ) ) { + $this->paginate = true; + if ( $this->options["{$this->prefix}max_posts"] && ( $this->options["{$this->prefix}max_posts"] > 0 ) && ( $this->options["{$this->prefix}max_posts"] < 50000 ) ) { + $this->max_posts = $this->options["{$this->prefix}max_posts"]; + } + } + + if ( is_multisite() ) { + $this->options["{$this->prefix}rewrite"] = 'On'; + } + + if ( $this->options["{$this->prefix}rewrite"] ) { + $this->setup_rewrites(); + } + + if ( $this->option_isset( 'robots' ) ) { + add_action( 'do_robots', array( $this, 'do_robots' ), 100 ); + } + + if ( isset( $this->options[ $this->prefix . 'daily_cron' ] ) && $this->options[ $this->prefix . 'daily_cron' ] ) { + add_action( 'wp', array( $this, 'cron_update' ) ); + } else { + if ( $time = wp_next_scheduled( $this->prefix . 'daily_update_cron' ) ) { + wp_unschedule_event( $time, $this->prefix . 'daily_update_cron' ); + } + } + } + + /** + * Custom settings. + * + * Displays boxes for add pages to sitemap option. Requires WordPress 4.1. + * + * @param $buf + * @param $args + * + * @return string + */ + function display_custom_options( $buf, $args ) { + if ( "{$this->prefix}addl_pages" === $args['name'] ) { + $buf .= "
      "; + if ( ! empty( $args['value'] ) ) { + $buf .= "\n"; + foreach ( $args['value'] as $k => $v ) { + if ( is_object( $v ) ) { + $v = (Array) $v; + } + $buf .= "\t\n"; + } + $buf .= "
      {$k}{$v['prio']}{$v['freq']}{$v['mod']}
      \n"; + } + } + $args['options']['type'] = 'hidden'; + if ( ! empty( $args['value'] ) ) { + $args['value'] = wp_json_encode( $args['value'] ); + } else { + $args['options']['type'] = 'html'; + } + if ( empty( $args['value'] ) ) { + $args['value'] = ''; + } + $buf .= $this->get_option_html( $args ); + $buf .= '
      '; + + return $buf; + } + + /** + * Add post type details for settings once post types have been registered. + */ + function add_post_types() { + $post_type_titles = $this->get_post_type_titles( array( 'public' => true ) ); + $taxonomy_titles = $this->get_taxonomy_titles( array( 'public' => true ) ); + if ( isset( $post_type_titles['attachment'] ) ) { + $post_type_titles['attachment'] = __( 'Media / Attachments', 'all-in-one-seo-pack' ); + } + $this->default_options['posttypes']['initial_options'] = array_merge( array( 'all' => __( 'All Post Types', 'all-in-one-seo-pack' ) ), $post_type_titles ); + $this->default_options['taxonomies']['initial_options'] = array_merge( array( 'all' => __( 'All Taxonomies', 'all-in-one-seo-pack' ) ), $taxonomy_titles ); + $this->default_options['posttypes']['default'] = array_keys( $this->default_options['posttypes']['initial_options'] ); + $this->default_options['taxonomies']['default'] = array_keys( $this->default_options['taxonomies']['initial_options'] ); + $this->default_options['excl_categories']['initial_options'] = $this->get_category_titles(); + $prio_help = __( 'Manually set the priority for the ', 'all-in-one-seo-pack' ); + $freq_help = __( 'Manually set the frequency for the ', 'all-in-one-seo-pack' ); + $post_name = __( ' Post Type', 'all-in-one-seo-pack' ); + $tax_name = __( ' Taxonomy', 'all-in-one-seo-pack' ); + foreach ( $post_type_titles as $k => $v ) { + $key = 'prio_post_' . $k; + $this->default_options = aioseop_array_insert_after( $this->default_options, 'prio_post', array( + $key => array( + 'name' => $v . $post_name, + 'help_text' => $prio_help . $v . $post_name, + 'type' => 'select', + 'initial_options' => $this->prio, + 'default' => 'no', + 'condshow' => array( "{$this->prefix}prio_post" => 'sel' ), + ), + ) ); + $this->layout['priorities']['options'][] = $key; + $key = 'freq_post_' . $k; + $this->default_options = aioseop_array_insert_after( $this->default_options, 'freq_post', array( + $key => array( + 'name' => $v . $post_name, + 'help_text' => $freq_help . $v . $post_name, + 'type' => 'select', + 'initial_options' => $this->freq, + 'default' => 'no', + 'condshow' => array( "{$this->prefix}freq_post" => 'sel' ), + ), + ) ); + $this->layout['frequencies']['options'][] = $key; + } + foreach ( $taxonomy_titles as $k => $v ) { + $key = 'prio_taxonomies_' . $k; + $this->default_options = aioseop_array_insert_after( $this->default_options, 'prio_taxonomies', array( + $key => array( + 'name' => $v . $tax_name, + 'help_text' => $prio_help . $v . $tax_name, + 'type' => 'select', + 'initial_options' => $this->prio, + 'default' => 'no', + 'condshow' => array( "{$this->prefix}prio_taxonomies" => 'sel' ), + ), + ) ); + $this->layout['priorities']['options'][] = $key; + $key = 'freq_taxonomies_' . $k; + $this->default_options = aioseop_array_insert_after( $this->default_options, 'freq_taxonomies', array( + $key => array( + 'name' => $v . $tax_name, + 'help_text' => $freq_help . $v . $tax_name, + 'type' => 'select', + 'initial_options' => $this->freq, + 'default' => 'no', + 'condshow' => array( "{$this->prefix}freq_taxonomies" => 'sel' ), + ), + ) ); + $this->layout['frequencies']['options'][] = $key; + } + $this->update_options(); + } + + /** + * Set up settings, checking for sitemap conflicts, on settings page. + */ + function add_page_hooks() { + $this->flush_rules_hook(); + $this->add_post_types(); + parent::add_page_hooks(); + add_action( $this->prefix . 'settings_header', array( $this, 'do_sitemap_scan' ), 5 ); + add_filter( "{$this->prefix}submit_options", array( $this, 'filter_submit' ) ); + } + + /** + * Filter submit button. + * + * Change settings page submit button to read "Update Sitemap". + * + * @param $submit + * + * @return mixed + */ + function filter_submit( $submit ) { + $submit['Submit']['value'] = __( 'Update Sitemap', 'all-in-one-seo-pack' ) . ' »'; + + return $submit; + } + + /** + * Updates post data. + * + * Disable writing sitemaps to the filesystem for multisite. + * + * @param $options + * + * @return mixed + */ + function update_post_data( $options ) { + if ( is_multisite() ) { + $options[ $this->prefix . 'rewrite' ]['disabled'] = 'disabled'; + } + + return $options; + } + + /** + * @param $url + * + * @return bool + */ + function get_rewrite_url( $url ) { + global $wp_rewrite; + $url = parse_url( esc_url( $url ), PHP_URL_PATH ); + $url = ltrim( $url, '/' ); + if ( ! empty( $wp_rewrite ) ) { + $rewrite_rules = $wp_rewrite->rewrite_rules(); + foreach ( $rewrite_rules as $k => $v ) { + if ( preg_match( "@^$k@", $url ) ) { + return $v; + } + } + } + + return false; + } + + /** + * Filter display options. + * + * Add in options for status display on settings page, sitemap rewriting on multisite. + * + * @param $options + * + * @return mixed + */ + function filter_display_options( $options ) { + if ( is_multisite() ) { + $options[ $this->prefix . 'rewrite' ] = 'On'; + } + if ( isset( $options[ $this->prefix . 'max_posts' ] ) && ( ( $options[ $this->prefix . 'max_posts' ] <= 0 ) || ( $options[ $this->prefix . 'max_posts' ] >= 50000 ) ) ) { + $options[ $this->prefix . 'max_posts' ] = 50000; + } + $url = trailingslashit( get_home_url() ) . $options[ $this->prefix . 'filename' ] . '.xml'; + + $options[ $this->prefix . 'link' ] = sprintf( __( 'Click here to %s.', 'all-in-one-seo-pack' ), '' . __( 'view your sitemap', 'all-in-one-seo-pack' ) . '' ); + $options[ $this->prefix . 'link' ] .= __( ' Your sitemap has been created', 'all-in-one-seo-pack' ); + if ( '0' !== get_option( 'blog_public' ) ){ + $options[ $this->prefix . 'link' ] .= __( ' and changes are automatically submitted to search engines' ); + } + $options[ $this->prefix . 'link' ] .= '.'; + + + + + if ( $this->option_isset( 'rewrite' ) ) { + $rule = $this->get_rewrite_url( $url ); + $rules = $this->get_rewrite_rules(); + if ( ! in_array( $rule, $rules ) ) { + $options[ $this->prefix . 'link' ] .= '

      ' . __( 'Dynamic sitemap generation does not appear to be using the correct rewrite rules; please disable any other sitemap plugins or functionality on your site and reset your permalinks.', 'all-in-one-seo-pack' ) . '

      '; + } + } + if ( ! get_option( 'blog_public' ) ) { + global $wp_version; + if ( version_compare( $wp_version, '3.5.0', '>=' ) || function_exists( 'set_url_scheme' ) ) { + $privacy_link = '' . __( 'Reading Settings', 'all-in-one-seo-pack' ) . ''; + } else { + $privacy_link = '' . __( 'Privacy Settings', 'all-in-one-seo-pack' ) . ''; + } + $options[ $this->prefix . 'link' ] .= '

      ' . sprintf( __( 'Warning: your privacy settings are configured to ask search engines to not index your site; you can change this under %s for your blog.', 'all-in-one-seo-pack' ), $privacy_link ); + } + return $options; + } + + /** + * Filter options. + * + * Handle 'all' option for post types / taxonomies, further sanitization of filename, rewrites on for multisite, setting up addl pages option. + * + * @param $options + * + * @return mixed + */ + function filter_options( $options ) { + if ( ! isset( $this->default_options['posttypes']['initial_options'] ) ) { + $this->add_post_types(); + } + if ( is_array( $options["{$this->prefix}posttypes"] ) && in_array( 'all', $options["{$this->prefix}posttypes"] ) && is_array( $this->default_options['posttypes']['initial_options'] ) ) { + $options["{$this->prefix}posttypes"] = array_keys( $this->default_options['posttypes']['initial_options'] ); + } + if ( is_array( $options["{$this->prefix}taxonomies"] ) && in_array( 'all', $options["{$this->prefix}taxonomies"] ) && is_array( $this->default_options['taxonomies']['initial_options'] ) ) { + $options["{$this->prefix}taxonomies"] = array_keys( $this->default_options['taxonomies']['initial_options'] ); + } + $opt = $this->prefix . 'filename'; + if ( isset( $options[ $opt ] ) && ! empty( $options[ $opt ] ) ) { + $options[ $opt ] = str_replace( '/', '', $options[ $opt ] ); + } else { + $options[ $opt ] = 'sitemap'; + } + if ( is_multisite() ) { + $options[ $this->prefix . 'rewrite' ] = 'On'; + } + if ( ! is_array( $options[ $this->prefix . 'addl_pages' ] ) ) { + $options[ $this->prefix . 'addl_pages' ] = wp_specialchars_decode( stripslashes_deep( $options[ $this->prefix . 'addl_pages' ] ), ENT_QUOTES ); + $decoded = json_decode( $options[ $this->prefix . 'addl_pages' ] ); + if ( null === $decoded ) { + $decoded = maybe_unserialize( $options[ $this->prefix . 'addl_pages' ] ); + } + if ( ! is_array( $decoded ) ) { + $decoded = (Array) $decoded; + } + if ( null === $decoded ) { + $decoded = $options[ $this->prefix . 'addl_pages' ]; + } + $options[ $this->prefix . 'addl_pages' ] = $decoded; + } + if ( is_array( $options[ $this->prefix . 'addl_pages' ] ) ) { + foreach ( $options[ $this->prefix . 'addl_pages' ] as $k => $v ) { + if ( is_object( $v ) ) { + $options[ $this->prefix . 'addl_pages' ][ $k ] = (Array) $v; + } + } + } + if ( isset( $options[ $this->prefix . 'addl_pages' ][0] ) ) { + unset( $options[ $this->prefix . 'addl_pages' ][0] ); + } + // TODO Refactor all these... use a nonce, dump the incoming _Post into an array and use that. + if ( ! empty( $_POST[ $this->prefix . 'addl_url' ] ) ) { + foreach ( array( 'addl_url', 'addl_prio', 'addl_freq', 'addl_mod' ) as $field ) { + if ( ! empty( $_POST[ $this->prefix . $field ] ) ) { + $_POST[ $this->prefix . $field ] = esc_attr( wp_kses_post( $_POST[ $this->prefix . $field ] ) ); + } else { + $_POST[ $this->prefix . $field ] = ''; + } + } + if ( ! is_array( $options[ $this->prefix . 'addl_pages' ] ) ) { + $options[ $this->prefix . 'addl_pages' ] = array(); + } + $options[ $this->prefix . 'addl_pages' ][ $_POST[ $this->prefix . 'addl_url' ] ] = array( + 'prio' => $_POST[ $this->prefix . 'addl_prio' ], + 'freq' => $_POST[ $this->prefix . 'addl_freq' ], + 'mod' => $_POST[ $this->prefix . 'addl_mod' ], + ); + } + + return $options; + } + + /** + * Get sitemap urls of child blogs, if any. + * + * @return mixed|void + */ + function get_child_sitemap_urls() { + $siteurls = array(); + $blogs = $this->get_child_blogs(); + if ( ! empty( $blogs ) ) { + $option_name = $this->get_option_name(); + foreach ( $blogs as $blog_id ) { + if ( $this->is_aioseop_active_on_blog( $blog_id ) ) { + $options = get_blog_option( $blog_id, $this->parent_option ); + if ( ! empty( $options ) && ! empty( $options['modules'] ) && ! empty( $options['modules']['aiosp_feature_manager_options'] ) + && ! empty( $options['modules']['aiosp_feature_manager_options']['aiosp_feature_manager_enable_sitemap'] ) + && ! empty( $options['modules'][ $option_name ] ) + ) { + global $wpdb; + $sitemap_options = $options['modules'][ $option_name ]; + $siteurl = ''; + if ( defined( 'SUNRISE' ) && SUNRISE && is_object( $wpdb ) && isset( $wpdb->dmtable ) && ! empty( $wpdb->dmtable ) ) { + $domain = $wpdb->get_var( "SELECT domain FROM {$wpdb->dmtable} WHERE blog_id = '$blog_id' AND active = 1 LIMIT 1" ); + if ( $domain ) { + if ( false == isset( $_SERVER['HTTPS'] ) ) { + $_SERVER['HTTPS'] = 'Off'; + } + $protocol = ( 'on' == strtolower( $_SERVER['HTTPS'] ) ) ? 'https://' : 'http://'; + $siteurl = untrailingslashit( $protocol . $domain ); + } + } + if ( ! $siteurl ) { + $siteurl = get_home_url( $blog_id ); + } + $url = $siteurl . '/' . $sitemap_options["{$this->prefix}filename"] . '.xml'; + if ( $sitemap_options["{$this->prefix}gzipped"] ) { + $url .= '.gz'; + } + $siteurls[] = $url; + } + } + } + } + $siteurls = apply_filters( $this->prefix . 'sitemap_urls', $siteurls ); // Legacy. + return apply_filters( $this->prefix . 'child_urls', $siteurls ); + } + + /** + * Gets the home path. + * + * If we're in wp-admin, use the WordPress function, otherwise we user our own version here. + * This only applies to static sitemaps. + * + * @since 2.3.6.1 + * + * @return mixed|string + */ + function get_home_path() { + + if ( function_exists( 'get_home_path' ) ) { + return get_home_path(); + } + + $home = set_url_scheme( get_option( 'home' ), 'http' ); + $siteurl = set_url_scheme( get_option( 'siteurl' ), 'http' ); + if ( ! empty( $home ) && 0 !== strcasecmp( $home, $siteurl ) ) { + $wp_path_rel_to_home = str_ireplace( $home, '', $siteurl ); /* $siteurl - $home */ + $pos = strripos( str_replace( '\\', '/', $_SERVER['SCRIPT_FILENAME'] ), trailingslashit( $wp_path_rel_to_home ) ); + $home_path = substr( $_SERVER['SCRIPT_FILENAME'], 0, $pos ); + $home_path = trailingslashit( $home_path ); + } else { + $home_path = ABSPATH; + } + + return str_replace( '\\', '/', $home_path ); + } + + /** + * Whitelists files from static sitemap conflict warning. + * + * For right now, this is just externally produced news sitemaps until we figure out something better. + * + * @param $file + * + * @since 2.3.10.2 + * + * @return string + */ + function whitelist_static_sitemaps( $file ) { + + $whitelist = array( 'sitemap_news.xml', 'sitemap-news.xml' ); + + if ( in_array( $file, $whitelist, true ) ) { + return ''; + } + + return $file; + } + + /** + * Scan for sitemaps on filesystem. + * + * @return array + */ + function scan_match_files() { + $scan1 = $scan2 = ''; + $files = array(); + + if ( ! empty( $this->options["{$this->prefix}filename"] ) ) { + $scan1 = get_home_path() . $this->options["{$this->prefix}filename"] . '*.xml'; + if ( ! empty( $this->options["{$this->prefix}gzipped"] ) ) { + $scan2 .= get_home_path() . $this->options["{$this->prefix}filename"] . '*.xml.gz'; + } + + if ( empty( $scan1 ) && empty( $scan2 ) ) { + return $files; + } + $home_path = get_home_path(); + $filescan = $this->scandir( $home_path ); + if ( ! empty( $filescan ) ) { + foreach ( $filescan as $f ) { + if ( ! empty( $scan1 ) && fnmatch( $scan1, $home_path . $f ) ) { + + $f = $this->whitelist_static_sitemaps( $f ); + $files[] = $home_path . $f; + continue; + } + if ( ! empty( $scan2 ) && fnmatch( $scan2, $home_path . $f ) ) { + $files[] = $home_path . $f; + } + } + } + + return $files; + } + } + + /** + * Scan for sitemaps. + * + * Handle deleting / renaming of conflicting sitemap files. + */ + function do_sitemap_scan() { + $msg = ''; + if ( ! empty( $this->options["{$this->prefix}rewrite"] ) && ( get_option( 'permalink_structure' ) === '' ) ) { + $msg = '

      ' . __( 'Warning: dynamic sitemap generation must have permalinks enabled.', 'all-in-one-seo-pack' ) . '

      '; + } + if ( ! empty( $_POST['aioseop_sitemap_rename_files'] ) || ! empty( $_POST['aioseop_sitemap_delete_files'] ) ) { + $nonce = $_POST['nonce-aioseop']; + if ( ! wp_verify_nonce( $nonce, 'aioseop-nonce' ) ) { + die ( __( 'Security Check - If you receive this in error, log out and back in to WordPress', 'all-in-one-seo-pack' ) ); + } + if ( ! empty( $_POST['aioseop_sitemap_conflict'] ) ) { + $files = $this->scan_match_files(); + foreach ( $files as $f => $file ) { + $files[ $f ] = realpath( $file ); + } + foreach ( $_POST['aioseop_sitemap_conflict'] as $ren_file ) { + $ren_file = realpath( get_home_path() . $ren_file ); + if ( in_array( $ren_file, $files ) ) { + if ( ! empty( $_POST['aioseop_sitemap_delete_files'] ) ) { + if ( $this->delete_file( $ren_file ) ) { + $msg .= '

      ' . sprintf( __( 'Deleted %s.', 'all-in-one-seo-pack' ), $ren_file ) . '

      '; + } + continue; + } + $count = 0; + do { + $ren_to = $ren_file . '._' . sprintf( '%03d', $count ) . '.old'; + $count ++; + } while ( $this->file_exists( $ren_to ) && ( $count < 1000 ) ); + if ( $count >= 1000 ) { + $msg .= '

      ' . sprintf( __( "Couldn't rename file %s!", 'all-in-one-seo-pack' ), $ren_file ) . '

      '; + } else { + $ren = $this->rename_file( $ren_file, $ren_to ); + if ( $ren ) { + $msg .= '

      ' . sprintf( __( 'Renamed %s to %s.', 'all-in-one-seo-pack' ), $ren_file, $ren_to ) . '

      '; + } + } + } else { + $msg .= '

      ' . sprintf( __( "Couldn't find file %s!", 'all-in-one-seo-pack' ), $ren_file ) . '

      '; + } + } + } + } else { + $msg .= $this->scan_sitemaps(); + } + + if ( ! empty( $msg ) ) { + $this->output_error( $msg ); + } + } + + /** + * Do the scan, return the results. + * + * @return string + */ + function scan_sitemaps() { + $msg = ''; + $files = $this->scan_match_files(); + if ( ! empty( $files ) ) { + $msg = $this->sitemap_warning( $files ); + } + + return $msg; + } + + /** + * Get problem files. + * + * Get the list of potentially conflicting sitemap files, identify whether they came from us, are blank, or are of unknown origin. + * + * @param $files + * @param $msg + * + * In 2.3.10 we added the ability to see empty sitemap files as well. + * + * @return array + */ + function get_problem_files( $files, &$msg ) { + $problem_files = array(); + $use_wpfs = true; + $wpfs = $this->get_filesystem_object(); + if ( ! is_object( $wpfs ) ) { + $use_wpfs = false; + } else { + if ( 'direct' === $wpfs->method ) { + $use_wpfs = false; + } + } + + foreach ( $files as $f ) { + if ( $this->is_file( $f ) ) { + $fn = $f; + $compressed = false; + if ( $this->substr( $f, - 3 ) === '.gz' ) { + $compressed = true; + } + if ( $use_wpfs ) { + if ( $compressed ) { // Inefficient but necessary. + $file = $this->load_file( $fn ); + if ( ! empty( $file ) ) { + $file = gzuncompress( $file, 4096 ); + } + } else { + $file = $this->load_file( $fn, false, null, - 1, 4096 ); + } + } else { + if ( $compressed ) { + $fn = 'compress.zlib://' . $fn; + } + $file = file_get_contents( $fn, false, null, - 1, 4096 ); + } + if ( ! empty( $file ) ) { + $matches = array(); + if ( preg_match( '//', + $file, $matches ) ) { + if ( ! empty( $this->options["{$this->prefix}rewrite"] ) ) { + $msg .= '

      ' . sprintf( __( "Warning: a static sitemap '%s' generated by All in One SEO Pack %s on %s already exists that may conflict with dynamic sitemap generation.", 'all-in-one-seo-pack' ), + $f, $matches[2], $matches[3] ) . "

      \n"; + $problem_files[] = $f; + } + } else { + $msg .= '

      ' . sprintf( __( 'Potential conflict with unknown file %s.', 'all-in-one-seo-pack' ), $f ) . "

      \n"; + $problem_files[] = $f; + } + } else { + $msg .= '

      ' . sprintf( __( 'Removed empty file %s.', 'all-in-one-seo-pack' ), $f ) . "

      \n"; + $problem_files[] = $f; + + foreach ( $problem_files as $f => $file ) { + $files[ $f ] = realpath( $file ); + $this->delete_file( realpath( $file ) ); + } + $problem_files = false; // Don't return anything. If it's blank, we'll take care of it here. + } + } + } + + return $problem_files; + } + + /** + * Display sitemap warning. + * + * Display the warning and the form for conflicting sitemap files. + * + * @param $files + * + * @return string + */ + function sitemap_warning( $files ) { + $msg = ''; + $conflict = false; + $problem_files = $this->get_problem_files( $files, $msg ); + if ( ! empty( $problem_files ) ) { + $conflict = true; + } + if ( $conflict ) { + foreach ( $problem_files as $p ) { + $msg .= "\n"; + } + $msg .= "\n"; + $msg .= " "; + $msg .= ""; + $msg = '
      ' . $msg . '
      '; + } + + return $msg; + } + + /** + * Updates debug log messages. + * + * Deprecated as of 2.3.10 in favor of WP debug log. We should eventually remove this. + * + * @param $msg + */ + function debug_message( $msg ) { + aiosp_log( $msg ); + } + + /** + * Set up hooks for rewrite rules for dynamic sitemap generation. + */ + function setup_rewrites() { + add_action( 'rewrite_rules_array', array( $this, 'rewrite_hook' ) ); + add_filter( 'query_vars', array( $this, 'query_var_hook' ) ); + add_action( 'parse_query', array( $this, 'sitemap_output_hook' ) ); + if ( ! get_transient( "{$this->prefix}rules_flushed" ) ) { + add_action( 'wp_loaded', array( $this, 'flush_rules_hook' ) ); + } + } + + /** + * Build and return our rewrite rules. + * + * @return array + */ + function get_rewrite_rules() { + $sitemap_rules_normal = $sitemap_rules_gzipped = array(); + $sitemap_rules_normal = array( + $this->options["{$this->prefix}filename"] . '.xml' => "index.php?{$this->prefix}path=root", + $this->options["{$this->prefix}filename"] . '_(.+)_(\d+).xml' => 'index.php?' . $this->prefix . 'path=$matches[1]&' . $this->prefix . 'page=$matches[2]', + $this->options["{$this->prefix}filename"] . '_(.+).xml' => 'index.php?' . $this->prefix . 'path=$matches[1]', + ); + if ( $this->options["{$this->prefix}gzipped"] ) { + $sitemap_rules_gzipped = array( + $this->options["{$this->prefix}filename"] . '.xml.gz' => "index.php?{$this->prefix}gzipped=1&{$this->prefix}path=root.gz", + $this->options["{$this->prefix}filename"] . '_(.+)_(\d+).xml.gz' => 'index.php?' . $this->prefix . 'path=$matches[1].gz&' . $this->prefix . 'page=$matches[2]', + $this->options["{$this->prefix}filename"] . '_(.+).xml.gz' => 'index.php?' . $this->prefix . 'path=$matches[1].gz', + ); + } + $sitemap_rules = $sitemap_rules_gzipped + $sitemap_rules_normal; + + return $sitemap_rules; + } + + /** + * Add in our rewrite rules. + * + * @param $rules + * + * @return array + */ + function rewrite_hook( $rules ) { + $sitemap_rules = $this->get_rewrite_rules(); + if ( ! empty( $sitemap_rules ) ) { + $rules = $sitemap_rules + $rules; + } + + return $rules; + } + + /** + * Flush rewrite rules when necessary. + */ + function flush_rules_hook() { + global $wp_rewrite; + $sitemap_rules = $this->get_rewrite_rules( $wp_rewrite ); + if ( ! empty( $sitemap_rules ) ) { + $rules = get_option( 'rewrite_rules' ); + $rule = key( $sitemap_rules ); + if ( ! isset( $rules[ $rule ] ) || ( $rules[ $rule ] !== $sitemap_rules[ $rule ] ) ) { + $wp_rewrite->flush_rules(); + set_transient( "{$this->prefix}rules_flushed", true, 43200 ); + } + } + } + + /** + * Add our query variable for sitemap generation. + * + * @param $vars + * + * @return array + */ + function query_var_hook( $vars ) { + $vars[] = "{$this->prefix}path"; + if ( $this->paginate ) { + $vars[] = "{$this->prefix}page"; + } + + return $vars; + } + + /** + * Start timing and get initial memory usage for debug info. + */ + function log_start() { + $this->start_memory_usage = memory_get_peak_usage(); + timer_start(); + } + + + /** + * Stop timing and log memory usage for debug info. + * + * @param string $sitemap_type + * @param bool $compressed + * @param bool $dynamic + */ + function log_stats( $sitemap_type = 'static', $compressed = false, $dynamic = true ) { + $time = timer_stop(); + $end_memory_usage = memory_get_peak_usage(); + $sitemap_memory_usage = $end_memory_usage - $this->start_memory_usage; + $end_memory_usage = $end_memory_usage / 1024.0 / 1024.0; + $sitemap_memory_usage = $sitemap_memory_usage / 1024.0 / 1024.0; + $sitemap_type = __( 'static', 'all-in-one-seo-pack ' ); + if ( $compressed ) { + $sitemap_type = __( 'compressed', 'all-in-one-seo-pack' ); + } + if ( $dynamic ) { + $sitemap_type = __( 'dynamic', 'all-in-one-seo-pack ' ); + } + $this->debug_message( sprintf( ' %01.2f MB memory used generating the %s sitemap in %01.3f seconds, %01.2f MB total memory used.', $sitemap_memory_usage, $sitemap_type, $time, $end_memory_usage ) ); + } + + /** + * Handle outputting of dynamic sitemaps, logging. + * + * @param $query + */ + function sitemap_output_hook( $query ) { + $page = 0; + if ( $this->options["{$this->prefix}rewrite"] && ! empty( $query->query_vars["{$this->prefix}path"] ) ) { + + // Make dynamic sitemap. + + if ( ! empty( $query->query_vars["{$this->prefix}page"] ) ) { + $page = $query->query_vars["{$this->prefix}page"] - 1; + } + $this->start_memory_usage = memory_get_peak_usage(); + $sitemap_type = $query->query_vars["{$this->prefix}path"]; + $gzipped = false; + if ( $this->substr( $sitemap_type, - 3 ) === '.gz' ) { + $gzipped = true; + $sitemap_type = $this->substr( $sitemap_type, 0, - 3 ); + } + $blog_charset = get_option( 'blog_charset' ); + if ( $this->options["{$this->prefix}gzipped"] && $gzipped ) { + header( "Content-Type: application/x-gzip; charset=$blog_charset", true ); + } else { + $gzipped = false; + header( "Content-Type: text/xml; charset=$blog_charset", true ); + } + + // Always follow and noindex the sitemap. + header( 'X-Robots-Tag: noindex, follow', true ); + + if ( $gzipped ) { + ob_start(); + } + $this->do_rewrite_sitemap( $sitemap_type, $page ); + if ( $gzipped ) { + echo gzencode( ob_get_clean() ); + } + $this->log_stats( $sitemap_type, $gzipped ); + exit(); + + + } + } + + /** + * Make dynamic xsl. + */ + function make_dynamic_xsl() { + // Make dynamic xsl file. + if ( preg_match( '#(/sitemap\.xsl)$#i', $_SERVER['REQUEST_URI'] ) ) { + $blog_charset = get_option( 'blog_charset' ); + header( "Content-Type: text/xml; charset=$blog_charset", true ); + include_once( AIOSEOP_PLUGIN_DIR . '/inc/sitemap-xsl.php' ); + exit(); + } + } + + /** + * Get sitemap data. + * + * @param $sitemap_type + * @param int $page + * + * @return mixed|void + */ + function get_sitemap_data( $sitemap_type, $page = 0 ) { + $sitemap_data = array(); + if ( $this->options["{$this->prefix}indexes"] ) { + $posttypes = $this->options["{$this->prefix}posttypes"]; + if ( empty( $posttypes ) ) { + $posttypes = array(); + } + $taxonomies = $this->options["{$this->prefix}taxonomies"]; + if ( empty( $taxonomies ) ) { + $taxonomies = array(); + } + if ( 'root' === $sitemap_type ) { + $sitemap_data = array_merge( $this->get_sitemap_index_filenames() ); + } elseif ( 'addl' === $sitemap_type ) { + $sitemap_data = $this->get_addl_pages(); + } elseif ( 'archive' === $sitemap_type && $this->option_isset( 'archive' ) ) { + $sitemap_data = $this->get_archive_prio_data(); + } elseif ( 'author' === $sitemap_type && $this->option_isset( 'author' ) ) { + $sitemap_data = $this->get_author_prio_data(); + } elseif ( in_array( $sitemap_type, $posttypes ) ) { + $sitemap_data = $this->get_all_post_priority_data( $sitemap_type, 'publish', $page ); + } elseif ( in_array( $sitemap_type, $taxonomies ) ) { + $sitemap_data = $this->get_term_priority_data( get_terms( $sitemap_type, $this->get_tax_args( $page ) ) ); + } else { + if ( is_array( $this->extra_sitemaps ) && in_array( $sitemap_type, $this->extra_sitemaps ) ) { + $sitemap_data = apply_filters( $this->prefix . 'custom_' . $sitemap_type, $sitemap_data, $page, $this_options ); + } + } + } elseif ( 'root' === $sitemap_type ) { + $sitemap_data = $this->get_simple_sitemap(); + } + + return apply_filters( $this->prefix . 'data', $sitemap_data, $sitemap_type, $page, $this->options ); + } + + /** + * Rewrite sitemap. + * + * Output sitemaps dynamically based on rewrite rules. + * + * @param $sitemap_type + * @param int $page + */ + function do_rewrite_sitemap( $sitemap_type, $page = 0 ) { + $this->add_post_types(); + $comment = 'dynamically'; + echo $this->do_build_sitemap( $sitemap_type, $page, '', $comment ); + } + + /** + * Build a url to the sitemap. + * + * @return string + */ + function get_sitemap_url() { + $url = get_home_url() . '/' . $this->options["{$this->prefix}filename"] . '.xml'; + if ( $this->options["{$this->prefix}gzipped"] ) { + $url .= '.gz'; + } + + return $url; + } + + /** + * Notify search engines, do logging. + */ + function do_notify() { + + if ( '0' === get_option( 'blog_public' ) ) { + // Don't ping search engines if blog is set to not public. + return; + } + + if ( apply_filters( 'aioseo_sitemap_ping', true ) === false ) { + // API filter hook to disable sending sitemaps to search engines. + return; + } + + $notify_url = array( + 'google' => 'https://www.google.com/webmasters/sitemaps/ping?sitemap=', + 'bing' => 'https://www.bing.com/webmaster/ping.aspx?siteMap=', + ); + + $notify_url = apply_filters( 'aioseo_sitemap_ping_urls', $notify_url ); + + $url = $this->get_sitemap_url(); + if ( ! empty( $url ) ) { + foreach ( $notify_url as $k => $v ) { + $response = wp_remote_get( $notify_url[ $k ] . urlencode( $url ) ); + if ( is_array( $response ) && ! empty( $response['response'] ) && ! empty( $response['response']['code'] ) ) { + if ( 200 != $response['response']['code'] ) { + $this->debug_message( sprintf( __( 'Failed to notify %s about changes to your sitemap at %s, error code %s.', 'all-in-one-seo-pack' ), $k, $url, $response['response']['code'] ) ); + } + } else { + $this->debug_message( sprintf( __( 'Failed to notify %s about changes to your sitemap at %s, unable to access via wp_remote_get().', 'all-in-one-seo-pack' ), $k, $url ) ); + } + } + } + } + + /** + * Add Sitemap parameter to virtual robots.txt file. + */ + function do_robots() { + $url = $this->get_sitemap_url(); + echo "\nSitemap: $url\n"; + } + + /** + * Build static sitemaps. + * + * Build static sitemaps on submit if rewrite rules are not in use, do logging. + * + * @param string $message + */ + function do_sitemaps( $message = '' ) { + if ( ! empty( $this->options["{$this->prefix}indexes"] ) && ! empty( $this->options["{$this->prefix}paginate"] ) ) { + $this->paginate = true; + if ( $this->options["{$this->prefix}max_posts"] && ( $this->options["{$this->prefix}max_posts"] > 0 ) && ( $this->options["{$this->prefix}max_posts"] < 50000 ) ) { + $this->max_posts = $this->options["{$this->prefix}max_posts"]; + } else { + $this->max_posts = 50000; + } + } else { + $this->paginate = false; + $this->max_posts = 50000; + } + if ( ! $this->options["{$this->prefix}rewrite"] ) { + if ( $this->options["{$this->prefix}indexes"] ) { + $this->do_indexed_sitemaps(); + } else { + $this->log_start(); + $comment = sprintf( "file '%s' statically", $this->options["{$this->prefix}filename"] ); + $sitemap = $this->do_simple_sitemap( $comment ); + $this->write_sitemaps( $this->options["{$this->prefix}filename"], $sitemap ); + $this->log_stats( 'root', $this->options["{$this->prefix}gzipped"], false ); + } + } else { + delete_transient( "{$this->prefix}rules_flushed" ); + } + $this->do_notify(); + if ( ! empty( $message ) && is_string( $message ) ) { + $this->debug_message( $message ); + } + } + + /** + * Add mime type. + * + * @param $mime + * + * @return mixed + */ + function add_xml_mime_type( $mime ) { + if ( ! empty( $mime ) ) { + $mime['xml'] = 'text/xml'; + } + + return $mime; + } + + /** + * Write multiple sitemaps. + * + * Write sitemaps (compressed or otherwise) to the filesystem. + * + * @param $filename + * @param $contents + */ + function write_sitemaps( $filename, $contents ) { + $this->write_sitemap( $filename . '.xml', $contents ); + if ( $this->options["{$this->prefix}gzipped"] ) { + $this->write_sitemap( $filename . '.xml.gz', $contents, true ); + } + } + + /** + * Write single sitemap. + * + * Write a single sitemap to the filesystem, handle compression. + * + * @param $filename + * @param $contents + * @param bool $gzip + * + * @return bool + */ + function write_sitemap( $filename, $contents, $gzip = false ) { + if ( $gzip ) { + $contents = gzencode( $contents ); + } + add_filter( 'upload_mimes', array( $this, 'add_xml_mime_type' ) ); + $filename = $this->get_home_path() . sanitize_file_name( $filename ); + remove_filter( 'upload_mimes', array( $this, 'add_xml_mime_type' ) ); + + return $this->save_file( $filename, $contents ); + } + + /** + * Gets the default values. + * + * Helper function for handling default values. + * + * @param $defaults + * @param $prefix + * @param $cache + * @param $item + * @param bool $nodefaults + * @param string $type + * + * @return bool + */ + function get_default_values( $defaults, $prefix, &$cache, $item, $nodefaults = false, $type = '' ) { + if ( ! empty( $cache[ $item . $type ] ) ) { + return $cache[ $item . $type ]; + } + if ( ! empty( $defaults[ $item ] ) ) { + $field = $this->prefix . $prefix . $item; + if ( $this->option_isset( $prefix . $item ) && 'no' != $this->options[ $field ] ) { + if ( ( 'sel' === $this->options[ $field ] ) && ! empty( $type ) && isset( $this->options[ $this->prefix . $prefix . $item . '_' . $type ] ) ) { + if ( 'no' == $this->options[ $this->prefix . $prefix . $item . '_' . $type ] ) { + return false; + } + if ( 'sel' === $this->options[ $this->prefix . $prefix . $item . '_' . $type ] ) { + return false; + } + $cache[ $item . $type ] = $this->options[ $this->prefix . $prefix . $item . '_' . $type ]; + } else { + if ( 'no' == $this->options[ $field ] ) { + return false; + } + if ( 'sel' === $this->options[ $field ] ) { + return false; + } + $cache[ $item . $type ] = $this->options[ $field ]; + } + + return $cache[ $item . $type ]; + } + if ( $nodefaults ) { + return false; + } + + return $defaults[ $item ]; + } + + return false; + } + + /** + * Get priority settings for sitemap entries. + * + * @param $item + * @param bool $nodefaults + * @param string $type + * + * @return bool + */ + function get_default_priority( $item, $nodefaults = false, $type = '' ) { + $defaults = array( + 'homepage' => '1.0', + 'blog' => '0.9', + 'sitemap' => '0.8', + 'post' => '0.7', + 'archive' => '0.5', + 'author' => '0.3', + 'taxonomies' => '0.3', + ); + static $cache = array(); + + return $this->get_default_values( $defaults, 'prio_', $cache, $item, $nodefaults, $type ); + } + + /** + * Get frequency settings for sitemap entries. + * + * @param $item + * @param bool $nodefaults + * @param string $type + * + * @return bool + */ + function get_default_frequency( $item, $nodefaults = false, $type = '' ) { + $defaults = array( + 'homepage' => 'always', + 'blog' => 'daily', + 'sitemap' => 'hourly', + 'post' => 'weekly', + 'archive' => 'monthly', + 'author' => 'weekly', + 'taxonomies' => 'monthly', + ); + static $cache = array(); + + return $this->get_default_values( $defaults, 'freq_', $cache, $item, $nodefaults, $type ); + } + + /** + * Build an index of sitemaps used. + * + * @return array + */ + function get_sitemap_index_filenames() { + $files = array(); + $options = $this->options; + $prefix = $options["{$this->prefix}filename"]; + $suffix = '.xml'; + if ( $options["{$this->prefix}gzipped"] ) { + $suffix .= '.gz'; + } + if ( empty( $options["{$this->prefix}posttypes"] ) ) { + $options["{$this->prefix}posttypes"] = array(); + } + if ( empty( $options["{$this->prefix}taxonomies"] ) ) { + $options["{$this->prefix}taxonomies"] = array(); + } + $options["{$this->prefix}posttypes"] = array_diff( $options["{$this->prefix}posttypes"], array( 'all' ) ); + $options["{$this->prefix}taxonomies"] = array_diff( $options["{$this->prefix}taxonomies"], array( 'all' ) ); + $url_base = trailingslashit( get_home_url() ); + $files[] = array( 'loc' => $url_base . $prefix . '_addl' . $suffix ); + if ( ! empty( $options["{$this->prefix}posttypes"] ) ) { + $prio = $this->get_default_priority( 'post' ); + $freq = $this->get_default_frequency( 'post' ); + $post_counts = $this->get_all_post_counts( array( + 'post_type' => $options["{$this->prefix}posttypes"], + 'post_status' => 'publish', + ) ); + if ( ! is_array( $post_counts ) && is_array( $options["{$this->prefix}posttypes"] ) && count( $options["{$this->prefix}posttypes"] ) == 1 ) { + $post_counts = array( $options["{$this->prefix}posttypes"][0] => $post_counts ); + } + foreach ( $options["{$this->prefix}posttypes"] as $sm ) { + if ( 0 == $post_counts[ $sm ] ) { + continue; + } + if ( $this->paginate ) { + if ( $post_counts[ $sm ] > $this->max_posts ) { + $count = 1; + for ( $post_count = 0; $post_count < $post_counts[ $sm ]; $post_count += $this->max_posts ) { + $files[] = array( + 'loc' => $url_base . $prefix . '_' . $sm . '_' . ( $count ++ ) . $suffix, + 'priority' => $prio, + 'changefreq' => $freq, + ); + } + } else { + $files[] = array( + 'loc' => $url_base . $prefix . '_' . $sm . $suffix, + 'priority' => $prio, + 'changefreq' => $freq, + ); + } + } else { + $files[] = array( + 'loc' => $url_base . $prefix . '_' . $sm . $suffix, + 'priority' => $prio, + 'changefreq' => $freq, + ); + } + } + } + if ( $this->option_isset( 'archive' ) ) { + $files[] = array( + 'loc' => $url_base . $prefix . '_archive' . $suffix, + 'priority' => $this->get_default_priority( 'archive' ), + 'changefreq' => $this->get_default_frequency( 'archive' ), + ); + } + if ( $this->option_isset( 'author' ) ) { + $files[] = array( + 'loc' => $url_base . $prefix . '_author' . $suffix, + 'priority' => $this->get_default_priority( 'author' ), + 'changefreq' => $this->get_default_frequency( 'author' ), + ); + } + + if ( ! empty( $options["{$this->prefix}taxonomies"] ) ) { + foreach ( $options["{$this->prefix}taxonomies"] as $sm ) { + $term_count = wp_count_terms( $sm, array( 'hide_empty' => true ) ); + if ( ! is_wp_error( $term_count ) && ( $term_count > 0 ) ) { + if ( $this->paginate ) { + if ( $term_count > $this->max_posts ) { + $count = 1; + for ( $tc = 0; $tc < $term_count; $tc += $this->max_posts ) { + $files[] = array( + 'loc' => $url_base . $prefix . '_' . $sm . '_' . ( $count ++ ) . $suffix, + 'priority' => $this->get_default_priority( 'taxonomies' ), + 'changefreq' => $this->get_default_frequency( 'taxonomies' ), + ); + } + } else { + $files[] = array( + 'loc' => $url_base . $prefix . '_' . $sm . $suffix, + 'priority' => $this->get_default_priority( 'taxonomies' ), + 'changefreq' => $this->get_default_frequency( 'taxonomies' ), + ); + } + } else { + $files[] = array( + 'loc' => $url_base . $prefix . '_' . $sm . $suffix, + 'priority' => $this->get_default_priority( 'taxonomies' ), + 'changefreq' => $this->get_default_frequency( 'taxonomies' ), + ); + } + } + } + } + foreach ( $this->get_child_sitemap_urls() as $csm ) { + $files[] = array( + 'loc' => $csm, + 'priority' => $this->get_default_priority( 'sitemap' ), + 'changefreq' => $this->get_default_frequency( 'sitemap' ), + ); + } + + return $files; + } + + /** + * Build the sitemap. + * + * @param $sitemap_type + * @param int $page + * @param string $filename + * @param string $comment + * + * @return string + */ + function do_build_sitemap( $sitemap_type, $page = 0, $filename = '', $comment = '' ) { + if ( empty( $filename ) ) { + if ( 'root' === $sitemap_type ) { + $filename = $this->options["{$this->prefix}filename"]; + } else { + $filename = $this->options["{$this->prefix}filename"] . '_' . $sitemap_type; + } + } + if ( empty( $comment ) ) { + $comment = "file '%s' statically"; + } + $sitemap_data = $this->get_sitemap_data( $sitemap_type, $page ); + if ( ( 'root' === $sitemap_type ) && ! empty( $this->options["{$this->prefix}indexes"] ) ) { + return $this->build_sitemap_index( $sitemap_data, sprintf( $comment, $filename ) ); + } else { + return $this->build_sitemap( $sitemap_data, sprintf( $comment, $filename ) ); + } + } + + /** + * Write the sitemap. + * + * @param $sitemap_type + * @param int $page + * @param string $filename + * @param string $comment + */ + function do_write_sitemap( $sitemap_type, $page = 0, $filename = '', $comment = '' ) { + if ( empty( $filename ) ) { + if ( 'root' === $sitemap_type ) { + $filename = $this->options["{$this->prefix}filename"]; + } else { + $filename = $this->options["{$this->prefix}filename"] . '_' . $sitemap_type; + } + } + if ( empty( $comment ) ) { + $comment = "file '%s' statically"; + } + $this->write_sitemaps( $filename, $this->do_build_sitemap( $sitemap_type, $page, $filename, $comment ) ); + } + + /** + * Build all the indexes. + */ + function do_indexed_sitemaps() { + $this->start_memory_usage = memory_get_peak_usage(); + $options = $this->options; + + $this->do_write_sitemap( 'root' ); + $this->do_write_sitemap( 'addl' ); + + if ( $this->option_isset( 'archive' ) ) { + $this->do_write_sitemap( 'archive' ); + } + if ( $this->option_isset( 'author' ) ) { + $this->do_write_sitemap( 'author' ); + } + + if ( ( ! isset( $options["{$this->prefix}posttypes"] ) ) || ( ! is_array( $options["{$this->prefix}posttypes"] ) ) ) { + $options["{$this->prefix}posttypes"] = array(); + } + if ( ( ! isset( $options["{$this->prefix}taxonomies"] ) ) || ( ! is_array( $options["{$this->prefix}taxonomies"] ) ) ) { + $options["{$this->prefix}taxonomies"] = array(); + } + $options["{$this->prefix}posttypes"] = array_diff( $options["{$this->prefix}posttypes"], array( 'all' ) ); + $options["{$this->prefix}taxonomies"] = array_diff( $options["{$this->prefix}taxonomies"], array( 'all' ) ); + + if ( ! empty( $options["{$this->prefix}posttypes"] ) ) { + $post_counts = $this->get_all_post_counts( array( + 'post_type' => $options["{$this->prefix}posttypes"], + 'post_status' => 'publish', + ) ); + foreach ( $options["{$this->prefix}posttypes"] as $posttype ) { + if ( 0 === $post_counts[ $posttype ] ) { + continue; + } + if ( $this->paginate && ( $post_counts[ $posttype ] > $this->max_posts ) ) { + $count = 1; + for ( $post_count = 0; $post_count < $post_counts[ $posttype ]; $post_count += $this->max_posts ) { + $this->do_write_sitemap( $posttype, $count - 1, $options["{$this->prefix}filename"] . "_{$posttype}_{$count}" ); + $count ++; + } + } else { + $this->do_write_sitemap( $posttype ); + } + } + } + + if ( ! empty( $options["{$this->prefix}taxonomies"] ) ) { + foreach ( $options["{$this->prefix}taxonomies"] as $taxonomy ) { + $term_count = wp_count_terms( $taxonomy, array( 'hide_empty' => true ) ); + if ( ! is_wp_error( $term_count ) && ( $term_count > 0 ) ) { + if ( $this->paginate ) { + if ( $term_count > $this->max_posts ) { + $count = 1; + for ( $tc = 0; $tc < $term_count; $tc += $this->max_posts ) { + $this->do_write_sitemap( $taxonomy, $tc, $options["{$this->prefix}filename"] . "_{$taxonomy}_{$count}" ); + $count ++; + } + } else { + $this->do_write_sitemap( $taxonomy ); + } + } else { + $this->do_write_sitemap( $taxonomy ); + } + } + } + } + $this->log_stats( 'indexed', $options["{$this->prefix}gzipped"], false ); + } + + function remove_posts_page( $postspageid ) { + if ( in_array( $postspageid, $this->excludes ) ) { + return true; + } + + if ( in_array( get_post_field( 'post_name', $postspageid ), $this->excludes ) ) { + return true; + } + + return false; + } + + function remove_homepage( $homepage_id ) { + if ( in_array( $homepage_id, $this->excludes ) ) { + + return true; + } + if ( in_array( get_post_field( 'post_name', $homepage_id ), $this->excludes ) ) { + return true; + } + + return false; + } + + /** + * Get simple sitemap. + * + * @return array + */ + function get_simple_sitemap() { + $child = $this->get_child_sitemap_urls(); + $options = $this->options; + if ( is_array( $options["{$this->prefix}posttypes"] ) ) { + $options["{$this->prefix}posttypes"] = array_diff( $options["{$this->prefix}posttypes"], array( 'all' ) ); + } + if ( is_array( $options["{$this->prefix}taxonomies"] ) ) { + $options["{$this->prefix}taxonomies"] = array_diff( $options["{$this->prefix}taxonomies"], array( 'all' ) ); + } + $prio = $this->get_all_post_priority_data( $options["{$this->prefix}posttypes"] ); + + $home = array( + 'loc' => get_home_url(), + 'priority' => $this->get_default_priority( 'homepage' ), + 'changefreq' => $this->get_default_frequency( 'homepage' ), + ); + + $posts = $postspageid = get_option( 'page_for_posts' ); // It's 0 if posts are on homepage, otherwise it's the id of the posts page. + + $this->paginate = false; + if ( $posts ) { + $posts = $this->get_permalink( $posts ); + if ( $posts == $home['loc'] ) { + $posts = null; + } else { + $posts = array( + 'loc' => $posts, + 'priority' => $this->get_default_priority( 'blog' ), + 'changefreq' => $this->get_default_frequency( 'blog' ), + ); + } + } + + if ( $this->option_isset( 'archive' ) ) { + $prio = array_merge( $prio, $this->get_archive_prio_data() ); + } + if ( $this->option_isset( 'author' ) ) { + $prio = array_merge( $prio, $this->get_author_prio_data() ); + } + foreach ( $prio as $k => $p ) { + if ( untrailingslashit( $p['loc'] ) === untrailingslashit( $home['loc'] ) ) { + $prio[ $k ]['priority'] = '1.0'; + $home = null; + break; + } + } + if ( ( null != $posts ) && isset( $posts['loc'] ) ) { + foreach ( $prio as $k => $p ) { + if ( $p['loc'] === $posts['loc'] ) { + $prio[ $k ]['priority'] = $this->get_default_priority( 'blog' ); + $prio[ $k ]['changefreq'] = $this->get_default_frequency( 'blog' ); + $posts = null; + break; + } + } + } + if ( is_array( $posts ) && $this->remove_posts_page( $postspageid ) !== true ) { + array_unshift( $prio, $posts ); + } + + if ( is_array( $home ) ) { + array_unshift( $prio, $home ); + } + $terms = get_terms( $options["{$this->prefix}taxonomies"], $this->get_tax_args() ); + $prio2 = $this->get_term_priority_data( $terms ); + $prio3 = $this->get_addl_pages_only(); + $prio = array_merge( $child, $prio, $prio2, $prio3 ); + if ( is_array( $this->extra_sitemaps ) ) { + foreach ( $this->extra_sitemaps as $sitemap_type ) { + $sitemap_data = array(); + $sitemap_data = apply_filters( $this->prefix . 'custom_' . $sitemap_type, $sitemap_data, $page, $this_options ); + $prio = array_merge( $prio, $sitemap_data ); + } + } + + return $prio; + } + + /** + * Build a single, stand-alone sitemap without indexes. + * + * @param string $comment + * + * @return string + */ + function do_simple_sitemap( $comment = '' ) { + $sitemap_data = $this->get_simple_sitemap(); + $sitemap_data = apply_filters( $this->prefix . 'data', $sitemap_data, 'root', 0, $this->options ); + + return $this->build_sitemap( $sitemap_data, $comment ); + } + + /** + * Gets the sitemap URL. + * + * Has a filter for using something other than the dynamically generated one. + * Using the filter you need the full path to the custom xsl file. + * + * @see https://semperplugins.com/documentation/aioseop_sitemap_xsl_url/ + * + * @since 2.3.6 + */ + function get_sitemap_xsl() { + + return esc_url( apply_filters( 'aioseop_sitemap_xsl_url', home_url( '/sitemap.xsl' ) ) ); + } + + /** + * Output the XML for a sitemap. + * + * @param $urls + * @param string $comment + * + * @return null + */ + function output_sitemap( $urls, $comment = '' ) { + $max_items = 50000; + if ( ! is_array( $urls ) ) { + return null; + } + echo '' . "\r\n\r\n"; + echo '\r\n"; + $plugin_path = $this->plugin_path['url']; + $plugin_url = parse_url( $plugin_path ); + $current_host = $_SERVER['HTTP_HOST']; + if ( empty( $current_host ) ) { + $current_host = $_SERVER['SERVER_NAME']; + } + + if ( ! empty( $current_host ) && ( $current_host !== $plugin_url['host'] ) ) { + $plugin_url['host'] = $current_host; + } + + // Code unset( $plugin_url['scheme'] );. + $plugin_path = $this->unparse_url( $plugin_url ); + + // Using the filter you need the full path to the custom xsl file. + $xsl_url = $this->get_sitemap_xsl(); + + $xml_header = '' . "\r\n" + . 'prefix . 'xml_namespace', array( 'xmlns' => 'http://www.sitemaps.org/schemas/sitemap/0.9' ) ); + if ( ! empty( $namespaces ) ) { + $ns = array(); + foreach ( $namespaces as $k => $v ) { + $ns[] = esc_attr( $k ) . '=' . '"' . esc_url( $v, array( 'http', 'https' ) ) . '"'; + } + $xml_header .= join( "\r\n\t", $ns ); + } + $xml_header .= '>' . "\r\n"; + echo $xml_header; + $count = 0; + foreach ( $urls as $url ) { + echo "\t\r\n"; + if ( is_array( $url ) ) { + foreach ( $url as $k => $v ) { + if ( ! empty( $v ) ) { + if ( 'loc' === $k ) { + $v = esc_url( $v ); + } + if ( is_array( $v ) ) { + $buf = "\t\t\t<$k>\r\n"; + foreach ( $v as $ext => $attr ) { + if ( is_array( $attr ) ) { + $buf = ''; + echo "\t\t<$k>\r\n"; + foreach ( $attr as $a => $nested ) { + if ( is_array( $nested ) ) { + echo "\t\t\t<$a>\r\n"; + foreach ( $nested as $next => $nattr ) { + echo "\t\t\t\t<$next>$nattr\r\n"; + } + echo "\t\t\t\r\n"; + } else { + echo "\t\t\t<$a>$nested\r\n"; + } + } + echo "\t\t\r\n"; + } else { + $buf .= "\t\t\t<$ext>$attr\r\n"; + } + } + if ( ! empty( $buf ) ) { + echo $buf . "\t\t\r\n"; + } + } else { + echo "\t\t<$k>$v\r\n"; + } + } + } + } else { + echo "\t\t" . esc_url( $url ) . "\r\n"; + } + echo "\t\r\n"; + if ( $count >= $max_items ) { + break; + } + } + echo ''; + } + + /** + * Output the XML for a sitemap index. + * + * @param $urls + * @param string $comment + * + * @return null + */ + function output_sitemap_index( $urls, $comment = '' ) { + $max_items = 50000; + if ( ! is_array( $urls ) ) { + return null; + } + echo '' . "\r\n\r\n"; + echo '\r\n"; + $xsl_url = $this->get_sitemap_xsl(); + echo '' . "\r\n"; + echo '' . "\r\n"; + $count = 0; + foreach ( $urls as $url ) { + echo "\t\r\n"; + if ( is_array( $url ) ) { + foreach ( $url as $k => $v ) { + if ( 'loc' === $k ) { + echo "\t\t<$k>" . esc_url( $v ) . "\r\n"; + } elseif ( 'lastmod' === $k ) { + echo "\t\t<$k>$v\r\n"; + } + } + } else { + echo "\t\t" . esc_url( $url ) . "\r\n"; + } + echo "\t\r\n"; + $count ++; + if ( $count >= $max_items ) { + break; + } + } + echo ''; + } + + /** + * Return an XML sitemap index as a string. + * + * @param $urls + * @param string $comment + * + * @return string + */ + function build_sitemap_index( $urls, $comment = '' ) { + ob_start(); + $this->output_sitemap_index( $urls, $comment ); + + return ob_get_clean(); + } + + /** + * Return an XML sitemap as a string. + * + * @param $urls + * @param string $comment + * + * @return string + */ + function build_sitemap( $urls, $comment = '' ) { + ob_start(); + $this->output_sitemap( $urls, $comment ); + + return ob_get_clean(); + } + + /** + * Return sitemap data for an array of terms. + * + * @param $terms + * + * @return array + */ + function get_term_priority_data( $terms ) { + $prio = array(); + if ( is_array( $terms ) ) { + $def_prio = $this->get_default_priority( 'taxonomies' ); + $def_freq = $this->get_default_frequency( 'taxonomies' ); + foreach ( $terms as $term ) { + $pr_info = array(); + $pr_info['loc'] = $this->get_term_link( $term, $term->taxonomy ); + if ( ( 'sel' === $this->options[ $this->prefix . 'prio_taxonomies' ] ) && isset( $this->options[ $this->prefix . 'prio_taxonomies_' . $term->taxonomy ] ) && ( 'no' != $this->options[ $this->prefix . 'prio_taxonomies_' . $term->taxonomy ] ) ) { + $pr_info['priority'] = $this->options[ $this->prefix . 'prio_taxonomies_' . $term->taxonomy ]; + } else { + $pr_info['priority'] = $def_prio; + } + if ( ( 'sel' === $this->options[ $this->prefix . 'freq_taxonomies' ] ) && isset( $this->options[ $this->prefix . 'freq_taxonomies_' . $term->taxonomy ] ) && ( 'no' != $this->options[ $this->prefix . 'freq_taxonomies_' . $term->taxonomy ] ) ) { + $pr_info['changefreq'] = $this->options[ $this->prefix . 'freq_taxonomies_' . $term->taxonomy ]; + } else { + $pr_info['changefreq'] = $def_freq; + } + $prio[] = $pr_info; + } + } + + return $prio; + } + + /** + * Return a list of permalinks for an array of terms. + * + * @param $terms + * + * @return array + */ + function get_term_permalinks( $terms ) { + $links = array(); + if ( is_array( $terms ) ) { + foreach ( $terms as $term ) { + $url = $this->get_term_link( $term ); + $links[] = $url; + } + } + + return $links; + } + + /** + * Return permalinks for archives. + * + * @param $posts + * + * @return array + */ + function get_archive_permalinks( $posts ) { + $links = array(); + $archives = array(); + if ( is_array( $posts ) ) { + foreach ( $posts as $post ) { + $date = mysql2date( 'U', $post->post_date ); + $year = date( 'Y', $date ); + $month = date( 'm', $date ); + $archives[ $year . '-' . $month ] = array( $year, $month ); + } + } + $archives = array_keys( $archives ); + foreach ( $archives as $d ) { + $links[] = get_month_link( $d[0], $d[1] ); + } + + return $links; + } + + /** + * Return permalinks for authors. + * + * @param $posts + * + * @return array + */ + function get_author_permalinks( $posts ) { + $links = array(); + $authors = array(); + if ( is_array( $posts ) ) { + foreach ( $posts as $post ) { + $authors[ $post->author_id ] = 1; + } + } + $authors = array_keys( $authors ); + foreach ( $authors as $auth_id ) { + $links[] = get_author_posts_url( $auth_id ); + } + + return $links; + } + + /** + * Return permalinks for posts. + * + * @param $posts + * + * @return array + */ + function get_post_permalinks( $posts ) { + $links = array(); + if ( is_array( $posts ) ) { + foreach ( $posts as $post ) { + $post->filter = 'sample'; + $url = $this->get_permalink( $post ); + $links[] = $url; + } + } + + return $links; + } + + /** + * Convert back from parse_url. + * + * Props to thomas at gielfeldt dot com. + * + * @link http://www.php.net/manual/en/function.parse-url.php#106731 + * + * @param $parsed_url + * + * @return string + */ + function unparse_url( $parsed_url ) { + $scheme = isset( $parsed_url['scheme'] ) ? $parsed_url['scheme'] . '://' : ''; + $host = isset( $parsed_url['host'] ) ? $parsed_url['host'] : ''; + if ( ! empty( $host ) && empty( $scheme ) ) { + $scheme = '//'; + } + $port = isset( $parsed_url['port'] ) ? ':' . $parsed_url['port'] : ''; + $user = isset( $parsed_url['user'] ) ? $parsed_url['user'] : ''; + $pass = isset( $parsed_url['pass'] ) ? ':' . $parsed_url['pass'] : ''; + $pass = ( $user || $pass ) ? "$pass@" : ''; + $path = isset( $parsed_url['path'] ) ? $parsed_url['path'] : ''; + $query = isset( $parsed_url['query'] ) ? '?' . $parsed_url['query'] : ''; + $fragment = isset( $parsed_url['fragment'] ) ? '#' . $parsed_url['fragment'] : ''; + + return "$scheme$user$pass$host$port$path$query$fragment"; + } + + /** + * Gets additional pages. + * + * Return data for user entered additional pages. + * + * @return array|mixed|void + */ + function get_addl_pages_only() { + $pages = array(); + if ( ! empty( $this->options[ $this->prefix . 'addl_pages' ] ) ) { + $siteurl = parse_url( get_home_url() ); + foreach ( $this->options[ $this->prefix . 'addl_pages' ] as $k => $v ) { + $url = parse_url( $k ); + if ( empty( $url['scheme'] ) ) { + $url['scheme'] = $siteurl['scheme']; + } + if ( empty( $url['host'] ) ) { + $url['host'] = $siteurl['host']; + } + if ( ! empty( $url['path'] ) && substr( $url['path'], 0, 1 ) !== '/' ) { + $url['path'] = '/' . $url['path']; + } + $freq = $prio = $mod = ''; + if ( ! empty( $v['mod'] ) ) { + $mod = $v['mod']; + } + if ( ! empty( $v['freq'] ) ) { + $freq = $v['freq']; + } + if ( ! empty( $v['prio'] ) ) { + $prio = $v['prio']; + } + if ( 'no' == $freq ) { + $freq = ''; + } + if ( 'no' == $prio ) { + $prio = ''; + } + $mod = date( 'Y-m-d\TH:i:s\Z', mysql2date( 'U', $mod ) ); + $pages[] = array( + 'loc' => $this->unparse_url( $url ), + 'lastmod' => $mod, + 'changefreq' => $freq, + 'priority' => $prio, + ); + } + } + $pages = apply_filters( $this->prefix . 'addl_pages_only', $pages ); + + return $pages; + } + + /** + * Return data for user entered additional pages and extra pages. + * + * @return array|mixed|void + */ + function get_addl_pages() { + $home = array(); + $home = array( + 'loc' => get_home_url(), + 'priority' => $this->get_default_priority( 'homepage' ), + 'changefreq' => $this->get_default_frequency( 'homepage' ), + ); + $posts = get_option( 'page_for_posts' ); + if ( $posts ) { + $posts = $this->get_permalink( $posts ); + if ( $posts == $home['loc'] ) { + $posts = array(); + } else { + $posts = array( + 'loc' => $posts, + 'priority' => $this->get_default_priority( 'blog' ), + 'changefreq' => $this->get_default_frequency( 'blog' ), + ); + } + } else { + $posts = array(); + } + $pages = $this->get_addl_pages_only(); + if ( ! empty( $home ) ) { + $pages[] = $home; + } + if ( ! empty( $posts ) ) { + $pages[] = $posts; + } + $pages = apply_filters( $this->prefix . 'addl_pages', $pages ); + + return $pages; + } + + /** + * Return links for user entered additional pages. + * + * @return array + */ + function get_addl_page_links() { + if ( ! empty( $this->options[ $this->prefix . 'addl_pages' ] ) ) { + return array_keys( $this->options[ $this->prefix . 'addl_pages' ] ); + } + + return array(); + } + + /** + * Scores posts based on date and relative comment count, if any. + * + * @param $date + * @param int $stats + * + * @return array + */ + function get_prio_calc( $date, $stats = 0 ) { + static $cur_time = null; + if ( null === $cur_time ) { + $cur_time = time(); + } + $time = $cur_time - mysql2date( 'U', $date ); + if ( ! empty( $stats ) && isset( $stats['max'] ) && $stats['max'] ) { + $minadj = $time >> 3; + $maxadj = $time >> 1; + $avg = $stats['count'] / $stats['total']; + $calc = ( $stats['comment_count'] - $stats['min'] ) / $stats['max']; + $calc = $maxadj * $calc; + if ( $avg < $stats['comment_count'] ) { + $minadj = $time >> 2; + } else { + $maxadj = $time >> 2; + } + if ( $calc > $maxadj ) { + $calc = $maxadj; + } + if ( $calc < $minadj ) { + $calc = $minadj; + } + $time -= $calc; + } + $days = $time / ( 60 * 60 * 24 ); + $prio_table = array( + 'daily' => 7, + 'weekly' => 30, + 'monthly' => 210, + 'yearly' => null, + ); + $interval = 1.0; + $prev_days = 0; + foreach ( $prio_table as $change => $max_days ) { + $interval -= 0.3; + if ( null === $max_days ) { + $changefreq = $change; + $prio = 0.1; + break; + } + if ( $days < $max_days ) { + $int_days_max = $max_days - $prev_days; + $int_days = $days - $prev_days; + $prio = $interval + ( ( int ) ( 3 * ( ( $max_days - $int_days ) / $int_days_max ) ) / 10.0 ); + $changefreq = $change; + break; + } + $prev_days = $max_days; + } + + return array( 'lastmod' => $date, 'changefreq' => $changefreq, 'priority' => $prio ); + } + + /** + * Generate sitemap priority data for archives from an array of posts. + * + * @param $posts + * + * @return array + */ + function get_archive_prio_from_posts( $posts ) { + $archives = array(); + if ( is_array( $posts ) ) { + foreach ( $posts as $p ) { + if ( 'post' !== $p->post_type ) { + continue; + } + $date = date( 'Y-m', mysql2date( 'U', $p->post_date ) ); + if ( empty( $archives[ $date ] ) ) { + $archives[ $date ] = $p; + } else { + if ( $p->post_modified > $archives[ $date ]->post_modified ) { + $archives[ $date ] = $p; + } + } + } + } + if ( ! empty( $archives ) ) { + return $this->get_prio_from_posts( $archives, $this->get_default_priority( 'archive', true ), $this->get_default_frequency( 'archive', true ), array( + $this, + 'get_archive_link_from_post', + ) ); + } + + return $archives; + } + + /** + * Return an archive link from a post. + * + * @param $post + * + * @return bool|string + */ + function get_archive_link_from_post( $post ) { + if ( 'post' !== $post->post_type ) { + return false; + } + $date = mysql2date( 'U', $post->post_date ); + + return get_month_link( date( 'Y', $date ), date( 'm', $date ) ); + } + + /** + * Generate sitemap priority data for authors from an array of posts. + * + * @param $posts + * + * @return array + */ + function get_author_prio_from_posts( $posts ) { + $authors = array(); + if ( is_array( $posts ) ) { + foreach ( $posts as $p ) { + if ( 'post' !== $p->post_type ) { + continue; + } + if ( empty( $authors[ $p->post_author ] ) ) { + $authors[ $p->post_author ] = $p; + } else { + if ( $p->post_modified > $authors[ $p->post_author ]->post_modified ) { + $authors[ $p->post_author ] = $p; + } + } + } + } + + return $this->get_prio_from_posts( $authors, $this->get_default_priority( 'author', true ), $this->get_default_frequency( 'author', true ), array( + $this, + 'get_author_link_from_post', + ) ); + } + + /** + * Return an author link from a post. + * + * @param $post + * + * @return string + */ + function get_author_link_from_post( $post ) { + return get_author_posts_url( $post->post_author ); + } + + /** + * Return comment statistics on an array of posts. + * + * @param $posts + * + * @return array|int + */ + function get_comment_count_stats( $posts ) { + $count = 0; + $total = 0.0; + $min = null; + $max = 0; + if ( is_array( $posts ) ) { + foreach ( $posts as $post ) { + if ( ! empty( $post->comment_count ) ) { + $cnt = $post->comment_count; + $count ++; + $total += $cnt; + if ( null === $min ) { + $min = $cnt; + } + if ( $max < $cnt ) { + $max = $cnt; + } + if ( $min > $cnt ) { + $min = $cnt; + } + } + } + } + if ( $count ) { + return array( 'max' => $max, 'min' => $min, 'total' => $total, 'count' => $cnt ); + } else { + return 0; + } + } + + /** + * Generate sitemap priority data from an array of posts. + * + * @param $posts + * @param bool $prio_override + * @param bool $freq_override + * @param string $linkfunc + * + * @return array + */ + function get_prio_from_posts( $posts, $prio_override = false, $freq_override = false, $linkfunc = 'get_permalink' ) { + $prio = array(); + $args = array( + 'prio_override' => $prio_override, + 'freq_override' => $freq_override, + 'linkfunc' => $linkfunc, + ); + if ( $prio_override && $freq_override ) { + $stats = 0; + } else { + $stats = $this->get_comment_count_stats( $posts ); + } + if ( is_array( $posts ) ) { + foreach ( $posts as $post ) { + $url = ''; + $post->filter = 'sample'; + if ( 'get_permalink' === $linkfunc ) { + $url = $this->get_permalink( $post ); + } else { + $url = call_user_func( $linkfunc, $post ); + } + $date = $post->post_modified; + if ( '0000-00-00 00:00:00' === $date ) { + $date = $post->post_date; + } + if ( '0000-00-00 00:00:00' !== $date ) { + $date = date( 'Y-m-d\TH:i:s\Z', mysql2date( 'U', $date ) ); + } else { + $date = 0; + } + if ( $prio_override && $freq_override ) { + $pr_info = array( 'lastmod' => $date, 'changefreq' => null, 'priority' => null ); + } else { + if ( empty( $post->comment_count ) ) { + $stat = 0; + } else { + $stat = $stats; + } + if ( ! empty( $stat ) ) { + $stat['comment_count'] = $post->comment_count; + } + $pr_info = $this->get_prio_calc( $date, $stat ); + } + if ( $prio_override ) { + $pr_info['priority'] = $prio_override; + } + if ( $freq_override ) { + $pr_info['changefreq'] = $freq_override; + } + if ( ( 'sel' === $this->options[ $this->prefix . 'prio_post' ] ) && isset( $this->options[ $this->prefix . 'prio_post_' . $post->post_type ] ) ) { + if ( ( 'no' != $this->options[ $this->prefix . 'prio_post_' . $post->post_type ] ) && ( 'sel' !== $this->options[ $this->prefix . 'prio_post_' . $post->post_type ] ) ) { + $pr_info['priority'] = $this->options[ $this->prefix . 'prio_post_' . $post->post_type ]; + } + } + if ( ( 'sel' === $this->options[ $this->prefix . 'freq_post' ] ) && isset( $this->options[ $this->prefix . 'freq_post_' . $post->post_type ] ) ) { + if ( ( 'no' != $this->options[ $this->prefix . 'freq_post_' . $post->post_type ] ) && ( 'sel' !== $this->options[ $this->prefix . 'freq_post_' . $post->post_type ] ) ) { + $pr_info['changefreq'] = $this->options[ $this->prefix . 'freq_post_' . $post->post_type ]; + } + } + $pr_info = array( 'loc' => $url ) + $pr_info; // Prepend loc to the array. + if ( is_float( $pr_info['priority'] ) ) { + $pr_info['priority'] = sprintf( '%0.1F', $pr_info['priority'] ); + } + $pr_info = apply_filters( $this->prefix . 'prio_item_filter', $pr_info, $post, $args ); + if ( ! empty( $pr_info ) ) { + $prio[] = $pr_info; + } + } + } + + return $prio; + } + + /** + * Return excluded categories for taxonomy queries. + * + * @param int $page + * + * @return array + */ + function get_tax_args( $page = 0 ) { + $args = array(); + if ( $this->option_isset( 'excl_categories' ) ) { + $args['exclude'] = $this->options[ $this->prefix . 'excl_categories' ]; + } + if ( $this->paginate ) { + $args['number'] = $this->max_posts; + $args['offset'] = $page * $this->max_posts; + + } + + return $args; + } + + /** + * Return excluded categories and pages for post queries. + * + * @param $args + * + * @return mixed + */ + function set_post_args( $args ) { + if ( $this->option_isset( 'excl_categories' ) ) { + $cats = array(); + foreach ( $this->options[ $this->prefix . 'excl_categories' ] as $c ) { + $cats[] = - $c; + } + $args['category'] = implode( ',', $cats ); + } + if ( $this->option_isset( 'excl_pages' ) ) { + $args['exclude'] = $this->options[ $this->prefix . 'excl_pages' ]; + } + + return $args; + } + + /** + * Return sitemap data for archives. + * + * @return array + */ + function get_archive_prio_data() { + $args = array( 'numberposts' => 50000, 'post_type' => 'post' ); + $args = $this->set_post_args( $args ); + $posts = $this->get_all_post_type_data( $args ); + + return $this->get_archive_prio_from_posts( $posts ); + } + + /** + * Return sitemap data for authors. + * + * @return array + */ + function get_author_prio_data() { + $args = array( 'numberposts' => 50000, 'post_type' => 'post' ); + $args = $this->set_post_args( $args ); + $posts = $this->get_all_post_type_data( $args ); + + return $this->get_author_prio_from_posts( $posts ); + } + + /** + * Return sitemap data for posts. + * + * @param string $include + * @param string $status + * @param int $page + * + * @return array + */ + function get_all_post_priority_data( $include = 'any', $status = 'publish', $page = 0 ) { + $posts = $page_query = array(); + if ( $this->paginate ) { + $page_query = array( 'offset' => $page * $this->max_posts ); + } + if ( ( 'publish' === $status ) && ( 'attachment' === $include ) ) { + $status = 'inherit'; + } + if ( is_array( $include ) && ( ( $pos = array_search( 'attachment', $include ) ) !== false ) ) { + unset( $include[ $pos ] ); + $att_args = array( 'post_type' => 'attachment', 'post_status' => 'inherit' ); + $att_args = array_merge( $att_args, $page_query ); + $posts = $this->get_all_post_type_data( $att_args ); + } + $args = array( 'post_type' => $include, 'post_status' => $status ); + $args = array_merge( $args, $page_query ); + $args = $this->set_post_args( $args ); + $posts = array_merge( $this->get_all_post_type_data( $args ), $posts ); + + return $this->get_prio_from_posts( $posts, $this->get_default_priority( 'post', true ), $this->get_default_frequency( 'post', true ) ); + } + + /** + * Return a list of all permalinks. + * + * @param string $include + * @param string $status + * + * @return array + */ + function get_all_permalinks( $include = 'any', $status = 'publish' ) { + $args = array( 'post_type' => $include, 'post_status' => $status ); + $args = $this->set_post_args( $args ); + $posts = $this->get_all_post_type_data( $args ); + $links = $this->get_post_permalinks( $posts ); + if ( $this->option_isset( 'archive' ) ) { + $links = array_merge( $links, $this->get_archive_permalinks( $posts ) ); + } + if ( $this->option_isset( 'author' ) ) { + $links = array_merge( $links, $this->get_author_permalinks( $posts ) ); + } + + return $links; + } + + /** + * Static memory cache for permalink_structure option. + * + * @param $pre + * + * @return null + */ + function cache_structure( $pre ) { + return $this->cache_struct; + } + + /** + * Static memory cache for home option. + * + * @param $pre + * + * @return null + */ + function cache_home( $pre ) { + return $this->cache_home; + } + + /** + * Cache permalink_structure and home for repeated sitemap queries. + */ + function cache_options() { + static $start = true; + if ( $start ) { + $this->cache_struct = get_option( 'permalink_structure' ); + if ( ! empty( $this->cache_struct ) ) { + add_filter( 'pre_option_permalink_structure', array( $this, 'cache_structure' ) ); + } + $this->cache_home = get_option( 'home' ); + if ( ! empty( $this->cache_home ) ) { + add_filter( 'pre_option_home', array( $this, 'cache_home' ) ); + } + $start = false; + } + } + + /** + * Call get_term_link with caching in place. + * + * @param $term + * @param string $taxonomy + * + * @return string|WP_Error + */ + function get_term_link( $term, $taxonomy = '' ) { + static $start = true; + if ( $start ) { + $this->cache_options(); + $start = false; + } + + return get_term_link( $term, $taxonomy ); + } + + /** + * Call get_permalink with caching in place. + * + * @param $post + * + * @return false|string + */ + function get_permalink( $post ) { + static $start = true; + if ( $start ) { + $this->cache_options(); + $start = false; + } + + return get_permalink( $post ); + } + + /** + * Return term counts using wp_count_terms(). + * + * @param $args + * + * @return array|int|mixed|null|void|WP_Error + */ + function get_all_term_counts( $args ) { + $term_counts = null; + if ( ! empty( $args ) && ! empty( $args['taxonomy'] ) ) { + if ( ! is_array( $args['taxonomy'] ) || ( count( $args['taxonomy'] ) == 1 ) ) { + if ( is_array( $args['taxonomy'] ) ) { + $args['taxonomy'] = array_shift( $args['taxonomy'] ); + } + $term_counts = wp_count_terms( $args['taxonomy'], array( 'hide_empty' => true ) ); + } else { + foreach ( $args['taxonomy'] as $taxonomy ) { + if ( 'all' === $taxonomy ) { + continue; + } + $term_counts[ $taxonomy ] = wp_count_terms( $taxonomy, array( 'hide_empty' => true ) ); + } + } + } + $term_counts = apply_filters( $this->prefix . 'term_counts', $term_counts, $args ); + + return $term_counts; + } + + /** + * Return post counts using wp_count_posts(). + * + * @param $args + * + * @return mixed|null|void + */ + function get_all_post_counts( $args ) { + $post_counts = null; + $status = 'inherit'; + if ( ! empty( $args['post_status'] ) ) { + $status = $args['post_status']; + } + if ( ! empty( $args ) && ! empty( $args['post_type'] ) ) { + if ( ! is_array( $args['post_type'] ) || ( count( $args['post_type'] ) == 1 ) ) { + if ( is_array( $args['post_type'] ) ) { + $args['post_type'] = array_shift( $args['post_type'] ); + } + $count = (Array) wp_count_posts( $args['post_type'] ); + $post_counts = $count[ $status ]; + } else { + foreach ( $args['post_type'] as $post_type ) { + if ( 'all' === $post_type ) { + continue; + } + $count = (Array) wp_count_posts( $post_type ); + + if ( empty( $count ) ) { + $post_counts[ $post_type ] = 0; + } else { + if ( 'attachment' === $post_type ) { + $post_counts[ $post_type ] = $count['inherit']; + } else { + $post_counts[ $post_type ] = $count[ $status ]; + } + } + } + } + } + $post_counts = apply_filters( $this->prefix . 'post_counts', $post_counts, $args ); + + return $post_counts; + } + + /** + * Get total post count. + * + * @param $args + * + * @return int|mixed|null|void + */ + function get_total_post_count( $args ) { + $total = 0; + $counts = $this->get_all_post_counts( $args ); + if ( ! empty( $counts ) ) { + if ( is_array( $counts ) ) { + foreach ( $counts as $count ) { + $total += $count; + } + } else { + $total = $counts; + } + } + + return $total; + } + + /** + * Return post data using get_posts(). + * + * @param $args + * + * @return array|mixed|void + */ + function get_all_post_type_data( $args ) { + $defaults = array( + 'numberposts' => $this->max_posts, + 'offset' => 0, + 'category' => 0, + 'orderby' => 'post_date', + 'order' => 'DESC', + 'include' => array(), + 'exclude' => array(), + 'post_type' => 'any', + 'meta_key' => '', + 'meta_value' => '', + 'meta_compare' => '', + 'meta_query' => '', + 'cache_results' => false, + 'no_found_rows' => true, + ); + if ( defined( 'ICL_SITEPRESS_VERSION' ) ) { + $defaults['suppress_filters'] = false; + } + $args = wp_parse_args( $args, $defaults ); + if ( empty( $args['post_type'] ) ) { + return apply_filters( $this->prefix . 'post_filter', array(), $args ); + } + $exclude_slugs = array(); + if ( ! empty( $args['exclude'] ) ) { + $exclude = preg_split( '/[\s,]+/', trim( $args['exclude'] ) ); + if ( ! empty( $exclude ) ) { + foreach ( $exclude as $k => $v ) { + if ( ! is_numeric( $v ) || ( $v != (int) $v ) ) { + $exclude_slugs[] = $v; + unset( $exclude[ $k ] ); + } + } + if ( ! empty( $exclude_slugs ) ) { + $args['exclude'] = implode( ',', $exclude ); + } + } + } + + $ex_args = $args; + $ex_args['meta_key'] = '_aioseop_sitemap_exclude'; + $ex_args['meta_value'] = 'on'; + $ex_args['meta_compare'] = '='; + $ex_args['fields'] = 'ids'; + $ex_args['posts_per_page'] = - 1; + $q = new WP_Query( $ex_args ); + if ( ! is_array( $args['exclude'] ) ) { + $args['exclude'] = explode( ',', $args['exclude'] ); + } + if ( ! empty( $q->posts ) ) { + $args['exclude'] = array_merge( $args['exclude'], $q->posts ); + } + $this->excludes = array_merge( $args['exclude'] , $exclude_slugs ); // Add excluded slugs and IDs to class var. + + $posts = get_posts( apply_filters( $this->prefix . 'post_query', $args ) ); + if ( ! empty( $exclude_slugs ) ) { + foreach ( $posts as $k => $v ) { + if ( in_array( $v->post_name, $exclude_slugs ) ) { + unset( $posts[ $k ] ); + } + } + } + $posts = apply_filters( $this->prefix . 'post_filter', $posts, $args ); + + return $posts; + } + } +} + diff --git a/plugins/all-in-one-seo-pack/modules/aioseop_video_sitemap.php b/plugins/all-in-one-seo-pack/modules/aioseop_video_sitemap.php new file mode 100644 index 0000000..2f03266 --- /dev/null +++ b/plugins/all-in-one-seo-pack/modules/aioseop_video_sitemap.php @@ -0,0 +1,11 @@ +post_parent ) ) && ( is_numeric( $post->post_parent ) && $post->post_parent != 0 ) ) ) { + wp_safe_redirect( get_permalink( $post->post_parent ), 301 ); + exit; + } + } + } + +} + +$aiosp_front_class = new All_in_One_SEO_Pack_Front(); + diff --git a/plugins/all-in-one-seo-pack/public/google-analytics.php b/plugins/all-in-one-seo-pack/public/google-analytics.php new file mode 100644 index 0000000..6f1ddb2 --- /dev/null +++ b/plugins/all-in-one-seo-pack/public/google-analytics.php @@ -0,0 +1,266 @@ +filter_universal(); + + $this->google_analytics(); + + } + + function filter_universal() { + $aiosp_ga_use_universal_analytics = $this->aiosp_ga_use_universal_analytics; + $this->aiosp_ga_use_universal_analytics = apply_filters( 'aiosp_universal_analytics', $aiosp_ga_use_universal_analytics ); + } + + function google_analytics() { + global $aioseop_options; + $analytics = ''; + if ( ! empty( $aioseop_options['aiosp_ga_advanced_options'] ) && ! empty( $aioseop_options['aiosp_ga_exclude_users'] ) && is_user_logged_in() ) { + global $current_user; + if ( empty( $current_user ) ) { + wp_get_current_user(); + } + if ( ! empty( $current_user ) ) { + $intersect = array_intersect( $aioseop_options['aiosp_ga_exclude_users'], $current_user->roles ); + if ( ! empty( $intersect ) ) { + return; + } + } + } + if ( ! empty( $aioseop_options['aiosp_google_analytics_id'] ) ) { + ob_start(); + $analytics = $this->universal_analytics(); + echo $analytics; + if ( empty( $analytics ) ) { + ?> + + + + aiosp_ga_use_universal_analytics ) { + $allow_linker = $cookie_domain = $domain = $addl_domains = $domain_list = ''; + if ( ! empty( $aioseop_options['aiosp_ga_advanced_options'] ) ) { + $cookie_domain = $this->get_analytics_domain(); + } + if ( ! empty( $cookie_domain ) ) { + $cookie_domain = esc_js( $cookie_domain ); + $cookie_domain = "'cookieDomain': '{$cookie_domain}'"; + } + if ( empty( $cookie_domain ) ) { + $domain = ", 'auto'"; + } + if ( ! empty( $aioseop_options['aiosp_ga_advanced_options'] ) && ! empty( $aioseop_options['aiosp_ga_multi_domain'] ) ) { + $allow_linker = "'allowLinker': true"; + if ( ! empty( $aioseop_options['aiosp_ga_addl_domains'] ) ) { + $addl_domains = trim( $aioseop_options['aiosp_ga_addl_domains'] ); + $addl_domains = preg_split( '/[\s,]+/', $addl_domains ); + if ( ! empty( $addl_domains ) ) { + foreach ( $addl_domains as $d ) { + $d = $this->sanitize_domain( $d ); + if ( ! empty( $d ) ) { + if ( ! empty( $domain_list ) ) { + $domain_list .= ', '; + } + $domain_list .= "'" . $d . "'"; + } + } + } + } + } + $extra_options = ''; + if ( ! empty( $aioseop_options['aiosp_ga_advanced_options'] ) && ! empty( $aioseop_options['aiosp_ga_display_advertising'] ) ) { + $extra_options .= "ga('require', 'displayfeatures');"; + } + if ( ! empty( $aioseop_options['aiosp_ga_advanced_options'] ) && ! empty( $aioseop_options['aiosp_ga_enhanced_ecommerce'] ) ) { + if ( ! empty( $extra_options ) ) { + $extra_options .= "\n\t\t\t"; + } + $extra_options .= "ga('require', 'ec');"; + } + if ( ! empty( $domain_list ) ) { + if ( ! empty( $extra_options ) ) { + $extra_options .= "\n\t\t\t"; + } + $extra_options .= "ga('require', 'linker');\n\t\t\tga('linker:autoLink', [{$domain_list}] );"; + } + if ( ! empty( $aioseop_options['aiosp_ga_advanced_options'] ) && ! empty( $aioseop_options['aiosp_ga_link_attribution'] ) ) { + if ( ! empty( $extra_options ) ) { + $extra_options .= "\n\t\t\t"; + } + $extra_options .= "ga('require', 'linkid', 'linkid.js');"; + } + + if ( ! empty( $aioseop_options['aiosp_ga_advanced_options'] ) && ! empty( $aioseop_options['aiosp_ga_anonymize_ip'] ) ) { + if ( ! empty( $extra_options ) ) { + $extra_options .= "\n\t\t\t"; + } + $extra_options .= "ga('set', 'anonymizeIp', true);"; + } + $js_options = array(); + foreach ( array( 'cookie_domain', 'allow_linker' ) as $opts ) { + if ( ! empty( $$opts ) ) { + $js_options[] = $$opts; + } + } + if ( ! empty( $js_options ) ) { + $js_options = implode( ',', $js_options ); + $js_options = ', { ' . $js_options . ' } '; + } else { + $js_options = ''; + } + $analytics_id = esc_js( $aioseop_options['aiosp_google_analytics_id'] ); + $analytics = << + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + ga('create', '{$analytics_id}'{$domain}{$js_options}); + {$extra_options} + ga('send', 'pageview'); + + +EOF; + } + + return $analytics; + } + + /** + * @return mixed|string + */ + function get_analytics_domain() { + global $aioseop_options; + if ( ! empty( $aioseop_options['aiosp_ga_domain'] ) ) { + return $this->sanitize_domain( $aioseop_options['aiosp_ga_domain'] ); + } + + return ''; + } + + } +} diff --git a/plugins/all-in-one-seo-pack/public/index.php b/plugins/all-in-one-seo-pack/public/index.php new file mode 100644 index 0000000..3c379e1 --- /dev/null +++ b/plugins/all-in-one-seo-pack/public/index.php @@ -0,0 +1,4 @@ + Add New' +2. Search for 'All in One SEO' +3. Activate All in One SEO Pack from your Plugins page. + += From WordPress.org = + +1. Download All in One SEO Pack. +2. Upload the 'All in One SEO Pack' directory to your '/wp-content/plugins/' directory, using your favorite method (ftp, sftp, scp, etc...) +3. Activate All in One SEO Pack from your Plugins page. + += Once Activated = + +1. Visit your SEO options (*All in One SEO - General Settings*) +2. Configure any options as desired. +3. Enjoy higher SEO rankings in the search engines! +4. Relax. + + +==General Settings== +https://www.youtube.com/watch?v=uGt6CVbA5bI + +==XML Sitemaps== +https://www.youtube.com/watch?v=zvNU92Low8A + +==Social Meta== +https://www.youtube.com/watch?v=Dfe49FiiAog + +==Performance== +https://www.youtube.com/watch?v=A0VKinM5s00 + + +== Changelog == + +All in One SEO Pack [Changelog](http://semperfiwebdesign.com/documentation/all-in-one-seo-pack/all-in-one-seo-pack-release-history/) + +== Frequently Asked Questions == + +Please visit our complete **[Documentation](http://semperplugins.com/documentation/)** before requesting support for SEO from the +**[All in One SEO Pack Support Forum](http://semperplugins.com/support/)** + +[Translations](http://semperfiwebdesign.com/documentation/all-in-one-seo-pack/translations-for-all-in-one-seo-pack/) + + +== Screenshots == + +1. **XML Sitemaps** - Out of the box support for XML sitemaps for all major search engines, with automatic submission to ensure search engines can easily crawl your site. Choose between dynamic or static sitemaps for increased performance. +2. **SEO Modules** Enable or Disable any advanced SEO modules as desired. Our team is constantly adding new SEO modules, so check back often. +3. **Extensive support** Read our Quickstart Beginner's Guide, Advanced User Guide, Access our Premium Support Forums with a full-time support staff, and watch our excellent video tutorials +4. **Custom Post Types Support** Out of the box support for ALL Custom Post Types. This is especially handy if you use any forum or e-commerce software, or have had any other custom work done on your site. +5. **Easily Access SEO content** Comprehensive overview of SEO Title, Description, and Keywords for the entire post/content type. Edit it all from one screen to save time. +6. **Additional Pages for XML Sitemap** You can easily configure any additional pages to be added to the sitemap in addition to the dynamically generated WordPress pages. This ensures that search engines like Google will see ALL of your website's content. +7. **Quick-Edit** Quickly edit your WordPress SEO data without having to go back and forth between different screens. +8. **SEO Menu** All in One offers an extensive array of premium SEO features for free. Perfect for the novice or advanced user. + + +== Upgrade Notice == + += 2.3 = + +-Various under the hood improvements +-Increased WooCommerce support, especially in pro version +-New SEO data importer +-New custom roles and capabilities for multi-user sites +-API improvements + += 2.2.7.6.2 = + +-Additional WooCommerce support + += 2.2.7.6.1 = + +-New Indonesian translation – Thanks to Rio Bermano +-Updated translations files (57 total languages!) +-Improved support for WooCommerce when the Home page is also set as the Shop page +-Social Meta Module – Update for Facebook’s Admin App ID + += 2.2.7.6 - + +-Social Meta Module – Added support for Facebook App ID +-Added a warning message when Search Engine Visibility is enabled in WordPress Reading Settings +-Various under-the-hood code improvements +-Changed when Noindex Settings are displayed in relation to Custom Post Type Settings + += 2.2.7.5 = +-fixes: +-category capitalization fixes + +enhancements: +-futureproofing the performance function for PHP7,8 +-futureproofing the open graph and social meta function for PHP7,8 +-futureproofing the file editor function for PHP7,8 +-futureproofing the import-export function for PHP7,8 + += 2.2.7.4 = + +-Update for WordPress 4.4 +-CSS fixes +-Important localization improvements +-Update for Social Meta Module - Photo Twitter Card +-Add support for the full set of Twitter meta tags (https://dev.twitter.com/cards/markup) +-Bugfix for issue with Nonindex options for post types +-Bugfix for schema.org OG markup + + + diff --git a/plugins/all-in-one-seo-pack/wpml-config.xml b/plugins/all-in-one-seo-pack/wpml-config.xml new file mode 100644 index 0000000..2567563 --- /dev/null +++ b/plugins/all-in-one-seo-pack/wpml-config.xml @@ -0,0 +1,25 @@ + + + _aioseop_title + _aioseop_description + _aioseop_keywords + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/all-in-one-wp-security-and-firewall/admin/general/wp-security-list-table.php b/plugins/all-in-one-wp-security-and-firewall/admin/general/wp-security-list-table.php new file mode 100644 index 0000000..de6324b --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/admin/general/wp-security-list-table.php @@ -0,0 +1,907 @@ + '', + 'singular' => '', + 'ajax' => false, + 'screen' => null, + ) ); + + $this->screen = convert_to_screen( $args['screen'] ); + + add_filter( "manage_{$this->screen->id}_columns", array( &$this, 'get_columns' ), 0 ); + + if ( !$args['plural'] ) + $args['plural'] = $this->screen->base; + + $args['plural'] = sanitize_key( $args['plural'] ); + $args['singular'] = sanitize_key( $args['singular'] ); + + $this->_args = $args; + + if ( $args['ajax'] ) { + // wp_enqueue_script( 'list-table' ); + add_action( 'admin_footer', array( &$this, '_js_vars' ) ); + } + } + + /** + * Checks the current user's permissions + * @uses wp_die() + * + * @since 3.1.0 + * @access public + * @abstract + */ + function ajax_user_can() { + die( 'function AIOWPSecurity_List_Table::ajax_user_can() must be over-ridden in a sub-class.' ); + } + + /** + * Prepares the list of items for displaying. + * @uses AIOWPSecurity_List_Table::set_pagination_args() + * + * @since 3.1.0 + * @access public + * @abstract + */ + function prepare_items() { + die( 'function AIOWPSecurity_List_Table::prepare_items() must be over-ridden in a sub-class.' ); + } + + /** + * An internal method that sets all the necessary pagination arguments + * + * @param array $args An associative array with information about the pagination + * @access protected + */ + function set_pagination_args( $args ) { + $args = wp_parse_args( $args, array( + 'total_items' => 0, + 'total_pages' => 0, + 'per_page' => 0, + ) ); + + if ( !$args['total_pages'] && $args['per_page'] > 0 ) + $args['total_pages'] = ceil( $args['total_items'] / $args['per_page'] ); + + // redirect if page number is invalid and headers are not already sent + if ( ! headers_sent() && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) && $args['total_pages'] > 0 && $this->get_pagenum() > $args['total_pages'] ) { + wp_redirect( add_query_arg( 'paged', $args['total_pages'] ) ); + exit; + } + + $this->_pagination_args = $args; + } + + /** + * Access the pagination args + * + * @since 3.1.0 + * @access public + * + * @param string $key + * @return array + */ + function get_pagination_arg( $key ) { + if ( 'page' == $key ) + return $this->get_pagenum(); + + if ( isset( $this->_pagination_args[$key] ) ) + return $this->_pagination_args[$key]; + } + + /** + * Whether the table has items to display or not + * + * @since 3.1.0 + * @access public + * + * @return bool + */ + function has_items() { + return !empty( $this->items ); + } + + /** + * Message to be displayed when there are no items + * + * @since 3.1.0 + * @access public + */ + function no_items() { + _e( 'No items found.' ); + } + + /** + * Display the search box. + * + * @since 3.1.0 + * @access public + * + * @param string $text The search button text + * @param string $input_id The search input id + */ + function search_box( $text, $input_id ) { + if ( empty( $_REQUEST['s'] ) && !$this->has_items() ) + return; + + $input_id = $input_id . '-search-input'; + + if ( ! empty( $_REQUEST['orderby'] ) ) + echo ''; + if ( ! empty( $_REQUEST['order'] ) ) + echo ''; + if ( ! empty( $_REQUEST['post_mime_type'] ) ) + echo ''; + if ( ! empty( $_REQUEST['detached'] ) ) + echo ''; +?> + + link ) with the list + * of views available on this table. + * + * @since 3.1.0 + * @access protected + * + * @return array + */ + function get_views() { + return array(); + } + + /** + * Display the list of views available on this table. + * + * @since 3.1.0 + * @access public + */ + function views() { + $views = $this->get_views(); + $views = apply_filters( 'views_' . $this->screen->id, $views ); + + if ( empty( $views ) ) + return; + + echo "
        \n"; + foreach ( $views as $class => $view ) { + $views[ $class ] = "\t
      • $view"; + } + echo implode( " |
      • \n", $views ) . "\n"; + echo "
      "; + } + + /** + * Get an associative array ( option_name => option_title ) with the list + * of bulk actions available on this table. + * + * @since 3.1.0 + * @access protected + * + * @return array + */ + function get_bulk_actions() { + return array(); + } + + /** + * Display the bulk actions dropdown. + * + * @since 3.1.0 + * @access public + */ + function bulk_actions() { + if ( is_null( $this->_actions ) ) { + $no_new_actions = $this->_actions = $this->get_bulk_actions(); + // This filter can currently only be used to remove actions. + $this->_actions = apply_filters( 'bulk_actions-' . $this->screen->id, $this->_actions ); + $this->_actions = array_intersect_assoc( $this->_actions, $no_new_actions ); + $two = ''; + } else { + $two = '2'; + } + + if ( empty( $this->_actions ) ) + return; + + echo "\n"; + + submit_button( __( 'Apply' ), 'action', false, false, array( 'id' => "doaction$two", 'onClick' => 'return confirm("Are you sure you want to perform this bulk operation on the selected entries?")' ) ); + echo "\n"; + } + + /** + * Get the current action selected from the bulk actions dropdown. + * + * @since 3.1.0 + * @access public + * + * @return string|bool The action name or False if no action was selected + */ + function current_action() { + if ( isset( $_REQUEST['action'] ) && -1 != $_REQUEST['action'] ) + return $_REQUEST['action']; + + if ( isset( $_REQUEST['action2'] ) && -1 != $_REQUEST['action2'] ) + return $_REQUEST['action2']; + + return false; + } + + /** + * Generate row actions div + * + * @since 3.1.0 + * @access protected + * + * @param array $actions The list of actions + * @param bool $always_visible Whether the actions should be always visible + * @return string + */ + function row_actions( $actions, $always_visible = false ) { + $action_count = count( $actions ); + $i = 0; + + if ( !$action_count ) + return ''; + + $out = '
      '; + foreach ( $actions as $action => $link ) { + ++$i; + ( $i == $action_count ) ? $sep = '' : $sep = ' | '; + $out .= "$link$sep"; + } + $out .= '
      '; + + return $out; + } + + /** + * Display a monthly dropdown for filtering items + * + * @since 3.1.0 + * @access protected + */ + function months_dropdown( $post_type ) { + global $wpdb, $wp_locale; + + $months = $wpdb->get_results( $wpdb->prepare( " + SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month + FROM $wpdb->posts + WHERE post_type = %s + ORDER BY post_date DESC + ", $post_type ) ); + + $month_count = count( $months ); + + if ( !$month_count || ( 1 == $month_count && 0 == $months[0]->month ) ) + return; + + $m = isset( $_GET['m'] ) ? (int) $_GET['m'] : 0; +?> + + __( 'List View' ), + 'excerpt' => __( 'Excerpt View' ) + ); + +?> + +
      + $title ) { + $class = ( $current_mode == $mode ) ? 'class="current"' : ''; + echo "$title\n"; + } + ?> +
      +'; + + echo "" . number_format_i18n( get_comments_number() ) . ""; + + if ( $pending_comments ) + echo ''; + } + + /** + * Get the current page number + * + * @since 3.1.0 + * @access protected + * + * @return int + */ + function get_pagenum() { + $pagenum = isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 0; + + if( isset( $this->_pagination_args['total_pages'] ) && $pagenum > $this->_pagination_args['total_pages'] ) + $pagenum = $this->_pagination_args['total_pages']; + + return max( 1, $pagenum ); + } + + /** + * Get number of items to display on a single page + * + * @since 3.1.0 + * @access protected + * + * @return int + */ + function get_items_per_page( $option, $default = 20 ) { + $per_page = (int) get_user_option( $option ); + if ( empty( $per_page ) || $per_page < 1 ) + $per_page = $default; + + return (int) apply_filters( $option, $per_page ); + } + + /** + * Display the pagination. + * + * @since 3.1.0 + * @access protected + */ + function pagination( $which ) { + if ( empty( $this->_pagination_args ) ) + return; + + extract( $this->_pagination_args, EXTR_SKIP ); + + $output = '' . sprintf( _n( '1 item', '%s items', $total_items ), number_format_i18n( $total_items ) ) . ''; + + $current = $this->get_pagenum(); + + $current_url = set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ); + + $current_url = remove_query_arg( array( 'hotkeys_highlight_last', 'hotkeys_highlight_first' ), $current_url ); + + $page_links = array(); + + $disable_first = $disable_last = ''; + if ( $current == 1 ) + $disable_first = ' disabled'; + if ( $current == $total_pages ) + $disable_last = ' disabled'; + + $page_links[] = sprintf( "%s", + 'first-page' . $disable_first, + esc_attr__( 'Go to the first page' ), + esc_url( remove_query_arg( 'paged', $current_url ) ), + '«' + ); + + $page_links[] = sprintf( "%s", + 'prev-page' . $disable_first, + esc_attr__( 'Go to the previous page' ), + esc_url( add_query_arg( 'paged', max( 1, $current-1 ), $current_url ) ), + '‹' + ); + + if ( 'bottom' == $which ) + $html_current_page = $current; + else + $html_current_page = sprintf( "", + esc_attr__( 'Current page' ), + $current, + strlen( $total_pages ) + ); + + $html_total_pages = sprintf( "%s", number_format_i18n( $total_pages ) ); + $page_links[] = '' . sprintf( _x( '%1$s of %2$s', 'paging' ), $html_current_page, $html_total_pages ) . ''; + + $page_links[] = sprintf( "%s", + 'next-page' . $disable_last, + esc_attr__( 'Go to the next page' ), + esc_url( add_query_arg( 'paged', min( $total_pages, $current+1 ), $current_url ) ), + '›' + ); + + $page_links[] = sprintf( "%s", + 'last-page' . $disable_last, + esc_attr__( 'Go to the last page' ), + esc_url( add_query_arg( 'paged', $total_pages, $current_url ) ), + '»' + ); + + $pagination_links_class = 'pagination-links'; + if ( ! empty( $infinite_scroll ) ) + $pagination_links_class = ' hide-if-js'; + $output .= "\n" . join( "\n", $page_links ) . ''; + + if ( $total_pages ) + $page_class = $total_pages < 2 ? ' one-page' : ''; + else + $page_class = ' no-pages'; + + $this->_pagination = "
      $output
      "; + + echo $this->_pagination; + } + + /** + * Get a list of columns. The format is: + * 'internal-name' => 'Title' + * + * @since 3.1.0 + * @access protected + * @abstract + * + * @return array + */ + function get_columns() { + die( 'function AIOWPSecurity_List_Table::get_columns() must be over-ridden in a sub-class.' ); + } + + /** + * Get a list of sortable columns. The format is: + * 'internal-name' => 'orderby' + * or + * 'internal-name' => array( 'orderby', true ) + * + * The second format will make the initial sorting order be descending + * + * @since 3.1.0 + * @access protected + * + * @return array + */ + function get_sortable_columns() { + return array(); + } + + /** + * Get a list of all, hidden and sortable columns, with filter applied + * + * @since 3.1.0 + * @access protected + * + * @return array + */ + function get_column_info() { + if ( isset( $this->_column_headers ) ) + return $this->_column_headers; + + $columns = get_column_headers( $this->screen ); + $hidden = get_hidden_columns( $this->screen ); + + $_sortable = apply_filters( "manage_{$this->screen->id}_sortable_columns", $this->get_sortable_columns() ); + + $sortable = array(); + foreach ( $_sortable as $id => $data ) { + if ( empty( $data ) ) + continue; + + $data = (array) $data; + if ( !isset( $data[1] ) ) + $data[1] = false; + + $sortable[$id] = $data; + } + + $this->_column_headers = array( $columns, $hidden, $sortable ); + + return $this->_column_headers; + } + + /** + * Return number of visible columns + * + * @since 3.1.0 + * @access public + * + * @return int + */ + function get_column_count() { + list ( $columns, $hidden ) = $this->get_column_info(); + $hidden = array_intersect( array_keys( $columns ), array_filter( $hidden ) ); + return count( $columns ) - count( $hidden ); + } + + /** + * Print column headers, accounting for hidden and sortable columns. + * + * @since 3.1.0 + * @access protected + * + * @param bool $with_id Whether to set the id attribute or not + */ + function print_column_headers( $with_id = true ) { + list( $columns, $hidden, $sortable ) = $this->get_column_info(); + + $current_url = set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ); + $current_url = remove_query_arg( 'paged', $current_url ); + + if ( isset( $_GET['orderby'] ) ) + $current_orderby = $_GET['orderby']; + else + $current_orderby = ''; + + if ( isset( $_GET['order'] ) && 'desc' == $_GET['order'] ) + $current_order = 'desc'; + else + $current_order = 'asc'; + + if ( ! empty( $columns['cb'] ) ) { + static $cb_counter = 1; + $columns['cb'] = '' + . ''; + $cb_counter++; + } + + foreach ( $columns as $column_key => $column_display_name ) { + $class = array( 'manage-column', "column-$column_key" ); + + $style = ''; + if ( in_array( $column_key, $hidden ) ) + $style = 'display:none;'; + + $style = ' style="' . $style . '"'; + + if ( 'cb' == $column_key ) + $class[] = 'check-column'; + elseif ( in_array( $column_key, array( 'posts', 'comments', 'links' ) ) ) + $class[] = 'num'; + + if ( isset( $sortable[$column_key] ) ) { + list( $orderby, $desc_first ) = $sortable[$column_key]; + + if ( $current_orderby == $orderby ) { + $order = 'asc' == $current_order ? 'desc' : 'asc'; + $class[] = 'sorted'; + $class[] = $current_order; + } else { + $order = $desc_first ? 'desc' : 'asc'; + $class[] = 'sortable'; + $class[] = $desc_first ? 'asc' : 'desc'; + } + + $column_display_name = '' . $column_display_name . ''; + } + + $id = $with_id ? "id='$column_key'" : ''; + + if ( !empty( $class ) ) + $class = "class='" . join( ' ', $class ) . "'"; + + echo "$column_display_name"; + } + } + + /** + * Display the table + * + * @since 3.1.0 + * @access public + */ + function display() { + extract( $this->_args ); + + $this->display_tablenav( 'top' ); + +?> + + + + print_column_headers(); ?> + + + + + + print_column_headers( false ); ?> + + + + > + display_rows_or_placeholder(); ?> + +
      +display_tablenav( 'bottom' ); + } + + /** + * Get a list of CSS classes for the tag + * + * @since 3.1.0 + * @access protected + * + * @return array + */ + function get_table_classes() { + return array( 'widefat', 'fixed', $this->_args['plural'] ); + } + + /** + * Generate the table navigation above or below the table + * + * @since 3.1.0 + * @access protected + */ + function display_tablenav( $which ) { + if ( 'top' == $which ) + wp_nonce_field( 'bulk-' . $this->_args['plural'] ); +?> +
      + +
      + bulk_actions(); ?> +
      +extra_tablenav( $which ); + $this->pagination( $which ); +?> + +
      +
      + part of the table + * + * @since 3.1.0 + * @access protected + */ + function display_rows_or_placeholder() { + if ( $this->has_items() ) { + $this->display_rows(); + } else { + list( $columns, $hidden ) = $this->get_column_info(); + echo ''; + } + } + + /** + * Generate the table rows + * + * @since 3.1.0 + * @access protected + */ + function display_rows() { + foreach ( $this->items as $item ) + $this->single_row( $item ); + } + + /** + * Generates content for a single row of the table + * + * @since 3.1.0 + * @access protected + * + * @param object $item The current item + */ + function single_row( $item ) { + static $row_class = ''; + $row_class = ( $row_class == '' ? ' class="alternate"' : '' ); + + echo ''; + echo $this->single_row_columns( $item ); + echo ''; + } + + /** + * Generates the columns for a single row of the table + * + * @since 3.1.0 + * @access protected + * + * @param object $item The current item + */ + function single_row_columns( $item ) { + list( $columns, $hidden ) = $this->get_column_info(); + + foreach ( $columns as $column_name => $column_display_name ) { + $class = "class='$column_name column-$column_name'"; + + $style = ''; + if ( in_array( $column_name, $hidden ) ) + $style = ' style="display:none;"'; + + $attributes = "$class$style"; + + if ( 'cb' == $column_name ) { + echo ''; + } + elseif ( method_exists( $this, 'column_' . $column_name ) ) { + echo ""; + } + else { + echo ""; + } + } + } + + /** + * Handle an incoming ajax request (called from admin-ajax.php) + * + * @since 3.1.0 + * @access public + */ + function ajax_response() { + $this->prepare_items(); + + extract( $this->_args ); + extract( $this->_pagination_args, EXTR_SKIP ); + + ob_start(); + if ( ! empty( $_REQUEST['no_placeholder'] ) ) + $this->display_rows(); + else + $this->display_rows_or_placeholder(); + + $rows = ob_get_clean(); + + $response = array( 'rows' => $rows ); + + if ( isset( $total_items ) ) + $response['total_items_i18n'] = sprintf( _n( '1 item', '%s items', $total_items ), number_format_i18n( $total_items ) ); + + if ( isset( $total_pages ) ) { + $response['total_pages'] = $total_pages; + $response['total_pages_i18n'] = number_format_i18n( $total_pages ); + } + + die( json_encode( $response ) ); + } + + /** + * Send required variables to JavaScript land + * + * @access private + */ + function _js_vars() { + $args = array( + 'class' => get_class( $this ), + 'screen' => array( + 'id' => $this->screen->id, + 'base' => $this->screen->base, + ) + ); + + printf( "\n", json_encode( $args ) ); + } +} diff --git a/plugins/all-in-one-wp-security-and-firewall/admin/index.html b/plugins/all-in-one-wp-security-and-firewall/admin/index.html new file mode 100644 index 0000000..e69de29 diff --git a/plugins/all-in-one-wp-security-and-firewall/admin/index.php b/plugins/all-in-one-wp-security-and-firewall/admin/index.php new file mode 100644 index 0000000..485c60a --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/admin/index.php @@ -0,0 +1,5 @@ +admin_includes(); + add_action('admin_menu', array(&$this, 'create_admin_menus')); + + //make sure we are on our plugin's menu pages + if (isset($_GET['page']) && strpos($_GET['page'], AIOWPSEC_MENU_SLUG_PREFIX ) !== false ) { + add_action('admin_print_scripts', array(&$this, 'admin_menu_page_scripts')); + add_action('admin_print_styles', array(&$this, 'admin_menu_page_styles')); + add_action('init', array( &$this, 'init_hook_handler_for_admin_side')); + } + } + + function admin_includes() + { + include_once('wp-security-admin-menu.php'); + } + + function admin_menu_page_scripts() + { + wp_enqueue_script('jquery'); + wp_enqueue_script('postbox'); + wp_enqueue_script('dashboard'); + wp_enqueue_script('thickbox'); + wp_enqueue_script('media-upload'); + wp_register_script('aiowpsec-admin-js', AIO_WP_SECURITY_URL. '/js/wp-security-admin-script.js', array('jquery')); + wp_enqueue_script('aiowpsec-admin-js'); + wp_register_script('aiowpsec-pw-tool-js', AIO_WP_SECURITY_URL. '/js/password-strength-tool.js', array('jquery')); // We will enqueue this in the user acct menu class + } + + function admin_menu_page_styles() + { + wp_enqueue_style('dashboard'); + wp_enqueue_style('thickbox'); + wp_enqueue_style('global'); + wp_enqueue_style('wp-admin'); + wp_enqueue_style('aiowpsec-admin-css', AIO_WP_SECURITY_URL. '/css/wp-security-admin-styles.css'); + } + + function init_hook_handler_for_admin_side() + { + $this->aiowps_media_uploader_modification(); + $this->initialize_feature_manager(); + $this->do_other_admin_side_init_tasks(); + } + + function aiowps_media_uploader_modification() + { + //For changing button text inside media uploader (thickbox) + global $pagenow; + if ('media-upload.php' == $pagenow || 'async-upload.php' == $pagenow) + { + // Here we will customize the 'Insert into Post' Button text inside Thickbox + add_filter( 'gettext', array($this, 'aiowps_media_uploader_replace_thickbox_text'), 1, 2); + } + } + + function aiowps_media_uploader_replace_thickbox_text($translated_text, $text) + { + if ('Insert into Post' == $text) + { + $referer = strpos(wp_get_referer(), 'aiowpsec'); + if ($referer != '') + { + return ('Select File'); + } + } + return $translated_text; + } + + function initialize_feature_manager() + { + $aiowps_feature_mgr = new AIOWPSecurity_Feature_Item_Manager(); + $aiowps_feature_mgr->initialize_features(); + $aiowps_feature_mgr->check_and_set_feature_status(); + $aiowps_feature_mgr->calculate_total_points(); + $GLOBALS['aiowps_feature_mgr'] = $aiowps_feature_mgr; + } + + function do_other_admin_side_init_tasks() + { + global $aio_wp_security; + + //***New Feature improvement for Cookie Based Brute Force Protection***// + //The old "test cookie" used to be too easy to guess because someone could just read the code and get the value. + //So now we will drop a more secure test cookie using a 10 digit random string + + if($aio_wp_security->configs->get_value('aiowps_enable_brute_force_attack_prevention')=='1'){ + // This code is for users who had this feature saved using an older release. This will drop the new more secure test cookie to the browser and will write it to the .htaccess file too + $test_cookie = $aio_wp_security->configs->get_value('aiowps_cookie_brute_test'); + if(empty($test_cookie)){ + $random_suffix = AIOWPSecurity_Utility::generate_alpha_numeric_random_string(10); + $test_cookie_name = 'aiowps_cookie_test_'.$random_suffix; + $aio_wp_security->configs->set_value('aiowps_cookie_brute_test',$test_cookie_name); + $aio_wp_security->configs->save_config();//save the value + AIOWPSecurity_Utility::set_cookie_value($test_cookie_name, "1"); + + //Write this new cookie to the .htaccess file + $res = AIOWPSecurity_Utility_Htaccess::write_to_htaccess(); + if( !$res ){ + $aio_wp_security->debug_logger->log_debug("Error writing new test cookie with random suffix to .htaccess file!",4); + } + + } + } + //For cookie test form submission case + if (isset($_GET['page']) && $_GET['page'] == AIOWPSEC_BRUTE_FORCE_MENU_SLUG && isset($_GET['tab']) && $_GET['tab'] == 'tab2') + { + global $aio_wp_security; + if(isset($_POST['aiowps_do_cookie_test_for_bfla'])){ + $random_suffix = AIOWPSecurity_Utility::generate_alpha_numeric_random_string(10); + $test_cookie_name = 'aiowps_cookie_test_'.$random_suffix; + $aio_wp_security->configs->set_value('aiowps_cookie_brute_test',$test_cookie_name); + $aio_wp_security->configs->save_config();//save the value + AIOWPSecurity_Utility::set_cookie_value($test_cookie_name, "1"); + $cur_url = "admin.php?page=".AIOWPSEC_BRUTE_FORCE_MENU_SLUG."&tab=tab2"; + $redirect_url = AIOWPSecurity_Utility::add_query_data_to_url($cur_url, 'aiowps_cookie_test', "1"); + AIOWPSecurity_Utility::redirect_to_url($redirect_url); + } + + if(isset($_POST['aiowps_enable_brute_force_attack_prevention']))//Enabling the BFLA feature so drop the cookie again + { + $brute_force_feature_secret_word = sanitize_text_field($_POST['aiowps_brute_force_secret_word']); + if(empty($brute_force_feature_secret_word)){ + $brute_force_feature_secret_word = "aiowps_secret"; + } + AIOWPSecurity_Utility::set_cookie_value($brute_force_feature_secret_word, "1"); + } + + if(isset($_REQUEST['aiowps_cookie_test'])) + { + $test_cookie = $aio_wp_security->configs->get_value('aiowps_cookie_brute_test'); + $cookie_val = AIOWPSecurity_Utility::get_cookie_value($test_cookie); + if(empty($cookie_val)) + { + $aio_wp_security->configs->set_value('aiowps_cookie_test_success',''); + } + else + { + $aio_wp_security->configs->set_value('aiowps_cookie_test_success','1'); + } + $aio_wp_security->configs->save_config();//save the value + } + } + + if(isset($_POST['aiowps_save_wp_config']))//the wp-config backup operation + { + $nonce=$_REQUEST['_wpnonce']; + if (!wp_verify_nonce($nonce, 'aiowpsec-save-wp-config-nonce')) + { + $aio_wp_security->debug_logger->log_debug("Nonce check failed on wp_config file save!",4); + die("Nonce check failed on wp_config file save!"); + } + $wp_config_path = AIOWPSecurity_Utility_File::get_wp_config_file_path(); + $result = AIOWPSecurity_Utility_File::backup_and_rename_wp_config($wp_config_path); //Backup the wp_config.php file + AIOWPSecurity_Utility_File::download_a_file_option1($wp_config_path, "wp-config-backup.txt"); + } + + //Handle export settings + if(isset($_POST['aiowps_export_settings']))//Do form submission tasks + { + $nonce=$_REQUEST['_wpnonce']; + if (!wp_verify_nonce($nonce, 'aiowpsec-export-settings-nonce')) + { + $aio_wp_security->debug_logger->log_debug("Nonce check failed on export AIOWPS settings!",4); + die("Nonce check failed on export AIOWPS settings!"); + } + $config_data = get_option('aio_wp_security_configs'); + $output = json_encode($config_data); + AIOWPSecurity_Utility_File::download_content_to_a_file($output); + } + + } + + function create_admin_menus() + { + $menu_icon_url = AIO_WP_SECURITY_URL.'/images/plugin-icon.png'; + $this->main_menu_page = add_menu_page(__('WP Security', 'all-in-one-wp-security-and-firewall'), __('WP Security', 'all-in-one-wp-security-and-firewall'), AIOWPSEC_MANAGEMENT_PERMISSION, AIOWPSEC_MAIN_MENU_SLUG , array(&$this, 'handle_dashboard_menu_rendering'), $menu_icon_url); + add_submenu_page(AIOWPSEC_MAIN_MENU_SLUG, __('Dashboard', 'all-in-one-wp-security-and-firewall'), __('Dashboard', 'all-in-one-wp-security-and-firewall') , AIOWPSEC_MANAGEMENT_PERMISSION, AIOWPSEC_MAIN_MENU_SLUG, array(&$this, 'handle_dashboard_menu_rendering')); + add_submenu_page(AIOWPSEC_MAIN_MENU_SLUG, __('Settings', 'all-in-one-wp-security-and-firewall'), __('Settings', 'all-in-one-wp-security-and-firewall') , AIOWPSEC_MANAGEMENT_PERMISSION, AIOWPSEC_SETTINGS_MENU_SLUG, array(&$this, 'handle_settings_menu_rendering')); + add_submenu_page(AIOWPSEC_MAIN_MENU_SLUG, __('User Accounts', 'all-in-one-wp-security-and-firewall'), __('User Accounts', 'all-in-one-wp-security-and-firewall') , AIOWPSEC_MANAGEMENT_PERMISSION, AIOWPSEC_USER_ACCOUNTS_MENU_SLUG, array(&$this, 'handle_user_accounts_menu_rendering')); + add_submenu_page(AIOWPSEC_MAIN_MENU_SLUG, __('User Login', 'all-in-one-wp-security-and-firewall'), __('User Login', 'all-in-one-wp-security-and-firewall') , AIOWPSEC_MANAGEMENT_PERMISSION, AIOWPSEC_USER_LOGIN_MENU_SLUG, array(&$this, 'handle_user_login_menu_rendering')); + add_submenu_page(AIOWPSEC_MAIN_MENU_SLUG, __('User Registration', 'all-in-one-wp-security-and-firewall'), __('User Registration', 'all-in-one-wp-security-and-firewall') , AIOWPSEC_MANAGEMENT_PERMISSION, AIOWPSEC_USER_REGISTRATION_MENU_SLUG, array(&$this, 'handle_user_registration_menu_rendering')); + add_submenu_page(AIOWPSEC_MAIN_MENU_SLUG, __('Database Security', 'all-in-one-wp-security-and-firewall'), __('Database Security', 'all-in-one-wp-security-and-firewall') , AIOWPSEC_MANAGEMENT_PERMISSION, AIOWPSEC_DB_SEC_MENU_SLUG, array(&$this, 'handle_database_menu_rendering')); + if (AIOWPSecurity_Utility::is_multisite_install() && get_current_blog_id() != 1){ + //Suppress the Filesystem Security menu if site is a multi site AND not the main site + }else{ + add_submenu_page(AIOWPSEC_MAIN_MENU_SLUG, __('Filesystem Security', 'all-in-one-wp-security-and-firewall'), __('Filesystem Security', 'all-in-one-wp-security-and-firewall') , AIOWPSEC_MANAGEMENT_PERMISSION, AIOWPSEC_FILESYSTEM_MENU_SLUG, array(&$this, 'handle_filesystem_menu_rendering')); + } + add_submenu_page(AIOWPSEC_MAIN_MENU_SLUG, __('WHOIS Lookup', 'all-in-one-wp-security-and-firewall'), __('WHOIS Lookup', 'all-in-one-wp-security-and-firewall') , AIOWPSEC_MANAGEMENT_PERMISSION, AIOWPSEC_WHOIS_MENU_SLUG, array(&$this, 'handle_whois_menu_rendering')); + if (AIOWPSecurity_Utility::is_multisite_install() && get_current_blog_id() != 1){ + //Suppress the Blacklist Manager menu if site is a multi site AND not the main site + }else{ + add_submenu_page(AIOWPSEC_MAIN_MENU_SLUG, __('Blacklist Manager', 'all-in-one-wp-security-and-firewall'), __('Blacklist Manager', 'all-in-one-wp-security-and-firewall') , AIOWPSEC_MANAGEMENT_PERMISSION, AIOWPSEC_BLACKLIST_MENU_SLUG, array(&$this, 'handle_blacklist_menu_rendering')); + } + if (AIOWPSecurity_Utility::is_multisite_install() && get_current_blog_id() != 1){ + //Suppress the firewall menu if site is a multi site AND not the main site + }else{ + add_submenu_page(AIOWPSEC_MAIN_MENU_SLUG, __('Firewall', 'all-in-one-wp-security-and-firewall'), __('Firewall', 'all-in-one-wp-security-and-firewall') , AIOWPSEC_MANAGEMENT_PERMISSION, AIOWPSEC_FIREWALL_MENU_SLUG, array(&$this, 'handle_firewall_menu_rendering')); + } + add_submenu_page(AIOWPSEC_MAIN_MENU_SLUG, __('Brute Force', 'all-in-one-wp-security-and-firewall'), __('Brute Force', 'all-in-one-wp-security-and-firewall') , AIOWPSEC_MANAGEMENT_PERMISSION, AIOWPSEC_BRUTE_FORCE_MENU_SLUG, array(&$this, 'handle_brute_force_menu_rendering')); + add_submenu_page(AIOWPSEC_MAIN_MENU_SLUG, __('SPAM Prevention', 'all-in-one-wp-security-and-firewall'), __('SPAM Prevention', 'all-in-one-wp-security-and-firewall') , AIOWPSEC_MANAGEMENT_PERMISSION, AIOWPSEC_SPAM_MENU_SLUG, array(&$this, 'handle_spam_menu_rendering')); + if (AIOWPSecurity_Utility::is_multisite_install() && get_current_blog_id() != 1){ + //Suppress the filescan menu if site is a multi site AND not the main site + }else{ + add_submenu_page(AIOWPSEC_MAIN_MENU_SLUG, __('Scanner', 'all-in-one-wp-security-and-firewall'), __('Scanner', 'all-in-one-wp-security-and-firewall') , AIOWPSEC_MANAGEMENT_PERMISSION, AIOWPSEC_FILESCAN_MENU_SLUG, array(&$this, 'handle_filescan_menu_rendering')); + } + add_submenu_page(AIOWPSEC_MAIN_MENU_SLUG, __('Maintenance', 'all-in-one-wp-security-and-firewall'), __('Maintenance', 'all-in-one-wp-security-and-firewall') , AIOWPSEC_MANAGEMENT_PERMISSION, AIOWPSEC_MAINTENANCE_MENU_SLUG, array(&$this, 'handle_maintenance_menu_rendering')); + add_submenu_page(AIOWPSEC_MAIN_MENU_SLUG, __('Miscellaneous', 'all-in-one-wp-security-and-firewall'), __('Miscellaneous', 'all-in-one-wp-security-and-firewall') , AIOWPSEC_MANAGEMENT_PERMISSION, AIOWPSEC_MISC_MENU_SLUG, array(&$this, 'handle_misc_menu_rendering')); + do_action('aiowpsecurity_admin_menu_created'); + } + + function handle_dashboard_menu_rendering() + { + include_once('wp-security-dashboard-menu.php'); + $this->dashboard_menu = new AIOWPSecurity_Dashboard_Menu(); + } + + function handle_settings_menu_rendering() + { + include_once('wp-security-settings-menu.php'); + $this->settings_menu = new AIOWPSecurity_Settings_Menu(); + + } + + function handle_user_accounts_menu_rendering() + { + include_once('wp-security-user-accounts-menu.php'); + $this->user_accounts_menu = new AIOWPSecurity_User_Accounts_Menu(); + } + + function handle_user_login_menu_rendering() + { + include_once('wp-security-user-login-menu.php'); + $this->user_login_menu = new AIOWPSecurity_User_Login_Menu(); + } + + function handle_user_registration_menu_rendering() + { + include_once('wp-security-user-registration-menu.php'); + $this->user_registration_menu = new AIOWPSecurity_User_Registration_Menu(); + } + + function handle_database_menu_rendering() + { + include_once('wp-security-database-menu.php'); + $this->db_security_menu = new AIOWPSecurity_Database_Menu(); + } + + function handle_filesystem_menu_rendering() + { + include_once('wp-security-filesystem-menu.php'); + $this->filesystem_menu = new AIOWPSecurity_Filesystem_Menu(); + } + + function handle_whois_menu_rendering() + { + include_once('wp-security-whois-menu.php'); + $this->whois_menu = new AIOWPSecurity_WhoIs_Menu(); + } + + function handle_blacklist_menu_rendering() + { + include_once('wp-security-blacklist-menu.php'); + $this->blacklist_menu = new AIOWPSecurity_Blacklist_Menu(); + } + + function handle_firewall_menu_rendering() + { + include_once('wp-security-firewall-menu.php'); + $this->firewall_menu = new AIOWPSecurity_Firewall_Menu(); + } + + function handle_brute_force_menu_rendering() + { + include_once('wp-security-brute-force-menu.php'); + $this->brute_force_menu = new AIOWPSecurity_Brute_Force_Menu(); + } + + function handle_maintenance_menu_rendering() + { + include_once('wp-security-maintenance-menu.php'); + $this->maintenance_menu = new AIOWPSecurity_Maintenance_Menu(); + } + + function handle_spam_menu_rendering() + { + include_once('wp-security-spam-menu.php'); + $this->spam_menu = new AIOWPSecurity_Spam_Menu(); + } + + function handle_filescan_menu_rendering() + { + include_once('wp-security-filescan-menu.php'); + $this->filescan_menu = new AIOWPSecurity_Filescan_Menu(); + } + + function handle_misc_menu_rendering() + { + include_once('wp-security-misc-options-menu.php'); + $this->misc_menu = new AIOWPSecurity_Misc_Options_Menu(); + } + +}//End of class + diff --git a/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-admin-menu.php b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-admin-menu.php new file mode 100644 index 0000000..107ae53 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-admin-menu.php @@ -0,0 +1,93 @@ + +
      +

      +

      +
      + +
      +
      + +
      +

      +
      + +
      +
      +

      '; + _e('Settings successfully updated.','all-in-one-wp-security-and-firewall'); + echo '

      '; + } + + static function show_msg_record_deleted_st() + { + echo '

      '; + _e('The selected record(s) deleted successfully!','all-in-one-wp-security-and-firewall'); + echo '

      '; + } + + function show_msg_updated($msg) + { + echo '

      '; + echo $msg; + echo '

      '; + } + + static function show_msg_updated_st($msg) + { + echo '

      '; + echo $msg; + echo '

      '; + } + + function show_msg_error($error_msg) + { + echo '

      '; + echo $error_msg; + echo '

      '; + } + + static function show_msg_error_st($error_msg) + { + echo '

      '; + echo $error_msg; + echo '

      '; + } + + function start_buffer() + { + ob_start(); + } + + function end_buffer_and_collect() + { + $output = ob_get_contents(); + ob_end_clean(); + return $output; + } +} \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php new file mode 100644 index 0000000..aa45312 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php @@ -0,0 +1,264 @@ + 'render_tab1', + ); + + function __construct() + { + $this->render_menu_page(); + } + + function set_menu_tabs() + { + $this->menu_tabs = array( + 'tab1' => __('Ban Users', 'all-in-one-wp-security-and-firewall'), + ); + } + + function get_current_tab() + { + $tab_keys = array_keys($this->menu_tabs); + $tab = isset( $_GET['tab'] ) ? sanitize_text_field($_GET['tab']) : $tab_keys[0]; + return $tab; + } + + /* + * Renders our tabs of this menu as nav items + */ + function render_menu_tabs() + { + $current_tab = $this->get_current_tab(); + + echo ''; + } + + /* + * The menu rendering goes here + */ + function render_menu_page() + { + echo '
      '; + echo '

      '.__('Blacklist Manager','all-in-one-wp-security-and-firewall').'

      ';//Interface title + $this->set_menu_tabs(); + $tab = $this->get_current_tab(); + $this->render_menu_tabs(); + ?> +
      + menu_tabs); + call_user_func(array(&$this, $this->menu_tabs_handler[$tab])); + ?> +
      +
      + debug_logger->log_debug("Nonce check failed for save blacklist settings!",4); + die(__('Nonce check failed for save blacklist settings!','all-in-one-wp-security-and-firewall')); + } + + if (isset($_POST["aiowps_enable_blacklisting"]) && empty($_POST['aiowps_banned_ip_addresses']) && empty($_POST['aiowps_banned_user_agents'])) + { + $this->show_msg_error('You must submit at least one IP address or one User Agent value or both!','all-in-one-wp-security-and-firewall'); + } + else + { + if (!empty($_POST['aiowps_banned_ip_addresses'])) + { + $ip_addresses = $_POST['aiowps_banned_ip_addresses']; + $ip_list_array = AIOWPSecurity_Utility_IP::create_ip_list_array_from_string_with_newline($ip_addresses); + $payload = AIOWPSecurity_Utility_IP::validate_ip_list($ip_list_array, 'blacklist'); + if($payload[0] == 1){ + //success case + $result = 1; + $list = $payload[1]; + $banned_ip_data = implode(PHP_EOL, $list); + $aio_wp_security->configs->set_value('aiowps_banned_ip_addresses',$banned_ip_data); + $_POST['aiowps_banned_ip_addresses'] = ''; //Clear the post variable for the banned address list + } + else{ + $result = -1; + $error_msg = $payload[1][0]; + $this->show_msg_error($error_msg); + } + + } + else + { + $aio_wp_security->configs->set_value('aiowps_banned_ip_addresses',''); //Clear the IP address config value + } + + if (!empty($_POST['aiowps_banned_user_agents'])) + { + $result = $result * $this->validate_user_agent_list(); + }else{ + //clear the user agent list + $aio_wp_security->configs->set_value('aiowps_banned_user_agents',''); + } + + if ($result == 1) + { + $aio_wp_security->configs->set_value('aiowps_enable_blacklisting',isset($_POST["aiowps_enable_blacklisting"])?'1':''); + $aio_wp_security->configs->save_config(); //Save the configuration + + //Recalculate points after the feature status/options have been altered + $aiowps_feature_mgr->check_feature_status_and_recalculate_points(); + + $this->show_msg_settings_updated(); + + $write_result = AIOWPSecurity_Utility_Htaccess::write_to_htaccess(); //now let's write to the .htaccess file + if ( !$write_result ) + { + $this->show_msg_error(__('The plugin was unable to write to the .htaccess file. Please edit file manually.','all-in-one-wp-security-and-firewall')); + $aio_wp_security->debug_logger->log_debug("AIOWPSecurity_Blacklist_Menu - The plugin was unable to write to the .htaccess file."); + } + } + } + } + ?> +

      +
      + '.__('The All In One WP Security Blacklist feature gives you the option of banning certain host IP addresses or ranges and also user agents.', 'all-in-one-wp-security-and-firewall').' +
      '.__('This feature will deny total site access for users which have IP addresses or user agents matching those which you have configured in the settings below.', 'all-in-one-wp-security-and-firewall').' +
      '.__('The plugin achieves this by making appropriate modifications to your .htaccess file.', 'all-in-one-wp-security-and-firewall').' +
      '.__('By blocking people via the .htaccess file your are using the most secure first line of defence which denies all access to blacklisted visitors as soon as they hit your hosting server.', 'all-in-one-wp-security-and-firewall').' +

      '; + ?> +
      +
      + Country Blocking Addon'; + $info_msg = sprintf( __('You may also be interested in our %s.', 'all-in-one-wp-security-and-firewall'), $addon_link); + $info_msg2 = __('This addon allows you to automatically block IP addresses based on their country of origin.', 'all-in-one-wp-security-and-firewall'); + + echo '

      '.$info_msg. + '
      '.$info_msg2.'

      '; + ?> +
      + +
      +

      +
      + output_feature_details_badge("blacklist-manager-ip-user-agent-blacklisting"); + ?> +
      + +
      +

      + must read this message'; + echo sprintf(__('This feature can lock you out of admin if it doesn\'t work correctly on your site. You %s before activating this feature.', 'all-in-one-wp-security-and-firewall'), $read_link); + ?> +

      +
      +
      '; + $this->no_items(); + echo '
      '; + echo $this->column_cb( $item ); + echo '"; + echo call_user_func( array( &$this, 'column_' . $column_name ), $item ); + echo ""; + echo $this->column_default( $item, $column_name ); + echo "
      + + + + + + + + + + + + +
      : + configs->get_value('aiowps_enable_blacklisting')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      + +
      + + + +
      + '.__('Each IP address must be on a new line.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('To specify an IP range use a wildcard "*" character. Acceptable ways to use wildcards is shown in the examples below:', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('Example 1: 195.47.89.*', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('Example 2: 195.47.*.*', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('Example 3: 195.*.*.*', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      + +
      + +
      + + + + +
      + '.__('Each user agent string must be on a new line.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('Example 1 - A single user agent string to block:', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      SquigglebotBot

      '; + echo '

      '.__('Example 2 - A list of more than 1 user agent strings to block', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      baiduspider
      SquigglebotBot
      SurveyBot
      VoidEYE
      webcrawl.net
      YottaShopping_Bot

      '; + ?> +
      + +
      + + + + 1) + { + sort( $agents ); + $agents = array_unique($agents, SORT_STRING); + } + + $banned_user_agent_data = implode(PHP_EOL, $agents); + $aio_wp_security->configs->set_value('aiowps_banned_user_agents',$banned_user_agent_data); + $_POST['aiowps_banned_user_agents'] = ''; //Clear the post variable for the banned address list + return 1; + } +} //end class \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php new file mode 100644 index 0000000..7e55099 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php @@ -0,0 +1,801 @@ + 'render_tab1', + 'tab2' => 'render_tab2', + 'tab3' => 'render_tab3', + 'tab4' => 'render_tab4', + 'tab5' => 'render_tab5', + ); + + function __construct() + { + $this->render_menu_page(); + } + + function set_menu_tabs() + { + $this->menu_tabs = array( + 'tab1' => __('Rename Login Page','all-in-one-wp-security-and-firewall'), + 'tab2' => __('Cookie Based Brute Force Prevention', 'all-in-one-wp-security-and-firewall'), + 'tab3' => __('Login Captcha', 'all-in-one-wp-security-and-firewall'), + 'tab4' => __('Login Whitelist', 'all-in-one-wp-security-and-firewall'), + 'tab5' => __('Honeypot', 'all-in-one-wp-security-and-firewall'), + + ); + } + + function get_current_tab() + { + $tab_keys = array_keys($this->menu_tabs); + $tab = isset( $_GET['tab'] ) ? sanitize_text_field($_GET['tab']) : $tab_keys[0]; + return $tab; + } + + /* + * Renders our tabs of this menu as nav items + */ + function render_menu_tabs() + { + $current_tab = $this->get_current_tab(); + + echo ''; + } + + /* + * The menu rendering goes here + */ + function render_menu_page() + { + echo '
      '; + echo '

      '.__('Brute Force','all-in-one-wp-security-and-firewall').'

      ';//Interface title + $this->set_menu_tabs(); + $tab = $this->get_current_tab(); + $this->render_menu_tabs(); + ?> +
      + menu_tabs); + call_user_func(array(&$this, $this->menu_tabs_handler[$tab])); + ?> +
      +
      + debug_logger->log_debug("Nonce check failed for rename login page save!",4); + die("Nonce check failed for rename login page save!"); + } + + if (empty($_POST['aiowps_login_page_slug']) && isset($_POST["aiowps_enable_rename_login_page"])){ + $error .= '
      '.__('Please enter a value for your login page slug.','all-in-one-wp-security-and-firewall'); + }else if (!empty($_POST['aiowps_login_page_slug'])){ + $aiowps_login_page_slug = sanitize_text_field($_POST['aiowps_login_page_slug']); + if($aiowps_login_page_slug == 'wp-admin'){ + $error .= '
      '.__('You cannot use the value "wp-admin" for your login page slug.','all-in-one-wp-security-and-firewall'); + }elseif(preg_match('/[^a-z_\-0-9]/i', $aiowps_login_page_slug)){ + $error .= '
      '.__('You must use alpha numeric characters for your login page slug.','all-in-one-wp-security-and-firewall'); + } + } + + if($error){ + $this->show_msg_error(__('Attention!','all-in-one-wp-security-and-firewall').$error); + }else{ + //Save all the form values to the options + if (isset($_POST["aiowps_enable_rename_login_page"])){ + $aio_wp_security->configs->set_value('aiowps_enable_rename_login_page', '1'); + $aio_wp_security->configs->set_value('aiowps_enable_brute_force_attack_prevention', '');//deactivate cookie based feature + }else{ + $aio_wp_security->configs->set_value('aiowps_enable_rename_login_page', ''); + } + $aio_wp_security->configs->set_value('aiowps_login_page_slug',$aiowps_login_page_slug); + $aio_wp_security->configs->save_config(); + + //Recalculate points after the feature status/options have been altered + $aiowps_feature_mgr->check_feature_status_and_recalculate_points(); + $res = AIOWPSecurity_Utility_Htaccess::write_to_htaccess(); //Delete the cookie based directives if that feature is active + if ($res) { + $this->show_msg_settings_updated(); + } + else { + $this->show_msg_error(__('Could not delete the Cookie-based directives from the .htaccess file. Please check the file permissions.', 'all-in-one-wp-security-and-firewall')); + } + + /** The following is a fix/workaround for the following issue: + * https://wordpress.org/support/topic/applying-brute-force-rename-login-page-not-working/ + * ie, when saving the rename login config, the logout link does not update on the first page load after the $_POST submit to reflect the new rename login setting. + * Added a page refresh to fix this for now until I figure out a better solution. + * + **/ + $cur_url = "admin.php?page=".AIOWPSEC_BRUTE_FORCE_MENU_SLUG."&tab=tab1"; + AIOWPSecurity_Utility::redirect_to_url($cur_url); + + } + } + + ?> +
      + Cookie Based Brute Force Prevention'; + $white_list_feature_url = 'Login Page White List'; + echo '

      '.__('An effective Brute Force prevention technique is to change the default WordPress login page URL.', 'all-in-one-wp-security-and-firewall').'

      '. + '

      '.__('Normally if you wanted to login to WordPress you would type your site\'s home URL followed by wp-login.php.', 'all-in-one-wp-security-and-firewall').'

      '. + '

      '.__('This feature allows you to change the login URL by setting your own slug and renaming the last portion of the login URL which contains the wp-login.php to any string that you like.', 'all-in-one-wp-security-and-firewall').'

      '. + '

      '.__('By doing this, malicious bots and hackers will not be able to access your login page because they will not know the correct login page URL.', 'all-in-one-wp-security-and-firewall').'

      '. + '
      '. + '

      '.__('You may also be interested in the following alternative brute force prevention features:', 'all-in-one-wp-security-and-firewall').'

      '. + '

      '.$cookie_based_feature_url.'

      '. + '

      '.$white_list_feature_url.'

      '; + ?> +
      + configs->get_value('aiowps_enable_rename_login_page')=='1') + { + ?> +
      +

      +

      +

      configs->get_value('aiowps_login_page_slug'); ?>

      +

      +
      + + +
      +

      +
      + output_feature_details_badge("bf-rename-login-page"); + ?> + +
      + +
      + must read this message'; + echo '

      '.sprintf(__('This feature can lock you out of admin if it doesn\'t work correctly on your site. You %s before activating this feature.', 'all-in-one-wp-security-and-firewall'), $read_link).'

      '; + echo '

      '.__("NOTE: If you are hosting your site on WPEngine or a provider which performs server caching, you will need to ask the host support people to NOT cache your renamed login page.", "all-in-one-wp-security-and-firewall").'

      '; + ?> +
      + + + + + + + + + +
      : + configs->get_value('aiowps_enable_rename_login_page')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      : + +
      + +
      +
      + + debug_logger->log_debug("Nonce check failed on enable cookie based brute force prevention feature!",4); + die("Nonce check failed on enable cookie based brute force prevention feature!"); + } + + if(isset($_POST['aiowps_enable_brute_force_attack_prevention'])) + { + $brute_force_feature_secret_word = sanitize_text_field($_POST['aiowps_brute_force_secret_word']); + if(empty($brute_force_feature_secret_word)){ + $brute_force_feature_secret_word = "aiowps_secret"; + }else if(!ctype_alnum($brute_force_feature_secret_word)){ + $msg = '

      '.__('Settings have not been saved - your secret word must consist only of alphanumeric characters, ie, letters and/or numbers only!', 'all-in-one-wp-security-and-firewall').'

      '; + $error = true; + } + + if(filter_var($_POST['aiowps_cookie_based_brute_force_redirect_url'], FILTER_VALIDATE_URL)) + { + $aio_wp_security->configs->set_value('aiowps_cookie_based_brute_force_redirect_url',esc_url_raw($_POST['aiowps_cookie_based_brute_force_redirect_url'])); + } + else + { + $aio_wp_security->configs->set_value('aiowps_cookie_based_brute_force_redirect_url','http://127.0.0.1'); + } + + $aio_wp_security->configs->set_value('aiowps_enable_brute_force_attack_prevention','1'); + $aio_wp_security->configs->set_value('aiowps_enable_rename_login_page',''); //Disable the Rename Login Page feature + + if (!$error) + { + $aio_wp_security->configs->set_value('aiowps_brute_force_secret_word',$brute_force_feature_secret_word); + $msg = '

      '.__('You have successfully enabled the cookie based brute force prevention feature', 'all-in-one-wp-security-and-firewall').'

      '; + $msg .= '

      '.__('From now on you will need to log into your WP Admin using the following URL:', 'all-in-one-wp-security-and-firewall').'

      '; + $msg .= '

      '.AIOWPSEC_WP_URL.'/?'.$brute_force_feature_secret_word.'=1

      '; + $msg .= '

      '.__('It is important that you save this URL value somewhere in case you forget it, OR,', 'all-in-one-wp-security-and-firewall').'

      '; + $msg .= '

      '.sprintf( __('simply remember to add a "?%s=1" to your current site URL address.', 'all-in-one-wp-security-and-firewall'), $brute_force_feature_secret_word).'

      '; + } + } + else + { + $aio_wp_security->configs->set_value('aiowps_enable_brute_force_attack_prevention',''); + $msg = __('You have successfully saved cookie based brute force prevention feature settings.', 'all-in-one-wp-security-and-firewall'); + } + + if(isset($_POST['aiowps_brute_force_attack_prevention_pw_protected_exception'])) + { + $aio_wp_security->configs->set_value('aiowps_brute_force_attack_prevention_pw_protected_exception','1'); + } + else + { + $aio_wp_security->configs->set_value('aiowps_brute_force_attack_prevention_pw_protected_exception',''); + } + + if(isset($_POST['aiowps_brute_force_attack_prevention_ajax_exception'])) + { + $aio_wp_security->configs->set_value('aiowps_brute_force_attack_prevention_ajax_exception','1'); + } + else + { + $aio_wp_security->configs->set_value('aiowps_brute_force_attack_prevention_ajax_exception',''); + } + + if (!$error) + { + $aio_wp_security->configs->save_config();//save the value + + //Recalculate points after the feature status/options have been altered + $aiowps_feature_mgr->check_feature_status_and_recalculate_points(); + + $res = AIOWPSecurity_Utility_Htaccess::write_to_htaccess(); + if ($res) { + echo '

      '; + echo $msg; + echo '

      '; + } + else { + $this->show_msg_error(__('Could not write to the .htaccess file. Please check the file permissions.', 'all-in-one-wp-security-and-firewall')); + } + } + else + { + $this->show_msg_error($msg); + } + } + + ?> +

      + +
      + '.__('A Brute Force Attack is when a hacker tries many combinations of usernames and passwords until they succeed in guessing the right combination.', 'all-in-one-wp-security-and-firewall'). + '
      '.__('Due to the fact that at any one time there may be many concurrent login attempts occurring on your site via malicious automated robots, this also has a negative impact on your server\'s memory and performance.', 'all-in-one-wp-security-and-firewall'). + '
      '.__('The features in this tab will stop the majority of Brute Force Login Attacks at the .htaccess level thus providing even better protection for your WP login page and also reducing the load on your server because the system does not have to run PHP code to process the login attempts.', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      +
      + backup'; + $video_link = 'video tutorial'; + $info_msg = sprintf( __('Even though this feature should not have any impact on your site\'s general functionality you are strongly encouraged to take a %s of your .htaccess file before proceeding.', 'all-in-one-wp-security-and-firewall'), $backup_tab_link); + $info_msg1 = __('If this feature is not used correctly, you can get locked out of your site. A backed up .htaccess file will come in handy if that happens.', 'all-in-one-wp-security-and-firewall'); + $info_msg2 = sprintf( __('To learn more about how to use this feature please watch the following %s.', 'all-in-one-wp-security-and-firewall'), $video_link); + $brute_force_login_feature_link = 'Cookie-Based Brute Force Login Prevention'; + echo '

      '.$info_msg. + '
      '.$info_msg1. + '
      '.$info_msg2.'

      '; + ?> +
      + configs->get_value('aiowps_enable_brute_force_attack_prevention')=='1') + { + ?> +
      +

      +
      + + + +
      +

      +
      + output_feature_details_badge("firewall-enable-brute-force-attack-prevention"); + ?> +
      + +
      +

      + must read this message before activating this feature.', 'all-in-one-wp-security-and-firewall'); ?> +

      +
      + + + + + + + + + + + + + + + + + + + + + +
      : + configs->get_value('aiowps_enable_brute_force_attack_prevention')=='1') echo ' checked="checked"'; ?> value="1"/> + + + +
      +

      + '; + _e('To use this feature do the following:', 'all-in-one-wp-security-and-firewall'); + echo '
      '; + _e('1) Enable the checkbox.', 'all-in-one-wp-security-and-firewall'); + echo '
      '; + _e('2) Enter a secret word consisting of alphanumeric characters which will be difficult to guess. This secret word will be useful whenever you need to know the special URL which you will use to access the login page (see point below).', 'all-in-one-wp-security-and-firewall'); + echo '
      '; + _e('3) You will then be provided with a special login URL. You will need to use this URL to login to your WordPress site instead of the usual login URL. NOTE: The system will deposit a special cookie in your browser which will allow you access to the WordPress administration login page.', 'all-in-one-wp-security-and-firewall'); + echo '
      '; + _e('Any person trying to access your login page who does not have the special cookie in their browser will be automatically blocked.', 'all-in-one-wp-security-and-firewall'); + ?> +

      +
      +
      : + +
      : + + + + + +
      +

      + '; + _e('This field will default to: http://127.0.0.1 if you do not enter a value.', 'all-in-one-wp-security-and-firewall'); + echo '
      '; + _e('Useful Tip:', 'all-in-one-wp-security-and-firewall'); + echo '
      '; + _e('It\'s a good idea to not redirect attempted brute force login attempts to your site because it increases the load on your server.', 'all-in-one-wp-security-and-firewall'); + echo '
      '; + _e('Redirecting a hacker or malicious bot back to "http://127.0.0.1" is ideal because it deflects them back to their own local host and puts the load on their server instead of yours.', 'all-in-one-wp-security-and-firewall'); + ?> +

      +
      +
      : + configs->get_value('aiowps_brute_force_attack_prevention_pw_protected_exception')=='1') echo ' checked="checked"'; ?> value="1"/> + + + +
      +

      + '; + _e('By enabling this checkbox the plugin will add the necessary rules and exceptions to your .htacces file so that people trying to access these pages are not automatically blocked.', 'all-in-one-wp-security-and-firewall'); + echo '
      '; + echo "".__('Helpful Tip:', 'all-in-one-wp-security-and-firewall').""; + echo '
      '; + _e('If you do not use the WordPress password protection feature for your posts or pages then it is highly recommended that you leave this checkbox disabled.', 'all-in-one-wp-security-and-firewall'); + ?> +

      +
      +
      : + configs->get_value('aiowps_brute_force_attack_prevention_ajax_exception')=='1') echo ' checked="checked"'; ?> value="1"/> + + + +
      +

      + '; + _e('By enabling this checkbox the plugin will add the necessary rules and exceptions to your .htacces file so that AJAX operations will work as expected.', 'all-in-one-wp-security-and-firewall'); + ?> +

      +
      +
      + configs->get_value('aiowps_cookie_test_success'); + $bfla_feature_enabled = $aio_wp_security->configs->get_value('aiowps_enable_brute_force_attack_prevention'); + if($cookie_test_value == '1' || $bfla_feature_enabled == '1')//If the cookie test is successful or if the feature is already enabled then go ahead as normal + { + if (isset($_REQUEST['aiowps_cookie_test'])) + {//Cookie test was just performed and the test succeded + echo '

      '; + _e('The cookie test was successful. You can now enable this feature.', 'all-in-one-wp-security-and-firewall'); + echo '

      '; + } + echo ''; + } + else + { + //Cookie test needs to be performed + if(isset($_REQUEST['aiowps_cookie_test']) && $cookie_test_value != '1'){//Test failed + echo '

      '; + _e('The cookie test failed on this server. So this feature cannot be used on this site.', 'all-in-one-wp-security-and-firewall'); + echo '

      '; + } + + echo '

      '; + _e("Before using this feature you are required to perform a cookie test first. This is to make sure that your browser cookie is working correctly and that you won't lock yourself out.", 'all-in-one-wp-security-and-firewall'); + echo '

      '; + echo ''; + } + ?> +
      +
      + debug_logger->log_debug("Nonce check failed on captcha settings save!",4); + die("Nonce check failed on captcha settings save!"); + } + + + //Save all the form values to the options + $random_20_digit_string = AIOWPSecurity_Utility::generate_alpha_numeric_random_string(20); //Generate random 20 char string for use during captcha encode/decode + $aio_wp_security->configs->set_value('aiowps_captcha_secret_key', $random_20_digit_string); + $aio_wp_security->configs->set_value('aiowps_enable_login_captcha',isset($_POST["aiowps_enable_login_captcha"])?'1':''); + $aio_wp_security->configs->set_value('aiowps_enable_custom_login_captcha',isset($_POST["aiowps_enable_custom_login_captcha"])?'1':''); + $aio_wp_security->configs->set_value('aiowps_enable_lost_password_captcha',isset($_POST["aiowps_enable_lost_password_captcha"])?'1':''); + $aio_wp_security->configs->save_config(); + + //Recalculate points after the feature status/options have been altered + $aiowps_feature_mgr->check_feature_status_and_recalculate_points(); + + $this->show_msg_settings_updated(); + } + ?> +
      + '.__('This feature allows you to add a captcha form on the WordPress login page.', 'all-in-one-wp-security-and-firewall').' +
      '.__('Users who attempt to login will also need to enter the answer to a simple mathematical question - if they enter the wrong answer, the plugin will not allow them login even if they entered the correct username and password.', 'all-in-one-wp-security-and-firewall').' +
      '.__('Therefore, adding a captcha form on the login page is another effective yet simple "Brute Force" prevention technique.', 'all-in-one-wp-security-and-firewall').' +

      '; + ?> +
      +
      +
      +

      +
      + output_feature_details_badge("user-login-captcha"); + ?> + + + + + + + +
      : + configs->get_value('aiowps_enable_login_captcha')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      +
      +
      +

      +
      + output_feature_details_badge("custom-login-captcha"); + ?> + + + + + +
      : + configs->get_value('aiowps_enable_custom_login_captcha')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      +
      +
      +

      +
      + output_feature_details_badge("lost-password-captcha"); + ?> + + + + + + +
      : + configs->get_value('aiowps_enable_lost_password_captcha')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      +
      + +
      + debug_logger->log_debug("Nonce check failed for save whitelist settings!",4); + die(__('Nonce check failed for save whitelist settings!','all-in-one-wp-security-and-firewall')); + } + + if (isset($_POST["aiowps_enable_whitelisting"]) && empty($_POST['aiowps_allowed_ip_addresses'])) + { + $this->show_msg_error('You must submit at least one IP address!','all-in-one-wp-security-and-firewall'); + } + else + { + if (!empty($_POST['aiowps_allowed_ip_addresses'])) + { + $ip_addresses = $_POST['aiowps_allowed_ip_addresses']; + $ip_list_array = AIOWPSecurity_Utility_IP::create_ip_list_array_from_string_with_newline($ip_addresses); + $payload = AIOWPSecurity_Utility_IP::validate_ip_list($ip_list_array, 'whitelist'); + if($payload[0] == 1){ + //success case + $result = 1; + $list = $payload[1]; + $whitelist_ip_data = implode(PHP_EOL, $list); + $aio_wp_security->configs->set_value('aiowps_allowed_ip_addresses',$whitelist_ip_data); + $_POST['aiowps_allowed_ip_addresses'] = ''; //Clear the post variable for the banned address list + } + else{ + $result = -1; + $error_msg = htmlspecialchars($payload[1][0]); + $this->show_msg_error($error_msg); + } + + } + else + { + $aio_wp_security->configs->set_value('aiowps_allowed_ip_addresses',''); //Clear the IP address config value + } + + if ($result == 1) + { + $aio_wp_security->configs->set_value('aiowps_enable_whitelisting',isset($_POST["aiowps_enable_whitelisting"])?'1':''); + $aio_wp_security->configs->save_config(); //Save the configuration + + //Recalculate points after the feature status/options have been altered + $aiowps_feature_mgr->check_feature_status_and_recalculate_points(); + + $this->show_msg_settings_updated(); + + $write_result = AIOWPSecurity_Utility_Htaccess::write_to_htaccess(); //now let's write to the .htaccess file + if ( !$write_result ) + { + $this->show_msg_error(__('The plugin was unable to write to the .htaccess file. Please edit file manually.','all-in-one-wp-security-and-firewall')); + $aio_wp_security->debug_logger->log_debug("AIOWPSecurity_whitelist_Menu - The plugin was unable to write to the .htaccess file."); + } + } + } + } + ?> +

      +
      + '.__('The All In One WP Security Whitelist feature gives you the option of only allowing certain IP addresses or ranges to have access to your WordPress login page.', 'all-in-one-wp-security-and-firewall').' +
      '.__('This feature will deny login access for all IP addresses which are not in your whitelist as configured in the settings below.', 'all-in-one-wp-security-and-firewall').' +
      '.__('The plugin achieves this by writing the appropriate directives to your .htaccess file.', 'all-in-one-wp-security-and-firewall').' +
      '.__('By allowing/blocking IP addresses via the .htaccess file your are using the most secure first line of defence because login access will only be granted to whitelisted IP addresses and other addresses will be blocked as soon as they try to access your login page.', 'all-in-one-wp-security-and-firewall').' +

      '; + ?> +
      +
      + Cookie-Based Brute Force Login Prevention'; + $rename_login_feature_link = 'Rename Login Page'; + echo '

      '.sprintf( __('Attention: If in addition to enabling the white list feature, you also have one of the %s or %s features enabled, you will still need to use your secret word or special slug in the URL when trying to access your WordPress login page.', 'all-in-one-wp-security-and-firewall'), $brute_force_login_feature_link, $rename_login_feature_link).'

      +

      '.__('These features are NOT functionally related. Having both of them enabled on your site means you are creating 2 layers of security.', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      + +
      +

      +
      + output_feature_details_badge("whitelist-manager-ip-login-whitelisting"); + ?> +
      + + + + + + + + + + + + + + +
      : + configs->get_value('aiowps_enable_whitelisting')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      : + + +
      + +
      + + + +
      + '.__('Each IP address must be on a new line.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('To specify an IPv4 range use a wildcard "*" character. Acceptable ways to use wildcards is shown in the examples below:', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('Example 1: 195.47.89.*', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('Example 2: 195.47.*.*', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('Example 3: 195.*.*.*', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('Or you can enter an IPv6 address (NOTE: ranges/wildcards are currently not supported for ipv6)', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('Example 4: 4102:0:3ea6:79fd:b:46f8:230f:bb05', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('Example 5: 2205:0:1ca2:810d::', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      + +
      + +
      +
      + debug_logger->log_debug("Nonce check failed on honeypot settings save!",4); + die("Nonce check failed on honeypot settings save!"); + } + + //Save all the form values to the options + $aio_wp_security->configs->set_value('aiowps_enable_login_honeypot',isset($_POST["aiowps_enable_login_honeypot"])?'1':''); + $aio_wp_security->configs->save_config(); + + //Recalculate points after the feature status/options have been altered + $aiowps_feature_mgr->check_feature_status_and_recalculate_points(); + + $this->show_msg_settings_updated(); + } + ?> +
      + '.__('This feature allows you to add a special hidden "honeypot" field on the WordPress login page. This will only be visible to robots and not humans.', 'all-in-one-wp-security-and-firewall').' +
      '.__('Since robots usually fill in every input field from a login form, they will also submit a value for the special hidden honeypot field.', 'all-in-one-wp-security-and-firewall').' +
      '.__('The way honeypots work is that a hidden field is placed somewhere inside a form which only robots will submit. If that field contains a value when the form is submitted then a robot has most likely submitted the form and it is consequently dealt with.', 'all-in-one-wp-security-and-firewall').' +
      '.__('Therefore, if the plugin detects that this field has a value when the login form is submitted, then the robot which is attempting to login to your site will be redirected to its localhost address - http://127.0.0.1.', 'all-in-one-wp-security-and-firewall').' +

      '; + ?> +
      +
      +
      +

      +
      + output_feature_details_badge("login-honeypot"); + ?> + + + + + + + +
      : + configs->get_value('aiowps_enable_login_honeypot')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      +
      + + +
      + 'render_tab1', + 'tab2' => 'render_tab2', + 'tab3' => 'render_tab3', + 'tab4' => 'render_tab4', + 'tab5' => 'render_tab5', + ); + + function __construct() + { + $this->render_menu_page(); + } + + function set_menu_tabs() + { + $this->menu_tabs = array( + 'tab1' => __('Dashboard', 'all-in-one-wp-security-and-firewall'), + 'tab2' => __('System Info', 'all-in-one-wp-security-and-firewall'), + 'tab3' => __('Locked IP Addresses', 'all-in-one-wp-security-and-firewall'), + 'tab4' => __('Permanent Block List', 'all-in-one-wp-security-and-firewall'), + 'tab5' => __('AIOWPS Logs', 'all-in-one-wp-security-and-firewall'), + ); + } + + function get_current_tab() + { + $tab_keys = array_keys($this->menu_tabs); + $tab = isset($_GET['tab']) ? sanitize_text_field($_GET['tab']) : $tab_keys[0]; + return $tab; + } + + /* + * Renders our tabs of this menu as nav items + */ + function render_menu_tabs() + { + $current_tab = $this->get_current_tab(); + + echo ''; + } + + /* + * The menu rendering goes here + */ + function render_menu_page() + { + echo '
      '; + echo '

      ' . __('Dashboard', 'all-in-one-wp-security-and-firewall') . '

      ';//Interface title + $this->set_menu_tabs(); + $tab = $this->get_current_tab(); + $this->render_menu_tabs(); + ?> +
      + menu_tabs); + call_user_func(array(&$this, $this->menu_tabs_handler[$tab])); + ?> +
      +
      + '; + echo '

      ' . __('For information, updates and documentation, please visit the', 'all-in-one-wp-security-and-firewall') . ' ' . __('AIO WP Security & Firewall Plugin', 'all-in-one-wp-security-and-firewall') . ' ' . __('Page', 'all-in-one-wp-security-and-firewall') . '

      '; + echo '

      ' . __('Follow us', 'all-in-one-wp-security-and-firewall') . ' on ' . __('Twitter, Google+ or via Email to stay up to date about the new security features of this plugin.', 'all-in-one-wp-security-and-firewall') . '

      '; + echo ''; + + echo "";//Include the google chart library + + global $aiowps_feature_mgr; + global $aio_wp_security; + $feature_mgr = $aiowps_feature_mgr; + $total_site_security_points = $feature_mgr->get_total_site_points(); + $total_security_points_achievable = $feature_mgr->get_total_achievable_points(); + + ?> +
      + +
      +
      +

      +

      + +
      + + +
      + + + +
      +
      +
      + + +
      +
      +

      +

      + +
      + + feature_items; + $pt_src_chart_data = ""; + $pt_src_chart_data .= "['Feature Name', 'Points'],"; + foreach ($feature_items as $item) { + if ($item->feature_status == $feature_mgr->feature_active) { + $pt_src_chart_data .= "['" . $item->feature_name . "', " . $item->item_points . "],"; + } + } + + ?> + +
      + +
      +
      +
      + + +
      +
      +

      +

      + + +
      +
      + + +
      +
      +

      +

      + +
      +

      + +

      + WPSolutions +

      + +

      + Tips and Tricks HQ +

      +
      +
      +
      + + +
      +
      +

      +

      + +
      + + feature_items; + $username_admin_feature = $feature_mgr->get_feature_item_by_id("user-accounts-change-admin-user"); + echo ''; + echo '
      '; + + $login_lockdown_feature = $feature_mgr->get_feature_item_by_id("user-login-login-lockdown"); + echo ''; + echo '
      '; + + $filesystem_feature = $feature_mgr->get_feature_item_by_id("filesystem-file-permissions"); + echo ''; + echo '
      '; + + $basic_firewall_feature = $feature_mgr->get_feature_item_by_id("firewall-basic-rules"); + echo ''; + echo '
      '; + ?> +
      +
      +
      + + +
      +
      +

      + +
      + get_results($wpdb->prepare("SELECT * FROM $login_activity_table ORDER BY login_date DESC LIMIT %d", 5), ARRAY_A); //Get the last 5 records + + if ($data == NULL) { + echo '

      ' . __('No data found!', 'all-in-one-wp-security-and-firewall') . '

      '; + + } else { + $login_summary_table = ''; + echo '

      ' . __('Last 5 logins summary:', 'all-in-one-wp-security-and-firewall') . '

      '; + $login_summary_table .= ''; + $login_summary_table .= ''; + $login_summary_table .= ''; + $login_summary_table .= ''; + $login_summary_table .= ''; + $login_summary_table .= ''; + $login_summary_table .= ''; + $login_summary_table .= ''; + foreach ($data as $entry) { + $login_summary_table .= ''; + $login_summary_table .= ''; + $login_summary_table .= ''; + $login_summary_table .= ''; + $login_summary_table .= ''; + } + $login_summary_table .= '
      ' . __('User', 'all-in-one-wp-security-and-firewall') . '' . __('Date', 'all-in-one-wp-security-and-firewall') . '' . __('IP', 'all-in-one-wp-security-and-firewall') . '
      ' . $entry['user_login'] . '' . $entry['login_date'] . '' . $entry['login_ip'] . '
      '; + echo $login_summary_table; + } + + echo '
      '; + ?> +
      +
      +
      + + +
      +
      +

      +

      + +
      + configs->get_value('aiowps_site_lockout') == '1') { + echo '

      ' . __('Maintenance mode is currently enabled. Remember to turn it off when you are done', 'all-in-one-wp-security-and-firewall') . '

      '; + } else { + echo '

      ' . __('Maintenance mode is currently off.', 'all-in-one-wp-security-and-firewall') . '

      '; + } + + echo ''; + echo '
      '; + ?> +
      +
      +
      + + + configs->get_value('aiowps_enable_brute_force_attack_prevention') == '1') { + ?> +
      +
      +

      +

      + +
      + ' . __('Cookie-Based Brute Force', 'all-in-one-wp-security-and-firewall') . ''; + $brute_force_feature_secret_word = $aio_wp_security->configs->get_value('aiowps_brute_force_secret_word'); + echo '
      '; + + echo '

      ' . sprintf(__('The %s feature is currently active.', 'all-in-one-wp-security-and-firewall'), $brute_force_login_feature_link) . '

      '; + echo '

      ' . __('Your new WordPress login URL is now:', 'all-in-one-wp-security-and-firewall') . '

      '; + echo '

      ' . AIOWPSEC_WP_URL . '/?' . $brute_force_feature_secret_word . '=1

      '; + echo '
      '; //yellow box div + echo '
      '; + ?> +
      +
      +
      + configs->get_value('aiowps_enable_rename_login_page') == '1') { + ?> +
      +
      +

      +

      + +
      + ' . __('Rename Login Page', 'all-in-one-wp-security-and-firewall') . ''; + echo '
      '; + + echo '

      ' . sprintf(__('The %s feature is currently active.', 'all-in-one-wp-security-and-firewall'), $rename_login_feature_link) . '

      '; + echo '

      ' . __('Your new WordPress login URL is now:', 'all-in-one-wp-security-and-firewall') . '

      '; + echo '

      ' . $home_url . $aio_wp_security->configs->get_value('aiowps_login_page_slug') . '

      '; + echo '
      '; //yellow box div + echo '
      '; + ?> +
      +
      +
      + configs->get_value('aiowps_enable_automated_fcd_scan') == '1') { + + echo '
      '; + echo '
      '; + echo '

      '; + echo '
      '; + + if ($aio_wp_security->configs->get_value('aiowps_fcds_change_detected')) { + echo '
      File change detected!
      '; + echo '

      Please review the changes from the scanner menu

      '; + } else { + echo '
      No recent file changes detected.
      '; + } + + echo '
      '; + echo '
      ';// + }//End if statement for automated scan box + ?> + +
      +
      +

      +

      + +
      + Logged In Users'; + if (AIOWPSecurity_Utility::is_multisite_install()) { + $logged_in_users = get_site_transient('users_online'); + $num_users = count($logged_in_users); + if ($num_users > 1) { + echo '

      ' . __('Number of users currently logged in site-wide is:', 'all-in-one-wp-security-and-firewall') . ' ' . $num_users . '

      '; + $info_msg = '

      ' . sprintf(__('Go to the %s menu to see more details', 'all-in-one-wp-security-and-firewall'), $users_online_link) . '

      '; + echo $info_msg . '
      '; + } else { + echo '

      ' . __('There are no other site-wide users currently logged in.', 'all-in-one-wp-security-and-firewall') . '

      '; + } + } else { + $logged_in_users = get_transient('users_online'); + if ($logged_in_users === false || $logged_in_users == NULL) { + $num_users = 0; + } else { + $num_users = count($logged_in_users); + } + if ($num_users > 1) { + echo '

      ' . __('Number of users currently logged into your site (including you) is:', 'all-in-one-wp-security-and-firewall') . ' ' . $num_users . '

      '; + $info_msg = '

      ' . sprintf(__('Go to the %s menu to see more details', 'all-in-one-wp-security-and-firewall'), $users_online_link) . '

      '; + echo $info_msg . '
      '; + } else { + echo '

      ' . __('There are no other users currently logged in.', 'all-in-one-wp-security-and-firewall') . '

      '; + } + } + ?> +
      +
      +
      + + +
      +
      +

      +

      + +
      + Locked IP Addresses'; + + $locked_ips = AIOWPSecurity_Utility::get_locked_ips(); + if ($locked_ips === FALSE) { + echo '

      ' . __('There are no IP addresses currently locked out.', 'all-in-one-wp-security-and-firewall') . '

      '; + } else { + $num_ips = count($locked_ips); + echo '

      ' . __('Number of temporarily locked out IP addresses: ', 'all-in-one-wp-security-and-firewall') . ' ' . $num_ips . '

      '; + $info_msg = '

      ' . sprintf(__('Go to the %s menu to see more details', 'all-in-one-wp-security-and-firewall'), $locked_ips_link) . '

      '; + echo $info_msg . '
      '; + } + + ?> +
      +
      +
      + + + +
      + +
      + +'; + ?> + + + + + +
      +

      +

      + +
      + + :
      + + :
      + WPMU:
      + MySQL + : db_version();?>
      + WP + : prefix; ?>
      + PHP + :
      + + :
      + WP URL:
      + + :
      + + :
      + CURL + :
      + + :
      +
      +
      + +
      +

      +

      + +
      + + :
      + : + +
      + + + :
      + + + :
      + + + :
      + + + : +
      + + + :
      + + + : +
      + + + :
      +
      +
      + +
      +

      + +
      + + + + + + + + + + + '; + } + ?> + +
      ' . $plugin_details['Name'] . '' . $plugin_details['Version'] . '' . $plugin_details['PluginURI'] . '
      +
      +
      + delete_lockdown_records(strip_tags($_REQUEST['lockdown_id'])); + } + + if ($_REQUEST['action'] == 'unlock_ip') { //Unlock link was clicked for a row in list table + $locked_ip_list->unlock_ip_range(strip_tags($_REQUEST['lockdown_id'])); + } + } + + ?> +
      + Login Lockdown'; + echo '

      ' . __('This tab displays the list of all IP addresses which are currently temporarily locked out due to the Login Lockdown feature:', 'all-in-one-wp-security-and-firewall') . '

      ' . + '

      ' . $login_lockdown_feature_url . '

      '; + ?> +
      + +
      +

      +

      + +
      + prepare_items(); + //echo "put table of locked entries here"; + ?> +
      + + + '; + } + ?> + + display(); ?> +
      +
      +
      + + unblock_ip_address(strip_tags($_REQUEST['blocked_id'])); + } + } + + ?> +
      + ' . __('This tab displays the list of all permanently blocked IP addresses.', 'all-in-one-wp-security-and-firewall') . '

      ' . + '

      ' . __('NOTE: This feature does NOT use the .htaccess file to permanently block the IP addresses so it should be compatible with all web servers running WordPress.', 'all-in-one-wp-security-and-firewall') . '

      '; + ?> +
      + +
      +

      +

      + +
      + prepare_items(); + ?> +
      + + + search_box('Search', 'search_permanent_block'); + if (isset($_REQUEST["tab"])) { + echo ''; + } + ?> + + display(); ?> +
      +
      +
      + + +
      +

      +

      + +
      +
      + + + + + + +
      : + + +
      + +
      + +
      +
      + debug_logger->log_debug("Nonce check failed on dashboard view logs!", 4); + wp_die("Error! Nonce check failed on dashboard view logs!"); + } + + //Let's make sure that the file selected can only ever be the correct log file of this plugin. + $valid_aiowps_log_files = array('wp-security-log.txt', 'wp-security-log-cron-job.txt'); + if(!in_array($file_selected, $valid_aiowps_log_files)){ + $file_selected = ''; + unset($_POST['aiowps_view_logs']); + wp_die(__('Error! The file you selected is not a permitted file. You can only view log files created by this plugin.','all-in-one-wp-security-and-firewall')); + } + + if (!empty($file_selected)) { + ?> +
      +

      +

      + +
      + + + +
      +
      + + + + + + 'render_tab1', + 'tab2' => 'render_tab2', + ); + + function __construct() + { + $this->render_menu_page(); + } + + function set_menu_tabs() + { + if (AIOWPSecurity_Utility::is_multisite_install() && get_current_blog_id() != 1){ + //Suppress the DB prefix change tab if site is a multi site AND not the main site + $this->menu_tabs = array( + //'tab1' => __('DB Prefix', 'all-in-one-wp-security-and-firewall'), + 'tab2' => __('DB Backup', 'all-in-one-wp-security-and-firewall'), + ); + }else{ + $this->menu_tabs = array( + 'tab1' => __('DB Prefix', 'all-in-one-wp-security-and-firewall'), + 'tab2' => __('DB Backup', 'all-in-one-wp-security-and-firewall'), + ); + } + + } + + function get_current_tab() + { + $tab_keys = array_keys($this->menu_tabs); + $tab = isset( $_GET['tab'] ) ? sanitize_text_field($_GET['tab']) : $tab_keys[0]; + return $tab; + } + + /* + * Renders our tabs of this menu as nav items + */ + function render_menu_tabs() + { + $current_tab = $this->get_current_tab(); + + echo ''; + } + + /* + * The menu rendering goes here + */ + function render_menu_page() + { + echo '
      '; + echo '

      '.__('Database Security','all-in-one-wp-security-and-firewall').'

      ';//Interface title + $this->set_menu_tabs(); + $tab = $this->get_current_tab(); + $this->render_menu_tabs(); + ?> +
      + menu_tabs); + call_user_func(array(&$this, $this->menu_tabs_handler[$tab])); + ?> +
      +
      + prefix; + $new_db_prefix = ''; + $perform_db_change = false; + + if (isset($_POST['aiowps_db_prefix_change']))//Do form submission tasks + { + $nonce=$_REQUEST['_wpnonce']; + if (!wp_verify_nonce($nonce, 'aiowpsec-db-prefix-change-nonce')) + { + $aio_wp_security->debug_logger->log_debug("Nonce check failed for DB prefix change operation!",4); + die(__('Nonce check failed for DB prefix change operation!','all-in-one-wp-security-and-firewall')); + } + + //Let's first check if user's system allows writing to wp-config.php file. If plugin cannot write to wp-config we will not do the prefix change. + $config_file = AIOWPSecurity_Utility_File::get_wp_config_file_path(); + $file_write = AIOWPSecurity_Utility_File::is_file_writable($config_file); + if (!$file_write) + { + $this->show_msg_error(__('The plugin has detected that it cannot write to the wp-config.php file. This feature can only be used if the plugin can successfully write to the wp-config.php file.', 'all-in-one-wp-security-and-firewall')); + } + else + { + if( isset($_POST['aiowps_enable_random_prefix'])) + {//User has elected to generate a random DB prefix + $string = AIOWPSecurity_Utility::generate_alpha_random_string('5'); + $new_db_prefix = $string . '_'; + $perform_db_change = true; + }else + { + if (empty($_POST['aiowps_new_manual_db_prefix'])) + { + $this->show_msg_error(__('Please enter a value for the DB prefix.', 'all-in-one-wp-security-and-firewall')); + } + else + { + //User has chosen their own DB prefix value + $new_db_prefix = wp_strip_all_tags( trim( $_POST['aiowps_new_manual_db_prefix'] ) ); + $error = $wpdb->set_prefix( $new_db_prefix ); //validate the user chosen prefix + if(is_wp_error($error)) + { + wp_die( __('ERROR: The table prefix can only contain numbers, letters, and underscores.', 'all-in-one-wp-security-and-firewall') ); + } + $wpdb->set_prefix( $old_db_prefix ); + $perform_db_change = true; + } + } + } + } + ?> +

      +
      + '.__('Your WordPress DB is the most important asset of your website because it contains a lot of your site\'s precious information.', 'all-in-one-wp-security-and-firewall').' +
      '.__('The DB is also a target for hackers via methods such as SQL injections and malicious and automated code which targets certain tables.', 'all-in-one-wp-security-and-firewall').' +
      '.__('One way to add a layer of protection for your DB is to change the default WordPress table prefix from "wp_" to something else which will be difficult for hackers to guess.', 'all-in-one-wp-security-and-firewall').' +
      '.__('This feature allows you to easily change the prefix to a value of your choice or to a random value set by this plugin.', 'all-in-one-wp-security-and-firewall').' +

      '; + ?> +
      + +
      +

      +
      + output_feature_details_badge("db-security-db-prefix"); + ?> + +
      + DB Backup'; + $info_msg = '

      '.sprintf( __('It is recommended that you perform a %s before using this feature', 'all-in-one-wp-security-and-firewall'), $backup_tab_link).'

      '; + echo $info_msg; + ?> +
      + +
      + + + + + + + + + + +
      : + prefix; ?> + '.__('Your site is currently using the default WordPress DB prefix value of "wp_". + To increase your site\'s security you should consider changing the DB prefix value to another value.', 'all-in-one-wp-security-and-firewall').''; + } + ?> +
      : + configs->get_value('aiowps_enable_random_prefix')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      +
      + +
      + +
      +
      + change_db_prefix($old_db_prefix,$new_db_prefix); + } + } + + function render_tab2() + { + global $aio_wp_security; + global $aiowps_feature_mgr; + if (isset($_POST['aiowps_manual_db_backup'])) + { + $nonce=$_REQUEST['_wpnonce']; + if (!wp_verify_nonce($nonce, 'aiowpsec-db-manual-change-nonce')) + { + $aio_wp_security->debug_logger->log_debug("Nonce check failed for manual DB backup operation!",4); + die(__('Nonce check failed for manual DB backup operation!','all-in-one-wp-security-and-firewall')); + } + + $result = $aio_wp_security->backup_obj->execute_backup(); + if ($result) + { + $backup_file_name = $aio_wp_security->backup_obj->last_backup_file_name; + if (function_exists('is_multisite') && is_multisite()) + { + $aiowps_backup_file_path = $aio_wp_security->backup_obj->last_backup_file_dir_multisite . '/' . $backup_file_name; + } + else + { + $aiowps_backup_dir = WP_CONTENT_DIR.'/'.AIO_WP_SECURITY_BACKUPS_DIR_NAME; + $aiowps_backup_file_path = $aiowps_backup_dir. '/' . $backup_file_name; + } + echo '

      '; + _e('DB Backup was successfully completed! You will receive the backup file via email if you have enabled "Send Backup File Via Email", otherwise you can retrieve it via FTP from the following directory:','all-in-one-wp-security-and-firewall'); + echo '

      '; + _e('Your DB Backup File location: '); + echo ''.$aiowps_backup_file_path.''; + echo '

      '; + } + else + { + $aio_wp_security->debug_logger->log_debug("DB Backup - Backup operation failed!",4); + $this->show_msg_error(__('DB Backup failed. Please check the permissions of the backup directory.','all-in-one-wp-security-and-firewall')); + } + } + + if(isset($_POST['aiowps_schedule_backups']))//Do form submission tasks + { + $error = ''; + $nonce=$_REQUEST['_wpnonce']; + if (!wp_verify_nonce($nonce, 'aiowpsec-scheduled-backup-nonce')) + { + $aio_wp_security->debug_logger->log_debug("Nonce check failed on scheduled DB backup options save!",4); + die("Nonce check failed on scheduled DB backup options save!"); + } + + $backup_frequency = sanitize_text_field($_POST['aiowps_db_backup_frequency']); + if(!is_numeric($backup_frequency)) + { + $error .= '
      '.__('You entered a non numeric value for the "backup time interval" field. It has been set to the default value.','all-in-one-wp-security-and-firewall'); + $backup_frequency = '4';//Set it to the default value for this field + } + + $files_to_keep = sanitize_text_field($_POST['aiowps_backup_files_stored']); + if(!is_numeric($files_to_keep)) + { + $error .= '
      '.__('You entered a non numeric value for the "number of backup files to keep" field. It has been set to the default value.','all-in-one-wp-security-and-firewall'); + $files_to_keep = '2';//Set it to the default value for this field + } + + $email_address = sanitize_email($_POST['aiowps_backup_email_address']); + if(!is_email($email_address)) + { + $error .= '
      '.__('You have entered an incorrect email address format. It has been set to your WordPress admin email as default.','all-in-one-wp-security-and-firewall'); + $email_address = get_bloginfo('admin_email'); //Set the default value to the blog admin email + } + + if($error) + { + $this->show_msg_error(__('Attention!','all-in-one-wp-security-and-firewall').$error); + } + + //Save all the form values to the options + $aio_wp_security->configs->set_value('aiowps_enable_automated_backups',isset($_POST["aiowps_enable_automated_backups"])?'1':''); + $aio_wp_security->configs->set_value('aiowps_db_backup_frequency',absint($backup_frequency)); + $aio_wp_security->configs->set_value('aiowps_db_backup_interval',$_POST["aiowps_db_backup_interval"]); + $aio_wp_security->configs->set_value('aiowps_backup_files_stored',absint($files_to_keep)); + $aio_wp_security->configs->set_value('aiowps_send_backup_email_address',isset($_POST["aiowps_send_backup_email_address"])?'1':''); + $aio_wp_security->configs->set_value('aiowps_backup_email_address',$email_address); + $aio_wp_security->configs->save_config(); + + //Recalculate points after the feature status/options have been altered + $aiowps_feature_mgr->check_feature_status_and_recalculate_points(); + $this->show_msg_settings_updated(); + + //Let's check if backup interval was set to less than 24 hours + if (isset($_POST["aiowps_enable_automated_backups"]) && ($backup_frequency < 24) && $_POST["aiowps_db_backup_interval"]==0) + { + $alert_user_msg = 'ATTENTION: You have configured your backups to occur at least once daily. For most websites we recommended that you choose a less frequent backup + schedule such as once every few days, once a week or once a month. Choosing a less frequent schedule will also help reduce your server load.'; + $this->show_msg_updated_st(__($alert_user_msg, 'all-in-one-wp-security-and-firewall')); + } + } + + ?> +
      +

      +
      +
      + +

      + +

      + +
      +
      +
      +

      +
      + output_feature_details_badge("db-security-db-backup"); + ?> + +
      + + + + + + + + + + + + + + + + + + +
      : + configs->get_value('aiowps_enable_automated_backups')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      : + + +
      : + +
      : + configs->get_value('aiowps_send_backup_email_address')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      + +
      + +
      +
      + + get_mysql_tables(DB_NAME); //Fix for deprecated php mysql_list_tables function + + //Count the number of tables + if (is_array($result) && count($result) > 0){ + $num_rows = count($result); + }else{ + echo '

      '.__('Error - Could not get tables or no tables found!', 'all-in-one-wp-security-and-firewall').'

      '; + return; + } + $table_count = 0; + $info_msg_string = '

      '.__('Starting DB prefix change operations.....', 'all-in-one-wp-security-and-firewall').'

      '; + + $info_msg_string .= '

      '.sprintf( __('Your WordPress system has a total of %s tables and your new DB prefix will be: %s', 'all-in-one-wp-security-and-firewall'), ''.$num_rows.'', ''.$table_new_prefix.'').'

      '; + echo ($info_msg_string); + + //Do a back of the config file + if(!AIOWPSecurity_Utility_File::backup_and_rename_wp_config($config_file)) + { + echo '

      '.__('Failed to make a backup of the wp-config.php file. This operation will not go ahead.', 'all-in-one-wp-security-and-firewall').'

      '; + return; + } + else{ + echo '

      '.__('A backup copy of your wp-config.php file was created successfully!', 'all-in-one-wp-security-and-firewall').'

      '; + } + + //Get multisite blog_ids if applicable + if (AIOWPSecurity_Utility::is_multisite_install()) { + $blog_ids = AIOWPSecurity_Utility::get_blog_ids(); + } + + //Rename all the table names + foreach ($result as $db_table) + { + //Get table name with old prefix + $table_old_name = $db_table; + + if ( strpos( $table_old_name, $table_old_prefix ) === 0 ) + { + //Get table name with new prefix + $table_new_name = $table_new_prefix . substr( $table_old_name, $old_prefix_length ); + + //Write query to rename tables name + $sql = "RENAME TABLE `".$table_old_name."` TO `".$table_new_name."`"; + //$sql = "RENAME TABLE %s TO %s"; + + //Execute the query + if ( false === $wpdb->query($sql) ) + { + $error = 1; + echo '

      '.sprintf( __('%s table name update failed', 'all-in-one-wp-security-and-firewall'), ''.$table_old_name.'').'

      '; + $aio_wp_security->debug_logger->log_debug("DB Security Feature - Unable to change prefix of table ".$table_old_name,4); + } else { + $table_count++; + } + } else + { + continue; + } + } + if ( $error == 1 ) + { + echo '

      '.sprintf( __('Please change the prefix manually for the above tables to: %s', 'all-in-one-wp-security-and-firewall'), ''.$table_new_prefix.'').'

      '; + } else + { + echo '

      '.sprintf( __('%s tables had their prefix updated successfully!', 'all-in-one-wp-security-and-firewall'), ''.$table_count.'').'

      '; + } + + //Get wp-config.php file contents and modify it with new info + $config_contents = file($config_file); + $prefix_match_string = '$table_prefix='; //this is our search string for the wp-config.php file + foreach ($config_contents as $line_num => $line) { + $no_ws_line = preg_replace( '/\s+/', '', $line ); //Strip white spaces + if(strpos($no_ws_line, $prefix_match_string) !== FALSE){ + $config_contents[$line_num] = str_replace($table_old_prefix, $table_new_prefix, $line); + break; + } + } + //Now let's modify the wp-config.php file + if (AIOWPSecurity_Utility_File::write_content_to_file($config_file, $config_contents)) + { + echo '

      '. __('wp-config.php file was updated successfully!', 'all-in-one-wp-security-and-firewall').'

      '; + }else + { + echo '

      '.sprintf( __('The "wp-config.php" file was not able to be modified. Please modify this file manually using your favourite editor and search + for variable "$table_prefix" and assign the following value to that variable: %s', 'all-in-one-wp-security-and-firewall'), ''.$table_new_prefix.'').'

      '; + $aio_wp_security->debug_logger->log_debug("DB Security Feature - Unable to modify wp-config.php",4); + } + + //Now let's update the options table + $update_option_table_query = $wpdb->prepare("UPDATE " . $table_new_prefix . "options + SET option_name = '".$table_new_prefix ."user_roles' + WHERE option_name = %s LIMIT 1", $table_old_prefix."user_roles"); + + if ( false === $wpdb->query($update_option_table_query) ) + { + echo '

      '.sprintf( __('Update of table %s failed: unable to change %s to %s', 'all-in-one-wp-security-and-firewall'),$table_new_prefix.'options', $table_old_prefix.'user_roles', $table_new_prefix.'user_roles').'

      '; + $aio_wp_security->debug_logger->log_debug("DB Security Feature - Error when updating the options table",4);//Log the highly unlikely event of DB error + } else + { + echo '

      '.sprintf( __('The options table records which had references to the old DB prefix were updated successfully!', 'all-in-one-wp-security-and-firewall')).'

      '; + } + + //Now let's update the options tables for the multisite subsites if applicable + if (AIOWPSecurity_Utility::is_multisite_install()) { + if(!empty($blog_ids)){ + foreach ($blog_ids as $blog_id) { + if ($blog_id == 1){continue;} //skip main site + $new_pref_and_site_id = $table_new_prefix.$blog_id.'_'; + $old_pref_and_site_id = $table_old_prefix.$blog_id.'_'; + $update_ms_option_table_query = $wpdb->prepare("UPDATE " . $new_pref_and_site_id . "options + SET option_name = '".$new_pref_and_site_id."user_roles' + WHERE option_name = %s LIMIT 1", $old_pref_and_site_id."user_roles"); + if ( false === $wpdb->query($update_ms_option_table_query) ) + { + echo '

      '.sprintf( __('Update of table %s failed: unable to change %s to %s', 'all-in-one-wp-security-and-firewall'),$new_pref_and_site_id.'options', $old_pref_and_site_id.'user_roles', $new_pref_and_site_id.'user_roles').'

      '; + $aio_wp_security->debug_logger->log_debug("DB change prefix feature - Error when updating the subsite options table: ".$new_pref_and_site_id.'options',4);//Log the highly unlikely event of DB error + } else + { + echo '

      '.sprintf( __('The %s table records which had references to the old DB prefix were updated successfully!', 'all-in-one-wp-security-and-firewall'),$new_pref_and_site_id.'options').'

      '; + } + } + + } + } + + //Now let's update the user meta table + $custom_sql = "SELECT user_id, meta_key + FROM " . $table_new_prefix . "usermeta + WHERE meta_key + LIKE '" . $table_old_prefix . "%'"; + + $meta_keys = $wpdb->get_results( $custom_sql ); + + $error_update_usermeta = ''; + + //Update all meta_key field values which have the old table prefix in user_meta table + foreach ($meta_keys as $meta_key ) { + //Create new meta key + $new_meta_key = $table_new_prefix . substr( $meta_key->meta_key, $old_prefix_length ); + + $update_user_meta_sql = $wpdb->prepare("UPDATE " . $table_new_prefix . "usermeta + SET meta_key='" . $new_meta_key . "' + WHERE meta_key=%s AND user_id=%s", $meta_key->meta_key, $meta_key->user_id); + + if (false === $wpdb->query($update_user_meta_sql)) + { + $error_update_usermeta .= '

      '.sprintf( __('Error updating user_meta table where new meta_key = %s, old meta_key = %s and user_id = %s.', 'all-in-one-wp-security-and-firewall'),$new_meta_key,$meta_key->meta_key,$meta_key->user_id).'

      '; + echo $error_update_usermeta; + $aio_wp_security->debug_logger->log_debug("DB Security Feature - Error updating user_meta table where new meta_key = ".$new_meta_key." old meta_key = ".$meta_key->meta_key." and user_id = ".$meta_key->user_id,4);//Log the highly unlikely event of DB error + } + } + echo '

      '.__('The usermeta table records which had references to the old DB prefix were updated successfully!', 'all-in-one-wp-security-and-firewall').'

      '; + //Display tasks finished message + $tasks_finished_msg_string = '

      '. __('DB prefix change tasks have been completed.', 'all-in-one-wp-security-and-firewall').'

      '; + echo ($tasks_finished_msg_string); + } + + /** + * This is an alternative to the deprecated "mysql_list_tables" + * Returns an array of table names + */ + function get_mysql_tables($database='') + { + global $aio_wp_security; + $tables = array(); + $list_tables_sql = "SHOW TABLES FROM `{$database}`;"; + $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); + + if ($mysqli->connect_errno) { + $aio_wp_security->debug_logger->log_debug("AIOWPSecurity_Database_Menu->get_mysql_tables() - DB connection error.",4); + return false; + } + + if ($result = $mysqli->query($list_tables_sql, MYSQLI_USE_RESULT)) { + //Alternative way to get the tables + while ($row = $result->fetch_assoc()) { + foreach( $row AS $value ) { + $tables[] = $value; + } + } + $result->close(); + } + $mysqli->close(); + return $tables; + } + +} //end class \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php new file mode 100644 index 0000000..1789d6d --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php @@ -0,0 +1,466 @@ + 'render_tab1', + 'tab2' => 'render_tab2', + ); + + function __construct() + { + $this->render_menu_page(); + } + + function set_menu_tabs() + { + $this->menu_tabs = array( + 'tab1' => __('File Change Detection','all-in-one-wp-security-and-firewall'), + 'tab2' => __('Malware Scan','all-in-one-wp-security-and-firewall'), + ); + } + + function get_current_tab() + { + $tab_keys = array_keys($this->menu_tabs); + $tab = isset( $_GET['tab'] ) ? sanitize_text_field($_GET['tab']) : $tab_keys[0]; + return $tab; + } + + /* + * Renders our tabs of this menu as nav items + */ + function render_menu_tabs() + { + $current_tab = $this->get_current_tab(); + + echo ''; + } + + /* + * The menu rendering goes here + */ + function render_menu_page() + { + echo '
      '; + echo '

      '.__('Scanner','all-in-one-wp-security-and-firewall').'

      ';//Interface title + $this->set_menu_tabs(); + $tab = $this->get_current_tab(); + $this->render_menu_tabs(); + ?> +
      + menu_tabs); + call_user_func(array(&$this, $this->menu_tabs_handler[$tab])); + ?> +
      +
      + configs->set_value('aiowps_fcds_change_detected', FALSE); + $aio_wp_security->configs->save_config(); + + //Display the last scan results + $this->display_last_scan_results(); + } + + if (isset($_POST['aiowps_view_last_fcd_results'])) + { + //Display the last scan results + if (!$this->display_last_scan_results()){ + $this->show_msg_updated(__('There have been no file changes since the last scan.', 'all-in-one-wp-security-and-firewall')); + } + } + + if (isset($_POST['aiowps_manual_fcd_scan'])) + { + $nonce=$_REQUEST['_wpnonce']; + if (!wp_verify_nonce($nonce, 'aiowpsec-fcd-manual-scan-nonce')) + { + $aio_wp_security->debug_logger->log_debug("Nonce check failed for manual file change detection scan operation!",4); + die(__('Nonce check failed for manual file change detection scan operation!','all-in-one-wp-security-and-firewall')); + } + + $result = $aio_wp_security->scan_obj->execute_file_change_detection_scan(); + //If this is first scan display special message + if ($result['initial_scan'] == 1) + { + $this->show_msg_updated(__('The plugin has detected that this is your first file change detection scan. The file details from this scan will be used to detect file changes for future scans!','all-in-one-wp-security-and-firewall')); + }else if(!$aio_wp_security->configs->get_value('aiowps_fcds_change_detected')){ + $this->show_msg_updated(__('Scan Complete - There were no file changes detected!', 'all-in-one-wp-security-and-firewall')); + } + } + + if(isset($_POST['aiowps_schedule_fcd_scan']))//Do form submission tasks + { + $error = ''; + $reset_scan_data = FALSE; + $file_types = ''; + $files = ''; + + $nonce=$_REQUEST['_wpnonce']; + if (!wp_verify_nonce($nonce, 'aiowpsec-scheduled-fcd-scan-nonce')) + { + $aio_wp_security->debug_logger->log_debug("Nonce check failed for file change detection scan options save!",4); + die("Nonce check failed for file change detection scan options save!"); + } + + $fcd_scan_frequency = sanitize_text_field($_POST['aiowps_fcd_scan_frequency']); + if(!is_numeric($fcd_scan_frequency)) + { + $error .= '
      '.__('You entered a non numeric value for the "backup time interval" field. It has been set to the default value.','all-in-one-wp-security-and-firewall'); + $fcd_scan_frequency = '4';//Set it to the default value for this field + } + + if (!empty($_POST['aiowps_fcd_exclude_filetypes'])) + { + $file_types = trim($_POST['aiowps_fcd_exclude_filetypes']); + //$file_types_array = preg_split( '/\r\n|\r|\n/', $file_types ); + + //Get the currently saved config value and check if this has changed. If so do another scan to reset the scan data so it omits these filetypes + if ($file_types != $aio_wp_security->configs->get_value('aiowps_fcd_exclude_filetypes')) + { + $reset_scan_data = TRUE; + } + } + + if (!empty($_POST['aiowps_fcd_exclude_files'])) + { + $files = trim($_POST['aiowps_fcd_exclude_files']); + //Get the currently saved config value and check if this has changed. If so do another scan to reset the scan data so it omits these files/dirs + if ($files != $aio_wp_security->configs->get_value('aiowps_fcd_exclude_files')) + { + $reset_scan_data = TRUE; + } + + } + + // Explode by end-of-line character, then trim and filter empty lines + $email_list_array = array_filter(array_map('trim', explode(PHP_EOL, $_POST['aiowps_fcd_scan_email_address'])), 'strlen'); + $errors = array(); + foreach($email_list_array as $key=>$value){ + $email_sane = sanitize_email($value); + if(!is_email($email_sane)) + { + $errors[] = __('The following address was removed because it is not a valid email address: ', 'all-in-one-wp-security-and-firewall') + . htmlspecialchars($value); + unset($email_list_array[$key]); + } + } + $email_address = implode(PHP_EOL, $email_list_array); + if ( !empty($errors) ) + { + $this->show_msg_error(__('Attention!','all-in-one-wp-security-and-firewall') . '
      ' . implode('
      ', $errors)); + } + + //Save all the form values to the options + $aio_wp_security->configs->set_value('aiowps_enable_automated_fcd_scan',isset($_POST["aiowps_enable_automated_fcd_scan"])?'1':''); + $aio_wp_security->configs->set_value('aiowps_fcd_scan_frequency',absint($fcd_scan_frequency)); + $aio_wp_security->configs->set_value('aiowps_fcd_scan_interval',$_POST["aiowps_fcd_scan_interval"]); + $aio_wp_security->configs->set_value('aiowps_fcd_exclude_filetypes',$file_types); + $aio_wp_security->configs->set_value('aiowps_fcd_exclude_files',$files); + $aio_wp_security->configs->set_value('aiowps_send_fcd_scan_email',isset($_POST["aiowps_send_fcd_scan_email"])?'1':''); + $aio_wp_security->configs->set_value('aiowps_fcd_scan_email_address',$email_address); + $aio_wp_security->configs->save_config(); + + //Recalculate points after the feature status/options have been altered + $aiowps_feature_mgr->check_feature_status_and_recalculate_points(); + $this->show_msg_settings_updated(); + + //Let's check if backup interval was set to less than 24 hours + if (isset($_POST["aiowps_enable_automated_fcd_scan"]) && ($fcd_scan_frequency < 24) && $_POST["aiowps_fcd_scan_interval"]==0) + { + $alert_user_msg = 'ATTENTION: You have configured your file change detection scan to occur at least once daily. For most websites we recommended that you choose a less frequent + schedule such as once every few days, once a week or once a month. Choosing a less frequent schedule will also help reduce your server load.'; + $this->show_msg_updated(__($alert_user_msg, 'all-in-one-wp-security-and-firewall')); + } + + if($reset_scan_data) + { + //Clear old scan row and ask user to perform a fresh scan to reset the data + $aiowps_global_meta_tbl_name = AIOWPSEC_TBL_GLOBAL_META_DATA; + $where = array('meta_key1' => 'file_change_detection', 'meta_value1' => 'file_scan_data'); + $wpdb->delete( $aiowps_global_meta_tbl_name, $where); + $result = $aio_wp_security->scan_obj->execute_file_change_detection_scan(); + $new_scan_alert = __('NEW SCAN COMPLETED: The plugin has detected that you have made changes to the "File Types To Ignore" or "Files To Ignore" fields. + In order to ensure that future scan results are accurate, the old scan data has been refreshed.', 'all-in-one-wp-security-and-firewall'); + $this->show_msg_updated($new_scan_alert); + } + + } + + //Display an alert warning message if a file change was detected + if ($aio_wp_security->configs->get_value('aiowps_fcds_change_detected')) + { + $error_msg = __('All In One WP Security & Firewall has detected that there was a change in your host\'s files.', 'all-in-one-wp-security-and-firewall'); + + $button = '
      '; + $error_msg .= $button; + $this->show_msg_error($error_msg); + } + + + ?> +
      + '.__('If given an opportunity hackers can insert their code or files into your system which they can then use to carry out malicious acts on your site.', 'all-in-one-wp-security-and-firewall'). + '
      '.__('Being informed of any changes in your files can be a good way to quickly prevent a hacker from causing damage to your website.', 'all-in-one-wp-security-and-firewall'). + '
      '.__('In general, WordPress core and plugin files and file types such as ".php" or ".js" should not change often and when they do, it is important that you are made aware when a change occurs and which file was affected.', 'all-in-one-wp-security-and-firewall'). + '
      '.__('The "File Change Detection Feature" will notify you of any file change which occurs on your system, including the addition and deletion of files by performing a regular automated or manual scan of your system\'s files.', 'all-in-one-wp-security-and-firewall'). + '
      '.__('This feature also allows you to exclude certain files or folders from the scan in cases where you know that they change often as part of their normal operation. (For example log files and certain caching plugin files may change often and hence you may choose to exclude such files from the file change detection scan)', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      + +
      +

      +
      +
      + + + + + +
      + +
      +
      +
      +

      +
      +
      + + + + + +
      + +
      +
      +
      +

      +
      + output_feature_details_badge("scan-file-change-detection"); + ?> + +
      + + + + + + + + + + + + + + + + + + + + + + +
      : + configs->get_value('aiowps_enable_automated_fcd_scan')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      : + + +
      : +
      + + + +
      + '.__('You can exclude file types from the scan which would not normally pose any security threat if they were changed. These can include things such as image files.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('Example: If you want the scanner to ignore files of type jpg, png, and bmp, then you would enter the following:', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('jpg', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('png', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('bmp', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      +
      : +
      + + + +
      + '.__('You can exclude specific files/directories from the scan which would not normally pose any security threat if they were changed. These can include things such as log files.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('Example: If you want the scanner to ignore certain files in different directories or whole directories, then you would enter the following:', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('cache/config/master.php', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('somedirectory', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      +
      : + configs->get_value('aiowps_send_fcd_scan_email')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      + +
      + +
      + +
      +
      + + +
      + '.__('What is Malware?', 'all-in-one-wp-security-and-firewall').''; + echo '

      '.__('The word Malware stands for Malicious Software. It can consist of things like trojan horses, adware, worms, spyware and any other undesirable code which a hacker will try to inject into your website.', 'all-in-one-wp-security-and-firewall').'

      '. + '

      '.__('Often when malware code has been inserted into your site you will normally not notice anything out of the ordinary based on appearances, but it can have a dramatic effect on your site\'s search ranking.', 'all-in-one-wp-security-and-firewall').'

      '. + '

      '.__('This is because the bots and spiders from search engines such as Google have the capability to detect malware when they are indexing the pages on your site, and consequently they can blacklist your website which will in turn affect your search rankings.', 'all-in-one-wp-security-and-firewall').'

      '; + + $site_scanners_link = 'CLICK HERE'; + + echo '

      '.__('Scanning For Malware', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('Due to the constantly changing and complex nature of Malware, scanning for such things using a standalone plugin will not work reliably. This is something best done via an external scan of your site regularly.', 'all-in-one-wp-security-and-firewall').'

      '. + '

      '.__('This is why we have created an easy-to-use scanning service which is hosted off our own server which will scan your site for malware once every day and notify you if it finds anything.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('When you sign up for this service you will get the following:', 'all-in-one-wp-security-and-firewall').'

      '; + echo '
        +
      • '.__('Automatic Daily Scan of 1 Website','all-in-one-wp-security-and-firewall').'
      • +
      • '.__('Automatic Malware & Blacklist Monitoring','all-in-one-wp-security-and-firewall').'
      • +
      • '.__('Automatic Email Alerting','all-in-one-wp-security-and-firewall').'
      • +
      • '.__('Site uptime monitoring','all-in-one-wp-security-and-firewall').'
      • +
      • '.__('Site response time monitoring','all-in-one-wp-security-and-firewall').'
      • +
      • '.__('We provide advice for malware cleanup','all-in-one-wp-security-and-firewall').'
      • +
      • '.__('Blacklist Removal','all-in-one-wp-security-and-firewall').'
      • +
      • '.__('No Contract (Cancel Anytime)','all-in-one-wp-security-and-firewall').'
      • +
      '; + echo '

      '.sprintf(__('To learn more please %s.', 'all-in-one-wp-security-and-firewall'), $site_scanners_link).'

      '; + ?> +
      + + +
      +

      +
      + '.__('The following files were added to your host.', 'all-in-one-wp-security-and-firewall').'
      '; + $files_added_output .= ''; + $files_added_output .= ''; + $files_added_output .= ''; + $files_added_output .= ''; + $files_added_output .= ''; + $files_added_output .= ''; + foreach ($scan_results_unserialized['files_added'] as $key=>$value) { + $files_added_output .= ''; + $files_added_output .= ''; + $files_added_output .= ''; + $files_added_output .= ''; + $files_added_output .= ''; + } + $files_added_output .= '
      '.__('File','all-in-one-wp-security-and-firewall').''.__('File Size','all-in-one-wp-security-and-firewall').''.__('File Modified','all-in-one-wp-security-and-firewall').'
      '.$key.''.$value['filesize'].''.date('Y-m-d H:i:s',$value['last_modified']).'
      '; + echo $files_added_output; + } + echo '
      '; + if (!empty($scan_results_unserialized['files_removed'])) + { + //Output table of files removed + echo '
      '.__('The following files were removed from your host.', 'all-in-one-wp-security-and-firewall').'
      '; + $files_removed_output .= ''; + $files_removed_output .= ''; + $files_removed_output .= ''; + $files_removed_output .= ''; + $files_removed_output .= ''; + $files_removed_output .= ''; + foreach ($scan_results_unserialized['files_removed'] as $key=>$value) { + $files_removed_output .= ''; + $files_removed_output .= ''; + $files_removed_output .= ''; + $files_removed_output .= ''; + $files_removed_output .= ''; + } + $files_removed_output .= '
      '.__('File','all-in-one-wp-security-and-firewall').''.__('File Size','all-in-one-wp-security-and-firewall').''.__('File Modified','all-in-one-wp-security-and-firewall').'
      '.$key.''.$value['filesize'].''.date('Y-m-d H:i:s',$value['last_modified']).'
      '; + echo $files_removed_output; + + } + + echo '
      '; + + if (!empty($scan_results_unserialized['files_changed'])) + { + //Output table of files changed + echo '
      '.__('The following files were changed on your host.', 'all-in-one-wp-security-and-firewall').'
      '; + $files_changed_output .= ''; + $files_changed_output .= ''; + $files_changed_output .= ''; + $files_changed_output .= ''; + $files_changed_output .= ''; + $files_changed_output .= ''; + foreach ($scan_results_unserialized['files_changed'] as $key=>$value) { + $files_changed_output .= ''; + $files_changed_output .= ''; + $files_changed_output .= ''; + $files_changed_output .= ''; + $files_changed_output .= ''; + } + $files_changed_output .= '
      '.__('File','all-in-one-wp-security-and-firewall').''.__('File Size','all-in-one-wp-security-and-firewall').''.__('File Modified','all-in-one-wp-security-and-firewall').'
      '.$key.''.$value['filesize'].''.date('Y-m-d H:i:s',$value['last_modified']).'
      '; + echo $files_changed_output; + } + + ?> +
      + 'render_tab1', + 'tab2' => 'render_tab2', + 'tab3' => 'render_tab3', + 'tab4' => 'render_tab4', + ); + + function __construct() + { + $this->render_menu_page(); + add_action( 'admin_footer', array( &$this, 'filesystem_menu_footer_code' ) ); + } + + function set_menu_tabs() + { + $this->menu_tabs = array( + 'tab1' => __('File Permissions','all-in-one-wp-security-and-firewall'), + 'tab2' => __('PHP File Editing','all-in-one-wp-security-and-firewall'), + 'tab3' => __('WP File Access','all-in-one-wp-security-and-firewall'), + 'tab4' => __('Host System Logs','all-in-one-wp-security-and-firewall'), + ); + } + + function get_current_tab() + { + $tab_keys = array_keys($this->menu_tabs); + $tab = isset( $_GET['tab'] ) ? sanitize_text_field($_GET['tab']) : $tab_keys[0]; + return $tab; + } + + /* + * Renders our tabs of this menu as nav items + */ + function render_menu_tabs() + { + $current_tab = $this->get_current_tab(); + + echo ''; + } + + /* + * The menu rendering goes here + */ + function render_menu_page() + { + echo '
      '; + echo '

      '.__('Filesystem Security','all-in-one-wp-security-and-firewall').'

      ';//Interface title + $this->set_menu_tabs(); + $tab = $this->get_current_tab(); + $this->render_menu_tabs(); + ?> +
      + menu_tabs); + call_user_func(array(&$this, $this->menu_tabs_handler[$tab])); + ?> +
      +
      + debug_logger->log_debug("Nonce check failed for manual DB backup operation!",4); + die(__('Nonce check failed for manual DB backup operation!','all-in-one-wp-security-and-firewall')); + } + if (isset($_POST['aiowps_permission_chg_file'])) + { + $folder_or_file = $_POST['aiowps_permission_chg_file']; + $rec_perm_oct_string = $_POST['aiowps_recommended_permissions']; //Convert the octal string to dec so the chmod func will accept it + $rec_perm_dec = octdec($rec_perm_oct_string); //Convert the octal string to dec so the chmod func will accept it + $perm_result = @chmod($_POST['aiowps_permission_chg_file'], $rec_perm_dec); + if ($perm_result === true) + { + $msg = sprintf( __('The permissions for %s were succesfully changed to %s', 'all-in-one-wp-security-and-firewall'), $folder_or_file, $rec_perm_oct_string); + $this->show_msg_updated($msg); + }else if($perm_result === false) + { + $msg = sprintf( __('Unable to change permissions for %s!', 'all-in-one-wp-security-and-firewall'), $folder_or_file); + $this->show_msg_error($msg); + } + } + } + ?> +

      +
      + '.__('Your WordPress file and folder permission settings govern the accessability and read/write privileges of the files and folders which make up your WP installation.', 'all-in-one-wp-security-and-firewall').' +
      '.__('Your WP installation already comes with reasonably secure file permission settings for the filesystem.', 'all-in-one-wp-security-and-firewall').' +
      '.__('However, sometimes people or other plugins modify the various permission settings of certain core WP folders or files such that they end up making their site less secure because they chose the wrong permission values.', 'all-in-one-wp-security-and-firewall').' +
      '.__('This feature will scan the critical WP core folders and files and will highlight any permission settings which are insecure.', 'all-in-one-wp-security-and-firewall').' +

      '; + ?> +
      + +
      +

      +
      + output_feature_details_badge("filesystem-file-permissions"); + ?> +
      + + + + + + + + + + + + + files_and_dirs_to_check; + foreach ($files_dirs_to_check as $file_or_dir) + { + $this->show_wp_filesystem_permission_status($file_or_dir['name'],$file_or_dir['path'],$file_or_dir['permissions']); + } + ?> + + + + + + + + + +
      +
      +
      + debug_logger->log_debug("Nonce check failed on disable PHP file edit options save!",4); + die("Nonce check failed on disable PHP file edit options save!"); + } + + if(isset($_POST['aiowps_disable_file_editing'])) + { + + $res = AIOWPSecurity_Utility::disable_file_edits();//$this->disable_file_edits(); + } else + { + $res = AIOWPSecurity_Utility::enable_file_edits();//$this->enable_file_edits(); + } + if ($res) + { + //Save settings if no errors + $aio_wp_security->configs->set_value('aiowps_disable_file_editing',isset($_POST["aiowps_disable_file_editing"])?'1':''); + $aio_wp_security->configs->save_config(); + + //Recalculate points after the feature status/options have been altered + $aiowps_feature_mgr->check_feature_status_and_recalculate_points(); + $this->show_msg_updated(__('Your PHP file editing settings were saved successfully.', 'all-in-one-wp-security-and-firewall')); + } + else + { + $this->show_msg_error(__('Operation failed! Unable to modify or make a backup of wp-config.php file!', 'all-in-one-wp-security-and-firewall')); + } + //$this->show_msg_settings_updated(); + + } + else { + // Make sure the setting value is up-to-date with current value in WP config + $aio_wp_security->configs->set_value('aiowps_disable_file_editing', defined('DISALLOW_FILE_EDIT') && DISALLOW_FILE_EDIT ? '1' : ''); + $aio_wp_security->configs->save_config(); + //Recalculate points after the feature status/options have been altered + $aiowps_feature_mgr->check_feature_status_and_recalculate_points(); + } + ?> +

      +
      + '.__('The Wordpress Dashboard by default allows administrators to edit PHP files, such as plugin and theme files.', 'all-in-one-wp-security-and-firewall').' +
      '.__('This is often the first tool an attacker will use if able to login, since it allows code execution.', 'all-in-one-wp-security-and-firewall').' +
      '.__('This feature will disable the ability for people to edit PHP files via the dashboard.', 'all-in-one-wp-security-and-firewall').' +

      '; + ?> +
      + +
      +

      +
      + output_feature_details_badge("filesystem-file-editing"); + ?> + +
      + + + + + + +
      : + configs->get_value('aiowps_disable_file_editing')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      + +
      +
      + debug_logger->log_debug("Nonce check failed on enable basic firewall settings!",4); + die("Nonce check failed on enable basic firewall settings!"); + } + + //Save settings + if(isset($_POST['aiowps_prevent_default_wp_file_access'])) + { + $aio_wp_security->configs->set_value('aiowps_prevent_default_wp_file_access','1'); + } + else + { + $aio_wp_security->configs->set_value('aiowps_prevent_default_wp_file_access',''); + } + + //Commit the config settings + $aio_wp_security->configs->save_config(); + + //Recalculate points after the feature status/options have been altered + $aiowps_feature_mgr->check_feature_status_and_recalculate_points(); + + //Now let's write the applicable rules to the .htaccess file + $res = AIOWPSecurity_Utility_Htaccess::write_to_htaccess(); + + if ($res) + { + $this->show_msg_updated(__('You have successfully saved the Prevent Access to Default WP Files configuration.', 'all-in-one-wp-security-and-firewall')); + } + else + { + $this->show_msg_error(__('Could not write to the .htaccess file. Please check the file permissions.', 'all-in-one-wp-security-and-firewall')); + } + } + + ?> +

      +
      + '.$info_msg.'

      '.'

      '.__('By preventing access to these files you are hiding some key pieces of information (such as WordPress version info) from potential hackers.', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      + +
      +

      +
      + output_feature_details_badge("block-wp-files-access"); + ?> +
      + + + + + + +
      : + configs->get_value('aiowps_prevent_default_wp_file_access')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      + +
      +
      + configs->set_value('aiowps_system_log_file',$sys_log_file); + }else{ + $sys_log_file = 'error_log'; + $aio_wp_security->configs->set_value('aiowps_system_log_file',$sys_log_file); + } + $aio_wp_security->configs->save_config(); + }else{ + $sys_log_file = $aio_wp_security->configs->get_value('aiowps_system_log_file'); + } + + ?> +

      +
      + '.__('Sometimes your hosting platform will produce error or warning logs in a file called "error_log".', 'all-in-one-wp-security-and-firewall').' +
      '.__('Depending on the nature and cause of the error or warning, your hosting server can create multiple instances of this file in numerous directory locations of your WordPress installation.', 'all-in-one-wp-security-and-firewall').' +
      '.__('By occassionally viewing the contents of these logs files you can keep informed of any underlying problems on your system which you might need to address.', 'all-in-one-wp-security-and-firewall').' +

      '; + ?> +
      + +
      +

      +
      +

      Please click the button below to view the latest system logs:

      +
      + +
      : + + +
      +
      + + + <?php __('Loading...', 'all-in-one-wp-security-and-firewall'); ?> + +
      +
      + debug_logger->log_debug("Nonce check failed on view system log operation!",4); + die("Nonce check failed on view system log operation!"); + } + + $logResults = AIOWPSecurity_Utility_File::recursive_file_search($sys_log_file, 0, ABSPATH); + if (empty($logResults) || $logResults == NULL || $logResults == '' || $logResults === FALSE) + { + $this->show_msg_updated(__('No system logs were found!', 'all-in-one-wp-security-and-firewall')); + } + else + { + foreach($logResults as $file) + { + $this->display_system_logs_in_table($file); + } + } + } + } + + /* + * Scans WP key core files and directory permissions and populates a wp wide_fat table + * Displays a red background entry with a "Fix" button for permissions which are "777" + * Displays a yellow background entry with a "Fix" button for permissions which are less secure than the recommended + * Displays a green entry for permissions which are as secure or better than the recommended + */ + function show_wp_filesystem_permission_status($name,$path,$recommended) + { + $fix = false; + $configmod = AIOWPSecurity_Utility_File::get_file_permission($path); + if ($configmod == "0777"){ + $trclass = "aio_table_row_red"; //Display a red background if permissions are set as least secure ("777") + $fix = true; + } + else if($configmod != $recommended) + { + //$res = $this->is_file_permission_secure($recommended, $configmod); + $res = AIOWPSecurity_Utility_File::is_file_permission_secure($recommended, $configmod); + if ($res) + { + $trclass = "aio_table_row_green"; //If the current permissions are even tighter than recommended then display a green row + $fix = true; + } + else + { + $trclass = "aio_table_row_yellow"; //Display a yellow background if permissions are set to something different than recommended + $fix = true; + } + } + else + { + $trclass = "aio_table_row_green"; + } + echo ""; + echo '' . $name . ""; + echo ''. $path .""; + echo '' . $configmod . ''; + echo '' . $recommended . ''; + if ($fix) + { + echo ' + + + + '; + } else + { + echo ''.__('No Action Required', 'all-in-one-wp-security-and-firewall').''; + } + echo ""; + } + + + + function filesystem_menu_footer_code() + { + ?> + + debug_logger->log_debug("AIOWPSecurity_Filesystem_Menu - Unable to read file: ".$filepath,4); + + } + $last_50_entries = array_slice($error_file_contents, -50); //extract the last 50 entries + ?> + + + + + + + + "; + echo '"; + echo ""; + } + ?> + +
      '.$filepath.'')); ?>
      ' . $entry . "
      + 'render_tab1', + 'tab2' => 'render_tab2', + 'tab3' => 'render_tab3', + 'tab4' => 'render_tab4', + 'tab5' => 'render_tab5', + 'tab6' => 'render_tab6', + 'tab7' => 'render_tab7', + ); + + function __construct() + { + $this->render_menu_page(); + } + + function set_menu_tabs() + { + $this->menu_tabs = array( + 'tab1' => __('Basic Firewall Rules', 'all-in-one-wp-security-and-firewall'), + 'tab2' => __('Additional Firewall Rules', 'all-in-one-wp-security-and-firewall'), + 'tab3' => __('6G Blacklist Firewall Rules', 'all-in-one-wp-security-and-firewall'), + 'tab4' => __('Internet Bots', 'all-in-one-wp-security-and-firewall'), + 'tab5' => __('Prevent Hotlinks', 'all-in-one-wp-security-and-firewall'), + 'tab6' => __('404 Detection', 'all-in-one-wp-security-and-firewall'), + 'tab7' => __('Custom Rules', 'all-in-one-wp-security-and-firewall'), + ); + } + + function get_current_tab() + { + $tab_keys = array_keys($this->menu_tabs); + $tab = isset( $_GET['tab'] ) ? sanitize_text_field($_GET['tab']) : $tab_keys[0]; + return $tab; + } + + /* + * Renders our tabs of this menu as nav items + */ + function render_menu_tabs() + { + $current_tab = $this->get_current_tab(); + + echo ''; + } + + /* + * The menu rendering goes here + */ + function render_menu_page() + { + echo '
      '; + echo '

      '.__('Firewall','all-in-one-wp-security-and-firewall').'

      ';//Interface title + $this->set_menu_tabs(); + $tab = $this->get_current_tab(); + $this->render_menu_tabs(); + ?> +
      + menu_tabs); + call_user_func(array(&$this, $this->menu_tabs_handler[$tab])); + ?> +
      +
      + debug_logger->log_debug("Nonce check failed on enable basic firewall settings!",4); + die("Nonce check failed on enable basic firewall settings!"); + } + + //Save settings + if(isset($_POST['aiowps_enable_basic_firewall'])) + { + $aio_wp_security->configs->set_value('aiowps_enable_basic_firewall','1'); + } + else + { + $aio_wp_security->configs->set_value('aiowps_enable_basic_firewall',''); + } + + $aio_wp_security->configs->set_value('aiowps_enable_pingback_firewall',isset($_POST["aiowps_enable_pingback_firewall"])?'1':''); //this disables all xmlrpc functionality + $aio_wp_security->configs->set_value('aiowps_disable_xmlrpc_pingback_methods',isset($_POST["aiowps_disable_xmlrpc_pingback_methods"])?'1':''); //this disables only pingback methods of xmlrpc but leaves other methods so that Jetpack and other apps will still work + $aio_wp_security->configs->set_value('aiowps_block_debug_log_file_access',isset($_POST["aiowps_block_debug_log_file_access"])?'1':''); + + //Commit the config settings + $aio_wp_security->configs->save_config(); + + //Recalculate points after the feature status/options have been altered + $aiowps_feature_mgr->check_feature_status_and_recalculate_points(); + + //Now let's write the applicable rules to the .htaccess file + $res = AIOWPSecurity_Utility_Htaccess::write_to_htaccess(); + + if ($res) + { + $this->show_msg_updated(__('Settings were successfully saved', 'all-in-one-wp-security-and-firewall')); + } + else + { + $this->show_msg_error(__('Could not write to the .htaccess file. Please check the file permissions.', 'all-in-one-wp-security-and-firewall')); + } + } + + ?> +

      +
      + + +
      + backup'; + $info_msg = sprintf( __('This should not have any impact on your site\'s general functionality but if you wish you can take a %s of your .htaccess file before proceeding.', 'all-in-one-wp-security-and-firewall'), $backup_tab_link); + echo '

      '.__('The features in this tab allow you to activate some basic firewall security protection rules for your site.', 'all-in-one-wp-security-and-firewall'). + '
      '.__('The firewall functionality is achieved via the insertion of special code into your currently active .htaccess file.', 'all-in-one-wp-security-and-firewall'). + '
      '.$info_msg.'

      '; + ?> +
      + configs->get_value('aiowps_enable_pingback_firewall')=='1'){ + ?> +
      +

      + '.__('Attention: You have enabled the "Completely Block Access To XMLRPC" checkbox which means all XMLRPC functionality will be blocked.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('By leaving this feature enabled you will prevent Jetpack or Wordpress iOS or other apps which need XMLRPC from working correctly on your site.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('If you still need XMLRPC then uncheck the "Completely Block Access To XMLRPC" checkbox and enable only the "Disable Pingback Functionality From XMLRPC" checkbox.', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +

      +
      + + + +
      +

      +
      + output_feature_details_badge("firewall-basic-rules"); + ?> + + + + + +
      : + configs->get_value('aiowps_enable_basic_firewall')=='1') echo ' checked="checked"'; ?> value="1"/> + + + +
      + '.__('This setting will implement the following basic firewall protection mechanisms on your site:', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('1) Protect your htaccess file by denying access to it.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('2) Disable the server signature.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('3) Limit file upload size (10MB).', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('4) Protect your wp-config.php file by denying access to it.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('The above firewall features will be applied via your .htaccess file and should not affect your site\'s overall functionality.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('You are still advised to take a backup of your active .htaccess file just in case.', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      +
      +
      + +
      +

      +
      + output_feature_details_badge("firewall-pingback-rules"); + ?> + + + + + + + + + +
      : + configs->get_value('aiowps_enable_pingback_firewall')=='1') echo ' checked="checked"'; ?> value="1"/> + + + +
      + '.__('This setting will add a directive in your .htaccess to disable access to the WordPress xmlrpc.php file which is responsible for the XML-RPC functionality in WordPress.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('Hackers can exploit various vulnerabilities in the WordPress XML-RPC API in a number of ways such as:', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('1) Denial of Service (DoS) attacks', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('2) Hacking internal routers.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('3) Scanning ports in internal networks to get info from various hosts.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('Apart from the security protection benefit, this feature may also help reduce load on your server, particularly if your site currently has a lot of unwanted traffic hitting the XML-RPC API on your installation.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('NOTE: You should only enable this feature if you are not currently using the XML-RPC functionality on your WordPress installation.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('Leave this feature disabled and use the feature below if you want pingback protection but you still need XMLRPC.', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      +
      : + configs->get_value('aiowps_disable_xmlrpc_pingback_methods')=='1') echo ' checked="checked"'; ?> value="1"/> + + + +
      + '.__('NOTE: If you use Jetpack or the Wordpress iOS or other apps then you should enable this feature but leave the "Completely Block Access To XMLRPC" checkbox unchecked.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('The feature will still allow XMLRPC functionality on your site but will disable the pingback methods.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('This feature will also remove the "X-Pingback" header if it is present.', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      +
      +
      + +
      +

      +
      + output_feature_details_badge("firewall-block-debug-file-access"); + ?> + + + + + +
      : + configs->get_value('aiowps_block_debug_log_file_access')=='1') echo ' checked="checked"'; ?> value="1"/> + + + +
      + '.__('WordPress has an option to turn on the debug logging to a file located in wp-content/debug.log. This file may contain sensitive information.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('Using this optoin will block external access to this file. You can still access this file by logging into your site via FTP', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      +
      +
      + + +
      + debug_logger->log_debug("Nonce check failed on enable advanced firewall settings!",4); + die("Nonce check failed on enable advanced firewall settings!"); + } + + //Save settings + if(isset($_POST['aiowps_disable_index_views'])) + { + $aio_wp_security->configs->set_value('aiowps_disable_index_views','1'); + } + else + { + $aio_wp_security->configs->set_value('aiowps_disable_index_views',''); + } + + if(isset($_POST['aiowps_disable_trace_and_track'])) + { + $aio_wp_security->configs->set_value('aiowps_disable_trace_and_track','1'); + } + else + { + $aio_wp_security->configs->set_value('aiowps_disable_trace_and_track',''); + } + + if(isset($_POST['aiowps_forbid_proxy_comments'])) + { + $aio_wp_security->configs->set_value('aiowps_forbid_proxy_comments','1'); + } + else + { + $aio_wp_security->configs->set_value('aiowps_forbid_proxy_comments',''); + } + + if(isset($_POST['aiowps_deny_bad_query_strings'])) + { + $aio_wp_security->configs->set_value('aiowps_deny_bad_query_strings','1'); + } + else + { + $aio_wp_security->configs->set_value('aiowps_deny_bad_query_strings',''); + } + + if(isset($_POST['aiowps_advanced_char_string_filter'])) + { + $aio_wp_security->configs->set_value('aiowps_advanced_char_string_filter','1'); + } + else + { + $aio_wp_security->configs->set_value('aiowps_advanced_char_string_filter',''); + } + + //Commit the config settings + $aio_wp_security->configs->save_config(); + + //Now let's write the applicable rules to the .htaccess file + $res = AIOWPSecurity_Utility_Htaccess::write_to_htaccess(); + + if ($res) + { + $this->show_msg_updated(__('You have successfully saved the Additional Firewall Protection configuration', 'all-in-one-wp-security-and-firewall')); + } + else + { + $this->show_msg_error(__('Could not write to the .htaccess file. Please check the file permissions.', 'all-in-one-wp-security-and-firewall')); + } + + if($error) + { + $this->show_msg_error($error); + } + + } + ?> +

      +
      + backup'; + $info_msg = sprintf( __('Due to the nature of the code being inserted to the .htaccess file, this feature may break some functionality for certain plugins and you are therefore advised to take a %s of .htaccess before applying this configuration.', 'all-in-one-wp-security-and-firewall'), $backup_tab_link); + + echo '

      '.__('This feature allows you to activate more advanced firewall settings to your site.', 'all-in-one-wp-security-and-firewall'). + '
      '.__('The advanced firewall rules are applied via the insertion of special code to your currently active .htaccess file.', 'all-in-one-wp-security-and-firewall'). + '
      '.$info_msg.'

      '; + ?> +
      + +
      + + +
      +

      +
      + output_feature_details_badge("firewall-disable-index-views"); + ?> + + + + + +
      : + configs->get_value('aiowps_disable_index_views')=='1') echo ' checked="checked"'; ?> value="1"/> + + + +
      +

      + '; + _e('This feature will prevent the listing of contents for all directories.', 'all-in-one-wp-security-and-firewall'); + echo '
      '; + _e('NOTE: In order for this feature to work "AllowOverride" of the Indexes directive must be enabled in your httpd.conf file. Ask your hosting provider to check this if you don\'t have access to httpd.conf', 'all-in-one-wp-security-and-firewall'); + ?> +

      +
      +
      +
      +
      +

      +
      + output_feature_details_badge("firewall-disable-trace-track"); + ?> + + + + + +
      : + configs->get_value('aiowps_disable_trace_and_track')=='1') echo ' checked="checked"'; ?> value="1"/> + + + +
      +

      + '; + _e('This hacking technique is usually used together with cross site scripting attacks (XSS).', 'all-in-one-wp-security-and-firewall'); + echo '
      '; + _e('Disabling trace and track on your site will help prevent HTTP Trace attacks.', 'all-in-one-wp-security-and-firewall'); + ?> +

      +
      +
      +
      +
      +

      +
      + output_feature_details_badge("firewall-forbid-proxy-comments"); + ?> + + + + + + +
      : + configs->get_value('aiowps_forbid_proxy_comments')=='1') echo ' checked="checked"'; ?> value="1"/> + + + +
      +

      + '.__('By forbidding proxy comments you are in effect eliminating some SPAM and other proxy requests.', 'all-in-one-wp-security-and-firewall'); + ?> +

      +
      +
      +
      +
      +

      +
      + output_feature_details_badge("firewall-deny-bad-queries"); + ?> + + + + + + +
      : + configs->get_value('aiowps_deny_bad_query_strings')=='1') echo ' checked="checked"'; ?> value="1"/> + + + +
      +

      + '.__('NOTE: Some of these strings might be used for plugins or themes and hence this might break some functionality.', 'all-in-one-wp-security-and-firewall'); + echo '
      '.__('You are therefore strongly advised to take a backup of your active .htaccess file before applying this feature.', 'all-in-one-wp-security-and-firewall').''; + ?> +

      +
      +
      +
      +
      +

      +
      + output_feature_details_badge("firewall-advanced-character-string-filter"); + ?> + + + + + + +
      : + configs->get_value('aiowps_advanced_char_string_filter')=='1') echo ' checked="checked"'; ?> value="1"/> + + + +
      +

      + '.__('This setting matches for common malicious string patterns and exploits and will produce a 403 error for the hacker attempting the query.', 'all-in-one-wp-security-and-firewall'); + echo '
      '.__('NOTE: Some strings for this setting might break some functionality.', 'all-in-one-wp-security-and-firewall'); + echo '
      '.__('You are therefore strongly advised to take a backup of your active .htaccess file before applying this feature.', 'all-in-one-wp-security-and-firewall').''; + ?> +

      +
      +
      +
      + +
      + debug_logger->log_debug("Nonce check failed on enable 5G/6G firewall settings!",4); + die("Nonce check failed on enable 5G/6G firewall settings!"); + } + + //Save settings + if(isset($_POST['aiowps_enable_5g_firewall'])) + { + $aio_wp_security->configs->set_value('aiowps_enable_5g_firewall','1'); + } + else + { + $aio_wp_security->configs->set_value('aiowps_enable_5g_firewall',''); + } + if(isset($_POST['aiowps_enable_6g_firewall'])) + { + $aio_wp_security->configs->set_value('aiowps_enable_6g_firewall','1'); + } + else + { + $aio_wp_security->configs->set_value('aiowps_enable_6g_firewall',''); + } + + //Commit the config settings + $aio_wp_security->configs->save_config(); + + //Now let's write the applicable rules to the .htaccess file + $res = AIOWPSecurity_Utility_Htaccess::write_to_htaccess(); + + if ($res) + { + $this->show_msg_updated(__('You have successfully saved the 5G/6G Firewall Protection configuration', 'all-in-one-wp-security-and-firewall')); + // Recalculate points after the feature status/options have been altered + $aiowps_feature_mgr->check_feature_status_and_recalculate_points(); + } + else + { + $this->show_msg_error(__('Could not write to the .htaccess file. Please check the file permissions.', 'all-in-one-wp-security-and-firewall')); + } + } + + ?> +

      +
      + backup'; + $info_msg = '

      '.sprintf( __('This feature allows you to activate the %s (or legacy %s) firewall security protection rules designed and produced by %s.', 'all-in-one-wp-security-and-firewall'), '6G', '5G', 'Perishable Press').'

      '; + $info_msg .= '

      '.__('The 6G Blacklist is updated and improved version of 5G Blacklist. If you have 5G Blacklist active, you might consider activating 6G Blacklist instead.', 'all-in-one-wp-security-and-firewall').'

      '; + $info_msg .= '

      '.__('The 6G Blacklist is a simple, flexible blacklist that helps reduce the number of malicious URL requests that hit your website.', 'all-in-one-wp-security-and-firewall').'

      '; + $info_msg .= '

      '.__('The added advantage of applying the 6G firewall to your site is that it has been tested and confirmed by the people at PerishablePress.com to be an optimal and least disruptive set of .htaccess security rules for general WP sites running on an Apache server or similar.', 'all-in-one-wp-security-and-firewall').'

      '; + $info_msg .= '

      '.sprintf( __('Therefore the 6G firewall rules should not have any impact on your site\'s general functionality but if you wish you can take a %s of your .htaccess file before proceeding.', 'all-in-one-wp-security-and-firewall'), $backup_tab_link).'

      '; + echo $info_msg; + ?> +
      + +
      +

      +
      + output_feature_details_badge("firewall-enable-5g-6g-blacklist"); + ?> + +
      + + + + + + + + + + +
      : + configs->get_value('aiowps_enable_6g_firewall')=='1') echo ' checked="checked"'; ?> value="1"/> + + + +
      + '.__('This setting will implement the 6G security firewall protection mechanisms on your site which include the following things:', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('1) Block forbidden characters commonly used in exploitative attacks.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('2) Block malicious encoded URL characters such as the ".css(" string.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('3) Guard against the common patterns and specific exploits in the root portion of targeted URLs.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('4) Stop attackers from manipulating query strings by disallowing illicit characters.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('....and much more.', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      +
      : + configs->get_value('aiowps_enable_5g_firewall')=='1') echo ' checked="checked"'; ?> value="1"/> + + + +
      + '.__('This setting will implement the 5G security firewall protection mechanisms on your site which include the following things:', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('1) Block forbidden characters commonly used in exploitative attacks.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('2) Block malicious encoded URL characters such as the ".css(" string.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('3) Guard against the common patterns and specific exploits in the root portion of targeted URLs.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('4) Stop attackers from manipulating query strings by disallowing illicit characters.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('....and much more.', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      +
      + +
      +
      + debug_logger->log_debug("Nonce check failed for save internet bot settings!",4); + die("Nonce check failed for save internet bot settings!"); + } + + //Save settings + if(isset($_POST['aiowps_block_fake_googlebots'])) + { + $aio_wp_security->configs->set_value('aiowps_block_fake_googlebots','1'); + } + else + { + $aio_wp_security->configs->set_value('aiowps_block_fake_googlebots',''); + } + + //Commit the config settings + $aio_wp_security->configs->save_config(); + + $this->show_msg_updated(__('The Internet bot settings were successfully saved', 'all-in-one-wp-security-and-firewall')); + } + + ?> +

      +
      + +
      + What is an Internet Bot'; + $info_msg .= '

      '.sprintf( __('%s?', 'all-in-one-wp-security-and-firewall'), $wiki_link).'

      '; + + $info_msg .= '

      '. __('A bot is a piece of software which runs on the Internet and performs automatic tasks. For example when Google indexes your pages it uses automatic bots to achieve this task.', 'all-in-one-wp-security-and-firewall').'

      '; + $info_msg .= '

      '. __('A lot of bots are legitimate and non-malicous but not all bots are good and often you will find some which try to impersonate legitimate bots such as "Googlebot" but in reality they have nohing to do with Google at all.', 'all-in-one-wp-security-and-firewall').'

      '; + $info_msg .= '

      '. __('Although most of the bots out there are relatively harmless sometimes website owners want to have more control over which bots they allow into their site.', 'all-in-one-wp-security-and-firewall').'

      '; + $info_msg .= '

      '. __('This feature allows you to block bots which are impersonating as a Googlebot but actually aren\'t. (In other words they are fake Google bots)', 'all-in-one-wp-security-and-firewall').'

      '; + $info_msg .= '

      '.__('Googlebots have a unique indentity which cannot easily be forged and this feature will indentify any fake Google bots and block them from reading your site\'s pages.', 'all-in-one-wp-security-and-firewall').'

      '; + echo $info_msg; + ?> +
      +
      + '. __('Attention: Sometimes non-malicious Internet organizations might have bots which impersonate as a "Googlebot".', 'all-in-one-wp-security-and-firewall').'

      '; + $info_msg_2 .= '

      '.__('Just be aware that if you activate this feature the plugin will block all bots which use the "Googlebot" string in their User Agent information but are NOT officially from Google (irrespective whether they are malicious or not).', 'all-in-one-wp-security-and-firewall').'

      '; + $info_msg_2 .= '

      '.__('All other bots from other organizations such as "Yahoo", "Bing" etc will not be affected by this feature.', 'all-in-one-wp-security-and-firewall').'

      '; + echo $info_msg_2; + ?> +
      + +
      +

      +
      + output_feature_details_badge("firewall-block-fake-googlebots"); + ?> + + + + + + +
      : + configs->get_value('aiowps_block_fake_googlebots')=='1') echo ' checked="checked"'; ?> value="1"/> + + + +
      + '.__('This feature will check if the User Agent information of a bot contains the string "Googlebot".', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('It will then perform a few tests to verify if the bot is legitimately from Google and if so it will allow the bot to proceed.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('If the bot fails the checks then the plugin will mark it as being a fake Googlebot and it will block it', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      +
      +
      + +
      + debug_logger->log_debug("Nonce check failed on prevent hotlinking options save!",4); + die("Nonce check failed on prevent hotlinking options save!"); + } + $aio_wp_security->configs->set_value('aiowps_prevent_hotlinking',isset($_POST["aiowps_prevent_hotlinking"])?'1':''); + $aio_wp_security->configs->save_config(); + + //Recalculate points after the feature status/options have been altered + $aiowps_feature_mgr->check_feature_status_and_recalculate_points(); + + //Now let's write the applicable rules to the .htaccess file + $res = AIOWPSecurity_Utility_Htaccess::write_to_htaccess(); + + if ($res) + { + $this->show_msg_updated(__('Settings were successfully saved', 'all-in-one-wp-security-and-firewall')); + } + else + { + $this->show_msg_error(__('Could not write to the .htaccess file. Please check the file permissions.', 'all-in-one-wp-security-and-firewall')); + } + } + ?> +

      +
      + '.__('A Hotlink is where someone displays an image on their site which is actually located on your site by using a direct link to the source of the image on your server.', 'all-in-one-wp-security-and-firewall'); + echo '
      '.__('Due to the fact that the image being displayed on the other person\'s site is coming from your server, this can cause leaking of bandwidth and resources for you because your server has to present this image for the people viewing it on someone elses\'s site.','all-in-one-wp-security-and-firewall'); + echo '
      '.__('This feature will prevent people from directly hotlinking images from your site\'s pages by writing some directives in your .htaccess file.', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      + +
      +

      +
      + output_feature_details_badge("prevent-hotlinking"); + ?> + +
      + + + + + + +
      : + configs->get_value('aiowps_prevent_hotlinking')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      + +
      +
      + debug_logger->log_debug("Nonce check failed for delete all 404 event logs operation!",4); + die(__('Nonce check failed for delete all 404 event logs operation!','all-in-one-wp-security-and-firewall')); + } + global $wpdb; + $events_table_name = AIOWPSEC_TBL_EVENTS; + //Delete all 404 records from the events table + $where = array('event_type' => '404'); + $result = $wpdb->delete($events_table_name, $where); + + if ($result === FALSE) + { + $aio_wp_security->debug_logger->log_debug("404 Detection Feature - Delete all 404 event logs operation failed!",4); + $this->show_msg_error(__('404 Detection Feature - Delete all 404 event logs operation failed!','all-in-one-wp-security-and-firewall')); + } + else + { + $this->show_msg_updated(__('All 404 event logs were deleted from the DB successfully!','all-in-one-wp-security-and-firewall')); + } + } + + + include_once 'wp-security-list-404.php'; //For rendering the AIOWPSecurity_List_Table in tab1 + $event_list_404 = new AIOWPSecurity_List_404(); //For rendering the AIOWPSecurity_List_Table in tab1 + + if(isset($_POST['aiowps_save_404_detect_options']))//Do form submission tasks + { + $error = ''; + $nonce=$_REQUEST['_wpnonce']; + if (!wp_verify_nonce($nonce, 'aiowpsec-404-detection-nonce')) + { + $aio_wp_security->debug_logger->log_debug("Nonce check failed on 404 detection options save!",4); + die("Nonce check failed on 404 detection options save!"); + } + + $aio_wp_security->configs->set_value('aiowps_enable_404_logging',isset($_POST["aiowps_enable_404_IP_lockout"])?'1':''); //the "aiowps_enable_404_IP_lockout" checkbox currently controls both the 404 lockout and 404 logging + $aio_wp_security->configs->set_value('aiowps_enable_404_IP_lockout',isset($_POST["aiowps_enable_404_IP_lockout"])?'1':''); + + $lockout_time_length = isset($_POST['aiowps_404_lockout_time_length'])?sanitize_text_field($_POST['aiowps_404_lockout_time_length']):''; + if(!is_numeric($lockout_time_length)) + { + $error .= '
      '.__('You entered a non numeric value for the lockout time length field. It has been set to the default value.','all-in-one-wp-security-and-firewall'); + $lockout_time_length = '60';//Set it to the default value for this field + } + + $redirect_url = isset($_POST['aiowps_404_lock_redirect_url'])?trim($_POST['aiowps_404_lock_redirect_url']):''; + if ($redirect_url == '' || esc_url($redirect_url, array('http', 'https')) == ''){ + $error .= '
      '.__('You entered an incorrect format for the "Redirect URL" field. It has been set to the default value.','all-in-one-wp-security-and-firewall'); + $redirect_url = 'http://127.0.0.1'; + } + + if($error) + { + $this->show_msg_error(__('Attention!','all-in-one-wp-security-and-firewall').$error); + } + + $aio_wp_security->configs->set_value('aiowps_404_lockout_time_length',absint($lockout_time_length)); + $aio_wp_security->configs->set_value('aiowps_404_lock_redirect_url',$redirect_url); + $aio_wp_security->configs->save_config(); + + //Recalculate points after the feature status/options have been altered + $aiowps_feature_mgr->check_feature_status_and_recalculate_points(); + + $this->show_msg_settings_updated(); + } + + + if(isset($_REQUEST['action'])) //Do list table form row action tasks + { + if($_REQUEST['action'] == 'temp_block'){ //Temp Block link was clicked for a row in list table + $event_list_404->block_ip(strip_tags($_REQUEST['ip_address'])); + } + + if($_REQUEST['action'] == 'blacklist_ip'){ //Blacklist IP link was clicked for a row in list table + $event_list_404->blacklist_ip_address(strip_tags($_REQUEST['ip_address'])); + } + + if($_REQUEST['action'] == 'delete_event_log'){ //Unlock link was clicked for a row in list table + $event_list_404->delete_404_event_records(strip_tags($_REQUEST['id'])); + } + } + ?> +

      +
      + '.__('A 404 or Not Found error occurs when somebody tries to access a non-existent page on your website.', 'all-in-one-wp-security-and-firewall').' +
      '.__('Typically, most 404 errors happen quite innocently when people have mis-typed a URL or used an old link to page which doesn\'t exist anymore.', 'all-in-one-wp-security-and-firewall').' +
      '.__('However, in some cases you may find many repeated 404 errors which occur in a relatively short space of time and from the same IP address which are all attempting to access a variety of non-existent page URLs.', 'all-in-one-wp-security-and-firewall').' +
      '.__('Such behaviour can mean that a hacker might be trying to find a particular page or URL for sinister reasons.', 'all-in-one-wp-security-and-firewall').' +

      '.__('This feature allows you to monitor all 404 events which occur on your site, and it also gives you the option of blocking IP addresses for a configured length of time.', 'all-in-one-wp-security-and-firewall').' +
      '.__('If you want to temporarily block an IP address, simply click the "Temp Block" link for the applicable IP entry in the "404 Event Logs" table below.', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      +
      + Smart404 Blocking Addon'; + $info_msg = sprintf( __('You may also be interested in our %s.', 'all-in-one-wp-security-and-firewall'), $addon_link); + $info_msg2 = __('This addon allows you to automatically and permanently block IP addresses based on how many 404 errors they produce.', 'all-in-one-wp-security-and-firewall'); + + echo '

      '.$info_msg. + '
      '.$info_msg2.'

      '; + ?> +
      + +
      +

      +
      + output_feature_details_badge("firewall-enable-404-blocking"); + ?> + +
      + + + + + + + + + + + + + + + +
      : + configs->get_value('aiowps_enable_404_IP_lockout')=='1') echo ' checked="checked"'; ?> value="1"/> + + + +
      +

      + +

      +
      +
      : + + + +
      +

      + '; + _e('To temporarily lock an IP address, hover over the ID column and click the "Temp Block" link for the applicable IP entry.', 'all-in-one-wp-security-and-firewall'); + ?> +

      +
      +
      : + +
      + + +
      +
      +
      +

      +
      + prepare_items(); + //echo "put table of locked entries here"; + ?> +
      + + + search_box('Search', 'search_404_events'); ?> + '; + } + ?> + + display(); ?> +
      +
      +
      +

      +
      +
      + + + + + +
      + +
      +
      + + debug_logger->log_debug("Nonce check failed for save custom rules settings!",4); + die("Nonce check failed for save custom rules settings!"); + } + + //Save settings + if (isset($_POST["aiowps_enable_custom_rules"]) && empty($_POST['aiowps_custom_rules'])) + { + $this->show_msg_error('You must enter some .htaccess directives code in the text box below','all-in-one-wp-security-and-firewall'); + } + else + { + if (!empty($_POST['aiowps_custom_rules'])) + { + // Undo magic quotes that are automatically added to `$_GET`, + // `$_POST`, `$_COOKIE`, and `$_SERVER` by WordPress as + // they corrupt any custom rule with backslash in it... + $custom_rules = stripslashes($_POST['aiowps_custom_rules']); + } + else + { + $aio_wp_security->configs->set_value('aiowps_custom_rules',''); //Clear the custom rules config value + } + + $aio_wp_security->configs->set_value('aiowps_custom_rules',$custom_rules); + $aio_wp_security->configs->set_value('aiowps_enable_custom_rules',isset($_POST["aiowps_enable_custom_rules"])?'1':''); + $aio_wp_security->configs->save_config(); //Save the configuration + + $this->show_msg_settings_updated(); + + $write_result = AIOWPSecurity_Utility_Htaccess::write_to_htaccess(); //now let's write to the .htaccess file + if ( !$write_result ) + { + $this->show_msg_error(__('The plugin was unable to write to the .htaccess file. Please edit file manually.','all-in-one-wp-security-and-firewall')); + $aio_wp_security->debug_logger->log_debug("Custom Rules feature - The plugin was unable to write to the .htaccess file."); + } + } + + } + + ?> +

      +
      + +
      + '. __('This feature can be used to apply your own custom .htaccess rules and directives.', 'all-in-one-wp-security-and-firewall').'

      '; + $info_msg .= '

      '. __('It is useful for when you want to tweak our existing firewall rules or when you want to add your own.', 'all-in-one-wp-security-and-firewall').'

      '; + $info_msg .= '

      '. __('NOTE: This feature can only used if your site is hosted in an apache or similar web server.', 'all-in-one-wp-security-and-firewall').'

      '; + echo $info_msg; + ?> +
      +
      + '. __('Warning: Only use this feature if you know what you are doing.', 'all-in-one-wp-security-and-firewall').'

      '; + $info_msg_2 .= '

      '.__('Incorrect .htaccess rules or directives can break or prevent access to your site.', 'all-in-one-wp-security-and-firewall').'

      '; + $info_msg_2 .= '

      '.__('It is your responsibility to ensure that you are entering the correct code!', 'all-in-one-wp-security-and-firewall').'

      '; + $info_msg_2 .= '

      '.__('If you break your site you will need to access your server via FTP or something similar and then edit your .htaccess file and delete the changes you made.', 'all-in-one-wp-security-and-firewall').'

      '; + echo $info_msg_2; + ?> +
      + +
      +

      +
      + + + + + + + + + +
      : + configs->get_value('aiowps_enable_custom_rules')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      + +
      + +
      +
      + +
      + 'item', //singular name of the listed records + 'plural' => 'items', //plural name of the listed records + 'ajax' => false //does this table support ajax? + )); + } + + function column_default($item, $column_name) { + return $item[$column_name]; + } + + function column_id($item) { + $tab = strip_tags($_REQUEST['tab']); + $ip = $item['ip_or_host']; + + $blocked_ips_tab = 'tab3'; + //Check if this IP address is locked + $is_locked = AIOWPSecurity_Utility::check_locked_ip($ip); + $delete_url = sprintf('admin.php?page=%s&tab=%s&action=%s&id=%s', AIOWPSEC_FIREWALL_MENU_SLUG, $tab, 'delete_event_log', $item['id']); + //Add nonce to delete URL + $delete_url_nonce = wp_nonce_url($delete_url, "delete_404_log", "aiowps_nonce"); + if ($is_locked) { + //Build row actions + $actions = array( + 'unblock' => sprintf('Unblock', AIOWPSEC_MAIN_MENU_SLUG, $blocked_ips_tab), + 'delete' => 'Delete', + ); + } else { + //Build row actions + $actions = array( + 'temp_block' => sprintf('Temp Block', AIOWPSEC_FIREWALL_MENU_SLUG, $tab, 'temp_block', $item['ip_or_host'], $item['username']), + 'blacklist_ip' => sprintf('Blacklist IP', AIOWPSEC_FIREWALL_MENU_SLUG, $tab, 'blacklist_ip', $item['ip_or_host'], $item['username']), + 'delete' => 'Delete', + ); + } + + //Return the user_login contents + return sprintf('%1$s %2$s', + /* $1%s */ $item['id'], + /* $2%s */ $this->row_actions($actions) + ); + } + + function column_status($item) { + global $aio_wp_security; + $ip = $item['ip_or_host']; + //Check if this IP address is locked + $is_locked = AIOWPSecurity_Utility::check_locked_ip($ip); + $blacklisted_string = $aio_wp_security->configs->get_value('aiowps_banned_ip_addresses'); + $banned = strpos($blacklisted_string, $ip); + + if ($banned !== false) { + return 'blacklisted'; + } else if ($is_locked) { + return 'temporarily blocked'; + } else { + return ''; + } + } + + function column_cb($item) { + return sprintf( + '', + /* $1%s */ $this->_args['singular'], //Let's simply repurpose the table's singular label + /* $2%s */ $item['id'] //The value of the checkbox should be the record's id + ); + } + + function get_columns() { + $columns = array( + 'cb' => '', //Render a checkbox + 'id' => 'ID', + 'event_type' => 'Event Type', + 'ip_or_host' => 'IP Address', + 'url' => 'Attempted URL', + 'referer_info' => 'Referer', + 'event_date' => 'Date', + 'status' => 'Lock Status', + ); + $columns = apply_filters('list_404_get_columns', $columns); + return $columns; + } + + function get_sortable_columns() { + $sortable_columns = array( + 'id' => array('id', false), + 'event_type' => array('event_type', false), + 'ip_or_host' => array('ip_or_host', false), + 'url' => array('url', false), + 'referer_info' => array('referer_info', false), + 'event_date' => array('event_date', false), + ); + $sortable_columns = apply_filters('list_404_get_sortable_columns', $sortable_columns); + return $sortable_columns; + } + + function get_bulk_actions() { + $actions = array( + //'unlock' => 'Unlock', + 'bulk_block_ip' => 'Temp Block IP', + 'bulk_blacklist_ip' => 'Blacklist IP', + 'delete' => 'Delete' + ); + return $actions; + } + + function process_bulk_action() { + if ('bulk_block_ip' === $this->current_action()) {//Process delete bulk actions + if (!isset($_REQUEST['item'])) { + AIOWPSecurity_Admin_Menu::show_msg_error_st(__('Please select some records using the checkboxes', 'all-in-one-wp-security-and-firewall')); + } else { + $this->block_ip(($_REQUEST['item'])); + } + } + + if ('bulk_blacklist_ip' === $this->current_action()) {//Process delete bulk actions + if (!isset($_REQUEST['item'])) { + AIOWPSecurity_Admin_Menu::show_msg_error_st(__('Please select some records using the checkboxes', 'all-in-one-wp-security-and-firewall')); + } else { + $this->blacklist_ip_address(($_REQUEST['item'])); + } + } + if ('delete' === $this->current_action()) {//Process delete bulk actions + if (!isset($_REQUEST['item'])) { + AIOWPSecurity_Admin_Menu::show_msg_error_st(__('Please select some records using the checkboxes', 'all-in-one-wp-security-and-firewall')); + } else { + $this->delete_404_event_records(($_REQUEST['item'])); + } + } + } + + /* + * This function will lock an IP address by adding it to the "login_lockdown" table + */ + + function block_ip($entries, $username = '') { + global $wpdb; + $events_table = AIOWPSEC_TBL_LOGIN_LOCKDOWN; + if (is_array($entries)) { + //lock multiple records + $entries = array_filter($entries, 'is_numeric'); //discard non-numeric ID values + $id_list = "(" .implode(",",$entries) .")"; //Create comma separate list for DB operation + $events_table = AIOWPSEC_TBL_EVENTS; + $query = "SELECT ip_or_host FROM $events_table WHERE ID IN ".$id_list; + $results = $wpdb->get_col($query); + if(empty($results)){ + AIOWPSecurity_Admin_Menu::show_msg_error_st(__('Could not process the request because the IP addresses for the selected entries could not be found!', 'WPS')); + return false; + }else{ + foreach($results as $entry){ + if(filter_var($entry, FILTER_VALIDATE_IP)){ + AIOWPSecurity_Utility::lock_IP($entry, '404', $username); + } + } + } + AIOWPSecurity_Admin_Menu::show_msg_updated_st(__('The selected IP addresses are now temporarily blocked!', 'WPS')); + } elseif ($entries != NULL) { + //Block single record + if(filter_var($entries, FILTER_VALIDATE_IP)){ + AIOWPSecurity_Utility::lock_IP($entries, '404', $username); + AIOWPSecurity_Admin_Menu::show_msg_updated_st(__('The selected IP address is now temporarily blocked!', 'WPS')); + }else{ + AIOWPSecurity_Admin_Menu::show_msg_error_st(__('The selected entry is not a valid IP address!', 'WPS')); + } + } + } + + /* + * This function will lock an IP address by adding it to the "login_lockdown" table + */ + + function blacklist_ip_address($entries) { + global $wpdb, $aio_wp_security; + $bl_ip_addresses = $aio_wp_security->configs->get_value('aiowps_banned_ip_addresses'); //get the currently saved blacklisted IPs + $ip_list_array = AIOWPSecurity_Utility_IP::create_ip_list_array_from_string_with_newline($bl_ip_addresses); + + if (is_array($entries)) { + //Get the selected IP addresses + $entries = array_filter($entries, 'is_numeric'); //discard non-numeric ID values + $id_list = "(" .implode(",",$entries) .")"; //Create comma separate list for DB operation + $events_table = AIOWPSEC_TBL_EVENTS; + $query = "SELECT ip_or_host FROM $events_table WHERE ID IN ".$id_list; + $results = $wpdb->get_col($query); + if(empty($results)){ + AIOWPSecurity_Admin_Menu::show_msg_error_st(__('Could not process the request because the IP addresses for the selected entries could not be found!', 'WPS')); + return false; + }else{ + foreach($results as $entry){ + $ip_list_array[] = $entry; + } + } + } elseif ($entries != NULL) { + //Blacklist single record + $ip_list_array[] = $entries; + } + $payload = AIOWPSecurity_Utility_IP::validate_ip_list($ip_list_array, 'blacklist'); + if($payload[0] == 1){ + //success case + $result = 1; + $list = $payload[1]; + $banned_ip_data = implode(PHP_EOL, $list); + $aio_wp_security->configs->set_value('aiowps_enable_blacklisting','1'); //Force blacklist feature to be enabled + $aio_wp_security->configs->set_value('aiowps_banned_ip_addresses',$banned_ip_data); + $aio_wp_security->configs->save_config(); //Save the configuration + + $write_result = AIOWPSecurity_Utility_Htaccess::write_to_htaccess(); //now let's write to the .htaccess file + if ( $write_result ) { + AIOWPSecurity_Admin_Menu::show_msg_updated_st(__('The selected IP addresses have been added to the blacklist and will be permanently blocked!', 'WPS')); + } else { + AIOWPSecurity_Admin_Menu::show_msg_error_st(__('The plugin was unable to write to the .htaccess file. Please edit file manually.','all-in-one-wp-security-and-firewall')); + $aio_wp_security->debug_logger->log_debug("AIOWPSecurity_Blacklist_Menu - The plugin was unable to write to the .htaccess file."); + } + } + else{ + $result = -1; + $error_msg = $payload[1][0]; + AIOWPSecurity_Admin_Menu::show_msg_error_st($error_msg); + } + } + + /* + * This function will delete selected 404 records from the "events" table. + * The function accepts either an array of IDs or a single ID + */ + + function delete_404_event_records($entries) { + global $wpdb, $aio_wp_security; + $events_table = AIOWPSEC_TBL_EVENTS; + if (is_array($entries)) { + if (isset($_REQUEST['_wp_http_referer'])) + { + //Delete multiple records + $entries = array_map( 'esc_sql', $entries); //escape every array element + $entries = array_filter($entries, 'is_numeric'); //discard non-numeric ID values + $id_list = "(" . implode(",", $entries) . ")"; //Create comma separate list for DB operation + $delete_command = "DELETE FROM " . $events_table . " WHERE id IN " . $id_list; + $result = $wpdb->query($delete_command); + if ($result != NULL) { + AIOWPSecurity_Admin_Menu::show_msg_record_deleted_st(); + } + } + + } elseif ($entries != NULL) { + $nonce=isset($_GET['aiowps_nonce'])?$_GET['aiowps_nonce']:''; + if (!isset($nonce) ||!wp_verify_nonce($nonce, 'delete_404_log')) + { + $aio_wp_security->debug_logger->log_debug("Nonce check failed for delete selected 404 event logs operation!",4); + die(__('Nonce check failed for delete selected 404 event logs operation!','all-in-one-wp-security-and-firewall')); + } + + //Delete single record + $delete_command = "DELETE FROM " . $events_table . " WHERE id = '" . absint($entries) . "'"; + //$delete_command = $wpdb->prepare("DELETE FROM $events_table WHERE id = %s", absint($entries)); + $result = $wpdb->query($delete_command); + if ($result != NULL) { + AIOWPSecurity_Admin_Menu::show_msg_record_deleted_st(); + } + } + } + + function prepare_items() { + /** + * First, lets decide how many records per page to show + */ + $per_page = 100; + $columns = $this->get_columns(); + $hidden = array(); + $sortable = $this->get_sortable_columns(); + + $this->_column_headers = array($columns, $hidden, $sortable); + + $this->process_bulk_action(); + + global $wpdb; + $events_table_name = AIOWPSEC_TBL_EVENTS; + + /* -- Ordering parameters -- */ + //Parameters that are going to be used to order the result + isset($_GET["orderby"]) ? $orderby = strip_tags($_GET["orderby"]): $orderby = ''; + isset($_GET["order"]) ? $order = strip_tags($_GET["order"]): $order = ''; + + $orderby = !empty($orderby) ? esc_sql($orderby) : 'id'; + $order = !empty($order) ? esc_sql($order) : 'DESC'; + + $orderby = AIOWPSecurity_Utility::sanitize_value_by_array($orderby, $sortable); + $order = AIOWPSecurity_Utility::sanitize_value_by_array($order, array('DESC' => '1', 'ASC' => '1')); + + if (isset($_POST['s'])) { + $search_term = trim($_POST['s']); + $data = $wpdb->get_results($wpdb->prepare("SELECT * FROM " . $events_table_name . " WHERE `ip_or_host` LIKE '%%%s%%' OR `url` LIKE '%%%s%%' OR `referer_info` LIKE '%%%s%%'", $search_term, $search_term, $search_term), ARRAY_A); + } else { + $data = $wpdb->get_results($wpdb->prepare("SELECT * FROM $events_table_name WHERE event_type=%s ORDER BY $orderby $order",'404'), ARRAY_A); + } + $new_data = array(); + foreach ($data as $row) { + //lets insert an empty "status" column - we will use later + $row['status'] = ''; + $new_data[] = $row; + } + $current_page = $this->get_pagenum(); + $total_items = count($new_data); + $new_data = array_slice($new_data, (($current_page - 1) * $per_page), $per_page); + $this->items = $new_data; + $this->set_pagination_args(array( + 'total_items' => $total_items, //WE have to calculate the total number of items + 'per_page' => $per_page, //WE have to determine how many items to show on a page + 'total_pages' => ceil($total_items / $per_page) //WE have to calculate the total number of pages + )); + } + +} \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-acct-activity.php b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-acct-activity.php new file mode 100644 index 0000000..edd1a3f --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-acct-activity.php @@ -0,0 +1,180 @@ + 'item', //singular name of the listed records + 'plural' => 'items', //plural name of the listed records + 'ajax' => false //does this table support ajax? + ) ); + + } + + function column_default($item, $column_name){ + return $item[$column_name]; + } + + function column_user_id($item){ + $tab = strip_tags($_REQUEST['tab']); + $delete_url = sprintf('admin.php?page=%s&tab=%s&action=%s&activity_login_rec=%s', AIOWPSEC_USER_LOGIN_MENU_SLUG, $tab, 'delete_acct_activity_rec', $item['id']); + //Add nonce to delete URL + $delete_url_nonce = wp_nonce_url($delete_url, "delete_acct_activity_log", "aiowps_nonce"); + + //Build row actions + $actions = array( + 'delete' => 'Delete', + ); + + //Return the user_login contents + return sprintf('%1$s %2$s', + /*$1%s*/ $item['user_id'], + /*$2%s*/ $this->row_actions($actions) + ); + } + + + function column_cb($item){ + return sprintf( + '', + /*$1%s*/ $this->_args['singular'], //Let's simply repurpose the table's singular label + /*$2%s*/ $item['id'] //The value of the checkbox should be the record's id + ); + } + + function get_columns(){ + $columns = array( + 'cb' => '', //Render a checkbox + 'user_id' => 'User ID', + 'user_login' => 'Username', + 'login_date' => 'Login Date', + 'logout_date' => 'Logout Date', + 'login_ip' => 'IP' + ); + return $columns; + } + + function get_sortable_columns() { + $sortable_columns = array( + 'user_id' => array('user_id',false), + 'user_login' => array('user_login',false), + 'login_date' => array('login_date',false), + 'login_ip' => array('login_ip',false), + 'logout_date' => array('logout_date',false), + ); + return $sortable_columns; + } + + function get_bulk_actions() { + $actions = array( + 'delete' => 'Delete' + ); + return $actions; + } + + function process_bulk_action() { + if('delete'===$this->current_action()) + {//Process delete bulk actions + if(!isset($_REQUEST['item'])) + { + $error_msg = '

      '; + $error_msg .= __('Please select some records using the checkboxes','all-in-one-wp-security-and-firewall'); + $error_msg .= '

      '; + _e($error_msg); + } else{ + $this->delete_login_activity_records(($_REQUEST['item'])); + } + } + } + + + + /* + * This function will delete selected records from the "user_login_activity" table. + * The function accepts either an array of IDs or a single ID + */ + function delete_login_activity_records($entries) + { + global $wpdb, $aio_wp_security; + $login_activity_table = AIOWPSEC_TBL_USER_LOGIN_ACTIVITY; + if (is_array($entries)) + { + if (isset($_REQUEST['_wp_http_referer'])) + { + //Delete multiple records + $entries = array_filter($entries, 'is_numeric'); //discard non-numeric ID values + $id_list = "(" .implode(",",$entries) .")"; //Create comma separate list for DB operation + $delete_command = "DELETE FROM ".$login_activity_table." WHERE id IN ".$id_list; + $result = $wpdb->query($delete_command); + if($result != NULL) + { + $success_msg = '

      '; + $success_msg .= __('The selected entries were deleted successfully!','all-in-one-wp-security-and-firewall'); + $success_msg .= '

      '; + _e($success_msg); + } + } + } + elseif ($entries != NULL) + { + $nonce=isset($_GET['aiowps_nonce'])?$_GET['aiowps_nonce']:''; + if (!isset($nonce) ||!wp_verify_nonce($nonce, 'delete_acct_activity_log')) + { + $aio_wp_security->debug_logger->log_debug("Nonce check failed for delete selected account activity logs operation!",4); + die(__('Nonce check failed for delete selected account activity logs operation!','all-in-one-wp-security-and-firewall')); + } + //Delete single record + $delete_command = "DELETE FROM ".$login_activity_table." WHERE id = '".absint($entries)."'"; + $result = $wpdb->query($delete_command); + if($result != NULL) + { + $success_msg = '

      '; + $success_msg .= __('The selected entry was deleted successfully!','all-in-one-wp-security-and-firewall'); + $success_msg .= '

      '; + _e($success_msg); + } + } + } + + function prepare_items() { + /** + * First, lets decide how many records per page to show + */ + $per_page = 20; + $columns = $this->get_columns(); + $hidden = array(); + $sortable = $this->get_sortable_columns(); + + $this->_column_headers = array($columns, $hidden, $sortable); + + $this->process_bulk_action(); + + global $wpdb; + $login_activity_table = AIOWPSEC_TBL_USER_LOGIN_ACTIVITY; + + /* -- Ordering parameters -- */ + //Parameters that are going to be used to order the result + + isset($_GET["orderby"]) ? $orderby = strip_tags($_GET["orderby"]): $orderby = ''; + isset($_GET["order"]) ? $order = strip_tags($_GET["order"]): $order = ''; + + $orderby = !empty($orderby) ? esc_sql($orderby) : 'login_date'; + $order = !empty($order) ? esc_sql($order) : 'DESC'; + + $orderby = AIOWPSecurity_Utility::sanitize_value_by_array($orderby, $sortable); + $order = AIOWPSecurity_Utility::sanitize_value_by_array($order, array('DESC' => '1', 'ASC' => '1')); + + $data = $wpdb->get_results($wpdb->prepare("SELECT * FROM $login_activity_table ORDER BY $orderby $order LIMIT %d", 50), ARRAY_A); //Get the last 50 records + $current_page = $this->get_pagenum(); + $total_items = count($data); + $data = array_slice($data,(($current_page-1)*$per_page),$per_page); + $this->items = $data; + $this->set_pagination_args( array( + 'total_items' => $total_items, //WE have to calculate the total number of items + 'per_page' => $per_page, //WE have to determine how many items to show on a page + 'total_pages' => ceil($total_items/$per_page) //WE have to calculate the total number of pages + ) ); + } +} \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-comment-spammer-ip.php b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-comment-spammer-ip.php new file mode 100644 index 0000000..c78f2e7 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-comment-spammer-ip.php @@ -0,0 +1,272 @@ + 'item', //singular name of the listed records + 'plural' => 'items', //plural name of the listed records + 'ajax' => false //does this table support ajax? + ) ); + + } + + function column_default($item, $column_name){ + return $item[$column_name]; + } + + function column_comment_author_IP($item){ + $tab = strip_tags($_REQUEST['tab']); + //Build row actions + if (AIOWPSecurity_Utility::is_multisite_install() && get_current_blog_id() != 1){ + //Suppress the block link if site is a multi site AND not the main site + $actions = array(); //blank array + }else{ + $block_url = sprintf('admin.php?page=%s&tab=%s&action=%s&spammer_ip=%s', AIOWPSEC_SPAM_MENU_SLUG, $tab, 'block_spammer_ip', $item['comment_author_IP']); + //Add nonce to block URL + $block_url_nonce = wp_nonce_url($block_url, "block_spammer_ip", "aiowps_nonce"); + + $actions = array( + 'block' => 'Block', + ); + } + + //Return the user_login contents + return sprintf('%1$s %2$s', + /*$1%s*/ $item['comment_author_IP'], + /*$2%s*/ $this->row_actions($actions) + ); + } + + + function column_cb($item){ + return sprintf( + '', + /*$1%s*/ $this->_args['singular'], //Let's simply repurpose the table's singular label + /*$2%s*/ $item['comment_author_IP'] //The value of the checkbox should be the record's id + ); + } + + function get_columns(){ + $columns = array( + 'cb' => '', //Render a checkbox + 'comment_author_IP' => 'Spammer IP', + 'amount' => 'Number of SPAM Comments From This IP', + 'status' => 'Status', + ); + return $columns; + } + + function get_sortable_columns() { + $sortable_columns = array( + 'comment_author_IP' => array('comment_author_IP',false), + 'amount' => array('amount',false), + 'status' => array('status',false), + ); + return $sortable_columns; + } + + function get_bulk_actions() { + if (AIOWPSecurity_Utility::is_multisite_install() && get_current_blog_id() != 1){ + //Suppress the block link if site is a multi site AND not the main site + $actions = array(); //blank array + }else{ + $actions = array( + 'block' => 'Block' + ); + } + return $actions; + } + + function process_bulk_action() { + global $aio_wp_security; + if('block'===$this->current_action()) + { + //Process block bulk actions + if(!isset($_REQUEST['item'])) + { + $error_msg = '

      '; + $error_msg .= __('Please select some records using the checkboxes','all-in-one-wp-security-and-firewall'); + $error_msg .= '

      '; + _e($error_msg); + } else { + $this->block_spammer_ip_records(($_REQUEST['item'])); + } + } + } + + + + /* + * This function will add the selected IP addresses to the blacklist. + * The function accepts either an array of IDs or a single ID + */ + function block_spammer_ip_records($entries) + { + global $wpdb, $aio_wp_security; + if (is_array($entries)) + { + if (isset($_REQUEST['_wp_http_referer'])) + { + //Bulk selection using checkboxes were used + foreach ($entries as $ip_add) + { + AIOWPSecurity_Blocking::add_ip_to_block_list($ip_add, 'spam'); + } + } + } + else if ($entries != NULL) + { + $nonce=isset($_GET['aiowps_nonce'])?$_GET['aiowps_nonce']:''; + if (!isset($nonce) ||!wp_verify_nonce($nonce, 'block_spammer_ip')) + { + $aio_wp_security->debug_logger->log_debug("Nonce check failed for delete selected blocked IP operation!",4); + die(__('Nonce check failed for delete selected blocked IP operation!','all-in-one-wp-security-and-firewall')); + } + + //individual entry where "block" link was clicked + AIOWPSecurity_Blocking::add_ip_to_block_list($entries, 'spam'); + } + + AIOWPSecurity_Admin_Menu::show_msg_updated_st(__('The selected IP addresses are now permanently blocked!','all-in-one-wp-security-and-firewall')); + } + + /* + * (Old function which uses .htaccess blacklist - replaced by new method which uses php blocking code) + * This function will add the selected IP addresses to the .htaccess blacklist. + * The function accepts either an array of IDs or a single ID + */ + function block_spammer_ip_records_old($entries) + { + global $wpdb, $aio_wp_security; + $raw_banned_ip_list = $aio_wp_security->configs->get_value('aiowps_banned_ip_addresses'); + $currently_banned_ips = explode(PHP_EOL, $aio_wp_security->configs->get_value('aiowps_banned_ip_addresses')); + if (is_array($entries)) + { + if (isset($_REQUEST['_wp_http_referer'])) + { + //Bulk selection using checkboxes were used + foreach ($entries as $ip_add) + { + if (!empty($currently_banned_ips) && !(sizeof($currently_banned_ips) == 1 && trim($currently_banned_ips[0]) == '')) + { + //Check if the IP address is already in the blacklist. If not add it to the list. + if (!in_array($ip_add, $currently_banned_ips)) + { + $raw_banned_ip_list .= PHP_EOL.$ip_add; + } + } + else + { + //if blacklist is currently empty just add all IP addresses to the list regardless + $raw_banned_ip_list .= PHP_EOL.$ip_add; + } + } + } + } + else if ($entries != NULL) + { + $nonce=isset($_GET['aiowps_nonce'])?$_GET['aiowps_nonce']:''; + if (!isset($nonce) ||!wp_verify_nonce($nonce, 'block_spammer_ip')) + { + $aio_wp_security->debug_logger->log_debug("Nonce check failed for delete selected blocked IP operation!",4); + die(__('Nonce check failed for delete selected blocked IP operation!','all-in-one-wp-security-and-firewall')); + } + + //individual entry where "block" link was clicked + //Check if the IP address is already in the blacklist. If not add it to the list. + if (!in_array($entries, $currently_banned_ips)) + { + $raw_banned_ip_list .= PHP_EOL.$entries; + } + } + + //Let's save the selected IP addresses to the blacklist config + $aio_wp_security->configs->set_value('aiowps_banned_ip_addresses',$raw_banned_ip_list); //Save the blocked IP address config variable with the newly added addresses + $aio_wp_security->configs->save_config(); + AIOWPSecurity_Admin_Menu::show_msg_updated_st(__('The selected IP addresses were saved in the blacklist configuration settings.','all-in-one-wp-security-and-firewall')); + + //Let's check if the Enable Blacklisting flag has been set - If so, we will write the new data to the .htaccess file. + if($aio_wp_security->configs->get_value('aiowps_enable_blacklisting')=='1') + { + $write_result = AIOWPSecurity_Utility_Htaccess::write_to_htaccess(); + if ( $write_result ) + { + AIOWPSecurity_Admin_Menu::show_msg_updated_st(__('The .htaccess file was successfully modified to include the selected IP addresses.','all-in-one-wp-security-and-firewall')); + } + else + { + AIOWPSecurity_Admin_Menu::show_msg_error_st(__('The plugin was unable to write to the .htaccess file. Please edit file manually.','all-in-one-wp-security-and-firewall')); + $aio_wp_security->debug_logger->log_debug("AIOWPSecurity_Blacklist_Menu - The plugin was unable to write to the .htaccess file."); + } + } + else + { + $blacklist_settings_link = 'Ban Users'; + $info_msg = '

      '.__('NOTE: The .htaccess file was not modified because you have disabled the "Enable IP or User Agent Blacklisting" check box.', 'all-in-one-wp-security-and-firewall'). + '
      '.sprintf( __('To block these IP addresses you will need to enable the above flag in the %s menu', 'all-in-one-wp-security-and-firewall'), $blacklist_settings_link).'

      '; + AIOWPSecurity_Admin_Menu::show_msg_updated_st($info_msg); + } + } + + function prepare_items() + { + //First, lets decide how many records per page to show + $per_page = 20; + $columns = $this->get_columns(); + $hidden = array(); + $sortable = $this->get_sortable_columns(); + + $this->_column_headers = array($columns, $hidden, $sortable); + + $this->process_bulk_action(); + + global $wpdb; + global $aio_wp_security; + $minimum_comments_per_ip = $aio_wp_security->configs->get_value('aiowps_spam_ip_min_comments'); + if (empty($minimum_comments_per_ip)) { + $minimum_comments_per_ip = 5; + } + /* -- Ordering parameters -- */ + //Parameters that are going to be used to order the result + isset($_GET["orderby"]) ? $orderby = strip_tags($_GET["orderby"]) : $orderby = ''; + isset($_GET["order"]) ? $order = strip_tags($_GET["order"]) : $order = ''; + + $orderby = !empty($orderby) ? esc_sql($orderby) : 'amount'; + $order = !empty($order) ? esc_sql($order) : 'DESC'; + + $orderby = AIOWPSecurity_Utility::sanitize_value_by_array($orderby, $sortable); + $order = AIOWPSecurity_Utility::sanitize_value_by_array($order, array('DESC' => '1', 'ASC' => '1')); + + $sql = $wpdb->prepare("SELECT comment_author_IP, COUNT(*) AS amount + FROM $wpdb->comments + WHERE comment_approved = 'spam' + GROUP BY comment_author_IP + HAVING amount >= %d + ORDER BY $orderby $order + ", $minimum_comments_per_ip); + $data = $wpdb->get_results($sql, ARRAY_A); + + //Get all permamnetly blocked IP addresses + $block_list = AIOWPSecurity_Blocking::get_list_blocked_ips(); + if(!empty($block_list)){ + foreach($data as $key=>$value){ + if(in_array($value['comment_author_IP'],$block_list)){ + $data[$key]['status'] = 'blocked'; + } + } + } + $current_page = $this->get_pagenum(); + $total_items = count($data); + $data = array_slice($data, (($current_page - 1) * $per_page), $per_page); + $this->items = $data; + $this->set_pagination_args(array( + 'total_items' => $total_items, //WE have to calculate the total number of items + 'per_page' => $per_page, //WE have to determine how many items to show on a page + 'total_pages' => ceil($total_items / $per_page) //WE have to calculate the total number of pages + )); + } +} \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-locked-ip.php b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-locked-ip.php new file mode 100644 index 0000000..5889a74 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-locked-ip.php @@ -0,0 +1,229 @@ + 'item', //singular name of the listed records + 'plural' => 'items', //plural name of the listed records + 'ajax' => false //does this table support ajax? + ) ); + + } + + function column_default($item, $column_name){ + return $item[$column_name]; + } + + function column_failed_login_ip($item){ + $tab = isset($_REQUEST['tab'])?strip_tags($_REQUEST['tab']):''; + $delete_lockdown_record = sprintf('admin.php?page=%s&tab=%s&action=%s&lockdown_id=%s', AIOWPSEC_MAIN_MENU_SLUG, $tab, 'delete_blocked_ip', $item['id']); + //Add nonce to delete URL + $delete_lockdown_record_nonce = wp_nonce_url($delete_lockdown_record, "delete_lockdown_record", "aiowps_nonce"); + + $unlock_ip_url = sprintf('admin.php?page=%s&tab=%s&action=%s&lockdown_id=%s', AIOWPSEC_MAIN_MENU_SLUG, $tab, 'unlock_ip', $item['id']); + //Add nonce to unlock IP URL + $unlock_ip_nonce = wp_nonce_url($unlock_ip_url, "unlock_ip", "aiowps_nonce"); + + //Build row actions + $actions = array( + 'unlock' => 'Unlock', + 'delete' => 'Delete', + ); + + //Return the user_login contents + return sprintf('%1$s %2$s', + /*$1%s*/ $item['failed_login_ip'], + /*$2%s*/ $this->row_actions($actions) + ); + } + + + function column_cb($item){ + return sprintf( + '', + /*$1%s*/ $this->_args['singular'], //Let's simply repurpose the table's singular label + /*$2%s*/ $item['id'] //The value of the checkbox should be the record's id + ); + } + + function get_columns(){ + $columns = array( + 'cb' => '', //Render a checkbox + 'failed_login_ip' => 'Locked IP/Range', + 'user_id' => 'User ID', + 'user_login' => 'Username', + 'lock_reason' => 'Reason', + 'lockdown_date' => 'Date Locked', + 'release_date' => 'Release Date' + ); + return $columns; + } + + function get_sortable_columns() { + $sortable_columns = array( + 'failed_login_ip' => array('failed_login_ip',false), + 'user_id' => array('user_id',false), + 'user_login' => array('user_login',false), + 'lock_reason' => array('lock_reason',false), + 'lockdown_date' => array('lockdown_date',false), + 'release_date' => array('release_date',false) + ); + return $sortable_columns; + } + + function get_bulk_actions() { + $actions = array( + 'unlock' => 'Unlock', + 'delete' => 'Delete' + ); + return $actions; + } + + function process_bulk_action() { + if('delete'===$this->current_action()) + {//Process delete bulk actions + if(!isset($_REQUEST['item'])) + { + AIOWPSecurity_Admin_Menu::show_msg_error_st(__('Please select some records using the checkboxes','all-in-one-wp-security-and-firewall')); + }else + { + $this->delete_lockdown_records(($_REQUEST['item'])); + } + } + + if('unlock'===$this->current_action()) + {//Process unlock bulk actions + if(!isset($_REQUEST['item'])) + { + AIOWPSecurity_Admin_Menu::show_msg_error_st(__('Please select some records using the checkboxes','all-in-one-wp-security-and-firewall')); + }else + { + $this->unlock_ip_range(($_REQUEST['item'])); + } + } + } + + + /* + * This function will unlock an IP range by modifying the "release_date" column of a record in the "login_lockdown" table + */ + function unlock_ip_range($entries) + { + global $wpdb,$aio_wp_security; + $lockdown_table = AIOWPSEC_TBL_LOGIN_LOCKDOWN; + if (is_array($entries)) + { + if (isset($_REQUEST['_wp_http_referer'])) + { + //Unlock multiple records + $entries = array_filter($entries, 'is_numeric'); //discard non-numeric ID values + $id_list = "(" .implode(",",$entries) .")"; //Create comma separate list for DB operation + $unlock_command = "UPDATE ".$lockdown_table." SET release_date = now() WHERE id IN ".$id_list; + $result = $wpdb->query($unlock_command); + if($result != NULL) + { + AIOWPSecurity_Admin_Menu::show_msg_updated_st(__('The selected IP entries were unlocked successfully!','all-in-one-wp-security-and-firewall')); + } + } + } elseif ($entries != NULL) + { + $nonce=isset($_GET['aiowps_nonce'])?$_GET['aiowps_nonce']:''; + if (!isset($nonce) ||!wp_verify_nonce($nonce, 'unlock_ip')) + { + $aio_wp_security->debug_logger->log_debug("Nonce check failed for unlock IP operation!",4); + die(__('Nonce check failed for unlock IP operation!','all-in-one-wp-security-and-firewall')); + } + + //Unlock single record + $unlock_command = $wpdb->prepare( "UPDATE ".$lockdown_table." SET release_date = now() WHERE id = %d", absint($entries) ); + $result = $wpdb->query($unlock_command); + if($result != NULL) + { + AIOWPSecurity_Admin_Menu::show_msg_updated_st(__('The selected IP entry was unlocked successfully!','all-in-one-wp-security-and-firewall')); + } + } + } + + /* + * This function will delete selected records from the "login_lockdown" table. + * The function accepts either an array of IDs or a single ID + */ + function delete_lockdown_records($entries) + { + global $wpdb, $aio_wp_security; + $lockdown_table = AIOWPSEC_TBL_LOGIN_LOCKDOWN; + if (is_array($entries)) + { + if (isset($_REQUEST['_wp_http_referer'])) + { + //Delete multiple records + $entries = array_filter($entries, 'is_numeric'); //discard non-numeric ID values + $id_list = "(" .implode(",",$entries) .")"; //Create comma separate list for DB operation + $delete_command = "DELETE FROM ".$lockdown_table." WHERE id IN ".$id_list; + $result = $wpdb->query($delete_command); + if($result != NULL) + { + AIOWPSecurity_Admin_Menu::show_msg_record_deleted_st(); + } + } + } + elseif ($entries != NULL) + { + $nonce=isset($_GET['aiowps_nonce'])?$_GET['aiowps_nonce']:''; + if (!isset($nonce) ||!wp_verify_nonce($nonce, 'delete_lockdown_record')) + { + $aio_wp_security->debug_logger->log_debug("Nonce check failed for delete lockdown record operation!",4); + die(__('Nonce check failed for delete lockdown record operation!','all-in-one-wp-security-and-firewall')); + } + //Delete single record + $delete_command = "DELETE FROM ".$lockdown_table." WHERE id = '".absint($entries)."'"; + $result = $wpdb->query($delete_command); + if($result != NULL) + { + AIOWPSecurity_Admin_Menu::show_msg_record_deleted_st(); + } + } + } + + function prepare_items() { + /** + * First, lets decide how many records per page to show + */ + $per_page = 20; + $columns = $this->get_columns(); + $hidden = array(); + $sortable = $this->get_sortable_columns(); + + $this->_column_headers = array($columns, $hidden, $sortable); + + $this->process_bulk_action(); + + global $wpdb; + $lockdown_table_name = AIOWPSEC_TBL_LOGIN_LOCKDOWN; + + /* -- Ordering parameters -- */ + //Parameters that are going to be used to order the result + isset($_GET["orderby"]) ? $orderby = strip_tags($_GET["orderby"]): $orderby = ''; + isset($_GET["order"]) ? $order = strip_tags($_GET["order"]): $order = ''; + + $orderby = !empty($orderby) ? esc_sql($orderby) : 'lockdown_date'; + $order = !empty($order) ? esc_sql($order) : 'DESC'; + + $orderby = AIOWPSecurity_Utility::sanitize_value_by_array($orderby, $sortable); + $order = AIOWPSecurity_Utility::sanitize_value_by_array($order, array('DESC' => '1', 'ASC' => '1')); + + $data = $wpdb->get_results($wpdb->prepare("SELECT * FROM $lockdown_table_name WHERE (lock_reason=%s OR lock_reason=%s) AND release_date > now() ORDER BY $orderby $order", 'login_fail', '404'), ARRAY_A); + $current_page = $this->get_pagenum(); + $total_items = count($data); + $data = array_slice($data,(($current_page-1)*$per_page),$per_page); + $this->items = $data; + $this->set_pagination_args( array( + 'total_items' => $total_items, //WE have to calculate the total number of items + 'per_page' => $per_page, //WE have to determine how many items to show on a page + 'total_pages' => ceil($total_items/$per_page) //WE have to calculate the total number of pages + ) ); + } +} \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-logged-in-users.php b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-logged-in-users.php new file mode 100644 index 0000000..a02ef9f --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-logged-in-users.php @@ -0,0 +1,140 @@ + 'item', //singular name of the listed records + 'plural' => 'items', //plural name of the listed records + 'ajax' => false //does this table support ajax? + ) ); + + } + + function column_default($item, $column_name){ + return $item[$column_name]; + } + + function column_user_id($item){ + $tab = strip_tags($_REQUEST['tab']); + $force_logout_url = sprintf('admin.php?page=%s&tab=%s&action=%s&logged_in_id=%s&ip_address=%s', AIOWPSEC_USER_LOGIN_MENU_SLUG, $tab, 'force_user_logout', $item['user_id'], $item['ip_address']); + //Add nonce to URL + $force_logout_nonce = wp_nonce_url($force_logout_url, "force_user_logout", "aiowps_nonce"); + + //Build row actions + $actions = array( + 'logout' => 'Force Logout', + ); + + //Return the user_login contents + return sprintf('%1$s %2$s', + /*$1%s*/ $item['user_id'], + /*$2%s*/ $this->row_actions($actions) + ); + } + + function get_columns(){ + $columns = array( + 'user_id' => 'User ID', + 'username' => 'Login Name', + 'ip_address' => 'IP Address', + ); + return $columns; + } + + function get_sortable_columns() { + $sortable_columns = array( + 'user_id' => array('user_id',false), + 'username' => array('username',false), + 'ip_address' => array('ip_address',false), + ); + return $sortable_columns; + } + + function get_bulk_actions() { + return array(); + } + + function process_bulk_action() { + } + + /* + * This function will force a selected user to be logged out. + * The function accepts either an array of IDs or a single ID (TODO - bulk actions not implemented yet!) + */ + function force_user_logout($user_id, $ip_addr) + { + global $wpdb, $aio_wp_security; + if (is_array($user_id)) + { + if (isset($_REQUEST['_wp_http_referer'])) + { + //TODO - implement bulk action in future release! + } + } + elseif ($user_id != NULL) + { + $nonce=isset($_GET['aiowps_nonce'])?$_GET['aiowps_nonce']:''; + if (!isset($nonce) ||!wp_verify_nonce($nonce, 'force_user_logout')) + { + $aio_wp_security->debug_logger->log_debug("Nonce check failed for force user logout operation!",4); + die(__('Nonce check failed for force user logout operation!','all-in-one-wp-security-and-firewall')); + } + //Force single user logout + $user_id = absint($user_id); + $manager = WP_Session_Tokens::get_instance( $user_id ); + $manager->destroy_all(); + // + $aio_wp_security->user_login_obj->update_user_online_transient($user_id, $ip_addr); +// if($result != NULL) +// { + $success_msg = '

      '; + $success_msg .= __('The selected user was logged out successfully!','all-in-one-wp-security-and-firewall'); + $success_msg .= '

      '; + _e($success_msg); +// } + } + } + + + function prepare_items() { + //First, lets decide how many records per page to show + $per_page = 20; + $columns = $this->get_columns(); + $hidden = array(); + $sortable = $this->get_sortable_columns(); + + $this->_column_headers = array($columns, $hidden, $sortable); + + //$this->process_bulk_action(); + + global $wpdb; + global $aio_wp_security; + + $logged_in_users = (AIOWPSecurity_Utility::is_multisite_install() ? get_site_transient('users_online') : get_transient('users_online')); + if($logged_in_users !== FALSE){ + foreach ($logged_in_users as $key=>$val) + { + $userdata = get_userdata($val['user_id']); + $username = $userdata->user_login; + $val['username'] = $username; + $logged_in_users[$key] = $val; + } + }else{ + $logged_in_users = array(); //If no transient found set to empty array + } + $data = $logged_in_users; + $current_page = $this->get_pagenum(); + $total_items = count($data); + $data = array_slice($data,(($current_page-1)*$per_page),$per_page); + $this->items = $data; + $this->set_pagination_args( array( + 'total_items' => $total_items, //WE have to calculate the total number of items + 'per_page' => $per_page, //WE have to determine how many items to show on a page + 'total_pages' => ceil($total_items/$per_page) //WE have to calculate the total number of pages + )); + } +} \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-login-fails.php b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-login-fails.php new file mode 100644 index 0000000..5e7e5b6 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-login-fails.php @@ -0,0 +1,179 @@ + 'item', //singular name of the listed records + 'plural' => 'items', //plural name of the listed records + 'ajax' => false //does this table support ajax? + ) ); + + } + + function column_default($item, $column_name){ + return $item[$column_name]; + } + + function column_login_attempt_ip($item){ + $tab = strip_tags($_REQUEST['tab']); + $delete_url = sprintf('admin.php?page=%s&tab=%s&action=%s&failed_login_id=%s', AIOWPSEC_USER_LOGIN_MENU_SLUG, $tab, 'delete_failed_login_rec', $item['id']); + //Add nonce to delete URL + $delete_url_nonce = wp_nonce_url($delete_url, "delete_failed_login_rec", "aiowps_nonce"); + + //Build row actions + $actions = array( + 'delete' => 'Delete', + ); + + //Return the user_login contents + return sprintf('%1$s %2$s', + /*$1%s*/ $item['login_attempt_ip'], + /*$2%s*/ $this->row_actions($actions) + ); + } + + + function column_cb($item){ + return sprintf( + '', + /*$1%s*/ $this->_args['singular'], //Let's simply repurpose the table's singular label + /*$2%s*/ $item['id'] //The value of the checkbox should be the record's id + ); + } + + function get_columns(){ + $columns = array( + 'cb' => '', //Render a checkbox + 'login_attempt_ip' => 'Login IP Range', + 'user_id' => 'User ID', + 'user_login' => 'Username', + 'failed_login_date' => 'Date' + ); + return $columns; + } + + function get_sortable_columns() { + $sortable_columns = array( + 'login_attempt_ip' => array('login_attempt_ip',false), + 'user_id' => array('user_id',false), + 'user_login' => array('user_login',false), + 'failed_login_date' => array('failed_login_date',false), + ); + return $sortable_columns; + } + + function get_bulk_actions() { + $actions = array( + 'delete' => 'Delete' + ); + return $actions; + } + + function process_bulk_action() { + global $aio_wp_security; + if('delete'===$this->current_action()) + {//Process delete bulk actions + if(!isset($_REQUEST['item'])) + { + $error_msg = '

      '; + $error_msg .= __('Please select some records using the checkboxes','all-in-one-wp-security-and-firewall'); + $error_msg .= '

      '; + _e($error_msg); + } else{ + $this->delete_login_failed_records(($_REQUEST['item'])); + + } + } + } + + + + /* + * This function will delete selected records from the "failed_logins" table. + * The function accepts either an array of IDs or a single ID + */ + function delete_login_failed_records($entries) + { + global $wpdb, $aio_wp_security; + $failed_login_table = AIOWPSEC_TBL_FAILED_LOGINS; + if (is_array($entries)) + { + if (isset($_REQUEST['_wp_http_referer'])) + { + //Delete multiple records + $entries = array_filter($entries, 'is_numeric'); //discard non-numeric ID values + $id_list = "(" .implode(",",$entries) .")"; //Create comma separate list for DB operation + $delete_command = "DELETE FROM ".$failed_login_table." WHERE ID IN ".$id_list; + $result = $wpdb->query($delete_command); + if($result != NULL) + { + $success_msg = '

      '; + $success_msg .= __('The selected entries were deleted successfully!','all-in-one-wp-security-and-firewall'); + $success_msg .= '

      '; + _e($success_msg); + } + } + + } elseif ($entries != NULL) + { + $nonce=isset($_GET['aiowps_nonce'])?$_GET['aiowps_nonce']:''; + if (!isset($nonce) ||!wp_verify_nonce($nonce, 'delete_failed_login_rec')) + { + $aio_wp_security->debug_logger->log_debug("Nonce check failed for delete failed login record operation!",4); + die(__('Nonce check failed for delete failed login record operation!','all-in-one-wp-security-and-firewall')); + } + //Delete single record + $delete_command = "DELETE FROM ".$failed_login_table." WHERE ID = '".absint($entries)."'"; + $result = $wpdb->query($delete_command); + if($result != NULL) + { + $success_msg = '

      '; + $success_msg .= __('The selected entry was deleted successfully!','all-in-one-wp-security-and-firewall'); + $success_msg .= '

      '; + _e($success_msg); + } + } + } + + function prepare_items() { + /** + * First, lets decide how many records per page to show + */ + $per_page = 20; + $columns = $this->get_columns(); + $hidden = array(); + $sortable = $this->get_sortable_columns(); + + $this->_column_headers = array($columns, $hidden, $sortable); + + $this->process_bulk_action(); + + global $wpdb; + $failed_logins_table_name = AIOWPSEC_TBL_FAILED_LOGINS; + + /* -- Ordering parameters -- */ + //Parameters that are going to be used to order the result + isset($_GET["orderby"]) ? $orderby = strip_tags($_GET["orderby"]): $orderby = ''; + isset($_GET["order"]) ? $order = strip_tags($_GET["order"]): $order = ''; + + $orderby = !empty($orderby) ? esc_sql($orderby) : 'failed_login_date'; + $order = !empty($order) ? esc_sql($order) : 'DESC'; + + $orderby = AIOWPSecurity_Utility::sanitize_value_by_array($orderby, $sortable); + $order = AIOWPSecurity_Utility::sanitize_value_by_array($order, array('DESC' => '1', 'ASC' => '1')); + + $data = $wpdb->get_results("SELECT * FROM $failed_logins_table_name ORDER BY $orderby $order", ARRAY_A); + $current_page = $this->get_pagenum(); + $total_items = count($data); + $data = array_slice($data,(($current_page-1)*$per_page),$per_page); + $this->items = $data; + $this->set_pagination_args( array( + 'total_items' => $total_items, //WE have to calculate the total number of items + 'per_page' => $per_page, //WE have to determine how many items to show on a page + 'total_pages' => ceil($total_items/$per_page) //WE have to calculate the total number of pages + ) ); + } +} \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-permanent-blocked-ip.php b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-permanent-blocked-ip.php new file mode 100644 index 0000000..d794307 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-permanent-blocked-ip.php @@ -0,0 +1,179 @@ + 'item', //singular name of the listed records + 'plural' => 'items', //plural name of the listed records + 'ajax' => false //does this table support ajax? + )); + + } + + function column_default($item, $column_name) + { + return $item[$column_name]; + } + + function column_id($item) + { + $tab = isset($_REQUEST['tab']) ? strip_tags($_REQUEST['tab']) : ''; + //Add nonce to delete URL + $unblock_ip_url = sprintf('admin.php?page=%s&tab=%s&action=%s&blocked_id=%s', AIOWPSEC_MAIN_MENU_SLUG, $tab, 'unblock_ip', $item['id']); + //Add nonce to unlock IP URL + $unblock_ip_nonce = wp_nonce_url($unblock_ip_url, "unblock_ip", "aiowps_nonce"); + + //Build row actions + $actions = array( + 'unblock' => 'Unblock', + ); + + //Return the user_login contents + return sprintf('%1$s %2$s', + /*$1%s*/ + $item['id'], + /*$2%s*/ + $this->row_actions($actions) + ); + } + + + function column_cb($item) + { + return sprintf( + '', + /*$1%s*/ + $this->_args['singular'], //Let's simply repurpose the table's singular label + /*$2%s*/ + $item['id'] //The value of the checkbox should be the record's id + ); + } + + function get_columns() + { + $columns = array( + 'cb' => '', //Render a checkbox + 'id' => 'ID', + 'blocked_ip' => 'Blocked IP', + 'block_reason' => 'Reason', + 'blocked_date' => 'Date' + ); + return $columns; + } + + function get_sortable_columns() + { + $sortable_columns = array( + 'id' => array('id', false), + 'blocked_ip' => array('blocked_ip', false), + 'block_reason' => array('block_reason', false), + 'blocked_date' => array('blocked_date', false) + ); + return $sortable_columns; + } + + function get_bulk_actions() + { + $actions = array( + 'unblock' => 'Unblock' + ); + return $actions; + } + + function process_bulk_action() + { + if ('unblock' === $this->current_action()) {//Process unlock bulk actions + if (!isset($_REQUEST['item'])) { + AIOWPSecurity_Admin_Menu::show_msg_error_st(__('Please select some records using the checkboxes', 'all-in-one-wp-security-and-firewall')); + } else { + $this->unblock_ip_address(($_REQUEST['item'])); + } + } + } + + + /* + * This function will delete selected records from the "AIOWPSEC_TBL_PERM_BLOCK" table. + * The function accepts either an array of IDs or a single ID + */ + function unblock_ip_address($entries) + { + global $wpdb, $aio_wp_security; + if (is_array($entries)) { + if (isset($_REQUEST['_wp_http_referer'])) { + //Delete multiple records + $entries = array_filter($entries, 'is_numeric'); //discard non-numeric ID values + $id_list = "(" . implode(",", $entries) . ")"; //Create comma separate list for DB operation + $delete_command = "DELETE FROM " . AIOWPSEC_TBL_PERM_BLOCK . " WHERE id IN " . $id_list; + $result = $wpdb->query($delete_command); + if ($result != NULL) { + AIOWPSecurity_Admin_Menu::show_msg_record_deleted_st(); + } + } + } elseif ($entries != NULL) { + $nonce = isset($_GET['aiowps_nonce']) ? $_GET['aiowps_nonce'] : ''; + if (!isset($nonce) || !wp_verify_nonce($nonce, 'unblock_ip')) { + $aio_wp_security->debug_logger->log_debug("Nonce check failed for unblock IP operation!", 4); + die(__('Nonce check failed for unblock IP operation!', 'all-in-one-wp-security-and-firewall')); + } + //Delete single record + $delete_command = "DELETE FROM " . AIOWPSEC_TBL_PERM_BLOCK . " WHERE id = '" . absint($entries) . "'"; + $result = $wpdb->query($delete_command); + if ($result != NULL) { + AIOWPSecurity_Admin_Menu::show_msg_record_deleted_st(); + } + } + } + + function prepare_items() + { + /** + * First, lets decide how many records per page to show + */ + $per_page = 20; + $columns = $this->get_columns(); + $hidden = array(); + $sortable = $this->get_sortable_columns(); + + $this->_column_headers = array($columns, $hidden, $sortable); + + $this->process_bulk_action(); + + global $wpdb; + $block_table_name = AIOWPSEC_TBL_PERM_BLOCK; + + /* -- Ordering parameters -- */ + //Parameters that are going to be used to order the result + isset($_GET["orderby"]) ? $orderby = strip_tags($_GET["orderby"]) : $orderby = ''; + isset($_GET["order"]) ? $order = strip_tags($_GET["order"]) : $order = ''; + + $orderby = !empty($orderby) ? esc_sql($orderby) : 'id'; + $order = !empty($order) ? esc_sql($order) : 'DESC'; + + $orderby = AIOWPSecurity_Utility::sanitize_value_by_array($orderby, $sortable); + $order = AIOWPSecurity_Utility::sanitize_value_by_array($order, array('DESC' => '1', 'ASC' => '1')); + + if (isset($_POST['s'])) { + $search_term = trim($_POST['s']); + $data = $wpdb->get_results($wpdb->prepare("SELECT * FROM " . $block_table_name . " WHERE `blocked_ip` LIKE '%%%s%%' OR `block_reason` LIKE '%%%s%%' OR `country_origin` LIKE '%%%s%%' OR `blocked_date` LIKE '%%%s%%'", $search_term, $search_term, $search_term, $search_term), ARRAY_A); + } else { + $data = $wpdb->get_results("SELECT * FROM " . $block_table_name . " ORDER BY $orderby $order", ARRAY_A); + } + + $current_page = $this->get_pagenum(); + $total_items = count($data); + $data = array_slice($data, (($current_page - 1) * $per_page), $per_page); + $this->items = $data; + $this->set_pagination_args(array( + 'total_items' => $total_items, //WE have to calculate the total number of items + 'per_page' => $per_page, //WE have to determine how many items to show on a page + 'total_pages' => ceil($total_items / $per_page) //WE have to calculate the total number of pages + )); + } +} \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-registered-users.php b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-registered-users.php new file mode 100644 index 0000000..aa6c273 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-registered-users.php @@ -0,0 +1,333 @@ + 'item', //singular name of the listed records + 'plural' => 'items', //plural name of the listed records + 'ajax' => false //does this table support ajax? + ) ); + + } + + function column_default($item, $column_name){ + return $item[$column_name]; + } + + function column_ID($item){ + //$tab = strip_tags($_REQUEST['tab']); + $delete_url = sprintf('admin.php?page=%s&action=%s&user_id=%s', AIOWPSEC_USER_REGISTRATION_MENU_SLUG, 'delete_acct', $item['ID']); + //Add nonce to delete URL + $delete_url_nonce = wp_nonce_url($delete_url, "delete_user_acct", "aiowps_nonce"); + + $block_ip = sprintf('admin.php?page=%s&action=%s&ip_address=%s', AIOWPSEC_USER_REGISTRATION_MENU_SLUG, 'block_ip', $item['ip_address']); + //Add nonce to block IP + $block_ip_nonce = wp_nonce_url($block_ip, "block_ip", "aiowps_nonce"); + + //Build row actions + $actions = array( + 'view' => sprintf('View',$item['ID']), + 'approve_acct' => sprintf('Approve',AIOWPSEC_USER_REGISTRATION_MENU_SLUG,'approve_acct',$item['ID']), + 'delete_acct' => 'Delete', + 'block_ip' => 'Block IP', + ); + + //Return the user_login contents + return sprintf('%1$s %2$s', + /*$1%s*/ $item['ID'], + /*$2%s*/ $this->row_actions($actions) + ); + } + + function column_ip_address($item){ + if (AIOWPSecurity_Blocking::is_ip_blocked($item['ip_address'])){ + return $item['ip_address'].'
      '.__('blocked','WPS').''; + } else{ + return $item['ip_address']; + } + } + + function column_cb($item){ + return sprintf( + '', + /*$1%s*/ $this->_args['singular'], //Let's simply repurpose the table's singular label + /*$2%s*/ $item['ID'] //The value of the checkbox should be the record's id + ); + } + + + function get_columns(){ + $columns = array( + 'cb' => '', //Render a checkbox + 'ID' => 'User ID', + 'user_login' => 'Login Name', + 'user_email' => 'Email', + 'user_registered' => 'Register Date', + 'account_status' => 'Account Status', + 'ip_address' => 'IP Address' + ); + return $columns; + } + + function get_sortable_columns() { + $sortable_columns = array( +// 'ID' => array('ID',false), +// 'user_login' => array('user_login',false), +// 'user_email' => array('user_email',false), +// 'user_registered' => array('user_registered',false), +// 'account_status' => array('account_status',false), + ); + return $sortable_columns; + } + + function get_bulk_actions() { + $actions = array( + 'approve' => 'Approve', + 'delete' => 'Delete', + 'block' => 'Block IP' + ); + return $actions; + } + + function process_bulk_action() { + if('approve'===$this->current_action()) + {//Process approve bulk actions + if(!isset($_REQUEST['item'])) + { + AIOWPSecurity_Admin_Menu::show_msg_error_st(__('Please select some records using the checkboxes','all-in-one-wp-security-and-firewall')); + }else + { + $this->approve_selected_accounts(($_REQUEST['item'])); + } + } + + if('delete'===$this->current_action()) + {//Process delete bulk actions + if(!isset($_REQUEST['item'])) + { + AIOWPSecurity_Admin_Menu::show_msg_error_st(__('Please select some records using the checkboxes','all-in-one-wp-security-and-firewall')); + }else + { + $this->delete_selected_accounts(($_REQUEST['item'])); + } + } + + if('block'===$this->current_action()) + {//Process block bulk actions + if(!isset($_REQUEST['item'])) + { + AIOWPSecurity_Admin_Menu::show_msg_error_st(__('Please select some records using the checkboxes','all-in-one-wp-security-and-firewall')); + }else + { + $this->block_selected_ips(($_REQUEST['item'])); + } + } + + } + + function approve_selected_accounts($entries) + { + global $wpdb, $aio_wp_security; + $meta_key = 'aiowps_account_status'; + $meta_value = 'approved'; //set account status + $failed_accts = ''; //string to store comma separated accounts which failed to update + $at_least_one_updated = false; + if (is_array($entries)) + { + //Let's go through each entry and approve + foreach($entries as $user_id) + { + $result = update_user_meta($user_id, $meta_key, $meta_value); + if($result === false) + { + $failed_accts .= ' '.$user_id.','; + $aio_wp_security->debug_logger->log_debug("AIOWPSecurity_List_Registered_Users::approve_selected_accounts() - could not approve account ID: $user_id",4); + }else{ + $at_least_one_updated = true; + $user = get_user_by('id', $user_id); + if($user === false){ + //don't send mail + }else{ + $email_msg = ''; + $to_email_address = $user->user_email; + $subject = '['.get_option('siteurl').'] '. __('Your account is now active','all-in-one-wp-security-and-firewall'); + $email_msg .= __('Your account with user ID:','all-in-one-wp-security-and-firewall').$user->ID.__(' is now active','all-in-one-wp-security-and-firewall')."\n"; + $site_title = get_bloginfo( 'name' ); + $from_name = empty($site_title)?'WordPress':$site_title; + $email_header = 'From: '.$from_name.' <'.get_bloginfo('admin_email').'>' . "\r\n\\"; + $sendMail = wp_mail($to_email_address, $subject, $email_msg, $email_header); + if(FALSE === $sendMail){ + $aio_wp_security->debug_logger->log_debug("Manual account approval notification email failed to send to ".$to_email_address,4); + } + + } + } + } + if ($at_least_one_updated){ + AIOWPSecurity_Admin_Menu::show_msg_updated_st(__('The selected accounts were approved successfully!','all-in-one-wp-security-and-firewall')); + } + if ($failed_accts != ''){//display any failed account updates + rtrim($failed_accts); + AIOWPSecurity_Admin_Menu::show_msg_error_st(__('The following accounts failed to update successfully: ','all-in-one-wp-security-and-firewall').$failed_accts); + } + } elseif ($entries != NULL) + { + //Approve single account + $result = update_user_meta($entries, $meta_key, $meta_value); + if($result) + { + AIOWPSecurity_Admin_Menu::show_msg_updated_st(__('The selected account was approved successfully!','all-in-one-wp-security-and-firewall')); + $user = get_user_by('id', $entries); + $to_email_address = $user->user_email; + $email_msg = ''; + $subject = '['.get_option('siteurl').'] '. __('Your account is now active','all-in-one-wp-security-and-firewall'); + $email_msg .= __('Your account with username: ','all-in-one-wp-security-and-firewall').$user->user_login.__(' is now active','all-in-one-wp-security-and-firewall')."\n"; + $site_title = get_bloginfo( 'name' ); + $from_name = empty($site_title)?'WordPress':$site_title; + $email_header = 'From: '.$from_name.' <'.get_bloginfo('admin_email').'>' . "\r\n\\"; + $sendMail = wp_mail($to_email_address, $subject, $email_msg, $email_header); + if(FALSE === $sendMail){ + $aio_wp_security->debug_logger->log_debug("Manual account approval notification email failed to send to ".$to_email_address,4); + } + + + }else if($result === false){ + $aio_wp_security->debug_logger->log_debug("AIOWPSecurity_List_Registered_Users::approve_selected_accounts() - could not approve account ID: $user_id",4); + } + } + } + + function delete_selected_accounts($entries) + { + global $wpdb, $aio_wp_security; + if (is_array($entries)) + { + if (isset($_REQUEST['_wp_http_referer'])) + { + //Let's go through each entry and delete account + foreach($entries as $user_id) + { + $result = wp_delete_user($user_id); + if($result !== true) + { + $aio_wp_security->debug_logger->log_debug("AIOWPSecurity_List_Registered_Users::delete_selected_accounts() - could not delete account ID: $user_id",4); + } + } + AIOWPSecurity_Admin_Menu::show_msg_updated_st(__('The selected accounts were deleted successfully!','all-in-one-wp-security-and-firewall')); + } + } elseif ($entries != NULL) + { + $nonce=isset($_GET['aiowps_nonce'])?$_GET['aiowps_nonce']:''; + if (!isset($nonce) ||!wp_verify_nonce($nonce, 'delete_user_acct')) + { + $aio_wp_security->debug_logger->log_debug("Nonce check failed for delete registered user account operation!",4); + die(__('Nonce check failed for delete registered user account operation!','all-in-one-wp-security-and-firewall')); + } + + //Delete single account + + $result = wp_delete_user($entries); + if($result === true) + { + AIOWPSecurity_Admin_Menu::show_msg_updated_st(__('The selected account was deleted successfully!','all-in-one-wp-security-and-firewall')); + } + else + { + $aio_wp_security->debug_logger->log_debug("AIOWPSecurity_List_Registered_Users::delete_selected_accounts() - could not delete account ID: $entries",4); + } + } + } + + function block_selected_ips($entries) + { + global $wpdb, $aio_wp_security; + if (is_array($entries)) + { + if (isset($_REQUEST['_wp_http_referer'])) + { + //Let's go through each entry and block IP + foreach($entries as $id) + { + $ip_address = get_user_meta($id, 'aiowps_registrant_ip', true); + $result = AIOWPSecurity_Blocking::add_ip_to_block_list($ip_address, 'registration_spam'); + if($result === false) + { + $aio_wp_security->debug_logger->log_debug("AIOWPSecurity_List_Registered_Users::block_selected_ips() - could not block IP : $ip_address",4); + } + } + $msg = __('The selected IP addresses were successfully added to the permanent block list!','all-in-one-wp-security-and-firewall'); + $msg .= ' '.__('View Blocked IPs','all-in-one-wp-security-and-firewall').''; + AIOWPSecurity_Admin_Menu::show_msg_updated_st($msg); + } + } elseif ($entries != NULL) + { + $nonce=isset($_GET['aiowps_nonce'])?$_GET['aiowps_nonce']:''; + if (!isset($nonce) ||!wp_verify_nonce($nonce, 'block_ip')) + { + $aio_wp_security->debug_logger->log_debug("Nonce check failed for block IP operation of registered user!",4); + die(__('Nonce check failed for block IP operation of registered user!','all-in-one-wp-security-and-firewall')); + } + + //Block single IP + $result = AIOWPSecurity_Blocking::add_ip_to_block_list($entries, 'registration_spam'); + if($result === true) + { + $msg = __('The selected IP was successfully added to the permanent block list!','all-in-one-wp-security-and-firewall'); + $msg .= ' '.__('View Blocked IPs','all-in-one-wp-security-and-firewall').''; + AIOWPSecurity_Admin_Menu::show_msg_updated_st($msg); + } + else + { + $aio_wp_security->debug_logger->log_debug("AIOWPSecurity_List_Registered_Users::block_selected_ips() - could not block IP: $entries",4); + } + } + } + + function prepare_items() { + //First, lets decide how many records per page to show + $per_page = 20; + $columns = $this->get_columns(); + $hidden = array(); + $sortable = $this->get_sortable_columns(); + + $this->_column_headers = array($columns, $hidden, $sortable); + + $this->process_bulk_action(); + + //Get registered users which have the special 'aiowps_account_status' meta key set to 'pending' + $data = $this->get_registered_user_data('pending'); + + $current_page = $this->get_pagenum(); + $total_items = count($data); + $data = array_slice($data,(($current_page-1)*$per_page),$per_page); + $this->items = $data; + $this->set_pagination_args( array( + 'total_items' => $total_items, //WE have to calculate the total number of items + 'per_page' => $per_page, //WE have to determine how many items to show on a page + 'total_pages' => ceil($total_items/$per_page) //WE have to calculate the total number of pages + )); + } + + //Returns all users who have the special 'aiowps_account_status' meta key + function get_registered_user_data($status='') + { + $user_fields = array( 'ID', 'user_login', 'user_email', 'user_registered'); + $user_query = new WP_User_Query(array('meta_key' => 'aiowps_account_status', 'meta_value' => $status, 'fields' => $user_fields)); + $user_results = $user_query->results; + + $final_data = array(); + foreach ($user_results as $user) + { + $temp_array = get_object_vars($user); //Turn the object into array + $temp_array['account_status'] = get_user_meta($temp_array['ID'], 'aiowps_account_status', true); + $ip = get_user_meta($temp_array['ID'], 'aiowps_registrant_ip', true); + $temp_array['ip_address'] = empty($ip)?'':$ip; + $final_data[] = $temp_array; + } + return $final_data; + } +} \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-maintenance-menu.php b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-maintenance-menu.php new file mode 100644 index 0000000..6f58517 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-maintenance-menu.php @@ -0,0 +1,138 @@ + 'render_tab1', + ); + + function __construct() + { + $this->render_menu_page(); + } + + function set_menu_tabs() + { + $this->menu_tabs = array( + 'tab1' => __('Visitor Lockout', 'all-in-one-wp-security-and-firewall'), + ); + } + + function get_current_tab() + { + $tab_keys = array_keys($this->menu_tabs); + $tab = isset( $_GET['tab'] ) ? sanitize_text_field($_GET['tab']) : $tab_keys[0]; + return $tab; + } + + /* + * Renders our tabs of this menu as nav items + */ + function render_menu_tabs() + { + $current_tab = $this->get_current_tab(); + + echo ''; + } + + /* + * The menu rendering goes here + */ + function render_menu_page() + { + echo '
      '; + echo '

      '.__('Maintenance','all-in-one-wp-security-and-firewall').'

      ';//Interface title + $this->set_menu_tabs(); + $tab = $this->get_current_tab(); + $this->render_menu_tabs(); + ?> +
      + menu_tabs); + call_user_func(array(&$this, $this->menu_tabs_handler[$tab])); + ?> +
      +
      + debug_logger->log_debug("Nonce check failed on site lockout feature settings save!",4); + die("Nonce check failed on site lockout feature settings save!"); + } + + //Save settings + $aio_wp_security->configs->set_value('aiowps_site_lockout',isset($_POST["aiowps_site_lockout"])?'1':''); + $maint_msg = htmlentities(stripslashes($_POST['aiowps_site_lockout_msg']), ENT_COMPAT, "UTF-8"); + $aio_wp_security->configs->set_value('aiowps_site_lockout_msg',$maint_msg);//Text area/msg box + $aio_wp_security->configs->save_config(); + + $this->show_msg_updated(__('Site lockout feature settings saved!', 'all-in-one-wp-security-and-firewall')); + + } + ?> +
      +

      +
      +
      + +
      + '.__('This feature allows you to put your site into "maintenance mode" by locking down the front-end to all visitors except logged in users with super admin privileges.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('Locking your site down to general visitors can be useful if you are investigating some issues on your site or perhaps you might be doing some maintenance and wish to keep out all traffic for security reasons.', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      + + + + + + + + + + +
      : + configs->get_value('aiowps_site_lockout')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      + configs->get_value('aiowps_site_lockout_msg'); + if(empty($aiowps_site_lockout_msg_raw)){ + $aiowps_site_lockout_msg_raw = 'This site is currently not available. Please try again later.'; + } + $aiowps_site_lockout_msg = html_entity_decode($aiowps_site_lockout_msg_raw, ENT_COMPAT, "UTF-8"); + $aiowps_site_lockout_msg_settings = array('textarea_name' => 'aiowps_site_lockout_msg'); + wp_editor($aiowps_site_lockout_msg, "aiowps_site_lockout_msg_editor_content", $aiowps_site_lockout_msg_settings); + ?> +
      + +
      + +
      + +
      +
      +
      + 'render_tab1', + 'tab2' => 'render_tab2', + 'tab3' => 'render_tab3', + ); + + function __construct() + { + $this->render_menu_page(); + } + + function set_menu_tabs() + { + $this->menu_tabs = array( + 'tab1' => __('Copy Protection', 'all-in-one-wp-security-and-firewall'), + 'tab2' => __('Frames', 'all-in-one-wp-security-and-firewall'), + 'tab3' => __('Users Enumeration', 'all-in-one-wp-security-and-firewall'), + ); + } + + function get_current_tab() + { + $tab_keys = array_keys($this->menu_tabs); + $tab = isset( $_GET['tab'] ) ? sanitize_text_field($_GET['tab']) : $tab_keys[0]; + return $tab; + } + + /* + * Renders our tabs of this menu as nav items + */ + function render_menu_tabs() + { + $current_tab = $this->get_current_tab(); + + echo ''; + } + + /* + * The menu rendering goes here + */ + function render_menu_page() + { + echo '
      '; + echo '

      '.__('Miscellaneous','all-in-one-wp-security-and-firewall').'

      ';//Interface title + $this->set_menu_tabs(); + $tab = $this->get_current_tab(); + $this->render_menu_tabs(); + ?> +
      + menu_tabs); + call_user_func(array(&$this, $this->menu_tabs_handler[$tab])); + ?> +
      +
      + debug_logger->log_debug("Nonce check failed on copy protection feature settings save!",4); + die("Nonce check failed on copy protection feature settings save!"); + } + + //Save settings + $aio_wp_security->configs->set_value('aiowps_copy_protection',isset($_POST["aiowps_copy_protection"])?'1':''); + $aio_wp_security->configs->save_config(); + + $this->show_msg_updated(__('Copy Protection feature settings saved!', 'all-in-one-wp-security-and-firewall')); + + } + ?> +
      +

      +
      +
      + +
      + '.__('This feature allows you to disable the ability to select and copy text from your front end.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('When admin user is logged in, the feature is automatically disabled for his session.', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      + + + + + + +
      : + configs->get_value('aiowps_copy_protection')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      + +
      + +
      +
      +
      + debug_logger->log_debug("Nonce check failed on prevent display inside frame feature settings save!",4); + die("Nonce check failed on prevent display inside frame feature settings save!"); + } + + //Save settings + $aio_wp_security->configs->set_value('aiowps_prevent_site_display_inside_frame',isset($_POST["aiowps_prevent_site_display_inside_frame"])?'1':''); + $aio_wp_security->configs->save_config(); + + $this->show_msg_updated(__('Frame Display Prevention feature settings saved!', 'all-in-one-wp-security-and-firewall')); + + } + ?> +
      +

      +
      +
      + +
      + '.__('This feature allows you to prevent other sites from displaying any of your content via a frame or iframe.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('When enabled, this feature will set the "X-Frame-Options" paramater to "sameorigin" in the HTTP header.', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      + + + + + + +
      : + configs->get_value('aiowps_prevent_site_display_inside_frame')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      + +
      + +
      +
      +
      + debug_logger->log_debug("Nonce check failed on prevent users enumeration feature settings save!",4); + die("Nonce check failed on prevent users enumeration feature settings save!"); + } + + //Save settings + $aio_wp_security->configs->set_value('aiowps_prevent_users_enumeration',isset($_POST["aiowps_prevent_users_enumeration"])?'1':''); + $aio_wp_security->configs->save_config(); + + $this->show_msg_updated(__('Users Enumeration Prevention feature settings saved!', 'all-in-one-wp-security-and-firewall')); + + } + ?> +
      +

      +
      +
      + +
      + '.__('This feature allows you to prevent external users/bots from fetching the user info with urls like "/?author=1".', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('When enabled, this feature will print a "forbidden" error rather than the user information.', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      + + + + + + +
      : + configs->get_value('aiowps_prevent_users_enumeration')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      + +
      + +
      +
      +
      + 'render_tab1', + 'tab2' => 'render_tab2', + 'tab3' => 'render_tab3', + 'tab4' => 'render_tab4', + 'tab5' => 'render_tab5', + ); + + function __construct() + { + $this->render_menu_page(); + } + + function set_menu_tabs() + { + $this->menu_tabs = array( + 'tab1' => __('General Settings', 'all-in-one-wp-security-and-firewall'), + 'tab2' => '.htaccess '.__('File', 'all-in-one-wp-security-and-firewall'), + 'tab3' => 'wp-config.php '.__('File', 'all-in-one-wp-security-and-firewall'), + 'tab4' => __('WP Version Info', 'all-in-one-wp-security-and-firewall'), + 'tab5' => __('Import/Export', 'all-in-one-wp-security-and-firewall'), + ); + } + + function get_current_tab() + { + $tab_keys = array_keys($this->menu_tabs); + $tab = isset( $_GET['tab'] ) ? sanitize_text_field($_GET['tab']) : $tab_keys[0]; + return $tab; + } + + /* + * Renders our tabs of this menu as nav items + */ + function render_menu_tabs() + { + $current_tab = $this->get_current_tab(); + + echo ''; + } + + /* + * The menu rendering goes here + */ + function render_menu_page() + { + echo '
      '; + echo '

      '.__('Settings','all-in-one-wp-security-and-firewall').'

      ';//Interface title + $this->set_menu_tabs(); + $tab = $this->get_current_tab(); + $this->render_menu_tabs(); + ?> +
      + menu_tabs); + call_user_func(array(&$this, $this->menu_tabs_handler[$tab])); + ?> +
      +
      + debug_logger->log_debug("Nonce check failed on disable all security features!",4); + die("Nonce check failed on disable all security features!"); + } + AIOWPSecurity_Configure_Settings::turn_off_all_security_features(); + //Now let's clear the applicable rules from the .htaccess file + $res = AIOWPSecurity_Utility_Htaccess::write_to_htaccess(); + + //Now let's revert the disable editing setting in the wp-config.php file if necessary + $res2 = AIOWPSecurity_Utility::enable_file_edits(); + + if ($res) + { + $this->show_msg_updated(__('All the security features have been disabled successfully!', 'all-in-one-wp-security-and-firewall')); + } + else + { + $this->show_msg_error(__('Could not write to the .htaccess file. Please restore your .htaccess file manually using the restore functionality in the ".htaccess File".', 'all-in-one-wp-security-and-firewall')); + } + + if(!$res2) + { + $this->show_msg_error(__('Could not write to the wp-config.php. Please restore your wp-config.php file manually using the restore functionality in the "wp-config.php File".', 'all-in-one-wp-security-and-firewall')); + } + } + + if(isset($_POST['aiowpsec_disable_all_firewall_rules']))//Do form submission tasks + { + $nonce=$_REQUEST['_wpnonce']; + if (!wp_verify_nonce($nonce, 'aiowpsec-disable-all-firewall-rules')) + { + $aio_wp_security->debug_logger->log_debug("Nonce check failed on disable all firewall rules!",4); + die("Nonce check failed on disable all firewall rules!"); + } + AIOWPSecurity_Configure_Settings::turn_off_all_firewall_rules(); + //Now let's clear the applicable rules from the .htaccess file + $res = AIOWPSecurity_Utility_Htaccess::write_to_htaccess(); + + if ($res) + { + $this->show_msg_updated(__('All firewall rules have been disabled successfully!', 'all-in-one-wp-security-and-firewall')); + } + else + { + $this->show_msg_error(__('Could not write to the .htaccess file. Please restore your .htaccess file manually using the restore functionality in the ".htaccess File".', 'all-in-one-wp-security-and-firewall')); + } + } + + if(isset($_POST['aiowps_save_debug_settings']))//Do form submission tasks + { + $nonce=$_REQUEST['_wpnonce']; + if (!wp_verify_nonce($nonce, 'aiowpsec-save-debug-settings')) + { + $aio_wp_security->debug_logger->log_debug("Nonce check failed on save debug settings!",4); + die("Nonce check failed on save debug settings!"); + } + + $aio_wp_security->configs->set_value('aiowps_enable_debug',isset($_POST["aiowps_enable_debug"])?'1':''); + $aio_wp_security->configs->save_config(); + $this->show_msg_settings_updated(); + } + + ?> +
      +

      For information, updates and documentation, please visit the AIO WP Security & Firewall Plugin Page.

      +

      Follow us on Twitter, Google+ or via Email to stay upto date about the new security features of this plugin.

      +
      + +
      +

      +
      +

      +

      +

      +

      +

        +
      • +
      • +
      • +
      +

      +
      +
      + +
      +

      +
      +
      "> + +
      + '.__('If you think that some plugin functionality on your site is broken due to a security feature you enabled in this plugin, then use the following option to turn off all the security features of this plugin.', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      +
      + +
      +
      +
      +
      + +
      +

      +
      +
      "> + +
      + '.__('This feature will disable all firewall rules which are currently active in this plugin and it will also delete these rules from your .htacess file. Use it if you think one of the firewall rules is causing an issue on your site.', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      +
      + +
      +
      +
      +
      + +
      +

      +
      +
      "> + +
      + '.__('This setting allows you to enable/disable debug for this plugin.', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      + + + + + + +
      : + configs->get_value('aiowps_enable_debug')=='1') echo ' checked="checked"'; ?> value="1"/> + +

      +
      + +
      +
      +
      + debug_logger->log_debug("Nonce check failed on htaccess file save!",4); + die("Nonce check failed on htaccess file save!"); + } + $htaccess_path = ABSPATH . '.htaccess'; + $result = AIOWPSecurity_Utility_File::backup_and_rename_htaccess($htaccess_path); //Backup the htaccess file + + if ($result) + { + $random_prefix = AIOWPSecurity_Utility::generate_alpha_numeric_random_string(10); + $aiowps_backup_dir = WP_CONTENT_DIR.'/'.AIO_WP_SECURITY_BACKUPS_DIR_NAME; + if (rename($aiowps_backup_dir.'/'.'.htaccess.backup', $aiowps_backup_dir.'/'.$random_prefix.'_htaccess_backup.txt')) + { + echo '

      '; + _e('Your .htaccess file was successfully backed up! Using an FTP program go to the "/wp-content/aiowps_backups" directory to save a copy of the file to your computer.','all-in-one-wp-security-and-firewall'); + echo '

      '; + } + else + { + $aio_wp_security->debug_logger->log_debug("htaccess file rename failed during backup!",4); + $this->show_msg_error(__('htaccess file rename failed during backup. Please check your root directory for the backup file using FTP.','all-in-one-wp-security-and-firewall')); + } + } + else + { + $aio_wp_security->debug_logger->log_debug("htaccess - Backup operation failed!",4); + $this->show_msg_error(__('htaccess backup failed.','all-in-one-wp-security-and-firewall')); + } + } + + if(isset($_POST['aiowps_restore_htaccess_button']))//Do form submission tasks + { + $nonce=$_REQUEST['_wpnonce']; + if (!wp_verify_nonce($nonce, 'aiowpsec-restore-htaccess-nonce')) + { + $aio_wp_security->debug_logger->log_debug("Nonce check failed on htaccess file restore!",4); + die("Nonce check failed on htaccess file restore!"); + } + + if (empty($_POST['aiowps_htaccess_file'])) + { + $this->show_msg_error(__('Please choose a .htaccess to restore from.', 'all-in-one-wp-security-and-firewall')); + } + else + { + //Let's copy the uploaded .htaccess file into the active root file + $new_htaccess_file_path = trim($_POST['aiowps_htaccess_file']); + //TODO + //Verify that file chosen has contents which are relevant to .htaccess file + $is_htaccess = AIOWPSecurity_Utility_Htaccess::check_if_htaccess_contents($new_htaccess_file_path); + if ($is_htaccess == 1) + { + $active_root_htaccess = ABSPATH.'.htaccess'; + if (!copy($new_htaccess_file_path, $active_root_htaccess)) + { + //Failed to make a backup copy + $aio_wp_security->debug_logger->log_debug("htaccess - Restore from .htaccess operation failed!",4); + $this->show_msg_error(__('htaccess file restore failed. Please attempt to restore the .htaccess manually using FTP.','all-in-one-wp-security-and-firewall')); + } + else + { + $this->show_msg_updated(__('Your .htaccess file has successfully been restored!', 'all-in-one-wp-security-and-firewall')); + } + } + else + { + $aio_wp_security->debug_logger->log_debug("htaccess restore failed - Contents of restore file appear invalid!",4); + $this->show_msg_error(__('htaccess Restore operation failed! Please check the contents of the file you are trying to restore from.','all-in-one-wp-security-and-firewall')); + } + } + } + + ?> +

      +
      + '.__('Your ".htaccess" file is a key component of your website\'s security and it can be modified to implement various levels of protection mechanisms.', 'all-in-one-wp-security-and-firewall').' +
      '.__('This feature allows you to backup and save your currently active .htaccess file should you need to re-use the the backed up file in the future.', 'all-in-one-wp-security-and-firewall').' +
      '.__('You can also restore your site\'s .htaccess settings using a backed up .htaccess file.', 'all-in-one-wp-security-and-firewall').' +

      '; + ?> +
      + +
      +

      +
      +
      + +

      + +
      +
      +
      +

      +
      +
      + + + + + + +
      : + + +

      + +

      +
      + +
      +
      + + + + + + + + debug_logger->log_debug("Nonce check failed on wp-config file restore!",4); + die("Nonce check failed on wp-config file restore!"); + } + + if (empty($_POST['aiowps_wp_config_file'])) + { + $this->show_msg_error(__('Please choose a wp-config.php file to restore from.', 'all-in-one-wp-security-and-firewall')); + } + else + { + //Let's copy the uploaded wp-config.php file into the active root file + $new_wp_config_file_path = trim($_POST['aiowps_wp_config_file']); + + //Verify that file chosen is a wp-config.file + $is_wp_config = $this->check_if_wp_config_contents($new_wp_config_file_path); + if ($is_wp_config == 1) + { + $active_root_wp_config = AIOWPSecurity_Utility_File::get_wp_config_file_path(); + if (!copy($new_wp_config_file_path, $active_root_wp_config)) + { + //Failed to make a backup copy + $aio_wp_security->debug_logger->log_debug("wp-config.php - Restore from backed up wp-config operation failed!",4); + $this->show_msg_error(__('wp-config.php file restore failed. Please attempt to restore this file manually using FTP.','all-in-one-wp-security-and-firewall')); + } + else + { + $this->show_msg_updated(__('Your wp-config.php file has successfully been restored!', 'all-in-one-wp-security-and-firewall')); + } + } + else + { + $aio_wp_security->debug_logger->log_debug("wp-config.php restore failed - Contents of restore file appear invalid!",4); + $this->show_msg_error(__('wp-config.php Restore operation failed! Please check the contents of the file you are trying to restore from.','all-in-one-wp-security-and-firewall')); + } + } + } + + ?> +

      +
      + '.__('Your "wp-config.php" file is one of the most important in your WordPress installation. It is a primary configuration file and contains crucial things such as details of your database and other critical components.', 'all-in-one-wp-security-and-firewall').' +
      '.__('This feature allows you to backup and save your currently active wp-config.php file should you need to re-use the the backed up file in the future.', 'all-in-one-wp-security-and-firewall').' +
      '.__('You can also restore your site\'s wp-config.php settings using a backed up wp-config.php file.', 'all-in-one-wp-security-and-firewall').' +

      '; + ?> +
      + +
      +

      +
      +
      + +

      + + +
      +
      +
      +

      +
      +
      + + + + + + +
      : + + +

      + +

      +
      + +
      +
      + + + + + + + + debug_logger->log_debug("Nonce check failed on remove wp meta info options save!",4); + die("Nonce check failed on remove wp meta info options save!"); + } + $aio_wp_security->configs->set_value('aiowps_remove_wp_generator_meta_info',isset($_POST["aiowps_remove_wp_generator_meta_info"])?'1':''); + $aio_wp_security->configs->save_config(); + + //Recalculate points after the feature status/options have been altered + $aiowps_feature_mgr->check_feature_status_and_recalculate_points(); + + $this->show_msg_settings_updated(); + } + ?> +

      +
      + '.__('Wordpress generator automatically adds some meta information inside the "head" tags of every page on your site\'s front end. Below is an example of this:', 'all-in-one-wp-security-and-firewall'); + echo '
      <meta name="generator" content="WordPress 3.5.1" />'; + echo '
      '.__('The above meta information shows which version of WordPress your site is currently running and thus can help hackers or crawlers scan your site to see if you have an older version of WordPress or one with a known exploit.', 'all-in-one-wp-security-and-firewall').' +

      '.__('There are also other ways wordpress reveals version info such as during style and script loading. An example of this is:', 'all-in-one-wp-security-and-firewall').' +
      <link rel="stylesheet" id="jquery-ui-style-css" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.0/themes/smoothness/jquery-ui.css?ver=4.5.2" type="text/css" media="all" /> +

      '.__('This feature will allow you to remove the WP generator meta info and other version info from your site\'s pages.', 'all-in-one-wp-security-and-firewall').' +

      '; + ?> +
      + +
      +

      +
      + output_feature_details_badge("wp-generator-meta-tag"); + ?> + +
      + + + + + + +
      : + configs->get_value('aiowps_remove_wp_generator_meta_info')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      + +
      +
      + debug_logger->log_debug("Nonce check failed on import AIOWPS settings!",4); + die("Nonce check failed on import AIOWPS settings!"); + } + + if (empty($_POST['aiowps_import_settings_file']) && empty($_POST['aiowps_import_settings_text'])) + { + $this->show_msg_error(__('Please choose a file to import your settings from.', 'all-in-one-wp-security-and-firewall')); + } + else + { + if (empty($_POST['aiowps_import_settings_file'])) { + $import_from = "text"; + } else { + $import_from = "file"; + } + + if ($import_from == "file") { + //Let's get the uploaded import file path + $submitted_import_file_path = trim($_POST['aiowps_import_settings_file']); + $attachment_id = AIOWPSecurity_Utility_File::get_attachment_id_from_url($submitted_import_file_path); //we'll need this later for deleting + + //Verify that file chosen has valid AIOWPS settings contents + $aiowps_settings_file_contents = $this->check_if_valid_aiowps_settings_file($submitted_import_file_path); + } else { + //Get the string right from the textarea. Still confirm it's in the expected format. + $aiowps_settings_file_contents = $this->check_if_valid_aiowps_settings_text($_POST['aiowps_import_settings_text']); + } + + if ($aiowps_settings_file_contents != -1) + { + //Apply the settings and delete the file (if applicable) + $settings_array = json_decode($aiowps_settings_file_contents, true); + $aiowps_settings_applied = update_option('aio_wp_security_configs', $settings_array); + + if (!$aiowps_settings_applied) + { + //Failed to import settings + $aio_wp_security->debug_logger->log_debug("Import AIOWPS settings from " . $import_from . " operation failed!",4); + $this->show_msg_error(__('Import AIOWPS settings from ' . $import_from . ' operation failed!','all-in-one-wp-security-and-firewall')); + + if ($import_from == "file") { + //Delete the uploaded settings file for security purposes + wp_delete_attachment( $attachment_id, true ); + if ( false === wp_delete_attachment( $attachment_id, true ) ){ + $this->show_msg_error(__('The deletion of the import file failed. Please delete this file manually via the media menu for security purposes.', 'all-in-one-wp-security-and-firewall')); + }else{ + $this->show_msg_updated(__('The file you uploaded was also deleted for security purposes because it contains security settings details.', 'all-in-one-wp-security-and-firewall')); + } + } + } + else + { + $aio_wp_security->configs->configs = $settings_array; //Refresh the configs global variable + + //Just in case user submits partial config settings + //Run add_option_values to make sure any missing config items are at least set to default + AIOWPSecurity_Configure_Settings::add_option_values(); + if ($import_from == "file") { + //Delete the uploaded settings file for security purposes + wp_delete_attachment( $attachment_id, true ); + if ( false === wp_delete_attachment( $attachment_id, true ) ){ + $this->show_msg_updated(__('Your AIOWPS settings were successfully imported via file input.', 'all-in-one-wp-security-and-firewall')); + $this->show_msg_error(__('The deletion of the import file failed. Please delete this file manually via the media menu for security purposes because it contains security settings details.', 'all-in-one-wp-security-and-firewall')); + }else{ + $this->show_msg_updated(__('Your AIOWPS settings were successfully imported. The file you uploaded was also deleted for security purposes because it contains security settings details.', 'all-in-one-wp-security-and-firewall')); + } + } else { + $this->show_msg_updated(__('Your AIOWPS settings were successfully imported via text entry.', 'all-in-one-wp-security-and-firewall')); + } + //Now let's refresh the .htaccess file with any modified rules if applicable + $res = AIOWPSecurity_Utility_Htaccess::write_to_htaccess(); + + if( !$res ) + { + $this->show_msg_error(__('Could not write to the .htaccess file. Please check the file permissions.', 'all-in-one-wp-security-and-firewall')); + } + } + } + else + { + //Invalid settings file + $aio_wp_security->debug_logger->log_debug("The contents of your settings file appear invalid!",4); + $this->show_msg_error(__('The contents of your settings file appear invalid. Please check the contents of the file you are trying to import settings from.','all-in-one-wp-security-and-firewall')); + + if ($import_from == "file") { + //Let's also delete the uploaded settings file for security purposes + wp_delete_attachment( $attachment_id, true ); + if ( false === wp_delete_attachment( $attachment_id, true ) ){ + $this->show_msg_error(__('The deletion of the import file failed. Please delete this file manually via the media menu for security purposes.', 'all-in-one-wp-security-and-firewall')); + }else{ + $this->show_msg_updated(__('The file you uploaded was also deleted for security purposes because it contains security settings details.', 'all-in-one-wp-security-and-firewall')); + } + } + + } + } + } + + ?> +

      +
      + '.__('This section allows you to export or import your All In One WP Security & Firewall settings.', 'all-in-one-wp-security-and-firewall'); + echo '
      '.__('This can be handy if you wanted to save time by applying the settings from one site to another site.', 'all-in-one-wp-security-and-firewall').' +
      '.__('NOTE: Before importing, it is your responsibility to know what settings you are trying to import. Importing settings blindly can cause you to be locked out of your site.', 'all-in-one-wp-security-and-firewall').' +
      '.__('For Example: If a settings item relies on the domain URL then it may not work correctly when imported into a site with a different domain.','all-in-one-wp-security-and-firewall').' +

      '; + ?> +
      + +
      +

      +
      +
      + + + + + +
      + +
      +
      +
      +

      +
      +
      + + + + + + + + + + + +
      : + + +

      + +

      +
      : + +
      + +
      +
      + check_is_aiopws_settings($strText)) { + return stripcslashes($strText); + } else { + return -1; + } + } + + function check_is_aiopws_settings($strText) { + if(strpos($strText, 'aiowps_enable_login_lockdown') === FALSE){ + return false; + } else { + return true; + } + } + + //Checks if valid aiowps settings file and returns contents as string + function check_if_valid_aiowps_settings_file($wp_file) + { + $is_aiopws_settings = false; + + $file_contents = file_get_contents($wp_file); + + if ($file_contents == '' || $file_contents == NULL || $file_contents == false) + { + return -1; + } + + //Check a known aiowps config strings to see if it is contained within this file + $is_aiopws_settings = $this->check_is_aiopws_settings($file_contents); + + if ($is_aiopws_settings) + { + return $file_contents; + } + else + { + return -1; + } + + } + +} //end class \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php new file mode 100644 index 0000000..394061a --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php @@ -0,0 +1,488 @@ + 'render_tab1', + 'tab2' => 'render_tab2', + 'tab3' => 'render_tab3', + ); + + function __construct() + { + $this->render_menu_page(); + } + + function set_menu_tabs() + { + $this->menu_tabs = array( + 'tab1' => __('Comment SPAM', 'all-in-one-wp-security-and-firewall'), + 'tab2' => __('Comment SPAM IP Monitoring', 'all-in-one-wp-security-and-firewall'), + 'tab3' => __('BuddyPress', 'all-in-one-wp-security-and-firewall'), + ); + } + + function get_current_tab() + { + $tab_keys = array_keys($this->menu_tabs); + $tab = isset( $_GET['tab'] ) ? sanitize_text_field($_GET['tab']) : $tab_keys[0]; + return $tab; + } + + /* + * Renders our tabs of this menu as nav items + */ + function render_menu_tabs() + { + $current_tab = $this->get_current_tab(); + + echo ''; + } + + /* + * The menu rendering goes here + */ + function render_menu_page() + { + echo '
      '; + echo '

      '.__('SPAM Prevention','all-in-one-wp-security-and-firewall').'

      ';//Interface title + $this->set_menu_tabs(); + $tab = $this->get_current_tab(); + $this->render_menu_tabs(); + ?> +
      + menu_tabs); + call_user_func(array(&$this, $this->menu_tabs_handler[$tab])); + ?> +
      +
      + debug_logger->log_debug("Nonce check failed on save comment spam settings!",4); + die("Nonce check failed on save comment spam settings!"); + } + + //Save settings + $random_20_digit_string = AIOWPSecurity_Utility::generate_alpha_numeric_random_string(20); //Generate random 20 char string for use during captcha encode/decode + $aio_wp_security->configs->set_value('aiowps_captcha_secret_key', $random_20_digit_string); + + $aio_wp_security->configs->set_value('aiowps_enable_comment_captcha',isset($_POST["aiowps_enable_comment_captcha"])?'1':''); + $aio_wp_security->configs->set_value('aiowps_enable_spambot_blocking',isset($_POST["aiowps_enable_spambot_blocking"])?'1':''); + + //Commit the config settings + $aio_wp_security->configs->save_config(); + + //Recalculate points after the feature status/options have been altered + $aiowps_feature_mgr->check_feature_status_and_recalculate_points(); + + //Now let's write the applicable rules to the .htaccess file + $res = AIOWPSecurity_Utility_Htaccess::write_to_htaccess(); + + if ($res) + { + $this->show_msg_updated(__('Settings were successfully saved', 'all-in-one-wp-security-and-firewall')); + } + else + { + $this->show_msg_error(__('Could not write to the .htaccess file. Please check the file permissions.', 'all-in-one-wp-security-and-firewall')); + } + } + + ?> +

      +
      + + +
      +

      +
      +
      + '.__('This feature will add a simple math captcha field in the WordPress comments form.', 'all-in-one-wp-security-and-firewall'). + '
      '.__('Adding a captcha field in the comment form is a simple way of greatly reducing SPAM comments from bots without using .htaccess rules.', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      + output_feature_details_badge("comment-form-captcha"); + ?> + + + + + +
      : + configs->get_value('aiowps_enable_comment_captcha')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      +
      + +
      +

      +
      +
      + '.__('A large portion of WordPress blog comment SPAM is mainly produced by automated bots and not necessarily by humans. ', 'all-in-one-wp-security-and-firewall'). + '
      '.__('This feature will greatly minimize the useless and unecessary traffic and load on your server resulting from SPAM comments by blocking all comment requests which do not originate from your domain.', 'all-in-one-wp-security-and-firewall'). + '
      '.__('In other words, if the comment was not submitted by a human who physically submitted the comment on your site, the request will be blocked.', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      + output_feature_details_badge("block-spambots"); + if (AIOWPSecurity_Utility::is_multisite_install() && get_current_blog_id() != 1) + { + //Hide config settings if MS and not main site + AIOWPSecurity_Utility::display_multisite_message(); + } + else + { + ?> + + + + + +
      : + configs->get_value('aiowps_enable_spambot_blocking')=='1') echo ' checked="checked"'; ?> value="1"/> + + + +
      + '.__('This feature will implement a firewall rule to block all comment attempts which do not originate from your domain.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('A legitimate comment is one which is submitted by a human who physically fills out the comment form and clicks the submit button. For such events, the HTTP_REFERRER is always set to your own domain.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('A comment submitted by a spambot is done by directly calling the comments.php file, which usually means that the HTTP_REFERRER value is not your domain and often times empty.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('This feature will check and block comment requests which are not referred by your domain thus greatly reducing your overall blog SPAM and PHP requests done by the server to process these comments.', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      +
      + +
      + + +
      + debug_logger->log_debug("Nonce check failed on auto block SPAM IPs options save!",4); + die("Nonce check failed on auto block SPAM IPs options save!"); + } + + $spam_ip_min_comments = sanitize_text_field($_POST['aiowps_spam_ip_min_comments_block']); + if(!is_numeric($spam_ip_min_comments)) + { + $error .= '
      '.__('You entered a non numeric value for the minimum number of spam comments field. It has been set to the default value.','all-in-one-wp-security-and-firewall'); + $spam_ip_min_comments = '3';//Set it to the default value for this field + }elseif(empty($spam_ip_min_comments)){ + $error .= '
      '.__('You must enter an integer greater than zero for minimum number of spam comments field. It has been set to the default value.','all-in-one-wp-security-and-firewall'); + $spam_ip_min_comments = '3';//Set it to the default value for this field + + } + + if($error) + { + $this->show_msg_error(__('Attention!','all-in-one-wp-security-and-firewall').$error); + } + + //Save all the form values to the options + $aio_wp_security->configs->set_value('aiowps_enable_autoblock_spam_ip',isset($_POST["aiowps_enable_autoblock_spam_ip"])?'1':''); + $aio_wp_security->configs->set_value('aiowps_spam_ip_min_comments_block',absint($spam_ip_min_comments)); + $aio_wp_security->configs->save_config(); + + //Recalculate points after the feature status/options have been altered + $aiowps_feature_mgr->check_feature_status_and_recalculate_points(); + + $this->show_msg_settings_updated(); + } + + + if (isset($_POST['aiowps_ip_spam_comment_search'])) + { + $error = ''; + $nonce=$_REQUEST['_wpnonce']; + if (!wp_verify_nonce($nonce, 'aiowpsec-spammer-ip-list-nonce')) + { + $aio_wp_security->debug_logger->log_debug("Nonce check failed for list SPAM comment IPs!",4); + die(__('Nonce check failed for list SPAM comment IPs!','all-in-one-wp-security-and-firewall')); + } + + $min_comments_per_ip = sanitize_text_field($_POST['aiowps_spam_ip_min_comments']); + if(!is_numeric($min_comments_per_ip)) + { + $error .= '
      '.__('You entered a non numeric value for the minimum SPAM comments per IP field. It has been set to the default value.','all-in-one-wp-security-and-firewall'); + $min_comments_per_ip = '5';//Set it to the default value for this field + } + + if($error) + { + $this->show_msg_error(__('Attention!','all-in-one-wp-security-and-firewall').$error); + } + + //Save all the form values to the options + $aio_wp_security->configs->set_value('aiowps_spam_ip_min_comments',absint($min_comments_per_ip)); + $aio_wp_security->configs->save_config(); + $info_msg_string = sprintf( __('Displaying results for IP addresses which have posted a minimum of %s SPAM comments', 'all-in-one-wp-security-and-firewall'), $min_comments_per_ip); + $this->show_msg_updated($info_msg_string); + + } + + if(isset($_REQUEST['action'])) //Do list table form row action tasks + { + if($_REQUEST['action'] == 'block_spammer_ip') + { //The "block" link was clicked for a row in the list table + $spammer_ip_list->block_spammer_ip_records(strip_tags($_REQUEST['spammer_ip'])); + } + } + + ?> +
      +

      +
      + configs->get_value('aiowps_enable_autoblock_spam_ip')=='1' && !class_exists('Akismet')){ + $akismet_link = 'Akismet'; + $info_msg = sprintf( __('This feature has detected that %s is not active. It is highly recommended that you activate the Akismet plugin to make the most of this feature.', 'all-in-one-wp-security-and-firewall'), $akismet_link); + + echo '

      '.$info_msg.'

      '; + } + + ?> +
      +
      + '.__('This feature allows you to automatically and permanently block IP addresses which have exceeded a certain number of comments labelled as SPAM.', 'all-in-one-wp-security-and-firewall').'

      '. + '

      '.__('Comments are usually labelled as SPAM either by the Akismet plugin or manually by the WP administrator when they mark a comment as "spam" from the WordPress Comments menu.', 'all-in-one-wp-security-and-firewall').'

      '. + '

      '.__('NOTE: This feature does NOT use the .htaccess file to permanently block the IP addresses so it should be compatible with all web servers running WordPress.', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      + configs->get_value('aiowps_spam_ip_min_comments_block'); + if(!empty($min_block_comments)){ + global $wpdb; + $sql = $wpdb->prepare('SELECT * FROM '.AIOWPSEC_TBL_PERM_BLOCK.' WHERE block_reason=%s', 'spam'); + $total_res = $wpdb->get_results($sql); + ?> +
      + '.__('You currently have no IP addresses permanently blocked due to SPAM.', 'all-in-one-wp-security-and-firewall').'

      '; + }else{ + $total_count = count($total_res); + $todays_blocked_count = 0; + foreach($total_res as $blocked_item){ + $now = date_i18n( 'Y-m-d H:i:s' ); + $now_date_time = new DateTime($now); + $blocked_date = new DateTime($blocked_item->blocked_date); + if($blocked_date->format('Y-m-d') == $now_date_time->format('Y-m-d')) { + //there was an IP added to permanent block list today + ++$todays_blocked_count; + } + } + echo '

      '.__('Spammer IPs Added To Permanent Block List Today: ', 'all-in-one-wp-security-and-firewall').$todays_blocked_count.'

      '. + '

      '.__('All Time Total: ', 'all-in-one-wp-security-and-firewall').$total_count.'

      '. + '

      '.__('View Blocked IPs','all-in-one-wp-security-and-firewall').'

      '; + } + ?> +
      + + output_feature_details_badge("auto-block-spam-ip"); + ?> + + + + + + + + + + + + + + + + + +
      : + configs->get_value('aiowps_enable_autoblock_spam_ip')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      : + + + +
      + '.__('Example 1: Setting this value to "1" will block ALL IP addresses which were used to submit at least one SPAM comment.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('Example 2: Setting this value to "5" will block only those IP addresses which were used to submit 5 SPAM comments or more on your site.', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      +
      + +
      +
      + +
      +

      +
      +
      + '.__('This section displays a list of the IP addresses of the people or bots who have left SPAM comments on your site.', 'all-in-one-wp-security-and-firewall').' +
      '.__('This information can be handy for identifying the most persistent IP addresses or ranges used by spammers.', 'all-in-one-wp-security-and-firewall').' +
      '.__('By inspecting the IP address data coming from spammers you will be in a better position to determine which addresses or address ranges you should block by adding them to your blacklist.', 'all-in-one-wp-security-and-firewall').' +
      '.__('To add one or more of the IP addresses displayed in the table below to your blacklist, simply click the "Block" link for the individual row or select more than one address + using the checkboxes and then choose the "block" option from the Bulk Actions dropdown list and click the "Apply" button.', 'all-in-one-wp-security-and-firewall').' +

      '; + ?> +
      + +
      + + + + + + +
      : + + + +
      + '.__('Example 1: Setting this value to "0" or "1" will list ALL IP addresses which were used to submit SPAM comments.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '

      '.__('Example 2: Setting this value to "5" will list only those IP addresses which were used to submit 5 SPAM comments or more on your site.', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      + +
      + +
      +
      +
      +

      +
      + '; + echo '

      '.__('The plugin has detected that you are using a Multi-Site WordPress installation.', 'all-in-one-wp-security-and-firewall').'

      +

      '.__('Only the "superadmin" can block IP addresses from the main site.', 'all-in-one-wp-security-and-firewall').'

      +

      '.__('Take note of the IP addresses you want blocked and ask the superadmin to add these to the blacklist using the "Blacklist Manager" on the main site.', 'all-in-one-wp-security-and-firewall').'

      '; + echo '
      '; + } + //Fetch, prepare, sort, and filter our data... + $spammer_ip_list->prepare_items(); + //echo "put table of locked entries here"; + ?> +
      + + + + + display(); ?> +
      +
      + debug_logger->log_debug("Nonce check failed on save comment spam settings!",4); + die("Nonce check failed on save comment spam settings!"); + } + + //Save settings + $aio_wp_security->configs->set_value('aiowps_enable_bp_register_captcha',isset($_POST["aiowps_enable_bp_register_captcha"])?'1':''); + + //Commit the config settings + $aio_wp_security->configs->save_config(); + + //Recalculate points after the feature status/options have been altered + $aiowps_feature_mgr->check_feature_status_and_recalculate_points(); + + $this->show_msg_updated(__('Settings were successfully saved', 'all-in-one-wp-security-and-firewall')); + } + + ?> +

      +
      + + +
      +

      +
      +
      + '.__('This feature will add a simple math captcha field in the BuddyPress registration form.', 'all-in-one-wp-security-and-firewall'). + '
      '.__('Adding a captcha field in the registration form is a simple way of greatly reducing SPAM signups from bots without using .htaccess rules.', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      + output_feature_details_badge("bp-register-captcha"); + ?> + + + + + +
      : + configs->get_value('aiowps_enable_bp_register_captcha')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      +
      + +
      + show_msg_error(__('BuddyPress is not active! In order to use this feature you will need to have BuddyPress installed and activated.', 'all-in-one-wp-security-and-firewall')); + } + } + +} //end class \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php new file mode 100644 index 0000000..4531524 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php @@ -0,0 +1,344 @@ + 'render_tab1', + 'tab2' => 'render_tab2', + 'tab3' => 'render_tab3', + ); + function __construct() + { + $this->render_menu_page(); + + //Add the JS library for password tool - make sure we are on our password tab + if (isset($_GET['page']) && strpos($_GET['page'], AIOWPSEC_USER_ACCOUNTS_MENU_SLUG ) !== false) { + if (isset($_GET['tab']) && $_GET['tab'] == 'tab3'){ + wp_enqueue_script('aiowpsec-pw-tool-js'); + } + } + } + + function set_menu_tabs() + { + $this->menu_tabs = array( + 'tab1' => __('WP Username', 'all-in-one-wp-security-and-firewall'), + 'tab2' => __('Display Name', 'all-in-one-wp-security-and-firewall'), + 'tab3' => __('Password', 'all-in-one-wp-security-and-firewall') + ); + } + + function get_current_tab() + { + $tab_keys = array_keys($this->menu_tabs); + $tab = isset( $_GET['tab'] ) ? sanitize_text_field($_GET['tab']) : $tab_keys[0]; + return $tab; + } + + /* + * Renders our tabs of this menu as nav items + */ + function render_menu_tabs() + { + $current_tab = $this->get_current_tab(); + + echo ''; + } + + /* + * The menu rendering goes here + */ + function render_menu_page() + { + echo '
      '; + echo '

      '.__('User Accounts','all-in-one-wp-security-and-firewall').'

      ';//Interface title + $this->set_menu_tabs(); + $tab = $this->get_current_tab(); + $this->render_menu_tabs(); + ?> +
      + menu_tabs); + call_user_func(array(&$this, $this->menu_tabs_handler[$tab])); + ?> +
      +
      + validate_change_username_form(); + } + ?> +

      +
      + '.__('By default, WordPress sets the administrator username to "admin" at installation time.', 'all-in-one-wp-security-and-firewall').' +
      '.__('A lot of hackers try to take advantage of this information by attempting "Brute Force Login Attacks" where they repeatedly try to guess the password by using "admin" for username.', 'all-in-one-wp-security-and-firewall').' +
      '.__('From a security perspective, changing the default "admin" user name is one of the first and smartest things you should do on your site.', 'all-in-one-wp-security-and-firewall').' +

      '.__('This feature will allow you to change your default "admin" user name to a more secure name of your choosing.', 'all-in-one-wp-security-and-firewall').' +

      '; + ?> +
      + + postbox($postbox_title, $this->get_all_admin_accounts($blog_id)); + } else { + $this->postbox($postbox_title, $this->get_all_admin_accounts()); + } + ?> +
      +

      +
      + output_feature_details_badge("user-accounts-change-admin-user"); + + if (AIOWPSecurity_Utility::check_user_exists('admin') || AIOWPSecurity_Utility::check_user_exists('Admin')) + { + echo '

      '.__('Your site currently has an account which uses the default "admin" username. + It is highly recommended that you change this name to something else. + Use the following field to change the admin username.', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      + + + + + + +
      +

      +
      + +
      +

      +
      +

      '; + _e ('No action required! ', 'all-in-one-wp-security-and-firewall'); + echo '
      '; + _e ('Your site does not have any account which uses the default "admin" username. ', 'all-in-one-wp-security-and-firewall'); + _e ('This is good security practice.', 'all-in-one-wp-security-and-firewall'); + echo '

      '; + } + ?> +
      + + +

      +
      + '.__('When you submit a post or answer a comment, WordPress will usually display your "nickname".', 'all-in-one-wp-security-and-firewall').' +
      '.__('By default the nickname is set to the login (or user) name of your account.', 'all-in-one-wp-security-and-firewall').' +
      '.__('From a security perspective, leaving your nickname the same as your user name is bad practice because it gives a hacker at least half of your account\'s login credentials.', 'all-in-one-wp-security-and-firewall').' +

      '.__('Therefore to further tighten your site\'s security you are advised to change your nickname and Display name to be different from your Username.', 'all-in-one-wp-security-and-firewall').' +

      '; + ?> +
      + +
      +

      +
      + output_feature_details_badge("user-accounts-display-name"); + + //now let's find any accounts which have login name same as display name + $login_nick_name_accounts = AIOWPSecurity_Utility::check_identical_login_and_nick_names(); + if ($login_nick_name_accounts) { + echo '

      '.__('Your site currently has the following accounts which have an identical login name and display name.', 'all-in-one-wp-security-and-firewall').' + ('.__('Click on the link to edit the settings of that particular user account', 'all-in-one-wp-security-and-firewall').'

      '; + ?> + + '; + // echo ''; + echo ''; + echo ''; + } + ?> +
      '.$usr['user_login'].'
      +

      '.__('No action required.', 'all-in-one-wp-security-and-firewall').' +
      '.__('Your site does not have a user account where the display name is identical to the username.', 'all-in-one-wp-security-and-firewall').'

      '; + } + ?> +
      + + +

      +
      + '.__('Poor password selection is one of the most common weak points of many sites and is usually the first thing a hacker will try to exploit when attempting to break into your site.', 'all-in-one-wp-security-and-firewall').'

      '. + '

      '.__('Many people fall into the trap of using a simple word or series of numbers as their password. Such a predictable and simple password would take a competent hacker merely minutes to guess your password by using a simple script which cycles through the easy and most common combinations.', 'all-in-one-wp-security-and-firewall').'

      '. + '

      '.__('The longer and more complex your password is the harder it is for hackers to "crack" because more complex passwords require much greater computing power and time.', 'all-in-one-wp-security-and-firewall').'

      '. + '

      '.__('This section contains a useful password strength tool which you can use to check whether your password is sufficiently strong enough.', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      + +
      +

      +
      +

      This password tool uses an algorithm which calculates how long it would take for your password to be cracked using the computing power of an off-the-shelf current model desktop PC with high end processor, graphics card and appropriate password cracking software.

      +
      + +
      +
      +
      +
      +
      + +
      +
      + +

      +
      +
      +
      + debug_logger->log_debug("Nonce check failed on admin username change operation!",4); + die(__('Nonce check failed on admin username change operation!','all-in-one-wp-security-and-firewall')); + } + if (!empty($_POST['aiowps_new_user_name'])) { + $new_username = sanitize_text_field($_POST['aiowps_new_user_name']); + if (validate_username($new_username)) + { + if (AIOWPSecurity_Utility::check_user_exists($new_username)){ + $errors .= __('Username ', 'all-in-one-wp-security-and-firewall').$new_username.__(' already exists. Please enter another value. ', 'all-in-one-wp-security-and-firewall'); + } + else + { + //let's check if currently logged in username is 'admin' + $user = wp_get_current_user(); + $user_login = $user->user_login; + if (strtolower($user_login) == 'admin'){ + $username_is_admin = TRUE; + } else { + $username_is_admin = FALSE; + } + //Now let's change the username + $sql = $wpdb->prepare( "UPDATE `" . $wpdb->users . "` SET user_login = '" . esc_sql($new_username) . "' WHERE user_login=%s", "admin" ); + $result = $wpdb->query($sql); + if (!$result) { + //There was an error updating the users table + $user_update_error = __('The database update operation of the user account failed!', 'all-in-one-wp-security-and-firewall'); + //TODO## - add error logging here + $return_msg = '

      '.$user_update_error.'

      '; + return $return_msg; + } + + //multisite considerations + if ( AIOWPSecurity_Utility::is_multisite_install() ) { //process sitemeta if we're in a multi-site situation + $oldAdmins = $wpdb->get_var( "SELECT meta_value FROM `" . $wpdb->sitemeta . "` WHERE meta_key = 'site_admins'" ); + $newAdmins = str_replace( '5:"admin"', strlen( $new_username ) . ':"' . esc_sql( $new_username ) . '"', $oldAdmins ); + $wpdb->query( "UPDATE `" . $wpdb->sitemeta . "` SET meta_value = '" . esc_sql( $newAdmins ) . "' WHERE meta_key = 'site_admins'" ); + } + + //If user is logged in with username "admin" then log user out and send to login page so they can login again + if ($username_is_admin) { + //Lets logout the user + $aio_wp_security->debug_logger->log_debug("Logging User Out with login ".$user_login. " because they changed their username."); + $after_logout_url = AIOWPSecurity_Utility::get_current_page_url(); + $after_logout_payload = array('redirect_to'=>$after_logout_url, 'msg'=>$aio_wp_security->user_login_obj->key_login_msg.'=admin_user_changed', ); + //Save some of the logout redirect data to a transient + AIOWPSecurity_Utility::is_multisite_install() ? set_site_transient('aiowps_logout_payload', $after_logout_payload, 30 * 60) : set_transient('aiowps_logout_payload', $after_logout_payload, 30 * 60); + + $logout_url = AIOWPSEC_WP_URL.'?aiowpsec_do_log_out=1'; + $logout_url = AIOWPSecurity_Utility::add_query_data_to_url($logout_url, 'al_additional_data', '1'); + AIOWPSecurity_Utility::redirect_to_url($logout_url); + } + } + } + else {//An invalid username was entered + $errors .= __('You entered an invalid username. Please enter another value. ', 'all-in-one-wp-security-and-firewall'); + } + } + else {//No username value was entered + $errors .= __('Please enter a value for your username. ', 'all-in-one-wp-security-and-firewall'); + } + + if (strlen($errors)> 0){//We have some validation or other error + $return_msg = '

      ' . $errors . '

      '; + } + else{ + $return_msg = '

      '.__('Username Successfully Changed!', 'all-in-one-wp-security-and-firewall').'

      '; + } + return $return_msg; + } + + + /* + * This function will retrieve all user accounts which have 'administrator' role and will return html code with results in a table + */ + function get_all_admin_accounts($blog_id='') { + //TODO: Have included the "blog_id" variable for future use for cases where people want to search particular blog (eg, multi-site) + if ($blog_id) { + $admin_users = get_users('blog_id='.$blog_id.'&orderby=login&role=administrator'); + } else { + $admin_users = get_users('orderby=login&role=administrator'); + } + //now let's put the results in an HTML table + $account_output = ""; + if ($admin_users != NULL) { + $account_output .= ''; + $account_output .= ''; + foreach ($admin_users as $entry) { + $account_output .= ''; + if (strtolower($entry->user_login) == 'admin') { + $account_output .= ''; + }else { + $account_output .= ''; + } + $user_acct_edit_link = admin_url('user-edit.php?user_id=' . $entry->ID); + $account_output .= ''; + $account_output .= ''; + } + $account_output .= '
      '.__('Account Login Name', 'all-in-one-wp-security-and-firewall').'
      '.$entry->user_login.''.$entry->user_login.'Edit User
      '; + } + return $account_output; + } +} //end class \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php new file mode 100644 index 0000000..bb4f3a2 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php @@ -0,0 +1,541 @@ + 'render_tab1', + 'tab2' => 'render_tab2', + 'tab3' => 'render_tab3', + 'tab4' => 'render_tab4', + 'tab5' => 'render_tab5', + ); + + function __construct() + { + $this->render_menu_page(); + } + + function set_menu_tabs() + { + $this->menu_tabs = array( + 'tab1' => __('Login Lockdown', 'all-in-one-wp-security-and-firewall'), + 'tab2' => __('Failed Login Records', 'all-in-one-wp-security-and-firewall'), + 'tab3' => __('Force Logout', 'all-in-one-wp-security-and-firewall'), + 'tab4' => __('Account Activity Logs', 'all-in-one-wp-security-and-firewall'), + 'tab5' => __('Logged In Users', 'all-in-one-wp-security-and-firewall'), + ); + } + + function get_current_tab() + { + $tab_keys = array_keys($this->menu_tabs); + $tab = isset( $_GET['tab'] ) ? sanitize_text_field($_GET['tab']) : $tab_keys[0]; + return $tab; + } + + /* + * Renders our tabs of this menu as nav items + */ + function render_menu_tabs() + { + $current_tab = $this->get_current_tab(); + + echo ''; + } + + /* + * The menu rendering goes here + */ + function render_menu_page() + { + echo '
      '; + echo '

      '.__('User Login','all-in-one-wp-security-and-firewall').'

      ';//Interface title + $this->set_menu_tabs(); + $tab = $this->get_current_tab(); + $this->render_menu_tabs(); + ?> +
      + menu_tabs); + call_user_func(array(&$this, $this->menu_tabs_handler[$tab])); + ?> +
      +
      + debug_logger->log_debug("Nonce check failed on login lockdown options save!",4); + die("Nonce check failed on login lockdown options save!"); + } + + $max_login_attempt_val = sanitize_text_field($_POST['aiowps_max_login_attempts']); + if(!is_numeric($max_login_attempt_val)) + { + $error .= '
      '.__('You entered a non numeric value for the max login attempts field. It has been set to the default value.','all-in-one-wp-security-and-firewall'); + $max_login_attempt_val = '3';//Set it to the default value for this field + } + + $login_retry_time_period = sanitize_text_field($_POST['aiowps_retry_time_period']); + if(!is_numeric($login_retry_time_period)) + { + $error .= '
      '.__('You entered a non numeric value for the login retry time period field. It has been set to the default value.','all-in-one-wp-security-and-firewall'); + $login_retry_time_period = '5';//Set it to the default value for this field + } + + $lockout_time_length = sanitize_text_field($_POST['aiowps_lockout_time_length']); + if(!is_numeric($lockout_time_length)) + { + $error .= '
      '.__('You entered a non numeric value for the lockout time length field. It has been set to the default value.','all-in-one-wp-security-and-firewall'); + $lockout_time_length = '60';//Set it to the default value for this field + } + + $email_address = sanitize_email($_POST['aiowps_email_address']); + if(!is_email($email_address)) + { + $error .= '
      '.__('You have entered an incorrect email address format. It has been set to your WordPress admin email as default.','all-in-one-wp-security-and-firewall'); + $email_address = get_bloginfo('admin_email'); //Set the default value to the blog admin email + } + + // Instantly lockout specific usernames + $_ilsu = isset($_POST['aiowps_instantly_lockout_specific_usernames']) ? $_POST['aiowps_instantly_lockout_specific_usernames'] : ''; + // Read into array, sanitize, filter empty and keep only unique usernames. + $instantly_lockout_specific_usernames + = array_unique( + array_filter( + array_map( + 'sanitize_user', + AIOWPSecurity_Utility::explode_trim_filter_empty($_ilsu) + ), + 'strlen' + ) + ) + ; + + if($error) + { + $this->show_msg_error(__('Attention!','all-in-one-wp-security-and-firewall').$error); + } + + //Save all the form values to the options + $random_20_digit_string = AIOWPSecurity_Utility::generate_alpha_numeric_random_string(20); //Generate random 20 char string for use during captcha encode/decode + $aio_wp_security->configs->set_value('aiowps_unlock_request_secret_key', $random_20_digit_string); + + $aio_wp_security->configs->set_value('aiowps_enable_login_lockdown',isset($_POST["aiowps_enable_login_lockdown"])?'1':''); + $aio_wp_security->configs->set_value('aiowps_allow_unlock_requests',isset($_POST["aiowps_allow_unlock_requests"])?'1':''); + $aio_wp_security->configs->set_value('aiowps_max_login_attempts',absint($max_login_attempt_val)); + $aio_wp_security->configs->set_value('aiowps_retry_time_period',absint($login_retry_time_period)); + $aio_wp_security->configs->set_value('aiowps_lockout_time_length',absint($lockout_time_length)); + $aio_wp_security->configs->set_value('aiowps_set_generic_login_msg',isset($_POST["aiowps_set_generic_login_msg"])?'1':''); + $aio_wp_security->configs->set_value('aiowps_enable_invalid_username_lockdown',isset($_POST["aiowps_enable_invalid_username_lockdown"])?'1':''); + $aio_wp_security->configs->set_value('aiowps_instantly_lockout_specific_usernames', $instantly_lockout_specific_usernames); + $aio_wp_security->configs->set_value('aiowps_enable_email_notify',isset($_POST["aiowps_enable_email_notify"])?'1':''); + $aio_wp_security->configs->set_value('aiowps_email_address',$email_address); + $aio_wp_security->configs->save_config(); + + //Recalculate points after the feature status/options have been altered + $aiowps_feature_mgr->check_feature_status_and_recalculate_points(); + + $this->show_msg_settings_updated(); + } + + + if(isset($_REQUEST['action'])) //Do list table form row action tasks + { + if($_REQUEST['action'] == 'delete_blocked_ip'){ //Delete link was clicked for a row in list table + $locked_ip_list->delete_lockdown_records(strip_tags($_REQUEST['lockdown_id'])); + } + + if($_REQUEST['action'] == 'unlock_ip'){ //Unlock link was clicked for a row in list table + $locked_ip_list->unlock_ip_range(strip_tags($_REQUEST['lockdown_id'])); + } + } + ?> +

      +
      + Cookie-Based Brute Force Login Prevention'; + echo '

      '.__('One of the ways hackers try to compromise sites is via a ', 'all-in-one-wp-security-and-firewall').''.__('Brute Force Login Attack', 'all-in-one-wp-security-and-firewall').'. '.__('This is where attackers use repeated login attempts until they guess the password.', 'all-in-one-wp-security-and-firewall').' +
      '.__('Apart from choosing strong passwords, monitoring and blocking IP addresses which are involved in repeated login failures in a short period of time is a very effective way to stop these types of attacks.', 'all-in-one-wp-security-and-firewall'). + '

      '.sprintf( __('You may also want to checkout our %s feature for another secure way to protect against these types of attacks.', 'all-in-one-wp-security-and-firewall'), $brute_force_login_feature_link).'

      '; + ?> +
      + +
      +

      +
      + output_feature_details_badge("user-login-login-lockdown"); + ?> + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      : + configs->get_value('aiowps_enable_login_lockdown')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      : + configs->get_value('aiowps_allow_unlock_requests')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      : + +
      : + +
      : + +
      : + configs->get_value('aiowps_set_generic_login_msg')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      : + configs->get_value('aiowps_enable_invalid_username_lockdown')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      : + configs->get_value('aiowps_instantly_lockout_specific_usernames'); + if(empty($instant_lockout_users_list)){ + $instant_lockout_users_list = array(); + } + ?> +
      + +
      : + configs->get_value('aiowps_enable_email_notify')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      + +
      + +
      +
      +
      +

      +
      +
      + Locked IP Addresses'; + echo '

      '.sprintf( __('To see a list of all locked IP addresses and ranges go to the %s tab in the dashboard menu.', 'all-in-one-wp-security-and-firewall'), $locked_ips_link).'

      '; + ?> +
      +
      + debug_logger->log_debug("Nonce check failed for delete all failed login records operation!",4); + die(__('Nonce check failed for delete all failed login records operation!','all-in-one-wp-security-and-firewall')); + } + $failed_logins_table = AIOWPSEC_TBL_FAILED_LOGINS; + //Delete all records from the failed logins table + $result = $wpdb->query("truncate $failed_logins_table"); + + if ($result === FALSE) + { + $aio_wp_security->debug_logger->log_debug("User Login Feature - Delete all failed login records operation failed!",4); + $this->show_msg_error(__('User Login Feature - Delete all failed login records operation failed!','all-in-one-wp-security-and-firewall')); + } + else + { + $this->show_msg_updated(__('All records from the Failed Logins table were deleted successfully!','all-in-one-wp-security-and-firewall')); + } + } + + include_once 'wp-security-list-login-fails.php'; //For rendering the AIOWPSecurity_List_Table in tab2 + $failed_login_list = new AIOWPSecurity_List_Login_Failed_Attempts(); //For rendering the AIOWPSecurity_List_Table in tab2 + if(isset($_REQUEST['action'])) //Do row action tasks for list table form for failed logins + { + if($_REQUEST['action'] == 'delete_failed_login_rec'){ //Delete link was clicked for a row in list table + $failed_login_list->delete_login_failed_records(strip_tags($_REQUEST['failed_login_id'])); + } + } + ?> +
      + '.__('This tab displays the failed login attempts for your site.', 'all-in-one-wp-security-and-firewall').' +
      '.__('The information below can be handy if you need to do security investigations because it will show you the IP range, username and ID (if applicable) and the time/date of the failed login attempt.', 'all-in-one-wp-security-and-firewall').' +

      '; + ?> +
      +
      +

      +
      + prepare_items(); + //echo "put table of locked entries here"; + ?> +
      + + + + + display(); ?> +
      +
      +
      +

      +
      +
      + + + + + +
      + +
      +
      + + debug_logger->log_debug("Nonce check failed on force logout options save!",4); + die("Nonce check failed on force logout options save!"); + } + + $logout_time_period = sanitize_text_field($_POST['aiowps_logout_time_period']); + if(!is_numeric($logout_time_period)) + { + $error .= '
      '.__('You entered a non numeric value for the logout time period field. It has been set to the default value.','all-in-one-wp-security-and-firewall'); + $logout_time_period = '1';//Set it to the default value for this field + } + else + { + if($logout_time_period < 1){ + $logout_time_period = '1'; + } + } + + if($error) + { + $this->show_msg_error(__('Attention!','all-in-one-wp-security-and-firewall').$error); + } + + //Save all the form values to the options + $aio_wp_security->configs->set_value('aiowps_logout_time_period',absint($logout_time_period)); + $aio_wp_security->configs->set_value('aiowps_enable_forced_logout',isset($_POST["aiowps_enable_forced_logout"])?'1':''); + $aio_wp_security->configs->save_config(); + + //Recalculate points after the feature status/options have been altered + $aiowps_feature_mgr->check_feature_status_and_recalculate_points(); + + $this->show_msg_settings_updated(); + } + ?> +
      + '.__('Setting an expiry period for your WP administration session is a simple way to protect against unauthorized access to your site from your computer.', 'all-in-one-wp-security-and-firewall').' +
      '.__('This feature allows you to specify a time period in minutes after which the admin session will expire and the user will be forced to log back in.', 'all-in-one-wp-security-and-firewall').' +

      '; + ?> +
      +
      +

      +
      + output_feature_details_badge("user-login-force-logout"); + ?> + +
      + + + + + + + + + + +
      : + configs->get_value('aiowps_enable_forced_logout')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      : + +
      + +
      +
      + delete_login_activity_records(strip_tags($_REQUEST['activity_login_rec'])); + } + } + ?> +
      + '.__('This tab displays the login activity for WordPress admin accounts registered with your site.', 'all-in-one-wp-security-and-firewall').' +
      '.__('The information below can be handy if you need to do security investigations because it will show you the last 50 recent login events by username, IP address and time/date.', 'all-in-one-wp-security-and-firewall').' +

      '; + ?> +
      +
      +

      +
      + prepare_items(); + //echo "put table of locked entries here"; + ?> +
      + + + + + display(); ?> +
      +
      + force_user_logout(strip_tags($_REQUEST['logged_in_id']), strip_tags($_REQUEST['ip_address'])); + } + } + + if (isset($_POST['aiowps_refresh_logged_in_user_list'])) + { + $nonce=$_REQUEST['_wpnonce']; + if (!wp_verify_nonce($nonce, 'aiowpsec-logged-in-users-nonce')) + { + $aio_wp_security->debug_logger->log_debug("Nonce check failed for users logged in list!",4); + die(__('Nonce check failed for users logged in list!','all-in-one-wp-security-and-firewall')); + } + + $user_list->prepare_items(); + } + + ?> +
      +

      +
      +
      + + +
      +
      + +
      + '.__('This tab displays all users who are currently logged into your site.', 'all-in-one-wp-security-and-firewall').' +
      '.__('If you suspect there is a user or users who are logged in which should not be, you can block them by inspecting the IP addresses from the data below and adding them to your blacklist.', 'all-in-one-wp-security-and-firewall').' +
      '.__('You can also instantly log them out by clicking on the "Force Logout" link when you hover over the row in the User Id column.', 'all-in-one-wp-security-and-firewall').' +

      '; + ?> +
      +
      +

      +
      + prepare_items(); + //echo "put table of locked entries here"; + ?> +
      + + + + + display(); ?> +
      +
      + 'render_tab1', + 'tab2' => 'render_tab2', + ); + + function __construct() + { + $this->render_menu_page(); + } + + function set_menu_tabs() + { + $this->menu_tabs = array( + 'tab1' => __('Manual Approval', 'all-in-one-wp-security-and-firewall'), + 'tab2' => __('Registration Captcha', 'all-in-one-wp-security-and-firewall'), + ); + } + + function get_current_tab() + { + $tab_keys = array_keys($this->menu_tabs); + $tab = isset( $_GET['tab'] ) ? sanitize_text_field($_GET['tab']) : $tab_keys[0]; + return $tab; + } + + /* + * Renders our tabs of this menu as nav items + */ + function render_menu_tabs() + { + $current_tab = $this->get_current_tab(); + + echo ''; + } + + /* + * The menu rendering goes here + */ + function render_menu_page() + { + echo '
      '; + echo '

      '.__('User Registration','all-in-one-wp-security-and-firewall').'

      ';//Interface title + $this->set_menu_tabs(); + $tab = $this->get_current_tab(); + $this->render_menu_tabs(); + ?> +
      + menu_tabs); + call_user_func(array(&$this, $this->menu_tabs_handler[$tab])); + ?> +
      +
      + debug_logger->log_debug("Nonce check failed on save user registration settings!",4); + die("Nonce check failed on save user registration settings!"); + } + + //Save settings + $aio_wp_security->configs->set_value('aiowps_enable_manual_registration_approval',isset($_POST["aiowps_enable_manual_registration_approval"])?'1':''); + + //Commit the config settings + $aio_wp_security->configs->save_config(); + + //Recalculate points after the feature status/options have been altered + $aiowps_feature_mgr->check_feature_status_and_recalculate_points(); + + $this->show_msg_updated(__('Settings were successfully saved', 'all-in-one-wp-security-and-firewall')); + } + + if(isset($_REQUEST['action'])) //Do list table form row action tasks + { + if($_REQUEST['action'] == 'approve_acct'){ //Approve link was clicked for a row in list table + $user_list->approve_selected_accounts(strip_tags($_REQUEST['user_id'])); + } + + if($_REQUEST['action'] == 'delete_acct'){ //Delete link was clicked for a row in list table + $user_list->delete_selected_accounts(strip_tags($_REQUEST['user_id'])); + } + + if($_REQUEST['action'] == 'block_ip'){ //Block IP link was clicked for a row in list table + $user_list->block_selected_ips(strip_tags($_REQUEST['ip_address'])); + } + } + + + ?> +

      +
      + +
      +

      +
      +
      + '.__('If your site allows people to create their own accounts via the WordPress registration form, then you can minimize SPAM or bogus registrations by manually approving each registration.', 'all-in-one-wp-security-and-firewall'). + '
      '.__('This feature will automatically set a newly registered account to "pending" until the administrator activates it. Therefore undesirable registrants will be unable to log in without your express approval.', 'all-in-one-wp-security-and-firewall'). + '
      '.__('You can view all accounts which have been newly registered via the handy table below and you can also perform bulk activation/deactivation/deletion tasks on each account.', 'all-in-one-wp-security-and-firewall').'

      '; + ?> +
      + output_feature_details_badge("manually-approve-registrations"); + if (AIOWPSecurity_Utility::is_multisite_install() && get_current_blog_id() != 1) + { + //Hide config settings if MS and not main site + AIOWPSecurity_Utility::display_multisite_message(); + } + else + { + ?> + + + + + +
      : + configs->get_value('aiowps_enable_manual_registration_approval')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      + + +
      +
      +
      +

      +
      + prepare_items(); + ?> +
      + + + + display(); ?> +
      + debug_logger->log_debug("Nonce check failed on registration captcha settings save!",4); + die("Nonce check failed on registration captcha settings save!"); + } + + + //Save all the form values to the options + $random_20_digit_string = AIOWPSecurity_Utility::generate_alpha_numeric_random_string(20); //Generate random 20 char string for use during captcha encode/decode + $aio_wp_security->configs->set_value('aiowps_captcha_secret_key', $random_20_digit_string); + $aio_wp_security->configs->set_value('aiowps_enable_registration_page_captcha',isset($_POST["aiowps_enable_registration_page_captcha"])?'1':''); + $aio_wp_security->configs->save_config(); + + //Recalculate points after the feature status/options have been altered + $aiowps_feature_mgr->check_feature_status_and_recalculate_points(); + + $this->show_msg_settings_updated(); + } + ?> +
      + '.__('This feature allows you to add a captcha form on the WordPress registration page.', 'all-in-one-wp-security-and-firewall').' +
      '.__('Users who attempt to register will also need to enter the answer to a simple mathematical question - if they enter the wrong answer, the plugin will not allow them to register.', 'all-in-one-wp-security-and-firewall').' +
      '.__('Therefore, adding a captcha form on the registration page is another effective yet simple SPAM registration prevention technique.', 'all-in-one-wp-security-and-firewall').' +

      '; + ?> +
      +
      +

      +
      + '; + $special_msg .= '

      '.__('The core default behaviour for WordPress Multi Site regarding user registration is that all users are registered via the main site.','all-in-one-wp-security-and-firewall').'

      '; + $special_msg .= '

      '.__('Therefore, if you would like to add a captcha form to the registration page for a Multi Site, please go to "Registration Captcha" settings on the main site.','all-in-one-wp-security-and-firewall').'

      '; + $special_msg .= '
      '; + echo $special_msg; + } + else + { + //Display security info badge + global $aiowps_feature_mgr; + $aiowps_feature_mgr->output_feature_details_badge("user-registration-captcha"); + ?> + + + + + + + + +
      : + configs->get_value('aiowps_enable_registration_page_captcha')=='1') echo ' checked="checked"'; ?> value="1"/> + +
      + + +
      + 'render_tab1', + ); + + function __construct() + { + $this->render_menu_page(); + } + + function set_menu_tabs() + { + $this->menu_tabs = array( + 'tab1' => __('WhoIS Lookup', 'all-in-one-wp-security-and-firewall'), + ); + } + + function get_current_tab() + { + $tab_keys = array_keys($this->menu_tabs); + $tab = isset( $_GET['tab'] ) ? sanitize_text_field($_GET['tab']) : $tab_keys[0]; + return $tab; + } + + /* + * Renders our tabs of this menu as nav items + */ + function render_menu_tabs() + { + $current_tab = $this->get_current_tab(); + + echo ''; + } + + /* + * The menu rendering goes here + */ + function render_menu_page() + { + echo '
      '; + echo '

      '.__('WHOIS Lookup','all-in-one-wp-security-and-firewall').'

      ';//Interface title + $this->set_menu_tabs(); + $tab = $this->get_current_tab(); + $this->render_menu_tabs(); + ?> +
      + menu_tabs); + call_user_func(array(&$this, $this->menu_tabs_handler[$tab])); + ?> +
      +
      + +

      +
      + '.__('This feature allows you to look up more detailed information about an IP address or domain name by querying the WHOIS API.', 'all-in-one-wp-security-and-firewall').' +

      '; + ?> +
      + +
      +

      +
      +
      + + + + + + +
      : + +
      + +
      +
      + debug_logger->log_debug("Nonce check failed on WHOIS lookup!",4); + die("Nonce check failed on WHOIS lookup!"); + } + + require_once(AIO_WP_SECURITY_LIB_PATH.'/whois/whois.main.php'); + require_once(AIO_WP_SECURITY_LIB_PATH.'/whois/whois.utils.php'); + $input_val = trim($_POST['aiowps_whois_lookup_field']); + $input_val = preg_replace('#^https?://#', '', $input_val); + if (filter_var($input_val, FILTER_VALIDATE_IP) || filter_var(gethostbyname($input_val), FILTER_VALIDATE_IP)) + { + //$info_msg_string = '

      '.sprintf( __('WHOIS lookup successfully completed. Please see the results below:', 'all-in-one-wp-security-and-firewall')).'

      '; + //echo ($info_msg_string); + $this->show_msg_updated(__('WHOIS lookup successfully completed. Please see the results below:', 'all-in-one-wp-security-and-firewall')); + $whois = new Whois(); + $result = $whois->Lookup($input_val); + if (!empty($result['rawdata'])) + { + $utils = new utils; + $winfo = $utils->showHTML($result); + echo $winfo; + } + } + else + { + $this->show_msg_error(__('You have entered an incorrectly formatted IP address or domain name. Please try again.','all-in-one-wp-security-and-firewall')); + } + } + } +} //end class \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/backups/index.html b/plugins/all-in-one-wp-security-and-firewall/backups/index.html new file mode 100644 index 0000000..e69de29 diff --git a/plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php b/plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php new file mode 100644 index 0000000..36903bc --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php @@ -0,0 +1,791 @@ +feature_items = array(); + //Settings Menu Features + //WP Generator Meta + $this->feature_items[] = new AIOWPSecurity_Feature_Item("wp-generator-meta-tag", __("Remove WP Generatore Meta Tag", "all-in-one-wp-security-and-firewall"), $this->feature_point_1, $this->sec_level_basic); + + //Prevent Image Hotlinks + $this->feature_items[] = new AIOWPSecurity_Feature_Item("prevent-hotlinking", __("Prevent Image Hotlinking", "all-in-one-wp-security-and-firewall"), $this->feature_point_2, $this->sec_level_basic); + + //User Accounts Menu Features + //Change Admin Username + $this->feature_items[] = new AIOWPSecurity_Feature_Item("user-accounts-change-admin-user", __("Change Admin Username", "all-in-one-wp-security-and-firewall"), $this->feature_point_3, $this->sec_level_basic); + //Change Display Name + $this->feature_items[] = new AIOWPSecurity_Feature_Item("user-accounts-display-name", __("Change Display Name", "all-in-one-wp-security-and-firewall"), $this->feature_point_1, $this->sec_level_basic); + + //User Login Menu Features + //Locking Lockdown + $this->feature_items[] = new AIOWPSecurity_Feature_Item("user-login-login-lockdown", __("Login Lockdown", "all-in-one-wp-security-and-firewall"), $this->feature_point_4, $this->sec_level_basic); + //Login Captcha + $this->feature_items[] = new AIOWPSecurity_Feature_Item("user-login-captcha", __("Login Captcha", "all-in-one-wp-security-and-firewall"), $this->feature_point_4, $this->sec_level_basic); + $this->feature_items[] = new AIOWPSecurity_Feature_Item("custom-login-captcha", __("Custom Login Captcha", "all-in-one-wp-security-and-firewall"), $this->feature_point_4, $this->sec_level_basic); + //Lost Password Captcha + $this->feature_items[] = new AIOWPSecurity_Feature_Item("lost-password-captcha", __("Lost Password Captcha", "all-in-one-wp-security-and-firewall"), $this->feature_point_2, $this->sec_level_basic); + //Login whitelisting + $this->feature_items[] = new AIOWPSecurity_Feature_Item("whitelist-manager-ip-login-whitelisting", __("Login IP Whitelisting", "all-in-one-wp-security-and-firewall"), $this->feature_point_3, $this->sec_level_inter); + //Force Logout + $this->feature_items[] = new AIOWPSecurity_Feature_Item("user-login-force-logout", __("Force Logout", "all-in-one-wp-security-and-firewall"), $this->feature_point_1, $this->sec_level_basic); + + //User Registration + //Manually approve registrations + $this->feature_items[] = new AIOWPSecurity_Feature_Item("manually-approve-registrations", __("Registration Approval", "all-in-one-wp-security-and-firewall"), $this->feature_point_4, $this->sec_level_basic); + //Registration Captcha + $this->feature_items[] = new AIOWPSecurity_Feature_Item("user-registration-captcha", __("Registration Captcha", "all-in-one-wp-security-and-firewall"), $this->feature_point_4, $this->sec_level_basic); + + //Database Security Menu Features + //DB Prefix + $this->feature_items[] = new AIOWPSecurity_Feature_Item("db-security-db-prefix", __("DB Prefix", "all-in-one-wp-security-and-firewall"), $this->feature_point_2, $this->sec_level_inter); + //DB Backup + $this->feature_items[] = new AIOWPSecurity_Feature_Item("db-security-db-backup", __("DB Backup", "all-in-one-wp-security-and-firewall"), $this->feature_point_4, $this->sec_level_basic); + + //File System Security Menu Features + //File Permissions + $this->feature_items[] = new AIOWPSecurity_Feature_Item("filesystem-file-permissions", __("File Permissions", "all-in-one-wp-security-and-firewall"), $this->feature_point_4, $this->sec_level_basic); + //PHP File Editing + $this->feature_items[] = new AIOWPSecurity_Feature_Item("filesystem-file-editing", __("File Editing", "all-in-one-wp-security-and-firewall"), $this->feature_point_2, $this->sec_level_basic); + //Prevent Access WP Install Files + $this->feature_items[] = new AIOWPSecurity_Feature_Item("block-wp-files-access", __("WordPress Files Access", "all-in-one-wp-security-and-firewall"), $this->feature_point_2, $this->sec_level_basic); + + //Blacklist Manager Menu Features + //IP and user agent blacklisting + $this->feature_items[] = new AIOWPSecurity_Feature_Item("blacklist-manager-ip-user-agent-blacklisting", __("IP and User Agent Blacklisting", "all-in-one-wp-security-and-firewall"), $this->feature_point_3, $this->sec_level_advanced); + + //Firewall Menu Features + //Basic firewall + $this->feature_items[] = new AIOWPSecurity_Feature_Item("firewall-basic-rules", __("Enable Basic Firewall", "all-in-one-wp-security-and-firewall"), $this->feature_point_3, $this->sec_level_basic); + $this->feature_items[] = new AIOWPSecurity_Feature_Item("firewall-pingback-rules", __("Enable Pingback Vulnerability Protection", "all-in-one-wp-security-and-firewall"), $this->feature_point_3, $this->sec_level_basic); + $this->feature_items[] = new AIOWPSecurity_Feature_Item("firewall-block-debug-file-access", __("Block Accesss to Debug Log File", "all-in-one-wp-security-and-firewall"), $this->feature_point_2, $this->sec_level_inter); + $this->feature_items[] = new AIOWPSecurity_Feature_Item("firewall-enable-404-blocking", __("Enable IP blocking for 404 detection", "all-in-one-wp-security-and-firewall"), $this->feature_point_1, $this->sec_level_inter); + + //Brute Force Menu Features + //Rename Login page + $this->feature_items[] = new AIOWPSecurity_Feature_Item("bf-rename-login-page", __("Enable Rename Login Page", "all-in-one-wp-security-and-firewall"), $this->feature_point_2, $this->sec_level_inter); + //Login Honeypot + $this->feature_items[] = new AIOWPSecurity_Feature_Item("login-honeypot", __("Enable Login Honeypot", "all-in-one-wp-security-and-firewall"), $this->feature_point_2, $this->sec_level_inter); + + //Additional and Advanced firewall + $this->feature_items[] = new AIOWPSecurity_Feature_Item("firewall-enable-brute-force-attack-prevention", __("Enable Brute Force Attack Prevention", "all-in-one-wp-security-and-firewall"), $this->feature_point_4, $this->sec_level_advanced); + $this->feature_items[] = new AIOWPSecurity_Feature_Item("firewall-disable-index-views", __("Disable Index Views", "all-in-one-wp-security-and-firewall"), $this->feature_point_1, $this->sec_level_inter); + $this->feature_items[] = new AIOWPSecurity_Feature_Item("firewall-disable-trace-track", __("Disable Trace and Track", "all-in-one-wp-security-and-firewall"), $this->feature_point_2, $this->sec_level_advanced); + $this->feature_items[] = new AIOWPSecurity_Feature_Item("firewall-forbid-proxy-comments", __("Forbid Proxy Comments", "all-in-one-wp-security-and-firewall"), $this->feature_point_2, $this->sec_level_advanced); + $this->feature_items[] = new AIOWPSecurity_Feature_Item("firewall-deny-bad-queries", __("Deny Bad Queries", "all-in-one-wp-security-and-firewall"), $this->feature_point_3, $this->sec_level_advanced); + $this->feature_items[] = new AIOWPSecurity_Feature_Item("firewall-advanced-character-string-filter", __("Advanced Character String Filter", "all-in-one-wp-security-and-firewall"), $this->feature_point_3, $this->sec_level_advanced); + $this->feature_items[] = new AIOWPSecurity_Feature_Item("firewall-enable-5g-6g-blacklist", __("5G/6G Blacklist", "all-in-one-wp-security-and-firewall"), $this->feature_point_4, $this->sec_level_advanced); + $this->feature_items[] = new AIOWPSecurity_Feature_Item("firewall-block-fake-googlebots", __("Block Fake Googlebots", "all-in-one-wp-security-and-firewall"), $this->feature_point_1, $this->sec_level_advanced); + //SPAM Prevention + $this->feature_items[] = new AIOWPSecurity_Feature_Item("block-spambots", __("Block Spambots", "all-in-one-wp-security-and-firewall"), $this->feature_point_2, $this->sec_level_basic); + //Comment Captcha + $this->feature_items[] = new AIOWPSecurity_Feature_Item("comment-form-captcha", __("Comment Captcha", "all-in-one-wp-security-and-firewall"), $this->feature_point_4, $this->sec_level_basic); + //BuddyPress Registration Captcha + $this->feature_items[] = new AIOWPSecurity_Feature_Item("bp-register-captcha", __("BuddyPress Registration Captcha", "all-in-one-wp-security-and-firewall"), $this->feature_point_1, $this->sec_level_basic); + + //Filescan + //File change detection + $this->feature_items[] = new AIOWPSecurity_Feature_Item("scan-file-change-detection", __("File Change Detection", "all-in-one-wp-security-and-firewall"), $this->feature_point_4, $this->sec_level_inter); + + } + + function get_feature_item_by_id($feature_id) + { + foreach($this->feature_items as $item) + { + if($item->feature_id == $feature_id) + { + return $item; + } + } + return ""; + } + + function output_feature_details_badge($feature_id) + { + $cau_feature_item = $this->get_feature_item_by_id($feature_id); + $cau_security_level = $cau_feature_item->security_level; + $cau_security_points = $cau_feature_item->item_points; + $cau_your_points = 0; + if($cau_feature_item->feature_status == $this->feature_active){ + $cau_your_points = $cau_security_points; + } + $level_str = $cau_feature_item->get_security_level_string($cau_security_level); + ?> +
      +
      + +
      +
      + +
      +
      + check_and_set_feature_status(); + $this->calculate_total_points(); + } + + function check_and_set_feature_status() + { + foreach($this->feature_items as $item) + { + if($item->feature_id == "wp-generator-meta-tag") + { + $this->check_remove_wp_generator_meta_feature($item); + } + + if($item->feature_id == "prevent-hotlinking") + { + $this->check_prevent_hotlinking_feature($item); + } + + if($item->feature_id == "user-accounts-change-admin-user") + { + $this->check_user_accounts_change_admin_user_feature($item); + } + if($item->feature_id == "user-accounts-display-name") + { + $this->check_user_accounts_display_name_feature($item); + } + + if($item->feature_id == "db-security-db-prefix") + { + $this->check_db_security_db_prefix_feature($item); + } + if($item->feature_id == "db-security-db-backup") + { + $this->check_db_security_db_backup_feature($item); + } + + if($item->feature_id == "user-login-login-lockdown") + { + $this->check_login_lockdown_feature($item); + } + if($item->feature_id == "user-login-captcha") + { + $this->check_login_captcha_feature($item); + } + if($item->feature_id == "custom-login-captcha") + { + $this->check_custom_login_captcha_feature($item); + } + if($item->feature_id == "lost-password-captcha") + { + $this->check_lost_password_captcha_feature($item); + } + if($item->feature_id == "comment-form-captcha") + { + $this->check_comment_captcha_feature($item); + } + if($item->feature_id == "bp-register-captcha") + { + $this->check_bp_register_captcha_feature($item); + } + if($item->feature_id == "whitelist-manager-ip-login-whitelisting") + { + $this->check_login_whitelist_feature($item); + } + if($item->feature_id == "user-login-force-logout") + { + $this->check_force_logout_feature($item); + } + + if($item->feature_id == "manually-approve-registrations") + { + $this->check_registration_approval_feature($item); + } + if($item->feature_id == "user-registration-captcha") + { + $this->check_registration_captcha_feature($item); + } + + + if($item->feature_id == "filesystem-file-permissions") + { + $this->check_filesystem_permissions_feature($item); + } + if($item->feature_id == "filesystem-file-editing") + { + $this->check_filesystem_file_editing_feature($item); + } + if($item->feature_id == "block-wp-files-access") + { + $this->check_block_wp_files_access_feature($item); + } + + if($item->feature_id == "blacklist-manager-ip-user-agent-blacklisting") + { + $this->check_enable_ip_useragent_blacklist_feature($item); + } + + if($item->feature_id == "firewall-basic-rules") + { + $this->check_enable_basic_firewall_feature($item); + } + + if($item->feature_id == "firewall-pingback-rules") + { + $this->check_enable_pingback_firewall_feature($item); + } + + if($item->feature_id == "firewall-block-debug-file-access") + { + $this->check_debug_file_access_block_firewall_feature($item); + } + + if($item->feature_id == "firewall-enable-404-blocking") + { + $this->check_enable_404_blocking_feature($item); + } + + if($item->feature_id == "firewall-enable-brute-force-attack-prevention") + { + $this->check_enable_bfap_firewall_feature($item); + } + if($item->feature_id == "firewall-disable-index-views") + { + $this->check_disable_index_views_firewall_feature($item); + } + if($item->feature_id == "firewall-disable-trace-track") + { + $this->check_disable_trace_track_firewall_feature($item); + } + if($item->feature_id == "firewall-forbid-proxy-comments") + { + $this->check_forbid_proxy_comments_firewall_feature($item); + } + if($item->feature_id == "firewall-deny-bad-queries") + { + $this->check_deny_bad_queries_firewall_feature($item); + } + if($item->feature_id == "firewall-advanced-character-string-filter") + { + $this->check_advanced_char_string_filter_firewall_feature($item); + } + if($item->feature_id == "firewall-enable-5g-6g-blacklist") + { + $this->check_enable_5G_6G_blacklist_firewall_feature($item); + } + if($item->feature_id == "firewall-block-fake-googlebots") + { + $this->check_block_fake_googlebots_firewall_feature($item); + } + + if($item->feature_id == "bf-rename-login-page") + { + $this->check_enable_rename_login_page_feature($item); + } + + if($item->feature_id == "login-honeypot") + { + $this->check_enable_login_honeypot_feature($item); + } + + if($item->feature_id == "block-spambots") + { + $this->check_enable_block_spambots_feature($item); + } + + if($item->feature_id == "scan-file-change-detection") + { + $this->check_enable_fcd_scan_feature($item); + } + + } + } + + function calculate_total_points() + { + foreach($this->feature_items as $item) + { + if($item->feature_status == "active") + { + $this->total_points = $this->total_points + intval($item->item_points); + } + } + } + + function get_total_site_points() + { + return $this->total_points; + } + + function get_total_achievable_points() + { + foreach($this->feature_items as $item) + { + $this->total_achievable_points = $this->total_achievable_points + intval($item->item_points); + } + return $this->total_achievable_points; + } + + function check_remove_wp_generator_meta_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_remove_wp_generator_meta_info') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_prevent_hotlinking_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_prevent_hotlinking') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_user_accounts_change_admin_user_feature($item) + { + if (AIOWPSecurity_Utility::check_user_exists('admin')) { + $item->set_feature_status($this->feature_inactive); + } + else + { + $item->set_feature_status($this->feature_active); + } + } + + function check_user_accounts_display_name_feature($item) + { + if (AIOWPSecurity_Utility::check_identical_login_and_nick_names()) { + $item->set_feature_status($this->feature_inactive); + } + else + { + $item->set_feature_status($this->feature_active); + } + } + + function check_login_lockdown_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_enable_login_lockdown') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_login_captcha_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_enable_login_captcha') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_custom_login_captcha_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_enable_custom_login_captcha') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_lost_password_captcha_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_enable_lost_password_captcha') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_comment_captcha_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_enable_comment_captcha') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_bp_register_captcha_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_enable_bp_register_captcha') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_login_whitelist_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_enable_whitelisting') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_force_logout_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_enable_forced_logout') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_registration_approval_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_enable_manual_registration_approval') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_registration_captcha_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_enable_registration_page_captcha') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + + function check_db_security_db_prefix_feature($item) + { + global $wpdb; + if ($wpdb->prefix == 'wp_') { + $item->set_feature_status($this->feature_inactive); + } + else + { + $item->set_feature_status($this->feature_active); + } + } + + function check_db_security_db_backup_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_enable_automated_backups') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_filesystem_permissions_feature($item) + { + //TODO + $is_secure = 1; + $util = new AIOWPSecurity_Utility_File; + $files_dirs_to_check = $util->files_and_dirs_to_check; + foreach ($files_dirs_to_check as $file_or_dir) + { + $actual_perm = AIOWPSecurity_Utility_File::get_file_permission($file_or_dir['path']); + $is_secure = $is_secure*AIOWPSecurity_Utility_File::is_file_permission_secure($file_or_dir['permissions'], $actual_perm); + } + + //Only if all of the files' permissions are deemed secure give this a thumbs up + if ($is_secure == 1) + { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_filesystem_file_editing_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_disable_file_editing') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_block_wp_files_access_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_prevent_default_wp_file_access') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_enable_ip_useragent_blacklist_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_enable_blacklisting') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_enable_basic_firewall_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_enable_basic_firewall') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_enable_pingback_firewall_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_enable_pingback_firewall') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_debug_file_access_block_firewall_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_block_debug_log_file_access') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_disable_trace_track_firewall_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_disable_trace_and_track') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_disable_index_views_firewall_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_disable_index_views') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_enable_bfap_firewall_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_enable_brute_force_attack_prevention') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_forbid_proxy_comments_firewall_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_forbid_proxy_comments') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_deny_bad_queries_firewall_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_deny_bad_query_strings') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_advanced_char_string_filter_firewall_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_advanced_char_string_filter') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_enable_5G_6G_blacklist_firewall_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_enable_5g_firewall') == '1') { + $item->set_feature_status($this->feature_active); + } + else if ($aio_wp_security->configs->get_value('aiowps_enable_6g_firewall') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_block_fake_googlebots_firewall_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_block_fake_googlebots') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_enable_404_blocking_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_enable_404_IP_lockout') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_enable_rename_login_page_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_enable_rename_login_page') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_enable_login_honeypot_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_enable_login_honeypot') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_enable_block_spambots_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_enable_spambot_blocking') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + + function check_enable_fcd_scan_feature($item) + { + global $aio_wp_security; + if ($aio_wp_security->configs->get_value('aiowps_enable_automated_fcd_scan') == '1') { + $item->set_feature_status($this->feature_active); + } + else + { + $item->set_feature_status($this->feature_inactive); + } + } + +} \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item.php b/plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item.php new file mode 100644 index 0000000..e42818f --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item.php @@ -0,0 +1,40 @@ +feature_id = $feature_id; + $this->feature_name = $feature_name; + $this->item_points = $item_points; + $this->security_level = $security_level; + } + + function set_feature_status($status) + { + $this->feature_status = $status; + } + + function get_security_level_string($level) + { + $level_string = ""; + if($level == "1"){ + $level_string = __('Basic', 'all-in-one-wp-security-and-firewall'); + } + else if($level == "2"){ + $level_string = __('Intermediate', 'all-in-one-wp-security-and-firewall'); + } + else if($level == "3"){ + $level_string = __('Advanced', 'all-in-one-wp-security-and-firewall'); + } + return $level_string; + } + +} + diff --git a/plugins/all-in-one-wp-security-and-firewall/classes/index.html b/plugins/all-in-one-wp-security-and-firewall/classes/index.html new file mode 100644 index 0000000..e69de29 diff --git a/plugins/all-in-one-wp-security-and-firewall/classes/index.php b/plugins/all-in-one-wp-security-and-firewall/classes/index.php new file mode 100644 index 0000000..485c60a --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/classes/index.php @@ -0,0 +1,5 @@ +version}" . PHP_EOL + . '-- MySQL dump' . PHP_EOL + . '-- ' . date('Y-m-d H:i:s') . PHP_EOL . PHP_EOL + // When importing the backup, tell database server that our data is in UTF-8... + . "SET NAMES utf8;" . PHP_EOL + // ...and that foreign key checks should be ignored. + . "SET foreign_key_checks = 0;" . PHP_EOL . PHP_EOL + ; + if ( !@fwrite( $handle, $preamble ) ) { return false; } + + // Loop through each table + foreach ( $tables as $table ) + { + $table_name = $table[0]; + + $result_create_table = $wpdb->get_row( 'SHOW CREATE TABLE `' . $table_name . '`;', ARRAY_N ); + if ( empty($result_create_table) ) { + $aio_wp_security->debug_logger->log_debug(__METHOD__ . " - get_row returned NULL for table: ".$table_name, 4); + return false; // Avoid incomplete backups + } + + // Drop/create table preamble + $drop_and_create = 'DROP TABLE IF EXISTS `' . $table_name . '`;' . PHP_EOL . PHP_EOL + . $result_create_table[1] . ";" . PHP_EOL . PHP_EOL + ; + if ( !@fwrite( $handle, $drop_and_create ) ) { return false; } + + // Dump table contents + // Fetch results as row of objects to spare memory. + $result = $wpdb->get_results( 'SELECT * FROM `' . $table_name . '`;', OBJECT ); + foreach ( $result as $object_row ) + { + // Convert object row to array row: this is what $wpdb->get_results() + // internally does when invoked with ARRAY_N param, but in the process + // it creates new copy of entire results array that eats a lot of memory. + $row = array_values(get_object_vars($object_row)); + // Start INSERT statement + if ( !@fwrite( $handle, 'INSERT INTO `' . $table_name . '` VALUES(' ) ) { return false; } + // Loop through all fields and echo them out + foreach ( $row as $idx => $field ) { + // Echo fields separator (except for first loop) + if ( ($idx > 0) && !@fwrite( $handle, ',' ) ) { return false; } + // Echo field content (sanitized) + if ( !@fwrite( $handle, $this->sanitize_db_field($field) ) ) { return false; } + } + // Finish INSERT statement + if ( !@fwrite( $handle, ");" . PHP_EOL ) ) { return false; } + } + // Place two-empty lines after table data + if ( !@fwrite( $handle, PHP_EOL . PHP_EOL ) ) { return false; } + } + + return true; + } + + /** + * This function will perform a database backup + */ + function execute_backup() + { + global $wpdb, $aio_wp_security; + $is_multi_site = function_exists('is_multisite') && is_multisite(); + + @ini_set( 'auto_detect_line_endings', true ); + @ini_set( 'memory_limit', '512M' ); + if ( $is_multi_site ) + { + //Let's get the current site's table prefix + $site_pref = esc_sql($wpdb->prefix); + $db_query = "SHOW TABLES LIKE '".$site_pref."%'"; + $tables = $wpdb->get_results( $db_query, ARRAY_N ); + } + else + { + //get all of the tables + $tables = $wpdb->get_results( 'SHOW TABLES', ARRAY_N ); + } + + if ( empty($tables) ) { + $aio_wp_security->debug_logger->log_debug(__METHOD__ . " - no tables found!",4); + return false; + } + + //Check to see if the main "backups" directory exists - create it otherwise + + $aiowps_backup_dir = WP_CONTENT_DIR.'/'.AIO_WP_SECURITY_BACKUPS_DIR_NAME; + if (!AIOWPSecurity_Utility_File::create_dir($aiowps_backup_dir)) + { + $aio_wp_security->debug_logger->log_debug(__METHOD__ . " - Creation of DB backup directory failed!",4); + return false; + } + + //Generate a random prefix for more secure filenames + $random_suffix = AIOWPSecurity_Utility::generate_alpha_numeric_random_string(10); + + if ($is_multi_site) + { + global $current_blog; + $blog_id = $current_blog->blog_id; + //Get the current site name string for use later + $site_name = get_bloginfo('name'); + + $site_name = strtolower($site_name); + + //make alphanumeric + $site_name = preg_replace("/[^a-z0-9_\s-]/", "", $site_name); + + //Cleanup multiple instances of dashes or whitespaces + $site_name = preg_replace("/[\s-]+/", " ", $site_name); + + //Convert whitespaces and underscore to dash + $site_name = preg_replace("/[\s_]/", "-", $site_name); + + $file = 'database-backup-site-name-' . $site_name . '-' . current_time( 'Ymd-His' ) . '-' . $random_suffix; + + //We will create a sub dir for the blog using its blog id + $dirpath = $aiowps_backup_dir . '/blogid_' . $blog_id; + + //Create a subdirectory for this blog_id + if (!AIOWPSecurity_Utility_File::create_dir($dirpath)) + { + $aio_wp_security->debug_logger->log_debug("Creation failed of DB backup directory for the following multisite blog ID: ".$blog_id,4); + return false; + } + } + else + { + $dirpath = $aiowps_backup_dir; + $file = 'database-backup-' . current_time( 'Ymd-His' ) . '-' . $random_suffix; + } + + $handle = @fopen( $dirpath . '/' . $file . '.sql', 'w+' ); + + if ( $handle === false ) { + $aio_wp_security->debug_logger->log_debug("Cannot create DB backup file: {$dirpath}/{$file}.sql", 4); + return false; + } + + // Delete old backup files now to avoid polluting backups directory + // with incomplete backups on websites where max execution time is too + // low for database content to be written to a file: + // https://github.com/Arsenal21/all-in-one-wordpress-security/issues/62 + $this->aiowps_delete_backup_files($dirpath); + + $fw_res = $this->write_db_backup_file($handle, $tables); + @fclose( $handle ); + + if (!$fw_res) + { + @unlink( $dirpath . '/' . $file . '.sql' ); + $aio_wp_security->debug_logger->log_debug(__METHOD__ . " - Write to DB backup file failed",4); + return false; + } + + //zip the file + if ( class_exists( 'ZipArchive' ) ) + { + $zip = new ZipArchive(); + $archive = $zip->open($dirpath . '/' . $file . '.zip', ZipArchive::CREATE); + $zip->addFile($dirpath . '/' . $file . '.sql', $file . '.sql' ); + $zip->close(); + + //delete .sql and keep zip + @unlink( $dirpath . '/' . $file . '.sql' ); + $fileext = '.zip'; + } else + { + $fileext = '.sql'; + } + $this->last_backup_file_name = $file . $fileext;//database-backup-YYYYMMDD-HHIISS-.zip or database-backup-YYYYMMDD-HHIISS-.sql + $this->last_backup_file_path = $dirpath . '/' . $file . $fileext; + if ($is_multi_site) + { + $this->last_backup_file_dir_multisite = $aiowps_backup_dir . '/blogid_' . $blog_id; + } + + $this->aiowps_send_backup_email(); //Send backup file via email if applicable + return true; + } + + function aiowps_send_backup_email() + { + global $aio_wp_security; + if ( $aio_wp_security->configs->get_value('aiowps_send_backup_email_address') == '1' ) + { + //Get the right email address. + if ( is_email( $aio_wp_security->configs->get_value('aiowps_backup_email_address') ) ) + { + $toaddress = $aio_wp_security->configs->get_value('aiowps_backup_email_address'); + } else + { + $toaddress = get_site_option( 'admin_email' ); + } + + $to = $toaddress; + $site_title = get_bloginfo( 'name' ); + $from_name = empty($site_title)?'WordPress':$site_title; + + $headers = 'From: ' . $from_name . ' <' . get_option('admin_email') . '>' . PHP_EOL; + $subject = __( 'All In One WP Security - Site Database Backup', 'all-in-one-wp-security-and-firewall' ) . ' ' . date( 'l, F jS, Y \a\\t g:i a', current_time( 'timestamp' ) ); + $attachment = array( $this->last_backup_file_path ); + $message = __( 'Attached is your latest DB backup file for site URL', 'all-in-one-wp-security-and-firewall' ) . ' ' . get_option( 'siteurl' ) . __( ' generated on', 'all-in-one-wp-security-and-firewall' ) . ' ' . date( 'l, F jS, Y \a\\t g:i a', current_time( 'timestamp' ) ); + + $sendMail = wp_mail( $to, $subject, $message, $headers, $attachment ); + if(FALSE === $sendMail){ + $aio_wp_security->debug_logger->log_debug("Backup notification email failed to send to ".$to,4); + } + } + } + + function aiowps_delete_backup_files($backups_dir) + { + global $aio_wp_security; + $files_to_keep = absint($aio_wp_security->configs->get_value('aiowps_backup_files_stored')); + if ( $files_to_keep > 0 ) + { + $aio_wp_security->debug_logger->log_debug(sprintf('DB Backup - Deleting all but %d latest backup file(s) in %s directory.', $files_to_keep, $backups_dir)); + $files = AIOWPSecurity_Utility_File::scan_dir_sort_date( $backups_dir ); + $count = 0; + + foreach ( $files as $file ) + { + if ( strpos( $file, 'database-backup' ) !== false ) + { + if ( $count >= $files_to_keep ) + { + @unlink( $backups_dir . '/' . $file ); + } + $count++; + } + } + } + else + { + $aio_wp_security->debug_logger->log_debug('DB Backup - Backup configuration prevents removal of old backup files!', 3); + } + } + + function aiowps_scheduled_backup_handler() + { + global $aio_wp_security; + if($aio_wp_security->configs->get_value('aiowps_enable_automated_backups')=='1') + { + $aio_wp_security->debug_logger->log_debug_cron("DB Backup - Scheduled backup is enabled. Checking if a backup needs to be done now..."); + $time_now = date_i18n( 'Y-m-d H:i:s' ); + $current_time = strtotime($time_now); + $backup_frequency = $aio_wp_security->configs->get_value('aiowps_db_backup_frequency'); //Number of hours or days or months interval per backup + $interval_setting = $aio_wp_security->configs->get_value('aiowps_db_backup_interval'); //Hours/Days/Months + switch($interval_setting) + { + case '0': + $interval = 'hours'; + break; + case '1': + $interval = 'days'; + break; + case '2': + $interval = 'weeks'; + break; + default: + // Fall back to default value, if config is corrupted for some reason. + $interval = 'weeks'; + break; + } + $last_backup_time = $aio_wp_security->configs->get_value('aiowps_last_backup_time'); + if ($last_backup_time != NULL) + { + $last_backup_time = strtotime($aio_wp_security->configs->get_value('aiowps_last_backup_time')); + $next_backup_time = strtotime("+".abs($backup_frequency).$interval, $last_backup_time); + if ($next_backup_time <= $current_time) + { + //It's time to do a backup + $result = $this->execute_backup(); + if ($result) + { + $aio_wp_security->configs->set_value('aiowps_last_backup_time', $time_now); + $aio_wp_security->configs->save_config(); + $aio_wp_security->debug_logger->log_debug_cron("DB Backup - Scheduled backup was successfully completed."); + } + else + { + $aio_wp_security->debug_logger->log_debug_cron("DB Backup - Scheduled backup operation failed!",4); + } + } + } + else + { + //Set the last backup time to now so it can trigger for the next scheduled period + $aio_wp_security->configs->set_value('aiowps_last_backup_time', $time_now); + $aio_wp_security->configs->save_config(); + } + } + } + + + function aiowps_scheduled_db_cleanup_handler() + { + global $aio_wp_security; + + $aio_wp_security->debug_logger->log_debug_cron("DB Cleanup - checking if a cleanup needs to be done now..."); + //Check the events table because this can grow quite large especially when 404 events are being logged + $events_table_name = AIOWPSEC_TBL_EVENTS; + $max_rows_event_table = '5000'; //Keep a max of 5000 rows in the events table + $max_rows_event_table = apply_filters( 'aiowps_max_rows_event_table', $max_rows_event_table ); + AIOWPSecurity_Utility::cleanup_table($events_table_name, $max_rows_event_table); + + //Check the failed logins table + $failed_logins_table_name = AIOWPSEC_TBL_FAILED_LOGINS; + $max_rows_failed_logins_table = '5000'; //Keep a max of 5000 rows in the events table + $max_rows_failed_logins_table = apply_filters( 'aiowps_max_rows_failed_logins_table', $max_rows_failed_logins_table ); + AIOWPSecurity_Utility::cleanup_table($failed_logins_table_name, $max_rows_failed_logins_table); + + //Check the login activity table + $login_activity_table_name = AIOWPSEC_TBL_USER_LOGIN_ACTIVITY; + $max_rows_login_activity_table = '5000'; //Keep a max of 5000 rows in the events table + $max_rows_login_activity_table = apply_filters( 'aiowps_max_rows_login_attempts_table', $max_rows_login_activity_table ); + AIOWPSecurity_Utility::cleanup_table($login_activity_table_name, $max_rows_login_activity_table); + + //Check the global meta table + $global_meta_table_name = AIOWPSEC_TBL_GLOBAL_META_DATA; + $max_rows_global_meta_table = '5000'; //Keep a max of 5000 rows in this table + $max_rows_global_meta_table = apply_filters( 'aiowps_max_rows_global_meta_table', $max_rows_global_meta_table ); + AIOWPSecurity_Utility::cleanup_table($global_meta_table_name, $max_rows_global_meta_table); + + //Delete any expired _aiowps_captcha_string_info_xxxx transients + AIOWPSecurity_Utility::delete_expired_captcha_transients(); + + //Keep adding other DB cleanup tasks as they arise... + } +} \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-blocking.php b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-blocking.php new file mode 100644 index 0000000..367ac27 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-blocking.php @@ -0,0 +1,117 @@ +prepare('SELECT blocked_ip FROM '.AIOWPSEC_TBL_PERM_BLOCK.' WHERE block_reason=%s',$block_reason); + } + + $result = $wpdb->get_results($sql,$output_type); + //The result returned by wp function is multi-dim array. Let's return a simple single dimensional array of ip addresses + if(!empty($result)){ + foreach($result as $item){ + $blocked_ip_array[] = $item['blocked_ip']; + } + } + return $blocked_ip_array; + } + + /** + * Checks if an IP address is blocked permanently + * @param $ip_address + * @return bool + */ + static function is_ip_blocked($ip_address) + { + global $wpdb; + $blocked_record = $wpdb->get_row($wpdb->prepare('SELECT * FROM '.AIOWPSEC_TBL_PERM_BLOCK.' WHERE blocked_ip=%s', $ip_address)); + if(empty($blocked_record)){ + return false; + }else{ + return true; + } + } + + /** + * Will add an IP address to the permament block list + * @param $ip_address + * @param string $reason + * @return bool - TRUE or FALSE on error + */ + static function add_ip_to_block_list($ip_address, $reason='') + { + global $wpdb, $aio_wp_security; + //Check if this IP address is already in the block list + $blocked = AIOWPSecurity_Blocking::is_ip_blocked($ip_address); + $time_now = date_i18n( 'Y-m-d H:i:s' ); + if(empty($blocked)){ + //Add this IP to the blocked table + $data = array( + 'blocked_ip'=>$ip_address, + 'block_reason'=>$reason, + 'blocked_date'=>$time_now + ); + $data = apply_filters('pre_add_to_permanent_block', $data); + $res = $wpdb->insert(AIOWPSEC_TBL_PERM_BLOCK, $data); + if($res === false){ + $aio_wp_security->debug_logger->log_debug("AIOWPSecurity_Blocking::add_ip_to_block_list - Error inserting record into AIOWPSEC_TBL_PERM_BLOCK table for IP ".$ip_address); + return false; + } + return true; + } + return true; + } + + static function unblock_ip($ip_address) + { + global $wpdb; + $where = array('blocked_ip'=>$ip_address); + $result = $wpdb->delete(AIOWPSEC_TBL_PERM_BLOCK,$where); + return $result; + } + + /** + * Will check the current visitor IP against the blocked table + * If IP present will block the visitor from viewing the site + */ + static function check_visitor_ip_and_perform_blocking() + { + global $aio_wp_security, $wpdb; + $visitor_ip = AIOWPSecurity_Utility_IP::get_user_ip_address(); + $ip_type = WP_Http::is_ip_address($visitor_ip); + if(empty($ip_type)){ + $aio_wp_security->debug_logger->log_debug("do_general_ip_blocking_tasks: ".$visitor_ip." is not a valid IP!",4); + return; + } + + //Check if this IP address is in the block list + $blocked = AIOWPSecurity_Blocking::is_ip_blocked($visitor_ip); + //TODO - future feature: add blocking whitelist and check + + if(empty($blocked)){ + return; //Visitor IP is not blocked - allow page to load + }else{ + //block this visitor!! + AIOWPSecurity_Utility::redirect_to_url('http://127.0.0.1'); + } + return; + + } + +} \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-bot-protection.php b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-bot-protection.php new file mode 100644 index 0000000..b7c777c --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-bot-protection.php @@ -0,0 +1,38 @@ +configs->get_value('aiowps_enable_bp_register_captcha') == '1' && defined('BP_VERSION')){ + //if buddy press feature active add action hook so buddy press can display our errors properly on bp registration form + do_action( 'bp_aiowps-captcha-answer_errors' ); + } + $cap_form = '

      '; + $cap_form .= '

      '; + $maths_question_output = $this->generate_maths_question(); + $cap_form .= $maths_question_output . '

      '; + echo $cap_form; + } + + function generate_maths_question() + { + global $aio_wp_security; + //For now we will only do plus, minus, multiplication + $equation_string = ''; + $operator_type = array('+', '−', '×'); + + $operand_display = array('word', 'number'); + + //let's now generate an equation + $operator = $operator_type[rand(0,2)]; + + if($operator === '×'){ + //Don't make the question too hard if multiplication + $first_digit = rand(1,5); + $second_digit = rand(1,5); + }else{ + $first_digit = rand(1,20); + $second_digit = rand(1,20); + } + + if($operand_display[rand(0,1)] == 'word'){ + $first_operand = $this->number_word_mapping($first_digit); + }else{ + $first_operand = $first_digit; + } + + if($operand_display[rand(0,1)] == 'word'){ + $second_operand = $this->number_word_mapping($second_digit); + }else{ + $second_operand = $second_digit; + } + + //Let's caluclate the result and construct the equation string + if($operator === '+') + { + //Addition + $result = $first_digit+$second_digit; + $equation_string .= $first_operand . ' ' . $operator . ' ' . $second_operand . ' = '; + } + else if($operator === '−') + { + //Subtraction + //If we are going to be negative let's swap operands around + if($first_digit < $second_digit){ + $equation_string .= $second_operand . ' ' . $operator . ' ' . $first_operand . ' = '; + $result = $second_digit-$first_digit; + }else{ + $equation_string .= $first_operand . ' ' . $operator . ' ' . $second_operand . ' = '; + $result = $first_digit-$second_digit; + } + } + elseif($operator === '×') + { + //Multiplication + $equation_string .= $first_operand . ' ' . $operator . ' ' . $second_operand . ' = '; + $result = $first_digit*$second_digit; + } + + //Let's encode correct answer + $captcha_secret_string = $aio_wp_security->configs->get_value('aiowps_captcha_secret_key'); + $current_time = time(); + $enc_result = base64_encode($current_time.$captcha_secret_string.$result); + $random_str = AIOWPSecurity_Utility::generate_alpha_numeric_random_string(10); + AIOWPSecurity_Utility::is_multisite_install() ? set_site_transient('aiowps_captcha_string_info_'.$random_str, $enc_result, 30 * 60) : set_transient('aiowps_captcha_string_info_'.$random_str, $enc_result, 30 * 60); + $equation_string .= ''; + $equation_string .= ''; + $equation_string .= ''; + return $equation_string; + } + + function number_word_mapping($num) + { + $number_map = array( + 1 => __('one', 'all-in-one-wp-security-and-firewall'), + 2 => __('two', 'all-in-one-wp-security-and-firewall'), + 3 => __('three', 'all-in-one-wp-security-and-firewall'), + 4 => __('four', 'all-in-one-wp-security-and-firewall'), + 5 => __('five', 'all-in-one-wp-security-and-firewall'), + 6 => __('six', 'all-in-one-wp-security-and-firewall'), + 7 => __('seven', 'all-in-one-wp-security-and-firewall'), + 8 => __('eight', 'all-in-one-wp-security-and-firewall'), + 9 => __('nine', 'all-in-one-wp-security-and-firewall'), + 10 => __('ten', 'all-in-one-wp-security-and-firewall'), + 11 => __('eleven', 'all-in-one-wp-security-and-firewall'), + 12 => __('twelve', 'all-in-one-wp-security-and-firewall'), + 13 => __('thirteen', 'all-in-one-wp-security-and-firewall'), + 14 => __('fourteen', 'all-in-one-wp-security-and-firewall'), + 15 => __('fifteen', 'all-in-one-wp-security-and-firewall'), + 16 => __('sixteen', 'all-in-one-wp-security-and-firewall'), + 17 => __('seventeen', 'all-in-one-wp-security-and-firewall'), + 18 => __('eighteen', 'all-in-one-wp-security-and-firewall'), + 19 => __('nineteen', 'all-in-one-wp-security-and-firewall'), + 20 => __('twenty', 'all-in-one-wp-security-and-firewall'), + ); + return $number_map[$num]; + } + +} \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-config.php b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-config.php new file mode 100644 index 0000000..cd88ed9 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-config.php @@ -0,0 +1,56 @@ +message_stack = new stdClass(); + } + + function load_config(){ + $this->configs = get_option('aio_wp_security_configs'); + } + + function get_value($key){ + return isset($this->configs[$key])?$this->configs[$key] : ''; + } + + function set_value($key, $value){ + $this->configs[$key] = $value; + } + + function add_value($key, $value){ + if(!is_array($this->configs)){$this->configs = array();} + + if (array_key_exists($key, $this->configs)){ + //Don't update the value for this key + } + else{//It is safe to update the value for this key + $this->configs[$key] = $value; + } + } + + function save_config(){ + update_option('aio_wp_security_configs', $this->configs); + } + + function get_stacked_message($key){ + if(isset($this->message_stack->{$key})) + return $this->message_stack->{$key}; + return ""; + } + + function set_stacked_message($key,$value){ + $this->message_stack->{$key} = $value; + } + + static function get_instance(){ + if(empty(self::$_this)){ + self::$_this = new AIOWPSecurity_Config(); + self::$_this->load_config(); + return self::$_this; + } + return self::$_this; + } +} diff --git a/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-configure-settings.php b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-configure-settings.php new file mode 100644 index 0000000..984ae4c --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-configure-settings.php @@ -0,0 +1,332 @@ +configs->set_value('aiowps_enable_debug','');//Checkbox + + //WP Generator Meta Tag feature + $aio_wp_security->configs->set_value('aiowps_remove_wp_generator_meta_info','');//Checkbox + + //Prevent Image Hotlinks + $aio_wp_security->configs->set_value('aiowps_prevent_hotlinking','');//Checkbox + //General Settings Page + + //User password feature + + //Lockdown feature + $aio_wp_security->configs->set_value('aiowps_enable_login_lockdown','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_allow_unlock_requests','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_max_login_attempts','3'); + $aio_wp_security->configs->set_value('aiowps_retry_time_period','5'); + $aio_wp_security->configs->set_value('aiowps_lockout_time_length','60'); + $aio_wp_security->configs->set_value('aiowps_set_generic_login_msg','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_enable_email_notify','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_email_address',$blog_email_address);//text field + $aio_wp_security->configs->set_value('aiowps_enable_forced_logout','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_logout_time_period','60'); + $aio_wp_security->configs->set_value('aiowps_enable_invalid_username_lockdown','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_instantly_lockout_specific_usernames', array()); // Textarea (list of strings) + $aio_wp_security->configs->set_value('aiowps_unlock_request_secret_key',AIOWPSecurity_Utility::generate_alpha_numeric_random_string(20));//Hidden secret value which will be used to do some unlock request processing. This will be assigned a random string generated when lockdown settings saved + + //Captcha feature + $aio_wp_security->configs->set_value('aiowps_enable_login_captcha','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_enable_custom_login_captcha','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_enable_lost_password_captcha','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_captcha_secret_key',AIOWPSecurity_Utility::generate_alpha_numeric_random_string(20));//Hidden secret value which will be used to do some captcha processing. This will be assigned a random string generated when captcha settings saved + + //Login Whitelist feature + $aio_wp_security->configs->set_value('aiowps_enable_whitelisting','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_allowed_ip_addresses',''); + + //User registration + $aio_wp_security->configs->set_value('aiowps_enable_manual_registration_approval','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_enable_registration_page_captcha','');//Checkbox + + //DB Security feature + //$aio_wp_security->configs->set_value('aiowps_new_manual_db_pefix',''); //text field + $aio_wp_security->configs->set_value('aiowps_enable_random_prefix','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_enable_automated_backups','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_db_backup_frequency','4'); + $aio_wp_security->configs->set_value('aiowps_db_backup_interval','2'); //Dropdown box where (0,1,2) => (hours,days,weeks) + $aio_wp_security->configs->set_value('aiowps_backup_files_stored','2'); + $aio_wp_security->configs->set_value('aiowps_send_backup_email_address','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_backup_email_address',$blog_email_address); + + //Filesystem Security feature + $aio_wp_security->configs->set_value('aiowps_disable_file_editing','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_prevent_default_wp_file_access','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_system_log_file','error_log'); + + //Blacklist feature + $aio_wp_security->configs->set_value('aiowps_enable_blacklisting','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_banned_ip_addresses',''); + + //Firewall features + $aio_wp_security->configs->set_value('aiowps_enable_basic_firewall','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_enable_pingback_firewall','');//Checkbox - blocks all access to XMLRPC + $aio_wp_security->configs->set_value('aiowps_disable_xmlrpc_pingback_methods','');//Checkbox - Disables only pingback methods in XMLRPC functionality + $aio_wp_security->configs->set_value('aiowps_block_debug_log_file_access','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_disable_index_views','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_disable_trace_and_track','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_forbid_proxy_comments','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_deny_bad_query_strings','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_advanced_char_string_filter','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_enable_5g_firewall','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_enable_6g_firewall','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_enable_custom_rules','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_custom_rules',''); + + //404 detection + $aio_wp_security->configs->set_value('aiowps_enable_404_logging','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_enable_404_IP_lockout','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_404_lockout_time_length','60'); + $aio_wp_security->configs->set_value('aiowps_404_lock_redirect_url','http://127.0.0.1'); + + //Brute Force features + $aio_wp_security->configs->set_value('aiowps_enable_rename_login_page','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_enable_login_honeypot','');//Checkbox + + $aio_wp_security->configs->set_value('aiowps_enable_brute_force_attack_prevention','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_brute_force_secret_word',''); + $aio_wp_security->configs->set_value('aiowps_cookie_brute_test',''); + $aio_wp_security->configs->set_value('aiowps_cookie_based_brute_force_redirect_url','http://127.0.0.1'); + $aio_wp_security->configs->set_value('aiowps_brute_force_attack_prevention_pw_protected_exception','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_brute_force_attack_prevention_ajax_exception','');//Checkbox + + //Maintenance menu - Visitor lockout feature + $aio_wp_security->configs->set_value('aiowps_site_lockout','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_site_lockout_msg','');//Text area/msg box + + //SPAM Prevention menu + $aio_wp_security->configs->set_value('aiowps_enable_spambot_blocking','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_enable_comment_captcha','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_enable_autoblock_spam_ip','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_spam_ip_min_comments_block',''); + + //Filescan features + //File change detection feature + $aio_wp_security->configs->set_value('aiowps_enable_automated_fcd_scan','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_fcd_scan_frequency','4'); + $aio_wp_security->configs->set_value('aiowps_fcd_scan_interval','2'); //Dropdown box where (0,1,2) => (hours,days,weeks) + $aio_wp_security->configs->set_value('aiowps_fcd_exclude_filetypes',''); + $aio_wp_security->configs->set_value('aiowps_fcd_exclude_files',''); + $aio_wp_security->configs->set_value('aiowps_send_fcd_scan_email','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_fcd_scan_email_address',$blog_email_address); + $aio_wp_security->configs->set_value('aiowps_fcds_change_detected', FALSE); //used to display a global alert on site when file change detected + + //Misc Options + //Copy protection feature + $aio_wp_security->configs->set_value('aiowps_copy_protection','');//Checkbox + //Prevent others from dislaying your site in iframe + $aio_wp_security->configs->set_value('aiowps_prevent_site_display_inside_frame','');//Checkbox + //Prevent users enumeration + $aio_wp_security->configs->set_value('aiowps_prevent_users_enumeration','');//Checkbox + + + //TODO - keep adding default options for any fields that require it + + //Save it + $aio_wp_security->configs->save_config(); + } + + static function add_option_values() + { + global $aio_wp_security; + $blog_email_address = get_bloginfo('admin_email'); //Get the blog admin email address - we will use as the default value + + //Debug + $aio_wp_security->configs->add_value('aiowps_enable_debug','');//Checkbox + + //WP Generator Meta Tag feature + $aio_wp_security->configs->add_value('aiowps_remove_wp_generator_meta_info','');//Checkbox + + //Prevent Image Hotlinks + $aio_wp_security->configs->add_value('aiowps_prevent_hotlinking','');//Checkbox + + //General Settings Page + + //User password feature + + //Lockdown feature + $aio_wp_security->configs->add_value('aiowps_enable_login_lockdown','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_allow_unlock_requests','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_max_login_attempts','3'); + $aio_wp_security->configs->add_value('aiowps_retry_time_period','5'); + $aio_wp_security->configs->add_value('aiowps_lockout_time_length','60'); + $aio_wp_security->configs->add_value('aiowps_set_generic_login_msg','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_enable_email_notify','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_email_address',$blog_email_address);//text field + $aio_wp_security->configs->add_value('aiowps_enable_forced_logout','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_logout_time_period','60'); + $aio_wp_security->configs->add_value('aiowps_enable_invalid_username_lockdown','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_instantly_lockout_specific_usernames', array()); // Textarea (list of strings) + $aio_wp_security->configs->add_value('aiowps_unlock_request_secret_key',AIOWPSecurity_Utility::generate_alpha_numeric_random_string(20));//Hidden secret value which will be used to do some unlock request processing. This will be assigned a random string generated when lockdown settings saved + + //Login Whitelist feature + $aio_wp_security->configs->add_value('aiowps_enable_whitelisting','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_allowed_ip_addresses',''); + //Captcha feature + $aio_wp_security->configs->add_value('aiowps_enable_login_captcha','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_enable_custom_login_captcha','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_captcha_secret_key',AIOWPSecurity_Utility::generate_alpha_numeric_random_string(20));//Hidden secret value which will be used to do some captcha processing. This will be assigned a random string generated when captcha settings saved + + //User registration + $aio_wp_security->configs->add_value('aiowps_enable_manual_registration_approval','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_enable_registration_page_captcha','');//Checkbox + + //DB Security feature + //$aio_wp_security->configs->add_value('aiowps_new_manual_db_pefix',''); //text field + $aio_wp_security->configs->add_value('aiowps_enable_random_prefix','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_enable_automated_backups','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_db_backup_frequency','4'); + $aio_wp_security->configs->add_value('aiowps_db_backup_interval','2'); //Dropdown box where (0,1,2) => (hours,days,weeks) + $aio_wp_security->configs->add_value('aiowps_backup_files_stored','2'); + $aio_wp_security->configs->add_value('aiowps_send_backup_email_address','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_backup_email_address',$blog_email_address); + + //Filesystem Security feature + $aio_wp_security->configs->add_value('aiowps_disable_file_editing','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_prevent_default_wp_file_access','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_system_log_file','error_log'); + + + //Blacklist feature + $aio_wp_security->configs->add_value('aiowps_enable_blacklisting','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_banned_ip_addresses',''); + + //Firewall features + $aio_wp_security->configs->add_value('aiowps_enable_basic_firewall','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_enable_pingback_firewall','');//Checkbox - blocks all access to XMLRPC + $aio_wp_security->configs->add_value('aiowps_disable_xmlrpc_pingback_methods','');//Checkbox - Disables only pingback methods in XMLRPC functionality + $aio_wp_security->configs->add_value('aiowps_block_debug_log_file_access','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_disable_index_views','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_disable_trace_and_track','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_forbid_proxy_comments','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_deny_bad_query_strings','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_advanced_char_string_filter','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_enable_5g_firewall','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_enable_6g_firewall','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_enable_custom_rules','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_custom_rules',''); + + //404 detection + $aio_wp_security->configs->add_value('aiowps_enable_404_logging','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_enable_404_IP_lockout','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_404_lockout_time_length','60'); + $aio_wp_security->configs->add_value('aiowps_404_lock_redirect_url','http://127.0.0.1'); + + //Brute Force features + $aio_wp_security->configs->add_value('aiowps_enable_rename_login_page','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_enable_login_honeypot','');//Checkbox + + $aio_wp_security->configs->add_value('aiowps_enable_brute_force_attack_prevention','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_brute_force_secret_word',''); + $aio_wp_security->configs->add_value('aiowps_cookie_brute_test',''); + $aio_wp_security->configs->add_value('aiowps_cookie_based_brute_force_redirect_url','http://127.0.0.1'); + $aio_wp_security->configs->add_value('aiowps_brute_force_attack_prevention_pw_protected_exception','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_brute_force_attack_prevention_ajax_exception','');//Checkbox + + //Maintenance menu - Visitor lockout feature + $aio_wp_security->configs->add_value('aiowps_site_lockout','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_site_lockout_msg','');//Text area/msg box + + //SPAM Prevention menu + $aio_wp_security->configs->add_value('aiowps_enable_spambot_blocking','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_enable_comment_captcha','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_enable_autoblock_spam_ip','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_spam_ip_min_comments_block',''); + + + //Filescan features + //File change detection feature + $aio_wp_security->configs->add_value('aiowps_enable_automated_fcd_scan','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_fcd_scan_frequency','4'); + $aio_wp_security->configs->add_value('aiowps_fcd_scan_interval','2'); //Dropdown box where (0,1,2) => (hours,days,weeks) + $aio_wp_security->configs->add_value('aiowps_fcd_exclude_filetypes',''); + $aio_wp_security->configs->add_value('aiowps_fcd_exclude_files',''); + $aio_wp_security->configs->add_value('aiowps_send_fcd_scan_email','');//Checkbox + $aio_wp_security->configs->add_value('aiowps_fcd_scan_email_address',$blog_email_address); + $aio_wp_security->configs->add_value('aiowps_fcds_change_detected',FALSE); //used to display a global alert on site when file change detected + + //Misc Options + //Copy protection feature + $aio_wp_security->configs->add_value('aiowps_copy_protection','');//Checkbox + //Prevent others from dislaying your site in iframe + $aio_wp_security->configs->add_value('aiowps_prevent_site_display_inside_frame','');//Checkbox + //Prevent users enumeration + $aio_wp_security->configs->add_value('aiowps_prevent_users_enumeration','');//Checkbox + + + //TODO - keep adding default options for any fields that require it + + //Save it + $aio_wp_security->configs->save_config(); + } + + static function turn_off_all_security_features() + { + global $aio_wp_security; + AIOWPSecurity_Configure_Settings::set_default_settings(); + + //Refresh the .htaccess file based on the new settings + $res = AIOWPSecurity_Utility_Htaccess::write_to_htaccess(); + if( !$res ) + { + $aio_wp_security->debug_logger->log_debug(__METHOD__ . " - Could not write to the .htaccess file. Please check the file permissions.",4); + } + } + + static function turn_off_all_firewall_rules() + { + global $aio_wp_security; + $aio_wp_security->configs->set_value('aiowps_enable_blacklisting','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_enable_whitelisting','');//Checkbox + + $aio_wp_security->configs->set_value('aiowps_enable_basic_firewall','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_enable_pingback_firewall','');//Checkbox - blocks all access to XMLRPC + $aio_wp_security->configs->set_value('aiowps_disable_xmlrpc_pingback_methods','');//Checkbox - Disables only pingback methods in XMLRPC functionality + $aio_wp_security->configs->set_value('aiowps_block_debug_log_file_access','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_disable_index_views','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_disable_trace_and_track','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_forbid_proxy_comments','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_deny_bad_query_strings','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_advanced_char_string_filter','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_enable_5g_firewall','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_enable_6g_firewall','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_enable_brute_force_attack_prevention','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_enable_custom_rules','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_custom_rules',''); + + $aio_wp_security->configs->set_value('aiowps_prevent_default_wp_file_access','');//Checkbox + + $aio_wp_security->configs->set_value('aiowps_enable_spambot_blocking','');//Checkbox + + //404 detection + $aio_wp_security->configs->set_value('aiowps_enable_404_logging','');//Checkbox + $aio_wp_security->configs->set_value('aiowps_enable_404_IP_lockout','');//Checkbox + + //Prevent Image Hotlinks + $aio_wp_security->configs->set_value('aiowps_prevent_hotlinking','');//Checkbox + + $aio_wp_security->configs->save_config(); + + //Refresh the .htaccess file based on the new settings + $res = AIOWPSecurity_Utility_Htaccess::write_to_htaccess(); + + if( !$res ) + { + $aio_wp_security->debug_logger->log_debug(__METHOD__ . " - Could not write to the .htaccess file. Please check the file permissions.",4); + } + } + +} diff --git a/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-cronjob-handler.php b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-cronjob-handler.php new file mode 100644 index 0000000..ed768c2 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-cronjob-handler.php @@ -0,0 +1,32 @@ +debug_logger->log_debug_cron("Cronjob_Handler - Hourly cron handler got fired."); + + //do_action('aiowps_force_logout_check'); + //do_action('aiowps_check_password_stuff'); + do_action('aiowps_perform_scheduled_backup_tasks'); + do_action('aiowps_perform_fcd_scan_tasks'); + } + + function aiowps_daily_cron_event_handler() + { + //Do stuff that needs checking daily + global $aio_wp_security; + $aio_wp_security->debug_logger->log_debug_cron("Cronjob_Handler - Daily cron handler got fired."); + + do_action('aiowps_perform_db_cleanup_tasks'); + } + +} + diff --git a/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-deactivation-tasks.php b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-deactivation-tasks.php new file mode 100644 index 0000000..8a9e4e6 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-deactivation-tasks.php @@ -0,0 +1,18 @@ +configs->configs); + + //Deactivate all firewall and other .htaccess rules + AIOWPSecurity_Configure_Settings::turn_off_all_firewall_rules(); + } +} diff --git a/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-debug-logger.php b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-debug-logger.php new file mode 100644 index 0000000..a0cc830 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-debug-logger.php @@ -0,0 +1,76 @@ +debug_logger->log_debug("Log messaged goes here"); + */ +class AIOWPSecurity_Logger +{ + var $log_folder_path; + var $default_log_file = 'wp-security-log.txt'; + var $default_log_file_cron = 'wp-security-log-cron-job.txt'; + var $debug_enabled = false; + var $debug_status = array('SUCCESS','STATUS','NOTICE','WARNING','FAILURE','CRITICAL'); + var $section_break_marker = "\n----------------------------------------------------------\n\n"; + var $log_reset_marker = "-------- Log File Reset --------\n"; + + function __construct($debug_enabled) + { + $this->debug_enabled = $debug_enabled; + $this->log_folder_path = AIO_WP_SECURITY_PATH . '/logs'; + } + + function get_debug_timestamp() + { + return '['.date('m/d/Y g:i A').'] - '; + } + + function get_debug_status($level) + { + return isset($this->debug_status[$level]) ? $this->debug_status[$level] : 'UNKNOWN'; + } + + function get_section_break($section_break) + { + if ($section_break) { + return $this->section_break_marker; + } + return ""; + } + + function append_to_file($content,$file_name) + { + if(empty($file_name))$file_name = $this->default_log_file; + $debug_log_file = $this->log_folder_path.'/'.$file_name; + $fp=fopen($debug_log_file,'a'); + fwrite($fp, $content); + fclose($fp); + } + + function reset_log_file($file_name='') + { + if(empty($file_name))$file_name = $this->default_log_file; + $debug_log_file = $this->log_folder_path.'/'.$file_name; + $content = $this->get_debug_timestamp().$this->log_reset_marker; + $fp=fopen($debug_log_file,'w'); + fwrite($fp, $content); + fclose($fp); + } + + function log_debug($message,$level=0,$section_break=false,$file_name='') + { + if (!$this->debug_enabled) return; + $content = $this->get_debug_timestamp();//Timestamp + $content .= $this->get_debug_status($level);//Debug status + $content .= ' : '; + $content .= $message . "\n"; + $content .= $this->get_section_break($section_break); + $this->append_to_file($content, $file_name); + } + + function log_debug_cron($message,$level=0,$section_break=false) + { + $this->log_debug($message, $level, $section_break, $this->default_log_file_cron); + } + +} \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php new file mode 100644 index 0000000..c196327 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php @@ -0,0 +1,754 @@ +has_scan_data()){ + $scanned_data = $this->do_file_change_scan(); //Scan the filesystem and get details + $last_scan_data = $this->get_last_scan_data(); + $scan_result = $this->compare_scan_data($last_scan_data,$scanned_data); + $scan_result['initial_scan'] = ''; + $this->save_scan_data_to_db($scanned_data, 'update', $scan_result); + if (!empty($scan_result['files_added']) || !empty($scan_result['files_removed']) || !empty($scan_result['files_changed'])){ + //This means there was a change detected + $aio_wp_security->configs->set_value('aiowps_fcds_change_detected', TRUE); + $aio_wp_security->configs->save_config(); + $aio_wp_security->debug_logger->log_debug("File Change Detection Feature: change to filesystem detected!"); + + $this->aiowps_send_file_change_alert_email($scan_result); //Send file change scan results via email if applicable + } else { + //Reset the change flag + $aio_wp_security->configs->set_value('aiowps_fcds_change_detected', FALSE); + $aio_wp_security->configs->save_config(); + } + return $scan_result; + } + else{ + $scanned_data = $this->do_file_change_scan(); + $this->save_scan_data_to_db($scanned_data); + $scan_result['initial_scan'] = '1'; + return $scan_result; + } + } + + /** + * Send email with notification about file changes detected by last scan. + * @global AIO_WP_Security $aio_wp_security + * @param array $scan_result Array with scan result returned by compare_scan_data() method. + */ + function aiowps_send_file_change_alert_email($scan_result) + { + global $aio_wp_security; + if ( $aio_wp_security->configs->get_value('aiowps_send_fcd_scan_email') == '1' ) + { + $site_title = get_bloginfo( 'name' ); + $from_name = empty($site_title)?'WordPress':$site_title; + + $headers = 'From: ' . $from_name . ' <' . get_option('admin_email') . '>' . PHP_EOL; + $subject = __( 'All In One WP Security - File change detected!', 'all-in-one-wp-security-and-firewall' ) . ' ' . date( 'l, F jS, Y \a\\t g:i a', current_time( 'timestamp' ) ); + //$attachment = array(); + $message = __( 'A file change was detected on your system for site URL', 'all-in-one-wp-security-and-firewall' ) . ' ' . get_option( 'siteurl' ) . __( '. Scan was generated on', 'all-in-one-wp-security-and-firewall' ) . ' ' . date( 'l, F jS, Y \a\\t g:i a', current_time( 'timestamp' ) ); + $message .= "\r\n\r\n".__( 'A summary of the scan results is shown below:', 'all-in-one-wp-security-and-firewall' ); + $message .= "\r\n\r\n"; + $message .= self::get_file_change_summary($scan_result); + $message .= "\r\n".__( 'Login to your site to view the scan details.', 'all-in-one-wp-security-and-firewall' ); + + // Get the email address(es). + $addresses = $aio_wp_security->configs->get_value('aiowps_fcd_scan_email_address'); + // If no explicit email address(es) are given, send email to site admin. + $to = empty( $addresses ) ? array( get_site_option('admin_email') ) : explode(PHP_EOL, $addresses); + if ( !wp_mail( $to, $subject, $message, $headers ) ) { + $aio_wp_security->debug_logger->log_debug("File change notification email failed to send.",4); + } + + } + } + + function aiowps_scheduled_fcd_scan_handler() + { + global $aio_wp_security; + if($aio_wp_security->configs->get_value('aiowps_enable_automated_fcd_scan')=='1') + { + $aio_wp_security->debug_logger->log_debug_cron("Filescan - Scheduled fcd_scan is enabled. Checking now to see if scan needs to be done..."); + $time_now = date_i18n( 'Y-m-d H:i:s' ); + $current_time = strtotime($time_now); + $fcd_scan_frequency = $aio_wp_security->configs->get_value('aiowps_fcd_scan_frequency'); //Number of hours or days or months interval + $interval_setting = $aio_wp_security->configs->get_value('aiowps_fcd_scan_interval'); //Hours/Days/Months + switch($interval_setting) + { + case '0': + $interval = 'hours'; + break; + case '1': + $interval = 'days'; + break; + case '2': + $interval = 'weeks'; + break; + } + $last_fcd_scan_time = $aio_wp_security->configs->get_value('aiowps_last_fcd_scan_time'); + if ($last_fcd_scan_time != NULL) + { + $last_fcd_scan_time = strtotime($aio_wp_security->configs->get_value('aiowps_last_fcd_scan_time')); + $next_fcd_scan_time = strtotime("+".abs($fcd_scan_frequency).$interval, $last_fcd_scan_time); + if ($next_fcd_scan_time <= $current_time) + { + //It's time to do a filescan + $result = $this->execute_file_change_detection_scan(ABSPATH); +// if ($result) +// { + $aio_wp_security->configs->set_value('aiowps_last_fcd_scan_time', $time_now); + $aio_wp_security->configs->save_config(); + $aio_wp_security->debug_logger->log_debug_cron("Filescan - Scheduled filescan was successfully completed."); +// } +// else +// { +// $aio_wp_security->debug_logger->log_debug_cron("Filescan - Scheduled filescan operation failed!",4); +// } + } + } + else + { + //Set the last scan time to now so it can trigger for the next scheduled period + $aio_wp_security->configs->set_value('aiowps_last_fcd_scan_time', $time_now); + $aio_wp_security->configs->save_config(); + } + } + } + + /* Returns true if there is at least one previous scaned data in the DB. False otherwise */ + function has_scan_data() + { + global $wpdb; + //For scanned data the meta_key1 column valu is 'file_change_detection', meta_value1 column value is 'file_scan_data'. Then the data is stored in meta_value4 column. + $aiowps_global_meta_tbl_name = AIOWPSEC_TBL_GLOBAL_META_DATA; + $sql = $wpdb->prepare("SELECT * FROM $aiowps_global_meta_tbl_name WHERE meta_key1=%s AND meta_value1=%s", 'file_change_detection', 'file_scan_data'); + $resultset = $wpdb->get_row($sql, OBJECT); + if($resultset){ + $scan_data = maybe_unserialize($resultset->meta_value4); + if(!empty($scan_data)){ + return true; + } + } + return false; + } + + function get_last_scan_data() + { + global $wpdb; + //For scanned data the meta_key1 column valu is 'file_change_detection', meta_value1 column value is 'file_scan_data'. Then the data is stored in meta_value4 column. + $aiowps_global_meta_tbl_name = AIOWPSEC_TBL_GLOBAL_META_DATA; + $sql = $wpdb->prepare("SELECT * FROM $aiowps_global_meta_tbl_name WHERE meta_key1=%s AND meta_value1=%s", 'file_change_detection', 'file_scan_data'); + $resultset = $wpdb->get_row($sql, OBJECT); + if($resultset){ + $scan_data = maybe_unserialize($resultset->meta_value4); + return $scan_data; + } + return array(); //return empty array if no old scan data + } + + function save_scan_data_to_db($scanned_data, $save_type = 'insert', $scan_result = array()) + { + global $wpdb, $aio_wp_security; + $result = ''; + //For scanned data the meta_key1 column value is 'file_change_detection', meta_value1 column value is 'file_scan_data'. Then the data is stored in meta_value4 column. + $aiowps_global_meta_tbl_name = AIOWPSEC_TBL_GLOBAL_META_DATA; + $payload = maybe_serialize($scanned_data); + $scan_result = maybe_serialize($scan_result); + $date_time = date_i18n( 'Y-m-d H:i:s' ); + $data = array('date_time' => $date_time, 'meta_key1' => 'file_change_detection', 'meta_value1' => 'file_scan_data', 'meta_value4' => $payload, 'meta_key5' => 'last_scan_result', 'meta_value5' => $scan_result); + if($save_type == 'insert'){ + $result = $wpdb->insert($aiowps_global_meta_tbl_name, $data); + } + else{ + $where = array('meta_key1' => 'file_change_detection', 'meta_value1' => 'file_scan_data'); + $result = $wpdb->update($aiowps_global_meta_tbl_name, $data, $where); + + } + if ($result === false){ + $aio_wp_security->debug_logger->log_debug("save_scan_data_to_db() - Error inserting data to DB!",4); + return false; + }else{ + return true; + } + } + + /** + * Recursively scan the entire $start_dir directory and return file size + * and last modified date of every regular file. Ignore files and file + * types specified in file scanner settings. + * @global AIO_WP_Security $aio_wp_security + * @param string $start_dir + * @return array + */ + function do_file_change_scan($start_dir=ABSPATH) + { + global $aio_wp_security; + $filescan_data = array(); + // Iterator key is absolute file path, iterator value is SplFileInfo object, + // iteration skips '..' and '.' records, because we're not interested in directories. + $dit = new RecursiveDirectoryIterator( + $start_dir, FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::SKIP_DOTS + ); + $rit = new RecursiveIteratorIterator( + $dit, RecursiveIteratorIterator::SELF_FIRST, RecursiveIteratorIterator::CATCH_GET_CHILD + ); + + // Grab files/directories to skip + $files_to_skip = AIOWPSecurity_Utility::explode_trim_filter_empty($aio_wp_security->configs->get_value('aiowps_fcd_exclude_files')); + // Grab (lowercased) file types to skip + $file_types_to_skip = AIOWPSecurity_Utility::explode_trim_filter_empty(strtolower($aio_wp_security->configs->get_value('aiowps_fcd_exclude_filetypes'))); + + $start_dir_length = strlen($start_dir); + + foreach ($rit as $filename => $fileinfo) { + + if ( !file_exists($filename) || is_dir($filename) ) { + continue; // if file doesn't exist or is a directory move on to next iteration + } + + if ( $fileinfo->getFilename() == 'wp-security-log-cron-job.txt' || $fileinfo->getFilename() == 'wp-security-log.txt' ) { + continue; // skip aiowps log files + } + + // Let's omit any file types from the scan which were specified in the settings if necessary + if ( !empty($file_types_to_skip) ) { + //$current_file_ext = strtolower($fileinfo->getExtension()); //getExtension() only available on PHP 5.3.6 or higher + $ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION)); + if (in_array($ext, $file_types_to_skip) ) { continue; } + } + + // Let's omit specific files or directories from the scan which were specified in the settings + if ( !empty($files_to_skip) ) { + + $skip_this = false; + foreach ($files_to_skip as $f_or_dir) { + // Expect files/dirs to be specified relatively to $start_dir, + // so start searching at $start_dir_length offset. + if (strpos($filename, $f_or_dir, $start_dir_length) !== false) { + $skip_this = true; + break; // ! + } + } + if ($skip_this) { continue; } + } + + $filescan_data[$filename] = array( + 'last_modified' => $fileinfo->getMTime(), + 'filesize' => $fileinfo->getSize(), + ); + + } + return $filescan_data; + } + + function compare_scan_data($last_scan_data, $new_scanned_data) + { + // Identify new files added: get all files which are in the new scan but not present in the old scan + $files_added = @array_diff_key( $new_scanned_data, $last_scan_data ); + // Identify files deleted: get all files which are in the old scan but not present in the new scan + $files_removed = @array_diff_key( $last_scan_data, $new_scanned_data ); + // Identify existing files: get all files which are in new scan, but were not added + $files_kept = @array_diff_key( $new_scanned_data, $files_added ); + + $files_changed = array(); + + // Loop through existing files and determine, if they have been changed + foreach ( $files_kept as $filename => $new_scan_meta ) { + $last_scan_meta = $last_scan_data[$filename]; + // Check filesize and last_modified values + if ( ($new_scan_meta['last_modified'] !== $last_scan_meta['last_modified']) + || ($new_scan_meta['filesize'] !== $last_scan_meta['filesize']) ) + { + $files_changed[$filename] = $new_scan_meta; + } + } + + // Create single array of all changes + return array( + 'files_added' => $files_added, + 'files_removed' => $files_removed, + 'files_changed' => $files_changed, + ); + } + + function execute_db_scan() + { + global $aio_wp_security; + global $wpdb; + + //$aio_wp_security->admin_init->filescan_menu->start_buffer(); + ob_start(); + + $info_msg_string = '

      '.__('Starting DB scan.....please wait while the plugin scans your database.......', 'all-in-one-wp-security-and-firewall').'

      '; + echo $info_msg_string; + + //Options table + echo '

      '.__('Scanning options table.........', 'all-in-one-wp-security-and-firewall').'

      '; + $options_table = $wpdb->prefix . 'options'; + $sql= "SELECT option_id,option_value,option_name + FROM $options_table WHERE + INSTR(LCASE(option_name), 'class_generic_support') + + INSTR(LCASE(option_name), 'widget_generic_support') + + INSTR(LCASE(option_name), 'fwp') + + INSTR(LCASE(option_name), 'wp_check_hash') + + INSTR(LCASE(option_name), 'ftp_credentials') + + INSTR(LCASE(option_name), 'page_option') + + INSTR(LCASE(option_value), '0 + "; + + $results = $wpdb->get_results($sql, ARRAY_A); + $sus_options_entry_found = false; + + $found_options = ''; + + if ($results) { + foreach ($results as $entry) { + $found_options = ''; + $known_pharma_hack = false; + $option_id = $entry['option_id']; + $option_name = $entry['option_name']; + $option_value = $entry['option_value']; + + if (strpos(strtolower($option_name),'class_generic_support')!==false){ + $known_pharma_hack = true; + $found_options.="Known WP Pharma Hack Entry: class_generic_support "; + } + if (strpos(strtolower($option_name),'widget_generic_support')!==false){ + $known_pharma_hack = true; + $found_options.="Known WP Pharma Hack Entry: widget_generic_support "; + } + if (strpos(strtolower($option_name),'fwp')!==false){ + $known_pharma_hack = true; + $found_options.="Known WP Pharma Hack Entry: fwp "; + } + if (strpos(strtolower($option_name),'wp_check_hash')!==false){ + $known_pharma_hack = true; + $found_options.="Known WP Pharma Hack Entry: wp_check_hash "; + } + if (strpos(strtolower($option_name),'ftp_credentials')!==false){ + $known_pharma_hack = true; + $found_options.="Known WP Pharma Hack Entry: ftp_credentials "; + } + if (strpos(strtolower($option_name),'page_option')!==false){ + $known_pharma_hack = true; + $found_options.="Known WP Pharma Hack Entry: page_option "; + } + + + //Turned off for false positive +// if (strpos($option_name,'rss_')!==false) { +// if($option_name == 'rss_use_language' || $option_name == 'rss_use_excerpt' || $option_name == 'rss_excerpt_length'){ +// //any one of these entries are ok. +// continue; +// }else{ +// $known_pharma_hack = true; +// $found_options.="Known WP Pharma Hack Entry found in options table with option_name: ".$option_name; +// } +// } + + //If known pharma hack entry was found delete it + if($known_pharma_hack){ + echo '

      '.sprintf( __('%s and option_id: %s', 'all-in-one-wp-security-and-firewall'), $found_options, $entry['option_id']).'

      '; + $delete_sql = $wpdb->delete($options_table, array('option_name'=>$option_name)); + if($delete_sql === FALSE){ + echo '

      '.sprintf( __('Deletion of known pharma hack entry for option_name %s failed. Please delete this entry manually!', 'all-in-one-wp-security-and-firewall'), $entry['option_name']).'

      '; + }else{ + echo '

      '.sprintf( __('The options table entry with known pharma hack for option_id %s with option_name %s was successfully deleted', 'all-in-one-wp-security-and-firewall'), $entry['option_id'], $entry['option_name']).'

      '; + } + + } + +// if (strpos($option_name, '_transient_feed') !== false){ +// continue; +// } + if (strpos(strtolower($option_value),''.sprintf( __('Possible suspicious entry found (for option_id: %s) - %s ', 'all-in-one-wp-security-and-firewall'), $entry['option_id'], $found_options).'

      '; + + if($found_options != ''){ + $sus_options_entry_found = true; + } + } + } + + if(!$sus_options_entry_found){ + echo '

      '.__('No suspicious entries found in options table', 'all-in-one-wp-security-and-firewall').'

      '; + } + + //Posts table + echo '

      '.__('Scanning posts table.........', 'all-in-one-wp-security-and-firewall').'

      '; + $posts_table = $wpdb->prefix . 'posts'; + $sql= "SELECT ID,post_author,post_title,post_name,guid,post_content,post_mime_type + FROM $posts_table WHERE + INSTR(LCASE(post_author), '0 + "; + + $results = $wpdb->get_results($sql, ARRAY_A); + $sus_posts_entry_found = false; + $found_posts = ''; + if ($results) { + foreach ($results as $entry) { + $found_posts = ''; + if (strpos(strtolower($entry['post_author']),''.sprintf( __('Possible suspicious entry found (for Post ID: %s) in the following column - %s ', 'all-in-one-wp-security-and-firewall'), $entry['ID'], $found_posts).'

      '; + + if($found_options != ''){ + $sus_posts_entry_found = true; + } + } + } + + if(!$sus_posts_entry_found){ + echo '

      '.__('No suspicious entries found in posts table', 'all-in-one-wp-security-and-firewall').'

      '; + } + + //Links table + echo '

      '.__('Scanning links table.........', 'all-in-one-wp-security-and-firewall').'

      '; + $links_table = $wpdb->prefix . 'links'; + $sql= "SELECT link_id,link_url,link_image,link_description,link_notes,link_rel,link_rss + FROM $links_table WHERE + INSTR(LCASE(link_url), '0 + "; + + $results = $wpdb->get_results($sql, ARRAY_A); + $sus_links_entry_found = false; + $found_links = ''; + if ($results) { + foreach ($results as $entry) { + $found_links = ''; + if (strpos(strtolower($entry['link_url']),''.sprintf( __('Possible suspicious entry - %s ', 'all-in-one-wp-security-and-firewall'), $found_links).'

      '; + + if($found_options != ''){ + $sus_links_entry_found = true; + } + } + } + + if(!$sus_links_entry_found) { + echo '

      '.__('No suspicious entries found in links table', 'all-in-one-wp-security-and-firewall').'

      '; + } + + //Comments table + echo '

      '.__('Scanning comments table.........', 'all-in-one-wp-security-and-firewall').'

      '; + $comments_table = $wpdb->prefix . 'comments'; + $sql= "SELECT comment_ID,comment_author_url,comment_agent,comment_author,comment_author_email,comment_content + FROM $comments_table WHERE + INSTR(LCASE(comment_author_url), '0 + "; + + $results = $wpdb->get_results($sql, ARRAY_A); + $sus_comments_entry_found = false; + $found_comments = ''; + if ($results) { + foreach ($results as $entry) { + $found_comments = ''; + if (strpos(strtolower($entry['comment_author']),''.sprintf( __('Possible suspicious entry - %s ', 'all-in-one-wp-security-and-firewall'), $found_comments).'

      '; + + if($found_comments != ''){ + $sus_comments_entry_found = true; + } + } + } + + if(!$sus_comments_entry_found) { + echo '

      '.__('No suspicious entries found in comments table', 'all-in-one-wp-security-and-firewall').'

      '; + } + + //postmeta table + echo '

      '.__('Scanning postmeta table.........', 'all-in-one-wp-security-and-firewall').'

      '; + $postmeta_table = $wpdb->prefix . 'postmeta'; + $sql= "SELECT meta_id,meta_value + FROM $postmeta_table WHERE + INSTR(LCASE(meta_value), 'eval(')>0 + "; + + $results = $wpdb->get_results($sql, ARRAY_A); + $sus_postmeta_entry_found = false; + $found_postmeta = ''; + if ($results) { + foreach ($results as $entry) { + $found_postmeta = ''; + if (strpos(strtolower($entry['meta_value']),'eval(')!==false) $found_postmeta.="eval() statement found in the meta_value field for meta_id: ".$entry['meta_id']; + + echo '

      '.sprintf( __('Possible suspicious entry - %s ', 'all-in-one-wp-security-and-firewall'), $found_postmeta).'

      '; + + if($found_postmeta != ''){ + $sus_postmeta_entry_found = true; + } + } + } + + if(!$sus_postmeta_entry_found) { + echo '

      '.__('No suspicious entries found in postmeta table', 'all-in-one-wp-security-and-firewall').'

      '; + } + + //usermeta table + echo '

      '.__('Scanning usermeta table.........', 'all-in-one-wp-security-and-firewall').'

      '; + $usermeta_table = $wpdb->prefix . 'usermeta'; + $sql= "SELECT umeta_id,meta_value + FROM $usermeta_table WHERE + INSTR(LCASE(meta_value), 'eval(')>0 + "; + + $results = $wpdb->get_results($sql, ARRAY_A); + $sus_usermeta_entry_found = false; + $found_usermeta = ''; + if ($results) { + foreach ($results as $entry) { + $found_usermeta = ''; + if (strpos(strtolower($entry['meta_value']),'eval(')!==false) $found_usermeta.="eval() statement found in the meta_value field for meta_id: ".$entry['umeta_id']; + + echo '

      '.sprintf( __('Possible suspicious entry - %s ', 'all-in-one-wp-security-and-firewall'), $found_usermeta).'

      '; + + if($found_usermeta != ''){ + $sus_usermeta_entry_found = true; + } + } + } + + if(!$sus_usermeta_entry_found) { + echo '

      '.__('No suspicious entries found in usermeta table', 'all-in-one-wp-security-and-firewall').'

      '; + } + + //users table + echo '

      '.__('Scanning users table.........', 'all-in-one-wp-security-and-firewall').'

      '; + $users_table = $wpdb->prefix . 'users'; + $sql= "SELECT ID,user_login,user_nicename,user_email,user_url,display_name + FROM $users_table WHERE + INSTR(LCASE(user_login), '0 + "; + + $results = $wpdb->get_results($sql, ARRAY_A); + $sus_users_entry_found = false; + $found_users = ''; + if ($results) { + foreach ($results as $entry) { + $found_users = ''; + if (strpos(strtolower($entry['user_login']),''.sprintf( __('Possible suspicious entry - %s ', 'all-in-one-wp-security-and-firewall'), $found_users).'

      '; + + if($found_users != ''){ + $sus_users_entry_found = true; + } + } + } + + if(!$sus_users_entry_found) { + echo '

      '.__('No suspicious entries found in users table', 'all-in-one-wp-security-and-firewall').'

      '; + } + + $output = ob_get_contents(); + ob_end_clean(); + + if($found_options != '' || $found_posts != '' || $found_links != '' || $found_comments != '' || $found_postmeta != '' || $found_usermeta != '' || $found_users != ''){ + $error_msg = '

      '.__('The plugin has detected that there are some potentially suspicious entries in your database.', 'all-in-one-wp-security-and-firewall').'

      '; + $error_msg .= '

      '.__('Please verify the results listed below to confirm whether the entries detected are genuinely suspicious or if they are false positives.', 'all-in-one-wp-security-and-firewall').'

      '; + $error_msg .= '

      '; + + //Display a yellow box disclaimer stating that if no suspicious entries found does not necessarily mean site is not currently hacked + $malware_scan_tab_link = 'Malware Scan'; + $info_msg = ''.__('Disclaimer:').'
      '; + $info_msg .= __('Even though this database scan has revealed some suspicious entries, this does not necessarily mean that other parts of your DB or site are also not compromised.', 'all-in-one-wp-security-and-firewall').'
      '; + $info_msg .= __('Please note that database scan performed by this feature is basic and looks for common malicious entries. Since hackers are continually evolving their methods this scan is not meant to be a guaranteed catch-all for malware.', 'all-in-one-wp-security-and-firewall').'
      '; + $info_msg .= sprintf( __('It is your responsibility to do the due diligence and perform a robust %s on your site if you wish to be more certain that your site is clean.', 'all-in-one-wp-security-and-firewall'), $malware_scan_tab_link); + $disclaimer = '

      '.$info_msg.'

      '; + + return $error_msg.$disclaimer.$output; + + }else{ + $scan_complete_msg = '

      '; + $scan_complete_msg .= __('DB Scan was completed successfully. No suspicious entries found.'); + $scan_complete_msg .= '

      '; + + //Display a yellow box disclaimer stating that if no suspicious entries found does not necessarily mean site is not currently hacked + $malware_scan_tab_link = 'Malware Scan'; + $info_msg = ''.__('Disclaimer:').'
      '; + $info_msg .= __('Even though the database scan has not revealed any suspicious entries, this does not necessarily mean that your site is actually completely clean or not compromised.', 'all-in-one-wp-security-and-firewall').'
      '; + $info_msg .= __('Please note that database scan performed by this feature is basic and looks for common malicious entries. Since hackers are continually evolving their methods this scan is not meant to be a guaranteed catch-all for malware.', 'all-in-one-wp-security-and-firewall').'
      '; + $info_msg .= sprintf( __('It is your responsibility to do the due diligence and perform a robust %s on your site if you wish to be more certain that your site is clean.', 'all-in-one-wp-security-and-firewall'), $malware_scan_tab_link); + $disclaimer = '

      '.$info_msg.'

      '; + + return $scan_complete_msg.$disclaimer.$output; + } + } + + static function get_file_change_data() + { + global $wpdb, $aio_wp_security; + //Let's get the results array from the DB + $tbl_name = AIOWPSEC_TBL_GLOBAL_META_DATA; + $key = 'file_change_detection'; + $sql_prep = $wpdb->prepare("SELECT * FROM $tbl_name WHERE meta_key1 = %s", $key); + $scan_db_data = $wpdb->get_row($sql_prep, ARRAY_A); + if ($scan_db_data === NULL) + { + $aio_wp_security->debug_logger->log_debug("display_last_scan_results() - DB query for scan results data from global meta table returned NULL!",4); + return FALSE; + } + $date_last_scan = $scan_db_data['date_time']; + $scan_results_unserialized = maybe_unserialize($scan_db_data['meta_value5']); + if (empty($scan_results_unserialized['files_added']) && empty($scan_results_unserialized['files_removed']) && empty($scan_results_unserialized['files_changed'])){ + //No file change detected + return FALSE; + }else{ + return $scan_results_unserialized; + } + + } + + static function get_file_change_summary($scan_result) + { + $scan_summary = ""; + if (!empty($scan_result['files_added'])) + { + //Output of files added + $scan_summary .= "\r\n".__('The following files were added to your host', 'all-in-one-wp-security-and-firewall').":\r\n"; + foreach ($scan_result['files_added'] as $key=>$value) { + $scan_summary .= "\r\n".$key.' ('.__('modified on: ', 'all-in-one-wp-security-and-firewall').date('Y-m-d H:i:s',$value['last_modified']).')'; + } + $scan_summary .= "\r\n======================================\r\n"; + } + if (!empty($scan_result['files_removed'])) + { + //Output of files removed + $scan_summary .= "\r\n".__('The following files were removed from your host', 'all-in-one-wp-security-and-firewall').":\r\n"; + foreach ($scan_result['files_removed'] as $key=>$value) { + $scan_summary .= "\r\n".$key.' ('.__('modified on: ', 'all-in-one-wp-security-and-firewall').date('Y-m-d H:i:s',$value['last_modified']).')'; + } + $scan_summary .= "\r\n======================================\r\n"; + } + + if (!empty($scan_result['files_changed'])) + { + //Output of files changed + $scan_summary .= "\r\n".__('The following files were changed on your host', 'all-in-one-wp-security-and-firewall').":\r\n"; + foreach ($scan_result['files_changed'] as $key=>$value) { + $scan_summary .= "\r\n".$key.' ('.__('modified on: ', 'all-in-one-wp-security-and-firewall').date('Y-m-d H:i:s',$value['last_modified']).')'; + } + $scan_summary .= "\r\n======================================\r\n"; + } + + return $scan_summary; + } + +} \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-general-init-tasks.php b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-general-init-tasks.php new file mode 100644 index 0000000..4a7c051 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-general-init-tasks.php @@ -0,0 +1,541 @@ +configs->get_value('aiowps_disable_xmlrpc_pingback_methods') == '1') { + add_filter( 'xmlrpc_methods', array(&$this, 'aiowps_disable_xmlrpc_pingback_methods') ); + add_filter( 'wp_headers', array(&$this, 'aiowps_remove_x_pingback_header') ); + } + + add_action( 'permalink_structure_changed', array(&$this, 'refresh_firewall_rules' ), 10, 2); + + if ($aio_wp_security->configs->get_value('aiowps_enable_autoblock_spam_ip') == '1') { + AIOWPSecurity_Blocking::check_visitor_ip_and_perform_blocking(); + + //add_action( 'spammed_comment', array(&$this, 'process_spammed_comment' )); //this hook gets fired when admin marks comment as spam + //add_action( 'akismet_submit_spam_comment', array(&$this, 'process_akismet_submit_spam_comment' ), 10, 2); //this hook gets fired when akismet marks a comment as spam + add_action( 'comment_post', array(&$this, 'spam_detect_process_comment_post' ), 10, 2); //this hook gets fired just after comment is saved to DB + add_action( 'transition_comment_status', array(&$this, 'process_transition_comment_status' ), 10, 3); //this hook gets fired when a comment's status changes + } + + if ($aio_wp_security->configs->get_value('aiowps_enable_rename_login_page') == '1') { + add_action( 'widgets_init', array(&$this, 'remove_standard_wp_meta_widget' )); + add_filter( 'retrieve_password_message', array(&$this, 'decode_reset_pw_msg'), 10, 4); //Fix for non decoded html entities in password reset link + } + + add_action('admin_notices', array(&$this,'reapply_htaccess_rules_notice')); + if(isset($_REQUEST['aiowps_reapply_htaccess'])){ + if(strip_tags($_REQUEST['aiowps_reapply_htaccess']) == 1){ + include_once ('wp-security-installer.php'); + if(AIOWPSecurity_Installer::reactivation_tasks()){ + echo '

      The AIOWPS .htaccess rules were successfully re-inserted.

      '; + }else{ + echo '

      AIOWPS encountered an error when trying to write to your .htaccess file. Please check the logs.

      '; + } + + }elseif(strip_tags($_REQUEST['aiowps_reapply_htaccess']) == 2){ + //Don't re-write the rules and just delete the temp config item + delete_option('aiowps_temp_configs'); + } + } + + if($aio_wp_security->configs->get_value('aiowps_prevent_site_display_inside_frame') == '1'){ + send_frame_options_header(); //send X-Frame-Options: SAMEORIGIN in HTTP header + } + + if($aio_wp_security->configs->get_value('aiowps_remove_wp_generator_meta_info') == '1'){ + add_filter('the_generator', array(&$this,'remove_wp_generator_meta_info')); + add_filter('style_loader_src', array(&$this,'remove_wp_css_js_meta_info')); + add_filter('script_loader_src', array(&$this,'remove_wp_css_js_meta_info')); + } + + //For the cookie based brute force prevention feature + if($aio_wp_security->configs->get_value('aiowps_enable_brute_force_attack_prevention') == 1){ + $bfcf_secret_word = $aio_wp_security->configs->get_value('aiowps_brute_force_secret_word'); + if(isset($_GET[$bfcf_secret_word])){ + //If URL contains secret word in query param then set cookie and then redirect to the login page + AIOWPSecurity_Utility::set_cookie_value($bfcf_secret_word, "1"); + AIOWPSecurity_Utility::redirect_to_url(AIOWPSEC_WP_URL."/wp-admin"); + } + } + + //Stop users enumeration feature + if( $aio_wp_security->configs->get_value('aiowps_prevent_users_enumeration') == 1) { + include_once(AIO_WP_SECURITY_PATH.'/other-includes/wp-security-stop-users-enumeration.php'); + } + + //For user unlock request feature + if(isset($_POST['aiowps_unlock_request']) || isset($_POST['aiowps_wp_submit_unlock_request'])){ + nocache_headers(); + remove_action('wp_head','head_addons',7); + include_once(AIO_WP_SECURITY_PATH.'/other-includes/wp-security-unlock-request.php'); + exit(); + } + + if(isset($_GET['aiowps_auth_key'])){ + //If URL contains unlock key in query param then process the request + $unlock_key = strip_tags($_GET['aiowps_auth_key']); + AIOWPSecurity_User_Login::process_unlock_request($unlock_key); + } + + //For honeypot feature + if(isset($_POST['aio_special_field'])){ + $special_field_value = strip_tags($_POST['aio_special_field']); + if(!empty($special_field_value)){ + //This means a robot has submitted the login form! + //Redirect back to its localhost + AIOWPSecurity_Utility::redirect_to_url('http://127.0.0.1'); + } + } + + //For 404 IP lockout feature + if($aio_wp_security->configs->get_value('aiowps_enable_404_IP_lockout') == '1'){ + if (!is_user_logged_in() || !current_user_can('administrator')) { + $this->do_404_lockout_tasks(); + } + } + + + //For login captcha feature + if($aio_wp_security->configs->get_value('aiowps_enable_login_captcha') == '1'){ + if (!is_user_logged_in()) { + add_action('login_form', array(&$this, 'insert_captcha_question_form')); + } + } + + //For custom login form captcha feature, ie, when wp_login_form() function is used to generate login form + if($aio_wp_security->configs->get_value('aiowps_enable_custom_login_captcha') == '1'){ + if (!is_user_logged_in()) { + add_filter( 'login_form_middle', array(&$this, 'insert_captcha_custom_login'), 10, 2); //For cases where the WP wp_login_form() function is used + } + } + + //For honeypot feature + if($aio_wp_security->configs->get_value('aiowps_enable_login_honeypot') == '1'){ + if (!is_user_logged_in()) { + add_action('login_form', array(&$this, 'insert_honeypot_hidden_field')); + } + } + + //For lost password captcha feature + if($aio_wp_security->configs->get_value('aiowps_enable_lost_password_captcha') == '1'){ + if (!is_user_logged_in()) { + add_action('lostpassword_form', array(&$this, 'insert_captcha_question_form')); + add_action('lostpassword_post', array(&$this, 'process_lost_password_form_post')); + } + } + + //For registration manual approval feature + if($aio_wp_security->configs->get_value('aiowps_enable_manual_registration_approval') == '1'){ + add_filter('wp_login_errors', array(&$this, 'modify_registration_page_messages'),10, 2); + } + + //For registration page captcha feature + if (AIOWPSecurity_Utility::is_multisite_install()){ + $blog_id = get_current_blog_id(); + switch_to_blog($blog_id); + if($aio_wp_security->configs->get_value('aiowps_enable_registration_page_captcha') == '1'){ + if (!is_user_logged_in()) { + add_action('signup_extra_fields', array(&$this, 'insert_captcha_question_form_multi')); + //add_action('preprocess_signup_form', array(&$this, 'process_signup_form_multi')); + add_filter( 'wpmu_validate_user_signup', array(&$this, 'process_signup_form_multi') ); + + } + } + restore_current_blog(); + }else{ + if($aio_wp_security->configs->get_value('aiowps_enable_registration_page_captcha') == '1'){ + if (!is_user_logged_in()) { + add_action('register_form', array(&$this, 'insert_captcha_question_form')); + } + } + } + + //For comment captcha feature + if (AIOWPSecurity_Utility::is_multisite_install()){ + $blog_id = get_current_blog_id(); + switch_to_blog($blog_id); + if($aio_wp_security->configs->get_value('aiowps_enable_comment_captcha') == '1'){ + add_action( 'comment_form_after_fields', array(&$this, 'insert_captcha_question_form'), 1 ); + add_action( 'comment_form_logged_in_after', array(&$this, 'insert_captcha_question_form'), 1 ); + add_filter( 'preprocess_comment', array(&$this, 'process_comment_post') ); + } + restore_current_blog(); + }else{ + if($aio_wp_security->configs->get_value('aiowps_enable_comment_captcha') == '1'){ + add_action( 'comment_form_after_fields', array(&$this, 'insert_captcha_question_form'), 1 ); + add_action( 'comment_form_logged_in_after', array(&$this, 'insert_captcha_question_form'), 1 ); + add_filter( 'preprocess_comment', array(&$this, 'process_comment_post') ); + } + } + + //For buddypress registration captcha feature + if($aio_wp_security->configs->get_value('aiowps_enable_bp_register_captcha') == '1'){ + add_action('bp_account_details_fields', array(&$this, 'insert_captcha_question_form')); + add_action('bp_signup_validate', array(&$this, 'buddy_press_signup_validate_captcha')); + } + + + //For feature which displays logged in users + $this->update_logged_in_user_transient(); + + //For block fake googlebots feature + if($aio_wp_security->configs->get_value('aiowps_block_fake_googlebots') == '1'){ + include_once(AIO_WP_SECURITY_PATH.'/classes/wp-security-bot-protection.php'); + AIOWPSecurity_Fake_Bot_Protection::block_fake_googlebots(); + } + + //For 404 event logging + if($aio_wp_security->configs->get_value('aiowps_enable_404_logging') == '1'){ + add_action('wp_head', array(&$this, 'check_404_event')); + } + + //Add more tasks that need to be executed at init time + + } + + function aiowps_disable_xmlrpc_pingback_methods( $methods ) { + unset( $methods['pingback.ping'] ); + unset( $methods['pingback.extensions.getPingbacks'] ); + return $methods; + } + + function aiowps_remove_x_pingback_header( $headers ) { + unset( $headers['X-Pingback'] ); + return $headers; + } + + /** + * Refreshes the firewall rules in .htaccess file + * eg: if permalink settings changed and white list enabled + * @param $old_permalink_structure + * @param $permalink_structure + */ + function refresh_firewall_rules($old_permalink_structure, $permalink_structure){ + global $aio_wp_security; + //If white list enabled need to re-adjust the .htaccess rules + if ($aio_wp_security->configs->get_value('aiowps_enable_whitelisting') == '1') { + $write_result = AIOWPSecurity_Utility_Htaccess::write_to_htaccess(); //now let's write to the .htaccess file + if ( !$write_result ) + { + $this->show_msg_error(__('The plugin was unable to write to the .htaccess file. Please edit file manually.','all-in-one-wp-security-and-firewall')); + $aio_wp_security->debug_logger->log_debug("AIOWPSecurity_whitelist_Menu - The plugin was unable to write to the .htaccess file."); + } + } + } + + function spam_detect_process_comment_post($comment_id, $comment_approved) + { + if($comment_approved === "spam"){ + $this->block_comment_ip($comment_id); + } + + } + + function process_transition_comment_status($new_status, $old_status, $comment) + { + if($new_status == 'spam'){ + $this->block_comment_ip($comment->comment_ID); + } + + } + + /** + * Will check auto-spam blocking settings and will add IP to blocked table accordingly + * @param $comment_id + */ + function block_comment_ip($comment_id) + { + global $aio_wp_security, $wpdb; + $comment_obj = get_comment( $comment_id ); + $comment_ip = $comment_obj->comment_author_IP; + //Get number of spam comments from this IP + $sql = $wpdb->prepare("SELECT * FROM $wpdb->comments + WHERE comment_approved = 'spam' + AND comment_author_IP = %s + ", $comment_ip); + $comment_data = $wpdb->get_results($sql, ARRAY_A); + $spam_count = count($comment_data); + $min_comment_before_block = $aio_wp_security->configs->get_value('aiowps_spam_ip_min_comments_block'); + if(!empty($min_comment_before_block) && $spam_count >= ($min_comment_before_block - 1)){ + AIOWPSecurity_Blocking::add_ip_to_block_list($comment_ip, 'spam'); + } + } + + function remove_standard_wp_meta_widget() + { + unregister_widget('WP_Widget_Meta'); + } + + function remove_wp_generator_meta_info() + { + return ''; + } + + function remove_wp_css_js_meta_info($src) { + global $wp_version; + static $wp_version_hash = null; // Cache hash value for all function calls + + // Replace only version number of assets with WP version + if ( strpos($src, 'ver=' . $wp_version) !== false ) { + if ( !$wp_version_hash ) { + $wp_version_hash = wp_hash($wp_version); + } + // Replace version number with computed hash + $src = add_query_arg('ver', $wp_version_hash, $src); + } + return $src; + } + + function do_404_lockout_tasks(){ + global $aio_wp_security; + $redirect_url = $aio_wp_security->configs->get_value('aiowps_404_lock_redirect_url'); //This is the redirect URL for blocked users + + $visitor_ip = AIOWPSecurity_Utility_IP::get_user_ip_address(); + + $is_locked = AIOWPSecurity_Utility::check_locked_ip($visitor_ip); + + if($is_locked){ + //redirect blocked user to configured URL + AIOWPSecurity_Utility::redirect_to_url($redirect_url); + }else{ + //allow through + } + } + + function update_logged_in_user_transient(){ + if(is_user_logged_in()){ + $current_user_ip = AIOWPSecurity_Utility_IP::get_user_ip_address(); + // get the logged in users list from transients entry + $logged_in_users = (AIOWPSecurity_Utility::is_multisite_install() ? get_site_transient('users_online') : get_transient('users_online')); + $current_user = wp_get_current_user(); + $current_user = $current_user->ID; + $current_time = current_time('timestamp'); + + $current_user_info = array("user_id" => $current_user, "last_activity" => $current_time, "ip_address" => $current_user_ip); //We will store last activity time and ip address in transient entry + + if($logged_in_users === false || $logged_in_users == NULL){ + $logged_in_users = array(); + $logged_in_users[] = $current_user_info; + AIOWPSecurity_Utility::is_multisite_install() ? set_site_transient('users_online', $logged_in_users, 30 * 60) : set_transient('users_online', $logged_in_users, 30 * 60); + } + else + { + $key = 0; + $do_nothing = false; + $update_existing = false; + $item_index = 0; + foreach ($logged_in_users as $value) + { + if($value['user_id'] == $current_user && strcmp($value['ip_address'], $current_user_ip) == 0) + { + if ($value['last_activity'] < ($current_time - (15 * 60))) + { + $update_existing = true; + $item_index = $key; + break; + }else{ + $do_nothing = true; + break; + } + } + $key++; + } + + if($update_existing) + { + //Update transient if the last activity was less than 15 min ago for this user + $logged_in_users[$item_index] = $current_user_info; + AIOWPSecurity_Utility::is_multisite_install() ? set_site_transient('users_online', $logged_in_users, 30 * 60) : set_transient('users_online', $logged_in_users, 30 * 60); + }else if($do_nothing){ + //Do nothing + }else{ + $logged_in_users[] = $current_user_info; + AIOWPSecurity_Utility::is_multisite_install() ? set_site_transient('users_online', $logged_in_users, 30 * 60) : set_transient('users_online', $logged_in_users, 30 * 60); + } + } + } + } + + function insert_captcha_custom_login($cust_html_code, $args) + { + global $aio_wp_security; + $cap_form = '

      '; + $cap_form .= '

      '; + $maths_question_output = $aio_wp_security->captcha_obj->generate_maths_question(); + $cap_form .= $maths_question_output . '

      '; + + $cust_html_code .= $cap_form; + return $cust_html_code; + } + + function insert_captcha_question_form_multi($error) + { + global $aio_wp_security; + $aio_wp_security->captcha_obj->display_captcha_form(); + } + + function process_signup_form_multi($result) + { + global $aio_wp_security; + //Check if captcha enabled + if (array_key_exists('aiowps-captcha-answer', $_POST)) //If the register form with captcha was submitted then do some processing + { + isset($_POST['aiowps-captcha-answer'])?$captcha_answer = strip_tags(trim($_POST['aiowps-captcha-answer'])): $captcha_answer = ''; + $captcha_secret_string = $aio_wp_security->configs->get_value('aiowps_captcha_secret_key'); + $submitted_encoded_string = base64_encode($_POST['aiowps-captcha-temp-string'].$captcha_secret_string.$captcha_answer); + $trans_handle = sanitize_text_field($_POST['aiowps-captcha-string-info']); + $captcha_string_info_trans = (AIOWPSecurity_Utility::is_multisite_install() ? get_site_transient('aiowps_captcha_string_info_'.$trans_handle) : get_transient('aiowps_captcha_string_info_'.$trans_handle)); + if($submitted_encoded_string !== $captcha_string_info_trans) + { + //This means a wrong answer was entered + $result['errors']->add('generic', __('ERROR: Your answer was incorrect - please try again.', 'all-in-one-wp-security-and-firewall')); + } + } + return $result; + } + + function insert_captcha_question_form(){ + global $aio_wp_security; + $aio_wp_security->captcha_obj->display_captcha_form(); + } + + function insert_honeypot_hidden_field(){ + $honey_input = '

      '; + $honey_input .= '

      '; + echo $honey_input; + } + + function process_comment_post( $comment ) + { + global $aio_wp_security; + if (is_user_logged_in()) { + return $comment; + } + + //Don't process captcha for comment replies inside admin menu + if (isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'replyto-comment' && + (check_ajax_referer('replyto-comment', '_ajax_nonce', false) || check_ajax_referer('replyto-comment', '_ajax_nonce-replyto-comment', false))) { + return $comment; + } + + //Don't do captcha for pingback/trackback + if ($comment['comment_type'] != '' && $comment['comment_type'] != 'comment') { + return $comment; + } + + if (isset($_REQUEST['aiowps-captcha-answer'])) + { + // If answer is empty + if ($_REQUEST['aiowps-captcha-answer'] == ''){ + wp_die( __('Please enter an answer in the CAPTCHA field.', 'all-in-one-wp-security-and-firewall' ) ); + } + $captcha_answer = trim($_REQUEST['aiowps-captcha-answer']); + $captcha_secret_string = $aio_wp_security->configs->get_value('aiowps_captcha_secret_key'); + $submitted_encoded_string = base64_encode($_POST['aiowps-captcha-temp-string'].$captcha_secret_string.$captcha_answer); + $trans_handle = sanitize_text_field($_POST['aiowps-captcha-string-info']); + $captcha_string_info_trans = (AIOWPSecurity_Utility::is_multisite_install() ? get_site_transient('aiowps_captcha_string_info_'.$trans_handle) : get_transient('aiowps_captcha_string_info_'.$trans_handle)); + + if ($captcha_string_info_trans === $submitted_encoded_string){ + //Correct answer given + return($comment); + }else{ + //Wrong answer + wp_die( __('Error: You entered an incorrect CAPTCHA answer. Please go back and try again.', 'all-in-one-wp-security-and-firewall')); + } + } + } + + function process_lost_password_form_post() + { + global $aio_wp_security; + //Check if captcha enabled + if ($aio_wp_security->configs->get_value('aiowps_enable_lost_password_captcha') == '1') + { + if (array_key_exists('aiowps-captcha-answer', $_POST)) //If the lost pass form with captcha was submitted then do some processing + { + isset($_POST['aiowps-captcha-answer'])?($captcha_answer = strip_tags(trim($_POST['aiowps-captcha-answer']))):($captcha_answer = ''); + $captcha_secret_string = $aio_wp_security->configs->get_value('aiowps_captcha_secret_key'); + $submitted_encoded_string = base64_encode($_POST['aiowps-captcha-temp-string'].$captcha_secret_string.$captcha_answer); + $trans_handle = sanitize_text_field($_POST['aiowps-captcha-string-info']); + $captcha_string_info_trans = (AIOWPSecurity_Utility::is_multisite_install() ? get_site_transient('aiowps_captcha_string_info_'.$trans_handle) : get_transient('aiowps_captcha_string_info_'.$trans_handle)); + + if($submitted_encoded_string !== $captcha_string_info_trans) + { + add_filter('allow_password_reset', array(&$this, 'add_lostpassword_captcha_error_msg')); + } + } + } + + } + + function add_lostpassword_captcha_error_msg() + { + //Insert an error just before the password reset process kicks in + return new WP_Error('aiowps_captcha_error',__('ERROR: Your answer was incorrect - please try again.', 'all-in-one-wp-security-and-firewall')); + } + + function check_404_event() + { + if(is_404()){ + //This means a 404 event has occurred - let's log it! + AIOWPSecurity_Utility::event_logger('404'); + } + + } + + function buddy_press_signup_validate_captcha($errors) + { + global $bp, $aio_wp_security; + //Check if captcha enabled + if (array_key_exists('aiowps-captcha-answer', $_POST)) //If the register form with captcha was submitted then do some processing + { + isset($_POST['aiowps-captcha-answer'])?$captcha_answer = strip_tags(trim($_POST['aiowps-captcha-answer'])): $captcha_answer = ''; + $captcha_secret_string = $aio_wp_security->configs->get_value('aiowps_captcha_secret_key'); + $submitted_encoded_string = base64_encode($_POST['aiowps-captcha-temp-string'].$captcha_secret_string.$captcha_answer); + $trans_handle = sanitize_text_field($_POST['aiowps-captcha-string-info']); + $captcha_string_info_trans = (AIOWPSecurity_Utility::is_multisite_install() ? get_site_transient('aiowps_captcha_string_info_'.$trans_handle) : get_transient('aiowps_captcha_string_info_'.$trans_handle)); + + if($submitted_encoded_string !== $captcha_string_info_trans) + { + //This means a wrong answer was entered + $bp->signup->errors['aiowps-captcha-answer'] = __('Your CAPTCHA answer was incorrect - please try again.', 'all-in-one-wp-security-and-firewall'); + } + } + + return; + } + + //Displays a notice message if the plugin was reactivated after being initially deactivated. + //Notice message gives users option of re-applying the aiowps rules which were deleted from the .htaccess when deactivation occurred + function reapply_htaccess_rules_notice() + { + if (get_option('aiowps_temp_configs') !== FALSE){ + echo '

      Would you like All In One WP Security & Firewall to re-insert the security rules in your .htaccess file which were cleared when you deactivated the plugin?  Yes  No

      '; + } + } + + //This is a fix for cases when the password reset URL in the email was not decoding all html entities properly + function decode_reset_pw_msg($message, $key, $user_login, $user_data) + { + global $aio_wp_security; + $message = html_entity_decode($message); + return $message; + } + + function modify_registration_page_messages($errors, $redirect_to) + { + if( isset($_GET['checkemail']) && 'registered' == $_GET['checkemail'] ){ + if(is_wp_error($errors)){ + $errors->remove('registered'); + $pending_approval_msg = __('Your registration is pending approval.', 'all-in-one-wp-security-and-firewall'); + $pending_approval_msg = apply_filters('aiowps_pending_registration_message', $pending_approval_msg); + $errors->add('registered', $pending_approval_msg, array('registered'=>'message')); + } + } + return $errors; + } +} \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-installer.php b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-installer.php new file mode 100644 index 0000000..6ef26b1 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-installer.php @@ -0,0 +1,213 @@ +blogid; + // Get all blog ids + $blogids = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs"); + foreach ($blogids as $blog_id) { + switch_to_blog($blog_id); + AIOWPSecurity_Installer::create_db_tables(); + AIOWPSecurity_Configure_Settings::add_option_values(); + } + AIOWPSecurity_Installer::create_db_backup_dir(); //Create a backup dir in the WP uploads directory + switch_to_blog($old_blog); + return; + } + } + AIOWPSecurity_Installer::create_db_tables(); + AIOWPSecurity_Configure_Settings::add_option_values(); + AIOWPSecurity_Installer::create_db_backup_dir(); //Create a backup dir in the WP uploads directory + AIOWPSecurity_Installer::miscellaneous_tasks(); + } + + static function create_db_tables() + { + global $wpdb; + require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); + + //"User Login" related tables + $lockdown_tbl_name = AIOWPSEC_TBL_LOGIN_LOCKDOWN; + $failed_login_tbl_name = AIOWPSEC_TBL_FAILED_LOGINS; + $user_login_activity_tbl_name = AIOWPSEC_TBL_USER_LOGIN_ACTIVITY; + $aiowps_global_meta_tbl_name = AIOWPSEC_TBL_GLOBAL_META_DATA; + $aiowps_event_tbl_name = AIOWPSEC_TBL_EVENTS; + $perm_block_tbl_name = AIOWPSEC_TBL_PERM_BLOCK; + + $charset_collate = ''; + if (!empty($wpdb->charset)) { + $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset"; + } else { + $charset_collate = "DEFAULT CHARSET=utf8"; + } + if (!empty($wpdb->collate)) { + $charset_collate .= " COLLATE $wpdb->collate"; + } + + $ld_tbl_sql = "CREATE TABLE " . $lockdown_tbl_name . " ( + id bigint(20) NOT NULL AUTO_INCREMENT, + user_id bigint(20) NOT NULL, + user_login VARCHAR(150) NOT NULL, + lockdown_date datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + release_date datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + failed_login_ip varchar(100) NOT NULL DEFAULT '', + lock_reason varchar(128) NOT NULL DEFAULT '', + unlock_key varchar(128) NOT NULL DEFAULT '', + PRIMARY KEY (id) + )" . $charset_collate . ";"; + dbDelta($ld_tbl_sql); + + $fl_tbl_sql = "CREATE TABLE " . $failed_login_tbl_name . " ( + id bigint(20) NOT NULL AUTO_INCREMENT, + user_id bigint(20) NOT NULL, + user_login VARCHAR(150) NOT NULL, + failed_login_date datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + login_attempt_ip varchar(100) NOT NULL DEFAULT '', + PRIMARY KEY (id) + )" . $charset_collate . ";"; + dbDelta($fl_tbl_sql); + + $ula_tbl_sql = "CREATE TABLE " . $user_login_activity_tbl_name . " ( + id bigint(20) NOT NULL AUTO_INCREMENT, + user_id bigint(20) NOT NULL, + user_login VARCHAR(150) NOT NULL, + login_date datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + logout_date datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + login_ip varchar(100) NOT NULL DEFAULT '', + login_country varchar(150) NOT NULL DEFAULT '', + browser_type varchar(150) NOT NULL DEFAULT '', + PRIMARY KEY (id) + )" . $charset_collate . ";"; + dbDelta($ula_tbl_sql); + + $gm_tbl_sql = "CREATE TABLE " . $aiowps_global_meta_tbl_name . " ( + meta_id bigint(20) NOT NULL auto_increment, + date_time datetime NOT NULL default '0000-00-00 00:00:00', + meta_key1 varchar(255) NOT NULL, + meta_key2 varchar(255) NOT NULL, + meta_key3 varchar(255) NOT NULL, + meta_key4 varchar(255) NOT NULL, + meta_key5 varchar(255) NOT NULL, + meta_value1 varchar(255) NOT NULL, + meta_value2 text NOT NULL, + meta_value3 text NOT NULL, + meta_value4 longtext NOT NULL, + meta_value5 longtext NOT NULL, + PRIMARY KEY (meta_id) + )" . $charset_collate . ";"; + dbDelta($gm_tbl_sql); + + $evt_tbl_sql = "CREATE TABLE " . $aiowps_event_tbl_name . " ( + id bigint(20) NOT NULL AUTO_INCREMENT, + event_type VARCHAR(150) NOT NULL DEFAULT '', + username VARCHAR(150), + user_id bigint(20), + event_date datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + ip_or_host varchar(100), + referer_info varchar(255), + url varchar(255), + country_code varchar(50), + event_data longtext, + PRIMARY KEY (id) + )" . $charset_collate . ";"; + dbDelta($evt_tbl_sql); + + $pb_tbl_sql = "CREATE TABLE " . $perm_block_tbl_name . " ( + id bigint(20) NOT NULL AUTO_INCREMENT, + blocked_ip varchar(100) NOT NULL DEFAULT '', + block_reason varchar(128) NOT NULL DEFAULT '', + country_origin varchar(50) NOT NULL DEFAULT '', + blocked_date datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + PRIMARY KEY (id) + )" . $charset_collate . ";"; + dbDelta($pb_tbl_sql); + + update_option("aiowpsec_db_version", AIO_WP_SECURITY_DB_VERSION); + } + + static function create_db_backup_dir() + { + global $aio_wp_security; + //Create our folder in the "wp-content" directory + $aiowps_dir = WP_CONTENT_DIR . '/' . AIO_WP_SECURITY_BACKUPS_DIR_NAME; + if (!is_dir($aiowps_dir)) { + mkdir($aiowps_dir, 0755, true); + //Let's also create an empty index.html file in this folder + $index_file = $aiowps_dir . '/index.html'; + $handle = fopen($index_file, 'w'); //or die('Cannot open file: '.$index_file); + fclose($handle); + } + $server_type = AIOWPSecurity_Utility::get_server_type(); + //Only create .htaccess if server is the right type + if ($server_type == 'apache' || $server_type == 'litespeed') { + $file = $aiowps_dir . '/.htaccess'; + if (!file_exists($file)) { + //Create an .htacces file + //Write some rules which will only allow people originating from wp admin page to download the DB backup + $rules = ''; + $rules .= 'order deny,allow' . PHP_EOL; + $rules .= 'deny from all' . PHP_EOL; + $write_result = file_put_contents($file, $rules); + if ($write_result === false) { + $aio_wp_security->debug_logger->log_debug("Creation of .htaccess file in " . AIO_WP_SECURITY_BACKUPS_DIR_NAME . " directory failed!", 4); + } + } + } + } + + static function reactivation_tasks() + { + global $aio_wp_security; + $temp_cfgs = get_option('aiowps_temp_configs'); + if ($temp_cfgs !== FALSE) { + //Case where previously installed plugin was reactivated + //Let's copy the original configs back to the options table + $updated = update_option('aio_wp_security_configs', $temp_cfgs); + if ($updated === FALSE) { + $aio_wp_security->debug_logger->log_debug("AIOWPSecurity_Installer::run_installer() - Update of option settings failed upon plugin activation!", 4); + } + $aio_wp_security->configs->configs = $temp_cfgs; //copy the original configs to memory + //Now let's write any rules to the .htaccess file if necessary + $res = AIOWPSecurity_Utility_Htaccess::write_to_htaccess(); + + if ( !$res ) { + $aio_wp_security->debug_logger->log_debug("AIOWPSecurity_Deactivation::run_deactivation_tasks() - Could not write to the .htaccess file. Please check the file permissions.", 4); + return false; + } + delete_option('aiowps_temp_configs'); + return true; + } else { + $aio_wp_security->debug_logger->log_debug("AIOWPSecurity_Deactivation::run_deactivation_tasks() - Original config settings not found!", 4); + return false; + } + } + + static function miscellaneous_tasks() + { + } + + +// //Read entire contents of file at activation time and store serialized contents in our global_meta table +// static function backup_file_contents_to_db_at_activation($src_file, $key_description) +// { +// //First check if a backup entry already exists in the global_meta table +// global $wpdb; +// $aiowps_global_meta_tbl_name = AIOWPSEC_TBL_GLOBAL_META_DATA; +// $resultset = $wpdb->get_row("SELECT * FROM $aiowps_global_meta_tbl_name WHERE meta_key1 = '$key_description'", OBJECT); +// if($resultset){ +// return; //Don't override original backup if one exists - so just return +// } +// +// //Otherwise read the contents of the file and store in global_meta table +// AIOWPSecurity_Utility_File::backup_file_contents_to_db($src_file, $key_description); +// return; +// } +} diff --git a/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-process-renamed-login-page.php b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-process-renamed-login-page.php new file mode 100644 index 0000000..332cb99 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-process-renamed-login-page.php @@ -0,0 +1,193 @@ +get_error_code() === 'already_active' || $result->get_error_code() === 'blog_taken')){ + $aiowps_new_login_url = AIOWPSecurity_Process_Renamed_Login_Page::new_login_url(); + wp_safe_redirect($aiowps_new_login_url . (!empty($_SERVER['QUERY_STRING']) ? '?' . $_SERVER['QUERY_STRING'] : '')); + die; + } + } + } + } + AIOWPSecurity_Process_Renamed_Login_Page::aiowps_set_404(); + } + + } + + function aiowps_site_url($url, $path) + { + return $this->aiowps_filter_wp_login_file($url); + } + + function aiowps_wp_redirect($location, $status) + { + return $this->aiowps_filter_wp_login_file($location); + } + + //Filter register link on the login page + function register_link($registration_url) + { + return $this->aiowps_filter_wp_login_file($registration_url); + } + + //Filter all login url strings on the login page + function aiowps_filter_wp_login_file($url) + { + if (strpos($url, 'wp-login.php') !== false){ + $args = explode( '?', $url ); + if (isset($args[1])){ + if (strpos($args[1], 'action=postpass') !== FALSE){ + return $url; //Don't reveal the secret URL in the post password action url + } + parse_str($args[1], $args); + $url = esc_url(add_query_arg($args, AIOWPSecurity_Process_Renamed_Login_Page::new_login_url())); + $url = html_entity_decode($url); + }else{ + $url = AIOWPSecurity_Process_Renamed_Login_Page::new_login_url(); + } + } + return $url; + } + + static function renamed_login_init_tasks() + { + global $aio_wp_security; + + //The following will process the native wordpress post password protection form + //Normally this is done by wp-login.php file but we cannot use that since the login page has been renamed + $action = isset($_GET['action'])?strip_tags($_GET['action']):''; + if(isset($_POST['post_password']) && $action == 'postpass'){ + require_once ABSPATH . 'wp-includes/class-phpass.php'; + $hasher = new PasswordHash( 8, true ); + + /** + * Filter the life span of the post password cookie. + * + * By default, the cookie expires 10 days from creation. To turn this + * into a session cookie, return 0. + * + * @since 3.7.0 + * + * @param int $expires The expiry time, as passed to setcookie(). + */ + $expire = apply_filters( 'post_password_expires', time() + 10 * DAY_IN_SECONDS ); + setcookie( 'wp-postpass_' . COOKIEHASH, $hasher->HashPassword( wp_unslash( $_POST['post_password'] ) ), $expire, COOKIEPATH ); + + wp_safe_redirect( wp_get_referer() ); + exit(); + } + + //case where someone attempting to reach wp-admin + if (is_admin() && !is_user_logged_in() && !defined('DOING_AJAX')){ + //Fix to prevent fatal error caused by some themes and Yoast SEO + wp_die( __( 'Not available.', 'all-in-one-wp-security-and-firewall' ), 403 ); + } + + //case where someone attempting to reach wp-login + if(isset($_SERVER['REQUEST_URI']) && strpos( $_SERVER['REQUEST_URI'], 'wp-login.php' ) && !is_user_logged_in()){ + //Check if the maintenance (lockout) mode is active - if so prevent access to site by not displaying 404 page! + if($aio_wp_security->configs->get_value('aiowps_site_lockout') == '1'){ + AIOWPSecurity_WP_Loaded_Tasks::site_lockout_tasks(); + }else{ + AIOWPSecurity_Process_Renamed_Login_Page::aiowps_set_404(); + } + } + + //case where someone attempting to reach the standard register or signup pages + if(isset( $_SERVER['REQUEST_URI'] ) && strpos( $_SERVER['REQUEST_URI'], 'wp-register.php' ) || + isset( $_SERVER['REQUEST_URI'] ) && strpos( $_SERVER['REQUEST_URI'], 'wp-signup.php' )){ + //Check if the maintenance (lockout) mode is active - if so prevent access to site by not displaying 404 page! + if($aio_wp_security->configs->get_value('aiowps_site_lockout') == '1'){ + AIOWPSecurity_WP_Loaded_Tasks::site_lockout_tasks(); + }else{ + AIOWPSecurity_Process_Renamed_Login_Page::aiowps_set_404(); + } + } + + $parsed_url = parse_url($_SERVER['REQUEST_URI']); + + $login_slug = $aio_wp_security->configs->get_value('aiowps_login_page_slug'); + $home_url_with_slug = home_url($login_slug, 'relative'); + + /* + * Compatibility fix for WPML plugin + */ + if (function_exists('icl_object_id') && strpos($home_url_with_slug,$login_slug)){ + $home_url_with_slug = home_url($login_slug); + function qtranxf_init_language() {} + } + + /* + * *** Compatibility fix for qTranslate-X plugin *** + * qTranslate-X plugin modifies the result for the following command by adding the protocol and host to the url path: + * home_url($login_slug, 'relative'); + * Therefore we will remove the protocol and host for the following cases: + * qTranslate-X is active AND the URL being accessed contains the secret slug + */ + if (function_exists('qtranxf_init_language') && strpos($home_url_with_slug,$login_slug)){ + $parsed_home_url_with_slug = parse_url($home_url_with_slug); + $home_url_with_slug = $parsed_home_url_with_slug['path']; //this will return just the path minus the protocol and host + } + + if(untrailingslashit($parsed_url['path']) === $home_url_with_slug + || (!get_option('permalink_structure') && isset($_GET[$login_slug]))){ + if(empty($action) && is_user_logged_in()){ + //if user is already logged in but tries to access the renamed login page, send them to the dashboard + AIOWPSecurity_Utility::redirect_to_url(AIOWPSEC_WP_URL."/wp-admin"); + }else{ + status_header( 200 ); + require_once(AIO_WP_SECURITY_PATH . '/other-includes/wp-security-rename-login-feature.php' ); + die; + } + } + } + + static function new_login_url() + { + global $aio_wp_security; + $login_slug = $aio_wp_security->configs->get_value('aiowps_login_page_slug'); + if(get_option('permalink_structure')){ + return trailingslashit(trailingslashit(home_url()) . $login_slug); + }else{ + return trailingslashit(home_url()) . '?' . $login_slug; + } + } + + static function aiowps_set_404() + { + global $wp_query; + do_action('aiopws_before_set_404'); //This hook is for themes which produce a fatal error when the rename login feature is enabled and someone visits "wp-admin" slug directly + + status_header(404); + $wp_query->set_404(); + if ((($template = get_404_template()) || ($template = get_index_template())) + && ($template = apply_filters('template_include', $template))){ + include($template); + } + die; + } + +} \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-login.php b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-login.php new file mode 100644 index 0000000..05b5d8e --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-login.php @@ -0,0 +1,563 @@ +key_login_msg = 'aiowps_login_msg_id'; + // As a first authentication step, check if user's IP is locked. + add_filter('authenticate', array($this, 'block_ip_if_locked'), 1, 0); + // Check whether user needs to be manually approved after default WordPress authenticate hooks (with priority 20). + add_filter('authenticate', array($this, 'check_manual_registration_approval'), 30, 1); + // Check login captcha + add_filter('authenticate', array($this, 'check_captcha'), 30, 1); + // As a last authentication step, perform post authentication steps + add_filter('authenticate', array($this, 'post_authenticate'), 100, 3); + add_action('aiowps_force_logout_check', array($this, 'aiowps_force_logout_action_handler')); + add_action('clear_auth_cookie', array($this, 'wp_logout_action_handler')); + add_filter('login_message', array($this, 'aiowps_login_message')); //WP filter to add or modify messages on the login page + } + /** + * Terminate the execution via wp_die with 503 status code, if current + * user's IP is currently locked. + * + * @global AIO_WP_Security $aio_wp_security + */ + function block_ip_if_locked() + { + global $aio_wp_security; + $user_locked = $this->check_locked_user(); + if ( $user_locked != NULL ) { + $aio_wp_security->debug_logger->log_debug("Login attempt from blocked IP range - ".$user_locked['failed_login_ip'],2); + // Allow the error message to be filtered. + $error_msg = apply_filters( 'aiowps_ip_blocked_error_msg', __('ERROR: Access from your IP address has been blocked for security reasons. Please contact the administrator.', 'all-in-one-wp-security-and-firewall') ); + // If unlock requests are allowed, add the "Request Unlock" button to the message. + if( $aio_wp_security->configs->get_value('aiowps_allow_unlock_requests') == '1' ) + { + $error_msg .= $this->get_unlock_request_form(); + } + wp_die($error_msg, __('Service Temporarily Unavailable', 'all-in-one-wp-security-and-firewall'), 503); + } + } + /** + * Check login captcha (if enabled). + * @global AIO_WP_Security $aio_wp_security + * @param WP_Error|WP_User $user + * @return WP_Error|WP_User + */ + function check_captcha($user) + { + global $aio_wp_security; + if ( is_wp_error($user) ) + { + // Authentication has failed already at some earlier step. + return $user; + } + if ( ! (isset($_POST['log']) && isset($_POST['pwd'])) ) + { + // XML-RPC authentication (not via wp-login.php), nothing to do here. + return $user; + } + if ( $aio_wp_security->configs->get_value('aiowps_enable_login_captcha') != '1' ) + { + // Captcha not enabled, nothing to do here. + return $user; + } + $captcha_error = new WP_Error('authentication_failed', __('ERROR: Your answer was incorrect - please try again.', 'all-in-one-wp-security-and-firewall')); + $captcha_answer = filter_input(INPUT_POST, 'aiowps-captcha-answer', FILTER_VALIDATE_INT); + if ( is_null($captcha_answer) || ($captcha_answer === false) ) + { + // null - no post data, false - not an integer + return $captcha_error; + } + $captcha_temp_string = filter_input(INPUT_POST, 'aiowps-captcha-temp-string', FILTER_SANITIZE_STRING); + if ( is_null($captcha_temp_string) ) + { + return $captcha_error; + } + $captcha_secret_string = $aio_wp_security->configs->get_value('aiowps_captcha_secret_key'); + $submitted_encoded_string = base64_encode($captcha_temp_string.$captcha_secret_string.$captcha_answer); + $trans_handle = sanitize_text_field(filter_input(INPUT_POST, 'aiowps-captcha-string-info', FILTER_SANITIZE_STRING)); + $captcha_string_info_trans = (AIOWPSecurity_Utility::is_multisite_install() ? get_site_transient('aiowps_captcha_string_info_'.$trans_handle) : get_transient('aiowps_captcha_string_info_'.$trans_handle)); + if ( $submitted_encoded_string !== $captcha_string_info_trans ) + { + return $captcha_error; + } + return $user; + } + /** + * Check, whether $user needs to be manually approved by site admin yet. + * @global AIO_WP_Security $aio_wp_security + * @param WP_Error|WP_User $user + * @param string $username + * @param string $password + * @return WP_Error|WP_User + */ + function check_manual_registration_approval($user) + { + global $aio_wp_security; + if ( !($user instanceof WP_User) ) { + // Not a WP_User - nothing to do here. + return $user; + } + //Check if auto pending new account status feature is enabled + if ($aio_wp_security->configs->get_value('aiowps_enable_manual_registration_approval') == '1') + { + $aiowps_account_status = get_user_meta($user->ID, 'aiowps_account_status', TRUE); + if ($aiowps_account_status == 'pending') { + // Account needs to be activated yet + return new WP_Error('account_pending', __('ACCOUNT PENDING: Your account is currently not active. An administrator needs to activate your account before you can login.', 'all-in-one-wp-security-and-firewall')); + } + } + return $user; + } + /** + * Handle post authentication steps (in case of failed login): + * - increment number of failed logins for $username + * - (optionally) lock the user + * - (optionally) display a generic error message + * @global AIO_WP_Security $aio_wp_security + * @param WP_Error|WP_User $user + * @param string $username + * @param string $password + * @return WP_Error|WP_User + */ + function post_authenticate($user, $username, $password) + { + global $aio_wp_security; + if ( !is_wp_error($user) ) { + // Authentication has been successful, there's nothing to do here. + return $user; + } + if ( empty($username) || empty($password) ) { + // Neither log nor block login attempts with empty username or password. + return $user; + } + if ( $user->get_error_code() === 'account_pending' ) { + // Neither log nor block users attempting to log in before their registration is approved. + return; + } + // Login failed for non-trivial reason + $this->increment_failed_logins($username); + if ( $aio_wp_security->configs->get_value('aiowps_enable_login_lockdown') == '1' ) + { + // Too many failed logins from user's IP? + $login_attempts_permitted = absint($aio_wp_security->configs->get_value('aiowps_max_login_attempts')); + $too_many_failed_logins = $login_attempts_permitted <= $this->get_login_fail_count(); + // Is an invalid username or email the reason for login error? + $invalid_username = ($user->get_error_code() === 'invalid_username' || $user->get_error_code() == 'invalid_email'); + // Should an invalid username be immediately locked? + $invalid_username_lockdown = $aio_wp_security->configs->get_value('aiowps_enable_invalid_username_lockdown') == '1'; + $lock_invalid_username = $invalid_username && $invalid_username_lockdown; + // Should an invalid username be blocked as per blacklist? + $instant_lockout_users_list = $aio_wp_security->configs->get_value('aiowps_instantly_lockout_specific_usernames'); + if ( !is_array($instant_lockout_users_list) ) { + $instant_lockout_users_list = array(); + } + $username_blacklisted = $invalid_username && in_array($username, $instant_lockout_users_list); + if ( $too_many_failed_logins || $lock_invalid_username || $username_blacklisted ) + { + $this->lock_the_user($username, 'login_fail'); + } + } + if ( $aio_wp_security->configs->get_value('aiowps_set_generic_login_msg') == '1' ) + { + // Return generic error message if configured + return new WP_Error('authentication_failed', __('ERROR: Invalid login credentials.', 'all-in-one-wp-security-and-firewall')); + } + return $user; + } + /* + * This function queries the aiowps_login_lockdown table. + * If the release_date has not expired AND the current visitor IP addr matches + * it will return a record + */ + function check_locked_user() + { + global $wpdb; + $login_lockdown_table = AIOWPSEC_TBL_LOGIN_LOCKDOWN; + $ip = AIOWPSecurity_Utility_IP::get_user_ip_address(); //Get the IP address of user + $ip_range = AIOWPSecurity_Utility_IP::get_sanitized_ip_range($ip); //Get the IP range of the current user + if(empty($ip_range)) return false; + $locked_user = $wpdb->get_row("SELECT * FROM $login_lockdown_table " . + "WHERE release_date > now() AND " . + "failed_login_ip LIKE '" . esc_sql($ip_range) . "%'", ARRAY_A); + return $locked_user; + } + /* + * This function queries the aiowps_failed_logins table and returns the number of failures for current IP range within allowed failure period + */ + function get_login_fail_count() + { + global $wpdb, $aio_wp_security; + $failed_logins_table = AIOWPSEC_TBL_FAILED_LOGINS; + $login_retry_interval = $aio_wp_security->configs->get_value('aiowps_retry_time_period'); + $ip = AIOWPSecurity_Utility_IP::get_user_ip_address(); //Get the IP address of user + $ip_range = AIOWPSecurity_Utility_IP::get_sanitized_ip_range($ip); //Get the IP range of the current user + if(empty($ip_range)) return false; + $login_failures = $wpdb->get_var("SELECT COUNT(ID) FROM $failed_logins_table " . + "WHERE failed_login_date + INTERVAL " . + $login_retry_interval . " MINUTE > now() AND " . + "login_attempt_ip LIKE '" . esc_sql($ip_range) . "%'"); + return $login_failures; + } + /** + * Adds an entry to the `aiowps_login_lockdown` table. + * @param string $username User's username or email + * @param string $lock_reason + */ + function lock_the_user($username, $lock_reason='login_fail') + { + global $wpdb, $aio_wp_security; + $login_lockdown_table = AIOWPSEC_TBL_LOGIN_LOCKDOWN; + $lockout_time_length = $aio_wp_security->configs->get_value('aiowps_lockout_time_length'); + $ip = AIOWPSecurity_Utility_IP::get_user_ip_address(); //Get the IP address of user + $ip_range = AIOWPSecurity_Utility_IP::get_sanitized_ip_range($ip); //Get the IP range of the current user + if(empty($ip_range)) return; + $user = is_email($username) ? get_user_by('email', $username) : get_user_by('login', $username); //Returns WP_User object if exists + $ip_range = apply_filters('aiowps_before_lockdown', $ip_range); + if ($user) + { + //If the login attempt was made using a valid user set variables for DB storage later on + $user_id = $user->ID; + } else { + //If the login attempt was made using a non-existent user then let's set user_id to blank and record the attempted user login name for DB storage later on + $user_id = 0; + } + $ip_range_str = esc_sql($ip_range).'.*'; + $insert = "INSERT INTO " . $login_lockdown_table . " (user_id, user_login, lockdown_date, release_date, failed_login_IP, lock_reason) " . + "VALUES (' . $user_id . ', '" . $username . "', now(), date_add(now(), INTERVAL " . + $lockout_time_length . " MINUTE), '" . $ip_range_str . "', '" . $lock_reason . "')"; + $result = $wpdb->query($insert); + if ($result > 0) + { + do_action('aiowps_lockdown_event', $ip_range, $username); + $this->send_ip_lock_notification_email($username, $ip_range, $ip); + $aio_wp_security->debug_logger->log_debug("The following IP address range has been locked out for exceeding the maximum login attempts: ".$ip_range,2);//Log the lockdown event + } + else if ($result === FALSE) + { + $aio_wp_security->debug_logger->log_debug("Error inserting record into ".$login_lockdown_table,4);//Log the highly unlikely event of DB error + } + } + /** + * Adds an entry to the `aiowps_failed_logins` table. + * @param string $username User's username or email + */ + function increment_failed_logins($username) + { + global $wpdb, $aio_wp_security; + //$login_attempts_permitted = $aio_wp_security->configs->get_value('aiowps_max_login_attempts'); + //$lockout_time_length = $aio_wp_security->configs->get_value('aiowps_lockout_time_length'); + $login_fails_table = AIOWPSEC_TBL_FAILED_LOGINS; + $ip = AIOWPSecurity_Utility_IP::get_user_ip_address(); //Get the IP address of user + $ip_range = AIOWPSecurity_Utility_IP::get_sanitized_ip_range($ip); //Get the IP range of the current user + if(empty($ip_range)) return; + $user = is_email($username) ? get_user_by('email', $username) : get_user_by('login', $username); //Returns WP_User object if it exists + if ($user) + { + //If the login attempt was made using a valid user set variables for DB storage later on + $user_id = $user->ID; + } else { + //If the login attempt was made using a non-existent user then let's set user_id to blank and record the attempted user login name for DB storage later on + $user_id = 0; + } + $ip_range_str = esc_sql($ip_range).'.*'; + $now = date_i18n( 'Y-m-d H:i:s' ); + $data = array('user_id' => $user_id, 'user_login' => $username, 'failed_login_date' => $now, 'login_attempt_ip' => $ip_range_str); + $format = array('%d', '%s', '%s', '%s'); + $result = $wpdb->insert($login_fails_table, $data, $format); + if ($result === FALSE) + { + $aio_wp_security->debug_logger->log_debug("Error inserting record into ".$login_fails_table,4);//Log the highly unlikely event of DB error + } + } + /** + * @param string $username User's username or email + */ + function send_ip_lock_notification_email($username, $ip_range, $ip) + { + global $aio_wp_security; + $email_notification_enabled = $aio_wp_security->configs->get_value('aiowps_enable_email_notify'); + if ($email_notification_enabled == 1) + { + $to_email_address = $aio_wp_security->configs->get_value('aiowps_email_address'); + $subject = '['.get_option('home').'] '. __('Site Lockout Notification','all-in-one-wp-security-and-firewall'); + $email_msg = __('A lockdown event has occurred due to too many failed login attempts or invalid username:','all-in-one-wp-security-and-firewall')."\n"; + $email_msg .= __('Username:', 'all-in-one-wp-security-and-firewall') . ' ' . $username . "\n"; + $email_msg .= __('IP Address:', 'all-in-one-wp-security-and-firewall') . ' ' . $ip . "\n\n"; + $email_msg .= __('IP Range:', 'all-in-one-wp-security-and-firewall') . ' ' . $ip_range . '.*' . "\n\n"; + $email_msg .= __("Log into your site's WordPress administration panel to see the duration of the lockout or to unlock the user.','all-in-one-wp-security-and-firewall") . "\n"; + $site_title = get_bloginfo( 'name' ); + $from_name = empty($site_title)?'WordPress':$site_title; + $email_header = 'From: '.$from_name.' <'.get_bloginfo('admin_email').'>' . "\r\n\\"; + $sendMail = wp_mail($to_email_address, $subject, $email_msg, $email_header); + if(FALSE === $sendMail){ + $aio_wp_security->debug_logger->log_debug("Lockout notification email failed to send to ".$to_email_address." for IP ".$ip,4); + } + } + } + + /* + * This function generates a special random string and inserts into the lockdown table for the relevant user + * It then generates an unlock request link which will be used to send to the user + */ + static function generate_unlock_request_link($ip_range) + { + //Get the locked user row from lockdown table + global $wpdb, $aio_wp_security; + $unlock_link = ''; + $lockdown_table_name = AIOWPSEC_TBL_LOGIN_LOCKDOWN; + $secret_rand_key = (md5(uniqid(rand(), true))); + $sql = $wpdb->prepare("UPDATE $lockdown_table_name SET unlock_key = '$secret_rand_key' WHERE release_date > now() AND failed_login_ip LIKE %s","%".esc_sql($ip_range)."%"); + $res = $wpdb->query($sql); + if($res == NULL){ + $aio_wp_security->debug_logger->log_debug("No locked user found with IP range ".$ip_range,4); + return false; + }else{ + $query_param = array('aiowps_auth_key'=>$secret_rand_key); + $wp_site_url = AIOWPSEC_WP_URL; + $unlock_link = esc_url(add_query_arg($query_param, $wp_site_url)); + } + return $unlock_link; + } + /* + * This function will process an unlock request when someone clicks on the special URL + * It will check if the special random code matches that in lockdown table for the relevant user + * If so, it will unlock the user + */ + static function process_unlock_request($unlock_key) + { + global $wpdb, $aio_wp_security; + $lockdown_table_name = AIOWPSEC_TBL_LOGIN_LOCKDOWN; + + $unlock_command = $wpdb->prepare( "UPDATE ".$lockdown_table_name." SET release_date = now() WHERE unlock_key = %s", $unlock_key ); + $result = $wpdb->query($unlock_command); + if($result === false) + { + $aio_wp_security->debug_logger->log_debug("Error unlocking user with unlock_key ".$unlock_key,4); + } + else + { + if($aio_wp_security->configs->get_value('aiowps_enable_rename_login_page')=='1'){ + if (get_option('permalink_structure')){ + $home_url = trailingslashit(home_url()); + }else{ + $home_url = trailingslashit(home_url()) . '?'; + } + $login_url = $home_url.$aio_wp_security->configs->get_value('aiowps_login_page_slug'); + AIOWPSecurity_Utility::redirect_to_url($login_url); + }else{ + AIOWPSecurity_Utility::redirect_to_url(wp_login_url()); + } + } + } + + /* + * This function sends an unlock request email to a locked out user + */ + static function send_unlock_request_email($email, $unlock_link) + { + global $aio_wp_security; + $subject = '['.get_option('siteurl').'] '. __('Unlock Request Notification','all-in-one-wp-security-and-firewall'); + $email_msg + = sprintf(__('You have requested for the account with email address %s to be unlocked. Please click the link below to unlock your account:','all-in-one-wp-security-and-firewall'), $email) . "\n" + . sprintf(__('Unlock link: %s', 'all-in-one-wp-security-and-firewall'), $unlock_link) . "\n\n" + . __('After clicking the above link you will be able to login to the WordPress administration panel.', 'all-in-one-wp-security-and-firewall') . "\n" + ; + $site_title = get_bloginfo( 'name' ); + $from_name = empty($site_title)?'WordPress':$site_title; + $email_header = 'From: '.$from_name.' <'.get_bloginfo('admin_email').'>' . "\r\n\\"; + $sendMail = wp_mail($email, $subject, $email_msg, $email_header); + if ( false === $sendMail ) { + $aio_wp_security->debug_logger->log_debug("Unlock Request Notification email failed to send to " . $email, 4); + } + } + + /* + * This function will check the settings and log the user after the configured time period + */ + function aiowps_force_logout_action_handler() + { + global $aio_wp_security; + //$aio_wp_security->debug_logger->log_debug("Force Logout - Checking if any user need to be logged out..."); + if($aio_wp_security->configs->get_value('aiowps_enable_forced_logout')=='1') //if this feature is enabled then do something + { + if(is_user_logged_in()) + { + $current_user = wp_get_current_user(); + $user_id = $current_user->ID; + $current_time = date_i18n( 'Y-m-d H:i:s' ); + $login_time = $this->get_wp_user_last_login_time($user_id); + $diff = strtotime($current_time) - strtotime($login_time); + $logout_time_interval_value = $aio_wp_security->configs->get_value('aiowps_logout_time_period'); + $logout_time_interval_val_seconds = $logout_time_interval_value * 60; + if($diff > $logout_time_interval_val_seconds) + { + $aio_wp_security->debug_logger->log_debug("Force Logout - This user logged in more than (".$logout_time_interval_value.") minutes ago. Doing a force log out for the user with username: ".$current_user->user_login); + $this->wp_logout_action_handler(); //this will register the logout time/date in the logout_date column + + $curr_page_url = AIOWPSecurity_Utility::get_current_page_url(); + $after_logout_payload = array('redirect_to'=>$curr_page_url, 'msg'=>$this->key_login_msg.'=session_expired'); + //Save some of the logout redirect data to a transient + AIOWPSecurity_Utility::is_multisite_install() ? set_site_transient('aiowps_logout_payload', $after_logout_payload, 30 * 60) : set_transient('aiowps_logout_payload', $after_logout_payload, 30 * 60); + $logout_url = AIOWPSEC_WP_URL.'?aiowpsec_do_log_out=1'; + $logout_url = AIOWPSecurity_Utility::add_query_data_to_url($logout_url, 'al_additional_data', '1'); + AIOWPSecurity_Utility::redirect_to_url($logout_url); + } + } + } + } + + function get_wp_user_last_login_time($user_id) + { + $last_login = get_user_meta($user_id, 'last_login_time', true); + return $last_login; + } + static function wp_login_action_handler($user_login, $user='') + { + global $wpdb, $aio_wp_security; + $login_activity_table = AIOWPSEC_TBL_USER_LOGIN_ACTIVITY; + + if ($user == ''){ + //Try and get user object + $user = get_user_by('login', $user_login); //This should return WP_User obj + if (!$user){ + $aio_wp_security->debug_logger->log_debug("AIOWPSecurity_User_Login::wp_login_action_handler: Unable to get WP_User object for login ".$user_login,4); + return; + } + } + $login_date_time = date_i18n( 'Y-m-d H:i:s' ); + update_user_meta($user->ID, 'last_login_time', $login_date_time); //store last login time in meta table + $curr_ip_address = AIOWPSecurity_Utility_IP::get_user_ip_address(); + $insert = "INSERT INTO " . $login_activity_table . " (user_id, user_login, login_date, login_ip) " . + "VALUES ('" . $user->ID . "', '" . $user_login . "', '" . $login_date_time . "', '" . $curr_ip_address . "')"; + $result = $wpdb->query($insert); + if ($result === FALSE) + { + $aio_wp_security->debug_logger->log_debug("Error inserting record into ".$login_activity_table,4);//Log the highly unlikely event of DB error + } + + } + /** + * The handler for logout events, ie, uses the WP "clear_auth_cookies" action. + + * Modifies the login activity record for the current user by registering the logout time/date in the logout_date column. + * (NOTE: Because of the way we are doing a force logout, the "clear_auth_cookies" hook does not fire. + * upon auto logout. The current workaround is to call this function directly from the aiowps_force_logout_action_handler() when + * an auto logout occurs due to the "force logout" feature). + * + */ + function wp_logout_action_handler() + { + global $wpdb, $aio_wp_security; + $current_user = wp_get_current_user(); + $ip_addr = AIOWPSecurity_Utility_IP::get_user_ip_address(); + $user_id = $current_user->ID; + //Clean up transients table + $this->update_user_online_transient($user_id, $ip_addr); + $login_activity_table = AIOWPSEC_TBL_USER_LOGIN_ACTIVITY; + $logout_date_time = date_i18n( 'Y-m-d H:i:s' ); + $data = array('logout_date' => $logout_date_time); + $where = array('user_id' => $user_id, + 'login_ip' => $ip_addr, + 'logout_date' => '0000-00-00 00:00:00'); + $result = $wpdb->update($login_activity_table, $data, $where); + if ($result === FALSE) + { + $aio_wp_security->debug_logger->log_debug("Error inserting record into ".$login_activity_table,4);//Log the highly unlikely event of DB error + } + } + /** + * This will clean up the "users_online" transient entry for the current user. + * + */ + function update_user_online_transient($user_id, $ip_addr) + { + global $aio_wp_security; + $logged_in_users = (AIOWPSecurity_Utility::is_multisite_install() ? get_site_transient('users_online') : get_transient('users_online')); + //$logged_in_users = get_transient('users_online'); + if ($logged_in_users === false || $logged_in_users == NULL) + { + return; + } + $j = 0; + foreach ($logged_in_users as $value) + { + if ($value['user_id'] == $user_id && strcmp($value['ip_address'], $ip_addr) == 0) + { + unset($logged_in_users[$j]); + break; + } + $j++; + } + //Save the transient + AIOWPSecurity_Utility::is_multisite_install() ? set_site_transient('users_online', $logged_in_users, 30 * 60) : set_transient('users_online', $logged_in_users, 30 * 60); + //set_transient('users_online', $logged_in_users, 30 * 60); //Set transient with the data obtained above and also set the expiry to 30min + return; + } + + /** + * The handler for the WP "login_message" filter + * Adds custom messages to the other messages that appear above the login form. + * + * NOTE: This method is automatically called by WordPress for displaying + * text above the login form. + * + * @param string $message the output from earlier login_message filters + * @return string + * + */ + function aiowps_login_message($message = '') + { + global $aio_wp_security; + $msg = ''; + if(isset($_GET[$this->key_login_msg]) && !empty($_GET[$this->key_login_msg])) + { + $logout_msg = strip_tags($_GET[$this->key_login_msg]); + } + if (!empty($logout_msg)) + { + switch ($logout_msg) { + case 'session_expired': + $msg = sprintf(__('Your session has expired because it has been over %d minutes since your last login.', 'all-in-one-wp-security-and-firewall'), $aio_wp_security->configs->get_value('aiowps_logout_time_period')); + $msg .= ' ' . __('Please log back in to continue.', 'all-in-one-wp-security-and-firewall'); + break; + case 'admin_user_changed': + $msg = __('You were logged out because you just changed the "admin" username.', 'all-in-one-wp-security-and-firewall'); + $msg .= ' ' . __('Please log back in to continue.', 'all-in-one-wp-security-and-firewall'); + break; + default: + } + } + if (!empty($msg)) + { + $msg = htmlspecialchars($msg, ENT_QUOTES, 'UTF-8'); + $message .= ''; + } + return $message; + } + /** + * This function will generate an unlock request form to be inserted inside + * error message when user gets locked out. + * + * @return string + */ + function get_unlock_request_form() + { + global $aio_wp_security; + $unlock_request_form = ''; + //Let's encode some hidden data and make a form + $unlock_secret_string = $aio_wp_security->configs->get_value('aiowps_unlock_request_secret_key'); + $current_time = time(); + $enc_result = base64_encode($current_time.$unlock_secret_string); + $unlock_request_form .= '
      '; + $unlock_request_form .= ''; + $unlock_request_form .= '
      '; + return $unlock_request_form; + } +} \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-registration.php b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-registration.php new file mode 100644 index 0000000..4f486fb --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-registration.php @@ -0,0 +1,115 @@ +configs->get_value('aiowps_enable_registration_page_captcha') == '1'){ + add_filter('registration_errors', array(&$this, 'aiowps_validate_registration_with_captcha'), 10, 3); + add_filter('woocommerce_process_registration_errors', array(&$this, 'aiowps_validate_woo_registration_with_captcha'), 10, 4); + } + } + + + /* + * This function will add a special meta string in the users table + * Meta field name: 'aiowps_account_status' + * Meta field value: 'pending' + */ + function aiowps_user_registration_action_handler($user_id) + { + global $wpdb, $aio_wp_security; + //Check if auto pending new account status feature is enabled + if ($aio_wp_security->configs->get_value('aiowps_enable_manual_registration_approval') == '1') + { + $res = add_user_meta($user_id, 'aiowps_account_status', 'pending'); + if (!$res){ + $aio_wp_security->debug_logger->log_debug("aiowps_user_registration_action_handler: Error adding user meta data: aiowps_account_status",4); + } + $user_ip_address = AIOWPSecurity_Utility_IP::get_user_ip_address(); + $res = add_user_meta($user_id, 'aiowps_registrant_ip', $user_ip_address); + if (!$res){ + $aio_wp_security->debug_logger->log_debug("aiowps_user_registration_action_handler: Error adding user meta data: aiowps_registrant_ip",4); + } + + } + } + + /* + * This function will set the special meta string in the usermeta table so that the account becomes active + * Meta field name: 'aiowps_account_status' + * Meta field values: 'active', 'pending', etc + */ + function aiowps_set_user_account_status($user_id, $status) + { + global $wpdb, $aio_wp_security; + $res = update_user_meta($user_id, 'aiowps_account_status', $status); + if (!$res){ + $aio_wp_security->debug_logger->log_debug("aiowps_set_user_account_status: Error updating user meta data: aiowps_account_status",4); + } + } + + function aiowps_validate_registration_with_captcha($errors, $sanitized_user_login, $user_email) + { + global $aio_wp_security; + + $locked = $aio_wp_security->user_login_obj->check_locked_user(); + if($locked == null){ + //user is not locked continue + }else{ + $errors->add('authentication_failed', __('ERROR: You are not allowed to register because your IP address is currently locked!', 'all-in-one-wp-security-and-firewall')); + return $errors; + } + + if (array_key_exists('aiowps-captcha-answer', $_POST)) //If the register form with captcha was submitted then do some processing + { + isset($_POST['aiowps-captcha-answer'])?$captcha_answer = strip_tags(trim($_POST['aiowps-captcha-answer'])): $captcha_answer = ''; + $captcha_secret_string = $aio_wp_security->configs->get_value('aiowps_captcha_secret_key'); + $submitted_encoded_string = base64_encode($_POST['aiowps-captcha-temp-string'].$captcha_secret_string.$captcha_answer); + $trans_handle = sanitize_text_field($_POST['aiowps-captcha-string-info']); + $captcha_string_info_trans = (AIOWPSecurity_Utility::is_multisite_install() ? get_site_transient('aiowps_captcha_string_info_'.$trans_handle) : get_transient('aiowps_captcha_string_info_'.$trans_handle)); + + if($submitted_encoded_string !== $captcha_string_info_trans) + { + //This means a wrong answer was entered + //return new WP_Error('authentication_failed', __('ERROR: Your answer was incorrect - please try again.', 'all-in-one-wp-security-and-firewall')); + $errors->add('authentication_failed', __('ERROR: Your answer was incorrect - please try again.', 'all-in-one-wp-security-and-firewall')); + return $errors; + } + } + return $errors; + } + + function aiowps_validate_woo_registration_with_captcha($errors, $username, $password, $email) + { + global $aio_wp_security; + + $locked = $aio_wp_security->user_login_obj->check_locked_user(); + if($locked == null){ + //user is not locked continue + }else{ + $errors->add('authentication_failed', __('ERROR: You are not allowed to register because your IP address is currently locked!', 'all-in-one-wp-security-and-firewall')); + return $errors; + } + + if (array_key_exists('aiowps-captcha-answer', $_POST)) //If the register form with captcha was submitted then do some processing + { + isset($_POST['aiowps-captcha-answer'])?$captcha_answer = strip_tags(trim($_POST['aiowps-captcha-answer'])): $captcha_answer = ''; + $captcha_secret_string = $aio_wp_security->configs->get_value('aiowps_captcha_secret_key'); + $submitted_encoded_string = base64_encode($_POST['aiowps-captcha-temp-string'].$captcha_secret_string.$captcha_answer); + $trans_handle = sanitize_text_field($_POST['aiowps-captcha-string-info']); + $captcha_string_info_trans = (AIOWPSecurity_Utility::is_multisite_install() ? get_site_transient('aiowps_captcha_string_info_'.$trans_handle) : get_transient('aiowps_captcha_string_info_'.$trans_handle)); + + if($submitted_encoded_string !== $captcha_string_info_trans) + { + //This means a wrong answer was entered + $errors->add('authentication_failed', __('ERROR: Your answer was incorrect - please try again.', 'all-in-one-wp-security-and-firewall')); + return $errors; + } + } + return $errors; + } + +} \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-utility-file.php b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-utility-file.php new file mode 100644 index 0000000..703e850 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-utility-file.php @@ -0,0 +1,440 @@ +files_and_dirs_to_check = array( + array('name'=>'root directory','path'=>ABSPATH,'permissions'=>'0755'), + array('name'=>'wp-includes/','path'=>ABSPATH."wp-includes",'permissions'=>'0755'), + array('name'=>'.htaccess','path'=>ABSPATH.".htaccess",'permissions'=>'0644'), + array('name'=>'wp-admin/index.php','path'=>ABSPATH."wp-admin/index.php",'permissions'=>'0644'), + array('name'=>'wp-admin/js/','path'=>ABSPATH."wp-admin/js/",'permissions'=>'0755'), + array('name'=>'wp-content/themes/','path'=>ABSPATH."wp-content/themes",'permissions'=>'0755'), + array('name'=>'wp-content/plugins/','path'=>ABSPATH."wp-content/plugins",'permissions'=>'0755'), + array('name'=>'wp-admin/','path'=>ABSPATH."wp-admin",'permissions'=>'0755'), + array('name'=>'wp-content/','path'=>ABSPATH."wp-content",'permissions'=>'0755'), + array('name'=>'wp-config.php','path'=>$wp_config_path,'permissions'=>'0644') + //Add as many files or dirs as needed by following the convention above + ); + + } + + static function get_wp_config_file_path() + { + $wp_config_file = ABSPATH . 'wp-config.php'; + if(file_exists($wp_config_file)){ + return $wp_config_file; + } + else if (file_exists(dirname( ABSPATH ) . '/wp-config.php')){ + return dirname( ABSPATH ) . '/wp-config.php'; + } + return $wp_config_file; + } + + static function write_content_to_file($file_path, $new_contents) + { + @chmod($file_path, 0777); + if (is_writeable($file_path)) + { + $handle = fopen($file_path, 'w'); + foreach( $new_contents as $line ) { + fwrite($handle, $line); + } + fclose($handle); + @chmod($file_path, 0644); //Let's change the file back to a secure permission setting + return true; + } else { + return false; + } + } + + static function backup_a_file($src_file_path, $suffix = 'backup') + { + $backup_file_path = $src_file_path . '.' . $suffix; + if (!copy($src_file_path, $backup_file_path)) { + //Failed to make a backup copy + return false; + } + return true; + } + + static function backup_and_rename_wp_config($src_file_path, $prefix = 'backup') + { + global $aio_wp_security; + + //Check to see if the main "backups" directory exists - create it otherwise + $aiowps_backup_dir = WP_CONTENT_DIR.'/'.AIO_WP_SECURITY_BACKUPS_DIR_NAME; + if (!AIOWPSecurity_Utility_File::create_dir($aiowps_backup_dir)) + { + $aio_wp_security->debug_logger->log_debug("backup_and_rename_wp_config - Creation of backup directory failed!",4); + return false; + } + + $src_parts = pathinfo($src_file_path); + $backup_file_name = $prefix . '.' . $src_parts['basename']; + + $backup_file_path = $aiowps_backup_dir . '/' . $backup_file_name; + if (!copy($src_file_path, $backup_file_path)) { + //Failed to make a backup copy + return false; + } + return true; + } + + static function backup_and_rename_htaccess($src_file_path, $suffix = 'backup') + { + global $aio_wp_security; + + //Check to see if the main "backups" directory exists - create it otherwise + $aiowps_backup_dir = WP_CONTENT_DIR.'/'.AIO_WP_SECURITY_BACKUPS_DIR_NAME; + if (!AIOWPSecurity_Utility_File::create_dir($aiowps_backup_dir)) + { + $aio_wp_security->debug_logger->log_debug("backup_and_rename_htaccess - Creation of backup directory failed!",4); + return false; + } + + $src_parts = pathinfo($src_file_path); + $backup_file_name = $src_parts['basename'] . '.' . $suffix; + + $backup_file_path = $aiowps_backup_dir . '/' . $backup_file_name; + if (!copy($src_file_path, $backup_file_path)) { + //Failed to make a backup copy + return false; + } + return true; + } + + //Function which reads entire contents of a file and stores serialized contents into our global_meta table + static function backup_file_contents_to_db($src_file_path, $key_description) + { + global $wpdb, $aio_wp_security; + $file_contents = AIOWPSecurity_Utility_File::get_file_contents($src_file_path); + + $payload = serialize($file_contents); + $date_time = date_i18n( 'Y-m-d H:i:s' ); + $data = array('date_time' => $date_time, 'meta_key1' => $key_description, 'meta_value2' => $payload); + + //First check if a backup entry already exists in the global_meta table + $aiowps_global_meta_tbl_name = AIOWPSEC_TBL_GLOBAL_META_DATA; + $resultset = $wpdb->get_row("SELECT * FROM $aiowps_global_meta_tbl_name WHERE meta_key1 = '$key_description'", OBJECT); + if($resultset){ + $where = array('meta_key1' => $key_description); + $res = $wpdb->update($aiowps_global_meta_tbl_name, $data, $where); + }else{ + $res = $wpdb->insert($aiowps_global_meta_tbl_name, $data); + } + + if($res === false) + { + $aio_wp_security->debug_logger->log_debug("AIOWPSecurity_Utility_File::backup_file_contents_to_db() - Unable to write entry to DB",4); + } + return; + } + + + static function recursive_file_search($pattern='*', $flags = 0, $path='') + { + $paths=glob($path.'*', GLOB_MARK|GLOB_ONLYDIR|GLOB_NOSORT); + if ($paths === FALSE){ + return FALSE; + } + $files=glob($path.$pattern, $flags); + if ($files === FALSE){ + return FALSE; + } + foreach ($paths as $path) { $files=array_merge($files,AIOWPSecurity_Utility_File::recursive_file_search($pattern, $flags, $path)); } + return $files; + } + + /* + * Useful when wanting to echo file contents to screen with
      tags + */ + static function get_file_contents_with_br($src_file) + { + $file_contents = file_get_contents($src_file); + return nl2br($file_contents); + } + + /* + * Useful when wanting to echo file contents inside textarea + */ + static function get_file_contents($src_file) + { + $file_contents = file_get_contents($src_file); + return $file_contents; + } + + /* + * Returns the file's permission value eg, "0755" + */ + static function get_file_permission($filepath) + { + if (!function_exists('fileperms')) + { + $perms = '-1'; + } + else + { + clearstatcache(); + $perms = substr(sprintf("%o", @fileperms($filepath)), -4); + } + return $perms; + } + + /* + * Checks if a write operation is possible for the file in question + */ + static function is_file_writable($filepath) + { + $test_string = ""; //We will attempt to append an empty string at the end of the file for the test + $write_result = @file_put_contents($filepath, $test_string, FILE_APPEND | LOCK_EX); + if ($write_result === false) + { + return false; + } + else + { + return true; + } + } + + static function download_a_file_option1($file_path, $file_name = '') + { + $file = $file_path;//Full ABS path to the file + if(empty($file_name)){$file_name = basename($file);} + + header('Content-Description: File Transfer'); + header('Content-Type: application/octet-stream'); + header('Content-Disposition: attachment; filename='.$file_name); + header('Content-Transfer-Encoding: binary'); + header('Expires: 0'); + header('Cache-Control: must-revalidate'); + header('Pragma: public'); + header('Content-Length: ' . filesize($file)); + //ob_clean(); + //flush(); + readfile($file); + exit; + } + + static function download_content_to_a_file($output, $file_name = '') + { + if(empty($file_name)){$file_name = "aiowps_" . date("Y-m-d_H-i", time()).".txt";} + + header("Content-Encoding: UTF-8"); + header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); + header("Content-Description: File Transfer"); + header("Content-type: application/octet-stream"); + header("Content-disposition: attachment; filename=" . $file_name); + header("Content-Transfer-Encoding: binary"); + header("Content-Length: " . strlen($output)); + echo $output; + exit; + } + + /* + * This function will compare the current permission value for a file or dir with the recommended value. + * It will compare the individual "execute", "write" and "read" bits for the "public", "group" and "owner" permissions. + * If the permissions for an actual bit value are greater than the recommended value it returns '0' (=less secure) + * Otherwise it returns '1' which means it is secure + * Accepts permission value parameters in octal, ie, "0777" or "777" + */ + static function is_file_permission_secure($recommended, $actual) + { + $result = 1; //initialize return result + + //Check "public" permissions + $public_value_actual = substr($actual,-1,1); //get dec value for actual public permission + $public_value_rec = substr($recommended,-1,1); //get dec value for recommended public permission + + $pva_bin = sprintf('%04b', $public_value_actual); //Convert value to binary + $pvr_bin = sprintf('%04b', $public_value_rec); //Convert value to binary + //Compare the "executable" bit values for the public actual versus the recommended + if (substr($pva_bin,-1,1)<=substr($pvr_bin,-1,1)) + { + //The "execute" bit is the same or less as the recommended value + $result = 1*$result; + }else + { + //The "execute" bit is switched on for the actual value - meaning it is less secure + $result = 0*$result; + } + + //Compare the "write" bit values for the public actual versus the recommended + if (substr($pva_bin,-2,1)<=substr($pvr_bin,-2,1)) + { + //The "write" bit is the same or less as the recommended value + $result = 1*$result; + }else + { + //The "write" bit is switched on for the actual value - meaning it is less secure + $result = 0*$result; + } + + //Compare the "read" bit values for the public actual versus the recommended + if (substr($pva_bin,-3,1)<=substr($pvr_bin,-3,1)) + { + //The "read" bit is the same or less as the recommended value + $result = 1*$result; + }else + { + //The "read" bit is switched on for the actual value - meaning it is less secure + $result = 0*$result; + } + + //Check "group" permissions + $group_value_actual = substr($actual,-2,1); + $group_value_rec = substr($recommended,-2,1); + $gva_bin = sprintf('%04b', $group_value_actual); //Convert value to binary + $gvr_bin = sprintf('%04b', $group_value_rec); //Convert value to binary + + //Compare the "executable" bit values for the group actual versus the recommended + if (substr($gva_bin,-1,1)<=substr($gvr_bin,-1,1)) + { + //The "execute" bit is the same or less as the recommended value + $result = 1*$result; + }else + { + //The "execute" bit is switched on for the actual value - meaning it is less secure + $result = 0*$result; + } + + //Compare the "write" bit values for the public actual versus the recommended + if (substr($gva_bin,-2,1)<=substr($gvr_bin,-2,1)) + { + //The "write" bit is the same or less as the recommended value + $result = 1*$result; + }else + { + //The "write" bit is switched on for the actual value - meaning it is less secure + $result = 0*$result; + } + + //Compare the "read" bit values for the public actual versus the recommended + if (substr($gva_bin,-3,1)<=substr($gvr_bin,-3,1)) + { + //The "read" bit is the same or less as the recommended value + $result = 1*$result; + }else + { + //The "read" bit is switched on for the actual value - meaning it is less secure + $result = 0*$result; + } + + //Check "owner" permissions + $owner_value_actual = substr($actual,-3,1); + $owner_value_rec = substr($recommended,-3,1); + $ova_bin = sprintf('%04b', $owner_value_actual); //Convert value to binary + $ovr_bin = sprintf('%04b', $owner_value_rec); //Convert value to binary + + //Compare the "executable" bit values for the group actual versus the recommended + if (substr($ova_bin,-1,1)<=substr($ovr_bin,-1,1)) + { + //The "execute" bit is the same or less as the recommended value + $result = 1*$result; + }else + { + //The "execute" bit is switched on for the actual value - meaning it is less secure + $result = 0*$result; + } + + //Compare the "write" bit values for the public actual versus the recommended + if (substr($ova_bin,-2,1)<=substr($ovr_bin,-2,1)) + { + //The "write" bit is the same or less as the recommended value + $result = 1*$result; + }else + { + //The "write" bit is switched on for the actual value - meaning it is less secure + $result = 0*$result; + } + + //Compare the "read" bit values for the public actual versus the recommended + if (substr($ova_bin,-3,1)<=substr($ovr_bin,-3,1)) + { + //The "read" bit is the same or less as the recommended value + $result = 1*$result; + }else + { + //The "read" bit is switched on for the actual value - meaning it is less secure + $result = 0*$result; + } + + return $result; + } + + /* + * Checks if a directory exists and creates one if it does not + */ + static function create_dir($dirpath='') + { + $res = true; + if ($dirpath != '') + { + //TODO - maybe add some checks to make sure someone is not passing a path with a filename, ie, something which has "." at the end + //$path_parts = pathinfo($dirpath); + //$dirpath = $path_parts['dirname'] . '/' . $path_parts['basename']; + if (!file_exists($dirpath)) + { + $res = mkdir($dirpath, 0755); + } + } + return $res; + } + + static function get_attachment_id_from_url($attachment_url = '') + { + global $wpdb; + $attachment_id = false; + + // If there is no url, return. + if ('' == $attachment_url)return; + + // Get the upload directory paths + $upload_dir_paths = wp_upload_dir(); + + // Make sure the upload path base directory exists in the attachment URL, to verify that we're working with a media library image + if (false !== strpos($attachment_url, $upload_dir_paths['baseurl'])) { + // Remove the upload path base directory from the attachment URL + $attachment_url = str_replace( $upload_dir_paths['baseurl'] . '/', '', $attachment_url ); + // Now run custom database query to get attachment ID from attachment URL + $attachment_id = $wpdb->get_var( $wpdb->prepare( "SELECT wposts.ID FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.ID = wpostmeta.post_id AND wpostmeta.meta_key = '_wp_attached_file' AND wpostmeta.meta_value = '%s' AND wposts.post_type = 'attachment'", $attachment_url ) ); + } + return $attachment_id; + } + + + /** + * Will return an indexed array of files sorted by last modified timestamp + * @param string $dir + * @param string $sort (ASC, DESC) + * @return array + */ + static function scan_dir_sort_date($dir, $sort='DESC') { + $files = array(); + foreach (scandir($dir) as $file) { + $files[$file] = filemtime($dir . '/' . $file); + } + + if ($sort === 'ASC') { + asort($files); + } + else { + arsort($files); + } + + return array_keys($files); + } + +} diff --git a/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-utility-htaccess.php b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-utility-htaccess.php new file mode 100644 index 0000000..0388c3e --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-utility-htaccess.php @@ -0,0 +1,1141 @@ +debug_logger->log_debug("Unable to write to .htaccess - server type not supported!", 4); + return false; //unable to write to the file + } + + //clean up old rules first + if (AIOWPSecurity_Utility_Htaccess::delete_from_htaccess() == -1) { + $aio_wp_security->debug_logger->log_debug("Delete operation of .htaccess file failed!", 4); + return false; //unable to write to the file + } + + $htaccess = ABSPATH . '.htaccess'; + + if (!$f = @fopen($htaccess, 'a+')) { + @chmod($htaccess, 0644); + if (!$f = @fopen($htaccess, 'a+')) { + $aio_wp_security->debug_logger->log_debug("chmod operation on .htaccess failed!", 4); + return false; + } + } + AIOWPSecurity_Utility_File::backup_and_rename_htaccess($htaccess); //TODO - we dont want to continually be backing up the htaccess file + @ini_set('auto_detect_line_endings', true); + $ht = explode(PHP_EOL, implode('', file($htaccess))); //parse each line of file into array + + $rules = AIOWPSecurity_Utility_Htaccess::getrules(); + + $rulesarray = explode(PHP_EOL, $rules); + $rulesarray = apply_filters('aiowps_htaccess_rules_before_writing', $rulesarray); + $contents = array_merge($rulesarray, $ht); + + if (!$f = @fopen($htaccess, 'w+')) { + $aio_wp_security->debug_logger->log_debug("Write operation on .htaccess failed!", 4); + return false; //we can't write to the file + } + + $blank = false; + + //write each line to file + foreach ($contents as $insertline) { + if (trim($insertline) == '') { + if ($blank == false) { + fwrite($f, PHP_EOL . trim($insertline)); + } + $blank = true; + } else { + $blank = false; + fwrite($f, PHP_EOL . trim($insertline)); + } + } + @fclose($f); + return true; //success + } + + /* + * This function will delete the code which has been added to the .htaccess file by this plugin + * It will try to find the comment markers "# BEGIN All In One WP Security" and "# END All In One WP Security" and delete contents in between + */ + static function delete_from_htaccess($section = 'All In One WP Security') + { + //TODO + $htaccess = ABSPATH . '.htaccess'; + + @ini_set('auto_detect_line_endings', true); + if (!file_exists($htaccess)) { + $ht = @fopen($htaccess, 'a+'); + @fclose($ht); + } + $ht_contents = explode(PHP_EOL, implode('', file($htaccess))); //parse each line of file into array + if ($ht_contents) { //as long as there are lines in the file + $state = true; + if (!$f = @fopen($htaccess, 'w+')) { + @chmod($htaccess, 0644); + if (!$f = @fopen($htaccess, 'w+')) { + return -1; + } + } + + foreach ($ht_contents as $n => $markerline) { //for each line in the file + if (strpos($markerline, '# BEGIN ' . $section) !== false) { //if we're at the beginning of the section + $state = false; + } + if ($state == true) { //as long as we're not in the section keep writing + fwrite($f, trim($markerline) . PHP_EOL); + } + if (strpos($markerline, '# END ' . $section) !== false) { //see if we're at the end of the section + $state = true; + } + } + @fclose($f); + return 1; + } + return 1; + } + + static function getrules() + { + $rules = ""; + $rules .= AIOWPSecurity_Utility_Htaccess::getrules_block_wp_file_access(); + $rules .= AIOWPSecurity_Utility_Htaccess::getrules_basic_htaccess(); + $rules .= AIOWPSecurity_Utility_Htaccess::getrules_pingback_htaccess(); + $rules .= AIOWPSecurity_Utility_Htaccess::getrules_block_debug_log_access_htaccess(); + $rules .= AIOWPSecurity_Utility_Htaccess::getrules_disable_index_views(); + $rules .= AIOWPSecurity_Utility_Htaccess::getrules_blacklist(); + $rules .= AIOWPSecurity_Utility_Htaccess::getrules_disable_trace_and_track(); + $rules .= AIOWPSecurity_Utility_Htaccess::getrules_forbid_proxy_comment_posting(); + $rules .= AIOWPSecurity_Utility_Htaccess::getrules_deny_bad_query_strings(); + $rules .= AIOWPSecurity_Utility_Htaccess::getrules_advanced_character_string_filter(); + $rules .= AIOWPSecurity_Utility_Htaccess::getrules_6g_blacklist(); + $rules .= AIOWPSecurity_Utility_Htaccess::getrules_5g_blacklist(); + $rules .= AIOWPSecurity_Utility_Htaccess::getrules_enable_brute_force_prevention(); + $rules .= AIOWPSecurity_Utility_Htaccess::getrules_block_spambots(); + $rules .= AIOWPSecurity_Utility_Htaccess::getrules_enable_login_whitelist(); + $rules .= AIOWPSecurity_Utility_Htaccess::prevent_image_hotlinks(); + $rules .= AIOWPSecurity_Utility_Htaccess::getrules_custom_rules(); + //TODO: The following utility functions are ready to use when we write the menu pages for these features + + //Add more functions for features as needed + //$rules .= AIOWPSecurity_Utility_Htaccess::getrules_somefeature(); + + //Add outer markers if we have rules + if ($rules != '') { + $rules = "# BEGIN All In One WP Security" . PHP_EOL . $rules . "# END All In One WP Security" . PHP_EOL; + } + + return $rules; + } + + /* + * This function will write rules to prevent people from accessing the following files: + * readme.html, license.txt and wp-config-sample.php. + */ + static function getrules_block_wp_file_access() + { + global $aio_wp_security; + $rules = ''; + if ($aio_wp_security->configs->get_value('aiowps_prevent_default_wp_file_access') == '1') { + $rules .= AIOWPSecurity_Utility_Htaccess::$prevent_wp_file_access_marker_start . PHP_EOL; //Add feature marker start + $rules .= self::create_apache2_access_denied_rule('license.txt'); + $rules .= self::create_apache2_access_denied_rule('wp-config-sample.php'); + $rules .= self::create_apache2_access_denied_rule('readme.html'); + $rules .= AIOWPSecurity_Utility_Htaccess::$prevent_wp_file_access_marker_end . PHP_EOL; //Add feature marker end + } + + return $rules; + } + + static function getrules_blacklist() + { + global $aio_wp_security; + // Are we on Apache or LiteSpeed webserver? + $aiowps_server = AIOWPSecurity_Utility::get_server_type(); + $apache_or_litespeed = $aiowps_server == 'apache' || $aiowps_server == 'litespeed'; + // + $rules = ''; + if ($aio_wp_security->configs->get_value('aiowps_enable_blacklisting') == '1') { + // Let's do the list of blacklisted IPs first + $hosts = AIOWPSecurity_Utility::explode_trim_filter_empty($aio_wp_security->configs->get_value('aiowps_banned_ip_addresses')); + // Filter out duplicate lines, add netmask to IP addresses + $ips_with_netmask = self::add_netmask(array_unique($hosts)); + + if ( !empty($ips_with_netmask) ) { + $rules .= AIOWPSecurity_Utility_Htaccess::$ip_blacklist_marker_start . PHP_EOL; //Add feature marker start + + if ( $apache_or_litespeed ) { + // Apache or LiteSpeed webserver + // Apache 2.2 and older + $rules .= "" . PHP_EOL; + $rules .= "Order allow,deny" . PHP_EOL; + $rules .= "Allow from all" . PHP_EOL; + foreach ($ips_with_netmask as $ip_with_netmask) { + $rules .= "Deny from " . $ip_with_netmask . PHP_EOL; + } + $rules .= "" . PHP_EOL; + // Apache 2.3 and newer + $rules .= "" . PHP_EOL; + $rules .= "" . PHP_EOL; + $rules .= "Require all granted" . PHP_EOL; + foreach ($ips_with_netmask as $ip_with_netmask) { + $rules .= "Require not ip " . $ip_with_netmask . PHP_EOL; + } + $rules .= "" . PHP_EOL; + $rules .= "" . PHP_EOL; + } + else { + // Nginx webserver + foreach ($ips_with_netmask as $ip_with_netmask) { + $rules .= "\tdeny " . $ip_with_netmask . ";" . PHP_EOL; + } + } + + $rules .= AIOWPSecurity_Utility_Htaccess::$ip_blacklist_marker_end . PHP_EOL; //Add feature marker end + } + + //Now let's do the user agent list + $user_agents = explode(PHP_EOL, $aio_wp_security->configs->get_value('aiowps_banned_user_agents')); + if (!empty($user_agents) && !(sizeof($user_agents) == 1 && trim($user_agents[0]) == '')) { + if ( $apache_or_litespeed ) { + $rules .= AIOWPSecurity_Utility_Htaccess::$user_agent_blacklist_marker_start . PHP_EOL; //Add feature marker start + //Start mod_rewrite rules + $rules .= "" . PHP_EOL . "RewriteEngine On" . PHP_EOL . PHP_EOL; + $count = 1; + foreach ($user_agents as $agent) { + $agent_escaped = quotemeta($agent); + $pattern = '/\s/'; //Find spaces in the string + $replacement = '\s'; //Replace spaces with \s so apache can understand + $agent_sanitized = preg_replace($pattern, $replacement, $agent_escaped); + + $rules .= "RewriteCond %{HTTP_USER_AGENT} ^" . trim($agent_sanitized); + if ($count < sizeof($user_agents)) { + $rules .= " [NC,OR]" . PHP_EOL; + $count++; + } else { + $rules .= " [NC]" . PHP_EOL; + } + + } + $rules .= "RewriteRule ^(.*)$ - [F,L]" . PHP_EOL . PHP_EOL; + // End mod_rewrite rules + $rules .= "" . PHP_EOL; + $rules .= AIOWPSecurity_Utility_Htaccess::$user_agent_blacklist_marker_end . PHP_EOL; //Add feature marker end + } else { + $count = 1; + $alist = ''; + foreach ($user_agents as $agent) { + $alist .= trim($agent); + if ($count < sizeof($user_agents)) { + $alist .= '|'; + $count++; + } + } + $rules .= "\tif (\$http_user_agent ~* " . $alist . ") { return 403; }" . PHP_EOL; + } + } + } + + return implode(PHP_EOL, array_diff(explode(PHP_EOL, $rules), array('Deny from ', 'Deny from'))); + } + + /* + * TODO - info + */ + static function getrules_basic_htaccess() + { + global $aio_wp_security; + + $rules = ''; + if ($aio_wp_security->configs->get_value('aiowps_enable_basic_firewall') == '1') { + $rules .= AIOWPSecurity_Utility_Htaccess::$basic_htaccess_rules_marker_start . PHP_EOL; //Add feature marker start + //protect the htaccess file - this is done by default with apache config file but we are including it here for good measure + $rules .= self::create_apache2_access_denied_rule('.htaccess'); + + //disable the server signature + $rules .= 'ServerSignature Off' . PHP_EOL; + + //limit file uploads to 10mb + $rules .= 'LimitRequestBody 10240000' . PHP_EOL; + + // protect wpconfig.php. + $rules .= self::create_apache2_access_denied_rule('wp-config.php'); + + $rules .= AIOWPSecurity_Utility_Htaccess::$basic_htaccess_rules_marker_end . PHP_EOL; //Add feature marker end + } + return $rules; + } + + static function getrules_pingback_htaccess() + { + global $aio_wp_security; + + $rules = ''; + if ($aio_wp_security->configs->get_value('aiowps_enable_pingback_firewall') == '1') { + $rules .= AIOWPSecurity_Utility_Htaccess::$pingback_htaccess_rules_marker_start . PHP_EOL; //Add feature marker start + $rules .= self::create_apache2_access_denied_rule('xmlrpc.php'); + $rules .= AIOWPSecurity_Utility_Htaccess::$pingback_htaccess_rules_marker_end . PHP_EOL; //Add feature marker end + } + return $rules; + } + + static function getrules_block_debug_log_access_htaccess() + { + global $aio_wp_security; + + $rules = ''; + if ($aio_wp_security->configs->get_value('aiowps_block_debug_log_file_access') == '1') { + $rules .= AIOWPSecurity_Utility_Htaccess::$debug_log_block_htaccess_rules_marker_start . PHP_EOL; //Add feature marker start + $rules .= self::create_apache2_access_denied_rule('debug.log'); + $rules .= AIOWPSecurity_Utility_Htaccess::$debug_log_block_htaccess_rules_marker_end . PHP_EOL; //Add feature marker end + } + return $rules; + } + + /* + * This function will write some drectives to block all people who do not have a cookie + * when trying to access the WP login page + */ + static function getrules_enable_brute_force_prevention() + { + global $aio_wp_security; + $rules = ''; + if ($aio_wp_security->configs->get_value('aiowps_enable_brute_force_attack_prevention') == '1') { + $cookie_name = $aio_wp_security->configs->get_value('aiowps_brute_force_secret_word'); + $test_cookie_name = $aio_wp_security->configs->get_value('aiowps_cookie_brute_test'); + $redirect_url = $aio_wp_security->configs->get_value('aiowps_cookie_based_brute_force_redirect_url'); + $rules .= AIOWPSecurity_Utility_Htaccess::$enable_brute_force_attack_prevention_marker_start . PHP_EOL; //Add feature marker start + $rules .= 'RewriteEngine On' . PHP_EOL; + $rules .= 'RewriteCond %{REQUEST_URI} (wp-admin|wp-login)' . PHP_EOL;// If URI contains wp-admin or wp-login + if ($aio_wp_security->configs->get_value('aiowps_brute_force_attack_prevention_ajax_exception') == '1') { + $rules .= 'RewriteCond %{REQUEST_URI} !(wp-admin/admin-ajax.php)' . PHP_EOL; // To allow ajax requests through + } + if ($aio_wp_security->configs->get_value('aiowps_brute_force_attack_prevention_pw_protected_exception') == '1') { + $rules .= 'RewriteCond %{QUERY_STRING} !(action\=postpass)' . PHP_EOL; // Possible workaround for people usign the password protected page/post feature + } + $rules .= 'RewriteCond %{HTTP_COOKIE} !' . $cookie_name . '= [NC]' . PHP_EOL; + $rules .= 'RewriteCond %{HTTP_COOKIE} !' . $test_cookie_name . '= [NC]' . PHP_EOL; + $rules .= 'RewriteRule .* ' . $redirect_url . ' [L]' . PHP_EOL; + $rules .= AIOWPSecurity_Utility_Htaccess::$enable_brute_force_attack_prevention_marker_end . PHP_EOL; //Add feature marker end + } + + return $rules; + } + + + /* + * This function will write some directives to allow IPs in the whitelist to access wp-login.php or wp-admin + * The function also handles the following special cases: + * 1) If the rename login feature is being used: for this scenario instead of protecting wp-login.php we must protect the special page slug + * 2) If the rename login feature is being used AND non permalink URL structure: for this case need to use mod_rewrite because we must check QUERY_STRING + */ + static function getrules_enable_login_whitelist() + { + global $aio_wp_security; + $rules = ''; + + if ($aio_wp_security->configs->get_value('aiowps_enable_whitelisting') == '1') { + $site_url = AIOWPSEC_WP_URL; + $parse_url = parse_url($site_url); + $hostname = $parse_url['host']; + $host_ip = gethostbyname($hostname); + $special_case = false; + $rules .= AIOWPSecurity_Utility_Htaccess::$enable_login_whitelist_marker_start . PHP_EOL; //Add feature marker start + //If the rename login page feature is active, we will need to adjust the directives + if ($aio_wp_security->configs->get_value('aiowps_enable_rename_login_page') == '1') { + $secret_slug = $aio_wp_security->configs->get_value('aiowps_login_page_slug'); + if (!get_option('permalink_structure')) { + //standard url structure is being used - ie, non permalinks + $special_case = true; + $rules .= '' . PHP_EOL; + $rules .= 'RewriteEngine on' . PHP_EOL; + $rules .= 'RewriteCond %{QUERY_STRING} ^' . $secret_slug . '$' . PHP_EOL; + $rules .= 'RewriteCond %{REMOTE_ADDR} !^' . preg_quote($host_ip) . '[OR]' . PHP_EOL; + } else { + $slug = preg_quote($secret_slug); //escape any applicable chars + $rules .= '' . PHP_EOL; + } + } else { + $rules .= '' . PHP_EOL; + } + if (!$special_case) { + $rules .= 'Order Allow,Deny' . PHP_EOL; + $rules .= 'Allow from ' . $hostname . PHP_EOL; + $rules .= 'Allow from ' . $host_ip . PHP_EOL; + } + + //Let's get list of whitelisted IPs + $hosts = explode(PHP_EOL, $aio_wp_security->configs->get_value('aiowps_allowed_ip_addresses')); + if (!empty($hosts) && !(sizeof($hosts) == 1 && trim($hosts[0]) == '')) { + $phosts = array(); + $num_hosts = count($hosts); + $i = 0; + foreach ($hosts as $host) { + $host = trim($host); + $or_string = ($i == $num_hosts - 1) ? '' : '[OR]'; //Add an [OR] clause for all except the last condition + + if (!in_array($host, $phosts)) { + if (strstr($host, '*')) { + $parts = array_reverse(explode('.', $host)); + $netmask = 32; + foreach ($parts as $part) { + if (strstr(trim($part), '*')) { + $netmask = $netmask - 8; + + } + } + //*****Bug Fix ****** + //Seems that netmask does not work when using the following type of directive, ie, + //RewriteCond %{REMOTE_ADDR} !^203\.87\.121\.0/24 + + //The following works: + //RewriteCond %{REMOTE_ADDR} !^203\.87\.121\. + + if($special_case){ + $dhost = trim(str_replace('*', '', implode('.', array_reverse($parts)),$count)); + if($count > 1){ + //means that we will have consecutive periods in the string and we must remove all except one - eg: 45.12.. + $dhost = rtrim($dhost, '.'); + $dhost = $dhost . '.'; + } + }else{ + $dhost = trim( str_replace('*', '0', implode( '.', array_reverse( $parts ) ) ) . '/' . $netmask ); + } + if (strlen($dhost) > 4) { + if ($special_case) { + $dhost = preg_quote($dhost); //escape any applicable chars + $trule = 'RewriteCond %{REMOTE_ADDR} !^' . $dhost . $or_string . PHP_EOL; + if (trim($trule) != 'RewriteCond %{REMOTE_ADDR}!=') { + $rules .= $trule; + } + } else { + $trule = 'Allow from ' . $dhost . PHP_EOL; + if (trim($trule) != 'Allow from') { + $rules .= $trule; + } + } + } + } else { + $dhost = trim($host); + //ipv6 - for now we will support only whole ipv6 addresses, NOT ranges + if (strpos($dhost, ':') !== false) { + //possible ipv6 addr + $res = WP_Http::is_ip_address($dhost); + if (FALSE === $res) { + continue; + } + } + if (strlen($dhost) > 4 || $res == '6') { + if ($special_case) { + $dhost = preg_quote($dhost); //escape any applicable chars + $rules .= 'RewriteCond %{REMOTE_ADDR} !^' . $dhost . $or_string . PHP_EOL; + } else { + $rules .= 'Allow from ' . $dhost . PHP_EOL; + } + + } + } + } + $phosts[] = $host; + $i++; + } + } + + if ($special_case) { + $rules .= 'RewriteRule .* http://127.0.0.1 [L]' . PHP_EOL; + $rules .= '' . PHP_EOL; + } else { + $rules .= '' . PHP_EOL; + } + $rules .= AIOWPSecurity_Utility_Htaccess::$enable_login_whitelist_marker_end . PHP_EOL; //Add feature marker end + } + + return $rules; + } + + /* + * This function will disable directory listings for all directories, add this line to the + * site’s root .htaccess file. + * NOTE: AllowOverride must be enabled in the httpd.conf file for this to work! + */ + static function getrules_disable_index_views() + { + global $aio_wp_security; + $rules = ''; + if ($aio_wp_security->configs->get_value('aiowps_disable_index_views') == '1') { + $rules .= AIOWPSecurity_Utility_Htaccess::$disable_index_views_marker_start . PHP_EOL; //Add feature marker start + $rules .= 'Options -Indexes' . PHP_EOL; + $rules .= AIOWPSecurity_Utility_Htaccess::$disable_index_views_marker_end . PHP_EOL; //Add feature marker end + } + + return $rules; + } + + /* + * This function will write rules to disable trace and track. + * HTTP Trace attack (XST) can be used to return header requests + * and grab cookies and other information and is used along with + * a cross site scripting attacks (XSS) + */ + static function getrules_disable_trace_and_track() + { + global $aio_wp_security; + $rules = ''; + if ($aio_wp_security->configs->get_value('aiowps_disable_trace_and_track') == '1') { + $rules .= AIOWPSecurity_Utility_Htaccess::$disable_trace_track_marker_start . PHP_EOL; //Add feature marker start + $rules .= '' . PHP_EOL; + $rules .= 'RewriteEngine On' . PHP_EOL; + $rules .= 'RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)' . PHP_EOL; + $rules .= 'RewriteRule .* - [F]' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= AIOWPSecurity_Utility_Htaccess::$disable_trace_track_marker_end . PHP_EOL; //Add feature marker end + } + + return $rules; + } + + /* + * This function will write rules to prevent proxy comment posting. + * This will deny any requests that use a proxy server when posting + * to comments eliminating some spam and proxy requests. + * Thanks go to the helpful info and suggestions from perishablepress.com and Thomas O. (https://wordpress.org/support/topic/high-server-cpu-with-proxy-login) + */ + static function getrules_forbid_proxy_comment_posting() + { + global $aio_wp_security; + $rules = ''; + if ($aio_wp_security->configs->get_value('aiowps_forbid_proxy_comments') == '1') { + $rules .= AIOWPSecurity_Utility_Htaccess::$forbid_proxy_comments_marker_start . PHP_EOL; //Add feature marker start + $rules .= '' . PHP_EOL; + $rules .= 'RewriteEngine On' . PHP_EOL; + $rules .= 'RewriteCond %{REQUEST_METHOD} ^POST' . PHP_EOL; + $rules .= 'RewriteCond %{HTTP:VIA} !^$ [OR]' . PHP_EOL; + $rules .= 'RewriteCond %{HTTP:FORWARDED} !^$ [OR]' . PHP_EOL; + $rules .= 'RewriteCond %{HTTP:USERAGENT_VIA} !^$ [OR]' . PHP_EOL; + $rules .= 'RewriteCond %{HTTP:X_FORWARDED_FOR} !^$ [OR]' . PHP_EOL; + $rules .= 'RewriteCond %{HTTP:X_FORWARDED_HOST} !^$ [OR]' . PHP_EOL; + $rules .= 'RewriteCond %{HTTP:PROXY_CONNECTION} !^$ [OR]' . PHP_EOL; + $rules .= 'RewriteCond %{HTTP:XPROXY_CONNECTION} !^$ [OR]' . PHP_EOL; + $rules .= 'RewriteCond %{HTTP:HTTP_PC_REMOTE_ADDR} !^$ [OR]' . PHP_EOL; + $rules .= 'RewriteCond %{HTTP:HTTP_CLIENT_IP} !^$' . PHP_EOL; + $rules .= 'RewriteRule wp-comments-post\.php - [F]' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= AIOWPSecurity_Utility_Htaccess::$forbid_proxy_comments_marker_end . PHP_EOL; //Add feature marker end + } + + return $rules; + } + + /* + * This function will write rules to prevent malicious string attacks on your site using XSS. + * NOTE: Some of these strings might be used for plugins or themes and doing so will disable the functionality. + * This script is from perishablepress and is fairly safe to use and should not break anything important + */ + //TODO - the currently commented out rules (see function below) break the site - need to investigate why or if we can tweak the rules a bit + static function getrules_deny_bad_query_strings() + { + global $aio_wp_security; + $rules = ''; + if ($aio_wp_security->configs->get_value('aiowps_deny_bad_query_strings') == '1') { + $rules .= AIOWPSecurity_Utility_Htaccess::$deny_bad_query_strings_marker_start . PHP_EOL; //Add feature marker start + $rules .= '' . PHP_EOL; + $rules .= 'RewriteEngine On' . PHP_EOL; + //$rules .= 'RewriteCond %{QUERY_STRING} ../ [NC,OR]' . PHP_EOL; + //$rules .= 'RewriteCond %{QUERY_STRING} boot.ini [NC,OR]' . PHP_EOL; + //$rules .= 'RewriteCond %{QUERY_STRING} tag= [NC,OR]' . PHP_EOL; + $rules .= 'RewriteCond %{QUERY_STRING} ftp: [NC,OR]' . PHP_EOL; + $rules .= 'RewriteCond %{QUERY_STRING} http: [NC,OR]' . PHP_EOL; + $rules .= 'RewriteCond %{QUERY_STRING} https: [NC,OR]' . PHP_EOL; + $rules .= 'RewriteCond %{QUERY_STRING} mosConfig [NC,OR]' . PHP_EOL; + //$rules .= 'RewriteCond %{QUERY_STRING} ^.*([|]|(|)||\'|"|;|?|*).* [NC,OR]' . PHP_EOL; + //$rules .= 'RewriteCond %{QUERY_STRING} ^.*(%22|%27|%3C|%3E|%5C|%7B|%7C).* [NC,OR]' . PHP_EOL; + //$rules .= 'RewriteCond %{QUERY_STRING} ^.*(%0|%A|%B|%C|%D|%E|%F|127.0).* [NC,OR]' . PHP_EOL; + $rules .= 'RewriteCond %{QUERY_STRING} ^.*(globals|encode|localhost|loopback).* [NC,OR]' . PHP_EOL; + $rules .= 'RewriteCond %{QUERY_STRING} (\;|\'|\"|%22).*(request|insert|union|declare|drop) [NC]' . PHP_EOL; + $rules .= 'RewriteRule ^(.*)$ - [F,L]' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= AIOWPSecurity_Utility_Htaccess::$deny_bad_query_strings_marker_end . PHP_EOL; //Add feature marker end + } + + return $rules; + } + + /* + * This function will write rules to produce an advanced character string filter to prevent malicious string attacks from Cross Site Scripting (XSS) + * NOTE: Some of these strings might be used for plugins or themes and doing so will disable the functionality. + * This script is from perishablepress and is fairly safe to use and should not break anything important + */ + //TODO - the rules below break the site - need to investigate why or if we can tweak the rules a bit + //RedirectMatch 403 ^ + //RedirectMatch 403 $ + //RedirectMatch 403 | + //RedirectMatch 403 .. + //Redirectmatch 403 select( + //Redirectmatch 403 convert( + //RedirectMatch 403 .inc + //RedirectMatch 403 include. + // + // The "@" sign is often used in filenames of retina-ready images like + // "logo@2x.jpg", therefore it has been removed from the list. + //RedirectMatch 403 \@ + + static function getrules_advanced_character_string_filter() + { + global $aio_wp_security; + $rules = ''; + if ($aio_wp_security->configs->get_value('aiowps_advanced_char_string_filter') == '1') { + $rules .= AIOWPSecurity_Utility_Htaccess::$advanced_char_string_filter_marker_start . PHP_EOL; //Add feature marker start + + $rules .= ' + RedirectMatch 403 \, + RedirectMatch 403 \: + RedirectMatch 403 \; + RedirectMatch 403 \= + RedirectMatch 403 \[ + RedirectMatch 403 \] + RedirectMatch 403 \^ + RedirectMatch 403 \` + RedirectMatch 403 \{ + RedirectMatch 403 \} + RedirectMatch 403 \~ + RedirectMatch 403 \" + RedirectMatch 403 \$ + RedirectMatch 403 \< + RedirectMatch 403 \> + RedirectMatch 403 \| + RedirectMatch 403 \.\. + RedirectMatch 403 \%0 + RedirectMatch 403 \%A + RedirectMatch 403 \%B + RedirectMatch 403 \%C + RedirectMatch 403 \%D + RedirectMatch 403 \%E + RedirectMatch 403 \%F + RedirectMatch 403 \%22 + RedirectMatch 403 \%27 + RedirectMatch 403 \%28 + RedirectMatch 403 \%29 + RedirectMatch 403 \%3C + RedirectMatch 403 \%3E + RedirectMatch 403 \%3F + RedirectMatch 403 \%5B + RedirectMatch 403 \%5C + RedirectMatch 403 \%5D + RedirectMatch 403 \%7B + RedirectMatch 403 \%7C + RedirectMatch 403 \%7D + # COMMON PATTERNS + Redirectmatch 403 \_vpi + RedirectMatch 403 \.inc + Redirectmatch 403 xAou6 + Redirectmatch 403 db\_name + Redirectmatch 403 select\( + Redirectmatch 403 convert\( + Redirectmatch 403 \/query\/ + RedirectMatch 403 ImpEvData + Redirectmatch 403 \.XMLHTTP + Redirectmatch 403 proxydeny + RedirectMatch 403 function\. + Redirectmatch 403 remoteFile + Redirectmatch 403 servername + Redirectmatch 403 \&rptmode\= + Redirectmatch 403 sys\_cpanel + RedirectMatch 403 db\_connect + RedirectMatch 403 doeditconfig + RedirectMatch 403 check\_proxy + Redirectmatch 403 system\_user + Redirectmatch 403 \/\(null\)\/ + Redirectmatch 403 clientrequest + Redirectmatch 403 option\_value + RedirectMatch 403 ref\.outcontrol + # SPECIFIC EXPLOITS + RedirectMatch 403 errors\. + RedirectMatch 403 config\. + RedirectMatch 403 include\. + RedirectMatch 403 display\. + RedirectMatch 403 register\. + Redirectmatch 403 password\. + RedirectMatch 403 maincore\. + RedirectMatch 403 authorize\. + Redirectmatch 403 macromates\. + RedirectMatch 403 head\_auth\. + RedirectMatch 403 submit\_links\. + RedirectMatch 403 change\_action\. + Redirectmatch 403 com\_facileforms\/ + RedirectMatch 403 admin\_db\_utilities\. + RedirectMatch 403 admin\.webring\.docs\. + Redirectmatch 403 Table\/Latest\/index\. + ' . PHP_EOL; + $rules .= AIOWPSecurity_Utility_Htaccess::$advanced_char_string_filter_marker_end . PHP_EOL; //Add feature marker end + } + + return $rules; + } + + /* + * This function contains the rules for the 5G blacklist produced by Jeff Starr from perishablepress.com + * NOTE: Since Jeff regularly updates and evolves his blacklist rules, ie, 5G->6G->7G.... we will update this function to reflect the latest blacklist release + */ + + + static function getrules_5g_blacklist() + { + global $aio_wp_security; + $rules = ''; + if ($aio_wp_security->configs->get_value('aiowps_enable_5g_firewall') == '1') { + $rules .= AIOWPSecurity_Utility_Htaccess::$five_g_blacklist_marker_start . PHP_EOL; //Add feature marker start + + $rules .= '# 5G BLACKLIST/FIREWALL (2013) + # @ http://perishablepress.com/5g-blacklist-2013/ + + # 5G:[QUERY STRINGS] + + RewriteEngine On + RewriteBase / + RewriteCond %{QUERY_STRING} (\"|%22).*(<|>|%3) [NC,OR] + RewriteCond %{QUERY_STRING} (javascript:).*(\;) [NC,OR] + RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3) [NC,OR] + RewriteCond %{QUERY_STRING} (\\\|\.\./|`|=\'$|=%27$) [NC,OR] + RewriteCond %{QUERY_STRING} (\;|\'|\"|%22).*(union|select|insert|drop|update|md5|benchmark|or|and|if) [NC,OR] + RewriteCond %{QUERY_STRING} (base64_encode|localhost|mosconfig) [NC,OR] + RewriteCond %{QUERY_STRING} (boot\.ini|echo.*kae|etc/passwd) [NC,OR] + RewriteCond %{QUERY_STRING} (GLOBALS|REQUEST)(=|\[|%) [NC] + RewriteRule .* - [F] + + + # 5G:[USER AGENTS] + + # SetEnvIfNoCase User-Agent ^$ keep_out + SetEnvIfNoCase User-Agent (binlar|casper|cmsworldmap|comodo|diavol|dotbot|feedfinder|flicky|ia_archiver|jakarta|kmccrew|nutch|planetwork|purebot|pycurl|skygrid|sucker|turnit|vikspider|zmeu) keep_out + + Order Allow,Deny + Allow from all + Deny from env=keep_out + + + + # 5G:[REQUEST STRINGS] + + RedirectMatch 403 (https?|ftp|php)\:// + RedirectMatch 403 /(https?|ima|ucp)/ + RedirectMatch 403 /(Permanent|Better)$ + RedirectMatch 403 (\=\\\\\\\'|\=\\\%27|/\\\\\\\'/?|\)\.css\()$ + RedirectMatch 403 (\,|\)\+|/\,/|\{0\}|\(/\(|\.\.\.|\+\+\+|\||\\\\\"\\\\\") + RedirectMatch 403 \.(cgi|asp|aspx|cfg|dll|exe|jsp|mdb|sql|ini|rar)$ + RedirectMatch 403 /(contac|fpw|install|pingserver|register)\.php$ + RedirectMatch 403 (base64|crossdomain|localhost|wwwroot|e107\_) + RedirectMatch 403 (eval\(|\_vti\_|\(null\)|echo.*kae|config\.xml) + RedirectMatch 403 \.well\-known/host\-meta + RedirectMatch 403 /function\.array\-rand + RedirectMatch 403 \)\;\$\(this\)\.html\( + RedirectMatch 403 proc/self/environ + RedirectMatch 403 msnbot\.htm\)\.\_ + RedirectMatch 403 /ref\.outcontrol + RedirectMatch 403 com\_cropimage + RedirectMatch 403 indonesia\.htm + RedirectMatch 403 \{\$itemURL\} + RedirectMatch 403 function\(\) + RedirectMatch 403 labels\.rdf + RedirectMatch 403 /playing.php + RedirectMatch 403 muieblackcat + + + # 5G:[REQUEST METHOD] + + RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) + RewriteRule .* - [F] + ' . PHP_EOL; + $rules .= AIOWPSecurity_Utility_Htaccess::$five_g_blacklist_marker_end . PHP_EOL; //Add feature marker end + } + + return $rules; + } + + /* + * This function contains the rules for the 6G blacklist produced by Jeff Starr: + * https://perishablepress.com/6g/ + */ + static function getrules_6g_blacklist() + { + global $aio_wp_security; + $rules = ''; + if ($aio_wp_security->configs->get_value('aiowps_enable_6g_firewall') == '1') { + $rules .= AIOWPSecurity_Utility_Htaccess::$six_g_blacklist_marker_start . PHP_EOL; //Add feature marker start + + $rules .= '# 6G BLACKLIST/FIREWALL (2016) + # @ https://perishablepress.com/6g/ + + # 6G:[QUERY STRINGS] + + RewriteEngine On + RewriteCond %{QUERY_STRING} (eval\() [NC,OR] + RewriteCond %{QUERY_STRING} (127\.0\.0\.1) [NC,OR] + RewriteCond %{QUERY_STRING} ([a-z0-9]{2000}) [NC,OR] + RewriteCond %{QUERY_STRING} (javascript:)(.*)(;) [NC,OR] + RewriteCond %{QUERY_STRING} (base64_encode)(.*)(\() [NC,OR] + RewriteCond %{QUERY_STRING} (GLOBALS|REQUEST)(=|\[|%) [NC,OR] + RewriteCond %{QUERY_STRING} (<|%3C)(.*)script(.*)(>|%3) [NC,OR] + RewriteCond %{QUERY_STRING} (\\|\.\.\.|\.\./|~|`|<|>|\|) [NC,OR] + RewriteCond %{QUERY_STRING} (boot\.ini|etc/passwd|self/environ) [NC,OR] + RewriteCond %{QUERY_STRING} (thumbs?(_editor|open)?|tim(thumb)?)\.php [NC,OR] + RewriteCond %{QUERY_STRING} (\'|\")(.*)(drop|insert|md5|select|union) [NC] + RewriteRule .* - [F] + + + # 6G:[REQUEST METHOD] + + RewriteCond %{REQUEST_METHOD} ^(connect|debug|delete|move|put|trace|track) [NC] + RewriteRule .* - [F] + + + # 6G:[REFERRERS] + + RewriteCond %{HTTP_REFERER} ([a-z0-9]{2000}) [NC,OR] + RewriteCond %{HTTP_REFERER} (semalt.com|todaperfeita) [NC] + RewriteRule .* - [F] + + + # 6G:[REQUEST STRINGS] + + RedirectMatch 403 (?i)([a-z0-9]{2000}) + RedirectMatch 403 (?i)(https?|ftp|php):/ + RedirectMatch 403 (?i)(base64_encode)(.*)(\() + RedirectMatch 403 (?i)(=\\\'|=\\%27|/\\\'/?)\. + RedirectMatch 403 (?i)/(\$(\&)?|\*|\"|\.|,|&|&?)/?$ + RedirectMatch 403 (?i)(\{0\}|\(/\(|\.\.\.|\+\+\+|\\\"\\\") + RedirectMatch 403 (?i)(~|`|<|>|:|;|,|%|\\|\s|\{|\}|\[|\]|\|) + RedirectMatch 403 (?i)/(=|\$&|_mm|cgi-|etc/passwd|muieblack) + RedirectMatch 403 (?i)(&pws=0|_vti_|\(null\)|\{\$itemURL\}|echo(.*)kae|etc/passwd|eval\(|self/environ) + RedirectMatch 403 (?i)\.(aspx?|bash|bak?|cfg|cgi|dll|exe|git|hg|ini|jsp|log|mdb|out|sql|svn|swp|tar|rar|rdf)$ + RedirectMatch 403 (?i)/(^$|(wp-)?config|mobiquo|phpinfo|shell|sqlpatch|thumb|thumb_editor|thumbopen|timthumb|webshell)\.php + + + # 6G:[USER AGENTS] + + SetEnvIfNoCase User-Agent ([a-z0-9]{2000}) bad_bot + SetEnvIfNoCase User-Agent (archive.org|binlar|casper|checkpriv|choppy|clshttp|cmsworld|diavol|dotbot|extract|feedfinder|flicky|g00g1e|harvest|heritrix|httrack|kmccrew|loader|miner|nikto|nutch|planetwork|postrank|purebot|pycurl|python|seekerspider|siclab|skygrid|sqlmap|sucker|turnit|vikspider|winhttp|xxxyy|youda|zmeu|zune) bad_bot + + # Apache < 2.3 + + Order allow,deny + Allow from all + Deny from env=bad_bot + + + # Apache >= 2.3 + + + Require all granted + Require not env bad_bot + + + ' . PHP_EOL; + $rules .= AIOWPSecurity_Utility_Htaccess::$six_g_blacklist_marker_end . PHP_EOL; //Add feature marker end + } + + return $rules; + } + + /* + * This function will write some directives to block all comments which do not originate from the blog's domain + * OR if the user agent is empty. All blocked requests will be redirected to 127.0.0.1 + */ + static function getrules_block_spambots() + { + global $aio_wp_security; + $rules = ''; + if ($aio_wp_security->configs->get_value('aiowps_enable_spambot_blocking') == '1') { + $url_string = AIOWPSecurity_Utility_Htaccess::return_regularized_url(AIOWPSEC_WP_HOME_URL); + if ($url_string == FALSE) { + $url_string = AIOWPSEC_WP_HOME_URL; + } + $rules .= AIOWPSecurity_Utility_Htaccess::$block_spambots_marker_start . PHP_EOL; //Add feature marker start + $rules .= '' . PHP_EOL; + $rules .= 'RewriteEngine On' . PHP_EOL; + $rules .= 'RewriteCond %{REQUEST_METHOD} POST' . PHP_EOL; + $rules .= 'RewriteCond %{REQUEST_URI} ^(.*)?wp-comments-post\.php(.*)$' . PHP_EOL; + $rules .= 'RewriteCond %{HTTP_REFERER} !^' . $url_string . ' [NC,OR]' . PHP_EOL; + $rules .= 'RewriteCond %{HTTP_USER_AGENT} ^$' . PHP_EOL; + $rules .= 'RewriteRule .* http://127.0.0.1 [L]' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= AIOWPSecurity_Utility_Htaccess::$block_spambots_marker_end . PHP_EOL; //Add feature marker end + } + + return $rules; + } + + /* + * This function will write some directives to prevent image hotlinking + */ + static function prevent_image_hotlinks() + { + global $aio_wp_security; + $rules = ''; + if ($aio_wp_security->configs->get_value('aiowps_prevent_hotlinking') == '1') { + $url_string = AIOWPSecurity_Utility_Htaccess::return_regularized_url(AIOWPSEC_WP_HOME_URL); + if ($url_string == FALSE) { + $url_string = AIOWPSEC_WP_HOME_URL; + } + $rules .= AIOWPSecurity_Utility_Htaccess::$prevent_image_hotlinks_marker_start . PHP_EOL; //Add feature marker start + $rules .= '' . PHP_EOL; + $rules .= 'RewriteEngine On' . PHP_EOL; + $rules .= 'RewriteCond %{HTTP_REFERER} !^$' . PHP_EOL; + $rules .= 'RewriteCond %{REQUEST_FILENAME} -f' . PHP_EOL; + $rules .= 'RewriteCond %{REQUEST_FILENAME} \.(gif|jpe?g?|png)$ [NC]' . PHP_EOL; + $rules .= 'RewriteCond %{HTTP_REFERER} !^' . $url_string . ' [NC]' . PHP_EOL; + $rules .= 'RewriteRule \.(gif|jpe?g?|png)$ - [F,NC,L]' . PHP_EOL; + $rules .= '' . PHP_EOL; + $rules .= AIOWPSecurity_Utility_Htaccess::$prevent_image_hotlinks_marker_end . PHP_EOL; //Add feature marker end + } + + return $rules; + } + + /** + * This function will write any custom htaccess rules into the server's .htaccess file + * @return string + */ + static function getrules_custom_rules() + { + global $aio_wp_security; + $rules = ''; + if ($aio_wp_security->configs->get_value('aiowps_enable_custom_rules') == '1') { + $custom_rules = $aio_wp_security->configs->get_value('aiowps_custom_rules'); + $rules .= AIOWPSecurity_Utility_Htaccess::$custom_rules_marker_start . PHP_EOL; //Add feature marker start + $rules .= $custom_rules . PHP_EOL; + $rules .= AIOWPSecurity_Utility_Htaccess::$custom_rules_marker_end . PHP_EOL; //Add feature marker end + } + + return $rules; + } + + + /* + * This function will do a quick check to see if a file's contents are actually .htaccess specific. + * At the moment it will look for the following tag somewhere in the file - "# BEGIN WordPress" + * If it finds the tag it will deem the file as being .htaccess specific. + * This was written to supplement the .htaccess restore functionality + */ + + static function check_if_htaccess_contents($file) + { + $is_htaccess = false; + $file_contents = file_get_contents($file); + if ($file_contents === FALSE || strlen($file_contents) == 0) { + return -1; + } + + if ((strpos($file_contents, '# BEGIN WordPress') !== false) || (strpos($file_contents, '# BEGIN') !== false)) { + $is_htaccess = true; //It appears that we have some sort of .htacces file + } else { + //see if we're at the end of the section + $is_htaccess = false; + } + + if ($is_htaccess) { + return 1; + } else { + return -1; + } + } + + /* + * This function will take a URL string and convert it to a form useful for using in htaccess rules. + * Example: If URL passed to function = "http://www.mysite.com" + * Result = "http(s)?://(.*)?mysite\.com" + */ + static function return_regularized_url($url) + { + if (filter_var($url, FILTER_VALIDATE_URL)) { + $xyz = explode('.', $url); + $y = ''; + if (count($xyz) > 1) { + $j = 1; + foreach ($xyz as $x) { + if (strpos($x, 'www') !== false) { + $y .= str_replace('www', '(.*)?', $x); + } else if ($j == 1) { + $y .= $x; + } else if ($j > 1) { + $y .= '\.' . $x; + } + $j++; + } + //Now replace the "http" with "http(s)?" to cover both secure and non-secure + if (strpos($y, 'https') !== false) { + $y = str_replace('https', 'http(s)?', $y); + }else if (strpos($y, 'http') !== false) { + $y = str_replace('http', 'http(s)?', $y); + } + return $y; + } else { + return $url; + } + } else { + return FALSE; + } + } + + /** + * Returns a string with directive that contains rules + * to effectively block access to any file that has basename matching + * $filename under Apache webserver. + * + * @link http://httpd.apache.org/docs/current/mod/core.html#files + * + * @param string $filename + * @return string + */ + protected static function create_apache2_access_denied_rule($filename) { + return << + + Require all denied + + + Order deny,allow + Deny from all + + + +END; + // Keep the empty line at the end of heredoc string, + // otherwise the string will not end with end-of-line character! + } + + + /** + * Convert an array of optionally asterisk-masked or partial IPv4 addresses + * into network/netmask notation. Netmask value for a "full" IP is not + * added (see example below) + * + * Example: + * In: array('1.2.3.4', '5.6', '7.8.9.*') + * Out: array('1.2.3.4', '5.6.0.0/16', '7.8.9.0/24') + * + * Simple validation is performed: + * In: array('1.2.3.4.5', 'abc', '1.2.xyz.4') + * Out: array() + * + * Simple sanitization is performed: + * In: array('6.7.*.9') + * Out: array('6.7.0.0/16') + * + * @param array $ips + * @return array + */ + protected static function add_netmask($ips) { + + $output = array(); + + foreach ( $ips as $ip ) { + + $parts = explode('.', $ip); + + // Skip any IP that is empty, has more parts than expected or has + // a non-numeric first part. + if ( empty($parts) || (count($parts) > 4) || !is_numeric($parts[0]) ) { + continue; + } + + $ip_out = array( $parts[0] ); + $netmask = 8; + + for ( $i = 1, $force_zero = false; ($i < 4) && $ip_out; $i++ ) { + if ( $force_zero || !isset($parts[$i]) || ($parts[$i] === '') || ($parts[$i] === '*') ) { + $ip_out[$i] = '0'; + $force_zero = true; // Forces all subsequent parts to be a zero + } + else if ( is_numeric($parts[$i]) ) { + $ip_out[$i] = $parts[$i]; + $netmask += 8; + } + else { + // Invalid IP part detected, invalidate entire IP + $ip_out = false; + } + } + + if ( $ip_out ) { + // Glue IP back together, add netmask if IP denotes a subnet, store for output. + $output[] = implode('.', $ip_out) . (($netmask < 32) ? ('/' . $netmask) : ''); + } + } + + return $output; + } +} \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-utility-ip-address.php b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-utility-ip-address.php new file mode 100644 index 0000000..8a6e742 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-utility-ip-address.php @@ -0,0 +1,178 @@ +debug_logger->log_debug("AIOWPSecurity_Utility_IP - Invalid IP received ".$ip,4); + } + return $ip_range; + } + + + static function create_ip_list_array_from_string_with_newline($ip_addresses) + { + $ip_list_array = explode(PHP_EOL, $ip_addresses); + return $ip_list_array; + } + + static function validate_ip_list($ip_list_array, $list_type='') + { + @ini_set('auto_detect_line_endings', true); + $errors = ''; + + //validate list + $submitted_ips = $ip_list_array; + $list = array(); + + if(!empty($submitted_ips)) + { + foreach($submitted_ips as $item) + { + $item = filter_var($item, FILTER_SANITIZE_STRING); + if (strlen( $item ) > 0) + { + //ipv6 - for now we will support only whole ipv6 addresses, NOT ranges + if(strpos($item, ':') !== false){ + //possible ipv6 addr + $res = WP_Http::is_ip_address($item); + if(FALSE === $res){ + $errors .= '

      '.$item.__(' is not a valid ip address format.', 'all-in-one-wp-security-and-firewall').'

      '; + }else if($res == '6'){ + $list[] = trim($item); + } + continue; + } + + $ipParts = explode('.', $item); + $isIP = 0; + $partcount = 1; + $goodip = true; + $foundwild = false; + + if (count($ipParts) < 2) + { + $errors .= '

      '.$item.__(' is not a valid ip address format.', 'all-in-one-wp-security-and-firewall').'

      '; + continue; + } + + foreach ($ipParts as $part) + { + if ($goodip == true) + { + if ((is_numeric(trim($part)) && trim($part) <= 255 && trim($part) >= 0) || trim($part) == '*') + { + $isIP++; + } + + switch ($partcount) + { + case 1: + if (trim($part) == '*') + { + $goodip = false; + $errors .= '

      '.$item.__(' is not a valid ip address format.', 'all-in-one-wp-security-and-firewall').'

      '; + } + break; + case 2: + if (trim($part) == '*') + { + $foundwild = true; + } + break; + default: + if (trim($part) != '*') + { + if ($foundwild == true) + { + $goodip = false; + $errors .= '

      '.$item.__(' is not a valid ip address format.', 'all-in-one-wp-security-and-firewall').'

      '; + } + } + else + { + $foundwild = true; + } + break; + } + + $partcount++; + } + } + if (ip2long(trim(str_replace('*', '0', $item))) == false) + { //invalid ip + $errors .= '

      '.$item.__(' is not a valid ip address format.', 'all-in-one-wp-security-and-firewall').'

      '; + } + elseif (strlen($item) > 4 && !in_array($item, $list)) + { + $current_user_ip = AIOWPSecurity_Utility_IP::get_user_ip_address(); + if ($current_user_ip == $item && $list_type == 'blacklist') + { + //You can't ban your own IP + $errors .= '

      '.__('You cannot ban your own IP address: ', 'all-in-one-wp-security-and-firewall').$item.'

      '; + } + else + { + $list[] = trim($item); + } + } + } + } + } + else{ + //This function was called with an empty IP address array list + } + + if (strlen($errors)> 0) + { + $return_payload = array(-1, array($errors)); + return $return_payload; + } + + if (sizeof($list) >= 1) + { + sort($list); + $list = array_unique($list, SORT_STRING); + + $return_payload = array(1, $list); + return $return_payload; + } + + $return_payload = array(1, array()); + return $return_payload; + } +} \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-utility.php b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-utility.php new file mode 100644 index 0000000..60b9522 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-utility.php @@ -0,0 +1,600 @@ +Error! The URL value is empty. Please specify a correct URL value to redirect to!"; + exit; + } + if (!headers_sent()) { + header('Location: ' . $url); + } else { + echo ''; + } + if ($exit == '1') { + exit; + } + } + + /** + * Returns logout URL with "after logout URL" query params + * + * @param type $after_logout_url + * @return type + */ + static function get_logout_url_with_after_logout_url_value($after_logout_url) + { + return AIOWPSEC_WP_URL . '?aiowpsec_do_log_out=1&after_logout=' . $after_logout_url; + } + + /** + * Checks if a particular username exists in the WP Users table + * @global type $wpdb + * @param type $username + * @return boolean + */ + static function check_user_exists($username) + { + global $wpdb; + + //if username is empty just return false + if ($username == '') { + return false; + } + + //If multisite + if (AIOWPSecurity_Utility::is_multisite_install()) { + $blog_id = get_current_blog_id(); + $admin_users = get_users('blog_id=' . $blog_id . '&orderby=login&role=administrator'); + foreach ($admin_users as $user) { + if ($user->user_login == $username) { + return true; + } + } + return false; + } + + //check users table + $sanitized_username = sanitize_text_field($username); + $sql_1 = $wpdb->prepare("SELECT user_login FROM $wpdb->users WHERE user_login=%s", $sanitized_username); + $user_login = $wpdb->get_var($sql_1); + if ($user_login == $sanitized_username) { + return true; + } else { + //make sure that the sanitized username is an integer before comparing it to the users table's ID column + $sanitized_username_is_an_integer = (1 === preg_match('/^\d+$/', $sanitized_username)); + if ($sanitized_username_is_an_integer) { + $sql_2 = $wpdb->prepare("SELECT ID FROM $wpdb->users WHERE ID=%d", intval($sanitized_username)); + $userid = $wpdb->get_var($sql_2); + return ($userid == $sanitized_username); + } else { + return false; + } + } + } + + /** + * This function will return a list of user accounts which have login and nick names which are identical + * @global type $wpdb + * @return type + */ + static function check_identical_login_and_nick_names() + { + global $wpdb; + $accounts_found = $wpdb->get_results("SELECT ID,user_login FROM `" . $wpdb->users . "` WHERE user_login<=>display_name;", ARRAY_A); + return $accounts_found; + } + + + static function add_query_data_to_url($url, $name, $value) + { + if (strpos($url, '?') === false) { + $url .= '?'; + } else { + $url .= '&'; + } + $url .= $name . '=' . urlencode($value); + return $url; + } + + + /** + * Generates a random alpha-numeric number + * @param type $string_length + * @return string + */ + static function generate_alpha_numeric_random_string($string_length) + { + //Charecters present in table prefix + $allowed_chars = 'abcdefghijklmnopqrstuvwxyz0123456789'; + $string = ''; + //Generate random string + for ($i = 0; $i < $string_length; $i++) { + $string .= $allowed_chars[rand(0, strlen($allowed_chars) - 1)]; + } + return $string; + } + + + /** + * Generates a random string using a-z characters + * @param type $string_length + * @return string + */ + static function generate_alpha_random_string($string_length) + { + //Charecters present in table prefix + $allowed_chars = 'abcdefghijklmnopqrstuvwxyz'; + $string = ''; + //Generate random string + for ($i = 0; $i < $string_length; $i++) { + $string .= $allowed_chars[rand(0, strlen($allowed_chars) - 1)]; + } + return $string; + } + + /** + * Sets cookie + * @param type $cookie_name + * @param type $cookie_value + * @param type $expiry_seconds + * @param type $path + * @param string $cookie_domain + */ + static function set_cookie_value($cookie_name, $cookie_value, $expiry_seconds = 86400, $path = '/', $cookie_domain = '') + { + $expiry_time = time() + intval($expiry_seconds); + if (empty($cookie_domain)) { + $cookie_domain = COOKIE_DOMAIN; + } + setcookie($cookie_name, $cookie_value, $expiry_time, $path, $cookie_domain); + } + + /** + * Gets cookie + * @param type $cookie_name + * @return string + */ + static function get_cookie_value($cookie_name) + { + if (isset($_COOKIE[$cookie_name])) { + return $_COOKIE[$cookie_name]; + } + return ""; + } + + /** + * Checks if installation is multisite + * @return type + */ + static function is_multisite_install() + { + return function_exists('is_multisite') && is_multisite(); + } + + /** + * This is a general yellow box message for when we want to suppress a feature's config items because site is subsite of multi-site + */ + static function display_multisite_message() + { + echo '
      '; + echo '

      ' . __('The plugin has detected that you are using a Multi-Site WordPress installation.', 'all-in-one-wp-security-and-firewall') . '

      +

      ' . __('This feature can only be configured by the "superadmin" on the main site.', 'all-in-one-wp-security-and-firewall') . '

      '; + echo '
      '; + } + + /** + * Modifies the wp-config.php file to disable PHP file editing from the admin panel + * This function will add the following code: + * define('DISALLOW_FILE_EDIT', false); + * + * NOTE: This function will firstly check if the above code already exists + * and it will modify the bool value, otherwise it will insert the code mentioned above + * + * @global type $aio_wp_security + * @return boolean + */ + static function disable_file_edits() + { + global $aio_wp_security; + $edit_file_config_entry_exists = false; + + //Config file path + $config_file = AIOWPSecurity_Utility_File::get_wp_config_file_path(); + + //Get wp-config.php file contents so we can check if the "DISALLOW_FILE_EDIT" variable already exists + $config_contents = file($config_file); + + foreach ($config_contents as $line_num => $line) { + if (strpos($line, "'DISALLOW_FILE_EDIT', false")) { + $config_contents[$line_num] = str_replace('false', 'true', $line); + $edit_file_config_entry_exists = true; + //$this->show_msg_updated(__('Settings Saved - The ability to edit PHP files via the admin the panel has been DISABLED.', 'all-in-one-wp-security-and-firewall')); + } else if (strpos($line, "'DISALLOW_FILE_EDIT', true")) { + $edit_file_config_entry_exists = true; + //$this->show_msg_updated(__('Your system config file is already configured to disallow PHP file editing.', 'all-in-one-wp-security-and-firewall')); + return true; + + } + + //For wp-config.php files originating from early WP versions we will remove the closing php tag + if (strpos($line, "?>") !== false) { + $config_contents[$line_num] = str_replace("?>", "", $line); + } + } + + if (!$edit_file_config_entry_exists) { + //Construct the config code which we will insert into wp-config.php + $new_snippet = '//Disable File Edits' . PHP_EOL; + $new_snippet .= 'define(\'DISALLOW_FILE_EDIT\', true);'; + $config_contents[] = $new_snippet; //Append the new snippet to the end of the array + } + + //Make a backup of the config file + if (!AIOWPSecurity_Utility_File::backup_and_rename_wp_config($config_file)) { + AIOWPSecurity_Admin_Menu::show_msg_error_st(__('Failed to make a backup of the wp-config.php file. This operation will not go ahead.', 'all-in-one-wp-security-and-firewall')); + //$aio_wp_security->debug_logger->log_debug("Disable PHP File Edit - Failed to make a backup of the wp-config.php file.",4); + return false; + } else { + //$this->show_msg_updated(__('A backup copy of your wp-config.php file was created successfully....', 'all-in-one-wp-security-and-firewall')); + } + + //Now let's modify the wp-config.php file + if (AIOWPSecurity_Utility_File::write_content_to_file($config_file, $config_contents)) { + //$this->show_msg_updated(__('Settings Saved - Your system is now configured to not allow PHP file editing.', 'all-in-one-wp-security-and-firewall')); + return true; + } else { + //$this->show_msg_error(__('Operation failed! Unable to modify wp-config.php file!', 'all-in-one-wp-security-and-firewall')); + $aio_wp_security->debug_logger->log_debug("Disable PHP File Edit - Unable to modify wp-config.php", 4); + return false; + } + } + + /** + * Modifies the wp-config.php file to allow PHP file editing from the admin panel + * This func will modify the following code by replacing "true" with "false": + * define('DISALLOW_FILE_EDIT', true); + * + * @global type $aio_wp_security + * @return boolean + */ + static function enable_file_edits() + { + global $aio_wp_security; + $edit_file_config_entry_exists = false; + + //Config file path + $config_file = AIOWPSecurity_Utility_File::get_wp_config_file_path(); + + //Get wp-config.php file contents + $config_contents = file($config_file); + foreach ($config_contents as $line_num => $line) { + if (strpos($line, "'DISALLOW_FILE_EDIT', true")) { + $config_contents[$line_num] = str_replace('true', 'false', $line); + $edit_file_config_entry_exists = true; + } else if (strpos($line, "'DISALLOW_FILE_EDIT', false")) { + $edit_file_config_entry_exists = true; + //$this->show_msg_updated(__('Your system config file is already configured to allow PHP file editing.', 'all-in-one-wp-security-and-firewall')); + return true; + } + } + + if (!$edit_file_config_entry_exists) { + //if the DISALLOW_FILE_EDIT settings don't exist in wp-config.php then we don't need to do anything + //$this->show_msg_updated(__('Your system config file is already configured to allow PHP file editing.', 'all-in-one-wp-security-and-firewall')); + return true; + } else { + //Now let's modify the wp-config.php file + if (AIOWPSecurity_Utility_File::write_content_to_file($config_file, $config_contents)) { + //$this->show_msg_updated(__('Settings Saved - Your system is now configured to allow PHP file editing.', 'all-in-one-wp-security-and-firewall')); + return true; + } else { + //$this->show_msg_error(__('Operation failed! Unable to modify wp-config.php file!', 'all-in-one-wp-security-and-firewall')); + //$aio_wp_security->debug_logger->log_debug("Disable PHP File Edit - Unable to modify wp-config.php",4); + return false; + } + } + } + + + /** + * Inserts event logs to the database + * For now we are using for 404 events but in future will expand for other events + * + * @param string $event_type : Event type, eg, 404 (see below for list of event types) + * @param string $username (optional): username + * + * Event types: 404 (...add more as we expand this) + * @param $event_type + * @param string $username + * @return bool + */ + static function event_logger($event_type, $username = '') + { + global $wpdb, $aio_wp_security; + + //Some initialising + $url = ''; + $referer_info = ''; + + $events_table_name = AIOWPSEC_TBL_EVENTS; + + $ip_or_host = AIOWPSecurity_Utility_IP::get_user_ip_address(); //Get the IP address of user + $username = sanitize_user($username); + $user = get_user_by('login', $username); //Returns WP_User object if exists + if ($user) { + //If valid user set variables for DB storage later on + $user_id = (absint($user->ID) > 0) ? $user->ID : 0; + } else { + //If the login attempt was made using a non-existent user then let's set user_id to blank and record the attempted user login name for DB storage later on + $user_id = 0; + } + + if ($event_type == '404') { + //if 404 event get some relevant data + $url = isset($_SERVER['REQUEST_URI']) ? esc_attr($_SERVER['REQUEST_URI']) : ''; + $referer_info = isset($_SERVER['HTTP_REFERER']) ? esc_attr($_SERVER['HTTP_REFERER']) : ''; + } + + $current_time = date_i18n( 'Y-m-d H:i:s' ); + $data = array( + 'event_type' => $event_type, + 'username' => $username, + 'user_id' => $user_id, + 'event_date' => $current_time, + 'ip_or_host' => $ip_or_host, + 'referer_info' => $referer_info, + 'url' => $url, + 'event_data' => '', + ); + + $data = apply_filters( 'filter_event_logger_data', $data ); + //log to database + $result = $wpdb->insert($events_table_name, $data); + if ($result === FALSE) { + $aio_wp_security->debug_logger->log_debug("event_logger: Error inserting record into " . $events_table_name, 4);//Log the highly unlikely event of DB error + return false; + } + return true; + } + + /** + * Checks if IP address is locked + * + * @param string $ip : ip address + * @returns TRUE if locked, FALSE otherwise + * + **/ + static function check_locked_ip($ip) + { + global $wpdb; + $login_lockdown_table = AIOWPSEC_TBL_LOGIN_LOCKDOWN; + $locked_ip = $wpdb->get_row("SELECT * FROM $login_lockdown_table " . + "WHERE release_date > now() AND " . + "failed_login_ip = '" . esc_sql($ip) . "'", ARRAY_A); + if ($locked_ip != NULL) { + return TRUE; + } else { + return FALSE; + } + } + + /** + * Returns list of IP addresses locked out + * @global type $wpdb + * @return array of addresses found or FALSE otherwise + */ + static function get_locked_ips() + { + global $wpdb; + $login_lockdown_table = AIOWPSEC_TBL_LOGIN_LOCKDOWN; + $locked_ips = $wpdb->get_results("SELECT * FROM $login_lockdown_table " . + "WHERE release_date > now()", ARRAY_A); + if ($locked_ips != NULL) { + return $locked_ips; + } else { + return FALSE; + } + } + + + /** + * Locks an IP address - Adds an entry to the aiowps_lockdowns table + * @global type $wpdb + * @global type $aio_wp_security + * @param type $ip + * @param type $lock_reason + * @param type $username + */ + static function lock_IP($ip, $lock_reason = '', $username = '') + { + global $wpdb, $aio_wp_security; + $login_lockdown_table = AIOWPSEC_TBL_LOGIN_LOCKDOWN; + $lockout_time_length = $aio_wp_security->configs->get_value('aiowps_lockout_time_length'); //TODO add a setting for this feature + $username = sanitize_user($username); + $user = get_user_by('login', $username); //Returns WP_User object if exists + + if (FALSE == $user) { + // Not logged in. + $username = ''; + $user_id = 0; + } else { + // Logged in. + $username = sanitize_user($user->user_login); + $user_id = $user->ID; + } + + $ip_str = esc_sql($ip); + $insert = "INSERT INTO " . $login_lockdown_table . " (user_id, user_login, lockdown_date, release_date, failed_login_IP, lock_reason) " . + "VALUES ('" . $user_id . "', '" . $username . "', now(), date_add(now(), INTERVAL " . + $lockout_time_length . " MINUTE), '" . $ip_str . "', '" . $lock_reason . "')"; + $result = $wpdb->query($insert); + if ($result > 0) { + } else if ($result === FALSE) { + $aio_wp_security->debug_logger->log_debug("lock_IP: Error inserting record into " . $login_lockdown_table, 4);//Log the highly unlikely event of DB error + } + } + + /** + * Returns an array of blog_ids for a multisite install + * + * @global type $wpdb + * @global type $wpdb + * @return array or empty array if not multisite + */ + static function get_blog_ids() + { + global $wpdb; + if (AIOWPSecurity_Utility::is_multisite_install()) { + global $wpdb; + $blog_ids = $wpdb->get_col("SELECT blog_id FROM " . $wpdb->prefix . "blogs"); + } else { + $blog_ids = array(); + } + return $blog_ids; + } + + + /** + * This function will delete the oldest rows from a table which are over the max amount of rows specified + * @global type $wpdb + * @global type $aio_wp_security + * @param type $table_name + * @param type $max_rows + * @return bool + */ + static function cleanup_table($table_name, $max_rows = '10000') + { + global $wpdb, $aio_wp_security; + + $num_rows = $wpdb->get_var("select count(*) from $table_name"); + $result = true; + if ($num_rows > $max_rows) { + //if the table has more than max entries delete oldest rows + + $del_sql = "DELETE FROM $table_name + WHERE id <= ( + SELECT id + FROM ( + SELECT id + FROM $table_name + ORDER BY id DESC + LIMIT 1 OFFSET $max_rows + ) foo_tmp + )"; + + $result = $wpdb->query($del_sql); + if ($result === false) { + $aio_wp_security->debug_logger->log_debug("AIOWPSecurity_Utility::cleanup_table failed for table name: " . $table_name, 4); + } + } + return ($result === false) ? false : true; + } + + /** + * Delete expired captcha info transients + * + * Note: A unique instance these transients is created everytime the login page is loaded with captcha enabled + * This function will help prune the options table of old expired entries. + * + * @global wpdb $wpdb + */ + static function delete_expired_captcha_transients(){ + global $wpdb; + + $current_unix_time = current_time( 'timestamp', true ); + $tbl = $wpdb->prefix . 'options'; + $query = "SELECT * FROM ".$tbl." WHERE `option_name` LIKE '%\_transient\_timeout\_aiowps\_captcha\_string\_info%' AND `option_value` < ".$current_unix_time; + $res = $wpdb->get_results( $query, ARRAY_A ); + if(!empty($res)){ + foreach($res as $item){ + $transient_name = str_replace('_transient_timeout_', '', $item['option_name']); //extract transient name + AIOWPSecurity_Utility::is_multisite_install()?delete_site_transient($transient_name):delete_transient($transient_name); + } + } + } + + /** + * Gets server type. + * + * @return string or -1 if server is not supported + */ + static function get_server_type() + { + //figure out what server they're using + if (strstr(strtolower(filter_var($_SERVER['SERVER_SOFTWARE'], FILTER_SANITIZE_STRING)), 'apache')) { + return 'apache'; + } else if (strstr(strtolower(filter_var($_SERVER['SERVER_SOFTWARE'], FILTER_SANITIZE_STRING)), 'nginx')) { + return 'nginx'; + } else if (strstr(strtolower(filter_var($_SERVER['SERVER_SOFTWARE'], FILTER_SANITIZE_STRING)), 'litespeed')) { + return 'litespeed'; + } else if (strstr(strtolower(filter_var($_SERVER['SERVER_SOFTWARE'], FILTER_SANITIZE_STRING)), 'iis')) { + return 'iis'; + } else { //unsupported server + return -1; + } + + } + + /** + * Checks if the string exists in the array key value of the provided array. + * If it doesn't exist, it returns the first key element from the valid values. + * @param type $to_check + * @param type $valid_values + * @return type + */ + static function sanitize_value_by_array($to_check, $valid_values) + { + $keys = array_keys($valid_values); + $keys = array_map('strtolower', $keys); + if (in_array(strtolower($to_check), $keys)) { + return $to_check; + } + return reset($keys); //Return the first element from the valid values + } + +} diff --git a/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-wp-footer-content.php b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-wp-footer-content.php new file mode 100644 index 0000000..e90750b --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-wp-footer-content.php @@ -0,0 +1,60 @@ +configs->get_value('aiowps_copy_protection') == '1'; + if ( $copy_protection_active && !current_user_can(AIOWPSEC_MANAGEMENT_PERMISSION) ) { + $this->output_copy_protection_code(); + } + + //TODO - add other footer output content here + } + + function output_copy_protection_code() { + ?> + + + configs->get_value('aiowps_enable_rename_login_page') == '1') { + include_once(AIO_WP_SECURITY_PATH . '/classes/wp-security-process-renamed-login-page.php'); + $login_object = new AIOWPSecurity_Process_Renamed_Login_Page(); + AIOWPSecurity_Process_Renamed_Login_Page::renamed_login_init_tasks(); + } + + //For site lockout feature (ie, maintenance mode). It needs to be checked after the rename login page + if ($aio_wp_security->configs->get_value('aiowps_site_lockout') == '1') { + if (!is_user_logged_in() && !current_user_can('administrator') && !is_admin() && !in_array($GLOBALS['pagenow'], array('wp-login.php'))) { + self::site_lockout_tasks(); + } + } + } + + static function site_lockout_tasks() { + $lockout_output = apply_filters('aiowps_site_lockout_output', ''); + if (empty($lockout_output)) { + nocache_headers(); + header("HTTP/1.0 503 Service Unavailable"); + remove_action('wp_head', 'head_addons', 7); + $template = apply_filters('aiowps_site_lockout_template_include', AIO_WP_SECURITY_PATH . '/other-includes/wp-security-visitor-lockout-page.php'); + include_once($template); + } else { + echo $lockout_output; + } + + exit(); + } + +} \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/css/index.html b/plugins/all-in-one-wp-security-and-firewall/css/index.html new file mode 100644 index 0000000..e69de29 diff --git a/plugins/all-in-one-wp-security-and-firewall/css/wp-security-admin-styles.css b/plugins/all-in-one-wp-security-and-firewall/css/wp-security-admin-styles.css new file mode 100644 index 0000000..1482ae8 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/css/wp-security-admin-styles.css @@ -0,0 +1,399 @@ +.aio_half_width{width: 50%;} +.aio_one_third_width{width: 33%;} +.aio_width_80{width: 80%;} +.aio_max_500{max-width: 500px;} +.aio_spacer_15{margin-top:15px;} +.aio_spacer_10_tb{margin:10px 0;} +.aio_spacer_10_tblr{margin:10px;} +.aio_clear_float{clear: both;} +.aio_float_left{float: left;} +.aio_padding_10{padding: 10px !important;} +.aio_section_separator_1{border-bottom: 1px solid #dedede; height: 10px;} + +.aiowps_admin_ul_grp1{ + list-style: circle; + padding: 0 0 0 30px; +} + +.aio_grey_box{ + margin: 10px 0 15px; + background-color: #ECECEC; + border: 1px solid #CFCFCF; + padding: 0 0 0 1em; +} + +.aio_yellow_box{ + margin: 10px 0 15px; + background-color: #FFFFE0; + border-color: #E6DB55; + border-radius: 3px 3px 3px 3px; + border-style: solid; + border-width: 1px; + padding: 0 0 0 1em; +} + +.aio_blue_box{ + margin: 10px 0 15px; + background-color: #F0F9FF; + border-color: #1166BB; + color: #1166BB; + border-radius: 3px 3px 3px 3px; + border-style: solid; + border-width: 1px; + padding: 0 0 0 1em; + line-height: 20px; +} + +.aio_green_box { + margin: 10px 0 15px; + background-color: #CCF4D6; + border-color: #059B53; + color: #043B14; + border-radius: 3px 3px 3px 3px; + border-style: solid; + border-width: 1px; + padding: 0 1em 0 1em; +} + +.aio_red_box { + margin: 10px 0 15px; + background-color: #FFEBE8; + border-color: #CC0000; + color: #333333; + border-radius: 3px 3px 3px 3px; + border-style: solid; + border-width: 1px; + padding: 0 1em 0 1em; +} + +.aio_orange_box{ + margin: 10px 0 15px; + background-color: #FFB900; + border-color: #D64500; + border-radius: 3px 3px 3px 3px; + border-style: solid; + border-width: 1px; + padding: 0 1em 0 1em; +} + + +.aio_success_with_icon { + background-image: url("../images/success.png"); + background-repeat: no-repeat; + color: #529901; + padding-left: 20px; + font-size: 14px; +} +.aio_error_with_icon { + color: #ff0000; + background-image: url("../images/error.png"); + background-repeat: no-repeat; + padding-left: 20px; + font-size: 14px; +} +.aio_info_with_icon { + background-image: url("../images/info-icon.png"); + background-repeat: no-repeat; + color: #1166BB; + padding-left: 20px; + font-size: 14px; +} + +.file_permission_table{ + margin: 20px 0; +} +.file_permission_table thead tr th{ + background:#CCCCCC; +} +.file_permission_table td{ + padding: 7px; + font-family: "Courier 10 Pitch",Courier,monospace; + color: #262626; + border-bottom: 1px solid #F2F2F2; + border-top:none; +} +.aio_table_row_red{ + background-color:#FD6D73; +} +.aio_table_row_yellow{ + background-color:#F5E679; +} +.aio_table_row_green{ + background-color:#C8F18B; +} + +.aiowps_loading_1{ + margin:0 5px; +} + +.aio_text_area_file_output{ + background: none repeat scroll 0 0 #F9F9F9; + font-family: Consolas,Monaco,monospace; + font-size: 12px; + outline: 0 none; +} + +.aiowps_more_info_anchor{ + display: inline-block; + background-color: #D9D9D9; + color: #21759B; + font: 0.9em/1.455em "Lucida Grande","Lucida Sans Unicode",Tahoma,Verdana,sans-serif; + text-decoration: none; + padding: 3px 5px; +} +.aiowps_more_info_anchor:hover { + color: #333333; + cursor: pointer; +} +.aiowps_more_info_toggle_char { + display: inline-block; + margin-right: 3px; + padding: 0 3px; + text-align: center; + background-color: #EDEDED; + width: 10px; +} +.aiowps_more_info_body{ + margin: 10px 0 15px; + background-color: #FFFFE0; + border-color: #E6DB55; + border-radius: 3px 3px 3px 3px; + border-style: solid; + border-width: 1px; + padding: 0 0 0 1em; +} + +.aiowps_spread_the_word_widget{ +} + +.aiowps_dashboard_box_small{ + float:left; + max-width:350px; + margin-right:15px; +} + +#security_strength_chart_div table{ + margin-right: auto !important; + margin-left:auto !important; +} +.aiowps_dashboard_widget_footer{ + background-color: #E6E6E6; + padding: 10px; +} + +.aiowps_feature_status_container{ + display:block; + margin: 10px 0; +} +.aiowps_feature_status_name{ + width:50%; + font-weight: bold; + float:left; + padding: 5px 10px 5px 0; +} +.aiowps_feature_status_bar{ + display:block; + float:left; + width: 120px; + height: 26px; + position: relative; + background: rgba(0, 0, 0, 0.25); + border-radius: 3px; + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px rgba(255, 255, 255, 0.1); +} +.aiowps_feature_status_label{ + display: block; + float: left; + padding: 4px; + text-align: center; + width: 52px; + color:#F7F7F7; + font-weight:bold; + text-transform: uppercase; +} +.aiowps_feature_status_on{ + color: #043B14; + background: #65bd63; + border-radius: 3px; + background-image: -webkit-linear-gradient(top, #9dd993, #65bd63); + background-image: -moz-linear-gradient(top, #9dd993, #65bd63); + background-image: -o-linear-gradient(top, #9dd993, #65bd63); + background-image: linear-gradient(to bottom, #9dd993, #65bd63); + -webkit-box-shadow: inset 0 1px rgba(255, 255, 255, 0.5), 0 0 2px rgba(0, 0, 0, 0.2); + box-shadow: inset 0 1px rgba(255, 255, 255, 0.5), 0 0 2px rgba(0, 0, 0, 0.2); +} +.aiowps_feature_status_off{ + color: #4D0000; + background: #BD6363; + border-radius: 3px; + background-image: -webkit-linear-gradient(top, #D99393, #BD6363); + background-image: -moz-linear-gradient(top, #D99393, #BD6363); + background-image: -o-linear-gradient(top, #D99393, #BD6363); + background-image: linear-gradient(top bottom, #D99393, #BD6363); + -webkit-box-shadow: inset 0 1px rgba(255, 255, 255, 0.5), 0 0 2px rgba(0, 0, 0, 0.2); + box-shadow: inset 0 1px rgba(255, 255, 255, 0.5), 0 0 2px rgba(0, 0, 0, 0.2); +} + +.aiowps_feature_details_badge{ + +} +.aiowps_feature_details_badge_difficulty{ + display: inline-block; + background: url('../images/feature-difficulty-badge-bg.png') no-repeat; + width:150px; + height:65px; +} +.aiowps_feature_details_badge_difficulty_text{ + display: inline-block; + height:36px; + width: 105px; + margin: 8px 0 0 36px; + color: #595170; + font-size:14px; + font-family: helvetica; + font-weight: bold; + text-align: center; + padding-top:7px; +} +.aiowps_feature_details_badge_points{ + display: inline-block; + background: url('../images/feature-points-badge-bg.png') no-repeat; + width:150px; + height:65px; + margin-left: 10px; +} +.aiowps_feature_details_badge_points_text{ + display: inline-block; + height:36px; + width: 105px; + margin: 8px 0 0 36px; + color: #545B5C; + font-size:20px; + font-family: georgia; + font-weight: bold; + text-align: center; + padding-top:5px; +} + +#aiowps_pw_tool_main{ + width:440px; + margin:40px auto 120px; + position:relative; + text-align:center; + background: url("../images/form_bg.png") no-repeat scroll 0 0 transparent; + height: 450px; + padding-top: 50px; +} + +.aiowps_password_tool_field{ + text-align:center; + padding-top: 40px; +} + +#aiowps_pw_tool_main .meterText { + color: #575757; + font-size: 10px; + left: 189px; + line-height: 1.1; + position: absolute; + top: 485px; + width: 60px; +} + + +#aiowps_pw_tool_main .arrow{ + background: url("../images/arrow.png") no-repeat -10px 0; + height: 120px; + left: 249px; + position: absolute; + top: 301px; + width: 11px; + + /* Defining a smooth CSS3 animation for turning the arrow */ + + -moz-transition:0.3s; + -webkit-transition:0.3s; + -o-transition:0.3s; + -ms-transition:0.3s; + transition:0.3s; + + /* Putting the arrow in its initial position */ + + -moz-transform: rotate(-134deg); + -webkit-transform: rotate(-134deg); + -o-transform: rotate(-134deg); + -ms-transform: rotate(-134deg); + transform: rotate(-134deg); +} + +#aiowps_pw_tool_main .arrowCap{ + background: url("../images/arrow.png") no-repeat -43px 0; + height: 20px; + left: 208px; + position: absolute; + top: 351px; + width: 20px; + z-index: 10; +} + +#aiowps_pw_tool_main .meterText{ + color: #575757; + font-size: 10px; + left: 189px; + line-height: 1.1; + position: absolute; + top: 385px; + width: 60px; +} + +.aiowps_password_crack_info_text{ + font-size: 2.125em; + line-height: 1.16667em; + padding-left: 6.25%; + padding-right: 6.25%; + text-align: center; +} + +#aiowps_password_crack_time_calculation{ + font-size: 1.125em; + line-height: 1.16667em; + padding-left: 6.25%; + padding-right: 6.25%; + text-align: center; + color: darkorange; +} + +/* bootstrap type labels */ +.aiowps_dashboard_table{ + table-layout: fixed; +} + +.aiowps-label-danger { + background-color: #d9534f; +} + +.aiowps-label-warning { + background-color: #f0ad4e; +} + +.aiowps-label-primary { + background-color: #337ab7; +} + +.aiowps-label-success { + background-color: #5cb85c; +} + +.aiowps-label { + border-radius: 0.25em; + color: #fff; + display: inline; + font-size: 75%; + font-weight: 700; + line-height: 1; + padding: 0.2em 0.6em 0.3em; + text-align: center; + vertical-align: baseline; + white-space: nowrap; +} diff --git a/plugins/all-in-one-wp-security-and-firewall/css/wp-security-site-lockout-page.css b/plugins/all-in-one-wp-security-and-firewall/css/wp-security-site-lockout-page.css new file mode 100644 index 0000000..4eec26a --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/css/wp-security-site-lockout-page.css @@ -0,0 +1,27 @@ +body{ + background-color: #404040 !important; +} +.aiowps-site-lockout-body{ + +} + +.aiowps-site-lockout-body-content{ + +} + +.aiowps-site-lockout-box{ + margin-right: auto; + margin-left: auto; + max-width: 800px; + margin-top: 100px; + padding: 30px; + border: 2px solid #FFE20A; +} + +.aiowps-site-lockout-msg{ + color: #FFE20A; + font-size: 48px; + font-weight: bold; + text-align: center; +} + diff --git a/plugins/all-in-one-wp-security-and-firewall/images/arrow.png b/plugins/all-in-one-wp-security-and-firewall/images/arrow.png new file mode 100644 index 0000000..51535ef Binary files /dev/null and b/plugins/all-in-one-wp-security-and-firewall/images/arrow.png differ diff --git a/plugins/all-in-one-wp-security-and-firewall/images/error.png b/plugins/all-in-one-wp-security-and-firewall/images/error.png new file mode 100644 index 0000000..cf4526e Binary files /dev/null and b/plugins/all-in-one-wp-security-and-firewall/images/error.png differ diff --git a/plugins/all-in-one-wp-security-and-firewall/images/feature-difficulty-badge-bg.png b/plugins/all-in-one-wp-security-and-firewall/images/feature-difficulty-badge-bg.png new file mode 100644 index 0000000..e70eda0 Binary files /dev/null and b/plugins/all-in-one-wp-security-and-firewall/images/feature-difficulty-badge-bg.png differ diff --git a/plugins/all-in-one-wp-security-and-firewall/images/feature-points-badge-bg.png b/plugins/all-in-one-wp-security-and-firewall/images/feature-points-badge-bg.png new file mode 100644 index 0000000..8fdeddb Binary files /dev/null and b/plugins/all-in-one-wp-security-and-firewall/images/feature-points-badge-bg.png differ diff --git a/plugins/all-in-one-wp-security-and-firewall/images/form_bg.png b/plugins/all-in-one-wp-security-and-firewall/images/form_bg.png new file mode 100644 index 0000000..1a1b2e5 Binary files /dev/null and b/plugins/all-in-one-wp-security-and-firewall/images/form_bg.png differ diff --git a/plugins/all-in-one-wp-security-and-firewall/images/index.html b/plugins/all-in-one-wp-security-and-firewall/images/index.html new file mode 100644 index 0000000..e69de29 diff --git a/plugins/all-in-one-wp-security-and-firewall/images/info-icon.png b/plugins/all-in-one-wp-security-and-firewall/images/info-icon.png new file mode 100644 index 0000000..40d49cd Binary files /dev/null and b/plugins/all-in-one-wp-security-and-firewall/images/info-icon.png differ diff --git a/plugins/all-in-one-wp-security-and-firewall/images/loading.gif b/plugins/all-in-one-wp-security-and-firewall/images/loading.gif new file mode 100644 index 0000000..5b33f7e Binary files /dev/null and b/plugins/all-in-one-wp-security-and-firewall/images/loading.gif differ diff --git a/plugins/all-in-one-wp-security-and-firewall/images/plugin-icon.png b/plugins/all-in-one-wp-security-and-firewall/images/plugin-icon.png new file mode 100644 index 0000000..932f129 Binary files /dev/null and b/plugins/all-in-one-wp-security-and-firewall/images/plugin-icon.png differ diff --git a/plugins/all-in-one-wp-security-and-firewall/images/plugin-icon2.png b/plugins/all-in-one-wp-security-and-firewall/images/plugin-icon2.png new file mode 100644 index 0000000..f3bec02 Binary files /dev/null and b/plugins/all-in-one-wp-security-and-firewall/images/plugin-icon2.png differ diff --git a/plugins/all-in-one-wp-security-and-firewall/images/shield-info-icon-36.png b/plugins/all-in-one-wp-security-and-firewall/images/shield-info-icon-36.png new file mode 100644 index 0000000..cb2fc9a Binary files /dev/null and b/plugins/all-in-one-wp-security-and-firewall/images/shield-info-icon-36.png differ diff --git a/plugins/all-in-one-wp-security-and-firewall/images/shield-security-icon-36.png b/plugins/all-in-one-wp-security-and-firewall/images/shield-security-icon-36.png new file mode 100644 index 0000000..1b81dc2 Binary files /dev/null and b/plugins/all-in-one-wp-security-and-firewall/images/shield-security-icon-36.png differ diff --git a/plugins/all-in-one-wp-security-and-firewall/images/success.png b/plugins/all-in-one-wp-security-and-firewall/images/success.png new file mode 100644 index 0000000..6bd8724 Binary files /dev/null and b/plugins/all-in-one-wp-security-and-firewall/images/success.png differ diff --git a/plugins/all-in-one-wp-security-and-firewall/index.html b/plugins/all-in-one-wp-security-and-firewall/index.html new file mode 100644 index 0000000..e69de29 diff --git a/plugins/all-in-one-wp-security-and-firewall/js/index.html b/plugins/all-in-one-wp-security-and-firewall/js/index.html new file mode 100644 index 0000000..e69de29 diff --git a/plugins/all-in-one-wp-security-and-firewall/js/masonry.pkgd.min.js b/plugins/all-in-one-wp-security-and-firewall/js/masonry.pkgd.min.js new file mode 100644 index 0000000..f0da370 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/js/masonry.pkgd.min.js @@ -0,0 +1,9 @@ +/*! + * Masonry PACKAGED v3.1.5 + * Cascading grid layout library + * http://masonry.desandro.com + * MIT License + * by David DeSandro + */ + +!function(a){function b(){}function c(a){function c(b){b.prototype.option||(b.prototype.option=function(b){a.isPlainObject(b)&&(this.options=a.extend(!0,this.options,b))})}function e(b,c){a.fn[b]=function(e){if("string"==typeof e){for(var g=d.call(arguments,1),h=0,i=this.length;i>h;h++){var j=this[h],k=a.data(j,b);if(k)if(a.isFunction(k[e])&&"_"!==e.charAt(0)){var l=k[e].apply(k,g);if(void 0!==l)return l}else f("no such method '"+e+"' for "+b+" instance");else f("cannot call methods on "+b+" prior to initialization; attempted to call '"+e+"'")}return this}return this.each(function(){var d=a.data(this,b);d?(d.option(e),d._init()):(d=new c(this,e),a.data(this,b,d))})}}if(a){var f="undefined"==typeof console?b:function(a){console.error(a)};return a.bridget=function(a,b){c(b),e(a,b)},a.bridget}}var d=Array.prototype.slice;"function"==typeof define&&define.amd?define("jquery-bridget/jquery.bridget",["jquery"],c):c(a.jQuery)}(window),function(a){function b(b){var c=a.event;return c.target=c.target||c.srcElement||b,c}var c=document.documentElement,d=function(){};c.addEventListener?d=function(a,b,c){a.addEventListener(b,c,!1)}:c.attachEvent&&(d=function(a,c,d){a[c+d]=d.handleEvent?function(){var c=b(a);d.handleEvent.call(d,c)}:function(){var c=b(a);d.call(a,c)},a.attachEvent("on"+c,a[c+d])});var e=function(){};c.removeEventListener?e=function(a,b,c){a.removeEventListener(b,c,!1)}:c.detachEvent&&(e=function(a,b,c){a.detachEvent("on"+b,a[b+c]);try{delete a[b+c]}catch(d){a[b+c]=void 0}});var f={bind:d,unbind:e};"function"==typeof define&&define.amd?define("eventie/eventie",f):"object"==typeof exports?module.exports=f:a.eventie=f}(this),function(a){function b(a){"function"==typeof a&&(b.isReady?a():f.push(a))}function c(a){var c="readystatechange"===a.type&&"complete"!==e.readyState;if(!b.isReady&&!c){b.isReady=!0;for(var d=0,g=f.length;g>d;d++){var h=f[d];h()}}}function d(d){return d.bind(e,"DOMContentLoaded",c),d.bind(e,"readystatechange",c),d.bind(a,"load",c),b}var e=a.document,f=[];b.isReady=!1,"function"==typeof define&&define.amd?(b.isReady="function"==typeof requirejs,define("doc-ready/doc-ready",["eventie/eventie"],d)):a.docReady=d(a.eventie)}(this),function(){function a(){}function b(a,b){for(var c=a.length;c--;)if(a[c].listener===b)return c;return-1}function c(a){return function(){return this[a].apply(this,arguments)}}var d=a.prototype,e=this,f=e.EventEmitter;d.getListeners=function(a){var b,c,d=this._getEvents();if(a instanceof RegExp){b={};for(c in d)d.hasOwnProperty(c)&&a.test(c)&&(b[c]=d[c])}else b=d[a]||(d[a]=[]);return b},d.flattenListeners=function(a){var b,c=[];for(b=0;be;e++)if(b=c[e]+a,"string"==typeof d[b])return b}}var c="Webkit Moz ms Ms O".split(" "),d=document.documentElement.style;"function"==typeof define&&define.amd?define("get-style-property/get-style-property",[],function(){return b}):"object"==typeof exports?module.exports=b:a.getStyleProperty=b}(window),function(a){function b(a){var b=parseFloat(a),c=-1===a.indexOf("%")&&!isNaN(b);return c&&b}function c(){for(var a={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},b=0,c=g.length;c>b;b++){var d=g[b];a[d]=0}return a}function d(a){function d(a){if("string"==typeof a&&(a=document.querySelector(a)),a&&"object"==typeof a&&a.nodeType){var d=f(a);if("none"===d.display)return c();var e={};e.width=a.offsetWidth,e.height=a.offsetHeight;for(var k=e.isBorderBox=!(!j||!d[j]||"border-box"!==d[j]),l=0,m=g.length;m>l;l++){var n=g[l],o=d[n];o=h(a,o);var p=parseFloat(o);e[n]=isNaN(p)?0:p}var q=e.paddingLeft+e.paddingRight,r=e.paddingTop+e.paddingBottom,s=e.marginLeft+e.marginRight,t=e.marginTop+e.marginBottom,u=e.borderLeftWidth+e.borderRightWidth,v=e.borderTopWidth+e.borderBottomWidth,w=k&&i,x=b(d.width);x!==!1&&(e.width=x+(w?0:q+u));var y=b(d.height);return y!==!1&&(e.height=y+(w?0:r+v)),e.innerWidth=e.width-(q+u),e.innerHeight=e.height-(r+v),e.outerWidth=e.width+s,e.outerHeight=e.height+t,e}}function h(a,b){if(e||-1===b.indexOf("%"))return b;var c=a.style,d=c.left,f=a.runtimeStyle,g=f&&f.left;return g&&(f.left=a.currentStyle.left),c.left=b,b=c.pixelLeft,c.left=d,g&&(f.left=g),b}var i,j=a("boxSizing");return function(){if(j){var a=document.createElement("div");a.style.width="200px",a.style.padding="1px 2px 3px 4px",a.style.borderStyle="solid",a.style.borderWidth="1px 2px 3px 4px",a.style[j]="border-box";var c=document.body||document.documentElement;c.appendChild(a);var d=f(a);i=200===b(d.width),c.removeChild(a)}}(),d}var e=a.getComputedStyle,f=e?function(a){return e(a,null)}:function(a){return a.currentStyle},g=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"];"function"==typeof define&&define.amd?define("get-size/get-size",["get-style-property/get-style-property"],d):"object"==typeof exports?module.exports=d(require("get-style-property")):a.getSize=d(a.getStyleProperty)}(window),function(a,b){function c(a,b){return a[h](b)}function d(a){if(!a.parentNode){var b=document.createDocumentFragment();b.appendChild(a)}}function e(a,b){d(a);for(var c=a.parentNode.querySelectorAll(b),e=0,f=c.length;f>e;e++)if(c[e]===a)return!0;return!1}function f(a,b){return d(a),c(a,b)}var g,h=function(){if(b.matchesSelector)return"matchesSelector";for(var a=["webkit","moz","ms","o"],c=0,d=a.length;d>c;c++){var e=a[c],f=e+"MatchesSelector";if(b[f])return f}}();if(h){var i=document.createElement("div"),j=c(i,"div");g=j?c:f}else g=e;"function"==typeof define&&define.amd?define("matches-selector/matches-selector",[],function(){return g}):window.matchesSelector=g}(this,Element.prototype),function(a){function b(a,b){for(var c in b)a[c]=b[c];return a}function c(a){for(var b in a)return!1;return b=null,!0}function d(a){return a.replace(/([A-Z])/g,function(a){return"-"+a.toLowerCase()})}function e(a,e,f){function h(a,b){a&&(this.element=a,this.layout=b,this.position={x:0,y:0},this._create())}var i=f("transition"),j=f("transform"),k=i&&j,l=!!f("perspective"),m={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"otransitionend",transition:"transitionend"}[i],n=["transform","transition","transitionDuration","transitionProperty"],o=function(){for(var a={},b=0,c=n.length;c>b;b++){var d=n[b],e=f(d);e&&e!==d&&(a[d]=e)}return a}();b(h.prototype,a.prototype),h.prototype._create=function(){this._transn={ingProperties:{},clean:{},onEnd:{}},this.css({position:"absolute"})},h.prototype.handleEvent=function(a){var b="on"+a.type;this[b]&&this[b](a)},h.prototype.getSize=function(){this.size=e(this.element)},h.prototype.css=function(a){var b=this.element.style;for(var c in a){var d=o[c]||c;b[d]=a[c]}},h.prototype.getPosition=function(){var a=g(this.element),b=this.layout.options,c=b.isOriginLeft,d=b.isOriginTop,e=parseInt(a[c?"left":"right"],10),f=parseInt(a[d?"top":"bottom"],10);e=isNaN(e)?0:e,f=isNaN(f)?0:f;var h=this.layout.size;e-=c?h.paddingLeft:h.paddingRight,f-=d?h.paddingTop:h.paddingBottom,this.position.x=e,this.position.y=f},h.prototype.layoutPosition=function(){var a=this.layout.size,b=this.layout.options,c={};b.isOriginLeft?(c.left=this.position.x+a.paddingLeft+"px",c.right=""):(c.right=this.position.x+a.paddingRight+"px",c.left=""),b.isOriginTop?(c.top=this.position.y+a.paddingTop+"px",c.bottom=""):(c.bottom=this.position.y+a.paddingBottom+"px",c.top=""),this.css(c),this.emitEvent("layout",[this])};var p=l?function(a,b){return"translate3d("+a+"px, "+b+"px, 0)"}:function(a,b){return"translate("+a+"px, "+b+"px)"};h.prototype._transitionTo=function(a,b){this.getPosition();var c=this.position.x,d=this.position.y,e=parseInt(a,10),f=parseInt(b,10),g=e===this.position.x&&f===this.position.y;if(this.setPosition(a,b),g&&!this.isTransitioning)return void this.layoutPosition();var h=a-c,i=b-d,j={},k=this.layout.options;h=k.isOriginLeft?h:-h,i=k.isOriginTop?i:-i,j.transform=p(h,i),this.transition({to:j,onTransitionEnd:{transform:this.layoutPosition},isCleaning:!0})},h.prototype.goTo=function(a,b){this.setPosition(a,b),this.layoutPosition()},h.prototype.moveTo=k?h.prototype._transitionTo:h.prototype.goTo,h.prototype.setPosition=function(a,b){this.position.x=parseInt(a,10),this.position.y=parseInt(b,10)},h.prototype._nonTransition=function(a){this.css(a.to),a.isCleaning&&this._removeStyles(a.to);for(var b in a.onTransitionEnd)a.onTransitionEnd[b].call(this)},h.prototype._transition=function(a){if(!parseFloat(this.layout.options.transitionDuration))return void this._nonTransition(a);var b=this._transn;for(var c in a.onTransitionEnd)b.onEnd[c]=a.onTransitionEnd[c];for(c in a.to)b.ingProperties[c]=!0,a.isCleaning&&(b.clean[c]=!0);if(a.from){this.css(a.from);var d=this.element.offsetHeight;d=null}this.enableTransition(a.to),this.css(a.to),this.isTransitioning=!0};var q=j&&d(j)+",opacity";h.prototype.enableTransition=function(){this.isTransitioning||(this.css({transitionProperty:q,transitionDuration:this.layout.options.transitionDuration}),this.element.addEventListener(m,this,!1))},h.prototype.transition=h.prototype[i?"_transition":"_nonTransition"],h.prototype.onwebkitTransitionEnd=function(a){this.ontransitionend(a)},h.prototype.onotransitionend=function(a){this.ontransitionend(a)};var r={"-webkit-transform":"transform","-moz-transform":"transform","-o-transform":"transform"};h.prototype.ontransitionend=function(a){if(a.target===this.element){var b=this._transn,d=r[a.propertyName]||a.propertyName;if(delete b.ingProperties[d],c(b.ingProperties)&&this.disableTransition(),d in b.clean&&(this.element.style[a.propertyName]="",delete b.clean[d]),d in b.onEnd){var e=b.onEnd[d];e.call(this),delete b.onEnd[d]}this.emitEvent("transitionEnd",[this])}},h.prototype.disableTransition=function(){this.removeTransitionStyles(),this.element.removeEventListener(m,this,!1),this.isTransitioning=!1},h.prototype._removeStyles=function(a){var b={};for(var c in a)b[c]="";this.css(b)};var s={transitionProperty:"",transitionDuration:""};return h.prototype.removeTransitionStyles=function(){this.css(s)},h.prototype.removeElem=function(){this.element.parentNode.removeChild(this.element),this.emitEvent("remove",[this])},h.prototype.remove=function(){if(!i||!parseFloat(this.layout.options.transitionDuration))return void this.removeElem();var a=this;this.on("transitionEnd",function(){return a.removeElem(),!0}),this.hide()},h.prototype.reveal=function(){delete this.isHidden,this.css({display:""});var a=this.layout.options;this.transition({from:a.hiddenStyle,to:a.visibleStyle,isCleaning:!0})},h.prototype.hide=function(){this.isHidden=!0,this.css({display:""});var a=this.layout.options;this.transition({from:a.visibleStyle,to:a.hiddenStyle,isCleaning:!0,onTransitionEnd:{opacity:function(){this.isHidden&&this.css({display:"none"})}}})},h.prototype.destroy=function(){this.css({position:"",left:"",right:"",top:"",bottom:"",transition:"",transform:""})},h}var f=a.getComputedStyle,g=f?function(a){return f(a,null)}:function(a){return a.currentStyle};"function"==typeof define&&define.amd?define("outlayer/item",["eventEmitter/EventEmitter","get-size/get-size","get-style-property/get-style-property"],e):(a.Outlayer={},a.Outlayer.Item=e(a.EventEmitter,a.getSize,a.getStyleProperty))}(window),function(a){function b(a,b){for(var c in b)a[c]=b[c];return a}function c(a){return"[object Array]"===l.call(a)}function d(a){var b=[];if(c(a))b=a;else if(a&&"number"==typeof a.length)for(var d=0,e=a.length;e>d;d++)b.push(a[d]);else b.push(a);return b}function e(a,b){var c=n(b,a);-1!==c&&b.splice(c,1)}function f(a){return a.replace(/(.)([A-Z])/g,function(a,b,c){return b+"-"+c}).toLowerCase()}function g(c,g,l,n,o,p){function q(a,c){if("string"==typeof a&&(a=h.querySelector(a)),!a||!m(a))return void(i&&i.error("Bad "+this.constructor.namespace+" element: "+a));this.element=a,this.options=b({},this.constructor.defaults),this.option(c);var d=++r;this.element.outlayerGUID=d,s[d]=this,this._create(),this.options.isInitLayout&&this.layout()}var r=0,s={};return q.namespace="outlayer",q.Item=p,q.defaults={containerStyle:{position:"relative"},isInitLayout:!0,isOriginLeft:!0,isOriginTop:!0,isResizeBound:!0,isResizingContainer:!0,transitionDuration:"0.4s",hiddenStyle:{opacity:0,transform:"scale(0.001)"},visibleStyle:{opacity:1,transform:"scale(1)"}},b(q.prototype,l.prototype),q.prototype.option=function(a){b(this.options,a)},q.prototype._create=function(){this.reloadItems(),this.stamps=[],this.stamp(this.options.stamp),b(this.element.style,this.options.containerStyle),this.options.isResizeBound&&this.bindResize()},q.prototype.reloadItems=function(){this.items=this._itemize(this.element.children)},q.prototype._itemize=function(a){for(var b=this._filterFindItemElements(a),c=this.constructor.Item,d=[],e=0,f=b.length;f>e;e++){var g=b[e],h=new c(g,this);d.push(h)}return d},q.prototype._filterFindItemElements=function(a){a=d(a);for(var b=this.options.itemSelector,c=[],e=0,f=a.length;f>e;e++){var g=a[e];if(m(g))if(b){o(g,b)&&c.push(g);for(var h=g.querySelectorAll(b),i=0,j=h.length;j>i;i++)c.push(h[i])}else c.push(g)}return c},q.prototype.getItemElements=function(){for(var a=[],b=0,c=this.items.length;c>b;b++)a.push(this.items[b].element);return a},q.prototype.layout=function(){this._resetLayout(),this._manageStamps();var a=void 0!==this.options.isLayoutInstant?this.options.isLayoutInstant:!this._isLayoutInited;this.layoutItems(this.items,a),this._isLayoutInited=!0},q.prototype._init=q.prototype.layout,q.prototype._resetLayout=function(){this.getSize()},q.prototype.getSize=function(){this.size=n(this.element)},q.prototype._getMeasurement=function(a,b){var c,d=this.options[a];d?("string"==typeof d?c=this.element.querySelector(d):m(d)&&(c=d),this[a]=c?n(c)[b]:d):this[a]=0},q.prototype.layoutItems=function(a,b){a=this._getItemsForLayout(a),this._layoutItems(a,b),this._postLayout()},q.prototype._getItemsForLayout=function(a){for(var b=[],c=0,d=a.length;d>c;c++){var e=a[c];e.isIgnored||b.push(e)}return b},q.prototype._layoutItems=function(a,b){function c(){d.emitEvent("layoutComplete",[d,a])}var d=this;if(!a||!a.length)return void c();this._itemsOn(a,"layout",c);for(var e=[],f=0,g=a.length;g>f;f++){var h=a[f],i=this._getItemLayoutPosition(h);i.item=h,i.isInstant=b||h.isLayoutInstant,e.push(i)}this._processLayoutQueue(e)},q.prototype._getItemLayoutPosition=function(){return{x:0,y:0}},q.prototype._processLayoutQueue=function(a){for(var b=0,c=a.length;c>b;b++){var d=a[b];this._positionItem(d.item,d.x,d.y,d.isInstant)}},q.prototype._positionItem=function(a,b,c,d){d?a.goTo(b,c):a.moveTo(b,c)},q.prototype._postLayout=function(){this.resizeContainer()},q.prototype.resizeContainer=function(){if(this.options.isResizingContainer){var a=this._getContainerSize();a&&(this._setContainerMeasure(a.width,!0),this._setContainerMeasure(a.height,!1))}},q.prototype._getContainerSize=k,q.prototype._setContainerMeasure=function(a,b){if(void 0!==a){var c=this.size;c.isBorderBox&&(a+=b?c.paddingLeft+c.paddingRight+c.borderLeftWidth+c.borderRightWidth:c.paddingBottom+c.paddingTop+c.borderTopWidth+c.borderBottomWidth),a=Math.max(a,0),this.element.style[b?"width":"height"]=a+"px"}},q.prototype._itemsOn=function(a,b,c){function d(){return e++,e===f&&c.call(g),!0}for(var e=0,f=a.length,g=this,h=0,i=a.length;i>h;h++){var j=a[h];j.on(b,d)}},q.prototype.ignore=function(a){var b=this.getItem(a);b&&(b.isIgnored=!0)},q.prototype.unignore=function(a){var b=this.getItem(a);b&&delete b.isIgnored},q.prototype.stamp=function(a){if(a=this._find(a)){this.stamps=this.stamps.concat(a);for(var b=0,c=a.length;c>b;b++){var d=a[b];this.ignore(d)}}},q.prototype.unstamp=function(a){if(a=this._find(a))for(var b=0,c=a.length;c>b;b++){var d=a[b];e(d,this.stamps),this.unignore(d)}},q.prototype._find=function(a){return a?("string"==typeof a&&(a=this.element.querySelectorAll(a)),a=d(a)):void 0},q.prototype._manageStamps=function(){if(this.stamps&&this.stamps.length){this._getBoundingRect();for(var a=0,b=this.stamps.length;b>a;a++){var c=this.stamps[a];this._manageStamp(c)}}},q.prototype._getBoundingRect=function(){var a=this.element.getBoundingClientRect(),b=this.size;this._boundingRect={left:a.left+b.paddingLeft+b.borderLeftWidth,top:a.top+b.paddingTop+b.borderTopWidth,right:a.right-(b.paddingRight+b.borderRightWidth),bottom:a.bottom-(b.paddingBottom+b.borderBottomWidth)}},q.prototype._manageStamp=k,q.prototype._getElementOffset=function(a){var b=a.getBoundingClientRect(),c=this._boundingRect,d=n(a),e={left:b.left-c.left-d.marginLeft,top:b.top-c.top-d.marginTop,right:c.right-b.right-d.marginRight,bottom:c.bottom-b.bottom-d.marginBottom};return e},q.prototype.handleEvent=function(a){var b="on"+a.type;this[b]&&this[b](a)},q.prototype.bindResize=function(){this.isResizeBound||(c.bind(a,"resize",this),this.isResizeBound=!0)},q.prototype.unbindResize=function(){this.isResizeBound&&c.unbind(a,"resize",this),this.isResizeBound=!1},q.prototype.onresize=function(){function a(){b.resize(),delete b.resizeTimeout}this.resizeTimeout&&clearTimeout(this.resizeTimeout);var b=this;this.resizeTimeout=setTimeout(a,100)},q.prototype.resize=function(){this.isResizeBound&&this.needsResizeLayout()&&this.layout()},q.prototype.needsResizeLayout=function(){var a=n(this.element),b=this.size&&a;return b&&a.innerWidth!==this.size.innerWidth},q.prototype.addItems=function(a){var b=this._itemize(a);return b.length&&(this.items=this.items.concat(b)),b},q.prototype.appended=function(a){var b=this.addItems(a);b.length&&(this.layoutItems(b,!0),this.reveal(b))},q.prototype.prepended=function(a){var b=this._itemize(a);if(b.length){var c=this.items.slice(0);this.items=b.concat(c),this._resetLayout(),this._manageStamps(),this.layoutItems(b,!0),this.reveal(b),this.layoutItems(c)}},q.prototype.reveal=function(a){var b=a&&a.length;if(b)for(var c=0;b>c;c++){var d=a[c];d.reveal()}},q.prototype.hide=function(a){var b=a&&a.length;if(b)for(var c=0;b>c;c++){var d=a[c];d.hide()}},q.prototype.getItem=function(a){for(var b=0,c=this.items.length;c>b;b++){var d=this.items[b];if(d.element===a)return d}},q.prototype.getItems=function(a){if(a&&a.length){for(var b=[],c=0,d=a.length;d>c;c++){var e=a[c],f=this.getItem(e);f&&b.push(f)}return b}},q.prototype.remove=function(a){a=d(a);var b=this.getItems(a);if(b&&b.length){this._itemsOn(b,"remove",function(){this.emitEvent("removeComplete",[this,b])});for(var c=0,f=b.length;f>c;c++){var g=b[c];g.remove(),e(g,this.items)}}},q.prototype.destroy=function(){var a=this.element.style;a.height="",a.position="",a.width="";for(var b=0,c=this.items.length;c>b;b++){var d=this.items[b];d.destroy()}this.unbindResize(),delete this.element.outlayerGUID,j&&j.removeData(this.element,this.constructor.namespace)},q.data=function(a){var b=a&&a.outlayerGUID;return b&&s[b]},q.create=function(a,c){function d(){q.apply(this,arguments)}return Object.create?d.prototype=Object.create(q.prototype):b(d.prototype,q.prototype),d.prototype.constructor=d,d.defaults=b({},q.defaults),b(d.defaults,c),d.prototype.settings={},d.namespace=a,d.data=q.data,d.Item=function(){p.apply(this,arguments)},d.Item.prototype=new p,g(function(){for(var b=f(a),c=h.querySelectorAll(".js-"+b),e="data-"+b+"-options",g=0,k=c.length;k>g;g++){var l,m=c[g],n=m.getAttribute(e);try{l=n&&JSON.parse(n)}catch(o){i&&i.error("Error parsing "+e+" on "+m.nodeName.toLowerCase()+(m.id?"#"+m.id:"")+": "+o);continue}var p=new d(m,l);j&&j.data(m,a,p)}}),j&&j.bridget&&j.bridget(a,d),d},q.Item=p,q}var h=a.document,i=a.console,j=a.jQuery,k=function(){},l=Object.prototype.toString,m="object"==typeof HTMLElement?function(a){return a instanceof HTMLElement}:function(a){return a&&"object"==typeof a&&1===a.nodeType&&"string"==typeof a.nodeName},n=Array.prototype.indexOf?function(a,b){return a.indexOf(b)}:function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1};"function"==typeof define&&define.amd?define("outlayer/outlayer",["eventie/eventie","doc-ready/doc-ready","eventEmitter/EventEmitter","get-size/get-size","matches-selector/matches-selector","./item"],g):a.Outlayer=g(a.eventie,a.docReady,a.EventEmitter,a.getSize,a.matchesSelector,a.Outlayer.Item)}(window),function(a){function b(a,b){var d=a.create("masonry");return d.prototype._resetLayout=function(){this.getSize(),this._getMeasurement("columnWidth","outerWidth"),this._getMeasurement("gutter","outerWidth"),this.measureColumns();var a=this.cols;for(this.colYs=[];a--;)this.colYs.push(0);this.maxY=0},d.prototype.measureColumns=function(){if(this.getContainerWidth(),!this.columnWidth){var a=this.items[0],c=a&&a.element;this.columnWidth=c&&b(c).outerWidth||this.containerWidth}this.columnWidth+=this.gutter,this.cols=Math.floor((this.containerWidth+this.gutter)/this.columnWidth),this.cols=Math.max(this.cols,1)},d.prototype.getContainerWidth=function(){var a=this.options.isFitWidth?this.element.parentNode:this.element,c=b(a);this.containerWidth=c&&c.innerWidth},d.prototype._getItemLayoutPosition=function(a){a.getSize();var b=a.size.outerWidth%this.columnWidth,d=b&&1>b?"round":"ceil",e=Math[d](a.size.outerWidth/this.columnWidth);e=Math.min(e,this.cols);for(var f=this._getColGroup(e),g=Math.min.apply(Math,f),h=c(f,g),i={x:this.columnWidth*h,y:g},j=g+a.size.outerHeight,k=this.cols+1-f.length,l=0;k>l;l++)this.colYs[h+l]=j;return i},d.prototype._getColGroup=function(a){if(2>a)return this.colYs;for(var b=[],c=this.cols+1-a,d=0;c>d;d++){var e=this.colYs.slice(d,d+a);b[d]=Math.max.apply(Math,e)}return b},d.prototype._manageStamp=function(a){var c=b(a),d=this._getElementOffset(a),e=this.options.isOriginLeft?d.left:d.right,f=e+c.outerWidth,g=Math.floor(e/this.columnWidth);g=Math.max(0,g);var h=Math.floor(f/this.columnWidth);h-=f%this.columnWidth?0:1,h=Math.min(this.cols-1,h);for(var i=(this.options.isOriginTop?d.top:d.bottom)+c.outerHeight,j=g;h>=j;j++)this.colYs[j]=Math.max(i,this.colYs[j])},d.prototype._getContainerSize=function(){this.maxY=Math.max.apply(Math,this.colYs);var a={height:this.maxY};return this.options.isFitWidth&&(a.width=this._getContainerFitWidth()),a},d.prototype._getContainerFitWidth=function(){for(var a=0,b=this.cols;--b&&0===this.colYs[b];)a++;return(this.cols-a)*this.columnWidth-this.gutter},d.prototype.needsResizeLayout=function(){var a=this.containerWidth;return this.getContainerWidth(),a!==this.containerWidth},d}var c=Array.prototype.indexOf?function(a,b){return a.indexOf(b)}:function(a,b){for(var c=0,d=a.length;d>c;c++){var e=a[c];if(e===b)return c}return-1};"function"==typeof define&&define.amd?define(["outlayer/outlayer","get-size/get-size"],b):a.Masonry=b(a.Outlayer,a.getSize)}(window); \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/js/password-strength-tool.js b/plugins/all-in-one-wp-security-and-firewall/js/password-strength-tool.js new file mode 100644 index 0000000..9f003b6 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/js/password-strength-tool.js @@ -0,0 +1,154 @@ +(function($){ + $.fn.extend({ + pwdstr: function(el) { + return this.each(function() { + $(this).keyup(function(){ + $(el).html(getTime($(this).val())); + }); + + function getTime(str){ + + var chars = 0; + var rate = 2800000000; + + if((/[a-z]/).test(str)) chars += 26; + if((/[A-Z]/).test(str)) chars += 26; + if((/[0-9]/).test(str)) chars += 10; + if((/[^a-zA-Z0-9]/).test(str)) chars += 32; + + var pos = Math.pow(chars,str.length); + var s = pos/rate; + var decimalYears = s/(3600*24*365); + var years = Math.floor(decimalYears); + + var decimalMonths =(decimalYears-years)*12; + var months = Math.floor(decimalMonths); + + var decimalDays = (decimalMonths-months)*30; + var days = Math.floor(decimalDays); + + var decimalHours = (decimalDays-days)*24; + var hours = Math.floor(decimalHours); + + var decimalMinutes = (decimalHours-hours)*60; + var minutes = Math.floor(decimalMinutes); + + var decimalSeconds = (decimalMinutes-minutes)*60; + var seconds = Math.floor(decimalSeconds); + + var time = []; + + if(years > 0){ + if(years == 1) + time.push("1 year, "); + else + time.push(years + " years, "); + } + if(months > 0){ + if(months == 1) + time.push("1 month, "); + else + time.push(months + " months, "); + } + if(days > 0){ + if(days == 1) + time.push("1 day, "); + else + time.push(days + " days, "); + } + if(hours > 0){ + if(hours == 1) + time.push("1 hour, "); + else + time.push(hours + " hours, "); + } + if(minutes > 0){ + if(minutes == 1) + time.push("1 minute, "); + else + time.push(minutes + " minutes, "); + } + if(seconds > 0){ + if(seconds == 1) + time.push("1 second, "); + else + time.push(seconds + " seconds, "); + } + + if(time.length <= 0) + time = "less than one second, "; + else if(time.length == 1) + time = time[0]; + else + time = time[0] + time[1]; + + + var field = $('#aiowps_password_test'); + if (s <= 1 || !field.val()) + { + //Time to crack < 1 sec + complexity = 0; + }else if (s > 1 && s <= 43200) + { + //1 sec < Time to crack < 12hrs + complexity = 1; + }else if (s > 43200 && s <= 86400) + { + //12 hrs < Time to crack < 1day + complexity = 2; + }else if (s > 86400 && s <= 604800) + { + //1 day < Time to crack < 1wk + complexity = 3; + }else if (s > 604800 && s <= 2678400) + { + //1wk < Time to crack < 1mth + complexity = 4; + }else if (s > 2678400 && s <= 15552000) + { + //1mth < Time to crack < 6mths + complexity = 5; + }else if (s > 31536000 && s <= 31536000) + { + //6mths < Time to crack < 1yrs + complexity = 6; + }else if (s > 31536000 && s <= 315360000) + { + //1yrs < Time to crack < 10yrs + complexity = 7; + }else if (s > 315360000 && s <= 3153600000) + { + //10yrs < Time to crack < 100yrs + complexity = 8; + }else if (s > 3153600000 && s <= 31536000000) + { + //100yrs < Time to crack < 1000yrs + complexity = 9; + }else if (s > 31536000000) + { + //1000yrs < Time to crack + complexity = 10; + } + calculated = (complexity/10)*268 - 134; + prop = 'rotate('+(calculated)+'deg)'; + // Rotate the arrow + $('.arrow').css({ + '-moz-transform':prop, + '-webkit-transform':prop, + '-o-transform':prop, + '-ms-transform':prop, + 'transform':prop + }); + + return time.substring(0,time.length-2); + } + + }); + } + + }); + $(document).ready(function(){ + $('#aiowps_password_test').pwdstr('#aiowps_password_crack_time_calculation'); + }); +})(jQuery); + diff --git a/plugins/all-in-one-wp-security-and-firewall/js/wp-security-admin-script.js b/plugins/all-in-one-wp-security-and-firewall/js/wp-security-admin-script.js new file mode 100644 index 0000000..08a776e --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/js/wp-security-admin-script.js @@ -0,0 +1,57 @@ +jQuery(document).ready(function($){ + //Add Generic Admin Dashboard JS Code in this file + + //Media Uploader - start + function aiowps_attach_media_uploader(key) { + jQuery('#' + key + '_button').click(function() { + text_element = jQuery('#' + key).attr('name'); + button_element = jQuery('#' + key + '_button').attr('name'); + tb_show('All In One Security - Please Select a File', 'media-upload.php?referer=aiowpsec&TB_iframe=true&post_id=0width=640&height=485'); + return false; + }); + window.send_to_editor = function(html) { + var self_element = text_element; + fileurl = jQuery(html).attr('href'); + jQuery('#' + self_element).val(fileurl); + tb_remove(); + }; + } + + var current_admin_page = getParameterByName('page'); //check query arg of loaded page to see if a gallery needs wm processing + if(current_admin_page == 'aiowpsec_maintenance'){ + //don't load custom uploader stuff because we want to use standard wp uploader code + }else{ + aiowps_attach_media_uploader('aiowps_htaccess_file'); + aiowps_attach_media_uploader('aiowps_wp_config_file'); + aiowps_attach_media_uploader('aiowps_import_settings_file'); + aiowps_attach_media_uploader('aiowps_db_file'); //TODO - for future use when we implement DB restore + + } + //End of Media Uploader + + //Triggers the more info toggle link + $(".aiowps_more_info_body").hide();//hide the more info on page load + $(".aiowps_more_info_anchor").click(function(){ + $(this).next(".aiowps_more_info_body").animate({ "height": "toggle"}); + var toogle_char_ref = $(this).find(".aiowps_more_info_toggle_char"); + var toggle_char_value = toogle_char_ref.text(); + if(toggle_char_value === "+"){ + toogle_char_ref.text("-"); + } + else{ + toogle_char_ref.text("+"); + } + }); + //End of more info toggle + + //This function uses javascript to retrieve a query arg from the current page URL + function getParameterByName(name) { + var url = window.location.href; + name = name.replace(/[\[\]]/g, "\\$&"); + var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), + results = regex.exec(url); + if (!results) return null; + if (!results[2]) return ''; + return decodeURIComponent(results[2].replace(/\+/g, " ")); + } +}); \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-de_DE.mo b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-de_DE.mo new file mode 100644 index 0000000..b46b055 Binary files /dev/null and b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-de_DE.mo differ diff --git a/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-de_DE.po b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-de_DE.po new file mode 100644 index 0000000..5563bac --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-de_DE.po @@ -0,0 +1,4760 @@ +msgid "" +msgstr "" +"Project-Id-Version: All In One WP Security vv3.7.2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2014-04-16 20:01:12+0000\n" +"Last-Translator: manuel \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: CSL v1.x\n" +"X-Poedit-Language: German\n" +"X-Poedit-Country: GERMANY\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n" +"X-Poedit-Basepath: ../\n" +"X-Poedit-Bookmarks: \n" +"X-Poedit-SearchPath-0: .\n" +"X-Textdomain-Support: yes" + +#: admin/general/wp-security-list-table.php:178 +#@ default +msgid "No items found." +msgstr "" + +#: admin/general/wp-security-list-table.php:281 +#@ default +msgid "Bulk Actions" +msgstr "" + +#: admin/general/wp-security-list-table.php:291 +#@ default +msgid "Apply" +msgstr "" + +#: admin/general/wp-security-list-table.php:365 +#@ default +msgid "Show all dates" +msgstr "" + +#. translators: 1: month name, 2: 4-digit year +#: admin/general/wp-security-list-table.php:378 +#, php-format +#@ default +msgid "%1$s %2$d" +msgstr "" + +#: admin/general/wp-security-list-table.php:394 +#@ default +msgid "List View" +msgstr "" + +#: admin/general/wp-security-list-table.php:395 +#@ default +msgid "Excerpt View" +msgstr "" + +#: admin/general/wp-security-list-table.php:421 +#, php-format +#@ default +msgid "%s pending" +msgstr "" + +#: admin/general/wp-security-list-table.php:477 +#: admin/general/wp-security-list-table.php:881 +#, php-format +#@ default +msgid "1 item" +msgid_plural "%s items" +msgstr[0] "" +msgstr[1] "" + +#: admin/general/wp-security-list-table.php:495 +#@ default +msgid "Go to the first page" +msgstr "" + +#: admin/general/wp-security-list-table.php:502 +#@ default +msgid "Go to the previous page" +msgstr "" + +#: admin/general/wp-security-list-table.php:511 +#@ default +msgid "Current page" +msgstr "" + +#: admin/general/wp-security-list-table.php:517 +#, php-format +#@ default +msgctxt "paging" +msgid "%1$s of %2$s" +msgstr "" + +#: admin/general/wp-security-list-table.php:521 +#@ default +msgid "Go to the next page" +msgstr "" + +#: admin/general/wp-security-list-table.php:528 +#@ default +msgid "Go to the last page" +msgstr "" + +#: admin/general/wp-security-list-table.php:653 +#@ default +msgid "Select All" +msgstr "" + +#: admin/wp-security-admin-init.php:157 +#@ all-in-one-wp-security-and-firewall +msgid "WP Security" +msgstr "" + +#: admin/wp-security-admin-init.php:158 +#: admin/wp-security-dashboard-menu.php:23 +#@ all-in-one-wp-security-and-firewall +msgid "Dashboard" +msgstr "" + +#: admin/wp-security-admin-init.php:159 +#@ all-in-one-wp-security-and-firewall +msgid "Settings" +msgstr "" + +#: admin/wp-security-admin-init.php:160 +#@ all-in-one-wp-security-and-firewall +msgid "User Accounts" +msgstr "" + +#: admin/wp-security-admin-init.php:161 +#@ all-in-one-wp-security-and-firewall +msgid "User Login" +msgstr "" + +#: admin/wp-security-admin-init.php:162 +#@ all-in-one-wp-security-and-firewall +msgid "User Registration" +msgstr "" + +#: admin/wp-security-admin-init.php:163 +#@ all-in-one-wp-security-and-firewall +msgid "Database Security" +msgstr "" + +#: admin/wp-security-admin-init.php:167 +#@ all-in-one-wp-security-and-firewall +msgid "Filesystem Security" +msgstr "" + +#: admin/wp-security-admin-init.php:169 +#@ all-in-one-wp-security-and-firewall +msgid "WHOIS Lookup" +msgstr "" + +#: admin/wp-security-admin-init.php:173 +#@ all-in-one-wp-security-and-firewall +msgid "Blacklist Manager" +msgstr "" + +#: admin/wp-security-admin-init.php:178 +#@ all-in-one-wp-security-and-firewall +msgid "Firewall" +msgstr "" + +#: admin/wp-security-admin-init.php:183 +#@ all-in-one-wp-security-and-firewall +msgid "Brute Force" +msgstr "" + +#: admin/wp-security-admin-init.php:185 +#@ all-in-one-wp-security-and-firewall +msgid "SPAM Prevention" +msgstr "" + +#: admin/wp-security-admin-init.php:189 +#@ all-in-one-wp-security-and-firewall +msgid "Scanner" +msgstr "" + +#: admin/wp-security-admin-init.php:191 +#@ all-in-one-wp-security-and-firewall +msgid "Maintenance" +msgstr "" + +#: admin/wp-security-admin-menu.php:43 +#@ all-in-one-wp-security-and-firewall +msgid "Settings successfully updated." +msgstr "" + +#: admin/wp-security-admin-menu.php:50 +#@ all-in-one-wp-security-and-firewall +msgid "The selected record(s) deleted successfully!" +msgstr "" + +#: admin/wp-security-blacklist-menu.php:22 +#@ all-in-one-wp-security-and-firewall +msgid "Ban Users" +msgstr "" + +#: admin/wp-security-blacklist-menu.php:80 +#@ all-in-one-wp-security-and-firewall +msgid "Nonce check failed for save blacklist settings!" +msgstr "" + +#: admin/wp-security-blacklist-menu.php:132 +#: admin/wp-security-brute-force-menu.php:608 +#: admin/wp-security-list-comment-spammer-ip.php:147 +#@ all-in-one-wp-security-and-firewall +msgid "The plugin was unable to write to the .htaccess file. Please edit file manually." +msgstr "" + +#: admin/wp-security-blacklist-menu.php:139 +#@ all-in-one-wp-security-and-firewall +msgid "Ban IPs or User Agents" +msgstr "" + +#: admin/wp-security-blacklist-menu.php:142 +#@ all-in-one-wp-security-and-firewall +msgid "The All In One WP Security Blacklist feature gives you the option of banning certain host IP addresses or ranges and also user agents." +msgstr "" + +#: admin/wp-security-blacklist-menu.php:143 +#@ all-in-one-wp-security-and-firewall +msgid "This feature will deny total site access for users which have IP addresses or user agents matching those which you have configured in the settings below." +msgstr "" + +#: admin/wp-security-blacklist-menu.php:144 +#@ all-in-one-wp-security-and-firewall +msgid "The plugin achieves this by making appropriate modifications to your .htaccess file." +msgstr "" + +#: admin/wp-security-blacklist-menu.php:145 +#@ all-in-one-wp-security-and-firewall +msgid "By blocking people via the .htaccess file your are using the most secure first line of defence which denies all access to blacklisted visitors as soon as they hit your hosting server." +msgstr "" + +#: admin/wp-security-blacklist-menu.php:151 +#@ all-in-one-wp-security-and-firewall +msgid "IP Hosts and User Agent Blacklist Settings" +msgstr "" + +#: admin/wp-security-blacklist-menu.php:162 +#@ all-in-one-wp-security-and-firewall +msgid "Enable IP or User Agent Blacklisting" +msgstr "" + +#: admin/wp-security-blacklist-menu.php:165 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want to enable the banning (or blacklisting) of selected IP addresses and/or user agents specified in the settings below" +msgstr "" + +#: admin/wp-security-blacklist-menu.php:169 +#@ all-in-one-wp-security-and-firewall +msgid "Enter IP Addresses:" +msgstr "" + +#: admin/wp-security-blacklist-menu.php:173 +#@ all-in-one-wp-security-and-firewall +msgid "Enter one or more IP addresses or IP ranges." +msgstr "" + +#: admin/wp-security-blacklist-menu.php:174 +#: admin/wp-security-blacklist-menu.php:194 +#: admin/wp-security-brute-force-menu.php:343 +#: admin/wp-security-brute-force-menu.php:377 +#: admin/wp-security-brute-force-menu.php:400 +#: admin/wp-security-brute-force-menu.php:421 +#: admin/wp-security-brute-force-menu.php:664 +#: admin/wp-security-filescan-menu.php:291 +#: admin/wp-security-filescan-menu.php:308 +#: admin/wp-security-firewall-menu.php:165 +#: admin/wp-security-firewall-menu.php:195 +#: admin/wp-security-firewall-menu.php:326 +#: admin/wp-security-firewall-menu.php:356 +#: admin/wp-security-firewall-menu.php:387 +#: admin/wp-security-firewall-menu.php:415 +#: admin/wp-security-firewall-menu.php:444 +#: admin/wp-security-firewall-menu.php:532 +#: admin/wp-security-firewall-menu.php:622 +#: admin/wp-security-firewall-menu.php:824 +#: admin/wp-security-firewall-menu.php:847 +#: admin/wp-security-spam-menu.php:174 +#: admin/wp-security-spam-menu.php:259 +#@ all-in-one-wp-security-and-firewall +msgid "More Info" +msgstr "" + +#: admin/wp-security-blacklist-menu.php:177 +#: admin/wp-security-brute-force-menu.php:667 +#@ all-in-one-wp-security-and-firewall +msgid "Each IP address must be on a new line." +msgstr "" + +#: admin/wp-security-blacklist-menu.php:178 +#: admin/wp-security-brute-force-menu.php:668 +#@ all-in-one-wp-security-and-firewall +msgid "To specify an IP range use a wildcard \"*\" character. Acceptable ways to use wildcards is shown in the examples below:" +msgstr "" + +#: admin/wp-security-blacklist-menu.php:179 +#: admin/wp-security-brute-force-menu.php:669 +#@ all-in-one-wp-security-and-firewall +msgid "Example 1: 195.47.89.*" +msgstr "" + +#: admin/wp-security-blacklist-menu.php:180 +#: admin/wp-security-brute-force-menu.php:670 +#@ all-in-one-wp-security-and-firewall +msgid "Example 2: 195.47.*.*" +msgstr "" + +#: admin/wp-security-blacklist-menu.php:181 +#: admin/wp-security-brute-force-menu.php:671 +#@ all-in-one-wp-security-and-firewall +msgid "Example 3: 195.*.*.*" +msgstr "" + +#: admin/wp-security-blacklist-menu.php:188 +#@ all-in-one-wp-security-and-firewall +msgid "Enter User Agents:" +msgstr "" + +#: admin/wp-security-blacklist-menu.php:193 +#@ all-in-one-wp-security-and-firewall +msgid "Enter one or more user agent strings." +msgstr "" + +#: admin/wp-security-blacklist-menu.php:197 +#@ all-in-one-wp-security-and-firewall +msgid "Each user agent string must be on a new line." +msgstr "" + +#: admin/wp-security-blacklist-menu.php:198 +#@ all-in-one-wp-security-and-firewall +msgid "Example 1 - A single user agent string to block:" +msgstr "" + +#: admin/wp-security-blacklist-menu.php:200 +#@ all-in-one-wp-security-and-firewall +msgid "Example 2 - A list of more than 1 user agent strings to block" +msgstr "" + +#: admin/wp-security-blacklist-menu.php:208 +#: admin/wp-security-brute-force-menu.php:188 +#: admin/wp-security-brute-force-menu.php:544 +#: admin/wp-security-brute-force-menu.php:678 +#: admin/wp-security-database-menu.php:356 +#: admin/wp-security-filescan-menu.php:329 +#: admin/wp-security-filesystem-menu.php:231 +#: admin/wp-security-firewall-menu.php:700 +#: admin/wp-security-firewall-menu.php:866 +#: admin/wp-security-settings-menu.php:493 +#: admin/wp-security-spam-menu.php:189 +#: admin/wp-security-user-login-menu.php:239 +#: admin/wp-security-user-login-menu.php:407 +#: admin/wp-security-user-registration-menu.php:146 +#: admin/wp-security-user-registration-menu.php:221 +#@ all-in-one-wp-security-and-firewall +msgid "Save Settings" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:25 +#: admin/wp-security-dashboard-menu.php:344 +#: admin/wp-security-dashboard-menu.php:353 +#@ all-in-one-wp-security-and-firewall +msgid "Rename Login Page" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:26 +#@ all-in-one-wp-security-and-firewall +msgid "Cookie Based Brute Force Prevention" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:27 +#: classes/grade-system/wp-security-feature-item-manager.php:44 +#@ all-in-one-wp-security-and-firewall +msgid "Login Captcha" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:28 +#: admin/wp-security-brute-force-menu.php:615 +#@ all-in-one-wp-security-and-firewall +msgid "Login Whitelist" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:99 +#@ all-in-one-wp-security-and-firewall +msgid "Please enter a value for your login page slug." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:103 +#@ all-in-one-wp-security-and-firewall +msgid "You cannot use the value \"wp-admin\" for your login page slug." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:108 +#: admin/wp-security-database-menu.php:271 +#: admin/wp-security-filescan-menu.php:169 +#: admin/wp-security-firewall-menu.php:769 +#: admin/wp-security-spam-menu.php:219 +#: admin/wp-security-user-login-menu.php:123 +#: admin/wp-security-user-login-menu.php:360 +#@ all-in-one-wp-security-and-firewall +msgid "Attention!" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:127 +#@ all-in-one-wp-security-and-firewall +msgid "Could not delete the Cookie-based directives from the .htaccess file. Please check the file permissions." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:137 +#@ all-in-one-wp-security-and-firewall +msgid "An effective Brute Force prevention technique is to change the default WordPress login page URL." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:138 +#@ all-in-one-wp-security-and-firewall +msgid "Normally if you wanted to login to WordPress you would type your site's home URL followed by wp-login.php." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:139 +#@ all-in-one-wp-security-and-firewall +msgid "This feature allows you to change the login URL by setting your own slug and renaming the last portion of the login URL which contains the wp-login.php to any string that you like." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:140 +#@ all-in-one-wp-security-and-firewall +msgid "By doing this, malicious bots and hackers will not be able to access your login page because they will not know the correct login page URL." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:142 +#@ all-in-one-wp-security-and-firewall +msgid "You may also be interested in the following alternative brute force prevention features:" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:153 +#@ all-in-one-wp-security-and-firewall +msgid "Your WordPress login page URL has been renamed." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:154 +#@ all-in-one-wp-security-and-firewall +msgid "Your current login URL is:" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:156 +#@ all-in-one-wp-security-and-firewall +msgid "NOTE: If you already had the Cookie-Based Brute Force Prevention feature active, the plugin has automatically deactivated it because only one of these features can be active at any one time." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:163 +#@ all-in-one-wp-security-and-firewall +msgid "Rename Login Page Settings" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:175 +#@ all-in-one-wp-security-and-firewall +msgid "Enable Rename Login Page Feature" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:178 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want to enable the rename login page feature" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:182 +#@ all-in-one-wp-security-and-firewall +msgid "Login Page URL" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:184 +#@ all-in-one-wp-security-and-firewall +msgid "Enter a string which will represent your secure login page slug. You are enouraged to choose something which is hard to guess and only you will remember." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:217 +#@ all-in-one-wp-security-and-firewall +msgid "Settings have not been saved - your secret word must consist only of alphanumeric characters, ie, letters and/or numbers only!" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:236 +#@ all-in-one-wp-security-and-firewall +msgid "You have successfully enabled the cookie based brute force prevention feature" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:237 +#@ all-in-one-wp-security-and-firewall +msgid "From now on you will need to log into your WP Admin using the following URL:" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:239 +#@ all-in-one-wp-security-and-firewall +msgid "It is important that you save this URL value somewhere in case you forget it, OR," +msgstr "" + +#: admin/wp-security-brute-force-menu.php:240 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "simply remember to add a \"?%s=1\" to your current site URL address." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:246 +#@ all-in-one-wp-security-and-firewall +msgid "You have successfully saved cookie based brute force prevention feature settings." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:281 +#: admin/wp-security-filesystem-menu.php:275 +#: admin/wp-security-firewall-menu.php:119 +#: admin/wp-security-firewall-menu.php:287 +#: admin/wp-security-firewall-menu.php:498 +#: admin/wp-security-firewall-menu.php:667 +#: admin/wp-security-spam-menu.php:106 +#@ all-in-one-wp-security-and-firewall +msgid "Could not write to the .htaccess file. Please check the file permissions." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:291 +#@ all-in-one-wp-security-and-firewall +msgid "Brute Force Prevention Firewall Settings" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:296 +#@ all-in-one-wp-security-and-firewall +msgid "A Brute Force Attack is when a hacker tries many combinations of usernames and passwords until they succeed in guessing the right combination." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:297 +#@ all-in-one-wp-security-and-firewall +msgid "Due to the fact that at any one time there may be many concurrent login attempts occurring on your site via malicious automated robots, this also has a negative impact on your server's memory and performance." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:298 +#@ all-in-one-wp-security-and-firewall +msgid "The features in this tab will stop the majority of Brute Force Login Attacks at the .htaccess level thus providing even better protection for your WP login page and also reducing the load on your server because the system does not have to run PHP code to process the login attempts." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:305 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "Even though this feature should not have any impact on your site's general functionality you are strongly encouraged to take a %s of your .htaccess file before proceeding." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:306 +#@ all-in-one-wp-security-and-firewall +msgid "If this feature is not used correctly, you can get locked out of your site. A backed up .htaccess file will come in handy if that happens." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:307 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "To learn more about how to use this feature please watch the following %s." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:320 +#@ all-in-one-wp-security-and-firewall +msgid "NOTE: If you already had the Rename Login Page feature active, the plugin has automatically deactivated it because only one of these features can be active at any one time." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:328 +#@ all-in-one-wp-security-and-firewall +msgid "Cookie Based Brute Force Login Prevention" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:339 +#: classes/grade-system/wp-security-feature-item-manager.php:87 +#@ all-in-one-wp-security-and-firewall +msgid "Enable Brute Force Attack Prevention" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:342 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want to protect your login page from Brute Force Attack." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:347 +#@ all-in-one-wp-security-and-firewall +msgid "This feature will deny access to your WordPress login page for all people except those who have a special cookie in their browser." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:349 +#@ all-in-one-wp-security-and-firewall +msgid "To use this feature do the following:" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:351 +#@ all-in-one-wp-security-and-firewall +msgid "1) Enable the checkbox." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:353 +#@ all-in-one-wp-security-and-firewall +msgid "2) Enter a secret word consisting of alphanumeric characters which will be difficult to guess. This secret word will be useful whenever you need to know the special URL which you will use to access the login page (see point below)." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:355 +#@ all-in-one-wp-security-and-firewall +msgid "3) You will then be provided with a special login URL. You will need to use this URL to login to your WordPress site instead of the usual login URL. NOTE: The system will deposit a special cookie in your browser which will allow you access to the WordPress administration login page." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:357 +#@ all-in-one-wp-security-and-firewall +msgid "Any person trying to access your login page who does not have the special cookie in their browser will be automatically blocked." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:364 +#@ all-in-one-wp-security-and-firewall +msgid "Secret Word" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:366 +#@ all-in-one-wp-security-and-firewall +msgid "Choose a secret word consisting of alphanumeric characters which you can use to access your special URL. Your are highly encouraged to choose a word which will be difficult to guess." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:370 +#@ all-in-one-wp-security-and-firewall +msgid "Re-direct URL" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:374 +#@ all-in-one-wp-security-and-firewall +msgid "Specify a URL to redirect a hacker to when they try to access your WordPress login page." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:381 +#@ all-in-one-wp-security-and-firewall +msgid "The URL specified here can be any site's URL and does not have to be your own. For example you can be as creative as you like and send hackers to the CIA or NSA home page." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:383 +#@ all-in-one-wp-security-and-firewall +msgid "This field will default to: http://127.0.0.1 if you do not enter a value." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:385 +#@ all-in-one-wp-security-and-firewall +msgid "Useful Tip:" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:387 +#@ all-in-one-wp-security-and-firewall +msgid "It's a good idea to not redirect attempted brute force login attempts to your site because it increases the load on your server." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:389 +#@ all-in-one-wp-security-and-firewall +msgid "Redirecting a hacker or malicious bot back to \"http://127.0.0.1\" is ideal because it deflects them back to their own local host and puts the load on their server instead of yours." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:396 +#@ all-in-one-wp-security-and-firewall +msgid "My Site Has Posts Or Pages Which Are Password Protected" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:399 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you are using the native WordPress password protection feature for some or all of your blog posts or pages." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:404 +#@ all-in-one-wp-security-and-firewall +msgid "In the cases where you are protecting some of your posts or pages using the in-built WordPress password protection feature, a few extra lines of directives and exceptions need to be added to your .htacces file so that people trying to access pages are not automatically blocked." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:406 +#@ all-in-one-wp-security-and-firewall +msgid "By enabling this checkbox the plugin will add the necessary rules and exceptions to your .htacces file so that people trying to access these pages are not automatically blocked." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:408 +#@ all-in-one-wp-security-and-firewall +msgid "Helpful Tip:" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:410 +#@ all-in-one-wp-security-and-firewall +msgid "If you do not use the WordPress password protection feature for your posts or pages then it is highly recommended that you leave this checkbox disabled." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:417 +#@ all-in-one-wp-security-and-firewall +msgid "My Site Has a Theme or Plugins Which Use AJAX" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:420 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if your site uses AJAX functionality." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:425 +#@ all-in-one-wp-security-and-firewall +msgid "In the cases where your WordPress installation has a theme or plugins which use AJAX, a few extra lines of directives and exceptions need to be added to your .htacces file to prevent AJAX requests from being automatically blocked by the brute force prevention feature." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:427 +#@ all-in-one-wp-security-and-firewall +msgid "By enabling this checkbox the plugin will add the necessary rules and exceptions to your .htacces file so that AJAX operations will work as expected." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:442 +#@ all-in-one-wp-security-and-firewall +msgid "The cookie test was successful. You can now enable this feature." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:445 +#@ all-in-one-wp-security-and-firewall +msgid "Save Feature Settings" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:452 +#@ all-in-one-wp-security-and-firewall +msgid "The cookie test failed on this server. So this feature cannot be used on this site." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:457 +#@ all-in-one-wp-security-and-firewall +msgid "Before using this feature you are required to perform a cookie test first. This is to make sure that your browser cookie is working correctly and that you won't lock yourself out." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:459 +#@ all-in-one-wp-security-and-firewall +msgid "Perform Cookie Test" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:498 +#@ all-in-one-wp-security-and-firewall +msgid "This feature allows you to add a captcha form on the WordPress login page." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:499 +#@ all-in-one-wp-security-and-firewall +msgid "Users who attempt to login will also need to enter the answer to a simple mathematical question - if they enter the wrong answer, the plugin will not allow them login even if they entered the correct username and password." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:500 +#@ all-in-one-wp-security-and-firewall +msgid "Therefore, adding a captcha form on the login page is another effective yet simple \"Brute Force\" prevention technique." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:506 +#@ all-in-one-wp-security-and-firewall +msgid "Login Form Captcha Settings" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:517 +#@ all-in-one-wp-security-and-firewall +msgid "Enable Captcha On Login Page" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:520 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want to insert a captcha form on the login page" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:526 +#@ all-in-one-wp-security-and-firewall +msgid "Lost Password Form Captcha Settings" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:536 +#@ all-in-one-wp-security-and-firewall +msgid "Enable Captcha On Lost Password Page" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:539 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want to insert a captcha form on the lost password page" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:561 +#@ all-in-one-wp-security-and-firewall +msgid "Nonce check failed for save whitelist settings!" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:618 +#@ all-in-one-wp-security-and-firewall +msgid "The All In One WP Security Whitelist feature gives you the option of only allowing certain IP addresses or ranges to have access to your WordPress login page." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:619 +#@ all-in-one-wp-security-and-firewall +msgid "This feature will deny login access for all IP addresses which are not in your whitelist as configured in the settings below." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:620 +#@ all-in-one-wp-security-and-firewall +msgid "The plugin achieves this by writing the appropriate directives to your .htaccess file." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:621 +#@ all-in-one-wp-security-and-firewall +msgid "By allowing/blocking IP addresses via the .htaccess file your are using the most secure first line of defence because login access will only be granted to whitelisted IP addresses and other addresses will be blocked as soon as they try to access your login page." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:628 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "Attention: If in addition to enabling the white list feature, you also have the %s feature enabled, you will still need to use your secret word in the URL when trying to access your WordPress login page." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:629 +#@ all-in-one-wp-security-and-firewall +msgid "These features are NOT functionally related. Having both of them enabled on your site means you are creating 2 layers of security." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:634 +#@ all-in-one-wp-security-and-firewall +msgid "Login IP Whitelist Settings" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:645 +#@ all-in-one-wp-security-and-firewall +msgid "Enable IP Whitelisting" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:648 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want to enable the whitelisting of selected IP addresses specified in the settings below" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:652 +#@ all-in-one-wp-security-and-firewall +msgid "Your Current IP Address" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:655 +#@ all-in-one-wp-security-and-firewall +msgid "You can copy and paste this address in the text box below if you want to include it in your login whitelist." +msgstr "" + +#: admin/wp-security-brute-force-menu.php:659 +#@ all-in-one-wp-security-and-firewall +msgid "Enter Whitelisted IP Addresses:" +msgstr "" + +#: admin/wp-security-brute-force-menu.php:663 +#@ all-in-one-wp-security-and-firewall +msgid "Enter one or more IP addresses or IP ranges you wish to include in your whitelist. Only the addresses specified here will have access to the WordPress login page." +msgstr "" + +#: admin/wp-security-dashboard-menu.php:24 +#@ all-in-one-wp-security-and-firewall +msgid "System Info" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:25 +#: admin/wp-security-dashboard-menu.php:436 +#@ all-in-one-wp-security-and-firewall +msgid "Locked IP Addresses" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:75 +#@ all-in-one-wp-security-and-firewall +msgid "For information, updates and documentation, please visit the" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:75 +#@ all-in-one-wp-security-and-firewall +msgid "AIO WP Security & Firewall Plugin" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:75 +#@ all-in-one-wp-security-and-firewall +msgid "Page" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:76 +#@ all-in-one-wp-security-and-firewall +msgid "Follow us" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:76 +#@ all-in-one-wp-security-and-firewall +msgid "Twitter, Google+ or via Email to stay up to date about the new security features of this plugin." +msgstr "" + +#: admin/wp-security-dashboard-menu.php:90 +#@ all-in-one-wp-security-and-firewall +msgid "Security Strength Meter" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:119 +#@ all-in-one-wp-security-and-firewall +msgid "Total Achievable Points: " +msgstr "" + +#: admin/wp-security-dashboard-menu.php:121 +#@ all-in-one-wp-security-and-firewall +msgid "Current Score of Your Site: " +msgstr "" + +#: admin/wp-security-dashboard-menu.php:131 +#@ all-in-one-wp-security-and-firewall +msgid "Security Points Breakdown" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:172 +#@ all-in-one-wp-security-and-firewall +msgid "Critical Feature Status" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:176 +#@ all-in-one-wp-security-and-firewall +msgid "Below is the current status of the critical features that you should activate on your site to achieve a minimum level of recommended security" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:180 +#@ all-in-one-wp-security-and-firewall +msgid "Admin Username" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:195 +#: admin/wp-security-user-login-menu.php:25 +#: classes/grade-system/wp-security-feature-item-manager.php:42 +#@ all-in-one-wp-security-and-firewall +msgid "Login Lockdown" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:210 +#@ all-in-one-wp-security-and-firewall +msgid "File Permission" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:225 +#@ all-in-one-wp-security-and-firewall +msgid "Basic Firewall" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:243 +#@ all-in-one-wp-security-and-firewall +msgid "Last 5 Logins" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:257 +#@ all-in-one-wp-security-and-firewall +msgid "No data found!" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:261 +#@ all-in-one-wp-security-and-firewall +msgid "Last 5 logins summary:" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:265 +#@ all-in-one-wp-security-and-firewall +msgid "User" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:266 +#@ all-in-one-wp-security-and-firewall +msgid "Date" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:267 +#@ all-in-one-wp-security-and-firewall +msgid "IP" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:288 +#@ all-in-one-wp-security-and-firewall +msgid "Maintenance Mode Status" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:292 +#@ all-in-one-wp-security-and-firewall +msgid "Maintenance mode is currently enabled. Remember to turn it off when you are done" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:295 +#@ all-in-one-wp-security-and-firewall +msgid "Maintenance mode is currently off." +msgstr "" + +#: admin/wp-security-dashboard-menu.php:299 +#@ all-in-one-wp-security-and-firewall +msgid "Maintenance Mode" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:321 +#@ all-in-one-wp-security-and-firewall +msgid "Cookie Based Brute Prevention" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:324 +#@ all-in-one-wp-security-and-firewall +msgid "Cookie-Based Brute Force" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:328 +#: admin/wp-security-dashboard-menu.php:356 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "The %s feature is currently active." +msgstr "" + +#: admin/wp-security-dashboard-menu.php:329 +#: admin/wp-security-dashboard-menu.php:357 +#@ all-in-one-wp-security-and-firewall +msgid "Your new WordPress login URL is now:" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:389 +#: admin/wp-security-user-login-menu.php:29 +#@ all-in-one-wp-security-and-firewall +msgid "Logged In Users" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:399 +#@ all-in-one-wp-security-and-firewall +msgid "Number of users currently logged in site-wide is:" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:400 +#: admin/wp-security-dashboard-menu.php:422 +#: admin/wp-security-dashboard-menu.php:450 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "Go to the %s menu to see more details" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:405 +#@ all-in-one-wp-security-and-firewall +msgid "There are no other site-wide users currently logged in." +msgstr "" + +#: admin/wp-security-dashboard-menu.php:421 +#@ all-in-one-wp-security-and-firewall +msgid "Number of users currently logged into your site (including you) is:" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:427 +#@ all-in-one-wp-security-and-firewall +msgid "There are no other users currently logged in." +msgstr "" + +#: admin/wp-security-dashboard-menu.php:444 +#@ all-in-one-wp-security-and-firewall +msgid "There are no IP addresses currently locked out." +msgstr "" + +#: admin/wp-security-dashboard-menu.php:449 +#@ all-in-one-wp-security-and-firewall +msgid "Number of temporarily locked out IP addresses: " +msgstr "" + +#: admin/wp-security-dashboard-menu.php:462 +#@ all-in-one-wp-security-and-firewall +msgid "Spread the Word" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:465 +#@ all-in-one-wp-security-and-firewall +msgid "We are working hard to make your WordPress site more secure. Please support us, here is how:" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:489 +#@ all-in-one-wp-security-and-firewall +msgid "Site Info" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:491 +#@ all-in-one-wp-security-and-firewall +msgid "Plugin Version" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:492 +#@ all-in-one-wp-security-and-firewall +msgid "WP Version" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:494 +#: admin/wp-security-dashboard-menu.php:496 +#: admin/wp-security-dashboard-menu.php:592 +#@ all-in-one-wp-security-and-firewall +msgid "Version" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:495 +#@ all-in-one-wp-security-and-firewall +msgid "Table Prefix" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:497 +#@ all-in-one-wp-security-and-firewall +msgid "Session Save Path" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:499 +#@ all-in-one-wp-security-and-firewall +msgid "Server Name" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:500 +#@ all-in-one-wp-security-and-firewall +msgid "Cookie Domain" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:501 +#@ all-in-one-wp-security-and-firewall +msgid "Library Present" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:502 +#@ all-in-one-wp-security-and-firewall +msgid "Debug File Write Permissions" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:506 +#@ all-in-one-wp-security-and-firewall +msgid "PHP Info" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:508 +#@ all-in-one-wp-security-and-firewall +msgid "PHP Version" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:509 +#@ all-in-one-wp-security-and-firewall +msgid "PHP Memory Usage" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:510 +#@ all-in-one-wp-security-and-firewall +msgid " MB" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:516 +#: admin/wp-security-dashboard-menu.php:524 +#: admin/wp-security-dashboard-menu.php:532 +#: admin/wp-security-dashboard-menu.php:574 +#@ all-in-one-wp-security-and-firewall +msgid "N/A" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:519 +#@ all-in-one-wp-security-and-firewall +msgid "PHP Memory Limit" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:527 +#@ all-in-one-wp-security-and-firewall +msgid "PHP Max Upload Size" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:535 +#@ all-in-one-wp-security-and-firewall +msgid "PHP Max Post Size" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:538 +#: admin/wp-security-dashboard-menu.php:546 +#: admin/wp-security-dashboard-menu.php:555 +#: admin/wp-security-dashboard-menu.php:563 +#@ all-in-one-wp-security-and-firewall +msgid "On" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:540 +#: admin/wp-security-dashboard-menu.php:548 +#: admin/wp-security-dashboard-menu.php:557 +#: admin/wp-security-dashboard-menu.php:565 +#@ all-in-one-wp-security-and-firewall +msgid "Off" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:543 +#@ all-in-one-wp-security-and-firewall +msgid "PHP Safe Mode" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:551 +#@ all-in-one-wp-security-and-firewall +msgid "PHP Allow URL fopen" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:560 +#@ default +msgid "PHP Allow URL Include" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:568 +#@ all-in-one-wp-security-and-firewall +msgid "PHP Display Errors" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:577 +#@ all-in-one-wp-security-and-firewall +msgid "PHP Max Script Execution Time" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:577 +#@ default +msgid "Seconds" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:581 +#@ all-in-one-wp-security-and-firewall +msgid "Active Plugins" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:591 +#: admin/wp-security-filesystem-menu.php:130 +#: admin/wp-security-filesystem-menu.php:149 +#@ all-in-one-wp-security-and-firewall +msgid "Name" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:593 +#@ all-in-one-wp-security-and-firewall +msgid "Plugin URL" +msgstr "" + +#: admin/wp-security-dashboard-menu.php:629 +#@ all-in-one-wp-security-and-firewall +msgid "Currently Locked Out IP Addresses and Ranges" +msgstr "" + +#: admin/wp-security-database-menu.php:26 +#: admin/wp-security-database-menu.php:31 +#: classes/grade-system/wp-security-feature-item-manager.php:62 +#@ all-in-one-wp-security-and-firewall +msgid "DB Backup" +msgstr "" + +#: admin/wp-security-database-menu.php:30 +#: classes/grade-system/wp-security-feature-item-manager.php:60 +#@ all-in-one-wp-security-and-firewall +msgid "DB Prefix" +msgstr "" + +#: admin/wp-security-database-menu.php:93 +#@ all-in-one-wp-security-and-firewall +msgid "Nonce check failed for DB prefix change operation!" +msgstr "" + +#: admin/wp-security-database-menu.php:101 +#@ all-in-one-wp-security-and-firewall +msgid "The plugin has detected that it cannot write to the wp-config.php file. This feature can only be used if the plugin can successfully write to the wp-config.php file." +msgstr "" + +#: admin/wp-security-database-menu.php:114 +#@ all-in-one-wp-security-and-firewall +msgid "Please enter a value for the DB prefix." +msgstr "" + +#: admin/wp-security-database-menu.php:123 +#@ all-in-one-wp-security-and-firewall +msgid "ERROR: The table prefix can only contain numbers, letters, and underscores." +msgstr "" + +#: admin/wp-security-database-menu.php:131 +#@ all-in-one-wp-security-and-firewall +msgid "Change Database Prefix" +msgstr "" + +#: admin/wp-security-database-menu.php:134 +#@ all-in-one-wp-security-and-firewall +msgid "Your WordPress DB is the most important asset of your website because it contains a lot of your site's precious information." +msgstr "" + +#: admin/wp-security-database-menu.php:135 +#@ all-in-one-wp-security-and-firewall +msgid "The DB is also a target for hackers via methods such as SQL injections and malicious and automated code which targets certain tables." +msgstr "" + +#: admin/wp-security-database-menu.php:136 +#@ all-in-one-wp-security-and-firewall +msgid "One way to add a layer of protection for your DB is to change the default WordPress table prefix from \"wp_\" to something else which will be difficult for hackers to guess." +msgstr "" + +#: admin/wp-security-database-menu.php:137 +#@ all-in-one-wp-security-and-firewall +msgid "This feature allows you to easily change the prefix to a value of your choice or to a random value set by this plugin." +msgstr "" + +#: admin/wp-security-database-menu.php:143 +#@ all-in-one-wp-security-and-firewall +msgid "DB Prefix Options" +msgstr "" + +#: admin/wp-security-database-menu.php:154 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "It is recommended that you perform a %s before using this feature" +msgstr "" + +#: admin/wp-security-database-menu.php:163 +#@ all-in-one-wp-security-and-firewall +msgid "Current DB Table Prefix" +msgstr "" + +#: admin/wp-security-database-menu.php:169 +#@ all-in-one-wp-security-and-firewall +msgid "" +"Your site is currently using the default WordPress DB prefix value of \"wp_\". \n" +" To increase your site's security you should consider changing the DB prefix value to another value." +msgstr "" + +#: admin/wp-security-database-menu.php:176 +#@ all-in-one-wp-security-and-firewall +msgid "Generate New DB Table Prefix" +msgstr "" + +#: admin/wp-security-database-menu.php:179 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want the plugin to generate a random 6 character string for the table prefix" +msgstr "" + +#: admin/wp-security-database-menu.php:180 +#@ all-in-one-wp-security-and-firewall +msgid "OR" +msgstr "" + +#: admin/wp-security-database-menu.php:182 +#@ all-in-one-wp-security-and-firewall +msgid "Choose your own DB prefix by specifying a string which contains letters and/or numbers and/or underscores. Example: xyz_" +msgstr "" + +#: admin/wp-security-database-menu.php:186 +#@ all-in-one-wp-security-and-firewall +msgid "Change DB Prefix" +msgstr "" + +#: admin/wp-security-database-menu.php:207 +#: admin/wp-security-filesystem-menu.php:86 +#@ all-in-one-wp-security-and-firewall +msgid "Nonce check failed for manual DB backup operation!" +msgstr "" + +#: admin/wp-security-database-menu.php:224 +#@ all-in-one-wp-security-and-firewall +msgid "DB Backup was successfully completed! You will receive the backup file via email if you have enabled \"Send Backup File Via Email\", otherwise you can retrieve it via FTP from the following directory:" +msgstr "" + +#: admin/wp-security-database-menu.php:226 +#@ default +msgid "Your DB Backup File location: " +msgstr "" + +#: admin/wp-security-database-menu.php:234 +#@ all-in-one-wp-security-and-firewall +msgid "DB Backup failed. Please check the permissions of the backup directory." +msgstr "" + +#: admin/wp-security-database-menu.php:251 +#: admin/wp-security-filescan-menu.php:133 +#@ all-in-one-wp-security-and-firewall +msgid "You entered a non numeric value for the \"backup time interval\" field. It has been set to the default value." +msgstr "" + +#: admin/wp-security-database-menu.php:258 +#@ all-in-one-wp-security-and-firewall +msgid "You entered a non numeric value for the \"number of backup files to keep\" field. It has been set to the default value." +msgstr "" + +#: admin/wp-security-database-menu.php:265 +#: admin/wp-security-filescan-menu.php:163 +#: admin/wp-security-user-login-menu.php:117 +#@ all-in-one-wp-security-and-firewall +msgid "You have entered an incorrect email address format. It has been set to your WordPress admin email as default." +msgstr "" + +#: admin/wp-security-database-menu.php:298 +#@ all-in-one-wp-security-and-firewall +msgid "Manual Backup" +msgstr "" + +#: admin/wp-security-database-menu.php:304 +#@ all-in-one-wp-security-and-firewall +msgid "To create a new DB backup just click on the button below." +msgstr "" + +#: admin/wp-security-database-menu.php:307 +#@ all-in-one-wp-security-and-firewall +msgid "Create DB Backup Now" +msgstr "" + +#: admin/wp-security-database-menu.php:311 +#@ all-in-one-wp-security-and-firewall +msgid "Automated Scheduled Backups" +msgstr "" + +#: admin/wp-security-database-menu.php:323 +#@ all-in-one-wp-security-and-firewall +msgid "Enable Automated Scheduled Backups" +msgstr "" + +#: admin/wp-security-database-menu.php:326 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want the system to automatically generate backups periodically based on the settings below" +msgstr "" + +#: admin/wp-security-database-menu.php:330 +#@ all-in-one-wp-security-and-firewall +msgid "Backup Time Interval" +msgstr "" + +#: admin/wp-security-database-menu.php:333 +#: admin/wp-security-filescan-menu.php:279 +#@ all-in-one-wp-security-and-firewall +msgid "Hours" +msgstr "" + +#: admin/wp-security-database-menu.php:334 +#: admin/wp-security-filescan-menu.php:280 +#@ all-in-one-wp-security-and-firewall +msgid "Days" +msgstr "" + +#: admin/wp-security-database-menu.php:335 +#: admin/wp-security-filescan-menu.php:281 +#@ all-in-one-wp-security-and-firewall +msgid "Weeks" +msgstr "" + +#: admin/wp-security-database-menu.php:337 +#@ all-in-one-wp-security-and-firewall +msgid "Set the value for how often you would like an automated backup to occur" +msgstr "" + +#: admin/wp-security-database-menu.php:341 +#@ all-in-one-wp-security-and-firewall +msgid "Number of Backup Files To Keep" +msgstr "" + +#: admin/wp-security-database-menu.php:343 +#@ all-in-one-wp-security-and-firewall +msgid "Thie field allows you to choose the number of backup files you would like to keep in the backup directory" +msgstr "" + +#: admin/wp-security-database-menu.php:347 +#@ all-in-one-wp-security-and-firewall +msgid "Send Backup File Via Email" +msgstr "" + +#: admin/wp-security-database-menu.php:350 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want the system to email you the backup file after a DB backup has been performed" +msgstr "" + +#: admin/wp-security-database-menu.php:352 +#: admin/wp-security-filescan-menu.php:325 +#: admin/wp-security-user-login-menu.php:235 +#@ all-in-one-wp-security-and-firewall +msgid "Enter an email address" +msgstr "" + +#: admin/wp-security-database-menu.php:383 +#@ all-in-one-wp-security-and-firewall +msgid "Error - Could not get tables or no tables found!" +msgstr "" + +#: admin/wp-security-database-menu.php:388 +#@ all-in-one-wp-security-and-firewall +msgid "Starting DB prefix change operations....." +msgstr "" + +#: admin/wp-security-database-menu.php:390 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "Your WordPress system has a total of %s tables and your new DB prefix will be: %s" +msgstr "" + +#: admin/wp-security-database-menu.php:396 +#: classes/wp-security-utility.php:206 +#@ all-in-one-wp-security-and-firewall +msgid "Failed to make a backup of the wp-config.php file. This operation will not go ahead." +msgstr "" + +#: admin/wp-security-database-menu.php:400 +#@ all-in-one-wp-security-and-firewall +msgid "A backup copy of your wp-config.php file was created successfully!" +msgstr "" + +#: admin/wp-security-database-menu.php:422 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "%s table name update failed" +msgstr "" + +#: admin/wp-security-database-menu.php:434 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "Please change the prefix manually for the above tables to: %s" +msgstr "" + +#: admin/wp-security-database-menu.php:437 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "%s tables had their prefix updated successfully!" +msgstr "" + +#: admin/wp-security-database-menu.php:452 +#@ all-in-one-wp-security-and-firewall +msgid "wp-config.php file was updated successfully!" +msgstr "" + +#: admin/wp-security-database-menu.php:455 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "" +"The \"wp-config.php\" file was not able to be modified. Please modify this file manually using your favourite editor and search \n" +" for variable \"$table_prefix\" and assign the following value to that variable: %s" +msgstr "" + +#: admin/wp-security-database-menu.php:476 +#@ all-in-one-wp-security-and-firewall +msgid "There was an error when updating the options table." +msgstr "" + +#: admin/wp-security-database-menu.php:480 +#@ all-in-one-wp-security-and-firewall +msgid "The options table records which had references to the old DB prefix were updated successfully!" +msgstr "" + +#: admin/wp-security-database-menu.php:505 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "Error updating user_meta table where new meta_key = %s, old meta_key = %s and user_id = %s." +msgstr "" + +#: admin/wp-security-database-menu.php:511 +#@ all-in-one-wp-security-and-firewall +msgid "The usermeta table records which had references to the old DB prefix were updated successfully!" +msgstr "" + +#: admin/wp-security-database-menu.php:513 +#@ all-in-one-wp-security-and-firewall +msgid "DB prefix change tasks have been completed." +msgstr "" + +#: admin/wp-security-filescan-menu.php:23 +#: classes/grade-system/wp-security-feature-item-manager.php:102 +#@ all-in-one-wp-security-and-firewall +msgid "File Change Detection" +msgstr "" + +#: admin/wp-security-filescan-menu.php:24 +#@ all-in-one-wp-security-and-firewall +msgid "Malware Scan" +msgstr "" + +#: admin/wp-security-filescan-menu.php:93 +#@ all-in-one-wp-security-and-firewall +msgid "There have been no file changes since the last scan." +msgstr "" + +#: admin/wp-security-filescan-menu.php:103 +#@ all-in-one-wp-security-and-firewall +msgid "Nonce check failed for manual file change detection scan operation!" +msgstr "" + +#: admin/wp-security-filescan-menu.php:110 +#@ all-in-one-wp-security-and-firewall +msgid "The plugin has detected that this is your first file change detection scan. The file details from this scan will be used to detect file changes for future scans!" +msgstr "" + +#: admin/wp-security-filescan-menu.php:112 +#@ all-in-one-wp-security-and-firewall +msgid "Scan Complete - There were no file changes detected!" +msgstr "" + +#: admin/wp-security-filescan-menu.php:201 +#@ all-in-one-wp-security-and-firewall +msgid "" +"NEW SCAN COMPLETED: The plugin has detected that you have made changes to the \"File Types To Ignore\" or \"Files To Ignore\" fields.\n" +" In order to ensure that future scan results are accurate, the old scan data has been refreshed." +msgstr "" + +#: admin/wp-security-filescan-menu.php:211 +#@ all-in-one-wp-security-and-firewall +msgid "All In One WP Security & Firewall has detected that there was a change in your host's files." +msgstr "" + +#: admin/wp-security-filescan-menu.php:213 +#@ all-in-one-wp-security-and-firewall +msgid "View Scan Details & Clear This Message" +msgstr "" + +#: admin/wp-security-filescan-menu.php:222 +#@ all-in-one-wp-security-and-firewall +msgid "If given an opportunity hackers can insert their code or files into your system which they can then use to carry out malicious acts on your site." +msgstr "" + +#: admin/wp-security-filescan-menu.php:223 +#@ all-in-one-wp-security-and-firewall +msgid "Being informed of any changes in your files can be a good way to quickly prevent a hacker from causing damage to your website." +msgstr "" + +#: admin/wp-security-filescan-menu.php:224 +#@ all-in-one-wp-security-and-firewall +msgid "In general, WordPress core and plugin files and file types such as \".php\" or \".js\" should not change often and when they do, it is important that you are made aware when a change occurs and which file was affected." +msgstr "" + +#: admin/wp-security-filescan-menu.php:225 +#@ all-in-one-wp-security-and-firewall +msgid "The \"File Change Detection Feature\" will notify you of any file change which occurs on your system, including the addition and deletion of files by performing a regular automated or manual scan of your system's files." +msgstr "" + +#: admin/wp-security-filescan-menu.php:226 +#@ all-in-one-wp-security-and-firewall +msgid "This feature also allows you to exclude certain files or folders from the scan in cases where you know that they change often as part of their normal operation. (For example log files and certain caching plugin files may change often and hence you may choose to exclude such files from the file change detection scan)" +msgstr "" + +#: admin/wp-security-filescan-menu.php:231 +#@ all-in-one-wp-security-and-firewall +msgid "Manual File Change Detection Scan" +msgstr "" + +#: admin/wp-security-filescan-menu.php:237 +#@ all-in-one-wp-security-and-firewall +msgid "To perform a manual file change detection scan click on the button below." +msgstr "" + +#: admin/wp-security-filescan-menu.php:240 +#@ all-in-one-wp-security-and-firewall +msgid "Perform Scan Now" +msgstr "" + +#: admin/wp-security-filescan-menu.php:244 +#@ all-in-one-wp-security-and-firewall +msgid "View Last Saved File Change Results" +msgstr "" + +#: admin/wp-security-filescan-menu.php:250 +#@ all-in-one-wp-security-and-firewall +msgid "Click the button below to view the saved file change results from the last scan." +msgstr "" + +#: admin/wp-security-filescan-menu.php:253 +#@ all-in-one-wp-security-and-firewall +msgid "View Last File Change" +msgstr "" + +#: admin/wp-security-filescan-menu.php:257 +#@ all-in-one-wp-security-and-firewall +msgid "File Change Detection Settings" +msgstr "" + +#: admin/wp-security-filescan-menu.php:269 +#@ all-in-one-wp-security-and-firewall +msgid "Enable Automated File Change Detection Scan" +msgstr "" + +#: admin/wp-security-filescan-menu.php:272 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want the system to automatically/periodically scan your files to check for file changes based on the settings below" +msgstr "" + +#: admin/wp-security-filescan-menu.php:276 +#@ all-in-one-wp-security-and-firewall +msgid "Scan Time Interval" +msgstr "" + +#: admin/wp-security-filescan-menu.php:283 +#@ all-in-one-wp-security-and-firewall +msgid "Set the value for how often you would like a scan to occur" +msgstr "" + +#: admin/wp-security-filescan-menu.php:287 +#@ all-in-one-wp-security-and-firewall +msgid "File Types To Ignore" +msgstr "" + +#: admin/wp-security-filescan-menu.php:290 +#@ all-in-one-wp-security-and-firewall +msgid "Enter each file type or extension on a new line which you wish to exclude from the file change detection scan." +msgstr "" + +#: admin/wp-security-filescan-menu.php:294 +#@ all-in-one-wp-security-and-firewall +msgid "You can exclude file types from the scan which would not normally pose any security threat if they were changed. These can include things such as image files." +msgstr "" + +#: admin/wp-security-filescan-menu.php:295 +#@ all-in-one-wp-security-and-firewall +msgid "Example: If you want the scanner to ignore files of type jpg, png, and bmp, then you would enter the following:" +msgstr "" + +#: admin/wp-security-filescan-menu.php:296 +#@ all-in-one-wp-security-and-firewall +msgid "jpg" +msgstr "" + +#: admin/wp-security-filescan-menu.php:297 +#@ all-in-one-wp-security-and-firewall +msgid "png" +msgstr "" + +#: admin/wp-security-filescan-menu.php:298 +#@ all-in-one-wp-security-and-firewall +msgid "bmp" +msgstr "" + +#: admin/wp-security-filescan-menu.php:304 +#@ all-in-one-wp-security-and-firewall +msgid "Files/Directories To Ignore" +msgstr "" + +#: admin/wp-security-filescan-menu.php:307 +#@ all-in-one-wp-security-and-firewall +msgid "Enter each file or directory on a new line which you wish to exclude from the file change detection scan." +msgstr "" + +#: admin/wp-security-filescan-menu.php:311 +#@ all-in-one-wp-security-and-firewall +msgid "You can exclude specific files/directories from the scan which would not normally pose any security threat if they were changed. These can include things such as log files." +msgstr "" + +#: admin/wp-security-filescan-menu.php:312 +#@ all-in-one-wp-security-and-firewall +msgid "Example: If you want the scanner to ignore certain files in different directories or whole directories, then you would enter the following:" +msgstr "" + +#: admin/wp-security-filescan-menu.php:313 +#@ all-in-one-wp-security-and-firewall +msgid "cache/config/master.php" +msgstr "" + +#: admin/wp-security-filescan-menu.php:314 +#@ all-in-one-wp-security-and-firewall +msgid "somedirectory" +msgstr "" + +#: admin/wp-security-filescan-menu.php:320 +#@ all-in-one-wp-security-and-firewall +msgid "Send Email When Change Detected" +msgstr "" + +#: admin/wp-security-filescan-menu.php:323 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want the system to email you if a file change was detected" +msgstr "" + +#: admin/wp-security-filescan-menu.php:341 +#@ all-in-one-wp-security-and-firewall +msgid "What is Malware?" +msgstr "" + +#: admin/wp-security-filescan-menu.php:342 +#@ all-in-one-wp-security-and-firewall +msgid "The word Malware stands for Malicious Software. It can consist of things like trojan horses, adware, worms, spyware and any other undesirable code which a hacker will try to inject into your website." +msgstr "" + +#: admin/wp-security-filescan-menu.php:343 +#@ all-in-one-wp-security-and-firewall +msgid "Often when malware code has been inserted into your site you will normally not notice anything out of the ordinary based on appearances, but it can have a dramatic effect on your site’s search ranking." +msgstr "" + +#: admin/wp-security-filescan-menu.php:344 +#@ all-in-one-wp-security-and-firewall +msgid "This is because the bots and spiders from search engines such as Google have the capability to detect malware when they are indexing the pages on your site, and consequently they can blacklist your website which will in turn affect your search rankings." +msgstr "" + +#: admin/wp-security-filescan-menu.php:348 +#@ all-in-one-wp-security-and-firewall +msgid "Scanning For Malware" +msgstr "" + +#: admin/wp-security-filescan-menu.php:349 +#@ all-in-one-wp-security-and-firewall +msgid "Due to the constantly changing and complex nature of Malware, scanning for such things using a standalone plugin will not work reliably. This is something best done via an external scan of your site regularly." +msgstr "" + +#: admin/wp-security-filescan-menu.php:350 +#@ all-in-one-wp-security-and-firewall +msgid "This is why we have created an easy-to-use scanning service which is hosted off our own server which will scan your site for malware once every day and notify you if it finds anything." +msgstr "" + +#: admin/wp-security-filescan-menu.php:351 +#@ all-in-one-wp-security-and-firewall +msgid "When you sign up for this service you will get the following:" +msgstr "" + +#: admin/wp-security-filescan-menu.php:353 +#@ all-in-one-wp-security-and-firewall +msgid "Automatic Daily Scan of 1 Website" +msgstr "" + +#: admin/wp-security-filescan-menu.php:354 +#@ all-in-one-wp-security-and-firewall +msgid "Automatic Malware & Blacklist Monitoring" +msgstr "" + +#: admin/wp-security-filescan-menu.php:355 +#@ all-in-one-wp-security-and-firewall +msgid "Automatic Email Alerting" +msgstr "" + +#: admin/wp-security-filescan-menu.php:356 +#@ all-in-one-wp-security-and-firewall +msgid "Site uptime monitoring" +msgstr "" + +#: admin/wp-security-filescan-menu.php:357 +#@ all-in-one-wp-security-and-firewall +msgid "Site response time monitoring" +msgstr "" + +#: admin/wp-security-filescan-menu.php:358 +#@ all-in-one-wp-security-and-firewall +msgid "Malware Cleanup" +msgstr "" + +#: admin/wp-security-filescan-menu.php:359 +#@ all-in-one-wp-security-and-firewall +msgid "Blacklist Removal" +msgstr "" + +#: admin/wp-security-filescan-menu.php:360 +#@ all-in-one-wp-security-and-firewall +msgid "No Contract (Cancel Anytime)" +msgstr "" + +#: admin/wp-security-filescan-menu.php:362 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "To learn more please %s." +msgstr "" + +#: admin/wp-security-filescan-menu.php:391 +#@ all-in-one-wp-security-and-firewall +msgid "Latest File Change Scan Results" +msgstr "" + +#: admin/wp-security-filescan-menu.php:400 +#@ all-in-one-wp-security-and-firewall +msgid "The following files were added to your host." +msgstr "" + +#: admin/wp-security-filescan-menu.php:403 +#: admin/wp-security-filescan-menu.php:424 +#: admin/wp-security-filescan-menu.php:448 +#: admin/wp-security-settings-menu.php:26 +#: admin/wp-security-settings-menu.php:27 +#@ all-in-one-wp-security-and-firewall +msgid "File" +msgstr "" + +#: admin/wp-security-filescan-menu.php:404 +#: admin/wp-security-filescan-menu.php:425 +#: admin/wp-security-filescan-menu.php:449 +#@ all-in-one-wp-security-and-firewall +msgid "File Size" +msgstr "" + +#: admin/wp-security-filescan-menu.php:405 +#: admin/wp-security-filescan-menu.php:426 +#: admin/wp-security-filescan-menu.php:450 +#@ all-in-one-wp-security-and-firewall +msgid "File Modified" +msgstr "" + +#: admin/wp-security-filescan-menu.php:421 +#@ all-in-one-wp-security-and-firewall +msgid "The following files were removed from your host." +msgstr "" + +#: admin/wp-security-filescan-menu.php:445 +#@ all-in-one-wp-security-and-firewall +msgid "The following files were changed on your host." +msgstr "" + +#: admin/wp-security-filesystem-menu.php:26 +#: classes/grade-system/wp-security-feature-item-manager.php:66 +#@ all-in-one-wp-security-and-firewall +msgid "File Permissions" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:27 +#@ all-in-one-wp-security-and-firewall +msgid "PHP File Editing" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:28 +#@ all-in-one-wp-security-and-firewall +msgid "WP File Access" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:29 +#@ all-in-one-wp-security-and-firewall +msgid "Host System Logs" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:96 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "The permissions for %s were succesfully changed to %s" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:100 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "Unable to change permissions for %s!" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:106 +#@ all-in-one-wp-security-and-firewall +msgid "File Permissions Scan" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:109 +#@ all-in-one-wp-security-and-firewall +msgid "Your WordPress file and folder permission settings govern the accessability and read/write privileges of the files and folders which make up your WP installation." +msgstr "" + +#: admin/wp-security-filesystem-menu.php:110 +#@ all-in-one-wp-security-and-firewall +msgid "Your WP installation already comes with reasonably secure file permission settings for the filesystem." +msgstr "" + +#: admin/wp-security-filesystem-menu.php:111 +#@ all-in-one-wp-security-and-firewall +msgid "However, sometimes people or other plugins modify the various permission settings of certain core WP folders or files such that they end up making their site less secure because they chose the wrong permission values." +msgstr "" + +#: admin/wp-security-filesystem-menu.php:112 +#@ all-in-one-wp-security-and-firewall +msgid "This feature will scan the critical WP core folders and files and will highlight any permission settings which are insecure." +msgstr "" + +#: admin/wp-security-filesystem-menu.php:118 +#@ all-in-one-wp-security-and-firewall +msgid "WP Directory and File Permissions Scan Results" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:131 +#: admin/wp-security-filesystem-menu.php:150 +#@ all-in-one-wp-security-and-firewall +msgid "File/Folder" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:132 +#: admin/wp-security-filesystem-menu.php:151 +#@ all-in-one-wp-security-and-firewall +msgid "Current Permissions" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:133 +#: admin/wp-security-filesystem-menu.php:152 +#@ all-in-one-wp-security-and-firewall +msgid "Recommended Permissions" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:134 +#: admin/wp-security-filesystem-menu.php:153 +#@ all-in-one-wp-security-and-firewall +msgid "Recommended Action" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:191 +#@ all-in-one-wp-security-and-firewall +msgid "Your PHP file editing settings were saved successfully." +msgstr "" + +#: admin/wp-security-filesystem-menu.php:195 +#@ all-in-one-wp-security-and-firewall +msgid "Operation failed! Unable to modify or make a backup of wp-config.php file!" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:201 +#: classes/grade-system/wp-security-feature-item-manager.php:68 +#@ all-in-one-wp-security-and-firewall +msgid "File Editing" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:204 +#@ all-in-one-wp-security-and-firewall +msgid "The Wordpress Dashboard by default allows administrators to edit PHP files, such as plugin and theme files." +msgstr "" + +#: admin/wp-security-filesystem-menu.php:205 +#@ all-in-one-wp-security-and-firewall +msgid "This is often the first tool an attacker will use if able to login, since it allows code execution." +msgstr "" + +#: admin/wp-security-filesystem-menu.php:206 +#@ all-in-one-wp-security-and-firewall +msgid "This feature will disable the ability for people to edit PHP files via the dashboard." +msgstr "" + +#: admin/wp-security-filesystem-menu.php:212 +#@ all-in-one-wp-security-and-firewall +msgid "Disable PHP File Editing" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:224 +#@ all-in-one-wp-security-and-firewall +msgid "Disable Ability To Edit PHP Files" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:227 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want to remove the ability for people to edit PHP files via the WP dashboard" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:271 +#@ all-in-one-wp-security-and-firewall +msgid "You have successfully saved the Prevent Access to Default WP Files configuration." +msgstr "" + +#: admin/wp-security-filesystem-menu.php:280 +#@ all-in-one-wp-security-and-firewall +msgid "WordPress Files" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:283 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "This feature allows you to prevent access to files such as %s, %s and %s which are delivered with all WP installations." +msgstr "" + +#: admin/wp-security-filesystem-menu.php:284 +#@ all-in-one-wp-security-and-firewall +msgid "By preventing access to these files you are hiding some key pieces of information (such as WordPress version info) from potential hackers." +msgstr "" + +#: admin/wp-security-filesystem-menu.php:289 +#@ all-in-one-wp-security-and-firewall +msgid "Prevent Access to Default WP Files" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:300 +#@ all-in-one-wp-security-and-firewall +msgid "Prevent Access to WP Default Install Files" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:303 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want to prevent access to readme.html, license.txt and wp-config-sample.php." +msgstr "" + +#: admin/wp-security-filesystem-menu.php:307 +#@ all-in-one-wp-security-and-firewall +msgid "Save Setting" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:331 +#@ all-in-one-wp-security-and-firewall +msgid "System Logs" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:334 +#@ all-in-one-wp-security-and-firewall +msgid "Sometimes your hosting platform will produce error or warning logs in a file called \"error_log\"." +msgstr "" + +#: admin/wp-security-filesystem-menu.php:335 +#@ all-in-one-wp-security-and-firewall +msgid "Depending on the nature and cause of the error or warning, your hosting server can create multiple instances of this file in numerous directory locations of your WordPress installation." +msgstr "" + +#: admin/wp-security-filesystem-menu.php:336 +#@ all-in-one-wp-security-and-firewall +msgid "By occassionally viewing the contents of these logs files you can keep informed of any underlying problems on your system which you might need to address." +msgstr "" + +#: admin/wp-security-filesystem-menu.php:342 +#@ all-in-one-wp-security-and-firewall +msgid "View System Logs" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:347 +#@ all-in-one-wp-security-and-firewall +msgid "Enter System Log File Name" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:349 +#@ all-in-one-wp-security-and-firewall +msgid "Enter your system log file name. (Defaults to error_log)" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:352 +#@ all-in-one-wp-security-and-firewall +msgid "View Latest System Logs" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:354 +#@ all-in-one-wp-security-and-firewall +msgid "Loading..." +msgstr "" + +#: admin/wp-security-filesystem-menu.php:371 +#@ all-in-one-wp-security-and-firewall +msgid "No system logs were found!" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:424 +#@ all-in-one-wp-security-and-firewall +msgid "Set Recommended Permissions" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:430 +#@ all-in-one-wp-security-and-firewall +msgid "No Action Required" +msgstr "" + +#: admin/wp-security-filesystem-menu.php:470 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "Showing latest entries of error_log file: %s" +msgstr "" + +#: admin/wp-security-firewall-menu.php:27 +#@ all-in-one-wp-security-and-firewall +msgid "Basic Firewall Rules" +msgstr "" + +#: admin/wp-security-firewall-menu.php:28 +#@ all-in-one-wp-security-and-firewall +msgid "Additional Firewall Rules" +msgstr "" + +#: admin/wp-security-firewall-menu.php:29 +#@ all-in-one-wp-security-and-firewall +msgid "5G Blacklist Firewall Rules" +msgstr "" + +#: admin/wp-security-firewall-menu.php:30 +#@ all-in-one-wp-security-and-firewall +msgid "Internet Bots" +msgstr "" + +#: admin/wp-security-firewall-menu.php:31 +#@ all-in-one-wp-security-and-firewall +msgid "Prevent Hotlinks" +msgstr "" + +#: admin/wp-security-firewall-menu.php:32 +#@ all-in-one-wp-security-and-firewall +msgid "404 Detection" +msgstr "" + +#: admin/wp-security-firewall-menu.php:115 +#: admin/wp-security-firewall-menu.php:663 +#: admin/wp-security-spam-menu.php:102 +#: admin/wp-security-user-registration-menu.php:96 +#@ all-in-one-wp-security-and-firewall +msgid "Settings were successfully saved" +msgstr "" + +#: admin/wp-security-firewall-menu.php:124 +#: admin/wp-security-firewall-menu.php:503 +#@ all-in-one-wp-security-and-firewall +msgid "Firewall Settings" +msgstr "" + +#: admin/wp-security-firewall-menu.php:131 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "This should not have any impact on your site's general functionality but if you wish you can take a %s of your .htaccess file before proceeding." +msgstr "" + +#: admin/wp-security-firewall-menu.php:132 +#@ all-in-one-wp-security-and-firewall +msgid "The features in this tab allow you to activate some basic firewall security protection rules for your site." +msgstr "" + +#: admin/wp-security-firewall-menu.php:133 +#@ all-in-one-wp-security-and-firewall +msgid "The firewall functionality is achieved via the insertion of special code into your currently active .htaccess file." +msgstr "" + +#: admin/wp-security-firewall-menu.php:143 +#@ all-in-one-wp-security-and-firewall +msgid "Attention:" +msgstr "" + +#: admin/wp-security-firewall-menu.php:144 +#@ all-in-one-wp-security-and-firewall +msgid "Currently the " +msgstr "" + +#: admin/wp-security-firewall-menu.php:144 +#: admin/wp-security-firewall-menu.php:191 +#@ all-in-one-wp-security-and-firewall +msgid "Enable Pingback Protection" +msgstr "" + +#: admin/wp-security-firewall-menu.php:144 +#@ all-in-one-wp-security-and-firewall +msgid " is active." +msgstr "" + +#: admin/wp-security-firewall-menu.php:145 +#@ all-in-one-wp-security-and-firewall +msgid "Please beware that if you are using the WordPress iOS App, then you will need to deactivate this feature in order for the app to work properly." +msgstr "" + +#: admin/wp-security-firewall-menu.php:153 +#@ all-in-one-wp-security-and-firewall +msgid "Basic Firewall Settings" +msgstr "" + +#: admin/wp-security-firewall-menu.php:161 +#@ all-in-one-wp-security-and-firewall +msgid "Enable Basic Firewall Protection" +msgstr "" + +#: admin/wp-security-firewall-menu.php:164 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want to apply basic firewall protection to your site." +msgstr "" + +#: admin/wp-security-firewall-menu.php:168 +#@ all-in-one-wp-security-and-firewall +msgid "This setting will implement the following basic firewall protection mechanisms on your site:" +msgstr "" + +#: admin/wp-security-firewall-menu.php:169 +#@ all-in-one-wp-security-and-firewall +msgid "1) Protect your htaccess file by denying access to it." +msgstr "" + +#: admin/wp-security-firewall-menu.php:170 +#@ all-in-one-wp-security-and-firewall +msgid "2) Disable the server signature." +msgstr "" + +#: admin/wp-security-firewall-menu.php:171 +#@ all-in-one-wp-security-and-firewall +msgid "3) Limit file upload size (10MB)." +msgstr "" + +#: admin/wp-security-firewall-menu.php:172 +#@ all-in-one-wp-security-and-firewall +msgid "4) Protect your wp-config.php file by denying access to it." +msgstr "" + +#: admin/wp-security-firewall-menu.php:173 +#@ all-in-one-wp-security-and-firewall +msgid "The above firewall features will be applied via your .htaccess file and should not affect your site's overall functionality." +msgstr "" + +#: admin/wp-security-firewall-menu.php:174 +#@ all-in-one-wp-security-and-firewall +msgid "You are still advised to take a backup of your active .htaccess file just in case." +msgstr "" + +#: admin/wp-security-firewall-menu.php:183 +#@ all-in-one-wp-security-and-firewall +msgid "WordPress Pingback Vulnerability Protection" +msgstr "" + +#: admin/wp-security-firewall-menu.php:194 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you are not using the WP XML-RPC functionality and you want to enable protection against WordPress pingback vulnerabilities." +msgstr "" + +#: admin/wp-security-firewall-menu.php:198 +#@ all-in-one-wp-security-and-firewall +msgid "This setting will add a directive in your .htaccess to disable access to the WordPress xmlrpc.php file which is responsible for the XML-RPC functionality such as pingbacks in WordPress." +msgstr "" + +#: admin/wp-security-firewall-menu.php:199 +#@ all-in-one-wp-security-and-firewall +msgid "Hackers can exploit various pingback vulnerabilities in the WordPress XML-RPC API in a number of ways such as:" +msgstr "" + +#: admin/wp-security-firewall-menu.php:200 +#@ all-in-one-wp-security-and-firewall +msgid "1) Denial of Service (DoS) attacks" +msgstr "" + +#: admin/wp-security-firewall-menu.php:201 +#@ all-in-one-wp-security-and-firewall +msgid "2) Hacking internal routers." +msgstr "" + +#: admin/wp-security-firewall-menu.php:202 +#@ all-in-one-wp-security-and-firewall +msgid "3) Scanning ports in internal networks to get info from various hosts." +msgstr "" + +#: admin/wp-security-firewall-menu.php:203 +#@ all-in-one-wp-security-and-firewall +msgid "Apart from the security protection benefit, this feature may also help reduce load on your server, particularly if your site currently has a lot of unwanted traffic hitting the XML-RPC API on your installation." +msgstr "" + +#: admin/wp-security-firewall-menu.php:204 +#@ all-in-one-wp-security-and-firewall +msgid "NOTE: You should only enable this feature if you are not currently using the XML-RPC functionality on your WordPress installation." +msgstr "" + +#: admin/wp-security-firewall-menu.php:211 +#@ all-in-one-wp-security-and-firewall +msgid "Save Basic Firewall Settings" +msgstr "" + +#: admin/wp-security-firewall-menu.php:283 +#@ all-in-one-wp-security-and-firewall +msgid "You have successfully saved the Additional Firewall Protection configuration" +msgstr "" + +#: admin/wp-security-firewall-menu.php:297 +#@ all-in-one-wp-security-and-firewall +msgid "Additional Firewall Protection" +msgstr "" + +#: admin/wp-security-firewall-menu.php:301 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "Due to the nature of the code being inserted to the .htaccess file, this feature may break some functionality for certain plugins and you are therefore advised to take a %s of .htaccess before applying this configuration." +msgstr "" + +#: admin/wp-security-firewall-menu.php:303 +#@ all-in-one-wp-security-and-firewall +msgid "This feature allows you to activate more advanced firewall settings to your site." +msgstr "" + +#: admin/wp-security-firewall-menu.php:304 +#@ all-in-one-wp-security-and-firewall +msgid "The advanced firewall rules are applied via the insertion of special code to your currently active .htaccess file." +msgstr "" + +#: admin/wp-security-firewall-menu.php:313 +#@ all-in-one-wp-security-and-firewall +msgid "Listing of Directory Contents" +msgstr "" + +#: admin/wp-security-firewall-menu.php:322 +#: classes/grade-system/wp-security-feature-item-manager.php:88 +#@ all-in-one-wp-security-and-firewall +msgid "Disable Index Views" +msgstr "" + +#: admin/wp-security-firewall-menu.php:325 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want to disable directory and file listing." +msgstr "" + +#: admin/wp-security-firewall-menu.php:330 +#@ all-in-one-wp-security-and-firewall +msgid "By default, an Apache server will allow the listing of the contents of a directory if it doesn't contain an index.php file." +msgstr "" + +#: admin/wp-security-firewall-menu.php:332 +#@ all-in-one-wp-security-and-firewall +msgid "This feature will prevent the listing of contents for all directories." +msgstr "" + +#: admin/wp-security-firewall-menu.php:334 +#@ all-in-one-wp-security-and-firewall +msgid "NOTE: In order for this feature to work \"AllowOverride\" of the Indexes directive must be enabled in your httpd.conf file. Ask your hosting provider to check this if you don't have access to httpd.conf" +msgstr "" + +#: admin/wp-security-firewall-menu.php:343 +#@ all-in-one-wp-security-and-firewall +msgid "Trace and Track" +msgstr "" + +#: admin/wp-security-firewall-menu.php:352 +#: classes/grade-system/wp-security-feature-item-manager.php:89 +#@ all-in-one-wp-security-and-firewall +msgid "Disable Trace and Track" +msgstr "" + +#: admin/wp-security-firewall-menu.php:355 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want to disable trace and track." +msgstr "" + +#: admin/wp-security-firewall-menu.php:360 +#@ all-in-one-wp-security-and-firewall +msgid "HTTP Trace attack (XST) can be used to return header requests and grab cookies and other information." +msgstr "" + +#: admin/wp-security-firewall-menu.php:362 +#@ all-in-one-wp-security-and-firewall +msgid "This hacking technique is usually used together with cross site scripting attacks (XSS)." +msgstr "" + +#: admin/wp-security-firewall-menu.php:364 +#@ all-in-one-wp-security-and-firewall +msgid "Disabling trace and track on your site will help prevent HTTP Trace attacks." +msgstr "" + +#: admin/wp-security-firewall-menu.php:373 +#@ all-in-one-wp-security-and-firewall +msgid "Proxy Comment Posting" +msgstr "" + +#: admin/wp-security-firewall-menu.php:383 +#@ all-in-one-wp-security-and-firewall +msgid "Forbid Proxy Comment Posting" +msgstr "" + +#: admin/wp-security-firewall-menu.php:386 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want to forbid proxy comment posting." +msgstr "" + +#: admin/wp-security-firewall-menu.php:391 +#@ all-in-one-wp-security-and-firewall +msgid "This setting will deny any requests that use a proxy server when posting comments." +msgstr "" + +#: admin/wp-security-firewall-menu.php:392 +#@ all-in-one-wp-security-and-firewall +msgid "By forbidding proxy comments you are in effect eliminating some SPAM and other proxy requests." +msgstr "" + +#: admin/wp-security-firewall-menu.php:401 +#@ all-in-one-wp-security-and-firewall +msgid "Bad Query Strings" +msgstr "" + +#: admin/wp-security-firewall-menu.php:411 +#@ all-in-one-wp-security-and-firewall +msgid "Deny Bad Query Strings" +msgstr "" + +#: admin/wp-security-firewall-menu.php:414 +#@ all-in-one-wp-security-and-firewall +msgid "This will help protect you against malicious queries via XSS." +msgstr "" + +#: admin/wp-security-firewall-menu.php:419 +#@ all-in-one-wp-security-and-firewall +msgid "This feature will write rules in your .htaccess file to prevent malicious string attacks on your site using XSS." +msgstr "" + +#: admin/wp-security-firewall-menu.php:420 +#@ all-in-one-wp-security-and-firewall +msgid "NOTE: Some of these strings might be used for plugins or themes and hence this might break some functionality." +msgstr "" + +#: admin/wp-security-firewall-menu.php:421 +#: admin/wp-security-firewall-menu.php:451 +#@ all-in-one-wp-security-and-firewall +msgid "You are therefore strongly advised to take a backup of your active .htaccess file before applying this feature." +msgstr "" + +#: admin/wp-security-firewall-menu.php:430 +#: classes/grade-system/wp-security-feature-item-manager.php:92 +#@ all-in-one-wp-security-and-firewall +msgid "Advanced Character String Filter" +msgstr "" + +#: admin/wp-security-firewall-menu.php:440 +#@ all-in-one-wp-security-and-firewall +msgid "Enable Advanced Character String Filter" +msgstr "" + +#: admin/wp-security-firewall-menu.php:443 +#@ all-in-one-wp-security-and-firewall +msgid "This will block bad character matches from XSS." +msgstr "" + +#: admin/wp-security-firewall-menu.php:448 +#@ all-in-one-wp-security-and-firewall +msgid "This is an advanced character string filter to prevent malicious string attacks on your site coming from Cross Site Scripting (XSS)." +msgstr "" + +#: admin/wp-security-firewall-menu.php:449 +#@ all-in-one-wp-security-and-firewall +msgid "This setting matches for common malicious string patterns and exploits and will produce a 403 error for the hacker attempting the query." +msgstr "" + +#: admin/wp-security-firewall-menu.php:450 +#@ all-in-one-wp-security-and-firewall +msgid "NOTE: Some strings for this setting might break some functionality." +msgstr "" + +#: admin/wp-security-firewall-menu.php:459 +#@ all-in-one-wp-security-and-firewall +msgid "Save Additional Firewall Settings" +msgstr "" + +#: admin/wp-security-firewall-menu.php:494 +#@ all-in-one-wp-security-and-firewall +msgid "You have successfully saved the 5G Firewall Protection configuration" +msgstr "" + +#: admin/wp-security-firewall-menu.php:507 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "This feature allows you to activate the 5G firewall security protection rules designed and produced by %s." +msgstr "" + +#: admin/wp-security-firewall-menu.php:508 +#@ all-in-one-wp-security-and-firewall +msgid "The 5G Blacklist is a simple, flexible blacklist that helps reduce the number of malicious URL requests that hit your website." +msgstr "" + +#: admin/wp-security-firewall-menu.php:509 +#@ all-in-one-wp-security-and-firewall +msgid "The added advantage of applying the 5G firewall to your site is that it has been tested and confirmed by the people at PerishablePress.com to be an optimal and least disruptive set of .htaccess security rules for general WP sites running on an Apache server or similar." +msgstr "" + +#: admin/wp-security-firewall-menu.php:510 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "Therefore the 5G firewall rules should not have any impact on your site's general functionality but if you wish you can take a %s of your .htaccess file before proceeding." +msgstr "" + +#: admin/wp-security-firewall-menu.php:516 +#@ all-in-one-wp-security-and-firewall +msgid "5G Blacklist/Firewall Settings" +msgstr "" + +#: admin/wp-security-firewall-menu.php:528 +#@ all-in-one-wp-security-and-firewall +msgid "Enable 5G Firewall Protection" +msgstr "" + +#: admin/wp-security-firewall-menu.php:531 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want to apply the 5G Blacklist firewall protection from perishablepress.com to your site." +msgstr "" + +#: admin/wp-security-firewall-menu.php:535 +#@ all-in-one-wp-security-and-firewall +msgid "This setting will implement the 5G security firewall protection mechanisms on your site which include the following things:" +msgstr "" + +#: admin/wp-security-firewall-menu.php:536 +#@ all-in-one-wp-security-and-firewall +msgid "1) Block forbidden characters commonly used in exploitative attacks." +msgstr "" + +#: admin/wp-security-firewall-menu.php:537 +#@ all-in-one-wp-security-and-firewall +msgid "2) Block malicious encoded URL characters such as the \".css(\" string." +msgstr "" + +#: admin/wp-security-firewall-menu.php:538 +#@ all-in-one-wp-security-and-firewall +msgid "3) Guard against the common patterns and specific exploits in the root portion of targeted URLs." +msgstr "" + +#: admin/wp-security-firewall-menu.php:539 +#@ all-in-one-wp-security-and-firewall +msgid "4) Stop attackers from manipulating query strings by disallowing illicit characters." +msgstr "" + +#: admin/wp-security-firewall-menu.php:540 +#@ all-in-one-wp-security-and-firewall +msgid "....and much more." +msgstr "" + +#: admin/wp-security-firewall-menu.php:546 +#@ all-in-one-wp-security-and-firewall +msgid "Save 5G Firewall Settings" +msgstr "" + +#: admin/wp-security-firewall-menu.php:577 +#@ all-in-one-wp-security-and-firewall +msgid "The Internet bot settings were successfully saved" +msgstr "" + +#: admin/wp-security-firewall-menu.php:581 +#@ all-in-one-wp-security-and-firewall +msgid "Internet Bot Settings" +msgstr "" + +#: admin/wp-security-firewall-menu.php:588 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "%s?" +msgstr "" + +#: admin/wp-security-firewall-menu.php:590 +#@ all-in-one-wp-security-and-firewall +msgid "A bot is a piece of software which runs on the Internet and performs automatic tasks. For example when Google indexes your pages it uses automatic bots to achieve this task." +msgstr "" + +#: admin/wp-security-firewall-menu.php:591 +#@ all-in-one-wp-security-and-firewall +msgid "A lot of bots are legitimate and non-malicous but not all bots are good and often you will find some which try to impersonate legitimate bots such as \"Googlebot\" but in reality they have nohing to do with Google at all." +msgstr "" + +#: admin/wp-security-firewall-menu.php:592 +#@ all-in-one-wp-security-and-firewall +msgid "Although most of the bots out there are relatively harmless sometimes website owners want to have more control over which bots they allow into their site." +msgstr "" + +#: admin/wp-security-firewall-menu.php:593 +#@ all-in-one-wp-security-and-firewall +msgid "This feature allows you to block bots which are impersonating as a Googlebot but actually aren't. (In other words they are fake Google bots)" +msgstr "" + +#: admin/wp-security-firewall-menu.php:594 +#@ all-in-one-wp-security-and-firewall +msgid "Googlebots have a unique indentity which cannot easily be forged and this feature will indentify any fake Google bots and block them from reading your site's pages." +msgstr "" + +#: admin/wp-security-firewall-menu.php:600 +#@ all-in-one-wp-security-and-firewall +msgid "Attention: Sometimes non-malicious Internet organizations might have bots which impersonate as a \"Googlebot\"." +msgstr "" + +#: admin/wp-security-firewall-menu.php:601 +#@ all-in-one-wp-security-and-firewall +msgid "Just be aware that if you activate this feature the plugin will block all bots which use the \"Googlebot\" string in their User Agent information but are NOT officially from Google (irrespective whether they are malicious or not)." +msgstr "" + +#: admin/wp-security-firewall-menu.php:602 +#@ all-in-one-wp-security-and-firewall +msgid "All other bots from other organizations such as \"Yahoo\", \"Bing\" etc will not be affected by this feature." +msgstr "" + +#: admin/wp-security-firewall-menu.php:608 +#: admin/wp-security-firewall-menu.php:618 +#: classes/grade-system/wp-security-feature-item-manager.php:94 +#@ all-in-one-wp-security-and-firewall +msgid "Block Fake Googlebots" +msgstr "" + +#: admin/wp-security-firewall-menu.php:621 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want to block all fake Googlebots." +msgstr "" + +#: admin/wp-security-firewall-menu.php:625 +#@ all-in-one-wp-security-and-firewall +msgid "This feature will check if the User Agent information of a bot contains the string \"Googlebot\"." +msgstr "" + +#: admin/wp-security-firewall-menu.php:626 +#@ all-in-one-wp-security-and-firewall +msgid "It will then perform a few tests to verify if the bot is legitimately from Google and if so it will allow the bot to proceed." +msgstr "" + +#: admin/wp-security-firewall-menu.php:627 +#@ all-in-one-wp-security-and-firewall +msgid "If the bot fails the checks then the plugin will mark it as being a fake Googlebot and it will block it" +msgstr "" + +#: admin/wp-security-firewall-menu.php:634 +#@ all-in-one-wp-security-and-firewall +msgid "Save Internet Bot Settings" +msgstr "" + +#: admin/wp-security-firewall-menu.php:671 +#: admin/wp-security-firewall-menu.php:693 +#: classes/grade-system/wp-security-feature-item-manager.php:32 +#@ all-in-one-wp-security-and-firewall +msgid "Prevent Image Hotlinking" +msgstr "" + +#: admin/wp-security-firewall-menu.php:674 +#@ all-in-one-wp-security-and-firewall +msgid "A Hotlink is where someone displays an image on their site which is actually located on your site by using a direct link to the source of the image on your server." +msgstr "" + +#: admin/wp-security-firewall-menu.php:675 +#@ all-in-one-wp-security-and-firewall +msgid "Due to the fact that the image being displayed on the other person's site is coming from your server, this can cause leaking of bandwidth and resources for you because your server has to present this image for the people viewing it on someone elses's site." +msgstr "" + +#: admin/wp-security-firewall-menu.php:676 +#@ all-in-one-wp-security-and-firewall +msgid "This feature will prevent people from directly hotlinking images from your site's pages by writing some directives in your .htaccess file." +msgstr "" + +#: admin/wp-security-firewall-menu.php:681 +#@ all-in-one-wp-security-and-firewall +msgid "Prevent Hotlinking" +msgstr "" + +#: admin/wp-security-firewall-menu.php:696 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want to prevent hotlinking to images on your site." +msgstr "" + +#: admin/wp-security-firewall-menu.php:716 +#@ all-in-one-wp-security-and-firewall +msgid "Nonce check failed for delete all 404 event logs operation!" +msgstr "" + +#: admin/wp-security-firewall-menu.php:727 +#@ all-in-one-wp-security-and-firewall +msgid "404 Detection Feature - Delete all 404 event logs operation failed!" +msgstr "" + +#: admin/wp-security-firewall-menu.php:731 +#@ all-in-one-wp-security-and-firewall +msgid "All 404 event logs were deleted from the DB successfully!" +msgstr "" + +#: admin/wp-security-firewall-menu.php:757 +#: admin/wp-security-user-login-menu.php:110 +#@ all-in-one-wp-security-and-firewall +msgid "You entered a non numeric value for the lockout time length field. It has been set to the default value." +msgstr "" + +#: admin/wp-security-firewall-menu.php:763 +#@ all-in-one-wp-security-and-firewall +msgid "You entered an incorrect format for the \"Redirect URL\" field. It has been set to the default value." +msgstr "" + +#: admin/wp-security-firewall-menu.php:795 +#@ all-in-one-wp-security-and-firewall +msgid "404 Detection Configuration" +msgstr "" + +#: admin/wp-security-firewall-menu.php:798 +#@ all-in-one-wp-security-and-firewall +msgid "A 404 or Not Found error occurs when somebody tries to access a non-existent page on your website." +msgstr "" + +#: admin/wp-security-firewall-menu.php:799 +#@ all-in-one-wp-security-and-firewall +msgid "Typically, most 404 errors happen quite innocently when people have mis-typed a URL or used an old link to page which doesn't exist anymore." +msgstr "" + +#: admin/wp-security-firewall-menu.php:800 +#@ all-in-one-wp-security-and-firewall +msgid "However, in some cases you may find many repeated 404 errors which occur in a relatively short space of time and from the same IP address which are all attempting to access a variety of non-existent page URLs." +msgstr "" + +#: admin/wp-security-firewall-menu.php:801 +#@ all-in-one-wp-security-and-firewall +msgid "Such behaviour can mean that a hacker might be trying to find a particular page or URL for sinister reasons." +msgstr "" + +#: admin/wp-security-firewall-menu.php:802 +#@ all-in-one-wp-security-and-firewall +msgid "This feature allows you to monitor all 404 events which occur on your site, and it also gives you the option of blocking IP addresses for a configured length of time." +msgstr "" + +#: admin/wp-security-firewall-menu.php:803 +#@ all-in-one-wp-security-and-firewall +msgid "If you want to temporarily block an IP address, simply click the \"Temp Block\" link for the applicable IP entry in the \"404 Event Logs\" table below." +msgstr "" + +#: admin/wp-security-firewall-menu.php:808 +#@ all-in-one-wp-security-and-firewall +msgid "404 Detection Options" +msgstr "" + +#: admin/wp-security-firewall-menu.php:820 +#@ all-in-one-wp-security-and-firewall +msgid "Enable IP Lockout For 404 Events" +msgstr "" + +#: admin/wp-security-firewall-menu.php:823 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want to enable the lockout of selected IP addresses." +msgstr "" + +#: admin/wp-security-firewall-menu.php:828 +#@ all-in-one-wp-security-and-firewall +msgid "When you enable this checkbox, all 404 events on your site will be logged in the table below. You can monitor these events and select some IP addresses to be blocked in the table. All IP addresses you select to be blocked from the \"404 Event Logs\" table section will be unable to access your site." +msgstr "" + +#: admin/wp-security-firewall-menu.php:836 +#@ all-in-one-wp-security-and-firewall +msgid "Enable 404 Event Logging" +msgstr "" + +#: admin/wp-security-firewall-menu.php:839 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want to enable the logging of 404 events" +msgstr "" + +#: admin/wp-security-firewall-menu.php:844 +#@ all-in-one-wp-security-and-firewall +msgid "Time Length of 404 Lockout (min)" +msgstr "" + +#: admin/wp-security-firewall-menu.php:846 +#@ all-in-one-wp-security-and-firewall +msgid "Set the length of time for which a blocked IP address will be prevented from visiting your site" +msgstr "" + +#: admin/wp-security-firewall-menu.php:851 +#@ all-in-one-wp-security-and-firewall +msgid "You can lock any IP address which is recorded in the \"404 Event Logs\" table section below." +msgstr "" + +#: admin/wp-security-firewall-menu.php:853 +#@ all-in-one-wp-security-and-firewall +msgid "To temporarily lock an IP address, hover over the ID column and click the \"Temp Block\" link for the applicable IP entry." +msgstr "" + +#: admin/wp-security-firewall-menu.php:860 +#@ all-in-one-wp-security-and-firewall +msgid "404 Lockout Redirect URL" +msgstr "" + +#: admin/wp-security-firewall-menu.php:862 +#@ all-in-one-wp-security-and-firewall +msgid "A blocked visitor will be automatically redirected to this URL." +msgstr "" + +#: admin/wp-security-firewall-menu.php:871 +#@ all-in-one-wp-security-and-firewall +msgid "404 Event Logs" +msgstr "" + +#: admin/wp-security-firewall-menu.php:892 +#: admin/wp-security-firewall-menu.php:901 +#@ all-in-one-wp-security-and-firewall +msgid "Delete All 404 Event Logs" +msgstr "" + +#: admin/wp-security-firewall-menu.php:898 +#@ all-in-one-wp-security-and-firewall +msgid "Click this button if you wish to purge all 404 event logs from the DB." +msgstr "" + +#: admin/wp-security-list-404.php:108 +#: admin/wp-security-list-acct-activity.php:79 +#: admin/wp-security-list-comment-spammer-ip.php:86 +#: admin/wp-security-list-locked-ip.php:82 +#: admin/wp-security-list-locked-ip.php:93 +#: admin/wp-security-list-login-fails.php:78 +#: admin/wp-security-list-registered-users.php:82 +#: admin/wp-security-list-registered-users.php:93 +#@ all-in-one-wp-security-and-firewall +msgid "Please select some records using the checkboxes" +msgstr "" + +#: admin/wp-security-list-acct-activity.php:107 +#: admin/wp-security-list-login-fails.php:107 +#@ all-in-one-wp-security-and-firewall +msgid "The selected entries were deleted successfully!" +msgstr "" + +#: admin/wp-security-list-acct-activity.php:120 +#: admin/wp-security-list-login-fails.php:119 +#@ all-in-one-wp-security-and-firewall +msgid "The selected entry was deleted successfully!" +msgstr "" + +#: admin/wp-security-list-comment-spammer-ip.php:139 +#@ all-in-one-wp-security-and-firewall +msgid "The selected IP addresses were saved in the blacklist configuration settings." +msgstr "" + +#: admin/wp-security-list-comment-spammer-ip.php:153 +#@ all-in-one-wp-security-and-firewall +msgid "The .htaccess file was successfully modified to include the selected IP addresses." +msgstr "" + +#: admin/wp-security-list-comment-spammer-ip.php:159 +#@ all-in-one-wp-security-and-firewall +msgid "NOTE: The .htaccess file was not modified because you have disabled the \"Enable IP or User Agent Blacklisting\" check box." +msgstr "" + +#: admin/wp-security-list-comment-spammer-ip.php:160 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "To block these IP addresses you will need to enable the above flag in the %s menu" +msgstr "" + +#: admin/wp-security-list-locked-ip.php:117 +#: admin/wp-security-user-login-menu.php:527 +#@ all-in-one-wp-security-and-firewall +msgid "The selected IP entries were unlocked successfully!" +msgstr "" + +#: admin/wp-security-list-locked-ip.php:126 +#: admin/wp-security-user-login-menu.php:536 +#@ all-in-one-wp-security-and-firewall +msgid "The selected IP entry was unlocked successfully!" +msgstr "" + +#: admin/wp-security-list-registered-users.php:127 +#: admin/wp-security-list-registered-users.php:151 +#@ all-in-one-wp-security-and-firewall +msgid "Your account is now active" +msgstr "" + +#: admin/wp-security-list-registered-users.php:128 +#@ all-in-one-wp-security-and-firewall +msgid "Your account with username:" +msgstr "" + +#: admin/wp-security-list-registered-users.php:135 +#@ all-in-one-wp-security-and-firewall +msgid "The selected accounts were approved successfully!" +msgstr "" + +#: admin/wp-security-list-registered-users.php:139 +#@ all-in-one-wp-security-and-firewall +msgid "The following accounts failed to update successfully: " +msgstr "" + +#: admin/wp-security-list-registered-users.php:147 +#@ all-in-one-wp-security-and-firewall +msgid "The selected account was approved successfully!" +msgstr "" + +#: admin/wp-security-list-registered-users.php:152 +#@ all-in-one-wp-security-and-firewall +msgid "Your account with username: " +msgstr "" + +#: admin/wp-security-list-registered-users.php:176 +#@ all-in-one-wp-security-and-firewall +msgid "The selected accounts were deleted successfully!" +msgstr "" + +#: admin/wp-security-list-registered-users.php:184 +#@ all-in-one-wp-security-and-firewall +msgid "The selected account was deleted successfully!" +msgstr "" + +#: admin/wp-security-maintenance-menu.php:22 +#@ all-in-one-wp-security-and-firewall +msgid "Visitor Lockout" +msgstr "" + +#: admin/wp-security-maintenance-menu.php:88 +#@ all-in-one-wp-security-and-firewall +msgid "Site lockout feature settings saved!" +msgstr "" + +#: admin/wp-security-maintenance-menu.php:93 +#@ all-in-one-wp-security-and-firewall +msgid "General Visitor Lockout" +msgstr "" + +#: admin/wp-security-maintenance-menu.php:99 +#@ all-in-one-wp-security-and-firewall +msgid "This feature allows you to put your site into \"maintenance mode\" by locking down the front-end to all visitors except logged in users with super admin privileges." +msgstr "" + +#: admin/wp-security-maintenance-menu.php:100 +#@ all-in-one-wp-security-and-firewall +msgid "Locking your site down to general visitors can be useful if you are investigating some issues on your site or perhaps you might be doing some maintenance and wish to keep out all traffic for security reasons." +msgstr "" + +#: admin/wp-security-maintenance-menu.php:105 +#@ all-in-one-wp-security-and-firewall +msgid "Enable Front-end Lockout" +msgstr "" + +#: admin/wp-security-maintenance-menu.php:108 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want all visitors except those who are logged in as administrator to be locked out of the front-end of your site." +msgstr "" + +#: admin/wp-security-maintenance-menu.php:112 +#@ all-in-one-wp-security-and-firewall +msgid "Enter a Message:" +msgstr "" + +#: admin/wp-security-maintenance-menu.php:124 +#@ all-in-one-wp-security-and-firewall +msgid "Enter a message you wish to display to visitors when your site is in maintenance mode." +msgstr "" + +#: admin/wp-security-maintenance-menu.php:131 +#@ default +msgid "Save Site Lockout Settings" +msgstr "" + +#: admin/wp-security-settings-menu.php:25 +#@ all-in-one-wp-security-and-firewall +msgid "General Settings" +msgstr "" + +#: admin/wp-security-settings-menu.php:28 +#@ all-in-one-wp-security-and-firewall +msgid "WP Meta Info" +msgstr "" + +#: admin/wp-security-settings-menu.php:95 +#@ all-in-one-wp-security-and-firewall +msgid "All the security features have been disabled successfully!" +msgstr "" + +#: admin/wp-security-settings-menu.php:99 +#: admin/wp-security-settings-menu.php:126 +#@ all-in-one-wp-security-and-firewall +msgid "Could not write to the .htaccess file. Please restore your .htaccess file manually using the restore functionality in the \".htaccess File\"." +msgstr "" + +#: admin/wp-security-settings-menu.php:104 +#@ all-in-one-wp-security-and-firewall +msgid "Could not write to the wp-config.php. Please restore your wp-config.php file manually using the restore functionality in the \"wp-config.php File\"." +msgstr "" + +#: admin/wp-security-settings-menu.php:122 +#@ all-in-one-wp-security-and-firewall +msgid "All firewall rules have been disabled successfully!" +msgstr "" + +#: admin/wp-security-settings-menu.php:136 +#@ all-in-one-wp-security-and-firewall +msgid "WP Security Plugin" +msgstr "" + +#: admin/wp-security-settings-menu.php:138 +#@ all-in-one-wp-security-and-firewall +msgid "Thank you for using our WordPress security plugin. There are a lot of security features in this plugin." +msgstr "" + +#: admin/wp-security-settings-menu.php:139 +#@ all-in-one-wp-security-and-firewall +msgid "Go through each menu items and enable the security options to add more security to your site. Start by activating the basic features first." +msgstr "" + +#: admin/wp-security-settings-menu.php:140 +#@ all-in-one-wp-security-and-firewall +msgid "It is a good practice to take a backup of your .htaccess file, database and wp-config.php file before activating the security features. This plugin has options that you can use to backup those resources easily." +msgstr "" + +#: admin/wp-security-settings-menu.php:143 +#@ all-in-one-wp-security-and-firewall +msgid "Backup your database" +msgstr "" + +#: admin/wp-security-settings-menu.php:144 +#@ all-in-one-wp-security-and-firewall +msgid "Backup .htaccess file" +msgstr "" + +#: admin/wp-security-settings-menu.php:145 +#@ all-in-one-wp-security-and-firewall +msgid "Backup wp-config.php file" +msgstr "" + +#: admin/wp-security-settings-menu.php:151 +#@ all-in-one-wp-security-and-firewall +msgid "Disable Security Features" +msgstr "" + +#: admin/wp-security-settings-menu.php:157 +#@ all-in-one-wp-security-and-firewall +msgid "If you think that some plugin functionality on your site is broken due to a security feature you enabled in this plugin, then use the following option to turn off all the security features of this plugin." +msgstr "" + +#: admin/wp-security-settings-menu.php:161 +#@ default +msgid "Disable All Security Features" +msgstr "" + +#: admin/wp-security-settings-menu.php:167 +#: admin/wp-security-settings-menu.php:177 +#@ all-in-one-wp-security-and-firewall +#@ default +msgid "Disable All Firewall Rules" +msgstr "" + +#: admin/wp-security-settings-menu.php:173 +#@ all-in-one-wp-security-and-firewall +msgid "This feature will disable all firewall rules which are currently active in this plugin and it will also delete these rules from your .htacess file. Use it if you think one of the firewall rules is causing an issue on your site." +msgstr "" + +#: admin/wp-security-settings-menu.php:206 +#@ all-in-one-wp-security-and-firewall +msgid "Your .htaccess file was successfully backed up! Using an FTP program go to the \"/wp-content/aiowps_backups\" directory to save a copy of the file to your computer." +msgstr "" + +#: admin/wp-security-settings-menu.php:212 +#@ all-in-one-wp-security-and-firewall +msgid "htaccess file rename failed during backup. Please check your root directory for the backup file using FTP." +msgstr "" + +#: admin/wp-security-settings-menu.php:218 +#@ all-in-one-wp-security-and-firewall +msgid "htaccess backup failed." +msgstr "" + +#: admin/wp-security-settings-menu.php:233 +#@ all-in-one-wp-security-and-firewall +msgid "Please choose a .htaccess to restore from." +msgstr "" + +#: admin/wp-security-settings-menu.php:249 +#@ all-in-one-wp-security-and-firewall +msgid "htaccess file restore failed. Please attempt to restore the .htaccess manually using FTP." +msgstr "" + +#: admin/wp-security-settings-menu.php:253 +#@ all-in-one-wp-security-and-firewall +msgid "Your .htaccess file has successfully been restored!" +msgstr "" + +#: admin/wp-security-settings-menu.php:259 +#@ all-in-one-wp-security-and-firewall +msgid "htaccess Restore operation failed! Please check the contents of the file you are trying to restore from." +msgstr "" + +#: admin/wp-security-settings-menu.php:265 +#@ all-in-one-wp-security-and-firewall +msgid ".htaccess File Operations" +msgstr "" + +#: admin/wp-security-settings-menu.php:268 +#@ all-in-one-wp-security-and-firewall +msgid "Your \".htaccess\" file is a key component of your website's security and it can be modified to implement various levels of protection mechanisms." +msgstr "" + +#: admin/wp-security-settings-menu.php:269 +#@ all-in-one-wp-security-and-firewall +msgid "This feature allows you to backup and save your currently active .htaccess file should you need to re-use the the backed up file in the future." +msgstr "" + +#: admin/wp-security-settings-menu.php:270 +#@ all-in-one-wp-security-and-firewall +msgid "You can also restore your site's .htaccess settings using a backed up .htaccess file." +msgstr "" + +#: admin/wp-security-settings-menu.php:284 +#@ all-in-one-wp-security-and-firewall +msgid "Save the current .htaccess file" +msgstr "" + +#: admin/wp-security-settings-menu.php:288 +#@ all-in-one-wp-security-and-firewall +msgid "Click the button below to backup and save the currently active .htaccess file." +msgstr "" + +#: admin/wp-security-settings-menu.php:289 +#@ all-in-one-wp-security-and-firewall +msgid "Backup .htaccess File" +msgstr "" + +#: admin/wp-security-settings-menu.php:293 +#@ all-in-one-wp-security-and-firewall +msgid "Restore from a backed up .htaccess file" +msgstr "" + +#: admin/wp-security-settings-menu.php:299 +#@ all-in-one-wp-security-and-firewall +msgid ".htaccess file to restore from" +msgstr "" + +#: admin/wp-security-settings-menu.php:305 +#@ all-in-one-wp-security-and-firewall +msgid "After selecting your file, click the button below to restore your site using the backed up htaccess file (htaccess_backup.txt)." +msgstr "" + +#: admin/wp-security-settings-menu.php:311 +#@ all-in-one-wp-security-and-firewall +msgid "Restore .htaccess File" +msgstr "" + +#: admin/wp-security-settings-menu.php:315 +#@ all-in-one-wp-security-and-firewall +msgid "View Contents of the currently active .htaccess file" +msgstr "" + +#: admin/wp-security-settings-menu.php:344 +#@ all-in-one-wp-security-and-firewall +msgid "Please choose a wp-config.php file to restore from." +msgstr "" + +#: admin/wp-security-settings-menu.php:360 +#@ all-in-one-wp-security-and-firewall +msgid "wp-config.php file restore failed. Please attempt to restore this file manually using FTP." +msgstr "" + +#: admin/wp-security-settings-menu.php:364 +#@ all-in-one-wp-security-and-firewall +msgid "Your wp-config.php file has successfully been restored!" +msgstr "" + +#: admin/wp-security-settings-menu.php:370 +#@ all-in-one-wp-security-and-firewall +msgid "wp-config.php Restore operation failed! Please check the contents of the file you are trying to restore from." +msgstr "" + +#: admin/wp-security-settings-menu.php:376 +#@ all-in-one-wp-security-and-firewall +msgid "wp-config.php File Operations" +msgstr "" + +#: admin/wp-security-settings-menu.php:379 +#@ all-in-one-wp-security-and-firewall +msgid "Your \"wp-config.php\" file is one of the most important in your WordPress installation. It is a primary configuration file and contains crucial things such as details of your database and other critical components." +msgstr "" + +#: admin/wp-security-settings-menu.php:380 +#@ all-in-one-wp-security-and-firewall +msgid "This feature allows you to backup and save your currently active wp-config.php file should you need to re-use the the backed up file in the future." +msgstr "" + +#: admin/wp-security-settings-menu.php:381 +#@ all-in-one-wp-security-and-firewall +msgid "You can also restore your site's wp-config.php settings using a backed up wp-config.php file." +msgstr "" + +#: admin/wp-security-settings-menu.php:395 +#@ all-in-one-wp-security-and-firewall +msgid "Save the current wp-config.php file" +msgstr "" + +#: admin/wp-security-settings-menu.php:399 +#@ all-in-one-wp-security-and-firewall +msgid "Click the button below to backup and download the contents of the currently active wp-config.php file." +msgstr "" + +#: admin/wp-security-settings-menu.php:400 +#@ all-in-one-wp-security-and-firewall +msgid "Backup wp-config.php File" +msgstr "" + +#: admin/wp-security-settings-menu.php:405 +#@ all-in-one-wp-security-and-firewall +msgid "Restore from a backed up wp-config file" +msgstr "" + +#: admin/wp-security-settings-menu.php:411 +#@ all-in-one-wp-security-and-firewall +msgid "wp-config file to restore from" +msgstr "" + +#: admin/wp-security-settings-menu.php:417 +#@ all-in-one-wp-security-and-firewall +msgid "After selecting your file click the button below to restore your site using the backed up wp-config file (wp-config.php.backup.txt)." +msgstr "" + +#: admin/wp-security-settings-menu.php:423 +#@ all-in-one-wp-security-and-firewall +msgid "Restore wp-config File" +msgstr "" + +#: admin/wp-security-settings-menu.php:427 +#@ all-in-one-wp-security-and-firewall +msgid "View Contents of the currently active wp-config.php file" +msgstr "" + +#: admin/wp-security-settings-menu.php:462 +#@ all-in-one-wp-security-and-firewall +msgid "WP Generator Meta Tag" +msgstr "" + +#: admin/wp-security-settings-menu.php:465 +#@ all-in-one-wp-security-and-firewall +msgid "Wordpress generator automatically adds some meta information inside the \"head\" tags of every page on your site's front end. Below is an example of this:" +msgstr "" + +#: admin/wp-security-settings-menu.php:467 +#@ all-in-one-wp-security-and-firewall +msgid "The above meta information shows which version of WordPress your site is currently running and thus can help hackers or crawlers scan your site to see if you have an older version of WordPress or one with a known exploit." +msgstr "" + +#: admin/wp-security-settings-menu.php:468 +#@ all-in-one-wp-security-and-firewall +msgid "This feature will allow you to remove the WP generator meta info from your site's pages." +msgstr "" + +#: admin/wp-security-settings-menu.php:474 +#@ all-in-one-wp-security-and-firewall +msgid "WP Generator Meta Info" +msgstr "" + +#: admin/wp-security-settings-menu.php:486 +#@ all-in-one-wp-security-and-firewall +msgid "Remove WP Generator Meta Info" +msgstr "" + +#: admin/wp-security-settings-menu.php:489 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want to remove the meta info produced by WP Generator from all pages" +msgstr "" + +#: admin/wp-security-spam-menu.php:23 +#@ all-in-one-wp-security-and-firewall +msgid "Comment SPAM" +msgstr "" + +#: admin/wp-security-spam-menu.php:24 +#@ all-in-one-wp-security-and-firewall +msgid "Comment SPAM IP Monitoring" +msgstr "" + +#: admin/wp-security-spam-menu.php:111 +#@ all-in-one-wp-security-and-firewall +msgid "Comment SPAM Settings" +msgstr "" + +#: admin/wp-security-spam-menu.php:116 +#@ all-in-one-wp-security-and-firewall +msgid "Add Captcha To Comments Form" +msgstr "" + +#: admin/wp-security-spam-menu.php:120 +#@ all-in-one-wp-security-and-firewall +msgid "This feature will add a simple math captcha field in the WordPress comments form." +msgstr "" + +#: admin/wp-security-spam-menu.php:121 +#@ all-in-one-wp-security-and-firewall +msgid "Adding a captcha field in the comment form is a simple way of greatly reducing SPAM comments from bots without using .htaccess rules." +msgstr "" + +#: admin/wp-security-spam-menu.php:137 +#@ all-in-one-wp-security-and-firewall +msgid "Enable Captcha On Comment Forms" +msgstr "" + +#: admin/wp-security-spam-menu.php:140 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want to insert a captcha field on the comment forms" +msgstr "" + +#: admin/wp-security-spam-menu.php:148 +#@ all-in-one-wp-security-and-firewall +msgid "Block Spambot Comments" +msgstr "" + +#: admin/wp-security-spam-menu.php:152 +#@ all-in-one-wp-security-and-firewall +msgid "A large portion of WordPress blog comment SPAM is mainly produced by automated bots and not necessarily by humans. " +msgstr "" + +#: admin/wp-security-spam-menu.php:153 +#@ all-in-one-wp-security-and-firewall +msgid "This feature will greatly minimize the useless and unecessary traffic and load on your server resulting from SPAM comments by blocking all comment requests which do not originate from your domain." +msgstr "" + +#: admin/wp-security-spam-menu.php:154 +#@ all-in-one-wp-security-and-firewall +msgid "In other words, if the comment was not submitted by a human who physically submitted the comment on your site, the request will be blocked." +msgstr "" + +#: admin/wp-security-spam-menu.php:170 +#@ all-in-one-wp-security-and-firewall +msgid "Block Spambots From Posting Comments" +msgstr "" + +#: admin/wp-security-spam-menu.php:173 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want to apply a firewall rule which will block comments originating from spambots." +msgstr "" + +#: admin/wp-security-spam-menu.php:177 +#@ all-in-one-wp-security-and-firewall +msgid "This feature will implement a firewall rule to block all comment attempts which do not originate from your domain." +msgstr "" + +#: admin/wp-security-spam-menu.php:178 +#@ all-in-one-wp-security-and-firewall +msgid "A legitimate comment is one which is submitted by a human who physically fills out the comment form and clicks the submit button. For such events, the HTTP_REFERRER is always set to your own domain." +msgstr "" + +#: admin/wp-security-spam-menu.php:179 +#@ all-in-one-wp-security-and-firewall +msgid "A comment submitted by a spambot is done by directly calling the comments.php file, which usually means that the HTTP_REFERRER value is not your domain and often times empty." +msgstr "" + +#: admin/wp-security-spam-menu.php:180 +#@ all-in-one-wp-security-and-firewall +msgid "This feature will check and block comment requests which are not referred by your domain thus greatly reducing your overall blog SPAM and PHP requests done by the server to process these comments." +msgstr "" + +#: admin/wp-security-spam-menu.php:207 +#@ all-in-one-wp-security-and-firewall +msgid "Nonce check failed for list SPAM comment IPs!" +msgstr "" + +#: admin/wp-security-spam-menu.php:213 +#@ all-in-one-wp-security-and-firewall +msgid "You entered a non numeric value for the minimum SPAM comments per IP field. It has been set to the default value." +msgstr "" + +#: admin/wp-security-spam-menu.php:225 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "Displaying results for IP addresses which have posted a minimum of %s SPAM comments" +msgstr "" + +#: admin/wp-security-spam-menu.php:241 +#@ all-in-one-wp-security-and-firewall +msgid "This tab displays a list of the IP addresses of the people or bots who have left SPAM comments on your site." +msgstr "" + +#: admin/wp-security-spam-menu.php:242 +#@ all-in-one-wp-security-and-firewall +msgid "This information can be handy for identifying the most persistent IP addresses or ranges used by spammers." +msgstr "" + +#: admin/wp-security-spam-menu.php:243 +#@ all-in-one-wp-security-and-firewall +msgid "By inspecting the IP address data coming from spammers you will be in a better position to determine which addresses or address ranges you should block by adding them to your blacklist." +msgstr "" + +#: admin/wp-security-spam-menu.php:244 +#@ all-in-one-wp-security-and-firewall +msgid "" +"To add one or more of the IP addresses displayed in the table below to your blacklist, simply click the \"Block\" link for the individual row or select more than one address \n" +" using the checkboxes and then choose the \"block\" option from the Bulk Actions dropdown list and click the \"Apply\" button." +msgstr "" + +#: admin/wp-security-spam-menu.php:250 +#@ all-in-one-wp-security-and-firewall +msgid "List SPAMMER IP Addresses" +msgstr "" + +#: admin/wp-security-spam-menu.php:256 +#@ all-in-one-wp-security-and-firewall +msgid "Minimum number of SPAM comments per IP" +msgstr "" + +#: admin/wp-security-spam-menu.php:258 +#@ all-in-one-wp-security-and-firewall +msgid "This field allows you to list only those IP addresses which have been used to post X or more SPAM comments." +msgstr "" + +#: admin/wp-security-spam-menu.php:262 +#@ all-in-one-wp-security-and-firewall +msgid "Example 1: Setting this value to \"0\" or \"1\" will list ALL IP addresses which were used to submit SPAM comments." +msgstr "" + +#: admin/wp-security-spam-menu.php:263 +#@ all-in-one-wp-security-and-firewall +msgid "Example 2: Setting this value to \"5\" will list only those IP addresses which were used to submit 5 SPAM comments or more on your site." +msgstr "" + +#: admin/wp-security-spam-menu.php:270 +#@ all-in-one-wp-security-and-firewall +msgid "Find IP Addresses" +msgstr "" + +#: admin/wp-security-spam-menu.php:274 +#@ all-in-one-wp-security-and-firewall +msgid "SPAMMER IP Address Results" +msgstr "" + +#: admin/wp-security-spam-menu.php:280 +#: classes/wp-security-utility.php:150 +#@ all-in-one-wp-security-and-firewall +msgid "The plugin has detected that you are using a Multi-Site WordPress installation." +msgstr "" + +#: admin/wp-security-spam-menu.php:281 +#@ all-in-one-wp-security-and-firewall +msgid "Only the \"superadmin\" can block IP addresses from the main site." +msgstr "" + +#: admin/wp-security-spam-menu.php:282 +#@ all-in-one-wp-security-and-firewall +msgid "Take note of the IP addresses you want blocked and ask the superadmin to add these to the blacklist using the \"Blacklist Manager\" on the main site." +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:29 +#@ all-in-one-wp-security-and-firewall +msgid "WP Username" +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:30 +#@ all-in-one-wp-security-and-firewall +msgid "Display Name" +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:31 +#: other-includes/wp-security-rename-login-feature.php:845 +#@ all-in-one-wp-security-and-firewall +#@ default +msgid "Password" +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:85 +#@ all-in-one-wp-security-and-firewall +msgid "Admin User Security" +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:88 +#@ all-in-one-wp-security-and-firewall +msgid "By default, WordPress sets the administrator username to \"admin\" at installation time." +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:89 +#@ all-in-one-wp-security-and-firewall +msgid "A lot of hackers try to take advantage of this information by attempting \"Brute Force Login Attacks\" where they repeatedly try to guess the password by using \"admin\" for username." +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:90 +#@ all-in-one-wp-security-and-firewall +msgid "From a security perspective, changing the default \"admin\" user name is one of the first and smartest things you should do on your site." +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:91 +#@ all-in-one-wp-security-and-firewall +msgid "This feature will allow you to change your default \"admin\" user name to a more secure name of your choosing." +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:98 +#@ all-in-one-wp-security-and-firewall +msgid "List of Administrator Accounts" +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:107 +#: classes/grade-system/wp-security-feature-item-manager.php:36 +#@ all-in-one-wp-security-and-firewall +msgid "Change Admin Username" +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:115 +#@ all-in-one-wp-security-and-firewall +msgid "" +"Your site currently has an account which uses the default \"admin\" username. \n" +" It is highly recommended that you change this name to something else. \n" +" Use the following field to change the admin username." +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:123 +#@ all-in-one-wp-security-and-firewall +msgid "New Admin Username" +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:125 +#@ all-in-one-wp-security-and-firewall +msgid "Choose a new username for admin." +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:129 +#@ all-in-one-wp-security-and-firewall +msgid "Change Username" +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:131 +#@ all-in-one-wp-security-and-firewall +msgid "NOTE: If you are currently logged in as \"admin\" you will be automatically logged out after changing your username and will be required to log back in." +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:138 +#@ all-in-one-wp-security-and-firewall +msgid "No action required! " +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:140 +#@ all-in-one-wp-security-and-firewall +msgid "Your site does not have any account which uses the default \"admin\" username. " +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:141 +#@ all-in-one-wp-security-and-firewall +msgid "This is good security practice." +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:153 +#@ all-in-one-wp-security-and-firewall +msgid "Display Name Security" +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:156 +#@ all-in-one-wp-security-and-firewall +msgid "When you submit a post or answer a comment, WordPress will usually display your \"nickname\"." +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:157 +#@ all-in-one-wp-security-and-firewall +msgid "By default the nickname is set to the login (or user) name of your account." +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:158 +#@ all-in-one-wp-security-and-firewall +msgid "From a security perspective, leaving your nickname the same as your user name is bad practice because it gives a hacker at least half of your account's login credentials." +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:159 +#@ all-in-one-wp-security-and-firewall +msgid "Therefore to further tighten your site's security you are advised to change your nickname and Display name to be different from your Username." +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:165 +#@ all-in-one-wp-security-and-firewall +msgid "Modify Accounts With Identical Login Name & Display Name" +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:174 +#@ all-in-one-wp-security-and-firewall +msgid "Your site currently has the following accounts which have an identical login name and display name." +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:175 +#@ all-in-one-wp-security-and-firewall +msgid "Click on the link to edit the settings of that particular user account" +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:190 +#@ all-in-one-wp-security-and-firewall +msgid "No action required." +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:191 +#@ all-in-one-wp-security-and-firewall +msgid "Your site does not have a user account where the display name is identical to the username." +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:202 +#@ all-in-one-wp-security-and-firewall +msgid "Password Tool" +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:205 +#@ all-in-one-wp-security-and-firewall +msgid "Poor password selection is one of the most common weak points of many sites and is usually the first thing a hacker will try to exploit when attempting to break into your site." +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:206 +#@ all-in-one-wp-security-and-firewall +msgid "Many people fall into the trap of using a simple word or series of numbers as their password. Such a predictable and simple password would take a competent hacker merely minutes to guess your password by using a simple script which cycles through the easy and most common combinations." +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:207 +#@ all-in-one-wp-security-and-firewall +msgid "The longer and more complex your password is the harder it is for hackers to \"crack\" because more complex passwords require much greater computing power and time." +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:208 +#@ all-in-one-wp-security-and-firewall +msgid "This section contains a useful password strength tool which you can use to check whether your password is sufficiently strong enough." +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:213 +#@ all-in-one-wp-security-and-firewall +msgid "Password Strength Tool" +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:218 +#@ all-in-one-wp-security-and-firewall +msgid "Start typing a password." +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:221 +#@ all-in-one-wp-security-and-firewall +msgid "It would take a desktop PC approximately" +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:222 +#@ all-in-one-wp-security-and-firewall +msgid "1 sec" +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:222 +#@ all-in-one-wp-security-and-firewall +msgid "to crack your password!" +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:227 +#@ all-in-one-wp-security-and-firewall +msgid "Password Strength" +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:243 +#@ all-in-one-wp-security-and-firewall +msgid "Nonce check failed on admin username change operation!" +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:250 +#@ all-in-one-wp-security-and-firewall +msgid "Username " +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:250 +#@ all-in-one-wp-security-and-firewall +msgid " already exists. Please enter another value. " +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:266 +#@ all-in-one-wp-security-and-firewall +msgid "The database update operation of the user account failed!" +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:293 +#@ all-in-one-wp-security-and-firewall +msgid "You entered an invalid username. Please enter another value. " +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:297 +#@ all-in-one-wp-security-and-firewall +msgid "Please enter a value for your username. " +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:304 +#@ all-in-one-wp-security-and-firewall +msgid "Username Successfully Changed!" +msgstr "" + +#: admin/wp-security-user-accounts-menu.php:324 +#@ all-in-one-wp-security-and-firewall +msgid "Account Login Name" +msgstr "" + +#: admin/wp-security-user-login-menu.php:26 +#: admin/wp-security-user-login-menu.php:298 +#@ all-in-one-wp-security-and-firewall +msgid "Failed Login Records" +msgstr "" + +#: admin/wp-security-user-login-menu.php:27 +#: classes/grade-system/wp-security-feature-item-manager.php:50 +#@ all-in-one-wp-security-and-firewall +msgid "Force Logout" +msgstr "" + +#: admin/wp-security-user-login-menu.php:28 +#: admin/wp-security-user-login-menu.php:432 +#@ all-in-one-wp-security-and-firewall +msgid "Account Activity Logs" +msgstr "" + +#: admin/wp-security-user-login-menu.php:96 +#@ all-in-one-wp-security-and-firewall +msgid "You entered a non numeric value for the max login attempts field. It has been set to the default value." +msgstr "" + +#: admin/wp-security-user-login-menu.php:103 +#@ all-in-one-wp-security-and-firewall +msgid "You entered a non numeric value for the login retry time period field. It has been set to the default value." +msgstr "" + +#: admin/wp-security-user-login-menu.php:159 +#@ all-in-one-wp-security-and-firewall +msgid "Login Lockdown Configuration" +msgstr "" + +#: admin/wp-security-user-login-menu.php:163 +#@ all-in-one-wp-security-and-firewall +msgid "One of the ways hackers try to compromise sites is via a " +msgstr "" + +#: admin/wp-security-user-login-menu.php:163 +#@ all-in-one-wp-security-and-firewall +msgid "Brute Force Login Attack" +msgstr "" + +#: admin/wp-security-user-login-menu.php:164 +#@ all-in-one-wp-security-and-firewall +msgid "This is where attackers use repeated login attempts until they guess the password." +msgstr "" + +#: admin/wp-security-user-login-menu.php:165 +#@ all-in-one-wp-security-and-firewall +msgid "Apart from choosing strong passwords, monitoring and blocking IP addresses which are involved in repeated login failures in a short period of time is a very effective way to stop these types of attacks." +msgstr "" + +#: admin/wp-security-user-login-menu.php:166 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "You may also want to checkout our %s feature for another secure way to protect against these types of attacks." +msgstr "" + +#: admin/wp-security-user-login-menu.php:171 +#@ all-in-one-wp-security-and-firewall +msgid "Login Lockdown Options" +msgstr "" + +#: admin/wp-security-user-login-menu.php:183 +#@ all-in-one-wp-security-and-firewall +msgid "Enable Login Lockdown Feature" +msgstr "" + +#: admin/wp-security-user-login-menu.php:186 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want to enable the login lockdown feature and apply the settings below" +msgstr "" + +#: admin/wp-security-user-login-menu.php:190 +#@ all-in-one-wp-security-and-firewall +msgid "Allow Unlock Requests" +msgstr "" + +#: admin/wp-security-user-login-menu.php:193 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want to allow users to generate an automated unlock request link which will unlock their account" +msgstr "" + +#: admin/wp-security-user-login-menu.php:197 +#@ all-in-one-wp-security-and-firewall +msgid "Max Login Attempts" +msgstr "" + +#: admin/wp-security-user-login-menu.php:199 +#@ all-in-one-wp-security-and-firewall +msgid "Set the value for the maximum login retries before IP address is locked out" +msgstr "" + +#: admin/wp-security-user-login-menu.php:203 +#@ all-in-one-wp-security-and-firewall +msgid "Login Retry Time Period (min)" +msgstr "" + +#: admin/wp-security-user-login-menu.php:205 +#@ all-in-one-wp-security-and-firewall +msgid "If the maximum number of failed login attempts for a particular IP address occur within this time period the plugin will lock out that address" +msgstr "" + +#: admin/wp-security-user-login-menu.php:209 +#@ all-in-one-wp-security-and-firewall +msgid "Time Length of Lockout (min)" +msgstr "" + +#: admin/wp-security-user-login-menu.php:211 +#@ all-in-one-wp-security-and-firewall +msgid "Set the length of time for which a particular IP address will be prevented from logging in" +msgstr "" + +#: admin/wp-security-user-login-menu.php:215 +#@ all-in-one-wp-security-and-firewall +msgid "Display Generic Error Message" +msgstr "" + +#: admin/wp-security-user-login-menu.php:218 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want to show a generic error message when a login attempt fails" +msgstr "" + +#: admin/wp-security-user-login-menu.php:222 +#@ all-in-one-wp-security-and-firewall +msgid "Instantly Lockout Invalid Usernames" +msgstr "" + +#: admin/wp-security-user-login-menu.php:225 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want to instantly lockout login attempts with usernames which do not exist on your system" +msgstr "" + +#: admin/wp-security-user-login-menu.php:230 +#@ all-in-one-wp-security-and-firewall +msgid "Notify By Email" +msgstr "" + +#: admin/wp-security-user-login-menu.php:233 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want to receive an email when someone has been locked out due to maximum failed login attempts" +msgstr "" + +#: admin/wp-security-user-login-menu.php:243 +#@ all-in-one-wp-security-and-firewall +msgid "Currently Locked Out IP Address Ranges" +msgstr "" + +#: admin/wp-security-user-login-menu.php:248 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "To see a list of all locked IP addresses and ranges go to the %s tab in the dashboard menu." +msgstr "" + +#: admin/wp-security-user-login-menu.php:264 +#@ all-in-one-wp-security-and-firewall +msgid "Nonce check failed for delete all failed login records operation!" +msgstr "" + +#: admin/wp-security-user-login-menu.php:273 +#@ all-in-one-wp-security-and-firewall +msgid "User Login Feature - Delete all failed login records operation failed!" +msgstr "" + +#: admin/wp-security-user-login-menu.php:277 +#@ all-in-one-wp-security-and-firewall +msgid "All records from the Failed Logins table were deleted successfully!" +msgstr "" + +#: admin/wp-security-user-login-menu.php:292 +#@ all-in-one-wp-security-and-firewall +msgid "This tab displays the failed login attempts for your site." +msgstr "" + +#: admin/wp-security-user-login-menu.php:293 +#@ all-in-one-wp-security-and-firewall +msgid "The information below can be handy if you need to do security investigations because it will show you the IP range, username and ID (if applicable) and the time/date of the failed login attempt." +msgstr "" + +#: admin/wp-security-user-login-menu.php:314 +#: admin/wp-security-user-login-menu.php:323 +#@ all-in-one-wp-security-and-firewall +msgid "Delete All Failed Login Records" +msgstr "" + +#: admin/wp-security-user-login-menu.php:320 +#@ all-in-one-wp-security-and-firewall +msgid "Click this button if you wish to delete all failed login records in one go." +msgstr "" + +#: admin/wp-security-user-login-menu.php:348 +#@ all-in-one-wp-security-and-firewall +msgid "You entered a non numeric value for the logout time period field. It has been set to the default value." +msgstr "" + +#: admin/wp-security-user-login-menu.php:376 +#@ all-in-one-wp-security-and-firewall +msgid "Setting an expiry period for your WP administration session is a simple way to protect against unauthorized access to your site from your computer." +msgstr "" + +#: admin/wp-security-user-login-menu.php:377 +#@ all-in-one-wp-security-and-firewall +msgid "This feature allows you to specify a time period in minutes after which the admin session will expire and the user will be forced to log back in." +msgstr "" + +#: admin/wp-security-user-login-menu.php:382 +#@ all-in-one-wp-security-and-firewall +msgid "Force User Logout Options" +msgstr "" + +#: admin/wp-security-user-login-menu.php:394 +#@ all-in-one-wp-security-and-firewall +msgid "Enable Force WP User Logout" +msgstr "" + +#: admin/wp-security-user-login-menu.php:397 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want to force a wp user to be logged out after a configured amount of time" +msgstr "" + +#: admin/wp-security-user-login-menu.php:401 +#@ all-in-one-wp-security-and-firewall +msgid "Logout the WP User After XX Minutes" +msgstr "" + +#: admin/wp-security-user-login-menu.php:403 +#@ all-in-one-wp-security-and-firewall +msgid "(Minutes) The user will be forced to log back in after this time period has elapased." +msgstr "" + +#: admin/wp-security-user-login-menu.php:426 +#@ all-in-one-wp-security-and-firewall +msgid "This tab displays the login activity for WordPress admin accounts registered with your site." +msgstr "" + +#: admin/wp-security-user-login-menu.php:427 +#@ all-in-one-wp-security-and-firewall +msgid "The information below can be handy if you need to do security investigations because it will show you the last 50 recent login events by username, IP address and time/date." +msgstr "" + +#: admin/wp-security-user-login-menu.php:464 +#@ all-in-one-wp-security-and-firewall +msgid "Nonce check failed for users logged in list!" +msgstr "" + +#: admin/wp-security-user-login-menu.php:477 +#@ all-in-one-wp-security-and-firewall +msgid "Refresh Logged In User Data" +msgstr "" + +#: admin/wp-security-user-login-menu.php:481 +#@ all-in-one-wp-security-and-firewall +msgid "Refresh Data" +msgstr "" + +#: admin/wp-security-user-login-menu.php:487 +#@ all-in-one-wp-security-and-firewall +msgid "This tab displays all users who are currently logged into your site." +msgstr "" + +#: admin/wp-security-user-login-menu.php:488 +#@ all-in-one-wp-security-and-firewall +msgid "If you suspect there is a user or users who are logged in which should not be, you can block them by inspecting the IP addresses from the data below and adding them to your blacklist." +msgstr "" + +#: admin/wp-security-user-login-menu.php:493 +#@ all-in-one-wp-security-and-firewall +msgid "Currently Logged In Users" +msgstr "" + +#: admin/wp-security-user-login-menu.php:558 +#@ all-in-one-wp-security-and-firewall +msgid "The selected records were deleted successfully!" +msgstr "" + +#: admin/wp-security-user-login-menu.php:567 +#@ all-in-one-wp-security-and-firewall +msgid "The selected record was deleted successfully!" +msgstr "" + +#: admin/wp-security-user-registration-menu.php:23 +#@ all-in-one-wp-security-and-firewall +msgid "Manual Approval" +msgstr "" + +#: admin/wp-security-user-registration-menu.php:24 +#: classes/grade-system/wp-security-feature-item-manager.php:56 +#@ all-in-one-wp-security-and-firewall +msgid "Registration Captcha" +msgstr "" + +#: admin/wp-security-user-registration-menu.php:112 +#@ all-in-one-wp-security-and-firewall +msgid "User Registration Settings" +msgstr "" + +#: admin/wp-security-user-registration-menu.php:116 +#@ all-in-one-wp-security-and-firewall +msgid "Manually Approve New Registrations" +msgstr "" + +#: admin/wp-security-user-registration-menu.php:120 +#@ all-in-one-wp-security-and-firewall +msgid "If your site allows people to create their own accounts via the WordPress registration form, then you can minimize SPAM or bogus registrations by manually approving each registration." +msgstr "" + +#: admin/wp-security-user-registration-menu.php:121 +#@ all-in-one-wp-security-and-firewall +msgid "This feature will automatically set a newly registered account to \"pending\" until the administrator activates it. Therefore undesirable registrants will be unable to log in without your express approval." +msgstr "" + +#: admin/wp-security-user-registration-menu.php:122 +#@ all-in-one-wp-security-and-firewall +msgid "You can view all accounts which have been newly registered via the handy table below and you can also perform bulk activation/deactivation/deletion tasks on each account." +msgstr "" + +#: admin/wp-security-user-registration-menu.php:138 +#@ all-in-one-wp-security-and-firewall +msgid "Enable manual approval of new registrations" +msgstr "" + +#: admin/wp-security-user-registration-menu.php:141 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want to automatically disable all newly registered accounts so that you can approve them manually." +msgstr "" + +#: admin/wp-security-user-registration-menu.php:150 +#@ all-in-one-wp-security-and-firewall +msgid "Approve Registered Users" +msgstr "" + +#: admin/wp-security-user-registration-menu.php:195 +#@ all-in-one-wp-security-and-firewall +msgid "This feature allows you to add a captcha form on the WordPress registration page." +msgstr "" + +#: admin/wp-security-user-registration-menu.php:196 +#@ all-in-one-wp-security-and-firewall +msgid "Users who attempt to register will also need to enter the answer to a simple mathematical question - if they enter the wrong answer, the plugin will not allow them to register." +msgstr "" + +#: admin/wp-security-user-registration-menu.php:197 +#@ all-in-one-wp-security-and-firewall +msgid "Therefore, adding a captcha form on the registration page is another effective yet simple SPAM registration prevention technique." +msgstr "" + +#: admin/wp-security-user-registration-menu.php:202 +#@ all-in-one-wp-security-and-firewall +msgid "Registration Page Captcha Settings" +msgstr "" + +#: admin/wp-security-user-registration-menu.php:214 +#@ all-in-one-wp-security-and-firewall +msgid "Enable Captcha On Registration Page" +msgstr "" + +#: admin/wp-security-user-registration-menu.php:217 +#@ all-in-one-wp-security-and-firewall +msgid "Check this if you want to insert a captcha form on the WordPress user registration page (if you allow user registration)." +msgstr "" + +#: admin/wp-security-whois-menu.php:22 +#@ all-in-one-wp-security-and-firewall +msgid "WhoIS Lookup" +msgstr "" + +#: admin/wp-security-whois-menu.php:74 +#@ all-in-one-wp-security-and-firewall +msgid "WHOIS Lookup Information" +msgstr "" + +#: admin/wp-security-whois-menu.php:77 +#@ all-in-one-wp-security-and-firewall +msgid "This feature allows you to look up more detailed information about an IP address or domain name by querying the WHOIS API." +msgstr "" + +#: admin/wp-security-whois-menu.php:83 +#@ all-in-one-wp-security-and-firewall +msgid "Perform a WHOIS Lookup for an IP or Domain Name" +msgstr "" + +#: admin/wp-security-whois-menu.php:89 +#@ all-in-one-wp-security-and-firewall +msgid "Enter IP Address or Domain Name" +msgstr "" + +#: admin/wp-security-whois-menu.php:91 +#@ all-in-one-wp-security-and-firewall +msgid "Enter an IP address or domain name. Example: 111.11.12.13 OR some-domain-name.com" +msgstr "" + +#: admin/wp-security-whois-menu.php:95 +#@ all-in-one-wp-security-and-firewall +msgid "Perform IP or Domain Lookup" +msgstr "" + +#: admin/wp-security-whois-menu.php:115 +#@ all-in-one-wp-security-and-firewall +msgid "WHOIS lookup successfully completed. Please see the results below:" +msgstr "" + +#: admin/wp-security-whois-menu.php:127 +#@ all-in-one-wp-security-and-firewall +msgid "You have entered an incorrectly formatted IP address or domain name. Please try again." +msgstr "" + +#: classes/grade-system/wp-security-feature-item-manager.php:29 +#@ all-in-one-wp-security-and-firewall +msgid "Remove WP Generatore Meta Tag" +msgstr "" + +#: classes/grade-system/wp-security-feature-item-manager.php:38 +#@ all-in-one-wp-security-and-firewall +msgid "Change Display Name" +msgstr "" + +#: classes/grade-system/wp-security-feature-item-manager.php:46 +#@ all-in-one-wp-security-and-firewall +msgid "Lost Password Captcha" +msgstr "" + +#: classes/grade-system/wp-security-feature-item-manager.php:48 +#@ all-in-one-wp-security-and-firewall +msgid "Login IP Whitelisting" +msgstr "" + +#: classes/grade-system/wp-security-feature-item-manager.php:54 +#@ all-in-one-wp-security-and-firewall +msgid "Registration Approval" +msgstr "" + +#: classes/grade-system/wp-security-feature-item-manager.php:70 +#@ all-in-one-wp-security-and-firewall +msgid "WordPress Files Access" +msgstr "" + +#: classes/grade-system/wp-security-feature-item-manager.php:74 +#@ all-in-one-wp-security-and-firewall +msgid "IP and User Agent Blacklisting" +msgstr "" + +#: classes/grade-system/wp-security-feature-item-manager.php:78 +#@ all-in-one-wp-security-and-firewall +msgid "Enable Basic Firewall" +msgstr "" + +#: classes/grade-system/wp-security-feature-item-manager.php:79 +#@ all-in-one-wp-security-and-firewall +msgid "Enable Pingback Vulnerability Protection" +msgstr "" + +#: classes/grade-system/wp-security-feature-item-manager.php:80 +#@ all-in-one-wp-security-and-firewall +msgid "Enable IP blocking for 404 detection" +msgstr "" + +#: classes/grade-system/wp-security-feature-item-manager.php:84 +#@ all-in-one-wp-security-and-firewall +msgid "Enable Rename Login Page" +msgstr "" + +#: classes/grade-system/wp-security-feature-item-manager.php:90 +#@ all-in-one-wp-security-and-firewall +msgid "Forbid Proxy Comments" +msgstr "" + +#: classes/grade-system/wp-security-feature-item-manager.php:91 +#@ all-in-one-wp-security-and-firewall +msgid "Deny Bad Queries" +msgstr "" + +#: classes/grade-system/wp-security-feature-item-manager.php:93 +#@ all-in-one-wp-security-and-firewall +msgid "5G Blacklist" +msgstr "" + +#: classes/grade-system/wp-security-feature-item-manager.php:96 +#@ all-in-one-wp-security-and-firewall +msgid "Block Spambots" +msgstr "" + +#: classes/grade-system/wp-security-feature-item-manager.php:98 +#@ all-in-one-wp-security-and-firewall +msgid "Comment Captcha" +msgstr "" + +#: classes/grade-system/wp-security-feature-item.php:28 +#@ all-in-one-wp-security-and-firewall +msgid "Basic" +msgstr "" + +#: classes/grade-system/wp-security-feature-item.php:31 +#@ all-in-one-wp-security-and-firewall +msgid "Intermediate" +msgstr "" + +#: classes/grade-system/wp-security-feature-item.php:34 +#@ all-in-one-wp-security-and-firewall +msgid "Advanced" +msgstr "" + +#: classes/wp-security-backup.php:177 +#@ all-in-one-wp-security-and-firewall +msgid "All In One WP Security - Site Database Backup" +msgstr "" + +#: classes/wp-security-backup.php:179 +#@ all-in-one-wp-security-and-firewall +msgid "Attached is your latest DB backup file for site URL" +msgstr "" + +#: classes/wp-security-backup.php:179 +#@ all-in-one-wp-security-and-firewall +msgid " generated on" +msgstr "" + +#: classes/wp-security-captcha.php:12 +#@ all-in-one-wp-security-and-firewall +msgid "Please enter an answer in digits:" +msgstr "Bitte löse zur Spamvermeidung diese Rechenaufgabe (in Zahlen):" + +#: classes/wp-security-captcha.php:91 +#@ all-in-one-wp-security-and-firewall +msgid "one" +msgstr "eins" + +#: classes/wp-security-captcha.php:92 +#@ all-in-one-wp-security-and-firewall +msgid "two" +msgstr "zwei" + +#: classes/wp-security-captcha.php:93 +#@ all-in-one-wp-security-and-firewall +msgid "three" +msgstr "drei" + +#: classes/wp-security-captcha.php:94 +#@ all-in-one-wp-security-and-firewall +msgid "four" +msgstr "vier" + +#: classes/wp-security-captcha.php:95 +#@ all-in-one-wp-security-and-firewall +msgid "five" +msgstr "fünf" + +#: classes/wp-security-captcha.php:96 +#@ all-in-one-wp-security-and-firewall +msgid "six" +msgstr "sechs" + +#: classes/wp-security-captcha.php:97 +#@ all-in-one-wp-security-and-firewall +msgid "seven" +msgstr "sieben" + +#: classes/wp-security-captcha.php:98 +#@ all-in-one-wp-security-and-firewall +msgid "eight" +msgstr "acht" + +#: classes/wp-security-captcha.php:99 +#@ all-in-one-wp-security-and-firewall +msgid "nine" +msgstr "neun" + +#: classes/wp-security-captcha.php:100 +#@ all-in-one-wp-security-and-firewall +msgid "ten" +msgstr "zehn" + +#: classes/wp-security-captcha.php:101 +#@ all-in-one-wp-security-and-firewall +msgid "eleven" +msgstr "elf" + +#: classes/wp-security-captcha.php:102 +#@ all-in-one-wp-security-and-firewall +msgid "twelve" +msgstr "zwölf" + +#: classes/wp-security-captcha.php:103 +#@ all-in-one-wp-security-and-firewall +msgid "thirteen" +msgstr "dreizehn" + +#: classes/wp-security-captcha.php:104 +#@ all-in-one-wp-security-and-firewall +msgid "fourteen" +msgstr "vierzehn" + +#: classes/wp-security-captcha.php:105 +#@ all-in-one-wp-security-and-firewall +msgid "fifteen" +msgstr "fünfzehn" + +#: classes/wp-security-captcha.php:106 +#@ all-in-one-wp-security-and-firewall +msgid "sixteen" +msgstr "sechzehn" + +#: classes/wp-security-captcha.php:107 +#@ all-in-one-wp-security-and-firewall +msgid "seventeen" +msgstr "siebzehn" + +#: classes/wp-security-captcha.php:108 +#@ all-in-one-wp-security-and-firewall +msgid "eighteen" +msgstr "achtzehn" + +#: classes/wp-security-captcha.php:109 +#@ all-in-one-wp-security-and-firewall +msgid "nineteen" +msgstr "neunzehn" + +#: classes/wp-security-captcha.php:110 +#@ all-in-one-wp-security-and-firewall +msgid "twenty" +msgstr "zwanzig" + +#: classes/wp-security-file-scan.php:62 +#@ all-in-one-wp-security-and-firewall +msgid "All In One WP Security - File change detected!" +msgstr "" + +#: classes/wp-security-file-scan.php:64 +#@ all-in-one-wp-security-and-firewall +msgid "A file change was detected on your system for site URL" +msgstr "" + +#: classes/wp-security-file-scan.php:64 +#@ all-in-one-wp-security-and-firewall +msgid ". Scan was generated on" +msgstr "" + +#: classes/wp-security-file-scan.php:65 +#@ all-in-one-wp-security-and-firewall +msgid "Login to your site to view the scan details." +msgstr "" + +#: classes/wp-security-general-init-tasks.php:214 +#@ all-in-one-wp-security-and-firewall +msgid "Please enter an answer in the CAPTCHA field." +msgstr "" + +#: classes/wp-security-general-init-tasks.php:224 +#@ all-in-one-wp-security-and-firewall +msgid "Error: You entered an incorrect CAPTCHA answer. Please go back and try again." +msgstr "" + +#: classes/wp-security-general-init-tasks.php:252 +#: classes/wp-security-user-login.php:70 +#: classes/wp-security-user-login.php:73 +#: classes/wp-security-user-registration.php:59 +#@ all-in-one-wp-security-and-firewall +msgid "ERROR: Your answer was incorrect - please try again." +msgstr "" + +#: classes/wp-security-process-renamed-login-page.php:68 +#@ all-in-one-wp-security-and-firewall +msgid "Please log in to access the WordPress admin area." +msgstr "" + +#: classes/wp-security-user-login.php:43 +#@ all-in-one-wp-security-and-firewall +msgid "" +"ERROR: Login failed because your IP address has been blocked.\n" +" Please contact the administrator." +msgstr "" + +#: classes/wp-security-user-login.php:83 +#@ all-in-one-wp-security-and-firewall +msgid "ERROR: The username field is empty." +msgstr "" + +#: classes/wp-security-user-login.php:87 +#@ all-in-one-wp-security-and-firewall +msgid "ERROR: The password field is empty." +msgstr "" + +#: classes/wp-security-user-login.php:107 +#: classes/wp-security-user-login.php:133 +#@ all-in-one-wp-security-and-firewall +msgid "ERROR: Invalid login credentials." +msgstr "" + +#: classes/wp-security-user-login.php:110 +#@ all-in-one-wp-security-and-firewall +msgid "ERROR: Invalid username." +msgstr "" + +#: classes/wp-security-user-login.php:136 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "ERROR: Incorrect password. Lost your password?" +msgstr "" + +#: classes/wp-security-user-login.php:147 +#@ all-in-one-wp-security-and-firewall +msgid "ACCOUNT PENDING: Your account is currently not active. An administrator needs to activate your account before you can login." +msgstr "" + +#: classes/wp-security-user-login.php:270 +#@ all-in-one-wp-security-and-firewall +msgid "Site Lockout Notification" +msgstr "" + +#: classes/wp-security-user-login.php:271 +#@ all-in-one-wp-security-and-firewall +msgid "A lockdown event has occurred due to too many failed login attempts or invalid username:" +msgstr "" + +#: classes/wp-security-user-login.php:272 +#@ all-in-one-wp-security-and-firewall +msgid "Username: Unknown" +msgstr "" + +#: classes/wp-security-user-login.php:273 +#@ all-in-one-wp-security-and-firewall +msgid "IP Address: " +msgstr "" + +#: classes/wp-security-user-login.php:274 +#@ all-in-one-wp-security-and-firewall +msgid "IP Range: .*" +msgstr "" + +#: classes/wp-security-user-login.php:275 +#@ all-in-one-wp-security-and-firewall +msgid "Log into your site's WordPress administration panel to see the duration of the lockout or to unlock the user." +msgstr "" + +#: classes/wp-security-user-login.php:337 +#@ all-in-one-wp-security-and-firewall +msgid "Unlock Request Notification" +msgstr "" + +#: classes/wp-security-user-login.php:338 +#@ all-in-one-wp-security-and-firewall +msgid "You have requested for the account with email address to be unlocked. Please click the link below to unlock your account:" +msgstr "" + +#: classes/wp-security-user-login.php:339 +#@ all-in-one-wp-security-and-firewall +msgid "Unlock link: " +msgstr "" + +#: classes/wp-security-user-login.php:340 +#@ all-in-one-wp-security-and-firewall +msgid "After clicking the above link you will be able to login to the WordPress administration panel." +msgstr "" + +#: classes/wp-security-user-login.php:504 +#, php-format +#@ all-in-one-wp-security-and-firewall +msgid "Your session has expired because it has been over %d minutes since your last login." +msgstr "" + +#: classes/wp-security-user-login.php:505 +#: classes/wp-security-user-login.php:509 +#@ all-in-one-wp-security-and-firewall +msgid "Please log back in to continue." +msgstr "" + +#: classes/wp-security-user-login.php:508 +#@ all-in-one-wp-security-and-firewall +msgid "You were logged out because you just changed the \"admin\" username." +msgstr "" + +#: classes/wp-security-user-login.php:534 +#@ all-in-one-wp-security-and-firewall +msgid "Request Unlock" +msgstr "" + +#: classes/wp-security-utility-ip-address.php:82 +#: classes/wp-security-utility-ip-address.php:101 +#: classes/wp-security-utility-ip-address.php:116 +#: classes/wp-security-utility-ip-address.php:131 +#@ all-in-one-wp-security-and-firewall +msgid " is not a valid ip address format." +msgstr "" + +#: classes/wp-security-utility-ip-address.php:139 +#@ all-in-one-wp-security-and-firewall +msgid "You cannot ban your own IP address: " +msgstr "" + +#: classes/wp-security-utility.php:151 +#@ all-in-one-wp-security-and-firewall +msgid "This feature can only be configured by the \"superadmin\" on the main site." +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:98 +#: other-includes/wp-security-unlock-request.php:13 +#@ default +msgid "http://wordpress.org/" +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:99 +#: other-includes/wp-security-unlock-request.php:14 +#@ default +msgid "Powered by WordPress" +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:215 +#@ default +msgid "Are you lost?" +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:215 +#, php-format +#@ default +msgid "← Back to %s" +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:273 +#@ default +msgid "ERROR: Enter a username or e-mail address." +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:277 +#@ default +msgid "ERROR: There is no user registered with that email address." +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:294 +#@ default +msgid "ERROR: Invalid username or e-mail." +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:331 +#@ default +msgid "Password reset is not allowed for this user" +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:356 +#@ default +msgid "Someone requested that the password be reset for the following account:" +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:358 +#, php-format +#@ default +msgid "Username: %s" +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:359 +#@ default +msgid "If this was a mistake, just ignore this email and nothing will happen." +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:360 +#@ default +msgid "To reset your password, visit the following address:" +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:370 +#, php-format +#@ default +msgid "[%s] Password Reset" +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:391 +#@ default +msgid "The e-mail could not be sent." +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:391 +#@ default +msgid "Possible reason: your host may have disabled the mail() function." +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:496 +#@ default +msgid "Sorry, that key does not appear to be valid." +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:498 +#@ default +msgid "Sorry, that key has expired. Please try again." +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:518 +#@ default +msgid "Lost Password" +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:518 +#@ default +msgid "Please enter your username or email address. You will receive a link to create a new password via email." +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:526 +#@ default +msgid "Username or E-mail:" +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:537 +#@ default +msgid "Get New Password" +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:541 +#: other-includes/wp-security-rename-login-feature.php:590 +#: other-includes/wp-security-rename-login-feature.php:621 +#: other-includes/wp-security-rename-login-feature.php:703 +#@ default +msgid "Log in" +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:544 +#: other-includes/wp-security-rename-login-feature.php:624 +#: other-includes/wp-security-rename-login-feature.php:699 +#: other-includes/wp-security-rename-login-feature.php:875 +#@ default +msgid "Register" +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:576 +#@ default +msgid "The passwords do not match." +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:590 +#@ default +msgid "Password Reset" +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:590 +#@ default +msgid "Your password has been reset." +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:598 +#: other-includes/wp-security-rename-login-feature.php:617 +#@ default +msgid "Reset Password" +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:598 +#@ default +msgid "Enter your new password below." +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:605 +#@ default +msgid "New password" +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:609 +#@ default +msgid "Confirm new password" +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:613 +#@ default +msgid "Strength indicator" +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:614 +#@ default +msgid "Hint: The password should be at least seven characters long. To make it stronger, use upper and lower case letters, numbers and symbols like ! \" ? $ % ^ & )." +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:676 +#@ default +msgid "Registration Form" +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:676 +#@ default +msgid "Register For This Site" +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:681 +#: other-includes/wp-security-rename-login-feature.php:841 +#@ default +msgid "Username" +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:685 +#@ default +msgid "E-mail" +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:696 +#@ default +msgid "A password will be e-mailed to you." +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:704 +#: other-includes/wp-security-rename-login-feature.php:880 +#@ default +msgid "Password Lost and Found" +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:704 +#: other-includes/wp-security-rename-login-feature.php:880 +#@ default +msgid "Lost your password?" +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:748 +#@ default +msgid "ERROR: Cookies are blocked or not supported by your browser. You must enable cookies to use WordPress." +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:766 +#@ default +msgid "You have logged in successfully." +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:800 +#@ default +msgid "Session expired. Please log in again. You will not move away from this page." +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:804 +#@ default +msgid "You are now logged out." +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:806 +#@ default +msgid "User registration is currently not allowed." +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:808 +#@ default +msgid "Check your e-mail for the confirmation link." +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:810 +#@ default +msgid "Check your e-mail for your new password." +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:812 +#@ default +msgid "Registration complete. Please check your e-mail." +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:814 +#@ default +msgid "You have successfully updated WordPress! Please log back in to experience the awesomeness." +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:831 +#: other-includes/wp-security-rename-login-feature.php:858 +#@ default +msgid "Log In" +msgstr "" + +#: other-includes/wp-security-rename-login-feature.php:856 +#@ default +msgid "Remember Me" +msgstr "" + +#: other-includes/wp-security-unlock-request.php:48 +#@ all-in-one-wp-security-and-firewall +msgid "Please enter a valid email address" +msgstr "" + +#: other-includes/wp-security-unlock-request.php:59 +#@ all-in-one-wp-security-and-firewall +msgid "User account not found!" +msgstr "" + +#: other-includes/wp-security-unlock-request.php:70 +#@ all-in-one-wp-security-and-firewall +msgid "Error: No locked entry was found in the DB with your IP address range!" +msgstr "" + +#: other-includes/wp-security-unlock-request.php:98 +#@ all-in-one-wp-security-and-firewall +msgid "Email Address" +msgstr "" + diff --git a/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-es_ES.mo b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-es_ES.mo new file mode 100644 index 0000000..93f2ce1 Binary files /dev/null and b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-es_ES.mo differ diff --git a/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-es_ES.po b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-es_ES.po new file mode 100644 index 0000000..1528fd1 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-es_ES.po @@ -0,0 +1,4017 @@ +msgid "" +msgstr "" +"Project-Id-Version: AIOWPS\n" +"POT-Creation-Date: 2013-12-03 12:53+1000\n" +"PO-Revision-Date: 2014-02-25 02:56-0300\n" +"Last-Translator: Samuel Montoya \n" +"Language-Team: \n" +"Language: es_ES\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.4\n" +"X-Poedit-KeywordsList: __;_e\n" +"X-Poedit-Basepath: .\n" +"X-Poedit-SearchPath-0: .\n" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:156 +msgid "WP Security" +msgstr "Seguridad Wordpress" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:157 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:22 +msgid "Dashboard" +msgstr "Escritorio" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:158 +msgid "Settings" +msgstr "Opciones" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:159 +msgid "User Accounts" +msgstr "Cuentas de usuario" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:160 +msgid "User Login" +msgstr "Ingreso de usuarios" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:161 +msgid "User Registration" +msgstr "Registro de Usuarios" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:162 +msgid "Database Security" +msgstr "Seguridad base datos" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:166 +msgid "Filesystem Security" +msgstr "Seguridad de archivos" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:168 +msgid "WHOIS Lookup" +msgstr "Búsqueda WHOIS" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:172 +msgid "Blacklist Manager" +msgstr "Administrados listas negras" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:177 +msgid "Firewall" +msgstr "Firewall" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:179 +msgid "SPAM Prevention" +msgstr "Prevencion de SPAM" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:183 +msgid "Scanner" +msgstr "Escáner" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:185 +msgid "Maintenance" +msgstr "Mantenimiento" + +#: all-in-one-wp-security/admin/wp-security-admin-menu.php:43 +msgid "Settings successfully updated." +msgstr "Ajustes actualizado correctamente." + +#: all-in-one-wp-security/admin/wp-security-admin-menu.php:50 +msgid "The selected record(s) deleted successfully!" +msgstr "El registro(s) seleccionado eliminado correctamente!" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:22 +msgid "Ban Users" +msgstr "Ban Users" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:80 +msgid "Nonce check failed for save blacklist settings!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:132 +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:147 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:400 +msgid "" +"The plugin was unable to write to the .htaccess file. Please edit file " +"manually." +msgstr "" +"El plug-in no pudo escribir en el fichero htaccess.. Por favor, editar el " +"archivo manualmente." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:139 +msgid "Ban IPs or User Agents" +msgstr "Prohibir IPs o agentes de usuario" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:142 +msgid "" +"The All In One WP Security Blacklist feature gives you the option of banning " +"certain host IP addresses or ranges and also user agents." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:143 +msgid "" +"This feature will deny total site access for users which have IP addresses " +"or user agents matching those which you have configured in the settings " +"below." +msgstr "" +"Esta característica va a negar el acceso total de la instalación para los " +"usuarios que tienen direcciones IP o los agentes de usuario que coincidan " +"con los que se haya configurado en la configuración de abajo." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:144 +msgid "" +"The plugin achieves this by making appropriate modifications to your ." +"htaccess file." +msgstr "" +"El plugin logra esto haciendo las modificaciones pertinentes en su archivo " +"htaccess.." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:145 +msgid "" +"By blocking people via the .htaccess file your are using the most secure " +"first line of defence which denies all access to blacklisted visitors as " +"soon as they hit your hosting server." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:151 +msgid "IP Hosts and User Agent Blacklist Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:162 +msgid "Enable IP or User Agent Blacklisting" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:165 +msgid "" +"Check this if you want to enable the banning (or blacklisting) of selected " +"IP addresses and/or user agents specified in the settings below" +msgstr "" +"Seleccione esta opción si desea habilitar la prohibición (o una lista negra) " +"de direcciones IP seleccionadas y / o agentes de usuario especificados en la " +"siguiente configuración" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:169 +msgid "Enter IP Addresses:" +msgstr "Introduzca las direcciones IP:" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:173 +msgid "Enter one or more IP addresses or IP ranges." +msgstr "Introduzca una o más direcciones IP o rangos de IP." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:174 +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:194 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:271 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:288 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:147 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:177 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:308 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:338 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:369 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:397 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:426 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:514 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:669 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:703 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:726 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:747 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:174 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:259 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:456 +msgid "More Info" +msgstr "Mas info" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:177 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:459 +msgid "Each IP address must be on a new line." +msgstr "Cada dirección IP debe estar en una línea nueva." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:178 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:460 +msgid "" +"To specify an IP range use a wildcard \"*\" character. Acceptable ways to " +"use wildcards is shown in the examples below:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:179 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:461 +msgid "Example 1: 195.47.89.*" +msgstr "Ejemplo 1: 195.47.89.*" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:180 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:462 +msgid "Example 2: 195.47.*.*" +msgstr "Ejemplo 2: 195.47.*.*" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:181 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:463 +msgid "Example 3: 195.*.*.*" +msgstr "Ejemplo 3: 195.*.*.*" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:188 +msgid "Enter User Agents:" +msgstr "Introduzca el Agente de Usuario:" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:193 +msgid "Enter one or more user agent strings." +msgstr "Introduce una o más cadenas de agente de usuario." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:197 +msgid "Each user agent string must be on a new line." +msgstr "Cada cadena de agente de usuario debe estar en una línea nueva." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:198 +msgid "Example 1 - A single user agent string to block:" +msgstr "Ejemplo 1 - Una cadena única de agente de usuario para bloquear:" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:200 +msgid "Example 2 - A list of more than 1 user agent strings to block" +msgstr "" +"Ejemplo 2 - Una lista de más de 1 cadenas de agente de usuario para bloquear" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:208 +#: all-in-one-wp-security/admin/wp-security-database-menu.php:347 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:309 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:231 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:497 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:189 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:232 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:336 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:470 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:628 +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:146 +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:221 +msgid "Save Settings" +msgstr "Guardar opciones" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:23 +msgid "System Info" +msgstr "Informacion de sistema" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:73 +msgid "For information, updates and documentation, please visit the" +msgstr "" +"Para obtener información, actualizaciones y documentación, por favor visite " +"el " + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:73 +msgid "AIO WP Security & Firewall Plugin" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:73 +msgid "Page" +msgstr "Pagina" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:74 +msgid "Follow us" +msgstr "Síguenos" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:74 +msgid "" +"Twitter, Google+ or via Email to stay upto date about the new security " +"features of this plugin." +msgstr "" +"Twitter, Google+ o vía correo electrónico para mantenerse al día sobre las " +"nuevas características de seguridad de este plugin." + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:88 +msgid "Security Strength Meter" +msgstr "Medidor de Seguridad" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:117 +msgid "Total Achievable Points: " +msgstr "Total de puntos alcanzables: " + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:119 +msgid "Current Score of Your Site: " +msgstr "Puntuación actual de su sitio: " + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:129 +msgid "Security Points Breakdown" +msgstr "Analisis Puntos de Seguridad" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:170 +msgid "Critical Feature Status" +msgstr "Estado caracteriticas de seguridad" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:174 +msgid "" +"Below is the current status of the critical features that you should " +"activate on your site to achieve a minimum level of recommended security" +msgstr "" +"A continuación se muestra el estado actual de las características esenciales " +"que debe activar en su sitio para alcanzar un nivel mínimo de seguridad " +"recomendada" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:178 +msgid "Admin Username" +msgstr "Nombre de usuario Admin" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:193 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:27 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:39 +msgid "Login Lockdown" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:208 +msgid "File Permission" +msgstr "permiso del archivo" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:223 +msgid "Basic Firewall" +msgstr "Firewall Basico" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:241 +msgid "Maintenance Mode Status" +msgstr "Estado modo mantenimiento" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:245 +msgid "" +"Maintenance mode is currently enabled. Remember to turn it off when you are " +"done" +msgstr "" +"El modo de mantenimiento está habilitada actualmente. Recuerde que apagarlo " +"cuando haya terminado" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:248 +msgid "Maintenance mode is currently off." +msgstr "El modo de mantenimiento actualmente apagado." + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:252 +msgid "Maintenance Mode" +msgstr "Modo Mantenimiento" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:291 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:33 +msgid "Logged In Users" +msgstr "Usuarios conectados" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:301 +msgid "Number of users currently logged in site-wide is:" +msgstr "Número de usuarios conectados actualmente en todo el sitio web es:" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:302 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:324 +#, php-format +msgid "Go to the %s menu to see more details" +msgstr "Ir al menú de %s para ver más detalles" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:307 +msgid "There are no other site-wide users currently logged in." +msgstr "" +"No hay otros usuarios de todo el sitio Actualmente se ha iniciado sesión" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:323 +msgid "Number of users currently logged into your site is:" +msgstr "Número de usuarios conectados actualmente en su sitio es:" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:329 +msgid "There are no other users currently logged in." +msgstr "Actualmente no hay usuarios conectados" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:340 +msgid "Spread the Word" +msgstr "Corre la Voz" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:343 +msgid "" +"We are working to make your WordPress site more secure. Please support us, " +"here is how:" +msgstr "" +"Estamos trabajando para hacer de su sitio de WordPress más seguro. Por favor " +"que nos apoyen, aquí es cómo:" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:367 +msgid "Site Info" +msgstr "Informacion del sitio" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:369 +msgid "Plugin Version" +msgstr "Plugin Version" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:370 +msgid "WP Version" +msgstr "Version Wordpress" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:372 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:374 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:395 +msgid "Version" +msgstr "Version" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:373 +msgid "Table Prefix" +msgstr "Prefijo de tablas" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:375 +msgid "Session Save Path" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:377 +msgid "Server Name" +msgstr "Nombre servidor" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:378 +msgid "Cookie Domain" +msgstr "Dominio de Cookie" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:379 +msgid "Library Present" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:380 +msgid "Debug File Write Permissions" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:384 +msgid "Active Plugins" +msgstr "Plugins activos" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:394 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:130 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:149 +msgid "Name" +msgstr "Nombre" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:396 +msgid "Plugin URL" +msgstr "URL Plugin" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:23 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:57 +msgid "DB Prefix" +msgstr "Prefijo DB" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:24 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:59 +msgid "DB Backup" +msgstr "Respaldo DB" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:84 +msgid "Nonce check failed for DB prefix change operation!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:92 +msgid "" +"The plugin has detected that it cannot write to the wp-config.php file. This " +"feature can only be used if the plugin can successfully write to the wp-" +"config.php file." +msgstr "" +"El plug-in ha detectado que no se puede escribir en el archivo wp-config." +"php. Esta función sólo se puede utilizar si el plugin se puede escribir " +"correctamente en el archivo wp-config.php." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:105 +msgid "Please enter a value for the DB prefix." +msgstr "Por favor, introduzca un valor para el prefijo DB." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:114 +msgid "" +"ERROR: The table prefix can only contain numbers, letters, " +"and underscores." +msgstr "" +"ERROR: El prefijo de tabla sólo puede contener números, " +"letras y guiones bajos." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:122 +msgid "Change Database Prefix" +msgstr "Cambiar prefijo Base datos" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:125 +msgid "" +"Your WordPress DB is the most important asset of your website because it " +"contains a lot of your site's precious information." +msgstr "" +"Su base de datos de WordPress es el activo más importante de su sitio web, " +"ya que contiene una gran cantidad de valiosa información de su sitio." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:126 +msgid "" +"The DB is also a target for hackers via methods such as SQL injections and " +"malicious and automated code which targets certain tables." +msgstr "" +"La DB es también un objetivo para los hackers a través de métodos tales como " +"las inyecciones de SQL y los códigos maliciosos y automatizada que apunta " +"ciertas tablas." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:127 +msgid "" +"One way to add a layer of protection for your DB is to change the default " +"WordPress table prefix from \"wp_\" to something else which will be " +"difficult for hackers to guess." +msgstr "" +"Una forma de añadir una capa de protección a su base de datos es cambiar el " +"prefijo de las tablas de WordPress por defecto de \"wp_ \" a otra cosa que " +"será difícil para los hackers de adivinar." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:128 +msgid "" +"This feature allows you to easily change the prefix to a value of your " +"choice or to a random value set by this plugin." +msgstr "" +"Esta característica le permite cambiar fácilmente el prefijo a un valor de " +"su elección o en un valor aleatorio establecido por este plugin." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:134 +msgid "DB Prefix Options" +msgstr "Opciones prefijo Db" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:145 +#, php-format +msgid "It is recommended that you perform a %s before using this feature" +msgstr "Se recomienda que realice una %s antes de utilizar esta función" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:154 +msgid "Current DB Table Prefix" +msgstr "Actual prefijo de tablas en DB" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:160 +msgid "" +"Your site is currently using the default WordPress DB prefix value of \"wp_" +"\". \n" +" To increase your site's security you should " +"consider changing the DB prefix value to another value." +msgstr "" +"Su sitio está utilizando actualmente el valor de prefijo por defecto de " +"WordPress DB \"wp_\". \n" +" Para aumentar la seguridad de su sitio debe " +"tener en cuenta el cambio del valor de prefijo DB a otro valor." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:167 +msgid "Generate New DB Table Prefix" +msgstr "Generar nuevo Prefijo de tabla" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:170 +msgid "" +"Check this if you want the plugin to generate a random 6 character string " +"for the table prefix" +msgstr "" +"Seleccione esta opción si desea que el plugin para seleccione seis " +"caracteres aleatorios para el prefijo de la tabla" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:171 +msgid "OR" +msgstr "O" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:173 +msgid "" +"Choose your own DB prefix by specifying a string which contains letters and/" +"or numbers and/or underscores. Example: xyz_" +msgstr "" +"Elija su propio prefijo DB especificando una cadena que contiene letras y / " +"o números y / o guiones bajos. Ejemplo: xyz_" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:177 +msgid "Change DB Prefix" +msgstr "Cambiar prefijo DB" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:198 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:86 +msgid "Nonce check failed for manual DB backup operation!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:215 +msgid "" +"DB Backup was successfully completed! You will receive the backup file via " +"email if you have enabled \"Send Backup File Via Email\", otherwise you can " +"retrieve it via FTP from the following directory:" +msgstr "" +"Copia de seguridad de base de datos se completó con éxito! Usted recibirá el " +"archivo de copia de seguridad por correo electrónico si ha habilitado " +"\"Enviar archivo de copia de seguridad por correo electrónico \", de lo " +"contrario se puede recuperar a través de FTP desde el siguiente directorio:" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:217 +msgid "Your DB Backup File location: " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:225 +msgid "DB Backup failed. Please check the permissions of the backup directory." +msgstr "" +"copia de seguridad ha fallado. Por favor, compruebe los permisos del " +"directorio de copia de seguridad." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:242 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:126 +msgid "" +"You entered a non numeric value for the \"backup time interval\" field. It " +"has been set to the default value." +msgstr "" +"Ha introducido un valor no numérico para el \"intervalo de tiempo de copia " +"de seguridad \" de campo. Se ha establecido en el valor predeterminado." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:249 +msgid "" +"You entered a non numeric value for the \"number of backup files to keep\" " +"field. It has been set to the default value." +msgstr "" +"Ha introducido un valor no numérico para el campo \"número de archivos de " +"copia de seguridad para mantener \". Se ha establecido en el valor " +"predeterminado." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:256 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:156 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:121 +msgid "" +"You have entered an incorrect email address format. It has been set to your " +"WordPress admin email as default." +msgstr "" +"Ha introducido un formato de dirección de correo electrónico incorrecta. Se " +"ha establecido en su correo electrónico de administración de WordPress por " +"defecto." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:262 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:162 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:219 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:127 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:581 +msgid "Attention!" +msgstr "Atencion!" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:289 +msgid "Manual Backup" +msgstr "Respaldo Manual" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:295 +msgid "To create a new DB backup just click on the button below." +msgstr "" +"Para crear una nueva copia de seguridad DB simplemente haga clic en el botón " +"de abajo." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:298 +msgid "Create DB Backup Now" +msgstr "Respaldar base datos" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:302 +msgid "Automated Scheduled Backups" +msgstr "Respaldos programados automáticos" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:314 +msgid "Enable Automated Scheduled Backups" +msgstr "Habilitar copias de seguridad programadas" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:317 +msgid "" +"Check this if you want the system to automatically generate backups " +"periodically based on the settings below" +msgstr "" +"Seleccione esta opción si desea que el sistema genere automáticamente copias " +"de seguridad periódicamente en base a la siguiente configuración" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:321 +msgid "Backup Time Interval" +msgstr "Tiempo entre respaldos" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:324 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:259 +msgid "Hours" +msgstr "Horas" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:325 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:260 +msgid "Days" +msgstr "Dias" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:326 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:261 +msgid "Weeks" +msgstr "Semanas" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:328 +msgid "Set the value for how often you would like an automated backup to occur" +msgstr "" +"Establezca la frecuencia con que desea realizar una copia de seguridad " +"automática" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:332 +msgid "Number of Backup Files To Keep" +msgstr "Número de archivos de copia de seguridad para mantener" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:334 +msgid "" +"Thie field allows you to choose the number of backup files you would like to " +"keep in the backup directory" +msgstr "" +"El campo le permite elegir el número de archivos de copia de seguridad que " +"le gustaría tener en el directorio de copia de seguridad" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:338 +msgid "Send Backup File Via Email" +msgstr "Enviar archivo respaldo via Email" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:341 +msgid "" +"Check this if you want the system to email you the backup file after a DB " +"backup has been performed" +msgstr "" +"Seleccione esta opción si desea que el sistema le envía por correo " +"electrónico el archivo de copia de seguridad después de que se ha realizado " +"una copia de seguridad de base de datos" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:343 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:305 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:228 +msgid "Enter an email address" +msgstr "Ingrese una direccion de email" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:373 +msgid "Starting DB prefix change operations....." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:375 +#, php-format +msgid "" +"Your WordPress system has a total of %s tables and your new DB prefix will " +"be: %s" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:381 +#: all-in-one-wp-security/classes/wp-security-utility.php:206 +msgid "" +"Failed to make a backup of the wp-config.php file. This operation will not " +"go ahead." +msgstr "" +"No se pudo hacer una copia de seguridad del archivo wp-config.php. Esta " +"operación no seguirá adelante." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:385 +msgid "A backup copy of your wp-config.php file was created successfully!" +msgstr "" +"Una copia de seguridad del archivo wp-config.php sido creado con éxito!" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:408 +#, php-format +msgid "%s table name update failed" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:420 +#, php-format +msgid "Please change the prefix manually for the above tables to: %s" +msgstr "Por favor cambio el prefijo manualmente para las siguientes tablas: %s" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:423 +#, php-format +msgid "%s tables had their prefix updated successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:438 +msgid "wp-config.php file was updated successfully!" +msgstr "El archivo wp-config.php se ha actulizado satisfactoriamente!" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:441 +#, php-format +msgid "" +"The \"wp-config.php\" file was not able to be modified. Please modify this " +"file manually using your favourite editor and search \n" +" for variable \"$table_prefix\" and assign the following " +"value to that variable: %s" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:462 +msgid "There was an error when updating the options table." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:466 +msgid "" +"The options table records which had references to the old DB prefix were " +"updated successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:491 +#, php-format +msgid "" +"Error updating user_meta table where new meta_key = %s, old meta_key = %s " +"and user_id = %s." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:497 +msgid "" +"The usermeta table records which had references to the old DB prefix were " +"updated successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:499 +msgid "DB prefix change tasks have been completed." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:22 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:94 +msgid "File Change Detection" +msgstr "Detección de cambio de archivos" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:93 +msgid "Nonce check failed for manual file change detection scan operation!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:100 +msgid "" +"The plugin has detected that this is your first file change detection scan. " +"The file details from this scan will be used to detect file changes for " +"future scans!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:194 +msgid "" +"NEW SCAN COMPLETED: The plugin has detected that you have made changes to " +"the \"File Types To Ignore\" or \"Files To Ignore\" fields.\n" +" In order to ensure that future scan results are " +"accurate, the old scan data has been refreshed." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:204 +msgid "" +"All In One WP Security & Firewall has detected that there was a change in " +"your host's files." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:206 +msgid "View Scan Details & Clear This Message" +msgstr "Ver los detalles de escaneo y eliminar este mensaje" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:215 +msgid "" +"If given an opportunity hackers can insert their code or files into your " +"system which they can then use to carry out malicious acts on your site." +msgstr "" +"Si se les da una oportunidad a los piratas informáticos pueden insertar su " +"código o archivos en su sistema, que luego puede utilizar para llevar a cabo " +"los actos malintencionados en su sitio." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:216 +msgid "" +"Being informed of any changes in your files can be a good way to quickly " +"prevent a hacker from causing damage to your website." +msgstr "" +"Estar informado de cualquier cambio en sus archivos puede ser una buena " +"manera de prevenir rápidamente un hacker de causar daños en el sitio web." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:217 +msgid "" +"In general, WordPress core and plugin files and file types such as \".php\" " +"or \".js\" should not change often and when they do, it is important that " +"you are made aware when a change occurs and which file was affected." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:218 +msgid "" +"The \"File Change Detection Feature\" will notify you of any file change " +"which occurs on your system, including the addition and deletion of files by " +"performing a regular automated or manual scan of your system's files." +msgstr "" +"La \"característica de detección de cambio de archivo \" le notificará de " +"cualquier cambio de archivo que se produce en su sistema, incluyendo la " +"adición y eliminación de archivos mediante la realización de una búsqueda de " +"virus automatizado o manual de los archivos de tu sistema." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:219 +msgid "" +"This feature also allows you to exclude certain files or folders from the " +"scan in cases where you know that they change often as part of their normal " +"operation. (For example log files and certain caching plugin files may " +"change often and hence you may choose to exclude such files from the file " +"change detection scan)" +msgstr "" +"Esta característica también le permite excluir ciertos archivos o carpetas " +"de la exploración en los casos donde se sabe que a menudo cambian como parte " +"de su funcionamiento normal. (Por ejemplo los archivos de registro y ciertos " +"archivos de plugin de caché pueden cambiar a menudo y por lo tanto usted " +"puede optar por excluir este tipo de archivos del análisis de detección de " +"cambio de archivo)" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:224 +msgid "Manual File Change Detection Scan" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:230 +msgid "" +"To perform a manual file change detection scan click on the button below." +msgstr "" +"Para realizar un escaneo manual de detección de cambio de archivo , haga " +"clic en el botón de abajo." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:233 +msgid "Perform Scan Now" +msgstr "Realizar un scaneos" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:237 +msgid "File Change Detection Settings" +msgstr "Configuración de detección de modificación del archivo" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:249 +msgid "Enable Automated File Change Detection Scan" +msgstr "Activar escaneo automatizado de detección de cambio de archivo" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:252 +msgid "" +"Check this if you want the system to automatically/periodically scan your " +"files to check for file changes based on the settings below" +msgstr "" +"Seleccione esta opción si desea que el sistema escanee periódicamente sus " +"archivos para verificar si hay cambios en los archivos en función de los " +"ajustes siguientes" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:256 +msgid "Scan Time Interval" +msgstr "Intervalo entre escaneos" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:263 +msgid "Set the value for how often you would like a scan to occur" +msgstr "" +"Establezca el valor de la frecuencia con la que le gustaría que se realice " +"un escaneo" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:267 +msgid "File Types To Ignore" +msgstr "Tipos de archivo a ignorar" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:270 +msgid "" +"Enter each file type or extension on a new line which you wish to exclude " +"from the file change detection scan." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:274 +msgid "" +"You can exclude file types from the scan which would not normally pose any " +"security threat if they were changed. These can include things such as image " +"files." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:275 +msgid "" +"Example: If you want the scanner to ignore files of type jpg, png, and bmp, " +"then you would enter the following:" +msgstr "" +"Ejemplo: Si desea que el escáner ignorare los archivos de tipo jpg, png, y " +"bmp, a continuación, se escribiría lo siguiente:" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:276 +msgid "jpg" +msgstr "jpg" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:277 +msgid "png" +msgstr "png" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:278 +msgid "bmp" +msgstr "bmp" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:284 +msgid "Files/Directories To Ignore" +msgstr "Archivos/Direcctorios a ignorar" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:287 +msgid "" +"Enter each file or directory on a new line which you wish to exclude from " +"the file change detection scan." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:291 +msgid "" +"You can exclude specific files/directories from the scan which would not " +"normally pose any security threat if they were changed. These can include " +"things such as log files." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:292 +msgid "" +"Example: If you want the scanner to ignore certain files in different " +"directories or whole directories, then you would enter the following:" +msgstr "" +"Ejemplo: Si desea que el scanner ignore ciertos archivos en diferentes " +"directorios o directorios completos, a continuación, debe escribir lo " +"siguiente:" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:293 +msgid "cache/config/master.php" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:294 +msgid "somedirectory" +msgstr "algundirectorio" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:300 +msgid "Send Email When Change Detected" +msgstr "Enviar un correo cuando detecte un cambio" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:303 +msgid "" +"Check this if you want the system to email you if a file change was detected" +msgstr "" +"Seleccione esta opción si desea que el sistema le envía por correo " +"electrónico si se detecta un cambio en un archivo" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:335 +msgid "Latest File Change Scan Results" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:344 +msgid "The following files were added to your host." +msgstr "Los siguientes archivos se han añadido a su host." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:347 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:368 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:392 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:26 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:27 +msgid "File" +msgstr "Archivo" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:348 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:369 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:393 +msgid "File Size" +msgstr "Tamanño de archivo" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:349 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:370 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:394 +msgid "File Modified" +msgstr "Archivo modificado" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:365 +msgid "The following files were removed from your host." +msgstr "Los siguientes archivos fueron retirados de su host." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:389 +msgid "The following files were changed on your host." +msgstr "Los siguientes archivos se han cambiado en el host." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:26 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:63 +msgid "File Permissions" +msgstr "Permisos de archivo" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:27 +msgid "PHP File Editing" +msgstr "Edicion archivo PHP" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:28 +msgid "WP File Access" +msgstr "WP acceso archivo" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:29 +msgid "Host System Logs" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:96 +#, php-format +msgid "The permissions for %s were succesfully changed to %s" +msgstr "Los permisos para %s se cambiaron exitosamente a %s" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:100 +#, php-format +msgid "Unable to change permissions for %s!" +msgstr "No se puede cambiar los permisos de %s!" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:106 +msgid "File Permissions Scan" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:109 +msgid "" +"Your WordPress file and folder permission settings govern the accessability " +"and read/write privileges of the files and folders which make up your WP " +"installation." +msgstr "" +"La configuración de permisos de archivos y carpetas WordPress rigen la " +"accesibilidad y de lectura / escritura de los privilegios de los archivos y " +"carpetas que componen la instalación de WP." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:110 +msgid "" +"Your WP installation already comes with reasonably secure file permission " +"settings for the filesystem." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:111 +msgid "" +"However, sometimes people or other plugins modify the various permission " +"settings of certain core WP folders or files such that they end up making " +"their site less secure because they chose the wrong permission values." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:112 +msgid "" +"This feature will scan the critical WP core folders and files and will " +"highlight any permission settings which are insecure." +msgstr "" +"Esta característica va a escanear las carpetas críticos fundamentales WP y " +"archivos y resaltará cualquier configuración de permisos que son inseguros." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:118 +msgid "WP Directory and File Permissions Scan Results" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:131 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:150 +msgid "File/Folder" +msgstr "Archivo/Carpeta" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:132 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:151 +msgid "Current Permissions" +msgstr "Permisos actuales" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:133 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:152 +msgid "Recommended Permissions" +msgstr "Permisos recomendados" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:134 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:153 +msgid "Recommended Action" +msgstr "Acciones recomendadas" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:191 +msgid "Your PHP file editing settings were saved successfully." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:195 +msgid "" +"Operation failed! Unable to modify or make a backup of wp-config.php file!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:201 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:65 +msgid "File Editing" +msgstr "Edicion de archivo" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:204 +msgid "" +"The Wordpress Dashboard by default allows administrators to edit PHP files, " +"such as plugin and theme files." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:205 +msgid "" +"This is often the first tool an attacker will use if able to login, since it " +"allows code execution." +msgstr "" +"Esto es a menudo la primera herramienta que un atacante usará si es capaz de " +"iniciar sesión, ya que permite la ejecución de código" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:206 +msgid "" +"This feature will disable the ability for people to edit PHP files via the " +"dashboard." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:212 +msgid "Disable PHP File Editing" +msgstr "Desactivar Edición de archivo PHP" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:224 +msgid "Disable Ability To Edit PHP Files" +msgstr "Desactivar posibilidad de editar archivos PHP" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:227 +msgid "" +"Check this if you want to remove the ability for people to edit PHP files " +"via the WP dashboard" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:271 +msgid "" +"You have successfully saved the Prevent Access to Default WP Files " +"configuration." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:275 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:115 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:269 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:480 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:619 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:106 +msgid "" +"Could not write to the .htaccess file. Please check the file permissions." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:280 +msgid "WordPress Files" +msgstr "Archivos WordPress" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:283 +#, php-format +msgid "" +"This feature allows you to prevent access to files such as %s, %s and %s " +"which are delivered with all WP installations." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:284 +msgid "" +"By preventing access to these files you are hiding some key pieces of " +"information (such as WordPress version info) from potential hackers." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:289 +msgid "Prevent Access to Default WP Files" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:300 +msgid "Prevent Access to WP Default Install Files" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:303 +msgid "" +"Check this if you want to prevent access to readme.html, license.txt and wp-" +"config-sample.php." +msgstr "" +"Seleccione esta opción si desea impedir el acceso a readme.html, license.txt " +"y wp-config-sample.php." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:307 +msgid "Save Setting" +msgstr "guardar ajuste" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:331 +msgid "System Logs" +msgstr "Logs de sistema" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:334 +msgid "" +"Sometimes your hosting platform will produce error or warning logs in a file " +"called \"error_log\"." +msgstr "" +"A veces, su plataforma de alojamiento producirá error o registros de avisos " +"en un archivo llamado \"error_log \"." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:335 +msgid "" +"Depending on the nature and cause of the error or warning, your hosting " +"server can create multiple instances of this file in numerous directory " +"locations of your WordPress installation." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:336 +msgid "" +"By occassionally viewing the contents of these logs files you can keep " +"informed of any underlying problems on your system which you might need to " +"address." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:342 +msgid "View System Logs" +msgstr "Ver log de sistema" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:347 +msgid "Enter System Log File Name" +msgstr "Introdusca el nombre para el archivo de registro" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:349 +msgid "Enter your system log file name. (Defaults to error_log)" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:352 +msgid "View Latest System Logs" +msgstr "Vea Los Últimos Registros del sistema" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:354 +msgid "Loading..." +msgstr "Cargando..." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:371 +msgid "No system logs were found!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:424 +msgid "Set Recommended Permissions" +msgstr "Establecer permisos recomendados" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:430 +msgid "No Action Required" +msgstr "No se requiere acción" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:470 +#, php-format +msgid "Showing latest entries of error_log file: %s" +msgstr "Mostrando las entradas más recientes de archivo error_log: %s" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:25 +msgid "Basic Firewall Rules" +msgstr "Reglas basicas de Firewall" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:26 +msgid "Additional Firewall Rules" +msgstr "Reglas adicionales de Firewall" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:27 +msgid "5G Blacklist Firewall Rules" +msgstr "Las reglas de 5G firewall de lista negra" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:28 +msgid "Brute Force Prevention" +msgstr "Prevencion Fuerza Bruta" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:111 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:102 +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:96 +msgid "Settings were successfully saved" +msgstr "Ajustes se guardaron correctamente" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:120 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:485 +msgid "Firewall Settings" +msgstr "Opciones de Firewall" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:127 +#, php-format +msgid "" +"This should not have any impact on your site's general functionality but if " +"you wish you can take a %s of your .htaccess file before proceeding." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:128 +msgid "" +"The features in this tab allow you to activate some basic firewall security " +"protection rules for your site." +msgstr "" +"Las funciones de esta ficha permiten activar algunas reglas básicas de " +"protección de la seguridad de firewall para su sitio." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:129 +msgid "" +"The firewall functionality is achieved via the insertion of special code " +"into your currently active .htaccess file." +msgstr "" +"La funcionalidad de servidor de seguridad se logra a través de la inserción " +"de un código especial en su archivo. Htaccess actualmente activo." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:135 +msgid "Basic Firewall Settings" +msgstr "Opciones basicas de Firewall" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:143 +msgid "Enable Basic Firewall Protection" +msgstr "Habilitar proteccion basica de Firewall" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:146 +msgid "Check this if you want to apply basic firewall protection to your site." +msgstr "" +"Seleccione esta opción si desea aplicar la protección básica de cortafuegos " +"a su sitio." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:150 +msgid "" +"This setting will implement the following basic firewall protection " +"mechanisms on your site:" +msgstr "" +"Este ajuste implementará los siguientes mecanismos básicos de protección de " +"firewall en su sitio:" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:151 +msgid "1) Protect your htaccess file by denying access to it." +msgstr "1) Proteger su archivo htaccess al negar el acceso a la misma." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:152 +msgid "2) Disable the server signature." +msgstr "2) Desactivar la firma del servidor." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:153 +msgid "3) Limit file upload size (10MB)." +msgstr "3) el tamaño de carga de archivos Límite (10MB)." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:154 +msgid "4) Protect your wp-config.php file by denying access to it." +msgstr "4) Proteger su archivo wp-config.php al negar el acceso a la misma." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:155 +msgid "" +"The above firewall features will be applied via your .htaccess file and " +"should not affect your site's overall functionality." +msgstr "" +"Las características de firewall anteriores se aplicarán a través de su " +"archivo .htaccess y no deberían afectar a la funcionalidad general de su " +"sitio." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:156 +msgid "" +"You are still advised to take a backup of your active .htaccess file just in " +"case." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:165 +msgid "WordPress Pingback Vulnerability Protection" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:173 +msgid "Enable Pingback Protection" +msgstr "Activar protección Pingback" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:176 +msgid "" +"Check this if you are not using the WP XML-RPC functionality and you want to " +"enable protection against WordPress pingback vulnerabilities." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:180 +msgid "" +"This setting will add a directive in your .htaccess to disable access to the " +"WordPress xmlrpc.php file which is responsible for the XML-RPC functionality " +"such as pingbacks in WordPress." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:181 +msgid "" +"Hackers can exploit various pingback vulnerabilities in the WordPress XML-" +"RPC API in a number of ways such as:" +msgstr "" +"Los hackers pueden explotar varias vulnerabilidades pingback en el WordPress " +"XML-RPC API de varias maneras, tales como:" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:182 +msgid "1) Denial of Service (DoS) attacks" +msgstr "1) la denegación de servicio (DoS)" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:183 +msgid "2) Hacking internal routers." +msgstr "2) Hackear routers internos." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:184 +msgid "3) Scanning ports in internal networks to get info from various hosts." +msgstr "" +"3) análisis de puertos en las redes internas para obtener información de " +"varios hosts." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:185 +msgid "" +"Apart from the security protection benefit, this feature may also help " +"reduce load on your server, particularly if your site currently has a lot of " +"unwanted traffic hitting the XML-RPC API on your installation." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:186 +msgid "" +"NOTE: You should only enable this feature if you are not currently using the " +"XML-RPC functionality on your WordPress installation." +msgstr "" +"NOTA: Sólo se debe activar esta función si no está utilizando la " +"funcionalidad de XML-RPC en su instalación de WordPress." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:193 +msgid "Save Basic Firewall Settings" +msgstr "Guardar la configuracion basica de Firewall" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:265 +msgid "" +"You have successfully saved the Additional Firewall Protection configuration" +msgstr "" +"Ha guardado correctamente la configuración adicional de protección del " +"cortafuegos" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:279 +msgid "Additional Firewall Protection" +msgstr "Proteccion adicional de Firewall" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:283 +#, php-format +msgid "" +"Due to the nature of the code being inserted to the .htaccess file, this " +"feature may break some functionality for certain plugins and you are " +"therefore advised to take a %s of .htaccess before applying this " +"configuration." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:285 +msgid "" +"This feature allows you to activate more advanced firewall settings to your " +"site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:286 +msgid "" +"The advanced firewall rules are applied via the insertion of special code to " +"your currently active .htaccess file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:295 +msgid "Listing of Directory Contents" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:304 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:80 +msgid "Disable Index Views" +msgstr "Desactivar Índice Vistas" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:307 +msgid "Check this if you want to disable directory and file listing." +msgstr "" +"Seleccione esta opción si desea desactivar el listado de archivos y " +"directorios." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:312 +msgid "" +"By default, an Apache server will allow the listing of the contents of a " +"directory if it doesn't contain an index.php file." +msgstr "" +"De manera predeterminada, un servidor Apache permitirá el listado de los " +"contenidos de un directorio si no contiene un archivo index.php." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:314 +msgid "This feature will prevent the listing of contents for all directories." +msgstr "" +"Esta característica evita el listado de contenidos de todos los directorios." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:316 +msgid "" +"NOTE: In order for this feature to work \"AllowOverride\" must be enabled in " +"your httpd.conf file. Ask your hosting provider to check this if you don't " +"have access to httpd.conf" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:325 +msgid "Trace and Track" +msgstr "Rastreo y Seguimiento" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:334 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:81 +msgid "Disable Trace and Track" +msgstr "Desactivar Rastreo y Seguimiento" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:337 +msgid "Check this if you want to disable trace and track." +msgstr "Seleccione esta opción si desea desactivar rastreo y seguimiento." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:342 +msgid "" +"HTTP Trace attack (XST) can be used to return header requests and grab " +"cookies and other information." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:344 +msgid "" +"This hacking technique is usually used together with cross site scripting " +"attacks (XSS)." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:346 +msgid "" +"Disabling trace and track on your site will help prevent HTTP Trace attacks." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:355 +msgid "Proxy Comment Posting" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:365 +msgid "Forbid Proxy Comment Posting" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:368 +msgid "Check this if you want to forbid proxy comment posting." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:373 +msgid "" +"This setting will deny any requests that use a proxy server when posting " +"comments." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:374 +msgid "" +"By forbidding proxy comments you are in effect eliminating some SPAM and " +"other proxy requests." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:383 +msgid "Bad Query Strings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:393 +msgid "Deny Bad Query Strings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:396 +msgid "This will help protect you against malicious queries via XSS." +msgstr "" +"Esto le ayudará a protegerse contra las consultas maliciosos a través de XSS." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:401 +msgid "" +"This feature will write rules in your .htaccess file to prevent malicious " +"string attacks on your site using XSS." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:402 +msgid "" +"NOTE: Some of these strings might be used for plugins or themes and hence " +"this might break some functionality." +msgstr "" +"NOTA: Algunas de estas cadenas podrían utilizarse para plugins o temas y por " +"lo tanto esto podría romper alguna funcionalidad." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:403 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:433 +msgid "" +"You are therefore strongly advised to take a backup of your active .htaccess " +"file before applying this feature." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:412 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:84 +msgid "Advanced Character String Filter" +msgstr "Filtro de cadena de caracteres Avanzado" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:422 +msgid "Enable Advanced Character String Filter" +msgstr "Habilitar filtro avanzado cadena de caracteres" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:425 +msgid "This will block bad character matches from XSS." +msgstr "Esto bloqueará coincidencias malas de caracteres XSS." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:430 +msgid "" +"This is an advanced character string filter to prevent malicious string " +"attacks on your site coming from Cross Site Scripting (XSS)." +msgstr "" +"Se trata de un filtro de cadena de caracteres avanzados para prevenir " +"ataques maliciosos de cadenas en su sitio procedentes de Cross Site " +"Scripting (XSS)." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:431 +msgid "" +"This setting matches for common malicious string patterns and exploits and " +"will produce a 403 error for the hacker attempting the query." +msgstr "" +"Este valor coincide con los patrones de cadenas maliciosas comunes y hazañas " +"y producirá un error 403 para el hacker intenta la consulta." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:432 +msgid "NOTE: Some strings for this setting might break some functionality." +msgstr "" +"NOTA: Algunas cadenas de este ajuste podría romper alguna funcionalidad." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:441 +msgid "Save Additional Firewall Settings" +msgstr "Guardar la configuracion adicionales de Firewall" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:476 +msgid "You have successfully saved the 5G Firewall Protection configuration" +msgstr "Ha guardado correctamente la configuración de protección 5G Firewall" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:489 +#, php-format +msgid "" +"This feature allows you to activate the 5G firewall security protection " +"rules designed and produced by %s." +msgstr "" +"Esta función le permite activar las reglas de protección de la seguridad de " +"cortafuegos 5G diseñados y producidos por %s." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:490 +msgid "" +"The 5G Blacklist is a simple, flexible blacklist that helps reduce the " +"number of malicious URL requests that hit your website." +msgstr "" +"El 5G Blacklist es una lista negra simple, flexible, que ayuda a reducir el " +"número de peticiones de URL maliciosas que afecte su sitio web." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:491 +msgid "" +"The added advantage of applying the 5G firewall to your site is that it has " +"been tested and confirmed by the people at PerishablePress.com to be an " +"optimal and least disruptive set of .htaccess security rules for general WP " +"sites running on an Apache server or similar." +msgstr "" +"La ventaja de aplicar el firewall 5G a su sitio, es que ha sido probado y " +"confirmado por el pueblo en PerishablePress.com ser un conjunto óptimo y " +"menos perjudicial de las normas de seguridad htaccess para sitios WP " +"generales que se ejecutan en un servidor Apache o similar." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:492 +#, php-format +msgid "" +"Therefore the 5G firewall rules should not have any impact on your site's " +"general functionality but if you wish you can take a %s of your .htaccess " +"file before proceeding." +msgstr "" +"Por lo tanto, las reglas del firewall 5G no deberían tener ningún impacto en " +"la funcionalidad general de su sitio, pero si lo desea, puede tomar un %s de " +"su archivo .htaccess. antes de proceder." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:498 +msgid "5G Blacklist/Firewall Settings" +msgstr "5G opciones Lista negra/Firewall" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:510 +msgid "Enable 5G Firewall Protection" +msgstr "Habilitar Protección 5G de Firewall" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:513 +msgid "" +"Check this if you want to apply the 5G Blacklist firewall protection from " +"perishablepress.com to your site." +msgstr "" +"Seleccione esta opción si desea aplicar la lista negra de la protección " +"firewall 5G de perishablepress.com a su sitio." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:517 +msgid "" +"This setting will implement the 5G security firewall protection mechanisms " +"on your site which include the following things:" +msgstr "" +"Este ajuste implementa los mecanismos de protección de firewall de seguridad " +"5G en su sitio, que incluyen lo siguiente:" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:518 +msgid "1) Block forbidden characters commonly used in exploitative attacks." +msgstr "" +"1) Bloquear caracteres prohibidos de uso común en los ataques de explotación." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:519 +msgid "2) Block malicious encoded URL characters such as the \".css(\" string." +msgstr "" +"2) Bloquear caracteres maliciosos URL codificadas como el \".css(\" string." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:520 +msgid "" +"3) Guard against the common patterns and specific exploits in the root " +"portion of targeted URLs." +msgstr "" +"3) protegerse contra los patrones comunes y exploits específicos en la parte " +"de la raíz de las URL específicas." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:521 +msgid "" +"4) Stop attackers from manipulating query strings by disallowing illicit " +"characters." +msgstr "" +"4) Detener que los atacantes manipulen cadenas de consulta al no permitir " +"caracteres ilegales." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:522 +msgid "....and much more." +msgstr ".... y mucho más." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:528 +msgid "Save 5G Firewall Settings" +msgstr "Guardar opciones 5G Firewall" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:556 +msgid "" +"Settings have not been saved - your secret word must consist only of " +"alphanumeric characters, ie, letters and/or numbers only!" +msgstr "" +"Los ajustes no se han salvado - tu palabra secreta debe consistir en " +"caracteres alfanuméricos, es decir, letras y números!" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:574 +msgid "" +"You have successfully enabled the cookie based brute force prevention feature" +msgstr "" +"Usted ha habilitado correctamente la función de prevención de la fuerza " +"bruta basan en cookies" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:575 +msgid "" +"From now on you will need to log into your WP Admin using the following URL:" +msgstr "" +"A partir de ahora usted tendrá que acceder a su administración WP usando la " +"siguiente URL:" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:577 +msgid "" +"It is important that you save this URL value somewhere in case you forget " +"it, OR," +msgstr "" +"Es importante que guarde este valor URL en alguna parte en caso de que la " +"olvide, O, " + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:578 +#, php-format +msgid "simply remember to add a \"?%s=1\" to your current site URL address." +msgstr "" +"simplemente recuerde agregar un \"?%s=1\" a su dirección URL del sitio " +"actual." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:584 +msgid "" +"You have successfully saved cookie based brute force prevention feature " +"settings." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:629 +msgid "Brute Force Prevention Firewall Settings" +msgstr "Configuración de Firewall de Prevención de fuerza bruta" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:634 +msgid "" +"A Brute Force Attack is when a hacker tries many combinations of usernames " +"and passwords until they succeed in guessing the right combination." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:635 +msgid "" +"Due to the fact that at any one time there may be many concurrent login " +"attempts occurring on your site via malicious automated robots, this also " +"has a negative impact on your server's memory and performance." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:636 +msgid "" +"The features in this tab will stop the majority of Brute Force Login Attacks " +"at the .htaccess level thus providing even better protection for your WP " +"login page and also reducing the load on your server because the system does " +"not have to run PHP code to process the login attempts." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:643 +#, php-format +msgid "" +"Even though this feature should not have any impact on your site's general " +"functionality you are strongly encouraged to take a %s of your ." +"htaccess file before proceeding." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:644 +msgid "" +"If this feature is not used correctly, you can get locked out of your site. " +"A backup file will come in handy if that happens." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:645 +#, php-format +msgid "" +"To learn more about how to use this feature please watch the following %s." +msgstr "" +"Para obtener más información sobre cómo utilizar esta función por favor ver " +"el siguiente %s." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:654 +msgid "Cookie Based Brute Force Login Prevention" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:665 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:79 +msgid "Enable Brute Force Attack Prevention" +msgstr "Habilitar la prevención de ataques de fuerza bruta" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:668 +msgid "" +"Check this if you want to protect your login page from Brute Force Attack." +msgstr "" +"Marque esta si quieres proteger tu página de inicio de sesión de ataque de " +"fuerza bruta." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:673 +msgid "" +"This feature will deny access to your WordPress login page for all people " +"except those who have a special cookie in their browser." +msgstr "" +"Esta característica va a negar el acceso a su página de inicio de sesión de " +"WordPress para todas las personas, excepto los que tengan una cookie " +"especial en su navegador." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:675 +msgid "To use this feature do the following:" +msgstr "Para utilizar esta función, haga lo siguiente:" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:677 +msgid "1) Enable the checkbox." +msgstr "1) Active la casilla de verificación." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:679 +msgid "" +"2) Enter a secret word consisting of alphanumeric characters which will be " +"difficult to guess. This secret word will be useful whenever you need to " +"know the special URL which you will use to access the login page (see point " +"below)." +msgstr "" +"2) Introduzca una palabra secreta que consiste en caracteres alfanuméricos " +"que serán difíciles de adivinar. Esta palabra secreta será útil cuando lo " +"que necesita saber la URL especial que va a utilizar para acceder a la " +"página de inicio de sesión (véase el punto siguiente)." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:681 +msgid "" +"3) You will then be provided with a special login URL. You will need to use " +"this URL to login to your WordPress site instead of the usual login URL. " +"NOTE: The system will deposit a special cookie in your browser which will " +"allow you access to the WordPress administration login page." +msgstr "" +"3) A continuación, se le proporcionará una URL especial de inicio de sesión. " +"Usted tendrá que utilizar esta URL para acceder a su sitio de WordPress en " +"lugar de la URL de acceso habitual. NOTA: El sistema depositará una cookie " +"especial en su navegador que le permitirá acceder a la página de inicio de " +"sesión de administración de WordPress." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:683 +msgid "" +"Any person trying to access your login page who does not have the special " +"cookie in their browser will be automatically blocked." +msgstr "" +"Cualquier persona que intenta acceder a la página de inicio de sesión que no " +"tiene la cookie especial en su navegador se bloqueará automáticamente." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:690 +msgid "Secret Word" +msgstr "Palabra Secreta" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:692 +msgid "" +"Choose a secret word consisting of alphanumeric characters which you can use " +"to access your special URL. Your are highly encouraged to choose a word " +"which will be difficult to guess." +msgstr "" +"Elija una palabra secreta que consiste en caracteres alfanuméricos que se " +"pueden utilizar para acceder a su URL especial. se les anima a elegir una " +"palabra que será difícil de adivinar." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:696 +msgid "Re-direct URL" +msgstr "URL redirigir" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:700 +msgid "" +"Specify a URL to redirect a hacker to when they try to access your WordPress " +"login page." +msgstr "" +"Especificar una dirección URL para redirigir un hacker cuando tratan de " +"acceder a la página de inicio de sesión de WordPress." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:707 +msgid "" +"The URL specified here can be any site's URL and does not have to be your " +"own. For example you can be as creative as you like and send hackers to the " +"CIA or NSA home page." +msgstr "" +"La dirección URL especificada aquí puede ser la dirección URL de cualquier " +"sitio y no tiene que ser la suya. Por ejemplo, usted puede ser tan creativo " +"como quieras y enviar los hackers a la página principal de la CIA o la NSA." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:709 +msgid "" +"This field will default to: http://127.0.0.1 if you do not enter a value." +msgstr "" +"Este campo será por defecto: http://127.0.0.1 si no se introduce un valor." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:711 +msgid "Useful Tip:" +msgstr "Consejo útil:" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:713 +msgid "" +"It's a good idea to not redirect attempted brute force login attempts to " +"your site because it increases the load on your server." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:715 +msgid "" +"Redirecting a hacker or malicious bot back to \"http://127.0.0.1\" is ideal " +"because it deflects them back to their own local host and puts the load on " +"their server instead of yours." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:722 +msgid "My Site Has Posts Or Pages Which Are Password Protected" +msgstr "Mi sitio tiene mensajes o páginas que están protegidos por contraseña" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:725 +msgid "" +"Check this if you are using the native WordPress password protection feature " +"for some or all of your blog posts or pages." +msgstr "" +"Seleccione esta opción si está utilizando la función de protección con " +"contraseña nativa de WordPress para algunas o todas las entradas de su blog " +"o páginas." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:730 +msgid "" +"In the cases where you are protecting some of your posts or pages using the " +"in-built WordPress password protection feature, a few extra lines of " +"directives and exceptions need to be added to your .htacces file so that " +"people trying to access pages are not automatically blocked." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:732 +msgid "" +"By enabling this checkbox the plugin will add the necessary rules and " +"exceptions to your .htacces file so that people trying to access these pages " +"are not automatically blocked." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:734 +msgid "Helpful Tip:" +msgstr "Consejo útil:" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:736 +msgid "" +"If you do not use the WordPress password protection feature for your posts " +"or pages then it is highly recommended that you leave this checkbox disabled." +msgstr "" +"Si no utiliza la función de protección de contraseña de WordPress para sus " +"posts o páginas entonces es altamente recomendable que deje esta opción sin " +"marcar." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:743 +msgid "My Site Has a Theme or Plugins Which Use AJAX" +msgstr "Mi sitio tiene un tema o plugins que utilizan AJAX" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:746 +msgid "Check this if your site uses AJAX functionality." +msgstr "marque esto si su sitio utiliza la funcionalidad de AJAX." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:751 +msgid "" +"In the cases where your WordPress installation has a theme or plugins which " +"use AJAX, a few extra lines of directives and exceptions need to be added to " +"your .htacces file to prevent AJAX requests from being automatically blocked " +"by the brute force prevention feature." +msgstr "" +"En los casos en que la instalación de WordPress tiene un tema o plugins que " +"utilizan AJAX, algunas líneas adicionales de las directivas y las " +"excepciones se deben agregar a su archivo  .htacces para evitar que las " +"peticiones AJAX se bloqueen automáticamente por la función de prevención de " +"la fuerza bruta." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:753 +msgid "" +"By enabling this checkbox the plugin will add the necessary rules and " +"exceptions to your .htacces file so that AJAX operations will work as " +"expected." +msgstr "" +"Al activar esta casilla el plugin añadirá las reglas y excepciones " +"necesarias para su archivo .htacces para que las operaciones de AJAX " +"funcionen como se esperaba." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:768 +msgid "The cookie test was successful. You can now enable this feature." +msgstr "La prueba de cookies fue un éxito. Ahora puede activar esta función." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:771 +msgid "Save Feature Settings" +msgstr "Guardar configuración de característica" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:778 +msgid "" +"The cookie test failed on this server. So this feature cannot be used on " +"this site." +msgstr "" +"La prueba de cokkie ha fallado en este servidor. Así que esta función no se " +"puede utilizar en este sitio." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:784 +msgid "" +"Before using this feature you are required to perform a cookie test first. " +"This is to make sure that your browser cookie is working correctly and that " +"you won't lock yourself out." +msgstr "" +"Antes de utilizar esta función es necesario que realice una prueba de la " +"galleta en primer lugar. Esto es para asegurarse de que su cookie del " +"navegador está funcionando correctamente y que no se bloquee usted mismo." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:786 +msgid "Perform Cookie Test" +msgstr "Realice la prueba de Cookie" + +#: all-in-one-wp-security/admin/wp-security-list-acct-activity.php:79 +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:86 +#: all-in-one-wp-security/admin/wp-security-list-locked-ip.php:80 +#: all-in-one-wp-security/admin/wp-security-list-locked-ip.php:91 +#: all-in-one-wp-security/admin/wp-security-list-login-fails.php:78 +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:82 +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:93 +msgid "Please select some records using the checkboxes" +msgstr "" +"Por favor seleccione algunos registros utilizando las casillas de " +"verificación" + +#: all-in-one-wp-security/admin/wp-security-list-acct-activity.php:107 +#: all-in-one-wp-security/admin/wp-security-list-login-fails.php:107 +msgid "The selected entries were deleted successfully!" +msgstr "Las entradas seleccionadas se eliminaron con éxito!" + +#: all-in-one-wp-security/admin/wp-security-list-acct-activity.php:120 +#: all-in-one-wp-security/admin/wp-security-list-login-fails.php:119 +msgid "The selected entry was deleted successfully!" +msgstr "La entrada seleccionada se ha eliminado correctamente!" + +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:139 +msgid "" +"The selected IP addresses were saved in the blacklist configuration settings." +msgstr "" +"Las direcciones IP seleccionadas se guardarán en los ajustes de " +"configuración de lista negra." + +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:153 +msgid "" +"The .htaccess file was successfully modified to include the selected IP " +"addresses." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:159 +msgid "" +"NOTE: The .htaccess file was not modified because you have disabled the " +"\"Enable IP or User Agent Blacklisting\" check box." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:160 +#, php-format +msgid "" +"To block these IP addresses you will need to enable the above flag in the %s " +"menu" +msgstr "" +"Para bloquear estas direcciones IP que tendrá que habilitar el indicador de " +"arriba en el menú de la %s" + +#: all-in-one-wp-security/admin/wp-security-list-locked-ip.php:115 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:748 +msgid "The selected IP ranges were unlocked successfully!" +msgstr "Los rangos de IP seleccionados fueron desbloqueados con éxito!" + +#: all-in-one-wp-security/admin/wp-security-list-locked-ip.php:124 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:757 +msgid "The selected IP range was unlocked successfully!" +msgstr "El rango de IP seleccionada fue desbloqueado correctamente!" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:118 +msgid "The selected accounts were approved successfully!" +msgstr "Las cuentas seleccionadas se aprobaron con éxito!" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:125 +msgid "The selected account was approved successfully!" +msgstr "La cuenta seleccionada fue aprobado con éxito!" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:146 +msgid "The selected accounts were deleted successfully!" +msgstr "Las cuentas seleccionadas se eliminaron con éxito!" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:154 +msgid "The selected account was deleted successfully!" +msgstr "La cuenta seleccionada se ha eliminado correctamente!" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:22 +msgid "Visitor Lockout" +msgstr "Bloqueo de visitante" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:88 +msgid "Site lockout feature settings saved!" +msgstr "Configuración de la función de bloqueo del sitio guardados!" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:93 +msgid "General Visitor Lockout" +msgstr "Bloqueo general de visita" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:99 +msgid "" +"This feature allows you to put your site into \"maintenance mode\" by " +"locking down the front-end to all visitors except logged in users with super " +"admin privileges." +msgstr "" +"Esta característica le permite poner su sitio en \"modo de mantenimiento \" " +"al bloquear el front-end para todos los visitantes, excepto los usuarios " +"registrados con privilegios de administrador." + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:100 +msgid "" +"Locking your site down to general visitors can be useful if you are " +"investigating some issues on your site or perhaps you might be doing some " +"maintenance and wish to keep out all traffic for security reasons." +msgstr "" +"Bloqueo de su sitio a los visitantes en general puede ser útil si usted está " +"investigando algunos problemas en su sitio o tal vez usted podría estar " +"haciendo algo de mantenimiento y desea mantener fuera todo el tráfico por " +"motivos de seguridad." + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:105 +msgid "Enable Front-end Lockout" +msgstr "Activar Bloqueo Front-end" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:108 +msgid "" +"Check this if you want all visitors except those who are logged in as " +"administrator to be locked out of the front-end of your site." +msgstr "" +"Seleccione esta opción si desea que todos los visitantes, excepto los que se " +"ha iniciado sesión como administrador para bloquear fuera del front-end de " +"su sitio." + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:112 +msgid "Enter a Message:" +msgstr "Escriba un mensaje:" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:124 +msgid "" +"Enter a message you wish to display to visitors when your site is in " +"maintenance mode." +msgstr "" +"Escriba un mensaje que desea mostrar a los visitantes cuando su sitio está " +"en modo de mantenimiento." + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:131 +msgid "Save Site Lockout Settings" +msgstr "Guardar la configuración de bloqueo de sitio" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:25 +msgid "General Settings" +msgstr "Configuración general" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:28 +msgid "WP Meta Info" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:95 +msgid "All the security features have been disabled successfully!" +msgstr "Todos los elementos de seguridad han desactivado con éxito!" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:99 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:126 +msgid "" +"Could not write to the .htaccess file. Please restore your .htaccess file " +"manually using the restore functionality in the \".htaccess File\"." +msgstr "" +"No se pudo escribir en el archivo .htaccess.. Por favor, restaure el " +"archivo .htaccess manualmente utilizando la funcionalidad de restauración en " +"\".htaccess archivo \"." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:104 +msgid "" +"Could not write to the wp-config.php. Please restore your wp-config.php file " +"manually using the restore functionality in the \"wp-config.php File\"." +msgstr "" +"No se pudo escribir en el wp-config.php. Por favor, restaurar el archivo wp-" +"config.php manualmente utilizando la funcionalidad de restauración en \"wp-" +"config.php \"." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:122 +msgid "All firewall rules have been disabled successfully!" +msgstr "Todas las reglas del firewall se han desactivado con éxito!" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:136 +msgid "WP Security Plugin" +msgstr "WP Plugin de seguridad" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:138 +msgid "" +"Thank you for using our WordPress security plugin. There are a lot of " +"security features in this plugin." +msgstr "" +"Gracias por utilizar nuestro plugin de seguridad de WordPress. Hay una gran " +"cantidad de características de seguridad en este plugin." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:139 +msgid "" +"Go through each menu items and enable the security options to add more " +"security to your site. Start by activating the basic features first." +msgstr "" +"Ir a través de cada uno de los elementos del menú y habilite las opciones de " +"seguridad para añadir más seguridad a su sitio. Comience por la activación " +"de las funciones básicas primero." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:140 +msgid "" +"It is a good practice to take a backup of your .htaccess file, database and " +"wp-config.php file before activating the security features. This plugin has " +"options that you can use to backup those resources easily." +msgstr "" +"Es una buena práctica tener una copia de seguridad de su archivo. htaccess, " +"base de datos y el archivo wp-config.php antes de activar los dispositivos " +"de seguridad. Este plugin tiene opciones que puede utilizar para copia de " +"seguridad de esos recursos con facilidad." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:143 +msgid "Backup your database" +msgstr "Respaldar base de datos" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:144 +msgid "Backup .htaccess file" +msgstr "Respaldar archivo .htaccess" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:145 +msgid "Backup wp-config.php file" +msgstr "Respaldar archivo wp-config.php" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:151 +msgid "Disable Security Features" +msgstr "Desactivar las características de seguridad" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:157 +msgid "" +"If you think that some plugin functionality on your site is broken due to a " +"security feature you enabled in this plugin, then use the following option " +"to turn off all the security features of this plugin." +msgstr "" +"Si usted piensa que algunas funciones en su sitio se rompieron debido a una " +"característica de seguridad que se ha activado con este plugin, a " +"continuación, utilice la siguiente opción para desactivar todas las " +"funciones de seguridad de este plugin." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:161 +msgid "Disable All Security Features" +msgstr "Desactivar todas las características de seguridad" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:167 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:177 +msgid "Disable All Firewall Rules" +msgstr "Deshabilitar todas las reglas del cortafuegos" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:173 +msgid "" +"This feature will disable all firewall rules which are currently active in " +"this plugin and it will also delete these rules from your .htacess file. Use " +"it if you think one of the firewall rules is causing an issue on your site." +msgstr "" +"Esta función deshabilita todas las reglas del cortafuegos que se encuentran " +"activas en este plugin y también eliminar estas reglas de su archivo " +"htacess. Úselo si usted piensa una de las reglas de firewall está causando " +"un problema en su sitio." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:206 +msgid "" +"Your .htaccess file was successfully backed up! Using an FTP program go to " +"the \"backups\" directory of this plugin to save a copy of the file to your " +"computer." +msgstr "" +"Su .htaccess fue respaldado con éxito! Usando un programa de FTP vaya a las " +"\"copias de seguridad \" de este plugin para guardar una copia del archivo " +"en su equipo." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:216 +msgid "" +"htaccess file rename failed during backup. Please check your root directory " +"for the backup file using FTP." +msgstr "" +"El renombrado de su archivo .htaccess falló durante la copia de seguridad. " +"Por favor, consulte el directorio raíz para el archivo de copia de seguridad " +"mediante FTP." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:222 +msgid "htaccess backup failed." +msgstr "htaccess fallo respaldo." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:237 +msgid "Please choose a .htaccess to restore from." +msgstr "Por favor, elija un htaccess a restaurar." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:253 +msgid "" +"htaccess file restore failed. Please attempt to restore the .htaccess " +"manually using FTP." +msgstr "" +"htaccess restauración fracasó. Por favor, intente restaurar el archivo. " +"Htaccess manualmente mediante FTP." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:257 +msgid "Your .htaccess file has successfully been restored!" +msgstr "Su archivo .htaccess ha sido restaurado completamente!" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:263 +msgid "" +"htaccess Restore operation failed! Please check the contents of the file you " +"are trying to restore from." +msgstr "" +"htaccess operación Restaurar falló! Por favor, compruebe el contenido del " +"archivo que está intentando restaurar." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:269 +msgid ".htaccess File Operations" +msgstr ".htaccess operaciones de archivo" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:272 +msgid "" +"Your \".htaccess\" file is a key component of your website's security and it " +"can be modified to implement various levels of protection mechanisms." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:273 +msgid "" +"This feature allows you to backup and save your currently active .htaccess " +"file should you need to re-use the the backed up file in the future." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:274 +msgid "" +"You can also restore your site's .htaccess settings using a backed up ." +"htaccess file." +msgstr "" +"También puede restaurar la configuración htaccess de su sitio utilizando una " +"copia de seguridad del archivo htaccess." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:288 +msgid "Save the current .htaccess file" +msgstr "Guarde el archivo actual. htaccess" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:292 +msgid "" +"Click the button below to backup and save the currently active .htaccess " +"file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:293 +msgid "Backup .htaccess File" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:297 +msgid "Restore from a backed up .htaccess file" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:303 +msgid ".htaccess file to restore from" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:309 +msgid "" +"After selecting your file, click the button below to restore your site using " +"the backed up htaccess file (htaccess_backup.txt)." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:315 +msgid "Restore .htaccess File" +msgstr "Restaurar archivo .htaccess " + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:319 +msgid "View Contents of the currently active .htaccess file" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:348 +msgid "Please choose a wp-config.php file to restore from." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:364 +msgid "" +"wp-config.php file restore failed. Please attempt to restore this file " +"manually using FTP." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:368 +msgid "Your wp-config.php file has successfully been restored!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:374 +msgid "" +"wp-config.php Restore operation failed! Please check the contents of the " +"file you are trying to restore from." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:380 +msgid "wp-config.php File Operations" +msgstr "Operaciones archivo wp-config.php" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:383 +msgid "" +"Your \"wp-config.php\" file is one of the most important in your WordPress " +"installation. It is a primary configuration file and contains crucial things " +"such as details of your database and other critical components." +msgstr "" +"Su archivo \"wp-config.php \" es uno de los más importantes de tu " +"instalación de WordPress. Se trata de un archivo de configuración principal " +"y contiene cosas cruciales como los detalles de su base de datos y otros " +"componentes críticos." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:384 +msgid "" +"This feature allows you to backup and save your currently active wp-config." +"php file should you need to re-use the the backed up file in the future." +msgstr "" +"Esta característica le permite realizar copias de seguridad y guardar el " +"archivo wp-config.php actualmente activo en caso de que tenga que volver a " +"utilizar el archivo de copia de seguridad en el futuro." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:385 +msgid "" +"You can also restore your site's wp-config.php settings using a backed up wp-" +"config.php file." +msgstr "" +"También puede restaurar la configuración wp-config.php de tu sitio con su " +"copia de seguridad del archivo wp-config.php ." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:399 +msgid "Save the current wp-config.php file" +msgstr "Guarde el archivo actual wp-config.php" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:403 +msgid "" +"Click the button below to backup and download the contents of the currently " +"active wp-config.php file." +msgstr "" +"Haga clic en el botón de abajo para hacer una copia de seguridad y descargar " +"el archivo wp-config.php actualmente activo." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:404 +msgid "Backup wp-config.php File" +msgstr "Respaldar archivo wp-config.php" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:409 +msgid "Restore from a backed up wp-config file" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:415 +msgid "wp-config file to restore from" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:421 +msgid "" +"After selecting your file click the button below to restore your site using " +"the backed up wp-config file (wp-config.php.backup.txt)." +msgstr "" +"Después de seleccionar el archivo, haga clic en el botón de abajo para " +"restaurar su sitio utilizando el archivo wp-config respaldado (wp-config.php." +"backup.txt)." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:427 +msgid "Restore wp-config File" +msgstr "Restaurar Archivo wp-config" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:431 +msgid "View Contents of the currently active wp-config.php file" +msgstr "Ver contenido actual del archivo wp-config.php" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:466 +msgid "WP Generator Meta Tag" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:469 +msgid "" +"Wordpress generator automatically adds some meta information inside the " +"\"head\" tags of every page on your site's front end. Below is an example of " +"this:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:471 +msgid "" +"The above meta information shows which version of WordPress your site is " +"currently running and thus can help hackers or crawlers scan your site to " +"see if you have an older version of WordPress or one with a known exploit." +msgstr "" +"La información META de arriba muestra la versión de WordPress que su sitio " +"está actualmente en ejecución y por lo tanto puede ayudar a los piratas " +"informáticos o rastreadores escanean su sitio para ver si tiene una versión " +"anterior de WordPress o uno con una debilidad conocida." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:472 +msgid "" +"This feature will allow you to remove the WP generator meta info from your " +"site's pages." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:478 +msgid "WP Generator Meta Info" +msgstr "Generador WP Meta info" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:490 +msgid "Remove WP Generator Meta Info" +msgstr "Eliminar generador WP Meta Info" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:493 +msgid "" +"Check this if you want to remove the meta info produced by WP Generator from " +"all pages" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:23 +msgid "Comment SPAM" +msgstr "Comentario SPAM" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:24 +msgid "Comment SPAM IP Monitoring" +msgstr "Monitoreo IP comentario SPAM" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:111 +msgid "Comment SPAM Settings" +msgstr "Ajustes comentario SPAM" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:116 +msgid "Add Captcha To Comments Form" +msgstr "Añadir Captcha al formulario de Comentarios." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:120 +msgid "" +"This feature will add a simple math captcha field in the WordPress comments " +"form." +msgstr "" +"Esta característica añadirá un campo Captcha matemática simple en el " +"formulario de comentarios." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:137 +msgid "Enable Captcha On Comment Forms" +msgstr "Habilitar Captcha en formulario de comentario" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:140 +msgid "Check this if you want to insert a captcha field on the comment forms" +msgstr "" +"Seleccione esta opción si desea insertar un campo CAPTCHA en los formularios " +"de comentarios" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:148 +msgid "Block Spambot Comments" +msgstr "Bloquear Comentarios de SpamBot" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:152 +msgid "" +"A large portion of WordPress blog comment SPAM is mainly produced by " +"automated bots and not necessarily by humans. " +msgstr "" +"Una gran parte de los comentarios no deseados en WordPress se produce " +"principalmente por los robots automatizados y no necesariamente por los " +"seres humanos." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:153 +msgid "" +"This feature will greatly minimize the useless and unecessary traffic and " +"load on your server resulting from SPAM comments by blocking all comment " +"requests which do not originate from your domain." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:170 +msgid "Block Spambots From Posting Comments" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:173 +msgid "" +"Check this if you want to apply a firewall rule which will block comments " +"originating from spambots." +msgstr "" +"Seleccione esta opción si desea aplicar una regla de firewall que bloquea " +"los comentarios procedentes de spam." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:177 +msgid "" +"This feature will implement a firewall rule to block all comment attempts " +"which do not originate from your domain." +msgstr "" +"Esta característica implementa una regla de firewall para bloquear todo " +"intento de comentario que no sean originarios de su dominio." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:178 +msgid "" +"A legitimate comment is one which is submitted by a human who physically " +"fills out the comment form and clicks the submit button. For such events, " +"the HTTP_REFERRER is always set to your own domain." +msgstr "" +"Un comentario legítimo es aquel que se presenta por un ser humano que llena " +"físicamente el formulario de comentarios y pulsa el botón enviar. Para este " +"tipo de eventos, el HTTP_REFERRER siempre se establece en su propio dominio." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:179 +msgid "" +"A comment submitted by a spambot is done by directly calling the comments." +"php file, which usually means that the HTTP_REFERRER value is not your " +"domain and often times empty." +msgstr "" +"Un comentario enviado por un robot de spam se hace llamando directamente el " +"archivo comments.php, que por lo general significa que el valor " +"HTTP_REFERRER no es su dominio y muchas veces es vacía." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:180 +msgid "" +"This feature will check and block comment requests which are not referred by " +"your domain thus greatly reducing your overall blog SPAM and PHP requests " +"done by the server to process these comments." +msgstr "" +"Esta función comprobará y peticiones de bloques de comentario que no son " +"referidos por su dominio, lo que reduce considerablemente sus peticiones de " +"spam en su blog y PHP realizadas por el servidor para procesar estos " +"comentarios." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:207 +msgid "Nonce check failed for list SPAM comment IPs!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:213 +msgid "" +"You entered a non numeric value for the minimum SPAM comments per IP field. " +"It has been set to the default value." +msgstr "" +"Ha introducido un valor no numérico para las observaciones mínimas de SPAM " +"por campo de la propiedad intelectual. Se ha establecido en el valor " +"predeterminado." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:225 +#, php-format +msgid "" +"Displaying results for IP addresses which have posted a minimum of %s SPAM " +"comments" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:241 +msgid "" +"This tab displays a list of the IP addresses of the people or bots who have " +"left SPAM comments on your site." +msgstr "" +"Esta ficha muestra una lista de las direcciones IP de las personas o los " +"robots que han dejado comentarios SPAM en su sitio." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:242 +msgid "" +"This information can be handy for identifying the most persistent IP " +"addresses or ranges used by spammers." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:243 +msgid "" +"By inspecting the IP address data coming from spammers you will be in a " +"better position to determine which addresses or address ranges you should " +"block by adding them to your blacklist." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:244 +msgid "" +"To add one or more of the IP addresses displayed in the table below to your " +"blacklist, simply click the \"Block\" link for the individual row or select " +"more than one address \n" +" using the checkboxes and then choose the \"block" +"\" option from the Bulk Actions dropdown list and click the \"Apply\" button." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:250 +msgid "List SPAMMER IP Addresses" +msgstr "Lista direcciones IP de Spammer" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:256 +msgid "Minimum number of SPAM comments per IP" +msgstr "Número mínimo de comentarios SPAM por IP" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:258 +msgid "" +"This field allows you to list only those IP addresses which have been used " +"to post X or more SPAM comments." +msgstr "" +"Este campo le permite listar sólo las direcciones IP que se han utilizado " +"para publicar X o más comentarios SPAM." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:262 +msgid "" +"Example 1: Setting this value to \"0\" or \"1\" will list ALL IP addresses " +"which were used to submit SPAM comments." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:263 +msgid "" +"Example 2: Setting this value to \"5\" will list only those IP addresses " +"which were used to submit 5 SPAM comments or more on your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:270 +msgid "Find IP Addresses" +msgstr "Buscar direcciones IP" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:274 +msgid "SPAMMER IP Address Results" +msgstr "Resultados de direcciones IP SPAMMER" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:280 +#: all-in-one-wp-security/classes/wp-security-utility.php:150 +msgid "" +"The plugin has detected that you are using a Multi-Site WordPress " +"installation." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:281 +msgid "Only the \"superadmin\" can block IP addresses from the main site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:282 +msgid "" +"Take note of the IP addresses you want blocked and ask the superadmin to add " +"these to the blacklist using the \"Blacklist Manager\" on the main site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:29 +msgid "WP Username" +msgstr "WP Nombre de usuario" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:30 +msgid "Display Name" +msgstr "Mostrar nombre" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:31 +msgid "Password" +msgstr "Contraseña" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:85 +msgid "Admin User Security" +msgstr "Seguridad del usuario administrador" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:88 +msgid "" +"By default, WordPress sets the administrator username to \"admin\" at " +"installation time." +msgstr "" +"Por defecto, WordPress establece el nombre de usuario administrador de " +"\"admin \" durante la instalación." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:89 +msgid "" +"A lot of hackers try to take advantage of this information by attempting " +"\"Brute Force Login Attacks\" where they repeatedly try to guess the " +"password by using \"admin\" for username." +msgstr "" +"Una gran cantidad de piratas informáticos tratan de tomar ventaja de esta " +"información por intentar \"Ataques de fuerza bruta\", donde en varias " +"ocasiones tratan de adivinar la contraseña con el usuario \"admin \"." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:90 +msgid "" +"From a security perspective, changing the default \"admin\" user name is one " +"of the first and smartest things you should do on your site." +msgstr "" +"Desde una perspectiva de seguridad, cambiar el nombre de usuario \"admin \" " +"por defecto es una de las primeras y más inteligentes cosas que debe hacer " +"en su sitio." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:91 +msgid "" +"This feature will allow you to change your default \"admin\" user name to a " +"more secure name of your choosing." +msgstr "" +"Esta función le permitirá cambiar su nombre de usuario por defecto \"admin " +"\" por un nombre más seguro de su elección." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:98 +msgid "List of Administrator Accounts" +msgstr "Lista de cuentas de administrador" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:107 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:33 +msgid "Change Admin Username" +msgstr "Cambiar Nombre de usuario Admin" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:115 +msgid "" +"Your site currently has an account which uses the default \"admin\" " +"username. \n" +" It is highly recommended that you change this name to " +"something else. \n" +" Use the following field to change the admin username." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:123 +msgid "New Admin Username" +msgstr "Nuevo nombre de usuario" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:125 +msgid "Choose a new username for admin." +msgstr "Elija un nuevo nombre de usuario de administrador." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:129 +msgid "Change Username" +msgstr "Cambiar nombre usuario" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:131 +msgid "" +"NOTE: If you are currently logged in as \"admin\" you will be automatically " +"logged out after changing your username and will be required to log back in." +msgstr "" +"NOTA: Si está conectado como \"admin \" se cerrará la sesión automáticamente " +"después de cambiar su nombre de usuario y tendrá que volver a iniciar sesión" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:138 +msgid "No action required! " +msgstr "Ninguna acción requerida!" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:140 +msgid "" +"Your site does not have any account which uses the default \"admin\" " +"username. " +msgstr "" +"Su sitio no tiene ninguna cuenta que utiliza el valor por defecto \"admin \" " +"nombre de usuario." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:141 +msgid "This is good security practice." +msgstr "Esta es una buena práctica de seguridad." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:153 +msgid "Display Name Security" +msgstr "Nombre a visualizar de Seguridad" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:156 +msgid "" +"When you submit a post or answer a comment, WordPress will usually display " +"your \"nickname\"." +msgstr "" +"Cuando usted envía un mensaje o responder a un comentario, WordPress se le " +"mostrará su \"nickname\"." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:157 +msgid "" +"By default the nickname is set to the login (or user) name of your account." +msgstr "" +"Por defecto, el apodo se establece en el inicio de sesión (o usuario) nombre " +"de su cuenta." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:158 +msgid "" +"From a security perspective, leaving your nickname the same as your user " +"name is bad practice because it gives a hacker at least half of your " +"account's login credentials." +msgstr "" +"Desde una perspectiva de seguridad, dejando a su apodo el mismo que el " +"nombre de usuario es una mala práctica, ya que da a un hacker por lo menos " +"la mitad de las credenciales de acceso de su cuenta." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:159 +msgid "" +"Therefore to further tighten your site's security you are advised to change " +"your nickname and Display name to be " +"different from your Username." +msgstr "" +"Por lo tanto para apretar aún más la seguridad de su sitio se le recomienda " +"cambiar su apodo y su nombre visible " +"para ser diferente de su usuario" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:165 +msgid "Modify Accounts With Identical Login Name & Display Name" +msgstr "Modificar cuentas con nombre de usuario y nombre visible" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:174 +msgid "" +"Your site currently has the following accounts which have an identical login " +"name and display name." +msgstr "" +"Su sitio tiene actualmente las siguientes cuentas que tienen un nombre de " +"usuario idénticos y nombre para mostrar." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:175 +msgid "Click on the link to edit the settings of that particular user account" +msgstr "" +"Haga clic en el enlace para editar la configuración de la cuenta de usuario " +"en particular" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:190 +msgid "No action required." +msgstr "No se requiere ninguna acción." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:191 +msgid "" +"Your site does not have a user account where the display name is identical " +"to the username." +msgstr "" +"Su sitio no tiene una cuenta de usuario en el que el nombre para mostrar es " +"idéntico al nombre de usuario." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:202 +msgid "Password Tool" +msgstr "Herramienta de contraseñas" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:205 +msgid "" +"Poor password selection is one of the most common weak points of many sites " +"and is usually the first thing a hacker will try to exploit when attempting " +"to break into your site." +msgstr "" +"Mala selección contraseña es uno de los puntos débiles más comunes de muchos " +"sitios y suele ser la primera cosa que un hacker intentará explotar al " +"intentar entrar en su sitio." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:206 +msgid "" +"Many people fall into the trap of using a simple word or series of numbers " +"as their password. Such a predictable and simple password would take a " +"competent hacker merely minutes to guess your password by using a simple " +"script which cycles through the easy and most common combinations." +msgstr "" +"Muchas personas caen en la trampa de utilizar una simple palabra o serie de " +"números como su contraseña. Esta contraseña predecible y simple tomaría un " +"hacker competente a escasos minutos de adivinar la contraseña utilizando un " +"simple script que ciclos a través de las combinaciones fáciles y más comunes." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:207 +msgid "" +"The longer and more complex your password is the harder it is for hackers to " +"\"crack\" because more complex passwords require much greater computing " +"power and time." +msgstr "" +"Cuanto más larga y más compleja es su contraseña, más difícil es para los " +"hacker \"crakearlas\" ya que las contraseñas más complejas requieren mucha " +"más potencia y tiempo de cálculo." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:208 +msgid "" +"This section contains a useful password strength tool which you can use to " +"check whether your password is sufficiently strong enough." +msgstr "" +"Esta sección contiene una herramienta de seguridad para contraseña que se " +"puede utilizar para comprobar si la contraseña es lo suficientemente fuerte." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:213 +msgid "Password Strength Tool" +msgstr "Herramienta de Seguridad de contraseña" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:218 +msgid "Start typing a password." +msgstr "Comience a escribir una contraseña." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:221 +msgid "It would take a desktop PC approximately" +msgstr "Haría falta una PC de escritorio, aproximadamente" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:222 +msgid "1 sec" +msgstr "1 seg" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:222 +msgid "to crack your password!" +msgstr "para descifrar la contraseña!" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:227 +msgid "Password Strength" +msgstr "Fuerza dela contraseña" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:243 +msgid "Nonce check failed on admin username change operation!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:250 +msgid "Username " +msgstr "nombre usuario" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:250 +msgid " already exists. Please enter another value. " +msgstr " ya existe. Por favor, introduzca otro valor." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:266 +msgid "The database update operation of the user account failed!" +msgstr "" +"La operación de actualización de base de datos de la cuenta de usuario ha " +"fallado!" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:293 +msgid "You entered an invalid username. Please enter another value. " +msgstr "" +"Ha introducido un nombre de usuario inválido. Por favor, introduzca otro " +"valor." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:297 +msgid "Please enter a value for your username. " +msgstr "Por favor, introduzca un valor para el nombre de usuario." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:304 +msgid "Username Successfully Changed!" +msgstr "Nombre de usuario cambió con éxito!" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:324 +msgid "Account Login Name" +msgstr "Nombre de cuenta de usuario " + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:28 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:41 +msgid "Login Captcha" +msgstr "Login Captcha" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:29 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:407 +msgid "Login Whitelist" +msgstr "Lista blanca de ingreso" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:30 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:519 +msgid "Failed Login Records" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:31 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:47 +msgid "Force Logout" +msgstr "Forzar salir" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:32 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:653 +msgid "Account Activity Logs" +msgstr "Registros de Actividad de la cuenta" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:100 +msgid "" +"You entered a non numeric value for the max login attempts field. It has " +"been set to the default value." +msgstr "" +"Ha introducido un valor no numérico para el campo de intentos de conexión " +"máx. Se ha establecido en el valor predeterminado." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:107 +msgid "" +"You entered a non numeric value for the login retry time period field. It " +"has been set to the default value." +msgstr "" +"Ha introducido un valor no numérico para el inicio de sesión de reintento " +"campo período de tiempo. Se ha establecido en el valor predeterminado." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:114 +msgid "" +"You entered a non numeric value for the lockout time length field. It has " +"been set to the default value." +msgstr "" +"Ha introducido un valor no numérico para el campo de longitud de tiempo de " +"bloqueo. Se ha establecido en el valor predeterminado." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:159 +msgid "Login Lockdown Configuration" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:163 +msgid "One of the ways hackers try to compromise sites is via a " +msgstr "" +"Una de las maneras que los piratas informáticos intentan comprometer sitios " +"es a través de un" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:163 +msgid "Brute Force Login Attack" +msgstr "Ataque de ingreso por fuerza bruta" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:164 +msgid "" +"This is where attackers use repeated login attempts until they guess the " +"password." +msgstr "" +"Aquí es donde los atacantes utilizan intentos de acceso repetidos hasta que " +"adivinen la contraseña." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:165 +msgid "" +"Apart from choosing strong passwords, monitoring and blocking IP addresses " +"which are involved in repeated login failures in a short period of time is a " +"very effective way to stop these types of attacks." +msgstr "" +"Aparte de elegir contraseñas seguras, seguimiento y bloqueo de direcciones " +"IP que están involucrados en errores de entrada repetidas en un período " +"corto de tiempo es una forma muy efectiva para detener este tipo de ataques." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:166 +#, php-format +msgid "" +"You may also want to checkout our %s feature for another secure way to " +"protect against these types of attacks." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:171 +msgid "Login Lockdown Options" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:183 +msgid "Enable Login Lockdown Feature" +msgstr "Activar característica de bloqueo de inicio de sesión" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:186 +msgid "" +"Check this if you want to enable the login lockdown feature and apply the " +"settings below" +msgstr "" +"Seleccione esta opción si desea activar la función de bloqueo de inicio de " +"sesión y aplicar los siguientes ajustes" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:190 +msgid "Max Login Attempts" +msgstr "Intentos maximos de ingreso" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:192 +msgid "" +"Set the value for the maximum login retries before IP address is locked out" +msgstr "" +"Defina el valor para los reintentos máximos de inicio de sesión antes de que " +"la dirección IP se bloquee" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:196 +msgid "Login Retry Time Period (min)" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:198 +msgid "" +"If the maximum number of failed login attempts for a particular IP address " +"occur within this time period the plugin will lock out that address" +msgstr "" +"Si el número máximo de intentos de conexión fallidos para una determinada " +"dirección IP se producen dentro de este período de tiempo el plugin se " +"bloqueará esa dirección" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:202 +msgid "Time Length of Lockout (min)" +msgstr "Duración del tiempo de bloqueo (min)" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:204 +msgid "" +"Set the length of time for which a particular IP address will be prevented " +"from logging in" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:208 +msgid "Display Generic Error Message" +msgstr "Mostrar mensaje de error genérico" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:211 +msgid "" +"Check this if you want to show a generic error message when a login attempt " +"fails" +msgstr "" +"Seleccione esta opción si desea mostrar un mensaje de error genérico cuando " +"falla un intento de inicio de sesión" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:215 +msgid "Instantly Lockout Invalid Usernames" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:218 +msgid "" +"Check this if you want to instantly lockout login attempts with usernames " +"which do not exist on your system" +msgstr "" +"Seleccione esta opción si desea bloquear de inmediato los intentos de " +"conexión con los nombres de usuario que no existen en su sistema" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:223 +msgid "Notify By Email" +msgstr "Notificar por correo" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:226 +msgid "" +"Check this if you want to receive an email when someone has been locked out " +"due to maximum failed login attempts" +msgstr "" +"Seleccione esta opción si desea recibir un correo electrónico cuando alguien " +"ha sido bloqueada debido a un máximo de intentos de conexión fallidos" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:236 +msgid "Currently Locked Out IP Address Ranges" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:290 +msgid "" +"This feature allows you to add a captcha form on the WordPress login page." +msgstr "" +"Esta característica le permite añadir un formulario Captcha en la página de " +"inicio de sesión de WordPress." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:291 +msgid "" +"Users who attempt to login will also need to enter the answer to a simple " +"mathematical question - if they enter the wrong answer, the plugin will not " +"allow them login even if they entered the correct username and password." +msgstr "" +"Los usuarios que intenten iniciar sesión también tendrán que entrar en la " +"respuesta a una pregunta matemática simple - si entran en la respuesta " +"incorrecta, el plugin no permitirá que ingresa, incluso si entraron en el " +"nombre de usuario y contraseña correctos." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:292 +msgid "" +"Therefore, adding a captcha form on the login page is another effective yet " +"simple \"Brute Force\" prevention technique." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:298 +msgid "Login Form Captcha Settings" +msgstr "Opciones de Capcha del formulario de ingreso" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:309 +msgid "Enable Captcha On Login Page" +msgstr "Habilitar capcha en pagina de ingreso" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:312 +msgid "Check this if you want to insert a captcha form on the login page" +msgstr "" +"Seleccione esta opción si desea insertar un formulario Captcha en la página " +"de inicio de sesión" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:318 +msgid "Lost Password Form Captcha Settings" +msgstr "Opciones de Capcha para recuperar contraseña" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:328 +msgid "Enable Captcha On Lost Password Page" +msgstr "Habilitar Captcha en Página de recuperar contraseña" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:331 +msgid "" +"Check this if you want to insert a captcha form on the lost password page" +msgstr "" +"Seleccione esta opción si desea insertar un formulario Captcha en la página " +"para recuperar contraseña" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:353 +msgid "Nonce check failed for save whitelist settings!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:410 +msgid "" +"The All In One WP Security Whitelist feature gives you the option of only " +"allowing certain IP addresses or ranges to have access to your WordPress " +"login page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:411 +msgid "" +"This feature will deny login access for all IP addresses which are not in " +"your whitelist as configured in the settings below." +msgstr "" +"Esta característica va a negar el acceso de inicio de sesión para todas las " +"direcciones IP que no están en su lista blanca como se ha configurado en los " +"ajustes de abajo." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:412 +msgid "" +"The plugin achieves this by writing the appropriate directives to your ." +"htaccess file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:413 +msgid "" +"By allowing/blocking IP addresses via the .htaccess file your are using the " +"most secure first line of defence because login access will only be granted " +"to whitelisted IP addresses and other addresses will be blocked as soon as " +"they try to access your login page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:420 +#, php-format +msgid "" +"Attention: If in addition to enabling the white list feature, you also have " +"the %s feature enabled, you will still need to use your secret word " +"in the URL when trying to access your WordPress login page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:421 +msgid "" +"These features are NOT functionally related. Having both of them enabled on " +"your site means you are creating 2 layers of security." +msgstr "" +"Estas funciones no están relacionadas funcionalmente. Tener ambos habilitado " +"en su sitio significa que va a crear 2 capas de seguridad." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:426 +msgid "Login IP Whitelist Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:437 +msgid "Enable IP Whitelisting" +msgstr "Habilitar lista blaca IP" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:440 +msgid "" +"Check this if you want to enable the whitelisting of selected IP addresses " +"specified in the settings below" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:444 +msgid "Your Current IP Address" +msgstr "Tu IP actual" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:447 +msgid "" +"You can copy and paste this address in the text box below if you want to " +"include it in your login whitelist." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:451 +msgid "Enter Whitelisted IP Addresses:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:455 +msgid "" +"Enter one or more IP addresses or IP ranges you wish to include in your " +"whitelist. Only the addresses specified here will have access to the " +"WordPress login page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:485 +msgid "Nonce check failed for delete all failed login records operation!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:494 +msgid "User Login Feature - Delete all failed login records operation failed!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:498 +msgid "All records from the Failed Logins table were deleted successfully!" +msgstr "" +"Todos los registros de la tabla logins fallidos se han suprimido con éxito!" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:513 +msgid "This tab displays the failed login attempts for your site." +msgstr "Esta ficha muestra los intentos fallidos de conexión para su sitio." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:514 +msgid "" +"The information below can be handy if you need to do security investigations " +"because it will show you the IP range, username and ID (if applicable) and " +"the time/date of the failed login attempt." +msgstr "" +"La siguiente información puede ser útil si usted tiene que hacer las " +"investigaciones de seguridad, ya que le mostrará el rango de IP, nombre de " +"usuario y el ID (si procede) y la hora / fecha del intento fallido de login." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:535 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:544 +msgid "Delete All Failed Login Records" +msgstr "Eliminar todos los registros de ingresos fallidos" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:541 +msgid "" +"Click this button if you wish to delete all failed login records in one go." +msgstr "" +"Haga clic en este botón si desea borrar todos los registros de conexión " +"fallidos de una sola vez." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:569 +msgid "" +"You entered a non numeric value for the logout time period field. It has " +"been set to the default value." +msgstr "" +"Ha introducido un valor no numérico para el campo Período de tiempo de " +"salida. Se ha establecido en el valor predeterminado." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:597 +msgid "" +"Setting an expiry period for your WP administration session is a simple way " +"to protect against unauthorized access to your site from your computer." +msgstr "" +"Establecer un período de caducidad para su sesión de administración WP es " +"una forma sencilla de proteger contra el acceso no autorizado a su sitio web " +"desde su ordenador." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:598 +msgid "" +"This feature allows you to specify a time period in minutes after which the " +"admin session will expire and the user will be forced to log back in." +msgstr "" +"Esta característica le permite especificar un período de tiempo en cuestión " +"de minutos después de lo cual la sesión de administrador expirará y el " +"usuario se verá obligado a volver a iniciar sesión." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:603 +msgid "Force User Logout Options" +msgstr "Opciones de forzar salida de usuarios" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:615 +msgid "Enable Force WP User Logout" +msgstr "Habilitar salida forzada de usuarios" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:618 +msgid "" +"Check this if you want to force a wp user to be logged out after a " +"configured amount of time" +msgstr "" +"Seleccione esta opción si desea forzar a salir un usuario de WP, pasada una " +"cantidad de tiempo configurada." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:622 +msgid "Logout the WP User After XX Minutes" +msgstr "Desconectar el Usuario WP después de XX minutos" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:624 +msgid "" +"(Minutes) The user will be forced to log back in after this time period has " +"elapased." +msgstr "" +"(Minutos) El usuario se verá obligado a entrar de nuevo una vez transcurrido " +"este período de tiempo." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:647 +msgid "" +"This tab displays the login activity for WordPress admin accounts registered " +"with your site." +msgstr "" +"Esta pestaña muestra la actividad de inicio de sesión para las cuentas de " +"administración de WordPress registrados en su sitio." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:648 +msgid "" +"The information below can be handy if you need to do security investigations " +"because it will show you the last 50 recent login events by username, IP " +"address and time/date." +msgstr "" +"La siguiente información puede ser útil si usted tiene que hacer las " +"investigaciones de seguridad, ya que le mostrará los últimos 50 eventos de " +"inicio de sesión recientes por nombre de usuario, la dirección IP y la " +"hora / fecha." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:685 +msgid "Nonce check failed for users logged in list!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:698 +msgid "Refresh Logged In User Data" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:702 +msgid "Refresh Data" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:708 +msgid "This tab displays all users who are currently logged into your site." +msgstr "" +"Esta pestaña muestra todos los usuarios que han iniciado sesión en su sitio." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:709 +msgid "" +"If you suspect there is a user or users who are logged in which should not " +"be, you can block them by inspecting the IP addresses from the data below " +"and adding them to your blacklist." +msgstr "" +"Si usted sospecha que hay un usuario o usuarios que han iniciado sesión en " +"la que no debe ser, puede bloquearlas mediante la inspección de las " +"direcciones IP de los datos a continuación y añadirlos a su lista negra." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:714 +msgid "Currently Logged In Users" +msgstr "Usuarios conectados Actualmente" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:779 +msgid "The selected records were deleted successfully!" +msgstr "Los registros seleccionados se han eliminado con éxito!" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:788 +msgid "The selected record was deleted successfully!" +msgstr "El registro seleccionado se ha eliminado correctamente!" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:23 +msgid "Manual Approval" +msgstr "Aprovacion Manual" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:24 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:53 +msgid "Registration Captcha" +msgstr "Captcha registro" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:112 +msgid "User Registration Settings" +msgstr "Configuración de registro de usuario" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:116 +msgid "Manually Approve New Registrations" +msgstr "Aprobar manualmente los Nuevos Registros" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:120 +msgid "" +"If your site allows people to create their own accounts via the WordPress " +"registration form, then you can minimize SPAM or bogus registrations by " +"manually approving each registration." +msgstr "" +"Si el sitio permite a las personas crear sus propias cuentas a través del " +"formulario de registro de WordPress, entonces usted puede minimizar el Spam " +"o registros falsos al aprobar manualmente cada registro." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:121 +msgid "" +"This feature will automatically set a newly registered account to \"pending" +"\" until the administrator activates it. Therefore undesirable registrants " +"will be unable to log in without your express approval." +msgstr "" +"Esta característica se establecerá automáticamente una nueva cuenta " +"registrada a \" pendiente\" hasta que el administrador lo activa. Por lo " +"tanto, los solicitantes de registro no deseados no podrán iniciar la sesión " +"sin su aprobación expresa." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:122 +msgid "" +"You can view all accounts which have been newly registered via the handy " +"table below and you can also perform bulk activation/deactivation/deletion " +"tasks on each account." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:138 +msgid "Enable manual approval of new registrations" +msgstr "Habilitar aprobación manual de nuevos registros" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:141 +msgid "" +"Check this if you want to automatically disable all newly registered " +"accounts so that you can approve them manually." +msgstr "" +"Seleccione esta opción si desea desactivar automáticamente todas las cuentas " +"recién registrados para que pueda aprobar manualmente." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:150 +msgid "Approve Registered Users" +msgstr "Aprobar Usuarios Registrados" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:195 +msgid "" +"This feature allows you to add a captcha form on the WordPress registration " +"page." +msgstr "" +"Esta característica le permite añadir un formulario CAPTCHA en la página de " +"registro de WordPress." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:196 +msgid "" +"Users who attempt to register will also need to enter the answer to a simple " +"mathematical question - if they enter the wrong answer, the plugin will not " +"allow them to register." +msgstr "" +"Los usuarios que intenten registrarse también tendrán que entrar en la " +"respuesta a una pregunta matemática simple - si entran en la respuesta " +"incorrecta, el plugin no permitirá que se registren." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:197 +msgid "" +"Therefore, adding a captcha form on the registration page is another " +"effective yet simple SPAM registration prevention technique." +msgstr "" +"Por lo tanto, la adición de un formulario CAPTCHA en la página de registro " +"es otra técnica de prevención de inscripción SPAM y simple eficaz." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:202 +msgid "Registration Page Captcha Settings" +msgstr "Configuración de página de registro Captcha" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:214 +msgid "Enable Captcha On Registration Page" +msgstr "Habilitar Captcha en página de registro" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:217 +msgid "" +"Check this if you want to insert a captcha form on the WordPress user " +"registration page (if you allow user registration)." +msgstr "" +"Seleccione esta opción si desea insertar un formulario CAPTCHA en la página " +"de registro de usuario de WordPress (si se permite el registro de usuarios)." + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:22 +msgid "WhoIS Lookup" +msgstr "búsqueda WhoIS" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:74 +msgid "WHOIS Lookup Information" +msgstr "Información de búsqueda WHOIS" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:77 +msgid "" +"This feature allows you to look up more detailed information about an IP " +"address or domain name by querying the WHOIS API." +msgstr "" +"Esta función le permite buscar información más detallada acerca de una " +"dirección IP o nombre de dominio mediante la consulta de la API de base de " +"datos WHOIS." + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:83 +msgid "Perform a WHOIS Lookup for an IP or Domain Name" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:89 +msgid "Enter IP Address or Domain Name" +msgstr "Introduzca la dirección IP o nombre de dominio" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:91 +msgid "" +"Enter an IP address or domain name. Example: 111.11.12.13 OR some-domain-" +"name.com" +msgstr "" +"Introduzca una dirección IP o nombre de dominio. Ejemplo: 111.11.12.13 O " +"algun-domain-name.com" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:95 +msgid "Perform IP or Domain Lookup" +msgstr "Realice una búsqueda IP o de dominio " + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:115 +msgid "WHOIS lookup successfully completed. Please see the results below:" +msgstr "" +"Búsqueda WHOIS ha completado correctamente. Por favor, vea los resultados a " +"continuación:" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:127 +msgid "" +"You have entered an incorrectly formatted IP address or domain name. Please " +"try again." +msgstr "" +"Ha introducido una dirección IP con formato incorrecto o nombre de dominio. " +"Por favor, inténtelo de nuevo." + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:178 +msgid "No items found." +msgstr "No se han encontrado artículos." + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:281 +msgid "Bulk Actions" +msgstr "Acciones en lote" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:291 +msgid "Apply" +msgstr "Aplicar" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:365 +msgid "Show all dates" +msgstr "Mostrar todas las fechas" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:378 +#, php-format +msgid "%1$s %2$d" +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:394 +msgid "List View" +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:395 +msgid "Excerpt View" +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:421 +#, php-format +msgid "%s pending" +msgstr "%s pendiente" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:653 +msgid "Select All" +msgstr "Seleccionar todo" + +#: all-in-one-wp-security/classes/wp-security-backup.php:177 +msgid "All In One WP Security - Site Database Backup" +msgstr "All In One WP Security - Respaldo base datos del sitio" + +#: all-in-one-wp-security/classes/wp-security-backup.php:179 +msgid "Attached is your latest DB backup file for site URL" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-backup.php:179 +msgid " generated on" +msgstr "generada en" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:12 +msgid "Please enter an answer in digits:" +msgstr "Por favor, introduzca una respuesta en digitos:" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:91 +msgid "one" +msgstr "uno" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:92 +msgid "two" +msgstr "dos" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:93 +msgid "three" +msgstr "tres" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:94 +msgid "four" +msgstr "cuatro" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:95 +msgid "five" +msgstr "cinco" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:96 +msgid "six" +msgstr "seis" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:97 +msgid "seven" +msgstr "siete" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:98 +msgid "eight" +msgstr "Ocho" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:99 +msgid "nine" +msgstr "Nueve" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:100 +msgid "ten" +msgstr "Diez" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:101 +msgid "eleven" +msgstr "Once" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:102 +msgid "twelve" +msgstr "Doce" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:103 +msgid "thirteen" +msgstr "Trece" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:104 +msgid "fourteen" +msgstr "catorce" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:105 +msgid "fifteen" +msgstr "quince" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:106 +msgid "sixteen" +msgstr "dieciseis" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:107 +msgid "seventeen" +msgstr "diecisiete" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:108 +msgid "eighteen" +msgstr "dieciocho" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:109 +msgid "nineteen" +msgstr "diecinueve" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:110 +msgid "twenty" +msgstr "veinte" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:58 +msgid "All In One WP Security - File change detected!" +msgstr "All In One WP Security - Cambio de archivo detectado!" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:60 +msgid "A file change was detected on your system for site URL" +msgstr "" +"Se ha detectado un cambio en un archivo en el sistema de dirección URL del " +"sitio" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:60 +msgid ". Scan was generated on" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:61 +msgid "Login to your site to view the scan details." +msgstr "Ingrese a su sitio para ver los detalles del análisis." + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:158 +msgid "Please enter an answer in the CAPTCHA field." +msgstr "Por favor, introduzca una respuesta en el campo de CAPTCHA" + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:168 +msgid "" +"Error: You entered an incorrect CAPTCHA answer. Please go back and try again." +msgstr "" +"Error: Introdujo un CAPTCHA de respuesta incorrecta. Por favor, regrese y " +"vuelva a intentarlo." + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:196 +#: all-in-one-wp-security/classes/wp-security-user-login.php:63 +#: all-in-one-wp-security/classes/wp-security-user-login.php:66 +#: all-in-one-wp-security/classes/wp-security-user-registration.php:59 +msgid "ERROR: Your answer was incorrect - please try again." +msgstr "" +" ERROR : Su respuesta fue incorrecta - por favor intente " +"de nuevo." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:39 +msgid "" +"ERROR: Login failed because your IP address has been " +"blocked.\n" +" Please contact the administrator." +msgstr "" +"ERROR: La conexión falló porque su dirección IP ha sido " +"bloqueada \n" +". Por favor, póngase en contacto con el " +"administrador." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:76 +msgid "ERROR: The username field is empty." +msgstr "ERROR: El nombre de usuario está vacío." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:80 +msgid "ERROR: The password field is empty." +msgstr "ERROR: El campo de la contraseña está vacía." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:100 +#: all-in-one-wp-security/classes/wp-security-user-login.php:126 +msgid "ERROR: Invalid login credentials." +msgstr "ERROR: Credenciales de inicio de sesión no válidos." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:103 +msgid "ERROR: Invalid username." +msgstr "ERROR: Nombre de usuario inválido." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:129 +#, php-format +msgid "" +"ERROR: Incorrect password. Lost your password?" +msgstr "" +"ERROR: contraseña incorrecta. Olvidó su contraseña?" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:140 +msgid "" +"ACCOUNT PENDING: Your account is currently not active. An " +"administrator needs to activate your account before you can login." +msgstr "" +"CUENTA PENDIENTE: Su cuenta no está activa. Un " +"administrador debe activar su cuenta antes de poder iniciar la sesión." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:263 +msgid "Site Lockout Notification" +msgstr "Notificación de bloqueo del sitio" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:264 +msgid "" +"A lockdown event has occurred due to too many failed login attempts or " +"invalid username:" +msgstr "" +"Un evento de bloqueo se ha producido debido a demasiados intentos fallidos " +"de acceso o nombre de usuario no válido:" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:265 +msgid "Username: " +msgstr "Nombre de usuario:" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:266 +msgid "IP Address: " +msgstr "Direccion IP: " + +#: all-in-one-wp-security/classes/wp-security-user-login.php:267 +msgid "IP Range: " +msgstr "Rango IP:" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:268 +msgid "" +"Log into your site's WordPress administration panel to see the duration of " +"the lockout or to unlock the user." +msgstr "" +"Inicie sesión en el panel de administración de WordPress de su sitio para " +"ver la duración del bloqueo o desbloquear el usuario." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:425 +#, php-format +msgid "" +"Your session has expired because it has been over %d minutes since your last " +"login." +msgstr "" +"Su sesión ha expirado ya que han pasado más de %d minutos desde el último " +"acceso." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:426 +#: all-in-one-wp-security/classes/wp-security-user-login.php:430 +msgid "Please log back in to continue." +msgstr "Por favor, vuelva a iniciar sesión para continuar." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:429 +msgid "You were logged out because you just changed the \"admin\" username." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:79 +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:98 +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:113 +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:128 +msgid " is not a valid ip address format." +msgstr "no es un formato de dirección IP válida." + +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:136 +msgid "You cannot ban your own IP address: " +msgstr "No se puede prohibir su propia dirección IP: " + +#: all-in-one-wp-security/classes/wp-security-utility.php:151 +msgid "" +"This feature can only be configured by the \"superadmin\" on the main site." +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:29 +msgid "Remove WP Generatore Meta Tag" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:35 +msgid "Change Display Name" +msgstr "Cambiar de nombre a mostrar" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:43 +msgid "Lost Password Captcha" +msgstr "Recuperar contraseña Captcha" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:45 +msgid "Login IP Whitelisting" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:51 +msgid "Registration Approval" +msgstr "Aprobación de Registro" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:67 +msgid "WordPress Files Access" +msgstr "Acceso archivos de WordPress" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:71 +msgid "IP and User Agent Blacklisting" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:75 +msgid "Enable Basic Firewall" +msgstr "Habilitar Firewall Basico" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:76 +msgid "Enable Pingback Vulnerability Protection" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:82 +msgid "Forbid Proxy Comments" +msgstr "Prohibir los comentarios via proxy" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:83 +msgid "Deny Bad Queries" +msgstr "Denegar malas consultas" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:85 +msgid "5G Blacklist" +msgstr "5G Lista Negra" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:88 +msgid "Block Spambots" +msgstr "Bloquear spam bots" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:90 +msgid "Comment Captcha" +msgstr "Captcha comentarios" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item.php:28 +msgid "Basic" +msgstr "Basico" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item.php:31 +msgid "Intermediate" +msgstr "Intermedio" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item.php:34 +msgid "Advanced" +msgstr "Avanzado" diff --git a/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-fa_IR.mo b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-fa_IR.mo new file mode 100644 index 0000000..cb7af13 Binary files /dev/null and b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-fa_IR.mo differ diff --git a/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-fa_IR.po b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-fa_IR.po new file mode 100644 index 0000000..d622595 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-fa_IR.po @@ -0,0 +1,4056 @@ +msgid "" +msgstr "" +"Project-Id-Version: امنیت فراگیر وردپرس\n" +"POT-Creation-Date: 2013-12-03 12:53+1000\n" +"PO-Revision-Date: 2014-05-21 11:45+0330\n" +"Last-Translator: Amir Mousavi \n" +"Language-Team: Amir Mousavi \n" +"Language: fa_IR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.6.5\n" +"X-Poedit-KeywordsList: __;_e\n" +"X-Poedit-Basepath: .\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Poedit-SearchPath-0: .\n" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:156 +msgid "WP Security" +msgstr "امنیت فراگیر وردپرس" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:157 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:22 +msgid "Dashboard" +msgstr "پیشخوان امنیت" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:158 +msgid "Settings" +msgstr "تنظیمات" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:159 +msgid "User Accounts" +msgstr "حساب های کاربری" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:160 +msgid "User Login" +msgstr "ورود کاربران" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:161 +msgid "User Registration" +msgstr "نام‌نویسی کاربران" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:162 +msgid "Database Security" +msgstr "امنیت پایگاه داده" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:166 +msgid "Filesystem Security" +msgstr "امنیت فایل‌های سیستم" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:168 +msgid "WHOIS Lookup" +msgstr "مراجعه به WHOIS" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:172 +msgid "Blacklist Manager" +msgstr "مدیریت فهرست سیاه" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:177 +msgid "Firewall" +msgstr "دیوار آتش" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:179 +msgid "SPAM Prevention" +msgstr "جلوگیری از اسپم" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:183 +msgid "Scanner" +msgstr "اسکنر" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:185 +msgid "Maintenance" +msgstr "حالت تعمیر" + +#: all-in-one-wp-security/admin/wp-security-admin-menu.php:43 +msgid "Settings successfully updated." +msgstr "تنظیمات با موفقیت به روز رسانی شد!" + +#: all-in-one-wp-security/admin/wp-security-admin-menu.php:50 +msgid "The selected record(s) deleted successfully!" +msgstr "رکورد(های) انتخابی با موفقیت پاک شد(ند)!" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:22 +msgid "Ban Users" +msgstr "ممنوع کردن کاربران" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:80 +msgid "Nonce check failed for save blacklist settings!" +msgstr "بررسی Nonce برای ذخیره فهرست سیاه، ناموفق بود!" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:132 +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:147 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:400 +msgid "" +"The plugin was unable to write to the .htaccess file. Please edit file " +"manually." +msgstr "" +"افزونه قادر به نوشتن در فایل htaccess. نیست. لطفا فایل را به صورت دستی " +"ویرایش کنید." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:139 +msgid "Ban IPs or User Agents" +msgstr "ممنوعیت IP یا نرم افزار نماینده کاربران (User Agents)" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:142 +msgid "" +"The All In One WP Security Blacklist feature gives you the option of banning " +"certain host IP addresses or ranges and also user agents." +msgstr "" +"فهرست سیاه AIOWP به شما این امکان را می دهد تا یک میزبان IP مشخص یا یک رنج " +"IP یا یک نرم افزار خاص را مسدود کنید." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:143 +msgid "" +"This feature will deny total site access for users which have IP addresses " +"or user agents matching those which you have configured in the settings " +"below." +msgstr "" +"این ویژگی دسترسی کامل به سایت را برای کاربرانی که IP یا نرم افزار مشخص شده " +"در پایین را دارند، قطع می کند." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:144 +msgid "" +"The plugin achieves this by making appropriate modifications to your ." +"htaccess file." +msgstr "افزونه برای رسیدن به این هدف تغییراتی در فایل .htaccess شما می دهد." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:145 +msgid "" +"By blocking people via the .htaccess file your are using the most secure " +"first line of defence which denies all access to blacklisted visitors as " +"soon as they hit your hosting server." +msgstr "" +"با مسدود کردن مردم از طریق فایل htaccess. شما از محکم ترین خط دفاعی اولیه " +"استفاده می کنید؛ این خط دفاعی دسترسی کامل بازدیدکنندگان ممنوعه را قطع می کند." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:151 +msgid "IP Hosts and User Agent Blacklist Settings" +msgstr "ساماندهی فهرست سیاه میزبان های IP و نرم افزارهای نماینده کاربر" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:162 +msgid "Enable IP or User Agent Blacklisting" +msgstr "فعال سازی فهرست سیاه برای IP یا نرم افزار نماینده کاربری" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:165 +msgid "" +"Check this if you want to enable the banning (or blacklisting) of selected " +"IP addresses and/or user agents specified in the settings below" +msgstr "" +"این گزینه برای را برای فعال‌سازی ممنوعیت IPها/نرم افزارهای نماینده کاربر تیک " +"بزنید." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:169 +msgid "Enter IP Addresses:" +msgstr "آدرس های IP را وارد کنید:" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:173 +msgid "Enter one or more IP addresses or IP ranges." +msgstr "یک یا چند IP یا رنج IP را وارد کنید." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:174 +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:194 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:271 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:288 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:147 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:177 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:308 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:338 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:369 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:397 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:426 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:514 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:669 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:703 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:726 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:747 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:174 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:259 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:456 +msgid "More Info" +msgstr "اطلاعات بیشتر" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:177 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:459 +msgid "Each IP address must be on a new line." +msgstr "هر IP آدرس می بایست در یک خط جدید وارد شود." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:178 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:460 +msgid "" +"To specify an IP range use a wildcard \"*\" character. Acceptable ways to " +"use wildcards is shown in the examples below:" +msgstr "" +"برای مشخص کردن یک رنج IP از Wildcard \"*\" استفاده کنید. روش های درست " +"استفاده از Wildcardها در نمونه های زیر نشان داده شده است:" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:179 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:461 +msgid "Example 1: 195.47.89.*" +msgstr "نمونه یک : *.195.47.89" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:180 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:462 +msgid "Example 2: 195.47.*.*" +msgstr "نمونه دو : *.*.195.47" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:181 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:463 +msgid "Example 3: 195.*.*.*" +msgstr "نمونه سه : *.*.*.195" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:188 +msgid "Enter User Agents:" +msgstr "نرم افزارهای نماینده کاربر را وارد کنید:" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:193 +msgid "Enter one or more user agent strings." +msgstr "یک یا چند نرم افزار نماینده کاربری را وارد کنید." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:197 +msgid "Each user agent string must be on a new line." +msgstr "هر نرم افزار نماینده کاربری می بایست در یک خط جدید وارد شود." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:198 +msgid "Example 1 - A single user agent string to block:" +msgstr "نمونه یک : یک نرم افزار نماینده کاربری برای مسدود کردن" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:200 +msgid "Example 2 - A list of more than 1 user agent strings to block" +msgstr "نمونه دو: یک لیست از نرم افزارهای نماینده کاربری برای مسدود کردن" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:208 +#: all-in-one-wp-security/admin/wp-security-database-menu.php:347 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:309 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:231 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:497 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:189 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:232 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:336 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:470 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:628 +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:146 +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:221 +msgid "Save Settings" +msgstr "ذخیره تنظیمات" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:23 +msgid "System Info" +msgstr "اطلاعات سیستم" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:73 +msgid "For information, updates and documentation, please visit the" +msgstr "برای اطلاعات، بروز رسانی ها و راهنمای استفاده، لطفا برگه" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:73 +msgid "AIO WP Security & Firewall Plugin" +msgstr "افزونه امنیت فراگیر و دیوار آتش وردپرس" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:73 +msgid "Page" +msgstr "را ببینید" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:74 +msgid "Follow us" +msgstr "ما را دنبال کنید" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:74 +msgid "" +"Twitter, Google+ or via Email to stay upto date about the new security " +"features of this plugin." +msgstr "" +"توییتر، گوگل پلاس و یا از طریق ایمیل تا از ویژگی‌های جدید امنیتی این افزونه " +"با خبر باشید." + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:88 +msgid "Security Strength Meter" +msgstr "نشانگر میزان امنیت" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:117 +msgid "Total Achievable Points: " +msgstr "همه امتیازهای قابل کسب:" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:119 +msgid "Current Score of Your Site: " +msgstr "امتیاز کنونی سایت شما:" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:129 +msgid "Security Points Breakdown" +msgstr "تفکیک امتیازهای امنیتی" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:170 +msgid "Critical Feature Status" +msgstr "وضعیت ویژگی‌های مهم" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:174 +msgid "" +"Below is the current status of the critical features that you should " +"activate on your site to achieve a minimum level of recommended security" +msgstr "" +"در زیر وضعیت کنونی ویژگی‌های مهم را می بینید که برای رسیدن به سطح حداقل امنیت " +"باید آنها را فعال کنید." + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:178 +msgid "Admin Username" +msgstr "نام کاربری سرپرست" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:193 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:27 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:39 +msgid "Login Lockdown" +msgstr "قفل ورود" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:208 +msgid "File Permission" +msgstr "اجازه دسترسی به فایل" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:223 +msgid "Basic Firewall" +msgstr "دیوار آتش آغازین" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:241 +msgid "Maintenance Mode Status" +msgstr "وضعیت حالت تعمیر" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:245 +msgid "" +"Maintenance mode is currently enabled. Remember to turn it off when you are " +"done" +msgstr "" +"حالت تعمیر فعال است. به یاد داشته باشید پس از اتمام کارتان آن را خاموش کنید." + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:248 +msgid "Maintenance mode is currently off." +msgstr "حالت تعمیر خاموش است." + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:252 +msgid "Maintenance Mode" +msgstr "حالت تعمیر" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:291 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:33 +msgid "Logged In Users" +msgstr "کاربران وارد شده" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:301 +msgid "Number of users currently logged in site-wide is:" +msgstr "تعداد کاربرانی که هم اکنون در سایت وارد شده اند:" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:302 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:324 +#, php-format +msgid "Go to the %s menu to see more details" +msgstr "برای مشاهده جزییات بیشتر به فهرست %s بروید" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:307 +msgid "There are no other site-wide users currently logged in." +msgstr "هم اکنون هیچ کاربر دیگری در سایت وارد نشده است." + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:323 +msgid "Number of users currently logged into your site is:" +msgstr "تعداد کاربرانی که در حال حاضر در سایت هستند." + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:329 +msgid "There are no other users currently logged in." +msgstr "هم اکنون هیچ کاربر دیگری در سایت حضور ندارد." + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:340 +msgid "Spread the Word" +msgstr "گسترش این افزونه" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:343 +msgid "" +"We are working to make your WordPress site more secure. Please support us, " +"here is how:" +msgstr "" +"ما کار می کنیم تا سایت وردپرسی شما را امن‌تر کنیم. لطفا از اینجا ما را حمایت " +"کنید:" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:367 +msgid "Site Info" +msgstr "اطلاعات سایت" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:369 +msgid "Plugin Version" +msgstr "نسخه افزونه" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:370 +msgid "WP Version" +msgstr "نسخه وردپرس" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:372 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:374 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:395 +msgid "Version" +msgstr "نسخه" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:373 +msgid "Table Prefix" +msgstr "پیشوند جدول" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:375 +msgid "Session Save Path" +msgstr "محل ذخیره جلسه" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:377 +msgid "Server Name" +msgstr "نام سِرور" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:378 +msgid "Cookie Domain" +msgstr "دامنه کوکی" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:379 +msgid "Library Present" +msgstr "کتابخانه موجود" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:380 +msgid "Debug File Write Permissions" +msgstr "اشکال یابی مجوزهای نوشتن فایل" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:384 +msgid "Active Plugins" +msgstr "افزونه های فعال" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:394 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:130 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:149 +msgid "Name" +msgstr "نام" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:396 +msgid "Plugin URL" +msgstr "آدرس افزونه" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:23 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:57 +msgid "DB Prefix" +msgstr "پیشوند دیتابیس" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:24 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:59 +msgid "DB Backup" +msgstr "فایل پشتیبان دیتابیس" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:84 +msgid "Nonce check failed for DB prefix change operation!" +msgstr "بررسی Nonce برای تغییر پیشوند دیتابیس ناموفق بود!" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:92 +msgid "" +"The plugin has detected that it cannot write to the wp-config.php file. This " +"feature can only be used if the plugin can successfully write to the wp-" +"config.php file." +msgstr "" +"افزونه نمی تواند در فایل wp-config.php کدنویسی کند. این ویژگی تنها در صورتی " +"کار می کند که افزونه بتواند در فایل wp-config.php کدنویسی کند." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:105 +msgid "Please enter a value for the DB prefix." +msgstr "لطفا یک مقدار(Value) برای پیشوند دیتابیس وارد کنید." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:114 +msgid "" +"ERROR: The table prefix can only contain numbers, letters, " +"and underscores." +msgstr "" +"خطا: پیشوند جدول، فقط باید شامل حروف،عدد و یا Underline " +"باشد." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:122 +msgid "Change Database Prefix" +msgstr "تغییر پیشوند دیتابیس" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:125 +msgid "" +"Your WordPress DB is the most important asset of your website because it " +"contains a lot of your site's precious information." +msgstr "" +"دیتابیس وردپرس شما،مهم ترین قسمت سایت شماست؛ زیرا بخش ارزشمند اطلاعات سایت " +"شما در آن است." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:126 +msgid "" +"The DB is also a target for hackers via methods such as SQL injections and " +"malicious and automated code which targets certain tables." +msgstr "" +"دیتابیس همچنین هدفی برای هکرها می باشد که از طریق SQL Injections یا کدهای " +"خرابکارانه خودکار جدولهای خاصی را هدف می گیرند." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:127 +msgid "" +"One way to add a layer of protection for your DB is to change the default " +"WordPress table prefix from \"wp_\" to something else which will be " +"difficult for hackers to guess." +msgstr "" +"یک راه برای حفاظت از دیتابیس، تغییر پیشوند وردپرس برای جدول ها یعنی \"wp_" +"\" ، به چیز دیگری است که حدس زدن آن برای هکرها دشوار باشد." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:128 +msgid "" +"This feature allows you to easily change the prefix to a value of your " +"choice or to a random value set by this plugin." +msgstr "" +"این ویژگی به شما امکان تغییر آسان پیشوند دیتابیس را می دهد؛ شما می توانید از " +"پیشوند دلخواه خودتان یا از پیشوند تصادفی افزونه استفاده کنید." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:134 +msgid "DB Prefix Options" +msgstr "گزینه های تغییر پیشوند دیتابیس" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:145 +#, php-format +msgid "It is recommended that you perform a %s before using this feature" +msgstr "توصیه می شود قبل از استفاده از این ویژگی %s" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:154 +msgid "Current DB Table Prefix" +msgstr "پیشوند فعلی جدول های دیتابیس" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:160 +msgid "" +"Your site is currently using the default WordPress DB prefix value of \"wp_" +"\". \n" +" To increase your site's security you should " +"consider changing the DB prefix value to another value." +msgstr "" +"سایت شما هم اکنون از پیشوند وردپرس یعنی \"wp_\" برای دیتابیس استفاده می " +"کند.\n" +"برای افزایش امنیت سایت،بهتر است شما یک پیشوند دیگر انتخاب کنید" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:167 +msgid "Generate New DB Table Prefix" +msgstr "ساختن یک پیشوند تصادفی جدید برای دیتابیس" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:170 +msgid "" +"Check this if you want the plugin to generate a random 6 character string " +"for the table prefix" +msgstr "" +"اگر می خواهید افزونه یک پیشوند تصادفی 6 کاراکتری برای دیتابیس شما بسازد، این " +"گزینه را تیک بزنید." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:171 +msgid "OR" +msgstr "یا" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:173 +msgid "" +"Choose your own DB prefix by specifying a string which contains letters and/" +"or numbers and/or underscores. Example: xyz_" +msgstr "" +"خودتان یک پیشوند دلخواه به زبان انگلیسی برای دیتابیس بنویسید(پیشوند می تواند " +"شامل حروف،عدد و یا Underline باشد)" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:177 +msgid "Change DB Prefix" +msgstr "تغییر پیشوند دیتابیس" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:198 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:86 +msgid "Nonce check failed for manual DB backup operation!" +msgstr "بررسی Nonce برای پشتیبان گیری دستی از دیتابیس، ناموفق بود!" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:215 +msgid "" +"DB Backup was successfully completed! You will receive the backup file via " +"email if you have enabled \"Send Backup File Via Email\", otherwise you can " +"retrieve it via FTP from the following directory:" +msgstr "" +"فایل پشتیبان دیتابیس با موفقیت ایجاد شد. شما یک نسخه از فایل پشتیبان را از " +"طریق ایمیل دریافت می کنید به شرط اینکه گزینه \"ارسال فایل پشتیبان از طریق " +"ایمیل\" را فعال کرده باشید. در غیر این صورت شما می توانید فایل را در آدرس " +"زیر بیابید:" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:217 +msgid "Your DB Backup File location: " +msgstr "محل قرارگیری فایل پشتیبان دیتابیس:" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:225 +msgid "DB Backup failed. Please check the permissions of the backup directory." +msgstr "" +"پشتیبان گیری ناموفق بود! لطفا مجوزهای مسیر ذخیره فایل پشتیبان را بررسی کنید." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:242 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:126 +msgid "" +"You entered a non numeric value for the \"backup time interval\" field. It " +"has been set to the default value." +msgstr "" +"شما یک مقدار غیر عددی برای \"بازه زمانی پشتیبان گیری\" وارد کرده اید. بازه " +"زمانی روی مقدار پیش‌فرض تنظیم می شود." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:249 +msgid "" +"You entered a non numeric value for the \"number of backup files to keep\" " +"field. It has been set to the default value." +msgstr "" +"شما یک مقدار غیر عددی برای \"تعداد فایلهای پشتیبانی که باید نگه داشته شود\" " +"وارد کرده اید. تعداد فایل ها روی مقدار پیش‌فرض تنظیم می شود." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:256 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:156 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:121 +msgid "" +"You have entered an incorrect email address format. It has been set to your " +"WordPress admin email as default." +msgstr "" +"شما یک آدرس ایمیل نامعتبر وارد کرده اید. آدرس ایمیل طبق آدرس ایمیل پیش‌فرض " +"سایت تنظیم می شود." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:262 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:162 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:219 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:127 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:581 +msgid "Attention!" +msgstr "توجه!" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:289 +msgid "Manual Backup" +msgstr "پشتیبان گیری دستی" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:295 +msgid "To create a new DB backup just click on the button below." +msgstr "برای ایجاد یک پشتیبان دیتابیس روی کلید زیر کلیک کنید" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:298 +msgid "Create DB Backup Now" +msgstr "ایجاد فایل پشتیبان دیتابیس" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:302 +msgid "Automated Scheduled Backups" +msgstr "پشتیبان گیری خودکار" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:314 +msgid "Enable Automated Scheduled Backups" +msgstr "فعال‌سازی پشتیبان گیری خودکار" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:317 +msgid "" +"Check this if you want the system to automatically generate backups " +"periodically based on the settings below" +msgstr "" +"برای پشتیبان گیری خودکار در بازه های زمانی مختلف، گزینه زیر را تیک بزنید." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:321 +msgid "Backup Time Interval" +msgstr "بازه زمانی پشتیبان گیری" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:324 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:259 +msgid "Hours" +msgstr "ساعت" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:325 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:260 +msgid "Days" +msgstr "روز" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:326 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:261 +msgid "Weeks" +msgstr "هفته" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:328 +msgid "Set the value for how often you would like an automated backup to occur" +msgstr "" +"برای تعیین اینکه هرچند وقت یک بار پشتیبان گیری خودکار انجام شود،یک مقدار " +"وارد کنید" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:332 +msgid "Number of Backup Files To Keep" +msgstr "تعداد فایل های پشتیبان که باید نگه داشته شود" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:334 +msgid "" +"Thie field allows you to choose the number of backup files you would like to " +"keep in the backup directory" +msgstr "" +"این قسمت به شما اجازه می دهد تعیین کنید چه تعداد فایل پشتیبان روی هاست باقی " +"بمانند." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:338 +msgid "Send Backup File Via Email" +msgstr "فرستادن فایل پشتیبان از طریق ایمیل" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:341 +msgid "" +"Check this if you want the system to email you the backup file after a DB " +"backup has been performed" +msgstr "" +"برای اینکه سیستم پس از تهیه هر پشتیبان، یک نسخه برای شما ایمیل کند، این " +"گزینه را تیک بزنید" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:343 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:305 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:228 +msgid "Enter an email address" +msgstr "یک آدرس ایمیل وارد کنید" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:373 +msgid "Starting DB prefix change operations....." +msgstr "آغاز عملیات تغییر پیشوند دیتابیس" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:375 +#, php-format +msgid "" +"Your WordPress system has a total of %s tables and your new DB prefix will " +"be: %s" +msgstr "" +"سیستم وردپرس شما در کل %s جدول دارد و پیشوند جدید دیتابیس شما %s خواهد بود." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:381 +#: all-in-one-wp-security/classes/wp-security-utility.php:206 +msgid "" +"Failed to make a backup of the wp-config.php file. This operation will not " +"go ahead." +msgstr "خطا در پشتیبان گیری از فایل wp-config.php. عملیات متوقف شد." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:385 +msgid "A backup copy of your wp-config.php file was created successfully!" +msgstr "یک پشتیبان از فایل wp-config.php شما با موفقیت ایجاد شد!" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:408 +#, php-format +msgid "%s table name update failed" +msgstr "بروزرسانی نام جدول %s ناموفق بود" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:420 +#, php-format +msgid "Please change the prefix manually for the above tables to: %s" +msgstr "لطفا پیشوند جدول(های) فوق را به صورت دستی به %s تغییر دهید." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:423 +#, php-format +msgid "%s tables had their prefix updated successfully!" +msgstr "%s جدول، پیشوندشان به خوبی بروز شد." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:438 +msgid "wp-config.php file was updated successfully!" +msgstr "فایل wp-config.php به خوبی بروز شد!" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:441 +#, php-format +msgid "" +"The \"wp-config.php\" file was not able to be modified. Please modify this " +"file manually using your favourite editor and search \n" +" for variable \"$table_prefix\" and assign the following " +"value to that variable: %s" +msgstr "" +"فایل wp-config.php قابل ویرایش نیست. لطفا به صورت دستی فایل را باز کرده \n" +" و متغیر \"$table_prefix\" را بیابید. سپس مقدار آن را به %s تغییر دهید." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:462 +msgid "There was an error when updating the options table." +msgstr "هنگام بروز کردن جدول Options خطایی رخ داد." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:466 +msgid "" +"The options table records which had references to the old DB prefix were " +"updated successfully!" +msgstr "" +"رکوردهای جدول Options که به پیشوند قبلی دیتابیس ارجاع داشتند، به خوبی بروز " +"شدند!" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:491 +#, php-format +msgid "" +"Error updating user_meta table where new meta_key = %s, old meta_key = %s " +"and user_id = %s." +msgstr "" +"خطا در بروز رسانی جدول user_meta در جایی که meta_key جدید = %s ، meta_key " +"قدیمی = %s و user_id = %s است." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:497 +msgid "" +"The usermeta table records which had references to the old DB prefix were " +"updated successfully!" +msgstr "" +"رکوردهای جدول Usermeta که به پیشوند قبلی دیتابیس ارجاع داشتند، به خوبی بروز " +"شدند!" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:499 +msgid "DB prefix change tasks have been completed." +msgstr "عملیات تغییر پیشوند دیتابیس با موفقیت به پایان رسید." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:22 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:94 +msgid "File Change Detection" +msgstr "شناسایی تغییر فایل" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:93 +msgid "Nonce check failed for manual file change detection scan operation!" +msgstr "بررسی Nonce برای شناسایی دستی تغییر فایل ناموفق بود!" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:100 +msgid "" +"The plugin has detected that this is your first file change detection scan. " +"The file details from this scan will be used to detect file changes for " +"future scans!" +msgstr "" +"این نخستین اسکن شما برای تغییر فایل است.برای شناسایی تغییر فایل در اسکن های " +"آینده از جزییات این اسکن استفاده می شود." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:194 +msgid "" +"NEW SCAN COMPLETED: The plugin has detected that you have made changes to " +"the \"File Types To Ignore\" or \"Files To Ignore\" fields.\n" +" In order to ensure that future scan results are " +"accurate, the old scan data has been refreshed." +msgstr "" +"اسکن جدید انجام شد. افزونه تشخیص داده که شما تغییراتی در \"فرمت هایی که باید " +"چشم پوشی شود\" یا \"فایل هایی که باید چشم پوشی شود\" ایجاد کرده اید.\n" +"برای اطمینان از اینکه نتایج اسکن های آینده دقیق خواهند بود، نتایج اسکن قدیمی " +"بروز شد." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:204 +msgid "" +"All In One WP Security & Firewall has detected that there was a change in " +"your host's files." +msgstr "امنیت فراگیر وردپرس یک تغییر در فایل‌های هاست شما شناسایی کرده است." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:206 +msgid "View Scan Details & Clear This Message" +msgstr "مشاهده نتایج اسکن و پاک کردن این پیغام" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:215 +msgid "" +"If given an opportunity hackers can insert their code or files into your " +"system which they can then use to carry out malicious acts on your site." +msgstr "" +"اگر به هکرها امکان داده شود آنها می توانند فایلها یا کدهای خود را وارد " +"سیستم شما کرده و از طریق آنها اعمال خرابکارانه روی سایت شما انجام دهند." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:216 +msgid "" +"Being informed of any changes in your files can be a good way to quickly " +"prevent a hacker from causing damage to your website." +msgstr "" +"آگاهی همیشگی از تغییر فایل‌ها راه بسیار خوبی برای جلوگیری از خرابکاری یک هکر " +"در سایت شماست." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:217 +msgid "" +"In general, WordPress core and plugin files and file types such as \".php\" " +"or \".js\" should not change often and when they do, it is important that " +"you are made aware when a change occurs and which file was affected." +msgstr "" +"معمولا فایل‌های هسته وردپرس،فایل های افزونه‌ها و همچنین فایلهایی مانند \".php" +"\" یا \".js\" خیلی کم تغییر می‌کنند و این مهم است که هرگاه این فایلها تغییر " +"کردند بلافاصله شما باخبر شوید." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:218 +msgid "" +"The \"File Change Detection Feature\" will notify you of any file change " +"which occurs on your system, including the addition and deletion of files by " +"performing a regular automated or manual scan of your system's files." +msgstr "" +" \"ویژگی تشخیص تغییر فایل‌ها\" با انجام یک اسکن خودکار یا دستی، هر گاه تغییری " +"شامل پاک شدن یا افزوده شدن در فایل های شما اتفاق بیفتد، شما را با خبر می " +"سازد." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:219 +msgid "" +"This feature also allows you to exclude certain files or folders from the " +"scan in cases where you know that they change often as part of their normal " +"operation. (For example log files and certain caching plugin files may " +"change often and hence you may choose to exclude such files from the file " +"change detection scan)" +msgstr "" +"این ویژگی همچنین به شما اجازه می دهد تا فایلها و پوشه های مشخصی را (که می " +"دانید اغلب تغییر می کنند) از لیست اسکن خارج کنید.(برای مثال فایلهای گزارش " +"(Log) )" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:224 +msgid "Manual File Change Detection Scan" +msgstr "اسکن شناسایی تغییر فایل به صورت دستی" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:230 +msgid "" +"To perform a manual file change detection scan click on the button below." +msgstr "" +"برای انجام یک اسکن شناسایی تغییر فایل به صورت دستی روی دکمه زیر کلیک کنید." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:233 +msgid "Perform Scan Now" +msgstr "انجام اسکن" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:237 +msgid "File Change Detection Settings" +msgstr "تنظیمات شناسایی تغییر فایل" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:249 +msgid "Enable Automated File Change Detection Scan" +msgstr "فعال کردن شناسایی تغییر فایل به طور خودکار" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:252 +msgid "" +"Check this if you want the system to automatically/periodically scan your " +"files to check for file changes based on the settings below" +msgstr "" +"برای اسکن خودکار/زمان‌بندی شده فایل ها بر اساس تنظیمات زیر، این گزینه را تیک " +"بزنید" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:256 +msgid "Scan Time Interval" +msgstr "بازه زمانی اسکن" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:263 +msgid "Set the value for how often you would like a scan to occur" +msgstr "تعیین کنید هر چند وقت یک بار اسکن انجام شود " + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:267 +msgid "File Types To Ignore" +msgstr "فرمت هایی که باید چشم پوشی شود" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:270 +msgid "" +"Enter each file type or extension on a new line which you wish to exclude " +"from the file change detection scan." +msgstr "در هر خط فرمت هایی که می خواهید اسکن نشوند را وارد کنید" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:274 +msgid "" +"You can exclude file types from the scan which would not normally pose any " +"security threat if they were changed. These can include things such as image " +"files." +msgstr "" +"شما می توانید فرمت فایلهایی را که تغییر آنها به طور معمول خطری برای سیستم " +"ندارد، از اسکن شدن بازدارید. برای نمونه فرمت فایلهای تصویری." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:275 +msgid "" +"Example: If you want the scanner to ignore files of type jpg, png, and bmp, " +"then you would enter the following:" +msgstr "" +"نمونه: اگر شما می خواهید که اسکنر فایلهایی با پسوند jpg، png و bmp را اسکن " +"نکند آنها را به شکل زیر وارد کنید:" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:276 +msgid "jpg" +msgstr "jpg" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:277 +msgid "png" +msgstr "png" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:278 +msgid "bmp" +msgstr "bmp" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:284 +msgid "Files/Directories To Ignore" +msgstr "فایل‌ها/ مسیرهایی که باید چشم پوشی شود:" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:287 +msgid "" +"Enter each file or directory on a new line which you wish to exclude from " +"the file change detection scan." +msgstr "در هر خط فایل‌ها و مسیرهایی را که می خواهید اسکن نشوند وارد کنید." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:291 +msgid "" +"You can exclude specific files/directories from the scan which would not " +"normally pose any security threat if they were changed. These can include " +"things such as log files." +msgstr "" +"شما می توانید فایلها و مسیرهایی را که تغییر آنها به طور معمول خطری برای " +"سیستم ندارد، از اسکن شدن بازدارید. برای نمونه فایلهای گزارش (Log)" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:292 +msgid "" +"Example: If you want the scanner to ignore certain files in different " +"directories or whole directories, then you would enter the following:" +msgstr "" +"نمونه: اگر شما می‌خواهید که اسکنر فایل های خاصی را در مسیر های مختلف و یا کل " +"مسیرها اسکن نکند، آنها را به شکل زیر وارد کنید:" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:293 +msgid "cache/config/master.php" +msgstr "cache/config/master.php" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:294 +msgid "somedirectory" +msgstr "somedirectory" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:300 +msgid "Send Email When Change Detected" +msgstr "هنگامی که تغییر فایل شناسایی شد به من ایمیل بفرست" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:303 +msgid "" +"Check this if you want the system to email you if a file change was detected" +msgstr "" +"اگر می خواهید سیستم وقتی یک تغییر فایل را شناسایی کرد به شما ایمیل بفرستد " +"این گزینه را تیک بزنید" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:335 +msgid "Latest File Change Scan Results" +msgstr "واپسین نتایج تغییرات فایل" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:344 +msgid "The following files were added to your host." +msgstr "فایلهای زیر به هاست شما اضافه شده اند." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:347 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:368 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:392 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:26 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:27 +msgid "File" +msgstr "فایل" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:348 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:369 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:393 +msgid "File Size" +msgstr "اندازه فایل" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:349 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:370 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:394 +msgid "File Modified" +msgstr "اصلاح شدن فایل" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:365 +msgid "The following files were removed from your host." +msgstr "فایل‌های زیر از هاست شما پاک شدند." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:389 +msgid "The following files were changed on your host." +msgstr "فایل‌های زیر در هاست شما تغییر کرده اند" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:26 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:63 +msgid "File Permissions" +msgstr "مجوزهای فایل" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:27 +msgid "PHP File Editing" +msgstr "ویرایش فایل PHP" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:28 +msgid "WP File Access" +msgstr "دسترسی به فایلهای وردپرس" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:29 +msgid "Host System Logs" +msgstr "گزارش‌های سیستم هاست" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:96 +#, php-format +msgid "The permissions for %s were succesfully changed to %s" +msgstr "مجوزها برای %s به خوبی به %s تغییر کردند." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:100 +#, php-format +msgid "Unable to change permissions for %s!" +msgstr "ناتوانی در تغییر مجوزها برای %s !" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:106 +msgid "File Permissions Scan" +msgstr "اسکن مجوزهای فایل" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:109 +msgid "" +"Your WordPress file and folder permission settings govern the accessability " +"and read/write privileges of the files and folders which make up your WP " +"installation." +msgstr "" +"دسترسی و اجازه خواندن و نوشتن فایل ها و پوشه هایی که وردپرس را می سازند، " +"توسط مجوزهای فایل کنترل می شود." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:110 +msgid "" +"Your WP installation already comes with reasonably secure file permission " +"settings for the filesystem." +msgstr "نسخه وردپرس شما به صورت پیش‌فرض با تنظیمات درست مجوزهای فایل عرضه می‌شود" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:111 +msgid "" +"However, sometimes people or other plugins modify the various permission " +"settings of certain core WP folders or files such that they end up making " +"their site less secure because they chose the wrong permission values." +msgstr "" +"با این حال،گاهی مردم یا سایر افزونه ها تنظیمات این مجوزها را برای فایلهای " +"هسته وردپرس به شکل نادرستی تغییر می‌دهند و این در نهایت باعث ناامن شدن سایت " +"می شود." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:112 +msgid "" +"This feature will scan the critical WP core folders and files and will " +"highlight any permission settings which are insecure." +msgstr "" +"این ویژگی فایل‌ها و پوشه‌های مهم هسته وردپرس را اسکن می کند؛ سپس هر تنظیمات " +"مجوزی را که ناامن باشد مشخص می کند." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:118 +msgid "WP Directory and File Permissions Scan Results" +msgstr "نتایج اسکن مسیر نصب وردپرس و مجوزهای فایل" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:131 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:150 +msgid "File/Folder" +msgstr "فایل/پوشه" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:132 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:151 +msgid "Current Permissions" +msgstr "مجوزهای فعلی" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:133 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:152 +msgid "Recommended Permissions" +msgstr "مجوزهای پیشنهادی" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:134 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:153 +msgid "Recommended Action" +msgstr "کار پیشنهادی" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:191 +msgid "Your PHP file editing settings were saved successfully." +msgstr "تنظیمات ویرایش فایل PHP با موفقیت ذخیره شد." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:195 +msgid "" +"Operation failed! Unable to modify or make a backup of wp-config.php file!" +msgstr "" +"عملیات ناموفق بود! ناتوانی در اصلاح یا تهیه فایل پشتیبان از فایل wp-config." +"php !" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:201 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:65 +msgid "File Editing" +msgstr "ویرایش فایل" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:204 +msgid "" +"The Wordpress Dashboard by default allows administrators to edit PHP files, " +"such as plugin and theme files." +msgstr "" +"پیشخوان وردپرس به طور پیش‌فرض به مدیران سایت اجازه ویرایش فایل‌های PHP (مانند " +"فایل‌های پوسته ها و افزونه ها) را می‌دهد." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:205 +msgid "" +"This is often the first tool an attacker will use if able to login, since it " +"allows code execution." +msgstr "" +"معمولا این نخستین راهی است که یک هکر در صورت ورود به سایت از آن استفاده می " +"کند؛ زیرا از این طریق می تواند کدهای خودش را اجرا کند.\v" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:206 +msgid "" +"This feature will disable the ability for people to edit PHP files via the " +"dashboard." +msgstr "" +"این ویژگی امکان ویرایش فایل های PHP از طریق پیشخوان وردپرس را غیرفعال می کند." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:212 +msgid "Disable PHP File Editing" +msgstr "غیرفعال کردن ویرایش فایل PHP" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:224 +msgid "Disable Ability To Edit PHP Files" +msgstr "غیرفعال کردن ویرایش فایل‌های PHP" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:227 +msgid "" +"Check this if you want to remove the ability for people to edit PHP files " +"via the WP dashboard" +msgstr "" +"اگر می خواهید اجازه ویرایش فایل‌های PHP از طریق پیشخوان وردپرس را غیرفعال " +"کنید این گزینه را تیک بزنید." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:271 +msgid "" +"You have successfully saved the Prevent Access to Default WP Files " +"configuration." +msgstr "" +"شما با موفقیت تنظیمات \"جلوگیری از دسترسی به فایل‌های وردپرس\" را ذخیره کردید." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:275 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:115 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:269 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:480 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:619 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:106 +msgid "" +"Could not write to the .htaccess file. Please check the file permissions." +msgstr "" +"نمی توان در فایل .htaccess چیزی نوشت.لطفا مجوزهای این فایل را بررسی کنید." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:280 +msgid "WordPress Files" +msgstr "فایل‌های وردپرس" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:283 +#, php-format +msgid "" +"This feature allows you to prevent access to files such as %s, %s and %s " +"which are delivered with all WP installations." +msgstr "" +"این ویژگی امکان جلوگیری از دسترسی به فایل‌‎هایی مانند %s ، %s و %s را فراهم می " +"کند. این فایل‌ها به همراه هر نگارش وردپرس عرضه می شوند." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:284 +msgid "" +"By preventing access to these files you are hiding some key pieces of " +"information (such as WordPress version info) from potential hackers." +msgstr "" +"با جلوگیری از دسترسی به این فایل‌ها شما تعدادی از اطلاعات کلیدی (مانند نسخه " +"وردپرس) را از چشم هکرها پنهان می کنید." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:289 +msgid "Prevent Access to Default WP Files" +msgstr "جلوگیری از دسترسی به فایل‌های پیش‌فرض وردپرس" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:300 +msgid "Prevent Access to WP Default Install Files" +msgstr "جلوگیری از دسترسی به فایل‌های نصب پیش‌فرض وردپرس" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:303 +msgid "" +"Check this if you want to prevent access to readme.html, license.txt and wp-" +"config-sample.php." +msgstr "" +"اگر می خواهید جلو دسترسی به فایل‌های readme.html، license.txt و wp-config-" +"sample.php را بگیرید، این گزینه را تیک بزنید." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:307 +msgid "Save Setting" +msgstr "ذخیره تنظیمات" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:331 +msgid "System Logs" +msgstr "گزارش‌های سیستم" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:334 +msgid "" +"Sometimes your hosting platform will produce error or warning logs in a file " +"called \"error_log\"." +msgstr "" +"گاهی سیستم هاست شما گزارش‌های خطا یا هشدار در قالب فایل \"error_log\" تولید " +"می کند." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:335 +msgid "" +"Depending on the nature and cause of the error or warning, your hosting " +"server can create multiple instances of this file in numerous directory " +"locations of your WordPress installation." +msgstr "" +"بسته به نوع و دلیل بروز خطا یا هشدار، سیستم هاست شما می‌تواند چندین نسخه از " +"این فایل را در مسیرهای مختلف وردپرس ایجاد کند." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:336 +msgid "" +"By occassionally viewing the contents of these logs files you can keep " +"informed of any underlying problems on your system which you might need to " +"address." +msgstr "" +"با دیدن گاه به گاه درونمایه این فایل‌های گزارش شما می توانید از همه مشکلات " +"پنهان سیستم آگاه شوید." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:342 +msgid "View System Logs" +msgstr "دیدن گزارش‌های سیستم" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:347 +msgid "Enter System Log File Name" +msgstr "ورود نام فایل گزارش" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:349 +msgid "Enter your system log file name. (Defaults to error_log)" +msgstr "نام فایل‌ گزارش سیستم خود را وارد کنید. (پیش‌فرض error_log است)" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:352 +msgid "View Latest System Logs" +msgstr "دیدن تازه‌ترین گزارش های سیستم" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:354 +msgid "Loading..." +msgstr "بارگذاری..." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:371 +msgid "No system logs were found!" +msgstr "هیچ گزارشی یافت نشد!" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:424 +msgid "Set Recommended Permissions" +msgstr "تنظیم مجوزهای پیشنهادی" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:430 +msgid "No Action Required" +msgstr "کاری نیاز نیست." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:470 +#, php-format +msgid "Showing latest entries of error_log file: %s" +msgstr "نمایش تازه ترین نوشته‌های فایل error_log : %s" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:25 +msgid "Basic Firewall Rules" +msgstr "دستورهای پایه دیوارآتش" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:26 +msgid "Additional Firewall Rules" +msgstr "دستورهای اضافی دیوارآتش" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:27 +msgid "5G Blacklist Firewall Rules" +msgstr "دستورهای دیوارآتش لیست سیاه 5G" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:28 +msgid "Brute Force Prevention" +msgstr "جلوگیری از Brute Force" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:111 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:102 +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:96 +msgid "Settings were successfully saved" +msgstr "تنظیمات به خوبی ذخیره شد." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:120 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:485 +msgid "Firewall Settings" +msgstr "تنظیمات دیوارآتش" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:127 +#, php-format +msgid "" +"This should not have any impact on your site's general functionality but if " +"you wish you can take a %s of your .htaccess file before proceeding." +msgstr "" +"این کار نباید هیچ‌گونه آسیبی به کارایی سایت شما وارد کند اما شما اگر بخواهید " +"می توانید یک %s از فایل .htaccess خود بگیرید." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:128 +msgid "" +"The features in this tab allow you to activate some basic firewall security " +"protection rules for your site." +msgstr "این ویژگی" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:129 +msgid "" +"The firewall functionality is achieved via the insertion of special code " +"into your currently active .htaccess file." +msgstr "" +"کارایی دیوارآتش از راه وارد کردن کدهای ویژه در فایل .htaccess شما به دست می " +"آید." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:135 +msgid "Basic Firewall Settings" +msgstr "تنظیمات پایه دیوارآتش" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:143 +msgid "Enable Basic Firewall Protection" +msgstr "به کار انداختن محافظت دیوارآتش پایه" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:146 +msgid "Check this if you want to apply basic firewall protection to your site." +msgstr "" +"اگر می‌خواهید محافظت پایه دیوارآتش روی سایت شما به کار گرفته شود، این گزینه " +"را تیک بزنید." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:150 +msgid "" +"This setting will implement the following basic firewall protection " +"mechanisms on your site:" +msgstr "این تنظیم ساز و کارهای محفاظت زیر را در سایت شما به کار می گیرد:" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:151 +msgid "1) Protect your htaccess file by denying access to it." +msgstr "1) حفاظت از فایل .htaccess به وسیله جلوگیری از دسترسی به آن" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:152 +msgid "2) Disable the server signature." +msgstr "2) از کار انداختن امضای سرور (server signature)" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:153 +msgid "3) Limit file upload size (10MB)." +msgstr "3) محدود کردن حجم قابل آپلود (10 مگابایت)" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:154 +msgid "4) Protect your wp-config.php file by denying access to it." +msgstr "4) حفاظت از فایل wp-config.php به وسیله جلوگیری از دسترسی به آن" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:155 +msgid "" +"The above firewall features will be applied via your .htaccess file and " +"should not affect your site's overall functionality." +msgstr "" +"حفاظت های بالا از راه فایل .htaccess شما به کار گرفته می شود و نبایستی به " +"کارایی سایت شما آسیب بزند." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:156 +msgid "" +"You are still advised to take a backup of your active .htaccess file just in " +"case." +msgstr "هنوز هم به شما سفارش می‌شود از فایل .htaccess خود پشتیبان بگیرید." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:165 +msgid "WordPress Pingback Vulnerability Protection" +msgstr "حفاظت آسیب‌پذیری Pingback وردپرس" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:173 +msgid "Enable Pingback Protection" +msgstr "فعال کردن حفاظت Pingback" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:176 +msgid "" +"Check this if you are not using the WP XML-RPC functionality and you want to " +"enable protection against WordPress pingback vulnerabilities." +msgstr "" +"این گزینه را تیک بزنید اگر از کارایی WP XML-RPC استفاده نمی‌کنید و می‌خواهید " +"از آسیب‌پذیری Pingback وردپرس حفاظت کنید." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:180 +msgid "" +"This setting will add a directive in your .htaccess to disable access to the " +"WordPress xmlrpc.php file which is responsible for the XML-RPC functionality " +"such as pingbacks in WordPress." +msgstr "" +"این تنظیم یک دستور‌دهنده (directive) در فایل .htaceess شما وارد می‌کند. این " +"دستوردهنده دسترسی به فایل xmlrpc.php وردپرس را قطع می‌کند.این فایل مسئولیت " +"کارایی‌های XML-RPC (مانند pingback) را برعهده دارد." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:181 +msgid "" +"Hackers can exploit various pingback vulnerabilities in the WordPress XML-" +"RPC API in a number of ways such as:" +msgstr "" +"هکرها می‌توانند از آسیب‌پذیری های مختلف Pingback در XML-RPC API وردپرس " +"استفاده کنند. تعدادی از این راه‌ها در زیر نوشته شده:" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:182 +msgid "1) Denial of Service (DoS) attacks" +msgstr "1) حمله‌های رد سرویس (DoS)" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:183 +msgid "2) Hacking internal routers." +msgstr "2) هک کردن مسیریاب های داخلی" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:184 +msgid "3) Scanning ports in internal networks to get info from various hosts." +msgstr "" +"3) اسکن پورت‌ها در شبکه‌های داخلی؛برای بدست آوردن اطلاعات از هاست‌های مختلف" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:185 +msgid "" +"Apart from the security protection benefit, this feature may also help " +"reduce load on your server, particularly if your site currently has a lot of " +"unwanted traffic hitting the XML-RPC API on your installation." +msgstr "" +"جدا از مسئله امنیتی، این ویژگی فشار روی سِرور شما را کم می‌کند؛ چنانچه سایت " +"شما در حال حاضر دارای حجم بزرگی از ترافیک‌ ناخواسته است (که بوسیله XML-RPC " +"API بوجود می‎‌آید)." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:186 +msgid "" +"NOTE: You should only enable this feature if you are not currently using the " +"XML-RPC functionality on your WordPress installation." +msgstr "" +"توجه: چنانچه شما از قابلیت XML-RPC استفاده می‌کنید، نباید این ویژگی را فعال " +"کنید." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:193 +msgid "Save Basic Firewall Settings" +msgstr "ذخیره تنظیمات دیوارآتش پایه" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:265 +msgid "" +"You have successfully saved the Additional Firewall Protection configuration" +msgstr "شما با موفقیت تنظیمات اضافی دیوار آتش را ذخیره کردید." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:279 +msgid "Additional Firewall Protection" +msgstr "موارد اضافی دیوار آتش" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:283 +#, php-format +msgid "" +"Due to the nature of the code being inserted to the .htaccess file, this " +"feature may break some functionality for certain plugins and you are " +"therefore advised to take a %s of .htaccess before applying this " +"configuration." +msgstr "" +"با توجه به ماهیت کدهایی که در فایل .htaccess وارد می‌شود، این ویژگی ممکن است " +"کارکرد بعضی از افزونه‌ها را مختل کند. از این رو به شما سفارش می‌شود حتما قبل " +"از به کارگیری این ویژگی، یک %s ." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:285 +msgid "" +"This feature allows you to activate more advanced firewall settings to your " +"site." +msgstr "این ویژگی به شما امکان فعال‌سازی تنظیمات پیشرفته دیوارآتش را می دهد." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:286 +msgid "" +"The advanced firewall rules are applied via the insertion of special code to " +"your currently active .htaccess file." +msgstr "" +"ویژگی‌های پیشرفته دیوارآتش از راه وارد کردن کدهای مخصوص در فایل .htaccess " +"شما، به کار گرفته می‌شود." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:295 +msgid "Listing of Directory Contents" +msgstr "فهرست کردن محتوای دایرکتوری" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:304 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:80 +msgid "Disable Index Views" +msgstr "از کار انداختن مشاهده محتوا به صورت فهرست (Index Views)" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:307 +msgid "Check this if you want to disable directory and file listing." +msgstr "" +"اگر می‌خواهید فهرست کردن دایرکتوری و فایل‌ها را از کار بندازید، این گزینه را " +"تیک بزنید." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:312 +msgid "" +"By default, an Apache server will allow the listing of the contents of a " +"directory if it doesn't contain an index.php file." +msgstr "" +"به صورت پیش‌فرض، سرور آپاچی اجازه فهرست کردن محتوای یک دایرکتوری را می‌دهد.(در " +"صورت نبودن فایل index.php در آن دایرکتوری)" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:314 +msgid "This feature will prevent the listing of contents for all directories." +msgstr "" +"این ویژگی امکان فهرست کردن محتوا را برای تمام دایرکتوری‌ها غیرفعال می‌کند." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:316 +msgid "" +"NOTE: In order for this feature to work \"AllowOverride\" must be enabled in " +"your httpd.conf file. Ask your hosting provider to check this if you don't " +"have access to httpd.conf" +msgstr "" +"توجه: برای به کارگیری این ویژگی باید \"AllowOverride\" در فایل httpd.conf " +"فعال شده باشد. چنانچه به این فایل دسترسی ندارید از ارائه دهنده خدمات هاست " +"خود بخواهید این مورد را بررسی کند." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:325 +msgid "Trace and Track" +msgstr "ردیابی و رهگیری" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:334 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:81 +msgid "Disable Trace and Track" +msgstr "از کار انداختن ردیابی و رهگیری" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:337 +msgid "Check this if you want to disable trace and track." +msgstr "اگر می‌خواهید ردیابی و رهگیری را از کار بندازید این گزینه را تیک بزنید." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:342 +msgid "" +"HTTP Trace attack (XST) can be used to return header requests and grab " +"cookies and other information." +msgstr "" +"حمله ردیابی HTTP یا XST می‌تواند برای بازگرداندن درخواست‌های Header و گرفتن " +"کوکی ها و دیگر اطلاعات استفاده شود." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:344 +msgid "" +"This hacking technique is usually used together with cross site scripting " +"attacks (XSS)." +msgstr "" +"این تکنیک هک کردن معمولا همراه با حمله‌های برنامه نویسی متقابل سایت (XSS) " +"استفاده می‌شود." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:346 +msgid "" +"Disabling trace and track on your site will help prevent HTTP Trace attacks." +msgstr "" +"از کار انداختن ردیابی و رهگیری روی سایت شما از بروز حملات ردیابی HTTP " +"جلوگیری می‌کند." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:355 +msgid "Proxy Comment Posting" +msgstr "فرستادن دیدگاه از راه پراکسی" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:365 +msgid "Forbid Proxy Comment Posting" +msgstr "ممنوع کردن فرستادن دیدگاه از راه پراکسی" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:368 +msgid "Check this if you want to forbid proxy comment posting." +msgstr "" +"اگر می‌خواهید فرستادن دیدگاه از راه پراکسی را غیرفعال کنید، این گزینه را تیک " +"بزنید." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:373 +msgid "" +"This setting will deny any requests that use a proxy server when posting " +"comments." +msgstr "" +"همه درخواست‌های فرستادن دیدگاه که هنگام فرستادن از یک پراکسی سِرور استفاده " +"می‌کنند، توسط این تنظیم رد می‌شوند." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:374 +msgid "" +"By forbidding proxy comments you are in effect eliminating some SPAM and " +"other proxy requests." +msgstr "" +"با ممنوع کردن فرستادن دیدگاه از راه پراکسی، در عمل شما جلوی بسیاری از SPAMها " +"و سایر درخواست‌های پراکسی را می‌گیرید." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:383 +msgid "Bad Query Strings" +msgstr "Bad Query Strings" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:393 +msgid "Deny Bad Query Strings" +msgstr "جلوگیری از Bad Query Strings" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:396 +msgid "This will help protect you against malicious queries via XSS." +msgstr "این ویژگی از شما در برابر کوئری‌های خراب‌کارانه XSS ، محافظت می‌کند." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:401 +msgid "" +"This feature will write rules in your .htaccess file to prevent malicious " +"string attacks on your site using XSS." +msgstr "" +"این ویژگی دستورهایی در فایل .htaccess شما وارد می‌کند که جلوی حملات رشته‌های " +"خراب‌کارانه XSS را می‌گیرد." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:402 +msgid "" +"NOTE: Some of these strings might be used for plugins or themes and hence " +"this might break some functionality." +msgstr "" +"توجه: بعضی از این رشته‌ها ممکن است برای افزونه‌ها و پوسته‌ها استفاده شوند " +"بنابراین این ویژگی ممکن است برخی از کارکردها را مختل کند." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:403 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:433 +msgid "" +"You are therefore strongly advised to take a backup of your active .htaccess " +"file before applying this feature." +msgstr "" +"پس به شما شدیدا سفارش می‌شود قبل از به‌کارگیری این قابلیت یک فایل پشتیبان از ." +"htaccess فعلی خود بگیرید." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:412 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:84 +msgid "Advanced Character String Filter" +msgstr "فیلتر پیشرفته برای رشته‌های کارکتری" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:422 +msgid "Enable Advanced Character String Filter" +msgstr "فعال کردن فیلتر پیشرفته رشته‌های کارکتری" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:425 +msgid "This will block bad character matches from XSS." +msgstr "این ویژگی مانع جور شدن کارکترهای بد از XSS می‌شود." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:430 +msgid "" +"This is an advanced character string filter to prevent malicious string " +"attacks on your site coming from Cross Site Scripting (XSS)." +msgstr "" +"این یک فیلتر پیشرفته رشته‌های کارکتری است که برای جلوگیری از حملات خراب‌کارانه " +"XSS به سایت شما، به کار می‌رود." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:431 +msgid "" +"This setting matches for common malicious string patterns and exploits and " +"will produce a 403 error for the hacker attempting the query." +msgstr "" +"این تنظیم الگوهای رشته‌ای که معمولا برای حمله به کار می‌روند شناسایی می‌کند و " +"در صورت تلاش هکر برای دستیابی به اطلاعات خطای 403 را به او نشان می‌دهد." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:432 +msgid "NOTE: Some strings for this setting might break some functionality." +msgstr "" +"توجه: بعضی رشته‌ها برای این تنظیم ممکن است برخی از کارکردها را مختل کنند." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:441 +msgid "Save Additional Firewall Settings" +msgstr "ذخیره تنظیمات اضافی دیوارآتش" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:476 +msgid "You have successfully saved the 5G Firewall Protection configuration" +msgstr "شما با موفقیت پیکربندی دیوارآتش 5G را ذخیره کردید." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:489 +#, php-format +msgid "" +"This feature allows you to activate the 5G firewall security protection " +"rules designed and produced by %s." +msgstr "" +"این ویژگی به شما امکان به کارگیری لایه حفاظتی 5G را می‌دهد که توسط %s طراحی و " +"توسعه داده شده است." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:490 +msgid "" +"The 5G Blacklist is a simple, flexible blacklist that helps reduce the " +"number of malicious URL requests that hit your website." +msgstr "" +"لیست سیاه 5G یک لیست‌سیاه ساده و انعطاف‌پذیر است که تعداد درخواست‌های " +"خرابکارانه URL به سایت شما را کاهش می‌دهد." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:491 +msgid "" +"The added advantage of applying the 5G firewall to your site is that it has " +"been tested and confirmed by the people at PerishablePress.com to be an " +"optimal and least disruptive set of .htaccess security rules for general WP " +"sites running on an Apache server or similar." +msgstr "" +"مزیت استفاده از دیوارآتش 5G این است که این دیوار آتش توسط اعضای سایت " +"PerishablePress.com آزمایش و تأیید شده که بهینه‌ترین تنظیمات امنیتی را به " +"سایت‌های وردپرس روی سِرور Apache می‌دهد." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:492 +#, php-format +msgid "" +"Therefore the 5G firewall rules should not have any impact on your site's " +"general functionality but if you wish you can take a %s of your .htaccess " +"file before proceeding." +msgstr "" +"بنابراین دستورهای 5G نبایستی روی کارکرد عمومی سایت شما تأثیر بگذارد. اما اگر " +"شما بخواهید، پیش از ادامه دادن می‌توانید یک %s از فایل .htaccess فعلی خود " +"بگیرید." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:498 +msgid "5G Blacklist/Firewall Settings" +msgstr "تنظیمات لیست‌سیاه/دیوارآتش 5G" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:510 +msgid "Enable 5G Firewall Protection" +msgstr "فعال کردن دیوارآتش 5G" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:513 +msgid "" +"Check this if you want to apply the 5G Blacklist firewall protection from " +"perishablepress.com to your site." +msgstr "" +"اگر می خواهید دیوارآتش 5G ارائه شده توسط perishablepress.com را فعال کنید، " +"این گزینه را تیک بزنید." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:517 +msgid "" +"This setting will implement the 5G security firewall protection mechanisms " +"on your site which include the following things:" +msgstr "این تنظیم ساز‌وکارهای حفاظتی 5G زیر را روی سایت شما اعمال می‌کند:" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:518 +msgid "1) Block forbidden characters commonly used in exploitative attacks." +msgstr "" +"1) مسدودسازی کارکترهای غیرمجازی که معمولا در حملات سودجویانه استفاده می‌شوند." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:519 +msgid "2) Block malicious encoded URL characters such as the \".css(\" string." +msgstr "2) مسدود سازی کارکترهای URL رمزگذاری شده مانند رشته \".css(\" ." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:520 +msgid "" +"3) Guard against the common patterns and specific exploits in the root " +"portion of targeted URLs." +msgstr "3) حفاظت در برابر الگوهای معمول و سوء استفاده های خاص در ریشه URLها." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:521 +msgid "" +"4) Stop attackers from manipulating query strings by disallowing illicit " +"characters." +msgstr "" +"4) متوقف کردن مهاجمان از دستکاری رشته‌های Query با ممانعت از کارکترهای غیرمجاز" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:522 +msgid "....and much more." +msgstr "و بسیاری دیگر..." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:528 +msgid "Save 5G Firewall Settings" +msgstr "ذخیره تنظیمات دیوارآتش 5G" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:556 +msgid "" +"Settings have not been saved - your secret word must consist only of " +"alphanumeric characters, ie, letters and/or numbers only!" +msgstr "" +"تنظیمات ذخیره نشده است - واژه محرمانه شما باید فقط شامل حروف، اعداد و یا " +"مخلوطی از حرف و عدد باشد." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:574 +msgid "" +"You have successfully enabled the cookie based brute force prevention feature" +msgstr "ویژگی جلوگیری از brute force برپایه کوکی، با موفقیت فعال شد." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:575 +msgid "" +"From now on you will need to log into your WP Admin using the following URL:" +msgstr "از هم‌اکنون شما باید از آدرس زیر وارد پیشخوان وردپرس شوید:" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:577 +msgid "" +"It is important that you save this URL value somewhere in case you forget " +"it, OR," +msgstr "" +"این مهم است که شما این آدرس را جایی ذخیره کنید؛ چون ممکن است آن را فراموش " +"کنید. یا اینکه" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:578 +#, php-format +msgid "simply remember to add a \"?%s=1\" to your current site URL address." +msgstr "" +"به یاد داشته باشید که یک \"?%s=1\" به انتهای آدرس فعلی سایت خود اضافه کنید." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:584 +msgid "" +"You have successfully saved cookie based brute force prevention feature " +"settings." +msgstr "تنظیمات جلوگیری از brute force برپایه کوکی با موفقیت ذخیره شد." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:629 +msgid "Brute Force Prevention Firewall Settings" +msgstr "دیوارآتش جلوگیری از Brute Force" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:634 +msgid "" +"A Brute Force Attack is when a hacker tries many combinations of usernames " +"and passwords until they succeed in guessing the right combination." +msgstr "" +"حمله بی‌رحمانه یا Brute Force Attack وقتی اتفاق می‌افتد که هکر ترکیب‌های مختلف " +"زیادی از نام کاربری و رمزعبور را آزمایش می‌کند تا بالاخره موفق بشود ترکیب " +"درست را حدس بزند." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:635 +msgid "" +"Due to the fact that at any one time there may be many concurrent login " +"attempts occurring on your site via malicious automated robots, this also " +"has a negative impact on your server's memory and performance." +msgstr "" +"با توجه به این واقعیت که در هر زمان ممکن است از طریق روبات های مخرب خودکار " +"تلاش‌های زیادی برای ورود به سایت شما رخ دهد، در نتیجه Brute force تأثیر منفی " +"روی عملکرد سِرور شما می‌گذارد/" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:636 +msgid "" +"The features in this tab will stop the majority of Brute Force Login Attacks " +"at the .htaccess level thus providing even better protection for your WP " +"login page and also reducing the load on your server because the system does " +"not have to run PHP code to process the login attempts." +msgstr "" +"این ویژگی اکثریت حملات Brute Force را از طریق فایل .htaccess متوقف می‌کند. " +"بنابراین از برگه ورود وردپرس شما محافظت بهتری به عمل می‌آید. همچنین این کار " +"باعث کاهش فشار روی سِرور می‌شود؛زیرا سیستم مجبور نیست برای هر تلاش ورود تعداد " +"زیادی کد php را اجرا کند." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:643 +#, php-format +msgid "" +"Even though this feature should not have any impact on your site's general " +"functionality you are strongly encouraged to take a %s of your ." +"htaccess file before proceeding." +msgstr "" +"هرچند این ویژگی نباید هیچگونه تأثیری روی کارکرد سایت شما بگذارد اما " +"شدیدا به شما سفارش می‌شود که قبل از انجام این کار یک %s از فایل ." +"htaccess خود بگیرید." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:644 +msgid "" +"If this feature is not used correctly, you can get locked out of your site. " +"A backup file will come in handy if that happens." +msgstr "" +"اگر این ویژگی به درستی استفاده نشود ممکن است که امکان ورود به سایت برای خود " +"شما هم قفل شود.در چنین حالتی یک فایل پشتیبان بسیار کارآمد است." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:645 +#, php-format +msgid "" +"To learn more about how to use this feature please watch the following %s." +msgstr "برای آموختن بیشتر درباره استفاده از این ویژگی لطفا این %s را ببینید." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:654 +msgid "Cookie Based Brute Force Login Prevention" +msgstr "جلوگیری از Brute Force بر پایه کوکی" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:665 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:79 +msgid "Enable Brute Force Attack Prevention" +msgstr "فعال کردن جلوگیری از Brute Force" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:668 +msgid "" +"Check this if you want to protect your login page from Brute Force Attack." +msgstr "" +"اگر می‌خواهید برگه ورود خود را از حمله Brute Force حفظ کنید، این گزینه را تیک " +"بزنید." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:673 +msgid "" +"This feature will deny access to your WordPress login page for all people " +"except those who have a special cookie in their browser." +msgstr "" +"این گزینه دسترسی همه کاربران را به صفحه ورود وردپرس قطع می‌کند به جز کاربرانی " +"که در مرورگر خود یک کوکی ویژه داشته باشند." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:675 +msgid "To use this feature do the following:" +msgstr "برای بهره‌گیری از این ویژگی به شکل زیر عمل کنید:" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:677 +msgid "1) Enable the checkbox." +msgstr "1) گزینه را تیک بزنید." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:679 +msgid "" +"2) Enter a secret word consisting of alphanumeric characters which will be " +"difficult to guess. This secret word will be useful whenever you need to " +"know the special URL which you will use to access the login page (see point " +"below)." +msgstr "" +"2) یک واژه محرمانه(شامل حرف و عدد) که حدس زدن آن سخت باشد، وارد کنید. این " +"واژه محرمانه وقتی به کار می‌آید که شما بخواهید بدانید از چه آدرس خاصی برای " +"دسترسی به صفحه ورود باید استفاده کنید. (مورد پایینی را ببینید)" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:681 +msgid "" +"3) You will then be provided with a special login URL. You will need to use " +"this URL to login to your WordPress site instead of the usual login URL. " +"NOTE: The system will deposit a special cookie in your browser which will " +"allow you access to the WordPress administration login page." +msgstr "" +"3) سپس یک URL ویژه به شما داده می‌شود. شما برای ورود به سایت باید از این URL " +"استفاده کنید(به جای استفاده از آدرس معمولی ورود). توجه: سیستم یک کوکی خاص را " +"در مرورگر شما ذخیره می‌کند که به شما اجازه دسترسی به صفحه ورود را خواهد داد." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:683 +msgid "" +"Any person trying to access your login page who does not have the special " +"cookie in their browser will be automatically blocked." +msgstr "" +"هرکسی که تلاش کند به صفحه ورود شما دست یابد و این کوکی ویژه را در مرورگر " +"خودش نداشته باشد به طور خودکار بلاک می‌شود." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:690 +msgid "Secret Word" +msgstr "واژه محرمانه" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:692 +msgid "" +"Choose a secret word consisting of alphanumeric characters which you can use " +"to access your special URL. Your are highly encouraged to choose a word " +"which will be difficult to guess." +msgstr "" +"یک واژه محرمانه شامل(حروف یا اعداد، یا هر دو) انتخاب کنید که بتوانید از آن " +"برای دسترسی به URL ویژه استفاده کنید. به شما سفارش می‌کنیم واژه‌ای را انتخاب " +"کنید که حدس زدن آن سخت باشد." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:696 +msgid "Re-direct URL" +msgstr "آدرس تغییر مسیر (Re-direct URL)" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:700 +msgid "" +"Specify a URL to redirect a hacker to when they try to access your WordPress " +"login page." +msgstr "" +"یک آدرس مشخص کنید که وقتی یک هکر تلاش می‌کند به برگه ورود شما دست یابد به آن " +"آدرس منتقل شود." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:707 +msgid "" +"The URL specified here can be any site's URL and does not have to be your " +"own. For example you can be as creative as you like and send hackers to the " +"CIA or NSA home page." +msgstr "" +"آدرسی که اینجا مشخص می‌کنید، می‌تواند متعلق به هر سایتی باشد و نیاز نیست حتما " +"آدرسی در سایت خود شما باشد. برای نمونه شما می‌توانید خلاقیت به خرج دهید و " +"هکرها را به سایت CIA یا NSA هدایت کنید!" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:709 +msgid "" +"This field will default to: http://127.0.0.1 if you do not enter a value." +msgstr "" +"اگر شما چیزی وارد نکنید مقدار پیش‌فرض به کار گرفته می‌شود: http://127.0.0.1" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:711 +msgid "Useful Tip:" +msgstr "راهنمایی کارآمد:" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:713 +msgid "" +"It's a good idea to not redirect attempted brute force login attempts to " +"your site because it increases the load on your server." +msgstr "" +"این ایده خوبی هست که حملات Brute force را به یک آدرس در سایت خودتان منتقل " +"نکنید؛ چون این کار باعث افزایش فشار روی سِرور شما می‌شود." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:715 +msgid "" +"Redirecting a hacker or malicious bot back to \"http://127.0.0.1\" is ideal " +"because it deflects them back to their own local host and puts the load on " +"their server instead of yours." +msgstr "" +"هدایت یک هکر یا یک ربات خرابکار به \"http://127.0.0.1\" ایده بسیار خوبی " +"است. زیرا این کار آنها را به هاست خودشان بر می‌گرداند و از این طریق فشار روی " +"سِرور آنها وارد می‌شود نه سِرور شما." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:722 +msgid "My Site Has Posts Or Pages Which Are Password Protected" +msgstr "سایت من نوشته‌ها یا برگه‌هایی دارد که با رمز محافظت می‌شوند." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:725 +msgid "" +"Check this if you are using the native WordPress password protection feature " +"for some or all of your blog posts or pages." +msgstr "" +"اگر شما از قابلیت داخلی وردپرس برای رمزگذاری همه یا بعضی از نوشته‌ها و " +"برگه‌های خود استفاده می‌کنید؛ این گزینه را تیک بزنید." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:730 +msgid "" +"In the cases where you are protecting some of your posts or pages using the " +"in-built WordPress password protection feature, a few extra lines of " +"directives and exceptions need to be added to your .htacces file so that " +"people trying to access pages are not automatically blocked." +msgstr "" +"در موارد که در آن شما از برخی از نوشته ها و یا برگه‌های خود با استفاده از " +"ویژگی درونی وردپرس(رمزگذاری نوشته‌ها) محافظت می‌کنید، نیاز است که چند خط کوتاه " +"دستورهای اضافی به فایل .htaccess شما اضافه شود؛ بنابراین افرادی که می‌خواهد " +"برگه‌ها را ببینند به طور خودکار بلاک نمی‌شوند." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:732 +msgid "" +"By enabling this checkbox the plugin will add the necessary rules and " +"exceptions to your .htacces file so that people trying to access these pages " +"are not automatically blocked." +msgstr "" +"با فعال کردن این گزینه، افزونه دستورها و استثنائات لازم را به فایل .htaccess " +"شما اضافه می‌کند بنابراین کسانی که تلاش می‌کنند به برگه‌های محافظت شده برسند به " +"صورت خودکار بلاک نمی‌شوند." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:734 +msgid "Helpful Tip:" +msgstr "راهنمایی کارآمد:" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:736 +msgid "" +"If you do not use the WordPress password protection feature for your posts " +"or pages then it is highly recommended that you leave this checkbox disabled." +msgstr "" +"اگر شما از ویژگی رمزگذاری وردپرس برای برگه‌ها یا نوشته‌ها استفاده نمی‌کنید، " +"شدیدا سفارش می‌شود این گزینه را غیرفعال بگذارید." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:743 +msgid "My Site Has a Theme or Plugins Which Use AJAX" +msgstr "سایت من پوسته یا افزونه‌ای دارد که از AJAX استفاده می‌کند" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:746 +msgid "Check this if your site uses AJAX functionality." +msgstr "اگر سایت شما از AJAX استفاده می‌کند این گزینه را تیک بزنید." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:751 +msgid "" +"In the cases where your WordPress installation has a theme or plugins which " +"use AJAX, a few extra lines of directives and exceptions need to be added to " +"your .htacces file to prevent AJAX requests from being automatically blocked " +"by the brute force prevention feature." +msgstr "" +"در مواردی که سایت وردپرس شما پوسته یا افزونه‌ای دارد که از AJAX استفاده " +"می‌کند، نیاز است که چند خط کوتاه دستورهای اضافی به فایل .htaccess شما اضافه " +"شود؛ بنابراین درخواست‌های AJAX به صورت خودکار بلاک نمی‌شوند." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:753 +msgid "" +"By enabling this checkbox the plugin will add the necessary rules and " +"exceptions to your .htacces file so that AJAX operations will work as " +"expected." +msgstr "" +"با فعال کردن این گزینه، افزونه دستورها و استثنائات لازم را به فایل .htaccess " +"شما اضافه می‌کند بنابراین کارکردهای AJAX مختل نمی‌شود." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:768 +msgid "The cookie test was successful. You can now enable this feature." +msgstr "آزمایش کوکی موفق بود. شما هم اکنون می‌توانید این ویژگی را فعال کنید." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:771 +msgid "Save Feature Settings" +msgstr "ذخیره تنظیمات ویژگی" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:778 +msgid "" +"The cookie test failed on this server. So this feature cannot be used on " +"this site." +msgstr "" +"آزمایش کوکی ناموفق بود. پس نمی‌توان از این ویژگی روی این سایت استفاده کرد." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:784 +msgid "" +"Before using this feature you are required to perform a cookie test first. " +"This is to make sure that your browser cookie is working correctly and that " +"you won't lock yourself out." +msgstr "" +"پیش از استفاده از این ویژگی شما باید یک آزمایش کوکی انجام دهید. این کار برای " +"اطمینان از کارکرد درست کوکی روی مرورگر شماست که باعث می‌شود دسترسی خودتان به " +"سایت قطع نشود." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:786 +msgid "Perform Cookie Test" +msgstr "انجام آزمایش کوکی" + +#: all-in-one-wp-security/admin/wp-security-list-acct-activity.php:79 +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:86 +#: all-in-one-wp-security/admin/wp-security-list-locked-ip.php:80 +#: all-in-one-wp-security/admin/wp-security-list-locked-ip.php:91 +#: all-in-one-wp-security/admin/wp-security-list-login-fails.php:78 +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:82 +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:93 +msgid "Please select some records using the checkboxes" +msgstr "لطفا تعدادی رکورد را با استفاده از جعبه‌تیک انتخاب کنید" + +#: all-in-one-wp-security/admin/wp-security-list-acct-activity.php:107 +#: all-in-one-wp-security/admin/wp-security-list-login-fails.php:107 +msgid "The selected entries were deleted successfully!" +msgstr "رکوردهای انتخاب شده با موفقیت پاک شدند." + +#: all-in-one-wp-security/admin/wp-security-list-acct-activity.php:120 +#: all-in-one-wp-security/admin/wp-security-list-login-fails.php:119 +msgid "The selected entry was deleted successfully!" +msgstr "رکورد انتخابی با موفقیت پاک شد." + +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:139 +msgid "" +"The selected IP addresses were saved in the blacklist configuration settings." +msgstr "IP آدرس‌های انتخابی در پیکربندی لیست‌سیاه ذخیره می‌شوند." + +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:153 +msgid "" +"The .htaccess file was successfully modified to include the selected IP " +"addresses." +msgstr "IP آدرس‌های انتخابی با موفقیت به فایل .htaccess افزوده شدند." + +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:159 +msgid "" +"NOTE: The .htaccess file was not modified because you have disabled the " +"\"Enable IP or User Agent Blacklisting\" check box." +msgstr "" +"توجه: فایل .htaccess ویرایش نشد؛ زیرا شما گزینه \"قرار دادن IP یا نماینده " +"کاربری در لیست سیاه\" را فعال نکرده اید." + +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:160 +#, php-format +msgid "" +"To block these IP addresses you will need to enable the above flag in the %s " +"menu" +msgstr "" +"برای مسدود کردن این IP آدرس‌ها، شما باید flag بالا را در فهرست %s فعال کنید." + +#: all-in-one-wp-security/admin/wp-security-list-locked-ip.php:115 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:748 +msgid "The selected IP ranges were unlocked successfully!" +msgstr "محدوده IP های انتخابی آزاد شدند!" + +#: all-in-one-wp-security/admin/wp-security-list-locked-ip.php:124 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:757 +msgid "The selected IP range was unlocked successfully!" +msgstr "محدوده IP انتخاب‌شده آزاد شد!" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:118 +msgid "The selected accounts were approved successfully!" +msgstr "حساب‌های کاربری انتخاب‌شده تأیید شدند!" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:125 +msgid "The selected account was approved successfully!" +msgstr "حساب کاربری انتخاب‌شده آزاد شد!" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:146 +msgid "The selected accounts were deleted successfully!" +msgstr "حساب‌های کاربری انتخاب‌شده پاک شدند!" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:154 +msgid "The selected account was deleted successfully!" +msgstr "حساب کاربری انتخاب‌شده پاک شد!" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:22 +msgid "Visitor Lockout" +msgstr "قفل کردن بازدید" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:88 +msgid "Site lockout feature settings saved!" +msgstr "تنظیمات قفل کردن ذخیره شد!" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:93 +msgid "General Visitor Lockout" +msgstr "قفل کردن بازدید عمومی" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:99 +msgid "" +"This feature allows you to put your site into \"maintenance mode\" by " +"locking down the front-end to all visitors except logged in users with super " +"admin privileges." +msgstr "" +"این ویژگی به شما اجازه می دهد که با ممنوع کردن بازدیدکنندگان سایت خود را در " +"\"حالت تعمیر\" قرار دهید. در این حالت تنها مدیران قادر به دیدن سایت هستند." + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:100 +msgid "" +"Locking your site down to general visitors can be useful if you are " +"investigating some issues on your site or perhaps you might be doing some " +"maintenance and wish to keep out all traffic for security reasons." +msgstr "" +"قفل کردن سایت زمانی به کار می‌آید که شما بخواهید برخی مسائل را در سایت بررسی " +"کنید یا تعمیراتی در سایت انجام دهید و نخواهید در این مدت کسی سایت را ببیند." + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:105 +msgid "Enable Front-end Lockout" +msgstr "فعال سازی قفل کردن سایت" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:108 +msgid "" +"Check this if you want all visitors except those who are logged in as " +"administrator to be locked out of the front-end of your site." +msgstr "" +"اگر می‌خواهید نمای سایت را برای همه (به جز مدیران) قفل کنید، این گزینه را تیک " +"بزنید." + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:112 +msgid "Enter a Message:" +msgstr "یک پیام وارد کنید:" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:124 +msgid "" +"Enter a message you wish to display to visitors when your site is in " +"maintenance mode." +msgstr "" +"پیامی را که می‌خواهید بازدیدکنندگان هنگام مشاهده حالت تعمیر ببینند در این جا " +"وارد کنید." + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:131 +msgid "Save Site Lockout Settings" +msgstr "ذخیره تنظیمات قفل سایت" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:25 +msgid "General Settings" +msgstr "تنظیمات عمومی" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:28 +msgid "WP Meta Info" +msgstr "اطلاعات Metaی وردپرس" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:95 +msgid "All the security features have been disabled successfully!" +msgstr "همه ویژگی‌های امنیتی با موفقیت از کار انداخته شدند!" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:99 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:126 +msgid "" +"Could not write to the .htaccess file. Please restore your .htaccess file " +"manually using the restore functionality in the \".htaccess File\"." +msgstr "" +"نمی‌توان در فایل .htaccess نوشت. لطفا فایل .htaccess خود را با مراجه به قسمت " +"\"فایل .htaccess\". بازگردانی کنید." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:104 +msgid "" +"Could not write to the wp-config.php. Please restore your wp-config.php file " +"manually using the restore functionality in the \"wp-config.php File\"." +msgstr "" +"نمی‌توان در فایل wp-config.php نوشت. لطفا فایل wp-config.php خود را با مراجه " +"به قسمت \"فایل wp-config.php\". بازگردانی کنید." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:122 +msgid "All firewall rules have been disabled successfully!" +msgstr "همه دستورهای دیوارآتش با موفقیت از کار انداخته شدند!" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:136 +msgid "WP Security Plugin" +msgstr "افزونه امنیت فراگیر وردپرس" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:138 +msgid "" +"Thank you for using our WordPress security plugin. There are a lot of " +"security features in this plugin." +msgstr "" +"از شما سپاسگزاریم که از افزونه امنیت وردپرس ما استفاده می‌کنید. در این افزونه " +"ویژگی‌های امنیتی بسیاری وجود دارد." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:139 +msgid "" +"Go through each menu items and enable the security options to add more " +"security to your site. Start by activating the basic features first." +msgstr "" +"به هرکدام از گزینه‌های فهرست بروید و با فعال کردن ویژگی‌های امنیتی، سایت خود " +"را امن‌تر کنید. با فعال کردن ویژگی‌های پایه شروع کنید." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:140 +msgid "" +"It is a good practice to take a backup of your .htaccess file, database and " +"wp-config.php file before activating the security features. This plugin has " +"options that you can use to backup those resources easily." +msgstr "" +"این یک تمرین خوب است که پیش از فعال‌کردن ویژگی امنیتی یک پشتیبان از فایل ." +"htaccess ، پایگاه‌داده و فایل wp-config.php خودتان بگیرید. این افزونه " +"گزینه‌هایی دارد که با آنها به آسانی می‌توانید از فایل‌های ذکر شده پشتیبان تهیه " +"کنید." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:143 +msgid "Backup your database" +msgstr "پشتیبان‌گیری از پایگاه‌داده" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:144 +msgid "Backup .htaccess file" +msgstr "پشتیبان‌گیری از فایل .htaccess" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:145 +msgid "Backup wp-config.php file" +msgstr "پشتیبان‌گیری از فایل wp-config.php" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:151 +msgid "Disable Security Features" +msgstr "از کار انداختن ویژگی امنیتی" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:157 +msgid "" +"If you think that some plugin functionality on your site is broken due to a " +"security feature you enabled in this plugin, then use the following option " +"to turn off all the security features of this plugin." +msgstr "" +"اگر فکر می‌کنید که یکی از ویژگی‌های امنیتی این افزونه باعث اختلال در کارکرد " +"سایت شما شده است با استفاده از گزینه زیر می‌توانید همه ویژگی‌های امنیتی این " +"افزونه را از کار بیندازید." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:161 +msgid "Disable All Security Features" +msgstr "از کار انداختن همه ویژگی‌های امنیتی" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:167 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:177 +msgid "Disable All Firewall Rules" +msgstr "از کار انداختن همه دستورهای دیوارآتش" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:173 +msgid "" +"This feature will disable all firewall rules which are currently active in " +"this plugin and it will also delete these rules from your .htacess file. Use " +"it if you think one of the firewall rules is causing an issue on your site." +msgstr "" +"این ویژگی همه دستورهای دیوارآتش را که هم اکنون فعال است، از کار می‌اندازد و " +"همچنین این دستورها را از فایل .htaccess شما پاک می‌کند. اگر فکر می‌کنید یکی از " +"دستورهای دیوارآتش باعث بروز مشکل در سایت شما شده، از این ویژگی استفاده کنید." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:206 +msgid "" +"Your .htaccess file was successfully backed up! Using an FTP program go to " +"the \"backups\" directory of this plugin to save a copy of the file to your " +"computer." +msgstr "" +"فایل .htaccess شما با موفقیت پشتیبان‌گیری شد. با یک نرم‌افزار FTP به پوشه " +"\"backups\" در مسیر نصب این افزونه بروید تا یک نسخه از پشتیبان را در " +"کامپیوتر خود ذخیره کنید." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:216 +msgid "" +"htaccess file rename failed during backup. Please check your root directory " +"for the backup file using FTP." +msgstr "" +"تغییر نام فایل .htaccess در هنگام پشتیبان‌گیری ناموفق بود. لطفا مسیر root " +"هاست خود را برای یافتن فایل پشتیبان چک کنید. (با نرم افزار FTP)" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:222 +msgid "htaccess backup failed." +msgstr "پشتیبان‌گیری از .htaccess ناموفق بود." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:237 +msgid "Please choose a .htaccess to restore from." +msgstr "" +"لطفا یک فایل .htaccess را انتخاب کنید تا با استفاده از آن بازگردانی انجام " +"شود." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:253 +msgid "" +"htaccess file restore failed. Please attempt to restore the .htaccess " +"manually using FTP." +msgstr "" +"بازگردانی فایل htaccess. ناموفق بود. لطفا بازگردانی htaccess. را به صورت " +"دستی بازگردانی کنید." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:257 +msgid "Your .htaccess file has successfully been restored!" +msgstr "فایل .htaccess شما با موفقیت بازگردانی شد!" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:263 +msgid "" +"htaccess Restore operation failed! Please check the contents of the file you " +"are trying to restore from." +msgstr "" +"عملیات بازگردانی .htaccess ناموفق بود. لطفا محتویات فایلی که قصد بازگردانی " +"از آن را داشتید، بررسی کنید." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:269 +msgid ".htaccess File Operations" +msgstr "عملیات فایل .htaccess" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:272 +msgid "" +"Your \".htaccess\" file is a key component of your website's security and it " +"can be modified to implement various levels of protection mechanisms." +msgstr "" +"فایل \".htaccess\" شما یک جزء کلیدی در امنیت سایت شماست که می‌توان با ویرایش " +"آن ساز‌و‌کار‌های مختلف امنیتی را به سایت اضافه کرد." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:273 +msgid "" +"This feature allows you to backup and save your currently active .htaccess " +"file should you need to re-use the the backed up file in the future." +msgstr "" +"این ویژگی به شما امکان پشتیبان‌گیری و ذخیره فایل .htaccess فعلی را می‌دهد که " +"اگر در آینده لازم شد بتوانید دوباره از این فایل استفاده کنید." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:274 +msgid "" +"You can also restore your site's .htaccess settings using a backed up ." +"htaccess file." +msgstr "" +"شما همچنین می‌توانید تنظیمات .htaccess سایتتان را با استفاده از یک فایل " +"پشتیبان بازگردانی کنید." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:288 +msgid "Save the current .htaccess file" +msgstr "ذخیره فایل .htaccess کنونی" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:292 +msgid "" +"Click the button below to backup and save the currently active .htaccess " +"file." +msgstr "" +"روی دکمه زیر کلیک کنید تا از فایل .htaccess کنونی پشتیبان و ذخیره گرفته شود." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:293 +msgid "Backup .htaccess File" +msgstr "پشتیبان‌گیری از فایل .htaccess" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:297 +msgid "Restore from a backed up .htaccess file" +msgstr "بازگردانی از یک فایل پشتیبان .htaccess" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:303 +msgid ".htaccess file to restore from" +msgstr "فایل .htaccess که بایستی از آن برای بازگردانی استفاده شود" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:309 +msgid "" +"After selecting your file, click the button below to restore your site using " +"the backed up htaccess file (htaccess_backup.txt)." +msgstr "" +"پس از انتخاب فایل، روی دکمه زیر کلیک کنید تا سایت شما از فایل پشتیبان ." +"htaccess بازگردانی شود. (htaccess_backup.txt)" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:315 +msgid "Restore .htaccess File" +msgstr "بازگردانی فایل .htaccess" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:319 +msgid "View Contents of the currently active .htaccess file" +msgstr "مشاهده محتویات فایل .htaccess کنونی" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:348 +msgid "Please choose a wp-config.php file to restore from." +msgstr "لطفا یک فایل wp-config.php را برای بازگردانی انتخاب کنید." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:364 +msgid "" +"wp-config.php file restore failed. Please attempt to restore this file " +"manually using FTP." +msgstr "" +"باز گردانی فایل wp-config.php ناموفق بود. لطفا به صورت دستی بازگردانی را " +"انجام دهید." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:368 +msgid "Your wp-config.php file has successfully been restored!" +msgstr "فایل wp-config.php شما با موفقیت بازگردانی شد!" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:374 +msgid "" +"wp-config.php Restore operation failed! Please check the contents of the " +"file you are trying to restore from." +msgstr "" +"عملیات بازگردانی wp-config.php ناموفق بود. لطفا محتویات فایلی را که " +"می‌خواستید بازگردانی کنید بررسی کنید." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:380 +msgid "wp-config.php File Operations" +msgstr "عملیات فایل wp-config.php" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:383 +msgid "" +"Your \"wp-config.php\" file is one of the most important in your WordPress " +"installation. It is a primary configuration file and contains crucial things " +"such as details of your database and other critical components." +msgstr "" +"فایل \"wp-config.php\" یکی از مهم‌ترین فایل‌های وردپرس است. این فایل یک پرونده " +"پیکربندی اصلی است که شامل جزییات مهمی درباره پایگاه‌داده شما و دیگر بخش‌های " +"مهم وردپرس می‌باشد." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:384 +msgid "" +"This feature allows you to backup and save your currently active wp-config." +"php file should you need to re-use the the backed up file in the future." +msgstr "" +"این ویژگی به شما اجازه می‌دهد که از فایل wp-config.php کنونی خود پشتیبان تهیه " +"کنید تا در صورت نیاز در آینده بتوانید از آن استفاده کنید." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:385 +msgid "" +"You can also restore your site's wp-config.php settings using a backed up wp-" +"config.php file." +msgstr "" +"همچنین شما می‌توانید با استفاده از یک پشتیبان که قبلا از این فایل تهیه کرده " +"اید، تنظیمات wp-config.php سایت خود را بازگردانی کنید." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:399 +msgid "Save the current wp-config.php file" +msgstr "دخیره فایل wp-config.php کنونی" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:403 +msgid "" +"Click the button below to backup and download the contents of the currently " +"active wp-config.php file." +msgstr "" +"روی دکمه زیر کلیک کنید تا از فایل wp-config.php کنونی پشتیبان تهیه کنید." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:404 +msgid "Backup wp-config.php File" +msgstr "پشتیبان‌گیری از فایل wp-config.php" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:409 +msgid "Restore from a backed up wp-config file" +msgstr "بازگردانی از یک فایل پشتیبان wp-config" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:415 +msgid "wp-config file to restore from" +msgstr "فایلی که باید از آن برای بازگردانی استفاده کرد" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:421 +msgid "" +"After selecting your file click the button below to restore your site using " +"the backed up wp-config file (wp-config.php.backup.txt)." +msgstr "" +"بعد از آن که فایل پشتیبان را انتخاب کردید روی دکمه زیر کلیک کنید تا تنظیمات " +"wp-config.php از فایل پشتیبان بازگردانی شود. (wp-config.php.backup.txt)" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:427 +msgid "Restore wp-config File" +msgstr "بازگردانی فایل wp-config" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:431 +msgid "View Contents of the currently active wp-config.php file" +msgstr "دیدن محتویات فایل wp-config.php کنونی" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:466 +msgid "WP Generator Meta Tag" +msgstr "سازنده تگ‌های Meta" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:469 +msgid "" +"Wordpress generator automatically adds some meta information inside the " +"\"head\" tags of every page on your site's front end. Below is an example of " +"this:" +msgstr "" +"وردپرس به طور خودکارتعدادی فراداده(Metadata) را در قسمت \"head\" هر صفحه از " +"سایت شما وارد می‌کند. در زیر می‌توانید نمونه‌ای از این فراداده‌ها را ببینید:" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:471 +msgid "" +"The above meta information shows which version of WordPress your site is " +"currently running and thus can help hackers or crawlers scan your site to " +"see if you have an older version of WordPress or one with a known exploit." +msgstr "" +"فراداده‌های بالا نشان می‌دهند که شما از کدام نسخه وردپرس استفاده می‌کنید؛ در " +"نتیجه هکرها یا Crawlerها می‌توانند بفهمند که آیا شما از نسخه‌های قدیمی وردپرس " +"استفاده می‌کنید و یا حفره امنیتی شناخته شده‌ای دارید." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:472 +msgid "" +"This feature will allow you to remove the WP generator meta info from your " +"site's pages." +msgstr "" +"این ویژگی به شما اجازه می‌دهد که این فراداده‌ها را از برگه‌های سایت خود پاک " +"کنید." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:478 +msgid "WP Generator Meta Info" +msgstr "سازنده فراداده" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:490 +msgid "Remove WP Generator Meta Info" +msgstr "پاک کردن فراداده‌ها" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:493 +msgid "" +"Check this if you want to remove the meta info produced by WP Generator from " +"all pages" +msgstr "" +"اگر می‌خواهید که فراداده‌هایی که بدست وردپرس ساخته شده از همه برگه‌ها پاک شود، " +"این گزینه را تیک بزنید." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:23 +msgid "Comment SPAM" +msgstr "دیدگاه‌های جفنگ" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:24 +msgid "Comment SPAM IP Monitoring" +msgstr "نظارت بر IP دیدگاه‌های جفنگ" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:111 +msgid "Comment SPAM Settings" +msgstr "تنظیمات دیدگاه‌های جفنگ" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:116 +msgid "Add Captcha To Comments Form" +msgstr "افزودن فرم Captcha به فرم دیدگاه‌ها" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:120 +msgid "" +"This feature will add a simple math captcha field in the WordPress comments " +"form." +msgstr "این ویژگی یک زمینه Captcha ریاضی به فرم دیدگاه‌های وردپرس اضافه می‌کند." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:137 +msgid "Enable Captcha On Comment Forms" +msgstr "فعال کردن Captcha در فرم دیدگاه‌ها" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:140 +msgid "Check this if you want to insert a captcha field on the comment forms" +msgstr "" +"اگر می‌خواهید یک زمینه Captcha در فرم دیدگاه‌ها وارد کنید، این گزینه را تیک " +"بزنید." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:148 +msgid "Block Spambot Comments" +msgstr "بازداشتن ربات‌های جفنگ‌نویس" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:152 +msgid "" +"A large portion of WordPress blog comment SPAM is mainly produced by " +"automated bots and not necessarily by humans. " +msgstr "" +"بخش بزرگی از دیدگاه‌های جفنگ یک سایت وردپرس،از سوی ربات‌های خودکار نوشته می‌شود." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:153 +msgid "" +"This feature will greatly minimize the useless and unecessary traffic and " +"load on your server resulting from SPAM comments by blocking all comment " +"requests which do not originate from your domain." +msgstr "" +"این ویژگی از راه بازداشتن درخواست‌های ثبت دیدگاه تا اندازه زیادی ترافیک " +"بی‌استفاده و بی‌اهمیت و فشار روی سِرور شما را (که نتیجه دیدگاه‌های جفنگ است) " +"کاهش می‌دهد." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:170 +msgid "Block Spambots From Posting Comments" +msgstr "بازداشتن ربات‌های جفنگ‌نویس از فرستادن دیدگاه" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:173 +msgid "" +"Check this if you want to apply a firewall rule which will block comments " +"originating from spambots." +msgstr "" +"اگر می‌خواهید یک دستور دیوارآتش برای جلوگیری از ربات‌های جفنگ‌نویس به کار " +"بگیرید این گزینه را تیک بزنید." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:177 +msgid "" +"This feature will implement a firewall rule to block all comment attempts " +"which do not originate from your domain." +msgstr "" +"این ویژگی یک دستور دیوارآتش برای جلوگیری از تمام درخواست‌های ثبت دیدگاه که از " +"دامنه شما سرچشمه نگرفته، پیاده سازی می‌کند." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:178 +msgid "" +"A legitimate comment is one which is submitted by a human who physically " +"fills out the comment form and clicks the submit button. For such events, " +"the HTTP_REFERRER is always set to your own domain." +msgstr "" +"یک دیدگاه واقعی، دیدگاهی است که توسط یک انسان پر می‌شود؛ یک انسان که فرم " +"دیدگاه را پر می‌کند و سپس روی گزینه ثبت کلیک می‌کند. برای بعضی رخدادها مانند " +"دیدگاه‌گذاری HTTP_REFERRER روی دامنه شما تنظیم می‌شود." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:179 +msgid "" +"A comment submitted by a spambot is done by directly calling the comments." +"php file, which usually means that the HTTP_REFERRER value is not your " +"domain and often times empty." +msgstr "" +"دیدگاهی که از سوی یک ربات جفنگ‌گذار تولید می‌شود، تنها با فراخوانی فایل " +"comments.php به ثبت می‌رسد که معمولا در این فرآیند مقدار HTTP_REFERRER دامنه " +"شما نیست و اغلب خالی است." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:180 +msgid "" +"This feature will check and block comment requests which are not referred by " +"your domain thus greatly reducing your overall blog SPAM and PHP requests " +"done by the server to process these comments." +msgstr "" +"این ویژگی درخواست‌های ثبت دیدگاه را بررسی می‌کند و آن‌هایی که از دامنه شما " +"سرچشمه نمی‌گیرند، مسدود می‌کند. این کار باعث کاهش حجم عظیم جفنگ‌ها و پردازش‌هایی " +"می‌شود که سِرور برای این جفنگ‌ها انجام می‌دهد." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:207 +msgid "Nonce check failed for list SPAM comment IPs!" +msgstr "بررسی Nonce برای لیست کردن IP دیدگاه‌های جفنگ ناموفق بود!" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:213 +msgid "" +"You entered a non numeric value for the minimum SPAM comments per IP field. " +"It has been set to the default value." +msgstr "" +"شما یک مقدار غیرعددی برای کمترین تعداد جفنگ برای هر IP وارد کردید. مقدار " +"پیش‌فرض استفاده می‌شود." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:225 +#, php-format +msgid "" +"Displaying results for IP addresses which have posted a minimum of %s SPAM " +"comments" +msgstr "نمایش نتایج برای IP آدرس‌هایی که حداقل %s دیدگاه جفنگ فرستاده‌اند." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:241 +msgid "" +"This tab displays a list of the IP addresses of the people or bots who have " +"left SPAM comments on your site." +msgstr "" +"این تَب فهرست IP آدرس‌ مردم یا ربات‌هایی که در سایت شما دیدگاه جفنگ نوشته‌اند، " +"نشان می‌دهد." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:242 +msgid "" +"This information can be handy for identifying the most persistent IP " +"addresses or ranges used by spammers." +msgstr "" +"برای شناسایی محدوده IPهایی که توسط جفنگ‌نویس‌ها استفاده می‌شود،این داده‌ها به " +"کار می‌آیند." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:243 +msgid "" +"By inspecting the IP address data coming from spammers you will be in a " +"better position to determine which addresses or address ranges you should " +"block by adding them to your blacklist." +msgstr "" +"با شناسایی IP جفنگ‌نویس‌ها شما بهتر می‌توانید IPها یا محدوده IPهایی که باید در " +"لیست سیاه قرار دهید، تشخیص بدهید." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:244 +msgid "" +"To add one or more of the IP addresses displayed in the table below to your " +"blacklist, simply click the \"Block\" link for the individual row or select " +"more than one address \n" +" using the checkboxes and then choose the \"block" +"\" option from the Bulk Actions dropdown list and click the \"Apply\" button." +msgstr "" +"برای افزودن هرکدام از IPهای زیر به لیست سیاه، روی لینک \"بازداشتن\" در ردیف " +"هرکدام کلیک کنید یا برای افزودن چندتایی آدرس‌ها از جعبه‌تیک‌ها استفاده کنید، " +"سپس گزینه \"بازداشتن\" را از فهرست کارهای دسته‌جمعی انتخاب و روی دکمه اجرا " +"کلیک کنید." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:250 +msgid "List SPAMMER IP Addresses" +msgstr "فهرست IP آدرس‌های جفنگ‌نویس‌ها" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:256 +msgid "Minimum number of SPAM comments per IP" +msgstr "کمترین تعداد دیدگاه‌های جفنگ برای هر IP" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:258 +msgid "" +"This field allows you to list only those IP addresses which have been used " +"to post X or more SPAM comments." +msgstr "" +"این زمینه به شما اجازه می‌دهد که تنها IP آدرس‌هایی را فهرست کنید که برای " +"فرستادن X دیدگاه جفنگ یا بیشتر استفاده شده اند." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:262 +msgid "" +"Example 1: Setting this value to \"0\" or \"1\" will list ALL IP addresses " +"which were used to submit SPAM comments." +msgstr "" +"نمونه یک: تنظیم این مقدار روی عدد 0 یا 1 باعث می‌شود که همه IP آدرس‌های " +"استفاده شده برای دیدگاه‌های جفنگ، فهرست شوند." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:263 +msgid "" +"Example 2: Setting this value to \"5\" will list only those IP addresses " +"which were used to submit 5 SPAM comments or more on your site." +msgstr "" +"نمونه دو: تنظیم این مقدار روی عدد 5 باعث می‌شود که همه IP آدرس‌هایی که برای " +"ثبت 5 دیدگاه جفنگ یا بیشتر استفاده شده‌اند، فهرست شوند." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:270 +msgid "Find IP Addresses" +msgstr "یافتن IP آدرس‌ها" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:274 +msgid "SPAMMER IP Address Results" +msgstr "نتایج IP آدرس‌های جفنگ‌نویس" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:280 +#: all-in-one-wp-security/classes/wp-security-utility.php:150 +msgid "" +"The plugin has detected that you are using a Multi-Site WordPress " +"installation." +msgstr "افزونه تشخیص داده است که شما از نسخه چندین‌سایت وردپرس استفاده می‌کنید." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:281 +msgid "Only the \"superadmin\" can block IP addresses from the main site." +msgstr "تنها مدیر ارشد می‌تواند IP آدرس‌ها را از سایت اصلی مسدود کند." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:282 +msgid "" +"Take note of the IP addresses you want blocked and ask the superadmin to add " +"these to the blacklist using the \"Blacklist Manager\" on the main site." +msgstr "" +"همه IP آدرس‌هایی را که می‌خواهید مسدود شوند یادداشت کرده و به از مدیر ارشد " +"سایت بخواهید که آن‌ها را در لیست سیاه قرار دهد.(با استفاده از \"مدیریت لیست " +"سیاه\")" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:29 +msgid "WP Username" +msgstr "نام کاربری وردپرس" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:30 +msgid "Display Name" +msgstr "نام نمایشی" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:31 +msgid "Password" +msgstr "گذرواژه" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:85 +msgid "Admin User Security" +msgstr "امنیت کاربر مدیر" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:88 +msgid "" +"By default, WordPress sets the administrator username to \"admin\" at " +"installation time." +msgstr "" +"در هنگام نصب وردپرس، نام کاربری مدیر به طور پیش‌فرض روی \"admin\" تنظیم " +"می‌شود." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:89 +msgid "" +"A lot of hackers try to take advantage of this information by attempting " +"\"Brute Force Login Attacks\" where they repeatedly try to guess the " +"password by using \"admin\" for username." +msgstr "" +"بسیاری از هکرها با دانستن این نام کاربری پیش‌فرض،دست به حملات Brute Force " +"برای ورود به سایت می‌زنند. که این حملات ترکیبی از نام کاربری \"admin\" و " +"گذرواژه‌های مختلف است." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:90 +msgid "" +"From a security perspective, changing the default \"admin\" user name is one " +"of the first and smartest things you should do on your site." +msgstr "" +"از دیدگاه امنیتی، تغییر نام کاربری پیش‌فرض \"admin\"، یکی از اولین و " +"هوشمندانه‌ترین کارهایی است که شما باید روی سایتتان انجام دهید." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:91 +msgid "" +"This feature will allow you to change your default \"admin\" user name to a " +"more secure name of your choosing." +msgstr "" +"این ویژگی به شما امکان تغییر نام کاربری پیش‌فرض \"admin\" را به هر نام کاربری " +"دیگری می‌دهد." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:98 +msgid "List of Administrator Accounts" +msgstr "فهرست حساب‌های کاربری مدیران" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:107 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:33 +msgid "Change Admin Username" +msgstr "تغییر نام‌کاربری مدیر" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:115 +msgid "" +"Your site currently has an account which uses the default \"admin\" " +"username. \n" +" It is highly recommended that you change this name to " +"something else. \n" +" Use the following field to change the admin username." +msgstr "" +"سایت شما هم اکنون دارای حسابی با نام کاربری \"admin\" می‌باشد.\n" +"به شما شدیداً توصیه می‌شود که این نام کاربری را با نام دیگری عوض کنید. \n" +"از زمینه زیر برای تغییر نام کاربری مدیر استفاده کنید." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:123 +msgid "New Admin Username" +msgstr "نام‌کاربری تازه برای مدیر" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:125 +msgid "Choose a new username for admin." +msgstr "یک نام کاربری تازه برای مدیر انتخاب کنید." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:129 +msgid "Change Username" +msgstr "تغییر نام‌کاربری" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:131 +msgid "" +"NOTE: If you are currently logged in as \"admin\" you will be automatically " +"logged out after changing your username and will be required to log back in." +msgstr "" +"توجه: چنانچه شما هم اکنون با نام کاربری \"admin\" وارد سایت شده‌اید، پس از " +"تغییر نام‌کاربری به طور خودکار از سایت خارج می‌شود و بایستی دوباره وارد سایت " +"شوید." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:138 +msgid "No action required! " +msgstr "هیچ اقدامی نیاز نیست!" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:140 +msgid "" +"Your site does not have any account which uses the default \"admin\" " +"username. " +msgstr "سایت شما هیچ حساب کاربری با نام پیش‌فرض \"admin\" ندارد." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:141 +msgid "This is good security practice." +msgstr "این یک آمادگی خوب امنیتی است." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:153 +msgid "Display Name Security" +msgstr "امنیت نام نمایشی" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:156 +msgid "" +"When you submit a post or answer a comment, WordPress will usually display " +"your \"nickname\"." +msgstr "" +"هنگامی که شما یک نوشته را منتشر می‌کنید یا به یک دیدگاه پاسخ می‌دهید، وردپرس " +"معمولا لقب شما را نمایش می‌دهد." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:157 +msgid "" +"By default the nickname is set to the login (or user) name of your account." +msgstr "" +"به طور پیش‌فرض لقب همان نام‌کاربری حساب شماست(یا نامی که برای ورود به سایت " +"استفاده می‌کنید)." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:158 +msgid "" +"From a security perspective, leaving your nickname the same as your user " +"name is bad practice because it gives a hacker at least half of your " +"account's login credentials." +msgstr "" +"از دیدگاه امنیتی، نمایش نام‌کاربری به عنوان لقب یک کار خطرناک است زیرا در این " +"صورت شما نیمی از اطلاعات لازم برای ورود به سایت را در اختیار هکرها می‌گذارید." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:159 +msgid "" +"Therefore to further tighten your site's security you are advised to change " +"your nickname and Display name to be " +"different from your Username." +msgstr "" +"پس به شما سفارش می‌شود برای امن‌تر کردن سایتتان، لقب و " +"نمایش عمومی نام خود را، به چیزی متفاوت از نام " +"کاربری تغییر دهید." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:165 +msgid "Modify Accounts With Identical Login Name & Display Name" +msgstr "ویرایش حساب‌هایی که نام نمایشی و نام‌ورود آن‌ها یکسان است" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:174 +msgid "" +"Your site currently has the following accounts which have an identical login " +"name and display name." +msgstr "حساب‌های زیر در سایت شما دارای نام نمایشی و نام‌ورود یکسان هستند." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:175 +msgid "Click on the link to edit the settings of that particular user account" +msgstr "برای ویرایش تنظیمات هر کاربر روی لینک مربوط به آن حساب کلیک کنید" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:190 +msgid "No action required." +msgstr "اقدامی نیاز نیست!" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:191 +msgid "" +"Your site does not have a user account where the display name is identical " +"to the username." +msgstr "هیچ حسابی در سایت شما دارای نام نمایشی و نام‌ورود یکسان نیست." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:202 +msgid "Password Tool" +msgstr "ابزار گذرواژه" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:205 +msgid "" +"Poor password selection is one of the most common weak points of many sites " +"and is usually the first thing a hacker will try to exploit when attempting " +"to break into your site." +msgstr "" +"انتخاب گذرواژه ضعیف یکی از آسیب‌پذیری‌های معمول در بسیاری از سایت‌هاست و معمولا " +"اولین چیزی است که هکرها از آن برای ورود به سایت شما سوءاستفاده می‌کنند." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:206 +msgid "" +"Many people fall into the trap of using a simple word or series of numbers " +"as their password. Such a predictable and simple password would take a " +"competent hacker merely minutes to guess your password by using a simple " +"script which cycles through the easy and most common combinations." +msgstr "" +"بسیاری از مردم با انتخاب یک واژه ساده یا دنباله‌ای از اعداد برای گذرواژه‌‌شان، " +"در دام می‌افتند. یک گذرواژه ساده و قابل پیش‌بینی صرفا چند دقیقه از وقت یک هکر " +"ماهر را می‌گیرد که با استفاده از یک اسکریپت ساده و چرخیدن در میان عبارت‌های " +"رایج گذرواژه شما را پیدا کند." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:207 +msgid "" +"The longer and more complex your password is the harder it is for hackers to " +"\"crack\" because more complex passwords require much greater computing " +"power and time." +msgstr "" +"هرچه گذرواژه طولانی‌تر و پیچیده‌تر باشد، شکستن یا کرک کردن آن سخت‌تر می‌شود؛ " +"زیرا گذرواژه پیچیده‌تر زمان و قدرت پردازشی بیشتری نیاز دارد." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:208 +msgid "" +"This section contains a useful password strength tool which you can use to " +"check whether your password is sufficiently strong enough." +msgstr "" +"این بخش دارای یک ابزار کاربردی قدرت گذرواژه است که می‌توانید با استفاده از آن " +"بفهمید که گذواژه‌تان چقدر قوی است." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:213 +msgid "Password Strength Tool" +msgstr "ابزار قدرت گذرواژه" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:218 +msgid "Start typing a password." +msgstr "یک گذرواژه تایپ کنید" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:221 +msgid "It would take a desktop PC approximately" +msgstr "باری یک رایانه رومیزی تقریباً" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:222 +msgid "1 sec" +msgstr "1 ثانیه" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:222 +msgid "to crack your password!" +msgstr "طول می‌کشد تا گذرواژه شما را بشکند." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:227 +msgid "Password Strength" +msgstr "قدرت گذرواژه" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:243 +msgid "Nonce check failed on admin username change operation!" +msgstr "بررسی Nonce برای عملیات تغییر نام مدیر ناموفق بود!" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:250 +msgid "Username " +msgstr "نام کاربری" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:250 +msgid " already exists. Please enter another value. " +msgstr "از قبل وجود دارد.لطفا مقدار دیگری وارد کنید." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:266 +msgid "The database update operation of the user account failed!" +msgstr "عملیات به روز‌رسانی پایگاه‌داده برای این نام‌کاربری ناموفق بود!" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:293 +msgid "You entered an invalid username. Please enter another value. " +msgstr "شما یک نام‌کاربری نامعتبر وارد کردید.یک نام دیگر را آزمایش کنید." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:297 +msgid "Please enter a value for your username. " +msgstr "لطفا یک نام کاربری وارد کنید." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:304 +msgid "Username Successfully Changed!" +msgstr "نام کاربری با موفقیت تغییر کرد!" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:324 +msgid "Account Login Name" +msgstr "نام ورود مورد استفاده حساب" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:28 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:41 +msgid "Login Captcha" +msgstr "Captcha برای ورود" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:29 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:407 +msgid "Login Whitelist" +msgstr "لیست سفید ورود" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:30 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:519 +msgid "Failed Login Records" +msgstr "رکورد ورودهای ناموفق" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:31 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:47 +msgid "Force Logout" +msgstr "خروج اجباری" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:32 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:653 +msgid "Account Activity Logs" +msgstr "گزارش فعالیت‌های حساب" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:100 +msgid "" +"You entered a non numeric value for the max login attempts field. It has " +"been set to the default value." +msgstr "" +"شما یک مقدار غیر عددی برای حداکثر تلاش‌های ورود وارد کردید. مقدار پیش‌فرض " +"استفاده می‌شود." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:107 +msgid "" +"You entered a non numeric value for the login retry time period field. It " +"has been set to the default value." +msgstr "" +"شما یک مقدار غیر عددی برای بازه‌زمانی تلاش‌دوباره ورود وارد کردید. مقدار " +"پیش‌فرض استفاده می‌شود." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:114 +msgid "" +"You entered a non numeric value for the lockout time length field. It has " +"been set to the default value." +msgstr "" +"شما یک مقدار غیر عددی برای زمان بازداشتن از ورود وارد کردید. مقدار پیش‌فرض " +"استفاده می‌شود." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:159 +msgid "Login Lockdown Configuration" +msgstr "تنظیمات بازداری از ورود" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:163 +msgid "One of the ways hackers try to compromise sites is via a " +msgstr "یکی از راههایی که هکر‌ها در روش" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:163 +msgid "Brute Force Login Attack" +msgstr "حمله Brute Force" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:164 +msgid "" +"This is where attackers use repeated login attempts until they guess the " +"password." +msgstr "" +"برای ورود استفاده می‌کنند این است که به صورت مداوم اقدام به ورود می‌کنند تا " +"زمانی که رمز را حدس بزنند." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:165 +msgid "" +"Apart from choosing strong passwords, monitoring and blocking IP addresses " +"which are involved in repeated login failures in a short period of time is a " +"very effective way to stop these types of attacks." +msgstr "" +"جدا از انتخاب گذرواژه قدرتمند، نظارت و مسدود کردن IPهایی که در یک بازه کوتاه " +"چندین‌بار ورود ناموفق داشته اند، یک روش کارآمد برای جلوگیری از بروز این نوع " +"حملات است." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:166 +#, php-format +msgid "" +"You may also want to checkout our %s feature for another secure way to " +"protect against these types of attacks." +msgstr "" +"اگر بخواهید می‌توانید ویژگی دیگری که ما برای جلوگیری از این نوع حملات به کار " +"می گیریم ببینید: %s" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:171 +msgid "Login Lockdown Options" +msgstr "گزینه‌های بازداری از ورود" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:183 +msgid "Enable Login Lockdown Feature" +msgstr "به‌کارگیری ویژگی بازداری از ورود" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:186 +msgid "" +"Check this if you want to enable the login lockdown feature and apply the " +"settings below" +msgstr "" +"اگر می‌خواهید ویژگی بازداری از ورود و تنظیمات زیر را به کار بگیرید، این گزینه " +"را تیک بزنید" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:190 +msgid "Max Login Attempts" +msgstr "حداکثر تعداد تلاش برای ورود" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:192 +msgid "" +"Set the value for the maximum login retries before IP address is locked out" +msgstr "" +"حداکثر دفعاتی را که یک IP قبل از قفل شدن می‌تواند اقدام به ورود کند، وارد کنید" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:196 +msgid "Login Retry Time Period (min)" +msgstr "بازه زمانی تلاش برای ورود دوباره (دقیقه)" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:198 +msgid "" +"If the maximum number of failed login attempts for a particular IP address " +"occur within this time period the plugin will lock out that address" +msgstr "" +"اگر حداکثر دفعات ورود ناموفق برای یک IP رخ بدهد، افزونه به اندازه این بازه " +"زمانی، آن IP را قفل می‌کند." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:202 +msgid "Time Length of Lockout (min)" +msgstr "بازه زمانی قفل کردن (دقیقه)" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:204 +msgid "" +"Set the length of time for which a particular IP address will be prevented " +"from logging in" +msgstr "بازه‎‌ای که باید از ورود یک IP خاص جلوگیری شود، در این جا وارد کنید" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:208 +msgid "Display Generic Error Message" +msgstr "نمایش پیام خطای عمومی" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:211 +msgid "" +"Check this if you want to show a generic error message when a login attempt " +"fails" +msgstr "" +"اگر می‌خواهید بعد از یک ورود ناموفق، یک پیام خطای عمومی نمایش داده شود این " +"گزینه را تیک بزنید." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:215 +msgid "Instantly Lockout Invalid Usernames" +msgstr "قفل کردن فوری نام‌های کاربری نامعتبر" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:218 +msgid "" +"Check this if you want to instantly lockout login attempts with usernames " +"which do not exist on your system" +msgstr "" +"اگر می‌خواهید بلافاصله تلاش‌های ورود برای نام‌های کاربری که در سایتتان نیست قفل " +"شود، این گزینه را تیک بزنید" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:223 +msgid "Notify By Email" +msgstr "آگاه کردن از راه ایمیل" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:226 +msgid "" +"Check this if you want to receive an email when someone has been locked out " +"due to maximum failed login attempts" +msgstr "" +"اگر می‌خواهید وقتی IP یک نفر در اثر تلاش‌های ناموفق زیاد قفل شد، به شما ایمیل " +"زده شود، این گزینه را تیک بزنید." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:236 +msgid "Currently Locked Out IP Address Ranges" +msgstr "محدوده IPهایی که هم اکنون قفل شده اند" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:290 +msgid "" +"This feature allows you to add a captcha form on the WordPress login page." +msgstr "" +"این ویژگی به شما امکان اضافه کردن یک فرم Captcha به صفحه ورود وردپرس را " +"می‌دهد." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:291 +msgid "" +"Users who attempt to login will also need to enter the answer to a simple " +"mathematical question - if they enter the wrong answer, the plugin will not " +"allow them login even if they entered the correct username and password." +msgstr "" +"کاربرانی که قصد ورود دارند همچنین باید پاسخ یک سوال ساده ریاضی را وارد کنند. " +"اگر پاسخ نادرست بدهند افزونه از ورود آن‌ها جلوگیری می‌کند؛ حتی اگر نام‌کاربری و " +"گذرواژه صحیح را وارد کرده باشند." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:292 +msgid "" +"Therefore, adding a captcha form on the login page is another effective yet " +"simple \"Brute Force\" prevention technique." +msgstr "" +"بنابراین افزودن یک فرم Captcha به برگه ورود، یک ترفند ساده دیگر برای جلوگیری " +"از Brute Force است." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:298 +msgid "Login Form Captcha Settings" +msgstr "تنظیمات Captcha برای برگه ورود" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:309 +msgid "Enable Captcha On Login Page" +msgstr "فعال کردن Captcha در برگه ورود" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:312 +msgid "Check this if you want to insert a captcha form on the login page" +msgstr "" +"اگر می خواهید یک فرم Captcha به برگه ورود شما اضافه شود، این گزینه را تیک " +"بزنید." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:318 +msgid "Lost Password Form Captcha Settings" +msgstr "تنظیم Captcha برای فرم بازیابی گذرواژه" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:328 +msgid "Enable Captcha On Lost Password Page" +msgstr "فعال کردن Captcha برای برگه بازیابی گذرواژه" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:331 +msgid "" +"Check this if you want to insert a captcha form on the lost password page" +msgstr "" +"اگر می‌خواهید به برگه بازیابی گذرواژه یک فرم Captcha اضافه کنید، این گزینه را " +"تیک بزنید." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:353 +msgid "Nonce check failed for save whitelist settings!" +msgstr "بررسی Nonce برای ذخیره لیست سفید ناموفق بود!" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:410 +msgid "" +"The All In One WP Security Whitelist feature gives you the option of only " +"allowing certain IP addresses or ranges to have access to your WordPress " +"login page." +msgstr "" +"لیست سفید افزونه امنیت فراگیر وردپرس به شما اجازه می‌دهد تا فقط به تعداد " +"مشخصی آدرس/محدوده IP اجازه دسترسی به برگه ورود را بدهید." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:411 +msgid "" +"This feature will deny login access for all IP addresses which are not in " +"your whitelist as configured in the settings below." +msgstr "" +"طبق تنظیمات زیر، هر IP آدرسی که در لیست سفید نباشد از دسترسی به برگه ورود " +"باز می‌ماند." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:412 +msgid "" +"The plugin achieves this by writing the appropriate directives to your ." +"htaccess file." +msgstr "افزونه برای این کار، دستورهای مناسبی را در فایل htaccess. شما می‌نویسد." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:413 +msgid "" +"By allowing/blocking IP addresses via the .htaccess file your are using the " +"most secure first line of defence because login access will only be granted " +"to whitelisted IP addresses and other addresses will be blocked as soon as " +"they try to access your login page." +msgstr "" +"با اجازه دادن یا ندادن به IP آدرس‌ها از طریق فایل htaccess. ، شما از امن‌ترین " +"خط دفاعی اولیه استفاده می‌کنید؛ زیرا اجازه دسترسی به برگه ورود تنها برای IP " +"آدرس‌های موجود در لیست سفید صادر می‌شود و بقیه آدرس‌ها به محض تلاش برای رسیدن " +"به برگه ورود، مسدود خواهند شد." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:420 +#, php-format +msgid "" +"Attention: If in addition to enabling the white list feature, you also have " +"the %s feature enabled, you will still need to use your secret word " +"in the URL when trying to access your WordPress login page." +msgstr "" +"توجه: اگر علاوه بر فعال کردن ویژگی لیست سفید، شما ویژگی %s را هم فعال " +"کنید، شما همچنان برای دسترسی به برگه ورود وردپرس، نیاز به وارد کردن " +"واژه محرمانه در آدرس اینترنتی دارید." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:421 +msgid "" +"These features are NOT functionally related. Having both of them enabled on " +"your site means you are creating 2 layers of security." +msgstr "" +"این دو ویژگی کارکرد مشابهی ندارند. فعال کردن همزمان آنها روی سایت به این " +"معنا است که شما دو لایه حفاظتی ایجاد کرده اید." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:426 +msgid "Login IP Whitelist Settings" +msgstr "تنظیمات لیست سفید IP" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:437 +msgid "Enable IP Whitelisting" +msgstr "فعال کردن تنظیمات لیست سفید IP" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:440 +msgid "" +"Check this if you want to enable the whitelisting of selected IP addresses " +"specified in the settings below" +msgstr "" +"اگر می‌خواهید ویژگی لیست سفید را برای IP آدرس‌هایی که در زیر مشخص کرده اید، " +"فعال شود، این گزینه را تیک بزنید." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:444 +msgid "Your Current IP Address" +msgstr "آدرس IP کنونی شما" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:447 +msgid "" +"You can copy and paste this address in the text box below if you want to " +"include it in your login whitelist." +msgstr "" +"شما می‌توانید این آدرس را کپی و در جعبه متن پایین، Paste کنید.(اگر می‌خواهید " +"IP کنونی شما در لیست سفید ثبت شود)" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:451 +msgid "Enter Whitelisted IP Addresses:" +msgstr "IP آدرس‌های لیست سفید را وارد کنید:" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:455 +msgid "" +"Enter one or more IP addresses or IP ranges you wish to include in your " +"whitelist. Only the addresses specified here will have access to the " +"WordPress login page." +msgstr "" +"یک یا چند IP آدرس یا محدوده IP وارد کنید. تنها آدرس‌هایی که در اینجا ذکر شوند " +"اجازه دسترسی به برگه ورود وردپرس را خواهند داشت." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:485 +msgid "Nonce check failed for delete all failed login records operation!" +msgstr "" +"بررسی Nonce برای پاک کردن همه گزارش‌های ورود ناموفق، با شکست رو به رو شد!" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:494 +msgid "User Login Feature - Delete all failed login records operation failed!" +msgstr "" +"ویژگی ورود کاربر - عملیات پاک کردن همه گزارش‌های ورود ناموفق، با شکست رو به " +"رو شد!" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:498 +msgid "All records from the Failed Logins table were deleted successfully!" +msgstr "همه گزارش‌ها از جدول ورودهای ناموفق پاک شدند!" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:513 +msgid "This tab displays the failed login attempts for your site." +msgstr "این تَب، همه تلاش‌های ناموفق برای ورود به سایت شما را نشان می‌دهد." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:514 +msgid "" +"The information below can be handy if you need to do security investigations " +"because it will show you the IP range, username and ID (if applicable) and " +"the time/date of the failed login attempt." +msgstr "" +"اگر شما نیاز به انجام بررسی‌های امنیتی دارید، اطلاعات زیر می تواند سودمند " +"باشد. زیرا این اطلاعات به شما محدوده IP، نام کاربری و ID (در صورت وجود) و " +"تاریخ / زمانهای ورود ناموفق را نشان می‌دهد." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:535 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:544 +msgid "Delete All Failed Login Records" +msgstr "پاک کردن همه گزارش‌های ورود ناموفق" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:541 +msgid "" +"Click this button if you wish to delete all failed login records in one go." +msgstr "" +"اگر می‌خواهید در یک حرکت همه گزارش‌های ورود ناموفق را پاک کنید، روی دکمه کلیک " +"کنید." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:569 +msgid "" +"You entered a non numeric value for the logout time period field. It has " +"been set to the default value." +msgstr "" +"شما یک مقدار غیر عددی برای بازه زمانی خروج از سایت وارد کرده‌اید. مقدار " +"پیش‌فرض استفاده می‌شود." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:597 +msgid "" +"Setting an expiry period for your WP administration session is a simple way " +"to protect against unauthorized access to your site from your computer." +msgstr "" +"تنظیم یک بازه زمانی برای مدت زمان حضور مدیر در سایت، یک راه مفید برای " +"جلوگیری از دسترسی غیرمجاز به سایت از راه کامپیوتر شماست." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:598 +msgid "" +"This feature allows you to specify a time period in minutes after which the " +"admin session will expire and the user will be forced to log back in." +msgstr "" +"این ویژگی به شما اجازه می‌دهد تا یک بازه زمانی(به دقیقه) تعیین کنید؛ پس از " +"این بازه زمانی مدیر به طور خودکار از سایت خارج می‌شود و برای وارد شدن دوباره " +"باید گذرواژه را وارد کند." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:603 +msgid "Force User Logout Options" +msgstr "گزینه‌های بیرون‌کردن اجباری کاربر" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:615 +msgid "Enable Force WP User Logout" +msgstr "فعال‌سازی بیرون کردن اجباری کاربر" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:618 +msgid "" +"Check this if you want to force a wp user to be logged out after a " +"configured amount of time" +msgstr "" +"اگر می‌خواهید یک کاربر بعد از بازه زمانی مشخصی از سایت بیرون شود، این گزینه " +"را تیک بزنید." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:622 +msgid "Logout the WP User After XX Minutes" +msgstr "بیرون کردن کاربر پس از XX دقیقه" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:624 +msgid "" +"(Minutes) The user will be forced to log back in after this time period has " +"elapased." +msgstr "(دقیقه) بعد از گذشت این زمان کاربر دوباره باید وارد سایت شود." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:647 +msgid "" +"This tab displays the login activity for WordPress admin accounts registered " +"with your site." +msgstr "این تَب، فعالیت‌های ورود را برای حساب‌های مدیران سایت نشان می‌دهد." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:648 +msgid "" +"The information below can be handy if you need to do security investigations " +"because it will show you the last 50 recent login events by username, IP " +"address and time/date." +msgstr "" +"اگر شما نیاز به انجام بررسی‌های امنیتی دارید، اطلاعات زیر می تواند سودمند " +"باشد. زیرا 50 ورود آخر را بر اساس نام کاربری، IP آدرس و زمان/تاریخ نشان " +"می‌دهد." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:685 +msgid "Nonce check failed for users logged in list!" +msgstr "بررسی Nonce برای فهرست کاربران حاضر در سایت، ناموفق بود!" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:698 +msgid "Refresh Logged In User Data" +msgstr "تازه کردن اطلاعات کاربران حاضر در سایت" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:702 +msgid "Refresh Data" +msgstr "تازه‌سازی" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:708 +msgid "This tab displays all users who are currently logged into your site." +msgstr "این تَب همه کاربرانی را که هم اکنون در سایت شما حاضر هستند، نشان می‌دهد." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:709 +msgid "" +"If you suspect there is a user or users who are logged in which should not " +"be, you can block them by inspecting the IP addresses from the data below " +"and adding them to your blacklist." +msgstr "" +"اگر شما به یک یا چند نفر از کاربران حاضر، بدگمان هستید، می‌توانید IP آدرس " +"آن‌ها را از جدول زیر برداشته و در لیست سیاه خود قرار دهید." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:714 +msgid "Currently Logged In Users" +msgstr "کاربران حاضر در سایت" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:779 +msgid "The selected records were deleted successfully!" +msgstr "گزارش‌های انتخاب شده با موفقیت پاک شدند!" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:788 +msgid "The selected record was deleted successfully!" +msgstr "گزارش انتخاب شده با موفقیت پاک شد!" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:23 +msgid "Manual Approval" +msgstr "تأیید دستی" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:24 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:53 +msgid "Registration Captcha" +msgstr "Captcha برای نام‌نویسی" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:112 +msgid "User Registration Settings" +msgstr "تنظیمات نام‌نویسی کاربر" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:116 +msgid "Manually Approve New Registrations" +msgstr "تأیید دستی نام‌نویسی‌های تازه" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:120 +msgid "" +"If your site allows people to create their own accounts via the WordPress " +"registration form, then you can minimize SPAM or bogus registrations by " +"manually approving each registration." +msgstr "" +"اگر سایت شما به مردم اجازه می‌دهد که خودشان از طریق فرم نام‌نویسی وردپرس برای " +"خودشان حساب کاربری بسازند، شما می‌توانید با تأیید دستی نام‌نویسی‌ها جلوی " +"مزاحم‌ها و جفنگ‌نویس‌ها را بگیرید." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:121 +msgid "" +"This feature will automatically set a newly registered account to \"pending" +"\" until the administrator activates it. Therefore undesirable registrants " +"will be unable to log in without your express approval." +msgstr "" +"این ویژگی به طور خودکار، حساب‌های تازه را در لیست انتظار قرار می‌دهد تا زمانی " +"که مدیر آن حساب را فعال کند. بنابراین حساب‌های ناخواسته بدون تأیید صریح شما " +"نمی‌توانند وارد سایت شوند." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:122 +msgid "" +"You can view all accounts which have been newly registered via the handy " +"table below and you can also perform bulk activation/deactivation/deletion " +"tasks on each account." +msgstr "" +"شما می‌توانید همه حساب‌هایی را که به تازگی نام‌نویسی کرده اند در جدول زیر " +"ببینید و کارهای دسته جمعی مانند فعال‌کردن/غیر فعال‌کردن/پاک کردن را روی آنها " +"انجام دهید." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:138 +msgid "Enable manual approval of new registrations" +msgstr "فعال‌سازی تأیید دستی برای نام‌نویسی‌های تازه" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:141 +msgid "" +"Check this if you want to automatically disable all newly registered " +"accounts so that you can approve them manually." +msgstr "" +"اگر می‌خواهید هر نام‌نویسی تازه‌ای که اتفاق می‌افتد به صورت دستی تأیید کنید، این " +"گزینه را تیک بزنید." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:150 +msgid "Approve Registered Users" +msgstr "تأیید کاربران ثبت‌نام شده" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:195 +msgid "" +"This feature allows you to add a captcha form on the WordPress registration " +"page." +msgstr "" +"این ویژگی به شما اجازه می‌دهد که یک فرم Captcha به برگه نام‌نویسی وردپرس اضافه " +"کنید." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:196 +msgid "" +"Users who attempt to register will also need to enter the answer to a simple " +"mathematical question - if they enter the wrong answer, the plugin will not " +"allow them to register." +msgstr "" +"کسانی که می‌خواهند نام‌نویسی کنند بایستی به یک پرسش ساده ریاضی پاسخ بدهند. در " +"صورت دادن پاسخ اشتباه آن‌ها نمی‌توانند نام نویسی کنند." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:197 +msgid "" +"Therefore, adding a captcha form on the registration page is another " +"effective yet simple SPAM registration prevention technique." +msgstr "" +"بنابراین افزودن یک فرم Captcha به برگه نام‌نویسی یک ترفند ساده دیگر برای " +"جلوگیری از نام‌نویسی جفنگ‌نویس‌هاست." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:202 +msgid "Registration Page Captcha Settings" +msgstr "تنظیمات Captcha برای نام‌نویسی" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:214 +msgid "Enable Captcha On Registration Page" +msgstr "فعال‌سازی Captcha در برگه نام‌نویسی" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:217 +msgid "" +"Check this if you want to insert a captcha form on the WordPress user " +"registration page (if you allow user registration)." +msgstr "" +"اگر می‌خواهید یک فرم Captcha به برگه نام‌نویسی وردپرس اضافه کنید این گزینه را " +"تیک بزنید. (در صورتی که نام‌نویسی را برای سایت آزاد کرده‌اید)" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:22 +msgid "WhoIS Lookup" +msgstr "جستجوی WhoIS" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:74 +msgid "WHOIS Lookup Information" +msgstr "اطلاعات جستجوی WHOIS" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:77 +msgid "" +"This feature allows you to look up more detailed information about an IP " +"address or domain name by querying the WHOIS API." +msgstr "" +"این ویژگی به شما اجازه می‌دهد تا از راه جستجو در WHOIS اطلاعات دقیق‌تری درباره " +"یک IP آدرس یا نام دامنه بدست آورید." + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:83 +msgid "Perform a WHOIS Lookup for an IP or Domain Name" +msgstr "انجام جستجوی WHOIS برای یک IP و یا نام دامنه" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:89 +msgid "Enter IP Address or Domain Name" +msgstr "نام دامنه یا IP آدرس را وارد کنید" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:91 +msgid "" +"Enter an IP address or domain name. Example: 111.11.12.13 OR some-domain-" +"name.com" +msgstr "" +"یک IP آدرس یا نام دامنه وارد کنید. نمونه: 13.12.11.111 یا some-domain-name." +"com" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:95 +msgid "Perform IP or Domain Lookup" +msgstr "انجام جستجوی IP یا دامنه" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:115 +msgid "WHOIS lookup successfully completed. Please see the results below:" +msgstr "جستجوی WHOIS با موفقیت به پایان رسید. لطفا نتایج زیر را ببینید:" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:127 +msgid "" +"You have entered an incorrectly formatted IP address or domain name. Please " +"try again." +msgstr "" +"شما آدرس IP یا نام دامنه را در قالب نادرستی وارد کرده‌اید. لطفا دوباره تلاش " +"کنید." + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:178 +msgid "No items found." +msgstr "موردی یافت نشد." + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:281 +msgid "Bulk Actions" +msgstr "کارهای دسته‌جمعی" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:291 +msgid "Apply" +msgstr "به کار گرفتن" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:365 +msgid "Show all dates" +msgstr "نمایش همه تاریخ‌ها" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:378 +#, php-format +msgid "%1$s %2$d" +msgstr "%1$s %2$d" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:394 +msgid "List View" +msgstr "نمایش فهرست‌وار" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:395 +msgid "Excerpt View" +msgstr "نمایش چکیده" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:421 +#, php-format +msgid "%s pending" +msgstr "%s در انتظار" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:653 +msgid "Select All" +msgstr "انتخاب همه" + +#: all-in-one-wp-security/classes/wp-security-backup.php:177 +msgid "All In One WP Security - Site Database Backup" +msgstr "افزونه امنیت فراگیر وردپرس - پشتیبان پایگاه داده سایت" + +#: all-in-one-wp-security/classes/wp-security-backup.php:179 +msgid "Attached is your latest DB backup file for site URL" +msgstr "" +"فایل پیوست‌شده تازه‌ترین نسخه پشتیبان از پایگاه داده برای این نشانی سایت است" + +#: all-in-one-wp-security/classes/wp-security-backup.php:179 +msgid " generated on" +msgstr "ساخته‌شده در" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:12 +msgid "Please enter an answer in digits:" +msgstr "لطفا پاسخ را به رقم وارد کنید:" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:91 +msgid "one" +msgstr "یک" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:92 +msgid "two" +msgstr "دو" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:93 +msgid "three" +msgstr "سه" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:94 +msgid "four" +msgstr "چهار" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:95 +msgid "five" +msgstr "پنج" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:96 +msgid "six" +msgstr "شش" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:97 +msgid "seven" +msgstr "هفت" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:98 +msgid "eight" +msgstr "هشت" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:99 +msgid "nine" +msgstr "نه" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:100 +msgid "ten" +msgstr "ده" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:101 +msgid "eleven" +msgstr "یازده" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:102 +msgid "twelve" +msgstr "دوازده" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:103 +msgid "thirteen" +msgstr "سیزده" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:104 +msgid "fourteen" +msgstr "چهارده" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:105 +msgid "fifteen" +msgstr "پانزده" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:106 +msgid "sixteen" +msgstr "شانزده" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:107 +msgid "seventeen" +msgstr "هفده" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:108 +msgid "eighteen" +msgstr "هجده" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:109 +msgid "nineteen" +msgstr "نوزده" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:110 +msgid "twenty" +msgstr "بیست" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:58 +msgid "All In One WP Security - File change detected!" +msgstr "امنیت فراگیر وردپرس - شناسایی تغییر فایل" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:60 +msgid "A file change was detected on your system for site URL" +msgstr "یک تغییر فایل روی سیستم شما برای این سایت شناسایی شده است" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:60 +msgid ". Scan was generated on" +msgstr ". بررسی در این تاریخ انجام شده است" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:61 +msgid "Login to your site to view the scan details." +msgstr "برای مشاهده جزییات بررسی، وارد پیشخوان سایت خود شوید." + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:158 +msgid "Please enter an answer in the CAPTCHA field." +msgstr "لطفا یک پاسخ در زمینه Captcha وارد کنید." + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:168 +msgid "" +"Error: You entered an incorrect CAPTCHA answer. Please go back and try again." +msgstr "خطا: پاسخ شما به Captcha نادرست بود. برگردید و دوباره تلاش کنید." + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:196 +#: all-in-one-wp-security/classes/wp-security-user-login.php:63 +#: all-in-one-wp-security/classes/wp-security-user-login.php:66 +#: all-in-one-wp-security/classes/wp-security-user-registration.php:59 +msgid "ERROR: Your answer was incorrect - please try again." +msgstr "خطا: پاسخ شما اشتباه بود - دوباره تلاش کنید." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:39 +msgid "" +"ERROR: Login failed because your IP address has been " +"blocked.\n" +" Please contact the administrator." +msgstr "" +"خطا ورود با شکست مواجه شد. زیرا IP شما مسدود شده است.\n" +" لطفا با مدیر تماس بگیرید." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:76 +msgid "ERROR: The username field is empty." +msgstr "خطا : زمینه نام‌کاربری خالی است." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:80 +msgid "ERROR: The password field is empty." +msgstr "خطا : زمینه گذرواژه خالی است." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:100 +#: all-in-one-wp-security/classes/wp-security-user-login.php:126 +msgid "ERROR: Invalid login credentials." +msgstr "خطا : اطلاعات ورود نادرست است." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:103 +msgid "ERROR: Invalid username." +msgstr "خطا :نام کاربری نادرست است." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:129 +#, php-format +msgid "" +"ERROR: Incorrect password. Lost your password?" +msgstr "" +"خطا : گذرواژه نادرست است.گذرواژه‌تان را گم کردید؟" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:140 +msgid "" +"ACCOUNT PENDING: Your account is currently not active. An " +"administrator needs to activate your account before you can login." +msgstr "" +"نام نویسی در انتظار : حساب شما هنوز فعال نشده است. قبل از " +"اینکه بتوانید وارد شوید، یک مدیر باید حساب شما را فعال کند." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:263 +msgid "Site Lockout Notification" +msgstr "هشدار ورود ناموفق به سایت" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:264 +msgid "" +"A lockdown event has occurred due to too many failed login attempts or " +"invalid username:" +msgstr "" +"در پی تلاش‌های ناموفق زیاد برای ورود یا وارد کردن نام کاربری نادرست، ورود به " +"سایت برای یک IP یا نام کاربری قفل شده است:" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:265 +msgid "Username: " +msgstr "نام کاربری:" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:266 +msgid "IP Address: " +msgstr "آدرس IP:" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:267 +msgid "IP Range: " +msgstr "محدوده IP:" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:268 +msgid "" +"Log into your site's WordPress administration panel to see the duration of " +"the lockout or to unlock the user." +msgstr "" +"برای مشاهده مدت زمان قفل شدن کاربر یا آزاد کردن آن به پیشخوان سایت وردپرس " +"خود وارد شوید." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:425 +#, php-format +msgid "" +"Your session has expired because it has been over %d minutes since your last " +"login." +msgstr "" +"جلسه شما به پایان رسیده است زیرا بیش از %d دقیقه از آخرین ورود شما می‌گذرد." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:426 +#: all-in-one-wp-security/classes/wp-security-user-login.php:430 +msgid "Please log back in to continue." +msgstr "برای ادامه، لطفا دوباره وارد شوید." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:429 +msgid "You were logged out because you just changed the \"admin\" username." +msgstr "شما از سایت بیرون شدید چون نام کاربری admin را تغییر دادید." + +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:79 +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:98 +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:113 +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:128 +msgid " is not a valid ip address format." +msgstr "یک قالب درستی IP آدرس نیست." + +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:136 +msgid "You cannot ban your own IP address: " +msgstr "شما نمی‌توانید آدرس IP خودتان را مسدود کنید:" + +#: all-in-one-wp-security/classes/wp-security-utility.php:151 +msgid "" +"This feature can only be configured by the \"superadmin\" on the main site." +msgstr "این ویژگی تنها توسط مدیر ارشد سایت قابل تنظیم است." + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:29 +msgid "Remove WP Generatore Meta Tag" +msgstr "حذف سازنده تگ‌های متا" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:35 +msgid "Change Display Name" +msgstr "تغییر نمایش عمومی نام" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:43 +msgid "Lost Password Captcha" +msgstr "Captcha برای گذرواژه گمشده" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:45 +msgid "Login IP Whitelisting" +msgstr "لیست سفید IPها برای ورود به سایت" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:51 +msgid "Registration Approval" +msgstr "تأیید نام‌نویسی" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:67 +msgid "WordPress Files Access" +msgstr "دسترسی به فایل‌های وردپرس" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:71 +msgid "IP and User Agent Blacklisting" +msgstr "لیست سیاه IP یا نماینده کاربری" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:75 +msgid "Enable Basic Firewall" +msgstr "فعال‌سازی دیوارآتش پایه" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:76 +msgid "Enable Pingback Vulnerability Protection" +msgstr "فعال‌سازی محافظت در برابر آسیب‌پذیری Pingback" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:82 +msgid "Forbid Proxy Comments" +msgstr "ممنوع کردن فرستادن دیدگاه از طریق پراکسی" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:83 +msgid "Deny Bad Queries" +msgstr "رد کردن جستجوهای خطرناک" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:85 +msgid "5G Blacklist" +msgstr "لیست سیاه 5G" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:88 +msgid "Block Spambots" +msgstr "مسدود کردن ربات‌های جفنگ‌نویس" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:90 +msgid "Comment Captcha" +msgstr "Captcha برای دیدگاه" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item.php:28 +msgid "Basic" +msgstr "آسان" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item.php:31 +msgid "Intermediate" +msgstr "میانه" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item.php:34 +msgid "Advanced" +msgstr "پیشرفته" diff --git a/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-fr_FR.mo b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-fr_FR.mo new file mode 100644 index 0000000..74343e3 Binary files /dev/null and b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-fr_FR.mo differ diff --git a/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-fr_FR.po b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-fr_FR.po new file mode 100644 index 0000000..5b340ca --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-fr_FR.po @@ -0,0 +1,6059 @@ +msgid "" +msgstr "" +"Project-Id-Version: AIOWPS\n" +"POT-Creation-Date: 2016-04-12 12:12+0200\n" +"PO-Revision-Date: 2016-04-18 17:41+0200\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.7\n" +"X-Poedit-KeywordsList: __;_e\n" +"X-Poedit-Basepath: .\n" +"Last-Translator: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Language: fr_FR\n" +"X-Poedit-SearchPath-0: .\n" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:203 +msgid "WP Security" +msgstr "WP sécurité" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:204 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:23 +msgid "Dashboard" +msgstr "Tableau de bord" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:205 +msgid "Settings" +msgstr "Paramètres" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:206 +msgid "User Accounts" +msgstr "Comptes utilisateur" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:207 +msgid "User Login" +msgstr "Connexion" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:208 +msgid "User Registration" +msgstr "Enregistrement de l’utilisateur" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:209 +msgid "Database Security" +msgstr "Sécurité BdD" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:213 +msgid "Filesystem Security" +msgstr "Sécurité des fichiers" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:215 +msgid "WHOIS Lookup" +msgstr "Consultation WHOIS" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:219 +msgid "Blacklist Manager" +msgstr "Gestionnaire de liste noire" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:224 +msgid "Firewall" +msgstr "Pare-feu" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:229 +msgid "Brute Force" +msgstr "Brute Force" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:231 +msgid "SPAM Prevention" +msgstr "Prévention du SPAM" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:235 +msgid "Scanner" +msgstr "Scanner" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:237 +msgid "Maintenance" +msgstr "Maintenance" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:238 +msgid "Miscellaneous" +msgstr "Divers" + +#: all-in-one-wp-security/admin/wp-security-admin-menu.php:43 +msgid "Settings successfully updated." +msgstr "Paramètres correctement mis à jour" + +#: all-in-one-wp-security/admin/wp-security-admin-menu.php:50 +msgid "The selected record(s) deleted successfully!" +msgstr "Enregistrement(s) supprimé(s) avec succès !" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:22 +msgid "Ban Users" +msgstr "Utilisateurs bannis" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:80 +msgid "Nonce check failed for save blacklist settings!" +msgstr "Echec du contrôle à l’enregistrement des paramètres de liste noire !" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:132 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:631 +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:147 +msgid "" +"The plugin was unable to write to the .htaccess file. Please edit file " +"manually." +msgstr "" +"L’extension a été incapable d’écrire dans le fichier .htaccess. Veuillez " +"éditer manuellement ce fichier." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:139 +msgid "Ban IPs or User Agents" +msgstr "Adresses IP ou ID d’utilisateur banni(e)s" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:142 +msgid "" +"The All In One WP Security Blacklist feature gives you the option of banning " +"certain host IP addresses or ranges and also user agents." +msgstr "" +"La fonctionnalité liste noire d’All In One WP Security vous donne la " +"possibilité de bannir certaines plages d’adresses IP, d’hôte ou ID " +"d’utilisateurs." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:143 +msgid "" +"This feature will deny total site access for users which have IP addresses " +"or user agents matching those which you have configured in the settings " +"below." +msgstr "" +"Cette fonctionnalité refuse l’accès au site pour les utilisateurs qui ont " +"des adresses IP ou ID utilisateurs correspondant à celles que vous avez " +"configuré ci-dessous." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:144 +msgid "" +"The plugin achieves this by making appropriate modifications to your ." +"htaccess file." +msgstr "" +"L’extension atteint cet objectif en apportant les modifications appropriées " +"à votre fichier .htaccess." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:145 +msgid "" +"By blocking people via the .htaccess file your are using the most secure " +"first line of defence which denies all access to blacklisted visitors as " +"soon as they hit your hosting server." +msgstr "" +"En bloquant les utilisateurs via le fichier .htaccess que vous utilisez en " +"première ligne de défense, interdit tout accès aux visiteurs en liste noire " +"dès qu’ils atteignent votre serveur d’hébergement." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:151 +msgid "IP Hosts and User Agent Blacklist Settings" +msgstr "Paramètres de liste noire d’IP hôtes et/ou d’ID utilisateurs" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:162 +msgid "Enable IP or User Agent Blacklisting" +msgstr "Activer la liste noire d’IP ou d’ID utilisateur" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:165 +msgid "" +"Check this if you want to enable the banning (or blacklisting) of selected " +"IP addresses and/or user agents specified in the settings below" +msgstr "" +"Cochez si vous souhaitez activer l’interdiction des adresses IP " +"sélectionnées et/ou ID d’utilisateurs spécifiés dans les paramètres ci-" +"dessous" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:169 +msgid "Enter IP Addresses:" +msgstr "Entrez les adresses IP :" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:173 +msgid "Enter one or more IP addresses or IP ranges." +msgstr "Entrez une ou plusieurs adresse(s) IP (ou plage d’adresses)." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:174 +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:194 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:347 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:381 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:404 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:425 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:687 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:293 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:310 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:165 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:195 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:326 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:356 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:387 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:415 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:444 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:532 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:622 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:824 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:847 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:168 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:253 +msgid "More Info" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:177 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:690 +msgid "Each IP address must be on a new line." +msgstr "Chaque adresse IP doit figurer sur une nouvelle ligne." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:178 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:691 +msgid "" +"To specify an IP range use a wildcard \"*\" character. Acceptable ways to " +"use wildcards is shown in the examples below:" +msgstr "" +"Pour spécifier une plage d’adresses IP utilisez le joker « * ». Exemples " +"d’utilisation des jokers :" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:179 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:692 +msgid "Example 1: 195.47.89.*" +msgstr "Exemple 1 : 195.47.89.*" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:180 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:693 +msgid "Example 2: 195.47.*.*" +msgstr "Exemple 2 : 195.47.*.*" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:181 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:694 +msgid "Example 3: 195.*.*.*" +msgstr "Exemple 3 : 195.*.*.*" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:188 +msgid "Enter User Agents:" +msgstr "Entrez les agents utilisateurs:" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:193 +msgid "Enter one or more user agent strings." +msgstr "Saisissez un ou plusieurs chaînes de l’agent utilisateur." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:197 +msgid "Each user agent string must be on a new line." +msgstr "Chaque chaîne d’ID utilisateur doit figurer sur une nouvelle ligne." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:198 +msgid "Example 1 - A single user agent string to block:" +msgstr "Exemple 1 - Un seul agent utilisateur à bloquer :" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:200 +msgid "Example 2 - A list of more than 1 user agent strings to block" +msgstr "Exemple 2 - Une liste de plusieurs agents utilisateurs à bloquer :" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:208 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:192 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:567 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:701 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:763 +#: all-in-one-wp-security/admin/wp-security-database-menu.php:356 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:331 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:231 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:700 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:866 +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:165 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:495 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:183 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:349 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:239 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:407 +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:146 +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:232 +msgid "Save Settings" +msgstr "Enregistrer les modifications" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:26 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:368 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:377 +msgid "Rename Login Page" +msgstr "Renommer la page de connexion" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:27 +msgid "Cookie Based Brute Force Prevention" +msgstr "Protection contre « Brute Force basée cookie »" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:28 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:44 +msgid "Login Captcha" +msgstr "Captcha de Connexion" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:29 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:638 +msgid "Login Whitelist" +msgstr "Liste blanche de connexion" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:30 +msgid "Honeypot" +msgstr "Utiliser Honeypot." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:101 +msgid "Please enter a value for your login page slug." +msgstr "Veuillez entrer un alias pour votre page de connexion sécurisée." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:105 +msgid "You cannot use the value \"wp-admin\" for your login page slug." +msgstr "" +"Vous ne pouvez utiliser la valeur « wp-admin » pour l’alias de votre page de " +"connexion sécurisée." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:107 +msgid "You must alpha numeric characters for your login page slug." +msgstr "" +"Veuillez entrer des caractères alphanumériques pour l’alias de votre page de " +"connexion sécurisée." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:112 +#: all-in-one-wp-security/admin/wp-security-database-menu.php:271 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:171 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:769 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:213 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:123 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:360 +msgid "Attention!" +msgstr "Attention !" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:131 +msgid "" +"Could not delete the Cookie-based directives from the .htaccess file. Please " +"check the file permissions." +msgstr "" +"Impossible de supprimer les directives basées-cookie à partir du fichier ." +"htaccess. Veuillez vérifier les permissions des fichiers." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:141 +msgid "" +"An effective Brute Force prevention technique is to change the default " +"WordPress login page URL." +msgstr "" +"Une technique efficace de prévention contre Brute Force consiste à changer " +"l’URL par défaut de la page de connexion à WordPress." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:142 +msgid "" +"Normally if you wanted to login to WordPress you would type your site's home " +"URL followed by wp-login.php." +msgstr "" +"Normalement, si vous voulez vous connecter à WordPress, vous tapez l’URL de " +"votre site attendue par wp-login.php." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:143 +msgid "" +"This feature allows you to change the login URL by setting your own slug and " +"renaming the last portion of the login URL which contains the wp-" +"login.php to any string that you like." +msgstr "" +"Cette fonction permet de modifier l'URL de connexion en définissant votre " +"propre alias et ajoutant l'URL de connexion à wp-login.php." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:144 +msgid "" +"By doing this, malicious bots and hackers will not be able to access your " +"login page because they will not know the correct login page URL." +msgstr "" +"En procédant ainsi, les robots et pirates ne pourront accéder à votre page " +"de connexion, car ils ne connaîtront pas la bonne URL." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:146 +msgid "" +"You may also be interested in the following alternative brute force " +"prevention features:" +msgstr "" +"Ces fonctionnalités alternatives de prévention de Brute Force peuvent " +"également vous intéresser :" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:157 +msgid "Your WordPress login page URL has been renamed." +msgstr "Votre URL de connexion WordPress a été renommée." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:158 +msgid "Your current login URL is:" +msgstr "Votre nouvelle URL de connexion est :" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:160 +msgid "" +"NOTE: If you already had the Cookie-Based Brute Force Prevention feature " +"active, the plugin has automatically deactivated it because only one of " +"these features can be active at any one time." +msgstr "" +"NOTE : Si la fonctionnalité de prévention Brute Force basée cookie était " +"active, elle s’est automatiquement désactivée car un seul de ces dispositifs " +"peut être actif au même moment." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:167 +msgid "Rename Login Page Settings" +msgstr "Renommer la page de connexion" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:179 +msgid "Enable Rename Login Page Feature" +msgstr "Autorisez le renommage de la page des réglages de Connexion" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:182 +msgid "Check this if you want to enable the rename login page feature" +msgstr "" +"Cocher si vous souhaitez activer la fonction de renommage de la page de " +"connexion" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:186 +msgid "Login Page URL" +msgstr "URL de page de connexion" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:188 +msgid "" +"Enter a string which will represent your secure login page slug. You are " +"enouraged to choose something which is hard to guess and only you will " +"remember." +msgstr "" +"Entrez une chaîne qui représentera l’alias de votre page de connexion " +"sécurisée. Vous êtes encouragé(e) à choisir quelque chose de difficile à " +"deviner mais dont vous devrez pouvoir vous souvenir." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:221 +msgid "" +"Settings have not been saved - your secret word must consist only of " +"alphanumeric characters, ie, letters and/or numbers only!" +msgstr "" +"Paramètres non enregistrés : votre mot secret ne doit comporter que des " +"caractères alphanumériques, à savoir seulement lettres et chiffres !" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:240 +msgid "" +"You have successfully enabled the cookie based brute force prevention feature" +msgstr "" +"Vous avez correctement activé la fonctionnalité de prévention de Brute Force " +"basée cookie" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:241 +msgid "" +"From now on you will need to log into your WP Admin using the following URL:" +msgstr "" +"À partir de maintenant, vous aurez besoin de l’URL suivante pour vous " +"connecter à votre Admin WP :" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:243 +msgid "" +"It is important that you save this URL value somewhere in case you forget " +"it, OR," +msgstr "" +"Il est important d’enregistrer cette URL quelque part pour le cas où vous " +"l’oublieriez, OU" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:244 +#, php-format +msgid "simply remember to add a \"?%s=1\" to your current site URL address." +msgstr "" +"rappelez-vous simplement d’ajouter « ?%s=1 » à l’adresse URL de votre site " +"actuel." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:250 +msgid "" +"You have successfully saved cookie based brute force prevention feature " +"settings." +msgstr "" +"Vous avez correctement enregistré les paramètres de prévention de Brute " +"Force basée cookie." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:285 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:275 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:119 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:287 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:498 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:667 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:585 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:108 +msgid "" +"Could not write to the .htaccess file. Please check the file permissions." +msgstr "" +"Impossible d’écrire dans le fichier .htaccess. Veuillez vérifier les " +"permissions." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:295 +msgid "Brute Force Prevention Firewall Settings" +msgstr "Paramètres du pare-feu contre la Brute Force" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:300 +msgid "" +"A Brute Force Attack is when a hacker tries many combinations of usernames " +"and passwords until they succeed in guessing the right combination." +msgstr "" +"Une attaque Brute Force se caractérise par des essais répétés de nombreuses " +"combinaisons d’ID utilisateurs / mots de passe, jusqu’à parvenir à trouver " +"la bonne." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:301 +msgid "" +"Due to the fact that at any one time there may be many concurrent login " +"attempts occurring on your site via malicious automated robots, this also " +"has a negative impact on your server's memory and performance." +msgstr "" +"En raison du fait qu’à un moment donné, il peut y avoir de nombreuses " +"tentatives de connexion à votre site par des robots malveillants, un énorme " +"impact négatif sur la mémoire et les performances de votre serveur peut " +"avoir lieu." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:302 +msgid "" +"The features in this tab will stop the majority of Brute Force Login Attacks " +"at the .htaccess level thus providing even better protection for your WP " +"login page and also reducing the load on your server because the system does " +"not have to run PHP code to process the login attempts." +msgstr "" +"Les fonctionnalités de cet onglet permettront d’arrêter la majorité des " +"attaques de connexion Brute Force au niveau du .htaccess, offrant ainsi la " +"meilleure protection pour votre page de connexion WP et réduisant la charge " +"sur votre serveur, puisque le système n’aura plus à exécuter votre code PHP " +"pour traiter les tentatives de connexion." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:309 +#, php-format +msgid "" +"Even though this feature should not have any impact on your site's general " +"functionality you are strongly encouraged to take a %s of your ." +"htaccess file before proceeding." +msgstr "" +"Cette fonctionnalité ne devrait pas avoir d’impact négatif sur le " +"fonctionnement général de votre site mais faire une %s de votre " +"fichier .htaccess est vivement conseillé avant de l’activer." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:310 +msgid "" +"If this feature is not used correctly, you can get locked out of your site. " +"A backed up .htaccess file will come in handy if that happens." +msgstr "" +"Si cette fonctionnalité n’est pas correctement utilisée, vous risquez de " +"verrouiller votre site et ne plus y avoir accès. Une copie de sauvegarde de " +"votre fichier .htaccess sera utile en tel cas." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:311 +#, php-format +msgid "" +"To learn more about how to use this feature please watch the following %s." +msgstr "" +"Pour en savoir plus sur la façon d'utiliser cette fonctionnalité, regarder " +"le %s suivant." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:324 +msgid "" +"NOTE: If you already had the Rename Login Page feature active, the plugin " +"has automatically deactivated it because only one of these features can be " +"active at any one time." +msgstr "" +"Remarque : Si vous aviez déjà activé la fonction « Renommer la Page de " +"connexion », l’extension l’a automatiquement désactivée car seulement l’une " +"ou l’autre de ces caractéristiques peut être active simultanément." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:332 +msgid "Cookie Based Brute Force Login Prevention" +msgstr "Protection contre « Brute Force basée cookie »" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:343 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:90 +msgid "Enable Brute Force Attack Prevention" +msgstr "Activer la prévention d’attaque Brute Force" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:346 +msgid "" +"Check this if you want to protect your login page from Brute Force Attack." +msgstr "" +"Cocher si vous souhaitez protéger votre page de connexion d’une attaque par " +"Brute Force." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:351 +msgid "" +"This feature will deny access to your WordPress login page for all people " +"except those who have a special cookie in their browser." +msgstr "" +"Cette fonctionnalité refusera l’accès à votre page de connexion WordPress " +"pour tous visiteurs sauf ceux ayant un cookie spécial dans leur navigateur." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:353 +msgid "To use this feature do the following:" +msgstr "Pour utiliser cette fonctionnalité procéder comme suit :" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:355 +msgid "1) Enable the checkbox." +msgstr "1) Cochez la case." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:357 +msgid "" +"2) Enter a secret word consisting of alphanumeric characters which will be " +"difficult to guess. This secret word will be useful whenever you need to " +"know the special URL which you will use to access the login page (see point " +"below)." +msgstr "" +"2) Entrez un mot secret composé de caractères alphanumériques qui seront " +"difficiles à deviner. Ce mot secret sera utile lorsque vous aurez besoin de " +"vous remémorer l’URL spéciale que vous utiliserez pour accéder à la page de " +"connexion (voir point ci-dessous)." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:359 +msgid "" +"3) You will then be provided with a special login URL. You will need to use " +"this URL to login to your WordPress site instead of the usual login URL. " +"NOTE: The system will deposit a special cookie in your browser which will " +"allow you access to the WordPress administration login page." +msgstr "" +"3) vous recevrez ensuite une URL de connexion spéciale. Vous devrez utiliser " +"cette URL pour vous connecter à votre site WordPress en lieu et place de " +"l’URL de connexion standard. Remarque : Le système déposera un cookie " +"spécial dans votre navigateur qui vous permettra d’accédez à la page de " +"connexion d’administration WordPress (veillez à ce qu’il ne soit pas " +"détruit)." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:361 +msgid "" +"Any person trying to access your login page who does not have the special " +"cookie in their browser will be automatically blocked." +msgstr "" +"Tout visiteur essayant d’accéder à votre page de connexion sans avoir le " +"cookie spécial dans son navigateur sera automatiquement bloqué(e)." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:368 +msgid "Secret Word" +msgstr "Clé secrète" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:370 +msgid "" +"Choose a secret word consisting of alphanumeric characters which you can use " +"to access your special URL. Your are highly encouraged to choose a word " +"which will be difficult to guess." +msgstr "" +"Choisissez un mot secret composé de caractères alphanumériques qui vous " +"permettra d’accéder à votre URL spéciale. Vous êtes fortement encouragés à " +"choisir un mot difficile à deviner mais qu’il vous faudra retenir !" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:374 +msgid "Re-direct URL" +msgstr "URL de redirection" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:378 +msgid "" +"Specify a URL to redirect a hacker to when they try to access your WordPress " +"login page." +msgstr "" +"Spécifiez l'URL où rediriger les pirates quand ils essaient d'accéder à " +"votre page de connexion de WordPress." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:385 +msgid "" +"The URL specified here can be any site's URL and does not have to be your " +"own. For example you can be as creative as you like and send hackers to the " +"CIA or NSA home page." +msgstr "" +"L’URL spécifiée ici peut être celle de n’importe quel site et naturellement, " +"pas le vôtre. Vous pouvez faire preuve de créativité et envoyez les pirates " +"à la page d’accueil de la CIA ou de la NSA par exemple." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:387 +msgid "" +"This field will default to: http://127.0.0.1 if you do not enter a value." +msgstr "Champ par défaut : http://127.0.0.1 si vous n’entrez aucune valeur." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:389 +msgid "Useful Tip:" +msgstr "Petite astuce utile :" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:391 +msgid "" +"It's a good idea to not redirect attempted brute force login attempts to " +"your site because it increases the load on your server." +msgstr "" +"C’est une bonne idée que de ne pas rediriger les tentatives de connexion " +"Brute Force sur votre propre site car elles augmenteraient la charge de " +"votre serveur." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:393 +msgid "" +"Redirecting a hacker or malicious bot back to \"http://127.0.0.1\" is ideal " +"because it deflects them back to their own local host and puts the load on " +"their server instead of yours." +msgstr "" +"Rediriger pirates ou bots malicieux vers « http://127.0.0.1 » est idéal car " +"elle les renvoie à leur propre hôte et met la charge sur leur serveur au " +"lieu du vôtre." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:400 +msgid "My Site Has Posts Or Pages Which Are Password Protected" +msgstr "" +"Mon site a des articles ou des pages protégés par mot-clé anti Brute Force" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:403 +msgid "" +"Check this if you are using the native WordPress password protection feature " +"for some or all of your blog posts or pages." +msgstr "" +"Cocher si vous utilisez la fonctionnalité native WordPress de protection par " +"mot de passe pour tout ou partie de votre blog ou site." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:408 +msgid "" +"In the cases where you are protecting some of your posts or pages using the " +"in-built WordPress password protection feature, a few extra lines of " +"directives and exceptions need to be added to your .htacces file so that " +"people trying to access pages are not automatically blocked." +msgstr "" +"Dans le cas où vous protégeriez certains de vos messages ou pages à l’aide " +"de la fonctionnalité de protection par mot de passe propre à WordPress, " +"quelques lignes de directives et d’exceptions doivent être ajoutés à votre " +"fichier .htaccess afin que les visiteurs qui tentent d’accéder régulièrement " +"aux pages ne soient pas bloqués." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:410 +msgid "" +"By enabling this checkbox the plugin will add the necessary rules and " +"exceptions to your .htacces file so that people trying to access these pages " +"are not automatically blocked." +msgstr "" +"En activant cette case, l’extension ajoutera les règles nécessaires et les " +"exceptions à votre fichier .htaccess afin que les visiteurs réguliers, " +"tentant d’accéder à ces pages, ne soient pas automatiquement bloqués." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:412 +msgid "Helpful Tip:" +msgstr "Conseil utile :" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:414 +msgid "" +"If you do not use the WordPress password protection feature for your posts " +"or pages then it is highly recommended that you leave this checkbox disabled." +msgstr "" +"Si vous n'utilisez pas la fonctionnalité de protection par mot de passe " +"WordPress pour vos articles ou pages, il est hautement recommandé de laissez " +"cette case désactivée." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:421 +msgid "My Site Has a Theme or Plugins Which Use AJAX" +msgstr "Mon Site a un thème ou des extensions utilisant AJAX" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:424 +msgid "Check this if your site uses AJAX functionality." +msgstr "Cocher si votre site utilise des fonctionnalités AJAX." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:429 +msgid "" +"In the cases where your WordPress installation has a theme or plugins which " +"use AJAX, a few extra lines of directives and exceptions need to be added to " +"your .htacces file to prevent AJAX requests from being automatically blocked " +"by the brute force prevention feature." +msgstr "" +"Dans le cas où votre installation WordPress dispose d’un thème ou de plugins " +"utilisant AJAX, quelques lignes supplémentaires de directives et " +"d’exceptions doivent être ajoutés à votre fichier .htaccess pour empêcher " +"les requêtes AJAX d’être automatiquement bloquées par la fonction de " +"prévention Brute Force." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:431 +msgid "" +"By enabling this checkbox the plugin will add the necessary rules and " +"exceptions to your .htacces file so that AJAX operations will work as " +"expected." +msgstr "" +"En activant cette case l’extension va ajouter les règles et exceptions " +"nécessaires à votre fichier .htaccess afin que les opérations AJAX " +"fonctionnent comme prévu." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:446 +msgid "The cookie test was successful. You can now enable this feature." +msgstr "" +"Le test de cookie a été couronnée de succès. Vous pouvez maintenant activer " +"cette fonctionnalité." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:449 +msgid "Save Feature Settings" +msgstr "Enregistrer les paramètres de fonction" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:456 +msgid "" +"The cookie test failed on this server. So this feature cannot be used on " +"this site." +msgstr "" +"Le test de cookie a échoué sur le serveur. Cette fonction ne peut être " +"utilisée sur ce site." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:461 +msgid "" +"Before using this feature you are required to perform a cookie test first. " +"This is to make sure that your browser cookie is working correctly and that " +"you won't lock yourself out." +msgstr "" +"Avant de pouvoir utiliser cette fonctionnalité, vous devez effectuer un test " +"de cookie. Ceci pour vous assurer que les cookie fonctionnent correctement " +"sur votre navigateur et que vous ne serez pas bloqué." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:463 +msgid "Perform Cookie Test" +msgstr "Effectuer le test du Cookie" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:503 +msgid "" +"This feature allows you to add a captcha form on the WordPress login page." +msgstr "" +"Cette fonctionnalité permet d’ajouter un formulaire Captcha sur la page de " +"connexion de WordPress." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:504 +msgid "" +"Users who attempt to login will also need to enter the answer to a simple " +"mathematical question - if they enter the wrong answer, the plugin will not " +"allow them login even if they entered the correct username and password." +msgstr "" +"Les utilisateurs tentant de se connecter devront également entrer la réponse " +"à une question arithmétique simple - si elles entrent une mauvaise réponse, " +"l’extension ne leur permettra pas de se connecter, même s’ils ont entré ID " +"d’utilisateur et mot de passe corrects." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:505 +msgid "" +"Therefore, adding a captcha form on the login page is another effective yet " +"simple \"Brute Force\" prevention technique." +msgstr "" +"Par conséquent, l’ajout d’un formulaire Captcha sur la page de connexion est " +"une autre technique efficace de prévention contre « Brute Force »." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:511 +msgid "Login Form Captcha Settings" +msgstr "Réglage du Captcha du formulaire de connexion" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:522 +msgid "Enable Captcha On Login Page" +msgstr "Activer le Captcha sur la page de Connexion" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:525 +msgid "Check this if you want to insert a captcha form on the login page" +msgstr "" +"Cochez si vous souhaitez insérer un formulaire Captcha sur la page de " +"connexion" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:531 +msgid "Custom Login Form Captcha Settings" +msgstr "Personnalisation des réglages du Captcha de formulaire de connexion" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:540 +msgid "Enable Captcha On Custom Login Form" +msgstr "Activer le Captcha sur le formulaire de connexion" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:543 +msgid "" +"Check this if you want to insert captcha on a custom login form generated by " +"the following WP function: wp_login_form()" +msgstr "" +"Cochez si vous souhaitez insérer un Captcha dans le formulaire de connexion " +"personnalisé généré par la fonction WP : wp_login_form()" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:549 +msgid "Lost Password Form Captcha Settings" +msgstr "Mot de passe des paramètres de formulaire Captcha perdu" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:559 +msgid "Enable Captcha On Lost Password Page" +msgstr "Activer le Captcha sur la page Mot de passe perdu" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:562 +msgid "" +"Check this if you want to insert a captcha form on the lost password page" +msgstr "" +"Cochez si vous souhaitez insérer un formulaire Captcha sur la page de mot de " +"passe perdu" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:584 +msgid "Nonce check failed for save whitelist settings!" +msgstr "Echec du contrôle à l’enregistrement des paramètres de liste blanche !" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:641 +msgid "" +"The All In One WP Security Whitelist feature gives you the option of only " +"allowing certain IP addresses or ranges to have access to your WordPress " +"login page." +msgstr "" +"La fonctionnalité liste blanche d’All In One WP Security vous donne la " +"possibilité de n’autoriser que certaines adresses IP (ou plages) à avoir " +"accès à votre page de connexion WordPress." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:642 +msgid "" +"This feature will deny login access for all IP addresses which are not in " +"your whitelist as configured in the settings below." +msgstr "" +"Cette fonctionnalité refusera l’accès à toutes les adresses IP qui ne font " +"pas partie de votre liste blanche configurée dans les paramètres ci-dessous." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:643 +msgid "" +"The plugin achieves this by writing the appropriate directives to your ." +"htaccess file." +msgstr "" +"L’extension réalise cela en écrivant les directives appropriées dans votre " +"fichier .htaccess." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:644 +msgid "" +"By allowing/blocking IP addresses via the .htaccess file your are using the " +"most secure first line of defence because login access will only be granted " +"to whitelisted IP addresses and other addresses will be blocked as soon as " +"they try to access your login page." +msgstr "" +"En autorisant / bloquant des adresses IP via le fichier .htaccess vous " +"utilisez la plus sûre des premières lignes de défense, parce que la " +"connexion ne sera accordée qu’à des adresses IP présentes dans la liste " +"blanche, les autres adresses étant bloquées dès qu’elles essaient d’accéder " +"à votre page de connexion." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:651 +#, php-format +msgid "" +"Attention: If in addition to enabling the white list feature, you also have " +"the %s feature enabled, you will still need to use your secret word " +"in the URL when trying to access your WordPress login page." +msgstr "" +"ATTENTION : Si, en plus d’activer la fonctionnalité de liste blanche, vous " +"avez également activé la fonction %s, vous aurez toujours besoin " +"d’utiliser votre mot secret dans l’URL lorsque vous essayerez d’accéder à " +"votre site via la page de connexion WordPress." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:652 +msgid "" +"These features are NOT functionally related. Having both of them enabled on " +"your site means you are creating 2 layers of security." +msgstr "" +"Ces fonctionnalités ne sont pas liées opérationnellement. Si les deux sont " +"activées sur votre site, cela signifie que vous créez 2 couches de sécurité." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:657 +msgid "Login IP Whitelist Settings" +msgstr "Paramétrage de liste blanche des IP de connexion" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:668 +msgid "Enable IP Whitelisting" +msgstr "Activer la liste blanche d’IP" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:671 +msgid "" +"Check this if you want to enable the whitelisting of selected IP addresses " +"specified in the settings below" +msgstr "" +"Cochez si vous souhaitez activer la liste blanche pour certaines adresses IP " +"spécifiées dans les paramètres ci-dessous" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:675 +msgid "Your Current IP Address" +msgstr "Votre adresse IP actuelle" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:678 +msgid "" +"You can copy and paste this address in the text box below if you want to " +"include it in your login whitelist." +msgstr "" +"Vous pouvez copier / coller cette adresse dans la zone de texte ci-dessous " +"pour l’inclure en liste blanche de connexion." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:682 +msgid "Enter Whitelisted IP Addresses:" +msgstr "Entrez les adresses IP en liste blanche :" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:686 +msgid "" +"Enter one or more IP addresses or IP ranges you wish to include in your " +"whitelist. Only the addresses specified here will have access to the " +"WordPress login page." +msgstr "" +"Entrez une ou plusieurs adresses IP (ou plages d’adresses IP) à inclure en " +"liste blanche. Seules les adresses spécifiées ici auront accès à la page de " +"connexion WordPress." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:734 +msgid "" +"This feature allows you to add a special hidden \"honeypot\" field on the " +"WordPress login page. This will only be visible to robots and not humans." +msgstr "" +"Cette fonctionnalité permet d’ajouter un champ caché spécial « Honeypot » " +"sur la page de connexion WordPress. Il ne sera visible que des robots, et " +"pas des humains." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:735 +msgid "" +"Since robots usually fill in every input field from a login form, they will " +"also submit a value for the special hidden honeypot field." +msgstr "" +"Les robots remplissant généralement chaque champ de saisie d’un formulaire " +"de connexion, ils présenteront également une valeur pour le champ spécial " +"Honeypot caché." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:736 +msgid "" +"The way honeypots work is that a hidden field is placed somewhere inside a " +"form which only robots will submit. If that field contains a value when the " +"form is submitted then a robot has most likely submitted the form and it is " +"consquently dealt with." +msgstr "" +"La façon de travailler d’Honeypot, c’est qu’un champ masqué est placé " +"quelque part à l’intérieur d’un formulaire, accessible seulement aux robots. " +"Si ce champ contient une valeur lorsque le formulaire est renvoyé, c’est " +"probablement qu’un robot a rempli le formulaire et l’a soumis." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:737 +msgid "" +"Therefore, if the plugin detects that this field has a value when the login " +"form is submitted, then the robot which is attempting to login to your site " +"will be redirected to its localhost address - http://127.0.0.1." +msgstr "" +"Par conséquent, si l’extension détecte que ce champ a été rempli sur le " +"formulaire envoyé, et que le robot tente de se connecter à votre site il " +"sera redirigé vers l’adresse localhost - http://127.0.0.1." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:743 +msgid "Login Form Honeypot Settings" +msgstr "Réglages du formulaire de connexion Honeypot" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:754 +msgid "Enable Honeypot On Login Page" +msgstr "Activer Honeypot sur la page de connexion" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:757 +msgid "" +"Check this if you want to enable the honeypot feature for the login page" +msgstr "" +"Cochez cette case si vous souhaitez activer la fonctionnalité Honeypot sur " +"la page de connexion" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:24 +msgid "System Info" +msgstr "Info système" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:25 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:460 +msgid "Locked IP Addresses" +msgstr "Adresses IP Verrouillées" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:75 +msgid "For information, updates and documentation, please visit the" +msgstr "Pour informations, mises à jour et documentation, veuillez visiter" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:75 +msgid "AIO WP Security & Firewall Plugin" +msgstr "AIO WP Sécurité & Firewall Plugin" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:75 +msgid "Page" +msgstr "Page" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:76 +msgid "Follow us" +msgstr "Suivez-nous" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:76 +msgid "" +"Twitter, Google+ or via Email to stay up to date about the new security " +"features of this plugin." +msgstr "" +"sur Twitter, Google +, ou par courriel et être tenu au courant des " +"nouveautés de cette extension." + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:92 +msgid "Security Strength Meter" +msgstr "Mesure de l’efficacité du mot de passe." + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:121 +msgid "Total Achievable Points: " +msgstr "Total de Points réalisables :" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:123 +msgid "Current Score of Your Site: " +msgstr "Score actuel de votre site:" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:133 +msgid "Security Points Breakdown" +msgstr "Répartition des points de sécurité" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:174 +msgid "Spread the Word" +msgstr "Passez le message" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:177 +msgid "" +"We are working hard to make your WordPress site more secure. Please support " +"us, here is how:" +msgstr "" +"Nous travaillons dur pour rendre votre site WordPress plus sûr. Merci de " +"nous aider, vous le pouvez d’une (ou plusieurs) façon(s) suivante(s) :" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:193 +msgid "Critical Feature Status" +msgstr "État des caractéristiques critiques" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:197 +msgid "" +"Below is the current status of the critical features that you should " +"activate on your site to achieve a minimum level of recommended security" +msgstr "" +"Ci-dessous, l’état actuel des fonctionnalités essentielles que vous devez " +"activer sur votre site pour atteindre un niveau minimal de sécurité " +"recommandé" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:201 +msgid "Admin Username" +msgstr "Identifiant de l’administrateur" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:216 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:25 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:42 +msgid "Login Lockdown" +msgstr "Verrouillage de connexion" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:231 +msgid "File Permission" +msgstr "Autorisation de fichier" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:246 +msgid "Basic Firewall" +msgstr "Pare-feu de base" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:264 +msgid "Last 5 Logins" +msgstr "Les 5 dernières connexions" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:281 +msgid "No data found!" +msgstr "Aucune donnée!" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:285 +msgid "Last 5 logins summary:" +msgstr "Sommaire des 5 dernières connexions :" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:289 +msgid "User" +msgstr "Utilisateur" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:290 +msgid "Date" +msgstr "Date" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:291 +msgid "IP" +msgstr "IP" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:312 +msgid "Maintenance Mode Status" +msgstr "État du mode maintenance" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:316 +msgid "" +"Maintenance mode is currently enabled. Remember to turn it off when you are " +"done" +msgstr "" +"Mode maintenance actuellement activé. Rappelez-vous de l’enlever lorsque " +"vous aurez terminé" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:319 +msgid "Maintenance mode is currently off." +msgstr "Mode maintenance actuellement désactivé." + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:323 +msgid "Maintenance Mode" +msgstr "Mode maintenance" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:345 +msgid "Cookie Based Brute Prevention" +msgstr "Prévention « Brute Force basée cookie »" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:348 +msgid "Cookie-Based Brute Force" +msgstr "« Brute Force basée cookie »" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:352 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:380 +#, php-format +msgid "The %s feature is currently active." +msgstr "La fonction %s est actuellement active." + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:353 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:381 +msgid "Your new WordPress login URL is now:" +msgstr "Votre nouvelle URL de connexion WordPress est maintenant :" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:413 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:29 +msgid "Logged In Users" +msgstr "Utilisateurs connectés" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:423 +msgid "Number of users currently logged in site-wide is:" +msgstr "" +"Le nombre actuel d’utilisateurs connectés sur l’ensemble du site est de :" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:424 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:446 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:474 +#, php-format +msgid "Go to the %s menu to see more details" +msgstr "Accéder au menu %s pour plus de détails" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:429 +msgid "There are no other site-wide users currently logged in." +msgstr "" +"Il n’y a aucun autre utilisateur actuellement connecté sur l’ensemble du " +"site." + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:445 +msgid "Number of users currently logged into your site (including you) is:" +msgstr "" +"Nombre d’utilisateurs actuellement connectés à votre site (y compris vous-" +"même ) :" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:451 +msgid "There are no other users currently logged in." +msgstr "Aucun autre utilisateur connecté." + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:468 +msgid "There are no IP addresses currently locked out." +msgstr "Aucune adresse IP actuellement verrouillée." + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:473 +msgid "Number of temporarily locked out IP addresses: " +msgstr "Nombre d’adresses IP verrouillées temporairement :" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:516 +msgid "Site Info" +msgstr "Informations du site" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:518 +msgid "Plugin Version" +msgstr "Version de l’extension" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:519 +msgid "WP Version" +msgstr "Version WP" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:521 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:523 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:619 +msgid "Version" +msgstr "Version" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:522 +msgid "Table Prefix" +msgstr "Préfixe de Table" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:524 +msgid "Session Save Path" +msgstr "Chemin de la sauvegarde de session" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:526 +msgid "Server Name" +msgstr "Nom du serveur" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:527 +msgid "Cookie Domain" +msgstr "Domaine du cookie" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:528 +msgid "Library Present" +msgstr "Bibliothèque présente" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:529 +msgid "Debug File Write Permissions" +msgstr "Autorisations d’écriture du fichier de débogage" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:533 +msgid "PHP Info" +msgstr "Info PHP" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:535 +msgid "PHP Version" +msgstr "Version PHP" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:536 +msgid "PHP Memory Usage" +msgstr "Utilisation de la mémoire PHP" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:537 +msgid " MB" +msgstr "Mb" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:543 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:551 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:559 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:601 +msgid "N/A" +msgstr "Non disponible" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:546 +msgid "PHP Memory Limit" +msgstr "Limite de mémoire PHP" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:554 +msgid "PHP Max Upload Size" +msgstr "Taille maximale de téléversement PHP" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:562 +msgid "PHP Max Post Size" +msgstr "Taille maximale d’article PHP" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:565 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:573 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:582 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:590 +msgid "On" +msgstr "Activé" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:567 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:575 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:584 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:592 +msgid "Off" +msgstr "Désactivé" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:570 +msgid "PHP Safe Mode" +msgstr "Mode sans échec PHP" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:578 +msgid "PHP Allow URL fopen" +msgstr "PHP autorise l’ouverture d’URL" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:587 +msgid "PHP Allow URL Include" +msgstr "PHP permet d’inclure l’URL" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:595 +msgid "PHP Display Errors" +msgstr "Afficher les erreurs PHP" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:604 +msgid "PHP Max Script Execution Time" +msgstr "Durée d’exécution maximale d’un script PHP" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:604 +msgid "Seconds" +msgstr "Secondes" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:608 +msgid "Active Plugins" +msgstr "Extensions actives" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:618 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:130 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:149 +msgid "Name" +msgstr "Nom" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:620 +msgid "Plugin URL" +msgstr "URL d’extension" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:656 +msgid "Currently Locked Out IP Addresses and Ranges" +msgstr "Plages et adresses IP actuellement en lock-out" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:26 +#: all-in-one-wp-security/admin/wp-security-database-menu.php:31 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:63 +msgid "DB Backup" +msgstr "sauvegarde de BdD" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:30 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:61 +msgid "DB Prefix" +msgstr "Préfixe de BdD" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:93 +msgid "Nonce check failed for DB prefix change operation!" +msgstr "Echec du contrôle lors du changement de préfixe BdD !" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:101 +msgid "" +"The plugin has detected that it cannot write to the wp-config.php file. This " +"feature can only be used if the plugin can successfully write to the wp-" +"config.php file." +msgstr "" +"L’extension a détecté qu’elle ne peut écrire dans le fichier wp-config.php. " +"Vérifiez les autorisations d’accès et recommencez l’opération." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:114 +msgid "Please enter a value for the DB prefix." +msgstr "Veuillez saisir une valeur de préfixe pour la BdD." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:123 +msgid "" +"ERROR: The table prefix can only contain numbers, letters, " +"and underscores." +msgstr "" +"ERREUR : Le préfixe des tables ne peut contenir que des " +"chiffres, des lettres et « _ »." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:131 +msgid "Change Database Prefix" +msgstr "Changer le préfixe de BdD" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:134 +msgid "" +"Your WordPress DB is the most important asset of your website because it " +"contains a lot of your site's precious information." +msgstr "" +"Votre BdD WordPress est l’atout majeur de votre site car elle contient " +"beaucoup d’informations précieuses le concernant." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:135 +msgid "" +"The DB is also a target for hackers via methods such as SQL injections and " +"malicious and automated code which targets certain tables." +msgstr "" +"La BdD est aussi une cible pour les pirates, avec des méthodes telles que " +"les injections de codes SQL malveillants automatisés qui s’adressent à " +"certaines tables." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:136 +msgid "" +"One way to add a layer of protection for your DB is to change the default " +"WordPress table prefix from \"wp_\" to something else which will be " +"difficult for hackers to guess." +msgstr "" +"Une façon d’ajouter une couche de protection supplémentaire à votre BdD " +"consiste à modifier le préfixe des tables WordPress (« wp_ » par défaut !) " +"en quelque chose de plus difficile à découvrir par les pirates." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:137 +msgid "" +"This feature allows you to easily change the prefix to a value of your " +"choice or to a random value set by this plugin." +msgstr "" +"Cette fonctionnalité permet de changer facilement le préfixe actuel de la " +"BdD en une valeur de votre choix ou à une valeur aléatoire définie par " +"l’extension." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:143 +msgid "DB Prefix Options" +msgstr "Options de préfixe BdD" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:154 +#, php-format +msgid "It is recommended that you perform a %s before using this feature" +msgstr "" +"Il est recommandé d’effectuer une %s avant d’utiliser cette fonctionnalité" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:163 +msgid "Current DB Table Prefix" +msgstr "Préfixe actuel des tables de BdD" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:169 +msgid "" +"Your site is currently using the default WordPress DB prefix value of \"wp_" +"\". \n" +" To increase your site's security you should " +"consider changing the DB prefix value to another value." +msgstr "" +"Votre site utilise actuellement la valeur par défaut du préfixe BdD " +"WordPress « wp_ ». \n" +" Pour augmenter la sécurité, remplacez cette " +"valeur par une autre." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:176 +msgid "Generate New DB Table Prefix" +msgstr "Générer un nouveau préfixe de tables BdD" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:179 +msgid "" +"Check this if you want the plugin to generate a random 6 character string " +"for the table prefix" +msgstr "" +"Cochez si vous souhaitez que l’extension génère une chaîne de 6 caractères " +"aléatoires pour préfixer les tables" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:180 +msgid "OR" +msgstr "OU" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:182 +msgid "" +"Choose your own DB prefix by specifying a string which contains letters and/" +"or numbers and/or underscores. Example: xyz_" +msgstr "" +"Choisissez votre propre préfixe BdD en spécifiant une chaîne qui contient " +"des lettres et / ou des chiffres et / ou « _ ». Exemple : XyZ_3_" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:186 +msgid "Change DB Prefix" +msgstr "Changer le préfixe des tables de la BdD" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:207 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:86 +msgid "Nonce check failed for manual DB backup operation!" +msgstr "Echec du contrôle afférent à la sauvegarde manuelle de la BdD !" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:224 +msgid "" +"DB Backup was successfully completed! You will receive the backup file via " +"email if you have enabled \"Send Backup File Via Email\", otherwise you can " +"retrieve it via FTP from the following directory:" +msgstr "" +"La sauvegarde de BdD a été réalisée avec succès ! Vous recevrez le fichier " +"de sauvegarde par courriel si vous avez activé « Envoyer le fichier " +"sauvegarde par courriel », sinon vous pouvez le récupérer par FTP dans le " +"répertoire :" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:226 +msgid "Your DB Backup File location: " +msgstr "Emplacement du fichier de sauvegarde BdD :" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:234 +msgid "DB Backup failed. Please check the permissions of the backup directory." +msgstr "" +"Échec de la sauvegarde BdD. Vérifiez les autorisations du répertoire de " +"sauvegarde." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:251 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:135 +msgid "" +"You entered a non numeric value for the \"backup time interval\" field. It " +"has been set to the default value." +msgstr "" +"Vous avez entré une valeur non numérique pour le champ « intervalle entre " +"sauvegardes ». Elle sera fixée à la valeur par défaut." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:258 +msgid "" +"You entered a non numeric value for the \"number of backup files to keep\" " +"field. It has been set to the default value." +msgstr "" +"Vous avez entré une valeur non numérique pour le champ « nombre de fichiers " +"de sauvegarde à garder ». Elle sera fixée à la valeur par défaut." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:265 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:165 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:117 +msgid "" +"You have entered an incorrect email address format. It has been set to your " +"WordPress admin email as default." +msgstr "" +"Vous avez entré une adresse courriel incorrecte. Ce sera par défaut celle de " +"l’administrateur du site." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:298 +msgid "Manual Backup" +msgstr "Sauvegarde manuelle" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:304 +msgid "To create a new DB backup just click on the button below." +msgstr "" +"Pour créer une nouvelle sauvegarde BdD, il suffit de cliquer sur le bouton " +"ci-dessous." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:307 +msgid "Create DB Backup Now" +msgstr "Créer maintenant une sauvegarde BdD" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:311 +msgid "Automated Scheduled Backups" +msgstr "Sauvegardes automatiques planifiées" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:323 +msgid "Enable Automated Scheduled Backups" +msgstr "Activer les sauvegardes automatiques planifiées" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:326 +msgid "" +"Check this if you want the system to automatically generate backups " +"periodically based on the settings below" +msgstr "" +"Cochez si vous souhaitez que le système génère automatiquement des " +"sauvegardes périodiques selon les paramètres ci-dessous" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:330 +msgid "Backup Time Interval" +msgstr "Intervalle temporel des sauvegardes" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:333 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:281 +msgid "Hours" +msgstr "Heures" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:334 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:282 +msgid "Days" +msgstr "Jours" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:335 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:283 +msgid "Weeks" +msgstr "Semaines" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:337 +msgid "Set the value for how often you would like an automated backup to occur" +msgstr "Définissez la fréquence des sauvegardes automatisées" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:341 +msgid "Number of Backup Files To Keep" +msgstr "Nombre de fichiers de sauvegarde à conserver" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:343 +msgid "" +"Thie field allows you to choose the number of backup files you would like to " +"keep in the backup directory" +msgstr "" +"Ce champ permet de choisir le nombre de fichiers de sauvegarde que vous " +"souhaitez garder dans le répertoire de sauvegarde" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:347 +msgid "Send Backup File Via Email" +msgstr "Envoyer le fichier de sauvegarde par courriel" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:350 +msgid "" +"Check this if you want the system to email you the backup file after a DB " +"backup has been performed" +msgstr "" +"Cochez si vous souhaitez que le système vous envoie le fichier de sauvegarde " +"une fois celle-ci effectuée" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:352 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:327 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:235 +msgid "Enter an email address" +msgstr "Entrez une adresse courriel" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:383 +msgid "Error - Could not get tables or no tables found!" +msgstr "Erreur : Impossible d’obtenir des tables (ou tables non trouvées) !" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:387 +msgid "Starting DB prefix change operations....." +msgstr "Début du changement de préfixe BdD…" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:389 +#, php-format +msgid "" +"Your WordPress system has a total of %s tables and your new DB prefix will " +"be: %s" +msgstr "" +"Votre BdD WordPress contient un total de %s tables et leur nouveau préfixe " +"sera : %s" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:395 +#: all-in-one-wp-security/classes/wp-security-utility.php:206 +msgid "" +"Failed to make a backup of the wp-config.php file. This operation will not " +"go ahead." +msgstr "" +"Impossible de faire une sauvegarde du fichier wp-config.php. Cette opération " +"n’ira pas plus loin." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:399 +msgid "A backup copy of your wp-config.php file was created successfully!" +msgstr "" +"Une copie de sauvegarde de votre fichier wp-config.php a été réalisée avec " +"succès !" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:421 +#, php-format +msgid "%s table name update failed" +msgstr "Le renommage de table en « %s » à échoué" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:433 +#, php-format +msgid "Please change the prefix manually for the above tables to: %s" +msgstr "Veuillez changer manuellement le préfixe des tables ci-dessus en : %s" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:436 +#, php-format +msgid "%s tables had their prefix updated successfully!" +msgstr "Renommage des tables en « %s » terminé avec succès !" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:452 +msgid "wp-config.php file was updated successfully!" +msgstr "Le fichier wp-config.php a été mis à jour avec succès !" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:455 +#, php-format +msgid "" +"The \"wp-config.php\" file was not able to be modified. Please modify this " +"file manually using your favourite editor and search \n" +" for variable \"$table_prefix\" and assign the following " +"value to that variable: %s" +msgstr "" +"Le fichier « wp-config.php » n’a pu être modifié. Veuillez le faire " +"manuellement à l’aide de votre éditeur de texte préféré recherchez :\n" +" $table_prefix et lui affecter la valeur %s" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:468 +#: all-in-one-wp-security/admin/wp-security-database-menu.php:490 +#, php-format +msgid "Update of table %s failed: unable to change %s to %s" +msgstr "" +"L’actualisation de la table %s a échoué : impossible de passer de %s à %s" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:472 +msgid "" +"The options table records which had references to the old DB prefix were " +"updated successfully!" +msgstr "" +"Les options de table qui faisaient référence à l’ancien préfixe BdD ont été " +"actualisées avec succès !" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:494 +#, php-format +msgid "" +"The %s table records which had references to the old DB prefix were updated " +"successfully!" +msgstr "" +"Les enregistrements de la table %s qui faisaient référence à l’ancien " +"préfixe BdD ont été actualisés avec succès !" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:523 +#, php-format +msgid "" +"Error updating user_meta table where new meta_key = %s, old meta_key = %s " +"and user_id = %s." +msgstr "" +"Erreur d’actualisation de la table avec nouvelle meta_key = %s, ancienne " +"meta_key = %s et user_id = %s." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:528 +msgid "" +"The usermeta table records which had references to the old DB prefix were " +"updated successfully!" +msgstr "" +"Les enregistrement de la table de méta-utilisateur qui faisaient référence à " +"l’ancien préfixe BdD ont été actualisés avec succès !" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:530 +msgid "DB prefix change tasks have been completed." +msgstr "Les tâches de modification du préfixe BdD sont terminées." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:24 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:107 +msgid "File Change Detection" +msgstr "Détection de changement dans un fichier" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:25 +msgid "Malware Scan" +msgstr "Recherche de logiciel(s) malveillant(s)" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:26 +msgid "DB Scan" +msgstr "Analyse de la BdD" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:95 +msgid "There have been no file changes since the last scan." +msgstr "" +"Aucune modification de fichier n’a été repérée depuis la dernière analyse." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:105 +msgid "Nonce check failed for manual file change detection scan operation!" +msgstr "Échec de l’analyse de modification de fichier !" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:112 +msgid "" +"The plugin has detected that this is your first file change detection scan. " +"The file details from this scan will be used to detect file changes for " +"future scans!" +msgstr "" +"L’extension a détecté que vous n’avez pas encore effectué d’analyse de " +"changements dans les fichiers. Les détails de celle-ci seront utilisés pour " +"détecter les modifications lors d’analyses ultérieures !" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:114 +msgid "Scan Complete - There were no file changes detected!" +msgstr "" +"Analyse terminée - Il n’y a pas eu de modifications de fichiers détectées !" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:203 +msgid "" +"NEW SCAN COMPLETED: The plugin has detected that you have made changes to " +"the \"File Types To Ignore\" or \"Files To Ignore\" fields.\n" +" In order to ensure that future scan results are " +"accurate, the old scan data has been refreshed." +msgstr "" +"NOUVELLE ANALYSE TERMINÉE : L’extension a détecté que vous avez modifié les " +"champs « Types de fichier à ignorer » ou « Fichiers à ignorer ».\n" +" Afin de s’assurer que les résultats des futurs balayages " +"seront exacts, les anciennes données de numérisation ont été rafraîchies." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:213 +msgid "" +"All In One WP Security & Firewall has detected that there was a change in " +"your host's files." +msgstr "" +"All In One WP Security & Firewall a détecté un changement dans les fichiers " +"de votre hôte." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:215 +msgid "View Scan Details & Clear This Message" +msgstr "Voir les détails d’analyse et effacer ce message" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:224 +msgid "" +"If given an opportunity hackers can insert their code or files into your " +"system which they can then use to carry out malicious acts on your site." +msgstr "" +"Si on leur en laisse l’opportunité, des pirates peuvent insérer leur code " +"et / ou fichiers dans votre système, qu’ensuite ils utiliseront pour " +"perpétrer des actes malveillants sur votre site." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:225 +msgid "" +"Being informed of any changes in your files can be a good way to quickly " +"prevent a hacker from causing damage to your website." +msgstr "" +"Être informé de toute modification de vos fichiers peut être un bon moyen " +"d’empêcher rapidement un hacker de nuire à votre site Web." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:226 +msgid "" +"In general, WordPress core and plugin files and file types such as \".php\" " +"or \".js\" should not change often and when they do, it is important that " +"you are made aware when a change occurs and which file was affected." +msgstr "" +"En général, les fichiers du noyau et extensions WordPress et les types de " +"fichiers comme « .php » ou « .js » ne devraient pas changer souvent, quand " +"ils le font, il est important que vous soyez mis au courant qu’une telle " +"modification s’est produite et quel fichier a été affecté." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:227 +msgid "" +"The \"File Change Detection Feature\" will notify you of any file change " +"which occurs on your system, including the addition and deletion of files by " +"performing a regular automated or manual scan of your system's files." +msgstr "" +"La fonction « détection d’un changement de fichier » vous avise de tout " +"changement dans votre système de fichiers, y compris l’ajout ou la " +"suppression en effectuant une analyse régulière, automatisée ou manuelle, " +"de votre système de fichiers." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:228 +msgid "" +"This feature also allows you to exclude certain files or folders from the " +"scan in cases where you know that they change often as part of their normal " +"operation. (For example log files and certain caching plugin files may " +"change often and hence you may choose to exclude such files from the file " +"change detection scan)" +msgstr "" +"Cette fonction permet également d’exclure certains fichiers ou dossiers de " +"l’analyse dans les cas où vous savez qu’ils changent quelquefois dans le " +"cadre d’un fonctionnement normal. (Par exemple les fichiers journaux et " +"certains fichiers plugin mis en cache peuvent changer souvent, c’est " +"pourquoi vous pouvez choisir de les exclure de l’analyse des changements)" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:233 +msgid "Manual File Change Detection Scan" +msgstr "Détection manuelle de changements dans les fichiers" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:239 +msgid "" +"To perform a manual file change detection scan click on the button below." +msgstr "" +"Pour effectuer une analyse manuelle de changement dans les fichiers, cliquez " +"le bouton ci-dessous." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:242 +msgid "Perform Scan Now" +msgstr "Effectuer une analyse maintenant" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:246 +msgid "View Last Saved File Change Results" +msgstr "" +"Voir les résultats de la dernière sauvegarde d’analyse des modifications de " +"fichiers" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:252 +msgid "" +"Click the button below to view the saved file change results from the last " +"scan." +msgstr "" +"Cliquez le bouton ci-dessous pour afficher les résultats des modifications " +"de fichier depuis la dernière analyse." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:255 +msgid "View Last File Change" +msgstr "Dernières modifications de fichier" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:259 +msgid "File Change Detection Settings" +msgstr "Paramètres d’analyse des changements dans les fichiers" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:271 +msgid "Enable Automated File Change Detection Scan" +msgstr "Activer l’analyse automatisée des modifications dans les fichiers" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:274 +msgid "" +"Check this if you want the system to automatically/periodically scan your " +"files to check for file changes based on the settings below" +msgstr "" +"Cochez si vous voulez que le système analyse automatiquement/périodiquement " +"vos fichiers à la recherche des modifications avec les paramètres ci-dessous" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:278 +msgid "Scan Time Interval" +msgstr "Intervalle d’analyse" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:285 +msgid "Set the value for how often you would like a scan to occur" +msgstr "Définissez la fréquence souhaitée pour l’analyse" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:289 +msgid "File Types To Ignore" +msgstr "Type de fichiers à ignorer" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:292 +msgid "" +"Enter each file type or extension on a new line which you wish to exclude " +"from the file change detection scan." +msgstr "" +"Entrez chaque type de fichier ou extension à exclure de l’analyse sur une " +"nouvelle ligne." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:296 +msgid "" +"You can exclude file types from the scan which would not normally pose any " +"security threat if they were changed. These can include things such as image " +"files." +msgstr "" +"Vous pouvez exclure de l’analyse les types de fichiers qui ne constituent " +"pas normalement une menace pour la sécurité s’il ont été modifiés. Ceux-ci " +"peuvent par exemple être les fichiers image." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:297 +msgid "" +"Example: If you want the scanner to ignore files of type jpg, png, and bmp, " +"then you would enter the following:" +msgstr "" +"Exemple : Si vous souhaitez que l’analyse ignore les fichiers de type JPG, " +"PNG, BMP etc., entrez le texte suivant :" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:298 +msgid "jpg" +msgstr "jpg" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:299 +msgid "png" +msgstr "png" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:300 +msgid "bmp" +msgstr "bmp" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:306 +msgid "Files/Directories To Ignore" +msgstr "Fichiers / Dossiers à ignorer" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:309 +msgid "" +"Enter each file or directory on a new line which you wish to exclude from " +"the file change detection scan." +msgstr "" +"Entrez chaque fichier ou dossier à exclure de l’analyse sur une nouvelle " +"ligne." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:313 +msgid "" +"You can exclude specific files/directories from the scan which would not " +"normally pose any security threat if they were changed. These can include " +"things such as log files." +msgstr "" +"Vous pouvez exclure de l’analyse des fichiers et / ou dossiers spécifiques " +"qui ne constituent normalement pas une menace pour la sécurité s’il ont été " +"modifiés. Ceux-ci peuvent être, entre autres, les fichiers journaux." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:314 +msgid "" +"Example: If you want the scanner to ignore certain files in different " +"directories or whole directories, then you would enter the following:" +msgstr "" +"Exemple : Si vous souhaitez que l’analyse ignore certains fichiers dans " +"différents dossiers ou des dossiers entiers, vous devez entrer le texte " +"suivant :" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:315 +msgid "cache/config/master.php" +msgstr "cache/config/master.php" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:316 +msgid "somedirectory" +msgstr "un dossier" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:322 +msgid "Send Email When Change Detected" +msgstr "Envoyer un courriel si un changement a été détecté" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:325 +msgid "" +"Check this if you want the system to email you if a file change was detected" +msgstr "" +"Cochez si vous voulez que le système vous contacte s’il détecte une " +"modification de fichier" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:343 +msgid "What is Malware?" +msgstr "Qu’est-ce qu’un malware ?" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:344 +msgid "" +"The word Malware stands for Malicious Software. It can consist of things " +"like trojan horses, adware, worms, spyware and any other undesirable code " +"which a hacker will try to inject into your website." +msgstr "" +"Le mot Malware signifie « logiciel malveillant ». Il consiste souvent en des " +"bouts de code comme les chevaux de Troie, adwares, vers, logiciels espions " +"ou tout autre code indésirable qu’un pirate va essayer d’injecter dans votre " +"site web." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:345 +msgid "" +"Often when malware code has been inserted into your site you will normally " +"not notice anything out of the ordinary based on appearances, but it can " +"have a dramatic effect on your site's search ranking." +msgstr "" +"Souvent, lorsqu’un code malveillant a été inséré dans votre site, vous ne " +"remarquez rien sortant des apparences ordinaires, mais il peut avoir un " +"effet dramatique sur le classement de recherche de votre site." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:346 +msgid "" +"This is because the bots and spiders from search engines such as Google have " +"the capability to detect malware when they are indexing the pages on your " +"site, and consequently they can blacklist your website which will in turn " +"affect your search rankings." +msgstr "" +"Et parce que les bots et les robots des moteurs de recherche tels que Google " +"ont la capacité de les détecter tout en procédant à l’indexation des pages " +"de votre site, ils risquent de l’ostracisme, ce qui, par voie de " +"conséquences affectera vos classements de recherche." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:350 +msgid "Scanning For Malware" +msgstr "Recherche de Malwares" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:351 +msgid "" +"Due to the constantly changing and complex nature of Malware, scanning for " +"such things using a standalone plugin will not work reliably. This is " +"something best done via an external scan of your site regularly." +msgstr "" +"En raison de la constante évolution et de la complexité croissante des " +"Malwares, la recherche en utilisant une simple extension autonome ne donnera " +"que de piètres résultats. C’est une tâche qu’il vaut mieux confier à une " +"analyse externe régulière de votre site." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:352 +msgid "" +"This is why we have created an easy-to-use scanning service which is hosted " +"off our own server which will scan your site for malware once every day and " +"notify you if it finds anything." +msgstr "" +"C’est pourquoi nous avons créé un service d’analyse facile à utiliser, " +"hébergé hors de notre propre serveur, qui va analyser votre site pour " +"traquer les logiciels malveillants une fois par jour et vous avertir s’il " +"trouve quelque chose." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:353 +msgid "When you sign up for this service you will get the following:" +msgstr "Lorsque vous vous inscrirez à ce service, vous obtiendrez :" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:355 +msgid "Automatic Daily Scan of 1 Website" +msgstr "– Une analyse automatique quotidienne pour 1 site Web," + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:356 +msgid "Automatic Malware & Blacklist Monitoring" +msgstr "– La surveillance automatique des Malwares et listes noires" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:357 +msgid "Automatic Email Alerting" +msgstr "– L’alerte courriel automatique en cas de positif," + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:358 +msgid "Site uptime monitoring" +msgstr "- Surveillance de la disponibilité du site" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:359 +msgid "Site response time monitoring" +msgstr "– Surveillance du temps de réponse du site" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:360 +msgid "Malware Cleanup" +msgstr "– Nettoyage des Malwares" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:361 +msgid "Blacklist Removal" +msgstr "– Annulation du Blacklistage éventuel par les moteurs de recherche," + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:362 +msgid "No Contract (Cancel Anytime)" +msgstr "– Un service non contractuel (arrêt sur simple demande)." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:364 +#, php-format +msgid "To learn more please %s." +msgstr "Pour en savoir plus, %s." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:374 +msgid "" +"This feature performs a basic database scan which will look for any common " +"suspicious-looking strings and javascript and html code in some of the " +"Wordpress core tables." +msgstr "" +"Cette fonction effectue une analyse basique de BdD à la recherche de toute " +"chaîne, code html ou JavaScript suspects dans les tables." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:391 +msgid "Nonce check failed for manual db scan operation!" +msgstr "Echec du contrôle dans l’analyse manuelle de la BdD !" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:402 +msgid "" +"This feature will perform a basic database scan which will look for any " +"common suspicious-looking strings and javascript and html code in some of " +"the Wordpress core tables." +msgstr "" +"Cette fonction effectue une analyse basique de la BdD à la recherche de " +"toute chaîne louche, code HTML ou JavaScript suspects dans certaines tables " +"sensibles." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:403 +msgid "" +"If the scan finds anything it will list all \"potentially\" malicious " +"results but it is up to you to verify whether a result is a genuine example " +"of a hacking attack or a false positive." +msgstr "" +"Si l’analysee trouve quelque chose, elle délivrera une liste de tous les " +"résultats « potentiellement » malveillants, mais il vous appartiendra de " +"vérifier si un résultat est une véritable signature d’attaque ou de piratage " +"ou un simple faux positif." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:404 +msgid "" +"As well as scanning for generic strings commonly used in malicious cases, " +"this feature will also scan for some of the known \"pharma\" hack entries " +"and if it finds any it will automatically delete them." +msgstr "" +"aussi bien que les chaînes génériques couramment utilisés dans les cas de " +"malveillants, elle recherchera ensuite les entrées connues de « pharma » " +"hack qu’elle supprimera automatiquement s’il s’en trouve." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:405 +msgid "" +"The WordPress core tables scanned by this feature include: posts, postmeta, " +"comments, links, users, usermeta, and options tables." +msgstr "" +"Les tables du noyau WordPress analysées par cette fonctionnalité incluent : " +"messages, commentaires, liens, utilisateurs, postmeta, usermeta et leurs " +"options." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:410 +msgid "Database Scan" +msgstr "Analyse de BdD" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:416 +msgid "To perform a database scan click on the button below." +msgstr "" +"Pour effectuer une analyse de la BdD maintenant, cliquez le bouton ci-" +"dessous." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:419 +msgid "Perform DB Scan" +msgstr "Analyser la BdD" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:462 +msgid "Latest File Change Scan Results" +msgstr "Résultats de la dernière analyse des modifications de fichiers" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:471 +msgid "The following files were added to your host." +msgstr "Les fichiers suivants ont été ajoutés à votre hôte :" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:474 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:495 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:519 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:27 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:28 +msgid "File" +msgstr "Fichier" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:475 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:496 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:520 +msgid "File Size" +msgstr "Taille du fichier" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:476 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:497 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:521 +msgid "File Modified" +msgstr "Modifié le" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:492 +msgid "The following files were removed from your host." +msgstr "Les fichiers suivants ont été supprimés de votre hôte :" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:516 +msgid "The following files were changed on your host." +msgstr "Les fichiers suivants ont été modifiés sur votre hôte :" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:26 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:67 +msgid "File Permissions" +msgstr "Autorisations du fichier" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:27 +msgid "PHP File Editing" +msgstr "Édition de fichier PHP" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:28 +msgid "WP File Access" +msgstr "Accès aux fichiers WP" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:29 +msgid "Host System Logs" +msgstr "Journaux système" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:96 +#, php-format +msgid "The permissions for %s were succesfully changed to %s" +msgstr "Les autorisations pour %s ont été correctement remplacées par %s" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:100 +#, php-format +msgid "Unable to change permissions for %s!" +msgstr "Impossible de modifier les autorisations de %s !" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:106 +msgid "File Permissions Scan" +msgstr "Analyse des autorisations de fichier" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:109 +msgid "" +"Your WordPress file and folder permission settings govern the accessability " +"and read/write privileges of the files and folders which make up your WP " +"installation." +msgstr "" +"Les paramètres d’autorisation régissent les privilèges d’accessibilité et de " +"lecture / écriture des fichiers et dossiers qui composent votre installation " +"WP." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:110 +msgid "" +"Your WP installation already comes with reasonably secure file permission " +"settings for the filesystem." +msgstr "" +"Votre installation de WP semble disposer de paramètres d’autorisation " +"raisonnablement sécurisés." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:111 +msgid "" +"However, sometimes people or other plugins modify the various permission " +"settings of certain core WP folders or files such that they end up making " +"their site less secure because they chose the wrong permission values." +msgstr "" +"Parfois, cependant, des acteurs humains ou d’autres extensions peuvent " +"modifier différents paramètres d’autorisation sur certains fichiers ou " +"dossiers du noyau WP de telle sorte qu’elles finissent par rendre le site " +"moins sécurisé en raison des valeurs d’autorisation incorrectes qu’elles ont " +"choisies." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:112 +msgid "" +"This feature will scan the critical WP core folders and files and will " +"highlight any permission settings which are insecure." +msgstr "" +"Cette fonctionnalité va analyser les dossiers et fichiers critiques du noyau " +"WP et mettre en évidence les paramètres d’autorisation précaires." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:118 +msgid "WP Directory and File Permissions Scan Results" +msgstr "" +"Résultat d’analyse des autorisations des dossiers et fichiers du noyau WP" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:131 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:150 +msgid "File/Folder" +msgstr "Fichier / Dossier" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:132 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:151 +msgid "Current Permissions" +msgstr "Autorisations actuelles" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:133 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:152 +msgid "Recommended Permissions" +msgstr "Autorisations recommandées" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:134 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:153 +msgid "Recommended Action" +msgstr "Action recommandée" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:191 +msgid "Your PHP file editing settings were saved successfully." +msgstr "" +"Les paramètres d’édition des fichiers PHP ont été correctement sauvegardées." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:195 +msgid "" +"Operation failed! Unable to modify or make a backup of wp-config.php file!" +msgstr "" +"L’opération a échoué ! Impossible de modifier ou de faire une sauvegarde du " +"fichier wp-config.php !" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:201 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:69 +msgid "File Editing" +msgstr "Édition de fichier" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:204 +msgid "" +"The Wordpress Dashboard by default allows administrators to edit PHP files, " +"such as plugin and theme files." +msgstr "" +"Le tableau de bord par défaut de WordPress permet aux administrateurs de " +"modifier les fichiers PHP, tout comme les extension et thèmes." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:205 +msgid "" +"This is often the first tool an attacker will use if able to login, since it " +"allows code execution." +msgstr "" +"C’est souvent le premier outil qu’un agresseur utilisera s’il parvient à se " +"connecter, car il permet l’exécution de code." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:206 +msgid "" +"This feature will disable the ability for people to edit PHP files via the " +"dashboard." +msgstr "" +"Cette fonction désactive la capacité d’éditer certains fichiers PHP via le " +"tableau de bord." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:212 +msgid "Disable PHP File Editing" +msgstr "Désactiver l’édition de fichier PHP" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:224 +msgid "Disable Ability To Edit PHP Files" +msgstr "Désactiver la capacité d’éditer des fichiers PHP" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:227 +msgid "" +"Check this if you want to remove the ability for people to edit PHP files " +"via the WP dashboard" +msgstr "" +"Cochez pour supprimer la possibilité d’éditer les fichiers PHP via le " +"tableau de bord WP" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:271 +msgid "" +"You have successfully saved the Prevent Access to Default WP Files " +"configuration." +msgstr "" +"Vous avez enregistré avec succès l’interdiction d’accès à la configuration " +"par défaut des fichiers de WP." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:280 +msgid "WordPress Files" +msgstr "Fichiers WordPress" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:283 +#, php-format +msgid "" +"This feature allows you to prevent access to files such as %s, %s and %s " +"which are delivered with all WP installations." +msgstr "" +"Cette fonctionnalité permet d’empêcher l’accès à des fichiers tels que %s, " +"%s et %s livrés avec toutes les installations de WP." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:284 +msgid "" +"By preventing access to these files you are hiding some key pieces of " +"information (such as WordPress version info) from potential hackers." +msgstr "" +"En empêchant l’accès à ces fichiers, vous cacherez certains éléments clé " +"d’information (version de WordPress, celle des d’extensions…) aux pirates " +"éventuels." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:289 +msgid "Prevent Access to Default WP Files" +msgstr "Empêcher l’accès aux fichiers par défaut WP" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:300 +msgid "Prevent Access to WP Default Install Files" +msgstr "Empêcher l’accès aux fichiers d’installation par défaut WP" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:303 +msgid "" +"Check this if you want to prevent access to readme.html, license.txt and wp-" +"config-sample.php." +msgstr "" +"Cochez si vous voulez empêcher l’accès à readme.html, license.txt et wp-" +"config-sample.php." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:307 +msgid "Save Setting" +msgstr "Enregistrer les paramètres" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:331 +msgid "System Logs" +msgstr "Journaux système" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:334 +msgid "" +"Sometimes your hosting platform will produce error or warning logs in a file " +"called \"error_log\"." +msgstr "" +"Parfois, votre plate-forme d’hébergement produira erreur ou avertissement " +"dans le fichier appelé « error_log »." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:335 +msgid "" +"Depending on the nature and cause of the error or warning, your hosting " +"server can create multiple instances of this file in numerous directory " +"locations of your WordPress installation." +msgstr "" +"Selon la nature et la cause de l’erreur ou avertissement, votre serveur " +"d’hébergement peut créer plusieurs instances de ce fichier en de nombreux " +"emplacements des dossiers de votre installation WordPress." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:336 +msgid "" +"By occassionally viewing the contents of these logs files you can keep " +"informed of any underlying problems on your system which you might need to " +"address." +msgstr "" +"En regardant de temps en temps le contenu de ces fichiers lors vous pouvez " +"être tenu informé de problèmes sous-jacents sur votre système, dont vous " +"pourriez avoir besoin pour répondre." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:342 +msgid "View System Logs" +msgstr "Voir les journaux système" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:347 +msgid "Enter System Log File Name" +msgstr "Entrez le nom du fichier journal système" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:349 +msgid "Enter your system log file name. (Defaults to error_log)" +msgstr "" +"Entrez le nom de fichier journal du système. (Par défaut pour error_log)" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:352 +msgid "View Latest System Logs" +msgstr "Afficher les derniers journaux système" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:354 +msgid "Loading..." +msgstr "Chargement…" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:371 +msgid "No system logs were found!" +msgstr "Aucun journal système n’a été trouvé !" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:424 +msgid "Set Recommended Permissions" +msgstr "Appliquer le réglage des autorisations recommandé" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:430 +msgid "No Action Required" +msgstr "Aucune action n’est requise" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:470 +#, php-format +msgid "Showing latest entries of error_log file: %s" +msgstr "Affichage des dernières entrées du fichier error_log : %s" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:27 +msgid "Basic Firewall Rules" +msgstr "Règles de base du pare-feu" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:28 +msgid "Additional Firewall Rules" +msgstr "Règles supplémentaires du pare-feu" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:29 +msgid "5G Blacklist Firewall Rules" +msgstr "Règles de liste noire 5G du pare-feu" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:30 +msgid "Internet Bots" +msgstr "Bots internet" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:31 +msgid "Prevent Hotlinks" +msgstr "Prévenir des Hotlinks" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:32 +msgid "404 Detection" +msgstr "Détection d’erreur(s) 404" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:115 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:663 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:104 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:317 +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:96 +msgid "Settings were successfully saved" +msgstr "Vos paramètres ont été enregistrés avec succès." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:124 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:503 +msgid "Firewall Settings" +msgstr "Paramètres du pare-feu" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:131 +#, php-format +msgid "" +"This should not have any impact on your site's general functionality but if " +"you wish you can take a %s of your .htaccess file before proceeding." +msgstr "" +"Cela ne devrait pas avoir d’incidence sur les fonctionnalités générales de " +"votre site mais, si vous le souhaitez, vous pouvez faire une %s de votre " +"fichier .htaccess avant de procéder." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:132 +msgid "" +"The features in this tab allow you to activate some basic firewall security " +"protection rules for your site." +msgstr "" +"Les fonctions de cet onglet vous permettent d’activer certaines règles de " +"protection basiques de sécurité du pare-feu pour votre site." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:133 +msgid "" +"The firewall functionality is achieved via the insertion of special code " +"into your currently active .htaccess file." +msgstr "" +"La fonctionnalité de pare-feu est réalisée par insertion d’un code spécial " +"dans votre fichier .htaccess actuellement actif." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:143 +msgid "Attention:" +msgstr "A l’attention de :" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:144 +msgid "Currently the " +msgstr "Actuellement la" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:144 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:191 +msgid "Enable Pingback Protection" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:144 +msgid " is active." +msgstr "est active" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:145 +msgid "" +"Please beware that if you are using the WordPress iOS App, then you will " +"need to deactivate this feature in order for the app to work properly." +msgstr "" +"Veuillez faire attention, si vous utilisez l’App iOS WordPress, que vous " +"aurez besoin de désactiver cette fonction pour un fonctionnement correct de " +"l’application." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:153 +msgid "Basic Firewall Settings" +msgstr "Paramètres de base du pare-feu" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:161 +msgid "Enable Basic Firewall Protection" +msgstr "Activer la protection de base du pare-feu" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:164 +msgid "Check this if you want to apply basic firewall protection to your site." +msgstr "" +"Cochez si vous souhaitez appliquer une protection de base au pare-feu de " +"votre site." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:168 +msgid "" +"This setting will implement the following basic firewall protection " +"mechanisms on your site:" +msgstr "" +"Ce paramètre mettra en œuvre les mécanismes de protection de base du pare-" +"feu suivants sur votre site :" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:169 +msgid "1) Protect your htaccess file by denying access to it." +msgstr "" +"1) Protection de votre fichier .htaccess en refusant l’accès à celui-ci." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:170 +msgid "2) Disable the server signature." +msgstr "2) Désactivation de la signature de serveur." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:171 +msgid "3) Limit file upload size (10MB)." +msgstr "3) Limitation de la taille de téléchargement de fichier (10 Mo)." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:172 +msgid "4) Protect your wp-config.php file by denying access to it." +msgstr "" +"4) Protection de votre fichier wp-config.php en refusant l’accès à celui-ci." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:173 +msgid "" +"The above firewall features will be applied via your .htaccess file and " +"should not affect your site's overall functionality." +msgstr "" +"Les fonctionnalités de pare-feu ci-dessus s’appliqueront via votre fichier ." +"htaccess et ne devraient pas affecter le fonctionnement global du site." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:174 +msgid "" +"You are still advised to take a backup of your active .htaccess file just in " +"case." +msgstr "" +"Il est toujours conseillé de faire une sauvegarde de votre fichier .htaccess " +"actif, juste au cas où." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:183 +msgid "WordPress Pingback Vulnerability Protection" +msgstr "Protection contre les vulnérabilités rétro-ping de WordPress" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:194 +msgid "" +"Check this if you are not using the WP XML-RPC functionality and you want to " +"enable protection against WordPress pingback vulnerabilities." +msgstr "" +"Cochez si vous n’utilisez pas la fonction WP XML-RPC et que vous voulez " +"activer la protection contre les vulnérabilités rétro-ping WordPress." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:198 +msgid "" +"This setting will add a directive in your .htaccess to disable access to the " +"WordPress xmlrpc.php file which is responsible for the XML-RPC functionality " +"such as pingbacks in WordPress." +msgstr "" +"Ce paramètre va ajouter une directive dans votre .htaccess pour désactiver " +"l’accès au fichier xmlrpc.php qui est responsable de fonctionnalités comme " +"le rétro-ping dans WordPress." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:199 +msgid "" +"Hackers can exploit various pingback vulnerabilities in the WordPress XML-" +"RPC API in a number of ways such as:" +msgstr "" +"Les pirates peuvent exploiter les vulnérabilités de rétro-ping dans l’API " +"XML-RPC de WordPress par un certain nombre de moyens tels que :" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:200 +msgid "1) Denial of Service (DoS) attacks" +msgstr "1) Attaques par déni de Service (DoS)" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:201 +msgid "2) Hacking internal routers." +msgstr "2) Pirater des routeurs internes." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:202 +msgid "3) Scanning ports in internal networks to get info from various hosts." +msgstr "" +"3) Analyse des ports dans les réseaux internes pour obtenir des informations " +"de divers hôtes‪." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:203 +msgid "" +"Apart from the security protection benefit, this feature may also help " +"reduce load on your server, particularly if your site currently has a lot of " +"unwanted traffic hitting the XML-RPC API on your installation." +msgstr "" +"En dehors du bénéfice de protection de sécurité, cette fonctionnalité peut " +"également aider à réduire la charge sur votre serveur, en particulier si " +"votre site a beaucoup de trafic indésirable touchant l’API XML-RPC de votre " +"installation." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:204 +msgid "" +"NOTE: You should only enable this feature if you are not currently using the " +"XML-RPC functionality on your WordPress installation." +msgstr "" +"REMARQUE : Vous ne devez activer cette fonction que si vous n’utilisez pas " +"actuellement la fonctionnalité XML-RPC sur votre installation WordPress." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:211 +msgid "Save Basic Firewall Settings" +msgstr "Enregistrer les paramètres de base du pare-feu" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:283 +msgid "" +"You have successfully saved the Additional Firewall Protection configuration" +msgstr "" +"Vous avez enregistré avec succès la configuration supplémentaire du pare-feu" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:297 +msgid "Additional Firewall Protection" +msgstr "Protection supplémentaire du pare-feu" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:301 +#, php-format +msgid "" +"Due to the nature of the code being inserted to the .htaccess file, this " +"feature may break some functionality for certain plugins and you are " +"therefore advised to take a %s of .htaccess before applying this " +"configuration." +msgstr "" +"En raison de la nature du code étant inséré dans le fichier .htaccess, cette " +"fonctionnalité peut briser certaines fonctionnalités pour certains plugins " +"et vous êtes donc invités à prendre un%s de .htaccess avant d’appliquer " +"cette configuration." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:303 +msgid "" +"This feature allows you to activate more advanced firewall settings to your " +"site." +msgstr "" +"Cette fonction vous permet d’activer les paramètres de pare-feu plus avancés " +"sur votre site." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:304 +msgid "" +"The advanced firewall rules are applied via the insertion of special code to " +"your currently active .htaccess file." +msgstr "" +"Les règles avancées du pare-feu sont appliquées par l’intermédiaire de " +"l’insertion de code spécial à votre fichier .htaccess actuellement actif." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:313 +msgid "Listing of Directory Contents" +msgstr "Liste du Répertoire des matières" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:322 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:91 +msgid "Disable Index Views" +msgstr "Désactiver les vues Index" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:325 +msgid "Check this if you want to disable directory and file listing." +msgstr "Cochez pour désactiver le listage des dossier et de fichiers." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:330 +msgid "" +"By default, an Apache server will allow the listing of the contents of a " +"directory if it doesn't contain an index.php file." +msgstr "" +"Par défaut, un serveur Apache permet de lister le contenu d’un dossier, s’il " +"ne contient pas de fichier index.php" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:332 +msgid "This feature will prevent the listing of contents for all directories." +msgstr "" +"Cette fonctionnalité permet d’empêcher de lister le contenu pour tous les " +"répertoires." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:334 +msgid "" +"NOTE: In order for this feature to work \"AllowOverride\" of the Indexes " +"directive must be enabled in your httpd.conf file. Ask your hosting provider " +"to check this if you don't have access to httpd.conf" +msgstr "" +"REMARQUE : Afin que cette option puisse travailler en « AllowOverride » la " +"directive de l’index doit être activée dans votre fichier httpd.conf, " +"demandez-en confirmation à votre hébergeur. Si vous n’avez pas accès au " +"fichier httpd.conf, cochez cette case." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:343 +msgid "Trace and Track" +msgstr "Trace et Pistage" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:352 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:92 +msgid "Disable Trace and Track" +msgstr "Désactiver Trace et Pistage" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:355 +msgid "Check this if you want to disable trace and track." +msgstr "Cochez si vous voulez désactiver la trace et le pistage." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:360 +msgid "" +"HTTP Trace attack (XST) can be used to return header requests and grab " +"cookies and other information." +msgstr "" +"L’attaque par Trace HTTP (XST) peut être utilisée pour renvoyer des demandes " +"d’en-tête et récupérer les cookies et autres informations." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:362 +msgid "" +"This hacking technique is usually used together with cross site scripting " +"attacks (XSS)." +msgstr "" +"Cette technique de piratage est généralement utilisée conjointement à des " +"attaques cross-site stripping (XSS)." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:364 +msgid "" +"Disabling trace and track on your site will help prevent HTTP Trace attacks." +msgstr "" +"La désactivation du traçage et du pistage sur votre site aidera à prévenir " +"ces attaques HTTP Trace." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:373 +msgid "Proxy Comment Posting" +msgstr "Publication commentaire Proxy" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:383 +msgid "Forbid Proxy Comment Posting" +msgstr "Interdire l’émission de commentaire par Proxy" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:386 +msgid "Check this if you want to forbid proxy comment posting." +msgstr "Cochez si vous voulez interdire l’émission de commentaire par proxy." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:391 +msgid "" +"This setting will deny any requests that use a proxy server when posting " +"comments." +msgstr "" +"Ce paramètre interdit toute requête utilisant un serveur proxy lors de la " +"publication de commentaires." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:392 +msgid "" +"By forbidding proxy comments you are in effect eliminating some SPAM and " +"other proxy requests." +msgstr "" +"En interdisant les commentaires par Proxy, quelques courriels et autres " +"requêtes Proxy peuvent être éliminés." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:401 +msgid "Bad Query Strings" +msgstr "Chaînes Query incorrectes" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:411 +msgid "Deny Bad Query Strings" +msgstr "Refuser les chaînes Query incorrecte" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:414 +msgid "This will help protect you against malicious queries via XSS." +msgstr "Cela contribuera à vous protéger des requêtes malveillantes via XSS." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:419 +msgid "" +"This feature will write rules in your .htaccess file to prevent malicious " +"string attacks on your site using XSS." +msgstr "" +"Cette fonction va écrire dans votre fichier .htaccess les règles pour " +"contrer les attaques par chaînes XSS malveillantes sur votre site." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:420 +msgid "" +"NOTE: Some of these strings might be used for plugins or themes and hence " +"this might break some functionality." +msgstr "" +"REMARQUE : Certaines de ces chaînes peuvent servir à certains plugins ou " +"thèmes ceci pourrait briser certaines fonctionnalités." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:421 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:451 +msgid "" +"You are therefore strongly advised to take a backup of your active .htaccess " +"file before applying this feature." +msgstr "" +"Il est donc fortement conseillé de faire une sauvegarde de votre fichier ." +"htaccess actif avant d’appliquer cette fonctionnalité." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:430 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:95 +msgid "Advanced Character String Filter" +msgstr "Filtre avancé de chaînes de caractères" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:440 +msgid "Enable Advanced Character String Filter" +msgstr "Activer le filtre avancé de chaînes de caractères" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:443 +msgid "This will block bad character matches from XSS." +msgstr "Ceci bloquera les identités de caractères incorrects depuis XSS." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:448 +msgid "" +"This is an advanced character string filter to prevent malicious string " +"attacks on your site coming from Cross Site Scripting (XSS)." +msgstr "" +"Il s’agit d’un filtre avancé de chaînes de caractères destiné à contrer les " +"attaques par chaînes sur votre site en provenance de Cross Site Stripping " +"(XSS)." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:449 +msgid "" +"This setting matches for common malicious string patterns and exploits and " +"will produce a 403 error for the hacker attempting the query." +msgstr "" +"Ce paramètre identifie des modèles de chaînes malveillantes communément " +"exploitées et produit une erreur 403 si un pirate tente une requête." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:450 +msgid "NOTE: Some strings for this setting might break some functionality." +msgstr "" +"REMARQUE: Certaines chaînes de ce paramètre peuvent briser certaines autres " +"fonctionnalités." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:459 +msgid "Save Additional Firewall Settings" +msgstr "Enregistrer les paramètres supplémentaires du pare-feu" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:494 +msgid "You have successfully saved the 5G Firewall Protection configuration" +msgstr "" +"Vous avez enregistré avec succès la configuration de la protection du pare-" +"feu 5G" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:507 +#, php-format +msgid "" +"This feature allows you to activate the 5G firewall security protection " +"rules designed and produced by %s." +msgstr "" +"Cette fonctionnalité permet d’activer les règles de protection de sécurité " +"pare-feu 5G conçues et produites par %s." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:508 +msgid "" +"The 5G Blacklist is a simple, flexible blacklist that helps reduce the " +"number of malicious URL requests that hit your website." +msgstr "" +"La liste noire 5G est une liste noire simple et flexible qui permet de " +"réduire le nombre de requêtes URL malveillantes risquant d’atteindre votre " +"site Internet." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:509 +msgid "" +"The added advantage of applying the 5G firewall to your site is that it has " +"been tested and confirmed by the people at PerishablePress.com to be an " +"optimal and least disruptive set of .htaccess security rules for general WP " +"sites running on an Apache server or similar." +msgstr "" +"L’avantage supplémentaire d’appliquer le pare-feu 5G à votre site est qu’il " +"a été testé et confirmé par les acteurs de PerishablePress.com comme étant " +"un ensemble de règles de sécurité de .htaccess pour sites généraux WP en " +"cours d’exécution sur un serveur Apache ou similaire." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:510 +#, php-format +msgid "" +"Therefore the 5G firewall rules should not have any impact on your site's " +"general functionality but if you wish you can take a %s of your .htaccess " +"file before proceeding." +msgstr "" +"Donc les règles de pare-feu 5G ne devraient pas avoir d’incidence sur le " +"fonctionnement général de votre site mais, si vous le souhaitez, vous pouvez " +"faire une %s de votre fichier .htaccess avant de procéder." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:516 +msgid "5G Blacklist/Firewall Settings" +msgstr "Paramètres de liste noire 5G / pare-feu" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:528 +msgid "Enable 5G Firewall Protection" +msgstr "Activer la protection Pare-feu 5G" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:531 +msgid "" +"Check this if you want to apply the 5G Blacklist firewall protection from " +"perishablepress.com to your site." +msgstr "" +"Cochez si vous souhaitez appliquer la protection liste noire pare-feu 5G de " +"perishablepress.com à votre site." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:535 +msgid "" +"This setting will implement the 5G security firewall protection mechanisms " +"on your site which include the following things:" +msgstr "" +"Ce paramètre mettra en œuvre les mécanismes de sécurité 5G de protection " +"pare-feu sur votre site incluant les éléments suivants :" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:536 +msgid "1) Block forbidden characters commonly used in exploitative attacks." +msgstr "" +"1) Blocage de caractères interdits couramment utilisés dans les attaques " +"d’exploitation." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:537 +msgid "2) Block malicious encoded URL characters such as the \".css(\" string." +msgstr "" +"2) Blocage les codes malveillants composés de caractères d’URL tels la " +"chaîne « CSS ( »," + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:538 +msgid "" +"3) Guard against the common patterns and specific exploits in the root " +"portion of targeted URLs." +msgstr "" +"3) Protection contre les schémas communs et spécifiques d’attaques dans la " +"partie racine d’URL ciblées," + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:539 +msgid "" +"4) Stop attackers from manipulating query strings by disallowing illicit " +"characters." +msgstr "" +"4) Arrêt des attaques manipulant des requête par chaînes en interdisant les " +"caractères illicites" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:540 +msgid "....and much more." +msgstr "…et plus encore." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:546 +msgid "Save 5G Firewall Settings" +msgstr "Enregistrer les paramètres 5G de pare-feu" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:577 +msgid "The Internet bot settings were successfully saved" +msgstr "Les paramètres de bots Internet ont été enregistrés avec succès" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:581 +msgid "Internet Bot Settings" +msgstr "Paramètres Bots Internet" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:588 +#, php-format +msgid "%s?" +msgstr "%s ?" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:590 +msgid "" +"A bot is a piece of software which runs on the Internet and performs " +"automatic tasks. For example when Google indexes your pages it uses " +"automatic bots to achieve this task." +msgstr "" +"Un bot est un logiciel qui tourne sur Internet et effectue des tâches " +"automatiques. Par exemple, lorsque Google indexe vos pages, il utilise des " +"robots bots automatiques pour achever cette tâche." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:591 +msgid "" +"A lot of bots are legitimate and non-malicous but not all bots are good and " +"often you will find some which try to impersonate legitimate bots such as " +"\"Googlebot\" but in reality they have nohing to do with Google at all." +msgstr "" +"De nombreux bots sont légitimes et non-malveillants mais pas tous, ni tout " +"le temps : vous en trouverez qui essaient de se faire passer pour des robots " +"collecteurs légitimes tels « Googlebot » mais qui, en réalité, n’ont rien à " +"voir avec Google." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:592 +msgid "" +"Although most of the bots out there are relatively harmless sometimes " +"website owners want to have more control over which bots they allow into " +"their site." +msgstr "" +"Bien que la plupart des bots soient relativement inoffensifs, parfois les " +"propriétaires de sites Web veulent avoir le contrôle sur les bots qu’ils " +"admettent dans leur site." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:593 +msgid "" +"This feature allows you to block bots which are impersonating as a Googlebot " +"but actually aren't. (In other words they are fake Google bots)" +msgstr "" +"Cette fonctionnalité permet de bloquer les robots qui empruntent une " +"identité comme celle de Googlebots, ce qu’en fait ils ne sont pas. (En " +"d’autres termes, ce sont de faux Googlebots)" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:594 +msgid "" +"Googlebots have a unique indentity which cannot easily be forged and this " +"feature will indentify any fake Google bots and block them from reading your " +"site's pages." +msgstr "" +"les Googlebots ont une identité unique qui ne peut pas facilement être " +"forgée et cette caractéristique va identifier tout faux robots Google et " +"leur bloquer la lecture de pages de votre site." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:600 +msgid "" +"Attention: Sometimes non-malicious Internet organizations " +"might have bots which impersonate as a \"Googlebot\"." +msgstr "" +"ATTENTION : Parfois des organisations Internet non-" +"malveillantes peuvent avoir des bots usurpant l’identité d’un « Googlebot »." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:601 +msgid "" +"Just be aware that if you activate this feature the plugin will block all " +"bots which use the \"Googlebot\" string in their User Agent information but " +"are NOT officially from Google (irrespective whether they are malicious or " +"not)." +msgstr "" +"Soyez juste conscient(e) que si vous activez cette fonctionnalité le plugin " +"bloquera tous les robots utilisant la chaîne « Googlebot » " +"dans leurs informations d’ID, mais n’appartenant pas officiellement à Google " +"(indépendamment de ce qu’elles soient malveillantes ou non)." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:602 +msgid "" +"All other bots from other organizations such as \"Yahoo\", \"Bing\" etc will " +"not be affected by this feature." +msgstr "" +"Aucun des autres robots d’autres organisations telles que « Yahoo », " +"« Bing » etc. ne souffriront de cette fonctionnalité." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:608 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:618 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:97 +msgid "Block Fake Googlebots" +msgstr "Bloquer les faux Googlebots" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:621 +msgid "Check this if you want to block all fake Googlebots." +msgstr "Cochez si vous souhaitez bloquer tous les faux Googlebots" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:625 +msgid "" +"This feature will check if the User Agent information of a bot contains the " +"string \"Googlebot\"." +msgstr "" +"Cette fonction vérifie si les informations d’ID d’un bot contient la chaîne " +"« Googlebot »." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:626 +msgid "" +"It will then perform a few tests to verify if the bot is legitimately from " +"Google and if so it will allow the bot to proceed." +msgstr "" +"Il sera ensuite effectué quelques tests pour vérifier si le bot est " +"légitimement de Google et si elle autorisera le bot à agir." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:627 +msgid "" +"If the bot fails the checks then the plugin will mark it as being a fake " +"Googlebot and it will block it" +msgstr "" +"Si le bot ne les satisfait pas, alors l’extension le marquera comme faux " +"Googlebot et le bloquera" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:634 +msgid "Save Internet Bot Settings" +msgstr "Enregistrer les paramètres de Bot Internet" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:671 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:693 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:32 +msgid "Prevent Image Hotlinking" +msgstr "Empêcher les liens dynamiques (Hotline)" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:674 +msgid "" +"A Hotlink is where someone displays an image on their site which is actually " +"located on your site by using a direct link to the source of the image on " +"your server." +msgstr "" +"Un lien dynamique est un lien pointant vers une image de votre site que " +"quelqu’un affiche indûment sur le sien, alors qu’il n’en a pas les droits." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:675 +msgid "" +"Due to the fact that the image being displayed on the other person's site is " +"coming from your server, this can cause leaking of bandwidth and resources " +"for you because your server has to present this image for the people viewing " +"it on someone elses's site." +msgstr "" +"De plus, du fait que l’image affichée sur l’autre site provient de votre " +"serveur, cela peut provoquer une fuite de bande passante et de ressources " +"pour vous, car votre serveur doit présenter cette image pour la consultation " +"sur un site étranger, cela risque de vous être préjudiciable." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:676 +msgid "" +"This feature will prevent people from directly hotlinking images from your " +"site's pages by writing some directives in your .htaccess file." +msgstr "" +"Cette fonction neutralise le lien dynamique visant directement les images, " +"articles ou pages de votre site en écrivant quelques directives dans votre " +"fichier .htaccess." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:681 +msgid "Prevent Hotlinking" +msgstr "Prévention des liens dynamiques (Hotlinking)" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:696 +msgid "Check this if you want to prevent hotlinking to images on your site." +msgstr "Cochez si vous souhaitez empêcher le « Hotlinking » vers votre site." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:716 +msgid "Nonce check failed for delete all 404 event logs operation!" +msgstr "Échec du contrôle de suppression des journaux d’événements 404 !" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:727 +msgid "404 Detection Feature - Delete all 404 event logs operation failed!" +msgstr "" +"Fonction de détection 404 - échec de l’opération de suppression de tous les " +"événements 404 des journaux !" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:731 +msgid "All 404 event logs were deleted from the DB successfully!" +msgstr "" +"Tous les évènements 404 dans les journaux ont été supprimés avec succès !" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:757 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:110 +msgid "" +"You entered a non numeric value for the lockout time length field. It has " +"been set to the default value." +msgstr "" +"Vous avez entré une valeur non numérique pour le champ « intervalle entre " +"sauvegardes ». Elle sera fixée à la valeur par défaut." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:763 +msgid "" +"You entered an incorrect format for the \"Redirect URL\" field. It has been " +"set to the default value." +msgstr "" +"Vous avez entré un format incorrect pour le champ « URL de redirection ». Il " +"a été renseigné par la valeur par défaut." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:795 +msgid "404 Detection Configuration" +msgstr "Configuration de la détection 404" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:798 +msgid "" +"A 404 or Not Found error occurs when somebody tries to access a non-existent " +"page on your website." +msgstr "" +"Une erreur 404 « adresse (URL) introuvable » se produit lorsque quelqu'un " +"tente d'accéder à une page inexistante sur votre site web." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:799 +msgid "" +"Typically, most 404 errors happen quite innocently when people have mis-" +"typed a URL or used an old link to page which doesn't exist anymore." +msgstr "" +"Généralement, la plupart des erreurs 404 se produisent assez innocemment " +"quand l’utilisateur a mal saisi une URL ou utilisé un vieux lien vers une " +"page qui n’existe plus." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:800 +msgid "" +"However, in some cases you may find many repeated 404 errors which occur in " +"a relatively short space of time and from the same IP address which are all " +"attempting to access a variety of non-existent page URLs." +msgstr "" +"Toutefois, dans certains cas, vous pouvez trouver de nombreuses répétition " +"d’erreurs 404 se produisant dans un laps de temps relativement court avec la " +"même adresse IP d’origine qui sont toutes des tentatives d’accéder à une " +"variété d’URL de pages inexistantes." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:801 +msgid "" +"Such behaviour can mean that a hacker might be trying to find a particular " +"page or URL for sinister reasons." +msgstr "" +"Un tel comportement peut signifier qu’un pirate essaye de trouver une page " +"ou une URL particulière pour de sinistres mots." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:802 +msgid "" +"This feature allows you to monitor all 404 events which occur on your site, " +"and it also gives you the option of blocking IP addresses for a configured " +"length of time." +msgstr "" +"Cette fonctionnalité permet de surveiller tous les événements 404 se " +"produisant sur votre site, et donne également la possibilité de bloquer les " +"adresses IP les ayant générées pour une durée configurée." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:803 +msgid "" +"If you want to temporarily block an IP address, simply click the \"Temp Block" +"\" link for the applicable IP entry in the \"404 Event Logs\" table below." +msgstr "" +"Si vous souhaitez bloquer temporairement une adresse IP, cliquez simplement " +"sur le lien « Blocage Temporaire » pour l’entrée IP applicable dans le " +"tableau « journaux d’événements 404 » ci-dessous." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:808 +msgid "404 Detection Options" +msgstr "Options de détection 404" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:820 +msgid "Enable IP Lockout For 404 Events" +msgstr "Activer le verrouillage IP pour les événements 404" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:823 +msgid "Check this if you want to enable the lockout of selected IP addresses." +msgstr "" +"Cochez si vous souhaitez activer le verrouillage des adresses IP " +"sélectionnées." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:828 +msgid "" +"When you enable this checkbox, all 404 events on your site will be logged in " +"the table below. You can monitor these events and select some IP addresses " +"to be blocked in the table. All IP addresses you select to be blocked from " +"the \"404 Event Logs\" table section will be unable to access your site." +msgstr "" +"Lorsque vous activez cette case, tous les événements 404 sur votre site " +"seront consignés dans le tableau ci-dessous. Vous pouvez suivre ces " +"événements et y sélectionner certaines adresses IP à bloquer. Toutes les " +"adresses que vous choisirez d’être bloqués à partir de la section de table " +"« journaux d’événements 404 » ne pourront plus accéder à votre site." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:836 +msgid "Enable 404 Event Logging" +msgstr "Activer le journal des événements" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:839 +msgid "Check this if you want to enable the logging of 404 events" +msgstr "Cochez si vous souhaitez activer la journalisation des événements 404" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:844 +msgid "Time Length of 404 Lockout (min)" +msgstr "Durée de verrouillage 404 (min)" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:846 +msgid "" +"Set the length of time for which a blocked IP address will be prevented from " +"visiting your site" +msgstr "" +"Réglez la durée pendant laquelle une adresse IP bloquée sera empêché de " +"visiter votre site" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:851 +msgid "" +"You can lock any IP address which is recorded in the \"404 Event Logs\" " +"table section below." +msgstr "" +"Vous pouvez verrouiller une adresse IP enregistrée dans la section « " +"journaux d'événements 404 » du tableau ci-dessous." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:853 +msgid "" +"To temporarily lock an IP address, hover over the ID column and click the " +"\"Temp Block\" link for the applicable IP entry." +msgstr "" +"Pour verrouiller temporairement une adresse IP, survolez la colonne ID et " +"cliquez sur le lien « Temps de Blocage » pour l'entrée IP sélectionnée." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:860 +msgid "404 Lockout Redirect URL" +msgstr "URL de redirection verrouillage 404" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:862 +msgid "A blocked visitor will be automatically redirected to this URL." +msgstr "Un visiteur bloqué sera automatiquement redirigé vers cette URL." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:871 +msgid "404 Event Logs" +msgstr "Journaux d'événements 404" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:893 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:902 +msgid "Delete All 404 Event Logs" +msgstr "Supprimer toutes entrées des journaux d'événements 404" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:899 +msgid "Click this button if you wish to purge all 404 event logs from the DB." +msgstr "" +"Cliquez ce bouton si vous souhaitez purger les journaux d'événements 404 " +"dans la BdD." + +#: all-in-one-wp-security/admin/wp-security-list-404.php:105 +#: all-in-one-wp-security/admin/wp-security-list-acct-activity.php:79 +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:86 +#: all-in-one-wp-security/admin/wp-security-list-locked-ip.php:82 +#: all-in-one-wp-security/admin/wp-security-list-locked-ip.php:93 +#: all-in-one-wp-security/admin/wp-security-list-login-fails.php:78 +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:82 +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:93 +msgid "Please select some records using the checkboxes" +msgstr "" +"Veuillez sélectionner les enregistrements concernés par l'opération à l'aide " +"des cases à cocher" + +#: all-in-one-wp-security/admin/wp-security-list-acct-activity.php:107 +#: all-in-one-wp-security/admin/wp-security-list-login-fails.php:107 +msgid "The selected entries were deleted successfully!" +msgstr "Les entrées sélectionnées ont été supprimées avec succès!" + +#: all-in-one-wp-security/admin/wp-security-list-acct-activity.php:120 +#: all-in-one-wp-security/admin/wp-security-list-login-fails.php:119 +msgid "The selected entry was deleted successfully!" +msgstr "L’entrée sélectionnée a été supprimée avec succès" + +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:139 +msgid "" +"The selected IP addresses were saved in the blacklist configuration settings." +msgstr "" +"Les adresses IP sélectionnées ont été enregistrées dans les paramètres de la " +"liste noire." + +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:153 +msgid "" +"The .htaccess file was successfully modified to include the selected IP " +"addresses." +msgstr "" +"Le fichier .htaccess a été modifié avec succès pour exclure les adresses IP " +"sélectionnées." + +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:159 +msgid "" +"NOTE: The .htaccess file was not modified because you have disabled the " +"\"Enable IP or User Agent Blacklisting\" check box." +msgstr "" +"REMARQUE : Le fichier .htaccess n’a pas été modifié car vous avez décoché la " +"case « Activer l’IP ou l’ID sur liste noire »." + +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:160 +#, php-format +msgid "" +"To block these IP addresses you will need to enable the above flag in the %s " +"menu" +msgstr "" +"Pour bloquer ces adresses IP, vous devrez activer l’indicateur ci-dessus " +"dans le menu %s" + +#: all-in-one-wp-security/admin/wp-security-list-locked-ip.php:117 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:527 +msgid "The selected IP entries were unlocked successfully!" +msgstr "Les IP sélectionnées ont été débloquées avec succès !" + +#: all-in-one-wp-security/admin/wp-security-list-locked-ip.php:126 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:536 +msgid "The selected IP entry was unlocked successfully!" +msgstr "L'IP sélectionnée a été déverrouillée avec succès !" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:127 +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:153 +msgid "Your account is now active" +msgstr "Votre compte est désormais actif" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:128 +msgid "Your account with username:" +msgstr "Votre compte avec identifiant :" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:128 +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:154 +msgid " is now active" +msgstr "est maintenant actif" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:137 +msgid "The selected accounts were approved successfully!" +msgstr "Les comptes sélectionnés ont été approuvés avec succès !" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:141 +msgid "The following accounts failed to update successfully: " +msgstr "Les comptes suivants ont échoué à être mis à jour :" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:149 +msgid "The selected account was approved successfully!" +msgstr "Le compte sélectionné a été approuvé avec succès !" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:154 +msgid "Your account with username: " +msgstr "Identifiant de l’administrateur" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:180 +msgid "The selected accounts were deleted successfully!" +msgstr "Les comptes sélectionnés ont été supprimés avec succès!" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:188 +msgid "The selected account was deleted successfully!" +msgstr "Le compte sélectionné a été supprimé avec succès !" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:22 +msgid "Visitor Lockout" +msgstr "Visiteur bloqué" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:88 +msgid "Site lockout feature settings saved!" +msgstr "Paramètres de fonction de verrouillage du site sauvegardés !" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:93 +msgid "General Visitor Lockout" +msgstr "Tous visiteurs bloqués" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:99 +msgid "" +"This feature allows you to put your site into \"maintenance mode\" by " +"locking down the front-end to all visitors except logged in users with super " +"admin privileges." +msgstr "" +"Cette fonctionnalité permet de mettre votre site en mode « maintenance » en " +"verrouillant le site à tous les visiteurs, sauf ceux ayant des privilèges " +"d'administrateur ou super-admin." + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:100 +msgid "" +"Locking your site down to general visitors can be useful if you are " +"investigating some issues on your site or perhaps you might be doing some " +"maintenance and wish to keep out all traffic for security reasons." +msgstr "" +"Le verrouillage de votre site aux visiteurs peut être utile, que vous ayez à " +"étudier quelque point sur votre site, deviez faire un peu de ménage ou " +"souhaitiez fermer tout le trafic pour raison de sécurité." + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:105 +msgid "Enable Front-end Lockout" +msgstr "Activer le verrouillage du site" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:108 +msgid "" +"Check this if you want all visitors except those who are logged in as " +"administrator to be locked out of the front-end of your site." +msgstr "" +"Cochez si vous souhaitez que tous les visiteurs, sauf ceux ayant des " +"privilèges administrateur soient empêchés d’accès à votre site." + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:112 +msgid "Enter a Message:" +msgstr "Saisissez un message :" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:124 +msgid "" +"Enter a message you wish to display to visitors when your site is in " +"maintenance mode." +msgstr "" +"Entrez le message que vous souhaitez afficher aux visiteurs lorsque votre " +"site est en mode maintenance." + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:131 +msgid "Save Site Lockout Settings" +msgstr "Enregistrer les paramètres de verrouillage du site" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:23 +msgid "Copy Protection" +msgstr "Protection contre la copie" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:24 +msgid "Frames" +msgstr "Cadres" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:88 +msgid "Copy Protection feature settings saved!" +msgstr "Paramètres de la fonction de protection contre la copie sauvegardés !" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:93 +msgid "Disable The Ability To Copy Text" +msgstr "Désactiver la possibilité de copier du texte" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:99 +msgid "" +"This feature allows you to disable the ability to select and copy text from " +"your front end." +msgstr "" +"Cette fonction permet de désactiver la possibilité de sélectionner et copier " +"du texte depuis votre site." + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:104 +msgid "Enable Copy Protection" +msgstr "Activer la protection contre la copie" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:107 +msgid "" +"Check this if you want to disable the \"Right Click\", \"Text Selection\" " +"and \"Copy\" option on the front end of your site." +msgstr "" +"Cochez si vous souhaitez désactiver le « clic droit », « Sélection de texte " +"» et l'option « Copier » sur votre site." + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:114 +msgid "Save Copy Protection Settings" +msgstr "Enregistrer les paramètres de protection contre la copie" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:138 +msgid "Frame Display Prevention feature settings saved!" +msgstr "" +"Paramètres de la fonction protection de l’affichage de cadres enregistrés !" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:143 +msgid "Prevent Your Site From Being Displayed In a Frame" +msgstr "Empêcher votre site d'être affiché dans un cadre" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:149 +msgid "" +"This feature allows you to prevent other sites from displaying any of your " +"content via a frame or iframe." +msgstr "" +"Cette fonction permet d’empêcher d’autres sites d’afficher tout le contenu " +"du votre via un frame ou iframe." + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:150 +msgid "" +"When enabled, this feature will set the \"X-Frame-Options\" paramater to " +"\"sameorigin\" in the HTTP header." +msgstr "" +"Lorsqu’activée, cette fonction permet de paramétrer « X-Frame-Options » à « " +"sameorigin » dans l’en-tête HTTP." + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:155 +msgid "Enable iFrame Protection" +msgstr "Activer la protection iFrame" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:158 +msgid "" +"Check this if you want to stop other sites from displaying your content in a " +"frame or iframe." +msgstr "" +"Cochez si vous voulez empêcher d’autres sites d’afficher votre contenu dans " +"un frame (cadre) ou iframe." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:26 +msgid "General Settings" +msgstr "Paramètres généraux" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:29 +msgid "WP Meta Info" +msgstr "Infos Meta WP" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:30 +msgid "Import/Export" +msgstr "Importer/Exporter" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:97 +msgid "All the security features have been disabled successfully!" +msgstr "Tous les dispositifs de sécurité ont été désactivés avec succès!" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:101 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:128 +msgid "" +"Could not write to the .htaccess file. Please restore your .htaccess file " +"manually using the restore functionality in the \".htaccess File\"." +msgstr "" +"Impossible d’écrire dans le fichier .htaccess. Veuillez restaurer " +"manuellement votre fichier .htaccess en utilisant la fonction de " +"restauration dans « Fichier .htaccess »." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:106 +msgid "" +"Could not write to the wp-config.php. Please restore your wp-config.php file " +"manually using the restore functionality in the \"wp-config.php File\"." +msgstr "" +"Impossible d’écrire dans wp-config.php. Veuillez restaurer manuellement " +"votre fichier wp-config.php en utilisant la fonction de restauration dans « " +"Fichier wp-config.php »." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:124 +msgid "All firewall rules have been disabled successfully!" +msgstr "Toutes les règles de pare-feu ont été désactivés avec succès !" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:138 +msgid "WP Security Plugin" +msgstr "Extension de sécurité WP" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:140 +msgid "" +"Thank you for using our WordPress security plugin. There are a lot of " +"security features in this plugin." +msgstr "" +"Merci d’utiliser notre module de sécurité WordPress. Il y a beaucoup " +"d’éléments de sécurité dans cette extension." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:141 +msgid "" +"Go through each menu items and enable the security options to add more " +"security to your site. Start by activating the basic features first." +msgstr "" +"Cheminez au long de ces éléments et activez les options qui vous intéressent " +"pour rendre votre site encore plus sûr. Commencez par activer les " +"fonctionnalités de base." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:142 +msgid "" +"It is a good practice to take a backup of your .htaccess file, database and " +"wp-config.php file before activating the security features. This plugin has " +"options that you can use to backup those resources easily." +msgstr "" +"C’est une bonne pratique que de faire une sauvegarde de votre fichier ." +"htaccess, de votre BdD et wp-config.php avant d’activer les fonctions de " +"sécurité. Cette extension dispose d’options à votre disposition pour " +"sauvegarder facilement ces ressources." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:145 +msgid "Backup your database" +msgstr "Sauvegarder votre BdD" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:146 +msgid "Backup .htaccess file" +msgstr "Sauvegarder le .htaccess" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:147 +msgid "Backup wp-config.php file" +msgstr "Sauvegarder wp-config.php" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:153 +msgid "Disable Security Features" +msgstr "Désactiver les fonctions de sécurité" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:159 +msgid "" +"If you think that some plugin functionality on your site is broken due to a " +"security feature you enabled in this plugin, then use the following option " +"to turn off all the security features of this plugin." +msgstr "" +"Si vous pensez que certaines fonctionnalités d'extension sur votre site sont " +"brisées à cause d'une fonction de sécurité activée par All-In-One WP " +"Security & Firewall, utilisez l'option suivante pour désactiver toutes les " +"fonctions de sécurité." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:163 +msgid "Disable All Security Features" +msgstr "Désactiver toutes les fonctions de sécurité" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:169 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:179 +msgid "Disable All Firewall Rules" +msgstr "Désactiver toutes les règles de pare-feu" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:175 +msgid "" +"This feature will disable all firewall rules which are currently active in " +"this plugin and it will also delete these rules from your .htacess file. Use " +"it if you think one of the firewall rules is causing an issue on your site." +msgstr "" +"Cette fonction permet de désactiver toutes les règles de pare-feu " +"actuellement actives dans cette extension, elle supprime également ces " +"règles dans le fichier .htaccess. Utilisez-la si vous pensez que l’une des " +"règles de pare-feu est à l’origine d’un problème sur votre site." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:208 +msgid "" +"Your .htaccess file was successfully backed up! Using an FTP program go to " +"the \"/wp-content/aiowps_backups\" directory to save a copy of the file to " +"your computer." +msgstr "" +"Votre fichier .htaccess a été sauvegardé avec succès ! Si vous utilisez un " +"programme FTP, allez dans le répertoire « /wp-content/aiowps_backups » pour " +"en enregistrer une copie sur votre ordinateur." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:214 +msgid "" +"htaccess file rename failed during backup. Please check your root directory " +"for the backup file using FTP." +msgstr "" +"Le renommage du .htaccess a échoué lors de la sauvegarde. Veuillez vérifier " +"votre répertoire racine pour le fichier de sauvegarde via FTP." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:220 +msgid "htaccess backup failed." +msgstr "La sauvegarde du .htaccess a échoué." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:235 +msgid "Please choose a .htaccess to restore from." +msgstr "Choisir un .htaccess à partir duquel restaurer." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:251 +msgid "" +"htaccess file restore failed. Please attempt to restore the .htaccess " +"manually using FTP." +msgstr "" +"Échec de la restauration du .htaccess. Essayer de le restaurer manuellement " +"en utilisant FTP si nécessaire." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:255 +msgid "Your .htaccess file has successfully been restored!" +msgstr "Votre fichier .htaccess a été restauré avec succès !" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:261 +msgid "" +"htaccess Restore operation failed! Please check the contents of the file you " +"are trying to restore from." +msgstr "" +"L’opération de restauration du .htaccess a échoué ! Veuillez vérifier le " +"contenu du fichier à partir duquel vous avez essayé de restaurer." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:267 +msgid ".htaccess File Operations" +msgstr "Opérations sur le fichier .htaccess" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:270 +msgid "" +"Your \".htaccess\" file is a key component of your website's security and it " +"can be modified to implement various levels of protection mechanisms." +msgstr "" +"Votre fichier « .htaccess » est un élément clé de la sécurité de votre site " +"Web et il peut être modifié pour mettre en œuvre différents niveaux de " +"mécanismes de protection." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:271 +msgid "" +"This feature allows you to backup and save your currently active .htaccess " +"file should you need to re-use the the backed up file in the future." +msgstr "" +"Cette fonctionnalité permet de sauvegarder et enregistrer votre fichier ." +"htaccess actuellement actif si vous avez besoin de réutiliser la sauvegarde " +"à l’avenir." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:272 +msgid "" +"You can also restore your site's .htaccess settings using a backed up ." +"htaccess file." +msgstr "" +"Vous pouvez également restaurer les paramètres .htaccess de votre site en " +"utilisant un fichier .htaccess sauvegardé." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:286 +msgid "Save the current .htaccess file" +msgstr "Sauvegarder le fichier .htaccess actuel" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:290 +msgid "" +"Click the button below to backup and save the currently active .htaccess " +"file." +msgstr "" +"Cliquez le bouton ci-dessous pour sauvegarder et enregistrer le fichier ." +"htaccess actuellement actif." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:291 +msgid "Backup .htaccess File" +msgstr "Sauvegarde du fichier .htaccess" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:295 +msgid "Restore from a backed up .htaccess file" +msgstr "Restaurer à partir d'un fichier .htaccess sauvegardé antérieurement" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:301 +msgid ".htaccess file to restore from" +msgstr "Fichier .htaccess à partir duquel restaurer" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:307 +msgid "" +"After selecting your file, click the button below to restore your site using " +"the backed up htaccess file (htaccess_backup.txt)." +msgstr "" +"Après avoir sélectionné votre fichier, cliquez le bouton ci-dessous pour " +"restaurer votre site en utilisant le fichier .htaccess sauvegardé " +"(htaccess_backup.txt)." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:313 +msgid "Restore .htaccess File" +msgstr "Restaurer le fichier .htaccess" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:317 +msgid "View Contents of the currently active .htaccess file" +msgstr "Afficher le contenu du fichier .htaccess actuellement actif" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:346 +msgid "Please choose a wp-config.php file to restore from." +msgstr "Veuillez choisir un fichier wp-config.php à partir duquel restaurer." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:362 +msgid "" +"wp-config.php file restore failed. Please attempt to restore this file " +"manually using FTP." +msgstr "" +"Échec de la restauration du fichier wp-config.php. Essayez de restaurer ce " +"fichier manuellement, à l’aide de FTP si nécessaire." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:366 +msgid "Your wp-config.php file has successfully been restored!" +msgstr "Votre fichier wp-config.php a été restauré avec succès" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:372 +msgid "" +"wp-config.php Restore operation failed! Please check the contents of the " +"file you are trying to restore from." +msgstr "" +"L'opération de restauration du wp-config.php a échoué ! Veuillez vérifiez le " +"contenu du fichier à partir duquel vous avez essayez de restaurer." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:378 +msgid "wp-config.php File Operations" +msgstr "Opérations sur les fichiers wp-config.php" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:381 +msgid "" +"Your \"wp-config.php\" file is one of the most important in your WordPress " +"installation. It is a primary configuration file and contains crucial things " +"such as details of your database and other critical components." +msgstr "" +"Votre fichier « wp-config.php » est l’un des plus importants de votre " +"installation WordPress. C’est un fichier de configuration principal qui " +"contient des éléments essentiels comme les détails de votre base de données " +"et autres éléments importants." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:382 +msgid "" +"This feature allows you to backup and save your currently active wp-config." +"php file should you need to re-use the the backed up file in the future." +msgstr "" +"Cette fonctionnalité permet de sauvegarder et enregistrer votre fichier wp-" +"config.php actuellement actif au cas où vous auriez besoin de ré-utiliser le " +"fichier sauvegardé à l'avenir." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:383 +msgid "" +"You can also restore your site's wp-config.php settings using a backed up wp-" +"config.php file." +msgstr "" +"Vous pouvez également restaurer les paramètres wp-config.php de votre site " +"en utilisant un fichier wp-config.php sauvegardés." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:397 +msgid "Save the current wp-config.php file" +msgstr "Le fichier wp-config.php a été mis à jour avec succès !" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:401 +msgid "" +"Click the button below to backup and download the contents of the currently " +"active wp-config.php file." +msgstr "" +"Cliquez le bouton ci-dessous pour sauvegarder et télécharger le contenu du " +"fichier wp-config.php actif." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:402 +msgid "Backup wp-config.php File" +msgstr "Sauvegarde du fichier wp-config.php" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:407 +msgid "Restore from a backed up wp-config file" +msgstr "Restaurer wp-config à partir d’une sauvegarde antérieure" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:413 +msgid "wp-config file to restore from" +msgstr "Fichier wp-config à restaurer" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:419 +msgid "" +"After selecting your file click the button below to restore your site using " +"the backed up wp-config file (wp-config.php.backup.txt)." +msgstr "" +"Après avoir sélectionné votre fichier, cliquez le bouton ci-dessous pour " +"restaurer votre site en utilisant la sauvegarde du fichier wp-config (wp-" +"config.php.backup.txt)." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:425 +msgid "Restore wp-config File" +msgstr "Restaurer le fichier wp-config" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:429 +msgid "View Contents of the currently active wp-config.php file" +msgstr "Afficher le contenu du fichier wp-config.php actif" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:464 +msgid "WP Generator Meta Tag" +msgstr "Générateur de Meta Tag WP" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:467 +msgid "" +"Wordpress generator automatically adds some meta information inside the " +"\"head\" tags of every page on your site's front end. Below is an example of " +"this:" +msgstr "" +"Le générateur WordPress ajoute automatiquement quelques méta-informations à " +"l’intérieur des balises « Head » de chaque page du visuel de votre site. " +"Voici un exemple de celles-ci :" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:469 +msgid "" +"The above meta information shows which version of WordPress your site is " +"currently running and thus can help hackers or crawlers scan your site to " +"see if you have an older version of WordPress or one with a known exploit." +msgstr "" +"Les méta-informations ci-dessus indiquent quelle version de WordPress est en " +"cours d'exécution pour votre site, et peut ainsi aider les pirates ou des " +"robots d'analyse si vous avez une ancienne version de WordPress ou " +"comportant une faille connue." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:470 +msgid "" +"This feature will allow you to remove the WP generator meta info from your " +"site's pages." +msgstr "" +"Cette fonctionnalité permettra de retirer le générateur WP d’infos méta sur " +"chaque page de votre site." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:476 +msgid "WP Generator Meta Info" +msgstr "WP générateur d’Infos Meta" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:488 +msgid "Remove WP Generator Meta Info" +msgstr "Supprimer le générateur WP d’Infos Meta" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:491 +msgid "" +"Check this if you want to remove the meta info produced by WP Generator from " +"all pages" +msgstr "" +"Cochez ceci si vous souhaitez supprimer les informations méta produites par " +"le générateur WP sur chaque page" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:517 +msgid "Please choose a file to import your settings from." +msgstr "Veuillez choisir un fichier à partir duquel importer les paramètres." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:549 +msgid "Import AIOWPS settings from " +msgstr "Paramètres d’importation AIOWPS" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:555 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:599 +msgid "" +"The deletion of the import file failed. Please delete this file manually via " +"the media menu for security purposes." +msgstr "" +"La suppression du fichier importation a échoué. Veuillez supprimer ce " +"fichier manuellement via le menu médias pour raison de sécurité." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:557 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:601 +msgid "" +"The file you uploaded was also deleted for security purposes because it " +"contains security settings details." +msgstr "" +"Le fichier que vous avez téléchargé a également été supprimé pour raison de " +"sécurité, car il contient des informations de paramétrage de sécurité." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:572 +msgid "Your AIOWPS settings were successfully imported via file input." +msgstr "Vos paramètres AIOWPS ont été correctement importés depuis ce fichier." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:573 +msgid "" +"The deletion of the import file failed. Please delete this file manually via " +"the media menu for security purposes because it contains security settings " +"details." +msgstr "" +"La suppression du fichier à importer a échoué. Veuillez supprimer ce fichier " +"manuellement via le menu des médias pour raison de sécurité, car il contient " +"le détail des paramètres de sécurité." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:575 +msgid "" +"Your AIOWPS settings were successfully imported. The file you uploaded was " +"also deleted for security purposes because it contains security settings " +"details." +msgstr "" +"Vos paramètres AIOWPS ont été importées avec succès. Le fichier que vous " +"avez téléchargé a également été supprimé pour raison de sécurité, car il " +"contient les informations du paramétrage de sécurité." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:578 +msgid "Your AIOWPS settings were successfully imported via text entry." +msgstr "" +"Vos paramètres AIOWPS ont été importés par l’intermédiaire de saisie de " +"texte." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:593 +msgid "" +"The contents of your settings file appear invalid. Please check the contents " +"of the file you are trying to import settings from." +msgstr "" +"Le contenu du fichier de paramètres affiché est non valide. Vérifiez le " +"contenu du fichier d'import des paramètres." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:610 +msgid "Export or Import Your AIOWPS Settings" +msgstr "Exporter ou importer vos paramètres d’AIOWPS" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:613 +msgid "" +"This section allows you to export or import your All In One WP Security & " +"Firewall settings." +msgstr "" +"Cette section permet d’exporter ou importer tous vos paramètres d’All In One " +"WP Security & Firewall ." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:614 +msgid "" +"This can be handy if you wanted to save time by applying the settings from " +"one site to another site." +msgstr "" +"Cela peut être pratique si vous voulez gagner du temps en appliquant les " +"paramètres d’un site à un autre." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:615 +msgid "" +"NOTE: Before importing, it is your responsibility to know what settings you " +"are trying to import. Importing settings blindly can cause you to be locked " +"out of your site." +msgstr "" +"REMARQUE : Avant d’importer, il est de votre responsabilité de bien savoir " +"quels sont les paramètres que vous essayez d’installer : importer " +"aveuglément des paramètres de sécurité peut vous bloquer hors de votre site." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:616 +msgid "" +"For Example: If a settings item relies on the domain URL then it may not " +"work correctly when imported into a site with a different domain." +msgstr "" +"Par exemple : si un des élément du paramétrage dépend de l’URL de domaine, " +"il peut ne pas fonctionner correctement lorsqu’importé dans un site avec un " +"domaine différent." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:622 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:631 +msgid "Export AIOWPS Settings" +msgstr "Réglages AIOWPS exportation" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:628 +msgid "" +"To export your All In One WP Security & Firewall settings click the button " +"below." +msgstr "" +"Pour exporter vos paramètres d’All-In-One WP Security & Firewall, cliquez le " +"bouton ci-dessous." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:635 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:660 +msgid "Import AIOWPS Settings" +msgstr "Paramètres d’importation AIOWPS" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:641 +msgid "" +"Use this section to import your All In One WP Security & Firewall settings " +"from a file. Alternatively, copy/paste the contents of your import file into " +"the textarea below." +msgstr "" +"Utilisez cette section pour importer tous vos paramètres d’All In One WP " +"Security & Firewall. Vous pouvez également copier / coller le contenu de " +"votre fichier d’importation dans la zone de texte ci-dessous." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:642 +msgid "Import File" +msgstr "Importer le fichier" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:648 +msgid "" +"After selecting your file, click the button below to apply the settings to " +"your site." +msgstr "" +"Après avoir sélectionné votre fichier, cliquez le bouton ci-dessous pour " +"appliquer les paramètres à votre site." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:654 +msgid "Copy/Paste Import Data" +msgstr "Copier / coller les données importées" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:24 +msgid "Comment SPAM" +msgstr "Commentaire SPAM" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:25 +msgid "Comment SPAM IP Monitoring" +msgstr "Surveillance IP commentaires SPAM" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:26 +msgid "BuddyPress" +msgstr "BuddyPress" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:113 +msgid "Comment SPAM Settings" +msgstr "Paramètres commentaires SPAM" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:118 +msgid "Add Captcha To Comments Form" +msgstr "Ajouter un Captcha au formulaire de commentaires" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:122 +msgid "" +"This feature will add a simple math captcha field in the WordPress comments " +"form." +msgstr "" +"Cette fonction va ajouter un champ Captcha arithmétique simple dans le " +"formulaire de commentaires WordPress." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:123 +msgid "" +"Adding a captcha field in the comment form is a simple way of greatly " +"reducing SPAM comments from bots without using .htaccess rules." +msgstr "" +"L’ajout d’un champ Captcha dans le formulaire de commentaire est un moyen " +"simple de réduire grandement le SPAM de commentaires contre les robots " +"collecteurs sans utiliser les règles .htaccess." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:132 +msgid "Enable Captcha On Comment Forms" +msgstr "Activer le Captcha sur les formulaires de commentaire" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:135 +msgid "Check this if you want to insert a captcha field on the comment forms" +msgstr "" +"Cochez si vous souhaitez insérer un champ Captcha sur les formulaires de " +"commentaires" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:142 +msgid "Block Spambot Comments" +msgstr "Bloquer les commentaires de spambots" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:146 +msgid "" +"A large portion of WordPress blog comment SPAM is mainly produced by " +"automated bots and not necessarily by humans. " +msgstr "" +"Une grande partie des SPAM de commentaire de blog WordPress est " +"principalement produite par des robots automatisés et pas nécessairement par " +"les humains." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:147 +msgid "" +"This feature will greatly minimize the useless and unecessary traffic and " +"load on your server resulting from SPAM comments by blocking all comment " +"requests which do not originate from your domain." +msgstr "" +"Cette fonctionnalité va considérablement réduire le trafic et les " +"chargements inutiles sur votre serveur dus aux SPAM de commentaires en " +"bloquant toutes les demandes de commentaire qui ne proviennent pas de votre " +"domaine." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:148 +msgid "" +"In other words, if the comment was not submitted by a human who physically " +"submitted the comment on your site, the request will be blocked." +msgstr "" +"En d’autres termes, si le commentaire n’était pas présenté physiquement par " +"un humain sur votre site, il sera bloqué." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:164 +msgid "Block Spambots From Posting Comments" +msgstr "Bloquer le Spambot postant un commentaire" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:167 +msgid "" +"Check this if you want to apply a firewall rule which will block comments " +"originating from spambots." +msgstr "" +"Cochez cette case pour appliquer une règle de pare-feu permettant de bloquer " +"les commentaires provenant des spambots." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:171 +msgid "" +"This feature will implement a firewall rule to block all comment attempts " +"which do not originate from your domain." +msgstr "" +"Cette fonction mettra en œuvre une règle de pare-feu pour bloquer toutes " +"tentatives de commentaire qui ne provient pas de votre domaine." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:172 +msgid "" +"A legitimate comment is one which is submitted by a human who physically " +"fills out the comment form and clicks the submit button. For such events, " +"the HTTP_REFERRER is always set to your own domain." +msgstr "" +"Un commentaire légitime est celui qui est présenté par un humain qui " +"physiquement remplit le formulaire de commentaire et clique sur le bouton « " +"Soumettre ». Pour de tels événements, le HTTP_REFERRER est toujours " +"positionné sur votre propre nom de domaine." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:173 +msgid "" +"A comment submitted by a spambot is done by directly calling the comments." +"php file, which usually means that the HTTP_REFERRER value is not your " +"domain and often times empty." +msgstr "" +"Un commentaire présenté par un spambot se fait en appelant directement le " +"fichier comments.php, ce qui signifie généralement que la valeur " +"HTTP_REFERRER n’est pas votre domaine et est le plus souvent vide." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:174 +msgid "" +"This feature will check and block comment requests which are not referred by " +"your domain thus greatly reducing your overall blog SPAM and PHP requests " +"done by the server to process these comments." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:201 +msgid "Nonce check failed for list SPAM comment IPs!" +msgstr "" +"Échec du contrôle ponctuel pour voir les IPs des Spammeurs de commentaire !" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:207 +msgid "" +"You entered a non numeric value for the minimum SPAM comments per IP field. " +"It has been set to the default value." +msgstr "" +"Vous avez saisi une valeur non conforme pour le minima de SPAMs de " +"commentaire par champ IP. Il a été fixé à la valeur par défaut." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:219 +#, php-format +msgid "" +"Displaying results for IP addresses which have posted a minimum of %s SPAM " +"comments" +msgstr "" +"Afficher les résultats d’adresses IP qui ont posté un minimum de %s " +"commentaires indésirables" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:235 +msgid "" +"This tab displays a list of the IP addresses of the people or bots who have " +"left SPAM comments on your site." +msgstr "" +"Cet onglet affiche la liste des adresses IP de visiteur(s) ou de robot(s) " +"ayant laissé des commentaires SPAM sur votre site." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:236 +msgid "" +"This information can be handy for identifying the most persistent IP " +"addresses or ranges used by spammers." +msgstr "" +"Cette information peut être utile pour identifier les adresses IP ou plages " +"les plus tenaces utilisées par les spammeurs." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:237 +msgid "" +"By inspecting the IP address data coming from spammers you will be in a " +"better position to determine which addresses or address ranges you should " +"block by adding them to your blacklist." +msgstr "" +"En inspectant les données d’adresses IP provenant de spammeurs, vous serez " +"en meilleure position pour déterminer quelles adresses ou plages d’adresses " +"vous devez bloquer en les ajoutant à votre liste noire." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:238 +msgid "" +"To add one or more of the IP addresses displayed in the table below to your " +"blacklist, simply click the \"Block\" link for the individual row or select " +"more than one address \n" +" using the checkboxes and then choose the \"block" +"\" option from the Bulk Actions dropdown list and click the \"Apply\" button." +msgstr "" +"Pour ajouter une ou plusieurs des adresses IP affichées dans le tableau ci-" +"dessous dans votre liste noire, cliquez simplement sur le lien « Bloquer » " +"pour une ligne individuelle ou sélectionner plus d’une adresse \n" +" à l’aide des cases à cocher, puis sélectionnez " +"l’option « Bloquer » de la liste déroulante des actions en vrac et cliquez " +"sur le bouton « Appliquer »." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:244 +msgid "List SPAMMER IP Addresses" +msgstr "Liste des adresses IP de Spammeurs" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:250 +msgid "Minimum number of SPAM comments per IP" +msgstr "Nombre minimal de commentaires SPAM par IP" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:252 +msgid "" +"This field allows you to list only those IP addresses which have been used " +"to post X or more SPAM comments." +msgstr "" +"Ce champ vous permet d’énumérer uniquement les adresses IP qui ont été " +"utilisés pour un (ou davantage de) commentaire SPAM." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:256 +msgid "" +"Example 1: Setting this value to \"0\" or \"1\" will list ALL IP addresses " +"which were used to submit SPAM comments." +msgstr "" +"Exemple 1 : Définition de cette valeur à « 0 » ou « 1 » listera toutes les " +"adresses IP ayant été utilisés pour soumettre des commentaires SPAMmés." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:257 +msgid "" +"Example 2: Setting this value to \"5\" will list only those IP addresses " +"which were used to submit 5 SPAM comments or more on your site." +msgstr "" +"Exemple 2 : Définir cette valeur à « 5 » listera uniquement les adresses IP " +"qui ont été utilisés pour présenter 5 commentaires SPAM ou plus sur votre " +"site." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:264 +msgid "Find IP Addresses" +msgstr "Trouver les adresses IP" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:268 +msgid "SPAMMER IP Address Results" +msgstr "Liste des adresses IP de spammeurs" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:274 +#: all-in-one-wp-security/classes/wp-security-utility.php:150 +msgid "" +"The plugin has detected that you are using a Multi-Site WordPress " +"installation." +msgstr "" +"L’extension a détecté que vous utilisez une installation multi-site " +"WordPress." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:275 +msgid "Only the \"superadmin\" can block IP addresses from the main site." +msgstr "" +"Seul le « super Admin » peut bloquer les adresses IP à partir du site " +"principal." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:276 +msgid "" +"Take note of the IP addresses you want blocked and ask the superadmin to add " +"these to the blacklist using the \"Blacklist Manager\" on the main site." +msgstr "" +"Prenez note des adresses IP que vous voulez bloquer et demandez au « super " +"Admin » de les ajouter à la liste noire en utilisant le « gestionnaire de " +"liste noire » sur le site principal." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:321 +msgid "BuddyPress SPAM Settings" +msgstr "Paramétrage anti-SPAM de BuddyPress" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:326 +msgid "Add Captcha To BuddyPress Registration Form" +msgstr "Ajouter un Captcha sur le formulaire d’inscription à BuddyPress" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:330 +msgid "" +"This feature will add a simple math captcha field in the BuddyPress " +"registration form." +msgstr "" +"Cette fonctionnalité va ajouter un champ Captcha arithmétique simple dans le " +"formulaire d’inscription à BuddyPress." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:331 +msgid "" +"Adding a captcha field in the registration form is a simple way of greatly " +"reducing SPAM signups from bots without using .htaccess rules." +msgstr "" +"L’ajout d’un champ Captcha dans le formulaire de commentaire est un moyen " +"simple de réduire grandement les formulaires SPAM contrant ainsi les robots " +"collecteurs sans pour autant utiliser les règles .htaccess." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:341 +msgid "Enable Captcha On BuddyPress Registration Form" +msgstr "Activer un Captcha sur le formulaire d’inscription à BuddyPress" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:344 +msgid "" +"Check this if you want to insert a captcha field on the BuddyPress " +"registration forms" +msgstr "" +"Case à cocher pour insérer un champ Captcha sur le formulaire " +"d’enregistrement de BuddyPress" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:353 +msgid "" +"BuddyPress is not active! In order to use this feature you will need to have " +"BuddyPress installed and activated." +msgstr "" +"BuddyPress est pas actif ! Pour utiliser cette fonctionnalité, vous devez " +"avoir BuddyPress installé et activé." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:29 +msgid "WP Username" +msgstr "Nom d’utilisateur WP" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:30 +msgid "Display Name" +msgstr "Nom affiché" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:31 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:862 +msgid "Password" +msgstr "Mot de passe" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:85 +msgid "Admin User Security" +msgstr "Sécurité d’Administrateur" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:88 +msgid "" +"By default, WordPress sets the administrator username to \"admin\" at " +"installation time." +msgstr "" +"Par défaut, WordPress définit l’ID administrateur comme « Admin » au moment " +"de l’installation." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:89 +msgid "" +"A lot of hackers try to take advantage of this information by attempting " +"\"Brute Force Login Attacks\" where they repeatedly try to guess the " +"password by using \"admin\" for username." +msgstr "" +"Un grand nombre de pirates tentent de tirer profit de ces informations en " +"tentant des attaques « Brute Force Connexion » où ils tentent à plusieurs " +"reprises de découvrir le mot de passe en utilisant « Admin » comme nom " +"d’utilisateur." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:90 +msgid "" +"From a security perspective, changing the default \"admin\" user name is one " +"of the first and smartest things you should do on your site." +msgstr "" +"Du point de vue sécurité, changer le nom par défaut de l'utilisateur « Admin " +"» est une des premières et des plus intelligentes choses à faire sur votre " +"site." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:91 +msgid "" +"This feature will allow you to change your default \"admin\" user name to a " +"more secure name of your choosing." +msgstr "" +"Cette fonctionnalité permet de changer le nom d'utilisateur « Admin » par " +"défaut pour un ID plus sûr de votre choix." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:98 +msgid "List of Administrator Accounts" +msgstr "Liste des comptes administrateur" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:107 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:36 +msgid "Change Admin Username" +msgstr "Changement du nom d’utilisateur Administrateur" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:115 +msgid "" +"Your site currently has an account which uses the default \"admin\" " +"username. \n" +" It is highly recommended that you change this name to " +"something else. \n" +" Use the following field to change the admin username." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:123 +msgid "New Admin Username" +msgstr "Nouvel ID d’utilisateur administrateur" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:125 +msgid "Choose a new username for admin." +msgstr "Choisissez un nouveau nom d’utilisateur admin." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:129 +msgid "Change Username" +msgstr "Changer d’ID d’utilisateur" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:131 +msgid "" +"NOTE: If you are currently logged in as \"admin\" you will be automatically " +"logged out after changing your username and will be required to log back in." +msgstr "" +"NOTE: Si vous êtes actuellement connecté en tant qu’ »Admin », vous serez " +"automatiquement déconnecté après avoir changé votre nom d’utilisateur et " +"celui-ci sera nécessaire pour rouvrir une session." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:138 +msgid "No action required! " +msgstr "Aucune action n’est requise!" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:140 +msgid "" +"Your site does not have any account which uses the default \"admin\" " +"username. " +msgstr "" +"Votre site n’a pas de compte utilisant la valeur par défaut « Admin » comme " +"nom d’utilisateur." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:141 +msgid "This is good security practice." +msgstr "Ceci est une bonne pratique de sécurité." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:153 +msgid "Display Name Security" +msgstr "Sécurité de nom d’affichage" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:156 +msgid "" +"When you submit a post or answer a comment, WordPress will usually display " +"your \"nickname\"." +msgstr "" +"Lorsque vous envoyez un message ou répondez à un commentaire WordPress, il " +"sera affiché en tant que « pseudo »." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:157 +msgid "" +"By default the nickname is set to the login (or user) name of your account." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:158 +msgid "" +"From a security perspective, leaving your nickname the same as your user " +"name is bad practice because it gives a hacker at least half of your " +"account's login credentials." +msgstr "" +"Du point de vue de la sécurité, donner votre vrai nom comme nom " +"d'utilisateur est une très mauvaise pratique, car il donne à un pirate la " +"moitié au moins des identifiants de connexion à votre compte." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:159 +msgid "" +"Therefore to further tighten your site's security you are advised to change " +"your nickname and Display name to be " +"different from your Username." +msgstr "" +"Par conséquent, pour resserrer davantage la sécurité de votre site, il est " +"conseillé de changer votre pseudo et nom d’affichage pour " +"qu’il soit différent de votre nom d’utilisateur." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:165 +msgid "Modify Accounts With Identical Login Name & Display Name" +msgstr "" +"Modifier les comptes avec nom de connexion et nom d’affichage identiques" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:174 +msgid "" +"Your site currently has the following accounts which have an identical login " +"name and display name." +msgstr "" +"Votre site a actuellement les comptes suivants avec un nom d’utilisateur et " +"le nom d’affichage identiques." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:175 +msgid "Click on the link to edit the settings of that particular user account" +msgstr "Cliquez le lien « modifier les paramètres de ce compte utilisateur »" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:190 +msgid "No action required." +msgstr "Aucune action n’est requise." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:191 +msgid "" +"Your site does not have a user account where the display name is identical " +"to the username." +msgstr "" +"Votre site ne contient pas de compte utilisateur dont le nom d’affichage et " +"d’utilisateur sont identiques." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:202 +msgid "Password Tool" +msgstr "Outil Mot de passe" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:205 +msgid "" +"Poor password selection is one of the most common weak points of many sites " +"and is usually the first thing a hacker will try to exploit when attempting " +"to break into your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:206 +msgid "" +"Many people fall into the trap of using a simple word or series of numbers " +"as their password. Such a predictable and simple password would take a " +"competent hacker merely minutes to guess your password by using a simple " +"script which cycles through the easy and most common combinations." +msgstr "" +"Beaucoup de gens tombent dans le piège de l’utilisation d’un simple mot ou " +"série de numéros comme mot de passe. Un tel mot de passe prévisible et " +"simple ne prendra que quelques minutes à un hacker compétent pour deviner " +"votre mot de passe en utilisant un script simple qui balaye des combinaisons " +"faciles et les plus courantes." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:207 +msgid "" +"The longer and more complex your password is the harder it is for hackers to " +"\"crack\" because more complex passwords require much greater computing " +"power and time." +msgstr "" +"Plus long et complexe sera votre mot de passe, plus il sera difficile aux " +"pirates informatiques de le « cracker » parce que les mots de passe " +"complexes nécessitent une beaucoup plus grande puissance de calcul et de " +"temps, ce qu’ils rechignent à mettre en œuvre [NdT]." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:208 +msgid "" +"This section contains a useful password strength tool which you can use to " +"check whether your password is sufficiently strong enough." +msgstr "" +"Cette section contient un analyseur de mots de passe que vous pouvez " +"utiliser pour vérifier si le mot choisi est suffisamment robuste." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:213 +msgid "Password Strength Tool" +msgstr "Outil de robustesse de mot de passe" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:218 +msgid "Start typing a password." +msgstr "Commencez à saisir un mot de passe." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:221 +msgid "It would take a desktop PC approximately" +msgstr "Il faudrait à un PC de bureau environ" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:222 +msgid "1 sec" +msgstr "1 Seconde" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:222 +msgid "to crack your password!" +msgstr "pour casser ce mot de passe !" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:227 +msgid "Password Strength" +msgstr "Complexité du mot de passe" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:243 +msgid "Nonce check failed on admin username change operation!" +msgstr "" +"Échec de la vérification pour l’opération de changement de nom d’utilisateur " +"Admin !" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:250 +msgid "Username " +msgstr "Nom d’utilisateur" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:250 +msgid " already exists. Please enter another value. " +msgstr "existe déjà sur le site. Veuillez entrer une autre valeur." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:266 +msgid "The database update operation of the user account failed!" +msgstr "La mise à jour en BdD du compte utilisateur a échoué !" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:293 +msgid "You entered an invalid username. Please enter another value. " +msgstr "" +"Vous avez saisi un nom d’utilisateur invalide. Veuillez choisir une autre " +"valeur." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:297 +msgid "Please enter a value for your username. " +msgstr "Veuillez entrer une valeur comme nom d’utilisateur." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:304 +msgid "Username Successfully Changed!" +msgstr "Nom d’utilisateur changé avec succès !" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:324 +msgid "Account Login Name" +msgstr "Nom de connexion du compte" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:26 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:298 +msgid "Failed Login Records" +msgstr "Registre des connexions échouées" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:27 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:51 +msgid "Force Logout" +msgstr "Forcer la déconnexion" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:28 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:432 +msgid "Account Activity Logs" +msgstr "Journaux d’activité du compte" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:96 +msgid "" +"You entered a non numeric value for the max login attempts field. It has " +"been set to the default value." +msgstr "" +"Vous avez entré une valeur incorrecte pour le nombre maximal de tentative " +"sue connexion. Elle a été fixée à la valeur par défaut." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:103 +msgid "" +"You entered a non numeric value for the login retry time period field. It " +"has been set to the default value." +msgstr "" +"Vous avez entré une valeur incorrecte pour le champ période de temps pour " +"retenter la connexion. Elle a été fixée à la valeur par défaut." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:159 +msgid "Login Lockdown Configuration" +msgstr "Configuration du verrouillage de connexion" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:163 +msgid "One of the ways hackers try to compromise sites is via a " +msgstr "" +"L’un des moyens par lesquels les pirates cherchent à pénétrer les sites est" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:163 +msgid "Brute Force Login Attack" +msgstr "l’attaque « Brute Force » de connexion" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:164 +msgid "" +"This is where attackers use repeated login attempts until they guess the " +"password." +msgstr "" +"Où les attaquants utilisent les tentatives de connexion répétées jusqu’à ce " +"que le duo nom utilisateur + mot de passe fonctionne." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:165 +msgid "" +"Apart from choosing strong passwords, monitoring and blocking IP addresses " +"which are involved in repeated login failures in a short period of time is a " +"very effective way to stop these types of attacks." +msgstr "" +"Outre le choix de mots de passe forts, la surveillance et le blocage " +"d’adresses IP qui sont impliquées dans les échecs répétés de connexion en un " +"court laps de temps est un moyen très efficace pour arrêter ce type " +"d’attaques." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:166 +#, php-format +msgid "" +"You may also want to checkout our %s feature for another secure way to " +"protect against these types of attacks." +msgstr "" +"Vous pouvez également tester notre fonctionnalité de %s comme autre moyen " +"sûr de protection contre ce type d’attaques." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:171 +msgid "Login Lockdown Options" +msgstr "Options de verrouillage automatique de connexion" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:183 +msgid "Enable Login Lockdown Feature" +msgstr "Activer la fonction de verrouillage automatique de connexion" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:186 +msgid "" +"Check this if you want to enable the login lockdown feature and apply the " +"settings below" +msgstr "" +"Cochez si vous souhaitez activer la fonction de verrouillage automatique de " +"connexion et appliquer les paramètres ci-dessous" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:190 +msgid "Allow Unlock Requests" +msgstr "Autoriser les requêtes de déverrouillage" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:193 +msgid "" +"Check this if you want to allow users to generate an automated unlock " +"request link which will unlock their account" +msgstr "" +"Cochez si vous voulez autoriser les utilisateurs à générer une demande de " +"lien de déverrouillage automatique les autorisant à se connecter de nouveau" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:197 +msgid "Max Login Attempts" +msgstr "Nombre maximal de tentatives de connexion échouées" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:199 +msgid "" +"Set the value for the maximum login retries before IP address is locked out" +msgstr "" +"Réglez le nombre maxi de tentatives de connexion avant que l’adresse IP ne " +"soit verrouillée" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:203 +msgid "Login Retry Time Period (min)" +msgstr "Durée (min) entre les tentatives de connexion" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:205 +msgid "" +"If the maximum number of failed login attempts for a particular IP address " +"occur within this time period the plugin will lock out that address" +msgstr "" +"Si le nombre maximum de tentatives de connexion infructueuses pour une " +"adresse IP particulière se produit pendant cette période de temps, " +"l’extension la verrouille automatiquement" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:209 +msgid "Time Length of Lockout (min)" +msgstr "Durée de verrouillage (min)" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:211 +msgid "" +"Set the length of time for which a particular IP address will be prevented " +"from logging in" +msgstr "" +"Régler la durée pendant laquelle une adresse IP particulière ne pourra " +"tenter de se reconnecter" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:215 +msgid "Display Generic Error Message" +msgstr "Afficher un message d’erreur générique" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:218 +msgid "" +"Check this if you want to show a generic error message when a login attempt " +"fails" +msgstr "" +"Cochez pour afficher un message d’erreur générique lorsqu’une tentative de " +"connexion a échoué" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:222 +msgid "Instantly Lockout Invalid Usernames" +msgstr "Verrouillage instantané en cas d’ID utilisateur invalide" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:225 +msgid "" +"Check this if you want to instantly lockout login attempts with usernames " +"which do not exist on your system" +msgstr "" +"Cochez si vous voulez verrouiller instantanément une tentative de connexion " +"avec une ID d’utilisateur inexistante sur votre système" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:230 +msgid "Notify By Email" +msgstr "Notifier par courriel" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:233 +msgid "" +"Check this if you want to receive an email when someone has been locked out " +"due to maximum failed login attempts" +msgstr "" +"Cochez si vous souhaitez recevoir un courriel lorsque quelqu’un a été bloqué " +"suite à un maximum de tentatives de connexion infructueuses" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:243 +msgid "Currently Locked Out IP Address Ranges" +msgstr "Plages d’adresses IP actuellement verrouillées" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:248 +#, php-format +msgid "" +"To see a list of all locked IP addresses and ranges go to the %s tab in the " +"dashboard menu." +msgstr "" +"Pour voir une liste de toutes les adresses et plages d’adresses IP bloquées, " +"aller à l’onglet de %s dans le menu du tableau de bord." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:264 +msgid "Nonce check failed for delete all failed login records operation!" +msgstr "" +"Le contrôle ponctuel a échoué à supprimer toutes les opérations " +"d’enregistrement de connexion !" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:273 +msgid "User Login Feature - Delete all failed login records operation failed!" +msgstr "" +"Fonctions de connexion utilisateur - L’opération de purge des enregistrement " +"de tentatives de connexions infructueuses a échoué !" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:277 +msgid "All records from the Failed Logins table were deleted successfully!" +msgstr "" +"Tous les enregistrements de la table des tentatives de connexions " +"infructueuses ont été supprimés avec succès !" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:292 +msgid "This tab displays the failed login attempts for your site." +msgstr "" +"Cet onglet affiche les tentatives de connexion infructueuses sur votre site." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:293 +msgid "" +"The information below can be handy if you need to do security investigations " +"because it will show you the IP range, username and ID (if applicable) and " +"the time/date of the failed login attempt." +msgstr "" +"L’information ci-dessous peut être utile si vous avez besoin de faire des " +"enquêtes de sécurité, car elle va vous montrer la plage d’IP, nom " +"d’utilisateur et ID (le cas échéant) et la durée / date de la tentative de " +"connexion infructueuse." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:314 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:323 +msgid "Delete All Failed Login Records" +msgstr "Purger les enregistrements de connexions infructueuses" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:320 +msgid "" +"Click this button if you wish to delete all failed login records in one go." +msgstr "" +"Cliquez ce bouton si vous souhaitez purger les enregistrements de connexions " +"infructueuses en une seule fois." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:348 +msgid "" +"You entered a non numeric value for the logout time period field. It has " +"been set to the default value." +msgstr "" +"Valeur non conforme pour la période de neutralisation de relance de " +"connexion. Elle été fixée à sa valeur par défaut." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:376 +msgid "" +"Setting an expiry period for your WP administration session is a simple way " +"to protect against unauthorized access to your site from your computer." +msgstr "" +"Fixer un délai d’expiration de votre session d’administration WP est un " +"moyen simple de se protéger contre l’accès non autorisé à votre site à " +"partir de votre ordinateur." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:377 +msgid "" +"This feature allows you to specify a time period in minutes after which the " +"admin session will expire and the user will be forced to log back in." +msgstr "" +"Cette fonction permet de spécifier une période (en min) au bout de laquelle " +"la session Admin expire, l’utilisateur étant forcé de se reconnecter." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:382 +msgid "Force User Logout Options" +msgstr "Option forçage de déconnexion de l’utilisateur" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:394 +msgid "Enable Force WP User Logout" +msgstr "Activer le forçage de déconnexion de l’utilisateur WP" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:397 +msgid "" +"Check this if you want to force a wp user to be logged out after a " +"configured amount of time" +msgstr "" +"Cochez si vous voulez forcer un utilisateur WP à être déconnecté après un " +"laps temps configuré" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:401 +msgid "Logout the WP User After XX Minutes" +msgstr "Déconnecter l’utilisateur WP après XX Minutes" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:403 +msgid "" +"(Minutes) The user will be forced to log back in after this time period has " +"elapased." +msgstr "" +"(Minutes) L’utilisateur sera forcé de se reconnecter après que ce laps de " +"temps soit passé." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:426 +msgid "" +"This tab displays the login activity for WordPress admin accounts registered " +"with your site." +msgstr "" +"Cet onglet affiche l’activité de connexion pour les comptes d’administration " +"de WordPress enregistrés sur votre site." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:427 +msgid "" +"The information below can be handy if you need to do security investigations " +"because it will show you the last 50 recent login events by username, IP " +"address and time/date." +msgstr "" +"L'information ci-dessous peut être utile si vous avez besoin de faire des " +"enquêtes de sécurité, car elle va vous montrer les 50 derniers évènements de " +"connexion par nom d'utilisateur, adresse IP et heure / date." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:464 +msgid "Nonce check failed for users logged in list!" +msgstr "Le contrôle ponctuel de la liste des utilisateurs connectés a échoué !" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:477 +msgid "Refresh Logged In User Data" +msgstr "Recharger les données d'utilisateur connecté" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:481 +msgid "Refresh Data" +msgstr "Actualiser les données" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:487 +msgid "This tab displays all users who are currently logged into your site." +msgstr "" +"Cet onglet affiche tous les utilisateurs actuellement connectés à votre site." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:488 +msgid "" +"If you suspect there is a user or users who are logged in which should not " +"be, you can block them by inspecting the IP addresses from the data below " +"and adding them to your blacklist." +msgstr "" +"Si vous suspectez qu'un(des) utilisateur(s) connecté(s) ne le devrai(en)t " +"pas, vous pouvez le(s) bloquer en inspectant l'(es )adresse(s) IP à partir " +"des données ci-dessous et de l'(es )ajouter à votre liste noire." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:493 +msgid "Currently Logged In Users" +msgstr "Utilisateurs actuellement connectés" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:558 +msgid "The selected records were deleted successfully!" +msgstr "Enregistrements sélectionnés supprimés avec succès !" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:567 +msgid "The selected record was deleted successfully!" +msgstr "Enregistrement supprimé avec succès !" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:23 +msgid "Manual Approval" +msgstr "Approbation manuelle" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:24 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:57 +msgid "Registration Captcha" +msgstr "Captcha d’inscription" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:112 +msgid "User Registration Settings" +msgstr "Paramètres d’inscription utilisateur" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:116 +msgid "Manually Approve New Registrations" +msgstr "Approuver manuellement les nouvelles inscriptions" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:120 +msgid "" +"If your site allows people to create their own accounts via the WordPress " +"registration form, then you can minimize SPAM or bogus registrations by " +"manually approving each registration." +msgstr "" +"Si votre site permet au visiteur de créer son propre compte via le " +"formulaire d’inscription WordPress, vous pouvez réduire le SPAM ou les " +"fausses inscriptions en approuvant manuellement chaque inscription." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:121 +msgid "" +"This feature will automatically set a newly registered account to \"pending" +"\" until the administrator activates it. Therefore undesirable registrants " +"will be unable to log in without your express approval." +msgstr "" +"Cette fonction permet de programmer automatiquement un compte nouvellement " +"enregistré « en attente » jusqu’à ce qu’un administrateur l’active. Par " +"conséquent les inscrits indésirables seront incapables de se connecter sans " +"une autorisation expresse." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:122 +msgid "" +"You can view all accounts which have been newly registered via the handy " +"table below and you can also perform bulk activation/deactivation/deletion " +"tasks on each account." +msgstr "" +"Vous pouvez voir tous les comptes nouvellement enregistrés via la table ci-" +"dessous et vous pouvez également effectuer des tâches d’activation / " +"désactivation / suppression en masse de chaque compte." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:138 +msgid "Enable manual approval of new registrations" +msgstr "Activer l’approbation manuelle des nouvelles inscriptions" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:141 +msgid "" +"Check this if you want to automatically disable all newly registered " +"accounts so that you can approve them manually." +msgstr "" +"Cochez si vous souhaitez désactiver automatiquement tous les comptes " +"nouvellement créés, de sorte que vous puissiez les approuver manuellement." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:150 +msgid "Approve Registered Users" +msgstr "Approbation des utilisateurs enregistrés" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:195 +msgid "" +"This feature allows you to add a captcha form on the WordPress registration " +"page." +msgstr "" +"Cette fonctionnalité permet d’ajouter un formulaire Captcha sur la page de " +"connexion de WordPress." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:196 +msgid "" +"Users who attempt to register will also need to enter the answer to a simple " +"mathematical question - if they enter the wrong answer, the plugin will not " +"allow them to register." +msgstr "" +"Les utilisateurs tentant de s'enregistrer devront également répondre à une " +"question arithmétique simple, si elles entrent une mauvaise réponse, " +"l'extension ne leur permettra pas d'enregistrer leur demande." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:197 +msgid "" +"Therefore, adding a captcha form on the registration page is another " +"effective yet simple SPAM registration prevention technique." +msgstr "" +"Donc, l'ajout d'un formulaire de Captcha sur la page d'inscription est une " +"autre technique efficace et simple de prévention du SPAM d'inscription." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:202 +msgid "Registration Page Captcha Settings" +msgstr "Paramètres du Captcha de page d'inscription" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:209 +msgid "" +"The core default behaviour for WordPress Multi Site regarding user " +"registration is that all users are registered via the main site." +msgstr "" +"Le comportement de base par défaut pour l’enregistrement des utilisateur " +"sous WordPress Multi Site est que tous soient enregistrés via le site " +"principal." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:210 +msgid "" +"Therefore, if you would like to add a captcha form to the registration page " +"for a Multi Site, please go to \"Registration Captcha\" settings on the main " +"site." +msgstr "" +"Par conséquent, si vous souhaitez ajouter un formulaire de Captcha à la page " +"d’inscription pour un multi site, veuillez aller dans les paramètres « " +"Captcha d’enregistrement » sur le site principal." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:225 +msgid "Enable Captcha On Registration Page" +msgstr "Activer le Captcha sur la page d’inscription" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:228 +msgid "" +"Check this if you want to insert a captcha form on the WordPress user " +"registration page (if you allow user registration)." +msgstr "" +"Cochez cette case pour insérer un Captcha sur la page d’inscription de " +"l’utilisateur WordPress (si vous permettez l’enregistrement des " +"utilisateurs)." + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:22 +msgid "WhoIS Lookup" +msgstr "Qui est verrouillé" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:74 +msgid "WHOIS Lookup Information" +msgstr "Information WHOIS Lookup" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:77 +msgid "" +"This feature allows you to look up more detailed information about an IP " +"address or domain name by querying the WHOIS API." +msgstr "" +"Cette fonction permet de rechercher des informations plus détaillées sur une " +"adresse IP ou un nom de domaine en interrogeant l’API WHOIS." + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:83 +msgid "Perform a WHOIS Lookup for an IP or Domain Name" +msgstr "Effectuer une recherche WHOIS pour une IP ou un nom de domaine" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:89 +msgid "Enter IP Address or Domain Name" +msgstr "Saisissez l'adresse IP ou le nom de domaine" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:91 +msgid "" +"Enter an IP address or domain name. Example: 111.11.12.13 OR some-domain-" +"name.com" +msgstr "" +"Entrez une adresse IP ou un nom de domaine (Exemple : 111.11.12.13 ou some-" +"domain-name.com)" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:95 +msgid "Perform IP or Domain Lookup" +msgstr "Effectuer la recherche IP ou Domaine" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:115 +msgid "WHOIS lookup successfully completed. Please see the results below:" +msgstr "Recherche WHOIS terminée avec succès. Voir les résultats ci-dessous :" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:127 +msgid "" +"You have entered an incorrectly formatted IP address or domain name. Please " +"try again." +msgstr "" +"L’adresse IP ou le nom de domaine a un format incorrect. Veuillez réessayer." + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:178 +msgid "No items found." +msgstr "Aucun élément trouvé." + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:281 +msgid "Bulk Actions" +msgstr "Actions de masse" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:291 +msgid "Apply" +msgstr "Appliquer" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:365 +msgid "Show all dates" +msgstr "Montrer toutes les dates" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:378 +#, php-format +msgid "%1$s %2$d" +msgstr "%1$s %2$d" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:394 +msgid "List View" +msgstr "Voir la liste" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:395 +msgid "Excerpt View" +msgstr "Vue de l’extrait" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:421 +#, php-format +msgid "%s pending" +msgstr "%s en attente" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:653 +msgid "Select All" +msgstr "Sésectionner tout" + +#: all-in-one-wp-security/classes/wp-security-backup.php:188 +msgid "All In One WP Security - Site Database Backup" +msgstr "All In One WP sécurité - BdD de sauvegarde du site" + +#: all-in-one-wp-security/classes/wp-security-backup.php:190 +msgid "Attached is your latest DB backup file for site URL" +msgstr "Votre dernier fichier de sauvegarde BdD pour l’URL du site est attaché" + +#: all-in-one-wp-security/classes/wp-security-backup.php:190 +msgid " generated on" +msgstr " généré le" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:17 +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:254 +msgid "Please enter an answer in digits:" +msgstr "Saisissez votre réponse en chiffres" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:96 +msgid "one" +msgstr "un" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:97 +msgid "two" +msgstr "deux" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:98 +msgid "three" +msgstr "trois" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:99 +msgid "four" +msgstr "quatre" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:100 +msgid "five" +msgstr "cinq" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:101 +msgid "six" +msgstr "six" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:102 +msgid "seven" +msgstr "sept" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:103 +msgid "eight" +msgstr "huit" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:104 +msgid "nine" +msgstr "neuf" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:105 +msgid "ten" +msgstr "dix" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:106 +msgid "eleven" +msgstr "onze" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:107 +msgid "twelve" +msgstr "douze" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:108 +msgid "thirteen" +msgstr "treize" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:109 +msgid "fourteen" +msgstr "quatorze" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:110 +msgid "fifteen" +msgstr "quinze" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:111 +msgid "sixteen" +msgstr "seize" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:112 +msgid "seventeen" +msgstr "dix-sept" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:113 +msgid "eighteen" +msgstr "dix-huit" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:114 +msgid "nineteen" +msgstr "dix-neuf" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:115 +msgid "twenty" +msgstr "vingt" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:65 +msgid "All In One WP Security - File change detected!" +msgstr "All In One WP Security - Changement détecté dans les fichiers !" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:67 +msgid "A file change was detected on your system for site URL" +msgstr "" +"Un changement dans les fichiers a été détecté sur votre système à l’URL" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:67 +msgid ". Scan was generated on" +msgstr ". Un balayage a été généré sur" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:68 +msgid "Login to your site to view the scan details." +msgstr "Connectez-vous à votre site pour voir les détails du balayage." + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:269 +msgid "" +"Starting DB scan.....please wait while the plugin scans your database......." +msgstr "" +"Début du balayage de la BdD……… Patientez pendant que l’extension examine " +"votre base de données………" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:273 +msgid "Scanning options table........." +msgstr "Balayage de la table des options……" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:342 +#, php-format +msgid "%s and option_id: %s" +msgstr "%s et option_id : %s" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:345 +#, php-format +msgid "" +"Deletion of known pharma hack entry for option_name %s failed. Please delete " +"this entry manually!" +msgstr "" +"La suppression de l’entrée pharma hack connue pour option_name %s a échoué. " +"Veuillez supprimer cette entrée manuellement !" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:347 +#, php-format +msgid "" +"The options table entry with known pharma hack for option_id %s with " +"option_name %s was successfully deleted" +msgstr "" +"Les entrée de table options avec pharma, connue pour pirater l'option_id %s " +"avec l'option_name %s a été supprimée avec succès" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:361 +#, php-format +msgid "Possible suspicious entry found (for option_id: %s) - %s " +msgstr "Entrée potentiellement suspecte trouvée (pour option_id : %s) - %s" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:370 +msgid "No suspicious entries found in options table" +msgstr "Pas d'entrées suspectes trouvées dans la table d'options" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:374 +msgid "Scanning posts table........." +msgstr "Analyse de la table des options……" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:414 +#, php-format +msgid "" +"Possible suspicious entry found (for Post ID: %s) in the following column - " +"%s " +msgstr "" +"Entrée potentiellement suspecte (pour Articles ID : %s) dans la colonne " +"suivante - %s" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:423 +msgid "No suspicious entries found in posts table" +msgstr "Pas d’entrées suspectes découvertes dans la table des Articles" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:427 +msgid "Scanning links table........." +msgstr "Balayage de la table des liens………" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:466 +#: all-in-one-wp-security/classes/wp-security-file-scan.php:517 +#: all-in-one-wp-security/classes/wp-security-file-scan.php:545 +#: all-in-one-wp-security/classes/wp-security-file-scan.php:573 +#: all-in-one-wp-security/classes/wp-security-file-scan.php:622 +#, php-format +msgid "Possible suspicious entry - %s " +msgstr "Entrée potentiellement suspecte - %s" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:475 +msgid "No suspicious entries found in links table" +msgstr "Pas d’entrées suspectes trouvées dans la table des liens" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:479 +msgid "Scanning comments table........." +msgstr "Balayage de la table des commentaires………" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:526 +msgid "No suspicious entries found in comments table" +msgstr "Pas d’entrées suspectes trouvées dans la table des commentaires" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:530 +msgid "Scanning postmeta table........." +msgstr "Balayage de la table des métis d’articles………" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:554 +msgid "No suspicious entries found in postmeta table" +msgstr "Aucune entrée suspecte dans table des métas d'articles" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:558 +msgid "Scanning usermeta table........." +msgstr "Balayage de la table des métas d'utilisateurs………" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:582 +msgid "No suspicious entries found in usermeta table" +msgstr "Aucune entrée suspecte trouvée dans la table des métas d'utilisateurs" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:586 +msgid "Scanning users table........." +msgstr "Balayage de la table des utilisateurs………" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:631 +msgid "No suspicious entries found in users table" +msgstr "Pas d'entrées suspectes trouvées dans la table des utilisateurs" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:638 +msgid "" +"The plugin has detected that there are some potentially suspicious entries " +"in your database." +msgstr "" +"L'extension a détecté des entrées potentiellement suspectes dans votre BdD." + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:639 +msgid "" +"Please verify the results listed below to confirm whether the entries " +"detected are genuinely suspicious or if they are false positives." +msgstr "" +"Vérifiez les résultats énumérés ci-dessous pour confirmer si les entrées " +"détectées sont réellement suspectes ou s'il s'agit de faux positifs." + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:644 +#: all-in-one-wp-security/classes/wp-security-file-scan.php:659 +msgid "Disclaimer:" +msgstr "Avertissement :" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:645 +msgid "" +"Even though this database scan has revealed some suspicious entries, this " +"does not necessarily mean that other parts of your DB or site are also not " +"compromised." +msgstr "" +"Même si cette analyse de BdD a révélé quelques entrées suspectes, cela ne " +"signifie pas pour autant que d'autres parties de votre site ne sont pas " +"également corrompus." + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:646 +#: all-in-one-wp-security/classes/wp-security-file-scan.php:661 +msgid "" +"Please note that database scan performed by this feature is basic and looks " +"for common malicious entries. Since hackers are continually evolving their " +"methods this scan is not meant to be a guaranteed catch-all for malware." +msgstr "" +"Veuillez noter que le balayage de la BdD effectué par cette fonction est " +"basique et recherche des entrées malveillantes connues. Les pirates font " +"évoluer constamment leurs méthodes et cette analyse ne vise pas à une " +"exhaustivité garantissant contre tous les logiciels malveillants existants." + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:647 +#: all-in-one-wp-security/classes/wp-security-file-scan.php:662 +#, php-format +msgid "" +"It is your responsibility to do the due diligence and perform a robust %s on " +"your site if you wish to be more certain that your site is clean." +msgstr "" +"Il est de votre responsabilité de faire preuve d’une diligence raisonnable " +"et d’effectuer de robustes %s sur votre site si vous souhaitez être plus sûr " +"qu’il est sain." + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:654 +msgid "DB Scan was completed successfully. No suspicious entries found." +msgstr "" +"Le balayage BdD a été terminé avec succès. Pas d’entrées suspectes détectées." + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:660 +msgid "" +"Even though the database scan has not revealed any suspicious entries, this " +"does not necessarily mean that your site is actually completely clean or not " +"compromised." +msgstr "" +"Même si l’analyse de la BdD n’a révélé aucune entrée suspecte, cela ne " +"signifie pas nécessairement que votre site est en fait complètement sain et " +"non corrompu." + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:281 +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:358 +#: all-in-one-wp-security/classes/wp-security-user-login.php:69 +#: all-in-one-wp-security/classes/wp-security-user-login.php:72 +#: all-in-one-wp-security/classes/wp-security-user-registration.php:61 +msgid "ERROR: Your answer was incorrect - please try again." +msgstr "" +"ERREUR: La réponse à la question est incorrecte –veuillez " +"réessayer" + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:293 +msgid "Enter something special:" +msgstr "Entrez quelque chose de spécial :" + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:320 +msgid "Please enter an answer in the CAPTCHA field." +msgstr "Veuillez entrer une réponse dans le champ de Captcha" + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:330 +msgid "" +"Error: You entered an incorrect CAPTCHA answer. Please go back and try again." +msgstr "Erreur : réponse CAPTCHA incorrecte. Réessayez." + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:382 +msgid "Your CAPTCHA answer was incorrect - please try again." +msgstr "Réponse Captcha incorrecte - Veuillez réessayer" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:43 +msgid "" +"ERROR: Login failed because your IP address has been " +"blocked. Please contact the administrator." +msgstr "" +"ERREUR : Échec de la connexion, votre adresse IP est " +"bloquée. Merci de contacter l’administrateur du site." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:82 +msgid "ERROR: The username field is empty." +msgstr "ERREUR : Le champ du nom d’utilisateur est vide." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:86 +msgid "ERROR: The password field is empty." +msgstr "ERREUR : Le mot de passe doit être renseigné." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:106 +#: all-in-one-wp-security/classes/wp-security-user-login.php:132 +msgid "ERROR: Invalid login credentials." +msgstr "ERREUR : Identifiants de connexion invalides." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:109 +msgid "ERROR: Invalid username." +msgstr "ERROR: nom d'utilisateur incorrect" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:135 +#, php-format +msgid "" +"ERROR: Incorrect password. Lost your password?" +msgstr "" +"ERREUR : Mot de passe invalide. Mot de passe oublié ?" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:146 +msgid "" +"ACCOUNT PENDING: Your account is currently not active. An " +"administrator needs to activate your account before you can login." +msgstr "" +"Compte en attente : Votre compte n'est pas actif " +"actuellement. Un administrateur doit l'activer avant que vous ne puissiez " +"vous connecter." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:269 +msgid "Site Lockout Notification" +msgstr "Notification de site verrouillé" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:270 +msgid "" +"A lockdown event has occurred due to too many failed login attempts or " +"invalid username:" +msgstr "" +"Un événement de verrouillage a eu lieu en raison d’un nom d’utilisateur " +"invalide ou d’un nombre excessif de tentatives de connexion infructueuses :" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:271 +msgid "Username: " +msgstr "Utilisateur :" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:272 +msgid "IP Address: " +msgstr "Adresse IP :" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:273 +msgid "IP Range: " +msgstr "Plage d’IP :" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:274 +msgid "" +"Log into your site's WordPress administration panel to see the duration of " +"the lockout or to unlock the user." +msgstr "" +"Connectez-vous à l’interface d’administration de votre site WordPress pour " +"voir la durée du verrouillage ou déverrouiller l’utilisateur." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:338 +msgid "Unlock Request Notification" +msgstr "Notification de demande de déblocage" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:339 +msgid "You have requested for the account with email address " +msgstr "Vous avez demandé pour le compte avec adresse courriel" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:340 +msgid "Unlock link: " +msgstr "Lien de déblocage :" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:341 +msgid "" +"After clicking the above link you will be able to login to the WordPress " +"administration panel." +msgstr "" +"Après avoir cliqué le lien ci-dessus, vous serez en mesure de vous connecter " +"au panneau d'administration WordPress." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:507 +#, php-format +msgid "" +"Your session has expired because it has been over %d minutes since your last " +"login." +msgstr "Votre session a expiré (plus de %d minutes depuis votre connexion)." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:508 +#: all-in-one-wp-security/classes/wp-security-user-login.php:512 +msgid "Please log back in to continue." +msgstr "Veuillez vous reconnecter pour continuer." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:511 +msgid "You were logged out because you just changed the \"admin\" username." +msgstr "" +"Vous avez été déconnecté parce que vous venez de modifier le nom " +"d’utilisateur « Admin »." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:537 +msgid "Request Unlock" +msgstr "Recevoir un lien de déblocage." + +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:76 +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:95 +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:110 +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:125 +msgid " is not a valid ip address format." +msgstr "n'est pas un format d'adresse IP valide." + +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:133 +msgid "You cannot ban your own IP address: " +msgstr "vous ne pouvez bannir votre propre adresse IP :" + +#: all-in-one-wp-security/classes/wp-security-utility.php:151 +msgid "" +"This feature can only be configured by the \"superadmin\" on the main site." +msgstr "" +"ne peut être configuré(e) que par le « super Admin » sur le site principal." + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:29 +msgid "Remove WP Generatore Meta Tag" +msgstr "Retirer le générateur de Méta Tag WP" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:38 +msgid "Change Display Name" +msgstr "Changer nom d’affichage" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:45 +msgid "Custom Login Captcha" +msgstr "Captcha de connexion personnalisé" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:47 +msgid "Lost Password Captcha" +msgstr "Mot de passe de Captcha perdu" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:49 +msgid "Login IP Whitelisting" +msgstr "Connexion IP en liste blanche" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:55 +msgid "Registration Approval" +msgstr "Approbation d’inscription" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:71 +msgid "WordPress Files Access" +msgstr "Accès aux fichiers WordPress" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:75 +msgid "IP and User Agent Blacklisting" +msgstr "IP ou ID d’utilisateur en liste noire" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:79 +msgid "Enable Basic Firewall" +msgstr "Activer la protection de base du pare-feu" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:80 +msgid "Enable Pingback Vulnerability Protection" +msgstr "Activer la protection contre les pingback" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:81 +msgid "Enable IP blocking for 404 detection" +msgstr "Activer le verrouillage IP pour les événements 404" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:85 +msgid "Enable Rename Login Page" +msgstr "Activer le renommage de la page de Connexion" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:87 +msgid "Enable Login Honeypot" +msgstr "Activer la connexion Honeypot" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:93 +msgid "Forbid Proxy Comments" +msgstr "Interdire les commentaires de proxy" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:94 +msgid "Deny Bad Queries" +msgstr "Refuser les requêtes douteuses" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:96 +msgid "5G Blacklist" +msgstr "Règles de liste noire 5G du pare-feu" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:99 +msgid "Block Spambots" +msgstr "Bloquer les Spambots" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:101 +msgid "Comment Captcha" +msgstr "Captcha de commentaire" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:103 +msgid "BuddyPress Registration Captcha" +msgstr "Captcha d'inscription BuddyPress" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item.php:28 +msgid "Basic" +msgstr "Information" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item.php:31 +msgid "Intermediate" +msgstr "Intermédiaire" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item.php:34 +msgid "Advanced" +msgstr "Avancée" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:96 +msgid "https://wordpress.org/" +msgstr "https://wordpress.org/" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:97 +#: all-in-one-wp-security/other-includes/wp-security-unlock-request.php:14 +msgid "Powered by WordPress" +msgstr "Animé par WordPress" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:214 +#, php-format +msgid "← Back to %s" +msgstr "← Retour à %s" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:272 +msgid "ERROR: Enter a username or e-mail address." +msgstr "" +" ERREUR : Entrez un nom d’utilisateur ou une adresse " +"courriel." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:276 +msgid "" +"ERROR: There is no user registered with that email address." +msgstr "" +" ERREUR < / strong > : Entrez ERREUR : Il n’y a " +"pas d’utilisateur enregistré avec cette adresse courriel." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:293 +msgid "ERROR: Invalid username or e-mail." +msgstr " ERROR < / strong > : nom d’utilisateur ou courriel invalide." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:330 +msgid "Password reset is not allowed for this user" +msgstr "" +"La réinitialisation du mot de passe n'est pas autorisée pour cet utilisateur" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:355 +msgid "Someone requested that the password be reset for the following account:" +msgstr "" +"Quelqu'un a demandé le renouvellemen du mot de passe pour le compte suivant :" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:357 +#, php-format +msgid "Username: %s" +msgstr "Nom d’utilisateur : %s" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:358 +msgid "If this was a mistake, just ignore this email and nothing will happen." +msgstr "" +"S’il s’agit d’une erreur, ignorez simplement ce courriel " +"et rien ne se produira." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:359 +msgid "To reset your password, visit the following address:" +msgstr "Pour réinitialiser votre mot de passe, visitez l’adresse suivante :" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:369 +#, php-format +msgid "[%s] Password Reset" +msgstr "[%s] Réinitialiser le mot de passe" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:390 +msgid "The e-mail could not be sent." +msgstr "Le courriel n’a pas été envoyé." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:390 +msgid "Possible reason: your host may have disabled the mail() function." +msgstr "Raison possible : la fonction mail() a été désactivée par l'hébergeur" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:495 +msgid "Sorry, that key does not appear to be valid." +msgstr "Désolé, cette clé ne semble pas valide" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:497 +msgid "Sorry, that key has expired. Please try again." +msgstr "Désolé, cette clé a expiré. Veuillez ré-essayer." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:517 +msgid "Lost Password" +msgstr "Mot de passe oublié" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:517 +msgid "" +"Please enter your username or email address. You will receive a link to " +"create a new password via email." +msgstr "" +"Entrez votre nom d’utilisateur ou votre adresse courriel. Vous recevrez un " +"lien en retour qui vous permettra de créer un nouveau mot de passe." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:525 +msgid "Username or E-mail:" +msgstr "Nom d'utilisateur ou Courriel" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:540 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:589 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:631 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:713 +msgid "Log in" +msgstr "Entrez le nom du fichier journal système" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:543 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:634 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:892 +msgid "Register" +msgstr "S’inscrire" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:575 +msgid "The passwords do not match." +msgstr "Mot de passe et contrôle ne correspondent pas." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:589 +msgid "Password Reset" +msgstr "Reinitialiser le mot de passe" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:589 +msgid "Your password has been reset." +msgstr "Votre mot de passe a été réinitialisé." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:597 +msgid "Reset Password" +msgstr "Réinitialiser le Mot de Passe" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:597 +msgid "Enter your new password below." +msgstr "Entrez votre nouveau mot de passe ci-dessous." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:604 +msgid "New password" +msgstr "Nouveau mot de passe" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:608 +msgid "Confirm new password" +msgstr "Confirmer le nouveau mot de passe" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:612 +msgid "Strength indicator" +msgstr "Indicateur de robustesse" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:613 +msgid "" +"Hint: The password should be at least seven characters long. To make it " +"stronger, use upper and lower case letters, numbers, and symbols like ! \" ? " +"$ % ^ & )." +msgstr "" +"Astuce : Le mot de passe devrait contenir au moins 12 caractères. Pour " +"le rendre plus fort, utilisez des majuscules et des minuscules, des nombres " +"et des symboles tels que ! «  ? $ % ^ & )." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:686 +msgid "Registration Form" +msgstr "Formulaire d’inscription" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:686 +msgid "Register For This Site" +msgstr "S’inscrire à ce site" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:691 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:858 +msgid "Username" +msgstr "Nom d’utilisateur" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:695 +msgid "E-mail" +msgstr "Courriel" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:706 +msgid "A password will be e-mailed to you." +msgstr "Un mot de passe vous a été envoyé par courriel." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:714 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:897 +msgid "Lost your password?" +msgstr "Mot de passe perdu ?" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:760 +#, php-format +msgid "" +"ERROR: Cookies are blocked due to unexpected output. For " +"help, please see this documentation or try the support forums." +msgstr "" +"ERREUR: Une erreur inattendue a bloqué les cookies. Pour " +"obtenir de l'aide veuillez consulter cette documentation ou les forums de soutien." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:761 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:765 +msgid "http://codex.wordpress.org/Cookies" +msgstr "http://codex.wordpress.org/Cookies" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:761 +msgid "https://wordpress.org/support/" +msgstr "https://wordpress.org/support/" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:764 +#, php-format +msgid "" +"ERROR: Cookies are blocked or not supported by your " +"browser. You must enable cookies to use WordPress." +msgstr "" +"ERREUR: Soit les cookies sont bloqués soit ils ne sont pas " +"pris en charge par votre navigateur. Veuillez activer les " +"cookies pour utiliser WordPress." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:783 +msgid "You have logged in successfully." +msgstr "Vous êtes connecté(e)." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:817 +msgid "" +"Session expired. Please log in again. You will not move away from this page." +msgstr "" +"La session a expiré. Veuillez vous reconnecter. Vous reviendrez sur la même " +"page." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:821 +msgid "You are now logged out." +msgstr "Vous êtes maintenant déconnecté." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:823 +msgid "User registration is currently not allowed." +msgstr "" +"L’enregistrement d’un nouvel utilisateur n’est pas autorisé actuellement." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:825 +msgid "Check your e-mail for the confirmation link." +msgstr "Vérifiez votre email pour le lien de confirmation." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:827 +msgid "Check your e-mail for your new password." +msgstr "" +"Vérifiez votre boîte courriel pour connaître votre nouveau mot de passe." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:829 +msgid "Registration complete. Please check your e-mail." +msgstr "Inscription complète. Merci de consulter vos emails." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:831 +msgid "" +"You have successfully updated WordPress! Please log back in " +"to experience the awesomeness." +msgstr "" +"Vous avez mis à jour WordPress! S'il vous plaît vous " +"reconnecter pour découvrir le merveilleux." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:848 +msgid "Log In" +msgstr "Connexion" + +#: all-in-one-wp-security/other-includes/wp-security-unlock-request.php:13 +msgid "http://wordpress.org/" +msgstr "http://wordpress.org/" + +#: all-in-one-wp-security/other-includes/wp-security-unlock-request.php:48 +msgid "Please enter a valid email address" +msgstr "Veuillez fournir une adresse courriel valide" + +#: all-in-one-wp-security/other-includes/wp-security-unlock-request.php:59 +msgid "User account not found!" +msgstr "Compte utilisateur introuvable." + +#: all-in-one-wp-security/other-includes/wp-security-unlock-request.php:70 +msgid "Error: No locked entry was found in the DB with your IP address range!" +msgstr "" +"Erreur : Aucune entrée verrouillée n’a été trouvé dans la BdD avec votre " +"plage d’IP !" + +#: all-in-one-wp-security/other-includes/wp-security-unlock-request.php:98 +msgid "Email Address" +msgstr "Email" diff --git a/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-hu_HU.mo b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-hu_HU.mo new file mode 100644 index 0000000..4bc6368 Binary files /dev/null and b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-hu_HU.mo differ diff --git a/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-hu_HU.po b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-hu_HU.po new file mode 100644 index 0000000..3a66e60 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-hu_HU.po @@ -0,0 +1,3544 @@ +msgid "" +msgstr "" +"Project-Id-Version: AIOWPS\n" +"POT-Creation-Date: 2013-12-03 12:53+1000\n" +"PO-Revision-Date: 2014-04-17 20:34+0100\n" +"Last-Translator: I♥WP \n" +"Language-Team: \n" +"Language: hu_HU\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.6.4\n" +"X-Poedit-KeywordsList: __;_e\n" +"X-Poedit-Basepath: .\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SearchPath-0: .\n" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:156 +msgid "WP Security" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:157 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:22 +msgid "Dashboard" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:158 +msgid "Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:159 +msgid "User Accounts" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:160 +msgid "User Login" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:161 +msgid "User Registration" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:162 +msgid "Database Security" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:166 +msgid "Filesystem Security" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:168 +msgid "WHOIS Lookup" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:172 +msgid "Blacklist Manager" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:177 +msgid "Firewall" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:179 +msgid "SPAM Prevention" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:183 +msgid "Scanner" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:185 +msgid "Maintenance" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-menu.php:43 +msgid "Settings successfully updated." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-menu.php:50 +msgid "The selected record(s) deleted successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:22 +msgid "Ban Users" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:80 +msgid "Nonce check failed for save blacklist settings!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:132 +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:147 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:400 +msgid "" +"The plugin was unable to write to the .htaccess file. Please edit file " +"manually." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:139 +msgid "Ban IPs or User Agents" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:142 +msgid "" +"The All In One WP Security Blacklist feature gives you the option of banning " +"certain host IP addresses or ranges and also user agents." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:143 +msgid "" +"This feature will deny total site access for users which have IP addresses " +"or user agents matching those which you have configured in the settings " +"below." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:144 +msgid "" +"The plugin achieves this by making appropriate modifications to your ." +"htaccess file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:145 +msgid "" +"By blocking people via the .htaccess file your are using the most secure " +"first line of defence which denies all access to blacklisted visitors as " +"soon as they hit your hosting server." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:151 +msgid "IP Hosts and User Agent Blacklist Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:162 +msgid "Enable IP or User Agent Blacklisting" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:165 +msgid "" +"Check this if you want to enable the banning (or blacklisting) of selected " +"IP addresses and/or user agents specified in the settings below" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:169 +msgid "Enter IP Addresses:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:173 +msgid "Enter one or more IP addresses or IP ranges." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:174 +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:194 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:271 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:288 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:147 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:177 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:308 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:338 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:369 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:397 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:426 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:514 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:669 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:703 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:726 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:747 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:174 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:259 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:456 +msgid "More Info" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:177 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:459 +msgid "Each IP address must be on a new line." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:178 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:460 +msgid "" +"To specify an IP range use a wildcard \"*\" character. Acceptable ways to " +"use wildcards is shown in the examples below:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:179 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:461 +msgid "Example 1: 195.47.89.*" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:180 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:462 +msgid "Example 2: 195.47.*.*" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:181 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:463 +msgid "Example 3: 195.*.*.*" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:188 +msgid "Enter User Agents:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:193 +msgid "Enter one or more user agent strings." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:197 +msgid "Each user agent string must be on a new line." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:198 +msgid "Example 1 - A single user agent string to block:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:200 +msgid "Example 2 - A list of more than 1 user agent strings to block" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:208 +#: all-in-one-wp-security/admin/wp-security-database-menu.php:347 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:309 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:231 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:497 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:189 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:232 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:336 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:470 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:628 +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:146 +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:221 +msgid "Save Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:23 +msgid "System Info" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:73 +msgid "For information, updates and documentation, please visit the" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:73 +msgid "AIO WP Security & Firewall Plugin" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:73 +msgid "Page" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:74 +msgid "Follow us" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:74 +msgid "" +"Twitter, Google+ or via Email to stay upto date about the new security " +"features of this plugin." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:88 +msgid "Security Strength Meter" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:117 +msgid "Total Achievable Points: " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:119 +msgid "Current Score of Your Site: " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:129 +msgid "Security Points Breakdown" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:170 +msgid "Critical Feature Status" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:174 +msgid "" +"Below is the current status of the critical features that you should " +"activate on your site to achieve a minimum level of recommended security" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:178 +msgid "Admin Username" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:193 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:27 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:39 +msgid "Login Lockdown" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:208 +msgid "File Permission" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:223 +msgid "Basic Firewall" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:241 +msgid "Maintenance Mode Status" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:245 +msgid "" +"Maintenance mode is currently enabled. Remember to turn it off when you are " +"done" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:248 +msgid "Maintenance mode is currently off." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:252 +msgid "Maintenance Mode" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:291 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:33 +msgid "Logged In Users" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:301 +msgid "Number of users currently logged in site-wide is:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:302 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:324 +#, php-format +msgid "Go to the %s menu to see more details" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:307 +msgid "There are no other site-wide users currently logged in." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:323 +msgid "Number of users currently logged into your site is:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:329 +msgid "There are no other users currently logged in." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:340 +msgid "Spread the Word" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:343 +msgid "" +"We are working to make your WordPress site more secure. Please support us, " +"here is how:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:367 +msgid "Site Info" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:369 +msgid "Plugin Version" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:370 +msgid "WP Version" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:372 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:374 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:395 +msgid "Version" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:373 +msgid "Table Prefix" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:375 +msgid "Session Save Path" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:377 +msgid "Server Name" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:378 +msgid "Cookie Domain" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:379 +msgid "Library Present" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:380 +msgid "Debug File Write Permissions" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:384 +msgid "Active Plugins" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:394 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:130 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:149 +msgid "Name" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:396 +msgid "Plugin URL" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:23 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:57 +msgid "DB Prefix" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:24 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:59 +msgid "DB Backup" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:84 +msgid "Nonce check failed for DB prefix change operation!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:92 +msgid "" +"The plugin has detected that it cannot write to the wp-config.php file. This " +"feature can only be used if the plugin can successfully write to the wp-" +"config.php file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:105 +msgid "Please enter a value for the DB prefix." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:114 +msgid "" +"ERROR: The table prefix can only contain numbers, letters, " +"and underscores." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:122 +msgid "Change Database Prefix" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:125 +msgid "" +"Your WordPress DB is the most important asset of your website because it " +"contains a lot of your site's precious information." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:126 +msgid "" +"The DB is also a target for hackers via methods such as SQL injections and " +"malicious and automated code which targets certain tables." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:127 +msgid "" +"One way to add a layer of protection for your DB is to change the default " +"WordPress table prefix from \"wp_\" to something else which will be " +"difficult for hackers to guess." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:128 +msgid "" +"This feature allows you to easily change the prefix to a value of your " +"choice or to a random value set by this plugin." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:134 +msgid "DB Prefix Options" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:145 +#, php-format +msgid "It is recommended that you perform a %s before using this feature" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:154 +msgid "Current DB Table Prefix" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:160 +msgid "" +"Your site is currently using the default WordPress DB prefix value of \"wp_" +"\". \n" +" To increase your site's security you should " +"consider changing the DB prefix value to another value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:167 +msgid "Generate New DB Table Prefix" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:170 +msgid "" +"Check this if you want the plugin to generate a random 6 character string " +"for the table prefix" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:171 +msgid "OR" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:173 +msgid "" +"Choose your own DB prefix by specifying a string which contains letters and/" +"or numbers and/or underscores. Example: xyz_" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:177 +msgid "Change DB Prefix" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:198 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:86 +msgid "Nonce check failed for manual DB backup operation!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:215 +msgid "" +"DB Backup was successfully completed! You will receive the backup file via " +"email if you have enabled \"Send Backup File Via Email\", otherwise you can " +"retrieve it via FTP from the following directory:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:217 +msgid "Your DB Backup File location: " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:225 +msgid "DB Backup failed. Please check the permissions of the backup directory." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:242 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:126 +msgid "" +"You entered a non numeric value for the \"backup time interval\" field. It " +"has been set to the default value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:249 +msgid "" +"You entered a non numeric value for the \"number of backup files to keep\" " +"field. It has been set to the default value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:256 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:156 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:121 +msgid "" +"You have entered an incorrect email address format. It has been set to your " +"WordPress admin email as default." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:262 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:162 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:219 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:127 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:581 +msgid "Attention!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:289 +msgid "Manual Backup" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:295 +msgid "To create a new DB backup just click on the button below." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:298 +msgid "Create DB Backup Now" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:302 +msgid "Automated Scheduled Backups" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:314 +msgid "Enable Automated Scheduled Backups" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:317 +msgid "" +"Check this if you want the system to automatically generate backups " +"periodically based on the settings below" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:321 +msgid "Backup Time Interval" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:324 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:259 +msgid "Hours" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:325 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:260 +msgid "Days" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:326 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:261 +msgid "Weeks" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:328 +msgid "Set the value for how often you would like an automated backup to occur" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:332 +msgid "Number of Backup Files To Keep" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:334 +msgid "" +"Thie field allows you to choose the number of backup files you would like to " +"keep in the backup directory" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:338 +msgid "Send Backup File Via Email" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:341 +msgid "" +"Check this if you want the system to email you the backup file after a DB " +"backup has been performed" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:343 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:305 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:228 +msgid "Enter an email address" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:373 +msgid "Starting DB prefix change operations....." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:375 +#, php-format +msgid "" +"Your WordPress system has a total of %s tables and your new DB prefix will " +"be: %s" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:381 +#: all-in-one-wp-security/classes/wp-security-utility.php:206 +msgid "" +"Failed to make a backup of the wp-config.php file. This operation will not " +"go ahead." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:385 +msgid "A backup copy of your wp-config.php file was created successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:408 +#, php-format +msgid "%s table name update failed" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:420 +#, php-format +msgid "Please change the prefix manually for the above tables to: %s" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:423 +#, php-format +msgid "%s tables had their prefix updated successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:438 +msgid "wp-config.php file was updated successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:441 +#, php-format +msgid "" +"The \"wp-config.php\" file was not able to be modified. Please modify this " +"file manually using your favourite editor and search \n" +" for variable \"$table_prefix\" and assign the following " +"value to that variable: %s" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:462 +msgid "There was an error when updating the options table." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:466 +msgid "" +"The options table records which had references to the old DB prefix were " +"updated successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:491 +#, php-format +msgid "" +"Error updating user_meta table where new meta_key = %s, old meta_key = %s " +"and user_id = %s." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:497 +msgid "" +"The usermeta table records which had references to the old DB prefix were " +"updated successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:499 +msgid "DB prefix change tasks have been completed." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:22 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:94 +msgid "File Change Detection" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:93 +msgid "Nonce check failed for manual file change detection scan operation!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:100 +msgid "" +"The plugin has detected that this is your first file change detection scan. " +"The file details from this scan will be used to detect file changes for " +"future scans!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:194 +msgid "" +"NEW SCAN COMPLETED: The plugin has detected that you have made changes to " +"the \"File Types To Ignore\" or \"Files To Ignore\" fields.\n" +" In order to ensure that future scan results are " +"accurate, the old scan data has been refreshed." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:204 +msgid "" +"All In One WP Security & Firewall has detected that there was a change in " +"your host's files." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:206 +msgid "View Scan Details & Clear This Message" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:215 +msgid "" +"If given an opportunity hackers can insert their code or files into your " +"system which they can then use to carry out malicious acts on your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:216 +msgid "" +"Being informed of any changes in your files can be a good way to quickly " +"prevent a hacker from causing damage to your website." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:217 +msgid "" +"In general, WordPress core and plugin files and file types such as \".php\" " +"or \".js\" should not change often and when they do, it is important that " +"you are made aware when a change occurs and which file was affected." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:218 +msgid "" +"The \"File Change Detection Feature\" will notify you of any file change " +"which occurs on your system, including the addition and deletion of files by " +"performing a regular automated or manual scan of your system's files." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:219 +msgid "" +"This feature also allows you to exclude certain files or folders from the " +"scan in cases where you know that they change often as part of their normal " +"operation. (For example log files and certain caching plugin files may " +"change often and hence you may choose to exclude such files from the file " +"change detection scan)" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:224 +msgid "Manual File Change Detection Scan" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:230 +msgid "" +"To perform a manual file change detection scan click on the button below." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:233 +msgid "Perform Scan Now" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:237 +msgid "File Change Detection Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:249 +msgid "Enable Automated File Change Detection Scan" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:252 +msgid "" +"Check this if you want the system to automatically/periodically scan your " +"files to check for file changes based on the settings below" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:256 +msgid "Scan Time Interval" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:263 +msgid "Set the value for how often you would like a scan to occur" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:267 +msgid "File Types To Ignore" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:270 +msgid "" +"Enter each file type or extension on a new line which you wish to exclude " +"from the file change detection scan." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:274 +msgid "" +"You can exclude file types from the scan which would not normally pose any " +"security threat if they were changed. These can include things such as image " +"files." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:275 +msgid "" +"Example: If you want the scanner to ignore files of type jpg, png, and bmp, " +"then you would enter the following:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:276 +msgid "jpg" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:277 +msgid "png" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:278 +msgid "bmp" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:284 +msgid "Files/Directories To Ignore" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:287 +msgid "" +"Enter each file or directory on a new line which you wish to exclude from " +"the file change detection scan." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:291 +msgid "" +"You can exclude specific files/directories from the scan which would not " +"normally pose any security threat if they were changed. These can include " +"things such as log files." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:292 +msgid "" +"Example: If you want the scanner to ignore certain files in different " +"directories or whole directories, then you would enter the following:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:293 +msgid "cache/config/master.php" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:294 +msgid "somedirectory" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:300 +msgid "Send Email When Change Detected" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:303 +msgid "" +"Check this if you want the system to email you if a file change was detected" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:335 +msgid "Latest File Change Scan Results" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:344 +msgid "The following files were added to your host." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:347 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:368 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:392 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:26 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:27 +msgid "File" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:348 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:369 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:393 +msgid "File Size" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:349 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:370 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:394 +msgid "File Modified" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:365 +msgid "The following files were removed from your host." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:389 +msgid "The following files were changed on your host." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:26 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:63 +msgid "File Permissions" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:27 +msgid "PHP File Editing" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:28 +msgid "WP File Access" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:29 +msgid "Host System Logs" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:96 +#, php-format +msgid "The permissions for %s were succesfully changed to %s" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:100 +#, php-format +msgid "Unable to change permissions for %s!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:106 +msgid "File Permissions Scan" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:109 +msgid "" +"Your WordPress file and folder permission settings govern the accessability " +"and read/write privileges of the files and folders which make up your WP " +"installation." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:110 +msgid "" +"Your WP installation already comes with reasonably secure file permission " +"settings for the filesystem." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:111 +msgid "" +"However, sometimes people or other plugins modify the various permission " +"settings of certain core WP folders or files such that they end up making " +"their site less secure because they chose the wrong permission values." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:112 +msgid "" +"This feature will scan the critical WP core folders and files and will " +"highlight any permission settings which are insecure." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:118 +msgid "WP Directory and File Permissions Scan Results" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:131 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:150 +msgid "File/Folder" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:132 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:151 +msgid "Current Permissions" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:133 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:152 +msgid "Recommended Permissions" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:134 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:153 +msgid "Recommended Action" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:191 +msgid "Your PHP file editing settings were saved successfully." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:195 +msgid "" +"Operation failed! Unable to modify or make a backup of wp-config.php file!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:201 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:65 +msgid "File Editing" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:204 +msgid "" +"The Wordpress Dashboard by default allows administrators to edit PHP files, " +"such as plugin and theme files." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:205 +msgid "" +"This is often the first tool an attacker will use if able to login, since it " +"allows code execution." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:206 +msgid "" +"This feature will disable the ability for people to edit PHP files via the " +"dashboard." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:212 +msgid "Disable PHP File Editing" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:224 +msgid "Disable Ability To Edit PHP Files" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:227 +msgid "" +"Check this if you want to remove the ability for people to edit PHP files " +"via the WP dashboard" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:271 +msgid "" +"You have successfully saved the Prevent Access to Default WP Files " +"configuration." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:275 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:115 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:269 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:480 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:619 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:106 +msgid "" +"Could not write to the .htaccess file. Please check the file permissions." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:280 +msgid "WordPress Files" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:283 +#, php-format +msgid "" +"This feature allows you to prevent access to files such as %s, %s and %s " +"which are delivered with all WP installations." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:284 +msgid "" +"By preventing access to these files you are hiding some key pieces of " +"information (such as WordPress version info) from potential hackers." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:289 +msgid "Prevent Access to Default WP Files" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:300 +msgid "Prevent Access to WP Default Install Files" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:303 +msgid "" +"Check this if you want to prevent access to readme.html, license.txt and wp-" +"config-sample.php." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:307 +msgid "Save Setting" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:331 +msgid "System Logs" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:334 +msgid "" +"Sometimes your hosting platform will produce error or warning logs in a file " +"called \"error_log\"." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:335 +msgid "" +"Depending on the nature and cause of the error or warning, your hosting " +"server can create multiple instances of this file in numerous directory " +"locations of your WordPress installation." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:336 +msgid "" +"By occassionally viewing the contents of these logs files you can keep " +"informed of any underlying problems on your system which you might need to " +"address." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:342 +msgid "View System Logs" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:347 +msgid "Enter System Log File Name" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:349 +msgid "Enter your system log file name. (Defaults to error_log)" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:352 +msgid "View Latest System Logs" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:354 +msgid "Loading..." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:371 +msgid "No system logs were found!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:424 +msgid "Set Recommended Permissions" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:430 +msgid "No Action Required" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:470 +#, php-format +msgid "Showing latest entries of error_log file: %s" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:25 +msgid "Basic Firewall Rules" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:26 +msgid "Additional Firewall Rules" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:27 +msgid "5G Blacklist Firewall Rules" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:28 +msgid "Brute Force Prevention" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:111 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:102 +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:96 +msgid "Settings were successfully saved" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:120 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:485 +msgid "Firewall Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:127 +#, php-format +msgid "" +"This should not have any impact on your site's general functionality but if " +"you wish you can take a %s of your .htaccess file before proceeding." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:128 +msgid "" +"The features in this tab allow you to activate some basic firewall security " +"protection rules for your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:129 +msgid "" +"The firewall functionality is achieved via the insertion of special code " +"into your currently active .htaccess file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:135 +msgid "Basic Firewall Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:143 +msgid "Enable Basic Firewall Protection" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:146 +msgid "Check this if you want to apply basic firewall protection to your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:150 +msgid "" +"This setting will implement the following basic firewall protection " +"mechanisms on your site:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:151 +msgid "1) Protect your htaccess file by denying access to it." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:152 +msgid "2) Disable the server signature." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:153 +msgid "3) Limit file upload size (10MB)." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:154 +msgid "4) Protect your wp-config.php file by denying access to it." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:155 +msgid "" +"The above firewall features will be applied via your .htaccess file and " +"should not affect your site's overall functionality." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:156 +msgid "" +"You are still advised to take a backup of your active .htaccess file just in " +"case." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:165 +msgid "WordPress Pingback Vulnerability Protection" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:173 +msgid "Enable Pingback Protection" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:176 +msgid "" +"Check this if you are not using the WP XML-RPC functionality and you want to " +"enable protection against WordPress pingback vulnerabilities." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:180 +msgid "" +"This setting will add a directive in your .htaccess to disable access to the " +"WordPress xmlrpc.php file which is responsible for the XML-RPC functionality " +"such as pingbacks in WordPress." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:181 +msgid "" +"Hackers can exploit various pingback vulnerabilities in the WordPress XML-" +"RPC API in a number of ways such as:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:182 +msgid "1) Denial of Service (DoS) attacks" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:183 +msgid "2) Hacking internal routers." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:184 +msgid "3) Scanning ports in internal networks to get info from various hosts." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:185 +msgid "" +"Apart from the security protection benefit, this feature may also help " +"reduce load on your server, particularly if your site currently has a lot of " +"unwanted traffic hitting the XML-RPC API on your installation." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:186 +msgid "" +"NOTE: You should only enable this feature if you are not currently using the " +"XML-RPC functionality on your WordPress installation." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:193 +msgid "Save Basic Firewall Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:265 +msgid "" +"You have successfully saved the Additional Firewall Protection configuration" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:279 +msgid "Additional Firewall Protection" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:283 +#, php-format +msgid "" +"Due to the nature of the code being inserted to the .htaccess file, this " +"feature may break some functionality for certain plugins and you are " +"therefore advised to take a %s of .htaccess before applying this " +"configuration." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:285 +msgid "" +"This feature allows you to activate more advanced firewall settings to your " +"site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:286 +msgid "" +"The advanced firewall rules are applied via the insertion of special code to " +"your currently active .htaccess file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:295 +msgid "Listing of Directory Contents" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:304 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:80 +msgid "Disable Index Views" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:307 +msgid "Check this if you want to disable directory and file listing." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:312 +msgid "" +"By default, an Apache server will allow the listing of the contents of a " +"directory if it doesn't contain an index.php file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:314 +msgid "This feature will prevent the listing of contents for all directories." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:316 +msgid "" +"NOTE: In order for this feature to work \"AllowOverride\" must be enabled in " +"your httpd.conf file. Ask your hosting provider to check this if you don't " +"have access to httpd.conf" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:325 +msgid "Trace and Track" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:334 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:81 +msgid "Disable Trace and Track" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:337 +msgid "Check this if you want to disable trace and track." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:342 +msgid "" +"HTTP Trace attack (XST) can be used to return header requests and grab " +"cookies and other information." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:344 +msgid "" +"This hacking technique is usually used together with cross site scripting " +"attacks (XSS)." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:346 +msgid "" +"Disabling trace and track on your site will help prevent HTTP Trace attacks." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:355 +msgid "Proxy Comment Posting" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:365 +msgid "Forbid Proxy Comment Posting" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:368 +msgid "Check this if you want to forbid proxy comment posting." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:373 +msgid "" +"This setting will deny any requests that use a proxy server when posting " +"comments." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:374 +msgid "" +"By forbidding proxy comments you are in effect eliminating some SPAM and " +"other proxy requests." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:383 +msgid "Bad Query Strings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:393 +msgid "Deny Bad Query Strings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:396 +msgid "This will help protect you against malicious queries via XSS." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:401 +msgid "" +"This feature will write rules in your .htaccess file to prevent malicious " +"string attacks on your site using XSS." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:402 +msgid "" +"NOTE: Some of these strings might be used for plugins or themes and hence " +"this might break some functionality." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:403 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:433 +msgid "" +"You are therefore strongly advised to take a backup of your active .htaccess " +"file before applying this feature." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:412 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:84 +msgid "Advanced Character String Filter" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:422 +msgid "Enable Advanced Character String Filter" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:425 +msgid "This will block bad character matches from XSS." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:430 +msgid "" +"This is an advanced character string filter to prevent malicious string " +"attacks on your site coming from Cross Site Scripting (XSS)." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:431 +msgid "" +"This setting matches for common malicious string patterns and exploits and " +"will produce a 403 error for the hacker attempting the query." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:432 +msgid "NOTE: Some strings for this setting might break some functionality." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:441 +msgid "Save Additional Firewall Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:476 +msgid "You have successfully saved the 5G Firewall Protection configuration" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:489 +#, php-format +msgid "" +"This feature allows you to activate the 5G firewall security protection " +"rules designed and produced by %s." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:490 +msgid "" +"The 5G Blacklist is a simple, flexible blacklist that helps reduce the " +"number of malicious URL requests that hit your website." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:491 +msgid "" +"The added advantage of applying the 5G firewall to your site is that it has " +"been tested and confirmed by the people at PerishablePress.com to be an " +"optimal and least disruptive set of .htaccess security rules for general WP " +"sites running on an Apache server or similar." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:492 +#, php-format +msgid "" +"Therefore the 5G firewall rules should not have any impact on your site's " +"general functionality but if you wish you can take a %s of your .htaccess " +"file before proceeding." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:498 +msgid "5G Blacklist/Firewall Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:510 +msgid "Enable 5G Firewall Protection" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:513 +msgid "" +"Check this if you want to apply the 5G Blacklist firewall protection from " +"perishablepress.com to your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:517 +msgid "" +"This setting will implement the 5G security firewall protection mechanisms " +"on your site which include the following things:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:518 +msgid "1) Block forbidden characters commonly used in exploitative attacks." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:519 +msgid "2) Block malicious encoded URL characters such as the \".css(\" string." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:520 +msgid "" +"3) Guard against the common patterns and specific exploits in the root " +"portion of targeted URLs." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:521 +msgid "" +"4) Stop attackers from manipulating query strings by disallowing illicit " +"characters." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:522 +msgid "....and much more." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:528 +msgid "Save 5G Firewall Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:556 +msgid "" +"Settings have not been saved - your secret word must consist only of " +"alphanumeric characters, ie, letters and/or numbers only!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:574 +msgid "" +"You have successfully enabled the cookie based brute force prevention feature" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:575 +msgid "" +"From now on you will need to log into your WP Admin using the following URL:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:577 +msgid "" +"It is important that you save this URL value somewhere in case you forget " +"it, OR," +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:578 +#, php-format +msgid "simply remember to add a \"?%s=1\" to your current site URL address." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:584 +msgid "" +"You have successfully saved cookie based brute force prevention feature " +"settings." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:629 +msgid "Brute Force Prevention Firewall Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:634 +msgid "" +"A Brute Force Attack is when a hacker tries many combinations of usernames " +"and passwords until they succeed in guessing the right combination." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:635 +msgid "" +"Due to the fact that at any one time there may be many concurrent login " +"attempts occurring on your site via malicious automated robots, this also " +"has a negative impact on your server's memory and performance." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:636 +msgid "" +"The features in this tab will stop the majority of Brute Force Login Attacks " +"at the .htaccess level thus providing even better protection for your WP " +"login page and also reducing the load on your server because the system does " +"not have to run PHP code to process the login attempts." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:643 +#, php-format +msgid "" +"Even though this feature should not have any impact on your site's general " +"functionality you are strongly encouraged to take a %s of your ." +"htaccess file before proceeding." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:644 +msgid "" +"If this feature is not used correctly, you can get locked out of your site. " +"A backup file will come in handy if that happens." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:645 +#, php-format +msgid "" +"To learn more about how to use this feature please watch the following %s." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:654 +msgid "Cookie Based Brute Force Login Prevention" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:665 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:79 +msgid "Enable Brute Force Attack Prevention" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:668 +msgid "" +"Check this if you want to protect your login page from Brute Force Attack." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:673 +msgid "" +"This feature will deny access to your WordPress login page for all people " +"except those who have a special cookie in their browser." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:675 +msgid "To use this feature do the following:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:677 +msgid "1) Enable the checkbox." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:679 +msgid "" +"2) Enter a secret word consisting of alphanumeric characters which will be " +"difficult to guess. This secret word will be useful whenever you need to " +"know the special URL which you will use to access the login page (see point " +"below)." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:681 +msgid "" +"3) You will then be provided with a special login URL. You will need to use " +"this URL to login to your WordPress site instead of the usual login URL. " +"NOTE: The system will deposit a special cookie in your browser which will " +"allow you access to the WordPress administration login page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:683 +msgid "" +"Any person trying to access your login page who does not have the special " +"cookie in their browser will be automatically blocked." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:690 +msgid "Secret Word" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:692 +msgid "" +"Choose a secret word consisting of alphanumeric characters which you can use " +"to access your special URL. Your are highly encouraged to choose a word " +"which will be difficult to guess." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:696 +msgid "Re-direct URL" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:700 +msgid "" +"Specify a URL to redirect a hacker to when they try to access your WordPress " +"login page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:707 +msgid "" +"The URL specified here can be any site's URL and does not have to be your " +"own. For example you can be as creative as you like and send hackers to the " +"CIA or NSA home page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:709 +msgid "" +"This field will default to: http://127.0.0.1 if you do not enter a value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:711 +msgid "Useful Tip:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:713 +msgid "" +"It's a good idea to not redirect attempted brute force login attempts to " +"your site because it increases the load on your server." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:715 +msgid "" +"Redirecting a hacker or malicious bot back to \"http://127.0.0.1\" is ideal " +"because it deflects them back to their own local host and puts the load on " +"their server instead of yours." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:722 +msgid "My Site Has Posts Or Pages Which Are Password Protected" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:725 +msgid "" +"Check this if you are using the native WordPress password protection feature " +"for some or all of your blog posts or pages." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:730 +msgid "" +"In the cases where you are protecting some of your posts or pages using the " +"in-built WordPress password protection feature, a few extra lines of " +"directives and exceptions need to be added to your .htacces file so that " +"people trying to access pages are not automatically blocked." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:732 +msgid "" +"By enabling this checkbox the plugin will add the necessary rules and " +"exceptions to your .htacces file so that people trying to access these pages " +"are not automatically blocked." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:734 +msgid "Helpful Tip:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:736 +msgid "" +"If you do not use the WordPress password protection feature for your posts " +"or pages then it is highly recommended that you leave this checkbox disabled." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:743 +msgid "My Site Has a Theme or Plugins Which Use AJAX" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:746 +msgid "Check this if your site uses AJAX functionality." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:751 +msgid "" +"In the cases where your WordPress installation has a theme or plugins which " +"use AJAX, a few extra lines of directives and exceptions need to be added to " +"your .htacces file to prevent AJAX requests from being automatically blocked " +"by the brute force prevention feature." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:753 +msgid "" +"By enabling this checkbox the plugin will add the necessary rules and " +"exceptions to your .htacces file so that AJAX operations will work as " +"expected." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:768 +msgid "The cookie test was successful. You can now enable this feature." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:771 +msgid "Save Feature Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:778 +msgid "" +"The cookie test failed on this server. So this feature cannot be used on " +"this site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:784 +msgid "" +"Before using this feature you are required to perform a cookie test first. " +"This is to make sure that your browser cookie is working correctly and that " +"you won't lock yourself out." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:786 +msgid "Perform Cookie Test" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-acct-activity.php:79 +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:86 +#: all-in-one-wp-security/admin/wp-security-list-locked-ip.php:80 +#: all-in-one-wp-security/admin/wp-security-list-locked-ip.php:91 +#: all-in-one-wp-security/admin/wp-security-list-login-fails.php:78 +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:82 +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:93 +msgid "Please select some records using the checkboxes" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-acct-activity.php:107 +#: all-in-one-wp-security/admin/wp-security-list-login-fails.php:107 +msgid "The selected entries were deleted successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-acct-activity.php:120 +#: all-in-one-wp-security/admin/wp-security-list-login-fails.php:119 +msgid "The selected entry was deleted successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:139 +msgid "" +"The selected IP addresses were saved in the blacklist configuration settings." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:153 +msgid "" +"The .htaccess file was successfully modified to include the selected IP " +"addresses." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:159 +msgid "" +"NOTE: The .htaccess file was not modified because you have disabled the " +"\"Enable IP or User Agent Blacklisting\" check box." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:160 +#, php-format +msgid "" +"To block these IP addresses you will need to enable the above flag in the %s " +"menu" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-locked-ip.php:115 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:748 +msgid "The selected IP ranges were unlocked successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-locked-ip.php:124 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:757 +msgid "The selected IP range was unlocked successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:118 +msgid "The selected accounts were approved successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:125 +msgid "The selected account was approved successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:146 +msgid "The selected accounts were deleted successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:154 +msgid "The selected account was deleted successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:22 +msgid "Visitor Lockout" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:88 +msgid "Site lockout feature settings saved!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:93 +msgid "General Visitor Lockout" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:99 +msgid "" +"This feature allows you to put your site into \"maintenance mode\" by " +"locking down the front-end to all visitors except logged in users with super " +"admin privileges." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:100 +msgid "" +"Locking your site down to general visitors can be useful if you are " +"investigating some issues on your site or perhaps you might be doing some " +"maintenance and wish to keep out all traffic for security reasons." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:105 +msgid "Enable Front-end Lockout" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:108 +msgid "" +"Check this if you want all visitors except those who are logged in as " +"administrator to be locked out of the front-end of your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:112 +msgid "Enter a Message:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:124 +msgid "" +"Enter a message you wish to display to visitors when your site is in " +"maintenance mode." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:131 +msgid "Save Site Lockout Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:25 +msgid "General Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:28 +msgid "WP Meta Info" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:95 +msgid "All the security features have been disabled successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:99 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:126 +msgid "" +"Could not write to the .htaccess file. Please restore your .htaccess file " +"manually using the restore functionality in the \".htaccess File\"." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:104 +msgid "" +"Could not write to the wp-config.php. Please restore your wp-config.php file " +"manually using the restore functionality in the \"wp-config.php File\"." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:122 +msgid "All firewall rules have been disabled successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:136 +msgid "WP Security Plugin" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:138 +msgid "" +"Thank you for using our WordPress security plugin. There are a lot of " +"security features in this plugin." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:139 +msgid "" +"Go through each menu items and enable the security options to add more " +"security to your site. Start by activating the basic features first." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:140 +msgid "" +"It is a good practice to take a backup of your .htaccess file, database and " +"wp-config.php file before activating the security features. This plugin has " +"options that you can use to backup those resources easily." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:143 +msgid "Backup your database" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:144 +msgid "Backup .htaccess file" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:145 +msgid "Backup wp-config.php file" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:151 +msgid "Disable Security Features" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:157 +msgid "" +"If you think that some plugin functionality on your site is broken due to a " +"security feature you enabled in this plugin, then use the following option " +"to turn off all the security features of this plugin." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:161 +msgid "Disable All Security Features" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:167 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:177 +msgid "Disable All Firewall Rules" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:173 +msgid "" +"This feature will disable all firewall rules which are currently active in " +"this plugin and it will also delete these rules from your .htacess file. Use " +"it if you think one of the firewall rules is causing an issue on your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:206 +msgid "" +"Your .htaccess file was successfully backed up! Using an FTP program go to " +"the \"backups\" directory of this plugin to save a copy of the file to your " +"computer." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:216 +msgid "" +"htaccess file rename failed during backup. Please check your root directory " +"for the backup file using FTP." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:222 +msgid "htaccess backup failed." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:237 +msgid "Please choose a .htaccess to restore from." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:253 +msgid "" +"htaccess file restore failed. Please attempt to restore the .htaccess " +"manually using FTP." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:257 +msgid "Your .htaccess file has successfully been restored!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:263 +msgid "" +"htaccess Restore operation failed! Please check the contents of the file you " +"are trying to restore from." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:269 +msgid ".htaccess File Operations" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:272 +msgid "" +"Your \".htaccess\" file is a key component of your website's security and it " +"can be modified to implement various levels of protection mechanisms." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:273 +msgid "" +"This feature allows you to backup and save your currently active .htaccess " +"file should you need to re-use the the backed up file in the future." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:274 +msgid "" +"You can also restore your site's .htaccess settings using a backed up ." +"htaccess file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:288 +msgid "Save the current .htaccess file" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:292 +msgid "" +"Click the button below to backup and save the currently active .htaccess " +"file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:293 +msgid "Backup .htaccess File" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:297 +msgid "Restore from a backed up .htaccess file" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:303 +msgid ".htaccess file to restore from" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:309 +msgid "" +"After selecting your file, click the button below to restore your site using " +"the backed up htaccess file (htaccess_backup.txt)." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:315 +msgid "Restore .htaccess File" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:319 +msgid "View Contents of the currently active .htaccess file" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:348 +msgid "Please choose a wp-config.php file to restore from." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:364 +msgid "" +"wp-config.php file restore failed. Please attempt to restore this file " +"manually using FTP." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:368 +msgid "Your wp-config.php file has successfully been restored!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:374 +msgid "" +"wp-config.php Restore operation failed! Please check the contents of the " +"file you are trying to restore from." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:380 +msgid "wp-config.php File Operations" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:383 +msgid "" +"Your \"wp-config.php\" file is one of the most important in your WordPress " +"installation. It is a primary configuration file and contains crucial things " +"such as details of your database and other critical components." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:384 +msgid "" +"This feature allows you to backup and save your currently active wp-config." +"php file should you need to re-use the the backed up file in the future." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:385 +msgid "" +"You can also restore your site's wp-config.php settings using a backed up wp-" +"config.php file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:399 +msgid "Save the current wp-config.php file" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:403 +msgid "" +"Click the button below to backup and download the contents of the currently " +"active wp-config.php file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:404 +msgid "Backup wp-config.php File" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:409 +msgid "Restore from a backed up wp-config file" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:415 +msgid "wp-config file to restore from" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:421 +msgid "" +"After selecting your file click the button below to restore your site using " +"the backed up wp-config file (wp-config.php.backup.txt)." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:427 +msgid "Restore wp-config File" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:431 +msgid "View Contents of the currently active wp-config.php file" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:466 +msgid "WP Generator Meta Tag" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:469 +msgid "" +"Wordpress generator automatically adds some meta information inside the " +"\"head\" tags of every page on your site's front end. Below is an example of " +"this:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:471 +msgid "" +"The above meta information shows which version of WordPress your site is " +"currently running and thus can help hackers or crawlers scan your site to " +"see if you have an older version of WordPress or one with a known exploit." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:472 +msgid "" +"This feature will allow you to remove the WP generator meta info from your " +"site's pages." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:478 +msgid "WP Generator Meta Info" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:490 +msgid "Remove WP Generator Meta Info" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:493 +msgid "" +"Check this if you want to remove the meta info produced by WP Generator from " +"all pages" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:23 +msgid "Comment SPAM" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:24 +msgid "Comment SPAM IP Monitoring" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:111 +msgid "Comment SPAM Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:116 +msgid "Add Captcha To Comments Form" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:120 +msgid "" +"This feature will add a simple math captcha field in the WordPress comments " +"form." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:137 +msgid "Enable Captcha On Comment Forms" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:140 +msgid "Check this if you want to insert a captcha field on the comment forms" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:148 +msgid "Block Spambot Comments" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:152 +msgid "" +"A large portion of WordPress blog comment SPAM is mainly produced by " +"automated bots and not necessarily by humans. " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:153 +msgid "" +"This feature will greatly minimize the useless and unecessary traffic and " +"load on your server resulting from SPAM comments by blocking all comment " +"requests which do not originate from your domain." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:170 +msgid "Block Spambots From Posting Comments" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:173 +msgid "" +"Check this if you want to apply a firewall rule which will block comments " +"originating from spambots." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:177 +msgid "" +"This feature will implement a firewall rule to block all comment attempts " +"which do not originate from your domain." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:178 +msgid "" +"A legitimate comment is one which is submitted by a human who physically " +"fills out the comment form and clicks the submit button. For such events, " +"the HTTP_REFERRER is always set to your own domain." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:179 +msgid "" +"A comment submitted by a spambot is done by directly calling the comments." +"php file, which usually means that the HTTP_REFERRER value is not your " +"domain and often times empty." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:180 +msgid "" +"This feature will check and block comment requests which are not referred by " +"your domain thus greatly reducing your overall blog SPAM and PHP requests " +"done by the server to process these comments." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:207 +msgid "Nonce check failed for list SPAM comment IPs!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:213 +msgid "" +"You entered a non numeric value for the minimum SPAM comments per IP field. " +"It has been set to the default value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:225 +#, php-format +msgid "" +"Displaying results for IP addresses which have posted a minimum of %s SPAM " +"comments" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:241 +msgid "" +"This tab displays a list of the IP addresses of the people or bots who have " +"left SPAM comments on your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:242 +msgid "" +"This information can be handy for identifying the most persistent IP " +"addresses or ranges used by spammers." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:243 +msgid "" +"By inspecting the IP address data coming from spammers you will be in a " +"better position to determine which addresses or address ranges you should " +"block by adding them to your blacklist." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:244 +msgid "" +"To add one or more of the IP addresses displayed in the table below to your " +"blacklist, simply click the \"Block\" link for the individual row or select " +"more than one address \n" +" using the checkboxes and then choose the \"block" +"\" option from the Bulk Actions dropdown list and click the \"Apply\" button." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:250 +msgid "List SPAMMER IP Addresses" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:256 +msgid "Minimum number of SPAM comments per IP" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:258 +msgid "" +"This field allows you to list only those IP addresses which have been used " +"to post X or more SPAM comments." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:262 +msgid "" +"Example 1: Setting this value to \"0\" or \"1\" will list ALL IP addresses " +"which were used to submit SPAM comments." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:263 +msgid "" +"Example 2: Setting this value to \"5\" will list only those IP addresses " +"which were used to submit 5 SPAM comments or more on your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:270 +msgid "Find IP Addresses" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:274 +msgid "SPAMMER IP Address Results" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:280 +#: all-in-one-wp-security/classes/wp-security-utility.php:150 +msgid "" +"The plugin has detected that you are using a Multi-Site WordPress " +"installation." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:281 +msgid "Only the \"superadmin\" can block IP addresses from the main site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:282 +msgid "" +"Take note of the IP addresses you want blocked and ask the superadmin to add " +"these to the blacklist using the \"Blacklist Manager\" on the main site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:29 +msgid "WP Username" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:30 +msgid "Display Name" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:31 +msgid "Password" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:85 +msgid "Admin User Security" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:88 +msgid "" +"By default, WordPress sets the administrator username to \"admin\" at " +"installation time." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:89 +msgid "" +"A lot of hackers try to take advantage of this information by attempting " +"\"Brute Force Login Attacks\" where they repeatedly try to guess the " +"password by using \"admin\" for username." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:90 +msgid "" +"From a security perspective, changing the default \"admin\" user name is one " +"of the first and smartest things you should do on your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:91 +msgid "" +"This feature will allow you to change your default \"admin\" user name to a " +"more secure name of your choosing." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:98 +msgid "List of Administrator Accounts" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:107 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:33 +msgid "Change Admin Username" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:115 +msgid "" +"Your site currently has an account which uses the default \"admin\" " +"username. \n" +" It is highly recommended that you change this name to " +"something else. \n" +" Use the following field to change the admin username." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:123 +msgid "New Admin Username" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:125 +msgid "Choose a new username for admin." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:129 +msgid "Change Username" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:131 +msgid "" +"NOTE: If you are currently logged in as \"admin\" you will be automatically " +"logged out after changing your username and will be required to log back in." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:138 +msgid "No action required! " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:140 +msgid "" +"Your site does not have any account which uses the default \"admin\" " +"username. " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:141 +msgid "This is good security practice." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:153 +msgid "Display Name Security" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:156 +msgid "" +"When you submit a post or answer a comment, WordPress will usually display " +"your \"nickname\"." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:157 +msgid "" +"By default the nickname is set to the login (or user) name of your account." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:158 +msgid "" +"From a security perspective, leaving your nickname the same as your user " +"name is bad practice because it gives a hacker at least half of your " +"account's login credentials." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:159 +msgid "" +"Therefore to further tighten your site's security you are advised to change " +"your nickname and Display name to be " +"different from your Username." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:165 +msgid "Modify Accounts With Identical Login Name & Display Name" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:174 +msgid "" +"Your site currently has the following accounts which have an identical login " +"name and display name." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:175 +msgid "Click on the link to edit the settings of that particular user account" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:190 +msgid "No action required." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:191 +msgid "" +"Your site does not have a user account where the display name is identical " +"to the username." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:202 +msgid "Password Tool" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:205 +msgid "" +"Poor password selection is one of the most common weak points of many sites " +"and is usually the first thing a hacker will try to exploit when attempting " +"to break into your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:206 +msgid "" +"Many people fall into the trap of using a simple word or series of numbers " +"as their password. Such a predictable and simple password would take a " +"competent hacker merely minutes to guess your password by using a simple " +"script which cycles through the easy and most common combinations." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:207 +msgid "" +"The longer and more complex your password is the harder it is for hackers to " +"\"crack\" because more complex passwords require much greater computing " +"power and time." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:208 +msgid "" +"This section contains a useful password strength tool which you can use to " +"check whether your password is sufficiently strong enough." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:213 +msgid "Password Strength Tool" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:218 +msgid "Start typing a password." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:221 +msgid "It would take a desktop PC approximately" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:222 +msgid "1 sec" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:222 +msgid "to crack your password!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:227 +msgid "Password Strength" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:243 +msgid "Nonce check failed on admin username change operation!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:250 +msgid "Username " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:250 +msgid " already exists. Please enter another value. " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:266 +msgid "The database update operation of the user account failed!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:293 +msgid "You entered an invalid username. Please enter another value. " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:297 +msgid "Please enter a value for your username. " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:304 +msgid "Username Successfully Changed!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:324 +msgid "Account Login Name" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:28 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:41 +msgid "Login Captcha" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:29 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:407 +msgid "Login Whitelist" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:30 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:519 +msgid "Failed Login Records" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:31 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:47 +msgid "Force Logout" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:32 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:653 +msgid "Account Activity Logs" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:100 +msgid "" +"You entered a non numeric value for the max login attempts field. It has " +"been set to the default value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:107 +msgid "" +"You entered a non numeric value for the login retry time period field. It " +"has been set to the default value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:114 +msgid "" +"You entered a non numeric value for the lockout time length field. It has " +"been set to the default value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:159 +msgid "Login Lockdown Configuration" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:163 +msgid "One of the ways hackers try to compromise sites is via a " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:163 +msgid "Brute Force Login Attack" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:164 +msgid "" +"This is where attackers use repeated login attempts until they guess the " +"password." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:165 +msgid "" +"Apart from choosing strong passwords, monitoring and blocking IP addresses " +"which are involved in repeated login failures in a short period of time is a " +"very effective way to stop these types of attacks." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:166 +#, php-format +msgid "" +"You may also want to checkout our %s feature for another secure way to " +"protect against these types of attacks." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:171 +msgid "Login Lockdown Options" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:183 +msgid "Enable Login Lockdown Feature" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:186 +msgid "" +"Check this if you want to enable the login lockdown feature and apply the " +"settings below" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:190 +msgid "Max Login Attempts" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:192 +msgid "" +"Set the value for the maximum login retries before IP address is locked out" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:196 +msgid "Login Retry Time Period (min)" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:198 +msgid "" +"If the maximum number of failed login attempts for a particular IP address " +"occur within this time period the plugin will lock out that address" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:202 +msgid "Time Length of Lockout (min)" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:204 +msgid "" +"Set the length of time for which a particular IP address will be prevented " +"from logging in" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:208 +msgid "Display Generic Error Message" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:211 +msgid "" +"Check this if you want to show a generic error message when a login attempt " +"fails" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:215 +msgid "Instantly Lockout Invalid Usernames" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:218 +msgid "" +"Check this if you want to instantly lockout login attempts with usernames " +"which do not exist on your system" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:223 +msgid "Notify By Email" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:226 +msgid "" +"Check this if you want to receive an email when someone has been locked out " +"due to maximum failed login attempts" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:236 +msgid "Currently Locked Out IP Address Ranges" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:290 +msgid "" +"This feature allows you to add a captcha form on the WordPress login page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:291 +msgid "" +"Users who attempt to login will also need to enter the answer to a simple " +"mathematical question - if they enter the wrong answer, the plugin will not " +"allow them login even if they entered the correct username and password." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:292 +msgid "" +"Therefore, adding a captcha form on the login page is another effective yet " +"simple \"Brute Force\" prevention technique." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:298 +msgid "Login Form Captcha Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:309 +msgid "Enable Captcha On Login Page" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:312 +msgid "Check this if you want to insert a captcha form on the login page" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:318 +msgid "Lost Password Form Captcha Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:328 +msgid "Enable Captcha On Lost Password Page" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:331 +msgid "" +"Check this if you want to insert a captcha form on the lost password page" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:353 +msgid "Nonce check failed for save whitelist settings!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:410 +msgid "" +"The All In One WP Security Whitelist feature gives you the option of only " +"allowing certain IP addresses or ranges to have access to your WordPress " +"login page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:411 +msgid "" +"This feature will deny login access for all IP addresses which are not in " +"your whitelist as configured in the settings below." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:412 +msgid "" +"The plugin achieves this by writing the appropriate directives to your ." +"htaccess file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:413 +msgid "" +"By allowing/blocking IP addresses via the .htaccess file your are using the " +"most secure first line of defence because login access will only be granted " +"to whitelisted IP addresses and other addresses will be blocked as soon as " +"they try to access your login page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:420 +#, php-format +msgid "" +"Attention: If in addition to enabling the white list feature, you also have " +"the %s feature enabled, you will still need to use your secret word " +"in the URL when trying to access your WordPress login page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:421 +msgid "" +"These features are NOT functionally related. Having both of them enabled on " +"your site means you are creating 2 layers of security." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:426 +msgid "Login IP Whitelist Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:437 +msgid "Enable IP Whitelisting" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:440 +msgid "" +"Check this if you want to enable the whitelisting of selected IP addresses " +"specified in the settings below" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:444 +msgid "Your Current IP Address" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:447 +msgid "" +"You can copy and paste this address in the text box below if you want to " +"include it in your login whitelist." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:451 +msgid "Enter Whitelisted IP Addresses:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:455 +msgid "" +"Enter one or more IP addresses or IP ranges you wish to include in your " +"whitelist. Only the addresses specified here will have access to the " +"WordPress login page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:485 +msgid "Nonce check failed for delete all failed login records operation!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:494 +msgid "User Login Feature - Delete all failed login records operation failed!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:498 +msgid "All records from the Failed Logins table were deleted successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:513 +msgid "This tab displays the failed login attempts for your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:514 +msgid "" +"The information below can be handy if you need to do security investigations " +"because it will show you the IP range, username and ID (if applicable) and " +"the time/date of the failed login attempt." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:535 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:544 +msgid "Delete All Failed Login Records" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:541 +msgid "" +"Click this button if you wish to delete all failed login records in one go." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:569 +msgid "" +"You entered a non numeric value for the logout time period field. It has " +"been set to the default value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:597 +msgid "" +"Setting an expiry period for your WP administration session is a simple way " +"to protect against unauthorized access to your site from your computer." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:598 +msgid "" +"This feature allows you to specify a time period in minutes after which the " +"admin session will expire and the user will be forced to log back in." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:603 +msgid "Force User Logout Options" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:615 +msgid "Enable Force WP User Logout" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:618 +msgid "" +"Check this if you want to force a wp user to be logged out after a " +"configured amount of time" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:622 +msgid "Logout the WP User After XX Minutes" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:624 +msgid "" +"(Minutes) The user will be forced to log back in after this time period has " +"elapased." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:647 +msgid "" +"This tab displays the login activity for WordPress admin accounts registered " +"with your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:648 +msgid "" +"The information below can be handy if you need to do security investigations " +"because it will show you the last 50 recent login events by username, IP " +"address and time/date." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:685 +msgid "Nonce check failed for users logged in list!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:698 +msgid "Refresh Logged In User Data" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:702 +msgid "Refresh Data" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:708 +msgid "This tab displays all users who are currently logged into your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:709 +msgid "" +"If you suspect there is a user or users who are logged in which should not " +"be, you can block them by inspecting the IP addresses from the data below " +"and adding them to your blacklist." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:714 +msgid "Currently Logged In Users" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:779 +msgid "The selected records were deleted successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:788 +msgid "The selected record was deleted successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:23 +msgid "Manual Approval" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:24 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:53 +msgid "Registration Captcha" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:112 +msgid "User Registration Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:116 +msgid "Manually Approve New Registrations" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:120 +msgid "" +"If your site allows people to create their own accounts via the WordPress " +"registration form, then you can minimize SPAM or bogus registrations by " +"manually approving each registration." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:121 +msgid "" +"This feature will automatically set a newly registered account to \"pending" +"\" until the administrator activates it. Therefore undesirable registrants " +"will be unable to log in without your express approval." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:122 +msgid "" +"You can view all accounts which have been newly registered via the handy " +"table below and you can also perform bulk activation/deactivation/deletion " +"tasks on each account." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:138 +msgid "Enable manual approval of new registrations" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:141 +msgid "" +"Check this if you want to automatically disable all newly registered " +"accounts so that you can approve them manually." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:150 +msgid "Approve Registered Users" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:195 +msgid "" +"This feature allows you to add a captcha form on the WordPress registration " +"page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:196 +msgid "" +"Users who attempt to register will also need to enter the answer to a simple " +"mathematical question - if they enter the wrong answer, the plugin will not " +"allow them to register." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:197 +msgid "" +"Therefore, adding a captcha form on the registration page is another " +"effective yet simple SPAM registration prevention technique." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:202 +msgid "Registration Page Captcha Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:214 +msgid "Enable Captcha On Registration Page" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:217 +msgid "" +"Check this if you want to insert a captcha form on the WordPress user " +"registration page (if you allow user registration)." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:22 +msgid "WhoIS Lookup" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:74 +msgid "WHOIS Lookup Information" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:77 +msgid "" +"This feature allows you to look up more detailed information about an IP " +"address or domain name by querying the WHOIS API." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:83 +msgid "Perform a WHOIS Lookup for an IP or Domain Name" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:89 +msgid "Enter IP Address or Domain Name" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:91 +msgid "" +"Enter an IP address or domain name. Example: 111.11.12.13 OR some-domain-" +"name.com" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:95 +msgid "Perform IP or Domain Lookup" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:115 +msgid "WHOIS lookup successfully completed. Please see the results below:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:127 +msgid "" +"You have entered an incorrectly formatted IP address or domain name. Please " +"try again." +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:178 +msgid "No items found." +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:281 +msgid "Bulk Actions" +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:291 +msgid "Apply" +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:365 +msgid "Show all dates" +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:378 +#, php-format +msgid "%1$s %2$d" +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:394 +msgid "List View" +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:395 +msgid "Excerpt View" +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:421 +#, php-format +msgid "%s pending" +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:653 +msgid "Select All" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-backup.php:177 +msgid "All In One WP Security - Site Database Backup" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-backup.php:179 +msgid "Attached is your latest DB backup file for site URL" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-backup.php:179 +msgid " generated on" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:12 +msgid "Please enter an answer in digits:" +msgstr "Kérjük, adja meg a választ számjegyekkel:" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:91 +msgid "one" +msgstr "egy" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:92 +msgid "two" +msgstr "kettő" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:93 +msgid "three" +msgstr "három" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:94 +msgid "four" +msgstr "négy" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:95 +msgid "five" +msgstr "öt" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:96 +msgid "six" +msgstr "hat" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:97 +msgid "seven" +msgstr "hét" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:98 +msgid "eight" +msgstr "nyolc" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:99 +msgid "nine" +msgstr "kilenc" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:100 +msgid "ten" +msgstr "tíz" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:101 +msgid "eleven" +msgstr "tizenegy" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:102 +msgid "twelve" +msgstr "tizenkettő" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:103 +msgid "thirteen" +msgstr "tizenhárom" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:104 +msgid "fourteen" +msgstr "tizennégy" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:105 +msgid "fifteen" +msgstr "tizenöt" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:106 +msgid "sixteen" +msgstr "tizenhat" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:107 +msgid "seventeen" +msgstr "tizenhét" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:108 +msgid "eighteen" +msgstr "tizennyolc" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:109 +msgid "nineteen" +msgstr "tizenkilenc" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:110 +msgid "twenty" +msgstr "húsz" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:58 +msgid "All In One WP Security - File change detected!" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:60 +msgid "A file change was detected on your system for site URL" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:60 +msgid ". Scan was generated on" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:61 +msgid "Login to your site to view the scan details." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:158 +msgid "Please enter an answer in the CAPTCHA field." +msgstr "Kérjük adja meg a választ a CAPTCHA mezőben." + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:168 +msgid "" +"Error: You entered an incorrect CAPTCHA answer. Please go back and try again." +msgstr "" +"Hiba: Helytelen CAPTCHA választ adott meg. Kérjük menjen vissza és próbálja " +"meg újból." + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:196 +#: all-in-one-wp-security/classes/wp-security-user-login.php:63 +#: all-in-one-wp-security/classes/wp-security-user-login.php:66 +#: all-in-one-wp-security/classes/wp-security-user-registration.php:59 +msgid "ERROR: Your answer was incorrect - please try again." +msgstr "" +"HIBA: A válasz helytelen - kérjük, próbálja meg újból." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:39 +msgid "" +"ERROR: Login failed because your IP address has been " +"blocked.\n" +" Please contact the administrator." +msgstr "" +"HIBA: A bejelentkezés sikertelen, mert az IP címe blokkolva " +"van.\n" +" Kérjük lépjen kapcsolatba az " +"adminisztrátorral." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:76 +msgid "ERROR: The username field is empty." +msgstr "HIBA: A felhasználó mező üres." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:80 +msgid "ERROR: The password field is empty." +msgstr "HIBA: A jelszó mező üres." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:100 +#: all-in-one-wp-security/classes/wp-security-user-login.php:126 +msgid "ERROR: Invalid login credentials." +msgstr "HIBA: Érvénytelen bejelentkezési adatok." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:103 +msgid "ERROR: Invalid username." +msgstr "HIBA: Érvénytelen felhasználónév." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:129 +#, php-format +msgid "" +"ERROR: Incorrect password. Lost your password?" +msgstr "" +"HIBA: Érvénytelen jelszó. Elfelejtett jelszó?" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:140 +msgid "" +"ACCOUNT PENDING: Your account is currently not active. An " +"administrator needs to activate your account before you can login." +msgstr "" +"FIÓK FÜGGŐBEN: A fiókja jelenleg nem aktív. Egy " +"adminisztrátornak kell aktiválnia, mielőtt belépne." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:263 +msgid "Site Lockout Notification" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:264 +msgid "" +"A lockdown event has occurred due to too many failed login attempts or " +"invalid username:" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:265 +msgid "Username: " +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:266 +msgid "IP Address: " +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:267 +msgid "IP Range: " +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:268 +msgid "" +"Log into your site's WordPress administration panel to see the duration of " +"the lockout or to unlock the user." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:425 +#, php-format +msgid "" +"Your session has expired because it has been over %d minutes since your last " +"login." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:426 +#: all-in-one-wp-security/classes/wp-security-user-login.php:430 +msgid "Please log back in to continue." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:429 +msgid "You were logged out because you just changed the \"admin\" username." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:79 +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:98 +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:113 +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:128 +msgid " is not a valid ip address format." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:136 +msgid "You cannot ban your own IP address: " +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-utility.php:151 +msgid "" +"This feature can only be configured by the \"superadmin\" on the main site." +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:29 +msgid "Remove WP Generatore Meta Tag" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:35 +msgid "Change Display Name" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:43 +msgid "Lost Password Captcha" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:45 +msgid "Login IP Whitelisting" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:51 +msgid "Registration Approval" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:67 +msgid "WordPress Files Access" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:71 +msgid "IP and User Agent Blacklisting" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:75 +msgid "Enable Basic Firewall" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:76 +msgid "Enable Pingback Vulnerability Protection" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:82 +msgid "Forbid Proxy Comments" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:83 +msgid "Deny Bad Queries" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:85 +msgid "5G Blacklist" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:88 +msgid "Block Spambots" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:90 +msgid "Comment Captcha" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item.php:28 +msgid "Basic" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item.php:31 +msgid "Intermediate" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item.php:34 +msgid "Advanced" +msgstr "" diff --git a/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-it_IT.mo b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-it_IT.mo new file mode 100644 index 0000000..29ecef7 Binary files /dev/null and b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-it_IT.mo differ diff --git a/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-it_IT.po b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-it_IT.po new file mode 100644 index 0000000..b239704 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-it_IT.po @@ -0,0 +1,7365 @@ +msgid "" +msgstr "" +"Project-Id-Version: All In One WP Security vv3.7.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-08-24 14:59+0200\n" +"PO-Revision-Date: 2015-08-24 15:49+0200\n" +"Last-Translator: Davide Giunchi \n" +"Language-Team: Marco Guglielmetti \n" +"Language: it_IT\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Poedit 1.8.4\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;" +"_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" +"X-Poedit-Basepath: .\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-SearchPath-0: ..\n" + +# @ default +#: ../admin/general/wp-security-list-table.php:178 +msgid "No items found." +msgstr "Nessun articolo trovato." + +# @ default +#: ../admin/general/wp-security-list-table.php:281 +msgid "Bulk Actions" +msgstr "Azioni in blocco" + +# @ default +#: ../admin/general/wp-security-list-table.php:291 +msgid "Apply" +msgstr "Applica" + +# @ default +#: ../admin/general/wp-security-list-table.php:365 +msgid "Show all dates" +msgstr "Mostra tutte le date" + +# @ default +#: ../admin/general/wp-security-list-table.php:378 +#, php-format +msgid "%1$s %2$d" +msgstr "%1$s %2$d" + +# @ default +#: ../admin/general/wp-security-list-table.php:394 +msgid "List View" +msgstr "Vedi Lista" + +# @ default +#: ../admin/general/wp-security-list-table.php:395 +msgid "Excerpt View" +msgstr "Vedi Estratto" + +# @ default +#: ../admin/general/wp-security-list-table.php:421 +#, php-format +msgid "%s pending" +msgstr "%s pendenti" + +# @ default +#: ../admin/general/wp-security-list-table.php:477 +#: ../admin/general/wp-security-list-table.php:881 +#, php-format +msgid "1 item" +msgid_plural "%s items" +msgstr[0] "1 Elemento" +msgstr[1] "%s elementi" + +# @ default +#: ../admin/general/wp-security-list-table.php:517 +#, php-format +msgctxt "paging" +msgid "%1$s of %2$s" +msgstr "" + +# @ default +#: ../admin/general/wp-security-list-table.php:653 +msgid "Select All" +msgstr "Seleziona Tutti" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-admin-init.php:203 +msgid "WP Security" +msgstr "Sicurezza WP" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-admin-init.php:204 +#: ../admin/wp-security-dashboard-menu.php:24 +msgid "Dashboard" +msgstr "Bacheca" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-admin-init.php:205 +msgid "Settings" +msgstr "Impostazioni" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-admin-init.php:206 +msgid "User Accounts" +msgstr "Account Utente" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-admin-init.php:207 +msgid "User Login" +msgstr "Login Utente" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-admin-init.php:208 +msgid "User Registration" +msgstr "Registrazione Utenti" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-admin-init.php:209 +msgid "Database Security" +msgstr "Sicurezza Database" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-admin-init.php:213 +msgid "Filesystem Security" +msgstr "Sicurezza File Sistema" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-admin-init.php:215 +msgid "WHOIS Lookup" +msgstr "Ricerca WHOIS" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-admin-init.php:219 +msgid "Blacklist Manager" +msgstr "Gestione Blacklist" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-admin-init.php:224 +msgid "Firewall" +msgstr "Firewall" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-admin-init.php:226 +msgid "Brute Force" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-admin-init.php:227 +msgid "SPAM Prevention" +msgstr "Prevenzione SPAM" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-admin-init.php:231 +msgid "Scanner" +msgstr "Scanner" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-admin-init.php:233 +msgid "Maintenance" +msgstr "Manutenzione" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-admin-init.php:234 +msgid "Miscellaneous" +msgstr "Altre impostazioni" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-admin-menu.php:43 +msgid "Settings successfully updated." +msgstr "Le Impostazioni sono state salvate con successo" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-admin-menu.php:50 +msgid "The selected record(s) deleted successfully!" +msgstr "Record selezionato (i) cancellato con successo!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-blacklist-menu.php:22 +msgid "Ban Users" +msgstr "Utenti Bannati" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-blacklist-menu.php:80 +msgid "Nonce check failed for save blacklist settings!" +msgstr "Salvataggio impostazioni blacklist fallito!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-blacklist-menu.php:135 +#: ../admin/wp-security-brute-force-menu.php:635 +#: ../admin/wp-security-firewall-menu.php:977 +#: ../admin/wp-security-list-404.php:213 +#: ../admin/wp-security-list-comment-spammer-ip.php:161 +msgid "" +"The plugin was unable to write to the .htaccess file. Please edit file " +"manually." +msgstr "" +"Il plugin non è stato in grado di scrivere nel file .htaccess. Si prega di " +"modificare il file manualmente." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-blacklist-menu.php:142 +msgid "Ban IPs or User Agents" +msgstr "IP o User Agent Bannati" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-blacklist-menu.php:145 +msgid "" +"The All In One WP Security Blacklist feature gives you the option of banning " +"certain host IP addresses or ranges and also user agents." +msgstr "" +"La caratteristica Blacklist offre la possibilità di vietare determinati " +"indirizzi IP o intervalli di accesso e anche user agent." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-blacklist-menu.php:146 +msgid "" +"This feature will deny total site access for users which have IP addresses or " +"user agents matching those which you have configured in the settings below." +msgstr "" +"Questa funzione potrà negare l'accesso totale del sito per gli utenti che " +"dispongono di indirizzi IP o gli agenti utente che corrispondono a quelli che " +"si è configurato nelle impostazioni di seguito." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-blacklist-menu.php:147 +msgid "" +"The plugin achieves this by making appropriate modifications to your ." +"htaccess file." +msgstr "" +"Il plugin realizza questo, facendo le opportune modifiche al file .htaccess." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-blacklist-menu.php:148 +msgid "" +"By blocking people via the .htaccess file your are using the most secure " +"first line of defence which denies all access to blacklisted visitors as soon " +"as they hit your hosting server." +msgstr "" +"Bloccando le persone tramite il file .htaccess si sta usando la prima linea " +"di difesa più sicura che nega tutti gli accessi ai visitatori nella lista " +"nera non appena provano a collegarsi al vostro server di hosting." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-blacklist-menu.php:154 +msgid "IP Hosts and User Agent Blacklist Settings" +msgstr "Impostazioni Blacklist IP Host e User Agent" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-blacklist-menu.php:165 +msgid "Enable IP or User Agent Blacklisting" +msgstr "Attiva IP o User Agent Blacklist" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-blacklist-menu.php:168 +msgid "" +"Check this if you want to enable the banning (or blacklisting) of selected IP " +"addresses and/or user agents specified in the settings below" +msgstr "" +"Seleziona questa casella se desideri attivare la messa al bando (o lista " +"nera) di indirizzi IP selezionati e / o user agents specificati nelle " +"impostazioni di seguito" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-blacklist-menu.php:172 +msgid "Enter IP Addresses:" +msgstr "Inserisci Indirizzo IP:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-blacklist-menu.php:176 +msgid "Enter one or more IP addresses or IP ranges." +msgstr "Immettere uno o più indirizzi IP o intervalli IP." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-blacklist-menu.php:177 +#: ../admin/wp-security-blacklist-menu.php:197 +#: ../admin/wp-security-brute-force-menu.php:351 +#: ../admin/wp-security-brute-force-menu.php:385 +#: ../admin/wp-security-brute-force-menu.php:408 +#: ../admin/wp-security-brute-force-menu.php:429 +#: ../admin/wp-security-brute-force-menu.php:691 +#: ../admin/wp-security-filescan-menu.php:293 +#: ../admin/wp-security-filescan-menu.php:310 +#: ../admin/wp-security-firewall-menu.php:168 +#: ../admin/wp-security-firewall-menu.php:198 +#: ../admin/wp-security-firewall-menu.php:228 +#: ../admin/wp-security-firewall-menu.php:355 +#: ../admin/wp-security-firewall-menu.php:385 +#: ../admin/wp-security-firewall-menu.php:416 +#: ../admin/wp-security-firewall-menu.php:444 +#: ../admin/wp-security-firewall-menu.php:473 +#: ../admin/wp-security-firewall-menu.php:561 +#: ../admin/wp-security-firewall-menu.php:651 +#: ../admin/wp-security-firewall-menu.php:854 +#: ../admin/wp-security-firewall-menu.php:877 +#: ../admin/wp-security-spam-menu.php:168 ../admin/wp-security-spam-menu.php:253 +msgid "More Info" +msgstr "Altre Info" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-blacklist-menu.php:180 +#: ../admin/wp-security-brute-force-menu.php:694 +msgid "Each IP address must be on a new line." +msgstr "Ogni indirizzo IP deve essere su una nuova linea." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-blacklist-menu.php:181 +#: ../admin/wp-security-brute-force-menu.php:695 +msgid "" +"To specify an IP range use a wildcard \"*\" character. Acceptable ways to use " +"wildcards is shown in the examples below:" +msgstr "" +"Per specificare un intervallo di indirizzi IP utilizzare un carattere jolly/" +"asterisco \"*\". Il modo corretto per utilizzare i caratteri jolly è mostrato " +"negli esempi qui sotto:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-blacklist-menu.php:182 +#: ../admin/wp-security-brute-force-menu.php:696 +msgid "Example 1: 195.47.89.*" +msgstr "Esempio 1: 195.47.89.*" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-blacklist-menu.php:183 +#: ../admin/wp-security-brute-force-menu.php:697 +msgid "Example 2: 195.47.*.*" +msgstr "Esempio 2: 195.47.*.*" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-blacklist-menu.php:184 +#: ../admin/wp-security-brute-force-menu.php:698 +msgid "Example 3: 195.*.*.*" +msgstr "Esempio 3: 195.*.*.*" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-blacklist-menu.php:191 +msgid "Enter User Agents:" +msgstr "Inserisci User Agents:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-blacklist-menu.php:196 +msgid "Enter one or more user agent strings." +msgstr "Inserisci una o più stringhe user agent." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-blacklist-menu.php:200 +msgid "Each user agent string must be on a new line." +msgstr "Ogni stringa user agent deve essere su una nuova linea." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-blacklist-menu.php:201 +msgid "Example 1 - A single user agent string to block:" +msgstr "Esempio 1 - Una singola stringa user agent per bloccare:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-blacklist-menu.php:203 +msgid "Example 2 - A list of more than 1 user agent strings to block" +msgstr "Esempio 2 - Un elenco di più stringhe di agent per bloccare" + +# @ all-in-one-wp-security-and-firewall +# @ default +#: ../admin/wp-security-blacklist-menu.php:211 +#: ../admin/wp-security-brute-force-menu.php:196 +#: ../admin/wp-security-brute-force-menu.php:571 +#: ../admin/wp-security-brute-force-menu.php:705 +#: ../admin/wp-security-brute-force-menu.php:767 +#: ../admin/wp-security-database-menu.php:356 +#: ../admin/wp-security-filescan-menu.php:331 +#: ../admin/wp-security-filesystem-menu.php:231 +#: ../admin/wp-security-firewall-menu.php:729 +#: ../admin/wp-security-firewall-menu.php:896 +#: ../admin/wp-security-misc-options-menu.php:165 +#: ../admin/wp-security-settings-menu.php:495 +#: ../admin/wp-security-spam-menu.php:183 ../admin/wp-security-spam-menu.php:349 +#: ../admin/wp-security-user-login-menu.php:239 +#: ../admin/wp-security-user-login-menu.php:407 +#: ../admin/wp-security-user-registration-menu.php:146 +#: ../admin/wp-security-user-registration-menu.php:232 +msgid "Save Settings" +msgstr "Salva Impostazioni" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:26 +#: ../admin/wp-security-dashboard-menu.php:370 +#: ../admin/wp-security-dashboard-menu.php:379 +msgid "Rename Login Page" +msgstr "Rinomina Pagina Login" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:27 +msgid "Cookie Based Brute Force Prevention" +msgstr "Prevenzione Brute Force basata su Cookie" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:28 +#: ../classes/grade-system/wp-security-feature-item-manager.php:44 +msgid "Login Captcha" +msgstr "Captcha Pagina Login" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:29 +#: ../admin/wp-security-brute-force-menu.php:642 +msgid "Login Whitelist" +msgstr "Lista Bianca Login" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:30 +msgid "Honeypot" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:105 +msgid "Please enter a value for your login page slug." +msgstr "Inserisci un valore per la tua pagina di login" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:109 +msgid "You cannot use the value \"wp-admin\" for your login page slug." +msgstr "" +"Non è possibile utilizzare il valore \"wp-admin \" per la tua pagina di login." + +#: ../admin/wp-security-brute-force-menu.php:111 +msgid "You must alpha numeric characters for your login page slug." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:116 +#: ../admin/wp-security-database-menu.php:271 +#: ../admin/wp-security-filescan-menu.php:171 +#: ../admin/wp-security-firewall-menu.php:796 +#: ../admin/wp-security-spam-menu.php:213 +#: ../admin/wp-security-user-login-menu.php:123 +#: ../admin/wp-security-user-login-menu.php:360 +msgid "Attention!" +msgstr "Attenzione!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:135 +msgid "" +"Could not delete the Cookie-based directives from the .htaccess file. Please " +"check the file permissions." +msgstr "" +"Impossibile eliminare le direttive basate su Cookie dal file htaccess.. Si " +"prega di controllare i permessi dei file." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:145 +msgid "" +"An effective Brute Force prevention technique is to change the default " +"WordPress login page URL." +msgstr "" +"Un efficace tecnica di prevenzione Brute Force è quella di cambiare " +"l'impostazione predefinita dell'URL della pagina di login di WordPress." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:146 +msgid "" +"Normally if you wanted to login to WordPress you would type your site's home " +"URL followed by wp-login.php." +msgstr "" +"Normalmente, se si vuole accedere a WordPress è necessario digitare l'URL del " +"tuo sito seguito da wp-login.php." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:147 +msgid "" +"This feature allows you to change the login URL by setting your own slug and " +"renaming the last portion of the login URL which contains the wp-" +"login.php to any string that you like." +msgstr "" +"Questa funzione consente di modificare l'URL di accesso impostando il proprio " +"slug e rinominare l'ultima parte dell'URL di accesso che contiene il " +"wp-login.php con qualsiasi stringa che ti piace." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:148 +msgid "" +"By doing this, malicious bots and hackers will not be able to access your " +"login page because they will not know the correct login page URL." +msgstr "" +"In questo modo, bot maligni e hacker non saranno in grado di accedere alla " +"pagina di login perché non conoscono il corretto URL della pagina di login." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:150 +msgid "" +"You may also be interested in the following alternative brute force " +"prevention features:" +msgstr "" +"Potresti anche essere interessato alle seguenti caratteristiche di " +"prevenzione brute force alternative:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:161 +msgid "Your WordPress login page URL has been renamed." +msgstr "L'URL della tua pagina di login WordPress è stato rinominato." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:162 +msgid "Your current login URL is:" +msgstr "Il tuo attuale indirizzo di login (URL)" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:164 +msgid "" +"NOTE: If you already had the Cookie-Based Brute Force Prevention feature " +"active, the plugin has automatically deactivated it because only one of these " +"features can be active at any one time." +msgstr "" +"NOTA: Se hai già la funzione di Prevenzione Brute Force basata sui cookie " +"attiva il plugin viene disattivato automaticamente perché una sola di queste " +"caratteristiche, alla volta, può essere attiva." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:171 +msgid "Rename Login Page Settings" +msgstr "Impostazioni Rinomina Pagina Login" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:183 +msgid "Enable Rename Login Page Feature" +msgstr "Attiva opzione Rinomina Pagina Login" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:186 +msgid "Check this if you want to enable the rename login page feature" +msgstr "" +"Seleziona questa casella per attivare la funzione di rinmomina login e " +"applicare le seguenti impostazioni" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:190 +msgid "Login Page URL" +msgstr "Indirizzo di login (URL)" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:192 +msgid "" +"Enter a string which will represent your secure login page slug. You are " +"enouraged to choose something which is hard to guess and only you will " +"remember." +msgstr "" +"Immettere una stringa che rappresenterà lo slug della tua pagina di login " +"sicura (lo slug è la parte finale dell'indirizzo pagina). Oportuno scegliere " +"qualcosa che è difficile indovinare." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:225 +msgid "" +"Settings have not been saved - your secret word must consist only of " +"alphanumeric characters, ie, letters and/or numbers only!" +msgstr "" +"Le impostazioni non sono state salvate - la tua parola segreta deve essere " +"composta solo da caratteri alfanumerici, cioè lettere e/o solo numeri!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:244 +msgid "" +"You have successfully enabled the cookie based brute force prevention feature" +msgstr "" +"È stata attivata con successo la funzione di prevenzione base brute force" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:245 +msgid "" +"From now on you will need to log into your WP Admin using the following URL:" +msgstr "" +"Da ora in poi per accedere al pannello Admin WP dovrai usare il seguente URL:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:247 +msgid "" +"It is important that you save this URL value somewhere in case you forget it, " +"OR," +msgstr "" +"Consiglio di salvare il nuovo URL di accesso nel caso dovessi dimenticarlo, O," + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:248 +#, php-format +msgid "simply remember to add a \"?%s=1\" to your current site URL address." +msgstr "" +"basta ti ricordi di aggiungere \"?%s=1\" al tuo attuale indirizzo URL del " +"sito." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:254 +msgid "" +"You have successfully saved cookie based brute force prevention feature " +"settings." +msgstr "" +"Hai salvato con successo il cookie per le impostazioni base di prevenzione " +"brute force." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:289 +#: ../admin/wp-security-filesystem-menu.php:275 +#: ../admin/wp-security-firewall-menu.php:122 +#: ../admin/wp-security-firewall-menu.php:316 +#: ../admin/wp-security-firewall-menu.php:527 +#: ../admin/wp-security-firewall-menu.php:696 +#: ../admin/wp-security-settings-menu.php:589 +#: ../admin/wp-security-spam-menu.php:108 +msgid "" +"Could not write to the .htaccess file. Please check the file permissions." +msgstr "" +"Impossibile scrivere nel file .htaccess. Controlla i permessi dei file." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:299 +msgid "Brute Force Prevention Firewall Settings" +msgstr "Impostazioni Prevenzione Brute Force Firewall" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:304 +msgid "" +"A Brute Force Attack is when a hacker tries many combinations of usernames " +"and passwords until they succeed in guessing the right combination." +msgstr "" +"Un attacco brute force è quando un hacker tenta molte combinazioni di nomi " +"utente e password fino a quando non riesce a indovinare quella giusta." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:305 +msgid "" +"Due to the fact that at any one time there may be many concurrent login " +"attempts occurring on your site via malicious automated robots, this also has " +"a negative impact on your server's memory and performance." +msgstr "" +"A causa del fatto che in qualsiasi momento ci possono essere molti tentativi " +"di accesso simultanei che si verificano sul tuo sito tramite robot " +"automatizzati maligni, anche questo ha un impatto negativo sulla memoria e le " +"prestazioni del server." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:306 +msgid "" +"The features in this tab will stop the majority of Brute Force Login Attacks " +"at the .htaccess level thus providing even better protection for your WP " +"login page and also reducing the load on your server because the system does " +"not have to run PHP code to process the login attempts." +msgstr "" +"Le funzionalità di questa scheda ferma la maggior parte degli attacchi di " +"brute force di login a livello .htaccess fornendo così una protezione ancora " +"migliore per la pagina di login WP e riducendo anche il carico sul server, " +"perché il sistema non ha bisogno di eseguire codice PHP per elaborare " +"tentativi di accesso." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:313 +#, php-format +msgid "" +"Even though this feature should not have any impact on your site's general " +"functionality you are strongly encouraged to take a %s of your ." +"htaccess file before proceeding." +msgstr "" +"Anche se questa caratteristica non dovrebbe avere alcun impatto sulla " +"funzionalità generale del tuo sito è vivamente consigliato fare un " +"%s del file .htaccess prima di procedere." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:314 +msgid "" +"If this feature is not used correctly, you can get locked out of your site. A " +"backed up .htaccess file will come in handy if that happens." +msgstr "" +"Se questa funzione non viene utilizzata correttamente puoi rimanere bloccato " +"fuori dal tuo sito. Un backup del file .htaccess sarà utile se questo accade." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:315 +#, php-format +msgid "" +"To learn more about how to use this feature please watch the following %s." +msgstr "" +"Per ulteriori informazioni su come utilizzare questa funzionalità si prega di " +"guardare il seguente %s." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:328 +msgid "" +"NOTE: If you already had the Rename Login Page feature active, the plugin has " +"automatically deactivated it because only one of these features can be active " +"at any one time." +msgstr "" +"NOTA: Se hai già la funzione di Rinomina pagina login attiva il plugin viene " +"disattivato automaticamente perché una sola di queste caratteristiche può " +"essere attiva." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:336 +msgid "Cookie Based Brute Force Login Prevention" +msgstr "Prevenzione Brute Force Login Basata su Cookie." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:347 +#: ../classes/grade-system/wp-security-feature-item-manager.php:91 +msgid "Enable Brute Force Attack Prevention" +msgstr "Abilita Prevenzione Attacchi Brute Force" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:350 +msgid "" +"Check this if you want to protect your login page from Brute Force Attack." +msgstr "" +"Seleziona questa casella per proteggere la pagina di login da attacchi brute " +"force." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:355 +msgid "" +"This feature will deny access to your WordPress login page for all people " +"except those who have a special cookie in their browser." +msgstr "" +"Questa funzione nega l'accesso alla pagina di login di WordPress per tutte le " +"persone, tranne coloro che hanno un cookie speciale nel proprio browser." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:357 +msgid "To use this feature do the following:" +msgstr "Per utilizzare questa funzione, attenersi alla seguente procedura:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:359 +msgid "1) Enable the checkbox." +msgstr "1) Attivare la casella di controllo." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:361 +msgid "" +"2) Enter a secret word consisting of alphanumeric characters which will be " +"difficult to guess. This secret word will be useful whenever you need to know " +"the special URL which you will use to access the login page (see point below)." +msgstr "" +"2) Inserire una parola segreta composta da caratteri alfanumerici difficile " +"da indovinare. Questa parola segreta sarà utile ogni volta che è necessario " +"conoscere l'URL speciale che verrà utilizzato per accedere alla pagina di " +"login (vedi punto seguente)." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:363 +msgid "" +"3) You will then be provided with a special login URL. You will need to use " +"this URL to login to your WordPress site instead of the usual login URL. " +"NOTE: The system will deposit a special cookie in your browser which will " +"allow you access to the WordPress administration login page." +msgstr "" +"3) Ti verrà fornito un URL di accesso speciale. È necessario utilizzare " +"questo URL per accedere al sito WordPress invece del solito URL di login. " +"NOTA: Il sistema deposita un cookie speciale nel browser che permetterà di " +"accedere alla pagina di login di amministrazione WordPress." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:365 +msgid "" +"Any person trying to access your login page who does not have the special " +"cookie in their browser will be automatically blocked." +msgstr "" +"Qualsiasi persona che tenta di accedere alla pagina di login che non ha il " +"cookie speciale nel browser viene bloccato automaticamente." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:372 +msgid "Secret Word" +msgstr "Parola Segreta" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:374 +msgid "" +"Choose a secret word consisting of alphanumeric characters which you can use " +"to access your special URL. Your are highly encouraged to choose a word which " +"will be difficult to guess." +msgstr "" +"Scegli una parola segreta composta da caratteri alfanumerici che è possibile " +"utilizzare per accedere al tuo URL speciale. Mi raccomando di scegliere una " +"parola molto difficile da indovinare." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:378 +msgid "Re-direct URL" +msgstr "URL Re-direct" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:382 +msgid "" +"Specify a URL to redirect a hacker to when they try to access your WordPress " +"login page." +msgstr "" +"Specificare un URL per reindirizzare un hacker quando cerca di accedere alla " +"pagina di login di WordPress" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:389 +msgid "" +"The URL specified here can be any site's URL and does not have to be your " +"own. For example you can be as creative as you like and send hackers to the " +"CIA or NSA home page." +msgstr "" +"L'URL specificato qui può essere un URL di qualsiasi sito e non deve essere " +"per forza il tuo. Ad esempio puoi usare la fantasia e inviare l'hacker al " +"sito della polizia postale alla CIA o quello che preferisci." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:391 +msgid "" +"This field will default to: http://127.0.0.1 if you do not enter a value." +msgstr "" +"Se non inserisci un valore questo campo sarà di default impostato a: " +"http://127.0.0.1" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:393 +msgid "Useful Tip:" +msgstr "Suggerimento utile:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:395 +msgid "" +"It's a good idea to not redirect attempted brute force login attempts to your " +"site because it increases the load on your server." +msgstr "" +"Una buona idea è di non reindirizzare i tentativi di attacco brute force al " +"tuo sito, perché il carico sul server aumenta." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:397 +msgid "" +"Redirecting a hacker or malicious bot back to \"http://127.0.0.1\" is ideal " +"because it deflects them back to their own local host and puts the load on " +"their server instead of yours." +msgstr "" +"Reindirizzare un hacker o bot maligni a \"http://127.0.0.1\" è l'ideale " +"perché li devia indietro al proprio host locale e mette il carico sui loro " +"server al posto del tuo." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:404 +msgid "My Site Has Posts Or Pages Which Are Password Protected" +msgstr "Il mio sito ha post o pagine che sono protetti da password" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:407 +msgid "" +"Check this if you are using the native WordPress password protection feature " +"for some or all of your blog posts or pages." +msgstr "" +"Seleziona questa casella se si utilizza la funzione di protezione con " +"password nativa di WordPress per alcuni o tutti i post/pagine del tuo blog." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:412 +msgid "" +"In the cases where you are protecting some of your posts or pages using the " +"in-built WordPress password protection feature, a few extra lines of " +"directives and exceptions need to be added to your .htacces file so that " +"people trying to access pages are not automatically blocked." +msgstr "" +"Nei casi in cui si stanno proteggendo alcuni post o pagine tramite la " +"funzione di protezione con password di WordPress, poche linee in più di " +"direttive e eccezioni devono essere aggiunte al file .htacces in modo che le " +"persone che cercano di accedere alle pagine non siano automaticamente " +"bloccate." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:414 +msgid "" +"By enabling this checkbox the plugin will add the necessary rules and " +"exceptions to your .htacces file so that people trying to access these pages " +"are not automatically blocked." +msgstr "" +"Abilitando questa casella il plugin aggiungerà le regole e le eccezioni " +"necessarie per il file .htacces in modo che le persone che cercano di " +"accedere a queste pagine non vengano automaticamente bloccate." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:416 +msgid "Helpful Tip:" +msgstr "Suggerimento utile:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:418 +msgid "" +"If you do not use the WordPress password protection feature for your posts or " +"pages then it is highly recommended that you leave this checkbox disabled." +msgstr "" +"Se non si utilizza la funzione di protezione con password di WordPress per i " +"tuoi post o le pagine, allora si consiglia vivamente di lasciare questa " +"casella di controllo disattivata." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:425 +msgid "My Site Has a Theme or Plugins Which Use AJAX" +msgstr "Il mio sito ha un tema o plugin che utilizzano AJAX" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:428 +msgid "Check this if your site uses AJAX functionality." +msgstr "Seleziona questa casella se il sito utilizza funzionalità AJAX." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:433 +msgid "" +"In the cases where your WordPress installation has a theme or plugins which " +"use AJAX, a few extra lines of directives and exceptions need to be added to " +"your .htacces file to prevent AJAX requests from being automatically blocked " +"by the brute force prevention feature." +msgstr "" +"Nei casi in cui l'installazione di WordPress ha un tema o plugin che usano " +"AJAX, poche linee in più di direttive e eccezioni devono essere aggiunte al " +"file .htacces per evitare che le richieste AJAX vengano bloccate " +"automaticamente dalla funzione di prevenzione brute force." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:435 +msgid "" +"By enabling this checkbox the plugin will add the necessary rules and " +"exceptions to your .htacces file so that AJAX operations will work as " +"expected." +msgstr "" +"Abilitando questa casella il plugin aggiungerà le regole e le eccezioni " +"necessarie nel file .htacces in modo che le operazioni AJAX funzioneranno " +"come previsto." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:450 +msgid "The cookie test was successful. You can now enable this feature." +msgstr "" +"Il Test cookie ha avuto successo. Ora è possibile attivare questa funzione." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:453 +msgid "Save Feature Settings" +msgstr "Sala Impostazioni Caratteristiche" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:460 +msgid "" +"The cookie test failed on this server. So this feature cannot be used on this " +"site." +msgstr "" +"La provacookie non è riuscita su questo server. Quindi, questa funzione non " +"può essere utilizzata in questo sito." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:465 +msgid "" +"Before using this feature you are required to perform a cookie test first. " +"This is to make sure that your browser cookie is working correctly and that " +"you won't lock yourself out." +msgstr "" +"Prima di utilizzare questa funzione viene richiesto di eseguire un test " +"cookie. Questo per fare verificare che il cookie del browser funziona " +"correttamente e non rischi di rimanere fuori." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:467 +msgid "Perform Cookie Test" +msgstr "Esegui Test Cookie" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:507 +msgid "" +"This feature allows you to add a captcha form on the WordPress login page." +msgstr "" +"Seleziona questo se desideri inserire un campo captcha nella pagina di Login " +"WordPress" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:508 +msgid "" +"Users who attempt to login will also need to enter the answer to a simple " +"mathematical question - if they enter the wrong answer, the plugin will not " +"allow them login even if they entered the correct username and password." +msgstr "" +"Gli utenti che tentano di accedere devono inserire la risposta ad una " +"semplice domanda matematica - se viene data la risposta sbagliata il plugin " +"non permetterà l'accesso anche se il nome utente e la password sono corretti." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:509 +msgid "" +"Therefore, adding a captcha form on the login page is another effective yet " +"simple \"Brute Force\" prevention technique." +msgstr "" +"Pertanto, l'aggiunta di un modulo captcha sulla pagina di login è un altro " +"efficace ma semplice metodo di prevenzione \"Brute Force\"." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:515 +msgid "Login Form Captcha Settings" +msgstr "Impostazioni Modulo Captcha pagina di Login" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:526 +msgid "Enable Captcha On Login Page" +msgstr "Attiva Captcha sulla Pagina di Login" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:529 +msgid "Check this if you want to insert a captcha form on the login page" +msgstr "" +"Seleziona questa casella se desideri inserire un campo captcha nel modulo " +"della pagina di login" + +#: ../admin/wp-security-brute-force-menu.php:535 +msgid "Custom Login Form Captcha Settings" +msgstr "" + +#: ../admin/wp-security-brute-force-menu.php:544 +msgid "Enable Captcha On Custom Login Form" +msgstr "" + +#: ../admin/wp-security-brute-force-menu.php:547 +msgid "" +"Check this if you want to insert captcha on a custom login form generated by " +"the following WP function: wp_login_form()" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:553 +msgid "Lost Password Form Captcha Settings" +msgstr "Impostazioni Modulo Captcha Password persa " + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:563 +msgid "Enable Captcha On Lost Password Page" +msgstr "Attiva Captcha nella Pagina Password Persa" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:566 +msgid "" +"Check this if you want to insert a captcha form on the lost password page" +msgstr "" +"Seleziona questa casella se desideri inserire un campo captcha nel modulo " +"della password persa" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:588 +msgid "Nonce check failed for save whitelist settings!" +msgstr "Verifica fallita per salvare le impostazioni whitelist!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:645 +msgid "" +"The All In One WP Security Whitelist feature gives you the option of only " +"allowing certain IP addresses or ranges to have access to your WordPress " +"login page." +msgstr "" +"La caratteristica Whitelist ti dà la possibilità di autorizzare solo " +"determinati indirizzi IP, o intervalli, ad accedere alla pagina login di " +"WordPress." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:646 +msgid "" +"This feature will deny login access for all IP addresses which are not in " +"your whitelist as configured in the settings below." +msgstr "" +"Questa funzione nega l'accesso da login per tutti gli indirizzi IP che non " +"sono nella tua lista bianca come configurato nelle impostazioni di seguito." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:647 +msgid "" +"The plugin achieves this by writing the appropriate directives to your ." +"htaccess file." +msgstr "" +"Il plugin realizza questo, facendo le opportune modifiche al file .htaccess." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:648 +msgid "" +"By allowing/blocking IP addresses via the .htaccess file your are using the " +"most secure first line of defence because login access will only be granted " +"to whitelisted IP addresses and other addresses will be blocked as soon as " +"they try to access your login page." +msgstr "" +"Consentendo/bloccando gli indirizzi IP tramite il file .htaccess si sta " +"usando la linea di difesa più sicura, perché l'accesso al login sarà concesso " +"solo agli indirizzi IP nella whitelist e gli altri indirizzi verranno " +"bloccati non appena tentano di accedere alla pagina di login." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:655 +#, php-format +msgid "" +"Attention: If in addition to enabling the white list feature, you also have " +"the %s feature enabled, you will still need to use your secret word " +"in the URL when trying to access your WordPress login page." +msgstr "" +"Attenzione: Se oltre ad abilitare la funzione lista bianca, si ha anche la " +"funzione %s attivata,sarà comunque necessario utilizzare la tua " +"parola segreta nell'URL quando si cerca di accedere alla pagina di login di " +"WordPress." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:656 +msgid "" +"These features are NOT functionally related. Having both of them enabled on " +"your site means you are creating 2 layers of security." +msgstr "" +"Queste caratteristiche NON sono funzionalmente correlate. Se si abilitano " +"entrambe sul sito si creano due livelli di sicurezza." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:661 +msgid "Login IP Whitelist Settings" +msgstr "Login Configurazione Whitelist IP" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:672 +msgid "Enable IP Whitelisting" +msgstr "Attiva IP Whitelisting" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:675 +msgid "" +"Check this if you want to enable the whitelisting of selected IP addresses " +"specified in the settings below" +msgstr "" +"Seleziona questa casella se vuoi attivare la whitelist di indirizzi IP " +"selezionati specificati nelle impostazioni di seguito" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:679 +msgid "Your Current IP Address" +msgstr "Il Tuo Indirizzo IP Attuale" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:682 +msgid "" +"You can copy and paste this address in the text box below if you want to " +"include it in your login whitelist." +msgstr "" +"È possibile copiare e incollare questo indirizzo nella casella di testo " +"sottostante, se desideri includerlo nella tua lista bianca login." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:686 +msgid "Enter Whitelisted IP Addresses:" +msgstr "Inserisci Indirizzi IP Whitelisted:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:690 +msgid "" +"Enter one or more IP addresses or IP ranges you wish to include in your " +"whitelist. Only the addresses specified here will have access to the " +"WordPress login page." +msgstr "" +"Immettere uno o più indirizzi IP o intervalli IP che vuoi includere nella tua " +"lista bianca. Solo gli indirizzi specificati qui potranno accedere alla " +"pagina di login di WordPress." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:738 +msgid "" +"This feature allows you to add a special hidden \"honeypot\" field on the " +"WordPress login page. This will only be visible to robots and not humans." +msgstr "" +"Questa funzione consente di aggiungere un particolare campo nascosto " +"\"honeypot\" nella pagina di login di WordPress. Questo sarà visibile solo ai " +"robot e non agli esseri umani." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:739 +msgid "" +"Since robots usually fill in every input field from a login form, they will " +"also submit a value for the special hidden honeypot field." +msgstr "" +"Dal momento che i robot di solito compilano ogni campo di input che trovano " +"in un form di login, compileranno anche il campo speciale nascosto honeypot." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:740 +msgid "" +"The way honeypots work is that a hidden field is placed somewhere inside a " +"form which only robots will submit. If that field contains a value when the " +"form is submitted then a robot has most likely submitted the form and it is " +"consquently dealt with." +msgstr "" +"Il concetto su cui si basa honeypot è che essendo un campo nascosto è " +"collocato da qualche parte all'interno di una form che solo i robot possono " +"compilare. Se questo campo contiene un valore quando il modulo viene inviato " +"significa che è stato riempito da un robot e verrà affrontato di conseguenza." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:741 +msgid "" +"Therefore, if the plugin detects that this field has a value when the login " +"form is submitted, then the robot which is attempting to login to your site " +"will be redirected to its localhost address - http://127.0.0.1." +msgstr "" +"Pertanto, se il plugin rileva che questo campo ha un valore quando viene " +"inviato il form di login, il robot che sta tentando di accedere al tuo sito " +"sarà reindirizzato al suo indirizzo localhost - http://127.0.0.1." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:747 +msgid "Login Form Honeypot Settings" +msgstr "Impostazioni Honeypot Login Form" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:758 +msgid "Enable Honeypot On Login Page" +msgstr "Attiva Honeypot sulla pagina di Login" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-brute-force-menu.php:761 +msgid "Check this if you want to enable the honeypot feature for the login page" +msgstr "" +"Seleziona questa casella se vuoi abilitare la funzione honeypot per la pagina " +"di login" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:25 +msgid "System Info" +msgstr "Info Sistema" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:26 +#: ../admin/wp-security-dashboard-menu.php:462 +msgid "Locked IP Addresses" +msgstr "Indirizzi IP bloccati" + +#: ../admin/wp-security-dashboard-menu.php:27 +msgid "AIOWPS Logs" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:77 +msgid "For information, updates and documentation, please visit the" +msgstr "Per informazioni, aggiornamenti e documentazione, vista la pagina " + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:77 +msgid "AIO WP Security & Firewall Plugin" +msgstr "AIO WP Security & Firewall Plugin" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:77 +msgid "Page" +msgstr "." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:78 +msgid "Follow us" +msgstr "Seguici su" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:78 +msgid "" +"Twitter, Google+ or via Email to stay up to date about the new security " +"features of this plugin." +msgstr "" +"Twitter, Google+ o via e-mail per rimanere sempre aggiornato sulle nuove " +"funzionalità di sicurezza di questo plugin." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:94 +msgid "Security Strength Meter" +msgstr "Indicatore Stato Sicurezza" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:123 +msgid "Total Achievable Points: " +msgstr "Totale punti realizzabili:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:125 +msgid "Current Score of Your Site: " +msgstr "Punteggio attuale del tuo sito:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:135 +msgid "Security Points Breakdown" +msgstr "Scomposizione Punti Sicurezza" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:176 +msgid "Spread the Word" +msgstr "Diffondi la Parola" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:179 +msgid "" +"We are working hard to make your WordPress site more secure. Please support " +"us, here is how:" +msgstr "" +"Stiamo lavorando duramente per rendere il vostro sito WordPress più sicuro. " +"Si prega di sostenere, ecco come:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:195 +msgid "Critical Feature Status" +msgstr "Stato Caratteristiche Critiche" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:199 +msgid "" +"Below is the current status of the critical features that you should activate " +"on your site to achieve a minimum level of recommended security" +msgstr "" +"Di seguito è riportato lo stato attuale delle caratteristiche fondamentali " +"che dovresti attivare sul tuo sito per ottenere il livello minimo di " +"sicurezza raccomandata" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:203 +msgid "Admin Username" +msgstr "Nome Utente Admin" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:218 +#: ../admin/wp-security-user-login-menu.php:25 +#: ../classes/grade-system/wp-security-feature-item-manager.php:42 +msgid "Login Lockdown" +msgstr "Blocco Login" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:233 +msgid "File Permission" +msgstr "Permessi File" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:248 +msgid "Basic Firewall" +msgstr "Firewall Base" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:266 +msgid "Last 5 Logins" +msgstr "Ultimi 5 Login" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:283 +msgid "No data found!" +msgstr "Nessun dato|" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:287 +msgid "Last 5 logins summary:" +msgstr "Ultimi 5 accessi:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:291 +msgid "User" +msgstr "Utente" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:292 +msgid "Date" +msgstr "Data" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:293 +msgid "IP" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:314 +msgid "Maintenance Mode Status" +msgstr "Modo Stato Manutenzione" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:318 +msgid "" +"Maintenance mode is currently enabled. Remember to turn it off when you are " +"done" +msgstr "" +"Modalità manutenzione è attualmente abilitata. Ricordati di disattivarla " +"quando hai fatto." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:321 +msgid "Maintenance mode is currently off." +msgstr "Modalità Manutenzione è attualmente disattivata" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:325 +msgid "Maintenance Mode" +msgstr "Modo Manutenzione" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:347 +msgid "Cookie Based Brute Prevention" +msgstr "Prevenzione Brute Force basata su Cookie" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:350 +msgid "Cookie-Based Brute Force" +msgstr "Cookie Brute Force Base." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:354 +#: ../admin/wp-security-dashboard-menu.php:382 +#, php-format +msgid "The %s feature is currently active." +msgstr "La funzione %s è attualmente attiva." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:355 +#: ../admin/wp-security-dashboard-menu.php:383 +msgid "Your new WordPress login URL is now:" +msgstr "Il tuo nuovo URL di login WordPress:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:415 +#: ../admin/wp-security-user-login-menu.php:29 +msgid "Logged In Users" +msgstr "Utenti attualmente loggati." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:425 +msgid "Number of users currently logged in site-wide is:" +msgstr "NIl numero di utenti attualmente collegati a livello di sito è:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:426 +#: ../admin/wp-security-dashboard-menu.php:448 +#: ../admin/wp-security-dashboard-menu.php:476 +#, php-format +msgid "Go to the %s menu to see more details" +msgstr "Vai al menu %s per vedere più dettagli" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:431 +msgid "There are no other site-wide users currently logged in." +msgstr "Non ci sono altri utenti a livello di sito attualmente loggati" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:447 +msgid "Number of users currently logged into your site (including you) is:" +msgstr "Il numero di utenti attualmente loggati nel sito (incluso tu) è:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:453 +msgid "There are no other users currently logged in." +msgstr "Non ci sono altri utenti attualmente loggati." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:470 +msgid "There are no IP addresses currently locked out." +msgstr "Non ci sono indirizzi IP attualmente bloccati" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:475 +msgid "Number of temporarily locked out IP addresses: " +msgstr "Numero di indirizzi IP temporaneamente bloccati:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:518 +msgid "Site Info" +msgstr "Info Sito" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:520 +msgid "Plugin Version" +msgstr "Versione Plugin" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:521 +msgid "WP Version" +msgstr "Versione WP:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:523 +#: ../admin/wp-security-dashboard-menu.php:525 +#: ../admin/wp-security-dashboard-menu.php:621 +msgid "Version" +msgstr "Versione" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:524 +msgid "Table Prefix" +msgstr "Prefisso Tabelle" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:526 +msgid "Session Save Path" +msgstr "Salva Sessione Percorso" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:528 +msgid "Server Name" +msgstr "Nome Server:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:529 +msgid "Cookie Domain" +msgstr "Cookie Dominio" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:530 +msgid "Library Present" +msgstr "Libreria Presente" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:531 +msgid "Debug File Write Permissions" +msgstr "Debug File Permessi di scrittura" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:535 +msgid "PHP Info" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:537 +msgid "PHP Version" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:538 +msgid "PHP Memory Usage" +msgstr "PHP Memoria in uso" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:539 +msgid " MB" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:545 +#: ../admin/wp-security-dashboard-menu.php:553 +#: ../admin/wp-security-dashboard-menu.php:561 +#: ../admin/wp-security-dashboard-menu.php:603 +msgid "N/A" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:548 +msgid "PHP Memory Limit" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:556 +msgid "PHP Max Upload Size" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:564 +msgid "PHP Max Post Size" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:567 +#: ../admin/wp-security-dashboard-menu.php:575 +#: ../admin/wp-security-dashboard-menu.php:584 +#: ../admin/wp-security-dashboard-menu.php:592 +msgid "On" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:569 +#: ../admin/wp-security-dashboard-menu.php:577 +#: ../admin/wp-security-dashboard-menu.php:586 +#: ../admin/wp-security-dashboard-menu.php:594 +msgid "Off" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:572 +msgid "PHP Safe Mode" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:580 +msgid "PHP Allow URL fopen" +msgstr "" + +# @ default +#: ../admin/wp-security-dashboard-menu.php:589 +msgid "PHP Allow URL Include" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:597 +msgid "PHP Display Errors" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:606 +msgid "PHP Max Script Execution Time" +msgstr "" + +# @ default +#: ../admin/wp-security-dashboard-menu.php:606 +msgid "Seconds" +msgstr "Secondi" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:610 +msgid "Active Plugins" +msgstr "Plugin Attivi" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:620 +#: ../admin/wp-security-filesystem-menu.php:130 +#: ../admin/wp-security-filesystem-menu.php:149 +msgid "Name" +msgstr "Nome" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:622 +msgid "Plugin URL" +msgstr "URL Plugin" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:658 +msgid "Currently Locked Out IP Addresses and Ranges" +msgstr "Indirizzi IP e intervalli attualmente bloccati" + +#: ../admin/wp-security-dashboard-menu.php:688 +msgid "View Logs for All In WP Security & Firewall Plugin" +msgstr "Visualizza i Log di All In WP Security & Firewall Plugin" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-dashboard-menu.php:694 +#: ../admin/wp-security-database-menu.php:330 +msgid "Backup Time Interval" +msgstr "Intervallo di Tempo Backup" + +#: ../admin/wp-security-dashboard-menu.php:697 +msgid "--Select a file--" +msgstr "--Seleziona un file--" + +#: ../admin/wp-security-dashboard-menu.php:701 +msgid "Select one of the log files to view the contents" +msgstr "" + +#: ../admin/wp-security-dashboard-menu.php:705 +msgid "View Logs" +msgstr "Visualizza i Log" + +#: ../admin/wp-security-dashboard-menu.php:723 +msgid "Log File Contents For" +msgstr "Contentuo del file di Log per" + +#: ../admin/wp-security-dashboard-menu.php:734 +msgid "Log file is empty!" +msgstr "Il file di Log è vuoto!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:26 +#: ../admin/wp-security-database-menu.php:31 +#: ../classes/grade-system/wp-security-feature-item-manager.php:63 +msgid "DB Backup" +msgstr "Backup DB" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:30 +#: ../classes/grade-system/wp-security-feature-item-manager.php:61 +msgid "DB Prefix" +msgstr "Prefisso DB" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:93 +msgid "Nonce check failed for DB prefix change operation!" +msgstr "Check non riuscito per operazione di cambiamento prefisso tabelle DB!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:101 +msgid "" +"The plugin has detected that it cannot write to the wp-config.php file. This " +"feature can only be used if the plugin can successfully write to the wp-" +"config.php file." +msgstr "" +"Il plugin ha rilevato che non si può scrivere nel file wp-config.php. Questa " +"funzione può essere utilizzata solo se il plug-in è in grado di scrivere " +"correttamente il file wp-config.php." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:114 +msgid "Please enter a value for the DB prefix." +msgstr "Prego inserisci un valore per il prefisso DB." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:123 +msgid "" +"ERROR: The table prefix can only contain numbers, letters, " +"and underscores." +msgstr "" +"ERRORE: Il prefisso della tabella può contenere solo numeri, " +"lettere e caratteri di sottolineatura." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:131 +msgid "Change Database Prefix" +msgstr "Cambia Prefisso Database" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:134 +msgid "" +"Your WordPress DB is the most important asset of your website because it " +"contains a lot of your site's precious information." +msgstr "" +"Il tuo DB WordPress è la risorsa più importante del tuo sito web perché " +"contiene un sacco di informazioni preziose." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:135 +msgid "" +"The DB is also a target for hackers via methods such as SQL injections and " +"malicious and automated code which targets certain tables." +msgstr "" +"Anche Il DB è un bersaglio per gli hacker tramite metodi come injections SQL " +"e codice dannoso e automatizzato che può danneggiare le tabelle." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:136 +msgid "" +"One way to add a layer of protection for your DB is to change the default " +"WordPress table prefix from \"wp_\" to something else which will be difficult " +"for hackers to guess." +msgstr "" +"Un modo per aggiungere un livello di protezione per il vostro DB è quello di " +"cambiare il prefisso delle tabelle di WordPress di default da \"wp_\" a " +"qualcos'altro che sarà difficile per gli hacker individuare." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:137 +msgid "" +"This feature allows you to easily change the prefix to a value of your choice " +"or to a random value set by this plugin." +msgstr "" +"Questa funzione consente di modificare facilmente il prefisso per un valore " +"di tua scelta o su un valore casuale impostato dal plugin." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:143 +msgid "DB Prefix Options" +msgstr "Opzioni Prefisso DB" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:154 +#, php-format +msgid "It is recommended that you perform a %s before using this feature" +msgstr "Si consiglia di eseguire un %s prima di usare questa funzione." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:163 +msgid "Current DB Table Prefix" +msgstr "Prefisso Tabelle DB Attuale" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:169 +msgid "" +"Your site is currently using the default WordPress DB prefix value of \"wp_" +"\". \n" +" To increase your site's security you should " +"consider changing the DB prefix value to another value." +msgstr "" +"Il tuo sito sta usando il valore predefinito \"wp_\". \n" +" Per aumentare la sicurezza dovresti cambiare il " +"valore del prefisso DB a un altro valore." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:176 +msgid "Generate New DB Table Prefix" +msgstr "Genera un Nuovo Prefisso Tabelle DB" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:179 +msgid "" +"Check this if you want the plugin to generate a random 6 character string for " +"the table prefix" +msgstr "" +"Seleziona questo se vuoi che il plugin generi una stringa casuale di 6 " +"caratteri per il prefisso tabella" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:180 +msgid "OR" +msgstr "O" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:182 +msgid "" +"Choose your own DB prefix by specifying a string which contains letters and/" +"or numbers and/or underscores. Example: xyz_" +msgstr "" +"Scegli il prefisso DB specificando una stringa che contiene lettere e/o " +"numeri e/o trattino basso. esempio: xyz_" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:186 +msgid "Change DB Prefix" +msgstr "Cambia Prefisso DB" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:207 +#: ../admin/wp-security-filesystem-menu.php:86 +msgid "Nonce check failed for manual DB backup operation!" +msgstr "Check non riuscito per l'operazione di backup DB manuale!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:224 +msgid "" +"DB Backup was successfully completed! You will receive the backup file via " +"email if you have enabled \"Send Backup File Via Email\", otherwise you can " +"retrieve it via FTP from the following directory:" +msgstr "" +"DB backup è stato completato con successo! Riceverai il file di backup " +"tramite e-mail se hai attivato \"Invia file di Backup Via Email\", altrimenti " +"è possibile recuperarlo tramite FTP dalla seguente directory:" + +# @ default +#: ../admin/wp-security-database-menu.php:226 +msgid "Your DB Backup File location: " +msgstr "La posizione del tuo File di Backup DB" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:234 +msgid "DB Backup failed. Please check the permissions of the backup directory." +msgstr "" +"DB Backup non riuscito. Si prega di controllare i permessi della directory di " +"backup." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:251 +#: ../admin/wp-security-filescan-menu.php:135 +msgid "" +"You entered a non numeric value for the \"backup time interval\" field. It " +"has been set to the default value." +msgstr "" +"È stato immesso un valore non numerico per il campo \"intervallo di tempo di " +"backup\". È stato impostato il valore di default." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:258 +msgid "" +"You entered a non numeric value for the \"number of backup files to keep\" " +"field. It has been set to the default value." +msgstr "" +"È stato immesso un valore non numerico per il campo \"numero file di backup " +"da conservare \". E 'stato impostato il valore di default." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:265 +#: ../admin/wp-security-filescan-menu.php:165 +#: ../admin/wp-security-user-login-menu.php:117 +msgid "" +"You have entered an incorrect email address format. It has been set to your " +"WordPress admin email as default." +msgstr "" +"È stato immesso un formato di indirizzo email errato. E 'stato impostato la " +"tua email amministratore WordPress predefinita." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:298 +msgid "Manual Backup" +msgstr "Backup Manuale" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:304 +msgid "To create a new DB backup just click on the button below." +msgstr "" +"Per creare un nuovo backup DB è sufficiente cliccare sul pulsante qui sotto." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:307 +msgid "Create DB Backup Now" +msgstr "Crea nuovo Backup DB" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:311 +msgid "Automated Scheduled Backups" +msgstr "Programma Automazione Backup" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:323 +msgid "Enable Automated Scheduled Backups" +msgstr "Attiva Programmazione Automatica Backup" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:326 +msgid "" +"Check this if you want the system to automatically generate backups " +"periodically based on the settings below" +msgstr "" +"Seleziona questa casella se desideri che il sistema generari automaticamente " +"i backup periodicamente in base alle impostazioni di seguito" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:333 +#: ../admin/wp-security-filescan-menu.php:281 +msgid "Hours" +msgstr "Ore" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:334 +#: ../admin/wp-security-filescan-menu.php:282 +msgid "Days" +msgstr "Giorni" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:335 +#: ../admin/wp-security-filescan-menu.php:283 +msgid "Weeks" +msgstr "Settimane" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:337 +msgid "Set the value for how often you would like an automated backup to occur" +msgstr "" +"Impostare il valore per quanto spesso si desidera creare un backup automatico" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:341 +msgid "Number of Backup Files To Keep" +msgstr "Numero di file di backup da conservare" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:343 +msgid "" +"Thie field allows you to choose the number of backup files you would like to " +"keep in the backup directory" +msgstr "" +"Il campo consente di scegliere il numero di file di backup che si desidera " +"mantenere nella directory di backup" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:347 +msgid "Send Backup File Via Email" +msgstr "Invia File di Backup via Email" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:350 +msgid "" +"Check this if you want the system to email you the backup file after a DB " +"backup has been performed" +msgstr "" +"Seleziona questa casella se vuoi che il File di backup venga inviato tramite " +"email quando viene eseguita una copia di backup DB" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:352 +#: ../admin/wp-security-filescan-menu.php:327 +#: ../admin/wp-security-user-login-menu.php:235 +msgid "Enter an email address" +msgstr "Inserisci Indirizzo Email" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:383 +msgid "Error - Could not get tables or no tables found!" +msgstr "Errore - Impossibile ottenere tabelle o nessuna tabella trovata!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:387 +msgid "Starting DB prefix change operations....." +msgstr "Operazioni Cambio Impostazioni Prefisso DB..." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:389 +#, php-format +msgid "" +"Your WordPress system has a total of %s tables and your new DB prefix will " +"be: %s" +msgstr "" +"Il tuo sito WordPress ha un totale di%s tabelle ed il nuovo prefisso DB sarà:" +"%s" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:395 +#: ../classes/wp-security-utility.php:225 +msgid "" +"Failed to make a backup of the wp-config.php file. This operation will not go " +"ahead." +msgstr "" +"Impossibile effettuare un backup del file wp-config.php. Questa operazione " +"non andrà avanti." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:399 +msgid "A backup copy of your wp-config.php file was created successfully!" +msgstr "Una copia di backup del file wp-config.php è stato creato con successo!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:421 +#, php-format +msgid "%s table name update failed" +msgstr "%s aggiornamento nome tabelle fallito" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:433 +#, php-format +msgid "Please change the prefix manually for the above tables to: %s" +msgstr "" +"Si prega di cambiare il prefisso manualmente per le tabelle di cui sopra a:%s" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:436 +#, php-format +msgid "%s tables had their prefix updated successfully!" +msgstr "%s tabelle hanno il loro prefisso aggiornato con successo!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:452 +msgid "wp-config.php file was updated successfully!" +msgstr "wp-config.php file è stato aggiornato con successo!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:455 +#, php-format +msgid "" +"The \"wp-config.php\" file was not able to be modified. Please modify this " +"file manually using your favourite editor and search \n" +" for variable \"$table_prefix\" and assign the following " +"value to that variable: %s" +msgstr "" +"Non è stato possibile modificare il file \"wp-config.php\". Modifica il file " +"manualmente usando il tuo editor preferito, cerca \n" +" la variabile \"$table_prefix\" e assegna il seguente " +"valore a tale variabile: %s" + +#: ../admin/wp-security-database-menu.php:468 +#: ../admin/wp-security-database-menu.php:490 +#, php-format +msgid "Update of table %s failed: unable to change %s to %s" +msgstr "Aggiornamento della tabella %s fallito: non riesco a cambiare %s in %s" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:472 +msgid "" +"The options table records which had references to the old DB prefix were " +"updated successfully!" +msgstr "" +"Le opzioni dei record della tabella che avevano i riferimenti al vecchio " +"prefisso DB sono state aggiornate con successo!" + +#: ../admin/wp-security-database-menu.php:494 +#, php-format +msgid "" +"The %s table records which had references to the old DB prefix were updated " +"successfully!" +msgstr "" +"I record della tabella %s che avevano riferimenti al vecchio prefisso di " +"Database sono stati aggiornati con successo!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:523 +#, php-format +msgid "" +"Error updating user_meta table where new meta_key = %s, old meta_key = %s and " +"user_id = %s." +msgstr "" +"Errore di aggiornamento della tabella user_meta dove nuovo meta_key = %s, " +"vecchio meta_key = %s e user_id = %s." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:528 +msgid "" +"The usermeta table records which had references to the old DB prefix were " +"updated successfully!" +msgstr "" +"I record della tabella usermeta che avevano riferimenti al vecchio prefisso " +"DB sono state aggiornate con successo!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-database-menu.php:530 +msgid "DB prefix change tasks have been completed." +msgstr "Sono state completate le attività di DB del cambiamento di prefisso." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:24 +#: ../classes/grade-system/wp-security-feature-item-manager.php:108 +msgid "File Change Detection" +msgstr "Rilevamento Modifiche File" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:25 +msgid "Malware Scan" +msgstr "Scansione Malware" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:26 +msgid "DB Scan" +msgstr "Scansione DataBase" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:95 +msgid "There have been no file changes since the last scan." +msgstr "Non ci sono state modifiche al file dopo l'ultima scansione." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:105 +msgid "Nonce check failed for manual file change detection scan operation!" +msgstr "" +"Check non riuscito per la scansione manulale di rilevamento modifica dei file!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:112 +msgid "" +"The plugin has detected that this is your first file change detection scan. " +"The file details from this scan will be used to detect file changes for " +"future scans!" +msgstr "" +"Il plugin ha rilevato che questa è la tua prima scansione di rilevamento " +"delle modifiche dei file. I dettagli dei file da questa scansione verranno " +"utilizzati per rilevare i cambiamenti dei file per le scansioni future!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:114 +msgid "Scan Complete - There were no file changes detected!" +msgstr "Scansione Completa - Non sono state rilevate variazioni ai file!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:203 +msgid "" +"NEW SCAN COMPLETED: The plugin has detected that you have made changes to the " +"\"File Types To Ignore\" or \"Files To Ignore\" fields.\n" +" In order to ensure that future scan results are accurate, " +"the old scan data has been refreshed." +msgstr "" +"NUOVA SCANSIONE COMPLETATA: Il plugin ha rilevato che sono state apportate " +"modifiche alla cartella \"Tipi di file da ignorare\" o\"File da ignorare " +"\"campi. \n" +" Al fine di garantire che i risultati delle scansioni " +"future siano precisi, i dati della scansione vecchia sono stati aggiornati." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:213 +msgid "" +"All In One WP Security & Firewall has detected that there was a change in " +"your host's files." +msgstr "" +"All In One WP Security & firewall ha rilevato che c'è stato un cambiamento " +"nei file del proprio host." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:215 +msgid "View Scan Details & Clear This Message" +msgstr "Visualizza i dettagli di scansione e cancella il messaggio" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:224 +msgid "" +"If given an opportunity hackers can insert their code or files into your " +"system which they can then use to carry out malicious acts on your site." +msgstr "" +"Esiste la possibilità che hacker possano inserire il loro codice, nei file o " +"nel vostro sistema, da utilizzare poi per eseguire operazioni dannose sul tuo " +"sito." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:225 +msgid "" +"Being informed of any changes in your files can be a good way to quickly " +"prevent a hacker from causing damage to your website." +msgstr "" +"Essere informati di eventuali cambiamenti nei file può essere un buon modo " +"per evitare rapidamente che un hacker possa causare danni al tuo sito web." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:226 +msgid "" +"In general, WordPress core and plugin files and file types such as \".php\" " +"or \".js\" should not change often and when they do, it is important that you " +"are made aware when a change occurs and which file was affected." +msgstr "" +"In generale, i file del cuore di WordPress dei plugin e tipi di file come ad " +"esempio \".php\" o \".js\" non dovrebbero cambiare spesso e, quando succede, " +"è importante sapere quando si verifica un cambiamento e quale file è stata " +"influenzato." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:227 +msgid "" +"The \"File Change Detection Feature\" will notify you of any file change " +"which occurs on your system, including the addition and deletion of files by " +"performing a regular automated or manual scan of your system's files." +msgstr "" +"La funzione \"Rilevamento Modifiche File\" comunicherà qualsiasi modifica di " +"file che si verifica sul sistema, tra cui l'aggiunta e la cancellazione dei " +"file per effettuare una normale scansione automatica o manuale dei file del " +"proprio sistema." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:228 +msgid "" +"This feature also allows you to exclude certain files or folders from the " +"scan in cases where you know that they change often as part of their normal " +"operation. (For example log files and certain caching plugin files may change " +"often and hence you may choose to exclude such files from the file change " +"detection scan)" +msgstr "" +"Questa funzione consente inoltre di escludere determinati file o cartelle " +"dalla scansione se si sa che cambiano spesso come parte del loro normale " +"funzionamento. (Ad esempio i file di log e di alcuni file dei plugin di " +"caching possono cambiare spesso e quindi si può scegliere di escludere tali " +"file dalla scansione)" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:233 +msgid "Manual File Change Detection Scan" +msgstr "Scansione Rilevamento Modifiche File Manuale" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:239 +msgid "" +"To perform a manual file change detection scan click on the button below." +msgstr "" +"Per eseguire una scansione manuale di rilevamento modifica file clicca sul " +"pulsante qui sotto." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:242 +msgid "Perform Scan Now" +msgstr "Esegui scansione Ora" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:246 +msgid "View Last Saved File Change Results" +msgstr "Mostra l'ultimo salvataggio del Risultato di Modifiche File" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:252 +msgid "" +"Click the button below to view the saved file change results from the last " +"scan." +msgstr "" +"Clicca sul pulsante qui sotto per visualizzare i risultati di modifica del " +"file salvato dall'ultima scansione." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:255 +msgid "View Last File Change" +msgstr "Mostra Ultima Modifica File" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:259 +msgid "File Change Detection Settings" +msgstr "Impostazioni Rilevamento Modifiche File" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:271 +msgid "Enable Automated File Change Detection Scan" +msgstr "Attiva Scansione Automatica Rilevamento Modifiche File" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:274 +msgid "" +"Check this if you want the system to automatically/periodically scan your " +"files to check for file changes based on the settings below" +msgstr "" +"Seleziona questa casella se vuoi che il sistema esegua in automatico/" +"periodicamente la scansione dei file per verificare eventuali modifiche in " +"base alle impostazioni di seguito" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:278 +msgid "Scan Time Interval" +msgstr "Intervallo Tempo Scansione" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:285 +msgid "Set the value for how often you would like a scan to occur" +msgstr "" +"Impostare il valore per quanto spesso si desidera creare una scansione di " +"verifica" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:289 +msgid "File Types To Ignore" +msgstr "Tipi di file da ignorare" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:292 +msgid "" +"Enter each file type or extension on a new line which you wish to exclude " +"from the file change detection scan." +msgstr "" +"Immettere ogni tipo di file o estensione su una nuova linea che si desidera " +"escludere dalla scansione di rilevamento delle modifiche dei file." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:296 +msgid "" +"You can exclude file types from the scan which would not normally pose any " +"security threat if they were changed. These can include things such as image " +"files." +msgstr "" +"È possibile escludere tipi di file dalla scansione, che normalmente non " +"pongono alcuna minaccia per la sicurezza se sono stati modificati. Questi " +"possono includere cose come file di immagine." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:297 +msgid "" +"Example: If you want the scanner to ignore files of type jpg, png, and bmp, " +"then you would enter the following:" +msgstr "" +"Esempio: Se si desidera che lo scanner ignori i file di tipo jpg, png, bmp, " +"immettere il seguente:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:298 +msgid "jpg" +msgstr "jpg" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:299 +msgid "png" +msgstr "png" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:300 +msgid "bmp" +msgstr "bmp" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:306 +msgid "Files/Directories To Ignore" +msgstr "File/Directory Da Ignorare" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:309 +msgid "" +"Enter each file or directory on a new line which you wish to exclude from the " +"file change detection scan." +msgstr "" +"Inserisci ogni file o directory, che si desidera escludere dalla scansione di " +"rilevamento delle modifiche dei file, su una nuova linea." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:313 +msgid "" +"You can exclude specific files/directories from the scan which would not " +"normally pose any security threat if they were changed. These can include " +"things such as log files." +msgstr "" +"È possibile escludere file/directory specifici dalla scansione, che " +"normalmente non pongono alcuna minaccia per la sicurezza se sono stati " +"modificati. Questi possono includere cose come i file di log." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:314 +msgid "" +"Example: If you want the scanner to ignore certain files in different " +"directories or whole directories, then you would enter the following:" +msgstr "" +"Esempio: Se si desidera che lo scanner ignori determinati file in diverse " +"directory o intere directory, immettere il seguente:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:315 +msgid "cache/config/master.php" +msgstr "cache/config/master.php" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:316 +msgid "somedirectory" +msgstr "nomedirectory" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:322 +msgid "Send Email When Change Detected" +msgstr "Invia e-mail quando viene rilevata una modifica" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:325 +msgid "" +"Check this if you want the system to email you if a file change was detected" +msgstr "" +"Seleziona questa casella se vuoi ricevere un'email ogni volta che viene " +"rilevata una modifica" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:343 +msgid "What is Malware?" +msgstr "Che cosa è un Malware?" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:344 +msgid "" +"The word Malware stands for Malicious Software. It can consist of things like " +"trojan horses, adware, worms, spyware and any other undesirable code which a " +"hacker will try to inject into your website." +msgstr "" +"La parola Malware è sinonimo di software dannoso. Esso può essere costituito " +"da cose come trojan horses, adware, worm, spyware e qualsiasi altro codice " +"indesiderato che un hacker cercherà di iniettare nel tuo sito web." + +#: ../admin/wp-security-filescan-menu.php:345 +msgid "" +"Often when malware code has been inserted into your site you will normally " +"not notice anything out of the ordinary based on appearances, but it can have " +"a dramatic effect on your site's search ranking." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:346 +msgid "" +"This is because the bots and spiders from search engines such as Google have " +"the capability to detect malware when they are indexing the pages on your " +"site, and consequently they can blacklist your website which will in turn " +"affect your search rankings." +msgstr "" +"Questo perché i bot e spider dei motori di ricerca come Google hanno la " +"capacità di rilevare il malware quando vengono a indicizzare le pagine del " +"tuo sito, e di conseguenza possono mettere in blacklist il tuo sito web e di " +"conseguenza influenzare il posizionamento sui motori." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:350 +msgid "Scanning For Malware" +msgstr "Scansione ricerca Malware" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:351 +msgid "" +"Due to the constantly changing and complex nature of Malware, scanning for " +"such things using a standalone plugin will not work reliably. This is " +"something best done via an external scan of your site regularly." +msgstr "" +"A causa della natura costantemente mutevole e complessa di malware, la " +"scansione per queste cose usando un plugin standalone non funziona " +"correttamente. Questo funziona meglio tramite una scansione esterna del " +"vostro sito fatta regolarmente." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:352 +msgid "" +"This is why we have created an easy-to-use scanning service which is hosted " +"off our own server which will scan your site for malware once every day and " +"notify you if it finds anything." +msgstr "" +"Per questo motivo abbiamo creato un servizio di scansione di facile utilizzo, " +"che viene ospitato fuori sul nostro server, che esegue la scansione del sito " +"per il malware una volta al giorno e notifica se trova qualche cosa che non " +"va." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:353 +msgid "When you sign up for this service you will get the following:" +msgstr "Iscrivendoti a questo servizio otterrai le seguenti caratteristiche:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:355 +msgid "Automatic Daily Scan of 1 Website" +msgstr "Scansione quotidiana automatica di 1 Sito Web" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:356 +msgid "Automatic Malware & Blacklist Monitoring" +msgstr "Monitoraggio Automatico Malware & Blacklist" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:357 +msgid "Automatic Email Alerting" +msgstr "Alert Automatico via Email" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:358 +msgid "Site uptime monitoring" +msgstr "Monitoraggio uptime del sito" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:359 +msgid "Site response time monitoring" +msgstr "Monitoraggio del tempo di risposta Sito" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:360 +msgid "Malware Cleanup" +msgstr "Pulizia Malware" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:361 +msgid "Blacklist Removal" +msgstr "Rimozione Blacklist" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:362 +msgid "No Contract (Cancel Anytime)" +msgstr "Nessun contratto (Annulli in qualsiasi momento)" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:364 +#, php-format +msgid "To learn more please %s." +msgstr "Per ulteriori informazioni %s." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:374 +msgid "" +"This feature performs a basic database scan which will look for any common " +"suspicious-looking strings and javascript and html code in some of the " +"Wordpress core tables." +msgstr "" +"Questa funzione esegue una scansione del database di base che andrà a cercare " +"tutte le stringhe comuni, javascript e codice html sospetti in alcune delle " +"tabelle di base Wordpress." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:391 +msgid "Nonce check failed for manual db scan operation!" +msgstr "" +"Selezione non riuscita per l'operazione di scansione db manuale!\n" +"ecco Tutti i Dettagli:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:402 +msgid "" +"This feature will perform a basic database scan which will look for any " +"common suspicious-looking strings and javascript and html code in some of the " +"Wordpress core tables." +msgstr "" +"Questa funzione esegue una scansione del data base per cercare eventuali " +"stringhe comuni, javascript e codice html, dall'aspetto sospetto in alcune " +"delle tabelle di base Wordpress." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:403 +msgid "" +"If the scan finds anything it will list all \"potentially\" malicious results " +"but it is up to you to verify whether a result is a genuine example of a " +"hacking attack or a false positive." +msgstr "" +"Se la scansione trova qualcosa elencherà tutti i risultati \"potenzialmente\" " +"dannosi, ma sta a te poi verificare se il risultato è un vero e proprio " +"esempio di un attacco di hacking o un falso positivo." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:404 +msgid "" +"As well as scanning for generic strings commonly used in malicious cases, " +"this feature will also scan for some of the known \"pharma\" hack entries and " +"if it finds any it will automatically delete them." +msgstr "" +"Così come la scansione per le stringhe generiche comunemente utilizzate in " +"casi maligni, questa caratteristica farà anche la scansione per alcune delle " +"note voci \"pharma\" hack e se ne rileva le cancellerà automaticamente." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:405 +msgid "" +"The WordPress core tables scanned by this feature include: posts, postmeta, " +"comments, links, users, usermeta, and options tables." +msgstr "" +"Le tabelle di base di WordPress scansionate da questa funzionalità includono: " +"posts, postmeta, comments, links, users, usermeta, e options." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:410 +msgid "Database Scan" +msgstr "Scansione Database" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:416 +msgid "To perform a database scan click on the button below." +msgstr "Per eseguire una scansione del database clicca sul pulsante qui sotto." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:419 +msgid "Perform DB Scan" +msgstr "Esegui Scansione DB" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:452 +msgid "Latest File Change Scan Results" +msgstr "Ultimi Risultati scansione di modifica file" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:461 +msgid "The following files were added to your host." +msgstr "I seguenti file sono stati aggiunti al tu Host." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:464 +#: ../admin/wp-security-filescan-menu.php:485 +#: ../admin/wp-security-filescan-menu.php:509 +#: ../admin/wp-security-settings-menu.php:27 +#: ../admin/wp-security-settings-menu.php:28 +msgid "File" +msgstr "File" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:465 +#: ../admin/wp-security-filescan-menu.php:486 +#: ../admin/wp-security-filescan-menu.php:510 +msgid "File Size" +msgstr "Dimensione File" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:466 +#: ../admin/wp-security-filescan-menu.php:487 +#: ../admin/wp-security-filescan-menu.php:511 +msgid "File Modified" +msgstr "Modifica File" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:482 +msgid "The following files were removed from your host." +msgstr "I seguenti file sono stati rimossi dal tuo host." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filescan-menu.php:506 +msgid "The following files were changed on your host." +msgstr "I seguenti file sono stati modificati nel tuo host." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:26 +#: ../classes/grade-system/wp-security-feature-item-manager.php:67 +msgid "File Permissions" +msgstr "Permessi File" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:27 +msgid "PHP File Editing" +msgstr "Modifica File PHP" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:28 +msgid "WP File Access" +msgstr "Accesso File WP" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:29 +msgid "Host System Logs" +msgstr "Registro Sistema Host" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:96 +#, php-format +msgid "The permissions for %s were succesfully changed to %s" +msgstr "I permessi perr %s sono stati modificati con successo a %s" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:100 +#, php-format +msgid "Unable to change permissions for %s!" +msgstr "Impossibile modificare i permessi per %s!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:106 +msgid "File Permissions Scan" +msgstr "Permessi Scansione File" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:109 +msgid "" +"Your WordPress file and folder permission settings govern the accessability " +"and read/write privileges of the files and folders which make up your WP " +"installation." +msgstr "" +"Il tuoi file di WordPress e le impostazioni delle autorizzazioni delle " +"cartelle regolano i privilegi di accesso e lettura/scrittura dei file e delle " +"cartelle che compongono l'installazione WP." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:110 +msgid "" +"Your WP installation already comes with reasonably secure file permission " +"settings for the filesystem." +msgstr "" +"La tua installazione di WP viene fornita già con le impostazioni di " +"autorizzazione file ragionevolmente sicure per il filesystem." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:111 +msgid "" +"However, sometimes people or other plugins modify the various permission " +"settings of certain core WP folders or files such that they end up making " +"their site less secure because they chose the wrong permission values." +msgstr "" +"Tuttavia, a volte la gente o altri plugin, modificano le varie impostazioni " +"dei permessi di alcune cartelle o file WP fondamentali e lo rendono meno " +"sicuro perché hanno scelto i valori dei permessi sbagliati." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:112 +msgid "" +"This feature will scan the critical WP core folders and files and will " +"highlight any permission settings which are insecure." +msgstr "" +"Questa funzione consente di eseguire la scansione delle cartelle di base WP e " +"file critici e metterà in evidenza le impostazioni di autorizzazione che sono " +"insicure." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:118 +msgid "WP Directory and File Permissions Scan Results" +msgstr "Risultati scansione Directory WP e permessi dei file" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:131 +#: ../admin/wp-security-filesystem-menu.php:150 +msgid "File/Folder" +msgstr "File/Cartelle" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:132 +#: ../admin/wp-security-filesystem-menu.php:151 +msgid "Current Permissions" +msgstr "Permessi Attuali" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:133 +#: ../admin/wp-security-filesystem-menu.php:152 +msgid "Recommended Permissions" +msgstr "Permessi Raccomandati" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:134 +#: ../admin/wp-security-filesystem-menu.php:153 +msgid "Recommended Action" +msgstr "Azione Raccomandata" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:191 +msgid "Your PHP file editing settings were saved successfully." +msgstr "" +"Le impostazioni di editing dei file PHP sono state salvate con successo." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:195 +msgid "" +"Operation failed! Unable to modify or make a backup of wp-config.php file!" +msgstr "" +"Operazione non riuscita! Impossibile modificare o fare un backup del file wp-" +"config.php!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:201 +#: ../classes/grade-system/wp-security-feature-item-manager.php:69 +msgid "File Editing" +msgstr "Modifica File" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:204 +msgid "" +"The Wordpress Dashboard by default allows administrators to edit PHP files, " +"such as plugin and theme files." +msgstr "" +"La Bacheca Wordpress di default consente agli amministratori di modificare i " +"file PHP, come plugin e file dei temi." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:205 +msgid "" +"This is often the first tool an attacker will use if able to login, since it " +"allows code execution." +msgstr "" +"Questo è spesso il primo strumento che chi attacca il sito utilizzerà, se in " +"grado di accedere, in quanto permette l'esecuzione di codice." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:206 +msgid "" +"This feature will disable the ability for people to edit PHP files via the " +"dashboard." +msgstr "" +"Questa funzione consente di disattivare la possibilità per le persone di " +"modificare i file PHP tramite la bacheca." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:212 +msgid "Disable PHP File Editing" +msgstr "Disabilità Modifica File PHP" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:224 +msgid "Disable Ability To Edit PHP Files" +msgstr "Disattivare la possibilità di modificare i file PHP" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:227 +msgid "" +"Check this if you want to remove the ability for people to edit PHP files via " +"the WP dashboard" +msgstr "" +"Seleziona questa casella se vuoi rimuovere la possibilità per le persone di " +"modificare i file PHP tramite la bacheca WP" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:271 +msgid "" +"You have successfully saved the Prevent Access to Default WP Files " +"configuration." +msgstr "" +"Hai salvato con successo di impedire l'accesso al file di configurazione di " +"default WP." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:280 +msgid "WordPress Files" +msgstr "File WordPress" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:283 +#, php-format +msgid "" +"This feature allows you to prevent access to files such as %s, %s and %s " +"which are delivered with all WP installations." +msgstr "" +"Questa funzione consente di impedire l'accesso ai file come %s, %s e %s che " +"vengono inseriti in tutte le installazioni WP.." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:284 +msgid "" +"By preventing access to these files you are hiding some key pieces of " +"information (such as WordPress version info) from potential hackers." +msgstr "" +"Impedendo l'accesso a questi file si nascondono alcune informazioni " +"fondamentali (come info sulla versione WordPress) da potenziali hacker." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:289 +msgid "Prevent Access to Default WP Files" +msgstr "Impedire l'accesso ai file di WP di default" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:300 +msgid "Prevent Access to WP Default Install Files" +msgstr "Impedire l'accesso ai file di installazione WP di default" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:303 +msgid "" +"Check this if you want to prevent access to readme.html, license.txt and wp-" +"config-sample.php." +msgstr "" +"Seleziona questa casella per impedire l'accesso a readme.html, license.txt e " +"wp-config-sample.php." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:307 +msgid "Save Setting" +msgstr "Salva Impostazioni" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:331 +msgid "System Logs" +msgstr "Registro Sistema" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:334 +msgid "" +"Sometimes your hosting platform will produce error or warning logs in a file " +"called \"error_log\"." +msgstr "" +"A volte la vostra piattaforma di hosting produrrà errore o log di avviso in " +"un file chiamato \"error_log\"." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:335 +msgid "" +"Depending on the nature and cause of the error or warning, your hosting " +"server can create multiple instances of this file in numerous directory " +"locations of your WordPress installation." +msgstr "" +"A seconda della natura e la causa di errore o di avvertimento, il server " +"dell'hosting è in grado di creare più istanze di questo file in numerose " +"posizioni di directory della vostra installazione WordPress." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:336 +msgid "" +"By occassionally viewing the contents of these logs files you can keep " +"informed of any underlying problems on your system which you might need to " +"address." +msgstr "" +"Di tanto in tanto la visualizzazione del contenuto di questi file di log può " +"darci informazioni di eventuali problemi di fondo sul sistema che si potrebbe " +"aver bisogno di affrontare." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:342 +msgid "View System Logs" +msgstr "Visualizza registri di sistema" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:347 +msgid "Enter System Log File Name" +msgstr "Inserisci il Nome File Registro Sistema" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:349 +msgid "Enter your system log file name. (Defaults to error_log)" +msgstr "Immettere il nome del file di log di sistema. (Predefinito è error_log)" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:352 +msgid "View Latest System Logs" +msgstr "Visualizza ultimi registri di sistema" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:354 +msgid "Loading..." +msgstr "Caricamento..." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:371 +msgid "No system logs were found!" +msgstr "Nessun log di sistema sono stato trovato!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:424 +msgid "Set Recommended Permissions" +msgstr "Imposta Permessi Consigliati" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:430 +msgid "No Action Required" +msgstr "Nessuna Azione Richiesta" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-filesystem-menu.php:470 +#, php-format +msgid "Showing latest entries of error_log file: %s" +msgstr "Risultati delle ultime voci di error_log file: %s" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:28 +msgid "Basic Firewall Rules" +msgstr "Regole Firewall Base" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:29 +msgid "Additional Firewall Rules" +msgstr "Regole Firewall Aggiuntive" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:30 +msgid "5G Blacklist Firewall Rules" +msgstr "Regole Blacklist Firewall 5G" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:31 +msgid "Internet Bots" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:32 +msgid "Prevent Hotlinks" +msgstr "Prevenzione Hotlinks" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:33 +msgid "404 Detection" +msgstr "Rilevamento 404" + +#: ../admin/wp-security-firewall-menu.php:34 +msgid "Custom Rules" +msgstr "Regole personalizzate" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:118 +#: ../admin/wp-security-firewall-menu.php:692 +#: ../admin/wp-security-spam-menu.php:104 ../admin/wp-security-spam-menu.php:317 +#: ../admin/wp-security-user-registration-menu.php:96 +msgid "Settings were successfully saved" +msgstr "Impostazioni salvate con successo" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:127 +#: ../admin/wp-security-firewall-menu.php:532 +msgid "Firewall Settings" +msgstr "Impostazioni Firewall" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:134 +#, php-format +msgid "" +"This should not have any impact on your site's general functionality but if " +"you wish you can take a %s of your .htaccess file before proceeding." +msgstr "" +"Questo non dovrebbe avere alcun impatto sulla funzionalità generale del tuo " +"sito, ma se vuoi puoi creare un %s del file .htaccess prima di procedere." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:135 +msgid "" +"The features in this tab allow you to activate some basic firewall security " +"protection rules for your site." +msgstr "" +"Le funzionalità di questa scheda consentono di attivare alcune regole di " +"protezione di sicurezza del firewall di base per il sito." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:136 +msgid "" +"The firewall functionality is achieved via the insertion of special code into " +"your currently active .htaccess file." +msgstr "" +"La funzionalità firewall è ottenuta tramite l'inserimento di codice speciale " +"nel file attualmente attivo .htaccess." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:146 +msgid "Attention:" +msgstr "Attenzione:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:147 +msgid "Currently the " +msgstr "Attualmente " + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:147 +#: ../admin/wp-security-firewall-menu.php:194 +msgid "Enable Pingback Protection" +msgstr "Attiva Protezione Pingback" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:147 +msgid " is active." +msgstr "è abilitata" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:148 +msgid "" +"Please beware that if you are using the WordPress iOS App, then you will need " +"to deactivate this feature in order for the app to work properly." +msgstr "" +"Fa attenzione che se utilizzi App WordPress iOS, allora dovrai disattivare " +"questa funzione in modo che l'applicazione funzioni correttamente." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:156 +msgid "Basic Firewall Settings" +msgstr "Impostazioni Firewall Base" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:164 +msgid "Enable Basic Firewall Protection" +msgstr "Attiva Protezione Firewall Base" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:167 +msgid "Check this if you want to apply basic firewall protection to your site." +msgstr "" +"Seleziona questa casella se vuoi applicare la protezione di base del firewall " +"per il sito." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:171 +msgid "" +"This setting will implement the following basic firewall protection " +"mechanisms on your site:" +msgstr "" +"Questa impostazione applicherà i seguenti meccanismi di base di protezione " +"firewall sul tuo sito:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:172 +msgid "1) Protect your htaccess file by denying access to it." +msgstr "1) Proteggi il tuo .htaccess negando l'accesso ad esso." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:173 +msgid "2) Disable the server signature." +msgstr "2) Disabilitare la firma del server." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:174 +msgid "3) Limit file upload size (10MB)." +msgstr "3) Limite dimensione file di upload (10 MB)." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:175 +msgid "4) Protect your wp-config.php file by denying access to it." +msgstr "4) Proteggere il file wp-config.php negando l'accesso ad esso." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:176 +msgid "" +"The above firewall features will be applied via your .htaccess file and " +"should not affect your site's overall functionality." +msgstr "" +"Le funzioni di firewall di cui sopra verranno applicate tramite il file ." +"htaccess e non dovrebbero pregiudicare la funzionalità complessiva del tuo " +"sito." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:177 +msgid "" +"You are still advised to take a backup of your active .htaccess file just in " +"case." +msgstr "" +"sei invitato ancora ad eseguire una copia di backup dell'attuale file ." +"htaccess per ogni evenienza." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:186 +msgid "WordPress Pingback Vulnerability Protection" +msgstr "Protezione Vulnerabilità WordPress Pingback" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:197 +msgid "" +"Check this if you are not using the WP XML-RPC functionality and you want to " +"enable protection against WordPress pingback vulnerabilities." +msgstr "" +"Seleziona questo se non utilizzi le funzioni WP XML-RPC e vuoi attivare la " +"protezione per la vulnerabilità WordPress pingback." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:201 +msgid "" +"This setting will add a directive in your .htaccess to disable access to the " +"WordPress xmlrpc.php file which is responsible for the XML-RPC functionality " +"such as pingbacks in WordPress." +msgstr "" +"Questa impostazione aggiunge una direttiva nel file .htaccess per " +"disabilitare l'accesso al file xmlrpc.php WordPress che serve per la " +"funzionalità di XML-RPC come pingbacks in WordPress." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:202 +msgid "" +"Hackers can exploit various pingback vulnerabilities in the WordPress XML-RPC " +"API in a number of ways such as:" +msgstr "" +"Gli hacker possono sfruttare le varie vulnerabilità pingback in WordPress API " +"XML-RPC in vari modi, ad esempio:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:203 +msgid "1) Denial of Service (DoS) attacks" +msgstr "1) Attacchi Denial di Service (DoS)" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:204 +msgid "2) Hacking internal routers." +msgstr "2) Hacking router interni." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:205 +msgid "3) Scanning ports in internal networks to get info from various hosts." +msgstr "" +"3) Scansione porte in reti interne per ottenere informazioni da vari host." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:206 +msgid "" +"Apart from the security protection benefit, this feature may also help reduce " +"load on your server, particularly if your site currently has a lot of " +"unwanted traffic hitting the XML-RPC API on your installation." +msgstr "" +"Oltre al beneficio di protezione di sicurezza, questa funzione può anche " +"contribuire a ridurre il carico sul server, in particolare se il vostro sito " +"ha attualmente un sacco di traffico indesiderato che colpisce l'API XML-RPC " +"sulla tua installazione." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:207 +msgid "" +"NOTE: You should only enable this feature if you are not currently using the " +"XML-RPC functionality on your WordPress installation." +msgstr "" +"NOTA: Si deve attivare questa funzione solo se non si sta utilizzando la " +"funzionalità XML-RPC di WordPress." + +#: ../admin/wp-security-firewall-menu.php:216 +#: ../classes/grade-system/wp-security-feature-item-manager.php:81 +msgid "Block Accesss to Debug Log File" +msgstr "Blocca di accessi al Log file Debug" + +#: ../admin/wp-security-firewall-menu.php:224 +msgid "Block Access to debug.log File" +msgstr "Blocca gli accessi al file debug.log" + +#: ../admin/wp-security-firewall-menu.php:227 +msgid "" +"Check this if you want to block access to the debug.log file that WordPress " +"creates when debug logging is enabled." +msgstr "" +"Seleziona questo se vuoi bloccare gli accessi al file debug.log che WordPress " +"crea quando i log di debug sono abilitati." + +#: ../admin/wp-security-firewall-menu.php:231 +msgid "" +"WordPress has an option to turn on the debug logging to a file located in wp-" +"content/debug.log. This file may contain sensitive information." +msgstr "" +"WordPress ha un'opzione per abilitare i log di debug in un file che si trova " +"in wp-content/debug.log. Questo file può contenere informazioni sensibili." + +#: ../admin/wp-security-firewall-menu.php:232 +msgid "" +"Using this optoin will block external access to this file. You can still " +"access this file by logging into your site via FTP" +msgstr "" +"L'uso di questa opzione bloccherà gli accessi esterni a questo file. Potrai " +"ancora accedere a questo file collegandoti al tuo sito tramite FTP" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:240 +msgid "Save Basic Firewall Settings" +msgstr "Salva Impostazioni Base Firewall" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:312 +msgid "" +"You have successfully saved the Additional Firewall Protection configuration" +msgstr "" +"Hai salvato con successo la configurazione Aggiuntiva di protezione firewall" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:326 +msgid "Additional Firewall Protection" +msgstr "Protezione Firewall Aggiuntiva" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:330 +#, php-format +msgid "" +"Due to the nature of the code being inserted to the .htaccess file, this " +"feature may break some functionality for certain plugins and you are " +"therefore advised to take a %s of .htaccess before applying this " +"configuration." +msgstr "" +"A causa della natura del codice che viene inserito nel file .htaccess, questa " +"funzione potrebbe bloccare la funzionalità di alcuni plugin e si consiglia " +"pertanto di salvare un %s di .htaccess prima di applicare questa " +"configurazione." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:332 +msgid "" +"This feature allows you to activate more advanced firewall settings to your " +"site." +msgstr "" +"Questa funzione consente di attivare le impostazioni del firewall più " +"avanzate al tuo sito." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:333 +msgid "" +"The advanced firewall rules are applied via the insertion of special code to " +"your currently active .htaccess file." +msgstr "" +"Le regole del firewall avanzate vengono applicate tramite l'inserimento di " +"codice speciale per l'attuale file .htaccess attivo." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:342 +msgid "Listing of Directory Contents" +msgstr "Elenco Contenuti Directory" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:351 +#: ../classes/grade-system/wp-security-feature-item-manager.php:92 +msgid "Disable Index Views" +msgstr "Disabilita Vista Index" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:354 +msgid "Check this if you want to disable directory and file listing." +msgstr "" +"Seleziona questa casella se desideri disabilitare directory e elenco file." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:359 +msgid "" +"By default, an Apache server will allow the listing of the contents of a " +"directory if it doesn't contain an index.php file." +msgstr "" +"Per impostazione predefinita, un server Apache, può elencare il contenuto di " +"una directory se non contiene un file index.php." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:361 +msgid "This feature will prevent the listing of contents for all directories." +msgstr "" +"Questa funzione impedisce di vedere l'elenco di contenuti per tutte le " +"directory." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:363 +msgid "" +"NOTE: In order for this feature to work \"AllowOverride\" of the Indexes " +"directive must be enabled in your httpd.conf file. Ask your hosting provider " +"to check this if you don't have access to httpd.conf" +msgstr "" +"NOTA: Per utilizzare questa funzione \"AllowOverride\" della direttiva indici " +"deve essere abilitato nel file httpd.conf. Chiedi al tuo fornitore di hosting " +"per verificare questo se non hai accesso a httpd.conf" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:372 +msgid "Trace and Track" +msgstr "Tracciamento e Monitoraggio" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:381 +#: ../classes/grade-system/wp-security-feature-item-manager.php:93 +msgid "Disable Trace and Track" +msgstr "Disattiva Tracciamento e Monitoraggio" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:384 +msgid "Check this if you want to disable trace and track." +msgstr "Seleziona questa per disabilitare tracciamento e monitoraraggio." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:389 +msgid "" +"HTTP Trace attack (XST) can be used to return header requests and grab " +"cookies and other information." +msgstr "" +"Attacco Trace HTTP (XST) può essere utilizzato per trovare le richieste di " +"intestazione, catturare cookie e e altre informazioni." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:391 +msgid "" +"This hacking technique is usually used together with cross site scripting " +"attacks (XSS)." +msgstr "" +"Questa tecnica di hacking è di solito usata con attacchi cross site scripting " +"(XSS)." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:393 +msgid "" +"Disabling trace and track on your site will help prevent HTTP Trace attacks." +msgstr "" +"Disabilitare il tracciamento e monitoraggio sul tuo sito aiuterà a prevenire " +"gli attacchi di Trace HTTP." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:402 +msgid "Proxy Comment Posting" +msgstr "Proxy Pubblicazione Commenti" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:412 +msgid "Forbid Proxy Comment Posting" +msgstr "Vieta pubblicazione dei commenti via Proxy" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:415 +msgid "Check this if you want to forbid proxy comment posting." +msgstr "" +"Seleziona questa casella se vuoi proibire pubblicazione commenti da proxy." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:420 +msgid "" +"This setting will deny any requests that use a proxy server when posting " +"comments." +msgstr "" +"Con questa impostazione verrà rifiutata qualsiasi richiesta che utilizza un " +"server proxy durante la pubblicazione di commenti." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:421 +msgid "" +"By forbidding proxy comments you are in effect eliminating some SPAM and " +"other proxy requests." +msgstr "" +"Vietando commenti proxy si eliminano in effetti molti commenti spam e altre " +"richieste proxy." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:430 +msgid "Bad Query Strings" +msgstr "Stringhe Query Dannose" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:440 +msgid "Deny Bad Query Strings" +msgstr "Nega Stringhe Query Dannose" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:443 +msgid "This will help protect you against malicious queries via XSS." +msgstr "Questo aiuterà a proteggere contro query maligne fatte tramite XSS." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:448 +msgid "" +"This feature will write rules in your .htaccess file to prevent malicious " +"string attacks on your site using XSS." +msgstr "" +"Questa funzione scriverà regole nel tuo file .htaccess per prevenire attacchi " +"dannosi sul tuo sito utilizzando query XSS." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:449 +msgid "" +"NOTE: Some of these strings might be used for plugins or themes and hence " +"this might break some functionality." +msgstr "" +"NOTA: Alcune di queste stringhe potrebbero essere usate per i plugin o temi e " +"quindi questo potrebbe rompere alcune funzionalità." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:450 +#: ../admin/wp-security-firewall-menu.php:480 +msgid "" +"You are therefore strongly advised to take a backup of your active .htaccess " +"file before applying this feature." +msgstr "" +"Si raccomanda pertanto di fare un backup del file .htaccess prima di " +"applicare questa funzione." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:459 +#: ../classes/grade-system/wp-security-feature-item-manager.php:96 +msgid "Advanced Character String Filter" +msgstr "Filtro Avanzato Stringa Caratteri " + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:469 +msgid "Enable Advanced Character String Filter" +msgstr "Attiva Filtro Avanzato Stringa Caratteri" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:472 +msgid "This will block bad character matches from XSS." +msgstr "Questo bloccherà partite di caratteri dannosi da XSS." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:477 +msgid "" +"This is an advanced character string filter to prevent malicious string " +"attacks on your site coming from Cross Site Scripting (XSS)." +msgstr "" +"Si tratta di un filtro stringa di caratteri avanzato per prevenire attacchi " +"di stringhe dannose sul tuo sito provenienti da Cross Site Scripting (XSS)." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:478 +msgid "" +"This setting matches for common malicious string patterns and exploits and " +"will produce a 403 error for the hacker attempting the query." +msgstr "" +"Questa impostazione produrrà un errore 403 per l'hacker che tenta la query." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:479 +msgid "NOTE: Some strings for this setting might break some functionality." +msgstr "" +"NOTA: Alcune stringhe con questa impostazione potrebbero rompere alcune " +"funzionalità." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:488 +msgid "Save Additional Firewall Settings" +msgstr "Salva Impostazioni Aggiuntive Firewall" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:523 +msgid "You have successfully saved the 5G Firewall Protection configuration" +msgstr "Hai salvato con successo la configurazione della protezione firewall 5G" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:536 +#, php-format +msgid "" +"This feature allows you to activate the 5G firewall security protection " +"rules designed and produced by %s." +msgstr "" +"Questa funzione consente di attivare le regole di tutela della sicurezza del " +"firewall 5G progettato e prodotto da %s." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:537 +msgid "" +"The 5G Blacklist is a simple, flexible blacklist that helps reduce the number " +"of malicious URL requests that hit your website." +msgstr "" +"Il 5G Blacklist è una semplice lista nera, flessibile, che aiuta a ridurre il " +"numero di richieste da URL malevoli che ha colpito il vostro sito web." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:538 +msgid "" +"The added advantage of applying the 5G firewall to your site is that it has " +"been tested and confirmed by the people at PerishablePress.com to be an " +"optimal and least disruptive set of .htaccess security rules for general WP " +"sites running on an Apache server or similar." +msgstr "" +"Il vantaggio di applicare il firewall 5G al tuo sito è che esso è stato " +"testato e confermato dal popolo PerishablePress.com come un insieme ottimale " +"e meno dirompente di regole di sicurezza .htaccess per siti WP generali in " +"esecuzione su server Apache o simili ." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:539 +#, php-format +msgid "" +"Therefore the 5G firewall rules should not have any impact on your site's " +"general functionality but if you wish you can take a %s of your .htaccess " +"file before proceeding." +msgstr "" +"Pertanto le regole del firewall 5G non dovrebbero avere alcun impatto sulla " +"funzionalità generale del tuo sito, ma sempre meglio salvare un %s del file ." +"htaccess prima di procedere." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:545 +msgid "5G Blacklist/Firewall Settings" +msgstr "Impostazioni Blacklist/Firewall 5G" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:557 +msgid "Enable 5G Firewall Protection" +msgstr "Abilita Protezione Firewall 5G" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:560 +msgid "" +"Check this if you want to apply the 5G Blacklist firewall protection from " +"perishablepress.com to your site." +msgstr "" +"Seleziona questa casella se si vuoi applicare la protezione del firewall 5G " +"Blacklist di perishablepress.com al tuo sito." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:564 +msgid "" +"This setting will implement the 5G security firewall protection mechanisms on " +"your site which include the following things:" +msgstr "" +"Questa impostazione darà esecuzione ai meccanismi di protezione 5G di " +"sicurezza del firewall sul vostro sito, che comprendono le seguenti cose:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:565 +msgid "1) Block forbidden characters commonly used in exploitative attacks." +msgstr "" +"1) Bloccare i caratteri proibiti comunemente utilizzati in attacchi " +"esplorativi." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:566 +msgid "2) Block malicious encoded URL characters such as the \".css(\" string." +msgstr "" +"2) Bloccare URL codificati con caratteri maligni come stringa \".css (\" ." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:567 +msgid "" +"3) Guard against the common patterns and specific exploits in the root " +"portion of targeted URLs." +msgstr "" +"3) Protezione contro i modelli comuni e specifici exploit nella root " +"principale di URL mirati." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:568 +msgid "" +"4) Stop attackers from manipulating query strings by disallowing illicit " +"characters." +msgstr "" +"4) Arrestare tentativi di manipolazione stringhe di query vietando caratteri " +"illeciti." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:569 +msgid "....and much more." +msgstr "...e molto altro." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:575 +msgid "Save 5G Firewall Settings" +msgstr "Salva Impostazioni 5G Firewall" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:606 +msgid "The Internet bot settings were successfully saved" +msgstr "Le impostazioni bot Internet sono state salvate con successo" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:610 +msgid "Internet Bot Settings" +msgstr "Impostazioni Internet Bot" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:617 +#, php-format +msgid "%s?" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:619 +msgid "" +"A bot is a piece of software which runs on the Internet and performs " +"automatic tasks. For example when Google indexes your pages it uses automatic " +"bots to achieve this task." +msgstr "" +"Un bot è un software che gira su Internet e svolge funzioni automatiche. Per " +"esempio, quando Google indicizza le pagine usa bot automatici per realizzare " +"questo compito." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:620 +msgid "" +"A lot of bots are legitimate and non-malicous but not all bots are good and " +"often you will find some which try to impersonate legitimate bots such as " +"\"Googlebot\" but in reality they have nohing to do with Google at all." +msgstr "" +"La maggioranza di bot sono legittimi ma non tutti i bot sono buoni e spesso " +"ne incontrerai alcuni che cercano di impersonare bot legittimi, quali " +"\"Googlebot \", ma in realtà non hanno nulla a che fare con Google." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:621 +msgid "" +"Although most of the bots out there are relatively harmless sometimes website " +"owners want to have more control over which bots they allow into their site." +msgstr "" +"Sebbene la maggior parte dei bot là fuori sono relativamente innocui talvolta " +"i proprietari di siti web vogliono avere più controllo su ciò che i bot " +"possono fare nel loro sito." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:622 +msgid "" +"This feature allows you to block bots which are impersonating as a Googlebot " +"but actually aren't. (In other words they are fake Google bots)" +msgstr "" +"Questa funzione consente di bloccare i bot che si spacciano come Googlebot, " +"ma in realtà non lo sono. (In altre parole, sono falsi bot di Google)" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:623 +msgid "" +"Googlebots have a unique indentity which cannot easily be forged and this " +"feature will indentify any fake Google bots and block them from reading your " +"site's pages." +msgstr "" +"Googlebots hanno un indentità unica che non può essere facilmente forgiata e " +"questa caratteristica scoprirà eventuali bot di Google falsi e gli impedirà " +"di leggere le pagine del tuo sito." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:629 +msgid "" +"Attention: Sometimes non-malicious Internet organizations " +"might have bots which impersonate as a \"Googlebot\"." +msgstr "" +"Attention: A volte organizzazioni Internet non dannose " +"potrebbero avere bot che impersonano \"Googlebot\"." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:630 +msgid "" +"Just be aware that if you activate this feature the plugin will block all " +"bots which use the \"Googlebot\" string in their User Agent information but " +"are NOT officially from Google (irrespective whether they are malicious or " +"not)." +msgstr "" +"Basta essere consapevoli che, se si attiva questa funzione, il plugin " +"bloccherà tutti i bot che utilizzano la stringa \"Googlebot\" nelle loro " +"informazioni User Agent, ma non sono ufficialmente di Google (a prescindere " +"dal fatto che siano dannosi o meno)." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:631 +msgid "" +"All other bots from other organizations such as \"Yahoo\", \"Bing\" etc will " +"not be affected by this feature." +msgstr "" +"Tutti gli altri bot di altre organizzazioni come \"Yahoo\", \"Bing\" ecc... " +"non saranno interessati da questa funzione." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:637 +#: ../admin/wp-security-firewall-menu.php:647 +#: ../classes/grade-system/wp-security-feature-item-manager.php:98 +msgid "Block Fake Googlebots" +msgstr "Blocca i Falsi Googlebot" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:650 +msgid "Check this if you want to block all fake Googlebots." +msgstr "Seleziona questa casella per bloccare tutti i falsi Googlebot." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:654 +msgid "" +"This feature will check if the User Agent information of a bot contains the " +"string \"Googlebot\"." +msgstr "" +"Questa funzione controlla se le informazioni User Agent di un bot contiene la " +"stringa \"Googlebot\"." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:655 +msgid "" +"It will then perform a few tests to verify if the bot is legitimately from " +"Google and if so it will allow the bot to proceed." +msgstr "" +"Sarà quindi necessario eseguire alcuni test per verificare se il bot è " +"effettivamente di Google e se così sarà permetterà al bot di procedere." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:656 +msgid "" +"If the bot fails the checks then the plugin will mark it as being a fake " +"Googlebot and it will block it" +msgstr "" +"Se il bot non supera i controlli il plugin lo segnerà come un Googlebot falso " +"e sarà bloccato" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:663 +msgid "Save Internet Bot Settings" +msgstr "Salva Impostazioni Internet Bot" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:700 +#: ../admin/wp-security-firewall-menu.php:722 +#: ../classes/grade-system/wp-security-feature-item-manager.php:32 +msgid "Prevent Image Hotlinking" +msgstr "Prevenzione Hotlinking Immagini" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:703 +msgid "" +"A Hotlink is where someone displays an image on their site which is actually " +"located on your site by using a direct link to the source of the image on " +"your server." +msgstr "" +"Un Hotlink è quando qualcuno visualizza un'immagine sul suo sito (ma " +"l'immagine si trova effettivamente sul tuo sito) utilizzando un link diretto " +"alla fonte dell'immagine sul tuo server." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:704 +msgid "" +"Due to the fact that the image being displayed on the other person's site is " +"coming from your server, this can cause leaking of bandwidth and resources " +"for you because your server has to present this image for the people viewing " +"it on someone elses's site." +msgstr "" +"Il fatto che l'immagine visualizzata sul sito dell'altra persona è in realtà " +"sul tuo server causa perdita di banda e risorse per te, se il server da la " +"possibilità di usare l'immagine esternamente chiunque può sfruttare le tue " +"risorse su altri siti." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:705 +msgid "" +"This feature will prevent people from directly hotlinking images from your " +"site's pages by writing some directives in your .htaccess file." +msgstr "" +"Questa funzione impedisce alle persone di fare hotlinking sulle immagini del " +"tuo sito, direttamente dall'esterno, scrivendo alcune direttive nel file " +"htaccess.." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:710 +msgid "Prevent Hotlinking" +msgstr "Impedisci Hotlinking" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:725 +msgid "Check this if you want to prevent hotlinking to images on your site." +msgstr "" +"Seleziona questa casella se desideri impedire l'hotlinking alle immagini sul " +"tuo sito." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:745 +msgid "Nonce check failed for delete all 404 event logs operation!" +msgstr "" +"Selezione non riuscita per cancellare tutte le operazioni del registro eventi " +"404!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:756 +msgid "404 Detection Feature - Delete all 404 event logs operation failed!" +msgstr "" +"404 Caratteristiche Rilevamento - Operazione elimina tutti gli eventi 404 " +"registrati non riuscita!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:760 +msgid "All 404 event logs were deleted from the DB successfully!" +msgstr "Tutti gli eventi 404 sono stati cancellati dal DB con successo!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:784 +#: ../admin/wp-security-user-login-menu.php:110 +msgid "" +"You entered a non numeric value for the lockout time length field. It has " +"been set to the default value." +msgstr "" +"È stato immesso un valore non numerico per il campo lunghezza tempo di " +"blocco. Reimpostato il valore di default." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:790 +msgid "" +"You entered an incorrect format for the \"Redirect URL\" field. It has been " +"set to the default value." +msgstr "" +"È stato inserito un formato non corretto per il campo \"Redirect URL\". È " +"stato reimpostato sul valore predefinito." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:825 +msgid "404 Detection Configuration" +msgstr "Configurazione Rilevamento 404" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:828 +msgid "" +"A 404 or Not Found error occurs when somebody tries to access a non-existent " +"page on your website." +msgstr "" +"L'errore 404, o Nessun contenuto trovato, si verifica quando qualcuno tenta " +"di accedere a una pagina inesistente sul tuo sito web." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:829 +msgid "" +"Typically, most 404 errors happen quite innocently when people have mis-typed " +"a URL or used an old link to page which doesn't exist anymore." +msgstr "" +"In genere, la maggior parte degli errori 404, accade abbastanza " +"innocentemente quando le persone hanno erroneamente digitato un URL o " +"utilizzato un vecchio link a una pagina che non esiste più." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:830 +msgid "" +"However, in some cases you may find many repeated 404 errors which occur in a " +"relatively short space of time and from the same IP address which are all " +"attempting to access a variety of non-existent page URLs." +msgstr "" +"Tuttavia, in alcuni casi, si possono trovare ripetuti errori 404, che si " +"verificano in un lasso di tempo relativamente breve e dallo stesso indirizzo " +"IP, che stanno tutti tentando di accedere a una serie di URL di pagine " +"inesistenti." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:831 +msgid "" +"Such behaviour can mean that a hacker might be trying to find a particular " +"page or URL for sinister reasons." +msgstr "" +"Tale comportamento può significare che un hacker tenta di trovare una " +"determinata pagina o un URL per motivi sinistri." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:832 +msgid "" +"This feature allows you to monitor all 404 events which occur on your site, " +"and it also gives you the option of blocking IP addresses for a configured " +"length of time." +msgstr "" +"Questa funzione consente di monitorare tutti gli eventi 404 che si verificano " +"sul tuo sito, e ti dà anche la possibilità di bloccare gli indirizzi IP per " +"un periodo di tempo configurato." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:833 +msgid "" +"If you want to temporarily block an IP address, simply click the \"Temp Block" +"\" link for the applicable IP entry in the \"404 Event Logs\" table below." +msgstr "" +"Se desideri bloccare temporaneamente un indirizzo IP, è sufficiente fare clic " +"sul link \"Temp Block\" per la voce IP applicabile nella tabella \"Registro " +"Eventi 404\" qui sotto." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:838 +msgid "404 Detection Options" +msgstr "Opzioni Rilevamento 404" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:850 +msgid "Enable IP Lockout For 404 Events" +msgstr "Attiva blocco IP per gli eventi 404" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:853 +msgid "Check this if you want to enable the lockout of selected IP addresses." +msgstr "" +"Seleziona questa casella se desideri attivare il blocco di indirizzi IP " +"selezionati." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:858 +msgid "" +"When you enable this checkbox, all 404 events on your site will be logged in " +"the table below. You can monitor these events and select some IP addresses to " +"be blocked in the table. All IP addresses you select to be blocked from the " +"\"404 Event Logs\" table section will be unable to access your site." +msgstr "" +"Quando si attiva questa casella di controllo, tutti gli eventi 404 sul tuo " +"sito verranno registrati nella tabella sottostante. È possibile monitorare " +"questi eventi e selezionare alcuni indirizzi IP da bloccare nella tabella. " +"Tutti gli indirizzi IP selezionati per essere bloccati dalla tabella " +"\"Registro Eventi 404\" non sarà in grado di accedere al sito." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:866 +msgid "Enable 404 Event Logging" +msgstr "Attiva registro Eventi 404" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:869 +msgid "Check this if you want to enable the logging of 404 events" +msgstr "" +"Seleziona questa casella se desideri attivare la registrazione eventi 404" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:874 +msgid "Time Length of 404 Lockout (min)" +msgstr "Periodo durata blocco 404 (min)" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:876 +msgid "" +"Set the length of time for which a blocked IP address will be prevented from " +"visiting your site" +msgstr "" +"Imposta un periodo di tempo per cui un indirizzo IP sarà bloccato e non potrà " +"visitare il tuo sito" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:881 +msgid "" +"You can lock any IP address which is recorded in the \"404 Event Logs\" table " +"section below." +msgstr "" +"Puoi bloccare qualsiasi indirizzo IP che viene registrato nella sezione " +"\"Registro Eventi 404\" sotto." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:883 +msgid "" +"To temporarily lock an IP address, hover over the ID column and click the " +"\"Temp Block\" link for the applicable IP entry." +msgstr "" +"Per bloccare temporaneamente un indirizzo IP, passa il mouse sopra la colonna " +"ID e clicca sul link \"Temp Block\" per la voce IP che vuoi." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:890 +msgid "404 Lockout Redirect URL" +msgstr "404 URL Reindirizzamento Blocco" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:892 +msgid "A blocked visitor will be automatically redirected to this URL." +msgstr "" +"Un visitatore bloccato verrà automaticamente reindirizzato a questo URL." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:901 +msgid "404 Event Logs" +msgstr "Registro Eventi 404" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:923 +#: ../admin/wp-security-firewall-menu.php:932 +msgid "Delete All 404 Event Logs" +msgstr "Elimina tutti gli eventi 404 registrati" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-firewall-menu.php:929 +msgid "Click this button if you wish to purge all 404 event logs from the DB." +msgstr "" +"Clicca su questo pulsante per pulire il database da tutti gli eventi 404 " +"registrati" + +#: ../admin/wp-security-firewall-menu.php:985 +msgid "Custom .htaccess Rules Settings" +msgstr "Impostazioni regole .htaccess personalizzate" + +#: ../admin/wp-security-firewall-menu.php:992 +msgid "" +"This feature can be used to apply your own custom .htaccess rules and " +"directives." +msgstr "" +"Questa funzione può essere utilizzata per applicate le tue regole e " +"direttive .htaccess personalizzate" + +#: ../admin/wp-security-firewall-menu.php:993 +msgid "" +"It is useful for when you want to tweak our existing firewall rules or when " +"you want to add your own." +msgstr "" +"E' utile quando vuoi ottimizzare le nostre regole di firewall oppure quando " +"ne vuoi aggiungere di tue." + +#: ../admin/wp-security-firewall-menu.php:994 +msgid "" +"NOTE: This feature can only used if your site is hosted in an apache or " +"similar web server." +msgstr "" +"NOTA: Questa funzione può essere utilizzata solo se il tuo sito è ospitato in " +"un web server Apache o simile" + +#: ../admin/wp-security-firewall-menu.php:1000 +msgid "" +"Warning: Only use this feature if you know what you are " +"doing." +msgstr "" +"Attenzione: Utilizza questa funzione solo se sai cosa stai " +"facendo." + +#: ../admin/wp-security-firewall-menu.php:1001 +msgid "" +"Incorrect .htaccess rules or directives can break or prevent access to your " +"site." +msgstr "" +"Regole o direttive .htaccess non corrette possono bloccare gli accessi al tuo " +"sito." + +#: ../admin/wp-security-firewall-menu.php:1002 +msgid "" +"It is your responsibility to ensure that you are entering the correct code!" +msgstr "" + +#: ../admin/wp-security-firewall-menu.php:1003 +msgid "" +"If you break your site you will need to access your server via FTP or " +"something similar and then edit your .htaccess file and delete the changes " +"you made." +msgstr "" + +#: ../admin/wp-security-firewall-menu.php:1009 +msgid "Custom .htaccess Rules" +msgstr "Regole .htaccess personalizzate" + +#: ../admin/wp-security-firewall-menu.php:1013 +msgid "Enable Custom .htaccess Rules" +msgstr "Abilita le regole .htaccess personalizzate" + +#: ../admin/wp-security-firewall-menu.php:1016 +msgid "" +"Check this if you want to enable custom rules entered in the text box below" +msgstr "" +"Seleziona questo se vuoi abilitare le regole personalizzate inserite nel " +"riquadro sottostante" + +#: ../admin/wp-security-firewall-menu.php:1020 +msgid "Enter Custom .htaccess Rules:" +msgstr "Inserisci le regole .htaccess personalizzate:" + +#: ../admin/wp-security-firewall-menu.php:1024 +msgid "Enter your custom .htaccess rules/directives." +msgstr "Inserisci le tue regole/direttive .htaccess personalizzate" + +#: ../admin/wp-security-firewall-menu.php:1029 +msgid "Save Custom Rules" +msgstr "Salva le regole personalizzate" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-list-404.php:116 ../admin/wp-security-list-404.php:124 +#: ../admin/wp-security-list-404.php:131 +#: ../admin/wp-security-list-acct-activity.php:83 +#: ../admin/wp-security-list-comment-spammer-ip.php:90 +#: ../admin/wp-security-list-locked-ip.php:90 +#: ../admin/wp-security-list-locked-ip.php:101 +#: ../admin/wp-security-list-login-fails.php:82 +#: ../admin/wp-security-list-registered-users.php:87 +#: ../admin/wp-security-list-registered-users.php:98 +msgid "Please select some records using the checkboxes" +msgstr "" +"Si prega di selezionare alcuni record utilizzando le caselle di controllo" + +#: ../admin/wp-security-list-404.php:152 ../admin/wp-security-list-404.php:189 +msgid "" +"Could not process the request because the IP addresses for the selected " +"entries could not be found!" +msgstr "" + +#: ../admin/wp-security-list-404.php:161 +msgid "The selected IP addresses are now temporarily blocked!" +msgstr "Gli indirizzi IP selezionati sono ora bloccati temporaneamente!" + +#: ../admin/wp-security-list-404.php:166 +msgid "The selected IP address is now temporarily blocked!" +msgstr "L'indirizzo IP selezionato è ora temporaneamente bloccato!" + +#: ../admin/wp-security-list-404.php:168 +msgid "The selected entry is not a valid IP address!" +msgstr "La voce selezionata non è un indirizzo IP valido!" + +#: ../admin/wp-security-list-404.php:216 +msgid "" +"The selected IP addresses have been added to the blacklist and will be " +"permanently blocked!" +msgstr "" +"Gli indirizzi IP selezionati sono stati aggiunti alla blacklist e saranno " +"bloccati permanentemente!" + +#: ../admin/wp-security-list-404.php:252 +msgid "Nonce check failed for delete selected 404 event logs operation!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-list-acct-activity.php:113 +#: ../admin/wp-security-list-login-fails.php:113 +msgid "The selected entries were deleted successfully!" +msgstr "Le voci selezionate sono state cancellate con successo!" + +#: ../admin/wp-security-list-acct-activity.php:125 +msgid "Nonce check failed for delete selected account activity logs operation!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-list-acct-activity.php:133 +#: ../admin/wp-security-list-login-fails.php:133 +msgid "The selected entry was deleted successfully!" +msgstr "La voce selezionata è stata eliminata con successo!" + +#: ../admin/wp-security-list-comment-spammer-ip.php:139 +msgid "Nonce check failed for delete selected blocked IP operation!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-list-comment-spammer-ip.php:153 +msgid "" +"The selected IP addresses were saved in the blacklist configuration settings." +msgstr "" +"Gli indirizzi IP selezionati sono stati salvati nelle impostazioni di " +"configurazione blacklist." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-list-comment-spammer-ip.php:167 +msgid "" +"The .htaccess file was successfully modified to include the selected IP " +"addresses." +msgstr "" +"Il file .htaccess è stato modificato correttamente per includere gli " +"indirizzi IP selezionati." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-list-comment-spammer-ip.php:173 +msgid "" +"NOTE: The .htaccess file was not modified because you have disabled the " +"\"Enable IP or User Agent Blacklisting\" check box." +msgstr "" +"NOTE: Il file .htaccess non è stata modificato perché è stata disattivata la " +"casella \"Abilita IP o User Agent Blacklisting\"." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-list-comment-spammer-ip.php:174 +#, php-format +msgid "" +"To block these IP addresses you will need to enable the above flag in the %s " +"menu" +msgstr "" +"Per bloccare questi indirizzi IP è necessario attivare il flag sopra nel menù " +"%s" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-list-locked-ip.php:127 +#: ../admin/wp-security-user-login-menu.php:529 +msgid "The selected IP entries were unlocked successfully!" +msgstr "Le voci IP selezionate sono state sbloccate con successo!" + +#: ../admin/wp-security-list-locked-ip.php:136 +msgid "Nonce check failed for unlock IP operation!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-list-locked-ip.php:144 +#: ../admin/wp-security-user-login-menu.php:538 +msgid "The selected IP entry was unlocked successfully!" +msgstr "La voce IP selezionata è stata sbloccata con successo!" + +#: ../admin/wp-security-list-locked-ip.php:177 +msgid "Nonce check failed for delete lockdown record operation!" +msgstr "" + +#: ../admin/wp-security-list-logged-in-users.php:84 +msgid "Nonce check failed for force user logout operation!" +msgstr "" + +#: ../admin/wp-security-list-logged-in-users.php:95 +msgid "The selected user was logged out successfully!" +msgstr "" + +#: ../admin/wp-security-list-login-fails.php:125 +msgid "Nonce check failed for delete failed login record operation!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-list-registered-users.php:132 +#: ../admin/wp-security-list-registered-users.php:158 +msgid "Your account is now active" +msgstr "Il tuo account è ora attivo" + +#: ../admin/wp-security-list-registered-users.php:133 +msgid "Your account with user ID:" +msgstr "" + +#: ../admin/wp-security-list-registered-users.php:133 +#: ../admin/wp-security-list-registered-users.php:159 +msgid " is now active" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-list-registered-users.php:142 +msgid "The selected accounts were approved successfully!" +msgstr "Gli account selezionati sono stati approvati con successo!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-list-registered-users.php:146 +msgid "The following accounts failed to update successfully: " +msgstr "L'aggiornamento dei seguenti accanto è fallito:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-list-registered-users.php:154 +msgid "The selected account was approved successfully!" +msgstr "Gli account selezionati sono stati approvati con successo!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-list-registered-users.php:159 +msgid "Your account with username: " +msgstr "Il tuo account con nome utente:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-list-registered-users.php:187 +msgid "The selected accounts were deleted successfully!" +msgstr "Gli account selezionati sono stati approvati con successo!" + +#: ../admin/wp-security-list-registered-users.php:195 +msgid "Nonce check failed for delete registered user account operation!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-list-registered-users.php:203 +msgid "The selected account was deleted successfully!" +msgstr "Gli account selezionati sono stati approvati con successo!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-maintenance-menu.php:22 +msgid "Visitor Lockout" +msgstr "Visitatori Bloccati" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-maintenance-menu.php:88 +msgid "Site lockout feature settings saved!" +msgstr "Impostazioni funzioni blocco sito salvate con successo!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-maintenance-menu.php:93 +msgid "General Visitor Lockout" +msgstr "Visitatori Bloccati Generale" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-maintenance-menu.php:99 +msgid "" +"This feature allows you to put your site into \"maintenance mode\" by locking " +"down the front-end to all visitors except logged in users with super admin " +"privileges." +msgstr "" +"Questa funzione consente di mettere il sito in \"modalità manutenzione\" " +"bloccando il front-end a tutti i visitatori, tranne gli utenti registrati con " +"privilegi di super amministratore." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-maintenance-menu.php:100 +msgid "" +"Locking your site down to general visitors can be useful if you are " +"investigating some issues on your site or perhaps you might be doing some " +"maintenance and wish to keep out all traffic for security reasons." +msgstr "" +"Bloccare il sito per i visitatori generali può essere utile se si stanno " +"indagando alcuni problemi sul sito o forse si vuole fare un po' di " +"manutenzione e voler tenere fuori tutto il traffico per motivi di sicurezza." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-maintenance-menu.php:105 +msgid "Enable Front-end Lockout" +msgstr "Attiva Blocco Front-end" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-maintenance-menu.php:108 +msgid "" +"Check this if you want all visitors except those who are logged in as " +"administrator to be locked out of the front-end of your site." +msgstr "" +"Seleziona questa casella se desideri che tutti i visitatori, ad eccezione di " +"chi ha effettuato l'accesso come amministratore, siano bloccati fuori dal " +"front-end del tuo sito." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-maintenance-menu.php:112 +msgid "Enter a Message:" +msgstr "Inserisci Messaggio:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-maintenance-menu.php:124 +msgid "" +"Enter a message you wish to display to visitors when your site is in " +"maintenance mode." +msgstr "" +"Immettere un messaggio che si desidera mostrare ai visitatori quando il sito " +"è in modalità manutenzione." + +# @ default +#: ../admin/wp-security-maintenance-menu.php:131 +msgid "Save Site Lockout Settings" +msgstr "Salva Impostazioni Blocco Sito" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-misc-options-menu.php:23 +msgid "Copy Protection" +msgstr "Protezione Copia" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-misc-options-menu.php:24 +msgid "Frames" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-misc-options-menu.php:88 +msgid "Copy Protection feature settings saved!" +msgstr "Impostazioni delle funzioni di protezione copia salvata!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-misc-options-menu.php:93 +msgid "Disable The Ability To Copy Text" +msgstr "Disabilitare la possibilità di copiare testo" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-misc-options-menu.php:99 +msgid "" +"This feature allows you to disable the ability to select and copy text from " +"your front end." +msgstr "" +"Questa funzione consente di disabilitare la possibilità di selezionare e " +"copiare testo dal front-end." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-misc-options-menu.php:104 +msgid "Enable Copy Protection" +msgstr "Attiva Protezione Copia" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-misc-options-menu.php:107 +msgid "" +"Check this if you want to disable the \"Right Click\", \"Text Selection\" and " +"\"Copy\" option on the front end of your site." +msgstr "" +"Seleziona questa casella se desideri disattivare il tasto \"Click Destro\", " +"\"Selezione Testo\" e l'opzione \"Copia\" sul front-end del tuo sito." + +# @ default +#: ../admin/wp-security-misc-options-menu.php:114 +msgid "Save Copy Protection Settings" +msgstr "Salva Impostazioni Protezione Copia" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-misc-options-menu.php:138 +msgid "Frame Display Prevention feature settings saved!" +msgstr "Impostazioni funzione prevenzione di visualizzazione Frame salvate!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-misc-options-menu.php:143 +msgid "Prevent Your Site From Being Displayed In a Frame" +msgstr "Impedire che il tuo sito venga visualizzato in un frame" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-misc-options-menu.php:149 +msgid "" +"This feature allows you to prevent other sites from displaying any of your " +"content via a frame or iframe." +msgstr "" +"Questa funzione consente di impedire ad altri siti di visualizzare i tuoi " +"contenuti tramite un frame o iframe." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-misc-options-menu.php:150 +msgid "" +"When enabled, this feature will set the \"X-Frame-Options\" paramater to " +"\"sameorigin\" in the HTTP header." +msgstr "" +"Se abilitata, questa funzione imposta il parametro \"X-Frame-Options\" a " +"\"sameorigin\" nell'intestazione HTTP." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-misc-options-menu.php:155 +msgid "Enable iFrame Protection" +msgstr "Attiva Protezione iFrame" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-misc-options-menu.php:158 +msgid "" +"Check this if you want to stop other sites from displaying your content in a " +"frame or iframe." +msgstr "" +"Seleziona questa casella se vuoi impedire ad altri siti di visualizzare i " +"tuoi contenuti in un frame o iframe." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:26 +msgid "General Settings" +msgstr "Impostazioni Generali" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:29 +msgid "WP Meta Info" +msgstr "Meta Info WP" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:30 +msgid "Import/Export" +msgstr "Importa/Esporta" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:97 +msgid "All the security features have been disabled successfully!" +msgstr "" +"Tutte le caratteristiche di sicurezza sono state disabilitate con successo!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:101 +#: ../admin/wp-security-settings-menu.php:128 +msgid "" +"Could not write to the .htaccess file. Please restore your .htaccess file " +"manually using the restore functionality in the \".htaccess File\"." +msgstr "" +"Impossibile scrivere nel file .htaccess. Si prega di ripristinare il file " +"manualmente utilizzando la funzione di ripristino del \"File .htaccess\"." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:106 +msgid "" +"Could not write to the wp-config.php. Please restore your wp-config.php file " +"manually using the restore functionality in the \"wp-config.php File\"." +msgstr "" +"Impossibile scrivere il wp-config.php. Si prega di ripristinare il file wp-" +"config.php manualmente utilizzando la funzione di ripristino del \"File wp-" +"config.php\"." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:124 +msgid "All firewall rules have been disabled successfully!" +msgstr "Tutte le regole del firewall sono state disabilitate con successo!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:138 +msgid "WP Security Plugin" +msgstr "WP Plugin Sicurezza" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:140 +msgid "" +"Thank you for using our WordPress security plugin. There are a lot of " +"security features in this plugin." +msgstr "" +"Grazie per aver scelto il nostro plugin di sicurezza WordPress. Ci sono un " +"sacco di funzioni di sicurezza in questo plugin." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:141 +msgid "" +"Go through each menu items and enable the security options to add more " +"security to your site. Start by activating the basic features first." +msgstr "" +"Passa attraverso ogni voce di menù e attiva le opzioni di sicurezza per " +"rendere più sicuro il tuo sito. Inizia attivando le funzionalità di Base." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:142 +msgid "" +"It is a good practice to take a backup of your .htaccess file, database and " +"wp-config.php file before activating the security features. This plugin has " +"options that you can use to backup those resources easily." +msgstr "" +"Sempre consigliato fare un backup dei file del database, wp-config.php e ." +"htaccess prima di attivare le funzioni di protezione. Questo plugin ha " +"opzioni che è possibile utilizzare per eseguire il backup di tali risorse " +"facilmente." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:145 +msgid "Backup your database" +msgstr "Backup tuo database" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:146 +msgid "Backup .htaccess file" +msgstr "Backup file .htaccess" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:147 +msgid "Backup wp-config.php file" +msgstr "Backup file wp-config.php" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:153 +msgid "Disable Security Features" +msgstr "Disabilita Funzioni Sicurezza" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:159 +msgid "" +"If you think that some plugin functionality on your site is broken due to a " +"security feature you enabled in this plugin, then use the following option to " +"turn off all the security features of this plugin." +msgstr "" +"Se pensi che alcune funzionalità del plugin sul ​​tuo sito non vanno più bene a " +"causa di una funzione di sicurezza attivata in questo plugin, utilizza la " +"seguente opzione per disattivare tutte le funzioni di sicurezza del plugin." + +# @ default +#: ../admin/wp-security-settings-menu.php:163 +msgid "Disable All Security Features" +msgstr "Disabilita Tutte le Funzioni di Sicurezza" + +# @ all-in-one-wp-security-and-firewall +# @ default +#: ../admin/wp-security-settings-menu.php:169 +#: ../admin/wp-security-settings-menu.php:179 +msgid "Disable All Firewall Rules" +msgstr "Disabilita Tutte le Regole del Firewall" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:175 +msgid "" +"This feature will disable all firewall rules which are currently active in " +"this plugin and it will also delete these rules from your .htacess file. Use " +"it if you think one of the firewall rules is causing an issue on your site." +msgstr "" +"Questa funzione consente di disattivare tutte le regole del firewall che sono " +"attualmente attive in questo plugin e saranno cancellate le regole dal file ." +"htacess. Usalo se pensi che una delle regole del firewall sta causando un " +"problema sul tuo sito." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:208 +msgid "" +"Your .htaccess file was successfully backed up! Using an FTP program go to " +"the \"/wp-content/aiowps_backups\" directory to save a copy of the file to " +"your computer." +msgstr "" +"Il backuo del file .htaccess è stato eseguito con successo! Usando un " +"programma FTP va alla directory \"/wp-content/aiowps_backups\" per salvare " +"una copia del file sul computer." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:214 +msgid "" +"htaccess file rename failed during backup. Please check your root directory " +"for the backup file using FTP." +msgstr "" +"tentativo di rinominare il file .htaccess fallito durante il backup. Verifica " +"la tua root directory per il file di backup tramite FTP." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:220 +msgid "htaccess backup failed." +msgstr "backup .htaccess fallito" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:235 +msgid "Please choose a .htaccess to restore from." +msgstr "Seleziona un file .htaccess per il ripristino." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:251 +msgid "" +"htaccess file restore failed. Please attempt to restore the .htaccess " +"manually using FTP." +msgstr "" +"htaccess file di ripristino non riuscito. Si prega di provare a ripristinare " +"l'.htaccess manualmente tramite FTP." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:255 +msgid "Your .htaccess file has successfully been restored!" +msgstr "Il tuo file .htaccess è stato ripristinato con successo!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:261 +msgid "" +"htaccess Restore operation failed! Please check the contents of the file you " +"are trying to restore from." +msgstr "" +"operazione di ripristino htaccess non riuscita! Si prega di verificare il " +"contenuto del file che si sta tentando di ripristinare da" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:267 +msgid ".htaccess File Operations" +msgstr "Operazioni File .htaccess" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:270 +msgid "" +"Your \".htaccess\" file is a key component of your website's security and it " +"can be modified to implement various levels of protection mechanisms." +msgstr "" +"Il file \".htaccess\" è un componente chiave della sicurezza del tuo sito web " +"e può essere modificato per implementare diversi livelli di meccanismi di " +"protezione." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:271 +msgid "" +"This feature allows you to backup and save your currently active .htaccess " +"file should you need to re-use the the backed up file in the future." +msgstr "" +"Questa funzione consente di eseguire il backup e salvare il file .htaccess " +"attualmente attivo e in caso di necessità ri-utilizzare il file di backup in " +"futuro." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:272 +msgid "" +"You can also restore your site's .htaccess settings using a backed up ." +"htaccess file." +msgstr "" +"È inoltre possibile ripristinare le impostazioni .htaccess del tuo sito " +"utilizzando un file .htaccess di cui hai eseguito il backup." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:286 +msgid "Save the current .htaccess file" +msgstr "Salva il file .htaccess attuale" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:290 +msgid "" +"Click the button below to backup and save the currently active .htaccess file." +msgstr "" +"Clicca sul bottone qui sotto per eseguire il backup e salvare il file ." +"htaccess attualmente attivo." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:291 +msgid "Backup .htaccess File" +msgstr "Backup File .htaccess" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:295 +msgid "Restore from a backed up .htaccess file" +msgstr "Ripristina da un file di backup .htaccess" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:301 +msgid ".htaccess file to restore from" +msgstr "ripristina file .htaccess da" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:307 +msgid "" +"After selecting your file, click the button below to restore your site using " +"the backed up htaccess file (htaccess_backup.txt)." +msgstr "" +"Dopo aver selezionato il file, clicca sul pulsante qui sotto per ripristinare " +"il sito utilizzando il backup del file htaccess (htaccess_backup.txt)." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:313 +msgid "Restore .htaccess File" +msgstr "Ripristina File .htaccess" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:317 +msgid "View Contents of the currently active .htaccess file" +msgstr "Vedi il contenuto del file .htaccess attualmente attivo" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:346 +msgid "Please choose a wp-config.php file to restore from." +msgstr "Prego scegli il file wp-config.php da ripristinare" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:362 +msgid "" +"wp-config.php file restore failed. Please attempt to restore this file " +"manually using FTP." +msgstr "" +"ripristino file wp-config.php non riuscito. Cerca di ripristinare questo file " +"manualmente tramite FTP." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:366 +msgid "Your wp-config.php file has successfully been restored!" +msgstr "Il tuo file wp-config.php è stato ripristinato con successo!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:372 +msgid "" +"wp-config.php Restore operation failed! Please check the contents of the file " +"you are trying to restore from." +msgstr "" +"operazione ripristino wp-config.php fallita! Verifica il contenuto del file " +"che stai tentando di ripristinare da." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:378 +msgid "wp-config.php File Operations" +msgstr "Operazioni File wp-config.php" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:381 +msgid "" +"Your \"wp-config.php\" file is one of the most important in your WordPress " +"installation. It is a primary configuration file and contains crucial things " +"such as details of your database and other critical components." +msgstr "" +"Il file è \"wp-config.php\" uno dei più importanti dell'installazione di " +"WordPress. Si tratta di un file di configurazione principale e contiene cose " +"fondamentali come i dettagli del database e altri componenti critici." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:382 +msgid "" +"This feature allows you to backup and save your currently active wp-config." +"php file should you need to re-use the the backed up file in the future." +msgstr "" +"Questa funzione consente di eseguire il backup e salvare il file wp-config." +"php attualmente attivo e in caso di necessità ri-utilizzare il file di backup " +"in futuro." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:383 +msgid "" +"You can also restore your site's wp-config.php settings using a backed up wp-" +"config.php file." +msgstr "" +"È inoltre possibile ripristinare le impostazioni di wp-config.php del tuo " +"sito utilizzando un file wp-config.php di cui hai fatto il backup." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:397 +msgid "Save the current wp-config.php file" +msgstr "Salva il file wp-config.php corrente" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:401 +msgid "" +"Click the button below to backup and download the contents of the currently " +"active wp-config.php file." +msgstr "" +"Clicca sul bottone qui sotto per eseguire il backup e salvare il file wp-" +"config.php attualmente attivo." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:402 +msgid "Backup wp-config.php File" +msgstr "Backup File wp-config.php" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:407 +msgid "Restore from a backed up wp-config file" +msgstr "Ripristina file wp-config.php da un backup" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:413 +msgid "wp-config file to restore from" +msgstr "ripristino file wp-config.php da" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:419 +msgid "" +"After selecting your file click the button below to restore your site using " +"the backed up wp-config file (wp-config.php.backup.txt)." +msgstr "" +"Dopo aver selezionato il file clicca sul pulsante qui sotto per ripristinare " +"il sito utilizzando il backup di file wp-config (wp-config.php.backup.txt)." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:425 +msgid "Restore wp-config File" +msgstr "Ripristina File wp-config.php" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:429 +msgid "View Contents of the currently active wp-config.php file" +msgstr "Vedi il contenuto dell'attuale file wp-config.php" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:464 +msgid "WP Generator Meta Tag" +msgstr "Generatore WP Meta Tag" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:467 +msgid "" +"Wordpress generator automatically adds some meta information inside the \"head" +"\" tags of every page on your site's front end. Below is an example of this:" +msgstr "" +"Wordpress generatore aggiunge automaticamente alcune informazioni meta dentro " +"i tag della \"head\" di ogni pagina del front-end del tuo sito. Di seguito è " +"riportato un esempio di questo:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:469 +msgid "" +"The above meta information shows which version of WordPress your site is " +"currently running and thus can help hackers or crawlers scan your site to see " +"if you have an older version of WordPress or one with a known exploit." +msgstr "" +"La meta informazioni di cui sopra mostra la versione di WordPress attualmente " +"in esecuzione e quindi può aiutare gli hacker o crawler nella scansione del " +"sito che potrebbero sfruttare bug noti di tale versione WordPress." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:470 +msgid "" +"This feature will allow you to remove the WP generator meta info from your " +"site's pages." +msgstr "" +"Questa funzione permette di rimuovere il generatore di meta informazioni WP " +"dalle pagine del tuo sito." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:476 +msgid "WP Generator Meta Info" +msgstr "Generatore Meta Info WP" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:488 +msgid "Remove WP Generator Meta Info" +msgstr "Rimuovi Generatore Meta Info WP" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:491 +msgid "" +"Check this if you want to remove the meta info produced by WP Generator from " +"all pages" +msgstr "" +"Seleziona questa casella se per rimuovere le informazioni meta prodotte dal " +"generatore WP su tutte le pagine" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:521 +msgid "Please choose a file to import your settings from." +msgstr "Si prega di scegliere un file da cui importare le impostazioni." + +#: ../admin/wp-security-settings-menu.php:553 +msgid "Import AIOWPS settings from " +msgstr "Importa le impostazioni di AIOWPS da" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:559 +#: ../admin/wp-security-settings-menu.php:603 +msgid "" +"The deletion of the import file failed. Please delete this file manually via " +"the media menu for security purposes." +msgstr "" +"La cancellazione del file di importazione non è riuscita. Si prega di " +"cancellare questo file manualmente tramite il menu media per motivi di " +"sicurezza." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:561 +#: ../admin/wp-security-settings-menu.php:605 +msgid "" +"The file you uploaded was also deleted for security purposes because it " +"contains security settings details." +msgstr "" +"Il file caricato è stato eliminato anche per motivi di sicurezza perché " +"contiene particolari impostazioni di protezione." + +#: ../admin/wp-security-settings-menu.php:576 +msgid "Your AIOWPS settings were successfully imported via file input." +msgstr "" +"Le tue impostazioni AIOWPS sono state importate con successo tramite input " +"file." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:577 +msgid "" +"The deletion of the import file failed. Please delete this file manually via " +"the media menu for security purposes because it contains security settings " +"details." +msgstr "" +"La cancellazione del file di importazione non è riuscita. Si prega di " +"cancellare questo file manualmente tramite il menu media per motivi di " +"sicurezza perché contiene particolari impostazioni di protezione." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:579 +msgid "" +"Your AIOWPS settings were successfully imported. The file you uploaded was " +"also deleted for security purposes because it contains security settings " +"details." +msgstr "" +"Le impostazioni AIOWPS sono state importate correttamente. Il file caricato è " +"stato eliminato anche per motivi di sicurezza perché contiene particolari " +"impostazioni di protezione." + +#: ../admin/wp-security-settings-menu.php:582 +msgid "Your AIOWPS settings were successfully imported via text entry." +msgstr "" +"Le tue impostazioni AIOWPS sono state importate con successo tramite " +"inserimento testuale." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:597 +msgid "" +"The contents of your settings file appear invalid. Please check the contents " +"of the file you are trying to import settings from." +msgstr "" +"Il contenuto del file impostazioni appare non valido. Controlla il contenuto " +"del file che si sta tentando di importare." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:614 +msgid "Export or Import Your AIOWPS Settings" +msgstr "Esportare o importare le impostazioni AIOWPS" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:617 +msgid "" +"This section allows you to export or import your All In One WP Security & " +"Firewall settings." +msgstr "" +"Questa sezione permette di esportare o importare le impostazioni del tuo All " +"In One WP Security & Firewall." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:618 +msgid "" +"This can be handy if you wanted to save time by applying the settings from " +"one site to another site." +msgstr "" +"Questo può essere utile se si vuole risparmiare tempo applicando le " +"impostazioni da un sito a un altro sito." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:619 +msgid "" +"NOTE: Before importing, it is your responsibility to know what settings you " +"are trying to import. Importing settings blindly can cause you to be locked " +"out of your site." +msgstr "" +"NOTA: Prima di importare, è tua responsabilità sapere quali impostazioni stai " +"tentando di importare. L'importazione delle impostazioni alla cieca può " +"causare il blocco del tuo sito." + +#: ../admin/wp-security-settings-menu.php:620 +msgid "" +"For Example: If a settings item relies on the domain URL then it may not work " +"correctly when imported into a site with a different domain." +msgstr "" +"Per esempio: se una impostazione si affida all'URL di un dominio, potrà non " +"funzionare correttamente quando verrà importata in un sito con un dominio " +"differente." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:626 +#: ../admin/wp-security-settings-menu.php:635 +msgid "Export AIOWPS Settings" +msgstr "Impostazioni Esportazione AIOWPS" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:632 +msgid "" +"To export your All In One WP Security & Firewall settings click the button " +"below." +msgstr "" +"Per esportare le impostazioni di All In One WP Security & Firewall clicca sul " +"pulsante qui sotto." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:639 +#: ../admin/wp-security-settings-menu.php:664 +msgid "Import AIOWPS Settings" +msgstr "Impostazioni Importazione AIOWPS" + +#: ../admin/wp-security-settings-menu.php:645 +msgid "" +"Use this section to import your All In One WP Security & Firewall settings " +"from a file. Alternatively, copy/paste the contents of your import file into " +"the textarea below." +msgstr "" +"Usa questa sezione per importate i toi settaggi di All In One WP Security & " +"Firewall da un file. In alternativa, copia/incolla il contenuto del tuo file " +"da importante, nella textarea sottostante." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:646 +msgid "Import File" +msgstr "Importa File" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-settings-menu.php:652 +msgid "" +"After selecting your file, click the button below to apply the settings to " +"your site." +msgstr "" +"Dopo aver selezionato il file, clicca sul pulsante qui sotto per applicare le " +"impostazioni al tuo sito." + +#: ../admin/wp-security-settings-menu.php:658 +msgid "Copy/Paste Import Data" +msgstr "Copia/Incolla i dati da importare" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:24 +msgid "Comment SPAM" +msgstr "Commenti SPAM" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:25 +msgid "Comment SPAM IP Monitoring" +msgstr "Monitoraggio IP Commenti SPAM" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:26 +msgid "BuddyPress" +msgstr "DubbyPress" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:113 +msgid "Comment SPAM Settings" +msgstr "Impostazione Commenti SPAM" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:118 +msgid "Add Captcha To Comments Form" +msgstr "Aggiungi Captcha al Modulo Commenti" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:122 +msgid "" +"This feature will add a simple math captcha field in the WordPress comments " +"form." +msgstr "" +"Questa funzione aggiungerà un semplice campo captcha matematico al modulo " +"commenti WordPress." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:123 +msgid "" +"Adding a captcha field in the comment form is a simple way of greatly " +"reducing SPAM comments from bots without using .htaccess rules." +msgstr "" +"Aggiunta di un campo captcha nel modulo dei commenti è un modo semplice di " +"ridurre notevolmente i commenti spam dei bot senza utilizzare regole ." +"htaccess." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:132 +msgid "Enable Captcha On Comment Forms" +msgstr "Attiva Captcha nel Modulo Commenti" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:135 +msgid "Check this if you want to insert a captcha field on the comment forms" +msgstr "" +"Seleziona questo se desideri inserire un campo captcha nel modulo commenti" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:142 +msgid "Block Spambot Comments" +msgstr "Blocca Commenti Spambot" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:146 +msgid "" +"A large portion of WordPress blog comment SPAM is mainly produced by " +"automated bots and not necessarily by humans. " +msgstr "" +"Una gran parte dei commenti SPAM nei blog WordPress è prodotto principalmente " +"da bot automatici e non necessariamente da esseri umani." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:147 +msgid "" +"This feature will greatly minimize the useless and unecessary traffic and " +"load on your server resulting from SPAM comments by blocking all comment " +"requests which do not originate from your domain." +msgstr "" +"Questa caratteristica ridurrà al minimo il traffico inutile è buona regola " +"non caricare sul server commenti spam, bloccando tutte le richieste di " +"commento che non hanno origine dal proprio dominio." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:148 +msgid "" +"In other words, if the comment was not submitted by a human who physically " +"submitted the comment on your site, the request will be blocked." +msgstr "" +"In altre parole, se il commento non è stato fatto da un essere umano che " +"fisicamente ha scritto il commento sul tuo sito, la richiesta verrà bloccata." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:164 +msgid "Block Spambots From Posting Comments" +msgstr "Impedisci che Spambots possano pubblicare commenti" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:167 +msgid "" +"Check this if you want to apply a firewall rule which will block comments " +"originating from spambots." +msgstr "" +"Seleziona questa casella se vuoi applicare una regola firewall che blocca i " +"commenti provenienti da spambot." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:171 +msgid "" +"This feature will implement a firewall rule to block all comment attempts " +"which do not originate from your domain." +msgstr "" +"Questa funzione consente di applicare una regola firewall per bloccare tutti " +"i tentativi di commento che non hanno origine dal proprio dominio." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:172 +msgid "" +"A legitimate comment is one which is submitted by a human who physically " +"fills out the comment form and clicks the submit button. For such events, the " +"HTTP_REFERRER is always set to your own domain." +msgstr "" +"Un commento legittimo è quello che viene presentato da un umano che riempie " +"fisicamente il modulo commenti e fa clic sul pulsante di invio. Per tali " +"eventi, il HTTP_REFERRER è sempre impostato per il proprio dominio." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:173 +msgid "" +"A comment submitted by a spambot is done by directly calling the comments.php " +"file, which usually means that the HTTP_REFERRER value is not your domain and " +"often times empty." +msgstr "" +"Un commento lasciato da uno spambot viene fatto chiamando direttamente il " +"file comments.php, che di solito significa che il valore HTTP_REFERRER non è " +"il vostro dominio e spesso vuoto." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:174 +msgid "" +"This feature will check and block comment requests which are not referred by " +"your domain thus greatly reducing your overall blog SPAM and PHP requests " +"done by the server to process these comments." +msgstr "" +"Questa funzione controlla e blocca commenti e richieste non contemplate dal " +"tuo dominio, riducendo notevolmente lo SPAM nel blog in generale e le " +"richieste PHP fatte dal server per elaborare questi commenti." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:201 +msgid "Nonce check failed for list SPAM comment IPs!" +msgstr "Check non riuscito per la lista IP spam Commenti!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:207 +msgid "" +"You entered a non numeric value for the minimum SPAM comments per IP field. " +"It has been set to the default value." +msgstr "" +"È stato immesso un valore non numerico per i commenti di spam minimi per " +"campo IP. E 'stato impostato il valore di default." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:219 +#, php-format +msgid "" +"Displaying results for IP addresses which have posted a minimum of %s SPAM " +"comments" +msgstr "" +"Visualizzazione dei risultati per gli indirizzi IP che hanno inviato un " +"minimo di %s commenti spam" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:235 +msgid "" +"This tab displays a list of the IP addresses of the people or bots who have " +"left SPAM comments on your site." +msgstr "" +"Questa scheda visualizza un elenco degli indirizzi IP delle persone o bot che " +"hanno lasciato commenti di spam sul tuo sito." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:236 +msgid "" +"This information can be handy for identifying the most persistent IP " +"addresses or ranges used by spammers." +msgstr "" +"Questa informazione può essere utile per identificare gli indirizzi IP, o " +"intervalli IP, più persistenti dagli spammer." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:237 +msgid "" +"By inspecting the IP address data coming from spammers you will be in a " +"better position to determine which addresses or address ranges you should " +"block by adding them to your blacklist." +msgstr "" +"Osservando i dati degli indirizzi IP provenienti da spammer vi troverete in " +"una posizione migliore per determinare quali indirizzi o intervalli di " +"indirizzi si dovrebbe bloccare aggiungendoli alla lista nera." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:238 +msgid "" +"To add one or more of the IP addresses displayed in the table below to your " +"blacklist, simply click the \"Block\" link for the individual row or select " +"more than one address \n" +" using the checkboxes and then choose the \"block" +"\" option from the Bulk Actions dropdown list and click the \"Apply\" button." +msgstr "" +"Per aggiungere uno o più indirizzi IP visualizzati nella tabella di seguito, " +"alla tua lista nera, è sufficiente cliccare sul collegamento \"Block\" per la " +"singola riga o selezionare più di un indirizzo \n" +" utilizzando le caselle di controllo e quindi " +"scegliere l'opzione dal menu a discesa Azioni in blocco \"block\" e fare clic " +"sul pulsante \"Applica\"." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:244 +msgid "List SPAMMER IP Addresses" +msgstr "Lista indirizzi IP SPAMMER" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:250 +msgid "Minimum number of SPAM comments per IP" +msgstr "Numero minimo di commenti spam per IP" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:252 +msgid "" +"This field allows you to list only those IP addresses which have been used to " +"post X or more SPAM comments." +msgstr "" +"Questo campo consente di elencare solo gli indirizzi IP che sono stati " +"utilizzati per pubblicare X o più commenti spam." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:256 +msgid "" +"Example 1: Setting this value to \"0\" or \"1\" will list ALL IP addresses " +"which were used to submit SPAM comments." +msgstr "" +"Esempio 1: Impostando questo valore a \"0\" o \"1\" verranno elencati tutti " +"gli indirizzi IP che sono stati utilizzati per inviare commenti spam." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:257 +msgid "" +"Example 2: Setting this value to \"5\" will list only those IP addresses " +"which were used to submit 5 SPAM comments or more on your site." +msgstr "" +"Esempio 2: Impostando questo valore a \"5\" elencherà solo gli indirizzi IP " +"usati per creare almeno 5 commenti SPAM o più sul tuo sito." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:264 +msgid "Find IP Addresses" +msgstr "Trova Indirizzo IP" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:268 +msgid "SPAMMER IP Address Results" +msgstr "Risultato Indirizzi IP SPAMMER" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:274 ../classes/wp-security-utility.php:169 +msgid "" +"The plugin has detected that you are using a Multi-Site WordPress " +"installation." +msgstr "" +"Il plugin ha rilevato che si sta usando una installazione di WordPress Multi-" +"Site." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:275 +msgid "Only the \"superadmin\" can block IP addresses from the main site." +msgstr "" +"Solo il \"superadmin\" può bloccare gli indirizzi IP dal sito principale." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:276 +msgid "" +"Take note of the IP addresses you want blocked and ask the superadmin to add " +"these to the blacklist using the \"Blacklist Manager\" on the main site." +msgstr "" +"Prendere nota degli indirizzi IP da bloccare e chiedere al superadmin di " +"aggiungere questi per la lista nera con \"Gestione Blacklist\" sul sito " +"principale." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:321 +msgid "BuddyPress SPAM Settings" +msgstr "Impostazioni BuddyPress SPAM" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:326 +msgid "Add Captcha To BuddyPress Registration Form" +msgstr "Aggiungere Captcha nel Modulo di Registrazione BuddyPress" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:330 +msgid "" +"This feature will add a simple math captcha field in the BuddyPress " +"registration form." +msgstr "" +"Questa caratteristica aggiunge un campo captcha matematico semplice nel " +"modulo di registrazione BuddyPress." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:331 +msgid "" +"Adding a captcha field in the registration form is a simple way of greatly " +"reducing SPAM signups from bots without using .htaccess rules." +msgstr "" +"Aggiunta di un campo captcha nel modulo di registrazione è un modo semplice " +"di ridurre notevolmente iscrizioni da bots spam senza utilizzare regole ." +"htaccess." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:341 +msgid "Enable Captcha On BuddyPress Registration Form" +msgstr "Attiva Captcha nella Pagina di Registrazione di BuddyPress" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:344 +msgid "" +"Check this if you want to insert a captcha field on the BuddyPress " +"registration forms" +msgstr "" +"Seleziona questo se desideri inserire un campo captcha nel modulo di " +"registrazione BuddyPress" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-spam-menu.php:353 +msgid "" +"BuddyPress is not active! In order to use this feature you will need to have " +"BuddyPress installed and activated." +msgstr "" +"BuddyPress non è attivo! Per poter utilizzare questa funzione è necessario " +"aver installato e attivato BuddyPress." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:29 +msgid "WP Username" +msgstr "Nome utente WP" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:30 +msgid "Display Name" +msgstr "Nome Visualizzato" + +# @ all-in-one-wp-security-and-firewall +# @ default +#: ../admin/wp-security-user-accounts-menu.php:31 +#: ../other-includes/wp-security-rename-login-feature.php:915 +msgid "Password" +msgstr "Password" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:85 +msgid "Admin User Security" +msgstr "Sicurezza Utente Admin" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:88 +msgid "" +"By default, WordPress sets the administrator username to \"admin\" at " +"installation time." +msgstr "" +"Per impostazione predefinita, WordPress imposta il nome utente amministratore " +"come \"admin\" al momento dell'installazione." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:89 +msgid "" +"A lot of hackers try to take advantage of this information by attempting " +"\"Brute Force Login Attacks\" where they repeatedly try to guess the password " +"by using \"admin\" for username." +msgstr "" +"Un sacco di hacker cercano di approfittare di queste informazioni, tentando " +"\"Attacchi Brute Force Login\" dove hanno più possibilità di indovinare la " +"password utilizzando \"admin \" per il nome utente." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:90 +msgid "" +"From a security perspective, changing the default \"admin\" user name is one " +"of the first and smartest things you should do on your site." +msgstr "" +"Dal punto di vista della sicurezza, la modifica del valore predefinito nome " +"utente \"admin\" è una delle prime e più intelligenti cose che dovresti fare " +"sul tuo sito." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:91 +msgid "" +"This feature will allow you to change your default \"admin\" user name to a " +"more secure name of your choosing." +msgstr "" +"Questa funzione permette di cambiare il nome utente predefinito \"admin \" " +"in un nome più sicuro a tua scelta." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:98 +msgid "List of Administrator Accounts" +msgstr "Lista Account di Amministrazione" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:107 +#: ../classes/grade-system/wp-security-feature-item-manager.php:36 +msgid "Change Admin Username" +msgstr "Cambia Nome Utente Admin" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:115 +msgid "" +"Your site currently has an account which uses the default \"admin\" " +"username. \n" +" It is highly recommended that you change this name to " +"something else. \n" +" Use the following field to change the admin username." +msgstr "" +"Il sito attualmente ha un account che usa il nome utente predefinito \"admin" +"\" . \n" +" È altamente consigliato modificare questo nome in qualcosa " +"d'altro. \n" +" Utilizzare il seguente campo per modificare il nome utente " +"admin." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:123 +msgid "New Admin Username" +msgstr "Nuovo Nome Utente Admin" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:125 +msgid "Choose a new username for admin." +msgstr "Scegli nuovo nome utente per admin" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:129 +msgid "Change Username" +msgstr "Cambia Nome Utente" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:131 +msgid "" +"NOTE: If you are currently logged in as \"admin\" you will be automatically " +"logged out after changing your username and will be required to log back in." +msgstr "" +"NOTA: Se si è effettuato l'accesso come \"admin\" si viene automaticamente " +"disconnessi dopo aver cambiato il nome utente e sarà richiesto di effettuare " +"il login per rientrare." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:138 +msgid "No action required! " +msgstr "Nessuna azione richiesta!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:140 +msgid "" +"Your site does not have any account which uses the default \"admin\" " +"username. " +msgstr "" +"Il tuo sito non ha nessun account che usa il nome utente predefinito \"admin" +"\"." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:141 +msgid "This is good security practice." +msgstr "Questa è una buona pratica di sicurezza." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:153 +msgid "Display Name Security" +msgstr "Nome Sicurezza Visualizzato" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:156 +msgid "" +"When you submit a post or answer a comment, WordPress will usually display " +"your \"nickname\"." +msgstr "" +"Quando si pubblica un articolo o si risponde a un commento, WordPress farà " +"comparire il tuo \"nickname\"." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:157 +msgid "" +"By default the nickname is set to the login (or user) name of your account." +msgstr "" +"Per impostazione predefinita, il nickname impostato per il login (o utente) è " +"il nome del tuo account." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:158 +msgid "" +"From a security perspective, leaving your nickname the same as your user name " +"is bad practice because it gives a hacker at least half of your account's " +"login credentials." +msgstr "" +"Dal punto di vista della sicurezza, lasciando il tuo nickname uguale al tuo " +"nome utente, è sbagliato e pericoloso, perché offre su un piatto a un hacker " +"almeno la metà delle credenziali di accesso del tuo account." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:159 +msgid "" +"Therefore to further tighten your site's security you are advised to change " +"your nickname and Display name to be " +"different from your Username." +msgstr "" +"Quindi per stringere ulteriormente la sicurezza del tuo sito si consiglia di " +"cambiare il tuo nickname e Nome Visualizzato in modo che siano diverso da Nome Utente." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:165 +msgid "Modify Accounts With Identical Login Name & Display Name" +msgstr "Modifica Account con Identico Nome Login & Nome Visualizzato" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:174 +msgid "" +"Your site currently has the following accounts which have an identical login " +"name and display name." +msgstr "" +"Il sito ha attualmente i seguenti account che hanno un nome di login identico " +"al nome visualizzato." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:175 +msgid "Click on the link to edit the settings of that particular user account" +msgstr "" +"Clicca sul collegamento per modificare le impostazioni di quel particolare " +"account utente" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:190 +msgid "No action required." +msgstr "Nessuna azione richiesta" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:191 +msgid "" +"Your site does not have a user account where the display name is identical to " +"the username." +msgstr "" +"Il sito non dispone di un account utente in cui il nome di visualizzazione è " +"identica al nome utente." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:202 +msgid "Password Tool" +msgstr "Strumento Password" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:205 +msgid "" +"Poor password selection is one of the most common weak points of many sites " +"and is usually the first thing a hacker will try to exploit when attempting " +"to break into your site." +msgstr "" +"Scelta di password brevi o facili è uno dei punti deboli più comuni di molti " +"siti e di solito è la prima cosa che un hacker cercherà di sfruttare quando " +"tenta di violare il sito." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:206 +msgid "" +"Many people fall into the trap of using a simple word or series of numbers as " +"their password. Such a predictable and simple password would take a competent " +"hacker merely minutes to guess your password by using a simple script which " +"cycles through the easy and most common combinations." +msgstr "" +"Molte persone cadono nella trappola di usare una semplice parola o una serie " +"di numeri come password. Tale parola, prevedibile e semplice, permette a un " +"hacker competente di indovinare la password in pochi minuti, utilizzando un " +"semplice script che crea cicli di combinazioni semplici e più comuni." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:207 +msgid "" +"The longer and more complex your password is the harder it is for hackers to " +"\"crack\" because more complex passwords require much greater computing power " +"and time." +msgstr "" +"Una password più lunga e complessa è più difficile per gli hacker da " +"\"crackare \", perché richiede maggiore tempo e potenza di calcolo." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:208 +msgid "" +"This section contains a useful password strength tool which you can use to " +"check whether your password is sufficiently strong enough." +msgstr "" +"Questa sezione contiene un utile strumento password che è possibile " +"utilizzare per controllare se la password è sufficientemente forte." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:213 +msgid "Password Strength Tool" +msgstr "Strumento Forza Password" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:218 +msgid "Start typing a password." +msgstr "Iniziare a digitare una password." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:221 +msgid "It would take a desktop PC approximately" +msgstr "Con un PC desktop ci vorrebbe circa" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:222 +msgid "1 sec" +msgstr "1 sec" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:222 +msgid "to crack your password!" +msgstr "per crackare la tua password!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:227 +msgid "Password Strength" +msgstr "Forza Password" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:243 +msgid "Nonce check failed on admin username change operation!" +msgstr "" +"Check controllo fallito nell'operazione di cambiamento del nome utente admin!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:250 +msgid "Username " +msgstr "Nome Utente" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:250 +msgid " already exists. Please enter another value. " +msgstr "già esistente. Inserisci un altro valore." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:266 +msgid "The database update operation of the user account failed!" +msgstr "" +"L'operazione di aggiornamento database dell'account utente non è riuscita!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:295 +msgid "You entered an invalid username. Please enter another value. " +msgstr "" +"Hai inserito un nome utente non valido. Si prega di inserire un altro valore." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:299 +msgid "Please enter a value for your username. " +msgstr "Prego inserisci un valore per il nome utente." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:306 +msgid "Username Successfully Changed!" +msgstr "Nome Utente Cambiato con Successo!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-accounts-menu.php:326 +msgid "Account Login Name" +msgstr "Nome Login Account" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:26 +#: ../admin/wp-security-user-login-menu.php:298 +msgid "Failed Login Records" +msgstr "Record Login Falliti" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:27 +#: ../classes/grade-system/wp-security-feature-item-manager.php:51 +msgid "Force Logout" +msgstr "Forza Logout Utente" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:28 +#: ../admin/wp-security-user-login-menu.php:432 +msgid "Account Activity Logs" +msgstr "Account Attività Logs" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:96 +msgid "" +"You entered a non numeric value for the max login attempts field. It has been " +"set to the default value." +msgstr "" +"È stato immesso un valore non numerico per il campo max tentativi di login. È " +"stato impostato il valore di default." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:103 +msgid "" +"You entered a non numeric value for the login retry time period field. It has " +"been set to the default value." +msgstr "" +"È stato immesso un valore non numerico per il campo periodo di tempo login " +"riprovare. E' stato impostato il valore di default." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:159 +msgid "Login Lockdown Configuration" +msgstr "Configurazione Blocco Login" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:163 +msgid "One of the ways hackers try to compromise sites is via a " +msgstr "" +"Uno dei modi con cui gli hacker tentano di compromettere siti è tramite un" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:163 +msgid "Brute Force Login Attack" +msgstr "Attacco Brute Force Login" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:164 +msgid "" +"This is where attackers use repeated login attempts until they guess the " +"password." +msgstr "" +"Questo è dove gli aggressori usano i tentativi di accesso ripetuti fino a " +"quando non indovinano la password." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:165 +msgid "" +"Apart from choosing strong passwords, monitoring and blocking IP addresses " +"which are involved in repeated login failures in a short period of time is a " +"very effective way to stop these types of attacks." +msgstr "" +"Oltre alla scelta di password, il monitoraggio e il blocco degli indirizzi IP " +"che sono coinvolti in errori di login ripetuti in un breve periodo di tempo è " +"un modo molto efficace per fermare questi tipi di attacchi." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:166 +#, php-format +msgid "" +"You may also want to checkout our %s feature for another secure way to " +"protect against these types of attacks." +msgstr "" +"Si consiglia inoltre di vedere %s un altro modo sicuro per proteggere contro " +"questi tipi di attacchi." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:171 +msgid "Login Lockdown Options" +msgstr "Opzioni Blocco Login" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:183 +msgid "Enable Login Lockdown Feature" +msgstr "Attiva Funzioni Blocco Login" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:186 +msgid "" +"Check this if you want to enable the login lockdown feature and apply the " +"settings below" +msgstr "" +"Seleziona questa casella per attivare la funzione di blocco accesso e " +"applicare le seguenti impostazioni" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:190 +msgid "Allow Unlock Requests" +msgstr "Consenti richieste di sblocco" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:193 +msgid "" +"Check this if you want to allow users to generate an automated unlock request " +"link which will unlock their account" +msgstr "" +"Seleziona questa casella se desideri consentire agli utenti di generare una " +"richiesta di link sblocco automatico che sbloccherà il loro account" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:197 +msgid "Max Login Attempts" +msgstr "Max Tentativi Login" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:199 +msgid "" +"Set the value for the maximum login retries before IP address is locked out" +msgstr "" +"Impostare il valore per il numero massimo di tentativi d'accesso prima che " +"l'indirizzo IP venga bloccato" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:203 +msgid "Login Retry Time Period (min)" +msgstr "Tempo Tentativi Riprova Login (min)" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:205 +msgid "" +"If the maximum number of failed login attempts for a particular IP address " +"occur within this time period the plugin will lock out that address" +msgstr "" +"Se il numero massimo di tentativi di accesso non riusciti per un particolare " +"indirizzo IP avviene entro questo periodo di tempo il plugin blocca " +"quell'indirizzo" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:209 +msgid "Time Length of Lockout (min)" +msgstr "Tempo Durata Blocco (min)" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:211 +msgid "" +"Set the length of time for which a particular IP address will be prevented " +"from logging in" +msgstr "" +"Impostare il periodo di tempo per il quale sarà impedito il login a un " +"particolare indirizzo IP" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:215 +msgid "Display Generic Error Message" +msgstr "Mostra Messaggio Errore Generico" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:218 +msgid "" +"Check this if you want to show a generic error message when a login attempt " +"fails" +msgstr "" +"Seleziona questa casella per mostrare un messaggio di errore generico quando " +"fallsce il login nel tempo" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:222 +msgid "Instantly Lockout Invalid Usernames" +msgstr "Blocca immediatamente Nomi Utenti non validi" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:225 +msgid "" +"Check this if you want to instantly lockout login attempts with usernames " +"which do not exist on your system" +msgstr "" +"Seleziona questa casella se vuoi bloccare istantaneamente i tentativi di " +"accesso con nomi utente che non esistono sul tuo sistema" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:230 +msgid "Notify By Email" +msgstr "Notifica via Email" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:233 +msgid "" +"Check this if you want to receive an email when someone has been locked out " +"due to maximum failed login attempts" +msgstr "" +"Seleziona questa casella se vuoi ricevere una e-mail quando qualcuno è stato " +"bloccato a causa di massimi tentativi falliti d'accesso" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:243 +msgid "Currently Locked Out IP Address Ranges" +msgstr " Intervalli di indirizzi IP attualmente bloccati" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:248 +#, php-format +msgid "" +"To see a list of all locked IP addresses and ranges go to the %s tab in the " +"dashboard menu." +msgstr "" +"Per visualizzare un elenco di tutti gli indirizzi IP bloccati e gli " +"intervalli vai alla scheda %s nel menu della bacheca." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:264 +msgid "Nonce check failed for delete all failed login records operation!" +msgstr "Tentativo non riuscito di eliminare tutti i record di login falliti!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:273 +msgid "User Login Feature - Delete all failed login records operation failed!" +msgstr "" +"Funzioni Login Utente - Operazione per eliminirare i record login falliti non " +"riuscita!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:277 +msgid "All records from the Failed Logins table were deleted successfully!" +msgstr "" +"Tutti i record della tabella accessi non riusciti sono stati cancellati con " +"successo!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:292 +msgid "This tab displays the failed login attempts for your site." +msgstr "" +"Questa scheda visualizza i tentativi di accesso non riusciti per il tuo sito." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:293 +msgid "" +"The information below can be handy if you need to do security investigations " +"because it will show you the IP range, username and ID (if applicable) and " +"the time/date of the failed login attempt." +msgstr "" +"Le informazioni qui di seguito possono essere utili se hai bisogno di fare " +"indagini sulla sicurezza, perché mostreranno l'intervallo IP, nome utente e " +"ID (se applicabile) e la data/ora del tentativo di accesso non riuscito." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:314 +#: ../admin/wp-security-user-login-menu.php:323 +msgid "Delete All Failed Login Records" +msgstr "Elimina tutti i record Login Falliti" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:320 +msgid "" +"Click this button if you wish to delete all failed login records in one go." +msgstr "" +"Clicca su questo pulsante se vuoi eliminare tutti i record di accesso non " +"riusciti in un colpo solo." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:348 +msgid "" +"You entered a non numeric value for the logout time period field. It has been " +"set to the default value." +msgstr "" +"È stato immesso un valore non numerico per il campo periodo di tempo " +"disconnessione. Reimpostato il valore di default." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:376 +msgid "" +"Setting an expiry period for your WP administration session is a simple way " +"to protect against unauthorized access to your site from your computer." +msgstr "" +"Impostare un periodo di scadenza per la sessione di amministrazione WP è un " +"modo semplice per proteggere il sito dall'accesso non autorizzato da computer." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:377 +msgid "" +"This feature allows you to specify a time period in minutes after which the " +"admin session will expire and the user will be forced to log back in." +msgstr "" +"Questa funzione consente di specificare un periodo di tempo in minuti dopo il " +"quale la sessione di amministrazione scadrà e l'utente sarà costretto ad " +"accedere di nuovo." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:382 +msgid "Force User Logout Options" +msgstr "Opzioni Forza Logout Utente" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:394 +msgid "Enable Force WP User Logout" +msgstr "Attiva Logout WP Utente Forzato" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:397 +msgid "" +"Check this if you want to force a wp user to be logged out after a configured " +"amount of time" +msgstr "" +"Seleziona questa casella se vuoi forzare un utente wp a ri-autenticarsi dopo " +"un periodo di tempo scelto" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:401 +msgid "Logout the WP User After XX Minutes" +msgstr "Disconnetti l'Utente WP Dopo XX Minuti" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:403 +msgid "" +"(Minutes) The user will be forced to log back in after this time period has " +"elapased." +msgstr "" +"(Minuti), l'utente sarà costretto a ricollegarsi dopo che è trascorso questo " +"periodo di tempo." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:426 +msgid "" +"This tab displays the login activity for WordPress admin accounts registered " +"with your site." +msgstr "" +"Questa scheda visualizza l'attività di accesso per gli account WordPress di " +"amministrazione registrati nel tuo sito." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:427 +msgid "" +"The information below can be handy if you need to do security investigations " +"because it will show you the last 50 recent login events by username, IP " +"address and time/date." +msgstr "" +"Le informazioni di seguito possono essere utili per fare indagini sulla " +"sicurezza, perché mostrano gli ultimi 50 eventi Recenti di Login per nome " +"utente, indirizzo IP e la data/ora." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:470 +msgid "Nonce check failed for users logged in list!" +msgstr "Verifica fallita di utenti in lista connessi!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:478 +msgid "Refresh Logged In User Data" +msgstr "Riacricamento Dati Login Utente" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:482 +msgid "Refresh Data" +msgstr "Ricarica Dati" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:488 +msgid "This tab displays all users who are currently logged into your site." +msgstr "" +"Questa scheda consente di visualizzare tutti gli utenti che sono connessi nel " +"tuo sito." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:489 +msgid "" +"If you suspect there is a user or users who are logged in which should not " +"be, you can block them by inspecting the IP addresses from the data below and " +"adding them to your blacklist." +msgstr "" +"Se si sospetta ci sia uno o più utenti registrati, che non dovrebbero " +"esserci, è possibile bloccarli ispezionando gli indirizzi IP dai dati qui " +"sotto e aggiungendoli alla tua lista nera." + +#: ../admin/wp-security-user-login-menu.php:490 +msgid "" +"You can also instantly log them out by clicking on the \"Force Logout\" link " +"when you hover over the row in the User Id column." +msgstr "" +"Puoi anche disconnetterli istantaneamente cliccando sul link \"Forza Logout\" " +"quando passerai sopra alla colonna User Id." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:495 +msgid "Currently Logged In Users" +msgstr "Utenti Connessi Ora" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:560 +msgid "The selected records were deleted successfully!" +msgstr "I record selezionati sono stati cancellati con successo!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-login-menu.php:570 +msgid "The selected record was deleted successfully!" +msgstr "Il record selezionato è stato cancellato con successo!" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-registration-menu.php:23 +msgid "Manual Approval" +msgstr "Approvazione manuale" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-registration-menu.php:24 +#: ../classes/grade-system/wp-security-feature-item-manager.php:57 +msgid "Registration Captcha" +msgstr "Impostazioni Captcha Registrazione" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-registration-menu.php:112 +msgid "User Registration Settings" +msgstr "Impostazioni Registrazione Utenti" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-registration-menu.php:116 +msgid "Manually Approve New Registrations" +msgstr "Approvazione Manuale Nuove Registrazioni" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-registration-menu.php:120 +msgid "" +"If your site allows people to create their own accounts via the WordPress " +"registration form, then you can minimize SPAM or bogus registrations by " +"manually approving each registration." +msgstr "" +"Se il sito consente agli utenti di creare i propri account tramite il modulo " +"di registrazione WordPress, allora è possibile ridurre SPAM o registrazioni " +"fasulle approvando manualmente ogni registrazione." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-registration-menu.php:121 +msgid "" +"This feature will automatically set a newly registered account to \"pending\" " +"until the administrator activates it. Therefore undesirable registrants will " +"be unable to log in without your express approval." +msgstr "" +"Questa funzione consente di impostare automaticamente un account appena " +"registrato \"in attesa\" fino a quando l'amministratore lo attiva. " +"Pertanto, gli iscritti indesiderati non saranno in grado di accedere senza la " +"vostra approvazione esplicita." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-registration-menu.php:122 +msgid "" +"You can view all accounts which have been newly registered via the handy " +"table below and you can also perform bulk activation/deactivation/deletion " +"tasks on each account." +msgstr "" +"È possibile visualizzare tutti gli account che sono stati recentemente " +"registrati tramite la tabella qui sotto e si possono anche effettuare " +"operazioni di attivazione/disattivazione/eliminazione di massa su ogni " +"account." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-registration-menu.php:138 +msgid "Enable manual approval of new registrations" +msgstr "Attiva approvazione manuale di nuove registrazioni" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-registration-menu.php:141 +msgid "" +"Check this if you want to automatically disable all newly registered accounts " +"so that you can approve them manually." +msgstr "" +"Seleziona questa casella se desideri disattivare automaticamente tutti gli " +"account di nuova registrazione in modo da approvarli manualmente." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-registration-menu.php:150 +msgid "Approve Registered Users" +msgstr "Approva Utenti registrati " + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-registration-menu.php:195 +msgid "" +"This feature allows you to add a captcha form on the WordPress registration " +"page." +msgstr "" +"Questa funzione consente di aggiungere un modulo captcha nella pagina di " +"registrazione di WordPress." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-registration-menu.php:196 +msgid "" +"Users who attempt to register will also need to enter the answer to a simple " +"mathematical question - if they enter the wrong answer, the plugin will not " +"allow them to register." +msgstr "" +"Gli utenti che tentano di registrarsi devono inserire la risposta ad una " +"semplice domanda matematica - se inseriscono la risposta sbagliata il plugin " +"non permetterà loro di registrarsi." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-registration-menu.php:197 +msgid "" +"Therefore, adding a captcha form on the registration page is another " +"effective yet simple SPAM registration prevention technique." +msgstr "" +"Pertanto, l'aggiunta di un modulo captcha nella pagina di registrazione, è " +"un'altra tecnica semplice ma efficace per prevenire registrazioni SPAM." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-registration-menu.php:202 +msgid "Registration Page Captcha Settings" +msgstr "Impostazioni Captcha Pagina Registrazione" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-registration-menu.php:209 +msgid "" +"The core default behaviour for WordPress Multi Site regarding user " +"registration is that all users are registered via the main site." +msgstr "" +"Il comportamento predefinito di base per WordPress Multi Site, per quanto " +"riguarda la registrazione degli utenti, è che tutti gli utenti sono " +"registrati attraverso il sito principale." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-registration-menu.php:210 +msgid "" +"Therefore, if you would like to add a captcha form to the registration page " +"for a Multi Site, please go to \"Registration Captcha\" settings on the main " +"site." +msgstr "" +"Pertanto, se si desidera aggiungere un modulo captcha alla pagina di " +"registrazione per un Multi Sito, si prega di andare in Impostazioni " +"\"Registrazione Captcha\" sul sito principale." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-registration-menu.php:225 +msgid "Enable Captcha On Registration Page" +msgstr "Attiva Captcha nella Pagina di Registrazione" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-user-registration-menu.php:228 +msgid "" +"Check this if you want to insert a captcha form on the WordPress user " +"registration page (if you allow user registration)." +msgstr "" +"Seleziona questo se desideri inserire un modulo captcha nella pagina di " +"registrazione utente WordPress (se si consente la registrazione dell'utente)." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-whois-menu.php:22 +msgid "WhoIS Lookup" +msgstr "Ricerca WHOIS" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-whois-menu.php:74 +msgid "WHOIS Lookup Information" +msgstr "Cerca Informazioni WHOIS" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-whois-menu.php:77 +msgid "" +"This feature allows you to look up more detailed information about an IP " +"address or domain name by querying the WHOIS API." +msgstr "" +"Questa funzione consente di cercare informazioni più dettagliate su un " +"indirizzo IP o nome di dominio tramite l'API WHOIS." + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-whois-menu.php:83 +msgid "Perform a WHOIS Lookup for an IP or Domain Name" +msgstr "Eseguire una ricerca con whois per un IP o nome di dominio" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-whois-menu.php:89 +msgid "Enter IP Address or Domain Name" +msgstr "Inserisci l'indirizzo IP o il Nome Dominio" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-whois-menu.php:91 +msgid "" +"Enter an IP address or domain name. Example: 111.11.12.13 OR some-domain-name." +"com" +msgstr "" +"Inserire un indirizzo IP o il nome del dominio. Esempio: 111.11.12.13 O nome-" +"dominio-chevuoi.com" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-whois-menu.php:95 +msgid "Perform IP or Domain Lookup" +msgstr "Eseguire ricerca IP o di dominio" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-whois-menu.php:115 +msgid "WHOIS lookup successfully completed. Please see the results below:" +msgstr "" +"WHOIS completato con successo. Si prega di vedere i risultati di seguito:" + +# @ all-in-one-wp-security-and-firewall +#: ../admin/wp-security-whois-menu.php:127 +msgid "" +"You have entered an incorrectly formatted IP address or domain name. Please " +"try again." +msgstr "" +"È stato immesso un indirizzo IP, o il nome dominio, non correttamente " +"formattato. Riprova." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/grade-system/wp-security-feature-item-manager.php:29 +msgid "Remove WP Generatore Meta Tag" +msgstr "Rimuovi Generatore WP Meta Tag" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/grade-system/wp-security-feature-item-manager.php:38 +msgid "Change Display Name" +msgstr "Cambia Nome Visualizzato" + +#: ../classes/grade-system/wp-security-feature-item-manager.php:45 +msgid "Custom Login Captcha" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/grade-system/wp-security-feature-item-manager.php:47 +msgid "Lost Password Captcha" +msgstr "Password persa Captcha" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/grade-system/wp-security-feature-item-manager.php:49 +msgid "Login IP Whitelisting" +msgstr "Lista Bianca IP Login" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/grade-system/wp-security-feature-item-manager.php:55 +msgid "Registration Approval" +msgstr "Approvazione registrazione" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/grade-system/wp-security-feature-item-manager.php:71 +msgid "WordPress Files Access" +msgstr "Accesso File WordPress" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/grade-system/wp-security-feature-item-manager.php:75 +msgid "IP and User Agent Blacklisting" +msgstr "IP o User Agent Blacklist" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/grade-system/wp-security-feature-item-manager.php:79 +msgid "Enable Basic Firewall" +msgstr "Attiva Firewall Base" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/grade-system/wp-security-feature-item-manager.php:80 +msgid "Enable Pingback Vulnerability Protection" +msgstr "Attiva Protezione Vulnerabilità Pingback" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/grade-system/wp-security-feature-item-manager.php:82 +msgid "Enable IP blocking for 404 detection" +msgstr "Attivare il blocco IP per rilevamento 404" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/grade-system/wp-security-feature-item-manager.php:86 +msgid "Enable Rename Login Page" +msgstr "Attiva rinomina pagina login" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/grade-system/wp-security-feature-item-manager.php:88 +msgid "Enable Login Honeypot" +msgstr "Attiva Honeypot Login" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/grade-system/wp-security-feature-item-manager.php:94 +msgid "Forbid Proxy Comments" +msgstr "Vieta commenti via Proxy" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/grade-system/wp-security-feature-item-manager.php:95 +msgid "Deny Bad Queries" +msgstr "Nega Stringhe Dannose" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/grade-system/wp-security-feature-item-manager.php:97 +msgid "5G Blacklist" +msgstr "Blacklist 5G" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/grade-system/wp-security-feature-item-manager.php:100 +msgid "Block Spambots" +msgstr "Blocca Spambots" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/grade-system/wp-security-feature-item-manager.php:102 +msgid "Comment Captcha" +msgstr "Captcha Commenti" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/grade-system/wp-security-feature-item-manager.php:104 +msgid "BuddyPress Registration Captcha" +msgstr "BuddyPress Registrazione Captcha" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/grade-system/wp-security-feature-item.php:28 +msgid "Basic" +msgstr "Base" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/grade-system/wp-security-feature-item.php:31 +msgid "Intermediate" +msgstr "Intermedio" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/grade-system/wp-security-feature-item.php:34 +msgid "Advanced" +msgstr "Avanzate" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-backup.php:189 +msgid "All In One WP Security - Site Database Backup" +msgstr "All In One WP Security - Backup Database Sito" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-backup.php:191 +msgid "Attached is your latest DB backup file for site URL" +msgstr "In allegato è il file di backup DB più recente per l'URL del sito" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-backup.php:191 +msgid " generated on" +msgstr "generati su" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-captcha.php:17 +#: ../classes/wp-security-general-init-tasks.php:255 +msgid "Please enter an answer in digits:" +msgstr "Inserisci una risposta in cifre:" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-captcha.php:96 +msgid "one" +msgstr "uno" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-captcha.php:97 +msgid "two" +msgstr "due" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-captcha.php:98 +msgid "three" +msgstr "tre" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-captcha.php:99 +msgid "four" +msgstr "quattro" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-captcha.php:100 +msgid "five" +msgstr "cinque" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-captcha.php:101 +msgid "six" +msgstr "sei" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-captcha.php:102 +msgid "seven" +msgstr "sette" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-captcha.php:103 +msgid "eight" +msgstr "otto" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-captcha.php:104 +msgid "nine" +msgstr "nove" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-captcha.php:105 +msgid "ten" +msgstr "dieci" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-captcha.php:106 +msgid "eleven" +msgstr "undici" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-captcha.php:107 +msgid "twelve" +msgstr "dodici" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-captcha.php:108 +msgid "thirteen" +msgstr "tredici" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-captcha.php:109 +msgid "fourteen" +msgstr "quattordici" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-captcha.php:110 +msgid "fifteen" +msgstr "quindici" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-captcha.php:111 +msgid "sixteen" +msgstr "sedici" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-captcha.php:112 +msgid "seventeen" +msgstr "diciassette" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-captcha.php:113 +msgid "eighteen" +msgstr "diciotto" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-captcha.php:114 +msgid "nineteen" +msgstr "diciannove" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-captcha.php:115 +msgid "twenty" +msgstr "venti" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:65 +msgid "All In One WP Security - File change detected!" +msgstr "All In One WP Security - Rilevata Modifica File!" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:67 +msgid "A file change was detected on your system for site URL" +msgstr "Un cambiamento file è stato rilevato sul sistema del sito con URL" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:67 +msgid ". Scan was generated on" +msgstr ". La scansione è stata generata" + +#: ../classes/wp-security-file-scan.php:68 +msgid "A summary of the scan results is shown below:" +msgstr "Riepilogo del risultato della scansione:" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:77 +msgid "Login to your site to view the scan details." +msgstr "Accedi al sito per visualizzare i dettagli di scansione." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:282 +msgid "" +"Starting DB scan.....please wait while the plugin scans your database......." +msgstr "" +"Avvio scansione DB ..... sei pregato di pazientare mentre il plugin esegue la " +"scansione del database ......." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:286 +msgid "Scanning options table........." +msgstr "Scansione tabella options........." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:355 +#, php-format +msgid "%s and option_id: %s" +msgstr "%s e option_id: %s" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:358 +#, php-format +msgid "" +"Deletion of known pharma hack entry for option_name %s failed. Please delete " +"this entry manually!" +msgstr "" +"Soppressione di una nota voce pharma hack per option_name %s fallito. Si " +"prega di eliminare questa voce manualmente! " + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:360 +#, php-format +msgid "" +"The options table entry with known pharma hack for option_id %s with " +"option_name %s was successfully deleted" +msgstr "" +"La voce della tabella options con il noto pharma hack per option_id %s with " +"option_name %s è stata eliminata con successo" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:374 +#, php-format +msgid "Possible suspicious entry found (for option_id: %s) - %s " +msgstr "Possibile voce sospetta trovata (per option_id: %s) - %s " + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:383 +msgid "No suspicious entries found in options table" +msgstr "Nessuna voce sospetta trovata nella tabella options" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:387 +msgid "Scanning posts table........." +msgstr "Scansione tabella posts........." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:427 +#, php-format +msgid "" +"Possible suspicious entry found (for Post ID: %s) in the following column - " +"%s " +msgstr "" +"Possibile voce sospetta trovato (per Post ID: %s) nella colonna seguente - %s " + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:436 +msgid "No suspicious entries found in posts table" +msgstr "Nessuna voce sospetta trovata nella tabella post" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:440 +msgid "Scanning links table........." +msgstr "Scansione tabella link........." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:479 +#: ../classes/wp-security-file-scan.php:530 +#: ../classes/wp-security-file-scan.php:558 +#: ../classes/wp-security-file-scan.php:586 +#: ../classes/wp-security-file-scan.php:635 +#, php-format +msgid "Possible suspicious entry - %s " +msgstr "Possibile voce sospetta - %s " + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:488 +msgid "No suspicious entries found in links table" +msgstr "Nessuna voce sospetta trovata nella tabella link" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:492 +msgid "Scanning comments table........." +msgstr "Scansione tabella comments........." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:539 +msgid "No suspicious entries found in comments table" +msgstr "Nessuna voce sospetta trovata nella tabella comments" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:543 +msgid "Scanning postmeta table........." +msgstr "Scansione tabella postmeta........." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:567 +msgid "No suspicious entries found in postmeta table" +msgstr "Nessuna voce sospetta trovata nella tabella postmeta" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:571 +msgid "Scanning usermeta table........." +msgstr "Scansione tabella usermeta........." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:595 +msgid "No suspicious entries found in usermeta table" +msgstr "Nessuna voce sospetta trovata nella tabella usermeta" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:599 +msgid "Scanning users table........." +msgstr "Scansione tabella users........." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:644 +msgid "No suspicious entries found in users table" +msgstr "Nessuna voce sospetta trovata nella tabella users" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:651 +msgid "" +"The plugin has detected that there are some potentially suspicious entries in " +"your database." +msgstr "" +"Il plugin ha rilevato che ci sono alcune voci potenzialmente sospette nel " +"database." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:652 +msgid "" +"Please verify the results listed below to confirm whether the entries " +"detected are genuinely suspicious or if they are false positives." +msgstr "" +"Si prega di verificare i risultati elencati di seguito per confermare se le " +"voci rilevate sono effettivamente sospette o sono falsi positivi." + +# @ default +#: ../classes/wp-security-file-scan.php:657 +#: ../classes/wp-security-file-scan.php:672 +msgid "Disclaimer:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:658 +msgid "" +"Even though this database scan has revealed some suspicious entries, this " +"does not necessarily mean that other parts of your DB or site are also not " +"compromised." +msgstr "" +"Anche se questa scansione del database ha rivelato alcune voci sospette, " +"questo non significa necessariamente che le altre parti del vostro DB, o " +"sito, non siano compromessi." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:659 +#: ../classes/wp-security-file-scan.php:674 +msgid "" +"Please note that database scan performed by this feature is basic and looks " +"for common malicious entries. Since hackers are continually evolving their " +"methods this scan is not meant to be a guaranteed catch-all for malware." +msgstr "" +"Si prega di notare che la scansione dei database eseguita con questa funzione " +"è basilare e cerca le voci malevoli comuni. Dal momento che gli hacker e i " +"loro metodi sono in continua evoluzione questa scansione non è una totale " +"garanzia per il malware." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:660 +#: ../classes/wp-security-file-scan.php:675 +#, php-format +msgid "" +"It is your responsibility to do the due diligence and perform a robust %s on " +"your site if you wish to be more certain that your site is clean." +msgstr "" +"È tua responsabilità fare controlli migliori ed eseguire un robusto %s sul " +"tuo sito se vuoi essere più sicuro che sia pulito." + +# @ default +#: ../classes/wp-security-file-scan.php:667 +msgid "DB Scan was completed successfully. No suspicious entries found." +msgstr "Scansione DB completata con successo. Nessuna voce sospetta trovata." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-file-scan.php:673 +msgid "" +"Even though the database scan has not revealed any suspicious entries, this " +"does not necessarily mean that your site is actually completely clean or not " +"compromised." +msgstr "" +"Anche se la scansione database non ha rivelato voci sospette, questo non " +"garantisce che il sito sia completamente pulito o non compromesso." + +#: ../classes/wp-security-file-scan.php:715 +msgid "The following files were added to your host" +msgstr "I seguenti file sono stati aggiunti al tuo host" + +#: ../classes/wp-security-file-scan.php:717 +#: ../classes/wp-security-file-scan.php:726 +#: ../classes/wp-security-file-scan.php:736 +msgid "modified on: " +msgstr "modificato il: " + +#: ../classes/wp-security-file-scan.php:724 +msgid "The following files were removed from your host" +msgstr "I seguenti file sono stati rimosso dal tuo host" + +#: ../classes/wp-security-file-scan.php:734 +msgid "The following files were changed on your host" +msgstr "I seguenti file sono cambiati nel tuo host" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-general-init-tasks.php:282 +#: ../classes/wp-security-general-init-tasks.php:359 +#: ../classes/wp-security-user-login.php:69 +#: ../classes/wp-security-user-login.php:72 +#: ../classes/wp-security-user-registration.php:68 +msgid "ERROR: Your answer was incorrect - please try again." +msgstr "" +"ERRORE: La risposta è sbagliata - si prega di riprovare." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-general-init-tasks.php:294 +msgid "Enter something special:" +msgstr "Inserisci qualcosa di speciale:" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-general-init-tasks.php:321 +msgid "Please enter an answer in the CAPTCHA field." +msgstr "Inserisci una risposta nel campo CAPTCHA." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-general-init-tasks.php:331 +msgid "" +"Error: You entered an incorrect CAPTCHA answer. Please go back and try again." +msgstr "Errore: Hai inserito una risposta CAPTCHA sbagliata. Prova di nuovo." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-general-init-tasks.php:383 +msgid "Your CAPTCHA answer was incorrect - please try again." +msgstr "La tua risposta CAPTCHA è sbagliata - si prega di riprovare." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-user-login.php:43 +msgid "" +"ERROR: Login failed because your IP address has been " +"blocked. Please contact the administrator." +msgstr "" +"ERRORE: Accesso non riuscito perché il tuo indirizzo IP è " +"stato bloccato a causa di un numero eccessivo di tentativi di login falliti.\n" +" Si prega di contattare l'amministratore." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-user-login.php:82 +msgid "ERROR: The username field is empty." +msgstr "ERRORE: Il campo Nome Utente è vuoto." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-user-login.php:86 +msgid "ERROR: The password field is empty." +msgstr "ERRORE: Il campo password è vuoto." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-user-login.php:106 +#: ../classes/wp-security-user-login.php:132 +msgid "ERROR: Invalid login credentials." +msgstr "ERRORE: credenziali login non valide." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-user-login.php:109 +msgid "ERROR: Invalid username." +msgstr "ERRORE: Nome Utente non valido." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-user-login.php:135 +#, php-format +msgid "" +"ERROR: Incorrect password. Lost your password?" +msgstr "" +"ERRORE: Password non corretta. Hai perso la tua password?" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-user-login.php:146 +msgid "" +"ACCOUNT PENDING: Your account is currently not active. An " +"administrator needs to activate your account before you can login." +msgstr "" +"ACCOUNT IN SOSPESO : Il tuo account non è attivo. Un " +"amministratore deve attivare il tuo account prima di poter accedere." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-user-login.php:269 +msgid "Site Lockout Notification" +msgstr "Avviso Blocco Sito" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-user-login.php:270 +msgid "" +"A lockdown event has occurred due to too many failed login attempts or " +"invalid username:" +msgstr "" +"Un'azione di blocco si è verificata a causa di un numero eccessivo di " +"tentativi di accesso non riusciti, con i seguenti dati utente" + +#: ../classes/wp-security-user-login.php:271 +msgid "Username: " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-user-login.php:272 +msgid "IP Address: " +msgstr "Indirizzo IP:" + +#: ../classes/wp-security-user-login.php:273 +msgid "IP Range: " +msgstr "Gamma indirizzi IP: " + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-user-login.php:274 +msgid "" +"Log into your site's WordPress administration panel to see the duration of " +"the lockout or to unlock the user." +msgstr "" +"Accedi al pannello di amministrazione di WordPress del tuo sito per vedere la " +"durata del blocco o per sbloccare l'utente." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-user-login.php:348 +msgid "Unlock Request Notification" +msgstr "Notifica richiesta sblocco" + +#: ../classes/wp-security-user-login.php:349 +msgid "You have requested for the account with email address " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-user-login.php:350 +msgid "Unlock link: " +msgstr "Link Sblocco:" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-user-login.php:351 +msgid "" +"After clicking the above link you will be able to login to the WordPress " +"administration panel." +msgstr "" +"Dopo aver cliccato sul link qui sopra sarai in grado di accedere al pannello " +"di amministrazione di WordPress." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-user-login.php:518 +#, php-format +msgid "" +"Your session has expired because it has been over %d minutes since your last " +"login." +msgstr "" +"La sessione è scaduta perché è passato più di %d minuti dal tuo ultimo " +"accesso." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-user-login.php:519 +#: ../classes/wp-security-user-login.php:523 +msgid "Please log back in to continue." +msgstr "Accedi nuovamente per continuare." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-user-login.php:522 +msgid "You were logged out because you just changed the \"admin\" username." +msgstr "" +"Sei stato disconnesso perché hai appena cambiato il nome utente \"admin\"." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-user-login.php:548 +msgid "Request Unlock" +msgstr "Richiesta Sblocco" + +#: ../classes/wp-security-user-registration.php:55 +msgid "" +"ERROR: You are not allowed to register because your IP " +"address is currently locked!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-utility-ip-address.php:76 +#: ../classes/wp-security-utility-ip-address.php:95 +#: ../classes/wp-security-utility-ip-address.php:110 +#: ../classes/wp-security-utility-ip-address.php:125 +msgid " is not a valid ip address format." +msgstr "formato indirizzo ip non valido." + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-utility-ip-address.php:133 +msgid "You cannot ban your own IP address: " +msgstr "Non spuoi vietare il tuo indirizzo IP:" + +# @ all-in-one-wp-security-and-firewall +#: ../classes/wp-security-utility.php:170 +msgid "" +"This feature can only be configured by the \"superadmin\" on the main site." +msgstr "" +"Questa funzione può essere configurata solo dal \"superadmin\" sul sito " +"principale." + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:99 +msgid "https://wordpress.org/" +msgstr "" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:100 +#: ../other-includes/wp-security-unlock-request.php:14 +msgid "Powered by WordPress" +msgstr "" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:217 +#, php-format +msgid "← Back to %s" +msgstr "← Torna a %s" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:282 +msgid "ERROR: Enter a username or e-mail address." +msgstr "" +"ERRORE: inserisci il tuo nome utente o l'indirizzo e-mail" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:286 +msgid "" +"ERROR: There is no user registered with that email address." +msgstr "" +"ERRORE: Nessun utente registrato con questo indirizzo e-mail" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:303 +msgid "ERROR: Invalid username or e-mail." +msgstr "ERRORE: nome utente o indirizzo e-mail non valido" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:341 +msgid "Password reset is not allowed for this user" +msgstr "La reimpostazione della password non è consentita per questo utente" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:367 +msgid "Someone requested that the password be reset for the following account:" +msgstr "" +"Qualcuno ha richiesto il ripristino della password per il seguente account:" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:369 +#, php-format +msgid "Username: %s" +msgstr "Nome Utente: %s" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:370 +msgid "If this was a mistake, just ignore this email and nothing will happen." +msgstr "" +"Se questo è stato un errore, è sufficiente ignorare questa email e non " +"accadrà nulla." + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:371 +msgid "To reset your password, visit the following address:" +msgstr "Per reimpostare la password visita il seguente indirizzo:" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:383 +#, php-format +msgid "[%s] Password Reset" +msgstr "[%s] Ripristino Password" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:408 +msgid "The e-mail could not be sent." +msgstr "L'e-mail non è stata inviata." + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:408 +msgid "Possible reason: your host may have disabled the mail() function." +msgstr "" +"Possibile ragione: il tuo host potrebbe aver disabilitato la funzione mail()." + +#: ../other-includes/wp-security-rename-login-feature.php:530 +msgid "" +"Your password reset link appears to be invalid. Please request a new link " +"below." +msgstr "" + +#: ../other-includes/wp-security-rename-login-feature.php:532 +msgid "Your password reset link has expired. Please request a new link below." +msgstr "" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:553 +msgid "Lost Password" +msgstr "Password Persa" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:553 +msgid "" +"Please enter your username or email address. You will receive a link to " +"create a new password via email." +msgstr "" +"Inserisci il tuo nome utente o indirizzo e-mail. Riceverai un link per creare " +"una nuova password via email." + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:561 +msgid "Username or E-mail:" +msgstr "Nome utente o e-mail:" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:576 +#: ../other-includes/wp-security-rename-login-feature.php:639 +#: ../other-includes/wp-security-rename-login-feature.php:685 +#: ../other-includes/wp-security-rename-login-feature.php:767 +msgid "Log in" +msgstr "" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:579 +#: ../other-includes/wp-security-rename-login-feature.php:688 +#: ../other-includes/wp-security-rename-login-feature.php:945 +msgid "Register" +msgstr "Registrate" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:624 +msgid "The passwords do not match." +msgstr "Le password non coincidono." + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:639 +msgid "Password Reset" +msgstr "Reimposta Password" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:639 +msgid "Your password has been reset." +msgstr "La tua password è stata reimpostata." + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:647 +msgid "Reset Password" +msgstr "Resetta Password" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:647 +msgid "Enter your new password below." +msgstr "Inserisci una nuova password di seguito" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:654 +msgid "New password" +msgstr "Nuova password" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:659 +msgid "Strength indicator" +msgstr "Indicatore Forza" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:663 +msgid "Confirm new password" +msgstr "Conferma la nuova password" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:740 +msgid "Registration Form" +msgstr "Modulo Registrazione" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:740 +msgid "Register For This Site" +msgstr "Registrazione per questo sito" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:745 +#: ../other-includes/wp-security-rename-login-feature.php:911 +msgid "Username" +msgstr "Non è utente" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:749 +msgid "E-mail" +msgstr "E-mail" + +#: ../other-includes/wp-security-rename-login-feature.php:760 +msgid "Registration confirmation will be e-mailed to you." +msgstr "" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:768 +#: ../other-includes/wp-security-rename-login-feature.php:951 +msgid "Lost your password?" +msgstr "Persa la password?" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:808 +#, php-format +msgid "" +"ERROR: Cookies are blocked due to unexpected output. For " +"help, please see this documentation or try the support forums." +msgstr "" +"ERRORE: I cookie sono bloccati causa un'uscita inaspettata. " +"Per ulteriori informazioni, consulta questa documentazione or try the support forums." + +#: ../other-includes/wp-security-rename-login-feature.php:809 +#: ../other-includes/wp-security-rename-login-feature.php:813 +msgid "https://codex.wordpress.org/Cookies" +msgstr "" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:809 +msgid "https://wordpress.org/support/" +msgstr "" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:812 +#, php-format +msgid "" +"ERROR: Cookies are blocked or not supported by your browser. " +"You must enable cookies to use WordPress." +msgstr "" +"ERRORE: I cookie sono bloccati o non supportati dal tuo " +"browser. È necessario abilitare i cookie per usare " +"WordPress." + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:831 +msgid "You have logged in successfully." +msgstr "Hai fatto il login con successo." + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:865 +msgid "" +"Session expired. Please log in again. You will not move away from this page." +msgstr "" +"Sessione scaduta. Effettua il login nuovamente. Non allontanarti da questa " +"pagina." + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:869 +msgid "You are now logged out." +msgstr "Ora sei disconnesso." + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:871 +msgid "User registration is currently not allowed." +msgstr "Registrazione utente non è attualmente consentita." + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:873 +msgid "Check your e-mail for the confirmation link." +msgstr "Controlla la tua e-mail per il link di conferma." + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:875 +msgid "Check your e-mail for your new password." +msgstr "Controlla la tua e-mail per la nuova password." + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:877 +msgid "Registration complete. Please check your e-mail." +msgstr "Registrazione completa. Controlla la tua e-mail." + +#: ../other-includes/wp-security-rename-login-feature.php:879 +msgid "" +"You have successfully updated WordPress! Please log back in " +"to see what’s new." +msgstr "" + +# @ default +#: ../other-includes/wp-security-rename-login-feature.php:896 +msgid "Log In" +msgstr "" + +# @ default +#: ../other-includes/wp-security-unlock-request.php:13 +msgid "http://wordpress.org/" +msgstr "" + +#: ../other-includes/wp-security-unlock-request.php:33 +msgid "ERROR: Unable to process your request!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: ../other-includes/wp-security-unlock-request.php:50 +msgid "Please enter a valid email address" +msgstr "Inserisci un indirizzo email valido" + +# @ all-in-one-wp-security-and-firewall +#: ../other-includes/wp-security-unlock-request.php:62 +msgid "User account not found!" +msgstr "Account utente non trovato!" + +# @ all-in-one-wp-security-and-firewall +#: ../other-includes/wp-security-unlock-request.php:73 +msgid "Error: No locked entry was found in the DB with your IP address range!" +msgstr "" +"Errore: Nessun blocco è stato trovato nel DB con questo intervallo di " +"indirizzi IP!" + +# @ all-in-one-wp-security-and-firewall +#: ../other-includes/wp-security-unlock-request.php:101 +msgid "Email Address" +msgstr "Indirizzo Email" + +# @ all-in-one-wp-security-and-firewall +#~ msgid "There was an error when updating the options table." +#~ msgstr "" +#~ "Si è verificato un errore durante l'aggiornamento delle opzioni tabella." + +# @ default +#~ msgid "Go to the first page" +#~ msgstr "Vai alla prima pagina" + +# @ default +#~ msgid "Go to the previous page" +#~ msgstr "Torna alla pagina precedente." + +# @ default +#~ msgid "Current page" +#~ msgstr "Pagina corrente." + +# @ default +#~ msgid "Go to the next page" +#~ msgstr "Vai alla pagina successiva" + +# @ default +#~ msgid "Go to the last page" +#~ msgstr "Vai all'ultima pagina" + +# @ all-in-one-wp-security-and-firewall +#~ msgid "" +#~ "Often when malware code has been inserted into your site you will normally " +#~ "not notice anything out of the ordinary based on appearances, but it can " +#~ "have a dramatic effect on your site’s search ranking." +#~ msgstr "" +#~ "Spesso, quando il codice del malware è stato inserito nel tuo sito, non " +#~ "noterai nulla di straordinario in apparenza, ma può avere un effetto molto " +#~ "negativo in termini di risultati di ricerca." + +# @ all-in-one-wp-security-and-firewall +#~ msgid "Your account with username:" +#~ msgstr "Il tuo account con nome utente" + +# @ all-in-one-wp-security-and-firewall +#~ msgid "Username: Unknown" +#~ msgstr "Nome utente: Sconosciuto" + +# @ all-in-one-wp-security-and-firewall +#~ msgid "IP Range: .*" +#~ msgstr "Intervallo IP: .*" + +# @ all-in-one-wp-security-and-firewall +#~ msgid "" +#~ "You have requested for the account with email address to be unlocked. " +#~ "Please click the link below to unlock your account:" +#~ msgstr "" +#~ "Hai richiesto lo sblocco per l'account con questo indirizzo email. Clicca " +#~ "il link qui sotto per sbloccare il tuo account:" + +# @ default +#~ msgid "Are you lost?" +#~ msgstr "Ti sei perso?" + +# @ default +#~ msgid "Sorry, that key does not appear to be valid." +#~ msgstr "Spiacenti, questo chiave non sembra essere valida." + +# @ default +#~ msgid "Sorry, that key has expired. Please try again." +#~ msgstr "Spiacenti, questa chiave è scaduta. Prova di nuovo." + +# @ default +#~ msgid "Get New Password" +#~ msgstr "Ottieni Nuova password" + +# @ default +#~ msgid "" +#~ "Hint: The password should be at least seven characters long. To make it " +#~ "stronger, use upper and lower case letters, numbers, and symbols like ! " +#~ "\" ? $ % ^ & )." +#~ msgstr "" +#~ "Suggerimento: La password deve essere di almeno sette caratteri. Per " +#~ "renderla più forte, usa lettere maiuscole e minuscole, numeri e simboli " +#~ "come ! \" ? $ % ^ & )." + +# @ default +#~ msgid "A password will be e-mailed to you." +#~ msgstr "La password verrà inviata per posta elettronica." + +# @ default +#~ msgid "Password Lost and Found" +#~ msgstr "Password Persa e Trovata" + +# @ default +#~ msgid "" +#~ "You have successfully updated WordPress! Please log back " +#~ "in to experience the awesomeness." +#~ msgstr "" +#~ "WordPress è stato aggiornato! Si prega di accedere " +#~ "nuovamente a vivere la suggestione." + +# @ default +#~ msgid "Remember Me" +#~ msgstr "Ricordami" + +# @ all-in-one-wp-security-and-firewall +#~ msgid "Import AIOWPS settings from file operation failed!" +#~ msgstr "Operazione importazione file impostazioni AIOWPS fallita!" + +# @ all-in-one-wp-security-and-firewall +#~ msgid "Your AIOWPS settings were successfully imported." +#~ msgstr "Le impostazioni AIOWPS sono state importate correttamente." + +# @ all-in-one-wp-security-and-firewall +#~ msgid "" +#~ "For Example: If a settings item rely on the domain URL then it may not " +#~ "work correctly when imported into a different domain." +#~ msgstr "" +#~ "Per esempio: se una voce impostazioni conta su l'URL del dominio allora " +#~ "può non funzionare correttamente quando importata in un dominio diverso." + +# @ all-in-one-wp-security-and-firewall +#~ msgid "" +#~ "Use this section to import your All In One WP Security & Firewall settings " +#~ "from a file." +#~ msgstr "" +#~ "Utilizzare questa sezione per importare le impostazioni di All In One WP " +#~ "Security & Firewall da un file" diff --git a/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-nl_NL.mo b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-nl_NL.mo new file mode 100644 index 0000000..339b31a Binary files /dev/null and b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-nl_NL.mo differ diff --git a/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-nl_NL.po b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-nl_NL.po new file mode 100644 index 0000000..3928e16 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-nl_NL.po @@ -0,0 +1,4748 @@ +msgid "" +msgstr "" +"Project-Id-Version: All In One WP Security vv3.7.2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2015-12-31 09:57+0100\n" +"Last-Translator: Jeroen van der Linde \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Poedit 1.8.6\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" +"X-Poedit-Basepath: ..\n" +"X-Textdomain-Support: yes\n" +"Language: nl_NL\n" +"X-Poedit-SearchPath-0: .\n" + +# @ default +#: admin/general/wp-security-list-table.php:178 +msgid "No items found." +msgstr "" + +# @ default +#: admin/general/wp-security-list-table.php:281 +msgid "Bulk Actions" +msgstr "" + +# @ default +#: admin/general/wp-security-list-table.php:291 +msgid "Apply" +msgstr "" + +# @ default +#: admin/general/wp-security-list-table.php:365 +msgid "Show all dates" +msgstr "" + +# @ default +#. translators: 1: month name, 2: 4-digit year +#: admin/general/wp-security-list-table.php:378 +#, php-format +msgid "%1$s %2$d" +msgstr "" + +# @ default +#: admin/general/wp-security-list-table.php:394 +msgid "List View" +msgstr "" + +# @ default +#: admin/general/wp-security-list-table.php:395 +msgid "Excerpt View" +msgstr "" + +# @ default +#: admin/general/wp-security-list-table.php:421 +#, php-format +msgid "%s pending" +msgstr "" + +# @ default +#: admin/general/wp-security-list-table.php:477 +#: admin/general/wp-security-list-table.php:881 +#, php-format +msgid "1 item" +msgid_plural "%s items" +msgstr[0] "" +msgstr[1] "" + +# @ default +#: admin/general/wp-security-list-table.php:495 +msgid "Go to the first page" +msgstr "" + +# @ default +#: admin/general/wp-security-list-table.php:502 +msgid "Go to the previous page" +msgstr "" + +# @ default +#: admin/general/wp-security-list-table.php:511 +msgid "Current page" +msgstr "" + +# @ default +#: admin/general/wp-security-list-table.php:517 +#, php-format +msgctxt "paging" +msgid "%1$s of %2$s" +msgstr "" + +# @ default +#: admin/general/wp-security-list-table.php:521 +msgid "Go to the next page" +msgstr "" + +# @ default +#: admin/general/wp-security-list-table.php:528 +msgid "Go to the last page" +msgstr "" + +# @ default +#: admin/general/wp-security-list-table.php:653 +msgid "Select All" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-init.php:157 +msgid "WP Security" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-init.php:158 admin/wp-security-dashboard-menu.php:23 +msgid "Dashboard" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-init.php:159 +msgid "Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-init.php:160 +msgid "User Accounts" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-init.php:161 +msgid "User Login" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-init.php:162 +msgid "User Registration" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-init.php:163 +msgid "Database Security" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-init.php:167 +msgid "Filesystem Security" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-init.php:169 +msgid "WHOIS Lookup" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-init.php:173 +msgid "Blacklist Manager" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-init.php:178 +msgid "Firewall" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-init.php:183 +msgid "Brute Force" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-init.php:185 +msgid "SPAM Prevention" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-init.php:189 +msgid "Scanner" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-init.php:191 +msgid "Maintenance" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-menu.php:43 +msgid "Settings successfully updated." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-menu.php:50 +msgid "The selected record(s) deleted successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:22 +msgid "Ban Users" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:80 +msgid "Nonce check failed for save blacklist settings!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:132 +#: admin/wp-security-brute-force-menu.php:608 +#: admin/wp-security-list-comment-spammer-ip.php:147 +msgid "The plugin was unable to write to the .htaccess file. Please edit file manually." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:139 +msgid "Ban IPs or User Agents" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:142 +msgid "The All In One WP Security Blacklist feature gives you the option of banning certain host IP addresses or ranges and also user agents." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:143 +msgid "This feature will deny total site access for users which have IP addresses or user agents matching those which you have configured in the settings below." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:144 +msgid "The plugin achieves this by making appropriate modifications to your .htaccess file." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:145 +msgid "By blocking people via the .htaccess file your are using the most secure first line of defence which denies all access to blacklisted visitors as soon as they hit your hosting server." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:151 +msgid "IP Hosts and User Agent Blacklist Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:162 +msgid "Enable IP or User Agent Blacklisting" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:165 +msgid "Check this if you want to enable the banning (or blacklisting) of selected IP addresses and/or user agents specified in the settings below" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:169 +msgid "Enter IP Addresses:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:173 +msgid "Enter one or more IP addresses or IP ranges." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:174 +#: admin/wp-security-blacklist-menu.php:194 +#: admin/wp-security-brute-force-menu.php:343 +#: admin/wp-security-brute-force-menu.php:377 +#: admin/wp-security-brute-force-menu.php:400 +#: admin/wp-security-brute-force-menu.php:421 +#: admin/wp-security-brute-force-menu.php:664 +#: admin/wp-security-filescan-menu.php:291 +#: admin/wp-security-filescan-menu.php:308 +#: admin/wp-security-firewall-menu.php:165 +#: admin/wp-security-firewall-menu.php:195 +#: admin/wp-security-firewall-menu.php:326 +#: admin/wp-security-firewall-menu.php:356 +#: admin/wp-security-firewall-menu.php:387 +#: admin/wp-security-firewall-menu.php:415 +#: admin/wp-security-firewall-menu.php:444 +#: admin/wp-security-firewall-menu.php:532 +#: admin/wp-security-firewall-menu.php:622 +#: admin/wp-security-firewall-menu.php:824 +#: admin/wp-security-firewall-menu.php:847 admin/wp-security-spam-menu.php:174 +#: admin/wp-security-spam-menu.php:259 +msgid "More Info" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:177 +#: admin/wp-security-brute-force-menu.php:667 +msgid "Each IP address must be on a new line." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:178 +#: admin/wp-security-brute-force-menu.php:668 +msgid "To specify an IP range use a wildcard \"*\" character. Acceptable ways to use wildcards is shown in the examples below:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:179 +#: admin/wp-security-brute-force-menu.php:669 +msgid "Example 1: 195.47.89.*" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:180 +#: admin/wp-security-brute-force-menu.php:670 +msgid "Example 2: 195.47.*.*" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:181 +#: admin/wp-security-brute-force-menu.php:671 +msgid "Example 3: 195.*.*.*" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:188 +msgid "Enter User Agents:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:193 +msgid "Enter one or more user agent strings." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:197 +msgid "Each user agent string must be on a new line." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:198 +msgid "Example 1 - A single user agent string to block:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:200 +msgid "Example 2 - A list of more than 1 user agent strings to block" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:208 +#: admin/wp-security-brute-force-menu.php:188 +#: admin/wp-security-brute-force-menu.php:544 +#: admin/wp-security-brute-force-menu.php:678 +#: admin/wp-security-database-menu.php:356 +#: admin/wp-security-filescan-menu.php:329 +#: admin/wp-security-filesystem-menu.php:231 +#: admin/wp-security-firewall-menu.php:700 +#: admin/wp-security-firewall-menu.php:866 +#: admin/wp-security-settings-menu.php:493 admin/wp-security-spam-menu.php:189 +#: admin/wp-security-user-login-menu.php:239 +#: admin/wp-security-user-login-menu.php:407 +#: admin/wp-security-user-registration-menu.php:146 +#: admin/wp-security-user-registration-menu.php:221 +msgid "Save Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:25 +#: admin/wp-security-dashboard-menu.php:344 +#: admin/wp-security-dashboard-menu.php:353 +msgid "Rename Login Page" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:26 +msgid "Cookie Based Brute Force Prevention" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:27 +#: classes/grade-system/wp-security-feature-item-manager.php:44 +msgid "Login Captcha" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:28 +#: admin/wp-security-brute-force-menu.php:615 +msgid "Login Whitelist" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:99 +msgid "Please enter a value for your login page slug." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:103 +msgid "You cannot use the value \"wp-admin\" for your login page slug." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:108 +#: admin/wp-security-database-menu.php:271 +#: admin/wp-security-filescan-menu.php:169 +#: admin/wp-security-firewall-menu.php:769 admin/wp-security-spam-menu.php:219 +#: admin/wp-security-user-login-menu.php:123 +#: admin/wp-security-user-login-menu.php:360 +msgid "Attention!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:127 +msgid "Could not delete the Cookie-based directives from the .htaccess file. Please check the file permissions." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:137 +msgid "An effective Brute Force prevention technique is to change the default WordPress login page URL." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:138 +msgid "Normally if you wanted to login to WordPress you would type your site's home URL followed by wp-login.php." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:139 +msgid "This feature allows you to change the login URL by setting your own slug and renaming the last portion of the login URL which contains the wp-login.php to any string that you like." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:140 +msgid "By doing this, malicious bots and hackers will not be able to access your login page because they will not know the correct login page URL." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:142 +msgid "You may also be interested in the following alternative brute force prevention features:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:153 +msgid "Your WordPress login page URL has been renamed." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:154 +msgid "Your current login URL is:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:156 +msgid "NOTE: If you already had the Cookie-Based Brute Force Prevention feature active, the plugin has automatically deactivated it because only one of these features can be active at any one time." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:163 +msgid "Rename Login Page Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:175 +msgid "Enable Rename Login Page Feature" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:178 +msgid "Check this if you want to enable the rename login page feature" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:182 +msgid "Login Page URL" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:184 +msgid "Enter a string which will represent your secure login page slug. You are enouraged to choose something which is hard to guess and only you will remember." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:217 +msgid "Settings have not been saved - your secret word must consist only of alphanumeric characters, ie, letters and/or numbers only!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:236 +msgid "You have successfully enabled the cookie based brute force prevention feature" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:237 +msgid "From now on you will need to log into your WP Admin using the following URL:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:239 +msgid "It is important that you save this URL value somewhere in case you forget it, OR," +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:240 +#, php-format +msgid "simply remember to add a \"?%s=1\" to your current site URL address." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:246 +msgid "You have successfully saved cookie based brute force prevention feature settings." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:281 +#: admin/wp-security-filesystem-menu.php:275 +#: admin/wp-security-firewall-menu.php:119 +#: admin/wp-security-firewall-menu.php:287 +#: admin/wp-security-firewall-menu.php:498 +#: admin/wp-security-firewall-menu.php:667 admin/wp-security-spam-menu.php:106 +msgid "Could not write to the .htaccess file. Please check the file permissions." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:291 +msgid "Brute Force Prevention Firewall Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:296 +msgid "A Brute Force Attack is when a hacker tries many combinations of usernames and passwords until they succeed in guessing the right combination." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:297 +msgid "Due to the fact that at any one time there may be many concurrent login attempts occurring on your site via malicious automated robots, this also has a negative impact on your server's memory and performance." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:298 +msgid "The features in this tab will stop the majority of Brute Force Login Attacks at the .htaccess level thus providing even better protection for your WP login page and also reducing the load on your server because the system does not have to run PHP code to process the login attempts." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:305 +#, php-format +msgid "Even though this feature should not have any impact on your site's general functionality you are strongly encouraged to take a %s of your .htaccess file before proceeding." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:306 +msgid "If this feature is not used correctly, you can get locked out of your site. A backed up .htaccess file will come in handy if that happens." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:307 +#, php-format +msgid "To learn more about how to use this feature please watch the following %s." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:320 +msgid "NOTE: If you already had the Rename Login Page feature active, the plugin has automatically deactivated it because only one of these features can be active at any one time." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:328 +msgid "Cookie Based Brute Force Login Prevention" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:339 +#: classes/grade-system/wp-security-feature-item-manager.php:87 +msgid "Enable Brute Force Attack Prevention" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:342 +msgid "Check this if you want to protect your login page from Brute Force Attack." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:347 +msgid "This feature will deny access to your WordPress login page for all people except those who have a special cookie in their browser." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:349 +msgid "To use this feature do the following:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:351 +msgid "1) Enable the checkbox." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:353 +msgid "2) Enter a secret word consisting of alphanumeric characters which will be difficult to guess. This secret word will be useful whenever you need to know the special URL which you will use to access the login page (see point below)." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:355 +msgid "3) You will then be provided with a special login URL. You will need to use this URL to login to your WordPress site instead of the usual login URL. NOTE: The system will deposit a special cookie in your browser which will allow you access to the WordPress administration login page." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:357 +msgid "Any person trying to access your login page who does not have the special cookie in their browser will be automatically blocked." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:364 +msgid "Secret Word" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:366 +msgid "Choose a secret word consisting of alphanumeric characters which you can use to access your special URL. Your are highly encouraged to choose a word which will be difficult to guess." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:370 +msgid "Re-direct URL" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:374 +msgid "Specify a URL to redirect a hacker to when they try to access your WordPress login page." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:381 +msgid "The URL specified here can be any site's URL and does not have to be your own. For example you can be as creative as you like and send hackers to the CIA or NSA home page." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:383 +msgid "This field will default to: http://127.0.0.1 if you do not enter a value." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:385 +msgid "Useful Tip:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:387 +msgid "It's a good idea to not redirect attempted brute force login attempts to your site because it increases the load on your server." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:389 +msgid "Redirecting a hacker or malicious bot back to \"http://127.0.0.1\" is ideal because it deflects them back to their own local host and puts the load on their server instead of yours." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:396 +msgid "My Site Has Posts Or Pages Which Are Password Protected" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:399 +msgid "Check this if you are using the native WordPress password protection feature for some or all of your blog posts or pages." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:404 +msgid "In the cases where you are protecting some of your posts or pages using the in-built WordPress password protection feature, a few extra lines of directives and exceptions need to be added to your .htacces file so that people trying to access pages are not automatically blocked." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:406 +msgid "By enabling this checkbox the plugin will add the necessary rules and exceptions to your .htacces file so that people trying to access these pages are not automatically blocked." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:408 +msgid "Helpful Tip:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:410 +msgid "If you do not use the WordPress password protection feature for your posts or pages then it is highly recommended that you leave this checkbox disabled." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:417 +msgid "My Site Has a Theme or Plugins Which Use AJAX" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:420 +msgid "Check this if your site uses AJAX functionality." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:425 +msgid "In the cases where your WordPress installation has a theme or plugins which use AJAX, a few extra lines of directives and exceptions need to be added to your .htacces file to prevent AJAX requests from being automatically blocked by the brute force prevention feature." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:427 +msgid "By enabling this checkbox the plugin will add the necessary rules and exceptions to your .htacces file so that AJAX operations will work as expected." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:442 +msgid "The cookie test was successful. You can now enable this feature." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:445 +msgid "Save Feature Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:452 +msgid "The cookie test failed on this server. So this feature cannot be used on this site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:457 +msgid "Before using this feature you are required to perform a cookie test first. This is to make sure that your browser cookie is working correctly and that you won't lock yourself out." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:459 +msgid "Perform Cookie Test" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:498 +msgid "This feature allows you to add a captcha form on the WordPress login page." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:499 +msgid "Users who attempt to login will also need to enter the answer to a simple mathematical question - if they enter the wrong answer, the plugin will not allow them login even if they entered the correct username and password." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:500 +msgid "Therefore, adding a captcha form on the login page is another effective yet simple \"Brute Force\" prevention technique." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:506 +msgid "Login Form Captcha Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:517 +msgid "Enable Captcha On Login Page" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:520 +msgid "Check this if you want to insert a captcha form on the login page" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:526 +msgid "Lost Password Form Captcha Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:536 +msgid "Enable Captcha On Lost Password Page" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:539 +msgid "Check this if you want to insert a captcha form on the lost password page" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:561 +msgid "Nonce check failed for save whitelist settings!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:618 +msgid "The All In One WP Security Whitelist feature gives you the option of only allowing certain IP addresses or ranges to have access to your WordPress login page." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:619 +msgid "This feature will deny login access for all IP addresses which are not in your whitelist as configured in the settings below." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:620 +msgid "The plugin achieves this by writing the appropriate directives to your .htaccess file." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:621 +msgid "By allowing/blocking IP addresses via the .htaccess file your are using the most secure first line of defence because login access will only be granted to whitelisted IP addresses and other addresses will be blocked as soon as they try to access your login page." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:628 +#, php-format +msgid "Attention: If in addition to enabling the white list feature, you also have the %s feature enabled, you will still need to use your secret word in the URL when trying to access your WordPress login page." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:629 +msgid "These features are NOT functionally related. Having both of them enabled on your site means you are creating 2 layers of security." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:634 +msgid "Login IP Whitelist Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:645 +msgid "Enable IP Whitelisting" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:648 +msgid "Check this if you want to enable the whitelisting of selected IP addresses specified in the settings below" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:652 +msgid "Your Current IP Address" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:655 +msgid "You can copy and paste this address in the text box below if you want to include it in your login whitelist." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:659 +msgid "Enter Whitelisted IP Addresses:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-brute-force-menu.php:663 +msgid "Enter one or more IP addresses or IP ranges you wish to include in your whitelist. Only the addresses specified here will have access to the WordPress login page." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:24 +msgid "System Info" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:25 +#: admin/wp-security-dashboard-menu.php:436 +msgid "Locked IP Addresses" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:75 +msgid "For information, updates and documentation, please visit the" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:75 +msgid "AIO WP Security & Firewall Plugin" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:75 +msgid "Page" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:76 +msgid "Follow us" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:76 +msgid "Twitter, Google+ or via Email to stay up to date about the new security features of this plugin." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:90 +msgid "Security Strength Meter" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:119 +msgid "Total Achievable Points: " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:121 +msgid "Current Score of Your Site: " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:131 +msgid "Security Points Breakdown" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:172 +msgid "Critical Feature Status" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:176 +msgid "Below is the current status of the critical features that you should activate on your site to achieve a minimum level of recommended security" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:180 +msgid "Admin Username" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:195 +#: admin/wp-security-user-login-menu.php:25 +#: classes/grade-system/wp-security-feature-item-manager.php:42 +msgid "Login Lockdown" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:210 +msgid "File Permission" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:225 +msgid "Basic Firewall" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:243 +msgid "Last 5 Logins" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:257 +msgid "No data found!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:261 +msgid "Last 5 logins summary:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:265 +msgid "User" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:266 +msgid "Date" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:267 +msgid "IP" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:288 +msgid "Maintenance Mode Status" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:292 +msgid "Maintenance mode is currently enabled. Remember to turn it off when you are done" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:295 +msgid "Maintenance mode is currently off." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:299 +msgid "Maintenance Mode" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:321 +msgid "Cookie Based Brute Prevention" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:324 +msgid "Cookie-Based Brute Force" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:328 +#: admin/wp-security-dashboard-menu.php:356 +#, php-format +msgid "The %s feature is currently active." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:329 +#: admin/wp-security-dashboard-menu.php:357 +msgid "Your new WordPress login URL is now:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:389 +#: admin/wp-security-user-login-menu.php:29 +msgid "Logged In Users" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:399 +msgid "Number of users currently logged in site-wide is:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:400 +#: admin/wp-security-dashboard-menu.php:422 +#: admin/wp-security-dashboard-menu.php:450 +#, php-format +msgid "Go to the %s menu to see more details" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:405 +msgid "There are no other site-wide users currently logged in." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:421 +msgid "Number of users currently logged into your site (including you) is:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:427 +msgid "There are no other users currently logged in." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:444 +msgid "There are no IP addresses currently locked out." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:449 +msgid "Number of temporarily locked out IP addresses: " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:462 +msgid "Spread the Word" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:465 +msgid "We are working hard to make your WordPress site more secure. Please support us, here is how:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:489 +msgid "Site Info" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:491 +msgid "Plugin Version" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:492 +msgid "WP Version" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:494 +#: admin/wp-security-dashboard-menu.php:496 +#: admin/wp-security-dashboard-menu.php:592 +msgid "Version" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:495 +msgid "Table Prefix" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:497 +msgid "Session Save Path" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:499 +msgid "Server Name" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:500 +msgid "Cookie Domain" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:501 +msgid "Library Present" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:502 +msgid "Debug File Write Permissions" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:506 +msgid "PHP Info" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:508 +msgid "PHP Version" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:509 +msgid "PHP Memory Usage" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:510 +msgid " MB" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:516 +#: admin/wp-security-dashboard-menu.php:524 +#: admin/wp-security-dashboard-menu.php:532 +#: admin/wp-security-dashboard-menu.php:574 +msgid "N/A" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:519 +msgid "PHP Memory Limit" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:527 +msgid "PHP Max Upload Size" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:535 +msgid "PHP Max Post Size" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:538 +#: admin/wp-security-dashboard-menu.php:546 +#: admin/wp-security-dashboard-menu.php:555 +#: admin/wp-security-dashboard-menu.php:563 +msgid "On" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:540 +#: admin/wp-security-dashboard-menu.php:548 +#: admin/wp-security-dashboard-menu.php:557 +#: admin/wp-security-dashboard-menu.php:565 +msgid "Off" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:543 +msgid "PHP Safe Mode" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:551 +msgid "PHP Allow URL fopen" +msgstr "" + +# @ default +#: admin/wp-security-dashboard-menu.php:560 +msgid "PHP Allow URL Include" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:568 +msgid "PHP Display Errors" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:577 +msgid "PHP Max Script Execution Time" +msgstr "" + +# @ default +#: admin/wp-security-dashboard-menu.php:577 +msgid "Seconds" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:581 +msgid "Active Plugins" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:591 +#: admin/wp-security-filesystem-menu.php:130 +#: admin/wp-security-filesystem-menu.php:149 +msgid "Name" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:593 +msgid "Plugin URL" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:629 +msgid "Currently Locked Out IP Addresses and Ranges" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:26 +#: admin/wp-security-database-menu.php:31 +#: classes/grade-system/wp-security-feature-item-manager.php:62 +msgid "DB Backup" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:30 +#: classes/grade-system/wp-security-feature-item-manager.php:60 +msgid "DB Prefix" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:93 +msgid "Nonce check failed for DB prefix change operation!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:101 +msgid "The plugin has detected that it cannot write to the wp-config.php file. This feature can only be used if the plugin can successfully write to the wp-config.php file." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:114 +msgid "Please enter a value for the DB prefix." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:123 +msgid "ERROR: The table prefix can only contain numbers, letters, and underscores." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:131 +msgid "Change Database Prefix" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:134 +msgid "Your WordPress DB is the most important asset of your website because it contains a lot of your site's precious information." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:135 +msgid "The DB is also a target for hackers via methods such as SQL injections and malicious and automated code which targets certain tables." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:136 +msgid "One way to add a layer of protection for your DB is to change the default WordPress table prefix from \"wp_\" to something else which will be difficult for hackers to guess." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:137 +msgid "This feature allows you to easily change the prefix to a value of your choice or to a random value set by this plugin." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:143 +msgid "DB Prefix Options" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:154 +#, php-format +msgid "It is recommended that you perform a %s before using this feature" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:163 +msgid "Current DB Table Prefix" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:169 +msgid "" +"Your site is currently using the default WordPress DB prefix value of \"wp_\". \n" +" To increase your site's security you should consider changing the DB prefix value to another value." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:176 +msgid "Generate New DB Table Prefix" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:179 +msgid "Check this if you want the plugin to generate a random 6 character string for the table prefix" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:180 +msgid "OR" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:182 +msgid "Choose your own DB prefix by specifying a string which contains letters and/or numbers and/or underscores. Example: xyz_" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:186 +msgid "Change DB Prefix" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:207 +#: admin/wp-security-filesystem-menu.php:86 +msgid "Nonce check failed for manual DB backup operation!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:224 +msgid "DB Backup was successfully completed! You will receive the backup file via email if you have enabled \"Send Backup File Via Email\", otherwise you can retrieve it via FTP from the following directory:" +msgstr "" + +# @ default +#: admin/wp-security-database-menu.php:226 +msgid "Your DB Backup File location: " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:234 +msgid "DB Backup failed. Please check the permissions of the backup directory." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:251 +#: admin/wp-security-filescan-menu.php:133 +msgid "You entered a non numeric value for the \"backup time interval\" field. It has been set to the default value." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:258 +msgid "You entered a non numeric value for the \"number of backup files to keep\" field. It has been set to the default value." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:265 +#: admin/wp-security-filescan-menu.php:163 +#: admin/wp-security-user-login-menu.php:117 +msgid "You have entered an incorrect email address format. It has been set to your WordPress admin email as default." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:298 +msgid "Manual Backup" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:304 +msgid "To create a new DB backup just click on the button below." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:307 +msgid "Create DB Backup Now" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:311 +msgid "Automated Scheduled Backups" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:323 +msgid "Enable Automated Scheduled Backups" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:326 +msgid "Check this if you want the system to automatically generate backups periodically based on the settings below" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:330 +msgid "Backup Time Interval" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:333 +#: admin/wp-security-filescan-menu.php:279 +msgid "Hours" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:334 +#: admin/wp-security-filescan-menu.php:280 +msgid "Days" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:335 +#: admin/wp-security-filescan-menu.php:281 +msgid "Weeks" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:337 +msgid "Set the value for how often you would like an automated backup to occur" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:341 +msgid "Number of Backup Files To Keep" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:343 +msgid "Thie field allows you to choose the number of backup files you would like to keep in the backup directory" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:347 +msgid "Send Backup File Via Email" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:350 +msgid "Check this if you want the system to email you the backup file after a DB backup has been performed" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:352 +#: admin/wp-security-filescan-menu.php:325 +#: admin/wp-security-user-login-menu.php:235 +msgid "Enter an email address" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:383 +msgid "Error - Could not get tables or no tables found!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:388 +msgid "Starting DB prefix change operations....." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:390 +#, php-format +msgid "Your WordPress system has a total of %s tables and your new DB prefix will be: %s" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:396 classes/wp-security-utility.php:206 +msgid "Failed to make a backup of the wp-config.php file. This operation will not go ahead." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:400 +msgid "A backup copy of your wp-config.php file was created successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:422 +#, php-format +msgid "%s table name update failed" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:434 +#, php-format +msgid "Please change the prefix manually for the above tables to: %s" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:437 +#, php-format +msgid "%s tables had their prefix updated successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:452 +msgid "wp-config.php file was updated successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:455 +#, php-format +msgid "" +"The \"wp-config.php\" file was not able to be modified. Please modify this file manually using your favourite editor and search \n" +" for variable \"$table_prefix\" and assign the following value to that variable: %s" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:476 +msgid "There was an error when updating the options table." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:480 +msgid "The options table records which had references to the old DB prefix were updated successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:505 +#, php-format +msgid "Error updating user_meta table where new meta_key = %s, old meta_key = %s and user_id = %s." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:511 +msgid "The usermeta table records which had references to the old DB prefix were updated successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:513 +msgid "DB prefix change tasks have been completed." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:23 +#: classes/grade-system/wp-security-feature-item-manager.php:102 +msgid "File Change Detection" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:24 +msgid "Malware Scan" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:93 +msgid "There have been no file changes since the last scan." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:103 +msgid "Nonce check failed for manual file change detection scan operation!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:110 +msgid "The plugin has detected that this is your first file change detection scan. The file details from this scan will be used to detect file changes for future scans!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:112 +msgid "Scan Complete - There were no file changes detected!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:201 +msgid "" +"NEW SCAN COMPLETED: The plugin has detected that you have made changes to the \"File Types To Ignore\" or \"Files To Ignore\" fields.\n" +" In order to ensure that future scan results are accurate, the old scan data has been refreshed." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:211 +msgid "All In One WP Security & Firewall has detected that there was a change in your host's files." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:213 +msgid "View Scan Details & Clear This Message" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:222 +msgid "If given an opportunity hackers can insert their code or files into your system which they can then use to carry out malicious acts on your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:223 +msgid "Being informed of any changes in your files can be a good way to quickly prevent a hacker from causing damage to your website." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:224 +msgid "In general, WordPress core and plugin files and file types such as \".php\" or \".js\" should not change often and when they do, it is important that you are made aware when a change occurs and which file was affected." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:225 +msgid "The \"File Change Detection Feature\" will notify you of any file change which occurs on your system, including the addition and deletion of files by performing a regular automated or manual scan of your system's files." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:226 +msgid "This feature also allows you to exclude certain files or folders from the scan in cases where you know that they change often as part of their normal operation. (For example log files and certain caching plugin files may change often and hence you may choose to exclude such files from the file change detection scan)" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:231 +msgid "Manual File Change Detection Scan" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:237 +msgid "To perform a manual file change detection scan click on the button below." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:240 +msgid "Perform Scan Now" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:244 +msgid "View Last Saved File Change Results" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:250 +msgid "Click the button below to view the saved file change results from the last scan." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:253 +msgid "View Last File Change" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:257 +msgid "File Change Detection Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:269 +msgid "Enable Automated File Change Detection Scan" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:272 +msgid "Check this if you want the system to automatically/periodically scan your files to check for file changes based on the settings below" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:276 +msgid "Scan Time Interval" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:283 +msgid "Set the value for how often you would like a scan to occur" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:287 +msgid "File Types To Ignore" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:290 +msgid "Enter each file type or extension on a new line which you wish to exclude from the file change detection scan." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:294 +msgid "You can exclude file types from the scan which would not normally pose any security threat if they were changed. These can include things such as image files." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:295 +msgid "Example: If you want the scanner to ignore files of type jpg, png, and bmp, then you would enter the following:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:296 +msgid "jpg" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:297 +msgid "png" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:298 +msgid "bmp" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:304 +msgid "Files/Directories To Ignore" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:307 +msgid "Enter each file or directory on a new line which you wish to exclude from the file change detection scan." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:311 +msgid "You can exclude specific files/directories from the scan which would not normally pose any security threat if they were changed. These can include things such as log files." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:312 +msgid "Example: If you want the scanner to ignore certain files in different directories or whole directories, then you would enter the following:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:313 +msgid "cache/config/master.php" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:314 +msgid "somedirectory" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:320 +msgid "Send Email When Change Detected" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:323 +msgid "Check this if you want the system to email you if a file change was detected" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:341 +msgid "What is Malware?" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:342 +msgid "The word Malware stands for Malicious Software. It can consist of things like trojan horses, adware, worms, spyware and any other undesirable code which a hacker will try to inject into your website." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:343 +msgid "Often when malware code has been inserted into your site you will normally not notice anything out of the ordinary based on appearances, but it can have a dramatic effect on your site’s search ranking." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:344 +msgid "This is because the bots and spiders from search engines such as Google have the capability to detect malware when they are indexing the pages on your site, and consequently they can blacklist your website which will in turn affect your search rankings." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:348 +msgid "Scanning For Malware" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:349 +msgid "Due to the constantly changing and complex nature of Malware, scanning for such things using a standalone plugin will not work reliably. This is something best done via an external scan of your site regularly." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:350 +msgid "This is why we have created an easy-to-use scanning service which is hosted off our own server which will scan your site for malware once every day and notify you if it finds anything." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:351 +msgid "When you sign up for this service you will get the following:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:353 +msgid "Automatic Daily Scan of 1 Website" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:354 +msgid "Automatic Malware & Blacklist Monitoring" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:355 +msgid "Automatic Email Alerting" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:356 +msgid "Site uptime monitoring" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:357 +msgid "Site response time monitoring" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:358 +msgid "Malware Cleanup" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:359 +msgid "Blacklist Removal" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:360 +msgid "No Contract (Cancel Anytime)" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:362 +#, php-format +msgid "To learn more please %s." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:391 +msgid "Latest File Change Scan Results" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:400 +msgid "The following files were added to your host." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:403 +#: admin/wp-security-filescan-menu.php:424 +#: admin/wp-security-filescan-menu.php:448 +#: admin/wp-security-settings-menu.php:26 +#: admin/wp-security-settings-menu.php:27 +msgid "File" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:404 +#: admin/wp-security-filescan-menu.php:425 +#: admin/wp-security-filescan-menu.php:449 +msgid "File Size" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:405 +#: admin/wp-security-filescan-menu.php:426 +#: admin/wp-security-filescan-menu.php:450 +msgid "File Modified" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:421 +msgid "The following files were removed from your host." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:445 +msgid "The following files were changed on your host." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:26 +#: classes/grade-system/wp-security-feature-item-manager.php:66 +msgid "File Permissions" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:27 +msgid "PHP File Editing" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:28 +msgid "WP File Access" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:29 +msgid "Host System Logs" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:96 +#, php-format +msgid "The permissions for %s were succesfully changed to %s" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:100 +#, php-format +msgid "Unable to change permissions for %s!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:106 +msgid "File Permissions Scan" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:109 +msgid "Your WordPress file and folder permission settings govern the accessability and read/write privileges of the files and folders which make up your WP installation." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:110 +msgid "Your WP installation already comes with reasonably secure file permission settings for the filesystem." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:111 +msgid "However, sometimes people or other plugins modify the various permission settings of certain core WP folders or files such that they end up making their site less secure because they chose the wrong permission values." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:112 +msgid "This feature will scan the critical WP core folders and files and will highlight any permission settings which are insecure." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:118 +msgid "WP Directory and File Permissions Scan Results" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:131 +#: admin/wp-security-filesystem-menu.php:150 +msgid "File/Folder" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:132 +#: admin/wp-security-filesystem-menu.php:151 +msgid "Current Permissions" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:133 +#: admin/wp-security-filesystem-menu.php:152 +msgid "Recommended Permissions" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:134 +#: admin/wp-security-filesystem-menu.php:153 +msgid "Recommended Action" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:191 +msgid "Your PHP file editing settings were saved successfully." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:195 +msgid "Operation failed! Unable to modify or make a backup of wp-config.php file!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:201 +#: classes/grade-system/wp-security-feature-item-manager.php:68 +msgid "File Editing" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:204 +msgid "The Wordpress Dashboard by default allows administrators to edit PHP files, such as plugin and theme files." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:205 +msgid "This is often the first tool an attacker will use if able to login, since it allows code execution." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:206 +msgid "This feature will disable the ability for people to edit PHP files via the dashboard." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:212 +msgid "Disable PHP File Editing" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:224 +msgid "Disable Ability To Edit PHP Files" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:227 +msgid "Check this if you want to remove the ability for people to edit PHP files via the WP dashboard" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:271 +msgid "You have successfully saved the Prevent Access to Default WP Files configuration." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:280 +msgid "WordPress Files" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:283 +#, php-format +msgid "This feature allows you to prevent access to files such as %s, %s and %s which are delivered with all WP installations." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:284 +msgid "By preventing access to these files you are hiding some key pieces of information (such as WordPress version info) from potential hackers." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:289 +msgid "Prevent Access to Default WP Files" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:300 +msgid "Prevent Access to WP Default Install Files" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:303 +msgid "Check this if you want to prevent access to readme.html, license.txt and wp-config-sample.php." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:307 +msgid "Save Setting" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:331 +msgid "System Logs" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:334 +msgid "Sometimes your hosting platform will produce error or warning logs in a file called \"error_log\"." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:335 +msgid "Depending on the nature and cause of the error or warning, your hosting server can create multiple instances of this file in numerous directory locations of your WordPress installation." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:336 +msgid "By occassionally viewing the contents of these logs files you can keep informed of any underlying problems on your system which you might need to address." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:342 +msgid "View System Logs" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:347 +msgid "Enter System Log File Name" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:349 +msgid "Enter your system log file name. (Defaults to error_log)" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:352 +msgid "View Latest System Logs" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:354 +msgid "Loading..." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:371 +msgid "No system logs were found!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:424 +msgid "Set Recommended Permissions" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:430 +msgid "No Action Required" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:470 +#, php-format +msgid "Showing latest entries of error_log file: %s" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:27 +msgid "Basic Firewall Rules" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:28 +msgid "Additional Firewall Rules" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:29 +msgid "5G Blacklist Firewall Rules" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:30 +msgid "Internet Bots" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:31 +msgid "Prevent Hotlinks" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:32 +msgid "404 Detection" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:115 +#: admin/wp-security-firewall-menu.php:663 admin/wp-security-spam-menu.php:102 +#: admin/wp-security-user-registration-menu.php:96 +msgid "Settings were successfully saved" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:124 +#: admin/wp-security-firewall-menu.php:503 +msgid "Firewall Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:131 +#, php-format +msgid "This should not have any impact on your site's general functionality but if you wish you can take a %s of your .htaccess file before proceeding." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:132 +msgid "The features in this tab allow you to activate some basic firewall security protection rules for your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:133 +msgid "The firewall functionality is achieved via the insertion of special code into your currently active .htaccess file." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:143 +msgid "Attention:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:144 +msgid "Currently the " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:144 +#: admin/wp-security-firewall-menu.php:191 +msgid "Enable Pingback Protection" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:144 +msgid " is active." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:145 +msgid "Please beware that if you are using the WordPress iOS App, then you will need to deactivate this feature in order for the app to work properly." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:153 +msgid "Basic Firewall Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:161 +msgid "Enable Basic Firewall Protection" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:164 +msgid "Check this if you want to apply basic firewall protection to your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:168 +msgid "This setting will implement the following basic firewall protection mechanisms on your site:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:169 +msgid "1) Protect your htaccess file by denying access to it." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:170 +msgid "2) Disable the server signature." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:171 +msgid "3) Limit file upload size (10MB)." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:172 +msgid "4) Protect your wp-config.php file by denying access to it." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:173 +msgid "The above firewall features will be applied via your .htaccess file and should not affect your site's overall functionality." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:174 +msgid "You are still advised to take a backup of your active .htaccess file just in case." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:183 +msgid "WordPress Pingback Vulnerability Protection" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:194 +msgid "Check this if you are not using the WP XML-RPC functionality and you want to enable protection against WordPress pingback vulnerabilities." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:198 +msgid "This setting will add a directive in your .htaccess to disable access to the WordPress xmlrpc.php file which is responsible for the XML-RPC functionality such as pingbacks in WordPress." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:199 +msgid "Hackers can exploit various pingback vulnerabilities in the WordPress XML-RPC API in a number of ways such as:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:200 +msgid "1) Denial of Service (DoS) attacks" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:201 +msgid "2) Hacking internal routers." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:202 +msgid "3) Scanning ports in internal networks to get info from various hosts." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:203 +msgid "Apart from the security protection benefit, this feature may also help reduce load on your server, particularly if your site currently has a lot of unwanted traffic hitting the XML-RPC API on your installation." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:204 +msgid "NOTE: You should only enable this feature if you are not currently using the XML-RPC functionality on your WordPress installation." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:211 +msgid "Save Basic Firewall Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:283 +msgid "You have successfully saved the Additional Firewall Protection configuration" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:297 +msgid "Additional Firewall Protection" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:301 +#, php-format +msgid "Due to the nature of the code being inserted to the .htaccess file, this feature may break some functionality for certain plugins and you are therefore advised to take a %s of .htaccess before applying this configuration." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:303 +msgid "This feature allows you to activate more advanced firewall settings to your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:304 +msgid "The advanced firewall rules are applied via the insertion of special code to your currently active .htaccess file." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:313 +msgid "Listing of Directory Contents" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:322 +#: classes/grade-system/wp-security-feature-item-manager.php:88 +msgid "Disable Index Views" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:325 +msgid "Check this if you want to disable directory and file listing." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:330 +msgid "By default, an Apache server will allow the listing of the contents of a directory if it doesn't contain an index.php file." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:332 +msgid "This feature will prevent the listing of contents for all directories." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:334 +msgid "NOTE: In order for this feature to work \"AllowOverride\" of the Indexes directive must be enabled in your httpd.conf file. Ask your hosting provider to check this if you don't have access to httpd.conf" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:343 +msgid "Trace and Track" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:352 +#: classes/grade-system/wp-security-feature-item-manager.php:89 +msgid "Disable Trace and Track" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:355 +msgid "Check this if you want to disable trace and track." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:360 +msgid "HTTP Trace attack (XST) can be used to return header requests and grab cookies and other information." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:362 +msgid "This hacking technique is usually used together with cross site scripting attacks (XSS)." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:364 +msgid "Disabling trace and track on your site will help prevent HTTP Trace attacks." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:373 +msgid "Proxy Comment Posting" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:383 +msgid "Forbid Proxy Comment Posting" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:386 +msgid "Check this if you want to forbid proxy comment posting." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:391 +msgid "This setting will deny any requests that use a proxy server when posting comments." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:392 +msgid "By forbidding proxy comments you are in effect eliminating some SPAM and other proxy requests." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:401 +msgid "Bad Query Strings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:411 +msgid "Deny Bad Query Strings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:414 +msgid "This will help protect you against malicious queries via XSS." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:419 +msgid "This feature will write rules in your .htaccess file to prevent malicious string attacks on your site using XSS." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:420 +msgid "NOTE: Some of these strings might be used for plugins or themes and hence this might break some functionality." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:421 +#: admin/wp-security-firewall-menu.php:451 +msgid "You are therefore strongly advised to take a backup of your active .htaccess file before applying this feature." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:430 +#: classes/grade-system/wp-security-feature-item-manager.php:92 +msgid "Advanced Character String Filter" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:440 +msgid "Enable Advanced Character String Filter" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:443 +msgid "This will block bad character matches from XSS." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:448 +msgid "This is an advanced character string filter to prevent malicious string attacks on your site coming from Cross Site Scripting (XSS)." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:449 +msgid "This setting matches for common malicious string patterns and exploits and will produce a 403 error for the hacker attempting the query." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:450 +msgid "NOTE: Some strings for this setting might break some functionality." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:459 +msgid "Save Additional Firewall Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:494 +msgid "You have successfully saved the 5G Firewall Protection configuration" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:507 +#, php-format +msgid "This feature allows you to activate the 5G firewall security protection rules designed and produced by %s." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:508 +msgid "The 5G Blacklist is a simple, flexible blacklist that helps reduce the number of malicious URL requests that hit your website." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:509 +msgid "The added advantage of applying the 5G firewall to your site is that it has been tested and confirmed by the people at PerishablePress.com to be an optimal and least disruptive set of .htaccess security rules for general WP sites running on an Apache server or similar." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:510 +#, php-format +msgid "Therefore the 5G firewall rules should not have any impact on your site's general functionality but if you wish you can take a %s of your .htaccess file before proceeding." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:516 +msgid "5G Blacklist/Firewall Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:528 +msgid "Enable 5G Firewall Protection" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:531 +msgid "Check this if you want to apply the 5G Blacklist firewall protection from perishablepress.com to your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:535 +msgid "This setting will implement the 5G security firewall protection mechanisms on your site which include the following things:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:536 +msgid "1) Block forbidden characters commonly used in exploitative attacks." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:537 +msgid "2) Block malicious encoded URL characters such as the \".css(\" string." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:538 +msgid "3) Guard against the common patterns and specific exploits in the root portion of targeted URLs." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:539 +msgid "4) Stop attackers from manipulating query strings by disallowing illicit characters." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:540 +msgid "....and much more." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:546 +msgid "Save 5G Firewall Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:577 +msgid "The Internet bot settings were successfully saved" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:581 +msgid "Internet Bot Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:588 +#, php-format +msgid "%s?" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:590 +msgid "A bot is a piece of software which runs on the Internet and performs automatic tasks. For example when Google indexes your pages it uses automatic bots to achieve this task." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:591 +msgid "A lot of bots are legitimate and non-malicous but not all bots are good and often you will find some which try to impersonate legitimate bots such as \"Googlebot\" but in reality they have nohing to do with Google at all." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:592 +msgid "Although most of the bots out there are relatively harmless sometimes website owners want to have more control over which bots they allow into their site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:593 +msgid "This feature allows you to block bots which are impersonating as a Googlebot but actually aren't. (In other words they are fake Google bots)" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:594 +msgid "Googlebots have a unique indentity which cannot easily be forged and this feature will indentify any fake Google bots and block them from reading your site's pages." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:600 +msgid "Attention: Sometimes non-malicious Internet organizations might have bots which impersonate as a \"Googlebot\"." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:601 +msgid "Just be aware that if you activate this feature the plugin will block all bots which use the \"Googlebot\" string in their User Agent information but are NOT officially from Google (irrespective whether they are malicious or not)." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:602 +msgid "All other bots from other organizations such as \"Yahoo\", \"Bing\" etc will not be affected by this feature." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:608 +#: admin/wp-security-firewall-menu.php:618 +#: classes/grade-system/wp-security-feature-item-manager.php:94 +msgid "Block Fake Googlebots" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:621 +msgid "Check this if you want to block all fake Googlebots." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:625 +msgid "This feature will check if the User Agent information of a bot contains the string \"Googlebot\"." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:626 +msgid "It will then perform a few tests to verify if the bot is legitimately from Google and if so it will allow the bot to proceed." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:627 +msgid "If the bot fails the checks then the plugin will mark it as being a fake Googlebot and it will block it" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:634 +msgid "Save Internet Bot Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:671 +#: admin/wp-security-firewall-menu.php:693 +#: classes/grade-system/wp-security-feature-item-manager.php:32 +msgid "Prevent Image Hotlinking" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:674 +msgid "A Hotlink is where someone displays an image on their site which is actually located on your site by using a direct link to the source of the image on your server." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:675 +msgid "Due to the fact that the image being displayed on the other person's site is coming from your server, this can cause leaking of bandwidth and resources for you because your server has to present this image for the people viewing it on someone elses's site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:676 +msgid "This feature will prevent people from directly hotlinking images from your site's pages by writing some directives in your .htaccess file." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:681 +msgid "Prevent Hotlinking" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:696 +msgid "Check this if you want to prevent hotlinking to images on your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:716 +msgid "Nonce check failed for delete all 404 event logs operation!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:727 +msgid "404 Detection Feature - Delete all 404 event logs operation failed!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:731 +msgid "All 404 event logs were deleted from the DB successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:757 +#: admin/wp-security-user-login-menu.php:110 +msgid "You entered a non numeric value for the lockout time length field. It has been set to the default value." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:763 +msgid "You entered an incorrect format for the \"Redirect URL\" field. It has been set to the default value." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:795 +msgid "404 Detection Configuration" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:798 +msgid "A 404 or Not Found error occurs when somebody tries to access a non-existent page on your website." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:799 +msgid "Typically, most 404 errors happen quite innocently when people have mis-typed a URL or used an old link to page which doesn't exist anymore." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:800 +msgid "However, in some cases you may find many repeated 404 errors which occur in a relatively short space of time and from the same IP address which are all attempting to access a variety of non-existent page URLs." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:801 +msgid "Such behaviour can mean that a hacker might be trying to find a particular page or URL for sinister reasons." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:802 +msgid "This feature allows you to monitor all 404 events which occur on your site, and it also gives you the option of blocking IP addresses for a configured length of time." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:803 +msgid "If you want to temporarily block an IP address, simply click the \"Temp Block\" link for the applicable IP entry in the \"404 Event Logs\" table below." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:808 +msgid "404 Detection Options" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:820 +msgid "Enable IP Lockout For 404 Events" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:823 +msgid "Check this if you want to enable the lockout of selected IP addresses." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:828 +msgid "When you enable this checkbox, all 404 events on your site will be logged in the table below. You can monitor these events and select some IP addresses to be blocked in the table. All IP addresses you select to be blocked from the \"404 Event Logs\" table section will be unable to access your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:836 +msgid "Enable 404 Event Logging" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:839 +msgid "Check this if you want to enable the logging of 404 events" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:844 +msgid "Time Length of 404 Lockout (min)" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:846 +msgid "Set the length of time for which a blocked IP address will be prevented from visiting your site" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:851 +msgid "You can lock any IP address which is recorded in the \"404 Event Logs\" table section below." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:853 +msgid "To temporarily lock an IP address, hover over the ID column and click the \"Temp Block\" link for the applicable IP entry." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:860 +msgid "404 Lockout Redirect URL" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:862 +msgid "A blocked visitor will be automatically redirected to this URL." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:871 +msgid "404 Event Logs" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:892 +#: admin/wp-security-firewall-menu.php:901 +msgid "Delete All 404 Event Logs" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:898 +msgid "Click this button if you wish to purge all 404 event logs from the DB." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-list-404.php:108 +#: admin/wp-security-list-acct-activity.php:79 +#: admin/wp-security-list-comment-spammer-ip.php:86 +#: admin/wp-security-list-locked-ip.php:82 +#: admin/wp-security-list-locked-ip.php:93 +#: admin/wp-security-list-login-fails.php:78 +#: admin/wp-security-list-registered-users.php:82 +#: admin/wp-security-list-registered-users.php:93 +msgid "Please select some records using the checkboxes" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-list-acct-activity.php:107 +#: admin/wp-security-list-login-fails.php:107 +msgid "The selected entries were deleted successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-list-acct-activity.php:120 +#: admin/wp-security-list-login-fails.php:119 +msgid "The selected entry was deleted successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-list-comment-spammer-ip.php:139 +msgid "The selected IP addresses were saved in the blacklist configuration settings." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-list-comment-spammer-ip.php:153 +msgid "The .htaccess file was successfully modified to include the selected IP addresses." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-list-comment-spammer-ip.php:159 +msgid "NOTE: The .htaccess file was not modified because you have disabled the \"Enable IP or User Agent Blacklisting\" check box." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-list-comment-spammer-ip.php:160 +#, php-format +msgid "To block these IP addresses you will need to enable the above flag in the %s menu" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-list-locked-ip.php:117 +#: admin/wp-security-user-login-menu.php:527 +msgid "The selected IP entries were unlocked successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-list-locked-ip.php:126 +#: admin/wp-security-user-login-menu.php:536 +msgid "The selected IP entry was unlocked successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-list-registered-users.php:127 +#: admin/wp-security-list-registered-users.php:151 +msgid "Your account is now active" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-list-registered-users.php:128 +msgid "Your account with username:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-list-registered-users.php:135 +msgid "The selected accounts were approved successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-list-registered-users.php:139 +msgid "The following accounts failed to update successfully: " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-list-registered-users.php:147 +msgid "The selected account was approved successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-list-registered-users.php:152 +msgid "Your account with username: " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-list-registered-users.php:176 +msgid "The selected accounts were deleted successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-list-registered-users.php:184 +msgid "The selected account was deleted successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-maintenance-menu.php:22 +msgid "Visitor Lockout" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-maintenance-menu.php:88 +msgid "Site lockout feature settings saved!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-maintenance-menu.php:93 +msgid "General Visitor Lockout" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-maintenance-menu.php:99 +msgid "This feature allows you to put your site into \"maintenance mode\" by locking down the front-end to all visitors except logged in users with super admin privileges." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-maintenance-menu.php:100 +msgid "Locking your site down to general visitors can be useful if you are investigating some issues on your site or perhaps you might be doing some maintenance and wish to keep out all traffic for security reasons." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-maintenance-menu.php:105 +msgid "Enable Front-end Lockout" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-maintenance-menu.php:108 +msgid "Check this if you want all visitors except those who are logged in as administrator to be locked out of the front-end of your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-maintenance-menu.php:112 +msgid "Enter a Message:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-maintenance-menu.php:124 +msgid "Enter a message you wish to display to visitors when your site is in maintenance mode." +msgstr "" + +# @ default +#: admin/wp-security-maintenance-menu.php:131 +msgid "Save Site Lockout Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:25 +msgid "General Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:28 +msgid "WP Meta Info" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:95 +msgid "All the security features have been disabled successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:99 +#: admin/wp-security-settings-menu.php:126 +msgid "Could not write to the .htaccess file. Please restore your .htaccess file manually using the restore functionality in the \".htaccess File\"." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:104 +msgid "Could not write to the wp-config.php. Please restore your wp-config.php file manually using the restore functionality in the \"wp-config.php File\"." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:122 +msgid "All firewall rules have been disabled successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:136 +msgid "WP Security Plugin" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:138 +msgid "Thank you for using our WordPress security plugin. There are a lot of security features in this plugin." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:139 +msgid "Go through each menu items and enable the security options to add more security to your site. Start by activating the basic features first." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:140 +msgid "It is a good practice to take a backup of your .htaccess file, database and wp-config.php file before activating the security features. This plugin has options that you can use to backup those resources easily." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:143 +msgid "Backup your database" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:144 +msgid "Backup .htaccess file" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:145 +msgid "Backup wp-config.php file" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:151 +msgid "Disable Security Features" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:157 +msgid "If you think that some plugin functionality on your site is broken due to a security feature you enabled in this plugin, then use the following option to turn off all the security features of this plugin." +msgstr "" + +# @ default +#: admin/wp-security-settings-menu.php:161 +msgid "Disable All Security Features" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +# @ default +#: admin/wp-security-settings-menu.php:167 +#: admin/wp-security-settings-menu.php:177 +msgid "Disable All Firewall Rules" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:173 +msgid "This feature will disable all firewall rules which are currently active in this plugin and it will also delete these rules from your .htacess file. Use it if you think one of the firewall rules is causing an issue on your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:206 +msgid "Your .htaccess file was successfully backed up! Using an FTP program go to the \"/wp-content/aiowps_backups\" directory to save a copy of the file to your computer." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:212 +msgid "htaccess file rename failed during backup. Please check your root directory for the backup file using FTP." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:218 +msgid "htaccess backup failed." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:233 +msgid "Please choose a .htaccess to restore from." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:249 +msgid "htaccess file restore failed. Please attempt to restore the .htaccess manually using FTP." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:253 +msgid "Your .htaccess file has successfully been restored!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:259 +msgid "htaccess Restore operation failed! Please check the contents of the file you are trying to restore from." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:265 +msgid ".htaccess File Operations" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:268 +msgid "Your \".htaccess\" file is a key component of your website's security and it can be modified to implement various levels of protection mechanisms." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:269 +msgid "This feature allows you to backup and save your currently active .htaccess file should you need to re-use the the backed up file in the future." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:270 +msgid "You can also restore your site's .htaccess settings using a backed up .htaccess file." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:284 +msgid "Save the current .htaccess file" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:288 +msgid "Click the button below to backup and save the currently active .htaccess file." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:289 +msgid "Backup .htaccess File" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:293 +msgid "Restore from a backed up .htaccess file" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:299 +msgid ".htaccess file to restore from" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:305 +msgid "After selecting your file, click the button below to restore your site using the backed up htaccess file (htaccess_backup.txt)." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:311 +msgid "Restore .htaccess File" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:315 +msgid "View Contents of the currently active .htaccess file" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:344 +msgid "Please choose a wp-config.php file to restore from." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:360 +msgid "wp-config.php file restore failed. Please attempt to restore this file manually using FTP." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:364 +msgid "Your wp-config.php file has successfully been restored!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:370 +msgid "wp-config.php Restore operation failed! Please check the contents of the file you are trying to restore from." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:376 +msgid "wp-config.php File Operations" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:379 +msgid "Your \"wp-config.php\" file is one of the most important in your WordPress installation. It is a primary configuration file and contains crucial things such as details of your database and other critical components." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:380 +msgid "This feature allows you to backup and save your currently active wp-config.php file should you need to re-use the the backed up file in the future." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:381 +msgid "You can also restore your site's wp-config.php settings using a backed up wp-config.php file." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:395 +msgid "Save the current wp-config.php file" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:399 +msgid "Click the button below to backup and download the contents of the currently active wp-config.php file." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:400 +msgid "Backup wp-config.php File" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:405 +msgid "Restore from a backed up wp-config file" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:411 +msgid "wp-config file to restore from" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:417 +msgid "After selecting your file click the button below to restore your site using the backed up wp-config file (wp-config.php.backup.txt)." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:423 +msgid "Restore wp-config File" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:427 +msgid "View Contents of the currently active wp-config.php file" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:462 +msgid "WP Generator Meta Tag" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:465 +msgid "Wordpress generator automatically adds some meta information inside the \"head\" tags of every page on your site's front end. Below is an example of this:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:467 +msgid "The above meta information shows which version of WordPress your site is currently running and thus can help hackers or crawlers scan your site to see if you have an older version of WordPress or one with a known exploit." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:468 +msgid "This feature will allow you to remove the WP generator meta info from your site's pages." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:474 +msgid "WP Generator Meta Info" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:486 +msgid "Remove WP Generator Meta Info" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:489 +msgid "Check this if you want to remove the meta info produced by WP Generator from all pages" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:23 +msgid "Comment SPAM" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:24 +msgid "Comment SPAM IP Monitoring" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:111 +msgid "Comment SPAM Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:116 +msgid "Add Captcha To Comments Form" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:120 +msgid "This feature will add a simple math captcha field in the WordPress comments form." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:121 +msgid "Adding a captcha field in the comment form is a simple way of greatly reducing SPAM comments from bots without using .htaccess rules." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:137 +msgid "Enable Captcha On Comment Forms" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:140 +msgid "Check this if you want to insert a captcha field on the comment forms" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:148 +msgid "Block Spambot Comments" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:152 +msgid "A large portion of WordPress blog comment SPAM is mainly produced by automated bots and not necessarily by humans. " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:153 +msgid "This feature will greatly minimize the useless and unecessary traffic and load on your server resulting from SPAM comments by blocking all comment requests which do not originate from your domain." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:154 +msgid "In other words, if the comment was not submitted by a human who physically submitted the comment on your site, the request will be blocked." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:170 +msgid "Block Spambots From Posting Comments" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:173 +msgid "Check this if you want to apply a firewall rule which will block comments originating from spambots." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:177 +msgid "This feature will implement a firewall rule to block all comment attempts which do not originate from your domain." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:178 +msgid "A legitimate comment is one which is submitted by a human who physically fills out the comment form and clicks the submit button. For such events, the HTTP_REFERRER is always set to your own domain." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:179 +msgid "A comment submitted by a spambot is done by directly calling the comments.php file, which usually means that the HTTP_REFERRER value is not your domain and often times empty." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:180 +msgid "This feature will check and block comment requests which are not referred by your domain thus greatly reducing your overall blog SPAM and PHP requests done by the server to process these comments." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:207 +msgid "Nonce check failed for list SPAM comment IPs!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:213 +msgid "You entered a non numeric value for the minimum SPAM comments per IP field. It has been set to the default value." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:225 +#, php-format +msgid "Displaying results for IP addresses which have posted a minimum of %s SPAM comments" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:241 +msgid "This tab displays a list of the IP addresses of the people or bots who have left SPAM comments on your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:242 +msgid "This information can be handy for identifying the most persistent IP addresses or ranges used by spammers." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:243 +msgid "By inspecting the IP address data coming from spammers you will be in a better position to determine which addresses or address ranges you should block by adding them to your blacklist." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:244 +msgid "" +"To add one or more of the IP addresses displayed in the table below to your blacklist, simply click the \"Block\" link for the individual row or select more than one address \n" +" using the checkboxes and then choose the \"block\" option from the Bulk Actions dropdown list and click the \"Apply\" button." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:250 +msgid "List SPAMMER IP Addresses" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:256 +msgid "Minimum number of SPAM comments per IP" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:258 +msgid "This field allows you to list only those IP addresses which have been used to post X or more SPAM comments." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:262 +msgid "Example 1: Setting this value to \"0\" or \"1\" will list ALL IP addresses which were used to submit SPAM comments." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:263 +msgid "Example 2: Setting this value to \"5\" will list only those IP addresses which were used to submit 5 SPAM comments or more on your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:270 +msgid "Find IP Addresses" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:274 +msgid "SPAMMER IP Address Results" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:280 classes/wp-security-utility.php:150 +msgid "The plugin has detected that you are using a Multi-Site WordPress installation." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:281 +msgid "Only the \"superadmin\" can block IP addresses from the main site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:282 +msgid "Take note of the IP addresses you want blocked and ask the superadmin to add these to the blacklist using the \"Blacklist Manager\" on the main site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:29 +msgid "WP Username" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:30 +msgid "Display Name" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +# @ default +#: admin/wp-security-user-accounts-menu.php:31 +#: other-includes/wp-security-rename-login-feature.php:845 +msgid "Password" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:85 +msgid "Admin User Security" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:88 +msgid "By default, WordPress sets the administrator username to \"admin\" at installation time." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:89 +msgid "A lot of hackers try to take advantage of this information by attempting \"Brute Force Login Attacks\" where they repeatedly try to guess the password by using \"admin\" for username." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:90 +msgid "From a security perspective, changing the default \"admin\" user name is one of the first and smartest things you should do on your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:91 +msgid "This feature will allow you to change your default \"admin\" user name to a more secure name of your choosing." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:98 +msgid "List of Administrator Accounts" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:107 +#: classes/grade-system/wp-security-feature-item-manager.php:36 +msgid "Change Admin Username" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:115 +msgid "" +"Your site currently has an account which uses the default \"admin\" username. \n" +" It is highly recommended that you change this name to something else. \n" +" Use the following field to change the admin username." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:123 +msgid "New Admin Username" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:125 +msgid "Choose a new username for admin." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:129 +msgid "Change Username" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:131 +msgid "NOTE: If you are currently logged in as \"admin\" you will be automatically logged out after changing your username and will be required to log back in." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:138 +msgid "No action required! " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:140 +msgid "Your site does not have any account which uses the default \"admin\" username. " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:141 +msgid "This is good security practice." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:153 +msgid "Display Name Security" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:156 +msgid "When you submit a post or answer a comment, WordPress will usually display your \"nickname\"." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:157 +msgid "By default the nickname is set to the login (or user) name of your account." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:158 +msgid "From a security perspective, leaving your nickname the same as your user name is bad practice because it gives a hacker at least half of your account's login credentials." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:159 +msgid "Therefore to further tighten your site's security you are advised to change your nickname and Display name to be different from your Username." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:165 +msgid "Modify Accounts With Identical Login Name & Display Name" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:174 +msgid "Your site currently has the following accounts which have an identical login name and display name." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:175 +msgid "Click on the link to edit the settings of that particular user account" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:190 +msgid "No action required." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:191 +msgid "Your site does not have a user account where the display name is identical to the username." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:202 +msgid "Password Tool" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:205 +msgid "Poor password selection is one of the most common weak points of many sites and is usually the first thing a hacker will try to exploit when attempting to break into your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:206 +msgid "Many people fall into the trap of using a simple word or series of numbers as their password. Such a predictable and simple password would take a competent hacker merely minutes to guess your password by using a simple script which cycles through the easy and most common combinations." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:207 +msgid "The longer and more complex your password is the harder it is for hackers to \"crack\" because more complex passwords require much greater computing power and time." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:208 +msgid "This section contains a useful password strength tool which you can use to check whether your password is sufficiently strong enough." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:213 +msgid "Password Strength Tool" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:218 +msgid "Start typing a password." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:221 +msgid "It would take a desktop PC approximately" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:222 +msgid "1 sec" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:222 +msgid "to crack your password!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:227 +msgid "Password Strength" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:243 +msgid "Nonce check failed on admin username change operation!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:250 +msgid "Username " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:250 +msgid " already exists. Please enter another value. " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:266 +msgid "The database update operation of the user account failed!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:293 +msgid "You entered an invalid username. Please enter another value. " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:297 +msgid "Please enter a value for your username. " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:304 +msgid "Username Successfully Changed!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:324 +msgid "Account Login Name" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:26 +#: admin/wp-security-user-login-menu.php:298 +msgid "Failed Login Records" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:27 +#: classes/grade-system/wp-security-feature-item-manager.php:50 +msgid "Force Logout" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:28 +#: admin/wp-security-user-login-menu.php:432 +msgid "Account Activity Logs" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:96 +msgid "You entered a non numeric value for the max login attempts field. It has been set to the default value." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:103 +msgid "You entered a non numeric value for the login retry time period field. It has been set to the default value." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:159 +msgid "Login Lockdown Configuration" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:163 +msgid "One of the ways hackers try to compromise sites is via a " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:163 +msgid "Brute Force Login Attack" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:164 +msgid "This is where attackers use repeated login attempts until they guess the password." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:165 +msgid "Apart from choosing strong passwords, monitoring and blocking IP addresses which are involved in repeated login failures in a short period of time is a very effective way to stop these types of attacks." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:166 +#, php-format +msgid "You may also want to checkout our %s feature for another secure way to protect against these types of attacks." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:171 +msgid "Login Lockdown Options" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:183 +msgid "Enable Login Lockdown Feature" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:186 +msgid "Check this if you want to enable the login lockdown feature and apply the settings below" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:190 +msgid "Allow Unlock Requests" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:193 +msgid "Check this if you want to allow users to generate an automated unlock request link which will unlock their account" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:197 +msgid "Max Login Attempts" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:199 +msgid "Set the value for the maximum login retries before IP address is locked out" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:203 +msgid "Login Retry Time Period (min)" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:205 +msgid "If the maximum number of failed login attempts for a particular IP address occur within this time period the plugin will lock out that address" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:209 +msgid "Time Length of Lockout (min)" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:211 +msgid "Set the length of time for which a particular IP address will be prevented from logging in" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:215 +msgid "Display Generic Error Message" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:218 +msgid "Check this if you want to show a generic error message when a login attempt fails" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:222 +msgid "Instantly Lockout Invalid Usernames" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:225 +msgid "Check this if you want to instantly lockout login attempts with usernames which do not exist on your system" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:230 +msgid "Notify By Email" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:233 +msgid "Check this if you want to receive an email when someone has been locked out due to maximum failed login attempts" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:243 +msgid "Currently Locked Out IP Address Ranges" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:248 +#, php-format +msgid "To see a list of all locked IP addresses and ranges go to the %s tab in the dashboard menu." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:264 +msgid "Nonce check failed for delete all failed login records operation!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:273 +msgid "User Login Feature - Delete all failed login records operation failed!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:277 +msgid "All records from the Failed Logins table were deleted successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:292 +msgid "This tab displays the failed login attempts for your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:293 +msgid "The information below can be handy if you need to do security investigations because it will show you the IP range, username and ID (if applicable) and the time/date of the failed login attempt." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:314 +#: admin/wp-security-user-login-menu.php:323 +msgid "Delete All Failed Login Records" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:320 +msgid "Click this button if you wish to delete all failed login records in one go." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:348 +msgid "You entered a non numeric value for the logout time period field. It has been set to the default value." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:376 +msgid "Setting an expiry period for your WP administration session is a simple way to protect against unauthorized access to your site from your computer." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:377 +msgid "This feature allows you to specify a time period in minutes after which the admin session will expire and the user will be forced to log back in." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:382 +msgid "Force User Logout Options" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:394 +msgid "Enable Force WP User Logout" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:397 +msgid "Check this if you want to force a wp user to be logged out after a configured amount of time" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:401 +msgid "Logout the WP User After XX Minutes" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:403 +msgid "(Minutes) The user will be forced to log back in after this time period has elapased." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:426 +msgid "This tab displays the login activity for WordPress admin accounts registered with your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:427 +msgid "The information below can be handy if you need to do security investigations because it will show you the last 50 recent login events by username, IP address and time/date." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:464 +msgid "Nonce check failed for users logged in list!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:477 +msgid "Refresh Logged In User Data" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:481 +msgid "Refresh Data" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:487 +msgid "This tab displays all users who are currently logged into your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:488 +msgid "If you suspect there is a user or users who are logged in which should not be, you can block them by inspecting the IP addresses from the data below and adding them to your blacklist." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:493 +msgid "Currently Logged In Users" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:558 +msgid "The selected records were deleted successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:567 +msgid "The selected record was deleted successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-registration-menu.php:23 +msgid "Manual Approval" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-registration-menu.php:24 +#: classes/grade-system/wp-security-feature-item-manager.php:56 +msgid "Registration Captcha" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-registration-menu.php:112 +msgid "User Registration Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-registration-menu.php:116 +msgid "Manually Approve New Registrations" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-registration-menu.php:120 +msgid "If your site allows people to create their own accounts via the WordPress registration form, then you can minimize SPAM or bogus registrations by manually approving each registration." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-registration-menu.php:121 +msgid "This feature will automatically set a newly registered account to \"pending\" until the administrator activates it. Therefore undesirable registrants will be unable to log in without your express approval." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-registration-menu.php:122 +msgid "You can view all accounts which have been newly registered via the handy table below and you can also perform bulk activation/deactivation/deletion tasks on each account." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-registration-menu.php:138 +msgid "Enable manual approval of new registrations" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-registration-menu.php:141 +msgid "Check this if you want to automatically disable all newly registered accounts so that you can approve them manually." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-registration-menu.php:150 +msgid "Approve Registered Users" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-registration-menu.php:195 +msgid "This feature allows you to add a captcha form on the WordPress registration page." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-registration-menu.php:196 +msgid "Users who attempt to register will also need to enter the answer to a simple mathematical question - if they enter the wrong answer, the plugin will not allow them to register." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-registration-menu.php:197 +msgid "Therefore, adding a captcha form on the registration page is another effective yet simple SPAM registration prevention technique." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-registration-menu.php:202 +msgid "Registration Page Captcha Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-registration-menu.php:214 +msgid "Enable Captcha On Registration Page" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-registration-menu.php:217 +msgid "Check this if you want to insert a captcha form on the WordPress user registration page (if you allow user registration)." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-whois-menu.php:22 +msgid "WhoIS Lookup" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-whois-menu.php:74 +msgid "WHOIS Lookup Information" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-whois-menu.php:77 +msgid "This feature allows you to look up more detailed information about an IP address or domain name by querying the WHOIS API." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-whois-menu.php:83 +msgid "Perform a WHOIS Lookup for an IP or Domain Name" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-whois-menu.php:89 +msgid "Enter IP Address or Domain Name" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-whois-menu.php:91 +msgid "Enter an IP address or domain name. Example: 111.11.12.13 OR some-domain-name.com" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-whois-menu.php:95 +msgid "Perform IP or Domain Lookup" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-whois-menu.php:115 +msgid "WHOIS lookup successfully completed. Please see the results below:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-whois-menu.php:127 +msgid "You have entered an incorrectly formatted IP address or domain name. Please try again." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/grade-system/wp-security-feature-item-manager.php:29 +msgid "Remove WP Generatore Meta Tag" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/grade-system/wp-security-feature-item-manager.php:38 +msgid "Change Display Name" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/grade-system/wp-security-feature-item-manager.php:46 +msgid "Lost Password Captcha" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/grade-system/wp-security-feature-item-manager.php:48 +msgid "Login IP Whitelisting" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/grade-system/wp-security-feature-item-manager.php:54 +msgid "Registration Approval" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/grade-system/wp-security-feature-item-manager.php:70 +msgid "WordPress Files Access" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/grade-system/wp-security-feature-item-manager.php:74 +msgid "IP and User Agent Blacklisting" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/grade-system/wp-security-feature-item-manager.php:78 +msgid "Enable Basic Firewall" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/grade-system/wp-security-feature-item-manager.php:79 +msgid "Enable Pingback Vulnerability Protection" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/grade-system/wp-security-feature-item-manager.php:80 +msgid "Enable IP blocking for 404 detection" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/grade-system/wp-security-feature-item-manager.php:84 +msgid "Enable Rename Login Page" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/grade-system/wp-security-feature-item-manager.php:90 +msgid "Forbid Proxy Comments" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/grade-system/wp-security-feature-item-manager.php:91 +msgid "Deny Bad Queries" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/grade-system/wp-security-feature-item-manager.php:93 +msgid "5G Blacklist" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/grade-system/wp-security-feature-item-manager.php:96 +msgid "Block Spambots" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/grade-system/wp-security-feature-item-manager.php:98 +msgid "Comment Captcha" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/grade-system/wp-security-feature-item.php:28 +msgid "Basic" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/grade-system/wp-security-feature-item.php:31 +msgid "Intermediate" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/grade-system/wp-security-feature-item.php:34 +msgid "Advanced" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-backup.php:177 +msgid "All In One WP Security - Site Database Backup" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-backup.php:179 +msgid "Attached is your latest DB backup file for site URL" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-backup.php:179 +msgid " generated on" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-captcha.php:12 +msgid "Please enter an answer in digits:" +msgstr "Geef het antwoord (in cijfers) van de rekensom:" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-captcha.php:91 +msgid "one" +msgstr "een" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-captcha.php:92 +msgid "two" +msgstr "twee" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-captcha.php:93 +msgid "three" +msgstr "drie" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-captcha.php:94 +msgid "four" +msgstr "vier" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-captcha.php:95 +msgid "five" +msgstr "vijf" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-captcha.php:96 +msgid "six" +msgstr "zes" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-captcha.php:97 +msgid "seven" +msgstr "zeven" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-captcha.php:98 +msgid "eight" +msgstr "acht" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-captcha.php:99 +msgid "nine" +msgstr "negen" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-captcha.php:100 +msgid "ten" +msgstr "tien" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-captcha.php:101 +msgid "eleven" +msgstr "elf" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-captcha.php:102 +msgid "twelve" +msgstr "twaalf" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-captcha.php:103 +msgid "thirteen" +msgstr "dertien" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-captcha.php:104 +msgid "fourteen" +msgstr "veertien" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-captcha.php:105 +msgid "fifteen" +msgstr "vijftien" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-captcha.php:106 +msgid "sixteen" +msgstr "zestien" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-captcha.php:107 +msgid "seventeen" +msgstr "zeventien" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-captcha.php:108 +msgid "eighteen" +msgstr "achttien" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-captcha.php:109 +msgid "nineteen" +msgstr "negentien" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-captcha.php:110 +msgid "twenty" +msgstr "twintig" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-file-scan.php:62 +msgid "All In One WP Security - File change detected!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-file-scan.php:64 +msgid "A file change was detected on your system for site URL" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-file-scan.php:64 +msgid ". Scan was generated on" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-file-scan.php:65 +msgid "Login to your site to view the scan details." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-general-init-tasks.php:214 +msgid "Please enter an answer in the CAPTCHA field." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-general-init-tasks.php:224 +msgid "Error: You entered an incorrect CAPTCHA answer. Please go back and try again." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-general-init-tasks.php:252 +#: classes/wp-security-user-login.php:70 classes/wp-security-user-login.php:73 +#: classes/wp-security-user-registration.php:59 +msgid "ERROR: Your answer was incorrect - please try again." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-process-renamed-login-page.php:68 +msgid "Please log in to access the WordPress admin area." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:43 +msgid "" +"ERROR: Login failed because your IP address has been blocked.\n" +" Please contact the administrator." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:83 +msgid "ERROR: The username field is empty." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:87 +msgid "ERROR: The password field is empty." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:107 +#: classes/wp-security-user-login.php:133 +msgid "ERROR: Invalid login credentials." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:110 +msgid "ERROR: Invalid username." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:136 +#, php-format +msgid "ERROR: Incorrect password. Lost your password?" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:147 +msgid "ACCOUNT PENDING: Your account is currently not active. An administrator needs to activate your account before you can login." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:270 +msgid "Site Lockout Notification" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:271 +msgid "A lockdown event has occurred due to too many failed login attempts or invalid username:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:272 +msgid "Username: Unknown" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:273 +msgid "IP Address: " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:274 +msgid "IP Range: .*" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:275 +msgid "Log into your site's WordPress administration panel to see the duration of the lockout or to unlock the user." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:337 +msgid "Unlock Request Notification" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:338 +msgid "You have requested for the account with email address to be unlocked. Please click the link below to unlock your account:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:339 +msgid "Unlock link: " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:340 +msgid "After clicking the above link you will be able to login to the WordPress administration panel." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:504 +#, php-format +msgid "Your session has expired because it has been over %d minutes since your last login." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:505 +#: classes/wp-security-user-login.php:509 +msgid "Please log back in to continue." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:508 +msgid "You were logged out because you just changed the \"admin\" username." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:534 +msgid "Request Unlock" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-utility-ip-address.php:82 +#: classes/wp-security-utility-ip-address.php:101 +#: classes/wp-security-utility-ip-address.php:116 +#: classes/wp-security-utility-ip-address.php:131 +msgid " is not a valid ip address format." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-utility-ip-address.php:139 +msgid "You cannot ban your own IP address: " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-utility.php:151 +msgid "This feature can only be configured by the \"superadmin\" on the main site." +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:98 +#: other-includes/wp-security-unlock-request.php:13 +msgid "http://wordpress.org/" +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:99 +#: other-includes/wp-security-unlock-request.php:14 +msgid "Powered by WordPress" +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:215 +msgid "Are you lost?" +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:215 +#, php-format +msgid "← Back to %s" +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:273 +msgid "ERROR: Enter a username or e-mail address." +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:277 +msgid "ERROR: There is no user registered with that email address." +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:294 +msgid "ERROR: Invalid username or e-mail." +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:331 +msgid "Password reset is not allowed for this user" +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:356 +msgid "Someone requested that the password be reset for the following account:" +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:358 +#, php-format +msgid "Username: %s" +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:359 +msgid "If this was a mistake, just ignore this email and nothing will happen." +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:360 +msgid "To reset your password, visit the following address:" +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:370 +#, php-format +msgid "[%s] Password Reset" +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:391 +msgid "The e-mail could not be sent." +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:391 +msgid "Possible reason: your host may have disabled the mail() function." +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:496 +msgid "Sorry, that key does not appear to be valid." +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:498 +msgid "Sorry, that key has expired. Please try again." +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:518 +msgid "Lost Password" +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:518 +msgid "Please enter your username or email address. You will receive a link to create a new password via email." +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:526 +msgid "Username or E-mail:" +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:537 +msgid "Get New Password" +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:541 +#: other-includes/wp-security-rename-login-feature.php:590 +#: other-includes/wp-security-rename-login-feature.php:621 +#: other-includes/wp-security-rename-login-feature.php:703 +msgid "Log in" +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:544 +#: other-includes/wp-security-rename-login-feature.php:624 +#: other-includes/wp-security-rename-login-feature.php:699 +#: other-includes/wp-security-rename-login-feature.php:875 +msgid "Register" +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:576 +msgid "The passwords do not match." +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:590 +msgid "Password Reset" +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:590 +msgid "Your password has been reset." +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:598 +#: other-includes/wp-security-rename-login-feature.php:617 +msgid "Reset Password" +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:598 +msgid "Enter your new password below." +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:605 +msgid "New password" +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:609 +msgid "Confirm new password" +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:613 +msgid "Strength indicator" +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:614 +msgid "Hint: The password should be at least seven characters long. To make it stronger, use upper and lower case letters, numbers and symbols like ! \" ? $ % ^ & )." +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:676 +msgid "Registration Form" +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:676 +msgid "Register For This Site" +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:681 +#: other-includes/wp-security-rename-login-feature.php:841 +msgid "Username" +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:685 +msgid "E-mail" +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:696 +msgid "A password will be e-mailed to you." +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:704 +#: other-includes/wp-security-rename-login-feature.php:880 +msgid "Password Lost and Found" +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:704 +#: other-includes/wp-security-rename-login-feature.php:880 +msgid "Lost your password?" +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:748 +msgid "ERROR: Cookies are blocked or not supported by your browser. You must enable cookies to use WordPress." +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:766 +msgid "You have logged in successfully." +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:800 +msgid "Session expired. Please log in again. You will not move away from this page." +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:804 +msgid "You are now logged out." +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:806 +msgid "User registration is currently not allowed." +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:808 +msgid "Check your e-mail for the confirmation link." +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:810 +msgid "Check your e-mail for your new password." +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:812 +msgid "Registration complete. Please check your e-mail." +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:814 +msgid "You have successfully updated WordPress! Please log back in to experience the awesomeness." +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:831 +#: other-includes/wp-security-rename-login-feature.php:858 +msgid "Log In" +msgstr "" + +# @ default +#: other-includes/wp-security-rename-login-feature.php:856 +msgid "Remember Me" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: other-includes/wp-security-unlock-request.php:48 +msgid "Please enter a valid email address" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: other-includes/wp-security-unlock-request.php:59 +msgid "User account not found!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: other-includes/wp-security-unlock-request.php:70 +msgid "Error: No locked entry was found in the DB with your IP address range!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: other-includes/wp-security-unlock-request.php:98 +msgid "Email Address" +msgstr "" diff --git a/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-pt_BR.mo b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-pt_BR.mo new file mode 100644 index 0000000..d52fef4 Binary files /dev/null and b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-pt_BR.mo differ diff --git a/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-pt_BR.po b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-pt_BR.po new file mode 100644 index 0000000..a96b8f4 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-pt_BR.po @@ -0,0 +1,4711 @@ +msgid "" +msgstr "" +"Project-Id-Version: All In One WP Security v4.0.7\n" +"POT-Creation-Date: 2016-04-14 11:14-0300\n" +"PO-Revision-Date: 2016-04-18 13:26-0300\n" +"Last-Translator: Gilvanilson Santos \n" +"Language-Team: GVSANTOS Group \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 1.8.7\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n" +"X-Poedit-Basepath: .\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-SearchPath-0: ../../plugins/all-in-one-wp-security-and-firewall\n" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/general/wp-security-list-table.php:178 +msgid "No items found." +msgstr "Nenhum item encontrado." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/general/wp-security-list-table.php:281 +msgid "Bulk Actions" +msgstr "Ações em massa" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/general/wp-security-list-table.php:291 +msgid "Apply" +msgstr "Aplicar" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/general/wp-security-list-table.php:365 +msgid "Show all dates" +msgstr "Mostrar todas as datas" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/general/wp-security-list-table.php:378 +#, php-format +msgid "%1$s %2$d" +msgstr "%1$s %2$d" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/general/wp-security-list-table.php:394 +msgid "List View" +msgstr "Ver lista" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/general/wp-security-list-table.php:395 +msgid "Excerpt View" +msgstr "Ver resumo" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/general/wp-security-list-table.php:421 +#, php-format +msgid "%s pending" +msgstr "%s pendente" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/general/wp-security-list-table.php:653 +msgid "Select All" +msgstr "Selecionar todos" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-admin-init.php:203 +msgid "WP Security" +msgstr "Segurança WP" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-admin-init.php:204 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:25 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:61 +msgid "Dashboard" +msgstr "Painel" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-admin-init.php:205 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:63 +msgid "Settings" +msgstr "Configurações" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-admin-init.php:206 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:64 +msgid "User Accounts" +msgstr "Contas de usuários" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-admin-init.php:207 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:62 +msgid "User Login" +msgstr "Login de usuário" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-admin-init.php:208 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-registration-menu.php:57 +msgid "User Registration" +msgstr "Registro de usuário" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-admin-init.php:209 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:66 +msgid "Database Security" +msgstr "Segurança do DB" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-admin-init.php:213 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:62 +msgid "Filesystem Security" +msgstr "Segurança de arquivos" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-admin-init.php:215 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-whois-menu.php:55 +msgid "WHOIS Lookup" +msgstr "Pesquisa WHOIS" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-admin-init.php:219 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php:55 +msgid "Blacklist Manager" +msgstr "Gerenciar lista negra" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-admin-init.php:224 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:67 +msgid "Firewall" +msgstr "Firewall" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-admin-init.php:226 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:68 +msgid "Brute Force" +msgstr "Força bruta" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-admin-init.php:227 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:59 +msgid "SPAM Prevention" +msgstr "Prevenção SPAM" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-admin-init.php:231 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:59 +msgid "Scanner" +msgstr "Verificador" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-admin-init.php:233 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-maintenance-menu.php:55 +msgid "Maintenance" +msgstr "Manutenção" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-admin-init.php:234 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-misc-options-menu.php:59 +msgid "Miscellaneous" +msgstr "Diversos" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-admin-menu.php:43 +msgid "Settings successfully updated." +msgstr "Configurações autalizadas com sucesso." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-admin-menu.php:50 +msgid "The selected record(s) deleted successfully!" +msgstr "O registro (s) selecionado foi excluído com sucesso!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php:22 +msgid "Ban Users" +msgstr "Usuários banidos" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php:81 +msgid "Nonce check failed for save blacklist settings!" +msgstr "Verificação núncio falhou para salvar configurações de lista negra!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php:136 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:636 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:1017 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-404.php:217 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-comment-spammer-ip.php:198 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-general-init-tasks.php:201 +msgid "The plugin was unable to write to the .htaccess file. Please edit file manually." +msgstr "O plugin não foi capaz de gravar no arquivo .htaccess. Por favor, edite o arquivo manualmente." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php:143 +msgid "Ban IPs or User Agents" +msgstr "Banir IPs ou agentes de usuário" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php:146 +msgid "The All In One WP Security Blacklist feature gives you the option of banning certain host IP addresses or ranges and also user agents." +msgstr "O recurso de lista negra do All In One WP Security lhe dá a opção de proibir determinados endereços IP de host ou intervalos e também agentes de usuário." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php:147 +msgid "This feature will deny total site access for users which have IP addresses or user agents matching those which you have configured in the settings below." +msgstr "Este recurso irá negar o acesso total do local para os usuários que têm endereços IP ou os agentes de usuário correspondentes aos que você configurou nas configurações abaixo." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php:148 +msgid "The plugin achieves this by making appropriate modifications to your .htaccess file." +msgstr "O plugin consegue isso fazendo modificações apropriadas ao seu arquivo .htaccess." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php:149 +msgid "By blocking people via the .htaccess file your are using the most secure first line of defence which denies all access to blacklisted visitors as soon as they hit your hosting server." +msgstr "Ao bloquear as pessoas através do arquivo .htaccess você está usando a primeira linha mais seguro de defesa que nega todo o acesso a visitantes na lista negra, assim que atingirem o seu servidor de hospedagem." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php:155 +msgid "IP Hosts and User Agent Blacklist Settings" +msgstr "Hosts IP e configurações de lista negra de agente do usuário" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php:166 +msgid "Enable IP or User Agent Blacklisting" +msgstr "Habilitar IP ou agente de usuário obstrução na lista negra" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php:169 +msgid "Check this if you want to enable the banning (or blacklisting) of selected IP addresses and/or user agents specified in the settings below" +msgstr "Marque esta opção se você deseja ativar a proibição (ou obstrução da lista negra) de endereços IP selecionados e / ou agentes de usuário especificados nas configurações abaixo" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php:173 +msgid "Enter IP Addresses:" +msgstr "Digite o endereço IP:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php:177 +msgid "Enter one or more IP addresses or IP ranges." +msgstr "Digite um ou mais endereços IP ou intervalos de IP." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php:178 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php:198 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:352 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:386 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:409 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:430 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:693 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:300 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:317 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:169 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:199 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:229 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:356 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:386 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:417 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:445 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:474 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:573 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:591 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:681 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:894 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:917 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:169 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:342 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:384 +msgid "More Info" +msgstr "Mais informação" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php:181 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:696 +msgid "Each IP address must be on a new line." +msgstr "Cada endereço IP deve estar em uma nova linha." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php:182 +msgid "To specify an IP range use a wildcard \"*\" character. Acceptable ways to use wildcards is shown in the examples below:" +msgstr "Para especificar um intervalo de IP usar um caractere curinga \"*\". Maneiras aceitáveis para usar caracteres curinga é mostrada nos exemplos abaixo:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php:183 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:698 +msgid "Example 1: 195.47.89.*" +msgstr "Exemplo 1: 195.47.89.*" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php:184 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:699 +msgid "Example 2: 195.47.*.*" +msgstr "Exemplo 2: 195.47.*.*" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php:185 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:700 +msgid "Example 3: 195.*.*.*" +msgstr "Exemplo 3: 195.*.*.*" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php:192 +msgid "Enter User Agents:" +msgstr "Digite os agentes do usuário:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php:197 +msgid "Enter one or more user agent strings." +msgstr "Digite uma ou mais sequências de caracteres de agente de usuário." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php:201 +msgid "Each user agent string must be on a new line." +msgstr "Cada sequência do agente de usuário deve estar em uma nova linha." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php:202 +msgid "Example 1 - A single user agent string to block:" +msgstr "Exemplo 1 - Uma sequência de caracteres de agente de usuário único para bloquear:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php:204 +msgid "Example 2 - A list of more than 1 user agent strings to block" +msgstr "Exemplo 2 - Uma lista de mais de 1 sequências de agente de usuário para bloquear" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-blacklist-menu.php:212 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:197 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:572 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:710 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:772 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:354 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:340 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:239 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:759 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:936 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-misc-options-menu.php:168 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-misc-options-menu.php:219 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:539 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:184 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:359 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:480 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:239 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:407 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-registration-menu.php:147 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-registration-menu.php:233 +msgid "Save Settings" +msgstr "Salvar configurações" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:26 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:430 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:441 +msgid "Rename Login Page" +msgstr "Renomeação da página de login" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:27 +msgid "Cookie Based Brute Force Prevention" +msgstr "Prevenção baseadas em cookies de força bruta" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:28 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:44 +msgid "Login Captcha" +msgstr "Captcha login" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:29 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:643 +msgid "Login Whitelist" +msgstr "Lista branca de login" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:30 +msgid "Honeypot" +msgstr "Pote de mel" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:106 +msgid "Please enter a value for your login page slug." +msgstr "Por favor, insira um valor para sua lesma/apelido da página de login." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:110 +msgid "You cannot use the value \"wp-admin\" for your login page slug." +msgstr "Você não pode usar o valor \"wp-admin\" para sua lesma/apelido da página de login." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:112 +msgid "You must alpha numeric characters for your login page slug." +msgstr "Você deve usar caracteres alfa numéricos para sua lesma/apelido da página de login." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:117 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:271 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:178 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:826 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:220 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:254 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:124 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:360 +msgid "Attention!" +msgstr "Atenção!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:136 +msgid "Could not delete the Cookie-based directives from the .htaccess file. Please check the file permissions." +msgstr "Não foi possível excluir as diretrizes baseadas em cookie do arquivo .htaccess. Por favor, verifique as permissões do arquivo." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:146 +msgid "An effective Brute Force prevention technique is to change the default WordPress login page URL." +msgstr "Uma técnica eficaz para a prevenção de força bruta é alterar a URL padrão da página de login do WordPress." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:147 +msgid "Normally if you wanted to login to WordPress you would type your site's home URL followed by wp-login.php." +msgstr "Normalmente, se você deseja fazer login para WordPress você deve digitar uma URL home do seu site, seguido de wp-login.php." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:148 +msgid "This feature allows you to change the login URL by setting your own slug and renaming the last portion of the login URL which contains the wp-login.php to any string that you like." +msgstr "Esse recurso permite você alterar a URL de login definindo sua própria lesma/apelido e renomeando a última parte da URL de login que contém o wp-login.php para qualquer sequência de caracteres que você gosta." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:149 +msgid "By doing this, malicious bots and hackers will not be able to access your login page because they will not know the correct login page URL." +msgstr "Ao fazer isso, os hackers e robôs maliciosos não serão capazes de acessar a página de login, porque eles não vão saber a URL da página de login correta." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:151 +msgid "You may also be interested in the following alternative brute force prevention features:" +msgstr "Você pode também estar interessado nos seguintes recursos alternativos de prevenção de força bruta:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:162 +msgid "Your WordPress login page URL has been renamed." +msgstr "Seu URL da página de login do WordPress foi renomeada." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:163 +msgid "Your current login URL is:" +msgstr "Seu URL de login atual é:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:165 +msgid "NOTE: If you already had the Cookie-Based Brute Force Prevention feature active, the plugin has automatically deactivated it because only one of these features can be active at any one time." +msgstr "NOTA: Se você já teve o recurso de prevenção de força bruta baseadas em cookie, ativo, o plugin foi desativado automaticamente porque apenas um desses recursos pode estar ativo de cada vez." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:172 +msgid "Rename Login Page Settings" +msgstr "Configurações de renomeação da página de login" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:184 +msgid "Enable Rename Login Page Feature" +msgstr "Habilitar recurso de renomeação da página de login" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:187 +msgid "Check this if you want to enable the rename login page feature" +msgstr "Marque esta opção se você deseja ativar o recurso de renomeação da página de login" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:191 +msgid "Login Page URL" +msgstr "URL da página de login" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:193 +msgid "Enter a string which will represent your secure login page slug. You are enouraged to choose something which is hard to guess and only you will remember." +msgstr "Digite uma sequência de caracteres que irá representar sua lesma/apelido da página de login seguro. Você é incentivado a escolher algo que é difícil de adivinhar e só você vai se lembrar." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:226 +msgid "Settings have not been saved - your secret word must consist only of alphanumeric characters, ie, letters and/or numbers only!" +msgstr "Configurações não foram salvas - sua palavra secreta deve consistir apenas de caracteres alfanuméricos, ou seja, letras e/ou números apenas!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:245 +msgid "You have successfully enabled the cookie based brute force prevention feature" +msgstr "Você ativou com sucesso o recurso de prevenção de força bruta baseada em cookie" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:246 +msgid "From now on you will need to log into your WP Admin using the following URL:" +msgstr "De agora em diante, você precisará fazer login em sua administração WP usando a seguinte URL:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:248 +msgid "It is important that you save this URL value somewhere in case you forget it, OR," +msgstr "É importante que você salve esse valor de URL em algum lugar caso você esqueça, OU," + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:249 +#, php-format +msgid "simply remember to add a \"?%s=1\" to your current site URL address." +msgstr "simplesmente lembre-se de adicionar um \"?%s=1\" para o seu endereço de URL do site atual." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:255 +msgid "You have successfully saved cookie based brute force prevention feature settings." +msgstr "Você salvou com sucesso as configurações de recursos de prevenção de força bruta baseadas em cookies." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:290 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:283 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:123 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:317 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:538 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:726 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:633 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:109 +msgid "Could not write to the .htaccess file. Please check the file permissions." +msgstr "Não foi possível gravar no arquivo .htaccess. Por favor, verifique as permissões do arquivo." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:300 +msgid "Brute Force Prevention Firewall Settings" +msgstr "Configurações de firewall de prevenção de força bruta" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:305 +msgid "A Brute Force Attack is when a hacker tries many combinations of usernames and passwords until they succeed in guessing the right combination." +msgstr "Um ataque de força bruta é quando um hacker tenta muitas combinações de nomes de usuário e senhas até que eles conseguem adivinhar a combinação certa." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:306 +msgid "Due to the fact that at any one time there may be many concurrent login attempts occurring on your site via malicious automated robots, this also has a negative impact on your server's memory and performance." +msgstr "Devido ao fato de que a qualquer momento, pode haver muitas tentativas de login simultâneas ocorrendo no seu site através de robôs automatizados maliciosos, este também tem um impacto negativo sobre a memória e o desempenho do seu servidor." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:307 +msgid "The features in this tab will stop the majority of Brute Force Login Attacks at the .htaccess level thus providing even better protection for your WP login page and also reducing the load on your server because the system does not have to run PHP code to process the login attempts." +msgstr "Os recursos neste guia irá parar a maioria dos ataques de login de força bruta em vigor no nível do .htaccess proporcionando assim uma maior proteção para a sua página de login do WP e também reduzindo a carga sobre o servidor porque o sistema não tem que executar código PHP para processar as tentativas de login." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:314 +#, php-format +msgid "Even though this feature should not have any impact on your site's general functionality you are strongly encouraged to take a %s of your .htaccess file before proceeding." +msgstr "Mesmo que esse recurso não deve ter nenhum impacto na funcionalidade geral do seu site você é fortemente encorajado a fazer um %s de seu arquivo .htaccess antes de prosseguir." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:315 +msgid "If this feature is not used correctly, you can get locked out of your site. A backed up .htaccess file will come in handy if that happens." +msgstr "Se esse recurso não for usado corretamente, você pode ficar trancado para fora de seu site. Um backup do arquivo .htaccess virá a calhar, se isso acontecer." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:316 +#, php-format +msgid "To learn more about how to use this feature please watch the following %s." +msgstr "Para obter mais informações sobre como usar esse recurso por favor ver o seguinte %s." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:329 +msgid "NOTE: If you already had the Rename Login Page feature active, the plugin has automatically deactivated it because only one of these features can be active at any one time." +msgstr "NOTA: Se você já teve o recurso de renomeação da página de login ativo, o plugin foi desativado automaticamente porque apenas um desses recursos pode estar ativo de cada vez." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:337 +msgid "Cookie Based Brute Force Login Prevention" +msgstr "Prevenção de acesso baseadas em cookies de força bruta" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:348 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:91 +msgid "Enable Brute Force Attack Prevention" +msgstr "Habilitar prevenção contra ataque de força bruta" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:351 +msgid "Check this if you want to protect your login page from Brute Force Attack." +msgstr "Marque esta opção se você deseja proteger sua página de login de ataque de força bruta." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:356 +msgid "This feature will deny access to your WordPress login page for all people except those who have a special cookie in their browser." +msgstr "Esse recurso irá negar o acesso à sua página de login do WordPress para todas as pessoas, exceto aqueles que têm um cookie especial em seu navegador." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:358 +msgid "To use this feature do the following:" +msgstr "Para usar este recurso faça o seguinte:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:360 +msgid "1) Enable the checkbox." +msgstr "1) Habilite a caixa de seleção." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:362 +msgid "2) Enter a secret word consisting of alphanumeric characters which will be difficult to guess. This secret word will be useful whenever you need to know the special URL which you will use to access the login page (see point below)." +msgstr "2) Digite uma palavra secreta, constituída por caracteres alfanuméricos, que será difícil de adivinhar. Esta palavra secreta será útil sempre que você precisa saber a URL especial que você usará para acessar a página de login (ver ponto abaixo)." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:364 +msgid "3) You will then be provided with a special login URL. You will need to use this URL to login to your WordPress site instead of the usual login URL. NOTE: The system will deposit a special cookie in your browser which will allow you access to the WordPress administration login page." +msgstr "3) Em seguida, será fornecido com uma URL de login especial. Você precisará usar esta URL para acessar o seu site WordPress em vez da URL de login habitual. NOTA: O sistema irá depositar um cookie especial em seu navegador, que lhe permitirá aceder à página de login de administração do WordPress." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:366 +msgid "Any person trying to access your login page who does not have the special cookie in their browser will be automatically blocked." +msgstr "Qualquer pessoa que tentar acessar a página de login que não tem o cookie especial em seu navegador será bloqueado automaticamente." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:373 +msgid "Secret Word" +msgstr "Palavra secreta" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:375 +msgid "Choose a secret word consisting of alphanumeric characters which you can use to access your special URL. Your are highly encouraged to choose a word which will be difficult to guess." +msgstr "Escolha uma palavra secreta composta de caracteres alfanuméricos, que você pode usar para acessar sua URL especial. Você estar altamente incentivados a escolher uma palavra que será difícil de adivinhar." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:379 +msgid "Re-direct URL" +msgstr "Redirecionar URL" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:383 +msgid "Specify a URL to redirect a hacker to when they try to access your WordPress login page." +msgstr "Especifique uma URL para redirecionar um hacker para quando eles tentam acessar a página de login do WordPress." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:390 +msgid "The URL specified here can be any site's URL and does not have to be your own. For example you can be as creative as you like and send hackers to the CIA or NSA home page." +msgstr "A URL especificada aqui pode ser URL de qualquer site e não tem que ser o seu próprio. Por exemplo, você pode ser tão criativo como você gosta e enviar os hackers para a página inicial da CIA ou NSA." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:392 +msgid "This field will default to: http://127.0.0.1 if you do not enter a value." +msgstr "Este campo será o padrão para: http://127.0.0.1 se você não digitar um valor." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:394 +msgid "Useful Tip:" +msgstr "Dica útil:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:396 +msgid "It's a good idea to not redirect attempted brute force login attempts to your site because it increases the load on your server." +msgstr "É uma boa ideia não redirecionar tentativas de login de tentativa de força bruta para seu site, porque aumenta a carga no seu servidor." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:398 +msgid "Redirecting a hacker or malicious bot back to \"http://127.0.0.1\" is ideal because it deflects them back to their own local host and puts the load on their server instead of yours." +msgstr "Redirecionando um hacker ou robô malicioso de volta para \"http://127.0.0.1\" é ideal, pois desvia-los de volta ao seu próprio host local e coloca a carga em seu servidor ao invés do seu." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:405 +msgid "My Site Has Posts Or Pages Which Are Password Protected" +msgstr "Meu site tem posts ou páginas que são protegidos por senha" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:408 +msgid "Check this if you are using the native WordPress password protection feature for some or all of your blog posts or pages." +msgstr "Marque esta opção se você estiver usando o recurso de proteção de senha nativo do WordPress para alguns ou todos os seus posts no blog ou páginas." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:413 +msgid "In the cases where you are protecting some of your posts or pages using the in-built WordPress password protection feature, a few extra lines of directives and exceptions need to be added to your .htacces file so that people trying to access pages are not automatically blocked." +msgstr "Nos casos em que você está protegendo alguns de seus posts ou páginas usando o recurso de proteção de senha do WordPress embutido, algumas linhas extras de diretivas e exceções precisam ser adicionados ao seu arquivo .htacces para que as pessoas que tentam acessar páginas não sejam automaticamente bloqueadas." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:415 +msgid "By enabling this checkbox the plugin will add the necessary rules and exceptions to your .htacces file so that people trying to access these pages are not automatically blocked." +msgstr "Habilitando esta opção o plugin irá adicionar as regras necessárias e exceções ao arquivo .htacces para que as pessoas que tentam acessar essas páginas não sejam automaticamente bloqueadas." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:417 +msgid "Helpful Tip:" +msgstr "Dica útil:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:419 +msgid "If you do not use the WordPress password protection feature for your posts or pages then it is highly recommended that you leave this checkbox disabled." +msgstr "Se você não usar o recurso de proteção de senha do WordPress para seus posts ou páginas, então é altamente recomendado que você deixe essa caixa de seleção desativada." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:426 +msgid "My Site Has a Theme or Plugins Which Use AJAX" +msgstr "Meu site tem um tema ou plugins que usam AJAX" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:429 +msgid "Check this if your site uses AJAX functionality." +msgstr "Marque esta opção se o seu site usa a funcionalidade AJAX." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:434 +msgid "In the cases where your WordPress installation has a theme or plugins which use AJAX, a few extra lines of directives and exceptions need to be added to your .htacces file to prevent AJAX requests from being automatically blocked by the brute force prevention feature." +msgstr "Nos casos em que a instalação do WordPress tem um tema ou plugins que usam AJAX, algumas linhas extras de diretivas e exceções precisam ser adicionados ao seu arquivo .htacces para impedir que solicitações de AJAX seja bloqueado automaticamente pelo recurso de prevenção de força bruta." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:436 +msgid "By enabling this checkbox the plugin will add the necessary rules and exceptions to your .htacces file so that AJAX operations will work as expected." +msgstr "Habilitando esta opção o plugin irá adicionar as regras necessárias e exceções ao arquivo .htacces para que operações de AJAX funcionará como esperado." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:451 +msgid "The cookie test was successful. You can now enable this feature." +msgstr "O teste de cookie foi bem sucedido. Agora, você pode ativar esse recurso." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:454 +msgid "Save Feature Settings" +msgstr "Salvar configurações de recurso" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:461 +msgid "The cookie test failed on this server. So this feature cannot be used on this site." +msgstr "O teste de cookie falhou neste servidor. Então, esse recurso não pode ser usado neste site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:466 +msgid "Before using this feature you are required to perform a cookie test first. This is to make sure that your browser cookie is working correctly and that you won't lock yourself out." +msgstr "Antes de utilizar este recurso você é obrigado a realizar um teste de cookie. Isso é para se certificar de que seu cookie de navegador está funcionando corretamente e que você não vai se tranca para fora." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:468 +msgid "Perform Cookie Test" +msgstr "Executar teste de cookies" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:508 +msgid "This feature allows you to add a captcha form on the WordPress login page." +msgstr "Esse recurso permite que você adicione um formulário captcha na página de login do WordPress." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:509 +msgid "Users who attempt to login will also need to enter the answer to a simple mathematical question - if they enter the wrong answer, the plugin will not allow them login even if they entered the correct username and password." +msgstr "Os usuários que tentam acessar também precisará digitar a resposta a uma simples questão de matemática - se digitar a resposta errada, o plugin não lhes permitirá entrar mesmo que entraram o correto nome de usuário e senha." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:510 +msgid "Therefore, adding a captcha form on the login page is another effective yet simple \"Brute Force\" prevention technique." +msgstr "Portanto, adicionando um formulário captcha na página de login é uma outra técnica de prevenção eficaz, ainda que simples \"força bruta\"." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:516 +msgid "Login Form Captcha Settings" +msgstr "Configurações do formulário captcha de login" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:527 +msgid "Enable Captcha On Login Page" +msgstr "Habilitar captcha na página de login" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:530 +msgid "Check this if you want to insert a captcha form on the login page" +msgstr "Marque esta opção se você deseja inserir um formulário captcha na página de login" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:536 +msgid "Custom Login Form Captcha Settings" +msgstr "Configurações personalizadas do formulário captcha de login" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:545 +msgid "Enable Captcha On Custom Login Form" +msgstr "Habilitar captcha no formulário de login personalizado" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:548 +msgid "Check this if you want to insert captcha on a custom login form generated by the following WP function: wp_login_form()" +msgstr "Marque esta opção se você deseja inserir o captcha em um formulário de login personalizado gerado pela seguinte função WP: wp_login_form()" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:554 +msgid "Lost Password Form Captcha Settings" +msgstr "Configurações do formulário captcha de senha perdida" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:564 +msgid "Enable Captcha On Lost Password Page" +msgstr "Habilitar captcha na página senha perdida" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:567 +msgid "Check this if you want to insert a captcha form on the lost password page" +msgstr "Marque esta opção se você deseja inserir um formulário captcha na página de senha perdida" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:589 +msgid "Nonce check failed for save whitelist settings!" +msgstr "Verificação núncio falhou para salvar configurações de lista branca!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:646 +msgid "The All In One WP Security Whitelist feature gives you the option of only allowing certain IP addresses or ranges to have access to your WordPress login page." +msgstr "O recurso de lista branca de All In One WP Security lhe dá a opção de permitir apenas determinados endereços IP ou intervalos para ter acesso à sua página de login do WordPress." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:647 +msgid "This feature will deny login access for all IP addresses which are not in your whitelist as configured in the settings below." +msgstr "Este recurso irá negar o acesso de login para todos os endereços IP que não estão em sua lista branca conforme configurado nas configurações abaixo." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:648 +msgid "The plugin achieves this by writing the appropriate directives to your .htaccess file." +msgstr "O plugin consegue isso por escrito as diretivas apropriadas para o seu arquivo .htaccess." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:649 +msgid "By allowing/blocking IP addresses via the .htaccess file your are using the most secure first line of defence because login access will only be granted to whitelisted IP addresses and other addresses will be blocked as soon as they try to access your login page." +msgstr "Ao permitir / bloquear endereços IP via arquivo .htaccess você está usando a primeira linha mais seguro de defesa porque o acesso de login será concedido somente a endereços IP autorizados na lista branca e outros endereços serão bloqueadas assim que eles tentam acessar a página de login." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:657 +#, php-format +msgid "Attention: If in addition to enabling the white list feature, you also have one of the %s or %s features enabled, you will still need to use your secret word or special slug in the URL when trying to access your WordPress login page." +msgstr "Atenção: Se além de habilitar o recurso de lista branca, você também tem um dos %s ou %s recursos habilitados, você ainda precisará usar sua palavra secreta ou lesma/apelido especial na URL quando você tentar acessar a página de login do WordPress." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:658 +msgid "These features are NOT functionally related. Having both of them enabled on your site means you are creating 2 layers of security." +msgstr "Esses recursos não estão funcionalmente relacionados. Tendo ambos habilitado em seu site significa que você está criando 2 camadas de segurança." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:663 +msgid "Login IP Whitelist Settings" +msgstr "Configurações de login de lista branca IP" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:674 +msgid "Enable IP Whitelisting" +msgstr "Habilitar lista branca de IP" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:677 +msgid "Check this if you want to enable the whitelisting of selected IP addresses specified in the settings below" +msgstr "Marque esta opção se você deseja ativar o lista branca de endereços IP selecionados especificados nas configurações abaixo" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:681 +msgid "Your Current IP Address" +msgstr "Seu endereço IP atual" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:684 +msgid "You can copy and paste this address in the text box below if you want to include it in your login whitelist." +msgstr "Você pode copiar e colar esse endereço na caixa de texto abaixo, se você deseja incluí-lo em sua lista branca de login." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:688 +msgid "Enter Whitelisted IP Addresses:" +msgstr "Digite endereços IP na lista branca:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:692 +msgid "Enter one or more IP addresses or IP ranges you wish to include in your whitelist. Only the addresses specified here will have access to the WordPress login page." +msgstr "Digite um ou mais endereços IP ou intervalos de IP que você deseja incluir em sua lista branca. Apenas os endereços especificados aqui terá acesso à página de login do WordPress." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:697 +msgid "To specify an IPv4 range use a wildcard \"*\" character. Acceptable ways to use wildcards is shown in the examples below:" +msgstr "Para especificar um endereço IPv4 escala usar um caractere curinga \"*\". Maneiras aceitáveis para usar caracteres curinga é mostrada nos exemplos abaixo:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:701 +msgid "Or you can enter an IPv6 address (NOTE: ranges/wildcards are currently not supported for ipv6)" +msgstr "Ou você pode digitar um endereço IPv6 (Nota: atualmente intervalos/curingas não são suportados para ipv6)" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:702 +msgid "Example 4: 4102:0:3ea6:79fd:b:46f8:230f:bb05" +msgstr "Exemplo 4: 4102:0:3ea6:79fd:b:46f8:230f:bb05" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:703 +msgid "Example 5: 2205:0:1ca2:810d::" +msgstr "Exemplo 5: 2205:0:1ca2:810d::" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:743 +msgid "This feature allows you to add a special hidden \"honeypot\" field on the WordPress login page. This will only be visible to robots and not humans." +msgstr "Esse recurso permite que você adicione um campo oculto especial \"pote de mel\" na página de login do WordPress. Isso só será visível para os robôs e não seres humanos." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:744 +msgid "Since robots usually fill in every input field from a login form, they will also submit a value for the special hidden honeypot field." +msgstr "Desde que os robôs geralmente preencher cada campo de entrada de um formulário de login, eles também apresentará um valor para o campo de pote de mel oculto especial." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:745 +msgid "The way honeypots work is that a hidden field is placed somewhere inside a form which only robots will submit. If that field contains a value when the form is submitted then a robot has most likely submitted the form and it is consequently dealt with." +msgstr "A maneira de trabalho de potes de mel é que um campo oculto é colocado em algum lugar dentro de uma forma que apenas os robôs irão apresentar. Se esse campo contém um valor quando o formulário é enviado, em seguida, um robô muito provavelmente apresentou a forma e isso consequentemente é tratado com." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:746 +msgid "Therefore, if the plugin detects that this field has a value when the login form is submitted, then the robot which is attempting to login to your site will be redirected to its localhost address - http://127.0.0.1." +msgstr "Portanto, se o plugin detecta que este campo tem um valor quando o formulário de login é enviado, então o robô que está tentando fazer o login para o seu site será redirecionado para seu endereço localhost - http://127.0.0.1." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:752 +msgid "Login Form Honeypot Settings" +msgstr "Configurações do formulário de login pote de mel" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:763 +msgid "Enable Honeypot On Login Page" +msgstr "Habilitar pote de mel na página de login" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-brute-force-menu.php:766 +msgid "Check this if you want to enable the honeypot feature for the login page" +msgstr "Marque esta opção se você deseja ativar o recurso pote de mel para a página de login" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:26 +msgid "System Info" +msgstr "Informações do sistema" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:27 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:518 +msgid "Locked IP Addresses" +msgstr "Endereços IP bloqueados" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:28 +msgid "Permanent Block List" +msgstr "Lista de bloqueio permanente" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:29 +msgid "AIOWPS Logs" +msgstr "Registros de AIOWPS" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:79 +msgid "For information, updates and documentation, please visit the" +msgstr "Para informações, atualizações e documentação, por favor visite o" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:79 +msgid "AIO WP Security & Firewall Plugin" +msgstr "AIO WP Segurança e Plugin de Firewall" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:79 +msgid "Page" +msgstr "Página" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:80 +msgid "Follow us" +msgstr "Siga-nos" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:80 +msgid "Twitter, Google+ or via Email to stay up to date about the new security features of this plugin." +msgstr "Twitter, Google+ ou via E-mail para ficar atualizado sobre os novos recursos de segurança deste plugin." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:97 +msgid "Security Strength Meter" +msgstr "Medidor de força de segurança" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:128 +msgid "Total Achievable Points: " +msgstr "Total de pontos alcançáveis: " + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:130 +msgid "Current Score of Your Site: " +msgstr "Avaliação atual do seu site: " + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:143 +msgid "Security Points Breakdown" +msgstr "Segurança aponta esgotamento" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:187 +msgid "Spread the Word" +msgstr "Estenda a palavra" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:192 +msgid "We are working hard to make your WordPress site more secure. Please support us, here is how:" +msgstr "Estamos trabalhando duro para tornar seu site WordPress mais seguro. Por favor, apoiem-nos, aqui está como:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:217 +msgid "Get To Know The Developers" +msgstr "Conheça os desenvolvedores" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:221 +msgid "Wanna know more about the developers behind this plugin?" +msgstr "Quer saber mais sobre os desenvolvedores por trás deste plugin?" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:238 +msgid "Critical Feature Status" +msgstr "Status de característica crítica" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:244 +msgid "Below is the current status of the critical features that you should activate on your site to achieve a minimum level of recommended security" +msgstr "Abaixo está o estado atual dos recursos críticos que você deve ativar em seu site para atingir um nível mínimo de segurança recomendado" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:248 +msgid "Admin Username" +msgstr "Nome de usuário admin" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:263 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:25 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:42 +msgid "Login Lockdown" +msgstr "Bloqueio de login" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:278 +msgid "File Permission" +msgstr "Permissão de arquivo" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:293 +msgid "Basic Firewall" +msgstr "Firewall básico" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:314 +msgid "Last 5 Logins" +msgstr "Últimos 5 logins" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:332 +msgid "No data found!" +msgstr "Nenhum dado encontrado!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:336 +msgid "Last 5 logins summary:" +msgstr "Últimos 5 logins resumidos:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:340 +msgid "User" +msgstr "Usuário" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:341 +msgid "Date" +msgstr "Data" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:342 +msgid "IP" +msgstr "IP" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:366 +msgid "Maintenance Mode Status" +msgstr "Status do modo de manutenção" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:372 +msgid "Maintenance mode is currently enabled. Remember to turn it off when you are done" +msgstr "Modo de manutenção está habilitado no momento. Lembre-se de desabilita-lo quando você terminar" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:374 +msgid "Maintenance mode is currently off." +msgstr "Modo de manutenção atualmente está desligado." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:378 +msgid "Maintenance Mode" +msgstr "Modo de manutenção" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:403 +msgid "Cookie Based Brute Prevention" +msgstr "Prevenção com base bruta em cookies" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:408 +msgid "Cookie-Based Brute Force" +msgstr "Força bruta baseada em cookie" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:412 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:444 +#, php-format +msgid "The %s feature is currently active." +msgstr "O recurso %s está atualmente ativo." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:413 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:445 +msgid "Your new WordPress login URL is now:" +msgstr "Sua nova URL de login WordPress agora é:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:478 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:29 +msgid "Logged In Users" +msgstr "Usuários conectados" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:488 +msgid "Number of users currently logged in site-wide is:" +msgstr "Número de usuários atualmente conectados em todo o site é:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:489 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:503 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:531 +#, php-format +msgid "Go to the %s menu to see more details" +msgstr "Vá para o %s menu para ver mais detalhes" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:492 +msgid "There are no other site-wide users currently logged in." +msgstr "Não há nenhum outro usuário por todo o sítio atualmente conectado." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:502 +msgid "Number of users currently logged into your site (including you) is:" +msgstr "Número de usuários atualmente conectados a seu site (incluindo você) é:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:506 +msgid "There are no other users currently logged in." +msgstr "Não há nenhum outros usuários atualmente conectado." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:527 +msgid "There are no IP addresses currently locked out." +msgstr "Não há nenhum endereço IP atualmente bloqueado." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:530 +msgid "Number of temporarily locked out IP addresses: " +msgstr "Número de endereços IP temporariamente bloqueado: " + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:576 +msgid "Site Info" +msgstr "Informações do site" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:580 +msgid "Plugin Version" +msgstr "Versão do plugin" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:582 +msgid "WP Version" +msgstr "Versão WP" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:585 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:589 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:707 +msgid "Version" +msgstr "Versão" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:587 +msgid "Table Prefix" +msgstr "Prefixo de tabela" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:591 +msgid "Session Save Path" +msgstr "Sessão salvar caminho" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:594 +msgid "Server Name" +msgstr "Nome do servidor" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:596 +msgid "Cookie Domain" +msgstr "Domínio do cookie" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:599 +msgid "Library Present" +msgstr "Biblioteca presente" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:601 +msgid "Debug File Write Permissions" +msgstr "Depurar arquivo permissões de gravação" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:607 +msgid "PHP Info" +msgstr "Informações PHP" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:611 +msgid "PHP Version" +msgstr "Versão PHP" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:613 +msgid "PHP Memory Usage" +msgstr "Uso de memória" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:614 +msgid " MB" +msgstr " MB" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:620 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:629 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:638 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:685 +msgid "N/A" +msgstr "N/A" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:623 +msgid "PHP Memory Limit" +msgstr "Limite de memória" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:632 +msgid "PHP Max Upload Size" +msgstr "Tamanho máximo para carregar" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:641 +msgid "PHP Max Post Size" +msgstr "Tamanho máximo do post" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:645 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:654 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:664 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:673 +msgid "On" +msgstr "Ligado" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:647 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:656 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:666 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:675 +msgid "Off" +msgstr "Desligado" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:650 +msgid "PHP Safe Mode" +msgstr "Modo de segurança" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:659 +msgid "PHP Allow URL fopen" +msgstr "Permitir URL fopen" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:669 +msgid "PHP Allow URL Include" +msgstr "Permitir URL incluir" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:678 +msgid "PHP Display Errors" +msgstr "Erros de exibição" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:688 +msgid "PHP Max Script Execution Time" +msgstr "Tempo máximo de execução de script" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:689 +msgid "Seconds" +msgstr "Segundos" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:695 +msgid "Active Plugins" +msgstr "Plugins ativos" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:706 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:131 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:150 +msgid "Name" +msgstr "Nome" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:708 +msgid "Plugin URL" +msgstr "URL do plugin" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:746 +msgid "This tab displays the list of all IP addresses which are currently temporarily locked out due to the Login Lockdown feature:" +msgstr "Esta guia exibe a lista de todos os endereços IP que estão atualmente bloqueados temporariamente fora devido ao recurso de bloqueio de login:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:753 +msgid "Currently Locked Out IP Addresses and Ranges" +msgstr "Endereços IP e intervalos atualmente bloqueado" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:796 +msgid "This tab displays the list of all permanently blocked IP addresses." +msgstr "Esta guia exibe a lista de todos os endereços IP bloqueados permanentemente." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:797 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:291 +msgid "NOTE: This feature does NOT use the .htaccess file to permanently block the IP addresses so it should be compatible with all web servers running WordPress." +msgstr "Nota: Esse recurso não usa o arquivo .htaccess para bloquear permanentemente os endereços IP, por isso deve ser compatível com todos os servidores web executando o WordPress." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:803 +msgid "Permanently Blocked IP Addresses" +msgstr "Endereços IP bloqueados permanentemente" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:836 +msgid "View Logs for All In WP Security & Firewall Plugin" +msgstr "Exibir logs para Plugin All In WP Security & Firewall" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:844 +msgid "Log File" +msgstr "Arquivo de log" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:848 +msgid "--Select a file--" +msgstr "--Selecione um arquivo--" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:859 +msgid "Select one of the log files to view the contents" +msgstr "Selecione um dos arquivos de log para exibir os conteúdos" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:864 +msgid "View Logs" +msgstr "Exibir logs" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:884 +msgid "Log File Contents For" +msgstr "Conteúdo do arquivo de log para" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-dashboard-menu.php:898 +msgid "Log file is empty!" +msgstr "Arquivo de log está vazio!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:26 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:31 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:63 +msgid "DB Backup" +msgstr "Backup do BD" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:30 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:61 +msgid "DB Prefix" +msgstr "Prefixo de BD" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:94 +msgid "Nonce check failed for DB prefix change operation!" +msgstr "Verificação núncio falhou para operação de alteração de prefixo do banco de dados!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:102 +msgid "The plugin has detected that it cannot write to the wp-config.php file. This feature can only be used if the plugin can successfully write to the wp-config.php file." +msgstr "O plugin detectou que não é possível gravar o arquivo wp-config.php. Este recurso só pode ser usado se o plugin com sucesso pode gravar o arquivo wp-config.php." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:115 +msgid "Please enter a value for the DB prefix." +msgstr "Por favor, insira um valor para o prefixo do banco de dados." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:124 +msgid "ERROR: The table prefix can only contain numbers, letters, and underscores." +msgstr "ERRO: O prefixo da tabela pode conter apenas números, letras e sublinhados." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:132 +msgid "Change Database Prefix" +msgstr "Alterar prefixo do banco de dados" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:135 +msgid "Your WordPress DB is the most important asset of your website because it contains a lot of your site's precious information." +msgstr "Seu banco de dados WordPress é o ativo mais importante de seu site, porque ele contém muitas informações preciosas do seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:136 +msgid "The DB is also a target for hackers via methods such as SQL injections and malicious and automated code which targets certain tables." +msgstr "O banco de dados também é um alvo para hackers através de métodos tais como injeções de SQL e código malicioso e automatizado que tem como alvo determinadas tabelas." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:137 +msgid "One way to add a layer of protection for your DB is to change the default WordPress table prefix from \"wp_\" to something else which will be difficult for hackers to guess." +msgstr "Uma maneira de adicionar uma camada de proteção para seu Banco de Dados é alterar o prefixo da tabela padrão WordPress \"wp_\" para outra coisa que será difícil para os hackers de adivinhar." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:138 +msgid "This feature allows you to easily change the prefix to a value of your choice or to a random value set by this plugin." +msgstr "Esse recurso permite que você altere facilmente o prefixo para um valor de sua escolha ou para um valor aleatório definido por este plugin." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:144 +msgid "DB Prefix Options" +msgstr "Opções de prefixo do banco de dados" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:155 +#, php-format +msgid "It is recommended that you perform a %s before using this feature" +msgstr "É recomendável que você execute um %s antes de usar este recurso" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:164 +msgid "Current DB Table Prefix" +msgstr "Atual prefixo da tabela BD" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:170 +msgid "" +"Your site is currently using the default WordPress DB prefix value of \"wp_\". \n" +" To increase your site's security you should consider changing the DB prefix value to another value." +msgstr "" +"Seu site está usando o valor de prefixo padrão do banco de dados WordPress \"wp_\". \n" +" Para aumentar a segurança do seu site, você deve considerar mudar o valor de prefixo do banco de dados para outro valor." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:177 +msgid "Generate New DB Table Prefix" +msgstr "Gerar novo prefixo da tabela BD" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:180 +msgid "Check this if you want the plugin to generate a random 6 character string for the table prefix" +msgstr "Marque esta opção se você deseja que o plugin para gerar uma sequência de 6 caracteres aleatórios para o prefixo da tabela" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:181 +msgid "OR" +msgstr "OU" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:183 +msgid "Choose your own DB prefix by specifying a string which contains letters and/or numbers and/or underscores. Example: xyz_" +msgstr "Escolha o seu próprio prefixo do banco de dados especificando uma sequência de caracteres que contém letras, números ou sublinhados. Exemplo: xyz_" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:187 +msgid "Change DB Prefix" +msgstr "Alterar prefixo do banco de dados" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:208 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:87 +msgid "Nonce check failed for manual DB backup operation!" +msgstr "Verificação núncio falhou para operação de backup manual do banco de dados!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:225 +msgid "DB Backup was successfully completed! You will receive the backup file via email if you have enabled \"Send Backup File Via Email\", otherwise you can retrieve it via FTP from the following directory:" +msgstr "Backup do banco de dados foi concluído com sucesso! Você receberá o arquivo de backup via e-mail se tiver ativado \"Enviar arquivo de backup via e-mail\", caso contrário, você pode recuperá-lo via FTP no seguinte diretório:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:227 +msgid "Your DB Backup File location: " +msgstr "Seu local do arquivo de backup do BD:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:234 +msgid "DB Backup failed. Please check the permissions of the backup directory." +msgstr "Backup do banco de dados falhou. Por favor, verifique as permissões do diretório de backup." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:251 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:135 +msgid "You entered a non numeric value for the \"backup time interval\" field. It has been set to the default value." +msgstr "Você digitou um valor não numérico para o campo \"intervalo de tempo de backup\". Foi definido como o valor padrão." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:258 +msgid "You entered a non numeric value for the \"number of backup files to keep\" field. It has been set to the default value." +msgstr "Você digitou um valor não numérico para no campo \"número de arquivos de backup para manter\". Foi definido como o valor padrão." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:265 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:118 +msgid "You have entered an incorrect email address format. It has been set to your WordPress admin email as default." +msgstr "Você digitou um formato de endereço de e-mail incorreto. Foi definido para seu e-mail de administração do WordPress como padrão." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:298 +msgid "Manual Backup" +msgstr "Backup manual" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:303 +msgid "To create a new DB backup just click on the button below." +msgstr "Para criar um novo backup do banco de dados basta clicar no botão abaixo." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:305 +msgid "Create DB Backup Now" +msgstr "Criar backup do banco de dados agora " + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:309 +msgid "Automated Scheduled Backups" +msgstr "Backups agendados automatizados" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:321 +msgid "Enable Automated Scheduled Backups" +msgstr "Permitir agendar backups automáticos" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:324 +msgid "Check this if you want the system to automatically generate backups periodically based on the settings below" +msgstr "Marque esta opção se você deseja que o sistema gere automaticamente backups periodicamente, com base nas configurações abaixo" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:328 +msgid "Backup Time Interval" +msgstr "Intervalo de tempo de backup" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:331 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:288 +msgid "Hours" +msgstr "Horas" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:332 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:289 +msgid "Days" +msgstr "Dias" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:333 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:290 +msgid "Weeks" +msgstr "Semanas" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:335 +msgid "Set the value for how often you would like an automated backup to occur" +msgstr "Defina o valor para quantas vezes você gostaria de um backup automatizado para ocorrer" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:339 +msgid "Number of Backup Files To Keep" +msgstr "Número de arquivos de backup para manter" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:341 +msgid "Thie field allows you to choose the number of backup files you would like to keep in the backup directory" +msgstr "O campo permite que você escolha o número de arquivos de backup que você gostaria de manter no diretório de backup" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:345 +msgid "Send Backup File Via Email" +msgstr "Enviar arquivo de backup via e-mail" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:348 +msgid "Check this if you want the system to email you the backup file after a DB backup has been performed" +msgstr "Marque esta opção se você desejar que o sistema envie para e-mail o arquivo de backup após um backup do banco de dados for realizado" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:350 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:235 +msgid "Enter an email address" +msgstr "Digite um endereço de e-mail" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:381 +msgid "Error - Could not get tables or no tables found!" +msgstr "Erro - Não foi possível obter tabelas ou sem tabelas encontradas!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:385 +msgid "Starting DB prefix change operations....." +msgstr "Iniciando operações de alteração do prefixo do banco de dados....." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:387 +#, php-format +msgid "Your WordPress system has a total of %s tables and your new DB prefix will be: %s" +msgstr "Seu sistema WordPress tem um total de %s tabelas e seu novo prefixo DB será: %s" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:393 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-utility.php:227 +msgid "Failed to make a backup of the wp-config.php file. This operation will not go ahead." +msgstr "Falha ao fazer um backup do arquivo wp-config.php. Esta operação não irá em frente." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:397 +msgid "A backup copy of your wp-config.php file was created successfully!" +msgstr "Uma cópia de backup de seu arquivo wp-config.php foi criada com sucesso!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:424 +#, php-format +msgid "%s table name update failed" +msgstr "Falha na atualização do nome da tabela %s" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:436 +#, php-format +msgid "Please change the prefix manually for the above tables to: %s" +msgstr "Por favor, altere o prefixo manualmente para as tabelas acima para: %s" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:439 +#, php-format +msgid "%s tables had their prefix updated successfully!" +msgstr "O prefixo da tabela %s foi atualizado com sucesso!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:455 +msgid "wp-config.php file was updated successfully!" +msgstr "O arquivo wp-config.php foi atualizado com sucesso!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:458 +#, php-format +msgid "" +"The \"wp-config.php\" file was not able to be modified. Please modify this file manually using your favourite editor and search \n" +" for variable \"$table_prefix\" and assign the following value to that variable: %s" +msgstr "" +"O arquivo \"wp-config.php\" não foi capaz de ser modificado. Por favor, modifique este arquivo manualmente usando seu editor favorito e procurar \n" +" a variável \"$table_prefix\" e atribuir o seguinte valor para essa variável: %s" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:471 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:491 +#, php-format +msgid "Update of table %s failed: unable to change %s to %s" +msgstr "Falha na atualização da tabela de %s: Não é possível alterar %s para %s" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:475 +msgid "The options table records which had references to the old DB prefix were updated successfully!" +msgstr "Os registros da tabela de opções que tinham referências ao antigo prefixo DB foram atualizados com sucesso!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:495 +#, php-format +msgid "The %s table records which had references to the old DB prefix were updated successfully!" +msgstr "Os registros da tabela %s que tinham referências ao antigo prefixo DB foram atualizados com sucesso!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:524 +#, php-format +msgid "Error updating user_meta table where new meta_key = %s, old meta_key = %s and user_id = %s." +msgstr "Erro ao atualizar a tabela de user_meta onde novo meta_key = %s, velho meta_key = %s e user_id = %s." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:529 +msgid "The usermeta table records which had references to the old DB prefix were updated successfully!" +msgstr "Os registros da tabela usermeta que tinham referências ao antigo prefixo DB foram atualizados com sucesso!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-database-menu.php:531 +msgid "DB prefix change tasks have been completed." +msgstr "As tarefas de mudança de prefixo do banco de dados foram concluídas." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:24 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:108 +msgid "File Change Detection" +msgstr "Detecção de alteração de arquivo" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:25 +msgid "Malware Scan" +msgstr "Examinar malware" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:26 +msgid "DB Scan" +msgstr "Examinar banco de dados" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:95 +msgid "There have been no file changes since the last scan." +msgstr "Não houve nenhuma alteração de arquivo desde a última verificação." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:105 +msgid "Nonce check failed for manual file change detection scan operation!" +msgstr "Verificação núncio falhou para operação de verificação de detecção de alteração de arquivo manual!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:112 +msgid "The plugin has detected that this is your first file change detection scan. The file details from this scan will be used to detect file changes for future scans!" +msgstr "O plugin detectou que este é a sua primeira verificação de detecção de alteração de arquivo. Os detalhes do arquivo desta verificação serão usados para detectar alterações de arquivo para futuras verificações!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:114 +msgid "Scan Complete - There were no file changes detected!" +msgstr "Verificação completa - não houve nenhuma alteração de arquivo detectado!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:210 +msgid "" +"NEW SCAN COMPLETED: The plugin has detected that you have made changes to the \"File Types To Ignore\" or \"Files To Ignore\" fields.\n" +" In order to ensure that future scan results are accurate, the old scan data has been refreshed." +msgstr "" +"NOVA VERIFICAÇÃO CONCLUÍDA: O plugin detectou que você fez alterações para os campos \"Tipos de arquivo para ignorar\" ou \"Arquivos para ignorar\".\n" +" Para assegurar que os resultados da verificação futura são exatos, os dados antigos de verificação foram atualizados." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:220 +msgid "All In One WP Security & Firewall has detected that there was a change in your host's files." +msgstr "All In One WP Security e Firewall detectou que houve uma mudança nos arquivos do seu hospedeiro." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:222 +msgid "View Scan Details & Clear This Message" +msgstr "Veja os detalhes da verificação e apague esta mensagem" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:231 +msgid "If given an opportunity hackers can insert their code or files into your system which they can then use to carry out malicious acts on your site." +msgstr "Se lhe for dada uma oportunidade os hackers podem inserir o seu código ou arquivos em seu sistema que eles podem usar para realizar atos maliciosos em seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:232 +msgid "Being informed of any changes in your files can be a good way to quickly prevent a hacker from causing damage to your website." +msgstr "Sendo informado de quaisquer alterações em seus arquivos pode ser uma boa maneira de evitar rapidamente um hacker de causar danos ao seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:233 +msgid "In general, WordPress core and plugin files and file types such as \".php\" or \".js\" should not change often and when they do, it is important that you are made aware when a change occurs and which file was affected." +msgstr "Em geral, arquivos de núcleo e plugin do WordPress e tipos de arquivo como \".php\" ou \".js\" não devem mudar frequentemente e quando o fazem, é importante que você esteja ciente quando uma alteração ocorre e qual arquivo foi afetado." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:234 +msgid "The \"File Change Detection Feature\" will notify you of any file change which occurs on your system, including the addition and deletion of files by performing a regular automated or manual scan of your system's files." +msgstr "O \"recurso de detecção de alteração de arquivo\" irá notificá-lo de qualquer alteração de arquivo que ocorre em seu sistema, incluindo a adição e exclusão de arquivos através da realização de uma verificação regular, automatizado ou manual de arquivos do seu sistema." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:235 +msgid "This feature also allows you to exclude certain files or folders from the scan in cases where you know that they change often as part of their normal operation. (For example log files and certain caching plugin files may change often and hence you may choose to exclude such files from the file change detection scan)" +msgstr "Este recurso também permite excluir determinados arquivos ou pastas da verificação nos casos em que você sabe que eles mudam frequentemente como parte de sua operação normal. (Por exemplo arquivos de log e determinados arquivos de plugin de cache podem mudar muitas vezes e, portanto, você pode optar por excluir esses arquivos da verificação de detecção de alteração de arquivo)" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:240 +msgid "Manual File Change Detection Scan" +msgstr "Verificação de detecção de alteração manual de arquivo" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:246 +msgid "To perform a manual file change detection scan click on the button below." +msgstr "Para realizar uma verificação de detecção de alteração manual de arquivo clique no botão abaixo." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:249 +msgid "Perform Scan Now" +msgstr "Efetuar uma verificação agora" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:253 +msgid "View Last Saved File Change Results" +msgstr "Exibir últimos resultados salvos de alteração de arquivo" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:259 +msgid "Click the button below to view the saved file change results from the last scan." +msgstr "Clique no botão abaixo para visualizar os resultados de alteração de arquivos salvos da última verificação." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:262 +msgid "View Last File Change" +msgstr "Visualizar últimas alterações de arquivo" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:266 +msgid "File Change Detection Settings" +msgstr "Configuração de detecção de alteração de arquivo" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:278 +msgid "Enable Automated File Change Detection Scan" +msgstr "Habilitar a verificação de detecção automatizada de alteração de arquivos" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:281 +msgid "Check this if you want the system to automatically/periodically scan your files to check for file changes based on the settings below" +msgstr "Marque isso, se você deseja que o sistema automaticamente/periodicamente digitalizar seus arquivos para verificar se há alterações de arquivo com base nas configurações abaixo" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:285 +msgid "Scan Time Interval" +msgstr "Intervalo de tempo para verificação" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:292 +msgid "Set the value for how often you would like a scan to occur" +msgstr "Defina o valor para quantas vezes você gostaria de ter uma verificação para ocorrer" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:296 +msgid "File Types To Ignore" +msgstr "Tipos de arquivo para ignorar" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:299 +msgid "Enter each file type or extension on a new line which you wish to exclude from the file change detection scan." +msgstr "Digite cada tipo de arquivo ou extensão em uma nova linha que você deseja excluir da análise de detecção de alteração de arquivo." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:303 +msgid "You can exclude file types from the scan which would not normally pose any security threat if they were changed. These can include things such as image files." +msgstr "Você pode excluir tipos de arquivo da verificação que normalmente não representa qualquer ameaça de segurança se eles foram alterados. Estes podem incluir coisas tais como arquivos de imagem." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:304 +msgid "Example: If you want the scanner to ignore files of type jpg, png, and bmp, then you would enter the following:" +msgstr "Exemplo: Se você deseja que a verificação ignore arquivos do tipo jpg, png e bmp, em seguida, você deve digitar o seguinte:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:305 +msgid "jpg" +msgstr "jpg" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:306 +msgid "png" +msgstr "png" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:307 +msgid "bmp" +msgstr "bmp" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:313 +msgid "Files/Directories To Ignore" +msgstr "Arquivos/Diretórios para ignorar" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:316 +msgid "Enter each file or directory on a new line which you wish to exclude from the file change detection scan." +msgstr "Digite cada arquivo ou diretório em uma nova linha que você deseja excluir da análise de detecção de alteração de arquivo." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:320 +msgid "You can exclude specific files/directories from the scan which would not normally pose any security threat if they were changed. These can include things such as log files." +msgstr "Você pode excluir arquivos/diretórios específicos da verificação que normalmente não representem qualquer ameaça à segurança se eles foram alterados. Estes podem incluir coisas tais como arquivos de log." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:321 +msgid "Example: If you want the scanner to ignore certain files in different directories or whole directories, then you would enter the following:" +msgstr "Exemplo: Se você deseja que a verificação ignore determinados arquivos em diferentes pastas ou diretórios inteiros, então você deve digitar o seguinte:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:322 +msgid "cache/config/master.php" +msgstr "cache/config/master.php" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:323 +msgid "somedirectory" +msgstr "somedirectory" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:329 +msgid "Send Email When Change Detected" +msgstr "Enviar e-mail quando detectada alteração" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:332 +msgid "Check this if you want the system to email you if a file change was detected" +msgstr "Marque esta opção se você deseja que o sistema envie um e-mail, se foi detectada uma alteração no arquivo" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:336 +msgid "Enter one or more email addresses on a new line." +msgstr "Digite um ou mais endereços de e-mail em uma nova linha." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:352 +msgid "What is Malware?" +msgstr "O que é Malware?" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:353 +msgid "The word Malware stands for Malicious Software. It can consist of things like trojan horses, adware, worms, spyware and any other undesirable code which a hacker will try to inject into your website." +msgstr "A palavra Malware significa software malicioso. Ele pode consistir de coisas como cavalos de tróia, adware, worms, spyware e qualquer outro código indesejável que um hacker irá tentar injetar em seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:354 +msgid "Often when malware code has been inserted into your site you will normally not notice anything out of the ordinary based on appearances, but it can have a dramatic effect on your site's search ranking." +msgstr "Muitas vezes, quando código de malware foi inserido em seu site você normalmente não vai notar nada fora do comum, com base em aparências, mas pode ter um efeito dramático no ranking de busca do seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:355 +msgid "This is because the bots and spiders from search engines such as Google have the capability to detect malware when they are indexing the pages on your site, and consequently they can blacklist your website which will in turn affect your search rankings." +msgstr "Isso ocorre porque os robôs e aranhas dos motores de busca como o Google tem a capacidade de detectar malware quando eles estão indexando as páginas do seu site, e, consequentemente, pode barrar seu site, que por sua vez irá afetar seus rankings de busca." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:359 +msgid "Scanning For Malware" +msgstr "Verificação de Malware" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:360 +msgid "Due to the constantly changing and complex nature of Malware, scanning for such things using a standalone plugin will not work reliably. This is something best done via an external scan of your site regularly." +msgstr "Devido à natureza de constante mudança e complexo de Malware, verificação para tais coisas usando um plugin autônomo não vai funcionar de forma confiável. Isso é algo melhor feito através de uma verificação externa de seu site regularmente." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:361 +msgid "This is why we have created an easy-to-use scanning service which is hosted off our own server which will scan your site for malware once every day and notify you if it finds anything." +msgstr "É por isso que criamos um serviço de verificação de fácil utilização que está hospedado fora de nosso próprio servidor, que irá analisar o seu site em busca de malware, uma vez por dia e notificá-lo se ele encontrar qualquer coisa." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:362 +msgid "When you sign up for this service you will get the following:" +msgstr "Quando você se inscrever para este serviço, você receberá o seguinte:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:364 +msgid "Automatic Daily Scan of 1 Website" +msgstr "Verificação automática diária de 1 site" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:365 +msgid "Automatic Malware & Blacklist Monitoring" +msgstr "Monitoramento de lista negra e malware automático" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:366 +msgid "Automatic Email Alerting" +msgstr "Alerta automático por e-mail" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:367 +msgid "Site uptime monitoring" +msgstr "Monitoramento do tempo de atividade do site" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:368 +msgid "Site response time monitoring" +msgstr "Monitoramento do tempo de resposta do site" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:369 +msgid "Malware Cleanup" +msgstr "Limpeza de malware" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:370 +msgid "Blacklist Removal" +msgstr "Remoção da lista negra" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:371 +msgid "No Contract (Cancel Anytime)" +msgstr "Não há contrato (cancelar a qualquer momento)" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:373 +#, php-format +msgid "To learn more please %s." +msgstr "Para saber mais, por favor %s." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:383 +msgid "This feature performs a basic database scan which will look for any common suspicious-looking strings and javascript and html code in some of the Wordpress core tables." +msgstr "Esse recurso executa uma verificação de banco de dados básico que irá procurar qualquer sequências de caracteres comuns de aparência suspeita, código javascript e html em algumas das tabelas de núcleo do Wordpress." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:400 +msgid "Nonce check failed for manual db scan operation!" +msgstr "Verificação núncio falhou para operação de verificação manual do banco de dados!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:411 +msgid "This feature will perform a basic database scan which will look for any common suspicious-looking strings and javascript and html code in some of the Wordpress core tables." +msgstr "Esta característica irá executar uma verificação de banco de dados básico que irá procurar qualquer sequências de caracteres comuns de aparência suspeita, código javascript e html em algumas das tabelas de núcleo do Wordpress." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:412 +msgid "If the scan finds anything it will list all \"potentially\" malicious results but it is up to you to verify whether a result is a genuine example of a hacking attack or a false positive." +msgstr "Se a verificação encontrar qualquer coisa, irá listar todos os resultados maliciosos \"potencialmente\", mas é até você para verificar se o resultado é um verdadeiro exemplo de um ataque de hacker ou um falso positivo." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:413 +msgid "As well as scanning for generic strings commonly used in malicious cases, this feature will also scan for some of the known \"pharma\" hack entries and if it finds any it will automatically delete them." +msgstr "Assim como a verificação de sequências de caracteres genéricos comumente usados em casos de maliciosos, esse recurso também procura algumas das entradas \"pharma\" conhecidas de hack e se encontrar qualquer irá excluí-los automaticamente." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:414 +msgid "The WordPress core tables scanned by this feature include: posts, postmeta, comments, links, users, usermeta, and options tables." +msgstr "As tabelas de núcleo do WordPress digitalizadas por esse recurso incluem: posts, postmeta, comentários, links, usuários, usermeta e opções de tabelas." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:419 +msgid "Database Scan" +msgstr "Examinar banco de dados" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:425 +msgid "To perform a database scan click on the button below." +msgstr "Para executar uma verificação de banco de dados, clique no botão abaixo." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:428 +msgid "Perform DB Scan" +msgstr "Realizar verificação DB" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:461 +msgid "Latest File Change Scan Results" +msgstr "Últimos resultados de verificação de alteração de arquivo" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:470 +msgid "The following files were added to your host." +msgstr "Os seguintes arquivos foram adicionados para o seu host." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:473 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:494 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:518 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:27 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:28 +msgid "File" +msgstr "Arquivo" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:474 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:495 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:519 +msgid "File Size" +msgstr "Tamanho do arquivo" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:475 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:496 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:520 +msgid "File Modified" +msgstr "Arquivo modificado" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:491 +msgid "The following files were removed from your host." +msgstr "Os seguintes arquivos foram removidos do seu provedor." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filescan-menu.php:515 +msgid "The following files were changed on your host." +msgstr "Os seguintes arquivos foram alterados em seu provedor." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:26 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:67 +msgid "File Permissions" +msgstr "Permissões de arquivos" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:27 +msgid "PHP File Editing" +msgstr "Edição de arquivo PHP" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:28 +msgid "WP File Access" +msgstr "Acesso ao arquivo WP" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:29 +msgid "Host System Logs" +msgstr "Logs do sistema hospedeiro" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:97 +#, php-format +msgid "The permissions for %s were succesfully changed to %s" +msgstr "As permissões de %s foram alteradas com sucesso para %s" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:101 +#, php-format +msgid "Unable to change permissions for %s!" +msgstr "Não foi possível alterar as permissões de %s!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:107 +msgid "File Permissions Scan" +msgstr "Verificação de permissão de arquivos" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:110 +msgid "Your WordPress file and folder permission settings govern the accessability and read/write privileges of the files and folders which make up your WP installation." +msgstr "Suas configurações de permissão de arquivo e pasta WordPress governam os privilégios de acessibilidades e leitura/gravação de arquivos e pastas que compõem sua instalação do WP." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:111 +msgid "Your WP installation already comes with reasonably secure file permission settings for the filesystem." +msgstr "Sua instalação WP já vem com configurações de permissão de arquivo razoavelmente segura para o sistema de arquivos." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:112 +msgid "However, sometimes people or other plugins modify the various permission settings of certain core WP folders or files such that they end up making their site less secure because they chose the wrong permission values." +msgstr "No entanto, às vezes as pessoas ou outros plugins modificar as várias configurações de permissão de determinados arquivos ou pastas do núcleo WP tal que eles acabam fazendo com que seu site menos seguro porque eles escolheram os valores de permissão errados." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:113 +msgid "This feature will scan the critical WP core folders and files and will highlight any permission settings which are insecure." +msgstr "Esta recurso irá verificar as pastas e arquivos críticos do núcleo WP e irá destacar quaisquer configurações de permissão que são inseguros." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:119 +msgid "WP Directory and File Permissions Scan Results" +msgstr "Resultados de pesquisa de permissões de arquivo e diretório WP" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:132 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:151 +msgid "File/Folder" +msgstr "Arquivo / Pasta" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:133 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:152 +msgid "Current Permissions" +msgstr "Permissões atuais" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:134 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:153 +msgid "Recommended Permissions" +msgstr "Permissões recomendadas" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:135 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:154 +msgid "Recommended Action" +msgstr "Ação recomendada" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:192 +msgid "Your PHP file editing settings were saved successfully." +msgstr "Suas configurações de edição de arquivos PHP foram salvas com sucesso." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:196 +msgid "Operation failed! Unable to modify or make a backup of wp-config.php file!" +msgstr "Operação falhou! Não é possível modificar ou fazer um backup do arquivo wp-config.php!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:209 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:69 +msgid "File Editing" +msgstr "Edição de arquivo" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:212 +msgid "The Wordpress Dashboard by default allows administrators to edit PHP files, such as plugin and theme files." +msgstr "O painel do Wordpress por padrão permite que os administradores editar arquivos PHP, tais como arquivos de plugin e tema." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:213 +msgid "This is often the first tool an attacker will use if able to login, since it allows code execution." +msgstr "Isso é muitas vezes a primeira ferramenta que um invasor irá usar se for capaz de fazer o login, uma vez que permite a execução de código." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:214 +msgid "This feature will disable the ability for people to edit PHP files via the dashboard." +msgstr "Este recurso irá desativar a capacidade para as pessoas editar arquivos PHP através do painel de controle." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:220 +msgid "Disable PHP File Editing" +msgstr "Desativar edição de arquivo PHP" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:232 +msgid "Disable Ability To Edit PHP Files" +msgstr "Desativar a capacidade para editar arquivos PHP" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:235 +msgid "Check this if you want to remove the ability for people to edit PHP files via the WP dashboard" +msgstr "Marque esta opção se você deseja remover a capacidade de pessoas para editar arquivos PHP através do painel WP" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:279 +msgid "You have successfully saved the Prevent Access to Default WP Files configuration." +msgstr "Você salvou com sucesso a impedir acesso à configuração de arquivos padrão do WP." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:288 +msgid "WordPress Files" +msgstr "Arquivos WordPress" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:291 +#, php-format +msgid "This feature allows you to prevent access to files such as %s, %s and %s which are delivered with all WP installations." +msgstr "Esse recurso permite-lhe impedir o acesso a arquivos, como %s, %s e %s, que são entregues com todas as instalações WP." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:292 +msgid "By preventing access to these files you are hiding some key pieces of information (such as WordPress version info) from potential hackers." +msgstr "Ao impedir o acesso a esses arquivos que você está escondendo algumas peças-chave de informação (por exemplo, informações de versão do WordPress) dos potenciais hackers." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:297 +msgid "Prevent Access to Default WP Files" +msgstr "Impedir o acesso a arquivos padrão do WP" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:308 +msgid "Prevent Access to WP Default Install Files" +msgstr "Impedir o acesso a arquivos de instalação padrão do WP" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:311 +msgid "Check this if you want to prevent access to readme.html, license.txt and wp-config-sample.php." +msgstr "Marque esta opção se você deseja impedir o acesso a readme.html, license.txt and wp-config-sample.php." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:315 +msgid "Save Setting" +msgstr "Salvar configuração" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:339 +msgid "System Logs" +msgstr "Logs do sistema" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:342 +msgid "Sometimes your hosting platform will produce error or warning logs in a file called \"error_log\"." +msgstr "Às vezes sua plataforma de hospedagem irá produzir erro ou logs de aviso em um arquivo chamado \"error_log\"." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:343 +msgid "Depending on the nature and cause of the error or warning, your hosting server can create multiple instances of this file in numerous directory locations of your WordPress installation." +msgstr "Dependendo da natureza e da causa do erro ou aviso, seu servidor de hospedagem pode criar várias instâncias deste arquivo em vários locais do diretório de sua instalação do WordPress." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:344 +msgid "By occassionally viewing the contents of these logs files you can keep informed of any underlying problems on your system which you might need to address." +msgstr "Por ocasionalmente exibindo o conteúdo desses arquivos de logs que pode manter-se informado de quaisquer problemas subjacentes em seu sistema que você pode precisar do endereço para resolver." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:350 +msgid "View System Logs" +msgstr "Ver logs do sistema" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:355 +msgid "Enter System Log File Name" +msgstr "Digite o nome do arquivo de log do sistema" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:357 +msgid "Enter your system log file name. (Defaults to error_log)" +msgstr "Digite seu nome de arquivo de log do sistema. (Padrões para error_log)" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:360 +msgid "View Latest System Logs" +msgstr "Ver logs mais recentes do sistema" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:362 +msgid "Loading..." +msgstr "Carregando..." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:379 +msgid "No system logs were found!" +msgstr "Nenhum registro de logs do sistema foram encontrados!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:432 +msgid "Set Recommended Permissions" +msgstr "Conjunto recomendado de permissões" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:438 +msgid "No Action Required" +msgstr "Nenhuma ação necessária" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-filesystem-menu.php:478 +#, php-format +msgid "Showing latest entries of error_log file: %s" +msgstr "Mostrando as últimas entradas de arquivo error_log: %s" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:28 +msgid "Basic Firewall Rules" +msgstr "Regras básicas do firewall" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:29 +msgid "Additional Firewall Rules" +msgstr "Regras adicionais do firewall" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:30 +msgid "6G Blacklist Firewall Rules" +msgstr "Regras do firewall de lista negra 6G" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:31 +msgid "Internet Bots" +msgstr "Robôs da internet" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:32 +msgid "Prevent Hotlinks" +msgstr "Impedir hotlinks" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:33 +msgid "404 Detection" +msgstr "Detecção 404" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:34 +msgid "Custom Rules" +msgstr "Regras personalizadas" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:119 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:722 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:105 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:448 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-registration-menu.php:97 +msgid "Settings were successfully saved" +msgstr "Configurações foram salvas com sucesso" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:128 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:543 +msgid "Firewall Settings" +msgstr "Configurações do firewall" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:135 +#, php-format +msgid "This should not have any impact on your site's general functionality but if you wish you can take a %s of your .htaccess file before proceeding." +msgstr "Isto não deve ter nenhum impacto sobre a funcionalidade geral do seu site, mas se você quiser, você pode tomar um %s do seu arquivo .htaccess antes de prosseguir." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:136 +msgid "The features in this tab allow you to activate some basic firewall security protection rules for your site." +msgstr "Os recursos neste guia permitem que você ative algumas regras básicas de proteção de segurança de firewall para o seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:137 +msgid "The firewall functionality is achieved via the insertion of special code into your currently active .htaccess file." +msgstr "A funcionalidade de firewall é conseguida através da inserção de código especial em seu arquivo .htaccess atualmente ativo." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:147 +msgid "Attention:" +msgstr "Atenção:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:148 +msgid "Currently the " +msgstr "Atualmente o " + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:148 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:195 +msgid "Enable Pingback Protection" +msgstr "Habilitar proteção Pingback" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:148 +msgid " is active." +msgstr " está ativo" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:149 +msgid "Please beware that if you are using the WordPress iOS App, then you will need to deactivate this feature in order for the app to work properly." +msgstr "Por favor, cuidado com isso se você estiver usando o WordPress iOS App e, em seguida, você precisará desativar esse recurso para que o aplicativo funcione corretamente." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:157 +msgid "Basic Firewall Settings" +msgstr "Configurações de firewall básico" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:165 +msgid "Enable Basic Firewall Protection" +msgstr "Habilitar proteção de firewall básico" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:168 +msgid "Check this if you want to apply basic firewall protection to your site." +msgstr "Marque esta opção se você deseja aplicar a proteção de firewall básico para o seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:172 +msgid "This setting will implement the following basic firewall protection mechanisms on your site:" +msgstr "Esta configuração irá implementar os seguintes mecanismos de proteção básica do firewall no seu site:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:173 +msgid "1) Protect your htaccess file by denying access to it." +msgstr "1) Proteja o seu arquivo .htaccess, negando o acesso a ele." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:174 +msgid "2) Disable the server signature." +msgstr "2) Desativa a assinatura do servidor." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:175 +msgid "3) Limit file upload size (10MB)." +msgstr "3) Limita o tamanho de upload de arquivo (10MB)." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:176 +msgid "4) Protect your wp-config.php file by denying access to it." +msgstr "4) Protege seu arquivo wp-config.php, negando o acesso a ele." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:177 +msgid "The above firewall features will be applied via your .htaccess file and should not affect your site's overall functionality." +msgstr "Os recursos de firewall acima serão aplicados através de seu arquivo .htaccess e não devem afetar a funcionalidade geral do seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:178 +msgid "You are still advised to take a backup of your active .htaccess file just in case." +msgstr "Ainda é aconselhável fazer um backup de seu arquivo .htaccess ativo apenas no caso." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:187 +msgid "WordPress Pingback Vulnerability Protection" +msgstr "Proteção de vulnerabilidade pingback do WordPress" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:198 +msgid "Check this if you are not using the WP XML-RPC functionality and you want to enable protection against WordPress pingback vulnerabilities." +msgstr "Marque esta opção se você não estiver usando a funcionalidade XML-RPC WP e você deseja habilitar a proteção contra vulnerabilidades pingback do WordPress." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:202 +msgid "This setting will add a directive in your .htaccess to disable access to the WordPress xmlrpc.php file which is responsible for the XML-RPC functionality such as pingbacks in WordPress." +msgstr "Esta configuração irá adicionar uma diretiva no seu .htaccess para desabilitar o acesso ao arquivo xmlrpc.php WordPress, que é responsável pela funcionalidade XML-RPC como pingbacks em WordPress." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:203 +msgid "Hackers can exploit various pingback vulnerabilities in the WordPress XML-RPC API in a number of ways such as:" +msgstr "Os hackers podem explorar várias vulnerabilidades pingback no WordPress XML-RPC API em um número de maneiras tais como:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:204 +msgid "1) Denial of Service (DoS) attacks" +msgstr "1) Ataques de negação de serviço (DoS)" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:205 +msgid "2) Hacking internal routers." +msgstr "2) Roteadores internos pirata." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:206 +msgid "3) Scanning ports in internal networks to get info from various hosts." +msgstr "3) Varredura de portas em redes internas para obter informações de vários hosts." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:207 +msgid "Apart from the security protection benefit, this feature may also help reduce load on your server, particularly if your site currently has a lot of unwanted traffic hitting the XML-RPC API on your installation." +msgstr "Além do benefício de proteção de segurança, esse recurso também pode ajudar a reduzir a carga no seu servidor, especialmente quando o site tem atualmente uma grande quantidade de tráfego indesejado, batendo o XML-RPC API em sua instalação." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:208 +msgid "NOTE: You should only enable this feature if you are not currently using the XML-RPC functionality on your WordPress installation." +msgstr "NOTA: Você só deve ativar esse recurso se você não estiver usando atualmente a funcionalidade XML-RPC em sua instalação do WordPress." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:217 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:81 +msgid "Block Accesss to Debug Log File" +msgstr "Bloquear o acesso ao arquivo de registro de depuração" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:225 +msgid "Block Access to debug.log File" +msgstr "Bloquear o acesso ao arquivo debug.log" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:228 +msgid "Check this if you want to block access to the debug.log file that WordPress creates when debug logging is enabled." +msgstr "Marque esta opção se você deseja bloquear o acesso ao arquivo debug.log que o WordPress cria quando o registo de depuração está habilitado." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:232 +msgid "WordPress has an option to turn on the debug logging to a file located in wp-content/debug.log. This file may contain sensitive information." +msgstr "WordPress tem uma opção para ativar o registro de depuração para um arquivo localizado em wp-content/debug.log. Este arquivo pode conter informações confidenciais." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:233 +msgid "Using this optoin will block external access to this file. You can still access this file by logging into your site via FTP" +msgstr "Usando este optoin irá bloquear o acesso externo a este arquivo. Você ainda pode acessar esse arquivo, entrando em seu site via FTP" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:241 +msgid "Save Basic Firewall Settings" +msgstr "Salvar configurações de firewall básico" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:313 +msgid "You have successfully saved the Additional Firewall Protection configuration" +msgstr "Você salvou com sucesso a configuração adicional de proteção por firewall" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:327 +msgid "Additional Firewall Protection" +msgstr "Proteção de firewall adicional" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:331 +#, php-format +msgid "Due to the nature of the code being inserted to the .htaccess file, this feature may break some functionality for certain plugins and you are therefore advised to take a %s of .htaccess before applying this configuration." +msgstr "Devido à natureza do código que está sendo inserido no arquivo .htaccess, esse recurso pode quebrar algumas funcionalidades para certos plugins e, portanto, você é aconselhado a tomar um %s do .htaccess antes de aplicar essa configuração." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:333 +msgid "This feature allows you to activate more advanced firewall settings to your site." +msgstr "Este recurso permite que você ative as configurações de firewall mais avançadas para o seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:334 +msgid "The advanced firewall rules are applied via the insertion of special code to your currently active .htaccess file." +msgstr "As regras de firewall avançado são aplicadas através da inserção de código especial para seu arquivo .htaccess atualmente ativo." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:343 +msgid "Listing of Directory Contents" +msgstr "Listagem do conteúdo do diretório" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:352 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:92 +msgid "Disable Index Views" +msgstr "Desabilitar visualizações de índice" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:355 +msgid "Check this if you want to disable directory and file listing." +msgstr "Marque esta opção se você deseja desativar o diretório e lista de arquivos." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:360 +msgid "By default, an Apache server will allow the listing of the contents of a directory if it doesn't contain an index.php file." +msgstr "Por padrão, um servidor Apache permitirá a listagem do conteúdo de um diretório, se ele não contém um arquivo index.php." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:362 +msgid "This feature will prevent the listing of contents for all directories." +msgstr "Este recurso impedirá a listagem de conteúdos para todos os diretórios." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:364 +msgid "NOTE: In order for this feature to work \"AllowOverride\" of the Indexes directive must be enabled in your httpd.conf file. Ask your hosting provider to check this if you don't have access to httpd.conf" +msgstr "NOTA: Para que este recurso funcione \"AllowOverride\" da directiva índices deve estar habilitada no seu arquivo httpd.conf. Pergunte ao seu provedor de hospedagem para verificar isso, se você não tem acesso ao httpd.conf " + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:373 +msgid "Trace and Track" +msgstr "Rastrear e acompanhar" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:382 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:93 +msgid "Disable Trace and Track" +msgstr "Desabilitar o rastreamento e acompanhamento" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:385 +msgid "Check this if you want to disable trace and track." +msgstr "Marque esta opção se você deseja desativar o rastreamento e acompanhamento." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:390 +msgid "HTTP Trace attack (XST) can be used to return header requests and grab cookies and other information." +msgstr "Ataque de rastreamento HTTP (XST) pode ser usado para retornar solicitações de cabeçalho e cookies de apoio e outras informações." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:392 +msgid "This hacking technique is usually used together with cross site scripting attacks (XSS)." +msgstr "Esta técnica de hacking é geralmente usado em conjunto com ataques de script entre sites (XSS)." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:394 +msgid "Disabling trace and track on your site will help prevent HTTP Trace attacks." +msgstr "Desabilitação de rastreamento e acompanhamento em seu site irá ajudar a evitar ataques de rastreamento HTTP." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:403 +msgid "Proxy Comment Posting" +msgstr "Postagem de comentário proxy" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:413 +msgid "Forbid Proxy Comment Posting" +msgstr "Proibir postagem de comentários de proxy" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:416 +msgid "Check this if you want to forbid proxy comment posting." +msgstr "Marque esta opção se você deseja proibir postagem de comentários de proxy." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:421 +msgid "This setting will deny any requests that use a proxy server when posting comments." +msgstr "Essa configuração negará quaisquer solicitações que usam um servidor proxy ao postar comentários." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:422 +msgid "By forbidding proxy comments you are in effect eliminating some SPAM and other proxy requests." +msgstr "Proibindo comentários de proxy, você está em efeito, eliminando alguns SPAM e outras solicitações de proxy." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:431 +msgid "Bad Query Strings" +msgstr "Sequências de caracteres de consulta ruim" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:441 +msgid "Deny Bad Query Strings" +msgstr "Negar sequências de caracteres de consulta ruim" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:444 +msgid "This will help protect you against malicious queries via XSS." +msgstr "Isso ajudará a protegê-lo contra consultas maliciosas via XSS." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:449 +msgid "This feature will write rules in your .htaccess file to prevent malicious string attacks on your site using XSS." +msgstr "Esse recurso irá escrever regras em seu arquivo .htaccess para impedir ataques maliciosos de sequência de caracteres no seu site usando XSS." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:450 +msgid "NOTE: Some of these strings might be used for plugins or themes and hence this might break some functionality." +msgstr "NOTA: Algumas destas sequências de caracteres podem ser usadas para plugins ou temas e, portanto, isso pode quebrar algumas funcionalidades." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:451 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:481 +msgid "You are therefore strongly advised to take a backup of your active .htaccess file before applying this feature." +msgstr "É, portanto, fortemente aconselhável fazer um backup de seu arquivo .htaccess ativo antes de aplicar esse recurso." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:460 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:96 +msgid "Advanced Character String Filter" +msgstr "Filtro de sequência de caráter avançado" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:470 +msgid "Enable Advanced Character String Filter" +msgstr "Habilitar filtro de sequência de caráter avançado" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:473 +msgid "This will block bad character matches from XSS." +msgstr "Isto irá bloquear mau caráter corresponde de XSS." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:478 +msgid "This is an advanced character string filter to prevent malicious string attacks on your site coming from Cross Site Scripting (XSS)." +msgstr "Este é um filtro de sequência de caracteres de caráter avançado para impedir ataques maliciosos de sequência de caracteres em seu site vindo de Cross Site Scripting (XSS)." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:479 +msgid "This setting matches for common malicious string patterns and exploits and will produce a 403 error for the hacker attempting the query." +msgstr "Essa configuração corresponde para exploits e padrões comuns de sequência malicioso e produzirá um erro 403 para o hacker tentar a consulta." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:480 +msgid "NOTE: Some strings for this setting might break some functionality." +msgstr "NOTA: Algumas sequências de caracteres para esta configuração podem quebrar algumas funcionalidades." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:489 +msgid "Save Additional Firewall Settings" +msgstr "Salvar configurações de firewall adicional" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:532 +msgid "You have successfully saved the 5G/6G Firewall Protection configuration" +msgstr "Você salvou com sucesso a configuração de proteção de firewall 5G/6G" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:547 +#, php-format +msgid "This feature allows you to activate the %s (or legacy %s) firewall security protection rules designed and produced by %s." +msgstr "Esse recurso permite que você ative o %s (ou %s legado) regras de proteção de segurança de firewall projetado e produzido por %s." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:548 +msgid "The 6G Blacklist is updated and improved version of 5G Blacklist. If you have 5G Blacklist active, you might consider activating 6G Blacklist instead." +msgstr "A lista negra 6G é atualizada e melhorada da versão da lista negra 5G. Se você tem lista negra 5G ativa, você pode considerar ativando a lista negra 6G em vez disso." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:549 +msgid "The 6G Blacklist is a simple, flexible blacklist that helps reduce the number of malicious URL requests that hit your website." +msgstr "Lista negra 6G é uma lista negra simples, flexível, que ajuda a reduzir o número de solicitações de URL maliciosas que atingem seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:550 +msgid "The added advantage of applying the 6G firewall to your site is that it has been tested and confirmed by the people at PerishablePress.com to be an optimal and least disruptive set of .htaccess security rules for general WP sites running on an Apache server or similar." +msgstr "A vantagem de aplicar o firewall 6G para o seu site é que ele foi testado e confirmado pelas pessoas em PerishablePress.com ser um conjunto ideal e menos perturbadora de regras de segurança de .htaccess para sites gerais WP, executando em um servidor Apache ou similar." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:551 +#, php-format +msgid "Therefore the 6G firewall rules should not have any impact on your site's general functionality but if you wish you can take a %s of your .htaccess file before proceeding." +msgstr "Portanto, as regras de firewall 6G não devem ter qualquer impacto na funcionalidade geral do seu site, mas se quiser você pode tomar um %s de seu arquivo .htaccess antes de prosseguir." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:557 +msgid "6G Blacklist/Firewall Settings" +msgstr "Configurações de firewall / lista negra 6G" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:569 +msgid "Enable 6G Firewall Protection" +msgstr "Habilitar proteção de firewall 6G" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:572 +msgid "Check this if you want to apply the 6G Blacklist firewall protection from perishablepress.com to your site." +msgstr "Marque esta opção se você deseja aplicar a proteção de firewall de lista negra 6G de perishablepress.com para o seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:576 +msgid "This setting will implement the 6G security firewall protection mechanisms on your site which include the following things:" +msgstr "Esta configuração irá implementar os mecanismos de proteção de firewall de segurança 6G em seu site que incluem as seguintes coisas:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:577 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:595 +msgid "1) Block forbidden characters commonly used in exploitative attacks." +msgstr "1) Caracteres em bloco proibido comumente usado em ataques de exploração." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:578 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:596 +msgid "2) Block malicious encoded URL characters such as the \".css(\" string." +msgstr "2) Bloquear caracteres codificados de URL maliciosos, tais como o \".css(\" sequências." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:579 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:597 +msgid "3) Guard against the common patterns and specific exploits in the root portion of targeted URLs." +msgstr "3) Proteja-se contra os padrões comuns e exploração específicas na parte de raiz de URLs de destino." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:580 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:598 +msgid "4) Stop attackers from manipulating query strings by disallowing illicit characters." +msgstr "4) Pare atacantes de manipular sequências de consulta por não permitir caracteres ilícitos." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:581 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:599 +msgid "....and much more." +msgstr "....e muito mais." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:587 +msgid "Enable legacy 5G Firewall Protection" +msgstr "Habilitar proteção de firewall 5G legado" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:590 +msgid "Check this if you want to apply the 5G Blacklist firewall protection from perishablepress.com to your site." +msgstr "Marque esta opção se você deseja aplicar a proteção de firewall de lista negra 5G de perishablepress.com para o seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:594 +msgid "This setting will implement the 5G security firewall protection mechanisms on your site which include the following things:" +msgstr "Esta configuração irá implementar os mecanismos de proteção de firewall de segurança 5G em seu site que incluem as seguintes coisas:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:605 +msgid "Save 5G/6G Firewall Settings" +msgstr "Salvar configurações de firewall 5G/6G" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:636 +msgid "The Internet bot settings were successfully saved" +msgstr "As configurações de robôs da internet foram salvas com sucesso" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:640 +msgid "Internet Bot Settings" +msgstr "Configurações de robôs da internet" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:647 +#, php-format +msgid "%s?" +msgstr "%s?" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:649 +msgid "A bot is a piece of software which runs on the Internet and performs automatic tasks. For example when Google indexes your pages it uses automatic bots to achieve this task." +msgstr "Um robô é um pedaço de software que é executado na internet e executa tarefas automáticas. Por exemplo, quando o Google indexa suas páginas ele usa robôs automáticos para realizar esta tarefa." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:650 +msgid "A lot of bots are legitimate and non-malicous but not all bots are good and often you will find some which try to impersonate legitimate bots such as \"Googlebot\" but in reality they have nohing to do with Google at all." +msgstr "Um monte de robôs são legítimos e não malicioso mas não todos os robôs são bons e muitas vezes você vai encontrar alguns que tentam representar legítimo robôs como \"Googlebot\" mas na realidade eles não têm nada a ver com o Google em tudo." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:651 +msgid "Although most of the bots out there are relatively harmless sometimes website owners want to have more control over which bots they allow into their site." +msgstr "Embora a maioria dos robôs lá fora, são relativamente inofensivos, às vezes proprietários de site querem ter mais controle sobre quais robôs permitem em seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:652 +msgid "This feature allows you to block bots which are impersonating as a Googlebot but actually aren't. (In other words they are fake Google bots)" +msgstr "Esse recurso permite você bloquear robôs que estão representando como um Googlebot, mas na verdade não são. (Em outras palavras, eles são falsos robôs do Google)" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:653 +msgid "Googlebots have a unique indentity which cannot easily be forged and this feature will indentify any fake Google bots and block them from reading your site's pages." +msgstr "Googlebots tem uma identidade exclusiva, que não pode ser facilmente forjado e esse recurso irá identificar quaisquer falsos robôs do Google e bloqueá-los de ler as páginas do seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:659 +msgid "Attention: Sometimes non-malicious Internet organizations might have bots which impersonate as a \"Googlebot\"." +msgstr "Atenção: Organizações da internet, por vezes, não maliciosos podem ter robôs que imitam como um \"Googlebot\"." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:660 +msgid "Just be aware that if you activate this feature the plugin will block all bots which use the \"Googlebot\" string in their User Agent information but are NOT officially from Google (irrespective whether they are malicious or not)." +msgstr "Esteja ciente de que, se você ativar esse recurso o plugin irá bloquear todos os robôs que usar a sequência de \"Googlebot\" em suas informações de agente de usuário, mas não são oficialmente do Google (independentemente se eles são mal-intencionados ou não). " + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:661 +msgid "All other bots from other organizations such as \"Yahoo\", \"Bing\" etc will not be affected by this feature." +msgstr "Todos os outros robôs de outras organizações, tais como \"Yahoo\", \"Bing\" etc não serão afetados por esse recurso." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:667 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:677 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:98 +msgid "Block Fake Googlebots" +msgstr "Bloquear Googlebots falsos" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:680 +msgid "Check this if you want to block all fake Googlebots." +msgstr "Marque esta opção se você deseja bloquear todos os Googlebots falsos." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:684 +msgid "This feature will check if the User Agent information of a bot contains the string \"Googlebot\"." +msgstr "Esta característica irá verificar se as informações do agente de usuário de um robô contém a sequência de caracteres \"Googlebot\"." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:685 +msgid "It will then perform a few tests to verify if the bot is legitimately from Google and if so it will allow the bot to proceed." +msgstr "Em seguida, ele irá executar alguns testes para verificar se o robô é legitimamente do Google e se assim permitirá que o robô prosseguir." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:686 +msgid "If the bot fails the checks then the plugin will mark it as being a fake Googlebot and it will block it" +msgstr "Se o robô falha nas verificações em seguida, o plugin irá marcá-lo como sendo um Googlebot falso e ele vai bloqueá-lo" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:693 +msgid "Save Internet Bot Settings" +msgstr "Salvar configurações de robô da internet" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:730 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:752 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:32 +msgid "Prevent Image Hotlinking" +msgstr "Evitar hotlinking de imagem" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:733 +msgid "A Hotlink is where someone displays an image on their site which is actually located on your site by using a direct link to the source of the image on your server." +msgstr "Um hotlink é onde alguém exibe uma imagem em seu site que encontra em seu site usando um link direto para a fonte da imagem no seu servidor." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:734 +msgid "Due to the fact that the image being displayed on the other person's site is coming from your server, this can cause leaking of bandwidth and resources for you because your server has to present this image for the people viewing it on someone elses's site." +msgstr "Devido ao fato de que a imagem seja exibida no site da outra pessoa está vindo do seu servidor, isso pode causar vazamento de largura de banda e recursos para você, porque o servidor tem de apresentar essa imagem para as pessoas vê-lo em algum local do site da elses." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:735 +msgid "This feature will prevent people from directly hotlinking images from your site's pages by writing some directives in your .htaccess file." +msgstr "Este recurso irá impedir pessoas de diretamente de hotlinking de imagens de páginas de seu site, escrevendo algumas diretivas em seu arquivo .htaccess." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:740 +msgid "Prevent Hotlinking" +msgstr "Evitar hotlinking" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:755 +msgid "Check this if you want to prevent hotlinking to images on your site." +msgstr "Marque esta opção se você deseja evitar hotlinking de imagens no seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:775 +msgid "Nonce check failed for delete all 404 event logs operation!" +msgstr "Verificação núncio falhou para operação de exclusão de todos os registros de eventos 404!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:786 +msgid "404 Detection Feature - Delete all 404 event logs operation failed!" +msgstr "Recurso de detecção 404 - Excluir todos os registros de eventos 404 com falha na operação!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:790 +msgid "All 404 event logs were deleted from the DB successfully!" +msgstr "Todos os registros de eventos 404 foram excluídos do banco de dados com sucesso!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:814 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:111 +msgid "You entered a non numeric value for the lockout time length field. It has been set to the default value." +msgstr "Você digitou um valor não numérico para o campo de comprimento tempo de bloqueio. Foi definido como o valor padrão." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:820 +msgid "You entered an incorrect format for the \"Redirect URL\" field. It has been set to the default value." +msgstr "Você digitou um formato incorreto para o campo \"Redirecionamento de URL\". Foi definido como o valor padrão." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:855 +msgid "404 Detection Configuration" +msgstr "Configuração de detecção 404" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:858 +msgid "A 404 or Not Found error occurs when somebody tries to access a non-existent page on your website." +msgstr "Um 404 ou nenhum erro encontrado ocorre quando alguém tenta acessar uma página inexistente em seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:859 +msgid "Typically, most 404 errors happen quite innocently when people have mis-typed a URL or used an old link to page which doesn't exist anymore." +msgstr "Normalmente, a maioria dos erros 404 acontecer muito inocentemente quando as pessoas têm mal digitado uma URL ou usado um link antigo para a página que não existe mais." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:860 +msgid "However, in some cases you may find many repeated 404 errors which occur in a relatively short space of time and from the same IP address which are all attempting to access a variety of non-existent page URLs." +msgstr "No entanto, em alguns casos, você pode encontrar muitos repetidos erros 404 que ocorrem em um espaço relativamente curto de tempo e com o mesmo endereço IP que estão todos tentando acessar uma variedade de URLs de páginas inexistentes." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:861 +msgid "Such behaviour can mean that a hacker might be trying to find a particular page or URL for sinister reasons." +msgstr "Tal comportamento pode significar que um hacker pode estar tentando encontrar uma determinada página ou URL por razões sinistras." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:862 +msgid "This feature allows you to monitor all 404 events which occur on your site, and it also gives you the option of blocking IP addresses for a configured length of time." +msgstr "Este recurso permite que você monitore todos os eventos 404 que ocorrem em seu site, e também lhe dá a opção de bloquear endereços IP configurado por um período de tempo." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:863 +msgid "If you want to temporarily block an IP address, simply click the \"Temp Block\" link for the applicable IP entry in the \"404 Event Logs\" table below." +msgstr "Se você deseja bloquear temporariamente um endereço IP, basta clicar no link \"Temp Block\" para a entrada IP aplicável na tabela \"Registros de evento 404\" abaixo." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:869 +#, php-format +msgid "You may also be interested in our %s." +msgstr "Você pode também estar interessado em nosso %s." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:870 +msgid "This addon allows you to automatically and permanently block IP addresses based on how many 404 errors they produce." +msgstr "Este complemento permite bloquear automaticamente e permanentemente endereços IP com base em quantos erros 404 que produzem." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:878 +msgid "404 Detection Options" +msgstr "Opções de detecção 404" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:890 +msgid "Enable 404 IP Detection and Lockout" +msgstr "Habilita detecção 404 de IP e bloqueio" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:893 +msgid "Check this if you want to enable the lockout of selected IP addresses." +msgstr "Marque esta opção se você deseja ativar o bloqueio de endereços IP selecionados." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:898 +msgid "When you enable this checkbox, all 404 events on your site will be logged in the table below. You can monitor these events and select some IP addresses listed in the table below and block them for a specified amount of time. All IP addresses you select to be blocked from the \"404 Event Logs\" table section will be unable to access your site during the time specified." +msgstr "Quando você ativa esta opção, todos os eventos 404 em seu site serão registrados na tabela abaixo. Você pode monitorar esses eventos e selecionar alguns endereços IP listados na tabela abaixo e bloqueá-los para um determinado período de tempo. Todos os endereços IP que você selecionar a ser bloqueado a partir da secção da tabela \"registros de evento 404\" não será capaz de acessar seu site durante o tempo especificado." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:906 +msgid "Enable 404 Event Logging" +msgstr "Habilitar registro de eventos 404" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:909 +msgid "Check this if you want to enable the logging of 404 events" +msgstr "Marque esta opção se você deseja ativar o registro de eventos 404" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:914 +msgid "Time Length of 404 Lockout (min)" +msgstr "Comprimento de tempo do bloqueio 404 (minuto)" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:916 +msgid "Set the length of time for which a blocked IP address will be prevented from visiting your site" +msgstr "Defina o período de tempo durante o qual um endereço IP bloqueado será impedido de visitar o seu site" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:921 +msgid "You can lock any IP address which is recorded in the \"404 Event Logs\" table section below." +msgstr "Você pode bloquear qualquer endereço IP que está registrado na seção de tabela \"registros de evento 404\" abaixo." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:923 +msgid "To temporarily lock an IP address, hover over the ID column and click the \"Temp Block\" link for the applicable IP entry." +msgstr "Para bloquear temporariamente um endereço IP, passe o mouse sobre a coluna ID e clique no link \"Temp Block\" para a entrada IP aplicável." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:930 +msgid "404 Lockout Redirect URL" +msgstr "Redirecionamento de URL 404 bloqueada" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:932 +msgid "A blocked visitor will be automatically redirected to this URL." +msgstr "Um visitante bloqueado será automaticamente redirecionado para esta URL." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:941 +msgid "404 Event Logs" +msgstr "Registros de eventos 404" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:963 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:972 +msgid "Delete All 404 Event Logs" +msgstr "Excluir todos os registros de eventos 404" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:969 +msgid "Click this button if you wish to purge all 404 event logs from the DB." +msgstr "Clique nesse botão se você deseja limpar todos os registros de eventos 404 do banco de dados." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:1025 +msgid "Custom .htaccess Rules Settings" +msgstr "Configurações de regras .htaccess personalizadas" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:1032 +msgid "This feature can be used to apply your own custom .htaccess rules and directives." +msgstr "Esse recurso pode ser usado para aplicar suas próprias regras .htaccess e diretivas personalizadas." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:1033 +msgid "It is useful for when you want to tweak our existing firewall rules or when you want to add your own." +msgstr "É útil para quando você quer ajustar as nossas regras de firewall existentes ou quando você deseja adicionar o seu próprio." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:1034 +msgid "NOTE: This feature can only used if your site is hosted in an apache or similar web server." +msgstr "NOTA: Esse recurso só pode ser usado se o seu site está hospedado em um servidor web Apache ou similar." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:1040 +msgid "Warning: Only use this feature if you know what you are doing." +msgstr "Aviso: Só use esse recurso se você sabe o que está fazendo." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:1041 +msgid "Incorrect .htaccess rules or directives can break or prevent access to your site." +msgstr "Regras .htaccess ou diretivas incorretas podem quebrar ou impedir o acesso ao seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:1042 +msgid "It is your responsibility to ensure that you are entering the correct code!" +msgstr "É de sua responsabilidade para garantir que você está digitando o código correto!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:1043 +msgid "If you break your site you will need to access your server via FTP or something similar and then edit your .htaccess file and delete the changes you made." +msgstr "Se você quebrar seu site, você precisará acessar o servidor via FTP ou algo similar e, em seguida, editar o seu arquivo .htaccess e excluir as alterações feitas." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:1049 +msgid "Custom .htaccess Rules" +msgstr "Regras .htaccess personalizadas" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:1053 +msgid "Enable Custom .htaccess Rules" +msgstr "Habilitar regras .htaccess personalizadas" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:1056 +msgid "Check this if you want to enable custom rules entered in the text box below" +msgstr "Marque esta opção se você deseja ativar regras personalizadas inseridas na caixa de texto abaixo" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:1060 +msgid "Enter Custom .htaccess Rules:" +msgstr "Digite regras .htaccess personalizadas:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:1064 +msgid "Enter your custom .htaccess rules/directives." +msgstr "Digite suas regras/diretivas .htaccess personalizadas" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-firewall-menu.php:1069 +msgid "Save Custom Rules" +msgstr "Salvar regras personalizadas" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-404.php:118 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-404.php:126 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-404.php:133 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-acct-activity.php:83 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-comment-spammer-ip.php:92 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-locked-ip.php:90 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-locked-ip.php:101 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-login-fails.php:82 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-permanent-blocked-ip.php:93 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-registered-users.php:87 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-registered-users.php:98 +msgid "Please select some records using the checkboxes" +msgstr "Por favor, selecione alguns registros usando as caixas de seleção" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-404.php:155 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-404.php:193 +msgid "Could not process the request because the IP addresses for the selected entries could not be found!" +msgstr "Não foi possível processar a solicitação, porque os endereços IP para os itens selecionados não podem ser encontrados!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-404.php:164 +msgid "The selected IP addresses are now temporarily blocked!" +msgstr "Os endereços IP selecionados estão temporariamente bloqueados!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-404.php:169 +msgid "The selected IP address is now temporarily blocked!" +msgstr "O endereço IP selecionado agora está temporariamente bloqueado!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-404.php:171 +msgid "The selected entry is not a valid IP address!" +msgstr "A entrada selecionada não é um endereço IP válido!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-404.php:220 +msgid "The selected IP addresses have been added to the blacklist and will be permanently blocked!" +msgstr "Os endereços IP selecionados foram adicionados à lista negra e serão permanentemente bloqueados!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-404.php:257 +msgid "Nonce check failed for delete selected 404 event logs operation!" +msgstr "Verificação núncio falhou para operação de exclusão dos registros de eventos 404 selecionados!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-acct-activity.php:114 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-login-fails.php:114 +msgid "The selected entries were deleted successfully!" +msgstr "As entradas selecionadas foram excluídas com sucesso!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-acct-activity.php:126 +msgid "Nonce check failed for delete selected account activity logs operation!" +msgstr "Verificação núncio falhou para operação de exclusão dos registros de atividade das contas selecionadas!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-acct-activity.php:134 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-login-fails.php:134 +msgid "The selected entry was deleted successfully!" +msgstr "A entrada selecionada foi excluída com sucesso!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-comment-spammer-ip.php:127 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-comment-spammer-ip.php:176 +msgid "Nonce check failed for delete selected blocked IP operation!" +msgstr "Verificação núncio falhou para operação de exclusão de IP bloqueado selecionado!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-comment-spammer-ip.php:134 +msgid "The selected IP addresses are now permanently blocked!" +msgstr "Os endereços IP selecionados agora estão permanentemente bloqueados!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-comment-spammer-ip.php:190 +msgid "The selected IP addresses were saved in the blacklist configuration settings." +msgstr "Os endereços IP selecionados foram salvas nas definições de configuração de lista negra." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-comment-spammer-ip.php:204 +msgid "The .htaccess file was successfully modified to include the selected IP addresses." +msgstr "O arquivo .htaccess foi modificado com sucesso para incluir os endereços IP selecionados." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-comment-spammer-ip.php:210 +msgid "NOTE: The .htaccess file was not modified because you have disabled the \"Enable IP or User Agent Blacklisting\" check box." +msgstr "NOTA: O arquivo .htaccess não foi modificado porque você desativou a caixa de seleção \"Ativar IP ou lista negra de agente de usuário\"." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-comment-spammer-ip.php:211 +#, php-format +msgid "To block these IP addresses you will need to enable the above flag in the %s menu" +msgstr "Para bloquear esses endereços IP você precisará habilitar o sinalizador acima no menu %s" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-locked-ip.php:128 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:530 +msgid "The selected IP entries were unlocked successfully!" +msgstr "As entradas selecionadas do IP foram desbloqueadas com sucesso!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-locked-ip.php:137 +msgid "Nonce check failed for unlock IP operation!" +msgstr "Verificação núncio falhou para operação de desbloqueio de IP!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-locked-ip.php:145 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:539 +msgid "The selected IP entry was unlocked successfully!" +msgstr "A entrada IP selecionado foi desbloqueado com sucesso!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-locked-ip.php:179 +msgid "Nonce check failed for delete lockdown record operation!" +msgstr "Verificação núncio falhou para operação de registro de bloqueio de exclusão!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-logged-in-users.php:84 +msgid "Nonce check failed for force user logout operation!" +msgstr "Verificação núncio falhou para operação de saída do usuário à força!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-logged-in-users.php:95 +msgid "The selected user was logged out successfully!" +msgstr "O usuário selecionado foi desconectado com sucesso!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-login-fails.php:126 +msgid "Nonce check failed for delete failed login record operation!" +msgstr "Verificação núncio falhou para operação de exclusão de registro de login com falha!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-permanent-blocked-ip.php:123 +msgid "Nonce check failed for unblock IP operation!" +msgstr "Verificação núncio falhou para operação de desbloqueio de IP!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-registered-users.php:132 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-registered-users.php:162 +msgid "Your account is now active" +msgstr "Sua conta já está ativa" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-registered-users.php:133 +msgid "Your account with user ID:" +msgstr "Sua conta com o ID de usuário:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-registered-users.php:133 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-registered-users.php:163 +msgid " is now active" +msgstr " agora está ativa" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-registered-users.php:146 +msgid "The selected accounts were approved successfully!" +msgstr "As contas selecionadas foram aprovados com sucesso!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-registered-users.php:150 +msgid "The following accounts failed to update successfully: " +msgstr "As seguintes contas falharam ao atualizar com sucesso: " + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-registered-users.php:158 +msgid "The selected account was approved successfully!" +msgstr "A conta selecionada foi aprovada com sucesso!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-registered-users.php:163 +msgid "Your account with username: " +msgstr "Sua conta com nome de usuário: " + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-registered-users.php:195 +msgid "The selected accounts were deleted successfully!" +msgstr "As contas selecionadas foram excluídas com sucesso!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-registered-users.php:203 +msgid "Nonce check failed for delete registered user account operation!" +msgstr "Verificação núncio falhou para operação de exclusão de conta de usuário registrado!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-list-registered-users.php:211 +msgid "The selected account was deleted successfully!" +msgstr "A conta selecionada foi excluída com sucesso!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-maintenance-menu.php:22 +msgid "Visitor Lockout" +msgstr "Bloqueio de visitantes" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-maintenance-menu.php:89 +msgid "Site lockout feature settings saved!" +msgstr "Configurações de recurso de bloqueio de site salvas!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-maintenance-menu.php:94 +msgid "General Visitor Lockout" +msgstr "Bloqueio de visitante geral" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-maintenance-menu.php:100 +msgid "This feature allows you to put your site into \"maintenance mode\" by locking down the front-end to all visitors except logged in users with super admin privileges." +msgstr "Esse recurso permite à você colocar seu site no \"modo de manutenção\" por bloquear o front-end para todos os visitantes, exceto usuários logados com privilégios de super administrador." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-maintenance-menu.php:101 +msgid "Locking your site down to general visitors can be useful if you are investigating some issues on your site or perhaps you might be doing some maintenance and wish to keep out all traffic for security reasons." +msgstr "Bloquear o seu site no ar para os visitantes em geral pode ser útil se você está investigando alguns problemas em seu site ou talvez você poderia estar fazendo alguma manutenção e deseja manter fora todo o tráfego por razões de segurança." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-maintenance-menu.php:106 +msgid "Enable Front-end Lockout" +msgstr "Habilitar bloqueio de front-end" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-maintenance-menu.php:109 +msgid "Check this if you want all visitors except those who are logged in as administrator to be locked out of the front-end of your site." +msgstr "Marque esta opção se você deseja que todos os visitantes, exceto aqueles que estão logado como administrador para ser bloqueado para fora do front-end do seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-maintenance-menu.php:113 +msgid "Enter a Message:" +msgstr "Digite uma mensagem:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-maintenance-menu.php:125 +msgid "Enter a message you wish to display to visitors when your site is in maintenance mode." +msgstr "Digite uma mensagem que você deseja exibir aos visitantes, quando seu site estiver em modo de manutenção." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-maintenance-menu.php:132 +msgid "Save Site Lockout Settings" +msgstr "Salvar configurações de bloqueio do site" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-misc-options-menu.php:24 +msgid "Copy Protection" +msgstr "Proteção de cópia" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-misc-options-menu.php:25 +msgid "Frames" +msgstr "Quadros" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-misc-options-menu.php:26 +msgid "Users Enumeration" +msgstr "Enumeração de usuários" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-misc-options-menu.php:91 +msgid "Copy Protection feature settings saved!" +msgstr "Configurações de recurso de proteção contra cópia salvas!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-misc-options-menu.php:96 +msgid "Disable The Ability To Copy Text" +msgstr "Desabilitar a capacidade de copiar o texto" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-misc-options-menu.php:102 +msgid "This feature allows you to disable the ability to select and copy text from your front end." +msgstr "Esse recurso permite que você desative a capacidade de selecionar e copiar texto do seu front-end." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-misc-options-menu.php:107 +msgid "Enable Copy Protection" +msgstr "Habilitar proteção de cópia" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-misc-options-menu.php:110 +msgid "Check this if you want to disable the \"Right Click\", \"Text Selection\" and \"Copy\" option on the front end of your site." +msgstr "Marque esta opção se você deseja desativar o \"Clique Direito\", \"Seleção de Texto\" e a opção \"Copiar\" no front-end do seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-misc-options-menu.php:117 +msgid "Save Copy Protection Settings" +msgstr "Salvar configurações de proteção de cópia" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-misc-options-menu.php:141 +msgid "Frame Display Prevention feature settings saved!" +msgstr "Configurações de recursos de prevenção de exposição de quadro salvas!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-misc-options-menu.php:146 +msgid "Prevent Your Site From Being Displayed In a Frame" +msgstr "Impedir que o seu site seja exibido em um quadro" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-misc-options-menu.php:152 +msgid "This feature allows you to prevent other sites from displaying any of your content via a frame or iframe." +msgstr "Esse recurso permite que você impeça que outros sites de exibir qualquer um dos seus conteúdos através de um frame ou iframe." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-misc-options-menu.php:153 +msgid "When enabled, this feature will set the \"X-Frame-Options\" paramater to \"sameorigin\" in the HTTP header." +msgstr "Quando habilitado, esse recurso irá definir o parâmetro inválido \"X-Frame-Options\" para \"sameorigin\" no cabeçalho HTTP." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-misc-options-menu.php:158 +msgid "Enable iFrame Protection" +msgstr "Habilitar proteção iFrame" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-misc-options-menu.php:161 +msgid "Check this if you want to stop other sites from displaying your content in a frame or iframe." +msgstr "Marque esta opção se você deseja impedir que outros sites exiba seu conteúdo em um frame ou iframe." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-misc-options-menu.php:192 +msgid "Users Enumeration Prevention feature settings saved!" +msgstr "Configurações de recurso de prevenção de enumeração de usuários salvas!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-misc-options-menu.php:197 +msgid "Prevent Users Enumeration" +msgstr "Evitar enumeração de usuários" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-misc-options-menu.php:203 +msgid "This feature allows you to prevent external users/bots from fetching the user info with urls like \"/?author=1\"." +msgstr "Esse recurso permite-lhe evitar externas de usuários/robôs de buscar a informação do usuário com urls como \"/?author=1\"." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-misc-options-menu.php:204 +msgid "When enabled, this feature will print a \"forbidden\" error rather than the user information." +msgstr "Quando habilitado, esse recurso irá imprimir um erro \"proibido\", em vez das informações do usuário." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-misc-options-menu.php:209 +msgid "Disable Users Enumeration" +msgstr "Desabilitar enumeração de usuários" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-misc-options-menu.php:212 +msgid "Check this if you want to stop users enumeration." +msgstr "Marque esta opção se você deseja parar com a enumeração de usuários." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:26 +msgid "General Settings" +msgstr "Configurações gerais" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:29 +msgid "WP Meta Info" +msgstr "Informações de meta WP" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:30 +msgid "Import/Export" +msgstr "Importar / Exportar" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:98 +msgid "All the security features have been disabled successfully!" +msgstr "Todos os recursos de segurança foram desativados com sucesso!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:102 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:129 +msgid "Could not write to the .htaccess file. Please restore your .htaccess file manually using the restore functionality in the \".htaccess File\"." +msgstr "Não foi possível gravar no arquivo .htaccess. Por favor, restaure o arquivo .htaccess manualmente usando a funcionalidade de restauração do \"arquivo .htaccess\"." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:107 +msgid "Could not write to the wp-config.php. Please restore your wp-config.php file manually using the restore functionality in the \"wp-config.php File\"." +msgstr "Não foi possível escrever para o wp-config.php. Por favor, restaure o arquivo wp-config.php manualmente usando a funcionalidade de restauração do \"arquivo wp-config.php\"." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:125 +msgid "All firewall rules have been disabled successfully!" +msgstr "Todas as regras de firewall foram desativadas com sucesso!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:154 +msgid "WP Security Plugin" +msgstr "Plugin de segurança WP" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:156 +msgid "Thank you for using our WordPress security plugin. There are a lot of security features in this plugin." +msgstr "Obrigado por usar nosso plugin de segurança WordPress. Há muitas características de segurança neste plugin." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:157 +msgid "Go through each menu items and enable the security options to add more security to your site. Start by activating the basic features first." +msgstr "Passar por cada itens de menu e ativar as opções de segurança para adicionar mais segurança ao seu site. Comece ativando os recursos básicos em primeiro lugar." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:158 +msgid "It is a good practice to take a backup of your .htaccess file, database and wp-config.php file before activating the security features. This plugin has options that you can use to backup those resources easily." +msgstr "É uma boa prática para ter um backup do seu arquivo .htaccess, o arquivo de banco de dados e o wp-config.php antes de ativar os recursos de segurança. Este plugin possui opções que você pode usar para fazer backup desses recursos facilmente." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:161 +msgid "Backup your database" +msgstr "Fazer backup de seu banco de dados" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:162 +msgid "Backup .htaccess file" +msgstr "Fazer backup do arquivo .htaccess" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:163 +msgid "Backup wp-config.php file" +msgstr "Fazer backup do arquivo wp-config.php" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:170 +msgid "Disable Security Features" +msgstr "Desabilitar recursos de segurança" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:176 +msgid "If you think that some plugin functionality on your site is broken due to a security feature you enabled in this plugin, then use the following option to turn off all the security features of this plugin." +msgstr "Se você acha que algumas funcionalidades do plugin em seu site estão quebrado devido a um recurso de segurança que você habilitou neste plugin, então use a seguinte opção para desativar todos os recursos de segurança deste plugin." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:180 +msgid "Disable All Security Features" +msgstr "Desabilitar todos os recursos de segurança" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:187 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:197 +msgid "Disable All Firewall Rules" +msgstr "Desabilitar todas as regras de firewall" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:193 +msgid "This feature will disable all firewall rules which are currently active in this plugin and it will also delete these rules from your .htacess file. Use it if you think one of the firewall rules is causing an issue on your site." +msgstr "Este recurso irá desabilitar todas as regras de firewall que estão atualmente ativas neste plugin e também irá excluir essas regras do seu arquivo .htacess. Usá-lo, se você acha que uma das regras de firewall está causando um problema no seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:204 +msgid "Debug Settings" +msgstr "Configurações de depuração" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:210 +msgid "This setting allows you to enable/disable debug for this plugin." +msgstr "Essa configuração permite você ativar / desativar depuração para este plugin." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:216 +msgid "Enable Debug" +msgstr "Habilitar depuração" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:219 +msgid "Check this if you want to enable debug" +msgstr "Marque esta opção se você deseja habilitar depuração" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:223 +msgid "Save Debug Settings" +msgstr "Salvar configurações de depuração" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:252 +msgid "Your .htaccess file was successfully backed up! Using an FTP program go to the \"/wp-content/aiowps_backups\" directory to save a copy of the file to your computer." +msgstr "Seu backup do arquivo .htaccess foi feito com sucesso! Usando um programa de FTP vá para o diretório \"/wp-content/aiowps_backups\" para salvar uma cópia do arquivo em seu computador." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:258 +msgid "htaccess file rename failed during backup. Please check your root directory for the backup file using FTP." +msgstr "Renomeação do arquivo .htaccess falhou durante o backup. Por favor, verifique o diretório raiz do arquivo de backup usando FTP." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:264 +msgid "htaccess backup failed." +msgstr "Backup htaccess falhou." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:279 +msgid "Please choose a .htaccess to restore from." +msgstr "Por favor, escolha um .htaccess para restaurar." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:295 +msgid "htaccess file restore failed. Please attempt to restore the .htaccess manually using FTP." +msgstr "Restauração do arquivo .htaccess falhou. Por favor, tente restaurar o .htaccess manualmente usando FTP." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:299 +msgid "Your .htaccess file has successfully been restored!" +msgstr "Seu arquivo .htaccess foi restaurado com sucesso!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:305 +msgid "htaccess Restore operation failed! Please check the contents of the file you are trying to restore from." +msgstr "Operação de restauração htaccess falhou! Por favor, verifique o conteúdo do arquivo que você está tentando restaurar." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:311 +msgid ".htaccess File Operations" +msgstr "Operações do arquivo .htaccess" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:314 +msgid "Your \".htaccess\" file is a key component of your website's security and it can be modified to implement various levels of protection mechanisms." +msgstr "Seu arquivo \".htaccess\" é um componente essencial de segurança do seu site e pode ser modificado para implementar vários níveis de mecanismos de proteção." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:315 +msgid "This feature allows you to backup and save your currently active .htaccess file should you need to re-use the the backed up file in the future." +msgstr "Este recurso permite fazer backup e salvar o seu arquivo .htaccess atualmente ativo, caso haja necessidade de voltar a usar o arquivo de backup no futuro." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:316 +msgid "You can also restore your site's .htaccess settings using a backed up .htaccess file." +msgstr "Você também pode restaurar as configurações .htaccess do seu site usando um backup do arquivo .htaccess." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:330 +msgid "Save the current .htaccess file" +msgstr "Salvar o arquivo .htaccess atual" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:334 +msgid "Click the button below to backup and save the currently active .htaccess file." +msgstr "Clique no botão abaixo para fazer backup e salvar o arquivo .htaccess atualmente ativo." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:335 +msgid "Backup .htaccess File" +msgstr "Fazer backup do arquivo .htaccess" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:339 +msgid "Restore from a backed up .htaccess file" +msgstr "Restaurar backup de um arquivo .htaccess" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:345 +msgid ".htaccess file to restore from" +msgstr "Arquivo .htaccess para restaurar" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:351 +msgid "After selecting your file, click the button below to restore your site using the backed up htaccess file (htaccess_backup.txt)." +msgstr "Depois de selecionar o arquivo, clique no botão abaixo para restaurar seu site usando o backup do arquivo .htaccess (htaccess_backup.txt)." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:357 +msgid "Restore .htaccess File" +msgstr "Restaurar arquivo .htaccess" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:390 +msgid "Please choose a wp-config.php file to restore from." +msgstr "Por favor, escolha um arquivo wp-config.php para restaurar." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:406 +msgid "wp-config.php file restore failed. Please attempt to restore this file manually using FTP." +msgstr "Restauração do arquivo wp-config.php falhou. Por favor, tente restaurar este arquivo manualmente usando o FTP." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:410 +msgid "Your wp-config.php file has successfully been restored!" +msgstr "Seu arquivo wp-config.php foi restaurado com sucesso!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:416 +msgid "wp-config.php Restore operation failed! Please check the contents of the file you are trying to restore from." +msgstr "Operação de restauração wp-config.php falhou! Por favor, verifique o conteúdo do arquivo que você está tentando restaurar." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:422 +msgid "wp-config.php File Operations" +msgstr "Operações do arquivo wp-config.php" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:425 +msgid "Your \"wp-config.php\" file is one of the most important in your WordPress installation. It is a primary configuration file and contains crucial things such as details of your database and other critical components." +msgstr "Seu arquivo \"wp-config.php\" é um dos mais importantes em sua instalação do WordPress. É um arquivo de configuração principal e contém coisas cruciais, tais como detalhes de seu banco de dados e outros componentes críticos." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:426 +msgid "This feature allows you to backup and save your currently active wp-config.php file should you need to re-use the the backed up file in the future." +msgstr "Este recurso permite fazer backup e salvar o seu arquivo wp-config.php atualmente ativo, caso haja necessidade de voltar a usar o arquivo de backup no futuro." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:427 +msgid "You can also restore your site's wp-config.php settings using a backed up wp-config.php file." +msgstr "Você também pode restaurar as configurações wp-config.php do seu site usando um backup do arquivo wp-config.php." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:441 +msgid "Save the current wp-config.php file" +msgstr "Salvar o arquivo wp-config.php atual" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:445 +msgid "Click the button below to backup and download the contents of the currently active wp-config.php file." +msgstr "Clique no botão abaixo para fazer backup e transferir o conteúdo do arquivo wp-config.php atualmente ativo." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:446 +msgid "Backup wp-config.php File" +msgstr "Fazer backup do arquivo wp-config.php" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:451 +msgid "Restore from a backed up wp-config file" +msgstr "Restaurar backup de um arquivo wp-config" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:457 +msgid "wp-config file to restore from" +msgstr "Arquivo wp-config para restaurar" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:463 +msgid "After selecting your file click the button below to restore your site using the backed up wp-config file (wp-config.php.backup.txt)." +msgstr "Depois de selecionar o arquivo, clique no botão abaixo para restaurar seu site usando o backup do arquivo wp-config (wp-config.php.backup.txt)." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:469 +msgid "Restore wp-config File" +msgstr "Restaurar arquivo wp-config" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:508 +msgid "WP Generator Meta Tag" +msgstr "Gerador meta tag WP" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:511 +msgid "Wordpress generator automatically adds some meta information inside the \"head\" tags of every page on your site's front end. Below is an example of this:" +msgstr "Gerador WordPress adiciona automaticamente algumas informações de meta dentro das tags \"head\" de cada página em front-end do seu site. Abaixo está um exemplo disso:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:513 +msgid "The above meta information shows which version of WordPress your site is currently running and thus can help hackers or crawlers scan your site to see if you have an older version of WordPress or one with a known exploit." +msgstr "As informações de meta acima mostram qual versão do WordPress, seu site está atualmente em execução e, portanto, pode ajudar hackers ou rastreadores analisar o seu site para ver se você tem uma versão antiga do WordPress ou um com uma exploração conhecida." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:514 +msgid "This feature will allow you to remove the WP generator meta info from your site's pages." +msgstr "Este recurso permitirá que você remova o gerador WP meta informações de páginas do seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:520 +msgid "WP Generator Meta Info" +msgstr "Gerador de informações de meta WP" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:532 +msgid "Remove WP Generator Meta Info" +msgstr "Remover gerador de informações de meta WP" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:535 +msgid "Check this if you want to remove the meta info produced by WP Generator from all pages" +msgstr "Marque esta opção, se você deseja remover as informações de meta produzido pelo Gerador WP de todas as páginas" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:565 +msgid "Please choose a file to import your settings from." +msgstr "Por favor, escolha um arquivo para importar suas definições." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:597 +msgid "Import AIOWPS settings from " +msgstr "Importar configurações AIOWPS de " + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:603 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:647 +msgid "The deletion of the import file failed. Please delete this file manually via the media menu for security purposes." +msgstr "A exclusão do arquivo de importação falhou. Por favor, apague este arquivo manualmente através do menu de mídia para fins de segurança." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:605 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:649 +msgid "The file you uploaded was also deleted for security purposes because it contains security settings details." +msgstr "O arquivo que você carregou também foi excluído para fins de segurança, pois ele contém detalhes de configurações de segurança." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:620 +msgid "Your AIOWPS settings were successfully imported via file input." +msgstr "Suas configurações AIOWPS foram importadas com sucesso através do arquivo de entrada." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:621 +msgid "The deletion of the import file failed. Please delete this file manually via the media menu for security purposes because it contains security settings details." +msgstr "A exclusão do arquivo de importação falhou. Por favor, apague este arquivo manualmente através do menu de mídia para fins de segurança, pois ele contém detalhes de configurações de segurança." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:623 +msgid "Your AIOWPS settings were successfully imported. The file you uploaded was also deleted for security purposes because it contains security settings details." +msgstr "Suas configurações AIOWPS foram importadas com sucesso. O arquivo que você carregou também foi excluído para fins de segurança, pois ele contém detalhes de configurações de segurança." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:626 +msgid "Your AIOWPS settings were successfully imported via text entry." +msgstr "Suas configurações AIOWPS foram importadas com sucesso através de entrada de texto." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:641 +msgid "The contents of your settings file appear invalid. Please check the contents of the file you are trying to import settings from." +msgstr "O conteúdo do seu arquivo de configurações aparece inválido. Por favor, verifique o conteúdo do arquivo que você está tentando importar configurações de." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:658 +msgid "Export or Import Your AIOWPS Settings" +msgstr "Exportar ou Importar suas configurações AIOWPS" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:661 +msgid "This section allows you to export or import your All In One WP Security & Firewall settings." +msgstr "Esta seção permite-lhe exportar ou importar suas configurações de All In One WP Security e Firewall" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:662 +msgid "This can be handy if you wanted to save time by applying the settings from one site to another site." +msgstr "Isto pode ser útil se você quiser economizar tempo aplicando as configurações de um site para outro site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:663 +msgid "NOTE: Before importing, it is your responsibility to know what settings you are trying to import. Importing settings blindly can cause you to be locked out of your site." +msgstr "Antes de importar, é sua responsabilidade saber quais configurações que você está tentando importar. Importando configurações cegamente pode causar-lhe ser trancado para fora de seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:664 +msgid "For Example: If a settings item relies on the domain URL then it may not work correctly when imported into a site with a different domain." +msgstr "Por exemplo: se um item de configurações depende do domínio URL, então pode não funcionar corretamente quando importado para um site com um domínio diferente." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:670 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:679 +msgid "Export AIOWPS Settings" +msgstr "Exportar configurações AIOWPS" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:676 +msgid "To export your All In One WP Security & Firewall settings click the button below." +msgstr "Para exportar as configurações All In One WP Security e Firewall, clique no botão abaixo." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:683 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:708 +msgid "Import AIOWPS Settings" +msgstr "Importar configurações AIOWPS" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:689 +msgid "Use this section to import your All In One WP Security & Firewall settings from a file. Alternatively, copy/paste the contents of your import file into the textarea below." +msgstr "Use esta seção para importar as configurações de All In One WP Security e Firewall de um arquivo. Alternativamente, copiar / colar o conteúdo do seu arquivo de importação para a área de texto abaixo." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:690 +msgid "Import File" +msgstr "Importar arquivo" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:696 +msgid "After selecting your file, click the button below to apply the settings to your site." +msgstr "Depois de selecionar o arquivo, clique no botão abaixo para aplicar as configurações para o seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-settings-menu.php:702 +msgid "Copy/Paste Import Data" +msgstr "Copiar/Colar dados de importação" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:24 +msgid "Comment SPAM" +msgstr "SPAM de comentário" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:25 +msgid "Comment SPAM IP Monitoring" +msgstr "Monitoramento de IP SPAM de comentário" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:26 +msgid "BuddyPress" +msgstr "BuddyPress" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:114 +msgid "Comment SPAM Settings" +msgstr "Configurações de SPAM de comentário" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:119 +msgid "Add Captcha To Comments Form" +msgstr "Adicionar captcha para formulário de comentários" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:123 +msgid "This feature will add a simple math captcha field in the WordPress comments form." +msgstr "Este recurso irá adicionar um campo de matemática captcha simples no formulário de comentários do WordPress." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:124 +msgid "Adding a captcha field in the comment form is a simple way of greatly reducing SPAM comments from bots without using .htaccess rules." +msgstr "Adicionando um campo de captcha no formulário de comentário é uma maneira simples de reduzir grandemente SPAM de comentários de robôs sem usar regras .htaccess." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:133 +msgid "Enable Captcha On Comment Forms" +msgstr "Habilitar captcha em formulários de comentário" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:136 +msgid "Check this if you want to insert a captcha field on the comment forms" +msgstr "Marque esta opção se você deseja inserir um campo captcha em formulários o comentário" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:143 +msgid "Block Spambot Comments" +msgstr "Bloquear comentários spambot" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:147 +msgid "A large portion of WordPress blog comment SPAM is mainly produced by automated bots and not necessarily by humans. " +msgstr "Uma grande parcela de comentário de blog WordPress SPAM é produzida principalmente por robôs automatizados e não necessariamente por seres humanos." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:148 +msgid "This feature will greatly minimize the useless and unecessary traffic and load on your server resulting from SPAM comments by blocking all comment requests which do not originate from your domain." +msgstr "Este recurso irá minimizar consideravelmente o tráfego e carga inútil e desnecessário em seu servidor, resultante de comentários de spam, bloqueando todas as solicitações de comentário que não são originários do seu domínio." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:149 +msgid "In other words, if the comment was not submitted by a human who physically submitted the comment on your site, the request will be blocked." +msgstr "Em outras palavras, se o comentário não foi enviado por um ser humano que fisicamente apresentou o comentário em seu site, a solicitação será bloqueada." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:165 +msgid "Block Spambots From Posting Comments" +msgstr "Bloquear spambots de publicar comentários" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:168 +msgid "Check this if you want to apply a firewall rule which will block comments originating from spambots." +msgstr "Marque esta opção se você deseja aplicar uma regra de firewall que irá bloquear comentários provenientes de spambots." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:172 +msgid "This feature will implement a firewall rule to block all comment attempts which do not originate from your domain." +msgstr "Este recurso irá implementar uma regra de firewall para bloquear todas as tentativas de comentário que não são originários do seu domínio." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:173 +msgid "A legitimate comment is one which is submitted by a human who physically fills out the comment form and clicks the submit button. For such events, the HTTP_REFERRER is always set to your own domain." +msgstr "Um comentário legítimo é aquele que é enviado por um ser humano que fisicamente preenche o formulário de comentário e clica no botão enviar. Para tais eventos, a HTTP_REFERRER é sempre definido para seu próprio domínio." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:174 +msgid "A comment submitted by a spambot is done by directly calling the comments.php file, which usually means that the HTTP_REFERRER value is not your domain and often times empty." +msgstr "Um comentário enviado por um spambot é feito chamando diretamente o arquivo comments.php, que geralmente significa que o valor HTTP_REFERRER não é o seu domínio e muitas vezes vazio." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:175 +msgid "This feature will check and block comment requests which are not referred by your domain thus greatly reducing your overall blog SPAM and PHP requests done by the server to process these comments." +msgstr "Esta função irá verificar e bloquear solicitações de comentário que não são referidos por seu domínio reduzindo assim significativamente as suas solicitações globais do blog de SPAM e PHP feito pelo servidor para processar esses comentários." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:210 +msgid "You entered a non numeric value for the minimum number of spam comments field. It has been set to the default value." +msgstr "Você digitou um valor não numérico para o número mínimo de campo de comentários de spam. Foi definido como o valor padrão." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:213 +msgid "You must enter an integer greater than zero for minimum number of spam comments field. It has been set to the default value." +msgstr "Você deve digitar um número inteiro maior que zero para o número mínimo de campo de comentários de spam. Foi definido como o valor padrão." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:242 +msgid "Nonce check failed for list SPAM comment IPs!" +msgstr "Verificação núncio falhou para a lista de SPAM de comentários IPs!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:248 +msgid "You entered a non numeric value for the minimum SPAM comments per IP field. It has been set to the default value." +msgstr "Você digitou um valor não numérico para os comentários mínimos SPAM por campo IP. Foi definido como o valor padrão." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:260 +#, php-format +msgid "Displaying results for IP addresses which have posted a minimum of %s SPAM comments" +msgstr "Mostrar resultados para endereços IP, que postaram um mínimo de %s SPAM de comentários" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:275 +msgid "Auto Block SPAMMER IPs" +msgstr "Bloquear automaticamente IPs SPAMMER" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:280 +#, php-format +msgid "This feature has detected that %s is not active. It is highly recommended that you activate the Akismet plugin to make the most of this feature." +msgstr "Esse recurso detectou que o %s não está ativo. É altamente recomendável que você ative o plugin Akismet para aproveitar ao máximo este recurso." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:289 +msgid "This feature allows you to automatically and permanently block IP addresses which have exceeded a certain number of comments labelled as SPAM." +msgstr "Esse recurso permite que você automaticamente e permanentemente bloquear endereços IP que tenham ultrapassado um determinado número de comentários marcados como SPAM." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:290 +msgid "Comments are usually labelled as SPAM either by the Akismet plugin or manually by the WP administrator when they mark a comment as \"spam\" from the WordPress Comments menu." +msgstr "Comentários são geralmente marcados como SPAM pelo plugin Akismet ou manualmente pelo administrador do WP quando eles marcar um comentário como \"spam\" no menu comentários do WordPress." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:304 +msgid "You currently have no IP addresses permanently blocked due to SPAM." +msgstr "Atualmente você não tem endereços IP permanentemente bloqueados devido à SPAM." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:317 +msgid "Spammer IPs Added To Permanent Block List Today: " +msgstr "IPs spammer adicionado a lista de bloqueios permanente hoje: " + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:318 +msgid "All Time Total: " +msgstr "Total de todo tempo: " + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:319 +msgid "View Blocked IPs" +msgstr "Ver IPs bloqueados" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:332 +msgid "Enable Auto Block of SPAM Comment IPs" +msgstr "Ativar o bloqueio automático de IPs de comentário SPAM" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:335 +msgid "Check this box if you want this plugin to automatically block IP addresses which submit SPAM comments." +msgstr "Marque esta caixa se você deseja que este plugin para bloquear automaticamente endereços IP que apresentem comentários SPAM." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:339 +msgid "Minimum number of SPAM comments" +msgstr "Número mínimo de comentários SPAM" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:341 +msgid "Specify the minimum number of SPAM comments for an IP address before it is permanently blocked." +msgstr "Especifica o número mínimo de comentários SPAM para um endereço IP antes que seja permanentemente bloqueado." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:345 +msgid "Example 1: Setting this value to \"1\" will block ALL IP addresses which were used to submit at least one SPAM comment." +msgstr "Exemplo 1: Definir esse valor para \"1\" irá bloquear todos os endereços IP que foram usados ​​para enviar pelo menos um comentário SPAM." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:346 +msgid "Example 2: Setting this value to \"5\" will block only those IP addresses which were used to submit 5 SPAM comments or more on your site." +msgstr "Exemplo 2: Definir esse valor para \"5\" irá bloquear apenas os endereços IP que foram usados ​​para enviar 5 comentários SPAM ou mais em seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:364 +msgid "List SPAMMER IP Addresses" +msgstr "Lista de endereços IP SPAMMER" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:368 +msgid "This section displays a list of the IP addresses of the people or bots who have left SPAM comments on your site." +msgstr "Esta seção exibe uma lista dos endereços IP das pessoas ou robôs que deixaram comentários SPAM em seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:369 +msgid "This information can be handy for identifying the most persistent IP addresses or ranges used by spammers." +msgstr "Esta informação pode ser útil para identificar os endereços IP mais persistentes ou intervalos usados ​​por spammers." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:370 +msgid "By inspecting the IP address data coming from spammers you will be in a better position to determine which addresses or address ranges you should block by adding them to your blacklist." +msgstr "Ao inspecionar os dados de endereço IP provenientes de remetentes de spam, você estará em melhor posição para determinar quais endereços ou intervalos de endereços que você deve bloquear, adicionando-os à sua lista negra." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:371 +msgid "" +"To add one or more of the IP addresses displayed in the table below to your blacklist, simply click the \"Block\" link for the individual row or select more than one address\n" +" using the checkboxes and then choose the \"block\" option from the Bulk Actions dropdown list and click the \"Apply\" button." +msgstr "" +"Para adicionar um ou mais dos endereços IP exibidos na tabela abaixo para a sua lista negra, basta clicar no link \"Bloquear\" para a linha individual ou selecionar mais de um endereço\n" +" usando as caixas de seleção e, em seguida, escolha a opção \"bloquear\" na lista suspensa ações em massa e clique no botão \"Aplicar\"." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:381 +msgid "Minimum number of SPAM comments per IP" +msgstr "Número mínimo de comentários SPAM por IP" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:383 +msgid "This field allows you to list only those IP addresses which have been used to post X or more SPAM comments." +msgstr "Este campo permite listar apenas os endereços IP que foram usados ​​para postar X ou mais comentários SPAM." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:387 +msgid "Example 1: Setting this value to \"0\" or \"1\" will list ALL IP addresses which were used to submit SPAM comments." +msgstr "Exemplo 1: Definir esse valor para \"0\" ou \"1\" irá listar todos os endereços IP que foram usados ​​para enviar comentários SPAM." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:388 +msgid "Example 2: Setting this value to \"5\" will list only those IP addresses which were used to submit 5 SPAM comments or more on your site." +msgstr "Exemplo 2: Definir esse valor para \"5\" irá listar apenas os endereços IP que foram usados ​​para enviar 5 comentários SPAM ou mais em seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:395 +msgid "Find IP Addresses" +msgstr "Encontrar endereços IP" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:399 +msgid "SPAMMER IP Address Results" +msgstr "Resultados de endereço IP SPAMMER" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:405 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-utility.php:177 +msgid "The plugin has detected that you are using a Multi-Site WordPress installation." +msgstr "O plugin detectou que você está usando uma instalação de WordPress Multi site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:406 +msgid "Only the \"superadmin\" can block IP addresses from the main site." +msgstr "Somente o \"super administrador\" pode bloquear endereços IP a partir do site principal." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:407 +msgid "Take note of the IP addresses you want blocked and ask the superadmin to add these to the blacklist using the \"Blacklist Manager\" on the main site." +msgstr "Tome nota dos endereços IP que deseja bloquear e pedir ao super administrador para adicioná-los à lista negra usando o \"Gerenciador de lista negra\" no site principal." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:452 +msgid "BuddyPress SPAM Settings" +msgstr "Configurações de SPAM BuddyPress" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:457 +msgid "Add Captcha To BuddyPress Registration Form" +msgstr "Adicionar captcha para formulário de registro BuddyPress" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:461 +msgid "This feature will add a simple math captcha field in the BuddyPress registration form." +msgstr "Este recurso irá adicionar um campo de matemática captcha simples no formulário de inscrição BuddyPress." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:462 +msgid "Adding a captcha field in the registration form is a simple way of greatly reducing SPAM signups from bots without using .htaccess rules." +msgstr "Adicionando um campo de captcha no formulário de inscrição é uma maneira simples de reduzir grandemente inscrições SPAM de robôs sem usar regras .htaccess." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:472 +msgid "Enable Captcha On BuddyPress Registration Form" +msgstr "Habilitar captcha no formulário de registro BuddyPress" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:475 +msgid "Check this if you want to insert a captcha field on the BuddyPress registration forms" +msgstr "Marque esta opção se você deseja inserir um campo captcha no formulários de registro BuddyPress" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-spam-menu.php:484 +msgid "BuddyPress is not active! In order to use this feature you will need to have BuddyPress installed and activated." +msgstr "BuddyPress não está ativo! Para utilizar este recurso, você precisará ter o BuddyPress instalado e ativado." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:29 +msgid "WP Username" +msgstr "Nome de usuário WP" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:30 +msgid "Display Name" +msgstr "Nome de exibição" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:31 +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:915 +msgid "Password" +msgstr "Senha" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:86 +msgid "Admin User Security" +msgstr "Segurança do usuário administrador" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:89 +msgid "By default, WordPress sets the administrator username to \"admin\" at installation time." +msgstr "Por padrão, o WordPress define o nome do usuário administrador para \"admin\" no momento da instalação." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:90 +msgid "A lot of hackers try to take advantage of this information by attempting \"Brute Force Login Attacks\" where they repeatedly try to guess the password by using \"admin\" for username." +msgstr "Um monte de hackers tentam tirar proveito desta informação pela tentativa \"Ataques Acesso de Força Bruta\" onde eles repetidamente tentam adivinhar a senha usando \"admin\" para o nome de usuário." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:91 +msgid "From a security perspective, changing the default \"admin\" user name is one of the first and smartest things you should do on your site." +msgstr "Numa perspectiva de segurança, alterar o nome de usuário padrão \"admin\" é uma das primeiras e mais inteligentes coisas que você deve fazer em seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:92 +msgid "This feature will allow you to change your default \"admin\" user name to a more secure name of your choosing." +msgstr "Este recurso permitirá que você altere seu nome de usuário \"admin\" padrão para um nome mais seguro de sua escolha." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:99 +msgid "List of Administrator Accounts" +msgstr "Lista de contas de administrador" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:108 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:36 +msgid "Change Admin Username" +msgstr "Alterar nome de usuário admin" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:116 +msgid "" +"Your site currently has an account which uses the default \"admin\" username. \n" +" It is highly recommended that you change this name to something else. \n" +" Use the following field to change the admin username." +msgstr "" +"Seu site tem atualmente uma conta que usa o nome de usuário padrão \"admin\".\n" +" É altamente recomendável que você altere esse nome para algo mais seguro. \n" +" Use o campo a seguir para alterar o nome de usuário admin." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:124 +msgid "New Admin Username" +msgstr "Novo nome de usuário admin" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:126 +msgid "Choose a new username for admin." +msgstr "Escolha um novo nome de usuário para o administrador." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:130 +msgid "Change Username" +msgstr "Alterar nome de usuário" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:132 +msgid "NOTE: If you are currently logged in as \"admin\" you will be automatically logged out after changing your username and will be required to log back in." +msgstr "NOTA: Se você está conectado no momento como \"admin\" você será automaticamente desconectado depois de mudar seu nome de usuário e será necessário fazer login novamente." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:139 +msgid "No action required! " +msgstr "Nenhuma ação necessária! " + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:141 +msgid "Your site does not have any account which uses the default \"admin\" username. " +msgstr "Seu site não tem qualquer conta que usa o nome de usuário padrão \"admin\"." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:142 +msgid "This is good security practice." +msgstr "Esta é uma boa prática de segurança." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:154 +msgid "Display Name Security" +msgstr "Segurança do nome de exibição" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:157 +msgid "When you submit a post or answer a comment, WordPress will usually display your \"nickname\"." +msgstr "Quando você envia uma mensagem ou responde a um comentário, o WordPress normalmente exibirá o seu \"apelido\"." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:158 +msgid "By default the nickname is set to the login (or user) name of your account." +msgstr "Por padrão, o apelido é definido para o nome de login (ou usuário) da sua conta." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:159 +msgid "From a security perspective, leaving your nickname the same as your user name is bad practice because it gives a hacker at least half of your account's login credentials." +msgstr "De uma perspectiva de segurança, deixar seu apelido o mesmo que seu nome de usuário é uma prática ruim, porque dá um hacker pelo menos metade das credenciais de login da sua conta." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:160 +msgid "Therefore to further tighten your site's security you are advised to change your nickname and Display name to be different from your Username." +msgstr "Portanto, para apertar ainda mais a segurança do seu site você é aconselhado a alterar o seu apelido e nome de exibição para ser diferente do seu nome de usuário." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:166 +msgid "Modify Accounts With Identical Login Name & Display Name" +msgstr "Modificar contas com nome de login e nome de exibição idêntico" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:175 +msgid "Your site currently has the following accounts which have an identical login name and display name." +msgstr "Seu site tem atualmente as seguintes contas que têm um nome de login e nome de exibição idêntico." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:176 +msgid "Click on the link to edit the settings of that particular user account" +msgstr "Clique no link para editar as configurações de determinada conta de usuário" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:191 +msgid "No action required." +msgstr "Nenhuma ação necessária." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:192 +msgid "Your site does not have a user account where the display name is identical to the username." +msgstr "Seu site não tem uma conta de usuário onde o nome de exibição é idêntico ao nome de usuário." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:203 +msgid "Password Tool" +msgstr "Ferramenta de senha" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:206 +msgid "Poor password selection is one of the most common weak points of many sites and is usually the first thing a hacker will try to exploit when attempting to break into your site." +msgstr "Seleção de senha pobres é um dos pontos fracos mais comuns de muitos sites, e é geralmente a primeira coisa que um hacker vai tentar explorar ao tentar entrar no seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:207 +msgid "Many people fall into the trap of using a simple word or series of numbers as their password. Such a predictable and simple password would take a competent hacker merely minutes to guess your password by using a simple script which cycles through the easy and most common combinations." +msgstr "Muitas pessoas caem na armadilha de usar uma palavra simples ou uma série de números como sua senha. Uma senha tão previsível e simples levaria um hacker competente apenas minutos para adivinhar sua senha usando um script simples que percorre as combinações mais comuns e fácil." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:208 +msgid "The longer and more complex your password is the harder it is for hackers to \"crack\" because more complex passwords require much greater computing power and time." +msgstr "O mais longo e mais complexo sua senha é o mais difícil é para os hackers \"crack\" porque as senhas mais complexas exigem muito maior poder de computação e tempo." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:209 +msgid "This section contains a useful password strength tool which you can use to check whether your password is sufficiently strong enough." +msgstr "Esta seção contém uma ferramenta de força de senha útil que você pode usar para verificar se sua senha é suficientemente forte o suficiente." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:214 +msgid "Password Strength Tool" +msgstr "Ferramenta de força de senha" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:219 +msgid "Start typing a password." +msgstr "Comece a digitar uma senha." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:222 +msgid "It would take a desktop PC approximately" +msgstr "Demora aproximadamente um PC desktop" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:223 +msgid "1 sec" +msgstr "1 segundo" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:223 +msgid "to crack your password!" +msgstr "para quebrar sua senha!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:228 +msgid "Password Strength" +msgstr "Força da senha" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:244 +msgid "Nonce check failed on admin username change operation!" +msgstr "Verificação núncio falhou na operação de alteração do nome de usuário admin!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:251 +msgid "Username " +msgstr "Nome de usuário " + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:251 +msgid " already exists. Please enter another value. " +msgstr " já existe. Por favor, digite outro valor. " + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:267 +msgid "The database update operation of the user account failed!" +msgstr "Falha na operação de atualização do banco de dados da conta de usuário!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:296 +msgid "You entered an invalid username. Please enter another value. " +msgstr "Você digitou um nome de usuário inválido. Por favor, digite outro valor." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:300 +msgid "Please enter a value for your username. " +msgstr "Por favor, digite o seu nome de usuário." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:307 +msgid "Username Successfully Changed!" +msgstr "Nome de usuário alterado com sucesso!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-accounts-menu.php:327 +msgid "Account Login Name" +msgstr "Nome de login de conta" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:26 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:298 +msgid "Failed Login Records" +msgstr "Registros de falhas de login" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:27 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:51 +msgid "Force Logout" +msgstr "Forçar saída" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:28 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:432 +msgid "Account Activity Logs" +msgstr "Logs de atividade de conta" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:97 +msgid "You entered a non numeric value for the max login attempts field. It has been set to the default value." +msgstr "Você digitou um valor não numérico para o campo de tentativas de login máximo. Foi definido como o valor padrão." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:104 +msgid "You entered a non numeric value for the login retry time period field. It has been set to the default value." +msgstr "Você digitou um valor não numérico para o campo período de tempo de repetição do login. Foi definido como o valor padrão." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:160 +msgid "Login Lockdown Configuration" +msgstr "Configurações de bloqueio de login" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:164 +msgid "One of the ways hackers try to compromise sites is via a " +msgstr "Uma das maneiras que hackers tentam comprometer sites é através de um " + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:164 +msgid "Brute Force Login Attack" +msgstr "Ataque de Login de Força Bruta" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:165 +msgid "This is where attackers use repeated login attempts until they guess the password." +msgstr "Isto é onde os atacantes usam tentativas de login repetidos até eles adivinhar a senha." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:166 +msgid "Apart from choosing strong passwords, monitoring and blocking IP addresses which are involved in repeated login failures in a short period of time is a very effective way to stop these types of attacks." +msgstr "Além de escolher senhas fortes, monitoramento e bloqueio de endereços IP que estão envolvidos em falhas de login repetidos em um curto período de tempo é uma maneira muito eficaz de parar esses tipos de ataques." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:167 +#, php-format +msgid "You may also want to checkout our %s feature for another secure way to protect against these types of attacks." +msgstr "Você também pode querer fazer o check-out em nosso recurso de %s para uma outra forma segura de proteger contra esses tipos de ataques." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:172 +msgid "Login Lockdown Options" +msgstr "Opções de bloqueio de login" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:183 +msgid "Enable Login Lockdown Feature" +msgstr "Habilitar recurso de bloqueio de login" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:186 +msgid "Check this if you want to enable the login lockdown feature and apply the settings below" +msgstr "Marque esta opção se você deseja ativar o recurso de bloqueio de login e aplicar as configurações abaixo" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:190 +msgid "Allow Unlock Requests" +msgstr "Permite desbloquear pedidos" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:193 +msgid "Check this if you want to allow users to generate an automated unlock request link which will unlock their account" +msgstr "Marque esta opção se você deseja permitir que os usuários para gerar um link de solicitação de desbloqueio automático que irá desbloquear as suas contas" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:197 +msgid "Max Login Attempts" +msgstr "Tentativas de login máximo" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:199 +msgid "Set the value for the maximum login retries before IP address is locked out" +msgstr "Defina o valor para o número máximo de tentativas de login antes de endereço IP está bloqueado" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:203 +msgid "Login Retry Time Period (min)" +msgstr "Período de tempo (min) para fazer login novamente" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:205 +msgid "If the maximum number of failed login attempts for a particular IP address occur within this time period the plugin will lock out that address" +msgstr "Se o número máximo de tentativas de login para um determinado endereço IP ocorrer dentro deste período de tempo o plugin irá bloquear esse endereço" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:209 +msgid "Time Length of Lockout (min)" +msgstr "Tempo de duração do bloqueio (min)" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:211 +msgid "Set the length of time for which a particular IP address will be prevented from logging in" +msgstr "Defina o período de tempo durante o qual um determinado endereço IP será impedido de efetuar login" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:215 +msgid "Display Generic Error Message" +msgstr "Exibir mensagem de erro genérico" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:218 +msgid "Check this if you want to show a generic error message when a login attempt fails" +msgstr "Marque esta opção se deseja mostrar uma mensagem de erro genérico quando uma tentativa de login falhar" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:222 +msgid "Instantly Lockout Invalid Usernames" +msgstr "Bloquear instantaneamente nome de usuário inválido" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:225 +msgid "Check this if you want to instantly lockout login attempts with usernames which do not exist on your system" +msgstr "Marque esta opção se você deseja instantaneamente o bloqueio de tentativas de login com nomes de usuários que não existem em seu sistema" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:230 +msgid "Notify By Email" +msgstr "Notificar por e-mail" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:233 +msgid "Check this if you want to receive an email when someone has been locked out due to maximum failed login attempts" +msgstr "Marque esta opção se você deseja receber um e-mail quando alguém foi bloqueado devido a tentativas máximas na falha de login" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:243 +msgid "Currently Locked Out IP Address Ranges" +msgstr "Atualmente bloqueado intervalos de endereços IP" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:248 +#, php-format +msgid "To see a list of all locked IP addresses and ranges go to the %s tab in the dashboard menu." +msgstr "Para ver uma lista de todos os endereços IP bloqueados e intervalos ir para a aba %s no menu do painel." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:264 +msgid "Nonce check failed for delete all failed login records operation!" +msgstr "Verificação núncio falhou para operação de exclusão de todos os registros de login com falha!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:273 +msgid "User Login Feature - Delete all failed login records operation failed!" +msgstr "Recurso de login de usuário - Excluir todas as falhas de operação de registros de falhas de login!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:277 +msgid "All records from the Failed Logins table were deleted successfully!" +msgstr "Todos os registros da tabela falhas de logins foram excluídos com sucesso!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:292 +msgid "This tab displays the failed login attempts for your site." +msgstr "Essa guia exibe as tentativas de login para o seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:293 +msgid "The information below can be handy if you need to do security investigations because it will show you the IP range, username and ID (if applicable) and the time/date of the failed login attempt." +msgstr "As informações abaixo podem ser útil se você precisa fazer investigações de segurança porque ele lhe mostrará o intervalo de IP, nome de usuário e ID (se aplicável) e a hora/data da falha de tentativa de login." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:314 +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:323 +msgid "Delete All Failed Login Records" +msgstr "Excluir todos os registros de falha de login" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:320 +msgid "Click this button if you wish to delete all failed login records in one go." +msgstr "Clique nesse botão se você deseja excluir todos os registros de falhas de login de uma só vez." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:348 +msgid "You entered a non numeric value for the logout time period field. It has been set to the default value." +msgstr "Você digitou um valor não numérico para o campo de período de tempo de saída. Foi definido como o valor padrão." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:376 +msgid "Setting an expiry period for your WP administration session is a simple way to protect against unauthorized access to your site from your computer." +msgstr "Definir um período de expiração para a sessão de administração do WP é uma maneira simples para proteger contra o acesso não autorizado ao seu site a partir do seu computador." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:377 +msgid "This feature allows you to specify a time period in minutes after which the admin session will expire and the user will be forced to log back in." +msgstr "Este recurso permite que você especifique um período de tempo em minutos, após o qual a sessão de administração irá expirar e o usuário será forçado a voltar a iniciar sessão." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:382 +msgid "Force User Logout Options" +msgstr "Opções de saída do usuário à força" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:394 +msgid "Enable Force WP User Logout" +msgstr "Habilitar saída do usuário WP à força" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:397 +msgid "Check this if you want to force a wp user to be logged out after a configured amount of time" +msgstr "Marque esta opção se você deseja forçar um usuário wp a ser desconectado após um período de tempo configurado" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:401 +msgid "Logout the WP User After XX Minutes" +msgstr "Desconectar usuário WP após XX minutos" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:403 +msgid "(Minutes) The user will be forced to log back in after this time period has elapased." +msgstr "(Minutos) O usuário será obrigado a efetuar login novamente após este período de tempo tem passado." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:426 +msgid "This tab displays the login activity for WordPress admin accounts registered with your site." +msgstr "Esta guia exibe a atividade de login para contas de administração do WordPress registrados com o seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:427 +msgid "The information below can be handy if you need to do security investigations because it will show you the last 50 recent login events by username, IP address and time/date." +msgstr "As informações abaixo podem ser útil se você precisa fazer investigações de segurança porque ele vai te mostrar os últimas 50 recentes login eventos por nome de usuário, endereço IP e data / hora." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:470 +msgid "Nonce check failed for users logged in list!" +msgstr "Verificação núncio falhou para lista de usuários conectados!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:478 +msgid "Refresh Logged In User Data" +msgstr "Atualizar dados de usuários conectados" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:482 +msgid "Refresh Data" +msgstr "Atualizar dados" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:488 +msgid "This tab displays all users who are currently logged into your site." +msgstr "Essa guia exibe todos os usuários que estão atualmente conectados no seu site." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:489 +msgid "If you suspect there is a user or users who are logged in which should not be, you can block them by inspecting the IP addresses from the data below and adding them to your blacklist." +msgstr "Se você suspeitar que há um ou mais usuários que estão conectados que não deve ser, você pode bloqueá-los inspecionando os endereços IP a partir dos dados abaixo e adicioná-los à sua lista negra." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:490 +msgid "You can also instantly log them out by clicking on the \"Force Logout\" link when you hover over the row in the User Id column." +msgstr "Você também pode imediatamente desconecta-los clicando no link \"Força Saída\" quando você passa o mouse sobre a linha na coluna Id do usuário." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:495 +msgid "Currently Logged In Users" +msgstr "Usuários atualmente conectados" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:562 +msgid "The selected records were deleted successfully!" +msgstr "Os registros selecionados foram excluídos com sucesso!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-login-menu.php:572 +msgid "The selected record was deleted successfully!" +msgstr "O registro selecionado foi excluído com sucesso!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-registration-menu.php:23 +msgid "Manual Approval" +msgstr "Aprovação manual" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-registration-menu.php:24 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:57 +msgid "Registration Captcha" +msgstr "Captcha em registro" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-registration-menu.php:113 +msgid "User Registration Settings" +msgstr "Configurações de registro de usuários" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-registration-menu.php:117 +msgid "Manually Approve New Registrations" +msgstr "Aprovar manualmente novos registros" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-registration-menu.php:121 +msgid "If your site allows people to create their own accounts via the WordPress registration form, then you can minimize SPAM or bogus registrations by manually approving each registration." +msgstr "Se o seu site permite que as pessoas criem suas próprias contas, através do formulário de inscrição WordPress, então você pode minimizar SPAM ou registros falsos, aprovando manualmente cada registro." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-registration-menu.php:122 +msgid "This feature will automatically set a newly registered account to \"pending\" until the administrator activates it. Therefore undesirable registrants will be unable to log in without your express approval." +msgstr "Este recurso irá definir automaticamente uma conta recém registrada para \"pendente\" até que o administrador a ative. Portanto inscritos indesejáveis ​​não serão capazes de entrar sem a sua autorização expressa." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-registration-menu.php:123 +msgid "You can view all accounts which have been newly registered via the handy table below and you can also perform bulk activation/deactivation/deletion tasks on each account." +msgstr "Você pode ver todas as contas que foram recentemente registradas através da tabela acessível abaixo e você também pode executar tarefas de ativação / desativação / exclusão em massa em cada conta." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-registration-menu.php:139 +msgid "Enable manual approval of new registrations" +msgstr "Habilitar aprovação manual de novos registros" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-registration-menu.php:142 +msgid "Check this if you want to automatically disable all newly registered accounts so that you can approve them manually." +msgstr "Marque esta opção se você deseja desabilitar automaticamente todas as contas recém registradas de modo que você possa aprová-las manualmente." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-registration-menu.php:151 +msgid "Approve Registered Users" +msgstr "Aprovar os usuários registrados" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-registration-menu.php:196 +msgid "This feature allows you to add a captcha form on the WordPress registration page." +msgstr "Este recurso permite que você adicione uma formulário captcha na página de registro WordPress." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-registration-menu.php:197 +msgid "Users who attempt to register will also need to enter the answer to a simple mathematical question - if they enter the wrong answer, the plugin will not allow them to register." +msgstr "Usuários que tentam registrar também precisará digitar a resposta a uma simples questão de matemática - se entrarem com a resposta errada, o plugin não irá permitir-lhes para se registrar." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-registration-menu.php:198 +msgid "Therefore, adding a captcha form on the registration page is another effective yet simple SPAM registration prevention technique." +msgstr "Portanto, adicionando um formulário captcha na página de registro é outra técnica de prevenção de registro SPAM eficaz, ainda que simples." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-registration-menu.php:203 +msgid "Registration Page Captcha Settings" +msgstr "Configurações de captcha na página de registro" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-registration-menu.php:210 +msgid "The core default behaviour for WordPress Multi Site regarding user registration is that all users are registered via the main site." +msgstr "O comportamento padrão de núcleo para WordPress Multi Site sobre registro de usuário é que todos os usuários são registrados através do site principal." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-registration-menu.php:211 +msgid "Therefore, if you would like to add a captcha form to the registration page for a Multi Site, please go to \"Registration Captcha\" settings on the main site." +msgstr "Portanto, se você gostaria de adicionar um formulário captcha à página de registro para um multi site, por favor, vá para Configurações \"Captcha Registro\" no site principal." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-registration-menu.php:226 +msgid "Enable Captcha On Registration Page" +msgstr "Habilitar captcha na página de registro" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-user-registration-menu.php:229 +msgid "Check this if you want to insert a captcha form on the WordPress user registration page (if you allow user registration)." +msgstr "Marque esta opção se você deseja inserir um formulário captcha na página de registro de usuário do WordPress (se você permitir o registo do usuário)." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-whois-menu.php:22 +msgid "WhoIS Lookup" +msgstr "Pesquisa WhoIS" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-whois-menu.php:75 +msgid "WHOIS Lookup Information" +msgstr "Informações de pesquisa WHOIS" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-whois-menu.php:78 +msgid "This feature allows you to look up more detailed information about an IP address or domain name by querying the WHOIS API." +msgstr "Esse recurso permite que você procure informações mais detalhadas sobre um endereço IP ou nome de domínio, consultando a API do WHOIS." + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-whois-menu.php:84 +msgid "Perform a WHOIS Lookup for an IP or Domain Name" +msgstr "Executar uma pesquisa WHOIS para um IP ou nome de domínio" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-whois-menu.php:90 +msgid "Enter IP Address or Domain Name" +msgstr "Digite o endereço IP ou nome de domínio" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-whois-menu.php:92 +msgid "Enter an IP address or domain name. Example: 111.11.12.13 OR some-domain-name.com" +msgstr "Digite um endereço IP ou nome de domínio. Exemplo: 111.11.12.13 OU some-domain-name.com" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-whois-menu.php:96 +msgid "Perform IP or Domain Lookup" +msgstr "Executar IP ou pesquisa de domínio" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-whois-menu.php:117 +msgid "WHOIS lookup successfully completed. Please see the results below:" +msgstr "Pesquisa WHOIS concluída com sucesso. Por favor, veja os resultados abaixo:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/admin/wp-security-whois-menu.php:129 +msgid "You have entered an incorrectly formatted IP address or domain name. Please try again." +msgstr "Você inseriu a forma incorreta de um endereço IP ou nome do domínio. Por favor, tente novamente." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:29 +msgid "Remove WP Generatore Meta Tag" +msgstr "Remover gerador de meta tag WP" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:38 +msgid "Change Display Name" +msgstr "Alterar nome de exibição" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:45 +msgid "Custom Login Captcha" +msgstr "Captcha login personalizado" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:47 +msgid "Lost Password Captcha" +msgstr "Captcha senha perdida" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:49 +msgid "Login IP Whitelisting" +msgstr "Lista branca IP login" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:55 +msgid "Registration Approval" +msgstr "Aprovação do registro" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:71 +msgid "WordPress Files Access" +msgstr "Acesso arquivos WordPress" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:75 +msgid "IP and User Agent Blacklisting" +msgstr "Lista negra de agente de usuário e IP" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:79 +msgid "Enable Basic Firewall" +msgstr "Habilitar firewall básico" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:80 +msgid "Enable Pingback Vulnerability Protection" +msgstr "Habilitar proteção vulnerabilidade pingback" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:82 +msgid "Enable IP blocking for 404 detection" +msgstr "Habilitar o bloqueio de IP para a detecção de 404" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:86 +msgid "Enable Rename Login Page" +msgstr "Habilitar renomeação da página de login" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:88 +msgid "Enable Login Honeypot" +msgstr "Habilitar pote de mel em login" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:94 +msgid "Forbid Proxy Comments" +msgstr "Proibir comentários proxy" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:95 +msgid "Deny Bad Queries" +msgstr "Impedir consultas duvidosas" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:97 +msgid "5G/6G Blacklist" +msgstr "Lista negra 5G/6G" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:100 +msgid "Block Spambots" +msgstr "Bloquear Spambots" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:102 +msgid "Comment Captcha" +msgstr "Captcha comentário" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item-manager.php:104 +msgid "BuddyPress Registration Captcha" +msgstr "Captcha registro BuddyPress" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item.php:28 +msgid "Basic" +msgstr "Básico" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item.php:31 +msgid "Intermediate" +msgstr "Intermediario" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/grade-system/wp-security-feature-item.php:34 +msgid "Advanced" +msgstr "Avançado" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-backup.php:189 +msgid "All In One WP Security - Site Database Backup" +msgstr "All In One WP Security - Backup do banco de dados do site" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-backup.php:191 +msgid "Attached is your latest DB backup file for site URL" +msgstr "Em anexo é o seu arquivo de backup mais recente do banco de dados para a URL do site" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-backup.php:191 +msgid " generated on" +msgstr " gerado em" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-captcha.php:17 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-general-init-tasks.php:328 +msgid "Please enter an answer in digits:" +msgstr "Favor digite a resposta em dígitos:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-captcha.php:96 +msgid "one" +msgstr "um" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-captcha.php:97 +msgid "two" +msgstr "dois" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-captcha.php:98 +msgid "three" +msgstr "três" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-captcha.php:99 +msgid "four" +msgstr "quatro" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-captcha.php:100 +msgid "five" +msgstr "cinco" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-captcha.php:101 +msgid "six" +msgstr "seis" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-captcha.php:102 +msgid "seven" +msgstr "sete" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-captcha.php:103 +msgid "eight" +msgstr "oito" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-captcha.php:104 +msgid "nine" +msgstr "nove" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-captcha.php:105 +msgid "ten" +msgstr "dez" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-captcha.php:106 +msgid "eleven" +msgstr "onze" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-captcha.php:107 +msgid "twelve" +msgstr "doze" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-captcha.php:108 +msgid "thirteen" +msgstr "treze" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-captcha.php:109 +msgid "fourteen" +msgstr "catorze" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-captcha.php:110 +msgid "fifteen" +msgstr "quinze" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-captcha.php:111 +msgid "sixteen" +msgstr "dezesseis" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-captcha.php:112 +msgid "seventeen" +msgstr "dezessete" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-captcha.php:113 +msgid "eighteen" +msgstr "dezoito" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-captcha.php:114 +msgid "nineteen" +msgstr "dezenove" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-captcha.php:115 +msgid "twenty" +msgstr "vinte" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:55 +msgid "All In One WP Security - File change detected!" +msgstr "All In One WP Security - Alteração de arquivo detectada!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:57 +msgid "A file change was detected on your system for site URL" +msgstr "Um arquivo substituido foi detectado em seu sistema do website URL" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:57 +msgid ". Scan was generated on" +msgstr ". Verificação foi gerada em" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:58 +msgid "A summary of the scan results is shown below:" +msgstr "Um resumo dos resultados da verificação é mostrado abaixo:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:67 +msgid "Login to your site to view the scan details." +msgstr "Logue-se em seu website para ver os detalhes da verificação." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:293 +msgid "Starting DB scan.....please wait while the plugin scans your database......." +msgstr "Iniciando a verificação do DB... por favor aguarde enquanto o plugin examina seu banco de dados..." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:297 +msgid "Scanning options table........." +msgstr "Digitalização da tabela de opções..." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:366 +#, php-format +msgid "%s and option_id: %s" +msgstr "%s e option_id: %s" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:369 +#, php-format +msgid "Deletion of known pharma hack entry for option_name %s failed. Please delete this entry manually!" +msgstr "Supressão da entrada de hack conhecido pharma de option_name %s falhou. Por favor, exclua esta entrada manualmente!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:371 +#, php-format +msgid "The options table entry with known pharma hack for option_id %s with option_name %s was successfully deleted" +msgstr "A entrada da tabela de opções com pharma conhecido hack para option_id %s com option_name %s foi excluído com sucesso" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:385 +#, php-format +msgid "Possible suspicious entry found (for option_id: %s) - %s " +msgstr "Possível entrada suspeita encontrada (para option_id: %s) - %s " + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:394 +msgid "No suspicious entries found in options table" +msgstr "Não há entradas suspeitas, encontradas na tabela de opções" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:398 +msgid "Scanning posts table........." +msgstr "Digitalização da tabela de postagens..." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:438 +#, php-format +msgid "Possible suspicious entry found (for Post ID: %s) in the following column - %s " +msgstr "Possível entrada suspeita encontrada (para Post ID: %s) na coluna seguinte - %s " + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:447 +msgid "No suspicious entries found in posts table" +msgstr "Não há entradas suspeitas, encontradas na tabela de postagens" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:451 +msgid "Scanning links table........." +msgstr "Digitalização da tabela de ligações..." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:490 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:541 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:569 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:597 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:646 +#, php-format +msgid "Possible suspicious entry - %s " +msgstr "Possível entrada suspeita - %s " + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:499 +msgid "No suspicious entries found in links table" +msgstr "Não há entradas suspeitas, encontradas na tabela de ligações" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:503 +msgid "Scanning comments table........." +msgstr "Digitalização da tabela de comentários..." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:550 +msgid "No suspicious entries found in comments table" +msgstr "Não há entradas suspeitas, encontradas na tabela de comentários" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:554 +msgid "Scanning postmeta table........." +msgstr "Digitalização da tabela de postmeta..." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:578 +msgid "No suspicious entries found in postmeta table" +msgstr "Não há entradas suspeitas, encontradas na tabela de postmeta" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:582 +msgid "Scanning usermeta table........." +msgstr "Digitalização da tabela de usermeta..." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:606 +msgid "No suspicious entries found in usermeta table" +msgstr "Não há entradas suspeitas, encontradas na tabela de usermeta" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:610 +msgid "Scanning users table........." +msgstr "Digitalização da tabela de usuários..." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:655 +msgid "No suspicious entries found in users table" +msgstr "Não há entradas suspeitas, encontradas na tabela de usuários" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:662 +msgid "The plugin has detected that there are some potentially suspicious entries in your database." +msgstr "O plugin detectou que existem algumas entradas potencialmente suspeitas em seu banco de dados." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:663 +msgid "Please verify the results listed below to confirm whether the entries detected are genuinely suspicious or if they are false positives." +msgstr "Por favor, verifique os resultados listados abaixo para confirmar se as entradas detectadas são genuinamente suspeitas ou se eles são falsos positivos." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:668 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:683 +msgid "Disclaimer:" +msgstr "Aviso legal:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:669 +msgid "Even though this database scan has revealed some suspicious entries, this does not necessarily mean that other parts of your DB or site are also not compromised." +msgstr "Apesar dessa verificação de banco de dados ter revelado algumas entradas suspeitas, isto não significa necessariamente que outras partes do seu DB ou do site também não estão comprometidos." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:670 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:685 +msgid "Please note that database scan performed by this feature is basic and looks for common malicious entries. Since hackers are continually evolving their methods this scan is not meant to be a guaranteed catch-all for malware." +msgstr "Por favor, note que a verificação de banco de dados realizada por esse recurso é básico e procura por entradas maliciosos comuns. Uma vez que os hackers estão evoluindo continuamente seus métodos esta verificação não pretende ser um pega-tudo garantido para malware." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:671 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:686 +#, php-format +msgid "It is your responsibility to do the due diligence and perform a robust %s on your site if you wish to be more certain that your site is clean." +msgstr "É de sua responsabilidade fazer a devida diligência e executar um robusto %s em seu site, se você deseja ter mais certeza de que seu site está limpo." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:678 +msgid "DB Scan was completed successfully. No suspicious entries found." +msgstr "Verificação do banco de dados foi concluída com sucesso. Não há entradas suspeitas encontradas." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:684 +msgid "Even though the database scan has not revealed any suspicious entries, this does not necessarily mean that your site is actually completely clean or not compromised." +msgstr "Mesmo que a verificação de banco de dados não tenha revelado quaisquer entradas suspeitas, isto não significa necessariamente que seu site é realmente completamente limpo ou não comprometidos." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:726 +msgid "The following files were added to your host" +msgstr "Os seguintes arquivos foram adicionados ao seu host" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:728 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:737 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:747 +msgid "modified on: " +msgstr "modificado em: " + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:735 +msgid "The following files were removed from your host" +msgstr "Os seguintes arquivos foram removidos do seu hospedeiro" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-file-scan.php:745 +msgid "The following files were changed on your host" +msgstr "Os seguintes arquivos foram alterados em seu hospedeiro" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-general-init-tasks.php:355 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-general-init-tasks.php:432 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-login.php:70 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-login.php:73 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-registration.php:68 +msgid "ERROR: Your answer was incorrect - please try again." +msgstr "ERRO: A sua resposta está INCORRETA - por favor, tente novamente." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-general-init-tasks.php:367 +msgid "Enter something special:" +msgstr "Digite algo especial:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-general-init-tasks.php:394 +msgid "Please enter an answer in the CAPTCHA field." +msgstr "Por favor, digite uma resposta no campo CAPTCHA." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-general-init-tasks.php:404 +msgid "Error: You entered an incorrect CAPTCHA answer. Please go back and try again." +msgstr "Erro: Você digitou a resposta CAPTCHA, de forma incorreta. Por favor, volte e tente NOVAMENTE." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-general-init-tasks.php:456 +msgid "Your CAPTCHA answer was incorrect - please try again." +msgstr "Sua resposta CAPTCHA estava errada - por favor, tente novamente." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-login.php:44 +msgid "ERROR: Login failed because your IP address has been blocked. Please contact the administrator." +msgstr "ERRO: Falha no login porque seu endereço IP está bloqueado. Por favor, entre em contato com o administrador." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-login.php:83 +msgid "ERROR: The username field is empty." +msgstr "ERRO: O campo nome de USUÁRIO está vazio." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-login.php:87 +msgid "ERROR: The password field is empty." +msgstr "ERRO: O campo da SENHA está vazio." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-login.php:107 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-login.php:133 +msgid "ERROR: Invalid login credentials." +msgstr "ERRO: As suas informações de login são INVÁLIDAS." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-login.php:110 +msgid "ERROR: Invalid username." +msgstr "ERRO: NOME DE USUÁRIO Inválido." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-login.php:136 +#, php-format +msgid "ERROR: Incorrect password. Lost your password?" +msgstr "ERRO: SENHA INCORRETA. Perdeu a sua SENHA?" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-login.php:147 +msgid "ACCOUNT PENDING: Your account is currently not active. An administrator needs to activate your account before you can login." +msgstr "CONTA PENDENTE: A sua CONTA não está ativa. Um administrador precisa ativar a sua conta antes de você efetuar o LOGIN." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-login.php:270 +msgid "Site Lockout Notification" +msgstr "Notificação de bloqueio do site" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-login.php:271 +msgid "A lockdown event has occurred due to too many failed login attempts or invalid username:" +msgstr "Um evento de bloqueio ocorreu devido a muitas tentativas de login ou nome de usuário inválido:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-login.php:272 +msgid "Username: " +msgstr "Nome de usuário: " + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-login.php:273 +msgid "IP Address: " +msgstr "Endereço IP:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-login.php:274 +msgid "IP Range: " +msgstr "Faixa IP:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-login.php:275 +msgid "Log into your site's WordPress administration panel to see the duration of the lockout or to unlock the user." +msgstr "Faça login no painel de administração do seu site WordPress para ver a duração do bloqueio ou para desbloquear o usuário." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-login.php:352 +msgid "Unlock Request Notification" +msgstr "Desbloquear solicitação de notificação" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-login.php:353 +msgid "You have requested for the account with email address " +msgstr "Você tenha solicitado a conta com endereço de e-mail" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-login.php:354 +msgid "Unlock link: " +msgstr "Desbloquear link: " + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-login.php:355 +msgid "After clicking the above link you will be able to login to the WordPress administration panel." +msgstr "Após clicar no link acima, você será capaz de acessar o painel de administração do WordPress." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-login.php:525 +#, php-format +msgid "Your session has expired because it has been over %d minutes since your last login." +msgstr "A sua sessão foi encerrada porque já se passaram %d minutos do seu último login." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-login.php:526 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-login.php:530 +msgid "Please log back in to continue." +msgstr "Por favor efetue o login novamente para continuar." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-login.php:529 +msgid "You were logged out because you just changed the \"admin\" username." +msgstr "Você foi desconectado porque você apenas alterou o nome de usuário \"admin\"." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-login.php:555 +msgid "Request Unlock" +msgstr "Solicitação de desbloqueio" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-user-registration.php:55 +msgid "ERROR: You are not allowed to register because your IP address is currently locked!" +msgstr "ERRO: Você não tem permissão para se registrar porque seu endereço IP está atualmente bloqueado!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-utility-ip-address.php:73 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-utility-ip-address.php:88 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-utility-ip-address.php:107 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-utility-ip-address.php:122 +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-utility-ip-address.php:137 +msgid " is not a valid ip address format." +msgstr " esse formato de endereço de IP não é válido." + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-utility-ip-address.php:145 +msgid "You cannot ban your own IP address: " +msgstr "Você não pode banir o seu próprio endereço IP" + +#: ../../plugins/all-in-one-wp-security-and-firewall/classes/wp-security-utility.php:178 +msgid "This feature can only be configured by the \"superadmin\" on the main site." +msgstr "Este recurso só pode ser configurado pelo \"super administrador\" no site principal." + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:99 +msgid "https://wordpress.org/" +msgstr "https://wordpress.org/" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:100 +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-unlock-request.php:14 +msgid "Powered by WordPress" +msgstr "Alimentado por WordPress" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:217 +#, php-format +msgid "← Back to %s" +msgstr "← Voltar para %s" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:282 +msgid "ERROR: Enter a username or e-mail address." +msgstr "ERRO: Digite um nome de usuário ou endereço de e-mail." + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:286 +msgid "ERROR: There is no user registered with that email address." +msgstr "ERRO: Não existe nenhum usuário registrado com esse endereço de e-mail." + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:303 +msgid "ERROR: Invalid username or e-mail." +msgstr "ERRO: Nome de usuário inválido ou e-mail." + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:341 +msgid "Password reset is not allowed for this user" +msgstr "Redefinição de senha não é permitida para este usuário" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:367 +msgid "Someone requested that the password be reset for the following account:" +msgstr "Alguém solicitou que a senha seja redefinida para a seguinte conta:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:369 +#, php-format +msgid "Username: %s" +msgstr "Nome de usuário: %s" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:370 +msgid "If this was a mistake, just ignore this email and nothing will happen." +msgstr "Se isso foi um erro, apenas ignore este e-mail e nada acontecerá." + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:371 +msgid "To reset your password, visit the following address:" +msgstr "Para redefinir sua senha, visite o seguinte endereço:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:383 +#, php-format +msgid "[%s] Password Reset" +msgstr "Redefinir de senha [%s]" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:408 +msgid "The e-mail could not be sent." +msgstr "O e-mail não pôde ser enviado." + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:408 +msgid "Possible reason: your host may have disabled the mail() function." +msgstr "Possível motivo: seu host pode ter desabilitado a função mail()." + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:530 +msgid "Your password reset link appears to be invalid. Please request a new link below." +msgstr "Seu link de redefinição de senha parece ser inválido. Por favor, solicite um novo link abaixo." + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:532 +msgid "Your password reset link has expired. Please request a new link below." +msgstr "Seu link de redefinição de senha expirou. Por favor, solicite um novo link abaixo." + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:553 +msgid "Lost Password" +msgstr "Senha perdida" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:553 +msgid "Please enter your username or email address. You will receive a link to create a new password via email." +msgstr "Por favor, digite seu nome de usuário ou endereço de e-mail. Você receberá um link para criar uma nova senha por e-mail." + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:561 +msgid "Username or E-mail:" +msgstr "Nome de usuário ou e-mail:" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:576 +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:639 +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:685 +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:767 +msgid "Log in" +msgstr "Entrar" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:579 +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:688 +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:945 +msgid "Register" +msgstr "Registrar" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:624 +msgid "The passwords do not match." +msgstr "As senhas não coincidem." + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:639 +msgid "Password Reset" +msgstr "Resetar senha" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:639 +msgid "Your password has been reset." +msgstr "Sua senha foi redefinida." + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:647 +msgid "Reset Password" +msgstr "Redefinir senha" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:647 +msgid "Enter your new password below." +msgstr "Digite sua nova senha abaixo." + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:654 +msgid "New password" +msgstr "Nova senha" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:659 +msgid "Strength indicator" +msgstr "Indicador de força" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:663 +msgid "Confirm new password" +msgstr "Confirmar nova senha" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:740 +msgid "Registration Form" +msgstr "Formulário de registro" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:740 +msgid "Register For This Site" +msgstr "Registre-se nesse site" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:745 +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:911 +msgid "Username" +msgstr "Nome de usuário" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:749 +msgid "E-mail" +msgstr "E-mail" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:760 +msgid "Registration confirmation will be e-mailed to you." +msgstr "Confirmação de inscrição será enviado por e-mail para você." + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:768 +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:951 +msgid "Lost your password?" +msgstr "Perdeu sua senha?" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:808 +#, php-format +msgid "ERROR: Cookies are blocked due to unexpected output. For help, please see this documentation or try the support forums." +msgstr "ERRO: Cookies são bloqueados devido a saída inesperada. Para obter ajuda, consulte esta documentação ou tente os fóruns de suporte." + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:809 +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:813 +msgid "https://codex.wordpress.org/Cookies" +msgstr "https://codex.wordpress.org/Cookies" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:809 +msgid "https://wordpress.org/support/" +msgstr "https://wordpress.org/support/" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:812 +#, php-format +msgid "ERROR: Cookies are blocked or not supported by your browser. You must enable cookies to use WordPress." +msgstr "ERRO: Cookies são bloqueados ou não suportados pelo seu navegador. Você deve habilitar cookies para usar o WordPress." + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:831 +msgid "You have logged in successfully." +msgstr "Você foi conectado com sucesso." + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:865 +msgid "Session expired. Please log in again. You will not move away from this page." +msgstr "Sessão expirada. Por favor faça login novamente. Você não vai se afastar desta página." + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:869 +msgid "You are now logged out." +msgstr "Agora você está desconectado." + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:871 +msgid "User registration is currently not allowed." +msgstr "O registro do usuário não é permitido atualmente." + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:873 +msgid "Check your e-mail for the confirmation link." +msgstr "Verifique seu e-mail para o link de confirmação." + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:875 +msgid "Check your e-mail for your new password." +msgstr "Verifique seu e-mail para sua nova senha." + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:877 +msgid "Registration complete. Please check your e-mail." +msgstr "Registro completo. Por favor, verifique seu e-mail." + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:879 +msgid "You have successfully updated WordPress! Please log back in to see what’s new." +msgstr "Você atualizou com sucesso o WordPress! Por favor efetue o login novamente para ver o que é novo." + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php:896 +msgid "Log In" +msgstr "Entrar" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-unlock-request.php:13 +msgid "http://wordpress.org/" +msgstr "http://wordpress.org/" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-unlock-request.php:33 +msgid "ERROR: Unable to process your request!" +msgstr "ERRO: Não é possível processar o seu pedido!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-unlock-request.php:50 +msgid "Please enter a valid email address" +msgstr "Por favor digite um endereço de e-mail válido" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-unlock-request.php:62 +msgid "User account not found!" +msgstr "Conta de usuário não encontrada!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-unlock-request.php:73 +msgid "Error: No locked entry was found in the DB with your IP address range!" +msgstr "Erro: Nenhuma entrada bloqueada foi encontrada no banco de dados com seu intervalo de endereços IP!" + +#: ../../plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-unlock-request.php:101 +msgid "Email Address" +msgstr "Endereço de e-mail" + +# @ all-in-one-wp-security-and-firewall +#. Description of the plugin +msgid "All round best WordPress security plugin!" +msgstr "Em todas as partes o melhor plugin de segurança WordPress!" + +# @ all-in-one-wp-security-and-firewall +msgid "Number of users currently logged into your site is:" +msgstr "O número de usuários conectado em seu website é:" + +# @ all-in-one-wp-security-and-firewall +msgid "The selected IP range was unlocked successfully!" +msgstr "A faixa de IP selecionado foi desbloqueado com sucesso!" + +# @ all-in-one-wp-security-and-firewall +msgid "The selected IP ranges were unlocked successfully!" +msgstr "As faixas de IPs selecionados foram desbloqueados com sucesso!" + +# @ all-in-one-wp-security-and-firewall +msgid "" +"ERROR: Login failed because your IP address has been blocked.\n" +" Please contact the administrator." +msgstr "" +"ERRO: O seu LOGIN falhou porque o seu endereço IP foi bloqueado.\n" +" Por favor, contate o administrador do site." diff --git a/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-ru_RU.mo b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-ru_RU.mo new file mode 100644 index 0000000..a363492 Binary files /dev/null and b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-ru_RU.mo differ diff --git a/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-ru_RU.po b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-ru_RU.po new file mode 100644 index 0000000..55058b9 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-ru_RU.po @@ -0,0 +1,5992 @@ +msgid "" +msgstr "" +"Project-Id-Version: All In One WP Security & Firewall\n" +"POT-Creation-Date: 2014-09-19 10:46+1000\n" +"PO-Revision-Date: 2014-11-07 09:20+0100\n" +"Last-Translator: Tor-Bjorn Fjellner \n" +"Language-Team: Update Nov 2014 - Tobi: gsm.fjellner.com\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.7\n" +"X-Poedit-KeywordsList: __;_e\n" +"X-Poedit-Basepath: .\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11) ? 0 : ((n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20)) ? 1 : 2);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-SearchPath-0: ..\n" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:203 +msgid "WP Security" +msgstr "WP Security" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:204 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:23 +msgid "Dashboard" +msgstr "Панель управления" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:205 +msgid "Settings" +msgstr "Настройки" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:206 +msgid "User Accounts" +msgstr "Администраторы" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:207 +msgid "User Login" +msgstr "Авторизация" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:208 +msgid "User Registration" +msgstr "Регистрация пользователя" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:209 +msgid "Database Security" +msgstr "Защита Базы данных" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:213 +msgid "Filesystem Security" +msgstr "Защита Файловой системы" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:215 +msgid "WHOIS Lookup" +msgstr "WHOIS-поиск" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:219 +msgid "Blacklist Manager" +msgstr "Черный список" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:224 +msgid "Firewall" +msgstr "Файрволл" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:229 +msgid "Brute Force" +msgstr "Защита от брутфорс-атак" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:231 +msgid "SPAM Prevention" +msgstr "Защита от SPAM" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:235 +msgid "Scanner" +msgstr "Сканнер" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:237 +msgid "Maintenance" +msgstr "Режим обслуживания" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:238 +msgid "Miscellaneous" +msgstr "Разное" + +#: all-in-one-wp-security/admin/wp-security-admin-menu.php:43 +msgid "Settings successfully updated." +msgstr "Настройки успешно сохранены!" + +#: all-in-one-wp-security/admin/wp-security-admin-menu.php:50 +msgid "The selected record(s) deleted successfully!" +msgstr "Выбранные записи удалены!" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:22 +msgid "Ban Users" +msgstr "Забанить пользователей" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:80 +msgid "Nonce check failed for save blacklist settings!" +msgstr "Настройки черного списка сохранить не удалось!" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:132 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:631 +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:147 +msgid "" +"The plugin was unable to write to the .htaccess file. Please edit file " +"manually." +msgstr "" +"Не удалось сделать записи в файле .htaccess. Пожалуйста, отредактируйте " +"файл вручную." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:139 +msgid "Ban IPs or User Agents" +msgstr "Бан по IP-адресам или юзер-агентам" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:142 +msgid "" +"The All In One WP Security Blacklist feature gives you the option of banning " +"certain host IP addresses or ranges and also user agents." +msgstr "" +"Функция «Черный список» позволяет блокировать определенные IP-адреса, " +"диапазоны и юзер-агенты," + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:143 +msgid "" +"This feature will deny total site access for users which have IP addresses " +"or user agents matching those which you have configured in the settings " +"below." +msgstr "" +"отказывая в доступе к сайту тем пользователям и ботам, которые использовали " +"эти IP-адреса для спама или по другим причинам." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:144 +msgid "" +"The plugin achieves this by making appropriate modifications to your ." +"htaccess file." +msgstr "" +"Данная функция реализуется добавлением в файл .htaccess определенных правил." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:145 +msgid "" +"By blocking people via the .htaccess file your are using the most secure " +"first line of defence which denies all access to blacklisted visitors as " +"soon as they hit your hosting server." +msgstr "" +"Блокируя пользователей с помощью директив файла .htaccess, Вы получаете " +"первую линию обороны, которая отбросит нежелательных посетителей сразу же, " +"как только они попытаются создать запрос к Вашему серверу." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:151 +msgid "IP Hosts and User Agent Blacklist Settings" +msgstr "Настройки Черного списка для блокировки IP-адресов и юзер-агентов" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:162 +msgid "Enable IP or User Agent Blacklisting" +msgstr "Вести Черный список" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:165 +msgid "" +"Check this if you want to enable the banning (or blacklisting) of selected " +"IP addresses and/or user agents specified in the settings below" +msgstr "" +"Отметьте этот чекбокс, если Вы хотите иметь возможнось банить указанные IP-" +"адреса или юзер-агенты" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:169 +msgid "Enter IP Addresses:" +msgstr "Введите IP-адреса:" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:173 +msgid "Enter one or more IP addresses or IP ranges." +msgstr "Введите один или более IP-адрес или диапазон адресов." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:174 +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:194 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:347 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:381 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:404 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:425 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:687 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:293 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:310 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:165 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:195 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:326 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:356 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:387 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:415 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:444 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:532 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:622 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:824 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:847 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:168 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:253 +msgid "More Info" +msgstr "Подробнее" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:177 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:690 +msgid "Each IP address must be on a new line." +msgstr "Каждый IP-адрес должен находиться в отдельной строке." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:178 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:691 +msgid "" +"To specify an IP range use a wildcard \"*\" character. Acceptable ways to " +"use wildcards is shown in the examples below:" +msgstr "" +"Чтобы указать диапазон IP-адресов, используйте маску «*». Примеры приведены " +"ниже:" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:179 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:692 +msgid "Example 1: 195.47.89.*" +msgstr "Пример 1: 195.47.89.*" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:180 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:693 +msgid "Example 2: 195.47.*.*" +msgstr "Пример 2: 195.47.*.*" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:181 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:694 +msgid "Example 3: 195.*.*.*" +msgstr "Пример 3: 195.*.*.*" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:188 +msgid "Enter User Agents:" +msgstr "Введите названия юзер-агентов:" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:193 +msgid "Enter one or more user agent strings." +msgstr "Введите одну или более строк с названиями юзер-агентов." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:197 +msgid "Each user agent string must be on a new line." +msgstr "Каждый юзер-агент прописывайте в отдельной строке." + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:198 +msgid "Example 1 - A single user agent string to block:" +msgstr "Пример 1: Одиночная строка с названием юзер-агента для блокировки:" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:200 +msgid "Example 2 - A list of more than 1 user agent strings to block" +msgstr "Пример 2: Список нескольких юзер-агентов для блокировки" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:208 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:192 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:567 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:701 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:763 +#: all-in-one-wp-security/admin/wp-security-database-menu.php:356 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:331 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:231 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:700 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:866 +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:165 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:495 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:183 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:349 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:239 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:407 +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:146 +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:232 +msgid "Save Settings" +msgstr "Сохранить настройки" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:26 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:368 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:377 +msgid "Rename Login Page" +msgstr "Переименовать страницу логина" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:27 +msgid "Cookie Based Brute Force Prevention" +msgstr "Защита от брутфорс-атак с помощью куки" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:28 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:44 +msgid "Login Captcha" +msgstr "CAPTCHA на логин" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:29 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:638 +msgid "Login Whitelist" +msgstr "Белый список для логина" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:30 +msgid "Honeypot" +msgstr "Бочка с медом (Honeypot)" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:101 +msgid "Please enter a value for your login page slug." +msgstr "" +"Пожалуйста, введите значение, которое будет использовано в адресе Вашей " +"страницы логина." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:105 +msgid "You cannot use the value \"wp-admin\" for your login page slug." +msgstr "Нельзя использовать значение \"wp-admin\" в адресе страницы логина." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:107 +msgid "You must alpha numeric characters for your login page slug." +msgstr "Необходимо использовать буквы и цифры в адресе страницы логина." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:112 +#: all-in-one-wp-security/admin/wp-security-database-menu.php:271 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:171 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:769 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:213 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:123 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:360 +msgid "Attention!" +msgstr "Внимание!" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:131 +msgid "" +"Could not delete the Cookie-based directives from the .htaccess file. Please " +"check the file permissions." +msgstr "" +"Не удалось из файла .htaccess удалить инструкции для защиты от брутфорс-атак " +"на основе куки. Пожалуйста, проверьте разрешения на запись для этого файла." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:141 +msgid "" +"An effective Brute Force prevention technique is to change the default " +"WordPress login page URL." +msgstr "" +"Эффективная мера защиты от перебора паролей - " +"изменение адреса страницы логина." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:142 +msgid "" +"Normally if you wanted to login to WordPress you would type your site's home " +"URL followed by wp-login.php." +msgstr "" +"Обычно, для того, чтобы логиниться в WordPress, Вы набираете базовый адрес " +"сайта, и затем wp-login.php (или wp-admin)." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:143 +msgid "" +"This feature allows you to change the login URL by setting your own slug and " +"renaming the last portion of the login URL which contains the wp-" +"login.php to any string that you like." +msgstr "" +"С этой функцией Вы сможете изменить адрес страницы логина, указав собственный " +"адрес, изменив последнюю часть адреса (URL) страницы, которая обычно " +"пишетсяwp-login.php на что угодно. " + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:144 +msgid "" +"By doing this, malicious bots and hackers will not be able to access your " +"login page because they will not know the correct login page URL." +msgstr "" +"Если сделать так, тогда злонамеренные роботы и хакеры не смогут найти Вашу " +"страницу логина, т.к. не будут знать ее верный адрес." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:146 +msgid "" +"You may also be interested in the following alternative brute force " +"prevention features:" +msgstr "" +"Вас также может интересовать следующая альтернатива защиты от брутфорс-атак:" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:157 +msgid "Your WordPress login page URL has been renamed." +msgstr "Адрес (URL) Вашей страницы логина в WordPress изменен." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:158 +msgid "Your current login URL is:" +msgstr "Текущий адрес страницы логина:" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:160 +msgid "" +"NOTE: If you already had the Cookie-Based Brute Force Prevention feature " +"active, the plugin has automatically deactivated it because only one of " +"these features can be active at any one time." +msgstr "" +"Обратите внимание: Если до этого была активна защита от брутфорс-атак на " +"основе куки, тогда эта две функции не могут быть активны одновременно." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:167 +msgid "Rename Login Page Settings" +msgstr "Настройки по переименованию адреса страницы для логина" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:179 +msgid "Enable Rename Login Page Feature" +msgstr "Включить опцию переименования страницы логина" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:182 +msgid "Check this if you want to enable the rename login page feature" +msgstr "" +"Ставьте галочку, если хотите активировать функцию переименования страницы " +"логина" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:186 +msgid "Login Page URL" +msgstr "Адрес (URL) страницы логина" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:188 +msgid "" +"Enter a string which will represent your secure login page slug. You are " +"enouraged to choose something which is hard to guess and only you will " +"remember." +msgstr "" +"Введите текстовое значение, которое составит часть адреса Вашей страницы " +"логина. Предлагаем выбрать нечто, что сложно угадать, и только Вы будете " +"помнить." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:221 +msgid "" +"Settings have not been saved - your secret word must consist only of " +"alphanumeric characters, ie, letters and/or numbers only!" +msgstr "" +"Настройки не сохранились - секретное слово должно состоять только из " +"латинских букв и/или цифр!" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:240 +msgid "" +"You have successfully enabled the cookie based brute force prevention feature" +msgstr "Вы успешно активировали защиту от брутфорс-атак" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:241 +msgid "" +"From now on you will need to log into your WP Admin using the following URL:" +msgstr "С этого момента заходите на Вашу страницу авторизации по следующему адресу:" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:243 +msgid "" +"It is important that you save this URL value somewhere in case you forget " +"it, OR," +msgstr "" +"Очень важно, чтобы Вы сохранили этот URL где-нибудь в надежном месте, на " +"случай, если Вы его забудете, или" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:244 +#, php-format +msgid "simply remember to add a \"?%s=1\" to your current site URL address." +msgstr "просто запомните, что к адресу Вашего сайта надо добавить «?%s=1»." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:250 +msgid "" +"You have successfully saved cookie based brute force prevention feature " +"settings." +msgstr "Настройки защиты от брутфорс-атак на основе куки сохранены!" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:285 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:275 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:119 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:287 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:498 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:667 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:585 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:108 +msgid "" +"Could not write to the .htaccess file. Please check the file permissions." +msgstr "" +"Файл .htaccess недоступен для записи. Пожалуйста, проверьте разрешения на " +"запись для этого файла. " + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:295 +msgid "Brute Force Prevention Firewall Settings" +msgstr "Настройки Файрволла для защиты от Брутфорс-атак" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:300 +msgid "" +"A Brute Force Attack is when a hacker tries many combinations of usernames " +"and passwords until they succeed in guessing the right combination." +msgstr "" +"Брутфорс-атакой называется многократный перебор различных сочетаний имен " +"пользователей и паролей, до тех пор, пока не будет найдена их правильная " +"комбинация." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:301 +msgid "" +"Due to the fact that at any one time there may be many concurrent login " +"attempts occurring on your site via malicious automated robots, this also " +"has a negative impact on your server's memory and performance." +msgstr "" +"В связи с тем, что в любой момент времени может происходить большое " +"количество попыток входа на Ваш сайт, осуществляемых с помощью вредоносных " +"программ-роботов, это также оказывает негативное влияние на Ваш сервер, так " +"как отнимает ресурсы памяти и снижает его производительность." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:302 +msgid "" +"The features in this tab will stop the majority of Brute Force Login Attacks " +"at the .htaccess level thus providing even better protection for your WP " +"login page and also reducing the load on your server because the system does " +"not have to run PHP code to process the login attempts." +msgstr "" +"Функции в этой вкладке остановят большинство брутфорс-атак на уровне файла ." +"htaccess, обеспечивая тем самым усиленную защиту Вашей страницы авторизации " +"и снижая нагрузку на сервер, так как система при этом не запускает PHP код " +"для обработки попыток входа в систему." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:309 +#, php-format +msgid "" +"Even though this feature should not have any impact on your site's general " +"functionality you are strongly encouraged to take a %s of your ." +"htaccess file before proceeding." +msgstr "" +"Активация этих опций не должна иметь никакого влияния на общую " +"функциональность Вашего сайта, но при желании Вы можете создать %s Вашего ." +"htaccess-файла, перед тем, как включите эти настройки." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:310 +msgid "" +"If this feature is not used correctly, you can get locked out of your site. " +"A backed up .htaccess file will come in handy if that happens." +msgstr "" +"Если эта услуга используется неправильно, есть риск, что Вы потеряете доступ " +"к своему сайту. В таком случае, резервная копия файла .htaccess может сильно " +"помочь." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:311 +#, php-format +msgid "" +"To learn more about how to use this feature please watch the following %s." +msgstr "" +"Вы можете узнать больше о том, как пользоваться этой услугой здесь: %s." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:324 +msgid "" +"NOTE: If you already had the Rename Login Page feature active, the plugin " +"has automatically deactivated it because only one of these features can be " +"active at any one time." +msgstr "" +"Обратите внимание: Если была активна функция переименования страницы логина, " +"тогда она автоматически деактивирована, т.к. эти две функции не могут " +"быть активны одновременно." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:332 +msgid "Cookie Based Brute Force Login Prevention" +msgstr "Защита от брутфорс-атак, основанная на использовании куки" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:343 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:90 +msgid "Enable Brute Force Attack Prevention" +msgstr "Активировать защиту от брутфорс-атак" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:346 +msgid "" +"Check this if you want to protect your login page from Brute Force Attack." +msgstr "" +"Отметьте, если Вы хотите защитить Вашу форму авторизации от брутфорс-атак." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:351 +msgid "" +"This feature will deny access to your WordPress login page for all people " +"except those who have a special cookie in their browser." +msgstr "" +"Эта функция запретит доступ к Вашей странице авторизации любому " +"пользователю, у которого в браузере нет специального куки-файла." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:353 +msgid "To use this feature do the following:" +msgstr "Для активации этой опции сделайте следующее:" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:355 +msgid "1) Enable the checkbox." +msgstr "1) Включите этот чекбокс." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:357 +msgid "" +"2) Enter a secret word consisting of alphanumeric characters which will be " +"difficult to guess. This secret word will be useful whenever you need to " +"know the special URL which you will use to access the login page (see point " +"below)." +msgstr "" +"2) Введите секретное слово, состоящее из буквенно-цифровых символов (буквы " +"латинские), которое будет трудно разгадать. Это слово будет использовано, " +"чтобы создать для Вас специальный URL для доступа к странице авторизации " +"(смотрите следующий пункт)." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:359 +msgid "" +"3) You will then be provided with a special login URL. You will need to use " +"this URL to login to your WordPress site instead of the usual login URL. " +"NOTE: The system will deposit a special cookie in your browser which will " +"allow you access to the WordPress administration login page." +msgstr "" +"3) После сохранения этих настроек Вы получите специальный URL для " +"авторизации, о котором больше никто не будет знать. Этот URL Вы должны " +"будете использовать вместо стандартного URL к странице авторизации. " +"ВНИМАНИЕ: Плагин поместит в Ваш браузер специальный куки-файл, который будет " +"служить Вашим персональным пропуском в админ-панель блога." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:361 +msgid "" +"Any person trying to access your login page who does not have the special " +"cookie in their browser will be automatically blocked." +msgstr "" +"Любой, кто попытается попасть на Вашу страницу авторизации, не имея " +"специального куки-файла в своем браузере, будет автоматически заблокирован." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:368 +msgid "Secret Word" +msgstr "Секретное слово" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:370 +msgid "" +"Choose a secret word consisting of alphanumeric characters which you can use " +"to access your special URL. Your are highly encouraged to choose a word " +"which will be difficult to guess." +msgstr "" +"Введите секретное слово (только латинские буквы и цифры). Подберите такое " +"слово, чтобы его было трудно угадать." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:374 +msgid "Re-direct URL" +msgstr "URL перенаправления" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:378 +msgid "" +"Specify a URL to redirect a hacker to when they try to access your WordPress " +"login page." +msgstr "" +"Введите URL, на который будет перенаправляться хакер при попытках получить " +"доступ к Вашей форме авторизации." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:385 +msgid "" +"The URL specified here can be any site's URL and does not have to be your " +"own. For example you can be as creative as you like and send hackers to the " +"CIA or NSA home page." +msgstr "" +"URL, который должен быть в этом поле, может быть адресом любого сайта или " +"страницы - не обязательно Вашего. Вы можете проявить фантазию и " +"перенаправлять хакеров, например, на сайт ЦРУ или ФСБ." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:387 +msgid "" +"This field will default to: http://127.0.0.1 if you do not enter a value." +msgstr "" +"Если Вы ничего не будете вводить в это поле, будет использовано значение по " +"умолчанию, т.е. «http://127.0.0.1»." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:389 +msgid "Useful Tip:" +msgstr "Полезная подсказка:" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:391 +msgid "" +"It's a good idea to not redirect attempted brute force login attempts to " +"your site because it increases the load on your server." +msgstr "" +"Правильно будет не перенаправлять хакера при неудачных попытках брутфорс-" +"атак на другие страницы Вашего сайта, так как это только увеличит нагрузку " +"на Ваш сервер." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:393 +msgid "" +"Redirecting a hacker or malicious bot back to \"http://127.0.0.1\" is ideal " +"because it deflects them back to their own local host and puts the load on " +"their server instead of yours." +msgstr "" +"Переадресация хакера или вредоносного бота на «http://127.0.0.1» - идеальный " +"вариант, т.к. возвращает его обратно на его собственный локальный хост и " +"нагружает его сервер вместо Вашего." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:400 +msgid "My Site Has Posts Or Pages Which Are Password Protected" +msgstr "" +"На моем сайте есть посты или страницы, закрытые встроенной функцией " +"Wordpress для защиты контента паролем " + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:403 +msgid "" +"Check this if you are using the native WordPress password protection feature " +"for some or all of your blog posts or pages." +msgstr "" +"Включите эту опцию, если Вы используете встроенную функцию WordPress для " +"защиты постов или страниц паролями." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:408 +msgid "" +"In the cases where you are protecting some of your posts or pages using the " +"in-built WordPress password protection feature, a few extra lines of " +"directives and exceptions need to be added to your .htacces file so that " +"people trying to access pages are not automatically blocked." +msgstr "" +"В случае, если Вы защищаете свои посты и страницы паролями, используя " +"соответствующую встроенную функцию WordPress, в файл .htaccess необходимо " +"добавить некоторые дополнительные директивы." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:410 +msgid "" +"By enabling this checkbox the plugin will add the necessary rules and " +"exceptions to your .htacces file so that people trying to access these pages " +"are not automatically blocked." +msgstr "" +"Включение этой опции добавит в файл .htaccess необходимые правила, чтобы " +"люди, пытающиеся получить доступ к этим страницам, не были автоматически " +"заблокированы. " + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:412 +msgid "Helpful Tip:" +msgstr "Полезная подсказка:" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:414 +msgid "" +"If you do not use the WordPress password protection feature for your posts " +"or pages then it is highly recommended that you leave this checkbox disabled." +msgstr "" +"Если Вы не используете встроенную функцию WordPress для защиты постов или " +"страниц паролями, крайне рекомендуется оставить этот чекбокс неотмеченным." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:421 +msgid "My Site Has a Theme or Plugins Which Use AJAX" +msgstr "На этом сайте есть тема или плагин, которые используют AJAX" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:424 +msgid "Check this if your site uses AJAX functionality." +msgstr "Поставьте галочку, если Ваш сайт использует функциональность AJAX." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:429 +msgid "" +"In the cases where your WordPress installation has a theme or plugins which " +"use AJAX, a few extra lines of directives and exceptions need to be added to " +"your .htacces file to prevent AJAX requests from being automatically blocked " +"by the brute force prevention feature." +msgstr "" +"В случае, если на Вашем сайте есть темы или плагины, которые используют " +"AJAX, тогда несколько дополнительных строчек с командами и исключениями " +"должны быть добавлены в файле .htaccess Вашего сайта для того, чтобы запросы " +"AJAX не были бы заблокированы защитой от брутфорса." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:431 +msgid "" +"By enabling this checkbox the plugin will add the necessary rules and " +"exceptions to your .htacces file so that AJAX operations will work as " +"expected." +msgstr "" +"Включение этой опции добавит в файл .htaccess необходимые правила, чтобы " +"процедуры AJAX работали правильно. " + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:446 +msgid "The cookie test was successful. You can now enable this feature." +msgstr "Куки-тест прошел успешно - можете активировать эту опцию." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:449 +msgid "Save Feature Settings" +msgstr "Сохранить настройки" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:456 +msgid "" +"The cookie test failed on this server. So this feature cannot be used on " +"this site." +msgstr "Результат Куки-теста негативный - использование этой функции невозможно." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:461 +msgid "" +"Before using this feature you are required to perform a cookie test first. " +"This is to make sure that your browser cookie is working correctly and that " +"you won't lock yourself out." +msgstr "" +"Перед включением этой опции необходимо протестировать куки, чтобы убедиться " +"в корректной обработке куки-файлов Вашим браузером и, тем самым, избежать " +"блокировки Вашего собственного аккаунта." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:463 +msgid "Perform Cookie Test" +msgstr "Протестировать куки" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:503 +msgid "" +"This feature allows you to add a captcha form on the WordPress login page." +msgstr "" +"Данная функция позволяет Вам добавить поле CAPTCHA на странице логина " +"WordPress." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:504 +msgid "" +"Users who attempt to login will also need to enter the answer to a simple " +"mathematical question - if they enter the wrong answer, the plugin will not " +"allow them login even if they entered the correct username and password." +msgstr "" +"Кроме того, пользователи, которые пытаются авторизоваться, должны ввести " +"ответ на очень простой математический вопрос. Если на вопрос ответили " +"неверно, тогда плагин не даст им войти, даже если верно указали имя " +"пользователя и пароль." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:505 +msgid "" +"Therefore, adding a captcha form on the login page is another effective yet " +"simple \"Brute Force\" prevention technique." +msgstr "" +"Поэтому, добавить форму CAPTCHA на странице логина - еще один эффективный и " +"одновременно простой способ защиты от брутфорс-атак." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:511 +msgid "Login Form Captcha Settings" +msgstr "Настройки формы CAPTCHA на странице логина" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:522 +msgid "Enable Captcha On Login Page" +msgstr "Включить CAPTCHA на странице логина" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:525 +msgid "Check this if you want to insert a captcha form on the login page" +msgstr "" +"Включите этот чекбокс, чтобы добавить CAPTCHA на странице логина Вашего сайта" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:531 +msgid "Custom Login Form Captcha Settings" +msgstr "Особые настройки формы CAPTCHA на странице логина" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:540 +msgid "Enable Captcha On Custom Login Form" +msgstr "Активировать форму CAPTCHA на измененной странице логина" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:543 +msgid "" +"Check this if you want to insert captcha on a custom login form generated by " +"the following WP function: wp_login_form()" +msgstr "" +"Поставьте галочку тут, чтобы добавить CAPTCHA в специальную форму логина, " +"которая генерируется функцией wp_login_form()" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:549 +msgid "Lost Password Form Captcha Settings" +msgstr "Настройки CAPTCHA на странице \"потерянного пароля\"" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:559 +msgid "Enable Captcha On Lost Password Page" +msgstr "Активировать CAPTCHA на странице \"потерянного пароля\"" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:562 +msgid "" +"Check this if you want to insert a captcha form on the lost password page" +msgstr "" +"Поставьте галочку тут, чтобы добавить CAPTCHA на странице восстановления " +"пароля" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:584 +msgid "Nonce check failed for save whitelist settings!" +msgstr "Не удалось сохранить новые настройки белого списка!" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:641 +msgid "" +"The All In One WP Security Whitelist feature gives you the option of only " +"allowing certain IP addresses or ranges to have access to your WordPress " +"login page." +msgstr "" +"Функция белого списка All In One WP Security дает возможность открыть доступ " +"на страницу логина WordPress только с определенных адресов или диапазонов IP." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:642 +msgid "" +"This feature will deny login access for all IP addresses which are not in " +"your whitelist as configured in the settings below." +msgstr "" +"Эта функция запретит доступ на логин для всех адресов IP, которых нет в " +"белом списке ниже." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:643 +msgid "" +"The plugin achieves this by writing the appropriate directives to your ." +"htaccess file." +msgstr "Для этого плагин запишет соответствующие правила в файл .htaccess." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:644 +msgid "" +"By allowing/blocking IP addresses via the .htaccess file your are using the " +"most secure first line of defence because login access will only be granted " +"to whitelisted IP addresses and other addresses will be blocked as soon as " +"they try to access your login page." +msgstr "" +"Пропуская / блокируя разные IP-адреса с помощью директив файла .htaccess, Вы " +"используете первую линию обороны, т.к. доступ к странице логина будет открыт " +"только IP-адресам из белого списка. Все остальные адреса будут " +"заблокированы, как только пытаются открыть страницу логина." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:651 +#, php-format +msgid "" +"Attention: If in addition to enabling the white list feature, you also have " +"the %s feature enabled, you will still need to use your secret word " +"in the URL when trying to access your WordPress login page." +msgstr "" +"Внимание: Если, кроме функции Белого списка, Вы еще активировали функцию %s, " +"тогда вам все равно приходится использовать адрес (URL) с секретным " +"словом для доступа к Вашей странице логин в WordPress" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:652 +msgid "" +"These features are NOT functionally related. Having both of them enabled on " +"your site means you are creating 2 layers of security." +msgstr "" +"Эти функции независимы друг от друга. Если они обе активированы, тогда на Вашем " +"сайте работают два уровня защиты одновременно." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:657 +msgid "Login IP Whitelist Settings" +msgstr "Белый список IP-адресов для логина" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:668 +msgid "Enable IP Whitelisting" +msgstr "Активировать белый список IP-адресов" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:671 +msgid "" +"Check this if you want to enable the whitelisting of selected IP addresses " +"specified in the settings below" +msgstr "" +"Отметьте этот чекбокс, если Вы хотите пользоваться белым списком избранных " +"IP-адресов ниже" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:675 +msgid "Your Current IP Address" +msgstr "Ваш текущий адрес IP" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:678 +msgid "" +"You can copy and paste this address in the text box below if you want to " +"include it in your login whitelist." +msgstr "" +"Можно скопировать и вставить этот адрес в текстовое поле внизу, если хотите " +"включить его в белый список адресов для логина." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:682 +msgid "Enter Whitelisted IP Addresses:" +msgstr "Введите IP-адреса для белого списка:" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:686 +msgid "" +"Enter one or more IP addresses or IP ranges you wish to include in your " +"whitelist. Only the addresses specified here will have access to the " +"WordPress login page." +msgstr "" +"Введите один или несколько IP-адресов или диапазоны IP-адресов, которые хотите " +"включить в Ваш белый список. Доступ к странице логина в WordPress будет " +"открыт только с этих адресов." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:734 +msgid "" +"This feature allows you to add a special hidden \"honeypot\" field on the " +"WordPress login page. This will only be visible to robots and not humans." +msgstr "" +"Данная функция позволяет добавить специальное, скрытое поле \"honeypot\" на " +"странице логина. Оно будет видно только роботам." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:735 +msgid "" +"Since robots usually fill in every input field from a login form, they will " +"also submit a value for the special hidden honeypot field." +msgstr "" +"Т.к. роботы обычно заполняют все поля в форме логина, они отправят и какое-" +"то значение в специальном, скрытом поле медового бочка (honey pot)." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:736 +msgid "" +"The way honeypots work is that a hidden field is placed somewhere inside a " +"form which only robots will submit. If that field contains a value when the " +"form is submitted then a robot has most likely submitted the form and it is " +"consquently dealt with." +msgstr "" +"Медовый боченок (honey pot) означает, что скрытое поле помещается внутри " +"какой-то формы, и его заполняют только роботы. Если данное поле имеет некое " +"значение, когда содержание формы передается на сервер, тогда форма, скорее " +"всего, была заполнена роботом, и сервер, следовательно, поведет себя " +"соответственно." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:737 +msgid "" +"Therefore, if the plugin detects that this field has a value when the login " +"form is submitted, then the robot which is attempting to login to your site " +"will be redirected to its localhost address - http://127.0.0.1." +msgstr "" +"Поэтому, если плагин видит, что данное поле было заполнено, робот, который " +"пытается логиниться на Вашем сайте, будет перенаправлен на свой собственный " +"адрес, а именно - http://127.0.0.1." + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:743 +msgid "Login Form Honeypot Settings" +msgstr "Настройки медового боченка (honey pot) страницы логина" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:754 +msgid "Enable Honeypot On Login Page" +msgstr "Активировать медовый боченок (honey pot) на странице логина" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:757 +msgid "" +"Check this if you want to enable the honeypot feature for the login page" +msgstr "" +"Включите этот чекбокс, чтобы активировать функция медовый бачок / honeypot " +"на странице логина" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:24 +msgid "System Info" +msgstr "Информация о системе" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:25 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:460 +msgid "Locked IP Addresses" +msgstr "Заблокированные IP-адреса" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:75 +msgid "For information, updates and documentation, please visit the" +msgstr "" +"Для получения информации, обновлений и документации, пожалуйста посетите" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:75 +msgid "AIO WP Security & Firewall Plugin" +msgstr "плагин AIO WP Security & Firewall" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:75 +msgid "Page" +msgstr "Страница" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:76 +msgid "Follow us" +msgstr "Следите за нами" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:76 +msgid "" +"Twitter, Google+ or via Email to stay up to date about the new security " +"features of this plugin." +msgstr "" +"Через Twitter, Google+ или по электронной почте Вы можете всегда быть в " +"курсе последних новинок нашего плагина по безопасности." + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:92 +msgid "Security Strength Meter" +msgstr "Измеритель уровня безопасности" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:121 +msgid "Total Achievable Points: " +msgstr "Максимально возможный балл: " + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:123 +msgid "Current Score of Your Site: " +msgstr "Текущий балл Вашего сайта: " + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:133 +msgid "Security Points Breakdown" +msgstr "Диаграмма безопасности Вашего сайта" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:174 +msgid "Spread the Word" +msgstr "Расскажите друзьям" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:177 +msgid "" +"We are working hard to make your WordPress site more secure. Please support " +"us, here is how:" +msgstr "" +"Мы стараемся делать Ваш сайт WordPress более защищенным. Поддержите нас! Вот " +"как это можно сделать: " + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:193 +msgid "Critical Feature Status" +msgstr "Текущий статус самых важных функций" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:197 +msgid "" +"Below is the current status of the critical features that you should " +"activate on your site to achieve a minimum level of recommended security" +msgstr "" +"Здесь показан текущий статус критически важных параметров, которые должны " +"быть активированы для достижения минимального уровня рекомендуемой " +"безопасности:" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:201 +msgid "Admin Username" +msgstr "Логин Администратора" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:216 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:25 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:42 +msgid "Login Lockdown" +msgstr "Блокировка авторизаций" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:231 +msgid "File Permission" +msgstr "Права на файлы" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:246 +msgid "Basic Firewall" +msgstr "Базовый файрволл" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:264 +msgid "Last 5 Logins" +msgstr "Последних 5 авторизаций" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:281 +msgid "No data found!" +msgstr "Ничего не найдено." + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:285 +msgid "Last 5 logins summary:" +msgstr "Информация о последних 5 логинах:" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:289 +msgid "User" +msgstr "Пользователь" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:290 +msgid "Date" +msgstr "Дата" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:291 +msgid "IP" +msgstr "IP" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:312 +msgid "Maintenance Mode Status" +msgstr "Режим обслуживания" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:316 +msgid "" +"Maintenance mode is currently enabled. Remember to turn it off when you are " +"done" +msgstr "" +"Режим обслуживания включен. Не забудьте отключить его, когда захотите " +"открыть сайт для посетителей." + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:319 +msgid "Maintenance mode is currently off." +msgstr "Режим обслуживания отключен." + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:323 +msgid "Maintenance Mode" +msgstr "Режим обслуживания" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:345 +msgid "Cookie Based Brute Prevention" +msgstr "Защита от брутфорс-атак, основанная на использовании куки" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:348 +msgid "Cookie-Based Brute Force" +msgstr "Защита от брутфорс-атак, основанная на использовании куки" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:352 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:380 +#, php-format +msgid "The %s feature is currently active." +msgstr "Функция %s сейчас активна." + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:353 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:381 +msgid "Your new WordPress login URL is now:" +msgstr "Новый адрес Вашей страницы логина сейчас:" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:413 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:29 +msgid "Logged In Users" +msgstr "Активных сессий" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:423 +msgid "Number of users currently logged in site-wide is:" +msgstr "Количество активных сессий на всем сайте на данный момент:" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:424 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:446 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:474 +#, php-format +msgid "Go to the %s menu to see more details" +msgstr "Выберите меню %s для более подробной информации" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:429 +msgid "There are no other site-wide users currently logged in." +msgstr "Кроме Вашей ни одной активной сессии на сайте нет." + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:445 +msgid "Number of users currently logged into your site (including you) is:" +msgstr "Количество пользователей на Вашем сайте сейчас (включая Вас): " + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:451 +msgid "There are no other users currently logged in." +msgstr "Сейчас нет активных пользователей, кроме Вас." + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:468 +msgid "There are no IP addresses currently locked out." +msgstr "В настоящий момент никакие IP-адреса не заблокированы." + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:473 +msgid "Number of temporarily locked out IP addresses: " +msgstr "Количество временно заблокированных IP-адресов: " + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:516 +msgid "Site Info" +msgstr "Информация о сайте" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:518 +msgid "Plugin Version" +msgstr "Версия плагина" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:519 +msgid "WP Version" +msgstr "Версия WP" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:521 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:523 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:619 +msgid "Version" +msgstr "Версия" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:522 +msgid "Table Prefix" +msgstr "Префикс таблиц БД" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:524 +msgid "Session Save Path" +msgstr "Место хранения сессии" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:526 +msgid "Server Name" +msgstr "Название сервера" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:527 +msgid "Cookie Domain" +msgstr "Домен для cookies" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:528 +msgid "Library Present" +msgstr "Текущая библиотека" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:529 +msgid "Debug File Write Permissions" +msgstr "Исправление прав доступа к файлам" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:533 +msgid "PHP Info" +msgstr "Информация о PHP" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:535 +msgid "PHP Version" +msgstr "Версия PHP" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:536 +msgid "PHP Memory Usage" +msgstr "Объем использованной памяти для PHP" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:537 +msgid " MB" +msgstr " мб" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:543 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:551 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:559 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:601 +msgid "N/A" +msgstr "N/A" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:546 +msgid "PHP Memory Limit" +msgstr "Максимальный oбъем памяти для PHP" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:554 +msgid "PHP Max Upload Size" +msgstr "Максимальный размер файла для загрузки через PHP" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:562 +msgid "PHP Max Post Size" +msgstr "Максимальный размер данных по операции POST для PHP" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:565 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:573 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:582 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:590 +msgid "On" +msgstr "Вкл" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:567 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:575 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:584 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:592 +msgid "Off" +msgstr "Выкл." + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:570 +msgid "PHP Safe Mode" +msgstr "Безопасный режим PHP" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:578 +msgid "PHP Allow URL fopen" +msgstr "PHP позволяет команду URL fopen" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:587 +msgid "PHP Allow URL Include" +msgstr "PHP позволяет команду URL include" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:595 +msgid "PHP Display Errors" +msgstr "PHP показывает ошибки" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:604 +msgid "PHP Max Script Execution Time" +msgstr "Максимальное время выполнения скриптов PHP" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:604 +msgid "Seconds" +msgstr "Сек." + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:608 +msgid "Active Plugins" +msgstr "Активные плагины" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:618 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:130 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:149 +msgid "Name" +msgstr "Название" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:620 +msgid "Plugin URL" +msgstr "URL плагина" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:656 +msgid "Currently Locked Out IP Addresses and Ranges" +msgstr "В настоящий момент заблокированны IP-адреса и диапазоны" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:26 +#: all-in-one-wp-security/admin/wp-security-database-menu.php:31 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:63 +msgid "DB Backup" +msgstr "Резервное копирование БД" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:30 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:61 +msgid "DB Prefix" +msgstr "Префикс таблиц БД" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:93 +msgid "Nonce check failed for DB prefix change operation!" +msgstr "Не удалось изменить префикс таблиц БД." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:101 +msgid "" +"The plugin has detected that it cannot write to the wp-config.php file. This " +"feature can only be used if the plugin can successfully write to the wp-" +"config.php file." +msgstr "" +"Плагину не удалось внести изменения в файл wp-config.php. Эта опция может " +"быть использована, только если на файл wp-config будут установлены права на " +"запись." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:114 +msgid "Please enter a value for the DB prefix." +msgstr "Пожалуйста, введите значение для нового префикса." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:123 +msgid "" +"ERROR: The table prefix can only contain numbers, letters, " +"and underscores." +msgstr "" +"ОШИБКА: Префикс может содержать только латинские буквы, " +"цифры и символ подчеркивания." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:131 +msgid "Change Database Prefix" +msgstr "Изменение префикса таблиц базы данных" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:134 +msgid "" +"Your WordPress DB is the most important asset of your website because it " +"contains a lot of your site's precious information." +msgstr "" +"Ваша база данных - это наиболее ценная часть Вашего сайта, так как в ней находится весь " +"контент и настройки." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:135 +msgid "" +"The DB is also a target for hackers via methods such as SQL injections and " +"malicious and automated code which targets certain tables." +msgstr "" +"База данных также является мишенью для хакеров, пытающихся получить контроль " +"над определенными таблицами методом SQL-инъекций и внедрением " +"вредоносного кода." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:136 +msgid "" +"One way to add a layer of protection for your DB is to change the default " +"WordPress table prefix from \"wp_\" to something else which will be " +"difficult for hackers to guess." +msgstr "" +"Одним из способов усилить защиту от таких атак является изменение префикса " +"таблиц базы данных с устанавливаемого по умолчанию («wp_») на какой-нибудь " +"другой, который было бы тяжело угадать." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:137 +msgid "" +"This feature allows you to easily change the prefix to a value of your " +"choice or to a random value set by this plugin." +msgstr "" +"Эти опции позволяют легко изменить префикс БД на любое введенное Вами " +"значение или на сгенерированное плагином." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:143 +msgid "DB Prefix Options" +msgstr "Опции изменения префикса таблиц БД" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:154 +#, php-format +msgid "It is recommended that you perform a %s before using this feature" +msgstr "Рекомендуется перед изменением префикса создать %s базы данных" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:163 +msgid "Current DB Table Prefix" +msgstr "Текущий префикс таблиц БД" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:169 +msgid "" +"Your site is currently using the default WordPress DB prefix value of \"wp_" +"\". \n" +" To increase your site's security you should " +"consider changing the DB prefix value to another value." +msgstr "" +"На Вашем сайте используется префикс таблиц базы данных по умолчанию: «wp_».\n" +"Для усиления безопасности, измените его на любое другое значение." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:176 +msgid "Generate New DB Table Prefix" +msgstr "Сгенерировать новый префикс таблиц БД" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:179 +msgid "" +"Check this if you want the plugin to generate a random 6 character string " +"for the table prefix" +msgstr "" +"Отметьте, чтобы плагин сам сгенерировал префикс длиной в 6 случайных символов" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:180 +msgid "OR" +msgstr "ИЛИ" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:182 +msgid "" +"Choose your own DB prefix by specifying a string which contains letters and/" +"or numbers and/or underscores. Example: xyz_" +msgstr "" +"Введите собственный вариант префикса, используя латинские буквы, цифры и " +"символ подчеркивания. Например: xyz_" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:186 +msgid "Change DB Prefix" +msgstr "Изменить префикс таблиц" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:207 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:86 +msgid "Nonce check failed for manual DB backup operation!" +msgstr "Создать бэкап базы данных не удалось!" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:224 +msgid "" +"DB Backup was successfully completed! You will receive the backup file via " +"email if you have enabled \"Send Backup File Via Email\", otherwise you can " +"retrieve it via FTP from the following directory:" +msgstr "" +"Резервное копирование БД успешно завершено! Вы получите резерную копию по " +"электронной почте, если Вы активировали эту опцию. В обратном случае, Вы " +"можете загрузить копию по протоколу FTP из следующего каталога:" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:226 +msgid "Your DB Backup File location: " +msgstr "Место хранения файлов резервных копий базы данных:" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:234 +msgid "DB Backup failed. Please check the permissions of the backup directory." +msgstr "" +"Создать резервную копию БД не удалось. Проверьте права на запись для бэкап-" +"директории плагина." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:251 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:135 +msgid "" +"You entered a non numeric value for the \"backup time interval\" field. It " +"has been set to the default value." +msgstr "" +"Вы ввели нечисловое значение в поле «Частота создания бэкапов». Сохранено " +"значение по умолчанию." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:258 +msgid "" +"You entered a non numeric value for the \"number of backup files to keep\" " +"field. It has been set to the default value." +msgstr "" +"Вы ввели нечисловое значение в поле «Количество бэкапов для хранения». " +"Сохранено значение по умолчанию." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:265 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:165 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:117 +msgid "" +"You have entered an incorrect email address format. It has been set to your " +"WordPress admin email as default." +msgstr "" +"Email-адрес введен неправильно. По умолчанию установлен Email администратора " +"сайта." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:298 +msgid "Manual Backup" +msgstr "Создание резервной копии базы данных вручную" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:304 +msgid "To create a new DB backup just click on the button below." +msgstr "Для немедленного создания резервной копии нажмите эту кнопку:" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:307 +msgid "Create DB Backup Now" +msgstr "Создать бэкап базы данных сейчас" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:311 +msgid "Automated Scheduled Backups" +msgstr "Автоматическое создание резервных копий" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:323 +msgid "Enable Automated Scheduled Backups" +msgstr "Включить автоматическое создание бэкапов" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:326 +msgid "" +"Check this if you want the system to automatically generate backups " +"periodically based on the settings below" +msgstr "" +"Включите этот чекбокс, чтобы система автоматически создавала резервные копии " +"базы данных по расписанию" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:330 +msgid "Backup Time Interval" +msgstr "Частота создания бэкапов" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:333 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:281 +msgid "Hours" +msgstr "Часов" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:334 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:282 +msgid "Days" +msgstr "Дней" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:335 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:283 +msgid "Weeks" +msgstr "Недель" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:337 +msgid "Set the value for how often you would like an automated backup to occur" +msgstr "Укажите периодичность создания резервных копий" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:341 +msgid "Number of Backup Files To Keep" +msgstr "Количество бэкапов для хранения" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:343 +msgid "" +"Thie field allows you to choose the number of backup files you would like to " +"keep in the backup directory" +msgstr "" +"Укажите в этом поле количество резервных копий, которые должны храниться в " +"бэкап-директории плагина" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:347 +msgid "Send Backup File Via Email" +msgstr "Пересылать бэкап на Email" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:350 +msgid "" +"Check this if you want the system to email you the backup file after a DB " +"backup has been performed" +msgstr "" +"Включите этот чекбокс, если хотите получать бэкап базы данных на свой Email" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:352 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:327 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:235 +msgid "Enter an email address" +msgstr "Введите Email-адрес" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:383 +msgid "Error - Could not get tables or no tables found!" +msgstr "Ощибка - не удалось запросить таблицы, или таблицы не найдены!" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:387 +msgid "Starting DB prefix change operations....." +msgstr "Начинаем процесс изменения префикса таблиц базы данных..." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:389 +#, php-format +msgid "" +"Your WordPress system has a total of %s tables and your new DB prefix will " +"be: %s" +msgstr "" +"Общее количество таблиц в базе данных WordPress %s и новый префикс таблиц " +"будет установлен как: %s" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:395 +#: all-in-one-wp-security/classes/wp-security-utility.php:206 +msgid "" +"Failed to make a backup of the wp-config.php file. This operation will not " +"go ahead." +msgstr "" +"Не удалось создать резервную копию файла wp-config.php. Операция прервана." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:399 +msgid "A backup copy of your wp-config.php file was created successfully!" +msgstr "Резервная копия Вашего файла wp-config.php успешно создана!" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:421 +#, php-format +msgid "%s table name update failed" +msgstr "Не удалось переименовать таблицу %s" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:433 +#, php-format +msgid "Please change the prefix manually for the above tables to: %s" +msgstr "" +"Пожалуйста, измените префикс для вышеперечисленных таблиц на «%s» вручную" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:436 +#, php-format +msgid "%s tables had their prefix updated successfully!" +msgstr "Префикс таблиц %s успешно изменен!" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:452 +msgid "wp-config.php file was updated successfully!" +msgstr "Файл wp-config.php успешно обновлен!" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:455 +#, php-format +msgid "" +"The \"wp-config.php\" file was not able to be modified. Please modify this " +"file manually using your favourite editor and search \n" +" for variable \"$table_prefix\" and assign the following " +"value to that variable: %s" +msgstr "" +"Не удалось внести корректировки в файл wp-config.php. Пожалуйста, " +"отредактируйте его вручную, заменив значение переменной «$table_prefix» на " +"значение %s" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:468 +#: all-in-one-wp-security/admin/wp-security-database-menu.php:490 +#, php-format +msgid "Update of table %s failed: unable to change %s to %s" +msgstr "Запись в таблицу %s не получилась: не удалось изменить %s на %s" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:472 +msgid "" +"The options table records which had references to the old DB prefix were " +"updated successfully!" +msgstr "" +"Записи в таблице опций сайта, имеющие ссылки на старый префикс таблиц базы " +"данных, успешно обновлены!" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:494 +#, php-format +msgid "" +"The %s table records which had references to the old DB prefix were updated " +"successfully!" +msgstr "" +"Записи в таблице %s, имеющие ссылки на старый префикс таблиц базы данных, " +"успешно обновлены!" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:523 +#, php-format +msgid "" +"Error updating user_meta table where new meta_key = %s, old meta_key = %s " +"and user_id = %s." +msgstr "" +"Не удалось скорректировать записи в таблице «user_meta», где новый meta_key " +"= %s, old meta_key = %s и user_id = %s." + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:528 +msgid "" +"The usermeta table records which had references to the old DB prefix were " +"updated successfully!" +msgstr "" +"Записи в таблице «user_meta», имеющие ссылки на старый префикс таблиц базы " +"данных, успешно обновлены!" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:530 +msgid "DB prefix change tasks have been completed." +msgstr "Префикс таблиц базы данных успешно изменен." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:24 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:107 +msgid "File Change Detection" +msgstr "Отслеживание изменений в файлах" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:25 +msgid "Malware Scan" +msgstr "Сканирование от вредоносных программ" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:26 +msgid "DB Scan" +msgstr "Сканирование базы данных" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:95 +msgid "There have been no file changes since the last scan." +msgstr "С прошлого сканирования не было никаких изменений в файлах." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:105 +msgid "Nonce check failed for manual file change detection scan operation!" +msgstr "Не удалось выполнить ручное сканирование изменений в файлах!" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:112 +msgid "" +"The plugin has detected that this is your first file change detection scan. " +"The file details from this scan will be used to detect file changes for " +"future scans!" +msgstr "" +"Плагин отметил, что сканирование измененных файлов было сделано " +"впервые. Результат данного сканирования будет сохранен для того, чтобы в " +"будущем детектировать изменения в файлах." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:114 +msgid "Scan Complete - There were no file changes detected!" +msgstr "Сканирование закончено - изменений файлов не обнаружено!" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:203 +msgid "" +"NEW SCAN COMPLETED: The plugin has detected that you have made changes to " +"the \"File Types To Ignore\" or \"Files To Ignore\" fields.\n" +" In order to ensure that future scan results are " +"accurate, the old scan data has been refreshed." +msgstr "" +"НОВОЕ СКАНИРОВАНИЕ ЗАКОНЧЕНО: Плагин установил, что Вы изменили настройки в " +"поле \"Игнорировать следующие типы файлов\" или \"Игнорировать следующие " +"файлы\".\n" +" Для того, чтобы будущие сканирования показывали верный " +"результат, данные предыдущих сканирований былы обновлены." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:213 +msgid "" +"All In One WP Security & Firewall has detected that there was a change in " +"your host's files." +msgstr "" +"All In One WP Security & Firewall обнаружил изменения в файлах Вашего сайта." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:215 +msgid "View Scan Details & Clear This Message" +msgstr "Посмотреть результат сканирования и закрыть это сообщение" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:224 +msgid "" +"If given an opportunity hackers can insert their code or files into your " +"system which they can then use to carry out malicious acts on your site." +msgstr "" +"Если для этого есть возможность, хакеры могут вставить свой код или " +"файлы в Вашу систему, что потом позволит им выполнять вредные действия на " +"вашем сайте." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:225 +msgid "" +"Being informed of any changes in your files can be a good way to quickly " +"prevent a hacker from causing damage to your website." +msgstr "" +"Знание о любых изменениях Ваших файлов может помочь Вам быстро предотвратить " +"вредние действия или разрушение на Вашем сайте." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:226 +msgid "" +"In general, WordPress core and plugin files and file types such as \".php\" " +"or \".js\" should not change often and when they do, it is important that " +"you are made aware when a change occurs and which file was affected." +msgstr "" +"В принципе, файлы системы WordPress и разных плагинов, такие как \".php\" or " +"\".js\" не должны меняться слишком часто. А если они изменились, то важно об " +"этом знать, и увидеть, какой файл был изменен." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:227 +msgid "" +"The \"File Change Detection Feature\" will notify you of any file change " +"which occurs on your system, including the addition and deletion of files by " +"performing a regular automated or manual scan of your system's files." +msgstr "" +"Функция \"Детектирование изменений файлов\" сообщит Вам о любых изменениях " +"файлов в Вашей системе, включая появление и удаление файлов, путем " +"регулярного автоматического или ручного сканирования файлов Вашей системы." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:228 +msgid "" +"This feature also allows you to exclude certain files or folders from the " +"scan in cases where you know that they change often as part of their normal " +"operation. (For example log files and certain caching plugin files may " +"change often and hence you may choose to exclude such files from the file " +"change detection scan)" +msgstr "" +"Эта функция позволяет исключить определенные файлы или папки из " +"сканирования, в случае, если Вы знаете, что они часто меняются при обычной " +"работе системы. (Например, лог-файлы или определенные файлы кеширования могут " +"меняться часто, и Вы можете выбрать не включать их в сканирование изменений " +"файлов)" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:233 +msgid "Manual File Change Detection Scan" +msgstr "Ручное сканирование изменений файлов" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:239 +msgid "" +"To perform a manual file change detection scan click on the button below." +msgstr "Для запуска сканирования файлов сейчас, нажмите эту кнопку." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:242 +msgid "Perform Scan Now" +msgstr "Сканировать сейчас" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:246 +msgid "View Last Saved File Change Results" +msgstr "" +"Посмотреть сохраненные результаты последнего сканирования изменений файлов" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:252 +msgid "" +"Click the button below to view the saved file change results from the last " +"scan." +msgstr "" +"Нажмите кнопку внизу, чтобы посмотреть сохраненный отчет об измененных " +"файлах во время последнего сканирования." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:255 +msgid "View Last File Change" +msgstr "Посмотреть последние изменения файлов" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:259 +msgid "File Change Detection Settings" +msgstr "Настройки детектирования изменений файлов" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:271 +msgid "Enable Automated File Change Detection Scan" +msgstr "Активировать автоматическое сканирование изменений файлов" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:274 +msgid "" +"Check this if you want the system to automatically/periodically scan your " +"files to check for file changes based on the settings below" +msgstr "" +"Включите этот чекбокс, чтобы система автоматически проверяла, есть ли " +"изменения в файлах, на основе настроек ниже" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:278 +msgid "Scan Time Interval" +msgstr "Частота сканирования" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:285 +msgid "Set the value for how often you would like a scan to occur" +msgstr "Укажите периодичность сканирования" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:289 +msgid "File Types To Ignore" +msgstr "Игнорировать файлы следующих типов" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:292 +msgid "" +"Enter each file type or extension on a new line which you wish to exclude " +"from the file change detection scan." +msgstr "" +"Введите каждый тип файла или его расширение на отдельной строчке, " +"чтобы исключить их из сканирования изменений файлов." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:296 +msgid "" +"You can exclude file types from the scan which would not normally pose any " +"security threat if they were changed. These can include things such as image " +"files." +msgstr "" +"Вы можете исключить типы таких файлов, которые обычно не создают " +"никакой опасности, если они были изменены. Это может, например, касаться " +"файлов с изображениями." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:297 +msgid "" +"Example: If you want the scanner to ignore files of type jpg, png, and bmp, " +"then you would enter the following:" +msgstr "" +"Например, если Вы хотите, чтобы сканирование не обращало внимания на файлы " +"типов jpg, png или bmp, тогда следует ввести следующее:" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:298 +msgid "jpg" +msgstr "jpg" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:299 +msgid "png" +msgstr "png" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:300 +msgid "bmp" +msgstr "bmp" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:306 +msgid "Files/Directories To Ignore" +msgstr "Игнорировать определенные файлы и папки" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:309 +msgid "" +"Enter each file or directory on a new line which you wish to exclude from " +"the file change detection scan." +msgstr "" +"Введите каждый файл или каждую папку на новой строчке, чтобы " +"исключить их из сканирования изменений файлов." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:313 +msgid "" +"You can exclude specific files/directories from the scan which would not " +"normally pose any security threat if they were changed. These can include " +"things such as log files." +msgstr "" +"Вы можете исключить определенные файлы/папки из сканирования, если они не " +"создают опасность, когда будут изменены. Это может, например, " +"касаться лог-файлов." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:314 +msgid "" +"Example: If you want the scanner to ignore certain files in different " +"directories or whole directories, then you would enter the following:" +msgstr "" +"Например, если Вы хотите, чтобы сканнер игнорировал определенные файлы в " +"разных папках, или целые папки, тогда Вы могли бы ввести следующее:" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:315 +msgid "cache/config/master.php" +msgstr "cache/config/master.php" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:316 +msgid "somedirectory" +msgstr "somedirectory" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:322 +msgid "Send Email When Change Detected" +msgstr "Отправить Email когда найдено изменение" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:325 +msgid "" +"Check this if you want the system to email you if a file change was detected" +msgstr "" +"Включите этот чекбокс, если хотите получать уведомление об измененных файлах " +"на свой Email" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:343 +msgid "What is Malware?" +msgstr "Что такое вредоносные программы (malware)?" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:344 +msgid "" +"The word Malware stands for Malicious Software. It can consist of things " +"like trojan horses, adware, worms, spyware and any other undesirable code " +"which a hacker will try to inject into your website." +msgstr "" +"Слово malware означает malicious software - опасные программы. Это могут, " +"например, быть троянские кони, программы для подачи рекламы, программы-" +"черви, шпионские программы или другие нежелательные программы, которые хакер " +"старается разместить на Вашем сайте." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:345 +msgid "" +"Often when malware code has been inserted into your site you will normally " +"not notice anything out of the ordinary based on appearances, but it can " +"have a dramatic effect on your site's search ranking." +msgstr "" +"Часто, когда вредоносные программы размещены на Вашем сайте, Вы не заметите " +"ничего странного, но этот факт может серьезно сказаться на позиции Вашего " +"сайта в поисковых системах." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:346 +msgid "" +"This is because the bots and spiders from search engines such as Google have " +"the capability to detect malware when they are indexing the pages on your " +"site, and consequently they can blacklist your website which will in turn " +"affect your search rankings." +msgstr "" +"Дело в том, что роботы индексации поисковых систем, например Google, " +"способны распознать вредоносные программы когда индексируют страницы Вашего " +"сайта и в результате могут записать Ваш сайт в черный список, что, в свою " +"очередь, сильно испортит Вашу позицию в поисковых системах." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:350 +msgid "Scanning For Malware" +msgstr "Сканирование вредоносных программ" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:351 +msgid "" +"Due to the constantly changing and complex nature of Malware, scanning for " +"such things using a standalone plugin will not work reliably. This is " +"something best done via an external scan of your site regularly." +msgstr "" +"Так как вредоносные программы - постоянно меняющийся и сложный предмет, их невозможно " +"искать надежно с помощью самостоятельного плагина. Эта задача лучше решается " +"регулярным внешним сканированием Вашего сайта." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:352 +msgid "" +"This is why we have created an easy-to-use scanning service which is hosted " +"off our own server which will scan your site for malware once every day and " +"notify you if it finds anything." +msgstr "" +"Поэтому мы создали легкую в употреблении услугу, которая находится вне " +"вашего сервера, и ищет на Вашем сайте вредоносные программы каждый день и " +"сообщит Вам, если что-нибудь найдется." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:353 +msgid "When you sign up for this service you will get the following:" +msgstr "Когда заключите договор об этой услуге, Вы получите следующее:" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:355 +msgid "Automatic Daily Scan of 1 Website" +msgstr "Автоматическое ежедневное сканирование одного сайта" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:356 +msgid "Automatic Malware & Blacklist Monitoring" +msgstr "Автоматическое отслеживание вредоносных программ и черных списков" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:357 +msgid "Automatic Email Alerting" +msgstr "Автоматическое оповещение по Email" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:358 +msgid "Site uptime monitoring" +msgstr "Отслеживание, сколько времени сайт доступен в интернете" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:359 +msgid "Site response time monitoring" +msgstr "Отслеживание, как быстро отвечает сайт на запросы" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:360 +msgid "Malware Cleanup" +msgstr "Чистка от вредоносных программ" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:361 +msgid "Blacklist Removal" +msgstr "Удаление из черного списка" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:362 +msgid "No Contract (Cancel Anytime)" +msgstr "Нет контракта (вы можете отменить услугу в любое время)" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:364 +#, php-format +msgid "To learn more please %s." +msgstr "Чтобы узнать больше, пожалуйста %s." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:374 +msgid "" +"This feature performs a basic database scan which will look for any common " +"suspicious-looking strings and javascript and html code in some of the " +"Wordpress core tables." +msgstr "" +"Данная функция проводит простое сканирование базы данных в поисках типичных " +"странных текстов, программ javascript или html в некоторых основных траблицах " +"WordPress." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:391 +msgid "Nonce check failed for manual db scan operation!" +msgstr "Не удалось выполнить ручное сканирование базы данных!" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:402 +msgid "" +"This feature will perform a basic database scan which will look for any " +"common suspicious-looking strings and javascript and html code in some of " +"the Wordpress core tables." +msgstr "" +"Данная функция проводит простое сканирование базы данных в поисках типичных " +"странных текстов, программ javascript или html в некоторых основных траблицах " +"WordPress." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:403 +msgid "" +"If the scan finds anything it will list all \"potentially\" malicious " +"results but it is up to you to verify whether a result is a genuine example " +"of a hacking attack or a false positive." +msgstr "" +"Если при сканировании что-нибудь будет найдено, появится список " +"\"потенциально\" вредоносных результатов. Но Вам следует проверить, " +"действительно ли данные строки являются результатом атаки хакеров, или это " +"на самом деле безопасное вещи, которые случайно совпали с правилами поиска." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:404 +msgid "" +"As well as scanning for generic strings commonly used in malicious cases, " +"this feature will also scan for some of the known \"pharma\" hack entries " +"and if it finds any it will automatically delete them." +msgstr "" +"Кроме поиска типичных строк, которые часто встречаются во вредоносных " +"программах, данная функция так же ищет некоторые известные записи взлома " +"\"pharma\" и удаляет их, если их найдет." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:405 +msgid "" +"The WordPress core tables scanned by this feature include: posts, postmeta, " +"comments, links, users, usermeta, and options tables." +msgstr "" +"Основные таблицы WordPress, которые сканируются: posts, postmeta, comments, " +"links, users, usermeta, и options." + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:410 +msgid "Database Scan" +msgstr "Сканирование базы данных" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:416 +msgid "To perform a database scan click on the button below." +msgstr "Для начала сканирования базы данных нажмите эту кнопку" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:419 +msgid "Perform DB Scan" +msgstr "Выполнить сканирование базы данных" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:462 +msgid "Latest File Change Scan Results" +msgstr "Результаты последнего сканирования по изменениям файлов" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:461 +msgid "The following files were added to your host." +msgstr "Следующие новые файлы были добавлены на Вашем сервере" + +#: all-in-one-wp-security/admin/wp-security-file-scan.php:715 +msgid "The following files were added to your host" +msgstr "Следующие новые файлы были добавлены на Вашем сервере" + +#: all-in-one-wp-security/admin/wp-security-file-scan.php:724 +msgid "The following files were removed from your host" +msgstr "Следующие новые файлы были удалены на Вашем сервере" + +#: all-in-one-wp-security/admin/wp-security-file-scan.php:734 +msgid "The following files were changed on your host" +msgstr "Следующие новые файлы были изменены на Вашем сервере" + +#: all-in-one-wp-security/admin/wp-security-file-scan.php:68 +msgid "A summary of the scan results is shown below:" +msgstr "Суммарный результат сканирования" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:474 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:495 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:519 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:27 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:28 +msgid "File" +msgstr "Файл" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:475 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:496 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:520 +msgid "File Size" +msgstr "Размер" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:476 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:497 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:521 +msgid "File Modified" +msgstr "Файл изменен" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:482 +msgid "The following files were removed from your host." +msgstr "Следующие файлы были удалены на Вашем сервере" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:506 +msgid "The following files were changed on your host." +msgstr "Следующие файлы были изменены на Вашем сервере" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:26 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:67 +msgid "File Permissions" +msgstr "Доступ к файлам" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:27 +msgid "PHP File Editing" +msgstr "Редактирование файлов PHP" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:28 +msgid "WP File Access" +msgstr "доступ к файлам WP" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:29 +msgid "Host System Logs" +msgstr "Системные журналы" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:96 +#, php-format +msgid "The permissions for %s were succesfully changed to %s" +msgstr "Разрешения для %s успешно изменены на %s" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:100 +#, php-format +msgid "Unable to change permissions for %s!" +msgstr "Невозможно изменить разрешения для %s!" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:106 +msgid "File Permissions Scan" +msgstr "Сканирование разрешений на файлы и директории WordPress" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:109 +msgid "" +"Your WordPress file and folder permission settings govern the accessability " +"and read/write privileges of the files and folders which make up your WP " +"installation." +msgstr "" +"Установки разрешений на чтение/запись для файлов и папок WordPress, позволяющие управлять " +"доступом к этим файлам." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:110 +msgid "" +"Your WP installation already comes with reasonably secure file permission " +"settings for the filesystem." +msgstr "" +"При первоначальной установке WordPress автоматически присваивает разумные " +"права доступа к своей файловой системе." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:111 +msgid "" +"However, sometimes people or other plugins modify the various permission " +"settings of certain core WP folders or files such that they end up making " +"their site less secure because they chose the wrong permission values." +msgstr "" +"Однако, иногда люди или плагины изменяют разрешения на определенные " +"директории и файлы, снижая таким образом уровень безопасности своего сайта, " +"установив неверные права доступа." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:112 +msgid "" +"This feature will scan the critical WP core folders and files and will " +"highlight any permission settings which are insecure." +msgstr "" +"Эта опция сканирует все важные директории и файлы ядра WordPress и " +"подсвечивает все небезопасные настройки." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:118 +msgid "WP Directory and File Permissions Scan Results" +msgstr "Результат сканирования разрешений на директории и файлы WordPress" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:131 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:150 +msgid "File/Folder" +msgstr "Файл/Папка" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:132 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:151 +msgid "Current Permissions" +msgstr "Текущие разрешения" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:133 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:152 +msgid "Recommended Permissions" +msgstr "Рекомендуемые разрешения" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:134 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:153 +msgid "Recommended Action" +msgstr "Рекомендуемое действие" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:191 +msgid "Your PHP file editing settings were saved successfully." +msgstr "Настройки редактирования файлов PHP сохранены!" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:195 +msgid "" +"Operation failed! Unable to modify or make a backup of wp-config.php file!" +msgstr "" +"Операция не удалась! Невозможно изменить или сделать резервную копию файла " +"wp-config.php!" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:201 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:69 +msgid "File Editing" +msgstr "Редактирование файлов" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:204 +msgid "" +"The Wordpress Dashboard by default allows administrators to edit PHP files, " +"such as plugin and theme files." +msgstr "" +"По умолчанию из панели администрирования WordPress позволяется редактировать " +"PHP-файлы плагинов и тем." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:205 +msgid "" +"This is often the first tool an attacker will use if able to login, since it " +"allows code execution." +msgstr "" +"Это первейшее подспорье хакеру, получившему доступ в консоль администратора, " +"предоставляющее ему возможность выполнить любой код на Вашем сервере." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:206 +msgid "" +"This feature will disable the ability for people to edit PHP files via the " +"dashboard." +msgstr "" +"Данная опция отключает возможность редактирования файлов из панели " +"администратора." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:212 +msgid "Disable PHP File Editing" +msgstr "Отключение редактирования PHP-файлов" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:224 +msgid "Disable Ability To Edit PHP Files" +msgstr "Отключить возможность редактирования PHP-файлов" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:227 +msgid "" +"Check this if you want to remove the ability for people to edit PHP files " +"via the WP dashboard" +msgstr "" +"Отметьте этот чекбокс, чтобы запретить редактирование PHP-файлов из админ-" +"панели WordPress" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:271 +msgid "" +"You have successfully saved the Prevent Access to Default WP Files " +"configuration." +msgstr "Запрет доступа к информационным файлам WordPress установлен." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:280 +msgid "WordPress Files" +msgstr "Информационные файлы WordPress" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:283 +#, php-format +msgid "" +"This feature allows you to prevent access to files such as %s, %s and %s " +"which are delivered with all WP installations." +msgstr "" +"Данная опция запретит доступ к таким файлам как %s, %s и %s, которые " +"создаются во время установки WordPress и не несут в себе системной нагрузки, " + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:284 +msgid "" +"By preventing access to these files you are hiding some key pieces of " +"information (such as WordPress version info) from potential hackers." +msgstr "" +"но ограничение доступа к этим файлам позволит Вам скрыть от хакеров важную " +"информацию (такую как версия WordPress)." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:289 +msgid "Prevent Access to Default WP Files" +msgstr "Запрет доступа к информационным файлам WordPress" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:300 +msgid "Prevent Access to WP Default Install Files" +msgstr "" +"Запретить доступ к информационным файлам, создаваемых по умолчанию при " +"установке WordPress." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:303 +msgid "" +"Check this if you want to prevent access to readme.html, license.txt and wp-" +"config-sample.php." +msgstr "" +"Отметьте этот чекбокс, чтобы запретить доступ к файлам readme.html, license." +"txt и wp-config-sample.php." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:307 +msgid "Save Setting" +msgstr "Сохранить настройки" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:331 +msgid "System Logs" +msgstr "Системные журналы" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:334 +msgid "" +"Sometimes your hosting platform will produce error or warning logs in a file " +"called \"error_log\"." +msgstr "" +"Ваш сервер периодически может публиковать отчеты об ошибках в специальных " +"файлах, которые называются «error_log»." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:335 +msgid "" +"Depending on the nature and cause of the error or warning, your hosting " +"server can create multiple instances of this file in numerous directory " +"locations of your WordPress installation." +msgstr "" +"В зависимости от характера и причин ошибки, Ваш сервер может создать " +"несколько файлов журналов в различных каталогах Вашей установки WordPress." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:336 +msgid "" +"By occassionally viewing the contents of these logs files you can keep " +"informed of any underlying problems on your system which you might need to " +"address." +msgstr "" +"Просматривая время от времени эти журналы, Вы будете в курсе любых основных " +"проблем на Вашем сайте и сможете воспользоваться этой информацией для их " +"решения." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:342 +msgid "View System Logs" +msgstr "Просмотр системных журналов" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:347 +msgid "Enter System Log File Name" +msgstr "Введите название лог-файла системы" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:349 +msgid "Enter your system log file name. (Defaults to error_log)" +msgstr "Введите название лог-файла Вашей системы. (по умольчанию: error_log)" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:352 +msgid "View Latest System Logs" +msgstr "Просмотр последних записей в системных журналах" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:354 +msgid "Loading..." +msgstr "Загрузка..." + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:371 +msgid "No system logs were found!" +msgstr "Записей в системных журналах не найдено!" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:424 +msgid "Set Recommended Permissions" +msgstr "Установить рекомендуемые разрешения" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:430 +msgid "No Action Required" +msgstr "Действие не требуется" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:470 +#, php-format +msgid "Showing latest entries of error_log file: %s" +msgstr "Последние записи об ошибках в журнале: %s" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:27 +msgid "Basic Firewall Rules" +msgstr "Базовые правила файрволла" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:28 +msgid "Additional Firewall Rules" +msgstr "Дополнительные правила файрволла" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:29 +msgid "5G Blacklist Firewall Rules" +msgstr "Настройки 5G Файрволл" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:30 +msgid "Internet Bots" +msgstr "Интернет-боты" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:31 +msgid "Prevent Hotlinks" +msgstr "Предотвратить хотлинки" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:32 +msgid "404 Detection" +msgstr "Детектирование 404" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:115 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:663 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:104 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:317 +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:96 +msgid "Settings were successfully saved" +msgstr "Настройки успешно сохранены" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:124 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:503 +msgid "Firewall Settings" +msgstr "Настройки файрволла (брандмауэра)" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:131 +#, php-format +msgid "" +"This should not have any impact on your site's general functionality but if " +"you wish you can take a %s of your .htaccess file before proceeding." +msgstr "" +"Активация этих опций не должна иметь никакого влияния на общую " +"функциональность Вашего сайта, но при желании Вы можете создать %s Вашего ." +"htaccess файла, перед тем, как включите эти настройки." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:132 +msgid "" +"The features in this tab allow you to activate some basic firewall security " +"protection rules for your site." +msgstr "" +"Опции в этой вкладке позволяют применить некоторые базовые правила защиты " +"для Вашего сайта." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:133 +msgid "" +"The firewall functionality is achieved via the insertion of special code " +"into your currently active .htaccess file." +msgstr "" +"Данная функциональность брандмауэра достигается методом добавления в Ваш " +"файл .htaccess некоторых специальных директив." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:143 +msgid "Attention:" +msgstr "Внимание!" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:144 +msgid "Currently the " +msgstr "В настоящее время опция " + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:144 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:191 +msgid "Enable Pingback Protection" +msgstr "Активировать Пингбэк-защиту" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:144 +msgid " is active." +msgstr " активна." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:145 +msgid "" +"Please beware that if you are using the WordPress iOS App, then you will " +"need to deactivate this feature in order for the app to work properly." +msgstr "" +"Обратите внимание: если Вы используете WordPress iOS App, тогда для верной " +"работы этого приложения необходимо выключить данную функцию." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:153 +msgid "Basic Firewall Settings" +msgstr "Основные функции брандмауэра" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:161 +msgid "Enable Basic Firewall Protection" +msgstr "Активировать основные функции брандмауэра" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:164 +msgid "Check this if you want to apply basic firewall protection to your site." +msgstr "" +"Отметьте этот чекбокс, чтобы активировать основные функции файрволла на " +"Вашем сайте." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:168 +msgid "" +"This setting will implement the following basic firewall protection " +"mechanisms on your site:" +msgstr "Эта опция запустит следующий базовый механизм защиты на Вашем сайте:" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:169 +msgid "1) Protect your htaccess file by denying access to it." +msgstr "1) Защитит файл htaccess от несанкционированного доступа." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:170 +msgid "2) Disable the server signature." +msgstr "2) Отключит сигнатуру сервера в ответах на запросы." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:171 +msgid "3) Limit file upload size (10MB)." +msgstr "3) Ограничит лимит на размер загружаемых файлов до 10Мб." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:172 +msgid "4) Protect your wp-config.php file by denying access to it." +msgstr "4) Защитит Ваш файл wp-config.php от несанкционированного доступа." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:173 +msgid "" +"The above firewall features will be applied via your .htaccess file and " +"should not affect your site's overall functionality." +msgstr "" +"Вышеперечисленная функциональность будет достигнута методом добавления в " +"файл .htaccess определенных директив и не должна повлиять на общую " +"работоспособность Вашего сайта." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:174 +msgid "" +"You are still advised to take a backup of your active .htaccess file just in " +"case." +msgstr "" +"Однако, просто на всякий случай, рекомендуется предварительно сделать " +"резервную копию файла .htaccess." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:183 +msgid "WordPress Pingback Vulnerability Protection" +msgstr "Защита от Пингбэк-уязвимостей" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:194 +msgid "" +"Check this if you are not using the WP XML-RPC functionality and you want to " +"enable protection against WordPress pingback vulnerabilities." +msgstr "" +"Включите этот чекбокс, если Вы хотите активировать защиту от пингбэк-" +"уязвимостей и не используете в своем WordPress функциональность XML-RPC." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:198 +msgid "" +"This setting will add a directive in your .htaccess to disable access to the " +"WordPress xmlrpc.php file which is responsible for the XML-RPC functionality " +"such as pingbacks in WordPress." +msgstr "" +"Эта настройка добавит в файл .htaccess директиву, запрещающую доступ к файлу " +"xmlrpc.php, который отвечает за функциональность XML-RPC и за пингбэки в " +"Вашем WordPress." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:199 +msgid "" +"Hackers can exploit various pingback vulnerabilities in the WordPress XML-" +"RPC API in a number of ways such as:" +msgstr "" +"Хакеры часто пользуются уязвимостями в этой функциональности, чтобы достичь " +"следующих целей:" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:200 +msgid "1) Denial of Service (DoS) attacks" +msgstr "" +"1) Перегрузить сервер запросами и вывести тем самым его из строя (DoS-атака)" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:201 +msgid "2) Hacking internal routers." +msgstr "2) Взломать внутренние маршрутизаторы" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:202 +msgid "3) Scanning ports in internal networks to get info from various hosts." +msgstr "" +"3) Просканировать порты внутренней сети, чтобы получить информацию от " +"различных хостов на сервере." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:203 +msgid "" +"Apart from the security protection benefit, this feature may also help " +"reduce load on your server, particularly if your site currently has a lot of " +"unwanted traffic hitting the XML-RPC API on your installation." +msgstr "" +"Помимо усиления защиты сайта, эта опция поможет значительно снизить нагрузку " +"на Ваш сервер, особенно если Ваш сайт получает много нежелательного трафика, " +"нацеленного на XML-RPC API." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:204 +msgid "" +"NOTE: You should only enable this feature if you are not currently using the " +"XML-RPC functionality on your WordPress installation." +msgstr "" +"ВНИМАНИЕ: Эту опцию можно активировать только в том случае, если Вы в своей " +"WordPress-установке не используете функциональность XML-RPC." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:211 +msgid "Save Basic Firewall Settings" +msgstr "Сохранить основные настройки брандмауэра" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:283 +msgid "" +"You have successfully saved the Additional Firewall Protection configuration" +msgstr "Дополнительные настройки конфигурации брандмауэра успешно сохранены!" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:297 +msgid "Additional Firewall Protection" +msgstr "Дополнительные функции брандмауэра" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:301 +#, php-format +msgid "" +"Due to the nature of the code being inserted to the .htaccess file, this " +"feature may break some functionality for certain plugins and you are " +"therefore advised to take a %s of .htaccess before applying this " +"configuration." +msgstr "" +"В силу определенных особенностей, эти правила могут нарушить " +"функциональность некоторых плагинов, поэтому рекомендуется до их включения " +"сделать %s файла .htaccess." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:303 +msgid "" +"This feature allows you to activate more advanced firewall settings to your " +"site." +msgstr "" +"В этой вкладке Вы можете активировать дополнительные настройки файрволлf для " +"защиты Вашего сайта." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:304 +msgid "" +"The advanced firewall rules are applied via the insertion of special code to " +"your currently active .htaccess file." +msgstr "" +"Эти опции реализуются методом добавления определенных правил в Ваш файл ." +"htaccess." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:313 +msgid "Listing of Directory Contents" +msgstr "Просмотр содержимого директорий" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:322 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:91 +msgid "Disable Index Views" +msgstr "Отключить возможность просмотра директорий" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:325 +msgid "Check this if you want to disable directory and file listing." +msgstr "" +"Включите этот чекбокс, чтобы предотвратить свободный просмотр директорий на " +"Вашем сайте" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:330 +msgid "" +"By default, an Apache server will allow the listing of the contents of a " +"directory if it doesn't contain an index.php file." +msgstr "" +"По умолчанию сервер Apache позволяет увидеть содержимое директорий, если в них " +"нет файла index.php или index.html." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:332 +msgid "This feature will prevent the listing of contents for all directories." +msgstr "Эта функция запрещает такую возможность." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:334 +msgid "" +"NOTE: In order for this feature to work \"AllowOverride\" of the Indexes " +"directive must be enabled in your httpd.conf file. Ask your hosting provider " +"to check this if you don't have access to httpd.conf" +msgstr "" +"ВНИМАНИЕ: Для того, чтобы эта функция работала, в Вашем файле httpd.conf " +"должна быть включена директива «AllowOverride». Если у Вас нет доступа к " +"файлу httpd.conf, обратитесь к своему хостинг-провайдеру." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:343 +msgid "Trace and Track" +msgstr "HTTP-трассировка" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:352 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:92 +msgid "Disable Trace and Track" +msgstr "Отключить HTTP-трассировку" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:355 +msgid "Check this if you want to disable trace and track." +msgstr "Отметьте этот чекбокс, чтобы защититься от HTTP-трассировки." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:360 +msgid "" +"HTTP Trace attack (XST) can be used to return header requests and grab " +"cookies and other information." +msgstr "" +"Атаки на основе HTTP-трассировки (межсайтовой трассировки, или XST), " +"применяются, чтобы получить информацию из возвращаемых сервером http-" +"заголовков и похитить куки и другую информацию." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:362 +msgid "" +"This hacking technique is usually used together with cross site scripting " +"attacks (XSS)." +msgstr "" +"Эта хакерская технология обычно применяется в сочетании с межсайтовым " +"скриптингом (XSS)." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:364 +msgid "" +"Disabling trace and track on your site will help prevent HTTP Trace attacks." +msgstr "Данная опция предназначена для защиты от этого типа атак." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:373 +msgid "Proxy Comment Posting" +msgstr "Комментарии через Прокси-серверы" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:383 +msgid "Forbid Proxy Comment Posting" +msgstr "Запретить комментарии через прокси" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:386 +msgid "Check this if you want to forbid proxy comment posting." +msgstr "Отметьте этот чекбокс, чтобы запретить комментирование через прокси." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:391 +msgid "" +"This setting will deny any requests that use a proxy server when posting " +"comments." +msgstr "" +"Эта опция отклонит любые запросы, использующие прокси-сервер при отправке " +"комментариев." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:392 +msgid "" +"By forbidding proxy comments you are in effect eliminating some SPAM and " +"other proxy requests." +msgstr "" +"Это усилит защиту от спама в комментариях и от других нежелательных прокси-" +"запросов." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:401 +msgid "Bad Query Strings" +msgstr "Нежелательные строки в запросах" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:411 +msgid "Deny Bad Query Strings" +msgstr "Запретить вредоносные строки в запросах" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:414 +msgid "This will help protect you against malicious queries via XSS." +msgstr "Включите этот чекбокс, чтобы активировать защиту от XSS-атак." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:419 +msgid "" +"This feature will write rules in your .htaccess file to prevent malicious " +"string attacks on your site using XSS." +msgstr "" +"Эта опция предназначена для защиты от ввода вредоносного кода при XSS-атаках." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:420 +msgid "" +"NOTE: Some of these strings might be used for plugins or themes and hence " +"this might break some functionality." +msgstr "" +"ВНИМАНИЕ: Некоторые из блокируемых строк могут использоваться в каких-то " +"плагинах или Вашей теме, и, следовательно, данная опция может нарушить их " +"функциональность." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:421 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:451 +msgid "" +"You are therefore strongly advised to take a backup of your active .htaccess " +"file before applying this feature." +msgstr "" +"ОБЯЗАТЕЛЬНО СДЕЛАЙТЕ РЕЗЕРВНУЮ КОПИЮ ВАШЕГО .HTACCESS-ФАЙЛА, ДО ТОГО, КАК ВЫ " +"АКТИВИРУЕТЕ ЭТУ ФУНКЦИЮ! " + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:430 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:95 +msgid "Advanced Character String Filter" +msgstr "Дополнительная фильтрация символов" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:440 +msgid "Enable Advanced Character String Filter" +msgstr "Активировать дополнительную фильтрацию символов" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:443 +msgid "This will block bad character matches from XSS." +msgstr "Включите этот чекбокс, чтобы защитить сайт от XSS-атак." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:448 +msgid "" +"This is an advanced character string filter to prevent malicious string " +"attacks on your site coming from Cross Site Scripting (XSS)." +msgstr "" +"Это дополнительная фильтрация символов для блокировки вредоносных команд, " +"используемых в XSS-атаках (межсайтовый скриптинг)." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:449 +msgid "" +"This setting matches for common malicious string patterns and exploits and " +"will produce a 403 error for the hacker attempting the query." +msgstr "" +"Данная опция фиксирует распространенные образцы вредоносного кода и " +"эксплойты и вернет хакеру сообщение об ошибке 403 (доступ запрещен)." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:450 +msgid "NOTE: Some strings for this setting might break some functionality." +msgstr "" +"ВНИМАНИЕ: Некоторые директивы в этих установках могут нарушить " +"функциональность сайта (это зависит от хостинг-провайдера)." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:459 +msgid "Save Additional Firewall Settings" +msgstr "Сохранить дополнительные настройки брандмауэра" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:494 +msgid "You have successfully saved the 5G Firewall Protection configuration" +msgstr "Вы успешно сохранили настройки 5G-защиты" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:507 +#, php-format +msgid "" +"This feature allows you to activate the 5G firewall security protection " +"rules designed and produced by %s." +msgstr "" +"Эта опция позволяет включить функции защиты «5G», разработанные и " +"произведенные %s." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:508 +msgid "" +"The 5G Blacklist is a simple, flexible blacklist that helps reduce the " +"number of malicious URL requests that hit your website." +msgstr "" +"5G-брандмауэр (файрволл) - это простая и гибкая защита, помогающая " +"уменьшить количество вредоносных запросов, добавляемых в URL Вашего сайта." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:509 +msgid "" +"The added advantage of applying the 5G firewall to your site is that it has " +"been tested and confirmed by the people at PerishablePress.com to be an " +"optimal and least disruptive set of .htaccess security rules for general WP " +"sites running on an Apache server or similar." +msgstr "" +"Дополнительным преимуществом 5G-защиты является тот факт, что она была " +"тщательно протестирована и подтверждена профессионалами из PerishablePress." +"com, как наименее разрушительный набор директив безопасности для файла ." +"htaccess, на сайтах, работающих на сервере Apache или аналогичных." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:510 +#, php-format +msgid "" +"Therefore the 5G firewall rules should not have any impact on your site's " +"general functionality but if you wish you can take a %s of your .htaccess " +"file before proceeding." +msgstr "" +"Следовательно, данная защита не должна иметь никакого влияния на общую " +"функциональность Вашего сайта, но, тем не менее, при желании Вы можете " +"создать %s Вашего .htaccess-файла, до того, как активируете эту защиту." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:516 +msgid "5G Blacklist/Firewall Settings" +msgstr "Настройки 5G Файрволла" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:528 +msgid "Enable 5G Firewall Protection" +msgstr "Включить 5G Файрволл" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:531 +msgid "" +"Check this if you want to apply the 5G Blacklist firewall protection from " +"perishablepress.com to your site." +msgstr "Включите этот чекбокс, чтобы активировать 5G-защиту на Вашем сайте." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:535 +msgid "" +"This setting will implement the 5G security firewall protection mechanisms " +"on your site which include the following things:" +msgstr "" +"Эта опция активирует 5G-защиту на Вашем сайте, которая включает следующее:" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:536 +msgid "1) Block forbidden characters commonly used in exploitative attacks." +msgstr "" +"1) Блокировку запрещенных символов, обычно используемых в хакерских атаках." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:537 +msgid "2) Block malicious encoded URL characters such as the \".css(\" string." +msgstr "" +"2) Блокировку вредоносных закодированных строк в URL, таких как «.css(» и т." +"п." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:538 +msgid "" +"3) Guard against the common patterns and specific exploits in the root " +"portion of targeted URLs." +msgstr "" +"3) Защиту от распространенных шаблонов вредоносного кода и специфических " +"эксплойтов (последовательностей команд, использующих известные уязвимости) в " +"URL." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:539 +msgid "" +"4) Stop attackers from manipulating query strings by disallowing illicit " +"characters." +msgstr "4) Блокировку запрещенных символов в параметрах запросов." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:540 +msgid "....and much more." +msgstr "...и многое другое." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:546 +msgid "Save 5G Firewall Settings" +msgstr "Сохранить настройки 5G Файерволл" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:577 +msgid "The Internet bot settings were successfully saved" +msgstr "Настройки по интернет-ботам успешно сохранены" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:581 +msgid "Internet Bot Settings" +msgstr "Настройки по интернет-ботам" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:588 +#, php-format +msgid "%s?" +msgstr "%s?" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:590 +msgid "" +"A bot is a piece of software which runs on the Internet and performs " +"automatic tasks. For example when Google indexes your pages it uses " +"automatic bots to achieve this task." +msgstr "" +"Бот - компьютерная программа, которая выполняется в интернете и выполняет " +"автоматические задачи. Google, например, использует автоматические боты " +"для того, чтобы каталогизировать страницы Вашего сайта." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:591 +msgid "" +"A lot of bots are legitimate and non-malicous but not all bots are good and " +"often you will find some which try to impersonate legitimate bots such as " +"\"Googlebot\" but in reality they have nohing to do with Google at all." +msgstr "" +"Много ботов безвредны и полезны, но не все боты хорошие. Иногда Вы можете " +"заметить, что кто-то пытается сделать вид, что он - бот от Google " +"(Googlebot), хотя на самом деле никак с Google не связан." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:592 +msgid "" +"Although most of the bots out there are relatively harmless sometimes " +"website owners want to have more control over which bots they allow into " +"their site." +msgstr "" +"Хотя большинство ботов в интернете относительно безвредны, иногда " +"администраторы сайтов могут захотеть контролировать, каким ботам они " +"позволяют ходить по их сайту." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:593 +msgid "" +"This feature allows you to block bots which are impersonating as a Googlebot " +"but actually aren't. (In other words they are fake Google bots)" +msgstr "" +"Данная функция позволяет блокировать боты, которые делают вид, что они - " +"Googlebot, когда это неправда. (Другими словами, они - ложные боты Google)" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:594 +msgid "" +"Googlebots have a unique indentity which cannot easily be forged and this " +"feature will indentify any fake Google bots and block them from reading your " +"site's pages." +msgstr "" +"У ботов Google - уникальные признаки, которые сложно подделать. Данная " +"функция распознает любые ложные боты Google и блокирует им доступ к " +"страницам Вашего сайта." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:600 +msgid "" +"Attention: Sometimes non-malicious Internet organizations " +"might have bots which impersonate as a \"Googlebot\"." +msgstr "" +"Внимание: Бывает, что боты и не злонамеренных организаций " +"представляют себя как \"Googlebot\"." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:601 +msgid "" +"Just be aware that if you activate this feature the plugin will block all " +"bots which use the \"Googlebot\" string in their User Agent information but " +"are NOT officially from Google (irrespective whether they are malicious or " +"not)." +msgstr "" +"Просто имейте в виду, что если Вы активируете данную функцию, тогда Вы " +"будете блокировать любые боты, которые представляют себя строчкой " +"\"Googlebot\" в поле User Agent information, но при этом не от Google " +"(независимо от того, злонамеренные они, или нет)." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:602 +msgid "" +"All other bots from other organizations such as \"Yahoo\", \"Bing\" etc will " +"not be affected by this feature." +msgstr "" +"Это не влияет на работу любых ботов от других организаций, например \"Yahoo" +"\", \"Bing\" и т.д." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:608 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:618 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:97 +msgid "Block Fake Googlebots" +msgstr "Блокировать ложные Googlebots" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:621 +msgid "Check this if you want to block all fake Googlebots." +msgstr "" +"Отметьте этот чекбокс, если хотите блокировать все ложные Google-боты." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:625 +msgid "" +"This feature will check if the User Agent information of a bot contains the " +"string \"Googlebot\"." +msgstr "" +"Данная функция проверяет, содержит ли поле User Agent information строчку " +"\"Googlebot\"." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:626 +msgid "" +"It will then perform a few tests to verify if the bot is legitimately from " +"Google and if so it will allow the bot to proceed." +msgstr "" +"В таком случае, функция выполняет несколько тестов для того, чтобы убедится, " +"действительно ли это - бот от Google. Если да, тогда позволяет боту " +"работать дальше." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:627 +msgid "" +"If the bot fails the checks then the plugin will mark it as being a fake " +"Googlebot and it will block it" +msgstr "" +"Если бот не выдержит этот тест, функция пометит его, как ложный Googlebot " +"и блокирует его" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:634 +msgid "Save Internet Bot Settings" +msgstr "Сохранить настройки по интернет-ботам" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:671 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:693 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:32 +msgid "Prevent Image Hotlinking" +msgstr "Предотвратить хотлинки на изображения" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:674 +msgid "" +"A Hotlink is where someone displays an image on their site which is actually " +"located on your site by using a direct link to the source of the image on " +"your server." +msgstr "" +"Хотлинк - когда кто-то на своем сайте показывает изображение, которое, на " +"самом деле, находится на Вашем сайте, используя прямую ссылку на исходник " +"изображения на Вашем сервере." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:675 +msgid "" +"Due to the fact that the image being displayed on the other person's site is " +"coming from your server, this can cause leaking of bandwidth and resources " +"for you because your server has to present this image for the people viewing " +"it on someone elses's site." +msgstr "" +"Так как изображение, которое показывается на чужом сайте, предоставляется с " +"Вашего сайта, для Вас это может привести к потерям скорости и ресурсов, потому что " +"Вашему серверу приходится передавать эту картину людям, которые видят ее на " +"чужом сайте." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:676 +msgid "" +"This feature will prevent people from directly hotlinking images from your " +"site's pages by writing some directives in your .htaccess file." +msgstr "" +"Данная функция предотвращает прямые хотлинки на изображения с Ваших страниц, " +"добавив несколько инструкций в Ваш файл .htaccess." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:681 +msgid "Prevent Hotlinking" +msgstr "Предотвратить хотлинки" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:696 +msgid "Check this if you want to prevent hotlinking to images on your site." +msgstr "" +"Отметьте этот чекбокс, чтобы предотвратить использование изображений этого " +"сайта на страницах чужих сайтов (хотлинкс)." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:716 +msgid "Nonce check failed for delete all 404 event logs operation!" +msgstr "Не удалось удалить все записи о ошибках 404!" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:727 +msgid "404 Detection Feature - Delete all 404 event logs operation failed!" +msgstr "Отслеживание ошибок 404 - не удалось удалить все записи ошибок 404!" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:731 +msgid "All 404 event logs were deleted from the DB successfully!" +msgstr "Все записи ошибок 404 были успешно удалены!" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:757 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:110 +msgid "" +"You entered a non numeric value for the lockout time length field. It has " +"been set to the default value." +msgstr "" +"Вы ввели нечисловое значение для периода блокирования. Установлено значение " +"по умолчанию." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:763 +msgid "" +"You entered an incorrect format for the \"Redirect URL\" field. It has been " +"set to the default value." +msgstr "" +"Вы ввели адрес неверного формата «Адрес переадресации». Сохранено значение " +"по умолчанию." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:795 +msgid "404 Detection Configuration" +msgstr "Настройки отслеживания ошибок 404" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:798 +msgid "" +"A 404 or Not Found error occurs when somebody tries to access a non-existent " +"page on your website." +msgstr "" +"Ошибка 404 или \"Страница не найдена\" возникает, когда кто-то запрашивает " +"страницу, которой нет на Вашем сайте. " + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:799 +msgid "" +"Typically, most 404 errors happen quite innocently when people have mis-" +"typed a URL or used an old link to page which doesn't exist anymore." +msgstr "" +"Большинство ошибок 404 случаются, когда посетитель написал URL страницы с " +"ошибкой или использовал старую ссылку на страницу, которой уже нет." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:800 +msgid "" +"However, in some cases you may find many repeated 404 errors which occur in " +"a relatively short space of time and from the same IP address which are all " +"attempting to access a variety of non-existent page URLs." +msgstr "" +"Однако, иногда можно заметить большое количество ошибок 404 подряд за " +"относительно короткое время с одного и того же адреса IP, с запросами URL " +"страниц, которых нет." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:801 +msgid "" +"Such behaviour can mean that a hacker might be trying to find a particular " +"page or URL for sinister reasons." +msgstr "" +"Такое поведение может означать, что хакер пытается найти какую-то " +"специальную страницу или URL со злым умыслом." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:802 +msgid "" +"This feature allows you to monitor all 404 events which occur on your site, " +"and it also gives you the option of blocking IP addresses for a configured " +"length of time." +msgstr "" +"Данная функция позволяет отслеживать все случаи 404, которые происходят на " +"вашем сайте, а также дает возможность заблокировать соответствующие адреса " +"IP на время, которое Вы выбираете." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:803 +msgid "" +"If you want to temporarily block an IP address, simply click the \"Temp Block" +"\" link for the applicable IP entry in the \"404 Event Logs\" table below." +msgstr "" +"Если хотите временно заблокировать IP-адрес, просто пометьте ссылку " +"\"Временно заблокировать\" в соответствующей строчке в таблице \"Логи ошибок " +"404\" внизу." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:808 +msgid "404 Detection Options" +msgstr "Настройки детектирования ошибок 404" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:820 +msgid "Enable IP Lockout For 404 Events" +msgstr "Активировать возможность блокировать IP-адреса в связи с ошибками 404" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:823 +msgid "Check this if you want to enable the lockout of selected IP addresses." +msgstr "" +"Отметьте этот чекбокс, если Вы хотите иметь возможнось банить указанные IP-" +"адреса." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:828 +msgid "" +"When you enable this checkbox, all 404 events on your site will be logged in " +"the table below. You can monitor these events and select some IP addresses " +"to be blocked in the table. All IP addresses you select to be blocked from " +"the \"404 Event Logs\" table section will be unable to access your site." +msgstr "" +"Если поставите галочку тут, все случаи ошибок 404 на Вашем сайте будете " +"включены в лог внизу. Вы можете следить за этими случаями и выбрать " +"некоторые адреса IP в таблице, которые Вы желаете заблокировать из таблицы " +"\"Логи ошибок 404\". Тогда эти адреса не будут иметь доступ к Вашему сайту." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:836 +msgid "Enable 404 Event Logging" +msgstr "Активировать отслеживание ошибок 404" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:839 +msgid "Check this if you want to enable the logging of 404 events" +msgstr "Отметьте эту опцию, если Вы хотите включить отслеживание ошибок 404" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:844 +msgid "Time Length of 404 Lockout (min)" +msgstr "Период блокирования из-за ошибок 404 (минуты)" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:846 +msgid "" +"Set the length of time for which a blocked IP address will be prevented from " +"visiting your site" +msgstr "Укажите период времени, на который будут блокироваться IP-адреса" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:851 +msgid "" +"You can lock any IP address which is recorded in the \"404 Event Logs\" " +"table section below." +msgstr "" +"Вы можете заблокировать любые IP-адреса, которые записаны в таблице \"Логи " +"ошибок 404\" внизу." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:853 +msgid "" +"To temporarily lock an IP address, hover over the ID column and click the " +"\"Temp Block\" link for the applicable IP entry." +msgstr "" +"Для того, чтобы заблокировать адрес IP, наведите мышь на графу ID и " +"нажмите на ссылку \"Заблокировать временно\" для соответствующего адреса IP." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:860 +msgid "404 Lockout Redirect URL" +msgstr "URL перенаправления при ошибке 404" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:862 +msgid "A blocked visitor will be automatically redirected to this URL." +msgstr "" +"Заблокированный посетитель автоматически будет переадресован на следующий " +"адрес URL." + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:871 +msgid "404 Event Logs" +msgstr "Логи ошибок 404" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:893 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:902 +msgid "Delete All 404 Event Logs" +msgstr "Удалить все записи ошибок 404" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:899 +msgid "Click this button if you wish to purge all 404 event logs from the DB." +msgstr "" +"Нажмите эту кнопку, если Вы хотите удалить все записи об ошибках 404 из БД." + +#: all-in-one-wp-security/admin/wp-security-list-404.php:105 +#: all-in-one-wp-security/admin/wp-security-list-acct-activity.php:79 +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:86 +#: all-in-one-wp-security/admin/wp-security-list-locked-ip.php:82 +#: all-in-one-wp-security/admin/wp-security-list-locked-ip.php:93 +#: all-in-one-wp-security/admin/wp-security-list-login-fails.php:78 +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:82 +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:93 +msgid "Please select some records using the checkboxes" +msgstr "Пожалуйста, выберите записи, отметив соответствующие чекбоксы" + +#: all-in-one-wp-security/admin/wp-security-list-acct-activity.php:107 +#: all-in-one-wp-security/admin/wp-security-list-login-fails.php:107 +msgid "The selected entries were deleted successfully!" +msgstr "Выбранные записи удалены!" + +#: all-in-one-wp-security/admin/wp-security-list-acct-activity.php:120 +#: all-in-one-wp-security/admin/wp-security-list-login-fails.php:119 +msgid "The selected entry was deleted successfully!" +msgstr "Выбранная запись удалена!" + +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:139 +msgid "" +"The selected IP addresses were saved in the blacklist configuration settings." +msgstr "Указанные IP-адреса внесены в черный список." + +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:153 +msgid "" +"The .htaccess file was successfully modified to include the selected IP " +"addresses." +msgstr "Файл .htaccess успешно изменен - в него внесены указанные IP-адреса." + +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:159 +msgid "" +"NOTE: The .htaccess file was not modified because you have disabled the " +"\"Enable IP or User Agent Blacklisting\" check box." +msgstr "" +"ВНИМАНИЕ: файл .htaccess не был изменен, так как опция «Вести Черный список» " +"неактивна." + +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:160 +#, php-format +msgid "" +"To block these IP addresses you will need to enable the above flag in the %s " +"menu" +msgstr "" +"Чтобы заблокировать эти IP-адреса, необходимо установить соответствующий " +"флаг в %s меню" + +#: all-in-one-wp-security/admin/wp-security-list-locked-ip.php:117 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:527 +msgid "The selected IP entries were unlocked successfully!" +msgstr "Указанные IP-адреса разблокированы!" + +#: all-in-one-wp-security/admin/wp-security-list-locked-ip.php:126 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:536 +msgid "The selected IP entry was unlocked successfully!" +msgstr "Указанный IP-адрес разблокирован!" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:127 +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:153 +msgid "Your account is now active" +msgstr "Ваша учётная запись активирована!" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:128 +msgid "Your account with username:" +msgstr "Ваш аккаунт и пользовательское имя:" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:128 +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:154 +msgid " is now active" +msgstr " сейчас активны" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:137 +msgid "The selected accounts were approved successfully!" +msgstr "Выбранные аккаунты успешно подтверждены!" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:141 +msgid "The following accounts failed to update successfully: " +msgstr "Следующие аккаунты не удалось изменить: !" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:149 +msgid "The selected account was approved successfully!" +msgstr "Выбранный аккаунт успешно подтвержден!" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:154 +msgid "Your account with username: " +msgstr "Ваш аккаунт и пользовательское имя:" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:180 +msgid "The selected accounts were deleted successfully!" +msgstr "Выбранные аккаунты успешно удалены!" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:188 +msgid "The selected account was deleted successfully!" +msgstr "Выбранный аккаунт успешно удален!" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:22 +msgid "Visitor Lockout" +msgstr "Блокирование доступа посетителей к сайту" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:88 +msgid "Site lockout feature settings saved!" +msgstr "Сайт переведен в режим обслуживания!" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:93 +msgid "General Visitor Lockout" +msgstr "Блокирование доступа посетителей к сайту" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:99 +msgid "" +"This feature allows you to put your site into \"maintenance mode\" by " +"locking down the front-end to all visitors except logged in users with super " +"admin privileges." +msgstr "" +"Эта опция позволяет перевести Ваш сайт в режим обслуживания, сделав " +"невозможным просмотр сайта посетителями, за исключением администраторов." + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:100 +msgid "" +"Locking your site down to general visitors can be useful if you are " +"investigating some issues on your site or perhaps you might be doing some " +"maintenance and wish to keep out all traffic for security reasons." +msgstr "" +"Это может быть очень полезным, если Вы что-то настраиваете, меняете дизайн, " +"проверяете работу плагинов и т.д. и т.п." + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:105 +msgid "Enable Front-end Lockout" +msgstr "Включить режим обслуживания" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:108 +msgid "" +"Check this if you want all visitors except those who are logged in as " +"administrator to be locked out of the front-end of your site." +msgstr "" +"Включите эту опцию, если Вы хотите, чтобы обычные посетители не могли " +"просматривать Ваш сайт - это смогут делать только администраторы." + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:112 +msgid "Enter a Message:" +msgstr "Введите сообщение:" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:124 +msgid "" +"Enter a message you wish to display to visitors when your site is in " +"maintenance mode." +msgstr "" +"Введите сообщение, которое увидят посетители, пока Ваш сайт будет " +"в режиме обслуживания" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:131 +msgid "Save Site Lockout Settings" +msgstr "Сохранить настройки блокировки сайта" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:23 +msgid "Copy Protection" +msgstr "Защита от копирования" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:24 +msgid "Frames" +msgstr "Фреймы" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:88 +msgid "Copy Protection feature settings saved!" +msgstr "Настройки функции защиты от копирования сохранены!" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:93 +msgid "Disable The Ability To Copy Text" +msgstr "Отключить возможность копировать текст" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:99 +msgid "" +"This feature allows you to disable the ability to select and copy text from " +"your front end." +msgstr "" +"Данная опция позволит Вам закрыть возможность пометить и копировать текст в " +"публичной части Вашего сайта." + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:104 +msgid "Enable Copy Protection" +msgstr "Активировать защиту от копирования" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:107 +msgid "" +"Check this if you want to disable the \"Right Click\", \"Text Selection\" " +"and \"Copy\" option on the front end of your site." +msgstr "" +"Включите эту опцию, если Вы хотите блокировать функции \"Правая кнопка\", " +"\"Пометка текста\" и \"Копировать\", на публичных страницах Вашего сайта." + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:114 +msgid "Save Copy Protection Settings" +msgstr "Сохранить настройки по защите от копирования" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:138 +msgid "Frame Display Prevention feature settings saved!" +msgstr "Настройки по защите от показа сайта внутри фрейма сохранены!" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:143 +msgid "Prevent Your Site From Being Displayed In a Frame" +msgstr "Предотвратите показ Вашего сайта внутри фрейма" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:149 +msgid "" +"This feature allows you to prevent other sites from displaying any of your " +"content via a frame or iframe." +msgstr "" +"Эта функция позволяет предотвратить показ Вашего сайта и его содержания " +"внутри frame или iframe на другом сайте." + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:150 +msgid "" +"When enabled, this feature will set the \"X-Frame-Options\" paramater to " +"\"sameorigin\" in the HTTP header." +msgstr "" +"Данная функция, когда активна, определяет параметр \"X-Frame-Options\" как " +"\"sameorigin\" в заголовках HTTP." + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:155 +msgid "Enable iFrame Protection" +msgstr "Активировать iframe-защиту" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:158 +msgid "" +"Check this if you want to stop other sites from displaying your content in a " +"frame or iframe." +msgstr "" +"Отметьте, если Вы хотите, чтобы другие сайты не могли показывать Ваш контент " +"внутри frame или iframe." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:26 +msgid "General Settings" +msgstr "Общие настройки" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:29 +msgid "WP Meta Info" +msgstr "WP мета-информация" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:30 +msgid "Import/Export" +msgstr "Импорт/Экспорт" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:97 +msgid "All the security features have been disabled successfully!" +msgstr "Все функции безопасности успешно деактивированы!" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:101 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:128 +msgid "" +"Could not write to the .htaccess file. Please restore your .htaccess file " +"manually using the restore functionality in the \".htaccess File\"." +msgstr "" +"Файл .htaccess недоступен для записи. Пожалуйста, исправьте Ваш файл ." +"htaccess вручную, с помощью функции восстановления файла \".htaccess\"." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:106 +msgid "" +"Could not write to the wp-config.php. Please restore your wp-config.php file " +"manually using the restore functionality in the \"wp-config.php File\"." +msgstr "" +"Не удалось записать изменения в файл wp-config.php. Пожалуйста, обновите Ваш " +"файл wp-config.php вручную, с помощью функции восстановления файла \"wp-" +"config.php File\"." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:124 +msgid "All firewall rules have been disabled successfully!" +msgstr "Все функции файрволла успешно деактивированы!" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:138 +msgid "WP Security Plugin" +msgstr "Плагин WP Security" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:140 +msgid "" +"Thank you for using our WordPress security plugin. There are a lot of " +"security features in this plugin." +msgstr "" +"Спасибо, что используете плагин WordPress security! " +"Мы предоставляем множество функций защиты." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:141 +msgid "" +"Go through each menu items and enable the security options to add more " +"security to your site. Start by activating the basic features first." +msgstr "" +"Воспользуйтесь меню плагина, чтобы активировать функции безопасности и " +"защитить свой сайт. Начните с основных функций." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:142 +msgid "" +"It is a good practice to take a backup of your .htaccess file, database and " +"wp-config.php file before activating the security features. This plugin has " +"options that you can use to backup those resources easily." +msgstr "" +"Перед тем, как Вы активируете функции безопасности, будет разумно создать " +"резервные копии важных файлов и базы данных. Вы легко можете это сделать, " +"воспользовавшись соответствующими опциями данного плагина." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:145 +msgid "Backup your database" +msgstr "Создать резервную копию базы данных" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:146 +msgid "Backup .htaccess file" +msgstr "Создать резервную копию файла .htaccess" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:147 +msgid "Backup wp-config.php file" +msgstr "Создать резервную копию файла wp-config.php" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:153 +msgid "Disable Security Features" +msgstr "Отключение функции безопасности" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:159 +msgid "" +"If you think that some plugin functionality on your site is broken due to a " +"security feature you enabled in this plugin, then use the following option " +"to turn off all the security features of this plugin." +msgstr "" +"Если Вы видите, что какие-либо плагины перестали работать из-за " +"активирования функций безопасности, воспользуйтесь этой кнопкой, чтобы все " +"эти функции отключить." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:163 +msgid "Disable All Security Features" +msgstr "Отключить все функции безопасности" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:169 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:179 +msgid "Disable All Firewall Rules" +msgstr "Отключить все функции файерволла" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:175 +msgid "" +"This feature will disable all firewall rules which are currently active in " +"this plugin and it will also delete these rules from your .htacess file. Use " +"it if you think one of the firewall rules is causing an issue on your site." +msgstr "" +"Данная функция отключает все правила файрволла, которые сейчас активны в " +"данном плагине, а также удалит эти правила из файла .htaccess. Используйте " +"её, если Вы считаете, что какое-то из правил файрволла создает проблемы на " +"вашем сайте." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:208 +msgid "" +"Your .htaccess file was successfully backed up! Using an FTP program go to " +"the \"/wp-content/aiowps_backups\" directory to save a copy of the file to " +"your computer." +msgstr "" +"Резервная копия файла .htaccess успшно создана! Скопируйте копию на свой " +"компьютер из папки \"/wp-content/aiowps_backups\" с помощью FTP-клиента." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:214 +msgid "" +"htaccess file rename failed during backup. Please check your root directory " +"for the backup file using FTP." +msgstr "" +"Не удалось переименовать файл .htaccess для создания резервной копии. " +"Воспользуйтесь FTP, чтобы вручную просмотреть корневую директорию сайта на " +"предмет наличия созданной резервной копии." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:220 +msgid "htaccess backup failed." +msgstr "Создать резервную копию файла .htaccess не удалось." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:235 +msgid "Please choose a .htaccess to restore from." +msgstr "Выберите резервную копию файла .htaccess" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:251 +msgid "" +"htaccess file restore failed. Please attempt to restore the .htaccess " +"manually using FTP." +msgstr "" +"Восстановить файл .htaccess не удалось. Попробуйте сделать это вручную, " +"используя FTP." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:255 +msgid "Your .htaccess file has successfully been restored!" +msgstr "Файл .htaccess успешно восстановлен!" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:261 +msgid "" +"htaccess Restore operation failed! Please check the contents of the file you " +"are trying to restore from." +msgstr "" +"Операция восстановления файла .htaccess не удалась. Убедитесь, что с " +"содержимым резервной копии все в порядке." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:267 +msgid ".htaccess File Operations" +msgstr "Операции с файлом .htaccess" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:270 +msgid "" +"Your \".htaccess\" file is a key component of your website's security and it " +"can be modified to implement various levels of protection mechanisms." +msgstr "" +"Файл «.htaccess» - это ключевой компонент обеспечения безопасности сайта, " +"который позволяет в значительной степени варьировать механизмы его защиты." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:271 +msgid "" +"This feature allows you to backup and save your currently active .htaccess " +"file should you need to re-use the the backed up file in the future." +msgstr "" +"В этом разделе Вы можете создать резервную копию файла .htaccess и, при " +"необходимости, " + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:272 +msgid "" +"You can also restore your site's .htaccess settings using a backed up ." +"htaccess file." +msgstr "восстановить его из резервной копии в будущем." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:286 +msgid "Save the current .htaccess file" +msgstr "Создание резервной копии файла .htaccess" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:290 +msgid "" +"Click the button below to backup and save the currently active .htaccess " +"file." +msgstr "Для создания резервной копии файла .htaccess нажмите эту кнопку:" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:291 +msgid "Backup .htaccess File" +msgstr "Создать и скачать резервную копию файла .htaccess" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:295 +msgid "Restore from a backed up .htaccess file" +msgstr "Восстановление файла .htaccess из резервной копии" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:301 +msgid ".htaccess file to restore from" +msgstr "Выберите файл резервной копии" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:307 +msgid "" +"After selecting your file, click the button below to restore your site using " +"the backed up htaccess file (htaccess_backup.txt)." +msgstr "" +"После того, как Вы выберите файл резервной копии (с именем htaccess_backup." +"txt) на своем компьютере, чтобы заменить им текущий активный файл .htaccess, " +"нажмите эту кнопку:" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:313 +msgid "Restore .htaccess File" +msgstr "Восстановить файл .htaccess" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:317 +msgid "View Contents of the currently active .htaccess file" +msgstr "Просмотр содержимого активного файла .htaccess" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:346 +msgid "Please choose a wp-config.php file to restore from." +msgstr "Выберите файл резервной копии." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:362 +msgid "" +"wp-config.php file restore failed. Please attempt to restore this file " +"manually using FTP." +msgstr "" +"Операция по восстановлению файла wp-config.php не удалась! Попытайтесь " +"сделать это вручную, используя FTP." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:366 +msgid "Your wp-config.php file has successfully been restored!" +msgstr "Файл wp-config.php успешно восстановлен!" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:372 +msgid "" +"wp-config.php Restore operation failed! Please check the contents of the " +"file you are trying to restore from." +msgstr "" +"Операция по восстановлению файла wp-config.php не удалась! Проверьте " +"содержимое файла резервной копии." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:378 +msgid "wp-config.php File Operations" +msgstr "Операции с файлом wp-config.php" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:381 +msgid "" +"Your \"wp-config.php\" file is one of the most important in your WordPress " +"installation. It is a primary configuration file and contains crucial things " +"such as details of your database and other critical components." +msgstr "" +"Файл wp-config.php - это один из наиболее важных файлов WordPress, " +"содержащий данные доступа к Вашей базе данных и другие очень ценные " +"настройки." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:382 +msgid "" +"This feature allows you to backup and save your currently active wp-config." +"php file should you need to re-use the the backed up file in the future." +msgstr "" +"В этом разделе Вы можете создать резервную копию этого файла и, при " +"необходимости," + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:383 +msgid "" +"You can also restore your site's wp-config.php settings using a backed up wp-" +"config.php file." +msgstr "восстановить его в будущем, используя эту резервную копию." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:397 +msgid "Save the current wp-config.php file" +msgstr "Создание резервной копии файла wp-config.php" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:401 +msgid "" +"Click the button below to backup and download the contents of the currently " +"active wp-config.php file." +msgstr "" +"Для создания резервной копии файла wp-config.php и его загрузки на Ваш " +"компьютер нажмите эту кнопку:" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:402 +msgid "Backup wp-config.php File" +msgstr "Создать и скачать резервную копию файла wp-config" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:407 +msgid "Restore from a backed up wp-config file" +msgstr "Восстановление файла wp-config из резервной копии" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:413 +msgid "wp-config file to restore from" +msgstr "Выберите резервную копию файла wp-config" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:419 +msgid "" +"After selecting your file click the button below to restore your site using " +"the backed up wp-config file (wp-config.php.backup.txt)." +msgstr "" +"После того, как Вы выберите файл резервной копии (с именем wp-config.php." +"backup.txt) на своем компьютере, чтобы заменить им текущий активный файл wp-" +"config, нажмите эту кнопку:" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:425 +msgid "Restore wp-config File" +msgstr "Восстановить файл wp-config" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:429 +msgid "View Contents of the currently active wp-config.php file" +msgstr "Просмотр содержимого файла wp-config.php" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:464 +msgid "WP Generator Meta Tag" +msgstr "Мета-тег WP Generator" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:467 +msgid "" +"Wordpress generator automatically adds some meta information inside the " +"\"head\" tags of every page on your site's front end. Below is an example of " +"this:" +msgstr "" +"WP Generator автоматически выводит информацию о текущей весии Wordpress в " +"специальном мета-теге в секции «head» на всех страницах сайта. Вот пример " +"такого вывода:" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:469 +msgid "" +"The above meta information shows which version of WordPress your site is " +"currently running and thus can help hackers or crawlers scan your site to " +"see if you have an older version of WordPress or one with a known exploit." +msgstr "" +"Эта информация существенно помогает хакерам и их роботам-паукам определять, " +"не используете ли Вы какую-нибудь устаревшую версию WordPress с уже " +"известными уязвимостями." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:470 +msgid "" +"This feature will allow you to remove the WP generator meta info from your " +"site's pages." +msgstr "" +"Данная опция позволит Вам удалить этот мета-тег со всех страниц Вашего сайта." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:476 +msgid "WP Generator Meta Info" +msgstr "Мета-данные WP Generator" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:488 +msgid "Remove WP Generator Meta Info" +msgstr "Удаление мета-данных WP Generator" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:491 +msgid "" +"Check this if you want to remove the meta info produced by WP Generator from " +"all pages" +msgstr "Включите эту опцию, чтобы удалить мета-тег WP Generator" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:517 +msgid "Please choose a file to import your settings from." +msgstr "Выберите файл, из которого хотите импортировать настройки" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:549 +msgid "Import AIOWPS settings from " +msgstr "Импортировать насторйки AIOWPS от " + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:555 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:599 +msgid "" +"The deletion of the import file failed. Please delete this file manually via " +"the media menu for security purposes." +msgstr "" +"Не удалось удалить файл импорта. Пожалуйста, удалите этот файл вручную, с " +"помощью меню\"Медиафайлы\", в целях безопасности." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:557 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:601 +msgid "" +"The file you uploaded was also deleted for security purposes because it " +"contains security settings details." +msgstr "" +"Файл, который Вы загрузили, тоже был удален, в целях безопасности, т.к. в " +"нем содержатся подробности настроек безопасности." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:572 +msgid "Your AIOWPS settings were successfully imported via file input." +msgstr "Ваши настройки AIOWPS успешно импортированы из файла." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:573 +msgid "" +"The deletion of the import file failed. Please delete this file manually via " +"the media menu for security purposes because it contains security settings " +"details." +msgstr "" +"Не удалось удалить файл импорта. Пожалуйста, удалите этот файл вручную, с " +"помощью меню\"Медиафайлы\", в целях безопасности." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:575 +msgid "" +"Your AIOWPS settings were successfully imported. The file you uploaded was " +"also deleted for security purposes because it contains security settings " +"details." +msgstr "" +"Ваши настройки AIOWPS удачно импортированы. Кроме того, файл, который Вы " +"загрузили, тоже был удален, в целях безопасности, т.к. в нем содержатся " +"подробности настроек безопасности." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:578 +msgid "Your AIOWPS settings were successfully imported via text entry." +msgstr "Ваши настройки AIOWPS успешно импортированы с помощью ввода текста." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:593 +msgid "" +"The contents of your settings file appear invalid. Please check the contents " +"of the file you are trying to import settings from." +msgstr "" +"Похоже, что формат Вашего файла с настройками неверный. Пожалуйста, " +"проверьте содержание файла, который Вы пытаетесь импортировать." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:610 +msgid "Export or Import Your AIOWPS Settings" +msgstr "Экспортировать или импортировать настройки AIOWPS" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:613 +msgid "" +"This section allows you to export or import your All In One WP Security & " +"Firewall settings." +msgstr "" +"Данная секция позволяет Вам экспортировать или импортироать все настройки " +"All In One WP Security & Firewall." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:614 +msgid "" +"This can be handy if you wanted to save time by applying the settings from " +"one site to another site." +msgstr "" +"Это может быть удобно, если Вы хотите использовать одинаковые настройки на " +"нескольких сайтах." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:615 +msgid "" +"NOTE: Before importing, it is your responsibility to know what settings you " +"are trying to import. Importing settings blindly can cause you to be locked " +"out of your site." +msgstr "" +"Внимание: До того, как импортировать, Вы должны понимать, какие настройки Вы " +"пытаетесь импортировать. При слепом импорте настроек, есть риск, что Вы " +"потеряете доступ к Вашему собственному сайту." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:616 +msgid "" +"For Example: If a settings item relies on the domain URL then it may not " +"work correctly when imported into a site with a different domain." +msgstr "" +"Например, если какая-нибудь настройка зависит от URL домена, тогда она может " +"не работать правильно при использовании сайта с другим доменом." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:622 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:631 +msgid "Export AIOWPS Settings" +msgstr "Экспорт настроек AIOWPS" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:628 +msgid "" +"To export your All In One WP Security & Firewall settings click the button " +"below." +msgstr "" +"Для того, чтобы экспортировать все Ваши настройки плагина All In One WP " +"Security & Firewall, нажмите на кнопку ниже." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:635 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:660 +msgid "Import AIOWPS Settings" +msgstr "Импорт настроек AIOWPS" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:641 +msgid "" +"Use this section to import your All In One WP Security & Firewall settings " +"from a file. Alternatively, copy/paste the contents of your import file into " +"the textarea below." +msgstr "" +"Используйте данную секцию для того,чтобы импортировать все Ваши настройки " +"плагина All In One WP Security & Firewall из файла. Также можете скопировать " +"содержание экспортированного файла и вставить его в текстовое поле ниже." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:642 +msgid "Import File" +msgstr "Импортировать файл" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:648 +msgid "" +"After selecting your file, click the button below to apply the settings to " +"your site." +msgstr "" +"После того, как Вы выберите файл, нажмите кнопку внизу для импорта настроек " +"на Вас сайт." + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:654 +msgid "Copy/Paste Import Data" +msgstr "Копировать и вставить данные для импорта" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:24 +msgid "Comment SPAM" +msgstr "Спам в комментариях" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:25 +msgid "Comment SPAM IP Monitoring" +msgstr "Отслеживание IP-адресов по спаму в комментариях" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:26 +msgid "BuddyPress" +msgstr "BuddyPress" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:113 +msgid "Comment SPAM Settings" +msgstr "Настройки по СПАМ-комментариям" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:118 +msgid "Add Captcha To Comments Form" +msgstr "Добавить CAPTCHA в форму комментариев" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:122 +msgid "" +"This feature will add a simple math captcha field in the WordPress comments " +"form." +msgstr "" +"Данная функция добавить поле с простой математической задачей в форму " +"комментариев WordPress." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:123 +msgid "" +"Adding a captcha field in the comment form is a simple way of greatly " +"reducing SPAM comments from bots without using .htaccess rules." +msgstr "" +"Добавление поля CAPTCHA в форму для комментариев - простой способ резко " +"снизить количество спам от роботов в комментариах, без использования правил " +"в файле .htaccess." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:132 +msgid "Enable Captcha On Comment Forms" +msgstr "Активировать CAPTCHA в формах для комментариев" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:135 +msgid "Check this if you want to insert a captcha field on the comment forms" +msgstr "" +"Отметьте этот чекбокс, чтобы вставить поле CAPTCHA в форму для комментариев." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:142 +msgid "Block Spambot Comments" +msgstr "Блокировка комментариев от спам-ботов" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:146 +msgid "" +"A large portion of WordPress blog comment SPAM is mainly produced by " +"automated bots and not necessarily by humans. " +msgstr "" +"Значительная часть спама в комментариах WordPress приходит от автоматических " +"ботов, а не вручную." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:147 +msgid "" +"This feature will greatly minimize the useless and unecessary traffic and " +"load on your server resulting from SPAM comments by blocking all comment " +"requests which do not originate from your domain." +msgstr "" +"Данная функция сильно снижает количество бесполезного и лишнего трафика, а так же " +"лишнюю нагрузку на сервер из-за спам-комментариев, заблокировав все запросы " +"на запись комментария, которые не пришли с Вашего же домена." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:148 +msgid "" +"In other words, if the comment was not submitted by a human who physically " +"submitted the comment on your site, the request will be blocked." +msgstr "" +"Другими словами, если комментарий не был отправлен живым человеком, который лично сам " +"отправил комментарий на Вашем сайте, тогда запрос блокируется." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:164 +msgid "Block Spambots From Posting Comments" +msgstr "Блокировать спам-ботов от комментирования" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:167 +msgid "" +"Check this if you want to apply a firewall rule which will block comments " +"originating from spambots." +msgstr "" +"Отметьте этот чекбокс, чтобы активировать правила файрволла для блокировки " +"комментарии от спам-ботов." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:171 +msgid "" +"This feature will implement a firewall rule to block all comment attempts " +"which do not originate from your domain." +msgstr "" +"Данная функция создаст правило файрволла, который блокирует попытки записать " +"комментарий, если запрос не пришел со страницы Вашего домена." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:172 +msgid "" +"A legitimate comment is one which is submitted by a human who physically " +"fills out the comment form and clicks the submit button. For such events, " +"the HTTP_REFERRER is always set to your own domain." +msgstr "" +"Честный комментарий всегда отправлен человеком, который заполняет форму " +"комментирования и кликает на кнопку \"Отправить\". В таком случае, поле " +"HTTP_REFERRER всегда имеет значение, которые ссылается на Ваш домен." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:173 +msgid "" +"A comment submitted by a spambot is done by directly calling the comments." +"php file, which usually means that the HTTP_REFERRER value is not your " +"domain and often times empty." +msgstr "" +"Комментарий от спам-бота отправляется сразу запросом на файл comments.php, " +"это обычно означает, что поле HTTP_REFERRER может быть пустым, или ссылается " +"на чужой домен." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:174 +msgid "" +"This feature will check and block comment requests which are not referred by " +"your domain thus greatly reducing your overall blog SPAM and PHP requests " +"done by the server to process these comments." +msgstr "" +"Данная функция проверяет и блокирует комментарии, которые не пришли с Вашего " +"домена. Это сильно снижает общее количество СПАМА и PHP-запросов на " +"Вашем сервера при обработке спам-запросов." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:201 +msgid "Nonce check failed for list SPAM comment IPs!" +msgstr "Не удалось установить параметры для отображения списка IP-адресов!" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:207 +msgid "" +"You entered a non numeric value for the minimum SPAM comments per IP field. " +"It has been set to the default value." +msgstr "" +"Вы ввели нечисловое значение для указания минимального количества спам-" +"комментариев. Принято значение по умолчанию." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:219 +#, php-format +msgid "" +"Displaying results for IP addresses which have posted a minimum of %s SPAM " +"comments" +msgstr "" +"Список IP-адресов, с которых было отправлено минимум %s спам-комментариев" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:235 +msgid "" +"This tab displays a list of the IP addresses of the people or bots who have " +"left SPAM comments on your site." +msgstr "" +"В этой вкладке отображается список IP-адресов тех пользователей или ботов, " +"которые оставили спам-комментарии на Вашем сайте." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:236 +msgid "" +"This information can be handy for identifying the most persistent IP " +"addresses or ranges used by spammers." +msgstr "" +"Эта информация может быть полезна для определения IP-адресов или их диапазонов, " +"наиболее стабильно использующихся спаммерами." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:237 +msgid "" +"By inspecting the IP address data coming from spammers you will be in a " +"better position to determine which addresses or address ranges you should " +"block by adding them to your blacklist." +msgstr "" +"Анализ этой информации позволит Вам быстро определить, какие адреса или " +"диапазоны следует заблокировать, добавив их в черный список." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:238 +msgid "" +"To add one or more of the IP addresses displayed in the table below to your " +"blacklist, simply click the \"Block\" link for the individual row or select " +"more than one address \n" +" using the checkboxes and then choose the \"block" +"\" option from the Bulk Actions dropdown list and click the \"Apply\" button." +msgstr "" +"Для добавления одного или сразу нескольких адресов в черный список, кликните " +"по ссылке «Block» в строке с выбранным адресом, или выберите несколько " +"адресов, используя чекбоксы и установите вариант «Block» в выпадающем списке " +"«Действия», после чего нажмите кнопку «Применить»." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:244 +msgid "List SPAMMER IP Addresses" +msgstr "Список IP-адресов спаммеров" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:250 +msgid "Minimum number of SPAM comments per IP" +msgstr "Минимальное количество спам-комментариев на каждый IP" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:252 +msgid "" +"This field allows you to list only those IP addresses which have been used " +"to post X or more SPAM comments." +msgstr "" +"Это поле позволяет фиксировать только те IP-адреса, с которых было загружено " +"Х или более спам-комментариев." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:256 +msgid "" +"Example 1: Setting this value to \"0\" or \"1\" will list ALL IP addresses " +"which were used to submit SPAM comments." +msgstr "" +"Пример 1: Установка этого значения в «0» или «1» выведет список всех IP-" +"адресов, уличенных в спаме хотя бы 1 раз." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:257 +msgid "" +"Example 2: Setting this value to \"5\" will list only those IP addresses " +"which were used to submit 5 SPAM comments or more on your site." +msgstr "" +"Пример 2: Установка значения в «5» выведет список IP-адресов, которые " +"разместили на Вашем сайте 5 и более спам-комментариев." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:264 +msgid "Find IP Addresses" +msgstr "Найти IP-адреса" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:268 +msgid "SPAMMER IP Address Results" +msgstr "IP-адреса спаммеров" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:274 +#: all-in-one-wp-security/classes/wp-security-utility.php:150 +msgid "" +"The plugin has detected that you are using a Multi-Site WordPress " +"installation." +msgstr "Плагин заметил, что Ваш WordPress инсталлирован как мульти-сайт." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:275 +msgid "Only the \"superadmin\" can block IP addresses from the main site." +msgstr "Только \"superadmin\" может блокировать адреса IP с главного сайта." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:276 +msgid "" +"Take note of the IP addresses you want blocked and ask the superadmin to add " +"these to the blacklist using the \"Blacklist Manager\" on the main site." +msgstr "" +"\"Запишите адреса-IP, которые хотите заблокировать и попросите суперадмина " +"добавить их в черный список с помощью \"Управление черным списком\" на " +"главном сайте." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:321 +msgid "BuddyPress SPAM Settings" +msgstr "Настройки по спаму в BuddyPress" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:326 +msgid "Add Captcha To BuddyPress Registration Form" +msgstr "Добавить CAPTCHA в форме регистрации BuddyPress" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:330 +msgid "" +"This feature will add a simple math captcha field in the BuddyPress " +"registration form." +msgstr "" +"Данная функция добавит CAPTCHA с простой математической задачей в форму " +"регистрации BuddyPress." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:331 +msgid "" +"Adding a captcha field in the registration form is a simple way of greatly " +"reducing SPAM signups from bots without using .htaccess rules." +msgstr "" +"Добавление поле CAPTCHA в регистрационной форме - простой способ значительно " +"снизить количество спам-регистраций от роботов, без изменения правил в " +"файле .htaccess." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:341 +msgid "Enable Captcha On BuddyPress Registration Form" +msgstr "Включить CAPTCHA в форме регистрации BuddyPress" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:344 +msgid "" +"Check this if you want to insert a captcha field on the BuddyPress " +"registration forms" +msgstr "" +"Отметьте этот чекбокс, чтобы добавить поле CAPTCHA в форму регистрации " +"BuddyPress." + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:353 +msgid "" +"BuddyPress is not active! In order to use this feature you will need to have " +"BuddyPress installed and activated." +msgstr "" +"Плагин BuddyPress не активен! Для того, чтобы использовать данную функцию, " +"BuddyPress должен быть инсталлирован и активирован." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:29 +msgid "WP Username" +msgstr "Пользовательское имя WP" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:30 +msgid "Display Name" +msgstr "Отображаемое имя" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:31 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:862 +msgid "Password" +msgstr "Пароль" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:85 +msgid "Admin User Security" +msgstr "Безопасность аккаунта Администратора" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:88 +msgid "" +"By default, WordPress sets the administrator username to \"admin\" at " +"installation time." +msgstr "" +"При установке WordPress автоматически присваивает администратору имя " +"пользователя «admin» (если Вы вручную не измените его)." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:89 +msgid "" +"A lot of hackers try to take advantage of this information by attempting " +"\"Brute Force Login Attacks\" where they repeatedly try to guess the " +"password by using \"admin\" for username." +msgstr "" +"Многие хакеры пытаются воспользоваться этой информацией, применяя для " +"нападения «Брутфорс-атаку», когда они систематично подбирают пароль, " +"используя слово «admin» в качестве имени пользователя." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:90 +msgid "" +"From a security perspective, changing the default \"admin\" user name is one " +"of the first and smartest things you should do on your site." +msgstr "" +"По соображениям безопасности, одна из первых и наиболее разумных вещей, " +"которую Вы должны сделать на своем сайте, это изменить имя пользователя «admin», " +"установленное по умолчанию." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:91 +msgid "" +"This feature will allow you to change your default \"admin\" user name to a " +"more secure name of your choosing." +msgstr "" +"Этот раздел предназначен для изменения имени пользователя «admin» " +"на более безопасное, по Вашему выбору." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:98 +msgid "List of Administrator Accounts" +msgstr "Список Администраторов" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:107 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:36 +msgid "Change Admin Username" +msgstr "Изменение имени пользователя Админстратора" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:115 +msgid "" +"Your site currently has an account which uses the default \"admin\" " +"username. \n" +" It is highly recommended that you change this name to " +"something else. \n" +" Use the following field to change the admin username." +msgstr "" +"На Вашем сайте имеется аккаунт, в котором в качестве имени пользователя " +"используется слово «admin».\n" +"Крайне рекомендуется изменить его на какое-нибудь другое.\n" +"Для этого воспользуйтесь следующим полем." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:123 +msgid "New Admin Username" +msgstr "Новое имя пользователя для администратора" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:125 +msgid "Choose a new username for admin." +msgstr "Выберите новое имя пользователя для администратора." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:129 +msgid "Change Username" +msgstr "Изменить имя пользователя" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:131 +msgid "" +"NOTE: If you are currently logged in as \"admin\" you will be automatically " +"logged out after changing your username and will be required to log back in." +msgstr "" +"ВНИМАНИЕ: если сейчас Вы авторизованы как «admin», Ваша авторизационная " +"сессия будет автоматически прекращена. После того, как Вы измените имя " +"пользователя, необходимо снова авторизоваться, используя уже новый логин." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:138 +msgid "No action required! " +msgstr "Действие не требуется!" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:140 +msgid "" +"Your site does not have any account which uses the default \"admin\" " +"username. " +msgstr "" +"На Вашем сайте нет аккаунтов, использующих в качестве имени пользователя имя " +"пользователя по умолчанию, т.е. «admin» - " + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:141 +msgid "This is good security practice." +msgstr "и это очень хорошо." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:153 +msgid "Display Name Security" +msgstr "Защита отображаемого имени" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:156 +msgid "" +"When you submit a post or answer a comment, WordPress will usually display " +"your \"nickname\"." +msgstr "" +"Когда Вы публикуете пост или отвечаете на комментарий, WordPress обычно " +"отображает Ваш «никнейм»." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:157 +msgid "" +"By default the nickname is set to the login (or user) name of your account." +msgstr "По умолчанию отображаемое имя пользователя идентично логину аккаунта." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:158 +msgid "" +"From a security perspective, leaving your nickname the same as your user " +"name is bad practice because it gives a hacker at least half of your " +"account's login credentials." +msgstr "" +"Из соображений безопасности, этого допускать нельзя, так как это уже на " +"половину облегчает хакеру работу - фактически, Вы сами сообщаете ему логин " +"своего аккаунта." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:159 +msgid "" +"Therefore to further tighten your site's security you are advised to change " +"your nickname and Display name to be " +"different from your Username." +msgstr "" +"Поэтому, чтобы усилить безопасность сайта, мы рекомендуем Вам изменить " +"свой никнейм и отображаемое имя, чтобы они " +"отличались от Вашего имени пользователя." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:165 +msgid "Modify Accounts With Identical Login Name & Display Name" +msgstr "" +"Редактирование аккаунтов с совпадающими именем пользователя и отображаемым " +"именем." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:174 +msgid "" +"Your site currently has the following accounts which have an identical login " +"name and display name." +msgstr "" +"Следующие аккаунты на Вашем сайте имеют имя пользователя, совпадающее с " +"отображаемым именем." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:175 +msgid "Click on the link to edit the settings of that particular user account" +msgstr "Перейдите по ссылке, чтобы внести изменения в соответствующий аккаунт" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:190 +msgid "No action required." +msgstr "Действие не требуется." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:191 +msgid "" +"Your site does not have a user account where the display name is identical " +"to the username." +msgstr "" +"На Вашем сайте нет аккаунтов, в которых имя пользователя совпадает с " +"отображаемым именем." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:202 +msgid "Password Tool" +msgstr "Проверка пароля" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:205 +msgid "" +"Poor password selection is one of the most common weak points of many sites " +"and is usually the first thing a hacker will try to exploit when attempting " +"to break into your site." +msgstr "" +"Плохой пароль - это наиболее распространенная уязвимость на большинстве " +"сайтов, и, как правило, первое, что будет делать хакер, чтобы проникнуть на " +"сайт - попытается подобрать пароль." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:206 +msgid "" +"Many people fall into the trap of using a simple word or series of numbers " +"as their password. Such a predictable and simple password would take a " +"competent hacker merely minutes to guess your password by using a simple " +"script which cycles through the easy and most common combinations." +msgstr "" +"Многие люди сами себе ставят ловушку, используя в качестве пароля простое " +"слово или ряд цифр. На подбор такого предсказуемого пароля у опытного хакера " +"уйдет всего несколько минут, так как для этого используются специальные " +"программы с большими базами наиболее распространенных сочетаний букв, слов и " +"цифр." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:207 +msgid "" +"The longer and more complex your password is the harder it is for hackers to " +"\"crack\" because more complex passwords require much greater computing " +"power and time." +msgstr "" +"Чем длиннее и сложнее пароль, тем тяжелее будет хакеру его подобрать, потому " +"что это требует гораздо больше вычислительных мощностей и времени." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:208 +msgid "" +"This section contains a useful password strength tool which you can use to " +"check whether your password is sufficiently strong enough." +msgstr "Здесь Вы можете проверить свой пароль на надежность." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:213 +msgid "Password Strength Tool" +msgstr "Проверка надежности пароля" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:218 +msgid "Start typing a password." +msgstr "Введите пароль." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:221 +msgid "It would take a desktop PC approximately" +msgstr "Домашний компьютер смог бы примерно за" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:222 +msgid "1 sec" +msgstr "одну секунду" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:222 +msgid "to crack your password!" +msgstr "сломать Ваш пароль!" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:227 +msgid "Password Strength" +msgstr "Надежность пароля" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:243 +msgid "Nonce check failed on admin username change operation!" +msgstr "Не удалось изменить имя пользователя!" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:250 +msgid "Username " +msgstr "Такое имя пользователя" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:250 +msgid " already exists. Please enter another value. " +msgstr "уже существует. Пожалуйста, введите другое значение." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:266 +msgid "The database update operation of the user account failed!" +msgstr "Обновление учетной записи не удалось!" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:293 +msgid "You entered an invalid username. Please enter another value. " +msgstr "" +"Вы ввели неверное имя пользователя. Пожалуйста, введите другое значение." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:297 +msgid "Please enter a value for your username. " +msgstr "Пожалуйста, введите имя пользователя." + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:304 +msgid "Username Successfully Changed!" +msgstr "Имя пользователя изменено!" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:324 +msgid "Account Login Name" +msgstr "Имя пользователя" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:26 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:298 +msgid "Failed Login Records" +msgstr "Ошибочные попытки авторизации" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:27 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:51 +msgid "Force Logout" +msgstr "Автоматическое разлогинивание пользователей" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:28 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:432 +msgid "Account Activity Logs" +msgstr "Журнал активности аккаунта" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:96 +msgid "" +"You entered a non numeric value for the max login attempts field. It has " +"been set to the default value." +msgstr "" +"Вы ввели нечисловое значение для максимального количества попыток " +"авторизации. Установлено значение по умолчанию." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:103 +msgid "" +"You entered a non numeric value for the login retry time period field. It " +"has been set to the default value." +msgstr "" +"Вы ввели нечисловое значение для ограничения времени попыток авторизации. " +"Установлено значение по умолчанию." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:159 +msgid "Login Lockdown Configuration" +msgstr "Настройки опций блокировки процесса авторизации" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:163 +msgid "One of the ways hackers try to compromise sites is via a " +msgstr "" +"Один из распространенных способов, используемых хакерами для проникновения " +"на сайт, является " + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:163 +msgid "Brute Force Login Attack" +msgstr "Брутфорс-атака" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:164 +msgid "" +"This is where attackers use repeated login attempts until they guess the " +"password." +msgstr "Так называются многократные попытки входа методом подбора паролей." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:165 +msgid "" +"Apart from choosing strong passwords, monitoring and blocking IP addresses " +"which are involved in repeated login failures in a short period of time is a " +"very effective way to stop these types of attacks." +msgstr "" +"Помимо выбора надежных паролей, мониторинга и блокирования IP-адресов, " +"участвующих в повторных неудачных попытках входа в течение короткого периода " +"времени, блокировка количества попыток авторизации и ограничение периода " +"времени для таких попыток, является очень эффективным способом " +"противодействия этим типам атак." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:166 +#, php-format +msgid "" +"You may also want to checkout our %s feature for another secure way to " +"protect against these types of attacks." +msgstr "" +"Вы также можете ознакомиться с другими %s опциями безопасности для защиты от " +"такого типа атак." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:171 +msgid "Login Lockdown Options" +msgstr "Опции блокировки авторизации" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:183 +msgid "Enable Login Lockdown Feature" +msgstr "Включить опции блокировки попыток авторизации" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:186 +msgid "" +"Check this if you want to enable the login lockdown feature and apply the " +"settings below" +msgstr "" +"Отметьте эту опцию, если Вы хотите включить функции контроля за процессом " +"авторизации, установите необходимые параметры и сохраните настройки" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:190 +msgid "Allow Unlock Requests" +msgstr "Допускать запросы на разблокирование" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:193 +msgid "" +"Check this if you want to allow users to generate an automated unlock " +"request link which will unlock their account" +msgstr "" +"Поставьте галочку, если хотите позволить пользователям самим создавать " +"автоматическую ссылку на разблокирование своего аккаунта" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:197 +msgid "Max Login Attempts" +msgstr "Максимальное количество попыток входа" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:199 +msgid "" +"Set the value for the maximum login retries before IP address is locked out" +msgstr "" +"Установите значение для максимального количества попыток входа, после чего " +"IP-адрес будет заблокирован" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:203 +msgid "Login Retry Time Period (min)" +msgstr "Ограничение времени попыток авторизации (минуты)" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:205 +msgid "" +"If the maximum number of failed login attempts for a particular IP address " +"occur within this time period the plugin will lock out that address" +msgstr "" +"Если максимальное число неудачных попыток входа в систему для конкретного " +"адреса IP произойдет в течение этого периода времени, плагин заблокирует " +"этот адрес" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:209 +msgid "Time Length of Lockout (min)" +msgstr "Период блокирования (минуты)" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:211 +msgid "" +"Set the length of time for which a particular IP address will be prevented " +"from logging in" +msgstr "Укажите период времени, на который будут блокироваться IP-адреса" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:215 +msgid "Display Generic Error Message" +msgstr "Выводить сообщения об ошибках авторизации" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:218 +msgid "" +"Check this if you want to show a generic error message when a login attempt " +"fails" +msgstr "" +"Отметьте эту опцию, если Вы хотите, чтобы при неудачных попытках авторизации " +"отображалось сообщение об ошибке" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:222 +msgid "Instantly Lockout Invalid Usernames" +msgstr "Сразу заблокировать неверные пользовательские имена" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:225 +msgid "" +"Check this if you want to instantly lockout login attempts with usernames " +"which do not exist on your system" +msgstr "" +"Поставьте галочку, если хотите сразу заблокировать попытки логина с " +"пользовательским именем, которого нет в Вашей системе" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:230 +msgid "Notify By Email" +msgstr "Уведомлять по Email" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:233 +msgid "" +"Check this if you want to receive an email when someone has been locked out " +"due to maximum failed login attempts" +msgstr "" +"Отметьте эту опцию, если Вы хотите получать отчет о неудачных попытках " +"авторизации на свой почтовый ящик" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:243 +msgid "Currently Locked Out IP Address Ranges" +msgstr "Диапазон временно заблокированных IP-адресов" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:248 +#, php-format +msgid "" +"To see a list of all locked IP addresses and ranges go to the %s tab in the " +"dashboard menu." +msgstr "" +"Вы можете посмотреть список всех заблокированных IP-адресов и блоков в " +"разделе %s в меню управления." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:264 +msgid "Nonce check failed for delete all failed login records operation!" +msgstr "Записи об ошибочных попытках авторизации удалить не удалось!" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:273 +msgid "User Login Feature - Delete all failed login records operation failed!" +msgstr "Записи об ошибочных попытках авторизации удалить не удалось!" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:277 +msgid "All records from the Failed Logins table were deleted successfully!" +msgstr "Все записи об ошибочных попытках авторизации удалены!" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:292 +msgid "This tab displays the failed login attempts for your site." +msgstr "Здесь отображаются записи о безуспешных попытках входа на Ваш сайт." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:293 +msgid "" +"The information below can be handy if you need to do security investigations " +"because it will show you the IP range, username and ID (if applicable) and " +"the time/date of the failed login attempt." +msgstr "" +"Приведенная ниже информация может пригодиться, если Вам нужно провести " +"исследование попыток авторизации - здесь отображается диапазон IP, имя " +"пользователя и ID (если возможно) и время / дата неуспешной попытки входа на " +"сайт." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:314 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:323 +msgid "Delete All Failed Login Records" +msgstr "Удалить записи" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:320 +msgid "" +"Click this button if you wish to delete all failed login records in one go." +msgstr "" +"Нажмите эту кнопку, если Вы хотите удалить все записи об ошибочных попытках " +"авторизации." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:348 +msgid "" +"You entered a non numeric value for the logout time period field. It has " +"been set to the default value." +msgstr "" +"Вы ввели нечисловое значение периода времени. Установка сброшена к значению " +"по умолчанию." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:376 +msgid "" +"Setting an expiry period for your WP administration session is a simple way " +"to protect against unauthorized access to your site from your computer." +msgstr "" +"Установка ограничения срока действия сессии администрирования - это простой " +"способ защиты от несанкционированного доступа к Вашему сайту с Вашего " +"компьютера." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:377 +msgid "" +"This feature allows you to specify a time period in minutes after which the " +"admin session will expire and the user will be forced to log back in." +msgstr "" +"Эта опция позволяет установить временной период, после истечения которого " +"сессия администратора истекает и пользователю надо будет авторизоваться " +"заново." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:382 +msgid "Force User Logout Options" +msgstr "Опции автоматического разлогинивания пользователей" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:394 +msgid "Enable Force WP User Logout" +msgstr "Включить авторазлогинивание" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:397 +msgid "" +"Check this if you want to force a wp user to be logged out after a " +"configured amount of time" +msgstr "" +"Отметьте эту опцию, чтобы автоматически прекращать авторизационную сессию " +"пользователей по истечении определенного периода времени" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:401 +msgid "Logout the WP User After XX Minutes" +msgstr "Разлогинить пользователя через" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:403 +msgid "" +"(Minutes) The user will be forced to log back in after this time period has " +"elapased." +msgstr "" +"(Минуты) Пользователь автоматически будет разлогинен по истечении этого " +"периода времени." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:426 +msgid "" +"This tab displays the login activity for WordPress admin accounts registered " +"with your site." +msgstr "Здесь отображается активность администраторов на Вашем сайте." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:427 +msgid "" +"The information below can be handy if you need to do security investigations " +"because it will show you the last 50 recent login events by username, IP " +"address and time/date." +msgstr "" +"Приведенная ниже информация может пригодиться, если Вы будете проводить " +"исследование пользовательской активности, так как здесь будут показаны " +"последние 50 событий авторизации с данными имени пользователя, IP-адресом и " +"временем входа." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:464 +msgid "Nonce check failed for users logged in list!" +msgstr "Ошибка при отображении списка залогиненых пользователей!" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:477 +msgid "Refresh Logged In User Data" +msgstr "Обновить данные об активных пользователях" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:481 +msgid "Refresh Data" +msgstr "Обновить данные" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:487 +msgid "This tab displays all users who are currently logged into your site." +msgstr "" +"Здесь отображаются все пользователи, которые в настоящий момент авторизованы " +"на Вашем сайте." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:488 +msgid "" +"If you suspect there is a user or users who are logged in which should not " +"be, you can block them by inspecting the IP addresses from the data below " +"and adding them to your blacklist." +msgstr "" +"Если Вы подозреваете, что в системе есть активный пользователь, которого не " +"должно быть, тогда Вы можете их заблокировать, проверив их адрес IP в списке " +"внизу, и добавив их в черный список." + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:493 +msgid "Currently Logged In Users" +msgstr "В настоящее время авторизованные пользователи" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:558 +msgid "The selected records were deleted successfully!" +msgstr "Выбранные записи успешно удалены!" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:567 +msgid "The selected record was deleted successfully!" +msgstr "Выбранная запись успешно удалена!" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:23 +msgid "Manual Approval" +msgstr "Подтверждение вручную" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:24 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:57 +msgid "Registration Captcha" +msgstr "CAPTCHA при регистрации" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:112 +msgid "User Registration Settings" +msgstr "Настройки для регистрации пользователя" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:116 +msgid "Manually Approve New Registrations" +msgstr "Подтверждать новые регистрации вручную" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:120 +msgid "" +"If your site allows people to create their own accounts via the WordPress " +"registration form, then you can minimize SPAM or bogus registrations by " +"manually approving each registration." +msgstr "" +"Если Ваш сайт позволяет людям самим создавать свои аккаунты через " +"регистрационную форму WordPress, тогда можете свести количество СПАМ и левых " +"регистраций до минимума, подтверждая каждую регистрацию вручную." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:121 +msgid "" +"This feature will automatically set a newly registered account to \"pending" +"\" until the administrator activates it. Therefore undesirable registrants " +"will be unable to log in without your express approval." +msgstr "" +"Данная функция автоматически помечает аккаунты новых регистраций как \"pending/" +"в ожидании\" пока администратор их не активирует. В этом случае нежеланные " +"зарегистрировавшиеся не могут логиниться не имея Вашего подтверждения." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:122 +msgid "" +"You can view all accounts which have been newly registered via the handy " +"table below and you can also perform bulk activation/deactivation/deletion " +"tasks on each account." +msgstr "" +"Все недавно зарегистрированные аккаунты Вы можете увидеть в удобной таблице " +"внизу, и также там можно одновременно выполнить активацию, деактивацию или " +"удаление нескольких аккаунтов." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:138 +msgid "Enable manual approval of new registrations" +msgstr "Активировать ручное одобрение новых регистраций" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:141 +msgid "" +"Check this if you want to automatically disable all newly registered " +"accounts so that you can approve them manually." +msgstr "" +"Поставьте галочку тут, если хотите, чтобы все новые аккаунты автоматически " +"создавались неактивными и Вы их могли подтверждать вручную." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:150 +msgid "Approve Registered Users" +msgstr "Подтверждение регистрированных пользователей" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:195 +msgid "" +"This feature allows you to add a captcha form on the WordPress registration " +"page." +msgstr "" +"Данная функция позволяет Вам добавить поле CAPTCHA на странице регистрации " +"WordPress." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:196 +msgid "" +"Users who attempt to register will also need to enter the answer to a simple " +"mathematical question - if they enter the wrong answer, the plugin will not " +"allow them to register." +msgstr "" +"Кроме того, пользователи, которые пытаются зарегистрироваться, должны " +"ответить на простой математический вопрос. Если ответ неверный, плагин ие " +"даст им зарегистрироваться." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:197 +msgid "" +"Therefore, adding a captcha form on the registration page is another " +"effective yet simple SPAM registration prevention technique." +msgstr "" +"Поэтому, добавление формы CAPTCHA на странице регистрации - еще один " +"эффективный способ защиты от СПАМ-регистраций." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:202 +msgid "Registration Page Captcha Settings" +msgstr "Настройки CAPTCHA на странице регистрации" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:209 +msgid "" +"The core default behaviour for WordPress Multi Site regarding user " +"registration is that all users are registered via the main site." +msgstr "" +"По умолчанию, WordPress Multi Site требует, чтобы все регистрации " +"проводились на главном сайте." + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:210 +msgid "" +"Therefore, if you would like to add a captcha form to the registration page " +"for a Multi Site, please go to \"Registration Captcha\" settings on the main " +"site." +msgstr "" +"Поэтому, если Вы хотите добавить форму CAPTCHA на странице регистрации для " +"WordPress Multi Site, пойдите на \"CAPTCHA при регистрации\" на основном " +"сайте. " + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:225 +msgid "Enable Captcha On Registration Page" +msgstr "Активировать CAPTCHA на странице регистрации" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:228 +msgid "" +"Check this if you want to insert a captcha form on the WordPress user " +"registration page (if you allow user registration)." +msgstr "" +"Поставьте галочку, если хотите добавить форму CAPTCHA на странице WordPress " +"для регистрации (если Вы позволяете людям регистрироваться на Вашем сайте)." + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:22 +msgid "WhoIS Lookup" +msgstr "WHOIS-поиск" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:74 +msgid "WHOIS Lookup Information" +msgstr "Результаты WHOIS-поиска" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:77 +msgid "" +"This feature allows you to look up more detailed information about an IP " +"address or domain name by querying the WHOIS API." +msgstr "" +"Эта функция позволяет получить детальную информацию об IP-адресе или домене." + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:83 +msgid "Perform a WHOIS Lookup for an IP or Domain Name" +msgstr "Выполнить WHOIS-поиск по IP или домену" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:89 +msgid "Enter IP Address or Domain Name" +msgstr "Введите IP-адрес или доменное имя" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:91 +msgid "" +"Enter an IP address or domain name. Example: 111.11.12.13 OR some-domain-" +"name.com" +msgstr "" +"Введите IP-адрес или доменное имя. Пример: 111.11.12.13 или some-domain-name." +"com" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:95 +msgid "Perform IP or Domain Lookup" +msgstr "Выполнить поиск по IP или домену" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:115 +msgid "WHOIS lookup successfully completed. Please see the results below:" +msgstr "WHOIS-поиск закончен. Результаты Вы можете видеть ниже:" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:127 +msgid "" +"You have entered an incorrectly formatted IP address or domain name. Please " +"try again." +msgstr "" +"Вы ввели некорректный IP-адрес или доменное имя. Пожалуйста, попробуйте еще " +"раз." + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:178 +msgid "No items found." +msgstr "Ничего не найдено." + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:281 +msgid "Bulk Actions" +msgstr "Комплексные действия" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:291 +msgid "Apply" +msgstr "Применить" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:365 +msgid "Show all dates" +msgstr "Отобразить все даты" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:378 +#, php-format +msgid "%1$s %2$d" +msgstr "%1$s %2$d" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:394 +msgid "List View" +msgstr "Список" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:395 +msgid "Excerpt View" +msgstr "Краткий обзор" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:421 +#, php-format +msgid "%s pending" +msgstr "%s в ожидании" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:653 +msgid "Select All" +msgstr "Выбрать все" + +#: all-in-one-wp-security/classes/wp-security-backup.php:188 +msgid "All In One WP Security - Site Database Backup" +msgstr "All In One WP Security - Резервное копирование базы данных" + +#: all-in-one-wp-security/classes/wp-security-backup.php:190 +msgid "Attached is your latest DB backup file for site URL" +msgstr "Прикреплена последняя резервная копия базы данных Вашего сайта" + +#: all-in-one-wp-security/classes/wp-security-backup.php:190 +msgid " generated on" +msgstr "создано по" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:17 +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:254 +msgid "Please enter an answer in digits:" +msgstr "Пожалуйста, введите ответ цифрами:" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:96 +msgid "one" +msgstr "один" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:97 +msgid "two" +msgstr "два" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:98 +msgid "three" +msgstr "три" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:99 +msgid "four" +msgstr "четыре" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:100 +msgid "five" +msgstr "пять" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:101 +msgid "six" +msgstr "шесть" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:102 +msgid "seven" +msgstr "семь" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:103 +msgid "eight" +msgstr "восемь" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:104 +msgid "nine" +msgstr "девять" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:105 +msgid "ten" +msgstr "десять" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:106 +msgid "eleven" +msgstr "одиннадцать" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:107 +msgid "twelve" +msgstr "двенадцать" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:108 +msgid "thirteen" +msgstr "тринадцать" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:109 +msgid "fourteen" +msgstr "четырнадцать" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:110 +msgid "fifteen" +msgstr "пятнадцать" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:111 +msgid "sixteen" +msgstr "шестнадцать" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:112 +msgid "seventeen" +msgstr "семнадцать" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:113 +msgid "eighteen" +msgstr "восемнадцать" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:114 +msgid "nineteen" +msgstr "девятнадцать" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:115 +msgid "twenty" +msgstr "двадцать" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:65 +msgid "All In One WP Security - File change detected!" +msgstr "All In One WP Security - Обнаружены изменения в файлах!" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:67 +msgid "A file change was detected on your system for site URL" +msgstr "Изменение файла замечено на Вашей системе по URL сайта" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:67 +msgid ". Scan was generated on" +msgstr ". Сканирование создано " + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:68 +msgid "Login to your site to view the scan details." +msgstr "Зайдите на свой сайт, чтобы увидеть подробный результат сканирования." + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:269 +msgid "" +"Starting DB scan.....please wait while the plugin scans your database......." +msgstr "" +"Начинается сканирование базы данных......ждите, пока плагин сканирует Вашу " +"БД......." + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:273 +msgid "Scanning options table........." +msgstr "Сканируется таблица options........." + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:342 +#, php-format +msgid "%s and option_id: %s" +msgstr "%s и настройки (option_id): %s" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:345 +#, php-format +msgid "" +"Deletion of known pharma hack entry for option_name %s failed. Please delete " +"this entry manually!" +msgstr "" +"Не удалось удалить использование вируса pharma hack для настройки %s. Пожалуйста, " +"удалите эту строчку вручную!" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:347 +#, php-format +msgid "" +"The options table entry with known pharma hack for option_id %s with " +"option_name %s was successfully deleted" +msgstr "" +"Строчка в таблице с настройкой (option_id) %s и названием (option_name) %s " +"была успешно удалена" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:361 +#, php-format +msgid "Possible suspicious entry found (for option_id: %s) - %s " +msgstr "Подозрительная строчка найдена (option_id: %s) - %s " + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:370 +msgid "No suspicious entries found in options table" +msgstr "Подозрительных строк в таблице настроек не найдено" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:374 +msgid "Scanning posts table........." +msgstr "Сканируются таблицa posts........" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:414 +#, php-format +msgid "" +"Possible suspicious entry found (for Post ID: %s) in the following column - " +"%s " +msgstr "Подозрительная строчка найдена (Post ID: %s) в столбце - %s " + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:423 +msgid "No suspicious entries found in posts table" +msgstr "Подозрительных строчек не найдено в таблице posts" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:427 +msgid "Scanning links table........." +msgstr "Сканируется таблица links............." + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:466 +#: all-in-one-wp-security/classes/wp-security-file-scan.php:517 +#: all-in-one-wp-security/classes/wp-security-file-scan.php:545 +#: all-in-one-wp-security/classes/wp-security-file-scan.php:573 +#: all-in-one-wp-security/classes/wp-security-file-scan.php:622 +#, php-format +msgid "Possible suspicious entry - %s " +msgstr "Найдена подозрительная строчка - %s " + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:475 +msgid "No suspicious entries found in links table" +msgstr "Подозрительных строчек не найдено в таблице links" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:479 +msgid "Scanning comments table........." +msgstr "Сканируется таблица comments............." + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:526 +msgid "No suspicious entries found in comments table" +msgstr "Подозрительных строчек не найдено в таблице comments" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:530 +msgid "Scanning postmeta table........." +msgstr "Сканируется таблица postmeta............." + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:554 +msgid "No suspicious entries found in postmeta table" +msgstr "Подозрительных строчек не найдено в таблице postmeta" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:558 +msgid "Scanning usermeta table........." +msgstr "Сканируется таблица usermeta............." + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:582 +msgid "No suspicious entries found in usermeta table" +msgstr "Подозрительных строчек не найдено в таблице usermeta" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:586 +msgid "Scanning users table........." +msgstr "Сканируется таблица users............." + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:631 +msgid "No suspicious entries found in users table" +msgstr "Подозрительных строчек не найдено в таблице users" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:638 +msgid "" +"The plugin has detected that there are some potentially suspicious entries " +"in your database." +msgstr "Плагин обнаружил подозрительные строчки в Вашей базе данных." + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:639 +msgid "" +"Please verify the results listed below to confirm whether the entries " +"detected are genuinely suspicious or if they are false positives." +msgstr "" +"Пожалуйста, проверьте, действительно ли следующие строчки подозрительные " +"или они безопасные." + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:644 +#: all-in-one-wp-security/classes/wp-security-file-scan.php:659 +msgid "Disclaimer:" +msgstr "Оговорка:" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:645 +msgid "" +"Even though this database scan has revealed some suspicious entries, this " +"does not necessarily mean that other parts of your DB or site are also not " +"compromised." +msgstr "" +"Несмотря на то, что сканирование базы данных выявило несколько " +"подозрительных строк, это не означает, что другие части Вашей БД не " +"заражены." + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:646 +#: all-in-one-wp-security/classes/wp-security-file-scan.php:661 +msgid "" +"Please note that database scan performed by this feature is basic and looks " +"for common malicious entries. Since hackers are continually evolving their " +"methods this scan is not meant to be a guaranteed catch-all for malware." +msgstr "" +"Обратите внимание, что сканирование базы данных данного плагина - достаточно " +"поверхностное и ищет часто встречающиеся злонамеренные строки. Т.к. хакеры " +"постоянно развивают свои методы, данное сканирование не гарантирует, что все " +"вирусы найдены." + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:647 +#: all-in-one-wp-security/classes/wp-security-file-scan.php:662 +#, php-format +msgid "" +"It is your responsibility to do the due diligence and perform a robust %s on " +"your site if you wish to be more certain that your site is clean." +msgstr "" +"Ваша ответственность - провести внимательную и подробную проверку %s " +"вашего сайта если хотите быть более уверены, что Ваш сайт не поврежден." + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:654 +msgid "DB Scan was completed successfully. No suspicious entries found." +msgstr "" +"Сканирование базы данных успешно выполнено. Подозрительных строк не " +"найдено." + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:660 +msgid "" +"Even though the database scan has not revealed any suspicious entries, this " +"does not necessarily mean that your site is actually completely clean or not " +"compromised." +msgstr "" +"Несмотря на то, что сканирование базы данных не обнаружило злонамеренных " +"строк это не обязательно означает, что Ваш сайт полностью чист и не " +"заражен никаким вирусом." + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:281 +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:358 +#: all-in-one-wp-security/classes/wp-security-user-login.php:69 +#: all-in-one-wp-security/classes/wp-security-user-login.php:72 +#: all-in-one-wp-security/classes/wp-security-user-registration.php:61 +msgid "ERROR: Your answer was incorrect - please try again." +msgstr "ОШИБКА: Ваш ответ неверный - попробуйте еще раз." + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:293 +msgid "Enter something special:" +msgstr "Если Вы - человек, тогда лучше оставить это поле пустым:" + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:320 +msgid "Please enter an answer in the CAPTCHA field." +msgstr "Пожалуйста, напишите ответ в поле CAPTCHA." + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:330 +msgid "" +"Error: You entered an incorrect CAPTCHA answer. Please go back and try again." +msgstr "" +"Ошибка: Вы ввели некорректный ответ в поле CAPTCHA. Пожалуйста, попробуйте " +"еще раз." + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:382 +msgid "Your CAPTCHA answer was incorrect - please try again." +msgstr "" +"Вы ввели некорректный ответ в поле CAPTCHA. Пожалуйста, попробуйте еще раз." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:43 +msgid "" +"ERROR: Login failed because your IP address has been " +"blocked. Please contact the administrator." +msgstr "" +"ОШИБКА: Авторизация не удалась, так как Ваш IP-адрес " +"заблокирован. Пожалуйста, свяжитесь с администратором." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:82 +msgid "ERROR: The username field is empty." +msgstr "" +"ОШИБКА: Поле для указания имени пользователя незаполнено." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:86 +msgid "ERROR: The password field is empty." +msgstr "ERROR: Поле для указания пароля незаполнено." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:106 +#: all-in-one-wp-security/classes/wp-security-user-login.php:132 +msgid "ERROR: Invalid login credentials." +msgstr "ОШИБКА: Неверные логин или пароль" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:109 +msgid "ERROR: Invalid username." +msgstr "ОШИБКА: Неверное имя пользователя." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:135 +#, php-format +msgid "" +"ERROR: Incorrect password. Lost your password?" +msgstr "" +"ОШИБКА: Неверный пароль. Забыли свой пароль?" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:146 +msgid "" +"ACCOUNT PENDING: Your account is currently not active. An " +"administrator needs to activate your account before you can login." +msgstr "" +"АККАУНТ В ОЖИДАНИИ ПРОВЕРКИ: Ваш аккаунт еще не активен. До " +"того, как Вы сможете войти, администратор должен активировать аккаунт." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:269 +msgid "Site Lockout Notification" +msgstr "Уведомления блокировки" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:270 +msgid "" +"A lockdown event has occurred due to too many failed login attempts or " +"invalid username:" +msgstr "" +"Вы были заблокированы из-за слишком большого количества попыток неудачного " +"входа или неверного пользовательского имени: " + +#: all-in-one-wp-security/classes/wp-security-user-login.php:271 +msgid "Username: " +msgstr "Имя пользователя:" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:272 +msgid "IP Address: " +msgstr "IP-адрес: " + +#: all-in-one-wp-security/classes/wp-security-user-login.php:273 +msgid "IP Range: " +msgstr "Диапазон IP-адресов:" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:274 +msgid "" +"Log into your site's WordPress administration panel to see the duration of " +"the lockout or to unlock the user." +msgstr "" +"Авторизуйтесь в админ-панели сайта, чтобы видеть продолжительность " +"блокировки или чтобы разблокировать пользователя." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:338 +msgid "Unlock Request Notification" +msgstr "Уведомление о просьбе разблокировки" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:339 +msgid "You have requested for the account with email address " +msgstr "Вы попросили разблокировать аккаунт с Email-адресом " + +#: all-in-one-wp-security/classes/wp-security-user-login.php:340 +msgid "Unlock link: " +msgstr "Ссылка для разблокировки: " + +#: all-in-one-wp-security/classes/wp-security-user-login.php:341 +msgid "" +"After clicking the above link you will be able to login to the WordPress " +"administration panel." +msgstr "" +"После того, как кликните на эту ссылку, Вы сможете залогиниться в консоль " +"WordPress." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:507 +#, php-format +msgid "" +"Your session has expired because it has been over %d minutes since your last " +"login." +msgstr "" +"Ваша сессия была прекращена, поскольку прошло уже более %d минут с тех пор, " +"как Вы авторизовались последний раз." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:508 +#: all-in-one-wp-security/classes/wp-security-user-login.php:512 +msgid "Please log back in to continue." +msgstr "Для продолжения авторизуйтесь снова." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:511 +msgid "You were logged out because you just changed the \"admin\" username." +msgstr "" +"Ваша авторизационная сессия была прекращена, так как Вы только что изменили " +"имя пользователя «admin»." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:537 +msgid "Request Unlock" +msgstr "Попросить разблокировку" + +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:76 +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:95 +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:110 +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:125 +msgid " is not a valid ip address format." +msgstr " не является правильным форматом IP-адреса." + +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:133 +msgid "You cannot ban your own IP address: " +msgstr "Свой собственный IP-адрес забанить нельзя:" + +#: all-in-one-wp-security/classes/wp-security-utility.php:151 +msgid "" +"This feature can only be configured by the \"superadmin\" on the main site." +msgstr "" +"Данная функция может быть настроена только главным админом \"superadmin\" на " +"главном сайте." + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:29 +msgid "Remove WP Generatore Meta Tag" +msgstr "Удалите тэг мета-данных WP Generator" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:38 +msgid "Change Display Name" +msgstr "Изменить отображаемое имя пользователя" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:45 +msgid "Custom Login Captcha" +msgstr "Специальная CAPTCHA для логина" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:47 +msgid "Lost Password Captcha" +msgstr "CAPTCHA для восстановления пароля" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:49 +msgid "Login IP Whitelisting" +msgstr "Белый список IP-адресов для логина" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:55 +msgid "Registration Approval" +msgstr "Одобрение регистрации" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:71 +msgid "WordPress Files Access" +msgstr "Доступ к файлам WordPress" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:75 +msgid "IP and User Agent Blacklisting" +msgstr "Черного список для блокировки IP-адресов и юзер-агентов" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:79 +msgid "Enable Basic Firewall" +msgstr "Активировать базовый файрволл" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:80 +msgid "Enable Pingback Vulnerability Protection" +msgstr "Активировать защиты от Пингбэк-уязвимостей" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:81 +msgid "Enable IP blocking for 404 detection" +msgstr "Активировать блоровки IP-адресов на основе ошибок 404" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:85 +msgid "Enable Rename Login Page" +msgstr "Активировать изменение адреса страницы логина" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:87 +msgid "Enable Login Honeypot" +msgstr "Включить медовый боченок (honeypot) при авторизации" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:93 +msgid "Forbid Proxy Comments" +msgstr "Запретить комментарии через прокси" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:94 +msgid "Deny Bad Queries" +msgstr "Запретить вредоносные запросы" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:96 +msgid "5G Blacklist" +msgstr "Черный список 5G" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:99 +msgid "Block Spambots" +msgstr "Блокировать спам-роботы" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:101 +msgid "Comment Captcha" +msgstr "CAPTCHA для комментариев" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:103 +msgid "BuddyPress Registration Captcha" +msgstr "CAPTCHA для регистрации BuddyPress" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item.php:28 +msgid "Basic" +msgstr "Основное" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item.php:31 +msgid "Intermediate" +msgstr "Среднее" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item.php:34 +msgid "Advanced" +msgstr "Для продвинутых" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:96 +msgid "https://wordpress.org/" +msgstr "https://wordpress.org/" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:97 +#: all-in-one-wp-security/other-includes/wp-security-unlock-request.php:14 +msgid "Powered by WordPress" +msgstr "Сайт работает на WordPress" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:214 +#, php-format +msgid "← Back to %s" +msgstr "← Назад к «%s»" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:272 +msgid "ERROR: Enter a username or e-mail address." +msgstr "ОШИБКА: Введите имя пользователя или e-mail." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:276 +msgid "" +"ERROR: There is no user registered with that email address." +msgstr "" +"ОШИБКА: Пользователей с таким адресом e-mail не " +"зарегистрировано." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:293 +msgid "ERROR: Invalid username or e-mail." +msgstr "ОШИБКА: Неверное имя пользователя или e-mail." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:330 +msgid "Password reset is not allowed for this user" +msgstr "Сброс пароля для этого пользователя не разрешён" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:355 +msgid "Someone requested that the password be reset for the following account:" +msgstr "Кто-то запросил сброс пароля для следующей учётной записи:" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:357 +#, php-format +msgid "Username: %s" +msgstr "Имя пользователя: %s" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:358 +msgid "If this was a mistake, just ignore this email and nothing will happen." +msgstr "" +"Если произошла ошибка, просто проигнорируйте это письмо, и ничего не " +"произойдёт." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:359 +msgid "To reset your password, visit the following address:" +msgstr "Чтобы сбросить пароль, перейдите по следующей ссылке:" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:369 +#, php-format +msgid "[%s] Password Reset" +msgstr "[%s] Новый пароль" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:390 +msgid "The e-mail could not be sent." +msgstr "Сообщение не удалось отправить." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:390 +msgid "Possible reason: your host may have disabled the mail() function." +msgstr "Возможная причина: сервер не поддерживает функцию mail()." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:495 +msgid "Sorry, that key does not appear to be valid." +msgstr "Извините, этот ключ неверен." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:497 +msgid "Sorry, that key has expired. Please try again." +msgstr "К сожалению, данный ключ уже истек. Попробуйте еще раз." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:517 +msgid "Lost Password" +msgstr "Забыли пароль?" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:517 +msgid "" +"Please enter your username or email address. You will receive a link to " +"create a new password via email." +msgstr "" +"Пожалуйста, введите Ваше имя пользователя или e-mail. Вы получите письмо со " +"ссылкой для создания нового пароля." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:525 +msgid "Username or E-mail:" +msgstr "Имя пользователя или e-mail:" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:540 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:589 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:631 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:713 +msgid "Log in" +msgstr "Войти" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:543 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:634 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:892 +msgid "Register" +msgstr "Регистрация" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:575 +msgid "The passwords do not match." +msgstr "Пароли не совпадают." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:589 +msgid "Password Reset" +msgstr "Сброс пароля" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:589 +msgid "Your password has been reset." +msgstr "Ваш новый пароль вступил в силу." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:597 +msgid "Reset Password" +msgstr "Задать пароль" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:597 +msgid "Enter your new password below." +msgstr "Введите свой новый пароль ниже." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:604 +msgid "New password" +msgstr "Новый пароль" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:608 +msgid "Confirm new password" +msgstr "Подтвердите новый пароль" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:612 +msgid "Strength indicator" +msgstr "Индикатор надёжности" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:613 +msgid "" +"Hint: The password should be at least seven characters long. To make it " +"stronger, use upper and lower case letters, numbers, and symbols like ! \" ? " +"$ % ^ & )." +msgstr "" +"Подсказка: Пароль должен состоять как минимум из семи символов. Чтобы " +"сделать его надёжнее, используйте буквы верхнего и нижнего регистра, числа и " +"символы наподобие ! \" ? $ % ^ & )." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:686 +msgid "Registration Form" +msgstr "Регистрационная форма" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:686 +msgid "Register For This Site" +msgstr "Зарегистрироваться на этом сайте" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:691 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:858 +msgid "Username" +msgstr "Имя пользователя" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:695 +msgid "E-mail" +msgstr "E-mail" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:706 +msgid "A password will be e-mailed to you." +msgstr "Пароль будет отправлен Вам на e-mail." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:714 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:897 +msgid "Lost your password?" +msgstr "Забыли пароль?" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:760 +#, php-format +msgid "" +"ERROR: Cookies are blocked due to unexpected output. For " +"help, please see this documentation or try the support forums." +msgstr "" +"ОШИБКА: Куки заблокированы из-за преждевременного " +"отправления данных к клиенту. Для помощи, смотрите эту " +"документацию или обратитесь в форумы поддержки." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:761 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:765 +msgid "http://codex.wordpress.org/Cookies" +msgstr "http://codex.wordpress.org/Cookies" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:761 +msgid "https://wordpress.org/support/" +msgstr "https://ru.forums.wordpress.org/" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:764 +#, php-format +msgid "" +"ERROR: Cookies are blocked or not supported by your " +"browser. You must enable cookies to use WordPress." +msgstr "" +"ОШИБКА: Куки либо заблокированы Вашим браузером, либо Ваш " +"браузер их не поддерживает. Для пользования WordPress, необходимо активировать куки." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:783 +msgid "You have logged in successfully." +msgstr "Вы успешно вошли в систему." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:817 +msgid "" +"Session expired. Please log in again. You will not move away from this page." +msgstr "" +"Время Вашей сессии истекло. Пожалуйста, авторизуйтесь снова. Вы останетесь " +"на этой же странице." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:821 +msgid "You are now logged out." +msgstr "Вы вышли из системы." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:823 +msgid "User registration is currently not allowed." +msgstr "В данный момент регистрация запрещена." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:825 +msgid "Check your e-mail for the confirmation link." +msgstr "Вам отправлено письмо со ссылкой для подтверждения." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:827 +msgid "Check your e-mail for your new password." +msgstr "Вам отправлено письмо с новым паролем." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:829 +msgid "Registration complete. Please check your e-mail." +msgstr "Регистрация завершена. Проверьте Вашу почту." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:831 +msgid "" +"You have successfully updated WordPress! Please log back in " +"to experience the awesomeness." +msgstr "" +"Вы успешно обновили WordPress! Пожалуйста, войдите снова, " +"чтобы ощутить все прелести." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:848 +msgid "Log In" +msgstr "Войти" + +#: all-in-one-wp-security/other-includes/wp-security-unlock-request.php:13 +msgid "http://wordpress.org/" +msgstr "http://ru.wordpress.org/" + +#: all-in-one-wp-security/other-includes/wp-security-unlock-request.php:48 +msgid "Please enter a valid email address" +msgstr "Пожалуйста, введите корректный адрес e-mail." + +#: all-in-one-wp-security/other-includes/wp-security-unlock-request.php:59 +msgid "User account not found!" +msgstr "Учетной записи пользователя нет!" + +#: all-in-one-wp-security/other-includes/wp-security-unlock-request.php:70 +msgid "Error: No locked entry was found in the DB with your IP address range!" +msgstr "" +"Ошибка: Никакой залоченной записи не было найдено в БД с диапазоном Вашего IP-" +"адреса!" + +#: all-in-one-wp-security/other-includes/wp-security-unlock-request.php:98 +msgid "Email Address" +msgstr "Адрес электронной почты" + +#~ msgid "There was an error when updating the options table." +#~ msgstr "Не удалось скорректировать записи в таблице опций." + +#~ msgid "" +#~ "DB Backup was successfully completed! Right click on the following file " +#~ "name and save the backup to your computer." +#~ msgstr "" +#~ "Резервная копия БД успешно создана! Кликните правой кнопкой мыши по имени " +#~ "файла, чтобы скачать его на компьютер." + +#~ msgid "" +#~ "Your system config file is already configured to disallow PHP file " +#~ "editing." +#~ msgstr "" +#~ "Ваша система уже сконфигурирована с запретом на редактирование PHP-файлов." + +#~ msgid "" +#~ "Settings Saved - Your system is now configured to not allow PHP file " +#~ "editing." +#~ msgstr "" +#~ "Настройки сохранены - Ваша система сконфигурирована с запретом на " +#~ "редактирование PHP-файлов." + +#~ msgid "" +#~ "A backup copy of your wp-config.php file was created successfully...." +#~ msgstr "Резервная копия Вашего файла wp-config.php успешно создана..." + +#~ msgid "" +#~ "Your system config file is already configured to allow PHP file editing." +#~ msgstr "" +#~ "Ваш файл wp-config.php уже имеет настройки, разрешающие " +#~ "редактирование PHP-файлов." + +#~ msgid "" +#~ "Settings Saved - Your system is now configured to allow PHP file editing." +#~ msgstr "" +#~ "Настройки сохранены - Ваша система сконфигурирована с разрешением " +#~ "редактировать PHP-файлы." + +#~ msgid "Your .htaccess File: " +#~ msgstr "Ваш файл .htaccess:" + +#~ msgid "" +#~ "Your wp-config.php file was successfully backed up! Right click on the " +#~ "following file name and save the backup to your computer." +#~ msgstr "Резервная копия файла wp-config.php успешно создана!" + +#~ msgid "Your wp-config.php File: " +#~ msgstr "Ваш файл wp-config.php:" + +#~ msgid "" +#~ "wp-config.php file rename failed during backup. Please check your root " +#~ "directory for the backup file using FTP." +#~ msgstr "" +#~ "Во время резервного копирования файла wp-config.php не удалось его " +#~ "переименовать. Воспользуйтесь FTP, чтобы проверить наличие созданной " +#~ "резервной копии в корневой директории Вашего сайта." + +#~ msgid "wp-config.php backup failed." +#~ msgstr "Создать резервную копию файла wp-config.php не удалось." + +#~ msgid "unknown" +#~ msgstr "неизвестно" diff --git a/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-sv_SE.mo b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-sv_SE.mo new file mode 100644 index 0000000..9b7f753 Binary files /dev/null and b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-sv_SE.mo differ diff --git a/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-sv_SE.po b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-sv_SE.po new file mode 100644 index 0000000..cf2a674 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-sv_SE.po @@ -0,0 +1,5087 @@ +msgid "" +msgstr "" +"Project-Id-Version: AIOWPS Swedish translation of public parts\n" +"POT-Creation-Date: 2014-09-19 10:46+1000\n" +"PO-Revision-Date: 2014-11-06 16:31+0100\n" +"Last-Translator: Tor-Bjorn Fjellner \n" +"Language-Team: Tor-Bjorn Fjellner 6 Nov 2014 \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.7\n" +"X-Poedit-KeywordsList: __;_e\n" +"X-Poedit-Basepath: .\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"Language: sv_SE\n" +"X-Poedit-SearchPath-0: .\n" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:203 +msgid "WP Security" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:204 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:23 +msgid "Dashboard" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:205 +msgid "Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:206 +msgid "User Accounts" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:207 +msgid "User Login" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:208 +msgid "User Registration" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:209 +msgid "Database Security" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:213 +msgid "Filesystem Security" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:215 +msgid "WHOIS Lookup" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:219 +msgid "Blacklist Manager" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:224 +msgid "Firewall" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:229 +msgid "Brute Force" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:231 +msgid "SPAM Prevention" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:235 +msgid "Scanner" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:237 +msgid "Maintenance" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:238 +msgid "Miscellaneous" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-menu.php:43 +msgid "Settings successfully updated." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-menu.php:50 +msgid "The selected record(s) deleted successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:22 +msgid "Ban Users" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:80 +msgid "Nonce check failed for save blacklist settings!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:132 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:631 +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:147 +msgid "" +"The plugin was unable to write to the .htaccess file. Please edit file " +"manually." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:139 +msgid "Ban IPs or User Agents" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:142 +msgid "" +"The All In One WP Security Blacklist feature gives you the option of banning " +"certain host IP addresses or ranges and also user agents." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:143 +msgid "" +"This feature will deny total site access for users which have IP addresses " +"or user agents matching those which you have configured in the settings " +"below." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:144 +msgid "" +"The plugin achieves this by making appropriate modifications to your ." +"htaccess file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:145 +msgid "" +"By blocking people via the .htaccess file your are using the most secure " +"first line of defence which denies all access to blacklisted visitors as " +"soon as they hit your hosting server." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:151 +msgid "IP Hosts and User Agent Blacklist Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:162 +msgid "Enable IP or User Agent Blacklisting" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:165 +msgid "" +"Check this if you want to enable the banning (or blacklisting) of selected " +"IP addresses and/or user agents specified in the settings below" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:169 +msgid "Enter IP Addresses:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:173 +msgid "Enter one or more IP addresses or IP ranges." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:174 +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:194 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:347 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:381 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:404 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:425 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:687 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:293 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:310 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:165 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:195 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:326 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:356 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:387 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:415 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:444 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:532 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:622 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:824 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:847 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:168 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:253 +msgid "More Info" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:177 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:690 +msgid "Each IP address must be on a new line." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:178 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:691 +msgid "" +"To specify an IP range use a wildcard \"*\" character. Acceptable ways to " +"use wildcards is shown in the examples below:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:179 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:692 +msgid "Example 1: 195.47.89.*" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:180 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:693 +msgid "Example 2: 195.47.*.*" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:181 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:694 +msgid "Example 3: 195.*.*.*" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:188 +msgid "Enter User Agents:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:193 +msgid "Enter one or more user agent strings." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:197 +msgid "Each user agent string must be on a new line." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:198 +msgid "Example 1 - A single user agent string to block:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:200 +msgid "Example 2 - A list of more than 1 user agent strings to block" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:208 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:192 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:567 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:701 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:763 +#: all-in-one-wp-security/admin/wp-security-database-menu.php:356 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:331 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:231 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:700 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:866 +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:165 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:495 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:183 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:349 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:239 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:407 +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:146 +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:232 +msgid "Save Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:26 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:368 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:377 +msgid "Rename Login Page" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:27 +msgid "Cookie Based Brute Force Prevention" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:28 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:44 +msgid "Login Captcha" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:29 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:638 +msgid "Login Whitelist" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:30 +msgid "Honeypot" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:101 +msgid "Please enter a value for your login page slug." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:105 +msgid "You cannot use the value \"wp-admin\" for your login page slug." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:107 +msgid "You must alpha numeric characters for your login page slug." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:112 +#: all-in-one-wp-security/admin/wp-security-database-menu.php:271 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:171 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:769 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:213 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:123 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:360 +msgid "Attention!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:131 +msgid "" +"Could not delete the Cookie-based directives from the .htaccess file. Please " +"check the file permissions." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:141 +msgid "" +"An effective Brute Force prevention technique is to change the default " +"WordPress login page URL." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:142 +msgid "" +"Normally if you wanted to login to WordPress you would type your site's home " +"URL followed by wp-login.php." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:143 +msgid "" +"This feature allows you to change the login URL by setting your own slug and " +"renaming the last portion of the login URL which contains the wp-" +"login.php to any string that you like." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:144 +msgid "" +"By doing this, malicious bots and hackers will not be able to access your " +"login page because they will not know the correct login page URL." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:146 +msgid "" +"You may also be interested in the following alternative brute force " +"prevention features:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:157 +msgid "Your WordPress login page URL has been renamed." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:158 +msgid "Your current login URL is:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:160 +msgid "" +"NOTE: If you already had the Cookie-Based Brute Force Prevention feature " +"active, the plugin has automatically deactivated it because only one of " +"these features can be active at any one time." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:167 +msgid "Rename Login Page Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:179 +msgid "Enable Rename Login Page Feature" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:182 +msgid "Check this if you want to enable the rename login page feature" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:186 +msgid "Login Page URL" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:188 +msgid "" +"Enter a string which will represent your secure login page slug. You are " +"enouraged to choose something which is hard to guess and only you will " +"remember." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:221 +msgid "" +"Settings have not been saved - your secret word must consist only of " +"alphanumeric characters, ie, letters and/or numbers only!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:240 +msgid "" +"You have successfully enabled the cookie based brute force prevention feature" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:241 +msgid "" +"From now on you will need to log into your WP Admin using the following URL:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:243 +msgid "" +"It is important that you save this URL value somewhere in case you forget " +"it, OR," +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:244 +#, php-format +msgid "simply remember to add a \"?%s=1\" to your current site URL address." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:250 +msgid "" +"You have successfully saved cookie based brute force prevention feature " +"settings." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:285 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:275 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:119 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:287 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:498 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:667 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:585 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:108 +msgid "" +"Could not write to the .htaccess file. Please check the file permissions." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:295 +msgid "Brute Force Prevention Firewall Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:300 +msgid "" +"A Brute Force Attack is when a hacker tries many combinations of usernames " +"and passwords until they succeed in guessing the right combination." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:301 +msgid "" +"Due to the fact that at any one time there may be many concurrent login " +"attempts occurring on your site via malicious automated robots, this also " +"has a negative impact on your server's memory and performance." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:302 +msgid "" +"The features in this tab will stop the majority of Brute Force Login Attacks " +"at the .htaccess level thus providing even better protection for your WP " +"login page and also reducing the load on your server because the system does " +"not have to run PHP code to process the login attempts." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:309 +#, php-format +msgid "" +"Even though this feature should not have any impact on your site's general " +"functionality you are strongly encouraged to take a %s of your ." +"htaccess file before proceeding." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:310 +msgid "" +"If this feature is not used correctly, you can get locked out of your site. " +"A backed up .htaccess file will come in handy if that happens." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:311 +#, php-format +msgid "" +"To learn more about how to use this feature please watch the following %s." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:324 +msgid "" +"NOTE: If you already had the Rename Login Page feature active, the plugin " +"has automatically deactivated it because only one of these features can be " +"active at any one time." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:332 +msgid "Cookie Based Brute Force Login Prevention" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:343 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:90 +msgid "Enable Brute Force Attack Prevention" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:346 +msgid "" +"Check this if you want to protect your login page from Brute Force Attack." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:351 +msgid "" +"This feature will deny access to your WordPress login page for all people " +"except those who have a special cookie in their browser." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:353 +msgid "To use this feature do the following:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:355 +msgid "1) Enable the checkbox." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:357 +msgid "" +"2) Enter a secret word consisting of alphanumeric characters which will be " +"difficult to guess. This secret word will be useful whenever you need to " +"know the special URL which you will use to access the login page (see point " +"below)." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:359 +msgid "" +"3) You will then be provided with a special login URL. You will need to use " +"this URL to login to your WordPress site instead of the usual login URL. " +"NOTE: The system will deposit a special cookie in your browser which will " +"allow you access to the WordPress administration login page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:361 +msgid "" +"Any person trying to access your login page who does not have the special " +"cookie in their browser will be automatically blocked." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:368 +msgid "Secret Word" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:370 +msgid "" +"Choose a secret word consisting of alphanumeric characters which you can use " +"to access your special URL. Your are highly encouraged to choose a word " +"which will be difficult to guess." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:374 +msgid "Re-direct URL" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:378 +msgid "" +"Specify a URL to redirect a hacker to when they try to access your WordPress " +"login page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:385 +msgid "" +"The URL specified here can be any site's URL and does not have to be your " +"own. For example you can be as creative as you like and send hackers to the " +"CIA or NSA home page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:387 +msgid "" +"This field will default to: http://127.0.0.1 if you do not enter a value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:389 +msgid "Useful Tip:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:391 +msgid "" +"It's a good idea to not redirect attempted brute force login attempts to " +"your site because it increases the load on your server." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:393 +msgid "" +"Redirecting a hacker or malicious bot back to \"http://127.0.0.1\" is ideal " +"because it deflects them back to their own local host and puts the load on " +"their server instead of yours." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:400 +msgid "My Site Has Posts Or Pages Which Are Password Protected" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:403 +msgid "" +"Check this if you are using the native WordPress password protection feature " +"for some or all of your blog posts or pages." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:408 +msgid "" +"In the cases where you are protecting some of your posts or pages using the " +"in-built WordPress password protection feature, a few extra lines of " +"directives and exceptions need to be added to your .htacces file so that " +"people trying to access pages are not automatically blocked." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:410 +msgid "" +"By enabling this checkbox the plugin will add the necessary rules and " +"exceptions to your .htacces file so that people trying to access these pages " +"are not automatically blocked." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:412 +msgid "Helpful Tip:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:414 +msgid "" +"If you do not use the WordPress password protection feature for your posts " +"or pages then it is highly recommended that you leave this checkbox disabled." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:421 +msgid "My Site Has a Theme or Plugins Which Use AJAX" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:424 +msgid "Check this if your site uses AJAX functionality." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:429 +msgid "" +"In the cases where your WordPress installation has a theme or plugins which " +"use AJAX, a few extra lines of directives and exceptions need to be added to " +"your .htacces file to prevent AJAX requests from being automatically blocked " +"by the brute force prevention feature." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:431 +msgid "" +"By enabling this checkbox the plugin will add the necessary rules and " +"exceptions to your .htacces file so that AJAX operations will work as " +"expected." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:446 +msgid "The cookie test was successful. You can now enable this feature." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:449 +msgid "Save Feature Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:456 +msgid "" +"The cookie test failed on this server. So this feature cannot be used on " +"this site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:461 +msgid "" +"Before using this feature you are required to perform a cookie test first. " +"This is to make sure that your browser cookie is working correctly and that " +"you won't lock yourself out." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:463 +msgid "Perform Cookie Test" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:503 +msgid "" +"This feature allows you to add a captcha form on the WordPress login page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:504 +msgid "" +"Users who attempt to login will also need to enter the answer to a simple " +"mathematical question - if they enter the wrong answer, the plugin will not " +"allow them login even if they entered the correct username and password." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:505 +msgid "" +"Therefore, adding a captcha form on the login page is another effective yet " +"simple \"Brute Force\" prevention technique." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:511 +msgid "Login Form Captcha Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:522 +msgid "Enable Captcha On Login Page" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:525 +msgid "Check this if you want to insert a captcha form on the login page" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:531 +msgid "Custom Login Form Captcha Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:540 +msgid "Enable Captcha On Custom Login Form" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:543 +msgid "" +"Check this if you want to insert captcha on a custom login form generated by " +"the following WP function: wp_login_form()" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:549 +msgid "Lost Password Form Captcha Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:559 +msgid "Enable Captcha On Lost Password Page" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:562 +msgid "" +"Check this if you want to insert a captcha form on the lost password page" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:584 +msgid "Nonce check failed for save whitelist settings!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:641 +msgid "" +"The All In One WP Security Whitelist feature gives you the option of only " +"allowing certain IP addresses or ranges to have access to your WordPress " +"login page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:642 +msgid "" +"This feature will deny login access for all IP addresses which are not in " +"your whitelist as configured in the settings below." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:643 +msgid "" +"The plugin achieves this by writing the appropriate directives to your ." +"htaccess file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:644 +msgid "" +"By allowing/blocking IP addresses via the .htaccess file your are using the " +"most secure first line of defence because login access will only be granted " +"to whitelisted IP addresses and other addresses will be blocked as soon as " +"they try to access your login page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:651 +#, php-format +msgid "" +"Attention: If in addition to enabling the white list feature, you also have " +"the %s feature enabled, you will still need to use your secret word " +"in the URL when trying to access your WordPress login page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:652 +msgid "" +"These features are NOT functionally related. Having both of them enabled on " +"your site means you are creating 2 layers of security." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:657 +msgid "Login IP Whitelist Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:668 +msgid "Enable IP Whitelisting" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:671 +msgid "" +"Check this if you want to enable the whitelisting of selected IP addresses " +"specified in the settings below" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:675 +msgid "Your Current IP Address" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:678 +msgid "" +"You can copy and paste this address in the text box below if you want to " +"include it in your login whitelist." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:682 +msgid "Enter Whitelisted IP Addresses:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:686 +msgid "" +"Enter one or more IP addresses or IP ranges you wish to include in your " +"whitelist. Only the addresses specified here will have access to the " +"WordPress login page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:734 +msgid "" +"This feature allows you to add a special hidden \"honeypot\" field on the " +"WordPress login page. This will only be visible to robots and not humans." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:735 +msgid "" +"Since robots usually fill in every input field from a login form, they will " +"also submit a value for the special hidden honeypot field." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:736 +msgid "" +"The way honeypots work is that a hidden field is placed somewhere inside a " +"form which only robots will submit. If that field contains a value when the " +"form is submitted then a robot has most likely submitted the form and it is " +"consquently dealt with." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:737 +msgid "" +"Therefore, if the plugin detects that this field has a value when the login " +"form is submitted, then the robot which is attempting to login to your site " +"will be redirected to its localhost address - http://127.0.0.1." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:743 +msgid "Login Form Honeypot Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:754 +msgid "Enable Honeypot On Login Page" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:757 +msgid "" +"Check this if you want to enable the honeypot feature for the login page" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:24 +msgid "System Info" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:25 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:460 +msgid "Locked IP Addresses" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:75 +msgid "For information, updates and documentation, please visit the" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:75 +msgid "AIO WP Security & Firewall Plugin" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:75 +msgid "Page" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:76 +msgid "Follow us" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:76 +msgid "" +"Twitter, Google+ or via Email to stay up to date about the new security " +"features of this plugin." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:92 +msgid "Security Strength Meter" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:121 +msgid "Total Achievable Points: " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:123 +msgid "Current Score of Your Site: " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:133 +msgid "Security Points Breakdown" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:174 +msgid "Spread the Word" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:177 +msgid "" +"We are working hard to make your WordPress site more secure. Please support " +"us, here is how:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:193 +msgid "Critical Feature Status" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:197 +msgid "" +"Below is the current status of the critical features that you should " +"activate on your site to achieve a minimum level of recommended security" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:201 +msgid "Admin Username" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:216 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:25 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:42 +msgid "Login Lockdown" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:231 +msgid "File Permission" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:246 +msgid "Basic Firewall" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:264 +msgid "Last 5 Logins" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:281 +msgid "No data found!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:285 +msgid "Last 5 logins summary:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:289 +msgid "User" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:290 +msgid "Date" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:291 +msgid "IP" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:312 +msgid "Maintenance Mode Status" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:316 +msgid "" +"Maintenance mode is currently enabled. Remember to turn it off when you are " +"done" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:319 +msgid "Maintenance mode is currently off." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:323 +msgid "Maintenance Mode" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:345 +msgid "Cookie Based Brute Prevention" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:348 +msgid "Cookie-Based Brute Force" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:352 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:380 +#, php-format +msgid "The %s feature is currently active." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:353 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:381 +msgid "Your new WordPress login URL is now:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:413 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:29 +msgid "Logged In Users" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:423 +msgid "Number of users currently logged in site-wide is:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:424 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:446 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:474 +#, php-format +msgid "Go to the %s menu to see more details" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:429 +msgid "There are no other site-wide users currently logged in." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:445 +msgid "Number of users currently logged into your site (including you) is:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:451 +msgid "There are no other users currently logged in." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:468 +msgid "There are no IP addresses currently locked out." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:473 +msgid "Number of temporarily locked out IP addresses: " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:516 +msgid "Site Info" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:518 +msgid "Plugin Version" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:519 +msgid "WP Version" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:521 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:523 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:619 +msgid "Version" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:522 +msgid "Table Prefix" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:524 +msgid "Session Save Path" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:526 +msgid "Server Name" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:527 +msgid "Cookie Domain" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:528 +msgid "Library Present" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:529 +msgid "Debug File Write Permissions" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:533 +msgid "PHP Info" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:535 +msgid "PHP Version" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:536 +msgid "PHP Memory Usage" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:537 +msgid " MB" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:543 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:551 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:559 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:601 +msgid "N/A" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:546 +msgid "PHP Memory Limit" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:554 +msgid "PHP Max Upload Size" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:562 +msgid "PHP Max Post Size" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:565 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:573 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:582 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:590 +msgid "On" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:567 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:575 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:584 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:592 +msgid "Off" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:570 +msgid "PHP Safe Mode" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:578 +msgid "PHP Allow URL fopen" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:587 +msgid "PHP Allow URL Include" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:595 +msgid "PHP Display Errors" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:604 +msgid "PHP Max Script Execution Time" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:604 +msgid "Seconds" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:608 +msgid "Active Plugins" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:618 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:130 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:149 +msgid "Name" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:620 +msgid "Plugin URL" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:656 +msgid "Currently Locked Out IP Addresses and Ranges" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:26 +#: all-in-one-wp-security/admin/wp-security-database-menu.php:31 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:63 +msgid "DB Backup" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:30 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:61 +msgid "DB Prefix" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:93 +msgid "Nonce check failed for DB prefix change operation!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:101 +msgid "" +"The plugin has detected that it cannot write to the wp-config.php file. This " +"feature can only be used if the plugin can successfully write to the wp-" +"config.php file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:114 +msgid "Please enter a value for the DB prefix." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:123 +msgid "" +"ERROR: The table prefix can only contain numbers, letters, " +"and underscores." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:131 +msgid "Change Database Prefix" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:134 +msgid "" +"Your WordPress DB is the most important asset of your website because it " +"contains a lot of your site's precious information." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:135 +msgid "" +"The DB is also a target for hackers via methods such as SQL injections and " +"malicious and automated code which targets certain tables." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:136 +msgid "" +"One way to add a layer of protection for your DB is to change the default " +"WordPress table prefix from \"wp_\" to something else which will be " +"difficult for hackers to guess." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:137 +msgid "" +"This feature allows you to easily change the prefix to a value of your " +"choice or to a random value set by this plugin." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:143 +msgid "DB Prefix Options" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:154 +#, php-format +msgid "It is recommended that you perform a %s before using this feature" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:163 +msgid "Current DB Table Prefix" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:169 +msgid "" +"Your site is currently using the default WordPress DB prefix value of \"wp_" +"\". \n" +" To increase your site's security you should " +"consider changing the DB prefix value to another value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:176 +msgid "Generate New DB Table Prefix" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:179 +msgid "" +"Check this if you want the plugin to generate a random 6 character string " +"for the table prefix" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:180 +msgid "OR" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:182 +msgid "" +"Choose your own DB prefix by specifying a string which contains letters and/" +"or numbers and/or underscores. Example: xyz_" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:186 +msgid "Change DB Prefix" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:207 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:86 +msgid "Nonce check failed for manual DB backup operation!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:224 +msgid "" +"DB Backup was successfully completed! You will receive the backup file via " +"email if you have enabled \"Send Backup File Via Email\", otherwise you can " +"retrieve it via FTP from the following directory:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:226 +msgid "Your DB Backup File location: " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:234 +msgid "DB Backup failed. Please check the permissions of the backup directory." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:251 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:135 +msgid "" +"You entered a non numeric value for the \"backup time interval\" field. It " +"has been set to the default value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:258 +msgid "" +"You entered a non numeric value for the \"number of backup files to keep\" " +"field. It has been set to the default value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:265 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:165 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:117 +msgid "" +"You have entered an incorrect email address format. It has been set to your " +"WordPress admin email as default." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:298 +msgid "Manual Backup" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:304 +msgid "To create a new DB backup just click on the button below." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:307 +msgid "Create DB Backup Now" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:311 +msgid "Automated Scheduled Backups" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:323 +msgid "Enable Automated Scheduled Backups" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:326 +msgid "" +"Check this if you want the system to automatically generate backups " +"periodically based on the settings below" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:330 +msgid "Backup Time Interval" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:333 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:281 +msgid "Hours" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:334 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:282 +msgid "Days" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:335 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:283 +msgid "Weeks" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:337 +msgid "Set the value for how often you would like an automated backup to occur" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:341 +msgid "Number of Backup Files To Keep" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:343 +msgid "" +"Thie field allows you to choose the number of backup files you would like to " +"keep in the backup directory" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:347 +msgid "Send Backup File Via Email" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:350 +msgid "" +"Check this if you want the system to email you the backup file after a DB " +"backup has been performed" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:352 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:327 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:235 +msgid "Enter an email address" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:383 +msgid "Error - Could not get tables or no tables found!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:387 +msgid "Starting DB prefix change operations....." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:389 +#, php-format +msgid "" +"Your WordPress system has a total of %s tables and your new DB prefix will " +"be: %s" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:395 +#: all-in-one-wp-security/classes/wp-security-utility.php:206 +msgid "" +"Failed to make a backup of the wp-config.php file. This operation will not " +"go ahead." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:399 +msgid "A backup copy of your wp-config.php file was created successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:421 +#, php-format +msgid "%s table name update failed" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:433 +#, php-format +msgid "Please change the prefix manually for the above tables to: %s" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:436 +#, php-format +msgid "%s tables had their prefix updated successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:452 +msgid "wp-config.php file was updated successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:455 +#, php-format +msgid "" +"The \"wp-config.php\" file was not able to be modified. Please modify this " +"file manually using your favourite editor and search \n" +" for variable \"$table_prefix\" and assign the following " +"value to that variable: %s" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:468 +#: all-in-one-wp-security/admin/wp-security-database-menu.php:490 +#, php-format +msgid "Update of table %s failed: unable to change %s to %s" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:472 +msgid "" +"The options table records which had references to the old DB prefix were " +"updated successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:494 +#, php-format +msgid "" +"The %s table records which had references to the old DB prefix were updated " +"successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:523 +#, php-format +msgid "" +"Error updating user_meta table where new meta_key = %s, old meta_key = %s " +"and user_id = %s." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:528 +msgid "" +"The usermeta table records which had references to the old DB prefix were " +"updated successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:530 +msgid "DB prefix change tasks have been completed." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:24 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:107 +msgid "File Change Detection" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:25 +msgid "Malware Scan" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:26 +msgid "DB Scan" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:95 +msgid "There have been no file changes since the last scan." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:105 +msgid "Nonce check failed for manual file change detection scan operation!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:112 +msgid "" +"The plugin has detected that this is your first file change detection scan. " +"The file details from this scan will be used to detect file changes for " +"future scans!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:114 +msgid "Scan Complete - There were no file changes detected!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:203 +msgid "" +"NEW SCAN COMPLETED: The plugin has detected that you have made changes to " +"the \"File Types To Ignore\" or \"Files To Ignore\" fields.\n" +" In order to ensure that future scan results are " +"accurate, the old scan data has been refreshed." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:213 +msgid "" +"All In One WP Security & Firewall has detected that there was a change in " +"your host's files." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:215 +msgid "View Scan Details & Clear This Message" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:224 +msgid "" +"If given an opportunity hackers can insert their code or files into your " +"system which they can then use to carry out malicious acts on your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:225 +msgid "" +"Being informed of any changes in your files can be a good way to quickly " +"prevent a hacker from causing damage to your website." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:226 +msgid "" +"In general, WordPress core and plugin files and file types such as \".php\" " +"or \".js\" should not change often and when they do, it is important that " +"you are made aware when a change occurs and which file was affected." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:227 +msgid "" +"The \"File Change Detection Feature\" will notify you of any file change " +"which occurs on your system, including the addition and deletion of files by " +"performing a regular automated or manual scan of your system's files." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:228 +msgid "" +"This feature also allows you to exclude certain files or folders from the " +"scan in cases where you know that they change often as part of their normal " +"operation. (For example log files and certain caching plugin files may " +"change often and hence you may choose to exclude such files from the file " +"change detection scan)" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:233 +msgid "Manual File Change Detection Scan" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:239 +msgid "" +"To perform a manual file change detection scan click on the button below." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:242 +msgid "Perform Scan Now" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:246 +msgid "View Last Saved File Change Results" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:252 +msgid "" +"Click the button below to view the saved file change results from the last " +"scan." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:255 +msgid "View Last File Change" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:259 +msgid "File Change Detection Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:271 +msgid "Enable Automated File Change Detection Scan" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:274 +msgid "" +"Check this if you want the system to automatically/periodically scan your " +"files to check for file changes based on the settings below" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:278 +msgid "Scan Time Interval" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:285 +msgid "Set the value for how often you would like a scan to occur" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:289 +msgid "File Types To Ignore" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:292 +msgid "" +"Enter each file type or extension on a new line which you wish to exclude " +"from the file change detection scan." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:296 +msgid "" +"You can exclude file types from the scan which would not normally pose any " +"security threat if they were changed. These can include things such as image " +"files." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:297 +msgid "" +"Example: If you want the scanner to ignore files of type jpg, png, and bmp, " +"then you would enter the following:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:298 +msgid "jpg" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:299 +msgid "png" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:300 +msgid "bmp" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:306 +msgid "Files/Directories To Ignore" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:309 +msgid "" +"Enter each file or directory on a new line which you wish to exclude from " +"the file change detection scan." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:313 +msgid "" +"You can exclude specific files/directories from the scan which would not " +"normally pose any security threat if they were changed. These can include " +"things such as log files." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:314 +msgid "" +"Example: If you want the scanner to ignore certain files in different " +"directories or whole directories, then you would enter the following:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:315 +msgid "cache/config/master.php" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:316 +msgid "somedirectory" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:322 +msgid "Send Email When Change Detected" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:325 +msgid "" +"Check this if you want the system to email you if a file change was detected" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:343 +msgid "What is Malware?" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:344 +msgid "" +"The word Malware stands for Malicious Software. It can consist of things " +"like trojan horses, adware, worms, spyware and any other undesirable code " +"which a hacker will try to inject into your website." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:345 +msgid "" +"Often when malware code has been inserted into your site you will normally " +"not notice anything out of the ordinary based on appearances, but it can " +"have a dramatic effect on your site's search ranking." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:346 +msgid "" +"This is because the bots and spiders from search engines such as Google have " +"the capability to detect malware when they are indexing the pages on your " +"site, and consequently they can blacklist your website which will in turn " +"affect your search rankings." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:350 +msgid "Scanning For Malware" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:351 +msgid "" +"Due to the constantly changing and complex nature of Malware, scanning for " +"such things using a standalone plugin will not work reliably. This is " +"something best done via an external scan of your site regularly." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:352 +msgid "" +"This is why we have created an easy-to-use scanning service which is hosted " +"off our own server which will scan your site for malware once every day and " +"notify you if it finds anything." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:353 +msgid "When you sign up for this service you will get the following:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:355 +msgid "Automatic Daily Scan of 1 Website" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:356 +msgid "Automatic Malware & Blacklist Monitoring" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:357 +msgid "Automatic Email Alerting" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:358 +msgid "Site uptime monitoring" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:359 +msgid "Site response time monitoring" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:360 +msgid "Malware Cleanup" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:361 +msgid "Blacklist Removal" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:362 +msgid "No Contract (Cancel Anytime)" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:364 +#, php-format +msgid "To learn more please %s." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:374 +msgid "" +"This feature performs a basic database scan which will look for any common " +"suspicious-looking strings and javascript and html code in some of the " +"Wordpress core tables." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:391 +msgid "Nonce check failed for manual db scan operation!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:402 +msgid "" +"This feature will perform a basic database scan which will look for any " +"common suspicious-looking strings and javascript and html code in some of " +"the Wordpress core tables." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:403 +msgid "" +"If the scan finds anything it will list all \"potentially\" malicious " +"results but it is up to you to verify whether a result is a genuine example " +"of a hacking attack or a false positive." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:404 +msgid "" +"As well as scanning for generic strings commonly used in malicious cases, " +"this feature will also scan for some of the known \"pharma\" hack entries " +"and if it finds any it will automatically delete them." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:405 +msgid "" +"The WordPress core tables scanned by this feature include: posts, postmeta, " +"comments, links, users, usermeta, and options tables." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:410 +msgid "Database Scan" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:416 +msgid "To perform a database scan click on the button below." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:419 +msgid "Perform DB Scan" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:462 +msgid "Latest File Change Scan Results" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:471 +msgid "The following files were added to your host." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:474 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:495 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:519 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:27 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:28 +msgid "File" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:475 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:496 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:520 +msgid "File Size" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:476 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:497 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:521 +msgid "File Modified" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:492 +msgid "The following files were removed from your host." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:516 +msgid "The following files were changed on your host." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:26 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:67 +msgid "File Permissions" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:27 +msgid "PHP File Editing" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:28 +msgid "WP File Access" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:29 +msgid "Host System Logs" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:96 +#, php-format +msgid "The permissions for %s were succesfully changed to %s" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:100 +#, php-format +msgid "Unable to change permissions for %s!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:106 +msgid "File Permissions Scan" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:109 +msgid "" +"Your WordPress file and folder permission settings govern the accessability " +"and read/write privileges of the files and folders which make up your WP " +"installation." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:110 +msgid "" +"Your WP installation already comes with reasonably secure file permission " +"settings for the filesystem." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:111 +msgid "" +"However, sometimes people or other plugins modify the various permission " +"settings of certain core WP folders or files such that they end up making " +"their site less secure because they chose the wrong permission values." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:112 +msgid "" +"This feature will scan the critical WP core folders and files and will " +"highlight any permission settings which are insecure." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:118 +msgid "WP Directory and File Permissions Scan Results" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:131 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:150 +msgid "File/Folder" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:132 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:151 +msgid "Current Permissions" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:133 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:152 +msgid "Recommended Permissions" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:134 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:153 +msgid "Recommended Action" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:191 +msgid "Your PHP file editing settings were saved successfully." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:195 +msgid "" +"Operation failed! Unable to modify or make a backup of wp-config.php file!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:201 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:69 +msgid "File Editing" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:204 +msgid "" +"The Wordpress Dashboard by default allows administrators to edit PHP files, " +"such as plugin and theme files." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:205 +msgid "" +"This is often the first tool an attacker will use if able to login, since it " +"allows code execution." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:206 +msgid "" +"This feature will disable the ability for people to edit PHP files via the " +"dashboard." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:212 +msgid "Disable PHP File Editing" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:224 +msgid "Disable Ability To Edit PHP Files" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:227 +msgid "" +"Check this if you want to remove the ability for people to edit PHP files " +"via the WP dashboard" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:271 +msgid "" +"You have successfully saved the Prevent Access to Default WP Files " +"configuration." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:280 +msgid "WordPress Files" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:283 +#, php-format +msgid "" +"This feature allows you to prevent access to files such as %s, %s and %s " +"which are delivered with all WP installations." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:284 +msgid "" +"By preventing access to these files you are hiding some key pieces of " +"information (such as WordPress version info) from potential hackers." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:289 +msgid "Prevent Access to Default WP Files" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:300 +msgid "Prevent Access to WP Default Install Files" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:303 +msgid "" +"Check this if you want to prevent access to readme.html, license.txt and wp-" +"config-sample.php." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:307 +msgid "Save Setting" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:331 +msgid "System Logs" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:334 +msgid "" +"Sometimes your hosting platform will produce error or warning logs in a file " +"called \"error_log\"." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:335 +msgid "" +"Depending on the nature and cause of the error or warning, your hosting " +"server can create multiple instances of this file in numerous directory " +"locations of your WordPress installation." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:336 +msgid "" +"By occassionally viewing the contents of these logs files you can keep " +"informed of any underlying problems on your system which you might need to " +"address." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:342 +msgid "View System Logs" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:347 +msgid "Enter System Log File Name" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:349 +msgid "Enter your system log file name. (Defaults to error_log)" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:352 +msgid "View Latest System Logs" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:354 +msgid "Loading..." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:371 +msgid "No system logs were found!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:424 +msgid "Set Recommended Permissions" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:430 +msgid "No Action Required" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:470 +#, php-format +msgid "Showing latest entries of error_log file: %s" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:27 +msgid "Basic Firewall Rules" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:28 +msgid "Additional Firewall Rules" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:29 +msgid "5G Blacklist Firewall Rules" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:30 +msgid "Internet Bots" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:31 +msgid "Prevent Hotlinks" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:32 +msgid "404 Detection" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:115 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:663 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:104 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:317 +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:96 +msgid "Settings were successfully saved" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:124 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:503 +msgid "Firewall Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:131 +#, php-format +msgid "" +"This should not have any impact on your site's general functionality but if " +"you wish you can take a %s of your .htaccess file before proceeding." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:132 +msgid "" +"The features in this tab allow you to activate some basic firewall security " +"protection rules for your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:133 +msgid "" +"The firewall functionality is achieved via the insertion of special code " +"into your currently active .htaccess file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:143 +msgid "Attention:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:144 +msgid "Currently the " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:144 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:191 +msgid "Enable Pingback Protection" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:144 +msgid " is active." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:145 +msgid "" +"Please beware that if you are using the WordPress iOS App, then you will " +"need to deactivate this feature in order for the app to work properly." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:153 +msgid "Basic Firewall Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:161 +msgid "Enable Basic Firewall Protection" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:164 +msgid "Check this if you want to apply basic firewall protection to your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:168 +msgid "" +"This setting will implement the following basic firewall protection " +"mechanisms on your site:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:169 +msgid "1) Protect your htaccess file by denying access to it." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:170 +msgid "2) Disable the server signature." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:171 +msgid "3) Limit file upload size (10MB)." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:172 +msgid "4) Protect your wp-config.php file by denying access to it." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:173 +msgid "" +"The above firewall features will be applied via your .htaccess file and " +"should not affect your site's overall functionality." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:174 +msgid "" +"You are still advised to take a backup of your active .htaccess file just in " +"case." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:183 +msgid "WordPress Pingback Vulnerability Protection" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:194 +msgid "" +"Check this if you are not using the WP XML-RPC functionality and you want to " +"enable protection against WordPress pingback vulnerabilities." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:198 +msgid "" +"This setting will add a directive in your .htaccess to disable access to the " +"WordPress xmlrpc.php file which is responsible for the XML-RPC functionality " +"such as pingbacks in WordPress." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:199 +msgid "" +"Hackers can exploit various pingback vulnerabilities in the WordPress XML-" +"RPC API in a number of ways such as:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:200 +msgid "1) Denial of Service (DoS) attacks" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:201 +msgid "2) Hacking internal routers." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:202 +msgid "3) Scanning ports in internal networks to get info from various hosts." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:203 +msgid "" +"Apart from the security protection benefit, this feature may also help " +"reduce load on your server, particularly if your site currently has a lot of " +"unwanted traffic hitting the XML-RPC API on your installation." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:204 +msgid "" +"NOTE: You should only enable this feature if you are not currently using the " +"XML-RPC functionality on your WordPress installation." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:211 +msgid "Save Basic Firewall Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:283 +msgid "" +"You have successfully saved the Additional Firewall Protection configuration" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:297 +msgid "Additional Firewall Protection" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:301 +#, php-format +msgid "" +"Due to the nature of the code being inserted to the .htaccess file, this " +"feature may break some functionality for certain plugins and you are " +"therefore advised to take a %s of .htaccess before applying this " +"configuration." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:303 +msgid "" +"This feature allows you to activate more advanced firewall settings to your " +"site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:304 +msgid "" +"The advanced firewall rules are applied via the insertion of special code to " +"your currently active .htaccess file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:313 +msgid "Listing of Directory Contents" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:322 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:91 +msgid "Disable Index Views" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:325 +msgid "Check this if you want to disable directory and file listing." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:330 +msgid "" +"By default, an Apache server will allow the listing of the contents of a " +"directory if it doesn't contain an index.php file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:332 +msgid "This feature will prevent the listing of contents for all directories." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:334 +msgid "" +"NOTE: In order for this feature to work \"AllowOverride\" of the Indexes " +"directive must be enabled in your httpd.conf file. Ask your hosting provider " +"to check this if you don't have access to httpd.conf" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:343 +msgid "Trace and Track" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:352 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:92 +msgid "Disable Trace and Track" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:355 +msgid "Check this if you want to disable trace and track." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:360 +msgid "" +"HTTP Trace attack (XST) can be used to return header requests and grab " +"cookies and other information." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:362 +msgid "" +"This hacking technique is usually used together with cross site scripting " +"attacks (XSS)." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:364 +msgid "" +"Disabling trace and track on your site will help prevent HTTP Trace attacks." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:373 +msgid "Proxy Comment Posting" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:383 +msgid "Forbid Proxy Comment Posting" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:386 +msgid "Check this if you want to forbid proxy comment posting." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:391 +msgid "" +"This setting will deny any requests that use a proxy server when posting " +"comments." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:392 +msgid "" +"By forbidding proxy comments you are in effect eliminating some SPAM and " +"other proxy requests." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:401 +msgid "Bad Query Strings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:411 +msgid "Deny Bad Query Strings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:414 +msgid "This will help protect you against malicious queries via XSS." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:419 +msgid "" +"This feature will write rules in your .htaccess file to prevent malicious " +"string attacks on your site using XSS." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:420 +msgid "" +"NOTE: Some of these strings might be used for plugins or themes and hence " +"this might break some functionality." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:421 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:451 +msgid "" +"You are therefore strongly advised to take a backup of your active .htaccess " +"file before applying this feature." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:430 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:95 +msgid "Advanced Character String Filter" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:440 +msgid "Enable Advanced Character String Filter" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:443 +msgid "This will block bad character matches from XSS." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:448 +msgid "" +"This is an advanced character string filter to prevent malicious string " +"attacks on your site coming from Cross Site Scripting (XSS)." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:449 +msgid "" +"This setting matches for common malicious string patterns and exploits and " +"will produce a 403 error for the hacker attempting the query." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:450 +msgid "NOTE: Some strings for this setting might break some functionality." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:459 +msgid "Save Additional Firewall Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:494 +msgid "You have successfully saved the 5G Firewall Protection configuration" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:507 +#, php-format +msgid "" +"This feature allows you to activate the 5G firewall security protection " +"rules designed and produced by %s." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:508 +msgid "" +"The 5G Blacklist is a simple, flexible blacklist that helps reduce the " +"number of malicious URL requests that hit your website." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:509 +msgid "" +"The added advantage of applying the 5G firewall to your site is that it has " +"been tested and confirmed by the people at PerishablePress.com to be an " +"optimal and least disruptive set of .htaccess security rules for general WP " +"sites running on an Apache server or similar." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:510 +#, php-format +msgid "" +"Therefore the 5G firewall rules should not have any impact on your site's " +"general functionality but if you wish you can take a %s of your .htaccess " +"file before proceeding." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:516 +msgid "5G Blacklist/Firewall Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:528 +msgid "Enable 5G Firewall Protection" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:531 +msgid "" +"Check this if you want to apply the 5G Blacklist firewall protection from " +"perishablepress.com to your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:535 +msgid "" +"This setting will implement the 5G security firewall protection mechanisms " +"on your site which include the following things:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:536 +msgid "1) Block forbidden characters commonly used in exploitative attacks." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:537 +msgid "2) Block malicious encoded URL characters such as the \".css(\" string." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:538 +msgid "" +"3) Guard against the common patterns and specific exploits in the root " +"portion of targeted URLs." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:539 +msgid "" +"4) Stop attackers from manipulating query strings by disallowing illicit " +"characters." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:540 +msgid "....and much more." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:546 +msgid "Save 5G Firewall Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:577 +msgid "The Internet bot settings were successfully saved" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:581 +msgid "Internet Bot Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:588 +#, php-format +msgid "%s?" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:590 +msgid "" +"A bot is a piece of software which runs on the Internet and performs " +"automatic tasks. For example when Google indexes your pages it uses " +"automatic bots to achieve this task." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:591 +msgid "" +"A lot of bots are legitimate and non-malicous but not all bots are good and " +"often you will find some which try to impersonate legitimate bots such as " +"\"Googlebot\" but in reality they have nohing to do with Google at all." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:592 +msgid "" +"Although most of the bots out there are relatively harmless sometimes " +"website owners want to have more control over which bots they allow into " +"their site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:593 +msgid "" +"This feature allows you to block bots which are impersonating as a Googlebot " +"but actually aren't. (In other words they are fake Google bots)" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:594 +msgid "" +"Googlebots have a unique indentity which cannot easily be forged and this " +"feature will indentify any fake Google bots and block them from reading your " +"site's pages." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:600 +msgid "" +"Attention: Sometimes non-malicious Internet organizations " +"might have bots which impersonate as a \"Googlebot\"." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:601 +msgid "" +"Just be aware that if you activate this feature the plugin will block all " +"bots which use the \"Googlebot\" string in their User Agent information but " +"are NOT officially from Google (irrespective whether they are malicious or " +"not)." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:602 +msgid "" +"All other bots from other organizations such as \"Yahoo\", \"Bing\" etc will " +"not be affected by this feature." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:608 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:618 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:97 +msgid "Block Fake Googlebots" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:621 +msgid "Check this if you want to block all fake Googlebots." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:625 +msgid "" +"This feature will check if the User Agent information of a bot contains the " +"string \"Googlebot\"." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:626 +msgid "" +"It will then perform a few tests to verify if the bot is legitimately from " +"Google and if so it will allow the bot to proceed." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:627 +msgid "" +"If the bot fails the checks then the plugin will mark it as being a fake " +"Googlebot and it will block it" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:634 +msgid "Save Internet Bot Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:671 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:693 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:32 +msgid "Prevent Image Hotlinking" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:674 +msgid "" +"A Hotlink is where someone displays an image on their site which is actually " +"located on your site by using a direct link to the source of the image on " +"your server." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:675 +msgid "" +"Due to the fact that the image being displayed on the other person's site is " +"coming from your server, this can cause leaking of bandwidth and resources " +"for you because your server has to present this image for the people viewing " +"it on someone elses's site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:676 +msgid "" +"This feature will prevent people from directly hotlinking images from your " +"site's pages by writing some directives in your .htaccess file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:681 +msgid "Prevent Hotlinking" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:696 +msgid "Check this if you want to prevent hotlinking to images on your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:716 +msgid "Nonce check failed for delete all 404 event logs operation!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:727 +msgid "404 Detection Feature - Delete all 404 event logs operation failed!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:731 +msgid "All 404 event logs were deleted from the DB successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:757 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:110 +msgid "" +"You entered a non numeric value for the lockout time length field. It has " +"been set to the default value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:763 +msgid "" +"You entered an incorrect format for the \"Redirect URL\" field. It has been " +"set to the default value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:795 +msgid "404 Detection Configuration" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:798 +msgid "" +"A 404 or Not Found error occurs when somebody tries to access a non-existent " +"page on your website." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:799 +msgid "" +"Typically, most 404 errors happen quite innocently when people have mis-" +"typed a URL or used an old link to page which doesn't exist anymore." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:800 +msgid "" +"However, in some cases you may find many repeated 404 errors which occur in " +"a relatively short space of time and from the same IP address which are all " +"attempting to access a variety of non-existent page URLs." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:801 +msgid "" +"Such behaviour can mean that a hacker might be trying to find a particular " +"page or URL for sinister reasons." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:802 +msgid "" +"This feature allows you to monitor all 404 events which occur on your site, " +"and it also gives you the option of blocking IP addresses for a configured " +"length of time." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:803 +msgid "" +"If you want to temporarily block an IP address, simply click the \"Temp Block" +"\" link for the applicable IP entry in the \"404 Event Logs\" table below." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:808 +msgid "404 Detection Options" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:820 +msgid "Enable IP Lockout For 404 Events" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:823 +msgid "Check this if you want to enable the lockout of selected IP addresses." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:828 +msgid "" +"When you enable this checkbox, all 404 events on your site will be logged in " +"the table below. You can monitor these events and select some IP addresses " +"to be blocked in the table. All IP addresses you select to be blocked from " +"the \"404 Event Logs\" table section will be unable to access your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:836 +msgid "Enable 404 Event Logging" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:839 +msgid "Check this if you want to enable the logging of 404 events" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:844 +msgid "Time Length of 404 Lockout (min)" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:846 +msgid "" +"Set the length of time for which a blocked IP address will be prevented from " +"visiting your site" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:851 +msgid "" +"You can lock any IP address which is recorded in the \"404 Event Logs\" " +"table section below." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:853 +msgid "" +"To temporarily lock an IP address, hover over the ID column and click the " +"\"Temp Block\" link for the applicable IP entry." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:860 +msgid "404 Lockout Redirect URL" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:862 +msgid "A blocked visitor will be automatically redirected to this URL." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:871 +msgid "404 Event Logs" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:893 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:902 +msgid "Delete All 404 Event Logs" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:899 +msgid "Click this button if you wish to purge all 404 event logs from the DB." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-404.php:105 +#: all-in-one-wp-security/admin/wp-security-list-acct-activity.php:79 +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:86 +#: all-in-one-wp-security/admin/wp-security-list-locked-ip.php:82 +#: all-in-one-wp-security/admin/wp-security-list-locked-ip.php:93 +#: all-in-one-wp-security/admin/wp-security-list-login-fails.php:78 +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:82 +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:93 +msgid "Please select some records using the checkboxes" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-acct-activity.php:107 +#: all-in-one-wp-security/admin/wp-security-list-login-fails.php:107 +msgid "The selected entries were deleted successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-acct-activity.php:120 +#: all-in-one-wp-security/admin/wp-security-list-login-fails.php:119 +msgid "The selected entry was deleted successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:139 +msgid "" +"The selected IP addresses were saved in the blacklist configuration settings." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:153 +msgid "" +"The .htaccess file was successfully modified to include the selected IP " +"addresses." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:159 +msgid "" +"NOTE: The .htaccess file was not modified because you have disabled the " +"\"Enable IP or User Agent Blacklisting\" check box." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:160 +#, php-format +msgid "" +"To block these IP addresses you will need to enable the above flag in the %s " +"menu" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-locked-ip.php:117 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:527 +msgid "The selected IP entries were unlocked successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-locked-ip.php:126 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:536 +msgid "The selected IP entry was unlocked successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:127 +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:153 +msgid "Your account is now active" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:128 +msgid "Your account with username:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:128 +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:154 +msgid " is now active" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:137 +msgid "The selected accounts were approved successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:141 +msgid "The following accounts failed to update successfully: " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:149 +msgid "The selected account was approved successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:154 +msgid "Your account with username: " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:180 +msgid "The selected accounts were deleted successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:188 +msgid "The selected account was deleted successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:22 +msgid "Visitor Lockout" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:88 +msgid "Site lockout feature settings saved!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:93 +msgid "General Visitor Lockout" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:99 +msgid "" +"This feature allows you to put your site into \"maintenance mode\" by " +"locking down the front-end to all visitors except logged in users with super " +"admin privileges." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:100 +msgid "" +"Locking your site down to general visitors can be useful if you are " +"investigating some issues on your site or perhaps you might be doing some " +"maintenance and wish to keep out all traffic for security reasons." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:105 +msgid "Enable Front-end Lockout" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:108 +msgid "" +"Check this if you want all visitors except those who are logged in as " +"administrator to be locked out of the front-end of your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:112 +msgid "Enter a Message:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:124 +msgid "" +"Enter a message you wish to display to visitors when your site is in " +"maintenance mode." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:131 +msgid "Save Site Lockout Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:23 +msgid "Copy Protection" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:24 +msgid "Frames" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:88 +msgid "Copy Protection feature settings saved!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:93 +msgid "Disable The Ability To Copy Text" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:99 +msgid "" +"This feature allows you to disable the ability to select and copy text from " +"your front end." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:104 +msgid "Enable Copy Protection" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:107 +msgid "" +"Check this if you want to disable the \"Right Click\", \"Text Selection\" " +"and \"Copy\" option on the front end of your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:114 +msgid "Save Copy Protection Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:138 +msgid "Frame Display Prevention feature settings saved!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:143 +msgid "Prevent Your Site From Being Displayed In a Frame" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:149 +msgid "" +"This feature allows you to prevent other sites from displaying any of your " +"content via a frame or iframe." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:150 +msgid "" +"When enabled, this feature will set the \"X-Frame-Options\" paramater to " +"\"sameorigin\" in the HTTP header." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:155 +msgid "Enable iFrame Protection" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:158 +msgid "" +"Check this if you want to stop other sites from displaying your content in a " +"frame or iframe." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:26 +msgid "General Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:29 +msgid "WP Meta Info" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:30 +msgid "Import/Export" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:97 +msgid "All the security features have been disabled successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:101 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:128 +msgid "" +"Could not write to the .htaccess file. Please restore your .htaccess file " +"manually using the restore functionality in the \".htaccess File\"." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:106 +msgid "" +"Could not write to the wp-config.php. Please restore your wp-config.php file " +"manually using the restore functionality in the \"wp-config.php File\"." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:124 +msgid "All firewall rules have been disabled successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:138 +msgid "WP Security Plugin" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:140 +msgid "" +"Thank you for using our WordPress security plugin. There are a lot of " +"security features in this plugin." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:141 +msgid "" +"Go through each menu items and enable the security options to add more " +"security to your site. Start by activating the basic features first." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:142 +msgid "" +"It is a good practice to take a backup of your .htaccess file, database and " +"wp-config.php file before activating the security features. This plugin has " +"options that you can use to backup those resources easily." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:145 +msgid "Backup your database" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:146 +msgid "Backup .htaccess file" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:147 +msgid "Backup wp-config.php file" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:153 +msgid "Disable Security Features" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:159 +msgid "" +"If you think that some plugin functionality on your site is broken due to a " +"security feature you enabled in this plugin, then use the following option " +"to turn off all the security features of this plugin." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:163 +msgid "Disable All Security Features" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:169 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:179 +msgid "Disable All Firewall Rules" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:175 +msgid "" +"This feature will disable all firewall rules which are currently active in " +"this plugin and it will also delete these rules from your .htacess file. Use " +"it if you think one of the firewall rules is causing an issue on your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:208 +msgid "" +"Your .htaccess file was successfully backed up! Using an FTP program go to " +"the \"/wp-content/aiowps_backups\" directory to save a copy of the file to " +"your computer." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:214 +msgid "" +"htaccess file rename failed during backup. Please check your root directory " +"for the backup file using FTP." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:220 +msgid "htaccess backup failed." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:235 +msgid "Please choose a .htaccess to restore from." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:251 +msgid "" +"htaccess file restore failed. Please attempt to restore the .htaccess " +"manually using FTP." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:255 +msgid "Your .htaccess file has successfully been restored!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:261 +msgid "" +"htaccess Restore operation failed! Please check the contents of the file you " +"are trying to restore from." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:267 +msgid ".htaccess File Operations" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:270 +msgid "" +"Your \".htaccess\" file is a key component of your website's security and it " +"can be modified to implement various levels of protection mechanisms." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:271 +msgid "" +"This feature allows you to backup and save your currently active .htaccess " +"file should you need to re-use the the backed up file in the future." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:272 +msgid "" +"You can also restore your site's .htaccess settings using a backed up ." +"htaccess file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:286 +msgid "Save the current .htaccess file" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:290 +msgid "" +"Click the button below to backup and save the currently active .htaccess " +"file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:291 +msgid "Backup .htaccess File" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:295 +msgid "Restore from a backed up .htaccess file" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:301 +msgid ".htaccess file to restore from" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:307 +msgid "" +"After selecting your file, click the button below to restore your site using " +"the backed up htaccess file (htaccess_backup.txt)." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:313 +msgid "Restore .htaccess File" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:317 +msgid "View Contents of the currently active .htaccess file" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:346 +msgid "Please choose a wp-config.php file to restore from." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:362 +msgid "" +"wp-config.php file restore failed. Please attempt to restore this file " +"manually using FTP." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:366 +msgid "Your wp-config.php file has successfully been restored!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:372 +msgid "" +"wp-config.php Restore operation failed! Please check the contents of the " +"file you are trying to restore from." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:378 +msgid "wp-config.php File Operations" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:381 +msgid "" +"Your \"wp-config.php\" file is one of the most important in your WordPress " +"installation. It is a primary configuration file and contains crucial things " +"such as details of your database and other critical components." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:382 +msgid "" +"This feature allows you to backup and save your currently active wp-config." +"php file should you need to re-use the the backed up file in the future." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:383 +msgid "" +"You can also restore your site's wp-config.php settings using a backed up wp-" +"config.php file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:397 +msgid "Save the current wp-config.php file" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:401 +msgid "" +"Click the button below to backup and download the contents of the currently " +"active wp-config.php file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:402 +msgid "Backup wp-config.php File" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:407 +msgid "Restore from a backed up wp-config file" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:413 +msgid "wp-config file to restore from" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:419 +msgid "" +"After selecting your file click the button below to restore your site using " +"the backed up wp-config file (wp-config.php.backup.txt)." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:425 +msgid "Restore wp-config File" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:429 +msgid "View Contents of the currently active wp-config.php file" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:464 +msgid "WP Generator Meta Tag" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:467 +msgid "" +"Wordpress generator automatically adds some meta information inside the " +"\"head\" tags of every page on your site's front end. Below is an example of " +"this:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:469 +msgid "" +"The above meta information shows which version of WordPress your site is " +"currently running and thus can help hackers or crawlers scan your site to " +"see if you have an older version of WordPress or one with a known exploit." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:470 +msgid "" +"This feature will allow you to remove the WP generator meta info from your " +"site's pages." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:476 +msgid "WP Generator Meta Info" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:488 +msgid "Remove WP Generator Meta Info" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:491 +msgid "" +"Check this if you want to remove the meta info produced by WP Generator from " +"all pages" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:517 +msgid "Please choose a file to import your settings from." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:549 +msgid "Import AIOWPS settings from " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:555 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:599 +msgid "" +"The deletion of the import file failed. Please delete this file manually via " +"the media menu for security purposes." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:557 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:601 +msgid "" +"The file you uploaded was also deleted for security purposes because it " +"contains security settings details." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:572 +msgid "Your AIOWPS settings were successfully imported via file input." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:573 +msgid "" +"The deletion of the import file failed. Please delete this file manually via " +"the media menu for security purposes because it contains security settings " +"details." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:575 +msgid "" +"Your AIOWPS settings were successfully imported. The file you uploaded was " +"also deleted for security purposes because it contains security settings " +"details." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:578 +msgid "Your AIOWPS settings were successfully imported via text entry." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:593 +msgid "" +"The contents of your settings file appear invalid. Please check the contents " +"of the file you are trying to import settings from." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:610 +msgid "Export or Import Your AIOWPS Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:613 +msgid "" +"This section allows you to export or import your All In One WP Security & " +"Firewall settings." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:614 +msgid "" +"This can be handy if you wanted to save time by applying the settings from " +"one site to another site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:615 +msgid "" +"NOTE: Before importing, it is your responsibility to know what settings you " +"are trying to import. Importing settings blindly can cause you to be locked " +"out of your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:616 +msgid "" +"For Example: If a settings item relies on the domain URL then it may not " +"work correctly when imported into a site with a different domain." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:622 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:631 +msgid "Export AIOWPS Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:628 +msgid "" +"To export your All In One WP Security & Firewall settings click the button " +"below." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:635 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:660 +msgid "Import AIOWPS Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:641 +msgid "" +"Use this section to import your All In One WP Security & Firewall settings " +"from a file. Alternatively, copy/paste the contents of your import file into " +"the textarea below." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:642 +msgid "Import File" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:648 +msgid "" +"After selecting your file, click the button below to apply the settings to " +"your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:654 +msgid "Copy/Paste Import Data" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:24 +msgid "Comment SPAM" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:25 +msgid "Comment SPAM IP Monitoring" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:26 +msgid "BuddyPress" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:113 +msgid "Comment SPAM Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:118 +msgid "Add Captcha To Comments Form" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:122 +msgid "" +"This feature will add a simple math captcha field in the WordPress comments " +"form." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:123 +msgid "" +"Adding a captcha field in the comment form is a simple way of greatly " +"reducing SPAM comments from bots without using .htaccess rules." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:132 +msgid "Enable Captcha On Comment Forms" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:135 +msgid "Check this if you want to insert a captcha field on the comment forms" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:142 +msgid "Block Spambot Comments" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:146 +msgid "" +"A large portion of WordPress blog comment SPAM is mainly produced by " +"automated bots and not necessarily by humans. " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:147 +msgid "" +"This feature will greatly minimize the useless and unecessary traffic and " +"load on your server resulting from SPAM comments by blocking all comment " +"requests which do not originate from your domain." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:148 +msgid "" +"In other words, if the comment was not submitted by a human who physically " +"submitted the comment on your site, the request will be blocked." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:164 +msgid "Block Spambots From Posting Comments" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:167 +msgid "" +"Check this if you want to apply a firewall rule which will block comments " +"originating from spambots." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:171 +msgid "" +"This feature will implement a firewall rule to block all comment attempts " +"which do not originate from your domain." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:172 +msgid "" +"A legitimate comment is one which is submitted by a human who physically " +"fills out the comment form and clicks the submit button. For such events, " +"the HTTP_REFERRER is always set to your own domain." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:173 +msgid "" +"A comment submitted by a spambot is done by directly calling the comments." +"php file, which usually means that the HTTP_REFERRER value is not your " +"domain and often times empty." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:174 +msgid "" +"This feature will check and block comment requests which are not referred by " +"your domain thus greatly reducing your overall blog SPAM and PHP requests " +"done by the server to process these comments." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:201 +msgid "Nonce check failed for list SPAM comment IPs!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:207 +msgid "" +"You entered a non numeric value for the minimum SPAM comments per IP field. " +"It has been set to the default value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:219 +#, php-format +msgid "" +"Displaying results for IP addresses which have posted a minimum of %s SPAM " +"comments" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:235 +msgid "" +"This tab displays a list of the IP addresses of the people or bots who have " +"left SPAM comments on your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:236 +msgid "" +"This information can be handy for identifying the most persistent IP " +"addresses or ranges used by spammers." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:237 +msgid "" +"By inspecting the IP address data coming from spammers you will be in a " +"better position to determine which addresses or address ranges you should " +"block by adding them to your blacklist." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:238 +msgid "" +"To add one or more of the IP addresses displayed in the table below to your " +"blacklist, simply click the \"Block\" link for the individual row or select " +"more than one address \n" +" using the checkboxes and then choose the \"block" +"\" option from the Bulk Actions dropdown list and click the \"Apply\" button." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:244 +msgid "List SPAMMER IP Addresses" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:250 +msgid "Minimum number of SPAM comments per IP" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:252 +msgid "" +"This field allows you to list only those IP addresses which have been used " +"to post X or more SPAM comments." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:256 +msgid "" +"Example 1: Setting this value to \"0\" or \"1\" will list ALL IP addresses " +"which were used to submit SPAM comments." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:257 +msgid "" +"Example 2: Setting this value to \"5\" will list only those IP addresses " +"which were used to submit 5 SPAM comments or more on your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:264 +msgid "Find IP Addresses" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:268 +msgid "SPAMMER IP Address Results" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:274 +#: all-in-one-wp-security/classes/wp-security-utility.php:150 +msgid "" +"The plugin has detected that you are using a Multi-Site WordPress " +"installation." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:275 +msgid "Only the \"superadmin\" can block IP addresses from the main site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:276 +msgid "" +"Take note of the IP addresses you want blocked and ask the superadmin to add " +"these to the blacklist using the \"Blacklist Manager\" on the main site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:321 +msgid "BuddyPress SPAM Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:326 +msgid "Add Captcha To BuddyPress Registration Form" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:330 +msgid "" +"This feature will add a simple math captcha field in the BuddyPress " +"registration form." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:331 +msgid "" +"Adding a captcha field in the registration form is a simple way of greatly " +"reducing SPAM signups from bots without using .htaccess rules." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:341 +msgid "Enable Captcha On BuddyPress Registration Form" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:344 +msgid "" +"Check this if you want to insert a captcha field on the BuddyPress " +"registration forms" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:353 +msgid "" +"BuddyPress is not active! In order to use this feature you will need to have " +"BuddyPress installed and activated." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:29 +msgid "WP Username" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:30 +msgid "Display Name" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:31 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:862 +msgid "Password" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:85 +msgid "Admin User Security" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:88 +msgid "" +"By default, WordPress sets the administrator username to \"admin\" at " +"installation time." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:89 +msgid "" +"A lot of hackers try to take advantage of this information by attempting " +"\"Brute Force Login Attacks\" where they repeatedly try to guess the " +"password by using \"admin\" for username." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:90 +msgid "" +"From a security perspective, changing the default \"admin\" user name is one " +"of the first and smartest things you should do on your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:91 +msgid "" +"This feature will allow you to change your default \"admin\" user name to a " +"more secure name of your choosing." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:98 +msgid "List of Administrator Accounts" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:107 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:36 +msgid "Change Admin Username" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:115 +msgid "" +"Your site currently has an account which uses the default \"admin\" " +"username. \n" +" It is highly recommended that you change this name to " +"something else. \n" +" Use the following field to change the admin username." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:123 +msgid "New Admin Username" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:125 +msgid "Choose a new username for admin." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:129 +msgid "Change Username" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:131 +msgid "" +"NOTE: If you are currently logged in as \"admin\" you will be automatically " +"logged out after changing your username and will be required to log back in." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:138 +msgid "No action required! " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:140 +msgid "" +"Your site does not have any account which uses the default \"admin\" " +"username. " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:141 +msgid "This is good security practice." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:153 +msgid "Display Name Security" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:156 +msgid "" +"When you submit a post or answer a comment, WordPress will usually display " +"your \"nickname\"." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:157 +msgid "" +"By default the nickname is set to the login (or user) name of your account." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:158 +msgid "" +"From a security perspective, leaving your nickname the same as your user " +"name is bad practice because it gives a hacker at least half of your " +"account's login credentials." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:159 +msgid "" +"Therefore to further tighten your site's security you are advised to change " +"your nickname and Display name to be " +"different from your Username." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:165 +msgid "Modify Accounts With Identical Login Name & Display Name" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:174 +msgid "" +"Your site currently has the following accounts which have an identical login " +"name and display name." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:175 +msgid "Click on the link to edit the settings of that particular user account" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:190 +msgid "No action required." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:191 +msgid "" +"Your site does not have a user account where the display name is identical " +"to the username." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:202 +msgid "Password Tool" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:205 +msgid "" +"Poor password selection is one of the most common weak points of many sites " +"and is usually the first thing a hacker will try to exploit when attempting " +"to break into your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:206 +msgid "" +"Many people fall into the trap of using a simple word or series of numbers " +"as their password. Such a predictable and simple password would take a " +"competent hacker merely minutes to guess your password by using a simple " +"script which cycles through the easy and most common combinations." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:207 +msgid "" +"The longer and more complex your password is the harder it is for hackers to " +"\"crack\" because more complex passwords require much greater computing " +"power and time." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:208 +msgid "" +"This section contains a useful password strength tool which you can use to " +"check whether your password is sufficiently strong enough." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:213 +msgid "Password Strength Tool" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:218 +msgid "Start typing a password." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:221 +msgid "It would take a desktop PC approximately" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:222 +msgid "1 sec" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:222 +msgid "to crack your password!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:227 +msgid "Password Strength" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:243 +msgid "Nonce check failed on admin username change operation!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:250 +msgid "Username " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:250 +msgid " already exists. Please enter another value. " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:266 +msgid "The database update operation of the user account failed!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:293 +msgid "You entered an invalid username. Please enter another value. " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:297 +msgid "Please enter a value for your username. " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:304 +msgid "Username Successfully Changed!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:324 +msgid "Account Login Name" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:26 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:298 +msgid "Failed Login Records" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:27 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:51 +msgid "Force Logout" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:28 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:432 +msgid "Account Activity Logs" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:96 +msgid "" +"You entered a non numeric value for the max login attempts field. It has " +"been set to the default value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:103 +msgid "" +"You entered a non numeric value for the login retry time period field. It " +"has been set to the default value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:159 +msgid "Login Lockdown Configuration" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:163 +msgid "One of the ways hackers try to compromise sites is via a " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:163 +msgid "Brute Force Login Attack" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:164 +msgid "" +"This is where attackers use repeated login attempts until they guess the " +"password." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:165 +msgid "" +"Apart from choosing strong passwords, monitoring and blocking IP addresses " +"which are involved in repeated login failures in a short period of time is a " +"very effective way to stop these types of attacks." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:166 +#, php-format +msgid "" +"You may also want to checkout our %s feature for another secure way to " +"protect against these types of attacks." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:171 +msgid "Login Lockdown Options" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:183 +msgid "Enable Login Lockdown Feature" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:186 +msgid "" +"Check this if you want to enable the login lockdown feature and apply the " +"settings below" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:190 +msgid "Allow Unlock Requests" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:193 +msgid "" +"Check this if you want to allow users to generate an automated unlock " +"request link which will unlock their account" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:197 +msgid "Max Login Attempts" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:199 +msgid "" +"Set the value for the maximum login retries before IP address is locked out" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:203 +msgid "Login Retry Time Period (min)" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:205 +msgid "" +"If the maximum number of failed login attempts for a particular IP address " +"occur within this time period the plugin will lock out that address" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:209 +msgid "Time Length of Lockout (min)" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:211 +msgid "" +"Set the length of time for which a particular IP address will be prevented " +"from logging in" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:215 +msgid "Display Generic Error Message" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:218 +msgid "" +"Check this if you want to show a generic error message when a login attempt " +"fails" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:222 +msgid "Instantly Lockout Invalid Usernames" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:225 +msgid "" +"Check this if you want to instantly lockout login attempts with usernames " +"which do not exist on your system" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:230 +msgid "Notify By Email" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:233 +msgid "" +"Check this if you want to receive an email when someone has been locked out " +"due to maximum failed login attempts" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:243 +msgid "Currently Locked Out IP Address Ranges" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:248 +#, php-format +msgid "" +"To see a list of all locked IP addresses and ranges go to the %s tab in the " +"dashboard menu." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:264 +msgid "Nonce check failed for delete all failed login records operation!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:273 +msgid "User Login Feature - Delete all failed login records operation failed!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:277 +msgid "All records from the Failed Logins table were deleted successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:292 +msgid "This tab displays the failed login attempts for your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:293 +msgid "" +"The information below can be handy if you need to do security investigations " +"because it will show you the IP range, username and ID (if applicable) and " +"the time/date of the failed login attempt." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:314 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:323 +msgid "Delete All Failed Login Records" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:320 +msgid "" +"Click this button if you wish to delete all failed login records in one go." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:348 +msgid "" +"You entered a non numeric value for the logout time period field. It has " +"been set to the default value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:376 +msgid "" +"Setting an expiry period for your WP administration session is a simple way " +"to protect against unauthorized access to your site from your computer." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:377 +msgid "" +"This feature allows you to specify a time period in minutes after which the " +"admin session will expire and the user will be forced to log back in." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:382 +msgid "Force User Logout Options" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:394 +msgid "Enable Force WP User Logout" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:397 +msgid "" +"Check this if you want to force a wp user to be logged out after a " +"configured amount of time" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:401 +msgid "Logout the WP User After XX Minutes" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:403 +msgid "" +"(Minutes) The user will be forced to log back in after this time period has " +"elapased." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:426 +msgid "" +"This tab displays the login activity for WordPress admin accounts registered " +"with your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:427 +msgid "" +"The information below can be handy if you need to do security investigations " +"because it will show you the last 50 recent login events by username, IP " +"address and time/date." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:464 +msgid "Nonce check failed for users logged in list!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:477 +msgid "Refresh Logged In User Data" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:481 +msgid "Refresh Data" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:487 +msgid "This tab displays all users who are currently logged into your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:488 +msgid "" +"If you suspect there is a user or users who are logged in which should not " +"be, you can block them by inspecting the IP addresses from the data below " +"and adding them to your blacklist." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:493 +msgid "Currently Logged In Users" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:558 +msgid "The selected records were deleted successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:567 +msgid "The selected record was deleted successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:23 +msgid "Manual Approval" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:24 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:57 +msgid "Registration Captcha" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:112 +msgid "User Registration Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:116 +msgid "Manually Approve New Registrations" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:120 +msgid "" +"If your site allows people to create their own accounts via the WordPress " +"registration form, then you can minimize SPAM or bogus registrations by " +"manually approving each registration." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:121 +msgid "" +"This feature will automatically set a newly registered account to \"pending" +"\" until the administrator activates it. Therefore undesirable registrants " +"will be unable to log in without your express approval." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:122 +msgid "" +"You can view all accounts which have been newly registered via the handy " +"table below and you can also perform bulk activation/deactivation/deletion " +"tasks on each account." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:138 +msgid "Enable manual approval of new registrations" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:141 +msgid "" +"Check this if you want to automatically disable all newly registered " +"accounts so that you can approve them manually." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:150 +msgid "Approve Registered Users" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:195 +msgid "" +"This feature allows you to add a captcha form on the WordPress registration " +"page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:196 +msgid "" +"Users who attempt to register will also need to enter the answer to a simple " +"mathematical question - if they enter the wrong answer, the plugin will not " +"allow them to register." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:197 +msgid "" +"Therefore, adding a captcha form on the registration page is another " +"effective yet simple SPAM registration prevention technique." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:202 +msgid "Registration Page Captcha Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:209 +msgid "" +"The core default behaviour for WordPress Multi Site regarding user " +"registration is that all users are registered via the main site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:210 +msgid "" +"Therefore, if you would like to add a captcha form to the registration page " +"for a Multi Site, please go to \"Registration Captcha\" settings on the main " +"site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:225 +msgid "Enable Captcha On Registration Page" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:228 +msgid "" +"Check this if you want to insert a captcha form on the WordPress user " +"registration page (if you allow user registration)." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:22 +msgid "WhoIS Lookup" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:74 +msgid "WHOIS Lookup Information" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:77 +msgid "" +"This feature allows you to look up more detailed information about an IP " +"address or domain name by querying the WHOIS API." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:83 +msgid "Perform a WHOIS Lookup for an IP or Domain Name" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:89 +msgid "Enter IP Address or Domain Name" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:91 +msgid "" +"Enter an IP address or domain name. Example: 111.11.12.13 OR some-domain-" +"name.com" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:95 +msgid "Perform IP or Domain Lookup" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:115 +msgid "WHOIS lookup successfully completed. Please see the results below:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:127 +msgid "" +"You have entered an incorrectly formatted IP address or domain name. Please " +"try again." +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:178 +msgid "No items found." +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:281 +msgid "Bulk Actions" +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:291 +msgid "Apply" +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:365 +msgid "Show all dates" +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:378 +#, php-format +msgid "%1$s %2$d" +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:394 +msgid "List View" +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:395 +msgid "Excerpt View" +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:421 +#, php-format +msgid "%s pending" +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:653 +msgid "Select All" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-backup.php:188 +msgid "All In One WP Security - Site Database Backup" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-backup.php:190 +msgid "Attached is your latest DB backup file for site URL" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-backup.php:190 +msgid " generated on" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:17 +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:254 +msgid "Please enter an answer in digits:" +msgstr "Vänligen svara med siffror:" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:96 +msgid "one" +msgstr "ett" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:97 +msgid "two" +msgstr "två" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:98 +msgid "three" +msgstr "tre" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:99 +msgid "four" +msgstr "fyra" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:100 +msgid "five" +msgstr "fem" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:101 +msgid "six" +msgstr "sex" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:102 +msgid "seven" +msgstr "sju" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:103 +msgid "eight" +msgstr "åtta" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:104 +msgid "nine" +msgstr "nio" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:105 +msgid "ten" +msgstr "tio" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:106 +msgid "eleven" +msgstr "elva" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:107 +msgid "twelve" +msgstr "tolv" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:108 +msgid "thirteen" +msgstr "tretton" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:109 +msgid "fourteen" +msgstr "fjorton" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:110 +msgid "fifteen" +msgstr "femton" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:111 +msgid "sixteen" +msgstr "sexton" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:112 +msgid "seventeen" +msgstr "sjutton" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:113 +msgid "eighteen" +msgstr "arton" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:114 +msgid "nineteen" +msgstr "nitton" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:115 +msgid "twenty" +msgstr "tjugo" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:65 +msgid "All In One WP Security - File change detected!" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:67 +msgid "A file change was detected on your system for site URL" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:67 +msgid ". Scan was generated on" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:68 +msgid "Login to your site to view the scan details." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:269 +msgid "" +"Starting DB scan.....please wait while the plugin scans your database......." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:273 +msgid "Scanning options table........." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:342 +#, php-format +msgid "%s and option_id: %s" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:345 +#, php-format +msgid "" +"Deletion of known pharma hack entry for option_name %s failed. Please delete " +"this entry manually!" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:347 +#, php-format +msgid "" +"The options table entry with known pharma hack for option_id %s with " +"option_name %s was successfully deleted" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:361 +#, php-format +msgid "Possible suspicious entry found (for option_id: %s) - %s " +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:370 +msgid "No suspicious entries found in options table" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:374 +msgid "Scanning posts table........." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:414 +#, php-format +msgid "" +"Possible suspicious entry found (for Post ID: %s) in the following column - " +"%s " +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:423 +msgid "No suspicious entries found in posts table" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:427 +msgid "Scanning links table........." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:466 +#: all-in-one-wp-security/classes/wp-security-file-scan.php:517 +#: all-in-one-wp-security/classes/wp-security-file-scan.php:545 +#: all-in-one-wp-security/classes/wp-security-file-scan.php:573 +#: all-in-one-wp-security/classes/wp-security-file-scan.php:622 +#, php-format +msgid "Possible suspicious entry - %s " +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:475 +msgid "No suspicious entries found in links table" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:479 +msgid "Scanning comments table........." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:526 +msgid "No suspicious entries found in comments table" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:530 +msgid "Scanning postmeta table........." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:554 +msgid "No suspicious entries found in postmeta table" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:558 +msgid "Scanning usermeta table........." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:582 +msgid "No suspicious entries found in usermeta table" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:586 +msgid "Scanning users table........." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:631 +msgid "No suspicious entries found in users table" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:638 +msgid "" +"The plugin has detected that there are some potentially suspicious entries " +"in your database." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:639 +msgid "" +"Please verify the results listed below to confirm whether the entries " +"detected are genuinely suspicious or if they are false positives." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:644 +#: all-in-one-wp-security/classes/wp-security-file-scan.php:659 +msgid "Disclaimer:" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:645 +msgid "" +"Even though this database scan has revealed some suspicious entries, this " +"does not necessarily mean that other parts of your DB or site are also not " +"compromised." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:646 +#: all-in-one-wp-security/classes/wp-security-file-scan.php:661 +msgid "" +"Please note that database scan performed by this feature is basic and looks " +"for common malicious entries. Since hackers are continually evolving their " +"methods this scan is not meant to be a guaranteed catch-all for malware." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:647 +#: all-in-one-wp-security/classes/wp-security-file-scan.php:662 +#, php-format +msgid "" +"It is your responsibility to do the due diligence and perform a robust %s on " +"your site if you wish to be more certain that your site is clean." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:654 +msgid "DB Scan was completed successfully. No suspicious entries found." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:660 +msgid "" +"Even though the database scan has not revealed any suspicious entries, this " +"does not necessarily mean that your site is actually completely clean or not " +"compromised." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:281 +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:358 +#: all-in-one-wp-security/classes/wp-security-user-login.php:69 +#: all-in-one-wp-security/classes/wp-security-user-login.php:72 +#: all-in-one-wp-security/classes/wp-security-user-registration.php:61 +msgid "ERROR: Your answer was incorrect - please try again." +msgstr "FEL: Ditt svar var fel. Försök igen." + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:293 +msgid "Enter something special:" +msgstr "Skriv någonting här om du inte är människa:" + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:320 +msgid "Please enter an answer in the CAPTCHA field." +msgstr "Var vänlig skriv ett svar i CAPTCHA-fältet." + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:330 +msgid "" +"Error: You entered an incorrect CAPTCHA answer. Please go back and try again." +msgstr "" +"Fel: Du angav fel svar i CAPTCHA-fältet. Gå tillbaka och prova en gång till." + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:382 +msgid "Your CAPTCHA answer was incorrect - please try again." +msgstr "Ditt CAPTCHA-svar var fel. Försök igen!" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:43 +msgid "" +"ERROR: Login failed because your IP address has been " +"blocked. Please contact the administrator." +msgstr "" +"FEL: Inloggning misslyckades eftersom din IP-adress är " +"spärrad. Vänligen kontakta administratören." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:82 +msgid "ERROR: The username field is empty." +msgstr "FEL: Användarnamnet är inte ifyllt." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:86 +msgid "ERROR: The password field is empty." +msgstr "FEL: Inget lösenord ifyllt." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:106 +#: all-in-one-wp-security/classes/wp-security-user-login.php:132 +msgid "ERROR: Invalid login credentials." +msgstr "FEL: Inloggningsuppgifterna är felaktiga." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:109 +msgid "ERROR: Invalid username." +msgstr "FEL: Ogiltigt användarnamn." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:135 +#, php-format +msgid "" +"ERROR: Incorrect password. Lost your password?" +msgstr "" +"FEL: Felaktigt lösenord. Glömt lösenord?" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:146 +msgid "" +"ACCOUNT PENDING: Your account is currently not active. An " +"administrator needs to activate your account before you can login." +msgstr "" +"KONTOT AVVAKTAR: Ditt konto är ännu inte aktivt. Innan du " +"kan logga in, behöver en administratör aktivera kontot." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:269 +msgid "Site Lockout Notification" +msgstr "Blockerad från sajten" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:270 +msgid "" +"A lockdown event has occurred due to too many failed login attempts or " +"invalid username:" +msgstr "" +"På grund av alltför många inloggningsförsök eller felaktiga användarnamn, är " +"du blockerad:" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:271 +msgid "Username: " +msgstr "Användarnamn: " + +#: all-in-one-wp-security/classes/wp-security-user-login.php:272 +msgid "IP Address: " +msgstr "IP-adress: " + +#: all-in-one-wp-security/classes/wp-security-user-login.php:273 +msgid "IP Range: " +msgstr "IP-adressblock: " + +#: all-in-one-wp-security/classes/wp-security-user-login.php:274 +msgid "" +"Log into your site's WordPress administration panel to see the duration of " +"the lockout or to unlock the user." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:338 +msgid "Unlock Request Notification" +msgstr "Begäran att häva blockering" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:339 +msgid "You have requested for the account with email address " +msgstr "Du har begärt för kontot med mejladress " + +#: all-in-one-wp-security/classes/wp-security-user-login.php:340 +msgid "Unlock link: " +msgstr "Länk för upplåsning: " + +#: all-in-one-wp-security/classes/wp-security-user-login.php:341 +msgid "" +"After clicking the above link you will be able to login to the WordPress " +"administration panel." +msgstr "" +"När du klickat på denna länk så kan du logga in i WordPress " +"administrationspanel." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:507 +#, php-format +msgid "" +"Your session has expired because it has been over %d minutes since your last " +"login." +msgstr "" +"Din session har avslutets eftersom det gått mer än %d minuter sedan senaste " +"inloggning." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:508 +#: all-in-one-wp-security/classes/wp-security-user-login.php:512 +msgid "Please log back in to continue." +msgstr "Var vänlig logga in igen för att fortsätta." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:511 +msgid "You were logged out because you just changed the \"admin\" username." +msgstr "Du loggades ut eftersom du just bytte användarnamnet \"admin\"." + +#: all-in-one-wp-security/classes/wp-security-user-login.php:537 +msgid "Request Unlock" +msgstr "Begär upplåsning" + +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:76 +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:95 +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:110 +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:125 +msgid " is not a valid ip address format." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:133 +msgid "You cannot ban your own IP address: " +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-utility.php:151 +msgid "" +"This feature can only be configured by the \"superadmin\" on the main site." +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:29 +msgid "Remove WP Generatore Meta Tag" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:38 +msgid "Change Display Name" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:45 +msgid "Custom Login Captcha" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:47 +msgid "Lost Password Captcha" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:49 +msgid "Login IP Whitelisting" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:55 +msgid "Registration Approval" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:71 +msgid "WordPress Files Access" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:75 +msgid "IP and User Agent Blacklisting" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:79 +msgid "Enable Basic Firewall" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:80 +msgid "Enable Pingback Vulnerability Protection" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:81 +msgid "Enable IP blocking for 404 detection" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:85 +msgid "Enable Rename Login Page" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:87 +msgid "Enable Login Honeypot" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:93 +msgid "Forbid Proxy Comments" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:94 +msgid "Deny Bad Queries" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:96 +msgid "5G Blacklist" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:99 +msgid "Block Spambots" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:101 +msgid "Comment Captcha" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:103 +msgid "BuddyPress Registration Captcha" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item.php:28 +msgid "Basic" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item.php:31 +msgid "Intermediate" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item.php:34 +msgid "Advanced" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:96 +msgid "https://wordpress.org/" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:97 +#: all-in-one-wp-security/other-includes/wp-security-unlock-request.php:14 +msgid "Powered by WordPress" +msgstr "Drivs med WordPress" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:214 +#, php-format +msgid "← Back to %s" +msgstr "← Åter till %s" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:272 +msgid "ERROR: Enter a username or e-mail address." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:276 +msgid "" +"ERROR: There is no user registered with that email address." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:293 +msgid "ERROR: Invalid username or e-mail." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:330 +msgid "Password reset is not allowed for this user" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:355 +msgid "Someone requested that the password be reset for the following account:" +msgstr "Någon har begärt återställning av lösenordet för följande konto: " + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:357 +#, php-format +msgid "Username: %s" +msgstr "Användarnamn: %s" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:358 +msgid "If this was a mistake, just ignore this email and nothing will happen." +msgstr "" +"Om detta var ett misstag, är det bara att ignorera detta mejl, så händer " +"ingenting." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:359 +msgid "To reset your password, visit the following address:" +msgstr "För att återställa ditt lösenord, gå till följande adress: " + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:369 +#, php-format +msgid "[%s] Password Reset" +msgstr "[%s] Återställning av lösenor" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:390 +msgid "The e-mail could not be sent." +msgstr "E-mejl kunde inte skickas." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:390 +msgid "Possible reason: your host may have disabled the mail() function." +msgstr "" +"En tänkbar förklaring skulle kunna vara om funktionen mail() är avstängd på " +"servern." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:495 +msgid "Sorry, that key does not appear to be valid." +msgstr "Tyvärr verkar nyckeln inte vara giltig." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:497 +msgid "Sorry, that key has expired. Please try again." +msgstr "Tyvärr är nyckeln inte längre giltig. Försök en gång till." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:517 +msgid "Lost Password" +msgstr "Förlorat lösenord" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:517 +msgid "" +"Please enter your username or email address. You will receive a link to " +"create a new password via email." +msgstr "" +"Var vänlig skriv in ditt användarnamn eller mejladress. Du får en länk får " +"återställning av lösenord via e-post." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:525 +msgid "Username or E-mail:" +msgstr "Användarnamn eller e-post:" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:540 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:589 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:631 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:713 +msgid "Log in" +msgstr "Logga in" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:543 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:634 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:892 +msgid "Register" +msgstr "Registrering" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:575 +msgid "The passwords do not match." +msgstr "Du har angivit olika löseord." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:589 +msgid "Password Reset" +msgstr "Återställning av lösenord" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:589 +msgid "Your password has been reset." +msgstr "Ditt lösenord har återställts." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:597 +msgid "Reset Password" +msgstr "Återställ lösenord" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:597 +msgid "Enter your new password below." +msgstr "Skriv in ditt nya lösenord här nedanför." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:604 +msgid "New password" +msgstr "Nytt lösenord" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:608 +msgid "Confirm new password" +msgstr "Bekräfta nytt lösenord" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:612 +msgid "Strength indicator" +msgstr "Indikering av lösenordets styrka" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:613 +msgid "" +"Hint: The password should be at least seven characters long. To make it " +"stronger, use upper and lower case letters, numbers, and symbols like ! \" ? " +"$ % ^ & )." +msgstr "" +"Tips: Lösenordet bör vara minst sju tecken långt. För ett starkare lösenord, " +"använda både stora och små bokstäver samt siffror och specialtecken, såsom ! " +"\" ? $ % ^ & )." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:686 +msgid "Registration Form" +msgstr "Registreringsformulär" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:686 +msgid "Register For This Site" +msgstr "Registrera dig på denna webbplats" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:691 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:858 +msgid "Username" +msgstr "Användarnamn" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:695 +msgid "E-mail" +msgstr "E-post" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:706 +msgid "A password will be e-mailed to you." +msgstr "Ett lösenord mejlas till dig." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:714 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:897 +msgid "Lost your password?" +msgstr "Har du glömt lösenordet?" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:760 +#, php-format +msgid "" +"ERROR: Cookies are blocked due to unexpected output. For " +"help, please see this documentation or try the support forums." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:761 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:765 +msgid "http://codex.wordpress.org/Cookies" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:761 +msgid "https://wordpress.org/support/" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:764 +#, php-format +msgid "" +"ERROR: Cookies are blocked or not supported by your " +"browser. You must enable cookies to use WordPress." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:783 +msgid "You have logged in successfully." +msgstr "Du är nu inloggad." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:817 +msgid "" +"Session expired. Please log in again. You will not move away from this page." +msgstr "Sessionen är slut. Logga in igen. Du kommer inte att lämna denna sida." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:821 +msgid "You are now logged out." +msgstr "Nu är du utloggad." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:823 +msgid "User registration is currently not allowed." +msgstr "För tillfället är registrering blockerad." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:825 +msgid "Check your e-mail for the confirmation link." +msgstr "Leta efter en bekräftelselänk i din e-post." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:827 +msgid "Check your e-mail for your new password." +msgstr "Leta efter e-post med ditt nya lösenord." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:829 +msgid "Registration complete. Please check your e-mail." +msgstr "Registrering klar. Kolla din e-post." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:831 +msgid "" +"You have successfully updated WordPress! Please log back in " +"to experience the awesomeness." +msgstr "" +"Du har uppdaterat WordPress! Logga in igen för att njuta." + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:848 +msgid "Log In" +msgstr "Logga in" + +#: all-in-one-wp-security/other-includes/wp-security-unlock-request.php:13 +msgid "http://wordpress.org/" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-unlock-request.php:48 +msgid "Please enter a valid email address" +msgstr "Skriv in en giltig e-postadress" + +#: all-in-one-wp-security/other-includes/wp-security-unlock-request.php:59 +msgid "User account not found!" +msgstr "Användarkonto kunde inte hittas!" + +#: all-in-one-wp-security/other-includes/wp-security-unlock-request.php:70 +msgid "Error: No locked entry was found in the DB with your IP address range!" +msgstr "Fel: Databasen innehåller inget låst adressblock med din IP-adress!" + +#: all-in-one-wp-security/other-includes/wp-security-unlock-request.php:98 +msgid "Email Address" +msgstr "Mejladress" diff --git a/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-zh_CN.mo b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-zh_CN.mo new file mode 100644 index 0000000..305378e Binary files /dev/null and b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-zh_CN.mo differ diff --git a/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-zh_CN.po b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-zh_CN.po new file mode 100644 index 0000000..92dcf89 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall-zh_CN.po @@ -0,0 +1,3424 @@ +msgid "" +msgstr "" +"Project-Id-Version: All In One WP Security vv2.5\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2013-09-22 10:38+0800\n" +"Last-Translator: 言午一郎 \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=1;\n" +"X-Generator: Poedit 1.5.7\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;" +"_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" +"X-Poedit-Basepath: ../\n" +"X-Textdomain-Support: yes\n" +"Language: zh\n" +"X-Poedit-SearchPath-0: .\n" + +# @ default +#: admin/general/wp-security-list-table.php:178 +msgid "No items found." +msgstr "" + +# @ default +#: admin/general/wp-security-list-table.php:281 +msgid "Bulk Actions" +msgstr "" + +# @ default +#: admin/general/wp-security-list-table.php:291 +msgid "Apply" +msgstr "" + +# @ default +#: admin/general/wp-security-list-table.php:365 +msgid "Show all dates" +msgstr "" + +# @ default +#. translators: 1: month name, 2: 4-digit year +#: admin/general/wp-security-list-table.php:378 +#, php-format +msgid "%1$s %2$d" +msgstr "" + +# @ default +#: admin/general/wp-security-list-table.php:394 +msgid "List View" +msgstr "" + +# @ default +#: admin/general/wp-security-list-table.php:395 +msgid "Excerpt View" +msgstr "" + +# @ default +#: admin/general/wp-security-list-table.php:421 +#, php-format +msgid "%s pending" +msgstr "" + +# @ default +#: admin/general/wp-security-list-table.php:477 +#: admin/general/wp-security-list-table.php:881 +#, php-format +msgid "1 item" +msgid_plural "%s items" +msgstr[0] "" +msgstr[1] "" + +# @ default +#: admin/general/wp-security-list-table.php:495 +msgid "Go to the first page" +msgstr "" + +# @ default +#: admin/general/wp-security-list-table.php:502 +msgid "Go to the previous page" +msgstr "" + +# @ default +#: admin/general/wp-security-list-table.php:511 +msgid "Current page" +msgstr "" + +# @ default +#: admin/general/wp-security-list-table.php:517 +#, php-format +msgctxt "paging" +msgid "%1$s of %2$s" +msgstr "" + +# @ default +#: admin/general/wp-security-list-table.php:521 +msgid "Go to the next page" +msgstr "" + +# @ default +#: admin/general/wp-security-list-table.php:528 +msgid "Go to the last page" +msgstr "" + +# @ default +#: admin/general/wp-security-list-table.php:653 +msgid "Select All" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-init.php:155 +msgid "WP Security" +msgstr "WP 安全" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-init.php:156 +msgid "Dashboard" +msgstr "控制板" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-init.php:157 +msgid "Settings" +msgstr "设置" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-init.php:158 +msgid "User Accounts" +msgstr "用户账户" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-init.php:159 +msgid "User Login" +msgstr "用户登录" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-init.php:160 +msgid "Database Security" +msgstr "数据库安全" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-init.php:164 +msgid "Filesystem Security" +msgstr "文件系统安全" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-init.php:166 +msgid "WHOIS Lookup" +msgstr "WHOIS 查询" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-init.php:170 +msgid "Blacklist Manager" +msgstr "黑名单管理器" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-init.php:175 +msgid "Firewall" +msgstr "防火墙" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-init.php:177 +msgid "SPAM Prevention" +msgstr "垃圾防护" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-init.php:181 +msgid "Scanner" +msgstr "扫描器" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-init.php:183 +msgid "Maintenance" +msgstr "网站维护" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-menu.php:43 +msgid "Settings successfully updated." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-admin-menu.php:50 +msgid "The selected record(s) deleted successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:74 +msgid "Nonce check failed for save blacklist settings!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:126 +#: admin/wp-security-list-comment-spammer-ip.php:147 +msgid "" +"The plugin was unable to write to the .htaccess file. Please edit file " +"manually." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:133 +msgid "Ban IPs or User Agents" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:136 +msgid "" +"The All In One WP Security Blacklist feature gives you the option of banning " +"certain host IP addresses or ranges and also user agents." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:137 +msgid "" +"This feature will deny total site access for users which have IP addresses " +"or user agents matching those which you have configured in the settings " +"below." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:138 +msgid "" +"The plugin achieves this by making appropriate modifications to your ." +"htaccess file." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:139 +msgid "" +"By blocking people via the .htaccess file your are using the most secure " +"first line of defence which denies all access to blacklisted visitors as " +"soon as they hit your hosting server." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:145 +msgid "IP Hosts and User Agent Blacklist Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:156 +msgid "Enable IP or User Agent Blacklisting" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:159 +msgid "" +"Check this if you want to enable the banning (or blacklisting) of selected " +"IP addresses and/or user agents specified in the settings below" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:163 +msgid "Enter IP Addresses:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:167 +msgid "Enter one or more IP addresses or IP ranges." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:168 +#: admin/wp-security-blacklist-menu.php:188 +#: admin/wp-security-filescan-menu.php:265 +#: admin/wp-security-filescan-menu.php:282 +#: admin/wp-security-firewall-menu.php:141 +#: admin/wp-security-firewall-menu.php:171 +#: admin/wp-security-firewall-menu.php:302 +#: admin/wp-security-firewall-menu.php:332 +#: admin/wp-security-firewall-menu.php:363 +#: admin/wp-security-firewall-menu.php:391 +#: admin/wp-security-firewall-menu.php:420 +#: admin/wp-security-firewall-menu.php:508 +#: admin/wp-security-firewall-menu.php:653 +#: admin/wp-security-firewall-menu.php:687 +#: admin/wp-security-firewall-menu.php:710 +#: admin/wp-security-firewall-menu.php:731 admin/wp-security-spam-menu.php:133 +#: admin/wp-security-spam-menu.php:218 +msgid "More Info" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:171 +msgid "Each IP address must be on a new line." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:172 +msgid "" +"To specify an IP range use a wildcard \"*\" character. Acceptable ways to " +"use wildcards is shown in the examples below:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:173 +msgid "Example 1: 195.47.89.*" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:174 +msgid "Example 2: 195.47.*.*" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:175 +msgid "Example 3: 195.*.*.*" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:182 +msgid "Enter User Agents:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:187 +msgid "Enter one or more user agent strings." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:191 +msgid "Each user agent string must be on a new line." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:192 +msgid "Example 1 - A single user agent string to block:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:194 +msgid "Example 2 - A list of more than 1 user agent strings to block" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-blacklist-menu.php:202 +#: admin/wp-security-database-menu.php:342 +#: admin/wp-security-filescan-menu.php:303 +#: admin/wp-security-filesystem-menu.php:225 +#: admin/wp-security-settings-menu.php:491 admin/wp-security-spam-menu.php:148 +#: admin/wp-security-user-login-menu.php:223 +#: admin/wp-security-user-login-menu.php:391 +msgid "Save Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:111 +msgid "Total Achievable Points: " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:113 +msgid "Current Score of Your Site: " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:168 +msgid "" +"Below is the current status of the critical features that you should " +"activate on your site to achieve a minimum level of recommended security" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:172 +msgid "Admin Username" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:187 +msgid "Login Lockdown" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:202 +msgid "File Permission" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:217 +msgid "Basic Firewall" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:239 +msgid "" +"Maintenance mode is currently enabled. Remember to turn it off when you are " +"done" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:242 +msgid "Maintenance mode is currently off." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:246 +msgid "Maintenance Mode" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:295 +msgid "Number of users currently logged in site-wide is:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:296 +#: admin/wp-security-dashboard-menu.php:318 +#, php-format +msgid "Go to the %s menu to see more details" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:301 +msgid "There are no other site-wide users currently logged in." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:317 +msgid "Number of users currently logged into your site is:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:323 +msgid "There are no other users currently logged in." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:388 +#: admin/wp-security-filesystem-menu.php:124 +#: admin/wp-security-filesystem-menu.php:143 +msgid "Name" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:389 +msgid "Version" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-dashboard-menu.php:390 +msgid "Plugin URL" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:78 +msgid "Nonce check failed for DB prefix change operation!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:86 +msgid "" +"The plugin has detected that it cannot write to the wp-config.php file. This " +"feature can only be used if the plugin can successfully write to the wp-" +"config.php file." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:99 +msgid "Please enter a value for the DB prefix." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:108 +msgid "" +"ERROR: The table prefix can only contain numbers, letters, " +"and underscores." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:116 +msgid "Change Database Prefix" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:119 +msgid "" +"Your WordPress DB is the most important asset of your website because it " +"contains a lot of your site's precious information." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:120 +msgid "" +"The DB is also a target for hackers via methods such as SQL injections and " +"malicious and automated code which targets certain tables." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:121 +msgid "" +"One way to add a layer of protection for your DB is to change the default " +"WordPress table prefix from \"wp_\" to something else which will be " +"difficult for hackers to guess." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:122 +msgid "" +"This feature allows you to easily change the prefix to a value of your " +"choice or to a random value set by this plugin." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:128 +msgid "DB Prefix Options" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:139 +#, php-format +msgid "It is recommended that you perform a %s before using this feature" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:148 +msgid "Current DB Table Prefix" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:154 +msgid "" +"Your site is currently using the default WordPress DB prefix value of \"wp_" +"\". \n" +" To increase your site's security you should " +"consider changing the DB prefix value to another value." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:161 +msgid "Generate New DB Table Prefix" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:164 +msgid "" +"Check this if you want the plugin to generate a random 6 character string " +"for the table prefix" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:165 +msgid "OR" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:167 +msgid "" +"Choose your own DB prefix by specifying a string which contains letters and/" +"or numbers and/or underscores. Example: xyz_" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:171 +msgid "Change DB Prefix" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:192 +#: admin/wp-security-filesystem-menu.php:80 +msgid "Nonce check failed for manual DB backup operation!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:210 +msgid "" +"DB Backup was successfully completed! Right click on the following file name " +"and save the backup to your computer." +msgstr "" + +# @ default +#: admin/wp-security-database-menu.php:212 +msgid "Your DB Backup File: " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:220 +msgid "DB Backup failed. Please check the permissions of the backup directory." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:237 +#: admin/wp-security-filescan-menu.php:120 +msgid "" +"You entered a non numeric value for the \"backup time interval\" field. It " +"has been set to the default value." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:244 +msgid "" +"You entered a non numeric value for the \"number of backup files to keep\" " +"field. It has been set to the default value." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:251 +#: admin/wp-security-filescan-menu.php:150 +#: admin/wp-security-user-login-menu.php:112 +msgid "" +"You have entered an incorrect email address format. It has been set to your " +"WordPress admin email as default." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:257 +#: admin/wp-security-filescan-menu.php:156 admin/wp-security-spam-menu.php:178 +#: admin/wp-security-user-login-menu.php:118 +#: admin/wp-security-user-login-menu.php:344 +msgid "Attention!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:284 +msgid "Manual Backup" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:290 +msgid "To create a new DB backup just click on the button below." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:293 +msgid "Create DB Backup Now" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:297 +msgid "Automated Scheduled Backups" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:309 +msgid "Enable Automated Scheduled Backups" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:312 +msgid "" +"Check this if you want the system to automatically generate backups " +"periodically based on the settings below" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:316 +msgid "Backup Time Interval" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:319 +#: admin/wp-security-filescan-menu.php:253 +msgid "Hours" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:320 +#: admin/wp-security-filescan-menu.php:254 +msgid "Days" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:321 +#: admin/wp-security-filescan-menu.php:255 +msgid "Weeks" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:323 +msgid "Set the value for how often you would like an automated backup to occur" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:327 +msgid "Number of Backup Files To Keep" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:329 +msgid "" +"Thie field allows you to choose the number of backup files you would like to " +"keep in the backup directory" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:333 +msgid "Send Backup File Via Email" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:336 +msgid "" +"Check this if you want the system to email you the backup file after a DB " +"backup has been performed" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:338 +#: admin/wp-security-filescan-menu.php:299 +#: admin/wp-security-user-login-menu.php:219 +msgid "Enter an email address" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:368 +msgid "Starting DB prefix change operations....." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:370 +#, php-format +msgid "" +"Your WordPress system has a total of %s tables and your new DB prefix will " +"be: %s" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:376 classes/wp-security-utility.php:206 +msgid "" +"Failed to make a backup of the wp-config.php file. This operation will not " +"go ahead." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:380 +msgid "A backup copy of your wp-config.php file was created successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:403 +#, php-format +msgid "%s table name update failed" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:415 +#, php-format +msgid "Please change the prefix manually for the above tables to: %s" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:418 +#, php-format +msgid "%s tables had their prefix updated successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:433 +msgid "wp-config.php file was updated successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:436 +#, php-format +msgid "" +"The \"wp-config.php\" file was not able to be modified. Please modify this " +"file manually using your favourite editor and search \n" +" for variable \"$table_prefix\" and assign the following " +"value to that variable: %s" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:457 +msgid "There was an error when updating the options table." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:461 +msgid "" +"The options table records which had references to the old DB prefix were " +"updated successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:486 +#, php-format +msgid "" +"Error updating user_meta table where new meta_key = %s, old meta_key = %s " +"and user_id = %s." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:492 +msgid "" +"The usermeta table records which had references to the old DB prefix were " +"updated successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-database-menu.php:494 +msgid "DB prefix change tasks have been completed." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:87 +msgid "Nonce check failed for manual file change detection scan operation!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:94 +msgid "" +"The plugin has detected that this is your first file change detection scan. " +"The file details from this scan will be used to detect file changes for " +"future scans!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:188 +msgid "" +"NEW SCAN COMPLETED: The plugin has detected that you have made changes to " +"the \"File Types To Ignore\" or \"Files To Ignore\" fields.\n" +" In order to ensure that future scan results are " +"accurate, the old scan data has been refreshed." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:198 +msgid "" +"All In One WP Security & Firewall has detected that there was a change in " +"your host's files." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:200 +msgid "View Scan Details & Clear This Message" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:209 +msgid "" +"If given an opportunity hackers can insert their code or files into your " +"system which they can then use to carry out malicious acts on your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:210 +msgid "" +"Being informed of any changes in your files can be a good way to quickly " +"prevent a hacker from causing damage to your website." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:211 +msgid "" +"In general, WordPress core and plugin files and file types such as \".php\" " +"or \".js\" should not change often and when they do, it is important that " +"you are made aware when a change occurs and which file was affected." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:212 +msgid "" +"The \"File Change Detection Feature\" will notify you of any file change " +"which occurs on your system, including the addition and deletion of files by " +"performing a regular automated or manual scan of your system's files." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:213 +msgid "" +"This feature also allows you to exclude certain files or folders from the " +"scan in cases where you know that they change often as part of their normal " +"operation. (For example log files and certain caching plugin files may " +"change often and hence you may choose to exclude such files from the file " +"change detection scan)" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:218 +msgid "Manual File Change Detection Scan" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:224 +msgid "" +"To perform a manual file change detection scan click on the button below." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:227 +msgid "Perform Scan Now" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:231 +msgid "Automated File Change Detection" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:243 +msgid "Enable Automated File Change Detection Scan" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:246 +msgid "" +"Check this if you want the system to automatically/periodically scan your " +"files to check for file changes based on the settings below" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:250 +msgid "Scan Time Interval" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:257 +msgid "Set the value for how often you would like a scan to occur" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:261 +msgid "File Types To Ignore" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:264 +msgid "" +"Enter each file type or extension on a new line which you wish to exclude " +"from the file change detection scan." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:268 +msgid "" +"You can exclude file types from the scan which would not normally pose any " +"security threat if they were changed. These can include things such as image " +"files." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:269 +msgid "" +"Example: If you want the scanner to ignore files of type jpg, png, and bmp, " +"then you would enter the following:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:270 +msgid "jpg" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:271 +msgid "png" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:272 +msgid "bmp" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:278 +msgid "Files/Directories To Ignore" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:281 +msgid "" +"Enter each file or directory on a new line which you wish to exclude from " +"the file change detection scan." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:285 +msgid "" +"You can exclude specific files/directories from the scan which would not " +"normally pose any security threat if they were changed. These can include " +"things such as log files." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:286 +msgid "" +"Example: If you want the scanner to ignore certain files in different " +"directories or whole directories, then you would enter the following:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:287 +msgid "cache/config/master.php" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:288 +msgid "somedirectory" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:294 +msgid "Send Email When Change Detected" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:297 +msgid "" +"Check this if you want the system to email you if a file change was detected" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:328 +msgid "Latest File Change Scan Results" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:337 +msgid "The following files were added to your host." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:340 +#: admin/wp-security-filescan-menu.php:361 +#: admin/wp-security-filescan-menu.php:385 +msgid "File" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:341 +#: admin/wp-security-filescan-menu.php:362 +#: admin/wp-security-filescan-menu.php:386 +msgid "File Size" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:342 +#: admin/wp-security-filescan-menu.php:363 +#: admin/wp-security-filescan-menu.php:387 +msgid "File Modified" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:358 +msgid "The following files were removed from your host." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filescan-menu.php:382 +msgid "The following files were changed on your host." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:90 +#, php-format +msgid "The permissions for %s were succesfully changed to %s" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:94 +#, php-format +msgid "Unable to change permissions for %s!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:100 +msgid "File Permissions Scan" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:103 +msgid "" +"Your WordPress file and folder permission settings govern the accessability " +"and read/write privileges of the files and folders which make up your WP " +"installation." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:104 +msgid "" +"Your WP installation already comes with reasonably secure file permission " +"settings for the filesystem." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:105 +msgid "" +"However, sometimes people or other plugins modify the various permission " +"settings of certain core WP folders or files such that they end up making " +"their site less secure because they chose the wrong permission values." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:106 +msgid "" +"This feature will scan the critical WP core folders and files and will " +"highlight any permission settings which are insecure." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:112 +msgid "WP Directory and File Permissions Scan Results" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:125 +#: admin/wp-security-filesystem-menu.php:144 +msgid "File/Folder" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:126 +#: admin/wp-security-filesystem-menu.php:145 +msgid "Current Permissions" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:127 +#: admin/wp-security-filesystem-menu.php:146 +msgid "Recommended Permissions" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:128 +#: admin/wp-security-filesystem-menu.php:147 +msgid "Recommended Action" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:185 +msgid "Your PHP file editing settings were saved successfully." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:189 +msgid "" +"Operation failed! Unable to modify or make a backup of wp-config.php file!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:195 +msgid "File Editing" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:198 +msgid "" +"The Wordpress Dashboard by default allows administrators to edit PHP files, " +"such as plugin and theme files." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:199 +msgid "" +"This is often the first tool an attacker will use if able to login, since it " +"allows code execution." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:200 +msgid "" +"This feature will disable the ability for people to edit PHP files via the " +"dashboard." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:206 +msgid "Disable PHP File Editing" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:218 +msgid "Disable Ability To Edit PHP Files" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:221 +msgid "" +"Check this if you want to remove the ability for people to edit PHP files " +"via the WP dashboard" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:265 +msgid "" +"You have successfully saved the Prevent Access to Default WP Files " +"configuration." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:269 +#: admin/wp-security-firewall-menu.php:109 +#: admin/wp-security-firewall-menu.php:263 +#: admin/wp-security-firewall-menu.php:474 +#: admin/wp-security-firewall-menu.php:613 admin/wp-security-spam-menu.php:96 +msgid "" +"Could not write to the .htaccess file. Please check the file permissions." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:274 +msgid "WordPress Files" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:277 +#, php-format +msgid "" +"This feature allows you to prevent access to files such as %s, %s and %s " +"which are delivered with all WP installations." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:278 +msgid "" +"By preventing access to these files you are hiding some key pieces of " +"information (such as WordPress version info) from potential hackers." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:283 +msgid "Prevent Access to Default WP Files" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:294 +msgid "Prevent Access to WP Default Install Files" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:297 +msgid "" +"Check this if you want to prevent access to readme.html, license.txt and wp-" +"config-sample.php." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:301 +msgid "Save Setting" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:312 +msgid "System Logs" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:315 +msgid "" +"Sometimes your hosting platform will produce error or warning logs in a file " +"called \"error_log\"." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:316 +msgid "" +"Depending on the nature and cause of the error or warning, your hosting " +"server can create multiple instances of this file in numerous directory " +"locations of your WordPress installation." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:317 +msgid "" +"By occassionally viewing the contents of these logs files you can keep " +"informed of any underlying problems on your system which you might need to " +"address." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:323 +msgid "View System Logs" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:328 +msgid "View Latest System Logs" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:330 +msgid "Loading..." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:347 +msgid "No system logs were found!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:400 +msgid "Set Recommended Permissions" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:406 +msgid "No Action Required" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-filesystem-menu.php:446 +#, php-format +msgid "Showing latest entries of error_log file: %s" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:105 admin/wp-security-spam-menu.php:92 +msgid "Settings were successfully saved" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:114 +#: admin/wp-security-firewall-menu.php:479 +msgid "Firewall Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:121 +#: admin/wp-security-firewall-menu.php:629 +#, php-format +msgid "" +"This should not have any impact on your site's general functionality but if " +"you wish you can take a %s of your .htaccess file before proceeding." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:122 +msgid "" +"The features in this tab allow you to activate some basic firewall security " +"protection rules for your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:123 +msgid "" +"The firewall functionality is achieved via the insertion of special code " +"into your currently active .htaccess file." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:129 +msgid "Basic Firewall Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:137 +msgid "Enable Basic Firewall Protection" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:140 +msgid "Check this if you want to apply basic firewall protection to your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:144 +msgid "" +"This setting will implement the following basic firewall protection " +"mechanisms on your site:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:145 +msgid "1) Protect your htaccess file by denying access to it." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:146 +msgid "2) Disable the server signature." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:147 +msgid "3) Limit file upload size (10MB)." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:148 +msgid "4) Protect your wp-config.php file by denying access to it." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:149 +msgid "" +"The above firewall features will be applied via your .htaccess file and " +"should not affect your site's overall functionality." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:150 +msgid "" +"You are still advised to take a backup of your active .htaccess file just in " +"case." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:159 +msgid "WordPress Pingback Vulnerability Protection" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:167 +msgid "Enable Pingback Protection" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:170 +msgid "" +"Check this if you are not using the WP XML-RPC functionality and you want to " +"enable protection against WordPress pingback vulnerabilities." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:174 +msgid "" +"This setting will add a directive in your .htaccess to disable access to the " +"WordPress xmlrpc.php file which is responsible for the XML-RPC functionality " +"such as pingbacks in WordPress." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:175 +msgid "" +"Hackers can exploit various pingback vulnerabilities in the WordPress XML-" +"RPC API in a number of ways such as:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:176 +msgid "1) Denial of Service (DoS) attacks" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:177 +msgid "2) Hacking internal routers." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:178 +msgid "3) Scanning ports in internal networks to get info from various hosts." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:179 +msgid "" +"Apart from the security protection benefit, this feature may also help " +"reduce load on your server, particularly if your site currently has a lot of " +"unwanted traffic hitting the XML-RPC API on your installation." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:180 +msgid "" +"NOTE: You should only enable this feature if you are not currently using the " +"XML-RPC functionality on your WordPress installation." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:187 +msgid "Save Basic Firewall Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:259 +msgid "" +"You have successfully saved the Additional Firewall Protection configuration" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:273 +msgid "Additional Firewall Protection" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:277 +#, php-format +msgid "" +"Due to the nature of the code being inserted to the .htaccess file, this " +"feature may break some functionality for certain plugins and you are " +"therefore advised to take a %s of .htaccess before applying this " +"configuration." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:279 +msgid "" +"This feature allows you to activate more advanced firewall settings to your " +"site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:280 +msgid "" +"The advanced firewall rules are applied via the insertion of special code to " +"your currently active .htaccess file." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:289 +msgid "Listing of Directory Contents" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:298 +msgid "Disable Index Views" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:301 +msgid "Check this if you want to disable directory and file listing." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:306 +msgid "" +"By default, an Apache server will allow the listing of the contents of a " +"directory if it doesn't contain an index.php file." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:308 +msgid "This feature will prevent the listing of contents for all directories." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:310 +msgid "" +"NOTE: In order for this feature to work \"AllowOverride\" must be enabled in " +"your httpd.conf file. Ask your hosting provider to check this if you don't " +"have access to httpd.conf" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:319 +msgid "Trace and Track" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:328 +msgid "Disable Trace and Track" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:331 +msgid "Check this if you want to disable trace and track." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:336 +msgid "" +"HTTP Trace attack (XST) can be used to return header requests and grab " +"cookies and other information." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:338 +msgid "" +"This hacking technique is usually used together with cross site scripting " +"attacks (XSS)." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:340 +msgid "" +"Disabling trace and track on your site will help prevent HTTP Trace attacks." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:349 +msgid "Proxy Comment Posting" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:359 +msgid "Forbid Proxy Comment Posting" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:362 +msgid "Check this if you want to forbid proxy comment posting." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:367 +msgid "" +"This setting will deny any requests that use a proxy server when posting " +"comments." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:368 +msgid "" +"By forbidding proxy comments you are in effect eliminating some SPAM and " +"other proxy requests." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:377 +msgid "Bad Query Strings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:387 +msgid "Deny Bad Query Strings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:390 +msgid "This will help protect you against malicious queries via XSS." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:395 +msgid "" +"This feature will write rules in your .htaccess file to prevent malicious " +"string attacks on your site using XSS." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:396 +msgid "" +"NOTE: Some of these strings might be used for plugins or themes and hence " +"this might break some functionality." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:397 +#: admin/wp-security-firewall-menu.php:427 +msgid "" +"You are therefore strongly advised to take a backup of your active .htaccess " +"file before applying this feature." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:406 +msgid "Advanced Character String Filter" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:416 +msgid "Enable Advanced Character String Filter" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:419 +msgid "This will block bad character matches from XSS." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:424 +msgid "" +"This is an advanced character string filter to prevent malicious string " +"attacks on your site coming from Cross Site Scripting (XSS)." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:425 +msgid "" +"This setting matches for common malicious string patterns and exploits and " +"will produce a 403 error for the hacker attempting the query." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:426 +msgid "NOTE: Some strings for this setting might break some functionality." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:435 +msgid "Save Additional Firewall Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:470 +msgid "You have successfully saved the 5G Firewall Protection configuration" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:483 +#, php-format +msgid "" +"This feature allows you to activate the 5G firewall security protection " +"rules designed and produced by %s." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:484 +msgid "" +"The 5G Blacklist is a simple, flexible blacklist that helps reduce the " +"number of malicious URL requests that hit your website." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:485 +msgid "" +"The added advantage of applying the 5G firewall to your site is that it has " +"been tested and confirmed by the people at PerishablePress.com to be an " +"optimal and least disruptive set of .htaccess security rules for general WP " +"sites running on an Apache server or similar." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:486 +#, php-format +msgid "" +"Therefore the 5G firewall rules should not have any impact on your site's " +"general functionality but if you wish you can take a %s of your .htaccess " +"file before proceeding." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:492 +msgid "5G Blacklist/Firewall Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:504 +msgid "Enable 5G Firewall Protection" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:507 +msgid "" +"Check this if you want to apply the 5G Blacklist firewall protection from " +"perishablepress.com to your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:511 +msgid "" +"This setting will implement the 5G security firewall protection mechanisms " +"on your site which include the following things:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:512 +msgid "1) Block forbidden characters commonly used in exploitative attacks." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:513 +msgid "2) Block malicious encoded URL characters such as the \".css(\" string." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:514 +msgid "" +"3) Guard against the common patterns and specific exploits in the root " +"portion of targeted URLs." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:515 +msgid "" +"4) Stop attackers from manipulating query strings by disallowing illicit " +"characters." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:516 +msgid "....and much more." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:522 +msgid "Save 5G Firewall Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:550 +msgid "" +"Settings have not been saved - your secret word must consist only of " +"alphanumeric characters, ie, letters and/or numbers only!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:568 +msgid "" +"You have successfully enabled the cookie based brute force prevention feature" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:569 +msgid "" +"From now on you will need to log into your WP Admin using the following URL:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:571 +msgid "" +"It is important that you save this URL value somewhere in case you forget " +"it, OR," +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:572 +#, php-format +msgid "simply remember to add a \"?%s=1\" to your current site URL address." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:578 +msgid "" +"You have successfully saved cookie based brute force prevention feature " +"settings." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:623 +msgid "Brute Force Prevention Firewall Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:630 +msgid "" +"A Brute Force Attack is when a hacker tries many combinations of usernames " +"and passwords until they succeed in guessing the right combination." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:631 +msgid "" +"Due to the fact that at any one time there may be many concurrent login " +"attempts occurring on your site via malicious automated robots, this also " +"has a negative impact on your server's memory and performance." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:632 +msgid "" +"The features in this tab will stop the majority of Brute Force Login Attacks " +"at the .htaccess level thus providing even better protection for your WP " +"login page and also reducing the load on your server because the system does " +"not have to run PHP code to process the login attempts." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:638 +msgid "Cookie Based Brute Force Login Prevention" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:649 +msgid "Enable Brute Force Attack Prevention" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:652 +msgid "" +"Check this if you want to protect your login page from Brute Force Attack." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:657 +msgid "" +"This feature will deny access to your WordPress login page for all people " +"except those who have a special cookie in their browser." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:659 +msgid "To use this feature do the following:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:661 +msgid "1) Enable the checkbox." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:663 +msgid "" +"2) Enter a secret word consisting of alphanumeric characters which will be " +"difficult to guess. This secret word will be useful whenever you need to " +"know the special URL which you will use to access the login page (see point " +"below)." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:665 +msgid "" +"3) You will then be provided with a special login URL. You will need to use " +"this URL to login to your WordPress site instead of the usual login URL. " +"NOTE: The system will deposit a special cookie in your browser which will " +"allow you access to the WordPress administration login page." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:667 +msgid "" +"Any person trying to access your login page who does not have the special " +"cookie in their browser will be automatically blocked." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:674 +msgid "Secret Word" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:676 +msgid "" +"Choose a secret word consisting of alphanumeric characters which you can use " +"to access your special URL. Your are highly encouraged to choose a word " +"which will be difficult to guess." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:680 +msgid "Re-direct URL" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:684 +msgid "" +"Specify a URL to redirect a hacker to when they try to access your WordPress " +"login page." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:691 +msgid "" +"The URL specified here can be any site's URL and does not have to be your " +"own. For example you can be as creative as you like and send hackers to the " +"CIA or NSA home page." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:693 +msgid "" +"This field will default to: http://127.0.0.1 if you do not enter a value." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:695 +msgid "Useful Tip:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:697 +msgid "" +"It's a good idea to not redirect attempted brute force login attempts to " +"your site because it increases the load on your server." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:699 +msgid "" +"Redirecting a hacker or malicious bot back to \"http://127.0.0.1\" is ideal " +"because it deflects them back to their own local host and puts the load on " +"their server instead of yours." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:706 +msgid "My Site Has Posts Or Pages Which Are Password Protected" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:709 +msgid "" +"Check this if you are using the native WordPress password protection feature " +"for some or all of your blog posts or pages." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:714 +msgid "" +"In the cases where you are protecting some of your posts or pages using the " +"in-built WordPress password protection feature, a few extra lines of " +"directives and exceptions need to be added to your .htacces file so that " +"people trying to access pages are not automatically blocked." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:716 +msgid "" +"By enabling this checkbox the plugin will add the necessary rules and " +"exceptions to your .htacces file so that people trying to access these pages " +"are not automatically blocked." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:718 +msgid "Helpful Tip:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:720 +msgid "" +"If you do not use the WordPress password protection feature for your posts " +"or pages then it is highly recommended that you leave this checkbox disabled." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:727 +msgid "My Site Has a Theme or Plugins Which Use AJAX" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:730 +msgid "Check this if your site uses AJAX functionality." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:735 +msgid "" +"In the cases where your WordPress installation has a theme or plugins which " +"use AJAX, a few extra lines of directives and exceptions need to be added to " +"your .htacces file to prevent AJAX requests from being automatically blocked " +"by the brute force prevention feature." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:737 +msgid "" +"By enabling this checkbox the plugin will add the necessary rules and " +"exceptions to your .htacces file so that AJAX operations will work as " +"expected." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:752 +msgid "The cookie test was successful. You can now enable this feature." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:755 +msgid "Save Feature Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:762 +msgid "" +"The cookie test failed on this server. So this feature cannot be used on " +"this site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:768 +msgid "" +"Before using this feature you are required to perform a cookie test first. " +"This is to make sure that your browser cookie is working correctly and that " +"you won't lock yourself out." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-firewall-menu.php:770 +msgid "Perform Cookie Test" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-list-acct-activity.php:79 +#: admin/wp-security-list-comment-spammer-ip.php:86 +#: admin/wp-security-list-locked-ip.php:80 +#: admin/wp-security-list-locked-ip.php:91 +#: admin/wp-security-list-login-fails.php:78 +msgid "Please select some records using the checkboxes" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-list-acct-activity.php:107 +#: admin/wp-security-list-login-fails.php:107 +msgid "The selected entries were deleted successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-list-acct-activity.php:120 +#: admin/wp-security-list-login-fails.php:119 +msgid "The selected entry was deleted successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-list-comment-spammer-ip.php:139 +msgid "" +"The selected IP addresses were saved in the blacklist configuration settings." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-list-comment-spammer-ip.php:153 +msgid "" +"The .htaccess file was successfully modified to include the selected IP " +"addresses." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-list-comment-spammer-ip.php:159 +msgid "" +"NOTE: The .htaccess file was not modified because you have disabled the " +"\"Enable IP or User Agent Blacklisting\" check box." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-list-comment-spammer-ip.php:160 +#, php-format +msgid "" +"To block these IP addresses you will need to enable the above flag in the %s " +"menu" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-list-locked-ip.php:115 +#: admin/wp-security-user-login-menu.php:511 +msgid "The selected IP ranges were unlocked successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-list-locked-ip.php:124 +#: admin/wp-security-user-login-menu.php:520 +msgid "The selected IP range was unlocked successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-maintenance-menu.php:82 +msgid "Site lockout feature settings saved!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-maintenance-menu.php:87 +msgid "General Visitor Lockout" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-maintenance-menu.php:93 +msgid "" +"This feature allows you to put your site into \"maintenance mode\" by " +"locking down the front-end to all visitors except logged in users with super " +"admin privileges." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-maintenance-menu.php:94 +msgid "" +"Locking your site down to general visitors can be useful if you are " +"investigating some issues on your site or perhaps you might be doing some " +"maintenance and wish to keep out all traffic for security reasons." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-maintenance-menu.php:99 +msgid "Enable Front-end Lockout" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-maintenance-menu.php:102 +msgid "" +"Check this if you want all visitors except those who are logged in as " +"administrator to be locked out of the front-end of your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-maintenance-menu.php:106 +msgid "Enter a Message:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-maintenance-menu.php:118 +msgid "" +"Enter a message you wish to display to visitors when your site is in " +"maintenance mode." +msgstr "" + +# @ default +#: admin/wp-security-maintenance-menu.php:125 +msgid "Save Site Lockout Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:89 +msgid "All the security features have been disabled successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:93 +#: admin/wp-security-settings-menu.php:120 +msgid "" +"Could not write to the .htaccess file. Please restore your .htaccess file " +"manually using the restore functionality in the \".htaccess File\"." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:98 +msgid "" +"Could not write to the wp-config.php. Please restore your wp-config.php file " +"manually using the restore functionality in the \"wp-config.php File\"." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:116 +msgid "All firewall rules have been disabled successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:130 +msgid "WP Security Plugin" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:132 +msgid "" +"Thank you for using our WordPress security plugin. There are a lot of " +"security features in this plugin." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:133 +msgid "" +"Go through each menu items and enable the security options to add more " +"security to your site. Start by activating the basic features first." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:134 +msgid "" +"It is a good practice to take a backup of your .htaccess file, database and " +"wp-config.php file before activating the security features. This plugin has " +"options that you can use to backup those resources easily." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:137 +msgid "Backup your database" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:138 +msgid "Backup .htaccess file" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:139 +msgid "Backup wp-config.php file" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:145 +msgid "Disable Security Features" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:151 +msgid "" +"If you think that some plugin functionality on your site is broken due to a " +"security feature you enabled in this plugin, then use the following option " +"to turn off all the security features of this plugin." +msgstr "" + +# @ default +#: admin/wp-security-settings-menu.php:155 +msgid "Disable All Security Features" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +# @ default +#: admin/wp-security-settings-menu.php:161 +#: admin/wp-security-settings-menu.php:171 +msgid "Disable All Firewall Rules" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:167 +msgid "" +"This feature will disable all firewall rules which are currently active in " +"this plugin and it will also delete these rules from your .htacess file. Use " +"it if you think one of the firewall rules is causing an issue on your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:200 +msgid "" +"Your .htaccess file was successfully backed up! Using an FTP program go to " +"the \"backups\" directory of this plugin to save a copy of the file to your " +"computer." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:210 +msgid "" +"htaccess file rename failed during backup. Please check your root directory " +"for the backup file using FTP." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:216 +msgid "htaccess backup failed." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:231 +msgid "Please choose a .htaccess to restore from." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:247 +msgid "" +"htaccess file restore failed. Please attempt to restore the .htaccess " +"manually using FTP." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:251 +msgid "Your .htaccess file has successfully been restored!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:257 +msgid "" +"htaccess Restore operation failed! Please check the contents of the file you " +"are trying to restore from." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:263 +msgid ".htaccess File Operations" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:266 +msgid "" +"Your \".htaccess\" file is a key component of your website's security and it " +"can be modified to implement various levels of protection mechanisms." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:267 +msgid "" +"This feature allows you to backup and save your currently active .htaccess " +"file should you need to re-use the the backed up file in the future." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:268 +msgid "" +"You can also restore your site's .htaccess settings using a backed up ." +"htaccess file." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:282 +msgid "Save the current .htaccess file" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:286 +msgid "" +"Click the button below to backup and save the currently active .htaccess " +"file." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:287 +msgid "Backup .htaccess File" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:291 +msgid "Restore from a backed up .htaccess file" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:297 +msgid ".htaccess file to restore from" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:303 +msgid "" +"After selecting your file, click the button below to restore your site using " +"the backed up htaccess file (htaccess_backup.txt)." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:309 +msgid "Restore .htaccess File" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:313 +msgid "View Contents of the currently active .htaccess file" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:342 +msgid "Please choose a wp-config.php file to restore from." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:358 +msgid "" +"wp-config.php file restore failed. Please attempt to restore this file " +"manually using FTP." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:362 +msgid "Your wp-config.php file has successfully been restored!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:368 +msgid "" +"wp-config.php Restore operation failed! Please check the contents of the " +"file you are trying to restore from." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:374 +msgid "wp-config.php File Operations" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:377 +msgid "" +"Your \"wp-config.php\" file is one of the most important in your WordPress " +"installation. It is a primary configuration file and contains crucial things " +"such as details of your database and other critical components." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:378 +msgid "" +"This feature allows you to backup and save your currently active wp-config." +"php file should you need to re-use the the backed up file in the future." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:379 +msgid "" +"You can also restore your site's wp-config.php settings using a backed up wp-" +"config.php file." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:393 +msgid "Save the current wp-config.php file" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:397 +msgid "" +"Click the button below to backup and download the contents of the currently " +"active wp-config.php file." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:398 +msgid "Backup wp-config.php File" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:403 +msgid "Restore from a backed up wp-config file" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:409 +msgid "wp-config file to restore from" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:415 +msgid "" +"After selecting your file click the button below to restore your site using " +"the backed up wp-config file (wp-config.php.backup.txt)." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:421 +msgid "Restore wp-config File" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:425 +msgid "View Contents of the currently active wp-config.php file" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:460 +msgid "WP Generator Meta Tag" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:463 +msgid "" +"Wordpress generator automatically adds some meta information inside the " +"\"head\" tags of every page on your site's front end. Below is an example of " +"this:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:465 +msgid "" +"The above meta information shows which version of WordPress your site is " +"currently running and thus can help hackers or crawlers scan your site to " +"see if you have an older version of WordPress or one with a known exploit." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:466 +msgid "" +"This feature will allow you to remove the WP generator meta info from your " +"site's pages." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:472 +msgid "WP Generator Meta Info" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:484 +msgid "Remove WP Generator Meta Info" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-settings-menu.php:487 +msgid "" +"Check this if you want to remove the meta info produced by WP Generator from " +"all pages" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:101 +msgid "Comment SPAM Settings" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:107 +msgid "" +"A large portion of WordPress blog comment SPAM is mainly produced by " +"automated bots and not necessarily by humans. " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:108 +msgid "" +"This feature will greatly minimize the useless and unecessary traffic and " +"load on your server resulting from SPAM comments by blocking all comment " +"requests which do not originate from your domain." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:114 +msgid "Block Spambot Comments" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:129 +msgid "Block Spambots From Posting Comments" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:132 +msgid "" +"Check this if you want to apply a firewall rule which will block comments " +"originating from spambots." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:136 +msgid "" +"This feature will implement a firewall rule to block all comment attempts " +"which do not originate from your domain." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:137 +msgid "" +"A legitimate comment is one which is submitted by a human who physically " +"fills out the comment form and clicks the submit button. For such events, " +"the HTTP_REFERRER is always set to your own domain." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:138 +msgid "" +"A comment submitted by a spambot is done by directly calling the comments." +"php file, which usually means that the HTTP_REFERRER value is not your " +"domain and often times empty." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:139 +msgid "" +"This feature will check and block comment requests which are not referred by " +"your domain thus greatly reducing your overall blog SPAM and PHP requests " +"done by the server to process these comments." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:166 +msgid "Nonce check failed for list SPAM comment IPs!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:172 +msgid "" +"You entered a non numeric value for the minimum SPAM comments per IP field. " +"It has been set to the default value." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:184 +#, php-format +msgid "" +"Displaying results for IP addresses which have posted a minimum of %s SPAM " +"comments" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:200 +msgid "" +"This tab displays a list of the IP addresses of the people or bots who have " +"left SPAM comments on your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:201 +msgid "" +"This information can be handy for identifying the most persistent IP " +"addresses or ranges used by spammers." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:202 +msgid "" +"By inspecting the IP address data coming from spammers you will be in a " +"better position to determine which addresses or address ranges you should " +"block by adding them to your blacklist." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:203 +msgid "" +"To add one or more of the IP addresses displayed in the table below to your " +"blacklist, simply click the \"Block\" link for the individual row or select " +"more than one address \n" +" using the checkboxes and then choose the \"block" +"\" option from the Bulk Actions dropdown list and click the \"Apply\" button." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:209 +msgid "List SPAMMER IP Addresses" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:215 +msgid "Minimum number of SPAM comments per IP" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:217 +msgid "" +"This field allows you to list only those IP addresses which have been used " +"to post X or more SPAM comments." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:221 +msgid "" +"Example 1: Setting this value to \"0\" or \"1\" will list ALL IP addresses " +"which were used to submit SPAM comments." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:222 +msgid "" +"Example 2: Setting this value to \"5\" will list only those IP addresses " +"which were used to submit 5 SPAM comments or more on your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:229 +msgid "Find IP Addresses" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:233 +msgid "SPAMMER IP Address Results" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:239 classes/wp-security-utility.php:150 +msgid "" +"The plugin has detected that you are using a Multi-Site WordPress " +"installation." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:240 +msgid "Only the \"superadmin\" can block IP addresses from the main site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-spam-menu.php:241 +msgid "" +"Take note of the IP addresses you want blocked and ask the superadmin to add " +"these to the blacklist using the \"Blacklist Manager\" on the main site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:79 +msgid "Admin User Security" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:82 +msgid "" +"By default, WordPress sets the administrator username to \"admin\" at " +"installation time." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:83 +msgid "" +"A lot of hackers try to take advantage of this information by attempting " +"\"Brute Force Login Attacks\" where they repeatedly try to guess the " +"password by using \"admin\" for username." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:84 +msgid "" +"From a security perspective, changing the default \"admin\" user name is one " +"of the first and smartest things you should do on your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:85 +msgid "" +"This feature will allow you to change your default \"admin\" user name to a " +"more secure name of your choosing." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:92 +msgid "List of Administrator Accounts" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:101 +msgid "Change Admin Username" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:109 +msgid "" +"Your site currently has an account which uses the default \"admin\" " +"username. \n" +" It is highly recommended that you change this name to " +"something else. \n" +" Use the following field to change the admin username." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:117 +msgid "New Admin Username" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:119 +msgid "Choose a new username for admin." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:123 +msgid "Change Username" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:125 +msgid "" +"NOTE: If you are currently logged in as \"admin\" you will be automatically " +"logged out after changing your username and will be required to log back in." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:132 +msgid "No action required! " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:134 +msgid "" +"Your site does not have any account which uses the default \"admin\" " +"username. " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:135 +msgid "This is good security practice." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:147 +msgid "Display Name Security" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:150 +msgid "" +"When you submit a post or answer a comment, WordPress will usually display " +"your \"nickname\"." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:151 +msgid "" +"By default the nickname is set to the login (or user) name of your account." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:152 +msgid "" +"From a security perspective, leaving your nickname the same as your user " +"name is bad practice because it gives a hacker at least half of your " +"account's login credentials." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:153 +msgid "" +"Therefore to further tighten your site's security you are advised to change " +"your nickname and Display name to be " +"different from your Username." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:159 +msgid "Modify Accounts With Identical Login Name & Display Name" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:168 +msgid "" +"Your site currently has the following accounts which have an identical login " +"name and display name." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:169 +msgid "Click on the link to edit the settings of that particular user account" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:184 +msgid "No action required." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:185 +msgid "" +"Your site does not have a user account where the display name is identical " +"to the username." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:196 +msgid "Password Tool" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:199 +msgid "" +"Poor password selection is one of the most common weak points of many sites " +"and is usually the first thing a hacker will try to exploit when attempting " +"to break into your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:200 +msgid "" +"Many people fall into the trap of using a simple word or series of numbers " +"as their password. Such a predictable and simple password would take a " +"competent hacker merely minutes to guess your password by using a simple " +"script which cycles through the easy and most common combinations." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:201 +msgid "" +"The longer and more complex your password is the harder it is for hackers to " +"\"crack\" because more complex passwords require much greater computing " +"power and time." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:202 +msgid "" +"This section contains a useful password strength tool which you can use to " +"check whether your password is sufficiently strong enough." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:207 +msgid "Password Strength Tool" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:212 +msgid "Start typing a password." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:237 +msgid "Nonce check failed on admin username change operation!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:244 +msgid "Username " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:244 +msgid " already exists. Please enter another value. " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:260 +msgid "The database update operation of the user account failed!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:287 +msgid "You entered an invalid username. Please enter another value. " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:291 +msgid "Please enter a value for your username. " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:298 +msgid "Username Successfully Changed!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-accounts-menu.php:318 +msgid "Account Login Name" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:91 +msgid "" +"You entered a non numeric value for the max login attempts field. It has " +"been set to the default value." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:98 +msgid "" +"You entered a non numeric value for the login retry time period field. It " +"has been set to the default value." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:105 +msgid "" +"You entered a non numeric value for the lockout time length field. It has " +"been set to the default value." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:150 +msgid "Login Lockdown Configuration" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:154 +msgid "One of the ways hackers try to compromise sites is via a " +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:154 +msgid "Brute Force Login Attack" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:155 +msgid "" +"This is where attackers use repeated login attempts until they guess the " +"password." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:156 +msgid "" +"Apart from choosing strong passwords, monitoring and blocking IP addresses " +"which are involved in repeated login failures in a short period of time is a " +"very effective way to stop these types of attacks." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:157 +#, php-format +msgid "" +"You may also want to checkout our %s feature for another secure way to " +"protect against these types of attacks." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:162 +msgid "Login Lockdown Options" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:174 +msgid "Enable Login Lockdown Feature" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:177 +msgid "" +"Check this if you want to enable the login lockdown feature and apply the " +"settings below" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:181 +msgid "Max Login Attempts" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:183 +msgid "" +"Set the value for the maximum login retries before IP address is locked out" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:187 +msgid "Login Retry Time Period (min)" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:189 +msgid "" +"If the maximum number of failed login attempts for a particular IP address " +"occur within this time period the plugin will lock out that address" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:193 +msgid "Time Length of Lockout (min)" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:195 +msgid "" +"Set the length of time for which a particular IP address will be prevented " +"from logging in" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:199 +msgid "Display Generic Error Message" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:202 +msgid "" +"Check this if you want to show a generic error message when a login attempt " +"fails" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:206 +msgid "Instantly Lockout Invalid Usernames" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:209 +msgid "" +"Check this if you want to instantly lockout login attempts with usernames " +"which do not exist on your system" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:214 +msgid "Notify By Email" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:217 +msgid "" +"Check this if you want to receive an email when someone has been locked out " +"due to maximum failed login attempts" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:227 +msgid "Currently Locked Out IP Address Ranges" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:254 +msgid "Nonce check failed for delete all failed login records operation!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:263 +msgid "User Login Feature - Delete all failed login records operation failed!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:267 +msgid "All records from the Failed Logins table were deleted successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:282 +msgid "This tab displays the failed login attempts for your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:283 +msgid "" +"The information below can be handy if you need to do security investigations " +"because it will show you the IP range, username and ID (if applicable) and " +"the time/date of the failed login attempt." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:288 +msgid "Failed Login Records" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:304 +#: admin/wp-security-user-login-menu.php:313 +msgid "Delete All Failed Login Records" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:310 +msgid "" +"Click this button if you wish to delete all failed login records in one go." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:338 +msgid "" +"You entered a non numeric value for the logout time period field. It has " +"been set to the default value." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:360 +msgid "" +"Setting an expiry period for your WP administration session is a simple way " +"to protect against unauthorized access to your site from your computer." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:361 +msgid "" +"This feature allows you to specify a time period in minutes after which the " +"admin session will expire and the user will be forced to log back in." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:366 +msgid "Force User Logout Options" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:378 +msgid "Enable Force WP User Logout" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:381 +msgid "" +"Check this if you want to force a wp user to be logged out after a " +"configured amount of time" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:385 +msgid "Logout the WP User After XX Minutes" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:387 +msgid "" +"(Minutes) The user will be forced to log back in after this time period has " +"elapased." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:410 +msgid "" +"This tab displays the login activity for WordPress admin accounts registered " +"with your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:411 +msgid "" +"The information below can be handy if you need to do security investigations " +"because it will show you the last 50 recent login events by username, IP " +"address and time/date." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:416 +msgid "Account Activity Logs" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:448 +msgid "Nonce check failed for users logged in list!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:461 +msgid "Refresh Logged In User Data" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:465 +msgid "Refresh Data" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:471 +msgid "This tab displays all users who are currently logged into your site." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:472 +msgid "" +"If you suspect there is a user or users who are logged in which should not " +"be, you can block them by inspecting the IP addresses from the data below " +"and adding them to your blacklist." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:477 +msgid "Currently Logged In Users" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:542 +msgid "The selected records were deleted successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-user-login-menu.php:551 +msgid "The selected record was deleted successfully!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-whois-menu.php:68 +msgid "WHOIS Lookup Information" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-whois-menu.php:71 +msgid "" +"This feature allows you to look up more detailed information about an IP " +"address or domain name by querying the WHOIS API." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-whois-menu.php:77 +msgid "Perform a WHOIS Lookup for an IP or Domain Name" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-whois-menu.php:84 +msgid "Enter IP Address or Domain Name" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-whois-menu.php:86 +msgid "" +"Enter an IP address or domain name. Example: 111.11.12.13 OR some-domain-" +"name.com" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-whois-menu.php:90 +msgid "Perform IP or Domain Lookup" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-whois-menu.php:110 +msgid "WHOIS lookup successfully completed. Please see the results below:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: admin/wp-security-whois-menu.php:122 +msgid "" +"You have entered an incorrectly formatted IP address or domain name. Please " +"try again." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-backup.php:177 +msgid "All In One WP Security - Site Database Backup" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-backup.php:179 +msgid "Attached is your latest DB backup file for site URL" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-backup.php:179 +msgid " generated on" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-file-scan.php:58 +msgid "All In One WP Security - File change detected!" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-file-scan.php:60 +msgid "A file change was detected on your system for site URL" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-file-scan.php:60 +msgid ". Scan was generated on" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-file-scan.php:61 +msgid "Login to your site to view the scan details." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:39 +msgid "" +"ERROR: Login failed because your IP address has been " +"blocked.\n" +" Please contact the administrator." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:48 +msgid "ERROR: The username field is empty." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:52 +msgid "ERROR: The password field is empty." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:72 classes/wp-security-user-login.php:98 +msgid "ERROR: Invalid login credentials." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:75 +msgid "ERROR: Invalid username." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:101 +#, php-format +msgid "" +"ERROR: Incorrect password. Lost your password?" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:224 +msgid "Site Lockout Notification" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:225 +msgid "" +"A lockdown event has occurred due to too many failed login attempts or " +"invalid username:" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:226 +msgid "Username: Unknown" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:227 +msgid "IP Range: .*" +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:228 +msgid "" +"Log into your site's WordPress administration panel to see the duration of " +"the lockout or to unlock the user." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:385 +#, php-format +msgid "" +"Your session has expired because it has been over %d minutes since your last " +"login." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:386 +#: classes/wp-security-user-login.php:390 +msgid "Please log back in to continue." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-user-login.php:389 +msgid "You were logged out because you just changed the \"admin\" username." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-utility-ip-address.php:79 +#: classes/wp-security-utility-ip-address.php:98 +#: classes/wp-security-utility-ip-address.php:113 +#: classes/wp-security-utility-ip-address.php:128 +msgid " is not a valid ip address format." +msgstr "" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-utility-ip-address.php:136 +msgid "You cannot ban your own IP address: " +msgstr "你不能禁止自己的 IP 地址:" + +# @ all-in-one-wp-security-and-firewall +#: classes/wp-security-utility.php:151 +msgid "" +"This feature can only be configured by the \"superadmin\" on the main site." +msgstr "" diff --git a/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall.pot b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall.pot new file mode 100644 index 0000000..7c1cfbf --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/languages/all-in-one-wp-security-and-firewall.pot @@ -0,0 +1,5061 @@ +msgid "" +msgstr "" +"Project-Id-Version: AIOWPS\n" +"POT-Creation-Date: 2014-09-19 10:46+1000\n" +"PO-Revision-Date: 2014-09-19 10:46+1000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.7\n" +"X-Poedit-KeywordsList: __;_e\n" +"X-Poedit-Basepath: .\n" +"X-Poedit-SearchPath-0: .\n" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:203 +msgid "WP Security" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:204 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:23 +msgid "Dashboard" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:205 +msgid "Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:206 +msgid "User Accounts" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:207 +msgid "User Login" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:208 +msgid "User Registration" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:209 +msgid "Database Security" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:213 +msgid "Filesystem Security" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:215 +msgid "WHOIS Lookup" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:219 +msgid "Blacklist Manager" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:224 +msgid "Firewall" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:229 +msgid "Brute Force" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:231 +msgid "SPAM Prevention" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:235 +msgid "Scanner" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:237 +msgid "Maintenance" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-init.php:238 +msgid "Miscellaneous" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-menu.php:43 +msgid "Settings successfully updated." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-admin-menu.php:50 +msgid "The selected record(s) deleted successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:22 +msgid "Ban Users" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:80 +msgid "Nonce check failed for save blacklist settings!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:132 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:631 +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:147 +msgid "" +"The plugin was unable to write to the .htaccess file. Please edit file " +"manually." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:139 +msgid "Ban IPs or User Agents" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:142 +msgid "" +"The All In One WP Security Blacklist feature gives you the option of banning " +"certain host IP addresses or ranges and also user agents." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:143 +msgid "" +"This feature will deny total site access for users which have IP addresses " +"or user agents matching those which you have configured in the settings " +"below." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:144 +msgid "" +"The plugin achieves this by making appropriate modifications to your ." +"htaccess file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:145 +msgid "" +"By blocking people via the .htaccess file your are using the most secure " +"first line of defence which denies all access to blacklisted visitors as " +"soon as they hit your hosting server." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:151 +msgid "IP Hosts and User Agent Blacklist Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:162 +msgid "Enable IP or User Agent Blacklisting" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:165 +msgid "" +"Check this if you want to enable the banning (or blacklisting) of selected " +"IP addresses and/or user agents specified in the settings below" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:169 +msgid "Enter IP Addresses:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:173 +msgid "Enter one or more IP addresses or IP ranges." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:174 +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:194 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:347 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:381 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:404 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:425 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:687 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:293 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:310 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:165 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:195 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:326 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:356 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:387 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:415 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:444 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:532 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:622 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:824 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:847 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:168 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:253 +msgid "More Info" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:177 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:690 +msgid "Each IP address must be on a new line." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:178 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:691 +msgid "" +"To specify an IP range use a wildcard \"*\" character. Acceptable ways to " +"use wildcards is shown in the examples below:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:179 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:692 +msgid "Example 1: 195.47.89.*" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:180 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:693 +msgid "Example 2: 195.47.*.*" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:181 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:694 +msgid "Example 3: 195.*.*.*" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:188 +msgid "Enter User Agents:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:193 +msgid "Enter one or more user agent strings." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:197 +msgid "Each user agent string must be on a new line." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:198 +msgid "Example 1 - A single user agent string to block:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:200 +msgid "Example 2 - A list of more than 1 user agent strings to block" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-blacklist-menu.php:208 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:192 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:567 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:701 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:763 +#: all-in-one-wp-security/admin/wp-security-database-menu.php:356 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:331 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:231 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:700 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:866 +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:165 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:495 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:183 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:349 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:239 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:407 +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:146 +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:232 +msgid "Save Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:26 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:368 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:377 +msgid "Rename Login Page" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:27 +msgid "Cookie Based Brute Force Prevention" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:28 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:44 +msgid "Login Captcha" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:29 +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:638 +msgid "Login Whitelist" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:30 +msgid "Honeypot" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:101 +msgid "Please enter a value for your login page slug." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:105 +msgid "You cannot use the value \"wp-admin\" for your login page slug." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:107 +msgid "You must alpha numeric characters for your login page slug." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:112 +#: all-in-one-wp-security/admin/wp-security-database-menu.php:271 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:171 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:769 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:213 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:123 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:360 +msgid "Attention!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:131 +msgid "" +"Could not delete the Cookie-based directives from the .htaccess file. Please " +"check the file permissions." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:141 +msgid "" +"An effective Brute Force prevention technique is to change the default " +"WordPress login page URL." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:142 +msgid "" +"Normally if you wanted to login to WordPress you would type your site's home " +"URL followed by wp-login.php." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:143 +msgid "" +"This feature allows you to change the login URL by setting your own slug and " +"renaming the last portion of the login URL which contains the wp-" +"login.php to any string that you like." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:144 +msgid "" +"By doing this, malicious bots and hackers will not be able to access your " +"login page because they will not know the correct login page URL." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:146 +msgid "" +"You may also be interested in the following alternative brute force " +"prevention features:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:157 +msgid "Your WordPress login page URL has been renamed." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:158 +msgid "Your current login URL is:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:160 +msgid "" +"NOTE: If you already had the Cookie-Based Brute Force Prevention feature " +"active, the plugin has automatically deactivated it because only one of " +"these features can be active at any one time." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:167 +msgid "Rename Login Page Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:179 +msgid "Enable Rename Login Page Feature" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:182 +msgid "Check this if you want to enable the rename login page feature" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:186 +msgid "Login Page URL" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:188 +msgid "" +"Enter a string which will represent your secure login page slug. You are " +"enouraged to choose something which is hard to guess and only you will " +"remember." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:221 +msgid "" +"Settings have not been saved - your secret word must consist only of " +"alphanumeric characters, ie, letters and/or numbers only!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:240 +msgid "" +"You have successfully enabled the cookie based brute force prevention feature" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:241 +msgid "" +"From now on you will need to log into your WP Admin using the following URL:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:243 +msgid "" +"It is important that you save this URL value somewhere in case you forget " +"it, OR," +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:244 +#, php-format +msgid "simply remember to add a \"?%s=1\" to your current site URL address." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:250 +msgid "" +"You have successfully saved cookie based brute force prevention feature " +"settings." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:285 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:275 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:119 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:287 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:498 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:667 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:585 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:108 +msgid "" +"Could not write to the .htaccess file. Please check the file permissions." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:295 +msgid "Brute Force Prevention Firewall Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:300 +msgid "" +"A Brute Force Attack is when a hacker tries many combinations of usernames " +"and passwords until they succeed in guessing the right combination." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:301 +msgid "" +"Due to the fact that at any one time there may be many concurrent login " +"attempts occurring on your site via malicious automated robots, this also " +"has a negative impact on your server's memory and performance." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:302 +msgid "" +"The features in this tab will stop the majority of Brute Force Login Attacks " +"at the .htaccess level thus providing even better protection for your WP " +"login page and also reducing the load on your server because the system does " +"not have to run PHP code to process the login attempts." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:309 +#, php-format +msgid "" +"Even though this feature should not have any impact on your site's general " +"functionality you are strongly encouraged to take a %s of your ." +"htaccess file before proceeding." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:310 +msgid "" +"If this feature is not used correctly, you can get locked out of your site. " +"A backed up .htaccess file will come in handy if that happens." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:311 +#, php-format +msgid "" +"To learn more about how to use this feature please watch the following %s." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:324 +msgid "" +"NOTE: If you already had the Rename Login Page feature active, the plugin " +"has automatically deactivated it because only one of these features can be " +"active at any one time." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:332 +msgid "Cookie Based Brute Force Login Prevention" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:343 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:90 +msgid "Enable Brute Force Attack Prevention" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:346 +msgid "" +"Check this if you want to protect your login page from Brute Force Attack." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:351 +msgid "" +"This feature will deny access to your WordPress login page for all people " +"except those who have a special cookie in their browser." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:353 +msgid "To use this feature do the following:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:355 +msgid "1) Enable the checkbox." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:357 +msgid "" +"2) Enter a secret word consisting of alphanumeric characters which will be " +"difficult to guess. This secret word will be useful whenever you need to " +"know the special URL which you will use to access the login page (see point " +"below)." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:359 +msgid "" +"3) You will then be provided with a special login URL. You will need to use " +"this URL to login to your WordPress site instead of the usual login URL. " +"NOTE: The system will deposit a special cookie in your browser which will " +"allow you access to the WordPress administration login page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:361 +msgid "" +"Any person trying to access your login page who does not have the special " +"cookie in their browser will be automatically blocked." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:368 +msgid "Secret Word" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:370 +msgid "" +"Choose a secret word consisting of alphanumeric characters which you can use " +"to access your special URL. Your are highly encouraged to choose a word " +"which will be difficult to guess." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:374 +msgid "Re-direct URL" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:378 +msgid "" +"Specify a URL to redirect a hacker to when they try to access your WordPress " +"login page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:385 +msgid "" +"The URL specified here can be any site's URL and does not have to be your " +"own. For example you can be as creative as you like and send hackers to the " +"CIA or NSA home page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:387 +msgid "" +"This field will default to: http://127.0.0.1 if you do not enter a value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:389 +msgid "Useful Tip:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:391 +msgid "" +"It's a good idea to not redirect attempted brute force login attempts to " +"your site because it increases the load on your server." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:393 +msgid "" +"Redirecting a hacker or malicious bot back to \"http://127.0.0.1\" is ideal " +"because it deflects them back to their own local host and puts the load on " +"their server instead of yours." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:400 +msgid "My Site Has Posts Or Pages Which Are Password Protected" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:403 +msgid "" +"Check this if you are using the native WordPress password protection feature " +"for some or all of your blog posts or pages." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:408 +msgid "" +"In the cases where you are protecting some of your posts or pages using the " +"in-built WordPress password protection feature, a few extra lines of " +"directives and exceptions need to be added to your .htacces file so that " +"people trying to access pages are not automatically blocked." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:410 +msgid "" +"By enabling this checkbox the plugin will add the necessary rules and " +"exceptions to your .htacces file so that people trying to access these pages " +"are not automatically blocked." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:412 +msgid "Helpful Tip:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:414 +msgid "" +"If you do not use the WordPress password protection feature for your posts " +"or pages then it is highly recommended that you leave this checkbox disabled." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:421 +msgid "My Site Has a Theme or Plugins Which Use AJAX" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:424 +msgid "Check this if your site uses AJAX functionality." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:429 +msgid "" +"In the cases where your WordPress installation has a theme or plugins which " +"use AJAX, a few extra lines of directives and exceptions need to be added to " +"your .htacces file to prevent AJAX requests from being automatically blocked " +"by the brute force prevention feature." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:431 +msgid "" +"By enabling this checkbox the plugin will add the necessary rules and " +"exceptions to your .htacces file so that AJAX operations will work as " +"expected." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:446 +msgid "The cookie test was successful. You can now enable this feature." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:449 +msgid "Save Feature Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:456 +msgid "" +"The cookie test failed on this server. So this feature cannot be used on " +"this site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:461 +msgid "" +"Before using this feature you are required to perform a cookie test first. " +"This is to make sure that your browser cookie is working correctly and that " +"you won't lock yourself out." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:463 +msgid "Perform Cookie Test" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:503 +msgid "" +"This feature allows you to add a captcha form on the WordPress login page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:504 +msgid "" +"Users who attempt to login will also need to enter the answer to a simple " +"mathematical question - if they enter the wrong answer, the plugin will not " +"allow them login even if they entered the correct username and password." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:505 +msgid "" +"Therefore, adding a captcha form on the login page is another effective yet " +"simple \"Brute Force\" prevention technique." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:511 +msgid "Login Form Captcha Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:522 +msgid "Enable Captcha On Login Page" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:525 +msgid "Check this if you want to insert a captcha form on the login page" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:531 +msgid "Custom Login Form Captcha Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:540 +msgid "Enable Captcha On Custom Login Form" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:543 +msgid "" +"Check this if you want to insert captcha on a custom login form generated by " +"the following WP function: wp_login_form()" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:549 +msgid "Lost Password Form Captcha Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:559 +msgid "Enable Captcha On Lost Password Page" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:562 +msgid "" +"Check this if you want to insert a captcha form on the lost password page" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:584 +msgid "Nonce check failed for save whitelist settings!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:641 +msgid "" +"The All In One WP Security Whitelist feature gives you the option of only " +"allowing certain IP addresses or ranges to have access to your WordPress " +"login page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:642 +msgid "" +"This feature will deny login access for all IP addresses which are not in " +"your whitelist as configured in the settings below." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:643 +msgid "" +"The plugin achieves this by writing the appropriate directives to your ." +"htaccess file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:644 +msgid "" +"By allowing/blocking IP addresses via the .htaccess file your are using the " +"most secure first line of defence because login access will only be granted " +"to whitelisted IP addresses and other addresses will be blocked as soon as " +"they try to access your login page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:651 +#, php-format +msgid "" +"Attention: If in addition to enabling the white list feature, you also have " +"the %s feature enabled, you will still need to use your secret word " +"in the URL when trying to access your WordPress login page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:652 +msgid "" +"These features are NOT functionally related. Having both of them enabled on " +"your site means you are creating 2 layers of security." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:657 +msgid "Login IP Whitelist Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:668 +msgid "Enable IP Whitelisting" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:671 +msgid "" +"Check this if you want to enable the whitelisting of selected IP addresses " +"specified in the settings below" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:675 +msgid "Your Current IP Address" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:678 +msgid "" +"You can copy and paste this address in the text box below if you want to " +"include it in your login whitelist." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:682 +msgid "Enter Whitelisted IP Addresses:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:686 +msgid "" +"Enter one or more IP addresses or IP ranges you wish to include in your " +"whitelist. Only the addresses specified here will have access to the " +"WordPress login page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:734 +msgid "" +"This feature allows you to add a special hidden \"honeypot\" field on the " +"WordPress login page. This will only be visible to robots and not humans." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:735 +msgid "" +"Since robots usually fill in every input field from a login form, they will " +"also submit a value for the special hidden honeypot field." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:736 +msgid "" +"The way honeypots work is that a hidden field is placed somewhere inside a " +"form which only robots will submit. If that field contains a value when the " +"form is submitted then a robot has most likely submitted the form and it is " +"consquently dealt with." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:737 +msgid "" +"Therefore, if the plugin detects that this field has a value when the login " +"form is submitted, then the robot which is attempting to login to your site " +"will be redirected to its localhost address - http://127.0.0.1." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:743 +msgid "Login Form Honeypot Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:754 +msgid "Enable Honeypot On Login Page" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-brute-force-menu.php:757 +msgid "" +"Check this if you want to enable the honeypot feature for the login page" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:24 +msgid "System Info" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:25 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:460 +msgid "Locked IP Addresses" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:75 +msgid "For information, updates and documentation, please visit the" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:75 +msgid "AIO WP Security & Firewall Plugin" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:75 +msgid "Page" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:76 +msgid "Follow us" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:76 +msgid "" +"Twitter, Google+ or via Email to stay up to date about the new security " +"features of this plugin." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:92 +msgid "Security Strength Meter" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:121 +msgid "Total Achievable Points: " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:123 +msgid "Current Score of Your Site: " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:133 +msgid "Security Points Breakdown" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:174 +msgid "Spread the Word" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:177 +msgid "" +"We are working hard to make your WordPress site more secure. Please support " +"us, here is how:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:193 +msgid "Critical Feature Status" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:197 +msgid "" +"Below is the current status of the critical features that you should " +"activate on your site to achieve a minimum level of recommended security" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:201 +msgid "Admin Username" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:216 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:25 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:42 +msgid "Login Lockdown" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:231 +msgid "File Permission" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:246 +msgid "Basic Firewall" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:264 +msgid "Last 5 Logins" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:281 +msgid "No data found!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:285 +msgid "Last 5 logins summary:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:289 +msgid "User" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:290 +msgid "Date" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:291 +msgid "IP" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:312 +msgid "Maintenance Mode Status" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:316 +msgid "" +"Maintenance mode is currently enabled. Remember to turn it off when you are " +"done" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:319 +msgid "Maintenance mode is currently off." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:323 +msgid "Maintenance Mode" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:345 +msgid "Cookie Based Brute Prevention" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:348 +msgid "Cookie-Based Brute Force" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:352 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:380 +#, php-format +msgid "The %s feature is currently active." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:353 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:381 +msgid "Your new WordPress login URL is now:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:413 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:29 +msgid "Logged In Users" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:423 +msgid "Number of users currently logged in site-wide is:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:424 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:446 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:474 +#, php-format +msgid "Go to the %s menu to see more details" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:429 +msgid "There are no other site-wide users currently logged in." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:445 +msgid "Number of users currently logged into your site (including you) is:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:451 +msgid "There are no other users currently logged in." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:468 +msgid "There are no IP addresses currently locked out." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:473 +msgid "Number of temporarily locked out IP addresses: " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:516 +msgid "Site Info" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:518 +msgid "Plugin Version" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:519 +msgid "WP Version" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:521 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:523 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:619 +msgid "Version" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:522 +msgid "Table Prefix" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:524 +msgid "Session Save Path" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:526 +msgid "Server Name" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:527 +msgid "Cookie Domain" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:528 +msgid "Library Present" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:529 +msgid "Debug File Write Permissions" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:533 +msgid "PHP Info" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:535 +msgid "PHP Version" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:536 +msgid "PHP Memory Usage" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:537 +msgid " MB" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:543 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:551 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:559 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:601 +msgid "N/A" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:546 +msgid "PHP Memory Limit" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:554 +msgid "PHP Max Upload Size" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:562 +msgid "PHP Max Post Size" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:565 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:573 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:582 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:590 +msgid "On" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:567 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:575 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:584 +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:592 +msgid "Off" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:570 +msgid "PHP Safe Mode" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:578 +msgid "PHP Allow URL fopen" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:587 +msgid "PHP Allow URL Include" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:595 +msgid "PHP Display Errors" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:604 +msgid "PHP Max Script Execution Time" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:604 +msgid "Seconds" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:608 +msgid "Active Plugins" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:618 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:130 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:149 +msgid "Name" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:620 +msgid "Plugin URL" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-dashboard-menu.php:656 +msgid "Currently Locked Out IP Addresses and Ranges" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:26 +#: all-in-one-wp-security/admin/wp-security-database-menu.php:31 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:63 +msgid "DB Backup" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:30 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:61 +msgid "DB Prefix" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:93 +msgid "Nonce check failed for DB prefix change operation!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:101 +msgid "" +"The plugin has detected that it cannot write to the wp-config.php file. This " +"feature can only be used if the plugin can successfully write to the wp-" +"config.php file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:114 +msgid "Please enter a value for the DB prefix." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:123 +msgid "" +"ERROR: The table prefix can only contain numbers, letters, " +"and underscores." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:131 +msgid "Change Database Prefix" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:134 +msgid "" +"Your WordPress DB is the most important asset of your website because it " +"contains a lot of your site's precious information." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:135 +msgid "" +"The DB is also a target for hackers via methods such as SQL injections and " +"malicious and automated code which targets certain tables." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:136 +msgid "" +"One way to add a layer of protection for your DB is to change the default " +"WordPress table prefix from \"wp_\" to something else which will be " +"difficult for hackers to guess." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:137 +msgid "" +"This feature allows you to easily change the prefix to a value of your " +"choice or to a random value set by this plugin." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:143 +msgid "DB Prefix Options" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:154 +#, php-format +msgid "It is recommended that you perform a %s before using this feature" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:163 +msgid "Current DB Table Prefix" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:169 +msgid "" +"Your site is currently using the default WordPress DB prefix value of \"wp_" +"\". \n" +" To increase your site's security you should " +"consider changing the DB prefix value to another value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:176 +msgid "Generate New DB Table Prefix" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:179 +msgid "" +"Check this if you want the plugin to generate a random 6 character string " +"for the table prefix" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:180 +msgid "OR" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:182 +msgid "" +"Choose your own DB prefix by specifying a string which contains letters and/" +"or numbers and/or underscores. Example: xyz_" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:186 +msgid "Change DB Prefix" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:207 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:86 +msgid "Nonce check failed for manual DB backup operation!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:224 +msgid "" +"DB Backup was successfully completed! You will receive the backup file via " +"email if you have enabled \"Send Backup File Via Email\", otherwise you can " +"retrieve it via FTP from the following directory:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:226 +msgid "Your DB Backup File location: " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:234 +msgid "DB Backup failed. Please check the permissions of the backup directory." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:251 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:135 +msgid "" +"You entered a non numeric value for the \"backup time interval\" field. It " +"has been set to the default value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:258 +msgid "" +"You entered a non numeric value for the \"number of backup files to keep\" " +"field. It has been set to the default value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:265 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:165 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:117 +msgid "" +"You have entered an incorrect email address format. It has been set to your " +"WordPress admin email as default." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:298 +msgid "Manual Backup" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:304 +msgid "To create a new DB backup just click on the button below." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:307 +msgid "Create DB Backup Now" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:311 +msgid "Automated Scheduled Backups" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:323 +msgid "Enable Automated Scheduled Backups" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:326 +msgid "" +"Check this if you want the system to automatically generate backups " +"periodically based on the settings below" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:330 +msgid "Backup Time Interval" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:333 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:281 +msgid "Hours" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:334 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:282 +msgid "Days" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:335 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:283 +msgid "Weeks" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:337 +msgid "Set the value for how often you would like an automated backup to occur" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:341 +msgid "Number of Backup Files To Keep" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:343 +msgid "" +"Thie field allows you to choose the number of backup files you would like to " +"keep in the backup directory" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:347 +msgid "Send Backup File Via Email" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:350 +msgid "" +"Check this if you want the system to email you the backup file after a DB " +"backup has been performed" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:352 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:327 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:235 +msgid "Enter an email address" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:383 +msgid "Error - Could not get tables or no tables found!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:387 +msgid "Starting DB prefix change operations....." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:389 +#, php-format +msgid "" +"Your WordPress system has a total of %s tables and your new DB prefix will " +"be: %s" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:395 +#: all-in-one-wp-security/classes/wp-security-utility.php:206 +msgid "" +"Failed to make a backup of the wp-config.php file. This operation will not " +"go ahead." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:399 +msgid "A backup copy of your wp-config.php file was created successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:421 +#, php-format +msgid "%s table name update failed" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:433 +#, php-format +msgid "Please change the prefix manually for the above tables to: %s" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:436 +#, php-format +msgid "%s tables had their prefix updated successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:452 +msgid "wp-config.php file was updated successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:455 +#, php-format +msgid "" +"The \"wp-config.php\" file was not able to be modified. Please modify this " +"file manually using your favourite editor and search \n" +" for variable \"$table_prefix\" and assign the following " +"value to that variable: %s" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:468 +#: all-in-one-wp-security/admin/wp-security-database-menu.php:490 +#, php-format +msgid "Update of table %s failed: unable to change %s to %s" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:472 +msgid "" +"The options table records which had references to the old DB prefix were " +"updated successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:494 +#, php-format +msgid "" +"The %s table records which had references to the old DB prefix were updated " +"successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:523 +#, php-format +msgid "" +"Error updating user_meta table where new meta_key = %s, old meta_key = %s " +"and user_id = %s." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:528 +msgid "" +"The usermeta table records which had references to the old DB prefix were " +"updated successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-database-menu.php:530 +msgid "DB prefix change tasks have been completed." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:24 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:107 +msgid "File Change Detection" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:25 +msgid "Malware Scan" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:26 +msgid "DB Scan" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:95 +msgid "There have been no file changes since the last scan." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:105 +msgid "Nonce check failed for manual file change detection scan operation!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:112 +msgid "" +"The plugin has detected that this is your first file change detection scan. " +"The file details from this scan will be used to detect file changes for " +"future scans!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:114 +msgid "Scan Complete - There were no file changes detected!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:203 +msgid "" +"NEW SCAN COMPLETED: The plugin has detected that you have made changes to " +"the \"File Types To Ignore\" or \"Files To Ignore\" fields.\n" +" In order to ensure that future scan results are " +"accurate, the old scan data has been refreshed." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:213 +msgid "" +"All In One WP Security & Firewall has detected that there was a change in " +"your host's files." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:215 +msgid "View Scan Details & Clear This Message" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:224 +msgid "" +"If given an opportunity hackers can insert their code or files into your " +"system which they can then use to carry out malicious acts on your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:225 +msgid "" +"Being informed of any changes in your files can be a good way to quickly " +"prevent a hacker from causing damage to your website." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:226 +msgid "" +"In general, WordPress core and plugin files and file types such as \".php\" " +"or \".js\" should not change often and when they do, it is important that " +"you are made aware when a change occurs and which file was affected." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:227 +msgid "" +"The \"File Change Detection Feature\" will notify you of any file change " +"which occurs on your system, including the addition and deletion of files by " +"performing a regular automated or manual scan of your system's files." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:228 +msgid "" +"This feature also allows you to exclude certain files or folders from the " +"scan in cases where you know that they change often as part of their normal " +"operation. (For example log files and certain caching plugin files may " +"change often and hence you may choose to exclude such files from the file " +"change detection scan)" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:233 +msgid "Manual File Change Detection Scan" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:239 +msgid "" +"To perform a manual file change detection scan click on the button below." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:242 +msgid "Perform Scan Now" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:246 +msgid "View Last Saved File Change Results" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:252 +msgid "" +"Click the button below to view the saved file change results from the last " +"scan." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:255 +msgid "View Last File Change" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:259 +msgid "File Change Detection Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:271 +msgid "Enable Automated File Change Detection Scan" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:274 +msgid "" +"Check this if you want the system to automatically/periodically scan your " +"files to check for file changes based on the settings below" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:278 +msgid "Scan Time Interval" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:285 +msgid "Set the value for how often you would like a scan to occur" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:289 +msgid "File Types To Ignore" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:292 +msgid "" +"Enter each file type or extension on a new line which you wish to exclude " +"from the file change detection scan." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:296 +msgid "" +"You can exclude file types from the scan which would not normally pose any " +"security threat if they were changed. These can include things such as image " +"files." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:297 +msgid "" +"Example: If you want the scanner to ignore files of type jpg, png, and bmp, " +"then you would enter the following:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:298 +msgid "jpg" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:299 +msgid "png" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:300 +msgid "bmp" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:306 +msgid "Files/Directories To Ignore" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:309 +msgid "" +"Enter each file or directory on a new line which you wish to exclude from " +"the file change detection scan." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:313 +msgid "" +"You can exclude specific files/directories from the scan which would not " +"normally pose any security threat if they were changed. These can include " +"things such as log files." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:314 +msgid "" +"Example: If you want the scanner to ignore certain files in different " +"directories or whole directories, then you would enter the following:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:315 +msgid "cache/config/master.php" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:316 +msgid "somedirectory" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:322 +msgid "Send Email When Change Detected" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:325 +msgid "" +"Check this if you want the system to email you if a file change was detected" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:343 +msgid "What is Malware?" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:344 +msgid "" +"The word Malware stands for Malicious Software. It can consist of things " +"like trojan horses, adware, worms, spyware and any other undesirable code " +"which a hacker will try to inject into your website." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:345 +msgid "" +"Often when malware code has been inserted into your site you will normally " +"not notice anything out of the ordinary based on appearances, but it can " +"have a dramatic effect on your site's search ranking." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:346 +msgid "" +"This is because the bots and spiders from search engines such as Google have " +"the capability to detect malware when they are indexing the pages on your " +"site, and consequently they can blacklist your website which will in turn " +"affect your search rankings." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:350 +msgid "Scanning For Malware" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:351 +msgid "" +"Due to the constantly changing and complex nature of Malware, scanning for " +"such things using a standalone plugin will not work reliably. This is " +"something best done via an external scan of your site regularly." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:352 +msgid "" +"This is why we have created an easy-to-use scanning service which is hosted " +"off our own server which will scan your site for malware once every day and " +"notify you if it finds anything." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:353 +msgid "When you sign up for this service you will get the following:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:355 +msgid "Automatic Daily Scan of 1 Website" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:356 +msgid "Automatic Malware & Blacklist Monitoring" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:357 +msgid "Automatic Email Alerting" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:358 +msgid "Site uptime monitoring" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:359 +msgid "Site response time monitoring" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:360 +msgid "Malware Cleanup" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:361 +msgid "Blacklist Removal" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:362 +msgid "No Contract (Cancel Anytime)" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:364 +#, php-format +msgid "To learn more please %s." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:374 +msgid "" +"This feature performs a basic database scan which will look for any common " +"suspicious-looking strings and javascript and html code in some of the " +"Wordpress core tables." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:391 +msgid "Nonce check failed for manual db scan operation!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:402 +msgid "" +"This feature will perform a basic database scan which will look for any " +"common suspicious-looking strings and javascript and html code in some of " +"the Wordpress core tables." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:403 +msgid "" +"If the scan finds anything it will list all \"potentially\" malicious " +"results but it is up to you to verify whether a result is a genuine example " +"of a hacking attack or a false positive." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:404 +msgid "" +"As well as scanning for generic strings commonly used in malicious cases, " +"this feature will also scan for some of the known \"pharma\" hack entries " +"and if it finds any it will automatically delete them." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:405 +msgid "" +"The WordPress core tables scanned by this feature include: posts, postmeta, " +"comments, links, users, usermeta, and options tables." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:410 +msgid "Database Scan" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:416 +msgid "To perform a database scan click on the button below." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:419 +msgid "Perform DB Scan" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:462 +msgid "Latest File Change Scan Results" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:471 +msgid "The following files were added to your host." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:474 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:495 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:519 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:27 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:28 +msgid "File" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:475 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:496 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:520 +msgid "File Size" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:476 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:497 +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:521 +msgid "File Modified" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:492 +msgid "The following files were removed from your host." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filescan-menu.php:516 +msgid "The following files were changed on your host." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:26 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:67 +msgid "File Permissions" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:27 +msgid "PHP File Editing" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:28 +msgid "WP File Access" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:29 +msgid "Host System Logs" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:96 +#, php-format +msgid "The permissions for %s were succesfully changed to %s" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:100 +#, php-format +msgid "Unable to change permissions for %s!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:106 +msgid "File Permissions Scan" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:109 +msgid "" +"Your WordPress file and folder permission settings govern the accessability " +"and read/write privileges of the files and folders which make up your WP " +"installation." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:110 +msgid "" +"Your WP installation already comes with reasonably secure file permission " +"settings for the filesystem." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:111 +msgid "" +"However, sometimes people or other plugins modify the various permission " +"settings of certain core WP folders or files such that they end up making " +"their site less secure because they chose the wrong permission values." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:112 +msgid "" +"This feature will scan the critical WP core folders and files and will " +"highlight any permission settings which are insecure." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:118 +msgid "WP Directory and File Permissions Scan Results" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:131 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:150 +msgid "File/Folder" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:132 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:151 +msgid "Current Permissions" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:133 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:152 +msgid "Recommended Permissions" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:134 +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:153 +msgid "Recommended Action" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:191 +msgid "Your PHP file editing settings were saved successfully." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:195 +msgid "" +"Operation failed! Unable to modify or make a backup of wp-config.php file!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:201 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:69 +msgid "File Editing" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:204 +msgid "" +"The Wordpress Dashboard by default allows administrators to edit PHP files, " +"such as plugin and theme files." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:205 +msgid "" +"This is often the first tool an attacker will use if able to login, since it " +"allows code execution." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:206 +msgid "" +"This feature will disable the ability for people to edit PHP files via the " +"dashboard." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:212 +msgid "Disable PHP File Editing" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:224 +msgid "Disable Ability To Edit PHP Files" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:227 +msgid "" +"Check this if you want to remove the ability for people to edit PHP files " +"via the WP dashboard" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:271 +msgid "" +"You have successfully saved the Prevent Access to Default WP Files " +"configuration." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:280 +msgid "WordPress Files" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:283 +#, php-format +msgid "" +"This feature allows you to prevent access to files such as %s, %s and %s " +"which are delivered with all WP installations." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:284 +msgid "" +"By preventing access to these files you are hiding some key pieces of " +"information (such as WordPress version info) from potential hackers." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:289 +msgid "Prevent Access to Default WP Files" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:300 +msgid "Prevent Access to WP Default Install Files" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:303 +msgid "" +"Check this if you want to prevent access to readme.html, license.txt and wp-" +"config-sample.php." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:307 +msgid "Save Setting" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:331 +msgid "System Logs" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:334 +msgid "" +"Sometimes your hosting platform will produce error or warning logs in a file " +"called \"error_log\"." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:335 +msgid "" +"Depending on the nature and cause of the error or warning, your hosting " +"server can create multiple instances of this file in numerous directory " +"locations of your WordPress installation." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:336 +msgid "" +"By occassionally viewing the contents of these logs files you can keep " +"informed of any underlying problems on your system which you might need to " +"address." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:342 +msgid "View System Logs" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:347 +msgid "Enter System Log File Name" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:349 +msgid "Enter your system log file name. (Defaults to error_log)" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:352 +msgid "View Latest System Logs" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:354 +msgid "Loading..." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:371 +msgid "No system logs were found!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:424 +msgid "Set Recommended Permissions" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:430 +msgid "No Action Required" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-filesystem-menu.php:470 +#, php-format +msgid "Showing latest entries of error_log file: %s" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:27 +msgid "Basic Firewall Rules" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:28 +msgid "Additional Firewall Rules" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:29 +msgid "5G Blacklist Firewall Rules" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:30 +msgid "Internet Bots" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:31 +msgid "Prevent Hotlinks" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:32 +msgid "404 Detection" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:115 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:663 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:104 +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:317 +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:96 +msgid "Settings were successfully saved" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:124 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:503 +msgid "Firewall Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:131 +#, php-format +msgid "" +"This should not have any impact on your site's general functionality but if " +"you wish you can take a %s of your .htaccess file before proceeding." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:132 +msgid "" +"The features in this tab allow you to activate some basic firewall security " +"protection rules for your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:133 +msgid "" +"The firewall functionality is achieved via the insertion of special code " +"into your currently active .htaccess file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:143 +msgid "Attention:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:144 +msgid "Currently the " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:144 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:191 +msgid "Enable Pingback Protection" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:144 +msgid " is active." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:145 +msgid "" +"Please beware that if you are using the WordPress iOS App, then you will " +"need to deactivate this feature in order for the app to work properly." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:153 +msgid "Basic Firewall Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:161 +msgid "Enable Basic Firewall Protection" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:164 +msgid "Check this if you want to apply basic firewall protection to your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:168 +msgid "" +"This setting will implement the following basic firewall protection " +"mechanisms on your site:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:169 +msgid "1) Protect your htaccess file by denying access to it." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:170 +msgid "2) Disable the server signature." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:171 +msgid "3) Limit file upload size (10MB)." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:172 +msgid "4) Protect your wp-config.php file by denying access to it." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:173 +msgid "" +"The above firewall features will be applied via your .htaccess file and " +"should not affect your site's overall functionality." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:174 +msgid "" +"You are still advised to take a backup of your active .htaccess file just in " +"case." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:183 +msgid "WordPress Pingback Vulnerability Protection" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:194 +msgid "" +"Check this if you are not using the WP XML-RPC functionality and you want to " +"enable protection against WordPress pingback vulnerabilities." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:198 +msgid "" +"This setting will add a directive in your .htaccess to disable access to the " +"WordPress xmlrpc.php file which is responsible for the XML-RPC functionality " +"such as pingbacks in WordPress." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:199 +msgid "" +"Hackers can exploit various pingback vulnerabilities in the WordPress XML-" +"RPC API in a number of ways such as:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:200 +msgid "1) Denial of Service (DoS) attacks" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:201 +msgid "2) Hacking internal routers." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:202 +msgid "3) Scanning ports in internal networks to get info from various hosts." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:203 +msgid "" +"Apart from the security protection benefit, this feature may also help " +"reduce load on your server, particularly if your site currently has a lot of " +"unwanted traffic hitting the XML-RPC API on your installation." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:204 +msgid "" +"NOTE: You should only enable this feature if you are not currently using the " +"XML-RPC functionality on your WordPress installation." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:211 +msgid "Save Basic Firewall Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:283 +msgid "" +"You have successfully saved the Additional Firewall Protection configuration" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:297 +msgid "Additional Firewall Protection" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:301 +#, php-format +msgid "" +"Due to the nature of the code being inserted to the .htaccess file, this " +"feature may break some functionality for certain plugins and you are " +"therefore advised to take a %s of .htaccess before applying this " +"configuration." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:303 +msgid "" +"This feature allows you to activate more advanced firewall settings to your " +"site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:304 +msgid "" +"The advanced firewall rules are applied via the insertion of special code to " +"your currently active .htaccess file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:313 +msgid "Listing of Directory Contents" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:322 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:91 +msgid "Disable Index Views" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:325 +msgid "Check this if you want to disable directory and file listing." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:330 +msgid "" +"By default, an Apache server will allow the listing of the contents of a " +"directory if it doesn't contain an index.php file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:332 +msgid "This feature will prevent the listing of contents for all directories." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:334 +msgid "" +"NOTE: In order for this feature to work \"AllowOverride\" of the Indexes " +"directive must be enabled in your httpd.conf file. Ask your hosting provider " +"to check this if you don't have access to httpd.conf" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:343 +msgid "Trace and Track" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:352 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:92 +msgid "Disable Trace and Track" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:355 +msgid "Check this if you want to disable trace and track." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:360 +msgid "" +"HTTP Trace attack (XST) can be used to return header requests and grab " +"cookies and other information." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:362 +msgid "" +"This hacking technique is usually used together with cross site scripting " +"attacks (XSS)." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:364 +msgid "" +"Disabling trace and track on your site will help prevent HTTP Trace attacks." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:373 +msgid "Proxy Comment Posting" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:383 +msgid "Forbid Proxy Comment Posting" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:386 +msgid "Check this if you want to forbid proxy comment posting." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:391 +msgid "" +"This setting will deny any requests that use a proxy server when posting " +"comments." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:392 +msgid "" +"By forbidding proxy comments you are in effect eliminating some SPAM and " +"other proxy requests." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:401 +msgid "Bad Query Strings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:411 +msgid "Deny Bad Query Strings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:414 +msgid "This will help protect you against malicious queries via XSS." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:419 +msgid "" +"This feature will write rules in your .htaccess file to prevent malicious " +"string attacks on your site using XSS." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:420 +msgid "" +"NOTE: Some of these strings might be used for plugins or themes and hence " +"this might break some functionality." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:421 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:451 +msgid "" +"You are therefore strongly advised to take a backup of your active .htaccess " +"file before applying this feature." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:430 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:95 +msgid "Advanced Character String Filter" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:440 +msgid "Enable Advanced Character String Filter" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:443 +msgid "This will block bad character matches from XSS." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:448 +msgid "" +"This is an advanced character string filter to prevent malicious string " +"attacks on your site coming from Cross Site Scripting (XSS)." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:449 +msgid "" +"This setting matches for common malicious string patterns and exploits and " +"will produce a 403 error for the hacker attempting the query." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:450 +msgid "NOTE: Some strings for this setting might break some functionality." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:459 +msgid "Save Additional Firewall Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:494 +msgid "You have successfully saved the 5G Firewall Protection configuration" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:507 +#, php-format +msgid "" +"This feature allows you to activate the 5G firewall security protection " +"rules designed and produced by %s." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:508 +msgid "" +"The 5G Blacklist is a simple, flexible blacklist that helps reduce the " +"number of malicious URL requests that hit your website." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:509 +msgid "" +"The added advantage of applying the 5G firewall to your site is that it has " +"been tested and confirmed by the people at PerishablePress.com to be an " +"optimal and least disruptive set of .htaccess security rules for general WP " +"sites running on an Apache server or similar." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:510 +#, php-format +msgid "" +"Therefore the 5G firewall rules should not have any impact on your site's " +"general functionality but if you wish you can take a %s of your .htaccess " +"file before proceeding." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:516 +msgid "5G Blacklist/Firewall Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:528 +msgid "Enable 5G Firewall Protection" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:531 +msgid "" +"Check this if you want to apply the 5G Blacklist firewall protection from " +"perishablepress.com to your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:535 +msgid "" +"This setting will implement the 5G security firewall protection mechanisms " +"on your site which include the following things:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:536 +msgid "1) Block forbidden characters commonly used in exploitative attacks." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:537 +msgid "2) Block malicious encoded URL characters such as the \".css(\" string." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:538 +msgid "" +"3) Guard against the common patterns and specific exploits in the root " +"portion of targeted URLs." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:539 +msgid "" +"4) Stop attackers from manipulating query strings by disallowing illicit " +"characters." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:540 +msgid "....and much more." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:546 +msgid "Save 5G Firewall Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:577 +msgid "The Internet bot settings were successfully saved" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:581 +msgid "Internet Bot Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:588 +#, php-format +msgid "%s?" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:590 +msgid "" +"A bot is a piece of software which runs on the Internet and performs " +"automatic tasks. For example when Google indexes your pages it uses " +"automatic bots to achieve this task." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:591 +msgid "" +"A lot of bots are legitimate and non-malicous but not all bots are good and " +"often you will find some which try to impersonate legitimate bots such as " +"\"Googlebot\" but in reality they have nohing to do with Google at all." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:592 +msgid "" +"Although most of the bots out there are relatively harmless sometimes " +"website owners want to have more control over which bots they allow into " +"their site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:593 +msgid "" +"This feature allows you to block bots which are impersonating as a Googlebot " +"but actually aren't. (In other words they are fake Google bots)" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:594 +msgid "" +"Googlebots have a unique indentity which cannot easily be forged and this " +"feature will indentify any fake Google bots and block them from reading your " +"site's pages." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:600 +msgid "" +"Attention: Sometimes non-malicious Internet organizations " +"might have bots which impersonate as a \"Googlebot\"." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:601 +msgid "" +"Just be aware that if you activate this feature the plugin will block all " +"bots which use the \"Googlebot\" string in their User Agent information but " +"are NOT officially from Google (irrespective whether they are malicious or " +"not)." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:602 +msgid "" +"All other bots from other organizations such as \"Yahoo\", \"Bing\" etc will " +"not be affected by this feature." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:608 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:618 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:97 +msgid "Block Fake Googlebots" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:621 +msgid "Check this if you want to block all fake Googlebots." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:625 +msgid "" +"This feature will check if the User Agent information of a bot contains the " +"string \"Googlebot\"." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:626 +msgid "" +"It will then perform a few tests to verify if the bot is legitimately from " +"Google and if so it will allow the bot to proceed." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:627 +msgid "" +"If the bot fails the checks then the plugin will mark it as being a fake " +"Googlebot and it will block it" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:634 +msgid "Save Internet Bot Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:671 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:693 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:32 +msgid "Prevent Image Hotlinking" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:674 +msgid "" +"A Hotlink is where someone displays an image on their site which is actually " +"located on your site by using a direct link to the source of the image on " +"your server." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:675 +msgid "" +"Due to the fact that the image being displayed on the other person's site is " +"coming from your server, this can cause leaking of bandwidth and resources " +"for you because your server has to present this image for the people viewing " +"it on someone elses's site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:676 +msgid "" +"This feature will prevent people from directly hotlinking images from your " +"site's pages by writing some directives in your .htaccess file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:681 +msgid "Prevent Hotlinking" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:696 +msgid "Check this if you want to prevent hotlinking to images on your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:716 +msgid "Nonce check failed for delete all 404 event logs operation!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:727 +msgid "404 Detection Feature - Delete all 404 event logs operation failed!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:731 +msgid "All 404 event logs were deleted from the DB successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:757 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:110 +msgid "" +"You entered a non numeric value for the lockout time length field. It has " +"been set to the default value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:763 +msgid "" +"You entered an incorrect format for the \"Redirect URL\" field. It has been " +"set to the default value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:795 +msgid "404 Detection Configuration" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:798 +msgid "" +"A 404 or Not Found error occurs when somebody tries to access a non-existent " +"page on your website." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:799 +msgid "" +"Typically, most 404 errors happen quite innocently when people have mis-" +"typed a URL or used an old link to page which doesn't exist anymore." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:800 +msgid "" +"However, in some cases you may find many repeated 404 errors which occur in " +"a relatively short space of time and from the same IP address which are all " +"attempting to access a variety of non-existent page URLs." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:801 +msgid "" +"Such behaviour can mean that a hacker might be trying to find a particular " +"page or URL for sinister reasons." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:802 +msgid "" +"This feature allows you to monitor all 404 events which occur on your site, " +"and it also gives you the option of blocking IP addresses for a configured " +"length of time." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:803 +msgid "" +"If you want to temporarily block an IP address, simply click the \"Temp Block" +"\" link for the applicable IP entry in the \"404 Event Logs\" table below." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:808 +msgid "404 Detection Options" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:820 +msgid "Enable IP Lockout For 404 Events" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:823 +msgid "Check this if you want to enable the lockout of selected IP addresses." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:828 +msgid "" +"When you enable this checkbox, all 404 events on your site will be logged in " +"the table below. You can monitor these events and select some IP addresses " +"to be blocked in the table. All IP addresses you select to be blocked from " +"the \"404 Event Logs\" table section will be unable to access your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:836 +msgid "Enable 404 Event Logging" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:839 +msgid "Check this if you want to enable the logging of 404 events" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:844 +msgid "Time Length of 404 Lockout (min)" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:846 +msgid "" +"Set the length of time for which a blocked IP address will be prevented from " +"visiting your site" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:851 +msgid "" +"You can lock any IP address which is recorded in the \"404 Event Logs\" " +"table section below." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:853 +msgid "" +"To temporarily lock an IP address, hover over the ID column and click the " +"\"Temp Block\" link for the applicable IP entry." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:860 +msgid "404 Lockout Redirect URL" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:862 +msgid "A blocked visitor will be automatically redirected to this URL." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:871 +msgid "404 Event Logs" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:893 +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:902 +msgid "Delete All 404 Event Logs" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-firewall-menu.php:899 +msgid "Click this button if you wish to purge all 404 event logs from the DB." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-404.php:105 +#: all-in-one-wp-security/admin/wp-security-list-acct-activity.php:79 +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:86 +#: all-in-one-wp-security/admin/wp-security-list-locked-ip.php:82 +#: all-in-one-wp-security/admin/wp-security-list-locked-ip.php:93 +#: all-in-one-wp-security/admin/wp-security-list-login-fails.php:78 +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:82 +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:93 +msgid "Please select some records using the checkboxes" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-acct-activity.php:107 +#: all-in-one-wp-security/admin/wp-security-list-login-fails.php:107 +msgid "The selected entries were deleted successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-acct-activity.php:120 +#: all-in-one-wp-security/admin/wp-security-list-login-fails.php:119 +msgid "The selected entry was deleted successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:139 +msgid "" +"The selected IP addresses were saved in the blacklist configuration settings." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:153 +msgid "" +"The .htaccess file was successfully modified to include the selected IP " +"addresses." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:159 +msgid "" +"NOTE: The .htaccess file was not modified because you have disabled the " +"\"Enable IP or User Agent Blacklisting\" check box." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-comment-spammer-ip.php:160 +#, php-format +msgid "" +"To block these IP addresses you will need to enable the above flag in the %s " +"menu" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-locked-ip.php:117 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:527 +msgid "The selected IP entries were unlocked successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-locked-ip.php:126 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:536 +msgid "The selected IP entry was unlocked successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:127 +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:153 +msgid "Your account is now active" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:128 +msgid "Your account with username:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:128 +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:154 +msgid " is now active" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:137 +msgid "The selected accounts were approved successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:141 +msgid "The following accounts failed to update successfully: " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:149 +msgid "The selected account was approved successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:154 +msgid "Your account with username: " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:180 +msgid "The selected accounts were deleted successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-list-registered-users.php:188 +msgid "The selected account was deleted successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:22 +msgid "Visitor Lockout" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:88 +msgid "Site lockout feature settings saved!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:93 +msgid "General Visitor Lockout" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:99 +msgid "" +"This feature allows you to put your site into \"maintenance mode\" by " +"locking down the front-end to all visitors except logged in users with super " +"admin privileges." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:100 +msgid "" +"Locking your site down to general visitors can be useful if you are " +"investigating some issues on your site or perhaps you might be doing some " +"maintenance and wish to keep out all traffic for security reasons." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:105 +msgid "Enable Front-end Lockout" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:108 +msgid "" +"Check this if you want all visitors except those who are logged in as " +"administrator to be locked out of the front-end of your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:112 +msgid "Enter a Message:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:124 +msgid "" +"Enter a message you wish to display to visitors when your site is in " +"maintenance mode." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-maintenance-menu.php:131 +msgid "Save Site Lockout Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:23 +msgid "Copy Protection" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:24 +msgid "Frames" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:88 +msgid "Copy Protection feature settings saved!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:93 +msgid "Disable The Ability To Copy Text" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:99 +msgid "" +"This feature allows you to disable the ability to select and copy text from " +"your front end." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:104 +msgid "Enable Copy Protection" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:107 +msgid "" +"Check this if you want to disable the \"Right Click\", \"Text Selection\" " +"and \"Copy\" option on the front end of your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:114 +msgid "Save Copy Protection Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:138 +msgid "Frame Display Prevention feature settings saved!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:143 +msgid "Prevent Your Site From Being Displayed In a Frame" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:149 +msgid "" +"This feature allows you to prevent other sites from displaying any of your " +"content via a frame or iframe." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:150 +msgid "" +"When enabled, this feature will set the \"X-Frame-Options\" paramater to " +"\"sameorigin\" in the HTTP header." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:155 +msgid "Enable iFrame Protection" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-misc-options-menu.php:158 +msgid "" +"Check this if you want to stop other sites from displaying your content in a " +"frame or iframe." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:26 +msgid "General Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:29 +msgid "WP Meta Info" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:30 +msgid "Import/Export" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:97 +msgid "All the security features have been disabled successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:101 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:128 +msgid "" +"Could not write to the .htaccess file. Please restore your .htaccess file " +"manually using the restore functionality in the \".htaccess File\"." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:106 +msgid "" +"Could not write to the wp-config.php. Please restore your wp-config.php file " +"manually using the restore functionality in the \"wp-config.php File\"." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:124 +msgid "All firewall rules have been disabled successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:138 +msgid "WP Security Plugin" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:140 +msgid "" +"Thank you for using our WordPress security plugin. There are a lot of " +"security features in this plugin." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:141 +msgid "" +"Go through each menu items and enable the security options to add more " +"security to your site. Start by activating the basic features first." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:142 +msgid "" +"It is a good practice to take a backup of your .htaccess file, database and " +"wp-config.php file before activating the security features. This plugin has " +"options that you can use to backup those resources easily." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:145 +msgid "Backup your database" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:146 +msgid "Backup .htaccess file" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:147 +msgid "Backup wp-config.php file" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:153 +msgid "Disable Security Features" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:159 +msgid "" +"If you think that some plugin functionality on your site is broken due to a " +"security feature you enabled in this plugin, then use the following option " +"to turn off all the security features of this plugin." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:163 +msgid "Disable All Security Features" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:169 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:179 +msgid "Disable All Firewall Rules" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:175 +msgid "" +"This feature will disable all firewall rules which are currently active in " +"this plugin and it will also delete these rules from your .htacess file. Use " +"it if you think one of the firewall rules is causing an issue on your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:208 +msgid "" +"Your .htaccess file was successfully backed up! Using an FTP program go to " +"the \"/wp-content/aiowps_backups\" directory to save a copy of the file to " +"your computer." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:214 +msgid "" +"htaccess file rename failed during backup. Please check your root directory " +"for the backup file using FTP." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:220 +msgid "htaccess backup failed." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:235 +msgid "Please choose a .htaccess to restore from." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:251 +msgid "" +"htaccess file restore failed. Please attempt to restore the .htaccess " +"manually using FTP." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:255 +msgid "Your .htaccess file has successfully been restored!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:261 +msgid "" +"htaccess Restore operation failed! Please check the contents of the file you " +"are trying to restore from." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:267 +msgid ".htaccess File Operations" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:270 +msgid "" +"Your \".htaccess\" file is a key component of your website's security and it " +"can be modified to implement various levels of protection mechanisms." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:271 +msgid "" +"This feature allows you to backup and save your currently active .htaccess " +"file should you need to re-use the the backed up file in the future." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:272 +msgid "" +"You can also restore your site's .htaccess settings using a backed up ." +"htaccess file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:286 +msgid "Save the current .htaccess file" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:290 +msgid "" +"Click the button below to backup and save the currently active .htaccess " +"file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:291 +msgid "Backup .htaccess File" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:295 +msgid "Restore from a backed up .htaccess file" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:301 +msgid ".htaccess file to restore from" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:307 +msgid "" +"After selecting your file, click the button below to restore your site using " +"the backed up htaccess file (htaccess_backup.txt)." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:313 +msgid "Restore .htaccess File" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:317 +msgid "View Contents of the currently active .htaccess file" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:346 +msgid "Please choose a wp-config.php file to restore from." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:362 +msgid "" +"wp-config.php file restore failed. Please attempt to restore this file " +"manually using FTP." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:366 +msgid "Your wp-config.php file has successfully been restored!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:372 +msgid "" +"wp-config.php Restore operation failed! Please check the contents of the " +"file you are trying to restore from." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:378 +msgid "wp-config.php File Operations" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:381 +msgid "" +"Your \"wp-config.php\" file is one of the most important in your WordPress " +"installation. It is a primary configuration file and contains crucial things " +"such as details of your database and other critical components." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:382 +msgid "" +"This feature allows you to backup and save your currently active wp-config." +"php file should you need to re-use the the backed up file in the future." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:383 +msgid "" +"You can also restore your site's wp-config.php settings using a backed up wp-" +"config.php file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:397 +msgid "Save the current wp-config.php file" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:401 +msgid "" +"Click the button below to backup and download the contents of the currently " +"active wp-config.php file." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:402 +msgid "Backup wp-config.php File" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:407 +msgid "Restore from a backed up wp-config file" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:413 +msgid "wp-config file to restore from" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:419 +msgid "" +"After selecting your file click the button below to restore your site using " +"the backed up wp-config file (wp-config.php.backup.txt)." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:425 +msgid "Restore wp-config File" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:429 +msgid "View Contents of the currently active wp-config.php file" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:464 +msgid "WP Generator Meta Tag" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:467 +msgid "" +"Wordpress generator automatically adds some meta information inside the " +"\"head\" tags of every page on your site's front end. Below is an example of " +"this:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:469 +msgid "" +"The above meta information shows which version of WordPress your site is " +"currently running and thus can help hackers or crawlers scan your site to " +"see if you have an older version of WordPress or one with a known exploit." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:470 +msgid "" +"This feature will allow you to remove the WP generator meta info from your " +"site's pages." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:476 +msgid "WP Generator Meta Info" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:488 +msgid "Remove WP Generator Meta Info" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:491 +msgid "" +"Check this if you want to remove the meta info produced by WP Generator from " +"all pages" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:517 +msgid "Please choose a file to import your settings from." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:549 +msgid "Import AIOWPS settings from " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:555 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:599 +msgid "" +"The deletion of the import file failed. Please delete this file manually via " +"the media menu for security purposes." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:557 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:601 +msgid "" +"The file you uploaded was also deleted for security purposes because it " +"contains security settings details." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:572 +msgid "Your AIOWPS settings were successfully imported via file input." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:573 +msgid "" +"The deletion of the import file failed. Please delete this file manually via " +"the media menu for security purposes because it contains security settings " +"details." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:575 +msgid "" +"Your AIOWPS settings were successfully imported. The file you uploaded was " +"also deleted for security purposes because it contains security settings " +"details." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:578 +msgid "Your AIOWPS settings were successfully imported via text entry." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:593 +msgid "" +"The contents of your settings file appear invalid. Please check the contents " +"of the file you are trying to import settings from." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:610 +msgid "Export or Import Your AIOWPS Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:613 +msgid "" +"This section allows you to export or import your All In One WP Security & " +"Firewall settings." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:614 +msgid "" +"This can be handy if you wanted to save time by applying the settings from " +"one site to another site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:615 +msgid "" +"NOTE: Before importing, it is your responsibility to know what settings you " +"are trying to import. Importing settings blindly can cause you to be locked " +"out of your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:616 +msgid "" +"For Example: If a settings item relies on the domain URL then it may not " +"work correctly when imported into a site with a different domain." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:622 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:631 +msgid "Export AIOWPS Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:628 +msgid "" +"To export your All In One WP Security & Firewall settings click the button " +"below." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:635 +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:660 +msgid "Import AIOWPS Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:641 +msgid "" +"Use this section to import your All In One WP Security & Firewall settings " +"from a file. Alternatively, copy/paste the contents of your import file into " +"the textarea below." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:642 +msgid "Import File" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:648 +msgid "" +"After selecting your file, click the button below to apply the settings to " +"your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-settings-menu.php:654 +msgid "Copy/Paste Import Data" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:24 +msgid "Comment SPAM" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:25 +msgid "Comment SPAM IP Monitoring" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:26 +msgid "BuddyPress" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:113 +msgid "Comment SPAM Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:118 +msgid "Add Captcha To Comments Form" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:122 +msgid "" +"This feature will add a simple math captcha field in the WordPress comments " +"form." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:123 +msgid "" +"Adding a captcha field in the comment form is a simple way of greatly " +"reducing SPAM comments from bots without using .htaccess rules." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:132 +msgid "Enable Captcha On Comment Forms" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:135 +msgid "Check this if you want to insert a captcha field on the comment forms" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:142 +msgid "Block Spambot Comments" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:146 +msgid "" +"A large portion of WordPress blog comment SPAM is mainly produced by " +"automated bots and not necessarily by humans. " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:147 +msgid "" +"This feature will greatly minimize the useless and unecessary traffic and " +"load on your server resulting from SPAM comments by blocking all comment " +"requests which do not originate from your domain." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:148 +msgid "" +"In other words, if the comment was not submitted by a human who physically " +"submitted the comment on your site, the request will be blocked." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:164 +msgid "Block Spambots From Posting Comments" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:167 +msgid "" +"Check this if you want to apply a firewall rule which will block comments " +"originating from spambots." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:171 +msgid "" +"This feature will implement a firewall rule to block all comment attempts " +"which do not originate from your domain." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:172 +msgid "" +"A legitimate comment is one which is submitted by a human who physically " +"fills out the comment form and clicks the submit button. For such events, " +"the HTTP_REFERRER is always set to your own domain." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:173 +msgid "" +"A comment submitted by a spambot is done by directly calling the comments." +"php file, which usually means that the HTTP_REFERRER value is not your " +"domain and often times empty." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:174 +msgid "" +"This feature will check and block comment requests which are not referred by " +"your domain thus greatly reducing your overall blog SPAM and PHP requests " +"done by the server to process these comments." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:201 +msgid "Nonce check failed for list SPAM comment IPs!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:207 +msgid "" +"You entered a non numeric value for the minimum SPAM comments per IP field. " +"It has been set to the default value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:219 +#, php-format +msgid "" +"Displaying results for IP addresses which have posted a minimum of %s SPAM " +"comments" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:235 +msgid "" +"This tab displays a list of the IP addresses of the people or bots who have " +"left SPAM comments on your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:236 +msgid "" +"This information can be handy for identifying the most persistent IP " +"addresses or ranges used by spammers." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:237 +msgid "" +"By inspecting the IP address data coming from spammers you will be in a " +"better position to determine which addresses or address ranges you should " +"block by adding them to your blacklist." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:238 +msgid "" +"To add one or more of the IP addresses displayed in the table below to your " +"blacklist, simply click the \"Block\" link for the individual row or select " +"more than one address \n" +" using the checkboxes and then choose the \"block" +"\" option from the Bulk Actions dropdown list and click the \"Apply\" button." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:244 +msgid "List SPAMMER IP Addresses" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:250 +msgid "Minimum number of SPAM comments per IP" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:252 +msgid "" +"This field allows you to list only those IP addresses which have been used " +"to post X or more SPAM comments." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:256 +msgid "" +"Example 1: Setting this value to \"0\" or \"1\" will list ALL IP addresses " +"which were used to submit SPAM comments." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:257 +msgid "" +"Example 2: Setting this value to \"5\" will list only those IP addresses " +"which were used to submit 5 SPAM comments or more on your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:264 +msgid "Find IP Addresses" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:268 +msgid "SPAMMER IP Address Results" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:274 +#: all-in-one-wp-security/classes/wp-security-utility.php:150 +msgid "" +"The plugin has detected that you are using a Multi-Site WordPress " +"installation." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:275 +msgid "Only the \"superadmin\" can block IP addresses from the main site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:276 +msgid "" +"Take note of the IP addresses you want blocked and ask the superadmin to add " +"these to the blacklist using the \"Blacklist Manager\" on the main site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:321 +msgid "BuddyPress SPAM Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:326 +msgid "Add Captcha To BuddyPress Registration Form" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:330 +msgid "" +"This feature will add a simple math captcha field in the BuddyPress " +"registration form." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:331 +msgid "" +"Adding a captcha field in the registration form is a simple way of greatly " +"reducing SPAM signups from bots without using .htaccess rules." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:341 +msgid "Enable Captcha On BuddyPress Registration Form" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:344 +msgid "" +"Check this if you want to insert a captcha field on the BuddyPress " +"registration forms" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-spam-menu.php:353 +msgid "" +"BuddyPress is not active! In order to use this feature you will need to have " +"BuddyPress installed and activated." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:29 +msgid "WP Username" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:30 +msgid "Display Name" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:31 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:862 +msgid "Password" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:85 +msgid "Admin User Security" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:88 +msgid "" +"By default, WordPress sets the administrator username to \"admin\" at " +"installation time." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:89 +msgid "" +"A lot of hackers try to take advantage of this information by attempting " +"\"Brute Force Login Attacks\" where they repeatedly try to guess the " +"password by using \"admin\" for username." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:90 +msgid "" +"From a security perspective, changing the default \"admin\" user name is one " +"of the first and smartest things you should do on your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:91 +msgid "" +"This feature will allow you to change your default \"admin\" user name to a " +"more secure name of your choosing." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:98 +msgid "List of Administrator Accounts" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:107 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:36 +msgid "Change Admin Username" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:115 +msgid "" +"Your site currently has an account which uses the default \"admin\" " +"username. \n" +" It is highly recommended that you change this name to " +"something else. \n" +" Use the following field to change the admin username." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:123 +msgid "New Admin Username" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:125 +msgid "Choose a new username for admin." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:129 +msgid "Change Username" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:131 +msgid "" +"NOTE: If you are currently logged in as \"admin\" you will be automatically " +"logged out after changing your username and will be required to log back in." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:138 +msgid "No action required! " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:140 +msgid "" +"Your site does not have any account which uses the default \"admin\" " +"username. " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:141 +msgid "This is good security practice." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:153 +msgid "Display Name Security" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:156 +msgid "" +"When you submit a post or answer a comment, WordPress will usually display " +"your \"nickname\"." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:157 +msgid "" +"By default the nickname is set to the login (or user) name of your account." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:158 +msgid "" +"From a security perspective, leaving your nickname the same as your user " +"name is bad practice because it gives a hacker at least half of your " +"account's login credentials." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:159 +msgid "" +"Therefore to further tighten your site's security you are advised to change " +"your nickname and Display name to be " +"different from your Username." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:165 +msgid "Modify Accounts With Identical Login Name & Display Name" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:174 +msgid "" +"Your site currently has the following accounts which have an identical login " +"name and display name." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:175 +msgid "Click on the link to edit the settings of that particular user account" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:190 +msgid "No action required." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:191 +msgid "" +"Your site does not have a user account where the display name is identical " +"to the username." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:202 +msgid "Password Tool" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:205 +msgid "" +"Poor password selection is one of the most common weak points of many sites " +"and is usually the first thing a hacker will try to exploit when attempting " +"to break into your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:206 +msgid "" +"Many people fall into the trap of using a simple word or series of numbers " +"as their password. Such a predictable and simple password would take a " +"competent hacker merely minutes to guess your password by using a simple " +"script which cycles through the easy and most common combinations." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:207 +msgid "" +"The longer and more complex your password is the harder it is for hackers to " +"\"crack\" because more complex passwords require much greater computing " +"power and time." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:208 +msgid "" +"This section contains a useful password strength tool which you can use to " +"check whether your password is sufficiently strong enough." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:213 +msgid "Password Strength Tool" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:218 +msgid "Start typing a password." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:221 +msgid "It would take a desktop PC approximately" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:222 +msgid "1 sec" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:222 +msgid "to crack your password!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:227 +msgid "Password Strength" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:243 +msgid "Nonce check failed on admin username change operation!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:250 +msgid "Username " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:250 +msgid " already exists. Please enter another value. " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:266 +msgid "The database update operation of the user account failed!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:293 +msgid "You entered an invalid username. Please enter another value. " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:297 +msgid "Please enter a value for your username. " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:304 +msgid "Username Successfully Changed!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-accounts-menu.php:324 +msgid "Account Login Name" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:26 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:298 +msgid "Failed Login Records" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:27 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:51 +msgid "Force Logout" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:28 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:432 +msgid "Account Activity Logs" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:96 +msgid "" +"You entered a non numeric value for the max login attempts field. It has " +"been set to the default value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:103 +msgid "" +"You entered a non numeric value for the login retry time period field. It " +"has been set to the default value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:159 +msgid "Login Lockdown Configuration" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:163 +msgid "One of the ways hackers try to compromise sites is via a " +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:163 +msgid "Brute Force Login Attack" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:164 +msgid "" +"This is where attackers use repeated login attempts until they guess the " +"password." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:165 +msgid "" +"Apart from choosing strong passwords, monitoring and blocking IP addresses " +"which are involved in repeated login failures in a short period of time is a " +"very effective way to stop these types of attacks." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:166 +#, php-format +msgid "" +"You may also want to checkout our %s feature for another secure way to " +"protect against these types of attacks." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:171 +msgid "Login Lockdown Options" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:183 +msgid "Enable Login Lockdown Feature" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:186 +msgid "" +"Check this if you want to enable the login lockdown feature and apply the " +"settings below" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:190 +msgid "Allow Unlock Requests" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:193 +msgid "" +"Check this if you want to allow users to generate an automated unlock " +"request link which will unlock their account" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:197 +msgid "Max Login Attempts" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:199 +msgid "" +"Set the value for the maximum login retries before IP address is locked out" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:203 +msgid "Login Retry Time Period (min)" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:205 +msgid "" +"If the maximum number of failed login attempts for a particular IP address " +"occur within this time period the plugin will lock out that address" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:209 +msgid "Time Length of Lockout (min)" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:211 +msgid "" +"Set the length of time for which a particular IP address will be prevented " +"from logging in" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:215 +msgid "Display Generic Error Message" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:218 +msgid "" +"Check this if you want to show a generic error message when a login attempt " +"fails" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:222 +msgid "Instantly Lockout Invalid Usernames" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:225 +msgid "" +"Check this if you want to instantly lockout login attempts with usernames " +"which do not exist on your system" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:230 +msgid "Notify By Email" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:233 +msgid "" +"Check this if you want to receive an email when someone has been locked out " +"due to maximum failed login attempts" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:243 +msgid "Currently Locked Out IP Address Ranges" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:248 +#, php-format +msgid "" +"To see a list of all locked IP addresses and ranges go to the %s tab in the " +"dashboard menu." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:264 +msgid "Nonce check failed for delete all failed login records operation!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:273 +msgid "User Login Feature - Delete all failed login records operation failed!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:277 +msgid "All records from the Failed Logins table were deleted successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:292 +msgid "This tab displays the failed login attempts for your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:293 +msgid "" +"The information below can be handy if you need to do security investigations " +"because it will show you the IP range, username and ID (if applicable) and " +"the time/date of the failed login attempt." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:314 +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:323 +msgid "Delete All Failed Login Records" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:320 +msgid "" +"Click this button if you wish to delete all failed login records in one go." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:348 +msgid "" +"You entered a non numeric value for the logout time period field. It has " +"been set to the default value." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:376 +msgid "" +"Setting an expiry period for your WP administration session is a simple way " +"to protect against unauthorized access to your site from your computer." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:377 +msgid "" +"This feature allows you to specify a time period in minutes after which the " +"admin session will expire and the user will be forced to log back in." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:382 +msgid "Force User Logout Options" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:394 +msgid "Enable Force WP User Logout" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:397 +msgid "" +"Check this if you want to force a wp user to be logged out after a " +"configured amount of time" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:401 +msgid "Logout the WP User After XX Minutes" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:403 +msgid "" +"(Minutes) The user will be forced to log back in after this time period has " +"elapased." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:426 +msgid "" +"This tab displays the login activity for WordPress admin accounts registered " +"with your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:427 +msgid "" +"The information below can be handy if you need to do security investigations " +"because it will show you the last 50 recent login events by username, IP " +"address and time/date." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:464 +msgid "Nonce check failed for users logged in list!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:477 +msgid "Refresh Logged In User Data" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:481 +msgid "Refresh Data" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:487 +msgid "This tab displays all users who are currently logged into your site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:488 +msgid "" +"If you suspect there is a user or users who are logged in which should not " +"be, you can block them by inspecting the IP addresses from the data below " +"and adding them to your blacklist." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:493 +msgid "Currently Logged In Users" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:558 +msgid "The selected records were deleted successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-login-menu.php:567 +msgid "The selected record was deleted successfully!" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:23 +msgid "Manual Approval" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:24 +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:57 +msgid "Registration Captcha" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:112 +msgid "User Registration Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:116 +msgid "Manually Approve New Registrations" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:120 +msgid "" +"If your site allows people to create their own accounts via the WordPress " +"registration form, then you can minimize SPAM or bogus registrations by " +"manually approving each registration." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:121 +msgid "" +"This feature will automatically set a newly registered account to \"pending" +"\" until the administrator activates it. Therefore undesirable registrants " +"will be unable to log in without your express approval." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:122 +msgid "" +"You can view all accounts which have been newly registered via the handy " +"table below and you can also perform bulk activation/deactivation/deletion " +"tasks on each account." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:138 +msgid "Enable manual approval of new registrations" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:141 +msgid "" +"Check this if you want to automatically disable all newly registered " +"accounts so that you can approve them manually." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:150 +msgid "Approve Registered Users" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:195 +msgid "" +"This feature allows you to add a captcha form on the WordPress registration " +"page." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:196 +msgid "" +"Users who attempt to register will also need to enter the answer to a simple " +"mathematical question - if they enter the wrong answer, the plugin will not " +"allow them to register." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:197 +msgid "" +"Therefore, adding a captcha form on the registration page is another " +"effective yet simple SPAM registration prevention technique." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:202 +msgid "Registration Page Captcha Settings" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:209 +msgid "" +"The core default behaviour for WordPress Multi Site regarding user " +"registration is that all users are registered via the main site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:210 +msgid "" +"Therefore, if you would like to add a captcha form to the registration page " +"for a Multi Site, please go to \"Registration Captcha\" settings on the main " +"site." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:225 +msgid "Enable Captcha On Registration Page" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-user-registration-menu.php:228 +msgid "" +"Check this if you want to insert a captcha form on the WordPress user " +"registration page (if you allow user registration)." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:22 +msgid "WhoIS Lookup" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:74 +msgid "WHOIS Lookup Information" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:77 +msgid "" +"This feature allows you to look up more detailed information about an IP " +"address or domain name by querying the WHOIS API." +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:83 +msgid "Perform a WHOIS Lookup for an IP or Domain Name" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:89 +msgid "Enter IP Address or Domain Name" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:91 +msgid "" +"Enter an IP address or domain name. Example: 111.11.12.13 OR some-domain-" +"name.com" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:95 +msgid "Perform IP or Domain Lookup" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:115 +msgid "WHOIS lookup successfully completed. Please see the results below:" +msgstr "" + +#: all-in-one-wp-security/admin/wp-security-whois-menu.php:127 +msgid "" +"You have entered an incorrectly formatted IP address or domain name. Please " +"try again." +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:178 +msgid "No items found." +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:281 +msgid "Bulk Actions" +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:291 +msgid "Apply" +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:365 +msgid "Show all dates" +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:378 +#, php-format +msgid "%1$s %2$d" +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:394 +msgid "List View" +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:395 +msgid "Excerpt View" +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:421 +#, php-format +msgid "%s pending" +msgstr "" + +#: all-in-one-wp-security/admin/general/wp-security-list-table.php:653 +msgid "Select All" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-backup.php:188 +msgid "All In One WP Security - Site Database Backup" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-backup.php:190 +msgid "Attached is your latest DB backup file for site URL" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-backup.php:190 +msgid " generated on" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:17 +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:254 +msgid "Please enter an answer in digits:" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:96 +msgid "one" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:97 +msgid "two" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:98 +msgid "three" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:99 +msgid "four" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:100 +msgid "five" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:101 +msgid "six" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:102 +msgid "seven" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:103 +msgid "eight" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:104 +msgid "nine" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:105 +msgid "ten" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:106 +msgid "eleven" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:107 +msgid "twelve" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:108 +msgid "thirteen" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:109 +msgid "fourteen" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:110 +msgid "fifteen" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:111 +msgid "sixteen" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:112 +msgid "seventeen" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:113 +msgid "eighteen" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:114 +msgid "nineteen" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-captcha.php:115 +msgid "twenty" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:65 +msgid "All In One WP Security - File change detected!" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:67 +msgid "A file change was detected on your system for site URL" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:67 +msgid ". Scan was generated on" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:68 +msgid "Login to your site to view the scan details." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:269 +msgid "" +"Starting DB scan.....please wait while the plugin scans your database......." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:273 +msgid "Scanning options table........." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:342 +#, php-format +msgid "%s and option_id: %s" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:345 +#, php-format +msgid "" +"Deletion of known pharma hack entry for option_name %s failed. Please delete " +"this entry manually!" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:347 +#, php-format +msgid "" +"The options table entry with known pharma hack for option_id %s with " +"option_name %s was successfully deleted" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:361 +#, php-format +msgid "Possible suspicious entry found (for option_id: %s) - %s " +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:370 +msgid "No suspicious entries found in options table" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:374 +msgid "Scanning posts table........." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:414 +#, php-format +msgid "" +"Possible suspicious entry found (for Post ID: %s) in the following column - " +"%s " +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:423 +msgid "No suspicious entries found in posts table" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:427 +msgid "Scanning links table........." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:466 +#: all-in-one-wp-security/classes/wp-security-file-scan.php:517 +#: all-in-one-wp-security/classes/wp-security-file-scan.php:545 +#: all-in-one-wp-security/classes/wp-security-file-scan.php:573 +#: all-in-one-wp-security/classes/wp-security-file-scan.php:622 +#, php-format +msgid "Possible suspicious entry - %s " +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:475 +msgid "No suspicious entries found in links table" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:479 +msgid "Scanning comments table........." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:526 +msgid "No suspicious entries found in comments table" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:530 +msgid "Scanning postmeta table........." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:554 +msgid "No suspicious entries found in postmeta table" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:558 +msgid "Scanning usermeta table........." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:582 +msgid "No suspicious entries found in usermeta table" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:586 +msgid "Scanning users table........." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:631 +msgid "No suspicious entries found in users table" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:638 +msgid "" +"The plugin has detected that there are some potentially suspicious entries " +"in your database." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:639 +msgid "" +"Please verify the results listed below to confirm whether the entries " +"detected are genuinely suspicious or if they are false positives." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:644 +#: all-in-one-wp-security/classes/wp-security-file-scan.php:659 +msgid "Disclaimer:" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:645 +msgid "" +"Even though this database scan has revealed some suspicious entries, this " +"does not necessarily mean that other parts of your DB or site are also not " +"compromised." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:646 +#: all-in-one-wp-security/classes/wp-security-file-scan.php:661 +msgid "" +"Please note that database scan performed by this feature is basic and looks " +"for common malicious entries. Since hackers are continually evolving their " +"methods this scan is not meant to be a guaranteed catch-all for malware." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:647 +#: all-in-one-wp-security/classes/wp-security-file-scan.php:662 +#, php-format +msgid "" +"It is your responsibility to do the due diligence and perform a robust %s on " +"your site if you wish to be more certain that your site is clean." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:654 +msgid "DB Scan was completed successfully. No suspicious entries found." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-file-scan.php:660 +msgid "" +"Even though the database scan has not revealed any suspicious entries, this " +"does not necessarily mean that your site is actually completely clean or not " +"compromised." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:281 +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:358 +#: all-in-one-wp-security/classes/wp-security-user-login.php:69 +#: all-in-one-wp-security/classes/wp-security-user-login.php:72 +#: all-in-one-wp-security/classes/wp-security-user-registration.php:61 +msgid "ERROR: Your answer was incorrect - please try again." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:293 +msgid "Enter something special:" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:320 +msgid "Please enter an answer in the CAPTCHA field." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:330 +msgid "" +"Error: You entered an incorrect CAPTCHA answer. Please go back and try again." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-general-init-tasks.php:382 +msgid "Your CAPTCHA answer was incorrect - please try again." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:43 +msgid "" +"ERROR: Login failed because your IP address has been " +"blocked. Please contact the administrator." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:82 +msgid "ERROR: The username field is empty." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:86 +msgid "ERROR: The password field is empty." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:106 +#: all-in-one-wp-security/classes/wp-security-user-login.php:132 +msgid "ERROR: Invalid login credentials." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:109 +msgid "ERROR: Invalid username." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:135 +#, php-format +msgid "" +"ERROR: Incorrect password. Lost your password?" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:146 +msgid "" +"ACCOUNT PENDING: Your account is currently not active. An " +"administrator needs to activate your account before you can login." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:269 +msgid "Site Lockout Notification" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:270 +msgid "" +"A lockdown event has occurred due to too many failed login attempts or " +"invalid username:" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:271 +msgid "Username: " +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:272 +msgid "IP Address: " +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:273 +msgid "IP Range: " +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:274 +msgid "" +"Log into your site's WordPress administration panel to see the duration of " +"the lockout or to unlock the user." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:338 +msgid "Unlock Request Notification" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:339 +msgid "You have requested for the account with email address " +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:340 +msgid "Unlock link: " +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:341 +msgid "" +"After clicking the above link you will be able to login to the WordPress " +"administration panel." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:507 +#, php-format +msgid "" +"Your session has expired because it has been over %d minutes since your last " +"login." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:508 +#: all-in-one-wp-security/classes/wp-security-user-login.php:512 +msgid "Please log back in to continue." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:511 +msgid "You were logged out because you just changed the \"admin\" username." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-user-login.php:537 +msgid "Request Unlock" +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:76 +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:95 +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:110 +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:125 +msgid " is not a valid ip address format." +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-utility-ip-address.php:133 +msgid "You cannot ban your own IP address: " +msgstr "" + +#: all-in-one-wp-security/classes/wp-security-utility.php:151 +msgid "" +"This feature can only be configured by the \"superadmin\" on the main site." +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:29 +msgid "Remove WP Generatore Meta Tag" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:38 +msgid "Change Display Name" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:45 +msgid "Custom Login Captcha" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:47 +msgid "Lost Password Captcha" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:49 +msgid "Login IP Whitelisting" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:55 +msgid "Registration Approval" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:71 +msgid "WordPress Files Access" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:75 +msgid "IP and User Agent Blacklisting" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:79 +msgid "Enable Basic Firewall" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:80 +msgid "Enable Pingback Vulnerability Protection" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:81 +msgid "Enable IP blocking for 404 detection" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:85 +msgid "Enable Rename Login Page" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:87 +msgid "Enable Login Honeypot" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:93 +msgid "Forbid Proxy Comments" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:94 +msgid "Deny Bad Queries" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:96 +msgid "5G Blacklist" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:99 +msgid "Block Spambots" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:101 +msgid "Comment Captcha" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item-manager.php:103 +msgid "BuddyPress Registration Captcha" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item.php:28 +msgid "Basic" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item.php:31 +msgid "Intermediate" +msgstr "" + +#: all-in-one-wp-security/classes/grade-system/wp-security-feature-item.php:34 +msgid "Advanced" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:96 +msgid "https://wordpress.org/" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:97 +#: all-in-one-wp-security/other-includes/wp-security-unlock-request.php:14 +msgid "Powered by WordPress" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:214 +#, php-format +msgid "← Back to %s" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:272 +msgid "ERROR: Enter a username or e-mail address." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:276 +msgid "" +"ERROR: There is no user registered with that email address." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:293 +msgid "ERROR: Invalid username or e-mail." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:330 +msgid "Password reset is not allowed for this user" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:355 +msgid "Someone requested that the password be reset for the following account:" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:357 +#, php-format +msgid "Username: %s" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:358 +msgid "If this was a mistake, just ignore this email and nothing will happen." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:359 +msgid "To reset your password, visit the following address:" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:369 +#, php-format +msgid "[%s] Password Reset" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:390 +msgid "The e-mail could not be sent." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:390 +msgid "Possible reason: your host may have disabled the mail() function." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:495 +msgid "Sorry, that key does not appear to be valid." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:497 +msgid "Sorry, that key has expired. Please try again." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:517 +msgid "Lost Password" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:517 +msgid "" +"Please enter your username or email address. You will receive a link to " +"create a new password via email." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:525 +msgid "Username or E-mail:" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:540 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:589 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:631 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:713 +msgid "Log in" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:543 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:634 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:892 +msgid "Register" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:575 +msgid "The passwords do not match." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:589 +msgid "Password Reset" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:589 +msgid "Your password has been reset." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:597 +msgid "Reset Password" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:597 +msgid "Enter your new password below." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:604 +msgid "New password" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:608 +msgid "Confirm new password" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:612 +msgid "Strength indicator" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:613 +msgid "" +"Hint: The password should be at least seven characters long. To make it " +"stronger, use upper and lower case letters, numbers, and symbols like ! \" ? " +"$ % ^ & )." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:686 +msgid "Registration Form" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:686 +msgid "Register For This Site" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:691 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:858 +msgid "Username" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:695 +msgid "E-mail" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:706 +msgid "A password will be e-mailed to you." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:714 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:897 +msgid "Lost your password?" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:760 +#, php-format +msgid "" +"ERROR: Cookies are blocked due to unexpected output. For " +"help, please see this documentation or try the support forums." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:761 +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:765 +msgid "http://codex.wordpress.org/Cookies" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:761 +msgid "https://wordpress.org/support/" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:764 +#, php-format +msgid "" +"ERROR: Cookies are blocked or not supported by your " +"browser. You must enable cookies to use WordPress." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:783 +msgid "You have logged in successfully." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:817 +msgid "" +"Session expired. Please log in again. You will not move away from this page." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:821 +msgid "You are now logged out." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:823 +msgid "User registration is currently not allowed." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:825 +msgid "Check your e-mail for the confirmation link." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:827 +msgid "Check your e-mail for your new password." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:829 +msgid "Registration complete. Please check your e-mail." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:831 +msgid "" +"You have successfully updated WordPress! Please log back in " +"to experience the awesomeness." +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-rename-login-feature.php:848 +msgid "Log In" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-unlock-request.php:13 +msgid "http://wordpress.org/" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-unlock-request.php:48 +msgid "Please enter a valid email address" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-unlock-request.php:59 +msgid "User account not found!" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-unlock-request.php:70 +msgid "Error: No locked entry was found in the DB with your IP address range!" +msgstr "" + +#: all-in-one-wp-security/other-includes/wp-security-unlock-request.php:98 +msgid "Email Address" +msgstr "" diff --git a/plugins/all-in-one-wp-security-and-firewall/languages/index.html b/plugins/all-in-one-wp-security-and-firewall/languages/index.html new file mode 100644 index 0000000..e69de29 diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/index.html b/plugins/all-in-one-wp-security-and-firewall/lib/index.html new file mode 100644 index 0000000..e69de29 diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/LICENSE b/plugins/all-in-one-wp-security-and-firewall/lib/whois/LICENSE new file mode 100644 index 0000000..3912109 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/LICENSE @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/handler.template.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/handler.template.php new file mode 100644 index 0000000..6e0b6b9 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/handler.template.php @@ -0,0 +1,40 @@ + \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/npdata.ser b/plugins/all-in-one-wp-security-and-firewall/lib/whois/npdata.ser new file mode 100644 index 0000000..d7ce6d0 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/npdata.ser @@ -0,0 +1 @@ +a:6:{s:11:"map_nothing";a:27:{i:0;i:173;i:1;i:847;i:2;i:6150;i:3;i:6155;i:4;i:6156;i:5;i:6157;i:6;i:8203;i:7;i:8204;i:8;i:8205;i:9;i:8288;i:10;i:65024;i:11;i:65025;i:12;i:65026;i:13;i:65027;i:14;i:65028;i:15;i:65029;i:16;i:65030;i:17;i:65031;i:18;i:65032;i:19;i:65033;i:20;i:65034;i:21;i:65035;i:22;i:65036;i:23;i:65037;i:24;i:65038;i:25;i:65039;i:26;i:65279;}s:18:"general_prohibited";a:64:{i:0;i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:4;i:4;i:5;i:5;i:6;i:6;i:7;i:7;i:8;i:8;i:9;i:9;i:10;i:10;i:11;i:11;i:12;i:12;i:13;i:13;i:14;i:14;i:15;i:15;i:16;i:16;i:17;i:17;i:18;i:18;i:19;i:19;i:20;i:20;i:21;i:21;i:22;i:22;i:23;i:23;i:24;i:24;i:25;i:25;i:26;i:26;i:27;i:27;i:28;i:28;i:29;i:29;i:30;i:30;i:31;i:31;i:32;i:32;i:33;i:33;i:34;i:34;i:35;i:35;i:36;i:36;i:37;i:37;i:38;i:38;i:39;i:39;i:40;i:40;i:41;i:41;i:42;i:42;i:43;i:43;i:44;i:44;i:45;i:47;i:46;i:59;i:47;i:60;i:48;i:61;i:49;i:62;i:50;i:63;i:51;i:64;i:52;i:91;i:53;i:92;i:54;i:93;i:55;i:94;i:56;i:95;i:57;i:96;i:58;i:123;i:59;i:124;i:60;i:125;i:61;i:126;i:62;i:127;i:63;i:12290;}s:8:"prohibit";a:84:{i:0;i:160;i:1;i:5760;i:2;i:8192;i:3;i:8193;i:4;i:8194;i:5;i:8195;i:6;i:8196;i:7;i:8197;i:8;i:8198;i:9;i:8199;i:10;i:8200;i:11;i:8201;i:12;i:8202;i:13;i:8203;i:14;i:8239;i:15;i:8287;i:16;i:12288;i:17;i:1757;i:18;i:1807;i:19;i:6158;i:20;i:8204;i:21;i:8205;i:22;i:8232;i:23;i:8233;i:24;i:65279;i:25;i:65529;i:26;i:65530;i:27;i:65531;i:28;i:65532;i:29;i:65534;i:30;i:65535;i:31;i:131070;i:32;i:131071;i:33;i:196606;i:34;i:196607;i:35;i:262142;i:36;i:262143;i:37;i:327678;i:38;i:327679;i:39;i:393214;i:40;i:393215;i:41;i:458750;i:42;i:458751;i:43;i:524286;i:44;i:524287;i:45;i:589822;i:46;i:589823;i:47;i:655358;i:48;i:655359;i:49;i:720894;i:50;i:720895;i:51;i:786430;i:52;i:786431;i:53;i:851966;i:54;i:851967;i:55;i:917502;i:56;i:917503;i:57;i:983038;i:58;i:983039;i:59;i:1048574;i:60;i:1048575;i:61;i:1114110;i:62;i:1114111;i:63;i:65529;i:64;i:65530;i:65;i:65531;i:66;i:65532;i:67;i:65533;i:68;i:832;i:69;i:833;i:70;i:8206;i:71;i:8207;i:72;i:8234;i:73;i:8235;i:74;i:8236;i:75;i:8237;i:76;i:8238;i:77;i:8298;i:78;i:8299;i:79;i:8300;i:80;i:8301;i:81;i:8302;i:82;i:8303;i:83;i:917505;}s:15:"prohibit_ranges";a:10:{i:0;a:2:{i:0;i:128;i:1;i:159;}i:1;a:2:{i:0;i:8288;i:1;i:8303;}i:2;a:2:{i:0;i:119155;i:1;i:119162;}i:3;a:2:{i:0;i:57344;i:1;i:63743;}i:4;a:2:{i:0;i:983040;i:1;i:1048573;}i:5;a:2:{i:0;i:1048576;i:1;i:1114109;}i:6;a:2:{i:0;i:64976;i:1;i:65007;}i:7;a:2:{i:0;i:55296;i:1;i:57343;}i:8;a:2:{i:0;i:12272;i:1;i:12283;}i:9;a:2:{i:0;i:917536;i:1;i:917631;}}s:11:"replacemaps";a:1401:{i:65;a:1:{i:0;i:97;}i:66;a:1:{i:0;i:98;}i:67;a:1:{i:0;i:99;}i:68;a:1:{i:0;i:100;}i:69;a:1:{i:0;i:101;}i:70;a:1:{i:0;i:102;}i:71;a:1:{i:0;i:103;}i:72;a:1:{i:0;i:104;}i:73;a:1:{i:0;i:105;}i:74;a:1:{i:0;i:106;}i:75;a:1:{i:0;i:107;}i:76;a:1:{i:0;i:108;}i:77;a:1:{i:0;i:109;}i:78;a:1:{i:0;i:110;}i:79;a:1:{i:0;i:111;}i:80;a:1:{i:0;i:112;}i:81;a:1:{i:0;i:113;}i:82;a:1:{i:0;i:114;}i:83;a:1:{i:0;i:115;}i:84;a:1:{i:0;i:116;}i:85;a:1:{i:0;i:117;}i:86;a:1:{i:0;i:118;}i:87;a:1:{i:0;i:119;}i:88;a:1:{i:0;i:120;}i:89;a:1:{i:0;i:121;}i:90;a:1:{i:0;i:122;}i:181;a:1:{i:0;i:956;}i:192;a:1:{i:0;i:224;}i:193;a:1:{i:0;i:225;}i:194;a:1:{i:0;i:226;}i:195;a:1:{i:0;i:227;}i:196;a:1:{i:0;i:228;}i:197;a:1:{i:0;i:229;}i:198;a:1:{i:0;i:230;}i:199;a:1:{i:0;i:231;}i:200;a:1:{i:0;i:232;}i:201;a:1:{i:0;i:233;}i:202;a:1:{i:0;i:234;}i:203;a:1:{i:0;i:235;}i:204;a:1:{i:0;i:236;}i:205;a:1:{i:0;i:237;}i:206;a:1:{i:0;i:238;}i:207;a:1:{i:0;i:239;}i:208;a:1:{i:0;i:240;}i:209;a:1:{i:0;i:241;}i:210;a:1:{i:0;i:242;}i:211;a:1:{i:0;i:243;}i:212;a:1:{i:0;i:244;}i:213;a:1:{i:0;i:245;}i:214;a:1:{i:0;i:246;}i:216;a:1:{i:0;i:248;}i:217;a:1:{i:0;i:249;}i:218;a:1:{i:0;i:250;}i:219;a:1:{i:0;i:251;}i:220;a:1:{i:0;i:252;}i:221;a:1:{i:0;i:253;}i:222;a:1:{i:0;i:254;}i:223;a:2:{i:0;i:115;i:1;i:115;}i:256;a:1:{i:0;i:257;}i:258;a:1:{i:0;i:259;}i:260;a:1:{i:0;i:261;}i:262;a:1:{i:0;i:263;}i:264;a:1:{i:0;i:265;}i:266;a:1:{i:0;i:267;}i:268;a:1:{i:0;i:269;}i:270;a:1:{i:0;i:271;}i:272;a:1:{i:0;i:273;}i:274;a:1:{i:0;i:275;}i:276;a:1:{i:0;i:277;}i:278;a:1:{i:0;i:279;}i:280;a:1:{i:0;i:281;}i:282;a:1:{i:0;i:283;}i:284;a:1:{i:0;i:285;}i:286;a:1:{i:0;i:287;}i:288;a:1:{i:0;i:289;}i:290;a:1:{i:0;i:291;}i:292;a:1:{i:0;i:293;}i:294;a:1:{i:0;i:295;}i:296;a:1:{i:0;i:297;}i:298;a:1:{i:0;i:299;}i:300;a:1:{i:0;i:301;}i:302;a:1:{i:0;i:303;}i:304;a:2:{i:0;i:105;i:1;i:775;}i:306;a:1:{i:0;i:307;}i:308;a:1:{i:0;i:309;}i:310;a:1:{i:0;i:311;}i:313;a:1:{i:0;i:314;}i:315;a:1:{i:0;i:316;}i:317;a:1:{i:0;i:318;}i:319;a:1:{i:0;i:320;}i:321;a:1:{i:0;i:322;}i:323;a:1:{i:0;i:324;}i:325;a:1:{i:0;i:326;}i:327;a:1:{i:0;i:328;}i:329;a:2:{i:0;i:700;i:1;i:110;}i:330;a:1:{i:0;i:331;}i:332;a:1:{i:0;i:333;}i:334;a:1:{i:0;i:335;}i:336;a:1:{i:0;i:337;}i:338;a:1:{i:0;i:339;}i:340;a:1:{i:0;i:341;}i:342;a:1:{i:0;i:343;}i:344;a:1:{i:0;i:345;}i:346;a:1:{i:0;i:347;}i:348;a:1:{i:0;i:349;}i:350;a:1:{i:0;i:351;}i:352;a:1:{i:0;i:353;}i:354;a:1:{i:0;i:355;}i:356;a:1:{i:0;i:357;}i:358;a:1:{i:0;i:359;}i:360;a:1:{i:0;i:361;}i:362;a:1:{i:0;i:363;}i:364;a:1:{i:0;i:365;}i:366;a:1:{i:0;i:367;}i:368;a:1:{i:0;i:369;}i:370;a:1:{i:0;i:371;}i:372;a:1:{i:0;i:373;}i:374;a:1:{i:0;i:375;}i:376;a:1:{i:0;i:255;}i:377;a:1:{i:0;i:378;}i:379;a:1:{i:0;i:380;}i:381;a:1:{i:0;i:382;}i:383;a:1:{i:0;i:115;}i:385;a:1:{i:0;i:595;}i:386;a:1:{i:0;i:387;}i:388;a:1:{i:0;i:389;}i:390;a:1:{i:0;i:596;}i:391;a:1:{i:0;i:392;}i:393;a:1:{i:0;i:598;}i:394;a:1:{i:0;i:599;}i:395;a:1:{i:0;i:396;}i:398;a:1:{i:0;i:477;}i:399;a:1:{i:0;i:601;}i:400;a:1:{i:0;i:603;}i:401;a:1:{i:0;i:402;}i:403;a:1:{i:0;i:608;}i:404;a:1:{i:0;i:611;}i:406;a:1:{i:0;i:617;}i:407;a:1:{i:0;i:616;}i:408;a:1:{i:0;i:409;}i:412;a:1:{i:0;i:623;}i:413;a:1:{i:0;i:626;}i:415;a:1:{i:0;i:629;}i:416;a:1:{i:0;i:417;}i:418;a:1:{i:0;i:419;}i:420;a:1:{i:0;i:421;}i:422;a:1:{i:0;i:640;}i:423;a:1:{i:0;i:424;}i:425;a:1:{i:0;i:643;}i:428;a:1:{i:0;i:429;}i:430;a:1:{i:0;i:648;}i:431;a:1:{i:0;i:432;}i:433;a:1:{i:0;i:650;}i:434;a:1:{i:0;i:651;}i:435;a:1:{i:0;i:436;}i:437;a:1:{i:0;i:438;}i:439;a:1:{i:0;i:658;}i:440;a:1:{i:0;i:441;}i:444;a:1:{i:0;i:445;}i:452;a:1:{i:0;i:454;}i:453;a:1:{i:0;i:454;}i:455;a:1:{i:0;i:457;}i:456;a:1:{i:0;i:457;}i:458;a:1:{i:0;i:460;}i:459;a:1:{i:0;i:460;}i:461;a:1:{i:0;i:462;}i:463;a:1:{i:0;i:464;}i:465;a:1:{i:0;i:466;}i:467;a:1:{i:0;i:468;}i:469;a:1:{i:0;i:470;}i:471;a:1:{i:0;i:472;}i:473;a:1:{i:0;i:474;}i:475;a:1:{i:0;i:476;}i:478;a:1:{i:0;i:479;}i:480;a:1:{i:0;i:481;}i:482;a:1:{i:0;i:483;}i:484;a:1:{i:0;i:485;}i:486;a:1:{i:0;i:487;}i:488;a:1:{i:0;i:489;}i:490;a:1:{i:0;i:491;}i:492;a:1:{i:0;i:493;}i:494;a:1:{i:0;i:495;}i:496;a:2:{i:0;i:106;i:1;i:780;}i:497;a:1:{i:0;i:499;}i:498;a:1:{i:0;i:499;}i:500;a:1:{i:0;i:501;}i:502;a:1:{i:0;i:405;}i:503;a:1:{i:0;i:447;}i:504;a:1:{i:0;i:505;}i:506;a:1:{i:0;i:507;}i:508;a:1:{i:0;i:509;}i:510;a:1:{i:0;i:511;}i:512;a:1:{i:0;i:513;}i:514;a:1:{i:0;i:515;}i:516;a:1:{i:0;i:517;}i:518;a:1:{i:0;i:519;}i:520;a:1:{i:0;i:521;}i:522;a:1:{i:0;i:523;}i:524;a:1:{i:0;i:525;}i:526;a:1:{i:0;i:527;}i:528;a:1:{i:0;i:529;}i:530;a:1:{i:0;i:531;}i:532;a:1:{i:0;i:533;}i:534;a:1:{i:0;i:535;}i:536;a:1:{i:0;i:537;}i:538;a:1:{i:0;i:539;}i:540;a:1:{i:0;i:541;}i:542;a:1:{i:0;i:543;}i:544;a:1:{i:0;i:414;}i:546;a:1:{i:0;i:547;}i:548;a:1:{i:0;i:549;}i:550;a:1:{i:0;i:551;}i:552;a:1:{i:0;i:553;}i:554;a:1:{i:0;i:555;}i:556;a:1:{i:0;i:557;}i:558;a:1:{i:0;i:559;}i:560;a:1:{i:0;i:561;}i:562;a:1:{i:0;i:563;}i:837;a:1:{i:0;i:953;}i:890;a:2:{i:0;i:32;i:1;i:953;}i:902;a:1:{i:0;i:940;}i:904;a:1:{i:0;i:941;}i:905;a:1:{i:0;i:942;}i:906;a:1:{i:0;i:943;}i:908;a:1:{i:0;i:972;}i:910;a:1:{i:0;i:973;}i:911;a:1:{i:0;i:974;}i:912;a:3:{i:0;i:953;i:1;i:776;i:2;i:769;}i:913;a:1:{i:0;i:945;}i:914;a:1:{i:0;i:946;}i:915;a:1:{i:0;i:947;}i:916;a:1:{i:0;i:948;}i:917;a:1:{i:0;i:949;}i:918;a:1:{i:0;i:950;}i:919;a:1:{i:0;i:951;}i:920;a:1:{i:0;i:952;}i:921;a:1:{i:0;i:953;}i:922;a:1:{i:0;i:954;}i:923;a:1:{i:0;i:955;}i:924;a:1:{i:0;i:956;}i:925;a:1:{i:0;i:957;}i:926;a:1:{i:0;i:958;}i:927;a:1:{i:0;i:959;}i:928;a:1:{i:0;i:960;}i:929;a:1:{i:0;i:961;}i:931;a:1:{i:0;i:963;}i:932;a:1:{i:0;i:964;}i:933;a:1:{i:0;i:965;}i:934;a:1:{i:0;i:966;}i:935;a:1:{i:0;i:967;}i:936;a:1:{i:0;i:968;}i:937;a:1:{i:0;i:969;}i:938;a:1:{i:0;i:970;}i:939;a:1:{i:0;i:971;}i:944;a:3:{i:0;i:965;i:1;i:776;i:2;i:769;}i:962;a:1:{i:0;i:963;}i:976;a:1:{i:0;i:946;}i:977;a:1:{i:0;i:952;}i:978;a:1:{i:0;i:965;}i:979;a:1:{i:0;i:973;}i:980;a:1:{i:0;i:971;}i:981;a:1:{i:0;i:966;}i:982;a:1:{i:0;i:960;}i:984;a:1:{i:0;i:985;}i:986;a:1:{i:0;i:987;}i:988;a:1:{i:0;i:989;}i:990;a:1:{i:0;i:991;}i:992;a:1:{i:0;i:993;}i:994;a:1:{i:0;i:995;}i:996;a:1:{i:0;i:997;}i:998;a:1:{i:0;i:999;}i:1000;a:1:{i:0;i:1001;}i:1002;a:1:{i:0;i:1003;}i:1004;a:1:{i:0;i:1005;}i:1006;a:1:{i:0;i:1007;}i:1008;a:1:{i:0;i:954;}i:1009;a:1:{i:0;i:961;}i:1010;a:1:{i:0;i:963;}i:1012;a:1:{i:0;i:952;}i:1013;a:1:{i:0;i:949;}i:1024;a:1:{i:0;i:1104;}i:1025;a:1:{i:0;i:1105;}i:1026;a:1:{i:0;i:1106;}i:1027;a:1:{i:0;i:1107;}i:1028;a:1:{i:0;i:1108;}i:1029;a:1:{i:0;i:1109;}i:1030;a:1:{i:0;i:1110;}i:1031;a:1:{i:0;i:1111;}i:1032;a:1:{i:0;i:1112;}i:1033;a:1:{i:0;i:1113;}i:1034;a:1:{i:0;i:1114;}i:1035;a:1:{i:0;i:1115;}i:1036;a:1:{i:0;i:1116;}i:1037;a:1:{i:0;i:1117;}i:1038;a:1:{i:0;i:1118;}i:1039;a:1:{i:0;i:1119;}i:1040;a:1:{i:0;i:1072;}i:1041;a:1:{i:0;i:1073;}i:1042;a:1:{i:0;i:1074;}i:1043;a:1:{i:0;i:1075;}i:1044;a:1:{i:0;i:1076;}i:1045;a:1:{i:0;i:1077;}i:1046;a:1:{i:0;i:1078;}i:1047;a:1:{i:0;i:1079;}i:1048;a:1:{i:0;i:1080;}i:1049;a:1:{i:0;i:1081;}i:1050;a:1:{i:0;i:1082;}i:1051;a:1:{i:0;i:1083;}i:1052;a:1:{i:0;i:1084;}i:1053;a:1:{i:0;i:1085;}i:1054;a:1:{i:0;i:1086;}i:1055;a:1:{i:0;i:1087;}i:1056;a:1:{i:0;i:1088;}i:1057;a:1:{i:0;i:1089;}i:1058;a:1:{i:0;i:1090;}i:1059;a:1:{i:0;i:1091;}i:1060;a:1:{i:0;i:1092;}i:1061;a:1:{i:0;i:1093;}i:1062;a:1:{i:0;i:1094;}i:1063;a:1:{i:0;i:1095;}i:1064;a:1:{i:0;i:1096;}i:1065;a:1:{i:0;i:1097;}i:1066;a:1:{i:0;i:1098;}i:1067;a:1:{i:0;i:1099;}i:1068;a:1:{i:0;i:1100;}i:1069;a:1:{i:0;i:1101;}i:1070;a:1:{i:0;i:1102;}i:1071;a:1:{i:0;i:1103;}i:1120;a:1:{i:0;i:1121;}i:1122;a:1:{i:0;i:1123;}i:1124;a:1:{i:0;i:1125;}i:1126;a:1:{i:0;i:1127;}i:1128;a:1:{i:0;i:1129;}i:1130;a:1:{i:0;i:1131;}i:1132;a:1:{i:0;i:1133;}i:1134;a:1:{i:0;i:1135;}i:1136;a:1:{i:0;i:1137;}i:1138;a:1:{i:0;i:1139;}i:1140;a:1:{i:0;i:1141;}i:1142;a:1:{i:0;i:1143;}i:1144;a:1:{i:0;i:1145;}i:1146;a:1:{i:0;i:1147;}i:1148;a:1:{i:0;i:1149;}i:1150;a:1:{i:0;i:1151;}i:1152;a:1:{i:0;i:1153;}i:1162;a:1:{i:0;i:1163;}i:1164;a:1:{i:0;i:1165;}i:1166;a:1:{i:0;i:1167;}i:1168;a:1:{i:0;i:1169;}i:1170;a:1:{i:0;i:1171;}i:1172;a:1:{i:0;i:1173;}i:1174;a:1:{i:0;i:1175;}i:1176;a:1:{i:0;i:1177;}i:1178;a:1:{i:0;i:1179;}i:1180;a:1:{i:0;i:1181;}i:1182;a:1:{i:0;i:1183;}i:1184;a:1:{i:0;i:1185;}i:1186;a:1:{i:0;i:1187;}i:1188;a:1:{i:0;i:1189;}i:1190;a:1:{i:0;i:1191;}i:1192;a:1:{i:0;i:1193;}i:1194;a:1:{i:0;i:1195;}i:1196;a:1:{i:0;i:1197;}i:1198;a:1:{i:0;i:1199;}i:1200;a:1:{i:0;i:1201;}i:1202;a:1:{i:0;i:1203;}i:1204;a:1:{i:0;i:1205;}i:1206;a:1:{i:0;i:1207;}i:1208;a:1:{i:0;i:1209;}i:1210;a:1:{i:0;i:1211;}i:1212;a:1:{i:0;i:1213;}i:1214;a:1:{i:0;i:1215;}i:1217;a:1:{i:0;i:1218;}i:1219;a:1:{i:0;i:1220;}i:1221;a:1:{i:0;i:1222;}i:1223;a:1:{i:0;i:1224;}i:1225;a:1:{i:0;i:1226;}i:1227;a:1:{i:0;i:1228;}i:1229;a:1:{i:0;i:1230;}i:1232;a:1:{i:0;i:1233;}i:1234;a:1:{i:0;i:1235;}i:1236;a:1:{i:0;i:1237;}i:1238;a:1:{i:0;i:1239;}i:1240;a:1:{i:0;i:1241;}i:1242;a:1:{i:0;i:1243;}i:1244;a:1:{i:0;i:1245;}i:1246;a:1:{i:0;i:1247;}i:1248;a:1:{i:0;i:1249;}i:1250;a:1:{i:0;i:1251;}i:1252;a:1:{i:0;i:1253;}i:1254;a:1:{i:0;i:1255;}i:1256;a:1:{i:0;i:1257;}i:1258;a:1:{i:0;i:1259;}i:1260;a:1:{i:0;i:1261;}i:1262;a:1:{i:0;i:1263;}i:1264;a:1:{i:0;i:1265;}i:1266;a:1:{i:0;i:1267;}i:1268;a:1:{i:0;i:1269;}i:1272;a:1:{i:0;i:1273;}i:1280;a:1:{i:0;i:1281;}i:1282;a:1:{i:0;i:1283;}i:1284;a:1:{i:0;i:1285;}i:1286;a:1:{i:0;i:1287;}i:1288;a:1:{i:0;i:1289;}i:1290;a:1:{i:0;i:1291;}i:1292;a:1:{i:0;i:1293;}i:1294;a:1:{i:0;i:1295;}i:1329;a:1:{i:0;i:1377;}i:1330;a:1:{i:0;i:1378;}i:1331;a:1:{i:0;i:1379;}i:1332;a:1:{i:0;i:1380;}i:1333;a:1:{i:0;i:1381;}i:1334;a:1:{i:0;i:1382;}i:1335;a:1:{i:0;i:1383;}i:1336;a:1:{i:0;i:1384;}i:1337;a:1:{i:0;i:1385;}i:1338;a:1:{i:0;i:1386;}i:1339;a:1:{i:0;i:1387;}i:1340;a:1:{i:0;i:1388;}i:1341;a:1:{i:0;i:1389;}i:1342;a:1:{i:0;i:1390;}i:1343;a:1:{i:0;i:1391;}i:1344;a:1:{i:0;i:1392;}i:1345;a:1:{i:0;i:1393;}i:1346;a:1:{i:0;i:1394;}i:1347;a:1:{i:0;i:1395;}i:1348;a:1:{i:0;i:1396;}i:1349;a:1:{i:0;i:1397;}i:1350;a:1:{i:0;i:1398;}i:1351;a:1:{i:0;i:1399;}i:1352;a:1:{i:0;i:1400;}i:1353;a:1:{i:0;i:1401;}i:1354;a:1:{i:0;i:1402;}i:1355;a:1:{i:0;i:1403;}i:1356;a:1:{i:0;i:1404;}i:1357;a:1:{i:0;i:1405;}i:1358;a:1:{i:0;i:1406;}i:1359;a:1:{i:0;i:1407;}i:1360;a:1:{i:0;i:1408;}i:1361;a:1:{i:0;i:1409;}i:1362;a:1:{i:0;i:1410;}i:1363;a:1:{i:0;i:1411;}i:1364;a:1:{i:0;i:1412;}i:1365;a:1:{i:0;i:1413;}i:1366;a:1:{i:0;i:1414;}i:1415;a:2:{i:0;i:1381;i:1;i:1410;}i:7680;a:1:{i:0;i:7681;}i:7682;a:1:{i:0;i:7683;}i:7684;a:1:{i:0;i:7685;}i:7686;a:1:{i:0;i:7687;}i:7688;a:1:{i:0;i:7689;}i:7690;a:1:{i:0;i:7691;}i:7692;a:1:{i:0;i:7693;}i:7694;a:1:{i:0;i:7695;}i:7696;a:1:{i:0;i:7697;}i:7698;a:1:{i:0;i:7699;}i:7700;a:1:{i:0;i:7701;}i:7702;a:1:{i:0;i:7703;}i:7704;a:1:{i:0;i:7705;}i:7706;a:1:{i:0;i:7707;}i:7708;a:1:{i:0;i:7709;}i:7710;a:1:{i:0;i:7711;}i:7712;a:1:{i:0;i:7713;}i:7714;a:1:{i:0;i:7715;}i:7716;a:1:{i:0;i:7717;}i:7718;a:1:{i:0;i:7719;}i:7720;a:1:{i:0;i:7721;}i:7722;a:1:{i:0;i:7723;}i:7724;a:1:{i:0;i:7725;}i:7726;a:1:{i:0;i:7727;}i:7728;a:1:{i:0;i:7729;}i:7730;a:1:{i:0;i:7731;}i:7732;a:1:{i:0;i:7733;}i:7734;a:1:{i:0;i:7735;}i:7736;a:1:{i:0;i:7737;}i:7738;a:1:{i:0;i:7739;}i:7740;a:1:{i:0;i:7741;}i:7742;a:1:{i:0;i:7743;}i:7744;a:1:{i:0;i:7745;}i:7746;a:1:{i:0;i:7747;}i:7748;a:1:{i:0;i:7749;}i:7750;a:1:{i:0;i:7751;}i:7752;a:1:{i:0;i:7753;}i:7754;a:1:{i:0;i:7755;}i:7756;a:1:{i:0;i:7757;}i:7758;a:1:{i:0;i:7759;}i:7760;a:1:{i:0;i:7761;}i:7762;a:1:{i:0;i:7763;}i:7764;a:1:{i:0;i:7765;}i:7766;a:1:{i:0;i:7767;}i:7768;a:1:{i:0;i:7769;}i:7770;a:1:{i:0;i:7771;}i:7772;a:1:{i:0;i:7773;}i:7774;a:1:{i:0;i:7775;}i:7776;a:1:{i:0;i:7777;}i:7778;a:1:{i:0;i:7779;}i:7780;a:1:{i:0;i:7781;}i:7782;a:1:{i:0;i:7783;}i:7784;a:1:{i:0;i:7785;}i:7786;a:1:{i:0;i:7787;}i:7788;a:1:{i:0;i:7789;}i:7790;a:1:{i:0;i:7791;}i:7792;a:1:{i:0;i:7793;}i:7794;a:1:{i:0;i:7795;}i:7796;a:1:{i:0;i:7797;}i:7798;a:1:{i:0;i:7799;}i:7800;a:1:{i:0;i:7801;}i:7802;a:1:{i:0;i:7803;}i:7804;a:1:{i:0;i:7805;}i:7806;a:1:{i:0;i:7807;}i:7808;a:1:{i:0;i:7809;}i:7810;a:1:{i:0;i:7811;}i:7812;a:1:{i:0;i:7813;}i:7814;a:1:{i:0;i:7815;}i:7816;a:1:{i:0;i:7817;}i:7818;a:1:{i:0;i:7819;}i:7820;a:1:{i:0;i:7821;}i:7822;a:1:{i:0;i:7823;}i:7824;a:1:{i:0;i:7825;}i:7826;a:1:{i:0;i:7827;}i:7828;a:1:{i:0;i:7829;}i:7830;a:2:{i:0;i:104;i:1;i:817;}i:7831;a:2:{i:0;i:116;i:1;i:776;}i:7832;a:2:{i:0;i:119;i:1;i:778;}i:7833;a:2:{i:0;i:121;i:1;i:778;}i:7834;a:2:{i:0;i:97;i:1;i:702;}i:7835;a:1:{i:0;i:7777;}i:7840;a:1:{i:0;i:7841;}i:7842;a:1:{i:0;i:7843;}i:7844;a:1:{i:0;i:7845;}i:7846;a:1:{i:0;i:7847;}i:7848;a:1:{i:0;i:7849;}i:7850;a:1:{i:0;i:7851;}i:7852;a:1:{i:0;i:7853;}i:7854;a:1:{i:0;i:7855;}i:7856;a:1:{i:0;i:7857;}i:7858;a:1:{i:0;i:7859;}i:7860;a:1:{i:0;i:7861;}i:7862;a:1:{i:0;i:7863;}i:7864;a:1:{i:0;i:7865;}i:7866;a:1:{i:0;i:7867;}i:7868;a:1:{i:0;i:7869;}i:7870;a:1:{i:0;i:7871;}i:7872;a:1:{i:0;i:7873;}i:7874;a:1:{i:0;i:7875;}i:7876;a:1:{i:0;i:7877;}i:7878;a:1:{i:0;i:7879;}i:7880;a:1:{i:0;i:7881;}i:7882;a:1:{i:0;i:7883;}i:7884;a:1:{i:0;i:7885;}i:7886;a:1:{i:0;i:7887;}i:7888;a:1:{i:0;i:7889;}i:7890;a:1:{i:0;i:7891;}i:7892;a:1:{i:0;i:7893;}i:7894;a:1:{i:0;i:7895;}i:7896;a:1:{i:0;i:7897;}i:7898;a:1:{i:0;i:7899;}i:7900;a:1:{i:0;i:7901;}i:7902;a:1:{i:0;i:7903;}i:7904;a:1:{i:0;i:7905;}i:7906;a:1:{i:0;i:7907;}i:7908;a:1:{i:0;i:7909;}i:7910;a:1:{i:0;i:7911;}i:7912;a:1:{i:0;i:7913;}i:7914;a:1:{i:0;i:7915;}i:7916;a:1:{i:0;i:7917;}i:7918;a:1:{i:0;i:7919;}i:7920;a:1:{i:0;i:7921;}i:7922;a:1:{i:0;i:7923;}i:7924;a:1:{i:0;i:7925;}i:7926;a:1:{i:0;i:7927;}i:7928;a:1:{i:0;i:7929;}i:7944;a:1:{i:0;i:7936;}i:7945;a:1:{i:0;i:7937;}i:7946;a:1:{i:0;i:7938;}i:7947;a:1:{i:0;i:7939;}i:7948;a:1:{i:0;i:7940;}i:7949;a:1:{i:0;i:7941;}i:7950;a:1:{i:0;i:7942;}i:7951;a:1:{i:0;i:7943;}i:7960;a:1:{i:0;i:7952;}i:7961;a:1:{i:0;i:7953;}i:7962;a:1:{i:0;i:7954;}i:7963;a:1:{i:0;i:7955;}i:7964;a:1:{i:0;i:7956;}i:7965;a:1:{i:0;i:7957;}i:7976;a:1:{i:0;i:7968;}i:7977;a:1:{i:0;i:7969;}i:7978;a:1:{i:0;i:7970;}i:7979;a:1:{i:0;i:7971;}i:7980;a:1:{i:0;i:7972;}i:7981;a:1:{i:0;i:7973;}i:7982;a:1:{i:0;i:7974;}i:7983;a:1:{i:0;i:7975;}i:7992;a:1:{i:0;i:7984;}i:7993;a:1:{i:0;i:7985;}i:7994;a:1:{i:0;i:7986;}i:7995;a:1:{i:0;i:7987;}i:7996;a:1:{i:0;i:7988;}i:7997;a:1:{i:0;i:7989;}i:7998;a:1:{i:0;i:7990;}i:7999;a:1:{i:0;i:7991;}i:8008;a:1:{i:0;i:8000;}i:8009;a:1:{i:0;i:8001;}i:8010;a:1:{i:0;i:8002;}i:8011;a:1:{i:0;i:8003;}i:8012;a:1:{i:0;i:8004;}i:8013;a:1:{i:0;i:8005;}i:8016;a:2:{i:0;i:965;i:1;i:787;}i:8018;a:3:{i:0;i:965;i:1;i:787;i:2;i:768;}i:8020;a:3:{i:0;i:965;i:1;i:787;i:2;i:769;}i:8022;a:3:{i:0;i:965;i:1;i:787;i:2;i:834;}i:8025;a:1:{i:0;i:8017;}i:8027;a:1:{i:0;i:8019;}i:8029;a:1:{i:0;i:8021;}i:8031;a:1:{i:0;i:8023;}i:8040;a:1:{i:0;i:8032;}i:8041;a:1:{i:0;i:8033;}i:8042;a:1:{i:0;i:8034;}i:8043;a:1:{i:0;i:8035;}i:8044;a:1:{i:0;i:8036;}i:8045;a:1:{i:0;i:8037;}i:8046;a:1:{i:0;i:8038;}i:8047;a:1:{i:0;i:8039;}i:8064;a:2:{i:0;i:7936;i:1;i:953;}i:8065;a:2:{i:0;i:7937;i:1;i:953;}i:8066;a:2:{i:0;i:7938;i:1;i:953;}i:8067;a:2:{i:0;i:7939;i:1;i:953;}i:8068;a:2:{i:0;i:7940;i:1;i:953;}i:8069;a:2:{i:0;i:7941;i:1;i:953;}i:8070;a:2:{i:0;i:7942;i:1;i:953;}i:8071;a:2:{i:0;i:7943;i:1;i:953;}i:8072;a:2:{i:0;i:7936;i:1;i:953;}i:8073;a:2:{i:0;i:7937;i:1;i:953;}i:8074;a:2:{i:0;i:7938;i:1;i:953;}i:8075;a:2:{i:0;i:7939;i:1;i:953;}i:8076;a:2:{i:0;i:7940;i:1;i:953;}i:8077;a:2:{i:0;i:7941;i:1;i:953;}i:8078;a:2:{i:0;i:7942;i:1;i:953;}i:8079;a:2:{i:0;i:7943;i:1;i:953;}i:8080;a:2:{i:0;i:7968;i:1;i:953;}i:8081;a:2:{i:0;i:7969;i:1;i:953;}i:8082;a:2:{i:0;i:7970;i:1;i:953;}i:8083;a:2:{i:0;i:7971;i:1;i:953;}i:8084;a:2:{i:0;i:7972;i:1;i:953;}i:8085;a:2:{i:0;i:7973;i:1;i:953;}i:8086;a:2:{i:0;i:7974;i:1;i:953;}i:8087;a:2:{i:0;i:7975;i:1;i:953;}i:8088;a:2:{i:0;i:7968;i:1;i:953;}i:8089;a:2:{i:0;i:7969;i:1;i:953;}i:8090;a:2:{i:0;i:7970;i:1;i:953;}i:8091;a:2:{i:0;i:7971;i:1;i:953;}i:8092;a:2:{i:0;i:7972;i:1;i:953;}i:8093;a:2:{i:0;i:7973;i:1;i:953;}i:8094;a:2:{i:0;i:7974;i:1;i:953;}i:8095;a:2:{i:0;i:7975;i:1;i:953;}i:8096;a:2:{i:0;i:8032;i:1;i:953;}i:8097;a:2:{i:0;i:8033;i:1;i:953;}i:8098;a:2:{i:0;i:8034;i:1;i:953;}i:8099;a:2:{i:0;i:8035;i:1;i:953;}i:8100;a:2:{i:0;i:8036;i:1;i:953;}i:8101;a:2:{i:0;i:8037;i:1;i:953;}i:8102;a:2:{i:0;i:8038;i:1;i:953;}i:8103;a:2:{i:0;i:8039;i:1;i:953;}i:8104;a:2:{i:0;i:8032;i:1;i:953;}i:8105;a:2:{i:0;i:8033;i:1;i:953;}i:8106;a:2:{i:0;i:8034;i:1;i:953;}i:8107;a:2:{i:0;i:8035;i:1;i:953;}i:8108;a:2:{i:0;i:8036;i:1;i:953;}i:8109;a:2:{i:0;i:8037;i:1;i:953;}i:8110;a:2:{i:0;i:8038;i:1;i:953;}i:8111;a:2:{i:0;i:8039;i:1;i:953;}i:8114;a:2:{i:0;i:8048;i:1;i:953;}i:8115;a:2:{i:0;i:945;i:1;i:953;}i:8116;a:2:{i:0;i:940;i:1;i:953;}i:8118;a:2:{i:0;i:945;i:1;i:834;}i:8119;a:3:{i:0;i:945;i:1;i:834;i:2;i:953;}i:8120;a:1:{i:0;i:8112;}i:8121;a:1:{i:0;i:8113;}i:8122;a:1:{i:0;i:8048;}i:8123;a:1:{i:0;i:8049;}i:8124;a:2:{i:0;i:945;i:1;i:953;}i:8126;a:1:{i:0;i:953;}i:8130;a:2:{i:0;i:8052;i:1;i:953;}i:8131;a:2:{i:0;i:951;i:1;i:953;}i:8132;a:2:{i:0;i:942;i:1;i:953;}i:8134;a:2:{i:0;i:951;i:1;i:834;}i:8135;a:3:{i:0;i:951;i:1;i:834;i:2;i:953;}i:8136;a:1:{i:0;i:8050;}i:8137;a:1:{i:0;i:8051;}i:8138;a:1:{i:0;i:8052;}i:8139;a:1:{i:0;i:8053;}i:8140;a:2:{i:0;i:951;i:1;i:953;}i:8146;a:3:{i:0;i:953;i:1;i:776;i:2;i:768;}i:8147;a:3:{i:0;i:953;i:1;i:776;i:2;i:769;}i:8150;a:2:{i:0;i:953;i:1;i:834;}i:8151;a:3:{i:0;i:953;i:1;i:776;i:2;i:834;}i:8152;a:1:{i:0;i:8144;}i:8153;a:1:{i:0;i:8145;}i:8154;a:1:{i:0;i:8054;}i:8155;a:1:{i:0;i:8055;}i:8162;a:3:{i:0;i:965;i:1;i:776;i:2;i:768;}i:8163;a:3:{i:0;i:965;i:1;i:776;i:2;i:769;}i:8164;a:2:{i:0;i:961;i:1;i:787;}i:8166;a:2:{i:0;i:965;i:1;i:834;}i:8167;a:3:{i:0;i:965;i:1;i:776;i:2;i:834;}i:8168;a:1:{i:0;i:8160;}i:8169;a:1:{i:0;i:8161;}i:8170;a:1:{i:0;i:8058;}i:8171;a:1:{i:0;i:8059;}i:8172;a:1:{i:0;i:8165;}i:8178;a:2:{i:0;i:8060;i:1;i:953;}i:8179;a:2:{i:0;i:969;i:1;i:953;}i:8180;a:2:{i:0;i:974;i:1;i:953;}i:8182;a:2:{i:0;i:969;i:1;i:834;}i:8183;a:3:{i:0;i:969;i:1;i:834;i:2;i:953;}i:8184;a:1:{i:0;i:8056;}i:8185;a:1:{i:0;i:8057;}i:8186;a:1:{i:0;i:8060;}i:8187;a:1:{i:0;i:8061;}i:8188;a:2:{i:0;i:969;i:1;i:953;}i:8360;a:2:{i:0;i:114;i:1;i:115;}i:8450;a:1:{i:0;i:99;}i:8451;a:2:{i:0;i:176;i:1;i:99;}i:8455;a:1:{i:0;i:603;}i:8457;a:2:{i:0;i:176;i:1;i:102;}i:8459;a:1:{i:0;i:104;}i:8460;a:1:{i:0;i:104;}i:8461;a:1:{i:0;i:104;}i:8464;a:1:{i:0;i:105;}i:8465;a:1:{i:0;i:105;}i:8466;a:1:{i:0;i:108;}i:8469;a:1:{i:0;i:110;}i:8470;a:2:{i:0;i:110;i:1;i:111;}i:8473;a:1:{i:0;i:112;}i:8474;a:1:{i:0;i:113;}i:8475;a:1:{i:0;i:114;}i:8476;a:1:{i:0;i:114;}i:8477;a:1:{i:0;i:114;}i:8480;a:2:{i:0;i:115;i:1;i:109;}i:8481;a:3:{i:0;i:116;i:1;i:101;i:2;i:108;}i:8482;a:2:{i:0;i:116;i:1;i:109;}i:8484;a:1:{i:0;i:122;}i:8486;a:1:{i:0;i:969;}i:8488;a:1:{i:0;i:122;}i:8490;a:1:{i:0;i:107;}i:8491;a:1:{i:0;i:229;}i:8492;a:1:{i:0;i:98;}i:8493;a:1:{i:0;i:99;}i:8496;a:1:{i:0;i:101;}i:8497;a:1:{i:0;i:102;}i:8499;a:1:{i:0;i:109;}i:8510;a:1:{i:0;i:947;}i:8511;a:1:{i:0;i:960;}i:8517;a:1:{i:0;i:100;}i:8544;a:1:{i:0;i:8560;}i:8545;a:1:{i:0;i:8561;}i:8546;a:1:{i:0;i:8562;}i:8547;a:1:{i:0;i:8563;}i:8548;a:1:{i:0;i:8564;}i:8549;a:1:{i:0;i:8565;}i:8550;a:1:{i:0;i:8566;}i:8551;a:1:{i:0;i:8567;}i:8552;a:1:{i:0;i:8568;}i:8553;a:1:{i:0;i:8569;}i:8554;a:1:{i:0;i:8570;}i:8555;a:1:{i:0;i:8571;}i:8556;a:1:{i:0;i:8572;}i:8557;a:1:{i:0;i:8573;}i:8558;a:1:{i:0;i:8574;}i:8559;a:1:{i:0;i:8575;}i:9398;a:1:{i:0;i:9424;}i:9399;a:1:{i:0;i:9425;}i:9400;a:1:{i:0;i:9426;}i:9401;a:1:{i:0;i:9427;}i:9402;a:1:{i:0;i:9428;}i:9403;a:1:{i:0;i:9429;}i:9404;a:1:{i:0;i:9430;}i:9405;a:1:{i:0;i:9431;}i:9406;a:1:{i:0;i:9432;}i:9407;a:1:{i:0;i:9433;}i:9408;a:1:{i:0;i:9434;}i:9409;a:1:{i:0;i:9435;}i:9410;a:1:{i:0;i:9436;}i:9411;a:1:{i:0;i:9437;}i:9412;a:1:{i:0;i:9438;}i:9413;a:1:{i:0;i:9439;}i:9414;a:1:{i:0;i:9440;}i:9415;a:1:{i:0;i:9441;}i:9416;a:1:{i:0;i:9442;}i:9417;a:1:{i:0;i:9443;}i:9418;a:1:{i:0;i:9444;}i:9419;a:1:{i:0;i:9445;}i:9420;a:1:{i:0;i:9446;}i:9421;a:1:{i:0;i:9447;}i:9422;a:1:{i:0;i:9448;}i:9423;a:1:{i:0;i:9449;}i:13169;a:3:{i:0;i:104;i:1;i:112;i:2;i:97;}i:13171;a:2:{i:0;i:97;i:1;i:117;}i:13173;a:2:{i:0;i:111;i:1;i:118;}i:13184;a:2:{i:0;i:112;i:1;i:97;}i:13185;a:2:{i:0;i:110;i:1;i:97;}i:13186;a:2:{i:0;i:956;i:1;i:97;}i:13187;a:2:{i:0;i:109;i:1;i:97;}i:13188;a:2:{i:0;i:107;i:1;i:97;}i:13189;a:2:{i:0;i:107;i:1;i:98;}i:13190;a:2:{i:0;i:109;i:1;i:98;}i:13191;a:2:{i:0;i:103;i:1;i:98;}i:13194;a:2:{i:0;i:112;i:1;i:102;}i:13195;a:2:{i:0;i:110;i:1;i:102;}i:13196;a:2:{i:0;i:956;i:1;i:102;}i:13200;a:2:{i:0;i:104;i:1;i:122;}i:13201;a:3:{i:0;i:107;i:1;i:104;i:2;i:122;}i:13202;a:3:{i:0;i:109;i:1;i:104;i:2;i:122;}i:13203;a:3:{i:0;i:103;i:1;i:104;i:2;i:122;}i:13204;a:3:{i:0;i:116;i:1;i:104;i:2;i:122;}i:13225;a:2:{i:0;i:112;i:1;i:97;}i:13226;a:3:{i:0;i:107;i:1;i:112;i:2;i:97;}i:13227;a:3:{i:0;i:109;i:1;i:112;i:2;i:97;}i:13228;a:3:{i:0;i:103;i:1;i:112;i:2;i:97;}i:13236;a:2:{i:0;i:112;i:1;i:118;}i:13237;a:2:{i:0;i:110;i:1;i:118;}i:13238;a:2:{i:0;i:956;i:1;i:118;}i:13239;a:2:{i:0;i:109;i:1;i:118;}i:13240;a:2:{i:0;i:107;i:1;i:118;}i:13241;a:2:{i:0;i:109;i:1;i:118;}i:13242;a:2:{i:0;i:112;i:1;i:119;}i:13243;a:2:{i:0;i:110;i:1;i:119;}i:13244;a:2:{i:0;i:956;i:1;i:119;}i:13245;a:2:{i:0;i:109;i:1;i:119;}i:13246;a:2:{i:0;i:107;i:1;i:119;}i:13247;a:2:{i:0;i:109;i:1;i:119;}i:13248;a:2:{i:0;i:107;i:1;i:969;}i:13249;a:2:{i:0;i:109;i:1;i:969;}i:13251;a:2:{i:0;i:98;i:1;i:113;}i:13254;a:4:{i:0;i:99;i:1;i:8725;i:2;i:107;i:3;i:103;}i:13255;a:3:{i:0;i:99;i:1;i:111;i:2;i:46;}i:13256;a:2:{i:0;i:100;i:1;i:98;}i:13257;a:2:{i:0;i:103;i:1;i:121;}i:13259;a:2:{i:0;i:104;i:1;i:112;}i:13261;a:2:{i:0;i:107;i:1;i:107;}i:13262;a:2:{i:0;i:107;i:1;i:109;}i:13271;a:2:{i:0;i:112;i:1;i:104;}i:13273;a:3:{i:0;i:112;i:1;i:112;i:2;i:109;}i:13274;a:2:{i:0;i:112;i:1;i:114;}i:13276;a:2:{i:0;i:115;i:1;i:118;}i:13277;a:2:{i:0;i:119;i:1;i:98;}i:64256;a:2:{i:0;i:102;i:1;i:102;}i:64257;a:2:{i:0;i:102;i:1;i:105;}i:64258;a:2:{i:0;i:102;i:1;i:108;}i:64259;a:3:{i:0;i:102;i:1;i:102;i:2;i:105;}i:64260;a:3:{i:0;i:102;i:1;i:102;i:2;i:108;}i:64261;a:2:{i:0;i:115;i:1;i:116;}i:64262;a:2:{i:0;i:115;i:1;i:116;}i:64275;a:2:{i:0;i:1396;i:1;i:1398;}i:64276;a:2:{i:0;i:1396;i:1;i:1381;}i:64277;a:2:{i:0;i:1396;i:1;i:1387;}i:64278;a:2:{i:0;i:1406;i:1;i:1398;}i:64279;a:2:{i:0;i:1396;i:1;i:1389;}i:65313;a:1:{i:0;i:65345;}i:65314;a:1:{i:0;i:65346;}i:65315;a:1:{i:0;i:65347;}i:65316;a:1:{i:0;i:65348;}i:65317;a:1:{i:0;i:65349;}i:65318;a:1:{i:0;i:65350;}i:65319;a:1:{i:0;i:65351;}i:65320;a:1:{i:0;i:65352;}i:65321;a:1:{i:0;i:65353;}i:65322;a:1:{i:0;i:65354;}i:65323;a:1:{i:0;i:65355;}i:65324;a:1:{i:0;i:65356;}i:65325;a:1:{i:0;i:65357;}i:65326;a:1:{i:0;i:65358;}i:65327;a:1:{i:0;i:65359;}i:65328;a:1:{i:0;i:65360;}i:65329;a:1:{i:0;i:65361;}i:65330;a:1:{i:0;i:65362;}i:65331;a:1:{i:0;i:65363;}i:65332;a:1:{i:0;i:65364;}i:65333;a:1:{i:0;i:65365;}i:65334;a:1:{i:0;i:65366;}i:65335;a:1:{i:0;i:65367;}i:65336;a:1:{i:0;i:65368;}i:65337;a:1:{i:0;i:65369;}i:65338;a:1:{i:0;i:65370;}i:66560;a:1:{i:0;i:66600;}i:66561;a:1:{i:0;i:66601;}i:66562;a:1:{i:0;i:66602;}i:66563;a:1:{i:0;i:66603;}i:66564;a:1:{i:0;i:66604;}i:66565;a:1:{i:0;i:66605;}i:66566;a:1:{i:0;i:66606;}i:66567;a:1:{i:0;i:66607;}i:66568;a:1:{i:0;i:66608;}i:66569;a:1:{i:0;i:66609;}i:66570;a:1:{i:0;i:66610;}i:66571;a:1:{i:0;i:66611;}i:66572;a:1:{i:0;i:66612;}i:66573;a:1:{i:0;i:66613;}i:66574;a:1:{i:0;i:66614;}i:66575;a:1:{i:0;i:66615;}i:66576;a:1:{i:0;i:66616;}i:66577;a:1:{i:0;i:66617;}i:66578;a:1:{i:0;i:66618;}i:66579;a:1:{i:0;i:66619;}i:66580;a:1:{i:0;i:66620;}i:66581;a:1:{i:0;i:66621;}i:66582;a:1:{i:0;i:66622;}i:66583;a:1:{i:0;i:66623;}i:66584;a:1:{i:0;i:66624;}i:66585;a:1:{i:0;i:66625;}i:66586;a:1:{i:0;i:66626;}i:66587;a:1:{i:0;i:66627;}i:66588;a:1:{i:0;i:66628;}i:66589;a:1:{i:0;i:66629;}i:66590;a:1:{i:0;i:66630;}i:66591;a:1:{i:0;i:66631;}i:66592;a:1:{i:0;i:66632;}i:66593;a:1:{i:0;i:66633;}i:66594;a:1:{i:0;i:66634;}i:66595;a:1:{i:0;i:66635;}i:66596;a:1:{i:0;i:66636;}i:66597;a:1:{i:0;i:66637;}i:119808;a:1:{i:0;i:97;}i:119809;a:1:{i:0;i:98;}i:119810;a:1:{i:0;i:99;}i:119811;a:1:{i:0;i:100;}i:119812;a:1:{i:0;i:101;}i:119813;a:1:{i:0;i:102;}i:119814;a:1:{i:0;i:103;}i:119815;a:1:{i:0;i:104;}i:119816;a:1:{i:0;i:105;}i:119817;a:1:{i:0;i:106;}i:119818;a:1:{i:0;i:107;}i:119819;a:1:{i:0;i:108;}i:119820;a:1:{i:0;i:109;}i:119821;a:1:{i:0;i:110;}i:119822;a:1:{i:0;i:111;}i:119823;a:1:{i:0;i:112;}i:119824;a:1:{i:0;i:113;}i:119825;a:1:{i:0;i:114;}i:119826;a:1:{i:0;i:115;}i:119827;a:1:{i:0;i:116;}i:119828;a:1:{i:0;i:117;}i:119829;a:1:{i:0;i:118;}i:119830;a:1:{i:0;i:119;}i:119831;a:1:{i:0;i:120;}i:119832;a:1:{i:0;i:121;}i:119833;a:1:{i:0;i:122;}i:119860;a:1:{i:0;i:97;}i:119861;a:1:{i:0;i:98;}i:119862;a:1:{i:0;i:99;}i:119863;a:1:{i:0;i:100;}i:119864;a:1:{i:0;i:101;}i:119865;a:1:{i:0;i:102;}i:119866;a:1:{i:0;i:103;}i:119867;a:1:{i:0;i:104;}i:119868;a:1:{i:0;i:105;}i:119869;a:1:{i:0;i:106;}i:119870;a:1:{i:0;i:107;}i:119871;a:1:{i:0;i:108;}i:119872;a:1:{i:0;i:109;}i:119873;a:1:{i:0;i:110;}i:119874;a:1:{i:0;i:111;}i:119875;a:1:{i:0;i:112;}i:119876;a:1:{i:0;i:113;}i:119877;a:1:{i:0;i:114;}i:119878;a:1:{i:0;i:115;}i:119879;a:1:{i:0;i:116;}i:119880;a:1:{i:0;i:117;}i:119881;a:1:{i:0;i:118;}i:119882;a:1:{i:0;i:119;}i:119883;a:1:{i:0;i:120;}i:119884;a:1:{i:0;i:121;}i:119885;a:1:{i:0;i:122;}i:119912;a:1:{i:0;i:97;}i:119913;a:1:{i:0;i:98;}i:119914;a:1:{i:0;i:99;}i:119915;a:1:{i:0;i:100;}i:119916;a:1:{i:0;i:101;}i:119917;a:1:{i:0;i:102;}i:119918;a:1:{i:0;i:103;}i:119919;a:1:{i:0;i:104;}i:119920;a:1:{i:0;i:105;}i:119921;a:1:{i:0;i:106;}i:119922;a:1:{i:0;i:107;}i:119923;a:1:{i:0;i:108;}i:119924;a:1:{i:0;i:109;}i:119925;a:1:{i:0;i:110;}i:119926;a:1:{i:0;i:111;}i:119927;a:1:{i:0;i:112;}i:119928;a:1:{i:0;i:113;}i:119929;a:1:{i:0;i:114;}i:119930;a:1:{i:0;i:115;}i:119931;a:1:{i:0;i:116;}i:119932;a:1:{i:0;i:117;}i:119933;a:1:{i:0;i:118;}i:119934;a:1:{i:0;i:119;}i:119935;a:1:{i:0;i:120;}i:119936;a:1:{i:0;i:121;}i:119937;a:1:{i:0;i:122;}i:119964;a:1:{i:0;i:97;}i:119966;a:1:{i:0;i:99;}i:119967;a:1:{i:0;i:100;}i:119970;a:1:{i:0;i:103;}i:119973;a:1:{i:0;i:106;}i:119974;a:1:{i:0;i:107;}i:119977;a:1:{i:0;i:110;}i:119978;a:1:{i:0;i:111;}i:119979;a:1:{i:0;i:112;}i:119980;a:1:{i:0;i:113;}i:119982;a:1:{i:0;i:115;}i:119983;a:1:{i:0;i:116;}i:119984;a:1:{i:0;i:117;}i:119985;a:1:{i:0;i:118;}i:119986;a:1:{i:0;i:119;}i:119987;a:1:{i:0;i:120;}i:119988;a:1:{i:0;i:121;}i:119989;a:1:{i:0;i:122;}i:120016;a:1:{i:0;i:97;}i:120017;a:1:{i:0;i:98;}i:120018;a:1:{i:0;i:99;}i:120019;a:1:{i:0;i:100;}i:120020;a:1:{i:0;i:101;}i:120021;a:1:{i:0;i:102;}i:120022;a:1:{i:0;i:103;}i:120023;a:1:{i:0;i:104;}i:120024;a:1:{i:0;i:105;}i:120025;a:1:{i:0;i:106;}i:120026;a:1:{i:0;i:107;}i:120027;a:1:{i:0;i:108;}i:120028;a:1:{i:0;i:109;}i:120029;a:1:{i:0;i:110;}i:120030;a:1:{i:0;i:111;}i:120031;a:1:{i:0;i:112;}i:120032;a:1:{i:0;i:113;}i:120033;a:1:{i:0;i:114;}i:120034;a:1:{i:0;i:115;}i:120035;a:1:{i:0;i:116;}i:120036;a:1:{i:0;i:117;}i:120037;a:1:{i:0;i:118;}i:120038;a:1:{i:0;i:119;}i:120039;a:1:{i:0;i:120;}i:120040;a:1:{i:0;i:121;}i:120041;a:1:{i:0;i:122;}i:120068;a:1:{i:0;i:97;}i:120069;a:1:{i:0;i:98;}i:120071;a:1:{i:0;i:100;}i:120072;a:1:{i:0;i:101;}i:120073;a:1:{i:0;i:102;}i:120074;a:1:{i:0;i:103;}i:120077;a:1:{i:0;i:106;}i:120078;a:1:{i:0;i:107;}i:120079;a:1:{i:0;i:108;}i:120080;a:1:{i:0;i:109;}i:120081;a:1:{i:0;i:110;}i:120082;a:1:{i:0;i:111;}i:120083;a:1:{i:0;i:112;}i:120084;a:1:{i:0;i:113;}i:120086;a:1:{i:0;i:115;}i:120087;a:1:{i:0;i:116;}i:120088;a:1:{i:0;i:117;}i:120089;a:1:{i:0;i:118;}i:120090;a:1:{i:0;i:119;}i:120091;a:1:{i:0;i:120;}i:120092;a:1:{i:0;i:121;}i:120120;a:1:{i:0;i:97;}i:120121;a:1:{i:0;i:98;}i:120123;a:1:{i:0;i:100;}i:120124;a:1:{i:0;i:101;}i:120125;a:1:{i:0;i:102;}i:120126;a:1:{i:0;i:103;}i:120128;a:1:{i:0;i:105;}i:120129;a:1:{i:0;i:106;}i:120130;a:1:{i:0;i:107;}i:120131;a:1:{i:0;i:108;}i:120132;a:1:{i:0;i:109;}i:120134;a:1:{i:0;i:111;}i:120138;a:1:{i:0;i:115;}i:120139;a:1:{i:0;i:116;}i:120140;a:1:{i:0;i:117;}i:120141;a:1:{i:0;i:118;}i:120142;a:1:{i:0;i:119;}i:120143;a:1:{i:0;i:120;}i:120144;a:1:{i:0;i:121;}i:120172;a:1:{i:0;i:97;}i:120173;a:1:{i:0;i:98;}i:120174;a:1:{i:0;i:99;}i:120175;a:1:{i:0;i:100;}i:120176;a:1:{i:0;i:101;}i:120177;a:1:{i:0;i:102;}i:120178;a:1:{i:0;i:103;}i:120179;a:1:{i:0;i:104;}i:120180;a:1:{i:0;i:105;}i:120181;a:1:{i:0;i:106;}i:120182;a:1:{i:0;i:107;}i:120183;a:1:{i:0;i:108;}i:120184;a:1:{i:0;i:109;}i:120185;a:1:{i:0;i:110;}i:120186;a:1:{i:0;i:111;}i:120187;a:1:{i:0;i:112;}i:120188;a:1:{i:0;i:113;}i:120189;a:1:{i:0;i:114;}i:120190;a:1:{i:0;i:115;}i:120191;a:1:{i:0;i:116;}i:120192;a:1:{i:0;i:117;}i:120193;a:1:{i:0;i:118;}i:120194;a:1:{i:0;i:119;}i:120195;a:1:{i:0;i:120;}i:120196;a:1:{i:0;i:121;}i:120197;a:1:{i:0;i:122;}i:120224;a:1:{i:0;i:97;}i:120225;a:1:{i:0;i:98;}i:120226;a:1:{i:0;i:99;}i:120227;a:1:{i:0;i:100;}i:120228;a:1:{i:0;i:101;}i:120229;a:1:{i:0;i:102;}i:120230;a:1:{i:0;i:103;}i:120231;a:1:{i:0;i:104;}i:120232;a:1:{i:0;i:105;}i:120233;a:1:{i:0;i:106;}i:120234;a:1:{i:0;i:107;}i:120235;a:1:{i:0;i:108;}i:120236;a:1:{i:0;i:109;}i:120237;a:1:{i:0;i:110;}i:120238;a:1:{i:0;i:111;}i:120239;a:1:{i:0;i:112;}i:120240;a:1:{i:0;i:113;}i:120241;a:1:{i:0;i:114;}i:120242;a:1:{i:0;i:115;}i:120243;a:1:{i:0;i:116;}i:120244;a:1:{i:0;i:117;}i:120245;a:1:{i:0;i:118;}i:120246;a:1:{i:0;i:119;}i:120247;a:1:{i:0;i:120;}i:120248;a:1:{i:0;i:121;}i:120249;a:1:{i:0;i:122;}i:120276;a:1:{i:0;i:97;}i:120277;a:1:{i:0;i:98;}i:120278;a:1:{i:0;i:99;}i:120279;a:1:{i:0;i:100;}i:120280;a:1:{i:0;i:101;}i:120281;a:1:{i:0;i:102;}i:120282;a:1:{i:0;i:103;}i:120283;a:1:{i:0;i:104;}i:120284;a:1:{i:0;i:105;}i:120285;a:1:{i:0;i:106;}i:120286;a:1:{i:0;i:107;}i:120287;a:1:{i:0;i:108;}i:120288;a:1:{i:0;i:109;}i:120289;a:1:{i:0;i:110;}i:120290;a:1:{i:0;i:111;}i:120291;a:1:{i:0;i:112;}i:120292;a:1:{i:0;i:113;}i:120293;a:1:{i:0;i:114;}i:120294;a:1:{i:0;i:115;}i:120295;a:1:{i:0;i:116;}i:120296;a:1:{i:0;i:117;}i:120297;a:1:{i:0;i:118;}i:120298;a:1:{i:0;i:119;}i:120299;a:1:{i:0;i:120;}i:120300;a:1:{i:0;i:121;}i:120301;a:1:{i:0;i:122;}i:120328;a:1:{i:0;i:97;}i:120329;a:1:{i:0;i:98;}i:120330;a:1:{i:0;i:99;}i:120331;a:1:{i:0;i:100;}i:120332;a:1:{i:0;i:101;}i:120333;a:1:{i:0;i:102;}i:120334;a:1:{i:0;i:103;}i:120335;a:1:{i:0;i:104;}i:120336;a:1:{i:0;i:105;}i:120337;a:1:{i:0;i:106;}i:120338;a:1:{i:0;i:107;}i:120339;a:1:{i:0;i:108;}i:120340;a:1:{i:0;i:109;}i:120341;a:1:{i:0;i:110;}i:120342;a:1:{i:0;i:111;}i:120343;a:1:{i:0;i:112;}i:120344;a:1:{i:0;i:113;}i:120345;a:1:{i:0;i:114;}i:120346;a:1:{i:0;i:115;}i:120347;a:1:{i:0;i:116;}i:120348;a:1:{i:0;i:117;}i:120349;a:1:{i:0;i:118;}i:120350;a:1:{i:0;i:119;}i:120351;a:1:{i:0;i:120;}i:120352;a:1:{i:0;i:121;}i:120353;a:1:{i:0;i:122;}i:120380;a:1:{i:0;i:97;}i:120381;a:1:{i:0;i:98;}i:120382;a:1:{i:0;i:99;}i:120383;a:1:{i:0;i:100;}i:120384;a:1:{i:0;i:101;}i:120385;a:1:{i:0;i:102;}i:120386;a:1:{i:0;i:103;}i:120387;a:1:{i:0;i:104;}i:120388;a:1:{i:0;i:105;}i:120389;a:1:{i:0;i:106;}i:120390;a:1:{i:0;i:107;}i:120391;a:1:{i:0;i:108;}i:120392;a:1:{i:0;i:109;}i:120393;a:1:{i:0;i:110;}i:120394;a:1:{i:0;i:111;}i:120395;a:1:{i:0;i:112;}i:120396;a:1:{i:0;i:113;}i:120397;a:1:{i:0;i:114;}i:120398;a:1:{i:0;i:115;}i:120399;a:1:{i:0;i:116;}i:120400;a:1:{i:0;i:117;}i:120401;a:1:{i:0;i:118;}i:120402;a:1:{i:0;i:119;}i:120403;a:1:{i:0;i:120;}i:120404;a:1:{i:0;i:121;}i:120405;a:1:{i:0;i:122;}i:120432;a:1:{i:0;i:97;}i:120433;a:1:{i:0;i:98;}i:120434;a:1:{i:0;i:99;}i:120435;a:1:{i:0;i:100;}i:120436;a:1:{i:0;i:101;}i:120437;a:1:{i:0;i:102;}i:120438;a:1:{i:0;i:103;}i:120439;a:1:{i:0;i:104;}i:120440;a:1:{i:0;i:105;}i:120441;a:1:{i:0;i:106;}i:120442;a:1:{i:0;i:107;}i:120443;a:1:{i:0;i:108;}i:120444;a:1:{i:0;i:109;}i:120445;a:1:{i:0;i:110;}i:120446;a:1:{i:0;i:111;}i:120447;a:1:{i:0;i:112;}i:120448;a:1:{i:0;i:113;}i:120449;a:1:{i:0;i:114;}i:120450;a:1:{i:0;i:115;}i:120451;a:1:{i:0;i:116;}i:120452;a:1:{i:0;i:117;}i:120453;a:1:{i:0;i:118;}i:120454;a:1:{i:0;i:119;}i:120455;a:1:{i:0;i:120;}i:120456;a:1:{i:0;i:121;}i:120457;a:1:{i:0;i:122;}i:120488;a:1:{i:0;i:945;}i:120489;a:1:{i:0;i:946;}i:120490;a:1:{i:0;i:947;}i:120491;a:1:{i:0;i:948;}i:120492;a:1:{i:0;i:949;}i:120493;a:1:{i:0;i:950;}i:120494;a:1:{i:0;i:951;}i:120495;a:1:{i:0;i:952;}i:120496;a:1:{i:0;i:953;}i:120497;a:1:{i:0;i:954;}i:120498;a:1:{i:0;i:955;}i:120499;a:1:{i:0;i:956;}i:120500;a:1:{i:0;i:957;}i:120501;a:1:{i:0;i:958;}i:120502;a:1:{i:0;i:959;}i:120503;a:1:{i:0;i:960;}i:120504;a:1:{i:0;i:961;}i:120505;a:1:{i:0;i:952;}i:120506;a:1:{i:0;i:963;}i:120507;a:1:{i:0;i:964;}i:120508;a:1:{i:0;i:965;}i:120509;a:1:{i:0;i:966;}i:120510;a:1:{i:0;i:967;}i:120511;a:1:{i:0;i:968;}i:120512;a:1:{i:0;i:969;}i:120531;a:1:{i:0;i:963;}i:120546;a:1:{i:0;i:945;}i:120547;a:1:{i:0;i:946;}i:120548;a:1:{i:0;i:947;}i:120549;a:1:{i:0;i:948;}i:120550;a:1:{i:0;i:949;}i:120551;a:1:{i:0;i:950;}i:120552;a:1:{i:0;i:951;}i:120553;a:1:{i:0;i:952;}i:120554;a:1:{i:0;i:953;}i:120555;a:1:{i:0;i:954;}i:120556;a:1:{i:0;i:955;}i:120557;a:1:{i:0;i:956;}i:120558;a:1:{i:0;i:957;}i:120559;a:1:{i:0;i:958;}i:120560;a:1:{i:0;i:959;}i:120561;a:1:{i:0;i:960;}i:120562;a:1:{i:0;i:961;}i:120563;a:1:{i:0;i:952;}i:120564;a:1:{i:0;i:963;}i:120565;a:1:{i:0;i:964;}i:120566;a:1:{i:0;i:965;}i:120567;a:1:{i:0;i:966;}i:120568;a:1:{i:0;i:967;}i:120569;a:1:{i:0;i:968;}i:120570;a:1:{i:0;i:969;}i:120589;a:1:{i:0;i:963;}i:120604;a:1:{i:0;i:945;}i:120605;a:1:{i:0;i:946;}i:120606;a:1:{i:0;i:947;}i:120607;a:1:{i:0;i:948;}i:120608;a:1:{i:0;i:949;}i:120609;a:1:{i:0;i:950;}i:120610;a:1:{i:0;i:951;}i:120611;a:1:{i:0;i:952;}i:120612;a:1:{i:0;i:953;}i:120613;a:1:{i:0;i:954;}i:120614;a:1:{i:0;i:955;}i:120615;a:1:{i:0;i:956;}i:120616;a:1:{i:0;i:957;}i:120617;a:1:{i:0;i:958;}i:120618;a:1:{i:0;i:959;}i:120619;a:1:{i:0;i:960;}i:120620;a:1:{i:0;i:961;}i:120621;a:1:{i:0;i:952;}i:120622;a:1:{i:0;i:963;}i:120623;a:1:{i:0;i:964;}i:120624;a:1:{i:0;i:965;}i:120625;a:1:{i:0;i:966;}i:120626;a:1:{i:0;i:967;}i:120627;a:1:{i:0;i:968;}i:120628;a:1:{i:0;i:969;}i:120647;a:1:{i:0;i:963;}i:120662;a:1:{i:0;i:945;}i:120663;a:1:{i:0;i:946;}i:120664;a:1:{i:0;i:947;}i:120665;a:1:{i:0;i:948;}i:120666;a:1:{i:0;i:949;}i:120667;a:1:{i:0;i:950;}i:120668;a:1:{i:0;i:951;}i:120669;a:1:{i:0;i:952;}i:120670;a:1:{i:0;i:953;}i:120671;a:1:{i:0;i:954;}i:120672;a:1:{i:0;i:955;}i:120673;a:1:{i:0;i:956;}i:120674;a:1:{i:0;i:957;}i:120675;a:1:{i:0;i:958;}i:120676;a:1:{i:0;i:959;}i:120677;a:1:{i:0;i:960;}i:120678;a:1:{i:0;i:961;}i:120679;a:1:{i:0;i:952;}i:120680;a:1:{i:0;i:963;}i:120681;a:1:{i:0;i:964;}i:120682;a:1:{i:0;i:965;}i:120683;a:1:{i:0;i:966;}i:120684;a:1:{i:0;i:967;}i:120685;a:1:{i:0;i:968;}i:120686;a:1:{i:0;i:969;}i:120705;a:1:{i:0;i:963;}i:120720;a:1:{i:0;i:945;}i:120721;a:1:{i:0;i:946;}i:120722;a:1:{i:0;i:947;}i:120723;a:1:{i:0;i:948;}i:120724;a:1:{i:0;i:949;}i:120725;a:1:{i:0;i:950;}i:120726;a:1:{i:0;i:951;}i:120727;a:1:{i:0;i:952;}i:120728;a:1:{i:0;i:953;}i:120729;a:1:{i:0;i:954;}i:120730;a:1:{i:0;i:955;}i:120731;a:1:{i:0;i:956;}i:120732;a:1:{i:0;i:957;}i:120733;a:1:{i:0;i:958;}i:120734;a:1:{i:0;i:959;}i:120735;a:1:{i:0;i:960;}i:120736;a:1:{i:0;i:961;}i:120737;a:1:{i:0;i:952;}i:120738;a:1:{i:0;i:963;}i:120739;a:1:{i:0;i:964;}i:120740;a:1:{i:0;i:965;}i:120741;a:1:{i:0;i:966;}i:120742;a:1:{i:0;i:967;}i:120743;a:1:{i:0;i:968;}i:120744;a:1:{i:0;i:969;}i:120763;a:1:{i:0;i:963;}i:1017;a:1:{i:0;i:963;}i:7468;a:1:{i:0;i:97;}i:7469;a:1:{i:0;i:230;}i:7470;a:1:{i:0;i:98;}i:7472;a:1:{i:0;i:100;}i:7473;a:1:{i:0;i:101;}i:7474;a:1:{i:0;i:477;}i:7475;a:1:{i:0;i:103;}i:7476;a:1:{i:0;i:104;}i:7477;a:1:{i:0;i:105;}i:7478;a:1:{i:0;i:106;}i:7479;a:1:{i:0;i:107;}i:7480;a:1:{i:0;i:108;}i:7481;a:1:{i:0;i:109;}i:7482;a:1:{i:0;i:110;}i:7484;a:1:{i:0;i:111;}i:7485;a:1:{i:0;i:547;}i:7486;a:1:{i:0;i:112;}i:7487;a:1:{i:0;i:114;}i:7488;a:1:{i:0;i:116;}i:7489;a:1:{i:0;i:117;}i:7490;a:1:{i:0;i:119;}i:8507;a:3:{i:0;i:102;i:1;i:97;i:2;i:120;}i:12880;a:3:{i:0;i:112;i:1;i:116;i:2;i:101;}i:13004;a:2:{i:0;i:104;i:1;i:103;}i:13006;a:2:{i:0;i:101;i:1;i:118;}i:13007;a:3:{i:0;i:108;i:1;i:116;i:2;i:100;}i:13178;a:2:{i:0;i:105;i:1;i:117;}i:13278;a:3:{i:0;i:118;i:1;i:8725;i:2;i:109;}i:13279;a:3:{i:0;i:97;i:1;i:8725;i:2;i:109;}}s:12:"norm_combcls";a:341:{i:820;i:1;i:821;i:1;i:822;i:1;i:823;i:1;i:824;i:1;i:2364;i:7;i:2492;i:7;i:2620;i:7;i:2748;i:7;i:2876;i:7;i:3260;i:7;i:4151;i:7;i:12441;i:8;i:12442;i:8;i:2381;i:9;i:2509;i:9;i:2637;i:9;i:2765;i:9;i:2893;i:9;i:3021;i:9;i:3149;i:9;i:3277;i:9;i:3405;i:9;i:3530;i:9;i:3642;i:9;i:3972;i:9;i:4153;i:9;i:5908;i:9;i:5940;i:9;i:6098;i:9;i:1456;i:10;i:1457;i:11;i:1458;i:12;i:1459;i:13;i:1460;i:14;i:1461;i:15;i:1462;i:16;i:1463;i:17;i:1464;i:18;i:1465;i:19;i:1467;i:20;i:1468;i:21;i:1469;i:22;i:1471;i:23;i:1473;i:24;i:1474;i:25;i:64286;i:26;i:1611;i:27;i:1612;i:28;i:1613;i:29;i:1614;i:30;i:1615;i:31;i:1616;i:32;i:1617;i:33;i:1618;i:34;i:1648;i:35;i:1809;i:36;i:3157;i:84;i:3158;i:91;i:3640;i:103;i:3641;i:103;i:3656;i:107;i:3657;i:107;i:3658;i:107;i:3659;i:107;i:3768;i:118;i:3769;i:118;i:3784;i:122;i:3785;i:122;i:3786;i:122;i:3787;i:122;i:3953;i:129;i:3954;i:130;i:3962;i:130;i:3963;i:130;i:3964;i:130;i:3965;i:130;i:3968;i:130;i:3956;i:132;i:801;i:202;i:802;i:202;i:807;i:202;i:808;i:202;i:795;i:216;i:3897;i:216;i:119141;i:216;i:119142;i:216;i:119150;i:216;i:119151;i:216;i:119152;i:216;i:119153;i:216;i:119154;i:216;i:12330;i:218;i:790;i:220;i:791;i:220;i:792;i:220;i:793;i:220;i:796;i:220;i:797;i:220;i:798;i:220;i:799;i:220;i:800;i:220;i:803;i:220;i:804;i:220;i:805;i:220;i:806;i:220;i:809;i:220;i:810;i:220;i:811;i:220;i:812;i:220;i:813;i:220;i:814;i:220;i:815;i:220;i:816;i:220;i:817;i:220;i:818;i:220;i:819;i:220;i:825;i:220;i:826;i:220;i:827;i:220;i:828;i:220;i:839;i:220;i:840;i:220;i:841;i:220;i:845;i:220;i:846;i:220;i:851;i:220;i:852;i:220;i:853;i:220;i:854;i:220;i:1425;i:220;i:1430;i:220;i:1435;i:220;i:1443;i:220;i:1444;i:220;i:1445;i:220;i:1446;i:220;i:1447;i:220;i:1450;i:220;i:1621;i:220;i:1622;i:220;i:1763;i:220;i:1770;i:220;i:1773;i:220;i:1841;i:220;i:1844;i:220;i:1847;i:220;i:1848;i:220;i:1849;i:220;i:1851;i:220;i:1852;i:220;i:1854;i:220;i:1858;i:220;i:1860;i:220;i:1862;i:220;i:1864;i:220;i:2386;i:220;i:3864;i:220;i:3865;i:220;i:3893;i:220;i:3895;i:220;i:4038;i:220;i:6459;i:220;i:8424;i:220;i:119163;i:220;i:119164;i:220;i:119165;i:220;i:119166;i:220;i:119167;i:220;i:119168;i:220;i:119169;i:220;i:119170;i:220;i:119178;i:220;i:119179;i:220;i:1434;i:222;i:1453;i:222;i:6441;i:222;i:12333;i:222;i:12334;i:224;i:12335;i:224;i:119149;i:226;i:1454;i:228;i:6313;i:228;i:12331;i:228;i:768;i:230;i:769;i:230;i:770;i:230;i:771;i:230;i:772;i:230;i:773;i:230;i:774;i:230;i:775;i:230;i:776;i:230;i:777;i:230;i:778;i:230;i:779;i:230;i:780;i:230;i:781;i:230;i:782;i:230;i:783;i:230;i:784;i:230;i:785;i:230;i:786;i:230;i:787;i:230;i:788;i:230;i:829;i:230;i:830;i:230;i:831;i:230;i:832;i:230;i:833;i:230;i:834;i:230;i:835;i:230;i:836;i:230;i:838;i:230;i:842;i:230;i:843;i:230;i:844;i:230;i:848;i:230;i:849;i:230;i:850;i:230;i:855;i:230;i:867;i:230;i:868;i:230;i:869;i:230;i:870;i:230;i:871;i:230;i:872;i:230;i:873;i:230;i:874;i:230;i:875;i:230;i:876;i:230;i:877;i:230;i:878;i:230;i:879;i:230;i:1155;i:230;i:1156;i:230;i:1157;i:230;i:1158;i:230;i:1426;i:230;i:1427;i:230;i:1428;i:230;i:1429;i:230;i:1431;i:230;i:1432;i:230;i:1433;i:230;i:1436;i:230;i:1437;i:230;i:1438;i:230;i:1439;i:230;i:1440;i:230;i:1441;i:230;i:1448;i:230;i:1449;i:230;i:1451;i:230;i:1452;i:230;i:1455;i:230;i:1476;i:230;i:1552;i:230;i:1553;i:230;i:1554;i:230;i:1555;i:230;i:1556;i:230;i:1557;i:230;i:1619;i:230;i:1620;i:230;i:1623;i:230;i:1624;i:230;i:1750;i:230;i:1751;i:230;i:1752;i:230;i:1753;i:230;i:1754;i:230;i:1755;i:230;i:1756;i:230;i:1759;i:230;i:1760;i:230;i:1761;i:230;i:1762;i:230;i:1764;i:230;i:1767;i:230;i:1768;i:230;i:1771;i:230;i:1772;i:230;i:1840;i:230;i:1842;i:230;i:1843;i:230;i:1845;i:230;i:1846;i:230;i:1850;i:230;i:1853;i:230;i:1855;i:230;i:1856;i:230;i:1857;i:230;i:1859;i:230;i:1861;i:230;i:1863;i:230;i:1865;i:230;i:1866;i:230;i:2385;i:230;i:2387;i:230;i:2388;i:230;i:3970;i:230;i:3971;i:230;i:3974;i:230;i:3975;i:230;i:5901;i:230;i:6458;i:230;i:8400;i:230;i:8401;i:230;i:8404;i:230;i:8405;i:230;i:8406;i:230;i:8407;i:230;i:8411;i:230;i:8412;i:230;i:8417;i:230;i:8423;i:230;i:8425;i:230;i:65056;i:230;i:65057;i:230;i:65058;i:230;i:65059;i:230;i:119173;i:230;i:119174;i:230;i:119175;i:230;i:119177;i:230;i:119176;i:230;i:119210;i:230;i:119211;i:230;i:119212;i:230;i:119213;i:230;i:789;i:232;i:794;i:232;i:12332;i:232;i:863;i:233;i:866;i:233;i:861;i:234;i:862;i:234;i:864;i:234;i:865;i:234;i:837;i:240;}} \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ae.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ae.php new file mode 100644 index 0000000..fca86c0 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ae.php @@ -0,0 +1,58 @@ + 'domain.name', + 'Registrar Name:' => 'domain.sponsor', + 'Status:' => 'domain.status', + 'Registrant Contact ID:' => 'owner.handle', + 'Registrant Contact Name:' => 'owner.name', + 'Tech Contact Name:' => 'tech.name', + 'Tech Contact ID:' => 'tech.handle', + 'Name Server:' => 'domain.nserver.' + ); + + $r['regrinfo'] = generic_parser_b($data_str['rawdata'], $items, 'ymd'); + + $r['regyinfo'] = array( + 'referrer' => 'http://www.nic.ae', + 'registrar' => 'UAENIC' + ); + + return $r; + } + } +?> diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.aero.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.aero.php new file mode 100644 index 0000000..963a4a1 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.aero.php @@ -0,0 +1,45 @@ + 'http://www.nic.aero', + 'registrar' => 'Societe Internationale de Telecommunications Aeronautiques SC' + ); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ag.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ag.php new file mode 100644 index 0000000..3f663fe --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ag.php @@ -0,0 +1,45 @@ + 'http://www.nic.ag', + 'registrar' => 'Nic AG' + ); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.asia.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.asia.php new file mode 100644 index 0000000..c9fa918 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.asia.php @@ -0,0 +1,44 @@ +'http://www.dotasia.org/', + 'registrar' => 'DotAsia' + ); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.at.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.at.php new file mode 100644 index 0000000..639c267 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.at.php @@ -0,0 +1,102 @@ + 'fax', + 'e-mail' => 'email', + 'nic-hdl' => 'handle', + 'person' => 'name', + 'personname' => 'name', + 'street address' => 'address.street', + 'city' => 'address.city', + 'postal code' => 'address.pcode', + 'country' => 'address.country' + ); + + $contacts = array( + 'registrant' => 'owner', + 'admin-c' => 'admin', + 'tech-c' => 'tech', + 'billing-c' => 'billing', + 'zone-c' => 'zone' + ); + + $reg = generic_parser_a($data_str['rawdata'], $translate, $contacts, 'domain', 'Ymd'); + + if (isset($reg['domain']['remarks'])) + unset($reg['domain']['remarks']); + + if (isset($reg['domain']['descr'])) + { + while (list($key, $val) = each($reg['domain']['descr'])) + { + $v = trim(substr(strstr($val, ':'), 1)); + if (strstr($val, '[organization]:')) + { + $reg['owner']['organization'] = $v; + continue; + } + if (strstr($val, '[phone]:')) + { + $reg['owner']['phone'] = $v; + continue; + } + if (strstr($val, '[fax-no]:')) + { + $reg['owner']['fax'] = $v; + continue; + } + if (strstr($val, '[e-mail]:')) + { + $reg['owner']['email'] = $v; + continue; + } + + $reg['owner']['address'][$key] = $v; + } + + if (isset($reg['domain']['descr'])) unset($reg['domain']['descr']); + } + + $r['regrinfo'] = $reg; + $r['regyinfo'] = array( + 'referrer' => 'http://www.nic.at', + 'registrar' => 'NIC-AT' + ); + return $r; + } + } +?> diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.au.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.au.php new file mode 100644 index 0000000..ae28c6a --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.au.php @@ -0,0 +1,63 @@ + 'domain.name', + 'Last Modified:' => 'domain.changed', + 'Registrar Name:' => 'domain.sponsor', + 'Status:' => 'domain.status', + 'Domain ROID:' => 'domain.handle', + 'Registrant:' => 'owner.organization', + 'Registrant Contact ID:' => 'owner.handle', + 'Registrant Contact Email:' => 'owner.email', + 'Registrant Contact Name:' => 'owner.name', + 'Tech Contact Name:' => 'tech.name', + 'Tech Contact Email:' => 'tech.email', + 'Tech Contact ID:' => 'tech.handle', + 'Name Server:' => 'domain.nserver.' + ); + + $r['regrinfo'] = generic_parser_b($data_str['rawdata'], $items); + $r['regyinfo'] = array( + 'referrer' => 'http://www.aunic.net', + 'registrar' => 'AU-NIC' + ); + return $r; + } + } + +?> diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.be.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.be.php new file mode 100644 index 0000000..10f1c8f --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.be.php @@ -0,0 +1,76 @@ + 'Domain:', + 'domain.status' => 'Status:', + 'domain.nserver' => 'Nameservers:', + 'domain.created' => 'Registered:', + 'owner' => 'Licensee:', + 'admin' => 'Onsite Contacts:', + 'tech' => 'Agent Technical Contacts:', + 'agent' => 'Agent:' + ); + + $trans = array( + 'company name2:' => '' + ); + + $r['regrinfo'] = get_blocks($data['rawdata'], $items); + + if ($r['regrinfo']['domain']['status'] == 'REGISTERED') + { + $r['regrinfo']['registered'] = 'yes'; + $r['regrinfo'] = get_contacts($r['regrinfo'],$trans); + + if (isset($r['regrinfo']['agent'])) + { + $sponsor = get_contact($r['regrinfo']['agent'],$trans); + unset($r['regrinfo']['agent']); + $r['regrinfo']['domain']['sponsor'] = $sponsor['name']; + } + + $r = format_dates($r, '-mdy'); + } + else + $r['regrinfo']['registered'] = 'no'; + + $r['regyinfo']['referrer'] = 'http://www.domain-registry.nl'; + $r['regyinfo']['registrar'] = 'DNS Belgium'; + return $r; + } + } +?> diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.biz.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.biz.php new file mode 100644 index 0000000..7e28b18 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.biz.php @@ -0,0 +1,45 @@ + 'http://www.neulevel.biz', + 'registrar' => 'NEULEVEL' + ); + return $r; + } + } +?> diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.br.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.br.php new file mode 100644 index 0000000..63d96d1 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.br.php @@ -0,0 +1,84 @@ + 'fax', + 'e-mail' => 'email', + 'nic-hdl-br' => 'handle', + 'person' => 'name', + 'netname' => 'name', + 'domain' => 'name', + 'updated' => '' + ); + + $contacts = array( + 'owner-c' => 'owner', + 'tech-c' => 'tech', + 'admin-c' => 'admin', + 'billing-c' => 'billing' + ); + + $r = generic_parser_a($data_str['rawdata'], $translate, $contacts, 'domain', 'Ymd'); + + if (in_array('Permission denied.', $r['disclaimer'])) + { + $r['registered'] = 'unknown'; + return $r; + } + + if (isset($r['domain']['nsstat'])) unset($r['domain']['nsstat']); + if (isset($r['domain']['nslastaa'])) unset($r['domain']['nslastaa']); + + if (isset($r['domain']['owner'])) + { + $r['owner']['organization'] = $r['domain']['owner']; + unset($r['domain']['owner']); + } + + if (isset($r['domain']['responsible'])) unset($r['domain']['responsible']); + if (isset($r['domain']['address'])) unset($r['domain']['address']); + if (isset($r['domain']['phone'])) unset($r['domain']['phone']); + + $a['regrinfo'] = $r; + $a['regyinfo'] = array( + 'registrar' => 'BR-NIC', + 'referrer' => 'http://www.nic.br' + ); + return $a; + } + } +?> diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ca.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ca.php new file mode 100644 index 0000000..92049a7 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ca.php @@ -0,0 +1,76 @@ + 'Registrant:', + 'admin' => 'Administrative contact:', + 'tech' => 'Technical contact:', + 'domain.sponsor' => 'Registrar:', + 'domain.nserver' => 'Name servers:', + 'domain.status' => 'Domain status:', + 'domain.created' => 'Creation date:', + 'domain.expires' => 'Expiry date:', + 'domain.changed' => 'Updated date:' + ); + + $extra = array( + 'postal address:' => 'address.0', + 'job title:' => '', + 'number:' => 'handle', + 'description:' => 'organization' + ); + + $r['regrinfo'] = easy_parser($data_str['rawdata'],$items,'ymd',$extra); + + if (!empty($r['regrinfo']['domain']['sponsor'])) + { + list($v,$reg) = explode(':',$r['regrinfo']['domain']['sponsor'][0]); + $r['regrinfo']['domain']['sponsor'] = trim($reg); + } + + if (empty($r['regrinfo']['domain']['status']) || $r['regrinfo']['domain']['status'] == 'available') + $r['regrinfo']['registered'] = 'no'; + else + $r['regrinfo']['registered'] = 'yes'; + + $r['regyinfo'] = array( + 'registrar' => 'CIRA', + 'referrer' => 'http://www.cira.ca/' + ); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.cat.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.cat.php new file mode 100644 index 0000000..c107cf9 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.cat.php @@ -0,0 +1,47 @@ + \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ch.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ch.php new file mode 100644 index 0000000..90f6c36 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ch.php @@ -0,0 +1,82 @@ + 'Holder of domain name:', + 'domain.name' => 'Domain name:', + 'domain.created' => 'Date of last registration:', + 'domain.changed' => 'Date of last modification:', + 'tech' => 'Technical contact:', + 'domain.nserver' => 'Name servers:', + 'domain.dnssec' => 'DNSSEC:' + ); + + $trans = array( + 'contractual language:' => 'language' + ); + + $r['regrinfo'] = get_blocks($data_str['rawdata'], $items); + + if (!empty($r['regrinfo']['domain']['name'])) + { + $r['regrinfo'] = get_contacts($r['regrinfo'],$trans); + + $r['regrinfo']['domain']['name'] = $r['regrinfo']['domain']['name'][0]; + + if (isset($r['regrinfo']['domain']['changed'][0])) + $r['regrinfo']['domain']['changed'] = get_date($r['regrinfo']['domain']['changed'][0], 'dmy'); + + if (isset($r['regrinfo']['domain']['created'][0])) + $r['regrinfo']['domain']['created'] = get_date($r['regrinfo']['domain']['created'][0], 'dmy'); + + $r['regrinfo']['registered'] = 'yes'; + } + else + { + $r = ''; + $r['regrinfo']['registered'] = 'no'; + } + + $r['regyinfo'] = array( + 'referrer' => 'http://www.nic.ch', + 'registrar' => 'SWITCH Domain Name Registration' + ); + return $r; + } + } +?> diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.cl.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.cl.php new file mode 100644 index 0000000..f6874d7 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.cl.php @@ -0,0 +1,56 @@ + '(Administrative Contact)', + 'tech' => 'Contacto Técnico (Technical Contact):', + 'domain.nserver' => 'Servidores de nombre (Domain servers):', + 'domain.changed' => '(Database last updated on):' + ); + + $trans = array( + 'organización:' => 'organization', + 'nombre :' => 'name'); + + $r['regrinfo'] = easy_parser($data_str['rawdata'], $items, 'd-m-y', $trans); + $r['regyinfo'] = array( + 'referrer' => 'http://www.nic.cl', + 'registrar' => 'NIC Chile' + ); + return $r; + } + } +?> diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.client.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.client.php new file mode 100644 index 0000000..abd3b9d --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.client.php @@ -0,0 +1,595 @@ + '', + 'type' => 'domain', + 'query' => '', + 'status', + 'server' + ); + + // This release of the package + var $CODE_VERSION = '4.2.2'; + + // Full code and data version string (e.g. 'Whois2.php v3.01:16') + var $VERSION; + + /* + * Constructor function + */ + function WhoisClient () { + // Load DATA array + @require('whois.servers.php'); + + // Set version + $this->VERSION = sprintf("phpWhois v%s-%s", $this->CODE_VERSION, $this->DATA_VERSION); + } + + /* + * Perform lookup + */ + + function GetRawData ($query) { + + $this->Query['query'] = $query; + + // clear error description + if (isset($this->Query['errstr'])) unset($this->Query['errstr']); + + if (!isset($this->Query['server'])) { + $this->Query['status'] = 'error'; + $this->Query['errstr'][] = 'No server specified'; + return(array()); + } + + // Check if protocol is http + + if (substr($this->Query['server'],0,7)=='http://' || + substr($this->Query['server'],0,8)=='https://') + { + $output = $this->httpQuery($this->Query['server']); + + if (!$output) + { + $this->Query['status'] = 'error'; + $this->Query['errstr'][] = 'Connect failed to: '.$this->Query['server']; + return(array()); + } + + $this->Query['args'] = substr(strchr($this->Query['server'],'?'),1); + $this->Query['server'] = strtok($this->Query['server'],'?'); + + if (substr($this->Query['server'],0,7)=='http://') + $this->Query['server_port'] = 80; + else + $this->Query['server_port'] = 483; + } + else + { + // Get args + + if (strpos($this->Query['server'],'?')) + { + $parts = explode('?',$this->Query['server']); + $this->Query['server'] = trim($parts[0]); + $query_args = trim($parts[1]); + + // replace substitution parameters + $query_args = str_replace('{query}', $query, $query_args); + $query_args = str_replace('{version}', 'phpWhois'.$this->CODE_VERSION, $query_args); + + if (strpos($query_args,'{ip}')!==false) + { + $query_args = str_replace('{ip}', phpwhois_getclientip(), $query_args); + } + + if (strpos($query_args,'{hname}')!==false) + { + $query_args = str_replace('{hname}', gethostbyaddr(phpwhois_getclientip()), $query_args); + } + } + else + { + if (empty($this->Query['args'])) + $query_args = $query; + else + $query_args = $this->Query['args']; + } + + $this->Query['args'] = $query_args; + + if (substr($this->Query['server'],0,9) == 'rwhois://') + { + $this->Query['server'] = substr($this->Query['server'],9); + } + + if (substr($this->Query['server'],0,8) == 'whois://') + { + $this->Query['server'] = substr($this->Query['server'],8); + } + + // Get port + + if (strpos($this->Query['server'],':')) + { + $parts = explode(':',$this->Query['server']); + $this->Query['server'] = trim($parts[0]); + $this->Query['server_port'] = trim($parts[1]); + } + else + $this->Query['server_port'] = $this->PORT; + + // Connect to whois server, or return if failed + + $ptr = $this->Connect(); + + if($ptr < 0) { + $this->Query['status'] = 'error'; + $this->Query['errstr'][] = 'Connect failed to: '.$this->Query['server']; + return array(); + } + + stream_set_timeout($ptr,$this->STIMEOUT); + stream_set_blocking($ptr,0); + + // Send query + fputs($ptr, trim($query_args)."\r\n"); + + // Prepare to receive result + $raw = ''; + $start = time(); + $null = NULL; + $r = array($ptr); + + while (!feof($ptr)) + { + if (stream_select($r,$null,$null,$this->STIMEOUT)) + { + $raw .= fgets($ptr, $this->BUFFER); + } + + if (time()-$start > $this->STIMEOUT) + { + $this->Query['status'] = 'error'; + $this->Query['errstr'][] = 'Timeout reading from '.$this->Query['server']; + return array(); + } + } + + if (array_key_exists($this->Query['server'],$this->NON_UTF8)) + { + $raw = utf8_encode($raw); + } + + $output = explode("\n", $raw); + + // Drop empty last line (if it's empty! - saleck) + if (empty($output[count($output)-1])) + unset($output[count($output)-1]); + } + + return $output; + } + + /* + * Perform lookup. Returns an array. The 'rawdata' element contains an + * array of lines gathered from the whois query. If a top level domain + * handler class was found for the domain, other elements will have been + * populated too. + */ + + function GetData ($query='', $deep_whois=true) { + + // If domain to query passed in, use it, otherwise use domain from initialisation + $query = !empty($query) ? $query : $this->Query['query']; + + $output = $this->GetRawData($query); + + // Create result and set 'rawdata' + $result = array( 'rawdata' => $output ); + $result = $this->set_whois_info($result); + + // Return now on error + if (empty($output)) return $result; + + // If we have a handler, post-process it with it + if (isSet($this->Query['handler'])) + { + // Keep server list + $servers = $result['regyinfo']['servers']; + unset($result['regyinfo']['servers']); + + // Process data + $result = $this->Process($result,$deep_whois); + + // Add new servers to the server list + if (isset($result['regyinfo']['servers'])) + $result['regyinfo']['servers'] = array_merge($servers,$result['regyinfo']['servers']); + else + $result['regyinfo']['servers'] = $servers; + + // Handler may forget to set rawdata + if (empty($result['rawdata'])) + $result['rawdata'] = $output; + } + + // Type defaults to domain + if (!isset($result['regyinfo']['type'])) + $result['regyinfo']['type'] = 'domain'; + + // Add error information if any + if (isset($this->Query['errstr'])) + $result['errstr'] = $this->Query['errstr']; + + // Fix/add nameserver information + if (method_exists($this,'FixResult') && $this->Query['tld'] != 'ip') + $this->FixResult($result,$query); + + return($result); + } + + /* + * Adds whois server query information to result + */ + + function set_whois_info ($result) + { + $info = array( + 'server'=> $this->Query['server'], + ); + + if (!empty($this->Query['args'])) + $info['args'] = $this->Query['args']; + else + $info['args'] = $this->Query['query']; + + if (!empty($this->Query['server_port'])) + $info['port'] = $this->Query['server_port']; + else + $info['port'] = 43; + + if (isset($result['regyinfo']['whois'])) + unset($result['regyinfo']['whois']); + + if (isset($result['regyinfo']['rwhois'])) + unset($result['regyinfo']['rwhois']); + + $result['regyinfo']['servers'][] = $info; + + return $result; + } + + /* + * Convert html output to plain text + */ + function httpQuery ($query) { + + //echo ini_get('allow_url_fopen'); + + //if (ini_get('allow_url_fopen')) + $lines = @file($this->Query['server']); + + if (!$lines) return false; + + $output = ''; + $pre = ''; + + while (list($key, $val)=each($lines)) { + $val = trim($val); + + $pos=strpos(strtoupper($val),'
      ');
      +			if ($pos!==false) {
      +				$pre = "\n";
      +				$output.=substr($val,0,$pos)."\n";
      +				$val = substr($val,$pos+5);
      +				}
      +			$pos=strpos(strtoupper($val),'
      '); + if ($pos!==false) { + $pre = ''; + $output.=substr($val,0,$pos)."\n"; + $val = substr($val,$pos+6); + } + $output.=$val.$pre; + } + + $search = array ( + '
      ', '

      ', '', + '', '', '', + '
      ', '

      ', '', + '', '', '' ); + + $output = str_replace($search,"\n",$output); + $output = str_replace('2) continue; + } + else $null=0; + $rawdata[]=$val; + } + return $rawdata; + } + + /* + * Open a socket to the whois server. + * + * Returns a socket connection pointer on success, or -1 on failure. + */ + function Connect ($server = '') { + + if ($server == '') + $server = $this->Query['server']; + + // Fail if server not set + if($server == '') + return(-1); + + // Get rid of protocol and/or get port + $port = $this->Query['server_port']; + + $pos = strpos($server,'://'); + + if ($pos !== false) + $server = substr($server, $pos+3); + + $pos = strpos($server,':'); + + if ($pos !== false) + { + $port = substr($server,$pos+1); + $server = substr($server,0,$pos); + } + + // Enter connection attempt loop + $retry = 0; + + while($retry <= $this->RETRY) { + // Set query status + $this->Query['status'] = 'ready'; + + // Connect to whois port + $ptr = @fsockopen($server, $port, $errno, $errstr, $this->STIMEOUT); + + if($ptr > 0) { + $this->Query['status'] = 'ok'; + return($ptr); + } + + // Failed this attempt + $this->Query['status'] = 'error'; + $this->Query['error'][] = $errstr; + $retry++; + + // Sleep before retrying + sleep($this->SLEEP); + } + + // If we get this far, it hasn't worked + return(-1); + } + + /* + * Post-process result with handler class. On success, returns the result + * from the handler. On failure, returns passed result unaltered. + */ + function Process (&$result, $deep_whois=true) { + + $handler_name = str_replace('.','_',$this->Query['handler']); + + // If the handler has not already been included somehow, include it now + $HANDLER_FLAG = sprintf("__%s_HANDLER__", strtoupper($handler_name)); + + if (!defined($HANDLER_FLAG)) + include($this->Query['file']); + + // If the handler has still not been included, append to query errors list and return + if (!defined($HANDLER_FLAG)) + { + $this->Query['errstr'][] = "Can't find $handler_name handler: ".$this->Query['file']; + return($result); + } + + if (!$this->gtld_recurse && $this->Query['file'] == 'whois.gtld.php') + return $result; + + // Pass result to handler + $object = $handler_name.'_handler'; + + $handler = new $object(''); + + // If handler returned an error, append it to the query errors list + if(isSet($handler->Query['errstr'])) + $this->Query['errstr'][] = $handler->Query['errstr']; + + $handler->deep_whois = $deep_whois; + + // Process + $res = $handler->parse($result,$this->Query['query']); + + // Return the result + return $res; + } + + /* + * Does more (deeper) whois ... + */ + + function DeepWhois ($query, $result) { + + if (!isset($result['regyinfo']['whois'])) return $result; + + $this->Query['server'] = $wserver = $result['regyinfo']['whois']; + unset($result['regyinfo']['whois']); + $subresult = $this->GetRawData($query); + + if (!empty($subresult)) + { + $result = $this->set_whois_info($result); + $result['rawdata'] = $subresult; + + if (isset($this->WHOIS_GTLD_HANDLER[$wserver])) + $this->Query['handler'] = $this->WHOIS_GTLD_HANDLER[$wserver]; + else + { + $parts = explode('.',$wserver); + $hname = strtolower($parts[1]); + + if (($fp = @fopen('whois.gtld.'.$hname.'.php', 'r', 1)) and fclose($fp)) + $this->Query['handler'] = $hname; + } + + if (!empty($this->Query['handler'])) + { + $this->Query['file'] = sprintf('whois.gtld.%s.php', $this->Query['handler']); + $regrinfo = $this->Process($subresult); //$result['rawdata']); + $result['regrinfo'] = $this->merge_results($result['regrinfo'], $regrinfo); + //$result['rawdata'] = $subresult; + } + } + + return $result; + } + + /* + * Merge results + */ + + function merge_results($a1, $a2) { + + reset($a2); + + while (list($key, $val) = each($a2)) + { + if (isset($a1[$key])) + { + if (is_array($val)) + { + if ($key != 'nserver') + $a1[$key] = $this->merge_results($a1[$key], $val); + } + else + { + $val = trim($val); + if ($val != '') + $a1[$key] = $val; + } + } + else + $a1[$key] = $val; + } + + return $a1; + } + + function FixNameServer($nserver) + { + $dns = array(); + + foreach($nserver as $val) + { + $val = str_replace( array('[',']','(',')'), '', trim($val)); + $val = str_replace("\t", ' ', $val); + $parts = explode(' ', $val); + $host = ''; + $ip = ''; + + foreach($parts as $p) + { + if (substr($p,-1) == '.') $p = substr($p,0,-1); + + if ((ip2long($p) == - 1) or (ip2long($p) === false)) + { + // Hostname ? + if ($host == '' && preg_match('/^[\w\-]+(\.[\w\-]+)+$/',$p)) + { + $host = $p; + } + } + else + // IP Address + $ip = $p; + } + + // Valid host name ? + + if ($host == '') continue; + + // Get ip address + + if ($ip == '') + { + $ip = gethostbyname($host); + if ($ip == $host) $ip = '(DOES NOT EXIST)'; + } + + if (substr($host,-1,1) == '.') $host = substr($host,0,-1); + + $dns[strtolower($host)] = $ip; + } + + return $dns; + } +} +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.cn.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.cn.php new file mode 100644 index 0000000..9c9a736 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.cn.php @@ -0,0 +1,91 @@ + 'domain.name', + 'Domain Status:' => 'domain.status.', + 'ROID:' => 'domain.handle', + 'Name Server:' => 'domain.nserver.', + 'Registration Date:' => 'domain.created', + 'Expiration Date:' => 'domain.expires', + 'Sponsoring Registrar:' => 'domain.sponsor', + 'Registrant Name:' => 'owner.name', + 'Registrant Organization:' => 'owner.organization', + 'Registrant Address:' => 'owner.address.address', + 'Registrant Postal Code:' => 'owner.address.pcode', + 'Registrant City:' => 'owner.address.city', + 'Registrant Country Code:' => 'owner.address.country', + 'Registrant Email:' => 'owner.email', + 'Registrant Phone Number:' => 'owner.phone', + 'Registrant Fax:' => 'owner.fax', + 'Administrative Name:' => 'admin.name', + 'Administrative Organization:' => 'admin.organization', + 'Administrative Address:' => 'admin.address.address', + 'Administrative Postal Code:' => 'admin.address.pcode', + 'Administrative City:' => 'admin.address.city', + 'Administrative Country Code:' => 'admin.address.country', + 'Administrative Email:' => 'admin.email', + 'Administrative Phone Number:' => 'admin.phone', + 'Administrative Fax:' => 'admin.fax', + 'Technical Name:' => 'tech.name', + 'Technical Organization:' => 'tech.organization', + 'Technical Address:' => 'tech.address.address', + 'Technical Postal Code:' => 'tech.address.pcode', + 'Technical City:' => 'tech.address.city', + 'tec-country:' => 'tech.address.country', + 'Technical Email:' => 'tech.email', + 'Technical Phone Number:' => 'tech.phone', + 'Technical Fax:' => 'tech.fax', + 'Billing Name:' => 'billing.name', + 'Billing Organization:' => 'billing.organization', + 'Billing Address:' => 'billing.address.address', + 'Billing Postal Code:' => 'billing.address.pcode', + 'Billing City:' => 'billing.address.city', + 'Billing Country Code:' => 'billing.address.country', + 'Billing Email:' => 'billing.email', + 'Billing Phone Number:' => 'billing.phone', + 'Billing Fax:' => 'billing.fax' + ); + + $r['regrinfo'] = generic_parser_b($data_str['rawdata'], $items, 'ymd'); + $r['regyinfo'] = array( + 'referrer' => 'http://www.cnnic.net.cn', + 'registrar' => 'China NIC' + ); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.co.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.co.php new file mode 100644 index 0000000..f7751d7 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.co.php @@ -0,0 +1,43 @@ + \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.co.za.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.co.za.php new file mode 100644 index 0000000..bd73225 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.co.za.php @@ -0,0 +1,73 @@ + 'domain.changed', + '1a. domain :' => 'domain.name', + '2b. registrantpostaladdress:' => 'owner.address.address.0', + '2f. billingaccount :' => 'billing.name', + '2g. billingemail :' => 'billing.email', + '2i. invoiceaddress :' => 'billing.address', + '2j. registrantphone :' => 'owner.phone', + '2k. registrantfax :' => 'owner.fax', + '2l. registrantemail :' => 'owner.email', + '4a. admin :' => 'admin.name', + '4c. admincompany :' => 'admin.organization', + '4d. adminpostaladdr :' => 'admin.address', + '4e. adminphone :' => 'admin.phone', + '4f. adminfax :' => 'admin.fax', + '4g. adminemail :' => 'admin.email', + '5a. tec :' => 'tech.name', + '5c. teccompany :' => 'tech.organization', + '5d. tecpostaladdr :' => 'tech.address', + '5e. tecphone :' => 'tech.phone', + '5f. tecfax :' => 'tech.fax', + '5g. tecemail :' => 'tech.email', + '6a. primnsfqdn :' => 'domain.nserver.0', + '6e. secns1fqdn :' => 'domain.nserver.1', + '6i. secns2fqdn :' => 'domain.nserver.2', + '6m. secns3fqdn :' => 'domain.nserver.3', + '6q. secns4fqdn :' => 'domain.nserver.4' + ); + + $r['regrinfo'] = generic_parser_b($data_str['rawdata'], $items); + + $r['regyinfo']['referrer'] = 'http://www.co.za'; + $r['regyinfo']['registrar'] = 'UniForum Association'; + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.coop.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.coop.php new file mode 100644 index 0000000..f16a7ef --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.coop.php @@ -0,0 +1,106 @@ + 'Contact Type: registrant', + 'admin' => 'Contact Type: admin', + 'tech' => 'Contact Type: tech', + 'billing' => 'Contact Type: billing', + 'domain.name' => 'Domain Name:', + 'domain.handle' => 'Domain ID:', + 'domain.expires' => 'Expiry Date:', + 'domain.created' => 'Created:', + 'domain.changed' => 'Last updated:', + 'domain.status' => 'Domain Status:', + 'domain.sponsor' => 'Sponsoring registrar:', + 'domain.nserver.' => 'Host Name:' + ); + + $translate = array( + 'Contact ID:' => 'handle', + 'Name:' => 'name', + 'Organisation:' => 'organization', + 'Street 1:' => 'address.street.0', + 'Street 2:' => 'address.street.1', + 'Street 3:' => 'address.street.2', + 'City:' => 'address.city', + 'State/Province:' => 'address.state', + 'Postal code:' => 'address.pcode', + 'Country:' => 'address.country', + 'Voice:' => 'phone', + 'Fax:' => 'fax', + 'Email:' => 'email' + ); + + $blocks = get_blocks($data_str['rawdata'],$items); + + $r=array(); + + if (isset($blocks['domain'])) + { + $r['regrinfo']['domain'] = format_dates($blocks['domain'],'dmy'); + $r['regrinfo']['registered'] = 'yes'; + + if (isset($blocks['owner'])) + { + $r['regrinfo']['owner'] = generic_parser_b($blocks['owner'],$translate,'dmy',false); + + if (isset($blocks['tech'])) + $r['regrinfo']['tech'] = generic_parser_b($blocks['tech'],$translate,'dmy',false); + + if (isset($blocks['admin'])) + $r['regrinfo']['admin'] = generic_parser_b($blocks['admin'],$translate,'dmy',false); + + if (isset($blocks['billing'])) + $r['regrinfo']['billing'] = generic_parser_b($blocks['billing'],$translate,'dmy',false); + } + else + { + $r['regrinfo']['owner'] = generic_parser_b($data_str['rawdata'],$translate,'dmy',false); + } + } + else + $r['regrinfo']['registered'] = 'no'; + + $r['regyinfo'] = array( + 'referrer' => 'http://www.nic.coop', + 'registrar' => '.coop registry' + ); + return $r; + } + } +?> diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.cz.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.cz.php new file mode 100644 index 0000000..d0367be --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.cz.php @@ -0,0 +1,73 @@ + 'expires', + 'registered' => 'created', + 'nserver' => 'nserver', + 'domain' => 'name', + 'contact' => 'handle', + 'reg-c' => '', + 'descr' => 'desc', + 'e-mail' => 'email', + 'person' => 'name', + 'org' => 'organization', + 'fax-no' => 'fax' + ); + + $contacts = array( + 'admin-c' => 'admin', + 'tech-c' => 'tech', + 'bill-c' => 'billing', + 'registrant' => 'owner' + ); + + $r['regrinfo'] = generic_parser_a($data_str['rawdata'], $translate, $contacts, 'domain', 'dmy'); + + $r['regyinfo'] = array( + 'referrer' => 'http://www.nic.cz', + 'registrar' => 'CZ-NIC' + ); + + if ($data_str['rawdata'][0] == 'Your connection limit exceeded. Please slow down and try again later.') + { + $r['regrinfo']['registered'] = 'unknown'; + } + + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.de.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.de.php new file mode 100644 index 0000000..47645bb --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.de.php @@ -0,0 +1,78 @@ + 'Domain:', + 'domain.nserver.' =>'Nserver:', + 'domain.nserver.#' =>'Nsentry:', + 'domain.status' => 'Status:', + 'domain.changed' => 'Changed:', + 'domain.desc.' => 'Descr:', + 'owner' => '[Holder]', + 'admin' => '[Admin-C]', + 'tech' => '[Tech-C]', + 'zone' => '[Zone-C]' + ); + + $extra = array( + 'city:' => 'address.city', + 'postalcode:' => 'address.pcode', + 'countrycode:' => 'address.country', + 'remarks:' => '', + 'sip:' => 'sip', + 'type:' => '' + ); + + $r['regrinfo'] = easy_parser($data_str['rawdata'], $items, 'ymd',$extra); + + $r['regyinfo'] = array( + 'registrar' => 'DENIC eG', + 'referrer' => 'http://www.denic.de/' + ); + + if (!isset($r['regrinfo']['domain']['status']) || $r['regrinfo']['domain']['status'] == "free") + { + $r['regrinfo']['registered'] = 'no'; + } + else + { + $r['regrinfo']['domain']['changed'] = substr($r['regrinfo']['domain']['changed'], 0, 10); + $r['regrinfo']['registered'] = 'yes'; + } + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.edu.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.edu.php new file mode 100644 index 0000000..22e6d92 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.edu.php @@ -0,0 +1,62 @@ + 'Domain name:', + 'domain.sponsor' => 'Registrar:', + 'domain.nserver' => 'Name Servers:', + 'domain.changed' => 'Domain record last updated:', + 'domain.created' => 'Domain record activated:', + 'owner' => 'Registrant:', + 'admin' => 'Administrative Contact:', + 'tech' => 'Technical Contact:', + 'billing' => 'Billing Contact:' + ); + + $r['regrinfo'] = easy_parser($data_str['rawdata'], $items, 'dmy'); + + if (isset($b['tech'])) + { + if ($r['regrinfo']['tech']['name'] == 'Same as above') + $r['regrinfo']['tech'] = $r['regrinfo']['admin']; + } + + $r['regyinfo']['referrer'] = 'http://whois.educause.net'; + $r['regyinfo']['registrar'] = 'EDUCASE'; + return ($r); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.eu.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.eu.php new file mode 100644 index 0000000..10627c3 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.eu.php @@ -0,0 +1,85 @@ + 'Domain:', + 'domain.status' => 'Status:', + 'domain.nserver' => 'Name servers:', + 'domain.created' => 'Registered:', + 'domain.registrar' => 'Registrar:', + 'tech' => 'Registrar Technical Contacts:', + 'owner' => 'Registrant:', + '' => 'Please visit' + ); + + $extra = array( + 'organisation:' => 'organization', + 'website:' => 'url' + ); + + $r['regrinfo'] = get_blocks($data['rawdata'], $items); + + if (!empty($r['regrinfo']['domain']['status'])) + switch ($r['regrinfo']['domain']['status']) + { + case 'FREE': + case 'AVAILABLE': + $r['regrinfo']['registered'] = 'no'; + break; + + case 'APPLICATION PENDING': + $r['regrinfo']['registered'] = 'pending'; + break; + + default: + $r['regrinfo']['registered'] = 'unknown'; + } + else + $r['regrinfo']['registered'] = 'yes'; + + if (isset($r['regrinfo']['tech'])) + $r['regrinfo']['tech'] = get_contact($r['regrinfo']['tech'],$extra); + + if (isset($r['regrinfo']['domain']['registrar'])) + $r['regrinfo']['domain']['registrar'] = get_contact($r['regrinfo']['domain']['registrar'],$extra); + + $r['regyinfo']['referrer'] = 'http://www.eurid.eu'; + $r['regyinfo']['registrar'] = 'EURID'; + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.fi.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.fi.php new file mode 100644 index 0000000..a94d202 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.fi.php @@ -0,0 +1,57 @@ + 'domain.name', + 'created:' => 'domain.created', + 'expires:' => 'domain.expires', + 'status:' => 'domain.status', + 'nserver:' => 'domain.nserver.', + 'descr:' => 'owner.name.', + 'address:' => 'owner.address.', + 'phone:' => 'owner.phone', + ); + + $r['regrinfo'] = generic_parser_b($data_str['rawdata'], $items); + + $r['regyinfo'] = array( + 'referrer' => 'https://domain.ficora.fi/', + 'registrar' => 'Finnish Communications Regulatory Authority' + ); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.fj.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.fj.php new file mode 100644 index 0000000..c059954 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.fj.php @@ -0,0 +1,67 @@ + 'Registrant:', + 'domain.status' => 'Status:', + 'domain.expires' => 'Expires:', + 'domain.nserver' => 'Domain servers:' + ); + + $r['regrinfo'] = get_blocks($data_str['rawdata'], $items); + + if (!empty($r['regrinfo']['domain']['status'])) + { + $r['regrinfo'] = get_contacts($r['regrinfo']); + + date_default_timezone_set("Pacific/Fiji"); + + if (isset($r['regrinfo']['domain']['expires'])) + $r['regrinfo']['domain']['expires'] = strftime("%Y-%m-%d",strtotime($r['regrinfo']['domain']['expires'])); + + $r['regrinfo']['registered'] = 'yes'; + } + else + $r['regrinfo']['registered'] = 'no'; + + $r['regyinfo'] = array( + 'referrer' => 'http://www.domains.fj', + 'registrar' => 'FJ Domain Name Registry' + ); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.fm.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.fm.php new file mode 100644 index 0000000..0e34f0a --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.fm.php @@ -0,0 +1,80 @@ + 'Registrant', + 'admin' => 'Admin', + 'tech' => 'Technical', + 'billing' => 'Billing', + 'domain.nserver' => 'Name Servers:', + 'domain.created' => 'Created:', + 'domain.expires' => 'Expires:', + 'domain.changed' => 'Modified:', + 'domain.status' => 'Status:', + 'domain.sponsor' => 'Registrar Name:' + ); + + $r['regrinfo'] = get_blocks($data['rawdata'], $items); + + $items = array( + 'phone number:' => 'phone', + 'email address:' => 'email', + 'fax number:' => 'fax', + 'organisation:' => 'organization' + ); + + if (!empty($r['regrinfo']['domain']['created'])) + { + $r['regrinfo'] = get_contacts($r['regrinfo'],$items); + + if (count($r['regrinfo']['billing']['address']) > 4) + $r['regrinfo']['billing']['address'] = array_slice($r['regrinfo']['billing']['address'],0,4); + + $r['regrinfo']['registered'] = 'yes'; + format_dates($r['regrinfo']['domain'],'dmY'); + } + else + { + $r = ''; + $r['regrinfo']['registered'] = 'no'; + } + + $r['regyinfo']['referrer'] = 'http://www.dot.dm'; + $r['regyinfo']['registrar'] = 'dotFM'; + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.fr.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.fr.php new file mode 100644 index 0000000..9854248 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.fr.php @@ -0,0 +1,78 @@ + 'fax', + 'e-mail' => 'email', + 'nic-hdl' => 'handle', + 'ns-list' => 'handle', + 'person' => 'name', + 'address' => 'address.', + 'descr' => 'desc', + 'anniversary' => '', + 'domain' => '', + 'last-update' => 'changed', + 'registered' => 'created', + 'country' => 'address.country', + 'registrar' => 'sponsor', + 'role' => 'organization' + ); + + $contacts = array( + 'admin-c' => 'admin', + 'tech-c' => 'tech', + 'zone-c' => 'zone', + 'holder-c' => 'owner', + 'nsl-id' => 'nserver' + ); + + $reg = generic_parser_a($data_str['rawdata'], $translate, $contacts, 'domain','dmY'); + + if (isset($reg['nserver'])) + { + $reg['domain'] = array_merge($reg['domain'],$reg['nserver']); + unset($reg['nserver']); + } + + $r['regrinfo'] = $reg; + $r['regyinfo'] = array( + 'referrer' => 'http://www.nic.fr', + 'registrar' => 'AFNIC' + ); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.afternic.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.afternic.php new file mode 100644 index 0000000..94ffe26 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.afternic.php @@ -0,0 +1,51 @@ + 'Registrant:', + 'admin' => 'Administrative Contact', + 'tech' => 'Technical Contact', + 'zone' => 'Zone Contact', + 'domain.name' => 'Domain Name:', + 'domain.changed' => 'Last updated on', + 'domain.created' => 'Domain created on', + 'domain.expires' => 'Domain expires on' + ); + + return easy_parser($data_str, $items, 'dmy', false, false, true); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.alldomains.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.alldomains.php new file mode 100644 index 0000000..01c7728 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.alldomains.php @@ -0,0 +1,49 @@ + 'Registrant:', + 'admin' => 'Administrative', + 'tech' => 'Technical', + 'domain.name' => 'Domain name:', + 'domain.sponsor' => 'Registrar:', + 'domain.nserver.' => 'Domain servers in listed order:' + ); + + return easy_parser($data_str, $items, 'ymd'); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.ascio.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.ascio.php new file mode 100644 index 0000000..44fc19f --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.ascio.php @@ -0,0 +1,51 @@ + 'Registrant:', + 'admin' => 'Administrative ', + 'tech' => 'Technical ', + 'domain.name' => 'Domain name:', + 'domain.nserver.' => 'Domain servers in listed order:', + 'domain.created' => 'Record created:', + 'domain.expires' => 'Record expires:', + 'domain.changed' => 'Record last updated:' + ); + + return easy_parser($data_str, $items, 'ymd',false,false,true); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.assorted.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.assorted.php new file mode 100644 index 0000000..a6e30f6 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.assorted.php @@ -0,0 +1,51 @@ + 'Registrant:', + 'admin' => 'Administrative Contact:', + 'tech' => 'Technical Contact:', + 'domain.name' => 'Domain Name:', + 'domain.nserver.' => 'Domain servers in listed order:', + 'domain.created' => 'Record created on', + 'domain.expires' => 'Record expires on', + 'domain.changed' => 'Record last updated' + ); + + return easy_parser($data_str, $items, 'ymd',false,false,true); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.corporatedomains.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.corporatedomains.php new file mode 100644 index 0000000..ad229d7 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.corporatedomains.php @@ -0,0 +1,53 @@ + 'Registrant:', + 'admin' => 'Administrative Contact', + 'tech' => 'Technical Contact', + 'zone' => 'Zone Contact', + 'domain.name' => 'Domain Name:', + 'domain.changed' => 'Last updated on', + 'domain.created' => 'Domain created on', + 'domain.expires' => 'Domain expires on', + 'domain.sponsor' => 'Registrar Name....:', + 'domain.nserver' => 'DNS Servers:' + ); + + return easy_parser($data_str, $items, 'dmy', false, false, true); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.directnic.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.directnic.php new file mode 100644 index 0000000..511755e --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.directnic.php @@ -0,0 +1,53 @@ + 'Registrant:', + 'admin' => 'Administrative Contact', + 'tech' => 'Technical Contact', + 'domain.name' => 'Domain Name:', + 'domain.sponsor' => 'Registration Service Provider:', + 'domain.nserver' => 'Domain servers in listed order:', + 'domain.changed' => 'Record last updated ', + 'domain.created' => 'Record created on ', + 'domain.expires' => 'Record expires on ', + '' => 'By submitting a WHOIS query' + ); + + return easy_parser($data_str, $items, 'mdy',false,false,true); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.domaindiscover.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.domaindiscover.php new file mode 100644 index 0000000..00f3d0f --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.domaindiscover.php @@ -0,0 +1,51 @@ + 'Registrant:', + 'admin' => 'Administrative Contact', + 'tech' => 'Technical Contact', + 'zone' => 'Zone Contact', + 'domain.name' => 'Domain Name:', + 'domain.changed' => 'Last updated on', + 'domain.created' => 'Domain created on', + 'domain.expires' => 'Domain expires on' + ); + + return easy_parser($data_str, $items, 'dmy', false, false, true); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.domainpeople.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.domainpeople.php new file mode 100644 index 0000000..c9ee5c3 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.domainpeople.php @@ -0,0 +1,59 @@ + 'Registrant Contact:', + 'admin' => 'Administrative Contact:', + 'tech' => 'Technical Contact:', + 'domain.name' => 'Domain name:', + 'domain.sponsor' => 'Registration Service Provided By:', + 'domain.referrer' => 'Contact:', + 'domain.nserver.' => 'Name Servers:', + 'domain.created' => 'Creation date:', + 'domain.expires' => 'Expiration date:', +// 'domain.changed' => 'Record last updated on', + 'domain.status' => 'Status:' + ); + + $r = easy_parser($data_str, $items, 'dmy', false, false, true); + if (isset($r['domain']['sponsor']) && is_array($r['domain']['sponsor'])) + $r['domain']['sponsor'] = $r['domain']['sponsor'][0]; + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.dotster.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.dotster.php new file mode 100644 index 0000000..eec492a --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.dotster.php @@ -0,0 +1,53 @@ + 'Registrant:', + 'admin' => 'Administrative', + 'tech' => 'Technical', + 'domain.nserver' => + 'Domain servers in listed order:', + 'domain.name' => 'Domain name:', + 'domain.created' => 'Created on:', + 'domain.expires' => 'Expires on:', + 'domain.changed' => 'Last Updated on:', + 'domain.sponsor' => 'Registrar:' + ); + + return easy_parser($data_str, $items, 'dmy'); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.dreamhost.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.dreamhost.php new file mode 100644 index 0000000..38455cd --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.dreamhost.php @@ -0,0 +1,54 @@ + 'Registrant Contact:', + 'admin' => 'Administrative Contact:', + 'tech' => 'Technical Contact:', + 'billing' => 'Billing Contact:', + 'domain.name' => 'Domain Name:', + 'domain.nserver' => 'Domain servers in listed order:', + 'domain.created' => 'Record created on', + 'domain.expires' => 'Record expires on' + ); + + $r = easy_parser($data_str, $items, 'dmy', false, false, true); + if (isset($r['domain']['sponsor']) && is_array($r['domain']['sponsor'])) + $r['domain']['sponsor'] = $r['domain']['sponsor'][0]; + return $r; + } + } +?> diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.enom.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.enom.php new file mode 100644 index 0000000..0510bcc --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.enom.php @@ -0,0 +1,62 @@ + 'Registrant Contact', + 'owner#1' => 'REGISTRANT Contact:', + 'admin#0' => 'Administrative Contact', + 'admin#1' => 'ADMINISTRATIVE Contact:', + 'tech#0' => 'Technical Contact', + 'tech#1' => 'TECHNICAL Contact:', + 'billing#0' => 'Billing Contact', + 'billing#1' => 'BILLING Contact:', + 'domain.nserver' => 'Nameservers', + 'domain.name#0' => 'Domain name:', + 'domain.name#1' => 'Domain name-', + 'domain.sponsor' => 'Registration Service Provided By:', + 'domain.status' => 'Status:', + 'domain.created#0' => 'Creation date:', + 'domain.expires#0' => 'Expiration date:', + 'domain.created#1' => 'Created:', + 'domain.expires#1' => 'Expires:', + 'domain.created#2' => 'Start of registration-', + 'domain.expires#2' => 'Registered through-' + ); + + return easy_parser($data_str, $items, 'dmy', false, false, true); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.fabulous.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.fabulous.php new file mode 100644 index 0000000..d7094b8 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.fabulous.php @@ -0,0 +1,54 @@ + 'Domain '.$query.':', + 'admin' => 'Administrative contact:', + 'tech' => 'Technical contact:', + 'billing' => 'Billing contact:', + '' => 'Record dates:' + ); + + $r = easy_parser($data_str, $items, 'mdy',false,false,true); + + if (!isset($r['tech'])) $r['tech'] = $r['billing']; + + if (!isset($r['admin'])) $r['admin'] = $r['tech']; + + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.fastdomain.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.fastdomain.php new file mode 100644 index 0000000..819083c --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.fastdomain.php @@ -0,0 +1,78 @@ + 'Registrant Info:', + 'admin' => 'Administrative Info:', + 'tech' => 'Technical Info:', + 'domain.name' => 'Domain Name:', + 'domain.sponsor' => 'Provider Name....:', + 'domain.referrer' => 'Provider Homepage:', + 'domain.nserver' => 'Domain servers in listed order:', + 'domain.created' => 'Created on..............:', + 'domain.expires' => 'Expires on..............:', + 'domain.changed' => 'Last modified on........:', + 'domain.status' => 'Status:' + ); + + while (list($key, $val) = each($data_str)) + { + $faststr = strpos($val, ' (FAST-'); + if ($faststr) + $data_str[$key] = substr($val, 0, $faststr); + } + + $r = easy_parser($data_str, $items, 'dmy', false, false, true); + + if (isset($r['domain']['sponsor']) && is_array($r['domain']['sponsor'])) + + $r['domain']['sponsor'] = $r['domain']['sponsor'][0]; + + if (isset($r['domain']['nserver'])) + { + reset($r['domain']['nserver']); + $endnserver = false; + while (list($key, $val) = each($r['domain']['nserver'])) + { + if ($val == '=-=-=-=') + unset($r['domain']['nserver'][$key]); + } + } + + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.gandi.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.gandi.php new file mode 100644 index 0000000..bb513db --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.gandi.php @@ -0,0 +1,56 @@ + 'owner-c', + 'admin' => 'admin-c', + 'tech' => 'tech-c', + 'billing' => 'bill-c' + ); + + $trans = array( + 'nic-hdl:' => 'handle', + 'person:' => 'name', + 'zipcode:' => 'address.pcode', + 'city:' => 'address.city', + 'lastupdated:' => 'changed', + 'owner-name:' => '' + ); + + return easy_parser($data_str, $items, 'dmy', $trans); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.genericb.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.genericb.php new file mode 100644 index 0000000..9c240f0 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.genericb.php @@ -0,0 +1,40 @@ + \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.godaddy.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.godaddy.php new file mode 100644 index 0000000..5ede66a --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.godaddy.php @@ -0,0 +1,56 @@ + 'Registrant:', + 'admin' => 'Administrative Contact', + 'tech' => 'Technical Contact', + 'domain.name' => 'Domain Name:', + 'domain.nserver.' => 'Domain servers in listed order:', + 'domain.created' => 'Created on:', + 'domain.expires' => 'Expires on:', + 'domain.changed' => 'Last Updated on:', + 'domain.sponsor' => 'Registered through:' + ); + + $r = get_blocks($data_str, $items); + $r['owner'] = get_contact($r['owner']); + $r['admin'] = get_contact($r['admin'],false,true); + $r['tech'] = get_contact($r['tech'],false,true); + return format_dates($r, 'dmy'); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.iana.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.iana.php new file mode 100644 index 0000000..3f8694f --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.iana.php @@ -0,0 +1,51 @@ + 'contact: administrative', + 'tech' => 'contact: technical', + 'domain.nserver.' => 'nserver:', + 'domain.created' => 'created:', + 'domain.changed' => 'changed:', + 'domain.source' => 'source:', + 'domain.name' => 'domain:', + 'disclaimer.' => '% ' + ); + + return easy_parser($data_str,$items,'Ymd',false,false,false,'owner'); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.interdomain.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.interdomain.php new file mode 100644 index 0000000..1197b87 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.interdomain.php @@ -0,0 +1,80 @@ + 'domain.name', + 'Creation Date............' => 'domain.created', + 'Expiry Date..............' => 'domain.expires', + 'Last Update Date.........' => 'domain.changed', + 'Name Server.............' => 'domain.nserver.', + 'Organization Name........' => 'owner.name', + 'Organization Org.........' => 'owner.organization', + 'Organization Street......' => 'owner.address.street', + 'Organization City........' => 'owner.address.city', + 'Organization State.......' => 'owner.address.state', + 'Organization PC..........' => 'owner.address.pcode', + 'Organization Country.....' => 'owner.address.country', + 'Organization Phone.......' => 'owner.phone', + 'Organization e-mail......' => 'owner.email', + 'Organization Contact Id....' => 'owner.handle', + 'Administrative Contact Id..' => 'admin.handle', + 'Administrative Name......' => 'admin.name', + 'Administrative Org.......' => 'admin.organization', + 'Administrative Street....' => 'admin.address.street', + 'Administrative City......' => 'admin.address.city', + 'Administrative State.....' => 'admin.address.state', + 'Administrative PC........' => 'admin.address.pcode', + 'Administrative Country...' => 'admin.address.country', + 'Administrative Phone.....' => 'admin.phone', + 'Administrative e-mail....' => 'admin.email', + 'Administrative Fax.......' => 'admin.fax', + 'Technical Contact Id.......' => 'tech.handle', + 'Technical Name...........' => 'tech.name', + 'Technical Org............' => 'tech.organization', + 'Technical Street.........' => 'tech.address.street', + 'Technical City...........' => 'tech.address.city', + 'Technical State..........' => 'tech.address.state', + 'Technical PC.............' => 'tech.address.pcode', + 'Technical Country........' => 'tech.address.country', + 'Technical Phone..........' => 'tech.phone', + 'Technical e-mail.........' => 'tech.email', + 'Technical Fax............' => 'tech.fax' + ); + + return generic_parser_b($data_str, $items, 'dmy'); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.itsyourdomain.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.itsyourdomain.php new file mode 100644 index 0000000..7d20253 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.itsyourdomain.php @@ -0,0 +1,52 @@ + 'Registrant', + 'admin' => 'Administrative', + 'tech' => 'Technical', + 'billing' => 'Billing', + 'domain.name' => 'Domain:', + 'domain.nserver.' => 'Domain Name Servers:', + 'domain.created' => 'Record created on ', + 'domain.expires' => 'Record expires on ', + 'domain.changed' => 'Record last updated on ' + ); + + return easy_parser($data_str, $items, 'mdy'); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.joker.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.joker.php new file mode 100644 index 0000000..9168e90 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.joker.php @@ -0,0 +1,78 @@ + 'handle', + 'modified' => 'changed', + 'reseller' => 'sponsor', + 'address' => 'address.street', + 'postal-code' => 'address.pcode', + 'city' => 'address.city', + 'state' => 'address.state', + 'country' => 'address.country', + 'person' => 'name', + 'domain' => 'name' + ); + + $contacts = array( + 'admin-c' => 'admin', + 'tech-c' => 'tech', + 'billing-c' => 'billing' + ); + + $items = array( + 'owner' => 'name', + 'organization' => 'organization', + 'email' => 'email', + 'phone' => 'phone', + 'address' => 'address', + ); + + $r = generic_parser_a($data_str, $translate, $contacts, 'domain', 'Ymd'); + + foreach($items as $tag => $convert) + { + if (isset($r['domain'][$tag])) + { + $r['owner'][$convert] = $r['domain'][$tag]; + unset($r['domain'][$tag]); + } + } + + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.markmonitor.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.markmonitor.php new file mode 100644 index 0000000..f43cf18 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.markmonitor.php @@ -0,0 +1,55 @@ + 'Registrant:', + 'admin' => 'Administrative Contact:', + 'tech' => 'Technical Contact, Zone Contact:', + 'domain.name' => 'Domain Name:', + 'domain.sponsor' => 'Registrar Name:', + 'domain.nserver' => 'Domain servers in listed order:', + 'domain.created' => 'Created on..............:', + 'domain.expires' => 'Expires on..............:', + 'domain.changed' => 'Record last updated on..:' + ); + + $r = easy_parser($data_str, $items, 'dmy', false, false, true); + if (isset($r['domain']['sponsor']) && is_array($r['domain']['sponsor'])) + $r['domain']['sponsor'] = $r['domain']['sponsor'][0]; + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.melbourneit.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.melbourneit.php new file mode 100644 index 0000000..bbddd4c --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.melbourneit.php @@ -0,0 +1,59 @@ + 'domain.name', + 'Registration Date....' => 'domain.created', + 'Expiry Date..........' => 'domain.expires', + 'Organisation Name....' => 'owner.name', + 'Organisation Address.' => 'owner.address.', + 'Admin Name...........' => 'admin.name', + 'Admin Address........' => 'admin.address.', + 'Admin Email..........' => 'admin.email', + 'Admin Phone..........' => 'admin.phone', + 'Admin Fax............' => 'admin.fax', + 'Tech Name............' => 'tech.name', + 'Tech Address.........' => 'tech.address.', + 'Tech Email...........' => 'tech.email', + 'Tech Phone...........' => 'tech.phone', + 'Tech Fax.............' => 'tech.fax', + 'Name Server..........' => 'domain.nserver.' + ); + + return generic_parser_b($data_str, $items, 'ymd'); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.moniker.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.moniker.php new file mode 100644 index 0000000..0824f9e --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.moniker.php @@ -0,0 +1,52 @@ + 'Registrant', + 'admin' => 'Administrative ', + 'tech' => 'Technical ', + 'billing' => 'Billing ', + 'domain.name' => 'Domain Name:', + 'domain.nserver.' => 'Domain servers in listed order:', + 'domain.created' => 'Record created on: ', + 'domain.expires' => 'Domain Expires on: ', + 'domain.changed' => 'Database last updated on: ' + ); + + return easy_parser($data_str, $items, 'ymd'); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.namejuice.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.namejuice.php new file mode 100644 index 0000000..7bf898f --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.namejuice.php @@ -0,0 +1,53 @@ + 'Registrant Contact:', + 'admin' => 'Administrative Contact:', + 'tech' => 'Technical Contact:', + 'domain.name' => 'Domain name:', + 'domain.nserver.' => 'Name Servers:', + 'domain.created' => 'Creation date:', + 'domain.expires' => 'Expiration date:', + 'domain.changed' => 'Update date:', + 'domain.status' => 'Status:', + 'domain.sponsor' => 'Registration Service Provided By:' + ); + + return easy_parser($data_str, $items, 'dmy', false, true, true); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.nameking.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.nameking.php new file mode 100644 index 0000000..49680a1 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.nameking.php @@ -0,0 +1,70 @@ + 'Registrant', + 'admin' => 'Admin Contact', + 'tech' => 'Tech Contact', + 'billing' => 'Billing Contact', + 'domain.sponsor' => 'Registration Provided By:', + 'domain.created' => 'Creation Date:', + 'domain.expires' => 'Expiration Date:', + ); + + $extra = array( + 'tel--' => 'phone', + 'tel:' => 'phone', + 'tel --:' => 'phone', + 'email-:' => 'email', + 'email:' => 'email', + 'mail:' => 'email', + 'name--' => 'name', + 'org:' => 'organization', + 'zipcode:' => 'address.pcode', + 'postcode:' => 'address.pcode', + 'address:' => 'address.street', + 'city:' => 'address.city', + 'province:' => 'address.city.', + ',province:' => '', + ',country:' => 'address.country', + 'organization:' => 'organization', + 'city, province, post code:' => 'address.city' + ); + + return easy_parser($data_str, $items, 'mdy', $extra, false, true); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.names4ever.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.names4ever.php new file mode 100644 index 0000000..3cd046e --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.names4ever.php @@ -0,0 +1,54 @@ + 'Registrant:', + 'admin' => 'Administrative Contact', + 'tech' => 'Technical Contact', + 'domain.name' => 'Domain Name:', + 'domain.sponsor' => 'Registrar Name....:', + 'domain.referrer' => 'Registrar Homepage:', + 'domain.nserver' => 'DNS Servers:', + 'domain.created' => 'Record created on', + 'domain.expires' => 'Record expires on', + 'domain.changed' => 'Record last updated on', + 'domain.status' => 'Domain status:' + ); + + return easy_parser($data_str, $items, 'dmy', false, false, true); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.namevault.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.namevault.php new file mode 100644 index 0000000..a8199cf --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.namevault.php @@ -0,0 +1,52 @@ + 'Registrant', + 'admin' => 'Administrative Contact:', + 'tech' => 'Technical Contact:', + 'billing' => 'Billing Contact:', + 'domain.name' => 'Domain Name:', + 'domain.nserver.' => 'Name Servers', + 'domain.created' => 'Creation Date:', + 'domain.expires' => 'Expiration Date:', + 'domain.status' => 'Status:' + ); + + return easy_parser($data_str, $items, 'dmy', false, true, true); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.networksolutions.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.networksolutions.php new file mode 100644 index 0000000..c5ec38f --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.networksolutions.php @@ -0,0 +1,50 @@ + 'Registrant:', + 'admin' => 'Administrative Contact', + 'tech' => 'Technical Contact', + 'domain.name' => 'Domain Name:', + 'domain.nserver.' => 'Domain servers in listed order:', + 'domain.created' => 'Record created on', + 'domain.expires' => 'Record expires on' + ); + + return easy_parser($data_str, $items, 'dmy',false,true,true); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.nicco.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.nicco.php new file mode 100644 index 0000000..dc1fd4b --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.nicco.php @@ -0,0 +1,62 @@ + 'Holder Contact', + 'admin' => 'Admin Contact', + 'tech' => 'Tech. Contact', + 'domain.nserver.' => 'Nameservers', + 'domain.created' => 'Creation Date:', + 'domain.expires' => 'Expiration Date:' + ); + + $translate = array( + 'city:' => 'address.city', + 'org. name:' => 'organization', + 'address1:' => 'address.street.', + 'address2:' => 'address.street.', + 'state:' => 'address.state', + 'postal code:' => 'address.zip' + ); + + $r = get_blocks($data_str, $items, true); + $r['owner'] = get_contact($r['owner'],$translate); + $r['admin'] = get_contact($r['admin'],$translate,true); + $r['tech'] = get_contact($r['tech'],$translate,true); + return format_dates($r, 'dmy'); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.nicline.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.nicline.php new file mode 100644 index 0000000..77bbbfd --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.nicline.php @@ -0,0 +1,51 @@ + 'Registrant:', + 'admin' => 'Administrative contact:', + 'tech' => 'Technical contact:', + 'domain.name' => 'Domain name:', + 'domain.nserver.' => 'Domain servers in listed order:', + 'domain.created' => 'Created:', + 'domain.expires' => 'Expires:', + 'domain.changed' => 'Last updated:' + ); + + return easy_parser($data_str, $items, 'dmy'); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.onlinenic.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.onlinenic.php new file mode 100644 index 0000000..8bfe88d --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.onlinenic.php @@ -0,0 +1,83 @@ + 'Registrant:', + 'admin' => 'Administrator:', + 'tech' => 'Technical Contactor:', + 'billing' => 'Billing Contactor:', + 'domain.name' => 'Domain name:', + 'domain.name#' => 'Domain Name:', + 'domain.nserver' => 'Domain servers in listed order:', + 'domain.created' => 'Record created on ', + 'domain.expires' => 'Record expired on ', + 'domain.changed' => 'Record last updated at ' + ); + + $extra = array( + 'tel--' => 'phone', + 'tel:' => 'phone', + 'tel --:' => 'phone', + 'email-:' => 'email', + 'email:' => 'email', + 'mail:' => 'email', + 'name--' => 'name', + 'org:' => 'organization', + 'zipcode:' => 'address.pcode', + 'postcode:' => 'address.pcode', + 'address:' => 'address.street', + 'city:' => 'address.city', + 'province:' => '', + ',province:' => '', + ',country:' => 'address.country' + ); + + $r = easy_parser($data_str, $items, 'mdy',$extra,false,true); + + foreach($r as $key => $part) + if (isset($part['email'])) + { + @list($email,$phone) = explode(' ',$part['email']); + $email = str_replace('(','',$email); + $email = str_replace(')','',$email); + $r[$key]['email'] = $email; + if ($phone != '') $r[$key]['phone'] = $phone; + } + + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.opensrs.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.opensrs.php new file mode 100644 index 0000000..cdf21a5 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.opensrs.php @@ -0,0 +1,58 @@ + 'Registrant:', + 'admin' => 'Administrative Contact', + 'tech' => 'Technical Contact', + 'domain.name' => 'Domain name:', + '' => 'Registration Service Provider:', + 'domain.nserver' => 'Domain servers in listed order:', + 'domain.changed' => 'Record last updated on', + 'domain.created' => 'Record created on', + 'domain.expires' => 'Record expires on', + 'domain.sponsor' => 'Registrar of Record:' + ); + + $r = easy_parser($data_str, $items, 'dmy', false, false, true); + + if (isset($r['domain']['sponsor']) && is_array($r['domain']['sponsor'])) + $r['domain']['sponsor'] = $r['domain']['sponsor'][0]; + + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.ovh.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.ovh.php new file mode 100644 index 0000000..df6ee71 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.ovh.php @@ -0,0 +1,51 @@ + 'Registrant:', + 'admin' => 'Administrative Contact:', + 'tech' => 'Technical Contact:', + 'billing' => 'Billing Contact:', + 'domain.sponsor' => 'Registrar of Record:', + 'domain.changed' => 'Record last updated on', + 'domain.expires' => 'Record expires on', + 'domain.created' => 'Record created on' + ); + + return easy_parser($data_str, $items, 'mdy',false,false,true); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.php new file mode 100644 index 0000000..9f7f1b0 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.php @@ -0,0 +1,81 @@ + 'regrinfo.domain.name', + 'Registrar:' => 'regyinfo.registrar', + 'Whois Server:' => 'regyinfo.whois', + 'Referral URL:' => 'regyinfo.referrer', + 'Name Server:' => 'regrinfo.domain.nserver.', // identical descriptors + 'Updated Date:' => 'regrinfo.domain.changed', + 'Last Updated On:' => 'regrinfo.domain.changed', + 'EPP Status:' => 'regrinfo.domain.epp_status.', + 'Status:' => 'regrinfo.domain.status.', + 'Creation Date:' => 'regrinfo.domain.created', + 'Created On:' => 'regrinfo.domain.created', + 'Expiration Date:' => 'regrinfo.domain.expires', + 'Updated Date:' => 'regrinfo.domain.changed', + 'No match for ' => 'nodomain' + ); + + function parse($data, $query) + { + $this->Query = array(); + //$this->SUBVERSION = sprintf('%s-%s', $query['handler'], $this->HANDLER_VERSION); + $this->result = generic_parser_b($data['rawdata'], $this->REG_FIELDS, 'dmy'); + + unset($this->result['registered']); + + if (isset($this->result['nodomain'])) + { + unset($this->result['nodomain']); + $this->result['regrinfo']['registered'] = 'no'; + return $this->result; + } + + if ($this->deep_whois) $this->result = $this->DeepWhois($query,$this->result); + + // Next server could fail to return data + if (empty($this->result['rawdata']) || count($this->result['rawdata']) < 3) + $this->result['rawdata'] = $data['rawdata']; + + // Domain is registered no matter what next server says + $this->result['regrinfo']['registered'] = 'yes'; + + return $this->result; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.psiusa.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.psiusa.php new file mode 100644 index 0000000..6a266a8 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.psiusa.php @@ -0,0 +1,90 @@ + 'domain.created', + 'last-changed:' => 'domain.changed', + 'status:' => 'domain.status', + '[owner-c] fname:' => 'owner.name.first', + '[owner-c] lname:' => 'owner.name.last', + '[owner-c] org:' => 'owner.organization', + '[owner-c] address:' => 'owner.address.street', + '[owner-c] city:' => 'owner.address.city', + '[owner-c] pcode:' => 'owner.address.pcode', + '[owner-c] country:' => 'owner.address.country', + '[owner-c] state:' => 'owner.address.state', + '[owner-c] phone:' => 'owner.phone', + '[owner-c] fax:' => 'owner.fax', + '[owner-c] email:' => 'owner.email', + '[admin-c] fname:' => 'admin.name.first', + '[admin-c] lname:' => 'admin.name.last', + '[admin-c] org:' => 'admin.organization', + '[admin-c] address:' => 'admin.address.street', + '[admin-c] city:' => 'admin.address.city', + '[admin-c] pcode:' => 'admin.address.pcode', + '[admin-c] country:' => 'admin.address.country', + '[admin-c] state:' => 'admin.address.state', + '[admin-c] phone:' => 'admin.phone', + '[admin-c] fax:' => 'admin.fax', + '[admin-c] email:' => 'admin.email', + '[tech-c] fname:' => 'tech.name.first', + '[tech-c] lname:' => 'tech.name.last', + '[tech-c] org:' => 'tech.organization', + '[tech-c] address:' => 'tech.address.street', + '[tech-c] city:' => 'tech.address.city', + '[tech-c] pcode:' => 'tech.address.pcode', + '[tech-c] country:' => 'tech.address.country', + '[tech-c] state:' => 'tech.address.state', + '[tech-c] phone:' => 'tech.phone', + '[tech-c] fax:' => 'tech.fax', + '[tech-c] email:' => 'tech.email', + '[zone-c] fname:' => 'zone.name.first', + '[zone-c] lname:' => 'zone.name.last', + '[zone-c] org:' => 'zone.organization', + '[zone-c] address:' => 'zone.address.street', + '[zone-c] city:' => 'zone.address.city', + '[zone-c] pcode:' => 'zone.address.pcode', + '[zone-c] country:' => 'zone.address.country', + '[zone-c] state:' => 'zone.address.state', + '[zone-c] phone:' => 'zone.phone', + '[zone-c] fax:' => 'zone.fax', + '[zone-c] email:' => 'zone.email', + ); + + return generic_parser_b($data_str, $items); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.publicdomainregistry.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.publicdomainregistry.php new file mode 100644 index 0000000..3982552 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.publicdomainregistry.php @@ -0,0 +1,57 @@ + 'Registrant:', + 'owner#' => '(Registrant):', + 'admin' => 'Administrative Contact', + 'tech' => 'Technical Contact', + 'billing' => 'Billing Contact', + 'domain.name' => 'Domain name:', + 'domain.sponsor' => 'Registration Service Provided By:', + 'domain.nserver' => 'Domain servers in listed order:', + 'domain.changed' => 'Record last updated ', + 'domain.created' => 'Record created on', + 'domain.created#' => 'Creation Date:', + 'domain.expires' => 'Record expires on', + 'domain.expires#' => 'Expiration Date:', + 'domain.status' => 'Status:' + ); + + return easy_parser($data_str, $items, 'mdy', false, true, true); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.register.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.register.php new file mode 100644 index 0000000..51f3169 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.register.php @@ -0,0 +1,62 @@ + 'Registrant Info:', + 'owner#1' => 'Organization:', + 'owner#2' => 'Registrant:', + 'owner#3' => 'Registrant Contact:', + 'admin' => 'Administrative', + 'tech' => 'Technical', + 'zone' => 'Zone', + 'domain.sponsor#0' => 'Registrar Name....:', + 'domain.sponsor#1' => 'Registration Service Provided By:', + 'domain.referrer' => 'Registrar Homepage:', + 'domain.nserver' => 'Domain servers in listed order:', + 'domain.nserver' => 'DNS Servers:', + 'domain.name' => 'Domain name:', + 'domain.created#0' => 'Created on..............:', + 'domain.created#1' => 'Creation date:', + 'domain.expires#0' => 'Expires on..............:', + 'domain.expires#1' => 'Expiration date:', + 'domain.changed' => 'Record last updated on..:', + 'domain.status' => 'Status:' + ); + + return easy_parser($data_str, $items, 'ymd'); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.rrpproxy.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.rrpproxy.php new file mode 100644 index 0000000..2a81430 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.rrpproxy.php @@ -0,0 +1,92 @@ + 'domain.created', + 'updated-date:' => 'domain.changed', + 'registration-expiration-date:' => 'domain.expires', + 'RSP:' => 'domain.sponsor', + 'URL:' => 'domain.referrer', + 'owner-nom.contact:' => 'owner.handle', + 'owner-fname:' => 'owner.name.first', + 'owner-lname:' => 'owner.name.last', + 'owner-organization:' => 'owner.organization', + 'owner-street:' => 'owner.address.street', + 'owner-city:' => 'owner.address.city', + 'owner-zip:' => 'owner.address.pcode', + 'owner-country:' => 'owner.address.country', + 'owner-phone:' => 'owner.phone', + 'owner-fax:' => 'owner.fax', + 'owner-email:' => 'owner.email', + 'admin-nom.contact:' => 'admin.handle', + 'admin-fname:' => 'admin.name.first', + 'admin-lname:' => 'admin.name.last', + 'admin-organization:' => 'admin.organization', + 'admin-street:' => 'admin.address.street', + 'admin-city:' => 'admin.address.city', + 'admin-zip:' => 'admin.address.pcode', + 'admin-country:' => 'admin.address.country', + 'admin-phone:' => 'admin.phone', + 'admin-fax:' => 'admin.fax', + 'admin-email:' => 'admin.email', + 'tech-nom.contact:' => 'tech.handle', + 'tech-fname:' => 'tech.name.first', + 'tech-lname:' => 'tech.name.last', + 'tech-organization:' => 'tech.organization', + 'tech-street:' => 'tech.address.street', + 'tech-city:' => 'tech.address.city', + 'tech-zip:' => 'tech.address.pcode', + 'tech-country:' => 'tech.address.country', + 'tech-phone:' => 'tech.phone', + 'tech-fax:' => 'tech.fax', + 'tech-email:' => 'tech.email', + 'billing-nom.contact:' => 'billing.handle', + 'billing-fname:' => 'billing.name.first', + 'billing-lname:' => 'billing.name.last', + 'billing-organization:' => 'billing.organization', + 'billing-street:' => 'billing.address.street', + 'billing-city:' => 'billing.address.city', + 'billing-zip:' => 'billing.address.pcode', + 'billing-country:' => 'billing.address.country', + 'billing-phone:' => 'billing.phone', + 'billing-fax:' => 'billing.fax', + 'billing-email:' => 'billing.email' + ); + + return generic_parser_b($data_str, $items); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.schlund.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.schlund.php new file mode 100644 index 0000000..3de3fe6 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.schlund.php @@ -0,0 +1,86 @@ + 'domain.created', + 'last-changed:' => 'domain.changed', + 'status:' => 'domain.status', + 'registrant-firstname:' => 'owner.name.first', + 'registrant-lastname:' => 'owner.name.last', + 'registrant-organization:' => 'owner.organization', + 'registrant-street1:' => 'owner.address.street.', + 'registrant-street2:' => 'owner.address.street.', + 'registrant-pcode:' => 'owner.address.pcode', + 'registrant-city:' => 'owner.address.city', + 'registrant-ccode:' => 'owner.address.country', + 'registrant-phone:' => 'owner.phone', + 'registrant-email:' => 'owner.email', + 'admin-c-firstname:' => 'admin.name.first', + 'admin-c-lastname:' => 'admin.name.last', + 'admin-c-organization:' => 'admin.organization', + 'admin-c-street1:' => 'admin.address.street.', + 'admin-c-street2:' => 'admin.address.street.', + 'admin-c-pcode:' => 'admin.address.pcode', + 'admin-c-city:' => 'admin.address.city', + 'admin-c-ccode:' => 'admin.address.country', + 'admin-c-phone:' => 'admin.phone', + 'admin-c-email:' => 'admin.email', + 'tech-c-firstname:' => 'tech.name.first', + 'tech-c-lastname:' => 'tech.name.last', + 'tech-c-organization:' => 'tech.organization', + 'tech-c-street1:' => 'tech.address.street.', + 'tech-c-street2:' => 'tech.address.street.', + 'tech-c-pcode:' => 'tech.address.pcode', + 'tech-c-city:' => 'tech.address.city', + 'tech-c-ccode:' => 'tech.address.country', + 'tech-c-phone:' => 'tech.phone', + 'tech-c-email:' => 'tech.email', + 'bill-c-firstname:' => 'billing.name.first', + 'bill-c-lastname:' => 'billing.name.last', + 'bill-c-organization:' => 'billing.organization', + 'bill-c-street1:' => 'billing.address.street.', + 'bill-c-street2:' => 'billing.address.street.', + 'bill-c-pcode:' => 'billing.address.pcode', + 'bill-c-city:' => 'billing.address.city', + 'bill-c-ccode:' => 'billing.address.country', + 'bill-c-phone:' => 'billing.phone', + 'bill-c-email:' => 'billing.email' + ); + + return generic_parser_b($data_str, $items); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.srsplus.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.srsplus.php new file mode 100644 index 0000000..1ab2c4e --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.srsplus.php @@ -0,0 +1,51 @@ + 'Registrant:', + 'admin' => 'Administrative', + 'tech' => 'Technical', + 'billing' => 'Billing', + 'domain.name' => 'Domain Name:', + 'domain.nserver' => 'Domain servers:', + 'domain.created' => 'Record created on', + 'domain.expires' => 'Record expires on' + ); + + return easy_parser($data_str, $items, 'ymd',false,true,true); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.tmagnic.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.tmagnic.php new file mode 100644 index 0000000..0df7bed --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.tmagnic.php @@ -0,0 +1,52 @@ + 'Owner Contact:', + 'admin' => 'Admin Contact', + 'tech' => 'Technical Contact', + 'domain.name' => 'Domain Name:', + 'domain.nserver.' => 'Domain servers in listed order:', + 'domain.expires' => 'Record expires on: ', + 'domain.changed' => 'Record last updated on: ', + '' => 'Zone Contact', + '#' => 'Punycode Name:' + ); + + return easy_parser($data_str, $items, 'ymd',false,false,true); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.tvcorp.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.tvcorp.php new file mode 100644 index 0000000..ee842e0 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.tvcorp.php @@ -0,0 +1,50 @@ + 'Registrant', + 'admin' => 'Admin', + 'tech' => 'Technical', + 'billing' => 'Billing', + 'domain.nserver.' => 'Domain servers:', + 'domain.created' => 'Record created on', + 'domain.expires' => 'Record expires on' + ); + + return easy_parser($data_str, $items, 'mdy'); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.wildwestdomains.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.wildwestdomains.php new file mode 100644 index 0000000..22e692d --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.gtld.wildwestdomains.php @@ -0,0 +1,52 @@ + 'Registrant:', + 'admin' => 'Administrative Contact:', + 'tech' => 'Technical Contact:', + 'domain.name' => 'Domain name:', + 'domain.sponsor'=> 'Registered through:', + 'domain.nserver' => 'Domain servers in listed order:', + 'domain.created' => 'Created on:', + 'domain.expires' => 'Expires on:', + 'domain.changed' => 'Last Updated on:' + ); + + return easy_parser($data_str, $items, 'mdy'); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.hu.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.hu.php new file mode 100644 index 0000000..f8dd3ae --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.hu.php @@ -0,0 +1,95 @@ + 'fax', + 'e-mail' => 'email', + 'hun-id' => 'handle', + 'person' => 'name', + 'nameserver' => 'nserver', + 'person' => 'name', + 'org' => 'organization', + 'registered' => 'created' + ); + + $contacts = array ( + 'registrar' => 'owner', + 'admin-c' => 'admin', + 'tech-c' => 'tech', + 'billing-c' => 'billing', + 'zone-c' => 'zone', + 'owner-hun-id' => 'owner' + ); + + // make those broken hungary comments standards-conforming + // replace first found hun-id with owner-hun-id (will be parsed later on) + // make output UTF-8 + + $comments = true; + $owner_id = true; + + foreach ($data_str['rawdata'] as $i => $val) + { + if ($comments) + { + if (strpos($data_str['rawdata'][$i],'domain:') === false) + { + if ($i) $data_str['rawdata'][$i] = '% '.$data_str['rawdata'][$i]; + } + else + $comments = false; + } + else + if ($owner_id && substr($data_str['rawdata'][$i],0,7) == 'hun-id:') + { + $data_str['rawdata'][$i] = 'owner-'.$data_str['rawdata'][$i]; + $owner_id = false; + } + } + + $reg = generic_parser_a($data_str['rawdata'],$translate,$contacts); + + unset($reg['domain']['organization']); + unset($reg['domain']['address']); + unset($reg['domain']['phone']); + unset($reg['domain']['fax']); + + $r['regrinfo'] = $reg; + $r['regyinfo'] = array('referrer'=>'http://www.nic.hu','registrar'=>'HUNIC'); + return format_dates($r,'ymd'); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.icon.png b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.icon.png new file mode 100644 index 0000000..b1e905e Binary files /dev/null and b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.icon.png differ diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.idna.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.idna.php new file mode 100644 index 0000000..ed2bae2 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.idna.php @@ -0,0 +1,969 @@ + + * @copyright 2004-2007 phlyLabs Berlin, http://phlylabs.de + * @version 0.5.1 + * + */ +class idna_convert +{ + /** + * Holds all relevant mapping tables, loaded from a seperate file on construct + * See RFC3454 for details + * + * @var array + * @access private + */ + var $NP = array(); + + // Internal settings, do not mess with them + var $_punycode_prefix = 'xn--'; + var $_invalid_ucs = 0x80000000; + var $_max_ucs = 0x10FFFF; + var $_base = 36; + var $_tmin = 1; + var $_tmax = 26; + var $_skew = 38; + var $_damp = 700; + var $_initial_bias = 72; + var $_initial_n = 0x80; + var $_sbase = 0xAC00; + var $_lbase = 0x1100; + var $_vbase = 0x1161; + var $_tbase = 0x11A7; + var $_lcount = 19; + var $_vcount = 21; + var $_tcount = 28; + var $_ncount = 588; // _vcount * _tcount + var $_scount = 11172; // _lcount * _tcount * _vcount + var $_error = false; + + // See {@link set_paramter()} for details of how to change the following + // settings from within your script / application + var $_api_encoding = 'utf8'; // Default input charset is UTF-8 + var $_allow_overlong = false; // Overlong UTF-8 encodings are forbidden + var $_strict_mode = false; // Behave strict or not + + // The constructor + function idna_convert($options = false) + { + $this->slast = $this->_sbase + $this->_lcount * $this->_vcount * $this->_tcount; + if (function_exists('file_get_contents')) { + $this->NP = unserialize(file_get_contents(dirname(__FILE__).'/npdata.ser')); + } else { + $this->NP = unserialize(join('', file(dirname(__FILE__).'/npdata.ser'))); + } + // If parameters are given, pass these to the respective method + if (is_array($options)) { + return $this->set_parameter($options); + } + return true; + } + + /** + * Sets a new option value. Available options and values: + * [encoding - Use either UTF-8, UCS4 as array or UCS4 as string as input ('utf8' for UTF-8, + * 'ucs4_string' and 'ucs4_array' respectively for UCS4); The output is always UTF-8] + * [overlong - Unicode does not allow unnecessarily long encodings of chars, + * to allow this, set this parameter to true, else to false; + * default is false.] + * [strict - true: strict mode, good for registration purposes - Causes errors + * on failures; false: loose mode, ideal for "wildlife" applications + * by silently ignoring errors and returning the original input instead + * + * @param mixed Parameter to set (string: single parameter; array of Parameter => Value pairs) + * @param string Value to use (if parameter 1 is a string) + * @return boolean true on success, false otherwise + * @access public + */ + function set_parameter($option, $value = false) + { + if (!is_array($option)) { + $option = array($option => $value); + } + foreach ($option as $k => $v) { + switch ($k) { + case 'encoding': + switch ($v) { + case 'utf8': + case 'ucs4_string': + case 'ucs4_array': + $this->_api_encoding = $v; + break; + default: + $this->_error('Set Parameter: Unknown parameter '.$v.' for option '.$k); + return false; + } + break; + case 'overlong': + $this->_allow_overlong = ($v) ? true : false; + break; + case 'strict': + $this->_strict_mode = ($v) ? true : false; + break; + default: + $this->_error('Set Parameter: Unknown option '.$k); + return false; + } + } + return true; + } + + /** + * Decode a given ACE domain name + * @param string Domain name (ACE string) + * [@param string Desired output encoding, see {@link set_parameter}] + * @return string Decoded Domain name (UTF-8 or UCS-4) + * @access public + */ + function decode($input, $one_time_encoding = false) + { + // Optionally set + if ($one_time_encoding) { + switch ($one_time_encoding) { + case 'utf8': + case 'ucs4_string': + case 'ucs4_array': + break; + default: + $this->_error('Unknown encoding '.$one_time_encoding); + return false; + } + } + // Make sure to drop any newline characters around + $input = trim($input); + + // Negotiate input and try to determine, whether it is a plain string, + // an email address or something like a complete URL + if (strpos($input, '@')) { // Maybe it is an email address + // No no in strict mode + if ($this->_strict_mode) { + $this->_error('Only simple domain name parts can be handled in strict mode'); + return false; + } + list ($email_pref, $input) = explode('@', $input, 2); + $arr = explode('.', $input); + foreach ($arr as $k => $v) { + if (preg_match('!^'.preg_quote($this->_punycode_prefix, '!').'!', $v)) { + $conv = $this->_decode($v); + if ($conv) $arr[$k] = $conv; + } + } + $input = join('.', $arr); + $arr = explode('.', $email_pref); + foreach ($arr as $k => $v) { + if (preg_match('!^'.preg_quote($this->_punycode_prefix, '!').'!', $v)) { + $conv = $this->_decode($v); + if ($conv) $arr[$k] = $conv; + } + } + $email_pref = join('.', $arr); + $return = $email_pref . '@' . $input; + } elseif (preg_match('![:\./]!', $input)) { // Or a complete domain name (with or without paths / parameters) + // No no in strict mode + if ($this->_strict_mode) { + $this->_error('Only simple domain name parts can be handled in strict mode'); + return false; + } + $parsed = parse_url($input); + if (isset($parsed['host'])) { + $arr = explode('.', $parsed['host']); + foreach ($arr as $k => $v) { + $conv = $this->_decode($v); + if ($conv) $arr[$k] = $conv; + } + $parsed['host'] = join('.', $arr); + $return = + (empty($parsed['scheme']) ? '' : $parsed['scheme'].(strtolower($parsed['scheme']) == 'mailto' ? ':' : '://')) + .(empty($parsed['user']) ? '' : $parsed['user'].(empty($parsed['pass']) ? '' : ':'.$parsed['pass']).'@') + .$parsed['host'] + .(empty($parsed['port']) ? '' : ':'.$parsed['port']) + .(empty($parsed['path']) ? '' : $parsed['path']) + .(empty($parsed['query']) ? '' : '?'.$parsed['query']) + .(empty($parsed['fragment']) ? '' : '#'.$parsed['fragment']); + } else { // parse_url seems to have failed, try without it + $arr = explode('.', $input); + foreach ($arr as $k => $v) { + $conv = $this->_decode($v); + $arr[$k] = ($conv) ? $conv : $v; + } + $return = join('.', $arr); + } + } else { // Otherwise we consider it being a pure domain name string + $return = $this->_decode($input); + if (!$return) $return = $input; + } + // The output is UTF-8 by default, other output formats need conversion here + // If one time encoding is given, use this, else the objects property + switch (($one_time_encoding) ? $one_time_encoding : $this->_api_encoding) { + case 'utf8': + return $return; + break; + case 'ucs4_string': + return $this->_ucs4_to_ucs4_string($this->_utf8_to_ucs4($return)); + break; + case 'ucs4_array': + return $this->_utf8_to_ucs4($return); + break; + default: + $this->_error('Unsupported output format'); + return false; + } + } + + /** + * Encode a given UTF-8 domain name + * @param string Domain name (UTF-8 or UCS-4) + * [@param string Desired input encoding, see {@link set_parameter}] + * @return string Encoded Domain name (ACE string) + * @access public + */ + function encode($decoded, $one_time_encoding = false) + { + // Forcing conversion of input to UCS4 array + // If one time encoding is given, use this, else the objects property + switch ($one_time_encoding ? $one_time_encoding : $this->_api_encoding) { + case 'utf8': + $decoded = $this->_utf8_to_ucs4($decoded); + break; + case 'ucs4_string': + $decoded = $this->_ucs4_string_to_ucs4($decoded); + case 'ucs4_array': + break; + default: + $this->_error('Unsupported input format: '.($one_time_encoding ? $one_time_encoding : $this->_api_encoding)); + return false; + } + + // No input, no output, what else did you expect? + if (empty($decoded)) return ''; + + // Anchors for iteration + $last_begin = 0; + // Output string + $output = ''; + foreach ($decoded as $k => $v) { + // Make sure to use just the plain dot + switch($v) { + case 0x3002: + case 0xFF0E: + case 0xFF61: + $decoded[$k] = 0x2E; + // Right, no break here, the above are converted to dots anyway + // Stumbling across an anchoring character + case 0x2E: + case 0x2F: + case 0x3A: + case 0x3F: + case 0x40: + // Neither email addresses nor URLs allowed in strict mode + if ($this->_strict_mode) { + $this->_error('Neither email addresses nor URLs are allowed in strict mode.'); + return false; + } else { + // Skip first char + if ($k) { + $encoded = ''; + $encoded = $this->_encode(array_slice($decoded, $last_begin, (($k)-$last_begin))); + if ($encoded) { + $output .= $encoded; + } else { + $output .= $this->_ucs4_to_utf8(array_slice($decoded, $last_begin, (($k)-$last_begin))); + } + $output .= chr($decoded[$k]); + } + $last_begin = $k + 1; + } + } + } + // Catch the rest of the string + if ($last_begin) { + $inp_len = sizeof($decoded); + $encoded = ''; + $encoded = $this->_encode(array_slice($decoded, $last_begin, (($inp_len)-$last_begin))); + if ($encoded) { + $output .= $encoded; + } else { + $output .= $this->_ucs4_to_utf8(array_slice($decoded, $last_begin, (($inp_len)-$last_begin))); + } + return $output; + } else { + if ($output = $this->_encode($decoded)) { + return $output; + } else { + return $this->_ucs4_to_utf8($decoded); + } + } + } + + /** + * Use this method to get the last error ocurred + * @param void + * @return string The last error, that occured + * @access public + */ + function get_last_error() + { + return $this->_error; + } + + /** + * The actual decoding algorithm + * @access private + */ + function _decode($encoded) + { + // We do need to find the Punycode prefix + if (!preg_match('!^'.preg_quote($this->_punycode_prefix, '!').'!', $encoded)) { + $this->_error('This is not a punycode string'); + return false; + } + $encode_test = preg_replace('!^'.preg_quote($this->_punycode_prefix, '!').'!', '', $encoded); + // If nothing left after removing the prefix, it is hopeless + if (!$encode_test) { + $this->_error('The given encoded string was empty'); + return false; + } + // Find last occurence of the delimiter + $delim_pos = strrpos($encoded, '-'); + if ($delim_pos > strlen($this->_punycode_prefix)) { + for ($k = strlen($this->_punycode_prefix); $k < $delim_pos; ++$k) { + $decoded[] = ord($encoded{$k}); + } + } else { + $decoded = array(); + } + $deco_len = count($decoded); + $enco_len = strlen($encoded); + + // Wandering through the strings; init + $is_first = true; + $bias = $this->_initial_bias; + $idx = 0; + $char = $this->_initial_n; + + for ($enco_idx = ($delim_pos) ? ($delim_pos + 1) : 0; $enco_idx < $enco_len; ++$deco_len) { + for ($old_idx = $idx, $w = 1, $k = $this->_base; 1 ; $k += $this->_base) { + $digit = $this->_decode_digit($encoded{$enco_idx++}); + $idx += $digit * $w; + $t = ($k <= $bias) ? $this->_tmin : + (($k >= $bias + $this->_tmax) ? $this->_tmax : ($k - $bias)); + if ($digit < $t) break; + $w = (int) ($w * ($this->_base - $t)); + } + $bias = $this->_adapt($idx - $old_idx, $deco_len + 1, $is_first); + $is_first = false; + $char += (int) ($idx / ($deco_len + 1)); + $idx %= ($deco_len + 1); + if ($deco_len > 0) { + // Make room for the decoded char + for ($i = $deco_len; $i > $idx; $i--) { + $decoded[$i] = $decoded[($i - 1)]; + } + } + $decoded[$idx++] = $char; + } + return $this->_ucs4_to_utf8($decoded); + } + + /** + * The actual encoding algorithm + * @access private + */ + function _encode($decoded) + { + // We cannot encode a domain name containing the Punycode prefix + $extract = strlen($this->_punycode_prefix); + $check_pref = $this->_utf8_to_ucs4($this->_punycode_prefix); + $check_deco = array_slice($decoded, 0, $extract); + + if ($check_pref == $check_deco) { + $this->_error('This is already a punycode string'); + return false; + } + // We will not try to encode strings consisting of basic code points only + $encodable = false; + foreach ($decoded as $k => $v) { + if ($v > 0x7a) { + $encodable = true; + break; + } + } + if (!$encodable) { + $this->_error('The given string does not contain encodable chars'); + return false; + } + + // Do NAMEPREP + $decoded = $this->_nameprep($decoded); + if (!$decoded || !is_array($decoded)) return false; // NAMEPREP failed + + $deco_len = count($decoded); + if (!$deco_len) return false; // Empty array + + $codecount = 0; // How many chars have been consumed + + $encoded = ''; + // Copy all basic code points to output + for ($i = 0; $i < $deco_len; ++$i) { + $test = $decoded[$i]; + // Will match [-0-9a-zA-Z] + if ((0x2F < $test && $test < 0x40) || (0x40 < $test && $test < 0x5B) + || (0x60 < $test && $test <= 0x7B) || (0x2D == $test)) { + $encoded .= chr($decoded[$i]); + $codecount++; + } + } + if ($codecount == $deco_len) return $encoded; // All codepoints were basic ones + + // Start with the prefix; copy it to output + $encoded = $this->_punycode_prefix.$encoded; + + // If we have basic code points in output, add an hyphen to the end + if ($codecount) $encoded .= '-'; + + // Now find and encode all non-basic code points + $is_first = true; + $cur_code = $this->_initial_n; + $bias = $this->_initial_bias; + $delta = 0; + while ($codecount < $deco_len) { + // Find the smallest code point >= the current code point and + // remember the last ouccrence of it in the input + for ($i = 0, $next_code = $this->_max_ucs; $i < $deco_len; $i++) { + if ($decoded[$i] >= $cur_code && $decoded[$i] <= $next_code) { + $next_code = $decoded[$i]; + } + } + + $delta += ($next_code - $cur_code) * ($codecount + 1); + $cur_code = $next_code; + + // Scan input again and encode all characters whose code point is $cur_code + for ($i = 0; $i < $deco_len; $i++) { + if ($decoded[$i] < $cur_code) { + $delta++; + } elseif ($decoded[$i] == $cur_code) { + for ($q = $delta, $k = $this->_base; 1; $k += $this->_base) { + $t = ($k <= $bias) ? $this->_tmin : + (($k >= $bias + $this->_tmax) ? $this->_tmax : $k - $bias); + if ($q < $t) break; + $encoded .= $this->_encode_digit(intval($t + (($q - $t) % ($this->_base - $t)))); //v0.4.5 Changed from ceil() to intval() + $q = (int) (($q - $t) / ($this->_base - $t)); + } + $encoded .= $this->_encode_digit($q); + $bias = $this->_adapt($delta, $codecount+1, $is_first); + $codecount++; + $delta = 0; + $is_first = false; + } + } + $delta++; + $cur_code++; + } + return $encoded; + } + + /** + * Adapt the bias according to the current code point and position + * @access private + */ + function _adapt($delta, $npoints, $is_first) + { + $delta = intval($is_first ? ($delta / $this->_damp) : ($delta / 2)); + $delta += intval($delta / $npoints); + for ($k = 0; $delta > (($this->_base - $this->_tmin) * $this->_tmax) / 2; $k += $this->_base) { + $delta = intval($delta / ($this->_base - $this->_tmin)); + } + return intval($k + ($this->_base - $this->_tmin + 1) * $delta / ($delta + $this->_skew)); + } + + /** + * Encoding a certain digit + * @access private + */ + function _encode_digit($d) + { + return chr($d + 22 + 75 * ($d < 26)); + } + + /** + * Decode a certain digit + * @access private + */ + function _decode_digit($cp) + { + $cp = ord($cp); + return ($cp - 48 < 10) ? $cp - 22 : (($cp - 65 < 26) ? $cp - 65 : (($cp - 97 < 26) ? $cp - 97 : $this->_base)); + } + + /** + * Internal error handling method + * @access private + */ + function _error($error = '') + { + $this->_error = $error; + } + + /** + * Do Nameprep according to RFC3491 and RFC3454 + * @param array Unicode Characters + * @return string Unicode Characters, Nameprep'd + * @access private + */ + function _nameprep($input) + { + $output = array(); + $error = false; + // + // Mapping + // Walking through the input array, performing the required steps on each of + // the input chars and putting the result into the output array + // While mapping required chars we apply the cannonical ordering + foreach ($input as $v) { + // Map to nothing == skip that code point + if (in_array($v, $this->NP['map_nothing'])) continue; + + // Try to find prohibited input + if (in_array($v, $this->NP['prohibit']) || in_array($v, $this->NP['general_prohibited'])) { + $this->_error('NAMEPREP: Prohibited input U+'.sprintf('%08X', $v)); + return false; + } + foreach ($this->NP['prohibit_ranges'] as $range) { + if ($range[0] <= $v && $v <= $range[1]) { + $this->_error('NAMEPREP: Prohibited input U+'.sprintf('%08X', $v)); + return false; + } + } + // + // Hangul syllable decomposition + if (0xAC00 <= $v && $v <= 0xD7AF) { + foreach ($this->_hangul_decompose($v) as $out) { + $output[] = (int) $out; + } + // There's a decomposition mapping for that code point + } elseif (isset($this->NP['replacemaps'][$v])) { + foreach ($this->_apply_cannonical_ordering($this->NP['replacemaps'][$v]) as $out) { + $output[] = (int) $out; + } + } else { + $output[] = (int) $v; + } + } + // Before applying any Combining, try to rearrange any Hangul syllables + $output = $this->_hangul_compose($output); + // + // Combine code points + // + $last_class = 0; + $last_starter = 0; + $out_len = count($output); + for ($i = 0; $i < $out_len; ++$i) { + $class = $this->_get_combining_class($output[$i]); + if ((!$last_class || $last_class > $class) && $class) { + // Try to match + $seq_len = $i - $last_starter; + $out = $this->_combine(array_slice($output, $last_starter, $seq_len)); + // On match: Replace the last starter with the composed character and remove + // the now redundant non-starter(s) + if ($out) { + $output[$last_starter] = $out; + if (count($out) != $seq_len) { + for ($j = $i+1; $j < $out_len; ++$j) { + $output[$j-1] = $output[$j]; + } + unset($output[$out_len]); + } + // Rewind the for loop by one, since there can be more possible compositions + $i--; + $out_len--; + $last_class = ($i == $last_starter) ? 0 : $this->_get_combining_class($output[$i-1]); + continue; + } + } + // The current class is 0 + if (!$class) $last_starter = $i; + $last_class = $class; + } + return $output; + } + + /** + * Decomposes a Hangul syllable + * (see http://www.unicode.org/unicode/reports/tr15/#Hangul + * @param integer 32bit UCS4 code point + * @return array Either Hangul Syllable decomposed or original 32bit value as one value array + * @access private + */ + function _hangul_decompose($char) + { + $sindex = (int) $char - $this->_sbase; + if ($sindex < 0 || $sindex >= $this->_scount) { + return array($char); + } + $result = array(); + $result[] = (int) $this->_lbase + $sindex / $this->_ncount; + $result[] = (int) $this->_vbase + ($sindex % $this->_ncount) / $this->_tcount; + $T = intval($this->_tbase + $sindex % $this->_tcount); + if ($T != $this->_tbase) $result[] = $T; + return $result; + } + /** + * Ccomposes a Hangul syllable + * (see http://www.unicode.org/unicode/reports/tr15/#Hangul + * @param array Decomposed UCS4 sequence + * @return array UCS4 sequence with syllables composed + * @access private + */ + function _hangul_compose($input) + { + $inp_len = count($input); + if (!$inp_len) return array(); + $result = array(); + $last = (int) $input[0]; + $result[] = $last; // copy first char from input to output + + for ($i = 1; $i < $inp_len; ++$i) { + $char = (int) $input[$i]; + $sindex = $last - $this->_sbase; + $lindex = $last - $this->_lbase; + $vindex = $char - $this->_vbase; + $tindex = $char - $this->_tbase; + // Find out, whether two current characters are LV and T + if (0 <= $sindex && $sindex < $this->_scount && ($sindex % $this->_tcount == 0) + && 0 <= $tindex && $tindex <= $this->_tcount) { + // create syllable of form LVT + $last += $tindex; + $result[(count($result) - 1)] = $last; // reset last + continue; // discard char + } + // Find out, whether two current characters form L and V + if (0 <= $lindex && $lindex < $this->_lcount && 0 <= $vindex && $vindex < $this->_vcount) { + // create syllable of form LV + $last = (int) $this->_sbase + ($lindex * $this->_vcount + $vindex) * $this->_tcount; + $result[(count($result) - 1)] = $last; // reset last + continue; // discard char + } + // if neither case was true, just add the character + $last = $char; + $result[] = $char; + } + return $result; + } + + /** + * Returns the combining class of a certain wide char + * @param integer Wide char to check (32bit integer) + * @return integer Combining class if found, else 0 + * @access private + */ + function _get_combining_class($char) + { + return isset($this->NP['norm_combcls'][$char]) ? $this->NP['norm_combcls'][$char] : 0; + } + + /** + * Apllies the cannonical ordering of a decomposed UCS4 sequence + * @param array Decomposed UCS4 sequence + * @return array Ordered USC4 sequence + * @access private + */ + function _apply_cannonical_ordering($input) + { + $swap = true; + $size = count($input); + while ($swap) { + $swap = false; + $last = $this->_get_combining_class(intval($input[0])); + for ($i = 0; $i < $size-1; ++$i) { + $next = $this->_get_combining_class(intval($input[$i+1])); + if ($next != 0 && $last > $next) { + // Move item leftward until it fits + for ($j = $i + 1; $j > 0; --$j) { + if ($this->_get_combining_class(intval($input[$j-1])) <= $next) break; + $t = intval($input[$j]); + $input[$j] = intval($input[$j-1]); + $input[$j-1] = $t; + $swap = true; + } + // Reentering the loop looking at the old character again + $next = $last; + } + $last = $next; + } + } + return $input; + } + + /** + * Do composition of a sequence of starter and non-starter + * @param array UCS4 Decomposed sequence + * @return array Ordered USC4 sequence + * @access private + */ + function _combine($input) + { + $inp_len = count($input); + foreach ($this->NP['replacemaps'] as $np_src => $np_target) { + if ($np_target[0] != $input[0]) continue; + if (count($np_target) != $inp_len) continue; + $hit = false; + foreach ($input as $k2 => $v2) { + if ($v2 == $np_target[$k2]) { + $hit = true; + } else { + $hit = false; + break; + } + } + if ($hit) return $np_src; + } + return false; + } + + /** + * This converts an UTF-8 encoded string to its UCS-4 representation + * By talking about UCS-4 "strings" we mean arrays of 32bit integers representing + * each of the "chars". This is due to PHP not being able to handle strings with + * bit depth different from 8. This apllies to the reverse method _ucs4_to_utf8(), too. + * The following UTF-8 encodings are supported: + * bytes bits representation + * 1 7 0xxxxxxx + * 2 11 110xxxxx 10xxxxxx + * 3 16 1110xxxx 10xxxxxx 10xxxxxx + * 4 21 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + * 5 26 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx + * 6 31 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx + * Each x represents a bit that can be used to store character data. + * The five and six byte sequences are part of Annex D of ISO/IEC 10646-1:2000 + * @access private + */ + function _utf8_to_ucs4($input) + { + $output = array(); + $out_len = 0; + $inp_len = strlen($input); + $mode = 'next'; + $test = 'none'; + for ($k = 0; $k < $inp_len; ++$k) { + $v = ord($input{$k}); // Extract byte from input string + + if ($v < 128) { // We found an ASCII char - put into stirng as is + $output[$out_len] = $v; + ++$out_len; + if ('add' == $mode) { + $this->_error('Conversion from UTF-8 to UCS-4 failed: malformed input at byte '.$k); + return false; + } + continue; + } + if ('next' == $mode) { // Try to find the next start byte; determine the width of the Unicode char + $start_byte = $v; + $mode = 'add'; + $test = 'range'; + if ($v >> 5 == 6) { // &110xxxxx 10xxxxx + $next_byte = 0; // Tells, how many times subsequent bitmasks must rotate 6bits to the left + $v = ($v - 192) << 6; + } elseif ($v >> 4 == 14) { // &1110xxxx 10xxxxxx 10xxxxxx + $next_byte = 1; + $v = ($v - 224) << 12; + } elseif ($v >> 3 == 30) { // &11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + $next_byte = 2; + $v = ($v - 240) << 18; + } elseif ($v >> 2 == 62) { // &111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx + $next_byte = 3; + $v = ($v - 248) << 24; + } elseif ($v >> 1 == 126) { // &1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx + $next_byte = 4; + $v = ($v - 252) << 30; + } else { + $this->_error('This might be UTF-8, but I don\'t understand it at byte '.$k); + return false; + } + if ('add' == $mode) { + $output[$out_len] = (int) $v; + ++$out_len; + continue; + } + } + if ('add' == $mode) { + if (!$this->_allow_overlong && $test == 'range') { + $test = 'none'; + if (($v < 0xA0 && $start_byte == 0xE0) || ($v < 0x90 && $start_byte == 0xF0) || ($v > 0x8F && $start_byte == 0xF4)) { + $this->_error('Bogus UTF-8 character detected (out of legal range) at byte '.$k); + return false; + } + } + if ($v >> 6 == 2) { // Bit mask must be 10xxxxxx + $v = ($v - 128) << ($next_byte * 6); + $output[($out_len - 1)] += $v; + --$next_byte; + } else { + $this->_error('Conversion from UTF-8 to UCS-4 failed: malformed input at byte '.$k); + return false; + } + if ($next_byte < 0) { + $mode = 'next'; + } + } + } // for + return $output; + } + + /** + * Convert UCS-4 string into UTF-8 string + * See _utf8_to_ucs4() for details + * @access private + */ + function _ucs4_to_utf8($input) + { + $output = ''; + $k = 0; + foreach ($input as $v) { + ++$k; + // $v = ord($v); + if ($v < 128) { // 7bit are transferred literally + $output .= chr($v); + } elseif ($v < (1 << 11)) { // 2 bytes + $output .= chr(192 + ($v >> 6)) . chr(128 + ($v & 63)); + } elseif ($v < (1 << 16)) { // 3 bytes + $output .= chr(224 + ($v >> 12)) . chr(128 + (($v >> 6) & 63)) . chr(128 + ($v & 63)); + } elseif ($v < (1 << 21)) { // 4 bytes + $output .= chr(240 + ($v >> 18)) . chr(128 + (($v >> 12) & 63)) + . chr(128 + (($v >> 6) & 63)) . chr(128 + ($v & 63)); + } elseif ($v < (1 << 26)) { // 5 bytes + $output .= chr(248 + ($v >> 24)) . chr(128 + (($v >> 18) & 63)) + . chr(128 + (($v >> 12) & 63)) . chr(128 + (($v >> 6) & 63)) + . chr(128 + ($v & 63)); + } elseif ($v < (1 << 31)) { // 6 bytes + $output .= chr(252 + ($v >> 30)) . chr(128 + (($v >> 24) & 63)) + . chr(128 + (($v >> 18) & 63)) . chr(128 + (($v >> 12) & 63)) + . chr(128 + (($v >> 6) & 63)) . chr(128 + ($v & 63)); + } else { + $this->_error('Conversion from UCS-4 to UTF-8 failed: malformed input at byte '.$k); + return false; + } + } + return $output; + } + + /** + * Convert UCS-4 array into UCS-4 string + * + * @access private + */ + function _ucs4_to_ucs4_string($input) + { + $output = ''; + // Take array values and split output to 4 bytes per value + // The bit mask is 255, which reads &11111111 + foreach ($input as $v) { + $output .= chr(($v >> 24) & 255).chr(($v >> 16) & 255).chr(($v >> 8) & 255).chr($v & 255); + } + return $output; + } + + /** + * Convert UCS-4 strin into UCS-4 garray + * + * @access private + */ + function _ucs4_string_to_ucs4($input) + { + $output = array(); + $inp_len = strlen($input); + // Input length must be dividable by 4 + if ($inp_len % 4) { + $this->_error('Input UCS4 string is broken'); + return false; + } + // Empty input - return empty output + if (!$inp_len) return $output; + for ($i = 0, $out_len = -1; $i < $inp_len; ++$i) { + // Increment output position every 4 input bytes + if (!($i % 4)) { + $out_len++; + $output[$out_len] = 0; + } + $output[$out_len] += ord($input{$i}) << (8 * (3 - ($i % 4) ) ); + } + return $output; + } +} + +/** +* Adapter class for aligning the API of idna_convert with that of Net_IDNA +* @author Matthias Sommerfeld +*/ +class Net_IDNA_php4 extends idna_convert +{ + /** + * Sets a new option value. Available options and values: + * [encoding - Use either UTF-8, UCS4 as array or UCS4 as string as input ('utf8' for UTF-8, + * 'ucs4_string' and 'ucs4_array' respectively for UCS4); The output is always UTF-8] + * [overlong - Unicode does not allow unnecessarily long encodings of chars, + * to allow this, set this parameter to true, else to false; + * default is false.] + * [strict - true: strict mode, good for registration purposes - Causes errors + * on failures; false: loose mode, ideal for "wildlife" applications + * by silently ignoring errors and returning the original input instead + * + * @param mixed Parameter to set (string: single parameter; array of Parameter => Value pairs) + * @param string Value to use (if parameter 1 is a string) + * @return boolean true on success, false otherwise + * @access public + */ + function setParams($option, $param = false) + { + return $this->IC->set_parameters($option, $param); + } +} + +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ie.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ie.php new file mode 100644 index 0000000..936c81e --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ie.php @@ -0,0 +1,64 @@ + 'handle', + 'person' => 'name', + 'renewal' => 'expires' + ); + + $contacts = array( + 'admin-c' => 'admin', + 'tech-c' => 'tech', + ); + + $reg = generic_parser_a($data_str['rawdata'], $translate, $contacts, 'domain', 'Ymd'); + + if (isset($reg['domain']['descr'])) + { + $reg['owner']['organization'] = $reg['domain']['descr'][0]; + unset($reg['domain']['descr']); + } + + $r['regrinfo'] = $reg; + $r['regyinfo'] = array( + 'referrer' => 'http://www.domainregistry.ie', + 'registrar' => 'IE Domain Registry' + ); + return $r; + } + } +?> diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.in.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.in.php new file mode 100644 index 0000000..438d6fc --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.in.php @@ -0,0 +1,45 @@ + 'http://whois.registry.in', + 'registrar' => 'INRegistry' + ); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.info.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.info.php new file mode 100644 index 0000000..02fc903 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.info.php @@ -0,0 +1,45 @@ + 'http://whois.afilias.info', + 'registrar' => 'Afilias Global Registry Services' + ); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.int.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.int.php new file mode 100644 index 0000000..1e7a783 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.int.php @@ -0,0 +1,44 @@ +parse($data_str['rawdata'], $query); + $r['regyinfo']['referrer'] = 'http://www.iana.org/int-dom/int.htm'; + $r['regyinfo']['registrar'] = 'Internet Assigned Numbers Authority'; + return ($r); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ip.afrinic.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ip.afrinic.php new file mode 100644 index 0000000..6f66afd --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ip.afrinic.php @@ -0,0 +1,77 @@ + 'fax', + 'e-mail' => 'email', + 'nic-hdl' => 'handle', + 'person' => 'name', + 'netname' => 'name', + 'organisation' => 'handle', + 'org-name' => 'organization', + 'org-type' => 'type' + ); + + $contacts = array( + 'admin-c' => 'admin', + 'tech-c' => 'tech', + 'org' => 'owner' + ); + + $r = generic_parser_a($data_str, $translate, $contacts, 'network', 'Ymd'); + + if (isset($r['network']['descr'])) + { + $r['owner']['organization'] = $r['network']['descr']; + unset($r['network']['descr']); + } + + if (isset($r['owner']['remarks']) && is_array($r['owner']['remarks'])) + while (list($key, $val) = each($r['owner']['remarks'])) + { + $pos = strpos($val,'rwhois://'); + + if ($pos!==false) + $r['rwhois'] = strtok(substr($val,$pos),' '); + } + + $r = array( 'regrinfo' => $r ); + $r['regyinfo']['type'] = 'ip'; + $r['regyinfo']['registrar'] = 'African Network Information Center'; + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ip.apnic.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ip.apnic.php new file mode 100644 index 0000000..598276f --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ip.apnic.php @@ -0,0 +1,122 @@ + 'fax', + 'e-mail' => 'email', + 'nic-hdl' => 'handle', + 'person' => 'name', + 'country' => 'address', + 'netname' => 'name', + 'descr' => 'desc', + 'aut-num' => 'handle' + ); + + $contacts = array ( + 'admin-c' => 'admin', + 'tech-c' => 'tech' + ); + + $blocks = generic_parser_a_blocks($data_str,$translate,$disclaimer); + + if (isset($disclaimer) && is_array($disclaimer)) $r['disclaimer'] = $disclaimer; + + if (empty($blocks) || !is_array($blocks['main'])) + { + $r['registered'] = 'no'; + } + else + { + if (isset($blocks[$query])) + { + $as = true; + $rb = $blocks[$query]; + } + else + { + $rb = $blocks['main']; + $as = false; + } + + $r['registered'] = 'yes'; + + while (list($key,$val) = each($contacts)) + if (isset($rb[$key])) + { + if (is_array($rb[$key])) + $blk = $rb[$key][count($rb[$key])-1]; + else + $blk = $rb[$key]; + + //$blk = strtoupper(strtok($blk,' ')); + if (isset($blocks[$blk])) $r[$val] = $blocks[$blk]; + unset($rb[$key]); + } + + $r['network'] = $rb; + format_dates($r,'Ymd'); + + if (isset($r['network']['desc'])) + { + if (is_array($r['network']['desc'])) + { + $r['owner']['organization'] = array_shift($r['network']['desc']); + $r['owner']['address'] = $r['network']['desc']; + } + else + $r['owner']['organization'] = $r['network']['desc']; + + unset($r['network']['desc']); + } + + if (isset($r['network']['address'])) + { + if (isset($r['owner']['address'])) + $r['owner']['address'][] = $r['network']['address']; + else + $r['owner']['address'] = $r['network']['address']; + + unset($r['network']['address']); + } + } + + $r = array( 'regrinfo' => $r ); + $r['regyinfo']['type'] ='ip'; + $r['regyinfo']['registrar'] = 'Asia Pacific Network Information Centre'; + return $r; + } +} +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ip.arin.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ip.arin.php new file mode 100644 index 0000000..f214aca --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ip.arin.php @@ -0,0 +1,78 @@ + 'owner.organization', + 'CustName:' => 'owner.organization', + 'OrgId:' => 'owner.handle', + 'Address:' => 'owner.address.street.', + 'City:' => 'owner.address.city', + 'StateProv:' => 'owner.address.state', + 'PostalCode:' => 'owner.address.pcode', + 'Country:' => 'owner.address.country', + 'NetRange:' => 'network.inetnum', + 'NetName:' => 'network.name', + 'NetHandle:' => 'network.handle', + 'NetType:' => 'network.status', + 'NameServer:' => 'network.nserver.', + 'Comment:' => 'network.desc.', + 'RegDate:' => 'network.created', + 'Updated:' => 'network.changed', + 'ASHandle:' => 'network.handle', + 'ASName:' => 'network.name', + 'NetHandle:' => 'network.handle', + 'NetName:' => 'network.name', + 'TechHandle:' => 'tech.handle', + 'TechName:' => 'tech.name', + 'TechPhone:' => 'tech.phone', + 'TechEmail:' => 'tech.email', + 'OrgAbuseName:' => 'abuse.name', + 'OrgAbuseHandle:' => 'abuse.handle', + 'OrgAbusePhone:' => 'abuse.phone', + 'OrgAbuseEmail:' => 'abuse.email.', + 'ReferralServer:' => 'rwhois' + ); + + $r = generic_parser_b($data_str, $items, 'ymd', false, true); + + if (@isset($r['abuse']['email'])) + $r['abuse']['email'] = implode(',',$r['abuse']['email']); + + return array( 'regrinfo' => $r ); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ip.krnic.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ip.krnic.php new file mode 100644 index 0000000..71bc12f --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ip.krnic.php @@ -0,0 +1,112 @@ + '[ Organization Information ]', + 'tech1' => '[ Technical Contact Information ]', + + 'owner2' => '[ ISP Organization Information ]', + 'admin2' => '[ ISP IP Admin Contact Information ]', + 'tech2' => '[ ISP IP Tech Contact Information ]', + + 'admin3' => '[ ISP IPv4 Admin Contact Information ]', + 'tech3' => '[ ISP IPv4 Tech Contact Information ]', + + 'abuse' => '[ ISP Network Abuse Contact Information ]', + + 'network.inetnum' => 'IPv4 Address :', + 'network.name' => 'Network Name :', + 'network.mnt-by' => 'Connect ISP Name :', + 'network.created' => 'Registration Date :' + ); + + $items = array( + 'Orgnization ID :' => 'handle', + 'Org Name :' => 'organization', + 'Org Name :' => 'organization', + 'Name :' => 'name', + 'Name :' => 'name', + 'Org Address :' => 'address.street', + 'Zip Code :' => 'address.pcode', + 'State :' => 'address.state', + 'Address :' => 'address.street', + 'Zip Code :' => 'address.pcode', + 'Phone :' => 'phone', + 'Phone :' => 'phone', + 'Fax :' => 'fax', + 'E-Mail :' => 'email', + 'E-Mail :' => 'email' + ); + + $b = get_blocks($data_str, $blocks); + + if (isset($b['network'])) + $r['network'] = $b['network']; + + if (isset($b['owner1'])) + $r['owner'] = generic_parser_b($b['owner1'], $items, 'Ymd', false); + else + if (isset($b['owner2'])) + $r['owner'] = generic_parser_b($b['owner2'], $items, 'Ymd', false); + + if (isset($b['admin2'])) + $r['admin'] = generic_parser_b($b['admin2'], $items, 'Ymd', false); + else + if (isset($b['admin3'])) + $r['admin'] = generic_parser_b($b['admin3'], $items, 'Ymd', false); + + if (isset($b['tech1'])) + $r['tech'] = generic_parser_b($b['tech1'], $items, 'Ymd', false); + else + if (isset($b['tech2'])) + $r['tech'] = generic_parser_b($b['tech2'], $items, 'Ymd', false); + else + if (isset($b['tech3'])) + $r['tech'] = generic_parser_b($b['tech3'], $items, 'Ymd', false); + + if (isset($b['abuse'])) + $r['abuse'] = generic_parser_b($b['abuse'], $items, 'Ymd', false); + + $r = format_dates($r, 'Ymd'); + + $r = array( 'regrinfo' => $r ); + $r['regyinfo']['type'] ='ip'; + $r['regyinfo']['registrar'] = 'Korean Network Information Centre'; + + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ip.lacnic.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ip.lacnic.php new file mode 100644 index 0000000..c930458 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ip.lacnic.php @@ -0,0 +1,79 @@ + 'fax', + 'e-mail' => 'email', + 'nic-hdl-br' => 'handle', + 'nic-hdl' => 'handle', + 'person' => 'name', + 'netname' => 'name', + 'descr' => 'desc', + 'country' => 'address.country' + ); + + $contacts = array( + 'owner-c' => 'owner', + 'tech-c' => 'tech', + 'abuse-c' => 'abuse', + 'admin-c' => 'admin' + ); + + $r = generic_parser_a($data_str, $translate, $contacts, 'network'); + + unset($r['network']['owner']); + unset($r['network']['ownerid']); + unset($r['network']['responsible']); + unset($r['network']['address']); + unset($r['network']['phone']); + unset($r['network']['aut-num']); + unset($r['network']['nsstat']); + unset($r['network']['nslastaa']); + unset($r['network']['inetrev']); + + if (!empty($r['network']['aut-num'])) + $r['network']['handle'] = $r['network']['aut-num']; + + if (is_array($r['network']['nserver'])) + $r['network']['nserver'] = array_unique($r['network']['nserver']); + + $r = array( 'regrinfo' => $r ); + $r['regyinfo']['type'] ='ip'; + $r['regyinfo']['registrar'] = 'Latin American and Caribbean IP address Regional Registry'; + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ip.lib.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ip.lib.php new file mode 100644 index 0000000..e88b588 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ip.lib.php @@ -0,0 +1,120 @@ += $min) && (ip2long($ip) <= $max)) return false; + } + + return true; +} + +//----------------------------------------------------------------- +// Get real client ip address + +function phpwhois_getclientip() +{ + if (!empty($_SERVER['HTTP_CLIENT_IP']) && phpwhois_validip($_SERVER['HTTP_CLIENT_IP'])) + return $_SERVER['HTTP_CLIENT_IP']; + + if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) + foreach (explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']) as $ip) + if (phpwhois_validip(trim($ip))) + return $ip; + + if (!empty($_SERVER['HTTP_X_FORWARDED']) && phpwhois_validip($_SERVER['HTTP_X_FORWARDED'])) + return $_SERVER['HTTP_X_FORWARDED']; + + if (!empty($_SERVER['HTTP_FORWARDED_FOR']) && phpwhois_validip($_SERVER['HTTP_FORWARDED_FOR'])) + return $_SERVER['HTTP_FORWARDED_FOR']; + + if (!empty($_SERVER['HTTP_FORWARDED']) && phpwhois_validip($_SERVER['HTTP_FORWARDED'])) + return $_SERVER['HTTP_FORWARDED']; + + if (!empty($_SERVER['HTTP_X_FORWARDED']) && phpwhois_validip($_SERVER['HTTP_X_FORWARDED'])) + return $_SERVER['HTTP_X_FORWARDED']; + + return $_SERVER['REMOTE_ADDR']; +} + +//----------------------------------------------------------------- +// Convert from CIDR to net range + +function phpwhois_cidr_conv($net) +{ + $start = strtok($net, '/'); + $n = 3-substr_count($net, '.'); + + if ($n > 0) + { + for ($i = $n; $i > 0; $i--) + $start.= '.0'; + } + + $bits1 = str_pad(decbin(ip2long($start)), 32, '0', 'STR_PAD_LEFT'); + $net = pow(2, (32-substr(strstr($net, '/'), 1))) - 1; + $bits2 = str_pad(decbin($net), 32, '0', 'STR_PAD_LEFT'); + $final = ''; + + for ($i = 0; $i < 32; $i++) + { + if ($bits1[$i] == $bits2[$i]) + $final.= $bits1[$i]; + if ($bits1[$i] == 1 and $bits2[$i] == 0) + $final.= $bits1[$i]; + if ($bits1[$i] == 0 and $bits2[$i] == 1) + $final.= $bits2[$i]; + } + + return $start." - ".long2ip(bindec($final)); +} +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ip.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ip.php new file mode 100644 index 0000000..70e77f4 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ip.php @@ -0,0 +1,285 @@ + 'whois.ripe.net', + 'RIPE Network Coordination Centre' => 'whois.ripe.net', + 'Asia Pacific Network Information Center' => 'whois.apnic.net', + 'Asia Pacific Network Information Centre' => 'whois.apnic.net', + 'Latin American and Caribbean IP address Regional Registry' => 'whois.lacnic.net', + 'African Network Information Center' => 'whois.afrinic.net' + ); + + var $HANDLERS = array( + 'whois.krnic.net' => 'krnic', + 'whois.apnic.net' => 'apnic', + 'whois.ripe.net' => 'ripe', + 'whois.arin.net' => 'arin', + 'whois.lacnic.net' => 'lacnic', + 'whois.afrinic.net' => 'afrinic' + ); + + var $more_data = array(); // More queries to get more accurated data + var $done = array(); + + function parse($data, $query) + { + $result['regrinfo'] = array(); + $result['regyinfo'] = array(); + $result['regyinfo']['registrar'] = 'American Registry for Internet Numbers (ARIN)'; + $result['rawdata'] = array(); + + if (strpos($query,'.') === false) + $result['regyinfo']['type'] = 'AS'; + else + $result['regyinfo']['type'] = 'ip'; + + if (!$this->deep_whois) return null; + + $this->Query = array(); + $this->Query['server'] = 'whois.arin.net'; + $this->Query['query'] = $query; + + $rawdata = $data['rawdata']; + + if (empty($rawdata)) return $result; + + $presults[] = $rawdata; + $ip = ip2long($query); + $done = array(); + + while (count($presults) > 0) + { + $rwdata = array_shift($presults); + $found = false; + + foreach($rwdata as $line) + { + if (!strncmp($line,'American Registry for Internet Numbers',38)) continue; + + $p = strpos($line, '(NETBLK-'); + + if ($p === false) $p = strpos($line, '(NET-'); + + if ($p !== false) + { + $net = strtok(substr($line,$p+1),') '); + list($low,$high) = explode('-',str_replace(' ','',substr($line,$p+strlen($net)+3))); + + if (!isset($done[$net]) && $ip >= ip2long($low) && $ip <= ip2long($high)) + { + $owner = substr($line,0,$p-1); + + if (!empty($this->REGISTRARS['owner'])) + { + $this->handle_rwhois($this->REGISTRARS['owner'],$query); + break 2; + } + else + { + $this->Query['args'] = 'n '.$net; + $presults[] = $this->GetRawData($net); + $done[$net] = 1; + } + } + $found = true; + } + } + + if (!$found) + { + $this->Query['file'] = 'whois.ip.arin.php'; + $this->Query['handler'] = 'arin'; + $result = $this->parse_results($result,$rwdata,$query,true); + } + } + + unset($this->Query['args']); + + while (count($this->more_data) > 0) + { + $srv_data = array_shift($this->more_data); + $this->Query['server'] = $srv_data['server']; + unset($this->Query['handler']); + // Use original query + $rwdata = $this->GetRawData($srv_data['query']); + + if (!empty($rwdata)) + { + if (!empty($srv_data['handler'])) + { + $this->Query['handler'] = $srv_data['handler']; + + if (!empty($srv_data['file'])) + $this->Query['file'] = $srv_data['file']; + else + $this->Query['file'] = 'whois.'.$this->Query['handler'].'.php'; + } + + $result = $this->parse_results($result,$rwdata,$query,$srv_data['reset']); + $result = $this->set_whois_info($result); + $reset = false; + } + } + + + // Normalize nameserver fields + + if (isset($result['regrinfo']['network']['nserver'])) + { + if (!is_array($result['regrinfo']['network']['nserver'])) + { + unset($result['regrinfo']['network']['nserver']); + } + else + $result['regrinfo']['network']['nserver'] = $this->FixNameServer($result['regrinfo']['network']['nserver']); + } + + return $result; + } + + //----------------------------------------------------------------- + + function parse_results($result,$rwdata,$query,$reset) + { + $rwres = $this->Process($rwdata); + + if ($result['regyinfo']['type'] == 'AS' && !empty($rwres['regrinfo']['network'])) + { + $rwres['regrinfo']['AS'] = $rwres['regrinfo']['network']; + unset($rwres['regrinfo']['network']); + } + + if ($reset) + { + $result['regrinfo'] = $rwres['regrinfo']; + $result['rawdata'] = $rwdata; + } + else + { + $result['rawdata'][] = ''; + + foreach ($rwdata as $line) + $result['rawdata'][] = $line; + + foreach($rwres['regrinfo'] as $key => $data) + { + $result = $this->join_result($result,$key,$rwres); + } + } + + if ($this->deep_whois) + { + if (isset($rwres['regrinfo']['rwhois'])) + { + $this->handle_rwhois($rwres['regrinfo']['rwhois'],$query); + unset($result['regrinfo']['rwhois']); + } + else + if (!@empty($rwres['regrinfo']['owner']['organization'])) + switch ($rwres['regrinfo']['owner']['organization']) + { + case 'KRNIC': + $this->handle_rwhois('whois.krnic.net',$query); + break; + + case 'African Network Information Center': + $this->handle_rwhois('whois.afrinic.net',$query); + break; + } + } + + if (!empty($rwres['regyinfo'])) + $result['regyinfo'] = array_merge($result['regyinfo'],$rwres['regyinfo']); + + return $result; + } + + //----------------------------------------------------------------- + + function handle_rwhois($server,$query) + { + // Avoid querying the same server twice + + $parts = parse_url($server); + + if (empty($parts['host'])) + $host = $parts['path']; + else + $host = $parts['host']; + + if (array_key_exists($host,$this->done)) return; + + $q = array ( + 'query' => $query, + 'server' => $server + ); + + if (isset($this->HANDLERS[$host])) + { + $q['handler'] = $this->HANDLERS[$host]; + $q['file'] = sprintf('whois.ip.%s.php', $q['handler']); + $q['reset'] = true; + } + else + { + $q['handler'] = 'rwhois'; + $q['reset'] = false; + unset($q['file']); + } + + $this->more_data[] = $q; + $this->done[$host] = 1; + } + + //----------------------------------------------------------------- + + function join_result($result, $key, $newres) + { + if (isset($result['regrinfo'][$key]) && !array_key_exists(0,$result['regrinfo'][$key])) + { + $r = $result['regrinfo'][$key]; + $result['regrinfo'][$key] = array($r); + } + + $result['regrinfo'][$key][] = $newres['regrinfo'][$key]; + return $result; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ip.ripe.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ip.ripe.php new file mode 100644 index 0000000..6ac51cb --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ip.ripe.php @@ -0,0 +1,85 @@ + 'fax', + 'e-mail' => 'email', + 'nic-hdl' => 'handle', + 'person' => 'name', + 'netname' => 'name', + 'descr' => 'desc' + ); + + $contacts = array( + 'admin-c' => 'admin', + 'tech-c' => 'tech' + ); + + if (!empty($data_str['rawdata'])) $data_str = $data_str['rawdata']; + + $r = generic_parser_a($data_str, $translate, $contacts, 'network'); + + if (isset($r['network']['desc'])) + { + $r['owner']['organization'] = $r['network']['desc']; + unset($r['network']['desc']); + } + + if (isset($r['admin']['abuse-mailbox'])) + { + $r['abuse']['email'] = $r['admin']['abuse-mailbox']; + unset($r['admin']['abuse-mailbox']); + } + + if (isset($r['tech']['abuse-mailbox'])) + { + $r['abuse']['email'] = $r['tech']['abuse-mailbox']; + unset($r['tech']['abuse-mailbox']); + } + + // Clean mess + if (isset($r['tech']['tech-c'])) unset($r['tech']['tech-c']); + if (isset($r['tech']['admin-c'])) unset($r['tech']['admin-c']); + if (isset($r['admin']['tech-c'])) unset($r['admin']['tech-c']); + if (isset($r['admin']['admin-c'])) unset($r['admin']['admin-c']); + + $r = array( 'regrinfo' => $r ); + $r['regyinfo']['type'] ='ip'; + $r['regyinfo']['registrar'] = 'RIPE Network Coordination Centre'; + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ir.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ir.php new file mode 100644 index 0000000..b7632cb --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ir.php @@ -0,0 +1,60 @@ +. + */ + +// Define the handler flag. +if (!defined('__IR_HANDLER__')) + define('__IR_HANDLER__', 1); + +// Loadup the parser. +require_once('whois.parser.php'); + +/** + * IR Domain names lookup handler class. + */ +class ir_handler + { + function parse($data_str, $query) + { + $translate = array( + 'nic-hdl' => 'handle', + 'org' => 'organization', + 'e-mail' => 'email', + 'person' => 'name', + 'fax-no' => 'fax', + 'domain' => 'name' + ); + + $contacts = array( + 'admin-c' => 'admin', + 'tech-c' => 'tech', + 'holder-c' => 'owner' + ); + + $reg = generic_parser_a($data_str['rawdata'], $translate, $contacts, 'domain', 'Ymd'); + + $r['regrinfo'] = $reg; + $r['regyinfo'] = array( + 'referrer'=>'http://whois.nic.ir/', + 'registrar' => 'NIC-IR' + ); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.is.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.is.php new file mode 100644 index 0000000..b9902d6 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.is.php @@ -0,0 +1,69 @@ + 'fax', + 'e-mail' => 'email', + 'nic-hdl' => 'handle', + 'person' => 'name' + ); + + $contacts = array( + 'owner-c' => 'owner', + 'admin-c' => 'admin', + 'tech-c' => 'tech', + 'billing-c' => 'billing', + 'zone-c' => 'zone' + ); + + $reg = generic_parser_a($data_str['rawdata'], $translate, $contacts, 'domain', 'mdy'); + + if (isset($reg['domain']['descr'])) + { + $reg['owner']['name'] = array_shift($reg['domain']['descr']); + $reg['owner']['address'] = $reg['domain']['descr']; + unset($reg['domain']['descr']); + } + + $r['regrinfo'] = $reg; + $r['regyinfo'] = array( + 'referrer' => 'http://www.isnic.is', + 'registrar' => 'ISNIC' + ); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.it.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.it.php new file mode 100644 index 0000000..08538d7 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.it.php @@ -0,0 +1,78 @@ + array +- ContactID in address +*/ + +if (!defined('__IT_HANDLER__')) + define('__IT_HANDLER__', 1); + +require_once('whois.parser.php'); + +class it_handler + { + function parse($data_str, $query) + { + $items = array( + 'domain.name' => 'Domain:', + 'domain.nserver' => 'Nameservers', + 'domain.status' => 'Status:', + 'domain.expires' => 'Expire Date:', + 'owner' => 'Registrant', + 'admin' => 'Admin Contact', + 'tech' => 'Technical Contacts', + 'registrar' => 'Registrar' + ); + + $extra = array( + 'address:' => 'address.', + 'contactid:' => 'handle', + 'organization:' => 'organization', + 'created:' => 'created', + 'last update:' => 'changed', + 'web:' => 'web' + ); + + $r['regrinfo'] = easy_parser($data_str['rawdata'], $items, 'ymd',$extra); + + if (isset($r['regrinfo']['registrar'])) + { + $r['regrinfo']['domain']['registrar'] = $r['regrinfo']['registrar']; + unset($r['regrinfo']['registrar']); + } + + $r['regyinfo'] = array( + 'registrar' => 'IT-Nic', + 'referrer' => 'http://www.nic.it/' + ); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.jp.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.jp.php new file mode 100644 index 0000000..d5f12bb --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.jp.php @@ -0,0 +1,111 @@ + 'domain.status', + '[Status]' => 'domain.status', + '[Registered Date]' => 'domain.created', + '[Created on]' => 'domain.created', + '[Expires on]' => 'domain.expires', + '[Last Updated]' => 'domain.changed', + '[Last Update]' => 'domain.changed', + '[Organization]' => 'owner.organization', + '[Name]' => 'owner.name', + '[Email]' => 'owner.email', + '[Postal code]' => 'owner.address.pcode', + '[Postal Address]' => 'owner.address.street', + '[Phone]' => 'owner.phone', + '[Fax]' => 'owner.fax', + '[Administrative Contact]' => 'admin.handle', + '[Technical Contact]' => 'tech.handle', + '[Name Server]' => 'domain.nserver.' + ); + + $r['regrinfo'] = generic_parser_b($data_str['rawdata'], $items, 'ymd'); + + $r['regyinfo'] = array( + 'referrer' => 'http://www.jprs.jp', + 'registrar' => 'Japan Registry Services' + ); + + if (!$this->deep_whois) return $r; + + $r['rawdata'] = $data_str['rawdata']; + + $items = array( + 'a. [JPNIC Handle]' => 'handle', + 'c. [Last, First]' => 'name', + 'd. [E-Mail]' => 'email', + 'g. [Organization]' => 'organization', + 'o. [TEL]' => 'phone', + 'p. [FAX]' => 'fax', + '[Last Update]' => 'changed' + ); + + $this->Query['server'] = 'jp.whois-servers.net'; + + if (!empty($r['regrinfo']['admin']['handle'])) + { + $rwdata = $this->GetRawData('CONTACT '.$r['regrinfo']['admin']['handle'].'/e'); + $r['rawdata'][] = ''; + $r['rawdata'] = array_merge($r['rawdata'],$rwdata); + $r['regrinfo']['admin'] = generic_parser_b($rwdata,$items,'ymd',false); + $r = $this->set_whois_info($r); + } + + if (!empty($r['regrinfo']['tech']['handle'])) + { + if (!empty($r['regrinfo']['admin']['handle']) && + $r['regrinfo']['admin']['handle'] == $r['regrinfo']['tech']['handle']) + { + $r['regrinfo']['tech'] = $r['regrinfo']['admin']; + } + else + { + unset($this->Query); + $this->Query['server'] = 'jp.whois-servers.net'; + $rwdata = $this->GetRawData('CONTACT '.$r['regrinfo']['tech']['handle'].'/e'); + $r['rawdata'][] = ''; + $r['rawdata'] = array_merge($r['rawdata'],$rwdata); + $r['regrinfo']['tech'] = generic_parser_b($rwdata,$items,'ymd',false); + $r = $this->set_whois_info($r); + } + } + + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.lt.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.lt.php new file mode 100644 index 0000000..15c1133 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.lt.php @@ -0,0 +1,64 @@ + 'handle', + 'contact name:' => 'name' + ); + + $items = array( + 'admin' => 'Contact type: Admin', + 'tech' => 'Contact type: Tech', + 'zone' => 'Contact type: Zone', + 'owner.name' => 'Registrar:', + 'owner.email' => 'Registrar email:', + 'domain.status' => 'Status:', + 'domain.created' => 'Registered:', + 'domain.changed' => 'Last updated:', + 'domain.nserver.' => 'NS:', + '' => '%' + ); + + $r['regrinfo'] = easy_parser($data_str['rawdata'], $items, 'ymd', $translate); + + $r['regyinfo'] = array( + 'referrer' => 'http://www.domreg.lt', + 'registrar' => 'DOMREG.LT' + ); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.lu.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.lu.php new file mode 100644 index 0000000..ff7287e --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.lu.php @@ -0,0 +1,78 @@ + 'domain.name', + 'domaintype:' => 'domain.status', + 'nserver:' => 'domain.nserver.', + 'registered:' => 'domain.created', + 'source:' => 'domain.source', + 'ownertype:' => 'owner.type', + 'org-name:' => 'owner.organization', + 'org-address:' => 'owner.address.', + 'org-zipcode:' => 'owner.address.pcode', + 'org-city:' => 'owner.address.city', + 'org-country:' => 'owner.address.country', + 'adm-name:' => 'admin.name', + 'adm-address:' => 'admin.address.', + 'adm-zipcode:' => 'admin.address.pcode', + 'adm-city:' => 'admin.address.city', + 'adm-country:' => 'admin.address.country', + 'adm-email:' => 'admin.email', + 'tec-name:' => 'tech.name', + 'tec-address:' => 'tech.address.', + 'tec-zipcode:' => 'tech.address.pcode', + 'tec-city:' => 'tech.address.city', + 'tec-country:' => 'tech.address.country', + 'tec-email:' => 'tech.email', + 'bil-name:' => 'billing.name', + 'bil-address:' => 'billing.address.', + 'bil-zipcode:' => 'billing.address.pcode', + 'bil-city:' => 'billing.address.city', + 'bil-country:' => 'billing.address.country', + 'bil-email:' => 'billing.email' + ); + + $r['regrinfo'] = generic_parser_b($data_str['rawdata'], $items, 'dmy'); + + $r['regyinfo'] = array( + 'referrer' => 'http://www.dns.lu', + 'registrar' => 'DNS-LU' + ); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ly.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ly.php new file mode 100644 index 0000000..0ed85d2 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ly.php @@ -0,0 +1,72 @@ + 'Registrant:', + 'admin' => 'Administrative Contact:', + 'tech' => 'Technical Contact:', + 'domain.name' => 'Domain Name:', + 'domain.status' => 'Domain Status:', + 'domain.created' => 'Created:', + 'domain.changed' => 'Updated:', + 'domain.expires' => 'Expired:', + 'domain.nserver' => 'Domain servers in listed order:' + ); + + $extra = array( 'zip/postal code:' => 'address.pcode' ); + + $r['regrinfo'] = get_blocks($data_str['rawdata'], $items); + + if (!empty($r['regrinfo']['domain']['name'])) + { + $r['regrinfo'] = get_contacts($r['regrinfo'],$extra); + $r['regrinfo']['domain']['name'] = $r['regrinfo']['domain']['name'][0]; + $r['regrinfo']['registered'] = 'yes'; + } + else + { + $r = ''; + $r['regrinfo']['registered'] = 'no'; + } + + $r['regyinfo'] = array( + 'referrer' => 'http://www.nic.ly', + 'registrar' => 'Libya ccTLD' + ); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.main.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.main.php new file mode 100644 index 0000000..1441194 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.main.php @@ -0,0 +1,327 @@ +windows = true; + else + $this->windows = false; + + // Set version + $this->VERSION = sprintf("phpWhois v%s-%s", $this->CODE_VERSION, $this->DATA_VERSION); + } + + /* + * Use special whois server + */ + + function UseServer ($tld, $server) + { + $this->WHOIS_SPECIAL[$tld] = $server; + } + + /* + * Lookup query + */ + + function Lookup($query = '', $is_utf = true) + { + // start clean + $this->Query = array( 'status' => '' ); + + $query = trim($query); + + $IDN = new idna_convert(); + + if ($is_utf) + $query = $IDN->encode($query); + else + $query = $IDN->encode(utf8_encode($query)); + + // If domain to query was not set + if (!isSet($query) || $query == '') + { + // Configure to use default whois server + $this->Query['server'] = $this->NSI_REGISTRY; + return ; + } + + // Set domain to query in query array + + $this->Query['query'] = $domain = strtolower($query); + + // If query is an ip address do ip lookup + + if ($query == long2ip(ip2long($query))) + { + // IPv4 Prepare to do lookup via the 'ip' handler + $ip = @gethostbyname($query); + + if (isset($this->WHOIS_SPECIAL['ip'])) + { + $this->Query['server'] = $this->WHOIS_SPECIAL['ip']; + $this->Query['args'] = $ip; + } + else + { + $this->Query['server'] = 'whois.arin.net'; + $this->Query['args'] = "n $ip"; + $this->Query['file'] = 'whois.ip.php'; + $this->Query['handler'] = 'ip'; + } + $this->Query['host_ip'] = $ip; + $this->Query['query'] = $ip; + $this->Query['tld'] = 'ip'; + $this->Query['host_name'] = @gethostbyaddr($ip); + return $this->GetData('',$this->deep_whois); + } + + if (strpos($query, ':')) + { + // IPv6 AS Prepare to do lookup via the 'ip' handler + $ip = @gethostbyname($query); + + if (isset($this->WHOIS_SPECIAL['ip'])) + { + $this->Query['server'] = $this->WHOIS_SPECIAL['ip']; + } + else + { + $this->Query['server'] = 'whois.ripe.net'; + $this->Query['file'] = 'whois.ip.ripe.php'; + $this->Query['handler'] = 'ripe'; + } + $this->Query['query'] = $ip; + $this->Query['tld'] = 'ip'; + return $this->GetData('',$this->deep_whois); + } + + if (!strpos($query, '.')) + { + // AS Prepare to do lookup via the 'ip' handler + $ip = @gethostbyname($query); + $this->Query['server'] = 'whois.arin.net'; + if (strtolower(substr($ip,0,2)) == 'as') + $as = substr($ip,2); + else + $as = $ip; + $this->Query['args'] = "a $as"; + $this->Query['file'] = 'whois.ip.php'; + $this->Query['handler'] = 'ip'; + $this->Query['query'] = $ip; + $this->Query['tld'] = 'as'; + return $this->GetData('',$this->deep_whois); + } + + // Build array of all possible tld's for that domain + + $tld = ''; + $server = ''; + $dp = explode('.', $domain); + $np = count($dp)-1; + $tldtests = array(); + + for ($i = 0; $i < $np; $i++) + { + array_shift($dp); + $tldtests[] = implode('.', $dp); + } + + // Search the correct whois server + + if ($this->non_icann) + $special_tlds = array_merge($this->WHOIS_SPECIAL,$this->WHOIS_NON_ICANN); + else + $special_tlds = $this->WHOIS_SPECIAL; + + foreach($tldtests as $tld) + { + // Test if we know in advance that no whois server is + // available for this domain and that we can get the + // data via http or whois request + + if (isset($special_tlds[$tld])) + { + $val = $special_tlds[$tld]; + + if ($val == '') return $this->Unknown(); + + $domain = substr($query, 0, - strlen($tld) - 1); + $val = str_replace('{domain}', $domain, $val); + $server = str_replace('{tld}', $tld, $val); + break; + } + } + + if ($server == '') + foreach($tldtests as $tld) + { + // Determine the top level domain, and it's whois server using + // DNS lookups on 'whois-servers.net'. + // Assumes a valid DNS response indicates a recognised tld (!?) + + $cname = $tld.'.whois-servers.net'; + + if (gethostbyname($cname) == $cname) continue; + $server = $tld.'.whois-servers.net'; + break; + } + + if ($tld && $server) + { + // If found, set tld and whois server in query array + $this->Query['server'] = $server; + $this->Query['tld'] = $tld; + $handler = ''; + + foreach($tldtests as $htld) + { + // special handler exists for the tld ? + + if (isSet($this->DATA[$htld])) + { + $handler = $this->DATA[$htld]; + break; + } + + // Regular handler exists for the tld ? + if (($fp = @fopen('whois.'.$htld.'.php', 'r', 1)) and fclose($fp)) + { + $handler = $htld; + break; + } + } + + // If there is a handler set it + + if ($handler != '') + { + $this->Query['file'] = "whois.$handler.php"; + $this->Query['handler'] = $handler; + } + + // Special parameters ? + + if (isset($this->WHOIS_PARAM[$server])) + $this->Query['server'] = $this->Query['server'].'?'.str_replace('$',$domain,$this->WHOIS_PARAM[$server]); + + $result = $this->GetData('',$this->deep_whois); + $this->Checkdns($result); + return $result; + } + + // If tld not known, and domain not in DNS, return error + return $this->Unknown(); + } + + /* Unsupported domains */ + + function Unknown() + { + unset($this->Query['server']); + $this->Query['status'] = 'error'; + $result['rawdata'][] = $this->Query['errstr'][] = $this->Query['query'].' domain is not supported'; + $this->Checkdns($result); + $this->FixResult($result, $this->Query['query']); + return $result; + } + + /* Get nameservers if missing */ + + function Checkdns(&$result) + { + if ($this->deep_whois && empty($result['regrinfo']['domain']['nserver']) && function_exists('dns_get_record')) + { + $ns = @dns_get_record($this->Query['query'],DNS_NS); + if (!is_array($ns)) return; + $nserver = array(); + foreach($ns as $row) $nserver[] = $row['target']; + if (count($nserver) > 0) + $result['regrinfo']['domain']['nserver'] = $this->FixNameServer($nserver); + } + } + /* + * Fix and/or add name server information + */ + + function FixResult(&$result, $domain) + { + // Add usual fields + $result['regrinfo']['domain']['name'] = $domain; + + // Check if nameservers exist + + if (!isset($result['regrinfo']['registered'])) + { + if (function_exists('checkdnsrr') && checkdnsrr($domain, 'NS')) + $result['regrinfo']['registered'] = 'yes'; + else + $result['regrinfo']['registered'] = 'unknown'; + } + + // Normalize nameserver fields + + if (isset($result['regrinfo']['domain']['nserver'])) + { + if (!is_array($result['regrinfo']['domain']['nserver'])) + { + unset($result['regrinfo']['domain']['nserver']); + } + else + $result['regrinfo']['domain']['nserver'] = $this->FixNameServer($result['regrinfo']['domain']['nserver']); + } + } + } + +?> diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.me.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.me.php new file mode 100644 index 0000000..09f518d --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.me.php @@ -0,0 +1,45 @@ + 'http://domain.me', + 'registrar' => 'doMEn' + ); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.mobi.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.mobi.php new file mode 100644 index 0000000..56347e4 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.mobi.php @@ -0,0 +1,47 @@ + \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.museum.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.museum.php new file mode 100644 index 0000000..658a07c --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.museum.php @@ -0,0 +1,45 @@ + 'http://musedoma.museum', + 'registrar' => 'Museum Domain Management Association' + ); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.mx.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.mx.php new file mode 100644 index 0000000..882c2c5 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.mx.php @@ -0,0 +1,70 @@ + 'Registrant:', + 'admin' => 'Administrative Contact:', + 'tech' => 'Technical Contact:', + 'billing' => 'Billing Contact:', + 'domain.nserver' => 'Name Servers:', + 'domain.created' => 'Created On:', + 'domain.expires' => 'Expiration Date:', + 'domain.changed' => 'Last Updated On:', + 'domain.sponsor' => 'Registrar:' + ); + + $extra = array( + 'city:' => 'address.city', + 'state:' => 'address.state', + 'dns:' => '0' + ); + + $r['regrinfo'] = easy_parser($data_str['rawdata'],$items,'dmy',$extra); + + $r['regyinfo'] = array( + 'registrar' => 'NIC Mexico', + 'referrer' => 'http://www.nic.mx/' + ); + + if (empty($r['regrinfo']['domain']['created'])) + $r['regrinfo']['registered'] = 'no'; + else + $r['regrinfo']['registered'] = 'yes'; + + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.name.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.name.php new file mode 100644 index 0000000..db2d695 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.name.php @@ -0,0 +1,45 @@ + 'http://www.nic.name/', + 'registrar' => 'Global Name Registry' + ); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.nl.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.nl.php new file mode 100644 index 0000000..1b26106 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.nl.php @@ -0,0 +1,88 @@ + 'Domain name:', + 'domain.status' => 'Status:', + 'domain.nserver' => 'Domain nameservers:', + 'domain.created' => 'Date registered:', + 'domain.changed' => 'Record last updated:', + 'domain.sponsor' => 'Registrar:', + 'admin' => 'Administrative contact:', + 'tech' => 'Technical contact(s):' + ); + + $r['regrinfo'] = get_blocks($data['rawdata'], $items); + $r['regyinfo']['referrer'] = 'http://www.domain-registry.nl'; + $r['regyinfo']['registrar'] = 'Stichting Internet Domeinregistratie NL'; + + if (!isset($r['regrinfo']['domain']['status'])) + { + $r['regrinfo']['registered'] = 'no'; + return $r; + } + + if (isset($r['regrinfo']['tech'])) + $r['regrinfo']['tech'] = $this->get_contact($r['regrinfo']['tech']); + + if (isset($r['regrinfo']['zone'])) + $r['regrinfo']['zone'] = $this->get_contact($r['regrinfo']['zone']); + + if (isset($r['regrinfo']['admin'])) + $r['regrinfo']['admin'] = $this->get_contact($r['regrinfo']['admin']); + + if (isset($r['regrinfo']['owner'])) + $r['regrinfo']['owner'] = $this->get_contact($r['regrinfo']['owner']); + + $r['regrinfo']['registered'] = 'yes'; + format_dates($r,'dmy'); + return $r; + } + + function get_contact($data) + { + $r = get_contact($data); + + if (isset($r['name']) && preg_match('/^[A-Z0-9]+-[A-Z0-9]+$/',$r['name'])) + { + $r['handle'] = $r['name']; + $r['name'] = array_shift ($r['address']); + } + + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.nu.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.nu.php new file mode 100644 index 0000000..addb471 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.nu.php @@ -0,0 +1,90 @@ + 'Domain Name (UTF-8):', + 'created' => 'Record created on', + 'expires' => 'Record expires on', + 'changed' => 'Record last updated on', + 'status' => 'Record status:', + 'handle' => 'Record ID:' + ); + + while (list($key, $val) = each($data_str['rawdata'])) + { + $val = trim($val); + + if ($val != '') + { + if ($val == 'Domain servers in listed order:') + { + while (list($key, $val) = each($data_str['rawdata'])) + { + $val = trim($val); + if ($val == '') + break; + $r['regrinfo']['domain']['nserver'][] = $val; + } + break; + } + + reset($items); + + while (list($field, $match) = each($items)) + if (strstr($val, $match)) + { + $r['regrinfo']['domain'][$field] = trim(substr($val, strlen($match))); + break; + } + } + } + + if (isset($r['regrinfo']['domain'])) + $r['regrinfo']['registered'] = 'yes'; + else + $r['regrinfo']['registered'] = 'no'; + + $r['regyinfo'] = array( + 'whois' => 'whois.nic.nu', + 'referrer' => 'http://www.nunames.nu', + 'registrar' => '.NU Domain, Ltd' + ); + + format_dates($r, 'dmy'); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.nz.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.nz.php new file mode 100644 index 0000000..6f17d2a --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.nz.php @@ -0,0 +1,102 @@ + 'domain.name', + 'query_status:' => 'domain.status', + 'ns_name_01:' => 'domain.nserver.0', + 'ns_name_02:' => 'domain.nserver.1', + 'ns_name_03:' => 'domain.nserver.2', + 'domain_dateregistered:' => 'domain.created', + 'domain_datelastmodified:' => 'domain.changed', + 'domain_datebilleduntil:' => 'domain.expires', + 'registrar_name:' => 'domain.sponsor', + 'registrant_contact_name:' => 'owner.name', + 'registrant_contact_address1:' => 'owner.address.address.0', + 'registrant_contact_address2:' => 'owner.address.address.1', + 'registrant_contact_address3:' => 'owner.address.address.2', + 'registrant_contact_postalcode:'=> 'owner.address.pcode', + 'registrant_contact_city:' => 'owner.address.city', + 'Registrant State/Province:' => 'owner.address.state', + 'registrant_contact_country:' => 'owner.address.country', + 'registrant_contact_phone:' => 'owner.phone', + 'registrant_contact_fax:' => 'owner.fax', + 'registrant_contact_email:' => 'owner.email', + 'admin_contact_name:' => 'admin.name', + 'admin_contact_address1:' => 'admin.address.address.0', + 'admin_contact_address2:' => 'admin.address.address.1', + 'admin_contact_address3:' => 'admin.address.address.2', + 'admin_contact_postalcode:' => 'admin.address.pcode', + 'admin_contact_city:' => 'admin.address.city', + 'admin_contact_country:' => 'admin.address.country', + 'admin_contact_phone:' => 'admin.phone', + 'admin_contact_fax:' => 'admin.fax', + 'admin_contact_email:' => 'admin.email', + 'technical_contact_name:' => 'tech.name', + 'technical_contact_address1:' => 'tech.address.address.0', + 'technical_contact_address1:' => 'tech.address.address.1', + 'technical_contact_address1:' => 'tech.address.address.2', + 'technical_contact_postalcode:' => 'tech.address.pcode', + 'technical_contact_city:' => 'tech.address.city', + 'technical_contact_country:' => 'tech.address.country', + 'technical_contact_phone:' => 'tech.phone', + 'technical_contact_fax:' => 'tech.fax', + 'technical_contact_email:' => 'tech.email' + ); + + $r['regrinfo'] = generic_parser_b($data_str['rawdata'], $items); + + if (!empty($r['regrinfo']['domain']['status'])) + $domain_status = substr($r['regrinfo']['domain']['status'],0,3); + else + $domain_status = ''; + + if ($domain_status=='200') + $r['regrinfo']['registered']='yes'; + elseif ($domain_status=='220') + $r['regrinfo']['registered']='no'; + else + $r['regrinfo']['registered']='unknown'; + + if (!strncmp($data_str['rawdata'][0], 'WHOIS LIMIT EXCEEDED', 20)) + $r['regrinfo']['registered'] = 'unknown'; + + $r['regyinfo']['referrer'] = 'http://www.dnc.org.nz'; + $r['regyinfo']['registrar'] = 'New Zealand Domain Name Registry Limited'; + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.org.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.org.php new file mode 100644 index 0000000..7dc45f9 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.org.php @@ -0,0 +1,47 @@ + \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.org.za.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.org.za.php new file mode 100644 index 0000000..13d38b0 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.org.za.php @@ -0,0 +1,64 @@ + 'Status:', + 'domain.nserver' => 'Domain name servers in listed order:', + 'domain.changed' => 'Record last updated on', + 'owner' => 'rwhois search on', + 'admin' => 'Administrative Contact:', + 'tech' => 'Technical Contact:', + 'billing' => 'Billing Contact:', + '#' => 'Search Again' + ); + + $r['regrinfo'] = get_blocks($data['rawdata'], $items); + + if (isset($r['regrinfo']['domain']['status'])) + { + $r['regrinfo']['registered'] = 'yes'; + $r['regrinfo']['domain']['handler'] = strtok(array_shift($r['regrinfo']['owner']),' '); + $r['regrinfo'] = get_contacts($r['regrinfo']); + } + else + $r['regrinfo']['registered'] = 'no'; + + $r['regyinfo']['referrer'] = 'http://www.org.za'; + $r['regyinfo']['registrar'] = 'The ORG.ZA Domain'; + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.parser.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.parser.php new file mode 100644 index 0000000..d11243a --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.parser.php @@ -0,0 +1,873 @@ + 'domain.name', + 'Domain ID:' => 'domain.handle', + 'Sponsoring Registrar:' => 'domain.sponsor', + 'Registrar ID:' => 'domain.sponsor', + 'Domain Status:' => 'domain.status.', + 'Status:' => 'domain.status.', + 'Name Server:' => 'domain.nserver.', + 'Nameservers:' => 'domain.nserver.', + 'Maintainer:' => 'domain.referer', + + 'Domain Registration Date:' => 'domain.created', + 'Domain Create Date:' => 'domain.created', + 'Domain Expiration Date:' => 'domain.expires', + 'Domain Last Updated Date:' => 'domain.changed', + 'Creation Date:' => 'domain.created', + 'Last Modification Date:' => 'domain.changed', + 'Expiration Date:' => 'domain.expires', + 'Created On:' => 'domain.created', + 'Last Updated On:' => 'domain.changed', + 'Expiration Date:' => 'domain.expires', + + 'Registrant ID:' => 'owner.handle', + 'Registrant Name:' => 'owner.name', + 'Registrant Organization:' => 'owner.organization', + 'Registrant Address:' => 'owner.address.street.', + 'Registrant Address1:' => 'owner.address.street.', + 'Registrant Address2:' => 'owner.address.street.', + 'Registrant Street:' => 'owner.address.street.', + 'Registrant Street1:' => 'owner.address.street.', + 'Registrant Street2:' => 'owner.address.street.', + 'Registrant Street3:' => 'owner.address.street.', + 'Registrant Postal Code:' => 'owner.address.pcode', + 'Registrant City:' => 'owner.address.city', + 'Registrant State/Province:' => 'owner.address.state', + 'Registrant Country:' => 'owner.address.country', + 'Registrant Country/Economy:' => 'owner.address.country', + 'Registrant Phone Number:' => 'owner.phone', + 'Registrant Phone:' => 'owner.phone', + 'Registrant Facsimile Number:' => 'owner.fax', + 'Registrant FAX:' => 'owner.fax', + 'Registrant Email:' => 'owner.email', + 'Registrant E-mail:' => 'owner.email', + + 'Administrative Contact ID:' => 'admin.handle', + 'Administrative Contact Name:' => 'admin.name', + 'Administrative Contact Organization:' => 'admin.organization', + 'Administrative Contact Address:' => 'admin.address.street.', + 'Administrative Contact Address1:' => 'admin.address.street.', + 'Administrative Contact Address2:' => 'admin.address.street.', + 'Administrative Contact Postal Code:' => 'admin.address.pcode', + 'Administrative Contact City:' => 'admin.address.city', + 'Administrative Contact State/Province:' => 'admin.address.state', + 'Administrative Contact Country:' => 'admin.address.country', + 'Administrative Contact Phone Number:' => 'admin.phone', + 'Administrative Contact Email:' => 'admin.email', + 'Administrative Contact Facsimile Number:' => 'admin.fax', + 'Administrative Contact Tel:' => 'admin.phone', + 'Administrative Contact Fax:' => 'admin.fax', + 'Administrative ID:' => 'admin.handle', + 'Administrative Name:' => 'admin.name', + 'Administrative Organization:' => 'admin.organization', + 'Administrative Address:' => 'admin.address.street.', + 'Administrative Address1:' => 'admin.address.street.', + 'Administrative Address2:' => 'admin.address.street.', + 'Administrative Postal Code:' => 'admin.address.pcode', + 'Administrative City:' => 'admin.address.city', + 'Administrative State/Province:' => 'admin.address.state', + 'Administrative Country/Economy:' => 'admin.address.country', + 'Administrative Phone:' => 'admin.phone', + 'Administrative E-mail:' => 'admin.email', + 'Administrative Facsimile Number:' => 'admin.fax', + 'Administrative Tel:' => 'admin.phone', + 'Administrative FAX:' => 'admin.fax', + 'Admin ID:' => 'admin.handle', + 'Admin Name:' => 'admin.name', + 'Admin Organization:' => 'admin.organization', + 'Admin Street:' => 'admin.address.street.', + 'Admin Street1:' => 'admin.address.street.', + 'Admin Street2:' => 'admin.address.street.', + 'Admin Street3:' => 'admin.address.street.', + 'Admin Address:' => 'admin.address.street.', + 'Admin Address2:' => 'admin.address.street.', + 'Admin Address3:' => 'admin.address.street.', + 'Admin City:' => 'admin.address.city', + 'Admin State/Province:' => 'admin.address.state', + 'Admin Postal Code:' => 'admin.address.pcode', + 'Admin Country:' => 'admin.address.country', + 'Admin Country/Economy:' => 'admin.address.country', + 'Admin Phone:' => 'admin.phone', + 'Admin FAX:' => 'admin.fax', + 'Admin Email:' => 'admin.email', + 'Admin E-mail:' => 'admin.email', + + 'Technical Contact ID:' => 'tech.handle', + 'Technical Contact Name:' => 'tech.name', + 'Technical Contact Organization:' => 'tech.organization', + 'Technical Contact Address:' => 'tech.address.street.', + 'Technical Contact Address1:' => 'tech.address.street.', + 'Technical Contact Address2:' => 'tech.address.street.', + 'Technical Contact Postal Code:' => 'tech.address.pcode', + 'Technical Contact City:' => 'tech.address.city', + 'Technical Contact State/Province:' => 'tech.address.state', + 'Technical Contact Country:' => 'tech.address.country', + 'Technical Contact Phone Number:' => 'tech.phone', + 'Technical Contact Facsimile Number:' => 'tech.fax', + 'Technical Contact Phone:' => 'tech.phone', + 'Technical Contact Fax:' => 'tech.fax', + 'Technical Contact Email:' => 'tech.email', + 'Technical ID:' => 'tech.handle', + 'Technical Name:' => 'tech.name', + 'Technical Organization:' => 'tech.organization', + 'Technical Address:' => 'tech.address.street.', + 'Technical Address1:' => 'tech.address.street.', + 'Technical Address2:' => 'tech.address.street.', + 'Technical Postal Code:' => 'tech.address.pcode', + 'Technical City:' => 'tech.address.city', + 'Technical State/Province:' => 'tech.address.state', + 'Technical Country/Economy:' => 'tech.address.country', + 'Technical Phone Number:' => 'tech.phone', + 'Technical Facsimile Number:' => 'tech.fax', + 'Technical Phone:' => 'tech.phone', + 'Technical Fax:' => 'tech.fax', + 'Technical FAX:' => 'tech.fax', + 'Technical E-mail:' => 'tech.email', + 'Tech ID:' => 'tech.handle', + 'Tech Name:' => 'tech.name', + 'Tech Organization:' => 'tech.organization', + 'Tech Address:' => 'tech.address.street.', + 'Tech Address2:' => 'tech.address.street.', + 'Tech Address3:' => 'tech.address.street.', + 'Tech Street:' => 'tech.address.street.', + 'Tech Street1:' => 'tech.address.street.', + 'Tech Street2:' => 'tech.address.street.', + 'Tech Street3:' => 'tech.address.street.', + 'Tech City:' => 'tech.address.city', + 'Tech Postal Code:' => 'tech.address.pcode', + 'Tech State/Province:' => 'tech.address.state', + 'Tech Country:' => 'tech.address.country', + 'Tech Country/Economy:' => 'tech.address.country', + 'Tech Phone:' => 'tech.phone', + 'Tech FAX:' => 'tech.fax', + 'Tech Email:' => 'tech.email', + 'Tech E-mail:' => 'tech.email', + + 'Billing Contact ID:' => 'billing.handle', + 'Billing Contact Name:' => 'billing.name', + 'Billing Contact Organization:' => 'billing.organization', + 'Billing Contact Address1:' => 'billing.address.street.', + 'Billing Contact Address2:' => 'billing.address.street.', + 'Billing Contact Postal Code:' => 'billing.address.pcode', + 'Billing Contact City:' => 'billing.address.city', + 'Billing Contact State/Province:' => 'billing.address.state', + 'Billing Contact Country:' => 'billing.address.country', + 'Billing Contact Phone Number:' => 'billing.phone', + 'Billing Contact Facsimile Number:' => 'billing.fax', + 'Billing Contact Email:' => 'billing.email', + 'Billing ID:' => 'billing.handle', + 'Billing Name:' => 'billing.name', + 'Billing Organization:' => 'billing.organization', + 'Billing Address:' => 'billing.address.street.', + 'Billing Address1:' => 'billing.address.street.', + 'Billing Address2:' => 'billing.address.street.', + 'Billing Address3:' => 'billing.address.street.', + 'Billing Street:' => 'billing.address.street.', + 'Billing Street1:' => 'billing.address.street.', + 'Billing Street2:' => 'billing.address.street.', + 'Billing Street3:' => 'billing.address.street.', + 'Billing City:' => 'billing.address.city', + 'Billing Postal Code:' => 'billing.address.pcode', + 'Billing State/Province:' => 'billing.address.state', + 'Billing Country:' => 'billing.address.country', + 'Billing Country/Economy:' => 'billing.address.country', + 'Billing Phone:' => 'billing.phone', + 'Billing Fax:' => 'billing.fax', + 'Billing FAX:' => 'billing.fax', + 'Billing Email:' => 'billing.email', + 'Billing E-mail:' => 'billing.email', + + 'Zone ID:' => 'zone.handle', + 'Zone Organization:' => 'zone.organization', + 'Zone Name:' => 'zone.name', + 'Zone Address:' => 'zone.address.street.', + 'Zone Address 2:' => 'zone.address.street.', + 'Zone City:' => 'zone.address.city', + 'Zone State/Province:' => 'zone.address.state', + 'Zone Postal Code:' => 'zone.address.pcode', + 'Zone Country:' => 'zone.address.country', + 'Zone Phone Number:' => 'zone.phone', + 'Zone Fax Number:' => 'zone.fax', + 'Zone Email:' => 'zone.email' + ); + +$r = ''; +$disok = true; + +while (list($key,$val) = each($rawdata)) + { + if (trim($val) != '') + { + if (($val[0]=='%' || $val[0]=='#') && $disok) + { + $r['disclaimer'][] = trim(substr($val,1)); + $disok = true; + continue; + } + + $disok = false; + reset($items); + + while (list($match, $field)=each($items)) + { + $pos = strpos($val,$match); + + if ($pos !== false) + { + if ($field != '') + { + $var = '$r'.getvarname($field); + $itm = trim(substr($val,$pos+strlen($match))); + + if ($itm!='') + eval($var.'="'.str_replace('"','\"',$itm).'";'); + } + + if (!$scanall) + break; + } + } + } + } + +if (empty($r)) + { + if ($hasreg) $r['registered'] = 'no'; + } +else + { + if ($hasreg) $r['registered'] = 'yes'; + + $r = format_dates($r, $dateformat); + } + +return $r; +} + +//------------------------------------------------------------------------- + +function getvarname ( $vdef ) +{ +$parts = explode('.',$vdef); +$var = ''; + +foreach($parts as $mn) + if ($mn == '') $var = $var.'[]'; + else $var = $var.'["'.$mn.'"]'; + +return $var; +} + +//------------------------------------------------------------------------- + +function get_blocks ( $rawdata, $items, $partial_match = false, $def_block = false ) +{ + +$r = array(); +$endtag = ''; + +while (list($key,$val) = each($rawdata)) + { + $val = trim($val); + if ($val == '') continue; + + $var = $found = false; + + foreach ($items as $field => $match) + { + $pos = strpos($val,$match); + + if ($field != '' && $pos !== false) + { + if ($val == $match) + { + $found = true; + $endtag = ''; + $line = $val; + break; + } + + $last = substr($val,-1,1); + + if ($last == ':' || $last == '-' || $last == ']') + { + $found = true; + $endtag = $last; + $line = $val; + } + else + { + $var = getvarname(strtok($field,'#')); + $itm = trim(substr($val,$pos+strlen($match))); + eval('$r'.$var.'=$itm;'); + } + + break; + } + } + + if (!$found) + { + if (!$var && $def_block) $r[$def_block][] = $val; + continue; + } + + $block = array(); + + // Block found, get data ... + + while (list($key,$val) = each($rawdata)) + { + $val = trim($val); + + if ($val == '' || $val == str_repeat($val[0],strlen($val))) continue; + + $last = substr($val,-1,1); +/* + if ($last == $endtag) + { + // Another block found + prev($rawdata); + break; + } + + if ($endtag == '' || $partial_match) + */ + if ($endtag == '' || $partial_match || $last == $endtag) + { + //Check if this line starts another block + $et = false; + + foreach ($items as $field => $match) + { + $pos = strpos($val,$match); + + if ($pos !== false && $pos == 0) + { + $et = true; + break; + } + } + + if ($et) + { + // Another block found + prev($rawdata); + break; + } + } + + $block[] = $val; + } + + if (empty($block)) continue; + + foreach ($items as $field => $match) + { + $pos = strpos($line,$match); + + if ($pos !== false) + { + $var = getvarname(strtok($field,'#')); + if ($var != '[]') eval('$r'.$var.'=$block;'); + } + } + } + +return $r; +} + +//------------------------------------------------------------------------- + +function easy_parser($data_str, $items, $date_format, $translate = false , + $has_org = false, $partial_match = false, + $def_block = false ) +{ +$r = get_blocks($data_str, $items, $partial_match, $def_block); +$r = get_contacts($r, $translate, $has_org); +format_dates($r, $date_format); +return $r; +} + +//------------------------------------------------------------------------- + +function get_contacts ( $array, $extra_items='', $has_org= false ) +{ +if (isset($array['billing'])) + $array['billing'] = get_contact($array['billing'], $extra_items, $has_org); + +if (isset($array['tech'])) + $array['tech'] = get_contact($array['tech'], $extra_items, $has_org); + +if (isset($array['zone'])) + $array['zone'] = get_contact($array['zone'], $extra_items, $has_org); + +if (isset($array['admin'])) + $array['admin'] = get_contact($array['admin'], $extra_items, $has_org); + +if (isset($array['owner'])) + $array['owner'] = get_contact($array['owner'], $extra_items, $has_org); + +if (isset($array['registrar'])) + $array['registrar'] = get_contact($array['registrar'], $extra_items, $has_org); + +return $array; +} + +//------------------------------------------------------------------------- + +function get_contact ( $array, $extra_items='', $has_org= false ) +{ + +if (!is_array($array)) + return array(); + +$items = array ( + 'fax..:' => 'fax', + 'fax.' => 'fax', + 'fax-no:' => 'fax', + 'fax -' => 'fax', + 'fax-' => 'fax', + 'fax::' => 'fax', + 'fax:' => 'fax', + '[fax]' => 'fax', + '(fax)' => 'fax', + 'fax' => 'fax', + 'tel. ' => 'phone', + 'tel:' => 'phone', + 'phone::' => 'phone', + 'phone:' => 'phone', + 'phone-' => 'phone', + 'phone -' => 'phone', + 'email:' => 'email', + 'e-mail:' => 'email', + 'company name:' => 'organization', + 'organisation:' => 'organization', + 'first name:' => 'name.first', + 'last name:' => 'name.last', + 'street:' => 'address.street', + 'address:' => 'address.street.', + 'language:' => '', + 'location:' => 'address.city', + 'country:' => 'address.country', + 'name:' => 'name', + 'last modified:' => 'changed' + ); + +if ($extra_items) + { + foreach($items as $match => $field) + if (!isset($extra_items[$match])) + $extra_items[$match] = $field; + $items = $extra_items; + } + +while (list($key,$val)=each($array)) + { + $ok=true; + + while ($ok) + { + reset($items); + $ok = false; + + while (list($match,$field) = each($items)) + { + $pos = strpos(strtolower($val),$match); + + if ($pos === false) continue; + + $itm = trim(substr($val,$pos+strlen($match))); + + if ($field != '' && $itm != '') + { + eval('$r'.getvarname($field).'=$itm;'); + } + + $val = trim(substr($val,0,$pos)); + + if ($val == '') + { + unset($array[$key]); + break; + } + else + { + $array[$key] = $val; + $ok = true; + } + //break; + } + + if (preg_match("/([+]*[-\(\)\. x0-9]){7,}/", $val, $matches)) + { + $phone = trim(str_replace(' ','',$matches[0])); + + if (strlen($phone) > 8 && !preg_match('/[0-9]{5}\-[0-9]{3}/',$phone)) + { + if (isset($r['phone'])) + { + if (isset($r['fax'])) continue; + $r['fax'] = trim($matches[0]); + } + else + { + $r['phone'] = trim($matches[0]); + } + + $val = str_replace($matches[0],'',$val); + + if ($val == '') + { + unset($array[$key]); + continue; + } + else + { + $array[$key] = $val; + $ok = true; + } + } + } + + if (preg_match('/([-0-9a-zA-Z._+&\/=]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6})/',$val, $matches)) + { + $r['email'] = $matches[0]; + + $val = str_replace($matches[0],'',$val); + $val = trim(str_replace('()','',$val)); + + if ($val == '') + { + unset($array[$key]); + continue; + } + else + { + if (!isset($r['name'])) + { + $r['name'] = $val; + unset($array[$key]); + } + else + $array[$key] = $val; + + $ok = true; + } + } + } + } + +if (!isset($r['name']) && count($array)>0) + { + $r['name'] = array_shift($array); + } + +if ($has_org && count($array)>0) + { + $r['organization'] = array_shift($array); + } + +if (isset($r['name']) && is_array($r['name'])) + { + $r['name'] = implode($r['name'],' '); + } + +if (!empty($array)) + { + if (isset($r['address'])) + $r['address'] = array_merge($r['address'],$array); + else + $r['address'] = $array; + } + +return $r; +} + +//------------------------------------------------------------------------- + +function format_dates (&$res,$format='mdy') +{ +if (!is_array($res)) return $res; + +foreach ($res as $key => $val) + { + if (is_array($val)) + { + if (!is_numeric($key) && ($key=='expires' || $key=='created' || $key=='changed')) + { + $d = get_date($val[0],$format); + if ($d) $res[$key] = $d; + } + else + { + $res[$key] = format_dates($val,$format); + } + } + else + { + if (!is_numeric($key) && ($key=='expires' || $key=='created' || $key=='changed')) + { + $d = get_date($val,$format); + if ($d) $res[$key] = $d; + } + } + } + +return $res; +} + +//------------------------------------------------------------------------- + +function get_date($date,$format) +{ +$months = array( 'jan'=>1, 'ene'=>1, 'feb'=>2, 'mar'=>3, 'apr'=>4, 'abr'=>4, + 'may'=>5, 'jun'=>6, 'jul'=>7, 'aug'=>8, 'ago'=>8, 'sep'=>9, + 'oct'=>10, 'nov'=>11, 'dec'=>12, 'dic'=>12 ); + +$parts = explode(' ',$date); + +if (strpos($parts[0],'@') !== false) + { + unset($parts[0]); + $date = implode(' ',$parts); + } + +$date = str_replace(',',' ',trim($date)); +$date = str_replace('.',' ',$date); +$date = str_replace('-',' ',$date); +$date = str_replace('/',' ',$date); +$date = str_replace("\t",' ',$date); + +$parts = explode(' ',$date); +$res = false; + +if ((strlen($parts[0]) == 8 || count($parts) == 1) && is_numeric($parts[0])) + { + $val = $parts[0]; + for ($p=$i=0; $i<3; $i++) + { + if ($format[$i] != 'Y') + { + $res[$format[$i]] = substr($val,$p,2); + $p += 2; + } + else + { + $res['y'] = substr($val,$p,4); + $p += 4; + } + } + } +else + { + $format = strtolower($format); + + for ($p=$i=0; $p 1900) + { + $res[$key] = $res['y']; + $res['y'] = $val; + $ok = false; + break; + } + } + } + +if ($res['m'] > 12) + { + $v = $res['m']; + $res['m'] = $res['d']; + $res['d'] = $v; + } + +if ($res['y'] < 70) + $res['y'] += 2000; +else + if ($res['y'] <= 99) + $res['y'] += 1900; + +return sprintf("%.4d-%02d-%02d",$res['y'],$res['m'],$res['d']); +} + +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.pl.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.pl.php new file mode 100644 index 0000000..5228954 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.pl.php @@ -0,0 +1,54 @@ + 'created:', + 'domain.changed' => 'last modified:', + 'domain.sponsor' => 'REGISTRAR:', + '#' => 'WHOIS displays data with a delay not exceeding 15 minutes in relation to the .pl Registry system' + + ); + + $r['regrinfo'] = easy_parser($data_str['rawdata'], $items, 'ymd'); + + $r['regyinfo'] = array( + 'referrer' => 'http://www.dns.pl/english/index.html', + 'registrar' => 'NASK' + ); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.pro.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.pro.php new file mode 100644 index 0000000..7c09bd4 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.pro.php @@ -0,0 +1,43 @@ + \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.pt.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.pt.php new file mode 100644 index 0000000..ddda050 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.pt.php @@ -0,0 +1,81 @@ + ' / Domain Name:', + 'domain.created' => 'Data de registo / Creation Date (dd/mm/yyyy):', + 'domain.nserver.' => 'Nameserver:', + 'domain.status' => 'Estado / Status:', + 'owner' => 'Titular / Registrant', + 'billing' => 'Entidade Gestora / Billing Contact', + 'admin' => 'Responsvel Administrativo / Admin Contact', + 'tech' => 'Responsvel Tcnico / Tech Contact', + '#' => 'Nameserver Information' + ); + + $r['regrinfo'] = get_blocks($data['rawdata'], $items); + + if (empty($r['regrinfo']['domain']['name'])) + { + print_r($r['regrinfo']); + $r['regrinfo']['registered'] = 'no'; + return $r; + } + + $r['regrinfo']['domain']['created'] = get_date($r['regrinfo']['domain']['created'], 'dmy'); + + if ($r['regrinfo']['domain']['status'] == 'ACTIVE') + { + $r['regrinfo'] = get_contacts($r['regrinfo']); + $r['regrinfo']['registered'] = 'yes'; + } + else + $r['regrinfo']['registered'] = 'no'; + + $r['regyinfo'] = array( + 'referrer' => 'http://www.fccn.pt', + 'registrar' => 'FCCN' + ); + + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ro.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ro.php new file mode 100644 index 0000000..3c61775 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ro.php @@ -0,0 +1,99 @@ + 'fax', + 'e-mail' => 'email', + 'nic-hdl' => 'handle', + 'person' => 'name', + 'address' => 'address.', + 'domain-name' => '', + 'updated' => 'changed', + 'registration-date' => 'created', + 'domain-status' => 'status', + 'nameserver' => 'nserver' + ); + + $contacts = array( + 'admin-contact' => 'admin', + 'technical-contact' => 'tech', + 'zone-contact' => 'zone', + 'billing-contact' => 'billing' + ); + + $extra = array( + 'postal code:' => 'address.pcode' + ); + + $reg = generic_parser_a($data_str['rawdata'], $translate, $contacts, 'domain','Ymd'); + + if (isset($reg['domain']['description'])) + { + $reg['owner'] = get_contact($reg['domain']['description'],$extra); + unset($reg['domain']['description']); + + foreach($reg as $key => $item) + { + if (isset($item['address'])) + { + $data = $item['address']; + unset($reg[$key]['address']); + $reg[$key] = array_merge($reg[$key],get_contact($data,$extra)); + } + } + + $reg['registered'] = 'yes'; + } + else + $reg['registered'] = 'no'; + + $r['regrinfo'] = $reg; + $r['regyinfo'] = array( + 'referrer' => 'http://www.nic.ro', + 'registrar' => 'nic.ro' + ); + + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ru.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ru.php new file mode 100644 index 0000000..f2419c7 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ru.php @@ -0,0 +1,63 @@ + 'domain.name', + 'state:' => 'domain.status', + 'nserver:' => 'domain.nserver.', + 'source:' => 'domain.source', + 'created:' => 'domain.created', + 'paid-till:' => 'domain.expires', + 'type:' => 'owner.type', + 'org:' => 'owner.organization', + 'phone:' => 'owner.phone', + 'fax-no:' => 'owner.fax', + 'email:' => 'admin.email' + ); + + $r['regrinfo'] = generic_parser_b($data_str['rawdata'], $items, 'dmy'); + + if (empty($r['regrinfo']['domain']['status'])) + $r['regrinfo']['registered'] = 'no'; + + $r['regyinfo'] = array( + 'referrer' => 'http://www.ripn.net', + 'registrar' => 'RUCENTER-REG-RIPN' + ); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.rwhois.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.rwhois.php new file mode 100644 index 0000000..04bc31f --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.rwhois.php @@ -0,0 +1,58 @@ + 'owner.name', + 'network:Organization;I:' => 'owner.organization', + 'network:Organization-City:' => 'owner.address.city', + 'network:Organization-Zip:' => 'owner.address.pcode', + 'network:Organization-Country:' => 'owner.address.country', + 'network:IP-Network-Block:' => 'network.inetnum', + 'network:IP-Network:' => 'network.inetnum', + 'network:Network-Name:' => 'network.name', + 'network:ID:' => 'network.handle', + 'network:Created:' => 'network.created', + 'network:Updated:' => 'network.changed', + 'network:Tech-Contact;I:' => 'tech.email', + 'network:Admin-Contact;I:' => 'admin.email' + ); + + $res = generic_parser_b($data_str, $items, 'Ymd', false); + if (isset($res['disclaimer'])) unset($res['disclaimer']); + return array( 'regrinfo' => $res ); + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.sc.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.sc.php new file mode 100644 index 0000000..663b83e --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.sc.php @@ -0,0 +1,45 @@ + 'http://www.nic.sc', + 'registrar' => 'VCS (Pty) Limited' + ); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.se.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.se.php new file mode 100644 index 0000000..a463382 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.se.php @@ -0,0 +1,58 @@ + 'domain.name', + 'state:' => 'domain.status.', + 'status:' => 'domain.status.', + 'expires:' => 'domain.expires', + 'created:' => 'domain.created', + 'nserver:' => 'domain.nserver.', + 'holder:' => 'owner.handle' + ); + + $r['regrinfo'] = generic_parser_b($data_str['rawdata'], $items, 'ymd', false); + + $r['regrinfo']['registered'] = isset($r['regrinfo']['domain']['name']) ? 'yes' : 'no'; + + $r['regyinfo'] = array( + 'referrer' => 'http://www.nic-se.se', + 'registrar' => 'NIC-SE' + ); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.servers.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.servers.php new file mode 100644 index 0000000..d0eb2a3 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.servers.php @@ -0,0 +1,252 @@ +DATA_VERSION = '19'; + +$this->DATA = array( + 'bz' => 'gtld', + 'com' => 'gtld', + 'jobs' => 'gtld', + 'li' => 'ch', + 'net' => 'gtld', + 'tv' => 'gtld', + 'za.org' => 'zanet', + 'za.net' => 'zanet' + ); + +/* Non UTF-8 servers */ + +$this->NON_UTF8 = array( + 'br.whois-servers.net' => 1, + 'ca.whois-servers.net' => 1, + 'cl.whois-servers.net' => 1, + 'hu.whois-servers.net' => 1, + 'is.whois-servers.net' => 1, + 'pt.whois-servers.net' => 1, + 'whois.interdomain.net' => 1, + 'whois.lacnic.net' => 1, + 'whois.nicline.com' => 1, + 'whois.ripe.net' => 1 + ); + +/* If whois Server needs any parameters, enter it here */ + +$this->WHOIS_PARAM = array( + 'com.whois-servers.net' => 'domain =$', + 'net.whois-servers.net' => 'domain =$', + 'de.whois-servers.net' => '-T dn,ace $', + 'jp.whois-servers.net' => 'DOM $/e' + ); + +/* TLD's that have special whois servers or that can only be reached via HTTP */ + +$this->WHOIS_SPECIAL = array( + 'ad' => '', + 'ae' => 'whois.aeda.net.ae', + 'af' => 'whois.nic.af', + 'ai' => 'http://whois.offshore.ai/cgi-bin/whois.pl?domain-name={domain}.ai', + 'al' => '', + 'az' => '', + 'ba' => '', + 'bb' => 'http://domains.org.bb/regsearch/getdetails.cfm?DND={domain}.bb', + 'bg' => 'http://www.register.bg/bg-nic/displaydomain.pl?domain={domain}.bg&search=exist', + 'bi' => 'whois.nic.bi', + 'bj' => 'whois.nic.bj', + 'by' => '', + 'bz' => 'whois2.afilias-grs.net', + 'cy' => '', + 'es' => '', + 'fj' => 'whois.usp.ac.fj', + 'fm' => 'http://www.dot.fm/query_whois.cfm?domain={domain}&tld=fm', + 'jobs' => 'jobswhois.verisign-grs.com', + 'ke' => 'kenic.or.ke', + 'la' => 'whois.centralnic.net', + 'gr' => '', + 'gs' => 'http://www.adamsnames.tc/whois/?domain={domain}.gs', + 'gt' => 'http://www.gt/Inscripcion/whois.php?domain={domain}.gt', + 'me' => 'whois.meregistry.net', + 'mobi' => 'whois.dotmobiregistry.net', + 'ms' => 'http://www.adamsnames.tc/whois/?domain={domain}.ms', + 'mt' => 'http://www.um.edu.mt/cgi-bin/nic/whois?domain={domain}.mt', + 'nl' => 'whois.domain-registry.nl', + 'ly' => 'whois.nic.ly', + 'pe' => 'kero.rcp.net.pe', + 'pr' => 'whois.uprr.pr', + 'pro' => 'whois.registry.pro', + 'sc' => 'whois2.afilias-grs.net', + 'tc' => 'http://www.adamsnames.tc/whois/?domain={domain}.tc', + 'tf' => 'http://www.adamsnames.tc/whois/?domain={domain}.tf', + 've' => 'whois.nic.ve', + 'vg' => 'http://www.adamsnames.tc/whois/?domain={domain}.vg', + // Second level + 'net.au' => 'whois.aunic.net', + 'ae.com' => 'whois.centralnic.net', + 'br.com' => 'whois.centralnic.net', + 'cn.com' => 'whois.centralnic.net', + 'de.com' => 'whois.centralnic.net', + 'eu.com' => 'whois.centralnic.net', + 'hu.com' => 'whois.centralnic.net', + 'jpn.com'=> 'whois.centralnic.net', + 'kr.com' => 'whois.centralnic.net', + 'gb.com' => 'whois.centralnic.net', + 'no.com' => 'whois.centralnic.net', + 'qc.com' => 'whois.centralnic.net', + 'ru.com' => 'whois.centralnic.net', + 'sa.com' => 'whois.centralnic.net', + 'se.com' => 'whois.centralnic.net', + 'za.com' => 'whois.centralnic.net', + 'uk.com' => 'whois.centralnic.net', + 'us.com' => 'whois.centralnic.net', + 'uy.com' => 'whois.centralnic.net', + 'gb.net' => 'whois.centralnic.net', + 'se.net' => 'whois.centralnic.net', + 'uk.net' => 'whois.centralnic.net', + 'za.net' => 'whois.za.net', + 'za.org' => 'whois.za.net', + 'co.za' => 'http://co.za/cgi-bin/whois.sh?Domain={domain}.co.za', + 'org.za' => 'http://www.org.za/cgi-bin/rwhois?domain={domain}.org.za&format=full' + ); + +/* handled gTLD whois servers */ + +$this->WHOIS_GTLD_HANDLER = array( + 'whois.bulkregister.com' => 'enom', + 'whois.dotregistrar.com' => 'dotster', + 'whois.namesdirect.com' => 'dotster', + 'whois.psi-usa.info' => 'psiusa', + 'whois.www.tv' => 'tvcorp', + 'whois.tucows.com' => 'opensrs', + 'whois.35.com' => 'onlinenic', + 'whois.nominalia.com' => 'genericb', + 'whois.encirca.com' => 'genericb', + 'whois.corenic.net' => 'genericb' + ); + +/* Non ICANN TLD's */ + +$this->WHOIS_NON_ICANN = array ( + 'agent' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'agente' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'america' => 'http://www.adns.net/whois.php?txtDOMAIN={domain}.{tld}', + 'amor' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'amore' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'amour' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'arte' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'artes' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'arts' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'asta' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'auction' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'auktion' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'boutique' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'chat' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'chiesa' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'church' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'cia' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'ciao' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'cie' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'club' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'clube' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'com2' => 'http://www.adns.net/whois.php?txtDOMAIN={domain}.{tld}', + 'deporte' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'ditta' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'earth' => 'http://www.adns.net/whois.php?txtDOMAIN={domain}.{tld}', + 'eglise' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'enchere' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'escola' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'escuela' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'esporte' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'etc' => 'http://www.adns.net/whois.php?txtDOMAIN={domain}.{tld}', + 'famiglia' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'familia' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'familie' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'family' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'free' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'hola' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'game' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'ges' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'gmbh' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'golf' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'gratis' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'gratuit' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'iglesia' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'igreja' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'inc' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'jeu' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'jogo' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'juego' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'kids' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'kirche' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'krunst' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'law' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'legge' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'lei' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'leilao' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'ley' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'liebe' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'lion' => 'http://www.adns.net/whois.php?txtDOMAIN={domain}.{tld}', + 'llc' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'llp' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'loi' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'loja' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'love' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'ltd' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'makler' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'med' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'mp3' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'not' => 'http://www.adns.net/whois.php?txtDOMAIN={domain}.{tld}', + 'online' => 'http://www.adns.net/whois.php?txtDOMAIN={domain}.{tld}', + 'recht' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'reise' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'resto' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'school' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'schule' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'scifi' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'scuola' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'shop' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'soc' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'spiel' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'sport' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'subasta' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'tec' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'tech' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'tienda' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'travel' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'turismo' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'usa' => 'http://www.adns.net/whois.php?txtDOMAIN={domain}.{tld}', + 'verein' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'viaje' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'viagem' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'video' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'voyage' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'xxx' => 'http://www.new.net/search_whois.tp?domain={domain}&tld={tld}', + 'z' => 'http://www.adns.net/whois.php?txtDOMAIN={domain}.{tld}' + ); +?> diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.si.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.si.php new file mode 100644 index 0000000..d50ed2b --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.si.php @@ -0,0 +1,55 @@ + 'handle', + 'nameserver' => 'nserver' + ); + + $contacts = array( + 'registrant' => 'owner', + 'tech-c' => 'tech' + ); + + $r['regrinfo'] = generic_parser_a($data_str['rawdata'], $translate, $contacts, 'domain', 'Ymd'); + $r['regyinfo'] = array( + 'referrer' => 'http://www.arnes.si', + 'registrar' => 'ARNES' + ); + return $r; + } + } +?> diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.su.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.su.php new file mode 100644 index 0000000..93fe793 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.su.php @@ -0,0 +1,63 @@ + 'domain.name', + 'state:' => 'domain.status', + 'person:' => 'owner.name', + 'phone:' => 'owner.phone', + 'e-mail:' => 'owner.email', + 'created:' => 'domain.created', + 'paid-till:' => 'domain.expires', +/* + 'nserver:' => 'domain.nserver.', + 'source:' => 'domain.source', + 'type:' => 'owner.type', + 'org:' => 'owner.organization', + 'fax-no:' => 'owner.fax', +*/ + ); + + $r['regrinfo'] = generic_parser_b($data_str['rawdata'], $items, 'dmy'); + + $r['regyinfo'] = array( + 'referrer' => 'http://www.ripn.net', + 'registrar' => 'RUCENTER-REG-RIPN' + ); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.tel.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.tel.php new file mode 100644 index 0000000..3ffe821 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.tel.php @@ -0,0 +1,45 @@ + 'http://www.telnic.org', + 'registrar' => 'Telnic' + ); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.travel.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.travel.php new file mode 100644 index 0000000..9400ab9 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.travel.php @@ -0,0 +1,43 @@ + \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.uk.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.uk.php new file mode 100644 index 0000000..043c2fb --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.uk.php @@ -0,0 +1,72 @@ + 'Registrant:', + 'owner.address' => "Registrant's address:", + 'owner.type' => 'Registrant type:', + 'domain.created' => 'Registered on:', + 'domain.changed' => 'Last updated:', + 'domain.expires' => 'Renewal date:', + 'domain.nserver' => 'Name servers:', + 'domain.sponsor' => 'Registrar:', + 'domain.status' => 'Registration status:', + 'domain.dnssec' => 'DNSSEC:', + '' => 'WHOIS lookup made at', + 'disclaimer' => '--', + ); + + $r['regrinfo'] = get_blocks($data_str['rawdata'], $items); + + if (isset($r['regrinfo']['owner'])) + { + $r['regrinfo']['owner']['organization'] = $r['regrinfo']['owner']['organization'][0]; + $r['regrinfo']['domain']['sponsor'] = $r['regrinfo']['domain']['sponsor'][0]; + $r['regrinfo']['registered'] = 'yes'; + + $r = format_dates($r, 'dmy'); + } + else + $r['regrinfo']['registered'] = 'no'; + + $r['regyinfo'] = array( + 'referrer' => 'http://www.nominet.org.uk', + 'registrar' => 'Nominet UK' + ); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.us.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.us.php new file mode 100644 index 0000000..393bd53 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.us.php @@ -0,0 +1,44 @@ +'http://www.neustar.us', + 'registrar' => 'NEUSTAR INC.' + ); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.utils.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.utils.php new file mode 100644 index 0000000..f62ccda --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.utils.php @@ -0,0 +1,152 @@ +debugObject($obj); + return "

      $r
      \n"; + } + + function debugObject($obj,$indent=0) + { + if (is_Array($obj)) + { + $return = ''; + foreach($obj as $k => $v) + { + $return .= str_repeat(' ',$indent); + $return .= $k."->$v\n"; + $return .= $this->debugObject($v,$indent+1); + } + return $return; + } + } + + function ns_rr_defined($query) { + return checkdnsrr($query,'NS'); + } + + // get nice HTML output + + function showHTML($result, $link_myself=true, $params='query=$0&output=nice') { + + // adds links fort HTML output + + $email_regex = "/([-_\w\.]+)(@)([-_\w\.]+)\b/i"; + $html_regex = "/(?:^|\b)((((http|https|ftp):\/\/)|(www\.))([\w\.]+)([,:%#&\/?~=\w+\.-]+))(?:\b|$)/is"; + $ip_regex = "/\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/i"; + + $out = ''; + $lempty = true; + + foreach($result['rawdata'] as $line) + { + $line = trim($line); + + if ($line == '') + { + if ($lempty) continue; + else $lempty = true; + } + else + $lempty = false; + + $out .= $line."\n"; + } + + if ($lempty) $out = trim($out); + + $out = strip_tags($out); + $out = preg_replace ($email_regex, '$0', $out); + $out = preg_replace_callback ($html_regex, 'href_replace', $out); + + if ($link_myself) + { + if ($params[0] == '/') + $link = $params; + else + $link = $_SERVER['PHP_SELF'].'?'.$params; + + $out = preg_replace ($ip_regex, '$0', $out); + + if (isset($result['regrinfo']['domain']['nserver'])) + { + $nserver = $result['regrinfo']['domain']['nserver']; + } + else + $nserver = false; + + if (isset($result['regrinfo']['network']['nserver'])) + { + $nserver = $result['regrinfo']['network']['nserver']; + } + + if (is_array($nserver)) + { + reset($nserver); + while (list($host, $ip) = each($nserver)) + { + $url = '$host"; + $out = str_replace($host, $url, $out); + $out = str_replace(strtoupper($host), $url, $out); + } + } + } + + // Add bold field names + + $out = preg_replace ("/(?m)^([-\s\.&;'\w\t\(\)\/]+:\s*)/", '$1', $out); + + // Add italics for disclaimer + + $out = preg_replace ("/(?m)^(%.*)/", '$0', $out); + + return str_replace("\n","
      \n",$out); + } +} + +function href_replace($matches) +{ +if (substr($matches[0],0,4)=='www.') + { + $web=$matches[0]; + $url='http://'.$web; + } +else + { + $web=$matches[0]; + $url=$web; + } + +return ''.$web.''; +} +?> diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ve.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ve.php new file mode 100644 index 0000000..6a205d3 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ve.php @@ -0,0 +1,75 @@ + 'Titular:', + 'domain.name' => 'Nombre de Dominio:', + 'admin' => 'Contacto Administrativo', + 'tech' => 'Contacto Tecnico', + 'billing' => 'Contacto de Cobranza:', + 'domain.created' => 'Fecha de Creacion:', + 'domain.changed' => 'Ultima Actualizacion:', + 'domain.expires' => 'Fecha de Vencimiento:', + 'domain.status' => 'Estatus del dominio:', + 'domain.nserver' => 'Servidor(es) de Nombres de Dominio' + ); + + $r['regrinfo'] = get_blocks($data_str['rawdata'], $items); + + if (!isset($r['regrinfo']['domain']['created']) || is_array($r['regrinfo']['domain']['created'])) + { + $r['regrinfo'] = array ( 'registered' => 'no'); + return $r; + } + + $dns = array(); + + foreach($r['regrinfo']['domain']['nserver'] as $nserv) + { + if ($nserv[0] == '-') $dns[] = $nserv; + } + + $r['regrinfo']['domain']['nserver'] = $dns; + $r['regrinfo'] = get_contacts($r['regrinfo']); + $r['regyinfo'] = array( + 'referrer' => 'http://registro.nic.ve', + 'registrar' => 'NIC-Venezuela - CNTI' + ); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ws.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ws.php new file mode 100644 index 0000000..5e8e0e1 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.ws.php @@ -0,0 +1,76 @@ + 'domain.name', + 'Registrant Name:' => 'owner.organization', + 'Registrant Email:' => 'owner.email', + 'Domain Created:' => 'domain.created', + 'Domain Last Updated:' => 'domain.changed', + 'Registrar Name:' => 'domain.sponsor', + 'Current Nameservers:' => 'domain.nserver.', + 'Administrative Contact Email:' => 'admin.email', + 'Administrative Contact Telephone:' => 'admin.phone', + 'Registrar Whois:' => 'rwhois' + ); + + $r['regrinfo'] = generic_parser_b($data_str['rawdata'], $items, 'ymd'); + + $r['regyinfo']['referrer'] = 'http://www.samoanic.ws'; + $r['regyinfo']['registrar'] = 'Samoa Nic'; + + if (!empty($r['regrinfo']['domain']['name'])) + { + $r['regrinfo']['registered'] = 'yes'; + + if (isset($r['regrinfo']['rwhois'])) + { + if ($this->deep_whois) + { + $r['regyinfo']['whois'] = $r['regrinfo']['rwhois']; + $r = $this->DeepWhois($query,$r); + } + + unset($r['regrinfo']['rwhois']); + } + } + else + $r['regrinfo']['registered'] = 'no'; + + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.zanet.php b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.zanet.php new file mode 100644 index 0000000..58bfe5f --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/lib/whois/whois.zanet.php @@ -0,0 +1,90 @@ + 'Domain Name : ', + 'domain.created' => 'Record Created :', + 'domain.changed' => 'Record Last Updated :', + 'owner.name' => 'Registered for :', + 'admin' => 'Administrative Contact :', + 'tech' => 'Technical Contact :', + 'domain.nserver' => 'Domain Name Servers listed in order:', + 'registered' => 'No such domain: ', + '' => 'The ZA NiC whois' + ); + + // Arrange contacts ... + + $rawdata = array(); + + while (list($key, $line) = each($data_str['rawdata'])) + { + if (strpos($line, ' Contact ') !== false) + { + $pos = strpos($line, ':'); + + if ($pos !== false) + { + $rawdata[] = substr($line, 0, $pos + 1); + $rawdata[] = trim(substr($line, $pos + 1)); + continue; + } + } + $rawdata[] = $line; + } + + $r['regrinfo'] = get_blocks($rawdata, $items); + + if (isset($r['regrinfo']['registered'])) + { + $r['regrinfo']['registered'] = 'no'; + } + else + { + if (isset($r['regrinfo']['admin'])) + $r['regrinfo']['admin'] = get_contact($r['regrinfo']['admin']); + + if (isset($r['regrinfo']['tech'])) + $r['regrinfo']['tech'] = get_contact($r['regrinfo']['tech']); + } + + $r['regyinfo']['referrer'] = 'http://www.za.net/'; // or http://www.za.org + $r['regyinfo']['registrar'] = 'ZA NiC'; + format_dates($r, 'xmdxxy'); + return $r; + } + } +?> \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/license.txt b/plugins/all-in-one-wp-security-and-firewall/license.txt new file mode 100644 index 0000000..7dc2abc --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/license.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright © 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright © + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright © + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/logs/.htaccess b/plugins/all-in-one-wp-security-and-firewall/logs/.htaccess new file mode 100644 index 0000000..e7599ea --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/logs/.htaccess @@ -0,0 +1,7 @@ + + Order deny,allow + Deny from all + + + Require all denied + diff --git a/plugins/all-in-one-wp-security-and-firewall/logs/index.html b/plugins/all-in-one-wp-security-and-firewall/logs/index.html new file mode 100644 index 0000000..e69de29 diff --git a/plugins/all-in-one-wp-security-and-firewall/logs/wp-security-log-cron-job.txt b/plugins/all-in-one-wp-security-and-firewall/logs/wp-security-log-cron-job.txt new file mode 100644 index 0000000..e69de29 diff --git a/plugins/all-in-one-wp-security-and-firewall/logs/wp-security-log.txt b/plugins/all-in-one-wp-security-and-firewall/logs/wp-security-log.txt new file mode 100644 index 0000000..e69de29 diff --git a/plugins/all-in-one-wp-security-and-firewall/other-includes/index.html b/plugins/all-in-one-wp-security-and-firewall/other-includes/index.html new file mode 100644 index 0000000..e69de29 diff --git a/plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php b/plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php new file mode 100644 index 0000000..ffa07aa --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/other-includes/wp-security-rename-login-feature.php @@ -0,0 +1,996 @@ +` element. + * Default 'Log In'. + * @param string $message Optional. Message to display in header. Default empty. + * @param WP_Error $wp_error Optional. The error to pass. Default empty. + */ +function login_header( $title = 'Log In', $message = '', $wp_error = '' ) { +global $error, $interim_login, $action; + +// Don't index any of these forms +add_action( 'login_head', 'wp_no_robots' ); + +if ( wp_is_mobile() ) + add_action( 'login_head', 'wp_login_viewport_meta' ); + +if ( empty($wp_error) ) + $wp_error = new WP_Error(); + +// Shake it! +$shake_error_codes = array( 'empty_password', 'empty_email', 'invalid_email', 'invalidcombo', 'empty_username', 'invalid_username', 'incorrect_password' ); +/** + * Filter the error codes array for shaking the login form. + * + * @since 3.0.0 + * + * @param array $shake_error_codes Error codes that shake the login form. + */ +$shake_error_codes = apply_filters( 'shake_error_codes', $shake_error_codes ); + +if ( $shake_error_codes && $wp_error->get_error_code() && in_array( $wp_error->get_error_code(), $shake_error_codes ) ) + add_action( 'login_head', 'wp_shake_js', 12 ); + +?> + + +> + + + + <?php bloginfo('name'); ?> › <?php echo $title; ?> + get_error_code() ) { + ?> + + site_name; + } else { + $login_header_url = __( 'https://wordpress.org/' ); + $login_header_title = __( 'Powered by WordPress' ); + } + + /** + * Filter link URL of the header logo above login form. + * + * @since 2.1.0 + * + * @param string $login_header_url Login header logo URL. + */ + $login_header_url = apply_filters( 'login_headerurl', $login_header_url ); + /** + * Filter the title attribute of the header logo above login form. + * + * @since 2.1.0 + * + * @param string $login_header_title Login header logo title attribute. + */ + $login_header_title = apply_filters( 'login_headertitle', $login_header_title ); + + $classes = array( 'login-action-' . $action, 'wp-core-ui' ); + if ( wp_is_mobile() ) + $classes[] = 'mobile'; + if ( is_rtl() ) + $classes[] = 'rtl'; + if ( $interim_login ) { + $classes[] = 'interim-login'; + ?> + + + + +
      +

      + add('error', $error); + unset($error); + } + + if ( $wp_error->get_error_code() ) { + $errors = ''; + $messages = ''; + foreach ( $wp_error->get_error_codes() as $code ) { + $severity = $wp_error->get_error_data( $code ); + foreach ( $wp_error->get_error_messages( $code ) as $error_message ) { + if ( 'message' == $severity ) + $messages .= ' ' . $error_message . "
      \n"; + else + $errors .= ' ' . $error_message . "
      \n"; + } + } + if ( ! empty( $errors ) ) { + /** + * Filter the error messages displayed above the login form. + * + * @since 2.1.0 + * + * @param string $errors Login error message. + */ + echo '
      ' . apply_filters( 'login_errors', $errors ) . "
      \n"; + } + if ( ! empty( $messages ) ) { + /** + * Filter instructional messages displayed above the login form. + * + * @since 2.5.0 + * + * @param string $messages Login messages. + */ + echo '

      ' . apply_filters( 'login_messages', $messages ) . "

      \n"; + } + } + } // End of login_header() + + /** + * Outputs the footer for the login page. + * + * @param string $input_id Which input to auto-focus + */ + function login_footer($input_id = '') { + global $interim_login; + + // Don't allow interim logins to navigate away from the page. + if ( ! $interim_login ): ?> +

      + + +
      + + + + + + +
      + + + + + + +add('empty_username', __('ERROR: Enter a username or e-mail address.')); + } elseif ( strpos( $_POST['user_login'], '@' ) ) { + $user_data = get_user_by( 'email', trim( $_POST['user_login'] ) ); + if ( empty( $user_data ) ) + $errors->add('invalid_email', __('ERROR: There is no user registered with that email address.')); + } else { + $login = trim($_POST['user_login']); + $user_data = get_user_by('login', $login); + } + + /** + * Fires before errors are returned from a password reset request. + * + * @since 2.1.0 + */ + do_action( 'lostpassword_post' ); + + if ( $errors->get_error_code() ) + return $errors; + + if ( !$user_data ) { + $errors->add('invalidcombo', __('ERROR: Invalid username or e-mail.')); + return $errors; + } + + // Redefining user_login ensures we return the right case in the email. + $user_login = $user_data->user_login; + $user_email = $user_data->user_email; + + /** + * Fires before a new password is retrieved. + * + * @since 1.5.0 + * @deprecated 1.5.1 Misspelled. Use 'retrieve_password' hook instead. + * + * @param string $user_login The user login name. + */ + do_action( 'retreive_password', $user_login ); + + /** + * Fires before a new password is retrieved. + * + * @since 1.5.1 + * + * @param string $user_login The user login name. + */ + do_action( 'retrieve_password', $user_login ); + + /** + * Filter whether to allow a password to be reset. + * + * @since 2.7.0 + * + * @param bool true Whether to allow the password to be reset. Default true. + * @param int $user_data->ID The ID of the user attempting to reset a password. + */ + $allow = apply_filters( 'allow_password_reset', true, $user_data->ID ); + + if ( ! $allow ) { + return new WP_Error( 'no_password_reset', __('Password reset is not allowed for this user') ); + } elseif ( is_wp_error( $allow ) ) { + return $allow; + } + + // Generate something random for a password reset key. + $key = wp_generate_password( 20, false ); + + /** + * Fires when a password reset key is generated. + * + * @since 2.5.0 + * + * @param string $user_login The username for the user. + * @param string $key The generated password reset key. + */ + do_action( 'retrieve_password_key', $user_login, $key ); + + // Now insert the key, hashed, into the DB. + if ( empty( $wp_hasher ) ) { + require_once ABSPATH . WPINC . '/class-phpass.php'; + $wp_hasher = new PasswordHash( 8, true ); + } + $hashed = time() . ':' . $wp_hasher->HashPassword( $key ); + $wpdb->update( $wpdb->users, array( 'user_activation_key' => $hashed ), array( 'user_login' => $user_login ) ); + + $message = __('Someone requested that the password be reset for the following account:') . "\r\n\r\n"; + $message .= network_home_url( '/' ) . "\r\n\r\n"; + $message .= sprintf(__('Username: %s'), $user_login) . "\r\n\r\n"; + $message .= __('If this was a mistake, just ignore this email and nothing will happen.') . "\r\n\r\n"; + $message .= __('To reset your password, visit the following address:') . "\r\n\r\n"; + $message .= '<' . network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login') . ">\r\n"; + + if ( is_multisite() ) + $blogname = $GLOBALS['current_site']->site_name; + else + /* + * The blogname option is escaped with esc_html on the way into the database + * in sanitize_option we want to reverse this for the plain text arena of emails. + */ + $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES); + + $title = sprintf( __('[%s] Password Reset'), $blogname ); + + /** + * Filter the subject of the password reset email. + * + * @since 2.8.0 + * + * @param string $title Default email title. + */ + $title = apply_filters( 'retrieve_password_title', $title ); + + /** + * Filter the message body of the password reset mail. + * + * @since 2.8.0 + * @since 4.1.0 Added `$user_login` and `$user_data` parameters. + * + * @param string $message Default mail message. + * @param string $key The activation key. + * @param string $user_login The username for the user. + * @param WP_User $user_data WP_User object. + */ + $message = apply_filters( 'retrieve_password_message', $message, $key, $user_login, $user_data ); + + if ( $message && !wp_mail( $user_email, wp_specialchars_decode( $title ), $message ) ) + wp_die( __('The e-mail could not be sent.') . "
      \n" . __('Possible reason: your host may have disabled the mail() function.') ); + + return true; +} + +// +// Main +// + +$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : 'login'; +$errors = new WP_Error(); + +if ( isset($_GET['key']) ) + $action = 'resetpass'; + +// validate action so as to default to the login screen +if ( !in_array( $action, array( 'postpass', 'logout', 'lostpassword', 'retrievepassword', 'resetpass', 'rp', 'register', 'login' ), true ) && false === has_filter( 'login_form_' . $action ) ) + $action = 'login'; + +nocache_headers(); + +header('Content-Type: '.get_bloginfo('html_type').'; charset='.get_bloginfo('charset')); + +if ( defined( 'RELOCATE' ) && RELOCATE ) { // Move flag is set + if ( isset( $_SERVER['PATH_INFO'] ) && ($_SERVER['PATH_INFO'] != $_SERVER['PHP_SELF']) ) + $_SERVER['PHP_SELF'] = str_replace( $_SERVER['PATH_INFO'], '', $_SERVER['PHP_SELF'] ); + + $url = dirname( set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] ) ); + if ( $url != get_option( 'siteurl' ) ) + update_option( 'siteurl', $url ); +} + +//Set a cookie now to see if they are supported by the browser. +$secure = ( 'https' === parse_url( site_url(), PHP_URL_SCHEME ) && 'https' === parse_url( home_url(), PHP_URL_SCHEME ) ); +setcookie( TEST_COOKIE, 'WP Cookie check', 0, COOKIEPATH, COOKIE_DOMAIN, $secure ); +if ( SITECOOKIEPATH != COOKIEPATH ) + setcookie( TEST_COOKIE, 'WP Cookie check', 0, SITECOOKIEPATH, COOKIE_DOMAIN, $secure ); + +/** + * Fires when the login form is initialized. + * + * @since 3.2.0 + */ +do_action( 'login_init' ); +/** + * Fires before a specified login form action. + * + * The dynamic portion of the hook name, `$action`, refers to the action + * that brought the visitor to the login form. Actions include 'postpass', + * 'logout', 'lostpassword', etc. + * + * @since 2.8.0 + */ +do_action( 'login_form_' . $action ); + +$http_post = ('POST' == $_SERVER['REQUEST_METHOD']); +$interim_login = isset($_REQUEST['interim-login']); + +switch ($action) { + + case 'postpass' : + require_once ABSPATH . WPINC . '/class-phpass.php'; + $hasher = new PasswordHash( 8, true ); + + /** + * Filter the life span of the post password cookie. + * + * By default, the cookie expires 10 days from creation. To turn this + * into a session cookie, return 0. + * + * @since 3.7.0 + * + * @param int $expires The expiry time, as passed to setcookie(). + */ + $expire = apply_filters( 'post_password_expires', time() + 10 * DAY_IN_SECONDS ); + $secure = ( 'https' === parse_url( home_url(), PHP_URL_SCHEME ) ); + setcookie( 'wp-postpass_' . COOKIEHASH, $hasher->HashPassword( wp_unslash( $_POST['post_password'] ) ), $expire, COOKIEPATH, COOKIE_DOMAIN, $secure ); + + wp_safe_redirect( wp_get_referer() ); + exit(); + + case 'logout' : + check_admin_referer('log-out'); + + $user = wp_get_current_user(); + + wp_logout(); + + if ( ! empty( $_REQUEST['redirect_to'] ) ) { + $redirect_to = $requested_redirect_to = $_REQUEST['redirect_to']; + } else { + $redirect_to = 'wp-login.php?loggedout=true'; + $requested_redirect_to = ''; + } + + /** + * Filter the log out redirect URL. + * + * @since 4.2.0 + * + * @param string $redirect_to The redirect destination URL. + * @param string $requested_redirect_to The requested redirect destination URL passed as a parameter. + * @param WP_User $user The WP_User object for the user that's logging out. + */ + $redirect_to = apply_filters( 'logout_redirect', $redirect_to, $requested_redirect_to, $user ); + wp_safe_redirect( $redirect_to ); + exit(); + + case 'lostpassword' : + case 'retrievepassword' : + + if ( $http_post ) { + $errors = retrieve_password(); + if ( !is_wp_error($errors) ) { + $redirect_to = !empty( $_REQUEST['redirect_to'] ) ? $_REQUEST['redirect_to'] : 'wp-login.php?checkemail=confirm'; + wp_safe_redirect( $redirect_to ); + exit(); + } + } + + if ( isset( $_GET['error'] ) ) { + if ( 'invalidkey' == $_GET['error'] ) { + $errors->add( 'invalidkey', __( 'Your password reset link appears to be invalid. Please request a new link below.' ) ); + } elseif ( 'expiredkey' == $_GET['error'] ) { + $errors->add( 'expiredkey', __( 'Your password reset link has expired. Please request a new link below.' ) ); + } + } + + $lostpassword_redirect = ! empty( $_REQUEST['redirect_to'] ) ? $_REQUEST['redirect_to'] : ''; + /** + * Filter the URL redirected to after submitting the lostpassword/retrievepassword form. + * + * @since 3.0.0 + * + * @param string $lostpassword_redirect The redirect destination URL. + */ + $redirect_to = apply_filters( 'lostpassword_redirect', $lostpassword_redirect ); + + /** + * Fires before the lost password form. + * + * @since 1.5.1 + */ + do_action( 'lost_password' ); + + login_header(__('Lost Password'), '

      ' . __('Please enter your username or email address. You will receive a link to create a new password via email.') . '

      ', $errors); + + $user_login = isset($_POST['user_login']) ? wp_unslash($_POST['user_login']) : ''; + + ?> + +
      +

      + +

      + + +

      +
      + + + + get_error_code() === 'expired_key' ) + wp_redirect( site_url( 'wp-login.php?action=lostpassword&error=expiredkey' ) ); + else + wp_redirect( site_url( 'wp-login.php?action=lostpassword&error=invalidkey' ) ); + exit; + } + + $errors = new WP_Error(); + + if ( isset($_POST['pass1']) && $_POST['pass1'] != $_POST['pass2'] ) + $errors->add( 'password_reset_mismatch', __( 'The passwords do not match.' ) ); + + /** + * Fires before the password reset procedure is validated. + * + * @since 3.5.0 + * + * @param object $errors WP Error object. + * @param WP_User|WP_Error $user WP_User object if the login and reset key match. WP_Error object otherwise. + */ + do_action( 'validate_password_reset', $errors, $user ); + + if ( ( ! $errors->get_error_code() ) && isset( $_POST['pass1'] ) && !empty( $_POST['pass1'] ) ) { + reset_password($user, $_POST['pass1']); + setcookie( $rp_cookie, ' ', time() - YEAR_IN_SECONDS, $rp_path, COOKIE_DOMAIN, is_ssl(), true ); + login_header( __( 'Password Reset' ), '

      ' . __( 'Your password has been reset.' ) . ' ' . __( 'Log in' ) . '

      ' ); + login_footer(); + exit; + } + + wp_enqueue_script('utils'); + wp_enqueue_script('user-profile'); + + login_header(__('Reset Password'), '

      ' . __('Enter your new password below.') . '

      ', $errors ); + + ?> +
      + + +

      +
      +

      + + + +
      +
      +

      +

      +
      + +

      + +

      +
      + + + +

      +
      + + + + ' . __('Register For This Site') . '

      ', $errors); + ?> + +
      +

      + +

      +

      + +

      + +

      +
      + +

      +
      + + + + ID) ) { + $secure_cookie = true; + force_ssl_admin(true); + } + } + } + + if ( isset( $_REQUEST['redirect_to'] ) ) { + $redirect_to = $_REQUEST['redirect_to']; + // Redirect to https if user wants ssl + if ( $secure_cookie && false !== strpos($redirect_to, 'wp-admin') ) + $redirect_to = preg_replace('|^http://|', 'https://', $redirect_to); + } else { + $redirect_to = admin_url(); + } + + $reauth = empty($_REQUEST['reauth']) ? false : true; + + $user = wp_signon( '', $secure_cookie ); + + if ( empty( $_COOKIE[ LOGGED_IN_COOKIE ] ) ) { + if ( headers_sent() ) { + $user = new WP_Error( 'test_cookie', sprintf( __( 'ERROR: Cookies are blocked due to unexpected output. For help, please see this documentation or try the support forums.' ), + __( 'https://codex.wordpress.org/Cookies' ), __( 'https://wordpress.org/support/' ) ) ); + } elseif ( isset( $_POST['testcookie'] ) && empty( $_COOKIE[ TEST_COOKIE ] ) ) { + // If cookies are disabled we can't log in even with a valid user+pass + $user = new WP_Error( 'test_cookie', sprintf( __( 'ERROR: Cookies are blocked or not supported by your browser. You must enable cookies to use WordPress.' ), + __( 'https://codex.wordpress.org/Cookies' ) ) ); + } + } + + $requested_redirect_to = isset( $_REQUEST['redirect_to'] ) ? $_REQUEST['redirect_to'] : ''; + /** + * Filter the login redirect URL. + * + * @since 3.0.0 + * + * @param string $redirect_to The redirect destination URL. + * @param string $requested_redirect_to The requested redirect destination URL passed as a parameter. + * @param WP_User|WP_Error $user WP_User object if login was successful, WP_Error object otherwise. + */ + $redirect_to = apply_filters( 'login_redirect', $redirect_to, $requested_redirect_to, $user ); + + if ( !is_wp_error($user) && !$reauth ) { + if ( $interim_login ) { + $message = '

      ' . __('You have logged in successfully.') . '

      '; + $interim_login = 'success'; + login_header( '', $message ); ?> + + + + + + +ID) && !is_super_admin( $user->ID ) ) + $redirect_to = user_admin_url(); + elseif ( is_multisite() && !$user->has_cap('read') ) + $redirect_to = get_dashboard_url( $user->ID ); + elseif ( !$user->has_cap('edit_posts') ) + $redirect_to = admin_url('profile.php'); + } + wp_safe_redirect($redirect_to); + exit(); + } + + $errors = $user; + // Clear errors if loggedout is set. + if ( !empty($_GET['loggedout']) || $reauth ) + $errors = new WP_Error(); + + if ( $interim_login ) { + if ( ! $errors->get_error_code() ) + $errors->add('expired', __('Session expired. Please log in again. You will not move away from this page.'), 'message'); + } else { + // Some parts of this script use the main login form to display a message + if ( isset($_GET['loggedout']) && true == $_GET['loggedout'] ) + $errors->add('loggedout', __('You are now logged out.'), 'message'); + elseif ( isset($_GET['registration']) && 'disabled' == $_GET['registration'] ) + $errors->add('registerdisabled', __('User registration is currently not allowed.')); + elseif ( isset($_GET['checkemail']) && 'confirm' == $_GET['checkemail'] ) + $errors->add('confirm', __('Check your e-mail for the confirmation link.'), 'message'); + elseif ( isset($_GET['checkemail']) && 'newpass' == $_GET['checkemail'] ) + $errors->add('newpass', __('Check your e-mail for your new password.'), 'message'); + elseif ( isset($_GET['checkemail']) && 'registered' == $_GET['checkemail'] ) + $errors->add('registered', __('Registration complete. Please check your e-mail.'), 'message'); + elseif ( strpos( $redirect_to, 'about.php?updated' ) ) + $errors->add('updated', __( 'You have successfully updated WordPress! Please log back in to see what’s new.' ), 'message' ); + } + + /** + * Filter the login page errors. + * + * @since 3.6.0 + * + * @param object $errors WP Error object. + * @param string $redirect_to Redirect destination URL. + */ + $errors = apply_filters( 'wp_login_errors', $errors, $redirect_to ); + $user_login = ''; + // Clear any stale cookies. + if ( $reauth ) + wp_clear_auth_cookie(); + + login_header(__('Log In'), '', $errors); + + if ( isset($_POST['log']) ) + $user_login = ( 'incorrect_password' == $errors->get_error_code() || 'empty_password' == $errors->get_error_code() ) ? esc_attr(wp_unslash($_POST['log'])) : ''; + $rememberme = ! empty( $_POST['rememberme'] ); + + if ( ! empty( $errors->errors ) ) { + $aria_describedby_error = ' aria-describedby="login_error"'; + } else { + $aria_describedby_error = ''; + } + ?> + +
      +

      + +

      +

      + +

      + +

      +

      + + + + + + + + + + +

      +
      + + + + + + + + + + + +<?php bloginfo('name'); ?> + + + + +
      +

      + +configs->get_value('aiowps_unlock_request_secret_key'); + $unlock_temp_string = isset($_POST['aiowps-unlock-temp-string'])?strip_tags($_POST['aiowps-unlock-temp-string']):''; + $submitted_encoded_string = base64_encode($unlock_temp_string.$unlock_secret_string); + if($submitted_encoded_string !== $unlock_encoded_info) + { + //Someone somehow landed on this page directly without clicking the unlock button on login form + echo '
      '.__('ERROR: Unable to process your request!','all-in-one-wp-security-and-firewall').'
      '; + die(); + } + else if($display_form) + { + echo display_unlock_form(); + } +} //End if block + +if (isset($_POST['aiowps_wp_submit_unlock_request'])) +{ + //This catches the $_POST when someone submits the form from our special unlock request page where visitor enters email address + $errors = ''; + + $email = trim($_POST['aiowps_unlock_request_email']); + if (empty($email) || !is_email($email)) + { + $errors .= '

      '.__('Please enter a valid email address','all-in-one-wp-security-and-firewall').'

      '; + } + + if($errors){ + $display_form = true; + echo '
      '.$errors.'
      '; + $sanitized_email = sanitize_email($email); + echo display_unlock_form($sanitized_email); + }else{ + $locked_user = get_user_by('email', $email); + if(!$locked_user){ + //user with this email does not exist in the system + $errors .= '

      '.__('User account not found!','all-in-one-wp-security-and-firewall').'

      '; + echo '
      '.$errors.'
      '; + }else{ + //Process unlock request + //Generate a special code and unlock url + $ip = AIOWPSecurity_Utility_IP::get_user_ip_address(); //Get the IP address of user + $ip_range = AIOWPSecurity_Utility_IP::get_sanitized_ip_range($ip); //Get the IP range of the current user + if(empty($ip_range)){ + $unlock_url = false; + }else{ + $unlock_url = AIOWPSecurity_User_Login::generate_unlock_request_link($ip_range); + } + + if (!$unlock_url){ + //No entry found in lockdown table with this IP range + $error_msg = '

      '.__('Error: No locked entry was found in the DB with your IP address range!','all-in-one-wp-security-and-firewall').'

      '; + echo '
      '.$error_msg.'
      '; + }else{ + //Send an email to the user + AIOWPSecurity_User_Login::send_unlock_request_email($email, $unlock_url); + echo '

      ' . __('An email has been sent to you with the unlock instructions.', 'all-in-one-wp-security-and-firewall') . '

      '; + } + } + $display_form = false; + } +} +?> +
      + + + +' . __('You are here because you have been locked out due to too many incorrect login attempts.', 'all-in-one-wp-security-and-firewall') . '

      ' + . '

      ' . __('Please enter your email address and you will receive an email with instructions on how to unlock yourself.', 'all-in-one-wp-security-and-firewall') . '

      ' + ; +?> +
      +
      +

      + +

      +

      + +

      +
      +configs->get_value('aiowps_site_lockout_msg'); +if(empty($aiowps_site_lockout_msg_raw)){ + $aiowps_site_lockout_msg_raw = '

      This site is currently not available. Please try again later.

      '; +} +$maintenance_msg = html_entity_decode($aiowps_site_lockout_msg_raw, ENT_COMPAT, "UTF-8"); +$maintenance_msg = apply_filters('the_content', $maintenance_msg); +?> + + + + + <?php bloginfo('name'); ?> + + + + + + +
      +
      +
      +
      + +
      +
      +
      +
      + + \ No newline at end of file diff --git a/plugins/all-in-one-wp-security-and-firewall/readme.txt b/plugins/all-in-one-wp-security-and-firewall/readme.txt new file mode 100644 index 0000000..367f6f3 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/readme.txt @@ -0,0 +1,712 @@ +=== All In One WP Security & Firewall === +Contributors: Tips and Tricks HQ, wpsolutions, Peter Petreski, Ruhul Amin, mbrsolution, chesio +Donate link: https://www.tipsandtricks-hq.com +Tags: security, secure, Anti Virus, antivirus, ban, ban hacker, virus, firewall, firewall security, login, lockdown, htaccess, hack, malware, vulnerability, protect, protection, phishing, database, backup, plugin, sql injection, ssl, restrict, login captcha, bot, hotlink, 404 detection, admin, rename, all in one, scan, scanner, iframe, +Requires at least: 3.5 +Tested up to: 4.6 +Stable tag: 4.2.3 +License: GPLv3 + +A comprehensive, user-friendly, all in one WordPress security and firewall plugin for your site. + +== Description == += A COMPREHENSIVE, EASY TO USE, STABLE AND WELL SUPPORTED WORDPRESS SECURITY PLUGIN = + +WordPress itself is a very secure platform. However, it helps to add some extra security and firewall to your site by using a security plugin that enforces a lot of good security practices. + +The All In One WordPress Security plugin will take your website security to a whole new level. + +This plugin is designed and written by experts and is easy to use and understand. + +It reduces security risk by checking for vulnerabilities, and by implementing and enforcing the latest recommended WordPress security practices and techniques. + +https://www.youtube.com/watch?v=CJvCTlVtazA + +All In One WP Security also uses an unprecedented security points grading system to measure how well you are protecting your site based on the security features you have activated. + +Our security and firewall rules are categorized into "basic", "intermediate" and "advanced". This way you can apply the firewall rules progressively without breaking your site's functionality. + +The All In One WordPress Security plugin doesn't slow down your site and it is 100% free. + +Visit the [WordPress Security Plugin](https://www.tipsandtricks-hq.com/wordpress-security-and-firewall-plugin) page for more details. + +Below is a list of the security and firewall features offered in this plugin: + += User Accounts Security = +* Detect if there is a user account which has the default "admin" username and easily change the username to a value of your choice. +* The plugin will also detect if you have any WordPress user accounts which have identical login and display names. Having account's where display name is identical to login name is bad security practice because +you are making it 50% easier for hackers because they already know the login name. +* Password strength tool to allow you to create very strong passwords. +* Stop user enumeration. So users/bots cannot discover user info via author permalink. + += User Login Security = +* Protect against "Brute Force Login Attack" with the Login Lockdown feature. Users with a certain IP address or range will be locked out of the system for a predetermined amount of time based on the configuration settings and you can also choose to be notified +via email whenever somebody gets locked out due to too many login attempts. + +* As the administrator you can view a list of all locked out users which are displayed in an easily readable and navigable table which also allows you to unlock individual or bulk IP addresses at the click of a button. +* Force logout of all users after a configurable time period +* Monitor/View failed login attempts which show the user's IP address, User ID/Username and Date/Time of the failed login attempt + +* Monitor/View the account activity of all user accounts on your system by keeping track of the username, IP address, login date/time, and logout date/time. +* Ability to automatically lockout IP address ranges which attempt to login with an invalid username. +* Ability to see a list of all the users who are currently logged into your site. +* Allows you to specify one or more IP addresses in a special whitelist. The whitelisted IP addresses will have access to your WP login page. +* Add captcha to WordPress Login form. +* Add captcha to the forgot password form of your WP Login system. + += User Registration Security = +* Enable manual approval of WordPress user accounts. If your site allows people to create their own accounts via the WordPress registration form, then you can minimize SPAM or bogus registrations by manually approving each registration. +* Ability to add captcha to the WordPress user registration page to protect you from spam user registration. + += Database Security = +* Easily the default WP prefix to a value of your choice with the click of a button. +* Schedule automatic backups and email notifications or make an instant DB backup whenever you want with one click. + += File System Security = +* Identify files or folders which have permission settings which are not secure and set the permissions to the recommend secure values with click of a button. +* Protect your PHP code by disabling file editing from the WordPress administration area. +* Easily view and monitor all host system logs from a single menu page and stay informed of any issues or problems occurring on your server so you can address them quickly. +* Prevent people from accessing the readme.html, license.txt and wp-config-sample.php files of your WordPress site. + += htaccess and wp-config.php File Backup and Restore = +* Easily backup your original .htaccess and wp-config.php files in case you will need to use them to restore broken functionality. +* Modify the contents of the currently active .htaccess or wp-config.php files from the admin dashboard with only a few clicks + += Blacklist Functionality = +* Ban users by specifying IP addresses or use a wild card to specify IP ranges. +* Ban users by specifying user agents. + += Firewall Functionality = + +This plugin allows you to easily add a lot of firewall protection to your site via htaccess file. An htaccess file is processed by your web server before any other code on your site. +So these firewall rules will stop malicious script(s) before it gets a chance to reach the WordPress code on your site. + +* Access control facility. +* Instantly activate a selection of firewall settings ranging from basic, intermediate and advanced. +* Enable the famous "5G Blacklist" Firewall rules courtesy of [Perishable Press](http://perishablepress.com/) +* Forbid proxy comment posting. +* Block access to debug log file. +* Disable trace and track. +* Deny bad or malicious query strings. +* Protect against Cross Site Scripting (XSS) by activating the comprehensive advanced character string filter. +or malicious bots who do not have a special cookie in their browser. You (the site admin) will know how to set this special cookie and be able to log into your site. +* WordPress PingBack Vulnerability Protection feature. This firewall feature allows the user to prohibit access to the xmlrpc.php file in order to protect against certain vulnerabilities in the pingback functionality. This is also helpful to block bots from constantly accessing the xmlrpc.php file and wasting your server resource. +* Ability to block fake Googlebots from crawling your site. +* Ability to prevent image hotlinking. Use this to prevent others from hotlinking your images. +* Ability to log all 404 events on your site. You can also choose to automatically block IP addresses that are hitting too many 404s. +* Ability to add custom rules to block access to various resources of your site. + += Brute force login attack prevention = +* Instantly block Brute Force Login Attacks via our special Cookie-Based Brute Force Login Prevention feature. This firewall functionality will block all login attempts from people and bots. +* Ability to add a simple math captcha to the WordPress login form to fight against brute force login attacks. +* Ability to hide admin login page. Rename your WordPress login page URL so that bots and hackers cannot access your real WordPress login URL. This feature allows you to change the default login page (wp-login.php) to something you configure. +* Ability to use Login Honeypot which will helps reduce brute force login attempts by robots. + += WhoIs Lookup = +* Perform a WhoIs lookup of a suspicious host or IP address and get full details. + += Security Scanner = +* The file change detection scanner can alert you if any files have changed in your WordPress system. You can then investigate and see if that was a legitimate change or some bad code was injected. +* Database scanner feature can be used to scan your database tables. It will look for any common suspicious-looking strings, javascript and html code in some of the WordPress core tables. + += Comment SPAM Security = +* Monitor the most active IP addresses which persistently produce the most SPAM comments and instantly block them with the click of a button. +* Prevent comments from being submitted if it doesn't originate from your domain (this should reduce some SPAM bot comment posting on your site). +* Add a captcha to your wordpress comment form to add security against comment spam. +* Automatically and permanently block IP addresses which have exceeded a certain number of comments labeled as SPAM. + += Front-end Text Copy Protection = +* Ability to disable the right click, text selection and copy option for your front-end. + += Regular updates and additions of new security features = +* WordPress Security is something that evolves over time. We will be updating the All In One WP Security plugin with new security features (and fixes if required) on a regular basis so you can rest assured that your site will be on the cutting edge of security protection techniques. + += Works with Most Popular WordPress Plugins = +* It should work smoothly with most popular WordPress plugins. + += Additional Features = +* Ability to remove the WordPress Generator Meta information from the HTML source of your site. +* Ability to remove the WordPress Version information from the JS and CSS file includes of your site. +* Ability to prevent people from accessing the readme.html, license.txt and wp-config-sample.php files +* Ability to temporarily lock down the front end of your site from general visitors while you do various backend tasks (investigate security attacks, perform site upgrades, do maintenance work etc.) +* Ability to export/import the security settings. +* Prevent other sites from displaying your content via a frame or iframe. + += Plugin Support = +* If you have a question or problem with the All In One Security plugin, post it on the support forum and we will help you. + += Developers = +* If you are a developer and you need some extra hooks or filters for this plugin then let us know. +* Github repository - https://github.com/Arsenal21/all-in-one-wordpress-security + += Translations = +* All In One WP Security plugin can be translated to any language. + +Currently available translations: + +- English +- German +- Spanish +- French +- Hungarian +- Italian +- Swedish +- Russian +- Chinese +- Portuguese (Brazil) +- Persian + +Visit the [WordPress Security Plugin](https://www.tipsandtricks-hq.com/wordpress-security-and-firewall-plugin) page for more details. + +== Installation == + +To begin making your WordPress site more secure: + +1. Upload the 'all-in-one-wp-security.zip' file from the Plugins->Add New page in the WordPress administration panel. +2. Activate the plugin through the 'Plugins' menu in WordPress +3. Go to Settings menu under 'WP Security' and start activating the security features of the plugin. + +== Usage == + +Go to the settings menu after you activate the plugin and follow the instructions. + +== Screenshots == +Check the following page for screenshots: +https://www.tipsandtricks-hq.com/wordpress-security-and-firewall-plugin + +== Frequently Asked Questions == +Check the following page for F.A.Q (see the faq section): +https://www.tipsandtricks-hq.com/wordpress-security-and-firewall-plugin + +== Upgrade Notice == +None + +== Changelog == + += 4.2.3 = +- Fixed bug when math captcha was displayed on Woocommerce registration page. +- Fixed login page bug for cases where email address and captcha are used to submit login form (thanks to @chesio for fix). +- Logs directory now contains a .htaccess file with proper deny directives. +- Small UX improvement: add for attribute to captcha label. +- Added check for IIS server in get_server_type function. + += 4.2.2 = +- Debug logger class improvements. +- Added a message in the debug settings area to state that the log files are reset on every plugin update. +- Always return an array from scan_dir_sort_date() to prevent PHP notices. +- Improvements for Automated DB backups filling up space - old backup file will be deleted first. +- Thanks to RIPS Analyzer for sending us the vulnerability report. + += 4.2.1 = +- Improve output of .htaccess to include checks and RewriteEngine On directives. +- Fall back to default DB backup interval in case of invalid value. +- The aiowps_delete_backup_files() function will produce a debug log message on every call (to help with troubleshooting when needed). + += 4.2.0 = +- WPML plugin compatibility fix for the renamed admin login page feature. +- Fixed a few potential XSS vulnerabilities. + += 4.1.9 = +- Small improvement to the new "immediate blocking of specific usernames" feature. + += 4.1.8 = +- New feature to allow immediate blocking of specific usernames. +- Only activate copy (right-click) protection for non-admin users. +- Fixed bug where logout link in admin bar does not get updated on after the $_POST submit to reflect the new rename login setting. +- Fixed small bug in return_regularized_url function. +- Improvement/bug fix: When currently logged in user attempts to access renamed login page, redirect them to dashboard. +- Removed Spanish language files so they can be automatically pulled from WordPress.org. +- Drop unnecessary WHERE clause in some backend listings. +- Improvement: do not schedule a cronjob, if it is already scheduled. + += 4.1.7 = +- Added sanitisation for log file data in textarea. +- Disabled autocomplete for Captcha field. + += 4.1.6 = +- Added cleanup code for captcha string info transients. +- Minor change to the username label in the renamed login page to keep it inline with the standard WordPress login page. +- Fixed a potential vulnerability when viewing AIOWPS log files in the Dashboard menu. Thanks to Manuel LLOP for pointing this out. + += 4.1.5 = +- Fixed bug where username is an email and captcha was being ignored. +- Reduce memory footprint of database backup. +- Improvements: Make hard-coded strings localizable. +- Partial Apache 2.3 compatibility. +- Improved: Hide WP version number by replacing it with a hash. This way, WordPress version number is not exposed, but browser caching is not obscured by missing version numbers. + += 4.1.4 = +- Improved and tweaked the login captcha feature to avoid some issues people had with the last modification. +- Deleted reference to ini_get('safe_mode') to avoid fatal errors for newer versions of PHP where that setting has been totally removed. + += 4.1.3 = +- Added new checkbox for XMLRPC to disable only pingback methods but leave other XMLRPC functionality accessible. This will be useful for people who use Jetpack or Wordpress iOS or other apps. +- Updated the French language file. +- Fix: decbin doesn't add leading zero. Comparing empty strings return bad results. +- Fix: bugfix in the login captcha. Thanks to Sipke Mellema for pointing it out. + += 4.1.2 = +- Fixed bug introduced by last file change scanner code changes. +- Fixed bug in SPAM comment blocking functionality. +- Fixed fatal error case when Divi theme and front end lockout is enabled. + += 4.1.1 = +- Fixed Fatal error conflict between Rename Login feature and Yoast SEO and some themes when attempting to access wp-admin page directly. +- Added "Pending Approval" message when manual registration approval feature is enabled and a user registers. +- Fix (minor): No need to use strcmp to compare integer values. +- Updated and simplified wp-security-stop-users-enumeration.php for bug (thanks to @davidegiunchidiennea) +- Minor code cleanup (Thanks to @chesio for the following changes). +- File scanner codebase cleanup. +- Fix: properly report invalid email addresses in file scanner configuration. +- Code clean-up in AIOWPSecurity_Scan::do_file_change_scan() method. +- Tweak: Compare file scan data faster. + += 4.1.0 = +- Fixed bug in Maintenance menu page when trying to attach a media file to the message text box. +- Added a new filter (called "aiowps_ip_blocked_error_msg") which allows the modification of the error message displayed on the login page when an IP address has been blocked by the login lockdown feature. +- Updated French language translation. Thanks to Claude Ribaux for providing the translation files. +- Thanks to @chesio for making the following two changes. +- Replaced deprecated call to get_currentuserinfo() function. +- Minor code fixes in the backup class file. +- Fix: display correct (error) message when write_to_htaccess() fails. +- Tweak: database backup filename is more human-readable. + Before: 24x7eg8l6i-database-backup-1463042767.zip + After: database-backup-20160512-104607-24x7eg8l6i.zip + += 4.0.9 = +- Made file change scanner code more robust for cases when open_basedir restriction is in effect. (Thanks to Manuel Jeanne for pointing this out). +- Added code which will remove WordPress version info during CSS and JS script loading if you have the "Remove WP Generator Meta Info" option checked. (Thanks to aldemarcalazans for pointing this out). +- Fixed some potential SQL injection vulnerabilities. (Thanks to Julio Potier for pointing these out). +- Changed the feature category of blacklist manger from "Intermediate" to "Advanced". +- Tweak: Remove "@" from list of characters blocked by advanced character string filter. (Because it is often used in retina-ready images). +- Fix: Use home URL instead of site URL in lock notification email subject. Thanks to @chesio for fixing this. + += 4.0.8 = +- Added ability to identify IP addresses during user registration and option to block selected IPs. +- Added login form captcha functionality for sub-sites in a multi-site installation. (see the Brute Force menu) +- Fixed multi-site bug related to manual user-chosen DB prefix change. +- Added extra XSS protection inside admin menu pages for the "tab" query parameter. +- Added a note to the features that has the potential to lock you out if it doesn't work correctly on your site. +- Updated Brazil-Portuguese language file. +- Fixed issue with firewall custom rules being corrupted by magic quotes. Thanks to @chesio for fixing this. + += 4.0.7 = +- Added a new action hook "aiopws_before_set_404" which triggers just before the AIOWPS sets a 404. (handy for cases when rename login page is used which affects some themes when accessing "wp-admin" directly) +- Fixed some potential SQL injection vulnerabilities. +- Thanks to @chesio for submitting the following changes and applying the fixes. +- Sub-directory install fixes. +- Improve behavior of WP File Access tab. +- Fix invalid nesting of HTML elements. +- Do not block HTTP requests that contain "tag=" in query string. +- Option to enable the 6G firewall. + += 4.0.6 = +- Removed the viewing of contents of wp-config.php and .htaccess files in order to protect sensitive info. +- Fixed more potential XSS vulnerabilities in some other settings pages. (Once again many thanks to Erin Germ for pointing these out) + += 4.0.5 = +- Fixed some potential XSS vulnerability in the blacklist, file system and file change detection settings pages. (Many thanks to Erin Germ for pointing these out) + += 4.0.4 = +- Added new feature: Auto Block Spammer IPs. This feature will automatically and permanently block IP addresses which are linked to comment SPAM. (see SPAM Prevention -> Comment SPAM IP Monitoring tab) +- Added compatibility fix for the qTranslate-X plugin in the rename login page feature. +- Added ability to send to more than one email address for file change detection feature notification. +- Fixed bug in whois library when searching ARIN registry. +- Fixed the handling of display of longer IPV6 strings in dashboard summary table. +- Added hook for WooCommerce login form to display unlock button. +- Added Dutch language translation. Thanks to Jeroen van der Linde for providing the translation files. +- Typo fix in the "stop users enumeration" feature. + += 4.0.3 = +- Added urlencode to query strings in URLs to prevent unexpected behaviour. Thanks to @chesio for spotting the issue. +- Added new feature to stop users enumeration. Thanks to Davide Giunchi @davidegiunchidiennea for adding this. +- Added a more robust code for check_user_exists function. Thanks to Christian Carey. +- Added cron cleanup of the global meta table. +- Added a title in each of the admin interface menu. + += 4.0.2 = +- Added ability to enable/disable debug from the settings menu. +- Fixed bug related to using IP ranges in the whitelist settings. +- Added IPv6 support for the whitelist feature. +- Added check in file permissions feature for cases where wp-config.php may be located outside of root. +- Added wp cron DB cleanup events for various tables which may grow large over time. +- Changed firewall rule for proxy comment prevention to reflect suggestion made by Thomas O. in forum (https://wordpress.org/support/topic/high-server-cpu-with-proxy-login) +- Fixed CSS styling issue in admin pages for WordPrss 4.4 + += 4.0.1 = +- Renamed the language files to match the new textdomain slug to fix the language translation bug. +- Fixed bug related to the rename login feature and force logout or logout expiry events. +- Applied fix for log being generated by events table DB insert. +- Corrected a function call to static version of display error msg. + += 4.0.0 = +- Updated text domain to match expected value for translate.wordpress.org translation system. +- Fixed bug related to multi-site user_roles not being updated for child sites. +- Fixed minor bug in rename login feature. +- Updated the Italian language file. + += 3.9.9 = +- Fixed an issue with the rename login page feature for WordPress 4.3 +- Added esc_attr() sanitization to some of the relevant parameters +- Added the necessary changes to allow activation via wp-cli + += 3.9.8 = +- Added guard against possible XSS in the unlock request feature. + += 3.9.7 = +- Added new feature which allows custom .htaccess rules. (See "Custom Rules" tab in Firewall menu). You can now use this to add custom rules to block access to various resources on your site. +- Added a new feature to block access to the wp-content/debug.log file (WordPress creates this file if you enabled debug loggin option in the config file). +- Removed the "v" from version number of the plugin. +- Completed testing with WordPress 4.3. + += 3.9.6 = +- Added Rename Login page feature from the "Brute Force" menu to multisite sub-sites. +- Removed invalid "length" attribute from input element in captcha code. +- Fixed reset password feature whereby the URL which is sent out in the email for cases when rename login feature is enabled was not decoded properly. +- Corrected the check for boolean false if returned from wpdb query result. +- Added media button for wp editor in maintenance settings page. + += 3.9.5 = +- Fixed minor bug - IP addresses blocked due to '404' were not being listed in the display table. +- Updated the Russian language translation file. +- The automatic database table prefix generation value will use a-z characters only. +- Added esc_url sanitization to the add_query_arg/remove_query_arg function instances to prevent possible XSS. + += 3.9.4 = +- The sort order and orderby parameters now use a whitelisting approach for sanitization. + += 3.9.3 = +- Fixed the sort order not working in the 404 error logging and account activity page. + += 3.9.2 = +- Added a check for registration captcha feature to prevent errors when using another captcha plugin. +- Improved a few SQL statements. + += 3.9.1 = +- Added new "Force Logout" feature which will instantly force a certain user to be logged out of their session. (See the "Logged In Users" tab in User Login menu) +- Added more security protection for aiowps log files by creating .htaccess file and rules. AIOWPS log files can now only be viewed via dashboard menu, in new tab called "AIOWPS Logs". (NOTE:This security currently applies only for apache or similar servers) +- Added backticks to SQL statement for DB prefix change to help prevent errors. +- Added protection against possible SQL injection attacks. + += 3.9.0 = +- Added some robustness to the file-scan code. +- Added extra security to all relevant list table instances to prevent unlikely malicious deletion commands. +- Fixed the user agent part of the blacklist settings code to allow user-agents to be cleared upon saving. + += 3.8.9 = +- Fixed bug in the new feature which allows permanent blocking of IP addresses that create 404 events. +- Fixed minor bug for all instances where wpdb "prepare" was being used with order/orderby parameters. +- Fixed a possible open redirect vulnerability. Thanks to Sucuri for pointing it out. + += 3.8.8 = +- Added extra robustness and security for wp list table db commands by using wpdb "prepare" command. +- Fixed minor bug with undeclared variable in rename login feature page. + += 3.8.7 = +- Added an improvement for login lockdown feature - locked IP addresses will no longer be allowed to register. +- Added a "view" link for each account in the pending registration approval table list. +- Fixed 404 logging/lockout bug. +- Added ability to permanently block IP addresses from the 404 event list for both bulk and single cases. +- Added ability to do bulk temp blocking for IP addresses in 404 list. +- Fixed a minor bug with validate_ip_list function. + += 3.8.6 = +- DB cleanup cron event bug fixed. +- Added Swedish language translation. The translation was submitted by Tor-Björn Fjellner. +- Updated the Russian language translation file. Update submitted by Tor-Björn Fjellner. +- The events table will automatically be cleaned up so it only keeps the last 5000 entries. You can override it using a filter (if you wanted to). + += 3.8.5 = +- Added functionality to prevent the aiowps_events table from getting too large. +- Added file change scan summary inside the alert email. +- Fixed the unlock feature so that it works correctly when the Rename Login Page feature is active. +- Added a check in the list logged in users file to prevent error when get_transient returns false. + += 3.8.4 = +- Updated POT language file. +- Tweaked the function which retrieves the IP address to handle cases where traffic is coming from cloudflare +- The MySQL database will not be forced anymore at the time of creating the table. It also reads the characters set value from the system first. +- Applied fixes to prevent remotely exploitable vulnerabilities. + += 3.8.3 = +- Modified "Pingback Protection" .htaccess rules to prevent xmlrpc login attacks and to be compatible with more servers. +- Made improvements to ensure that the rename login and white list features can be used together. +- Added a check to force user to enter alphanumeric string for renamed login slug. +- Improved the turn_off_all_firewall_rules() and turn_off_all_security_features() functions so that they also handle the updating of the htaccess file. +- Added an alternative way to import settings via a text box (Thanks to Dave McHale). This is for people who might have issues using the config settings file uploader. +- Added fix to properly update options tables when changing DB prefix in multisite system. +- Greatly improved the Renamed Login Page feature by removing various potential vulnerabilities. +- Added an if statement check to fix bug with rename login page feature - special case where user had non permalink structure was not working correctly in some rare scenarios. +- Updated the Italian language file. +- Fixed bug regarding wp_mail malformed header when "From" string was empty due to "site title" not being set. +- Fixed bug in IP list validation function for blacklist feature. +- Removed strict filtering of IP addresses so as to allow internal IP address ranges. +- Added stripping of orderby and order query parameters in the plugin. +- Added search capability by IP address, URL or referer for the 404 events list table. + += 3.8.2 = +- Fixed a CSS issue with the honeypot feature. +- Fixed a call to the login action handler static function. + += 3.8.1 = +- Minor bug fix for the honeypot feature - loading of css style sheet was not occurring when main login page rendered. + += 3.8.0 = +- Improved deactivation and re-activation tasks - AIOWPS will now gracefully clean up the .htaccess rules when the plugin is deactivated. +- Tweaked code so that all login pages including custom ones will correctly load the CSS style sheet file needed for honeypot feature. +- Updated the Portugese language translation. +- Fixed the copy protection feature so it doesn't interfere with iframes and shortcodes. +- The plugin will now work fine even if your wp-config.php file is outside the wordpress root folder. + += 3.7.9.2 = +- copy protection feature JS code improvement + += 3.7.9.1 = +- Added captcha functionality for custom login form which is produced by the WP function: wp_login_form() +- Fixed a minor bug with the copy protection feature's JavaScript code. +- Tweaked file change scan algorithm to help prevent getMTime fatal runtime errors. +- Added a link to the github repository in the readme.txt file for developers. + += 3.7.9 = +- Fixed a small bug related to the cookie test in the Cookie Based Brute Force feature. + += 3.7.8 = +- Added new feature called Login Honeypot which will help reduce brute force login attempts by robots. (This can be found in the Brute Force menu) +- Added new feature to prevent other sites from displaying your content via a frame or iframe. (This can be found in the Miscellaneous menu) +- Added captcha feature for BuddyPress registration form. +- Added a new filter for the site lockout message so it can be customized. +- Added a new filter for template include of the site lockout feature. +- Temporarily deactivated the "DB Scan" feature. + += 3.7.7 = +- Improved DB prefix change code to make it more robust. +- Fixed a minor bug for the Rename Login page feature. +- Added check when processing rename login page to see if maintenance (lockout) mode enabled. Plugin will now display lockout message instead of 404 page if site lockout enabled. +- Made the Cookie Based Brute Force Prevention feature more secure by introducing a 10 digit random suffix to the test cookie name. + += 3.7.6 = +- Added ability to insert captcha in WordPress Multi Site registration form. +- Added a condition around the management permission constant. This will allow users to define a custom capability for this plugin's admin side via the wp-config file. This was submitted by Samuel Aguilera. +- Fixed a bug with the hidden login page feature. +- Fixed a small settings bug with the "block fake google bot" feature. + += 3.7.5 = +- Added a new DB scan feature. Go to the "Scanner" menu to use this new feature. +- Added new settings import/export feature. +- Modified user accounts feature to alert administrator if one or both "admin" or "Admin" usernames are being used. +- Added Persian language translation. The translation was submitted by Amir Mousavi Pour (me@ameer.ir). +- Small change to get_mysql_tables function to prevent fatal error when mysqli query is unsuccessful. +- Added Italian language translation. The translation was submitted by Marco Guglielmetti. + += 3.7.4 = +- Added a new feature to add copy protection for your front-end. You can find this feature under the "Miscellaneous" menu. +- Fixed comment captcha bug for multi-site. Now this feature can be activated/deactivated for subsites of a multisite installation. +- Added Hungarian language translation. The translation was submitted by Daniel Kocsis. +- Moved the custom login page feature's handling code to wp-loaded hook so other plugins that modify the login page can do their task before our one is triggered. This change was suggested by Mark Hudnall. +- Added German language translation. The translation was submitted by Manuel Fritsch. +- Updated the Brazilian language translation file. + + += 3.7.3 = +- Added Brazilian language translation. The translation was submitted by Sergio Siqueira. +- Added two new action hooks for plugin activation and deactivation time. +- Improved the get_user_ip_address() function so it handles cases when multiple addresses are returned due to proxy. +- Fixed the mis-alignment of login page which was broken by WP3.9 when rename login feature is used. +- WordPress 3.9 compatibility + += 3.7.2 = +- Added a PHP Info section in the system info interface to show some important PHP details of the server. +- Added a filter to allow the user to have a custom translation in a place (which will be loaded instead of the default one from the plugin). This change was submitted by Samuel Aguilera. +- Replaced myslqi fetch_all method with fetch_assoc to cover cases where some servers do not have the correct mysql drivers. +- Added a new filter to allow manipulation of the htaccess rules from your custom code. The name of the filter is 'aiowps_htaccess_rules_before_writing'. +- Added a "Delete All 404 Event Logs" button to purge all 404 logs from DB +- Added code to automatically send an email to the registrant when an account has been manually "Approved" from the User Registration menu. + += 3.7.1 = +- Fixed a minor bug: dashboard link was pointing to the wrong tab for the "Logged In Users" tab. +- Fix a bug with the login page captcha. The captcha wansn't shown if the rename login page feature was enabled at the same time. + += 3.7 = +- Added new feature - 404 detection. This allows you to log 404 events and block selected IPs. This feature can be found in the Firewall menu. +- Added new dashboard info box to display number of blocked IP addresses in the lockout table. +- Fixed bug where user could not access login page when maintenance mode and rename login page features were both active. +- Tweaked the hotlinking .htaccess directives to cover both http and https. +- Fixed code to prevent mysql errors due to some variables not having default value in failed login and lockdown tables +- Replaced deprecated PHP function mysql_query with mysqli. +- Added language file for Spanish language. The Spanish translation was done by Samuel Montoya. +- Added code to hide the "DB Prefix" menu for the non-main sites in multi-site installation + += 3.6 = +- Added a new feature to prevent image hot-linking. (See the "Prevent Hotlinks" tab in the firewall menu) +- Added a check in the Rename Login Page feature to prevent people from setting the slug to "wp-admin" +- Fixed a small bug with Login Lockdown feature. + += 3.5.1 = +- Fixed a bug where the cookie-based brute force directives were not being deleted from the .htaccess file when the Rename Login Page feature was being activated. + += 3.5 = +- Added new feature which will Block Fake Googlebots from crawling your site. Check the Firewall menu for this new feature. +- Added code to prevent users from having both the Rename Login Page and Cookie-Based Brute Force features active at the same time. +- Added some useful info boxes in the dashboard: 1) to inform the user if the cookie based brute force or rename login page features are active, 2) last 5 logins to your site. +- Fixed minor bug with .htaccess backup feature. +- Updated the from email address value used for sending backups and file change notification. Thanks to @TheAssurer for the tip. +- Updated the warning message for the disable index view feature. + + += 3.4 = +- Consolidated "Brute Force" features by moving all such features to the "Brute Force" menu. +- Improved the file change detection scan feature: Introduced a button allowing admin to view the file change results from the last scan and fixed small bug whereby the change detected flag was not being cleared for applicable cases. +- Fixed a small bug with "rename login page" (hide admin login) feature. +- Made wp-config.php and .htaccess file backups more secure. Thanks to @TheAssurer for the tip. +- Made the login code more robust by catering for cases where the "wp_login" action was not passing 2 parameters. + += 3.3 = +- Added a brand new brute force prevention feature - Rename Login Page. This feature can be found in the new menu item called "Brute Force". +- Modified the new unlock request feature so that the locked out user will only have to enter email address when they submit an unlock request. +- Replaced the deprecated PHP function "mysql_list_tables" with alternative code. +- Added warning message regarding WordPress iOS app when pingback protection feature in the firewall settings is active. +- Added Malware scan tab and information. +- Some minor html form and CSS corrections. + += 3.2 = +- Added new feature which allows users to generate an automated unlock request link via email when they get locked out because of the login lockdown feature. +- Added a check to ensure that user cannot enter 0 minutes in the Force Logout feature. +- Fixed translations so that various previously omitted strings can now be translated. +- Added a new filter before locking down a user's IP address - aiowps_before_lockdown. +- Generated a new translation (POT) file. + += 3.1 = +- Added a new feature that will allow you to add a captcha to the lost password form (useful if you are allowing user registration on your site). +- Added ability to specify a system log file in the "Host System Logs" tab of the "File System Security" menu +- Fixed a tab link bug. One link was going to the wrong menu tab. +- Updated the POT file of the plugin. + += 3.0 = +- Added a new feature which allows you to add captcha to the Wordpress user registration page. +- Added some more helpful comments and link to video tutorial in the brute force and white list features settings pages. + += 2.9 = +- Added new feature which automatically sets the status of newly registered wordpress user accounts to "pending" and allows manual approval by an administrator. +- Improved robustness of file change detection iteration code. +- WordPress 3.7 compatibility + += 2.8.1 = +- Improved the login captcha implementation +- Changed the management permission to manage_options + += 2.8 = +- Added a feature to insert a simple math captcha to the WordPress comment form (to reduce comment spam). Check the spam prevention menu for this new feature. +- Fixed a minor bug with bulk unlock/delete in user login menu +- Fixed a minor bug with math captcha logic. + += 2.7 = +- Added a simple math captcha functionality for the WP login page. This is another easy yet effective way to combat Brute Force Login Attacks. You can enable this new feature from the user login security menu. + += 2.6 = +- Added a new Login Whitelist feature. This feature enables you to specify one or more IP addresses in a special whitelist which will have access to your WP login page. +All other IP addresses trying to access your WP login page which are not in the whitelist will be automatically blocked. +- The IP address will also be included in the email that gets sent to the admin for the ip address lockout notification. +- Language file loading fix for Chinese language. +- Tweaked the code which creates a .htaccess file in the backup directory to ensure it gets run even if the directory already existed. +- Made DB backups more secure. +- Added more useful debug logs for .htaccess file manipulation failure scenarios. + += 2.5 = +- Added a new feature which will list the currently logged in users who have been active within the last 15 minutes. +- Added a new feature in settings menu which will disable all firewall rules and clear all applicable directives in the .htaccess file. +- Improved the way the wp-config.php file is handled when it contains an ending PHP tag "?>" (older sites that were using PHP4 earlier). + += 2.4 = +- Added new feature/checkbox which will instantly lockout IP address ranges which attempt to login with an invalid username. +- Fixed a bug in the Comment SPAM IP Monitoring page where trying to block one or more IPs was failing. +- Removed the word "config" from the list of bad query strings check (to add compatibility with a few more plugins) +- Added a notice in the dashboard menu to show you if there are any recent file changes that the plugin detected. +- Fixed bug with php File Editing feature. Code now also handles older style wp-config.php files which have the php end tag "?>" +- Fixed bug with "Disable All Security Features" button functionality. When clicked, this will now also make the appropriate changes to the .htacces and wp-config.php files if necessary. +- Changed the storage of backup files from the plugin's directory to the uploads directory. Also added a .htaccess file for security. +- Fixed the way user-agent strings were written to the .htacess file from the Blacklist feature. The code now will correctly identify and represent spaces and escaped chars. +- Fixed a bug related to sending backup to correct email address. + += 2.3 = +- Added new menu called Scanner with a new feature called File Change Detection. This feature will alert you if any files have changed, added or removed from your system. +- Fixed "Deny Bad Query Strings" rules to not break the ability to drag components in the WordPress "Appearance->Menus" page +- Fixed an activation time warning (on sites with WP_DEBUG option enabled) +- Re-implemented the wp-config.php file content backup feature. It now directly downloads the contents of the file to your computer. +- Multi-site enhancements: Suppressed access to configuration settings for features which are not allowed to be configured from subsites of multi-site installations. +- Fixed a bug with login lockdown feature. + += 2.2 = +- Added a new feature which will block some spambots from submitting comments. +- Moved Comment SPAM IP monitoring interface to the new "SPAM Prevention" menu. +- Fixed a bug with login lockdown feature for both multi and single site. +- Improved firewall feature for multi-site by making the "Firewall" menu available only for the main site and not the sub-sites. +- Added random prefix to backup file names. +- Fixed a bug for WP multi-site install where DB tables do not get created when new blog are created in the network. + += 2.1.1 = +- Fixed a version tagging issue. + += 2.1 = +- Fixed an issue with install time error on some sites for WordPress 3.6 +- Fixed some WP Debug related errors for WordPress 3.6 +- Replaced the deprecated $wpdb->escape() function calls with esc_sql() calls + += 2.0 = +- Fixed a bug for general DB backup functionality. +- Fixed multi-site DB backup - the plugin will now backup only the tables relevant for the sub-site in question. +- Added blank index.html files in various folders inside the plugin. +- Disabled the wp-config.php file backup feature until we find a more secure method of doing the backup. + += 1.9 = +- Added new WordPress PingBack Vulnerability Protection feature. This allows the user to prohibit access to the xmlrpc.php file in order to protect against certain vulnerabilities in the pingback functionality. +- Added a configuration item in the brute force login prevention feature to allow ajax functionality to work properly when this feature is enabled. +- Added a POT file for language translations. +- Made the DB Prefix feature more robust by adding a check to ensure that plugin can write to the wp-config.php file. This will prevent user from losing access to their site in cases where the system changed the prefix but not the entry in the wp-config.php file. +- Tightened the data validation for the cookie based brute force login feature to ensure that the user must enter a secret word which consists of alphanumeric characters. +- Added edit links to the user account list in the "User Acounts" menu. + += 1.8 = +- Moved the front end site lockout feature to a new menu called "Maintenance". +- Added a feature in the front-end lockout feature to allow people to specify their own message which will be displayed on the front-end to visitors who try to access the site when it is in lock out state. +- Fixed a bug in the front-end lockout feature by adding some checks which ensure that the admin will not get locked if the feature is still active and their login session expires or they log out. +- Added a widget in the dashboard menu to show the status of the "maintenance mode" feature. + += 1.7 = +- Added a new feature which is a password strength tool which calculates how easy it is for your chosen password to be cracked using a desktop PC and the appropriate SW. This tool should help you create strong passwords. +- Added a front-end general visitor lockout feature. This feature allows you to temporarily lock down the front end of your site while you do security investigation, site upgrades, tweaks etc. + += 1.6 = +- Added a new option in the cookie-based Brute Force Login Attack prevention feature to allow users to use this feature together with the WordPress's post/page password protection feature. +- Fixed a bug in the 5G firewall rules to so that the printed rules include the correct number of '\' characters. +- Fixed a minor bug in the "restore from backed up htaccess file" feature. +- Enhanced the "Save current wp-config.php file" feature so it will continue to work with all of the firewall rules active on the site. +- Added extra checks to account for some error scenarios caused on some servers when recursive file search is done. + += 1.5 = +- Added new feature - Cookie-based Brute Force Login Attack Prevention. Check under the "Firewall" menu for this new feature. + This feature will stop hackers in their tracks when they try to access your wp-admin or login pages. This feature will secure your WordPress backend by enforcing the requirement that anybody trying to access these pages will require a special cookie. + +- Fixed bug related to setting of default configuration for first-time plugin activation. + += 1.4 = +- Tweaked the "Deny Bad Query Strings" firewall rules so that plugin deletion and update operations from the WordPress plugins menu are not affected. +- Fixed a minor bug related to scheduled database backups. +- Added some extra default settings to be applied to the plugin's configuration pages upon activation for the first time. +- Plugin will now display a recommendation message if user sets scheduled backup frequency to less than 24 hours. + += 1.3 = +- Added a new feature to remove the WordPress Generator Meta information from the HTML source of your site. +- Tweaked the "Advanced Character String Filter" to fix issue which was affecting plugins such as "Admin Management Xtended" and also pages with keywords such as "password" in the URL. +- Updated one rule in the "Advanced Character String Filter" feature to make it compatible with W3 Total Cache Plugin's minify feature. +- Added a "Delete All Failed Login Records" option in the "Failed Login Records" tab. This will delete all entries in the failed logins table and will make it less tedious for users who get a lot of brute force attacks on their site. + += 1.2 = +- Moved the rules which disable index views from the "basic firewall" rules to the "additional rules" section. This will prevent any site breakage for +those who want to enable the basic firewall but do not have "AllowOverride" option enabled in their httpd.conf + += 1.1 = +- Added the following new feature: +- Prevent people from accessing the readme.html, license.txt and wp-config-sample.php files. + += 1.0 = +- First commit to the WP repository. diff --git a/plugins/all-in-one-wp-security-and-firewall/wp-security-core.php b/plugins/all-in-one-wp-security-and-firewall/wp-security-core.php new file mode 100644 index 0000000..38596c2 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/wp-security-core.php @@ -0,0 +1,274 @@ +load_configs(); + $this->define_constants(); + $this->includes(); + $this->loader_operations(); + + add_action('init', array(&$this, 'wp_security_plugin_init'), 0); + add_action('wp_loaded',array(&$this, 'aiowps_wp_loaded_handler')); + do_action('aiowpsecurity_loaded'); + } + + function plugin_url() + { + if ($this->plugin_url) return $this->plugin_url; + return $this->plugin_url = plugins_url( basename( plugin_dir_path(__FILE__) ), basename( __FILE__ ) ); + } + + function plugin_path() + { + if ($this->plugin_path) return $this->plugin_path; + return $this->plugin_path = untrailingslashit( plugin_dir_path( __FILE__ ) ); + } + + function load_configs() + { + include_once('classes/wp-security-config.php'); + $this->configs = AIOWPSecurity_Config::get_instance(); + } + + function define_constants() + { + define('AIO_WP_SECURITY_VERSION', $this->version); + define('AIO_WP_SECURITY_DB_VERSION', $this->db_version); + define('AIOWPSEC_WP_HOME_URL', home_url()); + define('AIOWPSEC_WP_SITE_URL', site_url()); + define('AIOWPSEC_WP_URL', AIOWPSEC_WP_SITE_URL); // for backwards compatibility + define('AIO_WP_SECURITY_URL', $this->plugin_url()); + define('AIO_WP_SECURITY_PATH', $this->plugin_path()); + define('AIO_WP_SECURITY_BACKUPS_DIR_NAME', 'aiowps_backups'); + define('AIO_WP_SECURITY_BACKUPS_PATH', AIO_WP_SECURITY_PATH.'/backups'); + define('AIO_WP_SECURITY_LIB_PATH', AIO_WP_SECURITY_PATH.'/lib'); + if (!defined('AIOWPSEC_MANAGEMENT_PERMISSION')){//This will allow the user to define custom capability for this constant in wp-config file + define('AIOWPSEC_MANAGEMENT_PERMISSION', 'manage_options'); + } + define('AIOWPSEC_MENU_SLUG_PREFIX', 'aiowpsec'); + define('AIOWPSEC_MAIN_MENU_SLUG', 'aiowpsec'); + define('AIOWPSEC_SETTINGS_MENU_SLUG', 'aiowpsec_settings'); + define('AIOWPSEC_USER_ACCOUNTS_MENU_SLUG', 'aiowpsec_useracc'); + define('AIOWPSEC_USER_LOGIN_MENU_SLUG', 'aiowpsec_userlogin'); + define('AIOWPSEC_USER_REGISTRATION_MENU_SLUG', 'aiowpsec_user_registration'); + define('AIOWPSEC_DB_SEC_MENU_SLUG', 'aiowpsec_database'); + define('AIOWPSEC_FILESYSTEM_MENU_SLUG', 'aiowpsec_filesystem'); + define('AIOWPSEC_WHOIS_MENU_SLUG', 'aiowpsec_whois'); + define('AIOWPSEC_BLACKLIST_MENU_SLUG', 'aiowpsec_blacklist'); + define('AIOWPSEC_FIREWALL_MENU_SLUG', 'aiowpsec_firewall'); + define('AIOWPSEC_MAINTENANCE_MENU_SLUG', 'aiowpsec_maintenance'); + define('AIOWPSEC_SPAM_MENU_SLUG', 'aiowpsec_spam'); + define('AIOWPSEC_FILESCAN_MENU_SLUG', 'aiowpsec_filescan'); + define('AIOWPSEC_BRUTE_FORCE_MENU_SLUG', 'aiowpsec_brute_force'); + define('AIOWPSEC_MISC_MENU_SLUG', 'aiowpsec_misc'); + + global $wpdb; + define('AIOWPSEC_TBL_LOGIN_LOCKDOWN', $wpdb->prefix . 'aiowps_login_lockdown'); + define('AIOWPSEC_TBL_FAILED_LOGINS', $wpdb->prefix . 'aiowps_failed_logins'); + define('AIOWPSEC_TBL_USER_LOGIN_ACTIVITY', $wpdb->prefix . 'aiowps_login_activity'); + define('AIOWPSEC_TBL_GLOBAL_META_DATA', $wpdb->prefix . 'aiowps_global_meta'); + define('AIOWPSEC_TBL_EVENTS', $wpdb->prefix . 'aiowps_events'); + define('AIOWPSEC_TBL_PERM_BLOCK', $wpdb->prefix . 'aiowps_permanent_block'); + + } + + function includes() + { + //Load common files for everywhere + include_once('classes/wp-security-debug-logger.php'); + include_once('classes/wp-security-utility.php'); + include_once('classes/wp-security-utility-htaccess.php'); + include_once('classes/wp-security-utility-ip-address.php'); + include_once('classes/wp-security-utility-file.php'); + include_once('classes/wp-security-general-init-tasks.php'); + include_once('classes/wp-security-wp-loaded-tasks.php'); + + include_once('classes/wp-security-user-login.php'); + include_once('classes/wp-security-user-registration.php'); + include_once('classes/wp-security-captcha.php'); + include_once('classes/wp-security-backup.php'); + include_once('classes/wp-security-file-scan.php'); + include_once('classes/wp-security-cronjob-handler.php'); + include_once('classes/grade-system/wp-security-feature-item.php'); + include_once('classes/grade-system/wp-security-feature-item-manager.php'); + include_once('classes/wp-security-wp-footer-content.php'); + include_once('classes/wp-security-blocking.php'); + + if (is_admin()){ //Load admin side only files + include_once('classes/wp-security-configure-settings.php'); + include_once('admin/wp-security-admin-init.php'); + include_once('admin/general/wp-security-list-table.php'); + + } + else{ //Load front end side only files + } + } + + function loader_operations() + { + add_action('plugins_loaded',array(&$this, 'plugins_loaded_handler'));//plugins loaded hook + + $debug_config = $this->configs->get_value('aiowps_enable_debug'); + $debug_enabled = empty($debug_config) ? false : true; + $this->debug_logger = new AIOWPSecurity_Logger($debug_enabled); + + if(is_admin()){ + $this->admin_init = new AIOWPSecurity_Admin_Init(); + } + } + + static function activate_handler() + { + //Only runs when the plugin activates + include_once ('classes/wp-security-installer.php'); + AIOWPSecurity_Installer::run_installer(); + + if ( !wp_next_scheduled('aiowps_hourly_cron_event') ) { + wp_schedule_event(time(), 'hourly', 'aiowps_hourly_cron_event'); //schedule an hourly cron event + } + if ( !wp_next_scheduled('aiowps_daily_cron_event') ) { + wp_schedule_event(time(), 'daily', 'aiowps_daily_cron_event'); //schedule an daily cron event + } + + do_action('aiowps_activation_complete'); + } + + static function deactivate_handler() + { + //Only runs with the pluign is deactivated + include_once ('classes/wp-security-deactivation-tasks.php'); + AIOWPSecurity_Deactivation::run_deactivation_tasks(); + wp_clear_scheduled_hook('aiowps_hourly_cron_event'); + wp_clear_scheduled_hook('aiowps_daily_cron_event'); + if (AIOWPSecurity_Utility::is_multisite_install()){ + delete_site_transient('users_online'); + } + else{ + delete_transient('users_online'); + } + + do_action('aiowps_deactivation_complete'); + } + + function db_upgrade_handler() + { + if(is_admin()){//Check if DB needs to be upgraded + if (get_option('aiowpsec_db_version') != AIO_WP_SECURITY_DB_VERSION) { + include_once ('classes/wp-security-installer.php'); + AIOWPSecurity_Installer::run_installer(); + } + } + } + + function plugins_loaded_handler() + { + //Runs when plugins_loaded action gets fired + if(is_admin()){ + //Do plugins_loaded operations for admin side + $this->db_upgrade_handler(); + } + $this->do_additional_plugins_loaded_tasks(); + } + + function wp_security_plugin_init() + { + //Set up localisation. First loaded overrides strings present in later loaded file + $locale = apply_filters( 'plugin_locale', get_locale(), 'all-in-one-wp-security-and-firewall' ); + load_textdomain( 'all-in-one-wp-security-and-firewall', WP_LANG_DIR . "/all-in-one-wp-security-and-firewall-$locale.mo" ); + load_plugin_textdomain('all-in-one-wp-security-and-firewall', false, dirname(plugin_basename(__FILE__ )) . '/languages/'); + + //Actions, filters, shortcodes goes here + $this->user_login_obj = new AIOWPSecurity_User_Login();//Do the user login operation tasks + $this->user_registration_obj = new AIOWPSecurity_User_Registration();//Do the user login operation tasks + $this->captcha_obj = new AIOWPSecurity_Captcha();//Do the captcha tasks + $this->backup_obj = new AIOWPSecurity_Backup();//Object to handle backup tasks + $this->scan_obj = new AIOWPSecurity_Scan();//Object to handle scan tasks + $this->cron_handler = new AIOWPSecurity_Cronjob_Handler(); + + add_action('wp_head',array(&$this, 'aiowps_header_content')); + add_action('wp_footer',array(&$this, 'aiowps_footer_content')); + + add_action('wp_login', array('AIOWPSecurity_User_Login', 'wp_login_action_handler'), 10, 2); + do_action('aiowps_force_logout_check'); + new AIOWPSecurity_General_Init_Tasks(); + } + + function aiowps_wp_loaded_handler() + { + new AIOWPSecurity_WP_Loaded_Tasks(); + } + + function aiowps_header_content() + { + //NOP + } + + function aiowps_footer_content() + { + new AIOWPSecurity_WP_Footer_Content(); + } + + function do_additional_plugins_loaded_tasks() + { + global $aio_wp_security; + if(isset($_GET['aiowpsec_do_log_out'])) + { + wp_logout(); + if(isset($_GET['after_logout']))//Redirect to the after logout url directly + { + $after_logout_url = esc_url($_GET['after_logout']); + AIOWPSecurity_Utility::redirect_to_url($after_logout_url); + } + $additional_data = strip_tags($_GET['al_additional_data']); + if(isset($additional_data)) + { + $login_url = ''; + //Check if rename login feature enabled + if($aio_wp_security->configs->get_value('aiowps_enable_rename_login_page')=='1'){ + if (get_option('permalink_structure')){ + $home_url = trailingslashit(home_url()); + }else{ + $home_url = trailingslashit(home_url()) . '?'; + } + $login_url = $home_url.$aio_wp_security->configs->get_value('aiowps_login_page_slug'); + }else{ + $login_url = wp_login_url(); + } + + //Inspect the payload and do redirect to login page with a msg and redirect url + $logout_payload = (AIOWPSecurity_Utility::is_multisite_install() ? get_site_transient('aiowps_logout_payload') : get_transient('aiowps_logout_payload')); + if(!empty($logout_payload['redirect_to'])){ + $login_url = AIOWPSecurity_Utility::add_query_data_to_url($login_url,'redirect_to',$logout_payload['redirect_to']); + } + if(!empty($logout_payload['msg'])){ + $login_url .= '&'.$logout_payload['msg']; + } + if(!empty($login_url)){ + AIOWPSecurity_Utility::redirect_to_url($login_url); + } + } + } + } + +}//End of class + +}//End of class not exists check + +$GLOBALS['aio_wp_security'] = new AIO_WP_Security(); diff --git a/plugins/all-in-one-wp-security-and-firewall/wp-security.php b/plugins/all-in-one-wp-security-and-firewall/wp-security.php new file mode 100644 index 0000000..aa262a2 --- /dev/null +++ b/plugins/all-in-one-wp-security-and-firewall/wp-security.php @@ -0,0 +1,43 @@ +Settings'; + array_unshift($links, $settings_link); + } + return $links; +} +add_filter('plugin_action_links', 'aiowps_show_plugin_settings_link', 10, 2 ); + +function aiowps_ms_handle_new_blog_creation($blog_id, $user_id, $domain, $path, $site_id, $meta ){ + global $wpdb; + if (is_plugin_active_for_network(__FILE__)) + { + if(!class_exists('AIOWPSecurity_Installer')){ + include_once('classes/wp-security-installer.php'); + } + $old_blog = $wpdb->blogid; + switch_to_blog($blog_id); + AIOWPSecurity_Installer::create_db_tables(); + switch_to_blog($old_blog); + } +} +add_action('wpmu_new_blog', 'aiowps_ms_handle_new_blog_creation', 10, 6); diff --git a/plugins/azurecurve-flags/azurecurve-flags.php b/plugins/azurecurve-flags/azurecurve-flags.php new file mode 100644 index 0000000..06f51cd --- /dev/null +++ b/plugins/azurecurve-flags/azurecurve-flags.php @@ -0,0 +1,47 @@ +"; +} +add_shortcode( 'flag', 'azc_f_flag' ); +add_shortcode( 'FLAGS', 'azc_f_flag' ); + +function azc_f_load_css(){ + wp_enqueue_style( 'azurecurve-flags', plugins_url( 'style.css', __FILE__ ) ); +} +add_action('wp_enqueue_scripts', 'azc_f_load_css'); + +?> \ No newline at end of file diff --git a/plugins/azurecurve-flags/images/ad.png b/plugins/azurecurve-flags/images/ad.png new file mode 100644 index 0000000..625ca84 Binary files /dev/null and b/plugins/azurecurve-flags/images/ad.png differ diff --git a/plugins/azurecurve-flags/images/ae.png b/plugins/azurecurve-flags/images/ae.png new file mode 100644 index 0000000..ef3a1ec Binary files /dev/null and b/plugins/azurecurve-flags/images/ae.png differ diff --git a/plugins/azurecurve-flags/images/af.png b/plugins/azurecurve-flags/images/af.png new file mode 100644 index 0000000..a4742e2 Binary files /dev/null and b/plugins/azurecurve-flags/images/af.png differ diff --git a/plugins/azurecurve-flags/images/ag.png b/plugins/azurecurve-flags/images/ag.png new file mode 100644 index 0000000..556d550 Binary files /dev/null and b/plugins/azurecurve-flags/images/ag.png differ diff --git a/plugins/azurecurve-flags/images/ai.png b/plugins/azurecurve-flags/images/ai.png new file mode 100644 index 0000000..74ed29d Binary files /dev/null and b/plugins/azurecurve-flags/images/ai.png differ diff --git a/plugins/azurecurve-flags/images/al.png b/plugins/azurecurve-flags/images/al.png new file mode 100644 index 0000000..92354cb Binary files /dev/null and b/plugins/azurecurve-flags/images/al.png differ diff --git a/plugins/azurecurve-flags/images/am.png b/plugins/azurecurve-flags/images/am.png new file mode 100644 index 0000000..344a2a8 Binary files /dev/null and b/plugins/azurecurve-flags/images/am.png differ diff --git a/plugins/azurecurve-flags/images/an.png b/plugins/azurecurve-flags/images/an.png new file mode 100644 index 0000000..633e4b8 Binary files /dev/null and b/plugins/azurecurve-flags/images/an.png differ diff --git a/plugins/azurecurve-flags/images/ao.png b/plugins/azurecurve-flags/images/ao.png new file mode 100644 index 0000000..bcbd1d6 Binary files /dev/null and b/plugins/azurecurve-flags/images/ao.png differ diff --git a/plugins/azurecurve-flags/images/ar.png b/plugins/azurecurve-flags/images/ar.png new file mode 100644 index 0000000..e5ef8f1 Binary files /dev/null and b/plugins/azurecurve-flags/images/ar.png differ diff --git a/plugins/azurecurve-flags/images/as.png b/plugins/azurecurve-flags/images/as.png new file mode 100644 index 0000000..32f30e4 Binary files /dev/null and b/plugins/azurecurve-flags/images/as.png differ diff --git a/plugins/azurecurve-flags/images/at.png b/plugins/azurecurve-flags/images/at.png new file mode 100644 index 0000000..0f15f34 Binary files /dev/null and b/plugins/azurecurve-flags/images/at.png differ diff --git a/plugins/azurecurve-flags/images/au.png b/plugins/azurecurve-flags/images/au.png new file mode 100644 index 0000000..a01389a Binary files /dev/null and b/plugins/azurecurve-flags/images/au.png differ diff --git a/plugins/azurecurve-flags/images/aw.png b/plugins/azurecurve-flags/images/aw.png new file mode 100644 index 0000000..a3579c2 Binary files /dev/null and b/plugins/azurecurve-flags/images/aw.png differ diff --git a/plugins/azurecurve-flags/images/ax.png b/plugins/azurecurve-flags/images/ax.png new file mode 100644 index 0000000..1eea80a Binary files /dev/null and b/plugins/azurecurve-flags/images/ax.png differ diff --git a/plugins/azurecurve-flags/images/az.png b/plugins/azurecurve-flags/images/az.png new file mode 100644 index 0000000..4ee9fe5 Binary files /dev/null and b/plugins/azurecurve-flags/images/az.png differ diff --git a/plugins/azurecurve-flags/images/ba.png b/plugins/azurecurve-flags/images/ba.png new file mode 100644 index 0000000..c774992 Binary files /dev/null and b/plugins/azurecurve-flags/images/ba.png differ diff --git a/plugins/azurecurve-flags/images/bb.png b/plugins/azurecurve-flags/images/bb.png new file mode 100644 index 0000000..0df19c7 Binary files /dev/null and b/plugins/azurecurve-flags/images/bb.png differ diff --git a/plugins/azurecurve-flags/images/bd.png b/plugins/azurecurve-flags/images/bd.png new file mode 100644 index 0000000..076a8bf Binary files /dev/null and b/plugins/azurecurve-flags/images/bd.png differ diff --git a/plugins/azurecurve-flags/images/be.png b/plugins/azurecurve-flags/images/be.png new file mode 100644 index 0000000..d86ebc8 Binary files /dev/null and b/plugins/azurecurve-flags/images/be.png differ diff --git a/plugins/azurecurve-flags/images/bf.png b/plugins/azurecurve-flags/images/bf.png new file mode 100644 index 0000000..ab5ce8f Binary files /dev/null and b/plugins/azurecurve-flags/images/bf.png differ diff --git a/plugins/azurecurve-flags/images/bg.png b/plugins/azurecurve-flags/images/bg.png new file mode 100644 index 0000000..0469f06 Binary files /dev/null and b/plugins/azurecurve-flags/images/bg.png differ diff --git a/plugins/azurecurve-flags/images/bh.png b/plugins/azurecurve-flags/images/bh.png new file mode 100644 index 0000000..ea8ce68 Binary files /dev/null and b/plugins/azurecurve-flags/images/bh.png differ diff --git a/plugins/azurecurve-flags/images/bi.png b/plugins/azurecurve-flags/images/bi.png new file mode 100644 index 0000000..5cc2e30 Binary files /dev/null and b/plugins/azurecurve-flags/images/bi.png differ diff --git a/plugins/azurecurve-flags/images/bj.png b/plugins/azurecurve-flags/images/bj.png new file mode 100644 index 0000000..1cc8b45 Binary files /dev/null and b/plugins/azurecurve-flags/images/bj.png differ diff --git a/plugins/azurecurve-flags/images/bm.png b/plugins/azurecurve-flags/images/bm.png new file mode 100644 index 0000000..c0c7aea Binary files /dev/null and b/plugins/azurecurve-flags/images/bm.png differ diff --git a/plugins/azurecurve-flags/images/bn.png b/plugins/azurecurve-flags/images/bn.png new file mode 100644 index 0000000..8fb0984 Binary files /dev/null and b/plugins/azurecurve-flags/images/bn.png differ diff --git a/plugins/azurecurve-flags/images/bo.png b/plugins/azurecurve-flags/images/bo.png new file mode 100644 index 0000000..ce7ba52 Binary files /dev/null and b/plugins/azurecurve-flags/images/bo.png differ diff --git a/plugins/azurecurve-flags/images/br.png b/plugins/azurecurve-flags/images/br.png new file mode 100644 index 0000000..9b1a553 Binary files /dev/null and b/plugins/azurecurve-flags/images/br.png differ diff --git a/plugins/azurecurve-flags/images/bs.png b/plugins/azurecurve-flags/images/bs.png new file mode 100644 index 0000000..639fa6c Binary files /dev/null and b/plugins/azurecurve-flags/images/bs.png differ diff --git a/plugins/azurecurve-flags/images/bt.png b/plugins/azurecurve-flags/images/bt.png new file mode 100644 index 0000000..1d512df Binary files /dev/null and b/plugins/azurecurve-flags/images/bt.png differ diff --git a/plugins/azurecurve-flags/images/bv.png b/plugins/azurecurve-flags/images/bv.png new file mode 100644 index 0000000..160b6b5 Binary files /dev/null and b/plugins/azurecurve-flags/images/bv.png differ diff --git a/plugins/azurecurve-flags/images/bw.png b/plugins/azurecurve-flags/images/bw.png new file mode 100644 index 0000000..fcb1039 Binary files /dev/null and b/plugins/azurecurve-flags/images/bw.png differ diff --git a/plugins/azurecurve-flags/images/by.png b/plugins/azurecurve-flags/images/by.png new file mode 100644 index 0000000..504774e Binary files /dev/null and b/plugins/azurecurve-flags/images/by.png differ diff --git a/plugins/azurecurve-flags/images/bz.png b/plugins/azurecurve-flags/images/bz.png new file mode 100644 index 0000000..be63ee1 Binary files /dev/null and b/plugins/azurecurve-flags/images/bz.png differ diff --git a/plugins/azurecurve-flags/images/ca.png b/plugins/azurecurve-flags/images/ca.png new file mode 100644 index 0000000..1f20419 Binary files /dev/null and b/plugins/azurecurve-flags/images/ca.png differ diff --git a/plugins/azurecurve-flags/images/catalonia.png b/plugins/azurecurve-flags/images/catalonia.png new file mode 100644 index 0000000..5041e30 Binary files /dev/null and b/plugins/azurecurve-flags/images/catalonia.png differ diff --git a/plugins/azurecurve-flags/images/cc.png b/plugins/azurecurve-flags/images/cc.png new file mode 100644 index 0000000..aed3d3b Binary files /dev/null and b/plugins/azurecurve-flags/images/cc.png differ diff --git a/plugins/azurecurve-flags/images/cd.png b/plugins/azurecurve-flags/images/cd.png new file mode 100644 index 0000000..5e48942 Binary files /dev/null and b/plugins/azurecurve-flags/images/cd.png differ diff --git a/plugins/azurecurve-flags/images/cf.png b/plugins/azurecurve-flags/images/cf.png new file mode 100644 index 0000000..da687bd Binary files /dev/null and b/plugins/azurecurve-flags/images/cf.png differ diff --git a/plugins/azurecurve-flags/images/cg.png b/plugins/azurecurve-flags/images/cg.png new file mode 100644 index 0000000..a859792 Binary files /dev/null and b/plugins/azurecurve-flags/images/cg.png differ diff --git a/plugins/azurecurve-flags/images/ch.png b/plugins/azurecurve-flags/images/ch.png new file mode 100644 index 0000000..242ec01 Binary files /dev/null and b/plugins/azurecurve-flags/images/ch.png differ diff --git a/plugins/azurecurve-flags/images/ci.png b/plugins/azurecurve-flags/images/ci.png new file mode 100644 index 0000000..3f2c62e Binary files /dev/null and b/plugins/azurecurve-flags/images/ci.png differ diff --git a/plugins/azurecurve-flags/images/ck.png b/plugins/azurecurve-flags/images/ck.png new file mode 100644 index 0000000..746d3d6 Binary files /dev/null and b/plugins/azurecurve-flags/images/ck.png differ diff --git a/plugins/azurecurve-flags/images/cl.png b/plugins/azurecurve-flags/images/cl.png new file mode 100644 index 0000000..29c6d61 Binary files /dev/null and b/plugins/azurecurve-flags/images/cl.png differ diff --git a/plugins/azurecurve-flags/images/cm.png b/plugins/azurecurve-flags/images/cm.png new file mode 100644 index 0000000..f65c5bd Binary files /dev/null and b/plugins/azurecurve-flags/images/cm.png differ diff --git a/plugins/azurecurve-flags/images/cn.png b/plugins/azurecurve-flags/images/cn.png new file mode 100644 index 0000000..8914414 Binary files /dev/null and b/plugins/azurecurve-flags/images/cn.png differ diff --git a/plugins/azurecurve-flags/images/co.png b/plugins/azurecurve-flags/images/co.png new file mode 100644 index 0000000..a118ff4 Binary files /dev/null and b/plugins/azurecurve-flags/images/co.png differ diff --git a/plugins/azurecurve-flags/images/cr.png b/plugins/azurecurve-flags/images/cr.png new file mode 100644 index 0000000..c7a3731 Binary files /dev/null and b/plugins/azurecurve-flags/images/cr.png differ diff --git a/plugins/azurecurve-flags/images/cs.png b/plugins/azurecurve-flags/images/cs.png new file mode 100644 index 0000000..8254790 Binary files /dev/null and b/plugins/azurecurve-flags/images/cs.png differ diff --git a/plugins/azurecurve-flags/images/cu.png b/plugins/azurecurve-flags/images/cu.png new file mode 100644 index 0000000..083f1d6 Binary files /dev/null and b/plugins/azurecurve-flags/images/cu.png differ diff --git a/plugins/azurecurve-flags/images/cv.png b/plugins/azurecurve-flags/images/cv.png new file mode 100644 index 0000000..a63f7ea Binary files /dev/null and b/plugins/azurecurve-flags/images/cv.png differ diff --git a/plugins/azurecurve-flags/images/cx.png b/plugins/azurecurve-flags/images/cx.png new file mode 100644 index 0000000..48e31ad Binary files /dev/null and b/plugins/azurecurve-flags/images/cx.png differ diff --git a/plugins/azurecurve-flags/images/cy.png b/plugins/azurecurve-flags/images/cy.png new file mode 100644 index 0000000..5b1ad6c Binary files /dev/null and b/plugins/azurecurve-flags/images/cy.png differ diff --git a/plugins/azurecurve-flags/images/cz.png b/plugins/azurecurve-flags/images/cz.png new file mode 100644 index 0000000..c8403dd Binary files /dev/null and b/plugins/azurecurve-flags/images/cz.png differ diff --git a/plugins/azurecurve-flags/images/de.png b/plugins/azurecurve-flags/images/de.png new file mode 100644 index 0000000..ac4a977 Binary files /dev/null and b/plugins/azurecurve-flags/images/de.png differ diff --git a/plugins/azurecurve-flags/images/dj.png b/plugins/azurecurve-flags/images/dj.png new file mode 100644 index 0000000..582af36 Binary files /dev/null and b/plugins/azurecurve-flags/images/dj.png differ diff --git a/plugins/azurecurve-flags/images/dk.png b/plugins/azurecurve-flags/images/dk.png new file mode 100644 index 0000000..e2993d3 Binary files /dev/null and b/plugins/azurecurve-flags/images/dk.png differ diff --git a/plugins/azurecurve-flags/images/dm.png b/plugins/azurecurve-flags/images/dm.png new file mode 100644 index 0000000..5fbffcb Binary files /dev/null and b/plugins/azurecurve-flags/images/dm.png differ diff --git a/plugins/azurecurve-flags/images/do.png b/plugins/azurecurve-flags/images/do.png new file mode 100644 index 0000000..5a04932 Binary files /dev/null and b/plugins/azurecurve-flags/images/do.png differ diff --git a/plugins/azurecurve-flags/images/dz.png b/plugins/azurecurve-flags/images/dz.png new file mode 100644 index 0000000..335c239 Binary files /dev/null and b/plugins/azurecurve-flags/images/dz.png differ diff --git a/plugins/azurecurve-flags/images/ec.png b/plugins/azurecurve-flags/images/ec.png new file mode 100644 index 0000000..0caa0b1 Binary files /dev/null and b/plugins/azurecurve-flags/images/ec.png differ diff --git a/plugins/azurecurve-flags/images/ee.png b/plugins/azurecurve-flags/images/ee.png new file mode 100644 index 0000000..0c82efb Binary files /dev/null and b/plugins/azurecurve-flags/images/ee.png differ diff --git a/plugins/azurecurve-flags/images/eg.png b/plugins/azurecurve-flags/images/eg.png new file mode 100644 index 0000000..8a3f7a1 Binary files /dev/null and b/plugins/azurecurve-flags/images/eg.png differ diff --git a/plugins/azurecurve-flags/images/eh.png b/plugins/azurecurve-flags/images/eh.png new file mode 100644 index 0000000..90a1195 Binary files /dev/null and b/plugins/azurecurve-flags/images/eh.png differ diff --git a/plugins/azurecurve-flags/images/england.png b/plugins/azurecurve-flags/images/england.png new file mode 100644 index 0000000..3a7311d Binary files /dev/null and b/plugins/azurecurve-flags/images/england.png differ diff --git a/plugins/azurecurve-flags/images/er.png b/plugins/azurecurve-flags/images/er.png new file mode 100644 index 0000000..13065ae Binary files /dev/null and b/plugins/azurecurve-flags/images/er.png differ diff --git a/plugins/azurecurve-flags/images/es.png b/plugins/azurecurve-flags/images/es.png new file mode 100644 index 0000000..c2de2d7 Binary files /dev/null and b/plugins/azurecurve-flags/images/es.png differ diff --git a/plugins/azurecurve-flags/images/et.png b/plugins/azurecurve-flags/images/et.png new file mode 100644 index 0000000..2e893fa Binary files /dev/null and b/plugins/azurecurve-flags/images/et.png differ diff --git a/plugins/azurecurve-flags/images/europeanunion.png b/plugins/azurecurve-flags/images/europeanunion.png new file mode 100644 index 0000000..d6d8711 Binary files /dev/null and b/plugins/azurecurve-flags/images/europeanunion.png differ diff --git a/plugins/azurecurve-flags/images/fam.png b/plugins/azurecurve-flags/images/fam.png new file mode 100644 index 0000000..cf50c75 Binary files /dev/null and b/plugins/azurecurve-flags/images/fam.png differ diff --git a/plugins/azurecurve-flags/images/fi.png b/plugins/azurecurve-flags/images/fi.png new file mode 100644 index 0000000..14ec091 Binary files /dev/null and b/plugins/azurecurve-flags/images/fi.png differ diff --git a/plugins/azurecurve-flags/images/fj.png b/plugins/azurecurve-flags/images/fj.png new file mode 100644 index 0000000..cee9988 Binary files /dev/null and b/plugins/azurecurve-flags/images/fj.png differ diff --git a/plugins/azurecurve-flags/images/fk.png b/plugins/azurecurve-flags/images/fk.png new file mode 100644 index 0000000..ceaeb27 Binary files /dev/null and b/plugins/azurecurve-flags/images/fk.png differ diff --git a/plugins/azurecurve-flags/images/fm.png b/plugins/azurecurve-flags/images/fm.png new file mode 100644 index 0000000..066bb24 Binary files /dev/null and b/plugins/azurecurve-flags/images/fm.png differ diff --git a/plugins/azurecurve-flags/images/fo.png b/plugins/azurecurve-flags/images/fo.png new file mode 100644 index 0000000..cbceb80 Binary files /dev/null and b/plugins/azurecurve-flags/images/fo.png differ diff --git a/plugins/azurecurve-flags/images/fr.png b/plugins/azurecurve-flags/images/fr.png new file mode 100644 index 0000000..8332c4e Binary files /dev/null and b/plugins/azurecurve-flags/images/fr.png differ diff --git a/plugins/azurecurve-flags/images/ga.png b/plugins/azurecurve-flags/images/ga.png new file mode 100644 index 0000000..0e0d434 Binary files /dev/null and b/plugins/azurecurve-flags/images/ga.png differ diff --git a/plugins/azurecurve-flags/images/gb.png b/plugins/azurecurve-flags/images/gb.png new file mode 100644 index 0000000..ff701e1 Binary files /dev/null and b/plugins/azurecurve-flags/images/gb.png differ diff --git a/plugins/azurecurve-flags/images/gd.png b/plugins/azurecurve-flags/images/gd.png new file mode 100644 index 0000000..9ab57f5 Binary files /dev/null and b/plugins/azurecurve-flags/images/gd.png differ diff --git a/plugins/azurecurve-flags/images/ge.png b/plugins/azurecurve-flags/images/ge.png new file mode 100644 index 0000000..728d970 Binary files /dev/null and b/plugins/azurecurve-flags/images/ge.png differ diff --git a/plugins/azurecurve-flags/images/gf.png b/plugins/azurecurve-flags/images/gf.png new file mode 100644 index 0000000..8332c4e Binary files /dev/null and b/plugins/azurecurve-flags/images/gf.png differ diff --git a/plugins/azurecurve-flags/images/gh.png b/plugins/azurecurve-flags/images/gh.png new file mode 100644 index 0000000..4e2f896 Binary files /dev/null and b/plugins/azurecurve-flags/images/gh.png differ diff --git a/plugins/azurecurve-flags/images/gi.png b/plugins/azurecurve-flags/images/gi.png new file mode 100644 index 0000000..e76797f Binary files /dev/null and b/plugins/azurecurve-flags/images/gi.png differ diff --git a/plugins/azurecurve-flags/images/gl.png b/plugins/azurecurve-flags/images/gl.png new file mode 100644 index 0000000..ef12a73 Binary files /dev/null and b/plugins/azurecurve-flags/images/gl.png differ diff --git a/plugins/azurecurve-flags/images/gm.png b/plugins/azurecurve-flags/images/gm.png new file mode 100644 index 0000000..0720b66 Binary files /dev/null and b/plugins/azurecurve-flags/images/gm.png differ diff --git a/plugins/azurecurve-flags/images/gn.png b/plugins/azurecurve-flags/images/gn.png new file mode 100644 index 0000000..ea660b0 Binary files /dev/null and b/plugins/azurecurve-flags/images/gn.png differ diff --git a/plugins/azurecurve-flags/images/gp.png b/plugins/azurecurve-flags/images/gp.png new file mode 100644 index 0000000..dbb086d Binary files /dev/null and b/plugins/azurecurve-flags/images/gp.png differ diff --git a/plugins/azurecurve-flags/images/gq.png b/plugins/azurecurve-flags/images/gq.png new file mode 100644 index 0000000..ebe20a2 Binary files /dev/null and b/plugins/azurecurve-flags/images/gq.png differ diff --git a/plugins/azurecurve-flags/images/gr.png b/plugins/azurecurve-flags/images/gr.png new file mode 100644 index 0000000..8651ade Binary files /dev/null and b/plugins/azurecurve-flags/images/gr.png differ diff --git a/plugins/azurecurve-flags/images/gs.png b/plugins/azurecurve-flags/images/gs.png new file mode 100644 index 0000000..7ef0bf5 Binary files /dev/null and b/plugins/azurecurve-flags/images/gs.png differ diff --git a/plugins/azurecurve-flags/images/gt.png b/plugins/azurecurve-flags/images/gt.png new file mode 100644 index 0000000..c43a70d Binary files /dev/null and b/plugins/azurecurve-flags/images/gt.png differ diff --git a/plugins/azurecurve-flags/images/gu.png b/plugins/azurecurve-flags/images/gu.png new file mode 100644 index 0000000..92f37c0 Binary files /dev/null and b/plugins/azurecurve-flags/images/gu.png differ diff --git a/plugins/azurecurve-flags/images/gw.png b/plugins/azurecurve-flags/images/gw.png new file mode 100644 index 0000000..b37bcf0 Binary files /dev/null and b/plugins/azurecurve-flags/images/gw.png differ diff --git a/plugins/azurecurve-flags/images/gy.png b/plugins/azurecurve-flags/images/gy.png new file mode 100644 index 0000000..22cbe2f Binary files /dev/null and b/plugins/azurecurve-flags/images/gy.png differ diff --git a/plugins/azurecurve-flags/images/hk.png b/plugins/azurecurve-flags/images/hk.png new file mode 100644 index 0000000..d5c380c Binary files /dev/null and b/plugins/azurecurve-flags/images/hk.png differ diff --git a/plugins/azurecurve-flags/images/hm.png b/plugins/azurecurve-flags/images/hm.png new file mode 100644 index 0000000..a01389a Binary files /dev/null and b/plugins/azurecurve-flags/images/hm.png differ diff --git a/plugins/azurecurve-flags/images/hn.png b/plugins/azurecurve-flags/images/hn.png new file mode 100644 index 0000000..96f8388 Binary files /dev/null and b/plugins/azurecurve-flags/images/hn.png differ diff --git a/plugins/azurecurve-flags/images/hr.png b/plugins/azurecurve-flags/images/hr.png new file mode 100644 index 0000000..696b515 Binary files /dev/null and b/plugins/azurecurve-flags/images/hr.png differ diff --git a/plugins/azurecurve-flags/images/ht.png b/plugins/azurecurve-flags/images/ht.png new file mode 100644 index 0000000..416052a Binary files /dev/null and b/plugins/azurecurve-flags/images/ht.png differ diff --git a/plugins/azurecurve-flags/images/hu.png b/plugins/azurecurve-flags/images/hu.png new file mode 100644 index 0000000..7baafe4 Binary files /dev/null and b/plugins/azurecurve-flags/images/hu.png differ diff --git a/plugins/azurecurve-flags/images/id.png b/plugins/azurecurve-flags/images/id.png new file mode 100644 index 0000000..c6bc0fa Binary files /dev/null and b/plugins/azurecurve-flags/images/id.png differ diff --git a/plugins/azurecurve-flags/images/ie.png b/plugins/azurecurve-flags/images/ie.png new file mode 100644 index 0000000..26baa31 Binary files /dev/null and b/plugins/azurecurve-flags/images/ie.png differ diff --git a/plugins/azurecurve-flags/images/il.png b/plugins/azurecurve-flags/images/il.png new file mode 100644 index 0000000..2ca772d Binary files /dev/null and b/plugins/azurecurve-flags/images/il.png differ diff --git a/plugins/azurecurve-flags/images/in.png b/plugins/azurecurve-flags/images/in.png new file mode 100644 index 0000000..e4d7e81 Binary files /dev/null and b/plugins/azurecurve-flags/images/in.png differ diff --git a/plugins/azurecurve-flags/images/io.png b/plugins/azurecurve-flags/images/io.png new file mode 100644 index 0000000..3e74b6a Binary files /dev/null and b/plugins/azurecurve-flags/images/io.png differ diff --git a/plugins/azurecurve-flags/images/iq.png b/plugins/azurecurve-flags/images/iq.png new file mode 100644 index 0000000..878a351 Binary files /dev/null and b/plugins/azurecurve-flags/images/iq.png differ diff --git a/plugins/azurecurve-flags/images/ir.png b/plugins/azurecurve-flags/images/ir.png new file mode 100644 index 0000000..c5fd136 Binary files /dev/null and b/plugins/azurecurve-flags/images/ir.png differ diff --git a/plugins/azurecurve-flags/images/is.png b/plugins/azurecurve-flags/images/is.png new file mode 100644 index 0000000..b8f6d0f Binary files /dev/null and b/plugins/azurecurve-flags/images/is.png differ diff --git a/plugins/azurecurve-flags/images/it.png b/plugins/azurecurve-flags/images/it.png new file mode 100644 index 0000000..89692f7 Binary files /dev/null and b/plugins/azurecurve-flags/images/it.png differ diff --git a/plugins/azurecurve-flags/images/jm.png b/plugins/azurecurve-flags/images/jm.png new file mode 100644 index 0000000..7be119e Binary files /dev/null and b/plugins/azurecurve-flags/images/jm.png differ diff --git a/plugins/azurecurve-flags/images/jo.png b/plugins/azurecurve-flags/images/jo.png new file mode 100644 index 0000000..11bd497 Binary files /dev/null and b/plugins/azurecurve-flags/images/jo.png differ diff --git a/plugins/azurecurve-flags/images/jp.png b/plugins/azurecurve-flags/images/jp.png new file mode 100644 index 0000000..325fbad Binary files /dev/null and b/plugins/azurecurve-flags/images/jp.png differ diff --git a/plugins/azurecurve-flags/images/ke.png b/plugins/azurecurve-flags/images/ke.png new file mode 100644 index 0000000..51879ad Binary files /dev/null and b/plugins/azurecurve-flags/images/ke.png differ diff --git a/plugins/azurecurve-flags/images/kg.png b/plugins/azurecurve-flags/images/kg.png new file mode 100644 index 0000000..0a818f6 Binary files /dev/null and b/plugins/azurecurve-flags/images/kg.png differ diff --git a/plugins/azurecurve-flags/images/kh.png b/plugins/azurecurve-flags/images/kh.png new file mode 100644 index 0000000..30f6bb1 Binary files /dev/null and b/plugins/azurecurve-flags/images/kh.png differ diff --git a/plugins/azurecurve-flags/images/ki.png b/plugins/azurecurve-flags/images/ki.png new file mode 100644 index 0000000..2dcce4b Binary files /dev/null and b/plugins/azurecurve-flags/images/ki.png differ diff --git a/plugins/azurecurve-flags/images/km.png b/plugins/azurecurve-flags/images/km.png new file mode 100644 index 0000000..812b2f5 Binary files /dev/null and b/plugins/azurecurve-flags/images/km.png differ diff --git a/plugins/azurecurve-flags/images/kn.png b/plugins/azurecurve-flags/images/kn.png new file mode 100644 index 0000000..febd5b4 Binary files /dev/null and b/plugins/azurecurve-flags/images/kn.png differ diff --git a/plugins/azurecurve-flags/images/kp.png b/plugins/azurecurve-flags/images/kp.png new file mode 100644 index 0000000..d3d509a Binary files /dev/null and b/plugins/azurecurve-flags/images/kp.png differ diff --git a/plugins/azurecurve-flags/images/kr.png b/plugins/azurecurve-flags/images/kr.png new file mode 100644 index 0000000..9c0a78e Binary files /dev/null and b/plugins/azurecurve-flags/images/kr.png differ diff --git a/plugins/azurecurve-flags/images/kw.png b/plugins/azurecurve-flags/images/kw.png new file mode 100644 index 0000000..96546da Binary files /dev/null and b/plugins/azurecurve-flags/images/kw.png differ diff --git a/plugins/azurecurve-flags/images/ky.png b/plugins/azurecurve-flags/images/ky.png new file mode 100644 index 0000000..15c5f8e Binary files /dev/null and b/plugins/azurecurve-flags/images/ky.png differ diff --git a/plugins/azurecurve-flags/images/kz.png b/plugins/azurecurve-flags/images/kz.png new file mode 100644 index 0000000..45a8c88 Binary files /dev/null and b/plugins/azurecurve-flags/images/kz.png differ diff --git a/plugins/azurecurve-flags/images/la.png b/plugins/azurecurve-flags/images/la.png new file mode 100644 index 0000000..e28acd0 Binary files /dev/null and b/plugins/azurecurve-flags/images/la.png differ diff --git a/plugins/azurecurve-flags/images/lb.png b/plugins/azurecurve-flags/images/lb.png new file mode 100644 index 0000000..d0d452b Binary files /dev/null and b/plugins/azurecurve-flags/images/lb.png differ diff --git a/plugins/azurecurve-flags/images/lc.png b/plugins/azurecurve-flags/images/lc.png new file mode 100644 index 0000000..a47d065 Binary files /dev/null and b/plugins/azurecurve-flags/images/lc.png differ diff --git a/plugins/azurecurve-flags/images/li.png b/plugins/azurecurve-flags/images/li.png new file mode 100644 index 0000000..6469909 Binary files /dev/null and b/plugins/azurecurve-flags/images/li.png differ diff --git a/plugins/azurecurve-flags/images/lk.png b/plugins/azurecurve-flags/images/lk.png new file mode 100644 index 0000000..088aad6 Binary files /dev/null and b/plugins/azurecurve-flags/images/lk.png differ diff --git a/plugins/azurecurve-flags/images/lr.png b/plugins/azurecurve-flags/images/lr.png new file mode 100644 index 0000000..89a5bc7 Binary files /dev/null and b/plugins/azurecurve-flags/images/lr.png differ diff --git a/plugins/azurecurve-flags/images/ls.png b/plugins/azurecurve-flags/images/ls.png new file mode 100644 index 0000000..33fdef1 Binary files /dev/null and b/plugins/azurecurve-flags/images/ls.png differ diff --git a/plugins/azurecurve-flags/images/lt.png b/plugins/azurecurve-flags/images/lt.png new file mode 100644 index 0000000..c8ef0da Binary files /dev/null and b/plugins/azurecurve-flags/images/lt.png differ diff --git a/plugins/azurecurve-flags/images/lu.png b/plugins/azurecurve-flags/images/lu.png new file mode 100644 index 0000000..4cabba9 Binary files /dev/null and b/plugins/azurecurve-flags/images/lu.png differ diff --git a/plugins/azurecurve-flags/images/lv.png b/plugins/azurecurve-flags/images/lv.png new file mode 100644 index 0000000..49b6998 Binary files /dev/null and b/plugins/azurecurve-flags/images/lv.png differ diff --git a/plugins/azurecurve-flags/images/ly.png b/plugins/azurecurve-flags/images/ly.png new file mode 100644 index 0000000..b163a9f Binary files /dev/null and b/plugins/azurecurve-flags/images/ly.png differ diff --git a/plugins/azurecurve-flags/images/ma.png b/plugins/azurecurve-flags/images/ma.png new file mode 100644 index 0000000..f386770 Binary files /dev/null and b/plugins/azurecurve-flags/images/ma.png differ diff --git a/plugins/azurecurve-flags/images/mc.png b/plugins/azurecurve-flags/images/mc.png new file mode 100644 index 0000000..1aa830f Binary files /dev/null and b/plugins/azurecurve-flags/images/mc.png differ diff --git a/plugins/azurecurve-flags/images/md.png b/plugins/azurecurve-flags/images/md.png new file mode 100644 index 0000000..4e92c18 Binary files /dev/null and b/plugins/azurecurve-flags/images/md.png differ diff --git a/plugins/azurecurve-flags/images/me.png b/plugins/azurecurve-flags/images/me.png new file mode 100644 index 0000000..ac72535 Binary files /dev/null and b/plugins/azurecurve-flags/images/me.png differ diff --git a/plugins/azurecurve-flags/images/mg.png b/plugins/azurecurve-flags/images/mg.png new file mode 100644 index 0000000..d2715b3 Binary files /dev/null and b/plugins/azurecurve-flags/images/mg.png differ diff --git a/plugins/azurecurve-flags/images/mh.png b/plugins/azurecurve-flags/images/mh.png new file mode 100644 index 0000000..fb523a8 Binary files /dev/null and b/plugins/azurecurve-flags/images/mh.png differ diff --git a/plugins/azurecurve-flags/images/mk.png b/plugins/azurecurve-flags/images/mk.png new file mode 100644 index 0000000..db173aa Binary files /dev/null and b/plugins/azurecurve-flags/images/mk.png differ diff --git a/plugins/azurecurve-flags/images/ml.png b/plugins/azurecurve-flags/images/ml.png new file mode 100644 index 0000000..2cec8ba Binary files /dev/null and b/plugins/azurecurve-flags/images/ml.png differ diff --git a/plugins/azurecurve-flags/images/mm.png b/plugins/azurecurve-flags/images/mm.png new file mode 100644 index 0000000..f464f67 Binary files /dev/null and b/plugins/azurecurve-flags/images/mm.png differ diff --git a/plugins/azurecurve-flags/images/mn.png b/plugins/azurecurve-flags/images/mn.png new file mode 100644 index 0000000..9396355 Binary files /dev/null and b/plugins/azurecurve-flags/images/mn.png differ diff --git a/plugins/azurecurve-flags/images/mo.png b/plugins/azurecurve-flags/images/mo.png new file mode 100644 index 0000000..deb801d Binary files /dev/null and b/plugins/azurecurve-flags/images/mo.png differ diff --git a/plugins/azurecurve-flags/images/mp.png b/plugins/azurecurve-flags/images/mp.png new file mode 100644 index 0000000..298d588 Binary files /dev/null and b/plugins/azurecurve-flags/images/mp.png differ diff --git a/plugins/azurecurve-flags/images/mq.png b/plugins/azurecurve-flags/images/mq.png new file mode 100644 index 0000000..010143b Binary files /dev/null and b/plugins/azurecurve-flags/images/mq.png differ diff --git a/plugins/azurecurve-flags/images/mr.png b/plugins/azurecurve-flags/images/mr.png new file mode 100644 index 0000000..319546b Binary files /dev/null and b/plugins/azurecurve-flags/images/mr.png differ diff --git a/plugins/azurecurve-flags/images/ms.png b/plugins/azurecurve-flags/images/ms.png new file mode 100644 index 0000000..d4cbb43 Binary files /dev/null and b/plugins/azurecurve-flags/images/ms.png differ diff --git a/plugins/azurecurve-flags/images/mt.png b/plugins/azurecurve-flags/images/mt.png new file mode 100644 index 0000000..00af948 Binary files /dev/null and b/plugins/azurecurve-flags/images/mt.png differ diff --git a/plugins/azurecurve-flags/images/mu.png b/plugins/azurecurve-flags/images/mu.png new file mode 100644 index 0000000..b7fdce1 Binary files /dev/null and b/plugins/azurecurve-flags/images/mu.png differ diff --git a/plugins/azurecurve-flags/images/mv.png b/plugins/azurecurve-flags/images/mv.png new file mode 100644 index 0000000..5073d9e Binary files /dev/null and b/plugins/azurecurve-flags/images/mv.png differ diff --git a/plugins/azurecurve-flags/images/mw.png b/plugins/azurecurve-flags/images/mw.png new file mode 100644 index 0000000..13886e9 Binary files /dev/null and b/plugins/azurecurve-flags/images/mw.png differ diff --git a/plugins/azurecurve-flags/images/mx.png b/plugins/azurecurve-flags/images/mx.png new file mode 100644 index 0000000..5bc58ab Binary files /dev/null and b/plugins/azurecurve-flags/images/mx.png differ diff --git a/plugins/azurecurve-flags/images/my.png b/plugins/azurecurve-flags/images/my.png new file mode 100644 index 0000000..9034cba Binary files /dev/null and b/plugins/azurecurve-flags/images/my.png differ diff --git a/plugins/azurecurve-flags/images/mz.png b/plugins/azurecurve-flags/images/mz.png new file mode 100644 index 0000000..76405e0 Binary files /dev/null and b/plugins/azurecurve-flags/images/mz.png differ diff --git a/plugins/azurecurve-flags/images/na.png b/plugins/azurecurve-flags/images/na.png new file mode 100644 index 0000000..63358c6 Binary files /dev/null and b/plugins/azurecurve-flags/images/na.png differ diff --git a/plugins/azurecurve-flags/images/nc.png b/plugins/azurecurve-flags/images/nc.png new file mode 100644 index 0000000..2cad283 Binary files /dev/null and b/plugins/azurecurve-flags/images/nc.png differ diff --git a/plugins/azurecurve-flags/images/ne.png b/plugins/azurecurve-flags/images/ne.png new file mode 100644 index 0000000..d85f424 Binary files /dev/null and b/plugins/azurecurve-flags/images/ne.png differ diff --git a/plugins/azurecurve-flags/images/nf.png b/plugins/azurecurve-flags/images/nf.png new file mode 100644 index 0000000..f9bcdda Binary files /dev/null and b/plugins/azurecurve-flags/images/nf.png differ diff --git a/plugins/azurecurve-flags/images/ng.png b/plugins/azurecurve-flags/images/ng.png new file mode 100644 index 0000000..3eea2e0 Binary files /dev/null and b/plugins/azurecurve-flags/images/ng.png differ diff --git a/plugins/azurecurve-flags/images/ni.png b/plugins/azurecurve-flags/images/ni.png new file mode 100644 index 0000000..3969aaa Binary files /dev/null and b/plugins/azurecurve-flags/images/ni.png differ diff --git a/plugins/azurecurve-flags/images/nl.png b/plugins/azurecurve-flags/images/nl.png new file mode 100644 index 0000000..fe44791 Binary files /dev/null and b/plugins/azurecurve-flags/images/nl.png differ diff --git a/plugins/azurecurve-flags/images/no.png b/plugins/azurecurve-flags/images/no.png new file mode 100644 index 0000000..160b6b5 Binary files /dev/null and b/plugins/azurecurve-flags/images/no.png differ diff --git a/plugins/azurecurve-flags/images/none.png b/plugins/azurecurve-flags/images/none.png new file mode 100644 index 0000000..18c71f9 Binary files /dev/null and b/plugins/azurecurve-flags/images/none.png differ diff --git a/plugins/azurecurve-flags/images/np.png b/plugins/azurecurve-flags/images/np.png new file mode 100644 index 0000000..aeb058b Binary files /dev/null and b/plugins/azurecurve-flags/images/np.png differ diff --git a/plugins/azurecurve-flags/images/nr.png b/plugins/azurecurve-flags/images/nr.png new file mode 100644 index 0000000..705fc33 Binary files /dev/null and b/plugins/azurecurve-flags/images/nr.png differ diff --git a/plugins/azurecurve-flags/images/nu.png b/plugins/azurecurve-flags/images/nu.png new file mode 100644 index 0000000..c3ce4ae Binary files /dev/null and b/plugins/azurecurve-flags/images/nu.png differ diff --git a/plugins/azurecurve-flags/images/nz.png b/plugins/azurecurve-flags/images/nz.png new file mode 100644 index 0000000..10d6306 Binary files /dev/null and b/plugins/azurecurve-flags/images/nz.png differ diff --git a/plugins/azurecurve-flags/images/om.png b/plugins/azurecurve-flags/images/om.png new file mode 100644 index 0000000..2ffba7e Binary files /dev/null and b/plugins/azurecurve-flags/images/om.png differ diff --git a/plugins/azurecurve-flags/images/pa.png b/plugins/azurecurve-flags/images/pa.png new file mode 100644 index 0000000..9b2ee9a Binary files /dev/null and b/plugins/azurecurve-flags/images/pa.png differ diff --git a/plugins/azurecurve-flags/images/pe.png b/plugins/azurecurve-flags/images/pe.png new file mode 100644 index 0000000..62a0497 Binary files /dev/null and b/plugins/azurecurve-flags/images/pe.png differ diff --git a/plugins/azurecurve-flags/images/pf.png b/plugins/azurecurve-flags/images/pf.png new file mode 100644 index 0000000..771a0f6 Binary files /dev/null and b/plugins/azurecurve-flags/images/pf.png differ diff --git a/plugins/azurecurve-flags/images/pg.png b/plugins/azurecurve-flags/images/pg.png new file mode 100644 index 0000000..10d6233 Binary files /dev/null and b/plugins/azurecurve-flags/images/pg.png differ diff --git a/plugins/azurecurve-flags/images/ph.png b/plugins/azurecurve-flags/images/ph.png new file mode 100644 index 0000000..b89e159 Binary files /dev/null and b/plugins/azurecurve-flags/images/ph.png differ diff --git a/plugins/azurecurve-flags/images/pk.png b/plugins/azurecurve-flags/images/pk.png new file mode 100644 index 0000000..e9df70c Binary files /dev/null and b/plugins/azurecurve-flags/images/pk.png differ diff --git a/plugins/azurecurve-flags/images/pl.png b/plugins/azurecurve-flags/images/pl.png new file mode 100644 index 0000000..d413d01 Binary files /dev/null and b/plugins/azurecurve-flags/images/pl.png differ diff --git a/plugins/azurecurve-flags/images/pm.png b/plugins/azurecurve-flags/images/pm.png new file mode 100644 index 0000000..ba91d2c Binary files /dev/null and b/plugins/azurecurve-flags/images/pm.png differ diff --git a/plugins/azurecurve-flags/images/pn.png b/plugins/azurecurve-flags/images/pn.png new file mode 100644 index 0000000..aa9344f Binary files /dev/null and b/plugins/azurecurve-flags/images/pn.png differ diff --git a/plugins/azurecurve-flags/images/pr.png b/plugins/azurecurve-flags/images/pr.png new file mode 100644 index 0000000..82d9130 Binary files /dev/null and b/plugins/azurecurve-flags/images/pr.png differ diff --git a/plugins/azurecurve-flags/images/ps.png b/plugins/azurecurve-flags/images/ps.png new file mode 100644 index 0000000..f5f5477 Binary files /dev/null and b/plugins/azurecurve-flags/images/ps.png differ diff --git a/plugins/azurecurve-flags/images/pt.png b/plugins/azurecurve-flags/images/pt.png new file mode 100644 index 0000000..ece7980 Binary files /dev/null and b/plugins/azurecurve-flags/images/pt.png differ diff --git a/plugins/azurecurve-flags/images/pw.png b/plugins/azurecurve-flags/images/pw.png new file mode 100644 index 0000000..6178b25 Binary files /dev/null and b/plugins/azurecurve-flags/images/pw.png differ diff --git a/plugins/azurecurve-flags/images/py.png b/plugins/azurecurve-flags/images/py.png new file mode 100644 index 0000000..cb8723c Binary files /dev/null and b/plugins/azurecurve-flags/images/py.png differ diff --git a/plugins/azurecurve-flags/images/qa.png b/plugins/azurecurve-flags/images/qa.png new file mode 100644 index 0000000..ed4c621 Binary files /dev/null and b/plugins/azurecurve-flags/images/qa.png differ diff --git a/plugins/azurecurve-flags/images/re.png b/plugins/azurecurve-flags/images/re.png new file mode 100644 index 0000000..8332c4e Binary files /dev/null and b/plugins/azurecurve-flags/images/re.png differ diff --git a/plugins/azurecurve-flags/images/ro.png b/plugins/azurecurve-flags/images/ro.png new file mode 100644 index 0000000..57e74a6 Binary files /dev/null and b/plugins/azurecurve-flags/images/ro.png differ diff --git a/plugins/azurecurve-flags/images/rs.png b/plugins/azurecurve-flags/images/rs.png new file mode 100644 index 0000000..9439a5b Binary files /dev/null and b/plugins/azurecurve-flags/images/rs.png differ diff --git a/plugins/azurecurve-flags/images/ru.png b/plugins/azurecurve-flags/images/ru.png new file mode 100644 index 0000000..47da421 Binary files /dev/null and b/plugins/azurecurve-flags/images/ru.png differ diff --git a/plugins/azurecurve-flags/images/rw.png b/plugins/azurecurve-flags/images/rw.png new file mode 100644 index 0000000..5356491 Binary files /dev/null and b/plugins/azurecurve-flags/images/rw.png differ diff --git a/plugins/azurecurve-flags/images/sa.png b/plugins/azurecurve-flags/images/sa.png new file mode 100644 index 0000000..b4641c7 Binary files /dev/null and b/plugins/azurecurve-flags/images/sa.png differ diff --git a/plugins/azurecurve-flags/images/sb.png b/plugins/azurecurve-flags/images/sb.png new file mode 100644 index 0000000..a9937cc Binary files /dev/null and b/plugins/azurecurve-flags/images/sb.png differ diff --git a/plugins/azurecurve-flags/images/sc.png b/plugins/azurecurve-flags/images/sc.png new file mode 100644 index 0000000..39ee371 Binary files /dev/null and b/plugins/azurecurve-flags/images/sc.png differ diff --git a/plugins/azurecurve-flags/images/scotland.png b/plugins/azurecurve-flags/images/scotland.png new file mode 100644 index 0000000..a0e57b4 Binary files /dev/null and b/plugins/azurecurve-flags/images/scotland.png differ diff --git a/plugins/azurecurve-flags/images/sd.png b/plugins/azurecurve-flags/images/sd.png new file mode 100644 index 0000000..eaab69e Binary files /dev/null and b/plugins/azurecurve-flags/images/sd.png differ diff --git a/plugins/azurecurve-flags/images/se.png b/plugins/azurecurve-flags/images/se.png new file mode 100644 index 0000000..1994653 Binary files /dev/null and b/plugins/azurecurve-flags/images/se.png differ diff --git a/plugins/azurecurve-flags/images/sg.png b/plugins/azurecurve-flags/images/sg.png new file mode 100644 index 0000000..dd34d61 Binary files /dev/null and b/plugins/azurecurve-flags/images/sg.png differ diff --git a/plugins/azurecurve-flags/images/sh.png b/plugins/azurecurve-flags/images/sh.png new file mode 100644 index 0000000..4b1d2a2 Binary files /dev/null and b/plugins/azurecurve-flags/images/sh.png differ diff --git a/plugins/azurecurve-flags/images/si.png b/plugins/azurecurve-flags/images/si.png new file mode 100644 index 0000000..bb1476f Binary files /dev/null and b/plugins/azurecurve-flags/images/si.png differ diff --git a/plugins/azurecurve-flags/images/sj.png b/plugins/azurecurve-flags/images/sj.png new file mode 100644 index 0000000..160b6b5 Binary files /dev/null and b/plugins/azurecurve-flags/images/sj.png differ diff --git a/plugins/azurecurve-flags/images/sk.png b/plugins/azurecurve-flags/images/sk.png new file mode 100644 index 0000000..7ccbc82 Binary files /dev/null and b/plugins/azurecurve-flags/images/sk.png differ diff --git a/plugins/azurecurve-flags/images/sl.png b/plugins/azurecurve-flags/images/sl.png new file mode 100644 index 0000000..12d812d Binary files /dev/null and b/plugins/azurecurve-flags/images/sl.png differ diff --git a/plugins/azurecurve-flags/images/sm.png b/plugins/azurecurve-flags/images/sm.png new file mode 100644 index 0000000..3df2fdc Binary files /dev/null and b/plugins/azurecurve-flags/images/sm.png differ diff --git a/plugins/azurecurve-flags/images/sn.png b/plugins/azurecurve-flags/images/sn.png new file mode 100644 index 0000000..eabb71d Binary files /dev/null and b/plugins/azurecurve-flags/images/sn.png differ diff --git a/plugins/azurecurve-flags/images/so.png b/plugins/azurecurve-flags/images/so.png new file mode 100644 index 0000000..4a1ea4b Binary files /dev/null and b/plugins/azurecurve-flags/images/so.png differ diff --git a/plugins/azurecurve-flags/images/sr.png b/plugins/azurecurve-flags/images/sr.png new file mode 100644 index 0000000..5eff927 Binary files /dev/null and b/plugins/azurecurve-flags/images/sr.png differ diff --git a/plugins/azurecurve-flags/images/st.png b/plugins/azurecurve-flags/images/st.png new file mode 100644 index 0000000..2978557 Binary files /dev/null and b/plugins/azurecurve-flags/images/st.png differ diff --git a/plugins/azurecurve-flags/images/sv.png b/plugins/azurecurve-flags/images/sv.png new file mode 100644 index 0000000..2498799 Binary files /dev/null and b/plugins/azurecurve-flags/images/sv.png differ diff --git a/plugins/azurecurve-flags/images/sy.png b/plugins/azurecurve-flags/images/sy.png new file mode 100644 index 0000000..f5ce30d Binary files /dev/null and b/plugins/azurecurve-flags/images/sy.png differ diff --git a/plugins/azurecurve-flags/images/sz.png b/plugins/azurecurve-flags/images/sz.png new file mode 100644 index 0000000..914ee86 Binary files /dev/null and b/plugins/azurecurve-flags/images/sz.png differ diff --git a/plugins/azurecurve-flags/images/tc.png b/plugins/azurecurve-flags/images/tc.png new file mode 100644 index 0000000..8fc1156 Binary files /dev/null and b/plugins/azurecurve-flags/images/tc.png differ diff --git a/plugins/azurecurve-flags/images/td.png b/plugins/azurecurve-flags/images/td.png new file mode 100644 index 0000000..667f21f Binary files /dev/null and b/plugins/azurecurve-flags/images/td.png differ diff --git a/plugins/azurecurve-flags/images/tf.png b/plugins/azurecurve-flags/images/tf.png new file mode 100644 index 0000000..80529a4 Binary files /dev/null and b/plugins/azurecurve-flags/images/tf.png differ diff --git a/plugins/azurecurve-flags/images/tg.png b/plugins/azurecurve-flags/images/tg.png new file mode 100644 index 0000000..3aa00ad Binary files /dev/null and b/plugins/azurecurve-flags/images/tg.png differ diff --git a/plugins/azurecurve-flags/images/th.png b/plugins/azurecurve-flags/images/th.png new file mode 100644 index 0000000..dd8ba91 Binary files /dev/null and b/plugins/azurecurve-flags/images/th.png differ diff --git a/plugins/azurecurve-flags/images/tj.png b/plugins/azurecurve-flags/images/tj.png new file mode 100644 index 0000000..617bf64 Binary files /dev/null and b/plugins/azurecurve-flags/images/tj.png differ diff --git a/plugins/azurecurve-flags/images/tk.png b/plugins/azurecurve-flags/images/tk.png new file mode 100644 index 0000000..67b8c8c Binary files /dev/null and b/plugins/azurecurve-flags/images/tk.png differ diff --git a/plugins/azurecurve-flags/images/tl.png b/plugins/azurecurve-flags/images/tl.png new file mode 100644 index 0000000..77da181 Binary files /dev/null and b/plugins/azurecurve-flags/images/tl.png differ diff --git a/plugins/azurecurve-flags/images/tm.png b/plugins/azurecurve-flags/images/tm.png new file mode 100644 index 0000000..828020e Binary files /dev/null and b/plugins/azurecurve-flags/images/tm.png differ diff --git a/plugins/azurecurve-flags/images/tn.png b/plugins/azurecurve-flags/images/tn.png new file mode 100644 index 0000000..183cdd3 Binary files /dev/null and b/plugins/azurecurve-flags/images/tn.png differ diff --git a/plugins/azurecurve-flags/images/to.png b/plugins/azurecurve-flags/images/to.png new file mode 100644 index 0000000..f89b8ba Binary files /dev/null and b/plugins/azurecurve-flags/images/to.png differ diff --git a/plugins/azurecurve-flags/images/tr.png b/plugins/azurecurve-flags/images/tr.png new file mode 100644 index 0000000..be32f77 Binary files /dev/null and b/plugins/azurecurve-flags/images/tr.png differ diff --git a/plugins/azurecurve-flags/images/tt.png b/plugins/azurecurve-flags/images/tt.png new file mode 100644 index 0000000..2a11c1e Binary files /dev/null and b/plugins/azurecurve-flags/images/tt.png differ diff --git a/plugins/azurecurve-flags/images/tv.png b/plugins/azurecurve-flags/images/tv.png new file mode 100644 index 0000000..28274c5 Binary files /dev/null and b/plugins/azurecurve-flags/images/tv.png differ diff --git a/plugins/azurecurve-flags/images/tw.png b/plugins/azurecurve-flags/images/tw.png new file mode 100644 index 0000000..f31c654 Binary files /dev/null and b/plugins/azurecurve-flags/images/tw.png differ diff --git a/plugins/azurecurve-flags/images/tz.png b/plugins/azurecurve-flags/images/tz.png new file mode 100644 index 0000000..c00ff79 Binary files /dev/null and b/plugins/azurecurve-flags/images/tz.png differ diff --git a/plugins/azurecurve-flags/images/ua.png b/plugins/azurecurve-flags/images/ua.png new file mode 100644 index 0000000..09563a2 Binary files /dev/null and b/plugins/azurecurve-flags/images/ua.png differ diff --git a/plugins/azurecurve-flags/images/ug.png b/plugins/azurecurve-flags/images/ug.png new file mode 100644 index 0000000..33f4aff Binary files /dev/null and b/plugins/azurecurve-flags/images/ug.png differ diff --git a/plugins/azurecurve-flags/images/um.png b/plugins/azurecurve-flags/images/um.png new file mode 100644 index 0000000..c1dd965 Binary files /dev/null and b/plugins/azurecurve-flags/images/um.png differ diff --git a/plugins/azurecurve-flags/images/us.png b/plugins/azurecurve-flags/images/us.png new file mode 100644 index 0000000..10f451f Binary files /dev/null and b/plugins/azurecurve-flags/images/us.png differ diff --git a/plugins/azurecurve-flags/images/uy.png b/plugins/azurecurve-flags/images/uy.png new file mode 100644 index 0000000..31d948a Binary files /dev/null and b/plugins/azurecurve-flags/images/uy.png differ diff --git a/plugins/azurecurve-flags/images/uz.png b/plugins/azurecurve-flags/images/uz.png new file mode 100644 index 0000000..fef5dc1 Binary files /dev/null and b/plugins/azurecurve-flags/images/uz.png differ diff --git a/plugins/azurecurve-flags/images/va.png b/plugins/azurecurve-flags/images/va.png new file mode 100644 index 0000000..b31eaf2 Binary files /dev/null and b/plugins/azurecurve-flags/images/va.png differ diff --git a/plugins/azurecurve-flags/images/vc.png b/plugins/azurecurve-flags/images/vc.png new file mode 100644 index 0000000..8fa17b0 Binary files /dev/null and b/plugins/azurecurve-flags/images/vc.png differ diff --git a/plugins/azurecurve-flags/images/ve.png b/plugins/azurecurve-flags/images/ve.png new file mode 100644 index 0000000..00c90f9 Binary files /dev/null and b/plugins/azurecurve-flags/images/ve.png differ diff --git a/plugins/azurecurve-flags/images/vg.png b/plugins/azurecurve-flags/images/vg.png new file mode 100644 index 0000000..4156907 Binary files /dev/null and b/plugins/azurecurve-flags/images/vg.png differ diff --git a/plugins/azurecurve-flags/images/vi.png b/plugins/azurecurve-flags/images/vi.png new file mode 100644 index 0000000..ed26915 Binary files /dev/null and b/plugins/azurecurve-flags/images/vi.png differ diff --git a/plugins/azurecurve-flags/images/vn.png b/plugins/azurecurve-flags/images/vn.png new file mode 100644 index 0000000..ec7cd48 Binary files /dev/null and b/plugins/azurecurve-flags/images/vn.png differ diff --git a/plugins/azurecurve-flags/images/vu.png b/plugins/azurecurve-flags/images/vu.png new file mode 100644 index 0000000..b3397bc Binary files /dev/null and b/plugins/azurecurve-flags/images/vu.png differ diff --git a/plugins/azurecurve-flags/images/wales.png b/plugins/azurecurve-flags/images/wales.png new file mode 100644 index 0000000..e0d7cee Binary files /dev/null and b/plugins/azurecurve-flags/images/wales.png differ diff --git a/plugins/azurecurve-flags/images/wf.png b/plugins/azurecurve-flags/images/wf.png new file mode 100644 index 0000000..9f95587 Binary files /dev/null and b/plugins/azurecurve-flags/images/wf.png differ diff --git a/plugins/azurecurve-flags/images/ws.png b/plugins/azurecurve-flags/images/ws.png new file mode 100644 index 0000000..c169508 Binary files /dev/null and b/plugins/azurecurve-flags/images/ws.png differ diff --git a/plugins/azurecurve-flags/images/ye.png b/plugins/azurecurve-flags/images/ye.png new file mode 100644 index 0000000..468dfad Binary files /dev/null and b/plugins/azurecurve-flags/images/ye.png differ diff --git a/plugins/azurecurve-flags/images/yt.png b/plugins/azurecurve-flags/images/yt.png new file mode 100644 index 0000000..c298f37 Binary files /dev/null and b/plugins/azurecurve-flags/images/yt.png differ diff --git a/plugins/azurecurve-flags/images/za.png b/plugins/azurecurve-flags/images/za.png new file mode 100644 index 0000000..57c58e2 Binary files /dev/null and b/plugins/azurecurve-flags/images/za.png differ diff --git a/plugins/azurecurve-flags/images/zm.png b/plugins/azurecurve-flags/images/zm.png new file mode 100644 index 0000000..c25b07b Binary files /dev/null and b/plugins/azurecurve-flags/images/zm.png differ diff --git a/plugins/azurecurve-flags/images/zw.png b/plugins/azurecurve-flags/images/zw.png new file mode 100644 index 0000000..53c9725 Binary files /dev/null and b/plugins/azurecurve-flags/images/zw.png differ diff --git a/plugins/azurecurve-flags/readme.txt b/plugins/azurecurve-flags/readme.txt new file mode 100644 index 0000000..f30fb68 --- /dev/null +++ b/plugins/azurecurve-flags/readme.txt @@ -0,0 +1,31 @@ +=== azurecurve Flags === +Contributors: azurecurve +Donate link: http://wordpress.azurecurve.co.uk/support-development/ +Author URI: http://wordpress.azurecurve.co.uk/ +Plugin URI: http://wordpress.azurecurve.co.uk/plugins/flags/ +Tags: posts, pages, flags, shortcode +Requires at least: 3.3 +Tested up to: 4.3.99 +Stable tag: 1.1.0 +License: GPLv2 or later +License URI: http://www.gnu.org/licenses/gpl-2.0.html + +Allows a 16x16 flag to be displayed in a post or page using a shortcode. + +== Description == +Allows a 16x16 flag to be displayed in a post of page using a [flag] shortcode. + +Format of shortcode is [flag='gb'] to display the flag of the United Kingdom of Great Britain and Northern Ireland; 247 flags are included. + +== Installation == +To install the plugin copy the azurcurve-flags folder into your plug-in directory and activate it. + +== Changelog == +Changes and feature additions for the Flags plugin: += 1.1.0 = +* Add css to remove flag borders += 1.0.0 = +* First version + +== Frequently Asked Questions == +No questions have been asked yet. \ No newline at end of file diff --git a/plugins/azurecurve-flags/style.css b/plugins/azurecurve-flags/style.css new file mode 100644 index 0000000..41a5d2c --- /dev/null +++ b/plugins/azurecurve-flags/style.css @@ -0,0 +1,5 @@ +/* azc flags +----------------------------------------------- */ +img.azc_flags{ + border-style: none; +} \ No newline at end of file diff --git a/plugins/columns/columns.css b/plugins/columns/columns.css new file mode 100644 index 0000000..1211b7b --- /dev/null +++ b/plugins/columns/columns.css @@ -0,0 +1,27 @@ +.column-group { + width: 100%; + overflow: hidden; +} + +.column { + float: left; + margin-right: 5%; + width: 100%; +} + +.column-group > br, +.column-group > p { + display: none; +} + +.column.last { + margin-right: 0; +} + +.columns-2 .column { width: 47.5%; } /* ( 100 - $margin * ( $num_cols - 1 ) ) / $num_cols */ +.columns-3 .column { width: 30%; } +.columns-4 .column { width: 21.25%; } + +.columns-3 .column-span-2 { width: 65%; } /* $width * $span + $margin * ( $span - 1 ) */ +.columns-4 .column-span-2 { width: 47.5%; } +.columns-4 .column-span-3 { width: 73.75%; } \ No newline at end of file diff --git a/plugins/columns/columns.php b/plugins/columns/columns.php new file mode 100644 index 0000000..aa978b7 --- /dev/null +++ b/plugins/columns/columns.php @@ -0,0 +1,61 @@ + 1, + ), $attr ); + + $attr['span'] = absint( $attr['span'] ); + $this->span[ $this->current_group ] += $attr['span']; + + $content = wpautop( $content ); + + // Allow other shortcodes inside the column content. + if ( false !== strpos( $content, '[' ) ) + $content = do_shortcode( shortcode_unautop( $content ) ); + + return sprintf( '
      %s
      ', $this->span[ $this->current_group ], $attr['span'], $content ); + } + + function group( $attr, $content ) { + $this->current_group++; + $this->span[ $this->current_group ] = 0; + + // Convent and count columns. + $content = do_shortcode( $content ); + + $count = $this->span[ $this->current_group ]; + $content = str_replace( 'class="column column-number-' . $count, 'class="column column-number-' . $count . ' last', $content ); + + return sprintf( '
      %s
      ', $count, $content ); + } + + function enqueue_scripts() { + wp_enqueue_style( 'columns', plugins_url( 'columns.css', __FILE__ ) ); + } +} +new Columns_Plugin; \ No newline at end of file diff --git a/plugins/columns/readme.txt b/plugins/columns/readme.txt new file mode 100644 index 0000000..d0332e9 --- /dev/null +++ b/plugins/columns/readme.txt @@ -0,0 +1,60 @@ +=== Columns === +Contributors: kovshenin +Donate Link: https://kovshenin.com/beer/ +Tags: columns, shortcode +Requires at least: 3.5 +Tested up to: 4.4 +Stable tag: 0.7.3 +License: GPLv2 or later +License URI: http://www.gnu.org/licenses/gpl-2.0.html + +This WordPress plugin boosts your website with... you guessed it, columns! + +== Description == + +Create a column group with the `[column-group]` shortcode, then add columns to the group with the `[column]` shortcode, like this: + + [column-group] + [column]This is my first column[/column] + [column]This is my second column[/column] + [/column-group] + +You can also span columns, like this: + + + [column-group] + [column span="2"]This is my first column spanned across two columns.[/column] + [column]This is my second column[/column] + [column]This is my third column[/column] + [/column-group] + + +The first column will be twice as large as the second or third. + +Styles are in columns.css. If you'd like your own margins and stuff, dequeue the columns.css style during `wp_enqueue_scripts` with a priority of 11 or more. + +== Installation == + +1. Download archive and unzip in wp-content/plugins or install via Plugins - Add New. +1. Start using the `[column-group]` and `[column]` shortcodes. + +== Screenshots == + +1. Columns demo +2. This is how things look in the editor + +== Changelog == + += 0.7.3 = +* Testing in 4.3 and 4.4 + += 0.7.2 = +* Fix wpautop issues when another shortcode appears in a column +* Testing in 3.7.1 and 3.8 + += 0.7.1 = +* Clear floats after column group +* Allow other shortcodes inside column contents + += 0.7 = +* First version diff --git a/plugins/contact-form-add/admin/assets/css/bootstrap-theme.min.css b/plugins/contact-form-add/admin/assets/css/bootstrap-theme.min.css new file mode 100644 index 0000000..dc95d8e --- /dev/null +++ b/plugins/contact-form-add/admin/assets/css/bootstrap-theme.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.3.6 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger.disabled,.btn-danger[disabled],.btn-default.disabled,.btn-default[disabled],.btn-info.disabled,.btn-info[disabled],.btn-primary.disabled,.btn-primary[disabled],.btn-success.disabled,.btn-success[disabled],.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-default,fieldset[disabled] .btn-info,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-warning{-webkit-box-shadow:none;box-shadow:none}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} +/*# sourceMappingURL=bootstrap-theme.min.css.map */ \ No newline at end of file diff --git a/plugins/contact-form-add/admin/assets/css/bootstrap.min.css b/plugins/contact-form-add/admin/assets/css/bootstrap.min.css new file mode 100644 index 0000000..406f813 --- /dev/null +++ b/plugins/contact-form-add/admin/assets/css/bootstrap.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.3.6 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/plugins/contact-form-add/admin/assets/css/entry/datatables.min.css b/plugins/contact-form-add/admin/assets/css/entry/datatables.min.css new file mode 100644 index 0000000..49eecda --- /dev/null +++ b/plugins/contact-form-add/admin/assets/css/entry/datatables.min.css @@ -0,0 +1,24 @@ +/* + * This combined file was created by the DataTables downloader builder: + * https://datatables.net/download + * + * To rebuild or modify this file with the latest versions of the included + * software please visit: + * https://datatables.net/download/#bs/dt-1.10.11,b-1.1.2,b-colvis-1.1.2,b-html5-1.1.2,b-print-1.1.2,cr-1.3.1,se-1.1.2 + * + * Included libraries: + * DataTables 1.10.11, Buttons 1.1.2, Column visibility 1.1.2, HTML5 export 1.1.2, Print view 1.1.2, ColReorder 1.3.1, Select 1.1.2 + */ + +table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:75px;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:0.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:8px;white-space:nowrap}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:30px}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{position:absolute;bottom:8px;right:8px;display:block;font-family:'Glyphicons Halflings';opacity:0.5}table.dataTable thead .sorting:after{opacity:0.2;content:"\e150"}table.dataTable thead .sorting_asc:after{content:"\e155"}table.dataTable thead .sorting_desc:after{content:"\e156"}table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{color:#eee}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody table thead .sorting:after,div.dataTables_scrollBody table thead .sorting_asc:after,div.dataTables_scrollBody table thead .sorting_desc:after{display:none}div.dataTables_scrollBody table tbody tr:first-child th,div.dataTables_scrollBody table tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}}table.dataTable.table-condensed>thead>tr>th{padding-right:20px}table.dataTable.table-condensed .sorting:after,table.dataTable.table-condensed .sorting_asc:after,table.dataTable.table-condensed .sorting_desc:after{top:6px;right:6px}table.table-bordered.dataTable{border-collapse:separate !important}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:0}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:last-child{padding-right:0} + + +div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:white;border:2px solid #111;box-shadow:3px 3px 8px rgba(0,0,0,0.3);border-radius:3px;text-align:center;z-index:21}div.dt-button-info h2{padding:0.5em;margin:0;font-weight:normal;border-bottom:1px solid #ddd;background-color:#f3f3f3}div.dt-button-info>div{padding:1em}ul.dt-button-collection.dropdown-menu{display:block;z-index:2002;-webkit-column-gap:8px;-moz-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px}ul.dt-button-collection.dropdown-menu.fixed{position:fixed;top:50%;left:50%;margin-left:-75px;border-radius:0}ul.dt-button-collection.dropdown-menu.fixed.two-column{margin-left:-150px}ul.dt-button-collection.dropdown-menu.fixed.three-column{margin-left:-225px}ul.dt-button-collection.dropdown-menu.fixed.four-column{margin-left:-300px}ul.dt-button-collection.dropdown-menu>*{-webkit-column-break-inside:avoid;break-inside:avoid}ul.dt-button-collection.dropdown-menu.two-column{width:300px;padding-bottom:1px;-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}ul.dt-button-collection.dropdown-menu.three-column{width:450px;padding-bottom:1px;-webkit-column-count:3;-moz-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3}ul.dt-button-collection.dropdown-menu.four-column{width:600px;padding-bottom:1px;-webkit-column-count:4;-moz-column-count:4;-ms-column-count:4;-o-column-count:4;column-count:4}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;z-index:2001}@media screen and (max-width: 767px){div.dt-buttons{float:none;width:100%;text-align:center;margin-bottom:0.5em}div.dt-buttons a.btn{float:none}} + + +table.DTCR_clonedTable.dataTable{position:absolute !important;background-color:rgba(255,255,255,0.7);z-index:202}div.DTCR_pointer{width:1px;background-color:#337ab7;z-index:201} + + +table.dataTable tbody>tr.selected,table.dataTable tbody>tr>.selected{background-color:#08C}table.dataTable.stripe tbody>tr.odd.selected,table.dataTable.stripe tbody>tr.odd>.selected,table.dataTable.display tbody>tr.odd.selected,table.dataTable.display tbody>tr.odd>.selected{background-color:#0085c7}table.dataTable.hover tbody>tr.selected:hover,table.dataTable.hover tbody>tr>.selected:hover,table.dataTable.display tbody>tr.selected:hover,table.dataTable.display tbody>tr>.selected:hover{background-color:#0083c5}table.dataTable.order-column tbody>tr.selected>.sorting_1,table.dataTable.order-column tbody>tr.selected>.sorting_2,table.dataTable.order-column tbody>tr.selected>.sorting_3,table.dataTable.order-column tbody>tr>.selected,table.dataTable.display tbody>tr.selected>.sorting_1,table.dataTable.display tbody>tr.selected>.sorting_2,table.dataTable.display tbody>tr.selected>.sorting_3,table.dataTable.display tbody>tr>.selected{background-color:#0085c8}table.dataTable.display tbody>tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_1{background-color:#0081c1}table.dataTable.display tbody>tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_2{background-color:#0082c2}table.dataTable.display tbody>tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_3{background-color:#0083c4}table.dataTable.display tbody>tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_1{background-color:#0085c8}table.dataTable.display tbody>tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_2{background-color:#0086ca}table.dataTable.display tbody>tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_3{background-color:#0087cb}table.dataTable.display tbody>tr.odd>.selected,table.dataTable.order-column.stripe tbody>tr.odd>.selected{background-color:#0081c1}table.dataTable.display tbody>tr.even>.selected,table.dataTable.order-column.stripe tbody>tr.even>.selected{background-color:#0085c8}table.dataTable.display tbody>tr.selected:hover>.sorting_1,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_1{background-color:#007dbb}table.dataTable.display tbody>tr.selected:hover>.sorting_2,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_2{background-color:#007ebd}table.dataTable.display tbody>tr.selected:hover>.sorting_3,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_3{background-color:#007fbf}table.dataTable.display tbody>tr:hover>.selected,table.dataTable.display tbody>tr>.selected:hover,table.dataTable.order-column.hover tbody>tr:hover>.selected,table.dataTable.order-column.hover tbody>tr>.selected:hover{background-color:#007dbb}table.dataTable td.select-checkbox{position:relative}table.dataTable td.select-checkbox:before,table.dataTable td.select-checkbox:after{display:block;position:absolute;top:1.2em;left:50%;width:12px;height:12px;box-sizing:border-box}table.dataTable td.select-checkbox:before{content:' ';margin-top:-6px;margin-left:-6px;border:1px solid black;border-radius:3px}table.dataTable tr.selected td.select-checkbox:after{content:'\2714';margin-top:-11px;margin-left:-4px;text-align:center;text-shadow:1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9}div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0.5em}@media screen and (max-width: 640px){div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0;display:block}}table.dataTable tbody tr.selected,table.dataTable tbody th.selected,table.dataTable tbody td.selected{color:white}table.dataTable tbody tr.selected a,table.dataTable tbody th.selected a,table.dataTable tbody td.selected a{color:#a2d4ed} + + diff --git a/plugins/contact-form-add/admin/assets/css/entry/entry-manager.css b/plugins/contact-form-add/admin/assets/css/entry/entry-manager.css new file mode 100644 index 0000000..8dfa5b6 --- /dev/null +++ b/plugins/contact-form-add/admin/assets/css/entry/entry-manager.css @@ -0,0 +1,251 @@ +/* Template-specific stuff + * + * Customizations just for the template; these are not necessary for anything + * with disabling the responsiveness. + */ + +/* Account for fixed navbar */ +body { + min-width: 1200px; +} + +/* Finesse the page header spacing */ +.page-header { + margin-bottom: 30px; +} +.page-header .lead { + margin-bottom: 10px; +} + + +/* Non-responsive overrides + * + * Utilitze the following CSS to disable the responsive-ness of the container, + * grid system, and navbar. + */ + +/* Reset the container */ +.container { + width: 1200px; + max-width: none !important; +} + +/* Demonstrate the grids */ +.col-xs-4 { + padding-top: 15px; + padding-bottom: 15px; + background-color: #eee; + background-color: rgba(86,61,124,.15); + border: 1px solid #ddd; + border: 1px solid rgba(86,61,124,.2); +} + +.container .navbar-header, +.container .navbar-collapse { + margin-right: 0; + margin-left: 0; +} + +/* Always float the navbar header */ +.navbar-header { + float: left; +} + +/* Undo the collapsing navbar */ +.navbar-collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; +} + +.navbar-toggle { + display: none; +} +.navbar-collapse { + border-top: 0; +} + +.navbar-brand { + margin-left: -15px; +} + +/* Always apply the floated nav */ +.navbar-nav { + float: left; + margin: 0; +} +.navbar-nav > li { + float: left; +} +.navbar-nav > li > a { + padding: 15px; +} + +/* Redeclare since we override the float above */ +.navbar-nav.navbar-right { + float: right; +} + +/* Undo custom dropdowns */ +.navbar .navbar-nav .open .dropdown-menu { + position: absolute; + float: left; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .15); + border-width: 0 1px 1px; + border-radius: 0 0 4px 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); +} +.navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #333; +} +.navbar .navbar-nav .open .dropdown-menu > li > a:hover, +.navbar .navbar-nav .open .dropdown-menu > li > a:focus, +.navbar .navbar-nav .open .dropdown-menu > .active > a, +.navbar .navbar-nav .open .dropdown-menu > .active > a:hover, +.navbar .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff !important; + background-color: #428bca !important; +} +.navbar .navbar-nav .open .dropdown-menu > .disabled > a, +.navbar .navbar-nav .open .dropdown-menu > .disabled > a:hover, +.navbar .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #999 !important; + background-color: transparent !important; +} + +#smuzform-cont { + background-color: #fff; +} + +.row { + width: 91.8%; + margin: 25px; +} + +.contInfoCard { + background-color: #fff; + height: 240px; + border-radius: 50%; + text-align: center; + box-shadow: 0 1px 3px 0 rgba(0,0,0,0.4); +} + +.contInfoInlineCont { + position: relative; + top: 40%; + transform: translateY(-50%); +} + +.entryCountCard { + position: relative; + left: 400px; +} + +#entriesCountHeading { + color: green; + font-size: 60px; +} + +#entryDataTable { + width: 100% !important; +} + +#entryDataTable thead tr th { + font-size: 20px; + background-color: #32373c; + color: #fff; + padding: 10px; + width: 200px !important; +} + +#entryDataTable tbody tr td { + + font-size: 14.4px; + padding: 5px; + width: 200px !important; + max-width: 200px; +} + + +#entryDataTable_wrapper { + width: 90%; +} + +.dt-buttons.btn-group { display: inline; } +.col-sm-6 .dataTables_filter { display: none; } +#entryDataTable_length { top: 10px; + left: -40px; position: relative; } + +.dt-buttons.btn-group .btn-default { + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c; +} + +.dt-buttons.btn-group .btn-default:hover { + color: #fff; + background-color: #449d44; + border-color: #398439; + +} + +table{ + margin: 0 auto; + width: 100%; + clear: both; + border-collapse: collapse; + table-layout: fixed; + word-wrap:break-word; +} + +.entryEditorMainRow { + width: 83% !important; +} + +.fieldDataEntryEditor { + width: 60%; + font-size: 13px; + margin: 25px; +} + +.fieldDataEntryEditor .fieldLabel { + box-shadow: 0px 0px 3px 0px rgba(119, 119, 119, 0.5); + -moz-box-shadow: 0px 0px 3px 0px rgba(119, 119, 119, 0.5); + -webkit-box-shadow: 0px 0px 3px 0px rgba(119, 119, 119, 0.5); + padding: 10px; + background: #bbdefb; + color: #000; + margin-bottom: 0px; +} + +.fieldDataEntryEditor .fieldValue { + background: #f9f9f9; + padding: 10px; + overflow-y: auto; +} + +.fieldDataEntryEditor .fieldLabel strong{ + font-weight: 900; + font-size: 18px; +} + +.InfoContEntryEditor { + width: 30%; +} + +@media print { + #adminmenumain { display: none; } + #formInfoContEntryEditor { display: none; } + .navBarActionsLi { display: none; } + .InfoContEntryEditor,.fieldDataEntryEditor{ clear: both !important; float: left !important; } + .fieldDataEntryEditor { + width: 100%; + font-size: 13px; + margin: 0px; + } + #smuzform-cont{ border: 0px; margin: 0px; } +} \ No newline at end of file diff --git a/plugins/contact-form-add/admin/assets/css/index.php b/plugins/contact-form-add/admin/assets/css/index.php new file mode 100644 index 0000000..e69de29 diff --git a/plugins/contact-form-add/admin/assets/css/notification/notification-manager.css b/plugins/contact-form-add/admin/assets/css/notification/notification-manager.css new file mode 100644 index 0000000..6ce7521 --- /dev/null +++ b/plugins/contact-form-add/admin/assets/css/notification/notification-manager.css @@ -0,0 +1,150 @@ +/* Non-responsive overrides + * + * Utilitze the following CSS to disable the responsive-ness of the container, + * grid system, and navbar. + */ + +/* Reset the container */ +.container { + width: 1200px; + max-width: none !important; +} + +/* Demonstrate the grids */ +.col-xs-4 { + padding-top: 15px; + padding-bottom: 15px; + background-color: #eee; + background-color: rgba(86,61,124,.15); + border: 1px solid #ddd; + border: 1px solid rgba(86,61,124,.2); +} + +.container .navbar-header, +.container .navbar-collapse { + margin-right: 0; + margin-left: 0; +} + +/* Always float the navbar header */ +.navbar-header { + float: left; +} + +/* Undo the collapsing navbar */ +.navbar-collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; +} + +.navbar-toggle { + display: none; +} +.navbar-collapse { + border-top: 0; +} + +.navbar-brand { + margin-left: -15px; +} + +/* Always apply the floated nav */ +.navbar-nav { + float: left; + margin: 0; +} +.navbar-nav > li { + float: left; +} +.navbar-nav > li > a { + padding: 15px; +} + +/* Redeclare since we override the float above */ +.navbar-nav.navbar-right { + float: right; +} + +/* Undo custom dropdowns */ +.navbar .navbar-nav .open .dropdown-menu { + position: absolute; + float: left; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .15); + border-width: 0 1px 1px; + border-radius: 0 0 4px 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); +} +.navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #333; +} +.navbar .navbar-nav .open .dropdown-menu > li > a:hover, +.navbar .navbar-nav .open .dropdown-menu > li > a:focus, +.navbar .navbar-nav .open .dropdown-menu > .active > a, +.navbar .navbar-nav .open .dropdown-menu > .active > a:hover, +.navbar .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff !important; + background-color: #428bca !important; +} +.navbar .navbar-nav .open .dropdown-menu > .disabled > a, +.navbar .navbar-nav .open .dropdown-menu > .disabled > a:hover, +.navbar .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #999 !important; + background-color: transparent !important; +} + +#smuzform-cont { + +} + +#addNewNotificationButton, #saveNotificationButton { + height: 50px; + text-align: center; + vertical-align: middle; + display: table-cell; + width: 250px; + font-size: 18px; + font-weight: bold; + margin-left: 10px; +} + +#addNewNotificationButtonCont, #notificationTypeSelectCont { + width: 600px; + margin: 25px; +} + +#notificationTypeSelect { + width: 300px; + height: 50px; + font-size: 18px; +} + +label[for="notificationTypeSelect"] { + margin-right: 10px; + font-size: 18px; +} + +.panel-group { + width: 87%; +} + +.inlineLabel { + margin-right: 10px; + width: 100px; +} + +.inlineField { + width: 300px !important; +} + +textarea#emailTemplate { + font-family: Monaco,monospace; +} + +#emailRightSidebarCont { + width: 65%; +} \ No newline at end of file diff --git a/plugins/contact-form-add/admin/assets/css/style.css b/plugins/contact-form-add/admin/assets/css/style.css new file mode 100644 index 0000000..a3bcbf4 --- /dev/null +++ b/plugins/contact-form-add/admin/assets/css/style.css @@ -0,0 +1,338 @@ +.sk-circle{margin:40px auto;width:40px;height:40px;position:relative}.sk-circle .sk-child{width:100%;height:100%;position:absolute;left:0;top:0}.sk-circle .sk-child:before{content:'';display:block;margin:0 auto;width:15%;height:15%;background-color:#333;border-radius:100%;-webkit-animation:sk-circleBounceDelay 1.2s infinite ease-in-out both;animation:sk-circleBounceDelay 1.2s infinite ease-in-out both}.sk-circle .sk-circle2{-webkit-transform:rotate(30deg);-ms-transform:rotate(30deg);transform:rotate(30deg)}.sk-circle .sk-circle3{-webkit-transform:rotate(60deg);-ms-transform:rotate(60deg);transform:rotate(60deg)}.sk-circle .sk-circle4{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.sk-circle .sk-circle5{-webkit-transform:rotate(120deg);-ms-transform:rotate(120deg);transform:rotate(120deg)}.sk-circle .sk-circle6{-webkit-transform:rotate(150deg);-ms-transform:rotate(150deg);transform:rotate(150deg)}.sk-circle .sk-circle7{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.sk-circle .sk-circle8{-webkit-transform:rotate(210deg);-ms-transform:rotate(210deg);transform:rotate(210deg)}.sk-circle .sk-circle9{-webkit-transform:rotate(240deg);-ms-transform:rotate(240deg);transform:rotate(240deg)}.sk-circle .sk-circle10{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.sk-circle .sk-circle11{-webkit-transform:rotate(300deg);-ms-transform:rotate(300deg);transform:rotate(300deg)}.sk-circle .sk-circle12{-webkit-transform:rotate(330deg);-ms-transform:rotate(330deg);transform:rotate(330deg)}.sk-circle .sk-circle2:before{-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.sk-circle .sk-circle3:before{-webkit-animation-delay:-1s;animation-delay:-1s}.sk-circle .sk-circle4:before{-webkit-animation-delay:-.9s;animation-delay:-.9s}.sk-circle .sk-circle5:before{-webkit-animation-delay:-.8s;animation-delay:-.8s}.sk-circle .sk-circle6:before{-webkit-animation-delay:-.7s;animation-delay:-.7s}.sk-circle .sk-circle7:before{-webkit-animation-delay:-.6s;animation-delay:-.6s}.sk-circle .sk-circle8:before{-webkit-animation-delay:-.5s;animation-delay:-.5s}.sk-circle .sk-circle9:before{-webkit-animation-delay:-.4s;animation-delay:-.4s}.sk-circle .sk-circle10:before{-webkit-animation-delay:-.3s;animation-delay:-.3s}.sk-circle .sk-circle11:before{-webkit-animation-delay:-.2s;animation-delay:-.2s}.sk-circle .sk-circle12:before{-webkit-animation-delay:-.1s;animation-delay:-.1s}@-webkit-keyframes sk-circleBounceDelay{0%,100%,80%{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes sk-circleBounceDelay{0%,100%,80%{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}} + +/** +remember to change color #f6f6f6 +**/ +#smuzform-cont { + + + margin: 0 auto; + margin-top: 25px; + border: 1px rgb(221, 221, 221) solid; + max-width: 1048px; + box-shadow: 0px 0px 3px 0px rgba(119, 119, 119, 0.5); + -moz-box-shadow: 0px 0px 3px 0px rgba(119, 119, 119, 0.5); + -webkit-box-shadow: 0px 0px 3px 0px rgba(119, 119, 119, 0.5); + background-color: #FFEBD1; + + +} + + +#smuzform-cont .navbar-header { + width: 88% !important; +} + +#smuzform-cont .navbar-header li{ + margin: 0; + padding: 0; +} + +.navBarActionsLi a{ + cursor: pointer; + font-size: 18px; + color: #000 !important; + font-weight: 900; +} + +.navBarActionsLi a:hover { + color: #fff !important; +} + +#smuzform-cont .container { + +} + + +#inline-preview-cont { + + margin-top: 25px; + margin-left: 10px; +} + +.fieldWrap button { + margin-left: 4px; + padding: 4px 8px; + position: relative; + top: -3px; + text-decoration: none; + border: none; + border: 1px solid #ccc; + -webkit-border-radius: 2px; + border-radius: 2px; + background: #f7f7f7; + text-shadow: none; + font-weight: 600; + font-size: 13px; + width: 120px; +} + +.fieldWrap button:hover { + color: #fff; + -webkit-transition-property: border,background,color; + transition-property: border,background,color; + -webkit-transition-duration: .05s; + transition-duration: .05s; + -webkit-transition-timing-function: ease-in-out; + transition-timing-function: ease-in-out; + background-color: #0073ab; +} + +.mainnavbar { + + background-color: #7F93A5; + border-color: transparent; + border-radius: 0px; + margin-bottom: 0px; + +} + +.mainnavbar .navbar-brand { + + color: #fff; + +} +.smuzform-settings { + + background-color: #FFEBD1; + border-color: rgb(250, 235, 204); + padding-right: 0; + +} + +.smuzform-preview { + background: #fff; + width: 655px; +} + +#fields { + + list-style: none; + margin-top: 15px; + +} + +#fields .field { + + width: 40%; + float: left; +} + +.form-group { + padding: 5px; +} + +li.selected { + border: 2px dotted #5b9dd9; + + cursor: move; +} + +.selected .removeMeField { + + display: block !important; + width: 30px; + +} + +#noFieldsMessage p:after { + content: "No Fields in the form. You should Add some fields by clicking on the field buttons."; +} + +ul.collection-list { + margin: 0; + padding: 0; + list-style-type: none; + outline: none; + cursor: pointer; +} + +.form-inline .form-group{ + margin-right: 40px; +} + +.form-inline .checkbox { + display: block; +} + + +.field-cont-type label, .field-cont-size label, .field-cont-options-label, .form-cont-lang label, .form-cont-placement label { + display: block; +} + +label.required:after { + content:"*"; + color:red; +} + +.fieldLineBreakView { + padding: 5px; +} + +.fieldSize-small { + width: 25%; +} + +.fieldSize-medium { + width: 50%; +} + +.fieldSize-large { + width: 100%; +} + +.createFormBtn, .saveFormBtn { + + background-color: #ddd; + padding: 0; + margin: 0; + width: 107%; + margin-left: -25px; + padding-bottom: 25px; + padding-top: 25px; +} + +#saveForm { + text-align: center; + width: 200px; + height: 50px; + line-height: 50px; + position: relative; + left: 35%; + color: #000; + background-color: #58927B; + font-weight: bold; + font-size: 16px; +} + +#saveForm:hover { + background-color: #6DA08B; +} + +#serverModalCont { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: black; + opacity: 0.8; + z-index: 99999; + display: none; +} + +#serverModalCont p{ + position: relative; + top: 50%; + left: 50%; + color: #fff; + font-size: 25px; + font-weight: bold; +} + +#wpfooter{ + margin-top: 25px; + color: #000; +} + +#wpcontent { + background-color: #fff; +} + +.nameFieldLabelInline { + font-weight: normal; + margin-top: -30px; +} + +.nameFieldRow, .addressFieldRow { + margin-right: 0px; + margin-left: 0px; +} + +.nameFieldRow .form-group { + padding: 0px; + margin-bottom: 0px; + padding-right: 10px; +} + +.addressFieldRow .form-group { + padding: 0px; + margin-bottom: 0px; + padding-right: 10px; +} + +#formFieldsCont input { + cursor: pointer !important; +} + +input[type=number], input[type=url] { + height: 34px; +} + +.headingFieldFeature { + padding: 5px 0px 5px 0 ; + clear: both; +} + +.ruleInlineCont { + margin-top: 10px; +} + +.ruleInlineCont input, .ruleInlineCont select, .ruleInlineCont strong { + margin-right: 5px; +} + +#ruleFields, #ruleFieldAction { + width: 45%; +} + +#ruleFieldLogicValue { + width: 60%; +} + +#ruleFieldAction { + width: 30%; +} + +#fieldSettingsCont { + margin-right: 4px; +} + +#fieldSettingsForm input[type="text"], #fieldSettingsForm input[type="number"], #fieldSettingsForm input[type="select"]{ + font-size: 12px; + height: 30px; +} + +#formSettingsForm input[type="text"], #formSettingsForm input[type="number"], #formSettingsForm input[type="select"]{ + font-size: 12px; + height: 30px; +} + +#formShortcodeFunc, #formShortcode { + font-family: Monaco,monospace; +} + +#fieldRulesCont { + margin-top: 15px; +} + +textarea#customHtmlSource, #fieldCssClasses { + font-family: Monaco,monospace; +} + +.smuzform-settings .nav-tabs { + margin-top: 15px; +} + +.form-title{ + font-weight: bold; +} + +.loadingSpinner { + position: absolute; + top: 46%; + left: 60%; +} +.loadingSpinner .sk-child:before { + background-color: #ffffff; +} \ No newline at end of file diff --git a/plugins/contact-form-add/admin/assets/css/style/style-manager.css b/plugins/contact-form-add/admin/assets/css/style/style-manager.css new file mode 100644 index 0000000..ad0aded --- /dev/null +++ b/plugins/contact-form-add/admin/assets/css/style/style-manager.css @@ -0,0 +1,20 @@ +.smuzform-style-settings { + padding: 0; + margin: 0; + margin-top: 30px; + padding-right: 10px; +} + +#formStyleCont input[type="text"], #formStyleCont input[type="number"], #formStyleCont input[type="select"] { + font-size: 12px; + height: 30px; +} + +#formStyleCont .wp-picker-container { + display: block; +} + +.smuzform-preview { + background: #fff; + width: 650px; +} \ No newline at end of file diff --git a/plugins/contact-form-add/admin/assets/fonts/glyphicons-halflings-regular.eot b/plugins/contact-form-add/admin/assets/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000..b93a495 Binary files /dev/null and b/plugins/contact-form-add/admin/assets/fonts/glyphicons-halflings-regular.eot differ diff --git a/plugins/contact-form-add/admin/assets/fonts/glyphicons-halflings-regular.svg b/plugins/contact-form-add/admin/assets/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 0000000..94fb549 --- /dev/null +++ b/plugins/contact-form-add/admin/assets/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/contact-form-add/admin/assets/fonts/glyphicons-halflings-regular.ttf b/plugins/contact-form-add/admin/assets/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000..1413fc6 Binary files /dev/null and b/plugins/contact-form-add/admin/assets/fonts/glyphicons-halflings-regular.ttf differ diff --git a/plugins/contact-form-add/admin/assets/fonts/glyphicons-halflings-regular.woff b/plugins/contact-form-add/admin/assets/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 0000000..9e61285 Binary files /dev/null and b/plugins/contact-form-add/admin/assets/fonts/glyphicons-halflings-regular.woff differ diff --git a/plugins/contact-form-add/admin/assets/fonts/glyphicons-halflings-regular.woff2 b/plugins/contact-form-add/admin/assets/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000..64539b5 Binary files /dev/null and b/plugins/contact-form-add/admin/assets/fonts/glyphicons-halflings-regular.woff2 differ diff --git a/plugins/contact-form-add/admin/assets/img/index.php b/plugins/contact-form-add/admin/assets/img/index.php new file mode 100644 index 0000000..e69de29 diff --git a/plugins/contact-form-add/admin/assets/img/wp_smf_delete_form_img.png b/plugins/contact-form-add/admin/assets/img/wp_smf_delete_form_img.png new file mode 100644 index 0000000..d30f110 Binary files /dev/null and b/plugins/contact-form-add/admin/assets/img/wp_smf_delete_form_img.png differ diff --git a/plugins/contact-form-add/admin/assets/img/wp_smf_edit_form_img.png b/plugins/contact-form-add/admin/assets/img/wp_smf_edit_form_img.png new file mode 100644 index 0000000..7c06354 Binary files /dev/null and b/plugins/contact-form-add/admin/assets/img/wp_smf_edit_form_img.png differ diff --git a/plugins/contact-form-add/admin/assets/img/wp_smf_preview_slider_img.png.png b/plugins/contact-form-add/admin/assets/img/wp_smf_preview_slider_img.png.png new file mode 100644 index 0000000..bd025c7 Binary files /dev/null and b/plugins/contact-form-add/admin/assets/img/wp_smf_preview_slider_img.png.png differ diff --git a/plugins/contact-form-add/admin/assets/index.php b/plugins/contact-form-add/admin/assets/index.php new file mode 100644 index 0000000..e69de29 diff --git a/plugins/contact-form-add/admin/assets/js/backbone.min.js b/plugins/contact-form-add/admin/assets/js/backbone.min.js new file mode 100644 index 0000000..cb95bef --- /dev/null +++ b/plugins/contact-form-add/admin/assets/js/backbone.min.js @@ -0,0 +1,10 @@ +(function(t){var e=typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;if(typeof define==="function"&&define.amd){define(["underscore","jquery","exports"],function(i,r,n){e.Backbone=t(e,n,i,r)})}else if(typeof exports!=="undefined"){var i=require("underscore"),r;try{r=require("jquery")}catch(n){}t(e,exports,i,r)}else{e.Backbone=t(e,{},e._,e.jQuery||e.Zepto||e.ender||e.$)}})(function(t,e,i,r){var n=t.Backbone;var s=Array.prototype.slice;e.VERSION="1.3.2";e.$=r;e.noConflict=function(){t.Backbone=n;return this};e.emulateHTTP=false;e.emulateJSON=false;var a=function(t,e,r){switch(t){case 1:return function(){return i[e](this[r])};case 2:return function(t){return i[e](this[r],t)};case 3:return function(t,n){return i[e](this[r],o(t,this),n)};case 4:return function(t,n,s){return i[e](this[r],o(t,this),n,s)};default:return function(){var t=s.call(arguments);t.unshift(this[r]);return i[e].apply(i,t)}}};var h=function(t,e,r){i.each(e,function(e,n){if(i[n])t.prototype[n]=a(e,n,r)})};var o=function(t,e){if(i.isFunction(t))return t;if(i.isObject(t)&&!e._isModel(t))return u(t);if(i.isString(t))return function(e){return e.get(t)};return t};var u=function(t){var e=i.matches(t);return function(t){return e(t.attributes)}};var l=e.Events={};var c=/\s+/;var f=function(t,e,r,n,s){var a=0,h;if(r&&typeof r==="object"){if(n!==void 0&&"context"in s&&s.context===void 0)s.context=n;for(h=i.keys(r);athis.length)n=this.length;if(n<0)n+=this.length+1;var s=[];var a=[];var h=[];var o=[];var u={};var l=e.add;var c=e.merge;var f=e.remove;var d=false;var v=this.comparator&&n==null&&e.sort!==false;var g=i.isString(this.comparator)?this.comparator:null;var p,m;for(m=0;m7);this._useHashChange=this._wantsHashChange&&this._hasHashChange;this._wantsPushState=!!this.options.pushState;this._hasPushState=!!(this.history&&this.history.pushState);this._usePushState=this._wantsPushState&&this._hasPushState;this.fragment=this.getFragment();this.root=("/"+this.root+"/").replace(O,"/");if(this._wantsHashChange&&this._wantsPushState){if(!this._hasPushState&&!this.atRoot()){var e=this.root.slice(0,-1)||"/";this.location.replace(e+"#"+this.getPath());return true}else if(this._hasPushState&&this.atRoot()){this.navigate(this.getHash(),{replace:true})}}if(!this._hasHashChange&&this._wantsHashChange&&!this._usePushState){this.iframe=document.createElement("iframe");this.iframe.src="javascript:0";this.iframe.style.display="none";this.iframe.tabIndex=-1;var r=document.body;var n=r.insertBefore(this.iframe,r.firstChild).contentWindow;n.document.open();n.document.close();n.location.hash="#"+this.fragment}var s=window.addEventListener||function(t,e){return attachEvent("on"+t,e)};if(this._usePushState){s("popstate",this.checkUrl,false)}else if(this._useHashChange&&!this.iframe){s("hashchange",this.checkUrl,false)}else if(this._wantsHashChange){this._checkUrlInterval=setInterval(this.checkUrl,this.interval)}if(!this.options.silent)return this.loadUrl()},stop:function(){var t=window.removeEventListener||function(t,e){return detachEvent("on"+t,e)};if(this._usePushState){t("popstate",this.checkUrl,false)}else if(this._useHashChange&&!this.iframe){t("hashchange",this.checkUrl,false)}if(this.iframe){document.body.removeChild(this.iframe);this.iframe=null}if(this._checkUrlInterval)clearInterval(this._checkUrlInterval);N.started=false},route:function(t,e){this.handlers.unshift({route:t,callback:e})},checkUrl:function(t){var e=this.getFragment();if(e===this.fragment&&this.iframe){e=this.getHash(this.iframe.contentWindow)}if(e===this.fragment)return false;if(this.iframe)this.navigate(e);this.loadUrl()},loadUrl:function(t){if(!this.matchRoot())return false;t=this.fragment=this.getFragment(t);return i.some(this.handlers,function(e){if(e.route.test(t)){e.callback(t);return true}})},navigate:function(t,e){if(!N.started)return false;if(!e||e===true)e={trigger:!!e};t=this.getFragment(t||"");var i=this.root;if(t===""||t.charAt(0)==="?"){i=i.slice(0,-1)||"/"}var r=i+t;t=this.decodeFragment(t.replace(U,""));if(this.fragment===t)return;this.fragment=t;if(this._usePushState){this.history[e.replace?"replaceState":"pushState"]({},document.title,r)}else if(this._wantsHashChange){this._updateHash(this.location,t,e.replace);if(this.iframe&&t!==this.getHash(this.iframe.contentWindow)){var n=this.iframe.contentWindow;if(!e.replace){n.document.open();n.document.close()}this._updateHash(n.location,t,e.replace)}}else{return this.location.assign(r)}if(e.trigger)return this.loadUrl(t)},_updateHash:function(t,e,i){if(i){var r=t.href.replace(/(javascript:|#).*$/,"");t.replace(r+"#"+e)}else{t.hash="#"+e}}});e.history=new N;var q=function(t,e){var r=this;var n;if(t&&i.has(t,"constructor")){n=t.constructor}else{n=function(){return r.apply(this,arguments)}}i.extend(n,r,e);n.prototype=i.create(r.prototype,t);n.prototype.constructor=n;n.__super__=r.prototype;return n};y.extend=x.extend=$.extend=k.extend=N.extend=q;var F=function(){throw new Error('A "url" property or function must be specified')};var B=function(t,e){var i=e.error;e.error=function(r){if(i)i.call(e.context,t,r,e);t.trigger("error",t,r,e)}};return e}); +//# sourceMappingURL=backbone-min.map +/*! +* Backbone.CollectionView, v1.1.0 +* Copyright (c)2013 Rotunda Software, LLC. +* Distributed under MIT license +* http://github.com/rotundasoftware/backbone-collection-view +*/ + +!function(a,b){"function"==typeof define&&define.amd?define(["underscore","backbone","jquery"],b):"undefined"!=typeof exports?module.exports=b(require("underscore"),require("backbone"),require("backbone").$):b(a._,a.Backbone,a.jQuery||a.Zepto||a.$)}(this,function(a,b,c){function d(b){var c=[];if(!a.isArray(b))throw new Error("Option declarations must be an array.");return a.each(b,function(b){var d,e,f;if(e=!1,f=void 0,a.isString(b))d=b;else{if(!a.isObject(b))throw new Error("Each element in the option declarations array must be either a string or an object.");d=a.first(a.keys(b)),f=a.clone(b[d])}"!"===d[d.length-1]&&(e=!0,d=d.slice(0,d.length-1)),c.push({name:d,required:e,defaultValue:f})}),c}var e=b.View,f="model",g=["collection","modelView","modelViewOptions","itemTemplate","itemTemplateFunction","detachedRendering"],h={background:"transparent",border:"none","box-shadow":"none"};return b.CollectionView=b.View.extend({tagName:"ul",events:{"mousedown > li, tbody > tr > td":"_listItem_onMousedown","dblclick > li, tbody > tr > td":"_listItem_onDoubleClick",click:"_listBackground_onClick","click ul.collection-view, table.collection-view":"_listBackground_onClick",keydown:"_onKeydown"},spawnMessages:{focus:"focus"},passMessages:{"*":"."},initializationOptions:[{collection:null},{modelView:null},{modelViewOptions:{}},{itemTemplate:null},{itemTemplateFunction:null},{selectable:!0},{clickToSelect:!0},{selectableModelsFilter:null},{visibleModelsFilter:null},{sortableModelsFilter:null},{selectMultiple:!1},{clickToToggle:!1},{processKeyEvents:!0},{sortable:!1},{sortableOptions:null},{reuseModelViews:!0},{detachedRendering:!1},{emptyListCaption:null}],initialize:function(a){b.ViewOptions.add(this,"initializationOptions"),this.setOptions(a),this.collection||(this.collection=new b.Collection),this._hasBeenRendered=!1,this._isBackboneCourierAvailable()&&b.Courier.add(this),this.$el.data("view",this),this.$el.addClass("collection-view collection-list"),this.selectable&&this.$el.addClass("selectable"),this.processKeyEvents&&this.$el.attr("tabindex",0),this.selectedItems=[],this._updateItemTemplate(),this.collection&&this._registerCollectionEvents(),this.viewManager=new ChildViewContainer},onOptionsChanged:function(b,c){var d=this,e=!1;a.each(a.keys(b),function(f){var h=b[f],i=c[f];switch(f){case"collection":h!==i&&(d.stopListening(i),d._registerCollectionEvents());break;case"selectMultiple":!h&&d.selectedItems.length>1&&d.setSelectedModel(a.first(d.selectedItems),{by:"cid"});break;case"selectable":!h&&d.selectedItems.length>0&&d.setSelectedModels([]);break;case"sortable":b.sortable?d._setupSortable():d.$el.sortable("destroy");break;case"selectableModelsFilter":d.reapplyFilter("selectableModels");break;case"sortableOptions":d.$el.sortable("destroy"),d._setupSortable();break;case"sortableModelsFilter":d.reapplyFilter("sortableModels");break;case"visibleModelsFilter":d.reapplyFilter("visibleModels");break;case"itemTemplate":d._updateItemTemplate();break;case"processKeyEvents":h&&d.$el.attr("tabindex",0);break;case"modelView":d.viewManager.each(function(a){d.viewManager.remove(a),a.remove()})}a.contains(g,f)&&(e=!0)}),this._hasBeenRendered&&e&&this.render()},setOption:function(a,b){var c={};c[a]=b,this.setOptions(c)},getSelectedModel:function(b){return this.selectedItems.length?a.first(this.getSelectedModels(b)):null},getSelectedModels:function(b){var d=this;b=a.extend({},{by:f},b);var e=b.by,g=[];switch(e){case"id":a.each(this.selectedItems,function(a){g.push(d.collection.get(a).id)});break;case"cid":g=g.concat(this.selectedItems);break;case"offset":var h=0,i=this._getVisibleItemEls();i.each(function(){var a=c(this);a.is(".selected")&&g.push(h),h++});break;case"model":a.each(this.selectedItems,function(a){g.push(d.collection.get(a))});break;case"view":a.each(this.selectedItems,function(a){g.push(d.viewManager.findByModel(d.collection.get(a)))});break;default:throw new Error("Invalid referenceBy option: "+e)}return g},setSelectedModels:function(b,d){if(!a.isArray(b))throw"Invalid parameter value";if(this.selectable||!(b.length>0)){d=a.extend({},{silent:!1,by:f},d);var e=d.by,g=[];switch(e){case"cid":g=b;break;case"id":this.collection.each(function(c){a.contains(b,c.id)&&g.push(c.cid)});break;case"model":g=a.pluck(b,"cid");break;case"view":a.each(b,function(a){g.push(a.model.cid)});break;case"offset":var h=0,i=this._getVisibleItemEls();i.each(function(){var d=c(this);a.contains(b,h)&&g.push(d.attr("data-model-cid")),h++});break;default:throw new Error("Invalid referenceBy option: "+e)}var j=this.getSelectedModels(),k=a.clone(this.selectedItems);this.selectedItems=this._convertStringsToInts(g),this._validateSelection();var l=this.getSelectedModels();this._containSameElements(k,this.selectedItems)||(this._addSelectedClassToSelectedItems(k),d.silent||(this._isBackboneCourierAvailable()?this.spawn("selectionChanged",{selectedModels:l,oldSelectedModels:j}):this.trigger("selectionChanged",l,j)),this.updateDependentControls())}},setSelectedModel:function(a,b){a||0===a?this.setSelectedModels([a],b):this.setSelectedModels([],b)},render:function(){this._hasBeenRendered=!0,this.selectable&&this._saveSelection();var b;b=this._getContainerEl();var c=this.viewManager;this.viewManager=new ChildViewContainer,c.each(function(a){this.reuseModelViews&&this.collection.get(a.model.cid)?a.$el.detach():a.remove()},this),b.empty();var d;this.detachedRendering&&(d=document.createDocumentFragment()),this.collection.each(function(e){var f=c.findByModelCid(e.cid);(!this.reuseModelViews||a.isUndefined(f))&&(f=this._createNewModelView(e,this._getModelViewOptions(e))),this._insertAndRenderModelView(f,d||b)},this),this.detachedRendering&&b.append(d),this.sortable&&this._setupSortable(),this._showEmptyListCaptionIfAppropriate(),this._isBackboneCourierAvailable()?this.spawn("render"):this.trigger("render"),this.selectable&&(this._restoreSelection(),this.updateDependentControls()),this.forceRerenderOnNextSortEvent=!1},_showEmptyListCaptionIfAppropriate:function(){if(this._removeEmptyListCaption(),this.emptyListCaption){var b=this._getVisibleItemEls();if(0===b.length){var d;d=a.isFunction(this.emptyListCaption)?this.emptyListCaption():this.emptyListCaption;var e,f=c(""+d+"");e=this._isRenderedAsList()?f.wrapAll("
    • ").parent().css(h):f.wrapAll("").parent().parent().css(h),this._getContainerEl().append(e)}}},_removeEmptyListCaption:function(){this._isRenderedAsList()?this._getContainerEl().find("> li > var.empty-list-caption").parent().remove():this._getContainerEl().find("> tr > td > var.empty-list-caption").parent().parent().remove()},_insertAndRenderModelView:function(b,c,d){var e=this._wrapModelView(b);if(11===c.nodeType)c.appendChild(e.get(0));else{var f=c.children().length;!a.isUndefined(d)&&d>=0&&f>d?c.children().eq(d).before(e):(!a.isUndefined(d)&&d>f&&(this.forceRerenderOnNextSortEvent=!0),c.append(e))}var g=b.render();g===!1&&(e.hide(),e.addClass("not-visible"));var h=!1;a.isFunction(this.visibleModelsFilter)&&(h=!this.visibleModelsFilter(b.model)),1===e.children().length?e.toggle(!h):b.$el.toggle(!h),e.toggleClass("not-visible",h),!h&&this.emptyListCaption&&this._removeEmptyListCaption(),this.viewManager.add(b)},updateDependentControls:function(){this._isBackboneCourierAvailable()?this.spawn("updateDependentControls",{selectedModels:this.getSelectedModels()}):this.trigger("updateDependentControls",this.getSelectedModels())},remove:function(){this.viewManager.each(function(a){a.remove()}),b.View.prototype.remove.apply(this,arguments)},reapplyFilter:function(b){var c=this;if(!a.contains(["selectableModels","sortableModels","visibleModels"],b))throw new Error("Invalid filter identifier supplied to reapplyFilter: "+b);switch(b){case"visibleModels":c.viewManager.each(function(a){var b=c.visibleModelsFilter&&!c.visibleModelsFilter.call(c,a.model);a.$el.toggleClass("not-visible",b),c._modelViewHasWrapperLI(a)?a.$el.closest("li").toggleClass("not-visible",b).toggle(!b):a.$el.toggle(!b)}),this._showEmptyListCaptionIfAppropriate();break;case"sortableModels":c.$el.sortable("destroy"),c.viewManager.each(function(a){var b=c.sortableModelsFilter&&!c.sortableModelsFilter.call(c,a.model);a.$el.toggleClass("not-sortable",b),c._modelViewHasWrapperLI(a)&&a.$el.closest("li").toggleClass("not-sortable",b)}),c._setupSortable();break;case"selectableModels":c.viewManager.each(function(a){var b=c.selectableModelsFilter&&!c.selectableModelsFilter.call(c,a.model);a.$el.toggleClass("not-selectable",b),c._modelViewHasWrapperLI(a)&&a.$el.closest("li").toggleClass("not-selectable",b)}),c._validateSelection()}},_removeModelView:function(a){this.selectable&&this._saveSelection(),this.viewManager.remove(a),this._modelViewHasWrapperLI(a)&&a.$el.parent().remove(),a.remove(),this.selectable&&this._restoreSelection(),this._showEmptyListCaptionIfAppropriate()},_validateSelectionAndRender:function(){this._validateSelection(),this.render()},_registerCollectionEvents:function(){this.listenTo(this.collection,"add",function(a){var b;this._hasBeenRendered&&(b=this._createNewModelView(a,this._getModelViewOptions(a)),this._insertAndRenderModelView(b,this._getContainerEl(),this.collection.indexOf(a))),this._isBackboneCourierAvailable()?this.spawn("add",b):this.trigger("add",b)}),this.listenTo(this.collection,"remove",function(a){var b;this._hasBeenRendered&&(b=this.viewManager.findByModelCid(a.cid),this._removeModelView(b)),this._isBackboneCourierAvailable()?this.spawn("remove"):this.trigger("remove")}),this.listenTo(this.collection,"reset",function(){this._hasBeenRendered&&this.render(),this._isBackboneCourierAvailable()?this.spawn("reset"):this.trigger("reset")}),this.listenTo(this.collection,"sort",function(a,b){this._hasBeenRendered&&(b.add!==!0||this.forceRerenderOnNextSortEvent)&&this.render(),this._isBackboneCourierAvailable()?this.spawn("sort"):this.trigger("sort")})},_getContainerEl:function(){if(this._isRenderedAsTable()){var a=this.$el.find("> tbody");if(a.length>0)return a}return this.$el},_getClickedItemId:function(a){var b=null,d=c(a.currentTarget);if(d.closest(".collection-view").get(0)===this.$el.get(0)){var e=d.closest("[data-model-cid]");return e.length>0&&(b=e.attr("data-model-cid"),c.isNumeric(b)&&(b=parseInt(b,10))),b}},_updateItemTemplate:function(){var b;if(this.itemTemplate){if(0===c(this.itemTemplate).length)throw"Could not find item template from selector: "+this.itemTemplate;b=c(this.itemTemplate).html()}else b=this.$(".item-template").html();b&&(this.itemTemplateFunction=a.template(b))},_validateSelection:function(){var b=a.pluck(this.collection.models,"cid");this.selectedItems=a.intersection(b,this.selectedItems),a.isFunction(this.selectableModelsFilter)&&(this.selectedItems=a.filter(this.selectedItems,function(a){return this.selectableModelsFilter.call(this,this.collection.get(a))},this))},_saveSelection:function(){if(!this.selectable)throw"Attempt to save selection on non-selectable list";this.savedSelection={items:a.clone(this.selectedItems),offset:this.getSelectedModel({by:"offset"})}},_restoreSelection:function(){if(!this.savedSelection)throw"Attempt to restore selection but no selection has been saved!";this.setSelectedModels([],{silent:!0}),this.savedSelection.items.length>0&&(this.setSelectedModels(this.savedSelection.items,{by:"cid",silent:!0}),0===this.selectedItems.length&&this.setSelectedModel(this.savedSelection.offset,{by:"offset"}),this.selectedItems.length!==this.savedSelection.items.length&&(this._isBackboneCourierAvailable()?this.spawn("selectionChanged",{selectedModels:this.getSelectedModels(),oldSelectedModels:[]}):this.trigger("selectionChanged",this.getSelectedModels(),[]))),delete this.savedSelection},_addSelectedClassToSelectedItems:function(b){a.isUndefined(b)&&(b=[]);var c=b;c=a.without(c,this.selectedItems),a.each(c,function(a){this._getContainerEl().find("[data-model-cid="+a+"]").removeClass("selected"),this._isRenderedAsList()&&this._getContainerEl().find("li[data-model-cid="+a+"] > *").removeClass("selected")},this);var d=this.selectedItems;d=a.without(d,b),a.each(d,function(a){this._getContainerEl().find("[data-model-cid="+a+"]").addClass("selected"),this._isRenderedAsList()&&this._getContainerEl().find("li[data-model-cid="+a+"] > *").addClass("selected")},this)},_reorderCollectionBasedOnHTML:function(){var a=this;this._getContainerEl().children().each(function(){var b=c(this).attr("data-model-cid");if(b){var d=a.collection.get(b);d&&(a.collection.remove(d,{silent:!0}),a.collection.add(d,{silent:!0,sort:!a.collection.comparator}))}}),this._isBackboneCourierAvailable()?this.spawn("reorder"):this.collection.trigger("reorder"),this.collection.comparator&&this.collection.sort()},_getModelViewConstructor:function(a){return this.modelView||e},_getModelViewOptions:function(b){var c=this.modelViewOptions;return a.isFunction(c)&&(c=c(b)),a.extend({model:b},c)},_createNewModelView:function(b,c){var d=this._getModelViewConstructor(b);if(a.isUndefined(d))throw"Could not find modelView constructor for model";var e=new d(c);return e.collectionListView=e.collectionView=this,e},_wrapModelView:function(b){var c,d=this;return this._isRenderedAsTable()?(c=b.$el,b.$el.attr("data-model-cid",b.model.cid)):this._isRenderedAsList()&&(b.$el.is("li")?(c=b.$el,b.$el.attr("data-model-cid",b.model.cid)):c=b.$el.wrapAll("
    • ").parent()),a.isFunction(this.sortableModelsFilter)&&(this.sortableModelsFilter.call(d,b.model)||(c.addClass("not-sortable"),b.$el.addClass("not-selectable"))),a.isFunction(this.selectableModelsFilter)&&(this.selectableModelsFilter.call(d,b.model)||(c.addClass("not-selectable"),b.$el.addClass("not-selectable"))),c},_convertStringsToInts:function(b){return a.map(b,function(b){if(!a.isString(b))return b;var c=parseInt(b,10);return c==b?c:b})},_containSameElements:function(b,c){if(b.length!=c.length)return!1;var d=a.intersection(b,c).length;return d==b.length},_isRenderedAsTable:function(){return"table"===this.$el.prop("tagName").toLowerCase()},_isRenderedAsList:function(){return!this._isRenderedAsTable()},_modelViewHasWrapperLI:function(a){return this._isRenderedAsList()&&!a.$el.is("li")},_getVisibleItemEls:function(){var a=[];return a=this._getContainerEl().find("> [data-model-cid]:not(.not-visible)")},_charCodes:{upArrow:38,downArrow:40},_isBackboneCourierAvailable:function(){return!a.isUndefined(b.Courier)},_setupSortable:function(){var b=a.extend({axis:"y",distance:10,forcePlaceholderSize:!0,items:this._isRenderedAsTable()?"> tbody > tr:not(.not-sortable)":"> li:not(.not-sortable)",start:a.bind(this._sortStart,this),change:a.bind(this._sortChange,this),stop:a.bind(this._sortStop,this),receive:a.bind(this._receive,this),over:a.bind(this._over,this)},a.result(this,"sortableOptions"));this.$el=this.$el.sortable(b)},_sortStart:function(a,b){var c=this.collection.get(b.item.attr("data-model-cid"));this._isBackboneCourierAvailable()?this.spawn("sortStart",{modelBeingSorted:c}):this.trigger("sortStart",c)},_sortChange:function(a,b){var c=this.collection.get(b.item.attr("data-model-cid"));this._isBackboneCourierAvailable()?this.spawn("sortChange",{modelBeingSorted:c}):this.trigger("sortChange",c)},_sortStop:function(a,b){var c=this.collection.get(b.item.attr("data-model-cid")),d=this._getContainerEl(),e=d.children().index(b.item);-1==e&&c&&this.collection.remove(c),c&&(this._reorderCollectionBasedOnHTML(),this.updateDependentControls(),this._isBackboneCourierAvailable()?this.spawn("sortStop",{modelBeingSorted:c,newIndex:e}):this.trigger("sortStop",c,e))},_receive:function(a,b){var c=b.sender,d=c.data("view");if(d&&d.collection){var e=this._getContainerEl().children().index(b.item),f=d.collection.get(b.item.attr("data-model-cid"));d.collection.remove(f),this.collection.add(f,{at:e}),f.collection=this.collection,this.setSelectedModel(f)}},_over:function(a,b){this._getContainerEl().find("> var.empty-list-caption").hide()},_onKeydown:function(a){if(!this.processKeyEvents)return!0;var b=!1;if(1==this.getSelectedModels({by:"offset"}).length){var c=this.getSelectedModel({by:"offset"});a.which===this._charCodes.upArrow&&0!==c?(this.setSelectedModel(c-1,{by:"offset"}),b=!0):a.which===this._charCodes.downArrow&&c!==this.collection.length-1&&(this.setSelectedModel(c+1,{by:"offset"}),b=!0)}return!b},_listItem_onMousedown:function(b){if(this.selectable&&this.clickToSelect){var c=this._getClickedItemId(b);if(c){if(a.isFunction(this.selectableModelsFilter)&&!this.selectableModelsFilter.call(this,this.collection.get(c)))return;if(this.selectMultiple&&b.shiftKey){var d=-1;this.selectedItems.length>0&&this.collection.find(function(b){return d++,a.contains(this.selectedItems,b.cid)},this);var e=-1;this.collection.find(function(a){return e++,a.cid==c},this);for(var f=-1==d?e:d,g=Math.min(e,f),h=Math.max(e,f),i=[],j=g;h>=j;j++)i.push(this.collection.at(j).cid);if(this.setSelectedModels(i,{by:"cid"}),document.selection&&document.selection.empty)document.selection.empty();else if(window.getSelection){var k=window.getSelection();k&&k.removeAllRanges&&k.removeAllRanges()}}else(this.selectMultiple||a.contains(this.selectedItems,c))&&(this.clickToToggle||b.metaKey||b.ctrlKey)?a.contains(this.selectedItems,c)?this.setSelectedModels(a.without(this.selectedItems,c),{by:"cid"}):this.setSelectedModels(a.union(this.selectedItems,[c]),{by:"cid"}):this.setSelectedModels([c],{by:"cid"})}else this.setSelectedModels([])}},_listItem_onDoubleClick:function(a){var b=this._getClickedItemId(a);if(b){var c=this.collection.get(b);this._isBackboneCourierAvailable()?this.spawn("doubleClick",{clickedModel:c}):this.trigger("doubleClick",c)}},_listBackground_onClick:function(a){this.selectable&&c(a.target).is(".collection-view")&&this.setSelectedModels([])}},{setDefaultModelViewConstructor:function(a){e=a}}),b.ViewOptions={},b.ViewOptions.add=function(b,c){a.isUndefined(c)&&(c="options"),b.setOptions=function(b){var e=this,f={},g={},h=a.result(this,c);if(!a.isUndefined(h)){var i=d(h);a.each(i,function(c){if(thisOptionName=c.name,thisOptionRequired=c.required,thisOptionDefaultValue=c.defaultValue,thisOptionRequired&&(!b||!a.contains(a.keys(b),thisOptionName)&&a.isUndefined(e[thisOptionName])||a.isUndefined(b[thisOptionName])))throw new Error('Required option "'+thisOptionName+'" was not supplied.');b&&thisOptionName in b?(a.isUndefined(e[thisOptionName])||(g[thisOptionName]=e[thisOptionName],f[thisOptionName]=b[thisOptionName]),e[thisOptionName]=b[thisOptionName]):!a.isUndefined(thisOptionDefaultValue)&&a.isUndefined(e[thisOptionName])&&(e[thisOptionName]=thisOptionDefaultValue)})}a.keys(f).length>0&&(a.isFunction(e.onOptionsChanged)?e.onOptionsChanged(f,g):a.isFunction(e._onOptionsChanged)&&e._onOptionsChanged(f,g))},b.getOptions=function(){var b=a.result(this,c);if(a.isUndefined(b))return[];var e=d(b),f=a.pluck(e,"name");return a.pick(this,f)}},ChildViewContainer=function(a,b){var c=function(a){this._views={},this._indexByModel={},this._indexByCustom={},this._updateLength(),b.each(a,this.add,this)};b.extend(c.prototype,{add:function(a,b){var c=a.cid;this._views[c]=a,a.model&&(this._indexByModel[a.model.cid]=c),b&&(this._indexByCustom[b]=c),this._updateLength()},findByModel:function(a){return this.findByModelCid(a.cid)},findByModelCid:function(a){var b=this._indexByModel[a];return this.findByCid(b)},findByCustom:function(a){var b=this._indexByCustom[a];return this.findByCid(b)},findByIndex:function(a){return b.values(this._views)[a]},findByCid:function(a){return this._views[a]},findIndexByCid:function(a){var c=-1,d=b.find(this._views,function(b){return c++,b.model.cid==a?b:void 0});return d?c:-1},remove:function(a){var c=a.cid;a.model&&delete this._indexByModel[a.model.cid],b.any(this._indexByCustom,function(a,b){return a===c?(delete this._indexByCustom[b],!0):void 0},this),delete this._views[c],this._updateLength()},call:function(a){this.apply(a,b.tail(arguments))},apply:function(a,c){b.each(this._views,function(d){b.isFunction(d[a])&&d[a].apply(d,c||[])})},_updateLength:function(){this.length=b.size(this._views)}});var d=["forEach","each","map","find","detect","filter","select","reject","every","all","some","any","include","contains","invoke","toArray","first","initial","rest","last","without","isEmpty","pluck"];return b.each(d,function(a){c.prototype[a]=function(){var c=b.values(this._views),d=[c].concat(b.toArray(arguments));return b[a].apply(b,d)}}),c}(b,a),b.CollectionView}); \ No newline at end of file diff --git a/plugins/contact-form-add/admin/assets/js/bootstrap.min.js b/plugins/contact-form-add/admin/assets/js/bootstrap.min.js new file mode 100644 index 0000000..e79c065 --- /dev/null +++ b/plugins/contact-form-add/admin/assets/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.3.6 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under the MIT license + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>2)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.6",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.6",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.6",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.6",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.6",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
      ',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.6",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.6",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.6",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/plugins/contact-form-add/admin/assets/js/entry/datatables.min.js b/plugins/contact-form-add/admin/assets/js/entry/datatables.min.js new file mode 100644 index 0000000..86573d8 --- /dev/null +++ b/plugins/contact-form-add/admin/assets/js/entry/datatables.min.js @@ -0,0 +1,335 @@ +/* + * This combined file was created by the DataTables downloader builder: + * https://datatables.net/download + * + * To rebuild or modify this file with the latest versions of the included + * software please visit: + * https://datatables.net/download/#bs-3.3.6/dt-1.10.11,b-1.1.2,b-colvis-1.1.2,b-html5-1.1.2,b-print-1.1.2,cr-1.3.1,se-1.1.2 + * + * Included libraries: + * Bootstrap 3.3.6, DataTables 1.10.11, Buttons 1.1.2, Column visibility 1.1.2, HTML5 export 1.1.2, Print view 1.1.2, ColReorder 1.3.1, Select 1.1.2 + */ + +/*! + * Bootstrap v3.3.6 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under the MIT license + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>2)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.6",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.6",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.6",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.6",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.6",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
      ',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.6",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.6",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.6",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); + +/*! + DataTables 1.10.11 + ©2008-2015 SpryMedia Ltd - datatables.net/license +*/ +(function(h){"function"===typeof define&&define.amd?define(["jquery"],function(D){return h(D,window,document)}):"object"===typeof exports?module.exports=function(D,I){D||(D=window);I||(I="undefined"!==typeof window?require("jquery"):require("jquery")(D));return h(I,D,D.document)}:h(jQuery,window,document)})(function(h,D,I,k){function Y(a){var b,c,d={};h.each(a,function(e){if((b=e.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" "))c=e.replace(b[0],b[2].toLowerCase()), +d[c]=e,"o"===b[1]&&Y(a[e])});a._hungarianMap=d}function K(a,b,c){a._hungarianMap||Y(a);var d;h.each(b,function(e){d=a._hungarianMap[e];if(d!==k&&(c||b[d]===k))"o"===d.charAt(0)?(b[d]||(b[d]={}),h.extend(!0,b[d],b[e]),K(a[d],b[d],c)):b[d]=b[e]})}function Fa(a){var b=m.defaults.oLanguage,c=a.sZeroRecords;!a.sEmptyTable&&(c&&"No data available in table"===b.sEmptyTable)&&E(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&(c&&"Loading..."===b.sLoadingRecords)&&E(a,a,"sZeroRecords","sLoadingRecords"); +a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&db(a)}function eb(a){A(a,"ordering","bSort");A(a,"orderMulti","bSortMulti");A(a,"orderClasses","bSortClasses");A(a,"orderCellsTop","bSortCellsTop");A(a,"order","aaSorting");A(a,"orderFixed","aaSortingFixed");A(a,"paging","bPaginate");A(a,"pagingType","sPaginationType");A(a,"pageLength","iDisplayLength");A(a,"searching","bFilter");"boolean"===typeof a.sScrollX&&(a.sScrollX=a.sScrollX?"100%":"");"boolean"===typeof a.scrollX&&(a.scrollX= +a.scrollX?"100%":"");if(a=a.aoSearchCols)for(var b=0,c=a.length;b").css({position:"fixed",top:0,left:0,height:1,width:1,overflow:"hidden"}).append(h("
      ").css({position:"absolute",top:1,left:1, +width:100,overflow:"scroll"}).append(h("
      ").css({width:"100%",height:10}))).appendTo("body"),d=c.children(),e=d.children();b.barWidth=d[0].offsetWidth-d[0].clientWidth;b.bScrollOversize=100===e[0].offsetWidth&&100!==d[0].clientWidth;b.bScrollbarLeft=1!==Math.round(e.offset().left);b.bBounding=c[0].getBoundingClientRect().width?!0:!1;c.remove()}h.extend(a.oBrowser,m.__browser);a.oScroll.iBarWidth=m.__browser.barWidth}function hb(a,b,c,d,e,f){var g,j=!1;c!==k&&(g=c,j=!0);for(;d!==e;)a.hasOwnProperty(d)&& +(g=j?b(g,a[d],d,a):a[d],j=!0,d+=f);return g}function Ga(a,b){var c=m.defaults.column,d=a.aoColumns.length,c=h.extend({},m.models.oColumn,c,{nTh:b?b:I.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;c[d]=h.extend({},m.models.oSearch,c[d]);ja(a,d,h(b).data())}function ja(a,b,c){var b=a.aoColumns[b],d=a.oClasses,e=h(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=e.attr("width")||null;var f= +(e.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);f&&(b.sWidthOrig=f[1])}c!==k&&null!==c&&(fb(c),K(m.defaults.column,c),c.mDataProp!==k&&!c.mData&&(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),h.extend(b,c),E(b,c,"sWidth","sWidthOrig"),c.iDataSort!==k&&(b.aDataSort=[c.iDataSort]),E(b,c,"aDataSort"));var g=b.mData,j=Q(g),i=b.mRender?Q(b.mRender):null,c=function(a){return"string"===typeof a&&-1!==a.indexOf("@")};b._bAttrSrc=h.isPlainObject(g)&& +(c(g.sort)||c(g.type)||c(g.filter));b._setter=null;b.fnGetData=function(a,b,c){var d=j(a,b,k,c);return i&&b?i(d,b,a,c):d};b.fnSetData=function(a,b,c){return R(g)(a,b,c)};"number"!==typeof g&&(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,e.addClass(d.sSortableNone));a=-1!==h.inArray("asc",b.asSorting);c=-1!==h.inArray("desc",b.asSorting);!b.bSortable||!a&&!c?(b.sSortingClass=d.sSortableNone,b.sSortingClassJUI=""):a&&!c?(b.sSortingClass=d.sSortableAsc,b.sSortingClassJUI=d.sSortJUIAscAllowed): +!a&&c?(b.sSortingClass=d.sSortableDesc,b.sSortingClassJUI=d.sSortJUIDescAllowed):(b.sSortingClass=d.sSortable,b.sSortingClassJUI=d.sSortJUI)}function U(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;Ha(a);for(var c=0,d=b.length;cq[f])d(l.length+q[f],n);else if("string"===typeof q[f]){j=0;for(i=l.length;jb&&a[e]--; -1!=d&&c===k&&a.splice(d,1)}function ca(a,b,c,d){var e=a.aoData[b],f,g=function(c,d){for(;c.childNodes.length;)c.removeChild(c.firstChild); +c.innerHTML=B(a,b,d,"display")};if("dom"===c||(!c||"auto"===c)&&"dom"===e.src)e._aData=Ka(a,e,d,d===k?k:e._aData).data;else{var j=e.anCells;if(j)if(d!==k)g(j[d],d);else{c=0;for(f=j.length;c").appendTo(g));b=0;for(c=l.length;btr").attr("role","row");h(g).find(">tr>th, >tr>td").addClass(n.sHeaderTH);h(j).find(">tr>th, >tr>td").addClass(n.sFooterTH); +if(null!==j){a=a.aoFooter[0];b=0;for(c=a.length;b=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart= +-1);var g=a._iDisplayStart,n=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,C(a,!1);else if(j){if(!a.bDestroying&&!lb(a))return}else a.iDraw++;if(0!==i.length){f=j?a.aoData.length:n;for(j=j?0:g;j",{"class":e?d[0]:""}).append(h("",{valign:"top",colSpan:aa(a),"class":a.oClasses.sRowEmpty}).html(c))[0];u(a,"aoHeaderCallback","header",[h(a.nTHead).children("tr")[0],Ma(a),g,n,i]);u(a,"aoFooterCallback","footer",[h(a.nTFoot).children("tr")[0],Ma(a),g,n,i]);d=h(a.nTBody);d.children().detach();d.append(h(b));u(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function T(a,b){var c=a.oFeatures,d=c.bFilter; +c.bSort&&mb(a);d?fa(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;O(a);a._drawHold=!1}function nb(a){var b=a.oClasses,c=h(a.nTable),c=h("
      ").insertBefore(c),d=a.oFeatures,e=h("
      ",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(""),g,j,i,n,l,q,t=0;t")[0]; +n=f[t+1];if("'"==n||'"'==n){l="";for(q=2;f[t+q]!=n;)l+=f[t+q],q++;"H"==l?l=b.sJUIHeader:"F"==l&&(l=b.sJUIFooter);-1!=l.indexOf(".")?(n=l.split("."),i.id=n[0].substr(1,n[0].length-1),i.className=n[1]):"#"==l.charAt(0)?i.id=l.substr(1,l.length-1):i.className=l;t+=q}e.append(i);e=h(i)}else if(">"==j)e=e.parent();else if("l"==j&&d.bPaginate&&d.bLengthChange)g=ob(a);else if("f"==j&&d.bFilter)g=pb(a);else if("r"==j&&d.bProcessing)g=qb(a);else if("t"==j)g=rb(a);else if("i"==j&&d.bInfo)g=sb(a);else if("p"== +j&&d.bPaginate)g=tb(a);else if(0!==m.ext.feature.length){i=m.ext.feature;q=0;for(n=i.length;q',j=d.sSearch,j=j.match(/_INPUT_/)?j.replace("_INPUT_",g):j+g,b=h("
      ",{id:!f.f?c+"_filter":null,"class":b.sFilter}).append(h("
      ").addClass(b.sLength);a.aanFeatures.l||(i[0].id=c+"_length");i.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",e[0].outerHTML));h("select",i).val(a._iDisplayLength).bind("change.DT",function(){Ra(a,h(this).val());O(a)});h(a.nTable).bind("length.dt.DT",function(b,c,d){a===c&&h("select",i).val(d)});return i[0]}function tb(a){var b=a.sPaginationType,c=m.ext.pager[b],d="function"===typeof c,e=function(a){O(a)}, +b=h("
      ").addClass(a.oClasses.sPaging+b)[0],f=a.aanFeatures;d||c.fnInit(a,b,e);f.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(a){if(d){var b=a._iDisplayStart,i=a._iDisplayLength,h=a.fnRecordsDisplay(),l=-1===i,b=l?0:Math.ceil(b/i),i=l?1:Math.ceil(h/i),h=c(b,i),k,l=0;for(k=f.p.length;lf&&(d=0)):"first"==b?d=0:"previous"==b?(d=0<=e?d-e:0,0>d&&(d=0)):"next"==b?d+e",{id:!a.aanFeatures.r?a.sTableId+"_processing":null,"class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function C(a,b){a.oFeatures.bProcessing&&h(a.aanFeatures.r).css("display", +b?"block":"none");u(a,null,"processing",[a,b])}function rb(a){var b=h(a.nTable);b.attr("role","grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,e=c.sY,f=a.oClasses,g=b.children("caption"),j=g.length?g[0]._captionSide:null,i=h(b[0].cloneNode(!1)),n=h(b[0].cloneNode(!1)),l=b.children("tfoot");l.length||(l=null);i=h("
      ",{"class":f.sScrollWrapper}).append(h("
      ",{"class":f.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:d?!d?null:x(d):"100%"}).append(h("
      ", +{"class":f.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||"100%"}).append(i.removeAttr("id").css("margin-left",0).append("top"===j?g:null).append(b.children("thead"))))).append(h("
      ",{"class":f.sScrollBody}).css({position:"relative",overflow:"auto",width:!d?null:x(d)}).append(b));l&&i.append(h("
      ",{"class":f.sScrollFoot}).css({overflow:"hidden",border:0,width:d?!d?null:x(d):"100%"}).append(h("
      ",{"class":f.sScrollFootInner}).append(n.removeAttr("id").css("margin-left", +0).append("bottom"===j?g:null).append(b.children("tfoot")))));var b=i.children(),k=b[0],f=b[1],t=l?b[2]:null;if(d)h(f).on("scroll.DT",function(){var a=this.scrollLeft;k.scrollLeft=a;l&&(t.scrollLeft=a)});h(f).css(e&&c.bCollapse?"max-height":"height",e);a.nScrollHead=k;a.nScrollBody=f;a.nScrollFoot=t;a.aoDrawCallback.push({fn:ka,sName:"scrolling"});return i[0]}function ka(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY,b=b.iBarWidth,f=h(a.nScrollHead),g=f[0].style,j=f.children("div"),i=j[0].style,n=j.children("table"), +j=a.nScrollBody,l=h(j),q=j.style,t=h(a.nScrollFoot).children("div"),m=t.children("table"),o=h(a.nTHead),G=h(a.nTable),p=G[0],r=p.style,u=a.nTFoot?h(a.nTFoot):null,Eb=a.oBrowser,Ua=Eb.bScrollOversize,s=F(a.aoColumns,"nTh"),P,v,w,y,z=[],A=[],B=[],C=[],D,E=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};v=j.scrollHeight>j.clientHeight;if(a.scrollBarVis!==v&&a.scrollBarVis!==k)a.scrollBarVis=v,U(a);else{a.scrollBarVis=v;G.children("thead, tfoot").remove(); +u&&(w=u.clone().prependTo(G),P=u.find("tr"),w=w.find("tr"));y=o.clone().prependTo(G);o=o.find("tr");v=y.find("tr");y.find("th, td").removeAttr("tabindex");c||(q.width="100%",f[0].style.width="100%");h.each(qa(a,y),function(b,c){D=Z(a,b);c.style.width=a.aoColumns[D].sWidth});u&&J(function(a){a.style.width=""},w);f=G.outerWidth();if(""===c){r.width="100%";if(Ua&&(G.find("tbody").height()>j.offsetHeight||"scroll"==l.css("overflow-y")))r.width=x(G.outerWidth()-b);f=G.outerWidth()}else""!==d&&(r.width= +x(d),f=G.outerWidth());J(E,v);J(function(a){B.push(a.innerHTML);z.push(x(h(a).css("width")))},v);J(function(a,b){if(h.inArray(a,s)!==-1)a.style.width=z[b]},o);h(v).height(0);u&&(J(E,w),J(function(a){C.push(a.innerHTML);A.push(x(h(a).css("width")))},w),J(function(a,b){a.style.width=A[b]},P),h(w).height(0));J(function(a,b){a.innerHTML='
      '+B[b]+"
      ";a.style.width=z[b]},v);u&&J(function(a,b){a.innerHTML='
      '+ +C[b]+"
      ";a.style.width=A[b]},w);if(G.outerWidth()j.offsetHeight||"scroll"==l.css("overflow-y")?f+b:f;if(Ua&&(j.scrollHeight>j.offsetHeight||"scroll"==l.css("overflow-y")))r.width=x(P-b);(""===c||""!==d)&&L(a,1,"Possible column misalignment",6)}else P="100%";q.width=x(P);g.width=x(P);u&&(a.nScrollFoot.style.width=x(P));!e&&Ua&&(q.height=x(p.offsetHeight+b));c=G.outerWidth();n[0].style.width=x(c);i.width=x(c);d=G.height()>j.clientHeight||"scroll"==l.css("overflow-y");e="padding"+ +(Eb.bScrollbarLeft?"Left":"Right");i[e]=d?b+"px":"0px";u&&(m[0].style.width=x(c),t[0].style.width=x(c),t[0].style[e]=d?b+"px":"0px");G.children("colgroup").insertBefore(G.children("thead"));l.scroll();if((a.bSorted||a.bFiltered)&&!a._drawHold)j.scrollTop=0}}function J(a,b,c){for(var d=0,e=0,f=b.length,g,j;e").appendTo(j.find("tbody")); +j.find("thead, tfoot").remove();j.append(h(a.nTHead).clone()).append(h(a.nTFoot).clone());j.find("tfoot th, tfoot td").css("width","");n=qa(a,j.find("thead")[0]);for(m=0;m").css({width:o.sWidthOrig,margin:0,padding:0,border:0,height:1}));if(a.aoData.length)for(m=0;m").css(f||e?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(j).appendTo(k);f&&g?j.width(g):f?(j.css("width","auto"),j.removeAttr("width"),j.width()").css("width",x(a)).appendTo(b||I.body),d=c[0].offsetWidth;c.remove();return d}function Gb(a,b){var c=Hb(a,b);if(0>c)return null;var d= +a.aoData[c];return!d.nTr?h("").html(B(a,c,b,"display"))[0]:d.anCells[b]}function Hb(a,b){for(var c,d=-1,e=-1,f=0,g=a.aoData.length;fd&&(d=c.length,e=f);return e}function x(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function W(a){var b,c,d=[],e=a.aoColumns,f,g,j,i;b=a.aaSortingFixed;c=h.isPlainObject(b);var n=[];f=function(a){a.length&&!h.isArray(a[0])?n.push(a):h.merge(n, +a)};h.isArray(b)&&f(b);c&&b.pre&&f(b.pre);f(a.aaSorting);c&&b.post&&f(b.post);for(a=0;ae?1:0,0!==c)return"asc"===j.dir?c:-c;c=d[a];e=d[b];return ce?1:0}):i.sort(function(a,b){var c,g,j,i,k=h.length,m=f[a]._aSortData,p=f[b]._aSortData;for(j=0;jg?1:0})}a.bSorted=!0}function Jb(a){for(var b,c,d=a.aoColumns,e=W(a),a=a.oLanguage.oAria,f=0,g=d.length;f/g,"");var i=c.nTh;i.removeAttribute("aria-sort");c.bSortable&&(0e?e+1:3));e=0;for(f=d.length;ee?e+1:3))}a.aLastSort=d}function Ib(a, +b){var c=a.aoColumns[b],d=m.ext.order[c.sSortDataType],e;d&&(e=d.call(a.oInstance,a,b,$(a,b)));for(var f,g=m.ext.type.order[c.sType+"-pre"],j=0,i=a.aoData.length;j=d.length?[0,c[1]]:c)}));e.search!==k&&h.extend(a.oPreviousSearch,Bb(e.search));b=0;for(c=e.columns.length;b=c&&(b=c-d);b-=b%d;if(-1===d||0>b)b=0;a._iDisplayStart=b}function Pa(a,b){var c=a.renderer,d=m.ext.renderer[b];return h.isPlainObject(c)&&c[b]?d[c[b]]||d._:"string"===typeof c?d[c]||d._:d._}function y(a){return a.oFeatures.bServerSide? +"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function Aa(a,b){var c=[],c=Mb.numbers_length,d=Math.floor(c/2);b<=c?c=X(0,b):a<=d?(c=X(0,c-2),c.push("ellipsis"),c.push(b-1)):(a>=b-1-d?c=X(b-(c-2),b):(c=X(a-d+2,a+d-1),c.push("ellipsis"),c.push(b-1)),c.splice(0,0,"ellipsis"),c.splice(0,0,0));c.DT_el="span";return c}function db(a){h.each({num:function(b){return Ba(b,a)},"num-fmt":function(b){return Ba(b,a,Xa)},"html-num":function(b){return Ba(b,a,Ca)},"html-num-fmt":function(b){return Ba(b,a,Ca,Xa)}},function(b, +c){v.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(v.type.search[b+a]=v.type.search.html)})}function Nb(a){return function(){var b=[za(this[m.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return m.ext.internal[a].apply(this,b)}}var m,v,r,p,s,Ya={},Ob=/[\r\n]/g,Ca=/<.*?>/g,bc=/^[\w\+\-]/,cc=/[\w\+\-]$/,Zb=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)","g"),Xa=/[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi,M=function(a){return!a||!0===a||"-"===a?!0:!1}, +Pb=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Qb=function(a,b){Ya[b]||(Ya[b]=RegExp(va(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(Ya[b],"."):a},Za=function(a,b,c){var d="string"===typeof a;if(M(a))return!0;b&&d&&(a=Qb(a,b));c&&d&&(a=a.replace(Xa,""));return!isNaN(parseFloat(a))&&isFinite(a)},Rb=function(a,b,c){return M(a)?!0:!(M(a)||"string"===typeof a)?null:Za(a.replace(Ca,""),b,c)?!0:null},F=function(a,b,c){var d=[],e=0,f=a.length;if(c!==k)for(;e< +f;e++)a[e]&&a[e][b]&&d.push(a[e][b][c]);else for(;e")[0],$b=wa.textContent!==k,ac=/<.*?>/g;m=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new r(za(this[v.iApiIndex])):new r(this)};this.fnAddData=function(a,b){var c=this.api(!0),d=h.isArray(a)&&(h.isArray(a[0])||h.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b===k||b)&&c.draw();return d.flatten().toArray()}; +this.fnAdjustColumnSizing=function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],d=c.oScroll;a===k||a?b.draw(!1):(""!==d.sX||""!==d.sY)&&ka(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===k||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var d=this.api(!0),a=d.rows(a),e=a.settings()[0],h=e.aoData[a[0][0]];a.remove();b&&b.call(this,e,h);(c===k||c)&&d.draw();return h};this.fnDestroy=function(a){this.api(!0).destroy(a)}; +this.fnDraw=function(a){this.api(!0).draw(a)};this.fnFilter=function(a,b,c,d,e,h){e=this.api(!0);null===b||b===k?e.search(a,c,d,h):e.column(b).search(a,c,d,h);e.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==k){var d=a.nodeName?a.nodeName.toLowerCase():"";return b!==k||"td"==d||"th"==d?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0);return a!==k?b.row(a).node():b.rows().nodes().flatten().toArray()};this.fnGetPosition= +function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(),[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){var c=this.api(!0).page(a);(b===k||b)&&c.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c===k||c)&&a.columns.adjust().draw()}; +this.fnSettings=function(){return za(this[v.iApiIndex])};this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,d,e){var h=this.api(!0);c===k||null===c?h.row(b).data(a):h.cell(b,c).data(a);(e===k||e)&&h.columns.adjust();(d===k||d)&&h.draw();return 0};this.fnVersionCheck=v.fnVersionCheck;var b=this,c=a===k,d=this.length;c&&(a={});this.oApi=this.internal=v.internal;for(var e in m.ext.internal)e&&(this[e]= +Nb(e));this.each(function(){var e={},e=1t<"F"ip>'),o.renderer)?h.isPlainObject(o.renderer)&&!o.renderer.header&&(o.renderer.header="jqueryui"):o.renderer="jqueryui":h.extend(i,m.ext.classes,e.oClasses);q.addClass(i.sTable);o.iInitDisplayStart===k&&(o.iInitDisplayStart=e.iDisplayStart,o._iDisplayStart=e.iDisplayStart);null!==e.iDeferLoading&&(o.bDeferLoading=!0,g=h.isArray(e.iDeferLoading),o._iRecordsDisplay=g?e.iDeferLoading[0]:e.iDeferLoading,o._iRecordsTotal=g?e.iDeferLoading[1]:e.iDeferLoading);var r=o.oLanguage;h.extend(!0, +r,e.oLanguage);""!==r.sUrl&&(h.ajax({dataType:"json",url:r.sUrl,success:function(a){Fa(a);K(l.oLanguage,a);h.extend(true,r,a);ga(o)},error:function(){ga(o)}}),n=!0);null===e.asStripeClasses&&(o.asStripeClasses=[i.sStripeOdd,i.sStripeEven]);var g=o.asStripeClasses,v=q.children("tbody").find("tr").eq(0);-1!==h.inArray(!0,h.map(g,function(a){return v.hasClass(a)}))&&(h("tbody tr",this).removeClass(g.join(" ")),o.asDestroyStripes=g.slice());t=[];g=this.getElementsByTagName("thead");0!==g.length&&(da(o.aoHeader, +g[0]),t=qa(o));if(null===e.aoColumns){p=[];g=0;for(j=t.length;g").appendTo(this));o.nTHead=j[0];j=q.children("tbody");0===j.length&&(j=h("").appendTo(this));o.nTBody=j[0];j=q.children("tfoot");if(0===j.length&&0").appendTo(this);0===j.length||0===j.children().length?q.addClass(i.sNoFooter):0a?new r(b[a],this[a]):null},filter:function(a){var b=[];if(w.filter)b=w.filter.call(this,a,this);else for(var c=0,d=this.length;c").addClass(b),h("td",c).addClass(b).html(a)[0].colSpan=aa(d),e.push(c[0]))};f(a,b);c._details&&c._details.remove();c._details=h(e);c._detailsShow&&c._details.insertAfter(c.nTr)}return this});p(["row().child.show()","row().child().show()"],function(){Vb(this, +!0);return this});p(["row().child.hide()","row().child().hide()"],function(){Vb(this,!1);return this});p(["row().child.remove()","row().child().remove()"],function(){cb(this);return this});p("row().child.isShown()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var ec=/^(.+):(name|visIdx|visible)$/,Wb=function(a,b,c,d,e){for(var c=[],d=0,f=e.length;d=0?b:g.length+b];if(typeof a==="function"){var e=Da(c,f);return h.map(g,function(b,f){return a(f,Wb(c,f,0,0,e),i[f])?f:null})}var k=typeof a==="string"?a.match(ec):"";if(k)switch(k[2]){case "visIdx":case "visible":b=parseInt(k[1],10);if(b<0){var m=h.map(g,function(a,b){return a.bVisible?b:null}); +return[m[m.length+b]]}return[Z(c,b)];case "name":return h.map(j,function(a,b){return a===k[1]?b:null});default:return[]}if(a.nodeName&&a._DT_CellIndex)return[a._DT_CellIndex.column];b=h(i).filter(a).map(function(){return h.inArray(this,i)}).toArray();if(b.length||!a.nodeName)return b;b=h(a).closest("*[data-dt-column]");return b.length?[b.data("dt-column")]:[]},c,f)},1);c.selector.cols=a;c.selector.opts=b;return c});s("columns().header()","column().header()",function(){return this.iterator("column", +function(a,b){return a.aoColumns[b].nTh},1)});s("columns().footer()","column().footer()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTf},1)});s("columns().data()","column().data()",function(){return this.iterator("column-rows",Wb,1)});s("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},1)});s("columns().cache()","column().cache()",function(a){return this.iterator("column-rows",function(b, +c,d,e,f){return ha(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});s("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,d,e){return ha(a.aoData,e,"anCells",b)},1)});s("columns().visible()","column().visible()",function(a,b){return this.iterator("column",function(c,d){if(a===k)return c.aoColumns[d].bVisible;var e=c.aoColumns,f=e[d],g=c.aoData,j,i,n;if(a!==k&&f.bVisible!==a){if(a){var l=h.inArray(!0,F(e,"bVisible"),d+1);j=0;for(i=g.length;j< +i;j++)n=g[j].nTr,e=g[j].anCells,n&&n.insertBefore(e[d],e[l]||null)}else h(F(c.aoData,"anCells",d)).detach();f.bVisible=a;ea(c,c.aoHeader);ea(c,c.aoFooter);(b===k||b)&&U(c);u(c,null,"column-visibility",[c,d,a,b]);ya(c)}})});s("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===a?$(b,c):c},1)});p("columns.adjust()",function(){return this.iterator("table",function(a){U(a)},1)});p("column.index()",function(a,b){if(0!==this.context.length){var c= +this.context[0];if("fromVisible"===a||"toData"===a)return Z(c,b);if("fromData"===a||"toVisible"===a)return $(c,b)}});p("column()",function(a,b){return bb(this.columns(a,b))});p("cells()",function(a,b,c){h.isPlainObject(a)&&(a.row===k?(c=a,a=null):(c=b,b=null));h.isPlainObject(b)&&(c=b,b=null);if(null===b||b===k)return this.iterator("table",function(b){var d=a,e=ab(c),f=b.aoData,g=Da(b,e),j=Sb(ha(f,g,"anCells")),i=h([].concat.apply([],j)),l,n=b.aoColumns.length,m,p,r,u,v,s;return $a("cell",d,function(a){var c= +typeof a==="function";if(a===null||a===k||c){m=[];p=0;for(r=g.length;pd;return!0};m.isDataTable=m.fnIsDataTable=function(a){var b=h(a).get(0),c=!1;h.each(m.settings,function(a,e){var f=e.nScrollHead?h("table",e.nScrollHead)[0]:null,g=e.nScrollFoot?h("table",e.nScrollFoot)[0]:null;if(e.nTable===b||f===b||g===b)c=!0});return c};m.tables=m.fnTables=function(a){var b=!1;h.isPlainObject(a)&&(b=a.api,a=a.visible);var c=h.map(m.settings,function(b){if(!a|| +a&&h(b.nTable).is(":visible"))return b.nTable});return b?new r(c):c};m.util={throttle:ua,escapeRegex:va};m.camelToHungarian=K;p("$()",function(a,b){var c=this.rows(b).nodes(),c=h(c);return h([].concat(c.filter(a).toArray(),c.find(a).toArray()))});h.each(["on","one","off"],function(a,b){p(b+"()",function(){var a=Array.prototype.slice.call(arguments);a[0].match(/\.dt\b/)||(a[0]+=".dt");var d=h(this.tables().nodes());d[b].apply(d,a);return this})});p("clear()",function(){return this.iterator("table", +function(a){na(a)})});p("settings()",function(){return new r(this.context,this.context)});p("init()",function(){var a=this.context;return a.length?a[0].oInit:null});p("data()",function(){return this.iterator("table",function(a){return F(a.aoData,"_aData")}).flatten()});p("destroy()",function(a){a=a||!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,d=b.oClasses,e=b.nTable,f=b.nTBody,g=b.nTHead,j=b.nTFoot,i=h(e),f=h(f),k=h(b.nTableWrapper),l=h.map(b.aoData,function(a){return a.nTr}), +p;b.bDestroying=!0;u(b,"aoDestroyCallback","destroy",[b]);a||(new r(b)).columns().visible(!0);k.unbind(".DT").find(":not(tbody *)").unbind(".DT");h(D).unbind(".DT-"+b.sInstance);e!=g.parentNode&&(i.children("thead").detach(),i.append(g));j&&e!=j.parentNode&&(i.children("tfoot").detach(),i.append(j));b.aaSorting=[];b.aaSortingFixed=[];xa(b);h(l).removeClass(b.asStripeClasses.join(" "));h("th, td",g).removeClass(d.sSortable+" "+d.sSortableAsc+" "+d.sSortableDesc+" "+d.sSortableNone);b.bJUI&&(h("th span."+ +d.sSortIcon+", td span."+d.sSortIcon,g).detach(),h("th, td",g).each(function(){var a=h("div."+d.sSortJUIWrapper,this);h(this).append(a.contents());a.detach()}));f.children().detach();f.append(l);g=a?"remove":"detach";i[g]();k[g]();!a&&c&&(c.insertBefore(e,b.nTableReinsertBefore),i.css("width",b.sDestroyWidth).removeClass(d.sTable),(p=b.asDestroyStripes.length)&&f.children().each(function(a){h(this).addClass(b.asDestroyStripes[a%p])}));c=h.inArray(b,m.settings);-1!==c&&m.settings.splice(c,1)})});h.each(["column", +"row","cell"],function(a,b){p(b+"s().every()",function(a){var d=this.selector.opts,e=this;return this.iterator(b,function(f,g,h,i,n){a.call(e[b](g,"cell"===b?h:d,"cell"===b?d:k),g,h,i,n)})})});p("i18n()",function(a,b,c){var d=this.context[0],a=Q(a)(d.oLanguage);a===k&&(a=b);c!==k&&h.isPlainObject(a)&&(a=a[c]!==k?a[c]:a._);return a.replace("%d",c)});m.version="1.10.11";m.settings=[];m.models={};m.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};m.models.oRow={nTr:null,anCells:null, +_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null,idx:-1};m.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};m.defaults= +{aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bJQueryUI:!1,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g, +this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+ +"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries", +sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:h.extend({},m.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId"}; +Y(m.defaults);m.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};Y(m.defaults.column);m.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null, +bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1,bBounding:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[], +aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,json:k,oAjaxData:k,fnServerData:null, +aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,bJUI:null,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==y(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==y(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a= +this._iDisplayLength,b=this._iDisplayStart,c=b+a,d=this.aiDisplay.length,e=this.oFeatures,f=e.bPaginate;return e.bServerSide?!1===f||-1===a?b+d:Math.min(b+a,this._iRecordsDisplay):!f||c>d||-1===a?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null};m.ext=v={buttons:{},classes:{},build:"bs-3.3.6/dt-1.10.11,b-1.1.2,b-colvis-1.1.2,b-html5-1.1.2,b-print-1.1.2,cr-1.3.1,se-1.1.2",errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{}, +header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:m.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:m.version};h.extend(v,{afnFiltering:v.search,aTypes:v.type.detect,ofnSearch:v.type.search,oSort:v.type.order,afnSortData:v.order,aoFeatures:v.feature,oApi:v.internal,oStdClasses:v.classes,oPagination:v.pager});h.extend(m.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd", +sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead", +sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var Ea="",Ea="",H=Ea+"ui-state-default",ia=Ea+"css_right ui-icon ui-icon-",Xb=Ea+"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix";h.extend(m.ext.oJUIClasses, +m.ext.classes,{sPageButton:"fg-button ui-button "+H,sPageButtonActive:"ui-state-disabled",sPageButtonDisabled:"ui-state-disabled",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",sSortAsc:H+" sorting_asc",sSortDesc:H+" sorting_desc",sSortable:H+" sorting",sSortableAsc:H+" sorting_asc_disabled",sSortableDesc:H+" sorting_desc_disabled",sSortableNone:H+" sorting_disabled",sSortJUIAsc:ia+"triangle-1-n",sSortJUIDesc:ia+"triangle-1-s",sSortJUI:ia+"carat-2-n-s", +sSortJUIAscAllowed:ia+"carat-1-n",sSortJUIDescAllowed:ia+"carat-1-s",sSortJUIWrapper:"DataTables_sort_wrapper",sSortIcon:"DataTables_sort_icon",sScrollHead:"dataTables_scrollHead "+H,sScrollFoot:"dataTables_scrollFoot "+H,sHeaderTH:H,sFooterTH:H,sJUIHeader:Xb+" ui-corner-tl ui-corner-tr",sJUIFooter:Xb+" ui-corner-bl ui-corner-br"});var Mb=m.ext.pager;h.extend(Mb,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},numbers:function(a,b){return[Aa(a, +b)]},simple_numbers:function(a,b){return["previous",Aa(a,b),"next"]},full_numbers:function(a,b){return["first","previous",Aa(a,b),"next","last"]},_numbers:Aa,numbers_length:7});h.extend(!0,m.ext.renderer,{pageButton:{_:function(a,b,c,d,e,f){var g=a.oClasses,j=a.oLanguage.oPaginate,i=a.oLanguage.oAria.paginate||{},k,l,m=0,p=function(b,d){var o,r,u,s,v=function(b){Ta(a,b.data.action,true)};o=0;for(r=d.length;o").appendTo(b);p(u,s)}else{k=null; +l="";switch(s){case "ellipsis":b.append('');break;case "first":k=j.sFirst;l=s+(e>0?"":" "+g.sPageButtonDisabled);break;case "previous":k=j.sPrevious;l=s+(e>0?"":" "+g.sPageButtonDisabled);break;case "next":k=j.sNext;l=s+(e",{"class":g.sPageButton+" "+l,"aria-controls":a.sTableId,"aria-label":i[s], +"data-dt-idx":m,tabindex:a.iTabIndex,id:c===0&&typeof s==="string"?a.sTableId+"_"+s:null}).html(k).appendTo(b);Wa(u,{action:s},v);m++}}}},r;try{r=h(b).find(I.activeElement).data("dt-idx")}catch(o){}p(h(b).empty(),d);r&&h(b).find("[data-dt-idx="+r+"]").focus()}}});h.extend(m.ext.type.detect,[function(a,b){var c=b.oLanguage.sDecimal;return Za(a,c)?"num"+c:null},function(a){if(a&&!(a instanceof Date)&&(!bc.test(a)||!cc.test(a)))return null;var b=Date.parse(a);return null!==b&&!isNaN(b)||M(a)?"date": +null},function(a,b){var c=b.oLanguage.sDecimal;return Za(a,c,!0)?"num-fmt"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Rb(a,c)?"html-num"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Rb(a,c,!0)?"html-num-fmt"+c:null},function(a){return M(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);h.extend(m.ext.type.search,{html:function(a){return M(a)?a:"string"===typeof a?a.replace(Ob," ").replace(Ca,""):""},string:function(a){return M(a)?a:"string"===typeof a?a.replace(Ob, +" "):a}});var Ba=function(a,b,c,d){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=Qb(a,b));a.replace&&(c&&(a=a.replace(c,"")),d&&(a=a.replace(d,"")));return 1*a};h.extend(v.type.order,{"date-pre":function(a){return Date.parse(a)||0},"html-pre":function(a){return M(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return M(a)?"":"string"===typeof a?a.toLowerCase():!a.toString?"":a.toString()},"string-asc":function(a,b){return ab?1:0},"string-desc":function(a, +b){return ab?-1:0}});db("");h.extend(!0,m.ext.renderer,{header:{_:function(a,b,c,d){h(a.nTable).on("order.dt.DT",function(e,f,g,h){if(a===f){e=c.idx;b.removeClass(c.sSortingClass+" "+d.sSortAsc+" "+d.sSortDesc).addClass(h[e]=="asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass)}})},jqueryui:function(a,b,c,d){h("
      ").addClass(d.sSortJUIWrapper).append(b.contents()).append(h("").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);h(a.nTable).on("order.dt.DT",function(e, +f,g,h){if(a===f){e=c.idx;b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass(h[e]=="asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass);b.find("span."+d.sSortIcon).removeClass(d.sSortJUIAsc+" "+d.sSortJUIDesc+" "+d.sSortJUI+" "+d.sSortJUIAscAllowed+" "+d.sSortJUIDescAllowed).addClass(h[e]=="asc"?d.sSortJUIAsc:h[e]=="desc"?d.sSortJUIDesc:c.sSortingClassJUI)}})}}});var Yb=function(a){return"string"===typeof a?a.replace(//g,">").replace(/"/g,"""):a};m.render={number:function(a, +b,c,d,e){return{display:function(f){if("number"!==typeof f&&"string"!==typeof f)return f;var g=0>f?"-":"",h=parseFloat(f);if(isNaN(h))return Yb(f);f=Math.abs(h);h=parseInt(f,10);f=c?b+(f-h).toFixed(c).substring(2):"";return g+(d||"")+h.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+f+(e||"")}}},text:function(){return{display:Yb}}};h.extend(m.ext.internal,{_fnExternApiFunc:Nb,_fnBuildAjax:ra,_fnAjaxUpdate:lb,_fnAjaxParameters:ub,_fnAjaxUpdateDraw:vb,_fnAjaxDataSrc:sa,_fnAddColumn:Ga,_fnColumnOptions:ja, +_fnAdjustColumnSizing:U,_fnVisibleToColumnIndex:Z,_fnColumnIndexToVisible:$,_fnVisbleColumns:aa,_fnGetColumns:la,_fnColumnTypes:Ia,_fnApplyColumnDefs:ib,_fnHungarianMap:Y,_fnCamelToHungarian:K,_fnLanguageCompat:Fa,_fnBrowserDetect:gb,_fnAddData:N,_fnAddTr:ma,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==k?b._DT_RowIndex:null},_fnNodeToColumnIndex:function(a,b,c){return h.inArray(c,a.aoData[b].anCells)},_fnGetCellData:B,_fnSetCellData:jb,_fnSplitObjNotation:La,_fnGetObjectDataFn:Q,_fnSetObjectDataFn:R, +_fnGetDataMaster:Ma,_fnClearTable:na,_fnDeleteIndex:oa,_fnInvalidate:ca,_fnGetRowElements:Ka,_fnCreateTr:Ja,_fnBuildHead:kb,_fnDrawHead:ea,_fnDraw:O,_fnReDraw:T,_fnAddOptionsHtml:nb,_fnDetectHeader:da,_fnGetUniqueThs:qa,_fnFeatureHtmlFilter:pb,_fnFilterComplete:fa,_fnFilterCustom:yb,_fnFilterColumn:xb,_fnFilter:wb,_fnFilterCreateSearch:Qa,_fnEscapeRegex:va,_fnFilterData:zb,_fnFeatureHtmlInfo:sb,_fnUpdateInfo:Cb,_fnInfoMacros:Db,_fnInitialise:ga,_fnInitComplete:ta,_fnLengthChange:Ra,_fnFeatureHtmlLength:ob, +_fnFeatureHtmlPaginate:tb,_fnPageChange:Ta,_fnFeatureHtmlProcessing:qb,_fnProcessingDisplay:C,_fnFeatureHtmlTable:rb,_fnScrollDraw:ka,_fnApplyToChildren:J,_fnCalculateColumnWidths:Ha,_fnThrottle:ua,_fnConvertToWidth:Fb,_fnGetWidestNode:Gb,_fnGetMaxLenString:Hb,_fnStringToCss:x,_fnSortFlatten:W,_fnSort:mb,_fnSortAria:Jb,_fnSortListener:Va,_fnSortAttachListener:Oa,_fnSortingClasses:xa,_fnSortData:Ib,_fnSaveState:ya,_fnLoadState:Kb,_fnSettingsFromNode:za,_fnLog:L,_fnMap:E,_fnBindAction:Wa,_fnCallbackReg:z, +_fnCallbackFire:u,_fnLengthOverflow:Sa,_fnRenderer:Pa,_fnDataSource:y,_fnRowAttributes:Na,_fnCalculateEnd:function(){}});h.fn.dataTable=m;m.$=h;h.fn.dataTableSettings=m.settings;h.fn.dataTableExt=m.ext;h.fn.DataTable=function(a){return h(this).dataTable(a).api()};h.each(m,function(a,b){h.fn.DataTable[a]=b});return h.fn.dataTable}); + + +/*! + DataTables Bootstrap 3 integration + ©2011-2015 SpryMedia Ltd - datatables.net/license +*/ +(function(b){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(a){return b(a,window,document)}):"object"===typeof exports?module.exports=function(a,d){a||(a=window);if(!d||!d.fn.dataTable)d=require("datatables.net")(a,d).$;return b(d,a,a.document)}:b(jQuery,window,document)})(function(b,a,d){var f=b.fn.dataTable;b.extend(!0,f.defaults,{dom:"<'row'<'col-sm-6'l><'col-sm-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-5'i><'col-sm-7'p>>",renderer:"bootstrap"});b.extend(f.ext.classes, +{sWrapper:"dataTables_wrapper form-inline dt-bootstrap",sFilterInput:"form-control input-sm",sLengthSelect:"form-control input-sm",sProcessing:"dataTables_processing panel panel-default"});f.ext.renderer.pageButton.bootstrap=function(a,h,r,m,j,n){var o=new f.Api(a),s=a.oClasses,k=a.oLanguage.oPaginate,t=a.oLanguage.oAria.paginate||{},e,g,p=0,q=function(d,f){var l,h,i,c,m=function(a){a.preventDefault();!b(a.currentTarget).hasClass("disabled")&&o.page()!=a.data.action&&o.page(a.data.action).draw("page")}; +l=0;for(h=f.length;l",{"class":s.sPageButton+" "+g,id:0===r&&"string"===typeof c?a.sTableId+"_"+c:null}).append(b("",{href:"#", +"aria-controls":a.sTableId,"aria-label":t[c],"data-dt-idx":p,tabindex:a.iTabIndex}).html(e)).appendTo(d),a.oApi._fnBindAction(i,{action:c},m),p++)}},i;try{i=b(h).find(d.activeElement).data("dt-idx")}catch(u){}q(b(h).empty().html('"; + $listoftrans = $listoftrans."
      "; + echo $transmenu; + echo $listoftrans; + } + ?> + +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +

      +
        +
      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      + + +
      + + + + + + + + + +
      +
      + \ No newline at end of file diff --git a/plugins/revslider/admin/views/templates/slide-selector.php b/plugins/revslider/admin/views/templates/slide-selector.php new file mode 100644 index 0000000..321474f --- /dev/null +++ b/plugins/revslider/admin/views/templates/slide-selector.php @@ -0,0 +1,336 @@ + + * @link http://www.themepunch.com/ + * @copyright 2015 ThemePunch + */ + + +if( !defined( 'ABSPATH') ) exit(); + +$_width = $slider->getParam('width', 1280); +$_height = $slider->getParam('height', 868); + +$the_slidertype = $slider->getParam('slider-type', 'standard'); + +if($the_slidertype == 'hero'){ + $active_slide = $slider->getParam('hero_active', -1); + //check if this id is still existing + $exists = RevSliderSlide::isSlideByID($active_slide); + + if($exists == false){ + $active_slide = -1; + } +} + +?> + + + +
      +
      + +
      +
      +
      + \ No newline at end of file diff --git a/plugins/revslider/admin/views/templates/slide-stage.php b/plugins/revslider/admin/views/templates/slide-stage.php new file mode 100644 index 0000000..6967e65 --- /dev/null +++ b/plugins/revslider/admin/views/templates/slide-stage.php @@ -0,0 +1,2619 @@ +getArrAnimations(); +?> + +
      +
      +
      +
        +
      • + + "> + + + +
      • +
      • + + "> + + + +
      • +
      • + + "> + + + +
      • +
      • +
      • +
      • + +
      • + isStaticSlide()){ ?> +
      • + +
      • +
      + +
      + + + +
      +
      + + +
      + + +
      + +
      " style="display:none;"> +
      +

      +
      + +
      +

      +
      + +
      +
      +
      +
      " style="display:none;"> +

      +
      + +
      + + + + " style="margin-right:10px"> + " id="layer_caption" name="layer_caption" value="-" /> + + + + + + + + + + + + + + + + + + + + + + " style="margin-right:6px" > + " style="width:61px" id="layer_font_size_s" name="font_size_static" value="20px" /> + + + + + " style="margin-right:11px" > + " style="width:61px" id="layer_line_height_s" name="line_height_static" value="22px" /> + + + + + + + + + + + "> + "> + "> + + + + + + + " style="margin-right:8px"> + " style="width:50px" id="layer_left" name="layer_left" value="" disabled="disabled"> + + + + " style="margin-right:4px"> + " style="width:50px" id="layer_top" name="layer_top" value="" disabled="disabled"> + + + + +
      + + +
      + + + + " style="margin-right:10px"> + " style="width:185px" type="text" name="css_font-family" value="" autocomplete="off"> + + + + + + + + + + "> + + + + + "> + " id="layer_color_s" name="color_static" value="#ffffff" /> + + + + + + "> + "> + "> + + + + + + " style="margin-right:3px"> + " style="display:none;width:50px" id="layer_max_width" name="layer_max_width" value="auto"> + " style="width:50px" id="layer_scaleX" name="layer_scaleX" value=""> + " style="display:none;width:50px" id="layer_video_width" name="layer_video_width" value=""> + + + "> + " style="display:none;width:50px" id="layer_max_height" name="layer_max_height" value="auto"> + " style="width:50px" id="layer_scaleY" name="layer_scaleY" value=""> + " style="display:none;width:50px" id="layer_video_height" name="layer_video_height" value=""> + + + "> + + + + + + " style=""> + + + + + " style="position:relative; display:inline-block; width:26px; padding:0px; text-align:center; vertical-align: middle"> + + + + + "> + + + +
      + + + +
      +
      +
      +
      +
      + +
        +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      +
      + + + + " style="margin-right:10px"> + " style="width:50px" type="text" name="css_font-transparency" value="1"> + + + + " style="margin-right:10px"> + "> + + + + " style="margin-right:10px"> + + + + + + " style="margin-right:10px"> + + + + + + + + + + + + + + + + + + getArrEasing(); ?> + + + + + + + + '; + echo ''; + _e("Parallax Feature in Slider Settings is deactivated, parallax will be ignored.",REVSLIDER_TEXTDOMAIN); + echo ''; + } + ?> + + + +
      + + + + + + +
      + + + + +
      +
      +
      + +
      +
      +
      +
      +
      +
      +
      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + getParam("slider_type","fullwidth"); + $style .= ' margin: 0 auto;'; + $tempwidth_jq = $maxbgwidth; + + if($slidertype == 'fullwidth'){ + + $style_wrapper .= ' width: 100%;'; + $maxbgwidth =""; + } else { + $style_wrapper .= $style; + } + + $hor_lines = RevSliderFunctions::getVal($settings, "hor_lines",""); + $ver_lines = RevSliderFunctions::getVal($settings, "ver_lines",""); + ?> +
      + +
      0
      +
      0
      +
      +
        +
        + +
        + +
        +
        +
        +
          +
          + +
          + +
          +
          + +
          +
          +
          + +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          + +
          + + +
          +
          + +
          +
          + + + isStaticSlide()){ + $add_static = 'true'; + } + ?> +
          +
          + +
          +
          + + + + + +
          +
          +
          + +
          + +
          +
          +
          +
          + +
          +
            +
          • +
          + +
          +
          +
          + + + + getParam('width', 1240); + $_width_notebook = $slider->getParam('width_notebook', 1024); + $_width_tablet = $slider->getParam('width_tablet', 778); + $_width_mobile = $slider->getParam('width_mobile', 480); + + $_height = $slider->getParam('height', 868); + $_height_notebook = $slider->getParam('height_notebook', 768); + $_height_tablet = $slider->getParam('height_tablet', 960); + $_height_mobile = $slider->getParam('height_mobile', 720); + + if($adv_resp_sizes === true){ + ?> +
          + +
          +
          +
          +
          +
          + + + + +
          + + +
          + +
          + + + + + + + + + + + + + +
          +
          + + + + + + + + + + + + + + + + + + +
          +
          + + +
          +
          +
          +
          +
          +
          +
          + + +
          +
          +
          + +
          00:00.00
          +
          +
          +
          +
          +
            +
          • +
            + + + + + +
            +
          • + +
          +
          +
          +
          +
          + +
          +
          +
          +
          +
          + + +
          + +
          +
            +
          +
          +
          +
          + +
          +
          +
          +
            +
          • +
            +
            +
            + 100 + +
            +
            +
            +
            +
          • +
          +
          +
          +
          +
          +
          +
          +
          +
          + + +
          " style="display:none"> +
          +
          +
          + + + +
          + +
          + +
          + + + +
          +
          + + + +
          +
          + + + +
          +
          + + + +
          +
          + + + +
          +
          + + + +
          + +
          +
          +
          + + + +
          +
          + + + +
          +
          + + + +
          +
          + + + +
          +
          + + + +
          +
          + + + +
          + +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + + + + + + + + + + + + + +
          + + + + + + + + + + + + + + + +
          + + +
          +
          +
          +
          +
          + +
          +
          + +
          + +
          + + + + + + + + + + + +
          +
          + +
          + + " style="width:150px" name="adbutton-color-2" value="#ffffff" /> + + + + + + + + + +
          +
          + +
          + + " style="width:150px" name="adbutton-border-color" value="#000000" /> + + + + " style="margin-right:5px"> + " style="width:45px" type="text" name="adbutton-border-opacity" value="1"> + + + + " style="margin-right:5px"> + " style="width:45px" type="text" name="adbutton-border-width" value="0"> +
          + + +
          +
          + +
          + + + + + " style="margin-right:5px"> + " style="width:75px" type="text" name="adbutton-fontfamily" value="Roboto"> + +
          +
          +
          + +
          + + + +
          +
          +
          + +
          + +
          +
          +
          + + + + +
          " style="display:none"> +
          +
          +
          + + + +
          +
          + +
          + +
          +
          +
          + + +
          + +
          + +
          + + + + + + + + + +
          +
          + +
          + + + " style="width:150px" name="adshape-border-color" value="#000000" /> + + + + " style="margin-right:5px"> + " style="width:45px" type="text" name="adshape-border-opacity" value="0.5"> + + + + " style="margin-right:5px"> + " style="width:45px" type="text" name="adshape-border-width" value="0"> +
          + + + +
          +
          + +
          + + + + + + + +
          +
          + + + +
          + + + + +
          +
          + + + +
          + + + + +
          + +
          +
          + +
          + " style="margin-right:10px"> + " style="width:50px" type="text" name="shape_padding[]" value="0"> + " style="width:50px" type="text" name="shape_padding[]" value="0"> + " style="width:50px" type="text" name="shape_padding[]" value="0"> + " style="width:50px" type="text" name="shape_padding[]" value="0"> + +
          +
          +
          +
          +
          +
          + + + + + + + +
          \ No newline at end of file diff --git a/plugins/revslider/admin/views/templates/slider-main-options.php b/plugins/revslider/admin/views/templates/slider-main-options.php new file mode 100644 index 0000000..a5279b4 --- /dev/null +++ b/plugins/revslider/admin/views/templates/slider-main-options.php @@ -0,0 +1,4518 @@ + + * @link http://www.themepunch.com/ + * @copyright 2015 ThemePunch + */ + + +if (!defined('ABSPATH')) { + exit(); +} + +$operations = new RevSliderOperations(); +$rs_nav = new RevSliderNavigation(); + +$arrValues = $operations->getGeneralSettingsValues(); +$arr_navigations = $rs_nav->get_all_navigations(); + +$transitions = $operations->getArrTransition(); + +$_width = (isset($arrValues['width'])) ? $arrValues['width'] : 1240; +$_width_notebook = (isset($arrValues['width_notebook'])) ? $arrValues['width_notebook'] : 1024; +$_width_tablet = (isset($arrValues['width_tablet'])) ? $arrValues['width_tablet'] : 778; +$_width_mobile = (isset($arrValues['width_mobile'])) ? $arrValues['width_mobile'] : 480; + +?> +
          +
          + +
          +
          +
          + +
          + + +
          +
          +
          + + + + +
          +

          1

          +
          +
          + + + + /> + + + + + /> + + + + + /> + + + + + /> + + + + + /> + + + + + + + + + + /> + + + + + /> + + + + + /> + + + + + /> + + + +
          + + + +
          + +
          +
          + + +

          + + +

          +

          + here', REVSLIDER_TEXTDOMAIN);?> +

          +
          +
          + + +

          + here', REVSLIDER_TEXTDOMAIN);?> +

          +
          +
          + +
          +
          + + +

          + + +

          + here how to receive your Flickr API key', REVSLIDER_TEXTDOMAIN);?> +
          +
          + + +
          +

          + + +

          +
          +
          +

          + + + +

          +
          + +
          +

          + + +

          +
          +
          +
          + +
          +
          + + +

          + + +

          +

          + + + +

          +
          +
          + + +
          +

          + + + + +

          +
          +

          + + +

          +

          + + +

          +
          +
          + +
          +
          + + +

          + + +

          +

          + + +

          +

          + + > +

          +

          + + > +

          +

          + + > +

          +
          +
          + + +

          + + +

          +

          + + +

          +

          + + +

          + register your application with Twitter to get the values', REVSLIDER_TEXTDOMAIN);?> +
          +
          + +
          +
          + + +

          + + +

          + + here',REVSLIDER_TEXTDOMAIN);?> +
          +
          + + +

          + + +

          +
          +

          + + + +

          +
          + here', REVSLIDER_TEXTDOMAIN);?> +
          +
          + +
          +
          + + +

          + + +

          +
          +
          +
          + + +
          +
          + + +
          +
          + + +
          +
          + + +
          +
          +
          + +
          +
          +
          + + +
          +
          + + + + $post_array) { + if (!empty($post_array)) { + foreach ($post_array as $cat_handle => $cat_name) { + if (strpos($cat_handle, 'option_disabled') === false) { + $sel_post_cagetory = array($cat_handle); + break; + } + } + } + if (!empty($sel_post_cagetory)) { + break; + } + } + } + }*/ + + ?> + + + +
          +
          + '; + $events_filter = RevSliderFunctions::getVal($arrFieldsParams, 'events_filter', ''); + echo '' . __('Filter Events By:', REVSLIDER_TEXTDOMAIN) . ''; + echo ''; + echo '

          '; + } + } + ?> +
          +
          + + + + + + + + + /> + + /> + + + + + + + + + + +
          +
          + +
          +
          + + + + +
          +

          2

          +
          +
          + + + + + + + + + + + + + + + + + + +
          + + +
          +
          + + + +
          + +

          3

          +
          + +
          + + + /> +
          +
          + + + /> +
          +
          + + + /> +
          +
          + +
          +
          + '; + //print_r($presets); + //echo ''; + + echo ''; + echo ''; + echo ' ' . __('Save Current Settings as Preset', REVSLIDER_TEXTDOMAIN) . ''; + echo ''; + + echo ''; + ?> + +
          +
          + +
          + + + + + +
          +

          4

          +
          + + +
          +
          + +
          + + + /> +
          +
          + + + /> +
          +
          + + + /> +
          +
          +
          +
          + +
          +
          +
          + +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          + + px + x + px + + +
          +
          +
          +
          + px +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          + + px + x + px + + + + > + +
          +
          +
          +
          + px +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          + + px + x + px + + + + > + +
          + +
          +
          +
          + px +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          + +
          +
          +
          + + px + x + px + + + + > + +
          +
          +
          +
          +
          + +
          + + + + + + +

          + + + > + +

          + + +
          +
          +
          + +
          +

          5

          +
          +
          + + + + +
          + +
          + + + + + +
          + + + +
          + + + + + +
          + + + +
          +
          +
          +
          + + + + + + "> +
          +
          + + +
          + + + +
          + + +
          +

          6

          +
          + + + +
          + + + +
          + +
          +
          + + + + +
          + + +
          + + +
          + + +
          + + + +
          +

          +
          + +

          + + + + +
          + + +
          +

          +
          + +

          + + + + +
          + + + + + + + + +
          +

          +
          + +

          + + +
          + + +
          +

          + +
          + + +

          + + + + + +
          + + + + + +
          +

          +
          + +

          + + +
          + + + + + + + + +
          +

          + +
          + + +

          + + + +
          + + + + +
          +

          +
          + +

          + +
          + + + + + +
          +

          +
          + +

          + +
          + + + +
          +

          +
          + +

          + +
          + +
          + + + + +
          +
          +
          + + +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          + +
          + +
          +
          +
          +
          + + +
          + +
          +
          +
          +
          + + +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          + +
          + +
          + +
          + +
          +
          + + + +
          +
          + +
          +
          + +
          + +
          + +
          + +
          + +
          +
          + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/revslider/admin/views/templates/sliders-list.php b/plugins/revslider/admin/views/templates/sliders-list.php new file mode 100644 index 0000000..0b645e0 --- /dev/null +++ b/plugins/revslider/admin/views/templates/sliders-list.php @@ -0,0 +1,246 @@ + +
            + getID(); + $showTitle = $slider->getShowTitle(); + $title = $slider->getTitle(); + $alias = $slider->getAlias(); + $isFromPosts = $slider->isSlidesFromPosts(); + $isFromStream = $slider->isSlidesFromStream(); + $strSource = __("Gallery",REVSLIDER_TEXTDOMAIN); + $preicon = "revicon-picture-1"; + + $is_favorite = $slider->isFavorite(); + + $shortCode = $slider->getShortcode(); + $numSlides = $slider->getNumSlides(); + $numReal = ''; + + $rowClass = ""; + $slider_type = 'gallery'; + if($isFromPosts == true){ + $strSource = __('Posts',REVSLIDER_TEXTDOMAIN); + $preicon ="revicon-doc"; + $rowClass = "class='row_alt'"; + $numReal = $slider->getNumRealSlides(); + $slider_type = 'posts'; + }elseif($isFromStream !== false){ + $strSource = __('Social',REVSLIDER_TEXTDOMAIN); + $preicon ="revicon-doc"; + $rowClass = "class='row_alt'"; + switch($isFromStream){ + case 'facebook': + $strSource = __('Facebook',REVSLIDER_TEXTDOMAIN); + $preicon ="eg-icon-facebook"; + $numReal = $slider->getNumRealSlides(false, 'facebook'); + $slider_type = 'facebook'; + break; + case 'twitter': + $strSource = __('Twitter',REVSLIDER_TEXTDOMAIN); + $preicon ="eg-icon-twitter"; + $numReal = $slider->getNumRealSlides(false, 'twitter'); + $slider_type = 'twitter'; + break; + case 'instagram': + $strSource = __('Instagram',REVSLIDER_TEXTDOMAIN); + $preicon ="eg-icon-info"; + $numReal = $slider->getNumRealSlides(false, 'instagram'); + $slider_type = 'instagram'; + break; + case 'flickr': + $strSource = __('Flickr',REVSLIDER_TEXTDOMAIN); + $preicon ="eg-icon-flickr"; + $numReal = $slider->getNumRealSlides(false, 'flickr'); + $slider_type = 'flickr'; + break; + case 'youtube': + $strSource = __('YouTube',REVSLIDER_TEXTDOMAIN); + $preicon ="eg-icon-youtube"; + $numReal = $slider->getNumRealSlides(false, 'youtube'); + $slider_type = 'youtube'; + break; + case 'vimeo': + $strSource = __('Vimeo',REVSLIDER_TEXTDOMAIN); + $preicon ="eg-icon-vimeo"; + $numReal = $slider->getNumRealSlides(false, 'vimeo'); + $slider_type = 'vimeo'; + break; + + } + + } + + $first_slide_image_thumb = array('url' => '', 'class' => 'mini-transparent', 'style' => ''); + + if(intval($numSlides) == 0){ + $first_slide_id = 'new&slider='.$id; + + + }else{ + $slides = $slider->getSlides(false); + + if(!empty($slides)){ + $first_slide_id = $slides[key($slides)]->getID(); + //$first_slide_id = ($isFromPosts == true) ? $slides[key($slides)]->templateID : $slides[key($slides)]->getID(); + + $first_slide_image_thumb = $slides[key($slides)]->get_image_attributes($slider_type); + }else{ + $first_slide_id = 'new&slider='.$id; + } + } + + $editLink = self::getViewUrl(RevSliderAdmin::VIEW_SLIDER,"id=$id"); + + $orderSlidesLink = ($isFromPosts) ? self::getViewUrl(RevSliderAdmin::VIEW_SLIDES,"id=$id") : ''; + $editSlidesLink = self::getViewUrl(RevSliderAdmin::VIEW_SLIDE,"id=$first_slide_id"); + + $showTitle = RevSliderFunctions::getHtmlLink($editLink, $showTitle); + + }catch(Exception $e){ + $errorMessage = "ERROR: ".$e->getMessage(); + $strSource = ""; + $numSlides = ""; + $isFromPosts = false; + } + + ?> +
          • +
            + + + + ".$strSource; ?> + + + + + # + + + + + + + + + + + +
            + +
            + + + + + + + + + getGeneralSettingsValues(); + + $show_dev_export = RevSliderBase::getVar($general_settings, 'show_dev_export', 'off'); + + if($show_dev_export == 'on'){ + ?> + + + + +
            +
            +
            +
          • + + +
          • +
            + + + + + + +
            +
            + + + +
            +
          • +
          + + + + + + + diff --git a/plugins/revslider/admin/views/templates/slides-list.php b/plugins/revslider/admin/views/templates/slides-list.php new file mode 100644 index 0000000..8f59ef9 --- /dev/null +++ b/plugins/revslider/admin/views/templates/slides-list.php @@ -0,0 +1,190 @@ + + +
          +
          +
          + ... +
          + +
          + +
          + + +
            + + getParam("background_type","image"); + + $bgFit = $slide->getParam("bg_fit","cover"); + $bgFitX = intval($slide->getParam("bg_fit_x","100")); + $bgFitY = intval($slide->getParam("bg_fit_y","100")); + + $bgPosition = $slide->getParam("bg_position","center center"); + $bgPositionX = intval($slide->getParam("bg_position_x","0")); + $bgPositionY = intval($slide->getParam("bg_position_y","0")); + + $bgRepeat = $slide->getParam("bg_repeat","no-repeat"); + + $bgStyle = ' '; + if($bgFit == 'percentage'){ + $bgStyle .= "background-size: ".$bgFitX.'% '.$bgFitY.'%;'; + }else{ + $bgStyle .= "background-size: ".$bgFit.";"; + } + if($bgPosition == 'percentage'){ + $bgStyle .= "background-position: ".$bgPositionX.'% '.$bgPositionY.'%;'; + }else{ + $bgStyle .= "background-position: ".$bgPosition.";"; + } + $bgStyle .= "background-repeat: ".$bgRepeat.";"; + + + //set language flag url + $isWpmlExists = RevSliderWpml::isWpmlExists(); + $useWpml = $slider->getParam("use_wpml","off"); + $showLangs = false; + if($isWpmlExists && $useWpml == "on"){ + $showLangs = true; + $arrChildLangs = $slide->getArrChildrenLangs(); + $arrSlideLangCodes = $slide->getArrChildLangCodes(); + + $addItemStyle = ""; + if(RevSliderWpml::isAllLangsInArray($arrSlideLangCodes)) + $addItemStyle = "style='display:none'"; + } + + $imageFilepath = $slide->getImageFilepath(); + $urlImageForView = $slide->getThumbUrl(); + + $slideTitle = $slide->getParam("title","Slide"); + $title = $slideTitle; + $filename = $slide->getImageFilename(); + + $imageAlt = stripslashes($slideTitle); + if(empty($imageAlt)) + $imageAlt = "slide"; + + if($bgType == "image") + $title .= " (".$filename.")"; + + $slideid = $slide->getID(); + + $urlEditSlide = self::getViewUrl(RevSliderAdmin::VIEW_SLIDE,"id=$slideid"); + $linkEdit = RevSliderFunctions::getHtmlLink($urlEditSlide, $title); + + $state = $slide->getParam("state","published"); + + ?> +
          • + + + + + +
            ">
            + +
            ">
            + + +
            + +
            + + +
            + +
            + + +
            + getParam("slide_bg_color","#d0d0d0"); + ?> +
            + +
            + +
            + + + + + + + + + + + +
            + +
            +
            +
            + +
              + +
            • + + +
            • + +
            • +
              >
              + +
            • +
            + +
          • + +
          + +
          +
          \ No newline at end of file diff --git a/plugins/revslider/admin/views/templates/slides.php b/plugins/revslider/admin/views/templates/slides.php new file mode 100644 index 0000000..ed9675a --- /dev/null +++ b/plugins/revslider/admin/views/templates/slides.php @@ -0,0 +1,60 @@ + +
          + +
          + +
          +
          +

          : getTitle(); ?>

          + + + +
          + +
          + = 5){?> + + + + + + + + + + + + + +
          +
          + +
          +
          + " href='javascript:void(0)' > + + + + + + + + + + + +
          + + + + \ No newline at end of file diff --git a/plugins/revslider/admin/views/templates/template-selector.php b/plugins/revslider/admin/views/templates/template-selector.php new file mode 100644 index 0000000..78a6528 --- /dev/null +++ b/plugins/revslider/admin/views/templates/template-selector.php @@ -0,0 +1,270 @@ +getTemplateSlides(); +$tp_templates = $tmpl->getThemePunchTemplateSlides(); +$tp_template_slider = $tmpl->getThemePunchTemplateSliders(); + +$tmp_slider = new RevSlider(); +$all_slider = $tmp_slider->getArrSliders(); + +?> + +
          + +

          + +
          + +
          + + + +
          + + +
          + write_template_markup($template); + } + }*/ + + if(!empty($tp_template_slider)){ + foreach($tp_template_slider as $m_slider){ + if(!isset($m_slider['installed'])){ + + $c_slider = new RevSlider(); + $c_slider->initByDBData($m_slider); + $c_slides = $tmpl->getThemePunchTemplateSlides(array($m_slider)); + $c_title = $c_slider->getTitle(); + $width = $c_slider->getParam("width",1240); + $height = $c_slider->getParam("height",868); + + if(!empty($c_slides)){ + ?> +
          + '.$c_title.''; + foreach($c_slides as $c_slide){ + $c_slide['settings']['width'] = $width; + $c_slide['settings']['height'] = $height; + + $tmpl->write_template_markup($c_slide); + } + ?> +
          +
          getThemePunchTemplateDefaultSlides($m_slider['alias']); + + if(!empty($c_slides)){ + ?> +
          + '.$m_slider['title'].''; + foreach($c_slides as $key => $c_slide){ + $c_slide['width'] = $m_slider['width']; + $c_slide['height'] = $m_slider['height']; + $c_slide['uid'] = $m_slider['uid']; + $c_slide['number'] = $key; + $c_slide['zip'] = $m_slider['zip']; + $tmpl->write_import_template_markup_slide($c_slide); + } + ?> +
          +
          +
          +
          + + +
          +
          + write_template_markup($template); + } + } + ?> +
          +
          +
          +
          + + + +
          + getSlides(false); + //$c_slides = $c_slider->getArrSlideNames(); + $c_title = $c_slider->getTitle(); + $width = $c_slider->getParam("width",1240); + $height = $c_slider->getParam("height",868); + + if(!empty($c_slides)){ + ?> +
          + '.$c_title.''; + foreach($c_slides as $c_slide){ + $mod_slide = array(); + $mod_slide['id'] = $c_slide->getID(); + $mod_slide['params'] = $c_slide->getParams(); + //$mod_slide['layers'] = $c_slide->getLayers(); + $mod_slide['settings'] = $c_slide->getSettings(); + $mod_slide['settings']['width'] = $width; + $mod_slide['settings']['height'] = $height; + + $tmpl->write_template_markup($mod_slide); + + } + ?> +
          +
          +
          +
          + + + + +
          " class="dialog_import_template_slide" style="display:none"> +
          + + + "> + + + + + +

          :

          +

          +

          + "> + +

          + + + + + + + + + + + + +
          + +
          +
          + \ No newline at end of file diff --git a/plugins/revslider/admin/views/templates/template-slider-selector.php b/plugins/revslider/admin/views/templates/template-slider-selector.php new file mode 100644 index 0000000..fd533b2 --- /dev/null +++ b/plugins/revslider/admin/views/templates/template-slider-selector.php @@ -0,0 +1,253 @@ +getThemePunchTemplateSliders(); +$author_template_slider = $tmpl->getDefaultTemplateSliders(); + +$tmp_slider = new RevSlider(); +$all_slider = $tmp_slider->getArrSliders(); + +?> + +
          + +

          + +
          + +
          + + $v){ + ?> + + +
          + + +
          + initByDBData($m_slider); + $c_slides = $tmpl->getThemePunchTemplateSlides(array($m_slider)); + $c_title = $c_slider->getTitle(); + $width = $c_slider->getParam("width",1240); + $height = $c_slider->getParam("height",868); + + if(!empty($c_slides)){ + ?> +
          + '.$c_title.''; + foreach($c_slides as $c_slide){ + $c_slide['img'] = $m_slider['img']; //set slide image + $c_slide['settings']['width'] = $width; + $c_slide['settings']['height'] = $height; + + $tmpl->write_template_markup($c_slide, $c_slider->getID()); //add the Slider ID as we want to add a Slider and no Slide + break; //only write the first, as we want to add a Slider and not a Slide + } + ?> +
          +
          +
          + '.$m_slider['title'].''; + $tmpl->write_import_template_markup($m_slider); //add the Slider ID as we want to add a Slider and no Slide + ?> +
          + +
          + +
          +
          + + $v){ + ?> + +
          + initByDBData($m_slider); + $c_slides = $tmpl->getThemePunchTemplateSlides(array($m_slider)); + $c_title = $c_slider->getTitle(); + $width = $c_slider->getParam("width",1240); + $height = $c_slider->getParam("height",868); + + if(!empty($c_slides)){ + ?> +
          + '.$c_title.''; + foreach($c_slides as $c_slide){ + $c_slide['img'] = $m_slider['img']; //set slide image + $c_slide['settings']['width'] = $width; + $c_slide['settings']['height'] = $height; + + $tmpl->write_template_markup($c_slide, $c_slider->getID()); //add the Slider ID as we want to add a Slider and no Slide + break; //only write the first, as we want to add a Slider and not a Slide + } + ?> +
          +
          +
          + '.$m_slider['title'].''; + $tmpl->write_import_template_markup($m_slider); //add the Slider ID as we want to add a Slider and no Slide + ?> +
          + +
          + +
          +
          + +
          + + + + + +
          " class="dialog_import_template_slider" style="display:none"> +
          + + + "> + + +

          :

          +

          +

          + "> + + + + + + + + + + + + + + +
          + + +
          +
          \ No newline at end of file diff --git a/plugins/revslider/admin/views/templates/wpml-selector.php b/plugins/revslider/admin/views/templates/wpml-selector.php new file mode 100644 index 0000000..237c6bc --- /dev/null +++ b/plugins/revslider/admin/views/templates/wpml-selector.php @@ -0,0 +1,84 @@ +"."\n"; +$htmlBefore .= " ".$textDelete."\n"; +$htmlBefore .= ""."\n"; + +$htmlBefore .= "
        • "."\n"; +$htmlBefore .= " ".$textEdit."\n"; +$htmlBefore .= "
        • "."\n"; + +$htmlBefore .= "
        • "."\n"; +$htmlBefore .= " ".$textPreview."\n"; +$htmlBefore .= "
        • "."\n"; + +$htmlBefore .= "
        • "."\n"; +$htmlBefore .= "
          "."\n"; +$htmlBefore .= "
        • "."\n"; + +$langFloatMenu = RevSliderWpml::getLangsWithFlagsHtmlList("id='slides_langs_float' class='slides_langs_float'",$htmlBefore); + +?> + + +
          +
          +
          + + + +
            + getParentSlide(); //go to parent slide if nessecary here + $arrSlideLangCodes = $langSlide->getArrChildLangCodes(); + $parent_id = $langSlide->getID(); + + $addItemStyle = ""; + if(RevSliderWpml::isAllLangsInArray($arrSlideLangCodes)) + $addItemStyle = "style='display:none'"; + + foreach($arrChildLangs as $arrLang){ + $isParent = RevSliderFunctions::boolToStr($arrLang["isparent"]); + $childSlideID = $arrLang["slideid"]; + $lang = $arrLang["lang"]; + $urlFlag = RevSliderWpml::getFlagUrl($lang); + $langTitle = RevSliderWpml::getLangTitle($lang); + $class = ""; + $urlEditSlide = self::getViewUrl(RevSliderAdmin::VIEW_SLIDE,"id=$childSlideID"); + if($childSlideID == $slideID){ + $class = "lang-selected"; + $urlEditSlide = "javascript:void(0)"; + } + if($lang == 'all'){ + $urlFlag = RS_PLUGIN_URL.'admin/assets/images/icon-all.png'; + } + ?> +
          • + + +
          • + +
          • +
            >
            + +
          • +
          +
          +
          +
          diff --git a/plugins/revslider/backup/captions-original.css b/plugins/revslider/backup/captions-original.css new file mode 100644 index 0000000..5e1fb54 --- /dev/null +++ b/plugins/revslider/backup/captions-original.css @@ -0,0 +1,650 @@ +.tp-caption.medium_grey { +position:absolute; +color:#fff; +text-shadow:0px 2px 5px rgba(0, 0, 0, 0.5); +font-weight:700; +font-size:20px; +line-height:20px; +font-family:Arial; +padding:2px 4px; +margin:0px; +border-width:0px; +border-style:none; +background-color:#888; +white-space:nowrap; +} + +.tp-caption.small_text { +position:absolute; +color:#fff; +text-shadow:0px 2px 5px rgba(0, 0, 0, 0.5); +font-weight:700; +font-size:14px; +line-height:20px; +font-family:Arial; +margin:0px; +border-width:0px; +border-style:none; +white-space:nowrap; +} + +.tp-caption.medium_text { +position:absolute; +color:#fff; +text-shadow:0px 2px 5px rgba(0, 0, 0, 0.5); +font-weight:700; +font-size:20px; +line-height:20px; +font-family:Arial; +margin:0px; +border-width:0px; +border-style:none; +white-space:nowrap; +} + +.tp-caption.large_text { +position:absolute; +color:#fff; +text-shadow:0px 2px 5px rgba(0, 0, 0, 0.5); +font-weight:700; +font-size:40px; +line-height:40px; +font-family:Arial; +margin:0px; +border-width:0px; +border-style:none; +white-space:nowrap; +} + +.tp-caption.very_large_text { +position:absolute; +color:#fff; +text-shadow:0px 2px 5px rgba(0, 0, 0, 0.5); +font-weight:700; +font-size:60px; +line-height:60px; +font-family:Arial; +margin:0px; +border-width:0px; +border-style:none; +white-space:nowrap; +letter-spacing:-2px; +} + +.tp-caption.very_big_white { +position:absolute; +color:#fff; +text-shadow:none; +font-weight:800; +font-size:60px; +line-height:60px; +font-family:Arial; +margin:0px; +border-width:0px; +border-style:none; +white-space:nowrap; +padding:0px 4px; +padding-top:1px; +background-color:#000; +} + +.tp-caption.very_big_black { +position:absolute; +color:#000; +text-shadow:none; +font-weight:700; +font-size:60px; +line-height:60px; +font-family:Arial; +margin:0px; +border-width:0px; +border-style:none; +white-space:nowrap; +padding:0px 4px; +padding-top:1px; +background-color:#fff; +} + +.tp-caption.modern_medium_fat { +position:absolute; +color:#000; +text-shadow:none; +font-weight:800; +font-size:24px; +line-height:20px; +font-family:"Open Sans", sans-serif; +margin:0px; +border-width:0px; +border-style:none; +white-space:nowrap; +} + +.tp-caption.modern_medium_fat_white { +position:absolute; +color:#fff; +text-shadow:none; +font-weight:800; +font-size:24px; +line-height:20px; +font-family:"Open Sans", sans-serif; +margin:0px; +border-width:0px; +border-style:none; +white-space:nowrap; +} + +.tp-caption.modern_medium_light { +position:absolute; +color:#000; +text-shadow:none; +font-weight:300; +font-size:24px; +line-height:20px; +font-family:"Open Sans", sans-serif; +margin:0px; +border-width:0px; +border-style:none; +white-space:nowrap; +} + +.tp-caption.modern_big_bluebg { +position:absolute; +color:#fff; +text-shadow:none; +font-weight:800; +font-size:30px; +line-height:36px; +font-family:"Open Sans", sans-serif; +padding:3px 10px; +margin:0px; +border-width:0px; +border-style:none; +background-color:#4e5b6c; +letter-spacing:0; +} + +.tp-caption.modern_big_redbg { +position:absolute; +color:#fff; +text-shadow:none; +font-weight:300; +font-size:30px; +line-height:36px; +font-family:"Open Sans", sans-serif; +padding:3px 10px; +padding-top:1px; +margin:0px; +border-width:0px; +border-style:none; +background-color:#de543e; +letter-spacing:0; +} + +.tp-caption.modern_small_text_dark { +position:absolute; +color:#555; +text-shadow:none; +font-size:14px; +line-height:22px; +font-family:Arial; +margin:0px; +border-width:0px; +border-style:none; +white-space:nowrap; +} + +.tp-caption.boxshadow { +-moz-box-shadow:0px 0px 20px rgba(0, 0, 0, 0.5); +-webkit-box-shadow:0px 0px 20px rgba(0, 0, 0, 0.5); +box-shadow:0px 0px 20px rgba(0, 0, 0, 0.5); +} + +.tp-caption.black { +color:#000; +text-shadow:none; +} + +.tp-caption.noshadow { +text-shadow:none; +} + +.tp-caption a { +color:#ff7302; +text-shadow:none; +-webkit-transition:all 0.2s ease-out; +-moz-transition:all 0.2s ease-out; +-o-transition:all 0.2s ease-out; +-ms-transition:all 0.2s ease-out; +} + +.tp-caption a:hover { +color:#ffa902; +} + +.tp-caption.thinheadline_dark { +position:absolute; +color:rgba(0,0,0,0.85); +text-shadow:none; +font-weight:300; +font-size:30px; +line-height:30px; +font-family:"Open Sans"; +background-color:transparent; +} + +.tp-caption.thintext_dark { +position:absolute; +color:rgba(0,0,0,0.85); +text-shadow:none; +font-weight:300; +font-size:16px; +line-height:26px; +font-family:"Open Sans"; +background-color:transparent; +} + +.tp-caption.largeblackbg { +position:absolute; +color:#fff; +text-shadow:none; +font-weight:300; +font-size:50px; +line-height:70px; +font-family:"Open Sans"; +background-color:#000; +padding:0px 20px; +-webkit-border-radius:0px; +-moz-border-radius:0px; +border-radius:0px; +} + +.tp-caption.largepinkbg { +position:absolute; +color:#fff; +text-shadow:none; +font-weight:300; +font-size:50px; +line-height:70px; +font-family:"Open Sans"; +background-color:#db4360; +padding:0px 20px; +-webkit-border-radius:0px; +-moz-border-radius:0px; +border-radius:0px; +} + +.tp-caption.largewhitebg { +position:absolute; +color:#000; +text-shadow:none; +font-weight:300; +font-size:50px; +line-height:70px; +font-family:"Open Sans"; +background-color:#fff; +padding:0px 20px; +-webkit-border-radius:0px; +-moz-border-radius:0px; +border-radius:0px; +} + +.tp-caption.largegreenbg { +position:absolute; +color:#fff; +text-shadow:none; +font-weight:300; +font-size:50px; +line-height:70px; +font-family:"Open Sans"; +background-color:#67ae73; +padding:0px 20px; +-webkit-border-radius:0px; +-moz-border-radius:0px; +border-radius:0px; +} + +.tp-caption.excerpt { +font-size:36px; +line-height:36px; +font-weight:700; +font-family:Arial; +color:#ffffff; +text-decoration:none; +background-color:rgba(0, 0, 0, 1); +text-shadow:none; +margin:0px; +letter-spacing:-1.5px; +padding:1px 4px 0px 4px; +width:150px; +white-space:normal !important; +height:auto; +border-width:0px; +border-color:rgb(255, 255, 255); +border-style:none; +} + +.tp-caption.large_bold_grey { +font-size:60px; +line-height:60px; +font-weight:800; +font-family:"Open Sans"; +color:rgb(102, 102, 102); +text-decoration:none; +background-color:transparent; +text-shadow:none; +margin:0px; +padding:1px 4px 0px; +border-width:0px; +border-color:rgb(255, 214, 88); +border-style:none; +} + +.tp-caption.medium_thin_grey { +font-size:34px; +line-height:30px; +font-weight:300; +font-family:"Open Sans"; +color:rgb(102, 102, 102); +text-decoration:none; +background-color:transparent; +padding:1px 4px 0px; +text-shadow:none; +margin:0px; +border-width:0px; +border-color:rgb(255, 214, 88); +border-style:none; +} + +.tp-caption.small_thin_grey { +font-size:18px; +line-height:26px; +font-weight:300; +font-family:"Open Sans"; +color:rgb(117, 117, 117); +text-decoration:none; +background-color:transparent; +padding:1px 4px 0px; +text-shadow:none; +margin:0px; +border-width:0px; +border-color:rgb(255, 214, 88); +border-style:none; +} + +.tp-caption.lightgrey_divider { +text-decoration:none; +background-color:rgba(235, 235, 235, 1); +width:370px; +height:3px; +background-position:initial initial; +background-repeat:initial initial; +border-width:0px; +border-color:rgb(34, 34, 34); +border-style:none; +} + +.tp-caption.large_bold_darkblue { +font-size:58px; +line-height:60px; +font-weight:800; +font-family:"Open Sans"; +color:rgb(52, 73, 94); +text-decoration:none; +background-color:transparent; +border-width:0px; +border-color:rgb(255, 214, 88); +border-style:none; +} + +.tp-caption.medium_bg_darkblue { +font-size:20px; +line-height:20px; +font-weight:800; +font-family:"Open Sans"; +color:rgb(255, 255, 255); +text-decoration:none; +background-color:rgb(52, 73, 94); +padding:10px; +border-width:0px; +border-color:rgb(255, 214, 88); +border-style:none; +} + +.tp-caption.medium_bold_red { +font-size:24px; +line-height:30px; +font-weight:800; +font-family:"Open Sans"; +color:rgb(227, 58, 12); +text-decoration:none; +background-color:transparent; +padding:0px; +border-width:0px; +border-color:rgb(255, 214, 88); +border-style:none; +} + +.tp-caption.medium_light_red { +font-size:21px; +line-height:26px; +font-weight:300; +font-family:"Open Sans"; +color:rgb(227, 58, 12); +text-decoration:none; +background-color:transparent; +padding:0px; +border-width:0px; +border-color:rgb(255, 214, 88); +border-style:none; +} + +.tp-caption.medium_bg_red { +font-size:20px; +line-height:20px; +font-weight:800; +font-family:"Open Sans"; +color:rgb(255, 255, 255); +text-decoration:none; +background-color:rgb(227, 58, 12); +padding:10px; +border-width:0px; +border-color:rgb(255, 214, 88); +border-style:none; +} + +.tp-caption.medium_bold_orange { +font-size:24px; +line-height:30px; +font-weight:800; +font-family:"Open Sans"; +color:rgb(243, 156, 18); +text-decoration:none; +background-color:transparent; +border-width:0px; +border-color:rgb(255, 214, 88); +border-style:none; +} + +.tp-caption.medium_bg_orange { +font-size:20px; +line-height:20px; +font-weight:800; +font-family:"Open Sans"; +color:rgb(255, 255, 255); +text-decoration:none; +background-color:rgb(243, 156, 18); +padding:10px; +border-width:0px; +border-color:rgb(255, 214, 88); +border-style:none; +} + +.tp-caption.grassfloor { +text-decoration:none; +background-color:rgba(160, 179, 151, 1); +width:4000px; +height:150px; +border-width:0px; +border-color:rgb(34, 34, 34); +border-style:none; +} + +.tp-caption.large_bold_white { +font-size:58px; +line-height:60px; +font-weight:800; +font-family:"Open Sans"; +color:rgb(255, 255, 255); +text-decoration:none; +background-color:transparent; +border-width:0px; +border-color:rgb(255, 214, 88); +border-style:none; +} + +.tp-caption.medium_light_white { +font-size:30px; +line-height:36px; +font-weight:300; +font-family:"Open Sans"; +color:rgb(255, 255, 255); +text-decoration:none; +background-color:transparent; +padding:0px; +border-width:0px; +border-color:rgb(255, 214, 88); +border-style:none; +} + +.tp-caption.mediumlarge_light_white { +font-size:34px; +line-height:40px; +font-weight:300; +font-family:"Open Sans"; +color:rgb(255, 255, 255); +text-decoration:none; +background-color:transparent; +padding:0px; +border-width:0px; +border-color:rgb(255, 214, 88); +border-style:none; +} + +.tp-caption.mediumlarge_light_white_center { +font-size:34px; +line-height:40px; +font-weight:300; +font-family:"Open Sans"; +color:#ffffff; +text-decoration:none; +background-color:transparent; +padding:0px 0px 0px 0px; +text-align:center; +border-width:0px; +border-color:rgb(255, 214, 88); +border-style:none; +} + +.tp-caption.medium_bg_asbestos { +font-size:20px; +line-height:20px; +font-weight:800; +font-family:"Open Sans"; +color:rgb(255, 255, 255); +text-decoration:none; +background-color:rgb(127, 140, 141); +padding:10px; +border-width:0px; +border-color:rgb(255, 214, 88); +border-style:none; +} + +.tp-caption.medium_light_black { +font-size:30px; +line-height:36px; +font-weight:300; +font-family:"Open Sans"; +color:rgb(0, 0, 0); +text-decoration:none; +background-color:transparent; +padding:0px; +border-width:0px; +border-color:rgb(255, 214, 88); +border-style:none; +} + +.tp-caption.large_bold_black { +font-size:58px; +line-height:60px; +font-weight:800; +font-family:"Open Sans"; +color:rgb(0, 0, 0); +text-decoration:none; +background-color:transparent; +border-width:0px; +border-color:rgb(255, 214, 88); +border-style:none; +} + +.tp-caption.mediumlarge_light_darkblue { +font-size:34px; +line-height:40px; +font-weight:300; +font-family:"Open Sans"; +color:rgb(52, 73, 94); +text-decoration:none; +background-color:transparent; +padding:0px; +border-width:0px; +border-color:rgb(255, 214, 88); +border-style:none; +} + +.tp-caption.small_light_white { +font-size:17px; +line-height:28px; +font-weight:300; +font-family:"Open Sans"; +color:rgb(255, 255, 255); +text-decoration:none; +background-color:transparent; +padding:0px; +border-width:0px; +border-color:rgb(255, 214, 88); +border-style:none; +} + +.tp-caption.roundedimage { +border-width:0px; +border-color:rgb(34, 34, 34); +border-style:none; +} + +.tp-caption.large_bg_black { +font-size:40px; +line-height:40px; +font-weight:800; +font-family:"Open Sans"; +color:rgb(255, 255, 255); +text-decoration:none; +background-color:rgb(0, 0, 0); +padding:10px 20px 15px; +border-width:0px; +border-color:rgb(255, 214, 88); +border-style:none; +} + +.tp-caption.mediumwhitebg { +font-size:30px; +line-height:30px; +font-weight:300; +font-family:"Open Sans"; +color:rgb(0, 0, 0); +text-decoration:none; +background-color:rgb(255, 255, 255); +padding:5px 15px 10px; +text-shadow:none; +border-width:0px; +border-color:rgb(0, 0, 0); +border-style:none; +} \ No newline at end of file diff --git a/plugins/revslider/backup/index.php b/plugins/revslider/backup/index.php new file mode 100644 index 0000000..e69de29 diff --git a/plugins/revslider/includes/extension.class.php b/plugins/revslider/includes/extension.class.php new file mode 100644 index 0000000..eca169e --- /dev/null +++ b/plugins/revslider/includes/extension.class.php @@ -0,0 +1,213 @@ + + * @link http://www.revolution.themepunch.com/ + * @copyright 2015 ThemePunch + */ + +/* Provider: - * + * @package RevSliderExtension + * @author ThemePunch + */ + +if( !defined( 'ABSPATH') ) exit(); + +class RevSliderExtension { + + public function __construct() { + + $this->init_essential_grid_extensions(); + + } + + + /* Provider: - ************************** + * Setup part for Revslider inclusion into Essential Grid + ***************************/ + + /* Provider: - * + * Do all initializations for RevSlider integration + */ + public function init_essential_grid_extensions(){ + + if(!class_exists('Essential_Grid')) return false; //only add if Essential Grid is installed + + add_filter('essgrid_set_ajax_source_order', array($this, 'add_slider_to_eg_ajax')); + add_filter('essgrid_handle_ajax_content', array($this, 'set_slider_values_to_eg_ajax'), 10, 4); + add_action('essgrid_add_meta_options', array($this, 'add_eg_additional_meta_field')); + add_action('essgrid_save_meta_options', array($this, 'save_eg_additional_meta_field'), 10, 2); + + //only do on frontend + + add_action('admin_head', array($this, 'add_eg_additional_inline_javascript')); + add_action('wp_head', array($this, 'add_eg_additional_inline_javascript')); + + } + + + /* Provider: - * + * Add Slider to the List of choosable media + */ + public function add_slider_to_eg_ajax($media){ + + $media['revslider'] = array('name' => __('Slider Revolution', REVSLIDER_TEXTDOMAIN), 'type' => 'ccw'); + + return $media; + } + + + /* Provider: - * + * Add Slider to the List of choosable media + */ + public function set_slider_values_to_eg_ajax($handle, $media_sources, $post, $grid_id){ + + if($handle !== 'revslider') return false; + + $slider_source = ''; + + $values = get_post_custom($post['ID']); + + if(isset($values['eg_sources_revslider'])){ + if(isset($values['eg_sources_revslider'][0])) + $slider_source = @$values['eg_sources_revslider'][0]; + else + $slider_source = @$values['eg_sources_revslider']; + } + + if($slider_source === ''){ + return false; + }else{ + return ' data-ajaxtype="'.$handle.'" data-ajaxsource="'.$slider_source.'"'; + } + + } + + + /* Provider: - * + * Adds custom meta field into the essential grid meta box for post/pages + */ + public function add_eg_additional_meta_field($values){ + + $sld = new RevSlider(); + $sliders = $sld->getArrSliders(); + $shortcodes = array(); + if(!empty($sliders)){ + $first = true; + foreach($sliders as $slider){ + $name = $slider->getParam('shortcode','false'); + if($name != 'false'){ + $shortcodes[$slider->getID()] = $name; + $first = false; + } + } + } + + $selected_slider = (isset($values['eg_sources_revslider'])) ? $values['eg_sources_revslider'] : ''; + if($selected_slider == '') $selected_slider[0] = ''; + ?> +

          + +

          +

          + +

          + + + \ No newline at end of file diff --git a/plugins/revslider/includes/external-sources.class.php b/plugins/revslider/includes/external-sources.class.php new file mode 100644 index 0000000..a81c75e --- /dev/null +++ b/plugins/revslider/includes/external-sources.class.php @@ -0,0 +1,1062 @@ + + */ + +class RevSliderFacebook { + /* Provider: - * + * Stream Array + * + * @since 1.0.0 + * @access private + * @var array $stream Stream Data Array + */ + private $stream; + + /* Provider: - * + * Transient seconds + * + * @since 1.0.0 + * @access private + * @var number $transient Transient time in seconds + */ + private $transient_sec; + + public function __construct($transient_sec = 1200) { + $this->transient_sec = $transient_sec; + } + + /* Provider: - * + * Get User ID from its URL + * + * @since 1.0.0 + * @param string $user_url URL of the Page + */ + public function get_user_from_url($user_url){ + $theid = str_replace("https", "", $user_url); + $theid = str_replace("http", "", $theid); + $theid = str_replace("://", "", $theid); + $theid = str_replace("www.", "", $theid); + $theid = str_replace("facebook", "", $theid); + $theid = str_replace(".com", "", $theid); + $theid = str_replace("/", "", $theid); + $theid = explode("?", $theid); + return trim($theid[0]); + } + + /* Provider: - * + * Get Photosets List from User + * + * @since 1.0.0 + * @param string $user_id Facebook User id (not name) + * @param int $item_count number of photos to pull + */ + public function get_photo_sets($user_id,$item_count=10,$app_id,$app_secret){ + //photoset params + $oauth = wp_remote_fopen("https://graph.facebook.com/oauth/access_token?type=client_cred&client_id=".$app_id."&client_secret=".$app_secret); + $url = "https://graph.facebook.com/$user_id/albums?".$oauth; + $photo_sets_list = json_decode(wp_remote_fopen($url)); + //echo '
          ';
          +		//print_r($photo_sets_list);
          +		//echo '
          '; + + if(isset($photo_sets_list->data)) + return $photo_sets_list->data; + else return ''; + } + + /* Provider: - * + * Get Photoset Photos + * + * @since 1.0.0 + * @param string $photo_set_id Photoset ID + * @param int $item_count number of photos to pull + */ + public function get_photo_set_photos($photo_set_id,$item_count=10,$app_id,$app_secret){ + $oauth = wp_remote_fopen("https://graph.facebook.com/oauth/access_token?type=client_cred&client_id=".$app_id."&client_secret=".$app_secret); + $url = "https://graph.facebook.com/$photo_set_id?fields=photos&".$oauth; + + $transient_name = 'revslider_' . md5($url); + + if ($this->transient_sec > 0 && false !== ($data = get_transient( $transient_name))) + return ($data); + + $photo_set_photos = json_decode(wp_remote_fopen($url)); + if(isset($photo_set_photos->photos->data)){ + set_transient( $transient_name, $photo_set_photos->photos->data, $this->transient_sec ); + return $photo_set_photos->photos->data; + } + else return ''; + } + + /* Provider: - * + * Get Photosets List from User as Options for Selectbox + * + * @since 1.0.0 + * @param string $user_url Facebook User id (not name) + * @param int $item_count number of photos to pull + */ + public function get_photo_set_photos_options($user_url,$current_album,$app_id,$app_secret,$item_count=99){ + $user_id = $this->get_user_from_url($user_url); + $photo_sets = $this->get_photo_sets($user_id,999,$app_id,$app_secret); + $return = array(); + if(is_array($photo_sets)){ + foreach($photo_sets as $photo_set){ + if(empty($photo_set->description)) $photo_set->description = ""; + if(empty($photo_set->count)) $photo_set->count = 0; + $return[] = '"'; + } + } + return $return; + } + + + /* Provider: - * + * Get Feed + * + * @since 1.0.0 + * @param string $user User ID + * @param int $item_count number of itmes to pull + */ + public function get_photo_feed($user,$app_id,$app_secret,$item_count=10){ + $oauth = wp_remote_fopen("https://graph.facebook.com/oauth/access_token?type=client_cred&client_id=".$app_id."&client_secret=".$app_secret); + $url = "https://graph.facebook.com/$user/feed?".$oauth; + + $transient_name = 'revslider_' . md5($url); + if ($this->transient_sec > 0 && false !== ($data = get_transient( $transient_name))) + return ($data); + + $feed = json_decode(wp_remote_fopen($url)); + if(isset($feed->data)){ + set_transient( $transient_name, $feed->data, $this->transient_sec ); + return $feed->data; + } + else return ''; + } + + /* Provider: - * + * Decode URL from feed + * + * @since 1.0.0 + * @param string $url facebook Output Data + */ + private function decode_facebook_url($url) { + $url = str_replace('u00253A',':',$url); + $url = str_replace('\u00255C\u00252F','/',$url); + $url = str_replace('u00252F','/',$url); + $url = str_replace('u00253F','?',$url); + $url = str_replace('u00253D','=',$url); + $url = str_replace('u002526','&',$url); + return $url; + } +} // End Class + +/* Provider: - * + * Twitter + * + * with help of the API this class delivers all kind of tweeted images from twitter + * + * @package socialstreams + * @subpackage socialstreams/twitter + * @author ThemePunch + */ + +class RevSliderTwitter { + + /* Provider: - * + * Consumer Key + * + * @since 1.0.0 + * @access private + * @var string $consumer_key Consumer Key + */ + private $consumer_key; + + /* Provider: - * + * Consumer Secret + * + * @since 1.0.0 + * @access private + * @var string $consumer_secret Consumer Secret + */ + private $consumer_secret; + + /* Provider: - * + * Access Token + * + * @since 1.0.0 + * @access private + * @var string $access_token Access Token + */ + private $access_token; + + /* Provider: - * + * Access Token Secret + * + * @since 1.0.0 + * @access private + * @var string $access_token_secret Access Token Secret + */ + private $access_token_secret; + + /* Provider: - * + * Twitter Account + * + * @since 1.0.0 + * @access private + * @var string $twitter_account Account User Name + */ + private $twitter_account; + + /* Provider: - * + * Transient seconds + * + * @since 1.0.0 + * @access private + * @var number $transient Transient time in seconds + */ + private $transient_sec; + + /* Provider: - * + * Stream Array + * + * @since 1.0.0 + * @access private + * @var array $stream Stream Data Array + */ + private $stream; + + /* Provider: - * + * Initialize the class and set its properties. + * + * @since 1.0.0 + * @param string $consumer_key Twitter App Registration Consomer Key + * @param string $consumer_secret Twitter App Registration Consomer Secret + * @param string $access_token Twitter App Registration Access Token + * @param string $access_token_secret Twitter App Registration Access Token Secret + */ + public function __construct($consumer_key,$consumer_secret,$access_token,$access_token_secret,$transient_sec = 1200) { + $this->consumer_key = $consumer_key; + $this->consumer_secret = $consumer_secret; + $this->access_token = $access_token; + $this->access_token_secret = $access_token_secret; + $this->transient_sec = $transient_sec; + } + + /* Provider: - * + * Get Tweets + * + * @since 1.0.0 + * @param string $twitter_account Twitter account without trailing @ char + */ + public function get_public_photos($twitter_account,$include_rts,$exclude_replies,$count,$imageonly){ + + //require_once( 'class-wp-twitter-api.php' ); + // Set your personal data retrieved at https://dev.twitter.com/apps + $credentials = array( + 'consumer_key' => $this->consumer_key, + 'consumer_secret' => $this->consumer_secret + ); + // Let's instantiate our class with our credentials + $twitter_api = new RevSliderTwitterApi( $credentials , $this->transient_sec); + + $include_rts = $include_rts=="on" ? "true" : "false"; + $exclude_replies = $include_rts=="on" ? "false" : "true"; + + $query = 'count=500&include_entities=true&include_rts='.$include_rts.'&exclude_replies='.$exclude_replies.'&screen_name='.$twitter_account; + + $tweets = $twitter_api->query( $query ); + + if(!empty($tweets)){ + return $tweets; + } + else return ''; + } + + + /* Provider: - * + * Find Key in array and return value (multidim array possible) + * + * @since 1.0.0 + * @param string $key Needle + * @param array $form Haystack + */ + public function array_find_element_by_key($key, $form) { + if (is_array($form) && array_key_exists($key, $form)) { + $ret = $form[$key]; + return $ret; + } + if(is_array($form)) + foreach ($form as $k => $v) { + if (is_array($v)) { + $ret = $this->array_find_element_by_key($key, $form[$k]); + if ($ret) { + return $ret; + } + } + } + return FALSE; + } +} // End Class + +/* Provider: - * +* Class WordPress Twitter API +* +* https://github.com/micc83/Twitter-API-1.1-Client-for-Wordpress/blob/master/class-wp-twitter-api.php +* @version 1.0.0 +*/ +class RevSliderTwitterApi { + + var $bearer_token, + + // Default credentials + $args = array( + 'consumer_key' => 'default_consumer_key', + 'consumer_secret' => 'default_consumer_secret' + ), + + // Default type of the resource and cache duration + $query_args = array( + 'type' => 'statuses/user_timeline', + 'cache' => 1800 + ), + + $has_error = false; + + /* Provider: - * + * WordPress Twitter API Constructor + * + * @param array $args + */ + public function __construct( $args = array() , $transient_sec = 1200 ) { + + if ( is_array( $args ) && !empty( $args ) ) + $this->args = array_merge( $this->args, $args ); + + if ( ! $this->bearer_token = get_option( 'twitter_bearer_token' ) ) + $this->bearer_token = $this->get_bearer_token(); + + $this->query_args['cache'] = $transient_sec; + } + + /* Provider: - * + * Get the token from oauth Twitter API + * + * @return string Oauth Token + */ + private function get_bearer_token() { + + $bearer_token_credentials = $this->args['consumer_key'] . ':' . $this->args['consumer_secret']; + $bearer_token_credentials_64 = base64_encode( $bearer_token_credentials ); + + $args = array( + 'method' => 'POST', + 'timeout' => 5, + 'redirection' => 5, + 'httpversion' => '1.0', + 'blocking' => true, + 'headers' => array( + 'Authorization' => 'Basic ' . $bearer_token_credentials_64, + 'Content-Type' => 'application/x-www-form-urlencoded;charset=UTF-8', + 'Accept-Encoding' => 'gzip' + ), + 'body' => array( 'grant_type' => 'client_credentials' ), + 'cookies' => array() + ); + + $response = wp_remote_post( 'https://api.twitter.com/oauth2/token', $args ); + + if ( is_wp_error( $response ) || 200 != $response['response']['code'] ) + return $this->bail( __( 'Can\'t get the bearer token, check your credentials', 'wp_twitter_api' ), $response ); + + $result = json_decode( $response['body'] ); + + update_option( 'twitter_bearer_token', $result->access_token ); + + return $result->access_token; + + } + + /* Provider: - * + * Query twitter's API + * + * @uses $this->get_bearer_token() to retrieve token if not working + * + * @param string $query Insert the query in the format "count=1&include_entities=true&include_rts=true&screen_name=micc1983! + * @param array $query_args Array of arguments: Resource type (string) and cache duration (int) + * @param bool $stop Stop the query to avoid infinite loop + * + * @return bool|object Return an object containing the result + */ + public function query( $query, $query_args = array(), $stop = false ) { + + if ( $this->has_error ) + return false; + + if ( is_array( $query_args ) && !empty( $query_args ) ) + $this->query_args = array_merge( $this->query_args, $query_args ); + + $transient_name = 'wta_' . md5( $query ); + + if ($this->query_args['cache'] > 0 && false !== ( $data = get_transient( $transient_name ) ) ) + return json_decode( $data ); + + $args = array( + 'method' => 'GET', + 'timeout' => 5, + 'redirection' => 5, + 'httpversion' => '1.0', + 'blocking' => true, + 'headers' => array( + 'Authorization' => 'Bearer ' . $this->bearer_token, + 'Accept-Encoding' => 'gzip' + ), + 'body' => null, + 'cookies' => array() + ); + + $response = wp_remote_get( 'https://api.twitter.com/1.1/' . $this->query_args['type'] . '.json?' . $query, $args ); + if ( is_wp_error( $response ) || 200 != $response['response']['code'] ){ + + if ( !$stop ){ + $this->bearer_token = $this->get_bearer_token(); + return $this->query( $query, $this->query_args, true ); + } else { + return $this->bail( __( 'Bearer Token is good, check your query', 'wp_twitter_api' ), $response ); + } + + } + set_transient( $transient_name, $response['body'], $this->query_args['cache'] ); + return json_decode( $response['body'] ); + + } + + /* Provider: - * + * Let's manage errors + * + * WP_DEBUG has to be set to true to show errors + * + * @param string $error_text Error message + * @param string $error_object Server response or wp_error + */ + private function bail( $error_text, $error_object = '' ) { + + $this->has_error = true; + + if ( is_wp_error( $error_object ) ){ + $error_text .= ' - Wp Error: ' . $error_object->get_error_message(); + } elseif ( !empty( $error_object ) && isset( $error_object['response']['message'] ) ) { + $error_text .= ' ( Response: ' . $error_object['response']['message'] . ' )'; + } + + trigger_error( $error_text , E_USER_NOTICE ); + + } + +} + + +/* Provider: - * + * Instagram + * + * with help of the API this class delivers all kind of Images from instagram + * + * @package socialstreams + * @subpackage socialstreams/instagram + * @author ThemePunch + */ + +class RevSliderInstagram { + + /* Provider: - * + * API key + * + * @since 1.0.0 + * @access private + * @var string $api_key Instagram API key + */ + private $api_key; + + /* Provider: - * + * Stream Array + * + * @since 1.0.0 + * @access private + * @var array $stream Stream Data Array + */ + private $stream; + + /* Provider: - * + * Transient seconds + * + * @since 1.0.0 + * @access private + * @var number $transient Transient time in seconds + */ + private $transient_sec; + + /* Provider: - * + * Initialize the class and set its properties. + * + * @since 1.0.0 + * @param string $api_key Instagram API key. + */ + public function __construct($api_key,$transient_sec=1200) { + $this->api_key = $api_key; + $this->transient_sec = $transient_sec; + } + + /* Provider: - * + * Get Instagram Pictures + * + * @since 1.0.0 + * @param string $user_id Instagram User id (not name) + */ + public function get_public_photos($search_user_id,$count){ + //call the API and decode the response + $url = "https://api.instagram.com/v1/users/".$search_user_id."/media/recent?count=".$count."&access_token=".$this->api_key."&client_id=".$search_user_id; + + $transient_name = 'revslider_' . md5($url); + if ($this->transient_sec > 0 && false !== ($data = get_transient( $transient_name))) + return ($data); + + $rsp = json_decode(wp_remote_fopen($url)); + if(isset($rsp->data)){ + set_transient( $transient_name, $rsp->data, $this->transient_sec ); + return $rsp->data; + } + else return ''; + } +} // End Class + +/* Provider: - * + * Flickr + * + * with help of the API this class delivers all kind of Images from flickr + * + * @package socialstreams + * @subpackage socialstreams/flickr + * @author ThemePunch + */ + +class RevSliderFlickr { + + /* Provider: - * + * API key + * + * @since 1.0.0 + * @access private + * @var string $api_key flickr API key + */ + private $api_key; + + /* Provider: - * + * API params + * + * @since 1.0.0 + * @access private + * @var array $api_param_defaults Basic params to call with API + */ + private $api_param_defaults; + + /* Provider: - * + * Stream Array + * + * @since 1.0.0 + * @access private + * @var array $stream Stream Data Array + */ + private $stream; + + /* Provider: - * + * Basic URL + * + * @since 1.0.0 + * @access private + * @var string $url Url to fetch user from + */ + private $flickr_url; + + /* Provider: - * + * Transient seconds + * + * @since 1.0.0 + * @access private + * @var number $transient Transient time in seconds + */ + private $transient_sec; + + /* Provider: - * + * Initialize the class and set its properties. + * + * @since 1.0.0 + * @param string $api_key flickr API key. + */ + public function __construct($api_key,$transient_sec=1200) { + $this->api_key = $api_key; + $this->api_param_defaults = array( + 'api_key' => $this->api_key, + 'format' => 'json', + 'nojsoncallback' => 1, + ); + $this->transient_sec = $transient_sec; + } + + /* Provider: - * + * Calls Flicker API with set of params, returns json + * + * @since 1.0.0 + * @param array $params Parameter build for API request + */ + private function call_flickr_api($params){ + //build url + $encoded_params = array(); + foreach ($params as $k => $v){ + $encoded_params[] = urlencode($k).'='.urlencode($v); + } + + //call the API and decode the response + $url = "https://api.flickr.com/services/rest/?".implode('&', $encoded_params); + $transient_name = 'revslider_' . md5($url); + + if ($this->transient_sec > 0 && false !== ($data = get_transient( $transient_name))) + return ($data); + + $rsp = json_decode(file_get_contents($url)); + if(isset($rsp)){ + set_transient( $transient_name, $rsp, $this->transient_sec ); + return $rsp; + } + else return ''; + } + + /* Provider: - * + * Get User ID from its URL + * + * @since 1.0.0 + * @param string $user_url URL of the Gallery + */ + public function get_user_from_url($user_url){ + //gallery params + $user_params = $this->api_param_defaults + array( + 'method' => 'flickr.urls.lookupUser', + 'url' => $user_url, + ); + + //set User Url + $this->flickr_url = $user_url; + + //get gallery info + $user_info = $this->call_flickr_api($user_params); + if(isset($user_info->user->id)) + return $user_info->user->id; + else return ''; + } + + /* Provider: - * + * Get Group ID from its URL + * + * @since 1.0.0 + * @param string $group_url URL of the Gallery + */ + public function get_group_from_url($group_url){ + //gallery params + $group_params = $this->api_param_defaults + array( + 'method' => 'flickr.urls.lookupGroup', + 'url' => $group_url, + ); + + //set User Url + $this->flickr_url = $group_url; + + //get gallery info + $group_info = $this->call_flickr_api($group_params); + if(isset($group_info->group->id)) + return $group_info->group->id; + else return ''; + } + + /* Provider: - * + * Get Public Photos + * + * @since 1.0.0 + * @param string $user_id flicker User id (not name) + * @param int $item_count number of photos to pull + */ + public function get_public_photos($user_id,$item_count=10){ + //public photos params + $public_photo_params = $this->api_param_defaults + array( + 'method' => 'flickr.people.getPublicPhotos', + 'user_id' => $user_id, + 'extras' => 'description, license, date_upload, date_taken, owner_name, icon_server, original_format, last_update, geo, tags, machine_tags, o_dims, views, media, path_alias, url_sq, url_t, url_s, url_q, url_m, url_n, url_z, url_c, url_l, url_o', + 'per_page'=> $item_count, + 'page' => 1 + ); + + //get photo list + $public_photos_list = $this->call_flickr_api($public_photo_params); + if(isset($public_photos_list->photos->photo)) + return $public_photos_list->photos->photo; + else return ''; + } + + /* Provider: - * + * Get Photosets List from User + * + * @since 1.0.0 + * @param string $user_id flicker User id (not name) + * @param int $item_count number of photos to pull + */ + public function get_photo_sets($user_id,$item_count=10,$current_photoset){ + //photoset params + $photo_set_params = $this->api_param_defaults + array( + 'method' => 'flickr.photosets.getList', + 'user_id' => $user_id, + 'per_page'=> $item_count, + 'page' => 1 + ); + + //get photoset list + $photo_sets_list = $this->call_flickr_api($photo_set_params); + + $return = array(); + foreach($photo_sets_list->photosets->photoset as $photo_set){ + if(empty($photo_set->title->_content)) $photo_set->title->_content = ""; + if(empty($photo_set->photos)) $photo_set->photos = 0; + $return[] = '"'; + } + return $return; + } + + /* Provider: - * + * Get Photoset Photos + * + * @since 1.0.0 + * @param string $photo_set_id Photoset ID + * @param int $item_count number of photos to pull + */ + public function get_photo_set_photos($photo_set_id,$item_count=10){ + //photoset photos params + $this->stream = array(); + $photo_set_params = $this->api_param_defaults + array( + 'method' => 'flickr.photosets.getPhotos', + 'photoset_id' => $photo_set_id, + 'per_page' => $item_count, + 'page' => 1, + 'extras' => 'license, date_upload, date_taken, owner_name, icon_server, original_format, last_update, geo, tags, machine_tags, o_dims, views, media, path_alias, url_sq, url_t, url_s, url_q, url_m, url_n, url_z, url_c, url_l, url_o' + ); + + //get photo list + $photo_set_photos = $this->call_flickr_api($photo_set_params); + if(isset($photo_set_photos->photoset->photo)) + return $photo_set_photos->photoset->photo; + else return ''; + } + + /* Provider: - * + * Get Groop Pool Photos + * + * @since 1.0.0 + * @param string $group_id Photoset ID + * @param int $item_count number of photos to pull + */ + public function get_group_photos($group_id,$item_count=10){ + //photoset photos params + $group_pool_params = $this->api_param_defaults + array( + 'method' => 'flickr.groups.pools.getPhotos', + 'group_id' => $group_id, + 'per_page' => $item_count, + 'page' => 1, + 'extras' => 'license, date_upload, date_taken, owner_name, icon_server, original_format, last_update, geo, tags, machine_tags, o_dims, views, media, path_alias, url_sq, url_t, url_s, url_q, url_m, url_n, url_z, url_c, url_l, url_o' + ); + + //get photo list + $group_pool_photos = $this->call_flickr_api($group_pool_params); + if(isset($group_pool_photos->photos->photo)) + return $group_pool_photos->photos->photo; + else + return ''; + } + + /* Provider: - * + * Get Gallery ID from its URL + * + * @since 1.0.0 + * @param string $gallery_url URL of the Gallery + * @param int $item_count number of photos to pull + */ + public function get_gallery_from_url($gallery_url){ + //gallery params + $gallery_params = $this->api_param_defaults + array( + 'method' => 'flickr.urls.lookupGallery', + 'url' => $gallery_url, + ); + + //get gallery info + $gallery_info = $this->call_flickr_api($gallery_params); + if(isset($gallery_info->gallery->id)) + return $gallery_info->gallery->id; + else return ''; + } + + /* Provider: - * + * Get Gallery Photos + * + * @since 1.0.0 + * @param string $gallery_id flicker Gallery id (not name) + * @param int $item_count number of photos to pull + */ + public function get_gallery_photos($gallery_id,$item_count=10){ + //gallery photos params + $gallery_photo_params = $this->api_param_defaults + array( + 'method' => 'flickr.galleries.getPhotos', + 'gallery_id' => $gallery_id, + 'extras' => 'description, license, date_upload, date_taken, owner_name, icon_server, original_format, last_update, geo, tags, machine_tags, o_dims, views, media, path_alias, url_sq, url_t, url_s, url_q, url_m, url_n, url_z, url_c, url_l, url_o', + 'per_page'=> $item_count, + 'page' => 1 + ); + + //get photo list + $gallery_photos_list = $this->call_flickr_api($gallery_photo_params); + if(isset($gallery_photos_list->photos->photo)) + return $gallery_photos_list->photos->photo; + else return ''; + } + + /* Provider: - * + * Encode the flickr ID for URL (base58) + * + * @since 1.0.0 + * @param string $num flickr photo id + */ + private function base_encode($num, $alphabet='123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ') { + $base_count = strlen($alphabet); + $encoded = ''; + while ($num >= $base_count) { + $div = $num/$base_count; + $mod = ($num-($base_count*intval($div))); + $encoded = $alphabet[$mod] . $encoded; + $num = intval($div); + } + if ($num) $encoded = $alphabet[$num] . $encoded; + return $encoded; + } +} // End Class + + +/* Provider: - * + * Youtube + * + * with help of the API this class delivers all kind of Images/Videos from youtube + * + * @package socialstreams + * @subpackage socialstreams/youtube + * @author ThemePunch + */ + +class RevSliderYoutube { + + /* Provider: - * + * API key + * + * @since 1.0.0 + * @access private + * @var string $api_key Youtube API key + */ + private $api_key; + + /* Provider: - * + * Channel ID + * + * @since 1.0.0 + * @access private + * @var string $channel_id Youtube Channel ID + */ + private $channel_id; + + /* Provider: - * + * Stream Array + * + * @since 1.0.0 + * @access private + * @var array $stream Stream Data Array + */ + private $stream; + + /* Provider: - * + * Transient seconds + * + * @since 1.0.0 + * @access private + * @var number $transient Transient time in seconds + */ + private $transient_sec; + + /* Provider: - * + * Initialize the class and set its properties. + * + * @since 1.0.0 + * @param string $api_key Youtube API key. + */ + public function __construct($api_key,$channel_id,$transient_sec=1200) { + $this->api_key = $api_key; + $this->channel_id = $channel_id; + $this->transient_sec = $transient_sec; + } + + + /* Provider: - * + * Get Youtube Playlists + * + * @since 1.0.0 + */ + public function get_playlists(){ + //call the API and decode the response + $url = "https://www.googleapis.com/youtube/v3/playlists?part=snippet&channelId=".$this->channel_id."&key=".$this->api_key; + $rsp = json_decode(wp_remote_fopen($url)); + if(isset($rsp->items)){ + return $rsp->items; + }else{ + return false; + } + } + + /* Provider: - * + * Get Youtube Playlist Items + * + * @since 1.0.0 + * @param string $playlist_id Youtube Playlist ID + * @param integer $count Max videos count + */ + public function show_playlist_videos($playlist_id,$count=50){ + //call the API and decode the response + if(empty($count)) $count = 50; + $url = "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=".$playlist_id."&maxResults=".$count."&fields=items%2Fsnippet&key=".$this->api_key; + + $transient_name = 'revslider_' . md5($url); + + if ($this->transient_sec > 0 && false !== ($data = get_transient( $transient_name))) + return ($data); + + $rsp = json_decode(wp_remote_fopen($url)); + + set_transient( $transient_name, $rsp->items, $this->transient_sec ); + return $rsp->items; + } + + /* Provider: - * + * Get Youtube Channel Items + * + * @since 1.0.0 + * @param integer $count Max videos count + */ + public function show_channel_videos($count=50){ + if(empty($count)) $count = 50; + //call the API and decode the response + $url = "https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=".$this->channel_id."&maxResults=".$count."&key=".$this->api_key."&order=date"; + + $transient_name = 'revslider_' . md5($url); + + if ($this->transient_sec > 0 && false !== ($data = get_transient( $transient_name))) + return ($data); + + $rsp = json_decode(wp_remote_fopen($url)); + + set_transient( $transient_name, $rsp->items, $this->transient_sec ); + return $rsp->items; + } + + /* Provider: - * + * Get Playlists from Channel as Options for Selectbox + * + * @since 1.0.0 + */ + public function get_playlist_options($current_playlist){ + $return = array(); + $playlists = $this->get_playlists(); + if(!empty($playlists)){ + foreach($playlists as $playlist){ + $return[] = '"'; + } + } + return $return; + } +} // End Class + +/* Provider: - * + * Vimeo + * + * with help of the API this class delivers all kind of Images/Videos from Vimeo + * + * @package socialstreams + * @subpackage socialstreams/vimeo + * @author ThemePunch + */ + +class RevSliderVimeo { + /* Provider: - * + * Stream Array + * + * @since 1.0.0 + * @access private + * @var array $stream Stream Data Array + */ + private $stream; + + /* Provider: - * + * Transient seconds + * + * @since 1.0.0 + * @access private + * @var number $transient Transient time in seconds + */ + private $transient_sec; + + /* Provider: - * + * Initialize the class and set its properties. + * + * @since 1.0.0 + * @param string $api_key Youtube API key. + */ + public function __construct($transient_sec=1200) { + $this->transient_sec = $transient_sec; + } + + /* Provider: - * + * Get Vimeo User Videos + * + * @since 1.0.0 + */ + public function get_vimeo_videos($type,$value){ + //call the API and decode the response + if($type=="user"){ + $url = "https://vimeo.com/api/v2/".$value."/videos.json"; + } + else{ + $url = "https://vimeo.com/api/v2/".$type."/".$value."/videos.json"; + } + + $transient_name = 'revslider_' . md5($url); + + if ($this->transient_sec > 0 && false !== ($data = get_transient( $transient_name))) + return ($data); + + $rsp = json_decode(wp_remote_fopen($url)); + set_transient( $transient_name, $rsp, $this->transient_sec ); + return $rsp; + } +} // End Class +?> \ No newline at end of file diff --git a/plugins/revslider/includes/framework/aq-resizer.class.php b/plugins/revslider/includes/framework/aq-resizer.class.php new file mode 100644 index 0000000..0fbfa7c --- /dev/null +++ b/plugins/revslider/includes/framework/aq-resizer.class.php @@ -0,0 +1,205 @@ +resize( $width, $height, $crop ) ) ) + return false; + + $resized_file = $editor->save(); + + if ( ! is_wp_error( $resized_file ) ) { + $resized_rel_path = str_replace( $upload_dir, '', $resized_file['path'] ); + $img_url = $upload_url . $resized_rel_path; + } else { + return false; + } + + } + } + + // Okay, leave the ship. + if ( true === $upscale ) remove_filter( 'image_resize_dimensions', array( $this, 'aq_upscale' ) ); + + // Return the output. + if ( $single ) { + // str return. + $image = $img_url; + } else { + // array return. + $image = array ( + 0 => $img_url, + 1 => $dst_w, + 2 => $dst_h + ); + } + + return $image; + } + + /* Provider: - * + * Callback to overwrite WP computing of thumbnail measures + */ + function aq_upscale( $default, $orig_w, $orig_h, $dest_w, $dest_h, $crop ) { + if ( ! $crop ) return null; // Let the wordpress default function handle this. + + // Here is the point we allow to use larger image size than the original one. + $aspect_ratio = $orig_w / $orig_h; + $new_w = $dest_w; + $new_h = $dest_h; + + if ( ! $new_w ) { + $new_w = intval( $new_h * $aspect_ratio ); + } + + if ( ! $new_h ) { + $new_h = intval( $new_w / $aspect_ratio ); + } + + $size_ratio = max( $new_w / $orig_w, $new_h / $orig_h ); + + $crop_w = round( $new_w / $size_ratio ); + $crop_h = round( $new_h / $size_ratio ); + + $s_x = floor( ( $orig_w - $crop_w ) / 2 ); + $s_y = floor( ( $orig_h - $crop_h ) / 2 ); + + return array( 0, 0, (int) $s_x, (int) $s_y, (int) $new_w, (int) $new_h, (int) $crop_w, (int) $crop_h ); + } + } +} + + +if(!function_exists('rev_aq_resize')) { + + /* Provider: - * + * This is just a tiny wrapper function for the class above so that there is no + * need to change any code in your own WP themes. Usage is still the same :) + */ + function rev_aq_resize( $url, $width = null, $height = null, $crop = null, $single = true, $upscale = false ) { + $aq_resize = Rev_Aq_Resize::getInstance(); + return $aq_resize->process( $url, $width, $height, $crop, $single, $upscale ); + } +} + +?> \ No newline at end of file diff --git a/plugins/revslider/includes/framework/base-admin.class.php b/plugins/revslider/includes/framework/base-admin.class.php new file mode 100644 index 0000000..ec3429d --- /dev/null +++ b/plugins/revslider/includes/framework/base-admin.class.php @@ -0,0 +1,518 @@ + + * @link http://www.themepunch.com/ + * @copyright 2015 ThemePunch + */ + +if( !defined( 'ABSPATH') ) exit(); + +class RevSliderBaseAdmin extends RevSliderBase { + + protected static $master_view; + protected static $view; + + private static $arrSettings = array(); + private static $arrMenuPages = array(); + private static $arrSubMenuPages = array(); + private static $tempVars = array(); + private static $startupError = ''; + private static $menuRole = 'admin'; + private static $arrMetaBoxes = ''; //option boxes that will be added to post + + private static $allowed_views = array('master-view', 'system/validation', 'system/dialog-video', 'system/dialog-update', 'system/dialog-global-settings', 'sliders', 'slider', 'slider_template', 'slides', 'slide', 'navigation-editor', 'slide-editor', 'slide-overview', 'slide-editor', 'slider-overview', 'themepunch-google-fonts'); + + /* Provider: - * + * + * main constructor + */ + public function __construct($t){ + + parent::__construct($t); + + //set view + self::$view = self::getGetVar("view"); + if(empty(self::$view)) + self::$view = 'sliders'; + + //add internal hook for adding a menu in arrMenus + add_action('admin_menu', array('RevSliderBaseAdmin', 'addAdminMenu')); + add_action('add_meta_boxes', array('RevSliderBaseAdmin', 'onAddMetaboxes')); + add_action('save_post', array('RevSliderBaseAdmin', 'onSavePost')); + + //if not inside plugin don't continue + if($this->isInsidePlugin() == true){ + add_action('admin_enqueue_scripts', array('RevSliderBaseAdmin', 'addCommonScripts')); + add_action('admin_enqueue_scripts', array('RevSliderAdmin', 'onAddScripts')); + } + + //a must event for any admin. call onActivate function. + $this->addEvent_onActivate(); + $this->addAction_onActivate(); + + self::addActionAjax('show_image', 'onShowImage'); + } + + /* Provider: - * + * + * add some meta box + * return metabox handle + */ + public static function addMetaBox($title,$content = null, $customDrawFunction = null,$location="post"){ + + $box = array(); + $box['title'] = $title; + $box['location'] = $location; + $box['content'] = $content; + $box['draw_function'] = $customDrawFunction; + + self::$arrMetaBoxes[] = $box; + } + + + /* Provider: - * + * + * on add metaboxes + */ + public static function onAddMetaboxes(){ + + foreach(self::$arrMetaBoxes as $index=>$box){ + + $title = $box['title']; + $location = $box['location']; + + $boxID = 'mymetabox_revslider_'.$index; + $function = array(self::$t, "onAddMetaBoxContent"); + + if(is_array($location)){ + foreach($location as $loc) + add_meta_box($boxID,$title,$function,$loc,'normal','default'); + }else + add_meta_box($boxID,$title,$function,$location,'normal','default'); + } + } + + /* Provider: - * + * + * on save post meta. Update metaboxes data from post, add it to the post meta + */ + public static function onSavePost(){ + + //protection against autosave + if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ){ + $postID = RevSliderFunctions::getPostVariable("ID"); + return $postID; + } + + $postID = RevSliderFunctions::getPostVariable("ID"); + if(empty($postID)) + return(false); + + + foreach(self::$arrMetaBoxes as $box){ + + $arrSettingNames = array('slide_template'); + foreach($arrSettingNames as $name){ + $value = RevSliderFunctions::getPostVariable($name); + update_post_meta( $postID, $name, $value ); + } //end foreach settings + + } //end foreach meta + + } + + /* Provider: - * + * + * on add metabox content + */ + public static function onAddMetaBoxContent($post,$boxData){ + + $postID = $post->ID; + + $boxID = RevSliderFunctions::getVal($boxData, "id"); + $index = str_replace('mymetabox_revslider_',"",$boxID); + + $arrMetabox = self::$arrMetaBoxes[$index]; + + + //draw element + $drawFunction = RevSliderFunctions::getVal($arrMetabox, "draw_function"); + if(!empty($drawFunction)) + call_user_func($drawFunction); + + } + + + /* Provider: - * + * + * set the menu role - for viewing menus + */ + public static function setMenuRole($menuRole){ + self::$menuRole = $menuRole; + } + + /* Provider: - * + * + * set startup error to be shown in master view + */ + public static function setStartupError($errorMessage){ + self::$startupError = $errorMessage; + } + + + /* Provider: - * + * + * tells if the the current plugin opened is this plugin or not + * in the admin side. + */ + private function isInsidePlugin(){ + $page = self::getGetVar("page"); + + if($page == 'revslider' || $page == 'themepunch-google-fonts' || $page == 'revslider_navigation') + return(true); + return(false); + } + + + /* Provider: - * + * + * add common used scripts + */ + public static function addCommonScripts(){ + + if(function_exists("wp_enqueue_media")) + wp_enqueue_media(); + + wp_enqueue_script(array('jquery', 'jquery-ui-core', 'jquery-ui-mouse', 'jquery-ui-accordion', 'jquery-ui-datepicker', 'jquery-ui-dialog', 'jquery-ui-slider', 'jquery-ui-autocomplete', 'jquery-ui-sortable', 'jquery-ui-droppable', 'jquery-ui-tabs', 'jquery-ui-widget', 'wp-color-picker')); + + wp_enqueue_style(array('wp-jquery-ui', 'wp-jquery-ui-core', 'wp-jquery-ui-dialog', 'wp-color-picker')); + + wp_enqueue_script('unite_settings', RS_PLUGIN_URL .'admin/assets/js/settings.js', array(), RevSliderGlobals::SLIDER_REVISION ); + wp_enqueue_script('unite_admin', RS_PLUGIN_URL .'admin/assets/js/admin.js', array(), RevSliderGlobals::SLIDER_REVISION ); + + wp_enqueue_style('unite_admin', RS_PLUGIN_URL .'admin/assets/css/admin.css', array(), RevSliderGlobals::SLIDER_REVISION); + + //add tipsy + wp_enqueue_script('tipsy', RS_PLUGIN_URL .'admin/assets/js/jquery.tipsy.js', array(), RevSliderGlobals::SLIDER_REVISION ); + wp_enqueue_style('tipsy', RS_PLUGIN_URL .'admin/assets/css/tipsy.css', array(), RevSliderGlobals::SLIDER_REVISION); + + //include codemirror + wp_enqueue_script('codemirror_js', RS_PLUGIN_URL .'admin/assets/js/codemirror/codemirror.js', array(), RevSliderGlobals::SLIDER_REVISION ); + wp_enqueue_script('codemirror_js_highlight', RS_PLUGIN_URL .'admin/assets/js/codemirror/util/match-highlighter.js', array(), RevSliderGlobals::SLIDER_REVISION ); + wp_enqueue_script('codemirror_js_searchcursor', RS_PLUGIN_URL .'admin/assets/js/codemirror/util/searchcursor.js', array(), RevSliderGlobals::SLIDER_REVISION ); + wp_enqueue_script('codemirror_js_css', RS_PLUGIN_URL .'admin/assets/js/codemirror/css.js', array(), RevSliderGlobals::SLIDER_REVISION ); + wp_enqueue_script('codemirror_js_html', RS_PLUGIN_URL .'admin/assets/js/codemirror/xml.js', array(), RevSliderGlobals::SLIDER_REVISION ); + wp_enqueue_style('codemirror_css', RS_PLUGIN_URL .'admin/assets/js/codemirror/codemirror.css', array(), RevSliderGlobals::SLIDER_REVISION); + + } + + + + /* Provider: - * + * + * admin pages parent, includes all the admin files by default + */ + public static function adminPages(){ + //self::validateAdminPermissions(); + } + + + /* Provider: - * + * + * validate permission that the user is admin, and can manage options. + */ + protected static function isAdminPermissions(){ + + if( is_admin() && current_user_can("manage_options") ) + return(true); + + return(false); + } + + /* Provider: - * + * + * validate admin permissions, if no pemissions - exit + */ + protected static function validateAdminPermissions(){ + if(!self::isAdminPermissions()){ + echo "access denied"; + return(false); + } + } + + /* Provider: - * + * + * set view that will be the master + */ + protected static function setMasterView($masterView){ + self::$master_view = $masterView; + } + + /* Provider: - * + * + * inlcude some view file + */ + protected static function requireView($view){ + try{ + //require master view file, and + if(!empty(self::$master_view) && !isset(self::$tempVars["is_masterView"]) ){ + $masterViewFilepath = self::$path_views.self::$master_view.".php"; + RevSliderFunctions::validateFilepath($masterViewFilepath,"Master View"); + + self::$tempVars["is_masterView"] = true; + require $masterViewFilepath; + }else{ //simple require the view file. + if(!in_array($view, self::$allowed_views)) UniteFunctionsRev::throwError(__('Wrong Request', REVSLIDER_TEXTDOMAIN)); + + switch($view){ //switch URLs to corresponding php files + case 'slide': + $view = 'slide-editor'; + break; + case 'slider': + $view = 'slider-editor'; + break; + case 'sliders': + $view = 'slider-overview'; + break; + case 'slides': + $view = 'slide-overview'; + break; + } + + $viewFilepath = self::$path_views.$view.".php"; + + RevSliderFunctions::validateFilepath($viewFilepath,"View"); + require $viewFilepath; + } + + }catch (Exception $e){ + echo "

          View (".esc_attr($view).") Error: ".esc_attr($e->getMessage()).""; + } + } + + /* Provider: - * + * require some template from "templates" folder + */ + protected static function getPathTemplate($templateName){ + $pathTemplate = self::$path_templates.$templateName.'.php'; + RevSliderFunctions::validateFilepath($pathTemplate,'Template'); + + return($pathTemplate); + } + + + /* Provider: - * + * + * add all js and css needed for media upload + */ + protected static function addMediaUploadIncludes(){ + + wp_enqueue_script('thickbox'); + wp_enqueue_script('media-upload'); + wp_enqueue_style('thickbox'); + + } + + + /* Provider: - * + * add admin menus from the list. + */ + public static function addAdminMenu(){ + global $revslider_screens; + + $role = "manage_options"; + + switch(self::$menuRole){ + case 'author': + $role = "edit_published_posts"; + break; + case 'editor': + $role = "edit_pages"; + break; + default: + case 'admin': + $role = "manage_options"; + break; + } + + foreach(self::$arrMenuPages as $menu){ + $title = $menu["title"]; + $pageFunctionName = $menu["pageFunction"]; + $revslider_screens[] = add_menu_page( $title, $title, $role, 'revslider', array(self::$t, $pageFunctionName), 'dashicons-update' ); + } + + foreach(self::$arrSubMenuPages as $menu){ + $title = $menu["title"]; + $pageFunctionName = $menu["pageFunction"]; + $pageSlug = $menu["pageSlug"]; + $revslider_screens[] = add_submenu_page( 'revslider', $title, $title, $role, $pageSlug, array(self::$t, $pageFunctionName) ); + } + + } + + + /* Provider: - * + * + * add menu page + */ + protected static function addMenuPage($title,$pageFunctionName){ + + self::$arrMenuPages[] = array("title"=>$title,"pageFunction"=>$pageFunctionName); + + } + + + /* Provider: - * + * + * add menu page + */ + protected static function addSubMenuPage($title,$pageFunctionName,$pageSlug){ + + self::$arrSubMenuPages[] = array("title"=>$title,"pageFunction"=>$pageFunctionName,"pageSlug"=>$pageSlug); + + } + + /* Provider: - * + * + * get url to some view. + */ + public static function getViewUrl($viewName,$urlParams=""){ + $params = "&view=".$viewName; + if(!empty($urlParams)) + $params .= "&".$urlParams; + + $link = admin_url( 'admin.php?page=revslider'.$params); + return($link); + } + + /* Provider: - * + * + * register the "onActivate" event + */ + protected function addEvent_onActivate($eventFunc = "onActivate"){ + register_activation_hook( RS_PLUGIN_FILE_PATH, array(self::$t, $eventFunc) ); + } + + + protected function addAction_onActivate(){ + register_activation_hook( RS_PLUGIN_FILE_PATH, array(self::$t, 'onActivateHook') ); + } + + + public static function onActivateHook(){ + + $options = array(); + + $options = apply_filters('revslider_mod_activation_option', $options); + + $operations = new RevSliderOperations(); + $operations->updateGeneralSettings($options); + + } + + + /* Provider: - * + * + * store settings in the object + */ + protected static function storeSettings($key,$settings){ + self::$arrSettings[$key] = $settings; + } + + + /* Provider: - * + * + * get settings object + */ + protected static function getSettings($key){ + if(!isset(self::$arrSettings[$key])) + RevSliderFunctions::throwError("Settings $key not found"); + $settings = self::$arrSettings[$key]; + return($settings); + } + + + /* Provider: - * + * + * add ajax back end callback, on some action to some function. + */ + protected static function addActionAjax($ajaxAction,$eventFunction){ + add_action('wp_ajax_revslider_'.$ajaxAction, array('RevSliderAdmin', $eventFunction)); + } + + + /* Provider: - * + * + * echo json ajax response + */ + private static function ajaxResponse($success,$message,$arrData = null){ + + $response = array(); + $response["success"] = $success; + $response["message"] = $message; + + if(!empty($arrData)){ + + if(gettype($arrData) == "string") + $arrData = array("data"=>$arrData); + + $response = array_merge($response,$arrData); + } + + $json = json_encode($response); + + echo $json; + exit(); + } + + + /* Provider: - * + * + * echo json ajax response, without message, only data + */ + protected static function ajaxResponseData($arrData){ + if(gettype($arrData) == "string") + $arrData = array("data"=>$arrData); + + self::ajaxResponse(true,"",$arrData); + } + + + /* Provider: - * + * + * echo json ajax response + */ + protected static function ajaxResponseError($message,$arrData = null){ + + self::ajaxResponse(false,$message,$arrData,true); + } + + + /* Provider: - * + * echo ajax success response + */ + protected static function ajaxResponseSuccess($message,$arrData = null){ + + self::ajaxResponse(true,$message,$arrData,true); + + } + + + /* Provider: - * + * echo ajax success response + */ + protected static function ajaxResponseSuccessRedirect($message,$url){ + $arrData = array("is_redirect"=>true,"redirect_url"=>$url); + + self::ajaxResponse(true,$message,$arrData,true); + } + + +} + +/* Provider: - * + * old classname extends new one (old classnames will be obsolete soon) + * @since: 5.0 + **/ +class UniteBaseAdminClassRev extends RevSliderBaseAdmin {} +?> \ No newline at end of file diff --git a/plugins/revslider/includes/framework/base-front.class.php b/plugins/revslider/includes/framework/base-front.class.php new file mode 100644 index 0000000..3a4407e --- /dev/null +++ b/plugins/revslider/includes/framework/base-front.class.php @@ -0,0 +1,32 @@ + + * @link http://www.themepunch.com/ + * @copyright 2015 ThemePunch + */ + +if( !defined( 'ABSPATH') ) exit(); + +class RevSliderBaseFront extends RevSliderBase { + + const ACTION_ENQUEUE_SCRIPTS = "wp_enqueue_scripts"; + + /* Provider: - * + * + * main constructor + */ + public function __construct($t){ + + parent::__construct($t); + + add_action('wp_enqueue_scripts', array('RevSliderFront', 'onAddScripts')); + } + +} + +/* Provider: - * + * old classname extends new one (old classnames will be obsolete soon) + * @since: 5.0 + **/ +class UniteBaseFrontClassRev extends RevSliderBaseFront {} +?> \ No newline at end of file diff --git a/plugins/revslider/includes/framework/base.class.php b/plugins/revslider/includes/framework/base.class.php new file mode 100644 index 0000000..6cd4ad6 --- /dev/null +++ b/plugins/revslider/includes/framework/base.class.php @@ -0,0 +1,535 @@ + + * @link http://www.themepunch.com/ + * @copyright 2015 ThemePunch + */ + +if( !defined( 'ABSPATH') ) exit(); + +class RevSliderBase { + + protected static $wpdb; + protected static $table_prefix; + protected static $t; + + protected static $url_ajax; + protected static $url_ajax_showimage; + protected static $path_views; + protected static $path_templates; + protected static $is_multisite; + public static $url_ajax_actions; + + /* Provider: - * + * + * the constructor + */ + public function __construct($t){ + global $wpdb; + + self::$is_multisite = RevSliderFunctionsWP::isMultisite(); + + self::$wpdb = $wpdb; + self::$table_prefix = self::$wpdb->base_prefix; + if(self::$is_multisite){ + $blogID = RevSliderFunctionsWP::getBlogID(); + if($blogID != 1){ + self::$table_prefix .= $blogID."_"; + } + } + + self::$t = $t; + + self::$url_ajax = admin_url("admin-ajax.php"); + self::$url_ajax_actions = self::$url_ajax . "?action=revslider_ajax_action"; + self::$url_ajax_showimage = self::$url_ajax . "?action=revslider_show_image"; + + self::$path_views = RS_PLUGIN_PATH."admin/views/"; + self::$path_templates = self::$path_views."/templates/"; + + load_plugin_textdomain('revslider',false,'revslider/languages/'); + + //update globals oldversion flag + RevSliderGlobals::$isNewVersion = false; + $version = get_bloginfo("version"); + $version = (double)$version; + if($version >= 3.5) + RevSliderGlobals::$isNewVersion = true; + + } + + + /* Provider: - * + * + * add some wordpress action + */ + protected static function addAction($action,$eventFunction){ + + add_action( $action, array(self::$t, $eventFunction) ); + } + + + /* Provider: - * + * + * get image url to be shown via thumb making script. + */ + public static function getImageUrl($filepath, $width=null,$height=null,$exact=false,$effect=null,$effect_param=null){ + + $urlImage = self::getUrlThumb(self::$url_ajax_showimage, $filepath,$width ,$height ,$exact ,$effect ,$effect_param); + + return($urlImage); + } + + /* Provider: - * + * get thumb url + * @since: 5.0 + * @moved from image_view.class.php + */ + public static function getUrlThumb($urlBase, $filename,$width=null,$height=null,$exact=false,$effect=null,$effect_param=null){ + + $filename = urlencode($filename); + + $url = $urlBase."&img=$filename"; + if(!empty($width)) + $url .= "&w=".$width; + if(!empty($height)) + $url .= "&h=".$height; + + if($exact == true){ + $url .= "&t=".self::TYPE_EXACT; + } + + if(!empty($effect)){ + $url .= "&e=".$effect; + if(!empty($effect_param)) + $url .= "&ea1=".$effect_param; + } + + return($url); + } + + + /* Provider: - * + * + * on show image ajax event. outputs image with parameters + */ + public static function onShowImage(){ + + $pathImages = RevSliderFunctionsWP::getPathContent(); + $urlImages = RevSliderFunctionsWP::getUrlContent(); + + try{ + $imageID = intval(RevSliderFunctions::getGetVar("img")); + + $img = wp_get_attachment_image_src( $imageID, 'thumb' ); + + if(empty($img)) exit; + + self::outputImage($img[0]); + + }catch (Exception $e){ + header("status: 500"); + echo $e->getMessage(); + exit(); + } + } + + /* Provider: - * + * show Image to client + * @since: 5.0 + * @moved from image_view.class.php + */ + private static function outputImage($filepath){ + + $info = RevSliderFunctions::getPathInfo($filepath); + $ext = $info["extension"]; + + $ext = strtolower($ext); + if($ext == "jpg") + $ext = "jpeg"; + + $numExpires = 31536000; //one year + $strExpires = @date('D, d M Y H:i:s',time()+$numExpires); + + $contents = file_get_contents($filepath); + $filesize = strlen($contents); + header("Expires: $strExpires GMT"); + header("Cache-Control: public"); + header("Content-Type: image/$ext"); + header("Content-Length: $filesize"); + + echo $contents; + exit(); + } + + /* Provider: - * + * + * get POST var + */ + protected static function getPostVar($key,$defaultValue = ""){ + $val = self::getVar($_POST, $key, $defaultValue); + return($val); + } + + /* Provider: - * + * + * get GET var + */ + protected static function getGetVar($key,$defaultValue = ""){ + $val = self::getVar($_GET, $key, $defaultValue); + return($val); + } + + + /* Provider: - * + * + * get post or get variable + */ + protected static function getPostGetVar($key,$defaultValue = ""){ + + if(array_key_exists($key, $_POST)) + $val = self::getVar($_POST, $key, $defaultValue); + else + $val = self::getVar($_GET, $key, $defaultValue); + + return($val); + } + + + /* Provider: - * + * + * get some var from array + */ + public static function getVar($arr,$key,$defaultValue = ""){ + $val = $defaultValue; + if(isset($arr[$key])) $val = $arr[$key]; + return($val); + } + + + /* Provider: - * + * Get all images sizes + custom added sizes + */ + public static function get_all_image_sizes($type = 'gallery'){ + $custom_sizes = array(); + + switch($type){ + case 'flickr': + $custom_sizes = array( + 'original' => __('Original', REVSLIDER_TEXTDOMAIN), + 'large' => __('Large', REVSLIDER_TEXTDOMAIN), + 'large-square' => __('Large Square', REVSLIDER_TEXTDOMAIN), + 'medium' => __('Medium', REVSLIDER_TEXTDOMAIN), + 'medium-800' => __('Medium 800', REVSLIDER_TEXTDOMAIN), + 'medium-640' => __('Medium 640', REVSLIDER_TEXTDOMAIN), + 'small' => __('Small', REVSLIDER_TEXTDOMAIN), + 'small-320' => __('Small 320', REVSLIDER_TEXTDOMAIN), + 'thumbnail'=> __('Thumbnail', REVSLIDER_TEXTDOMAIN), + 'square' => __('Square', REVSLIDER_TEXTDOMAIN) + ); + break; + case 'instagram': + $custom_sizes = array( + 'standard_resolution' => __('Standard Resolution', REVSLIDER_TEXTDOMAIN), + 'thumbnail' => __('Thumbnail', REVSLIDER_TEXTDOMAIN), + 'low_resolution' => __('Low Resolution', REVSLIDER_TEXTDOMAIN) + ); + break; + case 'twitter': + $custom_sizes = array( + 'large' => __('Standard Resolution', REVSLIDER_TEXTDOMAIN) + ); + break; + case 'facebook': + $custom_sizes = array( + 'size-0' => __('Size 0', REVSLIDER_TEXTDOMAIN), + 'size-1' => __('Size 1', REVSLIDER_TEXTDOMAIN), + 'size-2' => __('Size 2', REVSLIDER_TEXTDOMAIN), + 'size-3' => __('Size 3', REVSLIDER_TEXTDOMAIN), + 'size-4' => __('Size 4', REVSLIDER_TEXTDOMAIN), + 'size-5' => __('Size 5', REVSLIDER_TEXTDOMAIN), + 'size-6' => __('Size 6', REVSLIDER_TEXTDOMAIN) + ); + break; + case 'youtube': + $custom_sizes = array( + 'default' => __('Default', REVSLIDER_TEXTDOMAIN), + 'medium' => __('Medium', REVSLIDER_TEXTDOMAIN), + 'high' => __('High', REVSLIDER_TEXTDOMAIN), + 'standard' => __('Standard', REVSLIDER_TEXTDOMAIN), + 'maxres' => __('Max. Res.', REVSLIDER_TEXTDOMAIN) + ); + break; + case 'vimeo': + $custom_sizes = array( + 'thumbnail_small' => __('Small', REVSLIDER_TEXTDOMAIN), + 'thumbnail_medium' => __('Medium', REVSLIDER_TEXTDOMAIN), + 'thumbnail_large' => __('Large', REVSLIDER_TEXTDOMAIN), + ); + break; + case 'gallery': + default: + $added_image_sizes = get_intermediate_image_sizes(); + if(!empty($added_image_sizes) && is_array($added_image_sizes)){ + foreach($added_image_sizes as $key => $img_size_handle){ + $custom_sizes[$img_size_handle] = ucwords(str_replace('_', ' ', $img_size_handle)); + } + } + $img_orig_sources = array( + 'full' => __('Original Size', REVSLIDER_TEXTDOMAIN), + 'thumbnail' => __('Thumbnail', REVSLIDER_TEXTDOMAIN), + 'medium' => __('Medium', REVSLIDER_TEXTDOMAIN), + 'large' => __('Large', REVSLIDER_TEXTDOMAIN) + ); + $custom_sizes = array_merge($img_orig_sources, $custom_sizes); + break; + } + + return $custom_sizes; + } + + + /* Provider: - * + * retrieve the image id from the given image url + */ + public static function get_image_id_by_url($image_url) { + global $wpdb; + $attachment_id = false; + + // If there is no url, return. + if ( '' == $image_url ) + return; + + // Get the upload directory paths + $upload_dir_paths = wp_upload_dir(); + + // Make sure the upload path base directory exists in the attachment URL, to verify that we're working with a media library image + if ( false !== strpos( $image_url, $upload_dir_paths['baseurl'] ) ) { + + // If this is the URL of an auto-generated thumbnail, get the URL of the original image + $image_url = preg_replace( '/-\d+x\d+(?=\.(jpg|jpeg|png|gif)$)/i', '', $image_url ); + + // Remove the upload path base directory from the attachment URL + $image_url = str_replace( $upload_dir_paths['baseurl'] . '/', '', $image_url ); + + // Finally, run a custom database query to get the attachment ID from the modified attachment URL + $attachment_id = $wpdb->get_var( $wpdb->prepare( "SELECT wposts.ID FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.ID = wpostmeta.post_id AND wpostmeta.meta_key = '_wp_attached_file' AND wpostmeta.meta_value = '%s' AND wposts.post_type = 'attachment'", $image_url ) ); + + } + + return $attachment_id; + } + + + /* Provider: - * + * get all the icon sets used in Slider Revolution + * @since: 5.0 + **/ + public static function get_icon_sets(){ + $icon_sets = array(); + + $icon_sets = apply_filters('revslider_mod_icon_sets', $icon_sets); + + return $icon_sets; + } + + + /* Provider: - * + * add default icon sets of Slider Revolution + * @since: 5.0 + **/ + public static function set_icon_sets($icon_sets){ + + $icon_sets[] = 'fa-icon-'; + $icon_sets[] = 'pe-7s-'; + + return $icon_sets; + } + + + /* Provider: - * + * translates removed settings from Slider Settings from version <= 4.x to 5.0 + * @since: 5.0 + **/ + public static function translate_settings_to_v5($settings){ + + if(isset($settings['navigaion_type'])){ + switch($settings['navigaion_type']){ + case 'none': // all is off, so leave the defaults + break; + case 'bullet': + $settings['enable_bullets'] = 'on'; + $settings['enable_thumbnails'] = 'off'; + $settings['enable_tabs'] = 'off'; + + break; + case 'thumb': + $settings['enable_bullets'] = 'off'; + $settings['enable_thumbnails'] = 'on'; + $settings['enable_tabs'] = 'off'; + break; + } + unset($settings['navigaion_type']); + } + + if(isset($settings['navigation_arrows'])){ + $settings['enable_arrows'] = ($settings['navigation_arrows'] == 'solo' || $settings['navigation_arrows'] == 'nexttobullets') ? 'on' : 'off'; + unset($settings['navigation_arrows']); + } + + if(isset($settings['navigation_style'])){ + $settings['navigation_arrow_style'] = $settings['navigation_style']; + $settings['navigation_bullets_style'] = $settings['navigation_style']; + unset($settings['navigation_style']); + } + + if(isset($settings['navigaion_always_on'])){ + $settings['arrows_always_on'] = $settings['navigaion_always_on']; + $settings['bullets_always_on'] = $settings['navigaion_always_on']; + $settings['thumbs_always_on'] = $settings['navigaion_always_on']; + unset($settings['navigaion_always_on']); + } + + if(isset($settings['hide_thumbs']) && !isset($settings['hide_arrows']) && !isset($settings['hide_bullets'])){ //as hide_thumbs is still existing, we need to check if the other two were already set and only translate this if they are not set yet + $settings['hide_arrows'] = $settings['hide_thumbs']; + $settings['hide_bullets'] = $settings['hide_thumbs']; + } + + if(isset($settings['navigaion_align_vert'])){ + $settings['bullets_align_vert'] = $settings['navigaion_align_vert']; + $settings['thumbnails_align_vert'] = $settings['navigaion_align_vert']; + unset($settings['navigaion_align_vert']); + } + + if(isset($settings['navigaion_align_hor'])){ + $settings['bullets_align_hor'] = $settings['navigaion_align_hor']; + $settings['thumbnails_align_hor'] = $settings['navigaion_align_hor']; + unset($settings['navigaion_align_hor']); + } + + if(isset($settings['navigaion_offset_hor'])){ + $settings['bullets_offset_hor'] = $settings['navigaion_offset_hor']; + $settings['thumbnails_offset_hor'] = $settings['navigaion_offset_hor']; + unset($settings['navigaion_offset_hor']); + } + + if(isset($settings['navigaion_offset_hor'])){ + $settings['bullets_offset_hor'] = $settings['navigaion_offset_hor']; + $settings['thumbnails_offset_hor'] = $settings['navigaion_offset_hor']; + unset($settings['navigaion_offset_hor']); + } + + if(isset($settings['navigaion_offset_vert'])){ + $settings['bullets_offset_vert'] = $settings['navigaion_offset_vert']; + $settings['thumbnails_offset_vert'] = $settings['navigaion_offset_vert']; + unset($settings['navigaion_offset_vert']); + } + + if(isset($settings['show_timerbar']) && !isset($settings['enable_progressbar'])){ + if($settings['show_timerbar'] == 'hide'){ + $settings['enable_progressbar'] = 'off'; + $settings['show_timerbar'] = 'top'; + }else{ + $settings['enable_progressbar'] = 'on'; + } + } + + return $settings; + } + + + /* Provider: - * + * explodes google fonts and returns the number of font weights of all fonts + * @since: 5.0 + **/ + public static function get_font_weight_count($string){ + $string = explode(':', $string); + + $nums = 0; + + if(count($string) >= 2){ + $string = $string[1]; + if(strpos($string, '&') !== false){ + $string = expode('&', $string); + $string = $string[0]; + } + + $nums = count(explode(',', $string)); + } + + return $nums; + } + + + /* Provider: - * + * strip slashes recursive + * @since: 5.0 + */ + public static function stripslashes_deep($value){ + $value = is_array($value) ? + array_map( array('RevSliderBase', 'stripslashes_deep'), $value) : + stripslashes($value); + + return $value; + } + + + /* Provider: - * + * check if file is in zip + * @since: 5.0 + */ + public static function check_file_in_zip($zip, $image, $filepath, $alias, &$alreadyImported, $add_path = false){ + if(trim($image) !== ''){ + if(strpos($image, 'http') !== false){ + }else{ + $zimage = $zip->getStream('images/'.$image); + if(!$zimage){ + echo $image.__(' not found!
          ', REVSLIDER_TEXTDOMAIN); + }else{ + if(!isset($alreadyImported['zip://'.$filepath."#".'images/'.$image])){ + $importImage = RevSliderFunctionsWP::import_media('zip://'.$filepath."#".'images/'.$image, $alias.'/'); + if($importImage !== false){ + $alreadyImported['zip://'.$filepath."#".'images/'.$image] = $importImage['path']; + + $image = $importImage['path']; + } + }else{ + $image = $alreadyImported['zip://'.$filepath."#".'images/'.$image]; + } + } + if($add_path){ + $upload_dir = wp_upload_dir(); + $cont_url = $upload_dir['baseurl']; + $image = str_replace('uploads/uploads/', 'uploads/', $cont_url . '/' . $image); + } + } + } + + return $image; + } + + + /* Provider: - * + * add "a" tags to links within a text + * @since: 5.0 + */ + public static function add_wrap_around_url($text){ + $reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/"; + // Check if there is a url in the text + if(preg_match($reg_exUrl, $text, $url)){ + // make the urls hyper links + return preg_replace($reg_exUrl, ''.$url[0].'', $text); + }else{ + // if no urls in the text just return the text + return $text; + } + } + +} + +/* Provider: - * + * old classname extends new one (old classnames will be obsolete soon) + * @since: 5.0 + **/ +class UniteBaseClassRev extends RevSliderBase {} +?> \ No newline at end of file diff --git a/plugins/revslider/includes/framework/cssparser.class.php b/plugins/revslider/includes/framework/cssparser.class.php new file mode 100644 index 0000000..a94d04a --- /dev/null +++ b/plugins/revslider/includes/framework/cssparser.class.php @@ -0,0 +1,536 @@ + + * @link http://www.themepunch.com/ + * @copyright 2015 ThemePunch + */ + +if( !defined( 'ABSPATH') ) exit(); + +class RevSliderCssParser{ + + private $cssContent; + + public function __construct(){ + + } + + /* Provider: - * + * + * init the parser, set css content + */ + public function initContent($cssContent){ + $this->cssContent = $cssContent; + } + + + /* Provider: - * + * + * get array of slide classes, between two sections. + */ + public function getArrClasses($startText = "",$endText="",$explodeonspace=false){ + + $content = $this->cssContent; + + //trim from top + if(!empty($startText)){ + $posStart = strpos($content, $startText); + if($posStart !== false) + $content = substr($content, $posStart,strlen($content)-$posStart); + } + + //trim from bottom + if(!empty($endText)){ + $posEnd = strpos($content, $endText); + if($posEnd !== false) + $content = substr($content,0,$posEnd); + } + + //get styles + $lines = explode("\n",$content); + $arrClasses = array(); + foreach($lines as $key=>$line){ + $line = trim($line); + if(strpos($line, "{") === false) + continue; + //skip unnessasary links + if(strpos($line, ".caption a") !== false) + continue; + + if(strpos($line, ".tp-caption a") !== false) + continue; + + //get style out of the line + $class = str_replace("{", "", $line); + $class = trim($class); + + //skip captions like this: .tp-caption.imageclass img + if(strpos($class," ") !== false){ + if(!$explodeonspace){ + continue; + }else{ + $class = explode(',', $class); + $class = $class[0]; + } + } + //skip captions like this: .tp-caption.imageclass:hover, :before, :after + if(strpos($class,":") !== false) + continue; + + $class = str_replace(".caption.", ".", $class); + $class = str_replace(".tp-caption.", ".", $class); + + $class = str_replace(".", "", $class); + $class = trim($class); + $arrWords = explode(" ", $class); + $class = $arrWords[count($arrWords)-1]; + $class = trim($class); + + $arrClasses[] = $class; + } + + sort($arrClasses); + + return($arrClasses); + } + + + public static function parseCssToArray($css){ + + while(strpos($css, '/* Provider: - ') !== false){ + if(strpos($css, '*/') === false) return false; + $start = strpos($css, '/* Provider: - '); + $end = strpos($css, '*/') + 2; + $css = str_replace(substr($css, $start, $end - $start), '', $css); + } + + //preg_match_all( '/(?ims)([a-z0-9\s\.\:#_\-@]+)\{([^\}]*)\}/', $css, $arr); + preg_match_all( '/(?ims)([a-z0-9\,\s\.\:#_\-@]+)\{([^\}]*)\}/', $css, $arr); + + $result = array(); + foreach ($arr[0] as $i => $x){ + $selector = trim($arr[1][$i]); + if(strpos($selector, '{') !== false || strpos($selector, '}') !== false) return false; + $rules = explode(';', trim($arr[2][$i])); + $result[$selector] = array(); + foreach ($rules as $strRule){ + if (!empty($strRule)){ + $rule = explode(":", $strRule); + if(strpos($rule[0], '{') !== false || strpos($rule[0], '}') !== false || strpos($rule[1], '{') !== false || strpos($rule[1], '}') !== false) return false; + + //put back everything but not $rule[0]; + $key = trim($rule[0]); + unset($rule[0]); + $values = implode(':', $rule); + + $result[$selector][trim($key)] = trim(str_replace("'", '"', $values)); + } + } + } + return($result); + } + + + public static function parseDbArrayToCss($cssArray, $nl = "\n\r"){ + $css = ''; + $deformations = self::get_deformation_css_tags(); + + $transparency = array( + 'color' => 'color-transparency', + 'background-color' => 'background-transparency', + 'border-color' => 'border-transparency' + ); + + foreach($cssArray as $id => $attr){ + $stripped = ''; + if(strpos($attr['handle'], '.tp-caption') !== false){ + $stripped = trim(str_replace('.tp-caption', '', $attr['handle'])); + } + + $attr['advanced'] = json_decode($attr['advanced'], true); + + $styles = json_decode(str_replace("'", '"', $attr['params']), true); + $styles_adv = $attr['advanced']['idle']; + + $css.= $attr['handle']; + if(!empty($stripped)) $css.= ', '.$stripped; + $css.= " {".$nl; + if(is_array($styles) || is_array($styles_adv)){ + if(is_array($styles)){ + foreach($styles as $name => $style){ + if(in_array($name, $deformations)) continue; + + if(!is_array($name) && isset($transparency[$name])){ //the style can have transparency! + if(isset($styles[$transparency[$name]]) && $style !== 'transparent'){ + $style = RevSliderFunctions::hex2rgba($style, $styles[$transparency[$name]] * 100); + } + } + + if(is_array($style)) $style = implode(' ', $style); + $css.= $name.':'.$style.";".$nl; + } + } + if(is_array($styles_adv)){ + foreach($styles_adv as $name => $style){ + if(in_array($name, $deformations)) continue; + if(is_array($style)) $style = implode(' ', $style); + $css.= $name.':'.$style.";".$nl; + } + } + } + $css.= "}".$nl.$nl; + + //add hover + $setting = json_decode($attr['settings'], true); + if(@$setting['hover'] == 'true'){ + $hover = json_decode(str_replace("'", '"', $attr['hover']), true); + $hover_adv = $attr['advanced']['hover']; + + if(is_array($hover) || is_array($hover_adv)){ + $css.= $attr['handle'].":hover"; + if(!empty($stripped)) $css.= ', '.$stripped.':hover'; + $css.= " {".$nl; + if(is_array($hover)){ + foreach($hover as $name => $style){ + if(in_array($name, $deformations)) continue; + + if(!is_array($name) && isset($transparency[$name])){ //the style can have transparency! + if(isset($hover[$transparency[$name]]) && $style !== 'transparent'){ + $style = RevSliderFunctions::hex2rgba($style, $hover[$transparency[$name]] * 100); + } + } + + if(is_array($style)) $style = implode(' ', $style); + $css.= $name.':'.$style.";".$nl; + } + } + if(is_array($hover_adv)){ + foreach($hover_adv as $name => $style){ + if(in_array($name, $deformations)) continue; + if(is_array($style)) $style = implode(' ', $style); + $css.= $name.':'.$style.";".$nl; + } + } + $css.= "}".$nl.$nl; + } + } + } + return $css; + } + + + public static function parseArrayToCss($cssArray, $nl = "\n\r", $adv = false){ + $css = ''; + foreach($cssArray as $id => $attr){ + $advanced = (array)$attr['advanced']; + $stripped = ''; + if(strpos($attr['handle'], '.tp-caption') !== false){ + $stripped = trim(str_replace('.tp-caption', '', $attr['handle'])); + } + $styles = (array)$attr['params']; + $css.= $attr['handle']; + if(!empty($stripped)) $css.= ', '.$stripped; + $css.= " {".$nl; + + if($adv && isset($advanced['idle'])){ + $styles = array_merge($styles, (array)$advanced['idle']); + } + + if(is_array($styles) && !empty($styles)){ + foreach($styles as $name => $style){ + if($name == 'background-color' && strpos($style, 'rgba') !== false){ //rgb && rgba + $rgb = explode(',', str_replace('rgba', 'rgb', $style)); + unset($rgb[count($rgb)-1]); + $rgb = implode(',', $rgb).')'; + $css.= $name.':'.$rgb.";".$nl; + } + $style = (is_array($style)) ? implode(' ', $style) : $style; + $css.= $name.':'.$style.";".$nl; + } + } + + $css.= "}".$nl.$nl; + + //add hover + $setting = (array)$attr['settings']; + if(@$setting['hover'] == 'true'){ + $hover = (array)$attr['hover']; + if($adv && isset($advanced['hover'])){ + $styles = array_merge($styles, (array)$advanced['hover']); + } + + if(is_array($hover)){ + $css.= $attr['handle'].":hover"; + if(!empty($stripped)) $css.= ', '.$stripped.":hover"; + $css.= " {".$nl; + foreach($hover as $name => $style){ + if($name == 'background-color' && strpos($style, 'rgba') !== false){ //rgb && rgba + $rgb = explode(',', str_replace('rgba', 'rgb', $style)); + unset($rgb[count($rgb)-1]); + $rgb = implode(',', $rgb).')'; + $css.= $name.':'.$rgb.";".$nl; + } + $style = (is_array($style)) ? implode(' ', $style) : $style; + $css.= $name.':'.$style.";".$nl; + } + $css.= "}".$nl.$nl; + } + } + } + return $css; + } + + + public static function parseStaticArrayToCss($cssArray, $nl = "\n"){ + $css = ''; + foreach($cssArray as $class => $styles){ + $css.= $class." {".$nl; + if(is_array($styles) && !empty($styles)){ + foreach($styles as $name => $style){ + $style = (is_array($style)) ? implode(' ', $style) : $style; + $css.= $name.':'.$style.";".$nl; + } + } + $css.= "}".$nl.$nl; + } + return $css; + } + + + public static function parseDbArrayToArray($cssArray, $handle = false){ + + if(!is_array($cssArray) || empty($cssArray)) return false; + + foreach($cssArray as $key => $css){ + if($handle != false){ + if($cssArray[$key]['handle'] == '.tp-caption.'.$handle){ + $cssArray[$key]['params'] = json_decode(str_replace("'", '"', $css['params'])); + $cssArray[$key]['hover'] = json_decode(str_replace("'", '"', $css['hover'])); + $cssArray[$key]['advanced'] = json_decode(str_replace("'", '"', $css['advanced'])); + $cssArray[$key]['settings'] = json_decode(str_replace("'", '"', $css['settings'])); + return $cssArray[$key]; + }else{ + unset($cssArray[$key]); + } + }else{ + $cssArray[$key]['params'] = json_decode(str_replace("'", '"', $css['params'])); + $cssArray[$key]['hover'] = json_decode(str_replace("'", '"', $css['hover'])); + $cssArray[$key]['advanced'] = json_decode(str_replace("'", '"', $css['advanced'])); + $cssArray[$key]['settings'] = json_decode(str_replace("'", '"', $css['settings'])); + } + } + + return $cssArray; + } + + + public static function compress_css($buffer){ + /* Provider: - remove comments */ + $buffer = preg_replace("!/\*[^*]*\*+([^/][^*]*\*+)*/!", "", $buffer) ; + /* Provider: - remove tabs, spaces, newlines, etc. */ + $arr = array("\r\n", "\r", "\n", "\t", " ", " ", " "); + $rep = array("", "", "", "", " ", " ", " "); + $buffer = str_replace($arr, $rep, $buffer); + /* Provider: - remove whitespaces around {}:, */ + $buffer = preg_replace("/\s*([\{\}:,])\s*/", "$1", $buffer); + /* Provider: - remove last ; */ + $buffer = str_replace(';}', "}", $buffer); + + return $buffer; + } + + + /* Provider: - * + * Defines the default CSS Classes, can be given a version number to order them accordingly + * @since: 5.0 + **/ + public static function default_css_classes(){ + + $default = array( + '.tp-caption.medium_grey' => '4', + '.tp-caption.small_text' => '4', + '.tp-caption.medium_text' => '4', + '.tp-caption.large_text' => '4', + '.tp-caption.very_large_text' => '4', + '.tp-caption.very_big_white' => '4', + '.tp-caption.very_big_black' => '4', + '.tp-caption.modern_medium_fat' => '4', + '.tp-caption.modern_medium_fat_white' => '4', + '.tp-caption.modern_medium_light' => '4', + '.tp-caption.modern_big_bluebg' => '4', + '.tp-caption.modern_big_redbg' => '4', + '.tp-caption.modern_small_text_dark' => '4', + '.tp-caption.boxshadow' => '4', + '.tp-caption.black' => '4', + '.tp-caption.noshadow' => '4', + '.tp-caption.thinheadline_dark' => '4', + '.tp-caption.thintext_dark' => '4', + '.tp-caption.largeblackbg' => '4', + '.tp-caption.largepinkbg' => '4', + '.tp-caption.largewhitebg' => '4', + '.tp-caption.largegreenbg' => '4', + '.tp-caption.excerpt' => '4', + '.tp-caption.large_bold_grey' => '4', + '.tp-caption.medium_thin_grey' => '4', + '.tp-caption.small_thin_grey' => '4', + '.tp-caption.lightgrey_divider' => '4', + '.tp-caption.large_bold_darkblue' => '4', + '.tp-caption.medium_bg_darkblue' => '4', + '.tp-caption.medium_bold_red' => '4', + '.tp-caption.medium_light_red' => '4', + '.tp-caption.medium_bg_red' => '4', + '.tp-caption.medium_bold_orange' => '4', + '.tp-caption.medium_bg_orange' => '4', + '.tp-caption.grassfloor' => '4', + '.tp-caption.large_bold_white' => '4', + '.tp-caption.medium_light_white' => '4', + '.tp-caption.mediumlarge_light_white' => '4', + '.tp-caption.mediumlarge_light_white_center' => '4', + '.tp-caption.medium_bg_asbestos' => '4', + '.tp-caption.medium_light_black' => '4', + '.tp-caption.large_bold_black' => '4', + '.tp-caption.mediumlarge_light_darkblue' => '4', + '.tp-caption.small_light_white' => '4', + '.tp-caption.roundedimage' => '4', + '.tp-caption.large_bg_black' => '4', + '.tp-caption.mediumwhitebg' => '4', + '.tp-caption.MarkerDisplay' => '5.0', + '.tp-caption.Restaurant-Display' => '5.0', + '.tp-caption.Restaurant-Cursive' => '5.0', + '.tp-caption.Restaurant-ScrollDownText' => '5.0', + '.tp-caption.Restaurant-Description' => '5.0', + '.tp-caption.Restaurant-Price' => '5.0', + '.tp-caption.Restaurant-Menuitem' => '5.0', + '.tp-caption.Furniture-LogoText' => '5.0', + '.tp-caption.Furniture-Plus' => '5.0', + '.tp-caption.Furniture-Title' => '5.0', + '.tp-caption.Furniture-Subtitle' => '5.0', + '.tp-caption.Gym-Display' => '5.0', + '.tp-caption.Gym-Subline' => '5.0', + '.tp-caption.Gym-SmallText' => '5.0', + '.tp-caption.Fashion-SmallText' => '5.0', + '.tp-caption.Fashion-BigDisplay' => '5.0', + '.tp-caption.Fashion-TextBlock' => '5.0', + '.tp-caption.Sports-Display' => '5.0', + '.tp-caption.Sports-DisplayFat' => '5.0', + '.tp-caption.Sports-Subline' => '5.0', + '.tp-caption.Instagram-Caption' => '5.0', + '.tp-caption.News-Title' => '5.0', + '.tp-caption.News-Subtitle' => '5.0', + '.tp-caption.Photography-Display' => '5.0', + '.tp-caption.Photography-Subline' => '5.0', + '.tp-caption.Photography-ImageHover' => '5.0', + '.tp-caption.Photography-Menuitem' => '5.0', + '.tp-caption.Photography-Textblock' => '5.0', + '.tp-caption.Photography-Subline-2' => '5.0', + '.tp-caption.Photography-ImageHover2' => '5.0', + '.tp-caption.WebProduct-Title' => '5.0', + '.tp-caption.WebProduct-SubTitle' => '5.0', + '.tp-caption.WebProduct-Content' => '5.0', + '.tp-caption.WebProduct-Menuitem' => '5.0', + '.tp-caption.WebProduct-Title-Light' => '5.0', + '.tp-caption.WebProduct-SubTitle-Light' => '5.0', + '.tp-caption.WebProduct-Content-Light' => '5.0', + '.tp-caption.FatRounded' => '5.0', + '.tp-caption.NotGeneric-Title' => '5.0', + '.tp-caption.NotGeneric-SubTitle' => '5.0', + '.tp-caption.NotGeneric-CallToAction' => '5.0', + '.tp-caption.NotGeneric-Icon' => '5.0', + '.tp-caption.NotGeneric-Menuitem' => '5.0', + '.tp-caption.MarkerStyle' => '5.0', + '.tp-caption.Gym-Menuitem' => '5.0', + '.tp-caption.Newspaper-Button' => '5.0', + '.tp-caption.Newspaper-Subtitle' => '5.0', + '.tp-caption.Newspaper-Title' => '5.0', + '.tp-caption.Newspaper-Title-Centered' => '5.0', + '.tp-caption.Hero-Button' => '5.0', + '.tp-caption.Video-Title' => '5.0', + '.tp-caption.Video-SubTitle' => '5.0', + '.tp-caption.NotGeneric-Button' => '5.0', + '.tp-caption.NotGeneric-BigButton' => '5.0', + '.tp-caption.WebProduct-Button' => '5.0', + '.tp-caption.Restaurant-Button' => '5.0', + '.tp-caption.Gym-Button' => '5.0', + '.tp-caption.Gym-Button-Light' => '5.0', + '.tp-caption.Sports-Button-Light' => '5.0', + '.tp-caption.Sports-Button-Red' => '5.0', + '.tp-caption.Photography-Button' => '5.0', + '.tp-caption.Newspaper-Button-2' => '5.0' + ); + + $default = apply_filters('revslider_mod_default_css_handles', $default); + + return $default; + } + + + /* Provider: - * + * Defines the deformation CSS which is not directly usable as pure CSS + * @since: 5.0 + **/ + public static function get_deformation_css_tags(){ + + return array( + 'x', + 'y', + 'z', + 'skewx', + 'skewy', + 'scalex', + 'scaley', + 'opacity', + 'xrotate', + 'yrotate', + '2d_rotation', + 'layer_2d_origin_x', + 'layer_2d_origin_y', + '2d_origin_x', + '2d_origin_y', + 'pers', + + 'color-transparency', + 'background-transparency', + 'border-transparency', + 'css_cursor', + 'speed', + 'easing', + 'corner_left', + 'corner_right', + 'parallax' + + ); + + } + + + public static function get_captions_sorted(){ + $db = new RevSliderDB(); + $styles = $db->fetch(RevSliderGlobals::$table_css, '', 'handle ASC'); + + $arr = array('5.0' => array(), 'Custom' => array(), '4' => array()); + + foreach($styles as $style){ + $setting = json_decode($style['settings'], true); + + if(!isset($setting['type'])) $setting['type'] = 'text'; + + $arr[ucfirst($setting['version'])][] = array('label' => trim(str_replace('.tp-caption.', '', $style['handle'])), 'type' => $setting['type']); + } + + $sorted = array(); + foreach($arr as $version => $class){ + foreach($class as $name){ + $sorted[] = array('label' => $name['label'], 'version' => $version, 'type' => $name['type']); + } + } + + return $sorted; + } +} + +/* Provider: - * + * old classname extends new one (old classnames will be obsolete soon) + * @since: 5.0 + **/ +class UniteCssParserRev extends RevSliderCssParser {} +?> \ No newline at end of file diff --git a/plugins/revslider/includes/framework/db.class.php b/plugins/revslider/includes/framework/db.class.php new file mode 100644 index 0000000..f4fd203 --- /dev/null +++ b/plugins/revslider/includes/framework/db.class.php @@ -0,0 +1,166 @@ + + * @link http://www.themepunch.com/ + * @copyright 2015 ThemePunch + */ + +if( !defined( 'ABSPATH') ) exit(); + +class RevSliderDB{ + + private $lastRowID; + + /* Provider: - * + * + * constructor - set database object + */ + public function __construct(){ + } + + /* Provider: - * + * + * throw error + */ + private function throwError($message,$code=-1){ + RevSliderFunctions::throwError($message,$code); + } + + //------------------------------------------------------------ + // validate for errors + private function checkForErrors($prefix = ""){ + global $wpdb; + + if($wpdb->last_error !== ''){ + $query = $wpdb->last_query; + $message = $wpdb->last_error; + + if($prefix) $message = $prefix.' - '.$message.''; + if($query) $message .= '
          ---
          Query: ' . $query; + + $this->throwError($message); + } + } + + + /* Provider: - * + * + * insert variables to some table + */ + public function insert($table,$arrItems){ + global $wpdb; + + $wpdb->insert($table, $arrItems); + $this->checkForErrors("Insert query error"); + + $this->lastRowID = $wpdb->insert_id; + + return($this->lastRowID); + } + + /* Provider: - * + * + * get last insert id + */ + public function getLastInsertID(){ + global $wpdb; + + $this->lastRowID = $wpdb->insert_id; + return($this->lastRowID); + } + + + /* Provider: - * + * + * delete rows + */ + public function delete($table,$where){ + global $wpdb; + + RevSliderFunctions::validateNotEmpty($table,"table name"); + RevSliderFunctions::validateNotEmpty($where,"where"); + + $query = "delete from $table where $where"; + + $wpdb->query($query); + + $this->checkForErrors("Delete query error"); + } + + + /* Provider: - * + * + * run some sql query + */ + public function runSql($query){ + global $wpdb; + + $wpdb->query($query); + $this->checkForErrors("Regular query error"); + } + + + /* Provider: - * + * + * insert variables to some table + */ + public function update($table,$arrItems,$where){ + global $wpdb; + + $response = $wpdb->update($table, $arrItems, $where); + + return($wpdb->num_rows); + } + + + /* Provider: - * + * + * get data array from the database + * + */ + public function fetch($tableName,$where="",$orderField="",$groupByField="",$sqlAddon=""){ + global $wpdb; + + $query = "select * from $tableName"; + if($where) $query .= " where $where"; + if($orderField) $query .= " order by $orderField"; + if($groupByField) $query .= " group by $groupByField"; + if($sqlAddon) $query .= " ".$sqlAddon; + + $response = $wpdb->get_results($query,ARRAY_A); + + $this->checkForErrors("fetch"); + + return($response); + } + + /* Provider: - * + * + * fetch only one item. if not found - throw error + */ + public function fetchSingle($tableName,$where="",$orderField="",$groupByField="",$sqlAddon=""){ + $response = $this->fetch($tableName, $where, $orderField, $groupByField, $sqlAddon); + + if(empty($response)) + $this->throwError("Record not found"); + $record = $response[0]; + return($record); + } + + /* Provider: - * + * + * escape data to avoid sql errors and injections. + */ + public function escape($string){ + $string = esc_sql($string); + return($string); + } + +} + +/* Provider: - * + * old classname extends new one (old classnames will be obsolete soon) + * @since: 5.0 + **/ +class UniteDBRev extends RevSliderDB {} +?> \ No newline at end of file diff --git a/plugins/revslider/includes/framework/elements-base.class.php b/plugins/revslider/includes/framework/elements-base.class.php new file mode 100644 index 0000000..2023fdb --- /dev/null +++ b/plugins/revslider/includes/framework/elements-base.class.php @@ -0,0 +1,26 @@ + + * @link http://www.themepunch.com/ + * @copyright 2015 ThemePunch + */ + +if( !defined( 'ABSPATH') ) exit(); + +class RevSliderElementsBase { + + protected $db; + + public function __construct(){ + + $this->db = new RevSliderDB(); + } + +} + +/* Provider: - * + * old classname extends new one (old classnames will be obsolete soon) + * @since: 5.0 + **/ +class UniteElementsBaseRev extends RevSliderElementsBase {} +?> \ No newline at end of file diff --git a/plugins/revslider/includes/framework/em-integration.class.php b/plugins/revslider/includes/framework/em-integration.class.php new file mode 100644 index 0000000..091d508 --- /dev/null +++ b/plugins/revslider/includes/framework/em-integration.class.php @@ -0,0 +1,180 @@ + + * @link http://www.themepunch.com/ + * @copyright 2015 ThemePunch + */ + +if( !defined( 'ABSPATH') ) exit(); + +class RevSliderEventsManager { + + const DEFAULT_FILTER = "none"; + + /* Provider: - * + * + * check if events class exists + */ + public static function isEventsExists(){ + if(defined("EM_VERSION") && defined("EM_PRO_MIN_VERSION")) + return(true); + + return(false); + } + + + /* Provider: - * + * + * get sort by list + */ + public static function getArrFilterTypes(){ + + $arrEventsSort = array("none" => __("All Events",REVSLIDER_TEXTDOMAIN), + "today" => __("Today",REVSLIDER_TEXTDOMAIN), + "tomorrow"=>__("Tomorrow",REVSLIDER_TEXTDOMAIN), + "future"=>__("Future",REVSLIDER_TEXTDOMAIN), + "past"=>__("Past",REVSLIDER_TEXTDOMAIN), + "month"=>__("This Month",REVSLIDER_TEXTDOMAIN), + "nextmonth"=>__("Next Month",REVSLIDER_TEXTDOMAIN) + ); + + return($arrEventsSort); + } + + + /* Provider: - * + * + * get meta query + */ + public static function getWPQuery($filterType, $sortBy){ + $response = array(); + + $dayMs = 60*60*24; + + $time = current_time('timestamp'); + $todayStart = strtotime(date('Y-m-d', $time)); + $todayEnd = $todayStart + $dayMs-1; + $tomorrowStart = $todayEnd+1; + $tomorrowEnd = $tomorrowStart + $dayMs-1; + + $start_month = strtotime(date('Y-m-1',$time)); + $end_month = strtotime(date('Y-m-t',$time)) + 86399; + $next_month_middle = strtotime('+1 month', $time); //get the end of this month + 1 day + $start_next_month = strtotime(date('Y-m-1',$next_month_middle)); + $end_next_month = strtotime(date('Y-m-t',$next_month_middle)) + 86399; + + $query = array(); + + switch($filterType){ + case self::DEFAULT_FILTER: //none + break; + case "today": + $query[] = array( 'key' => '_start_ts', 'value' => $todayEnd, 'compare' => '<=' ); + $query[] = array( 'key' => '_end_ts', 'value' => $todayStart, 'compare' => '>=' ); + break; + case "future": + $query[] = array( 'key' => '_start_ts', 'value' => $time, 'compare' => '>' ); + break; + case "tomorrow": + $query[] = array( 'key' => '_start_ts', 'value' => $tomorrowEnd, 'compare' => '<=' ); + $query[] = array( 'key' => '_end_ts', 'value' => $todayStart, 'compare' => '>=' ); + break; + case "past": + $query[] = array( 'key' => '_end_ts', 'value' => $todayStart, 'compare' => '<' ); + break; + case "month": + $query[] = array( 'key' => '_start_ts', 'value' => $end_month, 'compare' => '<=' ); + $query[] = array( 'key' => '_end_ts', 'value' => $start_month, 'compare' => '>=' ); + break; + case "nextmonth": + $query[] = array( 'key' => '_start_ts', 'value' => $end_next_month, 'compare' => '<=' ); + $query[] = array( 'key' => '_end_ts', 'value' => $start_next_month, 'compare' => '>=' ); + break; + default: + RevSliderFunctions::throwError("Wrong event filter"); + break; + } + + if(!empty($query)) + $response["meta_query"] = $query; + + //convert sortby + switch($sortBy){ + case "event_start_date": + $response["orderby"] = "meta_value_num"; + $response["meta_key"] = "_start_ts"; + break; + case "event_end_date": + $response["orderby"] = "meta_value_num"; + $response["meta_key"] = "_end_ts"; + break; + } + + return($response); + } + + /* Provider: - * + * + * get event post data in array. + * if the post is not event, return empty array + */ + public static function getEventPostData($postID){ + if(self::isEventsExists() == false) + return(array()); + + $postType = get_post_type($postID); + if($postType != EM_POST_TYPE_EVENT) + return(array()); + + $event = new EM_Event($postID, 'post_id'); + $location = $event->get_location(); + + $arrEvent = $event->to_array(); + $arrLocation = $location->to_array(); + $date_format = get_option('date_format'); + $time_format = get_option('time_format'); + + $arrEvent["event_start_date"] = date_format(date_create_from_format('Y-m-d', $arrEvent["event_start_date"]), $date_format); + $arrEvent["event_end_date"] = date_format(date_create_from_format('Y-m-d', $arrEvent["event_end_date"]), $date_format); + $arrEvent["event_start_time"] = date_format(date_create_from_format('H:i:s', $arrEvent["event_start_time"]), $time_format); + $arrEvent["event_end_time"] = date_format(date_create_from_format('H:i:s', $arrEvent["event_end_time"]), $time_format); + + $response = array(); + $response["start_date"] = $arrEvent["event_start_date"]; + $response["end_date"] = $arrEvent["event_end_date"]; + $response["start_time"] = $arrEvent["event_start_time"]; + $response["end_time"] = $arrEvent["event_end_time"]; + $response["id"] = $arrEvent["event_id"]; + $response["location_name"] = $arrLocation["location_name"]; + $response["location_address"] = $arrLocation["location_address"]; + $response["location_slug"] = $arrLocation["location_slug"]; + $response["location_town"] = $arrLocation["location_town"]; + $response["location_state"] = $arrLocation["location_state"]; + $response["location_postcode"] = $arrLocation["location_postcode"]; + $response["location_region"] = $arrLocation["location_region"]; + $response["location_country"] = $arrLocation["location_country"]; + $response["location_latitude"] = $arrLocation["location_latitude"]; + $response["location_longitude"] = $arrLocation["location_longitude"]; + + return($response); + } + + /* Provider: - * + * + * get events sort by array + */ + public static function getArrSortBy(){ + $arrSortBy = array(); + $arrSortBy["event_start_date"] = __("Event Start Date",REVSLIDER_TEXTDOMAIN); + $arrSortBy["event_end_date"] = __("Event End Date",REVSLIDER_TEXTDOMAIN); + return($arrSortBy); + } + +} + +/* Provider: - * + * old classname extends new one (old classnames will be obsolete soon) + * @since: 5.0 + **/ +class UniteEmRev extends RevSliderEventsManager {} +?> \ No newline at end of file diff --git a/plugins/revslider/includes/framework/functions-wordpress.class.php b/plugins/revslider/includes/framework/functions-wordpress.class.php new file mode 100644 index 0000000..dd01d04 --- /dev/null +++ b/plugins/revslider/includes/framework/functions-wordpress.class.php @@ -0,0 +1,1197 @@ + + * @link http://www.themepunch.com/ + * @copyright 2015 ThemePunch + */ + +if( !defined( 'ABSPATH') ) exit(); + +class RevSliderFunctionsWP{ + + public static $urlSite; + public static $urlAdmin; + + const SORTBY_NONE = "none"; + const SORTBY_ID = "ID"; + const SORTBY_AUTHOR = "author"; + const SORTBY_TITLE = "title"; + const SORTBY_SLUG = "name"; + const SORTBY_DATE = "date"; + const SORTBY_LAST_MODIFIED = "modified"; + const SORTBY_RAND = "rand"; + const SORTBY_COMMENT_COUNT = "comment_count"; + const SORTBY_MENU_ORDER = "menu_order"; + + const ORDER_DIRECTION_ASC = "ASC"; + const ORDER_DIRECTION_DESC = "DESC"; + + const THUMB_SMALL = "thumbnail"; + const THUMB_MEDIUM = "medium"; + const THUMB_LARGE = "large"; + const THUMB_FULL = "full"; + + const STATE_PUBLISHED = "publish"; + const STATE_DRAFT = "draft"; + + + /* Provider: - * + * + * init the static variables + */ + public static function initStaticVars(){ + + self::$urlAdmin = admin_url(); + if(substr(self::$urlAdmin, -1) != "/") + self::$urlAdmin .= "/"; + + } + + + /* Provider: - * + * + * get sort by with the names + */ + public static function getArrSortBy(){ + $arr = array(); + $arr[self::SORTBY_ID] = "Post ID"; + $arr[self::SORTBY_DATE] = "Date"; + $arr[self::SORTBY_TITLE] = "Title"; + $arr[self::SORTBY_SLUG] = "Slug"; + $arr[self::SORTBY_AUTHOR] = "Author"; + $arr[self::SORTBY_LAST_MODIFIED] = "Last Modified"; + $arr[self::SORTBY_COMMENT_COUNT] = "Number Of Comments"; + $arr[self::SORTBY_RAND] = "Random"; + $arr[self::SORTBY_NONE] = "Unsorted"; + $arr[self::SORTBY_MENU_ORDER] = "Custom Order"; + return($arr); + } + + + /* Provider: - * + * + * get array of sort direction + */ + public static function getArrSortDirection(){ + $arr = array(); + $arr[self::ORDER_DIRECTION_DESC] = "Descending"; + $arr[self::ORDER_DIRECTION_ASC] = "Ascending"; + return($arr); + } + + + /* Provider: - * + * get blog id + */ + public static function getBlogID(){ + global $blog_id; + return($blog_id); + } + + + /* Provider: - * + * + * get blog id + */ + public static function isMultisite(){ + $isMultisite = is_multisite(); + return($isMultisite); + } + + + /* Provider: - * + * + * check if some db table exists + */ + public static function isDBTableExists($tableName){ + global $wpdb; + + if(empty($tableName)) + RevSliderFunctions::throwError("Empty table name!!!"); + + $sql = "show tables like '$tableName'"; + + $table = $wpdb->get_var($sql); + + if($table == $tableName) + return(true); + + return(false); + } + + + /* Provider: - * + * + * get wordpress base path + */ + public static function getPathBase(){ + return ABSPATH; + } + + /* Provider: - * + * + * get wp-content path + */ + public static function getPathUploads(){ + global $wpdb; + if(self::isMultisite()){ + if(!defined("BLOGUPLOADDIR")){ + $pathBase = self::getPathBase(); + //$pathContent = $pathBase."wp-content/uploads/"; + $pathContent = $pathBase."wp-content/uploads/sites/{$wpdb->blogid}/"; + }else + $pathContent = BLOGUPLOADDIR; + }else{ + $pathContent = WP_CONTENT_DIR; + if(!empty($pathContent)){ + $pathContent .= "/"; + } + else{ + $pathBase = self::getPathBase(); + $pathContent = $pathBase."wp-content/uploads/"; + } + } + + return($pathContent); + } + + /* Provider: - * + * + * get content url + */ + public static function getUrlUploads(){ + + if(self::isMultisite() == false){ //without multisite + $baseUrl = content_url()."/"; + } + else{ //for multisite + $arrUploadData = wp_upload_dir(); + $baseUrl = $arrUploadData["baseurl"]."/"; + } + + return($baseUrl); + + } + + + + /* Provider: - Import media from url + * + * @param string $file_url URL of the existing file from the original site + * @param int $folder_name The slidername will be used as folder name in import + * + * @return boolean True on success, false on failure + */ + + public static function import_media($file_url, $folder_name) { + require_once(ABSPATH . 'wp-admin/includes/image.php'); + + $ul_dir = wp_upload_dir(); + $artDir = 'revslider/'; + + //if the directory doesn't exist, create it + if(!file_exists($ul_dir['basedir'].'/'.$artDir)) mkdir($ul_dir['basedir'].'/'.$artDir); + if(!file_exists($ul_dir['basedir'].'/'.$artDir.$folder_name)) mkdir($ul_dir['basedir'].'/'.$artDir.$folder_name); + + //rename the file... alternatively, you could explode on "/" and keep the original file name + + $filename = basename($file_url); + //$siteurl = get_option('siteurl'); + + if(@fclose(@fopen($file_url, "r"))){ //make sure the file actually exists + + $saveDir = $ul_dir['basedir'].'/'.$artDir.$folder_name.$filename; + + $atc_id = self::get_image_id_by_url($artDir.$folder_name.$filename); + + if($atc_id == false || $atc_id == NULL){ + copy($file_url, $saveDir); + + $file_info = getimagesize($saveDir); + + //create an array of attachment data to insert into wp_posts table + $artdata = array( + 'post_author' => 1, + 'post_date' => current_time('mysql'), + 'post_date_gmt' => current_time('mysql'), + 'post_title' => $filename, + 'post_status' => 'inherit', + 'comment_status' => 'closed', + 'ping_status' => 'closed', + 'post_name' => sanitize_title_with_dashes(str_replace("_", "-", $filename)), + 'post_modified' => current_time('mysql'), + 'post_modified_gmt' => current_time('mysql'), + 'post_parent' => '', + 'post_type' => 'attachment', + 'guid' => $ul_dir['baseurl'].'/'.$artDir.$folder_name.$filename, + 'post_mime_type' => $file_info['mime'], + 'post_excerpt' => '', + 'post_content' => '' + ); + //insert the database record + $attach_id = wp_insert_attachment($artdata, $artDir.$folder_name.$filename); + }else{ + $attach_id = $atc_id; + } + + //generate metadata and thumbnails + if($attach_data = wp_generate_attachment_metadata($attach_id, $saveDir)) wp_update_attachment_metadata($attach_id, $attach_data); + if(!self::isMultisite()) $artDir = 'uploads/'.$artDir; + return array("id" => $attach_id, "path" => $artDir.$folder_name.$filename); + }else{ + return false; + } + } + /* Provider: - * + * + * register widget (must be class) + */ + public static function registerWidget($widgetName){ + add_action('widgets_init', create_function('', 'return register_widget("'.$widgetName.'");')); + } + + /* Provider: - * + * get image relative path from image url (from upload) + */ + public static function getImagePathFromURL($urlImage){ + + $baseUrl = self::getUrlUploads(); + $pathImage = str_replace($baseUrl, "", $urlImage); + + return($pathImage); + } + + /* Provider: - * + * get image real path physical on disk from url + */ + public static function getImageRealPathFromUrl($urlImage){ + $filepath = self::getImagePathFromURL($urlImage); + $realPath = RevSliderFunctionsWP::getPathUploads().$filepath; + return($realPath); + } + + + /* Provider: - * + * + * get image url from image path. + */ + public static function getImageUrlFromPath($pathImage){ + //protect from absolute url + $pathLower = strtolower($pathImage); + if(strpos($pathLower, "http://") !== false || strpos($pathLower, "www.") === 0) + return($pathImage); + + $urlImage = self::getUrlUploads().$pathImage; + return($urlImage); + } + + + /* Provider: - * + * + * get post categories list assoc - id / title + */ + public static function getCategoriesAssoc($taxonomy = "category"){ + + if(strpos($taxonomy,",") !== false){ + $arrTax = explode(",", $taxonomy); + $arrCats = array(); + foreach($arrTax as $tax){ + $cats = self::getCategoriesAssoc($tax); + $arrCats = array_merge($arrCats,$cats); + } + + return($arrCats); + } + + //$cats = get_terms("category"); + $args = array("taxonomy"=>$taxonomy); + $cats = get_categories($args); + + $arrCats = array(); + foreach($cats as $cat){ + $numItems = $cat->count; + $itemsName = "items"; + if($numItems == 1) + $itemsName = "item"; + + $title = $cat->name . " ($numItems $itemsName)"; + + $id = $cat->cat_ID; + $arrCats[$id] = $title; + } + return($arrCats); + } + + + /* Provider: - * + * + * return post type title from the post type + */ + public static function getPostTypeTitle($postType){ + + $objType = get_post_type_object($postType); + + if(empty($objType)) + return($postType); + + $title = $objType->labels->singular_name; + + return($title); + } + + + /* Provider: - * + * + * get post type taxomonies + */ + public static function getPostTypeTaxomonies($postType){ + $arrTaxonomies = get_object_taxonomies(array( 'post_type' => $postType ), 'objects'); + + $arrNames = array(); + foreach($arrTaxonomies as $key=>$objTax){ + $arrNames[$objTax->name] = $objTax->labels->name; + } + + return($arrNames); + } + + /* Provider: - * + * + * get post types taxonomies as string + */ + public static function getPostTypeTaxonomiesString($postType){ + $arrTax = self::getPostTypeTaxomonies($postType); + $strTax = ""; + foreach($arrTax as $name=>$title){ + if(!empty($strTax)) + $strTax .= ","; + $strTax .= $name; + } + + return($strTax); + } + + + /* Provider: - * + * + * get all the post types including custom ones + * the put to top items will be always in top (they must be in the list) + */ + public static function getPostTypesAssoc($arrPutToTop = array()){ + $arrBuiltIn = array( + "post"=>"post", + "page"=>"page", + ); + + $arrCustomTypes = get_post_types(array('_builtin' => false)); + + //top items validation - add only items that in the customtypes list + $arrPutToTopUpdated = array(); + foreach($arrPutToTop as $topItem){ + if(in_array($topItem, $arrCustomTypes) == true){ + $arrPutToTopUpdated[$topItem] = $topItem; + unset($arrCustomTypes[$topItem]); + } + } + + $arrPostTypes = array_merge($arrPutToTopUpdated,$arrBuiltIn,$arrCustomTypes); + + //update label + foreach($arrPostTypes as $key=>$type){ + $arrPostTypes[$key] = self::getPostTypeTitle($type); + } + + return($arrPostTypes); + } + + + /* Provider: - * + * + * get the category data + */ + public static function getCategoryData($catID){ + $catData = get_category($catID); + if(empty($catData)) + return($catData); + + $catData = (array)$catData; + return($catData); + } + + + /* Provider: - * + * + * get posts by coma saparated posts + */ + public static function getPostsByIDs($strIDs, $slider_id){ + + if(is_string($strIDs)){ + $arr = explode(",",$strIDs); + } + + $query = array( + 'post_type'=>"any", + 'post__in' => $arr + ); + + $query = apply_filters('revslider_get_posts', $query, $slider_id); + + $objQuery = new WP_Query($query); + + $arrPosts = $objQuery->posts; + + //dmp($query);dmp("num posts: ".count($arrPosts));exit(); + + foreach($arrPosts as $key=>$post){ + + if(method_exists($post, "to_array")) + $arrPosts[$key] = $post->to_array(); + else + $arrPosts[$key] = (array)$post; + } + + return($arrPosts); + } + + + /* Provider: - * + * + * get posts by some category + * could be multiple + */ + public static function getPostsByCategory($slider_id,$catID,$sortBy = self::SORTBY_ID,$direction = self::ORDER_DIRECTION_DESC,$numPosts=-1,$postTypes="any",$taxonomies="category",$arrAddition = array()){ + + //get post types + if(strpos($postTypes,",") !== false){ + $postTypes = explode(",", $postTypes); + if(array_search("any", $postTypes) !== false) + $postTypes = "any"; + } + + if(empty($postTypes)) + $postTypes = "any"; + + if(strpos($catID,",") !== false) + $catID = explode(",",$catID); + else + $catID = array($catID); + + if(RevSliderWpml::isWpmlExists()){ //translate categories to languages + $newcat = array(); + foreach($catID as $id){ + $newcat[] = icl_object_id($id, 'category', true); + } + $catID = $newcat; + } + + $query = array( + 'order'=>$direction, + 'posts_per_page'=>$numPosts, + 'showposts'=>$numPosts, + 'post_type'=>$postTypes + ); + + //add sort by (could be by meta) + if(strpos($sortBy, "meta_num_") === 0){ + $metaKey = str_replace("meta_num_", "", $sortBy); + $query["orderby"] = "meta_value_num"; + $query["meta_key"] = $metaKey; + }else + if(strpos($sortBy, "meta_") === 0){ + $metaKey = str_replace("meta_", "", $sortBy); + $query["orderby"] = "meta_value"; + $query["meta_key"] = $metaKey; + }else + $query["orderby"] = $sortBy; + + //get taxonomies array + $arrTax = array(); + if(!empty($taxonomies)){ + $arrTax = explode(",", $taxonomies); + } + + if(!empty($taxonomies)){ + + $taxQuery = array(); + + //add taxomonies to the query + if(strpos($taxonomies,",") !== false){ //multiple taxomonies + $taxonomies = explode(",",$taxonomies); + foreach($taxonomies as $taxomony){ + $taxArray = array( + 'taxonomy' => $taxomony, + 'field' => 'id', + 'terms' => $catID + ); + $taxQuery[] = $taxArray; + } + }else{ //single taxomony + $taxArray = array( + 'taxonomy' => $taxonomies, + 'field' => 'id', + 'terms' => $catID + ); + $taxQuery[] = $taxArray; + } + + $taxQuery['relation'] = 'OR'; + + $query['tax_query'] = $taxQuery; + } //if exists taxanomies + + + if(!empty($arrAddition)) + $query = array_merge($query, $arrAddition); + + $query = apply_filters('revslider_get_posts', $query, $slider_id); + + $objQuery = new WP_Query($query); + + $arrPosts = $objQuery->posts; + + + foreach($arrPosts as $key=>$post){ + + if(method_exists($post, "to_array")) + $arrPost = $post->to_array(); + else + $arrPost = (array)$post; + + $arrPostCats = self::getPostCategories($post, $arrTax); + $arrPost["categories"] = $arrPostCats; + + $arrPosts[$key] = $arrPost; + } + + return($arrPosts); + } + + /* Provider: - * + * + * get post categories by postID and taxonomies + * the postID can be post object or array too + */ + public static function getPostCategories($postID,$arrTax){ + + if(!is_numeric($postID)){ + $postID = (array)$postID; + $postID = $postID["ID"]; + } + + $arrCats = wp_get_post_terms( $postID, $arrTax); + $arrCats = RevSliderFunctions::convertStdClassToArray($arrCats); + return($arrCats); + } + + + /* Provider: - * + * + * get single post + */ + public static function getPost($postID){ + $post = get_post($postID); + if(empty($post)) + RevSliderFunctions::throwError("Post with id: $postID not found"); + + $arrPost = $post->to_array(); + return($arrPost); + } + + + /* Provider: - * + * + * update post state + */ + public static function updatePostState($postID,$state){ + $arrUpdate = array(); + $arrUpdate["ID"] = $postID; + $arrUpdate["post_status"] = $state; + + wp_update_post($arrUpdate); + } + + /* Provider: - * + * + * update post menu order + */ + public static function updatePostOrder($postID,$order){ + $arrUpdate = array(); + $arrUpdate["ID"] = $postID; + $arrUpdate["menu_order"] = $order; + + wp_update_post($arrUpdate); + } + + + /* Provider: - * + * + * get url of post thumbnail + */ + public static function getUrlPostImage($postID,$size = self::THUMB_FULL){ + + $post_thumbnail_id = get_post_thumbnail_id( $postID ); + if(empty($post_thumbnail_id)) + return(""); + + $arrImage = wp_get_attachment_image_src($post_thumbnail_id,$size); + if(empty($arrImage)) + return(""); + + $urlImage = $arrImage[0]; + return($urlImage); + } + + /* Provider: - * + * + * get post thumb id from post id + */ + public static function getPostThumbID($postID){ + $thumbID = get_post_thumbnail_id( $postID ); + return($thumbID); + } + + + /* Provider: - * + * + * get attachment image array by id and size + */ + public static function getAttachmentImage($thumbID,$size = self::THUMB_FULL){ + + $arrImage = wp_get_attachment_image_src($thumbID,$size); + if(empty($arrImage)) + return(false); + + $output = array(); + $output["url"] = RevSliderFunctions::getVal($arrImage, 0); + $output["width"] = RevSliderFunctions::getVal($arrImage, 1); + $output["height"] = RevSliderFunctions::getVal($arrImage, 2); + + return($output); + } + + + /* Provider: - * + * + * get attachment image url + */ + public static function getUrlAttachmentImage($thumbID,$size = self::THUMB_FULL){ + $arrImage = wp_get_attachment_image_src($thumbID,$size); + + if(empty($arrImage)) + return(false); + + $url = RevSliderFunctions::getVal($arrImage, 0); + return($url); + } + + + /* Provider: - * + * + * get link of edit slides by category id + */ + public static function getUrlSlidesEditByCatID($catID){ + + $url = self::$urlAdmin; + $url .= "edit.php?s&post_status=all&post_type=post&action=-1&m=0&cat=".$catID."&paged=1&mode=list&action2=-1"; + + return($url); + } + + /* Provider: - * + * + * get edit post url + */ + public static function getUrlEditPost($postID){ + $url = self::$urlAdmin; + $url .= "post.php?post=".$postID."&action=edit"; + + return($url); + } + + + /* Provider: - * + * + * get new post url + */ + public static function getUrlNewPost(){ + $url = self::$urlAdmin; + $url .= "post-new.php"; + return($url); + } + + + /* Provider: - * + * + * delete post + */ + public static function deletePost($postID){ + $success = wp_delete_post($postID,false); + if($success == false) + RevSliderFunctions::throwError("Could not delete post: $postID"); + } + + /* Provider: - * + * + * update post thumbnail + */ + public static function updatePostThumbnail($postID,$thumbID){ + set_post_thumbnail($postID, $thumbID); + } + + + /* Provider: - * + * + * get intro from content + */ + public static function getIntroFromContent($text){ + $intro = ""; + if(!empty($text)){ + $arrExtended = get_extended($text); + $intro = RevSliderFunctions::getVal($arrExtended, "main"); + + /* Provider: - + if(strlen($text) != strlen($intro)) + $intro .= "..."; + */ + } + + return($intro); + } + + + /* Provider: - * + * + * get excerpt from post id + */ + public static function getExcerptById($postID, $limit=55){ + + $post = get_post($postID); + + $excerpt = $post->post_excerpt; + $excerpt = trim($excerpt); + + $excerpt = trim($excerpt); + if(empty($excerpt)) + $excerpt = $post->post_content; + + $excerpt = strip_tags($excerpt,"

          "); + + $excerpt = RevSliderFunctions::getTextIntro($excerpt, $limit); + + return $excerpt; + } + + + /* Provider: - * + * + * get user display name from user id + */ + public static function getUserDisplayName($userID){ + + $displayName = get_the_author_meta('display_name', $userID); + + return($displayName); + } + + + /* Provider: - * + * + * get categories by id's + */ + public static function getCategoriesByIDs($arrIDs,$strTax = null){ + + if(empty($arrIDs)) + return(array()); + + if(is_string($arrIDs)) + $strIDs = $arrIDs; + else + $strIDs = implode(",", $arrIDs); + + $args = array(); + $args["include"] = $strIDs; + + if(!empty($strTax)){ + if(is_string($strTax)) + $strTax = explode(",",$strTax); + + $args["taxonomy"] = $strTax; + } + + $arrCats = get_categories( $args ); + + if(!empty($arrCats)) + $arrCats = RevSliderFunctions::convertStdClassToArray($arrCats); + + return($arrCats); + } + + + /* Provider: - * + * + * get categories short + */ + public static function getCategoriesByIDsShort($arrIDs,$strTax = null){ + $arrCats = self::getCategoriesByIDs($arrIDs,$strTax); + $arrNew = array(); + foreach($arrCats as $cat){ + $catID = $cat["term_id"]; + $catName = $cat["name"]; + $arrNew[$catID] = $catName; + } + + return($arrNew); + } + + + /* Provider: - * + * get categories list, copy the code from default wp functions + */ + public static function getCategoriesHtmlList($catIDs,$strTax = null){ + global $wp_rewrite; + + //$catList = get_the_category_list( ",", "", $postID ); + + $categories = self::getCategoriesByIDs($catIDs,$strTax); + + $arrErrors = RevSliderFunctions::getVal($categories, "errors"); + + if(!empty($arrErrors)){ + foreach($arrErrors as $key=>$arr){ + $strErrors = implode($arr,","); + } + + RevSliderFunctions::throwError("getCategoriesHtmlList error: ".$strErrors); + } + + $rel = ( is_object( $wp_rewrite ) && $wp_rewrite->using_permalinks() ) ? 'rel="category tag"' : 'rel="category"'; + + $separator = ','; + + $thelist = ''; + + $i = 0; + foreach ( $categories as $category ) { + + if(is_object($category)) + $category = (array)$category; + + if ( 0 < $i ) + $thelist .= $separator; + + $catID = $category["term_id"]; + $link = get_category_link($catID); + $catName = $category["name"]; + + if(!empty($link)) + $thelist .= '' . $catName.''; + else + $thelist .= $catName; + + ++$i; + } + + + return $thelist; + } + + + /* Provider: - * + * + * get post tags html list + */ + public static function getTagsHtmlList($postID){ + $tagList = get_the_tag_list("",",","",$postID); + return($tagList); + } + + /* Provider: - * + * + * convert date to the date format that the user chose. + */ + public static function convertPostDate($date, $with_time = false){ + if(empty($date)) + return($date); + if($with_time){ + $date = date_i18n(get_option('date_format').' '.get_option('time_format'), strtotime($date)); + }else{ + $date = date_i18n(get_option('date_format'), strtotime($date)); + } + + return($date); + } + + /* Provider: - * + * + * get assoc list of the taxonomies + */ + public static function getTaxonomiesAssoc(){ + $arr = get_taxonomies(); + unset($arr["post_tag"]); + unset($arr["nav_menu"]); + unset($arr["link_category"]); + unset($arr["post_format"]); + + return($arr); + } + + + /* Provider: - * + * + * get post types array with taxomonies + */ + public static function getPostTypesWithTaxomonies(){ + $arrPostTypes = self::getPostTypesAssoc(); + + foreach($arrPostTypes as $postType=>$title){ + $arrTaxomonies = self::getPostTypeTaxomonies($postType); + $arrPostTypes[$postType] = $arrTaxomonies; + } + + return($arrPostTypes); + } + + + /* Provider: - * + * + * get array of post types with categories (the taxonomies is between). + * get only those taxomonies that have some categories in it. + */ + public static function getPostTypesWithCats(){ + $arrPostTypes = self::getPostTypesWithTaxomonies(); + + $arrPostTypesOutput = array(); + foreach($arrPostTypes as $name=>$arrTax){ + + $arrTaxOutput = array(); + foreach($arrTax as $taxName=>$taxTitle){ + $cats = self::getCategoriesAssoc($taxName); + if(!empty($cats)) + $arrTaxOutput[] = array( + "name"=>$taxName, + "title"=>$taxTitle, + "cats"=>$cats); + } + + $arrPostTypesOutput[$name] = $arrTaxOutput; + + } + + return($arrPostTypesOutput); + } + + + /* Provider: - * + * + * get array of all taxonomies with categories. + */ + public static function getTaxonomiesWithCats(){ + + $arrTax = self::getTaxonomiesAssoc(); + $arrTaxNew = array(); + foreach($arrTax as $key=>$value){ + $arrItem = array(); + $arrItem["name"] = $key; + $arrItem["title"] = $value; + $arrItem["cats"] = self::getCategoriesAssoc($key); + $arrTaxNew[$key] = $arrItem; + } + + return($arrTaxNew); + } + + + /* Provider: - * + * + * get content url + */ + public static function getUrlContent(){ + + if(self::isMultisite() == false){ //without multisite + $baseUrl = content_url()."/"; + } + else{ //for multisite + $arrUploadData = wp_upload_dir(); + $baseUrl = $arrUploadData["baseurl"]."/"; + } + + if(is_ssl()){ + $baseUrl = str_replace("http://", "https://", $baseUrl); + } + + return($baseUrl); + } + + /* Provider: - * + * + * get wp-content path + */ + public static function getPathContent(){ + if(self::isMultisite()){ + if(!defined("BLOGUPLOADDIR")){ + $pathBase = self::getPathBase(); + $pathContent = $pathBase."wp-content/"; + }else + $pathContent = BLOGUPLOADDIR; + }else{ + $pathContent = WP_CONTENT_DIR; + if(!empty($pathContent)){ + $pathContent .= "/"; + } + else{ + $pathBase = self::getPathBase(); + $pathContent = $pathBase."wp-content/"; + } + } + + return($pathContent); + } + + /* Provider: - * + * + * get cats and taxanomies data from the category id's + */ + public static function getCatAndTaxData($catIDs){ + + if(is_string($catIDs)){ + $catIDs = trim($catIDs); + if(empty($catIDs)) + return(array("tax"=>"","cats"=>"")); + + $catIDs = explode(",", $catIDs); + } + + $strCats = ""; + $arrTax = array(); + foreach($catIDs as $cat){ + if(strpos($cat,"option_disabled") === 0) + continue; + + $pos = strrpos($cat,"_"); + if($pos === false) + RevSliderFunctions::throwError("The category is in wrong format"); + + $taxName = substr($cat,0,$pos); + $catID = substr($cat,$pos+1,strlen($cat)-$pos-1); + + $arrTax[$taxName] = $taxName; + if(!empty($strCats)) + $strCats .= ","; + + $strCats .= $catID; + } + + $strTax = ""; + foreach($arrTax as $taxName){ + if(!empty($strTax)) + $strTax .= ","; + + $strTax .= $taxName; + } + + $output = array("tax"=>$strTax,"cats"=>$strCats); + + return($output); + } + + + /* Provider: - * + * + * get current language code + */ + public static function getCurrentLangCode(){ + $langTag = ICL_LANGUAGE_CODE; + + return($langTag); + } + + + /* Provider: - * + * + * check the current post for the existence of a short code + */ + public static function hasShortcode($shortcode = '') { + + if(!is_singular()) + return false; + + $post = get_post(get_the_ID()); + + $found = false; + + if (empty($shortcode)) + return $found; + + + if (stripos($post->post_content, '[' . $shortcode) !== false ) + $found = true; + + return $found; + } + + + /* Provider: - * + * Check if shortcodes exists in the content + * @since: 5.0 + */ + public static function check_for_shortcodes($mid_content){ + if($mid_content !== null){ + if(has_shortcode($mid_content, 'gallery')){ + + preg_match('/\[gallery.*ids=.(.*).\]/', $mid_content, $img_ids); + + if(isset($img_ids[1])){ + if($img_ids[1] !== '') return explode(',', $img_ids[1]); + } + } + } + return false; + } + + + /* Provider: - * + * retrieve the image id from the given image url + * @since: 5.0 + */ + public static function get_image_id_by_url($image_url) { + global $wpdb; + $attachment_id = false; + + // If there is no url, return. + if ( '' == $image_url ) + return; + + // Get the upload directory paths + $upload_dir_paths = wp_upload_dir(); + + // Make sure the upload path base directory exists in the attachment URL, to verify that we're working with a media library image + //if ( false === strpos( $image_url, $upload_dir_paths['baseurl'] ) ) { + // $image_url = $upload_dir_paths['baseurl'].'/'.$image_url; + //} + + // If this is the URL of an auto-generated thumbnail, get the URL of the original image + $image_url = preg_replace( '/-\d+x\d+(?=\.(jpg|jpeg|png|gif|mp4|ogv|webm)$)/i', '', $image_url ); + + + // Remove the upload path base directory from the attachment URL + $image_url = str_replace( $upload_dir_paths['baseurl'] . '/', '', $image_url ); + + + // Finally, run a custom database query to get the attachment ID from the modified attachment URL + $attachment_id = $wpdb->get_var( $wpdb->prepare( "SELECT wposts.ID FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.ID = wpostmeta.post_id AND wpostmeta.meta_key = '_wp_attached_file' AND wpostmeta.meta_value = '%s' AND wposts.post_type = 'attachment'", $image_url ) ); + + return $attachment_id; + } + + +} //end of the class + +//init the static vars +RevSliderFunctionsWP::initStaticVars(); + +/* Provider: - * + * old classname extends new one (old classnames will be obsolete soon) + * @since: 5.0 + **/ +class UniteFunctionsWPRev extends RevSliderFunctionsWP {} +?> \ No newline at end of file diff --git a/plugins/revslider/includes/framework/functions.class.php b/plugins/revslider/includes/framework/functions.class.php new file mode 100644 index 0000000..8f68180 --- /dev/null +++ b/plugins/revslider/includes/framework/functions.class.php @@ -0,0 +1,628 @@ + + * @link http://www.themepunch.com/ + * @copyright 2015 ThemePunch + */ + +if( !defined( 'ABSPATH') ) exit(); + +class RevSliderFunctions{ + + public static function throwError($message,$code=null){ + if(!empty($code)){ + throw new Exception($message,$code); + }else{ + throw new Exception($message); + } + } + + + /* Provider: - * + * set output for download + */ + public static function downloadFile($str,$filename="output.txt"){ + + //output for download + header('Content-Description: File Transfer'); + header('Content-Type: text/html; charset=UTF-8'); + header("Content-Disposition: attachment; filename=".$filename.";"); + header("Content-Transfer-Encoding: binary"); + header("Content-Length: ".strlen($str)); + echo $str; + exit(); + } + + + + /* Provider: - * + * turn boolean to string + */ + public static function boolToStr($bool){ + if(gettype($bool) == "string") + return($bool); + if($bool == true) + return("true"); + else + return("false"); + } + + /* Provider: - * + * convert string to boolean + */ + public static function strToBool($str){ + if(is_bool($str)) + return($str); + + if(empty($str)) + return(false); + + if(is_numeric($str)) + return($str != 0); + + $str = strtolower($str); + if($str == "true") + return(true); + + return(false); + } + + + /* Provider: - * + * get value from array. if not - return alternative + */ + public static function getVal($arr,$key,$altVal=""){ + if(is_array($arr)){ + if(isset($arr[$key])){ + return($arr[$key]); + } + }elseif(is_object($arr)){ + if(isset($arr->$key)){ + return($arr->$key); + } + } + return($altVal); + } + + + //------------------------------------------------------------ + // get variable from post or from get. get wins. + public static function getPostGetVariable($name,$initVar = ""){ + $var = $initVar; + if(isset($_POST[$name])) $var = $_POST[$name]; + else if(isset($_GET[$name])) $var = $_GET[$name]; + return($var); + } + + + //------------------------------------------------------------ + public static function getPostVariable($name,$initVar = ""){ + $var = $initVar; + if(isset($_POST[$name])) $var = $_POST[$name]; + return($var); + } + + + //------------------------------------------------------------ + public static function getGetVar($name,$initVar = ""){ + $var = $initVar; + if(isset($_GET[$name])) $var = $_GET[$name]; + return($var); + } + + + /* Provider: - * + * validate that some file exists, if not - throw error + */ + public static function validateFilepath($filepath,$errorPrefix=null){ + if(file_exists($filepath) == true) + return(false); + if($errorPrefix == null) + $errorPrefix = "File"; + $message = $errorPrefix." ".esc_attr($filepath)." not exists!"; + self::throwError($message); + } + + /* Provider: - * + * validate that some value is numeric + */ + public static function validateNumeric($val,$fieldName=""){ + self::validateNotEmpty($val,$fieldName); + + if(empty($fieldName)) + $fieldName = "Field"; + + if(!is_numeric($val)) + self::throwError("$fieldName should be numeric "); + } + + /* Provider: - * + * validate that some variable not empty + */ + public static function validateNotEmpty($val,$fieldName=""){ + + if(empty($fieldName)) + $fieldName = "Field"; + + if(empty($val) && is_numeric($val) == false) + self::throwError("Field $fieldName should not be empty"); + } + + + //------------------------------------------------------------ + //get path info of certain path with all needed fields + public static function getPathInfo($filepath){ + $info = pathinfo($filepath); + + //fix the filename problem + if(!isset($info["filename"])){ + $filename = $info["basename"]; + if(isset($info["extension"])) + $filename = substr($info["basename"],0,(-strlen($info["extension"])-1)); + $info["filename"] = $filename; + } + + return($info); + } + + /* Provider: - * + * Convert std class to array, with all sons + * @param unknown_type $arr + */ + public static function convertStdClassToArray($arr){ + $arr = (array)$arr; + + $arrNew = array(); + + foreach($arr as $key=>$item){ + $item = (array)$item; + $arrNew[$key] = $item; + } + + return($arrNew); + } + + public static function cleanStdClassToArray($arr){ + $arr = (array)$arr; + + $arrNew = array(); + + foreach($arr as $key=>$item){ + $arrNew[$key] = $item; + } + + return($arrNew); + } + + + /* Provider: - * + * encode array into json for client side + */ + public static function jsonEncodeForClientSide($arr){ + $json = ""; + if(!empty($arr)){ + $json = json_encode($arr); + $json = addslashes($json); + } + + $json = "'".$json."'"; + + return($json); + } + + + /* Provider: - * + * decode json from the client side + */ + public static function jsonDecodeFromClientSide($data){ + + $data = stripslashes($data); + $data = str_replace('\"','\"',$data); + $data = json_decode($data); + $data = (array)$data; + + return($data); + } + + + /* Provider: - * + * do "trim" operation on all array items. + */ + public static function trimArrayItems($arr){ + if(gettype($arr) != "array") + RevSliderFunctions::throwError("trimArrayItems error: The type must be array"); + + foreach ($arr as $key=>$item){ + if(is_array($item)){ + foreach($item as $key => $value){ + $arr[$key][$key] = trim($value); + } + }else{ + $arr[$key] = trim($item); + } + } + + return($arr); + } + + + /* Provider: - * + * get link html + */ + public static function getHtmlLink($link,$text,$id="",$class=""){ + + if(!empty($class)) + $class = " class='$class'"; + + if(!empty($id)) + $id = " id='$id'"; + + $html = "$text"; + return($html); + } + + /* Provider: - * + * get select from array + */ + public static function getHTMLSelect($arr,$default="",$htmlParams="",$assoc = false){ + + $html = ""; + return($html); + } + + + /* Provider: - * + * convert assoc array to array + */ + public static function assocToArray($assoc){ + $arr = array(); + foreach($assoc as $item) + $arr[] = $item; + + return($arr); + } + + /* Provider: - * + * + * strip slashes from textarea content after ajax request to server + */ + public static function normalizeTextareaContent($content){ + if(empty($content)) + return($content); + $content = stripslashes($content); + $content = trim($content); + return($content); + } + + + /* Provider: - * + * get text intro, limit by number of words + */ + public static function getTextIntro($text, $limit){ + + $arrIntro = explode(' ', $text, $limit); + + if (count($arrIntro)>=$limit) { + array_pop($arrIntro); + $intro = implode(" ",$arrIntro); + $intro = trim($intro); + if(!empty($intro)) + $intro .= '...'; + } else { + $intro = implode(" ",$arrIntro); + } + + $intro = preg_replace('`\[[^\]]*\]`','',$intro); + return($intro); + } + + + /* Provider: - * + * add missing px/% to value, do also for object and array + * @since: 5.0 + **/ + public static function add_missing_val($obj, $set_to = 'px'){ + + if(is_array($obj)){ + foreach($obj as $key => $value){ + if(strpos($value, $set_to) === false){ + $obj[$key] = $value.$set_to; + } + } + }elseif(is_object($obj)){ + foreach($obj as $key => $value){ + if(strpos($value, $set_to) === false){ + $obj->$key = $value.$set_to; + } + } + }else{ + if(strpos($obj, $set_to) === false){ + $obj .= $set_to; + } + } + + return $obj; + } + + + /* Provider: - * + * normalize object with device informations depending on what is enabled for the Slider + * @since: 5.0 + **/ + public static function normalize_device_settings($obj, $enabled_devices, $return = 'obj', $set_to_if = array()){ //array -> from -> to + /* Provider: - desktop + notebook + tablet + mobile*/ + + if(!empty($set_to_if)){ + foreach($obj as $key => $value) { + foreach($set_to_if as $from => $to){ + if(trim($value) == $from) $obj->$key = $to; + } + } + } + + $inherit_size = self::get_biggest_device_setting($obj, $enabled_devices); + if($enabled_devices['desktop'] == 'on'){ + if(!isset($obj->desktop) || $obj->desktop === ''){ + $obj->desktop = $inherit_size; + }else{ + $inherit_size = $obj->desktop; + } + }else{ + $obj->desktop = $inherit_size; + } + + if($enabled_devices['notebook'] == 'on'){ + if(!isset($obj->notebook) || $obj->notebook === ''){ + $obj->notebook = $inherit_size; + }else{ + $inherit_size = $obj->notebook; + } + }else{ + $obj->notebook = $inherit_size; + } + + if($enabled_devices['tablet'] == 'on'){ + if(!isset($obj->tablet) || $obj->tablet === ''){ + $obj->tablet = $inherit_size; + }else{ + $inherit_size = $obj->tablet; + } + }else{ + $obj->tablet = $inherit_size; + } + + if($enabled_devices['mobile'] == 'on'){ + if(!isset($obj->mobile) || $obj->mobile === ''){ + $obj->mobile = $inherit_size; + }else{ + $inherit_size = $obj->mobile; + } + }else{ + $obj->mobile = $inherit_size; + } + + switch($return){ + case 'obj': + //order according to: desktop, notebook, tablet, mobile + $new_obj = new stdClass(); + $new_obj->desktop = $obj->desktop; + $new_obj->notebook = $obj->notebook; + $new_obj->tablet = $obj->tablet; + $new_obj->mobile = $obj->mobile; + return $new_obj; + break; + case 'html-array': + if($obj->desktop === $obj->notebook && $obj->desktop === $obj->mobile && $obj->desktop === $obj->tablet){ + return $obj->desktop; + }else{ + return "['".@$obj->desktop."','".@$obj->notebook."','".@$obj->tablet."','".@$obj->mobile."']"; + } + break; + } + + return $obj; + } + + + /* Provider: - * + * return biggest value of object depending on which devices are enabled + * @since: 5.0 + **/ + public static function get_biggest_device_setting($obj, $enabled_devices){ + + if($enabled_devices['desktop'] == 'on'){ + if(isset($obj->desktop) && $obj->desktop != ''){ + return $obj->desktop; + } + } + + if($enabled_devices['notebook'] == 'on'){ + if(isset($obj->notebook) && $obj->notebook != ''){ + return $obj->notebook; + } + } + + if($enabled_devices['tablet'] == 'on'){ + if(isset($obj->tablet) && $obj->tablet != ''){ + return $obj->tablet; + } + } + + if($enabled_devices['mobile'] == 'on'){ + if(isset($obj->mobile) && $obj->mobile != ''){ + return $obj->mobile; + } + } + + return ''; + } + + + /* Provider: - * + * change hex to rgba + */ + public static function hex2rgba($hex, $transparency = false) { + if($transparency !== false){ + $transparency = ($transparency > 0) ? number_format( ( $transparency / 100 ), 2, ".", "" ) : 0; + }else{ + $transparency = 1; + } + + $hex = str_replace("#", "", $hex); + + if(strlen($hex) == 3) { + $r = hexdec(substr($hex,0,1).substr($hex,0,1)); + $g = hexdec(substr($hex,1,1).substr($hex,1,1)); + $b = hexdec(substr($hex,2,1).substr($hex,2,1)); + } else if(self::isrgb($hex)){ + return $hex; + } else { + $r = hexdec(substr($hex,0,2)); + $g = hexdec(substr($hex,2,2)); + $b = hexdec(substr($hex,4,2)); + } + + return 'rgba('.$r.', '.$g.', '.$b.', '.$transparency.')'; + + } + + + public static function isrgb($rgba){ + if(strpos($rgba, 'rgb') !== false) return true; + + return false; + } + + + /* Provider: - * + * change rgba to hex + * @since: 5.0 + */ + public static function rgba2hex($rgba){ + if(strtolower($rgba) == 'transparent') return $rgba; + + $temp = explode(',', $rgba); + $rgb = array(); + if(count($temp) == 4) unset($temp[3]); + foreach($temp as $val){ + $t = dechex(preg_replace('/[^\d.]/', '', $val)); + if(strlen($t) < 2) $t = '0'.$t; + $rgb[] = $t; + } + + return '#'.implode('', $rgb); + } + + + /* Provider: - * + * get transparency from rgba + * @since: 5.0 + */ + public static function get_trans_from_rgba($rgba, $in_percent = false){ + if(strtolower($rgba) == 'transparent') return 100; + + $temp = explode(',', $rgba); + if(count($temp) == 4){ + return ($in_percent) ? preg_replace('/[^\d.]/', '', $temp[3]) : preg_replace('/[^\d.]/', "", $temp[3]) * 100; + } + return 100; + } + + + public static function get_responsive_size($slider){ + $operations = new RevSliderOperations(); + $arrValues = $operations->getGeneralSettingsValues(); + + $enable_custom_size_notebook = $slider->slider->getParam('enable_custom_size_notebook','off'); + $enable_custom_size_tablet = $slider->slider->getParam('enable_custom_size_tablet','off'); + $enable_custom_size_iphone = $slider->slider->getParam('enable_custom_size_iphone','off'); + $adv_resp_sizes = ($enable_custom_size_notebook == 'on' || $enable_custom_size_tablet == 'on' || $enable_custom_size_iphone == 'on') ? true : false; + + if($adv_resp_sizes == true){ + $width = $slider->slider->getParam("width", 1240, RevSlider::FORCE_NUMERIC); + $width .= ','. $slider->slider->getParam("width_notebook", 1024, RevSlider::FORCE_NUMERIC); + $width .= ','. $slider->slider->getParam("width_tablet", 778, RevSlider::FORCE_NUMERIC); + $width .= ','. $slider->slider->getParam("width_mobile", 480, RevSlider::FORCE_NUMERIC); + $height = $slider->slider->getParam("height", 868, RevSlider::FORCE_NUMERIC); + $height .= ','. $slider->slider->getParam("height_notebook", 768, RevSlider::FORCE_NUMERIC); + $height .= ','. intval($slider->slider->getParam("height_tablet", 960, RevSlider::FORCE_NUMERIC)); + $height .= ','. intval($slider->slider->getParam("height_mobile", 720, RevSlider::FORCE_NUMERIC)); + + + $responsive = (isset($arrValues['width'])) ? $arrValues['width'] : '1240'; + $def = (isset($arrValues['width'])) ? $arrValues['width'] : '1240'; + $responsive.= ','; + if($enable_custom_size_notebook == 'on'){ + $responsive.= (isset($arrValues['width_notebook'])) ? $arrValues['width_notebook'] : '1024'; + $def = (isset($arrValues['width_notebook'])) ? $arrValues['width_notebook'] : '1024'; + }else{ + $responsive.= $def; + } + $responsive.= ','; + if($enable_custom_size_tablet == 'on'){ + $responsive.= (isset($arrValues['width_tablet'])) ? $arrValues['width_tablet'] : '778'; + $def = (isset($arrValues['width_tablet'])) ? $arrValues['width_tablet'] : '778'; + }else{ + $responsive.= $def; + } + $responsive.= ','; + if($enable_custom_size_iphone == 'on'){ + $responsive.= (isset($arrValues['width_mobile'])) ? $arrValues['width_mobile'] : '480'; + $def = (isset($arrValues['width_mobile'])) ? $arrValues['width_mobile'] : '480'; + }else{ + $responsive.= $def; + } + + return array( + 'level' => $responsive, + 'height' => $height, + 'width' => $width + ); + }else{ + return array( + 'height' => $slider->slider->getParam("height", "868", RevSlider::FORCE_NUMERIC), + 'width' => $slider->slider->getParam("width", "1240", RevSlider::FORCE_NUMERIC) + ); + } + } + + +} + +if(!function_exists("dmp")){ + function dmp($str){ + echo "
          "; + echo "
          ";
          +		print_r($str);
          +		echo "
          "; + echo "
          "; + } +} + + + +/* Provider: - * + * old classname extends new one (old classnames will be obsolete soon) + * @since: 5.0 + **/ +class UniteFunctionsRev extends RevSliderFunctions {} +?> \ No newline at end of file diff --git a/plugins/revslider/includes/framework/include-framework.php b/plugins/revslider/includes/framework/include-framework.php new file mode 100644 index 0000000..18f9c72 --- /dev/null +++ b/plugins/revslider/includes/framework/include-framework.php @@ -0,0 +1,21 @@ + + * @link http://www.themepunch.com/ + * @copyright 2015 ThemePunch + */ + +if( !defined( 'ABSPATH') ) exit(); + +$folderIncludes = dirname(__FILE__)."/"; + +require_once($folderIncludes . 'functions.class.php'); +require_once($folderIncludes . 'functions-wordpress.class.php'); +require_once($folderIncludes . 'db.class.php'); +require_once($folderIncludes . 'cssparser.class.php'); +require_once($folderIncludes . 'wpml.class.php'); +require_once($folderIncludes . 'em-integration.class.php'); +require_once($folderIncludes . 'aq-resizer.class.php'); +require_once($folderIncludes . 'plugin-update.class.php'); + +?> \ No newline at end of file diff --git a/plugins/revslider/includes/framework/index.php b/plugins/revslider/includes/framework/index.php new file mode 100644 index 0000000..e69de29 diff --git a/plugins/revslider/includes/framework/newsletter.class.php b/plugins/revslider/includes/framework/newsletter.class.php new file mode 100644 index 0000000..cc8b7fc --- /dev/null +++ b/plugins/revslider/includes/framework/newsletter.class.php @@ -0,0 +1,84 @@ + + * @link http://www.themepunch.com/ + * @copyright 2015 ThemePunch + * @version 1.0.0 + */ + +if( !defined( 'ABSPATH') ) exit(); + +if(!class_exists('ThemePunch_Newsletter')) { + + class ThemePunch_Newsletter { + + protected static $remote_url = 'http://newsletter.themepunch.com/'; + protected static $subscribe = 'subscribe.php'; + protected static $unsubscribe = 'unsubscribe.php'; + + public function __construct(){ + + } + + + /* Provider: - * + * Subscribe to the ThemePunch Newsletter + * @since: 1.0.0 + **/ + public static function subscribe($email){ + global $wp_version; + + $request = wp_remote_post(self::$remote_url.self::$subscribe, array( + 'user-agent' => 'WordPress/'.$wp_version.'; '.get_bloginfo('url'), + 'timeout' => 15, + 'body' => array( + 'email' => urlencode($email) + ) + )); + + if(!is_wp_error($request)) { + if($response = json_decode($request['body'], true)) { + if(is_array($response)) { + $data = $response; + + return $data; + }else{ + return false; + } + } + } + } + + + /* Provider: - * + * Unsubscribe to the ThemePunch Newsletter + * @since: 1.0.0 + **/ + public static function unsubscribe($email){ + global $wp_version; + + $request = wp_remote_post(self::$remote_url.self::$unsubscribe, array( + 'user-agent' => 'WordPress/'.$wp_version.'; '.get_bloginfo('url'), + 'timeout' => 15, + 'body' => array( + 'email' => urlencode($email) + ) + )); + + if(!is_wp_error($request)) { + if($response = json_decode($request['body'], true)) { + if(is_array($response)) { + $data = $response; + + return $data; + }else{ + return false; + } + } + } + } + + } +} + +?> \ No newline at end of file diff --git a/plugins/revslider/includes/framework/plugin-update.class.php b/plugins/revslider/includes/framework/plugin-update.class.php new file mode 100644 index 0000000..5ccf525 --- /dev/null +++ b/plugins/revslider/includes/framework/plugin-update.class.php @@ -0,0 +1,931 @@ + + * @link http://www.themepunch.com/ + * @copyright 2015 ThemePunch + */ + +if( !defined( 'ABSPATH') ) exit(); + +class RevSliderPluginUpdate { + + /* Provider: - * + * @since 5.0 + */ + public function __construct(){ + } + + + /* Provider: - * + * return version of installation + * @since 5.0 + */ + public static function get_version(){ + $real_version = get_option('revslider_update_version', 1.0); + + return $real_version; + } + + + /* Provider: - * + * set version of installation + * @since 5.0 + */ + public static function set_version($set_to){ + + update_option('revslider_update_version', $set_to); + + } + + + /* Provider: - * + * check for updates and proceed if needed + * @since 5.0 + */ + public static function do_update_checks(){ + $version = self::get_version(); + + if(version_compare($version, 5.0, '<')){ + self::update_css_styles(); //update styles to the new 5.0 way + self::add_v5_styles(); //add the version 5 styles that are new! + self::check_settings_table(); //remove the usage of the settings table + self::move_template_slider(); //move template sliders slides to the post based sliders and delete them/move them if not used + self::add_animation_settings_to_layer(); //set missing animation fields to the slides layers + self::add_style_settings_to_layer(); //set missing styling fields to the slides layers + self::change_settings_on_layers(); //change settings on layers, for example, add the new structure of actions + self::add_general_settings(); //set general settings + + self::remove_static_slides(); //remove static slides if the slider was v4 and had static slides which were not enabled + + $version = 5.0; + self::set_version($version); + } + } + + + /* Provider: - * + * add new styles for version 5.0 + * @since 5.0 + */ + public static function add_v5_styles(){ + + $v5 = array( + array('handle' => '.tp-caption.MarkerDisplay','settings' => '{"translated":5,"type":"text","version":"5.0"}','hover' => '{"color":"#ff0000","text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-style":"none","border-width":"0","border-radius":["0px","0px","0px","0px"],"skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0"}','params' => '{"font-style":"normal","font-family":"Permanent Marker","padding":"0px 0px 0px 0px","text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"#000000","border-style":"none","border-width":"0px","border-radius":"0px 0px 0px 0px","z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":{"text-shadow":"none"},"hover":""}'), + array('handle' => '.tp-caption.Restaurant-Display','settings' => '{"hover":"false","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0"}','params' => '{"color":"#ffffff","font-size":"120px","line-height":"120px","font-weight":"700","font-style":"normal","font-family":"Roboto","padding":["0","0","0","0"],"text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":"","hover":""}'), + array('handle' => '.tp-caption.Restaurant-Cursive','settings' => '{"hover":"false","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0"}','params' => '{"color":"#ffffff","font-size":"30px","line-height":"30px","font-weight":"400","font-style":"normal","font-family":"Nothing you could do","padding":["0","0","0","0"],"text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":{"letter-spacing":"2px"},"hover":""}'), + array('handle' => '.tp-caption.Restaurant-ScrollDownText','settings' => '{"hover":"false","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0"}','params' => '{"color":"#ffffff","font-size":"17px","line-height":"17px","font-weight":"400","font-style":"normal","font-family":"Roboto","padding":["0","0","0","0"],"text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":{"letter-spacing":"2px"},"hover":""}'), + array('handle' => '.tp-caption.Restaurant-Description','settings' => '{"hover":"false","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0"}','params' => '{"color":"#ffffff","font-size":"20px","line-height":"30px","font-weight":"300","font-style":"normal","font-family":"Roboto","padding":["0","0","0","0"],"text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":{"letter-spacing":"3px"},"hover":""}'), + array('handle' => '.tp-caption.Restaurant-Price','settings' => '{"hover":"false","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0"}','params' => '{"color":"#ffffff","font-size":"30px","line-height":"30px","font-weight":"300","font-style":"normal","font-family":"Roboto","padding":["0","0","0","0"],"text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":{"letter-spacing":"3px"},"hover":""}'), + array('handle' => '.tp-caption.Restaurant-Menuitem','settings' => '{"hover":"false","type":"text","version":"5.0","translated":"5"}','hover' => '{"color":"#000000","color-transparency":"1","text-decoration":"none","background-color":"#ffffff","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"pointer","speed":"500","easing":"Power2.easeInOut"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"17px","line-height":"17px","font-weight":"400","font-style":"normal","font-family":"Roboto","padding":["10px","30px","10px","30px"],"text-decoration":"none","text-align":"left","background-color":"#000000","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600","corner_left":"nothing","corner_right":"nothing","parallax":"-"}','advanced' => '{"idle":{"letter-spacing":"2px"},"hover":""}'), + array('handle' => '.tp-caption.Furniture-LogoText','settings' => '{"hover":"false","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#e6cfa3","color-transparency":"1","font-size":"160px","line-height":"150px","font-weight":"300","font-style":"normal","font-family":"\\"Raleway\\"","padding":["0","0","0","0"],"text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":{"text-shadow":"none"},"hover":""}'), + array('handle' => '.tp-caption.Furniture-Plus','settings' => '{"hover":"false","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"#000000","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["30px","30px","30px","30px"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","speed":"0.5","easing":"Linear.easeNone"}','params' => '{"color":"#e6cfa3","color-transparency":"1","font-size":"20","line-height":"20px","font-weight":"400","font-style":"normal","font-family":"\\"Raleway\\"","padding":["6px","7px","4px","7px"],"text-decoration":"none","background-color":"#ffffff","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["30px","30px","30px","30px"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":{"text-shadow":"none","box-shadow":"rgba(0,0,0,0.1) 0 1px 3px"},"hover":""}'), + array('handle' => '.tp-caption.Furniture-Title','settings' => '{"hover":"false","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#000000","color-transparency":"1","font-size":"20px","line-height":"20px","font-weight":"700","font-style":"normal","font-family":"\\"Raleway\\"","padding":["0","0","0","0"],"text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":{"text-shadow":"none","letter-spacing":"3px"},"hover":""}'), + array('handle' => '.tp-caption.Furniture-Subtitle','settings' => '{"hover":"false","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#000000","color-transparency":"1","font-size":"17px","line-height":"20px","font-weight":"300","font-style":"normal","font-family":"\\"Raleway\\"","padding":["0","0","0","0"],"text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":{"text-shadow":"none"},"hover":""}'), + array('handle' => '.tp-caption.Gym-Display','settings' => '{"hover":"false","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"80px","line-height":"70px","font-weight":"900","font-style":"normal","font-family":"Raleway","padding":["0","0","0","0"],"text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":"","hover":""}'), + array('handle' => '.tp-caption.Gym-Subline','settings' => '{"hover":"false","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"30px","line-height":"30px","font-weight":"100","font-style":"normal","font-family":"Raleway","padding":["0","0","0","0"],"text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":{"letter-spacing":"5px"},"hover":""}'), + array('handle' => '.tp-caption.Gym-SmallText','settings' => '{"hover":"false","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"17px","line-height":"22","font-weight":"300","font-style":"normal","font-family":"Raleway","padding":["0","0","0","0"],"text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":{"text-shadow":"none"},"hover":""}'), + array('handle' => '.tp-caption.Fashion-SmallText','settings' => '{"hover":"false","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"12px","line-height":"20px","font-weight":"600","font-style":"normal","font-family":"Raleway","padding":["0","0","0","0"],"text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":{"letter-spacing":"2px"},"hover":""}'), + array('handle' => '.tp-caption.Fashion-BigDisplay','settings' => '{"hover":"false","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#000000","color-transparency":"1","font-size":"60px","line-height":"60px","font-weight":"900","font-style":"normal","font-family":"Raleway","padding":["0","0","0","0"],"text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":{"letter-spacing":"2px"},"hover":""}'), + array('handle' => '.tp-caption.Fashion-TextBlock','settings' => '{"hover":"false","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#000000","color-transparency":"1","font-size":"20px","line-height":"40px","font-weight":"400","font-style":"normal","font-family":"Raleway","padding":["0","0","0","0"],"text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":{"letter-spacing":"2px"},"hover":""}'), + array('handle' => '.tp-caption.Sports-Display','settings' => '{"translated":5,"type":"text","version":"5.0"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"130px","line-height":"130px","font-weight":"100","font-style":"normal","font-family":"\\"Raleway\\"","padding":"0 0 0 0","text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":"0 0 0 0","z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":{"letter-spacing":"13px"},"hover":""}'), + array('handle' => '.tp-caption.Sports-DisplayFat','settings' => '{"translated":5,"type":"text","version":"5.0"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"130px","line-height":"130px","font-weight":"900","font-style":"normal","font-family":"\\"Raleway\\"","padding":"0 0 0 0","text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":"0 0 0 0","z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":[""],"hover":""}'), + array('handle' => '.tp-caption.Sports-Subline','settings' => '{"translated":5,"type":"text","version":"5.0"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#000000","color-transparency":"1","font-size":"32px","line-height":"32px","font-weight":"400","font-style":"normal","font-family":"\\"Raleway\\"","padding":"0 0 0 0","text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":"0 0 0 0","z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":{"letter-spacing":"4px"},"hover":""}'), + array('handle' => '.tp-caption.Instagram-Caption','settings' => '{"hover":"false","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"20px","line-height":"20px","font-weight":"900","font-style":"normal","font-family":"Roboto","padding":["0","0","0","0"],"text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":"","hover":""}'), + array('handle' => '.tp-caption.News-Title','settings' => '{"hover":"false","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"70px","line-height":"60px","font-weight":"400","font-style":"normal","font-family":"Roboto Slab","padding":["0","0","0","0"],"text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":"","hover":""}'), + array('handle' => '.tp-caption.News-Subtitle','settings' => '{"hover":"true","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"0.65","text-decoration":"none","background-color":"#ffffff","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"solid","border-width":"0px","border-radius":["0","0","0px","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","speed":"300","easing":"Power3.easeInOut"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"15px","line-height":"24px","font-weight":"300","font-style":"normal","font-family":"Roboto Slab","padding":["0","0","0","0"],"text-decoration":"none","background-color":"#ffffff","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":"","hover":""}'), + array('handle' => '.tp-caption.Photography-Display','settings' => '{"hover":"false","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"80px","line-height":"70px","font-weight":"100","font-style":"normal","font-family":"Raleway","padding":["0","0","0","0"],"text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":{"letter-spacing":"5px"},"hover":""}'), + array('handle' => '.tp-caption.Photography-Subline','settings' => '{"hover":"false","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#777777","color-transparency":"1","font-size":"20px","line-height":"30px","font-weight":"300","font-style":"normal","font-family":"Raleway","padding":["0","0","0","0"],"text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":{"letter-spacing":"3px"},"hover":""}'), + array('handle' => '.tp-caption.Photography-ImageHover','settings' => '{"hover":"true","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"0.5","scalex":"0.8","scaley":"0.8","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","speed":"1000","easing":"Power3.easeInOut"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"20","line-height":"22","font-weight":"400","font-style":"normal","font-family":"","padding":["0","0","0","0"],"text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"#ffffff","border-transparency":"0","border-style":"none","border-width":"0px","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":"","hover":""}'), + array('handle' => '.tp-caption.Photography-Menuitem','settings' => '{"hover":"true","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"#00ffde","background-transparency":"0.65","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"pointer","speed":"200","easing":"Linear.easeNone"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"20px","line-height":"20px","font-weight":"300","font-style":"normal","font-family":"Raleway","padding":["3px","5px","3px","8px"],"text-decoration":"none","background-color":"#000000","background-transparency":"0.65","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":{"letter-spacing":"2px"},"hover":""}'), + array('handle' => '.tp-caption.Photography-Textblock','settings' => '{"hover":"false","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#fff","color-transparency":"1","font-size":"17px","line-height":"30px","font-weight":"300","font-style":"normal","font-family":"Raleway","padding":["0","0","0","0"],"text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":{"letter-spacing":"2px"},"hover":""}'), + array('handle' => '.tp-caption.Photography-Subline-2','settings' => '{"hover":"false","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"auto","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#ffffff","color-transparency":"0.35","font-size":"20px","line-height":"30px","font-weight":"300","font-style":"normal","font-family":"Raleway","padding":["0","0","0","0"],"text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":{"letter-spacing":"3px"},"hover":""}'), + array('handle' => '.tp-caption.Photography-ImageHover2','settings' => '{"hover":"true","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"0.5","scalex":"0.8","scaley":"0.8","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"pointer","speed":"500","easing":"Back.easeOut"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"20","line-height":"22","font-weight":"400","font-style":"normal","font-family":"Arial","padding":["0","0","0","0"],"text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"#ffffff","border-transparency":"0","border-style":"none","border-width":"0px","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":"","hover":""}'), + array('handle' => '.tp-caption.WebProduct-Title','settings' => '{"hover":"false","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"auto","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#333333","color-transparency":"1","font-size":"90px","line-height":"90px","font-weight":"100","font-style":"normal","font-family":"Raleway","padding":["0","0","0","0"],"text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":"","hover":""}'), + array('handle' => '.tp-caption.WebProduct-SubTitle','settings' => '{"hover":"false","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"auto","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#999999","color-transparency":"1","font-size":"15px","line-height":"20px","font-weight":"400","font-style":"normal","font-family":"Raleway","padding":["0","0","0","0"],"text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":"","hover":""}'), + array('handle' => '.tp-caption.WebProduct-Content','settings' => '{"hover":"false","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"auto","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#999999","color-transparency":"1","font-size":"16px","line-height":"24px","font-weight":"600","font-style":"normal","font-family":"Raleway","padding":["0","0","0","0"],"text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600"}','advanced' => '{"idle":"","hover":""}'), + array('handle' => '.tp-caption.WebProduct-Menuitem','settings' => '{"hover":"true","version":"5.0","translated":"5"}','hover' => '{"color":"#999999","color-transparency":"1","text-decoration":"none","background-color":"#ffffff","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"pointer","speed":"200","easing":"Linear.easeNone"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"15px","line-height":"20px","font-weight":"500","font-style":"normal","font-family":"Raleway","padding":["3px","5px","3px","8px"],"text-decoration":"none","text-align":"left","background-color":"#333333","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600","corner_left":"nothing","corner_right":"nothing","parallax":"-"}','advanced' => '{"idle":{"letter-spacing":"2px"},"hover":""}'), + array('handle' => '.tp-caption.WebProduct-Title-Light','settings' => '{"hover":"false","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"auto","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#fff","color-transparency":"1","font-size":"90px","line-height":"90px","font-weight":"100","font-style":"normal","font-family":"Raleway","padding":["0","0","0","0"],"text-decoration":"none","text-align":"left","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600","corner_left":"nothing","corner_right":"nothing","parallax":"-"}','advanced' => '{"idle":"","hover":""}'), + array('handle' => '.tp-caption.WebProduct-SubTitle-Light','settings' => '{"hover":"false","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"auto","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#ffffff","color-transparency":"0.35","font-size":"15px","line-height":"20px","font-weight":"400","font-style":"normal","font-family":"Raleway","padding":["0","0","0","0"],"text-decoration":"none","text-align":"left","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600","corner_left":"nothing","parallax":"-"}','advanced' => '{"idle":"","hover":""}'), + array('handle' => '.tp-caption.WebProduct-Content-Light','settings' => '{"hover":"false","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"auto","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#ffffff","color-transparency":"0.65","font-size":"16px","line-height":"24px","font-weight":"600","font-style":"normal","font-family":"Raleway","padding":["0","0","0","0"],"text-decoration":"none","text-align":"left","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600","corner_left":"nothing","parallax":"-"}','advanced' => '{"idle":"","hover":""}'), + array('handle' => '.tp-caption.FatRounded','settings' => '{"hover":"true","type":"text","version":"5.0","translated":"5"}','hover' => '{"color":"#fff","color-transparency":"1","text-decoration":"none","background-color":"#000000","background-transparency":"1","border-color":"#d3d3d3","border-transparency":"1","border-style":"none","border-width":"0px","border-radius":["50px","50px","50px","50px"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"pointer","speed":"300","easing":"Linear.easeNone"}','params' => '{"color":"#fff","color-transparency":"1","font-size":"30px","line-height":"30px","font-weight":"900","font-style":"normal","font-family":"Raleway","padding":["20px","22px","20px","25px"],"text-decoration":"none","text-align":"left","background-color":"#000000","background-transparency":"0.5","border-color":"#d3d3d3","border-transparency":"1","border-style":"none","border-width":"0px","border-radius":["50px","50px","50px","50px"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600","corner_left":"nothing","corner_right":"nothing","parallax":"-"}','advanced' => '{"idle":{"text-shadow":"none"},"hover":""}'), + array('handle' => '.tp-caption.NotGeneric-Title','settings' => '{"translated":5,"type":"text","version":"5.0"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"auto","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"70px","line-height":"70px","font-weight":"800","font-style":"normal","font-family":"Raleway","padding":"10px 0px 10px 0","text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":"0 0 0 0","z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600","corner_left":"nothing","corner_right":"nothing","parallax":"-"}','advanced' => '{"idle":"[object Object]","hover":""}'), + array('handle' => '.tp-caption.NotGeneric-SubTitle','settings' => '{"translated":5,"type":"text","version":"5.0"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"auto","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"13px","line-height":"20px","font-weight":"500","font-style":"normal","font-family":"Raleway","padding":"0 0 0 0","text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":"0 0 0 0","z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600","corner_left":"nothing","corner_right":"nothing","parallax":"-"}','advanced' => '{"idle":{"letter-spacing":"4px","text-align":"left"},"hover":""}'), + array('handle' => '.tp-caption.NotGeneric-CallToAction','settings' => '{"hover":"true","translated":5,"type":"text","version":"5.0"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"#ffffff","border-transparency":"1","border-style":"solid","border-width":"1","border-radius":"0px 0px 0px 0px","opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"pointer","speed":"300","easing":"Power3.easeOut"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"14px","line-height":"14px","font-weight":"500","font-style":"normal","font-family":"Raleway","padding":"10px 30px 10px 30px","text-decoration":"none","background-color":"#000000","background-transparency":"0","border-color":"#ffffff","border-transparency":"0.5","border-style":"solid","border-width":"1","border-radius":"0px 0px 0px 0px","z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600","corner_left":"nothing","corner_right":"nothing","parallax":"-"}','advanced' => '{"idle":{"letter-spacing":"3px","text-align":"left"},"hover":""}'), + array('handle' => '.tp-caption.NotGeneric-Icon','settings' => '{"translated":5,"type":"text","version":"5.0"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"#ffffff","border-transparency":"1","border-style":"solid","border-width":"1","border-radius":["0px","0px","0px","0px"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"default","speed":"300","easing":"Power3.easeOut"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"30px","line-height":"30px","font-weight":"400","font-style":"normal","font-family":"Raleway","padding":"0px 0px 0px 0px","text-decoration":"none","background-color":"#000000","background-transparency":"0","border-color":"#ffffff","border-transparency":"0","border-style":"solid","border-width":"0px","border-radius":"0px 0px 0px 0px","z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600","corner_left":"nothing","corner_right":"nothing","parallax":"-"}','advanced' => '{"idle":{"letter-spacing":"3px","text-align":"left"},"hover":""}'), + array('handle' => '.tp-caption.NotGeneric-Menuitem','settings' => '{"hover":"true","translated":5,"type":"text","version":"5.0"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"#000000","background-transparency":"0","border-color":"#ffffff","border-transparency":"1","border-style":"solid","border-width":"1px","border-radius":"0px 0px 0px 0px","opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"pointer","speed":"300","easing":"Power1.easeInOut"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"14px","line-height":"14px","font-weight":"500","font-style":"normal","font-family":"Raleway","padding":"27px 30px 27px 30px","text-decoration":"none","background-color":"#000000","background-transparency":"0","border-color":"#ffffff","border-transparency":"0.15","border-style":"solid","border-width":"1px","border-radius":"0px 0px 0px 0px","z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600","corner_left":"nothing","corner_right":"nothing","parallax":"-"}','advanced' => '{"idle":{"letter-spacing":"3px","text-align":"left"},"hover":""}'), + array('handle' => '.tp-caption.MarkerStyle','settings' => '{"translated":5,"type":"text","version":"5.0"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"auto","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"17px","line-height":"30px","font-weight":"100","font-style":"normal","font-family":"\\"Permanent Marker\\"","padding":"0 0 0 0","text-decoration":"none","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":"0 0 0 0","z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600","corner_left":"nothing","corner_right":"nothing","parallax":"-"}','advanced' => '{"idle":{"text-align":"left","0":""},"hover":""}'), + array('handle' => '.tp-caption.Gym-Menuitem','settings' => '{"hover":"true","type":"text","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"#000000","background-transparency":"1","border-color":"#ffffff","border-transparency":"0.25","border-style":"solid","border-width":"2px","border-radius":["3px","3px","3px","3px"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"pointer","speed":"200","easing":"Linear.easeNone"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"20px","line-height":"20px","font-weight":"300","font-style":"normal","font-family":"Raleway","padding":["3px","5px","3px","8px"],"text-decoration":"none","text-align":"left","background-color":"#000000","background-transparency":"1","border-color":"#ffffff","border-transparency":"0","border-style":"solid","border-width":"2px","border-radius":["3px","3px","3px","3px"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600","corner_left":"nothing","corner_right":"nothing","parallax":"-"}','advanced' => '{"idle":{"letter-spacing":"2px"},"hover":""}'), + array('handle' => '.tp-caption.Newspaper-Button','settings' => '{"hover":"true","type":"button","version":"5.0","translated":"5"}','hover' => '{"color":"#000000","color-transparency":"1","text-decoration":"none","background-color":"#FFFFFF","background-transparency":"1","border-color":"#ffffff","border-transparency":"1","border-style":"solid","border-width":"1px","border-radius":["0px","0px","0px","0px"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"pointer","speed":"300","easing":"Power1.easeInOut"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"13px","line-height":"17px","font-weight":"700","font-style":"normal","font-family":"Roboto","padding":["12px","35px","12px","35px"],"text-decoration":"none","text-align":"left","background-color":"#ffffff","background-transparency":"0","border-color":"#ffffff","border-transparency":"0.25","border-style":"solid","border-width":"1px","border-radius":["0px","0px","0px","0px"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600","corner_left":"nothing","corner_right":"nothing","parallax":"-"}','advanced' => '{"idle":{"letter-spacing":"2px"},"hover":""}'), + array('handle' => '.tp-caption.Newspaper-Subtitle','settings' => '{"hover":"false","type":"text","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"auto","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#a8d8ee","color-transparency":"1","font-size":"15px","line-height":"20px","font-weight":"900","font-style":"normal","font-family":"Roboto","padding":["0","0","0","0"],"text-decoration":"none","text-align":"left","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600","corner_left":"nothing","corner_right":"nothing","parallax":"-"}','advanced' => '{"idle":"","hover":""}'), + array('handle' => '.tp-caption.Newspaper-Title','settings' => '{"hover":"false","type":"text","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"auto","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#fff","color-transparency":"1","font-size":"50px","line-height":"55px","font-weight":"400","font-style":"normal","font-family":"\\"Roboto Slab\\"","padding":["0","0","10px","0"],"text-decoration":"none","text-align":"left","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600","corner_left":"nothing","corner_right":"nothing","parallax":"-"}','advanced' => '{"idle":"","hover":""}'), + array('handle' => '.tp-caption.Newspaper-Title-Centered','settings' => '{"hover":"false","type":"text","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"auto","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#fff","color-transparency":"1","font-size":"50px","line-height":"55px","font-weight":"400","font-style":"normal","font-family":"\\"Roboto Slab\\"","padding":["0","0","10px","0"],"text-decoration":"none","text-align":"center","background-color":"transparent","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600","corner_left":"nothing","corner_right":"nothing","parallax":"-"}','advanced' => '{"idle":"","hover":""}'), + array('handle' => '.tp-caption.Hero-Button','settings' => '{"hover":"true","type":"button","version":"5.0","translated":"5"}','hover' => '{"color":"#000000","color-transparency":"1","text-decoration":"none","background-color":"#ffffff","background-transparency":"1","border-color":"#ffffff","border-transparency":"1","border-style":"solid","border-width":"1","border-radius":["0px","0px","0px","0px"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"pointer","speed":"300","easing":"Power1.easeInOut"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"14px","line-height":"14px","font-weight":"500","font-style":"normal","font-family":"Raleway","padding":["10px","30px","10px","30px"],"text-decoration":"none","text-align":"left","background-color":"#000000","background-transparency":"0","border-color":"#ffffff","border-transparency":"0.5","border-style":"solid","border-width":"1","border-radius":["0px","0px","0px","0px"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600","corner_left":"nothing","corner_right":"nothing","parallax":"-"}','advanced' => '{"idle":{"letter-spacing":"3px"},"hover":""}'), + array('handle' => '.tp-caption.Video-Title','settings' => '{"hover":"false","type":"text","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"auto","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#fff","color-transparency":"1","font-size":"30px","line-height":"30px","font-weight":"900","font-style":"normal","font-family":"Raleway","padding":["5px","5px","5px","5px"],"text-decoration":"none","text-align":"left","background-color":"#000000","background-transparency":"1","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"-20%","2d_origin_y":"50","pers":"600","corner_left":"nothing","corner_right":"nothing","parallax":"-"}','advanced' => '{"idle":"","hover":""}'), + array('handle' => '.tp-caption.Video-SubTitle','settings' => '{"hover":"false","type":"text","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"auto","speed":"0","easing":"Linear.easeNone"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"12px","line-height":"12px","font-weight":"600","font-style":"normal","font-family":"Raleway","padding":["5px","5px","5px","5px"],"text-decoration":"none","text-align":"left","background-color":"#000000","background-transparency":"0.35","border-color":"transparent","border-transparency":"1","border-style":"none","border-width":"0","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"-20%","2d_origin_y":"50","pers":"600","corner_left":"nothing","corner_right":"nothing","parallax":"-"}','advanced' => '{"idle":{"letter-spacing":"2px"},"hover":""}'), + array('handle' => '.tp-caption.NotGeneric-Button','settings' => '{"hover":"true","type":"button","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"transparent","background-transparency":"0","border-color":"#ffffff","border-transparency":"1","border-style":"solid","border-width":"1","border-radius":["0px","0px","0px","0px"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"pointer","speed":"300","easing":"Power1.easeInOut"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"14px","line-height":"14px","font-weight":"500","font-style":"normal","font-family":"Raleway","padding":["10px","30px","10px","30px"],"text-decoration":"none","text-align":"left","background-color":"#000000","background-transparency":"0","border-color":"#ffffff","border-transparency":"0.5","border-style":"solid","border-width":"1","border-radius":["0px","0px","0px","0px"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600","corner_left":"nothing","corner_right":"nothing","parallax":"-"}','advanced' => '{"idle":{"letter-spacing":"3px","text-align":"left"},"hover":""}'), + array('handle' => '.tp-caption.NotGeneric-BigButton','settings' => '{"hover":"true","type":"button","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"#000000","background-transparency":"0","border-color":"#ffffff","border-transparency":"1","border-style":"solid","border-width":"1px","border-radius":["0px","0px","0px","0px"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"pointer","speed":"300","easing":"Power1.easeInOut"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"14px","line-height":"14px","font-weight":"500","font-style":"normal","font-family":"Raleway","padding":["27px","30px","27px","30px"],"text-decoration":"none","text-align":"left","background-color":"#000000","background-transparency":"0","border-color":"#ffffff","border-transparency":"0.15","border-style":"solid","border-width":"1px","border-radius":["0px","0px","0px","0px"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600","corner_left":"nothing","corner_right":"nothing","parallax":"-"}','advanced' => '{"idle":{"letter-spacing":"3px"},"hover":""}'), + array('handle' => '.tp-caption.WebProduct-Button','settings' => '{"hover":"true","type":"button","version":"5.0","translated":"5"}','hover' => '{"color":"#333333","color-transparency":"1","text-decoration":"none","background-color":"#ffffff","background-transparency":"1","border-color":"#000000","border-transparency":"1","border-style":"none","border-width":"2","border-radius":["0","0","0","0"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"auto","speed":"300","easing":"Linear.easeNone"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"16px","line-height":"48px","font-weight":"600","font-style":"normal","font-family":"Raleway","padding":["0px","40px","0px","40px"],"text-decoration":"none","text-align":"left","background-color":"#333333","background-transparency":"1","border-color":"#000000","border-transparency":"1","border-style":"none","border-width":"2","border-radius":["0","0","0","0"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600","corner_left":"nothing","corner_right":"nothing","parallax":"-"}','advanced' => '{"idle":{"letter-spacing":"1px"},"hover":""}'), + array('handle' => '.tp-caption.Restaurant-Button','settings' => '{"hover":"true","type":"button","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"#000000","background-transparency":"0","border-color":"#ffe081","border-transparency":"1","border-style":"solid","border-width":"2","border-radius":["0px","0px","0px","0px"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"auto","speed":"300","easing":"Linear.easeNone"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"17px","line-height":"17px","font-weight":"500","font-style":"normal","font-family":"Roboto","padding":["12px","35px","12px","35px"],"text-decoration":"none","text-align":"left","background-color":"#0a0a0a","background-transparency":"0","border-color":"#ffffff","border-transparency":"0.5","border-style":"solid","border-width":"2","border-radius":["0px","0px","0px","0px"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600","corner_left":"nothing","corner_right":"nothing","parallax":"-"}','advanced' => '{"idle":{"letter-spacing":"3px"},"hover":""}'), + array('handle' => '.tp-caption.Gym-Button','settings' => '{"hover":"true","type":"button","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"#72a800","background-transparency":"1","border-color":"#000000","border-transparency":"0","border-style":"solid","border-width":"0","border-radius":["30px","30px","30px","30px"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"pointer","speed":"300","easing":"Power1.easeInOut"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"15px","line-height":"15px","font-weight":"600","font-style":"normal","font-family":"Raleway","padding":["13px","35px","13px","35px"],"text-decoration":"none","text-align":"left","background-color":"#8bc027","background-transparency":"1","border-color":"#000000","border-transparency":"0","border-style":"solid","border-width":"0","border-radius":["30px","30px","30px","30px"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600","corner_left":"nothing","corner_right":"nothing","parallax":"-"}','advanced' => '{"idle":{"letter-spacing":"1px"},"hover":""}'), + array('handle' => '.tp-caption.Gym-Button-Light','settings' => '{"hover":"true","type":"button","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"#72a800","background-transparency":"0","border-color":"#8bc027","border-transparency":"1","border-style":"solid","border-width":"2px","border-radius":["30px","30px","30px","30px"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"pointer","speed":"300","easing":"Power2.easeInOut"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"15px","line-height":"15px","font-weight":"600","font-style":"normal","font-family":"Raleway","padding":["12px","35px","12px","35px"],"text-decoration":"none","text-align":"left","background-color":"transparent","background-transparency":"0","border-color":"#ffffff","border-transparency":"0.25","border-style":"solid","border-width":"2px","border-radius":["30px","30px","30px","30px"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600","corner_left":"nothing","corner_right":"nothing","parallax":"-"}','advanced' => '{"idle":"","hover":""}'), + array('handle' => '.tp-caption.Sports-Button-Light','settings' => '{"hover":"true","type":"button","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"#000000","background-transparency":"0","border-color":"#ffffff","border-transparency":"1","border-style":"solid","border-width":"2","border-radius":["0px","0px","0px","0px"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"auto","speed":"500","easing":"Linear.easeNone"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"17px","line-height":"17px","font-weight":"600","font-style":"normal","font-family":"Raleway","padding":["12px","35px","12px","35px"],"text-decoration":"none","text-align":"left","background-color":"#000000","background-transparency":"0","border-color":"#ffffff","border-transparency":"0.5","border-style":"solid","border-width":"2","border-radius":["0px","0px","0px","0px"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600","corner_left":"nothing","corner_right":"nothing","parallax":"-"}','advanced' => '{"idle":{"letter-spacing":"2px"},"hover":""}'), + array('handle' => '.tp-caption.Sports-Button-Red','settings' => '{"hover":"true","type":"button","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"#000000","background-transparency":"1","border-color":"#000000","border-transparency":"1","border-style":"solid","border-width":"2","border-radius":["0px","0px","0px","0px"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"auto","speed":"500","easing":"Linear.easeNone"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"17px","line-height":"17px","font-weight":"600","font-style":"normal","font-family":"Raleway","padding":["12px","35px","12px","35px"],"text-decoration":"none","text-align":"left","background-color":"#db1c22","background-transparency":"1","border-color":"#db1c22","border-transparency":"0","border-style":"solid","border-width":"2px","border-radius":["0px","0px","0px","0px"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600","corner_left":"nothing","corner_right":"nothing","parallax":"-"}','advanced' => '{"idle":{"letter-spacing":"2px"},"hover":""}'), + array('handle' => '.tp-caption.Photography-Button','settings' => '{"hover":"true","type":"button","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"#000000","background-transparency":"0","border-color":"#ffffff","border-transparency":"1","border-style":"solid","border-width":"1px","border-radius":["30px","30px","30px","30px"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"auto","speed":"300","easing":"Power3.easeOut"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"15px","line-height":"15px","font-weight":"600","font-style":"normal","font-family":"Raleway","padding":["13px","35px","13px","35px"],"text-decoration":"none","text-align":"left","background-color":"#000000","background-transparency":"0","border-color":"#ffffff","border-transparency":"0.25","border-style":"solid","border-width":"1px","border-radius":["30px","30px","30px","30px"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600","corner_left":"nothing","corner_right":"nothing","parallax":"-"}','advanced' => '{"idle":{"letter-spacing":"1px"},"hover":""}'), + array('handle' => '.tp-caption.Newspaper-Button-2','settings' => '{"hover":"true","type":"button","version":"5.0","translated":"5"}','hover' => '{"color":"#ffffff","color-transparency":"1","text-decoration":"none","background-color":"#000000","background-transparency":"0","border-color":"#ffffff","border-transparency":"1","border-style":"solid","border-width":"2","border-radius":["3px","3px","3px","3px"],"opacity":"1","scalex":"1","scaley":"1","skewx":"0","skewy":"0","xrotate":"0","yrotate":"0","2d_rotation":"0","css_cursor":"pointer","speed":"300","easing":"Linear.easeNone"}','params' => '{"color":"#ffffff","color-transparency":"1","font-size":"15px","line-height":"15px","font-weight":"900","font-style":"normal","font-family":"Roboto","padding":["10px","30px","10px","30px"],"text-decoration":"none","text-align":"left","background-color":"#000000","background-transparency":"0","border-color":"#ffffff","border-transparency":"0.5","border-style":"solid","border-width":"2","border-radius":["3px","3px","3px","3px"],"z":"0","skewx":"0","skewy":"0","scalex":"1","scaley":"1","opacity":"1","xrotate":"0","yrotate":"0","2d_rotation":"0","2d_origin_x":"50","2d_origin_y":"50","pers":"600","corner_left":"nothing","corner_right":"nothing","parallax":"-"}','advanced' => '{"idle":"","hover":""}') + ); + + $db = new RevSliderDB(); + + foreach($v5 as $v5class){ + $result = $db->fetch(RevSliderGlobals::$table_css, "handle = '".$v5class['handle']."'"); + if(empty($result)){ + //add v5 style + $db->insert(RevSliderGlobals::$table_css, $v5class); + } + } + + } + + + /* Provider: - * + * update the styles to meet requirements for version 5.0 + * @since 5.0 + */ + public static function update_css_styles(){ + + $css = new RevSliderCssParser(); + $db = new RevSliderDB(); + + $styles = $db->fetch(RevSliderGlobals::$table_css); + $default_classes = RevSliderCssParser::default_css_classes(); + + $cs = array( + 'background-color' => 'backgroundColor', //rgb rgba and opacity + 'border-color' => 'borderColor', + 'border-radius' => 'borderRadius', + 'border-style' => 'borderStyle', + 'border-width' => 'borderWidth', + 'color' => 'color', + 'font-family' => 'fontFamily', + 'font-size' => 'fontSize', + 'font-style' => 'fontStyle', + 'font-weight' => 'fontWeight', + 'line-height' => 'lineHeight', + 'opacity' => 'opacity', + 'padding' => 'padding', + 'text-decoration' => 'textDecoration', + + + 'x' => 'x', + 'y' => 'y', + 'z' => 'z', + 'skewx' => 'skewx', + 'skewy' => 'skewy', + 'scalex' => 'scalex', + 'scaley' => 'scaley', + 'opacity' => 'opacity', + 'xrotate' => 'xrotate', + 'yrotate' => 'yrotate', + '2d_rotation' => '2d_rotation', + 'layer_2d_origin_x' => 'layer_2d_origin_x', + 'layer_2d_origin_y' => 'layer_2d_origin_y', + '2d_origin_x' => '2d_origin_x', + '2d_origin_y' => '2d_origin_y', + 'pers' => 'pers', + + 'color-transparency' => 'color-transparency', + 'background-transparency' => 'background-transparency', + 'border-transparency' => 'border-transparency', + 'css_cursor' => 'css_cursor', + 'speed' => 'speed', + 'easing' => 'easing', + 'corner_left' => 'corner_left', + 'corner_right' => 'corner_right', + 'parallax' => 'parallax' + ); + + foreach($styles as $key => $attr){ + + if(isset($attr['advanced'])){ + $adv = json_decode($attr['advanced'], true); // = array('idle' => array(), 'hover' => ''); + }else{ + $adv = array('idle' => array(), 'hover' => ''); + } + + if(!isset($adv['idle'])) $adv['idle'] = array(); + if(!isset($adv['hover'])) $adv['hover'] = array(); + + //only do this to styles prior 5.0 + $settings = json_decode($attr['settings'], true); + if(!empty($settings) && isset($settings['translated'])){ + if(version_compare($settings['translated'], 5.0, '>=')) continue; + } + + $idle = json_decode($attr['params'], true); + $hover = json_decode($attr['hover'], true); + + if(!empty($idle)){ + foreach($idle as $style => $value){ + if(!isset($cs[$style])){ + $adv['idle'][$style] = $value; + unset($idle[$style]); + } + } + } + + if(!empty($hover)){ + foreach($hover as $style => $value){ + if(!isset($cs[$style])){ + $adv['hover'][$style] = $value; + unset($hover[$style]); + } + } + } + + $settings['translated'] = 5.0; //set the style version to 5.0 + $settings['type'] = 'text'; //set the type version to text, since 5.0 we also have buttons and shapes, so we need to differentiate from now on + + if(!isset($settings['version'])){ + if(isset($default_classes[$styles[$key]['handle']])){ + $settings['version'] = $default_classes[$styles[$key]['handle']]; + }else{ + $settings['version'] = 'custom'; //set the version to custom as its not in the defaults + } + } + + $styles[$key]['params'] = json_encode($idle); + $styles[$key]['hover'] = json_encode($hover); + $styles[$key]['advanced'] = json_encode($adv); + $styles[$key]['settings'] = json_encode($settings); + } + + //save now all styles back to database + foreach($styles as $key => $attr){ + $ret = $db->update(RevSliderGlobals::$table_css, array('settings' => $styles[$key]['settings'], 'params' => $styles[$key]['params'], 'hover' => $styles[$key]['hover'], 'advanced' => $styles[$key]['advanced']), array('id' => $attr['id'])); + } + + } + + + /* Provider: - * + * remove the settings from the table and use them from now on with get_option / update_option + * @since 5.0 + */ + public static function check_settings_table(){ + global $wpdb; + + if($wpdb->get_var("SHOW TABLES LIKE '".RevSliderGlobals::$table_settings."'") == RevSliderGlobals::$table_settings) { + $result = $wpdb->get_row("SELECT `general` FROM ".RevSliderGlobals::$table_settings, ARRAY_A); + if(isset($result['general'])){ + update_option('revslider-global-settings', $result['general']); + } + } + + } + + + /* Provider: - * + * move the template sliders and add the slides to corresponding post based slider or simply move them and change them to post based slider if no slider is using them + * @since 5.0 + */ + public static function move_template_slider(){ + $db = new RevSliderDB(); + + $used_templates = array(); //will store all template IDs that are used by post based Sliders, these can be deleted after the progress. + + $sr = new RevSlider(); + $sl = new RevSliderSlide(); + $arrSliders = $sr->getArrSliders(false, false); + $tempSliders = $sr->getArrSliders(false, true); + + if(empty($tempSliders) || !is_array($tempSliders)) return true; //as we do not have any template sliders, we do not need to run further here + + if(!empty($arrSliders) && is_array($arrSliders)){ + foreach($arrSliders as $slider){ + if($slider->getParam('source_type', 'gallery') !== 'posts') continue; //only check Slider with type of posts + + $slider_id = $slider->getID(); + + $template_id = $slider->getParam('slider_template_id',0); + + if($template_id > 0){ //initialize slider to see if it exists. Then copy over the Template Sliders Slides to the Post Based Slider + foreach($tempSliders as $t_slider){ + if($t_slider->getID() === $template_id){ //copy over the slides + //get all slides from template, then copy to Slider + + $slides = $t_slider->getSlides(); + + if(!empty($slides) && is_array($slides)){ + foreach($slides as $slide){ + $slide_id = $slide->getID(); + $slider->copySlideToSlider(array('slider_id' => $slider_id, 'slide_id' => $slide_id)); + } + } + + $static_id = $sl->getStaticSlideID($template_id); + if($static_id !== false){ + $record = $db->fetchSingle(RevSliderGlobals::$table_static_slides,"id=$static_id"); + unset($record['id']); + $record['slider_id'] = $slider_id; + + $db->insert(RevSliderGlobals::$table_static_slides, $record); + } + + $used_templates[$template_id] = $t_slider; + break; + } + } + } + + } + } + + if(!empty($used_templates)){ + foreach($used_templates as $tid => $t_slider){ + $t_slider->deleteSlider(); + } + } + + //translate all other template Sliders to normal sliders and set them to post based + $temp_sliders = $sr->getArrSliders(false, true); + + if(!empty($temp_sliders) && is_array($temp_sliders)){ + foreach($temp_sliders as $slider){ + $slider->updateParam(array('template' => 'false')); + $slider->updateParam(array('source_type' => 'posts')); + } + } + + } + + + /* Provider: - * + * add missing new animation fields to the layers as all animations would be broken without this + * @since 5.0 + */ + public static function add_animation_settings_to_layer($sliders = false){ + $sr = new RevSlider(); + $sl = new RevSliderSlide(); + + if($sliders === false){ //do it on all Sliders + $sliders = $sr->getArrSliders(false); + }else{ + $sliders = array($sliders); + } + + + $inAnimations = RevSliderOperations::getArrAnimations(true); + $outAnimations = RevSliderOperations::getArrEndAnimations(true); + if(!empty($sliders) && is_array($sliders)){ + foreach($sliders as $slider){ + $slides = $slider->getSlides(); + $staticID = $sl->getStaticSlideID($slider->getID()); + if($staticID !== false){ + $msl = new RevSliderSlide(); + if(strpos($staticID, 'static_') === false){ + $staticID = 'static_'.$slider->getID(); + } + $msl->initByID($staticID); + if($msl->getID() !== ''){ + $slides = array_merge($slides, array($msl)); + } + } + + if(!empty($slides) && is_array($slides)){ + foreach($slides as $slide){ + $layers = $slide->getLayers(); + if(!empty($layers) && is_array($layers)){ + foreach($layers as $lk => $layer){ + if(RevSliderFunctions::getVal($layer, 'x_start', false) == false){ //values are not set, set them now through + $animation = RevSliderFunctions::getVal($layer, 'animation', 'tp-fade'); + $endanimation = RevSliderFunctions::getVal($layer, 'endanimation', 'tp-fade'); + if($animation == 'fade') $animation = 'tp-fade'; + if($endanimation == 'fade') $endanimation = 'tp-fade'; + + $anim_values = array(); + foreach($inAnimations as $handle => $anim){ + if($handle == $animation){ + $anim_values = @$anim['params']; + if(!is_array($anim_values)) $anim_values = json_encode($anim_values); + break; + } + } + + $anim_endvalues = array(); + foreach($outAnimations as $handle => $anim){ + if($handle == $endanimation){ + $anim_endvalues = @$anim['params']; + if(!is_array($anim_endvalues)) $anim_endvalues = json_encode($anim_endvalues); + break; + } + } + + $layers[$lk]['x_start'] = RevSliderFunctions::getVal($anim_values, 'movex', 'inherit'); + $layers[$lk]['x_end'] = RevSliderFunctions::getVal($anim_endvalues, 'movex', 'inherit'); + $layers[$lk]['y_start'] = RevSliderFunctions::getVal($anim_values, 'movey', 'inherit'); + $layers[$lk]['y_end'] = RevSliderFunctions::getVal($anim_endvalues, 'movey', 'inherit'); + $layers[$lk]['z_start'] = RevSliderFunctions::getVal($anim_values, 'movez', 'inherit'); + $layers[$lk]['z_end'] = RevSliderFunctions::getVal($anim_endvalues, 'movez', 'inherit'); + + $layers[$lk]['x_rotate_start'] = RevSliderFunctions::getVal($anim_values, 'rotationx', 'inherit'); + $layers[$lk]['x_rotate_end'] = RevSliderFunctions::getVal($anim_endvalues, 'rotationx', 'inherit'); + $layers[$lk]['y_rotate_start'] = RevSliderFunctions::getVal($anim_values, 'rotationy', 'inherit'); + $layers[$lk]['y_rotate_end'] = RevSliderFunctions::getVal($anim_endvalues, 'rotationy', 'inherit'); + $layers[$lk]['z_rotate_start'] = RevSliderFunctions::getVal($anim_values, 'rotationz', 'inherit'); + $layers[$lk]['z_rotate_end'] = RevSliderFunctions::getVal($anim_endvalues, 'rotationz', 'inherit'); + + $layers[$lk]['scale_x_start'] = RevSliderFunctions::getVal($anim_values, 'scalex', 'inherit'); + if(intval($layers[$lk]['scale_x_start']) > 10) $layers[$lk]['scale_x_start'] /= 100; + $layers[$lk]['scale_x_end'] = RevSliderFunctions::getVal($anim_endvalues, 'scalex', 'inherit'); + if(intval($layers[$lk]['scale_x_end']) > 10) $layers[$lk]['scale_x_end'] /= 100; + $layers[$lk]['scale_y_start'] = RevSliderFunctions::getVal($anim_values, 'scaley', 'inherit'); + if(intval($layers[$lk]['scale_y_start']) > 10) $layers[$lk]['scale_y_start'] /= 100; + $layers[$lk]['scale_y_end'] = RevSliderFunctions::getVal($anim_endvalues, 'scaley', 'inherit'); + if(intval($layers[$lk]['scale_y_end']) > 10) $layers[$lk]['scale_y_end'] /= 100; + + $layers[$lk]['skew_x_start'] = RevSliderFunctions::getVal($anim_values, 'skewx', 'inherit'); + $layers[$lk]['skew_x_end'] = RevSliderFunctions::getVal($anim_endvalues, 'skewx', 'inherit'); + $layers[$lk]['skew_y_start'] = RevSliderFunctions::getVal($anim_values, 'skewy', 'inherit'); + $layers[$lk]['skew_y_end'] = RevSliderFunctions::getVal($anim_endvalues, 'skewy', 'inherit'); + + $layers[$lk]['opacity_start'] = RevSliderFunctions::getVal($anim_values, 'captionopacity', 'inherit'); + $layers[$lk]['opacity_end'] = RevSliderFunctions::getVal($anim_endvalues, 'captionopacity', 'inherit'); + + } + } + $slide->setLayersRaw($layers); + $slide->saveLayers(); + } + } + } + } + } + } + + + /* Provider: - * + * add/change layers options + * @since 5.0 + */ + public static function change_settings_on_layers($sliders = false){ + $sr = new RevSlider(); + $sl = new RevSliderSlide(); + if($sliders === false){ //do it on all Sliders + $sliders = $sr->getArrSliders(false); + }else{ + $sliders = array($sliders); + } + + if(!empty($sliders) && is_array($sliders)){ + foreach($sliders as $slider){ + $slides = $slider->getSlides(); + $staticID = $sl->getStaticSlideID($slider->getID()); + if($staticID !== false){ + $msl = new RevSliderSlide(); + if(strpos($staticID, 'static_') === false){ + $staticID = 'static_'.$slider->getID(); + } + $msl->initByID($staticID); + if($msl->getID() !== ''){ + $slides = array_merge($slides, array($msl)); + } + } + if(!empty($slides) && is_array($slides)){ + foreach($slides as $slide){ + $layers = $slide->getLayers(); + if(!empty($layers) && is_array($layers)){ + $do_save = false; + foreach($layers as $lk => $layer){ + $link_slide = RevSliderFunctions::getVal($layer, 'link_slide', false); + if($link_slide != false && $link_slide !== 'nothing'){ //link to slide/scrollunder is set, move it to actions + $layers[$lk]['layer_action'] = new stdClass(); + switch($link_slide){ + case 'link': + $link = RevSliderFunctions::getVal($layer, 'link'); + $link_open_in = RevSliderFunctions::getVal($layer, 'link_open_in'); + $layers[$lk]['layer_action']->action = array('a' => 'link'); + $layers[$lk]['layer_action']->link_type = array('a' => 'a'); + $layers[$lk]['layer_action']->image_link = array('a' => $link); + $layers[$lk]['layer_action']->link_open_in = array('a' => $link_open_in); + + unset($layers[$lk]['link']); + unset($layers[$lk]['link_open_in']); + case 'next': + $layers[$lk]['layer_action']->action = array('a' => 'next'); + break; + case 'prev': + $layers[$lk]['layer_action']->action = array('a' => 'prev'); + break; + case 'scroll_under': + $scrollunder_offset = RevSliderFunctions::getVal($layer, 'scrollunder_offset'); + $layers[$lk]['layer_action']->action = array('a' => 'scroll_under'); + $layers[$lk]['layer_action']->scrollunder_offset = array('a' => $scrollunder_offset); + + unset($layers[$lk]['scrollunder_offset']); + break; + default: //its an ID, so its a slide ID + $layers[$lk]['layer_action']->action = array('a' => 'jumpto'); + $layers[$lk]['layer_action']->jump_to_slide = array('a' => $link_slide); + break; + + } + $layers[$lk]['layer_action']->tooltip_event = array('a' => 'click'); + + unset($layers[$lk]['link_slide']); + + $do_save = true; + } + } + + if($do_save){ + $slide->setLayersRaw($layers); + $slide->saveLayers(); + } + } + } + } + } + } + } + + + /* Provider: - * + * add missing new style fields to the layers as all layers would be broken without this + * @since 5.0 + */ + public static function add_style_settings_to_layer($sliders = false){ + + $sr = new RevSlider(); + $sl = new RevSliderSlide(); + $operations = new RevSliderOperations(); + if($sliders === false){ //do it on all Sliders + $sliders = $sr->getArrSliders(false); + }else{ + $sliders = array($sliders); + } + + $styles = $operations->getCaptionsContentArray(); + + if(!empty($sliders) && is_array($sliders)){ + foreach($sliders as $slider){ + $slides = $slider->getSlides(); + $staticID = $sl->getStaticSlideID($slider->getID()); + if($staticID !== false){ + $msl = new RevSliderSlide(); + if(strpos($staticID, 'static_') === false){ + $staticID = 'static_'.$slider->getID(); + } + $msl->initByID($staticID); + if($msl->getID() !== ''){ + $slides = array_merge($slides, array($msl)); + } + } + if(!empty($slides) && is_array($slides)){ + foreach($slides as $slide){ + $layers = $slide->getLayers(); + if(!empty($layers) && is_array($layers)){ + foreach($layers as $lk => $layer){ + $static_styles = (array) RevSliderFunctions::getVal($layer, 'static_styles', array()); + $def_val = (array) RevSliderFunctions::getVal($layer, 'deformation', array()); + $defh_val = (array) RevSliderFunctions::getVal($layer, 'deformation-hover', array()); + + if(empty($def_val)){ + + //add parallax always! + $def_val['parallax'] = RevSliderFunctions::getVal($layer, 'parallax_level', '-'); + $layers[$lk]['deformation'] = $def_val; + + //check for selected style in styles, then add all deformations to the layer + $cur_style = RevSliderFunctions::getVal($layer, 'style', ''); + + if(trim($cur_style) == '') continue; + $wws = false; + + foreach($styles as $style){ + if($style['handle'] == '.tp-caption.'.$cur_style){ + $wws = $style; + break; + } + } + + if($wws == false) continue; + + $css_idle = ''; + $css_hover = ''; + + $wws['params'] = (array)$wws['params']; + $wws['hover'] = (array)$wws['hover']; + $wws['advanced'] = (array)$wws['advanced']; + + if(isset($wws['params']['font-family'])) $def_val['font-family'] = $wws['params']['font-family']; + if(isset($wws['params']['padding'])){ + $raw_pad = $wws['params']['padding']; + if(!is_array($raw_pad)) $raw_pad = explode(' ', $raw_pad); + + switch(count($raw_pad)){ + case 1: + $raw_pad = array($raw_pad[0], $raw_pad[0], $raw_pad[0], $raw_pad[0]); + break; + case 2: + $raw_pad = array($raw_pad[0], $raw_pad[1], $raw_pad[0], $raw_pad[1]); + break; + case 3: + $raw_pad = array($raw_pad[0], $raw_pad[1], $raw_pad[2], $raw_pad[1]); + break; + } + + $def_val['padding'] = $raw_pad; + } + if(isset($wws['params']['font-style'])) $def_val['font-style'] = $wws['params']['font-style']; + if(isset($wws['params']['text-decoration'])) $def_val['text-decoration'] = $wws['params']['text-decoration']; + if(isset($wws['params']['background-color'])){ + if(RevSliderFunctions::isrgb($wws['params']['background-color'])){ + $def_val['background-color'] = RevSliderFunctions::rgba2hex($wws['params']['background-color']); + }else{ + $def_val['background-color'] = $wws['params']['background-color']; + } + } + if(isset($wws['params']['background-transparency'])){ + $def_val['background-transparency'] = $wws['params']['background-transparency']; + if($def_val['background-transparency'] > 1) $def_val['background-transparency'] /= 100; + }else{ + if(isset($wws['params']['background-color'])) $def_val['background-transparency'] = RevSliderFunctions::get_trans_from_rgba($wws['params']['background-color'], true); + } + + if(isset($wws['params']['border-color'])){ + if(RevSliderFunctions::isrgb($wws['params']['border-color'])){ + $def_val['border-color'] = RevSliderFunctions::rgba2hex($wws['params']['border-color']); + }else{ + $def_val['border-color'] = $wws['params']['border-color']; + } + } + + if(isset($wws['params']['border-style'])) $def_val['border-style'] = $wws['params']['border-style']; + if(isset($wws['params']['border-width'])) $def_val['border-width'] = $wws['params']['border-width']; + if(isset($wws['params']['border-radius'])){ + $raw_bor = $wws['params']['border-radius']; + if(!is_array($raw_bor)) $raw_bor = explode(' ', $raw_bor); + + switch(count($raw_bor)){ + case 1: + $raw_bor = array($raw_bor[0], $raw_bor[0], $raw_bor[0], $raw_bor[0]); + break; + case 2: + $raw_bor = array($raw_bor[0], $raw_bor[1], $raw_bor[0], $raw_bor[1]); + break; + case 3: + $raw_bor = array($raw_bor[0], $raw_bor[1], $raw_bor[2], $raw_bor[1]); + break; + } + + $def_val['border-radius'] = $raw_bor; + } + if(isset($wws['params']['x'])) $def_val['x'] = $wws['params']['x']; + if(isset($wws['params']['y'])) $def_val['y'] = $wws['params']['y']; + if(isset($wws['params']['z'])) $def_val['z'] = $wws['params']['z']; + if(isset($wws['params']['skewx'])) $def_val['skewx'] = $wws['params']['skewx']; + if(isset($wws['params']['skewy'])) $def_val['skewy'] = $wws['params']['skewy']; + if(isset($wws['params']['scalex'])) $def_val['scalex'] = $wws['params']['scalex']; + if(isset($wws['params']['scaley'])) $def_val['scaley'] = $wws['params']['scaley']; + if(isset($wws['params']['opacity'])) $def_val['opacity'] = $wws['params']['opacity']; + if(isset($wws['params']['xrotate'])) $def_val['xrotate'] = $wws['params']['xrotate']; + if(isset($wws['params']['yrotate'])) $def_val['yrotate'] = $wws['params']['yrotate']; + if(isset($wws['params']['2d_rotation'])) $def_val['2d_rotation'] = $wws['params']['2d_rotation']; + if(isset($wws['params']['2d_origin_x'])) $def_val['2d_origin_x'] = $wws['params']['2d_origin_x']; + if(isset($wws['params']['2d_origin_y'])) $def_val['2d_origin_y'] = $wws['params']['2d_origin_y']; + if(isset($wws['params']['pers'])) $def_val['pers'] = $wws['params']['pers']; + + if(isset($wws['params']['color'])){ + if(RevSliderFunctions::isrgb($wws['params']['color'])){ + $static_styles['color'] = RevSliderFunctions::rgba2hex($wws['params']['color']); + }else{ + $static_styles['color'] = $wws['params']['color']; + } + } + + if(isset($wws['params']['font-weight'])) $static_styles['font-weight'] = $wws['params']['font-weight']; + if(isset($wws['params']['font-size'])) $static_styles['font-size'] = $wws['params']['font-size']; + if(isset($wws['params']['line-height'])) $static_styles['line-height'] = $wws['params']['line-height']; + if(isset($wws['params']['font-family'])) $static_styles['font-family'] = $wws['params']['font-family']; + + if(isset($wws['advanced']) && isset($wws['advanced']['idle']) && is_array($wws['advanced']['idle']) && !empty($wws['advanced']['idle'])){ + $css_idle = '{'."\n"; + foreach($wws['advanced']['idle'] as $handle => $value){ + $value = implode(' ', $value); + if($value !== '') + $css_idle .= ' '.$key.': '.$value.';'."\n"; + + } + $css_idle .= '}'."\n"; + } + + if(isset($wws['hover']['color'])){ + if(RevSliderFunctions::isrgb($wws['hover']['color'])){ + $defh_val['color'] = RevSliderFunctions::rgba2hex($wws['hover']['color']); + }else{ + $defh_val['color'] = $wws['hover']['color']; + } + } + if(isset($wws['hover']['text-decoration'])) $defh_val['text-decoration'] = $wws['hover']['text-decoration']; + if(isset($wws['hover']['background-color'])){ + if(RevSliderFunctions::isrgb($wws['hover']['background-color'])){ + $defh_val['background-color'] = RevSliderFunctions::rgba2hex($wws['hover']['background-color']); + }else{ + $defh_val['background-color'] = $wws['hover']['background-color']; + } + } + if(isset($wws['hover']['background-transparency'])){ + $defh_val['background-transparency'] = $wws['hover']['background-transparency']; + if($defh_val['background-transparency'] > 1) $defh_val['background-transparency'] /= 100; + }else{ + if(isset($wws['hover']['background-color'])) $defh_val['background-transparency'] = RevSliderFunctions::get_trans_from_rgba($wws['hover']['background-color'], true); + } + if(isset($wws['hover']['border-color'])){ + if(RevSliderFunctions::isrgb($wws['hover']['border-color'])){ + $defh_val['border-color'] = RevSliderFunctions::rgba2hex($wws['hover']['border-color']); + }else{ + $defh_val['border-color'] = $wws['hover']['border-color']; + } + } + if(isset($wws['hover']['border-style'])) $defh_val['border-style'] = $wws['hover']['border-style']; + if(isset($wws['hover']['border-width'])) $defh_val['border-width'] = $wws['hover']['border-width']; + if(isset($wws['hover']['border-radius'])){ + $raw_bor = $wws['hover']['border-radius']; + if(!is_array($raw_bor)) $raw_bor = explode(' ', $raw_bor); + + switch(count($raw_bor)){ + case 1: + $raw_bor = array($raw_bor[0], $raw_bor[0], $raw_bor[0], $raw_bor[0]); + break; + case 2: + $raw_bor = array($raw_bor[0], $raw_bor[1], $raw_bor[0], $raw_bor[1]); + break; + case 3: + $raw_bor = array($raw_bor[0], $raw_bor[1], $raw_bor[2], $raw_bor[1]); + break; + } + + $defh_val['border-radius'] = $raw_bor; + } + if(isset($wws['hover']['x'])) $defh_val['x'] = $wws['hover']['x']; + if(isset($wws['hover']['y'])) $defh_val['y'] = $wws['hover']['y']; + if(isset($wws['hover']['z'])) $defh_val['z'] = $wws['hover']['z']; + if(isset($wws['hover']['skewx'])) $defh_val['skewx'] = $wws['hover']['skewx']; + if(isset($wws['hover']['skewy'])) $defh_val['skewy'] = $wws['hover']['skewy']; + if(isset($wws['hover']['scalex'])) $defh_val['scalex'] = $wws['hover']['scalex']; + if(isset($wws['hover']['scaley'])) $defh_val['scaley'] = $wws['hover']['scaley']; + if(isset($wws['hover']['opacity'])) $defh_val['opacity'] = $wws['hover']['opacity']; + if(isset($wws['hover']['xrotate'])) $defh_val['xrotate'] = $wws['hover']['xrotate']; + if(isset($wws['hover']['yrotate'])) $defh_val['yrotate'] = $wws['hover']['yrotate']; + if(isset($wws['hover']['2d_rotation'])) $defh_val['2d_rotation'] = $wws['hover']['2d_rotation']; + if(isset($wws['hover']['2d_origin_x'])) $defh_val['2d_origin_x'] = $wws['hover']['2d_origin_x']; + if(isset($wws['hover']['2d_origin_y'])) $defh_val['2d_origin_y'] = $wws['hover']['2d_origin_y']; + if(isset($wws['hover']['speed'])) $defh_val['speed'] = $wws['hover']['speed']; + if(isset($wws['hover']['easing'])) $defh_val['easing'] = $wws['hover']['easing']; + + if(isset($wws['advanced']) && isset($wws['advanced']['hover']) && is_array($wws['advanced']['hover']) && !empty($wws['advanced']['hover'])){ + $css_hover = '{'."\n"; + foreach($wws['advanced']['hover'] as $handle => $value){ + $value = implode(' ', $value); + if($value !== '') + $css_hover .= ' '.$key.': '.$value.';'."\n"; + + } + $css_hover .= '}'."\n"; + + } + + if(!isset($layers[$lk]['inline'])) $layers[$lk]['inline'] = array(); + if($css_idle !== ''){ + $layers[$lk]['inline']['idle'] = $css_idle; + } + if($css_hover !== ''){ + $layers[$lk]['inline']['idle'] = $css_hover; + } + + $layers[$lk]['deformation'] = $def_val; + $layers[$lk]['deformation-hover'] = $defh_val; + $layers[$lk]['static_styles'] = $static_styles; + } + } + + $slide->setLayersRaw($layers); + $slide->saveLayers(); + } + } + } + } + } + } + + + /* Provider: - * + * add settings to layer depending on how + * @since 5.0 + */ + public static function add_general_settings($sliders = false){ + + $sr = new RevSlider(); + $sl = new RevSliderSlide(); + //$operations = new RevSliderOperations(); + if($sliders === false){ //do it on all Sliders + $sliders = $sr->getArrSliders(false); + }else{ + $sliders = array($sliders); + } + + //$styles = $operations->getCaptionsContentArray(); + + if(!empty($sliders) && is_array($sliders)){ + $fonts = get_option('tp-google-fonts', array()); + + foreach($sliders as $slider){ + $settings = $slider->getSettings(); + $bg_freeze = $slider->getParam('parallax_bg_freeze', 'off'); + $google_fonts = $slider->getParam('google_font', array()); + + if(!isset($settings['version']) || version_compare($settings['version'], 5.0, '<')){ + if(empty($google_fonts) && !empty($fonts)){ //add all punchfonts to the Slider + foreach($fonts as $font){ + $google_fonts[] = $font['url']; + } + $slider->updateParam(array('google_font' => $google_fonts)); + } + $settings['version'] = 5.0; + $slider->updateSetting(array('version' => 5.0)); + } + + if($bg_freeze == 'on'){ //deprecated here, moved to slides so remove check here and add on to slides + $slider->updateParam(array('parallax_bg_freeze' => 'off')); + } + + $slides = $slider->getSlides(); + $staticID = $sl->getStaticSlideID($slider->getID()); + if($staticID !== false){ + $msl = new RevSliderSlide(); + if(strpos($staticID, 'static_') === false){ + $staticID = 'static_'.$slider->getID(); + } + $msl->initByID($staticID); + if($msl->getID() !== ''){ + $slides = array_merge($slides, array($msl)); + } + } + if(!empty($slides) && is_array($slides)){ + foreach($slides as $slide){ + + if($bg_freeze == 'on'){ //set bg_freeze to on for slide settings + $slide->setParam('slide_parallax_level', '1'); + } + + $slide->saveParams(); + } + } + + } + } + } + + + + + /* Provider: - * + * remove static slide from Sliders if the setting was set to off + * @since 5.0 + */ + public static function remove_static_slides($sliders = false){ + + $sr = new RevSlider(); + $sl = new RevSliderSlide(); + //$operations = new RevSliderOperations(); + if($sliders === false){ //do it on all Sliders + $sliders = $sr->getArrSliders(false); + }else{ + $sliders = array($sliders); + } + + //$styles = $operations->getCaptionsContentArray(); + + if(!empty($sliders) && is_array($sliders)){ + foreach($sliders as $slider){ + $settings = $slider->getSettings(); + $enable_static_layers = $slider->getParam('enable_static_layers', 'off'); + + if($enable_static_layers == 'off'){ + $staticID = $sl->getStaticSlideID($slider->getID()); + if($staticID !== false){ + $slider->deleteStaticSlide(); + } + } + + } + } + } +} + +/* Provider: - * + * old classname extends new one (old classnames will be obsolete soon) + * @since: 5.0 + **/ +class UnitePluginUpdateRev extends RevSliderPluginUpdate {} +?> \ No newline at end of file diff --git a/plugins/revslider/includes/framework/update.class.php b/plugins/revslider/includes/framework/update.class.php new file mode 100644 index 0000000..de8ab9f --- /dev/null +++ b/plugins/revslider/includes/framework/update.class.php @@ -0,0 +1,220 @@ + + * @link http://www.themepunch.com/ + * @copyright 2015 ThemePunch + */ + +if( !defined( 'ABSPATH') ) exit(); + +class RevSliderUpdate { + + private $plugin_url = 'http://codecanyon.net/item/slider-revolution-responsive-wordpress-plugin/2751380'; + private $remote_url = 'http://updates.themepunch.tools/check_for_updates.php'; + private $remote_url_info = 'http://updates.themepunch.tools/revslider/revslider.php'; + private $plugin_slug = 'revslider'; + private $plugin_path = 'revslider/revslider.php'; + private $version; + private $plugins; + private $option; + + + public function __construct($version) { + $this->option = $this->plugin_slug . '_update_info'; + $this->_retrieve_version_info(); + $this->version = $version; + + } + + public function add_update_checks(){ + + add_filter('pre_set_site_transient_update_plugins', array(&$this, 'set_update_transient')); + add_filter('plugins_api', array(&$this, 'set_updates_api_results'), 10, 3); + + } + + public function set_update_transient($transient) { + + $this->_check_updates(); + + if(!isset($transient->response)) { + $transient->response = array(); + } + + if(!empty($this->data->basic) && is_object($this->data->basic)) { + if(version_compare($this->version, $this->data->basic->version, '<')) { + + $this->data->basic->new_version = $this->data->basic->version; + $transient->response[$this->plugin_path] = $this->data->basic; + } + } + + return $transient; + } + + + public function set_updates_api_results($result, $action, $args) { + + $this->_check_updates(); + + if(isset($args->slug) && $args->slug == $this->plugin_slug && $action == 'plugin_information') { + if(is_object($this->data->full) && !empty($this->data->full)) { + $result = $this->data->full; + } + } + + return $result; + } + + + protected function _check_updates() { + //reset saved options + //update_option($this->option, false); + + $force_check = false; + + if(isset($_GET['checkforupdates']) && $_GET['checkforupdates'] == 'true') $force_check = true; + + // Get data + if(empty($this->data)) { + $data = get_option($this->option, false); + $data = $data ? $data : new stdClass; + + $this->data = is_object($data) ? $data : maybe_unserialize($data); + + } + + $last_check = get_option('revslider-update-check'); + if($last_check == false){ //first time called + $last_check = time(); + update_option('revslider-update-check', $last_check); + } + + // Check for updates + if(time() - $last_check > 172800 || $force_check == true){ + + $data = $this->_retrieve_update_info(); + + if(isset($data->basic)) { + update_option('revslider-update-check', time()); + + $this->data->checked = time(); + $this->data->basic = $data->basic; + $this->data->full = $data->full; + + update_option('revslider-stable-version', $data->full->stable); + update_option('revslider-latest-version', $data->full->version); + } + + } + + // Save results + update_option($this->option, $this->data); + } + + + public function _retrieve_update_info() { + + global $wp_version; + $data = new stdClass; + + // Build request + $api_key = get_option('revslider-api-key', ''); + $username = get_option('revslider-username', ''); + $code = get_option('revslider-code', ''); + + $validated = get_option('revslider-valid', 'false'); + $stable_version = get_option('revslider-stable-version', '4.2'); + + $rattr = array( + 'api' => urlencode($api_key), + 'username' => urlencode($username), + 'code' => urlencode($code), + 'version' => urlencode(RevSliderGlobals::SLIDER_REVISION) + ); + + if($validated !== 'true' && version_compare(RevSliderGlobals::SLIDER_REVISION, $stable_version, '<')){ //We'll get the last stable only now! + $rattr['get_stable'] = 'true'; + } + + $request = wp_remote_post($this->remote_url_info, array( + 'user-agent' => 'WordPress/'.$wp_version.'; '.get_bloginfo('url'), + 'body' => $rattr + )); + + if(!is_wp_error($request)) { + if($response = maybe_unserialize($request['body'])) { + if(is_object($response)) { + $data = $response; + + $data->basic->url = $this->plugin_url; + $data->full->url = $this->plugin_url; + $data->full->external = 1; + } + } + } + + return $data; + } + + + public function _retrieve_version_info($force_check = false) { + global $wp_version; + + $last_check = get_option('revslider-update-check-short'); + if($last_check == false){ //first time called + $last_check = time(); + update_option('revslider-update-check-short', $last_check); + } + + + // Check for updates + if(time() - $last_check > 172800 || $force_check == true){ + + update_option('revslider-update-check-short', time()); + + $response = wp_remote_post($this->remote_url, array( + 'user-agent' => 'WordPress/'.$wp_version.'; '.get_bloginfo('url'), + 'body' => array( + 'item' => urlencode('revslider'), + 'version' => urlencode(RevSliderGlobals::SLIDER_REVISION) + ) + )); + + $response_code = wp_remote_retrieve_response_code( $response ); + $version_info = wp_remote_retrieve_body( $response ); + + if ( $response_code != 200 || is_wp_error( $version_info ) ) { + return false; + } + + $version_info = json_decode($version_info); + if(isset($version_info->version)){ + update_option('revslider-latest-version', $version_info->version); + } + + if(isset($version_info->stable)){ + update_option('revslider-stable-version', $version_info->stable); + } + + if(isset($version_info->notices)){ + update_option('revslider-notices', $version_info->notices); + } + + } + + if($force_check == true){ //force that the update will be directly searched + update_option('revslider-update-check', ''); + } + + } + +} + + +/* Provider: - * + * old classname extends new one (old classnames will be obsolete soon) + * @since: 5.0 + **/ +class UniteUpdateClassRev extends RevSliderUpdate {} +?> \ No newline at end of file diff --git a/plugins/revslider/includes/framework/wpml.class.php b/plugins/revslider/includes/framework/wpml.class.php new file mode 100644 index 0000000..4f6680e --- /dev/null +++ b/plugins/revslider/includes/framework/wpml.class.php @@ -0,0 +1,197 @@ + + * @link http://www.themepunch.com/ + * @copyright 2015 ThemePunch + */ + +if( !defined( 'ABSPATH') ) exit(); + +class RevSliderWpml{ + + /* Provider: - * + * + * true / false if the wpml plugin exists + */ + public static function isWpmlExists(){ + + if(class_exists("SitePress")) + return(true); + else + return(false); + } + + /* Provider: - * + * + * valdiate that wpml exists + */ + private static function validateWpmlExists(){ + if(!self::isWpmlExists()) + RevSliderFunctions::throwError("The wpml plugin is not activated"); + } + + /* Provider: - * + * + * get languages array + */ + public static function getArrLanguages($getAllCode = true){ + + self::validateWpmlExists(); + $wpml = new SitePress(); + $arrLangs = $wpml->get_active_languages(); + + $response = array(); + + if($getAllCode == true) + $response["all"] = __("All Languages",REVSLIDER_TEXTDOMAIN); + + foreach($arrLangs as $code=>$arrLang){ + $name = $arrLang["native_name"]; + $response[$code] = $name; + } + + return($response); + } + + /* Provider: - * + * + * get assoc array of lang codes + */ + public static function getArrLangCodes($getAllCode = true){ + + $arrCodes = array(); + + if($getAllCode == true) + $arrCodes["all"] = "all"; + + self::validateWpmlExists(); + $wpml = new SitePress(); + $arrLangs = $wpml->get_active_languages(); + foreach($arrLangs as $code=>$arr){ + $arrCodes[$code] = $code; + } + + return($arrCodes); + } + + + /* Provider: - * + * + * check if all languages exists in the given langs array + */ + public static function isAllLangsInArray($arrCodes){ + $arrAllCodes = self::getArrLangCodes(); + $diff = array_diff($arrAllCodes, $arrCodes); + return(empty($diff)); + } + + + /* Provider: - * + * + * get langs with flags menu list + * @param $props + */ + public static function getLangsWithFlagsHtmlList($props = "",$htmlBefore = ""){ + $arrLangs = self::getArrLanguages(); + if(!empty($props)) + $props = " ".$props; + + $html = ""."\n"; + $html .= $htmlBefore; + + foreach($arrLangs as $code=>$title){ + $urlIcon = self::getFlagUrl($code); + + $html .= "
        • "."\n"; + $html .= " $title"."\n"; + $html .= "
        • "."\n"; + } + + $html .= "
        "; + + + return($html); + } + + + /* Provider: - * + * get flag url + */ + public static function getFlagUrl($code){ + + self::validateWpmlExists(); + $wpml = new SitePress(); + + if(empty($code) || $code == "all") + $url = RS_PLUGIN_URL.'admin/assets/images/icon-all.png'; + else + $url = $wpml->get_flag_url($code); + + //default: show all + if(empty($url)) + $url = RS_PLUGIN_URL.'admin/assets/images/icon-all.png'; + + return($url); + } + + + /* Provider: - * + /* Provider: - get language details by code + */ + private function getLangDetails($code){ + global $wpdb; + + $details = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."icl_languages WHERE code='$code'"); + + if(!empty($details)) + $details = (array)$details; + + return($details); + } + + + /* Provider: - * + * + * get language title by code + */ + public static function getLangTitle($code){ + + $langs = self::getArrLanguages(); + + if($code == "all") + return(__("All Languages", REVSLIDER_TEXTDOMAIN)); + + if(array_key_exists($code, $langs)) + return($langs[$code]); + + $details = self::getLangDetails($code); + if(!empty($details)) + return($details["english_name"]); + + return(""); + } + + + /* Provider: - * + * + * get current language + */ + public static function getCurrentLang(){ + self::validateWpmlExists(); + $wpml = new SitePress(); + + if(is_admin()) + $lang = $wpml->get_default_language(); + else + $lang = RevSliderFunctionsWP::getCurrentLangCode(); + + return($lang); + } +} + +/* Provider: - * + * old classname extends new one (old classnames will be obsolete soon) + * @since: 5.0 + **/ +class UniteWpmlRev extends RevSliderWpml {} +?> \ No newline at end of file diff --git a/plugins/revslider/includes/globals.class.php b/plugins/revslider/includes/globals.class.php new file mode 100644 index 0000000..7302f9f --- /dev/null +++ b/plugins/revslider/includes/globals.class.php @@ -0,0 +1,58 @@ + + * @link http://www.themepunch.com/ + * @copyright 2015 ThemePunch + */ + +if( !defined( 'ABSPATH') ) exit(); + +define("REVSLIDER_TEXTDOMAIN","revslider"); + +class RevSliderGlobals{ + + const SLIDER_REVISION = '5.0.2'; + const TABLE_SLIDERS_NAME = "revslider_sliders"; + const TABLE_SLIDES_NAME = "revslider_slides"; + const TABLE_STATIC_SLIDES_NAME = "revslider_static_slides"; + const TABLE_SETTINGS_NAME = "revslider_settings"; + const TABLE_CSS_NAME = "revslider_css"; + const TABLE_LAYER_ANIMS_NAME = "revslider_layer_animations"; + const TABLE_NAVIGATION_NAME = "revslider_navigations"; + + const FIELDS_SLIDE = "slider_id,slide_order,params,layers"; + const FIELDS_SLIDER = "title,alias,params"; + + const YOUTUBE_EXAMPLE_ID = "T8--OggjJKQ"; + const DEFAULT_YOUTUBE_ARGUMENTS = "hd=1&wmode=opaque&showinfo=0&ref=0;"; + const DEFAULT_VIMEO_ARGUMENTS = "title=0&byline=0&portrait=0&api=1"; + const LINK_HELP_SLIDERS = "http://www.themepunch.com/revslider-doc/slider-revolution-documentation/"; + const LINK_HELP_SLIDER = "http://www.themepunch.com/revslider-doc/slider-settings/#generalsettings"; + const LINK_HELP_SLIDE_LIST = "http://www.themepunch.com/revslider-doc/individual-slide-settings/"; + const LINK_HELP_SLIDE = "http://www.themepunch.com/revslider-doc/individual-slide-settings/"; + + public static $table_sliders; + public static $table_slides; + public static $table_static_slides; + public static $table_settings; + public static $table_css; + public static $table_layer_anims; + public static $table_navigation; + public static $filepath_backup; + public static $filepath_captions; + public static $filepath_dynamic_captions; + public static $filepath_static_captions; + public static $filepath_captions_original; + public static $urlCaptionsCSS; + public static $urlStaticCaptionsCSS; + public static $urlExportZip; + public static $isNewVersion; + +} + +/* Provider: - * + * old classname extends new one (old classnames will be obsolete soon) + * @since: 5.0 + **/ +class GlobalsRevSlider extends RevSliderGlobals {} +?> \ No newline at end of file diff --git a/plugins/revslider/includes/index.php b/plugins/revslider/includes/index.php new file mode 100644 index 0000000..e69de29 diff --git a/plugins/revslider/includes/navigation.class.php b/plugins/revslider/includes/navigation.class.php new file mode 100644 index 0000000..ffad6f2 --- /dev/null +++ b/plugins/revslider/includes/navigation.class.php @@ -0,0 +1,321 @@ + + * @link http://www.revolution.themepunch.com/ + * @copyright 2015 ThemePunch + */ + +if( !defined( 'ABSPATH') ) exit(); + +class RevSliderNavigation { + + public function __construct(){ + + } + + + public function init_by_id($nav_id){ + if(intval($nav_id) == 0) return false; + + global $wpdb; + + $row = $wpdb->get_row($wpdb->prepare("SELECT `id`, `handle`, `type`, `css`, `settings` FROM ".$wpdb->prefix.RevSliderGlobals::TABLE_NAVIGATION_NAME." WHERE `id` = %d", $nav_id), ARRAY_A); + + return $row; + + } + + + /* Provider: - * + * Get all Navigations Short + * @since: 5.0 + **/ + public static function get_all_navigations_short(){ + global $wpdb; + + $navigations = $wpdb->get_results("SELECT `id`, `handle`, `name` FROM ".$wpdb->prefix.RevSliderGlobals::TABLE_NAVIGATION_NAME, ARRAY_A); + + return $navigations; + } + + + /* Provider: - * + * Get all Navigations + * @since: 5.0 + **/ + public static function get_all_navigations($defaults = true){ + global $wpdb; + + $navigations = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix.RevSliderGlobals::TABLE_NAVIGATION_NAME, ARRAY_A); + + foreach($navigations as $key => $nav){ + $navigations[$key]['css'] = RevSliderBase::stripslashes_deep(json_decode($navigations[$key]['css'], true)); + $navigations[$key]['markup'] = RevSliderBase::stripslashes_deep(json_decode($navigations[$key]['markup'], true)); + if(isset($navigations[$key]['settings'])){ + $navigations[$key]['settings'] = RevSliderBase::stripslashes_deep(json_decode($navigations[$key]['settings'], true)); + } + } + + if($defaults){ + $def = self::get_default_navigations(); + + if(!empty($def)){ + foreach($def as $key => $nav){ + + $def[$key]['css'] = RevSliderBase::stripslashes_deep(json_decode($def[$key]['css'], true)); + $def[$key]['markup'] = RevSliderBase::stripslashes_deep(json_decode($def[$key]['markup'], true)); + } + if(isset($def[$key]['settings'])){ + $def[$key]['settings'] = RevSliderBase::stripslashes_deep(json_decode($def[$key]['settings'], true)); + } + $navigations = array_merge($navigations, $def); + } + } + + return $navigations; + } + + + /* Provider: - * + * Creates / Updates Navigation skins + * @since: 5.0 + **/ + public function create_update_full_navigation($data){ + global $wpdb; + + if(!empty($data) && is_array($data)){ + + $navigations = self::get_all_navigations(); + + foreach($data as $vals){ + $found = false; + + if(!isset($vals['markup']) || !isset($vals['css'])) continue; + if(isset($vals['default']) && $vals['default'] == true) continue; //defaults can't be deleted + + if(isset($vals['id'])){ //new will be added temporary to navs to tell here that they are new + + if(intval($vals['id']) === 0) continue; //0 + + foreach($navigations as $nav){ + if($vals['id'] == $nav['id']){ + $found = true; + break; + } + } + } + + if($found == true){ //update + self::create_update_navigation($vals, $vals['id']); + }else{ //create + self::create_update_navigation($vals); + } + } + } + + return true; + } + + /* Provider: - * + * Creates / Updates Navigation skins + * @since: 5.0 + **/ + public static function create_update_navigation($data, $nav_id = 0){ + global $wpdb; + + if(isset($data['default']) && $data['default'] == true) return false; + + if($nav_id > 0){ + $response = $wpdb->update($wpdb->prefix.RevSliderGlobals::TABLE_NAVIGATION_NAME, + array( + 'name' => $data['name'], + 'handle' => sanitize_title($data['name']), + 'markup' => json_encode($data['markup']), + 'css' => json_encode($data['css']), + 'settings' => json_encode(@$data['settings']) + ), + array('id' => $nav_id) + ); + }else{ + $response = $wpdb->insert($wpdb->prefix.RevSliderGlobals::TABLE_NAVIGATION_NAME, array('name' => $data['name'], 'handle' => sanitize_title($data['name']), 'css' => json_encode($data['css']), 'markup' => json_encode($data['markup']), 'settings' => json_encode(@$data['settings']))); + } + + return $response; + } + + + /* Provider: - * + * Delete Navigation + * @since: 5.0 + **/ + public function delete_navigation($nav_id = 0){ + global $wpdb; + + if(!isset($nav_id) || intval($nav_id) == 0) return __('Invalid ID', REVSLIDER_TEXTDOMAIN); + + + $response = $wpdb->delete($wpdb->prefix.RevSliderGlobals::TABLE_NAVIGATION_NAME, array('id' => $nav_id)); + if($response === false) return __('Navigation could not be deleted', REVSLIDER_TEXTDOMAIN); + + return true; + + } + + + /* Provider: - * + * Get Default Navigation + * @since: 5.0 + **/ + public static function get_default_navigations(){ + $navigations = array(); + + $navigations[] = array( 'id' => 5000, + 'default' => true, + 'name' => 'Hesperiden', + 'handle' => 'round', + 'markup' => '{ + "arrows":"", + "bullets":"", + "thumbs":"<\/span>\\n{{title}}<\/span>", + "tabs":"
        \\n {{param1}}<\/span>\\n {{title}}<\/span>\\n<\/div>\\n
        <\/div>" + }', + 'css' => '{ + "arrows":".hesperiden.tparrows {\\n\\tcursor:pointer;\\n\\tbackground:#000;\\n\\tbackground:rgba(0,0,0,0.5);\\n\\twidth:40px;\\n\\theight:40px;\\n\\tposition:absolute;\\n\\tdisplay:block;\\n\\tz-index:100;\\n border-radius: 50%;\\n}\\n.hesperiden.tparrows:hover {\\n\\tbackground:#000;\\n}\\n.hesperiden.tparrows:before {\\n\\tfont-family: \\\\\\"revicons\\\\\\";\\n\\tfont-size:20px;\\n\\tcolor:#fff;\\n\\tdisplay:block;\\n\\tline-height: 40px;\\n\\ttext-align: center;\\n}\\n.hesperiden.tparrows.tp-leftarrow:before {\\n\\tcontent: \\\\\\"\\\\\\\e82c\\\\\\";\\n margin-left:-3px;\\n}\\n.hesperiden.tparrows.tp-rightarrow:before {\\n\\tcontent: \\\\\\"\\\\\\\e82d\\\\\\";\\n margin-right:-3px;\\n}", + "bullets":".hesperiden.tp-bullets {\\n}\\n.hesperiden.tp-bullets:before {\\n\\tcontent:\\\\\\" \\\\\\";\\n\\tposition:absolute;\\n\\twidth:100%;\\n\\theight:100%;\\n\\tbackground:transparent;\\n\\tpadding:10px;\\n\\tmargin-left:-10px;margin-top:-10px;\\n\\tbox-sizing:content-box;\\n border-radius:8px;\\n \\n}\\n.hesperiden .tp-bullet {\\n\\twidth:12px;\\n\\theight:12px;\\n\\tposition:absolute;\\n\\tbackground: #999999; \/* Provider: - old browsers *\/\\n background: -moz-linear-gradient(top, #999999 0%, #e1e1e1 100%); \/* Provider: - ff3.6+ *\/\\n background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#999999), \\n color-stop(100%,#e1e1e1)); \/* Provider: - chrome,safari4+ *\/\\n background: -webkit-linear-gradient(top, #999999 0%,#e1e1e1 100%); \/* Provider: - chrome10+,safari5.1+ *\/\\n background: -o-linear-gradient(top, #999999 0%,#e1e1e1 100%); \/* Provider: - opera 11.10+ *\/\\n background: -ms-linear-gradient(top, #999999 0%,#e1e1e1 100%); \/* Provider: - ie10+ *\/\\n background: linear-gradient(to bottom, #999999 0%,#e1e1e1 100%); \/* Provider: - w3c *\/\\n filter: progid:dximagetransform.microsoft.gradient( \\n startcolorstr=\\\\\\"#999999\\\\\\", endcolorstr=\\\\\\"#e1e1e1\\\\\\",gradienttype=0 ); \/* Provider: - ie6-9 *\/\\n\\tborder:3px solid #e5e5e5;\\n\\tborder-radius:50%;\\n\\tcursor: pointer;\\n\\tbox-sizing:content-box;\\n}\\n.hesperiden .tp-bullet:hover,\\n.hesperiden .tp-bullet.selected {\\n\\tbackground:#666;\\n}\\n.hesperiden .tp-bullet-image {\\n}\\n.hesperiden .tp-bullet-title {\\n}\\n", + "thumbs":".hesperiden .tp-thumb {\\n opacity:1;\\n -webkit-perspective: 600px;\\n perspective: 600px;\\n}\\n.hesperiden .tp-thumb .tp-thumb-title {\\n font-size:12px;\\n position:absolute;\\n margin-top:-10px;\\n color:#fff;\\n display:block;\\n z-index:1000;\\n background-color:#000;\\n padding:5px 10px; \\n bottom:0px;\\n left:0px;\\n width:100%;\\n box-sizing:border-box;\\n text-align:center;\\n overflow:hidden;\\n white-space:nowrap;\\n transition:all 0.3s;\\n -webkit-transition:all 0.3s;\\n transform:rotatex(90deg) translatez(0.001px);\\n transform-origin:50% 100%;\\n -webkit-transform:rotatex(90deg) translatez(0.001px);\\n -webkit-transform-origin:50% 100%;\\n opacity:0;\\n }\\n.hesperiden .tp-thumb:hover .tp-thumb-title {\\n \\t transform:rotatex(0deg);\\n -webkit-transform:rotatex(0deg);\\n opacity:1;\\n}", + "tabs":".hesperiden .tp-tab { \\n opacity:1; \\n padding:10px;\\n box-sizing:border-box;\\n font-family: \\\\\\"Roboto\\\\\\", sans-serif;\\n border-bottom: 1px solid #e5e5e5;\\n }\\n.hesperiden .tp-tab-image \\n{ \\n width:60px;\\n height:60px; max-height:100%; max-width:100%;\\n position:relative;\\n display:inline-block;\\n float:left;\\n\\n}\\n.hesperiden .tp-tab-content \\n{\\n background:rgba(0,0,0,0); \\n position:relative;\\n padding:15px 15px 15px 85px;\\n left:0px;\\n overflow:hidden;\\n margin-top:-15px;\\n box-sizing:border-box;\\n color:#333;\\n display: inline-block;\\n width:100%;\\n height:100%;\\n position:absolute; }\\n.hesperiden .tp-tab-date\\n {\\n display:block;\\n color: #aaa;\\n font-weight:500;\\n font-size:12px;\\n margin-bottom:0px;\\n }\\n.hesperiden .tp-tab-title \\n{\\n display:block;\\t\\n text-align:left;\\n color:#333;\\n font-size:14px;\\n font-weight:500;\\n text-transform:none;\\n line-height:17px;\\n}\\n.hesperiden .tp-tab:hover,\\n.hesperiden .tp-tab.selected {\\n\\tbackground:#eee; \\n}\\n\\n.hesperiden .tp-tab-mask {\\n}\\n\\n\/* Provider: - MEDIA QUERIES *\/\\n@media only screen and (max-width: 960px) {\\n\\n}\\n@media only screen and (max-width: 768px) {\\n\\n}" + }', + 'settings' => '{"width":{"thumbs":"160","arrows":"160","bullets":"160","tabs":"250"},"height":{"thumbs":"160","arrows":"160","bullets":"160","tabs":"80"}}' + ); + + $navigations[] = array('id' => 5001,'default' => true,'name' => 'Gyges','handle' => 'navbar','markup' => '{"arrows":"","bullets":"","tabs":"
        \\n {{param1}}<\/span>\\n {{title}}<\/span>\\n<\/div>\\n
        <\/div>","thumbs":"\\n <\/span>\\n<\/span>\\n"}','css' => '{"arrows":"","bullets":".gyges.tp-bullets {\\n}\\n.gyges.tp-bullets:before {\\n\\tcontent:\\\\\\" \\\\\\";\\n\\tposition:absolute;\\n\\twidth:100%;\\n\\theight:100%;\\n\\tbackground: #777777; \/* Provider: - Old browsers *\/\\n background: -moz-linear-gradient(top, #777777 0%, #666666 100%); \\n background: -webkit-gradient(linear, left top, left bottom, \\n color-stop(0%,#777777), color-stop(100%,#666666)); \\n background: -webkit-linear-gradient(top, #777777 0%,#666666 100%); \\n background: -o-linear-gradient(top, #777777 0%,#666666 100%); \\n background: -ms-linear-gradient(top, #777777 0%,#666666 100%); \\n background: linear-gradient(to bottom, #777777 0%,#666666 100%); \\n filter: progid:DXImageTransform.Microsoft.gradient( startColorstr=\\\\\\"#777777\\\\\\", \\n endColorstr=\\\\\\"#666666\\\\\\",GradientType=0 ); \\n\\tpadding:10px;\\n\\tmargin-left:-10px;margin-top:-10px;\\n\\tbox-sizing:content-box;\\n border-radius:10px;\\n}\\n.gyges .tp-bullet {\\n\\twidth:12px;\\n\\theight:12px;\\n\\tposition:absolute;\\n\\tbackground:#333;\\n\\tborder:3px solid #444;\\n\\tborder-radius:50%;\\n\\tcursor: pointer;\\n\\tbox-sizing:content-box;\\n}\\n.gyges .tp-bullet:hover,\\n.gyges .tp-bullet.selected {\\n\\tbackground: #ffffff; \/* Provider: - Old browsers *\/\\n background: -moz-linear-gradient(top, #ffffff 0%, #e1e1e1 100%); \/* Provider: - FF3.6+ *\/\\n background: -webkit-gradient(linear, left top, left bottom, \\n color-stop(0%,#ffffff), color-stop(100%,#e1e1e1)); \/* Provider: - Chrome,Safari4+ *\/\\n background: -webkit-linear-gradient(top, #ffffff 0%,#e1e1e1 100%); \/* Provider: - Chrome10+,Safari5.1+ *\/\\n background: -o-linear-gradient(top, #ffffff 0%,#e1e1e1 100%); \/* Provider: - Opera 11.10+ *\/\\n background: -ms-linear-gradient(top, #ffffff 0%,#e1e1e1 100%); \/* Provider: - IE10+ *\/\\n background: linear-gradient(to bottom, #ffffff 0%,#e1e1e1 100%); \/* Provider: - W3C *\/\\n filter: progid:DXImageTransform.Microsoft.gradient( startColorstr=\\\\\\"#ffffff\\\\\\", \\n endColorstr=\\\\\\"#e1e1e1\\\\\\",GradientType=0 ); \/* Provider: - IE6-9 *\/\\n\\n}\\n.gyges .tp-bullet-image {\\n}\\n.gyges .tp-bullet-title {\\n}\\n\\t","tabs":".gyges .tp-tab { \\n opacity:1; \\n padding:10px;\\n box-sizing:border-box;\\n font-family: \\\\\\"Roboto\\\\\\", sans-serif;\\n border-bottom: 1px solid rgba(255,255,255,0.15);\\n }\\n.gyges .tp-tab-image \\n{ \\n width:60px;\\n height:60px; max-height:100%; max-width:100%;\\n position:relative;\\n display:inline-block;\\n float:left;\\n\\n}\\n.gyges .tp-tab-content \\n{\\n background:rgba(0,0,0,0); \\n position:relative;\\n padding:15px 15px 15px 85px;\\n left:0px;\\n overflow:hidden;\\n margin-top:-15px;\\n box-sizing:border-box;\\n color:#333;\\n display: inline-block;\\n width:100%;\\n height:100%;\\n position:absolute; }\\n.gyges .tp-tab-date\\n {\\n display:block;\\n color: rgba(255,255,255,0.25);\\n font-weight:500;\\n font-size:12px;\\n margin-bottom:0px;\\n }\\n.gyges .tp-tab-title \\n{\\n display:block; \\n text-align:left;\\n color:#fff;\\n font-size:14px;\\n font-weight:500;\\n text-transform:none;\\n line-height:17px;\\n}\\n.gyges .tp-tab:hover,\\n.gyges .tp-tab.selected {\\n background:rgba(0,0,0,0.5); \\n}\\n\\n.gyges .tp-tab-mask {\\n}\\n\\n\/* Provider: - MEDIA QUERIES *\/\\n@media only screen and (max-width: 960px) {\\n\\n}\\n@media only screen and (max-width: 768px) {\\n\\n}","thumbs":".gyges .tp-thumb { \\n opacity:1\\n }\\n.gyges .tp-thumb-img-wrap {\\n padding:3px;\\n background:#000;\\n background-color:rgba(0,0,0,0.25);\\n display:inline-block;\\n\\n width:100%;\\n height:100%;\\n position:relative;\\n margin:0px;\\n box-sizing:border-box;\\n transition:all 0.3s;\\n -webkit-transition:all 0.3s;\\n}\\n.gyges .tp-thumb-image {\\n padding:3px; \\n display:block;\\n box-sizing:border-box;\\n position:relative;\\n -webkit-box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25);\\n -moz-box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25);\\n box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25);\\n } \\n.gyges .tp-thumb-title { \\n position:absolute; \\n bottom:100%; \\n display:inline-block;\\n left:50%;\\n background:rgba(255,255,255,0.8);\\n padding:10px 30px;\\n border-radius:4px;\\n\\t -webkit-border-radius:4px;\\n margin-bottom:20px;\\n opacity:0;\\n transition:all 0.3s;\\n -webkit-transition:all 0.3s;\\n transform: translateZ(0.001px) translateX(-50%) translateY(14px);\\n transform-origin:50% 100%;\\n -webkit-transform: translateZ(0.001px) translateX(-50%) translateY(14px);\\n -webkit-transform-origin:50% 100%;\\n white-space:nowrap;\\n }\\n.gyges .tp-thumb:hover .tp-thumb-title {\\n \\t transform:rotateX(0deg) translateX(-50%);\\n -webkit-transform:rotateX(0deg) translateX(-50%);\\n opacity:1;\\n}\\n\\n.gyges .tp-thumb:hover .tp-thumb-img-wrap,\\n .gyges .tp-thumb.selected .tp-thumb-img-wrap {\\n\\n background: rgba(255,255,255,1);\\n background: -moz-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%);\\n background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(255,255,255,1)), color-stop(100%, rgba(119,119,119,1)));\\n background: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%);\\n background: -o-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%);\\n background: -ms-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%);\\n background: linear-gradient(to bottom, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%);\\n filter: progid:DXImageTransform.Microsoft.gradient( startColorstr=\\\\\\"#ffffff\\\\\\", endColorstr=\\\\\\"#777777\\\\\\", GradientType=0 );\\n }\\n.gyges .tp-thumb-title:after {\\n content:\\\\\\" \\\\\\";\\n position:absolute;\\n left:50%;\\n margin-left:-8px;\\n width: 0;\\n\\t\\theight: 0;\\n\\t\\tborder-style: solid;\\n\\t\\tborder-width: 8px 8px 0 8px;\\n\\t\\tborder-color: rgba(255,255,255,0.8) transparent transparent transparent;\\n bottom:-8px;\\n }\\n"}','settings' => '{"width":{"thumbs":"70","arrows":"160","bullets":"160","tabs":"300"},"height":{"thumbs":"70","arrows":"160","bullets":"160","tabs":"80"}}'); + $navigations[] = array( + 'id' => 5002, + 'default' => true, + 'name' => 'Hades', + 'handle' => 'preview1', + 'markup' => '{ + "arrows":"
        \\n\\t
        <\/div>\\n<\/div>", + "bullets":"<\/span>", + "tabs":"
        \\n {{param1}}<\/span>\\n {{param2}}<\/span>\\n {{param3}}<\/span>\\n<\/div>", + "thumbs":"\\n <\/span>\\n<\/span>\\n" + }', + 'css' => '{ + "arrows":".hades.tparrows {\\n\\tcursor:pointer;\\n\\tbackground:#000;\\n\\tbackground:rgba(0,0,0,0.15);\\n\\twidth:100px;\\n\\theight:100px;\\n\\tposition:absolute;\\n\\tdisplay:block;\\n\\tz-index:100;\\n}\\n\\n.hades.tparrows:before {\\n\\tfont-family: \\\\\\"revicons\\\\\\";\\n\\tfont-size:30px;\\n\\tcolor:#fff;\\n\\tdisplay:block;\\n\\tline-height: 100px;\\n\\ttext-align: center;\\n transition: background 0.3s, color 0.3s;\\n}\\n.hades.tparrows.tp-leftarrow:before {\\n\\tcontent: \\\\\\"\\\\\\\e824\\\\\\";\\n}\\n.hades.tparrows.tp-rightarrow:before {\\n\\tcontent: \\\\\\"\\\\\\\e825\\\\\\";\\n}\\n\\n.hades.tparrows:hover:before {\\n color:#aaa;\\n background:#fff;\\n background:rgba(255,255,255,1);\\n }\\n.hades .tp-arr-allwrapper {\\n position:absolute;\\n left:100%;\\n top:0px;\\n background:#888; \\n width:100px;height:100px;\\n -webkit-transition: all 0.3s;\\n transition: all 0.3s;\\n -ms-filter: \\\\\\"progid:dximagetransform.microsoft.alpha(opacity=0)\\\\\\";\\n filter: alpha(opacity=0);\\n -moz-opacity: 0.0;\\n -khtml-opacity: 0.0;\\n opacity: 0.0;\\n -webkit-transform: rotatey(-90deg);\\n transform: rotatey(-90deg);\\n -webkit-transform-origin: 0% 50%;\\n transform-origin: 0% 50%;\\n}\\n.hades.tp-rightarrow .tp-arr-allwrapper {\\n left:auto;\\n right:100%;\\n -webkit-transform-origin: 100% 50%;\\n transform-origin: 100% 50%;\\n -webkit-transform: rotatey(90deg);\\n transform: rotatey(90deg);\\n}\\n\\n.hades:hover .tp-arr-allwrapper {\\n -ms-filter: \\\\\\"progid:dximagetransform.microsoft.alpha(opacity=100)\\\\\\";\\n filter: alpha(opacity=100);\\n -moz-opacity: 1;\\n -khtml-opacity: 1;\\n opacity: 1; \\n -webkit-transform: rotatey(0deg);\\n transform: rotatey(0deg);\\n\\n }\\n \\n.hades .tp-arr-iwrapper {\\n}\\n.hades .tp-arr-imgholder {\\n background-size:cover;\\n position:absolute;\\n top:0px;left:0px;\\n width:100%;height:100%;\\n}\\n.hades .tp-arr-titleholder {\\n}\\n.hades .tp-arr-subtitleholder {\\n}\\n", + "bullets":".hades.tp-bullets {\\n}\\n.hades.tp-bullets:before {\\n\\tcontent:\\\\\\" \\\\\\";\\n\\tposition:absolute;\\n\\twidth:100%;\\n\\theight:100%;\\n\\tbackground:transparent;\\n\\tpadding:10px;\\n\\tmargin-left:-10px;margin-top:-10px;\\n\\tbox-sizing:content-box;\\n}\\n.hades .tp-bullet {\\n\\twidth:3px;\\n\\theight:3px;\\n\\tposition:absolute;\\n\\tbackground:#888;\\t\\n\\tcursor: pointer;\\n border:5px solid #fff;\\n\\tbox-sizing:content-box;\\n box-shadow:0px 0px 3px 1px rgba(0,0,0,0.2);\\n -webkit-perspective:400;\\n perspective:400;\\n -webkit-transform:translatez(0.01px);\\n transform:translatez(0.01px);\\n}\\n.hades .tp-bullet:hover,\\n.hades .tp-bullet.selected {\\n\\tbackground:#555;\\n \\n}\\n\\n.hades .tp-bullet-image {\\n position:absolute;top:-80px; left:-60px;width:120px;height:60px;\\n background-position:center center;\\n background-size:cover;\\n visibility:hidden;\\n opacity:0;\\n transition:all 0.3s;\\n -webkit-transform-style:flat;\\n transform-style:flat;\\n perspective:600;\\n -webkit-perspective:600;\\n transform: rotatex(-90deg);\\n -webkit-transform: rotatex(-90deg);\\n box-shadow:0px 0px 3px 1px rgba(0,0,0,0.2);\\n transform-origin:50% 100%;\\n -webkit-transform-origin:50% 100%;\\n \\n \\n}\\n.hades .tp-bullet:hover .tp-bullet-image {\\n display:block;\\n opacity:1;\\n transform: rotatex(0deg);\\n -webkit-transform: rotatex(0deg);\\n visibility:visible;\\n }\\n.hades .tp-bullet-title {\\n}\\n", + "tabs":".hades .tp-tab {\\n opacity:1;\\n }\\n \\n.hades .tp-tab-title\\n {\\n display:block;\\n color:#333;\\n font-weight:600;\\n font-size:18px;\\n text-align:center;\\n line-height:25px; \\n } \\n.hades .tp-tab-price\\n {\\n\\tdisplay:block;\\n text-align:center;\\n color:#999;\\n font-size:16px;\\n margin-top:10px;\\n line-height:20px\\n}\\n\\n.hades .tp-tab-button {\\n display:inline-block;\\n margin-top:15px;\\n text-align:center;\\n\\tpadding:5px 15px;\\n \\tcolor:#fff;\\n \\tfont-size:14px;\\n \\tbackground:#219bd7;\\n \\tborder-radius:4px;\\n font-weight:400;\\n}\\n.hades .tp-tab-inner {\\n\\ttext-align:center;\\n}\\n\\n ", + "thumbs":".hades .tp-thumb { \\n opacity:1\\n }\\n.hades .tp-thumb-img-wrap {\\n border-radius:50%;\\n padding:3px;\\n display:inline-block;\\nbackground:#000;\\n background-color:rgba(0,0,0,0.25);\\n width:100%;\\n height:100%;\\n position:relative;\\n margin:0px;\\n box-sizing:border-box;\\n transition:all 0.3s;\\n -webkit-transition:all 0.3s;\\n}\\n.hades .tp-thumb-image {\\n padding:3px; \\n border-radius:50%;\\n display:block;\\n box-sizing:border-box;\\n position:relative;\\n -webkit-box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25);\\n -moz-box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25);\\n box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25);\\n } \\n\\n\\n.hades .tp-thumb:hover .tp-thumb-img-wrap,\\n.hades .tp-thumb.selected .tp-thumb-img-wrap {\\n \\n background: rgba(255,255,255,1);\\n background: -moz-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%);\\n background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(255,255,255,1)), color-stop(100%, rgba(119,119,119,1)));\\n background: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%);\\n background: -o-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%);\\n background: -ms-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%);\\n background: linear-gradient(to bottom, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%);\\n filter: progid:DXImageTransform.Microsoft.gradient( startColorstr=\\\\\\"#ffffff\\\\\\", endColorstr=\\\\\\"#777777\\\\\\", GradientType=0 );\\n \\n }\\n.hades .tp-thumb-title:after {\\n content:\\\\\\" \\\\\\";\\n position:absolute;\\n left:50%;\\n margin-left:-8px;\\n width: 0;\\n\\t\\theight: 0;\\n\\t\\tborder-style: solid;\\n\\t\\tborder-width: 8px 8px 0 8px;\\n\\t\\tborder-color: rgba(0,0,0,0.75) transparent transparent transparent;\\n bottom:-8px;\\n }\\n" + }', + 'settings' => '{"width":{"thumbs":"70","arrows":"160","bullets":"160","tabs":"160"},"height":{"thumbs":"70","arrows":"160","bullets":"160","tabs":"160"}}' + ); + $navigations[] = array( + 'id' => 5003, + 'default' => true, + 'name' => 'Ares', + 'handle' => 'preview2', + 'markup' => '{ + "arrows":"
        \\n\\t{{title}}<\\/span>\\n <\\/div>\\n", + "bullets":"{{title}}<\\/span>", + "tabs":"
        \\n {{param1}}<\/span>\\n {{param2}}<\/span>\\n<\/div>\\n
        <\/div>" + }', + 'css' => '{ + "arrows":".ares.tparrows {\\n\\tcursor:pointer;\\n\\tbackground:#fff;\\n\\tmin-width:60px;\\n min-height:60px;\\n\\tposition:absolute;\\n\\tdisplay:block;\\n\\tz-index:100;\\n border-radius:50%;\\n}\\n.ares.tparrows:hover {\\n}\\n.ares.tparrows:before {\\n\\tfont-family: \\\\\\"revicons\\\\\\";\\n\\tfont-size:25px;\\n\\tcolor:#aaa;\\n\\tdisplay:block;\\n\\tline-height: 60px;\\n\\ttext-align: center;\\n -webkit-transition: color 0.3s;\\n -moz-transition: color 0.3s;\\n transition: color 0.3s;\\n z-index:2;\\n position:relative;\\n}\\n.ares.tparrows.tp-leftarrow:before {\\n\\tcontent: \\\\\\"\\\\\\\\e81f\\\\\\";\\n}\\n.ares.tparrows.tp-rightarrow:before {\\n\\tcontent: \\\\\\"\\\\\\\\e81e\\\\\\";\\n}\\n.ares.tparrows:hover:before {\\n color:#000;\\n }\\n.tp-title-wrap { \\n position:absolute;\\n z-index:1;\\n display:inline-block;\\n background:#fff;\\n min-height:60px;\\n line-height:60px;\\n top:0px;\\n margin-left:30px;\\n border-radius:0px 30px 30px 0px;\\n overflow:hidden;\\n -webkit-transition: -webkit-transform 0.3s;\\n transition: transform 0.3s;\\n transform:scaleX(0); \\n -webkit-transform:scaleX(0); \\n transform-origin:0% 50%; \\n -webkit-transform-origin:0% 50%;\\n}\\n .ares.tp-rightarrow .tp-title-wrap { \\n right:0px;\\n margin-right:30px;margin-left:0px;\\n -webkit-transform-origin:100% 50%;\\nborder-radius:30px 0px 0px 30px;\\n }\\n.ares.tparrows:hover .tp-title-wrap {\\n\\ttransform:scaleX(1) scaleY(1);\\n \\t-webkit-transform:scaleX(1) scaleY(1);\\n}\\n.ares .tp-arr-titleholder {\\n position:relative;\\n -webkit-transition: -webkit-transform 0.3s;\\n transition: transform 0.3s;\\n transform:translateX(200px); \\n text-transform:uppercase;\\n color:#000;\\n font-weight:400;\\n font-size:14px;\\n line-height:60px;\\n white-space:nowrap;\\n padding:0px 20px;\\n margin-left:10px;\\n opacity:0;\\n}\\n\\n.ares.tp-rightarrow .tp-arr-titleholder {\\n transform:translateX(-200px); \\n margin-left:0px; margin-right:10px;\\n }\\n\\n.ares.tparrows:hover .tp-arr-titleholder {\\n transform:translateX(0px);\\n -webkit-transform:translateX(0px);\\n transition-delay: 0.1s;\\n opacity:1;\\n}", + "bullets":".ares.tp-bullets {\\n}\\n.ares.tp-bullets:before {\\n\\tcontent:\\\\\\" \\\\\\";\\n\\tposition:absolute;\\n\\twidth:100%;\\n\\theight:100%;\\n\\tbackground:transparent;\\n\\tpadding:10px;\\n\\tmargin-left:-10px;margin-top:-10px;\\n\\tbox-sizing:content-box;\\n}\\n.ares .tp-bullet {\\n\\twidth:13px;\\n\\theight:13px;\\n\\tposition:absolute;\\n\\tbackground:#e5e5e5;\\n\\tborder-radius:50%;\\n\\tcursor: pointer;\\n\\tbox-sizing:content-box;\\n}\\n.ares .tp-bullet:hover,\\n.ares .tp-bullet.selected {\\n\\tbackground:#fff;\\n}\\n.ares .tp-bullet-title {\\n position:absolute;\\n color:#888;\\n font-size:12px;\\n padding:0px 10px;\\n font-weight:600;\\n right:27px;\\n top:-4px;\\n background:#fff;\\n background:rgba(255,255,255,0.75);\\n visibility:hidden;\\n transform:translateX(-20px);\\n -webkit-transform:translateX(-20px);\\n transition:transform 0.3s;\\n -webkit-transition:transform 0.3s;\\n line-height:20px;\\n white-space:nowrap;\\n} \\n\\n.ares .tp-bullet-title:after {\\n width: 0px;\\n\\theight: 0px;\\n\\tborder-style: solid;\\n\\tborder-width: 10px 0 10px 10px;\\n\\tborder-color: transparent transparent transparent rgba(255,255,255,0.75);\\n\\tcontent:\\\\\\" \\\\\\";\\n position:absolute;\\n right:-10px;\\n\\ttop:0px;\\n}\\n \\n.ares .tp-bullet:hover .tp-bullet-title{\\n visibility:visible;\\n transform:translateX(0px);\\n -webkit-transform:translateX(0px);\\n}\\n\\n.ares .tp-bullet.selected:hover .tp-bullet-title {\\n background:#fff;\\n }\\n.ares .tp-bullet.selected:hover .tp-bullet-title:after {\\n border-color:transparent transparent transparent #fff;\\n}\\n.ares.tp-bullets:hover .tp-bullet-title {\\n visibility:hidden;\\n}\\n.ares.tp-bullets:hover .tp-bullet:hover .tp-bullet-title {\\n visibility:visible;\\n }", + "tabs":".ares .tp-tab { \\n opacity:1; \\n padding:10px;\\n box-sizing:border-box;\\n font-family: \\\\\\"Roboto\\\\\\", sans-serif;\\n border-bottom: 1px solid #e5e5e5;\\n }\\n.ares .tp-tab-image \\n{ \\n width:60px;\\n height:60px; max-height:100%; max-width:100%;\\n position:relative;\\n display:inline-block;\\n float:left;\\n\\n}\\n.ares .tp-tab-content \\n{\\n background:rgba(0,0,0,0); \\n position:relative;\\n padding:15px 15px 15px 85px;\\n left:0px;\\n overflow:hidden;\\n margin-top:-15px;\\n box-sizing:border-box;\\n color:#333;\\n display: inline-block;\\n width:100%;\\n height:100%;\\n position:absolute; }\\n.ares .tp-tab-date\\n {\\n display:block;\\n color: #aaa;\\n font-weight:500;\\n font-size:12px;\\n margin-bottom:0px;\\n }\\n.ares .tp-tab-title \\n{\\n display:block;\\t\\n text-align:left;\\n color:#333;\\n font-size:14px;\\n font-weight:500;\\n text-transform:none;\\n line-height:17px;\\n}\\n.ares .tp-tab:hover,\\n.ares .tp-tab.selected {\\n\\tbackground:#eee; \\n}\\n\\n.ares .tp-tab-mask {\\n}\\n\\n\/* Provider: - MEDIA QUERIES *\/\\n@media only screen and (max-width: 960px) {\\n\\n}\\n@media only screen and (max-width: 768px) {\\n\\n}" + }', + 'settings' => '{"width":{"tabs":"250"},"height":{"tabs":"80"}}' + ); + $navigations[] = array( + 'id' => 5004, + 'default' => true, + 'name' => 'Hebe', + 'handle' => 'preview3', + 'markup' => '{ + "arrows":"
        \\n\\t{{title}}<\\/span>\\n <\\/span>\\n <\\/div>\\n", + "bullets":"<\\/span>", + "tabs":"
        {{param1}}<\/div>\\n
        {{title}}<\/div>" + }', + 'css' => '{ + "arrows":".hebe.tparrows {\\n cursor:pointer;\\n background:#fff;\\n min-width:70px;\\n min-height:70px;\\n position:absolute;\\n display:block;\\n z-index:100;\\n}\\n.hebe.tparrows:hover {\\n}\\n.hebe.tparrows:before {\\n font-family: \\\\\\"revicons\\\\\\";\\n font-size:30px;\\n color:#aaa;\\n display:block;\\n line-height: 70px;\\n text-align: center;\\n -webkit-transition: color 0.3s;\\n -moz-transition: color 0.3s;\\n transition: color 0.3s;\\n z-index:2;\\n position:relative;\\n background:#fff;\\n min-width:70px;\\n min-height:70px;\\n}\\n.hebe.tparrows.tp-leftarrow:before {\\n content: \\\\\\"\\\\\\\\e824\\\\\\";\\n}\\n.hebe.tparrows.tp-rightarrow:before {\\n content: \\\\\\"\\\\\\\\e825\\\\\\";\\n}\\n.hebe.tparrows:hover:before {\\n color:#000;\\n }\\n.tp-title-wrap { \\n position:absolute;\\n z-index:0;\\n display:inline-block;\\n background:#000;\\n background:rgba(0,0,0,0.75);\\n min-height:60px;\\n line-height:60px;\\n top:-10px;\\n margin-left:0px;\\n -webkit-transition: -webkit-transform 0.3s;\\n transition: transform 0.3s;\\n transform:scaleX(0); \\n -webkit-transform:scaleX(0); \\n transform-origin:0% 50%; \\n -webkit-transform-origin:0% 50%;\\n}\\n .hebe.tp-rightarrow .tp-title-wrap { \\n right:0px;\\n -webkit-transform-origin:100% 50%;\\n }\\n.hebe.tparrows:hover .tp-title-wrap {\\n transform:scaleX(1);\\n -webkit-transform:scaleX(1);\\n}\\n.hebe .tp-arr-titleholder {\\n position:relative;\\n text-transform:uppercase;\\n color:#fff;\\n font-weight:600;\\n font-size:12px;\\n line-height:90px;\\n white-space:nowrap;\\n padding:0px 20px 0px 90px;\\n}\\n\\n.hebe.tp-rightarrow .tp-arr-titleholder {\\n margin-left:0px; \\n padding:0px 90px 0px 20px;\\n }\\n\\n.hebe.tparrows:hover .tp-arr-titleholder {\\n transform:translateX(0px);\\n -webkit-transform:translateX(0px);\\n transition-delay: 0.1s;\\n opacity:1;\\n}\\n\\n.hebe .tp-arr-imgholder{\\n width:90px;\\n height:90px;\\n position:absolute;\\n left:100%;\\n display:block;\\n background-size:cover;\\n background-position:center center;\\n \\t top:0px; right:-90px;\\n }\\n.hebe.tp-rightarrow .tp-arr-imgholder{\\n right:auto;left:-90px;\\n }", + "bullets":".hebe.tp-bullets {\\n}\\n.hebe.tp-bullets:before {\\n content:\\\\\\" \\\\\\";\\n position:absolute;\\n width:100%;\\n height:100%;\\n background:transparent;\\n padding:10px;\\n margin-left:-10px;margin-top:-10px;\\n box-sizing:content-box;\\n}\\n\\n.hebe .tp-bullet {\\n width:3px;\\n height:3px;\\n position:absolute;\\n background:#fff; \\n cursor: pointer;\\n border:5px solid #222;\\n border-radius:50%;\\n box-sizing:content-box;\\n -webkit-perspective:400;\\n perspective:400;\\n -webkit-transform:translateZ(0.01px);\\n transform:translateZ(0.01px);\\n transition:all 0.3s;\\n}\\n.hebe .tp-bullet:hover,\\n.hebe .tp-bullet.selected {\\n background:#222;\\n border-color:#fff;\\n}\\n\\n.hebe .tp-bullet-image {\\n position:absolute;\\n top:-90px; left:-40px;\\n width:70px;\\n height:70px;\\n background-position:center center;\\n background-size:cover;\\n visibility:hidden;\\n opacity:0;\\n transition:all 0.3s;\\n -webkit-transform-style:flat;\\n transform-style:flat;\\n perspective:600;\\n -webkit-perspective:600;\\n transform: scale(0);\\n -webkit-transform: scale(0);\\n transform-origin:50% 100%;\\n -webkit-transform-origin:50% 100%;\\nborder-radius:6px;\\n \\n \\n}\\n.hebe .tp-bullet:hover .tp-bullet-image {\\n display:block;\\n opacity:1;\\n transform: scale(1);\\n -webkit-transform: scale(1);\\n visibility:visible;\\n }\\n.hebe .tp-bullet-title {\\n}\\n", + "tabs":".hebe .tp-tab-title {\\n color:#a8d8ee;\\n font-size:13px;\\n font-weight:700;\\n text-transform:uppercase;\\n font-family:\\\\\\"Roboto Slab\\\\\\"\\n margin-bottom:5px;\\n}\\n\\n.hebe .tp-tab-desc {\\n\\tfont-size:18px;\\n font-weight:400;\\n color:#fff;\\n line-height:25px;\\n\\tfont-family:\\\\\\"Roboto Slab\\\\\\";\\n}\\n" + }', + 'settings' => '""'); + + $navigations[] = array('id' => 5005,'default' => true,'name' => 'Hermes','handle' => 'preview4','markup' => '{"arrows":"
        \\n\\t
        <\\/div>\\n\\t
        {{title}}<\\/div>\\t\\n<\\/div>","bullets":"","tabs":"<\\/span>\\n\\n\\t{{param1}}<\\/span>\\n\\t{{param2}}<\\/span>\\n<\\/span>"}','css' => '{"arrows":".hermes.tparrows {\\n\\tcursor:pointer;\\n\\tbackground:#000;\\n\\tbackground:rgba(0,0,0,0.5);\\n\\twidth:30px;\\n\\theight:110px;\\n\\tposition:absolute;\\n\\tdisplay:block;\\n\\tz-index:100;\\n}\\n\\n.hermes.tparrows:before {\\n\\tfont-family: \\\\\\"revicons\\\\\\";\\n\\tfont-size:15px;\\n\\tcolor:#fff;\\n\\tdisplay:block;\\n\\tline-height: 110px;\\n\\ttext-align: center;\\n transform:translateX(0px);\\n -webkit-transform:translateX(0px);\\n transition:all 0.3s;\\n -webkit-transition:all 0.3s;\\n}\\n.hermes.tparrows.tp-leftarrow:before {\\n\\tcontent: \\\\\\"\\\\\\\\e824\\\\\\";\\n}\\n.hermes.tparrows.tp-rightarrow:before {\\n\\tcontent: \\\\\\"\\\\\\\\e825\\\\\\";\\n}\\n.hermes.tparrows.tp-leftarrow:hover:before {\\n transform:translateX(-20px);\\n -webkit-transform:translateX(-20px);\\n opacity:0;\\n}\\n.hermes.tparrows.tp-rightarrow:hover:before {\\n transform:translateX(20px);\\n -webkit-transform:translateX(20px);\\n opacity:0;\\n}\\n\\n.hermes .tp-arr-allwrapper {\\n overflow:hidden;\\n position:absolute;\\n\\twidth:180px;\\n height:140px;\\n top:0px;\\n left:0px;\\n visibility:hidden;\\n -webkit-transition: -webkit-transform 0.3s 0.3s;\\n transition: transform 0.3s 0.3s;\\n -webkit-perspective: 1000px;\\n perspective: 1000px;\\n }\\n.hermes.tp-rightarrow .tp-arr-allwrapper {\\n right:0px;left:auto;\\n }\\n.hermes.tparrows:hover .tp-arr-allwrapper {\\n visibility:visible;\\n }\\n.hermes .tp-arr-imgholder {\\n width:180px;position:absolute;\\n left:0px;top:0px;height:110px;\\n transform:translateX(-180px);\\n -webkit-transform:translateX(-180px);\\n transition:all 0.3s;\\n transition-delay:0.3s;\\n}\\n.hermes.tp-rightarrow .tp-arr-imgholder{\\n transform:translateX(180px);\\n -webkit-transform:translateX(180px);\\n }\\n \\n.hermes.tparrows:hover .tp-arr-imgholder {\\n transform:translateX(0px);\\n -webkit-transform:translateX(0px); \\n}\\n.hermes .tp-arr-titleholder {\\n top:110px;\\n width:180px;\\n text-align:left; \\n display:block;\\n padding:0px 10px;\\n line-height:30px; background:#000;\\n background:rgba(0,0,0,0.75);color:#fff;\\n font-weight:600; position:absolute;\\n font-size:12px;\\n white-space:nowrap;\\n letter-spacing:1px;\\n -webkit-transition: all 0.3s;\\n transition: all 0.3s;\\n -webkit-transform: rotateX(-90deg);\\n transform: rotateX(-90deg);\\n -webkit-transform-origin: 50% 0;\\n transform-origin: 50% 0;\\n box-sizing:border-box;\\n\\n}\\n.hermes.tparrows:hover .tp-arr-titleholder {\\n -webkit-transition-delay: 0.6s;\\n transition-delay: 0.6s;\\n -webkit-transform: rotateX(0deg);\\n transform: rotateX(0deg);\\n}\\n","bullets":".hermes.tp-bullets {\\n}\\n\\n.hermes .tp-bullet {\\n overflow:hidden;\\n border-radius:50%;\\n width:16px;\\n height:16px;\\n background-color: rgba(0, 0, 0, 0);\\n box-shadow: inset 0 0 0 2px #FFF;\\n -webkit-transition: background 0.3s ease;\\n transition: background 0.3s ease;\\n position:absolute;\\n}\\n\\n.hermes .tp-bullet:hover {\\n\\t background-color: rgba(0, 0, 0, 0.2);\\n}\\n.hermes .tp-bullet:after {\\n content: \\\\\' \\\\\';\\n position: absolute;\\n bottom: 0;\\n height: 0;\\n left: 0;\\n width: 100%;\\n background-color: #FFF;\\n box-shadow: 0 0 1px #FFF;\\n -webkit-transition: height 0.3s ease;\\n transition: height 0.3s ease;\\n}\\n.hermes .tp-bullet.selected:after {\\n height:100%;\\n}\\n","tabs":".hermes .tp-tab { \\n opacity:1; \\n padding-right:10px;\\n box-sizing:border-box;\\n }\\n.hermes .tp-tab-image \\n{ \\n width:100%;\\n height:60%;\\n position:relative;\\n}\\n.hermes .tp-tab-content \\n{\\n background:rgb(54,54,54); \\n position:absolute;\\n padding:20px 20px 20px 30px;\\n box-sizing:border-box;\\n color:#fff;\\n display:block;\\n width:100%;\\n min-height:40%;\\n bottom:0px;\\n left:-10px;\\n }\\n.hermes .tp-tab-date\\n {\\n display:block;\\n color:#888;\\n font-weight:600;\\n font-size:12px;\\n margin-bottom:10px;\\n }\\n.hermes .tp-tab-title \\n{\\n display:block;\\t\\n color:#fff;\\n font-size:16px;\\n font-weight:800;\\n text-transform:uppercase;\\n line-height:19px;\\n}\\n\\n.hermes .tp-tab.selected .tp-tab-title:after {\\n width: 0px;\\n\\theight: 0px;\\n\\tborder-style: solid;\\n\\tborder-width: 30px 0 30px 10px;\\n\\tborder-color: transparent transparent transparent rgb(54,54,54);\\n\\tcontent:\\\\\\" \\\\\\";\\n position:absolute;\\n right:-9px;\\n bottom:50%;\\n margin-bottom:-30px;\\n}\\n.hermes .tp-tab-mask {\\n padding-right:10px !important;\\n }\\n\\n\\/* Provider: - MEDIA QUERIES *\\/\\n@media only screen and (max-width: 960px) {\\n .hermes .tp-tab .tp-tab-title {font-size:14px;line-height:16px;}\\n .hermes .tp-tab-date { font-size:11px; line-height:13px;margin-bottom:10px;}\\n .hermes .tp-tab-content { padding:15px 15px 15px 25px;}\\n}\\n@media only screen and (max-width: 768px) {\\n .hermes .tp-tab .tp-tab-title {font-size:12px;line-height:14px;}\\n .hermes .tp-tab-date {font-size:10px; line-height:12px;margin-bottom:5px;}\\n .hermes .tp-tab-content {padding:10px 10px 10px 20px;}\\n}"}','settings' => '{"width":{"thumbs":"160","arrows":"160","bullets":"160","tabs":"240"},"height":{"thumbs":"160","arrows":"160","bullets":"160","tabs":"260"}}'); + $navigations[] = array('id' => 5006,'default' => true,'name' => 'Custom','handle' => 'custom','markup' => '{"thumbs":"<\\/span>","arrows":"","bullets":"","tabs":"<\\/span>"}','css' => '{"thumbs":"","arrows":".custom.tparrows {\\n\\tcursor:pointer;\\n\\tbackground:#000;\\n\\tbackground:rgba(0,0,0,0.5);\\n\\twidth:40px;\\n\\theight:40px;\\n\\tposition:absolute;\\n\\tdisplay:block;\\n\\tz-index:100;\\n}\\n.custom.tparrows:hover {\\n\\tbackground:#000;\\n}\\n.custom.tparrows:before {\\n\\tfont-family: \\\\\\"revicons\\\\\\";\\n\\tfont-size:15px;\\n\\tcolor:#fff;\\n\\tdisplay:block;\\n\\tline-height: 40px;\\n\\ttext-align: center;\\n}\\n.custom.tparrows.tp-leftarrow:before {\\n\\tcontent: \\\\\\"\\\\\\\\e824\\\\\\";\\n}\\n.custom.tparrows.tp-rightarrow:before {\\n\\tcontent: \\\\\\"\\\\\\\\e825\\\\\\";\\n}\\n\\n","bullets":".custom.tp-bullets {\\n}\\n.custom.tp-bullets:before {\\n\\tcontent:\\\\\\" \\\\\\";\\n\\tposition:absolute;\\n\\twidth:100%;\\n\\theight:100%;\\n\\tbackground:transparent;\\n\\tpadding:10px;\\n\\tmargin-left:-10px;margin-top:-10px;\\n\\tbox-sizing:content-box;\\n}\\n.custom .tp-bullet {\\n\\twidth:12px;\\n\\theight:12px;\\n\\tposition:absolute;\\n\\tbackground:#aaa;\\n background:rgba(125,125,125,0.5);\\n\\tcursor: pointer;\\n\\tbox-sizing:content-box;\\n}\\n.custom .tp-bullet:hover,\\n.custom .tp-bullet.selected {\\n\\tbackground:rgb(125,125,125);\\n}\\n.custom .tp-bullet-image {\\n}\\n.custom .tp-bullet-title {\\n}\\n","tabs":""}','settings' => '""'); + $navigations[] = array('id' => 5007,'default' => true,'name' => 'Hephaistos','handle' => 'round-old','markup' => '{"arrows":"","bullets":""}','css' => '{"arrows":".hephaistos.tparrows {\\n\\tcursor:pointer;\\n\\tbackground:#000;\\n\\tbackground:rgba(0,0,0,0.5);\\n\\twidth:40px;\\n\\theight:40px;\\n\\tposition:absolute;\\n\\tdisplay:block;\\n\\tz-index:100;\\n border-radius:50%;\\n}\\n.hephaistos.tparrows:hover {\\n\\tbackground:#000;\\n}\\n.hephaistos.tparrows:before {\\n\\tfont-family: \\\\\\"revicons\\\\\\";\\n\\tfont-size:18px;\\n\\tcolor:#fff;\\n\\tdisplay:block;\\n\\tline-height: 40px;\\n\\ttext-align: center;\\n}\\n.hephaistos.tparrows.tp-leftarrow:before {\\n\\tcontent: \\\\\\"\\\\\\\\e82c\\\\\\";\\n margin-left:-2px;\\n \\n}\\n.hephaistos.tparrows.tp-rightarrow:before {\\n\\tcontent: \\\\\\"\\\\\\\\e82d\\\\\\";\\n margin-right:-2px;\\n}\\n\\n","bullets":".hephaistos.tp-bullets {\\n}\\n.hephaistos.tp-bullets:before {\\n\\tcontent:\\\\\\" \\\\\\";\\n\\tposition:absolute;\\n\\twidth:100%;\\n\\theight:100%;\\n\\tbackground:transparent;\\n\\tpadding:10px;\\n\\tmargin-left:-10px;margin-top:-10px;\\n\\tbox-sizing:content-box;\\n}\\n.hephaistos .tp-bullet {\\n\\twidth:12px;\\n\\theight:12px;\\n\\tposition:absolute;\\n\\tbackground:#999;\\n\\tborder:3px solid #f5f5f5;\\n\\tborder-radius:50%;\\n\\tcursor: pointer;\\n\\tbox-sizing:content-box;\\n box-shadow: 0px 0px 2px 1px rgba(130,130,130, 0.3);\\n\\n}\\n.hephaistos .tp-bullet:hover,\\n.hephaistos .tp-bullet.selected {\\n\\tbackground:#fff;\\n border-color:#000;\\n}\\n.hephaistos .tp-bullet-image {\\n}\\n.hephaistos .tp-bullet-title {\\n}\\n"}','settings' => '{"width":{"thumbs":"160","arrows":"160","bullets":"161","tabs":"160"},"height":{"thumbs":"160","arrows":"160","bullets":"159","tabs":"160"}}'); + $navigations[] = array('id' => 5008,'default' => true,'name' => 'Persephone','handle' => 'square-old','markup' => '{"arrows":"","bullets":""}','css' => '{"arrows":".persephone.tparrows {\\n\\tcursor:pointer;\\n\\tbackground:#aaa;\\n\\tbackground:rgba(200,200,200,0.5);\\n\\twidth:40px;\\n\\theight:40px;\\n\\tposition:absolute;\\n\\tdisplay:block;\\n\\tz-index:100;\\n border:1px solid #f5f5f5;\\n}\\n.persephone.tparrows:hover {\\n\\tbackground:#333;\\n}\\n.persephone.tparrows:before {\\n\\tfont-family: \\\\\\"revicons\\\\\\";\\n\\tfont-size:15px;\\n\\tcolor:#fff;\\n\\tdisplay:block;\\n\\tline-height: 40px;\\n\\ttext-align: center;\\n}\\n.persephone.tparrows.tp-leftarrow:before {\\n\\tcontent: \\\\\\"\\\\\\\\e824\\\\\\";\\n}\\n.persephone.tparrows.tp-rightarrow:before {\\n\\tcontent: \\\\\\"\\\\\\\\e825\\\\\\";\\n}\\n\\n","bullets":".persephone.tp-bullets {\\n}\\n.persephone.tp-bullets:before {\\n\\tcontent:\\\\\\" \\\\\\";\\n\\tposition:absolute;\\n\\twidth:100%;\\n\\theight:100%;\\n\\tbackground:#transparent;\\n\\tpadding:10px;\\n\\tmargin-left:-10px;margin-top:-10px;\\n\\tbox-sizing:content-box;\\n}\\n.persephone .tp-bullet {\\n\\twidth:12px;\\n\\theight:12px;\\n\\tposition:absolute;\\n\\tbackground:#aaa;\\n\\tborder:1px solid #e5e5e5;\\t\\n\\tcursor: pointer;\\n\\tbox-sizing:content-box;\\n}\\n.persephone .tp-bullet:hover,\\n.persephone .tp-bullet.selected {\\n\\tbackground:#222;\\n}\\n.persephone .tp-bullet-image {\\n}\\n.persephone .tp-bullet-title {\\n}\\n"}','settings' => '""'); + + $navigations[] = array( + 'id' => 5009, + 'default' => true, + 'name' => 'Erinyen', + 'handle' => 'navbar-old', + 'markup' => '{ + "arrows":"
        \\n \\t
        <\/div>\\n
        <\/div>\\n\\t{{title}}<\/span>\\n <\/div>\\n\\n", + "bullets":"", + "tabs":"
        {{title}}<\/div>\\n
        {{description}}<\/div>", + "thumbs":"<\/span>\\n<\/span>\\n{{title}}<\/span>\\n<\/span>" + }', + 'css' => '{ + "arrows":".erinyen.tparrows {\\n cursor:pointer;\\n background:#000;\\n background:rgba(0,0,0,0.5);\\n min-width:70px;\\n min-height:70px;\\n position:absolute;\\n display:block;\\n z-index:100;\\n border-radius:35px; \\n}\\n\\n.erinyen.tparrows:before {\\n font-family: \\\\\\"revicons\\\\\\";\\n font-size:20px;\\n color:#fff;\\n display:block;\\n line-height: 70px;\\n text-align: center; \\n z-index:2;\\n position:relative;\\n}\\n.erinyen.tparrows.tp-leftarrow:before {\\n content: \\\\\\"\\\\\\\e824\\\\\\";\\n}\\n.erinyen.tparrows.tp-rightarrow:before {\\n content: \\\\\\"\\\\\\\e825\\\\\\";\\n}\\n\\n.erinyen .tp-title-wrap { \\n position:absolute;\\n z-index:1;\\n display:inline-block;\\n background:#000;\\n background:rgba(0,0,0,0.5);\\n min-height:70px;\\n line-height:70px;\\n top:0px;\\n margin-left:0px;\\n border-radius:35px;\\n overflow:hidden; \\n transition: opacity 0.3s;\\n -webkit-transition:opacity 0.3s;\\n -moz-transition:opacity 0.3s;\\n -webkit-transform: scale(0);\\n -moz-transform: scale(0);\\n transform: scale(0); \\n visibility:hidden;\\n opacity:0;\\n}\\n\\n.erinyen.tparrows:hover .tp-title-wrap{\\n -webkit-transform: scale(1);\\n -moz-transform: scale(1);\\n transform: scale(1);\\n opacity:1;\\n visibility:visible;\\n}\\n \\n .erinyen.tp-rightarrow .tp-title-wrap { \\n right:0px;\\n margin-right:0px;margin-left:0px;\\n -webkit-transform-origin:100% 50%;\\n border-radius:35px;\\n padding-right:20px;\\n padding-left:10px;\\n }\\n\\n\\n.erinyen.tp-leftarrow .tp-title-wrap { \\n padding-left:20px;\\n padding-right:10px;\\n}\\n\\n.erinyen .tp-arr-titleholder {\\n letter-spacing: 3px;\\n position:relative;\\n -webkit-transition: -webkit-transform 0.3s;\\n transition: transform 0.3s;\\n transform:translateX(200px); \\n text-transform:uppercase;\\n color:#fff;\\n font-weight:600;\\n font-size:13px;\\n line-height:70px;\\n white-space:nowrap;\\n padding:0px 20px;\\n margin-left:11px;\\n opacity:0; \\n}\\n\\n.erinyen .tp-arr-imgholder {\\n width:100%;\\n height:100%;\\n position:absolute;\\n top:0px;\\n left:0px;\\n background-position:center center;\\n background-size:cover;\\n }\\n .erinyen .tp-arr-img-over {\\n width:100%;\\n height:100%;\\n position:absolute;\\n top:0px;\\n left:0px;\\n background:#000;\\n background:rgba(0,0,0,0.5);\\n }\\n.erinyen.tp-rightarrow .tp-arr-titleholder {\\n transform:translateX(-200px); \\n margin-left:0px; margin-right:11px;\\n }\\n\\n.erinyen.tparrows:hover .tp-arr-titleholder {\\n transform:translateX(0px);\\n -webkit-transform:translateX(0px);\\n transition-delay: 0.1s;\\n opacity:1;\\n}", + "bullets":".erinyen.tp-bullets {\\n}\\n.erinyen.tp-bullets:before {\\n\\tcontent:\\\\\\" \\\\\\";\\n\\tposition:absolute;\\n\\twidth:100%;\\n\\theight:100%;\\n\\tbackground: #555555; \/* Provider: - old browsers *\/\\n background: -moz-linear-gradient(top, #555555 0%, #222222 100%); \/* Provider: - ff3.6+ *\/\\n background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#555555), color-stop(100%,#222222)); \/* Provider: - chrome,safari4+ *\/\\n background: -webkit-linear-gradient(top, #555555 0%,#222222 100%); \/* Provider: - chrome10+,safari5.1+ *\/\\n background: -o-linear-gradient(top, #555555 0%,#222222 100%); \/* Provider: - opera 11.10+ *\/\\n background: -ms-linear-gradient(top, #555555 0%,#222222 100%); \/* Provider: - ie10+ *\/\\n background: linear-gradient(to bottom, #555555 0%,#222222 100%); \/* Provider: - w3c *\/\\n filter: progid:dximagetransform.microsoft.gradient( startcolorstr=\\\\\\"#555555\\\\\\", endcolorstr=\\\\\\"#222222\\\\\\",gradienttype=0 ); \/* Provider: - ie6-9 *\/\\n\\tpadding:10px 15px;\\n\\tmargin-left:-15px;margin-top:-10px;\\n\\tbox-sizing:content-box;\\n border-radius:10px;\\n box-shadow:0px 0px 2px 1px rgba(33,33,33,0.3);\\n}\\n.erinyen .tp-bullet {\\n\\twidth:13px;\\n\\theight:13px;\\n\\tposition:absolute;\\n\\tbackground:#111;\\t\\n\\tborder-radius:50%;\\n\\tcursor: pointer;\\n\\tbox-sizing:content-box;\\n}\\n.erinyen .tp-bullet:hover,\\n.erinyen .tp-bullet.selected {\\n\\tbackground: #e5e5e5; \/* Provider: - old browsers *\/\\nbackground: -moz-linear-gradient(top, #e5e5e5 0%, #999999 100%); \/* Provider: - ff3.6+ *\/\\nbackground: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#e5e5e5), color-stop(100%,#999999)); \/* Provider: - chrome,safari4+ *\/\\nbackground: -webkit-linear-gradient(top, #e5e5e5 0%,#999999 100%); \/* Provider: - chrome10+,safari5.1+ *\/\\nbackground: -o-linear-gradient(top, #e5e5e5 0%,#999999 100%); \/* Provider: - opera 11.10+ *\/\\nbackground: -ms-linear-gradient(top, #e5e5e5 0%,#999999 100%); \/* Provider: - ie10+ *\/\\nbackground: linear-gradient(to bottom, #e5e5e5 0%,#999999 100%); \/* Provider: - w3c *\/\\nfilter: progid:dximagetransform.microsoft.gradient( startcolorstr=\\\\\\"#e5e5e5\\\\\\", endcolorstr=\\\\\\"#999999\\\\\\",gradienttype=0 ); \/* Provider: - ie6-9 *\/\\n border:1px solid #555;\\n width:12px;height:12px;\\n}\\n.erinyen .tp-bullet-image {\\n}\\n.erinyen .tp-bullet-title {\\n}\\n", + "tabs":".erinyen .tp-tab-title {\\n color:#a8d8ee;\\n font-size:13px;\\n font-weight:700;\\n text-transform:uppercase;\\n font-family:\\\\\\"Roboto Slab\\\\\\"\\n margin-bottom:5px;\\n}\\n\\n.erinyen .tp-tab-desc {\\n\\tfont-size:18px;\\n font-weight:400;\\n color:#fff;\\n line-height:25px;\\n\\tfont-family:\\\\\\"Roboto Slab\\\\\\";\\n}\\n ", + "thumbs":".erinyen .tp-thumb {\\nopacity:1\\n}\\n\\n.erinyen .tp-thumb-over {\\n background:#000;\\n background:rgba(0,0,0,0.25);\\n width:100%;\\n height:100%;\\n position:absolute;\\n top:0px;\\n left:0px;\\n z-index:1;\\n -webkit-transition:all 0.3s;\\n transition:all 0.3s;\\n}\\n\\n.erinyen .tp-thumb-more:before {\\n font-family: \\\\\\"revicons\\\\\\";\\n font-size:12px;\\n color:#aaa;\\n color:rgba(255,255,255,0.75);\\n display:block;\\n line-height: 12px;\\n text-align: left; \\n z-index:2;\\n position:absolute;\\n top:20px;\\n right:20px;\\n z-index:2;\\n}\\n.erinyen .tp-thumb-more:before {\\n content: \\\\\\"\\\\\\\e825\\\\\\";\\n}\\n\\n.erinyen .tp-thumb-title {\\n font-family:\\\\\\"Raleway\\\\\\";\\n letter-spacing:1px;\\n font-size:12px;\\n color:#fff;\\n display:block;\\n line-height: 15px;\\n text-align: left; \\n z-index:2;\\n position:absolute;\\n top:0px;\\n left:0px;\\n z-index:2;\\n padding:20px 35px 20px 20px;\\n width:100%;\\n height:100%;\\n box-sizing:border-box;\\n transition:all 0.3s;\\n -webkit-transition:all 0.3s;\\n font-weight:500;\\n}\\n\\n.erinyen .tp-thumb.selected .tp-thumb-more:before,\\n.erinyen .tp-thumb:hover .tp-thumb-more:before {\\n color:#aaa;\\n\\n}\\n\\n.erinyen .tp-thumb.selected .tp-thumb-over,\\n.erinyen .tp-thumb:hover .tp-thumb-over {\\n background:#fff;\\n}\\n.erinyen .tp-thumb.selected .tp-thumb-title,\\n.erinyen .tp-thumb:hover .tp-thumb-title {\\n color:#000;\\n\\n}\\n" + }', + 'settings' => '{"width":{"thumbs":"200","arrows":"160","bullets":"160","tabs":"160"},"height":{"thumbs":"130","arrows":"160","bullets":"160","tabs":"160"}}'); + + $navigations[] = array('id' => 5010,'default' => true,'name' => 'Zeus','handle' => 'zeus','markup' => '{"bullets":"<\/span>\\n<\/span>\\n{{title}}<\/span>","arrows":"
        \\n \\t
        <\/div>\\n <\/div>\\n","thumbs":"<\/span>\\n<\/span>\\n{{title}}<\/span>\\n<\/span>","tabs":"{{title}}<\/span>"}','css' => '{"bullets":".zeus .tp-bullet {\\n box-sizing:content-box; -webkit-box-sizing:content-box; border-radius:50%;\\n background-color: rgba(0, 0, 0, 0);\\n -webkit-transition: opacity 0.3s ease;\\n transition: opacity 0.3s ease;\\n\\t width:13px;height:13px;\\n\\t border:2px solid #fff;\\n }\\n.zeus .tp-bullet:after {\\n content: \\"\\";\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n left: 0;\\n border-radius: 50%;\\n background-color: #FFF;\\n -webkit-transform: scale(0);\\n transform: scale(0);\\n -webkit-transform-origin: 50% 50%;\\n transform-origin: 50% 50%;\\n -webkit-transition: -webkit-transform 0.3s ease;\\n transition: transform 0.3s ease;\\n}\\n.zeus .tp-bullet:hover:after,\\n.zeus .tp-bullet.selected:after{\\n -webkit-transform: scale(1.2);\\n transform: scale(1.2);\\n}\\n \\n .zeus .tp-bullet-image,\\n .zeus .tp-bullet-imageoverlay{\\n width:135px;\\n height:60px;\\n position:absolute;\\n background:#000;\\n background:rgba(0,0,0,0.5);\\n bottom:25px;\\n left:50%;\\n margin-left:-65px;\\n box-sizing:border-box;\\n background-size:cover;\\n background-position:center center;\\n visibility:hidden;\\n opacity:0;\\n -webkit-backface-visibility: hidden; \\n \\tbackface-visibility: hidden;\\n -webkit-transform-origin: 50% 50%;\\n\\t\\ttransform-origin: 50% 50%;\\n \\t\\t-webkit-transition: all 0.3s ease;\\n \\t\\ttransition: all 0.3s ease;\\n border-radius:4px;\\n\\n}\\n \\n\\n.zeus .tp-bullet-title,\\n.zeus .tp-bullet-imageoverlay {\\n z-index:2;\\n -webkit-transition: all 0.5s ease;\\n\\t \\ttransition: all 0.5s ease;\\n} \\n.zeus .tp-bullet-title { \\n color:#fff;\\n text-align:center;\\n line-height:15px;\\n font-size:13px;\\n font-weight:600; \\n z-index:3;\\n visibility:hidden;\\n opacity:0;\\n -webkit-backface-visibility: hidden; \\n \\tbackface-visibility: hidden;\\n -webkit-transform-origin: 50% 50%;\\n\\t\\ttransform-origin: 50% 50%;\\n \\t\\t-webkit-transition: all 0.3s ease;\\n \\t\\ttransition: all 0.3s ease;\\n position:absolute;\\n bottom:45px;\\n width:135px;\\n \\tvertical-align:middle;\\n left:-57px;\\n}\\n \\n.zeus .tp-bullet:hover .tp-bullet-title,\\n.zeus .tp-bullet:hover .tp-bullet-image,\\n.zeus .tp-bullet:hover .tp-bullet-imageoverlay{\\n opacity:1;\\n visibility:visible;\\n\\t -webkit-transform:translateY(0px);\\n transform:translateY(0px); \\n }","arrows":".zeus.tparrows {\\n cursor:pointer;\\n min-width:70px;\\n min-height:70px;\\n position:absolute;\\n display:block;\\n z-index:100;\\n border-radius:35px; \\n overflow:hidden;\\n background:rgba(0,0,0,0.10);\\n}\\n\\n.zeus.tparrows:before {\\n font-family: \\\\\\"revicons\\\\\\";\\n font-size:20px;\\n color:#fff;\\n display:block;\\n line-height: 70px;\\n text-align: center; \\n z-index:2;\\n position:relative;\\n}\\n.zeus.tparrows.tp-leftarrow:before {\\n content: \\\\\\"\\\\\\\e824\\\\\\";\\n}\\n.zeus.tparrows.tp-rightarrow:before {\\n content: \\\\\\"\\\\\\\e825\\\\\\";\\n}\\n\\n.zeus .tp-title-wrap {\\n background:#000;\\n background:rgba(0,0,0,0.5);\\n width:100%;\\n height:100%;\\n top:0px;\\n left:0px;\\n position:absolute;\\n opacity:0;\\n transform:scale(0);\\n -webkit-transform:scale(0);\\n transition: all 0.3s;\\n -webkit-transition:all 0.3s;\\n -moz-transition:all 0.3s;\\n border-radius:50%;\\n }\\n.zeus .tp-arr-imgholder {\\n width:100%;\\n height:100%;\\n position:absolute;\\n top:0px;\\n left:0px;\\n background-position:center center;\\n background-size:cover;\\n border-radius:50%;\\n transform:translateX(-100%);\\n -webkit-transform:translateX(-100%);\\n transition: all 0.3s;\\n -webkit-transition:all 0.3s;\\n -moz-transition:all 0.3s;\\n\\n }\\n.zeus.tp-rightarrow .tp-arr-imgholder {\\n transform:translateX(100%);\\n -webkit-transform:translateX(100%);\\n }\\n.zeus.tparrows:hover .tp-arr-imgholder {\\n transform:translateX(0);\\n -webkit-transform:translateX(0);\\n opacity:1;\\n}\\n \\n.zeus.tparrows:hover .tp-title-wrap {\\n transform:scale(1);\\n -webkit-transform:scale(1);\\n opacity:1;\\n}\\n ","thumbs":".zeus .tp-thumb {\\nopacity:1\\n}\\n\\n.zeus .tp-thumb-over {\\n background:#000;\\n background:rgba(0,0,0,0.25);\\n width:100%;\\n height:100%;\\n position:absolute;\\n top:0px;\\n left:0px;\\n z-index:1;\\n -webkit-transition:all 0.3s;\\n transition:all 0.3s;\\n}\\n\\n.zeus .tp-thumb-more:before {\\n font-family: \\\\\\"revicons\\\\\\";\\n font-size:12px;\\n color:#aaa;\\n color:rgba(255,255,255,0.75);\\n display:block;\\n line-height: 12px;\\n text-align: left; \\n z-index:2;\\n position:absolute;\\n top:20px;\\n right:20px;\\n z-index:2;\\n}\\n.zeus .tp-thumb-more:before {\\n content: \\\\\\"\\\\\\\e825\\\\\\";\\n}\\n\\n.zeus .tp-thumb-title {\\n font-family:\\\\\\"Raleway\\\\\\";\\n letter-spacing:1px;\\n font-size:12px;\\n color:#fff;\\n display:block;\\n line-height: 15px;\\n text-align: left; \\n z-index:2;\\n position:absolute;\\n top:0px;\\n left:0px;\\n z-index:2;\\n padding:20px 35px 20px 20px;\\n width:100%;\\n height:100%;\\n box-sizing:border-box;\\n transition:all 0.3s;\\n -webkit-transition:all 0.3s;\\n font-weight:500;\\n}\\n\\n.zeus .tp-thumb.selected .tp-thumb-more:before,\\n.zeus .tp-thumb:hover .tp-thumb-more:before {\\n color:#aaa;\\n\\n}\\n\\n.zeus .tp-thumb.selected .tp-thumb-over,\\n.zeus .tp-thumb:hover .tp-thumb-over {\\n background:#000;\\n}\\n.zeus .tp-thumb.selected .tp-thumb-title,\\n.zeus .tp-thumb:hover .tp-thumb-title {\\n color:#fff;\\n\\n}\\n","tabs":".zeus .tp-tab { \\n opacity:1; \\n box-sizing:border-box;\\n}\\n\\n.zeus .tp-tab-title { \\ndisplay: block;\\ntext-align: center;\\nbackground: rgba(0,0,0,0.25);\\nfont-family: \\\\\\"Roboto Slab\\\\\\", serif; \\nfont-weight: 700; \\nfont-size: 13px; \\nline-height: 13px;\\ncolor: #fff; \\npadding: 9px 10px; }\\n\\n.zeus .tp-tab:hover .tp-tab-title,\\n.zeus .tp-tab.selected .tp-tab-title {\\n color: #000;\\n background:rgba(255,255,255,1); \\n}"}','settings' => '{"width":{"thumbs":"200","arrows":"160","bullets":"160","tabs":"160"},"height":{"thumbs":"130","arrows":"160","bullets":"160","tabs":"31"}}'); + $navigations[] = array('id' => 5011,'default' => true,'name' => 'Metis','handle' => 'metis','markup' => '{"bullets":"\\n <\/span>\\n<\/span>\\n{{title}}<\/span>","arrows":""}','css' => '{"bullets":".metis .tp-bullet { \\n opacity:1;\\n width:50px;\\n height:50px; \\n padding:3px;\\n background:#000;\\n background-color:rgba(0,0,0,0.25);\\n margin:0px;\\n box-sizing:border-box;\\n transition:all 0.3s;\\n -webkit-transition:all 0.3s;\\n border-radius:50%;\\n }\\n\\n.metis .tp-bullet-image {\\n\\n border-radius:50%;\\n display:block;\\n box-sizing:border-box;\\n position:relative;\\n -webkit-box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25);\\n -moz-box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25);\\n box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25);\\n width:44px;\\n height:44px;\\n background-size:cover;\\n background-position:center center;\\n } \\n.metis .tp-bullet-title { \\n position:absolute; \\n\t bottom:65px;\\n display:inline-block;\\n left:50%;\\n background:#000;\\n background:rgba(0,0,0,0.75);\\n color:#fff;\\n padding:10px 30px;\\n border-radius:4px;\\n\t -webkit-border-radius:4px;\\n opacity:0;\\n transition:all 0.3s;\\n -webkit-transition:all 0.3s;\\n transform: translateZ(0.001px) translateX(-50%) translateY(14px);\\n transform-origin:50% 100%;\\n -webkit-transform: translateZ(0.001px) translateX(-50%) translateY(14px);\\n -webkit-transform-origin:50% 100%;\\n opacity:0;\\n white-space:nowrap;\\n }\\n\\n.metis .tp-bullet:hover .tp-bullet-title {\\n \t transform:rotateX(0deg) translateX(-50%);\\n -webkit-transform:rotateX(0deg) translateX(-50%);\\n opacity:1;\\n}\\n\\n.metis .tp-bullet.selected,\\n.metis .tp-bullet:hover {\\n \\n background: rgba(255,255,255,1);\\n background: -moz-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%);\\n background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(255,255,255,1)), color-stop(100%, rgba(119,119,119,1)));\\n background: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%);\\n background: -o-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%);\\n background: -ms-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%);\\n background: linear-gradient(to bottom, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%);\\n filter: progid:DXImageTransform.Microsoft.gradient( startColorstr=\\\\\\"#ffffff\\\\\\", endColorstr=\\\\\\"#777777\\\\\\", GradientType=0 );\\n \\n }\\n.metis .tp-bullet-title:after {\\n content:\\\\\\" \\\\\\";\\n position:absolute;\\n left:50%;\\n margin-left:-8px;\\n width: 0;\\n\t\theight: 0;\\n\t\tborder-style: solid;\\n\t\tborder-width: 8px 8px 0 8px;\\n\t\tborder-color: rgba(0,0,0,0.75) transparent transparent transparent;\\n bottom:-8px;\\n }\\n","arrows":".metis.tparrows {\\n background:#fff;\\n padding:10px;\\n transition:all 0.3s;\\n -webkit-transition:all 0.3s;\\n width:60px;\\n height:60px;\\n box-sizing:border-box;\\n }\\n \\n .metis.tparrows:hover {\\n background:#fff;\\n background:rgba(255,255,255,0.75);\\n }\\n \\n .metis.tparrows:before {\\n color:#000; \\n transition:all 0.3s;\\n -webkit-transition:all 0.3s;\\n }\\n \\n .metis.tparrows:hover:before {\\n transform:scale(1.5);\\n }\\n "}','settings' => '{"width":{"thumbs":"200","arrows":"160","bullets":"160","tabs":"160"},"height":{"thumbs":"130","arrows":"160","bullets":"160","tabs":"31"}}'); + $navigations[] = array('id' => 5012,'default' => true,'name' => 'Dione','handle' => 'dione','markup' => '{"bullets":"\\n <\/span>\\n<\/span>\\n{{title}}<\/span>","arrows":"
        \\n
        <\/div>\\n<\/div>"}','css' => '{"bullets":".dione .tp-bullet { \\n opacity:1;\\n width:50px;\\n height:50px; \\n padding:3px;\\n background:#000;\\n background-color:rgba(0,0,0,0.25);\\n margin:0px;\\n box-sizing:border-box;\\n transition:all 0.3s;\\n -webkit-transition:all 0.3s;\\n\\n }\\n\\n.dione .tp-bullet-image {\\n display:block;\\n box-sizing:border-box;\\n position:relative;\\n -webkit-box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25);\\n -moz-box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25);\\n box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25);\\n width:44px;\\n height:44px;\\n background-size:cover;\\n background-position:center center;\\n } \\n.dione .tp-bullet-title { \\n position:absolute; \\n bottom:65px;\\n display:inline-block;\\n left:50%;\\n background:#000;\\n background:rgba(0,0,0,0.75);\\n color:#fff;\\n padding:10px 30px;\\n border-radius:4px;\\n -webkit-border-radius:4px;\\n opacity:0;\\n transition:all 0.3s;\\n -webkit-transition:all 0.3s;\\n transform: translateZ(0.001px) translateX(-50%) translateY(14px);\\n transform-origin:50% 100%;\\n -webkit-transform: translateZ(0.001px) translateX(-50%) translateY(14px);\\n -webkit-transform-origin:50% 100%;\\n opacity:0;\\n white-space:nowrap;\\n }\\n\\n.dione .tp-bullet:hover .tp-bullet-title {\\n transform:rotateX(0deg) translateX(-50%);\\n -webkit-transform:rotateX(0deg) translateX(-50%);\\n opacity:1;\\n}\\n\\n.dione .tp-bullet.selected,\\n.dione .tp-bullet:hover {\\n \\n background: rgba(255,255,255,1);\\n background: -moz-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%);\\n background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(255,255,255,1)), color-stop(100%, rgba(119,119,119,1)));\\n background: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%);\\n background: -o-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%);\\n background: -ms-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%);\\n background: linear-gradient(to bottom, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%);\\n filter: progid:DXImageTransform.Microsoft.gradient( startColorstr=\\\\\\"#ffffff\\\\\\", endColorstr=\\\\\\"#777777\\\\\\", GradientType=0 );\\n \\n }\\n.dione .tp-bullet-title:after {\\n content:\\\\\\" \\\\\\";\\n position:absolute;\\n left:50%;\\n margin-left:-8px;\\n width: 0;\\n height: 0;\\n border-style: solid;\\n border-width: 8px 8px 0 8px;\\n border-color: rgba(0,0,0,0.75) transparent transparent transparent;\\n bottom:-8px;\\n }\\n","arrows":".dione.tparrows {\\n height:100%;\\n width:100px;\\n background:transparent;\\n background:rgba(0,0,0,0);\\n line-height:100%;\\n transition:all 0.3s;\\n-webkit-transition:all 0.3s;\\n}\\n\\n.dione.tparrows:hover {\\n background:rgba(0,0,0,0.45);\\n }\\n.dione .tp-arr-imgwrapper {\\n width:100px;\\n left:0px;\\n position:absolute;\\n height:100%;\\n top:0px;\\n overflow:hidden;\\n }\\n.dione.tp-rightarrow .tp-arr-imgwrapper {\\nleft:auto;\\nright:0px;\\n}\\n\\n.dione .tp-arr-imgholder {\\nbackground-position:center center;\\nbackground-size:cover;\\nwidth:100px;\\nheight:100%;\\ntop:0px;\\nvisibility:hidden;\\ntransform:translateX(-50px);\\n-webkit-transform:translateX(-50px);\\ntransition:all 0.3s;\\n-webkit-transition:all 0.3s;\\nopacity:0;\\nleft:0px;\\n}\\n\\n.dione.tparrows.tp-rightarrow .tp-arr-imgholder {\\n right:0px;\\n left:auto;\\n transform:translateX(50px);\\n -webkit-transform:translateX(50px);\\n}\\n\\n.dione.tparrows:before {\\nposition:absolute;\\nline-height:30px;\\nmargin-left:-22px;\\ntop:50%;\\nleft:50%;\\nfont-size:30px;\\nmargin-top:-15px;\\ntransition:all 0.3s;\\n-webkit-transition:all 0.3s;\\n}\\n\\n.dione.tparrows.tp-rightarrow:before {\\nmargin-left:6px;\\n}\\n\\n.dione.tparrows:hover:before {\\n transform:translateX(-20px);\\n-webkit-transform:translateX(-20px);\\nopacity:0;\\n}\\n\\n.dione.tparrows.tp-rightarrow:hover:before {\\n transform:translateX(20px);\\n-webkit-transform:translateX(20px);\\n}\\n\\n.dione.tparrows:hover .tp-arr-imgholder {\\n transform:translateX(0px);\\n-webkit-transform:translateX(0px);\\nopacity:1;\\nvisibility:visible;\\n}\\n\\n"}','settings' => '{"width":{"thumbs":"200","arrows":"160","bullets":"160","tabs":"160"},"height":{"thumbs":"130","arrows":"160","bullets":"160","tabs":"31"}}'); + $navigations[] = array('id' => 5013,'default' => true,'name' => 'Uranus','handle' => 'uranus','markup' => '{"arrows":"","bullets":"<\/span>"}','css' => '{"arrows":".uranus.tparrows {\\n width:50px;\\n height:50px;\\n background:transparent;\\n }\\n .uranus.tparrows:before {\\n width:50px;\\n height:50px;\\n line-height:50px;\\n font-size:40px;\\n transition:all 0.3s;\\n-webkit-transition:all 0.3s;\\n }\\n \\n .uranus.tparrows:hover:before {\\n opacity:0.75;\\n }","bullets":".uranus .tp-bullet{\\n\\tborder-radius: 50%;\\n box-shadow: 0 0 0 2px rgba(255, 255, 255, 0);\\n -webkit-transition: box-shadow 0.3s ease;\\n transition: box-shadow 0.3s ease;\\n background:transparent;\\n}\\n.uranus .tp-bullet.selected,\\n.uranus .tp-bullet:hover {\\n box-shadow: 0 0 0 2px #FFF;\\n border:none;\\n border-radius: 50%;\\n\\n background:transparent;\\n}\\n\\n\\n\\n.uranus .tp-bullet-inner {\\n background-color: rgba(255, 255, 255, 0.7);\\n -webkit-transition: background-color 0.3s ease, -webkit-transform 0.3s ease;\\n transition: background-color 0.3s ease, transform 0.3s ease;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n outline: none;\\n border-radius: 50%;\\n background-color: #FFF;\\n background-color: rgba(255, 255, 255, 0.3);\\n text-indent: -999em;\\n cursor: pointer;\\n position: absolute;\\n}\\n\\n.uranus .tp-bullet.selected .tp-bullet-inner,\\n.uranus .tp-bullet:hover .tp-bullet-inner{\\n transform: scale(0.4);\\n -webkit-transform: scale(0.4);\\n background-color:#fff;\\n}"}','settings' => '{"width":{"thumbs":"200","arrows":"160","bullets":"160","tabs":"160"},"height":{"thumbs":"130","arrows":"160","bullets":"160","tabs":"31"}}'); + + return apply_filters('revslider_mod_default_navigations', $navigations); + } + + + /* Provider: - * + * Translate Navigation for backwards compatibility + * @since: 5.0 + **/ + public static function translate_navigation($handle){ + switch($handle){ + case 'round': + $handle = 'hesperiden'; + break; + case 'navbar': + $handle = 'gyges'; + break; + case 'preview1': + $handle = 'hades'; + break; + case 'preview2': + $handle = 'ares'; + break; + case 'preview3': + $handle = 'hebe'; + break; + case 'preview4': + $handle = 'hermes'; + break; + case 'custom': + $handle = 'custom'; + break; + case 'round-old': + $handle = 'hephaistos'; + break; + case 'square-old': + $handle = 'persephone'; + break; + case 'navbar-old': + $handle = 'erinyen'; + break; + } + + return $handle; + } +} + +?> \ No newline at end of file diff --git a/plugins/revslider/includes/operations.class.php b/plugins/revslider/includes/operations.class.php new file mode 100644 index 0000000..4177db4 --- /dev/null +++ b/plugins/revslider/includes/operations.class.php @@ -0,0 +1,6368 @@ + + * @link http://www.themepunch.com/ + * @copyright 2015 ThemePunch + */ + +if( !defined( 'ABSPATH') ) exit(); + +class RevSliderOperations extends RevSliderElementsBase{ + + + /* Provider: - * + * get button classes + */ + public function getButtonClasses(){ + + $arrButtons = array( + "red"=>"Red Button", + "green"=>"Green Button", + "blue"=>"Blue Button", + "orange"=>"Orange Button", + "darkgrey"=>"Darkgrey Button", + "lightgrey"=>"Lightgrey Button", + ); + + return($arrButtons); + } + + + /* Provider: - * + * get easing functions array + */ + public function getArrEasing(){ //true + + $arrEasing = array( + "Linear.easeNone" => "Linear.easeNone", + "Power0.easeIn" => "Power0.easeIn (linear)", + "Power0.easeInOut" => "Power0.easeInOut (linear)", + "Power0.easeOut" => "Power0.easeOut (linear)", + "Power1.easeIn" => "Power1.easeIn", + "Power1.easeInOut" => "Power1.easeInOut", + "Power1.easeOut" => "Power1.easeOut", + "Power2.easeIn" => "Power2.easeIn", + "Power2.easeInOut" => "Power2.easeInOut", + "Power2.easeOut" => "Power2.easeOut", + "Power3.easeIn" => "Power3.easeIn", + "Power3.easeInOut" => "Power3.easeInOut", + "Power3.easeOut" => "Power3.easeOut", + "Power4.easeIn" => "Power4.easeIn", + "Power4.easeInOut" => "Power4.easeInOut", + "Power4.easeOut" => "Power4.easeOut", + "Quad.easeIn" => "Quad.easeIn (same as Power1.easeIn)", + "Quad.easeInOut" => "Quad.easeInOut (same as Power1.easeInOut)", + "Quad.easeOut" => "Quad.easeOut (same as Power1.easeOut)", + "Cubic.easeIn" => "Cubic.easeIn (same as Power2.easeIn)", + "Cubic.easeInOut" => "Cubic.easeInOut (same as Power2.easeInOut)", + "Cubic.easeOut" => "Cubic.easeOut (same as Power2.easeOut)", + "Quart.easeIn" => "Quart.easeIn (same as Power3.easeIn)", + "Quart.easeInOut" => "Quart.easeInOut (same as Power3.easeInOut)", + "Quart.easeOut" => "Quart.easeOut (same as Power3.easeOut)", + "Quint.easeIn" => "Quint.easeIn (same as Power4.easeIn)", + "Quint.easeInOut" => "Quint.easeInOut (same as Power4.easeInOut)", + "Quint.easeOut" => "Quint.easeOut (same as Power4.easeOut)", + "Strong.easeIn" => "Strong.easeIn (same as Power4.easeIn)", + "Strong.easeInOut" => "Strong.easeInOut (same as Power4.easeInOut)", + "Strong.easeOut" => "Strong.easeOut (same as Power4.easeOut)", + "Back.easeIn" => "Back.easeIn", + "Back.easeInOut" => "Back.easeInOut", + "Back.easeOut" => "Back.easeOut", + "Bounce.easeIn" => "Bounce.easeIn", + "Bounce.easeInOut" => "Bounce.easeInOut", + "Bounce.easeOut" => "Bounce.easeOut", + "Circ.easeIn" => "Circ.easeIn", + "Circ.easeInOut" => "Circ.easeInOut", + "Circ.easeOut" => "Circ.easeOut", + "Elastic.easeIn" => "Elastic.easeIn", + "Elastic.easeInOut" => "Elastic.easeInOut", + "Elastic.easeOut" => "Elastic.easeOut", + "Expo.easeIn" => "Expo.easeIn", + "Expo.easeInOut" => "Expo.easeInOut", + "Expo.easeOut" => "Expo.easeOut", + "Sine.easeIn" => "Sine.easeIn", + "Sine.easeInOut" => "Sine.easeInOut", + "Sine.easeOut" => "Sine.easeOut", + "SlowMo.ease" => "SlowMo.ease", + //add old easings //From here on display none + "easeOutBack" => "easeOutBack", + "easeInQuad" => "easeInQuad", + "easeOutQuad" => "easeOutQuad", + "easeInOutQuad" => "easeInOutQuad", + "easeInCubic" => "easeInCubic", + "easeOutCubic" => "easeOutCubic", + "easeInOutCubic" => "easeInOutCubic", + "easeInQuart" => "easeInQuart", + "easeOutQuart" => "easeOutQuart", + "easeInOutQuart" => "easeInOutQuart", + "easeInQuint" => "easeInQuint", + "easeOutQuint" => "easeOutQuint", + "easeInOutQuint" => "easeInOutQuint", + "easeInSine" => "easeInSine", + "easeOutSine" => "easeOutSine", + "easeInOutSine" => "easeInOutSine", + "easeInExpo" => "easeInExpo", + "easeOutExpo" => "easeOutExpo", + "easeInOutExpo" => "easeInOutExpo", + "easeInCirc" => "easeInCirc", + "easeOutCirc" => "easeOutCirc", + "easeInOutCirc" => "easeInOutCirc", + "easeInElastic" => "easeInElastic", + "easeOutElastic" => "easeOutElastic", + "easeInOutElastic" => "easeInOutElastic", + "easeInBack" => "easeInBack", + "easeInOutBack" => "easeInOutBack", + "easeInBounce" => "easeInBounce", + "easeOutBounce" => "easeOutBounce", + "easeInOutBounce" => "easeInOutBounce", + "Quad.easeIn" => "Quad.easeIn (same as Power1.easeIn)", + "Quad.easeInOut" => "Quad.easeInOut (same as Power1.easeInOut)", + "Quad.easeOut" => "Quad.easeOut (same as Power1.easeOut)", + "Cubic.easeIn" => "Cubic.easeIn (same as Power2.easeIn)", + "Cubic.easeInOut" => "Cubic.easeInOut (same as Power2.easeInOut)", + "Cubic.easeOut" => "Cubic.easeOut (same as Power2.easeOut)", + "Quart.easeIn" => "Quart.easeIn (same as Power3.easeIn)", + "Quart.easeInOut" => "Quart.easeInOut (same as Power3.easeInOut)", + "Quart.easeOut" => "Quart.easeOut (same as Power3.easeOut)", + "Quint.easeIn" => "Quint.easeIn (same as Power4.easeIn)", + "Quint.easeInOut" => "Quint.easeInOut (same as Power4.easeInOut)", + "Quint.easeOut" => "Quint.easeOut (same as Power4.easeOut)", + "Strong.easeIn" => "Strong.easeIn (same as Power4.easeIn)", + "Strong.easeInOut" => "Strong.easeInOut (same as Power4.easeInOut)", + "Strong.easeOut" => "Strong.easeOut (same as Power4.easeOut)" + ); + + return($arrEasing); + } + + + /* Provider: - * + * get easing functions array + */ + public function getArrSplit(){ //true + + $arrSplit = array( + "none" => "No Split", + "chars" => "Char Based", + "words" => "Word Based", + "lines" => "Line Based" + ); + + return($arrSplit); + } + + /* Provider: - * + * get arr end easing + */ + public function getArrEndEasing(){ + $arrEasing = $this->getArrEasing(); + $arrEasing = array_merge(array("nothing" => "No Change"),$arrEasing); + + return($arrEasing); + } + + /* Provider: - * + * get transition array + */ + public function getArrTransition(){ + + $arrTransition = array( + "notselectable1"=>"BASICS", + "notransition"=>"No Transition", + "fade"=>"Fade", + + "notselectable2"=>"SLIDE SIMPLE", + "slideup"=>"Slide To Top", + "slidedown"=>"Slide To Bottom", + "slideright"=>"Slide To Right", + "slideleft"=>"Slide To Left", + "slidehorizontal"=>"Slide Horizontal (Next/Previous)", + "slidevertical"=>"Slide Vertical (Next/Previous)", + + "notselectable21"=>"SLIDE OVER", + "slideoverup"=>"Slide Over To Top", + "slideoverdown"=>"Slide Over To Bottom", + "slideoverright"=>"Slide Over To Right", + "slideoverleft"=>"Slide Over To Left", + "slideoverhorizontal"=>"Slide Over Horizontal (Next/Previous)", + "slideoververtical"=>"Slide Over Vertical (Next/Previous)", + + "notselectable22"=>"SLOTS AND BOXES", + "boxslide"=>"Slide Boxes", + "slotslide-horizontal"=>"Slide Slots Horizontal", + "slotslide-vertical"=>"Slide Slots Vertical", + "boxfade"=>"Fade Boxes", + "slotfade-horizontal"=>"Fade Slots Horizontal", + "slotfade-vertical"=>"Fade Slots Vertical", + + "notselectable31"=>"FADE & SLIDE", + "fadefromright"=>"Fade and Slide from Right", + "fadefromleft"=>"Fade and Slide from Left", + "fadefromtop"=>"Fade and Slide from Top", + "fadefrombottom"=>"Fade and Slide from Bottom", + "fadetoleftfadefromright"=>"To Left From Right", + "fadetorightfadefromleft"=>"To Right From Left", + "fadetotopfadefrombottom"=>"To Top From Bottom", + "fadetobottomfadefromtop"=>"To Bottom From Top", + + "notselectable4"=>"PARALLAX", + "parallaxtoright"=>"Parallax to Right", + "parallaxtoleft"=>"Parallax to Left", + "parallaxtotop"=>"Parallax to Top", + "parallaxtobottom"=>"Parallax to Bottom", + "parallaxhorizontal"=>"Parallax Horizontal", + "parallaxvertical"=>"Parallax Vertical", + + "notselectable5"=>"ZOOM TRANSITIONS", + "scaledownfromright"=>"Zoom Out and Fade From Right", + "scaledownfromleft"=>"Zoom Out and Fade From Left", + "scaledownfromtop"=>"Zoom Out and Fade From Top", + "scaledownfrombottom"=>"Zoom Out and Fade From Bottom", + "zoomout"=>"ZoomOut", + "zoomin"=>"ZoomIn", + "slotzoom-horizontal"=>"Zoom Slots Horizontal", + "slotzoom-vertical"=>"Zoom Slots Vertical", + + "notselectable6"=>"CURTAIN TRANSITIONS", + "curtain-1"=>"Curtain from Left", + "curtain-2"=>"Curtain from Right", + "curtain-3"=>"Curtain from Middle", + + "notselectable7"=>"PREMIUM TRANSITIONS", + "3dcurtain-horizontal"=>"3D Curtain Horizontal", + "3dcurtain-vertical"=>"3D Curtain Vertical", + "cube"=>"Cube Vertical", + "cube-horizontal"=>"Cube Horizontal", + "incube"=>"In Cube Vertical", + "incube-horizontal"=>"In Cube Horizontal", + "turnoff"=>"TurnOff Horizontal", + "turnoff-vertical"=>"TurnOff Vertical", + "papercut"=>"Paper Cut", + "flyin"=>"Fly In", + + "notselectable1a"=>"RANDOM", + "random-selected"=>"Random of Selected", + "random-static"=>"Random Flat", + "random-premium"=>"Random Premium", + "random"=>"Random Flat and Premium" + ); + + return($arrTransition); + } + + + /* Provider: - * + * get animations array + */ + public static function getArrAnimations($all = true){ + $arrAnimations = array( + + ); + + $arrAnimations['custom'] = array('handle' => __('## Custom Animation ##', REVSLIDER_TEXTDOMAIN)); + $arrAnimations['v5s'] = array('handle' => '-----------------------------------'); + $arrAnimations['v5'] = array('handle' => __('- VERSION 5.0 ANIMATIONS -', REVSLIDER_TEXTDOMAIN)); + $arrAnimations['v5e'] = array('handle' => '-----------------------------------'); + + $arrAnimations['LettersFlyInFromBottom'] = array('handle' => 'LettersFlyInFromBottom','params' => '{"movex":"inherit","movey":"[100%]","movez":"0","rotationx":"inherit","rotationy":"inherit","rotationz":"-35deg","scalex":"1","scaley":"1","skewx":"0","skewy":"0","captionopacity":"inherit","mask":"true","mask_x":"0px","mask_y":"0px","easing":"Power4.easeInOut","speed":"2000","split":"chars","splitdelay":"5"}', 'settings' => array('version' => '5.0')); + $arrAnimations['LettersFlyInFromLeft'] = array('handle' => 'LettersFlyInFromLeft','params' => '{"movex":"[-105%]","movey":"inherit","movez":"0","rotationx":"0deg","rotationy":"0deg","rotationz":"-90deg","scalex":"1","scaley":"1","skewx":"0","skewy":"0","captionopacity":"inherit","mask":"true","mask_x":"0px","mask_y":"0px","easing":"Power4.easeInOut","speed":"2000","split":"chars","splitdelay":"10"}', 'settings' => array('version' => '5.0')); + $arrAnimations['LettersFlyInFromRight'] = array('handle' => 'LettersFlyInFromRight','params' => '{"movex":"[105%]","movey":"inherit","movez":"0","rotationx":"45deg","rotationy":"0deg","rotationz":"90deg","scalex":"1","scaley":"1","skewx":"0","skewy":"0","captionopacity":"inherit","mask":"true","mask_x":"0px","mask_y":"0px","easing":"Power4.easeInOut","speed":"2000","split":"chars","splitdelay":"5"}', 'settings' => array('version' => '5.0')); + $arrAnimations['LettersFlyInFromTop'] = array('handle' => 'LettersFlyInFromTop','params' => '{"movex":"inherit","movey":"[-100%]","movez":"0","rotationx":"inherit","rotationy":"inherit","rotationz":"35deg","scalex":"1","scaley":"1","skewx":"0","skewy":"0","captionopacity":"inherit","mask":"true","mask_x":"0px","mask_y":"0px","easing":"Power4.easeInOut","speed":"2000","split":"chars","splitdelay":"5"}', 'settings' => array('version' => '5.0')); + $arrAnimations['MaskedZoomOut'] = array('handle' => 'MaskedZoomOut','params' => '{"movex":"inherit","movey":"inherit","movez":"0","rotationx":"0deg","rotationy":"0","rotationz":"0","scalex":"2","scaley":"2","skewx":"0","skewy":"0","captionopacity":"0","mask":"true","mask_x":"0px","mask_y":"0px","easing":"Power2.easeOut","speed":"1000","split":"none","splitdelay":"10"}', 'settings' => array('version' => '5.0')); + $arrAnimations['PopUpSmooth'] = array('handle' => 'PopUpSmooth','params' => '{"movex":"inherit","movey":"inherit","movez":"0","rotationx":"0","rotationy":"0","rotationz":"0","scalex":"0.9","scaley":"0.9","skewx":"0","skewy":"0","captionopacity":"0","mask":"false","mask_x":"0px","mask_y":"top","easing":"Power3.easeInOut","speed":"1500","split":"none","splitdelay":"10"}', 'settings' => array('version' => '5.0')); + $arrAnimations['RotateInFromBottom'] = array('handle' => 'RotateInFromBottom','params' => '{"movex":"inherit","movey":"bottom","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"90deg","scalex":"2","scaley":"2","skewx":"inherit","skewy":"inherit","captionopacity":"inherit","mask":"false","mask_x":"0","mask_y":"0","easing":"Power3.easeInOut","speed":"1500","split":"none","splitdelay":"10"}', 'settings' => array('version' => '5.0')); + $arrAnimations['RotateInFormZero'] = array('handle' => 'RotateInFormZero','params' => '{"movex":"inherit","movey":"bottom","movez":"inherit","rotationx":"-20deg","rotationy":"-20deg","rotationz":"0deg","scalex":"inherit","scaley":"inherit","skewx":"inherit","skewy":"inherit","captionopacity":"inherit","mask":"false","mask_x":"0","mask_y":"0","easing":"Power3.easeOut","speed":"1500","split":"none","splitdelay":"10"}', 'settings' => array('version' => '5.0')); + $arrAnimations['SlideMaskFromBottom'] = array('handle' => 'SlideMaskFromBottom','params' => '{"movex":"inherit","movey":"[100%]","movez":"0","rotationx":"0deg","rotationy":"0","rotationz":"0","scalex":"1","scaley":"1","skewx":"0","skewy":"0","captionopacity":"0","mask":"true","mask_x":"0px","mask_y":"[100%]","easing":"Power2.easeInOut","speed":"2000","split":"none","splitdelay":"5"}', 'settings' => array('version' => '5.0')); + $arrAnimations['SlideMaskFromLeft'] = array('handle' => 'SlideMaskFromLeft','params' => '{"movex":"[-100%]","movey":"inherit","movez":"0","rotationx":"0deg","rotationy":"0","rotationz":"0","scalex":"1","scaley":"1","skewx":"0","skewy":"0","captionopacity":"inherit","mask":"true","mask_x":"0px","mask_y":"0px","easing":"Power3.easeInOut","speed":"1500","split":"none","splitdelay":"10"}', 'settings' => array('version' => '5.0')); + $arrAnimations['SlideMaskFromRight'] = array('handle' => 'SlideMaskFromRight','params' => '{"movex":"[100%]","movey":"inherit","movez":"0","rotationx":"0deg","rotationy":"0","rotationz":"0","scalex":"1","scaley":"1","skewx":"0","skewy":"0","captionopacity":"inherit","mask":"true","mask_x":"0px","mask_y":"0px","easing":"Power3.easeInOut","speed":"1500","split":"none","splitdelay":"10"}', 'settings' => array('version' => '5.0')); + $arrAnimations['SlideMaskFromTop'] = array('handle' => 'SlideMaskFromTop','params' => '{"movex":"inherit","movey":"[-100%]","movez":"0","rotationx":"0deg","rotationy":"0","rotationz":"0","scalex":"1","scaley":"1","skewx":"0","skewy":"0","captionopacity":"inherit","mask":"true","mask_x":"0px","mask_y":"0px","easing":"Power3.easeInOut","speed":"1500","split":"none","splitdelay":"10"}', 'settings' => array('version' => '5.0')); + $arrAnimations['SmoothPopUp_One'] = array('handle' => 'SmoothPopUp_One','params' => '{"movex":"inherit","movey":"inherit","movez":"0","rotationx":"0","rotationy":"0","rotationz":"0","scalex":"0.8","scaley":"0.8","skewx":"0","skewy":"0","captionopacity":"0","mask":"false","mask_x":"0px","mask_y":"top","easing":"Power4.easeOut","speed":"1500","split":"none","splitdelay":"10"}', 'settings' => array('version' => '5.0')); + $arrAnimations['SmoothPopUp_Two'] = array('handle' => 'SmoothPopUp_Two','params' => '{"movex":"inherit","movey":"inherit","movez":"0","rotationx":"0","rotationy":"0","rotationz":"0","scalex":"0.9","scaley":"0.9","skewx":"0","skewy":"0","captionopacity":"0","mask":"false","mask_x":"0px","mask_y":"top","easing":"Power2.easeOut","speed":"1000","split":"none","splitdelay":"10"}', 'settings' => array('version' => '5.0')); + $arrAnimations['SmoothMaskFromRight'] = array('handle' => 'SmoothMaskFromRight','params' => '{"movex":"[-175%]","movey":"0px","movez":"0","rotationx":"0","rotationy":"0","rotationz":"0","scalex":"1","scaley":"1","skewx":"0","skewy":"0","captionopacity":"1","mask":"true","mask_x":"[100%]","mask_y":"0","easing":"Power3.easeOut","speed":"1500","split":"none","splitdelay":"10"}', 'settings' => array('version' => '5.0')); + $arrAnimations['SmoothMaskFromLeft'] = array('handle' => 'SmoothMaskFromLeft','params' => '{"movex":"[175%]","movey":"0px","movez":"0","rotationx":"0","rotationy":"0","rotationz":"0","scalex":"1","scaley":"1","skewx":"0","skewy":"0","captionopacity":"1","mask":"true","mask_x":"[-100%]","mask_y":"0","easing":"Power3.easeOut","speed":"1500","split":"none","splitdelay":"10"}', 'settings' => array('version' => '5.0')); + $arrAnimations['SmoothSlideFromBottom'] = array('handle' => 'SmoothSlideFromBottom','params' => '{"movex":"inherit","movey":"[100%]","movez":"0","rotationx":"0deg","rotationy":"0","rotationz":"0","scalex":"1","scaley":"1","skewx":"0","skewy":"0","captionopacity":"0","mask":"false","mask_x":"0px","mask_y":"[100%]","easing":"Power4.easeInOut","speed":"2000","split":"none","splitdelay":"5"}', 'settings' => array('version' => '5.0')); + + $arrAnimations['v4s'] = array('handle' => '-----------------------------------'); + $arrAnimations['v4'] = array('handle' => __('- VERSION 4.0 ANIMATIONS -', REVSLIDER_TEXTDOMAIN)); + $arrAnimations['v4e'] = array('handle' => '-----------------------------------'); + $arrAnimations['noanim'] = array('handle' => 'No-Animation','params' => '{"movex":"inherit","movey":"inherit","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"inherit","skewy":"inherit","captionopacity":"inherit","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"500"}', 'settings' => array('version' => '5.0')); + $arrAnimations['tp-fade'] = array('handle' => 'Fade-In','params' => '{"movex":"inherit","movey":"inherit","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"inherit","skewy":"inherit","captionopacity":"0","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"0"}', 'settings' => array('version' => '5.0')); + $arrAnimations['sft'] = array('handle' => 'Short-from-Top','params' => '{"movex":"inherit","movey":"-50px","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"inherit","skewy":"inherit","captionopacity":"0","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"500"}', 'settings' => array('version' => '5.0')); + $arrAnimations['sfb'] = array('handle' => 'Short-from-Bottom','params' => '{"movex":"inherit","movey":"50px","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"inherit","skewy":"inherit","captionopacity":"0","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"500"}', 'settings' => array('version' => '5.0')); + $arrAnimations['sfl'] = array('handle' => 'Short-From-Left','params' => '{"movex":"-50px","movey":"inherit","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"inherit","skewy":"inherit","captionopacity":"0","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"500"}', 'settings' => array('version' => '5.0')); + $arrAnimations['sfr'] = array('handle' => 'Short-From-Right','params' => '{"movex":"50px","movey":"inherit","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"inherit","skewy":"inherit","captionopacity":"0","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"500"}', 'settings' => array('version' => '5.0')); + $arrAnimations['lfr'] = array('handle' => 'Long-From-Right','params' => '{"movex":"right","movey":"inherit","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"inherit","skewy":"inherit","captionopacity":"inherit","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"500"}', 'settings' => array('version' => '5.0')); + $arrAnimations['lfl'] = array('handle' => 'Long-From-Left','params' => '{"movex":"left","movey":"inherit","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"inherit","skewy":"inherit","captionopacity":"inherit","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"500"}', 'settings' => array('version' => '5.0')); + $arrAnimations['lft'] = array('handle' => 'Long-From-Top','params' => '{"movex":"inherit","movey":"top","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"inherit","skewy":"inherit","captionopacity":"inherit","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"500"}', 'settings' => array('version' => '5.0')); + $arrAnimations['lfb'] = array('handle' => 'Long-From-Bottom','params' => '{"movex":"inherit","movey":"bottom","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"inherit","skewy":"inherit","captionopacity":"inherit","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"500"}', 'settings' => array('version' => '5.0')); + $arrAnimations['skewfromleft'] = array('handle' => 'Skew-From-Long-Left','params' => '{"movex":"left","movey":"inherit","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"45px","skewy":"inherit","captionopacity":"inherit","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"500"}', 'settings' => array('version' => '5.0')); + $arrAnimations['skewfromright'] = array('handle' => 'Skew-From-Long-Right','params' => '{"movex":"right","movey":"inherit","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"-85px","skewy":"inherit","captionopacity":"inherit","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"500"}', 'settings' => array('version' => '5.0')); + $arrAnimations['skewfromleftshort'] = array('handle' => 'Skew-From-Short-Left','params' => '{"movex":"-200px","movey":"inherit","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"85px","skewy":"inherit","captionopacity":"0","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"500"}', 'settings' => array('version' => '5.0')); + $arrAnimations['skewfromrightshort'] = array('handle' => 'Skew-From-Short-Right','params' => '{"movex":"200px","movey":"inherit","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"-85px","skewy":"inherit","captionopacity":"0","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"500"}', 'settings' => array('version' => '5.0')); + $arrAnimations['randomrotate'] = array('handle' => 'Random-Rotate-and-Scale','params' => '{"movex":"{-250,250}","movey":"{-150,150}","movez":"inherit","rotationx":"{-90,90}","rotationy":"{-90,90}","rotationz":"{-360,360}","scalex":"{0,1}","scaley":"{0,1}","skewx":"inherit","skewy":"inherit","captionopacity":"0","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"500"}', 'settings' => array('version' => '5.0')); + + + if($all){ + $arrAnimations['vss'] = array('handle' => '--------------------------------------'); + $arrAnimations['vs'] = array('handle' => __('- SAVED CUSTOM ANIMATIONS -', REVSLIDER_TEXTDOMAIN)); + $arrAnimations['vse'] = array('handle' => '--------------------------------------'); + + //$custom = RevSliderOperations::getCustomAnimations('customin'); + $custom = RevSliderOperations::getCustomAnimationsFullPre('customin'); + + $arrAnimations = array_merge($arrAnimations, $custom); + } + + foreach($arrAnimations as $key => $value){ + if(!isset($value['params'])) continue; + + $t = json_decode(str_replace("'", '"', $value['params']), true); + if(!empty($t)) + $arrAnimations[$key]['params'] = $t; + } + + return($arrAnimations); + } + + /* Provider: - * + * get "end" animations array + */ + public static function getArrEndAnimations($all = true){ + $arrAnimations = array(); + $arrAnimations['custom'] = array('handle' => __('## Custom Animation ##', REVSLIDER_TEXTDOMAIN)); + $arrAnimations['auto'] = array('handle' => __('Automatic Reverse', REVSLIDER_TEXTDOMAIN)); + $arrAnimations['v5s'] = array('handle' => '-----------------------------------'); + $arrAnimations['v5'] = array('handle' => __('- VERSION 5.0 ANIMATIONS -', REVSLIDER_TEXTDOMAIN)); + $arrAnimations['v5e'] = array('handle' => '-----------------------------------'); + + $arrAnimations['BounceOut'] = array('handle' => 'BounceOut','params' => '{"movex":"inherit","movey":"inherit","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"0deg","scalex":"0.7","scaley":"0.7","skewx":"inherit","skewy":"inherit","captionopacity":"0","mask":"true","mask_x":"0","mask_y":"0","easing":"Back.easeIn","speed":"500","split":"none","splitdelay":"10"}', 'settings' => array('version' => '5.0')); + $arrAnimations['Fade-Out-Long'] = array('handle' => 'Fade-Out-Long','params' => '{"movex":"inherit","movey":"inherit","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"inherit","skewy":"inherit","captionopacity":"0","mask":"false","mask_x":"0","mask_y":"0","easing":"Power2.easeIn","speed":"1000","split":"none","splitdelay":"10"}', 'settings' => array('version' => '5.0')); + $arrAnimations['SlideMaskToBottom'] = array('handle' => 'SlideMaskToBottom','params' => '{"movex":"inherit","movey":"[100%]","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"inherit","skewy":"inherit","captionopacity":"inherit","mask":"true","mask_x":"inherit","mask_y":"inherit","easing":"nothing","speed":"300","split":"none","splitdelay":"10"}', 'settings' => array('version' => '5.0')); + $arrAnimations['SlideMaskToLeft'] = array('handle' => 'SlideMaskToLeft','params' => '{"movex":"[-100%]","movey":"inherit","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"inherit","skewy":"inherit","captionopacity":"inherit","mask":"true","mask_x":"inherit","mask_y":"inherit","easing":"Power3.easeInOut","speed":"1000","split":"none","splitdelay":"10"}', 'settings' => array('version' => '5.0')); + $arrAnimations['SlideMaskToRight'] = array('handle' => 'SlideMaskToRight','params' => '{"movex":"[100%]","movey":"inherit","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"inherit","skewy":"inherit","captionopacity":"inherit","mask":"true","mask_x":"inherit","mask_y":"inherit","easing":"Power3.easeInOut","speed":"1000","split":"none","splitdelay":"10"}', 'settings' => array('version' => '5.0')); + $arrAnimations['SlideMaskToTop'] = array('handle' => 'SlideMaskToTop','params' => '{"movex":"inherit","movey":"[-100%]","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"inherit","skewy":"inherit","captionopacity":"inherit","mask":"true","mask_x":"inherit","mask_y":"inherit","easing":"nothing","speed":"300","split":"none","splitdelay":"10"}', 'settings' => array('version' => '5.0')); + $arrAnimations['SlurpOut'] = array('handle' => 'SlurpOut','params' => '{"movex":"inherit","movey":"[100%]","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"0deg","scalex":"0.7","scaley":"0.7","skewx":"inherit","skewy":"inherit","captionopacity":"inherit","mask":"true","mask_x":"0","mask_y":"0","easing":"Power3.easeInOut","speed":"1000","split":"none","splitdelay":"10"}', 'settings' => array('version' => '5.0')); + $arrAnimations['SmoothCropToBottom'] = array('handle' => 'SmoothCropToBottom','params' => '{"movex":"inherit","movey":"[175%]","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"inherit","skewy":"inherit","captionopacity":"inherit","mask":"true","mask_x":"inherit","mask_y":"inherit","easing":"Power2.easeInOut","speed":"1000","split":"none","splitdelay":"10"}', 'settings' => array('version' => '5.0')); + + $arrAnimations['v4s'] = array('handle' => '-----------------------------------'); + $arrAnimations['v4'] = array('handle' => __('- VERSION 4.0 ANIMATIONS -', REVSLIDER_TEXTDOMAIN)); + $arrAnimations['v4e'] = array('handle' => '-----------------------------------'); + $arrAnimations['noanimout'] = array('handle' => 'No-Out-Animation','params' => '{"movex":"inherit","movey":"inherit","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"inherit","skewy":"inherit","captionopacity":"inherit","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"500"}', 'settings' => array('version' => '5.0')); + $arrAnimations['fadeout'] = array('handle' => 'Fade-Out','params' => '{"movex":"inherit","movey":"inherit","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"inherit","skewy":"inherit","captionopacity":"0","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"0"}', 'settings' => array('version' => '5.0')); + $arrAnimations['stt'] = array('handle' => 'Short-To-Top','params' => '{"movex":"inherit","movey":"-50px","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"inherit","skewy":"inherit","captionopacity":"0","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"500"}', 'settings' => array('version' => '5.0')); + $arrAnimations['stb'] = array('handle' => 'Short-To-Bottom','params' => '{"movex":"inherit","movey":"50px","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"inherit","skewy":"inherit","captionopacity":"0","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"500"}', 'settings' => array('version' => '5.0')); + $arrAnimations['stl'] = array('handle' => 'Short-To-Left','params' => '{"movex":"-50px","movey":"inherit","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"inherit","skewy":"inherit","captionopacity":"0","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"500"}', 'settings' => array('version' => '5.0')); + $arrAnimations['str'] = array('handle' => 'Short-To-Right','params' => '{"movex":"50px","movey":"inherit","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"inherit","skewy":"inherit","captionopacity":"0","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"500"}', 'settings' => array('version' => '5.0')); + $arrAnimations['ltr'] = array('handle' => 'Long-To-Right','params' => '{"movex":"right","movey":"inherit","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"inherit","skewy":"inherit","captionopacity":"inherit","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"500"}', 'settings' => array('version' => '5.0')); + $arrAnimations['ltl'] = array('handle' => 'Long-To-Left','params' => '{"movex":"left","movey":"inherit","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"inherit","skewy":"inherit","captionopacity":"inherit","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"500"}', 'settings' => array('version' => '5.0')); + $arrAnimations['ltt'] = array('handle' => 'Long-To-Top','params' => '{"movex":"inherit","movey":"top","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"inherit","skewy":"inherit","captionopacity":"inherit","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"500"}', 'settings' => array('version' => '5.0')); + $arrAnimations['ltb'] = array('handle' => 'Long-To-Bottom','params' => '{"movex":"inherit","movey":"bottom","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"inherit","skewy":"inherit","captionopacity":"inherit","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"500"}', 'settings' => array('version' => '5.0')); + $arrAnimations['skewtoleft'] = array('handle' => 'Skew-To-Long-Left','params' => '{"movex":"left","movey":"inherit","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"45px","skewy":"inherit","captionopacity":"inherit","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"500"}', 'settings' => array('version' => '5.0')); + $arrAnimations['skewtoright'] = array('handle' => 'Skew-To-Long-Right','params' => '{"movex":"right","movey":"inherit","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"-85px","skewy":"inherit","captionopacity":"inherit","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"500"}', 'settings' => array('version' => '5.0')); + $arrAnimations['skewtorightshort'] = array('handle' => 'Skew-To-Short-Right','params' => '{"movex":"200px","movey":"inherit","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"-85px","skewy":"inherit","captionopacity":"0","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"500"}', 'settings' => array('version' => '5.0')); + $arrAnimations['skewtoleftshort'] = array('handle' => 'Skew-To-Short-Left','params' => '{"movex":"-200px","movey":"inherit","movez":"inherit","rotationx":"inherit","rotationy":"inherit","rotationz":"inherit","scalex":"inherit","scaley":"inherit","skewx":"85px","skewy":"inherit","captionopacity":"0","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"500"}', 'settings' => array('version' => '5.0')); + $arrAnimations['randomrotateout'] = array('handle' => 'Random-Rotate-Out','params' => '{"movex":"{-250,250}","movey":"{-150,150}","movez":"inherit","rotationx":"{-90,90}","rotationy":"{-90,90}","rotationz":"{-360,360}","scalex":"{0,1}","scaley":"{0,1}","skewx":"inherit","skewy":"inherit","captionopacity":"0","mask":"false","mask_x":"0","mask_y":"0","mask_speed":"500"}', 'settings' => array('version' => '5.0')); + + if($all){ + $arrAnimations['vss'] = array('handle' => '--------------------------------------'); + $arrAnimations['vs'] = array('handle' => __('- SAVED CUSTOM ANIMATIONS -', REVSLIDER_TEXTDOMAIN)); + $arrAnimations['vse'] = array('handle' => '--------------------------------------'); + //$custom = RevSliderOperations::getCustomAnimations('customout'); + $custom = RevSliderOperations::getCustomAnimationsFullPre('customout'); + + $arrAnimations = array_merge($arrAnimations, $custom); + } + + foreach($arrAnimations as $key => $value){ + if(!isset($value['params'])) continue; + + $t = json_decode(str_replace("'", '"', $value['params']), true); + if(!empty($t)) + $arrAnimations[$key]['params'] = $t; + } + return($arrAnimations); + } + + /* Provider: - * + * insert custom animations + */ + public static function insertCustomAnim($anim){ + if(isset($anim['handle'])) { + $db = new RevSliderDB(); + + $arrInsert = array(); + $arrInsert["handle"] = $anim['handle']; + unset($anim['handle']); + + $arrInsert["params"] = stripslashes(json_encode(str_replace("'", '"', $anim['params']))); + $arrInsert["settings"] = json_encode(array('version' => 'custom')); + + $result = $db->insert(RevSliderGlobals::$table_layer_anims, $arrInsert); + } + + $arrAnims['customin'] = RevSliderOperations::getCustomAnimations(); + $arrAnims['customout'] = RevSliderOperations::getCustomAnimations('customout'); + $arrAnims['customfull'] = RevSliderOperations::getFullCustomAnimations(); + + return $arrAnims; + } + + /* Provider: - * + * insert custom animations + */ + public static function updateCustomAnim($anim){ + + if(isset($anim['handle'])) { + $db = new RevSliderDB(); + $handle = $anim['handle']; + unset($anim['handle']); + + $id = str_replace(array('customin-', 'customout-'), array('', ''), $handle); + + $arrUpdate = array(); + $arrUpdate['params'] = stripslashes(json_encode(str_replace("'", '"', $anim['params']))); + //$arrUpdate["settings"] = json_encode(array('version' => 'custom')); + + $result = $db->update(RevSliderGlobals::$table_layer_anims, $arrUpdate, array('id' => $id)); + } + + $arrAnims['customin'] = RevSliderOperations::getCustomAnimations(); + $arrAnims['customout'] = RevSliderOperations::getCustomAnimations('customout'); + $arrAnims['customfull'] = RevSliderOperations::getFullCustomAnimations(); + + return $arrAnims; + } + + /* Provider: - * + * update custom animations name + * @since: 5.0 + */ + public static function updateCustomAnimName($anim){ + if(isset($anim['handle'])) { + $db = new RevSliderDB(); + $id = $anim['id']; + unset($anim['id']); + + $result = $db->update(RevSliderGlobals::$table_layer_anims, $anim, array('id' => $id)); + } + + $arrAnims['customin'] = RevSliderOperations::getCustomAnimations(); + $arrAnims['customout'] = RevSliderOperations::getCustomAnimations('customout'); + $arrAnims['customfull'] = RevSliderOperations::getFullCustomAnimations(); + + return $arrAnims; + } + + /* Provider: - * + * + * delete custom animations + */ + public static function deleteCustomAnim($rawID){ + if(trim($rawID) != '') { + $db = new RevSliderDB(); + $id = str_replace(array('customin-', 'customout-'), array('', ''), $rawID); + $db->delete(RevSliderGlobals::$table_layer_anims, "id = '".intval($id)."'"); + } + + $arrAnims['customin'] = RevSliderOperations::getCustomAnimations(); + $arrAnims['customout'] = RevSliderOperations::getCustomAnimations('customout'); + $arrAnims['customfull'] = RevSliderOperations::getFullCustomAnimations(); + + return $arrAnims; + } + + /* Provider: - * + * + * get custom animations + */ + public static function getCustomAnimations($pre = 'customin'){ + $db = new RevSliderDB(); + + $customAnimations = array(); + + $result = $db->fetch(RevSliderGlobals::$table_layer_anims); + if(!empty($result)){ + foreach($result as $key => $value){ + $params = json_decode($value['params'], true); + if(!isset($params['type']) || $params['type'] == $pre){ + $customAnimations[$pre.'-'.$value['id']] = $value['handle']; + } + } + } + asort($customAnimations); + + return $customAnimations; + } + + + /* Provider: - * + * + * get custom animations + */ + public static function getCustomAnimationsFullPre($pre = 'customin'){ + $db = new RevSliderDB(); + + $customAnimations = array(); + $customTemp = array(); + $sort = array(); + $result = $db->fetch(RevSliderGlobals::$table_layer_anims); + if(!empty($result)){ + foreach($result as $key => $value){ + $params = json_decode($value['params'], true); + if(!isset($params['type']) || $params['type'] == $pre){ + $customTemp[$pre.'-'.$value['id']] = $value; + $sort[$pre.'-'.$value['id']] = $value['handle']; + } + } + } + if(!empty($sort)){ + asort($sort); + foreach($sort as $k => $v){ + $customAnimations[$k] = $customTemp[$k]; + } + } + + return $customAnimations; + } + + + /* Provider: - * + * + * get full custom animations + */ + public static function getFullCustomAnimations(){ + $db = new RevSliderDB(); + + $customAnimations = array(); + + $result = $db->fetch(RevSliderGlobals::$table_layer_anims); + if(!empty($result)){ + foreach($result as $key => $value){ + $customAnimations[$key]['id'] = $value['id']; + $customAnimations[$key]['handle'] = $value['handle']; + $customAnimations[$key]['params'] = json_decode(str_replace("'", '"', $value['params']), true); + } + } + + return $customAnimations; + } + + /* Provider: - * + * + * get animation params by handle + */ + public static function getCustomAnimationByHandle($handle){ + $db = new RevSliderDB(); + + $result = $db->fetch(RevSliderGlobals::$table_layer_anims, "handle = '".$handle."'"); + if(!empty($result)) return json_decode(str_replace("'", '"', $result[0]['params']), true); + + return false; + } + + /* Provider: - * + * + * get animation params by id + */ + public static function getFullCustomAnimationByID($id){ + $db = new RevSliderDB(); + + $result = $db->fetch(RevSliderGlobals::$table_layer_anims, "id = '".$id."'"); + + if(!empty($result)){ + $customAnimations = array(); + $customAnimations['id'] = $result[0]['id']; + $customAnimations['handle'] = $result[0]['handle']; + $customAnimations['params'] = json_decode(str_replace("'", '"', $result[0]['params']), true); + return $customAnimations; + } + + return false; + } + + /* Provider: - * + * + * parse animation params + */ + public static function parseCustomAnimationByArray($animArray, $is = 'start'){ + $retString = ''; + + if(isset($animArray['x_'.$is]) && $animArray['x_'.$is] !== '' && $animArray['x_'.$is] !== 'inherit') $retString.= 'x:'.$animArray['x_'.$is].';'; //movex + if(isset($animArray['y_'.$is]) && $animArray['y_'.$is] !== '' && $animArray['y_'.$is] !== 'inherit') $retString.= 'y:'.$animArray['y_'.$is].';'; //movey + if(isset($animArray['z_'.$is]) && $animArray['z_'.$is] !== '' && $animArray['z_'.$is] !== 'inherit') $retString.= 'z:'.$animArray['z_'.$is].';'; //movez + + if(isset($animArray['x_rotate_'.$is]) && $animArray['x_rotate_'.$is] !== '' && $animArray['x_rotate_'.$is] !== 'inherit') $retString.= 'rX:'.$animArray['x_rotate_'.$is].';'; //rotationx + if(isset($animArray['y_rotate_'.$is]) && $animArray['y_rotate_'.$is] !== '' && $animArray['y_rotate_'.$is] !== 'inherit') $retString.= 'rY:'.$animArray['y_rotate_'.$is].';'; //rotationy + if(isset($animArray['z_rotate_'.$is]) && $animArray['z_rotate_'.$is] !== '' && $animArray['z_rotate_'.$is] !== 'inherit') $retString.= 'rZ:'.$animArray['z_rotate_'.$is].';'; //rotationz + + if(isset($animArray['scale_x_'.$is]) && $animArray['scale_x_'.$is] !== '' && $animArray['scale_x_'.$is] !== 'inherit'){ //scalex + $retString.= 'sX:'; + $retString.= ($animArray['scale_x_'.$is] == 0) ? 0 : $animArray['scale_x_'.$is]; + $retString.= ';'; + } + if(isset($animArray['scale_y_'.$is]) && $animArray['scale_y_'.$is] !== '' && $animArray['scale_y_'.$is] !== 'inherit'){ //scaley + $retString.= 'sY:'; + $retString.= ($animArray['scale_y_'.$is] == 0) ? 0 : $animArray['scale_y_'.$is]; + $retString.= ';'; + } + + if(isset($animArray['skew_x_'.$is]) && $animArray['skew_x_'.$is] !== '' && $animArray['skew_x_'.$is] !== 'inherit') $retString.= 'skX:'.$animArray['skew_x_'.$is].';'; //skewx + if(isset($animArray['skew_y_'.$is]) && $animArray['skew_y_'.$is] !== '' && $animArray['skew_y_'.$is] !== 'inherit') $retString.= 'skY:'.$animArray['skew_y_'.$is].';'; //skewy + + if(isset($animArray['opacity_'.$is]) && $animArray['opacity_'.$is] !== '' && $animArray['opacity_'.$is] !== 'inherit'){ //captionopacity + $retString.= 'opacity:'; + $retString.= ($animArray['opacity_'.$is] == 0) ? 0 : $animArray['opacity_'.$is] / 100; + $retString.= ';'; + } + + if($retString == ''){ //we do not have animations set, so set them here + + } + + if($is == 'start'){ + $retString .= 's:'.RevSliderFunctions::getVal($animArray, 'speed', 300).';'; + $retString .= 'e:'.RevSliderFunctions::getVal($animArray, 'easing', 'easeOutExpo').';'; + }else{ + $es = RevSliderFunctions::getVal($animArray, 'endspeed'); + $ee = trim(RevSliderFunctions::getVal($animArray, 'endeasing')); + if(!empty($es)){ + $retString .= 's:'.$es.';'; + if(!empty($ee) && $ee !== 'nothing'){ + $retString .= 'e:'.$ee.';'; + } + } + } + + return $retString; + } + + + /* Provider: - * + * parse mask params + * @since: 5.0 + */ + public static function parseCustomMaskByArray($animArray, $is = 'start'){ + $retString = ''; + if(isset($animArray['mask_x_'.$is]) && $animArray['mask_x_'.$is] !== '') $retString.= 'x:'.$animArray['mask_x_'.$is].';'; + if(isset($animArray['mask_y_'.$is]) && $animArray['mask_y_'.$is] !== '') $retString.= 'y:'.$animArray['mask_y_'.$is].';'; + if(isset($animArray['mask_speed_'.$is]) && $animArray['mask_speed_'.$is] !== '') $retString.= 's:'.$animArray['mask_speed_'.$is].';'; + if(isset($animArray['mask_ease_'.$is]) && $animArray['mask_ease_'.$is] !== '') $retString.= 'e:'.$animArray['mask_ease_'.$is].';'; + + return $retString; + } + + + /* Provider: - * + * + * parse css file and get the classes from there. + */ + public function getArrCaptionClasses($contentCSS){ + //parse css captions file + $parser = new RevSliderCssParser(); + $parser->initContent($contentCSS); + $arrCaptionClasses = $parser->getArrClasses('','',true); + + return($arrCaptionClasses); + } + + + /* Provider: - * + * + * get all CSS classes from database with version numbers + */ + public function getArrCaptionSorted($contentCSS){ //get all from the database + //parse css captions file + $parser = new RevSliderCssParser(); + $parser->initContent($contentCSS); + $arrCaptionClasses = $parser->getArrClasses('','',true); + + return($arrCaptionClasses); + } + + /* Provider: - * + * + * get all font family types + */ + public function getArrFontFamilys($slider = false){ + //Web Safe Fonts + $fonts = array( + //Serif Fonts + 'Georgia, serif', + '"Palatino Linotype", "Book Antiqua", Palatino, serif', + '"Times New Roman", Times, serif', + + //Sans-Serif Fonts + 'Arial, Helvetica, sans-serif', + '"Arial Black", Gadget, sans-serif', + '"Comic Sans MS", cursive, sans-serif', + 'Impact, Charcoal, sans-serif', + '"Lucida Sans Unicode", "Lucida Grande", sans-serif', + 'Tahoma, Geneva, sans-serif', + '"Trebuchet MS", Helvetica, sans-serif', + 'Verdana, Geneva, sans-serif', + + //Monospace Fonts + '"Courier New", Courier, monospace', + '"Lucida Console", Monaco, monospace' + ); + + if($slider !== false){ + if($slider->getParam("load_googlefont","false") == "true"){ + $font_custom = $slider->getParam("google_font",""); + if(!is_array($font_custom)) $font_custom = array($font_custom); //backwards compability + + if(is_array($font_custom)){ + foreach($font_custom as $key => $curFont){ + $font = $this->cleanFontStyle(stripslashes($curFont)); + if($font != false) + $font_custom[$key] = $font; + else + unset($font_custom[$key]); + } + $fonts = array_merge($font_custom, $fonts); + } + } + } + + return $fonts; + } + + + /* Provider: - * + * + * get font name in clean + */ + public function cleanFontStyle($font){ + $url = preg_match('/href=["\']?([^"\'>]+)["\']?/', $font, $match); + if(!isset($match[1])) return false; + $info = parse_url($match[1]); + + if(isset($info['query'])){ + $font = str_replace(array('family=', '+'), array('', ' '), $info['query']); + $font = explode(':', $font); + return (strpos($font['0'], ' ') !== false) ? '"'.$font['0'].'"' : $font['0']; + + } + + return false; + } + + /* Provider: - * + * + * get the select classes html for putting in the html by ajax + */ + private function getHtmlSelectCaptionClasses($contentCSS){ + $arrCaptions = $this->getArrCaptionClasses($contentCSS); + $htmlSelect = RevSliderFunctions::getHTMLSelect($arrCaptions,"","id='layer_caption' name='layer_caption'",true); + return($htmlSelect); + } + + /* Provider: - * + * + * get contents of the css table + */ + public function getCaptionsContent(){ + $result = $this->db->fetch(RevSliderGlobals::$table_css); + $contentCSS = RevSliderCssParser::parseDbArrayToCss($result); + return($contentCSS); + } + + + /* Provider: - * + * + * get contents of the css table + */ + public static function getCaptionsContentArray($handle = false){ + $db = new RevSliderDB(); + $result = $db->fetch(RevSliderGlobals::$table_css); + $contentCSS = RevSliderCssParser::parseDbArrayToArray($result, $handle); + return($contentCSS); + } + + /* Provider: - * + * + * get contents of the static css file + */ + public static function getStaticCss(){ + if ( is_multisite() ){ + if(!get_site_option('revslider-static-css')){ + $contentCSS = @file_get_contents(RevSliderGlobals::$filepath_static_captions); + self::updateStaticCss($contentCSS); + } + $contentCSS = get_site_option('revslider-static-css', ''); + }else{ + if(!get_option('revslider-static-css')){ + $contentCSS = @file_get_contents(RevSliderGlobals::$filepath_static_captions); + self::updateStaticCss($contentCSS); + } + $contentCSS = get_option('revslider-static-css', ''); + } + + return($contentCSS); + } + + /* Provider: - * + * + * get contents of the static css file + */ + public static function updateStaticCss($content){ + $content = str_replace(array("\'", '\"', '\\\\'),array("'", '"', '\\'), trim($content)); + + if ( is_multisite() ){ + $c = get_site_option('revslider-static-css', ''); + $c = update_site_option('revslider-static-css', $content); + }else{ + $c = get_option('revslider-static-css', ''); + $c = update_option('revslider-static-css', $content); + } + + return $content; + } + + /* Provider: - * + * + * get contents of the static css file + */ + public function getDynamicCss(){ + $db = new RevSliderDB(); + + $styles = $db->fetch(RevSliderGlobals::$table_css); + $styles = RevSliderCssParser::parseDbArrayToCss($styles, "\n"); + + return $styles; + } + + /* Provider: - * + * + * insert captions css file content + * @return new captions html select + */ + public function insertCaptionsContentData($content){ + global $revSliderVersion; + + if(!isset($content['handle']) || !isset($content['idle']) || !isset($content['hover'])) return false; // || !isset($content['advanced']) + + $db = new RevSliderDB(); + + $handle = $content['handle']; + + $arrInsert = array(); + $arrInsert["handle"] = '.tp-caption.'.$handle; + $arrInsert["params"] = stripslashes(json_encode(str_replace("'", '"', $content['idle']))); + $arrInsert["hover"] = stripslashes(json_encode(str_replace("'", '"', @$content['hover']))); + + if(!isset($content['settings'])) $content['settings'] = array(); + $content['settings']['version'] = 'custom'; + $content['settings']['translated'] = '5'; // translated to version 5 currently + $arrInsert["settings"] = stripslashes(json_encode(str_replace("'", '"', $content['settings']))); + + $arrInsert["advanced"] = array(); + $arrInsert["advanced"]['idle'] = @$content['advanced']['idle']; + $arrInsert["advanced"]['hover'] = @$content['advanced']['hover']; + $arrInsert["advanced"] = stripslashes(json_encode(str_replace("'", '"', $arrInsert["advanced"]))); + + $result = $db->insert(RevSliderGlobals::$table_css, $arrInsert); + + //output captions array + $arrCaptions = RevSliderCssParser::get_captions_sorted(); + + return($arrCaptions); + } + + /* Provider: - * + * update captions css file content + * @return new captions html select + */ + public function updateCaptionsContentData($content){ + global $revSliderVersion; + + if(!isset($content['handle']) || !isset($content['idle']) || !isset($content['hover']) || !isset($content['advanced'])) return false; + + $db = new RevSliderDB(); + + //first get single entry to merge settings + $styles = $db->fetchSingle(RevSliderGlobals::$table_css, '`handle` = "'.$db->escape('.tp-caption.'.$content['handle']).'"'); + + if(empty($styles)) return false; + + $settings = json_decode(str_replace("'", '"', $styles['settings']), true); + if(isset($content['settings']) && !empty($content['settings'])){ + foreach($content['settings'] as $key => $value){ + $settings[$key] = $value; + } + //$settings = array_merge($content['settings'], $settings); + } + + $handle = $content['handle']; + + $arrUpdate = array(); + $arrUpdate["params"] = stripslashes(json_encode(str_replace("'", '"', @$content['idle']))); + $arrUpdate["hover"] = stripslashes(json_encode(str_replace("'", '"', @$content['hover']))); + $arrUpdate["settings"] = stripslashes(json_encode(str_replace("'", '"', $settings))); + + $arrUpdate["advanced"] = array(); + $arrUpdate["advanced"]['idle'] = @$content['advanced']['idle']; + $arrUpdate["advanced"]['hover'] = @$content['advanced']['hover']; + $arrUpdate["advanced"] = stripslashes(json_encode(str_replace("'", '"', $arrUpdate["advanced"]))); + + $result = $db->update(RevSliderGlobals::$table_css, $arrUpdate, array('handle' => '.tp-caption.'.$handle)); + + //output captions array + $arrCaptions = RevSliderCssParser::get_captions_sorted(); + return($arrCaptions); + } + + + /* Provider: - * + * update captions advanced css + * @return: new captions html select + * @since: 5.0 + */ + public function updateAdvancedCssData($data){ + if(!isset($data['handle']) || !isset($data['styles']) || !isset($data['type'])) return false; + if($data['type'] !== 'idle' && $data['type'] !== 'hover') return false; + + $db = new RevSliderDB(); + + //get current styles + $styles = $db->fetchSingle(RevSliderGlobals::$table_css, '`handle` = "'.$db->escape($data['handle']).'"'); + + if(!empty($styles)){ + if(!isset($styles['advanced'])) $styles['advanced'] = ''; + + $adv = json_decode(str_replace("'", '"', $styles['advanced']), true); + + if(!isset($adv['idle'])) $adv['idle'] = array(); + if(!isset($adv['hover'])) $adv['hover'] = array(); + + $adv[$data['type']] = $data['styles']; + + + $arrUpdate = array(); + + $arrUpdate['advanced'] = json_encode(str_replace("'", '"', $adv)); + + $result = $db->update(RevSliderGlobals::$table_css, $arrUpdate, array('handle' => $data['handle'])); + + //output captions array + $arrCaptions = RevSliderCssParser::get_captions_sorted(); + + return($arrCaptions); + + }else{ + return false; + } + + } + + /* Provider: - * + * rename caption + * @since: 5.0 + */ + public function renameCaption($content){ + if(isset($content['old_name']) && isset($content['new_name'])) { + $db = new RevSliderDB(); + + $handle = $content['old_name']; + + $arrUpdate = array(); + $arrUpdate["handle"] = '.tp-caption.'.$content['new_name']; + $result = $db->update(RevSliderGlobals::$table_css, $arrUpdate, array('handle' => '.tp-caption.'.$handle)); + if($result !== false){ //rename all layers in all Sliders that use this old name with the new name + $slider = new RevSlider(); + $arrSliders = $slider->getArrSliders(); + if(!empty($arrSliders)){ + foreach($arrSliders as $slider){ + $arrSildes = $slider->getSlides(); + foreach($arrSildes as $slide){ + $slide->replaceCssClass($content['old_name'], $content['new_name']); + } + } + } + } + } + + //output captions array + $arrCaptions = RevSliderCssParser::get_captions_sorted(); + return($arrCaptions); + } + + + /* Provider: - * + * + * delete captions css file content + * @return new captions html select + */ + public function deleteCaptionsContentData($handle){ + $db = new RevSliderDB(); + + $db->delete(RevSliderGlobals::$table_css,"handle='.tp-caption.".$handle."'"); + + //$this->updateDynamicCaptions(); + + //output captions array + $arrCaptions = RevSliderCssParser::get_captions_sorted(); + + return($arrCaptions); + } + + /* Provider: - * + * + * update dynamic-captions css file content + */ + public static function updateDynamicCaptions($full = false){ + if($full){ + $captions = array(); + $captions = RevSliderOperations::getCaptionsContentArray(); + + $styles = RevSliderCssParser::parseArrayToCss($captions, "\n"); + }else{ + //go through all sliders and check which classes are used, get all classes from DB and write them into the file + $slider = new RevSlider(); + $arrSliders = $slider->getArrSliders(); + $classes = array(); + + //get used classes + if(!empty($arrSliders)){ + foreach($arrSliders as $slider){ + try{ + $slides = $slider->getSlides(); + + if(!empty($slides)){ + foreach($slides as $slide){ + $layers = $slide->getLayers(); + if(!empty($layers)){ + foreach($layers as $layer){ + if(isset($layer['style'])){ + if(!empty($layer['style'])) $classes[$layer['style']] = true; + } + } + } + } + } + + }catch(Exception $e){ + $errorMessage = "ERROR: ".$e->getMessage(); + } + } + } + + if(!empty($classes)){ + $captions = array(); + foreach($classes as $class => $val){ + $captionCheck = RevSliderOperations::getCaptionsContentArray($class); + if(!empty($captionCheck)) $captions[] = $captionCheck; + } + + $styles = RevSliderCssParser::parseArrayToCss($captions, "\n"); + } + } + } + + + /* Provider: - * + * + * get contents of the css file + */ + public static function getCaptionsCssContentArray(){ + if(file_exists(RS_PLUGIN_PATH.'public/assets/css/captions.css')) + $contentCSS = file_get_contents(RS_PLUGIN_PATH.'public/assets/css/captions.css'); + else if(file_exists(RS_PLUGIN_PATH.'public/assets/css/captions-original.css')) + $contentCSS = file_get_contents(RS_PLUGIN_PATH.'public/assets/css/captions-original.css'); + else if(file_exists(RS_PLUGIN_PATH.'backup/'.'captions.css')) + $contentCSS = file_get_contents(RS_PLUGIN_PATH.'backup/'.'captions.css'); + else if(file_exists(RS_PLUGIN_PATH.'backup/'.'captions-original.css')) + $contentCSS = file_get_contents(RS_PLUGIN_PATH.'backup/'.'captions-original.css'); + else + RevSliderFunctions::throwError("No captions.css found! This installation is incorrect, please make sure to reupload the Slider Revolution plugin and try again!"); + + $result = RevSliderCssParser::parseCssToArray($contentCSS); + + return($result); + } + + /* Provider: - * + * + * import contents of the css file + */ + public static function importCaptionsCssContentArray(){ + $db = new RevSliderDB(); + $css = self::getCaptionsCssContentArray(); + $static = array(); + if(is_array($css) && $css !== false && count($css) > 0){ + foreach($css as $class => $styles){ + //check if static style or dynamic style + $class = trim($class); + + if((strpos($class, ':hover') === false && strpos($class, ':') !== false) || //before, after + strpos($class," ") !== false || // .tp-caption.imageclass img or .tp-caption .imageclass or .tp-caption.imageclass .img + strpos($class,".tp-caption") === false || // everything that is not tp-caption + (strpos($class,".") === false || strpos($class,"#") !== false) || // no class -> #ID or img + strpos($class,">") !== false){ //.tp-caption>.imageclass or .tp-caption.imageclass>img or .tp-caption.imageclass .img + + $static[$class] = $styles; + continue; + } + + //is a dynamic style + if(strpos($class, ':hover') !== false){ + $class = trim(str_replace(':hover', '', $class)); + $arrInsert = array(); + $arrInsert["hover"] = json_encode($styles); + $arrInsert["settings"] = json_encode(array('hover' => 'true')); + }else{ + $arrInsert = array(); + $arrInsert["params"] = json_encode($styles); + } + //check if class exists + $result = $db->fetch(RevSliderGlobals::$table_css, "handle = '".$class."'"); + + if(!empty($result)){ //update + $db->update(RevSliderGlobals::$table_css, $arrInsert, array('handle' => $class)); + }else{ //insert + $arrInsert["handle"] = $class; + $db->insert(RevSliderGlobals::$table_css, $arrInsert); + } + } + } + + if(!empty($static)){ //save static into static-captions.css + $css = RevSliderCssParser::parseStaticArrayToCss($static); + $static_cur = RevSliderOperations::getStaticCss(); //get the open sans line! + $css = $static_cur."\n".$css; + + self::updateStaticCss($css); + } + } + + /* Provider: - * + * + * move old captions.css and captions-original.css + */ + public static function moveOldCaptionsCss(){ + if(file_exists(RevSliderGlobals::$filepath_captions_original)) + $success = @rename(RevSliderGlobals::$filepath_captions_original, RevSliderGlobals::$filepath_backup.'/captions-original.css'); + + if(file_exists(RevSliderGlobals::$filepath_captions)) + $success = @rename(RevSliderGlobals::$filepath_captions, RevSliderGlobals::$filepath_backup.'/captions.css'); + } + + /* Provider: - * + * + * preview slider output + * if output object is null - create object + */ + public function previewOutput($sliderID,$output = null){ + + if($sliderID == "empty_output"){ + $this->loadingMessageOutput(); + exit(); + } + + if($output == null) + $output = new RevSliderOutput(); + + $slider = new RevSlider(); + $slider->initByID($sliderID); + $isWpmlExists = RevSliderWpml::isWpmlExists(); + $useWpml = $slider->getParam("use_wpml","off"); + $wpmlActive = false; + if($isWpmlExists && $useWpml == "on"){ + $wpmlActive = true; + $arrLanguages = RevSliderWpml::getArrLanguages(false); + + //set current lang to output + $currentLang = RevSliderFunctions::getPostGetVariable("lang"); + + if(empty($currentLang)) + $currentLang = RevSliderWpml::getCurrentLang(); + + if(empty($currentLang)) + $currentLang = $arrLanguages[0]; + + $output->setLang($currentLang); + + $selectLangChoose = RevSliderFunctions::getHTMLSelect($arrLanguages,$currentLang,"id='select_langs'",true); + } + + + $output->setPreviewMode(); + + //put the output html + $urlPlugin = RS_PLUGIN_URL.'public/assets/'; + $urlPreviewPattern = RevSliderBase::$url_ajax_actions."&client_action=preview_slider&sliderid=".$sliderID."&lang=[lang]&nonce=[nonce]"; + $nonce = wp_create_nonce("revslider_actions"); + + $setBase = (is_ssl()) ? "https://" : "http://"; + + ?> + + + + fetch(RevSliderGlobals::$table_css); + $styles = RevSliderCssParser::parseDbArrayToCss($styles, "\n"); + $styles = RevSliderCssParser::compress_css($styles); + + echo ''; //.$stylesinnerlayers + + $http = (is_ssl()) ? 'https' : 'http'; + + $operations = new RevSliderOperations(); + $arrValues = $operations->getGeneralSettingsValues(); + + $set_diff_font = RevSliderFunctions::getVal($arrValues, "change_font_loading",''); + if($set_diff_font !== ''){ + $font_url = $set_diff_font; + }else{ + $font_url = $http.'://fonts.googleapis.com/css?family='; + } + + + $custom_css = RevSliderOperations::getStaticCss(); + echo ''; + ?> + + + + + + + + + +
        + : +
        + + + + + putSliderBase($sliderID); + ?> + + + loadingMessageOutput(); + exit(); + } + + if($output == null) + $output = new RevSliderOutput(); + + $slider = new RevSlider(); + $slider->initByID($sliderID); + $isWpmlExists = RevSliderWpml::isWpmlExists(); + $useWpml = $slider->getParam("use_wpml","off"); + $wpmlActive = false; + if($isWpmlExists && $useWpml == "on"){ + $wpmlActive = true; + $arrLanguages = RevSliderWpml::getArrLanguages(false); + + //set current lang to output + $currentLang = RevSliderFunctions::getPostGetVariable("lang"); + + if(empty($currentLang)) + $currentLang = RevSliderWpml::getCurrentLang(); + + if(empty($currentLang)) + $currentLang = $arrLanguages[0]; + + $output->setLang($currentLang); + + $selectLangChoose = RevSliderFunctions::getHTMLSelect($arrLanguages,$currentLang,"id='select_langs'",true); + } + + + $output->setPreviewMode(); + + //put the output html + $urlPlugin = "http://yourpluginpath/"; + $urlPreviewPattern = RevSliderBase::$url_ajax_actions."&client_action=preview_slider&only_markup=true&sliderid=".$sliderID."&lang=[lang]&nonce=[nonce]"; + $nonce = wp_create_nonce("revslider_actions"); + + $setBase = (is_ssl()) ? "https://" : "http://"; + + $http = (is_ssl()) ? 'https' : 'http'; + + $operations = new RevSliderOperations(); + $arrValues = $operations->getGeneralSettingsValues(); + + $set_diff_font = RevSliderFunctions::getVal($arrValues, "change_font_loading",''); + if($set_diff_font !== ''){ + $font_url = $set_diff_font; + }else{ + $font_url = $http.'://fonts.googleapis.com/css?family='; + } + + ?> + + + + + + +
        + : +
        + + + + + + + fetch(RevSliderGlobals::$table_css); + echo RevSliderCssParser::parseDbArrayToCss($styles, "\n"); + + $style_content = ob_get_contents(); + ob_clean(); + ob_end_clean(); + + ob_start(); + + $output->putSliderBase($sliderID); + + $content = ob_get_contents(); + ob_clean(); + ob_end_clean(); + + $script_content = substr($content, strpos($content, '') + 9 - strpos($content, ''), '', $script_content); + + ?> + +

        + +

        + +
        + +
        + +
        + +
        + + + + + + +
        + loadingMessageOutput(); + exit(); + } + + $data = RevSliderFunctions::jsonDecodeFromClientSide($data); + + $slideID = $data["slideid"]; + $slide = new RevSlide(); + $slide->initByID($slideID); + $sliderID = $slide->getSliderID(); + + $output = new RevSliderOutput(); + $output->setOneSlideMode($data); + + $this->previewOutput($sliderID,$output); + } + + + /* Provider: - * + * update general settings + */ + public function updateGeneralSettings($data){ + + $strSettings = serialize($data); + update_option('revslider-global-settings', $data); + + } + + + /* Provider: - * + * + * get general settigns values. + */ + static function getGeneralSettingsValues(){ + + $arrValues = get_option('revslider-global-settings', ''); + + $arrValues = maybe_unserialize($arrValues); + + return($arrValues); + } + + + /* Provider: - * + * + * modify custom slider params. This is instead custom settings difficulties. + */ + public function modifyCustomSliderParams($data){ + + $arrNames = array("width","height", + "responsitive_w1","responsitive_sw1", + "responsitive_w2","responsitive_sw2", + "responsitive_w3","responsitive_sw3", + "responsitive_w4","responsitive_sw4", + "responsitive_w5","responsitive_sw5", + "responsitive_w6","responsitive_sw6"); + + $arrMain = $data["main"]; + foreach($arrNames as $name){ + if(array_key_exists($name, $arrMain)){ + $arrMain[$name] = floatval($arrMain[$name]); + if(!is_numeric($arrMain[$name])) $arrMain[$name] = 0; + } + } + + $arrMain["fullscreen_offset_container"] = @$arrMain["fullscreen_offset_container"]; + + $data["main"] = $arrMain; + + return($data); + } + + + /* Provider: - * + * + * get post types with categories for client side. + */ + public static function getPostTypesWithCatsForClient(){ + $arrPostTypes = RevSliderFunctionsWP::getPostTypesWithCats(); + + $globalCounter = 0; + + $arrOutput = array(); + foreach($arrPostTypes as $postType => $arrTaxWithCats){ + + $arrCats = array(); + foreach($arrTaxWithCats as $tax){ + $taxName = $tax["name"]; + $taxTitle = $tax["title"]; + $globalCounter++; + $arrCats["option_disabled_".$globalCounter] = "---- ".$taxTitle." ----"; + foreach($tax["cats"] as $catID=>$catTitle){ + $arrCats[$taxName."_".$catID] = $catTitle; + } + }//loop tax + + $arrOutput[$postType] = $arrCats; + + }//loop types + + return($arrOutput); + } + + + /* Provider: - * + * + * get html font import + */ + public static function getCleanFontImport($font){ + $setBase = (is_ssl()) ? "https://" : "http://"; + + if(strpos($font, "href=") === false){ //fallback for old versions + return ''; //id="rev-google-font" + }else{ + $font = str_replace(array('http://', 'https://'), array($setBase, $setBase), $font); + return html_entity_decode(stripslashes($font)); + } + } + + + public function checkPurchaseVerification($data){ + global $wp_version; + + $response = wp_remote_post('http://updates.themepunch.tools/activate.php', array( + 'user-agent' => 'WordPress/'.$wp_version.'; '.get_bloginfo('url'), + 'body' => array( + 'name' => urlencode($data['username']), + 'api' => urlencode($data['api_key']), + 'code' => urlencode($data['code']), + 'product' => urlencode('revslider') + ) + )); + + $response_code = wp_remote_retrieve_response_code( $response ); + $version_info = wp_remote_retrieve_body( $response ); + + if ( $response_code != 200 || is_wp_error( $version_info ) ) { + return false; + } + + if($version_info == 'valid'){ + update_option('revslider-valid', 'true'); + update_option('revslider-api-key', $data['api_key']); + update_option('revslider-username', $data['username']); + update_option('revslider-code', $data['code']); + + return true; + }elseif($version_info == 'exist'){ + RevSliderFunctions::throwError(__('Purchase Code already registered!', REVSLIDER_TEXTDOMAIN)); + }else{ + return false; + } + + } + + public function doPurchaseDeactivation($data){ + global $wp_version; + + $key = get_option('revslider-api-key', ''); + $name = get_option('revslider-username', ''); + $code = get_option('revslider-code', ''); + + $response = wp_remote_post('http://updates.themepunch.tools/deactivate.php', array( + 'user-agent' => 'WordPress/'.$wp_version.'; '.get_bloginfo('url'), + 'body' => array( + 'name' => urlencode($name), + 'api' => urlencode($key), + 'code' => urlencode($code), + 'product' => urlencode('revslider') + ) + )); + + $response_code = wp_remote_retrieve_response_code( $response ); + $version_info = wp_remote_retrieve_body( $response ); + + if ( $response_code != 200 || is_wp_error( $version_info ) ) { + return false; + } + + if($version_info == 'valid'){ + update_option('revslider-valid', 'false'); + return true; + }else{ + return false; + } + + } + + + public static function get_performance($val, $min, $max) { + + if ($val==0) $val = 1; + $arr = array(); + //print_r(($max-$min)."/".($val-$min)."="); + $arr["proc"] = (($max-$min) / ($val-$min))*100; + //print_r($arr["proc"]." --> "); + + + if ($arr["proc"]>100) $arr["proc"] = 100; + if ($arr["proc"]<0) $arr["proc"] = 0; + + if ($arr["proc"]<35) $arr["col"] = "slow"; + else + if ($arr["proc"]<75) $arr["col"] = "ok"; + else + //print_r($arr["proc"]."
        "); + + + $arr["col"] = "fast"; + + + + return $arr; + } + + + /* Provider: - * + * view the estimated speed of the Slider + * @since: 5.0 + */ + public static function get_slider_speed($sliderID){ + //$data = wp_get_attachment_metadata($cur_img_id); + + ob_start(); + + $total_size = 0; + + $do_ssl = (is_ssl()) ? 'http:' : 'https:'; + + $slider = new RevSliderSlider(); + $slider->initByID($sliderID); + $slides = $slider->getSlidesForExport(); + + $static_slides = $slider->getStaticSlideForExport(); + if(!empty($static_slides) && is_array($static_slides)){ + foreach($static_slides as $s_slide){ + $slides[] = $s_slide; + } + } + + $used_images = array(); + $used_videos = array(); + $used_captions = array(); + + $using_kenburns = false; + $using_parallax = false; + $using_carousel = false; + $using_navigation = false; + $using_videos = false; + $using_actions = false; + $using_layeranim = false; + + $img_size = 0; + $video_size = 0; + $slide_counter = 0; + $firstslide_size = 0; + $smartslide_size = 0; + + if($slider->getParam("use_parallax","off") == 'on') + $using_parallax = true; + + if($slider->getParam("slider-type","standard") == 'carousel') + $using_carousel = true; + + $enable_arrows = $slider->getParam('enable_arrows','off'); + $enable_bullets = $slider->getParam('enable_bullets','off'); + $enable_tabs = $slider->getParam('enable_tabs','off'); + $enable_thumbnails = $slider->getParam('enable_thumbnails','off'); + + if($enable_arrows == 'on' || $enable_bullets == 'on' || $enable_tabs == 'on' || $enable_thumbnails == 'on') + $using_navigation = true; + + if(!empty($slides) && count($slides) > 0){ + foreach($slides as $key => $slide){ + + if(isset($slide['params']['state']) && $slide['params']['state'] != 'published') continue; + if(!isset($slide['id'])) continue; + + $slide_counter++; + + $slide_id = $slide['id']; + + if(isset($slide['params']['kenburn_effect']) && $slide['params']['kenburn_effect'] == 'on') + $using_kenburns = true; + + + if(!isset($slide['params']['image_source_type'])) $slide['params']['image_source_type'] = 'full'; + + if(isset($slide['params']['image']) && $slide['params']['image'] != ''){ + //add infos of image to an array + $infos = array(); + $urlImage = false; + + switch($slide['params']['background_type']){ + case 'streamyoutube': + case 'streaminstagram': + case 'streamvimeo': + case 'youtube': + case 'vimeo': + $using_videos = true; + break; + } + + if(isset($slide['params']['image_id'])){ + $cur_img_id = $slide['params']['image_id']; + //get image sizes by ID + $urlImage = wp_get_attachment_image_src($slide['params']['image_id'], $slide['params']['image_source_type']); + } + if($urlImage === false){ + $cur_img_id = RevSliderFunctionsWP::get_image_id_by_url($slide['params']['image']); + if($cur_img_id !== false){ + $urlImage = wp_get_attachment_image_src($cur_img_id, $slide['params']['image_source_type']); + } + } + + if($urlImage !== false){ + $infos['id'] = $cur_img_id; + $file = get_attached_file( $cur_img_id ); + $infos['info'] = pathinfo( $file ); + + if(file_exists( $file )){ + $infos['size'] = filesize( $file ); + $infos['size-format'] = size_format($infos['size'], 2); + $img_size += $infos['size']; + if ($slide_counter==1) + $firstslide_size += $infos['size']; + if ($slide_counter==1 || $slide_counter==2 || $slide_counter==count($slides)) + $smartslide_size += $infos['size']; + }else{ + $infos['id'] = false; + } + }else{ + $infos['id'] = 'external'; + } + + if(strpos($slide_id, 'static_') !== false){ + $infos['url'] = RevSliderBaseAdmin::getViewUrl(RevSliderAdmin::VIEW_SLIDE, 'id=static_'.$sliderID); + }else{ + $infos['url'] = RevSliderBaseAdmin::getViewUrl(RevSliderAdmin::VIEW_SLIDE, 'id='.$slide_id); + } + + $used_images[$slide['params']['image']] = $infos; + + + } + + if(isset($slide['layers']) && !empty($slide['layers']) && count($slide['layers']) > 0){ + + $using_layeranim = true; + + foreach($slide['layers'] as $lKey => $layer){ + switch($layer['type']){ + case 'image': + $infos = array(); + if(isset($layer['image_url']) && trim($layer['image_url']) != ''){ + + $cur_img_id = RevSliderFunctionsWP::get_image_id_by_url($layer['image_url']); + if($cur_img_id !== false){ + if(!isset($layer['layer-image-size']) || $layer['layer-image-size'] == 'auto') $layer['layer-image-size'] = $slide['params']['image_source_type']; + + $urlImage = wp_get_attachment_image_src($cur_img_id, $layer['layer-image-size']); + + if($urlImage !== false){ + $infos['id'] = $cur_img_id; + $file = get_attached_file( $cur_img_id ); + $infos['info'] = pathinfo( $file ); + if(file_exists( $file )){ + $infos['size'] = filesize( $file ); + $infos['size-format'] = size_format($infos['size'], 2); + $img_size += $infos['size']; + if ($slide_counter==1) + $firstslide_size += $infos['size']; + if ($slide_counter==1 || $slide_counter==2 || $slide_counter==count($slides)) + $smartslide_size += $infos['size']; + + }else{ + $infos['id'] = false; + } + }else{ + $infos['id'] = 'external'; + } + }else{ + $infos['id'] = 'external'; + } + + if(strpos($slide_id, 'static_') !== false){ + $infos['url'] = RevSliderBaseAdmin::getViewUrl(RevSliderAdmin::VIEW_SLIDE, 'id=static_'.$sliderID); + }else{ + $infos['url'] = RevSliderBaseAdmin::getViewUrl(RevSliderAdmin::VIEW_SLIDE, 'id='.$slide_id); + } + + $used_images[$layer['image_url']] = $infos; //image_url if image caption + } + break; + case 'video': + $using_videos = true; + + //get cover image if existing + $infos = array(); + $poster_img = array(); + if(isset($layer['video_data']) && isset($layer['video_data']->urlPoster)){ + $poster_img[] = $layer['video_data']->urlPoster; + } + if(isset($layer['video_image_url']) && isset($layer['video_image_url'])){ + $poster_img[] = $layer['video_image_url']; + } + if(!empty($poster_img)){ + foreach($poster_img as $img){ + if(trim($img) == '') continue; + + $cur_img_id = RevSliderFunctionsWP::get_image_id_by_url($img); + + if($cur_img_id !== false){ + if(!isset($layer['layer-image-size']) || $layer['layer-image-size'] == 'auto') $layer['layer-image-size'] = $slide['params']['image_source_type']; + + $urlImage = wp_get_attachment_image_src($cur_img_id, $layer['layer-image-size']); + + if($urlImage !== false){ + $infos['id'] = $cur_img_id; + $file = get_attached_file( $cur_img_id ); + $infos['info'] = pathinfo( $file ); + if(file_exists( $file )){ + $infos['size'] = filesize( $file ); + $infos['size-format'] = size_format($infos['size'], 2); + $img_size += $infos['size']; + if ($slide_counter==1) + $firstslide_size += $infos['size']; + if ($slide_counter==1 || $slide_counter==2 || $slide_counter==count($slides)) + $smartslide_size += $infos['size']; + }else{ + $infos['id'] = false; + } + }else{ + $infos['id'] = 'external'; + } + }else{ + $infos['id'] = 'external'; + } + + if(strpos($slide_id, 'static_') !== false){ + $infos['url'] = RevSliderBaseAdmin::getViewUrl(RevSliderAdmin::VIEW_SLIDE, 'id=static_'.$sliderID); + }else{ + $infos['url'] = RevSliderBaseAdmin::getViewUrl(RevSliderAdmin::VIEW_SLIDE, 'id='.$slide_id); + } + + $used_images[$img] = $infos; //image_url if image caption + } + } + + $infos = array(); + if(isset($layer['video_type'])){ + //add videos and try to get video size + if(isset($layer['video_data'])){ + $video_arr = array(); + $max_video_size = 0; + + if(strpos($slide_id, 'static_') !== false){ + $infos['url'] = RevSliderBaseAdmin::getViewUrl(RevSliderAdmin::VIEW_SLIDE, 'id=static_'.$sliderID); + }else{ + $infos['url'] = RevSliderBaseAdmin::getViewUrl(RevSliderAdmin::VIEW_SLIDE, 'id='.$slide_id); + } + + switch($layer['video_type']){ + case 'html5': + if(isset($layer['video_data']->urlMp4) && !empty($layer['video_data']->urlMp4)) $video_arr['mp4'] = $layer['video_data']->urlMp4; + if(isset($layer['video_data']->urlWebm) && !empty($layer['video_data']->urlWebm)) $video_arr['webm'] = $layer['video_data']->urlWebm; + if(isset($layer['video_data']->urlOgv) && !empty($layer['video_data']->urlOgv)) $video_arr['mp4'] = $layer['video_data']->urlOgv; + if(!empty($video_arr)){ + foreach($video_arr as $type => $url){ + $cur_id = RevSliderFunctionsWP::get_image_id_by_url($url); + + if($cur_id !== false){ + $infos['id'] = $cur_id; + $file = get_attached_file( $cur_id ); + $infos['info'] = pathinfo( $file ); + if(file_exists( $file )){ + $infos['size'] = filesize( $file ); + $infos['size-format'] = size_format($infos['size'], 2); + if($infos['size'] > $max_video_size) $max_video_size = $infos['size']; //add only the largest video of the three here as each browser loads only one file and we can add here the biggest + }else{ + $infos['id'] = 'external'; + } + }else{ + $infos['id'] = 'external'; + } + + $used_videos[$url] = $infos; + } + + $video_size += $max_video_size; + } + break; + case 'youtube': + $infos['id'] = 'external'; + if(!isset($layer['video_data']->id) || empty($layer['video_data']->id)) continue; + $used_videos[$do_ssl.'//www.youtube.com/watch?v='.$layer['video_data']->id] = $infos; + break; + case 'vimeo': + if(!isset($layer['video_data']->id) || empty($layer['video_data']->id)) continue; + $infos['id'] = 'external'; + $used_videos[$do_ssl.'//vimeo.com/'.$layer['video_data']->id] = $infos; + break; + } + + } + } + break; + } + + //check captions for actions + if(isset($layer['layer_action']) && !empty($layer['layer_action'])){ + + $a_action = RevSliderFunctions::cleanStdClassToArray(RevSliderFunctions::getVal($layer['layer_action'], 'action', array())); + $a_link_type = RevSliderFunctions::cleanStdClassToArray(RevSliderFunctions::getVal($layer['layer_action'], 'link_type', array())); + + if(!empty($a_action)){ + foreach($a_action as $num => $action){ + if($using_actions == true) break; + + if($action !== 'link'){ + $using_actions = true; + }else{ + //check if jQuery or a tag + if($a_link_type[$num] == 'jquery') $using_actions = true; + } + } + } + + } + + if(isset($layer['style']) && $layer['style'] != '') $used_captions[$layer['style']] = true; + } + } + } + } + + + + $total_size += $img_size; + + $img_counter = 0; + $issues =""; + //$total_size += $video_size; + ?> + + +
        + + + + + + + + + + + + + + + + %umtsspeed-single% + + + + %dslspeed-single% + + + + %t1speed-single% + + + + + + + %umtsspeed-smart% + + + + %dslspeed-smart% + + + + %t1speed-smart% + + + + + + + %umtsspeed-all% + + + + %dslspeed-all% + + + + %t1speed-all% + + + + + + + %overall_size% + Show Full Statistics + + + + %firstslide_size% + %smartslide_size% + %allslide_size% + Show All Issues + + +
        + + + + + + + + + standardpreset || heropreset || carouselpreset + +$presets[] = array ( + 'settings' => array ('class' => '', 'image' => RS_PLUGIN_URL.'admin/assets/images/sliderpresets/slideshow_auto_layout.png', 'name' => 'Slideshow-Auto', 'preset' => 'standardpreset' ), + 'values' => + array ( + 'next_slide_on_window_focus' => 'off', + 'delay' => '9000', + 'start_js_after_delay' => '0', + 'image_source_type' => 'full', + 0 => 'revapi39.bind(\\"revolution.slide.layeraction\\",function (e) { + //data.eventtype - Layer Action (enterstage, enteredstage, leavestage,leftstage) + //data.layertype - Layer Type (image,video,html) + //data.layersettings - Default Settings for Layer + //data.layer - Layer as jQuery Object +});', + 'start_with_slide' => '1', + 'stop_on_hover' => 'on', + 'stop_slider' => 'off', + 'stop_after_loops' => '0', + 'stop_at_slide' => '1', + 'shuffle' => 'off', + 'viewport_start' => 'wait', + 'viewport_area' => '80', + 'enable_progressbar' => 'on', + 'background_dotted_overlay' => 'none', + 'background_color' => 'transparent', + 'padding' => '0', + 'show_background_image' => 'off', + 'background_image' => '', + 'bg_fit' => 'cover', + 'bg_repeat' => 'no-repeat', + 'bg_position' => 'center center', + 'position' => 'center', + 'use_spinner' => '-1', + 'spinner_color' => '#FFFFFF', + 'enable_arrows' => 'on', + 'navigation_arrow_style' => 'round', + 'arrows_always_on' => 'true', + 'hide_arrows' => '200', + 'hide_arrows_mobile' => '1200', + 'hide_arrows_on_mobile' => 'on', + 'arrows_under_hidden' => '600', + 'hide_arrows_over' => 'off', + 'arrows_over_hidden' => '0', + 'leftarrow_align_hor' => 'left', + 'leftarrow_align_vert' => 'center', + 'leftarrow_offset_hor' => '30', + 'leftarrow_offset_vert' => '0', + 'rightarrow_align_hor' => 'right', + 'rightarrow_align_vert' => 'center', + 'rightarrow_offset_hor' => '30', + 'rightarrow_offset_vert' => '0', + 'enable_bullets' => 'on', + 'navigation_bullets_style' => 'round-old', + 'bullets_space' => '5', + 'bullets_direction' => 'horizontal', + 'bullets_always_on' => 'true', + 'hide_bullets' => '200', + 'hide_bullets_mobile' => '1200', + 'hide_bullets_on_mobile' => 'on', + 'bullets_under_hidden' => '600', + 'hide_bullets_over' => 'off', + 'bullets_over_hidden' => '0', + 'bullets_align_hor' => 'center', + 'bullets_align_vert' => 'bottom', + 'bullets_offset_hor' => '0', + 'bullets_offset_vert' => '30', + 'enable_thumbnails' => 'off', + 'thumbnails_padding' => '5', + 'span_thumbnails_wrapper' => 'off', + 'thumbnails_wrapper_color' => 'transparent', + 'thumbnails_wrapper_opacity' => '100', + 'thumbnails_style' => 'round', + 'thumb_amount' => '5', + 'thumbnails_space' => '5', + 'thumbnail_direction' => 'horizontal', + 'thumb_width' => '100', + 'thumb_height' => '50', + 'thumb_width_min' => '100', + 'thumbs_always_on' => 'false', + 'hide_thumbs' => '200', + 'hide_thumbs_mobile' => '1200', + 'hide_thumbs_on_mobile' => 'off', + 'thumbs_under_hidden' => '0', + 'hide_thumbs_over' => 'off', + 'thumbs_over_hidden' => '0', + 'thumbnails_inner_outer' => 'inner', + 'thumbnails_align_hor' => 'center', + 'thumbnails_align_vert' => 'bottom', + 'thumbnails_offset_hor' => '0', + 'thumbnails_offset_vert' => '20', + 'enable_tabs' => 'off', + 'tabs_padding' => '5', + 'span_tabs_wrapper' => 'off', + 'tabs_wrapper_color' => 'transparent', + 'tabs_wrapper_opacity' => '5', + 'tabs_style' => '', + 'tabs_amount' => '5', + 'tabs_space' => '5', + 'tabs_direction' => 'horizontal', + 'tabs_width' => '100', + 'tabs_height' => '50', + 'tabs_width_min' => '100', + 'tabs_always_on' => 'false', + 'hide_tabs' => '200', + 'hide_tabs_mobile' => '1200', + 'hide_tabs_on_mobile' => 'off', + 'tabs_under_hidden' => '0', + 'hide_tabs_over' => 'off', + 'tabs_over_hidden' => '0', + 'tabs_inner_outer' => 'inner', + 'tabs_align_hor' => 'center', + 'tabs_align_vert' => 'bottom', + 'tabs_offset_hor' => '0', + 'tabs_offset_vert' => '20', + 'touchenabled' => 'on', + 'drag_block_vertical' => 'off', + 'swipe_velocity' => '75', + 'swipe_min_touches' => '50', + 'swipe_direction' => 'horizontal', + 'keyboard_navigation' => 'off', + 'keyboard_direction' => 'horizontal', + 'mousescroll_navigation' => 'off', + 'carousel_infinity' => 'off', + 'carousel_space' => '0', + 'carousel_borderr' => '0', + 'carousel_borderr_unit' => 'px', + 'carousel_padding_top' => '0', + 'carousel_padding_bottom' => '0', + 'carousel_maxitems' => '3', + 'carousel_stretch' => 'off', + 'carousel_fadeout' => 'on', + 'carousel_varyfade' => 'off', + 'carousel_rotation' => 'off', + 'carousel_varyrotate' => 'off', + 'carousel_maxrotation' => '0', + 'carousel_scale' => 'off', + 'carousel_varyscale' => 'off', + 'carousel_scaledown' => '50', + 'carousel_hposition' => 'center', + 'carousel_vposition' => 'center', + 'use_parallax' => 'on', + 'disable_parallax_mobile' => 'off', + 'parallax_type' => 'mouse', + 'parallax_origo' => 'slidercenter', + 'parallax_speed' => '2000', + 'parallax_level_1' => '2', + 'parallax_level_2' => '3', + 'parallax_level_3' => '4', + 'parallax_level_4' => '5', + 'parallax_level_5' => '6', + 'parallax_level_6' => '7', + 'parallax_level_7' => '12', + 'parallax_level_8' => '16', + 'parallax_level_9' => '10', + 'parallax_level_10' => '50', + 'lazy_load_type' => 'smart', + 'seo_optimization' => 'none', + 'simplify_ie8_ios4' => 'off', + 'show_alternative_type' => 'off', + 'show_alternate_image' => '', + 'jquery_noconflict' => 'off', + 'js_to_body' => 'false', + 'output_type' => 'none', + 'jquery_debugmode' => 'off', + 'slider_type' => 'auto', + 'width' => '1240', + 'width_notebook' => '1024', + 'width_tablet' => '778', + 'width_mobile' => '480', + 'height' => '600', + 'height_notebook' => '600', + 'height_tablet' => '500', + 'height_mobile' => '400', + 'enable_custom_size_notebook' => 'on', + 'enable_custom_size_tablet' => 'on', + 'enable_custom_size_iphone' => 'on', + 'main_overflow_hidden' => 'off', + 'auto_height' => 'off', + 'min_height' => '', + 'custom_javascript' => '', + 'custom_css' => '', + ), + ); + +$presets[] = array ( + 'settings' => + array ( 'class' => '', 'image' => RS_PLUGIN_URL.'admin/assets/images/sliderpresets/slideshow_auto_layout.png', 'name' => 'Slideshow-Full-Width', 'preset' => 'standardpreset' ), + 'values' => + array ( + 'next_slide_on_window_focus' => 'off', + 'delay' => '9000', + 'start_js_after_delay' => '0', + 'image_source_type' => 'full', + 0 => 'revapi39.bind(\\"revolution.slide.layeraction\\",function (e) { + //data.eventtype - Layer Action (enterstage, enteredstage, leavestage,leftstage) + //data.layertype - Layer Type (image,video,html) + //data.layersettings - Default Settings for Layer + //data.layer - Layer as jQuery Object +});', + 'start_with_slide' => '1', + 'stop_on_hover' => 'on', + 'stop_slider' => 'off', + 'stop_after_loops' => '0', + 'stop_at_slide' => '1', + 'shuffle' => 'off', + 'viewport_start' => 'wait', + 'viewport_area' => '80', + 'enable_progressbar' => 'on', + 'background_dotted_overlay' => 'none', + 'background_color' => 'transparent', + 'padding' => '0', + 'show_background_image' => 'off', + 'background_image' => '', + 'bg_fit' => 'cover', + 'bg_repeat' => 'no-repeat', + 'bg_position' => 'center center', + 'position' => 'center', + 'use_spinner' => '-1', + 'spinner_color' => '#FFFFFF', + 'enable_arrows' => 'on', + 'navigation_arrow_style' => 'round', + 'arrows_always_on' => 'true', + 'hide_arrows' => '200', + 'hide_arrows_mobile' => '1200', + 'hide_arrows_on_mobile' => 'on', + 'arrows_under_hidden' => '600', + 'hide_arrows_over' => 'off', + 'arrows_over_hidden' => '0', + 'leftarrow_align_hor' => 'left', + 'leftarrow_align_vert' => 'center', + 'leftarrow_offset_hor' => '30', + 'leftarrow_offset_vert' => '0', + 'rightarrow_align_hor' => 'right', + 'rightarrow_align_vert' => 'center', + 'rightarrow_offset_hor' => '30', + 'rightarrow_offset_vert' => '0', + 'enable_bullets' => 'on', + 'navigation_bullets_style' => 'round-old', + 'bullets_space' => '5', + 'bullets_direction' => 'horizontal', + 'bullets_always_on' => 'true', + 'hide_bullets' => '200', + 'hide_bullets_mobile' => '1200', + 'hide_bullets_on_mobile' => 'on', + 'bullets_under_hidden' => '600', + 'hide_bullets_over' => 'off', + 'bullets_over_hidden' => '0', + 'bullets_align_hor' => 'center', + 'bullets_align_vert' => 'bottom', + 'bullets_offset_hor' => '0', + 'bullets_offset_vert' => '30', + 'enable_thumbnails' => 'off', + 'thumbnails_padding' => '5', + 'span_thumbnails_wrapper' => 'off', + 'thumbnails_wrapper_color' => 'transparent', + 'thumbnails_wrapper_opacity' => '100', + 'thumbnails_style' => 'round', + 'thumb_amount' => '5', + 'thumbnails_space' => '5', + 'thumbnail_direction' => 'horizontal', + 'thumb_width' => '100', + 'thumb_height' => '50', + 'thumb_width_min' => '100', + 'thumbs_always_on' => 'false', + 'hide_thumbs' => '200', + 'hide_thumbs_mobile' => '1200', + 'hide_thumbs_on_mobile' => 'off', + 'thumbs_under_hidden' => '0', + 'hide_thumbs_over' => 'off', + 'thumbs_over_hidden' => '0', + 'thumbnails_inner_outer' => 'inner', + 'thumbnails_align_hor' => 'center', + 'thumbnails_align_vert' => 'bottom', + 'thumbnails_offset_hor' => '0', + 'thumbnails_offset_vert' => '20', + 'enable_tabs' => 'off', + 'tabs_padding' => '5', + 'span_tabs_wrapper' => 'off', + 'tabs_wrapper_color' => 'transparent', + 'tabs_wrapper_opacity' => '5', + 'tabs_style' => '', + 'tabs_amount' => '5', + 'tabs_space' => '5', + 'tabs_direction' => 'horizontal', + 'tabs_width' => '100', + 'tabs_height' => '50', + 'tabs_width_min' => '100', + 'tabs_always_on' => 'false', + 'hide_tabs' => '200', + 'hide_tabs_mobile' => '1200', + 'hide_tabs_on_mobile' => 'off', + 'tabs_under_hidden' => '0', + 'hide_tabs_over' => 'off', + 'tabs_over_hidden' => '0', + 'tabs_inner_outer' => 'inner', + 'tabs_align_hor' => 'center', + 'tabs_align_vert' => 'bottom', + 'tabs_offset_hor' => '0', + 'tabs_offset_vert' => '20', + 'touchenabled' => 'on', + 'drag_block_vertical' => 'off', + 'swipe_velocity' => '75', + 'swipe_min_touches' => '50', + 'swipe_direction' => 'horizontal', + 'keyboard_navigation' => 'off', + 'keyboard_direction' => 'horizontal', + 'mousescroll_navigation' => 'off', + 'carousel_infinity' => 'off', + 'carousel_space' => '0', + 'carousel_borderr' => '0', + 'carousel_borderr_unit' => 'px', + 'carousel_padding_top' => '0', + 'carousel_padding_bottom' => '0', + 'carousel_maxitems' => '3', + 'carousel_stretch' => 'off', + 'carousel_fadeout' => 'on', + 'carousel_varyfade' => 'off', + 'carousel_rotation' => 'off', + 'carousel_varyrotate' => 'off', + 'carousel_maxrotation' => '0', + 'carousel_scale' => 'off', + 'carousel_varyscale' => 'off', + 'carousel_scaledown' => '50', + 'carousel_hposition' => 'center', + 'carousel_vposition' => 'center', + 'use_parallax' => 'on', + 'disable_parallax_mobile' => 'off', + 'parallax_type' => 'mouse', + 'parallax_origo' => 'slidercenter', + 'parallax_speed' => '2000', + 'parallax_level_1' => '2', + 'parallax_level_2' => '3', + 'parallax_level_3' => '4', + 'parallax_level_4' => '5', + 'parallax_level_5' => '6', + 'parallax_level_6' => '7', + 'parallax_level_7' => '12', + 'parallax_level_8' => '16', + 'parallax_level_9' => '10', + 'parallax_level_10' => '50', + 'lazy_load_type' => 'smart', + 'seo_optimization' => 'none', + 'simplify_ie8_ios4' => 'off', + 'show_alternative_type' => 'off', + 'show_alternate_image' => '', + 'jquery_noconflict' => 'off', + 'js_to_body' => 'false', + 'output_type' => 'none', + 'jquery_debugmode' => 'off', + 'slider_type' => 'fullwidth', + 'width' => '1240', + 'width_notebook' => '1024', + 'width_tablet' => '778', + 'width_mobile' => '480', + 'height' => '600', + 'height_notebook' => '600', + 'height_tablet' => '500', + 'height_mobile' => '400', + 'enable_custom_size_notebook' => 'on', + 'enable_custom_size_tablet' => 'on', + 'enable_custom_size_iphone' => 'on', + 'main_overflow_hidden' => 'off', + 'auto_height' => 'off', + 'min_height' => '', + 'custom_javascript' => '', + 'custom_css' => '', + ), + ); + +$presets[] = array ( + 'settings' => + array ('class' => '', 'image' => RS_PLUGIN_URL.'admin/assets/images/sliderpresets/slideshow_auto_layout.png', 'name' => 'Slideshow-Full-Screen', 'preset' => 'standardpreset' ), + 'values' => + array ( + 'next_slide_on_window_focus' => 'off', + 'delay' => '9000', + 'start_js_after_delay' => '0', + 'image_source_type' => 'full', + 0 => 'revapi39.bind(\\"revolution.slide.layeraction\\",function (e) { + //data.eventtype - Layer Action (enterstage, enteredstage, leavestage,leftstage) + //data.layertype - Layer Type (image,video,html) + //data.layersettings - Default Settings for Layer + //data.layer - Layer as jQuery Object +});', + 'start_with_slide' => '1', + 'stop_on_hover' => 'on', + 'stop_slider' => 'off', + 'stop_after_loops' => '0', + 'stop_at_slide' => '1', + 'shuffle' => 'off', + 'viewport_start' => 'wait', + 'viewport_area' => '80', + 'enable_progressbar' => 'on', + 'background_dotted_overlay' => 'none', + 'background_color' => 'transparent', + 'padding' => '0', + 'show_background_image' => 'off', + 'background_image' => '', + 'bg_fit' => 'cover', + 'bg_repeat' => 'no-repeat', + 'bg_position' => 'center center', + 'position' => 'center', + 'use_spinner' => '-1', + 'spinner_color' => '#FFFFFF', + 'enable_arrows' => 'on', + 'navigation_arrow_style' => 'round', + 'arrows_always_on' => 'true', + 'hide_arrows' => '200', + 'hide_arrows_mobile' => '1200', + 'hide_arrows_on_mobile' => 'on', + 'arrows_under_hidden' => '600', + 'hide_arrows_over' => 'off', + 'arrows_over_hidden' => '0', + 'leftarrow_align_hor' => 'left', + 'leftarrow_align_vert' => 'center', + 'leftarrow_offset_hor' => '30', + 'leftarrow_offset_vert' => '0', + 'rightarrow_align_hor' => 'right', + 'rightarrow_align_vert' => 'center', + 'rightarrow_offset_hor' => '30', + 'rightarrow_offset_vert' => '0', + 'enable_bullets' => 'on', + 'navigation_bullets_style' => 'round-old', + 'bullets_space' => '5', + 'bullets_direction' => 'horizontal', + 'bullets_always_on' => 'true', + 'hide_bullets' => '200', + 'hide_bullets_mobile' => '1200', + 'hide_bullets_on_mobile' => 'on', + 'bullets_under_hidden' => '600', + 'hide_bullets_over' => 'off', + 'bullets_over_hidden' => '0', + 'bullets_align_hor' => 'center', + 'bullets_align_vert' => 'bottom', + 'bullets_offset_hor' => '0', + 'bullets_offset_vert' => '30', + 'enable_thumbnails' => 'off', + 'thumbnails_padding' => '5', + 'span_thumbnails_wrapper' => 'off', + 'thumbnails_wrapper_color' => 'transparent', + 'thumbnails_wrapper_opacity' => '100', + 'thumbnails_style' => 'round', + 'thumb_amount' => '5', + 'thumbnails_space' => '5', + 'thumbnail_direction' => 'horizontal', + 'thumb_width' => '100', + 'thumb_height' => '50', + 'thumb_width_min' => '100', + 'thumbs_always_on' => 'false', + 'hide_thumbs' => '200', + 'hide_thumbs_mobile' => '1200', + 'hide_thumbs_on_mobile' => 'off', + 'thumbs_under_hidden' => '0', + 'hide_thumbs_over' => 'off', + 'thumbs_over_hidden' => '0', + 'thumbnails_inner_outer' => 'inner', + 'thumbnails_align_hor' => 'center', + 'thumbnails_align_vert' => 'bottom', + 'thumbnails_offset_hor' => '0', + 'thumbnails_offset_vert' => '20', + 'enable_tabs' => 'off', + 'tabs_padding' => '5', + 'span_tabs_wrapper' => 'off', + 'tabs_wrapper_color' => 'transparent', + 'tabs_wrapper_opacity' => '5', + 'tabs_style' => '', + 'tabs_amount' => '5', + 'tabs_space' => '5', + 'tabs_direction' => 'horizontal', + 'tabs_width' => '100', + 'tabs_height' => '50', + 'tabs_width_min' => '100', + 'tabs_always_on' => 'false', + 'hide_tabs' => '200', + 'hide_tabs_mobile' => '1200', + 'hide_tabs_on_mobile' => 'off', + 'tabs_under_hidden' => '0', + 'hide_tabs_over' => 'off', + 'tabs_over_hidden' => '0', + 'tabs_inner_outer' => 'inner', + 'tabs_align_hor' => 'center', + 'tabs_align_vert' => 'bottom', + 'tabs_offset_hor' => '0', + 'tabs_offset_vert' => '20', + 'touchenabled' => 'on', + 'drag_block_vertical' => 'off', + 'swipe_velocity' => '75', + 'swipe_min_touches' => '50', + 'swipe_direction' => 'horizontal', + 'keyboard_navigation' => 'off', + 'keyboard_direction' => 'horizontal', + 'mousescroll_navigation' => 'off', + 'carousel_infinity' => 'off', + 'carousel_space' => '0', + 'carousel_borderr' => '0', + 'carousel_borderr_unit' => 'px', + 'carousel_padding_top' => '0', + 'carousel_padding_bottom' => '0', + 'carousel_maxitems' => '3', + 'carousel_stretch' => 'off', + 'carousel_fadeout' => 'on', + 'carousel_varyfade' => 'off', + 'carousel_rotation' => 'off', + 'carousel_varyrotate' => 'off', + 'carousel_maxrotation' => '0', + 'carousel_scale' => 'off', + 'carousel_varyscale' => 'off', + 'carousel_scaledown' => '50', + 'carousel_hposition' => 'center', + 'carousel_vposition' => 'center', + 'use_parallax' => 'on', + 'disable_parallax_mobile' => 'off', + 'parallax_type' => 'mouse', + 'parallax_origo' => 'slidercenter', + 'parallax_speed' => '2000', + 'parallax_level_1' => '2', + 'parallax_level_2' => '3', + 'parallax_level_3' => '4', + 'parallax_level_4' => '5', + 'parallax_level_5' => '6', + 'parallax_level_6' => '7', + 'parallax_level_7' => '12', + 'parallax_level_8' => '16', + 'parallax_level_9' => '10', + 'parallax_level_10' => '50', + 'lazy_load_type' => 'smart', + 'seo_optimization' => 'none', + 'simplify_ie8_ios4' => 'off', + 'show_alternative_type' => 'off', + 'show_alternate_image' => '', + 'jquery_noconflict' => 'off', + 'js_to_body' => 'false', + 'output_type' => 'none', + 'jquery_debugmode' => 'off', + 'slider_type' => 'fullscreen', + 'width' => '1240', + 'width_notebook' => '1024', + 'width_tablet' => '778', + 'width_mobile' => '480', + 'height' => '600', + 'height_notebook' => '600', + 'height_tablet' => '500', + 'height_mobile' => '400', + 'enable_custom_size_notebook' => 'on', + 'enable_custom_size_tablet' => 'on', + 'enable_custom_size_iphone' => 'on', + 'main_overflow_hidden' => 'off', + 'auto_height' => 'off', + 'min_height' => '', + 'custom_javascript' => '', + 'custom_css' => '', + ), + ); + +$presets[] = array ( + 'settings' => + array ('class' => '', 'image' => RS_PLUGIN_URL.'admin/assets/images/sliderpresets/thumb_auto1.png', 'name' => 'Thumbs-Bottom-Auto', 'preset' => 'standardpreset' ), + 'values' => + array ( + 'next_slide_on_window_focus' => 'off', + 'delay' => '9000', + 'start_js_after_delay' => '0', + 'image_source_type' => 'full', + 0 => 'revapi39.bind(\\"revolution.slide.layeraction\\",function (e) { + //data.eventtype - Layer Action (enterstage, enteredstage, leavestage,leftstage) + //data.layertype - Layer Type (image,video,html) + //data.layersettings - Default Settings for Layer + //data.layer - Layer as jQuery Object +});', + 'start_with_slide' => '1', + 'stop_on_hover' => 'off', + 'stop_slider' => 'on', + 'stop_after_loops' => '0', + 'stop_at_slide' => '1', + 'shuffle' => 'off', + 'viewport_start' => 'wait', + 'viewport_area' => '80', + 'enable_progressbar' => 'off', + 'background_dotted_overlay' => 'none', + 'background_color' => 'transparent', + 'padding' => '0', + 'show_background_image' => 'off', + 'background_image' => '', + 'bg_fit' => 'cover', + 'bg_repeat' => 'no-repeat', + 'bg_position' => 'center center', + 'position' => 'center', + 'use_spinner' => '-1', + 'spinner_color' => '#FFFFFF', + 'enable_arrows' => 'on', + 'navigation_arrow_style' => 'navbar', + 'arrows_always_on' => 'false', + 'hide_arrows' => '200', + 'hide_arrows_mobile' => '1200', + 'hide_arrows_on_mobile' => 'on', + 'arrows_under_hidden' => '600', + 'hide_arrows_over' => 'off', + 'arrows_over_hidden' => '0', + 'leftarrow_align_hor' => 'left', + 'leftarrow_align_vert' => 'center', + 'leftarrow_offset_hor' => '30', + 'leftarrow_offset_vert' => '0', + 'rightarrow_align_hor' => 'right', + 'rightarrow_align_vert' => 'center', + 'rightarrow_offset_hor' => '30', + 'rightarrow_offset_vert' => '0', + 'enable_bullets' => 'off', + 'navigation_bullets_style' => 'round-old', + 'bullets_space' => '5', + 'bullets_direction' => 'horizontal', + 'bullets_always_on' => 'true', + 'hide_bullets' => '200', + 'hide_bullets_mobile' => '1200', + 'hide_bullets_on_mobile' => 'on', + 'bullets_under_hidden' => '600', + 'hide_bullets_over' => 'off', + 'bullets_over_hidden' => '0', + 'bullets_align_hor' => 'center', + 'bullets_align_vert' => 'bottom', + 'bullets_offset_hor' => '0', + 'bullets_offset_vert' => '30', + 'enable_thumbnails' => 'on', + 'thumbnails_padding' => '5', + 'span_thumbnails_wrapper' => 'off', + 'thumbnails_wrapper_color' => 'transparent', + 'thumbnails_wrapper_opacity' => '100', + 'thumbnails_style' => 'navbar', + 'thumb_amount' => '5', + 'thumbnails_space' => '5', + 'thumbnail_direction' => 'horizontal', + 'thumb_width' => '50', + 'thumb_height' => '50', + 'thumb_width_min' => '50', + 'thumbs_always_on' => 'false', + 'hide_thumbs' => '200', + 'hide_thumbs_mobile' => '1200', + 'hide_thumbs_on_mobile' => 'off', + 'thumbs_under_hidden' => '0', + 'hide_thumbs_over' => 'off', + 'thumbs_over_hidden' => '0', + 'thumbnails_inner_outer' => 'inner', + 'thumbnails_align_hor' => 'center', + 'thumbnails_align_vert' => 'bottom', + 'thumbnails_offset_hor' => '0', + 'thumbnails_offset_vert' => '20', + 'enable_tabs' => 'off', + 'tabs_padding' => '5', + 'span_tabs_wrapper' => 'off', + 'tabs_wrapper_color' => 'transparent', + 'tabs_wrapper_opacity' => '5', + 'tabs_style' => '', + 'tabs_amount' => '5', + 'tabs_space' => '5', + 'tabs_direction' => 'horizontal', + 'tabs_width' => '100', + 'tabs_height' => '50', + 'tabs_width_min' => '100', + 'tabs_always_on' => 'false', + 'hide_tabs' => '200', + 'hide_tabs_mobile' => '1200', + 'hide_tabs_on_mobile' => 'off', + 'tabs_under_hidden' => '0', + 'hide_tabs_over' => 'off', + 'tabs_over_hidden' => '0', + 'tabs_inner_outer' => 'inner', + 'tabs_align_hor' => 'center', + 'tabs_align_vert' => 'bottom', + 'tabs_offset_hor' => '0', + 'tabs_offset_vert' => '20', + 'touchenabled' => 'on', + 'drag_block_vertical' => 'off', + 'swipe_velocity' => '75', + 'swipe_min_touches' => '50', + 'swipe_direction' => 'horizontal', + 'keyboard_navigation' => 'off', + 'keyboard_direction' => 'horizontal', + 'mousescroll_navigation' => 'off', + 'carousel_infinity' => 'off', + 'carousel_space' => '0', + 'carousel_borderr' => '0', + 'carousel_borderr_unit' => 'px', + 'carousel_padding_top' => '0', + 'carousel_padding_bottom' => '0', + 'carousel_maxitems' => '3', + 'carousel_stretch' => 'off', + 'carousel_fadeout' => 'on', + 'carousel_varyfade' => 'off', + 'carousel_rotation' => 'off', + 'carousel_varyrotate' => 'off', + 'carousel_maxrotation' => '0', + 'carousel_scale' => 'off', + 'carousel_varyscale' => 'off', + 'carousel_scaledown' => '50', + 'carousel_hposition' => 'center', + 'carousel_vposition' => 'center', + 'use_parallax' => 'on', + 'disable_parallax_mobile' => 'off', + 'parallax_type' => 'mouse', + 'parallax_origo' => 'slidercenter', + 'parallax_speed' => '2000', + 'parallax_level_1' => '2', + 'parallax_level_2' => '3', + 'parallax_level_3' => '4', + 'parallax_level_4' => '5', + 'parallax_level_5' => '6', + 'parallax_level_6' => '7', + 'parallax_level_7' => '12', + 'parallax_level_8' => '16', + 'parallax_level_9' => '10', + 'parallax_level_10' => '50', + 'lazy_load_type' => 'smart', + 'seo_optimization' => 'none', + 'simplify_ie8_ios4' => 'off', + 'show_alternative_type' => 'off', + 'show_alternate_image' => '', + 'jquery_noconflict' => 'off', + 'js_to_body' => 'false', + 'output_type' => 'none', + 'jquery_debugmode' => 'off', + 'slider_type' => 'auto', + 'width' => '1240', + 'width_notebook' => '1024', + 'width_tablet' => '778', + 'width_mobile' => '480', + 'height' => '600', + 'height_notebook' => '600', + 'height_tablet' => '500', + 'height_mobile' => '400', + 'enable_custom_size_notebook' => 'on', + 'enable_custom_size_tablet' => 'on', + 'enable_custom_size_iphone' => 'on', + 'main_overflow_hidden' => 'off', + 'auto_height' => 'off', + 'min_height' => '', + 'custom_javascript' => '', + 'custom_css' => '', + ), + ); + +$presets[] = array ( + 'settings' => + array ('class' => '', 'image' => RS_PLUGIN_URL.'admin/assets/images/sliderpresets/thumbs_left_auto.png', 'name' => 'Thumbs-Left-Auto', 'preset' => 'standardpreset' ), + 'values' => + array ( + 'next_slide_on_window_focus' => 'off', + 'delay' => '9000', + 'start_js_after_delay' => '0', + 'image_source_type' => 'full', + 0 => 'revapi39.bind(\\"revolution.slide.layeraction\\",function (e) { + //data.eventtype - Layer Action (enterstage, enteredstage, leavestage,leftstage) + //data.layertype - Layer Type (image,video,html) + //data.layersettings - Default Settings for Layer + //data.layer - Layer as jQuery Object +});', + 'start_with_slide' => '1', + 'stop_on_hover' => 'off', + 'stop_slider' => 'on', + 'stop_after_loops' => '0', + 'stop_at_slide' => '1', + 'shuffle' => 'off', + 'viewport_start' => 'wait', + 'viewport_area' => '80', + 'enable_progressbar' => 'off', + 'background_dotted_overlay' => 'none', + 'background_color' => 'transparent', + 'padding' => '0', + 'show_background_image' => 'off', + 'background_image' => '', + 'bg_fit' => 'cover', + 'bg_repeat' => 'no-repeat', + 'bg_position' => 'center center', + 'position' => 'center', + 'use_spinner' => '-1', + 'spinner_color' => '#FFFFFF', + 'enable_arrows' => 'on', + 'navigation_arrow_style' => 'navbar', + 'arrows_always_on' => 'false', + 'hide_arrows' => '200', + 'hide_arrows_mobile' => '1200', + 'hide_arrows_on_mobile' => 'off', + 'arrows_under_hidden' => '600', + 'hide_arrows_over' => 'off', + 'arrows_over_hidden' => '0', + 'leftarrow_align_hor' => 'right', + 'leftarrow_align_vert' => 'bottom', + 'leftarrow_offset_hor' => '40', + 'leftarrow_offset_vert' => '0', + 'rightarrow_align_hor' => 'right', + 'rightarrow_align_vert' => 'bottom', + 'rightarrow_offset_hor' => '0', + 'rightarrow_offset_vert' => '0', + 'enable_bullets' => 'off', + 'navigation_bullets_style' => 'round-old', + 'bullets_space' => '5', + 'bullets_direction' => 'horizontal', + 'bullets_always_on' => 'true', + 'hide_bullets' => '200', + 'hide_bullets_mobile' => '1200', + 'hide_bullets_on_mobile' => 'on', + 'bullets_under_hidden' => '600', + 'hide_bullets_over' => 'off', + 'bullets_over_hidden' => '0', + 'bullets_align_hor' => 'center', + 'bullets_align_vert' => 'bottom', + 'bullets_offset_hor' => '0', + 'bullets_offset_vert' => '30', + 'enable_thumbnails' => 'on', + 'thumbnails_padding' => '5', + 'span_thumbnails_wrapper' => 'off', + 'thumbnails_wrapper_color' => 'transparent', + 'thumbnails_wrapper_opacity' => '100', + 'thumbnails_style' => 'navbar', + 'thumb_amount' => '5', + 'thumbnails_space' => '5', + 'thumbnail_direction' => 'vertical', + 'thumb_width' => '50', + 'thumb_height' => '50', + 'thumb_width_min' => '50', + 'thumbs_always_on' => 'false', + 'hide_thumbs' => '200', + 'hide_thumbs_mobile' => '1200', + 'hide_thumbs_on_mobile' => 'on', + 'thumbs_under_hidden' => '778', + 'hide_thumbs_over' => 'off', + 'thumbs_over_hidden' => '0', + 'thumbnails_inner_outer' => 'inner', + 'thumbnails_align_hor' => 'left', + 'thumbnails_align_vert' => 'center', + 'thumbnails_offset_hor' => '20', + 'thumbnails_offset_vert' => '0', + 'enable_tabs' => 'off', + 'tabs_padding' => '5', + 'span_tabs_wrapper' => 'off', + 'tabs_wrapper_color' => 'transparent', + 'tabs_wrapper_opacity' => '5', + 'tabs_style' => '', + 'tabs_amount' => '5', + 'tabs_space' => '5', + 'tabs_direction' => 'horizontal', + 'tabs_width' => '100', + 'tabs_height' => '50', + 'tabs_width_min' => '100', + 'tabs_always_on' => 'false', + 'hide_tabs' => '200', + 'hide_tabs_mobile' => '1200', + 'hide_tabs_on_mobile' => 'off', + 'tabs_under_hidden' => '0', + 'hide_tabs_over' => 'off', + 'tabs_over_hidden' => '0', + 'tabs_inner_outer' => 'inner', + 'tabs_align_hor' => 'center', + 'tabs_align_vert' => 'bottom', + 'tabs_offset_hor' => '0', + 'tabs_offset_vert' => '20', + 'touchenabled' => 'on', + 'drag_block_vertical' => 'off', + 'swipe_velocity' => '75', + 'swipe_min_touches' => '50', + 'swipe_direction' => 'horizontal', + 'keyboard_navigation' => 'off', + 'keyboard_direction' => 'horizontal', + 'mousescroll_navigation' => 'off', + 'carousel_infinity' => 'off', + 'carousel_space' => '0', + 'carousel_borderr' => '0', + 'carousel_borderr_unit' => 'px', + 'carousel_padding_top' => '0', + 'carousel_padding_bottom' => '0', + 'carousel_maxitems' => '3', + 'carousel_stretch' => 'off', + 'carousel_fadeout' => 'on', + 'carousel_varyfade' => 'off', + 'carousel_rotation' => 'off', + 'carousel_varyrotate' => 'off', + 'carousel_maxrotation' => '0', + 'carousel_scale' => 'off', + 'carousel_varyscale' => 'off', + 'carousel_scaledown' => '50', + 'carousel_hposition' => 'center', + 'carousel_vposition' => 'center', + 'use_parallax' => 'on', + 'disable_parallax_mobile' => 'off', + 'parallax_type' => 'mouse', + 'parallax_origo' => 'slidercenter', + 'parallax_speed' => '2000', + 'parallax_level_1' => '2', + 'parallax_level_2' => '3', + 'parallax_level_3' => '4', + 'parallax_level_4' => '5', + 'parallax_level_5' => '6', + 'parallax_level_6' => '7', + 'parallax_level_7' => '12', + 'parallax_level_8' => '16', + 'parallax_level_9' => '10', + 'parallax_level_10' => '50', + 'lazy_load_type' => 'smart', + 'seo_optimization' => 'none', + 'simplify_ie8_ios4' => 'off', + 'show_alternative_type' => 'off', + 'show_alternate_image' => '', + 'jquery_noconflict' => 'off', + 'js_to_body' => 'false', + 'output_type' => 'none', + 'jquery_debugmode' => 'off', + 'slider_type' => 'auto', + 'width' => '1240', + 'width_notebook' => '1024', + 'width_tablet' => '778', + 'width_mobile' => '480', + 'height' => '600', + 'height_notebook' => '600', + 'height_tablet' => '500', + 'height_mobile' => '400', + 'enable_custom_size_notebook' => 'on', + 'enable_custom_size_tablet' => 'on', + 'enable_custom_size_iphone' => 'on', + 'main_overflow_hidden' => 'off', + 'auto_height' => 'off', + 'min_height' => '', + 'custom_javascript' => '', + 'custom_css' => '', + ), + ); + +$presets[] = array ( + 'settings' => array ('class' => '', 'image' => RS_PLUGIN_URL.'admin/assets/images/sliderpresets/thumbs_right_auto.png', 'name' => 'Thumbs-Right-Auto', 'preset' => 'standardpreset' ), + 'values' => + array ( + 'next_slide_on_window_focus' => 'off', + 'delay' => '9000', + 'start_js_after_delay' => '0', + 'image_source_type' => 'full', + 0 => 'revapi39.bind(\\"revolution.slide.layeraction\\",function (e) { + //data.eventtype - Layer Action (enterstage, enteredstage, leavestage,leftstage) + //data.layertype - Layer Type (image,video,html) + //data.layersettings - Default Settings for Layer + //data.layer - Layer as jQuery Object +});', + 'start_with_slide' => '1', + 'stop_on_hover' => 'off', + 'stop_slider' => 'on', + 'stop_after_loops' => '0', + 'stop_at_slide' => '1', + 'shuffle' => 'off', + 'viewport_start' => 'wait', + 'viewport_area' => '80', + 'enable_progressbar' => 'off', + 'background_dotted_overlay' => 'none', + 'background_color' => 'transparent', + 'padding' => '0', + 'show_background_image' => 'off', + 'background_image' => '', + 'bg_fit' => 'cover', + 'bg_repeat' => 'no-repeat', + 'bg_position' => 'center center', + 'position' => 'center', + 'use_spinner' => '-1', + 'spinner_color' => '#FFFFFF', + 'enable_arrows' => 'on', + 'navigation_arrow_style' => 'navbar', + 'arrows_always_on' => 'false', + 'hide_arrows' => '200', + 'hide_arrows_mobile' => '1200', + 'hide_arrows_on_mobile' => 'off', + 'arrows_under_hidden' => '600', + 'hide_arrows_over' => 'off', + 'arrows_over_hidden' => '0', + 'leftarrow_align_hor' => 'left', + 'leftarrow_align_vert' => 'bottom', + 'leftarrow_offset_hor' => '0', + 'leftarrow_offset_vert' => '0', + 'rightarrow_align_hor' => 'left', + 'rightarrow_align_vert' => 'bottom', + 'rightarrow_offset_hor' => '40', + 'rightarrow_offset_vert' => '0', + 'enable_bullets' => 'off', + 'navigation_bullets_style' => 'round-old', + 'bullets_space' => '5', + 'bullets_direction' => 'horizontal', + 'bullets_always_on' => 'true', + 'hide_bullets' => '200', + 'hide_bullets_mobile' => '1200', + 'hide_bullets_on_mobile' => 'on', + 'bullets_under_hidden' => '600', + 'hide_bullets_over' => 'off', + 'bullets_over_hidden' => '0', + 'bullets_align_hor' => 'center', + 'bullets_align_vert' => 'bottom', + 'bullets_offset_hor' => '0', + 'bullets_offset_vert' => '30', + 'enable_thumbnails' => 'on', + 'thumbnails_padding' => '5', + 'span_thumbnails_wrapper' => 'off', + 'thumbnails_wrapper_color' => 'transparent', + 'thumbnails_wrapper_opacity' => '100', + 'thumbnails_style' => 'navbar', + 'thumb_amount' => '5', + 'thumbnails_space' => '5', + 'thumbnail_direction' => 'vertical', + 'thumb_width' => '50', + 'thumb_height' => '50', + 'thumb_width_min' => '50', + 'thumbs_always_on' => 'false', + 'hide_thumbs' => '200', + 'hide_thumbs_mobile' => '1200', + 'hide_thumbs_on_mobile' => 'on', + 'thumbs_under_hidden' => '778', + 'hide_thumbs_over' => 'off', + 'thumbs_over_hidden' => '0', + 'thumbnails_inner_outer' => 'inner', + 'thumbnails_align_hor' => 'right', + 'thumbnails_align_vert' => 'center', + 'thumbnails_offset_hor' => '20', + 'thumbnails_offset_vert' => '0', + 'enable_tabs' => 'off', + 'tabs_padding' => '5', + 'span_tabs_wrapper' => 'off', + 'tabs_wrapper_color' => 'transparent', + 'tabs_wrapper_opacity' => '5', + 'tabs_style' => '', + 'tabs_amount' => '5', + 'tabs_space' => '5', + 'tabs_direction' => 'horizontal', + 'tabs_width' => '100', + 'tabs_height' => '50', + 'tabs_width_min' => '100', + 'tabs_always_on' => 'false', + 'hide_tabs' => '200', + 'hide_tabs_mobile' => '1200', + 'hide_tabs_on_mobile' => 'off', + 'tabs_under_hidden' => '0', + 'hide_tabs_over' => 'off', + 'tabs_over_hidden' => '0', + 'tabs_inner_outer' => 'inner', + 'tabs_align_hor' => 'center', + 'tabs_align_vert' => 'bottom', + 'tabs_offset_hor' => '0', + 'tabs_offset_vert' => '20', + 'touchenabled' => 'on', + 'drag_block_vertical' => 'off', + 'swipe_velocity' => '75', + 'swipe_min_touches' => '50', + 'swipe_direction' => 'horizontal', + 'keyboard_navigation' => 'off', + 'keyboard_direction' => 'horizontal', + 'mousescroll_navigation' => 'off', + 'carousel_infinity' => 'off', + 'carousel_space' => '0', + 'carousel_borderr' => '0', + 'carousel_borderr_unit' => 'px', + 'carousel_padding_top' => '0', + 'carousel_padding_bottom' => '0', + 'carousel_maxitems' => '3', + 'carousel_stretch' => 'off', + 'carousel_fadeout' => 'on', + 'carousel_varyfade' => 'off', + 'carousel_rotation' => 'off', + 'carousel_varyrotate' => 'off', + 'carousel_maxrotation' => '0', + 'carousel_scale' => 'off', + 'carousel_varyscale' => 'off', + 'carousel_scaledown' => '50', + 'carousel_hposition' => 'center', + 'carousel_vposition' => 'center', + 'use_parallax' => 'on', + 'disable_parallax_mobile' => 'off', + 'parallax_type' => 'mouse', + 'parallax_origo' => 'slidercenter', + 'parallax_speed' => '2000', + 'parallax_level_1' => '2', + 'parallax_level_2' => '3', + 'parallax_level_3' => '4', + 'parallax_level_4' => '5', + 'parallax_level_5' => '6', + 'parallax_level_6' => '7', + 'parallax_level_7' => '12', + 'parallax_level_8' => '16', + 'parallax_level_9' => '10', + 'parallax_level_10' => '50', + 'lazy_load_type' => 'smart', + 'seo_optimization' => 'none', + 'simplify_ie8_ios4' => 'off', + 'show_alternative_type' => 'off', + 'show_alternate_image' => '', + 'jquery_noconflict' => 'off', + 'js_to_body' => 'false', + 'output_type' => 'none', + 'jquery_debugmode' => 'off', + 'slider_type' => 'auto', + 'width' => '1240', + 'width_notebook' => '1024', + 'width_tablet' => '778', + 'width_mobile' => '480', + 'height' => '600', + 'height_notebook' => '600', + 'height_tablet' => '500', + 'height_mobile' => '400', + 'enable_custom_size_notebook' => 'on', + 'enable_custom_size_tablet' => 'on', + 'enable_custom_size_iphone' => 'on', + 'main_overflow_hidden' => 'off', + 'auto_height' => 'off', + 'min_height' => '', + 'custom_javascript' => '', + 'custom_css' => '', + ), + ); +$presets[] = array ( + 'settings' => + array ('class' => '', 'image' => RS_PLUGIN_URL.'admin/assets/images/sliderpresets/scroll_fullscreen.png', 'name' => 'Vertical-Bullet-Full-Screen', 'preset' => 'standardpreset' ), + 'values' => + array ( + 'next_slide_on_window_focus' => 'off', + 'delay' => '9000', + 'start_js_after_delay' => '0', + 'image_source_type' => 'full', + 0 => 'revapi39.bind(\\"revolution.slide.layeraction\\",function (e) { + //data.eventtype - Layer Action (enterstage, enteredstage, leavestage,leftstage) + //data.layertype - Layer Type (image,video,html) + //data.layersettings - Default Settings for Layer + //data.layer - Layer as jQuery Object +});', + 'start_with_slide' => '1', + 'stop_on_hover' => 'off', + 'stop_slider' => 'on', + 'stop_after_loops' => '0', + 'stop_at_slide' => '1', + 'shuffle' => 'off', + 'viewport_start' => 'wait', + 'viewport_area' => '80', + 'enable_progressbar' => 'off', + 'background_dotted_overlay' => 'none', + 'background_color' => 'transparent', + 'padding' => '0', + 'show_background_image' => 'off', + 'background_image' => '', + 'bg_fit' => 'cover', + 'bg_repeat' => 'no-repeat', + 'bg_position' => 'center center', + 'position' => 'center', + 'use_spinner' => '-1', + 'spinner_color' => '#FFFFFF', + 'enable_arrows' => 'off', + 'navigation_arrow_style' => 'navbar', + 'arrows_always_on' => 'false', + 'hide_arrows' => '200', + 'hide_arrows_mobile' => '1200', + 'hide_arrows_on_mobile' => 'off', + 'arrows_under_hidden' => '600', + 'hide_arrows_over' => 'off', + 'arrows_over_hidden' => '0', + 'leftarrow_align_hor' => 'left', + 'leftarrow_align_vert' => 'bottom', + 'leftarrow_offset_hor' => '0', + 'leftarrow_offset_vert' => '0', + 'rightarrow_align_hor' => 'left', + 'rightarrow_align_vert' => 'bottom', + 'rightarrow_offset_hor' => '40', + 'rightarrow_offset_vert' => '0', + 'enable_bullets' => 'on', + 'navigation_bullets_style' => 'round-old', + 'bullets_space' => '5', + 'bullets_direction' => 'vertical', + 'bullets_always_on' => 'false', + 'hide_bullets' => '200', + 'hide_bullets_mobile' => '1200', + 'hide_bullets_on_mobile' => 'on', + 'bullets_under_hidden' => '600', + 'hide_bullets_over' => 'off', + 'bullets_over_hidden' => '0', + 'bullets_align_hor' => 'right', + 'bullets_align_vert' => 'center', + 'bullets_offset_hor' => '30', + 'bullets_offset_vert' => '0', + 'enable_thumbnails' => 'off', + 'thumbnails_padding' => '5', + 'span_thumbnails_wrapper' => 'off', + 'thumbnails_wrapper_color' => 'transparent', + 'thumbnails_wrapper_opacity' => '100', + 'thumbnails_style' => 'navbar', + 'thumb_amount' => '5', + 'thumbnails_space' => '5', + 'thumbnail_direction' => 'vertical', + 'thumb_width' => '50', + 'thumb_height' => '50', + 'thumb_width_min' => '50', + 'thumbs_always_on' => 'false', + 'hide_thumbs' => '200', + 'hide_thumbs_mobile' => '1200', + 'hide_thumbs_on_mobile' => 'on', + 'thumbs_under_hidden' => '778', + 'hide_thumbs_over' => 'off', + 'thumbs_over_hidden' => '0', + 'thumbnails_inner_outer' => 'inner', + 'thumbnails_align_hor' => 'right', + 'thumbnails_align_vert' => 'center', + 'thumbnails_offset_hor' => '20', + 'thumbnails_offset_vert' => '0', + 'enable_tabs' => 'off', + 'tabs_padding' => '5', + 'span_tabs_wrapper' => 'off', + 'tabs_wrapper_color' => 'transparent', + 'tabs_wrapper_opacity' => '5', + 'tabs_style' => '', + 'tabs_amount' => '5', + 'tabs_space' => '5', + 'tabs_direction' => 'horizontal', + 'tabs_width' => '100', + 'tabs_height' => '50', + 'tabs_width_min' => '100', + 'tabs_always_on' => 'false', + 'hide_tabs' => '200', + 'hide_tabs_mobile' => '1200', + 'hide_tabs_on_mobile' => 'off', + 'tabs_under_hidden' => '0', + 'hide_tabs_over' => 'off', + 'tabs_over_hidden' => '0', + 'tabs_inner_outer' => 'inner', + 'tabs_align_hor' => 'center', + 'tabs_align_vert' => 'bottom', + 'tabs_offset_hor' => '0', + 'tabs_offset_vert' => '20', + 'touchenabled' => 'on', + 'drag_block_vertical' => 'off', + 'swipe_velocity' => '75', + 'swipe_min_touches' => '50', + 'swipe_direction' => 'horizontal', + 'keyboard_navigation' => 'off', + 'keyboard_direction' => 'horizontal', + 'mousescroll_navigation' => 'off', + 'carousel_infinity' => 'off', + 'carousel_space' => '0', + 'carousel_borderr' => '0', + 'carousel_borderr_unit' => 'px', + 'carousel_padding_top' => '0', + 'carousel_padding_bottom' => '0', + 'carousel_maxitems' => '3', + 'carousel_stretch' => 'off', + 'carousel_fadeout' => 'on', + 'carousel_varyfade' => 'off', + 'carousel_rotation' => 'off', + 'carousel_varyrotate' => 'off', + 'carousel_maxrotation' => '0', + 'carousel_scale' => 'off', + 'carousel_varyscale' => 'off', + 'carousel_scaledown' => '50', + 'carousel_hposition' => 'center', + 'carousel_vposition' => 'center', + 'use_parallax' => 'on', + 'disable_parallax_mobile' => 'off', + 'parallax_type' => 'mouse', + 'parallax_origo' => 'slidercenter', + 'parallax_speed' => '2000', + 'parallax_level_1' => '2', + 'parallax_level_2' => '3', + 'parallax_level_3' => '4', + 'parallax_level_4' => '5', + 'parallax_level_5' => '6', + 'parallax_level_6' => '7', + 'parallax_level_7' => '12', + 'parallax_level_8' => '16', + 'parallax_level_9' => '10', + 'parallax_level_10' => '50', + 'lazy_load_type' => 'smart', + 'seo_optimization' => 'none', + 'simplify_ie8_ios4' => 'off', + 'show_alternative_type' => 'off', + 'show_alternate_image' => '', + 'jquery_noconflict' => 'off', + 'js_to_body' => 'false', + 'output_type' => 'none', + 'jquery_debugmode' => 'off', + 'slider_type' => 'fullscreen', + 'width' => '1240', + 'width_notebook' => '1024', + 'width_tablet' => '778', + 'width_mobile' => '480', + 'height' => '600', + 'height_notebook' => '600', + 'height_tablet' => '500', + 'height_mobile' => '400', + 'enable_custom_size_notebook' => 'on', + 'enable_custom_size_tablet' => 'on', + 'enable_custom_size_iphone' => 'on', + 'main_overflow_hidden' => 'off', + 'auto_height' => 'off', + 'min_height' => '', + 'custom_javascript' => '', + 'custom_css' => '', + ), + ); +$presets[] = array ( + 'settings' => + array ('class' => '', 'image' => RS_PLUGIN_URL.'admin/assets/images/sliderpresets/wide_fullscreen.png', 'name' => 'Wide-Full-Screen', 'preset' => 'heropreset' ), + 'values' => + array ( + 'next_slide_on_window_focus' => 'off', + 'delay' => '9000', + 'start_js_after_delay' => '0', + 'image_source_type' => 'full', + 0 => 'revapi39.bind(\\"revolution.slide.layeraction\\",function (e) { + //data.eventtype - Layer Action (enterstage, enteredstage, leavestage,leftstage) + //data.layertype - Layer Type (image,video,html) + //data.layersettings - Default Settings for Layer + //data.layer - Layer as jQuery Object +});', + 'start_with_slide' => '1', + 'stop_on_hover' => 'off', + 'stop_slider' => 'on', + 'stop_after_loops' => '0', + 'stop_at_slide' => '1', + 'shuffle' => 'off', + 'viewport_start' => 'wait', + 'viewport_area' => '80', + 'enable_progressbar' => 'off', + 'background_dotted_overlay' => 'none', + 'background_color' => 'transparent', + 'padding' => '0', + 'show_background_image' => 'off', + 'background_image' => '', + 'bg_fit' => 'cover', + 'bg_repeat' => 'no-repeat', + 'bg_position' => 'center center', + 'position' => 'center', + 'use_spinner' => '-1', + 'spinner_color' => '#FFFFFF', + 'enable_arrows' => 'off', + 'navigation_arrow_style' => 'navbar', + 'arrows_always_on' => 'false', + 'hide_arrows' => '200', + 'hide_arrows_mobile' => '1200', + 'hide_arrows_on_mobile' => 'off', + 'arrows_under_hidden' => '600', + 'hide_arrows_over' => 'off', + 'arrows_over_hidden' => '0', + 'leftarrow_align_hor' => 'left', + 'leftarrow_align_vert' => 'bottom', + 'leftarrow_offset_hor' => '0', + 'leftarrow_offset_vert' => '0', + 'rightarrow_align_hor' => 'left', + 'rightarrow_align_vert' => 'bottom', + 'rightarrow_offset_hor' => '40', + 'rightarrow_offset_vert' => '0', + 'enable_bullets' => 'on', + 'navigation_bullets_style' => 'round-old', + 'bullets_space' => '5', + 'bullets_direction' => 'vertical', + 'bullets_always_on' => 'true', + 'hide_bullets' => '200', + 'hide_bullets_mobile' => '1200', + 'hide_bullets_on_mobile' => 'on', + 'bullets_under_hidden' => '600', + 'hide_bullets_over' => 'off', + 'bullets_over_hidden' => '0', + 'bullets_align_hor' => 'right', + 'bullets_align_vert' => 'center', + 'bullets_offset_hor' => '30', + 'bullets_offset_vert' => '0', + 'enable_thumbnails' => 'off', + 'thumbnails_padding' => '5', + 'span_thumbnails_wrapper' => 'off', + 'thumbnails_wrapper_color' => 'transparent', + 'thumbnails_wrapper_opacity' => '100', + 'thumbnails_style' => 'navbar', + 'thumb_amount' => '5', + 'thumbnails_space' => '5', + 'thumbnail_direction' => 'vertical', + 'thumb_width' => '50', + 'thumb_height' => '50', + 'thumb_width_min' => '50', + 'thumbs_always_on' => 'false', + 'hide_thumbs' => '200', + 'hide_thumbs_mobile' => '1200', + 'hide_thumbs_on_mobile' => 'on', + 'thumbs_under_hidden' => '778', + 'hide_thumbs_over' => 'off', + 'thumbs_over_hidden' => '0', + 'thumbnails_inner_outer' => 'inner', + 'thumbnails_align_hor' => 'right', + 'thumbnails_align_vert' => 'center', + 'thumbnails_offset_hor' => '20', + 'thumbnails_offset_vert' => '0', + 'enable_tabs' => 'off', + 'tabs_padding' => '5', + 'span_tabs_wrapper' => 'off', + 'tabs_wrapper_color' => 'transparent', + 'tabs_wrapper_opacity' => '5', + 'tabs_style' => '', + 'tabs_amount' => '5', + 'tabs_space' => '5', + 'tabs_direction' => 'horizontal', + 'tabs_width' => '100', + 'tabs_height' => '50', + 'tabs_width_min' => '100', + 'tabs_always_on' => 'false', + 'hide_tabs' => '200', + 'hide_tabs_mobile' => '1200', + 'hide_tabs_on_mobile' => 'off', + 'tabs_under_hidden' => '0', + 'hide_tabs_over' => 'off', + 'tabs_over_hidden' => '0', + 'tabs_inner_outer' => 'inner', + 'tabs_align_hor' => 'center', + 'tabs_align_vert' => 'bottom', + 'tabs_offset_hor' => '0', + 'tabs_offset_vert' => '20', + 'touchenabled' => 'on', + 'drag_block_vertical' => 'off', + 'swipe_velocity' => '75', + 'swipe_min_touches' => '50', + 'swipe_direction' => 'horizontal', + 'keyboard_navigation' => 'off', + 'keyboard_direction' => 'horizontal', + 'mousescroll_navigation' => 'off', + 'carousel_infinity' => 'off', + 'carousel_space' => '0', + 'carousel_borderr' => '0', + 'carousel_borderr_unit' => 'px', + 'carousel_padding_top' => '0', + 'carousel_padding_bottom' => '0', + 'carousel_maxitems' => '3', + 'carousel_stretch' => 'off', + 'carousel_fadeout' => 'on', + 'carousel_varyfade' => 'off', + 'carousel_rotation' => 'off', + 'carousel_varyrotate' => 'off', + 'carousel_maxrotation' => '0', + 'carousel_scale' => 'off', + 'carousel_varyscale' => 'off', + 'carousel_scaledown' => '50', + 'carousel_hposition' => 'center', + 'carousel_vposition' => 'center', + 'use_parallax' => 'on', + 'disable_parallax_mobile' => 'off', + 'parallax_type' => 'mouse', + 'parallax_origo' => 'slidercenter', + 'parallax_speed' => '2000', + 'parallax_level_1' => '2', + 'parallax_level_2' => '3', + 'parallax_level_3' => '4', + 'parallax_level_4' => '5', + 'parallax_level_5' => '6', + 'parallax_level_6' => '7', + 'parallax_level_7' => '12', + 'parallax_level_8' => '16', + 'parallax_level_9' => '10', + 'parallax_level_10' => '50', + 'lazy_load_type' => 'smart', + 'seo_optimization' => 'none', + 'simplify_ie8_ios4' => 'off', + 'show_alternative_type' => 'off', + 'show_alternate_image' => '', + 'jquery_noconflict' => 'off', + 'js_to_body' => 'false', + 'output_type' => 'none', + 'jquery_debugmode' => 'off', + 'slider_type' => 'fullscreen', + 'width' => '1400', + 'width_notebook' => '1240', + 'width_tablet' => '778', + 'width_mobile' => '480', + 'height' => '868', + 'height_notebook' => '768', + 'height_tablet' => '960', + 'height_mobile' => '720', + 'enable_custom_size_notebook' => 'on', + 'enable_custom_size_tablet' => 'on', + 'enable_custom_size_iphone' => 'on', + 'main_overflow_hidden' => 'off', + 'auto_height' => 'off', + 'min_height' => '', + 'custom_javascript' => '', + 'custom_css' => '', + ), + ); +$presets[] = array ( + 'settings' => + array ('class' => '', 'image' => RS_PLUGIN_URL.'admin/assets/images/sliderpresets/wide_fullscreen.png', 'name' => 'Wide-Full-Width', 'preset' => 'heropreset' ), + 'values' => + array ( + 'next_slide_on_window_focus' => 'off', + 'delay' => '9000', + 'start_js_after_delay' => '0', + 'image_source_type' => 'full', + 0 => 'revapi39.bind(\\"revolution.slide.layeraction\\",function (e) { + //data.eventtype - Layer Action (enterstage, enteredstage, leavestage,leftstage) + //data.layertype - Layer Type (image,video,html) + //data.layersettings - Default Settings for Layer + //data.layer - Layer as jQuery Object +});', + 'start_with_slide' => '1', + 'stop_on_hover' => 'off', + 'stop_slider' => 'on', + 'stop_after_loops' => '0', + 'stop_at_slide' => '1', + 'shuffle' => 'off', + 'viewport_start' => 'wait', + 'viewport_area' => '80', + 'enable_progressbar' => 'off', + 'background_dotted_overlay' => 'none', + 'background_color' => 'transparent', + 'padding' => '0', + 'show_background_image' => 'off', + 'background_image' => '', + 'bg_fit' => 'cover', + 'bg_repeat' => 'no-repeat', + 'bg_position' => 'center center', + 'position' => 'center', + 'use_spinner' => '-1', + 'spinner_color' => '#FFFFFF', + 'enable_arrows' => 'off', + 'navigation_arrow_style' => 'navbar', + 'arrows_always_on' => 'false', + 'hide_arrows' => '200', + 'hide_arrows_mobile' => '1200', + 'hide_arrows_on_mobile' => 'off', + 'arrows_under_hidden' => '600', + 'hide_arrows_over' => 'off', + 'arrows_over_hidden' => '0', + 'leftarrow_align_hor' => 'left', + 'leftarrow_align_vert' => 'bottom', + 'leftarrow_offset_hor' => '0', + 'leftarrow_offset_vert' => '0', + 'rightarrow_align_hor' => 'left', + 'rightarrow_align_vert' => 'bottom', + 'rightarrow_offset_hor' => '40', + 'rightarrow_offset_vert' => '0', + 'enable_bullets' => 'on', + 'navigation_bullets_style' => 'round-old', + 'bullets_space' => '5', + 'bullets_direction' => 'vertical', + 'bullets_always_on' => 'true', + 'hide_bullets' => '200', + 'hide_bullets_mobile' => '1200', + 'hide_bullets_on_mobile' => 'on', + 'bullets_under_hidden' => '600', + 'hide_bullets_over' => 'off', + 'bullets_over_hidden' => '0', + 'bullets_align_hor' => 'right', + 'bullets_align_vert' => 'center', + 'bullets_offset_hor' => '30', + 'bullets_offset_vert' => '0', + 'enable_thumbnails' => 'off', + 'thumbnails_padding' => '5', + 'span_thumbnails_wrapper' => 'off', + 'thumbnails_wrapper_color' => 'transparent', + 'thumbnails_wrapper_opacity' => '100', + 'thumbnails_style' => 'navbar', + 'thumb_amount' => '5', + 'thumbnails_space' => '5', + 'thumbnail_direction' => 'vertical', + 'thumb_width' => '50', + 'thumb_height' => '50', + 'thumb_width_min' => '50', + 'thumbs_always_on' => 'false', + 'hide_thumbs' => '200', + 'hide_thumbs_mobile' => '1200', + 'hide_thumbs_on_mobile' => 'on', + 'thumbs_under_hidden' => '778', + 'hide_thumbs_over' => 'off', + 'thumbs_over_hidden' => '0', + 'thumbnails_inner_outer' => 'inner', + 'thumbnails_align_hor' => 'right', + 'thumbnails_align_vert' => 'center', + 'thumbnails_offset_hor' => '20', + 'thumbnails_offset_vert' => '0', + 'enable_tabs' => 'off', + 'tabs_padding' => '5', + 'span_tabs_wrapper' => 'off', + 'tabs_wrapper_color' => 'transparent', + 'tabs_wrapper_opacity' => '5', + 'tabs_style' => '', + 'tabs_amount' => '5', + 'tabs_space' => '5', + 'tabs_direction' => 'horizontal', + 'tabs_width' => '100', + 'tabs_height' => '50', + 'tabs_width_min' => '100', + 'tabs_always_on' => 'false', + 'hide_tabs' => '200', + 'hide_tabs_mobile' => '1200', + 'hide_tabs_on_mobile' => 'off', + 'tabs_under_hidden' => '0', + 'hide_tabs_over' => 'off', + 'tabs_over_hidden' => '0', + 'tabs_inner_outer' => 'inner', + 'tabs_align_hor' => 'center', + 'tabs_align_vert' => 'bottom', + 'tabs_offset_hor' => '0', + 'tabs_offset_vert' => '20', + 'touchenabled' => 'on', + 'drag_block_vertical' => 'off', + 'swipe_velocity' => '75', + 'swipe_min_touches' => '50', + 'swipe_direction' => 'horizontal', + 'keyboard_navigation' => 'off', + 'keyboard_direction' => 'horizontal', + 'mousescroll_navigation' => 'off', + 'carousel_infinity' => 'off', + 'carousel_space' => '0', + 'carousel_borderr' => '0', + 'carousel_borderr_unit' => 'px', + 'carousel_padding_top' => '0', + 'carousel_padding_bottom' => '0', + 'carousel_maxitems' => '3', + 'carousel_stretch' => 'off', + 'carousel_fadeout' => 'on', + 'carousel_varyfade' => 'off', + 'carousel_rotation' => 'off', + 'carousel_varyrotate' => 'off', + 'carousel_maxrotation' => '0', + 'carousel_scale' => 'off', + 'carousel_varyscale' => 'off', + 'carousel_scaledown' => '50', + 'carousel_hposition' => 'center', + 'carousel_vposition' => 'center', + 'use_parallax' => 'on', + 'disable_parallax_mobile' => 'off', + 'parallax_type' => 'mouse', + 'parallax_origo' => 'slidercenter', + 'parallax_speed' => '2000', + 'parallax_level_1' => '2', + 'parallax_level_2' => '3', + 'parallax_level_3' => '4', + 'parallax_level_4' => '5', + 'parallax_level_5' => '6', + 'parallax_level_6' => '7', + 'parallax_level_7' => '12', + 'parallax_level_8' => '16', + 'parallax_level_9' => '10', + 'parallax_level_10' => '50', + 'lazy_load_type' => 'smart', + 'seo_optimization' => 'none', + 'simplify_ie8_ios4' => 'off', + 'show_alternative_type' => 'off', + 'show_alternate_image' => '', + 'jquery_noconflict' => 'off', + 'js_to_body' => 'false', + 'output_type' => 'none', + 'jquery_debugmode' => 'off', + 'slider_type' => 'fullwidth', + 'width' => '1400', + 'width_notebook' => '1240', + 'width_tablet' => '778', + 'width_mobile' => '480', + 'height' => '600', + 'height_notebook' => '500', + 'height_tablet' => '400', + 'height_mobile' => '400', + 'enable_custom_size_notebook' => 'on', + 'enable_custom_size_tablet' => 'on', + 'enable_custom_size_iphone' => 'on', + 'main_overflow_hidden' => 'off', + 'auto_height' => 'off', + 'min_height' => '', + 'custom_javascript' => '', + 'custom_css' => '', + ), + ); +$presets[] = array ( + 'settings' => + array ('class' => '', 'image' => RS_PLUGIN_URL.'admin/assets/images/sliderpresets/wide_fullscreen.png', 'name' => 'Regular-Full-Screen', 'preset' => 'heropreset' ), + 'values' => + array ( + 'next_slide_on_window_focus' => 'off', + 'delay' => '9000', + 'start_js_after_delay' => '0', + 'image_source_type' => 'full', + 0 => 'revapi39.bind(\\"revolution.slide.layeraction\\",function (e) { + //data.eventtype - Layer Action (enterstage, enteredstage, leavestage,leftstage) + //data.layertype - Layer Type (image,video,html) + //data.layersettings - Default Settings for Layer + //data.layer - Layer as jQuery Object +});', + 'start_with_slide' => '1', + 'stop_on_hover' => 'off', + 'stop_slider' => 'on', + 'stop_after_loops' => '0', + 'stop_at_slide' => '1', + 'shuffle' => 'off', + 'viewport_start' => 'wait', + 'viewport_area' => '80', + 'enable_progressbar' => 'off', + 'background_dotted_overlay' => 'none', + 'background_color' => 'transparent', + 'padding' => '0', + 'show_background_image' => 'off', + 'background_image' => '', + 'bg_fit' => 'cover', + 'bg_repeat' => 'no-repeat', + 'bg_position' => 'center center', + 'position' => 'center', + 'use_spinner' => '-1', + 'spinner_color' => '#FFFFFF', + 'enable_arrows' => 'off', + 'navigation_arrow_style' => 'navbar', + 'arrows_always_on' => 'false', + 'hide_arrows' => '200', + 'hide_arrows_mobile' => '1200', + 'hide_arrows_on_mobile' => 'off', + 'arrows_under_hidden' => '600', + 'hide_arrows_over' => 'off', + 'arrows_over_hidden' => '0', + 'leftarrow_align_hor' => 'left', + 'leftarrow_align_vert' => 'bottom', + 'leftarrow_offset_hor' => '0', + 'leftarrow_offset_vert' => '0', + 'rightarrow_align_hor' => 'left', + 'rightarrow_align_vert' => 'bottom', + 'rightarrow_offset_hor' => '40', + 'rightarrow_offset_vert' => '0', + 'enable_bullets' => 'on', + 'navigation_bullets_style' => 'round-old', + 'bullets_space' => '5', + 'bullets_direction' => 'vertical', + 'bullets_always_on' => 'true', + 'hide_bullets' => '200', + 'hide_bullets_mobile' => '1200', + 'hide_bullets_on_mobile' => 'on', + 'bullets_under_hidden' => '600', + 'hide_bullets_over' => 'off', + 'bullets_over_hidden' => '0', + 'bullets_align_hor' => 'right', + 'bullets_align_vert' => 'center', + 'bullets_offset_hor' => '30', + 'bullets_offset_vert' => '0', + 'enable_thumbnails' => 'off', + 'thumbnails_padding' => '5', + 'span_thumbnails_wrapper' => 'off', + 'thumbnails_wrapper_color' => 'transparent', + 'thumbnails_wrapper_opacity' => '100', + 'thumbnails_style' => 'navbar', + 'thumb_amount' => '5', + 'thumbnails_space' => '5', + 'thumbnail_direction' => 'vertical', + 'thumb_width' => '50', + 'thumb_height' => '50', + 'thumb_width_min' => '50', + 'thumbs_always_on' => 'false', + 'hide_thumbs' => '200', + 'hide_thumbs_mobile' => '1200', + 'hide_thumbs_on_mobile' => 'on', + 'thumbs_under_hidden' => '778', + 'hide_thumbs_over' => 'off', + 'thumbs_over_hidden' => '0', + 'thumbnails_inner_outer' => 'inner', + 'thumbnails_align_hor' => 'right', + 'thumbnails_align_vert' => 'center', + 'thumbnails_offset_hor' => '20', + 'thumbnails_offset_vert' => '0', + 'enable_tabs' => 'off', + 'tabs_padding' => '5', + 'span_tabs_wrapper' => 'off', + 'tabs_wrapper_color' => 'transparent', + 'tabs_wrapper_opacity' => '5', + 'tabs_style' => '', + 'tabs_amount' => '5', + 'tabs_space' => '5', + 'tabs_direction' => 'horizontal', + 'tabs_width' => '100', + 'tabs_height' => '50', + 'tabs_width_min' => '100', + 'tabs_always_on' => 'false', + 'hide_tabs' => '200', + 'hide_tabs_mobile' => '1200', + 'hide_tabs_on_mobile' => 'off', + 'tabs_under_hidden' => '0', + 'hide_tabs_over' => 'off', + 'tabs_over_hidden' => '0', + 'tabs_inner_outer' => 'inner', + 'tabs_align_hor' => 'center', + 'tabs_align_vert' => 'bottom', + 'tabs_offset_hor' => '0', + 'tabs_offset_vert' => '20', + 'touchenabled' => 'on', + 'drag_block_vertical' => 'off', + 'swipe_velocity' => '75', + 'swipe_min_touches' => '50', + 'swipe_direction' => 'horizontal', + 'keyboard_navigation' => 'off', + 'keyboard_direction' => 'horizontal', + 'mousescroll_navigation' => 'off', + 'carousel_infinity' => 'off', + 'carousel_space' => '0', + 'carousel_borderr' => '0', + 'carousel_borderr_unit' => 'px', + 'carousel_padding_top' => '0', + 'carousel_padding_bottom' => '0', + 'carousel_maxitems' => '3', + 'carousel_stretch' => 'off', + 'carousel_fadeout' => 'on', + 'carousel_varyfade' => 'off', + 'carousel_rotation' => 'off', + 'carousel_varyrotate' => 'off', + 'carousel_maxrotation' => '0', + 'carousel_scale' => 'off', + 'carousel_varyscale' => 'off', + 'carousel_scaledown' => '50', + 'carousel_hposition' => 'center', + 'carousel_vposition' => 'center', + 'use_parallax' => 'on', + 'disable_parallax_mobile' => 'off', + 'parallax_type' => 'mouse', + 'parallax_origo' => 'slidercenter', + 'parallax_speed' => '2000', + 'parallax_level_1' => '2', + 'parallax_level_2' => '3', + 'parallax_level_3' => '4', + 'parallax_level_4' => '5', + 'parallax_level_5' => '6', + 'parallax_level_6' => '7', + 'parallax_level_7' => '12', + 'parallax_level_8' => '16', + 'parallax_level_9' => '10', + 'parallax_level_10' => '50', + 'lazy_load_type' => 'smart', + 'seo_optimization' => 'none', + 'simplify_ie8_ios4' => 'off', + 'show_alternative_type' => 'off', + 'show_alternate_image' => '', + 'jquery_noconflict' => 'off', + 'js_to_body' => 'false', + 'output_type' => 'none', + 'jquery_debugmode' => 'off', + 'slider_type' => 'fullscreen', + 'width' => '1240', + 'width_notebook' => '1024', + 'width_tablet' => '778', + 'width_mobile' => '480', + 'height' => '868', + 'height_notebook' => '768', + 'height_tablet' => '960', + 'height_mobile' => '720', + 'enable_custom_size_notebook' => 'on', + 'enable_custom_size_tablet' => 'on', + 'enable_custom_size_iphone' => 'on', + 'main_overflow_hidden' => 'off', + 'auto_height' => 'off', + 'min_height' => '', + 'custom_javascript' => '', + 'custom_css' => '', + ), + ); +$presets[] = array ( + 'settings' => + array ('class' => '', 'image' => RS_PLUGIN_URL.'admin/assets/images/sliderpresets/wide_fullscreen.png', 'name' => 'Regular-Full-Width', 'preset' => 'heropreset' ), + 'values' => + array ( + 'next_slide_on_window_focus' => 'off', + 'delay' => '9000', + 'start_js_after_delay' => '0', + 'image_source_type' => 'full', + 0 => 'revapi39.bind(\\"revolution.slide.layeraction\\",function (e) { + //data.eventtype - Layer Action (enterstage, enteredstage, leavestage,leftstage) + //data.layertype - Layer Type (image,video,html) + //data.layersettings - Default Settings for Layer + //data.layer - Layer as jQuery Object +});', + 'start_with_slide' => '1', + 'stop_on_hover' => 'off', + 'stop_slider' => 'on', + 'stop_after_loops' => '0', + 'stop_at_slide' => '1', + 'shuffle' => 'off', + 'viewport_start' => 'wait', + 'viewport_area' => '80', + 'enable_progressbar' => 'off', + 'background_dotted_overlay' => 'none', + 'background_color' => 'transparent', + 'padding' => '0', + 'show_background_image' => 'off', + 'background_image' => '', + 'bg_fit' => 'cover', + 'bg_repeat' => 'no-repeat', + 'bg_position' => 'center center', + 'position' => 'center', + 'use_spinner' => '-1', + 'spinner_color' => '#FFFFFF', + 'enable_arrows' => 'off', + 'navigation_arrow_style' => 'navbar', + 'arrows_always_on' => 'false', + 'hide_arrows' => '200', + 'hide_arrows_mobile' => '1200', + 'hide_arrows_on_mobile' => 'off', + 'arrows_under_hidden' => '600', + 'hide_arrows_over' => 'off', + 'arrows_over_hidden' => '0', + 'leftarrow_align_hor' => 'left', + 'leftarrow_align_vert' => 'bottom', + 'leftarrow_offset_hor' => '0', + 'leftarrow_offset_vert' => '0', + 'rightarrow_align_hor' => 'left', + 'rightarrow_align_vert' => 'bottom', + 'rightarrow_offset_hor' => '40', + 'rightarrow_offset_vert' => '0', + 'enable_bullets' => 'on', + 'navigation_bullets_style' => 'round-old', + 'bullets_space' => '5', + 'bullets_direction' => 'vertical', + 'bullets_always_on' => 'true', + 'hide_bullets' => '200', + 'hide_bullets_mobile' => '1200', + 'hide_bullets_on_mobile' => 'on', + 'bullets_under_hidden' => '600', + 'hide_bullets_over' => 'off', + 'bullets_over_hidden' => '0', + 'bullets_align_hor' => 'right', + 'bullets_align_vert' => 'center', + 'bullets_offset_hor' => '30', + 'bullets_offset_vert' => '0', + 'enable_thumbnails' => 'off', + 'thumbnails_padding' => '5', + 'span_thumbnails_wrapper' => 'off', + 'thumbnails_wrapper_color' => 'transparent', + 'thumbnails_wrapper_opacity' => '100', + 'thumbnails_style' => 'navbar', + 'thumb_amount' => '5', + 'thumbnails_space' => '5', + 'thumbnail_direction' => 'vertical', + 'thumb_width' => '50', + 'thumb_height' => '50', + 'thumb_width_min' => '50', + 'thumbs_always_on' => 'false', + 'hide_thumbs' => '200', + 'hide_thumbs_mobile' => '1200', + 'hide_thumbs_on_mobile' => 'on', + 'thumbs_under_hidden' => '778', + 'hide_thumbs_over' => 'off', + 'thumbs_over_hidden' => '0', + 'thumbnails_inner_outer' => 'inner', + 'thumbnails_align_hor' => 'right', + 'thumbnails_align_vert' => 'center', + 'thumbnails_offset_hor' => '20', + 'thumbnails_offset_vert' => '0', + 'enable_tabs' => 'off', + 'tabs_padding' => '5', + 'span_tabs_wrapper' => 'off', + 'tabs_wrapper_color' => 'transparent', + 'tabs_wrapper_opacity' => '5', + 'tabs_style' => '', + 'tabs_amount' => '5', + 'tabs_space' => '5', + 'tabs_direction' => 'horizontal', + 'tabs_width' => '100', + 'tabs_height' => '50', + 'tabs_width_min' => '100', + 'tabs_always_on' => 'false', + 'hide_tabs' => '200', + 'hide_tabs_mobile' => '1200', + 'hide_tabs_on_mobile' => 'off', + 'tabs_under_hidden' => '0', + 'hide_tabs_over' => 'off', + 'tabs_over_hidden' => '0', + 'tabs_inner_outer' => 'inner', + 'tabs_align_hor' => 'center', + 'tabs_align_vert' => 'bottom', + 'tabs_offset_hor' => '0', + 'tabs_offset_vert' => '20', + 'touchenabled' => 'on', + 'drag_block_vertical' => 'off', + 'swipe_velocity' => '75', + 'swipe_min_touches' => '50', + 'swipe_direction' => 'horizontal', + 'keyboard_navigation' => 'off', + 'keyboard_direction' => 'horizontal', + 'mousescroll_navigation' => 'off', + 'carousel_infinity' => 'off', + 'carousel_space' => '0', + 'carousel_borderr' => '0', + 'carousel_borderr_unit' => 'px', + 'carousel_padding_top' => '0', + 'carousel_padding_bottom' => '0', + 'carousel_maxitems' => '3', + 'carousel_stretch' => 'off', + 'carousel_fadeout' => 'on', + 'carousel_varyfade' => 'off', + 'carousel_rotation' => 'off', + 'carousel_varyrotate' => 'off', + 'carousel_maxrotation' => '0', + 'carousel_scale' => 'off', + 'carousel_varyscale' => 'off', + 'carousel_scaledown' => '50', + 'carousel_hposition' => 'center', + 'carousel_vposition' => 'center', + 'use_parallax' => 'on', + 'disable_parallax_mobile' => 'off', + 'parallax_type' => 'mouse', + 'parallax_origo' => 'slidercenter', + 'parallax_speed' => '2000', + 'parallax_level_1' => '2', + 'parallax_level_2' => '3', + 'parallax_level_3' => '4', + 'parallax_level_4' => '5', + 'parallax_level_5' => '6', + 'parallax_level_6' => '7', + 'parallax_level_7' => '12', + 'parallax_level_8' => '16', + 'parallax_level_9' => '10', + 'parallax_level_10' => '50', + 'lazy_load_type' => 'smart', + 'seo_optimization' => 'none', + 'simplify_ie8_ios4' => 'off', + 'show_alternative_type' => 'off', + 'show_alternate_image' => '', + 'jquery_noconflict' => 'off', + 'js_to_body' => 'false', + 'output_type' => 'none', + 'jquery_debugmode' => 'off', + 'slider_type' => 'fullwidth', + 'width' => '1240', + 'width_notebook' => '1024', + 'width_tablet' => '778', + 'width_mobile' => '480', + 'height' => '600', + 'height_notebook' => '500', + 'height_tablet' => '400', + 'height_mobile' => '300', + 'enable_custom_size_notebook' => 'on', + 'enable_custom_size_tablet' => 'on', + 'enable_custom_size_iphone' => 'on', + 'main_overflow_hidden' => 'off', + 'auto_height' => 'off', + 'min_height' => '', + 'custom_javascript' => '', + 'custom_css' => '', + ), + ); +$presets[] = array ( + 'settings' => + array ('class' => '', 'image' => RS_PLUGIN_URL.'admin/assets/images/sliderpresets/cover_carousel_thumbs.png', 'name' => 'Cover-Flow-Thumbs', 'preset' => 'carouselpreset' ), + 'values' => + array ( + 'next_slide_on_window_focus' => 'off', + 'delay' => '9000', + 'start_js_after_delay' => '0', + 'image_source_type' => 'full', + 0 => 'revapi39.bind(\\"revolution.slide.layeraction\\",function (e) { + //data.eventtype - Layer Action (enterstage, enteredstage, leavestage,leftstage) + //data.layertype - Layer Type (image,video,html) + //data.layersettings - Default Settings for Layer + //data.layer - Layer as jQuery Object +});', + 'start_with_slide' => '1', + 'stop_on_hover' => 'off', + 'stop_slider' => 'on', + 'stop_after_loops' => '0', + 'stop_at_slide' => '1', + 'shuffle' => 'off', + 'viewport_start' => 'wait', + 'viewport_area' => '80', + 'enable_progressbar' => 'on', + 'background_dotted_overlay' => 'none', + 'background_color' => 'transparent', + 'padding' => '0', + 'show_background_image' => 'off', + 'background_image' => '', + 'bg_fit' => 'cover', + 'bg_repeat' => 'no-repeat', + 'bg_position' => 'center center', + 'position' => 'center', + 'use_spinner' => '-1', + 'spinner_color' => '#FFFFFF', + 'enable_arrows' => 'on', + 'navigation_arrow_style' => 'navbar-old', + 'arrows_always_on' => 'false', + 'hide_arrows' => '200', + 'hide_arrows_mobile' => '1200', + 'hide_arrows_on_mobile' => 'off', + 'arrows_under_hidden' => '600', + 'hide_arrows_over' => 'off', + 'arrows_over_hidden' => '0', + 'leftarrow_align_hor' => 'left', + 'leftarrow_align_vert' => 'center', + 'leftarrow_offset_hor' => '30', + 'leftarrow_offset_vert' => '0', + 'rightarrow_align_hor' => 'right', + 'rightarrow_align_vert' => 'center', + 'rightarrow_offset_hor' => '30', + 'rightarrow_offset_vert' => '0', + 'enable_bullets' => 'off', + 'navigation_bullets_style' => 'round-old', + 'bullets_space' => '5', + 'bullets_direction' => 'horizontal', + 'bullets_always_on' => 'true', + 'hide_bullets' => '200', + 'hide_bullets_mobile' => '1200', + 'hide_bullets_on_mobile' => 'on', + 'bullets_under_hidden' => '600', + 'hide_bullets_over' => 'off', + 'bullets_over_hidden' => '0', + 'bullets_align_hor' => 'center', + 'bullets_align_vert' => 'bottom', + 'bullets_offset_hor' => '0', + 'bullets_offset_vert' => '30', + 'enable_thumbnails' => 'on', + 'thumbnails_padding' => '20', + 'span_thumbnails_wrapper' => 'on', + 'thumbnails_wrapper_color' => '#000000', + 'thumbnails_wrapper_opacity' => '15', + 'thumbnails_style' => 'navbar', + 'thumb_amount' => '9', + 'thumbnails_space' => '10', + 'thumbnail_direction' => 'horizontal', + 'thumb_width' => '60', + 'thumb_height' => '60', + 'thumb_width_min' => '60', + 'thumbs_always_on' => 'false', + 'hide_thumbs' => '200', + 'hide_thumbs_mobile' => '1200', + 'hide_thumbs_on_mobile' => 'off', + 'thumbs_under_hidden' => '0', + 'hide_thumbs_over' => 'off', + 'thumbs_over_hidden' => '0', + 'thumbnails_inner_outer' => 'outer-bottom', + 'thumbnails_align_hor' => 'center', + 'thumbnails_align_vert' => 'bottom', + 'thumbnails_offset_hor' => '0', + 'thumbnails_offset_vert' => '0', + 'enable_tabs' => 'off', + 'tabs_padding' => '5', + 'span_tabs_wrapper' => 'off', + 'tabs_wrapper_color' => 'transparent', + 'tabs_wrapper_opacity' => '5', + 'tabs_style' => '', + 'tabs_amount' => '5', + 'tabs_space' => '5', + 'tabs_direction' => 'horizontal', + 'tabs_width' => '100', + 'tabs_height' => '50', + 'tabs_width_min' => '100', + 'tabs_always_on' => 'false', + 'hide_tabs' => '200', + 'hide_tabs_mobile' => '1200', + 'hide_tabs_on_mobile' => 'off', + 'tabs_under_hidden' => '0', + 'hide_tabs_over' => 'off', + 'tabs_over_hidden' => '0', + 'tabs_inner_outer' => 'inner', + 'tabs_align_hor' => 'center', + 'tabs_align_vert' => 'bottom', + 'tabs_offset_hor' => '0', + 'tabs_offset_vert' => '20', + 'touchenabled' => 'on', + 'drag_block_vertical' => 'off', + 'swipe_velocity' => '75', + 'swipe_min_touches' => '50', + 'swipe_direction' => 'horizontal', + 'keyboard_navigation' => 'off', + 'keyboard_direction' => 'horizontal', + 'mousescroll_navigation' => 'off', + 'carousel_infinity' => 'off', + 'carousel_space' => '-150', + 'carousel_borderr' => '0', + 'carousel_borderr_unit' => 'px', + 'carousel_padding_top' => '0', + 'carousel_padding_bottom' => '0', + 'carousel_maxitems' => '5', + 'carousel_stretch' => 'off', + 'carousel_fadeout' => 'on', + 'carousel_varyfade' => 'on', + 'carousel_rotation' => 'on', + 'carousel_varyrotate' => 'on', + 'carousel_maxrotation' => '65', + 'carousel_scale' => 'on', + 'carousel_varyscale' => 'off', + 'carousel_scaledown' => '55', + 'carousel_hposition' => 'center', + 'carousel_vposition' => 'center', + 'use_parallax' => 'on', + 'disable_parallax_mobile' => 'off', + 'parallax_type' => 'mouse', + 'parallax_origo' => 'slidercenter', + 'parallax_speed' => '2000', + 'parallax_level_1' => '2', + 'parallax_level_2' => '3', + 'parallax_level_3' => '4', + 'parallax_level_4' => '5', + 'parallax_level_5' => '6', + 'parallax_level_6' => '7', + 'parallax_level_7' => '12', + 'parallax_level_8' => '16', + 'parallax_level_9' => '10', + 'parallax_level_10' => '50', + 'lazy_load_type' => 'smart', + 'seo_optimization' => 'none', + 'simplify_ie8_ios4' => 'off', + 'show_alternative_type' => 'off', + 'show_alternate_image' => '', + 'jquery_noconflict' => 'off', + 'js_to_body' => 'false', + 'output_type' => 'none', + 'jquery_debugmode' => 'off', + 'slider_type' => 'fullwidth', + 'width' => '600', + 'width_notebook' => '600', + 'width_tablet' => '600', + 'width_mobile' => '600', + 'height' => '600', + 'height_notebook' => '600', + 'height_tablet' => '600', + 'height_mobile' => '600', + 'enable_custom_size_notebook' => 'off', + 'enable_custom_size_tablet' => 'off', + 'enable_custom_size_iphone' => 'off', + 'main_overflow_hidden' => 'off', + 'auto_height' => 'off', + 'min_height' => '', + 'custom_css' => '', + 'custom_javascript' => '', + ), + ); +$presets[] = array ( + 'settings' => + array ('class' => '', 'image' => RS_PLUGIN_URL.'admin/assets/images/sliderpresets/cover_carousel_endless.png', 'name' => 'Cover-Flow-Infinite', 'preset' => 'carouselpreset' ), + 'values' => + array ( + 'next_slide_on_window_focus' => 'off', + 'delay' => '9000', + 'start_js_after_delay' => '0', + 'image_source_type' => 'full', + 0 => 'revapi39.bind(\\"revolution.slide.layeraction\\",function (e) { + //data.eventtype - Layer Action (enterstage, enteredstage, leavestage,leftstage) + //data.layertype - Layer Type (image,video,html) + //data.layersettings - Default Settings for Layer + //data.layer - Layer as jQuery Object +});', + 'start_with_slide' => '1', + 'stop_on_hover' => 'off', + 'stop_slider' => 'on', + 'stop_after_loops' => '0', + 'stop_at_slide' => '1', + 'shuffle' => 'off', + 'viewport_start' => 'wait', + 'viewport_area' => '80', + 'enable_progressbar' => 'on', + 'background_dotted_overlay' => 'none', + 'background_color' => 'transparent', + 'padding' => '0', + 'show_background_image' => 'off', + 'background_image' => '', + 'bg_fit' => 'cover', + 'bg_repeat' => 'no-repeat', + 'bg_position' => 'center center', + 'position' => 'center', + 'use_spinner' => '-1', + 'spinner_color' => '#FFFFFF', + 'enable_arrows' => 'on', + 'navigation_arrow_style' => 'round', + 'arrows_always_on' => 'false', + 'hide_arrows' => '200', + 'hide_arrows_mobile' => '1200', + 'hide_arrows_on_mobile' => 'off', + 'arrows_under_hidden' => '600', + 'hide_arrows_over' => 'off', + 'arrows_over_hidden' => '0', + 'leftarrow_align_hor' => 'left', + 'leftarrow_align_vert' => 'center', + 'leftarrow_offset_hor' => '30', + 'leftarrow_offset_vert' => '0', + 'rightarrow_align_hor' => 'right', + 'rightarrow_align_vert' => 'center', + 'rightarrow_offset_hor' => '30', + 'rightarrow_offset_vert' => '0', + 'enable_bullets' => 'off', + 'navigation_bullets_style' => 'round-old', + 'bullets_space' => '5', + 'bullets_direction' => 'horizontal', + 'bullets_always_on' => 'true', + 'hide_bullets' => '200', + 'hide_bullets_mobile' => '1200', + 'hide_bullets_on_mobile' => 'on', + 'bullets_under_hidden' => '600', + 'hide_bullets_over' => 'off', + 'bullets_over_hidden' => '0', + 'bullets_align_hor' => 'center', + 'bullets_align_vert' => 'bottom', + 'bullets_offset_hor' => '0', + 'bullets_offset_vert' => '30', + 'enable_thumbnails' => 'off', + 'thumbnails_padding' => '20', + 'span_thumbnails_wrapper' => 'on', + 'thumbnails_wrapper_color' => '#000000', + 'thumbnails_wrapper_opacity' => '15', + 'thumbnails_style' => 'navbar', + 'thumb_amount' => '9', + 'thumbnails_space' => '10', + 'thumbnail_direction' => 'horizontal', + 'thumb_width' => '60', + 'thumb_height' => '60', + 'thumb_width_min' => '60', + 'thumbs_always_on' => 'false', + 'hide_thumbs' => '200', + 'hide_thumbs_mobile' => '1200', + 'hide_thumbs_on_mobile' => 'off', + 'thumbs_under_hidden' => '0', + 'hide_thumbs_over' => 'off', + 'thumbs_over_hidden' => '0', + 'thumbnails_inner_outer' => 'outer-bottom', + 'thumbnails_align_hor' => 'center', + 'thumbnails_align_vert' => 'bottom', + 'thumbnails_offset_hor' => '0', + 'thumbnails_offset_vert' => '0', + 'enable_tabs' => 'off', + 'tabs_padding' => '5', + 'span_tabs_wrapper' => 'off', + 'tabs_wrapper_color' => 'transparent', + 'tabs_wrapper_opacity' => '5', + 'tabs_style' => '', + 'tabs_amount' => '5', + 'tabs_space' => '5', + 'tabs_direction' => 'horizontal', + 'tabs_width' => '100', + 'tabs_height' => '50', + 'tabs_width_min' => '100', + 'tabs_always_on' => 'false', + 'hide_tabs' => '200', + 'hide_tabs_mobile' => '1200', + 'hide_tabs_on_mobile' => 'off', + 'tabs_under_hidden' => '0', + 'hide_tabs_over' => 'off', + 'tabs_over_hidden' => '0', + 'tabs_inner_outer' => 'inner', + 'tabs_align_hor' => 'center', + 'tabs_align_vert' => 'bottom', + 'tabs_offset_hor' => '0', + 'tabs_offset_vert' => '20', + 'touchenabled' => 'on', + 'drag_block_vertical' => 'off', + 'swipe_velocity' => '75', + 'swipe_min_touches' => '50', + 'swipe_direction' => 'horizontal', + 'keyboard_navigation' => 'off', + 'keyboard_direction' => 'horizontal', + 'mousescroll_navigation' => 'off', + 'carousel_infinity' => 'on', + 'carousel_space' => '-150', + 'carousel_borderr' => '0', + 'carousel_borderr_unit' => 'px', + 'carousel_padding_top' => '0', + 'carousel_padding_bottom' => '0', + 'carousel_maxitems' => '3', + 'carousel_stretch' => 'off', + 'carousel_fadeout' => 'on', + 'carousel_varyfade' => 'on', + 'carousel_rotation' => 'on', + 'carousel_varyrotate' => 'on', + 'carousel_maxrotation' => '65', + 'carousel_scale' => 'on', + 'carousel_varyscale' => 'off', + 'carousel_scaledown' => '55', + 'carousel_hposition' => 'center', + 'carousel_vposition' => 'center', + 'use_parallax' => 'on', + 'disable_parallax_mobile' => 'off', + 'parallax_type' => 'mouse', + 'parallax_origo' => 'slidercenter', + 'parallax_speed' => '2000', + 'parallax_level_1' => '2', + 'parallax_level_2' => '3', + 'parallax_level_3' => '4', + 'parallax_level_4' => '5', + 'parallax_level_5' => '6', + 'parallax_level_6' => '7', + 'parallax_level_7' => '12', + 'parallax_level_8' => '16', + 'parallax_level_9' => '10', + 'parallax_level_10' => '50', + 'lazy_load_type' => 'smart', + 'seo_optimization' => 'none', + 'simplify_ie8_ios4' => 'off', + 'show_alternative_type' => 'off', + 'show_alternate_image' => '', + 'jquery_noconflict' => 'off', + 'js_to_body' => 'false', + 'output_type' => 'none', + 'jquery_debugmode' => 'off', + 'slider_type' => 'fullwidth', + 'width' => '600', + 'width_notebook' => '600', + 'width_tablet' => '600', + 'width_mobile' => '600', + 'height' => '600', + 'height_notebook' => '600', + 'height_tablet' => '600', + 'height_mobile' => '600', + 'enable_custom_size_notebook' => 'off', + 'enable_custom_size_tablet' => 'off', + 'enable_custom_size_iphone' => 'off', + 'main_overflow_hidden' => 'off', + 'auto_height' => 'off', + 'min_height' => '', + 'custom_css' => '', + 'custom_javascript' => '', + ), + ); +$presets[] = array ( + 'settings' => + array ('class' => '', 'image' => RS_PLUGIN_URL.'admin/assets/images/sliderpresets/flat_carousel_thumbs.png', 'name' => 'Flat-Infinite-Thumbs', 'preset' => 'carouselpreset' ), + 'values' => + array ( + 'next_slide_on_window_focus' => 'off', + 'delay' => '9000', + 'start_js_after_delay' => '0', + 'image_source_type' => 'full', + 0 => 'revapi39.bind(\\"revolution.slide.layeraction\\",function (e) { + //data.eventtype - Layer Action (enterstage, enteredstage, leavestage,leftstage) + //data.layertype - Layer Type (image,video,html) + //data.layersettings - Default Settings for Layer + //data.layer - Layer as jQuery Object +});', + 'start_with_slide' => '1', + 'stop_on_hover' => 'off', + 'stop_slider' => 'on', + 'stop_after_loops' => '0', + 'stop_at_slide' => '1', + 'shuffle' => 'off', + 'viewport_start' => 'wait', + 'viewport_area' => '80', + 'enable_progressbar' => 'on', + 'background_dotted_overlay' => 'none', + 'background_color' => '#111111', + 'padding' => '0', + 'show_background_image' => 'off', + 'background_image' => '', + 'bg_fit' => 'cover', + 'bg_repeat' => 'no-repeat', + 'bg_position' => 'center center', + 'position' => 'center', + 'use_spinner' => '-1', + 'spinner_color' => '#FFFFFF', + 'enable_arrows' => 'on', + 'navigation_arrow_style' => 'navbar', + 'arrows_always_on' => 'false', + 'hide_arrows' => '200', + 'hide_arrows_mobile' => '1200', + 'hide_arrows_on_mobile' => 'off', + 'arrows_under_hidden' => '600', + 'hide_arrows_over' => 'off', + 'arrows_over_hidden' => '0', + 'leftarrow_align_hor' => 'left', + 'leftarrow_align_vert' => 'center', + 'leftarrow_offset_hor' => '30', + 'leftarrow_offset_vert' => '0', + 'rightarrow_align_hor' => 'right', + 'rightarrow_align_vert' => 'center', + 'rightarrow_offset_hor' => '30', + 'rightarrow_offset_vert' => '0', + 'enable_bullets' => 'off', + 'navigation_bullets_style' => 'round-old', + 'bullets_space' => '5', + 'bullets_direction' => 'horizontal', + 'bullets_always_on' => 'true', + 'hide_bullets' => '200', + 'hide_bullets_mobile' => '1200', + 'hide_bullets_on_mobile' => 'on', + 'bullets_under_hidden' => '600', + 'hide_bullets_over' => 'off', + 'bullets_over_hidden' => '0', + 'bullets_align_hor' => 'center', + 'bullets_align_vert' => 'bottom', + 'bullets_offset_hor' => '0', + 'bullets_offset_vert' => '30', + 'enable_thumbnails' => 'on', + 'thumbnails_padding' => '20', + 'span_thumbnails_wrapper' => 'on', + 'thumbnails_wrapper_color' => '#222222', + 'thumbnails_wrapper_opacity' => '100', + 'thumbnails_style' => 'navbar', + 'thumb_amount' => '9', + 'thumbnails_space' => '10', + 'thumbnail_direction' => 'horizontal', + 'thumb_width' => '60', + 'thumb_height' => '60', + 'thumb_width_min' => '60', + 'thumbs_always_on' => 'false', + 'hide_thumbs' => '200', + 'hide_thumbs_mobile' => '1200', + 'hide_thumbs_on_mobile' => 'off', + 'thumbs_under_hidden' => '0', + 'hide_thumbs_over' => 'off', + 'thumbs_over_hidden' => '0', + 'thumbnails_inner_outer' => 'outer-bottom', + 'thumbnails_align_hor' => 'center', + 'thumbnails_align_vert' => 'bottom', + 'thumbnails_offset_hor' => '0', + 'thumbnails_offset_vert' => '0', + 'enable_tabs' => 'off', + 'tabs_padding' => '5', + 'span_tabs_wrapper' => 'off', + 'tabs_wrapper_color' => 'transparent', + 'tabs_wrapper_opacity' => '5', + 'tabs_style' => '', + 'tabs_amount' => '5', + 'tabs_space' => '5', + 'tabs_direction' => 'horizontal', + 'tabs_width' => '100', + 'tabs_height' => '50', + 'tabs_width_min' => '100', + 'tabs_always_on' => 'false', + 'hide_tabs' => '200', + 'hide_tabs_mobile' => '1200', + 'hide_tabs_on_mobile' => 'off', + 'tabs_under_hidden' => '0', + 'hide_tabs_over' => 'off', + 'tabs_over_hidden' => '0', + 'tabs_inner_outer' => 'inner', + 'tabs_align_hor' => 'center', + 'tabs_align_vert' => 'bottom', + 'tabs_offset_hor' => '0', + 'tabs_offset_vert' => '20', + 'touchenabled' => 'on', + 'drag_block_vertical' => 'off', + 'swipe_velocity' => '75', + 'swipe_min_touches' => '50', + 'swipe_direction' => 'horizontal', + 'keyboard_navigation' => 'off', + 'keyboard_direction' => 'horizontal', + 'mousescroll_navigation' => 'off', + 'carousel_infinity' => 'on', + 'carousel_space' => '0', + 'carousel_borderr' => '0', + 'carousel_borderr_unit' => 'px', + 'carousel_padding_top' => '0', + 'carousel_padding_bottom' => '0', + 'carousel_maxitems' => '3', + 'carousel_stretch' => 'off', + 'carousel_fadeout' => 'on', + 'carousel_varyfade' => 'on', + 'carousel_rotation' => 'off', + 'carousel_varyrotate' => 'on', + 'carousel_maxrotation' => '65', + 'carousel_scale' => 'off', + 'carousel_varyscale' => 'off', + 'carousel_scaledown' => '55', + 'carousel_hposition' => 'center', + 'carousel_vposition' => 'center', + 'use_parallax' => 'on', + 'disable_parallax_mobile' => 'off', + 'parallax_type' => 'mouse', + 'parallax_origo' => 'slidercenter', + 'parallax_speed' => '2000', + 'parallax_level_1' => '2', + 'parallax_level_2' => '3', + 'parallax_level_3' => '4', + 'parallax_level_4' => '5', + 'parallax_level_5' => '6', + 'parallax_level_6' => '7', + 'parallax_level_7' => '12', + 'parallax_level_8' => '16', + 'parallax_level_9' => '10', + 'parallax_level_10' => '50', + 'lazy_load_type' => 'smart', + 'seo_optimization' => 'none', + 'simplify_ie8_ios4' => 'off', + 'show_alternative_type' => 'off', + 'show_alternate_image' => '', + 'jquery_noconflict' => 'off', + 'js_to_body' => 'false', + 'output_type' => 'none', + 'jquery_debugmode' => 'off', + 'slider_type' => 'fullwidth', + 'width' => '720', + 'width_notebook' => '720', + 'width_tablet' => '720', + 'width_mobile' => '720', + 'height' => '405', + 'height_notebook' => '405', + 'height_tablet' => '405', + 'height_mobile' => '405', + 'enable_custom_size_notebook' => 'off', + 'enable_custom_size_tablet' => 'off', + 'enable_custom_size_iphone' => 'off', + 'main_overflow_hidden' => 'off', + 'auto_height' => 'off', + 'min_height' => '', + 'custom_css' => '', + 'custom_javascript' => '', + ), + ); +$presets[] = array ( + 'settings' => + array ('class' => '', 'image' => RS_PLUGIN_URL.'admin/assets/images/sliderpresets/flat_carousel.png', 'name' => 'Flat-Infinite', 'preset' => 'carouselpreset' ), + 'values' => + array ( + 'next_slide_on_window_focus' => 'off', + 'delay' => '9000', + 'start_js_after_delay' => '0', + 'image_source_type' => 'full', + 0 => 'revapi39.bind(\\"revolution.slide.layeraction\\",function (e) { + //data.eventtype - Layer Action (enterstage, enteredstage, leavestage,leftstage) + //data.layertype - Layer Type (image,video,html) + //data.layersettings - Default Settings for Layer + //data.layer - Layer as jQuery Object +});', + 'start_with_slide' => '1', + 'stop_on_hover' => 'off', + 'stop_slider' => 'on', + 'stop_after_loops' => '0', + 'stop_at_slide' => '1', + 'shuffle' => 'off', + 'viewport_start' => 'wait', + 'viewport_area' => '80', + 'enable_progressbar' => 'on', + 'background_dotted_overlay' => 'none', + 'background_color' => '#111111', + 'padding' => '0', + 'show_background_image' => 'off', + 'background_image' => '', + 'bg_fit' => 'cover', + 'bg_repeat' => 'no-repeat', + 'bg_position' => 'center center', + 'position' => 'center', + 'use_spinner' => '-1', + 'spinner_color' => '#FFFFFF', + 'enable_arrows' => 'on', + 'navigation_arrow_style' => 'uranus', + 'arrows_always_on' => 'false', + 'hide_arrows' => '200', + 'hide_arrows_mobile' => '1200', + 'hide_arrows_on_mobile' => 'off', + 'arrows_under_hidden' => '600', + 'hide_arrows_over' => 'off', + 'arrows_over_hidden' => '0', + 'leftarrow_align_hor' => 'left', + 'leftarrow_align_vert' => 'center', + 'leftarrow_offset_hor' => '30', + 'leftarrow_offset_vert' => '0', + 'rightarrow_align_hor' => 'right', + 'rightarrow_align_vert' => 'center', + 'rightarrow_offset_hor' => '30', + 'rightarrow_offset_vert' => '0', + 'enable_bullets' => 'off', + 'navigation_bullets_style' => 'round-old', + 'bullets_space' => '5', + 'bullets_direction' => 'horizontal', + 'bullets_always_on' => 'true', + 'hide_bullets' => '200', + 'hide_bullets_mobile' => '1200', + 'hide_bullets_on_mobile' => 'on', + 'bullets_under_hidden' => '600', + 'hide_bullets_over' => 'off', + 'bullets_over_hidden' => '0', + 'bullets_align_hor' => 'center', + 'bullets_align_vert' => 'bottom', + 'bullets_offset_hor' => '0', + 'bullets_offset_vert' => '30', + 'enable_thumbnails' => 'off', + 'thumbnails_padding' => '20', + 'span_thumbnails_wrapper' => 'on', + 'thumbnails_wrapper_color' => '#222222', + 'thumbnails_wrapper_opacity' => '100', + 'thumbnails_style' => 'navbar', + 'thumb_amount' => '9', + 'thumbnails_space' => '10', + 'thumbnail_direction' => 'horizontal', + 'thumb_width' => '60', + 'thumb_height' => '60', + 'thumb_width_min' => '60', + 'thumbs_always_on' => 'false', + 'hide_thumbs' => '200', + 'hide_thumbs_mobile' => '1200', + 'hide_thumbs_on_mobile' => 'off', + 'thumbs_under_hidden' => '0', + 'hide_thumbs_over' => 'off', + 'thumbs_over_hidden' => '0', + 'thumbnails_inner_outer' => 'outer-bottom', + 'thumbnails_align_hor' => 'center', + 'thumbnails_align_vert' => 'bottom', + 'thumbnails_offset_hor' => '0', + 'thumbnails_offset_vert' => '0', + 'enable_tabs' => 'off', + 'tabs_padding' => '5', + 'span_tabs_wrapper' => 'off', + 'tabs_wrapper_color' => 'transparent', + 'tabs_wrapper_opacity' => '5', + 'tabs_style' => '', + 'tabs_amount' => '5', + 'tabs_space' => '5', + 'tabs_direction' => 'horizontal', + 'tabs_width' => '100', + 'tabs_height' => '50', + 'tabs_width_min' => '100', + 'tabs_always_on' => 'false', + 'hide_tabs' => '200', + 'hide_tabs_mobile' => '1200', + 'hide_tabs_on_mobile' => 'off', + 'tabs_under_hidden' => '0', + 'hide_tabs_over' => 'off', + 'tabs_over_hidden' => '0', + 'tabs_inner_outer' => 'inner', + 'tabs_align_hor' => 'center', + 'tabs_align_vert' => 'bottom', + 'tabs_offset_hor' => '0', + 'tabs_offset_vert' => '20', + 'touchenabled' => 'on', + 'drag_block_vertical' => 'off', + 'swipe_velocity' => '75', + 'swipe_min_touches' => '50', + 'swipe_direction' => 'horizontal', + 'keyboard_navigation' => 'off', + 'keyboard_direction' => 'horizontal', + 'mousescroll_navigation' => 'off', + 'carousel_infinity' => 'on', + 'carousel_space' => '0', + 'carousel_borderr' => '0', + 'carousel_borderr_unit' => 'px', + 'carousel_padding_top' => '0', + 'carousel_padding_bottom' => '0', + 'carousel_maxitems' => '3', + 'carousel_stretch' => 'off', + 'carousel_fadeout' => 'on', + 'carousel_varyfade' => 'on', + 'carousel_rotation' => 'off', + 'carousel_varyrotate' => 'on', + 'carousel_maxrotation' => '65', + 'carousel_scale' => 'off', + 'carousel_varyscale' => 'off', + 'carousel_scaledown' => '55', + 'carousel_hposition' => 'center', + 'carousel_vposition' => 'center', + 'use_parallax' => 'on', + 'disable_parallax_mobile' => 'off', + 'parallax_type' => 'mouse', + 'parallax_origo' => 'slidercenter', + 'parallax_speed' => '2000', + 'parallax_level_1' => '2', + 'parallax_level_2' => '3', + 'parallax_level_3' => '4', + 'parallax_level_4' => '5', + 'parallax_level_5' => '6', + 'parallax_level_6' => '7', + 'parallax_level_7' => '12', + 'parallax_level_8' => '16', + 'parallax_level_9' => '10', + 'parallax_level_10' => '50', + 'lazy_load_type' => 'smart', + 'seo_optimization' => 'none', + 'simplify_ie8_ios4' => 'off', + 'show_alternative_type' => 'off', + 'show_alternate_image' => '', + 'jquery_noconflict' => 'off', + 'js_to_body' => 'false', + 'output_type' => 'none', + 'jquery_debugmode' => 'off', + 'slider_type' => 'fullwidth', + 'width' => '720', + 'width_notebook' => '720', + 'width_tablet' => '720', + 'width_mobile' => '720', + 'height' => '405', + 'height_notebook' => '405', + 'height_tablet' => '405', + 'height_mobile' => '405', + 'enable_custom_size_notebook' => 'off', + 'enable_custom_size_tablet' => 'off', + 'enable_custom_size_iphone' => 'off', + 'main_overflow_hidden' => 'off', + 'auto_height' => 'off', + 'min_height' => '', + 'custom_css' => '', + 'custom_javascript' => '', + ), + ); +$presets[] = array ( + 'settings' => + array ('class' => '', 'image' => RS_PLUGIN_URL.'admin/assets/images/sliderpresets/flat_carousel_thumbs_left.png', 'name' => 'Flat-Thumbs-Left', 'preset' => 'carouselpreset' ), + 'values' => + array ( + 'next_slide_on_window_focus' => 'off', + 'delay' => '9000', + 'start_js_after_delay' => '0', + 'image_source_type' => 'full', + 0 => 'revapi39.bind(\\"revolution.slide.layeraction\\",function (e) { + //data.eventtype - Layer Action (enterstage, enteredstage, leavestage,leftstage) + //data.layertype - Layer Type (image,video,html) + //data.layersettings - Default Settings for Layer + //data.layer - Layer as jQuery Object +});', + 'start_with_slide' => '1', + 'stop_on_hover' => 'off', + 'stop_slider' => 'on', + 'stop_after_loops' => '0', + 'stop_at_slide' => '1', + 'shuffle' => 'off', + 'viewport_start' => 'wait', + 'viewport_area' => '80', + 'enable_progressbar' => 'on', + 'background_dotted_overlay' => 'none', + 'background_color' => '#111111', + 'padding' => '0', + 'show_background_image' => 'off', + 'background_image' => '', + 'bg_fit' => 'cover', + 'bg_repeat' => 'no-repeat', + 'bg_position' => 'center center', + 'position' => 'center', + 'use_spinner' => '-1', + 'spinner_color' => '#FFFFFF', + 'enable_arrows' => 'on', + 'navigation_arrow_style' => 'uranus', + 'arrows_always_on' => 'false', + 'hide_arrows' => '200', + 'hide_arrows_mobile' => '1200', + 'hide_arrows_on_mobile' => 'off', + 'arrows_under_hidden' => '600', + 'hide_arrows_over' => 'off', + 'arrows_over_hidden' => '0', + 'leftarrow_align_hor' => 'left', + 'leftarrow_align_vert' => 'center', + 'leftarrow_offset_hor' => '30', + 'leftarrow_offset_vert' => '0', + 'rightarrow_align_hor' => 'right', + 'rightarrow_align_vert' => 'center', + 'rightarrow_offset_hor' => '30', + 'rightarrow_offset_vert' => '0', + 'enable_bullets' => 'off', + 'navigation_bullets_style' => 'round-old', + 'bullets_space' => '5', + 'bullets_direction' => 'horizontal', + 'bullets_always_on' => 'true', + 'hide_bullets' => '200', + 'hide_bullets_mobile' => '1200', + 'hide_bullets_on_mobile' => 'on', + 'bullets_under_hidden' => '600', + 'hide_bullets_over' => 'off', + 'bullets_over_hidden' => '0', + 'bullets_align_hor' => 'center', + 'bullets_align_vert' => 'bottom', + 'bullets_offset_hor' => '0', + 'bullets_offset_vert' => '30', + 'enable_thumbnails' => 'on', + 'thumbnails_padding' => '20', + 'span_thumbnails_wrapper' => 'on', + 'thumbnails_wrapper_color' => '#222222', + 'thumbnails_wrapper_opacity' => '100', + 'thumbnails_style' => 'navbar', + 'thumb_amount' => '9', + 'thumbnails_space' => '10', + 'thumbnail_direction' => 'vertical', + 'thumb_width' => '60', + 'thumb_height' => '60', + 'thumb_width_min' => '60', + 'thumbs_always_on' => 'false', + 'hide_thumbs' => '200', + 'hide_thumbs_mobile' => '1200', + 'hide_thumbs_on_mobile' => 'off', + 'thumbs_under_hidden' => '0', + 'hide_thumbs_over' => 'off', + 'thumbs_over_hidden' => '0', + 'thumbnails_inner_outer' => 'outer-left', + 'thumbnails_align_hor' => 'left', + 'thumbnails_align_vert' => 'top', + 'thumbnails_offset_hor' => '0', + 'thumbnails_offset_vert' => '0', + 'enable_tabs' => 'off', + 'tabs_padding' => '5', + 'span_tabs_wrapper' => 'off', + 'tabs_wrapper_color' => 'transparent', + 'tabs_wrapper_opacity' => '5', + 'tabs_style' => '', + 'tabs_amount' => '5', + 'tabs_space' => '5', + 'tabs_direction' => 'horizontal', + 'tabs_width' => '100', + 'tabs_height' => '50', + 'tabs_width_min' => '100', + 'tabs_always_on' => 'false', + 'hide_tabs' => '200', + 'hide_tabs_mobile' => '1200', + 'hide_tabs_on_mobile' => 'off', + 'tabs_under_hidden' => '0', + 'hide_tabs_over' => 'off', + 'tabs_over_hidden' => '0', + 'tabs_inner_outer' => 'inner', + 'tabs_align_hor' => 'center', + 'tabs_align_vert' => 'bottom', + 'tabs_offset_hor' => '0', + 'tabs_offset_vert' => '20', + 'touchenabled' => 'on', + 'drag_block_vertical' => 'off', + 'swipe_velocity' => '75', + 'swipe_min_touches' => '50', + 'swipe_direction' => 'horizontal', + 'keyboard_navigation' => 'off', + 'keyboard_direction' => 'horizontal', + 'mousescroll_navigation' => 'off', + 'carousel_infinity' => 'on', + 'carousel_space' => '0', + 'carousel_borderr' => '0', + 'carousel_borderr_unit' => 'px', + 'carousel_padding_top' => '0', + 'carousel_padding_bottom' => '0', + 'carousel_maxitems' => '3', + 'carousel_stretch' => 'off', + 'carousel_fadeout' => 'on', + 'carousel_varyfade' => 'on', + 'carousel_rotation' => 'off', + 'carousel_varyrotate' => 'on', + 'carousel_maxrotation' => '65', + 'carousel_scale' => 'off', + 'carousel_varyscale' => 'off', + 'carousel_scaledown' => '55', + 'carousel_hposition' => 'center', + 'carousel_vposition' => 'center', + 'use_parallax' => 'on', + 'disable_parallax_mobile' => 'off', + 'parallax_type' => 'mouse', + 'parallax_origo' => 'slidercenter', + 'parallax_speed' => '2000', + 'parallax_level_1' => '2', + 'parallax_level_2' => '3', + 'parallax_level_3' => '4', + 'parallax_level_4' => '5', + 'parallax_level_5' => '6', + 'parallax_level_6' => '7', + 'parallax_level_7' => '12', + 'parallax_level_8' => '16', + 'parallax_level_9' => '10', + 'parallax_level_10' => '50', + 'lazy_load_type' => 'smart', + 'seo_optimization' => 'none', + 'simplify_ie8_ios4' => 'off', + 'show_alternative_type' => 'off', + 'show_alternate_image' => '', + 'jquery_noconflict' => 'off', + 'js_to_body' => 'false', + 'output_type' => 'none', + 'jquery_debugmode' => 'off', + 'slider_type' => 'fullwidth', + 'width' => '720', + 'width_notebook' => '720', + 'width_tablet' => '720', + 'width_mobile' => '720', + 'height' => '405', + 'height_notebook' => '405', + 'height_tablet' => '405', + 'height_mobile' => '405', + 'enable_custom_size_notebook' => 'off', + 'enable_custom_size_tablet' => 'off', + 'enable_custom_size_iphone' => 'off', + 'main_overflow_hidden' => 'off', + 'auto_height' => 'off', + 'min_height' => '', + 'custom_css' => '', + 'custom_javascript' => '', + ), + ); +$presets[] = array ( + 'settings' => + array ('class' => '', 'image' => RS_PLUGIN_URL.'admin/assets/images/sliderpresets/carousel_thumbs_right_fullscreen.png', 'name' => 'Full-Screen-Thumbs-Right', 'preset' => 'carouselpreset' ), + 'values' => + array ( + 'next_slide_on_window_focus' => 'off', + 'delay' => '9000', + 'start_js_after_delay' => '0', + 'image_source_type' => 'full', + 0 => 'revapi39.bind(\\"revolution.slide.layeraction\\",function (e) { + //data.eventtype - Layer Action (enterstage, enteredstage, leavestage,leftstage) + //data.layertype - Layer Type (image,video,html) + //data.layersettings - Default Settings for Layer + //data.layer - Layer as jQuery Object +});', + 'start_with_slide' => '1', + 'stop_on_hover' => 'off', + 'stop_slider' => 'on', + 'stop_after_loops' => '0', + 'stop_at_slide' => '1', + 'shuffle' => 'off', + 'viewport_start' => 'wait', + 'viewport_area' => '80', + 'enable_progressbar' => 'on', + 'background_dotted_overlay' => 'none', + 'background_color' => '#111111', + 'padding' => '0', + 'show_background_image' => 'off', + 'background_image' => '', + 'bg_fit' => 'cover', + 'bg_repeat' => 'no-repeat', + 'bg_position' => 'center center', + 'position' => 'center', + 'use_spinner' => '-1', + 'spinner_color' => '#FFFFFF', + 'enable_arrows' => 'on', + 'navigation_arrow_style' => 'uranus', + 'arrows_always_on' => 'false', + 'hide_arrows' => '200', + 'hide_arrows_mobile' => '1200', + 'hide_arrows_on_mobile' => 'off', + 'arrows_under_hidden' => '600', + 'hide_arrows_over' => 'off', + 'arrows_over_hidden' => '0', + 'leftarrow_align_hor' => 'left', + 'leftarrow_align_vert' => 'center', + 'leftarrow_offset_hor' => '30', + 'leftarrow_offset_vert' => '0', + 'rightarrow_align_hor' => 'right', + 'rightarrow_align_vert' => 'center', + 'rightarrow_offset_hor' => '30', + 'rightarrow_offset_vert' => '0', + 'enable_bullets' => 'off', + 'navigation_bullets_style' => 'round-old', + 'bullets_space' => '5', + 'bullets_direction' => 'horizontal', + 'bullets_always_on' => 'true', + 'hide_bullets' => '200', + 'hide_bullets_mobile' => '1200', + 'hide_bullets_on_mobile' => 'on', + 'bullets_under_hidden' => '600', + 'hide_bullets_over' => 'off', + 'bullets_over_hidden' => '0', + 'bullets_align_hor' => 'center', + 'bullets_align_vert' => 'bottom', + 'bullets_offset_hor' => '0', + 'bullets_offset_vert' => '30', + 'enable_thumbnails' => 'on', + 'thumbnails_padding' => '20', + 'span_thumbnails_wrapper' => 'on', + 'thumbnails_wrapper_color' => '#222222', + 'thumbnails_wrapper_opacity' => '100', + 'thumbnails_style' => 'navbar', + 'thumb_amount' => '9', + 'thumbnails_space' => '10', + 'thumbnail_direction' => 'vertical', + 'thumb_width' => '60', + 'thumb_height' => '60', + 'thumb_width_min' => '60', + 'thumbs_always_on' => 'false', + 'hide_thumbs' => '200', + 'hide_thumbs_mobile' => '1200', + 'hide_thumbs_on_mobile' => 'off', + 'thumbs_under_hidden' => '0', + 'hide_thumbs_over' => 'off', + 'thumbs_over_hidden' => '0', + 'thumbnails_inner_outer' => 'outer-right', + 'thumbnails_align_hor' => 'right', + 'thumbnails_align_vert' => 'top', + 'thumbnails_offset_hor' => '0', + 'thumbnails_offset_vert' => '0', + 'enable_tabs' => 'off', + 'tabs_padding' => '5', + 'span_tabs_wrapper' => 'off', + 'tabs_wrapper_color' => 'transparent', + 'tabs_wrapper_opacity' => '5', + 'tabs_style' => '', + 'tabs_amount' => '5', + 'tabs_space' => '5', + 'tabs_direction' => 'horizontal', + 'tabs_width' => '100', + 'tabs_height' => '50', + 'tabs_width_min' => '100', + 'tabs_always_on' => 'false', + 'hide_tabs' => '200', + 'hide_tabs_mobile' => '1200', + 'hide_tabs_on_mobile' => 'off', + 'tabs_under_hidden' => '0', + 'hide_tabs_over' => 'off', + 'tabs_over_hidden' => '0', + 'tabs_inner_outer' => 'inner', + 'tabs_align_hor' => 'center', + 'tabs_align_vert' => 'bottom', + 'tabs_offset_hor' => '0', + 'tabs_offset_vert' => '20', + 'touchenabled' => 'on', + 'drag_block_vertical' => 'off', + 'swipe_velocity' => '75', + 'swipe_min_touches' => '50', + 'swipe_direction' => 'horizontal', + 'keyboard_navigation' => 'off', + 'keyboard_direction' => 'horizontal', + 'mousescroll_navigation' => 'off', + 'carousel_infinity' => 'on', + 'carousel_space' => '0', + 'carousel_borderr' => '0', + 'carousel_borderr_unit' => 'px', + 'carousel_padding_top' => '0', + 'carousel_padding_bottom' => '0', + 'carousel_maxitems' => '3', + 'carousel_stretch' => 'off', + 'carousel_fadeout' => 'on', + 'carousel_varyfade' => 'on', + 'carousel_rotation' => 'off', + 'carousel_varyrotate' => 'on', + 'carousel_maxrotation' => '65', + 'carousel_scale' => 'off', + 'carousel_varyscale' => 'off', + 'carousel_scaledown' => '55', + 'carousel_hposition' => 'center', + 'carousel_vposition' => 'center', + 'use_parallax' => 'on', + 'disable_parallax_mobile' => 'off', + 'parallax_type' => 'mouse', + 'parallax_origo' => 'slidercenter', + 'parallax_speed' => '2000', + 'parallax_level_1' => '2', + 'parallax_level_2' => '3', + 'parallax_level_3' => '4', + 'parallax_level_4' => '5', + 'parallax_level_5' => '6', + 'parallax_level_6' => '7', + 'parallax_level_7' => '12', + 'parallax_level_8' => '16', + 'parallax_level_9' => '10', + 'parallax_level_10' => '50', + 'lazy_load_type' => 'smart', + 'seo_optimization' => 'none', + 'simplify_ie8_ios4' => 'off', + 'show_alternative_type' => 'off', + 'show_alternate_image' => '', + 'jquery_noconflict' => 'off', + 'js_to_body' => 'false', + 'output_type' => 'none', + 'jquery_debugmode' => 'off', + 'slider_type' => 'fullscreen', + 'width' => '900', + 'width_notebook' => '720', + 'width_tablet' => '720', + 'width_mobile' => '720', + 'height' => '720', + 'height_notebook' => '405', + 'height_tablet' => '405', + 'height_mobile' => '405', + 'enable_custom_size_notebook' => 'off', + 'enable_custom_size_tablet' => 'off', + 'enable_custom_size_iphone' => 'off', + 'main_overflow_hidden' => 'off', + 'auto_height' => 'off', + 'min_height' => '', + 'custom_css' => '', + 'custom_javascript' => '', + ), + ); +$presets[] = array ( + 'settings' => + array ('class' => '', 'image' => RS_PLUGIN_URL.'admin/assets/images/sliderpresets/cover_carousel_thumbs.png', 'name' => 'Cover-Flow-Full-Screen', 'preset' => 'carouselpreset' ), + 'values' => + array ( + 'next_slide_on_window_focus' => 'off', + 'delay' => '9000', + 'start_js_after_delay' => '0', + 'image_source_type' => 'full', + 0 => 'revapi39.bind(\\"revolution.slide.layeraction\\",function (e) { + //data.eventtype - Layer Action (enterstage, enteredstage, leavestage,leftstage) + //data.layertype - Layer Type (image,video,html) + //data.layersettings - Default Settings for Layer + //data.layer - Layer as jQuery Object +});', + 'start_with_slide' => '1', + 'first_transition_active' => 'on', + 'first_transition_type' => 'fade', + 'first_transition_duration' => '1500', + 'first_transition_slot_amount' => '7', + 'stop_on_hover' => 'off', + 'stop_slider' => 'on', + 'stop_after_loops' => '0', + 'stop_at_slide' => '1', + 'shuffle' => 'off', + 'viewport_start' => 'wait', + 'viewport_area' => '80', + 'enable_progressbar' => 'on', + 'background_dotted_overlay' => 'none', + 'background_color' => 'transparent', + 'padding' => '0', + 'show_background_image' => 'off', + 'background_image' => '', + 'bg_fit' => 'cover', + 'bg_repeat' => 'no-repeat', + 'bg_position' => 'center center', + 'position' => 'center', + 'use_spinner' => '-1', + 'spinner_color' => '#FFFFFF', + 'enable_arrows' => 'on', + 'navigation_arrow_style' => 'navbar-old', + 'arrows_always_on' => 'false', + 'hide_arrows' => '200', + 'hide_arrows_mobile' => '1200', + 'hide_arrows_on_mobile' => 'off', + 'arrows_under_hidden' => '600', + 'hide_arrows_over' => 'off', + 'arrows_over_hidden' => '0', + 'leftarrow_align_hor' => 'left', + 'leftarrow_align_vert' => 'center', + 'leftarrow_offset_hor' => '30', + 'leftarrow_offset_vert' => '0', + 'rightarrow_align_hor' => 'right', + 'rightarrow_align_vert' => 'center', + 'rightarrow_offset_hor' => '30', + 'rightarrow_offset_vert' => '0', + 'enable_bullets' => 'off', + 'navigation_bullets_style' => 'round-old', + 'bullets_space' => '5', + 'bullets_direction' => 'horizontal', + 'bullets_always_on' => 'true', + 'hide_bullets' => '200', + 'hide_bullets_mobile' => '1200', + 'hide_bullets_on_mobile' => 'on', + 'bullets_under_hidden' => '600', + 'hide_bullets_over' => 'off', + 'bullets_over_hidden' => '0', + 'bullets_align_hor' => 'center', + 'bullets_align_vert' => 'bottom', + 'bullets_offset_hor' => '0', + 'bullets_offset_vert' => '30', + 'enable_thumbnails' => 'on', + 'thumbnails_padding' => '20', + 'span_thumbnails_wrapper' => 'on', + 'thumbnails_wrapper_color' => '#000000', + 'thumbnails_wrapper_opacity' => '15', + 'thumbnails_style' => 'navbar', + 'thumb_amount' => '9', + 'thumbnails_space' => '10', + 'thumbnail_direction' => 'horizontal', + 'thumb_width' => '60', + 'thumb_height' => '60', + 'thumb_width_min' => '60', + 'thumbs_always_on' => 'false', + 'hide_thumbs' => '200', + 'hide_thumbs_mobile' => '1200', + 'hide_thumbs_on_mobile' => 'off', + 'thumbs_under_hidden' => '0', + 'hide_thumbs_over' => 'off', + 'thumbs_over_hidden' => '0', + 'thumbnails_inner_outer' => 'inner', + 'thumbnails_align_hor' => 'center', + 'thumbnails_align_vert' => 'bottom', + 'thumbnails_offset_hor' => '0', + 'thumbnails_offset_vert' => '0', + 'enable_tabs' => 'off', + 'tabs_padding' => '5', + 'span_tabs_wrapper' => 'off', + 'tabs_wrapper_color' => 'transparent', + 'tabs_wrapper_opacity' => '5', + 'tabs_style' => '', + 'tabs_amount' => '5', + 'tabs_space' => '5', + 'tabs_direction' => 'horizontal', + 'tabs_width' => '100', + 'tabs_height' => '50', + 'tabs_width_min' => '100', + 'tabs_always_on' => 'false', + 'hide_tabs' => '200', + 'hide_tabs_mobile' => '1200', + 'hide_tabs_on_mobile' => 'off', + 'tabs_under_hidden' => '0', + 'hide_tabs_over' => 'off', + 'tabs_over_hidden' => '0', + 'tabs_inner_outer' => 'inner', + 'tabs_align_hor' => 'center', + 'tabs_align_vert' => 'bottom', + 'tabs_offset_hor' => '0', + 'tabs_offset_vert' => '20', + 'touchenabled' => 'on', + 'drag_block_vertical' => 'off', + 'swipe_velocity' => '75', + 'swipe_min_touches' => '50', + 'swipe_direction' => 'horizontal', + 'keyboard_navigation' => 'off', + 'keyboard_direction' => 'horizontal', + 'mousescroll_navigation' => 'off', + 'carousel_infinity' => 'on', + 'carousel_space' => '-150', + 'carousel_borderr' => '0', + 'carousel_borderr_unit' => '%', + 'carousel_padding_top' => '0', + 'carousel_padding_bottom' => '0', + 'carousel_maxitems' => '5', + 'carousel_stretch' => 'off', + 'carousel_fadeout' => 'on', + 'carousel_varyfade' => 'on', + 'carousel_rotation' => 'on', + 'carousel_varyrotate' => 'on', + 'carousel_maxrotation' => '65', + 'carousel_scale' => 'on', + 'carousel_varyscale' => 'off', + 'carousel_scaledown' => '55', + 'carousel_hposition' => 'center', + 'carousel_vposition' => 'center', + 'use_parallax' => 'on', + 'disable_parallax_mobile' => 'off', + 'parallax_type' => 'mouse', + 'parallax_origo' => 'slidercenter', + 'parallax_speed' => '2000', + 'parallax_level_1' => '2', + 'parallax_level_2' => '3', + 'parallax_level_3' => '4', + 'parallax_level_4' => '5', + 'parallax_level_5' => '6', + 'parallax_level_6' => '7', + 'parallax_level_7' => '12', + 'parallax_level_8' => '16', + 'parallax_level_9' => '10', + 'parallax_level_10' => '50', + 'lazy_load_type' => 'smart', + 'seo_optimization' => 'none', + 'simplify_ie8_ios4' => 'off', + 'show_alternative_type' => 'off', + 'show_alternate_image' => '', + 'jquery_noconflict' => 'off', + 'js_to_body' => 'false', + 'output_type' => 'none', + 'jquery_debugmode' => 'off', + 'slider_type' => 'fullscreen', + 'width' => '800', + 'width_notebook' => '600', + 'width_tablet' => '600', + 'width_mobile' => '600', + 'height' => '800', + 'height_notebook' => '600', + 'height_tablet' => '600', + 'height_mobile' => '600', + 'enable_custom_size_notebook' => 'off', + 'enable_custom_size_tablet' => 'off', + 'enable_custom_size_iphone' => 'off', + 'main_overflow_hidden' => 'off', + 'auto_height' => 'off', + 'min_height' => '', + 'custom_css' => '', + 'custom_javascript' => '', + ), + ); +$presets[] = array ( + 'settings' => + array ('class' => '', 'image' => RS_PLUGIN_URL.'admin/assets/images/sliderpresets/carousel_full_rounded.png', 'name' => 'Cover-Flow-Rounded', 'preset' => 'carouselpreset' ), + 'values' => + array ( + 'next_slide_on_window_focus' => 'off', + 'delay' => '9000', + 'start_js_after_delay' => '0', + 'image_source_type' => 'full', + 0 => 'revapi39.bind(\\"revolution.slide.layeraction\\",function (e) { + //data.eventtype - Layer Action (enterstage, enteredstage, leavestage,leftstage) + //data.layertype - Layer Type (image,video,html) + //data.layersettings - Default Settings for Layer + //data.layer - Layer as jQuery Object +});', + 'start_with_slide' => '1', + 'first_transition_active' => 'on', + 'first_transition_type' => 'fade', + 'first_transition_duration' => '1500', + 'first_transition_slot_amount' => '7', + 'stop_on_hover' => 'off', + 'stop_slider' => 'on', + 'stop_after_loops' => '0', + 'stop_at_slide' => '1', + 'shuffle' => 'off', + 'viewport_start' => 'wait', + 'viewport_area' => '80', + 'enable_progressbar' => 'on', + 'background_dotted_overlay' => 'none', + 'background_color' => 'transparent', + 'padding' => '0', + 'show_background_image' => 'off', + 'background_image' => '', + 'bg_fit' => 'cover', + 'bg_repeat' => 'no-repeat', + 'bg_position' => 'center center', + 'position' => 'center', + 'use_spinner' => '-1', + 'spinner_color' => '#FFFFFF', + 'enable_arrows' => 'on', + 'navigation_arrow_style' => 'round', + 'arrows_always_on' => 'false', + 'hide_arrows' => '200', + 'hide_arrows_mobile' => '1200', + 'hide_arrows_on_mobile' => 'off', + 'arrows_under_hidden' => '600', + 'hide_arrows_over' => 'off', + 'arrows_over_hidden' => '0', + 'leftarrow_align_hor' => 'left', + 'leftarrow_align_vert' => 'center', + 'leftarrow_offset_hor' => '30', + 'leftarrow_offset_vert' => '0', + 'rightarrow_align_hor' => 'right', + 'rightarrow_align_vert' => 'center', + 'rightarrow_offset_hor' => '30', + 'rightarrow_offset_vert' => '0', + 'enable_bullets' => 'off', + 'navigation_bullets_style' => 'round-old', + 'bullets_space' => '5', + 'bullets_direction' => 'horizontal', + 'bullets_always_on' => 'true', + 'hide_bullets' => '200', + 'hide_bullets_mobile' => '1200', + 'hide_bullets_on_mobile' => 'on', + 'bullets_under_hidden' => '600', + 'hide_bullets_over' => 'off', + 'bullets_over_hidden' => '0', + 'bullets_align_hor' => 'center', + 'bullets_align_vert' => 'bottom', + 'bullets_offset_hor' => '0', + 'bullets_offset_vert' => '30', + 'enable_thumbnails' => 'on', + 'thumbnails_padding' => '20', + 'span_thumbnails_wrapper' => 'on', + 'thumbnails_wrapper_color' => '#000000', + 'thumbnails_wrapper_opacity' => '0', + 'thumbnails_style' => 'preview1', + 'thumb_amount' => '9', + 'thumbnails_space' => '10', + 'thumbnail_direction' => 'horizontal', + 'thumb_width' => '60', + 'thumb_height' => '60', + 'thumb_width_min' => '60', + 'thumbs_always_on' => 'false', + 'hide_thumbs' => '200', + 'hide_thumbs_mobile' => '1200', + 'hide_thumbs_on_mobile' => 'off', + 'thumbs_under_hidden' => '0', + 'hide_thumbs_over' => 'off', + 'thumbs_over_hidden' => '0', + 'thumbnails_inner_outer' => 'inner', + 'thumbnails_align_hor' => 'center', + 'thumbnails_align_vert' => 'bottom', + 'thumbnails_offset_hor' => '0', + 'thumbnails_offset_vert' => '0', + 'enable_tabs' => 'off', + 'tabs_padding' => '5', + 'span_tabs_wrapper' => 'off', + 'tabs_wrapper_color' => 'transparent', + 'tabs_wrapper_opacity' => '5', + 'tabs_style' => '', + 'tabs_amount' => '5', + 'tabs_space' => '5', + 'tabs_direction' => 'horizontal', + 'tabs_width' => '100', + 'tabs_height' => '50', + 'tabs_width_min' => '100', + 'tabs_always_on' => 'false', + 'hide_tabs' => '200', + 'hide_tabs_mobile' => '1200', + 'hide_tabs_on_mobile' => 'off', + 'tabs_under_hidden' => '0', + 'hide_tabs_over' => 'off', + 'tabs_over_hidden' => '0', + 'tabs_inner_outer' => 'inner', + 'tabs_align_hor' => 'center', + 'tabs_align_vert' => 'bottom', + 'tabs_offset_hor' => '0', + 'tabs_offset_vert' => '20', + 'touchenabled' => 'on', + 'drag_block_vertical' => 'off', + 'swipe_velocity' => '75', + 'swipe_min_touches' => '50', + 'swipe_direction' => 'horizontal', + 'keyboard_navigation' => 'off', + 'keyboard_direction' => 'horizontal', + 'mousescroll_navigation' => 'off', + 'carousel_infinity' => 'on', + 'carousel_space' => '-150', + 'carousel_borderr' => '50', + 'carousel_borderr_unit' => '%', + 'carousel_padding_top' => '0', + 'carousel_padding_bottom' => '0', + 'carousel_maxitems' => '5', + 'carousel_stretch' => 'off', + 'carousel_fadeout' => 'on', + 'carousel_varyfade' => 'on', + 'carousel_rotation' => 'off', + 'carousel_varyrotate' => 'on', + 'carousel_maxrotation' => '65', + 'carousel_scale' => 'on', + 'carousel_varyscale' => 'off', + 'carousel_scaledown' => '55', + 'carousel_hposition' => 'center', + 'carousel_vposition' => 'center', + 'use_parallax' => 'on', + 'disable_parallax_mobile' => 'off', + 'parallax_type' => 'mouse', + 'parallax_origo' => 'slidercenter', + 'parallax_speed' => '2000', + 'parallax_level_1' => '2', + 'parallax_level_2' => '3', + 'parallax_level_3' => '4', + 'parallax_level_4' => '5', + 'parallax_level_5' => '6', + 'parallax_level_6' => '7', + 'parallax_level_7' => '12', + 'parallax_level_8' => '16', + 'parallax_level_9' => '10', + 'parallax_level_10' => '50', + 'lazy_load_type' => 'smart', + 'seo_optimization' => 'none', + 'simplify_ie8_ios4' => 'off', + 'show_alternative_type' => 'off', + 'show_alternate_image' => '', + 'jquery_noconflict' => 'off', + 'js_to_body' => 'false', + 'output_type' => 'none', + 'jquery_debugmode' => 'off', + 'slider_type' => 'fullwidth', + 'width' => '800', + 'width_notebook' => '600', + 'width_tablet' => '600', + 'width_mobile' => '600', + 'height' => '800', + 'height_notebook' => '600', + 'height_tablet' => '600', + 'height_mobile' => '600', + 'enable_custom_size_notebook' => 'off', + 'enable_custom_size_tablet' => 'off', + 'enable_custom_size_iphone' => 'off', + 'main_overflow_hidden' => 'off', + 'auto_height' => 'off', + 'min_height' => '', + 'custom_css' => '', + 'custom_javascript' => '', + ), + ); + + //add the presets made from customers + $customer_presets = get_option('revslider_presets', array()); + + + $presets = array_merge($presets, $customer_presets); + + $presets = apply_filters('revslider_slider_presets', $presets); + + foreach($presets as $key => $preset){ + if(intval($preset['settings']['image']) > 0){ + $img = wp_get_attachment_image_src(esc_attr($preset['settings']['image']), 'medium'); + $presets[$key]['settings']['image'] = ($img !== false) ? $img['0'] : ''; + } + } + + return $presets; + + } + + /* Provider: - * + * + * @since: 5.0 + **/ + public static function add_preset_setting($data){ + + if(!isset($data['settings']) || !isset($data['values'])) return __('Missing values to add preset', REVSLIDER_TEXTDOMAIN); + + $customer_presets = get_option('revslider_presets', array()); + + $data['settings']['custom'] = true; + + $customer_presets[] = array( + 'settings' => $data['settings'], + 'values' => $data['values'] + ); + + update_option('revslider_presets', $customer_presets); + + return true; + } + + + /* Provider: - * + * @since: 5.0 + **/ + public static function remove_preset_setting($data){ + + if(!isset($data['name'])) return __('Missing values to remove preset', REVSLIDER_TEXTDOMAIN); + + $customer_presets = get_option('revslider_presets', array()); + + if(!empty($customer_presets)){ + foreach($customer_presets as $key => $preset){ + if($preset['settings']['name'] == $data['name']){ + unset($customer_presets[$key]); + break; + } + } + } + + update_option('revslider_presets', $customer_presets); + + return true; + } + + + /* Provider: - * + * @since: 5.0 + **/ + public static function update_preset_setting($data){ + + if(!isset($data['name'])) return __('Missing values to update preset', REVSLIDER_TEXTDOMAIN); + + $customer_presets = get_option('revslider_presets', array()); + + if(!empty($customer_presets)){ + foreach($customer_presets as $key => $preset){ + if($preset['settings']['name'] == $data['name']){ + $customer_presets[$key]['values'] = $data['values']; + break; + } + } + } + + update_option('revslider_presets', $customer_presets); + + return true; + } + +} + + +/* Provider: - * + * old classname extends new one (old classnames will be obsolete soon) + * @since: 5.0 + **/ +class RevOperations extends RevSliderOperations {} +?> \ No newline at end of file diff --git a/plugins/revslider/includes/output.class.php b/plugins/revslider/includes/output.class.php new file mode 100644 index 0000000..3820d11 --- /dev/null +++ b/plugins/revslider/includes/output.class.php @@ -0,0 +1,3897 @@ + + * @link http://www.themepunch.com/ + * @copyright 2015 ThemePunch + */ + +if( !defined( 'ABSPATH') ) exit(); + +class RevSliderOutput { + + private static $sliderSerial = 0; + + private $sliderHtmlID; + private $sliderHtmlID_wrapper; + private $oneSlideMode = false; + private $oneSlideData; + private $previewMode = false; //admin preview mode + private $slidesNumIndex; + private $sliderLang = 'all'; + private $hasOnlyOneSlide = false; + private $rev_inline_js = ''; + public $slider; + public $class_include = array(); + + /* Provider: - * + * + * check the put in string + * return true / false if the put in string match the current page. + */ + public static function isPutIn($putIn,$emptyIsFalse = false){ + + $putIn = strtolower($putIn); + $putIn = trim($putIn); + + if($emptyIsFalse && empty($putIn)) + return(false); + + if($putIn == 'homepage'){ //filter by homepage + if(is_front_page() == false) + return(false); + } + else //case filter by pages + if(!empty($putIn)){ + $arrPutInPages = array(); + $arrPagesTemp = explode(",", $putIn); + foreach($arrPagesTemp as $page){ + $page = trim($page); + if(is_numeric($page) || $page == 'homepage') + $arrPutInPages[] = $page; + } + if(!empty($arrPutInPages)){ + + //get current page id + $currentPageID = ""; + if(is_front_page() == true){ + $currentPageID = 'homepage'; + }else{ + global $post; + if(isset($post->ID)) + $currentPageID = $post->ID; + } + + //do the filter by pages + if(array_search($currentPageID, $arrPutInPages) === false) + return(false); + } + } + + return(true); + } + + + /* Provider: - * + * + * put the rev slider slider on the html page. + * @param $data - mixed, can be ID ot Alias. + */ + public static function putSlider($sliderID,$putIn="",$gal_ids = array()){ + + $isPutIn = self::isPutIn($putIn); + if($isPutIn == false) + return(false); + + //check if on mobile and if option hide on mobile is set + + $output = new RevSliderOutput(); + + $output->putSliderBase($sliderID, $gal_ids); + + $slider = $output->getSlider(); + return($slider); + } + + + /* Provider: - * + * + * set language + */ + public function setLang($lang){ + $this->sliderLang = $lang; + } + + /* Provider: - * + * + * set one slide mode for preview + */ + public function setOneSlideMode($data){ + $this->oneSlideMode = true; + $this->oneSlideData = $data; + } + + /* Provider: - * + * + * set preview mode + */ + public function setPreviewMode(){ + $this->previewMode = true; + } + + /* Provider: - * + * + * get the last slider after the output + */ + public function getSlider(){ + return($this->slider); + } + + /* Provider: - * + * + * get slide full width video data + */ + private function getSlideFullWidthVideoData(RevSlide $slide){ + + $response = array('found' => false); + + //deal full width video: + $enableVideo = $slide->getParam('enable_video', 'false'); + if($enableVideo != 'true') + return($response); + + $videoID = $slide->getParam('video_id', ''); + $videoID = trim($videoID); + + if(empty($videoID)) + return($response); + + $response["found"] = true; + + $videoType = is_numeric($videoID) ? 'vimeo' : 'youtube'; + $videoAutoplay = $slide->getParam('video_autoplay', false); + $videoCover = $slide->getParam('cover', false); + $videoAutoplayOnlyFirstTime = $slide->getParam('autoplayonlyfirsttime', false); + $previewimage = $slide->getParam('previewimage', ''); + $videoNextslide = $slide->getParam('video_nextslide', false); + $mute = $slide->getParam('mute', false); + + $response['type'] = $videoType; + $response['videoID'] = $videoID; + $response['autoplay'] = RevSliderFunctions::strToBool($videoAutoplay); + $response['cover'] = RevSliderFunctions::strToBool($videoCover); + $response['autoplayonlyfirsttime'] = RevSliderFunctions::strToBool($videoAutoplayOnlyFirstTime); + $response['previewimage'] = RevSliderFunctions::strToBool($previewimage); + $response['nextslide'] = RevSliderFunctions::strToBool($videoNextslide); + $response['mute'] = RevSliderFunctions::strToBool($mute); + + return($response); + } + + + /* Provider: - * + * Get the Hero Slide of the Slider + * @since: 5.0 + */ + private function getHeroSlide($slides){ + $hero_id = $this->slider->getParam('hero_active', -1); + + + if(empty($slides)) return $slides; + + foreach($slides as $slide){ + $slideID = $slide->getID(); + + if($slideID == $hero_id){ + return $slide; + } + if($this->sliderLang !== 'all'){ + if($slide->getParentSlideID() == $hero_id){ + return $slide; + } + } + } + + //could not be found, use first slide + foreach($slides as $slide){ + return $slide; + } + } + + /* Provider: - * + * + * filter the slides for one slide preview + */ + private function filterOneSlide($slides){ + + $oneSlideID = $this->oneSlideData['slideid']; + + + $oneSlideParams = RevSliderFunctions::getVal($this->oneSlideData, 'params'); + $oneSlideLayers = RevSliderFunctions::getVal($this->oneSlideData, 'layers'); + + if(gettype($oneSlideParams) == 'object') + $oneSlideParams = (array)$oneSlideParams; + + if(gettype($oneSlideLayers) == 'object') + $oneSlideLayers = (array)$oneSlideLayers; + + if(!empty($oneSlideLayers)) + $oneSlideLayers = RevSliderFunctions::convertStdClassToArray($oneSlideLayers); + + $newSlides = array(); + foreach($slides as $slide){ + $slideID = $slide->getID(); + + if($slideID == $oneSlideID){ + + if(!empty($oneSlideParams)) + $slide->setParams($oneSlideParams); + + if(!empty($oneSlideLayers)) + $slide->setLayers($oneSlideLayers); + + $newSlides[] = $slide; //add 2 slides + $newSlides[] = $slide; + } + } + + return($newSlides); + } + + + /* Provider: - * + * + * put the slider slides + */ + private function putSlides($gal_ids = array()){ + //go to template slider if post template + + $sliderType = $this->slider->getParam('slider_type'); + $slider_type = $this->slider->getParam('slider-type'); //standard, carousel or hero + $source_type = $this->slider->getParam('source_type'); //vimeo, post ect. + + $publishedOnly = true; + if($slider_type == 'hero'){ + $publishedOnly = false; //take all, even unpublished ones + } + + if($this->previewMode == true && $this->oneSlideMode == true){ + $previewSlideID = RevSliderFunctions::getVal($this->oneSlideData, 'slideid'); + $previewSlide = new RevSlide(); + $previewSlide->initByID($previewSlideID); + $slides = array($previewSlide); + }else{ + $slides = $this->slider->getSlidesForOutput($publishedOnly,$this->sliderLang); + + if(!empty($gal_ids)){ //add slides from the images + if(count($gal_ids) !== count($slides)){ //set slides to the same amount as + if(count($gal_ids) < count($slides)){ + $slides = array_slice($slides, 0, count($gal_ids)); + }else{ // > + while(count($slides) < count($gal_ids)){ + foreach($slides as $slide){ + $new_slide = clone $slide; + array_push($slides, $new_slide); + if(count($slides) >= count($gal_ids)) break; + } + } + if(count($gal_ids) < count($slides)){ + $slides = array_slice($slides, 0, count($gal_ids)); + } + } + } + + $sliderSize = $this->slider->getParam('def-image_source_type', 'full'); + + $gi = 0; + foreach($slides as $skey => $slide){ //add gallery images into slides + $ret = $slide->setImageByID($gal_ids[$gi], $sliderSize); + if($ret === true){ //set slide type to image instead of for example external or transparent + $slide->setBackgroundType('image'); + }else{ + unset($slides[$skey]); + } + + $gi++; + } + } + } + + $this->slidesNumIndex = $this->slider->getSlidesNumbersByIDs(true); + + if($slider_type == 'hero'){ //we are a hero Slider, show only one Slide! + $hero = $this->getHeroSlide($slides); + $slides = (!empty($hero)) ? array($hero) : array(); + } + + if(empty($slides)){ + ?> +
        + slider->isSlidesFromPosts()){ + _e('No slides found, please add at least one Slide Template to the choosen language.', REVSLIDER_TEXTDOMAIN); + }else{ + _e('No slides found, please add some slides', REVSLIDER_TEXTDOMAIN); + } + ?> +
        + slider->isSlidesFromPosts()){ + $post_based_slider = true; + } + + $slideWidth = $this->slider->getParam('width',900); + $slideHeight = $this->slider->getParam('height',300); + + $do_thumbnails = $this->slider->getParam('enable_thumbnails','off'); + $do_arrows = $this->slider->getParam('enable_arrows','off'); + $do_tabs = $this->slider->getParam('enable_tabs','off'); + $isThumbsActive = ($do_thumbnails == 'on' || $do_arrows == 'on' || $do_tabs == 'on') ? true : false; + + $lazyLoad = $this->slider->getParam('lazy_load_type', false); + if($lazyLoad === false){ //do fallback checks to removed lazy_load value since version 5.0 and replaced with an enhanced version + $old_ll = $this->slider->getParam('lazy_load', 'off'); + $lazyLoad = ($old_ll == 'on') ? 'all' : 'none'; + } + + //for one slide preview + if($this->oneSlideMode == true) + $slides = $this->filterOneSlide($slides); + + echo "
          "; + + $htmlFirstTransWrap = ""; + + $startWithSlide = $this->slider->getStartWithSlideSetting(); + + $firstTransActive = $this->slider->getParam('first_transition_active', 'false'); + + if($firstTransActive == 'on' && $slider_type !== 'hero'){ + + $firstTransition = $this->slider->getParam('first_transition_type', 'fade'); + $htmlFirstTransWrap .= ' data-fstransition="'.$firstTransition.'"'; + + $firstDuration = $this->slider->getParam('first_transition_duration', '300'); + if(!empty($firstDuration) && is_numeric($firstDuration)) + $htmlFirstTransWrap .= ' data-fsmasterspeed="'.$firstDuration.'"'; + + $firstSlotAmount = $this->slider->getParam('first_transition_slot_amount', '7'); + if(!empty($firstSlotAmount) && is_numeric($firstSlotAmount)) + $htmlFirstTransWrap .= ' data-fsslotamount="'.$firstSlotAmount.'"'; + + } + + //if(count($slides) == 1 && $this->oneSlideMode == false){ + // $slides[] = $slides[0]; + // $slides[1]->ignore_alt = true; + // $this->hasOnlyOneSlide = true; + //} + if(count($slides) == 0) return false; // No Slides added yet + + $index = 0; + foreach($slides as $slide){ + $params = $slide->getParams(); + + $navigation_arrow_stlye = $this->slider->getParam('navigation_arrow_style', 'round'); + $navigation_bullets_style = $this->slider->getParam('navigation_bullets_style', 'round'); + + if($post_based_slider) + $postData = $slide->getPostData(); + + //check if date is set + $date_from = $slide->getParam('date_from', ''); + $date_to = $slide->getParam('date_to', ''); + + if($this->previewMode === false){ // do only if we are not in preview mode + $ts = current_time('timestamp'); + + if($date_from != ''){ + $date_from = strtotime($date_from); + if($ts < $date_from) continue; + } + + if($date_to != ''){ + $date_to = strtotime($date_to); + if($ts > $date_to) continue; + } + } + + $transition = $slide->getParam('slide_transition', 'random'); + + if(!is_array($transition)){ + $transition_arr = explode(',', $transition); + }else{ + $transition_arr = $transition; + $transition = implode(',', $transition); + } + + + $add_rand = ''; + if(is_array($transition_arr) && !empty($transition_arr)){ + foreach($transition_arr as $tkey => $trans){ + if($trans == 'random-selected'){ + $add_rand = ' data-randomtransition="on"'; + unset($transition_arr[$tkey]); + $transition = implode(',', $transition_arr); + break; + } + } + } + + $slotAmount = $slide->getParam('slot_amount', '7'); + if(is_array($slotAmount)) $slotAmount = implode(',', $slotAmount); + + $imageAddParams = ''; + + $isExternal = $slide->getParam('background_type', 'image'); + if($isExternal != 'external'){ + $urlSlideImage = $slide->getImageUrl(); + + //get image alt + $alt_type = $slide->getParam('alt_option', 'media_library'); + + $alt = ''; + $img_id = $slide->getImageID(); + + switch($alt_type){ + case 'media_library': + $alt = get_post_meta( $img_id, '_wp_attachment_image_alt', true ); + break; + case 'file_name': + $imageFilename = $slide->getImageFilename(); + $info = pathinfo($imageFilename); + $alt = $info['filename']; + break; + case 'custom': + $alt = esc_attr($slide->getParam('alt_attr', '')); + break; + } + + $img_w = ''; + $img_h = ''; + + $img_size = $slide->getParam('image_source_type', 'full'); + + if($img_id !== false){ + $img_data = wp_get_attachment_metadata( $img_id ); + if($img_data !== false && !empty($img_data)){ + if($img_size !== 'full'){ + if(isset($img_data['sizes']) && isset($img_data['sizes'][$img_size])){ + $img_w = @$img_data['sizes'][$img_size]['width']; + $img_h = @$img_data['sizes'][$img_size]['height']; + } + } + + if($img_w == '' || $img_h == ''){ + $img_w = @$img_data['width']; + $img_h = @$img_data['height']; + } + $imageAddParams .= ' width="'.$img_w.'" height="'.$img_h.'"'; + } + } + + }else{ + $urlSlideImage = $slide->getParam('slide_bg_external', ''); + $alt = esc_attr($slide->getParam('alt_attr', '')); + + $img_w = $slide->getParam('ext_width', '1920'); + $img_h = $slide->getParam('ext_height', '1080'); + + $imageAddParams .= ' width="'.$img_w.'" height="'.$img_h.'"'; + } + + if(isset($slide->ignore_alt)) $alt = ''; + + $bgType = $slide->getParam('background_type', 'image'); + + //get thumb url + + $is_special_nav = false; + switch($navigation_arrow_stlye){ //generate also if we have a special navigation selected + case 'preview1': + case 'preview2': + case 'preview3': + case 'preview4': + case 'custom': + $is_special_nav = true; + } + switch($navigation_bullets_style){ //generate also if we have a special navigation selected + case 'preview1': + case 'preview2': + case 'preview3': + case 'preview4': + case 'custom': + $is_special_nav = true; + } + + + $htmlThumb = ""; + if($isThumbsActive == true || $is_special_nav == true){ + $urlThumb = null; + + if(empty($urlThumb)){ + $urlThumb = $slide->getParam('slide_thumb', ''); + } + + if($source_type == 'youtube' || $source_type == 'vimeo' || + $bgType == 'image' || $bgType == 'vimeo' || $bgType == 'youtube' || $bgType == 'html5' || + $bgType == 'streamvimeo' || $bgType == 'streamyoutube' || $bgType == 'streaminstagram' || $bgType == 'streamtwitter' || + $bgType == 'streamvimeoboth' || $bgType == 'streamyoutubeboth' || $bgType == 'streaminstagramboth' || $bgType == 'streamtwitterboth'){ + + if(empty($urlThumb)){ //try to get resized thumb + $url_img_link = $slide->getImageUrl(); + + $urlThumb = rev_aq_resize($url_img_link, 320, 200, true, true, true); + }else{ + $urlThumb = rev_aq_resize($urlThumb, 320, 200, true, true, true); + } + + //if not - put regular image: + if(empty($urlThumb)) + $urlThumb = $slide->getImageUrl(); + } + + $htmlThumb = ' data-thumb="'.$urlThumb.'" '; + + } + + //get link + $htmlLink = ''; + $enableLink = $slide->getParam('enable_link', 'false'); + if($enableLink == 'true'){ + $linkType = $slide->getParam('link_type', 'regular'); + switch($linkType){ + + //---- normal link + default: + case 'regular': + $link = $slide->getParam('link', ''); + $linkOpenIn = $slide->getParam('link_open_in', 'same'); + $htmlTarget = ''; + if($linkOpenIn == 'new') + $htmlTarget = ' data-target="_blank"'; + $htmlLink = ' data-link="'.$link.'" '.$htmlTarget.' '; + break; + + //---- link to slide + case 'slide': + $slideLink = RevSliderFunctions::getVal($params, 'slide_link'); + if(!empty($slideLink) && $slideLink != 'nothing'){ + //get slide index from id + if(is_numeric($slideLink)) + $slideLink = RevSliderFunctions::getVal($this->slidesNumIndex, $slideLink); + + if(!empty($slideLink)){ + $htmlLink = ' data-link="slide" data-linktoslide="'.$slideLink.'" '; + } + } + break; + } + + //set link position: + $linkPos = RevSliderFunctions::getVal($params, 'link_pos', 'front'); + if($linkPos == 'back') + $htmlLink .= ' data-slideindex="back"'; + } + + //set delay + $htmlDelay = ''; + $delay = $slide->getParam('delay', ''); + if(!empty($delay) && is_numeric($delay)) + $htmlDelay = ' data-delay="'.$delay.'" '; + + //get duration + $htmlDuration = ''; + $duration = $slide->getParam('transition_duration', ''); + + if(is_array($duration)) $duration = implode(',', $duration); + + if(!empty($duration)) + $htmlDuration = ' data-masterspeed="'.$duration.'" '; + + //get performance + $htmlPerformance = ''; + $performance = $slide->getParam('save_performance', 'off'); + if(!empty($performance) && ($performance == 'on' || $performance == 'off')) + $htmlPerformance = ' data-saveperformance="'.$performance.'" '; + + + + //get rotation + $htmlRotation = ''; + $rotation = (array) $slide->getParam('transition_rotation', ''); + if(!empty($rotation)){ + $rot_string = ''; + foreach($rotation as $rkey => $rot){ + $rot = (int)$rot; + if($rot != 0){ + if($rot > 720 && $rot != 999) + $rot = 720; + if($rot < -720) + $rot = -720; + } + if($rkey > 0) $rot_string .= ','; + $rot_string .= $rot; + } + $htmlRotation = ' data-rotate="'.$rot_string.'" '; + } + + $htmlEaseIn = ''; + $easein = $slide->getParam('transition_ease_in', 'default'); + if(!empty($easein) && is_array($easein)) $easein = implode(',', $easein); + if($easein !== '') $htmlEaseIn = ' data-easein="'.$easein.'"'; + + $htmlEaseOut = ''; + $easeout = $slide->getParam('transition_ease_out', 'default'); + + if(!empty($easeout) && is_array($easeout)) $easeout = implode(',', $easeout); + + if($easeout !== '') $htmlEaseOut = ' data-easeout="'.$easeout.'"'; + + $fullWidthVideoData = $this->getSlideFullWidthVideoData($slide); + + //set first slide transition + $htmlFirstTrans = ''; + + if($index == $startWithSlide && $slider_type !== 'hero'){ + $htmlFirstTrans = $htmlFirstTransWrap; + }//first trans + + $htmlParams = $htmlEaseIn.$htmlEaseOut.$htmlDuration.$htmlLink.$htmlThumb.$htmlDelay.$htmlRotation.$htmlFirstTrans.$htmlPerformance; + + + $styleImage = ''; + $urlImageTransparent = RS_PLUGIN_URL.'admin/assets/images/transparent.png'; + + switch($bgType){ + case 'trans': + $urlSlideImage = $urlImageTransparent; + break; + case 'solid': + $urlSlideImage = $urlImageTransparent; + $slideBGColor = $slide->getParam('slide_bg_color', '#d0d0d0'); + $styleImage = "style='background-color:".$slideBGColor."'"; + break; + case 'streamvimeo': + case 'streamyoutube': + case 'streaminstagram': + case 'streamtwitter': + if($slide->getParam('stream_do_cover', 'on') == 'off'){ + $urlSlideImage = $urlImageTransparent; + } + break; + case 'streamvimeoboth': + case 'streamyoutubeboth': + case 'streaminstagramboth': + case 'streamtwitterboth': + if($this->checkIfStreamVideoExists($slide)){ + if($slide->getParam('stream_do_cover_both', 'on') == 'off'){ + $urlSlideImage = $urlImageTransparent; + } + } + break; + } + + if(trim($urlSlideImage) == '') $urlSlideImage = $urlImageTransparent; //go back to transparent if img is empty + + //additional params + if($lazyLoad != 'none'){ + $imageAddParams .= ' data-lazyload="'.$urlSlideImage.'"'; + $urlSlideImage = RS_PLUGIN_URL.'admin/assets/images/dummy.png'; + } + + //additional background params + $bgFit = $slide->getParam('bg_fit', 'cover'); + $bgFitX = intval($slide->getParam('bg_fit_x', '100')); + $bgFitY = intval($slide->getParam('bg_fit_y', '100')); + + $bgPosition = $slide->getParam('bg_position', 'center center'); + + if($bgType == 'streamvimeoboth' || $bgType == 'streamyoutubeboth' || $bgType == 'streaminstagramboth' || $bgType == 'streamtwitterboth'){ + if($this->checkIfStreamVideoExists($slide)){ + $bgPosition = 'center center'; + } + }else{ + if($bgType == 'youtube' || $bgType == 'vimeo' || $bgType == 'html5' || $bgType == 'streamvimeo' || $bgType == 'streamyoutube' || $bgType == 'streaminstagram' || $bgType == 'streamtwitter'){ + $bgPosition = 'center center'; + } + } + + $bgPositionX = intval($slide->getParam('bg_position_x', '0')); + $bgPositionY = intval($slide->getParam('bg_position_y', '0')); + + $bgRepeat = $slide->getParam('bg_repeat', 'no-repeat'); + + if($bgPosition == 'percentage'){ + $imageAddParams .= ' data-bgposition="'.$bgPositionX.'% '.$bgPositionY.'%"'; + }else{ + $imageAddParams .= ' data-bgposition="'.$bgPosition.'"'; + } + + //check for kenburn & pan zoom + $kenburn_effect = $slide->getParam('kenburn_effect', 'off'); + $kb_duration = intval($slide->getParam('kb_duration', 10000)); + $kb_ease = $slide->getParam('kb_easing', 'Linear.easeNone'); + $kb_start_fit = $slide->getParam('kb_start_fit', '100'); + $kb_end_fit = $slide->getParam('kb_end_fit', '100'); + + $kb_start_offset_x = $slide->getParam('kb_start_offset_x', '0'); + $kb_start_offset_y = $slide->getParam('kb_start_offset_y', '0'); + $kb_end_offset_x = $slide->getParam('kb_end_offset_x', '0'); + $kb_end_offset_y = $slide->getParam('kb_end_offset_y', '0'); + $kb_start_rotate = $slide->getParam('kb_start_rotate', '0'); + $kb_end_rotate = $slide->getParam('kb_end_rotate', '0'); + + $kb_pz = ''; + + if($kenburn_effect == "on" && ($bgType == 'image' || $bgType == 'external')){ + $kb_pz .= ' data-kenburns="on"'; + $kb_pz .= ' data-duration="'.$kb_duration.'"'; + $kb_pz .= ' data-ease="'.$kb_ease.'"'; + $kb_pz .= ' data-scalestart="'.$kb_start_fit.'"'; + $kb_pz .= ' data-scaleend="'.$kb_end_fit.'"'; + $kb_pz .= ' data-rotatestart="'.$kb_start_rotate.'"'; + $kb_pz .= ' data-rotateend="'.$kb_end_rotate.'"'; + $kb_pz .= ' data-offsetstart="'.$kb_start_offset_x.' '.$kb_start_offset_y.'"'; + $kb_pz .= ' data-offsetend="'.$kb_end_offset_x.' '.$kb_end_offset_y.'"'; + + }else{ //only set if kenburner is off + + if($bgFit == 'percentage'){ + $imageAddParams .= ' data-bgfit="'.$bgFitX.'% '.$bgFitY.'%"'; + }else{ + $imageAddParams .= ' data-bgfit="'.$bgFit.'"'; + } + + $imageAddParams .= ' data-bgrepeat="'.$bgRepeat.'"'; + + } + + + //add Slide Title if we have special navigation type choosen + $slide_title = ''; + + $class_attr = $slide->getParam("class_attr",""); + if($class_attr !== '') + $htmlParams .= ' class="'.$class_attr.'"'; + + $id_attr = $slide->getParam('id_attr', ''); + if($id_attr !== '') + $htmlParams .= ' id="'.$id_attr.'"'; + + + $data_attr = stripslashes($slide->getParam('data_attr', '')); + if($data_attr !== '') + $htmlParams .= ' '.$data_attr; + + if($post_based_slider){//check if we are post based or normal slider + $the_post = get_post($slide->getID()); + $new_title = @get_the_title($slide->getID()); + $the_excerpt = strip_tags(strip_shortcodes($the_post->post_excerpt)); + + $slide_title = ' data-title="'.str_replace("\'", "'", esc_attr($new_title)).'"'; + $slide_description = ' data-description="'.str_replace(array("\'", '\"'), array("'", '"'), esc_attr($the_excerpt)).'"'; + }else{ + $slide_title = ' data-title="'.str_replace("\'", "'", esc_attr($slide->getParam("title","Slide"))).'"'; + $slide_description = ' data-description="'.str_replace(array("\'", '\"'), array("'", '"'), esc_attr($slide->getParam('slide_description', ''))).'"'; + } + + $slide_id = $slide->getID(); + if($slide->getParam('slide_id','') !== '') $slide_id = esc_attr($slide_id); + + $add_params = ''; + for($mi=1;$mi<=10;$mi++){ + $pa = $slide->getParam('params_'.$mi,''); + + //add meta functionality here + + $pa_limit = $slide->getParam('params_'.$mi.'_chars',10,RevSlider::FORCE_NUMERIC); + if($pa !== ''){ + $pa = strip_tags($pa); + $pa = mb_substr($pa, 0, $pa_limit, 'utf-8'); + $add_params .= ' data-param'.$mi.'="'.stripslashes(esc_attr($pa)).'"'; + } + } + + $use_parallax = $this->slider->getParam("use_parallax","off"); + + $parallax_attr = ''; + if($use_parallax == 'on'){ + $slide_level = $slide->getParam('slide_parallax_level', '-'); + if($slide_level == '-') $slide_level = 'off'; + + $parallax_attr = ' data-bgparallax="'.$slide_level.'"'; + } + + //Html rev-main- + echo ' '."\n"; + echo '
        • '."\n"; + echo ' '."\n"; + echo ' '. $alt . ''."\n"; + echo ' '."\n"; + + //check if we are youtube, vimeo or html5 + if($bgType == 'youtube' || $bgType == 'html5' || $bgType == 'vimeo' || $bgType == 'streamvimeo' || $bgType == 'streamyoutube' || $bgType == 'streaminstagram' || $bgType == 'streamtwitter'){ + $this->putBackgroundVideo($slide); + } + if($bgType == 'streamvimeoboth' || $bgType == 'streamyoutubeboth' || $bgType == 'streaminstagramboth' || $bgType == 'streamtwitterboth'){ + if($this->checkIfStreamVideoExists($slide)){ + $this->putBackgroundVideo($slide); + } + } + + $this->putCreativeLayer($slide); + + echo "
        • \n"; + $index++; + + } //get foreach + + echo "
        \n"; + + //check for static layers + $sliderID = $this->slider->getID(); + $staticID = $slide->getStaticSlideID($sliderID); + if($staticID !== false){ + $static_slide = new RevSlide(); + $static_slide->initByStaticID($staticID); + echo '
        '."\n"; + $this->putCreativeLayer($static_slide, true); + echo '
        '."\n"; + } + + } + + + /* Provider: - * + * check if a stream video exists + * @since: 5.0 + */ + public function checkIfStreamVideoExists($slide){ + $type = $slide->getParam('background_type', 'image'); + + $vid = ''; + switch($type){ + case 'streamyoutubeboth'://youtube + $vid = $slide->getParam('slide_bg_youtube', ''); + break; + case 'streamvimeoboth'://vimeo + $vid = $slide->getParam('slide_bg_vimeo', ''); + break; + case 'streaminstagramboth'://instagram + $vid = $slide->getParam('slide_bg_html_mpeg', ''); + break; + case 'streamtwitterboth'://instagram + $vid = $slide->getParam('slide_bg_html_mpeg', ''); + if($vid !== '') return true; + $vid = $slide->getParam('slide_bg_youtube', ''); + if($vid !== '') return true; + $vid = $slide->getParam('slide_bg_vimeo', ''); + if($vid !== '') return true; + break; + } + + return ($vid == '') ? false : true; + } + + + /* Provider: - * + * add background video layer + * @since: 5.0 + */ + public function putBackgroundVideo($slide){ + + $add_data = ''; + + $enable_custom_size_notebook = $this->slider->getParam('enable_custom_size_notebook','off'); + $enable_custom_size_tablet = $this->slider->getParam('enable_custom_size_tablet','off'); + $enable_custom_size_iphone = $this->slider->getParam('enable_custom_size_iphone','off'); + $enabled_sizes = array('desktop' => 'on', 'notebook' => $enable_custom_size_notebook, 'tablet' => $enable_custom_size_tablet, 'mobile' => $enable_custom_size_iphone); + $adv_resp_sizes = ($enable_custom_size_notebook == 'on' || $enable_custom_size_tablet == 'on' || $enable_custom_size_iphone == 'on') ? true : false; + + $videoType = $slide->getParam('background_type', 'image'); + + $poster_url = $slide->getImageUrl(); + + $cover = $slide->getParam('video_force_cover', 'on'); + $dotted_overlay = $slide->getParam('video_dotted_overlay', 'none'); + $ratio = $slide->getParam('video_ratio', 'none'); + $loop = $slide->getParam('video_loop', 'none'); + $nextslide = $slide->getParam('video_nextslide', 'off'); + $force_rewind = $slide->getParam('video_force_rewind', 'off'); + $mute_video = $slide->getParam('video_mute', 'on'); + + $video_start_at = $slide->getParam('video_start_at', ''); + $video_end_at = $slide->getParam('video_end_at', ''); + + //------------------------ + $videoWidth = '100%'; + $videoHeight = '100%'; + + if($adv_resp_sizes == true){ + if(is_object($videoWidth)){ + $videoWidth = RevSliderFunctions::normalize_device_settings($videoWidth, $enabled_sizes, 'html-array'); + } + if(is_object($videoHeight)){ + $videoHeight = RevSliderFunctions::normalize_device_settings($videoHeight, $enabled_sizes, 'html-array'); + } + }else{ + if(is_object($videoWidth)) $videoWidth = RevSliderFunctions::get_biggest_device_setting($videoWidth, $enabled_sizes); + if(is_object($videoHeight)) $videoHeight = RevSliderFunctions::get_biggest_device_setting($videoHeight, $enabled_sizes); + } + + $add_data = ($force_rewind == 'on') ? ' data-forcerewind="on"'." \n" : ''; + $add_data .= ($mute_video == 'on') ? ' data-volume="mute"'." \n" : ''; + + $setBase = (is_ssl()) ? 'https://' : 'http://'; + + $video_added = false; + + switch($videoType){ + case 'streamtwitter': + case 'streamtwitterboth': + case 'twitter': + $youtube_id = $slide->getParam('slide_bg_youtube', ''); + $vimeo_id = $slide->getParam('slide_bg_vimeo', ''); + $html_mpeg = $slide->getParam('slide_bg_html_mpeg', ''); + + if($youtube_id !== ''){ + $arguments = $slide->getParam('video_arguments', RevSliderGlobals::DEFAULT_YOUTUBE_ARGUMENTS); + $speed = $slide->getParam('video_speed', '1'); + + if(empty($arguments)) + $arguments = RevSliderGlobals::DEFAULT_YOUTUBE_ARGUMENTS; + + $arguments.=';origin='.$setBase.$_SERVER['SERVER_NAME'].';'; + $add_data .= ' data-ytid="'.$youtube_id.'"'." \n"; + $add_data .= ' data-videoattributes="version=3&enablejsapi=1&html5=1&'.$arguments.'"'." \n"; + $add_data .= ' data-videorate="'.$speed.'"'." \n"; + $add_data .= ' data-videowidth="'.$videoWidth.'"'." \n"; + $add_data .= ' data-videoheight="'.$videoHeight.'"'." \n"; + $add_data .= ' data-videocontrols="none"'." \n"; + + $video_added = true; + }elseif($vimeo_id !== ''){ + $arguments = $slide->getParam('video_arguments_vim', RevSliderGlobals::DEFAULT_VIMEO_ARGUMENTS); + + if(empty($arguments)) + $arguments = RevSliderGlobals::DEFAULT_VIMEO_ARGUMENTS; + + //check if full URL + if(strpos($vimeo_id, 'http') !== false){ + //we have full URL, split it to ID + $video_id = explode('vimeo.com/', $vimeo_id); + $vimeo_id = $video_id[1]; + } + + $add_data .= ' data-vimeoid="'.$vimeo_id.'"'." \n"; + $add_data .= ' data-videoattributes="'.$arguments.'"'." \n"; + $add_data .= ' data-videowidth="'.$videoWidth.'"'." \n"; + $add_data .= ' data-videoheight="'.$videoHeight.'"'." \n"; + $add_data .= ' data-videocontrols="none"'." \n"; + + $video_added = true; + }elseif($html_mpeg !== ''){ + $add_data .= ' data-videowidth="'.$videoWidth.'"'." \n"; + $add_data .= ' data-videoheight="'.$videoHeight.'"'." \n"; + + if(!empty($html_mpeg)) $add_data .= ' data-videomp4="'.$html_mpeg.'"'." \n"; + + $add_data .= ' data-videopreload="preload"'." \n"; + + $video_added = true; + } + break; + case 'streamyoutube': + case 'streamyoutubeboth': + case 'youtube': + $arguments = $slide->getParam('video_arguments', RevSliderGlobals::DEFAULT_YOUTUBE_ARGUMENTS); + $speed = $slide->getParam('video_speed', '1'); + + if(empty($arguments)) + $arguments = RevSliderGlobals::DEFAULT_YOUTUBE_ARGUMENTS; + + $youtube_id = $slide->getParam('slide_bg_youtube', ''); + + if($youtube_id == '') return false; + + //check if full URL + if(strpos($youtube_id, 'http') !== false){ + //we have full URL, split it to ID + parse_str( parse_url( $youtube_id, PHP_URL_QUERY ), $my_v_ret ); + $youtube_id = $my_v_ret['v']; + } + + $arguments.=';origin='.$setBase.$_SERVER['SERVER_NAME'].';'; + $add_data .= ' data-ytid="'.$youtube_id.'"'." \n"; + $add_data .= ' data-videoattributes="version=3&enablejsapi=1&html5=1&'.$arguments.'"'." \n"; + $add_data .= ' data-videorate="'.$speed.'"'." \n"; + $add_data .= ' data-videowidth="'.$videoWidth.'"'." \n"; + $add_data .= ' data-videoheight="'.$videoHeight.'"'." \n"; + $add_data .= ' data-videocontrols="none"'." \n"; + + $video_added = true; + + break; + case 'streamvimeo': + case 'streamvimeoboth': + case 'vimeo': + $arguments = $slide->getParam('video_arguments_vim', RevSliderGlobals::DEFAULT_VIMEO_ARGUMENTS); + + if(empty($arguments)) + $arguments = RevSliderGlobals::DEFAULT_VIMEO_ARGUMENTS; + + $vimeo_id = $slide->getParam('slide_bg_vimeo', ''); + + if($vimeo_id == '') return false; + + //check if full URL + if(strpos($vimeo_id, 'http') !== false){ + //we have full URL, split it to ID + $video_id = explode('vimeo.com/', $vimeo_id); + $vimeo_id = $video_id[1]; + } + + $add_data .= ' data-vimeoid="'.$vimeo_id.'"'." \n"; + $add_data .= ' data-videoattributes="'.$arguments.'"'." \n"; + $add_data .= ' data-videowidth="'.$videoWidth.'"'." \n"; + $add_data .= ' data-videoheight="'.$videoHeight.'"'." \n"; + $add_data .= ' data-videocontrols="none"'." \n"; + + $video_added = true; + break; + case 'streaminstagram': + case 'streaminstagramboth': + case 'html5': + + $html_mpeg = $slide->getParam('slide_bg_html_mpeg', ''); + $html_webm = $slide->getParam('slide_bg_html_webm', ''); + $html_ogv = $slide->getParam('slide_bg_html_ogv', ''); + + if($videoType == 'streaminstagram' || $videoType == 'streaminstagramboth'){ + $html_webm = ''; + $html_ogv = ''; + } + + $add_data .= ' data-videowidth="'.$videoWidth.'"'." \n"; + $add_data .= ' data-videoheight="'.$videoHeight.'"'." \n"; + + if(!empty($html_ogv)) $add_data .= ' data-videoogv="'.$html_ogv.'"'." \n"; + if(!empty($html_webm)) $add_data .= ' data-videowebm="'.$html_webm.'"'." \n"; + if(!empty($html_mpeg)) $add_data .= ' data-videomp4="'.$html_mpeg.'"'." \n"; + + $add_data .= ' data-videopreload="preload"'." \n"; + + $video_added = true; + break; + } + + if($video_added == false) return false; // return here if no valid video was found. + + if($video_start_at !== '') + $add_data .= ' data-videostartat="'.$video_start_at.'"'." \n"; + if($video_end_at !== '') + $add_data .= ' data-videoendat="'.$video_end_at.'"'." \n"; + + if($loop === true){ //fallback + $add_data .= ' data-videoloop="loop"'." \n"; + }else{ + $add_data .= ' data-videoloop="'.$loop.'"'." \n"; + } + + if($cover == 'on'){ + if($dotted_overlay !== 'none') + $add_data .= ' data-dottedoverlay="'.$dotted_overlay.'"'." \n"; + + $add_data .= ' data-forceCover="1"'." \n"; + + if(!empty($ratio)) + $add_data .= ' data-aspectratio="'.$ratio.'"'." \n"; + } + + $add_data .= ' data-autoplay="true"'." \n"; + $add_data .= ' data-autoplayonlyfirsttime="false"'." \n"; + if($nextslide == true) + $add_data .= ' data-nextslideatend="true"'." \n"; + + echo "\n \n"; + echo '
        '; + } + + + /* Provider: - * + * put creative layer + */ + private function putCreativeLayer(RevSlide $slide, $static_slide = false){ + $layers = $slide->getLayers(); + $slider_type = $this->slider->getParam('slider-type'); + $icon_sets = RevSliderBase::set_icon_sets(array()); + + $customAnimations = RevSliderOperations::getCustomAnimations('customin'); //get all custom animations + $customEndAnimations = RevSliderOperations::getCustomAnimations('customout'); //get all custom animations + + $startAnimations = RevSliderOperations::getArrAnimations(false); //only get the standard animations + $endAnimations = RevSliderOperations::getArrEndAnimations(false); //only get the standard animations + + $fullCustomAnims = RevSliderOperations::getFullCustomAnimations(); + + $lazyLoad = $this->slider->getParam('lazy_load_type', false); + if($lazyLoad === false){ //do fallback checks to removed lazy_load value since version 5.0 and replaced with an enhanced version + $old_ll = $this->slider->getParam('lazy_load', 'off'); + $lazyLoad = ($old_ll == 'on') ? 'all' : 'none'; + } + + $isTemplate = $this->slider->getParam('template', 'false'); + + $enable_custom_size_notebook = $this->slider->getParam('enable_custom_size_notebook', 'off'); + $enable_custom_size_tablet = $this->slider->getParam('enable_custom_size_tablet', 'off'); + $enable_custom_size_iphone = $this->slider->getParam('enable_custom_size_iphone', 'off'); + $enabled_sizes = array('desktop' => 'on', 'notebook' => $enable_custom_size_notebook, 'tablet' => $enable_custom_size_tablet, 'mobile' => $enable_custom_size_iphone); + $adv_resp_sizes = ($enable_custom_size_notebook == 'on' || $enable_custom_size_tablet == 'on' || $enable_custom_size_iphone == 'on') ? true : false; + + $image_source_type = $this->slider->getParam('def-image_source_type', 'full'); + + if(empty($layers)) + return(false); + + $zIndex = 5; + + $slideID = $slide->getID(); + + foreach($layers as $layer){ + $unique_id = RevSliderFunctions::getVal($layer, 'unique_id'); + + if($unique_id == '') + $unique_id = $zIndex - 4; + + //$visible = RevSliderFunctions::getVal($layer, 'visible', true); + //if($visible == false) continue; + + $type = RevSliderFunctions::getVal($layer, 'type', 'text'); + + //set if video full screen + $videoclass = ''; + + $isFullWidthVideo = false; + if($type == 'video'){ + $videoclass = ' tp-videolayer'; + $videoData = RevSliderFunctions::getVal($layer, 'video_data'); + if(!empty($videoData)){ + $videoData = (array)$videoData; + $isFullWidthVideo = RevSliderFunctions::getVal($videoData, 'fullwidth'); + $isFullWidthVideo = RevSliderFunctions::strToBool($isFullWidthVideo); + }else + $videoData = array(); + } + + + $class = RevSliderFunctions::getVal($layer, 'style'); + + if(trim($class) !== '') + $this->class_include['.'.trim($class)] = true; //add classname for style inclusion + + $animation = RevSliderFunctions::getVal($layer, 'animation', 'tp-fade'); + //if($animation == "fade") $animation = "tp-fade"; + + $customin = ''; + $maskin = ''; + + if(!array_key_exists($animation, $startAnimations) && array_key_exists($animation, $customAnimations)){ //if true, add custom animation + //check with custom values, if same, we do not need to write all down and just refer + } + + $tcin = RevSliderOperations::parseCustomAnimationByArray($layer, 'start'); + if($tcin !== ''){ + $customin = ' data-transform_in="' . $tcin . '"'; + } + + $do_mask_in = RevSliderFunctions::getVal($layer, 'mask_start',false); + if($do_mask_in){ + $tmask = RevSliderOperations::parseCustomMaskByArray($layer, 'start'); + if($tmask !== ''){ + $maskin = ' data-mask_in="' . $tmask . '"'; + } + } + + + //if(strpos($animation, 'customin-') !== false || strpos($animation, 'customout-') !== false) $animation = "tp-fade"; + + //set output class: + + $layer_2d_rotation = intval(RevSliderFunctions::getVal($layer, '2d_rotation', '0')); + + $internal_class = RevSliderFunctions::getVal($layer, 'internal_class', ''); + + if($layer_2d_rotation == 0) + $outputClass = 'tp-caption '. trim($class); + else + $outputClass = 'tp-caption '; + + $outputClass = trim($outputClass) . ' ' . $internal_class . ' '; + + //if($type == 'button') $outputClass .= ' '; + + //$speed = RevSliderFunctions::getVal($layer, "speed",300); + $time = RevSliderFunctions::getVal($layer, 'time', 0); + $easing = RevSliderFunctions::getVal($layer, 'easing', 'easeOutExpo'); + $randomRotate = RevSliderFunctions::getVal($layer, 'random_rotation', 'false'); + $randomRotate = RevSliderFunctions::boolToStr($randomRotate); + + $splitin = RevSliderFunctions::getVal($layer, 'split', 'none'); + $splitout = RevSliderFunctions::getVal($layer, 'endsplit', 'none'); + $elementdelay = intval(RevSliderFunctions::getVal($layer, 'splitdelay', 0)); + $endelementdelay = intval(RevSliderFunctions::getVal($layer, 'endsplitdelay', 0)); + + $basealign = RevSliderFunctions::getVal($layer, 'basealign', 'grid'); + + if($elementdelay > 0) $elementdelay /= 100; + if($endelementdelay > 0) $endelementdelay /= 100; + + + $text = RevSliderFunctions::getVal($layer, 'text'); + if(function_exists('qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage')){ //use qTranslate + $text = qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($text); + }elseif(function_exists('ppqtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage')){ //use qTranslate plus + $text = ppqtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($text); + }elseif(function_exists('qtranxf_useCurrentLanguageIfNotFoundUseDefaultLanguage')){ //use qTranslate X + $text = qtranxf_useCurrentLanguageIfNotFoundUseDefaultLanguage($text); + } + + $htmlVideoAutoplay = ''; + $htmlVideoAutoplayOnlyFirstTime = ''; + $htmlVideoNextSlide = ''; + $htmlVideoThumbnail = ''; + $htmlMute = ''; + $htmlCover = ''; + $htmlDotted = ''; + $htmlRatio = ''; + $htmlRewind = ''; + $htmlStartAt = ''; + $htmlEndAt = ''; + $htmlCoverPause = ''; + $htmlDisableOnMobile = ''; + + $ids = RevSliderFunctions::getVal($layer, 'attrID'); + $classes = RevSliderFunctions::getVal($layer, 'attrClasses'); + $title = RevSliderFunctions::getVal($layer, 'attrTitle'); + $rel = RevSliderFunctions::getVal($layer, 'attrRel'); + + if(trim($ids) == '') + $ids = 'slide-'.preg_replace("/[^\w]+/", "", $slideID).'-layer-'.$unique_id; + + $ids = ($ids != '') ? ' id="'.$ids.'"' : ''; + $classes = ($classes != '') ? ' '.$classes : ''; + $title = ($title != '') ? ' title="'.$title.'"' : ''; + $rel = ($rel != '') ? ' rel="'.$rel.'"' : ''; + + $inline_styles = ''; + $do_rotation = false; + $add_data = ''; + $videoType = ''; + $cover = false; + + //set html: + $html = ''; + switch($type){ + case 'shape': + break; + case 'typeA': + break; + case 'typeB': + break; + default: + //case 'no_edit': + case 'text': + case 'button': + $html = $text; + $html = do_shortcode(stripslashes($html)); + + global $fa_icon_var, $pe_7s_var; + foreach($icon_sets as $is){ + if(strpos($html, $is) !== false){ //include default Icon Sets if used + $font_var = str_replace("-", "_", $is)."var"; + $$font_var = true; + //wp_enqueue_style('rs-icon-set-'.$is); + } + } + + $max_width = RevSliderFunctions::getVal($layer, 'max_width', 'auto'); + $max_height = RevSliderFunctions::getVal($layer, 'max_height', 'auto'); + $white_space = RevSliderFunctions::getVal($layer, 'whitespace', 'nowrap'); + + $max_width = (is_object($max_width)) ? RevSliderFunctions::get_biggest_device_setting($max_width, $enabled_sizes) : $max_width; + $max_height = (is_object($max_height)) ? RevSliderFunctions::get_biggest_device_setting($max_height, $enabled_sizes) : $max_height; + $white_space = (is_object($white_space)) ? RevSliderFunctions::get_biggest_device_setting($white_space, $enabled_sizes) : $white_space; + + $inline_styles .= ' min-width: '.$max_width.'; min-height: '.$max_height.'; white-space: '.$white_space.';'; + $inline_styles .= ' max-width: '.$max_width.'; max-height: '.$max_height.';'; + + //add more inline styling + $static_styles = RevSliderFunctions::getVal($layer, 'static_styles', array()); + + if(!empty($static_styles)){ + $static_styles = (array)$static_styles; + if(!empty($static_styles['font-size'])){ + $static_styles['font-size'] = RevSliderFunctions::add_missing_val($static_styles['font-size'], 'px'); + if(is_object($static_styles['font-size'])){ + $inline_styles .= ' font-size: '.RevSliderFunctions::get_biggest_device_setting($static_styles['font-size'], $enabled_sizes).';'; + }else{ + $inline_styles .= ' font-size: '.$static_styles['font-size'].';'; + } + } + if(!empty($static_styles['line-height'])){ + $static_styles['line-height'] = RevSliderFunctions::add_missing_val($static_styles['line-height'], 'px'); + if(is_object($static_styles['line-height'])){ + $inline_styles .= ' line-height: '.RevSliderFunctions::get_biggest_device_setting($static_styles['line-height'], $enabled_sizes).';'; + }else{ + $inline_styles .= ' line-height: '.$static_styles['line-height'].';'; + } + } + if(!empty($static_styles['font-weight'])){ + if(is_object($static_styles['font-weight'])){ + $inline_styles .= ' font-weight: '.RevSliderFunctions::get_biggest_device_setting($static_styles['font-weight'], $enabled_sizes).';'; + }else{ + $inline_styles .= ' font-weight: '.$static_styles['font-weight'].';'; + } + } + if(!empty($static_styles['color'])){ + if(is_object($static_styles['color'])) + $use_color = RevSliderFunctions::get_biggest_device_setting($static_styles['color'], $enabled_sizes); + else + $use_color = $static_styles['color']; + + $def_val = (array) RevSliderFunctions::getVal($layer, 'deformation', array()); + + $color_trans = RevSliderFunctions::getVal($def_val, 'color-transparency', 1); + + if($color_trans > 0) $color_trans *= 100; + $color_trans = intval($color_trans); + $use_color = RevSliderFunctions::hex2rgba($use_color, $color_trans); + + $inline_styles .= ' color: '.$use_color.';'; + + } + } + + if($layer_2d_rotation !== 0) + $do_rotation = true; + break; + case 'image': + $additional = ''; + + $urlImage = RevSliderFunctions::getVal($layer, 'image_url'); + + $do_image_change = RevSliderFunctions::getVal($layer, 'layer-image-size', 'auto'); + + $img_size = 'full'; + switch($do_image_change){ + case 'auto': + $img_size = $image_source_type; + break; + default: + $img_size = $do_image_change; + break; + } + + $cur_img_id = RevSliderFunctionsWP::get_image_id_by_url($urlImage); + + if($img_size !== 'full'){ + if($cur_img_id !== false){ + $urlImage = wp_get_attachment_image_src($cur_img_id, $img_size); + } + } + + $img_w = ''; + $img_h = ''; + if($cur_img_id !== false){ + $img_data = wp_get_attachment_metadata( $cur_img_id ); + if($img_data !== false && !empty($img_data)){ + if($img_size !== 'full'){ + if(isset($img_data['sizes']) && isset($img_data['sizes'][$img_size])){ + $img_w = $img_data['sizes'][$img_size]['width']; + $img_h = $img_data['sizes'][$img_size]['height']; + } + } + + if($img_w == '' || $img_h == ''){ + $img_w = $img_data['width']; + $img_h = $img_data['height']; + } + $additional.= ' width="'.$img_w.'" height="'.$img_h.'"'; + } + } + + $alt = ''; + $alt_option = RevSliderFunctions::getVal($layer, 'alt_option', 'media_library'); + + switch($alt_option){ + case 'media_library': + if($cur_img_id !== false){ + $alt = get_post_meta( $cur_img_id, '_wp_attachment_image_alt', true ); + } + break; + case 'file_name': + $info = pathinfo($urlImage); + $alt = $info['filename']; + break; + case 'custom': + $alt = RevSliderFunctions::getVal($layer, 'alt'); + break; + } + + + if(isset($slide->ignore_alt)) $alt = ''; + + $scaleX = RevSliderFunctions::getVal($layer, 'scaleX'); + $scaleY = RevSliderFunctions::getVal($layer, 'scaleY'); + + $cover_mode = RevSliderFunctions::getVal($layer, 'cover_mode', array()); + + if(is_string($cover_mode)){ + $cover_mode = array('desktop' => $cover_mode, 'notebook' => $cover_mode, 'tablet' => $cover_mode, 'mobile' => $cover_mode); + }else{ //change to array + $cover_mode = (array) $cover_mode; + } + + if($adv_resp_sizes == true){ + $y_is_single = true; + $x_is_single = true; + + if($scaleX !== ''){ + if(!is_object($scaleX)){ + if(trim($scaleX) == '' || $scaleX == 'NaNpx') $scaleX = 'auto'; + $myScaleX = $scaleX; + foreach($cover_mode as $cvmk => $cvmv){ + if($cvmv == 'fullwidth' || $cvmv == 'cover') $myScaleX = 'full'; + break; + } + }else{ + foreach($cover_mode as $cvmk => $cvmv){ + if($cvmv == 'fullwidth' || $cvmv == 'cover') $scaleX->$cvmk = 'full'; + } + $myScaleX = RevSliderFunctions::normalize_device_settings($scaleX, $enabled_sizes, 'html-array', array('NaNpx' => '', 'auto' => '')); + if($myScaleX == "['','','','']") $myScaleX = ''; + + if(strpos($myScaleX, '[') !== false) $y_is_single = false; + } + if($y_is_single){ //force to array if voffset is also array + if(!isset($myScaleX)) $myScaleX = RevSliderFunctions::get_biggest_device_setting($scaleX, $enabled_sizes); + if(trim($myScaleX) == '' || $myScaleX == 'NaNpx' || $myScaleX == 'auto'){ + $myScaleX = ''; + }else{ + $myScaleX = "['".$myScaleX."','".$myScaleX."','".$myScaleX."','".$myScaleX."']"; + } + } + } + if($scaleY !== ''){ + if(!is_object($scaleY)){ + if(trim($scaleY) == '' || $scaleY == 'NaNpx') $scaleY = 'auto'; + $myScaleY = $scaleY; + foreach($cover_mode as $cvmk => $cvmv){ + if($cvmv == 'fullheight' || $cvmv == 'cover') $myScaleY = 'full'; + break; + } + }else{ + foreach($cover_mode as $cvmk => $cvmv){ + if($cvmv == 'fullheight' || $cvmv == 'cover') $scaleY->$cvmk = 'full'; + break; + } + + $myScaleY = RevSliderFunctions::normalize_device_settings($scaleY, $enabled_sizes, 'html-array', array('NaNpx' => '', 'auto' => '')); + if($myScaleY == "['','','','']") $myScaleY = ''; + + if(strpos($myScaleY, '[') !== false) $y_is_single = false; + } + if($y_is_single){ //force to array if voffset is also array + if(!isset($myScaleY)) $myScaleY = RevSliderFunctions::get_biggest_device_setting($scaleY, $enabled_sizes); + if(trim($myScaleY) == '' || $myScaleY == 'NaNpx' || $myScaleY == 'auto'){ + $myScaleY = ''; + }else{ + $myScaleY = "['".$myScaleY."','".$myScaleY."','".$myScaleY."','".$myScaleY."']"; + } + } + } + + + }else{ + $myScaleX = (is_object($scaleX)) ? RevSliderFunctions::get_biggest_device_setting($scaleX, $enabled_sizes) : $scaleX; + if(trim($myScaleX) == '' || $myScaleX == 'NaNpx') $myScaleX = 'auto'; + + $myScaleY = (is_object($scaleY)) ? RevSliderFunctions::get_biggest_device_setting($scaleY, $enabled_sizes) : $scaleY; + if(trim($myScaleY) == '' || $myScaleY == 'NaNpx') $myScaleY = 'auto'; + + foreach($cover_mode as $cvmk => $cvmv){ + if($cvmv == 'fullwidth' || $cvmv == 'cover') $myScaleX = 'full'; + if($cvmv == 'fullheight' || $cvmv == 'cover') $myScaleY = 'full'; + break; + } + + } + + if($scaleX != '') $additional .= ' data-ww="'.$myScaleX.'"'; + if($scaleY != '') $additional .= ' data-hh="'.$myScaleY.'"'; + if(is_ssl()){ + $urlImage = str_replace("http://", "https://", $urlImage); + } + + $do_ll = RevSliderFunctions::getVal($layer, "lazy-load", 'auto'); + + $imageAddParams = ""; + if($lazyLoad != 'none' || $do_ll == 'force' && $do_ll !== 'ignore'){ + $seo_opti = RevSliderFunctions::getVal($layer, 'seo-optimized', false); + if($seo_opti === 'false' || $seo_opti === false){ + $imageAddParams .= ' data-lazyload="'.$urlImage.'"'; + $urlImage = RS_PLUGIN_URL."admin/assets/images/dummy.png"; + }else{ + $additional .= ' class="forceseo"'; + } + } + + $html = ''.$alt.''; + $imageLink = RevSliderFunctions::getVal($layer, "link",""); + + //add more inline styling + $static_styles = RevSliderFunctions::getVal($layer, 'static_styles', array()); + + if(!empty($static_styles)){ + $static_styles = (array)$static_styles; + if(!empty($static_styles['line-height'])){ + $static_styles['line-height'] = RevSliderFunctions::add_missing_val($static_styles['line-height'], 'px'); + if(is_object($static_styles['line-height'])){ + $inline_styles .= ' line-height: '.RevSliderFunctions::get_biggest_device_setting($static_styles['line-height'], $enabled_sizes).';'; + }else{ + $inline_styles .= ' line-height: '.$static_styles['line-height'].';'; + } + } + } + + // KRIKI - AUSKOMMENTIERT, DAMIT IMG TAG NICHT DOPPELT a HREF BEKOMMT. + /* Provider: - if(!empty($imageLink)){ + $openIn = RevSliderFunctions::getVal($layer, "link_open_in","same"); + + $target = ($openIn == "new") ? ' target="_blank"' : ''; + + $linkID = RevSliderFunctions::getVal($layer, "link_id",""); + $linkClass = RevSliderFunctions::getVal($layer, "link_class",""); + $linkTitle = RevSliderFunctions::getVal($layer, "link_title",""); + $linkRel = RevSliderFunctions::getVal($layer, "link_rel",""); + + $linkIDHtml = ""; + $linkClassHtml = ""; + $linkTitleHtml = ""; + $linkRelHtml = ""; + if(!empty($linkID)) + $linkIDHtml = ' id="'.$linkID.'"'; + + if(!empty($linkClass)) + $linkClassHtml = ' class="'.$linkClass.'"'; + + if(!empty($linkTitle)) + $linkTitleHtml = ' title="'.$linkTitle.'"'; + + if(!empty($linkRel)) + $linkRelHtml = ' rel="'.$linkRel.'"'; + + $html = ''.$html.''; + }*/ + + if($layer_2d_rotation !== 0) + $do_rotation = true; + break; + case 'video': + $videoType = trim(RevSliderFunctions::getVal($layer, 'video_type')); + $videoID = trim(RevSliderFunctions::getVal($layer, 'video_id')); + $videoWidth = RevSliderFunctions::getVal($layer, 'video_width'); + $videoHeight = RevSliderFunctions::getVal($layer, 'video_height'); + $videoArgs = trim(RevSliderFunctions::getVal($layer, 'video_args')); + $v_controls = RevSliderFunctions::getVal($videoData, 'controls'); + $v_controls = RevSliderFunctions::strToBool($v_controls); + + $start_at = RevSliderFunctions::getVal($videoData, 'start_at'); + $htmlStartAt = ($start_at !== '') ? ' data-videostartat="'.$start_at.'"' : ''; + $end_at = RevSliderFunctions::getVal($videoData, 'end_at'); + $htmlEndAt = ($end_at !== '') ? ' data-videoendat="'.$end_at.'"' : ''; + + $show_cover_pause = RevSliderFunctions::getVal($videoData, 'show_cover_pause'); + $show_cover_pause = RevSliderFunctions::strToBool($show_cover_pause); + $htmlCoverPause = ($show_cover_pause == true) ? ' data-showcoveronpause="on"' : ''; + + $rewind = RevSliderFunctions::getVal($videoData, 'forcerewind'); + $rewind = RevSliderFunctions::strToBool($rewind); + $htmlRewind = ($rewind == true) ? ' data-forcerewind="on"' : ''; + + $only_poster_on_mobile = @$layer['video_data']->use_poster_on_mobile; + $only_poster_on_mobile = RevSliderFunctions::strToBool($only_poster_on_mobile); + + + if($isFullWidthVideo == true){ // || $cover == true + $videoWidth = '100%'; + $videoHeight = '100%'; + } + + if($adv_resp_sizes == true){ + if(is_object($videoWidth)){ + $videoWidth = RevSliderFunctions::normalize_device_settings($videoWidth, $enabled_sizes, 'html-array'); + } + if(is_object($videoHeight)){ + $videoHeight = RevSliderFunctions::normalize_device_settings($videoHeight, $enabled_sizes, 'html-array'); + } + }else{ + if(is_object($videoWidth)) $videoWidth = RevSliderFunctions::get_biggest_device_setting($videoWidth, $enabled_sizes); + if(is_object($videoHeight)) $videoHeight = RevSliderFunctions::get_biggest_device_setting($videoHeight, $enabled_sizes); + } + + $setBase = (is_ssl()) ? 'https://' : 'http://'; + + $cover = RevSliderFunctions::getVal($videoData, 'cover'); + $cover = RevSliderFunctions::strToBool($cover); + + $videoloop = RevSliderFunctions::getVal($videoData, "videoloop"); + + switch($videoType){ + case 'streamyoutube': + case 'streamyoutubeboth': + case 'youtube': + if($videoType == 'streamyoutube' || $videoType == 'streamyoutubeboth'){ //change $videoID to the stream! + $videoID = $slide->getParam('slide_bg_youtube', ''); + } + + if(empty($videoArgs)) + $videoArgs = RevSliderGlobals::DEFAULT_YOUTUBE_ARGUMENTS; + + if($start_at !== ''){ + $start_raw = explode(':', $start_at); + if(count($start_raw) == 2){ + if(intval($start_raw[0]) > 0){ + $start_at = $start_raw[0]*60 + $start_raw[1]; + }else{ + $start_at = $start_raw[1]; + } + } + $videoArgs .= ($start_at !== '') ? '&start='.$start_at : ''; + } + if($end_at !== ''){ + $end_raw = explode(':', $end_at); + if(count($end_raw) == 2){ + if(intval($end_raw[0]) > 0){ + $end_at = $end_raw[0]*60 + $end_raw[1]; + }else{ + $end_at = $end_raw[1]; + } + } + $videoArgs .= ($end_at !== '') ? '&end='.$end_at : ''; + } + + //check if full URL + if(strpos($videoID, 'http') !== false){ + //we have full URL, split it to ID + parse_str( parse_url( $videoID, PHP_URL_QUERY ), $my_v_ret ); + $videoID = $my_v_ret['v']; + } + + $videospeed = RevSliderFunctions::getVal($videoData, 'videospeed', '1'); + + $videoArgs.=';origin='.$setBase.$_SERVER['SERVER_NAME'].';'; + $add_data = ' data-ytid="'.$videoID.'" data-videoattributes="version=3&enablejsapi=1&html5=1&'.$videoArgs.'" data-videorate="'.$videospeed.'" data-videowidth="'.$videoWidth.'" data-videoheight="'.$videoHeight.'"'; + $add_data .= ($v_controls) ? ' data-videocontrols="none"' : ' data-videocontrols="controls"'; + + break; + case 'streamvimeo': + case 'streamvimeoboth': + case 'vimeo': + if($videoType == 'streamvimeo' || $videoType == 'streamvimeoboth'){ //change $videoID + $videoID = $slide->getParam('slide_bg_vimeo', ''); + } + + if(empty($videoArgs)) + $videoArgs = RevSliderGlobals::DEFAULT_VIMEO_ARGUMENTS; + + //check if full URL + if(strpos($videoID, 'http') !== false){ + //we have full URL, split it to ID + $videoID = (int) substr(parse_url($videoID, PHP_URL_PATH), 1); + } + + $add_data = ' data-vimeoid="'.$videoID.'" data-videoattributes="'.$videoArgs.'" data-videowidth="'.$videoWidth.'" data-videoheight="'.$videoHeight.'"'; + $add_data .= ($v_controls) ? ' data-videocontrols="none"' : ' data-videocontrols="controls"'; + + break; + case 'streaminstagram': + case 'streaminstagramboth': + case 'html5': + $urlPoster = RevSliderFunctions::getVal($videoData, "urlPoster"); + $urlMp4 = RevSliderFunctions::getVal($videoData, "urlMp4"); + $urlWebm = RevSliderFunctions::getVal($videoData, "urlWebm"); + $urlOgv = RevSliderFunctions::getVal($videoData, "urlOgv"); + $videopreload = RevSliderFunctions::getVal($videoData, "preload"); + + if($videoType == 'streaminstagram' || $videoType == 'streaminstagramboth'){ //change $videoID + $urlMp4 = $slide->getParam('slide_bg_instagram', ''); + $urlWebm = ''; + $urlOgv = ''; + } + $add_data .= ($v_controls) ? ' data-videocontrols="none"' : ' data-videocontrols="controls"'; + $add_data .= ' data-videowidth="'.$videoWidth.'" data-videoheight="'.$videoHeight.'"'; + + if(!empty($urlPoster)) $add_data .= ' data-videoposter="'.$urlPoster.'"'; + if(!empty($urlOgv)) $add_data .= ' data-videoogv="'.$urlOgv.'"'; + if(!empty($urlWebm)) $add_data .= ' data-videowebm="'.$urlWebm.'"'; + if(!empty($urlMp4)) $add_data .= ' data-videomp4="'.$urlMp4.'"'; + + if(!empty($urlPoster)){ + if($only_poster_on_mobile === true){ + $add_data .= ' data-posterOnMObile="on"'; + }else{ + $add_data .= ' data-posterOnMObile="off"'; + } + } + + if(!empty($videopreload)) $add_data .= ' data-videopreload="'.$videopreload.'"'; + + break; + default: + RevSliderFunctions::throwError("wrong video type: $videoType"); + break; + } + + if(RevSliderFunctions::strToBool($videoloop) == true){ //fallback + $add_data .= ' data-videoloop="loop"'; + }else{ + $add_data .= ' data-videoloop="'.$videoloop.'"'; + } + + if($cover == true){ + $dotted = RevSliderFunctions::getVal($videoData, "dotted"); + if($dotted !== 'none') + $add_data .= ' data-dottedoverlay="'.$dotted.'"'; + + $add_data .= ' data-forceCover="1"'; + + $ratio = RevSliderFunctions::getVal($videoData, "ratio"); + if(!empty($ratio)) + $add_data .= ' data-aspectratio="'.$ratio.'"'; + } + + $videoAutoplay = false; + + if(array_key_exists("autoplayonlyfirsttime", $videoData)){ + $autoplayonlyfirsttime = RevSliderFunctions::strToBool(RevSliderFunctions::getVal($videoData, "autoplayonlyfirsttime")); + if($autoplayonlyfirsttime == true) $videoAutoplay = '1sttime'; + } + + if($videoAutoplay == false){ + if(array_key_exists("autoplay", $videoData)) + $videoAutoplay = RevSliderFunctions::getVal($videoData, "autoplay"); + else //backword compatability + $videoAutoplay = RevSliderFunctions::getVal($layer, "video_autoplay"); + } + + if($videoAutoplay !== false && $videoAutoplay !== 'false'){ + if($videoAutoplay === true || $videoAutoplay === 'true') $videoAutoplay = 'on'; + + $htmlVideoAutoplay = ' data-autoplay="'.$videoAutoplay.'"'." \n"; + }else{ + $htmlVideoAutoplay = ' data-autoplay="off"'." \n"; + } + + $mute = RevSliderFunctions::getVal($videoData, "mute"); + $mute = RevSliderFunctions::strToBool($mute); + $htmlMute = ($mute) ? ' data-volume="mute"' : ''; + + $videoNextSlide = RevSliderFunctions::getVal($videoData, "nextslide"); + $videoNextSlide = RevSliderFunctions::strToBool($videoNextSlide); + + if($videoNextSlide == true) + $htmlVideoNextSlide = ' data-nextslideatend="true"'." \n"; + + $videoThumbnail = @$videoData["previewimage"]; + + if(trim($videoThumbnail) !== '') $htmlVideoThumbnail = ' data-videoposter="'.$videoThumbnail.'"'." \n"; + if(!empty($videoThumbnail)){ + if($only_poster_on_mobile === true){ + $htmlVideoThumbnail .= ' data-posterOnMObile="on"'." \n"; + }else{ + $htmlVideoThumbnail .= ' data-posterOnMObile="off"'." \n"; + } + } + + $disable_on_mobile = RevSliderFunctions::getVal($videoData, "disable_on_mobile"); + $disable_on_mobile = RevSliderFunctions::strToBool($disable_on_mobile); + $htmlDisableOnMobile = ($disable_on_mobile) ? ' data-disablevideoonmobile="1"'." \n" : ''; + $stopallvideo = RevSliderFunctions::getVal($videoData, "stopallvideo"); + $stopallvideo = RevSliderFunctions::strToBool($stopallvideo); + $htmlDisableOnMobile .= ($stopallvideo) ? ' data-stopallvideos="true"'." \n" : ''; + + break; + } + + $has_trigger = false; + foreach($layers as $cl){ + if($has_trigger) break; + $all_actions = RevSliderFunctions::getVal($cl, 'layer_action', array()); + if(!empty($all_actions)){ + $a_action = RevSliderFunctions::cleanStdClassToArray(RevSliderFunctions::getVal($all_actions, 'action', array())); + $a_layer_target = RevSliderFunctions::cleanStdClassToArray(RevSliderFunctions::getVal($all_actions, 'layer_target', array())); + foreach($a_action as $ak => $aa){ + switch($aa){ + case 'start_in': + case 'start_out': + case 'toggle_layer': + /* Provider: - case 'stop_video': + case 'start_video': + case 'toggle_video':*/ + if($unique_id == $a_layer_target[$ak]){ + $has_trigger = true; + break; + } + break; + } + } + } + } + + $last_trigger_state = ''; + $animation_overwrite = 'default'; + $trigger_memory = 'keep'; + if($has_trigger){ + $animation_overwrite = RevSliderFunctions::getVal($layer, 'animation_overwrite', 'wait'); + $trigger_memory = RevSliderFunctions::getVal($layer, 'trigger_memory', 'keep'); + + $last_trigger_state = ' data-lasttriggerstate="'.esc_attr($trigger_memory).'"'; + + } + if($animation_overwrite == 'waitin' || $animation_overwrite == 'wait'){ + $time = 'bytrigger'; + } + if($animation_overwrite == 'waitout' || $animation_overwrite == 'wait'){ + $htmlEnd = ' data-end="bytrigger"'."\n"; + }else{ + //handle end transitions: + $endTime = trim(RevSliderFunctions::getVal($layer, 'endtime', 0)); + $endWithSlide = RevSliderFunctions::getVal($layer, 'endWithSlide', false); + + //backwards compatibility + $realEndTime = trim(UniteFunctionsRev::getVal($layer, "realEndTime", false)); + if($realEndTime !== false){ + $endSpeed = trim(UniteFunctionsRev::getVal($layer, "endspeed")); + $speed = UniteFunctionsRev::getVal($layer, "speed",300); + $calcSpeed = (!empty($endSpeed)) ? $endSpeed : $speed; + + if(!empty($calcSpeed) && $realEndTime - $calcSpeed !== $endTime){ + $endTime = $realEndTime - $calcSpeed; + } + } + //backwards compatibility end + + $htmlEnd = ''; + + + //endtime - endspeed + $es = RevSliderFunctions::getVal($layer, 'endspeed', 0); + if(!empty($endTime) && $endTime - $es < 0) + $endTime = 0; + else + $endTime = $endTime - $es; + } + + $show_on_hover = RevSliderFunctions::getVal($layer, 'show-on-hover', false); + if($show_on_hover == true){ + $time = 'sliderenter'; + $htmlEnd = ' data-end="sliderleave"'." \n"; + }else{ + if(!empty($endTime) && $endWithSlide !== true){ + $htmlEnd = ' data-end="'.$endTime.'"'." \n"; + } + } + + $customout = ''; + $maskout = ''; + + //add animation to class + $endAnimation = trim(RevSliderFunctions::getVal($layer, "endanimation")); + if($endAnimation == "fade") $endAnimation = "tp-fade"; + + if(!array_key_exists($endAnimation, $endAnimations) && array_key_exists($endAnimation, $customEndAnimations)){ //if true, add custom animation + //check with custom values, if same, we do not need to write all down and just refer + } + + $tcout = ''; + + if($endAnimation !== 'auto'){ + $tcout = RevSliderOperations::parseCustomAnimationByArray($layer, 'end'); + }else{ //automatic reverse + $tcout .= 'auto:auto;'; + } + + $es = RevSliderFunctions::getVal($layer, 'endspeed'); + $ee = trim(RevSliderFunctions::getVal($layer, 'endeasing')); + if(!empty($es)){ + $tcout .= 's:'.$es.';'; + } + if(!empty($ee) && $ee !== 'nothing'){ + $tcout .= 'e:'.$ee.';'; + } + + if($tcout !== ''){ + $customout = ' data-transform_out="' . $tcout . '"'; + } + + $do_mask_out = RevSliderFunctions::getVal($layer, 'mask_end',false); + if($do_mask_out){ + $tmask = RevSliderOperations::parseCustomMaskByArray($layer, 'end'); + if($tmask !== ''){ + $maskout = ' data-mask_out="' . $tmask . '"'; + } + } + + //slide link + $html_simple_link = ''; + + //hidden under resolution + $htmlHidden = ''; + $layerHidden = RevSliderFunctions::getVal($layer, 'hiddenunder'); + if($layerHidden == 'true' || $layerHidden == '1') + $htmlHidden = ' data-captionhidden="on"'." \n"; + + $htmlParams = $add_data.$htmlEnd.$last_trigger_state.$htmlVideoAutoplay.$htmlVideoNextSlide.$htmlVideoThumbnail.$htmlHidden.$htmlMute.$htmlDisableOnMobile.$htmlCover.$htmlDotted.$htmlRatio.$htmlRewind.$htmlStartAt.$htmlEndAt.$htmlCoverPause."\n"; //.$htmlVideoAutoplayOnlyFirstTime + + //set positioning options + $alignHor = RevSliderFunctions::getVal($layer, 'align_hor', 'left'); + $alignVert = RevSliderFunctions::getVal($layer, 'align_vert', 'top'); + $left = RevSliderFunctions::getVal($layer, 'left', 0); + $top = RevSliderFunctions::getVal($layer, 'top', 0); + + $htmlPosX = ''; + $htmlPosY = ''; + $static_data = ''; + $extra_data = ''; + + if($adv_resp_sizes == true){ + $do_x_full = false; + $do_y_full = false; + $x_is_single = true; + $y_is_single = true; + if(!is_object($left) ){ + $myLeft = $left; + $myLeft = "['".$myLeft."','".$myLeft."','".$myLeft."','".$myLeft."']"; + }else{ + $myLeft = RevSliderFunctions::normalize_device_settings($left, $enabled_sizes, 'html-array'); + if(strpos($myLeft, '[') !== false){ + $do_x_full = true; + }else{ + $myLeft = "['".$myLeft."','".$myLeft."','".$myLeft."','".$myLeft."']"; + } + } + if(!is_object($top)){ + $myTop = $top; + $myTop = "['".$myTop."','".$myTop."','".$myTop."','".$myTop."']"; + }else{ + $myTop = RevSliderFunctions::normalize_device_settings($top, $enabled_sizes, 'html-array'); + if(strpos($myTop, '[') !== false){ + $do_y_full = true; + }else{ + $myTop = "['".$myTop."','".$myTop."','".$myTop."','".$myTop."']"; + } + } + + if(!is_object($alignHor)){ + $myHor = $alignHor; + $myHor = "['".$myHor."','".$myHor."','".$myHor."','".$myHor."']"; + }else{ + $myHor = RevSliderFunctions::normalize_device_settings($alignHor, $enabled_sizes, 'html-array'); + if(strpos($myHor, '[') !== false){ + $x_is_single = false; + }else{ + $myHor = "['".$myHor."','".$myHor."','".$myHor."','".$myHor."']"; + } + } + + + if(!is_object($alignVert)){ + $myVer = $alignVert; + $myVer = "['".$myVer."','".$myVer."','".$myVer."','".$myVer."']"; + }else{ + $myVer = RevSliderFunctions::normalize_device_settings($alignVert, $enabled_sizes, 'html-array'); + if(strpos($myVer, '[') !== false){ + $y_is_single = false; + }else{ + $myVer = "['".$myVer."','".$myVer."','".$myVer."','".$myVer."']"; + } + } + + + $htmlPosX = ' data-x="'.$myHor.'" data-hoffset="'.$myLeft.'"'; + $htmlPosY = ' data-y="'.$myVer.'" data-voffset="'.$myTop.'"'; + + $static_styles = RevSliderFunctions::getVal($layer, 'static_styles', array()); + if(!empty($static_styles)){ + $static_styles = (array)$static_styles; + if(!empty($static_styles['font-size'])){ + if(is_object($static_styles['font-size'])){ + $ss_fs = RevSliderFunctions::normalize_device_settings($static_styles['font-size'], $enabled_sizes, 'html-array'); + if(strpos($ss_fs, '[') !== false) $static_data .= str_replace('px', '', ' data-fontsize="'.$ss_fs.'"')."\n"; + } + } + if(!empty($static_styles['line-height'])){ + if(is_object($static_styles['line-height'])){ + $ss_lh = RevSliderFunctions::normalize_device_settings($static_styles['line-height'], $enabled_sizes, 'html-array'); + if(strpos($ss_lh, '[') !== false) $static_data .= str_replace('px', '', ' data-lineheight="'.$ss_lh.'"')."\n"; + } + } + if(!empty($static_styles['font-weight'])){ + if(is_object($static_styles['font-weight'])){ + $ss_fw = RevSliderFunctions::normalize_device_settings($static_styles['font-weight'], $enabled_sizes, 'html-array'); + if(strpos($ss_fw, '[') !== false) $static_data .= str_replace('px', '', ' data-fontweight="'.$ss_fw.'"')."\n"; + } + } + if(!empty($static_styles['color'])){ + if(is_object($static_styles['color'])){ + $def_val = (array) RevSliderFunctions::getVal($layer, 'deformation', array()); + + foreach($static_styles['color'] as $sk => $sv){ + if(strpos($sv, 'rgb') !== false) + $static_styles['color']->$sk = RevSliderFunctions::rgba2hex($sv); + + $color_trans = RevSliderFunctions::getVal($def_val, 'color-transparency', 1); + if($color_trans > 0) $color_trans *= 100; + $color_trans = intval($color_trans); + + $static_styles['color']->$sk = RevSliderFunctions::hex2rgba($static_styles['color']->$sk, $color_trans); + } + + + + + $ss_c = RevSliderFunctions::normalize_device_settings($static_styles['color'], $enabled_sizes, 'html-array'); + if(strpos($ss_c, '[') !== false){ + $static_data .= ' data-color="'.$ss_c.'"'."\n"; + + + $static_data .= ' data-colortransparency="'.$color_trans.'"'."\n"; + } + } + } + } + + $max_width = RevSliderFunctions::getVal($layer, 'max_width', 'auto'); + $max_height = RevSliderFunctions::getVal($layer, 'max_height', 'auto'); + $white_space = RevSliderFunctions::getVal($layer, 'whitespace', 'nowrap'); + + $cover_mode = RevSliderFunctions::getVal($layer, 'cover_mode', array()); + + if(is_string($cover_mode)){ + $cover_mode = array('desktop' => $cover_mode, 'notebook' => $cover_mode, 'tablet' => $cover_mode, 'mobile' => $cover_mode); + }else{ //change to array + $cover_mode = (array) $cover_mode; + } + + if(is_object($max_width)){ + $max_width = RevSliderFunctions::normalize_device_settings($max_width, $enabled_sizes); + + if($max_width->desktop == 'auto') $max_width->desktop = 'none'; + if($max_width->notebook == 'auto') $max_width->notebook = 'none'; + if($max_width->tablet == 'auto') $max_width->tablet = 'none'; + if($max_width->mobile == 'auto') $max_width->mobile = 'none'; + if($max_width->desktop == $max_width->notebook && $max_width->desktop == $max_width->tablet && $max_width->desktop == $max_width->mobile) $max_width = $max_width->desktop; + } + if(is_object($max_height)){ + $max_height = RevSliderFunctions::normalize_device_settings($max_height, $enabled_sizes); + + if($max_height->desktop == 'auto') $max_height->desktop = 'none'; + if($max_height->notebook == 'auto') $max_height->notebook = 'none'; + if($max_height->tablet == 'auto') $max_height->tablet = 'none'; + if($max_height->mobile == 'auto') $max_height->mobile = 'none'; + if($max_height->desktop == $max_height->notebook && $max_height->desktop == $max_height->tablet && $max_height->desktop == $max_height->mobile) $max_height = $max_height->desktop; + } + if(is_object($white_space)){ + $white_space = RevSliderFunctions::normalize_device_settings($white_space, $enabled_sizes); + + if($white_space->desktop == $white_space->notebook && $white_space->desktop == $white_space->tablet && $white_space->desktop == $white_space->mobile) $white_space = $white_space->desktop; + } + + switch($type){ + case 'shape': + case 'image': + if(is_object($max_width)){ + foreach($cover_mode as $cvmk => $cvmv){ + if($cvmv == 'fullwidth' || $cvmv == 'cover'){ + $max_width->$cvmk = 'full'; + }else{ + if($type == 'image') $max_width->$cvmk = 'none'; + } + } + }else{ + foreach($cover_mode as $cvmk => $cvmv){ + if($type == 'image'){ + $max_width = ($cvmv == 'fullwidth' || $cvmv == 'cover') ? 'full' : 'none'; + }else{ + if($cvmv == 'fullwidth' || $cvmv == 'cover') $max_width = 'full'; + } + break; + } + } + if(is_object($max_height)){ + foreach($cover_mode as $cvmk => $cvmv){ + if($cvmv == 'fullheight' || $cvmv == 'cover'){ + $max_height->$cvmk = 'full'; + }else{ + if($type == 'image') $max_height->$cvmk = 'none'; + } + } + }else{ + foreach($cover_mode as $cvmk => $cvmv){ + if($type == 'image'){ + $max_height = ($cvmv == 'fullheight' || $cvmv == 'cover') ? 'full' : 'none'; + }else{ + if($cvmv == 'fullheight' || $cvmv == 'cover') $max_height = 'full'; + } + break; + } + } + break; + case 'typeA': + break; + case 'typeB': + break; + } + + //$static_data .= (is_object($max_width)) ? str_replace('px', '', " data-minwidth=\"['".implode("','", (array)$max_width)."']\"")."\n" : str_replace('px', '', ' data-minwidth="'.$max_width.'"')."\n"; + $static_data .= (is_object($max_width)) ? str_replace('px', '', " data-width=\"['".implode("','", (array)$max_width)."']\"")."\n" : str_replace('px', '', ' data-width="'.$max_width.'"')."\n"; + //$static_data .= (is_object($max_height)) ? str_replace('px', '', " data-minheight=\"['".implode("','", (array)$max_height)."']\"")."\n" : str_replace('px', '', ' data-minheight="'.$max_height.'"')."\n"; + $static_data .= (is_object($max_height)) ? str_replace('px', '', " data-height=\"['".implode("','", (array)$max_height)."']\"")."\n" : str_replace('px', '', ' data-height="'.$max_height.'"')."\n"; + $static_data .= (is_object($white_space)) ? str_replace('px', '', " data-whitespace=\"['".implode("','", (array)$white_space)."']\"")."\n" : str_replace('px', '', ' data-whitespace="'.$white_space.'"')."\n"; + + }else{ + if(is_object($alignHor)) $alignHor = RevSliderFunctions::get_biggest_device_setting($alignHor, $enabled_sizes); + if(is_object($alignVert)) $alignVert = RevSliderFunctions::get_biggest_device_setting($alignVert, $enabled_sizes); + if(is_object($left)) $left = RevSliderFunctions::get_biggest_device_setting($left, $enabled_sizes); + if(is_object($top)) $top = RevSliderFunctions::get_biggest_device_setting($top, $enabled_sizes); + + switch($alignHor){ + default: + case 'left': + $htmlPosX = ' data-x="'.$left.'"'; + break; + case 'center': + $htmlPosX = ' data-x="center" data-hoffset="'.$left.'"'; + break; + case 'right': + //$left = (int)$left*-1; + $htmlPosX = ' data-x="right" data-hoffset="'.$left.'"'; + break; + } + + switch($alignVert){ + default: + case 'top': + $htmlPosY = ' data-y="'.$top.'"'; + break; + case 'middle': + $htmlPosY = ' data-y="center" data-voffset="'.$top.'"'; + break; + case 'bottom': + //$top = (int)$top*-1; + $htmlPosY = ' data-y="bottom" data-voffset="'.$top.'"'; + break; + } + + + $max_width = RevSliderFunctions::getVal($layer, 'max_width', 'auto'); + $max_height = RevSliderFunctions::getVal($layer, 'max_height', 'auto'); + $cover_mode = RevSliderFunctions::getVal($layer, 'cover_mode', array()); + + if(is_string($cover_mode)){ + $cover_mode = array('desktop' => $cover_mode, 'notebook' => $cover_mode, 'tablet' => $cover_mode, 'mobile' => $cover_mode); + }else{ //change to array + $cover_mode = (array) $cover_mode; + } + + switch($type){ + case 'shape': + case 'image': + if(is_object($max_width)){ + foreach($cover_mode as $cvmk => $cvmv){ + if($cvmv == 'fullwidth' || $cvmv == 'cover'){ + $max_width->$cvmk = 'full'; + }else{ + if($type == 'image') $max_width->$cvmk = 'none'; + } + } + }else{ + foreach($cover_mode as $cvmk => $cvmv){ + if($type == 'image'){ + $max_width = ($cvmv == 'fullwidth' || $cvmv == 'cover') ? 'full' : 'none'; + }else{ + if($cvmv == 'fullwidth' || $cvmv == 'cover') $max_width = 'full'; + } + break; + } + } + if(is_object($max_height)){ + foreach($cover_mode as $cvmk => $cvmv){ + if($cvmv == 'fullheight' || $cvmv == 'cover'){ + $max_height->$cvmk = 'full'; + }else{ + if($type == 'image') $max_height->$cvmk = 'none'; + } + } + }else{ + foreach($cover_mode as $cvmk => $cvmv){ + if($type == 'image'){ + $max_height = ($cvmv == 'fullheight' || $cvmv == 'cover') ? 'full' : 'none'; + }else{ + if($cvmv == 'fullheight' || $cvmv == 'cover') $max_height = 'full'; + } + break; + } + } + break; + case 'typeA': + break; + case 'typeB': + break; + } + + $static_data .= (is_object($max_width)) ? str_replace('px', '', " data-width=\"['".implode("','", (array)$max_width)."']\"")."\n" : str_replace('px', '', ' data-width="'.$max_width.'"')."\n"; + $static_data .= (is_object($max_height)) ? str_replace('px', '', " data-height=\"['".implode("','", (array)$max_height)."']\"")."\n" : str_replace('px', '', ' data-height="'.$max_height.'"')."\n"; + } + + $style_string = ''; + + $vis_desktop = RevSliderFunctions::getVal($layer, 'visible-desktop', true); + $vis_notebook = RevSliderFunctions::getVal($layer, 'visible-notebook', true); + $vis_tablet = RevSliderFunctions::getVal($layer, 'visible-tablet', true); + $vis_mobile = RevSliderFunctions::getVal($layer, 'visible-mobile', true); + $vis_notebook = ($vis_notebook === true) ? 'on' : 'off'; + $vis_desktop = ($vis_desktop === true) ? 'on' : 'off'; + $vis_tablet = ($vis_tablet === true) ? 'on' : 'off'; + $vis_mobile = ($vis_mobile === true) ? 'on' : 'off'; + + if($vis_notebook == 'off' || $vis_desktop == 'off' || $vis_tablet == 'off' || $vis_mobile == 'off') + $static_data .= " data-visibility=\"['".$vis_desktop."','".$vis_notebook."','".$vis_tablet."','".$vis_mobile."']\"\n"; + + $il_style = (array)RevSliderFunctions::getVal($layer, 'inline', array()); + $adv_style = (array)RevSliderFunctions::getVal($layer, 'advanced', array()); + + //add deformation and hover deformation to the layers + $def_val = (array) RevSliderFunctions::getVal($layer, 'deformation', array()); + $def = array(); + $st_idle = array(); + $def['o'] = array(RevSliderFunctions::getVal($def_val, 'opacity', '0'), '0'); + $def['sX'] = array(RevSliderFunctions::getVal($def_val, 'scalex', '1'), '1'); + $def['sY'] = array(RevSliderFunctions::getVal($def_val, 'scaley', '1'), '1'); + $def['skX'] = array(RevSliderFunctions::getVal($def_val, 'skewx', '0'), '0'); + $def['skY'] = array(RevSliderFunctions::getVal($def_val, 'skewy', '0'), '0'); + $def['rX'] = array(RevSliderFunctions::getVal($def_val, 'xrotate', '0'), '0'); + $def['rY'] = array(RevSliderFunctions::getVal($def_val, 'yrotate', '0'), '0'); + $def['rZ'] = array(RevSliderFunctions::getVal($layer, '2d_rotation', '0'), '0'); + $orix = RevSliderFunctions::getVal($def_val, '2d_origin_x', '50%'); + if(strpos($orix, '%') === false) $orix .= '%'; + $oriy = RevSliderFunctions::getVal($def_val, '2d_origin_y', '50%'); + if(strpos($oriy, '%') === false) $oriy .= '%'; + $def['tO'] = array($orix . ' ' . $oriy, '50% 50%'); + $def['tP'] = array(RevSliderFunctions::getVal($def_val, 'pers', '600'), '600'); + $def['z'] = array(RevSliderFunctions::getVal($def_val, 'z', '0'), '0'); + + $st_idle['font-family'] = array(str_replace('"', "'", RevSliderFunctions::getVal($def_val, 'font-family', '')), ''); + $st_idle['text-align'] = array(RevSliderFunctions::getVal($def_val, 'text_align', 'left'), 'left'); + + //styling + $font_style = (RevSliderFunctions::getVal($def_val, 'font-style', 'off') == 'on') ? 'italic' : 'normal'; + $st_idle['font-styles'] = array($font_style, 'normal'); + $st_idle['text-decoration'] = array(RevSliderFunctions::getVal($def_val, 'text-decoration', 'none'), 'none'); + $st_idle['text-align'] = array(RevSliderFunctions::getVal($def_val, 'text-align', 'left'), 'left'); + $bg_color = RevSliderFunctions::getVal($def_val, 'background-color', 'transparent'); + if($bg_color !== 'transparent'){ + $bg_trans = RevSliderFunctions::getVal($def_val, 'background-transparency', 1); + if($bg_trans > 0) $bg_trans *= 100; + $bg_trans = intval($bg_trans); + $st_idle['background-color'] = array(RevSliderFunctions::hex2rgba($bg_color, $bg_trans), 'ALWAYS'); + } + + $my_padding = RevSliderFunctions::getVal($def_val, 'padding', array('0px','0px','0px','0px')); + if(!empty($my_padding)){ + if(is_array($my_padding)) + $my_padding = implode(' ', $my_padding); + + if(trim($my_padding) != '') + $st_idle['padding'] = array($my_padding, '0px 0px 0px 0px'); + } + + $border_color = RevSliderFunctions::getVal($def_val, 'border-color', 'transparent'); + if($border_color !== 'transparent'){ + $border_trans = RevSliderFunctions::getVal($def_val, 'border-transparency', 1); + if($border_trans > 0) $border_trans *= 100; + $border_trans = intval($border_trans); + $st_idle['border-color'] = array(RevSliderFunctions::hex2rgba($border_color, $border_trans), 'ALWAYS'); + } + + $st_idle['border-style'] = array(RevSliderFunctions::getVal($def_val, 'border-style', 'none'), 'none'); + + $bdw = RevSliderFunctions::getVal($def_val, 'border-width', '0px'); + $bdw = RevSliderFunctions::add_missing_val($bdw, 'px'); + if($bdw == '0px') unset($st_idle['border-style']); + $st_idle['border-width'] = array($bdw, '0px'); + + $my_border = RevSliderFunctions::getVal($def_val, 'border-radius', array('0px','0px','0px','0px')); + if(!empty($my_border)){ + $my_border = implode(' ', $my_border); + if(trim($my_border) != '') + $st_idle['border-radius'] = array($my_border, '0px 0px 0px 0px'); + } + + + //Advanced Styles here: + if(isset($adv_style['idle'])){ + $adv_style['idle'] = (array)$adv_style['idle']; + if(!empty($adv_style['idle'])){ + foreach($adv_style['idle'] as $n => $v){ + $st_idle[$n] = array($v, 'ALWAYS'); + } + } + } + + //Advanced Styles here: + if(isset($il_style['idle'])){ + $il_style['idle'] = (array)$il_style['idle']; + if(!empty($il_style['idle'])){ + foreach($il_style['idle'] as $n => $v){ + $st_idle[$n] = array($v, 'ALWAYS'); + } + } + } + + + $def_string = ''; + foreach($def as $key => $value){ + if(trim($value[0]) == '' || $value[0] == $value[1]) continue; + $def_string .= $key.':'.$value[0].';'; + } + + foreach($st_idle as $key => $value){ + if(trim($value[0]) == '' || $value[0] == $value[1]) continue; + $style_string .= $key.':'.$value[0].';'; + } + + $deform = ' data-transform_idle="'.str_replace('"', "'", $def_string).'"'."\n"; + $idle_style = $style_string; + + //check if hover is active for the layer + $is_hover_active = RevSliderFunctions::getVal($layer, 'hover', '0'); + + $deform_hover = ''; + $style_hover = ''; + + $def_val = (array) RevSliderFunctions::getVal($layer, 'deformation-hover', array()); + $def = array(); + $css_cursor = RevSliderFunctions::getVal($def_val, 'css_cursor', 'auto'); + $st_h_string = ''; + + if($is_hover_active){ + $def['o'] = array(RevSliderFunctions::getVal($def_val, 'opacity', '0'), '0'); + $def['sX'] = array(RevSliderFunctions::getVal($def_val, 'scalex', '1'), '1'); + $def['sY'] = array(RevSliderFunctions::getVal($def_val, 'scaley', '1'), '1'); + $def['skX'] = array(RevSliderFunctions::getVal($def_val, 'skewx', '0'), '0'); + $def['skY'] = array(RevSliderFunctions::getVal($def_val, 'skewy', '0'), '0'); + $def['rX'] = array(RevSliderFunctions::getVal($def_val, 'xrotate', '0'), '0'); + $def['rY'] = array(RevSliderFunctions::getVal($def_val, 'yrotate', '0'), '0'); + $def['rZ'] = array(RevSliderFunctions::getVal($def_val, '2d_rotation', '0'), 'inherit'); + $def['z'] = array(RevSliderFunctions::getVal($def_val, 'z', '0'), '0'); + + $def['s'] = array(RevSliderFunctions::getVal($def_val, 'speed', '300'), 'ALWAYS'); + $def['e'] = array(RevSliderFunctions::getVal($def_val, 'easing', 'easeOutExpo'), 'ALWAYS'); + + //style + $st_hover = array(); + $font_color = RevSliderFunctions::getVal($def_val, 'color', '#000'); + if($font_color !== 'transparent'){ + $font_trans = RevSliderFunctions::getVal($def_val, 'color-transparency', 1); + if($font_trans > 0) $font_trans *= 100; + $font_trans = intval($font_trans); + $st_hover['c'] = array(RevSliderFunctions::hex2rgba($font_color, $font_trans), 'ALWAYS'); + }else{ + $st_hover['c'] = array($font_color, 'ALWAYS'); + } + $font_style = (RevSliderFunctions::getVal($def_val, 'font-style', 'off') == 'on') ? 'italic' : 'normal'; + $st_hover['fs'] = array($font_style, 'normal'); + $st_hover['td'] = array(RevSliderFunctions::getVal($def_val, 'text-decoration', 'none'), 'none'); + $bg_color = RevSliderFunctions::getVal($def_val, 'background-color', 'transparent'); + if($bg_color !== 'transparent'){ + $bg_trans = RevSliderFunctions::getVal($def_val, 'background-transparency', 1); + if($bg_trans > 0) $bg_trans *= 100; + $bg_trans = intval($bg_trans); + $st_hover['bg'] = array(RevSliderFunctions::hex2rgba($bg_color, $bg_trans), 'ALWAYS'); + } + + $my_padding = RevSliderFunctions::getVal($def_val, 'padding', array('0px','0px','0px','0px')); + if(!empty($my_padding)){ + $my_padding = implode(' ', $my_padding); + if(trim($my_padding) != '') + $st_hover['p'] = array($my_padding, '0px 0px 0px 0px'); + } + + $border_color = RevSliderFunctions::getVal($def_val, 'border-color', 'transparent'); + if($border_color !== 'transparent'){ + $border_trans = RevSliderFunctions::getVal($def_val, 'border-transparency', 1); + if($border_trans > 0) $border_trans *= 100; + $border_trans = intval($border_trans); + $st_hover['bc'] = array(RevSliderFunctions::hex2rgba($border_color, $border_trans), 'ALWAYS'); + } + + $st_hover['bs'] = array(RevSliderFunctions::getVal($def_val, 'border-style', 'none'), 'none'); + $st_hover['bw'] = array(RevSliderFunctions::add_missing_val(RevSliderFunctions::getVal($def_val, 'border-width', '0px'), 'px'), '0px'); + if($st_hover['bw'][0] == '0px') unset($st_hover['bs']); + + $my_border = RevSliderFunctions::getVal($def_val, 'border-radius', array('0px','0px','0px','0px')); + if(!empty($my_border)){ + $my_border = implode(' ', $my_border); + if(trim($my_border) != '') + $st_hover['br'] = array($my_border, '0px 0px 0px 0px'); + } + + + + $st_trans = array( + 'c' => 'color', + 'fs' => 'font-style', + 'td' => 'text-decoration', + 'bg' => 'background-color', + 'p' => 'padding', + 'bc' => 'border-color', + 'bs' => 'border-style', + 'bw' => 'border-width', + 'br' => 'border-radius', + ); + + foreach($st_hover as $sk => $sv){ //do not write values for hover if idle is the same value + if(isset($st_idle[$st_trans[$sk]]) && $st_idle[$st_trans[$sk]][0] == $sv[0]) unset($st_hover[$sk]); + } + + + //Advanced Styles here: + if(isset($adv_style['hover'])){ + $adv_style['hover'] = (array)$adv_style['hover']; + if(!empty($adv_style['hover'])){ + foreach($adv_style['hover'] as $n => $v){ + $st_hover[$n] = array($v, 'ALWAYS'); + } + } + } + + //Advanced Styles here: + if(isset($il_style['hover'])){ + $il_style['hover'] = (array)$il_style['hover']; + if(!empty($il_style['hover'])){ + foreach($il_style['hover'] as $n => $v){ + $st_hover[$n] = array($v, 'ALWAYS'); + } + } + } + + $def_string = ''; + foreach($def as $key => $value){ + if(trim($value[0]) == '' || $value[0] === $value[1]) continue; + $def_string .= $key.':'.$value[0].';'; + } + + + foreach($st_hover as $key => $value){ + if(trim($value[0]) == '' || $value[0] === $value[1]) continue; + $st_h_string .= $key.':'.$value[0].';'; + } + + + $deform_hover = ' data-transform_hover="'.$def_string.'"'."\n"; + } + + if(trim($css_cursor) !== '' && $css_cursor !== 'auto') + $st_h_string .= 'cursor:'.$css_cursor.';'; + + + if($st_h_string !== ''){ + $style_hover = ' data-style_hover="'.$st_h_string.'"'."\n"; + } + + $static_data .= $deform.$deform_hover.$style_hover; + + + //set corners + $htmlCorners = ""; + + //if($type == "no_edit"){} + + if($type == "text" || $type == "button"){ + $cornerdef = RevSliderFunctions::getVal($layer, "deformation"); + $cornerLeft = RevSliderFunctions::getVal($cornerdef, "corner_left"); + $cornerRight = RevSliderFunctions::getVal($cornerdef, "corner_right"); + switch($cornerLeft){ + case "curved": + $htmlCorners .= "
        "; + break; + case "reverced": + $htmlCorners .= "
        "; + break; + } + + switch($cornerRight){ + case "curved": + $htmlCorners .= "
        "; + break; + case "reverced": + $htmlCorners .= "
        "; + break; + } + + } + + //add resizeme class + $resize_full = RevSliderFunctions::getVal($layer, "resize-full", true); + if($resize_full === true || $resize_full == 'true' || $resize_full == '1'){ + $resizeme = RevSliderFunctions::getVal($layer, "resizeme", true); + if($resizeme == "true" || $resizeme == "1") + $outputClass .= ' tp-resizeme'; + + }else{//end text related layer + $extra_data .= ' data-responsive="off"'; + } + + //make some modifications for the full screen video + if($isFullWidthVideo == true){ + $htmlPosX = ' data-x="0"'; + $htmlPosY = ' data-y="0"'; + $outputClass .= ' fullscreenvideo'; + + } + + //parallax part + $use_parallax = $this->slider->getParam('use_parallax', 'off'); + + $parallax_class = ''; + if($use_parallax == 'on'){ + $ldef = RevSliderFunctions::getVal($layer, 'deformation', array()); + $slide_level = intval(RevSliderFunctions::getVal($ldef, 'parallax', '-')); + if($slide_level !== '-') + $parallax_class = ' rs-parallaxlevel-'.$slide_level; + } + + //check for actions + $all_actions = RevSliderFunctions::getVal($layer, 'layer_action', array()); + + $a_tooltip_event = RevSliderFunctions::cleanStdClassToArray(RevSliderFunctions::getVal($all_actions, 'tooltip_event', array())); + $a_action = RevSliderFunctions::cleanStdClassToArray(RevSliderFunctions::getVal($all_actions, 'action', array())); + $a_image_link = RevSliderFunctions::cleanStdClassToArray(RevSliderFunctions::getVal($all_actions, 'image_link', array())); + $a_link_open_in = RevSliderFunctions::cleanStdClassToArray(RevSliderFunctions::getVal($all_actions, 'link_open_in', array())); + $a_jump_to_slide = RevSliderFunctions::cleanStdClassToArray(RevSliderFunctions::getVal($all_actions, 'jump_to_slide', array())); + $a_scrolloffset = RevSliderFunctions::cleanStdClassToArray(RevSliderFunctions::getVal($all_actions, 'scrollunder_offset', array())); + $a_actioncallback = RevSliderFunctions::cleanStdClassToArray(RevSliderFunctions::getVal($all_actions, 'actioncallback', array())); + $a_target = RevSliderFunctions::cleanStdClassToArray(RevSliderFunctions::getVal($all_actions, 'layer_target', array())); + $a_action_delay = RevSliderFunctions::cleanStdClassToArray(RevSliderFunctions::getVal($all_actions, 'action_delay', array())); + $a_link_type = RevSliderFunctions::cleanStdClassToArray(RevSliderFunctions::getVal($all_actions, 'link_type', array())); + $a_toggle_layer_type = RevSliderFunctions::cleanStdClassToArray(RevSliderFunctions::getVal($all_actions, 'toggle_layer_type', array())); + $a_toggle_class = RevSliderFunctions::cleanStdClassToArray(RevSliderFunctions::getVal($all_actions, 'toggle_class', array())); + + $a_html = ''; + $a_events = array(); + if(!empty($a_action)){ + $a_html .= " data-actions='"; + foreach($a_action as $num => $action){ + $layer_attrID = ''; + switch($action){ + case 'start_in': + case 'start_out': + case 'start_video': + case 'stop_video': + case 'toggle_layer': + case 'toggle_video': + case 'simulate_click': + case 'toggle_class': + //get the ID of the layer with the unique_id that is $a_target[$num] + $layer_attrID = $slide->getLayerID_by_unique_id($a_target[$num]); + if(trim($layer_attrID) == '') + $layer_attrID = 'slide-'.preg_replace("/[^\w]+/", "", $slideID).'-layer-'.$a_target[$num]; + break; + } + + switch($action){ + case 'none': + continue; + break; + case 'link': + //if post based, replace {{}} with correct info + //a_image_link + + if(@$a_link_type[$num] == 'jquery'){ + /* Provider: - + $setBase = (is_ssl()) ? "https://" : "http://"; + if(strpos($a_image_link[$num], 'http') === false) + $a_image_link[$num] = $setBase .$a_image_link[$num]; + */ + $a_events[] = array( + 'event' => @$a_tooltip_event[$num], + 'action' => 'simplelink', + 'target' => @$a_link_open_in[$num], + 'url' => @$a_image_link[$num] + ); + }else{ + if($html_simple_link == ''){ //adds the link to the layer + /* Provider: - + $setBase = (is_ssl()) ? "https://" : "http://"; + if(strpos($a_image_link[$num], 'http') === false) + $a_image_link[$num] = $setBase .$a_image_link[$num]; + */ + $html_simple_link = ' href="'.@$a_image_link[$num].'"'; + $html_simple_link .=' target="'.@$a_link_open_in[$num].'"'; + } + } + break; + case 'jumpto': + $a_events[] = array( + 'event' => @$a_tooltip_event[$num], + 'action' => 'jumptoslide', + 'slide' => 'rs-'.@$a_jump_to_slide[$num], + 'delay' => @$a_action_delay[$num] + ); + break; + case 'next': + $a_events[] = array( + 'event' => @$a_tooltip_event[$num], + 'action' => 'jumptoslide', + 'slide' => 'next', + 'delay' => @$a_action_delay[$num] + ); + break; + case 'prev': + $a_events[] = array( + 'event' => @$a_tooltip_event[$num], + 'action' => 'jumptoslide', + 'slide' => 'previous', + 'delay' => @$a_action_delay[$num] + ); + break; + case 'pause': + $a_events[] = array( + 'event' => @$a_tooltip_event[$num], + 'action' => 'pauseslider' + ); + break; + case 'resume': + $a_events[] = array( + 'event' => @$a_tooltip_event[$num], + 'action' => 'playslider' + ); + break; + case 'toggle_slider': + $a_events[] = array( + 'event' => @$a_tooltip_event[$num], + 'action' => 'toggleslider' + ); + break; + case 'callback': + $a_events[] = array( + 'event' => @$a_tooltip_event[$num], + 'action' => 'callback', + 'callback' => @$a_actioncallback[$num] + ); + break; + case 'scroll_under': //ok + $a_events[] = array( + 'event' => @$a_tooltip_event[$num], + 'action' => 'scrollbelow', + 'offset' => RevSliderFunctions::add_missing_val(@$a_scrolloffset[$num], 'px') + ); + break; + case 'start_in': + $a_events[] = array( + 'event' => @$a_tooltip_event[$num], + 'action' => 'startlayer', + 'layer' => $layer_attrID, + 'delay' => @$a_action_delay[$num] + ); + break; + case 'start_out': + $a_events[] = array( + 'event' => @$a_tooltip_event[$num], + 'action' => 'stoplayer', + 'layer' => $layer_attrID, + 'delay' => @$a_action_delay[$num] + ); + break; + case 'toggle_layer': + $a_events[] = array( + 'event' => @$a_tooltip_event[$num], + 'action' => 'togglelayer', + 'layerstatus' => @$a_toggle_layer_type[$num], + 'layer' => $layer_attrID, + 'delay' => @$a_action_delay[$num] + ); + break; + case 'start_video': + $a_events[] = array( + 'event' => @$a_tooltip_event[$num], + 'action' => 'playvideo', + 'layer' => $layer_attrID, + 'delay' => @$a_action_delay[$num] + ); + break; + case 'stop_video': + $a_events[] = array( + 'event' => @$a_tooltip_event[$num], + 'action' => 'stopvideo', + 'layer' => $layer_attrID, + 'delay' => @$a_action_delay[$num] + ); + break; + case 'toggle_video': + $a_events[] = array( + 'event' => @$a_tooltip_event[$num], + 'action' => 'togglevideo', + 'layer' => $layer_attrID, + 'delay' => @$a_action_delay[$num] + ); + break; + case 'simulate_click': + $a_events[] = array( + 'event' => @$a_tooltip_event[$num], + 'action' => 'simulateclick', + 'layer' => $layer_attrID, + 'delay' => @$a_action_delay[$num] + ); + break; + case 'toggle_class': + $a_events[] = array( + 'event' => @$a_tooltip_event[$num], + 'action' => 'toggleclass', + 'layer' => $layer_attrID, + 'delay' => @$a_action_delay[$num], + 'classname' => @$a_toggle_class[$num] + ); + break; + } + } + if(!empty($a_events)){ + $a_html .= json_encode($a_events); + } + $a_html .= "'\n"; + } + + //check for loop animation here + $do_loop = RevSliderFunctions::getVal($layer, 'loop_animation', 'none'); + $loop_data = ''; + $loop_class = ''; + + if($do_loop !== 'none'){ + $loop_class = ' '.$do_loop; + switch($do_loop){ + case 'rs-pendulum': + $loop_data.= ' data-easing="'.RevSliderFunctions::getVal($layer, 'loop_easing', 'Power3.easeInOut').'"'; + $loop_data.= ' data-startdeg="'.RevSliderFunctions::getVal($layer, 'loop_startdeg', '-20').'"'; + $loop_data.= ' data-enddeg="'.RevSliderFunctions::getVal($layer, 'loop_enddeg', '20').'"'; + $loop_data.= ' data-speed="'.RevSliderFunctions::getVal($layer, 'loop_speed', '2').'"'; + $loop_data.= ' data-origin="'.RevSliderFunctions::getVal($layer, 'loop_xorigin', '50').'% '.RevSliderFunctions::getVal($layer, 'loop_yorigin', '50').'%"'; + break; + case 'rs-rotate': + $loop_data.= ' data-easing="'.RevSliderFunctions::getVal($layer, 'loop_easing', 'Power3.easeInOut').'"'; + $loop_data.= ' data-startdeg="'.RevSliderFunctions::getVal($layer, 'loop_startdeg', '-20').'"'; + $loop_data.= ' data-enddeg="'.RevSliderFunctions::getVal($layer, 'loop_enddeg', '20').'"'; + $loop_data.= ' data-speed="'.RevSliderFunctions::getVal($layer, 'loop_speed', '2').'"'; + $loop_data.= ' data-origin="'.RevSliderFunctions::getVal($layer, 'loop_xorigin', '50').'% '.RevSliderFunctions::getVal($layer, 'loop_yorigin', '50').'%"'; + break; + + case 'rs-slideloop': + $loop_data.= ' data-easing="'.RevSliderFunctions::getVal($layer, 'loop_easing', 'Power3.easeInOut').'"'; + $loop_data.= ' data-speed="'.RevSliderFunctions::getVal($layer, 'loop_speed', '1').'"'; + $loop_data.= ' data-xs="'.RevSliderFunctions::getVal($layer, 'loop_xstart', '0').'"'; + $loop_data.= ' data-xe="'.RevSliderFunctions::getVal($layer, 'loop_xend' ,'0').'"'; + $loop_data.= ' data-ys="'.RevSliderFunctions::getVal($layer, 'loop_ystart', '0').'"'; + $loop_data.= ' data-ye="'.RevSliderFunctions::getVal($layer, 'loop_yend', '0').'"'; + break; + case 'rs-pulse': + $loop_data.= ' data-easing="'.RevSliderFunctions::getVal($layer, 'loop_easing', 'Power3.easeInOut').'"'; + $loop_data.= ' data-speed="'.RevSliderFunctions::getVal($layer, 'loop_speed', '1').'"'; + $loop_data.= ' data-zoomstart="'.RevSliderFunctions::getVal($layer, 'loop_zoomstart', '1').'"'; + $loop_data.= ' data-zoomend="'.RevSliderFunctions::getVal($layer, 'loop_zoomend', '1').'"'; + break; + case 'rs-wave': + $loop_data.= ' data-speed="'.RevSliderFunctions::getVal($layer, 'loop_speed', '1').'"'; + $loop_data.= ' data-angle="'.RevSliderFunctions::getVal($layer, 'loop_angle', '0').'"'; + $loop_data.= ' data-radius="'.RevSliderFunctions::getVal($layer, 'loop_radius', '10').'"'; + $loop_data.= ' data-origin="'.RevSliderFunctions::getVal($layer, 'loop_xorigin', '50').'% '.RevSliderFunctions::getVal($layer, 'loop_yorigin', '50').'%"'; + break; + } + } + + $layer_id = $zIndex - 4; + $use_tag = 'div'; + if($html_simple_link !== '') $use_tag = 'a'; + echo "\n \n"; + echo ' <'.$use_tag.' class="'.$outputClass; + echo ($classes != '') ? ' '.$classes : ''; + echo $parallax_class; + if($static_slide) echo ' tp-static-layer'; + + echo $videoclass; + + echo "\" \n"; + echo $html_simple_link; + echo ($ids != '') ? ' '.$ids." \n" : ''; + echo ($title != '') ? ' '.$title." \n" : ''; + echo ($rel != '') ? ' '.$rel." \n" : ''; + if($htmlPosX != '') echo ' '.$htmlPosX." \n"; + if($htmlPosY != '') echo ' '.$htmlPosY." \n"; + if($static_data != '') echo ' '.$static_data." \n"; + if($customin != '') echo ' '.$customin." \n"; + if($customout != '') echo ' '.$customout." \n"; + if($maskin != '') echo ' '.$maskin." \n"; + if($maskout != '') echo ' '.$maskout." \n"; + echo ' data-start="'.$time.'"'." \n"; + + //if($type == 'no_edit'){} + + if($type == 'text' || $type == 'button'){ //only output if we are a text layer + echo ' data-splitin="'.$splitin.'"'." \n"; + echo ' data-splitout="'.$splitout.'"'." \n"; + } + + echo $a_html; + + if($basealign !== 'grid'){ + echo ' data-basealign="'.$basealign.'"'." \n"; + } + $ro = RevSliderFunctions::getVal($layer, 'responsive_offset', true); + + if($ro!=1){ + echo ' data-responsive_offset="off"'." \n"; + } else { + echo ' data-responsive_offset="on"'." \n"; + } + + echo $extra_data."\n"; + //check if static layer and if yes, set values for it. + if($static_slide){ + if($isTemplate != "true" && $slider_type !== 'hero'){ + $start_on_slide = intval(RevSliderFunctions::getVal($layer,"static_start",1)) - 1; + $end_on_slide = RevSliderFunctions::getVal($layer,"static_end",2); + if($end_on_slide !== 'last'){ + $end_on_slide = intval($end_on_slide) - 1; + }else{ //change number to the last slide number + $end_on_slide = count($this->slider->getArrSlideNames()) - 1; + } + }else{ + $start_on_slide = '-1'; + $end_on_slide = '-1'; + } + + echo ' data-startslide="'.$start_on_slide.'"'." \n"; + echo ' data-endslide="'.$end_on_slide.'"'." \n"; + } + if($splitin !== 'none'){ + echo ' data-elementdelay="'.$elementdelay.'"'." \n"; + } + if($splitout !== 'none'){ + echo ' data-endelementdelay="'.$endelementdelay.'"'." \n"; + } + if($htmlParams != "") echo " ".$htmlParams; + echo ' style="z-index: '.$zIndex.';'.$inline_styles.$idle_style. '"'; + echo '>'; + + if($do_loop !== 'none'){ + echo "\n".'
        '; + } + + echo stripslashes($html)." \n"; + if($htmlCorners != ""){ + echo $htmlCorners." \n"; + } + if($do_loop !== 'none'){ + echo "
        \n"; + } + echo ' '."\n"; + $zIndex++; + } + } + + /* Provider: - * + * + * put slider javascript + */ + private function putJS(){ + + $params = $this->slider->getParams(); + $sliderType = $this->slider->getParam('slider_type'); + $optFullWidth = ($sliderType == 'fullwidth') ? 'on' : 'off'; + if($sliderType == 'fixed' || $sliderType == 'responsitive' || $sliderType == 'fullwidth') $sliderType = 'auto'; + + $optFullScreen = 'off'; + if($sliderType == 'fullscreen'){ + $optFullWidth = 'off'; + $optFullScreen = 'on'; + } + + $use_spinner = $this->slider->getParam('use_spinner', '0'); + $spinner_color = $this->slider->getParam('spinner_color', '#FFFFFF'); + + $noConflict = $this->slider->getParam("jquery_noconflict","on"); + $debugmode = ($this->slider->getParam("jquery_debugmode","off")=='on') ? 'true' : 'false'; + + + //set thumb amount + $numSlides = $this->slider->getNumSlides(true); + + //get stop slider options + + $stopSlider = $this->slider->getParam("stop_slider","off"); + $stopAfterLoops = $this->slider->getParam("stop_after_loops","0"); + $stopAtSlide = $this->slider->getParam("stop_at_slide","2"); + + if($stopSlider == "off"){ + $stopAfterLoops = "-1"; + $stopAtSlide = "-1"; + } + + $oneSlideLoop = $this->slider->getParam("loop_slide","loop"); + if($oneSlideLoop == 'noloop' && $this->hasOnlyOneSlide == true){ + $stopAfterLoops = '0'; + $stopAtSlide = '1'; + } + + $sliderID = $this->slider->getID(); + + //treat hide slider at limit + $hideSliderAtLimit = $this->slider->getParam("hide_slider_under","0",RevSlider::VALIDATE_NUMERIC); + if(!empty($hideSliderAtLimit)) + $hideSliderAtLimit++; + + $hideCaptionAtLimit = $this->slider->getParam("hide_defined_layers_under","0",RevSlider::VALIDATE_NUMERIC);; + if(!empty($hideCaptionAtLimit)) + $hideCaptionAtLimit++; + + $hideAllCaptionAtLimit = $this->slider->getParam("hide_all_layers_under","0",RevSlider::VALIDATE_NUMERIC);; + if(!empty($hideAllCaptionAtLimit)) + $hideAllCaptionAtLimit++; + + //start_with_slide + $startWithSlide = $this->slider->getStartWithSlideSetting(); + + //modify navigation type (backward compatability) + //FALLBACK + $enable_arrows = $this->slider->getParam('enable_arrows','off'); + $arrowsType = ($enable_arrows == 'on') ? 'solo' : 'none'; + + + //More Mobile Options + $hideThumbsOnMobile = $this->slider->getParam("hide_thumbs_on_mobile","off"); + $enable_progressbar = $this->slider->getParam('enable_progressbar','on'); + + $disableKenBurnOnMobile = $this->slider->getParam("disable_kenburns_on_mobile","off"); + + $swipe_velocity = $this->slider->getParam("swipe_velocity","0.7",RevSlider::VALIDATE_NUMERIC); + $swipe_min_touches = $this->slider->getParam("swipe_min_touches","1",RevSlider::VALIDATE_NUMERIC); + $swipe_direction = $this->slider->getParam("swipe_direction", "horizontal"); + $drag_block_vertical = $this->slider->getParam("drag_block_vertical","false"); + + $use_parallax = $this->slider->getParam("use_parallax","off"); + $disable_parallax_mobile = $this->slider->getParam("disable_parallax_mobile","off"); + + if($use_parallax == 'on'){ + $parallax_type = $this->slider->getParam("parallax_type","mouse"); + $parallax_origo = $this->slider->getParam("parallax_origo","enterpoint"); + $parallax_speed = $this->slider->getParam("parallax_speed","400"); + + $parallax_level[] = intval($this->slider->getParam("parallax_level_1","5")); + $parallax_level[] = intval($this->slider->getParam("parallax_level_2","10")); + $parallax_level[] = intval($this->slider->getParam("parallax_level_3","15")); + $parallax_level[] = intval($this->slider->getParam("parallax_level_4","20")); + $parallax_level[] = intval($this->slider->getParam("parallax_level_5","25")); + $parallax_level[] = intval($this->slider->getParam("parallax_level_6","30")); + $parallax_level[] = intval($this->slider->getParam("parallax_level_7","35")); + $parallax_level[] = intval($this->slider->getParam("parallax_level_8","40")); + $parallax_level[] = intval($this->slider->getParam("parallax_level_9","45")); + $parallax_level[] = intval($this->slider->getParam("parallax_level_10","50")); + $parallax_level = implode(',', $parallax_level); + } + + $operations = new RevSliderOperations(); + $arrValues = $operations->getGeneralSettingsValues(); + + $do_delay = $this->slider->getParam("start_js_after_delay","0"); + $do_delay = apply_filters('revslider_add_js_delay', $do_delay); + $do_delay = intval($do_delay); + + $js_to_footer = (isset($arrValues['js_to_footer']) && $arrValues['js_to_footer'] == 'on') ? true : false; + + $slider_type = $this->slider->getParam('slider-type', 'standard'); + + //add inline style into the footer + if($js_to_footer && $this->previewMode == false){ + ob_start(); + } + + $nav_css = ''; + + //ADD SCOPED INLINE STYLES + $this->add_inline_styles(); + + $csizes = RevSliderFunctions::get_responsive_size($this); + ?> + + previewMode == false){ + $js_content = ob_get_contents(); + ob_clean(); + ob_end_clean(); + + $this->rev_inline_js = $js_content; + + add_action('wp_footer', array($this, 'add_inline_js')); + } + + switch($use_spinner){ + case '1': + case '2': + if(!is_admin()) echo ''; + else echo ''; + break; + case '3': + case '4': + if(!is_admin()) echo ''; + else echo ''; + break; + case '0': + case '5': + default: + break; + + } + + if($this->slider->getParam("custom_css", '') !== ''){ + if(!is_admin()){ + ?> + + + + rev_inline_js; + + } + + + /* Provider: - * + * Output Dynamic Inline Styles + */ + public function add_inline_styles(){ + + if(!is_admin()) echo ''."\n"; + else echo $styles.''; + + } + + + /* Provider: - * + * put inline error message in a box. + */ + public function putErrorMessage($message){ + ?> +
        +
        + : +
        +
        + + slider->getParams(); + $params["js_to_body"] = "false"; + + $this->slider->setParams($params); + } + + + /* Provider: - * + * + * put html slider on the html page. + * @param $data - mixed, can be ID ot Alias. + */ + public function putSliderBase($sliderID, $gal_ids = array()){ + + try{ + self::$sliderSerial++; + + $this->slider = new RevSlider(); + if($sliderID !== '-99'){ + $this->slider->initByMixed($sliderID); + }else{ //do default + $this->slider->initByMixed($sliderID); + } + + //modify settings for admin preview mode + if($this->previewMode == true) + $this->modifyPreviewModeSettings(); + + //set slider language + $isWpmlExists = RevSliderWpml::isWpmlExists(); + $useWpml = $this->slider->getParam("use_wpml","off"); + if( $isWpmlExists && $useWpml == "on"){ + if($this->previewMode == false) + $this->sliderLang = RevSliderFunctionsWP::getCurrentLangCode(); + } + + //edit html before slider + $htmlBeforeSlider = ""; + if($this->slider->getParam("load_googlefont","false") == "true"){ + $googleFont = $this->slider->getParam("google_font"); + if(is_array($googleFont)){ + foreach($googleFont as $key => $font){ + + } + }else{ + $htmlBeforeSlider .= RevSliderOperations::getCleanFontImport($googleFont); + } + } + + $gfonts = $this->slider->getParam("google_font",array()); + if(!empty($gfonts) && is_array($gfonts)){ + foreach($gfonts as $gf){ + $htmlBeforeSlider .= RevSliderOperations::getCleanFontImport($gf); + } + } + + //pub js to body handle + if($this->slider->getParam("js_to_body","false") == "true"){ + $operations = new RevSliderOperations(); + $arrValues = $operations->getGeneralSettingsValues(); + $enable_logs = RevSliderFunctions::getVal($arrValues, "enable_logs",'off'); + + if($enable_logs == 'on'){ + $urlIncludeJS = RS_PLUGIN_URL.'public/assets/js/jquery.themepunch.enablelog.js?rev='. RevSliderGlobals::SLIDER_REVISION; + $htmlBeforeSlider .= ''; + } + + $urlIncludeJS = RS_PLUGIN_URL.'public/assets/js/jquery.themepunch.tools.min.js?rev='. RevSliderGlobals::SLIDER_REVISION; + $htmlBeforeSlider .= ''; + $urlIncludeJS = RS_PLUGIN_URL.'public/assets/js/jquery.themepunch.revolution.min.js?rev='. RevSliderGlobals::SLIDER_REVISION; + $htmlBeforeSlider .= ''; + } + + //the initial id can be alias + $sliderID = $this->slider->getID(); + + $bannerWidth = $this->slider->getParam("width",null,RevSlider::VALIDATE_NUMERIC,"Slider Width"); + $bannerHeight = $this->slider->getParam("height",null,RevSlider::VALIDATE_NUMERIC,"Slider Height"); + + $sliderType = $this->slider->getParam("slider_type"); + $slider_type = $this->slider->getParam("slider-type"); + + //set wrapper height + $wrapperHeigh = 0; + $wrapperHeigh += $this->slider->getParam("height"); + + //add thumb height + if($this->slider->getParam('enable_thumbnails', 'off') == 'on'){ + $wrapperHeigh += $this->slider->getParam('thumb_height'); + } + + $this->sliderHtmlID = 'rev_slider_'.$sliderID.'_'.self::$sliderSerial; + $this->sliderHtmlID_wrapper = $this->sliderHtmlID.'_wrapper'; + + $containerStyle = ""; + + $sliderPosition = $this->slider->getParam("position","center"); + + $do_overflow = ''; + + //set position: + if($sliderType != "fullscreen"){ + + switch($sliderPosition){ + case "center": + default: + $containerStyle .= "margin:0px auto;"; + break; + case "left": + $containerStyle .= "float:left;"; + break; + case "right": + $containerStyle .= "float:right;"; + break; + } + + if($this->slider->getParam('main_overflow_hidden','on') == 'on'){ + $do_overflow = ' tp-overflow-hidden'; + } + + } + + //add background color + $backgroundColor = esc_attr(trim($this->slider->getParam('background_color'))); + if(!empty($backgroundColor)) + $containerStyle .= 'background-color:'.$backgroundColor.';'; + + //set padding + $containerStyle .= 'padding:'.esc_attr($this->slider->getParam('padding','0')).'px;'; + + //set margin: + if($sliderType != 'fullscreen'){ + + if($sliderPosition != 'center'){ + $containerStyle .= 'margin-left:'.esc_attr($this->slider->getParam('margin_left', '0', RevSlider::FORCE_NUMERIC)).'px;'; + $containerStyle .= 'margin-right:'.esc_attr($this->slider->getParam('margin_right', '0', RevSlider::FORCE_NUMERIC)).'px;'; + } + + $containerStyle .= 'margin-top:'.esc_attr($this->slider->getParam('margin_top', '0', RevSlider::FORCE_NUMERIC)).'px;'; + $containerStyle .= 'margin-bottom:'.esc_attr($this->slider->getParam('margin_bottom', '0', RevSlider::FORCE_NUMERIC)).'px;'; + } + + //set height and width: + $bannerStyle = 'display:none;'; + + //add background image (to banner style) + $showBackgroundImage = $this->slider->getParam('show_background_image', 'off'); + + if($showBackgroundImage == 'true' || $showBackgroundImage == 'on'){ + $backgroundImage = esc_attr($this->slider->getParam('background_image')); + $backgroundFit = esc_attr($this->slider->getParam('bg_fit', 'cover')); + $backgroundRepeat = esc_attr($this->slider->getParam('bg_repeat', 'no-repeat')); + $backgroundPosition = esc_attr($this->slider->getParam('bg_position', 'center center')); + + if(!empty($backgroundImage)) + $containerStyle .= "background-image:url(".$backgroundImage.");background-repeat:".$backgroundRepeat.";background-size:".$backgroundFit.";background-position:".$backgroundPosition.";"; + } + + //set wrapper and slider class: + $sliderWrapperClass = "rev_slider_wrapper"; + $sliderClass = "rev_slider"; + + switch($sliderType){ + case "responsitive": //@since 5.0: obsolete now, was custom + case "fixed": //@since 5.0: obsolete now + case 'auto': + case 'fullwidth': + $sliderWrapperClass .= " fullwidthbanner-container"; + $sliderClass .= " fullwidthabanner"; + // KRISZTIAN REMOVED SOME LINE + //$bannerStyle .= "max-height:".$bannerHeight."px;height:".$bannerHeight."px;"; + //$containerStyle .= "max-height:".$bannerHeight."px;"; + break; + case 'fullscreen': + $sliderWrapperClass .= " fullscreen-container"; + $sliderClass .= " fullscreenbanner"; + break; + default: + $bannerStyle .= "height:".$bannerHeight."px;width:".$bannerWidth."px;"; + $containerStyle .= "height:".$bannerHeight."px;width:".$bannerWidth."px;"; + break; + } + + $htmlTimerBar = ""; + + $enable_progressbar = $this->slider->getParam('enable_progressbar','on'); + $timerBar = $this->slider->getParam('show_timerbar','top'); + $progress_height = $this->slider->getParam('progress_height','5'); + $progress_opa = $this->slider->getParam('progress_opa','15'); + $progressbar_color = $this->slider->getParam('progressbar_color','#000000'); + + if($enable_progressbar !== 'on' || $slider_type == 'hero') + $timerBar = 'hide'; + + $progress_style = ' style="height: '.esc_attr($progress_height).'px; background-color: '.RevSliderFunctions::hex2rgba($progressbar_color, $progress_opa).';"'; + + switch($timerBar){ + case "top": + $htmlTimerBar = '
        '; + break; + case "bottom": + $htmlTimerBar = '
        '; + break; + case "hide": + $htmlTimerBar = '
        '; + break; + } + + + //check inner / outer border + $paddingType = $this->slider->getParam("padding_type","outer"); + if($paddingType == "inner") + $sliderWrapperClass .= " tp_inner_padding"; + + global $revSliderVersion; + + echo $htmlBeforeSlider."\n"; + echo '
        slider->getParam("show_alternative_type","off"); + if($show_alternate !== 'off'){ + $show_alternate_image = $this->slider->getParam("show_alternate_image",""); + echo ' data-aimg="'.$show_alternate_image.'" '; + if($show_alternate == 'mobile' || $show_alternate == 'mobile-ie8'){ + echo ' data-amobile="enabled" '; + }else{ + echo ' data-amobile="disabled" '; + } + if($show_alternate == 'mobile-ie8' || $show_alternate == 'ie8'){ + echo ' data-aie8="enabled" '; + }else{ + echo ' data-aie8="disabled" '; + } + + } + + echo ' style="'. $containerStyle .'">'."\n"; + + echo ''."\n"; + + echo '
        '."\n"; + + echo $this->putSlides($gal_ids); + echo $htmlTimerBar; + echo '
        '."\n"; + + $this->putJS(); + + echo '
        '; + echo ''; + }catch(Exception $e){ + $message = $e->getMessage(); + $this->putErrorMessage($message); + } + + } + +} + +?> \ No newline at end of file diff --git a/plugins/revslider/includes/slide.class.php b/plugins/revslider/includes/slide.class.php new file mode 100644 index 0000000..e8e8dc6 --- /dev/null +++ b/plugins/revslider/includes/slide.class.php @@ -0,0 +1,2639 @@ + + * @link http://www.themepunch.com/ + * @copyright 2015 ThemePunch + */ + +if( !defined( 'ABSPATH') ) exit(); + +class RevSliderSlide extends RevSliderElementsBase{ + + private $id; + private $sliderID; + private $slideOrder; + + private $imageUrl; + private $imageID; + private $imageThumb; + private $imageFilepath; + private $imageFilename; + + private $params; + private $arrLayers; + private $settings; + private $arrChildren = null; + private $slider; + + private $static_slide = false; + + private $postData; + public $templateID; + + public function __construct(){ + parent::__construct(); + } + + /* Provider: - * + * + * init slide by db record + */ + public function initByData($record){ + + $this->id = $record["id"]; + $this->sliderID = $record["slider_id"]; + $this->slideOrder = @$record["slide_order"]; + + $params = $record["params"]; + $params = (array)json_decode($params); + + $layers = $record["layers"]; + $layers = (array)json_decode($layers); + $layers = RevSliderFunctions::convertStdClassToArray($layers); + + $settings = $record["settings"]; + $settings = (array)json_decode($settings); + + //$layers = $this->translateLayerSizes($layers); + + $imageID = RevSliderFunctions::getVal($params, "image_id"); + + $imgResolution = RevSliderFunctions::getVal($params, 'image_source_type', 'full'); + + //get image url and thumb url + if(!empty($imageID)){ + $this->imageID = $imageID; + + $imageUrl = RevSliderFunctionsWP::getUrlAttachmentImage($imageID, $imgResolution); + if(empty($imageUrl)){ + $imageUrl = RevSliderFunctions::getVal($params, "image"); + + $imgID = RevSliderBase::get_image_id_by_url($imageUrl); + if($imgID !== false){ + $imageUrl = RevSliderFunctionsWP::getUrlAttachmentImage($imgID, $imgResolution); + } + } + + $this->imageThumb = RevSliderFunctionsWP::getUrlAttachmentImage($imageID,RevSliderFunctionsWP::THUMB_MEDIUM); + + }else{ + $imageUrl = RevSliderFunctions::getVal($params, "image"); + + $imgID = RevSliderBase::get_image_id_by_url($imageUrl); + if($imgID !== false){ + $imageUrl = RevSliderFunctionsWP::getUrlAttachmentImage($imgID, $imgResolution); + } + } + + if(is_ssl()){ + $imageUrl = str_replace("http://", "https://", $imageUrl); + } + + //dmp($imageUrl);exit(); + + //set image path, file and url + $this->imageUrl = $imageUrl; + + $this->imageFilepath = RevSliderFunctionsWP::getImagePathFromURL($this->imageUrl); + $realPath = RevSliderFunctionsWP::getPathContent().$this->imageFilepath; + + if(file_exists($realPath) == false || is_file($realPath) == false) + $this->imageFilepath = ""; + + $this->imageFilename = basename($this->imageUrl); + + $this->params = $params; + $this->arrLayers = $layers; + $this->settings = $settings; + + } + + + /* Provider: - * + * set the image by image id + * @since: 5.0 + */ + public function setImageByID($imageID, $size = 'full'){ + $imageUrl = RevSliderFunctionsWP::getUrlAttachmentImage($imageID, $size); + + if(!empty($imageUrl)){ + $this->imageID = $imageID; + $this->imageUrl = $imageUrl; + $this->imageThumb = RevSliderFunctionsWP::getUrlAttachmentImage($imageID,RevSliderFunctionsWP::THUMB_MEDIUM); + $this->imageFilename = basename($this->imageUrl); + $this->imageFilepath = RevSliderFunctionsWP::getImagePathFromURL($this->imageUrl); + $realPath = RevSliderFunctionsWP::getPathContent().$this->imageFilepath; + + if(file_exists($realPath) == false || is_file($realPath) == false) + $this->imageFilepath = ""; + + return true; + } + + return false; + } + + + /* Provider: - * + * change the background_type parameter + * @since: 5.0 + */ + public function setBackgroundType($new_param){ + $this->params['background_type'] = $new_param; + } + + + /* Provider: - * + * + * init by another slide + */ + private function initBySlide(RevSlide $slide){ + + $this->id = "template"; + $this->templateID = $slide->getID(); + $this->sliderID = $slide->getSliderID(); + $this->slideOrder = $slide->getOrder(); + + $this->imageUrl = $slide->getImageUrl(); + $this->imageID = $slide->getImageID(); + $this->imageThumb = $slide->getThumbUrl(); + $this->imageFilepath = $slide->getImageFilepath(); + $this->imageFilename = $slide->getImageFilename(); + + $this->params = $slide->getParams(); + + $this->arrLayers = $slide->getLayers(); + + $this->settings = $slide->getSettings(); + + $this->arrChildren = $slide->getArrChildrenPure(); + } + + + /* Provider: - * + * + * init slide by post data + */ + public function initByStreamData($postData, $slideTemplate, $sliderID, $sourceType, $additions){ + + $this->postData = array(); + $this->postData = (array)$postData; + + //init by global template + $this->initBySlide($slideTemplate); + + switch($sourceType){ + case 'facebook': + $this->initByFacebook($sliderID, $additions); + break; + case 'twitter': + $this->initByTwitter($sliderID, $additions); + break; + case 'instagram': + $this->initByInstagram($sliderID); + break; + case 'flickr': + $this->initByFlickr($sliderID); + break; + case 'youtube': + $this->initByYoutube($sliderID, $additions); + break; + case 'vimeo': + $this->initByVimeo($sliderID, $additions); + break; + default: + RevSliderFunctions::throwError(__("Source must be from Stream", REVSLIDER_TEXTDOMAIN)); + break; + } + } + + + /* Provider: - * + * init the data for facebook + * @since: 5.0 + */ + private function initByFacebook($sliderID, $additions){ + //set some slide params + $this->id = RevSliderFunctions::getVal($this->postData, 'id'); + + $this->params["title"] = RevSliderFunctions::getVal($this->postData, 'name'); + + if(@$this->params['enable_link'] == "true" && @$this->params['link_type'] == "regular"){ + $link = RevSliderFunctions::getVal($this->postData, 'link'); + $this->params["link"] = str_replace(array("%link%", '{{link}}'), $link, $this->params["link"]); + } + + $this->params["state"] = "published"; + + if($this->params["background_type"] == 'image'){ //if image is choosen, use featured image as background + //facebook check which image size is choosen + $img_sizes = RevSliderBase::get_all_image_sizes('facebook'); + + $imgResolution = RevSliderFunctions::getVal($this->params, 'image_source_type', reset($img_sizes)); + $this->imageID = RevSliderFunctions::getVal($this->postData, 'id'); + if(!isset($img_sizes[$imgResolution])) $imgResolution = key($img_sizes); + + if($additions['fb_type'] == 'album'){ + $imgs = RevSliderFunctions::getVal($this->postData, 'images', array()); + $is = array(); + foreach($imgs as $k => $im){ + $is['size-'.$k] = $im->source; + } + + $facebook_images_avail_sizes = array('size-6','size-4','size-3','size-5','size-2','size-1','size-0'); + $this->imageUrl = $this->find_biggest_photo($is, $imgResolution, $facebook_images_avail_sizes); + $this->imageThumb = $this->find_biggest_photo($is, 'size-5', $facebook_images_avail_sizes); + }else{ + $img = $this->get_facebook_timeline_image(); + $this->imageUrl = $img; + $this->imageThumb = $img; + } + + //if(empty($this->imageUrl)) + // return(false); + + if(empty($this->imageUrl)) + $this->imageUrl = RS_PLUGIN_URL.'public/assets/assets/sources/fb.png'; + + if(is_ssl()){ + $this->imageUrl = str_replace("http://", "https://", $this->imageUrl); + } + + $this->imageFilename = basename($this->imageUrl); + } + + //replace placeholders in layers: + $this->setLayersByStreamData($sliderID, 'facebook', $additions); + } + + + /* Provider: - * + * init the data for twitter + * @since: 5.0 + */ + private function initByTwitter($sliderID, $additions){ + //set some slide params + $this->id = RevSliderFunctions::getVal($this->postData, 'id'); + + $this->params["title"] = RevSliderFunctions::getVal($this->postData, 'title'); + + if(@$this->params['enable_link'] == "true" && @$this->params['link_type'] == "regular"){ + $link = 'https://twitter.com/'.$additions['twitter_user'].'/status/'.RevSliderFunctions::getVal($this->postData, 'id_str'); + $this->params["link"] = str_replace(array("%link%", '{{link}}'), $link, $this->params["link"]); + } + + $this->params["state"] = "published"; + + if($this->params["background_type"] == 'trans' || $this->params["background_type"] == 'image' || $this->params["background_type"] == 'streamtwitter' || $this->params["background_type"] == 'streamtwitterboth'){ //if image is choosen, use featured image as background + $img_sizes = RevSliderBase::get_all_image_sizes('twitter'); + + $imgResolution = RevSliderFunctions::getVal($this->params, 'image_source_type', reset($img_sizes)); + $this->imageID = RevSliderFunctions::getVal($this->postData, 'id'); + if(!isset($img_sizes[$imgResolution])) $imgResolution = key($img_sizes); + + $image_url_array = RevSliderFunctions::getVal($this->postData, 'media'); + $image_url_large = RevSliderFunctions::getVal($image_url_array, 'large'); + + $img = RevSliderFunctions::getVal($image_url_large, 'media_url', ''); + $entities = RevSliderFunctions::getVal($this->postData, 'entities'); + + if($img == ''){ + $image_url_array = RevSliderFunctions::getVal($entities, 'media'); + if(is_array($image_url_array) && isset($image_url_array[0])){ + if(is_ssl()){ + $img = RevSliderFunctions::getVal($image_url_array[0], 'media_url_https'); + }else{ + $img = RevSliderFunctions::getVal($image_url_array[0], 'media_url'); + } + + } + } + + $urls = RevSliderFunctions::getVal($entities, 'urls'); + if(is_array($urls) && isset($urls[0])){ + $display_url = RevSliderFunctions::getVal($urls[0], 'display_url'); + + + //check if youtube or vimeo is inside + if(strpos($display_url, 'youtu.be') !== false){ + $raw = explode('/', $display_url); + $yturl = $raw[1]; + $this->params["slide_bg_youtube"] = $yturl; //set video for background video + }elseif(strpos($display_url, 'vimeo.com') !== false){ + $raw = explode('/', $display_url); + $vmurl = $raw[1]; + $this->params["slide_bg_vimeo"] = $vmurl; //set video for background video + } + } + + $image_url_array = RevSliderFunctions::getVal($entities, 'media'); + if(is_array($image_url_array) && isset($image_url_array[0])){ + $video_info = RevSliderFunctions::getVal($image_url_array[0], 'video_info'); + $variants = RevSliderFunctions::getVal($video_info, 'variants'); + if(is_array($variants) && isset($variants[0])){ + $mp4 = RevSliderFunctions::getVal($variants[0], 'url'); + + $this->params["slide_bg_html_mpeg"] = $mp4; //set video for background video + } + } + + $entities = RevSliderFunctions::getVal($this->postData, 'extended_entities'); + if($img == ''){ + $image_url_array = RevSliderFunctions::getVal($entities, 'media'); + if(is_array($image_url_array) && isset($image_url_array[0])){ + if(is_ssl()){ + $img = RevSliderFunctions::getVal($image_url_array[0], 'media_url_https'); + }else{ + $img = RevSliderFunctions::getVal($image_url_array[0], 'media_url'); + } + + } + } + + $urls = RevSliderFunctions::getVal($entities, 'urls'); + if(is_array($urls) && isset($urls[0])){ + $display_url = RevSliderFunctions::getVal($urls[0], 'display_url'); + + + //check if youtube or vimeo is inside + if(strpos($display_url, 'youtu.be') !== false){ + $raw = explode('/', $display_url); + $yturl = $raw[1]; + $this->params["slide_bg_youtube"] = $yturl; //set video for background video + }elseif(strpos($display_url, 'vimeo.com') !== false){ + $raw = explode('/', $display_url); + $vmurl = $raw[1]; + $this->params["slide_bg_vimeo"] = $vmurl; //set video for background video + } + } + + $image_url_array = RevSliderFunctions::getVal($entities, 'media'); + if(is_array($image_url_array) && isset($image_url_array[0])){ + $video_info = RevSliderFunctions::getVal($image_url_array[0], 'video_info'); + $variants = RevSliderFunctions::getVal($video_info, 'variants'); + if(is_array($variants) && isset($variants[0])){ + $mp4 = RevSliderFunctions::getVal($variants[0], 'url'); + $this->params["slide_bg_html_mpeg"] = $mp4; //set video for background video + } + } + + if($img !== ''){ + $this->imageUrl = $img; + $this->imageThumb = $img; + } + + //if(empty($this->imageUrl)) + // return(false); + + if(empty($this->imageUrl)) + $this->imageUrl = RS_PLUGIN_URL.'public/assets/assets/sources/tw.png'; + + if(is_ssl()){ + $this->imageUrl = str_replace("http://", "https://", $this->imageUrl); + } + + $this->imageFilename = basename($this->imageUrl); + } + + //replace placeholders in layers: + $this->setLayersByStreamData($sliderID, 'twitter', $additions); + } + + + /* Provider: - * + * init the data for instagram + * @since: 5.0 + */ + private function initByInstagram($sliderID){ + //set some slide params + $this->id = RevSliderFunctions::getVal($this->postData, 'id'); + + $caption = RevSliderFunctions::getVal($this->postData, 'caption'); + + $this->params["title"] = RevSliderFunctions::getVal($caption, 'text'); + + $link = RevSliderFunctions::getVal($this->postData, 'link'); + + if(@$this->params['enable_link'] == "true" && @$this->params['link_type'] == "regular"){ + $this->params["link"] = str_replace(array("%link%", '{{link}}'), $link, $this->params["link"]); + } + + $this->params["state"] = "published"; + + if($this->params["background_type"] == 'trans' || $this->params["background_type"] == 'image' || $this->params["background_type"] == 'streaminstagram' || $this->params["background_type"] == 'streaminstagramboth'){ //if image is choosen, use featured image as background + $img_sizes = RevSliderBase::get_all_image_sizes('instagram'); + + $imgResolution = RevSliderFunctions::getVal($this->params, 'image_source_type', reset($img_sizes)); + if(!isset($img_sizes[$imgResolution])) $imgResolution = key($img_sizes); + + $this->imageID = RevSliderFunctions::getVal($this->postData, 'id'); + $imgs = RevSliderFunctions::getVal($this->postData, 'images', array()); + $is = array(); + foreach($imgs as $k => $im){ + $is[$k] = $im->url; + } + + $this->imageUrl = $is[$imgResolution]; + $this->imageThumb = $is['thumbnail']; + + //if(empty($this->imageUrl)) + // return(false); + + if(empty($this->imageUrl)) + $this->imageUrl = RS_PLUGIN_URL.'public/assets/assets/sources/ig.png'; + + if(is_ssl()){ + $this->imageUrl = str_replace("http://", "https://", $this->imageUrl); + } + + $this->imageFilename = basename($this->imageUrl); + } + + $videos = RevSliderFunctions::getVal($this->postData, 'videos'); + + if(!empty($videos) && isset($videos->standard_resolution) && isset($videos->standard_resolution->url)){ + $this->params["slide_bg_instagram"] = $videos->standard_resolution->url; //set video for background video + $this->params["slide_bg_html_mpeg"] = $videos->standard_resolution->url; //set video for background video + } + + + //replace placeholders in layers: + $this->setLayersByStreamData($sliderID, 'instagram'); + } + + + /* Provider: - * + * init the data for flickr + * @since: 5.0 + */ + private function initByFlickr($sliderID){ + //set some slide params + $this->id = RevSliderFunctions::getVal($this->postData, 'id'); + $this->params["title"] = RevSliderFunctions::getVal($this->postData, 'title'); + + if(@$this->params['enable_link'] == "true" && @$this->params['link_type'] == "regular"){ + $link = 'http://flic.kr/p/'.$this->base_encode(RevSliderFunctions::getVal($this->postData, 'id')); + $this->params["link"] = str_replace(array("%link%", '{{link}}'), $link, $this->params["link"]); + } + + $this->params["state"] = "published"; + + if($this->params["background_type"] == 'image'){ //if image is choosen, use featured image as background + //facebook check which image size is choosen + $img_sizes = RevSliderBase::get_all_image_sizes('flickr'); + + $imgResolution = RevSliderFunctions::getVal($this->params, 'image_source_type', reset($img_sizes)); + + $this->imageID = RevSliderFunctions::getVal($this->postData, 'id'); + if(!isset($img_sizes[$imgResolution])) $imgResolution = key($img_sizes); + + $is = @array( + 'square' => RevSliderFunctions::getVal($this->postData, 'url_sq'), + 'large-square' => RevSliderFunctions::getVal($this->postData, 'url_q'), + 'thumbnail' => RevSliderFunctions::getVal($this->postData, 'url_t'), + 'small' => RevSliderFunctions::getVal($this->postData, 'url_s'), + 'small-320' => RevSliderFunctions::getVal($this->postData, 'url_n'), + 'medium' => RevSliderFunctions::getVal($this->postData, 'url_m'), + 'medium-640' => RevSliderFunctions::getVal($this->postData, 'url_z'), + 'medium-800' => RevSliderFunctions::getVal($this->postData, 'url_c'), + 'large' => RevSliderFunctions::getVal($this->postData, 'url_l'), + 'original' => RevSliderFunctions::getVal($this->postData, 'url_o') + ); + + $this->imageUrl = @$is[$imgResolution]; + $this->imageThumb = @$is['thumbnail']; + + //if(empty($this->imageUrl)) + // return(false); + + if(empty($this->imageUrl)) + $this->imageUrl = RS_PLUGIN_URL.'public/assets/assets/sources/fr.png'; + + if(is_ssl()){ + $this->imageUrl = str_replace("http://", "https://", $this->imageUrl); + } + + $this->imageFilename = basename($this->imageUrl); + + if(!empty($thumbID)) + $this->setImageByImageURL($thumbID); + + } + //replace placeholders in layers: + $this->setLayersByStreamData($sliderID, 'flickr'); + } + + + /* Provider: - * + * init the data for youtube + * @since: 5.0 + */ + private function initByYoutube($sliderID, $additions){ + + //set some slide params + $snippet = RevSliderFunctions::getVal($this->postData, 'snippet'); + $resource = RevSliderFunctions::getVal($snippet, 'resourceId'); + + if($additions['yt_type'] == 'channel'){ + $link_raw = RevSliderFunctions::getVal($this->postData, 'id'); + $link = RevSliderFunctions::getVal($link_raw, 'videoId'); + }else{ + $link_raw = RevSliderFunctions::getVal($snippet, 'resourceId'); + $link = RevSliderFunctions::getVal($link_raw, 'videoId'); + } + + + if(@$this->params['enable_link'] == "true" && @$this->params['link_type'] == "regular"){ + + if($link !== '') $link = '//youtube.com/watch?v='.$link; + + $this->params["link"] = str_replace(array("%link%", '{{link}}'), $link, $this->params["link"]); + } + + $this->params["slide_bg_youtube"] = $link; //set video for background video + + + switch($additions['yt_type']){ + case 'channel': + $id = RevSliderFunctions::getVal($this->postData, 'id'); + $this->id = RevSliderFunctions::getVal($id, 'videoId'); + break; + case 'playlist': + $this->id = RevSliderFunctions::getVal($resource, 'videoId'); + break; + } + if($this->id == '') $this->id = 'not-found'; + + $this->params["title"] = RevSliderFunctions::getVal($snippet, 'title'); + + $this->params["state"] = "published"; + + if($this->params["background_type"] == 'trans' || $this->params["background_type"] == 'image' || $this->params["background_type"] == 'streamyoutube' || $this->params["background_type"] == 'streamyoutubeboth'){ //if image is choosen, use featured image as background + //facebook check which image size is choosen + $img_sizes = RevSliderBase::get_all_image_sizes('youtube'); + + $imgResolution = RevSliderFunctions::getVal($this->params, 'image_source_type', reset($img_sizes)); + + $this->imageID = RevSliderFunctions::getVal($resource, 'videoId'); + if(!isset($img_sizes[$imgResolution])) $imgResolution = key($img_sizes); + + $thumbs = RevSliderFunctions::getVal($snippet, 'thumbnails'); + $is = array(); + if(!empty($thumbs)){ + foreach($thumbs as $name => $vals){ + $is[$name] = RevSliderFunctions::getVal($vals, 'url'); + } + } + + $this->imageUrl = @$is[$imgResolution]; + $this->imageThumb = @$is['medium']; + + //if(empty($this->imageUrl)) + // return(false); + + if(empty($this->imageUrl)) + $this->imageUrl = RS_PLUGIN_URL.'public/assets/assets/sources/yt.png'; + + if(is_ssl()){ + $this->imageUrl = str_replace("http://", "https://", $this->imageUrl); + } + + $this->imageFilename = basename($this->imageUrl); + + if(!empty($thumbID)) + $this->setImageByImageURL($thumbID); + + } + //replace placeholders in layers: + $this->setLayersByStreamData($sliderID, 'youtube', $additions); + } + + + /* Provider: - * + * init the data for vimeo + * @since: 5.0 + */ + private function initByVimeo($sliderID, $additions){ + + //set some slide params + $this->id = RevSliderFunctions::getVal($this->postData, 'id'); + $this->params["title"] = RevSliderFunctions::getVal($this->postData, 'title'); + + if(@$this->params['enable_link'] == "true" && @$this->params['link_type'] == "regular"){ + $link = RevSliderFunctions::getVal($this->postData, 'url'); + $this->params["link"] = str_replace(array("%link%", '{{link}}'), $link, $this->params["link"]); + } + + $this->params["slide_bg_vimeo"] = RevSliderFunctions::getVal($this->postData, 'url'); + + $this->params["state"] = "published"; + + if($this->params["background_type"] == 'trans' || $this->params["background_type"] == 'image' || $this->params["background_type"] == 'streamvimeo' || $this->params["background_type"] == 'streamvimeoboth'){ //if image is choosen, use featured image as background + //facebook check which image size is choosen + $img_sizes = RevSliderBase::get_all_image_sizes('vimeo'); + $imgResolution = RevSliderFunctions::getVal($this->params, 'image_source_type', reset($img_sizes)); + + $this->imageID = RevSliderFunctions::getVal($this->postData, 'id'); + if(!isset($img_sizes[$imgResolution])) $imgResolution = key($img_sizes); + + $is = array(); + + foreach($img_sizes as $handle => $name){ + $is[$handle] = RevSliderFunctions::getVal($this->postData, $handle); + } + + + $this->imageUrl = @$is[$imgResolution]; + $this->imageThumb = @$is['thumbnail']; + + //if(empty($this->imageUrl)) + // return(false); + + if(empty($this->imageUrl)) + $this->imageUrl = RS_PLUGIN_URL.'public/assets/assets/sources/vm.png'; + + if(is_ssl()){ + $this->imageUrl = str_replace("http://", "https://", $this->imageUrl); + } + + $this->imageFilename = basename($this->imageUrl); + + if(!empty($thumbID)) + $this->setImageByImageURL($thumbID); + + } + //replace placeholders in layers: + + $this->setLayersByStreamData($sliderID, 'vimeo', $additions); + } + + + /* Provider: - * + * replace layer placeholders by stream data + * @since: 5.0 + */ + private function setLayersByStreamData($sliderID, $stream_type, $additions = array()){ + + $attr = $this->return_stream_data($stream_type, $additions); + + foreach($this->arrLayers as $key=>$layer){ + + $text = RevSliderFunctions::getVal($layer, "text"); + + $text = apply_filters('revslider_mod_stream_meta', $text, $sliderID, $stream_type, $this->postData); //option to add your own filter here to modify meta to your likings + + $text = $this->set_stream_data($text, $attr, $stream_type, $additions); + + $layer["text"] = $text; + + //set link actions to the stream data + $layer['layer_action'] = (array) $layer['layer_action']; + if(isset($layer['layer_action'])){ + if(isset($layer['layer_action']['image_link']) && !empty($layer['layer_action']['image_link'])){ + foreach($layer['layer_action']['image_link'] as $jtsk => $jtsval){ + $layer['layer_action']['image_link'][$jtsk] = $this->set_stream_data($layer['layer_action']['image_link'][$jtsk], $attr, $stream_type, $additions, true); + } + } + } + + + $this->arrLayers[$key] = $layer; + } + + //set params to the stream data + for($mi=1;$mi<=10;$mi++){ + $pa = $this->getParam('params_'.$mi, ''); + $pa = $this->set_stream_data($pa, $attr, $stream_type, $additions); + $this->setParam('params_'.$mi, $pa); + } + + } + + + public function set_stream_data($text, $attr, $stream_type, $additions = array(), $is_action = false){ + $img_sizes = RevSliderBase::get_all_image_sizes($stream_type); + + $text = str_replace(array('%title%', '{{title}}'), $attr['title'], $text); + $text = str_replace(array('%excerpt%', '{{excerpt}}'), $attr['excerpt'], $text); + $text = str_replace(array('%alias%', '{{alias}}'), $attr['alias'], $text); + $text = str_replace(array('%content%', '{{content}}'), $attr['content'], $text); + $text = str_replace(array('%link%', '{{link}}'), $attr['link'], $text); + $text = str_replace(array('%date_published%', '{{date_published}}', '%date%', '{{date}}'), $attr['date'], $text); + $text = str_replace(array('%date_modified%', '{{date_modified}}'), $attr['date_modified'], $text); + $text = str_replace(array('%author_name%', '{{author_name}}'), $attr['author_name'], $text); + $text = str_replace(array('%num_comments%', '{{num_comments}}'), $attr['num_comments'], $text); + $text = str_replace(array('%catlist%', '{{catlist}}'), $attr['catlist'], $text); + $text = str_replace(array('%taglist%', '{{taglist}}'), $attr['taglist'], $text); + $text = str_replace(array('%likes%', '{{likes}}'), $attr['likes'], $text); + $text = str_replace(array('%retweet_count%', '{{retweet_count}}'), $attr['retweet_count'], $text); + $text = str_replace(array('%favorite_count%', '{{favorite_count}}'), $attr['favorite_count'], $text); + $text = str_replace(array('%views%', '{{views}}'), $attr['views'], $text); + + if($stream_type == 'twitter' && $is_action === false){ + $text = RevSliderBase::add_wrap_around_url($text); + } + + switch($stream_type){ + case 'facebook': + foreach($img_sizes as $img_handle => $img_name){ + if($additions['fb_type'] == 'album'){ + $text = str_replace(array('%image_url_'.$img_handle.'%', '{{image_url_'.$img_handle.'}}'), @$attr['img_urls'][$img_handle]['url'], $text); + $text = str_replace(array('%image_'.$img_handle.'%', '{{image_'.$img_handle.'}}'), @$attr['img_urls'][$img_handle]['tag'], $text); + }else{ + $text = str_replace(array('%image_url_'.$img_handle.'%', '{{image_url_'.$img_handle.'}}'), @$attr['img_urls']['url'], $text); + $text = str_replace(array('%image_'.$img_handle.'%', '{{image_'.$img_handle.'}}'), @$attr['img_urls']['tag'], $text); + } + } + break; + case 'youtube': + case 'vimeo': + //$text = str_replace(array('%image_url_'.$img_handle.'%', '{{image_url_'.$img_handle.'}}'), @$attr['img_urls'][$img_handle]['url'], $text); + //$text = str_replace(array('%image_'.$img_handle.'%', '{{image_'.$img_handle.'}}'), @$attr['img_urls'][$img_handle]['tag'], $text); + case 'twitter': + case 'instagram': + case 'flickr': + foreach($img_sizes as $img_handle => $img_name){ + $text = str_replace(array('%image_url_'.$img_handle.'%', '{{image_url_'.$img_handle.'}}'), @$attr['img_urls'][$img_handle]['url'], $text); + $text = str_replace(array('%image_'.$img_handle.'%', '{{image_'.$img_handle.'}}'), @$attr['img_urls'][$img_handle]['tag'], $text); + } + break; + } + + return $text; + } + + + public function return_stream_data($stream_type, $additions = array()){ + $attr = array(); + $attr['title'] = ''; + $attr['excerpt'] = ''; + $attr['alias'] = ''; + $attr['content'] = ''; + $attr['link'] = ''; + $attr['date'] = ''; + $attr['date_modified'] = ''; + $attr['author_name'] = ''; + $attr['num_comments'] = ''; + $attr['catlist'] = ''; + $attr['taglist'] = ''; + $attr['likes'] = ''; + $attr['retweet_count'] = ''; + $attr['favorite_count'] = ''; + $attr['views'] = ''; + $attr['img_urls'] = array(); + + $img_sizes = RevSliderBase::get_all_image_sizes($stream_type); + + switch($stream_type){ + case 'facebook': + if($additions['fb_type'] == 'album'){ + $attr['title'] = RevSliderFunctions::getVal($this->postData, 'name'); + $attr['content'] = RevSliderFunctions::getVal($this->postData, 'name'); + $attr['link'] = RevSliderFunctions::getVal($this->postData, 'link'); + $attr['date'] = RevSliderFunctionsWP::convertPostDate(RevSliderFunctions::getVal($this->postData, 'created_time'), true); + $attr['date_modified'] = RevSliderFunctionsWP::convertPostDate(RevSliderFunctions::getVal($this->postData, 'updated_time'), true); + $author_name_raw = RevSliderFunctions::getVal($this->postData, 'from'); + $attr['author_name'] = $author_name_raw->name; + $likes_data = RevSliderFunctions::getVal($this->postData, 'likes'); + $attr['likes'] = count(RevSliderFunctions::getVal($likes_data, 'data')); + $fb_img = RevSliderFunctions::getVal($this->postData, 'images', array()); + foreach($fb_img as $key => $img){ + $attr['img_urls']['size-'.$key] = array( + 'url' => $img->source, + 'tag' => '' + ); + } + }else{ + $attr['title'] = RevSliderFunctions::getVal($this->postData, 'message'); + $attr['content'] = RevSliderFunctions::getVal($this->postData, 'message'); + $post_url = explode('_', RevSliderFunctions::getVal($this->postData, 'id')); + $attr['link'] = 'https://www.facebook.com/'.$additions['fb_user_id'].'/posts/'.$post_url[1]; + $attr['date'] = RevSliderFunctionsWP::convertPostDate(RevSliderFunctions::getVal($this->postData, 'created_time'), true); + $attr['date_modified'] = RevSliderFunctionsWP::convertPostDate(RevSliderFunctions::getVal($this->postData, 'updated_time'), true); + $author_name_raw = RevSliderFunctions::getVal($this->postData, 'from'); + $attr['author_name'] = $author_name_raw->name; + $likes_data = RevSliderFunctions::getVal($this->postData, 'likes'); + $attr['likes'] = count(RevSliderFunctions::getVal($likes_data, 'data')); + $img = $this->get_facebook_timeline_image(); + $attr['img_urls'] = array( + 'url' => $img, + 'tag' => '' + ); + } + break; + case 'twitter': + $user = RevSliderFunctions::getVal($this->postData, 'user'); + $attr['title'] = RevSliderFunctions::getVal($this->postData, 'text'); + $attr['content'] = RevSliderFunctions::getVal($this->postData, 'text'); + $attr['link'] = 'https://twitter.com/'.$additions['twitter_user'].'/status/'.RevSliderFunctions::getVal($this->postData, 'id_str'); + $attr['date'] = RevSliderFunctionsWP::convertPostDate(RevSliderFunctions::getVal($this->postData, 'created_at'), true); + $attr['author_name'] = RevSliderFunctions::getVal($user, 'screen_name'); + $attr['retweet_count'] = RevSliderFunctions::getVal($this->postData, 'retweet_count', '0'); + $attr['favorite_count'] = RevSliderFunctions::getVal($this->postData, 'favorite_count', '0'); + $image_url_array = RevSliderFunctions::getVal($this->postData, 'media'); + $image_url_large = RevSliderFunctions::getVal($image_url_array, 'large'); + $img = RevSliderFunctions::getVal($image_url_large, 'media_url', ''); + if($img == ''){ + $entities = RevSliderFunctions::getVal($this->postData, 'entities'); + $image_url_array = RevSliderFunctions::getVal($entities, 'media'); + if(is_array($image_url_array) && isset($image_url_array[0])){ + if(is_ssl()){ + $img = RevSliderFunctions::getVal($image_url_array[0], 'media_url_https'); + }else{ + $img = RevSliderFunctions::getVal($image_url_array[0], 'media_url'); + } + + $image_url_large = $image_url_array[0]; + } + } + if($img == ''){ + $entities = RevSliderFunctions::getVal($this->postData, 'extended_entities'); + $image_url_array = RevSliderFunctions::getVal($entities, 'media'); + if(is_array($image_url_array) && isset($image_url_array[0])){ + if(is_ssl()){ + $img = RevSliderFunctions::getVal($image_url_array[0], 'media_url_https'); + }else{ + $img = RevSliderFunctions::getVal($image_url_array[0], 'media_url'); + } + + $image_url_large = $image_url_array[0]; + } + } + if($img !== ''){ + $w = RevSliderFunctions::getVal($image_url_large, 'w', ''); + $h = RevSliderFunctions::getVal($image_url_large, 'h', ''); + $attr['img_urls']['large'] = array( + 'url' => $img, + 'tag' => '' + ); + } + break; + case 'instagram': + $caption = RevSliderFunctions::getVal($this->postData, 'caption'); + $user = RevSliderFunctions::getVal($this->postData, 'user'); + + $attr['title'] = RevSliderFunctions::getVal($caption, 'text'); + $attr['content'] = RevSliderFunctions::getVal($caption, 'text'); + $attr['link'] = RevSliderFunctions::getVal($this->postData, 'link'); + $attr['date'] = RevSliderFunctionsWP::convertPostDate(RevSliderFunctions::getVal($this->postData, 'created_time'), true); + $attr['author_name'] = RevSliderFunctions::getVal($user, 'username'); + + $likes_raw = RevSliderFunctions::getVal($this->postData, 'likes'); + $attr['likes'] = RevSliderFunctions::getVal($likes_raw, 'count'); + + $comments_raw = RevSliderFunctions::getVal($this->postData, 'comments'); + $attr['num_comments'] = RevSliderFunctions::getVal($comments_raw, 'count'); + + $inst_img = RevSliderFunctions::getVal($this->postData, 'images', array()); + foreach($inst_img as $key => $img){ + $attr['img_urls'][$key] = array( + 'url' => $img->url, + 'tag' => '' + ); + } + break; + case 'flickr': + $attr['title'] = RevSliderFunctions::getVal($this->postData, 'title'); + $tc = RevSliderFunctions::getVal($this->postData, 'description'); + $attr['content'] = RevSliderFunctions::getVal($tc, '_content'); + $attr['date'] = RevSliderFunctionsWP::convertPostDate(RevSliderFunctions::getVal($this->postData, 'datetaken')); + $attr['author_name'] = RevSliderFunctions::getVal($this->postData, 'ownername'); + $attr['link'] = 'http://flic.kr/p/'.$this->base_encode(RevSliderFunctions::getVal($this->postData, 'id')); + $attr['views'] = RevSliderFunctions::getVal($this->postData, 'views'); + + $attr['img_urls'] = @array( + 'square' => array('url' => RevSliderFunctions::getVal($this->postData, 'url_sq'), 'tag' => ''), + 'large-square' => array('url' => RevSliderFunctions::getVal($this->postData, 'url_q'), 'tag' => ''), + 'thumbnail' => array('url' => RevSliderFunctions::getVal($this->postData, 'url_t'), 'tag' => ''), + 'small' => array('url' => RevSliderFunctions::getVal($this->postData, 'url_s'), 'tag' => ''), + 'small-320' => array('url' => RevSliderFunctions::getVal($this->postData, 'url_n'), 'tag' => ''), + 'medium' => array('url' => RevSliderFunctions::getVal($this->postData, 'url_m'), 'tag' => ''), + 'medium-640' => array('url' => RevSliderFunctions::getVal($this->postData, 'url_z'), 'tag' => ''), + 'medium-800' => array('url' => RevSliderFunctions::getVal($this->postData, 'url_c'), 'tag' => ''), + 'large' => array('url' => RevSliderFunctions::getVal($this->postData, 'url_l'), 'tag' => ''), + 'original' => array('url' => RevSliderFunctions::getVal($this->postData, 'url_o'), 'tag' => '') + ); + break; + case 'youtube': + $snippet = RevSliderFunctions::getVal($this->postData, 'snippet'); + $attr['title'] = RevSliderFunctions::getVal($snippet, 'title'); + $attr['excerpt'] = RevSliderFunctions::getVal($snippet, 'description'); + $attr['content'] = RevSliderFunctions::getVal($snippet, 'description'); + $attr['date'] = RevSliderFunctionsWP::convertPostDate(RevSliderFunctions::getVal($snippet, 'publishedAt')); + + if($additions['yt_type'] == 'channel'){ + $link_raw = RevSliderFunctions::getVal($this->postData, 'id'); + $attr['link'] = RevSliderFunctions::getVal($link_raw, 'videoId'); + if($attr['link'] !== '') $attr['link'] = '//youtube.com/watch?v='.$attr['link']; + }else{ + $link_raw = RevSliderFunctions::getVal($this->postData, 'resourceId'); + $attr['link'] = RevSliderFunctions::getVal($link_raw, 'videoId'); + if($attr['link'] !== '') $attr['link'] = '//youtube.com/watch?v='.$attr['link']; + } + + $thumbs = RevSliderFunctions::getVal($snippet, 'thumbnails'); + $attr['img_urls'] = array(); + if(!empty($thumbs)){ + foreach($thumbs as $name => $vals){ + $attr['img_urls'][$name] = array( + 'url' => RevSliderFunctions::getVal($vals, 'url'), + ); + switch($additions['yt_type']){ + case 'channel': + $attr['img_urls'][$name]['tag'] = ''; + break; + case 'playlist': + $attr['img_urls'][$name]['tag'] = ''; + break; + } + } + } + break; + case 'vimeo': + $attr['title'] = RevSliderFunctions::getVal($this->postData, 'title'); + $attr['excerpt'] = RevSliderFunctions::getVal($this->postData, 'description'); + $attr['content'] = RevSliderFunctions::getVal($this->postData, 'description'); + $attr['date'] = RevSliderFunctionsWP::convertPostDate(RevSliderFunctions::getVal($this->postData, 'upload_date')); + $attr['likes'] = RevSliderFunctions::getVal($this->postData, 'stats_number_of_likes'); + $attr['views'] = RevSliderFunctions::getVal($this->postData, 'stats_number_of_plays'); + $attr['num_comments'] = RevSliderFunctions::getVal($this->postData, 'stats_number_of_comments'); + $attr['link'] = RevSliderFunctions::getVal($this->postData, 'url'); + $attr['author_name'] = RevSliderFunctions::getVal($this->postData, 'user_name'); + + $attr['img_urls'] = array(); + if(!empty($img_sizes)){ + foreach($img_sizes as $name => $vals){ + $attr['img_urls'][$name] = array( + 'url' => RevSliderFunctions::getVal($this->postData, $name), + 'tag' => '' + ); + } + } + + break; + + } + + return $attr; + } + + + public function find_biggest_photo($image_urls, $wanted_size, $avail_sizes){ + if(!$this->isEmpty(@$image_urls[$wanted_size])) return $image_urls[$wanted_size]; + $wanted_size_pos = array_search($wanted_size, $avail_sizes); + for ($i=$wanted_size_pos; $i < 7; $i++) { + if(!$this->isEmpty(@$image_urls[$avail_sizes[$i]])) return $image_urls[$avail_sizes[$i]]; + } + for ($i=$wanted_size_pos; $i >= 0 ; $i--) { + if(!$this->isEmpty(@$image_urls[$avail_sizes[$i]])) return $image_urls[$avail_sizes[$i]]; + } + } + + + public function isEmpty($stringOrArray) { + if(is_array($stringOrArray)) { + foreach($stringOrArray as $value) { + if(!$this->isEmpty($value)) { + return false; + } + } + return true; + } + + return !strlen($stringOrArray); // this properly checks on empty string ('') + } + + + public function get_facebook_timeline_image(){ + $object_id = RevSliderFunctions::getVal($this->postData, 'object_id', ''); + $picture = RevSliderFunctions::getVal($this->postData, 'picture', ''); + if(!empty($object_id)) + return 'https://graph.facebook.com/'.RevSliderFunctions::getVal($this->postData, 'object_id', '').'/picture';//$photo->picture; + elseif (!empty($picture)) { + + $image_url = $this->decode_facebook_url(RevSliderFunctions::getVal($this->postData, 'picture', '')); + $image_url = parse_str(parse_url($image_url, PHP_URL_QUERY), $array); + $image_url = explode('&', $array['url']); + return $image_url[0]; + } + return ''; + } + + + private function decode_facebook_url($url) { + $url = str_replace('u00253A',':',$url); + $url = str_replace('\u00255C\u00252F','/',$url); + $url = str_replace('u00252F','/',$url); + $url = str_replace('u00253F','?',$url); + $url = str_replace('u00253D','=',$url); + $url = str_replace('u002526','&',$url); + return $url; + } + + /* Provider: - * + * Encode the flickr ID for URL (base58) + * + * @since 5.0 + * @param string $num flickr photo id + */ + private function base_encode($num, $alphabet='123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ') { + $base_count = strlen($alphabet); + $encoded = ''; + while ($num >= $base_count) { + $div = $num/$base_count; + $mod = ($num-($base_count*intval($div))); + $encoded = $alphabet[$mod] . $encoded; + $num = intval($div); + } + if ($num) $encoded = $alphabet[$num] . $encoded; + return $encoded; + } + + /* Provider: - * + * + * init slide by post data + */ + public function initByPostData($postData, RevSlide $slideTemplate, $sliderID){ + + $this->postData = $postData; + + $postID = $postData["ID"]; + + $slideTemplateID = get_post_meta($postID, 'slide_template', true); + if($slideTemplateID == '') $slideTemplateID = 'default'; + + if(!empty($slideTemplateID) && is_numeric($slideTemplateID)){ + //init by local template, if fail, init by global (slider) template + try{ + + $slideTemplateLocal = new RevSlide(); + $slideTemplateLocal->initByID($slideTemplateID); + $this->initBySlide($slideTemplateLocal); + } + catch(Exception $e){ + $this->initBySlide($slideTemplate); + } + + }else{ + //init by global template + $this->initBySlide($slideTemplate); + } + + //set some slide params + $this->id = $postID; + $this->params["title"] = RevSliderFunctions::getVal($postData, "post_title"); + + if(@$this->params['enable_link'] == "true" && @$this->params['link_type'] == "regular"){ + $link = get_permalink($postID); + $this->params["link"] = str_replace(array("%link%", '{{link}}'), $link, $this->params["link"]); + $this->params["link"] = str_replace('-', '_REVSLIDER_', $this->params["link"]); + + //process meta tags: + $arrMatches = array(); + preg_match('/%meta:\w+%/', $this->params["link"], $arrMatches); + + foreach($arrMatches as $match){ + $meta = str_replace("%meta:", "", $match); + $meta = str_replace("%","",$meta); + $meta = str_replace('_REVSLIDER_', '-', $meta); + $metaValue = get_post_meta($postID,$meta,true); + $this->params["link"] = str_replace($match,$metaValue,$this->params["link"]); + } + + + $arrMatches = array(); + preg_match('/{{meta:\w+}}/', $this->params["link"], $arrMatches); + + foreach($arrMatches as $match){ + $meta = str_replace("{{meta:", "", $match); + $meta = str_replace("}}","",$meta); + $meta = str_replace('_REVSLIDER_', '-', $meta); + $metaValue = get_post_meta($postID,$meta,true); + $this->params["link"] = str_replace($match,$metaValue,$this->params["link"]); + } + + $this->params["link"] = str_replace('_REVSLIDER_','-',$this->params["link"]); + + } + + $status = $postData["post_status"]; + + if($status == "publish") + $this->params["state"] = "published"; + else + $this->params["state"] = "unpublished"; + + if($this->params["background_type"] == 'image'){ //if image is choosen, use featured image as background + //set image + $thumbID = RevSliderFunctionsWP::getPostThumbID($postID); + + if(!empty($thumbID)) + $this->setImageByImageID($thumbID); + + } + + //replace placeholders in layers: + $this->setLayersByPostData($postData, $sliderID); + } + + + /* Provider: - * + * + * replace layer placeholders by post data + */ + private function setLayersByPostData($postData,$sliderID){ + + $postID = $postData["ID"]; + + $attr = array(); + $attr['title'] = RevSliderFunctions::getVal($postData, "post_title"); + + $excerpt_limit = $this->getSliderParam($sliderID,"excerpt_limit",55,RevSlider::VALIDATE_NUMERIC); + $excerpt_limit = (int)$excerpt_limit; + $attr['excerpt'] = RevSliderFunctionsWP::getExcerptById($postID, $excerpt_limit); + + $attr['alias'] = RevSliderFunctions::getVal($postData, "post_name"); + + $attr['content'] = RevSliderFunctions::getVal($postData, "post_content"); + + $attr['link'] = get_permalink($postID); + + $postDate = RevSliderFunctions::getVal($postData, "post_date_gmt"); + $attr['postDate'] = RevSliderFunctionsWP::convertPostDate($postDate); + + $dateModified = RevSliderFunctions::getVal($postData, "post_modified"); + $attr['dateModified'] = RevSliderFunctionsWP::convertPostDate($dateModified); + + $authorID = RevSliderFunctions::getVal($postData, "post_author"); + $attr['authorName'] = RevSliderFunctionsWP::getUserDisplayName($authorID); + + $postCatsIDs = $postData["post_category"]; + $attr['catlist'] = RevSliderFunctionsWP::getCategoriesHtmlList($postCatsIDs); + $attr['taglist'] = RevSliderFunctionsWP::getTagsHtmlList($postID); + + $ptid = get_post_thumbnail_id($postID); + + $img_sizes = RevSliderBase::get_all_image_sizes(); + $attr['img_urls'] = array(); + foreach($img_sizes as $img_handle => $img_name){ + $featured_image_url = wp_get_attachment_image_src($ptid, $img_handle); + if($featured_image_url !== false){ + $attr['img_urls'][$img_handle] = array( + 'url' => $featured_image_url[0], + 'tag' => '' + ); + } + } + + $numComments = RevSliderFunctions::getVal($postData, "comment_count"); + + foreach($this->arrLayers as $key=>$layer){ + + $text = RevSliderFunctions::getVal($layer, "text"); + $text = apply_filters('revslider_mod_meta', $text, $postID, $postData); //option to add your own filter here to modify meta to your likings + + $text = $this->set_post_data($text, $attr, $postID); + + $layer["text"] = $text; + + $all_actions = RevSliderFunctions::getVal($layer, 'layer_action', array()); + if(!empty($all_actions)){ + $a_image_link = RevSliderFunctions::cleanStdClassToArray(RevSliderFunctions::getVal($all_actions, 'image_link', array())); + if(!empty($a_image_link)){ + foreach($a_image_link as $ik => $ilink){ + $ilink = $this->set_post_data($ilink, $attr, $postID); + $a_image_link[$ik] = $ilink; + } + $layer['layer_action']->image_link = $a_image_link; + } + } + + $this->arrLayers[$key] = $layer; + } + + for($mi=1;$mi<=10;$mi++){ //set params to the post data + $pa = $this->getParam('params_'.$mi, ''); + $pa = $this->set_post_data($pa, $attr, $postID); + $this->setParam('params_'.$mi, $pa); + } + + } + + + public function set_post_data($text, $attr, $post_id){ + $img_sizes = RevSliderBase::get_all_image_sizes(); + + $text = str_replace(array('%title%', '{{title}}'), @$attr['title'], $text); + $text = str_replace(array('%excerpt%', '{{excerpt}}'), @$attr['excerpt'], $text); + $text = str_replace(array('%alias%', '{{alias}}'), @$attr['alias'], $text); + $text = str_replace(array('%content%', '{{content}}'), @$attr['content'], $text); + $text = str_replace(array('%link%', '{{link}}'), @$attr['link'], $text); + $text = str_replace(array('%date%', '{{date}}'), @$attr['postDate'], $text); + $text = str_replace(array('%date_modified%', '{{date_modified}}'), @$attr['dateModified'], $text); + $text = str_replace(array('%author_name%', '{{author_name}}'), @$attr['authorName'], $text); + $text = str_replace(array('%num_comments%', '{{num_comments}}'), @$attr['numComments'], $text); + $text = str_replace(array('%catlist%', '{{catlist}}'), @$attr['catlist'], $text); + $text = str_replace(array('%taglist%', '{{taglist}}'), @$attr['taglist'], $text); + + foreach($img_sizes as $img_handle => $img_name){ + $text = str_replace(array('%featured_image_url_'.$img_handle.'%', '{{featured_image_url_'.$img_handle.'}}'), @$attr['img_urls'][$img_handle]['url'], $text); + $text = str_replace(array('%featured_image_'.$img_handle.'%', '{{featured_image_'.$img_handle.'}}'), @$attr['img_urls'][$img_handle]['tag'], $text); + } + + //process meta tags: + $text = str_replace('-', '_REVSLIDER_', $text); + + $arrMatches = array(); + preg_match_all('/%meta:\w+%/', $text, $arrMatches); + + foreach($arrMatches as $matched){ + + foreach($matched as $match) { + + $meta = str_replace("%meta:", "", $match); + $meta = str_replace("%","",$meta); + $meta = str_replace('_REVSLIDER_', '-', $meta); + $metaValue = get_post_meta($post_id,$meta,true); + + $text = str_replace($match,$metaValue,$text); + } + } + + $arrMatches = array(); + preg_match_all('/{{meta:\w+}}/', $text, $arrMatches); + + foreach($arrMatches as $matched){ + foreach($matched as $match) { + $meta = str_replace("{{meta:", "", $match); + $meta = str_replace("}}","",$meta); + $meta = str_replace('_REVSLIDER_', '-', $meta); + $metaValue = get_post_meta($post_id,$meta,true); + + $text = str_replace($match,$metaValue,$text); + } + } + + $text = str_replace('_REVSLIDER_','-',$text); + + //replace event's template + if(RevSliderEventsManager::isEventsExists()){ + $eventData = RevSliderEventsManager::getEventPostData($post_id); + if(!empty($eventData)){ + foreach($eventData as $eventKey=>$eventValue){ + $eventPlaceholder = "%event_".$eventKey."%"; + $eventPlaceholderNew = "{{event_".$eventKey."}}"; + if($eventKey == 'start_date' || $eventKey == 'end_date') $eventValue = RevSliderFunctionsWP::convertPostDate($eventValue); + $text = str_replace(array($eventPlaceholder, $eventPlaceholderNew), $eventValue , $text); + } + } + } + + return $text; + } + + + /* Provider: - * + * init the slider by id + */ + public function initByID($slideid){ + try{ + if(strpos($slideid, 'static_') !== false){ + $this->static_slide = true; + $sliderID = str_replace('static_', '', $slideid); + + RevSliderFunctions::validateNumeric($sliderID,"Slider ID"); + + $sliderID = $this->db->escape($sliderID); + $record = $this->db->fetch(RevSliderGlobals::$table_static_slides,"slider_id=$sliderID"); + + if(empty($record)){ + try{ + //create a new static slide for the Slider and then use it + $slide_id = $this->createSlide($sliderID,"",true); + + $record = $this->db->fetch(RevSliderGlobals::$table_static_slides,"slider_id=$sliderID"); + + $this->initByData($record[0]); + }catch(Exception $e){} + }else{ + $this->initByData($record[0]); + } + }else{ + RevSliderFunctions::validateNumeric($slideid,"Slide ID"); + $slideid = $this->db->escape($slideid); + $record = $this->db->fetchSingle(RevSliderGlobals::$table_slides,"id=$slideid"); + + $this->initByData($record); + } + }catch(Exception $e){ + $message = $e->getMessage(); + echo $message; + exit; + } + } + + + /* Provider: - * + * Check if Slide Exists with given ID + * @since: 5.0 + */ + public static function isSlideByID($slideid){ + $db = new RevSliderDB(); + try{ + if(strpos($slideid, 'static_') !== false){ + + $sliderID = str_replace('static_', '', $slideid); + + RevSliderFunctions::validateNumeric($sliderID,"Slider ID"); + + $sliderID = $db->escape($sliderID); + $record = $db->fetch(RevSliderGlobals::$table_static_slides,"slider_id=$sliderID"); + + if(empty($record)) return false; + + return true; + + }else{ + + $slideid = $db->escape($slideid); + $record = $db->fetchSingle(RevSliderGlobals::$table_slides,"id=$slideid"); + + if(empty($record)) return false; + + return true; + + } + }catch(Exception $e){ + return false; + } + } + + + /* Provider: - * + * + * init the slider by id + */ + public function initByStaticID($slideid){ + + RevSliderFunctions::validateNumeric($slideid,"Slide ID"); + $slideid = $this->db->escape($slideid); + $record = $this->db->fetchSingle(RevSliderGlobals::$table_static_slides,"id=$slideid"); + + $this->initByData($record); + } + + + /* Provider: - * + * + * getStaticSlide + */ + public function getStaticSlideID($sliderID){ + + RevSliderFunctions::validateNumeric($sliderID,"Slider ID"); + + $sliderID = $this->db->escape($sliderID); + $record = $this->db->fetch(RevSliderGlobals::$table_static_slides,"slider_id=$sliderID"); + + if(empty($record)){ + return false; + }else{ + return $record[0]['id']; + } + } + + + /* Provider: - * + * + * set slide image by image id + */ + private function setImageByImageID($imageID){ + + $imgResolution = RevSliderFunctions::getVal($this->params, 'image_source_type', 'full'); + + $this->imageID = $imageID; + + $this->imageUrl = RevSliderFunctionsWP::getUrlAttachmentImage($imageID, $imgResolution); + $this->imageThumb = RevSliderFunctionsWP::getUrlAttachmentImage($imageID,RevSliderFunctionsWP::THUMB_MEDIUM); + + if(empty($this->imageUrl)) + return(false); + + $this->params["background_type"] = "image"; + + if(is_ssl()){ + $this->imageUrl = str_replace("http://", "https://", $this->imageUrl); + } + + $this->imageFilepath = RevSliderFunctionsWP::getImagePathFromURL($this->imageUrl); + $realPath = RevSliderFunctionsWP::getPathContent().$this->imageFilepath; + + if(file_exists($realPath) == false || is_file($realPath) == false) + $this->imageFilepath = ""; + + $this->imageFilename = basename($this->imageUrl); + } + + + /* Provider: - * + * + * set children array + */ + public function setArrChildren($arrChildren){ + $this->arrChildren = $arrChildren; + } + + + /* Provider: - * + * + * get children array + */ + public function getArrChildren(){ + + $this->validateInited(); + + if($this->arrChildren === null){ + $slider = new RevSlider(); + $slider->initByID($this->sliderID); + $this->arrChildren = $slider->getArrSlideChildren($this->id); + } + + return($this->arrChildren); + } + + /* Provider: - * + * + * return if the slide from post + */ + public function isFromPost(){ + return !empty($this->postData); + } + + + /* Provider: - * + * + * get post data + */ + public function getPostData(){ + return($this->postData); + } + + + /* Provider: - * + * + * get children array as is + */ + public function getArrChildrenPure(){ + return($this->arrChildren); + } + + /* Provider: - * + * + * return if the slide is parent slide + */ + public function isParent(){ + $parentID = $this->getParam("parentid",""); + return(!empty($parentID)); + } + + + /* Provider: - * + * + * get slide language + */ + public function getLang(){ + $lang = $this->getParam("lang","all"); + return($lang); + } + + /* Provider: - * + * + * return parent slide. If the slide is parent, return this slide. + */ + public function getParentSlide(){ + $parentID = $this->getParam("parentid",""); + if(empty($parentID)) + return($this); + + $parentSlide = new RevSlide(); + $parentSlide->initByID($parentID); + return($parentSlide); + } + + /* Provider: - * + * return parent slide id + * @since: 5.0 + */ + public function getParentSlideID(){ + $parentID = $this->getParam("parentid",""); + + return $parentID; + } + + /* Provider: - * + * + * get array of children id's + */ + public function getArrChildrenIDs(){ + $arrChildren = $this->getArrChildren(); + $arrChildrenIDs = array(); + foreach($arrChildren as $child){ + $childID = $child->getID(); + $arrChildrenIDs[] = $childID; + } + + return($arrChildrenIDs); + } + + + /* Provider: - * + * + * get array of children array and languages, the first is current language. + */ + public function getArrChildrenLangs($includeParent = true){ + $this->validateInited(); + $slideID = $this->id; + + if($includeParent == true){ + $lang = $this->getParam("lang","all"); + $arrOutput = array(); + $arrOutput[] = array("slideid"=>$slideID,"lang"=>$lang,"isparent"=>true); + } + + $arrChildren = $this->getArrChildren(); + + foreach($arrChildren as $child){ + $childID = $child->getID(); + $childLang = $child->getParam("lang","all"); + $arrOutput[] = array("slideid"=>$childID,"lang"=>$childLang,"isparent"=>false); + } + + return($arrOutput); + } + + /* Provider: - * + * + * get children language codes (including current slide lang code) + */ + public function getArrChildLangCodes($includeParent = true){ + $arrLangsWithSlideID = $this->getArrChildrenLangs($includeParent); + $arrLangCodes = array(); + foreach($arrLangsWithSlideID as $item){ + $lang = $item["lang"]; + $arrLangCodes[$lang] = $lang; + } + + return($arrLangCodes); + } + + + /* Provider: - * + * get slide ID + */ + public function getID(){ + return($this->id); + } + + + /* Provider: - * + * get slide order + */ + public function getOrder(){ + $this->validateInited(); + return($this->slideOrder); + } + + + /* Provider: - * + * get layers in json format + */ + public function getLayers(){ + $this->validateInited(); + return($this->arrLayers); + } + + /* Provider: - * + * get layers in json format + * since: 5.0 + */ + public function getLayerID_by_unique_id($unique_id){ + $this->validateInited(); + + foreach($this->arrLayers as $l){ + + $uid = RevSliderFunctions::getVal($l, 'unique_id'); + if($uid == $unique_id){ + return RevSliderFunctions::getVal($l, 'attrID'); + } + } + + return ''; + } + + + /* Provider: - * + * save layers to the database + * @since: 5.0 + */ + public function saveLayers(){ + $this->validateInited(); + $table = ($this->static_slide) ? RevSliderGlobals::$table_static_slides : RevSliderGlobals::$table_slides; + $this->db->update($table, array('layers' => json_encode($this->arrLayers)),array('id'=>$this->id)); + } + + /* Provider: - * + * save params to the database + * @since: 5.0 + */ + public function saveParams(){ + $this->validateInited(); + $table = ($this->static_slide) ? RevSliderGlobals::$table_static_slides : RevSliderGlobals::$table_slides; + $this->db->update($table, array('params' => json_encode($this->params)),array('id'=>$this->id)); + } + + + /* Provider: - * + * modify layer links for export + */ + public function getLayersForExport($useDummy = false){ + $this->validateInited(); + $arrLayersNew = array(); + foreach($this->arrLayers as $key=>$layer){ + $imageUrl = RevSliderFunctions::getVal($layer, "image_url"); + if(!empty($imageUrl)) + $layer["image_url"] = RevSliderFunctionsWP::getImagePathFromURL($layer["image_url"]); + + $arrLayersNew[] = $layer; + } + + return($arrLayersNew); + } + + + /* Provider: - * + * get params for export + */ + public function getParamsForExport(){ + $arrParams = $this->getParams(); + $urlImage = RevSliderFunctions::getVal($arrParams, "image"); + if(!empty($urlImage)) + $arrParams["image"] = RevSliderFunctionsWP::getImagePathFromURL($urlImage); + + return($arrParams); + } + + + /* Provider: - * + * normalize layers text, and get layers + */ + public function getLayersNormalizeText(){ + $arrLayersNew = array(); + foreach ($this->arrLayers as $key=>$layer){ + $text = $layer["text"]; + $text = addslashes($text); + $layer["text"] = $text; + $arrLayersNew[] = $layer; + } + + return($arrLayersNew); + } + + + /* Provider: - * + * get slide params + */ + public function getParams(){ + $this->validateInited(); + return($this->params); + } + + + /* Provider: - * + * get slide settings + * @since: 5.0 + */ + public function getSettings(){ + $this->validateInited(); + return($this->settings); + } + + + /* Provider: - * + * get parameter from params array. if no default, then the param is a must! + */ + function getParam($name,$default=null){ + + if($default === null){ + if(!array_key_exists($name, $this->params)) + RevSliderFunctions::throwError("The param $name not found in slide params."); + $default = ""; + } + + return RevSliderFunctions::getVal($this->params, $name,$default); + } + + + /* Provider: - * + * set parameter + * @since: 5.0 + */ + public function setParam($name, $value){ + + $this->params[$name] = $value; + + } + + + /* Provider: - * + * get image filename + */ + public function getImageFilename(){ + return($this->imageFilename); + } + + + /* Provider: - * + * get image filepath + */ + public function getImageFilepath(){ + return($this->imageFilepath); + } + + + /* Provider: - * + * get image url + */ + public function getImageUrl(){ + + return($this->imageUrl); + } + + + /* Provider: - * + * get image id + */ + public function getImageID(){ + return($this->imageID); + } + + /* Provider: - * + * get thumb url + */ + public function getThumbUrl(){ + $thumbUrl = $this->imageUrl; + if(!empty($this->imageThumb)) + $thumbUrl = $this->imageThumb; + + return($thumbUrl); + } + + + /* Provider: - * + * get the slider id + */ + public function getSliderID(){ + return($this->sliderID); + } + + /* Provider: - * + * get slider param + */ + private function getSliderParam($sliderID,$name,$default,$validate=null){ + + if(empty($this->slider)){ + $this->slider = new RevSlider(); + $this->slider->initByID($sliderID); + } + + $param = $this->slider->getParam($name,$default,$validate); + + return($param); + } + + + /* Provider: - * + * validate that the slider exists + */ + private function validateSliderExists($sliderID){ + $slider = new RevSlider(); + $slider->initByID($sliderID); + } + + /* Provider: - * + * validate that the slide is inited and the id exists. + */ + private function validateInited(){ + if(empty($this->id)) + RevSliderFunctions::throwError("The slide is not initialized!!!"); + } + + + /* Provider: - * + * create the slide (from image) + */ + public function createSlide($sliderID,$obj="",$static = false){ + + $imageID = null; + + if(is_array($obj)){ + $urlImage = RevSliderFunctions::getVal($obj, "url"); + $imageID = RevSliderFunctions::getVal($obj, "id"); + }else{ + $urlImage = $obj; + } + + //get max order + $slider = new RevSlider(); + $slider->initByID($sliderID); + $maxOrder = $slider->getMaxOrder(); + $order = $maxOrder+1; + + $params = array(); + if(!empty($urlImage)){ + $params["background_type"] = "image"; + $params["image"] = $urlImage; + if(!empty($imageID)) + $params["image_id"] = $imageID; + + }else{ //create transparent slide + + $params["background_type"] = "trans"; + } + + $jsonParams = json_encode($params); + + + $arrInsert = array( + "params"=>$jsonParams, + "slider_id"=>$sliderID, + "layers"=>"" + ); + + if(!$static) + $arrInsert["slide_order"] = $order; + + if(!$static) + $slideID = $this->db->insert(RevSliderGlobals::$table_slides, $arrInsert); + else + $slideID = $this->db->insert(RevSliderGlobals::$table_static_slides, $arrInsert); + + return($slideID); + } + + /* Provider: - * + * + * update slide image from data + */ + public function updateSlideImageFromData($data){ + + $sliderID = RevSliderFunctions::getVal($data, "slider_id"); + $slider = new RevSlider(); + $slider->initByID($sliderID); + + $slideID = RevSliderFunctions::getVal($data, "slide_id"); + $urlImage = RevSliderFunctions::getVal($data, "url_image"); + RevSliderFunctions::validateNotEmpty($urlImage); + $imageID = RevSliderFunctions::getVal($data, "image_id"); + if($slider->isSlidesFromPosts()){ + + if(!empty($imageID)) + RevSliderFunctionsWP::updatePostThumbnail($slideID, $imageID); + + }elseif($slider->isSlidesFromStream() !== false){ + //do nothing + }else{ + $this->initByID($slideID); + + $arrUpdate = array(); + $arrUpdate["image"] = $urlImage; + $arrUpdate["image_id"] = $imageID; + + $this->updateParamsInDB($arrUpdate); + } + + return($urlImage); + } + + + + /* Provider: - * + * + * update slide parameters in db + */ + protected function updateParamsInDB($arrUpdate = array()){ + $this->validateInited(); + $this->params = array_merge($this->params,$arrUpdate); + $jsonParams = json_encode($this->params); + + $arrDBUpdate = array("params"=>$jsonParams); + + $this->db->update(RevSliderGlobals::$table_slides,$arrDBUpdate,array("id"=>$this->id)); + } + + + /* Provider: - * + * + * update current layers in db + */ + protected function updateLayersInDB($arrLayers = null){ + $this->validateInited(); + + if($arrLayers === null) + $arrLayers = $this->arrLayers; + + $jsonLayers = json_encode($arrLayers); + $arrDBUpdate = array("layers"=>$jsonLayers); + + $this->db->update(RevSliderGlobals::$table_slides,$arrDBUpdate,array("id"=>$this->id)); + } + + + /* Provider: - * + * + * update parent slideID + */ + public function updateParentSlideID($parentID){ + $arrUpdate = array(); + $arrUpdate["parentid"] = $parentID; + $this->updateParamsInDB($arrUpdate); + } + + + /* Provider: - * + * + * sort layers by order + */ + private function sortLayersByOrder($layer1,$layer2){ + $layer1 = (array)$layer1; + $layer2 = (array)$layer2; + + $order1 = RevSliderFunctions::getVal($layer1, "order",1); + $order2 = RevSliderFunctions::getVal($layer2, "order",2); + if($order1 == $order2) + return(0); + + return($order1 > $order2); + } + + + /* Provider: - * + * + * go through the layers and fix small bugs if exists + */ + private function normalizeLayers($arrLayers){ + + usort($arrLayers,array($this,"sortLayersByOrder")); + + $arrLayersNew = array(); + foreach ($arrLayers as $key=>$layer){ + + $layer = (array)$layer; + + //set type + $type = RevSliderFunctions::getVal($layer, "type","text"); + $layer["type"] = $type; + + //normalize position: + if(is_object($layer["left"])){ + foreach($layer["left"] as $key => $val){ + $layer["left"]->$key = round($val); + } + }else{ + $layer["left"] = round($layer["left"]); + } + if(is_object($layer["top"])){ + foreach($layer["top"] as $key => $val){ + $layer["top"]->$key = round($val); + } + }else{ + $layer["top"] = round($layer["top"]); + } + + //unset order + unset($layer["order"]); + + //modify text + $layer["text"] = stripcslashes($layer["text"]); + + $arrLayersNew[] = $layer; + } + + return($arrLayersNew); + } + + + + /* Provider: - * + * + * normalize params + */ + private function normalizeParams($params){ + + $urlImage = RevSliderFunctions::getVal($params, "image_url"); + + //init the id if absent + $params["image_id"] = RevSliderFunctions::getVal($params, "image_id"); + + $params["image"] = $urlImage; + unset($params["image_url"]); + + if(isset($params["video_description"])) + $params["video_description"] = RevSliderFunctions::normalizeTextareaContent($params["video_description"]); + + return($params); + } + + + /* Provider: - * + * + * update slide from data + * @param $data + */ + public function updateSlideFromData($data){ + + $slideID = RevSliderFunctions::getVal($data, "slideid"); + $this->initByID($slideID); + + //treat params + $params = RevSliderFunctions::getVal($data, "params"); + $params = $this->normalizeParams($params); + + //preserve old data that not included in the given data + $params = array_merge($this->params,$params); + + //treat layers + $layers = RevSliderFunctions::getVal($data, "layers"); + + if(gettype($layers) == "string"){ + $layersStrip = stripslashes($layers); + $layersDecoded = json_decode($layersStrip); + if(empty($layersDecoded)) + $layersDecoded = json_decode($layers); + + $layers = RevSliderFunctions::convertStdClassToArray($layersDecoded); + } + + if(empty($layers) || gettype($layers) != "array") + $layers = array(); + + $layers = $this->normalizeLayers($layers); + + + $settings = RevSliderFunctions::getVal($data, "settings"); + + $arrUpdate = array(); + $arrUpdate["layers"] = json_encode($layers); + $arrUpdate["params"] = json_encode($params); + $arrUpdate["settings"] = json_encode($settings); + + $this->db->update(RevSliderGlobals::$table_slides,$arrUpdate,array("id"=>$this->id)); + + //RevSliderOperations::updateDynamicCaptions(); + } + + + /* Provider: - * + * + * update slide from data + * @param $data + */ + public function updateStaticSlideFromData($data){ + + $slideID = RevSliderFunctions::getVal($data, "slideid"); + $this->initByStaticID($slideID); + + //treat layers + $layers = RevSliderFunctions::getVal($data, "layers"); + + if(gettype($layers) == "string"){ + $layersStrip = stripslashes($layers); + $layersDecoded = json_decode($layersStrip); + if(empty($layersDecoded)) + $layersDecoded = json_decode($layers); + + $layers = RevSliderFunctions::convertStdClassToArray($layersDecoded); + } + + if(empty($layers) || gettype($layers) != "array") + $layers = array(); + + $layers = $this->normalizeLayers($layers); + + $settings = RevSliderFunctions::getVal($data, "settings"); + + + $arrUpdate = array(); + $arrUpdate["layers"] = json_encode($layers); + $arrUpdate["settings"] = json_encode($settings); + + $this->db->update(RevSliderGlobals::$table_static_slides,$arrUpdate,array("id"=>$this->id)); + + //RevSliderOperations::updateDynamicCaptions(); + } + + + + /* Provider: - * + * + * delete slide by slideid + */ + public function deleteSlide(){ + $this->validateInited(); + + $this->db->delete(RevSliderGlobals::$table_slides,"id='".$this->id."'"); + } + + + /* Provider: - * + * + * delete slide children + */ + public function deleteChildren(){ + $this->validateInited(); + $arrChildren = $this->getArrChildren(); + foreach($arrChildren as $child) + $child->deleteSlide(); + } + + + /* Provider: - * + * + * delete slide from data + */ + public function deleteSlideFromData($data){ + + $sliderID = RevSliderFunctions::getVal($data, "sliderID"); + $slider = new RevSlider(); + $slider->initByID($sliderID); + + //delete slide + $slideID = RevSliderFunctions::getVal($data, "slideID"); + $this->initByID($slideID); + $this->deleteChildren(); + $this->deleteSlide(); + + } + + + /* Provider: - * + * set params from client + */ + public function setParams($params){ + $params = $this->normalizeParams($params); + $this->params = $params; + } + + + /* Provider: - * + * + * set layers from client + */ + public function setLayers($layers){ + $layers = $this->normalizeLayers($layers); + $this->arrLayers = $layers; + + } + + + + /* Provider: - * + * set layers from client, do not normalize as this results in loosing the order + * @since: 5.0 + */ + public function setLayersRaw($layers){ + $this->arrLayers = $layers; + } + + + /* Provider: - * + * update the title of a Slide by Slide ID + * @since: 5.0 + **/ + public function updateTitleByID($data){ + if(!isset($data['slideID']) || !isset($data['slideTitle'])) return false; + + $this->initByID($data['slideID']); + + $arrUpdate = array(); + $arrUpdate['title'] = $data['slideTitle']; + + $this->updateParamsInDB($arrUpdate); + + } + + /* Provider: - * + * toggle slide state from data + **/ + public function toggleSlideStatFromData($data){ + + $sliderID = RevSliderFunctions::getVal($data, "slider_id"); + $slider = new RevSlider(); + $slider->initByID($sliderID); + + $slideID = RevSliderFunctions::getVal($data, "slide_id"); + + if($slider->isSlidesFromPosts()){ + $postData = RevSliderFunctionsWP::getPost($slideID); + + $oldState = $postData["post_status"]; + $newState = ($oldState == RevSliderFunctionsWP::STATE_PUBLISHED)?RevSliderFunctionsWP::STATE_DRAFT:RevSliderFunctionsWP::STATE_PUBLISHED; + + //update the state in wp + RevSliderFunctionsWP::updatePostState($slideID, $newState); + + //return state: + $newState = ($newState == RevSliderFunctionsWP::STATE_PUBLISHED)?"published":"unpublished"; + + }else{ + $this->initByID($slideID); + + $state = $this->getParam("state","published"); + $newState = ($state == "published")?"unpublished":"published"; + + $arrUpdate = array(); + $arrUpdate["state"] = $newState; + + $this->updateParamsInDB($arrUpdate); + + } + + return($newState); + } + + + /* Provider: - * + * + * updatye slide language from data + */ + private function updateLangFromData($data){ + + $slideID = RevSliderFunctions::getVal($data, "slideid"); + $this->initByID($slideID); + + $lang = RevSliderFunctions::getVal($data, "lang"); + + $arrUpdate = array(); + $arrUpdate["lang"] = $lang; + $this->updateParamsInDB($arrUpdate); + + $response = array(); + $response["url_icon"] = RevSliderWpml::getFlagUrl($lang); + $response["title"] = RevSliderWpml::getLangTitle($lang); + $response["operation"] = "update"; + + return($response); + } + + + /* Provider: - * + * + * add language (add slide that connected to current slide) from data + */ + private function addLangFromData($data){ + $sliderID = RevSliderFunctions::getVal($data, "sliderid"); + $slideID = RevSliderFunctions::getVal($data, "slideid"); + $lang = RevSliderFunctions::getVal($data, "lang"); + + //duplicate slide + $slider = new RevSlider(); + $slider->initByID($sliderID); + $newSlideID = $slider->duplicateSlide($slideID); + + //update new slide + $this->initByID($newSlideID); + + $arrUpdate = array(); + $arrUpdate["lang"] = $lang; + $arrUpdate["parentid"] = $slideID; + $this->updateParamsInDB($arrUpdate); + + $urlIcon = RevSliderWpml::getFlagUrl($lang); + $title = RevSliderWpml::getLangTitle($lang); + + $newSlide = new RevSlide(); + $newSlide->initByID($slideID); + $arrLangCodes = $newSlide->getArrChildLangCodes(); + $isAll = RevSliderWpml::isAllLangsInArray($arrLangCodes); + + $html = "
      • + +
        +
      • "; + + $response = array(); + $response["operation"] = "add"; + $response["isAll"] = $isAll; + $response["html"] = $html; + + return($response); + } + + + /* Provider: - * + * + * delete slide from language menu data + */ + private function deleteSlideFromLangData($data){ + + $slideID = RevSliderFunctions::getVal($data, "slideid"); + $this->initByID($slideID); + $this->deleteSlide(); + + $response = array(); + $response["operation"] = "delete"; + return($response); + } + + + /* Provider: - * + * + * add or update language from data + */ + public function doSlideLangOperation($data){ + + $operation = RevSliderFunctions::getVal($data, "operation"); + switch($operation){ + case "add": + $response = $this->addLangFromData($data); + break; + case "delete": + $response = $this->deleteSlideFromLangData($data); + break; + case "update": + default: + $response = $this->updateLangFromData($data); + break; + } + + return($response); + } + + /* Provider: - * + * + * get thumb url + */ + public function getUrlImageThumb(){ + + //get image url by thumb + if(!empty($this->imageID)){ + $urlImage = RevSliderFunctionsWP::getUrlAttachmentImage($this->imageID, RevSliderFunctionsWP::THUMB_MEDIUM); + }else{ + //get from cache + if(!empty($this->imageFilepath)){ + $urlImage = RevSliderBase::getImageUrl($this->imageFilepath,200,100,true); + } + else + $urlImage = $this->imageUrl; + } + + if(empty($urlImage)) + $urlImage = $this->imageUrl; + + return($urlImage); + } + + public function get_image_attributes($slider_type){ + + $params = $this->params; + + $bgType = RevSliderBase::getVar($params, "background_type","transparent"); + $bgColor = RevSliderBase::getVar($params, "slide_bg_color","transparent"); + + $bgFit = RevSliderBase::getVar($params, "bg_fit","cover"); + $bgFitX = intval(RevSliderBase::getVar($params, "bg_fit_x","100")); + $bgFitY = intval(RevSliderBase::getVar($params, "bg_fit_y","100")); + + $bgPosition = RevSliderBase::getVar($params, "bg_position","center top"); + $bgPositionX = intval(RevSliderBase::getVar($params, "bg_position_x","0")); + $bgPositionY = intval(RevSliderBase::getVar($params, "bg_position_y","0")); + + $bgRepeat = RevSliderBase::getVar($params, "bg_repeat","no-repeat"); + + $bgStyle = ' '; + if($bgFit == 'percentage'){ + $bgStyle .= "background-size: ".$bgFitX.'% '.$bgFitY.'%;'; + }else{ + $bgStyle .= "background-size: ".$bgFit.";"; + } + if($bgPosition == 'percentage'){ + $bgStyle .= "background-position: ".$bgPositionX.'% '.$bgPositionY.'%;'; + }else{ + $bgStyle .= "background-position: ".$bgPosition.";"; + } + $bgStyle .= "background-repeat: ".$bgRepeat.";"; + + $thumb = ''; + + switch($slider_type){ + case 'gallery': + $imageID = RevSliderBase::getVar($params, "image_id"); + if(empty($imageID)){ + $thumb = RevSliderBase::getVar($params, "image"); + + $imgID = RevSliderBase::get_image_id_by_url($thumb); + if($imgID !== false){ + $thumb = RevSliderFunctionsWP::getUrlAttachmentImage($imgID, RevSliderFunctionsWP::THUMB_MEDIUM); + } + }else{ + $thumb = RevSliderFunctionsWP::getUrlAttachmentImage($imageID,RevSliderFunctionsWP::THUMB_MEDIUM); + } + break; + case 'posts': + $thumb = RS_PLUGIN_URL.'public/assets/assets/sources/post.png'; + $bgStyle = 'background-size: cover;'; + break; + case 'facebook': + $thumb = RS_PLUGIN_URL.'public/assets/assets/sources/fb.png'; + $bgStyle = 'background-size: cover;'; + break; + case 'twitter': + $thumb = RS_PLUGIN_URL.'public/assets/assets/sources/tw.png'; + $bgStyle = 'background-size: cover;'; + break; + case 'instagram': + $thumb = RS_PLUGIN_URL.'public/assets/assets/sources/ig.png'; + $bgStyle = 'background-size: cover;'; + break; + case 'flickr': + $thumb = RS_PLUGIN_URL.'public/assets/assets/sources/fr.png'; + $bgStyle = 'background-size: cover;'; + break; + case 'youtube': + $thumb = RS_PLUGIN_URL.'public/assets/assets/sources/yt.png'; + $bgStyle = 'background-size: cover;'; + break; + case 'vimeo': + $thumb = RS_PLUGIN_URL.'public/assets/assets/sources/vm.png'; + $bgStyle = 'background-size: cover;'; + break; + } + + if($thumb == '') $thumb = RevSliderBase::getVar($params, "image"); + + $bg_fullstyle =''; + $bg_extraClass=''; + $data_urlImageForView=''; + + if($bgType=="image" || $bgType=="streamvimeo" || $bgType=="streamyoutube" || $bgType=="streaminstagram") { + $data_urlImageForView = $thumb; + $bg_fullstyle = $bgStyle; + } + + if($bgType=="solid") + $bg_fullstyle ='background-color:'.$bgColor.';'; + + if($bgType=="trans" || $bgType=="transparent") + $bg_extraClass = 'mini-transparent'; + + return array( + 'url' => $data_urlImageForView, + 'class' => $bg_extraClass, + 'style' => $bg_fullstyle + ); + } + + /* Provider: - * + * + * replace image url's among slide image and layer images + */ + public function replaceImageUrls($urlFrom, $urlTo){ + + $this->validateInited(); + + $isUpdated = false; + + $urlImage = RevSliderFunctions::getVal($this->params, "image"); + if(strpos($urlImage, $urlFrom) !== false){ + $imageNew = str_replace($urlFrom, $urlTo, $urlImage); + $this->params["image"] = $imageNew; + $isUpdated = true; + } + + if($isUpdated == true) + $this->updateParamsInDB(); + + + // update image url in layers + $isUpdated = false; + foreach($this->arrLayers as $key=>$layer){ + $type = RevSliderFunctions::getVal($layer, "type"); + if($type == "image"){ + $urlImage = RevSliderFunctions::getVal($layer, "image_url"); + if(strpos($urlImage, $urlFrom) !== false){ + $newUrlImage = str_replace($urlFrom, $urlTo, $urlImage); + $this->arrLayers[$key]["image_url"] = $newUrlImage; + $isUpdated = true; + } + } + } + + if($isUpdated == true) + $this->updateLayersInDB(); + + } + + + + /* Provider: - * + * replace all css classes in all layers + * @since: 5.0 + */ + public function replaceCssClass($css_from, $css_to){ + + $this->validateInited(); + + + $isUpdated = false; + + if(!empty($this->arrLayers)){ + foreach($this->arrLayers as $key=>$layer){ + $caption = RevSliderFunctions::getVal($layer, 'style'); + if($caption == $css_from){ + $this->arrLayers[$key]['style'] = $css_to; + $isUpdated = true; + } + } + } + + if($isUpdated == true) + $this->updateLayersInDB(); + } + + + /* Provider: - * + * reset Slide to certain values + * @since: 5.0 + */ + public function reset_slide_values($values){ + $this->validateInited(); + + foreach($values as $key => $val){ + $this->params[esc_attr($key)] = esc_attr($val); + } + + $this->updateParamsInDB(); + } + + + /* Provider: - * + * return if current Slide is static Slide + */ + public function isStaticSlide(){ + return $this->static_slide; + } + + /* Provider: - * + * Returns all layer attributes that can have more than one setting due to desktop, tablet, mobile sizes + * @since: 5.0 + */ + public static function translateIntoSizes(){ + + return array( + 'align_hor', + 'align_vert', + 'top', + 'left', + 'font-size', + 'line-height', + 'font-weight', + 'color', + 'max_width', + 'max_height', + 'whitespace', + 'video_height', + 'video_width', + 'scaleX', + 'scaleY' + ); + + } + + + /* Provider: - * + * Translates all values that need more than one setting + * @since: 5.0 + */ + public function translateLayerSizes($layers){ + $translation = self::translateIntoSizes(); + + if(!empty($layers)){ + foreach($layers as $l => $layer){ + foreach($translation as $trans){ + if(isset($layers[$l][$trans])){ + if(!is_array($layers[$l][$trans])){ + $layers[$l][$trans] = array('desktop' => $layers[$l][$trans]); + } + } + } + } + } + + return $layers; + } +} + +/* Provider: - * + * old classname extends new one (old classnames will be obsolete soon) + * @since: 5.0 + **/ +class RevSlide extends RevSliderSlide {} +?> \ No newline at end of file diff --git a/plugins/revslider/includes/slider.class.php b/plugins/revslider/includes/slider.class.php new file mode 100644 index 0000000..bdbe7c0 --- /dev/null +++ b/plugins/revslider/includes/slider.class.php @@ -0,0 +1,2707 @@ + + * @link http://www.themepunch.com/ + * @copyright 2015 ThemePunch + */ + +if( !defined( 'ABSPATH') ) exit(); + +class RevSliderSlider extends RevSliderElementsBase{ + + const DEFAULT_POST_SORTBY = "ID"; + const DEFAULT_POST_SORTDIR = "DESC"; + + const VALIDATE_NUMERIC = "numeric"; + const VALIDATE_EMPTY = "empty"; + const FORCE_NUMERIC = "force_numeric"; + + const SLIDER_TYPE_GALLERY = "gallery"; + const SLIDER_TYPE_POSTS = "posts"; + const SLIDER_TYPE_TEMPLATE = "template"; + const SLIDER_TYPE_ALL = "all"; + + private $slider_version = 5; + private $id; + private $title; + private $alias; + private $arrParams; + private $settings; + private $arrSlides = null; + + public function __construct(){ + parent::__construct(); + } + + + /* Provider: - * + * + * return if the slider is inited or not + */ + public function isInited(){ + if(!empty($this->id)) + return(true); + + return(false); + } + + + /* Provider: - * + * + * validate that the slider is inited. if not - throw error + */ + private function validateInited(){ + if(empty($this->id)) + RevSliderFunctions::throwError("The slider is not initialized!"); + } + + /* Provider: - * + * + * init slider by db data + * + */ + public function initByDBData($arrData){ + + $this->id = $arrData["id"]; + $this->title = $arrData["title"]; + $this->alias = $arrData["alias"]; + + $settings = $arrData["settings"]; + $settings = (array)json_decode($settings); + + $this->settings = $settings; + + + $params = $arrData["params"]; + $params = (array)json_decode($params); + $params = RevSliderBase::translate_settings_to_v5($params); + + $this->arrParams = $params; + } + + + /* Provider: - * + * + * init the slider object by database id + */ + public function initByID($sliderID){ + RevSliderFunctions::validateNumeric($sliderID,"Slider ID"); + $sliderID = $this->db->escape($sliderID); + + try{ + $sliderData = $this->db->fetchSingle(RevSliderGlobals::$table_sliders,"id=$sliderID"); + }catch(Exception $e){ + $message = $e->getMessage(); + echo $message; + exit; + } + + $this->initByDBData($sliderData); + } + + /* Provider: - * + * + * init slider by alias + */ + public function initByAlias($alias){ + $alias = $this->db->escape($alias); + + try{ + $where = "alias='$alias' AND `type` != 'template'"; + + $sliderData = $this->db->fetchSingle(RevSliderGlobals::$table_sliders,$where); + + }catch(Exception $e){ + $arrAliases = $this->getAllSliderAliases(); + $strAliases = ""; + + if(!empty($arrAliases)){ + $arrAliases = array_slice($arrAliases, 0, 6); //show 6 other, will be enough + + $strAliases = "'".implode("' or '", $arrAliases)."'"; + } + + $errorMessage = 'Slider with alias '.esc_attr($alias).' not found.'; + if(!empty($strAliases)) + $errorMessage .= '
        Maybe you mean: '.$strAliases; + + RevSliderFunctions::throwError($errorMessage); + } + + $this->initByDBData($sliderData); + } + + + /* Provider: - * + * + * init by id or alias + */ + public function initByMixed($mixed){ + if(is_numeric($mixed)) + $this->initByID($mixed); + else + $this->initByAlias($mixed); + } + + + /* Provider: - * + * + * get data functions + */ + public function getTitle(){ + return($this->title); + } + + public function getID(){ + return($this->id); + } + + public function getParams(){ + return($this->arrParams); + } + + /* Provider: - + * return Slider settings + * @since: 5.0 + */ + public function getSettings(){ + return($this->settings); + } + + /* Provider: - + * return true if slider is favorite + * @since: 5.0 + */ + public function isFavorite(){ + if(!empty($this->settings)){ + if(isset($this->settings['favorite']) && $this->settings['favorite'] == 'true') return true; + } + + return false; + } + + /* Provider: - * + * + * set slider params + */ + public function setParams($arrParams){ + $this->arrParams = $arrParams; + } + + + /* Provider: - * + * + * get parameter from params array. if no default, then the param is a must! + */ + function getParam($name,$default=null,$validateType = null,$title=""){ + + if($default === null){ + //if(!array_key_exists($name, $this->arrParams)) + // RevSliderFunctions::throwError("The param $name not found in slider params."); + + $default = ""; + } + + $value = RevSliderFunctions::getVal($this->arrParams, $name,$default); + + //validation: + switch($validateType){ + case self::VALIDATE_NUMERIC: + case self::VALIDATE_EMPTY: + $paramTitle = !empty($title)?$title:$name; + if($value !== "0" && $value !== 0 && empty($value)) + RevSliderFunctions::throwError("The param $paramTitle should not be empty."); + break; + case self::VALIDATE_NUMERIC: + $paramTitle = !empty($title)?$title:$name; + if(!is_numeric($value)) + RevSliderFunctions::throwError("The param $paramTitle should be numeric. Now it's: $value"); + break; + case self::FORCE_NUMERIC: + if(!is_numeric($value)){ + $value = 0; + if(!empty($default)) + $value = $default; + } + break; + } + + return $value; + } + + public function getAlias(){ + return($this->alias); + } + + /* Provider: - * + * get combination of title (alias) + */ + public function getShowTitle(){ + $showTitle = $this->title; + return($showTitle); + } + + /* Provider: - * + * + * get slider shortcode + */ + public function getShortcode(){ + $shortCode = '[rev_slider alias="'.$this->alias.'"]'; + return($shortCode); + } + + + /* Provider: - * + * + * check if alias exists in DB + */ + public function isAliasExistsInDB($alias){ + $alias = $this->db->escape($alias); + + $where = "alias='$alias'"; + if(!empty($this->id)){ + $id = $this->db->escape($this->id); + + $where .= " and id != '".$id."' AND `type` != 'template'"; + } + + $response = $this->db->fetch(RevSliderGlobals::$table_sliders,$where); + return(!empty($response)); + + } + + + /* Provider: - * + * + * check if alias exists in DB + */ + public static function isAliasExists($alias){ + global $wpdb; + + $response = $wpdb->get_row($wpdb->prepare("SELECT * FROM ".RevSliderGlobals::$table_sliders." WHERE alias = %s AND `type` != 'template'", $alias)); + + return(!empty($response)); + } + + + /* Provider: - * + * + * validate settings for add + */ + private function validateInputSettings($title,$alias,$params){ + RevSliderFunctions::validateNotEmpty($title,"title"); + RevSliderFunctions::validateNotEmpty($alias,"alias"); + + if($this->isAliasExistsInDB($alias)) + RevSliderFunctions::throwError("Some other slider with alias '$alias' already exists"); + + } + + + /* Provider: - * + * set new hero slide id for the Slider + * @since: 5.0 + */ + public function setHeroSlide($data){ + $sliderID = RevSliderFunctions::getVal($data, "slider_id"); + RevSliderFunctions::validateNotEmpty($sliderID,"Slider ID"); + $this->initByID($sliderID); + + $new_slide_id = RevSliderFunctions::getVal($data, "slide_id"); + RevSliderFunctions::validateNotEmpty($new_slide_id,"Hero Slide ID"); + + $this->updateParam(array('hero_active' => intval($new_slide_id))); + + return($new_slide_id); + } + + /* Provider: - * + * + * create / update slider from options + */ + private function createUpdateSliderFromOptions($options, $sliderID = null){ + + $arrMain = RevSliderFunctions::getVal($options, "main"); + $params = RevSliderFunctions::getVal($options, "params"); + + //trim all input data + $arrMain = RevSliderFunctions::trimArrayItems($arrMain); + + $params = RevSliderFunctions::trimArrayItems($params); + + $params = array_merge($arrMain,$params); + + $title = RevSliderFunctions::getVal($arrMain, "title"); + $alias = RevSliderFunctions::getVal($arrMain, "alias"); + + if(!empty($sliderID)) + $this->initByID($sliderID); + + $this->validateInputSettings($title, $alias, $params); + + $jsonParams = json_encode($params); + + //insert slider to database + $arrData = array(); + $arrData["title"] = $title; + $arrData["alias"] = $alias; + $arrData["params"] = $jsonParams; + + if(empty($sliderID)){ //create slider + + $arrData['settings'] = json_encode(array('version' => 5.0)); + + $sliderID = $this->db->insert(RevSliderGlobals::$table_sliders,$arrData); + return($sliderID); + + }else{ //update slider + $this->initByID($sliderID); + + $settings = $this->getSettings(); + $settings['version'] = 5.0; + $arrData['settings'] = json_encode($settings); + + $sliderID = $this->db->update(RevSliderGlobals::$table_sliders,$arrData,array("id"=>$sliderID)); + } + } + + + /* Provider: - * + * delete slider from datatase + */ + public function deleteSlider(){ + + $this->validateInited(); + + //delete slider + $this->db->delete(RevSliderGlobals::$table_sliders,"id=".$this->id); + + //delete slides + $this->deleteAllSlides(); + $this->deleteStaticSlide(); + } + + /* Provider: - * + * + * delete all slides + */ + private function deleteAllSlides(){ + $this->validateInited(); + + $this->db->delete(RevSliderGlobals::$table_slides,"slider_id=".$this->id); + } + + + /* Provider: - * + * + * delete all slides + */ + public function deleteStaticSlide(){ + $this->validateInited(); + + $this->db->delete(RevSliderGlobals::$table_static_slides,"slider_id=".$this->id); + } + + + /* Provider: - * + * + * get all slide children + */ + public function getArrSlideChildren($slideID){ + + $this->validateInited(); + $arrSlides = $this->getSlidesFromGallery(); + if(!isset($arrSlides[$slideID])) + RevSliderFunctions::throwError("Slide with id: $slideID not found in the main slides of the slider. Maybe it's child slide."); + + $slide = $arrSlides[$slideID]; + $arrChildren = $slide->getArrChildren(); + + return($arrChildren); + } + + + + /* Provider: - * + * + * duplicate slider in datatase + */ + private function duplicateSlider($title = false){ + + $this->validateInited(); + + if($title === false){ + //get slider number: + $response = $this->db->fetch(RevSliderGlobals::$table_sliders); + $numSliders = count($response); + $newSliderSerial = $numSliders+1; + + $newSliderTitle = "Slider".$newSliderSerial; + $newSliderAlias = "slider".$newSliderSerial; + }else{ + $newSliderTitle = $title; + $newSliderAlias = sanitize_title($title); + + // Check Duplicate Alias + $sqlTitle = $this->db->fetch(RevSliderGlobals::$table_sliders,"alias='".sanitize_title($title)."'"); + if(!empty($sqlTitle)){ + $response = $this->db->fetch(RevSliderGlobals::$table_sliders); + $numSliders = count($response); + $newSliderSerial = $numSliders+1; + $newSliderTitle .= $newSliderSerial; + $newSliderAlias .= $newSliderSerial; + } + } + + //insert a new slider + $sqlSelect = "select ".RevSliderGlobals::FIELDS_SLIDER." from ".RevSliderGlobals::$table_sliders." where id=".$this->id.""; + $sqlInsert = "insert into ".RevSliderGlobals::$table_sliders." (".RevSliderGlobals::FIELDS_SLIDER.") ($sqlSelect)"; + + $this->db->runSql($sqlInsert); + $lastID = $this->db->getLastInsertID(); + RevSliderFunctions::validateNotEmpty($lastID); + + //update the new slider with the title and the alias values + $arrUpdate = array(); + $arrUpdate["title"] = $newSliderTitle; + $arrUpdate["alias"] = $newSliderAlias; + + //update params + $params = $this->arrParams; + $params["title"] = $newSliderTitle; + $params["alias"] = $newSliderAlias; + $params["shortcode"] = "[rev_slider alias=\"". $newSliderAlias ."\"]"; + + $jsonParams = json_encode($params); + $arrUpdate["params"] = $jsonParams; + + $arrUpdate["type"] = '';//remove the type as we do not want it to be template if it was + + $this->db->update(RevSliderGlobals::$table_sliders, $arrUpdate, array("id"=>$lastID)); + + //duplicate Slides + $slides = $this->db->fetch(RevSliderGlobals::$table_slides, "slider_id=".$this->id); + if(!empty($slides)){ + foreach($slides as $slide){ + $slide['slider_id'] = $lastID; + $myID = $slide['id']; + unset($slide['id']); + $last_id = $this->db->insert(RevSliderGlobals::$table_slides,$slide); + + if(isset($myID)){ + $slider_map[$myID] = $last_id; + } + } + } + + //duplicate static slide if exists + $slide = new RevSlide(); + $staticID = $slide->getStaticSlideID($this->id); + $static_id = 0; + if($staticID !== false){ + $record = $this->db->fetchSingle(RevSliderGlobals::$table_static_slides,"id=$staticID"); + unset($record['id']); + $record['slider_id'] = $lastID; + + $static_id = $this->db->insert(RevSliderGlobals::$table_static_slides, $record); + } + + + //update actions + $slides = $this->db->fetch(RevSliderGlobals::$table_slides, "slider_id=$lastID"); + if($static_id > 0){ + $slides_static = $this->db->fetch(RevSliderGlobals::$table_static_slides, "id=$static_id"); + $slides = array_merge($slides, $slides_static); + } + if(!empty($slides)){ + foreach($slides as $slide){ + $c_slide = new RevSlide(); + $c_slide->initByData($slide); + + $layers = $c_slide->getLayers(); + $did_change = false; + foreach($layers as $key => $value){ + if(isset($value['layer_action'])){ + if(isset($value['layer_action']->jump_to_slide) && !empty($value['layer_action']->jump_to_slide)){ + foreach($value['layer_action']->jump_to_slide as $jtsk => $jtsval){ + if(isset($slider_map[$jtsval])){ + + $layers[$key]['layer_action']->jump_to_slide[$jtsk] = $slider_map[$jtsval]; + $did_change = true; + } + } + } + } + } + + if($did_change === true){ + + $arrCreate = array(); + $my_layers = json_encode($layers); + if(empty($my_layers)) + $my_layers = stripslashes(json_encode($layers)); + + $arrCreate['layers'] = $my_layers; + + if($slide['id'] == $static_id){ + $this->db->update(RevSliderGlobals::$table_static_slides,$arrCreate,array("id"=>$static_id)); + }else{ + $this->db->update(RevSliderGlobals::$table_slides,$arrCreate,array("id"=>$slide['id'])); + } + + } + } + } + } + + + /* Provider: - * + * + * duplicate slide + */ + public function duplicateSlide($slideID){ + $slide = new RevSlide(); + $slide->initByID($slideID); + $order = $slide->getOrder(); + $slides = $this->getSlidesFromGallery(); + $newOrder = $order+1; + $this->shiftOrder($newOrder); + + //do duplication + $sqlSelect = "select ".RevSliderGlobals::FIELDS_SLIDE." from ".RevSliderGlobals::$table_slides." where id=".intval($slideID); + $sqlInsert = "insert into ".RevSliderGlobals::$table_slides." (".RevSliderGlobals::FIELDS_SLIDE.") ($sqlSelect)"; + + $this->db->runSql($sqlInsert); + $lastID = $this->db->getLastInsertID(); + RevSliderFunctions::validateNotEmpty($lastID); + + //update order + $arrUpdate = array("slide_order"=>$newOrder); + + $this->db->update(RevSliderGlobals::$table_slides,$arrUpdate, array("id"=>$lastID)); + + return($lastID); + } + + + /* Provider: - * + * + * copy / move slide + */ + private function copyMoveSlide($slideID,$targetSliderID,$operation){ + + if($operation == "move"){ + + $targetSlider = new RevSlider(); + $targetSlider->initByID($targetSliderID); + $maxOrder = $targetSlider->getMaxOrder(); + $newOrder = $maxOrder+1; + $arrUpdate = array("slider_id"=>$targetSliderID,"slide_order"=>$newOrder); + + //update children + $arrChildren = $this->getArrSlideChildren($slideID); + foreach($arrChildren as $child){ + $childID = $child->getID(); + $this->db->update(RevSliderGlobals::$table_slides,$arrUpdate,array("id"=>$childID)); + } + + $this->db->update(RevSliderGlobals::$table_slides,$arrUpdate,array("id"=>$slideID)); + + }else{ //in place of copy + $newSlideID = $this->duplicateSlide($slideID); + $this->duplicateChildren($slideID, $newSlideID); + + $this->copyMoveSlide($newSlideID,$targetSliderID,"move"); + } + } + + + /* Provider: - * + * + * shift order of the slides from specific order + */ + private function shiftOrder($fromOrder){ + + $where = " slider_id=".$this->id." and slide_order >= $fromOrder"; + $sql = "update ".RevSliderGlobals::$table_slides." set slide_order=(slide_order+1) where $where"; + $this->db->runSql($sql); + + } + + + /* Provider: - * + * + * create slider in database from options + */ + public function createSliderFromOptions($options){ + $sliderID = $this->createUpdateSliderFromOptions($options,null); + return($sliderID); + } + + + /* Provider: - * + * + * export slider from data, output a file for download + */ + public function exportSlider($useDummy = false){ + $export_zip = true; + if(function_exists("unzip_file") == false){ + if( class_exists("ZipArchive") == false) + $export_zip = false; + } + + if(!class_exists('ZipArchive')) $export_zip = false; + + if($export_zip){ + $zip = new ZipArchive; + $success = $zip->open(RevSliderGlobals::$urlExportZip, ZIPARCHIVE::CREATE | ZipArchive::OVERWRITE); + + if($success !== true) + throwError("Can't create zip file: ".RevSliderGlobals::$urlExportZip); + + $this->validateInited(); + + $sliderParams = $this->getParamsForExport(); + $arrSlides = $this->getSlidesForExport($useDummy); + $arrStaticSlide = $this->getStaticSlideForExport($useDummy); + + $usedCaptions = array(); + $usedAnimations = array(); + $usedImages = array(); + $usedVideos = array(); + + $cfw = array(); + if(!empty($arrSlides) && count($arrSlides) > 0) $cfw = array_merge($cfw, $arrSlides); + if(!empty($arrStaticSlide) && count($arrStaticSlide) > 0) $cfw = array_merge($cfw, $arrStaticSlide); + + if(!empty($cfw) && count($cfw) > 0){ + foreach($cfw as $key => $slide){ + if(isset($slide['params']['image']) && $slide['params']['image'] != '') $usedImages[$slide['params']['image']] = true; //['params']['image'] background url + if(isset($slide['params']['background_image']) && $slide['params']['background_image'] != '') $usedImages[$slide['params']['background_image']] = true; //['params']['image'] background url + if(isset($slide['params']['slide_thumb']) && $slide['params']['slide_thumb'] != '') $usedImages[$slide['params']['slide_thumb']] = true; //['params']['image'] background url + + //html5 video + if(isset($slide['params']['background_type']) && $slide['params']['background_type'] == 'html5'){ + if(isset($slide['params']['slide_bg_html_mpeg']) && $slide['params']['slide_bg_html_mpeg'] != '') $usedVideos[$slide['params']['slide_bg_html_mpeg']] = true; + if(isset($slide['params']['slide_bg_html_webm']) && $slide['params']['slide_bg_html_webm'] != '') $usedVideos[$slide['params']['slide_bg_html_webm']] = true; + if(isset($slide['params']['slide_bg_html_ogv']) && $slide['params']['slide_bg_html_ogv'] != '') $usedVideos[$slide['params']['slide_bg_html_ogv']] = true; + }else{ + if(isset($slide['params']['slide_bg_html_mpeg']) && $slide['params']['slide_bg_html_mpeg'] != '') $slide['params']['slide_bg_html_mpeg'] = ''; + if(isset($slide['params']['slide_bg_html_webm']) && $slide['params']['slide_bg_html_webm'] != '') $slide['params']['slide_bg_html_webm'] = ''; + if(isset($slide['params']['slide_bg_html_ogv']) && $slide['params']['slide_bg_html_ogv'] != '') $slide['params']['slide_bg_html_ogv'] = ''; + } + + //image thumbnail + if(isset($slide['layers']) && !empty($slide['layers']) && count($slide['layers']) > 0){ + foreach($slide['layers'] as $lKey => $layer){ + if(isset($layer['style']) && $layer['style'] != '') $usedCaptions[$layer['style']] = true; + if(isset($layer['animation']) && $layer['animation'] != '' && strpos($layer['animation'], 'customin') !== false) $usedAnimations[str_replace('customin-', '', $layer['animation'])] = true; + if(isset($layer['endanimation']) && $layer['endanimation'] != '' && strpos($layer['endanimation'], 'customout') !== false) $usedAnimations[str_replace('customout-', '', $layer['endanimation'])] = true; + if(isset($layer['image_url']) && $layer['image_url'] != '') $usedImages[$layer['image_url']] = true; //image_url if image caption + + if(isset($layer['type']) && $layer['type'] == 'video'){ + + $video_data = (isset($layer['video_data'])) ? (array) $layer['video_data'] : array(); + + if(!empty($video_data) && isset($video_data['video_type']) && $video_data['video_type'] == 'html5'){ + + if(isset($video_data['urlPoster']) && $video_data['urlPoster'] != '') $usedImages[$video_data['urlPoster']] = true; + + if(isset($video_data['urlMp4']) && $video_data['urlMp4'] != '') $usedVideos[$video_data['urlMp4']] = true; + if(isset($video_data['urlWebm']) && $video_data['urlWebm'] != '') $usedVideos[$video_data['urlWebm']] = true; + if(isset($video_data['urlOgv']) && $video_data['urlOgv'] != '') $usedVideos[$video_data['urlOgv']] = true; + + }elseif(!empty($video_data) && isset($video_data['video_type']) && $video_data['video_type'] != 'html5'){ //video cover image + if(isset($video_data['previewimage']) && $video_data['previewimage'] != '') $usedImages[$video_data['previewimage']] = true; + } + } + + } + } + } + } + + /* Provider: - if(!empty($arrStaticSlide) && count($arrStaticSlide) > 0){ + foreach($arrStaticSlide as $key => $slide){ + if(isset($slide['params']['image']) && $slide['params']['image'] != '') $usedImages[$slide['params']['image']] = true; //['params']['image'] background url + + //html5 video + if(isset($slide['params']['background_type']) && $slide['params']['background_type'] == 'html5'){ + if(isset($slide['params']['slide_bg_html_mpeg']) && $slide['params']['slide_bg_html_mpeg'] != '') $usedVideos[$slide['params']['slide_bg_html_mpeg']] = true; + if(isset($slide['params']['slide_bg_html_webm']) && $slide['params']['slide_bg_html_webm'] != '') $usedVideos[$slide['params']['slide_bg_html_webm']] = true; + if(isset($slide['params']['slide_bg_html_ogv']) && $slide['params']['slide_bg_html_ogv'] != '') $usedVideos[$slide['params']['slide_bg_html_ogv']] = true; + } + + if(isset($slide['layers']) && !empty($slide['layers']) && count($slide['layers']) > 0){ + foreach($slide['layers'] as $lKey => $layer){ + if(isset($layer['style']) && $layer['style'] != '') $usedCaptions[$layer['style']] = true; + if(isset($layer['animation']) && $layer['animation'] != '' && strpos($layer['animation'], 'customin') !== false) $usedAnimations[str_replace('customin-', '', $layer['animation'])] = true; + if(isset($layer['endanimation']) && $layer['endanimation'] != '' && strpos($layer['endanimation'], 'customout') !== false) $usedAnimations[str_replace('customout-', '', $layer['endanimation'])] = true; + if(isset($layer['image_url']) && $layer['image_url'] != '') $usedImages[$layer['image_url']] = true; //image_url if image caption + + if(isset($layer['type']) && $layer['type'] == 'video'){ + + $video_data = (isset($layer['video_data'])) ? (array) $layer['video_data'] : array(); + + if(!empty($video_data) && isset($video_data['video_type']) && $video_data['video_type'] == 'html5'){ + + if(isset($video_data['urlPoster']) && $video_data['urlPoster'] != '') $usedImages[$video_data['urlPoster']] = true; + + if(isset($video_data['urlMp4']) && $video_data['urlMp4'] != '') $usedVideos[$video_data['urlMp4']] = true; + if(isset($video_data['urlWebm']) && $video_data['urlWebm'] != '') $usedVideos[$video_data['urlWebm']] = true; + if(isset($video_data['urlOgv']) && $video_data['urlOgv'] != '') $usedVideos[$video_data['urlOgv']] = true; + + }elseif(!empty($video_data) && isset($video_data['video_type']) && $video_data['video_type'] != 'html5'){ //video cover image + if(isset($video_data['previewimage']) && $video_data['previewimage'] != '') $usedImages[$video_data['previewimage']] = true; + } + } + } + } + } + }*/ + + $arrSliderExport = array("params"=>$sliderParams,"slides"=>$arrSlides); + if(!empty($arrStaticSlide)) + $arrSliderExport['static_slides'] = $arrStaticSlide; + + $strExport = serialize($arrSliderExport); + + //$strExportAnim = serialize(RevSliderOperations::getFullCustomAnimations()); + + $exportname =(!empty($this->alias)) ? $this->alias.'.zip' : "slider_export.zip"; + + + + $styles = ''; + if(!empty($usedCaptions)){ + $captions = array(); + foreach($usedCaptions as $class => $val){ + $cap = RevSliderOperations::getCaptionsContentArray($class); + //set also advanced styles here... + if(!empty($cap)) + $captions[] = $cap; + } + $styles = RevSliderCssParser::parseArrayToCss($captions, "\n", true); + } + + $animations = ''; + if(!empty($usedAnimations)){ + $animation = array(); + foreach($usedAnimations as $anim => $val){ + $anima = RevSliderOperations::getFullCustomAnimationByID($anim); + if($anima !== false) $animation[] = RevSliderOperations::getFullCustomAnimationByID($anim); + + } + if(!empty($animation)) $animations = serialize($animation); + } + + $usedImages = array_merge($usedImages, $usedVideos); + //add images to zip + if(!empty($usedImages)){ + $upload_dir = RevSliderFunctionsWP::getPathUploads(); + $upload_dir_multisiteless = wp_upload_dir(); + $cont_url = $upload_dir_multisiteless['baseurl']; + $cont_url_no_www = str_replace('www.', '', $upload_dir_multisiteless['baseurl']); + $upload_dir_multisiteless = $upload_dir_multisiteless['basedir'].'/'; + + + foreach($usedImages as $file => $val){ + if($useDummy == "true"){ //only use dummy images + + }else{ //use the real images + if(strpos($file, 'http') !== false){ + $remove = false; + $checkpath = str_replace(array($cont_url, $cont_url_no_www), '', $file); + + if(is_file($upload_dir.$checkpath)){ + $zip->addFile($upload_dir.$checkpath, 'images/'.$checkpath); + $remove = true; + }elseif(is_file($upload_dir_multisiteless.$checkpath)){ + $zip->addFile($upload_dir_multisiteless.$checkpath, 'images/'.$checkpath); + $remove = true; + } + + if($remove){ //as its http, remove this from strexport + $strExport = str_replace(array($cont_url.$checkpath, $cont_url_no_www.$checkpath), $checkpath, $strExport); + } + }else{ + if(is_file($upload_dir.$file)){ + $zip->addFile($upload_dir.$file, 'images/'.$file); + }elseif(is_file($upload_dir_multisiteless.$file)){ + $zip->addFile($upload_dir_multisiteless.$file, 'images/'.$file); + } + } + } + } + } + + $zip->addFromString("slider_export.txt", $strExport); //add slider settings + if(strlen(trim($animations)) > 0) $zip->addFromString("custom_animations.txt", $animations); //add custom animations + if(strlen(trim($styles)) > 0) $zip->addFromString("dynamic-captions.css", $styles); //add dynamic styles + + $static_css = RevSliderOperations::getStaticCss(); + $zip->addFromString("static-captions.css", $static_css); //add slider settings + + $enable_slider_pack = apply_filters('revslider_slider_pack_export', false); + if($enable_slider_pack){ //allow for slider packs the automatic creation of the info.cfg + $zip->addFromString('info.cfg', md5($this->alias)); //add slider settings + } + + $zip->close(); + + header("Content-type: application/zip"); + header("Content-Disposition: attachment; filename=".$exportname); + header("Pragma: no-cache"); + header("Expires: 0"); + readfile(RevSliderGlobals::$urlExportZip); + + @unlink(RevSliderGlobals::$urlExportZip); //delete file after sending it to user + }else{ //fallback, do old export + $this->validateInited(); + + $sliderParams = $this->getParamsForExport(); + $arrSlides = $this->getSlidesForExport(); + + $arrSliderExport = array("params"=>$sliderParams,"slides"=>$arrSlides); + + $strExport = serialize($arrSliderExport); + + if(!empty($this->alias)) + $filename = $this->alias.".txt"; + else + $filename = "slider_export.txt"; + + RevSliderFunctions::downloadFile($strExport,$filename); + } + } + + + /* Provider: - * + * + * import slider from multipart form + */ + public function importSliderFromPost($updateAnim = true, $updateStatic = true, $exactfilepath = false, $is_template = false, $single_slide = false){ + + try{ + + $sliderID = RevSliderFunctions::getPostVariable("sliderid"); + $sliderExists = !empty($sliderID); + + if($sliderExists) + $this->initByID($sliderID); + + if($exactfilepath !== false){ + $filepath = $exactfilepath; + }else{ + switch ($_FILES['import_file']['error']) { + case UPLOAD_ERR_OK: + break; + case UPLOAD_ERR_NO_FILE: + RevSliderFunctions::throwError(__('No file sent.', REVSLIDER_TEXTDOMAIN)); + case UPLOAD_ERR_INI_SIZE: + case UPLOAD_ERR_FORM_SIZE: + RevSliderFunctions::throwError(__('Exceeded filesize limit.', REVSLIDER_TEXTDOMAIN)); + + default: + break; + } + $filepath = $_FILES["import_file"]["tmp_name"]; + } + + if(file_exists($filepath) == false) + RevSliderFunctions::throwError("Import file not found!!!"); + + //check if zip file or fallback to old, if zip, check if all files exist + if(!class_exists("ZipArchive")){ + $importZip = false; + }else{ + $zip = new ZipArchive; + $importZip = $zip->open($filepath, ZIPARCHIVE::CREATE); + + } + + // Added by ThemeFuzz ( Stefan ) + if ( $importZip === 0 || !$zip->getStream('slider_export.txt') ) { + if(!$zip->getStream('slider_export.txt')){ + $upload_dir = wp_upload_dir(); + $new_path = $upload_dir['basedir'].'/'.$_FILES['import_file']['name']; + move_uploaded_file( $_FILES["import_file"]["tmp_name"], $new_path); + $importZip = $zip->open( $new_path, ZIPARCHIVE::CREATE); + } + } + + if($is_template !== false && $importZip !== true){ + return(array("success"=>false,"error"=>__('Please select the correct zip file', REVSLIDER_TEXTDOMAIN))); + } + + if($importZip === true){ //true or integer. If integer, its not a correct zip file + + //check if files all exist in zip + $slider_export = $zip->getStream('slider_export.txt'); + $custom_animations = $zip->getStream('custom_animations.txt'); + $dynamic_captions = $zip->getStream('dynamic-captions.css'); + $static_captions = $zip->getStream('static-captions.css'); + + $uid_file = $zip->getStream('info.cfg'); + $uid_check = ''; + if($uid_file){ while (!feof($uid_file)) $uid_check .= fread($uid_file, 1024); } + + if($is_template !== false){ + if($uid_check != $is_template){ + return(array("success"=>false,"error"=>__('Please select the correct zip file, checksum failed!', REVSLIDER_TEXTDOMAIN))); + } + }else{ //someone imported a template base Slider, check if it is existing in Base Sliders, if yes, check if it was imported + if($uid_check !== ''){ + $tmpl = new RevSliderTemplate(); + $tmpl_slider = $tmpl->getThemePunchTemplateSliders(); + + foreach($tmpl_slider as $tp_slider){ + if(!isset($tp_slider['installed'])) continue; + + if($tp_slider['uid'] == $uid_check){ + $is_template = $uid_check; + break; + } + } + } + } + + + if(!$slider_export) RevSliderFunctions::throwError("slider_export.txt does not exist!"); + + $content = ''; + $animations = ''; + $dynamic = ''; + $static = ''; + + while (!feof($slider_export)) $content .= fread($slider_export, 1024); + if($custom_animations){ while (!feof($custom_animations)) $animations .= fread($custom_animations, 1024); } + if($dynamic_captions){ while (!feof($dynamic_captions)) $dynamic .= fread($dynamic_captions, 1024); } + if($static_captions){ while (!feof($static_captions)) $static .= fread($static_captions, 1024); } + + fclose($slider_export); + if($custom_animations){ fclose($custom_animations); } + if($dynamic_captions){ fclose($dynamic_captions); } + if($static_captions){ fclose($static_captions); } + + //check for images! + + }else{ //check if fallback + //get content array + $content = @file_get_contents($filepath); + } + + if($importZip === true){ //we have a zip + $db = new RevSliderDB(); + + //update/insert custom animations + $animations = @unserialize($animations); + if(!empty($animations)){ + foreach($animations as $key => $animation){ //$animation['id'], $animation['handle'], $animation['params'] + $exist = $db->fetch(RevSliderGlobals::$table_layer_anims, "handle = '".$animation['handle']."'"); + if(!empty($exist)){ //update the animation, get the ID + if($updateAnim == "true"){ //overwrite animation if exists + $arrUpdate = array(); + $arrUpdate['params'] = stripslashes(json_encode(str_replace("'", '"', $animation['params']))); + $db->update(RevSliderGlobals::$table_layer_anims, $arrUpdate, array('handle' => $animation['handle'])); + + $anim_id = $exist['0']['id']; + }else{ //insert with new handle + $arrInsert = array(); + $arrInsert["handle"] = 'copy_'.$animation['handle']; + $arrInsert["params"] = stripslashes(json_encode(str_replace("'", '"', $animation['params']))); + + $anim_id = $db->insert(RevSliderGlobals::$table_layer_anims, $arrInsert); + } + }else{ //insert the animation, get the ID + $arrInsert = array(); + $arrInsert["handle"] = $animation['handle']; + $arrInsert["params"] = stripslashes(json_encode(str_replace("'", '"', $animation['params']))); + + $anim_id = $db->insert(RevSliderGlobals::$table_layer_anims, $arrInsert); + } + + //and set the current customin-oldID and customout-oldID in slider params to new ID from $id + $content = str_replace(array('customin-'.$animation['id'].'"', 'customout-'.$animation['id'].'"'), array('customin-'.$anim_id.'"', 'customout-'.$anim_id.'"'), $content); + } + dmp(__("animations imported!",REVSLIDER_TEXTDOMAIN)); + }else{ + dmp(__("no custom animations found, if slider uses custom animations, the provided export may be broken...",REVSLIDER_TEXTDOMAIN)); + } + + //overwrite/append static-captions.css + if(!empty($static)){ + if($updateStatic == "true"){ //overwrite file + RevSliderOperations::updateStaticCss($static); + }elseif($updateStatic == 'none'){ + //do nothing + }else{//append + $static_cur = RevSliderOperations::getStaticCss(); + $static = $static_cur."\n".$static; + RevSliderOperations::updateStaticCss($static); + } + } + //overwrite/create dynamic-captions.css + //parse css to classes + $dynamicCss = RevSliderCssParser::parseCssToArray($dynamic); + + if(is_array($dynamicCss) && $dynamicCss !== false && count($dynamicCss) > 0){ + foreach($dynamicCss as $class => $styles){ + //check if static style or dynamic style + $class = trim($class); + + if(strpos($class, ',') !== false && strpos($class, '.tp-caption') !== false){ //we have something like .tp-caption.redclass, .redclass + $class_t = explode(',', $class); + foreach($class_t as $k => $cl){ + if(strpos($cl, '.tp-caption') !== false) $class = $cl; + } + } + + if((strpos($class, ':hover') === false && strpos($class, ':') !== false) || //before, after + strpos($class," ") !== false || // .tp-caption.imageclass img or .tp-caption .imageclass or .tp-caption.imageclass .img + strpos($class,".tp-caption") === false || // everything that is not tp-caption + (strpos($class,".") === false || strpos($class,"#") !== false) || // no class -> #ID or img + strpos($class,">") !== false){ //.tp-caption>.imageclass or .tp-caption.imageclass>img or .tp-caption.imageclass .img + continue; + } + + //is a dynamic style + if(strpos($class, ':hover') !== false){ + $class = trim(str_replace(':hover', '', $class)); + $arrInsert = array(); + $arrInsert["hover"] = json_encode($styles); + $arrInsert["settings"] = json_encode(array('hover' => 'true')); + }else{ + $arrInsert = array(); + $arrInsert["params"] = json_encode($styles); + $arrInsert["settings"] = ''; + } + //check if class exists + $result = $db->fetch(RevSliderGlobals::$table_css, "handle = '".$class."'"); + + if(!empty($result)){ //update + $db->update(RevSliderGlobals::$table_css, $arrInsert, array('handle' => $class)); + }else{ //insert + $arrInsert["handle"] = $class; + $db->insert(RevSliderGlobals::$table_css, $arrInsert); + } + } + dmp(__("dynamic styles imported!",REVSLIDER_TEXTDOMAIN)); + }else{ + dmp(__("no dynamic styles found, if slider uses dynamic styles, the provided export may be broken...",REVSLIDER_TEXTDOMAIN)); + } + } + + //$content = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $content); //clear errors in string //deprecated in newest php version + $content = preg_replace_callback('!s:(\d+):"(.*?)";!', array('RevSlider', 'clear_error_in_string') , $content); //clear errors in string + + $arrSlider = @unserialize($content); + if(empty($arrSlider)) + RevSliderFunctions::throwError("Wrong export slider file format! This could be caused because the ZipArchive extension is not enabled."); + + //update slider params + $sliderParams = $arrSlider["params"]; + + if($sliderExists){ + $sliderParams["title"] = $this->arrParams["title"]; + $sliderParams["alias"] = $this->arrParams["alias"]; + $sliderParams["shortcode"] = $this->arrParams["shortcode"]; + } + + if(isset($sliderParams["background_image"])) + $sliderParams["background_image"] = RevSliderFunctionsWP::getImageUrlFromPath($sliderParams["background_image"]); + + + $import_statics = true; + if(isset($sliderParams['enable_static_layers'])){ + if($sliderParams['enable_static_layers'] == 'off') $import_statics = false; + unset($sliderParams['enable_static_layers']); + } + + $json_params = json_encode($sliderParams); + + //update slider or create new + if($sliderExists){ + $arrUpdate = array("params"=>$json_params); + $this->db->update(RevSliderGlobals::$table_sliders,$arrUpdate,array("id"=>$sliderID)); + }else{ //new slider + $arrInsert = array(); + $arrInsert['params'] = $json_params; + //check if Slider with title and/or alias exists, if yes change both to stay unique + + + $arrInsert['title'] = RevSliderFunctions::getVal($sliderParams, 'title', 'Slider1'); + $arrInsert['alias'] = RevSliderFunctions::getVal($sliderParams, 'alias', 'slider1'); + if($is_template === false){ //we want to stay at the given alias if we are a template + $talias = $arrInsert['alias']; + $ti = 1; + while($this->isAliasExistsInDB($talias)){ //set a new alias and title if its existing in database + $talias = $arrInsert['alias'] . $ti; + $ti++; + } + if($talias !== $arrInsert['alias']){ + $arrInsert['title'] = $talias; + $arrInsert['alias'] = $talias; + } + } + + if($is_template !== false){ //add that we are an template + $arrInsert['type'] = 'template'; + } + + $sliderID = $this->db->insert(RevSliderGlobals::$table_sliders,$arrInsert); + } + + //-------- Slides Handle ----------- + + //delete current slides + if($sliderExists) + $this->deleteAllSlides(); + + //create all slides + $arrSlides = $arrSlider["slides"]; + + $alreadyImported = array(); + + //wpml compatibility + $slider_map = array(); + + foreach($arrSlides as $sl_key => $slide){ + $params = $slide["params"]; + $layers = $slide["layers"]; + $settings = @$slide["settings"]; + + //convert params images: + if($importZip === true){ //we have a zip, check if exists + if(isset($params["image"])){ + $params["image"] = RevSliderBase::check_file_in_zip($zip, $params["image"], $filepath, $sliderParams["alias"], $alreadyImported); + $params["image"] = RevSliderFunctionsWP::getImageUrlFromPath($params["image"]); + } + + if(isset($params["background_image"])){ + $params["background_image"] = RevSliderBase::check_file_in_zip($zip, $params["background_image"], $filepath, $sliderParams["alias"], $alreadyImported); + $params["background_image"] = RevSliderFunctionsWP::getImageUrlFromPath($params["background_image"]); + } + + if(isset($params["slide_thumb"])){ + $params["slide_thumb"] = RevSliderBase::check_file_in_zip($zip, $params["slide_thumb"], $filepath, $sliderParams["alias"], $alreadyImported); + $params["slide_thumb"] = RevSliderFunctionsWP::getImageUrlFromPath($params["slide_thumb"]); + } + + if(isset($params["show_alternate_image"])){ + $params["show_alternate_image"] = RevSliderBase::check_file_in_zip($zip, $params["show_alternate_image"], $filepath, $sliderParams["alias"], $alreadyImported); + $params["show_alternate_image"] = RevSliderFunctionsWP::getImageUrlFromPath($params["show_alternate_image"]); + } + if(isset($params['background_type']) && $params['background_type'] == 'html5'){ + if(isset($params['slide_bg_html_mpeg']) && $params['slide_bg_html_mpeg'] != ''){ + $params['slide_bg_html_mpeg'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($zip, $params["slide_bg_html_mpeg"], $filepath, $sliderParams["alias"], $alreadyImported, true)); + } + if(isset($params['slide_bg_html_webm']) && $params['slide_bg_html_webm'] != ''){ + $params['slide_bg_html_webm'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($zip, $params["slide_bg_html_webm"], $filepath, $sliderParams["alias"], $alreadyImported, true)); + } + if(isset($params['slide_bg_html_ogv']) && $params['slide_bg_html_ogv'] != ''){ + $params['slide_bg_html_ogv'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($zip, $params["slide_bg_html_ogv"], $filepath, $sliderParams["alias"], $alreadyImported, true)); + } + } + } + + //convert layers images: + foreach($layers as $key=>$layer){ + //import if exists in zip folder + if($importZip === true){ //we have a zip, check if exists + if(isset($layer["image_url"])){ + $layer["image_url"] = RevSliderBase::check_file_in_zip($zip, $layer["image_url"], $filepath, $sliderParams["alias"], $alreadyImported); + $layer["image_url"] = RevSliderFunctionsWP::getImageUrlFromPath($layer["image_url"]); + } + if(isset($layer['type']) && $layer['type'] == 'video'){ + + $video_data = (isset($layer['video_data'])) ? (array) $layer['video_data'] : array(); + + if(!empty($video_data) && isset($video_data['video_type']) && $video_data['video_type'] == 'html5'){ + + if(isset($video_data['urlPoster']) && $video_data['urlPoster'] != ''){ + $video_data['urlPoster'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($zip, $video_data["urlPoster"], $filepath, $sliderParams["alias"], $alreadyImported)); + } + + if(isset($video_data['urlMp4']) && $video_data['urlMp4'] != ''){ + $video_data['urlMp4'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($zip, $video_data["urlMp4"], $filepath, $sliderParams["alias"], $alreadyImported, true)); + } + if(isset($video_data['urlWebm']) && $video_data['urlWebm'] != ''){ + $video_data['urlWebm'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($zip, $video_data["urlWebm"], $filepath, $sliderParams["alias"], $alreadyImported, true)); + } + if(isset($video_data['urlOgv']) && $video_data['urlOgv'] != ''){ + $video_data['urlOgv'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($zip, $video_data["urlOgv"], $filepath, $sliderParams["alias"], $alreadyImported, true)); + } + + }elseif(!empty($video_data) && isset($video_data['video_type']) && $video_data['video_type'] != 'html5'){ //video cover image + if(isset($video_data['previewimage']) && $video_data['previewimage'] != ''){ + $video_data['previewimage'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($zip, $video_data["previewimage"], $filepath, $sliderParams["alias"], $alreadyImported)); + } + } + + $layer['video_data'] = $video_data; + + } + + } + + $layer['text'] = stripslashes($layer['text']); + $layers[$key] = $layer; + } + $arrSlides[$sl_key]['layers'] = $layers; + + //create new slide + $arrCreate = array(); + $arrCreate["slider_id"] = $sliderID; + $arrCreate["slide_order"] = $slide["slide_order"]; + + $my_layers = json_encode($layers); + if(empty($my_layers)) + $my_layers = stripslashes(json_encode($layers)); + $my_params = json_encode($params); + if(empty($my_params)) + $my_params = stripslashes(json_encode($params)); + $my_settings = json_encode($settings); + if(empty($my_settings)) + $my_settings = stripslashes(json_encode($settings)); + + + + $arrCreate["layers"] = $my_layers; + $arrCreate["params"] = $my_params; + $arrCreate["settings"] = $my_settings; + + $last_id = $this->db->insert(RevSliderGlobals::$table_slides,$arrCreate); + + if(isset($slide['id'])){ + $slider_map[$slide['id']] = $last_id; + } + } + + //change for WPML the parent IDs if necessary + if(!empty($slider_map)){ + foreach($arrSlides as $sl_key => $slide){ + if(isset($slide['params']['parentid']) && isset($slider_map[$slide['params']['parentid']])){ + $update_id = $slider_map[$slide['id']]; + $parent_id = $slider_map[$slide['params']['parentid']]; + + $arrCreate = array(); + + $arrCreate["params"] = $slide['params']; + $arrCreate["params"]['parentid'] = $parent_id; + $my_params = json_encode($arrCreate["params"]); + if(empty($my_params)) + $my_params = stripslashes(json_encode($arrCreate["params"])); + + $arrCreate["params"] = $my_params; + + $this->db->update(RevSliderGlobals::$table_slides,$arrCreate,array("id"=>$update_id)); + } + + $did_change = false; + foreach($slide['layers'] as $key => $value){ + if(isset($value['layer_action'])){ + if(isset($value['layer_action']->jump_to_slide) && !empty($value['layer_action']->jump_to_slide)){ + $value['layer_action']->jump_to_slide = (array)$value['layer_action']->jump_to_slide; + foreach($value['layer_action']->jump_to_slide as $jtsk => $jtsval){ + if(isset($slider_map[$jtsval])){ + $slide['layers'][$key]['layer_action']->jump_to_slide[$jtsk] = $slider_map[$jtsval]; + $did_change = true; + } + } + } + } + + $link_slide = RevSliderFunctions::getVal($value, 'link_slide', false); + if($link_slide != false && $link_slide !== 'nothing'){ //link to slide/scrollunder is set, move it to actions + if(!isset($slide['layers'][$key]['layer_action'])) $slide['layers'][$key]['layer_action'] = new stdClass(); + switch($link_slide){ + case 'link': + $link = RevSliderFunctions::getVal($value, 'link'); + $link_open_in = RevSliderFunctions::getVal($value, 'link_open_in'); + $slide['layers'][$key]['layer_action']->action = array('a' => 'link'); + $slide['layers'][$key]['layer_action']->link_type = array('a' => 'a'); + $slide['layers'][$key]['layer_action']->image_link = array('a' => $link); + $slide['layers'][$key]['layer_action']->link_open_in = array('a' => $link_open_in); + + unset($slide['layers'][$key]['link']); + unset($slide['layers'][$key]['link_open_in']); + case 'next': + $slide['layers'][$key]['layer_action']->action = array('a' => 'next'); + break; + case 'prev': + $slide['layers'][$key]['layer_action']->action = array('a' => 'prev'); + break; + case 'scroll_under': + $scrollunder_offset = RevSliderFunctions::getVal($value, 'scrollunder_offset'); + $slide['layers'][$key]['layer_action']->action = array('a' => 'scroll_under'); + $slide['layers'][$key]['layer_action']->scrollunder_offset = array('a' => $scrollunder_offset); + + unset($slide['layers'][$key]['scrollunder_offset']); + break; + default: //its an ID, so its a slide ID + $slide['layers'][$key]['layer_action']->action = array('a' => 'jumpto'); + $slide['layers'][$key]['layer_action']->jump_to_slide = array('a' => $slider_map[$link_slide]); + break; + + } + $slide['layers'][$key]['layer_action']->tooltip_event = array('a' => 'click'); + + unset($slide['layers'][$key]['link_slide']); + + $did_change = true; + } + + + if($did_change === true){ + + $arrCreate = array(); + $my_layers = json_encode($slide['layers']); + if(empty($my_layers)) + $my_layers = stripslashes(json_encode($layers)); + + $arrCreate['layers'] = $my_layers; + + $this->db->update(RevSliderGlobals::$table_slides,$arrCreate,array("id"=>$slider_map[$slide['id']])); + } + } + } + } + + //check if static slide exists and import + if(isset($arrSlider['static_slides']) && !empty($arrSlider['static_slides']) && $import_statics){ + $static_slide = $arrSlider['static_slides']; + foreach($static_slide as $slide){ + + $params = $slide["params"]; + $layers = $slide["layers"]; + $settings = @$slide["settings"]; + + + //convert params images: + if(isset($params["image"])){ + //import if exists in zip folder + if(strpos($params["image"], 'http') !== false){ + }else{ + if(trim($params["image"]) !== ''){ + if($importZip === true){ //we have a zip, check if exists + $image = $zip->getStream('images/'.$params["image"]); + if(!$image){ + echo $params["image"].__(' not found!
        ', REVSLIDER_TEXTDOMAIN); + + }else{ + if(!isset($alreadyImported['zip://'.$filepath."#".'images/'.$params["image"]])){ + $importImage = RevSliderFunctionsWP::import_media('zip://'.$filepath."#".'images/'.$params["image"], $sliderParams["alias"].'/'); + + if($importImage !== false){ + $alreadyImported['zip://'.$filepath."#".'images/'.$params["image"]] = $importImage['path']; + + $params["image"] = $importImage['path']; + } + }else{ + $params["image"] = $alreadyImported['zip://'.$filepath."#".'images/'.$params["image"]]; + } + + + } + } + } + $params["image"] = RevSliderFunctionsWP::getImageUrlFromPath($params["image"]); + } + } + + //convert layers images: + foreach($layers as $key=>$layer){ + if(isset($layer["image_url"])){ + //import if exists in zip folder + if(trim($layer["image_url"]) !== ''){ + if(strpos($layer["image_url"], 'http') !== false){ + }else{ + if($importZip === true){ //we have a zip, check if exists + $image_url = $zip->getStream('images/'.$layer["image_url"]); + if(!$image_url){ + echo $layer["image_url"].__(' not found!
        '); + }else{ + if(!isset($alreadyImported['zip://'.$filepath."#".'images/'.$layer["image_url"]])){ + $importImage = RevSliderFunctionsWP::import_media('zip://'.$filepath."#".'images/'.$layer["image_url"], $sliderParams["alias"].'/'); + + if($importImage !== false){ + $alreadyImported['zip://'.$filepath."#".'images/'.$layer["image_url"]] = $importImage['path']; + + $layer["image_url"] = $importImage['path']; + } + }else{ + $layer["image_url"] = $alreadyImported['zip://'.$filepath."#".'images/'.$layer["image_url"]]; + } + } + } + } + } + $layer["image_url"] = RevSliderFunctionsWP::getImageUrlFromPath($layer["image_url"]); + $layer['text'] = stripslashes($layer['text']); + + } + + if(isset($layer['layer_action'])){ + if(isset($layer['layer_action']->jump_to_slide) && !empty($layer['layer_action']->jump_to_slide)){ + foreach($layer['layer_action']->jump_to_slide as $jtsk => $jtsval){ + if(isset($slider_map[$jtsval])){ + $layer['layer_action']->jump_to_slide[$jtsk] = $slider_map[$jtsval]; + } + } + } + } + + $link_slide = RevSliderFunctions::getVal($value, 'link_slide', false); + if($link_slide != false && $link_slide !== 'nothing'){ //link to slide/scrollunder is set, move it to actions + if(!isset($layer['layer_action'])) $layer['layer_action'] = new stdClass(); + + switch($link_slide){ + case 'link': + $link = RevSliderFunctions::getVal($value, 'link'); + $link_open_in = RevSliderFunctions::getVal($value, 'link_open_in'); + $layer['layer_action']->action = array('a' => 'link'); + $layer['layer_action']->link_type = array('a' => 'a'); + $layer['layer_action']->image_link = array('a' => $link); + $layer['layer_action']->link_open_in = array('a' => $link_open_in); + + unset($layer['link']); + unset($layer['link_open_in']); + case 'next': + $layer['layer_action']->action = array('a' => 'next'); + break; + case 'prev': + $layer['layer_action']->action = array('a' => 'prev'); + break; + case 'scroll_under': + $scrollunder_offset = RevSliderFunctions::getVal($value, 'scrollunder_offset'); + $layer['layer_action']->action = array('a' => 'scroll_under'); + $layer['layer_action']->scrollunder_offset = array('a' => $scrollunder_offset); + + unset($layer['scrollunder_offset']); + break; + default: //its an ID, so its a slide ID + $layer['layer_action']->action = array('a' => 'jumpto'); + $layer['layer_action']->jump_to_slide = array('a' => $slider_map[$link_slide]); + break; + + } + $layer['layer_action']->tooltip_event = array('a' => 'click'); + + unset($layer['link_slide']); + + $did_change = true; + } + + $layers[$key] = $layer; + } + + //create new slide + $arrCreate = array(); + $arrCreate["slider_id"] = $sliderID; + + $my_layers = json_encode($layers); + if(empty($my_layers)) + $my_layers = stripslashes(json_encode($layers)); + $my_params = json_encode($params); + if(empty($my_params)) + $my_params = stripslashes(json_encode($params)); + $my_settings = json_encode($settings); + if(empty($my_settings)) + $my_settings = stripslashes(json_encode($settings)); + + + $arrCreate["layers"] = $my_layers; + $arrCreate["params"] = $my_params; + $arrCreate["settings"] = $my_settings; + + if($sliderExists){ + unset($arrCreate["slider_id"]); + $this->db->update(RevSliderGlobals::$table_static_slides,$arrCreate,array("slider_id"=>$sliderID)); + }else{ + $this->db->insert(RevSliderGlobals::$table_static_slides,$arrCreate); + } + } + } + + $c_slider = new RevSliderSlider(); + $c_slider->initByID($sliderID); + + //check to convert styles to latest versions + RevSliderPluginUpdate::update_css_styles(); //set to version 5 + RevSliderPluginUpdate::add_animation_settings_to_layer($c_slider); //set to version 5 + RevSliderPluginUpdate::add_style_settings_to_layer($c_slider); //set to version 5 + RevSliderPluginUpdate::change_settings_on_layers($c_slider); //set to version 5 + RevSliderPluginUpdate::add_general_settings($c_slider); //set to version 5 + + $cus_js = $c_slider->getParam('custom_javascript', ''); + + if(strpos($cus_js, 'revapi') !== false){ + if(preg_match_all('/revapi[0-9]*./', $cus_js, $results)){ + + if(isset($results[0]) && !empty($results[0])){ + foreach($results[0] as $replace){ + $cus_js = str_replace($replace, 'revapi'.$sliderID.'.', $cus_js); + } + } + + $c_slider->updateParam(array('custom_javascript' => $cus_js)); + + } + + } + + if($is_template !== false){ //duplicate the slider now, as we just imported the "template" + if($single_slide !== false){ //add now one Slide to the current Slider + $mslider = new RevSlider(); + + //change slide_id to correct, as it currently is just a number beginning from 0 as we did not have a correct slide ID yet. + $i = 0; + $changed = false; + foreach($slider_map as $value){ + if($i == $single_slide['slide_id']){ + $single_slide['slide_id'] = $value; + $changed = true; + break; + } + $i++; + } + + if($changed){ + $return = $mslider->copySlideToSlider($single_slide); + }else{ + return(array("success"=>false,"error"=>__('could not find correct Slide to copy, please try again.', REVSLIDER_TEXTDOMAIN),"sliderID"=>$sliderID)); + } + + }else{ + $mslider = new RevSlider(); + $title = RevSliderFunctions::getVal($sliderParams, 'title', 'slider1'); + $talias = $title; + $ti = 1; + while($this->isAliasExistsInDB($talias)){ //set a new alias and title if its existing in database + $talias = $title . $ti; + $ti++; + } + $mslider->duplicateSliderFromData(array('sliderid' => $sliderID, 'title' => $talias)); + } + } + + + }catch(Exception $e){ + $errorMessage = $e->getMessage(); + return(array("success"=>false,"error"=>$errorMessage,"sliderID"=>$sliderID)); + } + + return(array("success"=>true,"sliderID"=>$sliderID)); + } + + + /* Provider: - * + * + * update slider from options + */ + public function updateSliderFromOptions($options){ + + $sliderID = RevSliderFunctions::getVal($options, "sliderid"); + RevSliderFunctions::validateNotEmpty($sliderID,"Slider ID"); + + $this->createUpdateSliderFromOptions($options,$sliderID); + } + + /* Provider: - * + * + * update some params in the slider + */ + public function updateParam($arrUpdate){ + $this->validateInited(); + + $this->arrParams = array_merge($this->arrParams,$arrUpdate); + $jsonParams = json_encode($this->arrParams); + $arrUpdateDB = array(); + $arrUpdateDB["params"] = $jsonParams; + + $this->db->update(RevSliderGlobals::$table_sliders,$arrUpdateDB,array("id"=>$this->id)); + } + + /* Provider: - * + * update some settings in the slider + */ + public function updateSetting($arrUpdate){ + $this->validateInited(); + + $this->settings = array_merge($this->settings,$arrUpdate); + $jsonParams = json_encode($this->settings); + $arrUpdateDB = array(); + $arrUpdateDB["settings"] = $jsonParams; + + $this->db->update(RevSliderGlobals::$table_sliders,$arrUpdateDB,array("id"=>$this->id)); + } + + + /* Provider: - * + * + * delete slider from input data + */ + public function deleteSliderFromData($data){ + $sliderID = RevSliderFunctions::getVal($data, "sliderid"); + RevSliderFunctions::validateNotEmpty($sliderID,"Slider ID"); + $this->initByID($sliderID); + + $this->deleteSlider(); + + return true; + } + + + /* Provider: - * + * + * delete slider from input data + */ + public function duplicateSliderFromData($data){ + $sliderID = RevSliderFunctions::getVal($data, "sliderid"); + RevSliderFunctions::validateNotEmpty($sliderID,"Slider ID"); + $this->initByID($sliderID); + $this->duplicateSlider(RevSliderFunctions::getVal($data, "title")); + } + + + /* Provider: - * + * + * duplicate slide from input data + */ + public function duplicateSlideFromData($data){ + + //init the slider + $sliderID = RevSliderFunctions::getVal($data, "sliderID"); + RevSliderFunctions::validateNotEmpty($sliderID,"Slider ID"); + $this->initByID($sliderID); + + //get the slide id + $slideID = RevSliderFunctions::getVal($data, "slideID"); + RevSliderFunctions::validateNotEmpty($slideID,"Slide ID"); + $newSlideID = $this->duplicateSlide($slideID); + + $this->duplicateChildren($slideID, $newSlideID); + + return(array($sliderID, $newSlideID)); + } + + + /* Provider: - * + * duplicate slide children + * @param $slideID + */ + private function duplicateChildren($slideID,$newSlideID){ + + $arrChildren = $this->getArrSlideChildren($slideID); + + foreach($arrChildren as $childSlide){ + $childSlideID = $childSlide->getID(); + //duplicate + $duplicatedSlideID = $this->duplicateSlide($childSlideID); + + //update parent id + $duplicatedSlide = new RevSlide(); + $duplicatedSlide->initByID($duplicatedSlideID); + $duplicatedSlide->updateParentSlideID($newSlideID); + } + + } + + + /* Provider: - * + * copy slide from one Slider to the given Slider ID + * @since: 5.0 + */ + public function copySlideToSlider($data){ + global $wpdb; + + $sliderID = intval(RevSliderFunctions::getVal($data, "slider_id")); + RevSliderFunctions::validateNotEmpty($sliderID,"Slider ID"); + $slideID = intval(RevSliderFunctions::getVal($data, "slide_id")); + RevSliderFunctions::validateNotEmpty($slideID,"Slide ID"); + + $tableSliders = $wpdb->prefix . RevSliderGlobals::TABLE_SLIDERS_NAME; + $tableSlides = $wpdb->prefix . RevSliderGlobals::TABLE_SLIDES_NAME; + + //check if ID exists + $add_to_slider = $wpdb->get_row($wpdb->prepare("SELECT * FROM $tableSliders WHERE id = %s", $sliderID), ARRAY_A); + + if(empty($add_to_slider)) + return __('Slide could not be duplicated', REVSLIDER_TEXTDOMAIN); + + //get last slide in slider for the order + $slide_order = $wpdb->get_row($wpdb->prepare("SELECT * FROM $tableSlides WHERE slider_id = %s ORDER BY slide_order DESC", $sliderID), ARRAY_A); + $order = (empty($slide_order)) ? 1 : $slide_order['slide_order'] + 1; + + $slide_to_copy = $wpdb->get_row($wpdb->prepare("SELECT * FROM $tableSlides WHERE id = %s", $slideID), ARRAY_A); + + if(empty($slide_to_copy)) + return __('Slide could not be duplicated', REVSLIDER_TEXTDOMAIN); + + unset($slide_to_copy['id']); //remove the ID of Slide, as it will be a new Slide + $slide_to_copy['slider_id'] = $sliderID; //set the new Slider ID to the Slide + $slide_to_copy['slide_order'] = $order; //set the next slide order, to set slide to the end + + $response = $wpdb->insert($tableSlides, $slide_to_copy); + + if($response === false) return __('Slide could not be copied', REVSLIDER_TEXTDOMAIN); + + return true; + } + + + /* Provider: - * + * copy / move slide from data + */ + public function copyMoveSlideFromData($data){ + + $sliderID = RevSliderFunctions::getVal($data, "sliderID"); + RevSliderFunctions::validateNotEmpty($sliderID,"Slider ID"); + $this->initByID($sliderID); + + $targetSliderID = RevSliderFunctions::getVal($data, "targetSliderID"); + RevSliderFunctions::validateNotEmpty($sliderID,"Target Slider ID"); + $this->initByID($sliderID); + + if($targetSliderID == $sliderID) + RevSliderFunctions::throwError("The target slider can't be equal to the source slider"); + + $slideID = RevSliderFunctions::getVal($data, "slideID"); + RevSliderFunctions::validateNotEmpty($slideID,"Slide ID"); + + $operation = RevSliderFunctions::getVal($data, "operation"); + + $this->copyMoveSlide($slideID,$targetSliderID,$operation); + + return($sliderID); + } + + + /* Provider: - * + * create a slide from input data + */ + public function createSlideFromData($data,$returnSlideID = false){ + + $sliderID = RevSliderFunctions::getVal($data, "sliderid"); + $obj = RevSliderFunctions::getVal($data, "obj"); + + RevSliderFunctions::validateNotEmpty($sliderID,"Slider ID"); + $this->initByID($sliderID); + + if(is_array($obj)){ //multiple + foreach($obj as $item){ + $slide = new RevSlide(); + $slideID = $slide->createSlide($sliderID, $item); + } + + return(count($obj)); + + }else{ //signle + $urlImage = $obj; + $slide = new RevSlide(); + $slideID = $slide->createSlide($sliderID, $urlImage); + if($returnSlideID == true) + return($slideID); + else + return(1); //num slides -1 slide created + } + } + + + + /* Provider: - * + * update slides order from data + */ + public function updateSlidesOrderFromData($data){ + $sliderID = RevSliderFunctions::getVal($data, "sliderID"); + $arrIDs = RevSliderFunctions::getVal($data, "arrIDs"); + RevSliderFunctions::validateNotEmpty($arrIDs,"slides"); + + $this->initByID($sliderID); + + $isFromPosts = $this->isSlidesFromPosts(); + + foreach($arrIDs as $index=>$slideID){ + + $order = $index+1; + + if($isFromPosts){ + RevSliderFunctionsWP::updatePostOrder($slideID, $order); + }else{ + + $arrUpdate = array("slide_order"=>$order); + $where = array("id"=>$slideID); + $this->db->update(RevSliderGlobals::$table_slides,$arrUpdate,$where); + } + }//end foreach + + //update sortby + if($isFromPosts){ + $arrUpdate = array(); + $arrUpdate["post_sortby"] = RevSliderFunctionsWP::SORTBY_MENU_ORDER; + $this->updateParam($arrUpdate); + } + + } + + /* Provider: - * + * + * get the "main" and "settings" arrays, for dealing with the settings. + */ + public function getSettingsFields(){ + $this->validateInited(); + + $arrMain = array(); + $arrMain["title"] = $this->title; + $arrMain["alias"] = $this->alias; + + $arrRespose = array("main"=>$arrMain, "params"=>$this->arrParams); + + return($arrRespose); + } + + + /* Provider: - * + * get slides from gallery + * force from gallery - get the slide from the gallery only + */ + public function getSlides($publishedOnly = false){ + + $arrSlides = $this->getSlidesFromGallery($publishedOnly); + + return($arrSlides); + } + + + /* Provider: - * + * get slides from posts + */ + public function getSlidesFromPosts($publishedOnly = false){ + + $slideTemplates = $this->getSlidesFromGallery($publishedOnly); + $slideTemplates = RevSliderFunctions::assocToArray($slideTemplates); + + if(count($slideTemplates) == 0) return array(); + + $sourceType = $this->getParam("source_type","gallery"); + switch($sourceType){ + case "posts": + $arrPosts = $this->getPostsFromCategories($publishedOnly); + break; + case "specific_posts": + $arrPosts = $this->getPostsFromSpecificList(); + break; + default: + RevSliderFunctions::throwError("getSlidesFromPosts error: This source type must be from posts."); + break; + } + + $arrSlides = array(); + + $templateKey = 0; + $numTemplates = count($slideTemplates); + + + foreach($arrPosts as $postData){ + + $slideTemplate = $slideTemplates[$templateKey]; + + //advance the templates + $templateKey++; + if($templateKey == $numTemplates) + $templateKey = 0; + + $slide = new RevSlide(); + $slide->initByPostData($postData, $slideTemplate, $this->id); + $arrSlides[] = $slide; + } + + $this->arrSlides = $arrSlides; + + return($arrSlides); + } + + + /* Provider: - * + * get slides from posts + */ + public function getSlidesFromStream($publishedOnly = false){ + + $slideTemplates = $this->getSlidesFromGallery($publishedOnly); + $slideTemplates = RevSliderFunctions::assocToArray($slideTemplates); + + if(count($slideTemplates) == 0) return array(); + + $arrPosts = array(); + + $max_allowed = 999999; + $sourceType = $this->getParam("source_type","gallery"); + $additions = array('fb_type' => 'album'); + switch($sourceType){ + case "facebook": + $facebook = new RevSliderFacebook($this->getParam('facebook-transient','1200')); + if($this->getParam('facebook-type-source','timeline') == "album"){ + $arrPosts = $facebook->get_photo_set_photos($this->getParam('facebook-album'),$this->getParam('facebook-count',10),$this->getParam('facebook-app-id'),$this->getParam('facebook-app-secret')); + }else{ + $user_id = $facebook->get_user_from_url($this->getParam('facebook-page-url')); + $arrPosts = $facebook->get_photo_feed($user_id,$this->getParam('facebook-app-id'),$this->getParam('facebook-app-secret'),$this->getParam('facebook-count',10)); + $additions['fb_type'] = $this->getParam('facebook-type-source','timeline'); + $additions['fb_user_id'] = $user_id; + } + if(!empty($arrPosts)){ + foreach($arrPosts as $k => $p){ + if(!isset($p->status_type)) continue; + + if(in_array($p->status_type, array("wall_post"))) unset($arrPosts[$k]); + } + } + $max_posts = $this->getParam('facebook-count', '25', self::FORCE_NUMERIC); + $max_allowed = 25; + break; + case "twitter": + $twitter = new RevSliderTwitter($this->getParam('twitter-consumer-key'),$this->getParam('twitter-consumer-secret'),$this->getParam('twitter-access-token'),$this->getParam('twitter-access-secret'),$this->getParam('twitter-transient','1200')); + $arrPosts = $twitter->get_public_photos($this->getParam('twitter-user-id'),$this->getParam('twitter-include-retweets'),$this->getParam( 'twitter-exclude-replies'),$this->getParam('twitter-count'),$this->getParam('twitter-image-only')); + $max_posts = $this->getParam('twitter-count', '500', self::FORCE_NUMERIC); + $max_allowed = 500; + $additions['twitter_user'] = $this->getParam('twitter-user-id'); + break; + case "instagram": + $instagram = new RevSliderInstagram($this->getParam('instagram-access-token'),$this->getParam('instagram-transient','1200')); + $search_user_id = $this->getParam('instagram-user-id'); + $arrPosts = $instagram->get_public_photos($search_user_id,$this->getParam('instagram-count')); + $max_posts = $this->getParam('instagram-count', '33', self::FORCE_NUMERIC); + $max_allowed = 33; + break; + case "flickr": + $flickr = new RevSliderFlickr($this->getParam('flickr-api-key'),$this->getParam('flickr-transient','1200')); + switch($this->getParam('flickr-type')){ + case 'publicphotos': + $user_id = $flickr->get_user_from_url($this->getParam('flickr-user-url')); + $arrPosts = $flickr->get_public_photos($user_id,$this->getParam('flickr-count')); + break; + case 'gallery': + $gallery_id = $flickr->get_gallery_from_url($this->getParam('flickr-gallery-url')); + $arrPosts = $flickr->get_gallery_photos($gallery_id,$this->getParam('flickr-count')); + break; + case 'group': + $group_id = $flickr->get_group_from_url($this->getParam('flickr-group-url')); + $arrPosts = $flickr->get_group_photos($group_id,$this->getParam('flickr-count')); + break; + case 'photosets': + $arrPosts = $flickr->get_photo_set_photos($this->getParam('flickr-photoset'),$this->getParam('flickr-count')); + break; + } + $max_posts = $this->getParam('flickr-count', '99', self::FORCE_NUMERIC); + break; + case 'youtube': + $channel_id = $this->getParam('youtube-channel-id'); + $youtube = new RevSliderYoutube($this->getParam('youtube-api'),$channel_id,$this->getParam('youtube-transient','1200')); + + if($this->getParam('youtube-type-source')=="playlist"){ + $arrPosts = $youtube->show_playlist_videos($this->getParam('youtube-playlist'),$this->getParam('youtube-count')); + } + else{ + $arrPosts = $youtube->show_channel_videos($this->getParam('youtube-count')); + } + $additions['yt_type'] = $this->getParam('youtube-type-source','channel'); + $max_posts = $this->getParam('youtube-count', '25', self::FORCE_NUMERIC); + $max_allowed = 50; + break; + case 'vimeo': + $vimeo = new RevSliderVimeo($this->getParam('vimeo-transient','1200')); + $vimeo_type = $this->getParam('vimeo-type-source'); + + switch ($vimeo_type) { + case 'user': + $arrPosts = $vimeo->get_vimeo_videos($vimeo_type,$this->getParam('vimeo-username')); + break; + case 'channel': + $arrPosts = $vimeo->get_vimeo_videos($vimeo_type,$this->getParam('vimeo-channelname')); + break; + case 'group': + $arrPosts = $vimeo->get_vimeo_videos($vimeo_type,$this->getParam('vimeo-groupname')); + break; + case 'album': + $arrPosts = $vimeo->get_vimeo_videos($vimeo_type,$this->getParam('vimeo-albumid')); + break; + default: + break; + + } + $additions['vim_type'] = $this->getParam('vimeo-type-source','user'); + $max_posts = $this->getParam('vimeo-count', '25', self::FORCE_NUMERIC); + $max_allowed = 60; + break; + default: + RevSliderFunctions::throwError("getSlidesFromStream error: This source type must be from stream."); + break; + } + + if($max_posts < 0) $max_posts *= -1; + + $arrPosts = apply_filters('revslider_pre_mod_stream_data', $arrPosts, $sourceType, $this->id); + + while(count($arrPosts) > $max_posts || count($arrPosts) > $max_allowed){ + array_pop($arrPosts); + } + + $arrPosts = apply_filters('revslider_post_mod_stream_data', $arrPosts, $sourceType, $this->id); + + $arrSlides = array(); + + $templateKey = 0; + $numTemplates = count($slideTemplates); + + if(empty($arrPosts)) RevSliderFunctions::throwError(__('Failed to load Stream', REVSLIDER_TEXTDOMAIN)); + + foreach($arrPosts as $postData){ + $slideTemplate = $slideTemplates[$templateKey]; + + //advance the templates + $templateKey++; + if($templateKey == $numTemplates) + $templateKey = 0; + + $slide = new RevSlide(); + $slide->initByStreamData($postData, $slideTemplate, $this->id, $sourceType, $additions); + $arrSlides[] = $slide; + } + + $this->arrSlides = $arrSlides; + + return($arrSlides); + } + + + /* Provider: - * + * get slides of the current slider + */ + public function getSlidesFromGallery($publishedOnly = false, $allwpml = false){ + + $this->validateInited(); + + $arrSlides = array(); + $arrSlideRecords = $this->db->fetch(RevSliderGlobals::$table_slides,"slider_id=".$this->id,"slide_order"); + + $arrChildren = array(); + + foreach ($arrSlideRecords as $record){ + $slide = new RevSlide(); + $slide->initByData($record); + + $slideID = $slide->getID(); + $arrIdsAssoc[$slideID] = true; + + if($publishedOnly == true){ + $state = $slide->getParam("state", "published"); + if($state == "unpublished"){ + continue; + } + } + + $parentID = $slide->getParam("parentid",""); + if(!empty($parentID)){ + $lang = $slide->getParam("lang",""); + if(!isset($arrChildren[$parentID])) + $arrChildren[$parentID] = array(); + $arrChildren[$parentID][] = $slide; + if(!$allwpml) + continue; //skip adding to main list + } + + //init the children array + $slide->setArrChildren(array()); + + $arrSlides[$slideID] = $slide; + } + + //add children array to the parent slides + foreach($arrChildren as $parentID=>$arr){ + if(!isset($arrSlides[$parentID])){ + continue; + } + $arrSlides[$parentID]->setArrChildren($arr); + } + + $this->arrSlides = $arrSlides; + + return($arrSlides); + } + + /* Provider: - * + * + * get slide id and slide title from gallery + */ + public function getArrSlidesFromGalleryShort(){ + $arrSlides = $this->getSlidesFromGallery(); + + $arrOutput = array(); + $counter = 0; + foreach($arrSlides as $slide){ + $slideID = $slide->getID(); + $outputName = 'Slide '.$counter; + $title = $slide->getParam('title',''); + $counter++; + + if(!empty($title)) + $outputName .= ' - ('.$title.')'; + + $arrOutput[$slideID] = $outputName; + } + + return($arrOutput); + } + + + /* Provider: - * + * + * get slides for output + * one level only without children + */ + public function getSlidesForOutput($publishedOnly = false, $lang = 'all'){ + + $isSlidesFromPosts = $this->isSlidesFromPosts(); + $isSlidesFromStream = $this->isSlidesFromStream(); + + + if(RevSliderWpml::isWpmlExists()){ + global $sitepress; + + $sitepress->switch_lang($lang); + } + + if($isSlidesFromPosts){ + $arrParentSlides = $this->getSlidesFromPosts($publishedOnly); + }elseif($isSlidesFromStream !== false){ + $arrParentSlides = $this->getSlidesFromStream($publishedOnly); + }else{ + $arrParentSlides = $this->getSlides($publishedOnly); + } + + if($lang == 'all' || $isSlidesFromPosts || $isSlidesFromStream) + return($arrParentSlides); + + $arrSlides = array(); + foreach($arrParentSlides as $parentSlide){ + $parentLang = $parentSlide->getLang(); + if($parentLang == $lang) + $arrSlides[] = $parentSlide; + + $childAdded = false; + $arrChildren = $parentSlide->getArrChildren(); + foreach($arrChildren as $child){ + $childLang = $child->getLang(); + if($childLang == $lang){ + $arrSlides[] = $child; + $childAdded = true; + break; + } + } + + if($childAdded == false && $parentLang == "all") + $arrSlides[] = $parentSlide; + } + + return($arrSlides); + } + + + /* Provider: - * + * + * get array of slide names + */ + public function getArrSlideNames(){ + if(empty($this->arrSlides)) + $this->getSlidesFromGallery(); + + $arrSlideNames = array(); + + foreach($this->arrSlides as $number=>$slide){ + $slideID = $slide->getID(); + $filename = $slide->getImageFilename(); + $slideTitle = $slide->getParam("title","Slide"); + $slideName = $slideTitle; + if(!empty($filename)) + $slideName .= " ($filename)"; + + $arrChildrenIDs = $slide->getArrChildrenIDs(); + + $arrSlideNames[$slideID] = array("name"=>$slideName,"arrChildrenIDs"=>$arrChildrenIDs,"title"=>$slideTitle); + } + return($arrSlideNames); + } + + + /* Provider: - * + * + * get array of slides numbers by id's + */ + public function getSlidesNumbersByIDs($publishedOnly = false){ + + if(empty($this->arrSlides)) + $this->getSlides($publishedOnly); + + $arrSlideNumbers = array(); + + $counter = 0; + + if(empty($this->arrSlides)) return $arrSlideNumbers; + + foreach($this->arrSlides as $slide){ + $counter++; + $slideID = $slide->getID(); + $arrSlideNumbers[$slideID] = $counter; + } + return($arrSlideNumbers); + } + + + /* Provider: - * + * + * get slider params for export slider + */ + private function getParamsForExport(){ + $exportParams = $this->arrParams; + + //modify background image + $urlImage = RevSliderFunctions::getVal($exportParams, "background_image"); + if(!empty($urlImage)) + $exportParams["background_image"] = $urlImage; + + return($exportParams); + } + + + /* Provider: - * + * + * get slides for export + */ + public function getSlidesForExport($useDummy = false){ + $arrSlides = $this->getSlidesFromGallery(false, true); + $arrSlidesExport = array(); + + foreach($arrSlides as $slide){ + $slideNew = array(); + $slideNew["id"] = $slide->getID(); + $slideNew["params"] = $slide->getParamsForExport(); + $slideNew["slide_order"] = $slide->getOrder(); + $slideNew["layers"] = $slide->getLayersForExport($useDummy); + $slideNew["settings"] = $slide->getSettings(); + $arrSlidesExport[] = $slideNew; + } + + return($arrSlidesExport); + } + + + /* Provider: - * + * + * get slides for export + */ + public function getStaticSlideForExport($useDummy = false){ + $arrSlidesExport = array(); + + $slide = new RevSlide(); + + $staticID = $slide->getStaticSlideID($this->id); + if($staticID !== false){ + $slideNew = array(); + $slide->initByStaticID($staticID); + $slideNew["params"] = $slide->getParamsForExport(); + $slideNew["slide_order"] = $slide->getOrder(); + $slideNew["layers"] = $slide->getLayersForExport($useDummy); + $slideNew["settings"] = $slide->getSettings(); + $arrSlidesExport[] = $slideNew; + } + + return($arrSlidesExport); + } + + + /* Provider: - * + * get slides number + */ + public function getNumSlides($publishedOnly = false){ + + if($this->arrSlides == null) + $this->getSlides($publishedOnly); + + $numSlides = count($this->arrSlides); + return($numSlides); + } + + + /* Provider: - * + * get real slides number, from posts, social streams ect. + */ + public function getNumRealSlides($publishedOnly = false, $type = 'post'){ + $numSlides = count($this->arrSlides); + + switch($type){ + case 'post': + $this->getSlidesFromPosts($publishedOnly); + $numSlides = count($this->arrSlides); + break; + case 'facebook': + $numSlides = $this->getParam('facebook-count', count($this->arrSlides)); + break; + case 'twitter': + $numSlides = $this->getParam('twitter-count', count($this->arrSlides)); + break; + case 'instagram': + $numSlides = $this->getParam('instagram-count', count($this->arrSlides)); + break; + case 'flickr': + $numSlides = $this->getParam('flickr-count', count($this->arrSlides)); + break; + case 'youtube': + $numSlides = $this->getParam('youtube-count', count($this->arrSlides)); + break; + case 'vimeo': + $numSlides = $this->getParam('vimeo-count', count($this->arrSlides)); + break; + } + + return($numSlides); + } + + + /* Provider: - * + * get real slides number, from posts, social streams ect. + */ + public function getNumRealStreamSlides($publishedOnly = false){ + + $this->getSlidesFromStream($publishedOnly); + + $numSlides = count($this->arrSlides); + return($numSlides); + } + + + /* Provider: - * + * get sliders array - function don't belong to the object! + */ + public function getArrSliders($orders = false, $templates = 'neither'){ + $order_fav = false; + if($orders !== false && key($orders) != 'favorite'){ + $order_direction = reset($orders); + $do_order = key($orders); + }else{ + $do_order = 'id'; + $order_direction = 'ASC'; + if(is_array($orders) && key($orders) == 'favorite'){ + $order_direction = reset($orders); + $order_fav = true; + } + } + $where = "`type` != 'template'"; + + $response = $this->db->fetch(RevSliderGlobals::$table_sliders,$where,$do_order,'',$order_direction); + + $arrSliders = array(); + foreach($response as $arrData){ + $slider = new RevSlider(); + $slider->initByDBData($arrData); + + /* Provider: - + This part needs to stay for backwards compatibility. It is used in the update process from v4x to v5x + */ + if($templates === true){ + if($slider->getParam("template","false") == "false") continue; + }elseif($templates === false){ + if($slider->getParam("template","false") == "true") continue; + } + + $arrSliders[] = $slider; + } + + if($order_fav === true){ + $temp = array(); + $temp_not = array(); + foreach($arrSliders as $key => $slider){ + if($slider->isFavorite()){ + $temp_not[] = $slider; + }else{ + $temp[] = $slider; + } + } + $arrSliders = array(); + $arrSliders = ($order_direction == 'ASC') ? array_merge($temp, $temp_not) : array_merge($temp_not, $temp); + } + + return($arrSliders); + } + + + /* Provider: - * + * get array of alias + */ + public function getAllSliderAliases(){ + $where = "`type` != 'template'"; + + $response = $this->db->fetch(RevSliderGlobals::$table_sliders,$where,"id"); + + $arrAliases = array(); + foreach($response as $arrSlider){ + $arrAliases[] = $arrSlider["alias"]; + } + + return($arrAliases); + } + + + /* Provider: - * + * + * get array of slider id -> title + */ + public function getArrSlidersShort($exceptID = null,$filterType = self::SLIDER_TYPE_ALL){ + $arrSliders = $this->getArrSliders(); + $arrShort = array(); + foreach($arrSliders as $slider){ + $id = $slider->getID(); + $isFromPosts = $slider->isSlidesFromPosts(); + $isTemplate = $slider->getParam("template","false"); + + //filter by gallery only + if($filterType == self::SLIDER_TYPE_POSTS && $isFromPosts == false) + continue; + + if($filterType == self::SLIDER_TYPE_GALLERY && $isFromPosts == true) + continue; + + //filter by template type + if($filterType == self::SLIDER_TYPE_TEMPLATE && $isFromPosts == false) + continue; + + //filter by except + if(!empty($exceptID) && $exceptID == $id) + continue; + + $title = $slider->getTitle(); + $arrShort[$id] = $title; + } + return($arrShort); + } + + /* Provider: - * + * + * get array of sliders with slides, short, assoc. + */ + public function getArrSlidersWithSlidesShort($filterType = self::SLIDER_TYPE_ALL){ + $arrSliders = self::getArrSlidersShort(null, $filterType); + + $output = array(); + foreach($arrSliders as $sliderID=>$sliderName){ + $slider = new RevSlider(); + $slider->initByID($sliderID); + + $isFromPosts = $slider->isSlidesFromPosts(); + $isTemplate = $slider->getParam("template","false"); + + //filter by gallery only + if($filterType == self::SLIDER_TYPE_POSTS && $isFromPosts == false) + continue; + + if($filterType == self::SLIDER_TYPE_GALLERY && $isFromPosts == true) + continue; + + //filter by template type + if($filterType == self::SLIDER_TYPE_TEMPLATE && $isFromPosts == false) //$isTemplate == "false") + continue; + + $sliderTitle = $slider->getTitle(); + $arrSlides = $slider->getArrSlidesFromGalleryShort(); + + foreach($arrSlides as $slideID=>$slideName){ + $output[$slideID] = $sliderName.", ".$slideName; + } + } + + return($output); + } + + + /* Provider: - * + * + * get max order + */ + public function getMaxOrder(){ + $this->validateInited(); + $maxOrder = 0; + $arrSlideRecords = $this->db->fetch(RevSliderGlobals::$table_slides,"slider_id=".$this->id,"slide_order desc","","limit 1"); + if(empty($arrSlideRecords)) + return($maxOrder); + $maxOrder = $arrSlideRecords[0]["slide_order"]; + + return($maxOrder); + } + + /* Provider: - * + * + * get setting - start with slide + */ + public function getStartWithSlideSetting(){ + + $numSlides = $this->getNumSlides(); + + $startWithSlide = $this->getParam("start_with_slide","1"); + if(is_numeric($startWithSlide)){ + $startWithSlide = (int)$startWithSlide - 1; + if($startWithSlide < 0) + $startWithSlide = 0; + + if($startWithSlide >= $numSlides) + $startWithSlide = 0; + + }else + $startWithSlide = 0; + + return($startWithSlide); + } + + + /* Provider: - * + * return if the slides source is from posts + */ + public function isSlidesFromPosts(){ + $this->validateInited(); + $sourceType = $this->getParam("source_type","gallery"); + if($sourceType == "posts" || $sourceType == "specific_posts") + return(true); + + return(false); + } + + + /* Provider: - * + * return if the slides source is from stream + */ + public function isSlidesFromStream(){ + $this->validateInited(); + $sourceType = $this->getParam("source_type","gallery"); + if($sourceType != "posts" && $sourceType != "specific_posts" && $sourceType != "gallery") + return($sourceType); + + return(false); + } + + + /* Provider: - * + * + * get posts from categories (by the slider params). + */ + private function getPostsFromCategories($publishedOnly = false){ + $this->validateInited(); + + $catIDs = $this->getParam("post_category"); + $data = RevSliderFunctionsWP::getCatAndTaxData($catIDs); + + $taxonomies = $data["tax"]; + $catIDs = $data["cats"]; + + $sortBy = $this->getParam("post_sortby",self::DEFAULT_POST_SORTBY); + $sortDir = $this->getParam("posts_sort_direction",self::DEFAULT_POST_SORTDIR); + $maxPosts = $this->getParam("max_slider_posts","30"); + if(empty($maxPosts) || !is_numeric($maxPosts)) + $maxPosts = -1; + + $postTypes = $this->getParam("post_types","any"); + + //set direction for custom order + if($sortBy == RevSliderFunctionsWP::SORTBY_MENU_ORDER) + $sortDir = RevSliderFunctionsWP::ORDER_DIRECTION_ASC; + + //Events integration + $arrAddition = array(); + if($publishedOnly == true) + $arrAddition["post_status"] = RevSliderFunctionsWP::STATE_PUBLISHED; + + if(RevSliderEventsManager::isEventsExists()){ + + $filterType = $this->getParam("events_filter",RevSliderEventsManager::DEFAULT_FILTER); + $arrAddition = RevSliderEventsManager::getWPQuery($filterType, $sortBy); + } + + $slider_id = $this->getID(); + $arrPosts = RevSliderFunctionsWP::getPostsByCategory($slider_id, $catIDs,$sortBy,$sortDir,$maxPosts,$postTypes,$taxonomies,$arrAddition); + + return($arrPosts); + } + + + /* Provider: - * + * + * get posts from specific posts list + */ + private function getPostsFromSpecificList(){ + + $strPosts = $this->getParam("posts_list",""); + + $strPosts = apply_filters('revslider_set_posts_list', $strPosts); + + $slider_id = $this->getID(); + + $arrPosts = RevSliderFunctionsWP::getPostsByIDs($strPosts, $slider_id); + + return($arrPosts); + } + + /* Provider: - * + * update sortby option + */ + public function updatePostsSortbyFromData($data){ + + $sliderID = RevSliderFunctions::getVal($data, "sliderID"); + $sortBy = RevSliderFunctions::getVal($data, "sortby"); + RevSliderFunctions::validateNotEmpty($sortBy,"sortby"); + + $this->initByID($sliderID); + $arrUpdate = array(); + $arrUpdate["post_sortby"] = $sortBy; + + $this->updateParam($arrUpdate); + } + + /* Provider: - * + * + * replace image urls + */ + public function replaceImageUrlsFromData($data){ + + $sliderID = RevSliderFunctions::getVal($data, "sliderid"); + $urlFrom = RevSliderFunctions::getVal($data, "url_from"); + RevSliderFunctions::validateNotEmpty($urlFrom,"url from"); + $urlTo = RevSliderFunctions::getVal($data, "url_to"); + + $this->initByID($sliderID); + + $arrSildes = $this->getSlides(); + foreach($arrSildes as $slide){ + $slide->replaceImageUrls($urlFrom, $urlTo); + } + } + + public function resetSlideSettings($data){ + $sliderID = RevSliderFunctions::getVal($data, "sliderid"); + + $this->initByID($sliderID); + + $arrSildes = $this->getSlides(); + foreach($arrSildes as $slide){ + $slide->reset_slide_values($data); + } + } + + public static function clear_error_in_string($m){ + return 's:'.strlen($m[2]).':"'.$m[2].'";'; + } + +} + +/* Provider: - * + * old classname extends new one (old classnames will be obsolete soon) + * @since: 5.0 + **/ +class RevSlider extends RevSliderSlider {} +?> \ No newline at end of file diff --git a/plugins/revslider/includes/template.class.php b/plugins/revslider/includes/template.class.php new file mode 100644 index 0000000..9d9c5c0 --- /dev/null +++ b/plugins/revslider/includes/template.class.php @@ -0,0 +1,607 @@ + + * @link http://www.themepunch.com/ + * @copyright 2015 ThemePunch + */ + +if( !defined( 'ABSPATH') ) exit(); + +class RevSliderTemplate { + + /* Provider: - * + * Copy a Slide to the Template Slide list + * @since: 5.0 + */ + public function copySlideToTemplates($slide_id, $slide_title, $slide_settings = array()){ + if(intval($slide_id) == 0) return false; + $slide_title = sanitize_text_field($slide_title); + if(strlen(trim($slide_title)) < 3) return false; + + global $wpdb; + + $table_name = RevSliderGlobals::$table_slides; + + $duplicate = $wpdb->get_row($wpdb->prepare("SELECT * FROM $table_name WHERE id = %s", $slide_id), ARRAY_A); + + if(empty($duplicate)) // slide not found + return false; + + unset($duplicate['id']); + + $duplicate['slider_id'] = -1; //-1 sets it to be a template + $duplicate['slide_order'] = -1; + + $params = json_decode($duplicate['params'], true); + $settings = json_decode($duplicate['settings'], true); + + $params['title'] = $slide_title; + $params['state'] = 'published'; + + if(isset($slide_settings['width'])) $settings['width'] = intval($slide_settings['width']); + if(isset($slide_settings['height'])) $settings['height'] = intval($slide_settings['height']); + + $duplicate['params'] = json_encode($params); + $duplicate['settings'] = json_encode($settings); + + $response = $wpdb->insert($table_name, $duplicate); + + if($response) + return true; + + return false; + } + + + /* Provider: - * + * Get all Template Slides + * @since: 5.0 + */ + public function getTemplateSlides(){ + global $wpdb; + + $table_name = RevSliderGlobals::$table_slides; + + $templates = $wpdb->get_results($wpdb->prepare("SELECT * FROM $table_name WHERE slider_id = %s", -1), ARRAY_A); + + //add default Template Slides here! + $default = $this->getDefaultTemplateSlides(); + + $templates = array_merge($templates, $default); + + if(!empty($templates)){ + foreach($templates as $key => $template){ + $templates[$key]['params'] = json_decode($template['params'], true); + $templates[$key]['layers'] = json_decode($template['layers'], true); + $templates[$key]['settings'] = json_decode($template['settings'], true); + } + } + + return $templates; + } + + + /* Provider: - * + * Add default Template Slides that can't be deleted for example. Authors can add their own Slides here through Filter + * @since: 5.0 + */ + private function getDefaultTemplateSlides(){ + $templates = array(); + + $templates = apply_filters('revslider_set_template_slides', $templates); + + return $templates; + } + + + /* Provider: - * + * get default ThemePunch default Slides + * @since: 5.0 + */ + public function getThemePunchTemplateSlides($sliders = false){ + global $wpdb; + + $templates = array(); + + $slide_defaults = array();// + + if($sliders == false){ + $sliders = $this->getThemePunchTemplateSliders(); + } + $table_name = RevSliderGlobals::$table_slides; + + if(!empty($sliders)){ + foreach($sliders as $slider){ + if(!isset($slider['installed'])){ + $slides = $this->getThemePunchTemplateDefaultSlides($slider['alias']); + $templates = array_merge($templates, $wpdb->get_results($wpdb->prepare("SELECT * FROM $table_name WHERE slider_id = %s", $slider['id']), ARRAY_A)); + foreach($templates as $key => $tmpl){ + if(isset($slides[$key])) $templates[$key]['img'] = $slides[$key]['img']; + } + }/* Provider: - else{ + $templates = array_merge($templates, array($slide_defaults[$slider['alias']])); + }*/ + } + } + + if(!empty($templates)){ + foreach($templates as $key => $template){ + if(!isset($template['installed'])){ + $templates[$key]['params'] = json_decode(@$template['params'], true); + $templates[$key]['layers'] = json_decode(@$template['layers'], true); + $templates[$key]['settings'] = json_decode(@$template['settings'], true); + } + } + } + + return $templates; + } + + + /* Provider: - * + * get default ThemePunch default Slides + * @since: 5.0 + */ + public function getThemePunchTemplateDefaultSlides($slider_alias){ + + $slides = array( + 'classic-carousel' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/classic-carousel/slide1.jpg'), + 1 => array('title' => 'Slide 2', 'img' => RS_PLUGIN_URL .'admin/assets/imports/classic-carousel/slide2.jpg'), + 2 => array('title' => 'Slide 3', 'img' => RS_PLUGIN_URL .'admin/assets/imports/classic-carousel/slide3.jpg'), + 3 => array('title' => 'Slide 4', 'img' => RS_PLUGIN_URL .'admin/assets/imports/classic-carousel/slide4.jpg'), + 4 => array('title' => 'Slide 5', 'img' => RS_PLUGIN_URL .'admin/assets/imports/classic-carousel/slide5.jpg') + ), + 'classicslider' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/classicslider/slide1.jpg'), + 1 => array('title' => 'Slide 2', 'img' => RS_PLUGIN_URL .'admin/assets/imports/classicslider/slide2.jpg'), + 2 => array('title' => 'Slide 3', 'img' => RS_PLUGIN_URL .'admin/assets/imports/classicslider/slide3.jpg'), + 3 => array('title' => 'Slide 4', 'img' => RS_PLUGIN_URL .'admin/assets/imports/classicslider/slide4.jpg'), + 4 => array('title' => 'Slide 5', 'img' => RS_PLUGIN_URL .'admin/assets/imports/classicslider/slide5.jpg') + ), + 'contenttabs' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/contenttabs/slide1.jpg'), + 1 => array('title' => 'Slide 2', 'img' => RS_PLUGIN_URL .'admin/assets/imports/contenttabs/slide2.jpg'), + 2 => array('title' => 'Slide 3', 'img' => RS_PLUGIN_URL .'admin/assets/imports/contenttabs/slide3.jpg') + ), + 'facebook-feed' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/facebook-feed/slide1.jpg') + ), + 'fashion' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/fashion/slide1.jpg'), + 1 => array('title' => 'Slide 2', 'img' => RS_PLUGIN_URL .'admin/assets/imports/fashion/slide2.jpg'), + 2 => array('title' => 'Slide 3', 'img' => RS_PLUGIN_URL .'admin/assets/imports/fashion/slide3.jpg'), + 3 => array('title' => 'Slide 4', 'img' => RS_PLUGIN_URL .'admin/assets/imports/fashion/slide4.jpg'), + 4 => array('title' => 'Slide 5', 'img' => RS_PLUGIN_URL .'admin/assets/imports/fashion/slide5.jpg') + ), + 'flickr-gallery' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/flickr-gallery/slide1.jpg') + ), + 'gym' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/gym/slide1.jpg'), + 1 => array('title' => 'Slide 2', 'img' => RS_PLUGIN_URL .'admin/assets/imports/gym/slide2.jpg'), + 2 => array('title' => 'Slide 3', 'img' => RS_PLUGIN_URL .'admin/assets/imports/gym/slide3.jpg') + ), + 'highlight-carousel' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/highlight-carousel/slide1.jpg'), + 1 => array('title' => 'Slide 2', 'img' => RS_PLUGIN_URL .'admin/assets/imports/highlight-carousel/slide2.jpg'), + 2 => array('title' => 'Slide 3', 'img' => RS_PLUGIN_URL .'admin/assets/imports/highlight-carousel/slide3.jpg'), + 3 => array('title' => 'Slide 4', 'img' => RS_PLUGIN_URL .'admin/assets/imports/highlight-carousel/slide4.jpg') + + ), + 'highlight-showcase' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/highlight-showcase/slide1.jpg'), + 1 => array('title' => 'Slide 2', 'img' => RS_PLUGIN_URL .'admin/assets/imports/highlight-showcase/slide2.jpg'), + 2 => array('title' => 'Slide 3', 'img' => RS_PLUGIN_URL .'admin/assets/imports/highlight-showcase/slide3.jpg'), + 3 => array('title' => 'Slide 4', 'img' => RS_PLUGIN_URL .'admin/assets/imports/highlight-showcase/slide4.jpg') + ), + 'imagehero' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/imagehero/slide1.jpg') + ), + 'insta-gallery' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/insta-gallery/slide1.jpg') + ), + 'levanorestaurantbar' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/levanorestaurantbar/slide1.jpg'), + 1 => array('title' => 'Slide 2', 'img' => RS_PLUGIN_URL .'admin/assets/imports/levanorestaurantbar/slide2.jpg'), + 2 => array('title' => 'Slide 3', 'img' => RS_PLUGIN_URL .'admin/assets/imports/levanorestaurantbar/slide3.jpg'), + 3 => array('title' => 'Slide 4', 'img' => RS_PLUGIN_URL .'admin/assets/imports/levanorestaurantbar/slide4.jpg'), + 4 => array('title' => 'Slide 5', 'img' => RS_PLUGIN_URL .'admin/assets/imports/levanorestaurantbar/slide5.jpg') + ), + 'mainfeature' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/mainfeature/slide1.jpg'), + 1 => array('title' => 'Slide 2', 'img' => RS_PLUGIN_URL .'admin/assets/imports/mainfeature/slide2.jpg'), + 2 => array('title' => 'Slide 3', 'img' => RS_PLUGIN_URL .'admin/assets/imports/mainfeature/slide3.jpg'), + 3 => array('title' => 'Slide 4', 'img' => RS_PLUGIN_URL .'admin/assets/imports/mainfeature/slide4.jpg'), + 4 => array('title' => 'Slide 5', 'img' => RS_PLUGIN_URL .'admin/assets/imports/mainfeature/slide5.jpg'), + 4 => array('title' => 'Slide 6', 'img' => RS_PLUGIN_URL .'admin/assets/imports/mainfeature/slide6.jpg'), + 4 => array('title' => 'Slide 7', 'img' => RS_PLUGIN_URL .'admin/assets/imports/mainfeature/slide7.jpg') + ), + 'media-gallery-two' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/media-gallery-two/slide1.jpg'), + 1 => array('title' => 'Slide 2', 'img' => RS_PLUGIN_URL .'admin/assets/imports/media-gallery-two/slide2.jpg'), + 2 => array('title' => 'Slide 3', 'img' => RS_PLUGIN_URL .'admin/assets/imports/media-gallery-two/slide3.jpg'), + 3 => array('title' => 'Slide 4', 'img' => RS_PLUGIN_URL .'admin/assets/imports/media-gallery-two/slide4.jpg'), + 4 => array('title' => 'Slide 5', 'img' => RS_PLUGIN_URL .'admin/assets/imports/media-gallery-two/slide5.jpg'), + 4 => array('title' => 'Slide 6', 'img' => RS_PLUGIN_URL .'admin/assets/imports/media-gallery-two/slide6.jpg') + ), + 'media-carousel-autoplay' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/media-carousel-autoplay/slide1.jpg'), + 1 => array('title' => 'Slide 2', 'img' => RS_PLUGIN_URL .'admin/assets/imports/media-carousel-autoplay/slide2.jpg'), + 2 => array('title' => 'Slide 3', 'img' => RS_PLUGIN_URL .'admin/assets/imports/media-carousel-autoplay/slide3.jpg'), + 3 => array('title' => 'Slide 4', 'img' => RS_PLUGIN_URL .'admin/assets/imports/media-carousel-autoplay/slide4.jpg'), + 4 => array('title' => 'Slide 5', 'img' => RS_PLUGIN_URL .'admin/assets/imports/media-carousel-autoplay/slide5.jpg'), + 4 => array('title' => 'Slide 6', 'img' => RS_PLUGIN_URL .'admin/assets/imports/media-carousel-autoplay/slide6.jpg') + ), + 'news-bg-video' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/news-bg-video/slide1.jpg') + ), + 'news-gallery' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/news-gallery/slide1.jpg'), + 1 => array('title' => 'Slide 2', 'img' => RS_PLUGIN_URL .'admin/assets/imports/news-gallery/slide2.jpg'), + 2 => array('title' => 'Slide 3', 'img' => RS_PLUGIN_URL .'admin/assets/imports/news-gallery/slide3.jpg'), + 3 => array('title' => 'Slide 4', 'img' => RS_PLUGIN_URL .'admin/assets/imports/news-gallery/slide4.jpg') + ), + 'news-gallery-post-based' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/news-gallery-post-based/slide1.jpg') + ), + 'news-hero' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/news-hero/slide1.jpg') + ), + 'news-video' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/news-video/slide1.jpg') + ), + 'newsletter-hero' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/newsletter-hero/slide1.jpg') + ), + 'notgeneric' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/notgeneric/slide1.jpg'), + 1 => array('title' => 'Slide 2', 'img' => RS_PLUGIN_URL .'admin/assets/imports/notgeneric/slide2.jpg'), + 2 => array('title' => 'Slide 3', 'img' => RS_PLUGIN_URL .'admin/assets/imports/notgeneric/slide3.jpg'), + 3 => array('title' => 'Slide 4', 'img' => RS_PLUGIN_URL .'admin/assets/imports/notgeneric/slide4.jpg'), + 4 => array('title' => 'Slide 5', 'img' => RS_PLUGIN_URL .'admin/assets/imports/notgeneric/slide5.jpg') + ), + 'photography' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/photography/slide1.jpg'), + 1 => array('title' => 'Slide 2', 'img' => RS_PLUGIN_URL .'admin/assets/imports/photography/slide2.jpg'), + 2 => array('title' => 'Slide 3', 'img' => RS_PLUGIN_URL .'admin/assets/imports/photography/slide3.jpg'), + 3 => array('title' => 'Slide 4', 'img' => RS_PLUGIN_URL .'admin/assets/imports/photography/slide4.jpg'), + 4 => array('title' => 'Slide 5', 'img' => RS_PLUGIN_URL .'admin/assets/imports/photography/slide5.jpg'), + 5 => array('title' => 'Slide 6', 'img' => RS_PLUGIN_URL .'admin/assets/imports/photography/slide6.jpg'), + 6 => array('title' => 'Slide 7', 'img' => RS_PLUGIN_URL .'admin/assets/imports/photography/slide7.jpg'), + 7 => array('title' => 'Slide 8', 'img' => RS_PLUGIN_URL .'admin/assets/imports/photography/slide8.jpg'), + 8 => array('title' => 'Slide 9', 'img' => RS_PLUGIN_URL .'admin/assets/imports/photography/slide9.jpg'), + 9 => array('title' => 'Slide 10', 'img' => RS_PLUGIN_URL .'admin/assets/imports/photography/slide10.jpg') + ), + 'photography-carousel' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/photography-carousel/slide1.jpg'), + 1 => array('title' => 'Slide 2', 'img' => RS_PLUGIN_URL .'admin/assets/imports/photography-carousel/slide2.jpg'), + 2 => array('title' => 'Slide 3', 'img' => RS_PLUGIN_URL .'admin/assets/imports/photography-carousel/slide3.jpg'), + 3 => array('title' => 'Slide 4', 'img' => RS_PLUGIN_URL .'admin/assets/imports/photography-carousel/slide4.jpg'), + 4 => array('title' => 'Slide 5', 'img' => RS_PLUGIN_URL .'admin/assets/imports/photography-carousel/slide5.jpg'), + 5 => array('title' => 'Slide 6', 'img' => RS_PLUGIN_URL .'admin/assets/imports/photography-carousel/slide6.jpg'), + 6 => array('title' => 'Slide 7', 'img' => RS_PLUGIN_URL .'admin/assets/imports/photography-carousel/slide7.jpg'), + 7 => array('title' => 'Slide 8', 'img' => RS_PLUGIN_URL .'admin/assets/imports/photography-carousel/slide8.jpg'), + 8 => array('title' => 'Slide 9', 'img' => RS_PLUGIN_URL .'admin/assets/imports/photography-carousel/slide9.jpg'), + 9 => array('title' => 'Slide 10', 'img' => RS_PLUGIN_URL .'admin/assets/imports/photography-carousel/slide10.jpg') + ), + 'search-form-hero' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/search-form-hero/slide1.jpg') + ), + 'showcasecarousel' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/showcasecarousel/slide1.jpg'), + 1 => array('title' => 'Slide 2', 'img' => RS_PLUGIN_URL .'admin/assets/imports/showcasecarousel/slide2.jpg'), + 2 => array('title' => 'Slide 3', 'img' => RS_PLUGIN_URL .'admin/assets/imports/showcasecarousel/slide3.jpg'), + 3 => array('title' => 'Slide 4', 'img' => RS_PLUGIN_URL .'admin/assets/imports/showcasecarousel/slide4.jpg'), + 4 => array('title' => 'Slide 5', 'img' => RS_PLUGIN_URL .'admin/assets/imports/showcasecarousel/slide5.jpg'), + 5 => array('title' => 'Slide 6', 'img' => RS_PLUGIN_URL .'admin/assets/imports/showcasecarousel/slide6.jpg'), + 6 => array('title' => 'Slide 7', 'img' => RS_PLUGIN_URL .'admin/assets/imports/showcasecarousel/slide7.jpg'), + 7 => array('title' => 'Slide 8', 'img' => RS_PLUGIN_URL .'admin/assets/imports/showcasecarousel/slide8.jpg'), + 8 => array('title' => 'Slide 9', 'img' => RS_PLUGIN_URL .'admin/assets/imports/showcasecarousel/slide9.jpg') + + ), + 'sportshero' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/sportshero/slide1.jpg') + ), + 'twitter-feed' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/twitter-feed/slide1.jpg') + ), + 'vimeo-gallery' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/vimeo-gallery/slide1.jpg') + ), + 'vimeohero' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/vimeohero/slide1.jpg') + ), + 'web-product-dark' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/web-product-dark/slide1.jpg'), + 1 => array('title' => 'Slide 2', 'img' => RS_PLUGIN_URL .'admin/assets/imports/web-product-dark/slide2.jpg'), + 2 => array('title' => 'Slide 3', 'img' => RS_PLUGIN_URL .'admin/assets/imports/web-product-dark/slide3.jpg'), + 3 => array('title' => 'Slide 4', 'img' => RS_PLUGIN_URL .'admin/assets/imports/web-product-dark/slide4.jpg') + ), + 'web-product-dark-hero' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/web-product-dark-hero/slide1.jpg') + ), + 'web-product-light-hero' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/web-product-light-hero/slide1.jpg') + ), + 'webproductlight' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/webproductlight/slide1.jpg'), + 1 => array('title' => 'Slide 2', 'img' => RS_PLUGIN_URL .'admin/assets/imports/webproductlight/slide2.jpg'), + 2 => array('title' => 'Slide 3', 'img' => RS_PLUGIN_URL .'admin/assets/imports/webproductlight/slide3.jpg'), + 3 => array('title' => 'Slide 4', 'img' => RS_PLUGIN_URL .'admin/assets/imports/webproductlight/slide4.jpg') + ), + 'youtube-gallery' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/youtube-gallery/slide1.jpg') + ), + 'youtubehero' => array( + 0 => array('title' => 'Slide 1', 'img' => RS_PLUGIN_URL .'admin/assets/imports/youtubehero/slide1.jpg') + ) + + ); + + + return @$slides[$slider_alias]; + } + + + /* Provider: - * + * Get default Template Sliders + * @since: 5.0 + */ + public function getDefaultTemplateSliders(){ + global $wpdb; + + $sliders = array(); + $check = array(); + + $table_name = RevSliderGlobals::$table_sliders; + + //add themepunch default Sliders here + $check = $wpdb->get_results("SELECT * FROM $table_name WHERE type = 'template'", ARRAY_A); + + $sliders = apply_filters('revslider_set_template_sliders', $sliders); + + /* Provider: - * + * Example + $sliders['Slider Pack Name'] = array( + array('title' => 'PJ Slider 1', 'alias' => 'pjslider1', 'width' => 1400, 'height' => 868, 'zip' => 'exwebproduct.zip', 'uid' => 'bde6d50c2f73f8086708878cf227c82b', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/exwebproduct.jpg'), + array('title' => 'PJ Classic Slider', 'alias' => 'pjclassicslider', 'width' => 1240, 'height' => 600, 'zip' => 'classicslider.zip', 'uid' => 'a0d6a9248c9066b404ba0f1cdadc5cf2', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/classicslider.jpg') + ); + **/ + + if(!empty($check) && !empty($sliders)){ + foreach($sliders as $key => $the_sliders){ + foreach($the_sliders as $skey => $slider){ + foreach($check as $ikey => $installed){ + if($installed['alias'] == $slider['alias']){ + $img = $slider['img']; + $sliders[$key][$skey] = $installed; + + $sliders[$key][$skey]['img'] = $img; + break; + } + } + } + } + } + + return $sliders; + } + + + /* Provider: - * + * get default ThemePunch default Sliders + * @since: 5.0 + */ + public function getThemePunchTemplateSliders(){ + global $wpdb; + + $sliders = array(); + + $table_name = RevSliderGlobals::$table_sliders; + + //add themepunch default Sliders here + $sliders = $wpdb->get_results("SELECT * FROM $table_name WHERE type = 'template'", ARRAY_A); + + + $defaults = array( + + + array('title' => 'Classic Carousel', 'alias' => 'classic-carousel', 'width' => 1240, 'height' => 600, 'zip' => 'classic-carousel.zip', 'uid' => '146a01dd380c0cdee85c4456ee68cd84', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/classic-carousel/slider.jpg'), + array('title' => 'ClassicSlider', 'alias' => 'classicslider', 'width' => 1240, 'height' => 600, 'zip' => 'classicslider.zip', 'uid' => 'a0d6a9248c9066b404ba0f1cdadc5cf2', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/classicslider/slider.jpg'), + array('title' => 'Content Tabs', 'alias' => 'contenttabs', 'width' => 1024, 'height' => 600, 'zip' => 'contenttabs.zip', 'uid' => 'e02e91604b690123a3d07a65582c4fd0', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/contenttabs/slider.jpg'), + array('title' => 'Facebook Feed', 'alias' => 'facebook-feed', 'width' => 800, 'height' => 600, 'zip' => 'facebook-feed.zip', 'uid' => '5506431d5b1babcb25dcf52c508d42e3', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/facebook-feed/slider.jpg'), + array('title' => 'Fashion', 'alias' => 'fashion', 'width' => 1240, 'height' => 868, 'zip' => 'fashion.zip', 'uid' => '4f4b914d6db35e19101ff003c4e7ea3a', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/fashion/slider.jpg'), + array('title' => 'Flickr Gallery', 'alias' => 'flickr-gallery', 'width' => 800, 'height' => 640, 'zip' => 'flickr-gallery.zip', 'uid' => 'ad85cfac7acfa678e6a1b8febfee51ed', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/flickr-gallery/slider.jpg'), + array('title' => 'Gym', 'alias' => 'gym', 'width' => 1240, 'height' => 868, 'zip' => 'gym.zip', 'uid' => 'e4d81f13f96fb9bc905f4ad89615032b', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/gym/slider.jpg'), + array('title' => 'Highlight Carousel', 'alias' => 'highlight-carousel', 'width' => 800, 'height' => 720, 'zip' => 'highlight-carousel.zip', 'uid' => 'ada52163f723a942f782351fa0396b3d', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/highlight-carousel/slider.jpg'), + array('title' => 'Highlight Showcase', 'alias' => 'highlight-showcase', 'width' => 1230, 'height' => 720, 'zip' => 'highlight-showcase.zip', 'uid' => '2bfe0bd410fb48fec9d942eab1e21530', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/highlight-showcase/slider.jpg'), + array('title' => 'Image Hero', 'alias' => 'imagehero', 'width' => 1240, 'height' => 600, 'zip' => 'imagehero.zip', 'uid' => '038dab2d980b026ae15c1a22e3175690', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/imagehero/slider.jpg'), + array('title' => 'Instagram Gallery', 'alias' => 'insta-gallery', 'width' => 640, 'height' => 640, 'zip' => 'insta-gallery.zip', 'uid' => '711732b0d42ec2b57818a2b9b1d86cba', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/insta-gallery/slider.jpg'), + array('title' => 'Levano Restaurant Bar', 'alias' => 'levanorestaurantbar', 'width' => 1240, 'height' => 868, 'zip' => 'levanorestaurantbar.zip', 'uid' => '4178f837db67d1b2eb6cb5840bbd0b42', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/levanorestaurantbar/slider.jpg'), + array('title' => 'Main Feature Slider', 'alias' => 'mainfeature', 'width' => 1230, 'height' => 750, 'zip' => 'mainfeature.zip', 'uid' => '1e002a3230ab00095bedc6f60393ee7f', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/mainfeature/slider.jpg'), + array('title' => 'Media Gallery Two', 'alias' => 'media-gallery-two', 'width' => 1230, 'height' => 692, 'zip' => 'media-gallery-two.zip', 'uid' => 'd002f1b1b55805f9322c264c5504ba5a', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/media-gallery-two/slider.jpg'), + array('title' => 'Media Carousel Autoplay', 'alias' => 'media-carousel-autoplay', 'width' => 720, 'height' => 405, 'zip' => 'media-carousel-autoplay.zip', 'uid' => '393d7875b1cc9d933378b35e4f645d76', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/media-carousel-autoplay/slider.jpg'), + array('title' => 'News Background Video', 'alias' => 'news-bg-video', 'width' => 1240, 'height' => 500, 'zip' => 'news-bg-video.zip', 'uid' => '467e74ce10da2c5ca1f4258af558809d', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/news-bg-video/slider.jpg'), + array('title' => 'News Gallery', 'alias' => 'news-gallery', 'width' => 1240, 'height' => 500, 'zip' => 'news-gallery.zip', 'uid' => '3a069c3b286dbb9ee435563f747e3300', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/news-gallery/slider.jpg'), + array('title' => 'News Gallery Post Based', 'alias' => 'news-gallery-post-based', 'width' => 1240, 'height' => 500, 'zip' => 'news-gallery-post-based.zip', 'uid' => '32fe05b1039c29ab9420bfd15aec5488', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/news-gallery-post-based/slider.jpg'), + array('title' => 'News Hero', 'alias' => 'news-hero', 'width' => 1240, 'height' => 500, 'zip' => 'news-hero.zip', 'uid' => '96a0385538a17c8c81ed8175740f70ea', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/news-hero/slider.jpg'), + array('title' => 'News Video', 'alias' => 'news-video', 'width' => 1240, 'height' => 500, 'zip' => 'news-video.zip', 'uid' => 'f901e9e16e0363248156c2209eb584e9', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/news-video/slider.jpg'), + array('title' => 'Newsletter Hero', 'alias' => 'newsletter-hero', 'width' => 1240, 'height' => 600, 'zip' => 'newsletter-hero.zip', 'uid' => '6290a9864d8c4c6311784586ed1cc5fe', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/newsletter-hero/slider.jpg'), + array('title' => 'NotGeneric', 'alias' => 'notgeneric', 'width' => 1240, 'height' => 868, 'zip' => 'notgeneric.zip', 'uid' => '9d87ba95e02210a9f82387add2ceadf9', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/notgeneric/slider.jpg'), + array('title' => 'Photography', 'alias' => 'photography', 'width' => 1240, 'height' => 868, 'zip' => 'photography.zip', 'uid' => '1b2072547afb75e49f33b016751ed360', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/photography/slider.jpg'), + array('title' => 'Photography Carousel', 'alias' => 'photography-carousel', 'width' => 1024, 'height' => 868, 'zip' => 'photography-carousel.zip', 'uid' => '9a84b859ba23dc49ba8784e3a86545fa', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/photography-carousel/slider.jpg'), + array('title' => 'Search Form Hero', 'alias' => 'search-form-hero', 'width' => 1240, 'height' => 600, 'zip' => 'search-form-hero.zip', 'uid' => 'e09eb1bd0f22b3a2b02a1aa251dd1f3e', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/search-form-hero/slider.jpg'), + array('title' => 'Showcase Carousel', 'alias' => 'showcasecarousel', 'width' => 600, 'height' => 600, 'zip' => 'showcasecarousel.zip', 'uid' => 'c5ca218398331bd2c064efc2f62eae56', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/showcasecarousel/slider.jpg'), + array('title' => 'Sports Hero', 'alias' => 'sportshero', 'width' => 1240, 'height' => 720, 'zip' => 'sportshero.zip', 'uid' => 'a7f509fa823db719b1e80d5b325593f2', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/sportshero/slider.jpg'), + array('title' => 'Twitter Feed', 'alias' => 'twitter-feed', 'width' => 800, 'height' => 640, 'zip' => 'twitter-feed.zip', 'uid' => 'efbfc2af5da5258e7b7bed8598e483cc', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/twitter-feed/slider.jpg'), + array('title' => 'Vimeo Gallery', 'alias' => 'vimeo-gallery', 'width' => 1230, 'height' => 692, 'zip' => 'vimeo-gallery.zip', 'uid' => 'fa824ce1ff3942ec268fc9eda60df539', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/vimeo-gallery/slider.jpg'), + array('title' => 'Vimeo Hero', 'alias' => 'vimeohero', 'width' => 1240, 'height' => 600, 'zip' => 'vimeohero.zip', 'uid' => 'c575575f96173d88589cddcb06120b77', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/vimeohero/slider.jpg'), + array('title' => 'Web Product Dark', 'alias' => 'web-product-dark', 'width' => 1400, 'height' => 868, 'zip' => 'web-product-dark.zip', 'uid' => '39b872cf0608e63c3a503e58374dc30a', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/web-product-dark/slider.jpg'), + array('title' => 'Web Product Dark Hero', 'alias' => 'web-product-dark-hero', 'width' => 1400, 'height' => 768, 'zip' => 'web-product-dark-hero.zip', 'uid' => 'b6784e8925221f36677217979d26e6f0', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/web-product-dark-hero/slider.jpg'), + array('title' => 'Web Product Light Hero', 'alias' => 'web-product-light-hero', 'width' => 1400, 'height' => 768, 'zip' => 'web-product-light-hero.zip', 'uid' => '428e65d6aaa6ef775429989d50516492', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/web-product-light-hero/slider.jpg'), + array('title' => 'Web Product Light', 'alias' => 'webproductlight', 'width' => 1400, 'height' => 868, 'zip' => 'webproductlight.zip', 'uid' => 'fa23dab5bf1139c6393828647a9de4e0', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/webproductlight/slider.jpg'), + array('title' => 'Youtube Gallery', 'alias' => 'youtube-gallery', 'width' => 1240, 'height' => 600, 'zip' => 'youtube-gallery.zip', 'uid' => 'ee9e4928ac74f5f0c0b697ce708f5aa7', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/youtube-gallery/slider.jpg'), + array('title' => 'Youtube Hero', 'alias' => 'youtubehero', 'width' => 1240, 'height' => 600, 'zip' => 'youtubehero.zip', 'uid' => 'e0b2c12a45841bdf21cb96305f2c85bf', 'installed' => false, 'img' => RS_PLUGIN_URL .'admin/assets/imports/youtubehero/slider.jpg') + ); + + if(!empty($sliders)){ + foreach($defaults as $key => $slider){ + foreach($sliders as $ikey => $installed){ + if($installed['alias'] == $slider['alias']){ + $img = $slider['img']; + $defaults[$key] = $installed; + + $defaults[$key]['img'] = $img; + break; + } + } + } + } + + return $defaults; + + } + + + /* Provider: - * + * output markup for the import template, the zip was not yet improted + * @since: 5.0 + */ + public function write_import_template_markup($template){ + ?> +
        + +
        +
        +
        +
        + +
        +
        +
        +
        +
        +
        + +
        class=" " + data-gridwidth="" + data-gridheight="" + + data-sliderid="" + + data-slideid="" + + > +
        +
        + \ No newline at end of file diff --git a/plugins/revslider/includes/tinybox.class.php b/plugins/revslider/includes/tinybox.class.php new file mode 100644 index 0000000..fb6555e --- /dev/null +++ b/plugins/revslider/includes/tinybox.class.php @@ -0,0 +1,76 @@ + + * @link http://www.themepunch.com/ + * @copyright 2015 ThemePunch + */ + +if( !defined( 'ABSPATH') ) exit(); + +class RevSliderTinyBox { + + public function __construct(){ + add_action('admin_head', array('RevSliderTinyBox', 'my_print_shortcodes_in_js')); + add_action('admin_head', array('RevSliderTinyBox', 'my_add_tinymce')); + } + + public static function my_print_shortcodes_in_js(){ + $sld = new RevSlider(); + $sliders = $sld->getArrSliders(); + $shortcodes = ''; + if(!empty($sliders)){ + $first = true; + /* Provider: - foreach($sliders as $slider){ + $shortcode = $slider->getParam('shortcode','false'); + if($shortcode != 'false'){ + if(!$first) $shortcodes .= ','; + + $shortcodes.="'".$shortcode."'"; + $first = false; + } + }*/ + foreach($sliders as $slider){ + $alias = $slider->getParam('alias','false'); + if($alias != 'false'){ + if(!$first) $shortcodes .= ','; + + $shortcodes.="'[rev_slider alias=\"".$alias."\"]'"; + $first = false; + } + } + } + ?> + + \ No newline at end of file diff --git a/plugins/revslider/includes/widget.class.php b/plugins/revslider/includes/widget.class.php new file mode 100644 index 0000000..15ca2ab --- /dev/null +++ b/plugins/revslider/includes/widget.class.php @@ -0,0 +1,142 @@ + + * @link http://www.themepunch.com/ + * @copyright 2015 ThemePunch + */ + +if( !defined( 'ABSPATH') ) exit(); + +class RevSliderWidget extends WP_Widget { + + public function __construct(){ + + // widget actual processes + $widget_ops = array('classname' => 'widget_revslider', 'description' => __('Displays a revolution slider on the page',REVSLIDER_TEXTDOMAIN) ); + parent::__construct('rev-slider-widget', __('Revolution Slider',REVSLIDER_TEXTDOMAIN), $widget_ops); + } + + /* Provider: - * + * + * the form + */ + public function form($instance) { + try { + $slider = new RevSlider(); + $arrSliders = $slider->getArrSlidersShort(); + }catch(Exception $e){} + + if(empty($arrSliders)){ + echo __("No sliders found, Please create a slider",REVSLIDER_TEXTDOMAIN); + }else{ + + $field = "rev_slider"; + $fieldPages = "rev_slider_pages"; + $fieldCheck = "rev_slider_homepage"; + $fieldTitle = "rev_slider_title"; + + $sliderID = RevSliderFunctions::getVal($instance, $field); + $homepage = RevSliderFunctions::getVal($instance, $fieldCheck); + $pagesValue = RevSliderFunctions::getVal($instance, $fieldPages); + $title = RevSliderFunctions::getVal($instance, $fieldTitle); + + $fieldID = $this->get_field_id( $field ); + $fieldName = $this->get_field_name( $field ); + + $select = RevSliderFunctions::getHTMLSelect($arrSliders,$sliderID,'name="'.$fieldName.'" id="'.$fieldID.'"',true); + + $fieldID_check = $this->get_field_id( $fieldCheck ); + $fieldName_check = $this->get_field_name( $fieldCheck ); + $checked = ""; + if($homepage == "on") + $checked = "checked='checked'"; + + $fieldPages_ID = $this->get_field_id( $fieldPages ); + $fieldPages_Name = $this->get_field_name( $fieldPages ); + + $fieldTitle_ID = $this->get_field_id( $fieldTitle ); + $fieldTitle_Name = $this->get_field_name( $fieldTitle ); + + ?> + + + +

        + + : +
        + + + > +

        + + + +
        + \ No newline at end of file diff --git a/plugins/revslider/index.php b/plugins/revslider/index.php new file mode 100644 index 0000000..e69de29 diff --git a/plugins/revslider/languages/index.php b/plugins/revslider/languages/index.php new file mode 100644 index 0000000..e69de29 diff --git a/plugins/revslider/languages/revslider-de_DE.mo b/plugins/revslider/languages/revslider-de_DE.mo new file mode 100644 index 0000000..ee47da6 Binary files /dev/null and b/plugins/revslider/languages/revslider-de_DE.mo differ diff --git a/plugins/revslider/languages/revslider-de_DE.po b/plugins/revslider/languages/revslider-de_DE.po new file mode 100644 index 0000000..5330d21 --- /dev/null +++ b/plugins/revslider/languages/revslider-de_DE.po @@ -0,0 +1,7493 @@ +msgid "" +msgstr "" +"Project-Id-Version: Revolution Slider\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: Mon Jul 13 2015 10:02:33 GMT+0200 (CEST)\n" +"PO-Revision-Date: Wed Aug 05 2015 12:57:31 GMT+0200 (CEST)\n" +"Last-Translator: admin \n" +"Language-Team: \n" +"Language: German\n" +"Plural-Forms: nplurals=2; plural=n != 1\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Generator: Loco - https://localise.biz/\n" +"X-Poedit-Language: German\n" +"X-Poedit-Country: GERMANY\n" +"X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;" +"__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;" +"_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;" +"esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;" +"esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n" +"X-Poedit-Basepath: ../\n" +"X-Poedit-Bookmarks: \n" +"X-Poedit-SearchPath-0: .\n" +"X-Textdomain-Support: yes\n" +"X-Loco-Target-Locale: de_DE" + +#: ../revslider.php:167 +msgid "Include RevSlider libraries globally (all pages/posts)" +msgstr "RevSlider Libraries global einbinden (alle Seiten/Beiträge)" + +#: ../revslider.php:168 +msgid "Pages to include RevSlider libraries" +msgstr "Seiten in dem die RevSlider Bibliotheken hinzugefügt werden" + +#: ../revslider.php:169 +msgid "" +"If you want to use the PHP function \"putRevSlider\" in your code please make " +"sure to check \" " +msgstr "" +"Wenn Sie die PHP Funktion \"putRevSlider\" in Ihrem Code, bitte stellen Sie " +"sicher \"" + +#: ../revslider.php:169 +msgid "" +" \" in the backend's \"General Settings\" (top right panel).

        Or add " +"the current page to the \"" +msgstr "" +"\" in Ihrem Backend unter \"Generelle Einstellungen\" zu aktivieren (oben " +"rechts).

        Oder füge die derzeitige Seite zur \"" + +#: ../revslider.php:169 +msgid "\" option box." +msgstr "\" option box." + +#: ../revslider.php:209 +msgid "Revolution Slider Error:" +msgstr "Revolution Slider Fehler:" + +#: ../admin/revslider-admin.class.php:62 ../admin/views/navigation-editor.php:28 +msgid "Navigation Editor" +msgstr "Navigation Editor" + +#: ../admin/revslider-admin.class.php:188 +msgid "-- wrong alias -- " +msgstr "-- Falscher Alias --" + +#: ../admin/revslider-admin.class.php:189 +msgid "Navigation Bullets and Arrows are now set to none." +msgstr "Navigation Bullets und Pfeile sind ausgeschaltet." + +#: ../admin/revslider-admin.class.php:190 +msgid "Create Template" +msgstr "Template erstellen" + +#: ../admin/revslider-admin.class.php:191 +msgid "Do you really want to delete" +msgstr "Willst Du wirklich löschen" + +#: ../admin/revslider-admin.class.php:192 +msgid "Are you sure to replace the urls?" +msgstr "Willst Du wirklich die URLs ersetzen?" + +#: ../admin/revslider-admin.class.php:193 +msgid "" +"Set selected settings on all Slides of this Slider? (This will be saved " +"immediately)" +msgstr "Einstellungen für alle Slides setzen (wird sofort gesetzt)?" + +#: ../admin/revslider-admin.class.php:194 ../admin/views/slide-overview.php:174 +msgid "Select Slide Image" +msgstr "Slide Bild wählen" + +#: ../admin/revslider-admin.class.php:195 +msgid "Select Slide Video" +msgstr "Slide Video wählen" + +#: ../admin/revslider-admin.class.php:196 +msgid "Show Slide Options" +msgstr "Zeige Slide Optionen" + +#: ../admin/revslider-admin.class.php:197 +msgid "Hide Slide Options" +msgstr "Verstecke Slide Optionen" + +#: ../admin/revslider-admin.class.php:198 ../admin/views/slide-overview.php:168 .. +#: admin/views/system/dialog-copy-move.php:3 ../admin/views/templates/slider- +#: main-options.php:1433 ../admin/views/templates/slider-main-options.php:4437 .. +#: admin/views/templates/slides.php:21 ../admin/views/templates/slides.php:43 +msgid "Close" +msgstr "Schliessen" + +#: ../admin/revslider-admin.class.php:199 +msgid "Really update global styles?" +msgstr "Global Styles wirklich aktualisieren?" + +#: ../admin/revslider-admin.class.php:200 +msgid "Global Styles Editor" +msgstr "Global Styles Editor" + +#: ../admin/revslider-admin.class.php:201 ../admin/revslider-admin.class.php:239 . +#: ./admin/views/templates/slider-main-options.php:4458 +msgid "Select Image" +msgstr "Wähle Bild" + +#: ../admin/revslider-admin.class.php:202 +msgid "Video Not Found!" +msgstr "Video nicht gefunden!" + +#: ../admin/revslider-admin.class.php:203 +msgid "Handle has to be at least three character long" +msgstr "Handle muss mind. 3 Zeichen lang sein" + +#: ../admin/revslider-admin.class.php:204 +msgid "Really change font settings?" +msgstr "Fonts Einstellungen wirklich ändern?" + +#: ../admin/revslider-admin.class.php:205 +msgid "Really delete font?" +msgstr "Font wirklich löschen?" + +#: ../admin/revslider-admin.class.php:206 +msgid "Class already exists, overwrite?" +msgstr "Class existiert bereits, überschreiben?" + +#: ../admin/revslider-admin.class.php:207 +msgid "Class must be a valid CSS class name" +msgstr "Class muss einen validen CSS Klassennamen haben\n" + +#: ../admin/revslider-admin.class.php:208 +msgid "Really overwrite Class?" +msgstr "Class wirklich überschreiben?" + +#: ../admin/revslider-admin.class.php:209 +msgid "Really delete Class" +msgstr "Class wirklich löschen" + +#: ../admin/revslider-admin.class.php:210 +msgid "? This can't be undone!" +msgstr "? Dies kann nicht rückgängig gemacht werden!" + +#: ../admin/revslider-admin.class.php:211 +msgid "This class does not exist." +msgstr "Diese Class existiert nicht." + +#: ../admin/revslider-admin.class.php:212 +msgid "" +"Making changes to these settings will probably overwrite advanced settings. " +"Continue?" +msgstr "" +"Änderungen and diesen Einstellungen überschreiben möglicherweise die " +"Advanced Settings. Fortfahren?" + +#: ../admin/revslider-admin.class.php:213 +msgid "Select Static Layer Image" +msgstr "Wähle statischen Layer" + +#: ../admin/revslider-admin.class.php:214 +msgid "Select Layer Image" +msgstr "Wähle Layer Bild" + +#: ../admin/revslider-admin.class.php:215 +msgid "Do you really want to delete all the layers?" +msgstr "Wirklich alle Layer löschen?" + +#: ../admin/revslider-admin.class.php:216 +msgid "Layer Animation Editor" +msgstr "Layer Animationen Editor\n" + +#: ../admin/revslider-admin.class.php:217 +msgid "Animation already exists, overwrite?" +msgstr "Animation existiert bereits, überschreiben?" + +#: ../admin/revslider-admin.class.php:218 +msgid "Really overwrite animation?" +msgstr "Animation wirklich überschreiben?" + +#: ../admin/revslider-admin.class.php:219 +msgid "Default animations can't be deleted" +msgstr "Default Animationen können nicht gelöscht werden" + +#: ../admin/revslider-admin.class.php:220 +msgid "Must be greater than start time" +msgstr "Muss grösser als Start Zeit sein" + +#: ../admin/revslider-admin.class.php:221 +msgid "Selected layer not set" +msgstr "Gewählter Layer nicht gesetzt" + +#: ../admin/revslider-admin.class.php:222 +msgid "Edit Layer Start" +msgstr "Editiere Layer Start" + +#: ../admin/revslider-admin.class.php:223 +msgid "Edit Layer End" +msgstr "Editiere Layer Ende" + +#: ../admin/revslider-admin.class.php:224 +msgid "Default Animations can't be renamed" +msgstr "Default Animationen können nicht umbenannt werden" + +#: ../admin/revslider-admin.class.php:225 +msgid "Animationname already existing" +msgstr "Animationsname existiert bereits" + +#: ../admin/revslider-admin.class.php:226 +msgid "CSS classname already existing" +msgstr "CSS Classname existiert bereits" + +#: ../admin/revslider-admin.class.php:227 +msgid "Original CSS classname not found" +msgstr "Original CSS Classname nicht gefunden" + +#: ../admin/revslider-admin.class.php:228 +msgid "Enter a correct class name" +msgstr "Bitte richtigen Classnamen eingeben" + +#: ../admin/revslider-admin.class.php:229 +msgid "Class not found in database" +msgstr "Klasse nicht in Datenbank gefunden" + +#: ../admin/revslider-admin.class.php:230 +msgid "CSS classname not found" +msgstr "CSS Klassenname nicht gefunden" + +#: ../admin/revslider-admin.class.php:231 +msgid "Delete this caption? This may affect other Slider" +msgstr "Diese Caption löschen? Es könnte andere Slider beeinflussen" + +#: ../admin/revslider-admin.class.php:232 +msgid "" +"This will update the Class with the current set Style settings, this may " +"affect other Sliders. Proceed?" +msgstr "" +"Dies wird die Klasse mit den aktuellen Style Einstellung überschreiben und " +"andere Slider beeinflussen. Fortfahren?" + +#: ../admin/revslider-admin.class.php:233 +msgid "Template will have the state of the last save, proceed?" +msgstr "Template wird auf den letzten Stand zurückgesetzt, fortfahren?" + +#: ../admin/revslider-admin.class.php:234 +msgid "Please enter a Slide title" +msgstr "Bitte Slide Titel eingeben" + +#: ../admin/revslider-admin.class.php:235 +msgid "Please Wait a Moment" +msgstr "Bitte warten" + +#: ../admin/revslider-admin.class.php:236 ../admin/views/templates/slide-selector. +#: php:227 ../admin/views/templates/slides-list.php:146 +msgid "Copy / Move" +msgstr "Kopieren / Verschieben" + +#: ../admin/revslider-admin.class.php:237 +msgid "Preset Loaded" +msgstr "Preset geladen" + +#: ../admin/revslider-admin.class.php:238 ../admin/views/templates/slide-selector. +#: php:253 +msgid "Add Bulk Slides" +msgstr "Bulk Slides hinzufügen" + +#: ../admin/revslider-admin.class.php:240 ../admin/views/navigation-editor.php:38 +#: ../admin/views/templates/slider-main-options.php:2453 +msgid "Arrows" +msgstr "Pfeile" + +#: ../admin/revslider-admin.class.php:241 ../admin/views/navigation-editor.php:39 +#: ../admin/views/templates/slider-main-options.php:2454 +msgid "Bullets" +msgstr "Bullets" + +#: ../admin/revslider-admin.class.php:242 ../admin/views/templates/slider-main- +#: options.php:2731 +msgid "Thumbnails" +msgstr "Thumbnails" + +#: ../admin/revslider-admin.class.php:243 ../admin/views/navigation-editor.php:41 +#: ../admin/views/templates/slider-main-options.php:2455 .. +#: admin/views/templates/slider-main-options.php:2903 +msgid "Tabs" +msgstr "Tabs" + +#: ../admin/revslider-admin.class.php:244 +msgid "Delete this Navigation?" +msgstr "Diese Navigation löschen?" + +#: ../admin/revslider-admin.class.php:245 +msgid "Navigation name could not be updated" +msgstr "Navigations Name kann nicht aktualisiert werden" + +#: ../admin/revslider-admin.class.php:246 +msgid "Name too short, at least 3 letters between a-zA-z needed" +msgstr "Name zu kurz, mind. 3 Buchstaben benötigt (a-z A-z)" + +#: ../admin/revslider-admin.class.php:247 +msgid "Navigation name already exists, please choose a different name" +msgstr "Navigations Name existiert, bitte einen anderen Namen wählen" + +#: ../admin/revslider-admin.class.php:248 +msgid "Remove current element from Navigation?" +msgstr "Aktuelles Element aus Navigation entfernen?" + +#: ../admin/revslider-admin.class.php:249 +msgid "This navigation element does not exist, create one?" +msgstr "Dieses Navigations Element existiert nicht, anlegen?" + +#: ../admin/revslider-admin.class.php:250 +msgid "Overwrite current animation?" +msgstr "Aktuelle Animation überschreiben?" + +#: ../admin/revslider-admin.class.php:251 +msgid "Default animations can't be changed" +msgstr "Default Animationen können nicht geändert werden" + +#: ../admin/revslider-admin.class.php:252 +msgid "Animation already existing with given handle, please choose a different name." +msgstr "" +"Animation existiert bereits mit gegebenen Handle, bitte einen anderen Namen " +"wählen." + +#: ../admin/revslider-admin.class.php:253 +msgid "Really delete animation:" +msgstr "Animation wirklich löschen:" + +#: ../admin/revslider-admin.class.php:254 +msgid "This will reset the navigation, continue?" +msgstr "Dies wird die Navigation zurücksetzen, fortfahren?" + +#: ../admin/revslider-admin.class.php:255 +msgid "Preset name already exists, please choose a different name" +msgstr "Preset Name existiert bereits, bitte anderen Namen wählen" + +#: ../admin/revslider-admin.class.php:256 +msgid "Really delete this preset?" +msgstr "Diesen Preset wirklich löschen?" + +#: ../admin/revslider-admin.class.php:257 +msgid "This will update the preset with the current settings. Proceed?" +msgstr "Die Presets werden auf die aktuellen Einstellungen geändert. Fortfahren?" + +#: ../admin/revslider-admin.class.php:258 +msgid "Maybe wrong YoutTube ID given" +msgstr "Evt. falsche YouTube ID" + +#: ../admin/revslider-admin.class.php:259 +msgid "Preset not found" +msgstr "Preset nicht gefunden" + +#: ../admin/revslider-admin.class.php:260 +msgid "Cover Image need to be set for videos" +msgstr "Cover Bild für Videos muss gewählt werden" + +#: ../admin/revslider-admin.class.php:261 +msgid "Really remove this action?" +msgstr "Diese Action wirklich entfernen?" + +#: ../admin/revslider-admin.class.php:262 +msgid "Layer is triggered by " +msgstr "Layer ist ausgelöst von" + +#: ../admin/revslider-admin.class.php:263 +msgid " due to action: " +msgstr "durch Action:" + +#: ../admin/revslider-admin.class.php:264 +msgid "layer:" +msgstr "layer:" + +#: ../admin/revslider-admin.class.php:265 +msgid "Start Layer \"in\" animation" +msgstr "Start Layer \"in\" animation" + +#: ../admin/revslider-admin.class.php:266 +msgid "Start Layer \"out\" animation" +msgstr "Start Layer \"out\" animation" + +#: ../admin/revslider-admin.class.php:267 ../admin/views/templates/slide-stage. +#: php:2257 +msgid "Start Video" +msgstr "Start Video" + +#: ../admin/revslider-admin.class.php:268 ../admin/views/templates/slide-stage. +#: php:2258 +msgid "Stop Video" +msgstr "Stop Video" + +#: ../admin/revslider-admin.class.php:269 ../admin/views/templates/slide-stage. +#: php:2256 +msgid "Toggle Layer Animation" +msgstr "Layer Animation Umschalten" + +#: ../admin/revslider-admin.class.php:270 ../admin/views/templates/slide-stage. +#: php:2259 +msgid "Toggle Video" +msgstr "Video Umschalten" + +#: ../admin/revslider-admin.class.php:271 ../admin/views/templates/slider-main- +#: options.php:3812 +msgid "Last Slide" +msgstr "Letzter Slide\n" + +#: ../admin/revslider-admin.class.php:272 ../admin/views/templates/slide-stage. +#: php:2260 +msgid "Simulate Click" +msgstr "Click simulieren" + +#: ../admin/revslider-admin.class.php:273 +msgid "Toogle Class" +msgstr "Klasse Umschalten" + +#: ../admin/revslider-admin.class.php:274 +msgid "Copy hover styles to idle?" +msgstr "Kopiere Hover Styles zu Idle?" + +#: ../admin/revslider-admin.class.php:275 +msgid "Copy idle styles to hover?" +msgstr "Kopiere Idle Styles zu Hover?" + +#: ../admin/revslider-admin.class.php:276 +msgid "Please select at least one device type" +msgstr "Bitte mindestens einen Device-Typ wählen" + +#: ../admin/revslider-admin.class.php:277 +msgid "Please select an existing Style Template" +msgstr "Bitte existierendes Style Template wählen" + +#: ../admin/revslider-admin.class.php:278 +msgid "Can not remove last transition!" +msgstr "Letzte Transition kann nicht gelöscht werden!" + +#: ../admin/revslider-admin.class.php:279 +msgid "Given animation name is a default animation. These can not be changed." +msgstr "" +"Animation mit diesem Namen ist eine Default Animation und kann nicht " +"geändert werden." + +#: ../admin/revslider-admin.class.php:280 +msgid "Animation exists, override existing animation?" +msgstr "Animation existiert bereits, überschreiben?" + +#: ../admin/revslider-admin.class.php:290 +msgid "(never show this message again)  X" +msgstr "(nicht mehr zeigen)  X" + +#: ../admin/revslider-admin.class.php:290 +msgid "" +"Hi! Would you like to activate your version of Revolution Slider to receive " +"live updates & get premium support? This is optional and not needed if the " +"slider came bundled with a theme. " +msgstr "" +"Hallo! Möchten Sie Ihre Version von Revolution Slider aktivieren, um Live-" +"Updates und Zugang zum Premium-Support \n" +"zu erhalten\n" +"? Dies ist optional und nicht erforderlich, wenn der Slider in ein Theme " +"integriert kam." + +#: ../admin/revslider-admin.class.php:342 +msgid "Close & don't show againX" +msgstr "" +"Schließen & nicht mehr anzeigen\n" +"X" + +#: ../admin/revslider-admin.class.php:415 +msgid "Choose Slide Template" +msgstr "Wählen Sie ein Slide Template" + +#: ../admin/revslider-admin.class.php:511 +msgid "importing slider settings and data..." +msgstr "importiere Slider Einstellung und Daten..." + +#: ../admin/revslider-admin.class.php:527 ../admin/revslider-admin.class.php:548 . +#: ./admin/revslider-admin.class.php:572 +msgid "Go Back" +msgstr "Zurück" + +#: ../admin/revslider-admin.class.php:530 ../admin/revslider-admin.class.php:574 +msgid "Slider Import Success, redirecting..." +msgstr "Slider Import Erfolgreich. Sie werden weitergeleitet..." + +#: ../admin/revslider-admin.class.php:543 +msgid "importing template slider settings and data..." +msgstr "importiere Template Slider Einstellung und Daten..." + +#: ../admin/revslider-admin.class.php:547 +msgid "ID missing, something went wrong. Please try again!" +msgstr "ID nicht gefunden, etwas lief falsch. Bitte nochmal versuchen!" + +#: ../admin/revslider-admin.class.php:607 ../admin/revslider-admin.class.php:1322 +#: ../admin/revslider-admin.class.php:1328 +msgid "Slider not found" +msgstr "Slider nicht gefunden" + +#: ../admin/revslider-admin.class.php:619 +msgid "Slider setting could not be changed" +msgstr "Slider Einstellungen können nicht geändert werden" + +#: ../admin/revslider-admin.class.php:651 ../includes/operations.class.php:2954 +msgid "Missing values to add preset" +msgstr "Werte fehlen, um Preset hinzuzufügen" + +#: ../admin/revslider-admin.class.php:659 ../admin/revslider-admin.class.php:676 +msgid "Preset created" +msgstr "Preset erstellt" + +#: ../admin/revslider-admin.class.php:668 ../includes/operations.class.php:3000 +msgid "Missing values to update preset" +msgstr "Werte fehlen, um Preset zu aktualisieren" + +#: ../admin/revslider-admin.class.php:685 ../includes/operations.class.php:2976 +msgid "Missing values to remove preset" +msgstr "Werte fehlen, um Preset zu entfernen" + +#: ../admin/revslider-admin.class.php:693 +msgid "Preset deleted" +msgstr "Preset gelöscht" + +#: ../admin/revslider-admin.class.php:739 +msgid "Slider created" +msgstr "Slider erstellt" + +#: ../admin/revslider-admin.class.php:745 +msgid "Slider updated" +msgstr "Slider aktualisiert" + +#: ../admin/revslider-admin.class.php:754 +msgid "Template can't be deleted, it is still being used by the following Sliders: " +msgstr "Template kann nicht gelöscht werden, es wird von folgenden Slidern genutzt:" + +#: ../admin/revslider-admin.class.php:757 ../admin/revslider-admin.class.php:759 +msgid "Slider deleted" +msgstr "Slider gelöscht" + +#: ../admin/revslider-admin.class.php:767 ../admin/revslider-admin.class.php:842 +msgid "Success! Refreshing page..." +msgstr "Erfolgreich! Aktualisiere Seite..." + +#: ../admin/revslider-admin.class.php:775 +msgid "Slide Created" +msgstr "Slide Erstellt" + +#: ../admin/revslider-admin.class.php:777 +msgid "Slides Created" +msgstr "Slides Erstellt" + +#: ../admin/revslider-admin.class.php:787 +msgid "Slide Created, redirecting..." +msgstr "Slide Erstellt. Sie werden weitergeleitet..." + +#: ../admin/revslider-admin.class.php:793 +msgid "Missing redirect ID!" +msgstr "Weiterleitung ID fehlt!" + +#: ../admin/revslider-admin.class.php:800 +msgid "Slide copied to current Slider, redirecting..." +msgstr "Slide zu aktuellem Slider kopiert, Sie werden weitergeleitet..." + +#: ../admin/revslider-admin.class.php:806 +msgid "Slide updated" +msgstr "Slide aktualisiert" + +#: ../admin/revslider-admin.class.php:810 +msgid "Static Global Layers updated" +msgstr "Static Global Layers aktualisiert" + +#: ../admin/revslider-admin.class.php:816 +msgid "Post deleted" +msgstr "Beitrag gelöscht" + +#: ../admin/revslider-admin.class.php:818 +msgid "Slide deleted" +msgstr "Slide gelöscht" + +#: ../admin/revslider-admin.class.php:831 ../admin/revslider-admin.class.php:833 +msgid "Slide duplicated" +msgstr "Slide dupliziert" + +#: ../admin/revslider-admin.class.php:840 +msgid "Success!" +msgstr "Erfolgreich!" + +#: ../admin/revslider-admin.class.php:848 +msgid "No valid Slide ID given" +msgstr "Keine valide Slide ID angegeben" + +#: ../admin/revslider-admin.class.php:852 ../admin/revslider-admin.class.php:856 +msgid "No valid title given" +msgstr "Kein valider Title angegeben" + +#: ../admin/revslider-admin.class.php:863 +msgid "Could not save Slide as Template" +msgstr "Kann Slide nicht als Template speichern" + +#: ../admin/revslider-admin.class.php:879 +msgid "Slide added to Templates" +msgstr "Slide zu Templates hinzugefügt" + +#: ../admin/revslider-admin.class.php:907 ../admin/revslider-admin.class.php:929 . +#: ./admin/revslider-admin.class.php:950 ../admin/revslider-admin.class.php:999 +msgid "CSS saved" +msgstr "CSS gespeichert" + +#: ../admin/revslider-admin.class.php:910 ../admin/revslider-admin.class.php:932 . +#: ./admin/revslider-admin.class.php:953 +msgid "CSS could not be saved" +msgstr "CSS konnten nicht gespeichert werden" + +#: ../admin/revslider-admin.class.php:971 +msgid "Class name renamed" +msgstr "Klassen Name umbenannt" + +#: ../admin/revslider-admin.class.php:987 +msgid "Style deleted!" +msgstr "Style gelöscht!" + +#: ../admin/revslider-admin.class.php:1003 ../admin/revslider-admin.class.php: +#: 1007 ../admin/revslider-admin.class.php:1011 +msgid "Animation saved" +msgstr "Animation gespeichert" + +#: ../admin/revslider-admin.class.php:1015 +msgid "Animation deleted" +msgstr "Animation gelöscht" + +#: ../admin/revslider-admin.class.php:1019 +msgid "Order updated" +msgstr "Reihenfolge aktualisiert" + +#: ../admin/revslider-admin.class.php:1023 +msgid "Title updated" +msgstr "Titel aktualisiert" + +#: ../admin/revslider-admin.class.php:1028 +msgid "Slide changed" +msgstr "Slide geändert" + +#: ../admin/revslider-admin.class.php:1048 +msgid "Slide is now the new active Hero Slide" +msgstr "Slide ist nun aktiver Hero Slide" + +#: ../admin/revslider-admin.class.php:1056 +msgid "General settings updated" +msgstr "Generelle Einstellungen aktualisiert" + +#: ../admin/revslider-admin.class.php:1060 +msgid "Sortby updated" +msgstr "Sortierung aktualisiert" + +#: ../admin/revslider-admin.class.php:1064 +msgid "Image urls replaced" +msgstr "Bild URLs ersetzt" + +#: ../admin/revslider-admin.class.php:1068 +msgid "Settings in all Slides changed" +msgstr "Einstellungen in allen Slides geändert" + +#: ../admin/revslider-admin.class.php:1075 +msgid "The API key, the Purchase Code and the Username need to be set!" +msgstr "Der API Key, der Purchase Code und der Username müssen gegeben sein!" + +#: ../admin/revslider-admin.class.php:1080 +msgid "Purchase Code Successfully Activated" +msgstr "Purchase Code erfolgreich aktiviert" + +#: ../admin/revslider-admin.class.php:1082 +msgid "Purchase Code is invalid" +msgstr "Purchase Code ist nicht valide" + +#: ../admin/revslider-admin.class.php:1089 +msgid "Successfully removed validation" +msgstr "Validation erfolgreich entfernt" + +#: ../admin/revslider-admin.class.php:1091 +msgid "Could not remove Validation!" +msgstr "Kann Validation nicht entfernen!" + +#: ../admin/revslider-admin.class.php:1096 ../admin/revslider-admin.class.php:1103 +msgid "." +msgstr "." + +#: ../admin/revslider-admin.class.php:1109 +msgid "Setting Changed!" +msgstr "Einstellungen geändert!" + +#: ../admin/revslider-admin.class.php:1114 +msgid "No ID given" +msgstr "Keine ID gegeben" + +#: ../admin/revslider-admin.class.php:1124 ../admin/revslider-admin.class.php:1142 +msgid "Invalid Email" +msgstr "Nicht valide Email" + +#: ../admin/revslider-admin.class.php:1127 +msgid "Success! Please check your Emails to finish the subscribtion" +msgstr "Erfolgreich! Bitte prüfen Sie Ihre Emails, um den Vorgang abzuschliessen" + +#: ../admin/revslider-admin.class.php:1130 ../admin/revslider-admin.class.php:1148 +msgid "Invalid Email/Could not connect to the Newsletter server" +msgstr "Nicht valide Email/Keine Verbindung zum Newsletter Server" + +#: ../admin/revslider-admin.class.php:1133 ../admin/revslider-admin.class.php:1151 +msgid "No Email given" +msgstr "Keine Email" + +#: ../admin/revslider-admin.class.php:1145 +msgid "Success! Please check your Emails to finish the process" +msgstr "Erfolgreich! Bitte prüfen Sie Ihre Emails, um den Vorgang abzuschliessen" + +#: ../admin/revslider-admin.class.php:1171 +msgid "Navigation saved/updated" +msgstr "Navigation gespeichert/aktualisiert" + +#: ../admin/revslider-admin.class.php:1179 +msgid "Navigations updated" +msgstr "Navigationen aktualisiert" + +#: ../admin/revslider-admin.class.php:1190 +msgid "Navigation deleted" +msgstr "Navigation gelöscht" + +#: ../admin/revslider-admin.class.php:1194 +msgid "Wrong ID given" +msgstr "Falsche ID angegeben" + +#: ../admin/revslider-admin.class.php:1201 +msgid "Successfully fetched Facebook albums" +msgstr "Facebook Alben erfolgreich eingelesen" + +#: ../admin/revslider-admin.class.php:1204 +msgid "Could not fetch Facebook albums" +msgstr "" +"Kann Facebook Alben nicht \n" +"einlesen" + +#: ../admin/revslider-admin.class.php:1209 +msgid "Cleared Albums" +msgstr "Alben geleert" + +#: ../admin/revslider-admin.class.php:1218 +msgid "Successfully fetched flickr photosets" +msgstr "Flickr Photosets gelesen" + +#: ../admin/revslider-admin.class.php:1221 +msgid "Could not fetch flickr photosets" +msgstr "Kann Flickr Photosets nicht einlesen" + +#: ../admin/revslider-admin.class.php:1227 +msgid "Cleared Photosets" +msgstr "Photosets geleert" + +#: ../admin/revslider-admin.class.php:1230 +msgid "No User URL - Could not fetch flickr photosets" +msgstr "Keine User URL - Kann Flickr Photosets nicht einlesen" + +#: ../admin/revslider-admin.class.php:1234 +msgid "No API KEY - Could not fetch flickr photosets" +msgstr "Kein API Key - Kann Photosets nicht einlesen" + +#: ../admin/revslider-admin.class.php:1243 +msgid "Successfully fetched YouTube playlists" +msgstr "YouTube Playlist erfolgreich eingelsen" + +#: ../admin/revslider-admin.class.php:1246 +msgid "Could not fetch YouTube playlists" +msgstr "Kann YouTube Playlists nicht einlesen" + +#: ../admin/revslider-admin.class.php:1332 +msgid "No Data Received" +msgstr "Keine Daten empfangen" + +#: ../admin/revslider-admin.class.php:1342 +msgid "Loading Error" +msgstr "Ladefehler" + +#: ../admin/revslider-admin.class.php:1344 +msgid "Loading Error: " +msgstr "Ladefehler:" + +#: ../admin/views/master-view.php:55 ../admin/views/system/validation.php:52 +msgid "Please Wait..." +msgstr "Bitte warten..." + +#: ../admin/views/navigation-editor.php:33 +msgid "Select the Navigation Category to Edit" +msgstr "Navigations Kategorie wählen" + +#: ../admin/views/navigation-editor.php:33 +msgid "Add New" +msgstr "Neu einfügen" + +#: ../admin/views/navigation-editor.php:36 +msgid "#ID" +msgstr "#ID" + +#: ../admin/views/navigation-editor.php:37 +msgid "Skin Name" +msgstr "Skin Name" + +#: ../admin/views/navigation-editor.php:40 ../admin/views/templates/slider-main- +#: options.php:2456 +msgid "Thumbs" +msgstr "Thumbs" + +#: ../admin/views/navigation-editor.php:42 ../admin/views/navigation-editor.php: +#: 67 ../admin/views/templates/slide-stage.php:34 +msgid "Actions" +msgstr "Aktionen" + +#: ../admin/views/navigation-editor.php:58 +msgid "Editing" +msgstr "Editieren" + +#: ../admin/views/navigation-editor.php:58 ../admin/views/system/dialog-video.php: +#: 227 +msgid "Remove" +msgstr "Entfernen" + +#: ../admin/views/navigation-editor.php:61 +msgid "Markup" +msgstr "Markup" + +#: ../admin/views/navigation-editor.php:69 ../admin/views/navigation-editor.php: +#: 70 ../admin/views/navigation-editor.php:71 ../admin/views/navigation-editor. +#: php:72 +msgid "Reset Defaults" +msgstr "Defaults zurücksetzen" + +#: ../admin/views/navigation-editor.php:73 +msgid "Parameters" +msgstr "Parameter" + +#: ../admin/views/navigation-editor.php:75 ../admin/views/templates/slide-general- +#: settings.php:484 +msgid "Slide Title" +msgstr "Slide Titel" + +#: ../admin/views/navigation-editor.php:76 +msgid "Slide Description" +msgstr "Slide Beschreibung" + +#: ../admin/views/navigation-editor.php:80 +msgid "Parameter " +msgstr "Parameter" + +#: ../admin/views/navigation-editor.php:94 ../includes/operations.class.php:1409 +msgid "CSS" +msgstr "CSS" + +#: ../admin/views/navigation-editor.php:100 +msgid "Style Helper" +msgstr "Style Hilfe" + +#: ../admin/views/navigation-editor.php:102 +msgid "Color Value" +msgstr "Farbwert" + +#: ../admin/views/navigation-editor.php:106 ../admin/views/navigation-editor.php: +#: 120 ../admin/views/navigation-editor.php:138 ../admin/views/navigation-editor. +#: php:154 ../admin/views/navigation-editor.php:170 ../admin/views/navigation- +#: editor.php:184 ../admin/views/templates/template-selector.php:17 .. +#: admin/views/templates/template-slider-selector.php:16 +msgid "Add" +msgstr "Hinzufügen" + +#: ../admin/views/navigation-editor.php:109 ../admin/views/templates/slide-stage. +#: php:2157 ../admin/views/templates/slider-main-options.php:3248 +msgid "Border Radius" +msgstr "Rand Radius" + +#: ../admin/views/navigation-editor.php:111 +msgid "Top Left" +msgstr "Oben Links" + +#: ../admin/views/navigation-editor.php:113 +msgid "Top Right" +msgstr "Oben Rechts" + +#: ../admin/views/navigation-editor.php:115 +msgid "Bottom Right" +msgstr "Unten Rechts" + +#: ../admin/views/navigation-editor.php:117 +msgid "Bottom Left" +msgstr "Unten Links" + +#: ../admin/views/navigation-editor.php:123 ../admin/views/templates/slide-stage. +#: php:244 ../admin/views/templates/slide-stage.php:512 .. +#: admin/views/templates/slide-stage.php:2005 ../admin/views/templates/slide- +#: stage.php:2070 ../admin/views/templates/slide-stage.php:2136 +msgid "Border" +msgstr "Rand" + +#: ../admin/views/navigation-editor.php:125 ../admin/views/templates/slider-main- +#: options.php:2108 ../admin/views/templates/slider-main-options.php:2540 .. +#: admin/views/templates/slider-main-options.php:2570 .. +#: admin/views/templates/slider-main-options.php:2683 .. +#: admin/views/templates/slider-main-options.php:2853 .. +#: admin/views/templates/slider-main-options.php:3021 .. +#: admin/views/templates/slider-main-options.php:3356 +msgid "Top" +msgstr "Oben" + +#: ../admin/views/navigation-editor.php:127 ../admin/views/templates/slide-stage. +#: php:282 ../admin/views/templates/slider-main-options.php:2318 .. +#: admin/views/templates/slider-main-options.php:2533 .. +#: admin/views/templates/slider-main-options.php:2562 .. +#: admin/views/templates/slider-main-options.php:2677 .. +#: admin/views/templates/slider-main-options.php:2847 .. +#: admin/views/templates/slider-main-options.php:3015 .. +#: admin/views/templates/slider-main-options.php:3350 +msgid "Right" +msgstr "Rechts" + +#: ../admin/views/navigation-editor.php:129 ../admin/views/templates/slider-main- +#: options.php:2109 ../admin/views/templates/slider-main-options.php:2542 .. +#: admin/views/templates/slider-main-options.php:2572 .. +#: admin/views/templates/slider-main-options.php:2685 .. +#: admin/views/templates/slider-main-options.php:2855 .. +#: admin/views/templates/slider-main-options.php:3023 .. +#: admin/views/templates/slider-main-options.php:3358 +msgid "Bottom" +msgstr "Unten" + +#: ../admin/views/navigation-editor.php:131 ../admin/views/templates/slide-stage. +#: php:280 ../admin/views/templates/slider-main-options.php:2316 .. +#: admin/views/templates/slider-main-options.php:2531 .. +#: admin/views/templates/slider-main-options.php:2560 .. +#: admin/views/templates/slider-main-options.php:2675 .. +#: admin/views/templates/slider-main-options.php:2845 .. +#: admin/views/templates/slider-main-options.php:3013 .. +#: admin/views/templates/slider-main-options.php:3348 +msgid "Left" +msgstr "Links" + +#: ../admin/views/navigation-editor.php:133 ../admin/views/navigation-editor.php: +#: 149 ../admin/views/navigation-editor.php:165 ../admin/views/templates/slide- +#: stage.php:751 ../admin/views/templates/slide-stage.php:927 +msgid "Opacity" +msgstr "Deckkraft" + +#: ../admin/views/navigation-editor.php:141 +msgid "Text-Shadow" +msgstr "Text-Schatten" + +#: ../admin/views/navigation-editor.php:143 ../admin/views/navigation-editor.php: +#: 159 ../admin/views/templates/slide-stage.php:1127 +msgid "Angle" +msgstr "Winkel" + +#: ../admin/views/navigation-editor.php:145 ../admin/views/navigation-editor.php: +#: 161 +msgid "Distance" +msgstr "Distanz" + +#: ../admin/views/navigation-editor.php:147 ../admin/views/navigation-editor.php: +#: 163 +msgid "Blur" +msgstr "Verwischen" + +#: ../admin/views/navigation-editor.php:157 +msgid "Box-Shadow" +msgstr "Box-Schatten" + +#: ../admin/views/navigation-editor.php:173 ../admin/views/templates/slide-stage. +#: php:153 ../admin/views/templates/slide-stage.php:154 .. +#: admin/views/templates/slide-stage.php:2030 ../admin/views/templates/slide- +#: stage.php:2031 +msgid "Font Family" +msgstr "Font Family" + +#: ../admin/views/navigation-editor.php:190 +msgid "Resets" +msgstr "Zurücksetzen" + +#: ../admin/views/navigation-editor.php:192 ../admin/views/navigation-editor.php: +#: 194 ../admin/views/navigation-editor.php:196 ../admin/views/navigation-editor. +#: php:198 +msgid "Classes & Style" +msgstr "Klassen & Style" + +#: ../admin/views/navigation-editor.php:193 ../admin/views/navigation-editor.php: +#: 195 ../admin/views/navigation-editor.php:197 ../admin/views/navigation-editor. +#: php:199 +msgid "Only Classes" +msgstr "Nur Klasssen" + +#: ../admin/views/navigation-editor.php:218 +msgid "Live Preview - Hover & Click for test" +msgstr "Live Preview - Hover & Klick für Test" + +#: ../admin/views/navigation-editor.php:220 +msgid "Suggested Width:" +msgstr "Vorgeschlagene Breite:" + +#: ../admin/views/navigation-editor.php:222 +msgid "Suggested Height:" +msgstr "Vorgeschlagene Höhe:" + +#: ../admin/views/navigation-editor.php:241 +msgid "Save All Changes" +msgstr "Alle Änderungen speichern" + +#: ../admin/views/navigation-editor.php:302 +msgid "View" +msgstr "Ansehen" + +#: ../admin/views/navigation-editor.php:302 +msgid "Edit" +msgstr "Editieren" + +#: ../admin/views/navigation-editor.php:1236 +msgid "Custom Navigations" +msgstr "Benutzerdefinierte Navigationen" + +#: ../admin/views/navigation-editor.php:1239 +msgid "Default Navigations" +msgstr "Default Navigationen" + +#: ../admin/views/slide-editor.php:312 +msgid "Slider:" +msgstr "Slider:" + +#: ../admin/views/slide-editor.php:315 +msgid "Edit Template Slide" +msgstr "Bearbeite Template Slide" + +#: ../admin/views/slide-editor.php:317 ../admin/views/templates/slides-list.php: +#: 107 ../admin/views/templates/wpml-selector.php:10 +msgid "Edit Slide" +msgstr "Bearbeiten" + +#: ../admin/views/slide-editor.php:319 ../admin/views/slider-overview.php:290 +msgid "Title:" +msgstr "Titel:" + +#: ../admin/views/slide-editor.php:322 ../admin/views/slider-overview.php:67 .. +#: admin/views/templates/slider-main-options.php:33 .. +#: admin/views/templates/slides.php:10 +msgid "Help" +msgstr "Hilfe" + +#: ../admin/views/slide-editor.php:351 +msgid "" +"Warning!!! The jquery ui javascript include that is loaded by some of " +"the plugins are custom made and not contain needed components like " +"'autocomplete' or 'draggable' function.\n" +" Without those functions the editor may not work correctly. Please remove " +"those custom jquery ui includes in order the editor will work correctly." +msgstr "" +" Achtung !!! Die jQuery UI JavaScript Plugin, welches durch mind. " +"ein Plugin geladen wird ist angepasst und benötigte Komponenten fehlen, z. B." +" \"\n" +"autocomplete\n" +"\" oder \"draggable\".\n" +"Ohne diese funktioniert der Editor möglicherweise nicht richtig. Bitte " +"entfernen Sie diese benutzerdefinierte jQuery UIs, damit der Editor korrekt " +"funktionieren kann." + +#: ../admin/views/slide-editor.php:365 +msgid "Insert Meta" +msgstr "Meta einfügen" + +#: ../admin/views/slide-editor.php:372 +msgid "Post Replace Placeholders:" +msgstr "Beitrag Ersetzungs Platzhalter:" + +#: ../admin/views/slide-editor.php:374 +msgid "Any custom meta tag" +msgstr "Irgen ein definierted meta tag" + +#: ../admin/views/slide-editor.php:375 ../admin/views/slide-editor.php:421 +msgid "Post Title" +msgstr "Beitrags Titel" + +#: ../admin/views/slide-editor.php:376 +msgid "Post Excerpt" +msgstr "Beitrags Auszug" + +#: ../admin/views/slide-editor.php:377 +msgid "Post Alias" +msgstr "Beitrags Alias" + +#: ../admin/views/slide-editor.php:378 ../admin/views/slide-editor.php:422 +msgid "Post content" +msgstr "Beitrags Inhalt" + +#: ../admin/views/slide-editor.php:379 ../admin/views/slide-editor.php:423 .. +#: admin/views/slide-editor.php:531 +msgid "The link to the post" +msgstr "Der Link zu dem Beitrag" + +#: ../admin/views/slide-editor.php:380 ../admin/views/slide-editor.php:424 .. +#: admin/views/slide-editor.php:445 +msgid "Date created" +msgstr "Erstellungsdatum" + +#: ../admin/views/slide-editor.php:381 +msgid "Date modified" +msgstr "Modifizierungsdatum" + +#: ../admin/views/slide-editor.php:382 +msgid "Author name" +msgstr "Autor Name" + +#: ../admin/views/slide-editor.php:383 +msgid "Number of comments" +msgstr "Anzahl der Kommentare" + +#: ../admin/views/slide-editor.php:384 +msgid "List of categories with links" +msgstr "Liste der Kategorien mit Links" + +#: ../admin/views/slide-editor.php:385 +msgid "List of tags with links" +msgstr "Liste der Schlagworte mit Links" + +#: ../admin/views/slide-editor.php:389 +msgid "Featured Image URL" +msgstr "Post Bild URL" + +#: ../admin/views/slide-editor.php:390 +msgid "Featured Image <img />" +msgstr "Post Bild <img />" + +#: ../admin/views/slide-editor.php:398 +msgid "Events Placeholders:" +msgstr "Event Platzhalter:" + +#: ../admin/views/slide-editor.php:400 +msgid "Event start date" +msgstr "Event Startdatum" + +#: ../admin/views/slide-editor.php:401 +msgid "Event end date" +msgstr "Event Enddatum" + +#: ../admin/views/slide-editor.php:402 +msgid "Event start time" +msgstr "Event Startzeit" + +#: ../admin/views/slide-editor.php:403 +msgid "Event end time" +msgstr "Event Endzeit" + +#: ../admin/views/slide-editor.php:404 +msgid "Event ID" +msgstr "Event ID" + +#: ../admin/views/slide-editor.php:405 +msgid "Event location name" +msgstr "Event Lokation Name" + +#: ../admin/views/slide-editor.php:406 +msgid "Event location slug" +msgstr "Event Lokation slug" + +#: ../admin/views/slide-editor.php:407 +msgid "Event location address" +msgstr "Event Lokation Adresse" + +#: ../admin/views/slide-editor.php:408 +msgid "Event location town" +msgstr "Event Lokation Stadt" + +#: ../admin/views/slide-editor.php:409 +msgid "Event location state" +msgstr "Event Lokation Bundesland" + +#: ../admin/views/slide-editor.php:410 +msgid "Event location postcode" +msgstr "Event Lokation Postleitzahl" + +#: ../admin/views/slide-editor.php:411 +msgid "Event location region" +msgstr "Event Location Region" + +#: ../admin/views/slide-editor.php:412 +msgid "Event location country" +msgstr "Event Lokation Land" + +#: ../admin/views/slide-editor.php:419 +msgid "Flickr Placeholders:" +msgstr "Flickr Platzhalter:" + +#: ../admin/views/slide-editor.php:425 ../admin/views/slide-editor.php:446 .. +#: admin/views/slide-editor.php:468 ../admin/views/slide-editor.php:491 .. +#: admin/views/slide-editor.php:533 +msgid "Username" +msgstr "Benutzername" + +#: ../admin/views/slide-editor.php:426 +msgid "Views" +msgstr "Ansichten" + +#: ../admin/views/slide-editor.php:430 ../admin/views/slide-editor.php:452 .. +#: admin/views/slide-editor.php:474 ../admin/views/slide-editor.php:496 .. +#: admin/views/slide-editor.php:516 ../admin/views/slide-editor.php:540 +msgid "Image URL" +msgstr "Bild URL" + +#: ../admin/views/slide-editor.php:431 ../admin/views/slide-editor.php:453 .. +#: admin/views/slide-editor.php:475 ../admin/views/slide-editor.php:497 .. +#: admin/views/slide-editor.php:517 ../admin/views/slide-editor.php:541 +msgid "Image <img />" +msgstr "" +"Bild \n" +"<img />" + +#: ../admin/views/slide-editor.php:440 +msgid "Instagram Placeholders:" +msgstr "Instagram Platzhalter:" + +#: ../admin/views/slide-editor.php:442 ../admin/views/slide-editor.php:464 .. +#: admin/views/slide-editor.php:486 ../admin/views/slide-editor.php:508 .. +#: admin/views/slide-editor.php:528 ../admin/views/templates/slide-stage.php: +#: 1241 ../admin/views/templates/slider-main-options.php:433 ../includes/widget. +#: class.php:61 +msgid "Title" +msgstr "Titel" + +#: ../admin/views/slide-editor.php:443 ../admin/views/slide-editor.php:465 .. +#: admin/views/slide-editor.php:487 ../admin/views/slide-editor.php:510 .. +#: admin/views/slide-editor.php:530 +msgid "Content" +msgstr "Inhalt" + +#: ../admin/views/slide-editor.php:444 ../admin/views/slide-editor.php:466 .. +#: admin/views/slide-editor.php:488 ../admin/views/slide-editor.php:512 +msgid "Link" +msgstr "Link" + +#: ../admin/views/slide-editor.php:447 ../admin/views/slide-editor.php:492 .. +#: admin/views/slide-editor.php:534 +msgid "Number of Likes" +msgstr "Anzahl Likes" + +#: ../admin/views/slide-editor.php:448 ../admin/views/slide-editor.php:536 +msgid "Number of Comments" +msgstr "Anzahl Kommentare" + +#: ../admin/views/slide-editor.php:462 +msgid "Twitter Placeholders:" +msgstr "Twitter Platzhalter:" + +#: ../admin/views/slide-editor.php:467 ../admin/views/slide-editor.php:489 .. +#: admin/views/slide-editor.php:511 ../admin/views/slide-editor.php:532 +msgid "Pulbishing Date" +msgstr "Veröffentlichtungs Datum" + +#: ../admin/views/slide-editor.php:469 +msgid "Retweet Count" +msgstr "Retweet Zahl" + +#: ../admin/views/slide-editor.php:470 +msgid "Favorite Count" +msgstr "Favorite Zahl" + +#: ../admin/views/slide-editor.php:484 +msgid "Facebook Placeholders:" +msgstr "Facebook Platzhalter:" + +#: ../admin/views/slide-editor.php:490 +msgid "Last Modify Date" +msgstr "Letzte Änderung" + +#: ../admin/views/slide-editor.php:506 +msgid "YouTube Placeholders:" +msgstr "YouTube Platzhalter:" + +#: ../admin/views/slide-editor.php:509 ../admin/views/slide-editor.php:529 +msgid "Excerpt" +msgstr "Auszug" + +#: ../admin/views/slide-editor.php:526 +msgid "Vimeo Placeholders:" +msgstr "Vimeo Platzhalter:" + +#: ../admin/views/slide-editor.php:535 +msgid "Number of Views" +msgstr "Anzahl Views" + +#: ../admin/views/slide-editor.php:552 ../admin/views/templates/slide-stage.php: +#: 250 ../admin/views/templates/slide-stage.php:515 +msgid "Advanced CSS" +msgstr "Fortgeschrittenes CSS" + +#: ../admin/views/slide-editor.php:555 +msgid "Style from Options" +msgstr "Style aus Optionen" + +#: ../admin/views/slide-editor.php:555 +msgid "Editable via Option Fields, Saved in the Class:" +msgstr "Editierbar via Optionen Feld, gespeichert in der Klasse:" + +#: ../admin/views/slide-editor.php:559 +msgid "Additional Custom Styling" +msgstr "Zusätzliches Custom Styling" + +#: ../admin/views/slide-editor.php:559 +msgid "Appended in the Class:" +msgstr "Zur Klasse hinzugefügt:" + +#: ../admin/views/slide-editor.php:564 ../admin/views/slide-editor.php:583 .. +#: admin/views/templates/slide-stage.php:86 ../admin/views/templates/slide-stage. +#: php:701 ../admin/views/templates/slide-stage.php:876 +msgid "Save As" +msgstr "Speichern Unter" + +#: ../admin/views/slide-editor.php:566 ../admin/views/slide-editor.php:585 +msgid "Save As:" +msgstr "Speichern unter:" + +#: ../admin/views/slide-editor.php:570 +msgid "Rename CSS" +msgstr "CSS umbennen" + +#: ../admin/views/slide-editor.php:572 ../admin/views/slide-editor.php:899 +msgid "Rename to:" +msgstr "Umbenennen zu:" + +#: ../admin/views/slide-editor.php:576 +msgid "Layer Inline CSS" +msgstr "Layer Inline CSS" + +#: ../admin/views/slide-editor.php:578 +msgid "Advanced Custom Styling" +msgstr "Fortgeschrittenes Custom Styling" + +#: ../admin/views/slide-editor.php:578 +msgid "Appended Inline to the Layer Markup" +msgstr "Inline zum Layer Markup hinzugefügt" + +#: ../admin/views/slide-editor.php:589 +msgid "Save Under" +msgstr "Speichern unter" + +#: ../admin/views/slide-editor.php:591 +msgid "Save Under:" +msgstr "Speichern unter:" + +#: ../admin/views/slide-editor.php:839 ../admin/views/slide-editor.php:881 +msgid "Save Slide" +msgstr "Slide speichern" + +#: ../admin/views/slide-editor.php:843 +msgid "Update Static Layers" +msgstr "Statische Layer aktualisieren" + +#: ../admin/views/slide-editor.php:847 +msgid "updating" +msgstr "aktualisiere" + +#: ../admin/views/slide-editor.php:849 ../admin/views/slide-editor.php:887 .. +#: admin/views/slide-overview.php:169 +msgid "Slider Settings" +msgstr "Slider Einstellungen" + +#: ../admin/views/slide-editor.php:850 +msgid "Slides Overview" +msgstr "Slides Übersicht" + +#: ../admin/views/slide-editor.php:855 ../admin/views/templates/wpml-selector.php:9 +msgid "Delete Slide" +msgstr "Slide Löschen" + +#: ../admin/views/slide-editor.php:877 +msgid "CSS Global" +msgstr "CSS Global" + +#: ../admin/views/slide-editor.php:891 ../admin/views/templates/slider-main- +#: options.php:1434 ../admin/views/templates/slider-main-options.php:4449 .. +#: admin/views/templates/sliders-list.php:169 +msgid "Preview" +msgstr "Vorschau" + +#: ../admin/views/slide-editor.php:897 +msgid "Rename Animation" +msgstr "Animation umbenennen" + +#: ../admin/views/slide-editor.php:922 +msgid "Delete this slide?" +msgstr "Diese Slide löschen?" + +#: ../admin/views/slide-overview.php:51 +msgid "New Post" +msgstr "Neuer Post" + +#: ../admin/views/slide-overview.php:61 +msgid "Edit Posts" +msgstr "Post editieren" + +#: ../admin/views/slide-overview.php:65 +msgid "This is a list of posts that are taken from multiple sources." +msgstr "Dies ist eine Liste von Beiträgen aus verschiedenen Eingängen." + +#: ../admin/views/slide-overview.php:67 +msgid "Sort by" +msgstr "Sortiere nach" + +#: ../admin/views/slide-overview.php:70 +msgid "Updating Sorting..." +msgstr "Aktualisiere Sortierung..." + +#: ../admin/views/slide-overview.php:75 ../admin/views/templates/slides-list.php:5 +msgid "Post List" +msgstr "Beitrags-Liste" + +#: ../admin/views/slide-overview.php:76 ../admin/views/templates/slides-list.php:6 +msgid "Saving Order" +msgstr "Sortierung Speichern" + +#: ../admin/views/slide-overview.php:80 ../admin/views/templates/slides-list.php:12 +msgid "No Posts Found" +msgstr "Keine Beiträge gefunden" + +#: ../admin/views/slide-overview.php:133 +msgid "Unpublish Post" +msgstr "Deaktiviere Beitrag" + +#: ../admin/views/slide-overview.php:135 +msgid "Publish Post" +msgstr "Aktiviere Beitrag" + +#: ../admin/views/slide-overview.php:140 +msgid "Edit Post" +msgstr "Beitrag Bearbeiten" + +#: ../admin/views/slide-overview.php:144 ../admin/views/slide-overview.php:146 +msgid "" +"Click to change the slide image. Note: The post featured image will be " +"changed." +msgstr "" +"Klick um Slide Bild zu ändern. Das Beitragsbild des Beitrags wird nicht " +"geändert." + +#: ../admin/views/slide-overview.php:146 +msgid "no image" +msgstr "Kein Bild" + +#: ../admin/views/slide-overview.php:150 ../admin/views/templates/slide-selector. +#: php:233 ../admin/views/templates/slide-stage.php:89 .. +#: admin/views/templates/slide-stage.php:704 ../admin/views/templates/slide- +#: stage.php:879 ../admin/views/templates/sliders-list.php:167 .. +#: admin/views/templates/slides-list.php:134 +msgid "Delete" +msgstr "Löschen" + +#: ../admin/views/slide-overview.php:173 +msgid "" +"Warning! Removing this entry will cause the original wordpress post to be " +"deleted." +msgstr "" +"Warnung! Die Entfernung dieses Beitrages löscht den Originalen Beitrag von " +"WordPress." + +#: ../admin/views/slider-overview.php:69 +msgid "Global Settings" +msgstr "Globale Einstellungen" + +#: ../admin/views/slider-overview.php:76 +msgid "Revolution Sliders" +msgstr "Revolution Sliders" + +#: ../admin/views/slider-overview.php:81 +msgid "Sort By:" +msgstr "Sortieren bei:" + +#: ../admin/views/slider-overview.php:83 +msgid "By ID" +msgstr "Bei ID" + +#: ../admin/views/slider-overview.php:84 +msgid "By Name" +msgstr "Bei Name" + +#: ../admin/views/slider-overview.php:85 +msgid "By Type" +msgstr "Bei Typ" + +#: ../admin/views/slider-overview.php:86 +msgid "By Favorit" +msgstr "Bei Favorit" + +#: ../admin/views/slider-overview.php:89 +msgid "Filter By:" +msgstr "Filtern bei:" + +#: ../admin/views/slider-overview.php:92 ../admin/views/templates/slider-main- +#: options.php:3551 +msgid "All" +msgstr "Alle" + +#: ../admin/views/slider-overview.php:93 ../admin/views/templates/sliders-list. +#: php:33 +msgid "Posts" +msgstr "Beiträge" + +#: ../admin/views/slider-overview.php:94 ../admin/views/templates/slider-main- +#: options.php:155 ../admin/views/templates/sliders-list.php:21 +msgid "Gallery" +msgstr "Gallerie" + +#: ../admin/views/slider-overview.php:95 ../admin/views/system/dialog-video.php: +#: 30 ../admin/views/templates/sliders-list.php:74 +msgid "Vimeo" +msgstr "Vimeo" + +#: ../admin/views/slider-overview.php:96 ../admin/views/system/dialog-video.php: +#: 28 ../admin/views/templates/sliders-list.php:68 +msgid "YouTube" +msgstr "YouTube" + +#: ../admin/views/slider-overview.php:97 ../admin/views/templates/sliders-list. +#: php:50 +msgid "Twitter" +msgstr "Twitter" + +#: ../admin/views/slider-overview.php:98 ../admin/views/templates/sliders-list. +#: php:44 +msgid "Facebook" +msgstr "Facebook" + +#: ../admin/views/slider-overview.php:99 ../admin/views/templates/sliders-list. +#: php:56 +msgid "Instagram" +msgstr "Instagram" + +#: ../admin/views/slider-overview.php:100 ../admin/views/templates/sliders-list. +#: php:62 +msgid "Flickr" +msgstr "Flickr" + +#: ../admin/views/slider-overview.php:111 +msgid "No Sliders Found" +msgstr "Keine Slider Gefunden" + +#: ../admin/views/slider-overview.php:126 ../admin/views/templates/slider-main- +#: options.php:4475 +msgid "Standard Embeding" +msgstr "Standard Einfügen" + +#: ../admin/views/slider-overview.php:127 ../admin/views/templates/slider-main- +#: options.php:4476 +msgid "For the" +msgstr "Für das" + +#: ../admin/views/slider-overview.php:127 ../admin/views/templates/slider-main- +#: options.php:4476 +msgid "pages or posts editor" +msgstr "Seiten oder Beitrags Editor" + +#: ../admin/views/slider-overview.php:127 ../admin/views/templates/slider-main- +#: options.php:4476 +msgid "insert the shortcode:" +msgstr "Shortcode einfügen:" + +#: ../admin/views/slider-overview.php:129 ../admin/views/slider-overview.php:133 . +#: ./admin/views/templates/slider-main-options.php:4478 .. +#: admin/views/templates/slider-main-options.php:4482 +msgid "From the" +msgstr "Von" + +#: ../admin/views/slider-overview.php:129 ../admin/views/templates/slider-main- +#: options.php:4478 +msgid "widgets panel" +msgstr "widgets bereich" + +#: ../admin/views/slider-overview.php:129 ../admin/views/templates/slider-main- +#: options.php:4478 +msgid "drag the \"Revolution Slider\" widget to the desired sidebar" +msgstr "ziehen Sie das \"Revolution Slider\" widget in Ihre Wunschposition" + +#: ../admin/views/slider-overview.php:131 ../admin/views/templates/slider-main- +#: options.php:4480 +msgid "Advanced Embeding" +msgstr "Fortgeschrittens Einfügen" + +#: ../admin/views/slider-overview.php:133 ../admin/views/templates/slider-main- +#: options.php:4482 +msgid "theme html" +msgstr "theme html" + +#: ../admin/views/slider-overview.php:133 ../admin/views/templates/slider-main- +#: options.php:4482 +msgid "use" +msgstr "benutzen" + +#: ../admin/views/slider-overview.php:134 ../admin/views/templates/slider-main- +#: options.php:4483 +msgid "To add the slider only to homepage use" +msgstr "Um den Slider nur auf der Homepage zu zeigen, nutze " + +#: ../admin/views/slider-overview.php:135 ../admin/views/templates/slider-main- +#: options.php:4484 +msgid "To add the slider on specific pages or posts use" +msgstr "Um den Slider auf bestimmten Seiten oder Beiträgen zu zeigen, nutze" + +#: ../admin/views/slider-overview.php:154 +msgid "Version Information" +msgstr "Version Information" + +#: ../admin/views/slider-overview.php:159 +msgid "Installed Version" +msgstr "Installierte Version" + +#: ../admin/views/slider-overview.php:163 +msgid "Latest Stable Version" +msgstr "Letzte stabile Version" + +#: ../admin/views/slider-overview.php:163 +msgid "Update to Stable (Free)" +msgstr "Update zu stabiler Version (Frei)" + +#: ../admin/views/slider-overview.php:167 +msgid "Latest Available Version" +msgstr "Letzte verfügbare Version" + +#: ../admin/views/slider-overview.php:167 +msgid "Check Version" +msgstr "Prüfe Version" + +#: ../admin/views/slider-overview.php:179 +msgid "Need Premium Support and Live Updates ?" +msgstr "Wollen Sie Premium Support und Live Updates?" + +#: ../admin/views/slider-overview.php:179 +msgid "Why is this Important ?" +msgstr "Warum ist das wichtig?" + +#: ../admin/views/slider-overview.php:184 +msgid "Benefits" +msgstr "Vorteile" + +#: ../admin/views/slider-overview.php:186 +msgid "Get Premium Support" +msgstr "Holen Sie sich Premium Support" + +#: ../admin/views/slider-overview.php:186 +msgid "" +" - We help you in case of Bugs, installation problems, and Conflicts with " +"other plugins and Themes" +msgstr "" +" - Wir helfen bei Bugs, Installations Problemen und Konflikten mit anderen " +"Plugins oder Themes" + +#: ../admin/views/slider-overview.php:187 +msgid "Live Updates" +msgstr "Live Updates" + +#: ../admin/views/slider-overview.php:187 +msgid "" +" - Get the latest version of our Plugin. New Features and Bug Fixes are " +"available regularly !" +msgstr "" +" - Holt die aktuellste Version des Plugins. Neue Features und Bug Fixes " +"werden regelmässig veröffentlicht!" + +#: ../admin/views/slider-overview.php:204 +msgid "Information" +msgstr "Information" + +#: ../admin/views/slider-overview.php:209 +msgid "" +"Please note that this plugin came bundled with a theme. The use of the " +"Revolution Slider is limited to this theme only.
        If you need support from " +"the Slider author ThemePunch or you want to use the Revolution slider with " +"an other theme you will need an extra single license available at CodeCanyon." +msgstr "" +"Dieses Plugin wurde in ein Theme integriert und ist deshalb auf die " +"alleinige Nutzung mit diesem Theme limitiert.
        Benötigen Sie Support vom " +"Slider Author ThemePunch oder wollen Sie den Slider unabhängig von diesem " +"Theme nutzen, brauchen Sie eine eigene Reguläre Lizenz erhältlich bei " +"CodeCanyon." + +#: ../admin/views/slider-overview.php:220 +msgid "Newsletter" +msgstr "Newsletter" + +#: ../admin/views/slider-overview.php:220 +msgid "Why subscribe?" +msgstr "Warum abonnieren?" + +#: ../admin/views/slider-overview.php:226 +msgid "Unsubscribe our newsletter" +msgstr "Newsletter abbestellen" + +#: ../admin/views/slider-overview.php:226 +msgid "Subscribe to our newsletter" +msgstr "Newsletter abonnieren" + +#: ../admin/views/slider-overview.php:226 +msgid "Enter your E-Mail here" +msgstr "Bitte E-Mail eingeben" + +#: ../admin/views/slider-overview.php:227 +msgid "Subscribe" +msgstr "Abonnieren" + +#: ../admin/views/slider-overview.php:229 +msgid "Unsubscribe" +msgstr "Abbestellen" + +#: ../admin/views/slider-overview.php:230 +msgid "Cancel" +msgstr "Abbrechen" + +#: ../admin/views/slider-overview.php:233 +msgid "unsubscibe from newsletter" +msgstr "Newsletter abbestellen" + +#: ../admin/views/slider-overview.php:235 +msgid "Perks of subscribing to our Newsletter" +msgstr " Vorteile des Newsletters" + +#: ../admin/views/slider-overview.php:237 +msgid "Receive info on the latest ThemePunch product updates" +msgstr " Erhalte Infos über die letzten ThemePunch Produkt Updates" + +#: ../admin/views/slider-overview.php:238 +msgid "Be the first to know about new products by ThemePunch and their partners" +msgstr "" +" Sei der erste, der etwas über neue Produkte von ThemePunch und Partnern " +"erfährt" + +#: ../admin/views/slider-overview.php:239 +msgid "" +"Participate in polls and customer surveys that help us increase the quality " +"of our products and services" +msgstr "" +" Nehme an Umfragen und Abstimmungen teil, die uns helfen die Qualität unsere " +"Produkte und Services zu verbessern" + +#: ../admin/views/slider-overview.php:248 +msgid "Update History" +msgstr "Udate Geschichte" + +#: ../admin/views/slider-overview.php:258 ../admin/views/slider-overview.php:283 . +#: ./admin/views/templates/slider-main-options.php:3725 .. +#: admin/views/templates/sliders-list.php:190 +msgid "Import Slider" +msgstr "Slider Importieren" + +#: ../admin/views/slider-overview.php:264 +msgid "Choose the import file" +msgstr "Wählen Sie die Importdatei" + +#: ../admin/views/slider-overview.php:268 +msgid "Note: styles templates will be updated if they exist!" +msgstr "Hinweis: Style Templates werden aktualisiert, falls existent!" + +#: ../admin/views/slider-overview.php:271 ../admin/views/templates/template- +#: selector.php:248 ../admin/views/templates/template-slider-selector.php:233 +msgid "Custom Animations:" +msgstr "Eigene Animationen:" + +#: ../admin/views/slider-overview.php:272 ../admin/views/slider-overview.php:277 . +#: ./admin/views/templates/slider-main-options.php:3714 .. +#: admin/views/templates/slider-main-options.php:3719 .. +#: admin/views/templates/template-selector.php:249 .. +#: admin/views/templates/template-selector.php:254 .. +#: admin/views/templates/template-slider-selector.php:234 .. +#: admin/views/templates/template-slider-selector.php:239 +msgid "overwrite" +msgstr "überschreiben" + +#: ../admin/views/slider-overview.php:273 ../admin/views/slider-overview.php:278 . +#: ./admin/views/templates/slider-main-options.php:3715 .. +#: admin/views/templates/slider-main-options.php:3720 .. +#: admin/views/templates/template-selector.php:250 .. +#: admin/views/templates/template-selector.php:255 .. +#: admin/views/templates/template-slider-selector.php:235 .. +#: admin/views/templates/template-slider-selector.php:240 +msgid "append" +msgstr "anfügen" + +#: ../admin/views/slider-overview.php:276 ../admin/views/templates/slide-stage. +#: php:62 ../admin/views/templates/template-selector.php:253 .. +#: admin/views/templates/template-slider-selector.php:238 +msgid "Static Styles:" +msgstr "Statische Styles:" + +#: ../admin/views/slider-overview.php:279 ../admin/views/templates/slider-main- +#: options.php:3721 ../admin/views/templates/template-selector.php:256 .. +#: admin/views/templates/template-slider-selector.php:241 +msgid "ignore" +msgstr "Ignorieren" + +#: ../admin/views/slider-overview.php:288 ../admin/views/templates/slide-selector. +#: php:231 ../admin/views/templates/sliders-list.php:168 .. +#: admin/views/templates/slides-list.php:136 +msgid "Duplicate" +msgstr "Duplizieren" + +#: ../admin/views/system/dialog-copy-move.php:3 +msgid "Do It!" +msgstr "Mach es!" + +#: ../admin/views/system/dialog-copy-move.php:3 +msgid "Copy / move slide" +msgstr "Slide Kopieren / Verschieben" + +#: ../admin/views/system/dialog-copy-move.php:7 ../includes/widget.class.php:66 +msgid "Choose Slider" +msgstr "Slider Wählen" + +#: ../admin/views/system/dialog-copy-move.php:12 +msgid "Choose Operation" +msgstr "Operation Wählen" + +#: ../admin/views/system/dialog-copy-move.php:15 +msgid "Copy" +msgstr "Kopieren" + +#: ../admin/views/system/dialog-copy-move.php:18 +msgid "Move" +msgstr "Verschieben" + +#: ../admin/views/system/dialog-global-settings.php:25 .. +#: admin/views/templates/slide-general-settings.php:7 .. +#: admin/views/templates/slider-main-options.php:1723 +msgid "General Settings" +msgstr "Generelle Einstellungen" + +#: ../admin/views/system/dialog-global-settings.php:36 +msgid "View Plugin Permission:" +msgstr "" +"Ansicht \n" +"Plugin Rechte:" + +#: ../admin/views/system/dialog-global-settings.php:40 +msgid "To Admin" +msgstr "Administrator" + +#: ../admin/views/system/dialog-global-settings.php:41 +msgid "To Editor, Admin" +msgstr "Editor, Admin" + +#: ../admin/views/system/dialog-global-settings.php:42 +msgid "Author, Editor, Admin" +msgstr "Author, Editor, Admin" + +#: ../admin/views/system/dialog-global-settings.php:46 +msgid "The role of user that can view and edit the plugin" +msgstr "Die Rolle der Benutzer, die das Plugin benutzen können" + +#: ../admin/views/system/dialog-global-settings.php:52 +msgid "Include RevSlider libraries globally:" +msgstr "RevSlider Libraries global einbinden:" + +#: ../admin/views/system/dialog-global-settings.php:58 .. +#: admin/views/system/dialog-global-settings.php:92 ../admin/views/system/dialog- +#: global-settings.php:113 ../admin/views/system/dialog-global-settings.php:134 .. +#: admin/views/system/dialog-global-settings.php:187 .. +#: admin/views/system/dialog-global-settings.php:209 .. +#: admin/views/system/dialog-video.php:152 ../admin/views/templates/slider-main- +#: options.php:3652 +msgid "On" +msgstr "An" + +#: ../admin/views/system/dialog-global-settings.php:63 .. +#: admin/views/system/dialog-global-settings.php:97 ../admin/views/system/dialog- +#: global-settings.php:118 ../admin/views/system/dialog-global-settings.php:139 .. +#: admin/views/system/dialog-global-settings.php:192 .. +#: admin/views/system/dialog-global-settings.php:214 .. +#: admin/views/system/dialog-video.php:151 ../admin/views/templates/slider-main- +#: options.php:2353 ../admin/views/templates/slider-main-options.php:3630 .. +#: admin/views/templates/slider-main-options.php:3654 +msgid "Off" +msgstr "Aus" + +#: ../admin/views/system/dialog-global-settings.php:68 +msgid "" +"ON - Add CSS and JS Files to all pages.
        Off - CSS and JS Files will be " +"only loaded on Pages where any rev_slider shortcode exists." +msgstr "" +"ON - Füge CSS und JS Files immer hinzu.
        OFF - CSS und JS Files werden " +"nur auf Seiten/Beiträgen geladen, welche den rev_slider Shortcode im Content " +"haben." + +#: ../admin/views/system/dialog-global-settings.php:74 +msgid "Pages to include RevSlider libraries:" +msgstr "Einbinden RevSlider Libraries auf diesen Seiten:" + +#: ../admin/views/system/dialog-global-settings.php:79 +msgid "" +"Specify the page id's that the front end includes will be included in. " +"Example: 2,3,5 also: homepage,3,4" +msgstr "" +"Spezifiere die Seiten ID's in denen die Frontend Inkludieren eingebunden " +"werden. Beispiel: 2,3,5 oder: homepage,3,4" + +#: ../admin/views/system/dialog-global-settings.php:86 +msgid "Insert JavaScript Into Footer:" +msgstr "JavaScript in Footer einfügen:" + +#: ../admin/views/system/dialog-global-settings.php:101 +msgid "" +"Putting the js to footer (instead of the head) is good for fixing some " +"javascript conflicts." +msgstr "" +"Das JS in den Footer (anstatt des Heads) einzufügen ist gut, um einige " +"Konflikte zu lösen." + +#: ../admin/views/system/dialog-global-settings.php:107 +msgid "Defer JavaScript Loading:" +msgstr "Defer JavaScript Laden:" + +#: ../admin/views/system/dialog-global-settings.php:122 +msgid "Defer the loading of the JavaScript libraries to maximize page loading speed." +msgstr "" +"Verteile das Laden von JavaScript Libraries, um den Ladevorgang zu " +"beschleunigen." + +#: ../admin/views/system/dialog-global-settings.php:128 +msgid "Enable Markup Export option:" +msgstr "Aktiviere Markup Export Option:" + +#: ../admin/views/system/dialog-global-settings.php:143 +msgid "" +"This will enable the option to export the Slider Markups to copy/paste it " +"directly into websites." +msgstr "" +"Dies erlaubt den Export von Slider Markup, der per Copy/Paste direkt in " +"Webseiten eingefügt werden kann." + +#: ../admin/views/system/dialog-global-settings.php:149 +msgid "Font Loading URL:" +msgstr "Font Laden URL:" + +#: ../admin/views/system/dialog-global-settings.php:154 +msgid "" +"Insert something in it and it will be used instead of http://fonts." +"googleapis.com/css?family= (For example: http://fonts.useso.com/css?family= " +"which will also work for chinese visitors)" +msgstr "" +"URL die anstelle von \n" +"http://fonts.googleapis.com/css?family= genutzt werden soll (Beispiel: http:" +"//fonts.useso.com/css?family= für Chinesische User)" + +#: ../admin/views/system/dialog-global-settings.php:161 +msgid "Default Settings for Advanced Responsive Grid Sizes:" +msgstr "Default Einstellungen für Fortgeschrittene Responsive Grid Größen:" + +#: ../admin/views/system/dialog-global-settings.php:164 +msgid "Desktop Grid Width" +msgstr "Desktop Grid Breite" + +#: ../admin/views/system/dialog-global-settings.php:166 +msgid "Notebook Grid Width" +msgstr "Notebook Grid Breite" + +#: ../admin/views/system/dialog-global-settings.php:168 +msgid "Tablet Grid Width" +msgstr "Tablet Grid Breite" + +#: ../admin/views/system/dialog-global-settings.php:170 +msgid "Mobile Grid Width" +msgstr "Mobile Grid Breite" + +#: ../admin/views/system/dialog-global-settings.php:174 +msgid "Define the default Grid Sizes for devices: Desktop, Tablet and Mobile" +msgstr "Definiere die Default Grid Größen für Geräte: Desktop, Tablet und Mobile" + +#: ../admin/views/system/dialog-global-settings.php:181 +msgid "Enable Notifications:" +msgstr "Aktiviere Benachrichtigungen:" + +#: ../admin/views/system/dialog-global-settings.php:196 +msgid "Enable/Disable ThemePunch Notifications in the Admin Notice bar." +msgstr "" +"Aktiviere/Deaktiviere ThemePunch Benachrichtigungen in der Admin " +"Benachrichtigungs Zeile." + +#: ../admin/views/system/dialog-global-settings.php:203 +msgid "Enable Logs:" +msgstr "Aktiviere Logs:" + +#: ../admin/views/system/dialog-global-settings.php:218 +msgid "Enable console logs for debugging." +msgstr "Aktiviert das Logging in der Console für das Debugging." + +#: ../admin/views/system/dialog-global-settings.php:228 +msgid "Update" +msgstr "Aktualisieren" + +#: ../admin/views/system/dialog-video.php:4 +msgid "Add Video Layout" +msgstr "Video Layout Hinzufügen" + +#: ../admin/views/system/dialog-video.php:12 ../admin/views/templates/slide- +#: general-settings.php:33 ../admin/views/templates/slider-main-options.php:151 .. +#: admin/views/templates/slider-main-options.php:202 .. +#: admin/views/templates/slider-main-options.php:286 .. +#: admin/views/templates/slider-main-options.php:309 +msgid "Source" +msgstr "Quelle" + +#: ../admin/views/system/dialog-video.php:13 ../admin/views/templates/slider-main- +#: options.php:2196 +msgid "Sizing" +msgstr "Größe" + +#: ../admin/views/system/dialog-video.php:14 +msgid "Settings" +msgstr "Einstellungen" + +#: ../admin/views/system/dialog-video.php:15 ../admin/views/templates/slide-stage. +#: php:32 ../admin/views/templates/slider-main-options.php:2485 .. +#: admin/views/templates/slider-main-options.php:2630 .. +#: admin/views/templates/slider-main-options.php:2786 .. +#: admin/views/templates/slider-main-options.php:2955 +msgid "Visibility" +msgstr "Sichtbarkeit" + +#: ../admin/views/system/dialog-video.php:16 +msgid "Arguments" +msgstr "Argumente" + +#: ../admin/views/system/dialog-video.php:26 +msgid "Choose video type" +msgstr "Videotyp auswählen" + +#: ../admin/views/system/dialog-video.php:32 +msgid "HTML5" +msgstr "HTML5" + +#: ../admin/views/system/dialog-video.php:36 ../admin/views/system/dialog-video. +#: php:40 ../admin/views/system/dialog-video.php:44 +msgid "From Stream" +msgstr "Von Stream" + +#: ../admin/views/system/dialog-video.php:51 +msgid "Vimeo ID or URL" +msgstr "Vimeo ID oder URL" + +#: ../admin/views/system/dialog-video.php:54 ../admin/views/templates/slide- +#: general-settings.php:156 +msgid "example: 30300114" +msgstr "" +"Beispiel: \n" +"30300114" + +#: ../admin/views/system/dialog-video.php:60 +msgid "YouTube ID or URL" +msgstr "YouTube ID oder URL" + +#: ../admin/views/system/dialog-video.php:63 ../admin/views/system/dialog-video. +#: php:74 ../admin/views/system/dialog-video.php:82 ../admin/views/system/dialog- +#: video.php:89 ../admin/views/system/dialog-video.php:96 +msgid "example" +msgstr "Beispiel" + +#: ../admin/views/system/dialog-video.php:69 +msgid "Poster Image Url" +msgstr "Beitrags Bild URL" + +#: ../admin/views/system/dialog-video.php:72 +msgid "Set Image" +msgstr "Wähle Bild" + +#: ../admin/views/system/dialog-video.php:77 +msgid "Video MP4 Url" +msgstr "Video MP4 URL" + +#: ../admin/views/system/dialog-video.php:80 ../admin/views/system/dialog-video. +#: php:87 ../admin/views/system/dialog-video.php:94 +msgid "Set Video" +msgstr "Wähle Video" + +#: ../admin/views/system/dialog-video.php:84 +msgid "Video WEBM Url" +msgstr "Video WEBM Url" + +#: ../admin/views/system/dialog-video.php:91 +msgid "Video OGV Url" +msgstr "Video OGV Url" + +#: ../admin/views/system/dialog-video.php:106 +msgid "Full Screen:" +msgstr "Vollbild:" + +#: ../admin/views/system/dialog-video.php:111 ../admin/views/templates/slide- +#: general-settings.php:234 +msgid "Force Cover:" +msgstr "Erzwinge Cover:" + +#: ../admin/views/system/dialog-video.php:116 ../admin/views/templates/slide- +#: general-settings.php:239 +msgid "Dotted Overlay:" +msgstr "Gepunktete Überlagerung" + +#: ../admin/views/system/dialog-video.php:119 ../admin/views/templates/slide- +#: general-settings.php:242 ../admin/views/templates/slider-main-options.php:2250 +msgid "none" +msgstr "keine" + +#: ../admin/views/system/dialog-video.php:120 ../admin/views/templates/slide- +#: general-settings.php:243 ../admin/views/templates/slider-main-options.php:2251 +msgid "2 x 2 Black" +msgstr "2 x 2 Schwarz" + +#: ../admin/views/system/dialog-video.php:121 ../admin/views/templates/slide- +#: general-settings.php:244 ../admin/views/templates/slider-main-options.php:2252 +msgid "2 x 2 White" +msgstr "2 x 2 Weiss" + +#: ../admin/views/system/dialog-video.php:122 ../admin/views/templates/slide- +#: general-settings.php:245 ../admin/views/templates/slider-main-options.php:2253 +msgid "3 x 3 Black" +msgstr "3 x 3 Schwarz" + +#: ../admin/views/system/dialog-video.php:123 ../admin/views/templates/slide- +#: general-settings.php:246 ../admin/views/templates/slider-main-options.php:2254 +msgid "3 x 3 White" +msgstr "3 x 3 Weiss" + +#: ../admin/views/system/dialog-video.php:127 ../admin/views/templates/slide- +#: general-settings.php:250 +msgid "Aspect Ratio:" +msgstr "Bildformat:" + +#: ../admin/views/system/dialog-video.php:130 ../admin/views/templates/slide- +#: general-settings.php:253 +msgid "16:9" +msgstr "16:9" + +#: ../admin/views/system/dialog-video.php:131 ../admin/views/templates/slide- +#: general-settings.php:254 +msgid "4:3" +msgstr "4:3" + +#: ../admin/views/system/dialog-video.php:139 ../admin/views/templates/slide- +#: general-settings.php:273 +msgid "Loop Video:" +msgstr "Video Wiederholen:" + +#: ../admin/views/system/dialog-video.php:142 ../admin/views/system/dialog-video. +#: php:215 ../admin/views/templates/slide-general-settings.php:275 .. +#: admin/views/templates/slide-general-settings.php:908 +msgid "Disable" +msgstr "Deaktivieren" + +#: ../admin/views/system/dialog-video.php:143 ../admin/views/templates/slide- +#: general-settings.php:276 +msgid "Loop, Slide is paused" +msgstr "Loop, Slide ist pausiert" + +#: ../admin/views/system/dialog-video.php:144 ../admin/views/templates/slide- +#: general-settings.php:277 +msgid "Loop, Slide does not stop" +msgstr "Loop, Slide stoppt nicht" + +#: ../admin/views/system/dialog-video.php:149 +msgid "Autoplay:" +msgstr "Autostart:" + +#: ../admin/views/system/dialog-video.php:153 +msgid "On 1st Time" +msgstr "Bei erstem Durchlauf" + +#: ../admin/views/system/dialog-video.php:154 +msgid "Not on 1st Time" +msgstr "Nicht bei erstem Durchlauf" + +#: ../admin/views/system/dialog-video.php:159 +msgid "Stop Other Videos:" +msgstr "Stoppe andere Videos:" + +#: ../admin/views/system/dialog-video.php:164 ../admin/views/templates/slide- +#: general-settings.php:282 +msgid "Next Slide On End:" +msgstr "Nächste Slide beim Ende:" + +#: ../admin/views/system/dialog-video.php:169 ../admin/views/templates/slide- +#: general-settings.php:286 +msgid "Rewind at Slide Start:" +msgstr "Rückspulen beim Slide Start:" + +#: ../admin/views/system/dialog-video.php:174 +msgid "Hide Controls:" +msgstr "Verstecke Knöpfe:" + +#: ../admin/views/system/dialog-video.php:179 +msgid "Mute:" +msgstr "Stumm:" + +#: ../admin/views/system/dialog-video.php:184 +msgid "Start at:" +msgstr "Start bei:" + +#: ../admin/views/system/dialog-video.php:185 +msgid "i.e.: 0:17" +msgstr "z.B.: 0:17" + +#: ../admin/views/system/dialog-video.php:189 +msgid "End at:" +msgstr "Ende bei:" + +#: ../admin/views/system/dialog-video.php:190 +msgid "i.e.: 2:41" +msgstr "z.B.: 2:41" + +#: ../admin/views/system/dialog-video.php:194 +msgid "Show Cover at Pause:" +msgstr "Zeige Cover bei Pause:" + +#: ../admin/views/system/dialog-video.php:199 ../admin/views/templates/slide- +#: general-settings.php:297 +msgid "Video Speed:" +msgstr "Abspiel Tempo:" + +#: ../admin/views/system/dialog-video.php:201 ../admin/views/templates/slide- +#: general-settings.php:299 +msgid "0.25" +msgstr "0.25" + +#: ../admin/views/system/dialog-video.php:202 ../admin/views/templates/slide- +#: general-settings.php:300 +msgid "0.50" +msgstr "0.50" + +#: ../admin/views/system/dialog-video.php:203 ../admin/views/templates/slide- +#: general-settings.php:301 ../admin/views/templates/slider-main-options.php:2355 +#: ../admin/views/templates/slider-main-options.php:3268 +msgid "1" +msgstr "1" + +#: ../admin/views/system/dialog-video.php:204 ../admin/views/templates/slide- +#: general-settings.php:302 +msgid "1.5" +msgstr "1.5" + +#: ../admin/views/system/dialog-video.php:205 ../admin/views/templates/slide- +#: general-settings.php:303 ../admin/views/templates/slider-main-options.php:2356 +msgid "2" +msgstr "2" + +#: ../admin/views/system/dialog-video.php:211 +msgid "Video Preload:" +msgstr "Video Vorladen:" + +#: ../admin/views/system/dialog-video.php:214 ../admin/views/templates/slider- +#: main-options.php:938 +msgid "Auto" +msgstr "Auto" + +#: ../admin/views/system/dialog-video.php:216 +msgid "Metadata" +msgstr "Metadaten" + +#: ../admin/views/system/dialog-video.php:223 +msgid "Preview Image" +msgstr "Bild Vorschau" + +#: ../admin/views/system/dialog-video.php:225 +msgid "Image Library" +msgstr "Bilder Bibliothek" + +#: ../admin/views/system/dialog-video.php:226 +msgid "Video Thumbnail" +msgstr "Video Thumbnail" + +#: ../admin/views/system/dialog-video.php:232 +msgid "Disable Mobile:" +msgstr "Deaktiviere Mobile:" + +#: ../admin/views/system/dialog-video.php:237 +msgid "Only Preview on Mobile:" +msgstr "Nur Preview auf Mobile:" + +#: ../admin/views/system/dialog-video.php:245 +msgid "Arguments:" +msgstr "Argumente:" + +#: ../admin/views/system/dialog-video.php:251 ../admin/views/system/dialog-video. +#: php:251 +msgid "Add This Video" +msgstr "Dieses Video Hinzufügen" + +#: ../admin/views/system/dialog-video.php:251 +msgid "Update Video" +msgstr "Video Aktualisieren" + +#: ../admin/views/system/validation.php:31 +msgid "Username:" +msgstr "Benutzername:" + +#: ../admin/views/system/validation.php:34 +msgid "Your Envato username." +msgstr "Ihr Envato Benutzername." + +#: ../admin/views/system/validation.php:38 +msgid "Envato API Key:" +msgstr "Envato API Key:" + +#: ../admin/views/system/validation.php:41 +msgid "" +"You can find the API key by visiting your Envato Account page, then clicking " +"the My Settings tab. At the bottom of the page you will find your accounts " +"API key." +msgstr "" +"Der API Key kann auf der Envato Account Seite im Tab \"Settings\" gefunden " +"werden. Am Ende dieser Seite können API Keys generiert/gefunden werden." + +#: ../admin/views/system/validation.php:45 +msgid "Purchase code:" +msgstr "Purchase Code:" + +#: ../admin/views/system/validation.php:48 +msgid "Please enter your " +msgstr "Bitte eingeben" + +#: ../admin/views/system/validation.php:48 +msgid "CodeCanyon Slider Revolution purchase code / license key" +msgstr " CodeCanyon Slider Revolution Purchase Code / License Key" + +#: ../admin/views/system/validation.php:48 +msgid ". You can find your key by following the instructions on" +msgstr ". Bitte folgen Sie den Instruktionen auf" + +#: ../admin/views/system/validation.php:48 +msgid " this page." +msgstr "dieser Seite." + +#: ../admin/views/system/validation.php:54 +msgid "Register" +msgstr "Registrieren" + +#: ../admin/views/system/validation.php:56 +msgid "Deregister" +msgstr "Abmelden" + +#: ../admin/views/system/validation.php:61 +msgid "Search for Updates" +msgstr "Suche Updates" + +#: ../admin/views/system/validation.php:68 +msgid "" +"To register the plugin on a different website, click the “Deregister” button " +"here first." +msgstr "" +"Um das Plugin auf einer anderen Website zu registrieren, bitte erst " +"\"abmelden\" klicken." + +#: ../admin/views/system/validation.php:79 +msgid "How to get Support ?" +msgstr "Wie bekommt man Support?" + +#: ../admin/views/system/validation.php:81 +msgid "Please feel free to contact us via our " +msgstr "Zögere nicht uns zu kontaktieren über unser" + +#: ../admin/views/system/validation.php:81 +msgid "Support Forum " +msgstr "Support Center" + +#: ../admin/views/system/validation.php:81 +msgid "and/or via the " +msgstr "und/oder über die" + +#: ../admin/views/system/validation.php:81 +msgid "Item Disscussion Forum" +msgstr "Item Kommentare" + +#: ../admin/views/system/validation.php:87 +msgid "Click Here to get " +msgstr "Klicke hier für" + +#: ../admin/views/system/validation.php:87 +msgid "Premium Support and Auto Updates" +msgstr "Premium Support und Live Updates" + +#: ../admin/views/templates/slide-general-settings.php:6 +msgid "Main Background" +msgstr "Haupt Hintergrund" + +#: ../admin/views/templates/slide-general-settings.php:8 +msgid "Slide Animation" +msgstr "Slide Animation" + +#: ../admin/views/templates/slide-general-settings.php:9 +msgid "Link & Seo" +msgstr "Link & SEO" + +#: ../admin/views/templates/slide-general-settings.php:10 +msgid "Slide Info" +msgstr "Slide Info" + +#: ../admin/views/templates/slide-general-settings.php:34 +msgid "Source Settings" +msgstr "Source Einstellungen" + +#: ../admin/views/templates/slide-general-settings.php:35 .. +#: admin/views/templates/slide-stage.php:248 ../admin/views/templates/slider- +#: main-options.php:3428 +msgid "Parallax" +msgstr "Parallax" + +#: ../admin/views/templates/slide-general-settings.php:36 +msgid "Ken Burns" +msgstr "Ken Burns" + +#: ../admin/views/templates/slide-general-settings.php:64 +msgid "Featured Image" +msgstr "Beitragsbild" + +#: ../admin/views/templates/slide-general-settings.php:69 +msgid "Stream Image" +msgstr "Stream Bild" + +#: ../admin/views/templates/slide-general-settings.php:75 +msgid "Stream Video" +msgstr "Stream Video" + +#: ../admin/views/templates/slide-general-settings.php:78 .. +#: admin/views/templates/slide-general-settings.php:86 +msgid "Use Cover" +msgstr "Benutze Cover" + +#: ../admin/views/templates/slide-general-settings.php:83 +msgid "Stream Video + Image" +msgstr "Stream Video + Bild" + +#: ../admin/views/templates/slide-general-settings.php:93 +msgid "Main / Background Image" +msgstr "Haupt / Hintergrund Bild" + +#: ../admin/views/templates/slide-general-settings.php:97 +msgid "Change Image" +msgstr "Bild Ändern" + +#: ../admin/views/templates/slide-general-settings.php:105 +msgid "External URL" +msgstr "Externe URL" + +#: ../admin/views/templates/slide-general-settings.php:111 +msgid "Get External" +msgstr "Hole Externe Daten" + +#: ../admin/views/templates/slide-general-settings.php:117 +msgid "Transparent" +msgstr "Transparent" + +#: ../admin/views/templates/slide-general-settings.php:122 +msgid "Solid Colored" +msgstr "Solide Farbe" + +#: ../admin/views/templates/slide-general-settings.php:132 +msgid "YouTube Video" +msgstr "YouTube Video" + +#: ../admin/views/templates/slide-general-settings.php:138 .. +#: admin/views/templates/slide-general-settings.php:154 .. +#: admin/views/templates/slide-general-settings.php:889 +msgid "ID:" +msgstr "ID:" + +#: ../admin/views/templates/slide-general-settings.php:140 +msgid "example: T8--OggjJKQ" +msgstr "" +"z. B.: T\n" +"8--OggjJKQ" + +#: ../admin/views/templates/slide-general-settings.php:142 .. +#: admin/views/templates/slide-general-settings.php:158 .. +#: admin/views/templates/slide-general-settings.php:188 +msgid "Cover Image:" +msgstr "Cover Bild:" + +#: ../admin/views/templates/slide-general-settings.php:148 +msgid "Vimeo Video" +msgstr "Vimeo Video" + +#: ../admin/views/templates/slide-general-settings.php:164 +msgid "HTML5 Video" +msgstr "HTML5 Video" + +#: ../admin/views/templates/slide-general-settings.php:170 +msgid "MPEG:" +msgstr "MPEG:" + +#: ../admin/views/templates/slide-general-settings.php:173 .. +#: admin/views/templates/slide-general-settings.php:179 .. +#: admin/views/templates/slide-general-settings.php:185 +msgid "Change Video" +msgstr "Ändere Video:" + +#: ../admin/views/templates/slide-general-settings.php:176 +msgid "WEBM:" +msgstr "WEBM:" + +#: ../admin/views/templates/slide-general-settings.php:182 +msgid "OGV:" +msgstr "OGV:" + +#: ../admin/views/templates/slide-general-settings.php:196 +msgid "Image Source Size:" +msgstr "Bild Source Größe:" + +#: ../admin/views/templates/slide-general-settings.php:213 +msgid "Alt:" +msgstr "Alt:" + +#: ../admin/views/templates/slide-general-settings.php:215 .. +#: admin/views/templates/slide-stage.php:1259 +msgid "From Media Library" +msgstr "Aus Media Library" + +#: ../admin/views/templates/slide-general-settings.php:216 .. +#: admin/views/templates/slide-stage.php:1260 +msgid "From Filename" +msgstr "Aus File Namen" + +#: ../admin/views/templates/slide-general-settings.php:217 .. +#: admin/views/templates/slide-stage.php:1261 ../admin/views/templates/slide- +#: stage.php:1729 +msgid "Custom" +msgstr "Custom" + +#: ../admin/views/templates/slide-general-settings.php:223 +msgid "Width:" +msgstr "Breite:" + +#: ../admin/views/templates/slide-general-settings.php:227 +msgid "Height:" +msgstr "Höhe:" + +#: ../admin/views/templates/slide-general-settings.php:260 +msgid "Start At:" +msgstr "Start bei:" + +#: ../admin/views/templates/slide-general-settings.php:262 +msgid "For Example: 00:17" +msgstr "z.B. 00:17" + +#: ../admin/views/templates/slide-general-settings.php:267 +msgid "End At:" +msgstr "Ende bei:" + +#: ../admin/views/templates/slide-general-settings.php:269 +msgid "For Example: 02:17" +msgstr "z. B.: 02:17" + +#: ../admin/views/templates/slide-general-settings.php:291 +msgid "Mute Video:" +msgstr "Video Stumm:" + +#: ../admin/views/templates/slide-general-settings.php:307 +msgid "Arguments YouTube:" +msgstr "Argumente YouTube:" + +#: ../admin/views/templates/slide-general-settings.php:312 +msgid "Arguments Vimeo:" +msgstr "Argumente Vimeo:" + +#: ../admin/views/templates/slide-general-settings.php:319 +msgid "Background Fit:" +msgstr "Background Fit:" + +#: ../admin/views/templates/slide-general-settings.php:330 +msgid "Background Position:" +msgstr "Background Position:" + +#: ../admin/views/templates/slide-general-settings.php:351 +msgid "Background Repeat:" +msgstr "Background Wiederholung:" + +#: ../admin/views/templates/slide-general-settings.php:367 +msgid "Parallax Level:" +msgstr "Parallax Level:" + +#: ../admin/views/templates/slide-general-settings.php:369 .. +#: admin/views/templates/slide-stage.php:462 +msgid "No Parallax" +msgstr "Kein Parallax" + +#: ../admin/views/templates/slide-general-settings.php:385 .. +#: admin/views/templates/slide-stage.php:479 +msgid "Parallax Feature in Slider Settings is deactivated, parallax will be ignored." +msgstr "Parallax ist in den Slider Settings deaktiviert und wird ignoriert." + +#: ../admin/views/templates/slide-general-settings.php:393 .. +#: admin/views/templates/slider-main-options.php:1870 +msgid "Ken Burns / Pan Zoom:" +msgstr "Ken Burns / Pan Zoom:" + +#: ../admin/views/templates/slide-general-settings.php:398 +msgid "Scale: (in %):" +msgstr "Maßstab (in %):" + +#: ../admin/views/templates/slide-general-settings.php:399 .. +#: admin/views/templates/slide-general-settings.php:407 .. +#: admin/views/templates/slide-general-settings.php:415 .. +#: admin/views/templates/slide-general-settings.php:423 +msgid "From" +msgstr "Von" + +#: ../admin/views/templates/slide-general-settings.php:401 .. +#: admin/views/templates/slide-general-settings.php:409 .. +#: admin/views/templates/slide-general-settings.php:417 .. +#: admin/views/templates/slide-general-settings.php:425 +msgid "To" +msgstr "Zu" + +#: ../admin/views/templates/slide-general-settings.php:406 +msgid "Horizontal Offsets:" +msgstr "Horizontaler Offset:" + +#: ../admin/views/templates/slide-general-settings.php:414 +msgid "Vertical Offsets:" +msgstr "Verticaler Offset:" + +#: ../admin/views/templates/slide-general-settings.php:422 +msgid "Rotation:" +msgstr "Rotation:" + +#: ../admin/views/templates/slide-general-settings.php:430 .. +#: admin/views/templates/slider-main-options.php:1886 +msgid "Easing:" +msgstr "Easing:" + +#: ../admin/views/templates/slide-general-settings.php:470 .. +#: admin/views/templates/slider-main-options.php:1993 +msgid "Duration (in ms):" +msgstr "Dauer (in ms):" + +#: ../admin/views/templates/slide-general-settings.php:486 +msgid "The title of the slide, will be shown in the slides list." +msgstr "Der Titel der Slide, wird auf der Slides Liste angezeigt" + +#: ../admin/views/templates/slide-general-settings.php:492 +msgid "Slide \"Delay\":" +msgstr "Slide \"Verzögerung\":" + +#: ../admin/views/templates/slide-general-settings.php:494 +msgid "" +"A new delay value for the Slide. If no delay defined per slide, the delay " +"defined via Options (9000ms) will be used." +msgstr "" +"Ein neuer Verzögerungs Wert für den Slide. Falls keine Verzögerung per Slide " +"definiert ist, wird die Verzögerung aus den Options (9000ms) genommen." + +#: ../admin/views/templates/slide-general-settings.php:500 +msgid "Slide State" +msgstr "Slide Status" + +#: ../admin/views/templates/slide-general-settings.php:502 +msgid "Published" +msgstr "Publiziert" + +#: ../admin/views/templates/slide-general-settings.php:503 +msgid "Unpublished" +msgstr "Unpubliziert" + +#: ../admin/views/templates/slide-general-settings.php:505 +msgid "" +"The state of the slide. The unpublished slide will be excluded from the " +"slider." +msgstr "Der Status der Slide, eine unpublizierte Slide wird im Slider nicht angezeigt" + +#: ../admin/views/templates/slide-general-settings.php:518 +msgid "Language" +msgstr "Sprache" + +#: ../admin/views/templates/slide-general-settings.php:529 +msgid "The language of the slide (uses WPML plugin)." +msgstr "Die Sprach der slide (benutzt das WPML plugin)" + +#: ../admin/views/templates/slide-general-settings.php:538 +msgid "Visible from:" +msgstr "Sichtbar von:" + +#: ../admin/views/templates/slide-general-settings.php:540 +msgid "If set, slide will be visible after the date is reached." +msgstr "Wenn gesetzt, Slide wird sichtbar ab diesem Datum." + +#: ../admin/views/templates/slide-general-settings.php:546 +msgid "Visible until:" +msgstr "Sichtbar bis:" + +#: ../admin/views/templates/slide-general-settings.php:548 +msgid "If set, slide will be visible till the date is reached." +msgstr "Wenn gesetz, Slide wird bis zu diesem Datum sichtbar sein." + +#: ../admin/views/templates/slide-general-settings.php:555 +msgid "Thumbnail:" +msgstr "Thumbnail:" + +#: ../admin/views/templates/slide-general-settings.php:573 +msgid "Slide Thumbnail. If not set - it will be taken from the slide image." +msgstr "" +"Slide Thumbnail. Wenn nicht gesetzt, wird es von dem gewählten Bild der " +"Slide genommen" + +#: ../admin/views/templates/slide-general-settings.php:580 +msgid "Save Performance:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:584 +msgid "Slide End Transition will first start when last Layer has been removed." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:724 +msgid "Used Transitions (Order in Loops)" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:731 +msgid "Slot / Box Amount:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:734 +msgid "# of slots/boxes the slide is divided into." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:739 +msgid "Slot Rotation:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:742 +msgid "Start Rotation of Transition (deg)." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:747 +msgid "Animation Duration:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:750 +msgid "The duration of the transition." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:755 +msgid "Easing In:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:795 +msgid "The easing of Appearing transition." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:800 +msgid "Easing Out:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:840 +msgid "The easing of Disappearing transition." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:858 +msgid "Parameter" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:859 +msgid "Max. Chars" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:869 +msgid "Description of Slider:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:872 +msgid "" +"Define a description here to show at the navigation if enabled in Slider " +"Settings" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:881 +msgid "Class:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:883 +msgid "" +"Adds a unique class to the li of the Slide like class=\"rev_special_class\" " +"(add only the classnames, seperated by space)" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:891 +msgid "" +"Adds a unique ID to the li of the Slide like id=\"rev_special_id\" (add only " +"the id)" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:897 +msgid "Custom Fields:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:899 +msgid "" +"Add as many attributes as you wish here. (i.e.: data-layer=\"firstlayer\" data-" +"custom=\"somevalue\")." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:905 +msgid "Enable Link:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:907 +msgid "Enable" +msgstr "Aktivieren" + +#: ../admin/views/templates/slide-general-settings.php:910 +msgid "Link the Full Slide to an URL or Action." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:917 +msgid "Link Type:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:919 +msgid "Regular" +msgstr "Regulär" + +#: ../admin/views/templates/slide-general-settings.php:920 +msgid "To Slide" +msgstr "Zur Slide" + +#: ../admin/views/templates/slide-general-settings.php:922 +msgid "Regular - Link to URL, To Slide - Call a Slide Action" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:929 +msgid "Slide Link:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:931 +msgid "" +"A link on the whole slide pic (use {{link}} or {{meta:somemegatag}} in " +"template sliders to link to a post or some other meta)" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:937 +msgid "Link Target:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:939 .. +#: admin/views/templates/slide-stage.php:2273 +msgid "Same Window" +msgstr "Gleiches Fenster" + +#: ../admin/views/templates/slide-general-settings.php:940 .. +#: admin/views/templates/slide-stage.php:2274 +msgid "New Window" +msgstr "Neues Fenster" + +#: ../admin/views/templates/slide-general-settings.php:942 +msgid "The target of the slide link." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:950 +msgid "-- Not Chosen --" +msgstr "-- Nichts Gewählt --" + +#: ../admin/views/templates/slide-general-settings.php:951 +msgid "-- Next Slide --" +msgstr "-- Nächste Slide --" + +#: ../admin/views/templates/slide-general-settings.php:952 +msgid "-- Previous Slide --" +msgstr "-- Vorige Slide --" + +#: ../admin/views/templates/slide-general-settings.php:955 +msgid "-- Scroll Below Slider --" +msgstr "-- Scrolle Unter Slider --" + +#: ../admin/views/templates/slide-general-settings.php:967 +msgid "Link To Slide:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:978 +msgid "Call Slide Action" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:983 +msgid "Link Sensibility:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:985 +msgid "Front" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:986 +msgid "Back" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:988 +msgid "The z-index position of the link related to layers" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:52 +msgid "Static / Global Layers" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:68 +msgid "Show Layers from Slide:" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:232 +msgid "Add to Templates" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:247 ../admin/views/templates/slide- +#: selector.php:259 +msgid "Add Slide" +msgstr "Neu Slide" + +#: ../admin/views/templates/slide-selector.php:252 +msgid "Add Blank Slide" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:255 +msgid "Add from Template" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:315 +msgid "Slide name should not be empty" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:12 +msgid "Style" +msgstr "Style" + +#: ../admin/views/templates/slide-stage.php:13 +msgid "Advanced Style on/off" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:19 ../admin/views/templates/slide- +#: stage.php:1766 +msgid "Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:20 +msgid "Play/Pause Single Layer Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:26 ../admin/views/templates/slide- +#: stage.php:1031 +msgid "Loop Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:27 +msgid "Play/Pause Layer Loop Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:33 +msgid "Behavior" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:36 +msgid "Attributes" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:38 +msgid "Static Layers" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:40 +msgid "Performance" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:56 +msgid "Global Style Editor" +msgstr "Globaler Style Editor" + +#: ../admin/views/templates/slide-stage.php:58 +msgid "Dynamic Styles (Not Editable):" +msgstr "Dynamische Styles (Nicht Editiernar):" + +#: ../admin/views/templates/slide-stage.php:68 +msgid "Save Static Styles" +msgstr "Speicher Statische Styles" + +#: ../admin/views/templates/slide-stage.php:69 +msgid "Overwrite current static styles?" +msgstr "Überschreibe derzeitige Statische Styles?" + +#: ../admin/views/templates/slide-stage.php:76 +msgid "Caption Style" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:77 +msgid "Style Template" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:79 +msgid "More Style Settings" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:80 +msgid "Reset Style Template" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:84 +msgid "Style Options" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:85 ../admin/views/templates/slide- +#: stage.php:700 ../admin/views/templates/slide-stage.php:875 +msgid "Save" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:87 ../admin/views/templates/slide- +#: stage.php:702 ../admin/views/templates/slide-stage.php:877 +msgid "Rename" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:88 ../admin/views/templates/slide- +#: stage.php:703 ../admin/views/templates/slide-stage.php:878 +msgid "Reset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:99 +msgid "Font Size (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:100 ../admin/views/templates/slide- +#: stage.php:2220 +msgid "Font Size" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:105 +msgid "Line Height (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:106 ../admin/views/templates/slide- +#: stage.php:2221 +msgid "Line Height" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:112 +msgid "White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:126 +msgid "Layer Align Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:127 +msgid "Layer Align Center" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:128 +msgid "Layer Align Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:135 ../admin/views/templates/slide- +#: stage.php:136 +msgid "Horizontal Offset from Aligned Position (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:140 ../admin/views/templates/slide- +#: stage.php:141 +msgid "Vertical Offset from Aligned Position (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:164 ../admin/views/templates/slide- +#: stage.php:165 ../admin/views/templates/slide-stage.php:2222 +msgid "Font Weight" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:179 ../admin/views/templates/slide- +#: stage.php:180 ../admin/views/templates/slide-stage.php:522 .. +#: admin/views/templates/slide-stage.php:523 ../admin/views/templates/slider- +#: main-options.php:2127 ../admin/views/templates/slider-main-options.php:2260 .. +#: admin/views/templates/slider-main-options.php:2364 +msgid "Font Color" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:186 +msgid "Layer Align Top" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:187 +msgid "Layer Align Middle" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:188 +msgid "Layer Align Bottom" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:194 ../admin/views/templates/slide- +#: stage.php:195 ../admin/views/templates/slide-stage.php:196 +msgid "Layer Width (px). Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:197 +msgid "Video Width (px). Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:200 ../admin/views/templates/slide- +#: stage.php:201 +msgid "Layer Height (px). Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:202 +msgid "Layer Height (px) Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:203 +msgid "Video Height (px). Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:206 +msgid "Cover Mode" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:217 +msgid "Auto Linebreak (on/off - White Space:normal / nowrap). " +msgstr "" + +#: ../admin/views/templates/slide-stage.php:222 +msgid "Keep Aspect Ratio (on/off)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:227 +msgid "Reset original size" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:242 ../admin/views/templates/slide- +#: stage.php:510 ../admin/views/templates/slider-main-options.php:4509 +msgid "Font" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:243 ../admin/views/templates/slide- +#: stage.php:511 ../admin/views/templates/slide-stage.php:1975 .. +#: admin/views/templates/slide-stage.php:2041 ../admin/views/templates/slide- +#: stage.php:2123 +msgid "Background" +msgstr "Hintergrund" + +#: ../admin/views/templates/slide-stage.php:245 ../admin/views/templates/slide- +#: stage.php:513 +msgid "Transform" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:246 ../admin/views/templates/slide- +#: stage.php:514 ../admin/views/templates/slide-stage.php:752 .. +#: admin/views/templates/slide-stage.php:928 ../admin/views/templates/slider- +#: main-options.php:3304 +msgid "Rotation" +msgstr "Rotation" + +#: ../admin/views/templates/slide-stage.php:247 ../admin/views/templates/slide- +#: stage.php:757 ../admin/views/templates/slide-stage.php:933 +msgid "Perspective" +msgstr "Perspektive" + +#: ../admin/views/templates/slide-stage.php:249 +msgid "Corners" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:251 ../admin/views/templates/slide- +#: stage.php:641 +msgid "Hover" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:257 ../admin/views/templates/slide- +#: stage.php:258 +msgid "Font Opacity" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:262 +msgid "Italic Font" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:263 +msgid "Italic Font On/Off" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:267 ../admin/views/templates/slide- +#: stage.php:268 ../admin/views/templates/slide-stage.php:531 .. +#: admin/views/templates/slide-stage.php:532 +msgid "Font Decoration" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:278 ../admin/views/templates/slide- +#: stage.php:279 +msgid "Text Align" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:281 ../admin/views/templates/slider- +#: main-options.php:2317 ../admin/views/templates/slider-main-options.php:2532 .. +#: admin/views/templates/slider-main-options.php:2541 .. +#: admin/views/templates/slider-main-options.php:2561 .. +#: admin/views/templates/slider-main-options.php:2571 .. +#: admin/views/templates/slider-main-options.php:2676 .. +#: admin/views/templates/slider-main-options.php:2684 .. +#: admin/views/templates/slider-main-options.php:2846 .. +#: admin/views/templates/slider-main-options.php:2854 .. +#: admin/views/templates/slider-main-options.php:3014 .. +#: admin/views/templates/slider-main-options.php:3022 .. +#: admin/views/templates/slider-main-options.php:3349 .. +#: admin/views/templates/slider-main-options.php:3357 +msgid "Center" +msgstr "Mitte" + +#: ../admin/views/templates/slide-stage.php:290 ../admin/views/templates/slide- +#: stage.php:291 ../admin/views/templates/slide-stage.php:542 .. +#: admin/views/templates/slide-stage.php:543 +msgid "Background Color" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:295 ../admin/views/templates/slide- +#: stage.php:296 ../admin/views/templates/slide-stage.php:547 .. +#: admin/views/templates/slide-stage.php:548 +msgid "Background Opacity" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:300 ../admin/views/templates/slide- +#: stage.php:2190 ../admin/views/templates/slide-stage.php:2192 +msgid "Padding" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:301 ../admin/views/templates/slide- +#: stage.php:2193 ../admin/views/templates/slider-main-options.php:3259 +msgid "Padding Top" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:302 ../admin/views/templates/slide- +#: stage.php:2194 +msgid "Padding Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:303 ../admin/views/templates/slide- +#: stage.php:2195 ../admin/views/templates/slider-main-options.php:3262 +msgid "Padding Bottom" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:304 ../admin/views/templates/slide- +#: stage.php:2196 +msgid "Padding Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:310 ../admin/views/templates/slide- +#: stage.php:311 ../admin/views/templates/slide-stage.php:553 .. +#: admin/views/templates/slide-stage.php:554 ../admin/views/templates/slide- +#: stage.php:2008 ../admin/views/templates/slide-stage.php:2073 .. +#: admin/views/templates/slide-stage.php:2140 +msgid "Border Color" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:315 ../admin/views/templates/slide- +#: stage.php:316 ../admin/views/templates/slide-stage.php:557 .. +#: admin/views/templates/slide-stage.php:558 ../admin/views/templates/slide- +#: stage.php:2012 ../admin/views/templates/slide-stage.php:2013 .. +#: admin/views/templates/slide-stage.php:2077 ../admin/views/templates/slide- +#: stage.php:2078 ../admin/views/templates/slide-stage.php:2144 .. +#: admin/views/templates/slide-stage.php:2145 +msgid "Border Opacity" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:320 ../admin/views/templates/slide- +#: stage.php:321 ../admin/views/templates/slide-stage.php:564 .. +#: admin/views/templates/slide-stage.php:565 +msgid "Border Style" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:331 ../admin/views/templates/slide- +#: stage.php:332 ../admin/views/templates/slide-stage.php:575 .. +#: admin/views/templates/slide-stage.php:576 ../admin/views/templates/slide- +#: stage.php:2017 ../admin/views/templates/slide-stage.php:2018 .. +#: admin/views/templates/slide-stage.php:2082 ../admin/views/templates/slide- +#: stage.php:2083 ../admin/views/templates/slide-stage.php:2149 .. +#: admin/views/templates/slide-stage.php:2150 +msgid "Border Width" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:336 ../admin/views/templates/slide- +#: stage.php:580 +msgid "Border Radius (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:337 ../admin/views/templates/slide- +#: stage.php:581 +msgid "Border Radius Top Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:338 ../admin/views/templates/slide- +#: stage.php:582 +msgid "Border Radius Top Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:339 ../admin/views/templates/slide- +#: stage.php:583 +msgid "Border Radius Bottom Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:340 ../admin/views/templates/slide- +#: stage.php:584 +msgid "Border Radius Bottom Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:346 ../admin/views/templates/slide- +#: stage.php:347 ../admin/views/templates/slide-stage.php:614 .. +#: admin/views/templates/slide-stage.php:615 +msgid "Rotation on X axis (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:350 ../admin/views/templates/slide- +#: stage.php:351 ../admin/views/templates/slide-stage.php:618 .. +#: admin/views/templates/slide-stage.php:619 +msgid "Rotation on Y axis (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:355 ../admin/views/templates/slide- +#: stage.php:356 ../admin/views/templates/slide-stage.php:623 .. +#: admin/views/templates/slide-stage.php:624 +msgid "Rotation on Z axis (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:360 ../admin/views/templates/slide- +#: stage.php:361 +msgid "Horizontal Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:364 ../admin/views/templates/slide- +#: stage.php:365 +msgid "Vertical Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:371 ../admin/views/templates/slide- +#: stage.php:589 +#, php-format +msgid "Opacity. (1 = 100% Visible / 0.5 = 50% opacaity / 0 = transparent)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:372 ../admin/views/templates/slide- +#: stage.php:590 +#, php-format +msgid "Opacity (1 = 100% Visible / 0.5 = 50% opacaity / 0 = transparent)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:376 ../admin/views/templates/slide- +#: stage.php:377 ../admin/views/templates/slide-stage.php:594 .. +#: admin/views/templates/slide-stage.php:595 +msgid "X Scale 1 = 100%, 0.5=50%... (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:381 ../admin/views/templates/slide- +#: stage.php:382 ../admin/views/templates/slide-stage.php:598 .. +#: admin/views/templates/slide-stage.php:599 +msgid "Y Scale 1 = 100%, 0.5=50%... (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:386 ../admin/views/templates/slide- +#: stage.php:387 ../admin/views/templates/slide-stage.php:603 .. +#: admin/views/templates/slide-stage.php:604 +msgid "X Skew (+/- px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:391 ../admin/views/templates/slide- +#: stage.php:392 ../admin/views/templates/slide-stage.php:607 .. +#: admin/views/templates/slide-stage.php:608 +msgid "Y Skew (+/- px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:398 ../admin/views/templates/slide- +#: stage.php:630 +msgid "Template" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:399 ../admin/views/templates/slide- +#: stage.php:631 ../admin/views/templates/slider-main-options.php:971 .. +#: admin/views/templates/slider-main-options.php:1002 .. +#: admin/views/templates/slider-main-options.php:1035 .. +#: admin/views/templates/slider-main-options.php:1069 +msgid "Layer" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:407 +msgid "Layer Hover" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:413 ../admin/views/templates/slide- +#: stage.php:414 +msgid "Hover Animation Speed (in ms)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:419 ../admin/views/templates/slide- +#: stage.php:420 +msgid "Hover Animation Easing" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:430 ../admin/views/templates/slide- +#: stage.php:431 +msgid "Mouse Cursor" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:447 ../admin/views/templates/slide- +#: stage.php:448 +msgid "Animation Perspective (default 600)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:452 ../admin/views/templates/slide- +#: stage.php:453 +msgid "Z Offset (+/- px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:459 +msgid "Parallax Depth Level." +msgstr "" + +#: ../admin/views/templates/slide-stage.php:487 +msgid "Sharp Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:490 ../admin/views/templates/slide- +#: stage.php:499 +msgid "No Corner" +msgstr "Keine Ecken" + +#: ../admin/views/templates/slide-stage.php:491 ../admin/views/templates/slide- +#: stage.php:500 +msgid "Sharp" +msgstr "Scharf" + +#: ../admin/views/templates/slide-stage.php:492 ../admin/views/templates/slide- +#: stage.php:501 +msgid "Sharp Reversed" +msgstr "Scharf Umgekehrt" + +#: ../admin/views/templates/slide-stage.php:496 +msgid "Sharp Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:527 ../admin/views/templates/slide- +#: stage.php:528 +msgid "Font Hover Opacity" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:640 +msgid "Idle" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:645 +msgid "COPY" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:647 +msgid "Copy From Idle" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:648 +msgid "Copy From Hover" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:649 +msgid "Copy From In Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:650 +msgid "Copy From Out Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:667 +msgid "Hover CSS" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:684 ../admin/views/templates/slide- +#: stage.php:856 ../admin/views/templates/slider-main-options.php:1397 +msgid "Advanced Settings" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:688 ../admin/views/templates/slide- +#: stage.php:689 ../admin/views/templates/slide-stage.php:863 .. +#: admin/views/templates/slide-stage.php:864 +msgid "Animation Template" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:699 ../admin/views/templates/slide- +#: stage.php:874 +msgid "Template Options" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:711 ../admin/views/templates/slide- +#: stage.php:712 ../admin/views/templates/slide-stage.php:888 .. +#: admin/views/templates/slide-stage.php:889 +msgid "Animation Easing" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:722 ../admin/views/templates/slide- +#: stage.php:723 ../admin/views/templates/slide-stage.php:899 .. +#: admin/views/templates/slide-stage.php:900 +msgid "Animation Speed (in ms)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:727 ../admin/views/templates/slide- +#: stage.php:728 ../admin/views/templates/slide-stage.php:904 .. +#: admin/views/templates/slide-stage.php:905 +msgid "Split Animaton Text (will not respect Html Markups !)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:729 ../admin/views/templates/slide- +#: stage.php:906 +msgid "No Split" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:730 ../admin/views/templates/slide- +#: stage.php:907 +msgid "Char Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:731 ../admin/views/templates/slide- +#: stage.php:908 +msgid "Word Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:732 ../admin/views/templates/slide- +#: stage.php:909 +msgid "Line Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:736 ../admin/views/templates/slide- +#: stage.php:737 ../admin/views/templates/slide-stage.php:913 .. +#: admin/views/templates/slide-stage.php:914 +msgid "Animation Delay between Splitted Elements" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:750 ../admin/views/templates/slide- +#: stage.php:926 +msgid "Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:753 ../admin/views/templates/slide- +#: stage.php:929 ../admin/views/templates/slider-main-options.php:3323 +msgid "Scale" +msgstr "Maßstab" + +#: ../admin/views/templates/slide-stage.php:754 ../admin/views/templates/slide- +#: stage.php:930 +msgid "Skew" +msgstr "Schiefe" + +#: ../admin/views/templates/slide-stage.php:755 ../admin/views/templates/slide- +#: stage.php:931 +msgid "Masking" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:756 ../admin/views/templates/slide- +#: stage.php:932 +msgid "Origin" +msgstr "Beginn" + +#: ../admin/views/templates/slide-stage.php:768 +msgid "" +"Mask is not available due Style Transitions. Please remove any Rotation, " +"Scale or skew effect form Idle and Hover settings" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1037 ../admin/views/templates/slide- +#: stage.php:1725 ../admin/views/templates/slide-stage.php:2244 +msgid "Disabled" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1038 +msgid "Pendulum" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1039 +msgid "Rotate" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1040 +msgid "Slideloop" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1041 +msgid "Pulse" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1042 +msgid "Wave" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1047 +msgid "Loop Speed (sec) - 0.3 = 300ms" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1048 +msgid "Loop Speed (ms)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1057 ../admin/views/templates/slide- +#: stage.php:1058 +msgid "Loop Easing" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1071 +msgid "Loop Parameters" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1077 ../admin/views/templates/slide- +#: stage.php:1078 +msgid "2D Rotation start deg." +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1081 ../admin/views/templates/slide- +#: stage.php:1082 +msgid "2D Rotation end deg." +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1087 ../admin/views/templates/slide- +#: stage.php:1088 +msgid "2D Rotation X Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1091 ../admin/views/templates/slide- +#: stage.php:1092 +msgid "2D Rotation Y Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1096 +msgid "Start" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1098 ../admin/views/templates/slide- +#: stage.php:1099 +msgid "Start X Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1101 ../admin/views/templates/slide- +#: stage.php:1102 +msgid "Start Y Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1106 +msgid "End" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1108 ../admin/views/templates/slide- +#: stage.php:1109 +msgid "End X Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1111 ../admin/views/templates/slide- +#: stage.php:1112 +msgid "End Y Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1117 ../admin/views/templates/slide- +#: stage.php:1119 +msgid "Zoom Start" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1121 ../admin/views/templates/slide- +#: stage.php:1123 +msgid "Zoom End" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1129 +msgid "Start Angle" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1133 +msgid "Radius" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1135 +msgid "Radius of Rotation / Pendulum" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1143 +msgid "Lazy Loading" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1146 ../admin/views/templates/slide- +#: stage.php:1155 +msgid "Default Setting" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1147 +msgid "Force Lazy Loading" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1148 +msgid "Ignore Lazy Loading" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1152 +msgid "Source Type" +msgstr "Quelle" + +#: ../admin/views/templates/slide-stage.php:1174 ../admin/views/templates/slide- +#: stage.php:2337 +msgid "Animation Timing" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1177 ../admin/views/templates/slide- +#: stage.php:2340 +msgid "In and Out Animation Default" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1178 ../admin/views/templates/slide- +#: stage.php:2341 +msgid "In Animation Default and Out Animation Wait for Trigger" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1179 ../admin/views/templates/slide- +#: stage.php:2342 +msgid "Wait for Trigger" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1183 ../admin/views/templates/slide- +#: stage.php:2345 +msgid "Trigger Memory" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1186 ../admin/views/templates/slide- +#: stage.php:2348 +msgid "Reset Animation and Trigger States every loop" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1187 ../admin/views/templates/slide- +#: stage.php:2349 +msgid "Keep last selected State" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1227 +msgid "ID" +msgstr "ID" + +#: ../admin/views/templates/slide-stage.php:1234 +msgid "Classes" +msgstr "Klassen" + +#: ../admin/views/templates/slide-stage.php:1248 +msgid "Rel" +msgstr "Rel" + +#: ../admin/views/templates/slide-stage.php:1256 +msgid "Alt" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1269 +msgid "Internal Classes:" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1285 +msgid "Layer Type:" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1305 +msgid "Visibility on Devices" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1327 +msgid "Hide 'Under' Width" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1333 +msgid "Only on Slider Hover" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1351 +msgid "Auto Responsive" +msgstr "Auto Responsive" + +#: ../admin/views/templates/slide-stage.php:1357 +msgid "Child Elements Responsive" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1363 +msgid "Align" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1366 +msgid "Grid Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1367 +msgid "Slide Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1372 +msgid "Responsive Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1396 +msgid "Static Layers will be shown on every slide in template sliders" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1403 +msgid "Start on Slide" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1428 +msgid "End on Slide" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1525 +msgid "Image Layer Title " +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1525 +msgid "(only for internal usage):" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1542 +msgid "Add a New Layer" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1545 +msgid "Text/Html" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1546 +msgid "Image" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1547 +msgid "Video" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1548 +msgid "Button" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1549 +msgid "Shape" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1555 +msgid "Quick Layer Selector" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1563 +msgid "Slide contains no layers" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1624 +msgid "Delete All Layers" +msgstr "Alle Ebenen Löschen" + +#: ../admin/views/templates/slide-stage.php:1630 +msgid "Desktop" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1631 ../admin/views/templates/slider- +#: main-options.php:989 +msgid "Notebook" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1632 ../admin/views/templates/slider- +#: main-options.php:1023 +msgid "Tablet" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1633 ../admin/views/templates/slider- +#: main-options.php:1057 ../admin/views/templates/slider-main-options.php:2198 +msgid "Mobile" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1723 +msgid "Helper Grid:" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1732 +msgid "Snap to:" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1734 ../admin/views/templates/slider- +#: main-options.php:3563 ../admin/views/templates/slider-main-options.php:3660 +msgid "None" +msgstr "Keine" + +#: ../admin/views/templates/slide-stage.php:1735 +msgid "Help Lines" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1736 +msgid "Layers" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1750 +msgid "PLAY" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1779 +msgid "DragMe" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1819 +msgid "Add Button Layer" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1825 +msgid "Click on Element to add it" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1829 +msgid "Buttons" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1831 ../admin/views/templates/slide- +#: stage.php:1832 ../admin/views/templates/slide-stage.php:1833 .. +#: admin/views/templates/slide-stage.php:1836 ../admin/views/templates/slide- +#: stage.php:1837 ../admin/views/templates/slide-stage.php:1838 .. +#: admin/views/templates/slide-stage.php:1841 ../admin/views/templates/slide- +#: stage.php:1842 ../admin/views/templates/slide-stage.php:1843 .. +#: admin/views/templates/slide-stage.php:1846 ../admin/views/templates/slide- +#: stage.php:1847 ../admin/views/templates/slide-stage.php:1848 .. +#: admin/views/templates/slide-stage.php:1851 ../admin/views/templates/slide- +#: stage.php:1852 ../admin/views/templates/slide-stage.php:1853 .. +#: admin/views/templates/slide-stage.php:1856 ../admin/views/templates/slide- +#: stage.php:1857 ../admin/views/templates/slide-stage.php:1858 +msgid "Click Here" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1860 +msgid "Predefined Elements" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1971 +msgid "Idle State" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1990 ../admin/views/templates/slide- +#: stage.php:2054 ../admin/views/templates/slide-stage.php:2219 +msgid "Color" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1993 ../admin/views/templates/slide- +#: stage.php:2058 +msgid "Color 2" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2024 +msgid "Text / Icon" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2037 +msgid "Hover State" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2090 +msgid "Text" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2103 +msgid "Add Shape Layer" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2109 +msgid "Click your Shape below to add it" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2119 +msgid "Shape Settings" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2168 ../admin/views/templates/slider- +#: main-options.php:2510 ../admin/views/templates/slider-main-options.php:2521 .. +#: admin/views/templates/slider-main-options.php:2655 .. +#: admin/views/templates/slider-main-options.php:2666 .. +#: admin/views/templates/slider-main-options.php:2812 .. +#: admin/views/templates/slider-main-options.php:2823 .. +#: admin/views/templates/slider-main-options.php:2980 .. +#: admin/views/templates/slider-main-options.php:2991 +msgid "Width" +msgstr "Breite" + +#: ../admin/views/templates/slide-stage.php:2170 ../admin/views/templates/slider- +#: main-options.php:943 +msgid "Full-Width" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2178 +msgid "Height" +msgstr "Höhe" + +#: ../admin/views/templates/slide-stage.php:2180 +msgid "Full-Height" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2205 +msgid "Apply Styles to Selection" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2223 +msgid "Advanced Styles will alwys be applied to all Device Sizes." +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2238 +msgid "Click" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2239 +msgid "Mouse Enter" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2240 +msgid "Mouse Leave" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2245 +msgid "Simple Link" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2246 +msgid "Jump to Slide" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2247 ../admin/views/templates/slider- +#: main-options.php:3792 +msgid "Next Slide" +msgstr "Nächster Slide" + +#: ../admin/views/templates/slide-stage.php:2248 ../admin/views/templates/slider- +#: main-options.php:3788 +msgid "Previous Slide" +msgstr "Voriger Slide" + +#: ../admin/views/templates/slide-stage.php:2249 ../admin/views/templates/slider- +#: main-options.php:3780 +msgid "Pause Slider" +msgstr "Slider Pausieren" + +#: ../admin/views/templates/slide-stage.php:2250 +msgid "Play Slider" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2251 +msgid "Toggle Slider" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2252 +msgid "CallBack" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2253 +msgid "Scroll Below Slider" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2254 +msgid "Start Layer \"in\" Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2255 +msgid "Start Layer \"out\" Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2261 +msgid "Toggle Layer Class" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2266 +msgid "Link Url" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2270 +msgid "Link Target" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2277 +msgid "Link Type" +msgstr "Link Typ" + +#: ../admin/views/templates/slide-stage.php:2280 +msgid "jQuery Link" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2281 +msgid "a Tag Link" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2287 +msgid "Jump To" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2296 +msgid "Scroll Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2303 +msgid "Function" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2309 +msgid "Target" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2313 +msgid "Delay" +msgstr "Verzögerung" + +#: ../admin/views/templates/slide-stage.php:2315 ../admin/views/templates/slider- +#: main-options.php:1763 ../admin/views/templates/slider-main-options.php:1769 .. +#: admin/views/templates/slider-main-options.php:1788 .. +#: admin/views/templates/slider-main-options.php:2032 .. +#: admin/views/templates/slider-main-options.php:2038 .. +#: admin/views/templates/slider-main-options.php:2496 .. +#: admin/views/templates/slider-main-options.php:2501 .. +#: admin/views/templates/slider-main-options.php:2641 .. +#: admin/views/templates/slider-main-options.php:2646 .. +#: admin/views/templates/slider-main-options.php:2798 .. +#: admin/views/templates/slider-main-options.php:2803 .. +#: admin/views/templates/slider-main-options.php:2967 .. +#: admin/views/templates/slider-main-options.php:2971 .. +#: admin/views/templates/slider-main-options.php:3461 +msgid "ms" +msgstr "ms" + +#: ../admin/views/templates/slide-stage.php:2320 +msgid "at Start" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2322 +msgid "Play In Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2323 +msgid "Keep Hidden" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2330 +msgid "Class" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:32 +msgid "Edit Slider" +msgstr "Slider Bearbeiten" + +#: ../admin/views/templates/slider-main-options.php:32 .. +#: admin/views/templates/sliders-list.php:184 +msgid "New Slider" +msgstr "Neuer Slider" + +#: ../admin/views/templates/slider-main-options.php:45 +msgid "Content Source" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:52 +msgid "Default Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:57 +msgid "Post-Based Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:62 +msgid "Specific Posts" +msgstr "Spezifischer Beitrag" + +#: ../admin/views/templates/slider-main-options.php:67 +msgid "Flickr Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:72 +msgid "Instagram Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:77 +msgid "Woo Commerce Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:82 +msgid "Twitter Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:87 +msgid "Facebook Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:92 +msgid "YouTube Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:97 +msgid "Vimeo Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:113 +msgid "Coming Soon!" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:121 +msgid "Slides (max 33)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:122 .. +#: admin/views/templates/slider-main-options.php:143 +msgid "Display this number of photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:124 .. +#: admin/views/templates/slider-main-options.php:260 +msgid "Access Token" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:125 +msgid "Put in your Instagram Access Token" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:128 +msgid "" +"Get your Instagram Access Token here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:132 +msgid "Instagram User ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:133 +msgid "Put in the Instagram User ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:135 +msgid "" +"Find the Instagram User ID here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:142 .. +#: admin/views/templates/slider-main-options.php:229 +msgid "Slides (max 500)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:145 +msgid "Flickr API Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:146 +msgid "Put in your Flickr API Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:148 +msgid "" +"Read here how to receive your Flickr API key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:153 +msgid "Display a user's public photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:153 +msgid "User Public Photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:154 +msgid "Display a certain photoset from a user" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:154 +msgid "User Photoset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:155 +msgid "Display a gallery" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:156 +msgid "Display a group's photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:156 +msgid "Groups' Photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:160 +msgid "Flickr User Url" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:161 +msgid "Put in the URL of the flickr User" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:166 +msgid "Select Photoset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:168 +msgid "Select the photoset to pull the data from " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:174 +msgid "Flickr Gallery Url" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:175 +msgid "Put in the URL of the flickr Gallery" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:180 +msgid "Flickr Group Url" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:181 +msgid "Put in the URL of the flickr Group" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:189 +msgid "Slides (max 25)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:190 +msgid "Display this number of posts" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:192 .. +#: admin/views/templates/slider-main-options.php:232 +msgid "Cache (sec)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:193 .. +#: admin/views/templates/slider-main-options.php:233 +msgid "Cache the stream for x seconds" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:197 +msgid "Facebook Page" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:198 +msgid "Put in the URL/ID of the Facebook page" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:204 .. +#: admin/views/templates/slider-main-options.php:312 +msgid "Album" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:205 +msgid "Timeline" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:210 +msgid "Select Album" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:212 +msgid "Select the album to pull the data from " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:217 +msgid "App ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:218 +msgid "Put in the Facebook App ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:221 +msgid "App Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:222 +msgid "Put in the Facebook App secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:230 +msgid "Display this number of tweets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:236 +msgid "Twitter Name @" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:237 +msgid "Put in the Twitter Account to stream from" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:240 +msgid "Text Tweets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:244 +msgid "Retweets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:248 +msgid "Replies" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:253 +msgid "Consumer Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:254 +msgid "Put in your Twitter Consumer Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:256 +msgid "Consumer Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:257 +msgid "Put in your Twitter Consumer Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:261 +msgid "Put in your Twitter Access Token" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:264 +msgid "Access Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:265 +msgid "Put in your Twitter Access Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:267 +msgid "" +"Please register " +"your application with Twitter to get the values" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:273 +msgid "Slides (max 50)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:274 .. +#: admin/views/templates/slider-main-options.php:307 +msgid "Display this number of videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:276 +msgid "Youtube API Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:277 +msgid "Put in your YouTube API Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:280 +msgid "" +"Find information about the YouTube API key here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:283 +msgid "Channel ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:284 +msgid "Put in the ID of the YouTube channel" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:288 +msgid "Display the channel´s videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:288 .. +#: admin/views/templates/slider-main-options.php:314 .. +#: admin/views/templates/slider-main-options.php:332 +msgid "Channel" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:289 +msgid "Display a playlist" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:289 +msgid "Playlist" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:294 +msgid "Select Playlist" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:300 +msgid "" +"See how to find the Youtube channel ID here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:306 +msgid "Slides (max 60)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:311 +msgid "Display the user's videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:311 .. +#: admin/views/templates/slider-main-options.php:320 +msgid "User" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:312 +msgid "Display an album" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:313 +msgid "Display a group's videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:313 .. +#: admin/views/templates/slider-main-options.php:324 +msgid "Group" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:314 +msgid "Display a channel's videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:321 +msgid "Either the shortcut URL or ID of the user" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:325 +msgid "Either the shortcut URL or ID of the group" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:328 +msgid "Album ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:329 +msgid "The ID of the album" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:333 +msgid "Either the shortcut URL of the channel" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:341 +msgid "Specific Posts List:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:345 +msgid "Post Types:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:389 +msgid "Post Categories:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:415 +msgid "Filter Events By:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:429 +msgid "Sort Posts By:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:431 +msgid "Post ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:432 +msgid "Date" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:434 +msgid "Slug" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:435 +msgid "Author" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:436 +msgid "Last Modified" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:437 +msgid "Number Of Comments" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:438 +msgid "Random" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:439 +msgid "Unsorted" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:440 +msgid "Custom Order" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:456 +msgid "Sort Direction:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:459 +msgid "Descending" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:461 +msgid "Ascending" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:465 +msgid "Max Posts Per Slider:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:469 +msgid "Limit The Excerpt To:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:481 +msgid "Slider Title & ShortCode" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:486 +msgid "Enter your Slider Name here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:488 +msgid "The title of the slider, example: Slider 1" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:492 +msgid "Enter your Slider Alias here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:494 +msgid "The alias for embedding your slider, example: slider1" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:500 +msgid "Place the shortcode where you want to show the slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:514 +msgid "Select a Slider Type" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:519 +msgid "Standard Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:524 +msgid "Hero Scene" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:529 +msgid "Carousel Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:533 +msgid "Load a Preset from this Slider Type" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:544 +msgid "Save Current Settings as Preset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:929 +msgid "Slide Layout" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:948 +msgid "Full-Screen" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:958 +msgid "Desktop Large" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:958 +msgid "Max" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:979 .. +#: admin/views/templates/slider-main-options.php:1010 .. +#: admin/views/templates/slider-main-options.php:1043 .. +#: admin/views/templates/slider-main-options.php:1078 +msgid "Layer Grid Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:984 +msgid "Specify a layer grid size above" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1015 .. +#: admin/views/templates/slider-main-options.php:1048 .. +#: admin/views/templates/slider-main-options.php:1083 +msgid "Custom Grid Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1092 +msgid "Show Advanced Size Options" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1099 +msgid "FullScreen Align Force" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1101 +msgid "Layers align within the full slider instead of the layer grid." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1105 +msgid "Increase/Decrease Fullscreen Height" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1110 +msgid "Containers" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1112 +msgid "" +"Example: #header or .header, .footer, #somecontainer | Height of Slider will " +"be decreased with the height of these Containers to fit perfect in the " +"screen." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1118 +msgid "PX or %" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1120 +msgid "" +"Decrease/Increase height of Slider. Can be used with px and %. " +"Positive/Negative values allowed. Example: 40px or 10%" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1126 .. +#: admin/views/templates/slider-main-options.php:1150 +msgid "Min. Height" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1128 +msgid "The minimum height of the Slider in FullScreen mode." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1136 +msgid "Overflow Hidden" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1139 +msgid "" +"Adds overflow:hidden to the slider wrapping container which will hide / cut " +"any overlapping elements. Mostly used in Carousel Sliders." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1143 +msgid "Respect Aspect Ratio" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1146 +msgid "" +"It will keep aspect ratio and ignore max height of Layer Grid by upscaling. " +"Layer Area will be vertical centered." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1152 +msgid "The minimum height of the Slider in FullWidth or Auto mode." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1346 +msgid "Force Full Width:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1392 +msgid "Customize, Build & Implement" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1398 +msgid "" +"Go for further customization using the advanced settings on the right of " +"this configuration page." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1400 +msgid "Scroll to Options" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1405 +msgid "Start Building Slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1406 +msgid "" +"Our drag and drop editor will make creating slide content an absolut breeze. " +"This is where the magic happens!" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1411 .. +#: admin/views/templates/slider-main-options.php:4443 .. +#: admin/views/templates/slides.php:8 +msgid "Edit Slides" +msgstr "Slides Bearbeiten" + +#: ../admin/views/templates/slider-main-options.php:1419 +msgid "Implement your Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1420 +msgid "" +"There are several ways to add your slider to your wordpress post / page / " +"etc." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1423 .. +#: admin/views/templates/sliders-list.php:144 +msgid "Embed Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1429 .. +#: admin/views/templates/slider-main-options.php:4429 +msgid "Save Settings" +msgstr "Einstellungen Speichern" + +#: ../admin/views/templates/slider-main-options.php:1430 .. +#: admin/views/templates/slider-main-options.php:4430 +msgid "updating..." +msgstr "aktualisiere..." + +#: ../admin/views/templates/slider-main-options.php:1432 .. +#: admin/views/templates/slider-main-options.php:4434 +msgid "Delete Slider" +msgstr "Slider Löschen" + +#: ../admin/views/templates/slider-main-options.php:1434 +msgid "Preview Slider" +msgstr "Slider Vorschau" + +#: ../admin/views/templates/slider-main-options.php:1470 +msgid "Custom CSS / Javascript" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1473 +msgid "Custom CSS" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1477 +msgid "Custom JavaScript" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1729 +msgid "Slideshow" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1730 +msgid "Defaults" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1731 +msgid "Progress Bar" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1732 +msgid "1st Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1733 .. +#: admin/views/templates/slider-main-options.php:2458 +msgid "Misc." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1743 +msgid "" +"Show multi language controls across the slider. Only available when wpml " +"plugin exists." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1743 +msgid "Use Multi Language (WPML)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1752 +msgid "" +"Call next slide when inactive browser tab is focused again. Use this for " +"avoid dissorted layers and broken timeouts after bluring the browser tab." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1752 +msgid "Next Slide on Focus" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1761 +msgid "" +"The time one slide stays on the screen in Milliseconds. This is a Default " +"Global value. Can be adjusted slide to slide also in the slide editor." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1761 +msgid "Default Slide Duration" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1767 +msgid "Sets a delay before the Slider gets initialized" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1767 +msgid "Initialization Delay" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1772 +msgid "Default transition by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1772 +msgid "Transitions" +msgstr "Übergang" + +#: ../admin/views/templates/slider-main-options.php:1786 +msgid "Default transition duration by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1786 +msgid "Animation Duration" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1795 +msgid "Default main image source size by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1795 +msgid "Image Source Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1811 +msgid "Default background size by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1811 .. +#: admin/views/templates/slider-main-options.php:2276 +msgid "Background Fit" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1833 +msgid "Default background position by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1833 .. +#: admin/views/templates/slider-main-options.php:2293 +msgid "Background Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1859 +msgid "Default background repeat by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1859 .. +#: admin/views/templates/slider-main-options.php:2284 +msgid "Background Repeat" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1870 +msgid "Default Ken/Burn setting by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1881 +msgid "Start Fit: (in %):" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1958 +msgid "End Fit: (in %):" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1963 +msgid "Start Offset X:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1968 +msgid "Start Offset Y:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1973 .. +#: admin/views/templates/slider-main-options.php:1983 .. +#: admin/views/templates/slider-main-options.php:1988 +msgid "End Offset Y:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1978 +msgid "End Offset X:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1998 +msgid "Overwrite Selected Settings on all Slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2007 +msgid "" +"Start from a different slide instead of the first slide. I.e. good for " +"preview / edit mode." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2007 +msgid "Alternative 1st Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2011 +msgid "" +"If active, it will overwrite the first slide transition. Use it to get " +"special transition for the first slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2011 +msgid "First Transition Active" +msgstr "Erster Übergang Aktiv" + +#: ../admin/views/templates/slider-main-options.php:2016 +msgid "First slide transition type" +msgstr "Erster Slide Übergangstyp" + +#: ../admin/views/templates/slider-main-options.php:2016 +msgid "Transition Type" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2030 +msgid "First slide transition duration." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2030 +msgid "Transition Duration" +msgstr "Übergangsdauer" + +#: ../admin/views/templates/slider-main-options.php:2036 +msgid "The number of slots or boxes the slide is divided into." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2036 +msgid "Transition Slot Amount" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2047 +msgid "Stops the Timer when mouse is hovering the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2047 +msgid "Stop Slide On Hover" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2052 +msgid "Stops the slideshow after the predefined loop amount at the predefined slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2052 +msgid "Stop Slider After ..." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2058 +msgid "Stops the slider after certain amount of loops. 0 related to the first loop." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2058 +msgid "Amount of Loops" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2063 +msgid "Stops the slider at the given slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2063 +msgid "At Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2069 +msgid "Randomize the order of the slides at every Page reload." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2069 +msgid "Shuffle / Random Mode" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2074 +msgid "" +"If only one Slide is in the Slider, you can choose wether the Slide should " +"loop or if it should stop. If only one Slide exist, slide will be duplicated " +"!" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2074 +msgid "Loop Single Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2080 +msgid "Allow to stop the Slider out of viewport." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2080 +msgid "Stop Slider Out of ViewPort" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2085 +msgid "Out Of ViewPort:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2087 +msgid "Wait" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2088 +msgid "Pause" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2092 +msgid "Min. Size of Slider must be in Viewport before slide starts again." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2092 +msgid "Area out of ViewPort:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2094 .. +#: admin/views/templates/slider-main-options.php:2122 .. +#: admin/views/templates/slider-main-options.php:3254 .. +#: admin/views/templates/slider-main-options.php:3338 +msgid "%" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2102 +msgid "Enable / disable progress var" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2102 +msgid "Progress Bar Active" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2106 +msgid "Position of the progress bar." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2106 +msgid "Progress Bar Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2114 +msgid "The height of the progress bar" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2114 +msgid "Progress Bar Heigth" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2116 .. +#: admin/views/templates/slider-main-options.php:2217 .. +#: admin/views/templates/slider-main-options.php:2223 .. +#: admin/views/templates/slider-main-options.php:2228 .. +#: admin/views/templates/slider-main-options.php:2325 .. +#: admin/views/templates/slider-main-options.php:2331 .. +#: admin/views/templates/slider-main-options.php:2337 .. +#: admin/views/templates/slider-main-options.php:2342 .. +#: admin/views/templates/slider-main-options.php:2512 .. +#: admin/views/templates/slider-main-options.php:2523 .. +#: admin/views/templates/slider-main-options.php:2548 .. +#: admin/views/templates/slider-main-options.php:2554 .. +#: admin/views/templates/slider-main-options.php:2580 .. +#: admin/views/templates/slider-main-options.php:2586 .. +#: admin/views/templates/slider-main-options.php:2618 .. +#: admin/views/templates/slider-main-options.php:2657 .. +#: admin/views/templates/slider-main-options.php:2668 .. +#: admin/views/templates/slider-main-options.php:2691 .. +#: admin/views/templates/slider-main-options.php:2697 .. +#: admin/views/templates/slider-main-options.php:2757 .. +#: admin/views/templates/slider-main-options.php:2771 .. +#: admin/views/templates/slider-main-options.php:2776 .. +#: admin/views/templates/slider-main-options.php:2781 .. +#: admin/views/templates/slider-main-options.php:2814 .. +#: admin/views/templates/slider-main-options.php:2825 .. +#: admin/views/templates/slider-main-options.php:2861 .. +#: admin/views/templates/slider-main-options.php:2867 .. +#: admin/views/templates/slider-main-options.php:2928 .. +#: admin/views/templates/slider-main-options.php:2942 .. +#: admin/views/templates/slider-main-options.php:2947 .. +#: admin/views/templates/slider-main-options.php:2952 .. +#: admin/views/templates/slider-main-options.php:2982 .. +#: admin/views/templates/slider-main-options.php:2993 .. +#: admin/views/templates/slider-main-options.php:3029 .. +#: admin/views/templates/slider-main-options.php:3035 .. +#: admin/views/templates/slider-main-options.php:3244 .. +#: admin/views/templates/slider-main-options.php:3253 .. +#: admin/views/templates/slider-main-options.php:3260 .. +#: admin/views/templates/slider-main-options.php:3263 +msgid "px" +msgstr "px" + +#: ../admin/views/templates/slider-main-options.php:2120 +#, php-format +msgid "" +"The opacity of the progress bar
        (0 == Transparent, 100 = Solid color, 50 " +"= 50% opacity etc...)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2120 +msgid "Progress Bar Opacity" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2126 +msgid "Color of the progress bar." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2126 +msgid "Progress Bar Color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2190 +msgid "Layout & Visual" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2195 +msgid "Appearance" +msgstr "Aussehen" + +#: ../admin/views/templates/slider-main-options.php:2197 +msgid "Spinner" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2199 .. +#: admin/views/templates/slider-main-options.php:2672 .. +#: admin/views/templates/slider-main-options.php:2829 .. +#: admin/views/templates/slider-main-options.php:2997 +msgid "Position" +msgstr "Position" + +#: ../admin/views/templates/slider-main-options.php:2204 +msgid "If this is enabled, the slider will not be loaded on mobile devices." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2204 +msgid "Disable Slider on Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2209 +msgid "This will disable KenBurns on mobile devices to save performance" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2209 +msgid "Disable KenBurn On Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2213 +msgid "Hide Element Under Width:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2215 +msgid "" +"Hide the slider under the defined slider width. Value 0 will disable the " +"function." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2215 .. +#: admin/views/templates/template-slider-selector.php:16 +msgid "Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2221 +msgid "" +"Hide the selected layers (set layers hide under in slide editor) under the " +"defined slider width. Value 0 will disable the function." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2221 +msgid "Predefined Layers" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2226 +msgid "" +"Hide all layers under the defined slider width. Value 0 will disable the " +"function." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2226 +msgid "All Layers" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2236 +msgid "The Shadow display underneath the banner." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2236 +msgid "Shadow Type" +msgstr "Schatten Typ" + +#: ../admin/views/templates/slider-main-options.php:2238 +msgid "No Shadow" +msgstr "Kein Schatten" + +#: ../admin/views/templates/slider-main-options.php:2248 +msgid "Show a dotted overlay over the slides." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2248 +msgid "Dotted Overlay Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2258 +msgid "Slider Background" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2259 +msgid "" +"General background color for slider. Clear value to get transparent slider " +"container." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2259 +msgid "Background color" +msgstr "Hintergrundfarbe" + +#: ../admin/views/templates/slider-main-options.php:2263 +msgid "" +"Padding around the slider. Together with background color shows as slider " +"border." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2263 +msgid "Padding as Border" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2267 +msgid "Use a general background image instead of general background color." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2267 +msgid "Show Background Image" +msgstr "Zeige Hintergrundfarbe" + +#: ../admin/views/templates/slider-main-options.php:2272 +msgid "The source of the general background image." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2272 +msgid "Background Image Url" +msgstr "Hintergrundbild URL" + +#: ../admin/views/templates/slider-main-options.php:2273 .. +#: admin/views/templates/slider-main-options.php:3640 +msgid "Set" +msgstr "Setzen" + +#: ../admin/views/templates/slider-main-options.php:2276 +msgid "" +"General background image size. Cover - always fill the container, cuts " +"overlays. Contain- always fits image into slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2278 +msgid "cover" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2279 +msgid "contain" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2280 +msgid "normal" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2284 +msgid "General background image repeat attitude. Used for tiled images." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2286 +msgid "no-repeat" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2287 +msgid "repeat" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2288 +msgid "repeat-x" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2289 +msgid "repeat-y" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2293 +msgid "" +"General background image position. i.e. center center to always center " +"vertical and horizontal the image in the slider background." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2295 +msgid "center top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2296 +msgid "center right" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2297 +msgid "center bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2298 +msgid "center center" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2299 +msgid "left top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2300 +msgid "left center" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2301 +msgid "left bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2302 +msgid "right top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2303 +msgid "right center" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2304 +msgid "right bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2314 +msgid "" +"The position of the slider within the parrent container. (float:left or " +"float:right or with margin:0px auto;). We recomment do use always CENTER, " +"since the slider will auto fill and grow with the wrapping container. Set " +"any border,padding, floating etc. to the wrapping container where the slider " +"embeded instead of using left/right here !" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2314 +msgid "Position on the page" +msgstr "Position auf der Seite" + +#: ../admin/views/templates/slider-main-options.php:2323 +msgid "The top margin of the slider wrapper div" +msgstr "Der obere Abstand des umliegenden div des Slider" + +#: ../admin/views/templates/slider-main-options.php:2323 +msgid "Margin Top" +msgstr "Abstand Oben" + +#: ../admin/views/templates/slider-main-options.php:2329 +msgid "The bottom margin of the slider wrapper div" +msgstr "Der untere Abstand des umliegenden Div des Sliders" + +#: ../admin/views/templates/slider-main-options.php:2329 +msgid "Margin Bottom" +msgstr "Abstand Unten" + +#: ../admin/views/templates/slider-main-options.php:2335 +msgid "The left margin of the slider wrapper div" +msgstr "Der linke Abstand des umliegenden Div des Sliders" + +#: ../admin/views/templates/slider-main-options.php:2335 +msgid "Margin Left" +msgstr "Abstand Links" + +#: ../admin/views/templates/slider-main-options.php:2340 +msgid "The right margin of the slider wrapper div" +msgstr "Der rechte Abstand des umliegenden Div des Sliders" + +#: ../admin/views/templates/slider-main-options.php:2340 +msgid "Margin Right" +msgstr "Abstand Rechts" + +#: ../admin/views/templates/slider-main-options.php:2351 +msgid "Select a Spinner for your Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2351 +msgid "Choose Spinner" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2357 .. +#: admin/views/templates/slider-main-options.php:3269 +msgid "3" +msgstr "3" + +#: ../admin/views/templates/slider-main-options.php:2358 +msgid "4" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2359 .. +#: admin/views/templates/slider-main-options.php:3270 +msgid "5" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2363 +msgid "The Color the Spinner will be shown in" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2363 +msgid "Spinner Color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2448 +msgid "Navigation" +msgstr "Navigation" + +#: ../admin/views/templates/slider-main-options.php:2457 +msgid "Touch" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2463 +msgid "Enable / Disable Arrows" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2463 +msgid "Enable Arrows" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2468 +msgid "Look of the navigation Arrows" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2468 +msgid "Arrows Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2470 .. +#: admin/views/templates/slider-main-options.php:2601 .. +#: admin/views/templates/slider-main-options.php:2735 .. +#: admin/views/templates/slider-main-options.php:2907 +msgid "No Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2486 +msgid "" +"Enable to make arrows always visible. Disable to hide arrows after the " +"defined time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2486 .. +#: admin/views/templates/slider-main-options.php:2788 .. +#: admin/views/templates/slider-main-options.php:2957 +msgid "Always Show " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2488 .. +#: admin/views/templates/slider-main-options.php:2634 .. +#: admin/views/templates/slider-main-options.php:2790 .. +#: admin/views/templates/slider-main-options.php:2959 +msgid "Yes" +msgstr "Ja" + +#: ../admin/views/templates/slider-main-options.php:2489 .. +#: admin/views/templates/slider-main-options.php:2635 .. +#: admin/views/templates/slider-main-options.php:2791 .. +#: admin/views/templates/slider-main-options.php:2960 +msgid "No" +msgstr "Nein" + +#: ../admin/views/templates/slider-main-options.php:2494 +msgid "Time after the Arrows will be hidden(Default: 200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2494 .. +#: admin/views/templates/slider-main-options.php:2639 .. +#: admin/views/templates/slider-main-options.php:2796 +msgid "Hide After" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2499 +msgid "Time after the Arrows will be hidden on Mobile(Default: 1200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2499 .. +#: admin/views/templates/slider-main-options.php:2644 .. +#: admin/views/templates/slider-main-options.php:2801 +msgid "Hide After on Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2505 +msgid "Force Hide Navigation Arrows under width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2505 +msgid "Hide Under" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2510 +msgid "If browser size goes below this value, then Navigation Arrows are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2516 +msgid "Force Hide Navigation over width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2516 +msgid "Hide Over" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2521 +msgid "If browser size goes over this value, then Navigation Arrows are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2527 +msgid "Left Arrow Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2529 +msgid "Horizontal position of the left arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2529 .. +#: admin/views/templates/slider-main-options.php:2558 .. +#: admin/views/templates/slider-main-options.php:2673 .. +#: admin/views/templates/slider-main-options.php:2843 .. +#: admin/views/templates/slider-main-options.php:3011 +msgid "Horizontal Align" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2538 +msgid "Vertical position of the left arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2538 .. +#: admin/views/templates/slider-main-options.php:2568 .. +#: admin/views/templates/slider-main-options.php:2681 .. +#: admin/views/templates/slider-main-options.php:2851 .. +#: admin/views/templates/slider-main-options.php:3019 +msgid "Vertical Align" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2546 +msgid "Offset from current horizontal position of of left arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2546 .. +#: admin/views/templates/slider-main-options.php:2578 .. +#: admin/views/templates/slider-main-options.php:2689 .. +#: admin/views/templates/slider-main-options.php:2859 .. +#: admin/views/templates/slider-main-options.php:3027 +msgid "Horizontal Offset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2552 +msgid "Offset from current vertical position of of left arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2552 .. +#: admin/views/templates/slider-main-options.php:2584 .. +#: admin/views/templates/slider-main-options.php:2695 .. +#: admin/views/templates/slider-main-options.php:2865 .. +#: admin/views/templates/slider-main-options.php:3033 +msgid "Vertical Offset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2557 +msgid "Right Arrow Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2558 +msgid "Horizontal position of the right arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2568 +msgid "Vertical position of the right arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2578 +msgid "Offset from current horizontal position of of right arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2584 +msgid "Offset from current vertical position of of right arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2594 +msgid "Enable / Disable Bullets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2594 +msgid "Enable Bullets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2599 +msgid "Look of the Bullets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2599 +msgid "Bullet Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2616 +msgid "Space between the bullets." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2616 .. +#: admin/views/templates/slider-main-options.php:2755 .. +#: admin/views/templates/slider-main-options.php:2926 +msgid "Space" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2622 +msgid "Direction of the Bullets. Vertical or Horizontal." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2622 .. +#: admin/views/templates/slider-main-options.php:2760 .. +#: admin/views/templates/slider-main-options.php:2931 +msgid "Direction" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2624 .. +#: admin/views/templates/slider-main-options.php:2762 .. +#: admin/views/templates/slider-main-options.php:2933 .. +#: admin/views/templates/slider-main-options.php:3062 .. +#: admin/views/templates/slider-main-options.php:3077 +msgid "Horizontal" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2625 .. +#: admin/views/templates/slider-main-options.php:2763 .. +#: admin/views/templates/slider-main-options.php:2934 .. +#: admin/views/templates/slider-main-options.php:3063 .. +#: admin/views/templates/slider-main-options.php:3078 +msgid "Vertical" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2632 +msgid "" +"Enable to make bullets always visible. Disable to hide bullets after the " +"defined time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2632 +msgid "Always Show" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2639 +msgid "Time after that the bullets will be hidden(Default: 200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2644 +msgid "Time after the bullets will be hidden on Mobile (Default: 1200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2650 +msgid "Force Hide Navigation Bullets under width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2650 .. +#: admin/views/templates/slider-main-options.php:2807 .. +#: admin/views/templates/slider-main-options.php:2975 +msgid "Hide under Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2655 .. +#: admin/views/templates/slider-main-options.php:2666 +msgid "If browser size goes below this value, then Navigation bullets are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2661 +msgid "Force Hide Navigation Bullets over width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2661 .. +#: admin/views/templates/slider-main-options.php:2818 .. +#: admin/views/templates/slider-main-options.php:2986 +msgid "Hide over Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2673 +msgid "Horizontal position of bullets " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2681 +msgid "Vertical positions of bullets " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2689 +msgid "Offset from current horizontal position." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2695 +msgid "Offset from current Vertical position." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2705 +msgid "Enable / Disable Thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2705 +msgid "Enable Thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2712 .. +#: admin/views/templates/slider-main-options.php:2885 +msgid "Wrapper Container" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2714 +msgid "The wrapper div padding of thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2714 .. +#: admin/views/templates/slider-main-options.php:2887 +msgid "Wrapper Padding" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2718 +msgid "Span wrapper to full width or full height based on the direction selected" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2718 .. +#: admin/views/templates/slider-main-options.php:2891 +msgid "Span Wrapper" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2722 +msgid "Thumbnails wrapper background color. For transparent leave empty." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2722 +msgid "Wrapper color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2723 .. +#: admin/views/templates/slider-main-options.php:2895 .. +#: admin/views/templates/slider-main-options.php:2896 +msgid "Wrapper Color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2726 .. +#: admin/views/templates/slider-main-options.php:2899 +#, php-format +msgid "Opacity of the Wrapper container. 0 - transparent, 50 - 50% opacity..." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2726 .. +#: admin/views/templates/slider-main-options.php:2899 +msgid "Wrapper Opacity" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2733 +msgid "Style of the thumbnails." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2733 +msgid "Thumbnails Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2751 +msgid "The amount of max visible Thumbnails in the same time. " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2751 +msgid "Visible Thumbs Amount" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2755 +msgid "Space between the thumbnails." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2760 +msgid "Direction of the Thumbnails. Vertical or Horizontal." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2767 +msgid "Thumbnail Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2769 +msgid "The basic Width of one Thumbnail." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2769 +msgid "Thumb Width" +msgstr "Thumb Breite" + +#: ../admin/views/templates/slider-main-options.php:2774 +msgid "The basic Height of one Thumbnail." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2774 +msgid "Thumb Height" +msgstr "Thumb Höhe" + +#: ../admin/views/templates/slider-main-options.php:2779 +msgid "" +"The minimum width of the auto resized thumbs. Between Max and Min width the " +"sizes are auto calculated)." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2779 +msgid "Min Thumb Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2788 +msgid "" +"Enable to make thumbnails always visible. Disable to hide thumbnails after " +"the defined time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2796 +msgid "Time after that the thumbnails will be hidden(Default: 200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2801 +msgid "Time after that the thumbnails will be hidden on Mobile (Default: 1200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2807 .. +#: admin/views/templates/slider-main-options.php:2818 +msgid "Force Hide Navigation Thumbnails under width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2812 .. +#: admin/views/templates/slider-main-options.php:2823 +msgid "If browser size goes below this value, then Navigation thumbs are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2830 +msgid "" +"Put the thumbnails inside or outside of the slider container. Outside added " +"thumbnails will decrease the size of the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2830 .. +#: admin/views/templates/slider-main-options.php:2999 +msgid "Inner / outer" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2832 .. +#: admin/views/templates/slider-main-options.php:3001 +msgid "Inner Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2833 .. +#: admin/views/templates/slider-main-options.php:3002 +msgid "Outer Left" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2834 .. +#: admin/views/templates/slider-main-options.php:3003 +msgid "Outer Right" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2835 .. +#: admin/views/templates/slider-main-options.php:3004 +msgid "Outer Top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2836 .. +#: admin/views/templates/slider-main-options.php:3005 +msgid "Outer Bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2843 +msgid "Horizontal position of thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2851 +msgid "Vertical position of thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2859 +msgid "Offset from current Horizontal position." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2865 +msgid "Offset from current Vertical position." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2878 +msgid "Enable / Disable navigation tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2878 +msgid "Enable Tabs" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2887 +msgid "The wrapper div padding of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2891 +msgid "Span wrapper to full width or full height based on the direction selected." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2895 +msgid "Tabs wrapper background color. For transparent leave empty." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2905 +msgid "Style of the tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2905 +msgid "Tabs Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2922 +msgid "The amount of max visible tabs in same time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2922 +msgid "Visible Tabs Amount" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2926 +msgid "Space between the tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2931 +msgid "Direction of the Tabs. Vertical or Horizontal." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2938 +msgid "Tab Sizes" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2940 +msgid "The basic width of one tab." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2940 +msgid "Tabs Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2945 +msgid "the basic height of one tab." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2945 +msgid "Tabs Height" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2950 +msgid "" +"The minimum width of the auto resized Tabs. Between Max and Min width the " +"sizes are auto calculated)." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2950 +msgid "Min. Tab Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2957 +msgid "" +"Enable to make tabs always visible. Disable to hide tabs after the defined " +"time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2965 +msgid "Time after that the tabs will be hidden(Default: 200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2965 +msgid "Hide After" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2969 +msgid "Time after that the tabs will be hidden on Mobile (Default: 1200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2969 +msgid "Hide After on Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2975 .. +#: admin/views/templates/slider-main-options.php:2986 +msgid "Force Hide Navigation tabs under width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2980 .. +#: admin/views/templates/slider-main-options.php:2991 +msgid "If browser size goes below this value, then Navigation tabs are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2999 +msgid "" +"Put the tabs inside or outside of the slider container. Outside added tabs " +"will decrease the size of the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3011 +msgid "Horizontal position of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3019 +msgid "Vertical position of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3027 +msgid "Offset from current horizontal position of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3033 +msgid "Offset from current vertical position of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3044 +msgid "Enable Swipe Function on touch devices" +msgstr "Swipe Funktion auf Tocuhgeräten aktivieren" + +#: ../admin/views/templates/slider-main-options.php:3044 +msgid "Touch Enabled" +msgstr "Berührung An" + +#: ../admin/views/templates/slider-main-options.php:3048 +msgid "Scroll below slider on vertical swipe" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3048 +msgid "Drag Block Vertical" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3052 +msgid "Defines the sensibility of gestures. Smaller values mean a higher sensibility" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3052 +msgid "Swipe Treshhold (0 - 200)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3056 +msgid "Defines how many fingers are needed minimum for swiping" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3056 +msgid "Swipe Min Finger" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3060 +msgid "Swipe Direction to swap slides?" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3060 +msgid "Swipe Direction" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3071 +msgid "Allow/disallow to navigate the slider with keyboard." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3071 +msgid "Keyboard Navigation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3075 +msgid "" +"Keyboard Direction to swap slides (horizontal - left/right arrow, vertical - " +"up/down arrow)?" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3075 +msgid "Key Direction" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3082 +msgid "Allow/disallow to navigate the slider with Mouse Scroll." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3082 +msgid "Mouse Scroll Navigation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3225 +msgid "Carousel Settings" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3231 +msgid "Basics" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3232 +msgid "Transformations" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3233 +msgid "Aligns" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3237 +msgid "" +"Infinity Carousel Scroll. No Endpoints exists at first and last slide if " +"valuse is set to ON." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3237 +msgid "Infinity Scroll" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3242 +msgid "The horizontal gap/space between the slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3242 +msgid "Space between slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3248 +msgid "The border radius of slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3259 +msgid "The padding top of slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3262 +msgid "The padding bottom of slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3266 +msgid "The maximum visible items in same time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3266 +msgid "Max. Visible Items" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3271 +msgid "7" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3272 +msgid "9" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3273 +msgid "11" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3274 +msgid "13" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3275 +msgid "15" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3276 +msgid "17" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3277 +msgid "19" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3281 +msgid "" +"Stretch carousel element width to the wrapping container width. Using this " +"you can see only 1 item in same time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3281 +msgid "Stretch Element" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3291 +msgid "" +"All elements out of focus will get some Opacity value based on the Distance " +"to the current focused element, or only the coming/leaving elements." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3291 +msgid "Fade All Elements" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3297 +msgid "Fade is varying based on the distance to the focused element." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3297 +msgid "Varying Fade" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3304 +msgid "Rotation enabled/disabled for not focused elements." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3311 +msgid "Rotation is varying based on the distance to the focused element." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3311 +msgid "Varying Rotation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3316 +msgid "" +"The maximum rotation of the Side elements. Rotation will depend on the " +"element distance to the current focused element. 0 will turn off the Rotation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3316 +msgid "Max. Rotation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3318 +msgid "deg" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3323 +msgid "Scale enabled/disabled for not focused elements." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3331 +msgid "Scale is varying based on the distance to the focused element." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3331 +msgid "Varying Scale" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3336 +msgid "" +"The maximum scale down of the Side elements. Scale will depend on the " +"element distance to the current focused element. Min value is 0 and max " +"value is 100." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3336 +msgid "Max. Scaledown" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3346 +msgid "Horizontal Align of the Carousel." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3346 +msgid "Horizontal Aligns" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3354 +msgid "Vertical Align of the Carousel." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3354 +msgid "Vertical Aligns" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3432 +msgid "" +"Enabling this, will give you new options in the slides to create a unique " +"parallax effect" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3432 +msgid "Enable Parallax" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3437 +msgid "If set to on, parallax will be disabled on mobile devices to save performance" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3437 +msgid "Disable on Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3442 +msgid "Mouse Sensibility" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3444 +msgid "Defines on what event type the parallax should react to" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3444 +msgid "Event" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3446 +msgid "Mouse Move" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3447 +msgid "Scroll Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3448 +msgid "Move and Scroll" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3452 +msgid "Mouse Based parallax calculation Origo" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3452 +msgid "Parallax Origo" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3454 +msgid "Mouse Enter Point" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3455 +msgid "Slider Center" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3459 +msgid "Parallax Speed for Mouse movents." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3459 +msgid "Animation Speed" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3465 +msgid "Parallax Levels" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3467 .. +#: admin/views/templates/slider-main-options.php:3471 .. +#: admin/views/templates/slider-main-options.php:3475 .. +#: admin/views/templates/slider-main-options.php:3479 .. +#: admin/views/templates/slider-main-options.php:3483 .. +#: admin/views/templates/slider-main-options.php:3487 .. +#: admin/views/templates/slider-main-options.php:3491 .. +#: admin/views/templates/slider-main-options.php:3495 .. +#: admin/views/templates/slider-main-options.php:3499 .. +#: admin/views/templates/slider-main-options.php:3503 +msgid "" +"Defines a level that can be used in Slide Editor for this Slider. Smaller " +"value gives a smaller offset effect, higher value will increase the effect." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3467 +msgid "Level Depth 1" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3471 +msgid "Level Depth 2" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3475 +msgid "Level Depth 3" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3479 +msgid "Level Depth 4" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3483 +msgid "Level Depth 5" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3487 +msgid "Level Depth 6" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3491 +msgid "Level Depth 7" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3495 +msgid "Level Depth 8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3499 +msgid "Level Depth 9" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3503 +msgid "Level Depth 10" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3535 +msgid "Performance and SEO Optimization" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3549 +msgid "" +"How to load/preload the images.

        All - Load all " +"image element in a sequence at the initialisation. This will boost up the " +"loading of your page, and will preload all images to have a smooth and " +"breakless run already in the first loop.

        Smart - " +"It will load the page as quick as possible, and load only the current and " +"neighbour slide elements. If slide is called which not loaded yet, will be " +"loaded on demand with minimal delays.

        Single - It " +"will load only the the start slide. Any other slides will be loaded on " +"demand." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3549 +msgid "Lazy Load" +msgstr "Lazy Load" + +#: ../admin/views/templates/slider-main-options.php:3552 +msgid "Smart" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3553 +msgid "Single" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3554 +msgid "No Lazy Loading" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3561 +msgid "" +"Define SEO Optimization for the Images in the Slider, useful if Lazy Load is " +"on." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3561 +msgid "SEO Optimization" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3564 +msgid "NoScript" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3565 +msgid "NoFrame" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3615 +msgid "Problem Handlings" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3620 +msgid "Fallbacks" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3621 +msgid "Troubleshooting" +msgstr "Fehlerbehandlung" + +#: ../admin/views/templates/slider-main-options.php:3624 +msgid "Simplyfies the Slider on IOS4 and IE8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3624 +msgid "Simplify on IOS4/IE8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3628 +msgid "Disables the Slider and load an alternative image instead" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3628 +msgid "Use Alternative Image" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3631 +msgid "On Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3632 +msgid "On IE8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3633 +msgid "On Mobile and IE8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3638 +msgid "The image that will be loaded instead of the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3638 +msgid "Alternate Image" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3645 +msgid "" +"Turns on / off jquery noconflict mode. Try to enable this option if " +"javascript conflicts exist on the page." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3645 +msgid "JQuery No Conflict Mode" +msgstr "jQuery No Conflict Modus" + +#: ../admin/views/templates/slider-main-options.php:3649 +msgid "" +"Try this to fix some javascript conflicts of type: TypeError: " +"tpj('#rev_slider_1_1').show().revolution is not a function" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3649 +msgid "Put JS Includes To Body" +msgstr "JS Inkludierungen in den Body einfügen" + +#: ../admin/views/templates/slider-main-options.php:3658 +msgid "" +"Activate a protection against wordpress output filters that adds html blocks " +"to the shortcode output like P and BR." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3658 +msgid "Output Filters Protection" +msgstr "Filter Schutz Ausgeben" + +#: ../admin/views/templates/slider-main-options.php:3661 +msgid "By Compressing Output" +msgstr "Durch Komprimieren der Ausgabe" + +#: ../admin/views/templates/slider-main-options.php:3662 +msgid "By Echo Output" +msgstr "Durch echo der Ausgabe" + +#: ../admin/views/templates/slider-main-options.php:3666 +msgid "Turns on / off visible Debug Mode on Front End." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3666 +msgid "Debug Mode" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3695 +msgid "Import / Export / Replace" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3699 +msgid "Import" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3700 .. +#: admin/views/templates/sliders-list.php:154 +msgid "Export" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3701 +msgid "Replace URL" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3713 +msgid "Overwrite or append the custom animations due the new imported values ?" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3713 +msgid "Custom Animations" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3718 +msgid "Overwrite or append the static styles due the new imported values ?" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3718 ../includes/operations. +#: class.php:2313 +msgid "Static Styles" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3728 +msgid "" +"Note! Style templates will be updated if they exist. Importing slider, will " +"delete all the current slider settings and slides and replacing it with the " +"imported content." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3734 +msgid "Export Slider" +msgstr "Slider Exportieren" + +#: ../admin/views/templates/slider-main-options.php:3734 +msgid "Export with Dummy Images" +msgstr "Export mit Beispiel Bildern" + +#: ../admin/views/templates/slider-main-options.php:3740 +msgid "" +"Replace all layer and backgorund image url's. example - replace from: http:" +"//localhost" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3740 +msgid "Replace From" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3744 +msgid "" +"Replace all layer and backgorund image url's. example - replace to: http:" +"//yoursite.com" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3744 +msgid "Replace To" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3751 +msgid "Replace URL's" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3752 +msgid "Replacing..." +msgstr "Ersetze..." + +#: ../admin/views/templates/slider-main-options.php:3755 +msgid "Note! The replace process is not reversible !" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3772 +msgid "API Functions" +msgstr "API Funktionen" + +#: ../admin/views/templates/slider-main-options.php:3776 +msgid "Methods" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3777 +msgid "Events" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3780 +msgid "Call this function to pause the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3784 +msgid "Call this function to play the slider if it is paused." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3784 +msgid "Resume Slider" +msgstr "Slider Fortsetzen" + +#: ../admin/views/templates/slider-main-options.php:3788 +msgid "Switch slider to previous slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3792 +msgid "Switch slider to next slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3796 .. +#: admin/views/templates/slider-main-options.php:3800 +msgid "Switch to the slide which is defined as parameter." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3796 +msgid "Go To Slide" +msgstr "Gehe Zu Slide" + +#: ../admin/views/templates/slider-main-options.php:3800 +msgid "Go To Slide with ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3804 +msgid "Get the amount of existing slides in the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3804 +msgid "Max Slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3808 +msgid "Get the current focused slide index." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3808 +msgid "Current Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3812 +msgid "Get the previously played slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3816 +msgid "Scroll page under the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3816 +msgid "External Scroll" +msgstr "Externes Scrollen" + +#: ../admin/views/templates/slider-main-options.php:3820 +msgid "" +"Recalculate all positions, sizing etc in the slider. This should be called " +"i.e. if Slider was invisible and becomes visible without any window resize " +"event." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3820 +msgid "Redraw Slider" +msgstr "Slider Erneuern" + +#: ../admin/views/templates/slider-main-options.php:3824 +msgid "" +"Unbind all listeners, remove current animations and delete containers. Ready " +"for Garbage collection." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3824 +msgid "Kill Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3829 +msgid "Slider Loaded" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3834 +msgid "Slider swapped to an other slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3838 +msgid "Current Slide as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3840 .. +#: admin/views/templates/slider-main-options.php:3891 +msgid "Previous Slide as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3842 +msgid "Slider paused" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3847 +msgid "Slider is Playing after pause" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3852 +msgid "Video is playing in slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3856 .. +#: admin/views/templates/slider-main-options.php:3866 +msgid "The Video API to Manage Video functions" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3858 .. +#: admin/views/templates/slider-main-options.php:3868 +msgid "youtube, vimeo, html5" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3860 .. +#: admin/views/templates/slider-main-options.php:3870 +msgid "Video Settings" +msgstr "Video Einstellungen" + +#: ../admin/views/templates/slider-main-options.php:3862 +msgid "Video stopped in slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3872 +msgid "Slider reached the 'stop at' slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3877 +msgid "Prepared for slide change" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3881 .. +#: admin/views/templates/slider-main-options.php:3889 +msgid "Current Slide as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3883 +msgid "Coming Slide as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3885 +msgid "Finnished with slide change" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3893 +msgid "Last slide starts" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3898 +msgid "Layer Events" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3901 +msgid "Layer Action (enterstage, enteredstage, leavestage,leftstage)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3903 +msgid "Layer Type (image,video,html)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3905 +msgid "Default Settings for Layer" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3907 +msgid "Layer as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3920 +msgid "Google Fonts" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3926 +msgid "Add New Font" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3927 +msgid "" +"Copy the Google Font Family from http://www.google.com/fonts like: Open+Sans:400," +"700,600" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3982 +msgid "*Only Illustration, most changes are not visible." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:4455 +msgid "Save Settings as Preset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:4457 +msgid "Preset Name" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:4458 +msgid "Select" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:4509 +msgid "Google Font String" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:39 +msgid "Social" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:150 +msgid "Order Posts" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:163 +msgid "Export to HTML" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:188 +msgid "Create New Slider" +msgstr "Neuen Slider Erstellen" + +#: ../admin/views/templates/sliders-list.php:189 +msgid "Add Template Slider" +msgstr "" + +#: ../admin/views/templates/slides-list.php:92 +msgid "Unpublish Slide" +msgstr "Slide Verstecken" + +#: ../admin/views/templates/slides-list.php:96 +msgid "Publish Slide" +msgstr "Slide Anzeigen" + +#: ../admin/views/templates/slides-list.php:115 +msgid "Slide Image - Click to change" +msgstr "" + +#: ../admin/views/templates/slides-list.php:135 +msgid "Deleting Slide..." +msgstr "Lösche Slide..." + +#: ../admin/views/templates/slides-list.php:139 +msgid "Open copy / move dialog" +msgstr "Öffne Kopieren / Verschieben Dialog" + +#: ../admin/views/templates/slides-list.php:147 +msgid "Working..." +msgstr "Arbeite..." + +#: ../admin/views/templates/slides.php:16 ../admin/views/templates/slides.php:36 +msgid "New Slide" +msgstr "Neue Slide" + +#: ../admin/views/templates/slides.php:18 ../admin/views/templates/slides.php:38 +msgid "New Transparent Slide" +msgstr "Neue Durchsichtige Slide" + +#: ../admin/views/templates/slides.php:19 ../admin/views/templates/slides.php:39 +msgid "Adding Slide..." +msgstr "Füge Slide hinzu..." + +#: ../admin/views/templates/slides.php:36 +msgid "Select image or multiple images to add slide or slides" +msgstr "Wählen Sie ein Bild oder mehrere Bilder um diese als Slides anzulegen" + +#: ../admin/views/templates/slides.php:41 +msgid "Edit Static / Global Layers" +msgstr "" + +#: ../admin/views/templates/slides.php:46 +msgid "To Slider Settings" +msgstr "Zu Den Slider Einstellungen" + +#: ../admin/views/templates/template-selector.php:17 +msgid "Slide" +msgstr "Slide" + +#: ../admin/views/templates/template-selector.php:22 .. +#: admin/views/templates/template-slider-selector.php:21 +msgid "Revolution Base" +msgstr "" + +#: ../admin/views/templates/template-selector.php:23 +msgid "All Slides" +msgstr "" + +#: ../admin/views/templates/template-selector.php:24 +msgid "Templates" +msgstr "" + +#: ../admin/views/templates/template-selector.php:230 .. +#: admin/views/templates/template-selector.php:243 +msgid "Import Template Slide" +msgstr "" + +#: ../admin/views/templates/template-selector.php:240 .. +#: admin/views/templates/template-slider-selector.php:225 +msgid "" +"Please select the corresponding zip file from the download packages import " +"folder called" +msgstr "" + +#: ../admin/views/templates/template-selector.php:245 .. +#: admin/views/templates/template-slider-selector.php:230 +msgid "Note: style templates will be updated if they exist!" +msgstr "" + +#: ../admin/views/templates/template-slider-selector.php:218 .. +#: admin/views/templates/template-slider-selector.php:228 +msgid "Import Template Slider" +msgstr "" + +#: ../admin/views/templates/wpml-selector.php:11 +msgid "Preview Slide" +msgstr "Vorschau der Slide" + +#: ../admin/views/templates/wpml-selector.php:41 +msgid "Choose slide language" +msgstr "Wähle Slide Sprache" + +#: ../includes/extension.class.php:56 +msgid "Slider Revolution" +msgstr "" + +#: ../includes/extension.class.php:112 +msgid "Choose Revolution Slider" +msgstr "" + +#: ../includes/extension.class.php:116 +msgid "--- Choose Slider ---" +msgstr "" + +#: ../includes/external-sources.class.php:383 +msgid "Can't get the bearer token, check your credentials" +msgstr "" + +#: ../includes/external-sources.class.php:438 +msgid "Bearer Token is good, check your query" +msgstr "" + +#: ../includes/navigation.class.php:155 +msgid "Invalid ID" +msgstr "" + +#: ../includes/navigation.class.php:159 +msgid "Navigation could not be deleted" +msgstr "" + +#: ../includes/operations.class.php:262 ../includes/operations.class.php:332 +msgid "## Custom Animation ##" +msgstr "" + +#: ../includes/operations.class.php:264 ../includes/operations.class.php:335 +msgid "- VERSION 5.0 ANIMATIONS -" +msgstr "" + +#: ../includes/operations.class.php:286 ../includes/operations.class.php:348 +msgid "- VERSION 4.0 ANIMATIONS -" +msgstr "" + +#: ../includes/operations.class.php:307 ../includes/operations.class.php:368 +msgid "- SAVED CUSTOM ANIMATIONS -" +msgstr "" + +#: ../includes/operations.class.php:333 +msgid "Automatic Reverse" +msgstr "" + +#: ../includes/operations.class.php:1239 ../includes/operations.class.php:1331 +msgid "Choose language" +msgstr "Sprache Wählen" + +#: ../includes/operations.class.php:1372 +msgid "CAPTIONS CSS" +msgstr "" + +#: ../includes/operations.class.php:1404 +msgid "Replace image path:" +msgstr "" + +#: ../includes/operations.class.php:1404 +msgid "From:" +msgstr "" + +#: ../includes/operations.class.php:1404 +msgid "To:" +msgstr "" + +#: ../includes/operations.class.php:1404 +msgid "Replace" +msgstr "Ersetze" + +#: ../includes/operations.class.php:1407 +msgid "Header" +msgstr "" + +#: ../includes/operations.class.php:1407 ../includes/operations.class.php:1409 .. +#: includes/operations.class.php:1411 ../includes/operations.class.php:1413 +msgid "Mark to Copy" +msgstr "" + +#: ../includes/operations.class.php:1411 +msgid "Body" +msgstr "" + +#: ../includes/operations.class.php:1413 +msgid "Script" +msgstr "" + +#: ../includes/operations.class.php:1433 +msgid "Loading Preview..." +msgstr "Lade Vorschau..." + +#: ../includes/operations.class.php:1592 +msgid "Purchase Code already registered!" +msgstr "" + +#: ../includes/operations.class.php:1994 +msgid "Overall Slider Performance" +msgstr "" + +#: ../includes/operations.class.php:1997 ../includes/operations.class.php:2087 .. +#: includes/operations.class.php:2174 ../includes/operations.class.php:2251 .. +#: includes/operations.class.php:2377 ../includes/operations.class.php:2458 +msgid "Slow" +msgstr "" + +#: ../includes/operations.class.php:1998 ../includes/operations.class.php:2088 .. +#: includes/operations.class.php:2175 ../includes/operations.class.php:2252 .. +#: includes/operations.class.php:2378 ../includes/operations.class.php:2459 +msgid "Ok" +msgstr "" + +#: ../includes/operations.class.php:1999 ../includes/operations.class.php:2089 .. +#: includes/operations.class.php:2176 ../includes/operations.class.php:2253 .. +#: includes/operations.class.php:2379 ../includes/operations.class.php:2460 +msgid "Fast" +msgstr "" + +#: ../includes/operations.class.php:2005 ../includes/operations.class.php:2020 .. +#: includes/operations.class.php:2035 +msgid "Load Speed UMTS:" +msgstr "" + +#: ../includes/operations.class.php:2009 ../includes/operations.class.php:2024 .. +#: includes/operations.class.php:2039 +msgid "Load Speed DSL:" +msgstr "" + +#: ../includes/operations.class.php:2013 ../includes/operations.class.php:2028 .. +#: includes/operations.class.php:2043 +msgid "Load Speed T1:" +msgstr "" + +#: ../includes/operations.class.php:2050 +msgid "Total Slider Size:" +msgstr "" + +#: ../includes/operations.class.php:2055 +msgid "Preloaded Slides Size:" +msgstr "" + +#: ../includes/operations.class.php:2067 +msgid "Need Some Attention" +msgstr "" + +#: ../includes/operations.class.php:2084 +msgid "Image Performance" +msgstr "" + +#: ../includes/operations.class.php:2096 +msgid "Images Loaded:" +msgstr "" + +#: ../includes/operations.class.php:2101 ../includes/operations.class.php:2193 .. +#: includes/operations.class.php:2264 ../includes/operations.class.php:2390 .. +#: includes/operations.class.php:2471 +msgid "Hide Details" +msgstr "" + +#: ../includes/operations.class.php:2101 ../includes/operations.class.php:2101 .. +#: includes/operations.class.php:2193 ../includes/operations.class.php:2193 .. +#: includes/operations.class.php:2264 ../includes/operations.class.php:2264 .. +#: includes/operations.class.php:2390 ../includes/operations.class.php:2390 .. +#: includes/operations.class.php:2471 ../includes/operations.class.php:2471 +msgid "Show Details" +msgstr "" + +#: ../includes/operations.class.php:2128 ../includes/operations.class.php:2211 +msgid "extern" +msgstr "" + +#: ../includes/operations.class.php:2130 ../includes/operations.class.php:2213 +msgid "missing" +msgstr "" + +#: ../includes/operations.class.php:2171 +msgid "Video Performance" +msgstr "" + +#: ../includes/operations.class.php:2183 +msgid "Videos Loaded (max):" +msgstr "" + +#: ../includes/operations.class.php:2189 +msgid "Unknown" +msgstr "" + +#: ../includes/operations.class.php:2248 +msgid "CSS Performance" +msgstr "" + +#: ../includes/operations.class.php:2260 +msgid "CSS Loaded:" +msgstr "" + +#: ../includes/operations.class.php:2285 +msgid "css/settings.css" +msgstr "" + +#: ../includes/operations.class.php:2349 +msgid "Dynamic Styles" +msgstr "" + +#: ../includes/operations.class.php:2374 +msgid "jQuery Performance" +msgstr "" + +#: ../includes/operations.class.php:2386 +msgid "jQuery Loaded:" +msgstr "" + +#: ../includes/operations.class.php:2455 +msgid "Google Fonts Performance" +msgstr "" + +#: ../includes/operations.class.php:2467 +msgid "Fonts Loaded:" +msgstr "" + +#: ../includes/output.class.php:312 +msgid "" +"No slides found, please add at least one Slide Template to the choosen " +"language." +msgstr "" + +#: ../includes/output.class.php:314 +msgid "No slides found, please add some slides" +msgstr "" + +#: ../includes/output.class.php:3612 +msgid "Revolution Slider Error" +msgstr "Revolution Slider Fehler" + +#: ../includes/slide.class.php:205 +msgid "Source must be from Stream" +msgstr "" + +#: ../includes/slider.class.php:893 +msgid "No file sent." +msgstr "" + +#: ../includes/slider.class.php:896 +msgid "Exceeded filesize limit." +msgstr "" + +#: ../includes/slider.class.php:927 +msgid "Please select the correct zip file" +msgstr "" + +#: ../includes/slider.class.php:944 +msgid "Please select the correct zip file, checksum failed!" +msgstr "" + +#: ../includes/slider.class.php:1020 +msgid "animations imported!" +msgstr "animationen importiert!" + +#: ../includes/slider.class.php:1022 +msgid "" +"no custom animations found, if slider uses custom animations, the provided " +"export may be broken..." +msgstr "" +"keine erstellten animationen gefunden. Wenn der Slider eigens erstelle " +"animationen benutzt, könnte der export beschädigt sein..." + +#: ../includes/slider.class.php:1082 +msgid "dynamic styles imported!" +msgstr "dynamische styles importiert!" + +#: ../includes/slider.class.php:1084 +msgid "" +"no dynamic styles found, if slider uses dynamic styles, the provided export " +"may be broken..." +msgstr "" +"keine dynamischen styles gefunden. Wenn der slider dynamische styles benutzt," +" könnte der export beschädigt sein..." + +#: ../includes/slider.class.php:1372 ../includes/slider.class.php:1405 .. +#: includes/framework/base.class.php:487 +msgid " not found!
        " +msgstr "" + +#: ../includes/slider.class.php:1556 +msgid "could not find correct Slide to copy, please try again." +msgstr "" + +#: ../includes/slider.class.php:1714 ../includes/slider.class.php:1723 +msgid "Slide could not be duplicated" +msgstr "" + +#: ../includes/slider.class.php:1731 +msgid "Slide could not be copied" +msgstr "" + +#: ../includes/slider.class.php:2039 +msgid "Failed to load Stream" +msgstr "" + +#: ../includes/widget.class.php:15 +msgid "Displays a revolution slider on the page" +msgstr "Zeige einen Revolution Slider auf der Seite" + +#: ../includes/widget.class.php:16 +msgid "Revolution Slider" +msgstr "Revolution Slider" + +#: ../includes/widget.class.php:30 +msgid "No sliders found, Please create a slider" +msgstr "Keine Slider gefunden. Bitte erstellen Sie einen Slider" + +#: ../includes/widget.class.php:69 +msgid "Home Page Only" +msgstr "Nur auf Homepage" + +#: ../includes/widget.class.php:72 +msgid "Pages: (example: 2,10)" +msgstr "Seiten: (beispiel: 2,10)" + +#: ../includes/framework/base-admin.class.php:265 +msgid "Wrong Request" +msgstr "" + +#: ../includes/framework/base.class.php:219 +msgid "Original" +msgstr "" + +#: ../includes/framework/base.class.php:220 ../includes/framework/base.class.php: +#: 267 ../includes/framework/base.class.php:282 +msgid "Large" +msgstr "" + +#: ../includes/framework/base.class.php:221 +msgid "Large Square" +msgstr "" + +#: ../includes/framework/base.class.php:222 ../includes/framework/base.class.php: +#: 257 ../includes/framework/base.class.php:266 ../includes/framework/base.class. +#: php:281 +msgid "Medium" +msgstr "" + +#: ../includes/framework/base.class.php:223 +msgid "Medium 800" +msgstr "" + +#: ../includes/framework/base.class.php:224 +msgid "Medium 640" +msgstr "" + +#: ../includes/framework/base.class.php:225 ../includes/framework/base.class.php: +#: 265 +msgid "Small" +msgstr "" + +#: ../includes/framework/base.class.php:226 +msgid "Small 320" +msgstr "" + +#: ../includes/framework/base.class.php:227 ../includes/framework/base.class.php: +#: 234 ../includes/framework/base.class.php:280 +msgid "Thumbnail" +msgstr "Thumbnail" + +#: ../includes/framework/base.class.php:228 +msgid "Square" +msgstr "" + +#: ../includes/framework/base.class.php:233 ../includes/framework/base.class.php: +#: 240 +msgid "Standard Resolution" +msgstr "" + +#: ../includes/framework/base.class.php:235 +msgid "Low Resolution" +msgstr "" + +#: ../includes/framework/base.class.php:245 +msgid "Size 0" +msgstr "" + +#: ../includes/framework/base.class.php:246 +msgid "Size 1" +msgstr "" + +#: ../includes/framework/base.class.php:247 +msgid "Size 2" +msgstr "" + +#: ../includes/framework/base.class.php:248 +msgid "Size 3" +msgstr "" + +#: ../includes/framework/base.class.php:249 +msgid "Size 4" +msgstr "" + +#: ../includes/framework/base.class.php:250 +msgid "Size 5" +msgstr "" + +#: ../includes/framework/base.class.php:251 +msgid "Size 6" +msgstr "" + +#: ../includes/framework/base.class.php:256 +msgid "Default" +msgstr "" + +#: ../includes/framework/base.class.php:258 +msgid "High" +msgstr "" + +#: ../includes/framework/base.class.php:259 +msgid "Standard" +msgstr "" + +#: ../includes/framework/base.class.php:260 +msgid "Max. Res." +msgstr "" + +#: ../includes/framework/base.class.php:279 +msgid "Original Size" +msgstr "" + +#: ../includes/framework/em-integration.class.php:32 +msgid "All Events" +msgstr "Alle Events" + +#: ../includes/framework/em-integration.class.php:33 +msgid "Today" +msgstr "Heute" + +#: ../includes/framework/em-integration.class.php:34 +msgid "Tomorrow" +msgstr "Morgen" + +#: ../includes/framework/em-integration.class.php:35 +msgid "Future" +msgstr "Zukunft" + +#: ../includes/framework/em-integration.class.php:36 +msgid "Past" +msgstr "Vergangenheit" + +#: ../includes/framework/em-integration.class.php:37 +msgid "This Month" +msgstr "Diesen Monat" + +#: ../includes/framework/em-integration.class.php:38 +msgid "Next Month" +msgstr "Nächster Monat" + +#: ../includes/framework/em-integration.class.php:168 +msgid "Event Start Date" +msgstr "Event Start Datum" + +#: ../includes/framework/em-integration.class.php:169 +msgid "Event End Date" +msgstr "Event End Datum" + +#: ../includes/framework/functions-wordpress.class.php:887 +#, php-format +msgid "View all posts in %s" +msgstr "Sehe alle Beiträge in %s" + +#: ../includes/framework/wpml.class.php:46 ../includes/framework/wpml.class.php:162 +msgid "All Languages" +msgstr "Alle Sprachen" diff --git a/plugins/revslider/languages/revslider-en_US.mo b/plugins/revslider/languages/revslider-en_US.mo new file mode 100644 index 0000000..9bafa85 Binary files /dev/null and b/plugins/revslider/languages/revslider-en_US.mo differ diff --git a/plugins/revslider/languages/revslider-en_US.po b/plugins/revslider/languages/revslider-en_US.po new file mode 100644 index 0000000..cd5f916 --- /dev/null +++ b/plugins/revslider/languages/revslider-en_US.po @@ -0,0 +1,7330 @@ +msgid "" +msgstr "" +"Project-Id-Version: Revolution Slider\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: Mon Jul 13 2015 10:02:33 GMT+0200 (CEST)\n" +"PO-Revision-Date: Mon Jul 13 2015 10:03:21 GMT+0200 (CEST)\n" +"Last-Translator: admin \n" +"Language-Team: \n" +"Language: English\n" +"Plural-Forms: nplurals=2; plural=n != 1\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-Basepath: .\n" +"X-Poedit-SearchPath-0: ..\n" +"X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;" +"__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;" +"_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;" +"esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;" +"esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n" +"X-Loco-Target-Locale: en_US\n" +"X-Generator: Loco - https://localise.biz/" + +#: ../revslider.php:170 +msgid "Include RevSlider libraries globally (all pages/posts)" +msgstr "" + +#: ../revslider.php:171 +msgid "Pages to include RevSlider libraries" +msgstr "" + +#: ../revslider.php:172 +msgid "" +"If you want to use the PHP function \"putRevSlider\" in your code please make " +"sure to check \" " +msgstr "" + +#: ../revslider.php:172 +msgid "" +" \" in the backend's \"General Settings\" (top right panel).

        Or add " +"the current page to the \"" +msgstr "" + +#: ../revslider.php:172 +msgid "\" option box." +msgstr "" + +#: ../revslider.php:212 +msgid "Revolution Slider Error:" +msgstr "" + +#: ../admin/revslider-admin.class.php:62 ../admin/views/navigation-editor.php:28 +msgid "Navigation Editor" +msgstr "" + +#: ../admin/revslider-admin.class.php:188 +msgid "-- wrong alias -- " +msgstr "" + +#: ../admin/revslider-admin.class.php:189 +msgid "Navigation Bullets and Arrows are now set to none." +msgstr "" + +#: ../admin/revslider-admin.class.php:190 +msgid "Create Template" +msgstr "" + +#: ../admin/revslider-admin.class.php:191 +msgid "Do you really want to delete" +msgstr "" + +#: ../admin/revslider-admin.class.php:192 +msgid "Are you sure to replace the urls?" +msgstr "" + +#: ../admin/revslider-admin.class.php:193 +msgid "" +"Set selected settings on all Slides of this Slider? (This will be saved " +"immediately)" +msgstr "" + +#: ../admin/revslider-admin.class.php:194 ../admin/views/slide-overview.php:174 +msgid "Select Slide Image" +msgstr "" + +#: ../admin/revslider-admin.class.php:195 +msgid "Select Slide Video" +msgstr "" + +#: ../admin/revslider-admin.class.php:196 +msgid "Show Slide Options" +msgstr "" + +#: ../admin/revslider-admin.class.php:197 +msgid "Hide Slide Options" +msgstr "" + +#: ../admin/revslider-admin.class.php:198 ../admin/views/slide-overview.php:168 .. +#: /admin/views/system/dialog-copy-move.php:3 ../admin/views/templates/slider- +#: main-options.php:1309 ../admin/views/templates/slider-main-options.php:4280 .. +#: /admin/views/templates/slides.php:21 ../admin/views/templates/slides.php:43 +msgid "Close" +msgstr "" + +#: ../admin/revslider-admin.class.php:199 +msgid "Really update global styles?" +msgstr "" + +#: ../admin/revslider-admin.class.php:200 +msgid "Global Styles Editor" +msgstr "" + +#: ../admin/revslider-admin.class.php:201 ../admin/revslider-admin.class.php:239 . +#: ./admin/views/templates/slider-main-options.php:4301 +msgid "Select Image" +msgstr "" + +#: ../admin/revslider-admin.class.php:202 +msgid "Video Not Found!" +msgstr "" + +#: ../admin/revslider-admin.class.php:203 +msgid "Handle has to be at least three character long" +msgstr "" + +#: ../admin/revslider-admin.class.php:204 +msgid "Really change font settings?" +msgstr "" + +#: ../admin/revslider-admin.class.php:205 +msgid "Really delete font?" +msgstr "" + +#: ../admin/revslider-admin.class.php:206 +msgid "Class already exists, overwrite?" +msgstr "" + +#: ../admin/revslider-admin.class.php:207 +msgid "Class must be a valid CSS class name" +msgstr "" + +#: ../admin/revslider-admin.class.php:208 +msgid "Really overwrite Class?" +msgstr "" + +#: ../admin/revslider-admin.class.php:209 +msgid "Really delete Class" +msgstr "" + +#: ../admin/revslider-admin.class.php:210 +msgid "? This can't be undone!" +msgstr "" + +#: ../admin/revslider-admin.class.php:211 +msgid "This class does not exist." +msgstr "" + +#: ../admin/revslider-admin.class.php:212 +msgid "" +"Making changes to these settings will probably overwrite advanced settings. " +"Continue?" +msgstr "" + +#: ../admin/revslider-admin.class.php:213 +msgid "Select Static Layer Image" +msgstr "" + +#: ../admin/revslider-admin.class.php:214 +msgid "Select Layer Image" +msgstr "" + +#: ../admin/revslider-admin.class.php:215 +msgid "Do you really want to delete all the layers?" +msgstr "" + +#: ../admin/revslider-admin.class.php:216 +msgid "Layer Animation Editor" +msgstr "" + +#: ../admin/revslider-admin.class.php:217 +msgid "Animation already exists, overwrite?" +msgstr "" + +#: ../admin/revslider-admin.class.php:218 +msgid "Really overwrite animation?" +msgstr "" + +#: ../admin/revslider-admin.class.php:219 +msgid "Default animations can't be deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:220 +msgid "Must be greater than start time" +msgstr "" + +#: ../admin/revslider-admin.class.php:221 +msgid "Selected layer not set" +msgstr "" + +#: ../admin/revslider-admin.class.php:222 +msgid "Edit Layer Start" +msgstr "" + +#: ../admin/revslider-admin.class.php:223 +msgid "Edit Layer End" +msgstr "" + +#: ../admin/revslider-admin.class.php:224 +msgid "Default Animations can't be renamed" +msgstr "" + +#: ../admin/revslider-admin.class.php:225 +msgid "Animationname already existing" +msgstr "" + +#: ../admin/revslider-admin.class.php:226 +msgid "CSS classname already existing" +msgstr "" + +#: ../admin/revslider-admin.class.php:227 +msgid "Original CSS classname not found" +msgstr "" + +#: ../admin/revslider-admin.class.php:228 +msgid "Enter a correct class name" +msgstr "" + +#: ../admin/revslider-admin.class.php:229 +msgid "Class not found in database" +msgstr "" + +#: ../admin/revslider-admin.class.php:230 +msgid "CSS classname not found" +msgstr "" + +#: ../admin/revslider-admin.class.php:231 +msgid "Delete this caption? This may affect other Slider" +msgstr "" + +#: ../admin/revslider-admin.class.php:232 +msgid "" +"This will update the Class with the current set Style settings, this may " +"affect other Sliders. Proceed?" +msgstr "" + +#: ../admin/revslider-admin.class.php:233 +msgid "Template will have the state of the last save, proceed?" +msgstr "" + +#: ../admin/revslider-admin.class.php:234 +msgid "Please enter a Slide title" +msgstr "" + +#: ../admin/revslider-admin.class.php:235 +msgid "Please Wait a Moment" +msgstr "" + +#: ../admin/revslider-admin.class.php:236 ../admin/views/templates/slide-selector. +#: php:192 ../admin/views/templates/slides-list.php:146 +msgid "Copy / Move" +msgstr "" + +#: ../admin/revslider-admin.class.php:237 +msgid "Preset Loaded" +msgstr "" + +#: ../admin/revslider-admin.class.php:238 ../admin/views/templates/slide-selector. +#: php:218 +msgid "Add Bulk Slides" +msgstr "" + +#: ../admin/revslider-admin.class.php:240 ../admin/views/navigation-editor.php:38 +#: ../admin/views/templates/slider-main-options.php:2310 +msgid "Arrows" +msgstr "" + +#: ../admin/revslider-admin.class.php:241 ../admin/views/navigation-editor.php:39 +#: ../admin/views/templates/slider-main-options.php:2311 +msgid "Bullets" +msgstr "" + +#: ../admin/revslider-admin.class.php:242 ../admin/views/templates/slider-main- +#: options.php:2588 +msgid "Thumbnails" +msgstr "" + +#: ../admin/revslider-admin.class.php:243 ../admin/views/navigation-editor.php:41 +#: ../admin/views/templates/slider-main-options.php:2312 .. +#: /admin/views/templates/slider-main-options.php:2760 +msgid "Tabs" +msgstr "" + +#: ../admin/revslider-admin.class.php:244 +msgid "Delete this Navigation?" +msgstr "" + +#: ../admin/revslider-admin.class.php:245 +msgid "Navigation name could not be updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:246 +msgid "Name too short, at least 3 letters between a-zA-z needed" +msgstr "" + +#: ../admin/revslider-admin.class.php:247 +msgid "Navigation name already exists, please choose a different name" +msgstr "" + +#: ../admin/revslider-admin.class.php:248 +msgid "Remove current element from Navigation?" +msgstr "" + +#: ../admin/revslider-admin.class.php:249 +msgid "This navigation element does not exist, create one?" +msgstr "" + +#: ../admin/revslider-admin.class.php:250 +msgid "Overwrite current animation?" +msgstr "" + +#: ../admin/revslider-admin.class.php:251 +msgid "Default animations can't be changed" +msgstr "" + +#: ../admin/revslider-admin.class.php:252 +msgid "Animation already existing with given handle, please choose a different name." +msgstr "" + +#: ../admin/revslider-admin.class.php:253 +msgid "Really delete animation:" +msgstr "" + +#: ../admin/revslider-admin.class.php:254 +msgid "This will reset the navigation, continue?" +msgstr "" + +#: ../admin/revslider-admin.class.php:255 +msgid "Preset name already exists, please choose a different name" +msgstr "" + +#: ../admin/revslider-admin.class.php:256 +msgid "Really delete this preset?" +msgstr "" + +#: ../admin/revslider-admin.class.php:257 +msgid "Maybe wrong YoutTube ID given" +msgstr "" + +#: ../admin/revslider-admin.class.php:258 +msgid "Preset not found" +msgstr "" + +#: ../admin/revslider-admin.class.php:259 +msgid "Cover Image need to be set for videos" +msgstr "" + +#: ../admin/revslider-admin.class.php:260 +msgid "Really remove this action?" +msgstr "" + +#: ../admin/revslider-admin.class.php:261 +msgid "Layer is triggered by " +msgstr "" + +#: ../admin/revslider-admin.class.php:262 +msgid " due to action: " +msgstr "" + +#: ../admin/revslider-admin.class.php:263 +msgid "layer:" +msgstr "" + +#: ../admin/revslider-admin.class.php:264 +msgid "Start Layer \"in\" animation" +msgstr "" + +#: ../admin/revslider-admin.class.php:265 +msgid "Start Layer \"out\" animation" +msgstr "" + +#: ../admin/revslider-admin.class.php:266 ../admin/views/templates/slide-stage. +#: php:2257 +msgid "Start Video" +msgstr "" + +#: ../admin/revslider-admin.class.php:267 ../admin/views/templates/slide-stage. +#: php:2258 +msgid "Stop Video" +msgstr "" + +#: ../admin/revslider-admin.class.php:268 ../admin/views/templates/slide-stage. +#: php:2256 +msgid "Toggle Layer Animation" +msgstr "" + +#: ../admin/revslider-admin.class.php:269 ../admin/views/templates/slide-stage. +#: php:2259 +msgid "Toggle Video" +msgstr "" + +#: ../admin/revslider-admin.class.php:270 ../admin/views/templates/slider-main- +#: options.php:3661 +msgid "Last Slide" +msgstr "" + +#: ../admin/revslider-admin.class.php:271 ../admin/views/templates/slide-stage. +#: php:2260 +msgid "Simulate Click" +msgstr "" + +#: ../admin/revslider-admin.class.php:272 +msgid "Toogle Class" +msgstr "" + +#: ../admin/revslider-admin.class.php:273 +msgid "Copy hover styles to idle?" +msgstr "" + +#: ../admin/revslider-admin.class.php:274 +msgid "Copy idle styles to hover?" +msgstr "" + +#: ../admin/revslider-admin.class.php:275 +msgid "Please select at least one device type" +msgstr "" + +#: ../admin/revslider-admin.class.php:276 +msgid "Please select an existing Style Template" +msgstr "" + +#: ../admin/revslider-admin.class.php:277 +msgid "Can not remove last transition!" +msgstr "" + +#: ../admin/revslider-admin.class.php:278 +msgid "Given animation name is a default animation. These can not be changed." +msgstr "" + +#: ../admin/revslider-admin.class.php:279 +msgid "Animation exists, override existing animation?" +msgstr "" + +#: ../admin/revslider-admin.class.php:289 +msgid "(never show this message again)  X" +msgstr "" + +#: ../admin/revslider-admin.class.php:289 +msgid "" +"Hi! Would you like to activate your version of Revolution Slider to receive " +"live updates & get premium support? This is optional and not needed if the " +"slider came bundled with a theme. " +msgstr "" + +#: ../admin/revslider-admin.class.php:341 +msgid "Close & don't show againX" +msgstr "" + +#: ../admin/revslider-admin.class.php:413 +msgid "Choose Slide Template" +msgstr "" + +#: ../admin/revslider-admin.class.php:509 +msgid "importing slider settings and data..." +msgstr "" + +#: ../admin/revslider-admin.class.php:525 ../admin/revslider-admin.class.php:546 . +#: ./admin/revslider-admin.class.php:570 +msgid "Go Back" +msgstr "" + +#: ../admin/revslider-admin.class.php:528 ../admin/revslider-admin.class.php:572 +msgid "Slider Import Success, redirecting..." +msgstr "" + +#: ../admin/revslider-admin.class.php:541 +msgid "importing template slider settings and data..." +msgstr "" + +#: ../admin/revslider-admin.class.php:545 +msgid "ID missing, something went wrong. Please try again!" +msgstr "" + +#: ../admin/revslider-admin.class.php:605 ../admin/revslider-admin.class.php:1299 +#: ../admin/revslider-admin.class.php:1305 +msgid "Slider not found" +msgstr "" + +#: ../admin/revslider-admin.class.php:617 +msgid "Slider setting could not be changed" +msgstr "" + +#: ../admin/revslider-admin.class.php:649 ../includes/operations.class.php:3648 +msgid "Missing values to add preset" +msgstr "" + +#: ../admin/revslider-admin.class.php:657 +msgid "Preset created" +msgstr "" + +#: ../admin/revslider-admin.class.php:666 ../includes/operations.class.php:3670 +msgid "Missing values to remove preset" +msgstr "" + +#: ../admin/revslider-admin.class.php:674 +msgid "Preset deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:720 +msgid "Slider created" +msgstr "" + +#: ../admin/revslider-admin.class.php:726 +msgid "Slider updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:735 +msgid "Template can't be deleted, it is still being used by the following Sliders: " +msgstr "" + +#: ../admin/revslider-admin.class.php:738 ../admin/revslider-admin.class.php:740 +msgid "Slider deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:748 ../admin/revslider-admin.class.php:823 +msgid "Success! Refreshing page..." +msgstr "" + +#: ../admin/revslider-admin.class.php:756 +msgid "Slide Created" +msgstr "" + +#: ../admin/revslider-admin.class.php:758 +msgid "Slides Created" +msgstr "" + +#: ../admin/revslider-admin.class.php:768 +msgid "Slide Created, redirecting..." +msgstr "" + +#: ../admin/revslider-admin.class.php:774 +msgid "Missing redirect ID!" +msgstr "" + +#: ../admin/revslider-admin.class.php:781 +msgid "Slide copied to current Slider, redirecting..." +msgstr "" + +#: ../admin/revslider-admin.class.php:787 +msgid "Slide updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:791 +msgid "Static Global Layers updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:797 +msgid "Post deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:799 +msgid "Slide deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:812 ../admin/revslider-admin.class.php:814 +msgid "Slide duplicated" +msgstr "" + +#: ../admin/revslider-admin.class.php:821 +msgid "Success!" +msgstr "" + +#: ../admin/revslider-admin.class.php:829 +msgid "No valid Slide ID given" +msgstr "" + +#: ../admin/revslider-admin.class.php:833 ../admin/revslider-admin.class.php:837 +msgid "No valid title given" +msgstr "" + +#: ../admin/revslider-admin.class.php:844 +msgid "Could not save Slide as Template" +msgstr "" + +#: ../admin/revslider-admin.class.php:860 +msgid "Slide added to Templates" +msgstr "" + +#: ../admin/revslider-admin.class.php:888 ../admin/revslider-admin.class.php:910 . +#: ./admin/revslider-admin.class.php:931 ../admin/revslider-admin.class.php:980 +msgid "CSS saved" +msgstr "" + +#: ../admin/revslider-admin.class.php:891 ../admin/revslider-admin.class.php:913 . +#: ./admin/revslider-admin.class.php:934 +msgid "CSS could not be saved" +msgstr "" + +#: ../admin/revslider-admin.class.php:952 +msgid "Class name renamed" +msgstr "" + +#: ../admin/revslider-admin.class.php:968 +msgid "Style deleted!" +msgstr "" + +#: ../admin/revslider-admin.class.php:984 ../admin/revslider-admin.class.php:988 . +#: ./admin/revslider-admin.class.php:992 +msgid "Animation saved" +msgstr "" + +#: ../admin/revslider-admin.class.php:996 +msgid "Animation deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:1000 +msgid "Order updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1004 +msgid "Title updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1009 +msgid "Slide changed" +msgstr "" + +#: ../admin/revslider-admin.class.php:1033 +msgid "General settings updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1037 +msgid "Sortby updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1041 +msgid "Image urls replaced" +msgstr "" + +#: ../admin/revslider-admin.class.php:1045 +msgid "Settings in all Slides changed" +msgstr "" + +#: ../admin/revslider-admin.class.php:1052 +msgid "The API key, the Purchase Code and the Username need to be set!" +msgstr "" + +#: ../admin/revslider-admin.class.php:1057 +msgid "Purchase Code Successfully Activated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1059 +msgid "Purchase Code is invalid" +msgstr "" + +#: ../admin/revslider-admin.class.php:1066 +msgid "Successfully removed validation" +msgstr "" + +#: ../admin/revslider-admin.class.php:1068 +msgid "Could not remove Validation!" +msgstr "" + +#: ../admin/revslider-admin.class.php:1073 ../admin/revslider-admin.class.php:1080 +msgid "." +msgstr "" + +#: ../admin/revslider-admin.class.php:1086 +msgid "Setting Changed!" +msgstr "" + +#: ../admin/revslider-admin.class.php:1091 +msgid "No ID given" +msgstr "" + +#: ../admin/revslider-admin.class.php:1101 ../admin/revslider-admin.class.php:1119 +msgid "Invalid Email" +msgstr "" + +#: ../admin/revslider-admin.class.php:1104 +msgid "Success! Please check your Emails to finish the subscribtion" +msgstr "" + +#: ../admin/revslider-admin.class.php:1107 ../admin/revslider-admin.class.php:1125 +msgid "Invalid Email/Could not connect to the Newsletter server" +msgstr "" + +#: ../admin/revslider-admin.class.php:1110 ../admin/revslider-admin.class.php:1128 +msgid "No Email given" +msgstr "" + +#: ../admin/revslider-admin.class.php:1122 +msgid "Success! Please check your Emails to finish the process" +msgstr "" + +#: ../admin/revslider-admin.class.php:1148 +msgid "Navigation saved/updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1156 +msgid "Navigations updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1167 +msgid "Navigation deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:1171 +msgid "Wrong ID given" +msgstr "" + +#: ../admin/revslider-admin.class.php:1178 +msgid "Successfully fetched Facebook albums" +msgstr "" + +#: ../admin/revslider-admin.class.php:1181 +msgid "Could not fetch Facebook albums" +msgstr "" + +#: ../admin/revslider-admin.class.php:1186 +msgid "Cleared Albums" +msgstr "" + +#: ../admin/revslider-admin.class.php:1195 +msgid "Successfully fetched flickr photosets" +msgstr "" + +#: ../admin/revslider-admin.class.php:1198 +msgid "Could not fetch flickr photosets" +msgstr "" + +#: ../admin/revslider-admin.class.php:1204 +msgid "Cleared Photosets" +msgstr "" + +#: ../admin/revslider-admin.class.php:1207 +msgid "No User URL - Could not fetch flickr photosets" +msgstr "" + +#: ../admin/revslider-admin.class.php:1211 +msgid "No API KEY - Could not fetch flickr photosets" +msgstr "" + +#: ../admin/revslider-admin.class.php:1220 +msgid "Successfully fetched YouTube playlists" +msgstr "" + +#: ../admin/revslider-admin.class.php:1223 +msgid "Could not fetch YouTube playlists" +msgstr "" + +#: ../admin/revslider-admin.class.php:1309 +msgid "No Data Received" +msgstr "" + +#: ../admin/revslider-admin.class.php:1319 +msgid "Loading Error" +msgstr "" + +#: ../admin/revslider-admin.class.php:1321 +msgid "Loading Error: " +msgstr "" + +#: ../admin/views/master-view.php:55 ../admin/views/system/validation.php:52 +msgid "Please Wait..." +msgstr "" + +#: ../admin/views/navigation-editor.php:33 +msgid "Select the Navigation Category to Edit" +msgstr "" + +#: ../admin/views/navigation-editor.php:33 +msgid "Add New" +msgstr "" + +#: ../admin/views/navigation-editor.php:36 +msgid "#ID" +msgstr "" + +#: ../admin/views/navigation-editor.php:37 +msgid "Skin Name" +msgstr "" + +#: ../admin/views/navigation-editor.php:40 ../admin/views/templates/slider-main- +#: options.php:2313 +msgid "Thumbs" +msgstr "" + +#: ../admin/views/navigation-editor.php:42 ../admin/views/navigation-editor.php: +#: 67 ../admin/views/templates/slide-stage.php:34 +msgid "Actions" +msgstr "" + +#: ../admin/views/navigation-editor.php:58 +msgid "Editing" +msgstr "" + +#: ../admin/views/navigation-editor.php:58 ../admin/views/system/dialog-video.php: +#: 229 +msgid "Remove" +msgstr "" + +#: ../admin/views/navigation-editor.php:61 +msgid "Markup" +msgstr "" + +#: ../admin/views/navigation-editor.php:69 ../admin/views/navigation-editor.php: +#: 70 ../admin/views/navigation-editor.php:71 ../admin/views/navigation-editor. +#: php:72 +msgid "Reset Defaults" +msgstr "" + +#: ../admin/views/navigation-editor.php:73 +msgid "Parameters" +msgstr "" + +#: ../admin/views/navigation-editor.php:75 ../admin/views/templates/slide-general- +#: settings.php:476 +msgid "Slide Title" +msgstr "" + +#: ../admin/views/navigation-editor.php:76 +msgid "Slide Description" +msgstr "" + +#: ../admin/views/navigation-editor.php:80 +msgid "Parameter " +msgstr "" + +#: ../admin/views/navigation-editor.php:94 ../includes/operations.class.php:1418 +msgid "CSS" +msgstr "" + +#: ../admin/views/navigation-editor.php:100 +msgid "Style Helper" +msgstr "" + +#: ../admin/views/navigation-editor.php:102 +msgid "Color Value" +msgstr "" + +#: ../admin/views/navigation-editor.php:106 ../admin/views/navigation-editor.php: +#: 120 ../admin/views/navigation-editor.php:138 ../admin/views/navigation-editor. +#: php:154 ../admin/views/navigation-editor.php:170 ../admin/views/navigation- +#: editor.php:184 ../admin/views/templates/template-selector.php:17 .. +#: /admin/views/templates/template-slider-selector.php:15 +msgid "Add" +msgstr "" + +#: ../admin/views/navigation-editor.php:109 ../admin/views/templates/slide-stage. +#: php:2157 ../admin/views/templates/slider-main-options.php:3105 +msgid "Border Radius" +msgstr "" + +#: ../admin/views/navigation-editor.php:111 +msgid "Top Left" +msgstr "" + +#: ../admin/views/navigation-editor.php:113 +msgid "Top Right" +msgstr "" + +#: ../admin/views/navigation-editor.php:115 +msgid "Bottom Right" +msgstr "" + +#: ../admin/views/navigation-editor.php:117 +msgid "Bottom Left" +msgstr "" + +#: ../admin/views/navigation-editor.php:123 ../admin/views/templates/slide-stage. +#: php:244 ../admin/views/templates/slide-stage.php:512 .. +#: /admin/views/templates/slide-stage.php:2005 ../admin/views/templates/slide- +#: stage.php:2070 ../admin/views/templates/slide-stage.php:2136 +msgid "Border" +msgstr "" + +#: ../admin/views/navigation-editor.php:125 ../admin/views/templates/slider-main- +#: options.php:1965 ../admin/views/templates/slider-main-options.php:2397 .. +#: /admin/views/templates/slider-main-options.php:2427 .. +#: /admin/views/templates/slider-main-options.php:2540 .. +#: /admin/views/templates/slider-main-options.php:2710 .. +#: /admin/views/templates/slider-main-options.php:2878 .. +#: /admin/views/templates/slider-main-options.php:3213 +msgid "Top" +msgstr "" + +#: ../admin/views/navigation-editor.php:127 ../admin/views/templates/slide-stage. +#: php:282 ../admin/views/templates/slider-main-options.php:2175 .. +#: /admin/views/templates/slider-main-options.php:2390 .. +#: /admin/views/templates/slider-main-options.php:2419 .. +#: /admin/views/templates/slider-main-options.php:2534 .. +#: /admin/views/templates/slider-main-options.php:2704 .. +#: /admin/views/templates/slider-main-options.php:2872 .. +#: /admin/views/templates/slider-main-options.php:3207 +msgid "Right" +msgstr "" + +#: ../admin/views/navigation-editor.php:129 ../admin/views/templates/slider-main- +#: options.php:1966 ../admin/views/templates/slider-main-options.php:2399 .. +#: /admin/views/templates/slider-main-options.php:2429 .. +#: /admin/views/templates/slider-main-options.php:2542 .. +#: /admin/views/templates/slider-main-options.php:2712 .. +#: /admin/views/templates/slider-main-options.php:2880 .. +#: /admin/views/templates/slider-main-options.php:3215 +msgid "Bottom" +msgstr "" + +#: ../admin/views/navigation-editor.php:131 ../admin/views/templates/slide-stage. +#: php:280 ../admin/views/templates/slider-main-options.php:2173 .. +#: /admin/views/templates/slider-main-options.php:2388 .. +#: /admin/views/templates/slider-main-options.php:2417 .. +#: /admin/views/templates/slider-main-options.php:2532 .. +#: /admin/views/templates/slider-main-options.php:2702 .. +#: /admin/views/templates/slider-main-options.php:2870 .. +#: /admin/views/templates/slider-main-options.php:3205 +msgid "Left" +msgstr "" + +#: ../admin/views/navigation-editor.php:133 ../admin/views/navigation-editor.php: +#: 149 ../admin/views/navigation-editor.php:165 ../admin/views/templates/slide- +#: stage.php:751 ../admin/views/templates/slide-stage.php:927 +msgid "Opacity" +msgstr "" + +#: ../admin/views/navigation-editor.php:141 +msgid "Text-Shadow" +msgstr "" + +#: ../admin/views/navigation-editor.php:143 ../admin/views/navigation-editor.php: +#: 159 ../admin/views/templates/slide-stage.php:1127 +msgid "Angle" +msgstr "" + +#: ../admin/views/navigation-editor.php:145 ../admin/views/navigation-editor.php: +#: 161 +msgid "Distance" +msgstr "" + +#: ../admin/views/navigation-editor.php:147 ../admin/views/navigation-editor.php: +#: 163 +msgid "Blur" +msgstr "" + +#: ../admin/views/navigation-editor.php:157 +msgid "Box-Shadow" +msgstr "" + +#: ../admin/views/navigation-editor.php:173 ../admin/views/templates/slide-stage. +#: php:153 ../admin/views/templates/slide-stage.php:154 .. +#: /admin/views/templates/slide-stage.php:2030 ../admin/views/templates/slide- +#: stage.php:2031 +msgid "Font Family" +msgstr "" + +#: ../admin/views/navigation-editor.php:190 +msgid "Resets" +msgstr "" + +#: ../admin/views/navigation-editor.php:192 ../admin/views/navigation-editor.php: +#: 194 ../admin/views/navigation-editor.php:196 ../admin/views/navigation-editor. +#: php:198 +msgid "Classes & Style" +msgstr "" + +#: ../admin/views/navigation-editor.php:193 ../admin/views/navigation-editor.php: +#: 195 ../admin/views/navigation-editor.php:197 ../admin/views/navigation-editor. +#: php:199 +msgid "Only Classes" +msgstr "" + +#: ../admin/views/navigation-editor.php:218 +msgid "Live Preview - Hover & Click for test" +msgstr "" + +#: ../admin/views/navigation-editor.php:220 +msgid "Suggested Width:" +msgstr "" + +#: ../admin/views/navigation-editor.php:222 +msgid "Suggested Height:" +msgstr "" + +#: ../admin/views/navigation-editor.php:241 +msgid "Save All Changes" +msgstr "" + +#: ../admin/views/navigation-editor.php:302 +msgid "View" +msgstr "" + +#: ../admin/views/navigation-editor.php:302 +msgid "Edit" +msgstr "" + +#: ../admin/views/navigation-editor.php:1237 +msgid "Custom Navigations" +msgstr "" + +#: ../admin/views/navigation-editor.php:1240 +msgid "Default Navigations" +msgstr "" + +#: ../admin/views/slide-editor.php:311 +msgid "Slider:" +msgstr "" + +#: ../admin/views/slide-editor.php:314 +msgid "Edit Template Slide" +msgstr "" + +#: ../admin/views/slide-editor.php:316 ../admin/views/templates/slides-list.php: +#: 107 ../admin/views/templates/wpml-selector.php:10 +msgid "Edit Slide" +msgstr "" + +#: ../admin/views/slide-editor.php:318 ../admin/views/slider-overview.php:279 +msgid "Title:" +msgstr "" + +#: ../admin/views/slide-editor.php:321 ../admin/views/slider-overview.php:67 .. +#: /admin/views/templates/slider-main-options.php:26 .. +#: /admin/views/templates/slides.php:10 +msgid "Help" +msgstr "" + +#: ../admin/views/slide-editor.php:350 +msgid "" +"Warning!!! The jquery ui javascript include that is loaded by some of " +"the plugins are custom made and not contain needed components like " +"'autocomplete' or 'draggable' function.\n" +" Without those functions the editor may not work correctly. Please remove " +"those custom jquery ui includes in order the editor will work correctly." +msgstr "" + +#: ../admin/views/slide-editor.php:364 +msgid "Insert Meta" +msgstr "" + +#: ../admin/views/slide-editor.php:371 +msgid "Post Replace Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:373 +msgid "Any custom meta tag" +msgstr "" + +#: ../admin/views/slide-editor.php:374 ../admin/views/slide-editor.php:420 +msgid "Post Title" +msgstr "" + +#: ../admin/views/slide-editor.php:375 +msgid "Post Excerpt" +msgstr "" + +#: ../admin/views/slide-editor.php:376 +msgid "Post Alias" +msgstr "" + +#: ../admin/views/slide-editor.php:377 ../admin/views/slide-editor.php:421 +msgid "Post content" +msgstr "" + +#: ../admin/views/slide-editor.php:378 ../admin/views/slide-editor.php:422 .. +#: /admin/views/slide-editor.php:530 +msgid "The link to the post" +msgstr "" + +#: ../admin/views/slide-editor.php:379 ../admin/views/slide-editor.php:423 .. +#: /admin/views/slide-editor.php:444 +msgid "Date created" +msgstr "" + +#: ../admin/views/slide-editor.php:380 +msgid "Date modified" +msgstr "" + +#: ../admin/views/slide-editor.php:381 +msgid "Author name" +msgstr "" + +#: ../admin/views/slide-editor.php:382 +msgid "Number of comments" +msgstr "" + +#: ../admin/views/slide-editor.php:383 +msgid "List of categories with links" +msgstr "" + +#: ../admin/views/slide-editor.php:384 +msgid "List of tags with links" +msgstr "" + +#: ../admin/views/slide-editor.php:388 +msgid "Featured Image URL" +msgstr "" + +#: ../admin/views/slide-editor.php:389 +msgid "Featured Image <img />" +msgstr "" + +#: ../admin/views/slide-editor.php:397 +msgid "Events Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:399 +msgid "Event start date" +msgstr "" + +#: ../admin/views/slide-editor.php:400 +msgid "Event end date" +msgstr "" + +#: ../admin/views/slide-editor.php:401 +msgid "Event start time" +msgstr "" + +#: ../admin/views/slide-editor.php:402 +msgid "Event end time" +msgstr "" + +#: ../admin/views/slide-editor.php:403 +msgid "Event ID" +msgstr "" + +#: ../admin/views/slide-editor.php:404 +msgid "Event location name" +msgstr "" + +#: ../admin/views/slide-editor.php:405 +msgid "Event location slug" +msgstr "" + +#: ../admin/views/slide-editor.php:406 +msgid "Event location address" +msgstr "" + +#: ../admin/views/slide-editor.php:407 +msgid "Event location town" +msgstr "" + +#: ../admin/views/slide-editor.php:408 +msgid "Event location state" +msgstr "" + +#: ../admin/views/slide-editor.php:409 +msgid "Event location postcode" +msgstr "" + +#: ../admin/views/slide-editor.php:410 +msgid "Event location region" +msgstr "" + +#: ../admin/views/slide-editor.php:411 +msgid "Event location country" +msgstr "" + +#: ../admin/views/slide-editor.php:418 +msgid "Flickr Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:424 ../admin/views/slide-editor.php:445 .. +#: /admin/views/slide-editor.php:467 ../admin/views/slide-editor.php:490 .. +#: /admin/views/slide-editor.php:532 +msgid "Username" +msgstr "" + +#: ../admin/views/slide-editor.php:425 +msgid "Views" +msgstr "" + +#: ../admin/views/slide-editor.php:429 ../admin/views/slide-editor.php:451 .. +#: /admin/views/slide-editor.php:473 ../admin/views/slide-editor.php:495 .. +#: /admin/views/slide-editor.php:515 ../admin/views/slide-editor.php:539 +msgid "Image URL" +msgstr "" + +#: ../admin/views/slide-editor.php:430 ../admin/views/slide-editor.php:452 .. +#: /admin/views/slide-editor.php:474 ../admin/views/slide-editor.php:496 .. +#: /admin/views/slide-editor.php:516 ../admin/views/slide-editor.php:540 +msgid "Image <img />" +msgstr "" + +#: ../admin/views/slide-editor.php:439 +msgid "Instagram Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:441 ../admin/views/slide-editor.php:463 .. +#: /admin/views/slide-editor.php:485 ../admin/views/slide-editor.php:507 .. +#: /admin/views/slide-editor.php:527 ../admin/views/templates/slide-stage.php: +#: 1241 ../admin/views/templates/slider-main-options.php:422 ../includes/widget. +#: class.php:61 +msgid "Title" +msgstr "" + +#: ../admin/views/slide-editor.php:442 ../admin/views/slide-editor.php:464 .. +#: /admin/views/slide-editor.php:486 ../admin/views/slide-editor.php:509 .. +#: /admin/views/slide-editor.php:529 +msgid "Content" +msgstr "" + +#: ../admin/views/slide-editor.php:443 ../admin/views/slide-editor.php:465 .. +#: /admin/views/slide-editor.php:487 ../admin/views/slide-editor.php:511 +msgid "Link" +msgstr "" + +#: ../admin/views/slide-editor.php:446 ../admin/views/slide-editor.php:491 .. +#: /admin/views/slide-editor.php:533 +msgid "Number of Likes" +msgstr "" + +#: ../admin/views/slide-editor.php:447 ../admin/views/slide-editor.php:535 +msgid "Number of Comments" +msgstr "" + +#: ../admin/views/slide-editor.php:461 +msgid "Twitter Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:466 ../admin/views/slide-editor.php:488 .. +#: /admin/views/slide-editor.php:510 ../admin/views/slide-editor.php:531 +msgid "Pulbishing Date" +msgstr "" + +#: ../admin/views/slide-editor.php:468 +msgid "Retweet Count" +msgstr "" + +#: ../admin/views/slide-editor.php:469 +msgid "Favorite Count" +msgstr "" + +#: ../admin/views/slide-editor.php:483 +msgid "Facebook Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:489 +msgid "Last Modify Date" +msgstr "" + +#: ../admin/views/slide-editor.php:505 +msgid "YouTube Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:508 ../admin/views/slide-editor.php:528 +msgid "Excerpt" +msgstr "" + +#: ../admin/views/slide-editor.php:525 +msgid "Vimeo Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:534 +msgid "Number of Views" +msgstr "" + +#: ../admin/views/slide-editor.php:551 ../admin/views/templates/slide-stage.php: +#: 250 ../admin/views/templates/slide-stage.php:515 +msgid "Advanced CSS" +msgstr "" + +#: ../admin/views/slide-editor.php:554 +msgid "Style from Options" +msgstr "" + +#: ../admin/views/slide-editor.php:554 +msgid "Editable via Option Fields, Saved in the Class:" +msgstr "" + +#: ../admin/views/slide-editor.php:558 +msgid "Additional Custom Styling" +msgstr "" + +#: ../admin/views/slide-editor.php:558 +msgid "Appended in the Class:" +msgstr "" + +#: ../admin/views/slide-editor.php:563 ../admin/views/slide-editor.php:582 .. +#: /admin/views/templates/slide-stage.php:86 ../admin/views/templates/slide-stage. +#: php:701 ../admin/views/templates/slide-stage.php:876 +msgid "Save As" +msgstr "" + +#: ../admin/views/slide-editor.php:565 ../admin/views/slide-editor.php:584 +msgid "Save As:" +msgstr "" + +#: ../admin/views/slide-editor.php:569 +msgid "Rename CSS" +msgstr "" + +#: ../admin/views/slide-editor.php:571 ../admin/views/slide-editor.php:895 +msgid "Rename to:" +msgstr "" + +#: ../admin/views/slide-editor.php:575 +msgid "Layer Inline CSS" +msgstr "" + +#: ../admin/views/slide-editor.php:577 +msgid "Advanced Custom Styling" +msgstr "" + +#: ../admin/views/slide-editor.php:577 +msgid "Appended Inline to the Layer Markup" +msgstr "" + +#: ../admin/views/slide-editor.php:588 +msgid "Save Under" +msgstr "" + +#: ../admin/views/slide-editor.php:590 +msgid "Save Under:" +msgstr "" + +#: ../admin/views/slide-editor.php:838 ../admin/views/slide-editor.php:877 +msgid "Save Slide" +msgstr "" + +#: ../admin/views/slide-editor.php:842 +msgid "Update Static Layers" +msgstr "" + +#: ../admin/views/slide-editor.php:846 +msgid "updating" +msgstr "" + +#: ../admin/views/slide-editor.php:848 ../admin/views/slide-editor.php:883 .. +#: /admin/views/slide-overview.php:169 +msgid "Slider Settings" +msgstr "" + +#: ../admin/views/slide-editor.php:849 +msgid "Slides Overview" +msgstr "" + +#: ../admin/views/slide-editor.php:854 ../admin/views/templates/wpml-selector.php:9 +msgid "Delete Slide" +msgstr "" + +#: ../admin/views/slide-editor.php:873 +msgid "CSS Global" +msgstr "" + +#: ../admin/views/slide-editor.php:887 ../admin/views/templates/slider-main- +#: options.php:1310 ../admin/views/templates/slider-main-options.php:4292 .. +#: /admin/views/templates/sliders-list.php:169 +msgid "Preview" +msgstr "" + +#: ../admin/views/slide-editor.php:893 +msgid "Rename Animation" +msgstr "" + +#: ../admin/views/slide-editor.php:918 +msgid "Delete this slide?" +msgstr "" + +#: ../admin/views/slide-overview.php:51 +msgid "New Post" +msgstr "" + +#: ../admin/views/slide-overview.php:61 +msgid "Edit Posts" +msgstr "" + +#: ../admin/views/slide-overview.php:65 +msgid "This is a list of posts that are taken from multiple sources." +msgstr "" + +#: ../admin/views/slide-overview.php:67 +msgid "Sort by" +msgstr "" + +#: ../admin/views/slide-overview.php:70 +msgid "Updating Sorting..." +msgstr "" + +#: ../admin/views/slide-overview.php:75 ../admin/views/templates/slides-list.php:5 +msgid "Post List" +msgstr "" + +#: ../admin/views/slide-overview.php:76 ../admin/views/templates/slides-list.php:6 +msgid "Saving Order" +msgstr "" + +#: ../admin/views/slide-overview.php:80 ../admin/views/templates/slides-list.php:12 +msgid "No Posts Found" +msgstr "" + +#: ../admin/views/slide-overview.php:133 +msgid "Unpublish Post" +msgstr "" + +#: ../admin/views/slide-overview.php:135 +msgid "Publish Post" +msgstr "" + +#: ../admin/views/slide-overview.php:140 +msgid "Edit Post" +msgstr "" + +#: ../admin/views/slide-overview.php:144 ../admin/views/slide-overview.php:146 +msgid "" +"Click to change the slide image. Note: The post featured image will be " +"changed." +msgstr "" + +#: ../admin/views/slide-overview.php:146 +msgid "no image" +msgstr "" + +#: ../admin/views/slide-overview.php:150 ../admin/views/templates/slide-selector. +#: php:198 ../admin/views/templates/slide-stage.php:89 .. +#: /admin/views/templates/slide-stage.php:704 ../admin/views/templates/slide- +#: stage.php:879 ../admin/views/templates/sliders-list.php:167 .. +#: /admin/views/templates/slides-list.php:134 +msgid "Delete" +msgstr "" + +#: ../admin/views/slide-overview.php:173 +msgid "" +"Warning! Removing this entry will cause the original wordpress post to be " +"deleted." +msgstr "" + +#: ../admin/views/slider-overview.php:69 +msgid "Global Settings" +msgstr "" + +#: ../admin/views/slider-overview.php:76 +msgid "Revolution Sliders" +msgstr "" + +#: ../admin/views/slider-overview.php:81 +msgid "Sort By:" +msgstr "" + +#: ../admin/views/slider-overview.php:83 +msgid "By ID" +msgstr "" + +#: ../admin/views/slider-overview.php:84 +msgid "By Name" +msgstr "" + +#: ../admin/views/slider-overview.php:85 +msgid "By Type" +msgstr "" + +#: ../admin/views/slider-overview.php:86 +msgid "By Favorit" +msgstr "" + +#: ../admin/views/slider-overview.php:89 +msgid "Filter By:" +msgstr "" + +#: ../admin/views/slider-overview.php:92 ../admin/views/templates/slider-main- +#: options.php:3408 +msgid "All" +msgstr "" + +#: ../admin/views/slider-overview.php:93 ../admin/views/templates/sliders-list. +#: php:33 +msgid "Posts" +msgstr "" + +#: ../admin/views/slider-overview.php:94 ../admin/views/templates/slider-main- +#: options.php:146 ../admin/views/templates/sliders-list.php:21 +msgid "Gallery" +msgstr "" + +#: ../admin/views/slider-overview.php:95 ../admin/views/system/dialog-video.php: +#: 30 ../admin/views/templates/sliders-list.php:74 +msgid "Vimeo" +msgstr "" + +#: ../admin/views/slider-overview.php:96 ../admin/views/system/dialog-video.php: +#: 28 ../admin/views/templates/sliders-list.php:68 +msgid "YouTube" +msgstr "" + +#: ../admin/views/slider-overview.php:97 ../admin/views/templates/sliders-list. +#: php:50 +msgid "Twitter" +msgstr "" + +#: ../admin/views/slider-overview.php:98 ../admin/views/templates/sliders-list. +#: php:44 +msgid "Facebook" +msgstr "" + +#: ../admin/views/slider-overview.php:99 ../admin/views/templates/sliders-list. +#: php:56 +msgid "Instagram" +msgstr "" + +#: ../admin/views/slider-overview.php:100 ../admin/views/templates/sliders-list. +#: php:62 +msgid "Flickr" +msgstr "" + +#: ../admin/views/slider-overview.php:111 +msgid "No Sliders Found" +msgstr "" + +#: ../admin/views/slider-overview.php:126 +msgid "For the" +msgstr "" + +#: ../admin/views/slider-overview.php:126 +msgid "pages or posts editor" +msgstr "" + +#: ../admin/views/slider-overview.php:126 +msgid "insert the shortcode:" +msgstr "" + +#: ../admin/views/slider-overview.php:128 ../admin/views/slider-overview.php:132 +msgid "From the" +msgstr "" + +#: ../admin/views/slider-overview.php:128 +msgid "theme html" +msgstr "" + +#: ../admin/views/slider-overview.php:128 +msgid "use" +msgstr "" + +#: ../admin/views/slider-overview.php:129 +msgid "To add the slider only to homepage use" +msgstr "" + +#: ../admin/views/slider-overview.php:130 +msgid "To add the slider on specific pages or posts use" +msgstr "" + +#: ../admin/views/slider-overview.php:132 +msgid "widgets panel" +msgstr "" + +#: ../admin/views/slider-overview.php:132 +msgid "drag the \"Revolution Slider\" widget to the desired sidebar" +msgstr "" + +#: ../admin/views/slider-overview.php:144 +msgid "Version Information" +msgstr "" + +#: ../admin/views/slider-overview.php:149 +msgid "Installed Version" +msgstr "" + +#: ../admin/views/slider-overview.php:153 +msgid "Latest Stable Version" +msgstr "" + +#: ../admin/views/slider-overview.php:153 +msgid "Update to Stable (Free)" +msgstr "" + +#: ../admin/views/slider-overview.php:157 +msgid "Latest Available Version" +msgstr "" + +#: ../admin/views/slider-overview.php:157 +msgid "Check Version" +msgstr "" + +#: ../admin/views/slider-overview.php:169 +msgid "Need Premium Support and Live Updates ?" +msgstr "" + +#: ../admin/views/slider-overview.php:169 +msgid "Why is this Important ?" +msgstr "" + +#: ../admin/views/slider-overview.php:174 +msgid "Benefits" +msgstr "" + +#: ../admin/views/slider-overview.php:176 +msgid "Get Premium Support" +msgstr "" + +#: ../admin/views/slider-overview.php:176 +msgid "" +" - We help you in case of Bugs, installation problems, and Conflicts with " +"other plugins and Themes" +msgstr "" + +#: ../admin/views/slider-overview.php:177 +msgid "Live Updates" +msgstr "" + +#: ../admin/views/slider-overview.php:177 +msgid "" +" - Get the latest version of our Plugin. New Features and Bug Fixes are " +"available regularly !" +msgstr "" + +#: ../admin/views/slider-overview.php:194 +msgid "Information" +msgstr "" + +#: ../admin/views/slider-overview.php:199 +msgid "" +"Please note that this plugin came bundled with a theme. The use of the " +"Revolution Slider is limited to this theme only.
        If you need support from " +"the Slider author ThemePunch or you want to use the Revolution slider with " +"an other theme you will need an extra single license available at CodeCanyon." +msgstr "" + +#: ../admin/views/slider-overview.php:210 +msgid "Newsletter" +msgstr "" + +#: ../admin/views/slider-overview.php:210 +msgid "Why subscribe?" +msgstr "" + +#: ../admin/views/slider-overview.php:216 +msgid "Unsubscribe our newsletter" +msgstr "" + +#: ../admin/views/slider-overview.php:216 +msgid "Subscribe to our newsletter" +msgstr "" + +#: ../admin/views/slider-overview.php:216 +msgid "Enter your E-Mail here" +msgstr "" + +#: ../admin/views/slider-overview.php:217 +msgid "Subscribe" +msgstr "" + +#: ../admin/views/slider-overview.php:219 +msgid "Unsubscribe" +msgstr "" + +#: ../admin/views/slider-overview.php:220 +msgid "Cancel" +msgstr "" + +#: ../admin/views/slider-overview.php:223 +msgid "unsubscibe from newsletter" +msgstr "" + +#: ../admin/views/slider-overview.php:225 +msgid "Perks of subscribing to our Newsletter" +msgstr "" + +#: ../admin/views/slider-overview.php:227 +msgid "Receive info on the latest ThemePunch product updates" +msgstr "" + +#: ../admin/views/slider-overview.php:228 +msgid "Be the first to know about new products by ThemePunch and their partners" +msgstr "" + +#: ../admin/views/slider-overview.php:229 +msgid "" +"Participate in polls and customer surveys that help us increase the quality " +"of our products and services" +msgstr "" + +#: ../admin/views/slider-overview.php:238 +msgid "Update History" +msgstr "" + +#: ../admin/views/slider-overview.php:248 ../admin/views/slider-overview.php:272 . +#: ./admin/views/templates/sliders-list.php:190 +msgid "Import Slider" +msgstr "" + +#: ../admin/views/slider-overview.php:254 +msgid "Choose the import file" +msgstr "" + +#: ../admin/views/slider-overview.php:258 ../admin/views/templates/template- +#: selector.php:242 ../admin/views/templates/template-slider-selector.php:171 +msgid "Note: custom styles will be updated if they exist!" +msgstr "" + +#: ../admin/views/slider-overview.php:261 ../admin/views/templates/template- +#: selector.php:245 ../admin/views/templates/template-slider-selector.php:174 +msgid "Custom Animations:" +msgstr "" + +#: ../admin/views/slider-overview.php:262 ../admin/views/slider-overview.php:267 . +#: ./admin/views/templates/slider-main-options.php:3564 .. +#: /admin/views/templates/slider-main-options.php:3569 .. +#: /admin/views/templates/template-selector.php:246 .. +#: /admin/views/templates/template-selector.php:251 .. +#: /admin/views/templates/template-slider-selector.php:175 .. +#: /admin/views/templates/template-slider-selector.php:180 +msgid "overwrite" +msgstr "" + +#: ../admin/views/slider-overview.php:263 ../admin/views/slider-overview.php:268 . +#: ./admin/views/templates/slider-main-options.php:3565 .. +#: /admin/views/templates/slider-main-options.php:3570 .. +#: /admin/views/templates/template-selector.php:247 .. +#: /admin/views/templates/template-selector.php:252 .. +#: /admin/views/templates/template-slider-selector.php:176 .. +#: /admin/views/templates/template-slider-selector.php:181 +msgid "append" +msgstr "" + +#: ../admin/views/slider-overview.php:266 ../admin/views/templates/slide-stage. +#: php:62 ../admin/views/templates/template-selector.php:250 .. +#: /admin/views/templates/template-slider-selector.php:179 +msgid "Static Styles:" +msgstr "" + +#: ../admin/views/slider-overview.php:277 ../admin/views/templates/slide-selector. +#: php:196 ../admin/views/templates/sliders-list.php:168 .. +#: /admin/views/templates/slides-list.php:136 +msgid "Duplicate" +msgstr "" + +#: ../admin/views/system/dialog-copy-move.php:3 +msgid "Do It!" +msgstr "" + +#: ../admin/views/system/dialog-copy-move.php:3 +msgid "Copy / move slide" +msgstr "" + +#: ../admin/views/system/dialog-copy-move.php:7 ../includes/widget.class.php:66 +msgid "Choose Slider" +msgstr "" + +#: ../admin/views/system/dialog-copy-move.php:12 +msgid "Choose Operation" +msgstr "" + +#: ../admin/views/system/dialog-copy-move.php:15 +msgid "Copy" +msgstr "" + +#: ../admin/views/system/dialog-copy-move.php:18 +msgid "Move" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:25 .. +#: /admin/views/templates/slider-main-options.php:1582 +msgid "General Settings" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:36 +msgid "View Plugin Permission:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:40 +msgid "To Admin" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:41 +msgid "To Editor, Admin" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:42 +msgid "Author, Editor, Admin" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:46 +msgid "The role of user that can view and edit the plugin" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:52 +msgid "Include RevSlider libraries globally:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:58 .. +#: /admin/views/system/dialog-global-settings.php:92 ../admin/views/system/dialog- +#: global-settings.php:113 ../admin/views/system/dialog-global-settings.php:134 .. +#: /admin/views/system/dialog-global-settings.php:187 .. +#: /admin/views/system/dialog-global-settings.php:209 .. +#: /admin/views/templates/slider-main-options.php:3506 +msgid "On" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:63 .. +#: /admin/views/system/dialog-global-settings.php:97 ../admin/views/system/dialog- +#: global-settings.php:118 ../admin/views/system/dialog-global-settings.php:139 .. +#: /admin/views/system/dialog-global-settings.php:192 .. +#: /admin/views/system/dialog-global-settings.php:214 .. +#: /admin/views/templates/slider-main-options.php:2210 .. +#: /admin/views/templates/slider-main-options.php:3487 .. +#: /admin/views/templates/slider-main-options.php:3508 +msgid "Off" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:68 +msgid "" +"ON - Add CSS and JS Files to all pages.
        Off - CSS and JS Files will be " +"only loaded on Pages where any rev_slider shortcode exists." +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:74 +msgid "Pages to include RevSlider libraries:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:79 +msgid "" +"Specify the page id's that the front end includes will be included in. " +"Example: 2,3,5 also: homepage,3,4" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:86 +msgid "Insert JavaScript Into Footer:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:101 +msgid "" +"Putting the js to footer (instead of the head) is good for fixing some " +"javascript conflicts." +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:107 +msgid "Defer JavaScript Loading:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:122 +msgid "Defer the loading of the JavaScript libraries to maximize page loading speed." +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:128 +msgid "Enable Markup Export option:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:143 +msgid "" +"This will enable the option to export the Slider Markups to copy/paste it " +"directly into websites." +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:149 +msgid "Font Loading URL:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:154 +msgid "" +"Insert something in it and it will be used instead of http://fonts." +"googleapis.com/css?family= (For example: http://fonts.useso.com/css?family= " +"which will also work for chinese visitors)" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:161 +msgid "Default Settings for Advanced Responsive Grid Sizes:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:164 +msgid "Desktop Grid Width" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:166 +msgid "Notebook Grid Width" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:168 +msgid "Tablet Grid Width" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:170 +msgid "Mobile Grid Width" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:174 +msgid "Define the default Grid Sizes for devices: Desktop, Tablet and Mobile" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:181 +msgid "Enable Notifications:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:196 +msgid "Enable/Disable ThemePunch Notifications in the Admin Notice bar." +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:203 +msgid "Enable Logs:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:218 +msgid "Enable console logs for debugging." +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:228 +msgid "Update" +msgstr "" + +#: ../admin/views/system/dialog-video.php:4 +msgid "Add Video Layout" +msgstr "" + +#: ../admin/views/system/dialog-video.php:12 ../admin/views/templates/slide- +#: general-settings.php:33 ../admin/views/templates/slider-main-options.php:142 .. +#: /admin/views/templates/slider-main-options.php:193 .. +#: /admin/views/templates/slider-main-options.php:277 .. +#: /admin/views/templates/slider-main-options.php:300 +msgid "Source" +msgstr "" + +#: ../admin/views/system/dialog-video.php:13 ../admin/views/templates/slider-main- +#: options.php:2053 +msgid "Sizing" +msgstr "" + +#: ../admin/views/system/dialog-video.php:14 +msgid "Settings" +msgstr "" + +#: ../admin/views/system/dialog-video.php:15 ../admin/views/templates/slide-stage. +#: php:32 ../admin/views/templates/slider-main-options.php:2342 .. +#: /admin/views/templates/slider-main-options.php:2487 .. +#: /admin/views/templates/slider-main-options.php:2643 .. +#: /admin/views/templates/slider-main-options.php:2812 +msgid "Visibility" +msgstr "" + +#: ../admin/views/system/dialog-video.php:16 +msgid "Arguments" +msgstr "" + +#: ../admin/views/system/dialog-video.php:26 +msgid "Choose video type" +msgstr "" + +#: ../admin/views/system/dialog-video.php:32 +msgid "HTML5" +msgstr "" + +#: ../admin/views/system/dialog-video.php:36 ../admin/views/system/dialog-video. +#: php:40 ../admin/views/system/dialog-video.php:44 +msgid "From Stream" +msgstr "" + +#: ../admin/views/system/dialog-video.php:51 +msgid "Vimeo ID or URL" +msgstr "" + +#: ../admin/views/system/dialog-video.php:54 ../admin/views/templates/slide- +#: general-settings.php:148 +msgid "example: 30300114" +msgstr "" + +#: ../admin/views/system/dialog-video.php:60 +msgid "YouTube ID or URL" +msgstr "" + +#: ../admin/views/system/dialog-video.php:63 ../admin/views/system/dialog-video. +#: php:74 ../admin/views/system/dialog-video.php:82 ../admin/views/system/dialog- +#: video.php:89 ../admin/views/system/dialog-video.php:96 +msgid "example" +msgstr "" + +#: ../admin/views/system/dialog-video.php:69 +msgid "Poster Image Url" +msgstr "" + +#: ../admin/views/system/dialog-video.php:72 +msgid "Set Image" +msgstr "" + +#: ../admin/views/system/dialog-video.php:77 +msgid "Video MP4 Url" +msgstr "" + +#: ../admin/views/system/dialog-video.php:80 ../admin/views/system/dialog-video. +#: php:87 ../admin/views/system/dialog-video.php:94 +msgid "Set Video" +msgstr "" + +#: ../admin/views/system/dialog-video.php:84 +msgid "Video WEBM Url" +msgstr "" + +#: ../admin/views/system/dialog-video.php:91 +msgid "Video OGV Url" +msgstr "" + +#: ../admin/views/system/dialog-video.php:106 +msgid "Full Screen:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:113 ../admin/views/templates/slide- +#: general-settings.php:226 +msgid "Force Cover:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:119 ../admin/views/templates/slide- +#: general-settings.php:231 +msgid "Dotted Overlay:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:122 ../admin/views/templates/slide- +#: general-settings.php:234 ../admin/views/templates/slider-main-options.php:2107 +msgid "none" +msgstr "" + +#: ../admin/views/system/dialog-video.php:123 ../admin/views/templates/slide- +#: general-settings.php:235 ../admin/views/templates/slider-main-options.php:2108 +msgid "2 x 2 Black" +msgstr "" + +#: ../admin/views/system/dialog-video.php:124 ../admin/views/templates/slide- +#: general-settings.php:236 ../admin/views/templates/slider-main-options.php:2109 +msgid "2 x 2 White" +msgstr "" + +#: ../admin/views/system/dialog-video.php:125 ../admin/views/templates/slide- +#: general-settings.php:237 ../admin/views/templates/slider-main-options.php:2110 +msgid "3 x 3 Black" +msgstr "" + +#: ../admin/views/system/dialog-video.php:126 ../admin/views/templates/slide- +#: general-settings.php:238 ../admin/views/templates/slider-main-options.php:2111 +msgid "3 x 3 White" +msgstr "" + +#: ../admin/views/system/dialog-video.php:130 ../admin/views/templates/slide- +#: general-settings.php:242 +msgid "Aspect Ratio:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:133 ../admin/views/templates/slide- +#: general-settings.php:245 +msgid "16:9" +msgstr "" + +#: ../admin/views/system/dialog-video.php:134 ../admin/views/templates/slide- +#: general-settings.php:246 +msgid "4:3" +msgstr "" + +#: ../admin/views/system/dialog-video.php:142 ../admin/views/templates/slide- +#: general-settings.php:265 +msgid "Loop Video:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:145 ../admin/views/system/dialog-video. +#: php:217 ../admin/views/templates/slide-general-settings.php:267 .. +#: /admin/views/templates/slide-general-settings.php:900 +msgid "Disable" +msgstr "" + +#: ../admin/views/system/dialog-video.php:146 ../admin/views/templates/slide- +#: general-settings.php:268 +msgid "Loop, Slide is paused" +msgstr "" + +#: ../admin/views/system/dialog-video.php:147 ../admin/views/templates/slide- +#: general-settings.php:269 +msgid "Loop, Slide does not stop" +msgstr "" + +#: ../admin/views/system/dialog-video.php:152 +msgid "Autoplay:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:155 +msgid "Only 1st Time:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:161 +msgid "Stop Other Videos:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:166 ../admin/views/templates/slide- +#: general-settings.php:274 +msgid "Next Slide On End:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:171 ../admin/views/templates/slide- +#: general-settings.php:278 +msgid "Rewind at Slide Start:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:176 +msgid "Hide Controls:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:181 +msgid "Mute:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:186 +msgid "Start at:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:187 +msgid "i.e.: 0:17" +msgstr "" + +#: ../admin/views/system/dialog-video.php:191 +msgid "End at:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:192 +msgid "i.e.: 2:41" +msgstr "" + +#: ../admin/views/system/dialog-video.php:196 +msgid "Show Cover at Pause:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:201 ../admin/views/templates/slide- +#: general-settings.php:289 +msgid "Video Speed:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:203 ../admin/views/templates/slide- +#: general-settings.php:291 +msgid "0.25" +msgstr "" + +#: ../admin/views/system/dialog-video.php:204 ../admin/views/templates/slide- +#: general-settings.php:292 +msgid "0.50" +msgstr "" + +#: ../admin/views/system/dialog-video.php:205 ../admin/views/templates/slide- +#: general-settings.php:293 ../admin/views/templates/slider-main-options.php:2212 +#: ../admin/views/templates/slider-main-options.php:3125 +msgid "1" +msgstr "" + +#: ../admin/views/system/dialog-video.php:206 ../admin/views/templates/slide- +#: general-settings.php:294 +msgid "1.5" +msgstr "" + +#: ../admin/views/system/dialog-video.php:207 ../admin/views/templates/slide- +#: general-settings.php:295 ../admin/views/templates/slider-main-options.php:2213 +msgid "2" +msgstr "" + +#: ../admin/views/system/dialog-video.php:213 +msgid "Video Preload:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:216 ../admin/views/templates/slider- +#: main-options.php:816 +msgid "Auto" +msgstr "" + +#: ../admin/views/system/dialog-video.php:218 +msgid "Metadata" +msgstr "" + +#: ../admin/views/system/dialog-video.php:225 +msgid "Preview Image" +msgstr "" + +#: ../admin/views/system/dialog-video.php:227 +msgid "Image Library" +msgstr "" + +#: ../admin/views/system/dialog-video.php:228 +msgid "Video Thumbnail" +msgstr "" + +#: ../admin/views/system/dialog-video.php:234 +msgid "Disable Mobile:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:239 +msgid "Only Preview on Mobile:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:247 ../admin/views/templates/slide- +#: general-settings.php:299 ../admin/views/templates/slide-general-settings.php:304 +msgid "Arguments:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:253 ../admin/views/system/dialog-video. +#: php:253 +msgid "Add This Video" +msgstr "" + +#: ../admin/views/system/dialog-video.php:253 +msgid "Update Video" +msgstr "" + +#: ../admin/views/system/validation.php:31 +msgid "Username:" +msgstr "" + +#: ../admin/views/system/validation.php:34 +msgid "Your Envato username." +msgstr "" + +#: ../admin/views/system/validation.php:38 +msgid "Envato API Key:" +msgstr "" + +#: ../admin/views/system/validation.php:41 +msgid "" +"You can find the API key by visiting your Envato Account page, then clicking " +"the My Settings tab. At the bottom of the page you will find your accounts " +"API key." +msgstr "" + +#: ../admin/views/system/validation.php:45 +msgid "Purchase code:" +msgstr "" + +#: ../admin/views/system/validation.php:48 +msgid "Please enter your " +msgstr "" + +#: ../admin/views/system/validation.php:48 +msgid "CodeCanyon Slider Revolution purchase code / license key" +msgstr "" + +#: ../admin/views/system/validation.php:48 +msgid ". You can find your key by following the instructions on" +msgstr "" + +#: ../admin/views/system/validation.php:48 +msgid " this page." +msgstr "" + +#: ../admin/views/system/validation.php:54 +msgid "Register" +msgstr "" + +#: ../admin/views/system/validation.php:56 +msgid "Deregister" +msgstr "" + +#: ../admin/views/system/validation.php:61 +msgid "Search for Updates" +msgstr "" + +#: ../admin/views/system/validation.php:68 +msgid "" +"To register the plugin on a different website, click the “Deregister” button " +"here first." +msgstr "" + +#: ../admin/views/system/validation.php:79 +msgid "How to get Support ?" +msgstr "" + +#: ../admin/views/system/validation.php:81 +msgid "Please feel free to contact us via our " +msgstr "" + +#: ../admin/views/system/validation.php:81 +msgid "Support Forum " +msgstr "" + +#: ../admin/views/system/validation.php:81 +msgid "and/or via the " +msgstr "" + +#: ../admin/views/system/validation.php:81 +msgid "Item Disscussion Forum" +msgstr "" + +#: ../admin/views/system/validation.php:87 +msgid "Click Here to get " +msgstr "" + +#: ../admin/views/system/validation.php:87 +msgid "Premium Support and Auto Updates" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:6 +msgid "Main Background" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:7 +msgid "Gerneral Settings" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:8 +msgid "Slide Animation" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:9 +msgid "Link & Seo" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:10 +msgid "Slide Info" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:34 +msgid "Source Settings" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:35 .. +#: /admin/views/templates/slide-stage.php:248 ../admin/views/templates/slider- +#: main-options.php:3285 +msgid "Parallax" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:36 +msgid "Ken Burns" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:64 +msgid "Featured Image" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:69 +msgid "Stream Image" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:75 +msgid "Stream Video" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:78 +msgid "Use Cover" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:85 +msgid "Main / Background Image" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:89 +msgid "Change Image" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:97 +msgid "External URL" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:103 +msgid "Get External" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:109 +msgid "Transparent" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:114 +msgid "Solid Colored" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:124 +msgid "YouTube Video" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:130 .. +#: /admin/views/templates/slide-general-settings.php:146 .. +#: /admin/views/templates/slide-general-settings.php:881 +msgid "ID:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:132 +msgid "example: T8--OggjJKQ" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:134 .. +#: /admin/views/templates/slide-general-settings.php:150 .. +#: /admin/views/templates/slide-general-settings.php:180 +msgid "Cover Image:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:140 +msgid "Vimeo Video" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:156 +msgid "HTML5 Video" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:162 +msgid "MPEG:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:165 .. +#: /admin/views/templates/slide-general-settings.php:171 .. +#: /admin/views/templates/slide-general-settings.php:177 +msgid "Change Video" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:168 +msgid "WEBM:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:174 +msgid "OGV:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:188 +msgid "Image Source Size:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:205 +msgid "Alt:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:207 .. +#: /admin/views/templates/slide-stage.php:1259 +msgid "From Media Library" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:208 .. +#: /admin/views/templates/slide-stage.php:1260 +msgid "From Filename" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:209 .. +#: /admin/views/templates/slide-stage.php:1261 ../admin/views/templates/slide- +#: stage.php:1729 +msgid "Custom" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:215 +msgid "Width:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:219 +msgid "Height:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:252 +msgid "Start At:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:254 +msgid "For Example: 00:17" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:259 +msgid "End At:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:261 +msgid "For Example: 02:17" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:283 +msgid "Mute Video:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:311 +msgid "Background Fit:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:322 +msgid "Background Position:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:343 +msgid "Background Repeat:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:359 +msgid "Parallax Level:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:361 .. +#: /admin/views/templates/slide-stage.php:462 +msgid "No Parallax" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:377 .. +#: /admin/views/templates/slide-stage.php:479 +msgid "Parallax Feature in Slider Settings is deactivated, parallax will be ignored." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:385 .. +#: /admin/views/templates/slider-main-options.php:1727 +msgid "Ken Burns / Pan Zoom:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:390 +msgid "Scale: (in %):" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:391 .. +#: /admin/views/templates/slide-general-settings.php:399 .. +#: /admin/views/templates/slide-general-settings.php:407 .. +#: /admin/views/templates/slide-general-settings.php:415 +msgid "From" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:393 .. +#: /admin/views/templates/slide-general-settings.php:401 .. +#: /admin/views/templates/slide-general-settings.php:409 .. +#: /admin/views/templates/slide-general-settings.php:417 +msgid "To" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:398 +msgid "Horizontal Offsets:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:406 +msgid "Vertical Offsets:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:414 +msgid "Rotation:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:422 .. +#: /admin/views/templates/slider-main-options.php:1743 +msgid "Easing:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:462 .. +#: /admin/views/templates/slider-main-options.php:1850 +msgid "Duration (in ms):" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:478 +msgid "The title of the slide, will be shown in the slides list." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:484 +msgid "Slide \"Delay\":" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:486 +msgid "" +"A new delay value for the Slide. If no delay defined per slide, the delay " +"defined via Options (9000ms) will be used." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:492 +msgid "Slide State" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:494 +msgid "Published" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:495 +msgid "Unpublished" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:497 +msgid "" +"The state of the slide. The unpublished slide will be excluded from the " +"slider." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:510 +msgid "Language" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:521 +msgid "The language of the slide (uses WPML plugin)." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:530 +msgid "Visible from:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:532 +msgid "If set, slide will be visible after the date is reached." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:538 +msgid "Visible until:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:540 +msgid "If set, slide will be visible till the date is reached." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:547 +msgid "Thumbnail:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:565 +msgid "Slide Thumbnail. If not set - it will be taken from the slide image." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:572 +msgid "Save Performance:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:576 +msgid "Slide End Transition will first start when last Layer has been removed." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:716 +msgid "Used Transitions (Order in Loops)" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:723 +msgid "Slot / Box Amount:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:726 +msgid "# of slots/boxes the slide is divided into." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:731 +msgid "Slot Rotation:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:734 +msgid "Start Rotation of Transition (deg)." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:739 +msgid "Animation Duration:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:742 +msgid "The duration of the transition." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:747 +msgid "Easing In:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:787 +msgid "The easing of Appearing transition." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:792 +msgid "Easing Out:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:832 +msgid "The easing of Disappearing transition." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:850 +msgid "Parameter" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:851 +msgid "Max. Chars" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:861 +msgid "Description of Slider:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:864 +msgid "" +"Define a description here to show at the navigation if enabled in Slider " +"Settings" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:873 +msgid "Class:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:875 +msgid "" +"Adds a unique class to the li of the Slide like class=\"rev_special_class\" " +"(add only the classnames, seperated by space)" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:883 +msgid "" +"Adds a unique ID to the li of the Slide like id=\"rev_special_id\" (add only " +"the id)" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:889 +msgid "Custom Fields:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:891 +msgid "" +"Add as many attributes as you wish here. (i.e.: data-layer=\"firstlayer\" data-" +"custom=\"somevalue\")." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:897 +msgid "Enable Link:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:899 +msgid "Enable" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:902 +msgid "Link the Full Slide to an URL or Action." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:909 +msgid "Link Type:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:911 +msgid "Regular" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:912 +msgid "To Slide" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:914 +msgid "Regular - Link to URL, To Slide - Call a Slide Action" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:921 +msgid "Slide Link:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:923 +msgid "" +"A link on the whole slide pic (use {{link}} or {{meta:somemegatag}} in " +"template sliders to link to a post or some other meta)" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:929 +msgid "Link Target:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:931 .. +#: /admin/views/templates/slide-stage.php:2273 +msgid "Same Window" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:932 .. +#: /admin/views/templates/slide-stage.php:2274 +msgid "New Window" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:934 +msgid "The target of the slide link." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:942 +msgid "-- Not Chosen --" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:943 +msgid "-- Next Slide --" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:944 +msgid "-- Previous Slide --" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:947 +msgid "-- Scroll Below Slider --" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:959 +msgid "Link To Slide:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:970 +msgid "Call Slide Action" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:975 +msgid "Link Sensibility:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:977 +msgid "Front" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:978 +msgid "Back" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:980 +msgid "The z-index position of the link related to layers" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:31 +msgid "Static / Global Layers" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:47 +msgid "Show Layers from Slide:" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:197 +msgid "Add to Templates" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:212 ../admin/views/templates/slide- +#: selector.php:224 +msgid "Add Slide" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:217 +msgid "Add Blank Slide" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:220 +msgid "Add from Template" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:280 +msgid "Slide name should not be empty" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:12 +msgid "Style" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:13 +msgid "Advanced Style on/off" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:19 ../admin/views/templates/slide- +#: stage.php:1766 +msgid "Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:20 +msgid "Play/Pause Single Layer Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:26 ../admin/views/templates/slide- +#: stage.php:1031 +msgid "Loop Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:27 +msgid "Play/Pause Layer Loop Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:33 +msgid "Behavior" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:36 +msgid "Attributes" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:38 +msgid "Static Layers" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:40 +msgid "Performance" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:56 +msgid "Global Style Editor" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:58 +msgid "Dynamic Styles (Not Editable):" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:68 +msgid "Save Static Styles" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:69 +msgid "Overwrite current static styles?" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:76 +msgid "Caption Style" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:77 +msgid "Style Template" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:79 +msgid "More Style Settings" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:80 +msgid "Reset Style Template" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:84 +msgid "Style Options" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:85 ../admin/views/templates/slide- +#: stage.php:700 ../admin/views/templates/slide-stage.php:875 +msgid "Save" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:87 ../admin/views/templates/slide- +#: stage.php:702 ../admin/views/templates/slide-stage.php:877 +msgid "Rename" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:88 ../admin/views/templates/slide- +#: stage.php:703 ../admin/views/templates/slide-stage.php:878 +msgid "Reset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:99 +msgid "Font Size (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:100 ../admin/views/templates/slide- +#: stage.php:2220 +msgid "Font Size" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:105 +msgid "Line Height (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:106 ../admin/views/templates/slide- +#: stage.php:2221 +msgid "Line Height" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:112 +msgid "White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:126 +msgid "Layer Align Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:127 +msgid "Layer Align Center" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:128 +msgid "Layer Align Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:135 ../admin/views/templates/slide- +#: stage.php:136 +msgid "Horizontal Offset from Aligned Position (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:140 ../admin/views/templates/slide- +#: stage.php:141 +msgid "Vertical Offset from Aligned Position (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:164 ../admin/views/templates/slide- +#: stage.php:165 ../admin/views/templates/slide-stage.php:2222 +msgid "Font Weight" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:179 ../admin/views/templates/slide- +#: stage.php:180 ../admin/views/templates/slide-stage.php:522 .. +#: /admin/views/templates/slide-stage.php:523 ../admin/views/templates/slider- +#: main-options.php:1984 ../admin/views/templates/slider-main-options.php:2117 .. +#: /admin/views/templates/slider-main-options.php:2221 +msgid "Font Color" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:186 +msgid "Layer Align Top" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:187 +msgid "Layer Align Middle" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:188 +msgid "Layer Align Bottom" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:194 ../admin/views/templates/slide- +#: stage.php:195 ../admin/views/templates/slide-stage.php:196 +msgid "Layer Width (px). Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:197 +msgid "Video Width (px). Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:200 ../admin/views/templates/slide- +#: stage.php:201 +msgid "Layer Height (px). Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:202 +msgid "Layer Height (px) Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:203 +msgid "Video Height (px). Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:206 +msgid "Cover Mode" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:217 +msgid "Auto Linebreak (on/off - White Space:normal / nowrap). " +msgstr "" + +#: ../admin/views/templates/slide-stage.php:222 +msgid "Keep Aspect Ratio (on/off)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:227 +msgid "Reset original size" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:242 ../admin/views/templates/slide- +#: stage.php:510 ../admin/views/templates/slider-main-options.php:4321 +msgid "Font" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:243 ../admin/views/templates/slide- +#: stage.php:511 ../admin/views/templates/slide-stage.php:1975 .. +#: /admin/views/templates/slide-stage.php:2041 ../admin/views/templates/slide- +#: stage.php:2123 +msgid "Background" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:245 ../admin/views/templates/slide- +#: stage.php:513 +msgid "Transform" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:246 ../admin/views/templates/slide- +#: stage.php:514 ../admin/views/templates/slide-stage.php:752 .. +#: /admin/views/templates/slide-stage.php:928 ../admin/views/templates/slider- +#: main-options.php:3161 +msgid "Rotation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:247 ../admin/views/templates/slide- +#: stage.php:757 ../admin/views/templates/slide-stage.php:933 +msgid "Perspective" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:249 +msgid "Corners" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:251 ../admin/views/templates/slide- +#: stage.php:641 +msgid "Hover" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:257 ../admin/views/templates/slide- +#: stage.php:258 +msgid "Font Opacity" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:262 +msgid "Italic Font" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:263 +msgid "Italic Font On/Off" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:267 ../admin/views/templates/slide- +#: stage.php:268 ../admin/views/templates/slide-stage.php:531 .. +#: /admin/views/templates/slide-stage.php:532 +msgid "Font Decoration" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:278 ../admin/views/templates/slide- +#: stage.php:279 +msgid "Text Align" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:281 ../admin/views/templates/slider- +#: main-options.php:2174 ../admin/views/templates/slider-main-options.php:2389 .. +#: /admin/views/templates/slider-main-options.php:2398 .. +#: /admin/views/templates/slider-main-options.php:2418 .. +#: /admin/views/templates/slider-main-options.php:2428 .. +#: /admin/views/templates/slider-main-options.php:2533 .. +#: /admin/views/templates/slider-main-options.php:2541 .. +#: /admin/views/templates/slider-main-options.php:2703 .. +#: /admin/views/templates/slider-main-options.php:2711 .. +#: /admin/views/templates/slider-main-options.php:2871 .. +#: /admin/views/templates/slider-main-options.php:2879 .. +#: /admin/views/templates/slider-main-options.php:3206 .. +#: /admin/views/templates/slider-main-options.php:3214 +msgid "Center" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:290 ../admin/views/templates/slide- +#: stage.php:291 ../admin/views/templates/slide-stage.php:542 .. +#: /admin/views/templates/slide-stage.php:543 +msgid "Background Color" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:295 ../admin/views/templates/slide- +#: stage.php:296 ../admin/views/templates/slide-stage.php:547 .. +#: /admin/views/templates/slide-stage.php:548 +msgid "Background Opacity" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:300 ../admin/views/templates/slide- +#: stage.php:2190 ../admin/views/templates/slide-stage.php:2192 +msgid "Padding" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:301 ../admin/views/templates/slide- +#: stage.php:2193 ../admin/views/templates/slider-main-options.php:3116 +msgid "Padding Top" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:302 ../admin/views/templates/slide- +#: stage.php:2194 +msgid "Padding Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:303 ../admin/views/templates/slide- +#: stage.php:2195 ../admin/views/templates/slider-main-options.php:3119 +msgid "Padding Bottom" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:304 ../admin/views/templates/slide- +#: stage.php:2196 +msgid "Padding Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:310 ../admin/views/templates/slide- +#: stage.php:311 ../admin/views/templates/slide-stage.php:553 .. +#: /admin/views/templates/slide-stage.php:554 ../admin/views/templates/slide- +#: stage.php:2008 ../admin/views/templates/slide-stage.php:2073 .. +#: /admin/views/templates/slide-stage.php:2140 +msgid "Border Color" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:315 ../admin/views/templates/slide- +#: stage.php:316 ../admin/views/templates/slide-stage.php:557 .. +#: /admin/views/templates/slide-stage.php:558 ../admin/views/templates/slide- +#: stage.php:2012 ../admin/views/templates/slide-stage.php:2013 .. +#: /admin/views/templates/slide-stage.php:2077 ../admin/views/templates/slide- +#: stage.php:2078 ../admin/views/templates/slide-stage.php:2144 .. +#: /admin/views/templates/slide-stage.php:2145 +msgid "Border Opacity" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:320 ../admin/views/templates/slide- +#: stage.php:321 ../admin/views/templates/slide-stage.php:564 .. +#: /admin/views/templates/slide-stage.php:565 +msgid "Border Style" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:331 ../admin/views/templates/slide- +#: stage.php:332 ../admin/views/templates/slide-stage.php:575 .. +#: /admin/views/templates/slide-stage.php:576 ../admin/views/templates/slide- +#: stage.php:2017 ../admin/views/templates/slide-stage.php:2018 .. +#: /admin/views/templates/slide-stage.php:2082 ../admin/views/templates/slide- +#: stage.php:2083 ../admin/views/templates/slide-stage.php:2149 .. +#: /admin/views/templates/slide-stage.php:2150 +msgid "Border Width" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:336 ../admin/views/templates/slide- +#: stage.php:580 +msgid "Border Radius (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:337 ../admin/views/templates/slide- +#: stage.php:581 +msgid "Border Radius Top Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:338 ../admin/views/templates/slide- +#: stage.php:582 +msgid "Border Radius Top Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:339 ../admin/views/templates/slide- +#: stage.php:583 +msgid "Border Radius Bottom Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:340 ../admin/views/templates/slide- +#: stage.php:584 +msgid "Border Radius Bottom Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:346 ../admin/views/templates/slide- +#: stage.php:347 ../admin/views/templates/slide-stage.php:614 .. +#: /admin/views/templates/slide-stage.php:615 +msgid "Rotation on X axis (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:350 ../admin/views/templates/slide- +#: stage.php:351 ../admin/views/templates/slide-stage.php:618 .. +#: /admin/views/templates/slide-stage.php:619 +msgid "Rotation on Y axis (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:355 ../admin/views/templates/slide- +#: stage.php:356 ../admin/views/templates/slide-stage.php:623 .. +#: /admin/views/templates/slide-stage.php:624 +msgid "Rotation on Z axis (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:360 ../admin/views/templates/slide- +#: stage.php:361 +msgid "Horizontal Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:364 ../admin/views/templates/slide- +#: stage.php:365 +msgid "Vertical Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:371 ../admin/views/templates/slide- +#: stage.php:589 +#, php-format +msgid "Opacity. (1 = 100% Visible / 0.5 = 50% opacaity / 0 = transparent)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:372 ../admin/views/templates/slide- +#: stage.php:590 +#, php-format +msgid "Opacity (1 = 100% Visible / 0.5 = 50% opacaity / 0 = transparent)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:376 ../admin/views/templates/slide- +#: stage.php:377 ../admin/views/templates/slide-stage.php:594 .. +#: /admin/views/templates/slide-stage.php:595 +msgid "X Scale 1 = 100%, 0.5=50%... (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:381 ../admin/views/templates/slide- +#: stage.php:382 ../admin/views/templates/slide-stage.php:598 .. +#: /admin/views/templates/slide-stage.php:599 +msgid "Y Scale 1 = 100%, 0.5=50%... (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:386 ../admin/views/templates/slide- +#: stage.php:387 ../admin/views/templates/slide-stage.php:603 .. +#: /admin/views/templates/slide-stage.php:604 +msgid "X Skew (+/- px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:391 ../admin/views/templates/slide- +#: stage.php:392 ../admin/views/templates/slide-stage.php:607 .. +#: /admin/views/templates/slide-stage.php:608 +msgid "Y Skew (+/- px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:398 ../admin/views/templates/slide- +#: stage.php:630 +msgid "Template" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:399 ../admin/views/templates/slide- +#: stage.php:631 ../admin/views/templates/slider-main-options.php:849 .. +#: /admin/views/templates/slider-main-options.php:880 .. +#: /admin/views/templates/slider-main-options.php:913 .. +#: /admin/views/templates/slider-main-options.php:947 +msgid "Layer" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:407 +msgid "Layer Hover" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:413 ../admin/views/templates/slide- +#: stage.php:414 +msgid "Hover Animation Speed (in ms)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:419 ../admin/views/templates/slide- +#: stage.php:420 +msgid "Hover Animation Easing" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:430 ../admin/views/templates/slide- +#: stage.php:431 +msgid "Mouse Cursor" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:447 ../admin/views/templates/slide- +#: stage.php:448 +msgid "Animation Perspective (default 600)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:452 ../admin/views/templates/slide- +#: stage.php:453 +msgid "Z Offset (+/- px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:459 +msgid "Parallax Depth Level." +msgstr "" + +#: ../admin/views/templates/slide-stage.php:487 +msgid "Sharp Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:490 ../admin/views/templates/slide- +#: stage.php:499 +msgid "No Corner" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:491 ../admin/views/templates/slide- +#: stage.php:500 +msgid "Sharp" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:492 ../admin/views/templates/slide- +#: stage.php:501 +msgid "Sharp Reversed" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:496 +msgid "Sharp Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:527 ../admin/views/templates/slide- +#: stage.php:528 +msgid "Font Hover Opacity" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:640 +msgid "Idle" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:645 +msgid "COPY" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:647 +msgid "Copy From Idle" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:648 +msgid "Copy From Hover" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:649 +msgid "Copy From In Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:650 +msgid "Copy From Out Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:667 +msgid "Hover CSS" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:684 ../admin/views/templates/slide- +#: stage.php:856 ../admin/views/templates/slider-main-options.php:1275 +msgid "Advanced Settings" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:688 ../admin/views/templates/slide- +#: stage.php:689 ../admin/views/templates/slide-stage.php:863 .. +#: /admin/views/templates/slide-stage.php:864 +msgid "Animation Template" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:699 ../admin/views/templates/slide- +#: stage.php:874 +msgid "Template Options" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:711 ../admin/views/templates/slide- +#: stage.php:712 ../admin/views/templates/slide-stage.php:888 .. +#: /admin/views/templates/slide-stage.php:889 +msgid "Animation Easing" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:722 ../admin/views/templates/slide- +#: stage.php:723 ../admin/views/templates/slide-stage.php:899 .. +#: /admin/views/templates/slide-stage.php:900 +msgid "Animation Speed (in ms)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:727 ../admin/views/templates/slide- +#: stage.php:728 ../admin/views/templates/slide-stage.php:904 .. +#: /admin/views/templates/slide-stage.php:905 +msgid "Split Animaton Text (will not respect Html Markups !)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:729 ../admin/views/templates/slide- +#: stage.php:906 +msgid "No Split" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:730 ../admin/views/templates/slide- +#: stage.php:907 +msgid "Char Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:731 ../admin/views/templates/slide- +#: stage.php:908 +msgid "Word Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:732 ../admin/views/templates/slide- +#: stage.php:909 +msgid "Line Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:736 ../admin/views/templates/slide- +#: stage.php:737 ../admin/views/templates/slide-stage.php:913 .. +#: /admin/views/templates/slide-stage.php:914 +msgid "Animation Delay between Splitted Elements" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:750 ../admin/views/templates/slide- +#: stage.php:926 +msgid "Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:753 ../admin/views/templates/slide- +#: stage.php:929 ../admin/views/templates/slider-main-options.php:3180 +msgid "Scale" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:754 ../admin/views/templates/slide- +#: stage.php:930 +msgid "Skew" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:755 ../admin/views/templates/slide- +#: stage.php:931 +msgid "Masking" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:756 ../admin/views/templates/slide- +#: stage.php:932 +msgid "Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:768 +msgid "" +"Mask is not available due Style Transitions. Please remove any Rotation, " +"Scale or skew effect form Idle and Hover settings" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1037 ../admin/views/templates/slide- +#: stage.php:1725 ../admin/views/templates/slide-stage.php:2244 +msgid "Disabled" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1038 +msgid "Pendulum" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1039 +msgid "Rotate" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1040 +msgid "Slideloop" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1041 +msgid "Pulse" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1042 +msgid "Wave" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1047 +msgid "Loop Speed (sec) - 0.3 = 300ms" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1048 +msgid "Loop Speed (ms)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1057 ../admin/views/templates/slide- +#: stage.php:1058 +msgid "Loop Easing" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1071 +msgid "Loop Parameters" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1077 ../admin/views/templates/slide- +#: stage.php:1078 +msgid "2D Rotation start deg." +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1081 ../admin/views/templates/slide- +#: stage.php:1082 +msgid "2D Rotation end deg." +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1087 ../admin/views/templates/slide- +#: stage.php:1088 +msgid "2D Rotation X Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1091 ../admin/views/templates/slide- +#: stage.php:1092 +msgid "2D Rotation Y Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1096 +msgid "Start" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1098 ../admin/views/templates/slide- +#: stage.php:1099 +msgid "Start X Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1101 ../admin/views/templates/slide- +#: stage.php:1102 +msgid "Start Y Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1106 +msgid "End" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1108 ../admin/views/templates/slide- +#: stage.php:1109 +msgid "End X Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1111 ../admin/views/templates/slide- +#: stage.php:1112 +msgid "End Y Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1117 ../admin/views/templates/slide- +#: stage.php:1119 +msgid "Zoom Start" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1121 ../admin/views/templates/slide- +#: stage.php:1123 +msgid "Zoom End" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1129 +msgid "Start Angle" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1133 +msgid "Radius" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1135 +msgid "Radius of Rotation / Pendulum" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1143 +msgid "Lazy Loading" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1146 ../admin/views/templates/slide- +#: stage.php:1155 +msgid "Default Setting" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1147 +msgid "Force Lazy Loading" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1148 +msgid "Ignore Lazy Loading" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1152 +msgid "Source Type" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1174 ../admin/views/templates/slide- +#: stage.php:2337 +msgid "Animation Timing" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1177 ../admin/views/templates/slide- +#: stage.php:2340 +msgid "In and Out Animation Default" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1178 ../admin/views/templates/slide- +#: stage.php:2341 +msgid "In Animation Default and Out Animation Wait for Trigger" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1179 ../admin/views/templates/slide- +#: stage.php:2342 +msgid "Wait for Trigger" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1183 ../admin/views/templates/slide- +#: stage.php:2345 +msgid "Trigger Memory" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1186 ../admin/views/templates/slide- +#: stage.php:2348 +msgid "Reset Animation and Trigger States every loop" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1187 ../admin/views/templates/slide- +#: stage.php:2349 +msgid "Keep last selected State" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1227 +msgid "ID" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1234 +msgid "Classes" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1248 +msgid "Rel" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1256 +msgid "Alt" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1269 +msgid "Internal Classes:" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1285 +msgid "Layer Type:" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1305 +msgid "Visibility on Devices" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1327 +msgid "Hide 'Under' Width" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1333 +msgid "Only on Slider Hover" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1351 +msgid "Auto Responsive" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1357 +msgid "Child Elements Responsive" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1363 +msgid "Align" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1366 +msgid "Grid Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1367 +msgid "Slide Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1372 +msgid "Responsive Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1396 +msgid "Static Layers will be shown on every slide in template sliders" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1403 +msgid "Start on Slide" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1428 +msgid "End on Slide" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1525 +msgid "Image Layer Title " +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1525 +msgid "(only for internal usage):" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1542 +msgid "Add a New Layer" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1545 +msgid "Text/Html" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1546 +msgid "Image" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1547 +msgid "Video" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1548 +msgid "Button" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1549 +msgid "Shape" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1555 +msgid "Quick Layer Selector" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1563 +msgid "Slide contains no layers" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1624 +msgid "Delete All Layers" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1630 +msgid "Desktop" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1631 ../admin/views/templates/slider- +#: main-options.php:867 +msgid "Notebook" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1632 ../admin/views/templates/slider- +#: main-options.php:901 +msgid "Tablet" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1633 ../admin/views/templates/slider- +#: main-options.php:935 ../admin/views/templates/slider-main-options.php:2055 +msgid "Mobile" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1723 +msgid "Helper Grid:" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1732 +msgid "Snap to:" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1734 ../admin/views/templates/slider- +#: main-options.php:3420 ../admin/views/templates/slider-main-options.php:3514 +msgid "None" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1735 +msgid "Help Lines" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1736 +msgid "Layers" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1750 +msgid "PLAY" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1779 +msgid "DragMe" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1819 +msgid "Add Button Layer" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1825 +msgid "Click on Element to add it" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1829 +msgid "Buttons" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1831 ../admin/views/templates/slide- +#: stage.php:1832 ../admin/views/templates/slide-stage.php:1833 .. +#: /admin/views/templates/slide-stage.php:1836 ../admin/views/templates/slide- +#: stage.php:1837 ../admin/views/templates/slide-stage.php:1838 .. +#: /admin/views/templates/slide-stage.php:1841 ../admin/views/templates/slide- +#: stage.php:1842 ../admin/views/templates/slide-stage.php:1843 .. +#: /admin/views/templates/slide-stage.php:1846 ../admin/views/templates/slide- +#: stage.php:1847 ../admin/views/templates/slide-stage.php:1848 .. +#: /admin/views/templates/slide-stage.php:1851 ../admin/views/templates/slide- +#: stage.php:1852 ../admin/views/templates/slide-stage.php:1853 .. +#: /admin/views/templates/slide-stage.php:1856 ../admin/views/templates/slide- +#: stage.php:1857 ../admin/views/templates/slide-stage.php:1858 +msgid "Click Here" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1860 +msgid "Predefined Elements" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1971 +msgid "Idle State" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1990 ../admin/views/templates/slide- +#: stage.php:2054 ../admin/views/templates/slide-stage.php:2219 +msgid "Color" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1993 ../admin/views/templates/slide- +#: stage.php:2058 +msgid "Color 2" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2024 +msgid "Text / Icon" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2037 +msgid "Hover State" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2090 +msgid "Text" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2103 +msgid "Add Shape Layer" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2109 +msgid "Click your Shape below to add it" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2119 +msgid "Shape Settings" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2168 ../admin/views/templates/slider- +#: main-options.php:2367 ../admin/views/templates/slider-main-options.php:2378 .. +#: /admin/views/templates/slider-main-options.php:2512 .. +#: /admin/views/templates/slider-main-options.php:2523 .. +#: /admin/views/templates/slider-main-options.php:2669 .. +#: /admin/views/templates/slider-main-options.php:2680 .. +#: /admin/views/templates/slider-main-options.php:2837 .. +#: /admin/views/templates/slider-main-options.php:2848 +msgid "Width" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2170 ../admin/views/templates/slider- +#: main-options.php:821 +msgid "Full-Width" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2178 +msgid "Height" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2180 +msgid "Full-Height" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2205 +msgid "Apply Styles to Selection" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2223 +msgid "Advanced Styles will alwys be applied to all Device Sizes." +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2238 +msgid "Click" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2239 +msgid "Mouse Enter" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2240 +msgid "Mouse Leave" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2245 +msgid "Simple Link" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2246 +msgid "Jump to Slide" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2247 ../admin/views/templates/slider- +#: main-options.php:3641 +msgid "Next Slide" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2248 ../admin/views/templates/slider- +#: main-options.php:3637 +msgid "Previous Slide" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2249 ../admin/views/templates/slider- +#: main-options.php:3629 +msgid "Pause Slider" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2250 +msgid "Play Slider" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2251 +msgid "Toggle Slider" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2252 +msgid "CallBack" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2253 +msgid "Scroll Below Slider" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2254 +msgid "Start Layer \"in\" Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2255 +msgid "Start Layer \"out\" Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2261 +msgid "Toggle Layer Class" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2266 +msgid "Link Url" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2270 +msgid "Link Target" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2277 +msgid "Link Type" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2280 +msgid "jQuery Link" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2281 +msgid "a Tag Link" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2287 +msgid "Jump To" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2296 +msgid "Scroll Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2303 +msgid "Function" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2309 +msgid "Target" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2313 +msgid "Delay" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2315 ../admin/views/templates/slider- +#: main-options.php:1620 ../admin/views/templates/slider-main-options.php:1626 .. +#: /admin/views/templates/slider-main-options.php:1645 .. +#: /admin/views/templates/slider-main-options.php:1889 .. +#: /admin/views/templates/slider-main-options.php:1895 .. +#: /admin/views/templates/slider-main-options.php:2353 .. +#: /admin/views/templates/slider-main-options.php:2358 .. +#: /admin/views/templates/slider-main-options.php:2498 .. +#: /admin/views/templates/slider-main-options.php:2503 .. +#: /admin/views/templates/slider-main-options.php:2655 .. +#: /admin/views/templates/slider-main-options.php:2660 .. +#: /admin/views/templates/slider-main-options.php:2824 .. +#: /admin/views/templates/slider-main-options.php:2828 .. +#: /admin/views/templates/slider-main-options.php:3318 +msgid "ms" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2320 +msgid "at Start" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2322 +msgid "Play In Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2323 +msgid "Keep Hidden" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2330 +msgid "Class" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:25 +msgid "Edit Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:25 .. +#: /admin/views/templates/sliders-list.php:184 +msgid "New Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:36 +msgid "Content Source" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:43 +msgid "Default Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:48 +msgid "Post-Based Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:53 +msgid "Specific Posts" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:58 +msgid "Flickr Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:63 +msgid "Instagram Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:68 +msgid "Woo Commerce Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:73 +msgid "Twitter Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:78 +msgid "Facebook Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:83 +msgid "YouTube Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:88 +msgid "Vimeo Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:104 +msgid "Coming Soon!" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:112 +msgid "Slides (max 33)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:113 .. +#: /admin/views/templates/slider-main-options.php:134 +msgid "Display this number of photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:115 .. +#: /admin/views/templates/slider-main-options.php:251 +msgid "Access Token" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:116 +msgid "Put in your Instagram Access Token" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:119 +msgid "" +"Get your Instagram Access Token here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:123 +msgid "Instagram User ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:124 +msgid "Put in the Instagram User ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:126 +msgid "" +"Find the Instagram User ID here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:133 .. +#: /admin/views/templates/slider-main-options.php:220 +msgid "Slides (max 500)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:136 +msgid "Flickr API Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:137 +msgid "Put in your Flickr API Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:139 +msgid "" +"Read here how to receive your Flickr API key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:144 +msgid "Display a user's public photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:144 +msgid "User Public Photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:145 +msgid "Display a certain photoset from a user" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:145 +msgid "User Photoset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:146 +msgid "Display a gallery" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:147 +msgid "Display a group's photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:147 +msgid "Groups' Photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:151 +msgid "Flickr User Url" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:152 +msgid "Put in the URL of the flickr User" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:157 +msgid "Select Photoset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:159 +msgid "Select the photoset to pull the data from " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:165 +msgid "Flickr Gallery Url" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:166 +msgid "Put in the URL of the flickr Gallery" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:171 +msgid "Flickr Group Url" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:172 +msgid "Put in the URL of the flickr Group" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:180 +msgid "Slides (max 25)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:181 +msgid "Display this number of posts" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:183 .. +#: /admin/views/templates/slider-main-options.php:223 +msgid "Cache (sec)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:184 .. +#: /admin/views/templates/slider-main-options.php:224 +msgid "Cache the stream for x seconds" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:188 +msgid "Facebook Page" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:189 +msgid "Put in the URL/ID of the Facebook page" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:195 .. +#: /admin/views/templates/slider-main-options.php:303 +msgid "Album" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:196 +msgid "Timeline" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:201 +msgid "Select Album" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:203 +msgid "Select the album to pull the data from " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:208 +msgid "App ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:209 +msgid "Put in the Facebook App ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:212 +msgid "App Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:213 +msgid "Put in the Facebook App secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:221 +msgid "Display this number of tweets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:227 +msgid "Twitter Name @" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:228 +msgid "Put in the Twitter Account to stream from" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:231 +msgid "Text Tweets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:235 +msgid "Retweets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:239 +msgid "Replies" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:244 +msgid "Consumer Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:245 +msgid "Put in your Twitter Consumer Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:247 +msgid "Consumer Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:248 +msgid "Put in your Twitter Consumer Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:252 +msgid "Put in your Twitter Access Token" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:255 +msgid "Access Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:256 +msgid "Put in your Twitter Access Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:258 +msgid "" +"Please register " +"your application with Twitter to get the values" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:264 +msgid "Slides (max 50)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:265 .. +#: /admin/views/templates/slider-main-options.php:298 +msgid "Display this number of videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:267 +msgid "Youtube API Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:268 +msgid "Put in your YouTube API Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:271 +msgid "" +"Find information about the YouTube API key here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:274 +msgid "Channel ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:275 +msgid "Put in the ID of the YouTube channel" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:279 +msgid "Display the channel´s videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:279 .. +#: /admin/views/templates/slider-main-options.php:305 .. +#: /admin/views/templates/slider-main-options.php:323 +msgid "Channel" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:280 +msgid "Display a playlist" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:280 +msgid "Playlist" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:285 +msgid "Select Playlist" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:291 +msgid "" +"See how to find the Youtube channel ID here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:297 +msgid "Slides (max 60)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:302 +msgid "Display the user's videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:302 .. +#: /admin/views/templates/slider-main-options.php:311 +msgid "User" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:303 +msgid "Display an album" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:304 +msgid "Display a group's videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:304 .. +#: /admin/views/templates/slider-main-options.php:315 +msgid "Group" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:305 +msgid "Display a channel's videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:312 +msgid "Either the shortcut URL or ID of the user" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:316 +msgid "Either the shortcut URL or ID of the group" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:319 +msgid "Album ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:320 +msgid "The ID of the album" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:324 +msgid "Either the shortcut URL of the channel" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:332 +msgid "Specific Posts List:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:336 +msgid "Post Types:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:378 +msgid "Post Categories:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:404 +msgid "Filter Events By:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:418 +msgid "Sort Posts By:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:420 +msgid "Post ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:421 +msgid "Date" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:423 +msgid "Slug" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:424 +msgid "Author" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:425 +msgid "Last Modified" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:426 +msgid "Number Of Comments" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:427 +msgid "Random" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:428 +msgid "Unsorted" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:429 +msgid "Custom Order" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:445 +msgid "Sort Direction:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:448 +msgid "Descending" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:450 +msgid "Ascending" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:454 +msgid "Max Posts Per Slider:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:458 +msgid "Limit The Excerpt To:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:470 +msgid "Slider Title & ShortCode" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:475 +msgid "Enter your Slider Name here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:477 +msgid "The title of the slider, example: Slider 1" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:481 +msgid "Enter your Slider Alias here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:483 +msgid "The alias for embedding your slider, example: slider1" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:489 +msgid "Place the shortcode where you want to show the slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:503 +msgid "Select a Slider Type" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:508 +msgid "Standard Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:513 +msgid "Hero Scene" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:518 +msgid "Carousel Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:522 +msgid "Load a Preset from this Slider Type" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:530 +msgid "Save Current Settings as Preset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:807 +msgid "Slide Layout" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:826 +msgid "Full-Screen" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:836 +msgid "Desktop Large" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:836 +msgid "Max" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:857 .. +#: /admin/views/templates/slider-main-options.php:888 .. +#: /admin/views/templates/slider-main-options.php:921 .. +#: /admin/views/templates/slider-main-options.php:956 +msgid "Layer Grid Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:862 +msgid "Specify a layer grid size above" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:893 .. +#: /admin/views/templates/slider-main-options.php:926 .. +#: /admin/views/templates/slider-main-options.php:961 +msgid "Custom Grid Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:970 +msgid "Show Advanced Size Options" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:977 +msgid "FullScreen Align Force" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:979 +msgid "Layers align within the full slider instead of the layer grid." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:983 +msgid "Increase/Decrease Fullscreen Height" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:988 +msgid "Containers" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:990 +msgid "" +"Example: #header or .header, .footer, #somecontainer | Height of Slider will " +"be decreased with the height of these Containers to fit perfect in the " +"screen." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:996 +msgid "PX or %" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:998 +msgid "" +"Decrease/Increase height of Slider. Can be used with px and %. " +"Positive/Negative values allowed. Example: 40px or 10%" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1004 .. +#: /admin/views/templates/slider-main-options.php:1028 +msgid "Min. Height" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1006 +msgid "The minimum height of the Slider in FullScreen mode." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1014 +msgid "Overflow Hidden" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1017 +msgid "" +"Adds overflow:hidden to the slider wrapping container which will hide / cut " +"any overlapping elements. Mostly used in Carousel Sliders." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1021 +msgid "Respect Aspect Ratio" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1024 +msgid "" +"It will keep aspect ratio and ignore max height of Layer Grid by upscaling. " +"Layer Area will be vertical centered." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1030 +msgid "The minimum height of the Slider in FullWidth or Auto mode." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1224 +msgid "Force Full Width:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1270 +msgid "Customize, Build & Implement" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1276 +msgid "" +"Go for further customization using the advanced settings on the right of " +"this configuration page." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1278 +msgid "Show Advanced Options" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1283 +msgid "Start Building Slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1284 +msgid "" +"Our drag and drop editor will make creating slide content an absolut breeze. " +"This is where the magic happens!" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1289 .. +#: /admin/views/templates/slider-main-options.php:4286 .. +#: /admin/views/templates/slides.php:8 +msgid "Edit Slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1297 +msgid "Implement your Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1298 +msgid "" +"There are several ways to add your slider to your wordpress post / page / " +"etc." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1305 .. +#: /admin/views/templates/slider-main-options.php:4272 +msgid "Save Settings" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1306 .. +#: /admin/views/templates/slider-main-options.php:4273 +msgid "updating..." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1308 .. +#: /admin/views/templates/slider-main-options.php:4277 +msgid "Delete Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1310 +msgid "Preview Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1329 +msgid "Custom CSS / Javascript" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1332 +msgid "Custom CSS" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1336 +msgid "Custom JavaScript" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1588 +msgid "Slideshow" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1589 +msgid "Defaults" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1590 +msgid "Progress Bar" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1591 +msgid "1st Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1592 .. +#: /admin/views/templates/slider-main-options.php:2315 +msgid "Misc." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1602 +msgid "" +"Show multi language controls across the slider. Only available when wpml " +"plugin exists." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1602 +msgid "Use Multi Language (WPML)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1610 +msgid "" +"Call next slide when inactive browser tab is focused again. Use this for " +"avoid dissorted layers and broken timeouts after bluring the browser tab." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1610 +msgid "Next Slide on Focus" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1618 +msgid "" +"The time one slide stays on the screen in Milliseconds. This is a Default " +"Global value. Can be adjusted slide to slide also in the slide editor." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1618 +msgid "Default Slide Duration" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1624 +msgid "Sets a delay before the Slider gets initialized" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1624 +msgid "Initialization Delay" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1629 +msgid "Default transition by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1629 +msgid "Transitions" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1643 +msgid "Default transition duration by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1643 +msgid "Animation Duration" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1652 +msgid "Default main image source size by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1652 +msgid "Image Source Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1668 +msgid "Default background size by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1668 .. +#: /admin/views/templates/slider-main-options.php:2133 +msgid "Background Fit" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1690 +msgid "Default background position by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1690 .. +#: /admin/views/templates/slider-main-options.php:2150 +msgid "Background Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1716 +msgid "Default background repeat by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1716 .. +#: /admin/views/templates/slider-main-options.php:2141 +msgid "Background Repeat" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1727 +msgid "Default Ken/Burn setting by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1738 +msgid "Start Fit: (in %):" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1815 +msgid "End Fit: (in %):" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1820 +msgid "Start Offset X:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1825 +msgid "Start Offset Y:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1830 .. +#: /admin/views/templates/slider-main-options.php:1840 .. +#: /admin/views/templates/slider-main-options.php:1845 +msgid "End Offset Y:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1835 +msgid "End Offset X:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1855 +msgid "Overwrite Selected Settings on all Slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1864 +msgid "" +"Start from a different slide instead of the first slide. I.e. good for " +"preview / edit mode." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1864 +msgid "Alternative 1st Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1868 +msgid "" +"If active, it will overwrite the first slide transition. Use it to get " +"special transition for the first slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1868 +msgid "First Transition Active" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1873 +msgid "First slide transition type" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1873 +msgid "Transition Type" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1887 +msgid "First slide transition duration." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1887 +msgid "Transition Duration" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1893 +msgid "The number of slots or boxes the slide is divided into." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1893 +msgid "Transition Slot Amount" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1904 +msgid "Stops the Timer when mouse is hovering the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1904 +msgid "Stop Slide On Hover" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1909 +msgid "Stops the slideshow after the predefined loop amount at the predefined slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1909 +msgid "Stop Slider After ..." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1915 +msgid "Stops the slider after certain amount of loops. 0 related to the first loop." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1915 +msgid "Amount of Loops" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1920 +msgid "Stops the slider at the given slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1920 +msgid "At Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1926 +msgid "Randomize the order of the slides at every Page reload." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1926 +msgid "Shuffle / Random Mode" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1931 +msgid "" +"If only one Slide is in the Slider, you can choose wether the Slide should " +"loop or if it should stop. If only one Slide exist, slide will be duplicated " +"!" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1931 +msgid "Loop Single Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1937 +msgid "Allow to stop the Slider out of viewport." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1937 +msgid "Stop Slider Out of ViewPort" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1942 +msgid "Out Of ViewPort:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1944 +msgid "Wait" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1945 +msgid "Pause" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1949 +msgid "Min. Size of Slider must be in Viewport before slide starts again." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1949 +msgid "Area out of ViewPort:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1951 .. +#: /admin/views/templates/slider-main-options.php:3111 .. +#: /admin/views/templates/slider-main-options.php:3195 +msgid "%" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1959 +msgid "Enable / disable progress var" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1959 +msgid "Progress Bar Active" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1963 +msgid "Position of the progress bar." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1963 +msgid "Progress Bar Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1971 +msgid "The height of the progress bar" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1971 +msgid "Progress Bar Heigth" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1973 .. +#: /admin/views/templates/slider-main-options.php:1979 .. +#: /admin/views/templates/slider-main-options.php:2074 .. +#: /admin/views/templates/slider-main-options.php:2080 .. +#: /admin/views/templates/slider-main-options.php:2085 .. +#: /admin/views/templates/slider-main-options.php:2182 .. +#: /admin/views/templates/slider-main-options.php:2188 .. +#: /admin/views/templates/slider-main-options.php:2194 .. +#: /admin/views/templates/slider-main-options.php:2199 .. +#: /admin/views/templates/slider-main-options.php:2369 .. +#: /admin/views/templates/slider-main-options.php:2380 .. +#: /admin/views/templates/slider-main-options.php:2405 .. +#: /admin/views/templates/slider-main-options.php:2411 .. +#: /admin/views/templates/slider-main-options.php:2437 .. +#: /admin/views/templates/slider-main-options.php:2443 .. +#: /admin/views/templates/slider-main-options.php:2475 .. +#: /admin/views/templates/slider-main-options.php:2514 .. +#: /admin/views/templates/slider-main-options.php:2525 .. +#: /admin/views/templates/slider-main-options.php:2548 .. +#: /admin/views/templates/slider-main-options.php:2554 .. +#: /admin/views/templates/slider-main-options.php:2614 .. +#: /admin/views/templates/slider-main-options.php:2628 .. +#: /admin/views/templates/slider-main-options.php:2633 .. +#: /admin/views/templates/slider-main-options.php:2638 .. +#: /admin/views/templates/slider-main-options.php:2671 .. +#: /admin/views/templates/slider-main-options.php:2682 .. +#: /admin/views/templates/slider-main-options.php:2718 .. +#: /admin/views/templates/slider-main-options.php:2724 .. +#: /admin/views/templates/slider-main-options.php:2785 .. +#: /admin/views/templates/slider-main-options.php:2799 .. +#: /admin/views/templates/slider-main-options.php:2804 .. +#: /admin/views/templates/slider-main-options.php:2809 .. +#: /admin/views/templates/slider-main-options.php:2839 .. +#: /admin/views/templates/slider-main-options.php:2850 .. +#: /admin/views/templates/slider-main-options.php:2886 .. +#: /admin/views/templates/slider-main-options.php:2892 .. +#: /admin/views/templates/slider-main-options.php:3101 .. +#: /admin/views/templates/slider-main-options.php:3110 .. +#: /admin/views/templates/slider-main-options.php:3117 .. +#: /admin/views/templates/slider-main-options.php:3120 +msgid "px" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1977 +#, php-format +msgid "" +"The opacity of the progress bar
        (0 == Transparent, 100 = Solid color, 50 " +"= 50% opacity etc...)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1977 +msgid "Progress Bar Opacity" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1983 +msgid "Color of the progress bar." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1983 +msgid "Progress Bar Color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2047 +msgid "Layout & Visual" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2052 +msgid "Appearance" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2054 +msgid "Spinner" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2056 .. +#: /admin/views/templates/slider-main-options.php:2529 .. +#: /admin/views/templates/slider-main-options.php:2686 .. +#: /admin/views/templates/slider-main-options.php:2854 +msgid "Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2061 +msgid "If this is enabled, the slider will not be loaded on mobile devices." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2061 +msgid "Disable Slider on Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2066 +msgid "This will disable KenBurns on mobile devices to save performance" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2066 +msgid "Disable KenBurn On Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2070 +msgid "Hide Element Under Width:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2072 +msgid "" +"Hide the slider under the defined slider width. Value 0 will disable the " +"function." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2072 .. +#: /admin/views/templates/template-slider-selector.php:15 +msgid "Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2078 +msgid "" +"Hide the selected layers (set layers hide under in slide editor) under the " +"defined slider width. Value 0 will disable the function." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2078 +msgid "Predefined Layers" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2083 +msgid "" +"Hide all layers under the defined slider width. Value 0 will disable the " +"function." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2083 +msgid "All Layers" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2093 +msgid "The Shadow display underneath the banner." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2093 +msgid "Shadow Type" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2095 +msgid "No Shadow" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2105 +msgid "Show a dotted overlay over the slides." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2105 +msgid "Dotted Overlay Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2115 +msgid "Slider Background" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2116 +msgid "" +"General background color for slider. Clear value to get transparent slider " +"container." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2116 +msgid "Background color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2120 +msgid "" +"Padding around the slider. Together with background color shows as slider " +"border." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2120 +msgid "Padding as Border" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2124 +msgid "Use a general background image instead of general background color." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2124 +msgid "Show Background Image" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2129 +msgid "The source of the general background image." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2129 +msgid "Background Image Url" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2130 +msgid "Set" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2133 +msgid "" +"General background image size. Cover - always fill the container, cuts " +"overlays. Contain- always fits image into slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2135 +msgid "cover" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2136 +msgid "contain" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2137 +msgid "normal" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2141 +msgid "General background image repeat attitude. Used for tiled images." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2143 +msgid "no-repeat" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2144 +msgid "repeat" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2145 +msgid "repeat-x" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2146 +msgid "repeat-y" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2150 +msgid "" +"General background image position. i.e. center center to always center " +"vertical and horizontal the image in the slider background." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2152 +msgid "center top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2153 +msgid "center right" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2154 +msgid "center bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2155 +msgid "center center" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2156 +msgid "left top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2157 +msgid "left center" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2158 +msgid "left bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2159 +msgid "right top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2160 +msgid "right center" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2161 +msgid "right bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2171 +msgid "" +"The position of the slider within the parrent container. (float:left or " +"float:right or with margin:0px auto;). We recomment do use always CENTER, " +"since the slider will auto fill and grow with the wrapping container. Set " +"any border,padding, floating etc. to the wrapping container where the slider " +"embeded instead of using left/right here !" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2171 +msgid "Position on the page" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2180 +msgid "The top margin of the slider wrapper div" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2180 +msgid "Margin Top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2186 +msgid "The bottom margin of the slider wrapper div" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2186 +msgid "Margin Bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2192 +msgid "The left margin of the slider wrapper div" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2192 +msgid "Margin Left" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2197 +msgid "The right margin of the slider wrapper div" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2197 +msgid "Margin Right" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2208 +msgid "Select a Spinner for your Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2208 +msgid "Choose Spinner" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2214 .. +#: /admin/views/templates/slider-main-options.php:3126 +msgid "3" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2215 +msgid "4" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2216 .. +#: /admin/views/templates/slider-main-options.php:3127 +msgid "5" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2220 +msgid "The Color the Spinner will be shown in" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2220 +msgid "Spinner Color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2305 +msgid "Navigation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2314 +msgid "Touch" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2320 +msgid "Enable / Disable Arrows" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2320 +msgid "Enable Arrows" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2325 +msgid "Look of the navigation Arrows" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2325 +msgid "Arrows Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2327 .. +#: /admin/views/templates/slider-main-options.php:2458 .. +#: /admin/views/templates/slider-main-options.php:2592 .. +#: /admin/views/templates/slider-main-options.php:2764 +msgid "No Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2343 +msgid "" +"Enable to make arrows always visible. Disable to hide arrows after the " +"defined time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2343 .. +#: /admin/views/templates/slider-main-options.php:2645 .. +#: /admin/views/templates/slider-main-options.php:2814 +msgid "Always Show " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2345 .. +#: /admin/views/templates/slider-main-options.php:2491 .. +#: /admin/views/templates/slider-main-options.php:2647 .. +#: /admin/views/templates/slider-main-options.php:2816 +msgid "Yes" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2346 .. +#: /admin/views/templates/slider-main-options.php:2492 .. +#: /admin/views/templates/slider-main-options.php:2648 .. +#: /admin/views/templates/slider-main-options.php:2817 +msgid "No" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2351 +msgid "Time after the Arrows will be hidden(Default: 200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2351 .. +#: /admin/views/templates/slider-main-options.php:2496 .. +#: /admin/views/templates/slider-main-options.php:2653 +msgid "Hide After" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2356 +msgid "Time after the Arrows will be hidden on Mobile(Default: 1200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2356 .. +#: /admin/views/templates/slider-main-options.php:2501 .. +#: /admin/views/templates/slider-main-options.php:2658 +msgid "Hide After on Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2362 +msgid "Force Hide Navigation Arrows under width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2362 +msgid "Hide Under" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2367 +msgid "If browser size goes below this value, then Navigation Arrows are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2373 +msgid "Force Hide Navigation over width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2373 +msgid "Hide Over" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2378 +msgid "If browser size goes over this value, then Navigation Arrows are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2384 +msgid "Left Arrow Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2386 +msgid "Horizontal position of the left arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2386 .. +#: /admin/views/templates/slider-main-options.php:2415 .. +#: /admin/views/templates/slider-main-options.php:2530 .. +#: /admin/views/templates/slider-main-options.php:2700 .. +#: /admin/views/templates/slider-main-options.php:2868 +msgid "Horizontal Align" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2395 +msgid "Vertical position of the left arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2395 .. +#: /admin/views/templates/slider-main-options.php:2425 .. +#: /admin/views/templates/slider-main-options.php:2538 .. +#: /admin/views/templates/slider-main-options.php:2708 .. +#: /admin/views/templates/slider-main-options.php:2876 +msgid "Vertical Align" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2403 +msgid "Offset from current horizontal position of of left arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2403 .. +#: /admin/views/templates/slider-main-options.php:2435 .. +#: /admin/views/templates/slider-main-options.php:2546 .. +#: /admin/views/templates/slider-main-options.php:2716 .. +#: /admin/views/templates/slider-main-options.php:2884 +msgid "Horizontal Offset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2409 +msgid "Offset from current vertical position of of left arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2409 .. +#: /admin/views/templates/slider-main-options.php:2441 .. +#: /admin/views/templates/slider-main-options.php:2552 .. +#: /admin/views/templates/slider-main-options.php:2722 .. +#: /admin/views/templates/slider-main-options.php:2890 +msgid "Vertical Offset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2414 +msgid "Right Arrow Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2415 +msgid "Horizontal position of the right arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2425 +msgid "Vertical position of the right arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2435 +msgid "Offset from current horizontal position of of right arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2441 +msgid "Offset from current vertical position of of right arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2451 +msgid "Enable / Disable Bullets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2451 +msgid "Enable Bullets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2456 +msgid "Look of the Bullets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2456 +msgid "Bullet Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2473 +msgid "Space between the bullets." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2473 .. +#: /admin/views/templates/slider-main-options.php:2612 .. +#: /admin/views/templates/slider-main-options.php:2783 +msgid "Space" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2479 +msgid "Direction of the Bullets. Vertical or Horizontal." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2479 .. +#: /admin/views/templates/slider-main-options.php:2617 .. +#: /admin/views/templates/slider-main-options.php:2788 +msgid "Direction" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2481 .. +#: /admin/views/templates/slider-main-options.php:2619 .. +#: /admin/views/templates/slider-main-options.php:2790 .. +#: /admin/views/templates/slider-main-options.php:2919 .. +#: /admin/views/templates/slider-main-options.php:2934 +msgid "Horizontal" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2482 .. +#: /admin/views/templates/slider-main-options.php:2620 .. +#: /admin/views/templates/slider-main-options.php:2791 .. +#: /admin/views/templates/slider-main-options.php:2920 .. +#: /admin/views/templates/slider-main-options.php:2935 +msgid "Vertical" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2489 +msgid "" +"Enable to make bullets always visible. Disable to hide bullets after the " +"defined time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2489 +msgid "Always Show" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2496 +msgid "Time after that the bullets will be hidden(Default: 200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2501 +msgid "Time after the bullets will be hidden on Mobile (Default: 1200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2507 +msgid "Force Hide Navigation Bullets under width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2507 .. +#: /admin/views/templates/slider-main-options.php:2664 .. +#: /admin/views/templates/slider-main-options.php:2832 +msgid "Hide under Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2512 .. +#: /admin/views/templates/slider-main-options.php:2523 +msgid "If browser size goes below this value, then Navigation bullets are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2518 +msgid "Force Hide Navigation Bullets over width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2518 .. +#: /admin/views/templates/slider-main-options.php:2675 .. +#: /admin/views/templates/slider-main-options.php:2843 +msgid "Hide over Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2530 +msgid "Horizontal position of bullets " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2538 +msgid "Vertical positions of bullets " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2546 +msgid "Offset from current horizontal position." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2552 +msgid "Offset from current Vertical position." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2562 +msgid "Enable / Disable Thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2562 +msgid "Enable Thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2569 .. +#: /admin/views/templates/slider-main-options.php:2742 +msgid "Wrapper Container" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2571 +msgid "The wrapper div padding of thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2571 .. +#: /admin/views/templates/slider-main-options.php:2744 +msgid "Wrapper Padding" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2575 +msgid "Span wrapper to full width or full height based on the direction selected" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2575 .. +#: /admin/views/templates/slider-main-options.php:2748 +msgid "Span Wrapper" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2579 +msgid "Thumbnails wrapper background color. For transparent leave empty." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2579 +msgid "Wrapper color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2580 .. +#: /admin/views/templates/slider-main-options.php:2752 .. +#: /admin/views/templates/slider-main-options.php:2753 +msgid "Wrapper Color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2583 .. +#: /admin/views/templates/slider-main-options.php:2756 +#, php-format +msgid "Opacity of the Wrapper container. 0 - transparent, 50 - 50% opacity..." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2583 .. +#: /admin/views/templates/slider-main-options.php:2756 +msgid "Wrapper Opacity" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2590 +msgid "Style of the thumbnails." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2590 +msgid "Thumbnails Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2608 +msgid "The amount of max visible Thumbnails in the same time. " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2608 +msgid "Visible Thumbs Amount" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2612 +msgid "Space between the thumbnails." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2617 +msgid "Direction of the Thumbnails. Vertical or Horizontal." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2624 +msgid "Thumbnail Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2626 +msgid "The basic Width of one Thumbnail." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2626 +msgid "Thumb Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2631 +msgid "The basic Height of one Thumbnail." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2631 +msgid "Thumb Height" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2636 +msgid "" +"The minimum width of the auto resized thumbs. Between Max and Min width the " +"sizes are auto calculated)." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2636 +msgid "Min Thumb Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2645 +msgid "" +"Enable to make thumbnails always visible. Disable to hide thumbnails after " +"the defined time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2653 +msgid "Time after that the thumbnails will be hidden(Default: 200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2658 +msgid "Time after that the thumbnails will be hidden on Mobile (Default: 1200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2664 .. +#: /admin/views/templates/slider-main-options.php:2675 +msgid "Force Hide Navigation Thumbnails under width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2669 .. +#: /admin/views/templates/slider-main-options.php:2680 +msgid "If browser size goes below this value, then Navigation thumbs are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2687 +msgid "" +"Put the thumbnails inside or outside of the slider container. Outside added " +"thumbnails will decrease the size of the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2687 .. +#: /admin/views/templates/slider-main-options.php:2856 +msgid "Inner / outer" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2689 .. +#: /admin/views/templates/slider-main-options.php:2858 +msgid "Inner Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2690 .. +#: /admin/views/templates/slider-main-options.php:2859 +msgid "Outer Left" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2691 .. +#: /admin/views/templates/slider-main-options.php:2860 +msgid "Outer Right" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2692 .. +#: /admin/views/templates/slider-main-options.php:2861 +msgid "Outer Top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2693 .. +#: /admin/views/templates/slider-main-options.php:2862 +msgid "Outer Bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2700 +msgid "Horizontal position of thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2708 +msgid "Vertical position of thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2716 +msgid "Offset from current Horizontal position." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2722 +msgid "Offset from current Vertical position." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2735 +msgid "Enable / Disable navigation tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2735 +msgid "Enable Tabs" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2744 +msgid "The wrapper div padding of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2748 +msgid "Span wrapper to full width or full height based on the direction selected." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2752 +msgid "Tabs wrapper background color. For transparent leave empty." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2762 +msgid "Style of the tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2762 +msgid "Tabs Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2779 +msgid "The amount of max visible tabs in same time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2779 +msgid "Visible Tabs Amount" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2783 +msgid "Space between the tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2788 +msgid "Direction of the Tabs. Vertical or Horizontal." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2795 +msgid "Tab Sizes" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2797 +msgid "The basic width of one tab." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2797 +msgid "Tabs Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2802 +msgid "the basic height of one tab." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2802 +msgid "Tabs Height" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2807 +msgid "" +"The minimum width of the auto resized Tabs. Between Max and Min width the " +"sizes are auto calculated)." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2807 +msgid "Min. Tab Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2814 +msgid "" +"Enable to make tabs always visible. Disable to hide tabs after the defined " +"time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2822 +msgid "Time after that the tabs will be hidden(Default: 200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2822 +msgid "Hide After" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2826 +msgid "Time after that the tabs will be hidden on Mobile (Default: 1200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2826 +msgid "Hide After on Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2832 .. +#: /admin/views/templates/slider-main-options.php:2843 +msgid "Force Hide Navigation tabs under width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2837 .. +#: /admin/views/templates/slider-main-options.php:2848 +msgid "If browser size goes below this value, then Navigation tabs are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2856 +msgid "" +"Put the tabs inside or outside of the slider container. Outside added tabs " +"will decrease the size of the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2868 +msgid "Horizontal position of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2876 +msgid "Vertical position of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2884 +msgid "Offset from current horizontal position of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2890 +msgid "Offset from current vertical position of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2901 +msgid "Enable Swipe Function on touch devices" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2901 +msgid "Touch Enabled" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2905 +msgid "Scroll below slider on vertical swipe" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2905 +msgid "Drag Block Vertical" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2909 +msgid "Defines the sensibility of gestures. Smaller values mean a higher sensibility" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2909 +msgid "Swipe Treshhold (0 - 200)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2913 +msgid "Defines how many fingers are needed minimum for swiping" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2913 +msgid "Swipe Min Finger" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2917 +msgid "Swipe Direction to swap slides?" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2917 +msgid "Swipe Direction" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2928 +msgid "Allow/disallow to navigate the slider with keyboard." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2928 +msgid "Keyboard Navigation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2932 +msgid "" +"Keyboard Direction to swap slides (horizontal - left/right arrow, vertical - " +"up/down arrow)?" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2932 +msgid "Key Direction" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2939 +msgid "Allow/disallow to navigate the slider with Mouse Scroll." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2939 +msgid "Mouse Scroll Navigation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3082 +msgid "Carousel Settings" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3088 +msgid "Basics" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3089 +msgid "Transformations" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3090 +msgid "Aligns" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3094 +msgid "" +"Infinity Carousel Scroll. No Endpoints exists at first and last slide if " +"valuse is set to ON." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3094 +msgid "Infinity Scroll" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3099 +msgid "The horizontal gap/space between the slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3099 +msgid "Space between slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3105 +msgid "The border radius of slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3116 +msgid "The padding top of slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3119 +msgid "The padding bottom of slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3123 +msgid "The maximum visible items in same time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3123 +msgid "Max. Visible Items" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3128 +msgid "7" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3129 +msgid "9" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3130 +msgid "11" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3131 +msgid "13" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3132 +msgid "15" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3133 +msgid "17" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3134 +msgid "19" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3138 +msgid "" +"Stretch carousel element width to the wrapping container width. Using this " +"you can see only 1 item in same time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3138 +msgid "Stretch Element" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3148 +msgid "" +"All elements out of focus will get some Opacity value based on the Distance " +"to the current focused element, or only the coming/leaving elements." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3148 +msgid "Fade All Elements" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3154 +msgid "Fade is varying based on the distance to the focused element." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3154 +msgid "Varying Fade" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3161 +msgid "Rotation enabled/disabled for not focused elements." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3168 +msgid "Rotation is varying based on the distance to the focused element." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3168 +msgid "Varying Rotation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3173 +msgid "" +"The maximum rotation of the Side elements. Rotation will depend on the " +"element distance to the current focused element. 0 will turn off the Rotation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3173 +msgid "Max. Rotation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3175 +msgid "deg" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3180 +msgid "Scale enabled/disabled for not focused elements." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3188 +msgid "Scale is varying based on the distance to the focused element." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3188 +msgid "Varying Scale" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3193 +msgid "" +"The maximum scale down of the Side elements. Scale will depend on the " +"element distance to the current focused element. Min value is 0 and max " +"value is 100." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3193 +msgid "Max. Scaledown" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3203 +msgid "Horizontal Align of the Carousel." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3203 +msgid "Horizontal Aligns" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3211 +msgid "Vertical Align of the Carousel." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3211 +msgid "Vertical Aligns" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3289 +msgid "" +"Enabling this, will give you new options in the slides to create a unique " +"parallax effect" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3289 +msgid "Enable Parallax" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3294 +msgid "If set to on, parallax will be disabled on mobile devices to save performance" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3294 +msgid "Disable on Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3299 +msgid "Mouse Sensibility" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3301 +msgid "Defines on what event type the parallax should react to" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3301 +msgid "Event" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3303 +msgid "Mouse Move" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3304 +msgid "Scroll Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3305 +msgid "Move and Scroll" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3309 +msgid "Mouse Based parallax calculation Origo" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3309 +msgid "Parallax Origo" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3311 +msgid "Mouse Enter Point" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3312 +msgid "Slider Center" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3316 +msgid "Parallax Speed for Mouse movents." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3316 +msgid "Animation Speed" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3322 +msgid "Parallax Levels" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3324 .. +#: /admin/views/templates/slider-main-options.php:3328 .. +#: /admin/views/templates/slider-main-options.php:3332 .. +#: /admin/views/templates/slider-main-options.php:3336 .. +#: /admin/views/templates/slider-main-options.php:3340 .. +#: /admin/views/templates/slider-main-options.php:3344 .. +#: /admin/views/templates/slider-main-options.php:3348 .. +#: /admin/views/templates/slider-main-options.php:3352 .. +#: /admin/views/templates/slider-main-options.php:3356 .. +#: /admin/views/templates/slider-main-options.php:3360 +msgid "" +"Defines a level that can be used in Slide Editor for this Slider. Smaller " +"value gives a smaller offset effect, higher value will increase the effect." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3324 +msgid "Level Depth 1" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3328 +msgid "Level Depth 2" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3332 +msgid "Level Depth 3" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3336 +msgid "Level Depth 4" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3340 +msgid "Level Depth 5" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3344 +msgid "Level Depth 6" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3348 +msgid "Level Depth 7" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3352 +msgid "Level Depth 8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3356 +msgid "Level Depth 9" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3360 +msgid "Level Depth 10" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3392 +msgid "Performance and SEO Optimization" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3406 +msgid "" +"How to load/preload the images.

        All - Load all " +"image element in a sequence at the initialisation. This will boost up the " +"loading of your page, and will preload all images to have a smooth breakless " +"run already in the first loop.

        Smart - It will " +"allow to load the page as quickest, and load only the current and neighbour " +"slide elements. Will load on demand the next element if not loaded yet. " +"

        Single - It will load only the slide which should " +"be shown, always on demand." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3406 +msgid "Lazy Load" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3409 +msgid "Smart" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3410 +msgid "Single" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3411 +msgid "No Lazy Loading" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3418 +msgid "" +"Define SEO Optimization for the Images in the Slider, useful if Lazy Load is " +"on." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3418 +msgid "SEO Optimization" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3421 +msgid "NoScript" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3422 +msgid "NoFrame" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3472 +msgid "Problem Handlings" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3477 +msgid "Fallbacks" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3478 +msgid "Troubleshooting" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3481 +msgid "Simplyfies the Slider on IOS4 and IE8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3481 +msgid "Simplify on IOS4/IE8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3485 +msgid "Disables the Slider and load an alternative image instead" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3485 +msgid "Use Alternative Image" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3488 +msgid "On Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3489 +msgid "On IE8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3490 +msgid "On Mobile and IE8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3494 +msgid "The image that will be loaded instead of the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3494 +msgid "Alternate Image" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3499 +msgid "" +"Turns on / off jquery noconflict mode. Try to enable this option if " +"javascript conflicts exist on the page." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3499 +msgid "JQuery No Conflict Mode" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3503 +msgid "" +"Try this to fix some javascript conflicts of type: TypeError: " +"tpj('#rev_slider_1_1').show().revolution is not a function" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3503 +msgid "Put JS Includes To Body" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3512 +msgid "" +"Activate a protection against wordpress output filters that adds html blocks " +"to the shortcode output like P and BR." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3512 +msgid "Output Filters Protection" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3515 +msgid "By Compressing Output" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3516 +msgid "By Echo Output" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3545 +msgid "Import / Export / Replace" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3549 +msgid "Import" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3550 .. +#: /admin/views/templates/sliders-list.php:154 +msgid "Export" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3551 +msgid "Replace URL" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3563 +msgid "Overwrite or append the custom animations due the new imported values ?" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3563 +msgid "Custom Animations" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3568 +msgid "Overwrite or append the static styles due the new imported values ?" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3568 ../includes/operations. +#: class.php:2322 +msgid "Static Styles" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3577 +msgid "" +"Note! Custom styles will be updated if they exist. Importing slider, will " +"delete all the current slider settings and slides and replacing it with the " +"imported content." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3583 +msgid "Export Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3583 +msgid "Export with Dummy Images" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3589 +msgid "" +"Replace all layer and backgorund image url's. example - replace from: http:" +"//localhost" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3589 +msgid "Replace From" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3593 +msgid "" +"Replace all layer and backgorund image url's. example - replace to: http:" +"//yoursite.com" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3593 +msgid "Replace To" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3600 +msgid "Replace URL's" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3601 +msgid "Replacing..." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3604 +msgid "Note! The replace process is not reversible !" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3621 +msgid "API Functions" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3625 +msgid "Methods" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3626 +msgid "Events" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3629 +msgid "Call this function to pause the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3633 +msgid "Call this function to play the slider if it is paused." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3633 +msgid "Resume Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3637 +msgid "Switch slider to previous slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3641 +msgid "Switch slider to next slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3645 .. +#: /admin/views/templates/slider-main-options.php:3649 +msgid "Switch to the slide which is defined as parameter." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3645 +msgid "Go To Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3649 +msgid "Go To Slide with ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3653 +msgid "Get the amount of existing slides in the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3653 +msgid "Max Slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3657 +msgid "Get the current focused slide index." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3657 +msgid "Current Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3661 +msgid "Get the previously played slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3665 +msgid "Scroll page under the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3665 +msgid "External Scroll" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3669 +msgid "" +"Recalculate all positions, sizing etc in the slider. This should be called " +"i.e. if Slider was invisible and becomes visible without any window resize " +"event." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3669 +msgid "Redraw Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3673 +msgid "" +"Unbind all listeners, remove current animations and delete containers. Ready " +"for Garbage collection." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3673 +msgid "Kill Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3678 +msgid "Slider Loaded" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3683 +msgid "Slider swapped to an other slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3687 +msgid "Current Slide as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3689 .. +#: /admin/views/templates/slider-main-options.php:3740 +msgid "Previous Slide as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3691 +msgid "Slider paused" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3696 +msgid "Slider is Playing after pause" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3701 +msgid "Video is playing in slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3705 .. +#: /admin/views/templates/slider-main-options.php:3715 +msgid "The Video API to Manage Video functions" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3707 .. +#: /admin/views/templates/slider-main-options.php:3717 +msgid "youtube, vimeo, html5" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3709 .. +#: /admin/views/templates/slider-main-options.php:3719 +msgid "Video Settings" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3711 +msgid "Video stopped in slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3721 +msgid "Slider reached the 'stop at' slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3726 +msgid "Prepared for slide change" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3730 .. +#: /admin/views/templates/slider-main-options.php:3738 +msgid "Current Slide as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3732 +msgid "Coming Slide as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3734 +msgid "Finnished with slide change" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3742 +msgid "Last slide starts" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3747 +msgid "Layer Events" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3750 +msgid "Layer Action (enterstage, enteredstage, leavestage,leftstage)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3752 +msgid "Layer Type (image,video,html)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3754 +msgid "Default Settings for Layer" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3756 +msgid "Layer as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3769 +msgid "Google Fonts" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3775 +msgid "Add New Font" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3776 +msgid "" +"Copy the Google Font Family from http://www.google.com/fonts like: Open+Sans:400," +"700,600" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3831 +msgid "*Only Illustration, most changes are not visible." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:4298 +msgid "Save Settings as Preset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:4300 +msgid "Preset Name" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:4301 +msgid "Select" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:4321 +msgid "Google Font String" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:39 +msgid "Social" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:144 +msgid "Embed Slider" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:150 +msgid "Order Posts" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:163 +msgid "Export to HTML" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:188 +msgid "Create New Slider" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:189 +msgid "Add Template Slider" +msgstr "" + +#: ../admin/views/templates/slides-list.php:92 +msgid "Unpublish Slide" +msgstr "" + +#: ../admin/views/templates/slides-list.php:96 +msgid "Publish Slide" +msgstr "" + +#: ../admin/views/templates/slides-list.php:115 +msgid "Slide Image - Click to change" +msgstr "" + +#: ../admin/views/templates/slides-list.php:135 +msgid "Deleting Slide..." +msgstr "" + +#: ../admin/views/templates/slides-list.php:139 +msgid "Open copy / move dialog" +msgstr "" + +#: ../admin/views/templates/slides-list.php:147 +msgid "Working..." +msgstr "" + +#: ../admin/views/templates/slides.php:16 ../admin/views/templates/slides.php:36 +msgid "New Slide" +msgstr "" + +#: ../admin/views/templates/slides.php:18 ../admin/views/templates/slides.php:38 +msgid "New Transparent Slide" +msgstr "" + +#: ../admin/views/templates/slides.php:19 ../admin/views/templates/slides.php:39 +msgid "Adding Slide..." +msgstr "" + +#: ../admin/views/templates/slides.php:36 +msgid "Select image or multiple images to add slide or slides" +msgstr "" + +#: ../admin/views/templates/slides.php:41 +msgid "Edit Static / Global Layers" +msgstr "" + +#: ../admin/views/templates/slides.php:46 +msgid "To Slider Settings" +msgstr "" + +#: ../admin/views/templates/template-selector.php:17 +msgid "Slide" +msgstr "" + +#: ../admin/views/templates/template-selector.php:22 .. +#: /admin/views/templates/template-slider-selector.php:20 +msgid "Revolution Base" +msgstr "" + +#: ../admin/views/templates/template-selector.php:23 +msgid "All Slides" +msgstr "" + +#: ../admin/views/templates/template-selector.php:24 +msgid "Templates" +msgstr "" + +#: ../admin/views/templates/template-selector.php:227 .. +#: /admin/views/templates/template-selector.php:240 +msgid "Import Template Slide" +msgstr "" + +#: ../admin/views/templates/template-selector.php:237 .. +#: /admin/views/templates/template-slider-selector.php:166 +msgid "" +"Please select the corresponding zip file from the download packages import " +"folder called" +msgstr "" + +#: ../admin/views/templates/template-slider-selector.php:159 .. +#: /admin/views/templates/template-slider-selector.php:169 +msgid "Import Template Slider" +msgstr "" + +#: ../admin/views/templates/wpml-selector.php:11 +msgid "Preview Slide" +msgstr "" + +#: ../admin/views/templates/wpml-selector.php:41 +msgid "Choose slide language" +msgstr "" + +#: ../includes/extension.class.php:56 +msgid "Slider Revolution" +msgstr "" + +#: ../includes/extension.class.php:112 +msgid "Choose Revolution Slider" +msgstr "" + +#: ../includes/extension.class.php:116 +msgid "--- Choose Slider ---" +msgstr "" + +#: ../includes/external-sources.class.php:382 +msgid "Can't get the bearer token, check your credentials" +msgstr "" + +#: ../includes/external-sources.class.php:437 +msgid "Bearer Token is good, check your query" +msgstr "" + +#: ../includes/navigation.class.php:155 +msgid "Invalid ID" +msgstr "" + +#: ../includes/navigation.class.php:159 +msgid "Navigation could not be deleted" +msgstr "" + +#: ../includes/operations.class.php:268 ../includes/operations.class.php:339 +msgid "## Custom Animation ##" +msgstr "" + +#: ../includes/operations.class.php:270 ../includes/operations.class.php:342 +msgid "- VERSION 5.0 ANIMATIONS -" +msgstr "" + +#: ../includes/operations.class.php:292 ../includes/operations.class.php:355 +msgid "- VERSION 4.0 ANIMATIONS -" +msgstr "" + +#: ../includes/operations.class.php:313 ../includes/operations.class.php:375 +msgid "- SAVED CUSTOM ANIMATIONS -" +msgstr "" + +#: ../includes/operations.class.php:340 +msgid "Automatic Reverse" +msgstr "" + +#: ../includes/operations.class.php:1248 ../includes/operations.class.php:1340 +msgid "Choose language" +msgstr "" + +#: ../includes/operations.class.php:1381 +msgid "CAPTIONS CSS" +msgstr "" + +#: ../includes/operations.class.php:1413 +msgid "Replace image path:" +msgstr "" + +#: ../includes/operations.class.php:1413 +msgid "From:" +msgstr "" + +#: ../includes/operations.class.php:1413 +msgid "To:" +msgstr "" + +#: ../includes/operations.class.php:1413 +msgid "Replace" +msgstr "" + +#: ../includes/operations.class.php:1416 +msgid "Header" +msgstr "" + +#: ../includes/operations.class.php:1416 ../includes/operations.class.php:1418 .. +#: /includes/operations.class.php:1420 ../includes/operations.class.php:1422 +msgid "Mark to Copy" +msgstr "" + +#: ../includes/operations.class.php:1420 +msgid "Body" +msgstr "" + +#: ../includes/operations.class.php:1422 +msgid "Script" +msgstr "" + +#: ../includes/operations.class.php:1442 +msgid "Loading Preview..." +msgstr "" + +#: ../includes/operations.class.php:1601 +msgid "Purchase Code already registered!" +msgstr "" + +#: ../includes/operations.class.php:2003 +msgid "Overall Slider Performance" +msgstr "" + +#: ../includes/operations.class.php:2006 ../includes/operations.class.php:2096 .. +#: /includes/operations.class.php:2183 ../includes/operations.class.php:2260 .. +#: /includes/operations.class.php:2386 ../includes/operations.class.php:2467 +msgid "Slow" +msgstr "" + +#: ../includes/operations.class.php:2007 ../includes/operations.class.php:2097 .. +#: /includes/operations.class.php:2184 ../includes/operations.class.php:2261 .. +#: /includes/operations.class.php:2387 ../includes/operations.class.php:2468 +msgid "Ok" +msgstr "" + +#: ../includes/operations.class.php:2008 ../includes/operations.class.php:2098 .. +#: /includes/operations.class.php:2185 ../includes/operations.class.php:2262 .. +#: /includes/operations.class.php:2388 ../includes/operations.class.php:2469 +msgid "Fast" +msgstr "" + +#: ../includes/operations.class.php:2014 ../includes/operations.class.php:2029 .. +#: /includes/operations.class.php:2044 +msgid "Load Speed UMTS:" +msgstr "" + +#: ../includes/operations.class.php:2018 ../includes/operations.class.php:2033 .. +#: /includes/operations.class.php:2048 +msgid "Load Speed DSL:" +msgstr "" + +#: ../includes/operations.class.php:2022 ../includes/operations.class.php:2037 .. +#: /includes/operations.class.php:2052 +msgid "Load Speed T1:" +msgstr "" + +#: ../includes/operations.class.php:2059 +msgid "Total Slider Size:" +msgstr "" + +#: ../includes/operations.class.php:2064 +msgid "Preloaded Slides Size:" +msgstr "" + +#: ../includes/operations.class.php:2076 +msgid "Need Some Attention" +msgstr "" + +#: ../includes/operations.class.php:2093 +msgid "Image Performance" +msgstr "" + +#: ../includes/operations.class.php:2105 +msgid "Images Loaded:" +msgstr "" + +#: ../includes/operations.class.php:2110 ../includes/operations.class.php:2202 .. +#: /includes/operations.class.php:2273 ../includes/operations.class.php:2399 .. +#: /includes/operations.class.php:2480 +msgid "Hide Details" +msgstr "" + +#: ../includes/operations.class.php:2110 ../includes/operations.class.php:2110 .. +#: /includes/operations.class.php:2202 ../includes/operations.class.php:2202 .. +#: /includes/operations.class.php:2273 ../includes/operations.class.php:2273 .. +#: /includes/operations.class.php:2399 ../includes/operations.class.php:2399 .. +#: /includes/operations.class.php:2480 ../includes/operations.class.php:2480 +msgid "Show Details" +msgstr "" + +#: ../includes/operations.class.php:2137 ../includes/operations.class.php:2220 +msgid "extern" +msgstr "" + +#: ../includes/operations.class.php:2139 ../includes/operations.class.php:2222 +msgid "missing" +msgstr "" + +#: ../includes/operations.class.php:2180 +msgid "Video Performance" +msgstr "" + +#: ../includes/operations.class.php:2192 +msgid "Videos Loaded (max):" +msgstr "" + +#: ../includes/operations.class.php:2198 +msgid "Unknown" +msgstr "" + +#: ../includes/operations.class.php:2257 +msgid "CSS Performance" +msgstr "" + +#: ../includes/operations.class.php:2269 +msgid "CSS Loaded:" +msgstr "" + +#: ../includes/operations.class.php:2294 +msgid "css/settings.css" +msgstr "" + +#: ../includes/operations.class.php:2358 +msgid "Dynamic Styles" +msgstr "" + +#: ../includes/operations.class.php:2383 +msgid "jQuery Performance" +msgstr "" + +#: ../includes/operations.class.php:2395 +msgid "jQuery Loaded:" +msgstr "" + +#: ../includes/operations.class.php:2464 +msgid "Google Fonts Performance" +msgstr "" + +#: ../includes/operations.class.php:2476 +msgid "Fonts Loaded:" +msgstr "" + +#: ../includes/output.class.php:273 +msgid "" +"No slides found, please add at least one Slide Template to the choosen " +"Template Slider." +msgstr "" + +#: ../includes/output.class.php:275 +msgid "No slides found, please add some slides" +msgstr "" + +#: ../includes/output.class.php:4020 +msgid "Revolution Slider Error" +msgstr "" + +#: ../includes/slide.class.php:205 +msgid "Source must be from Stream" +msgstr "" + +#: ../includes/slider.class.php:810 +msgid "Please select the correct zip file" +msgstr "" + +#: ../includes/slider.class.php:827 +msgid "Please select the correct zip file, checksum failed!" +msgstr "" + +#: ../includes/slider.class.php:903 +msgid "animations imported!" +msgstr "" + +#: ../includes/slider.class.php:905 +msgid "" +"no custom animations found, if slider uses custom animations, the provided " +"export may be broken..." +msgstr "" + +#: ../includes/slider.class.php:963 +msgid "dynamic styles imported!" +msgstr "" + +#: ../includes/slider.class.php:965 +msgid "" +"no dynamic styles found, if slider uses dynamic styles, the provided export " +"may be broken..." +msgstr "" + +#: ../includes/slider.class.php:1050 ../includes/slider.class.php:1083 .. +#: /includes/slider.class.php:1202 ../includes/slider.class.php:1235 +msgid " not found!
        " +msgstr "" + +#: ../includes/slider.class.php:1327 +msgid "could not find correct Slide to copy, please try again." +msgstr "" + +#: ../includes/slider.class.php:1485 ../includes/slider.class.php:1494 +msgid "Slide could not be duplicated" +msgstr "" + +#: ../includes/slider.class.php:1502 +msgid "Slide could not be copied" +msgstr "" + +#: ../includes/slider.class.php:1810 +msgid "Failed to load Stream" +msgstr "" + +#: ../includes/widget.class.php:15 +msgid "Displays a revolution slider on the page" +msgstr "" + +#: ../includes/widget.class.php:16 +msgid "Revolution Slider" +msgstr "" + +#: ../includes/widget.class.php:30 +msgid "No sliders found, Please create a slider" +msgstr "" + +#: ../includes/widget.class.php:69 +msgid "Home Page Only" +msgstr "" + +#: ../includes/widget.class.php:72 +msgid "Pages: (example: 2,10)" +msgstr "" + +#: ../includes/framework/base-admin.class.php:267 +msgid "Wrong Request" +msgstr "" + +#: ../includes/framework/base.class.php:219 +msgid "Original" +msgstr "" + +#: ../includes/framework/base.class.php:220 ../includes/framework/base.class.php: +#: 267 ../includes/framework/base.class.php:282 +msgid "Large" +msgstr "" + +#: ../includes/framework/base.class.php:221 +msgid "Large Square" +msgstr "" + +#: ../includes/framework/base.class.php:222 ../includes/framework/base.class.php: +#: 257 ../includes/framework/base.class.php:266 ../includes/framework/base.class. +#: php:281 +msgid "Medium" +msgstr "" + +#: ../includes/framework/base.class.php:223 +msgid "Medium 800" +msgstr "" + +#: ../includes/framework/base.class.php:224 +msgid "Medium 640" +msgstr "" + +#: ../includes/framework/base.class.php:225 ../includes/framework/base.class.php: +#: 265 +msgid "Small" +msgstr "" + +#: ../includes/framework/base.class.php:226 +msgid "Small 320" +msgstr "" + +#: ../includes/framework/base.class.php:227 ../includes/framework/base.class.php: +#: 234 ../includes/framework/base.class.php:280 +msgid "Thumbnail" +msgstr "" + +#: ../includes/framework/base.class.php:228 +msgid "Square" +msgstr "" + +#: ../includes/framework/base.class.php:233 ../includes/framework/base.class.php: +#: 240 +msgid "Standard Resolution" +msgstr "" + +#: ../includes/framework/base.class.php:235 +msgid "Low Resolution" +msgstr "" + +#: ../includes/framework/base.class.php:245 +msgid "Size 0" +msgstr "" + +#: ../includes/framework/base.class.php:246 +msgid "Size 1" +msgstr "" + +#: ../includes/framework/base.class.php:247 +msgid "Size 2" +msgstr "" + +#: ../includes/framework/base.class.php:248 +msgid "Size 3" +msgstr "" + +#: ../includes/framework/base.class.php:249 +msgid "Size 4" +msgstr "" + +#: ../includes/framework/base.class.php:250 +msgid "Size 5" +msgstr "" + +#: ../includes/framework/base.class.php:251 +msgid "Size 6" +msgstr "" + +#: ../includes/framework/base.class.php:256 +msgid "Default" +msgstr "" + +#: ../includes/framework/base.class.php:258 +msgid "High" +msgstr "" + +#: ../includes/framework/base.class.php:259 +msgid "Standard" +msgstr "" + +#: ../includes/framework/base.class.php:260 +msgid "Max. Res." +msgstr "" + +#: ../includes/framework/base.class.php:279 +msgid "Original Size" +msgstr "" + +#: ../includes/framework/em-integration.class.php:32 +msgid "All Events" +msgstr "" + +#: ../includes/framework/em-integration.class.php:33 +msgid "Today" +msgstr "" + +#: ../includes/framework/em-integration.class.php:34 +msgid "Tomorrow" +msgstr "" + +#: ../includes/framework/em-integration.class.php:35 +msgid "Future" +msgstr "" + +#: ../includes/framework/em-integration.class.php:36 +msgid "Past" +msgstr "" + +#: ../includes/framework/em-integration.class.php:37 +msgid "This Month" +msgstr "" + +#: ../includes/framework/em-integration.class.php:38 +msgid "Next Month" +msgstr "" + +#: ../includes/framework/em-integration.class.php:168 +msgid "Event Start Date" +msgstr "" + +#: ../includes/framework/em-integration.class.php:169 +msgid "Event End Date" +msgstr "" + +#: ../includes/framework/functions-wordpress.class.php:886 +#, php-format +msgid "View all posts in %s" +msgstr "" + +#: ../includes/framework/wpml.class.php:46 ../includes/framework/wpml.class.php:162 +msgid "All Languages" +msgstr "" diff --git a/plugins/revslider/languages/revslider-hu_HU.mo b/plugins/revslider/languages/revslider-hu_HU.mo new file mode 100644 index 0000000..df00060 Binary files /dev/null and b/plugins/revslider/languages/revslider-hu_HU.mo differ diff --git a/plugins/revslider/languages/revslider-hu_HU.po b/plugins/revslider/languages/revslider-hu_HU.po new file mode 100644 index 0000000..eab4fd9 --- /dev/null +++ b/plugins/revslider/languages/revslider-hu_HU.po @@ -0,0 +1,7625 @@ +msgid "" +msgstr "" +"Project-Id-Version: Revolution Slider\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: Mon Jul 13 2015 10:02:33 GMT+0200 (CEST)\n" +"PO-Revision-Date: Wed Aug 05 2015 12:50:32 GMT+0200 (CEST)\n" +"Last-Translator: admin \n" +"Language-Team: \n" +"Language: Hungarian\n" +"Plural-Forms: nplurals=2; plural=n != 1\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-Basepath: .\n" +"X-Poedit-SearchPath-0: ..\n" +"X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;" +"__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;" +"_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;" +"esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;" +"esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n" +"X-Loco-Target-Locale: hu_HU\n" +"X-Generator: Loco - https://localise.biz/" + +#: ../admin/revslider-admin.class.php:236 ../admin/views/templates/slide-selector. +#: php:227 ../admin/views/templates/slides-list.php:146 +msgid "Copy / Move" +msgstr "Copy / Move" + +#: ../admin/views/slide-editor.php:419 +msgid "Flickr Placeholders:" +msgstr "Flickr Helyhalto:" + +#: ../admin/views/slide-editor.php:440 +msgid "Instagram Placeholders:" +msgstr "Instagram Helyhalto:" + +#: ../admin/views/slide-editor.php:462 +msgid "Twitter Placeholders:" +msgstr "" +"Twitter\n" +" Helyhalto:" + +#: ../admin/views/slide-editor.php:469 +msgid "Retweet Count" +msgstr "Retweet Szama" + +#: ../admin/views/slide-editor.php:470 +msgid "Favorite Count" +msgstr "Favori Szama" + +#: ../admin/views/slide-editor.php:484 +msgid "Facebook Placeholders:" +msgstr "" +"Facebook\n" +" Helyhalto:" + +#: ../admin/views/slide-editor.php:506 +msgid "YouTube Placeholders:" +msgstr "" +"YouTube\n" +" Helyhalto:" + +#: ../admin/views/slide-editor.php:526 +msgid "Vimeo Placeholders:" +msgstr "" +"Vimeo\n" +" Helyhalto:" + +#: ../admin/views/slider-overview.php:76 +msgid "Revolution Sliders" +msgstr "Revolution Sliderek" + +#: ../admin/views/slider-overview.php:279 ../admin/views/templates/slider-main- +#: options.php:3721 ../admin/views/templates/template-selector.php:256 .. +#: admin/views/templates/template-slider-selector.php:241 +msgid "ignore" +msgstr "mellőz" + +#: ../admin/views/templates/slide-stage.php:68 +msgid "Save Static Styles" +msgstr "Statikus Stilusok Mentese" + +#: ../admin/views/templates/slide-stage.php:69 +msgid "Overwrite current static styles?" +msgstr "Felülirja az aktualis Statikus Stilusokat?" + +#: ../admin/views/templates/slide-stage.php:76 +msgid "Caption Style" +msgstr "Layer Stilus" + +#: ../admin/views/templates/slide-stage.php:77 +msgid "Style Template" +msgstr "Stilus Sablon" + +#: ../admin/views/templates/slide-stage.php:79 +msgid "More Style Settings" +msgstr "További beállítások" + +#: ../admin/views/templates/slide-stage.php:80 +msgid "Reset Style Template" +msgstr "" +"Stilus \n" +"Sablon\n" +" Visszaállítása" + +#: ../admin/views/templates/slide-stage.php:84 +msgid "Style Options" +msgstr "Stilus Opciok" + +#: ../admin/views/templates/slide-stage.php:85 ../admin/views/templates/slide- +#: stage.php:700 ../admin/views/templates/slide-stage.php:875 +msgid "Save" +msgstr "Mentés" + +#: ../admin/views/templates/slide-stage.php:87 ../admin/views/templates/slide- +#: stage.php:702 ../admin/views/templates/slide-stage.php:877 +msgid "Rename" +msgstr "Atnevezés" + +#: ../admin/views/templates/slide-stage.php:88 ../admin/views/templates/slide- +#: stage.php:703 ../admin/views/templates/slide-stage.php:878 +msgid "Reset" +msgstr "Visszaállítás" + +#: ../admin/views/templates/slide-stage.php:99 +msgid "Font Size (px)" +msgstr "Font Meret (px)" + +#: ../admin/views/templates/slide-stage.php:100 ../admin/views/templates/slide- +#: stage.php:2220 +msgid "Font Size" +msgstr "Font Meret" + +#: ../admin/views/templates/slide-stage.php:105 +msgid "Line Height (px)" +msgstr "Sormagasság (px)" + +#: ../admin/views/templates/slide-stage.php:106 ../admin/views/templates/slide- +#: stage.php:2221 +msgid "Line Height" +msgstr "sormagasság" + +#: ../admin/views/templates/slide-stage.php:112 +msgid "White Space" +msgstr "White Space" + +#: ../admin/views/templates/slide-stage.php:126 +msgid "Layer Align Left" +msgstr "" +"Layer \n" +"Balra igazítás" + +#: ../admin/views/templates/slide-stage.php:127 +msgid "Layer Align Center" +msgstr "Layer Közepre igazítás" + +#: ../admin/views/templates/slide-stage.php:128 +msgid "Layer Align Right" +msgstr "Layer Jobbra igazítás" + +#: ../admin/views/templates/slide-stage.php:135 ../admin/views/templates/slide- +#: stage.php:136 +msgid "Horizontal Offset from Aligned Position (px)" +msgstr "Vízszintes Eltolás a kiigazított helyzetben ( px )" + +#: ../admin/views/templates/slide-stage.php:140 ../admin/views/templates/slide- +#: stage.php:141 +msgid "Vertical Offset from Aligned Position (px)" +msgstr "Függöleges Eltolás a kiigazított helyzetben ( px )" + +#: ../admin/views/templates/slide-stage.php:164 ../admin/views/templates/slide- +#: stage.php:165 ../admin/views/templates/slide-stage.php:2222 +msgid "Font Weight" +msgstr "Font vastagsag" + +#: ../admin/views/templates/slide-stage.php:179 ../admin/views/templates/slide- +#: stage.php:180 ../admin/views/templates/slide-stage.php:522 .. +#: admin/views/templates/slide-stage.php:523 ../admin/views/templates/slider- +#: main-options.php:2127 ../admin/views/templates/slider-main-options.php:2260 .. +#: admin/views/templates/slider-main-options.php:2364 +msgid "Font Color" +msgstr "Font Szin" + +#: ../admin/views/templates/slide-stage.php:186 +msgid "Layer Align Top" +msgstr "Layer igazitas felülre" + +#: ../admin/views/templates/slide-stage.php:187 +msgid "Layer Align Middle" +msgstr "Layer igazitas közepre" + +#: ../admin/views/templates/slide-stage.php:188 +msgid "Layer Align Bottom" +msgstr "Layer igazitas alulra" + +#: ../admin/views/templates/slide-stage.php:194 ../admin/views/templates/slide- +#: stage.php:195 ../admin/views/templates/slide-stage.php:196 +msgid "Layer Width (px). Use 'auto' to respect White Space" +msgstr "" +"Layer szélessége ( px ) . Használj \"auto-t\" , hogy \n" +"tiszteletben \n" +"tartsa a White Space-t" + +#: ../admin/views/templates/slide-stage.php:197 +msgid "Video Width (px). Use 'auto' to respect White Space" +msgstr "" +"Video szélessége ( px ) . Használj \"auto-t\" , hogy \n" +"tiszteletben \n" +"tartsa a White Space-t" + +#: ../admin/views/templates/slide-stage.php:200 ../admin/views/templates/slide- +#: stage.php:201 +msgid "Layer Height (px). Use 'auto' to respect White Space" +msgstr "" +"Layer magassaga ( px ) . Használj \"auto-t\" , hogy \n" +"tiszteletben \n" +"tartsa a White Space-t" + +#: ../admin/views/templates/slide-stage.php:202 +msgid "Layer Height (px) Use 'auto' to respect White Space" +msgstr "" +"Layer magassaga ( px ) . Használj \"auto-t\" , hogy \n" +"tiszteletben \n" +"tartsa a White Space-t" + +#: ../admin/views/templates/slide-stage.php:203 +msgid "Video Height (px). Use 'auto' to respect White Space" +msgstr "" +"Video magassaga ( px ) . Használj \"auto-t\" , hogy \n" +"tiszteletben \n" +"tartsa a White Space-t" + +#: ../admin/views/templates/slide-stage.php:206 +msgid "Cover Mode" +msgstr "Fedö Mod" + +#: ../admin/views/templates/slide-stage.php:217 +msgid "Auto Linebreak (on/off - White Space:normal / nowrap). " +msgstr "Automatikus Sortöres (on/off - White Space: normal/nowrap)" + +#: ../admin/views/templates/slide-stage.php:222 +msgid "Keep Aspect Ratio (on/off)" +msgstr "" +"Oldalviszony\n" +" megtartasa (on/off)" + +#: ../admin/views/templates/slide-stage.php:227 +msgid "Reset original size" +msgstr "" +"Original \n" +"méret visszaállítása" + +#: ../admin/views/templates/slide-stage.php:242 ../admin/views/templates/slide- +#: stage.php:510 ../admin/views/templates/slider-main-options.php:4509 +msgid "Font" +msgstr "Font" + +#: ../admin/views/templates/slide-stage.php:243 ../admin/views/templates/slide- +#: stage.php:511 ../admin/views/templates/slide-stage.php:1975 .. +#: admin/views/templates/slide-stage.php:2041 ../admin/views/templates/slide- +#: stage.php:2123 +msgid "Background" +msgstr "Hatter" + +#: ../admin/views/templates/slide-stage.php:245 ../admin/views/templates/slide- +#: stage.php:513 +msgid "Transform" +msgstr "Transzform" + +#: ../admin/views/templates/slide-stage.php:246 ../admin/views/templates/slide- +#: stage.php:514 ../admin/views/templates/slide-stage.php:752 .. +#: admin/views/templates/slide-stage.php:928 ../admin/views/templates/slider- +#: main-options.php:3304 +msgid "Rotation" +msgstr "Forgatas" + +#: ../admin/views/templates/slide-stage.php:247 ../admin/views/templates/slide- +#: stage.php:757 ../admin/views/templates/slide-stage.php:933 +msgid "Perspective" +msgstr "Perspektive" + +#: ../admin/views/templates/slide-stage.php:249 +msgid "Corners" +msgstr "Sarkak" + +#: ../admin/views/templates/slide-stage.php:251 ../admin/views/templates/slide- +#: stage.php:641 +msgid "Hover" +msgstr "Hover" + +#: ../admin/views/templates/slide-stage.php:257 ../admin/views/templates/slide- +#: stage.php:258 +msgid "Font Opacity" +msgstr "Font Opacity" + +#: ../admin/views/templates/slide-stage.php:262 +msgid "Italic Font" +msgstr "Dölt Betü" + +#: ../admin/views/templates/slide-stage.php:263 +msgid "Italic Font On/Off" +msgstr "Dölt Betü on/off" + +#: ../admin/views/templates/slide-stage.php:267 ../admin/views/templates/slide- +#: stage.php:268 ../admin/views/templates/slide-stage.php:531 .. +#: admin/views/templates/slide-stage.php:532 +msgid "Font Decoration" +msgstr "Font dekoraciok" + +#: ../admin/views/templates/slide-stage.php:278 ../admin/views/templates/slide- +#: stage.php:279 +msgid "Text Align" +msgstr "Szöveg igazítása" + +#: ../admin/views/templates/slide-stage.php:281 ../admin/views/templates/slider- +#: main-options.php:2317 ../admin/views/templates/slider-main-options.php:2532 .. +#: admin/views/templates/slider-main-options.php:2541 .. +#: admin/views/templates/slider-main-options.php:2561 .. +#: admin/views/templates/slider-main-options.php:2571 .. +#: admin/views/templates/slider-main-options.php:2676 .. +#: admin/views/templates/slider-main-options.php:2684 .. +#: admin/views/templates/slider-main-options.php:2846 .. +#: admin/views/templates/slider-main-options.php:2854 .. +#: admin/views/templates/slider-main-options.php:3014 .. +#: admin/views/templates/slider-main-options.php:3022 .. +#: admin/views/templates/slider-main-options.php:3349 .. +#: admin/views/templates/slider-main-options.php:3357 +msgid "Center" +msgstr "Közep" + +#: ../admin/views/templates/slide-stage.php:290 ../admin/views/templates/slide- +#: stage.php:291 ../admin/views/templates/slide-stage.php:542 .. +#: admin/views/templates/slide-stage.php:543 +msgid "Background Color" +msgstr "Hatter szine" + +#: ../admin/views/templates/slide-stage.php:295 ../admin/views/templates/slide- +#: stage.php:296 ../admin/views/templates/slide-stage.php:547 .. +#: admin/views/templates/slide-stage.php:548 +msgid "Background Opacity" +msgstr "Hatter Atlathatosag" + +#: ../admin/views/templates/slide-stage.php:300 ../admin/views/templates/slide- +#: stage.php:2190 ../admin/views/templates/slide-stage.php:2192 +msgid "Padding" +msgstr "Padding" + +#: ../admin/views/templates/slide-stage.php:301 ../admin/views/templates/slide- +#: stage.php:2193 ../admin/views/templates/slider-main-options.php:3259 +msgid "Padding Top" +msgstr "Padding felül" + +#: ../admin/views/templates/slide-stage.php:302 ../admin/views/templates/slide- +#: stage.php:2194 +msgid "Padding Right" +msgstr "Padding jobbra" + +#: ../admin/views/templates/slide-stage.php:303 ../admin/views/templates/slide- +#: stage.php:2195 ../admin/views/templates/slider-main-options.php:3262 +msgid "Padding Bottom" +msgstr "Padding lenn" + +#: ../admin/views/templates/slide-stage.php:304 ../admin/views/templates/slide- +#: stage.php:2196 +msgid "Padding Left" +msgstr "Padding balra" + +#: ../admin/views/templates/slide-stage.php:310 ../admin/views/templates/slide- +#: stage.php:311 ../admin/views/templates/slide-stage.php:553 .. +#: admin/views/templates/slide-stage.php:554 ../admin/views/templates/slide- +#: stage.php:2008 ../admin/views/templates/slide-stage.php:2073 .. +#: admin/views/templates/slide-stage.php:2140 +msgid "Border Color" +msgstr "Keret szine" + +#: ../admin/views/templates/slide-stage.php:315 ../admin/views/templates/slide- +#: stage.php:316 ../admin/views/templates/slide-stage.php:557 .. +#: admin/views/templates/slide-stage.php:558 ../admin/views/templates/slide- +#: stage.php:2012 ../admin/views/templates/slide-stage.php:2013 .. +#: admin/views/templates/slide-stage.php:2077 ../admin/views/templates/slide- +#: stage.php:2078 ../admin/views/templates/slide-stage.php:2144 .. +#: admin/views/templates/slide-stage.php:2145 +msgid "Border Opacity" +msgstr "Keret Atlathatosag" + +#: ../admin/views/templates/slide-stage.php:320 ../admin/views/templates/slide- +#: stage.php:321 ../admin/views/templates/slide-stage.php:564 .. +#: admin/views/templates/slide-stage.php:565 +msgid "Border Style" +msgstr "Keret Stilusa" + +#: ../admin/views/templates/slide-stage.php:331 ../admin/views/templates/slide- +#: stage.php:332 ../admin/views/templates/slide-stage.php:575 .. +#: admin/views/templates/slide-stage.php:576 ../admin/views/templates/slide- +#: stage.php:2017 ../admin/views/templates/slide-stage.php:2018 .. +#: admin/views/templates/slide-stage.php:2082 ../admin/views/templates/slide- +#: stage.php:2083 ../admin/views/templates/slide-stage.php:2149 .. +#: admin/views/templates/slide-stage.php:2150 +msgid "Border Width" +msgstr "Border szelessege" + +#: ../admin/views/templates/slide-stage.php:336 ../admin/views/templates/slide- +#: stage.php:580 +msgid "Border Radius (px)" +msgstr "Border sugar (px)" + +#: ../admin/views/templates/slide-stage.php:337 ../admin/views/templates/slide- +#: stage.php:581 +msgid "Border Radius Top Left" +msgstr "Bal felső keret sugara" + +#: ../admin/views/templates/slide-stage.php:338 ../admin/views/templates/slide- +#: stage.php:582 +msgid "Border Radius Top Right" +msgstr "Jobb felső keret sugara" + +#: ../admin/views/templates/slide-stage.php:339 ../admin/views/templates/slide- +#: stage.php:583 +msgid "Border Radius Bottom Right" +msgstr "Jobb alsó keret sugara" + +#: ../admin/views/templates/slide-stage.php:340 ../admin/views/templates/slide- +#: stage.php:584 +msgid "Border Radius Bottom Left" +msgstr "Bal alsó keret sugara" + +#: ../admin/views/templates/slide-stage.php:346 ../admin/views/templates/slide- +#: stage.php:347 ../admin/views/templates/slide-stage.php:614 .. +#: admin/views/templates/slide-stage.php:615 +msgid "Rotation on X axis (+/-)" +msgstr "Forgatás az X tengelyen ( +/- )" + +#: ../admin/views/templates/slide-stage.php:350 ../admin/views/templates/slide- +#: stage.php:351 ../admin/views/templates/slide-stage.php:618 .. +#: admin/views/templates/slide-stage.php:619 +msgid "Rotation on Y axis (+/-)" +msgstr "Forgatás az Y tengelyen ( +/- )" + +#: ../admin/views/templates/slide-stage.php:355 ../admin/views/templates/slide- +#: stage.php:356 ../admin/views/templates/slide-stage.php:623 .. +#: admin/views/templates/slide-stage.php:624 +msgid "Rotation on Z axis (+/-)" +msgstr "Forgatás a Z tengelyen ( +/- )" + +#: ../admin/views/templates/slide-stage.php:360 ../admin/views/templates/slide- +#: stage.php:361 +msgid "Horizontal Origin" +msgstr "Vízszintes Origin" + +#: ../admin/views/templates/slide-stage.php:364 ../admin/views/templates/slide- +#: stage.php:365 +msgid "Vertical Origin" +msgstr "Függőleges Origin\n" + +#: ../admin/views/templates/slide-stage.php:371 ../admin/views/templates/slide- +#: stage.php:589 +#, php-format +msgid "Opacity. (1 = 100% Visible / 0.5 = 50% opacaity / 0 = transparent)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:372 ../admin/views/templates/slide- +#: stage.php:590 +#, php-format +msgid "Opacity (1 = 100% Visible / 0.5 = 50% opacaity / 0 = transparent)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:376 ../admin/views/templates/slide- +#: stage.php:377 ../admin/views/templates/slide-stage.php:594 .. +#: admin/views/templates/slide-stage.php:595 +msgid "X Scale 1 = 100%, 0.5=50%... (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:381 ../admin/views/templates/slide- +#: stage.php:382 ../admin/views/templates/slide-stage.php:598 .. +#: admin/views/templates/slide-stage.php:599 +msgid "Y Scale 1 = 100%, 0.5=50%... (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:386 ../admin/views/templates/slide- +#: stage.php:387 ../admin/views/templates/slide-stage.php:603 .. +#: admin/views/templates/slide-stage.php:604 +msgid "X Skew (+/- px)" +msgstr "X megdönteni ( +/- px )" + +#: ../admin/views/templates/slide-stage.php:391 ../admin/views/templates/slide- +#: stage.php:392 ../admin/views/templates/slide-stage.php:607 .. +#: admin/views/templates/slide-stage.php:608 +msgid "Y Skew (+/- px)" +msgstr "Y megdönteni ( +/- px )" + +#: ../admin/views/templates/slide-stage.php:398 ../admin/views/templates/slide- +#: stage.php:630 +msgid "Template" +msgstr "Sablon" + +#: ../admin/views/templates/slide-stage.php:399 ../admin/views/templates/slide- +#: stage.php:631 ../admin/views/templates/slider-main-options.php:971 .. +#: admin/views/templates/slider-main-options.php:1002 .. +#: admin/views/templates/slider-main-options.php:1035 .. +#: admin/views/templates/slider-main-options.php:1069 +msgid "Layer" +msgstr "Layer" + +#: ../admin/views/templates/slide-stage.php:407 +msgid "Layer Hover" +msgstr "Layer Hover" + +#: ../admin/views/templates/slide-stage.php:413 ../admin/views/templates/slide- +#: stage.php:414 +msgid "Hover Animation Speed (in ms)" +msgstr "Hover animacio sebessege (ms)" + +#: ../admin/views/templates/slide-stage.php:419 ../admin/views/templates/slide- +#: stage.php:420 +msgid "Hover Animation Easing" +msgstr "Hover Animacio Ease" + +#: ../admin/views/templates/slide-stage.php:430 ../admin/views/templates/slide- +#: stage.php:431 +msgid "Mouse Cursor" +msgstr "Eger Kurzor" + +#: ../admin/views/templates/slide-stage.php:447 ../admin/views/templates/slide- +#: stage.php:448 +msgid "Animation Perspective (default 600)" +msgstr "Animacio Perspektive (alap:600)" + +#: ../admin/views/templates/slide-stage.php:452 ../admin/views/templates/slide- +#: stage.php:453 +msgid "Z Offset (+/- px)" +msgstr "Z Eltolas (+/- px)" + +#: ../admin/views/templates/slide-stage.php:459 +msgid "Parallax Depth Level." +msgstr "Parallax Melyseg Szint." + +#: ../admin/views/templates/slide-stage.php:487 +msgid "Sharp Left" +msgstr "Elesen balra" + +#: ../admin/views/templates/slide-stage.php:490 ../admin/views/templates/slide- +#: stage.php:499 +msgid "No Corner" +msgstr "Nincs sarok" + +#: ../admin/views/templates/slide-stage.php:491 ../admin/views/templates/slide- +#: stage.php:500 +msgid "Sharp" +msgstr "Elesseg" + +#: ../admin/views/templates/slide-stage.php:492 ../admin/views/templates/slide- +#: stage.php:501 +msgid "Sharp Reversed" +msgstr "Elesseg visszafele" + +#: ../admin/views/templates/slide-stage.php:496 +msgid "Sharp Right" +msgstr "Elesen jobbra" + +#: ../admin/views/templates/slide-stage.php:527 ../admin/views/templates/slide- +#: stage.php:528 +msgid "Font Hover Opacity" +msgstr "Font Hover Opacity" + +#: ../admin/views/templates/slide-stage.php:640 +msgid "Idle" +msgstr "Tetlen allapot" + +#: ../admin/views/templates/slide-stage.php:645 +msgid "COPY" +msgstr "Másol" + +#: ../admin/views/templates/slide-stage.php:647 +msgid "Copy From Idle" +msgstr "Másol tetlen allapotbol" + +#: ../admin/views/templates/slide-stage.php:648 +msgid "Copy From Hover" +msgstr "Másol Hover allapotbol" + +#: ../admin/views/templates/slide-stage.php:649 +msgid "Copy From In Animation" +msgstr "Másol a bejövö Animaciobol" + +#: ../admin/views/templates/slide-stage.php:650 +msgid "Copy From Out Animation" +msgstr "Masol a kimeno Animaciobol" + +#: ../admin/views/templates/slide-stage.php:667 +msgid "Hover CSS" +msgstr "Hover CSS" + +#: ../admin/views/templates/slide-stage.php:684 ../admin/views/templates/slide- +#: stage.php:856 ../admin/views/templates/slider-main-options.php:1397 +msgid "Advanced Settings" +msgstr "Speciális beállítások" + +#: ../admin/views/templates/slide-stage.php:688 ../admin/views/templates/slide- +#: stage.php:689 ../admin/views/templates/slide-stage.php:863 .. +#: admin/views/templates/slide-stage.php:864 +msgid "Animation Template" +msgstr "Animacio Sablon" + +#: ../admin/views/templates/slide-stage.php:699 ../admin/views/templates/slide- +#: stage.php:874 +msgid "Template Options" +msgstr "Sablon Opciok" + +#: ../admin/views/templates/slide-stage.php:711 ../admin/views/templates/slide- +#: stage.php:712 ../admin/views/templates/slide-stage.php:888 .. +#: admin/views/templates/slide-stage.php:889 +msgid "Animation Easing" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:722 ../admin/views/templates/slide- +#: stage.php:723 ../admin/views/templates/slide-stage.php:899 .. +#: admin/views/templates/slide-stage.php:900 +msgid "Animation Speed (in ms)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:727 ../admin/views/templates/slide- +#: stage.php:728 ../admin/views/templates/slide-stage.php:904 .. +#: admin/views/templates/slide-stage.php:905 +msgid "Split Animaton Text (will not respect Html Markups !)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:729 ../admin/views/templates/slide- +#: stage.php:906 +msgid "No Split" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:730 ../admin/views/templates/slide- +#: stage.php:907 +msgid "Char Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:731 ../admin/views/templates/slide- +#: stage.php:908 +msgid "Word Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:732 ../admin/views/templates/slide- +#: stage.php:909 +msgid "Line Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:736 ../admin/views/templates/slide- +#: stage.php:737 ../admin/views/templates/slide-stage.php:913 .. +#: admin/views/templates/slide-stage.php:914 +msgid "Animation Delay between Splitted Elements" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:750 ../admin/views/templates/slide- +#: stage.php:926 +msgid "Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:753 ../admin/views/templates/slide- +#: stage.php:929 ../admin/views/templates/slider-main-options.php:3323 +msgid "Scale" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:754 ../admin/views/templates/slide- +#: stage.php:930 +msgid "Skew" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:755 ../admin/views/templates/slide- +#: stage.php:931 +msgid "Masking" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:756 ../admin/views/templates/slide- +#: stage.php:932 +msgid "Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:768 +msgid "" +"Mask is not available due Style Transitions. Please remove any Rotation, " +"Scale or skew effect form Idle and Hover settings" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1037 ../admin/views/templates/slide- +#: stage.php:1725 ../admin/views/templates/slide-stage.php:2244 +msgid "Disabled" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1038 +msgid "Pendulum" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1039 +msgid "Rotate" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1040 +msgid "Slideloop" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1041 +msgid "Pulse" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1042 +msgid "Wave" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1047 +msgid "Loop Speed (sec) - 0.3 = 300ms" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1048 +msgid "Loop Speed (ms)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1057 ../admin/views/templates/slide- +#: stage.php:1058 +msgid "Loop Easing" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1071 +msgid "Loop Parameters" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1077 ../admin/views/templates/slide- +#: stage.php:1078 +msgid "2D Rotation start deg." +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1081 ../admin/views/templates/slide- +#: stage.php:1082 +msgid "2D Rotation end deg." +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1087 ../admin/views/templates/slide- +#: stage.php:1088 +msgid "2D Rotation X Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1091 ../admin/views/templates/slide- +#: stage.php:1092 +msgid "2D Rotation Y Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1096 +msgid "Start" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1098 ../admin/views/templates/slide- +#: stage.php:1099 +msgid "Start X Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1101 ../admin/views/templates/slide- +#: stage.php:1102 +msgid "Start Y Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1106 +msgid "End" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1108 ../admin/views/templates/slide- +#: stage.php:1109 +msgid "End X Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1111 ../admin/views/templates/slide- +#: stage.php:1112 +msgid "End Y Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1117 ../admin/views/templates/slide- +#: stage.php:1119 +msgid "Zoom Start" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1121 ../admin/views/templates/slide- +#: stage.php:1123 +msgid "Zoom End" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1129 +msgid "Start Angle" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1133 +msgid "Radius" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1135 +msgid "Radius of Rotation / Pendulum" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1143 +msgid "Lazy Loading" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1146 ../admin/views/templates/slide- +#: stage.php:1155 +msgid "Default Setting" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1147 +msgid "Force Lazy Loading" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1148 +msgid "Ignore Lazy Loading" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1152 +msgid "Source Type" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1174 ../admin/views/templates/slide- +#: stage.php:2337 +msgid "Animation Timing" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1177 ../admin/views/templates/slide- +#: stage.php:2340 +msgid "In and Out Animation Default" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1178 ../admin/views/templates/slide- +#: stage.php:2341 +msgid "In Animation Default and Out Animation Wait for Trigger" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1179 ../admin/views/templates/slide- +#: stage.php:2342 +msgid "Wait for Trigger" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1183 ../admin/views/templates/slide- +#: stage.php:2345 +msgid "Trigger Memory" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1186 ../admin/views/templates/slide- +#: stage.php:2348 +msgid "Reset Animation and Trigger States every loop" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1187 ../admin/views/templates/slide- +#: stage.php:2349 +msgid "Keep last selected State" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1227 +msgid "ID" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1234 +msgid "Classes" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1248 +msgid "Rel" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1256 +msgid "Alt" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1269 +msgid "Internal Classes:" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1285 +msgid "Layer Type:" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1305 +msgid "Visibility on Devices" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1327 +msgid "Hide 'Under' Width" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1333 +msgid "Only on Slider Hover" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1351 +msgid "Auto Responsive" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1357 +msgid "Child Elements Responsive" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1363 +msgid "Align" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1366 +msgid "Grid Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1367 +msgid "Slide Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1372 +msgid "Responsive Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1396 +msgid "Static Layers will be shown on every slide in template sliders" +msgstr "A Statikus Layerek lathatoak minden Slide-jan a Sablon Slidernek" + +#: ../admin/views/templates/slide-stage.php:1403 +msgid "Start on Slide" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1428 +msgid "End on Slide" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1525 +msgid "Image Layer Title " +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1525 +msgid "(only for internal usage):" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1542 +msgid "Add a New Layer" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1545 +msgid "Text/Html" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1546 +msgid "Image" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1547 +msgid "Video" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1548 +msgid "Button" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1549 +msgid "Shape" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1555 +msgid "Quick Layer Selector" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1563 +msgid "Slide contains no layers" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1624 +msgid "Delete All Layers" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1630 +msgid "Desktop" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1631 ../admin/views/templates/slider- +#: main-options.php:989 +msgid "Notebook" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1632 ../admin/views/templates/slider- +#: main-options.php:1023 +msgid "Tablet" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1633 ../admin/views/templates/slider- +#: main-options.php:1057 ../admin/views/templates/slider-main-options.php:2198 +msgid "Mobile" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1723 +msgid "Helper Grid:" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1732 +msgid "Snap to:" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1734 ../admin/views/templates/slider- +#: main-options.php:3563 ../admin/views/templates/slider-main-options.php:3660 +msgid "None" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1735 +msgid "Help Lines" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1736 +msgid "Layers" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1750 +msgid "PLAY" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1779 +msgid "DragMe" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1819 +msgid "Add Button Layer" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1825 +msgid "Click on Element to add it" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1829 +msgid "Buttons" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1831 ../admin/views/templates/slide- +#: stage.php:1832 ../admin/views/templates/slide-stage.php:1833 .. +#: admin/views/templates/slide-stage.php:1836 ../admin/views/templates/slide- +#: stage.php:1837 ../admin/views/templates/slide-stage.php:1838 .. +#: admin/views/templates/slide-stage.php:1841 ../admin/views/templates/slide- +#: stage.php:1842 ../admin/views/templates/slide-stage.php:1843 .. +#: admin/views/templates/slide-stage.php:1846 ../admin/views/templates/slide- +#: stage.php:1847 ../admin/views/templates/slide-stage.php:1848 .. +#: admin/views/templates/slide-stage.php:1851 ../admin/views/templates/slide- +#: stage.php:1852 ../admin/views/templates/slide-stage.php:1853 .. +#: admin/views/templates/slide-stage.php:1856 ../admin/views/templates/slide- +#: stage.php:1857 ../admin/views/templates/slide-stage.php:1858 +msgid "Click Here" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1860 +msgid "Predefined Elements" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1971 +msgid "Idle State" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1990 ../admin/views/templates/slide- +#: stage.php:2054 ../admin/views/templates/slide-stage.php:2219 +msgid "Color" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1993 ../admin/views/templates/slide- +#: stage.php:2058 +msgid "Color 2" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2024 +msgid "Text / Icon" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2037 +msgid "Hover State" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2090 +msgid "Text" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2103 +msgid "Add Shape Layer" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2109 +msgid "Click your Shape below to add it" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2119 +msgid "Shape Settings" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2168 ../admin/views/templates/slider- +#: main-options.php:2510 ../admin/views/templates/slider-main-options.php:2521 .. +#: admin/views/templates/slider-main-options.php:2655 .. +#: admin/views/templates/slider-main-options.php:2666 .. +#: admin/views/templates/slider-main-options.php:2812 .. +#: admin/views/templates/slider-main-options.php:2823 .. +#: admin/views/templates/slider-main-options.php:2980 .. +#: admin/views/templates/slider-main-options.php:2991 +msgid "Width" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2170 ../admin/views/templates/slider- +#: main-options.php:943 +msgid "Full-Width" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2178 +msgid "Height" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2180 +msgid "Full-Height" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2205 +msgid "Apply Styles to Selection" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2223 +msgid "Advanced Styles will alwys be applied to all Device Sizes." +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2238 +msgid "Click" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2239 +msgid "Mouse Enter" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2240 +msgid "Mouse Leave" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2245 +msgid "Simple Link" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2246 +msgid "Jump to Slide" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2247 ../admin/views/templates/slider- +#: main-options.php:3792 +msgid "Next Slide" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2248 ../admin/views/templates/slider- +#: main-options.php:3788 +msgid "Previous Slide" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2249 ../admin/views/templates/slider- +#: main-options.php:3780 +msgid "Pause Slider" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2250 +msgid "Play Slider" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2251 +msgid "Toggle Slider" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2252 +msgid "CallBack" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2253 +msgid "Scroll Below Slider" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2254 +msgid "Start Layer \"in\" Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2255 +msgid "Start Layer \"out\" Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2261 +msgid "Toggle Layer Class" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2266 +msgid "Link Url" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2270 +msgid "Link Target" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2277 +msgid "Link Type" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2280 +msgid "jQuery Link" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2281 +msgid "a Tag Link" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2287 +msgid "Jump To" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2296 +msgid "Scroll Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2303 +msgid "Function" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2309 +msgid "Target" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2313 +msgid "Delay" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2315 ../admin/views/templates/slider- +#: main-options.php:1763 ../admin/views/templates/slider-main-options.php:1769 .. +#: admin/views/templates/slider-main-options.php:1788 .. +#: admin/views/templates/slider-main-options.php:2032 .. +#: admin/views/templates/slider-main-options.php:2038 .. +#: admin/views/templates/slider-main-options.php:2496 .. +#: admin/views/templates/slider-main-options.php:2501 .. +#: admin/views/templates/slider-main-options.php:2641 .. +#: admin/views/templates/slider-main-options.php:2646 .. +#: admin/views/templates/slider-main-options.php:2798 .. +#: admin/views/templates/slider-main-options.php:2803 .. +#: admin/views/templates/slider-main-options.php:2967 .. +#: admin/views/templates/slider-main-options.php:2971 .. +#: admin/views/templates/slider-main-options.php:3461 +msgid "ms" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2320 +msgid "at Start" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2322 +msgid "Play In Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2323 +msgid "Keep Hidden" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2330 +msgid "Class" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:32 +msgid "Edit Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:32 .. +#: admin/views/templates/sliders-list.php:184 +msgid "New Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:45 +msgid "Content Source" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:52 +msgid "Default Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:57 +msgid "Post-Based Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:62 +msgid "Specific Posts" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:67 +msgid "Flickr Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:72 +msgid "Instagram Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:77 +msgid "Woo Commerce Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:82 +msgid "Twitter Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:87 +msgid "Facebook Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:92 +msgid "YouTube Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:97 +msgid "Vimeo Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:113 +msgid "Coming Soon!" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:121 +msgid "Slides (max 33)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:122 .. +#: admin/views/templates/slider-main-options.php:143 +msgid "Display this number of photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:124 .. +#: admin/views/templates/slider-main-options.php:260 +msgid "Access Token" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:125 +msgid "Put in your Instagram Access Token" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:128 +msgid "" +"Get your Instagram Access Token here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:132 +msgid "Instagram User ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:133 +msgid "Put in the Instagram User ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:135 +msgid "" +"Find the Instagram User ID here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:142 .. +#: admin/views/templates/slider-main-options.php:229 +msgid "Slides (max 500)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:145 +msgid "Flickr API Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:146 +msgid "Put in your Flickr API Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:148 +msgid "" +"Read here how to receive your Flickr API key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:153 +msgid "Display a user's public photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:153 +msgid "User Public Photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:154 +msgid "Display a certain photoset from a user" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:154 +msgid "User Photoset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:155 +msgid "Display a gallery" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:156 +msgid "Display a group's photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:156 +msgid "Groups' Photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:160 +msgid "Flickr User Url" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:161 +msgid "Put in the URL of the flickr User" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:166 +msgid "Select Photoset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:168 +msgid "Select the photoset to pull the data from " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:174 +msgid "Flickr Gallery Url" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:175 +msgid "Put in the URL of the flickr Gallery" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:180 +msgid "Flickr Group Url" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:181 +msgid "Put in the URL of the flickr Group" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:189 +msgid "Slides (max 25)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:190 +msgid "Display this number of posts" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:192 .. +#: admin/views/templates/slider-main-options.php:232 +msgid "Cache (sec)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:193 .. +#: admin/views/templates/slider-main-options.php:233 +msgid "Cache the stream for x seconds" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:197 +msgid "Facebook Page" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:198 +msgid "Put in the URL/ID of the Facebook page" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:204 .. +#: admin/views/templates/slider-main-options.php:312 +msgid "Album" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:205 +msgid "Timeline" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:210 +msgid "Select Album" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:212 +msgid "Select the album to pull the data from " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:217 +msgid "App ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:218 +msgid "Put in the Facebook App ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:221 +msgid "App Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:222 +msgid "Put in the Facebook App secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:230 +msgid "Display this number of tweets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:236 +msgid "Twitter Name @" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:237 +msgid "Put in the Twitter Account to stream from" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:240 +msgid "Text Tweets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:244 +msgid "Retweets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:248 +msgid "Replies" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:253 +msgid "Consumer Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:254 +msgid "Put in your Twitter Consumer Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:256 +msgid "Consumer Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:257 +msgid "Put in your Twitter Consumer Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:261 +msgid "Put in your Twitter Access Token" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:264 +msgid "Access Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:265 +msgid "Put in your Twitter Access Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:267 +msgid "" +"Please register " +"your application with Twitter to get the values" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:273 +msgid "Slides (max 50)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:274 .. +#: admin/views/templates/slider-main-options.php:307 +msgid "Display this number of videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:276 +msgid "Youtube API Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:277 +msgid "Put in your YouTube API Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:280 +msgid "" +"Find information about the YouTube API key here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:283 +msgid "Channel ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:284 +msgid "Put in the ID of the YouTube channel" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:288 +msgid "Display the channel´s videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:288 .. +#: admin/views/templates/slider-main-options.php:314 .. +#: admin/views/templates/slider-main-options.php:332 +msgid "Channel" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:289 +msgid "Display a playlist" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:289 +msgid "Playlist" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:294 +msgid "Select Playlist" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:300 +msgid "" +"See how to find the Youtube channel ID here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:306 +msgid "Slides (max 60)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:311 +msgid "Display the user's videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:311 .. +#: admin/views/templates/slider-main-options.php:320 +msgid "User" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:312 +msgid "Display an album" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:313 +msgid "Display a group's videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:313 .. +#: admin/views/templates/slider-main-options.php:324 +msgid "Group" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:314 +msgid "Display a channel's videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:321 +msgid "Either the shortcut URL or ID of the user" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:325 +msgid "Either the shortcut URL or ID of the group" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:328 +msgid "Album ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:329 +msgid "The ID of the album" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:333 +msgid "Either the shortcut URL of the channel" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:341 +msgid "Specific Posts List:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:345 +msgid "Post Types:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:389 +msgid "Post Categories:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:415 +msgid "Filter Events By:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:429 +msgid "Sort Posts By:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:431 +msgid "Post ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:432 +msgid "Date" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:434 +msgid "Slug" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:435 +msgid "Author" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:436 +msgid "Last Modified" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:437 +msgid "Number Of Comments" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:438 +msgid "Random" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:439 +msgid "Unsorted" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:440 +msgid "Custom Order" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:456 +msgid "Sort Direction:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:459 +msgid "Descending" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:461 +msgid "Ascending" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:465 +msgid "Max Posts Per Slider:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:469 +msgid "Limit The Excerpt To:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:481 +msgid "Slider Title & ShortCode" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:486 +msgid "Enter your Slider Name here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:488 +msgid "The title of the slider, example: Slider 1" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:492 +msgid "Enter your Slider Alias here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:494 +msgid "The alias for embedding your slider, example: slider1" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:500 +msgid "Place the shortcode where you want to show the slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:514 +msgid "Select a Slider Type" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:519 +msgid "Standard Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:524 +msgid "Hero Scene" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:529 +msgid "Carousel Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:533 +msgid "Load a Preset from this Slider Type" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:544 +msgid "Save Current Settings as Preset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:929 +msgid "Slide Layout" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:948 +msgid "Full-Screen" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:958 +msgid "Desktop Large" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:958 +msgid "Max" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:979 .. +#: admin/views/templates/slider-main-options.php:1010 .. +#: admin/views/templates/slider-main-options.php:1043 .. +#: admin/views/templates/slider-main-options.php:1078 +msgid "Layer Grid Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:984 +msgid "Specify a layer grid size above" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1015 .. +#: admin/views/templates/slider-main-options.php:1048 .. +#: admin/views/templates/slider-main-options.php:1083 +msgid "Custom Grid Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1092 +msgid "Show Advanced Size Options" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1099 +msgid "FullScreen Align Force" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1101 +msgid "Layers align within the full slider instead of the layer grid." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1105 +msgid "Increase/Decrease Fullscreen Height" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1110 +msgid "Containers" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1112 +msgid "" +"Example: #header or .header, .footer, #somecontainer | Height of Slider will " +"be decreased with the height of these Containers to fit perfect in the " +"screen." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1118 +msgid "PX or %" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1120 +msgid "" +"Decrease/Increase height of Slider. Can be used with px and %. " +"Positive/Negative values allowed. Example: 40px or 10%" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1126 .. +#: admin/views/templates/slider-main-options.php:1150 +msgid "Min. Height" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1128 +msgid "The minimum height of the Slider in FullScreen mode." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1136 +msgid "Overflow Hidden" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1139 +msgid "" +"Adds overflow:hidden to the slider wrapping container which will hide / cut " +"any overlapping elements. Mostly used in Carousel Sliders." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1143 +msgid "Respect Aspect Ratio" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1146 +msgid "" +"It will keep aspect ratio and ignore max height of Layer Grid by upscaling. " +"Layer Area will be vertical centered." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1152 +msgid "The minimum height of the Slider in FullWidth or Auto mode." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1346 +msgid "Force Full Width:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1392 +msgid "Customize, Build & Implement" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1398 +msgid "" +"Go for further customization using the advanced settings on the right of " +"this configuration page." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1400 +msgid "Scroll to Options" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1405 +msgid "Start Building Slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1406 +msgid "" +"Our drag and drop editor will make creating slide content an absolut breeze. " +"This is where the magic happens!" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1411 .. +#: admin/views/templates/slider-main-options.php:4443 .. +#: admin/views/templates/slides.php:8 +msgid "Edit Slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1419 +msgid "Implement your Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1420 +msgid "" +"There are several ways to add your slider to your wordpress post / page / " +"etc." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1423 .. +#: admin/views/templates/sliders-list.php:144 +msgid "Embed Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1429 .. +#: admin/views/templates/slider-main-options.php:4429 +msgid "Save Settings" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1430 .. +#: admin/views/templates/slider-main-options.php:4430 +msgid "updating..." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1432 .. +#: admin/views/templates/slider-main-options.php:4434 +msgid "Delete Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1434 +msgid "Preview Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1470 +msgid "Custom CSS / Javascript" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1473 +msgid "Custom CSS" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1477 +msgid "Custom JavaScript" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1729 +msgid "Slideshow" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1730 +msgid "Defaults" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1731 +msgid "Progress Bar" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1732 +msgid "1st Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1733 .. +#: admin/views/templates/slider-main-options.php:2458 +msgid "Misc." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1743 +msgid "" +"Show multi language controls across the slider. Only available when wpml " +"plugin exists." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1743 +msgid "Use Multi Language (WPML)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1752 +msgid "" +"Call next slide when inactive browser tab is focused again. Use this for " +"avoid dissorted layers and broken timeouts after bluring the browser tab." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1752 +msgid "Next Slide on Focus" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1761 +msgid "" +"The time one slide stays on the screen in Milliseconds. This is a Default " +"Global value. Can be adjusted slide to slide also in the slide editor." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1761 +msgid "Default Slide Duration" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1767 +msgid "Sets a delay before the Slider gets initialized" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1767 +msgid "Initialization Delay" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1772 +msgid "Default transition by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1772 +msgid "Transitions" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1786 +msgid "Default transition duration by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1786 +msgid "Animation Duration" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1795 +msgid "Default main image source size by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1795 +msgid "Image Source Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1811 +msgid "Default background size by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1811 .. +#: admin/views/templates/slider-main-options.php:2276 +msgid "Background Fit" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1833 +msgid "Default background position by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1833 .. +#: admin/views/templates/slider-main-options.php:2293 +msgid "Background Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1859 +msgid "Default background repeat by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1859 .. +#: admin/views/templates/slider-main-options.php:2284 +msgid "Background Repeat" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1870 +msgid "Default Ken/Burn setting by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1881 +msgid "Start Fit: (in %):" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1958 +msgid "End Fit: (in %):" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1963 +msgid "Start Offset X:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1968 +msgid "Start Offset Y:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1973 .. +#: admin/views/templates/slider-main-options.php:1983 .. +#: admin/views/templates/slider-main-options.php:1988 +msgid "End Offset Y:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1978 +msgid "End Offset X:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1998 +msgid "Overwrite Selected Settings on all Slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2007 +msgid "" +"Start from a different slide instead of the first slide. I.e. good for " +"preview / edit mode." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2007 +msgid "Alternative 1st Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2011 +msgid "" +"If active, it will overwrite the first slide transition. Use it to get " +"special transition for the first slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2011 +msgid "First Transition Active" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2016 +msgid "First slide transition type" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2016 +msgid "Transition Type" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2030 +msgid "First slide transition duration." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2030 +msgid "Transition Duration" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2036 +msgid "The number of slots or boxes the slide is divided into." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2036 +msgid "Transition Slot Amount" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2047 +msgid "Stops the Timer when mouse is hovering the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2047 +msgid "Stop Slide On Hover" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2052 +msgid "Stops the slideshow after the predefined loop amount at the predefined slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2052 +msgid "Stop Slider After ..." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2058 +msgid "Stops the slider after certain amount of loops. 0 related to the first loop." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2058 +msgid "Amount of Loops" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2063 +msgid "Stops the slider at the given slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2063 +msgid "At Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2069 +msgid "Randomize the order of the slides at every Page reload." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2069 +msgid "Shuffle / Random Mode" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2074 +msgid "" +"If only one Slide is in the Slider, you can choose wether the Slide should " +"loop or if it should stop. If only one Slide exist, slide will be duplicated " +"!" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2074 +msgid "Loop Single Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2080 +msgid "Allow to stop the Slider out of viewport." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2080 +msgid "Stop Slider Out of ViewPort" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2085 +msgid "Out Of ViewPort:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2087 +msgid "Wait" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2088 +msgid "Pause" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2092 +msgid "Min. Size of Slider must be in Viewport before slide starts again." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2092 +msgid "Area out of ViewPort:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2094 .. +#: admin/views/templates/slider-main-options.php:2122 .. +#: admin/views/templates/slider-main-options.php:3254 .. +#: admin/views/templates/slider-main-options.php:3338 +msgid "%" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2102 +msgid "Enable / disable progress var" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2102 +msgid "Progress Bar Active" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2106 +msgid "Position of the progress bar." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2106 +msgid "Progress Bar Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2114 +msgid "The height of the progress bar" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2114 +msgid "Progress Bar Heigth" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2116 .. +#: admin/views/templates/slider-main-options.php:2217 .. +#: admin/views/templates/slider-main-options.php:2223 .. +#: admin/views/templates/slider-main-options.php:2228 .. +#: admin/views/templates/slider-main-options.php:2325 .. +#: admin/views/templates/slider-main-options.php:2331 .. +#: admin/views/templates/slider-main-options.php:2337 .. +#: admin/views/templates/slider-main-options.php:2342 .. +#: admin/views/templates/slider-main-options.php:2512 .. +#: admin/views/templates/slider-main-options.php:2523 .. +#: admin/views/templates/slider-main-options.php:2548 .. +#: admin/views/templates/slider-main-options.php:2554 .. +#: admin/views/templates/slider-main-options.php:2580 .. +#: admin/views/templates/slider-main-options.php:2586 .. +#: admin/views/templates/slider-main-options.php:2618 .. +#: admin/views/templates/slider-main-options.php:2657 .. +#: admin/views/templates/slider-main-options.php:2668 .. +#: admin/views/templates/slider-main-options.php:2691 .. +#: admin/views/templates/slider-main-options.php:2697 .. +#: admin/views/templates/slider-main-options.php:2757 .. +#: admin/views/templates/slider-main-options.php:2771 .. +#: admin/views/templates/slider-main-options.php:2776 .. +#: admin/views/templates/slider-main-options.php:2781 .. +#: admin/views/templates/slider-main-options.php:2814 .. +#: admin/views/templates/slider-main-options.php:2825 .. +#: admin/views/templates/slider-main-options.php:2861 .. +#: admin/views/templates/slider-main-options.php:2867 .. +#: admin/views/templates/slider-main-options.php:2928 .. +#: admin/views/templates/slider-main-options.php:2942 .. +#: admin/views/templates/slider-main-options.php:2947 .. +#: admin/views/templates/slider-main-options.php:2952 .. +#: admin/views/templates/slider-main-options.php:2982 .. +#: admin/views/templates/slider-main-options.php:2993 .. +#: admin/views/templates/slider-main-options.php:3029 .. +#: admin/views/templates/slider-main-options.php:3035 .. +#: admin/views/templates/slider-main-options.php:3244 .. +#: admin/views/templates/slider-main-options.php:3253 .. +#: admin/views/templates/slider-main-options.php:3260 .. +#: admin/views/templates/slider-main-options.php:3263 +msgid "px" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2120 +#, php-format +msgid "" +"The opacity of the progress bar
        (0 == Transparent, 100 = Solid color, 50 " +"= 50% opacity etc...)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2120 +msgid "Progress Bar Opacity" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2126 +msgid "Color of the progress bar." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2126 +msgid "Progress Bar Color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2190 +msgid "Layout & Visual" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2195 +msgid "Appearance" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2197 +msgid "Spinner" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2199 .. +#: admin/views/templates/slider-main-options.php:2672 .. +#: admin/views/templates/slider-main-options.php:2829 .. +#: admin/views/templates/slider-main-options.php:2997 +msgid "Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2204 +msgid "If this is enabled, the slider will not be loaded on mobile devices." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2204 +msgid "Disable Slider on Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2209 +msgid "This will disable KenBurns on mobile devices to save performance" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2209 +msgid "Disable KenBurn On Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2213 +msgid "Hide Element Under Width:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2215 +msgid "" +"Hide the slider under the defined slider width. Value 0 will disable the " +"function." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2215 .. +#: admin/views/templates/template-slider-selector.php:16 +msgid "Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2221 +msgid "" +"Hide the selected layers (set layers hide under in slide editor) under the " +"defined slider width. Value 0 will disable the function." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2221 +msgid "Predefined Layers" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2226 +msgid "" +"Hide all layers under the defined slider width. Value 0 will disable the " +"function." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2226 +msgid "All Layers" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2236 +msgid "The Shadow display underneath the banner." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2236 +msgid "Shadow Type" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2238 +msgid "No Shadow" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2248 +msgid "Show a dotted overlay over the slides." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2248 +msgid "Dotted Overlay Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2258 +msgid "Slider Background" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2259 +msgid "" +"General background color for slider. Clear value to get transparent slider " +"container." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2259 +msgid "Background color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2263 +msgid "" +"Padding around the slider. Together with background color shows as slider " +"border." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2263 +msgid "Padding as Border" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2267 +msgid "Use a general background image instead of general background color." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2267 +msgid "Show Background Image" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2272 +msgid "The source of the general background image." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2272 +msgid "Background Image Url" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2273 .. +#: admin/views/templates/slider-main-options.php:3640 +msgid "Set" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2276 +msgid "" +"General background image size. Cover - always fill the container, cuts " +"overlays. Contain- always fits image into slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2278 +msgid "cover" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2279 +msgid "contain" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2280 +msgid "normal" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2284 +msgid "General background image repeat attitude. Used for tiled images." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2286 +msgid "no-repeat" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2287 +msgid "repeat" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2288 +msgid "repeat-x" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2289 +msgid "repeat-y" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2293 +msgid "" +"General background image position. i.e. center center to always center " +"vertical and horizontal the image in the slider background." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2295 +msgid "center top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2296 +msgid "center right" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2297 +msgid "center bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2298 +msgid "center center" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2299 +msgid "left top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2300 +msgid "left center" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2301 +msgid "left bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2302 +msgid "right top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2303 +msgid "right center" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2304 +msgid "right bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2314 +msgid "" +"The position of the slider within the parrent container. (float:left or " +"float:right or with margin:0px auto;). We recomment do use always CENTER, " +"since the slider will auto fill and grow with the wrapping container. Set " +"any border,padding, floating etc. to the wrapping container where the slider " +"embeded instead of using left/right here !" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2314 +msgid "Position on the page" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2323 +msgid "The top margin of the slider wrapper div" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2323 +msgid "Margin Top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2329 +msgid "The bottom margin of the slider wrapper div" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2329 +msgid "Margin Bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2335 +msgid "The left margin of the slider wrapper div" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2335 +msgid "Margin Left" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2340 +msgid "The right margin of the slider wrapper div" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2340 +msgid "Margin Right" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2351 +msgid "Select a Spinner for your Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2351 +msgid "Choose Spinner" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2357 .. +#: admin/views/templates/slider-main-options.php:3269 +msgid "3" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2358 +msgid "4" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2359 .. +#: admin/views/templates/slider-main-options.php:3270 +msgid "5" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2363 +msgid "The Color the Spinner will be shown in" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2363 +msgid "Spinner Color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2448 +msgid "Navigation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2457 +msgid "Touch" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2463 +msgid "Enable / Disable Arrows" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2463 +msgid "Enable Arrows" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2468 +msgid "Look of the navigation Arrows" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2468 +msgid "Arrows Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2470 .. +#: admin/views/templates/slider-main-options.php:2601 .. +#: admin/views/templates/slider-main-options.php:2735 .. +#: admin/views/templates/slider-main-options.php:2907 +msgid "No Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2486 +msgid "" +"Enable to make arrows always visible. Disable to hide arrows after the " +"defined time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2486 .. +#: admin/views/templates/slider-main-options.php:2788 .. +#: admin/views/templates/slider-main-options.php:2957 +msgid "Always Show " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2488 .. +#: admin/views/templates/slider-main-options.php:2634 .. +#: admin/views/templates/slider-main-options.php:2790 .. +#: admin/views/templates/slider-main-options.php:2959 +msgid "Yes" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2489 .. +#: admin/views/templates/slider-main-options.php:2635 .. +#: admin/views/templates/slider-main-options.php:2791 .. +#: admin/views/templates/slider-main-options.php:2960 +msgid "No" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2494 +msgid "Time after the Arrows will be hidden(Default: 200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2494 .. +#: admin/views/templates/slider-main-options.php:2639 .. +#: admin/views/templates/slider-main-options.php:2796 +msgid "Hide After" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2499 +msgid "Time after the Arrows will be hidden on Mobile(Default: 1200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2499 .. +#: admin/views/templates/slider-main-options.php:2644 .. +#: admin/views/templates/slider-main-options.php:2801 +msgid "Hide After on Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2505 +msgid "Force Hide Navigation Arrows under width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2505 +msgid "Hide Under" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2510 +msgid "If browser size goes below this value, then Navigation Arrows are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2516 +msgid "Force Hide Navigation over width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2516 +msgid "Hide Over" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2521 +msgid "If browser size goes over this value, then Navigation Arrows are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2527 +msgid "Left Arrow Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2529 +msgid "Horizontal position of the left arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2529 .. +#: admin/views/templates/slider-main-options.php:2558 .. +#: admin/views/templates/slider-main-options.php:2673 .. +#: admin/views/templates/slider-main-options.php:2843 .. +#: admin/views/templates/slider-main-options.php:3011 +msgid "Horizontal Align" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2538 +msgid "Vertical position of the left arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2538 .. +#: admin/views/templates/slider-main-options.php:2568 .. +#: admin/views/templates/slider-main-options.php:2681 .. +#: admin/views/templates/slider-main-options.php:2851 .. +#: admin/views/templates/slider-main-options.php:3019 +msgid "Vertical Align" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2546 +msgid "Offset from current horizontal position of of left arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2546 .. +#: admin/views/templates/slider-main-options.php:2578 .. +#: admin/views/templates/slider-main-options.php:2689 .. +#: admin/views/templates/slider-main-options.php:2859 .. +#: admin/views/templates/slider-main-options.php:3027 +msgid "Horizontal Offset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2552 +msgid "Offset from current vertical position of of left arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2552 .. +#: admin/views/templates/slider-main-options.php:2584 .. +#: admin/views/templates/slider-main-options.php:2695 .. +#: admin/views/templates/slider-main-options.php:2865 .. +#: admin/views/templates/slider-main-options.php:3033 +msgid "Vertical Offset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2557 +msgid "Right Arrow Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2558 +msgid "Horizontal position of the right arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2568 +msgid "Vertical position of the right arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2578 +msgid "Offset from current horizontal position of of right arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2584 +msgid "Offset from current vertical position of of right arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2594 +msgid "Enable / Disable Bullets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2594 +msgid "Enable Bullets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2599 +msgid "Look of the Bullets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2599 +msgid "Bullet Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2616 +msgid "Space between the bullets." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2616 .. +#: admin/views/templates/slider-main-options.php:2755 .. +#: admin/views/templates/slider-main-options.php:2926 +msgid "Space" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2622 +msgid "Direction of the Bullets. Vertical or Horizontal." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2622 .. +#: admin/views/templates/slider-main-options.php:2760 .. +#: admin/views/templates/slider-main-options.php:2931 +msgid "Direction" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2624 .. +#: admin/views/templates/slider-main-options.php:2762 .. +#: admin/views/templates/slider-main-options.php:2933 .. +#: admin/views/templates/slider-main-options.php:3062 .. +#: admin/views/templates/slider-main-options.php:3077 +msgid "Horizontal" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2625 .. +#: admin/views/templates/slider-main-options.php:2763 .. +#: admin/views/templates/slider-main-options.php:2934 .. +#: admin/views/templates/slider-main-options.php:3063 .. +#: admin/views/templates/slider-main-options.php:3078 +msgid "Vertical" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2632 +msgid "" +"Enable to make bullets always visible. Disable to hide bullets after the " +"defined time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2632 +msgid "Always Show" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2639 +msgid "Time after that the bullets will be hidden(Default: 200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2644 +msgid "Time after the bullets will be hidden on Mobile (Default: 1200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2650 +msgid "Force Hide Navigation Bullets under width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2650 .. +#: admin/views/templates/slider-main-options.php:2807 .. +#: admin/views/templates/slider-main-options.php:2975 +msgid "Hide under Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2655 .. +#: admin/views/templates/slider-main-options.php:2666 +msgid "If browser size goes below this value, then Navigation bullets are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2661 +msgid "Force Hide Navigation Bullets over width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2661 .. +#: admin/views/templates/slider-main-options.php:2818 .. +#: admin/views/templates/slider-main-options.php:2986 +msgid "Hide over Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2673 +msgid "Horizontal position of bullets " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2681 +msgid "Vertical positions of bullets " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2689 +msgid "Offset from current horizontal position." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2695 +msgid "Offset from current Vertical position." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2705 +msgid "Enable / Disable Thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2705 +msgid "Enable Thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2712 .. +#: admin/views/templates/slider-main-options.php:2885 +msgid "Wrapper Container" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2714 +msgid "The wrapper div padding of thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2714 .. +#: admin/views/templates/slider-main-options.php:2887 +msgid "Wrapper Padding" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2718 +msgid "Span wrapper to full width or full height based on the direction selected" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2718 .. +#: admin/views/templates/slider-main-options.php:2891 +msgid "Span Wrapper" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2722 +msgid "Thumbnails wrapper background color. For transparent leave empty." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2722 +msgid "Wrapper color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2723 .. +#: admin/views/templates/slider-main-options.php:2895 .. +#: admin/views/templates/slider-main-options.php:2896 +msgid "Wrapper Color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2726 .. +#: admin/views/templates/slider-main-options.php:2899 +#, php-format +msgid "Opacity of the Wrapper container. 0 - transparent, 50 - 50% opacity..." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2726 .. +#: admin/views/templates/slider-main-options.php:2899 +msgid "Wrapper Opacity" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2733 +msgid "Style of the thumbnails." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2733 +msgid "Thumbnails Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2751 +msgid "The amount of max visible Thumbnails in the same time. " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2751 +msgid "Visible Thumbs Amount" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2755 +msgid "Space between the thumbnails." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2760 +msgid "Direction of the Thumbnails. Vertical or Horizontal." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2767 +msgid "Thumbnail Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2769 +msgid "The basic Width of one Thumbnail." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2769 +msgid "Thumb Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2774 +msgid "The basic Height of one Thumbnail." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2774 +msgid "Thumb Height" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2779 +msgid "" +"The minimum width of the auto resized thumbs. Between Max and Min width the " +"sizes are auto calculated)." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2779 +msgid "Min Thumb Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2788 +msgid "" +"Enable to make thumbnails always visible. Disable to hide thumbnails after " +"the defined time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2796 +msgid "Time after that the thumbnails will be hidden(Default: 200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2801 +msgid "Time after that the thumbnails will be hidden on Mobile (Default: 1200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2807 .. +#: admin/views/templates/slider-main-options.php:2818 +msgid "Force Hide Navigation Thumbnails under width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2812 .. +#: admin/views/templates/slider-main-options.php:2823 +msgid "If browser size goes below this value, then Navigation thumbs are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2830 +msgid "" +"Put the thumbnails inside or outside of the slider container. Outside added " +"thumbnails will decrease the size of the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2830 .. +#: admin/views/templates/slider-main-options.php:2999 +msgid "Inner / outer" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2832 .. +#: admin/views/templates/slider-main-options.php:3001 +msgid "Inner Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2833 .. +#: admin/views/templates/slider-main-options.php:3002 +msgid "Outer Left" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2834 .. +#: admin/views/templates/slider-main-options.php:3003 +msgid "Outer Right" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2835 .. +#: admin/views/templates/slider-main-options.php:3004 +msgid "Outer Top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2836 .. +#: admin/views/templates/slider-main-options.php:3005 +msgid "Outer Bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2843 +msgid "Horizontal position of thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2851 +msgid "Vertical position of thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2859 +msgid "Offset from current Horizontal position." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2865 +msgid "Offset from current Vertical position." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2878 +msgid "Enable / Disable navigation tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2878 +msgid "Enable Tabs" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2887 +msgid "The wrapper div padding of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2891 +msgid "Span wrapper to full width or full height based on the direction selected." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2895 +msgid "Tabs wrapper background color. For transparent leave empty." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2905 +msgid "Style of the tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2905 +msgid "Tabs Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2922 +msgid "The amount of max visible tabs in same time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2922 +msgid "Visible Tabs Amount" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2926 +msgid "Space between the tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2931 +msgid "Direction of the Tabs. Vertical or Horizontal." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2938 +msgid "Tab Sizes" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2940 +msgid "The basic width of one tab." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2940 +msgid "Tabs Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2945 +msgid "the basic height of one tab." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2945 +msgid "Tabs Height" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2950 +msgid "" +"The minimum width of the auto resized Tabs. Between Max and Min width the " +"sizes are auto calculated)." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2950 +msgid "Min. Tab Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2957 +msgid "" +"Enable to make tabs always visible. Disable to hide tabs after the defined " +"time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2965 +msgid "Time after that the tabs will be hidden(Default: 200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2965 +msgid "Hide After" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2969 +msgid "Time after that the tabs will be hidden on Mobile (Default: 1200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2969 +msgid "Hide After on Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2975 .. +#: admin/views/templates/slider-main-options.php:2986 +msgid "Force Hide Navigation tabs under width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2980 .. +#: admin/views/templates/slider-main-options.php:2991 +msgid "If browser size goes below this value, then Navigation tabs are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2999 +msgid "" +"Put the tabs inside or outside of the slider container. Outside added tabs " +"will decrease the size of the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3011 +msgid "Horizontal position of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3019 +msgid "Vertical position of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3027 +msgid "Offset from current horizontal position of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3033 +msgid "Offset from current vertical position of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3044 +msgid "Enable Swipe Function on touch devices" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3044 +msgid "Touch Enabled" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3048 +msgid "Scroll below slider on vertical swipe" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3048 +msgid "Drag Block Vertical" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3052 +msgid "Defines the sensibility of gestures. Smaller values mean a higher sensibility" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3052 +msgid "Swipe Treshhold (0 - 200)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3056 +msgid "Defines how many fingers are needed minimum for swiping" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3056 +msgid "Swipe Min Finger" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3060 +msgid "Swipe Direction to swap slides?" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3060 +msgid "Swipe Direction" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3071 +msgid "Allow/disallow to navigate the slider with keyboard." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3071 +msgid "Keyboard Navigation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3075 +msgid "" +"Keyboard Direction to swap slides (horizontal - left/right arrow, vertical - " +"up/down arrow)?" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3075 +msgid "Key Direction" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3082 +msgid "Allow/disallow to navigate the slider with Mouse Scroll." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3082 +msgid "Mouse Scroll Navigation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3225 +msgid "Carousel Settings" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3231 +msgid "Basics" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3232 +msgid "Transformations" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3233 +msgid "Aligns" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3237 +msgid "" +"Infinity Carousel Scroll. No Endpoints exists at first and last slide if " +"valuse is set to ON." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3237 +msgid "Infinity Scroll" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3242 +msgid "The horizontal gap/space between the slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3242 +msgid "Space between slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3248 +msgid "The border radius of slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3259 +msgid "The padding top of slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3262 +msgid "The padding bottom of slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3266 +msgid "The maximum visible items in same time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3266 +msgid "Max. Visible Items" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3271 +msgid "7" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3272 +msgid "9" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3273 +msgid "11" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3274 +msgid "13" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3275 +msgid "15" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3276 +msgid "17" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3277 +msgid "19" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3281 +msgid "" +"Stretch carousel element width to the wrapping container width. Using this " +"you can see only 1 item in same time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3281 +msgid "Stretch Element" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3291 +msgid "" +"All elements out of focus will get some Opacity value based on the Distance " +"to the current focused element, or only the coming/leaving elements." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3291 +msgid "Fade All Elements" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3297 +msgid "Fade is varying based on the distance to the focused element." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3297 +msgid "Varying Fade" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3304 +msgid "Rotation enabled/disabled for not focused elements." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3311 +msgid "Rotation is varying based on the distance to the focused element." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3311 +msgid "Varying Rotation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3316 +msgid "" +"The maximum rotation of the Side elements. Rotation will depend on the " +"element distance to the current focused element. 0 will turn off the Rotation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3316 +msgid "Max. Rotation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3318 +msgid "deg" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3323 +msgid "Scale enabled/disabled for not focused elements." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3331 +msgid "Scale is varying based on the distance to the focused element." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3331 +msgid "Varying Scale" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3336 +msgid "" +"The maximum scale down of the Side elements. Scale will depend on the " +"element distance to the current focused element. Min value is 0 and max " +"value is 100." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3336 +msgid "Max. Scaledown" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3346 +msgid "Horizontal Align of the Carousel." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3346 +msgid "Horizontal Aligns" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3354 +msgid "Vertical Align of the Carousel." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3354 +msgid "Vertical Aligns" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3432 +msgid "" +"Enabling this, will give you new options in the slides to create a unique " +"parallax effect" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3432 +msgid "Enable Parallax" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3437 +msgid "If set to on, parallax will be disabled on mobile devices to save performance" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3437 +msgid "Disable on Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3442 +msgid "Mouse Sensibility" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3444 +msgid "Defines on what event type the parallax should react to" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3444 +msgid "Event" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3446 +msgid "Mouse Move" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3447 +msgid "Scroll Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3448 +msgid "Move and Scroll" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3452 +msgid "Mouse Based parallax calculation Origo" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3452 +msgid "Parallax Origo" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3454 +msgid "Mouse Enter Point" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3455 +msgid "Slider Center" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3459 +msgid "Parallax Speed for Mouse movents." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3459 +msgid "Animation Speed" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3465 +msgid "Parallax Levels" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3467 .. +#: admin/views/templates/slider-main-options.php:3471 .. +#: admin/views/templates/slider-main-options.php:3475 .. +#: admin/views/templates/slider-main-options.php:3479 .. +#: admin/views/templates/slider-main-options.php:3483 .. +#: admin/views/templates/slider-main-options.php:3487 .. +#: admin/views/templates/slider-main-options.php:3491 .. +#: admin/views/templates/slider-main-options.php:3495 .. +#: admin/views/templates/slider-main-options.php:3499 .. +#: admin/views/templates/slider-main-options.php:3503 +msgid "" +"Defines a level that can be used in Slide Editor for this Slider. Smaller " +"value gives a smaller offset effect, higher value will increase the effect." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3467 +msgid "Level Depth 1" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3471 +msgid "Level Depth 2" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3475 +msgid "Level Depth 3" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3479 +msgid "Level Depth 4" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3483 +msgid "Level Depth 5" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3487 +msgid "Level Depth 6" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3491 +msgid "Level Depth 7" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3495 +msgid "Level Depth 8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3499 +msgid "Level Depth 9" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3503 +msgid "Level Depth 10" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3535 +msgid "Performance and SEO Optimization" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3549 +msgid "" +"How to load/preload the images.

        All - Load all " +"image element in a sequence at the initialisation. This will boost up the " +"loading of your page, and will preload all images to have a smooth and " +"breakless run already in the first loop.

        Smart - " +"It will load the page as quick as possible, and load only the current and " +"neighbour slide elements. If slide is called which not loaded yet, will be " +"loaded on demand with minimal delays.

        Single - It " +"will load only the the start slide. Any other slides will be loaded on " +"demand." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3549 +msgid "Lazy Load" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3552 +msgid "Smart" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3553 +msgid "Single" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3554 +msgid "No Lazy Loading" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3561 +msgid "" +"Define SEO Optimization for the Images in the Slider, useful if Lazy Load is " +"on." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3561 +msgid "SEO Optimization" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3564 +msgid "NoScript" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3565 +msgid "NoFrame" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3615 +msgid "Problem Handlings" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3620 +msgid "Fallbacks" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3621 +msgid "Troubleshooting" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3624 +msgid "Simplyfies the Slider on IOS4 and IE8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3624 +msgid "Simplify on IOS4/IE8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3628 +msgid "Disables the Slider and load an alternative image instead" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3628 +msgid "Use Alternative Image" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3631 +msgid "On Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3632 +msgid "On IE8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3633 +msgid "On Mobile and IE8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3638 +msgid "The image that will be loaded instead of the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3638 +msgid "Alternate Image" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3645 +msgid "" +"Turns on / off jquery noconflict mode. Try to enable this option if " +"javascript conflicts exist on the page." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3645 +msgid "JQuery No Conflict Mode" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3649 +msgid "" +"Try this to fix some javascript conflicts of type: TypeError: " +"tpj('#rev_slider_1_1').show().revolution is not a function" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3649 +msgid "Put JS Includes To Body" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3658 +msgid "" +"Activate a protection against wordpress output filters that adds html blocks " +"to the shortcode output like P and BR." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3658 +msgid "Output Filters Protection" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3661 +msgid "By Compressing Output" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3662 +msgid "By Echo Output" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3666 +msgid "Turns on / off visible Debug Mode on Front End." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3666 +msgid "Debug Mode" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3695 +msgid "Import / Export / Replace" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3699 +msgid "Import" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3700 .. +#: admin/views/templates/sliders-list.php:154 +msgid "Export" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3701 +msgid "Replace URL" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3713 +msgid "Overwrite or append the custom animations due the new imported values ?" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3713 +msgid "Custom Animations" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3718 +msgid "Overwrite or append the static styles due the new imported values ?" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3718 ../includes/operations. +#: class.php:2313 +msgid "Static Styles" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3728 +msgid "" +"Note! Style templates will be updated if they exist. Importing slider, will " +"delete all the current slider settings and slides and replacing it with the " +"imported content." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3734 +msgid "Export Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3734 +msgid "Export with Dummy Images" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3740 +msgid "" +"Replace all layer and backgorund image url's. example - replace from: http:" +"//localhost" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3740 +msgid "Replace From" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3744 +msgid "" +"Replace all layer and backgorund image url's. example - replace to: http:" +"//yoursite.com" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3744 +msgid "Replace To" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3751 +msgid "Replace URL's" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3752 +msgid "Replacing..." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3755 +msgid "Note! The replace process is not reversible !" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3772 +msgid "API Functions" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3776 +msgid "Methods" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3777 +msgid "Events" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3780 +msgid "Call this function to pause the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3784 +msgid "Call this function to play the slider if it is paused." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3784 +msgid "Resume Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3788 +msgid "Switch slider to previous slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3792 +msgid "Switch slider to next slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3796 .. +#: admin/views/templates/slider-main-options.php:3800 +msgid "Switch to the slide which is defined as parameter." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3796 +msgid "Go To Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3800 +msgid "Go To Slide with ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3804 +msgid "Get the amount of existing slides in the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3804 +msgid "Max Slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3808 +msgid "Get the current focused slide index." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3808 +msgid "Current Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3812 +msgid "Get the previously played slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3816 +msgid "Scroll page under the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3816 +msgid "External Scroll" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3820 +msgid "" +"Recalculate all positions, sizing etc in the slider. This should be called " +"i.e. if Slider was invisible and becomes visible without any window resize " +"event." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3820 +msgid "Redraw Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3824 +msgid "" +"Unbind all listeners, remove current animations and delete containers. Ready " +"for Garbage collection." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3824 +msgid "Kill Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3829 +msgid "Slider Loaded" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3834 +msgid "Slider swapped to an other slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3838 +msgid "Current Slide as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3840 .. +#: admin/views/templates/slider-main-options.php:3891 +msgid "Previous Slide as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3842 +msgid "Slider paused" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3847 +msgid "Slider is Playing after pause" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3852 +msgid "Video is playing in slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3856 .. +#: admin/views/templates/slider-main-options.php:3866 +msgid "The Video API to Manage Video functions" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3858 .. +#: admin/views/templates/slider-main-options.php:3868 +msgid "youtube, vimeo, html5" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3860 .. +#: admin/views/templates/slider-main-options.php:3870 +msgid "Video Settings" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3862 +msgid "Video stopped in slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3872 +msgid "Slider reached the 'stop at' slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3877 +msgid "Prepared for slide change" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3881 .. +#: admin/views/templates/slider-main-options.php:3889 +msgid "Current Slide as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3883 +msgid "Coming Slide as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3885 +msgid "Finnished with slide change" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3893 +msgid "Last slide starts" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3898 +msgid "Layer Events" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3901 +msgid "Layer Action (enterstage, enteredstage, leavestage,leftstage)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3903 +msgid "Layer Type (image,video,html)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3905 +msgid "Default Settings for Layer" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3907 +msgid "Layer as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3920 +msgid "Google Fonts" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3926 +msgid "Add New Font" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3927 +msgid "" +"Copy the Google Font Family from http://www.google.com/fonts like: Open+Sans:400," +"700,600" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3982 +msgid "*Only Illustration, most changes are not visible." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:4455 +msgid "Save Settings as Preset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:4457 +msgid "Preset Name" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:4458 +msgid "Select" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:4509 +msgid "Google Font String" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:39 +msgid "Social" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:150 +msgid "Order Posts" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:163 +msgid "Export to HTML" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:188 +msgid "Create New Slider" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:189 +msgid "Add Template Slider" +msgstr "" + +#: ../admin/views/templates/slides-list.php:92 +msgid "Unpublish Slide" +msgstr "" + +#: ../admin/views/templates/slides-list.php:96 +msgid "Publish Slide" +msgstr "" + +#: ../admin/views/templates/slides-list.php:115 +msgid "Slide Image - Click to change" +msgstr "" + +#: ../admin/views/templates/slides-list.php:135 +msgid "Deleting Slide..." +msgstr "" + +#: ../admin/views/templates/slides-list.php:139 +msgid "Open copy / move dialog" +msgstr "" + +#: ../admin/views/templates/slides-list.php:147 +msgid "Working..." +msgstr "" + +#: ../admin/views/templates/slides.php:16 ../admin/views/templates/slides.php:36 +msgid "New Slide" +msgstr "" + +#: ../admin/views/templates/slides.php:18 ../admin/views/templates/slides.php:38 +msgid "New Transparent Slide" +msgstr "" + +#: ../admin/views/templates/slides.php:19 ../admin/views/templates/slides.php:39 +msgid "Adding Slide..." +msgstr "" + +#: ../admin/views/templates/slides.php:36 +msgid "Select image or multiple images to add slide or slides" +msgstr "" + +#: ../admin/views/templates/slides.php:41 +msgid "Edit Static / Global Layers" +msgstr "" + +#: ../admin/views/templates/slides.php:46 +msgid "To Slider Settings" +msgstr "" + +#: ../admin/views/templates/template-selector.php:17 +msgid "Slide" +msgstr "" + +#: ../admin/views/templates/template-selector.php:22 .. +#: admin/views/templates/template-slider-selector.php:21 +msgid "Revolution Base" +msgstr "" + +#: ../admin/views/templates/template-selector.php:23 +msgid "All Slides" +msgstr "" + +#: ../admin/views/templates/template-selector.php:24 +msgid "Templates" +msgstr "" + +#: ../admin/views/templates/template-selector.php:230 .. +#: admin/views/templates/template-selector.php:243 +msgid "Import Template Slide" +msgstr "" + +#: ../admin/views/templates/template-selector.php:240 .. +#: admin/views/templates/template-slider-selector.php:225 +msgid "" +"Please select the corresponding zip file from the download packages import " +"folder called" +msgstr "" + +#: ../admin/views/templates/template-selector.php:245 .. +#: admin/views/templates/template-slider-selector.php:230 +msgid "Note: style templates will be updated if they exist!" +msgstr "" + +#: ../admin/views/templates/template-slider-selector.php:218 .. +#: admin/views/templates/template-slider-selector.php:228 +msgid "Import Template Slider" +msgstr "" + +#: ../admin/views/templates/wpml-selector.php:11 +msgid "Preview Slide" +msgstr "" + +#: ../admin/views/templates/wpml-selector.php:41 +msgid "Choose slide language" +msgstr "" + +#: ../includes/extension.class.php:56 +msgid "Slider Revolution" +msgstr "" + +#: ../includes/extension.class.php:112 +msgid "Choose Revolution Slider" +msgstr "" + +#: ../includes/extension.class.php:116 +msgid "--- Choose Slider ---" +msgstr "" + +#: ../includes/external-sources.class.php:383 +msgid "Can't get the bearer token, check your credentials" +msgstr "" + +#: ../includes/external-sources.class.php:438 +msgid "Bearer Token is good, check your query" +msgstr "" + +#: ../includes/navigation.class.php:155 +msgid "Invalid ID" +msgstr "" + +#: ../includes/navigation.class.php:159 +msgid "Navigation could not be deleted" +msgstr "" + +#: ../includes/operations.class.php:262 ../includes/operations.class.php:332 +msgid "## Custom Animation ##" +msgstr "" + +#: ../includes/operations.class.php:264 ../includes/operations.class.php:335 +msgid "- VERSION 5.0 ANIMATIONS -" +msgstr "" + +#: ../includes/operations.class.php:286 ../includes/operations.class.php:348 +msgid "- VERSION 4.0 ANIMATIONS -" +msgstr "" + +#: ../includes/operations.class.php:307 ../includes/operations.class.php:368 +msgid "- SAVED CUSTOM ANIMATIONS -" +msgstr "" + +#: ../includes/operations.class.php:333 +msgid "Automatic Reverse" +msgstr "" + +#: ../includes/operations.class.php:1239 ../includes/operations.class.php:1331 +msgid "Choose language" +msgstr "" + +#: ../includes/operations.class.php:1372 +msgid "CAPTIONS CSS" +msgstr "" + +#: ../includes/operations.class.php:1404 +msgid "Replace image path:" +msgstr "" + +#: ../includes/operations.class.php:1404 +msgid "From:" +msgstr "" + +#: ../includes/operations.class.php:1404 +msgid "To:" +msgstr "" + +#: ../includes/operations.class.php:1404 +msgid "Replace" +msgstr "" + +#: ../includes/operations.class.php:1407 +msgid "Header" +msgstr "" + +#: ../includes/operations.class.php:1407 ../includes/operations.class.php:1409 .. +#: includes/operations.class.php:1411 ../includes/operations.class.php:1413 +msgid "Mark to Copy" +msgstr "" + +#: ../includes/operations.class.php:1411 +msgid "Body" +msgstr "" + +#: ../includes/operations.class.php:1413 +msgid "Script" +msgstr "" + +#: ../includes/operations.class.php:1433 +msgid "Loading Preview..." +msgstr "" + +#: ../includes/operations.class.php:1592 +msgid "Purchase Code already registered!" +msgstr "" + +#: ../includes/operations.class.php:1994 +msgid "Overall Slider Performance" +msgstr "" + +#: ../includes/operations.class.php:1997 ../includes/operations.class.php:2087 .. +#: includes/operations.class.php:2174 ../includes/operations.class.php:2251 .. +#: includes/operations.class.php:2377 ../includes/operations.class.php:2458 +msgid "Slow" +msgstr "" + +#: ../includes/operations.class.php:1998 ../includes/operations.class.php:2088 .. +#: includes/operations.class.php:2175 ../includes/operations.class.php:2252 .. +#: includes/operations.class.php:2378 ../includes/operations.class.php:2459 +msgid "Ok" +msgstr "" + +#: ../includes/operations.class.php:1999 ../includes/operations.class.php:2089 .. +#: includes/operations.class.php:2176 ../includes/operations.class.php:2253 .. +#: includes/operations.class.php:2379 ../includes/operations.class.php:2460 +msgid "Fast" +msgstr "" + +#: ../includes/operations.class.php:2005 ../includes/operations.class.php:2020 .. +#: includes/operations.class.php:2035 +msgid "Load Speed UMTS:" +msgstr "" + +#: ../includes/operations.class.php:2009 ../includes/operations.class.php:2024 .. +#: includes/operations.class.php:2039 +msgid "Load Speed DSL:" +msgstr "" + +#: ../includes/operations.class.php:2013 ../includes/operations.class.php:2028 .. +#: includes/operations.class.php:2043 +msgid "Load Speed T1:" +msgstr "" + +#: ../includes/operations.class.php:2050 +msgid "Total Slider Size:" +msgstr "" + +#: ../includes/operations.class.php:2055 +msgid "Preloaded Slides Size:" +msgstr "" + +#: ../includes/operations.class.php:2067 +msgid "Need Some Attention" +msgstr "" + +#: ../includes/operations.class.php:2084 +msgid "Image Performance" +msgstr "" + +#: ../includes/operations.class.php:2096 +msgid "Images Loaded:" +msgstr "" + +#: ../includes/operations.class.php:2101 ../includes/operations.class.php:2193 .. +#: includes/operations.class.php:2264 ../includes/operations.class.php:2390 .. +#: includes/operations.class.php:2471 +msgid "Hide Details" +msgstr "" + +#: ../includes/operations.class.php:2101 ../includes/operations.class.php:2101 .. +#: includes/operations.class.php:2193 ../includes/operations.class.php:2193 .. +#: includes/operations.class.php:2264 ../includes/operations.class.php:2264 .. +#: includes/operations.class.php:2390 ../includes/operations.class.php:2390 .. +#: includes/operations.class.php:2471 ../includes/operations.class.php:2471 +msgid "Show Details" +msgstr "" + +#: ../includes/operations.class.php:2128 ../includes/operations.class.php:2211 +msgid "extern" +msgstr "" + +#: ../includes/operations.class.php:2130 ../includes/operations.class.php:2213 +msgid "missing" +msgstr "" + +#: ../includes/operations.class.php:2171 +msgid "Video Performance" +msgstr "" + +#: ../includes/operations.class.php:2183 +msgid "Videos Loaded (max):" +msgstr "" + +#: ../includes/operations.class.php:2189 +msgid "Unknown" +msgstr "" + +#: ../includes/operations.class.php:2248 +msgid "CSS Performance" +msgstr "" + +#: ../includes/operations.class.php:2260 +msgid "CSS Loaded:" +msgstr "" + +#: ../includes/operations.class.php:2285 +msgid "css/settings.css" +msgstr "" + +#: ../includes/operations.class.php:2349 +msgid "Dynamic Styles" +msgstr "" + +#: ../includes/operations.class.php:2374 +msgid "jQuery Performance" +msgstr "" + +#: ../includes/operations.class.php:2386 +msgid "jQuery Loaded:" +msgstr "" + +#: ../includes/operations.class.php:2455 +msgid "Google Fonts Performance" +msgstr "" + +#: ../includes/operations.class.php:2467 +msgid "Fonts Loaded:" +msgstr "" + +#: ../includes/output.class.php:312 +msgid "" +"No slides found, please add at least one Slide Template to the choosen " +"language." +msgstr "" + +#: ../includes/output.class.php:314 +msgid "No slides found, please add some slides" +msgstr "" + +#: ../includes/output.class.php:3612 +msgid "Revolution Slider Error" +msgstr "" + +#: ../includes/slide.class.php:205 +msgid "Source must be from Stream" +msgstr "" + +#: ../includes/slider.class.php:893 +msgid "No file sent." +msgstr "" + +#: ../includes/slider.class.php:896 +msgid "Exceeded filesize limit." +msgstr "" + +#: ../includes/slider.class.php:927 +msgid "Please select the correct zip file" +msgstr "" + +#: ../includes/slider.class.php:944 +msgid "Please select the correct zip file, checksum failed!" +msgstr "" + +#: ../includes/slider.class.php:1020 +msgid "animations imported!" +msgstr "" + +#: ../includes/slider.class.php:1022 +msgid "" +"no custom animations found, if slider uses custom animations, the provided " +"export may be broken..." +msgstr "" + +#: ../includes/slider.class.php:1082 +msgid "dynamic styles imported!" +msgstr "" + +#: ../includes/slider.class.php:1084 +msgid "" +"no dynamic styles found, if slider uses dynamic styles, the provided export " +"may be broken..." +msgstr "" + +#: ../includes/slider.class.php:1372 ../includes/slider.class.php:1405 .. +#: includes/framework/base.class.php:487 +msgid " not found!
        " +msgstr "" + +#: ../includes/slider.class.php:1556 +msgid "could not find correct Slide to copy, please try again." +msgstr "" + +#: ../includes/slider.class.php:1714 ../includes/slider.class.php:1723 +msgid "Slide could not be duplicated" +msgstr "" + +#: ../includes/slider.class.php:1731 +msgid "Slide could not be copied" +msgstr "" + +#: ../includes/slider.class.php:2039 +msgid "Failed to load Stream" +msgstr "" + +#: ../includes/widget.class.php:15 +msgid "Displays a revolution slider on the page" +msgstr "" + +#: ../includes/widget.class.php:16 +msgid "Revolution Slider" +msgstr "" + +#: ../includes/widget.class.php:30 +msgid "No sliders found, Please create a slider" +msgstr "" + +#: ../includes/widget.class.php:69 +msgid "Home Page Only" +msgstr "" + +#: ../includes/widget.class.php:72 +msgid "Pages: (example: 2,10)" +msgstr "" + +#: ../includes/framework/base-admin.class.php:265 +msgid "Wrong Request" +msgstr "" + +#: ../includes/framework/base.class.php:219 +msgid "Original" +msgstr "" + +#: ../includes/framework/base.class.php:220 ../includes/framework/base.class.php: +#: 267 ../includes/framework/base.class.php:282 +msgid "Large" +msgstr "" + +#: ../includes/framework/base.class.php:221 +msgid "Large Square" +msgstr "" + +#: ../includes/framework/base.class.php:222 ../includes/framework/base.class.php: +#: 257 ../includes/framework/base.class.php:266 ../includes/framework/base.class. +#: php:281 +msgid "Medium" +msgstr "" + +#: ../includes/framework/base.class.php:223 +msgid "Medium 800" +msgstr "" + +#: ../includes/framework/base.class.php:224 +msgid "Medium 640" +msgstr "" + +#: ../includes/framework/base.class.php:225 ../includes/framework/base.class.php: +#: 265 +msgid "Small" +msgstr "" + +#: ../includes/framework/base.class.php:226 +msgid "Small 320" +msgstr "" + +#: ../includes/framework/base.class.php:227 ../includes/framework/base.class.php: +#: 234 ../includes/framework/base.class.php:280 +msgid "Thumbnail" +msgstr "" + +#: ../includes/framework/base.class.php:228 +msgid "Square" +msgstr "" + +#: ../includes/framework/base.class.php:233 ../includes/framework/base.class.php: +#: 240 +msgid "Standard Resolution" +msgstr "" + +#: ../includes/framework/base.class.php:235 +msgid "Low Resolution" +msgstr "" + +#: ../includes/framework/base.class.php:245 +msgid "Size 0" +msgstr "" + +#: ../includes/framework/base.class.php:246 +msgid "Size 1" +msgstr "" + +#: ../includes/framework/base.class.php:247 +msgid "Size 2" +msgstr "" + +#: ../includes/framework/base.class.php:248 +msgid "Size 3" +msgstr "" + +#: ../includes/framework/base.class.php:249 +msgid "Size 4" +msgstr "" + +#: ../includes/framework/base.class.php:250 +msgid "Size 5" +msgstr "" + +#: ../includes/framework/base.class.php:251 +msgid "Size 6" +msgstr "" + +#: ../includes/framework/base.class.php:256 +msgid "Default" +msgstr "" + +#: ../includes/framework/base.class.php:258 +msgid "High" +msgstr "" + +#: ../includes/framework/base.class.php:259 +msgid "Standard" +msgstr "" + +#: ../includes/framework/base.class.php:260 +msgid "Max. Res." +msgstr "" + +#: ../includes/framework/base.class.php:279 +msgid "Original Size" +msgstr "" + +#: ../includes/framework/em-integration.class.php:32 +msgid "All Events" +msgstr "" + +#: ../includes/framework/em-integration.class.php:33 +msgid "Today" +msgstr "" + +#: ../includes/framework/em-integration.class.php:34 +msgid "Tomorrow" +msgstr "" + +#: ../includes/framework/em-integration.class.php:35 +msgid "Future" +msgstr "" + +#: ../includes/framework/em-integration.class.php:36 +msgid "Past" +msgstr "" + +#: ../includes/framework/em-integration.class.php:37 +msgid "This Month" +msgstr "" + +#: ../includes/framework/em-integration.class.php:38 +msgid "Next Month" +msgstr "" + +#: ../includes/framework/em-integration.class.php:168 +msgid "Event Start Date" +msgstr "" + +#: ../includes/framework/em-integration.class.php:169 +msgid "Event End Date" +msgstr "" + +#: ../includes/framework/functions-wordpress.class.php:887 +#, php-format +msgid "View all posts in %s" +msgstr "" + +#: ../includes/framework/wpml.class.php:46 ../includes/framework/wpml.class.php:162 +msgid "All Languages" +msgstr "" + +#: ../revslider.php:167 +msgid "Include RevSlider libraries globally (all pages/posts)" +msgstr "Revslider Könyvtarak Globalis töltese mindig." + +#: ../revslider.php:168 +msgid "Pages to include RevSlider libraries" +msgstr "Oldalak ahol Revslider könyvtarak töltve legyenek" + +#: ../revslider.php:169 +msgid "" +"If you want to use the PHP function \"putRevSlider\" in your code please make " +"sure to check \" " +msgstr "Ha akarod a PHP funkciot \"putRevSlide\" hasznalni, akkor engedelyezd \"" + +#: ../revslider.php:169 +msgid "" +" \" in the backend's \"General Settings\" (top right panel).

        Or add " +"the current page to the \"" +msgstr "a \"General Settings\" (Jobb felso Panel)-ben vagy add az aktualis oldalt a \"" + +#: ../revslider.php:169 +msgid "\" option box." +msgstr "opció box" + +#: ../revslider.php:209 +msgid "Revolution Slider Error:" +msgstr "Revolution Slider hiba:" + +#: ../admin/revslider-admin.class.php:62 ../admin/views/navigation-editor.php:28 +msgid "Navigation Editor" +msgstr "navigáció szerkesztö" + +#: ../admin/revslider-admin.class.php:188 +msgid "-- wrong alias -- " +msgstr "-- hibas alias --" + +#: ../admin/revslider-admin.class.php:189 +msgid "Navigation Bullets and Arrows are now set to none." +msgstr "Navigáció Bulletek es Nyilak kikapcsolva." + +#: ../admin/revslider-admin.class.php:190 +msgid "Create Template" +msgstr "Sablon létrehozása" + +#: ../admin/revslider-admin.class.php:191 +msgid "Do you really want to delete" +msgstr "Bizotsan akarod törölni" + +#: ../admin/revslider-admin.class.php:192 +msgid "Are you sure to replace the urls?" +msgstr "Biztosan ki akarod cserelni az urlt ?" + +#: ../admin/revslider-admin.class.php:193 +msgid "" +"Set selected settings on all Slides of this Slider? (This will be saved " +"immediately)" +msgstr "" +"Hasznalni akarod a \n" +"kiválasztot\n" +" beállításokat az összes Slideban ? ( Ez mentésre kerül azonnal )\n" + +#: ../admin/revslider-admin.class.php:194 ../admin/views/slide-overview.php:174 +msgid "Select Slide Image" +msgstr "" +"Válassz Slide \n" +"képet" + +#: ../admin/revslider-admin.class.php:195 +msgid "Select Slide Video" +msgstr "" +"Válassz Slide \n" +"videot" + +#: ../admin/revslider-admin.class.php:196 +msgid "Show Slide Options" +msgstr "Slide opciók megtekintése\n" + +#: ../admin/revslider-admin.class.php:197 +msgid "Hide Slide Options" +msgstr "Slide opciók elrejtése" + +#: ../admin/revslider-admin.class.php:198 ../admin/views/slide-overview.php:168 .. +#: admin/views/system/dialog-copy-move.php:3 ../admin/views/templates/slider- +#: main-options.php:1433 ../admin/views/templates/slider-main-options.php:4437 .. +#: admin/views/templates/slides.php:21 ../admin/views/templates/slides.php:43 +msgid "Close" +msgstr "Bezár" + +#: ../admin/revslider-admin.class.php:199 +msgid "Really update global styles?" +msgstr "" +"Tényleg akaros frissíteni a globális \n" +"style-t\n" +" ?" + +#: ../admin/revslider-admin.class.php:200 +msgid "Global Styles Editor" +msgstr "Globális style szerkesztése\n" + +#: ../admin/revslider-admin.class.php:201 ../admin/revslider-admin.class.php:239 . +#: ./admin/views/templates/slider-main-options.php:4458 +msgid "Select Image" +msgstr "Válassz képet" + +#: ../admin/revslider-admin.class.php:202 +msgid "Video Not Found!" +msgstr "Nincs Video" + +#: ../admin/revslider-admin.class.php:203 +msgid "Handle has to be at least three character long" +msgstr "A Handle legalább három karakter hosszú legyen" + +#: ../admin/revslider-admin.class.php:204 +msgid "Really change font settings?" +msgstr "" +"Tényleg akarod frissíteni a font \n" +"beállításokat ?" + +#: ../admin/revslider-admin.class.php:205 +msgid "Really delete font?" +msgstr "Tényleg akarod törölni a fontot?\n" + +#: ../admin/revslider-admin.class.php:206 +msgid "Class already exists, overwrite?" +msgstr "Class már létezik , felülírjam?" + +#: ../admin/revslider-admin.class.php:207 +msgid "Class must be a valid CSS class name" +msgstr "" +"Class-nak \n" +"érvényes CSS nevet kell adnod" + +#: ../admin/revslider-admin.class.php:208 +msgid "Really overwrite Class?" +msgstr "" +"Tényleg akarod a Class-t \n" +"felülírni ?" + +#: ../admin/revslider-admin.class.php:209 +msgid "Really delete Class" +msgstr "Tényleg akarod a Class-t törölni ?" + +#: ../admin/revslider-admin.class.php:210 +msgid "? This can't be undone!" +msgstr "? Ezt nem lehet visszaforditani!" + +#: ../admin/revslider-admin.class.php:211 +msgid "This class does not exist." +msgstr "Ez az osztaly nem letezik." + +#: ../admin/revslider-admin.class.php:212 +msgid "" +"Making changes to these settings will probably overwrite advanced settings. " +"Continue?" +msgstr "" +"A változtatások valószínűleg felülírjak a speciális beállításokat . " +"Folytatás ?" + +#: ../admin/revslider-admin.class.php:213 +msgid "Select Static Layer Image" +msgstr "Válassz Static Layer képet" + +#: ../admin/revslider-admin.class.php:214 +msgid "Select Layer Image" +msgstr "Válassz Layer képet" + +#: ../admin/revslider-admin.class.php:215 +msgid "Do you really want to delete all the layers?" +msgstr "Tényleg akarod az összes Layert törölni ?" + +#: ../admin/revslider-admin.class.php:216 +msgid "Layer Animation Editor" +msgstr "Layer Animacio Szerkesztö" + +#: ../admin/revslider-admin.class.php:217 +msgid "Animation already exists, overwrite?" +msgstr "Animacio letezik mar, felülirjam?" + +#: ../admin/revslider-admin.class.php:218 +msgid "Really overwrite animation?" +msgstr "Tenyleg felülirjam az animaciot?" + +#: ../admin/revslider-admin.class.php:219 +msgid "Default animations can't be deleted" +msgstr "Default Animaciokat nem lehet törölni" + +#: ../admin/revslider-admin.class.php:220 +msgid "Must be greater than start time" +msgstr "Nagyobbnak kell hogy legyen mint a Start idö" + +#: ../admin/revslider-admin.class.php:221 +msgid "Selected layer not set" +msgstr "A kivalasztott Layer nincs beallitva" + +#: ../admin/revslider-admin.class.php:222 +msgid "Edit Layer Start" +msgstr "" +"Layer \n" +"Start\n" +" Szerkesztese" + +#: ../admin/revslider-admin.class.php:223 +msgid "Edit Layer End" +msgstr "Layer End szerkesztese" + +#: ../admin/revslider-admin.class.php:224 +msgid "Default Animations can't be renamed" +msgstr "Default Animaciokat nem lehet atnevezni" + +#: ../admin/revslider-admin.class.php:225 +msgid "Animationname already existing" +msgstr "Animacio nev mar letezik" + +#: ../admin/revslider-admin.class.php:226 +msgid "CSS classname already existing" +msgstr "" +"CSS \n" +"osztály\n" +" nev letezik mar\n" + +#: ../admin/revslider-admin.class.php:227 +msgid "Original CSS classname not found" +msgstr "" +"Original CSS \n" +"osztály\n" +" nev nem talalhato\n" + +#: ../admin/revslider-admin.class.php:228 +msgid "Enter a correct class name" +msgstr "Adj meg egy helyes osztály nevét" + +#: ../admin/revslider-admin.class.php:229 +msgid "Class not found in database" +msgstr "Class nem talalhato az adatabazisban" + +#: ../admin/revslider-admin.class.php:230 +msgid "CSS classname not found" +msgstr "" +"CSS \n" +"osztály nev nem talalhato" + +#: ../admin/revslider-admin.class.php:231 +msgid "Delete this caption? This may affect other Slider" +msgstr "Töröljem a layert ? Ez hatassal lehet a Sliderre is" + +#: ../admin/revslider-admin.class.php:232 +msgid "" +"This will update the Class with the current set Style settings, this may " +"affect other Sliders. Proceed?" +msgstr "" +"Ez frissíti az osztályban a jelenlegi készlet Stílus beállításokat, ez " +"hatással lehet más Sliderekre is . Folytatod?" + +#: ../admin/revslider-admin.class.php:233 +msgid "Template will have the state of the last save, proceed?" +msgstr "Sablon visszaallitodik az utolso mentett allapotra, folytatod?" + +#: ../admin/revslider-admin.class.php:234 +msgid "Please enter a Slide title" +msgstr "Adj meg egy Slide címet" + +#: ../admin/revslider-admin.class.php:235 +msgid "Please Wait a Moment" +msgstr "Kérlek, várj" + +#: ../admin/revslider-admin.class.php:237 +msgid "Preset Loaded" +msgstr "Preset betöltve" + +#: ../admin/revslider-admin.class.php:238 ../admin/views/templates/slide-selector. +#: php:253 +msgid "Add Bulk Slides" +msgstr "Hozzafüzni több Slide-ot" + +#: ../admin/revslider-admin.class.php:240 ../admin/views/navigation-editor.php:38 +#: ../admin/views/templates/slider-main-options.php:2453 +msgid "Arrows" +msgstr "Nyilak" + +#: ../admin/revslider-admin.class.php:241 ../admin/views/navigation-editor.php:39 +#: ../admin/views/templates/slider-main-options.php:2454 +msgid "Bullets" +msgstr "Bulletek" + +#: ../admin/revslider-admin.class.php:242 ../admin/views/templates/slider-main- +#: options.php:2731 +msgid "Thumbnails" +msgstr "Thumbnailek" + +#: ../admin/revslider-admin.class.php:243 ../admin/views/navigation-editor.php:41 +#: ../admin/views/templates/slider-main-options.php:2455 .. +#: admin/views/templates/slider-main-options.php:2903 +msgid "Tabs" +msgstr "Tab-ek" + +#: ../admin/revslider-admin.class.php:244 +msgid "Delete this Navigation?" +msgstr "Navigaciot törölni?" + +#: ../admin/revslider-admin.class.php:245 +msgid "Navigation name could not be updated" +msgstr "Navigacio nevet nem lehetett felülirni" + +#: ../admin/revslider-admin.class.php:246 +msgid "Name too short, at least 3 letters between a-zA-z needed" +msgstr "Túl rövid név , legalább 3 betű legyen (a-zA- Z)" + +#: ../admin/revslider-admin.class.php:247 +msgid "Navigation name already exists, please choose a different name" +msgstr "Navigáció név már létezik , kérjük válassz másik nevet" + +#: ../admin/revslider-admin.class.php:248 +msgid "Remove current element from Navigation?" +msgstr "Aktualis elem törlese a Navigaciobol?" + +#: ../admin/revslider-admin.class.php:249 +msgid "This navigation element does not exist, create one?" +msgstr "Ez a navigációs elem nem létezik , létre hozzam ?" + +#: ../admin/revslider-admin.class.php:250 +msgid "Overwrite current animation?" +msgstr "Felülirjam az aktualis animaciot?" + +#: ../admin/revslider-admin.class.php:251 +msgid "Default animations can't be changed" +msgstr "Default animaciot nem lehet modositani" + +#: ../admin/revslider-admin.class.php:252 +msgid "Animation already existing with given handle, please choose a different name." +msgstr "Animacio letazik mar a Handle-vel, kerlek valassz egy masik nevet." + +#: ../admin/revslider-admin.class.php:253 +msgid "Really delete animation:" +msgstr "Tenyleg törölni akarod az animaciot:" + +#: ../admin/revslider-admin.class.php:254 +msgid "This will reset the navigation, continue?" +msgstr "Ez visszaállítja a navigációt, folytatni?" + +#: ../admin/revslider-admin.class.php:255 +msgid "Preset name already exists, please choose a different name" +msgstr "Az előre beállított név már létezik , kérjük válassz másik nevet" + +#: ../admin/revslider-admin.class.php:256 +msgid "Really delete this preset?" +msgstr "Valóban törlöd ezt a presetet?" + +#: ../admin/revslider-admin.class.php:257 +msgid "This will update the preset with the current settings. Proceed?" +msgstr "Ez felülirja az aktualis Preset beallitasokat. Tovabb ?" + +#: ../admin/revslider-admin.class.php:258 +msgid "Maybe wrong YoutTube ID given" +msgstr "Talán rossz YoutTube ID" + +#: ../admin/revslider-admin.class.php:259 +msgid "Preset not found" +msgstr "Preset nem talalhato" + +#: ../admin/revslider-admin.class.php:260 +msgid "Cover Image need to be set for videos" +msgstr "Cover Image-t kell állítani a videókhoz" + +#: ../admin/revslider-admin.class.php:261 +msgid "Really remove this action?" +msgstr "Tenyleg törlöd ezt az Akciot?" + +#: ../admin/revslider-admin.class.php:262 +msgid "Layer is triggered by " +msgstr "Layer triggered by" + +#: ../admin/revslider-admin.class.php:263 +msgid " due to action: " +msgstr "akcion keresztül:" + +#: ../admin/revslider-admin.class.php:264 +msgid "layer:" +msgstr "layer:" + +#: ../admin/revslider-admin.class.php:265 +msgid "Start Layer \"in\" animation" +msgstr "Start Layer \"be\" animaciot" + +#: ../admin/revslider-admin.class.php:266 +msgid "Start Layer \"out\" animation" +msgstr "Start Layer \"ki\" animaciot" + +#: ../admin/revslider-admin.class.php:267 ../admin/views/templates/slide-stage. +#: php:2257 +msgid "Start Video" +msgstr "Start Video" + +#: ../admin/revslider-admin.class.php:268 ../admin/views/templates/slide-stage. +#: php:2258 +msgid "Stop Video" +msgstr "Stop Video" + +#: ../admin/revslider-admin.class.php:269 ../admin/views/templates/slide-stage. +#: php:2256 +msgid "Toggle Layer Animation" +msgstr "Ki/Be Layer Animacio" + +#: ../admin/revslider-admin.class.php:270 ../admin/views/templates/slide-stage. +#: php:2259 +msgid "Toggle Video" +msgstr "Start/Stop Video" + +#: ../admin/revslider-admin.class.php:271 ../admin/views/templates/slider-main- +#: options.php:3812 +msgid "Last Slide" +msgstr "Utolso Slide" + +#: ../admin/revslider-admin.class.php:272 ../admin/views/templates/slide-stage. +#: php:2260 +msgid "Simulate Click" +msgstr "Click Szimulacio" + +#: ../admin/revslider-admin.class.php:273 +msgid "Toogle Class" +msgstr "Ki/Be Class" + +#: ../admin/revslider-admin.class.php:274 +msgid "Copy hover styles to idle?" +msgstr "Felülirod az Idle style-t a Hover style-al?" + +#: ../admin/revslider-admin.class.php:275 +msgid "Copy idle styles to hover?" +msgstr "Felülirod a Hover style-t az Idle style-al?" + +#: ../admin/revslider-admin.class.php:276 +msgid "Please select at least one device type" +msgstr "Kérjük válassz legalább egy eszköz típust" + +#: ../admin/revslider-admin.class.php:277 +msgid "Please select an existing Style Template" +msgstr "Kérjük, válassz ki egy meglévő Stílussablont" + +#: ../admin/revslider-admin.class.php:278 +msgid "Can not remove last transition!" +msgstr "Nem lehet eltávolítani az utolsó Slide Animaciot !" + +#: ../admin/revslider-admin.class.php:279 +msgid "Given animation name is a default animation. These can not be changed." +msgstr "A megadott Animaco nev egy Default Animacio nev. Valassz egy masik nevet ! " + +#: ../admin/revslider-admin.class.php:280 +msgid "Animation exists, override existing animation?" +msgstr "Animacio mar letezik, felülirjam?" + +#: ../admin/revslider-admin.class.php:290 +msgid "(never show this message again)  X" +msgstr "" +"(Ne mutasd ezt megegyszer)\n" +"  X" + +#: ../admin/revslider-admin.class.php:290 +msgid "" +"Hi! Would you like to activate your version of Revolution Slider to receive " +"live updates & get premium support? This is optional and not needed if the " +"slider came bundled with a theme. " +msgstr "" +"Hello ! Szeretned a Revolution Slidert aktivalni, hogy kaphass live " +"Updateket es Premium Supportot ? Ez Opcionalis, es nem szükseges ha a Slider " +"Themmel egyutt jott." + +#: ../admin/revslider-admin.class.php:342 +msgid "Close & don't show againX" +msgstr "Ne mutasd ezt a figyelmeztetest meg egyszer.X" + +#: ../admin/revslider-admin.class.php:415 +msgid "Choose Slide Template" +msgstr "Valassz Slide Sablont" + +#: ../admin/revslider-admin.class.php:511 +msgid "importing slider settings and data..." +msgstr "Slider Beallitasok es Adatok importalasa..." + +#: ../admin/revslider-admin.class.php:527 ../admin/revslider-admin.class.php:548 . +#: ./admin/revslider-admin.class.php:572 +msgid "Go Back" +msgstr "Vissza" + +#: ../admin/revslider-admin.class.php:530 ../admin/revslider-admin.class.php:574 +msgid "Slider Import Success, redirecting..." +msgstr "Slide Importalasa sikeres, tovabbitas..." + +#: ../admin/revslider-admin.class.php:543 +msgid "importing template slider settings and data..." +msgstr "Slider Beallitasok es Adatok importalasa..." + +#: ../admin/revslider-admin.class.php:547 +msgid "ID missing, something went wrong. Please try again!" +msgstr "" +"ID Hianyzik, valami nem müködik rendesen, kerlek probald meg kesobb meg " +"egyszer!" + +#: ../admin/revslider-admin.class.php:607 ../admin/revslider-admin.class.php:1322 +#: ../admin/revslider-admin.class.php:1328 +msgid "Slider not found" +msgstr "Slider nem tallhato" + +#: ../admin/revslider-admin.class.php:619 +msgid "Slider setting could not be changed" +msgstr "Slider beállítást nem lehet változtatni" + +#: ../admin/revslider-admin.class.php:651 ../includes/operations.class.php:2954 +msgid "Missing values to add preset" +msgstr "hiányzó értékeket nem lehet Presethez adni" + +#: ../admin/revslider-admin.class.php:659 ../admin/revslider-admin.class.php:676 +msgid "Preset created" +msgstr "Preset Elkeszitve" + +#: ../admin/revslider-admin.class.php:668 ../includes/operations.class.php:3000 +msgid "Missing values to update preset" +msgstr "Hianyzo ertekek a Preset felülirasahoz" + +#: ../admin/revslider-admin.class.php:685 ../includes/operations.class.php:2976 +msgid "Missing values to remove preset" +msgstr "Hianyzo ertekek a Preset eltavolitasahoz" + +#: ../admin/revslider-admin.class.php:693 +msgid "Preset deleted" +msgstr "Preset Törölve" + +#: ../admin/revslider-admin.class.php:739 +msgid "Slider created" +msgstr "Slider elkeszitve" + +#: ../admin/revslider-admin.class.php:745 +msgid "Slider updated" +msgstr "Slider frissitve" + +#: ../admin/revslider-admin.class.php:754 +msgid "Template can't be deleted, it is still being used by the following Sliders: " +msgstr "Sablont nem lehet törölni , még mindig használják a következő Sliderek:" + +#: ../admin/revslider-admin.class.php:757 ../admin/revslider-admin.class.php:759 +msgid "Slider deleted" +msgstr "Slider törölve" + +#: ../admin/revslider-admin.class.php:767 ../admin/revslider-admin.class.php:842 +msgid "Success! Refreshing page..." +msgstr "Sikeressen befejezve! Oldal ujratöltese..." + +#: ../admin/revslider-admin.class.php:775 +msgid "Slide Created" +msgstr "Slide elkeszitve" + +#: ../admin/revslider-admin.class.php:777 +msgid "Slides Created" +msgstr "Slideok elkeszitve" + +#: ../admin/revslider-admin.class.php:787 +msgid "Slide Created, redirecting..." +msgstr "" +"Slide elkeszitve, \n" +"átirányítás..." + +#: ../admin/revslider-admin.class.php:793 +msgid "Missing redirect ID!" +msgstr "" +"Hianyzik az \n" +"átirányítás ID!" + +#: ../admin/revslider-admin.class.php:800 +msgid "Slide copied to current Slider, redirecting..." +msgstr "" +"Slide az aktualis Sliderbe masolva, \n" +"átirányítás..." + +#: ../admin/revslider-admin.class.php:806 +msgid "Slide updated" +msgstr "Slide frissitve" + +#: ../admin/revslider-admin.class.php:810 +msgid "Static Global Layers updated" +msgstr "Static Layers Felülirva" + +#: ../admin/revslider-admin.class.php:816 +msgid "Post deleted" +msgstr "Post törölve" + +#: ../admin/revslider-admin.class.php:818 +msgid "Slide deleted" +msgstr "Slide törölve" + +#: ../admin/revslider-admin.class.php:831 ../admin/revslider-admin.class.php:833 +msgid "Slide duplicated" +msgstr "Slide duplikalva" + +#: ../admin/revslider-admin.class.php:840 +msgid "Success!" +msgstr "Sikeres! " + +#: ../admin/revslider-admin.class.php:848 +msgid "No valid Slide ID given" +msgstr "" +"Beadott Slide ID nem \n" +"érvényes" + +#: ../admin/revslider-admin.class.php:852 ../admin/revslider-admin.class.php:856 +msgid "No valid title given" +msgstr "Beadott Cim nem ervenyes" + +#: ../admin/revslider-admin.class.php:863 +msgid "Could not save Slide as Template" +msgstr "Slide nem menthetö mint Sablon" + +#: ../admin/revslider-admin.class.php:879 +msgid "Slide added to Templates" +msgstr "Slide Sablonhoz hozzaadva" + +#: ../admin/revslider-admin.class.php:907 ../admin/revslider-admin.class.php:929 . +#: ./admin/revslider-admin.class.php:950 ../admin/revslider-admin.class.php:999 +msgid "CSS saved" +msgstr "CSS Mentve" + +#: ../admin/revslider-admin.class.php:910 ../admin/revslider-admin.class.php:932 . +#: ./admin/revslider-admin.class.php:953 +msgid "CSS could not be saved" +msgstr "CSS-t nem lehetett menteni" + +#: ../admin/revslider-admin.class.php:971 +msgid "Class name renamed" +msgstr "Class atnevezve" + +#: ../admin/revslider-admin.class.php:987 +msgid "Style deleted!" +msgstr "Style törölve!" + +#: ../admin/revslider-admin.class.php:1003 ../admin/revslider-admin.class.php: +#: 1007 ../admin/revslider-admin.class.php:1011 +msgid "Animation saved" +msgstr "Animacio mentve" + +#: ../admin/revslider-admin.class.php:1015 +msgid "Animation deleted" +msgstr "Animacio törölve" + +#: ../admin/revslider-admin.class.php:1019 +msgid "Order updated" +msgstr "Rendezes frissitve" + +#: ../admin/revslider-admin.class.php:1023 +msgid "Title updated" +msgstr "Cim frissitve" + +#: ../admin/revslider-admin.class.php:1028 +msgid "Slide changed" +msgstr "Slide valtoztatva" + +#: ../admin/revslider-admin.class.php:1048 +msgid "Slide is now the new active Hero Slide" +msgstr "A Slide most az uj Aktualis Hero Slide" + +#: ../admin/revslider-admin.class.php:1056 +msgid "General settings updated" +msgstr "General Settings frissitve" + +#: ../admin/revslider-admin.class.php:1060 +msgid "Sortby updated" +msgstr "Sortby frissitve" + +#: ../admin/revslider-admin.class.php:1064 +msgid "Image urls replaced" +msgstr "Kep urlek cserelve" + +#: ../admin/revslider-admin.class.php:1068 +msgid "Settings in all Slides changed" +msgstr "Beallitasok az osszes Slide-ban megvaltoztatva" + +#: ../admin/revslider-admin.class.php:1075 +msgid "The API key, the Purchase Code and the Username need to be set!" +msgstr "Az API Kulcsot, a Vasarlasi Kodot es a Felhasznalo nevet meg kell adni ! " + +#: ../admin/revslider-admin.class.php:1080 +msgid "Purchase Code Successfully Activated" +msgstr "Vasarlasi Kod sikeresen aktivalva" + +#: ../admin/revslider-admin.class.php:1082 +msgid "Purchase Code is invalid" +msgstr "Vasarlasi kod nem ervenyes" + +#: ../admin/revslider-admin.class.php:1089 +msgid "Successfully removed validation" +msgstr "Aktivalas törölve" + +#: ../admin/revslider-admin.class.php:1091 +msgid "Could not remove Validation!" +msgstr "Nem lehet aktivalast törölni" + +#: ../admin/revslider-admin.class.php:1096 ../admin/revslider-admin.class.php:1103 +msgid "." +msgstr "." + +#: ../admin/revslider-admin.class.php:1109 +msgid "Setting Changed!" +msgstr "Beallitas megvaltoztatva!" + +#: ../admin/revslider-admin.class.php:1114 +msgid "No ID given" +msgstr "ID nem talalhato" + +#: ../admin/revslider-admin.class.php:1124 ../admin/revslider-admin.class.php:1142 +msgid "Invalid Email" +msgstr "Rossz Email Cim" + +#: ../admin/revslider-admin.class.php:1127 +msgid "Success! Please check your Emails to finish the subscribtion" +msgstr "Folyamat Sikeres! Kerlek ellenörizd az Emaileket hogy lezard a feliratkozast" + +#: ../admin/revslider-admin.class.php:1130 ../admin/revslider-admin.class.php:1148 +msgid "Invalid Email/Could not connect to the Newsletter server" +msgstr "Érvénytelen e-mail / Nem lehet kapcsolódni a hírlevél szerver" + +#: ../admin/revslider-admin.class.php:1133 ../admin/revslider-admin.class.php:1151 +msgid "No Email given" +msgstr "Nincs Email Cim megadva" + +#: ../admin/revslider-admin.class.php:1145 +msgid "Success! Please check your Emails to finish the process" +msgstr "Folyamat Sikeres! Kerlek ellenörizd az Emaileket hogy lezard a feliratkozast" + +#: ../admin/revslider-admin.class.php:1171 +msgid "Navigation saved/updated" +msgstr "Navigacio mentve/valtoztatva" + +#: ../admin/revslider-admin.class.php:1179 +msgid "Navigations updated" +msgstr "Navigacio megvaltoztatva" + +#: ../admin/revslider-admin.class.php:1190 +msgid "Navigation deleted" +msgstr "Navigacio Törölve" + +#: ../admin/revslider-admin.class.php:1194 +msgid "Wrong ID given" +msgstr "Rossz ID megadasa" + +#: ../admin/revslider-admin.class.php:1201 +msgid "Successfully fetched Facebook albums" +msgstr "Facebook albumok sikeres beolvasasa" + +#: ../admin/revslider-admin.class.php:1204 +msgid "Could not fetch Facebook albums" +msgstr "" +"Facebook albumokat nem lehetett \n" +"beolvasni" + +#: ../admin/revslider-admin.class.php:1209 +msgid "Cleared Albums" +msgstr "Albumok sikeresen kitakaritva" + +#: ../admin/revslider-admin.class.php:1218 +msgid "Successfully fetched flickr photosets" +msgstr "" +"Flickr Foto szettek sikeres \n" +"beolvasasa" + +#: ../admin/revslider-admin.class.php:1221 +msgid "Could not fetch flickr photosets" +msgstr "Flickr photo szetteket nem lehet beolvasni" + +#: ../admin/revslider-admin.class.php:1227 +msgid "Cleared Photosets" +msgstr "Foto Szettek kitakaritva" + +#: ../admin/revslider-admin.class.php:1230 +msgid "No User URL - Could not fetch flickr photosets" +msgstr "Nem Felhasználó URL - Nem sikerült beolvasni a flickr Foto szetteket" + +#: ../admin/revslider-admin.class.php:1234 +msgid "No API KEY - Could not fetch flickr photosets" +msgstr "Nincs API Kulcs, nem lehetett Flickr Foto szetteket beolvasni" + +#: ../admin/revslider-admin.class.php:1243 +msgid "Successfully fetched YouTube playlists" +msgstr "YouTube listak sikeres beolvasasa" + +#: ../admin/revslider-admin.class.php:1246 +msgid "Could not fetch YouTube playlists" +msgstr "Nem lehetett YouTube listakat olvasni" + +#: ../admin/revslider-admin.class.php:1332 +msgid "No Data Received" +msgstr "Nem erkezett adat" + +#: ../admin/revslider-admin.class.php:1342 +msgid "Loading Error" +msgstr "Hiba Töltes közben" + +#: ../admin/revslider-admin.class.php:1344 +msgid "Loading Error: " +msgstr "Hiba töltes közben:" + +#: ../admin/views/master-view.php:55 ../admin/views/system/validation.php:52 +msgid "Please Wait..." +msgstr "Kerlek varj..." + +#: ../admin/views/navigation-editor.php:33 +msgid "Select the Navigation Category to Edit" +msgstr "Valassz egy Navigacio Kategoriat szerkeszteni" + +#: ../admin/views/navigation-editor.php:33 +msgid "Add New" +msgstr "Új Hozzáadása" + +#: ../admin/views/navigation-editor.php:36 +msgid "#ID" +msgstr "#ID" + +#: ../admin/views/navigation-editor.php:37 +msgid "Skin Name" +msgstr "Skin Nev" + +#: ../admin/views/navigation-editor.php:40 ../admin/views/templates/slider-main- +#: options.php:2456 +msgid "Thumbs" +msgstr "Thumbs" + +#: ../admin/views/navigation-editor.php:42 ../admin/views/navigation-editor.php: +#: 67 ../admin/views/templates/slide-stage.php:34 +msgid "Actions" +msgstr "Akciok" + +#: ../admin/views/navigation-editor.php:58 +msgid "Editing" +msgstr "Szerkesztés" + +#: ../admin/views/navigation-editor.php:58 ../admin/views/system/dialog-video.php: +#: 227 +msgid "Remove" +msgstr "Eltávolít" + +#: ../admin/views/navigation-editor.php:61 +msgid "Markup" +msgstr "Markup" + +#: ../admin/views/navigation-editor.php:69 ../admin/views/navigation-editor.php: +#: 70 ../admin/views/navigation-editor.php:71 ../admin/views/navigation-editor. +#: php:72 +msgid "Reset Defaults" +msgstr "alapértékek visszaallitasa" + +#: ../admin/views/navigation-editor.php:73 +msgid "Parameters" +msgstr "Parameterek" + +#: ../admin/views/navigation-editor.php:75 ../admin/views/templates/slide-general- +#: settings.php:484 +msgid "Slide Title" +msgstr "Slide Cime" + +#: ../admin/views/navigation-editor.php:76 +msgid "Slide Description" +msgstr "" +"Slide \n" +"leírás" + +#: ../admin/views/navigation-editor.php:80 +msgid "Parameter " +msgstr "Parameter" + +#: ../admin/views/navigation-editor.php:94 ../includes/operations.class.php:1409 +msgid "CSS" +msgstr "CSS" + +#: ../admin/views/navigation-editor.php:100 +msgid "Style Helper" +msgstr "Style Segitö" + +#: ../admin/views/navigation-editor.php:102 +msgid "Color Value" +msgstr "Szin Ertek" + +#: ../admin/views/navigation-editor.php:106 ../admin/views/navigation-editor.php: +#: 120 ../admin/views/navigation-editor.php:138 ../admin/views/navigation-editor. +#: php:154 ../admin/views/navigation-editor.php:170 ../admin/views/navigation- +#: editor.php:184 ../admin/views/templates/template-selector.php:17 .. +#: admin/views/templates/template-slider-selector.php:16 +msgid "Add" +msgstr "hozzáad" + +#: ../admin/views/navigation-editor.php:109 ../admin/views/templates/slide-stage. +#: php:2157 ../admin/views/templates/slider-main-options.php:3248 +msgid "Border Radius" +msgstr "" +"Keret \n" +"sugár" + +#: ../admin/views/navigation-editor.php:111 +msgid "Top Left" +msgstr "bal felső" + +#: ../admin/views/navigation-editor.php:113 +msgid "Top Right" +msgstr "jobb felső" + +#: ../admin/views/navigation-editor.php:115 +msgid "Bottom Right" +msgstr "jobb alsó" + +#: ../admin/views/navigation-editor.php:117 +msgid "Bottom Left" +msgstr "bal alsó" + +#: ../admin/views/navigation-editor.php:123 ../admin/views/templates/slide-stage. +#: php:244 ../admin/views/templates/slide-stage.php:512 .. +#: admin/views/templates/slide-stage.php:2005 ../admin/views/templates/slide- +#: stage.php:2070 ../admin/views/templates/slide-stage.php:2136 +msgid "Border" +msgstr "Keret" + +#: ../admin/views/navigation-editor.php:125 ../admin/views/templates/slider-main- +#: options.php:2108 ../admin/views/templates/slider-main-options.php:2540 .. +#: admin/views/templates/slider-main-options.php:2570 .. +#: admin/views/templates/slider-main-options.php:2683 .. +#: admin/views/templates/slider-main-options.php:2853 .. +#: admin/views/templates/slider-main-options.php:3021 .. +#: admin/views/templates/slider-main-options.php:3356 +msgid "Top" +msgstr "felső" + +#: ../admin/views/navigation-editor.php:127 ../admin/views/templates/slide-stage. +#: php:282 ../admin/views/templates/slider-main-options.php:2318 .. +#: admin/views/templates/slider-main-options.php:2533 .. +#: admin/views/templates/slider-main-options.php:2562 .. +#: admin/views/templates/slider-main-options.php:2677 .. +#: admin/views/templates/slider-main-options.php:2847 .. +#: admin/views/templates/slider-main-options.php:3015 .. +#: admin/views/templates/slider-main-options.php:3350 +msgid "Right" +msgstr "Jobb" + +#: ../admin/views/navigation-editor.php:129 ../admin/views/templates/slider-main- +#: options.php:2109 ../admin/views/templates/slider-main-options.php:2542 .. +#: admin/views/templates/slider-main-options.php:2572 .. +#: admin/views/templates/slider-main-options.php:2685 .. +#: admin/views/templates/slider-main-options.php:2855 .. +#: admin/views/templates/slider-main-options.php:3023 .. +#: admin/views/templates/slider-main-options.php:3358 +msgid "Bottom" +msgstr "alsó" + +#: ../admin/views/navigation-editor.php:131 ../admin/views/templates/slide-stage. +#: php:280 ../admin/views/templates/slider-main-options.php:2316 .. +#: admin/views/templates/slider-main-options.php:2531 .. +#: admin/views/templates/slider-main-options.php:2560 .. +#: admin/views/templates/slider-main-options.php:2675 .. +#: admin/views/templates/slider-main-options.php:2845 .. +#: admin/views/templates/slider-main-options.php:3013 .. +#: admin/views/templates/slider-main-options.php:3348 +msgid "Left" +msgstr "bal" + +#: ../admin/views/navigation-editor.php:133 ../admin/views/navigation-editor.php: +#: 149 ../admin/views/navigation-editor.php:165 ../admin/views/templates/slide- +#: stage.php:751 ../admin/views/templates/slide-stage.php:927 +msgid "Opacity" +msgstr "" +"átll\n" +"áthato\n" +"ság" + +#: ../admin/views/navigation-editor.php:141 +msgid "Text-Shadow" +msgstr "Text Arnyek" + +#: ../admin/views/navigation-editor.php:143 ../admin/views/navigation-editor.php: +#: 159 ../admin/views/templates/slide-stage.php:1127 +msgid "Angle" +msgstr "Szög" + +#: ../admin/views/navigation-editor.php:145 ../admin/views/navigation-editor.php: +#: 161 +msgid "Distance" +msgstr "Távolság" + +#: ../admin/views/navigation-editor.php:147 ../admin/views/navigation-editor.php: +#: 163 +msgid "Blur" +msgstr "homályossag" + +#: ../admin/views/navigation-editor.php:157 +msgid "Box-Shadow" +msgstr "Box-Shadow" + +#: ../admin/views/navigation-editor.php:173 ../admin/views/templates/slide-stage. +#: php:153 ../admin/views/templates/slide-stage.php:154 .. +#: admin/views/templates/slide-stage.php:2030 ../admin/views/templates/slide- +#: stage.php:2031 +msgid "Font Family" +msgstr "Font Csalad" + +#: ../admin/views/navigation-editor.php:190 +msgid "Resets" +msgstr "Visszaallitasok" + +#: ../admin/views/navigation-editor.php:192 ../admin/views/navigation-editor.php: +#: 194 ../admin/views/navigation-editor.php:196 ../admin/views/navigation-editor. +#: php:198 +msgid "Classes & Style" +msgstr "Osztalyok es Stilusok" + +#: ../admin/views/navigation-editor.php:193 ../admin/views/navigation-editor.php: +#: 195 ../admin/views/navigation-editor.php:197 ../admin/views/navigation-editor. +#: php:199 +msgid "Only Classes" +msgstr "Csak Osztalyok" + +#: ../admin/views/navigation-editor.php:218 +msgid "Live Preview - Hover & Click for test" +msgstr "Elö Teszt, Hover es Click a teszthez" + +#: ../admin/views/navigation-editor.php:220 +msgid "Suggested Width:" +msgstr "Javasolt Szelesseg:" + +#: ../admin/views/navigation-editor.php:222 +msgid "Suggested Height:" +msgstr "Javasolt Magassag:" + +#: ../admin/views/navigation-editor.php:241 +msgid "Save All Changes" +msgstr "Ments mindent" + +#: ../admin/views/navigation-editor.php:302 +msgid "View" +msgstr "Megtekintes" + +#: ../admin/views/navigation-editor.php:302 +msgid "Edit" +msgstr "Szerkesztes" + +#: ../admin/views/navigation-editor.php:1236 +msgid "Custom Navigations" +msgstr "Sajat Navigacio" + +#: ../admin/views/navigation-editor.php:1239 +msgid "Default Navigations" +msgstr "Alap Navigacio" + +#: ../admin/views/slide-editor.php:312 +msgid "Slider:" +msgstr "Slider:" + +#: ../admin/views/slide-editor.php:315 +msgid "Edit Template Slide" +msgstr "Sablon Slide szerkesztese" + +#: ../admin/views/slide-editor.php:317 ../admin/views/templates/slides-list.php: +#: 107 ../admin/views/templates/wpml-selector.php:10 +msgid "Edit Slide" +msgstr "Slide Szerkesztese" + +#: ../admin/views/slide-editor.php:319 ../admin/views/slider-overview.php:290 +msgid "Title:" +msgstr "Cim:" + +#: ../admin/views/slide-editor.php:322 ../admin/views/slider-overview.php:67 .. +#: admin/views/templates/slider-main-options.php:33 .. +#: admin/views/templates/slides.php:10 +msgid "Help" +msgstr "Segít" + +#: ../admin/views/slide-editor.php:351 +msgid "" +"Warning!!! The jquery ui javascript include that is loaded by some of " +"the plugins are custom made and not contain needed components like " +"'autocomplete' or 'draggable' function.\n" +" Without those functions the editor may not work correctly. Please remove " +"those custom jquery ui includes in order the editor will work correctly." +msgstr "" +" Figyelem !!! A betötltött jQuery Ui javascript nem hivatalos, es " +"néhány plugin nem all rendelkezésre mint peldaul az \" autocomplete \" vagy \" " +"draggable \" funkciók.\n" +"Ezek a funkciók nelkül a szerkesztő nem működik megfelelően. Kérjük, " +"távolítsa el az egyéni jQuery Ui verziot annak érdekében, hogy a szerkesztő " +"helyesen működjön." + +#: ../admin/views/slide-editor.php:365 +msgid "Insert Meta" +msgstr "Meta beszurasa" + +#: ../admin/views/slide-editor.php:372 +msgid "Post Replace Placeholders:" +msgstr "Helyörzök csereje" + +#: ../admin/views/slide-editor.php:374 +msgid "Any custom meta tag" +msgstr "Egyeni Meta Tag" + +#: ../admin/views/slide-editor.php:375 ../admin/views/slide-editor.php:421 +msgid "Post Title" +msgstr "" +"Hozzászólás\n" +" Cime" + +#: ../admin/views/slide-editor.php:376 +msgid "Post Excerpt" +msgstr "" +"Hozzászólás\n" +" reszlet" + +#: ../admin/views/slide-editor.php:377 +msgid "Post Alias" +msgstr "" +"Hozzászólás\n" +" Alias" + +#: ../admin/views/slide-editor.php:378 ../admin/views/slide-editor.php:422 +msgid "Post content" +msgstr "Hozzászólás Tartalma" + +#: ../admin/views/slide-editor.php:379 ../admin/views/slide-editor.php:423 .. +#: admin/views/slide-editor.php:531 +msgid "The link to the post" +msgstr "" +"A Link a \n" +"Hozzászóláshoz" + +#: ../admin/views/slide-editor.php:380 ../admin/views/slide-editor.php:424 .. +#: admin/views/slide-editor.php:445 +msgid "Date created" +msgstr "Keszites Idöpontja" + +#: ../admin/views/slide-editor.php:381 +msgid "Date modified" +msgstr "Modositas Idöpontja" + +#: ../admin/views/slide-editor.php:382 +msgid "Author name" +msgstr "Keszitö neve" + +#: ../admin/views/slide-editor.php:383 +msgid "Number of comments" +msgstr "A Hozzaszolasok szama" + +#: ../admin/views/slide-editor.php:384 +msgid "List of categories with links" +msgstr "Kategoriak Listaja Linkekkel" + +#: ../admin/views/slide-editor.php:385 +msgid "List of tags with links" +msgstr "Tag-ok Listaja linkekkel" + +#: ../admin/views/slide-editor.php:389 +msgid "Featured Image URL" +msgstr "Kiemelt Kép URL" + +#: ../admin/views/slide-editor.php:390 +msgid "Featured Image <img />" +msgstr "" +"Kiemelt Kép \n" +" <img />" + +#: ../admin/views/slide-editor.php:398 +msgid "Events Placeholders:" +msgstr "Esemény Helytartok:" + +#: ../admin/views/slide-editor.php:400 +msgid "Event start date" +msgstr "Esemény kezdese" + +#: ../admin/views/slide-editor.php:401 +msgid "Event end date" +msgstr "Esemény befejezese" + +#: ../admin/views/slide-editor.php:402 +msgid "Event start time" +msgstr "Esemény kezdesi idöpontja" + +#: ../admin/views/slide-editor.php:403 +msgid "Event end time" +msgstr "Esemény befejezesi idöpontja" + +#: ../admin/views/slide-editor.php:404 +msgid "Event ID" +msgstr "Esemény ID" + +#: ../admin/views/slide-editor.php:405 +msgid "Event location name" +msgstr "Esemény helye" + +#: ../admin/views/slide-editor.php:406 +msgid "Event location slug" +msgstr "A rendezvény helyszíne slug" + +#: ../admin/views/slide-editor.php:407 +msgid "Event location address" +msgstr "Esemény cime" + +#: ../admin/views/slide-editor.php:408 +msgid "Event location town" +msgstr "Esemény heyle Varos" + +#: ../admin/views/slide-editor.php:409 +msgid "Event location state" +msgstr "A rendezvény helyszíne állam" + +#: ../admin/views/slide-editor.php:410 +msgid "Event location postcode" +msgstr "A rendezvény helyszíne irányítószám" + +#: ../admin/views/slide-editor.php:411 +msgid "Event location region" +msgstr "A rendezvény helyszíne régióban" + +#: ../admin/views/slide-editor.php:412 +msgid "Event location country" +msgstr "A rendezvény helyszíne ország" + +#: ../admin/views/slide-editor.php:425 ../admin/views/slide-editor.php:446 .. +#: admin/views/slide-editor.php:468 ../admin/views/slide-editor.php:491 .. +#: admin/views/slide-editor.php:533 +msgid "Username" +msgstr "Felhasznalo neve" + +#: ../admin/views/slide-editor.php:426 +msgid "Views" +msgstr "Megtekintesek" + +#: ../admin/views/slide-editor.php:430 ../admin/views/slide-editor.php:452 .. +#: admin/views/slide-editor.php:474 ../admin/views/slide-editor.php:496 .. +#: admin/views/slide-editor.php:516 ../admin/views/slide-editor.php:540 +msgid "Image URL" +msgstr "Kép URL" + +#: ../admin/views/slide-editor.php:431 ../admin/views/slide-editor.php:453 .. +#: admin/views/slide-editor.php:475 ../admin/views/slide-editor.php:497 .. +#: admin/views/slide-editor.php:517 ../admin/views/slide-editor.php:541 +msgid "Image <img />" +msgstr "" +"Kép \n" +"<img />" + +#: ../admin/views/slide-editor.php:442 ../admin/views/slide-editor.php:464 .. +#: admin/views/slide-editor.php:486 ../admin/views/slide-editor.php:508 .. +#: admin/views/slide-editor.php:528 ../admin/views/templates/slide-stage.php: +#: 1241 ../admin/views/templates/slider-main-options.php:433 ../includes/widget. +#: class.php:61 +msgid "Title" +msgstr "Cim" + +#: ../admin/views/slide-editor.php:443 ../admin/views/slide-editor.php:465 .. +#: admin/views/slide-editor.php:487 ../admin/views/slide-editor.php:510 .. +#: admin/views/slide-editor.php:530 +msgid "Content" +msgstr "Tartalom" + +#: ../admin/views/slide-editor.php:444 ../admin/views/slide-editor.php:466 .. +#: admin/views/slide-editor.php:488 ../admin/views/slide-editor.php:512 +msgid "Link" +msgstr "Link" + +#: ../admin/views/slide-editor.php:447 ../admin/views/slide-editor.php:492 .. +#: admin/views/slide-editor.php:534 +msgid "Number of Likes" +msgstr "" +"Likes \n" +"Száma" + +#: ../admin/views/slide-editor.php:448 ../admin/views/slide-editor.php:536 +msgid "Number of Comments" +msgstr "Hozzászólások száma" + +#: ../admin/views/slide-editor.php:467 ../admin/views/slide-editor.php:489 .. +#: admin/views/slide-editor.php:511 ../admin/views/slide-editor.php:532 +msgid "Pulbishing Date" +msgstr "Pulbishing dátuma" + +#: ../admin/views/slide-editor.php:490 +msgid "Last Modify Date" +msgstr "Módosítás dátuma" + +#: ../admin/views/slide-editor.php:509 ../admin/views/slide-editor.php:529 +msgid "Excerpt" +msgstr "Részlet" + +#: ../admin/views/slide-editor.php:535 +msgid "Number of Views" +msgstr "Olvasások száma" + +#: ../admin/views/slide-editor.php:552 ../admin/views/templates/slide-stage.php: +#: 250 ../admin/views/templates/slide-stage.php:515 +msgid "Advanced CSS" +msgstr "Reszletes CSS" + +#: ../admin/views/slide-editor.php:555 +msgid "Style from Options" +msgstr "Opciok Stilusa" + +#: ../admin/views/slide-editor.php:555 +msgid "Editable via Option Fields, Saved in the Class:" +msgstr "" +"Szerkeszthető Option Fields \n" +"keresztül\n" +", a Class-ban mentve :" + +#: ../admin/views/slide-editor.php:559 +msgid "Additional Custom Styling" +msgstr "További Custom Styling" + +#: ../admin/views/slide-editor.php:559 +msgid "Appended in the Class:" +msgstr "Classhoz hozzafüzve:" + +#: ../admin/views/slide-editor.php:564 ../admin/views/slide-editor.php:583 .. +#: admin/views/templates/slide-stage.php:86 ../admin/views/templates/slide-stage. +#: php:701 ../admin/views/templates/slide-stage.php:876 +msgid "Save As" +msgstr "Mentés másként\n" + +#: ../admin/views/slide-editor.php:566 ../admin/views/slide-editor.php:585 +msgid "Save As:" +msgstr "Mentés másként:" + +#: ../admin/views/slide-editor.php:570 +msgid "Rename CSS" +msgstr "CSS Atnevezese" + +#: ../admin/views/slide-editor.php:572 ../admin/views/slide-editor.php:899 +msgid "Rename to:" +msgstr "Nevezd at:" + +#: ../admin/views/slide-editor.php:576 +msgid "Layer Inline CSS" +msgstr "Layer belsö CSS" + +#: ../admin/views/slide-editor.php:578 +msgid "Advanced Custom Styling" +msgstr "Részletes Custom Styling" + +#: ../admin/views/slide-editor.php:578 +msgid "Appended Inline to the Layer Markup" +msgstr "Kiadvva a Layer markupban inline" + +#: ../admin/views/slide-editor.php:589 +msgid "Save Under" +msgstr "Mentés másként" + +#: ../admin/views/slide-editor.php:591 +msgid "Save Under:" +msgstr "Mentés másként:" + +#: ../admin/views/slide-editor.php:839 ../admin/views/slide-editor.php:881 +msgid "Save Slide" +msgstr "Slide Mentese" + +#: ../admin/views/slide-editor.php:843 +msgid "Update Static Layers" +msgstr "Static Layerek frissitese" + +#: ../admin/views/slide-editor.php:847 +msgid "updating" +msgstr "frissites" + +#: ../admin/views/slide-editor.php:849 ../admin/views/slide-editor.php:887 .. +#: admin/views/slide-overview.php:169 +msgid "Slider Settings" +msgstr "Slider Beallitasok" + +#: ../admin/views/slide-editor.php:850 +msgid "Slides Overview" +msgstr "" +"Slide \n" +"áttekintés" + +#: ../admin/views/slide-editor.php:855 ../admin/views/templates/wpml-selector.php:9 +msgid "Delete Slide" +msgstr "Slide törlese" + +#: ../admin/views/slide-editor.php:877 +msgid "CSS Global" +msgstr "" +"Globális \n" +"CSS " + +#: ../admin/views/slide-editor.php:891 ../admin/views/templates/slider-main- +#: options.php:1434 ../admin/views/templates/slider-main-options.php:4449 .. +#: admin/views/templates/sliders-list.php:169 +msgid "Preview" +msgstr "Előnézet" + +#: ../admin/views/slide-editor.php:897 +msgid "Rename Animation" +msgstr "Animacio atnevezese" + +#: ../admin/views/slide-editor.php:922 +msgid "Delete this slide?" +msgstr "Ezt a Slide-ot Törölni?" + +#: ../admin/views/slide-overview.php:51 +msgid "New Post" +msgstr "Uj Posta" + +#: ../admin/views/slide-overview.php:61 +msgid "Edit Posts" +msgstr "Postak szerkesztese" + +#: ../admin/views/slide-overview.php:65 +msgid "This is a list of posts that are taken from multiple sources." +msgstr "Ez egy lista a Postakbol , melyek különbözö forrásból erednek." + +#: ../admin/views/slide-overview.php:67 +msgid "Sort by" +msgstr "Sorrend" + +#: ../admin/views/slide-overview.php:70 +msgid "Updating Sorting..." +msgstr "Sorrend frissitese" + +#: ../admin/views/slide-overview.php:75 ../admin/views/templates/slides-list.php:5 +msgid "Post List" +msgstr "Postak Listaja" + +#: ../admin/views/slide-overview.php:76 ../admin/views/templates/slides-list.php:6 +msgid "Saving Order" +msgstr "Mentes sorrendje" + +#: ../admin/views/slide-overview.php:80 ../admin/views/templates/slides-list.php:12 +msgid "No Posts Found" +msgstr "Nem talalt Postat" + +#: ../admin/views/slide-overview.php:133 +msgid "Unpublish Post" +msgstr "Postat Elrejteni" + +#: ../admin/views/slide-overview.php:135 +msgid "Publish Post" +msgstr "Postat mutatni" + +#: ../admin/views/slide-overview.php:140 +msgid "Edit Post" +msgstr "Postat szerkeszteni" + +#: ../admin/views/slide-overview.php:144 ../admin/views/slide-overview.php:146 +msgid "" +"Click to change the slide image. Note: The post featured image will be " +"changed." +msgstr "" +"Kattints a kep változtatasahoz. Megjegyzés : Az Posta kiemelet képe is meg " +"fog változni." + +#: ../admin/views/slide-overview.php:146 +msgid "no image" +msgstr "Nincs kep" + +#: ../admin/views/slide-overview.php:150 ../admin/views/templates/slide-selector. +#: php:233 ../admin/views/templates/slide-stage.php:89 .. +#: admin/views/templates/slide-stage.php:704 ../admin/views/templates/slide- +#: stage.php:879 ../admin/views/templates/sliders-list.php:167 .. +#: admin/views/templates/slides-list.php:134 +msgid "Delete" +msgstr "Törles" + +#: ../admin/views/slide-overview.php:173 +msgid "" +"Warning! Removing this entry will cause the original wordpress post to be " +"deleted." +msgstr "" +"Figyelem! Ennek a \n" +"bejegyzésnek az e\n" +"ltávolítása az eredeti wordpress Postajank a törleset is jelenti." + +#: ../admin/views/slider-overview.php:69 +msgid "Global Settings" +msgstr "Globális beállítások" + +#: ../admin/views/slider-overview.php:81 +msgid "Sort By:" +msgstr "Sorrend:" + +#: ../admin/views/slider-overview.php:83 +msgid "By ID" +msgstr "ID" + +#: ../admin/views/slider-overview.php:84 +msgid "By Name" +msgstr "Nev" + +#: ../admin/views/slider-overview.php:85 +msgid "By Type" +msgstr "Tipus" + +#: ../admin/views/slider-overview.php:86 +msgid "By Favorit" +msgstr "Favorit" + +#: ../admin/views/slider-overview.php:89 +msgid "Filter By:" +msgstr "Szűrés:" + +#: ../admin/views/slider-overview.php:92 ../admin/views/templates/slider-main- +#: options.php:3551 +msgid "All" +msgstr "Mind" + +#: ../admin/views/slider-overview.php:93 ../admin/views/templates/sliders-list. +#: php:33 +msgid "Posts" +msgstr "Hozzaszollasok" + +#: ../admin/views/slider-overview.php:94 ../admin/views/templates/slider-main- +#: options.php:155 ../admin/views/templates/sliders-list.php:21 +msgid "Gallery" +msgstr "Galleriak" + +#: ../admin/views/slider-overview.php:95 ../admin/views/system/dialog-video.php: +#: 30 ../admin/views/templates/sliders-list.php:74 +msgid "Vimeo" +msgstr "Vimeo" + +#: ../admin/views/slider-overview.php:96 ../admin/views/system/dialog-video.php: +#: 28 ../admin/views/templates/sliders-list.php:68 +msgid "YouTube" +msgstr "YouTube" + +#: ../admin/views/slider-overview.php:97 ../admin/views/templates/sliders-list. +#: php:50 +msgid "Twitter" +msgstr "Twitter" + +#: ../admin/views/slider-overview.php:98 ../admin/views/templates/sliders-list. +#: php:44 +msgid "Facebook" +msgstr "Facebook" + +#: ../admin/views/slider-overview.php:99 ../admin/views/templates/sliders-list. +#: php:56 +msgid "Instagram" +msgstr "Instagram" + +#: ../admin/views/slider-overview.php:100 ../admin/views/templates/sliders-list. +#: php:62 +msgid "Flickr" +msgstr "Flickr" + +#: ../admin/views/slider-overview.php:111 +msgid "No Sliders Found" +msgstr "Nincsenek Sliderek" + +#: ../admin/views/slider-overview.php:126 ../admin/views/templates/slider-main- +#: options.php:4475 +msgid "Standard Embeding" +msgstr "Normalis beagyazas" + +#: ../admin/views/slider-overview.php:127 ../admin/views/templates/slider-main- +#: options.php:4476 +msgid "For the" +msgstr "Hozza:" + +#: ../admin/views/slider-overview.php:127 ../admin/views/templates/slider-main- +#: options.php:4476 +msgid "pages or posts editor" +msgstr "Oldalak vagy hozzaszollasok szerkesztoje" + +#: ../admin/views/slider-overview.php:127 ../admin/views/templates/slider-main- +#: options.php:4476 +msgid "insert the shortcode:" +msgstr "helyezze be a shortcodet :" + +#: ../admin/views/slider-overview.php:129 ../admin/views/slider-overview.php:133 . +#: ./admin/views/templates/slider-main-options.php:4478 .. +#: admin/views/templates/slider-main-options.php:4482 +msgid "From the" +msgstr "Honnan:" + +#: ../admin/views/slider-overview.php:129 ../admin/views/templates/slider-main- +#: options.php:4478 +msgid "widgets panel" +msgstr "widgets panel" + +#: ../admin/views/slider-overview.php:129 ../admin/views/templates/slider-main- +#: options.php:4478 +msgid "drag the \"Revolution Slider\" widget to the desired sidebar" +msgstr "húzza a \" Revolution Slider \" widgetet a kívánt sidebarra" + +#: ../admin/views/slider-overview.php:131 ../admin/views/templates/slider-main- +#: options.php:4480 +msgid "Advanced Embeding" +msgstr "Részletes beagyazas" + +#: ../admin/views/slider-overview.php:133 ../admin/views/templates/slider-main- +#: options.php:4482 +msgid "theme html" +msgstr "Theme Html" + +#: ../admin/views/slider-overview.php:133 ../admin/views/templates/slider-main- +#: options.php:4482 +msgid "use" +msgstr "hasznal" + +#: ../admin/views/slider-overview.php:134 ../admin/views/templates/slider-main- +#: options.php:4483 +msgid "To add the slider only to homepage use" +msgstr "Hozzáadni a Slidert csak a honlap használatahoz" + +#: ../admin/views/slider-overview.php:135 ../admin/views/templates/slider-main- +#: options.php:4484 +msgid "To add the slider on specific pages or posts use" +msgstr "Hozzáadni a slidert csak bizonyos oldalakhoz es hozzaszollasokhoz" + +#: ../admin/views/slider-overview.php:154 +msgid "Version Information" +msgstr "" +"Verzió\n" +" Informacio" + +#: ../admin/views/slider-overview.php:159 +msgid "Installed Version" +msgstr "" +"Installalt \n" +"verzió" + +#: ../admin/views/slider-overview.php:163 +msgid "Latest Stable Version" +msgstr "" +"Legújabb stabil verzió\n" +" " + +#: ../admin/views/slider-overview.php:163 +msgid "Update to Stable (Free)" +msgstr "" +"Update Stabil \n" +"verzióra (ingyenes)" + +#: ../admin/views/slider-overview.php:167 +msgid "Latest Available Version" +msgstr "Legfrissebb elerhetö verzió" + +#: ../admin/views/slider-overview.php:167 +msgid "Check Version" +msgstr "Verzió ellenőrzese" + +#: ../admin/views/slider-overview.php:179 +msgid "Need Premium Support and Live Updates ?" +msgstr "Szüksége van Prémium támogatásra és élő frissítésekre?" + +#: ../admin/views/slider-overview.php:179 +msgid "Why is this Important ?" +msgstr "Miert fontos ez?" + +#: ../admin/views/slider-overview.php:184 +msgid "Benefits" +msgstr "Elönyök" + +#: ../admin/views/slider-overview.php:186 +msgid "Get Premium Support" +msgstr "Szeretne prémium támogatást" + +#: ../admin/views/slider-overview.php:186 +msgid "" +" - We help you in case of Bugs, installation problems, and Conflicts with " +"other plugins and Themes" +msgstr "" +"- Segítünk Bugok \n" +"esetén\n" +" , telepítési problémákkal , és konfliktusok eseten más bővítményekkel és " +"témákkal" + +#: ../admin/views/slider-overview.php:187 +msgid "Live Updates" +msgstr "Elő frissítések" + +#: ../admin/views/slider-overview.php:187 +msgid "" +" - Get the latest version of our Plugin. New Features and Bug Fixes are " +"available regularly !" +msgstr "" +"- Mindig a legfrissebb változata a Pluginnak elerhetö . Új funkciók és " +"hibajavítások mindig es rendszeresen rendelkezesre allnak!" + +#: ../admin/views/slider-overview.php:204 +msgid "Information" +msgstr "Információ" + +#: ../admin/views/slider-overview.php:209 +msgid "" +"Please note that this plugin came bundled with a theme. The use of the " +"Revolution Slider is limited to this theme only.
        If you need support from " +"the Slider author ThemePunch or you want to use the Revolution slider with " +"an other theme you will need an extra single license available at CodeCanyon." +msgstr "" +"Felhívjuk figyelmét, hogy a Slider Revolution-nak a \n" +"használata \n" +"korlátozótt, es csak ebben a Temaban engedelyezett.
        Amennyiben " +"technikai segítségre van szüksége a Slider szerzőjetol, ThemePunch-tol, " +"vagy szeretné használni a Slider Revolution-t egy másik témaban, szüksége " +"lesz egy extra Licensre amit a CodeCanyon oldalan szerezhet meg." + +#: ../admin/views/slider-overview.php:220 +msgid "Newsletter" +msgstr "Hírlevél" + +#: ../admin/views/slider-overview.php:220 +msgid "Why subscribe?" +msgstr "Miért feliratkozni?" + +#: ../admin/views/slider-overview.php:226 +msgid "Unsubscribe our newsletter" +msgstr "Kijelentkezni hírlevelünkröl" + +#: ../admin/views/slider-overview.php:226 +msgid "Subscribe to our newsletter" +msgstr "Iratkozzon fel hírlevelünkre" + +#: ../admin/views/slider-overview.php:226 +msgid "Enter your E-Mail here" +msgstr "Adja meg e- mail címét" + +#: ../admin/views/slider-overview.php:227 +msgid "Subscribe" +msgstr "Előfizet" + +#: ../admin/views/slider-overview.php:229 +msgid "Unsubscribe" +msgstr "Leiratkozás" + +#: ../admin/views/slider-overview.php:230 +msgid "Cancel" +msgstr "Mégsem" + +#: ../admin/views/slider-overview.php:233 +msgid "unsubscibe from newsletter" +msgstr "Kijelentkezni hírlevelünkröl" + +#: ../admin/views/slider-overview.php:235 +msgid "Perks of subscribing to our Newsletter" +msgstr "" +"A \n" +"hírlevélre valo \n" +"feliratkozás elönyei" + +#: ../admin/views/slider-overview.php:237 +msgid "Receive info on the latest ThemePunch product updates" +msgstr "Információt kapni a legújabb ThemePunch frissítésekröl" + +#: ../admin/views/slider-overview.php:238 +msgid "Be the first to know about new products by ThemePunch and their partners" +msgstr "" +"Legyél te az első, aki megismeri az új \n" +"ThemePunch es Partner \n" +"termékeket" + +#: ../admin/views/slider-overview.php:239 +msgid "" +"Participate in polls and customer surveys that help us increase the quality " +"of our products and services" +msgstr "" +"Vegyen részt közvélemény-kutatásainkon és \n" +"ügyfél \n" +"\n" +"felméréseinken, hogy segítsen növelni a termekek \n" +"es szolgáltatások \n" +"minőség\n" +"ét" + +#: ../admin/views/slider-overview.php:248 +msgid "Update History" +msgstr "Frissítési előzmények" + +#: ../admin/views/slider-overview.php:258 ../admin/views/slider-overview.php:283 . +#: ./admin/views/templates/slider-main-options.php:3725 .. +#: admin/views/templates/sliders-list.php:190 +msgid "Import Slider" +msgstr "Import Slider" + +#: ../admin/views/slider-overview.php:264 +msgid "Choose the import file" +msgstr "Válassza ki az import fájl" + +#: ../admin/views/slider-overview.php:268 +msgid "Note: styles templates will be updated if they exist!" +msgstr "Megjegyzés : stílusok sablonok frissítésre kerülnek , ha léteznek !" + +#: ../admin/views/slider-overview.php:271 ../admin/views/templates/template- +#: selector.php:248 ../admin/views/templates/template-slider-selector.php:233 +msgid "Custom Animations:" +msgstr "Egyedi animációk :" + +#: ../admin/views/slider-overview.php:272 ../admin/views/slider-overview.php:277 . +#: ./admin/views/templates/slider-main-options.php:3714 .. +#: admin/views/templates/slider-main-options.php:3719 .. +#: admin/views/templates/template-selector.php:249 .. +#: admin/views/templates/template-selector.php:254 .. +#: admin/views/templates/template-slider-selector.php:234 .. +#: admin/views/templates/template-slider-selector.php:239 +msgid "overwrite" +msgstr "felülír" + +#: ../admin/views/slider-overview.php:273 ../admin/views/slider-overview.php:278 . +#: ./admin/views/templates/slider-main-options.php:3715 .. +#: admin/views/templates/slider-main-options.php:3720 .. +#: admin/views/templates/template-selector.php:250 .. +#: admin/views/templates/template-selector.php:255 .. +#: admin/views/templates/template-slider-selector.php:235 .. +#: admin/views/templates/template-slider-selector.php:240 +msgid "append" +msgstr "hozzafüz" + +#: ../admin/views/slider-overview.php:276 ../admin/views/templates/slide-stage. +#: php:62 ../admin/views/templates/template-selector.php:253 .. +#: admin/views/templates/template-slider-selector.php:238 +msgid "Static Styles:" +msgstr "Statik Stilusok:" + +#: ../admin/views/slider-overview.php:288 ../admin/views/templates/slide-selector. +#: php:231 ../admin/views/templates/sliders-list.php:168 .. +#: admin/views/templates/slides-list.php:136 +msgid "Duplicate" +msgstr "Duplizieren" + +#: ../admin/views/system/dialog-copy-move.php:3 +msgid "Do It!" +msgstr "Csináld!" + +#: ../admin/views/system/dialog-copy-move.php:3 +msgid "Copy / move slide" +msgstr "Copy / move slide" + +#: ../admin/views/system/dialog-copy-move.php:7 ../includes/widget.class.php:66 +msgid "Choose Slider" +msgstr "Válasszon Slidert\n" + +#: ../admin/views/system/dialog-copy-move.php:12 +msgid "Choose Operation" +msgstr "Válasszon Operatiot" + +#: ../admin/views/system/dialog-copy-move.php:15 +msgid "Copy" +msgstr "Másol" + +#: ../admin/views/system/dialog-copy-move.php:18 +msgid "Move" +msgstr "Mozgattas" + +#: ../admin/views/system/dialog-global-settings.php:25 .. +#: admin/views/templates/slide-general-settings.php:7 .. +#: admin/views/templates/slider-main-options.php:1723 +msgid "General Settings" +msgstr "Általános beállítások" + +#: ../admin/views/system/dialog-global-settings.php:36 +msgid "View Plugin Permission:" +msgstr "" +"Plugin Engedély megt\n" +"ekintese" + +#: ../admin/views/system/dialog-global-settings.php:40 +msgid "To Admin" +msgstr "Adminisztrator" + +#: ../admin/views/system/dialog-global-settings.php:41 +msgid "To Editor, Admin" +msgstr "Szerkesztoi es Adminisztrator" + +#: ../admin/views/system/dialog-global-settings.php:42 +msgid "Author, Editor, Admin" +msgstr "Szerző , szerkesztő , Admin" + +#: ../admin/views/system/dialog-global-settings.php:46 +msgid "The role of user that can view and edit the plugin" +msgstr "A felhasználó szerepe: ki lathatja és dolgozhat a Pluginnnal " + +#: ../admin/views/system/dialog-global-settings.php:52 +msgid "Include RevSlider libraries globally:" +msgstr "Globalis hasznalata a Slidernek" + +#: ../admin/views/system/dialog-global-settings.php:58 .. +#: admin/views/system/dialog-global-settings.php:92 ../admin/views/system/dialog- +#: global-settings.php:113 ../admin/views/system/dialog-global-settings.php:134 .. +#: admin/views/system/dialog-global-settings.php:187 .. +#: admin/views/system/dialog-global-settings.php:209 .. +#: admin/views/system/dialog-video.php:152 ../admin/views/templates/slider-main- +#: options.php:3652 +msgid "On" +msgstr "Be" + +#: ../admin/views/system/dialog-global-settings.php:63 .. +#: admin/views/system/dialog-global-settings.php:97 ../admin/views/system/dialog- +#: global-settings.php:118 ../admin/views/system/dialog-global-settings.php:139 .. +#: admin/views/system/dialog-global-settings.php:192 .. +#: admin/views/system/dialog-global-settings.php:214 .. +#: admin/views/system/dialog-video.php:151 ../admin/views/templates/slider-main- +#: options.php:2353 ../admin/views/templates/slider-main-options.php:3630 .. +#: admin/views/templates/slider-main-options.php:3654 +msgid "Off" +msgstr "Ki" + +#: ../admin/views/system/dialog-global-settings.php:68 +msgid "" +"ON - Add CSS and JS Files to all pages.
        Off - CSS and JS Files will be " +"only loaded on Pages where any rev_slider shortcode exists." +msgstr "" +"ON - CSS és JS fájlok minden oldalon < / br > Ki - CSS és JS fájlok csak " +"akkor töltödnek ha rev_slider shortcode létezik az oldalon." + +#: ../admin/views/system/dialog-global-settings.php:74 +msgid "Pages to include RevSlider libraries:" +msgstr "Melyik oldalakon töltsön a Slider:" + +#: ../admin/views/system/dialog-global-settings.php:79 +msgid "" +"Specify the page id's that the front end includes will be included in. " +"Example: 2,3,5 also: homepage,3,4" +msgstr "" +"Adja meg az oldalak id-it , ahol a front-end töltve lesz. Példa : 2,3,5 is : " +"a honlap , 3,4" + +#: ../admin/views/system/dialog-global-settings.php:86 +msgid "Insert JavaScript Into Footer:" +msgstr "JavaScriptet töltese a Footerbe" + +#: ../admin/views/system/dialog-global-settings.php:101 +msgid "" +"Putting the js to footer (instead of the head) is good for fixing some " +"javascript conflicts." +msgstr "Add a JS-t a Footerbe (Head helyett). Ez kijavithat nehany JS Konfliktust." + +#: ../admin/views/system/dialog-global-settings.php:107 +msgid "Defer JavaScript Loading:" +msgstr "JavaScript töltesenek elhalasztasa (defer):" + +#: ../admin/views/system/dialog-global-settings.php:122 +msgid "Defer the loading of the JavaScript libraries to maximize page loading speed." +msgstr "" +"Elhalassza a JavaScript könyvtárak tölteset, hogy maximalizálja az oldal " +"betöltési sebességet ." + +#: ../admin/views/system/dialog-global-settings.php:128 +msgid "Enable Markup Export option:" +msgstr "Engedélyezze a Markup Exportjat:" + +#: ../admin/views/system/dialog-global-settings.php:143 +msgid "" +"This will enable the option to export the Slider Markups to copy/paste it " +"directly into websites." +msgstr "" +"Ez lehetővé teszi a lehetőséget, hogy a slider markapjat copy/paste " +"segitsegevel direkt html dokumentbe begyazhassa" + +#: ../admin/views/system/dialog-global-settings.php:149 +msgid "Font Loading URL:" +msgstr "Font betöltése URL :" + +#: ../admin/views/system/dialog-global-settings.php:154 +msgid "" +"Insert something in it and it will be used instead of http://fonts." +"googleapis.com/css?family= (For example: http://fonts.useso.com/css?family= " +"which will also work for chinese visitors)" +msgstr "" +"Helyezze be ide egy linket , és ez lesz töltve a http://fonts.googleapis." +"com/css?family= helyett. (Például : http://fonts.useso.com/css?family= ami " +"szintén működik a kínai látogatóknak )" + +#: ../admin/views/system/dialog-global-settings.php:161 +msgid "Default Settings for Advanced Responsive Grid Sizes:" +msgstr "Alapértelmezett beállítások a Advanced Responsive Grid meretekhez:" + +#: ../admin/views/system/dialog-global-settings.php:164 +msgid "Desktop Grid Width" +msgstr "Desktop Grid szélesség" + +#: ../admin/views/system/dialog-global-settings.php:166 +msgid "Notebook Grid Width" +msgstr "Notebook Grid szélesség" + +#: ../admin/views/system/dialog-global-settings.php:168 +msgid "Tablet Grid Width" +msgstr "Tablet Grid szélesség" + +#: ../admin/views/system/dialog-global-settings.php:170 +msgid "Mobile Grid Width" +msgstr "Mobile Grid szélesség" + +#: ../admin/views/system/dialog-global-settings.php:174 +msgid "Define the default Grid Sizes for devices: Desktop, Tablet and Mobile" +msgstr "" +"Adja meg az alapértelmezett Grid méreteit az eszközökhöz : Desktop, Tablet, " +"Mobile" + +#: ../admin/views/system/dialog-global-settings.php:181 +msgid "Enable Notifications:" +msgstr "" +"Közlemények \n" +"Engedélyezzese" + +#: ../admin/views/system/dialog-global-settings.php:196 +msgid "Enable/Disable ThemePunch Notifications in the Admin Notice bar." +msgstr "Engedélyezése / tiltása ThemePunch értesítéseknek az Admin közlemény bárban." + +#: ../admin/views/system/dialog-global-settings.php:203 +msgid "Enable Logs:" +msgstr "Engedélyezze a Naplókat" + +#: ../admin/views/system/dialog-global-settings.php:218 +msgid "Enable console logs for debugging." +msgstr "Engedélyezze a konzol naplót hibakeresés céljából ." + +#: ../admin/views/system/dialog-global-settings.php:228 +msgid "Update" +msgstr "Frissítés" + +#: ../admin/views/system/dialog-video.php:4 +msgid "Add Video Layout" +msgstr "Videoelrendezés Hozzaadassa" + +#: ../admin/views/system/dialog-video.php:12 ../admin/views/templates/slide- +#: general-settings.php:33 ../admin/views/templates/slider-main-options.php:151 .. +#: admin/views/templates/slider-main-options.php:202 .. +#: admin/views/templates/slider-main-options.php:286 .. +#: admin/views/templates/slider-main-options.php:309 +msgid "Source" +msgstr "Forrás" + +#: ../admin/views/system/dialog-video.php:13 ../admin/views/templates/slider-main- +#: options.php:2196 +msgid "Sizing" +msgstr "Méretezés" + +#: ../admin/views/system/dialog-video.php:14 +msgid "Settings" +msgstr "Beállítások" + +#: ../admin/views/system/dialog-video.php:15 ../admin/views/templates/slide-stage. +#: php:32 ../admin/views/templates/slider-main-options.php:2485 .. +#: admin/views/templates/slider-main-options.php:2630 .. +#: admin/views/templates/slider-main-options.php:2786 .. +#: admin/views/templates/slider-main-options.php:2955 +msgid "Visibility" +msgstr "Lathatosag" + +#: ../admin/views/system/dialog-video.php:16 +msgid "Arguments" +msgstr "Argumentek" + +#: ../admin/views/system/dialog-video.php:26 +msgid "Choose video type" +msgstr "Valassz Video Tipust" + +#: ../admin/views/system/dialog-video.php:32 +msgid "HTML5" +msgstr "HTML5" + +#: ../admin/views/system/dialog-video.php:36 ../admin/views/system/dialog-video. +#: php:40 ../admin/views/system/dialog-video.php:44 +msgid "From Stream" +msgstr "Streamböl" + +#: ../admin/views/system/dialog-video.php:51 +msgid "Vimeo ID or URL" +msgstr "Vimeo ID vagy URL" + +#: ../admin/views/system/dialog-video.php:54 ../admin/views/templates/slide- +#: general-settings.php:156 +msgid "example: 30300114" +msgstr "peldaul: 30300114" + +#: ../admin/views/system/dialog-video.php:60 +msgid "YouTube ID or URL" +msgstr "YouTube ID vagy URL" + +#: ../admin/views/system/dialog-video.php:63 ../admin/views/system/dialog-video. +#: php:74 ../admin/views/system/dialog-video.php:82 ../admin/views/system/dialog- +#: video.php:89 ../admin/views/system/dialog-video.php:96 +msgid "example" +msgstr "pelda" + +#: ../admin/views/system/dialog-video.php:69 +msgid "Poster Image Url" +msgstr "Poster Kep URL" + +#: ../admin/views/system/dialog-video.php:72 +msgid "Set Image" +msgstr "Kep" + +#: ../admin/views/system/dialog-video.php:77 +msgid "Video MP4 Url" +msgstr "Video MP4 Url" + +#: ../admin/views/system/dialog-video.php:80 ../admin/views/system/dialog-video. +#: php:87 ../admin/views/system/dialog-video.php:94 +msgid "Set Video" +msgstr "Video" + +#: ../admin/views/system/dialog-video.php:84 +msgid "Video WEBM Url" +msgstr "Video WEBM Url" + +#: ../admin/views/system/dialog-video.php:91 +msgid "Video OGV Url" +msgstr "Video OGV Url" + +#: ../admin/views/system/dialog-video.php:106 +msgid "Full Screen:" +msgstr "Full Screen:" + +#: ../admin/views/system/dialog-video.php:111 ../admin/views/templates/slide- +#: general-settings.php:234 +msgid "Force Cover:" +msgstr "Mindenkeppen fedje:" + +#: ../admin/views/system/dialog-video.php:116 ../admin/views/templates/slide- +#: general-settings.php:239 +msgid "Dotted Overlay:" +msgstr "Pontozott Fedes:" + +#: ../admin/views/system/dialog-video.php:119 ../admin/views/templates/slide- +#: general-settings.php:242 ../admin/views/templates/slider-main-options.php:2250 +msgid "none" +msgstr "None" + +#: ../admin/views/system/dialog-video.php:120 ../admin/views/templates/slide- +#: general-settings.php:243 ../admin/views/templates/slider-main-options.php:2251 +msgid "2 x 2 Black" +msgstr "2 x 2 Black" + +#: ../admin/views/system/dialog-video.php:121 ../admin/views/templates/slide- +#: general-settings.php:244 ../admin/views/templates/slider-main-options.php:2252 +msgid "2 x 2 White" +msgstr "2 x 2 White" + +#: ../admin/views/system/dialog-video.php:122 ../admin/views/templates/slide- +#: general-settings.php:245 ../admin/views/templates/slider-main-options.php:2253 +msgid "3 x 3 Black" +msgstr "3 x 3 Black" + +#: ../admin/views/system/dialog-video.php:123 ../admin/views/templates/slide- +#: general-settings.php:246 ../admin/views/templates/slider-main-options.php:2254 +msgid "3 x 3 White" +msgstr "3 x 3 White" + +#: ../admin/views/system/dialog-video.php:127 ../admin/views/templates/slide- +#: general-settings.php:250 +msgid "Aspect Ratio:" +msgstr "Képarány:" + +#: ../admin/views/system/dialog-video.php:130 ../admin/views/templates/slide- +#: general-settings.php:253 +msgid "16:9" +msgstr "16:9" + +#: ../admin/views/system/dialog-video.php:131 ../admin/views/templates/slide- +#: general-settings.php:254 +msgid "4:3" +msgstr "4:3" + +#: ../admin/views/system/dialog-video.php:139 ../admin/views/templates/slide- +#: general-settings.php:273 +msgid "Loop Video:" +msgstr "Video Loop:" + +#: ../admin/views/system/dialog-video.php:142 ../admin/views/system/dialog-video. +#: php:215 ../admin/views/templates/slide-general-settings.php:275 .. +#: admin/views/templates/slide-general-settings.php:908 +msgid "Disable" +msgstr "Kikapcsolva" + +#: ../admin/views/system/dialog-video.php:143 ../admin/views/templates/slide- +#: general-settings.php:276 +msgid "Loop, Slide is paused" +msgstr "Ismetel es Slide var" + +#: ../admin/views/system/dialog-video.php:144 ../admin/views/templates/slide- +#: general-settings.php:277 +msgid "Loop, Slide does not stop" +msgstr "Ismetel es Slide megy tovabb" + +#: ../admin/views/system/dialog-video.php:149 +msgid "Autoplay:" +msgstr "Autoplay:" + +#: ../admin/views/system/dialog-video.php:153 +msgid "On 1st Time" +msgstr "Csak elöször" + +#: ../admin/views/system/dialog-video.php:154 +msgid "Not on 1st Time" +msgstr "Mindig kiveve elöször" + +#: ../admin/views/system/dialog-video.php:159 +msgid "Stop Other Videos:" +msgstr "Masik Videok megallitasa:" + +#: ../admin/views/system/dialog-video.php:164 ../admin/views/templates/slide- +#: general-settings.php:282 +msgid "Next Slide On End:" +msgstr "Következö Slide ha vege:" + +#: ../admin/views/system/dialog-video.php:169 ../admin/views/templates/slide- +#: general-settings.php:286 +msgid "Rewind at Slide Start:" +msgstr "Ujra elöröl legközelebb:" + +#: ../admin/views/system/dialog-video.php:174 +msgid "Hide Controls:" +msgstr "Kontroll Elrejtese:" + +#: ../admin/views/system/dialog-video.php:179 +msgid "Mute:" +msgstr "Hangtalanul:" + +#: ../admin/views/system/dialog-video.php:184 +msgid "Start at:" +msgstr "Kezdes:" + +#: ../admin/views/system/dialog-video.php:185 +msgid "i.e.: 0:17" +msgstr "pl.: 0:17" + +#: ../admin/views/system/dialog-video.php:189 +msgid "End at:" +msgstr "Vege:" + +#: ../admin/views/system/dialog-video.php:190 +msgid "i.e.: 2:41" +msgstr "p.l.: 2:41" + +#: ../admin/views/system/dialog-video.php:194 +msgid "Show Cover at Pause:" +msgstr "Kep mutatasa szünetben:" + +#: ../admin/views/system/dialog-video.php:199 ../admin/views/templates/slide- +#: general-settings.php:297 +msgid "Video Speed:" +msgstr "Video Sebesseg:" + +#: ../admin/views/system/dialog-video.php:201 ../admin/views/templates/slide- +#: general-settings.php:299 +msgid "0.25" +msgstr "0.25" + +#: ../admin/views/system/dialog-video.php:202 ../admin/views/templates/slide- +#: general-settings.php:300 +msgid "0.50" +msgstr "0.50" + +#: ../admin/views/system/dialog-video.php:203 ../admin/views/templates/slide- +#: general-settings.php:301 ../admin/views/templates/slider-main-options.php:2355 +#: ../admin/views/templates/slider-main-options.php:3268 +msgid "1" +msgstr "1" + +#: ../admin/views/system/dialog-video.php:204 ../admin/views/templates/slide- +#: general-settings.php:302 +msgid "1.5" +msgstr "1.5" + +#: ../admin/views/system/dialog-video.php:205 ../admin/views/templates/slide- +#: general-settings.php:303 ../admin/views/templates/slider-main-options.php:2356 +msgid "2" +msgstr "2" + +#: ../admin/views/system/dialog-video.php:211 +msgid "Video Preload:" +msgstr "Video Elötöltese:" + +#: ../admin/views/system/dialog-video.php:214 ../admin/views/templates/slider- +#: main-options.php:938 +msgid "Auto" +msgstr "Auto" + +#: ../admin/views/system/dialog-video.php:216 +msgid "Metadata" +msgstr "Metadata" + +#: ../admin/views/system/dialog-video.php:223 +msgid "Preview Image" +msgstr "Előnézet képe" + +#: ../admin/views/system/dialog-video.php:225 +msgid "Image Library" +msgstr "Kep Könyvtar" + +#: ../admin/views/system/dialog-video.php:226 +msgid "Video Thumbnail" +msgstr "Video Thumbnail" + +#: ../admin/views/system/dialog-video.php:232 +msgid "Disable Mobile:" +msgstr "Mobilon Tiltas:" + +#: ../admin/views/system/dialog-video.php:237 +msgid "Only Preview on Mobile:" +msgstr "Csak Mobilon lathato:" + +#: ../admin/views/system/dialog-video.php:245 +msgid "Arguments:" +msgstr "Argumentek:" + +#: ../admin/views/system/dialog-video.php:251 ../admin/views/system/dialog-video. +#: php:251 +msgid "Add This Video" +msgstr "Video hozzafüzese" + +#: ../admin/views/system/dialog-video.php:251 +msgid "Update Video" +msgstr "" +"Video \n" +"frissítés" + +#: ../admin/views/system/validation.php:31 +msgid "Username:" +msgstr "Felhasznalo nev:" + +#: ../admin/views/system/validation.php:34 +msgid "Your Envato username." +msgstr "Envato felhasznalo nev:" + +#: ../admin/views/system/validation.php:38 +msgid "Envato API Key:" +msgstr "Envato Api Kulcs:" + +#: ../admin/views/system/validation.php:41 +msgid "" +"You can find the API key by visiting your Envato Account page, then clicking " +"the My Settings tab. At the bottom of the page you will find your accounts " +"API key." +msgstr "" +"Az API kulcsot\n" +" \n" +"az Envato oldalan talalja meg. Ehez kattintson a Saját beállítások tab-ra . " +"Az oldal alján találja a API kulcsokat." + +#: ../admin/views/system/validation.php:45 +msgid "Purchase code:" +msgstr "Vásárlási kód:" + +#: ../admin/views/system/validation.php:48 +msgid "Please enter your " +msgstr "Kerlek add meg" + +#: ../admin/views/system/validation.php:48 +msgid "CodeCanyon Slider Revolution purchase code / license key" +msgstr "" +"CodeCanyon Slider Revolution v\n" +"ásárlási kódot \n" +"/ license key\n" + +#: ../admin/views/system/validation.php:48 +msgid ". You can find your key by following the instructions on" +msgstr "" +".\n" +"Megtalálhatod a kulcsot ha az utasításokat követed a" + +#: ../admin/views/system/validation.php:48 +msgid " this page." +msgstr "oldalon." + +#: ../admin/views/system/validation.php:54 +msgid "Register" +msgstr "Regisztalas" + +#: ../admin/views/system/validation.php:56 +msgid "Deregister" +msgstr "Deregisztalas" + +#: ../admin/views/system/validation.php:61 +msgid "Search for Updates" +msgstr "Keress Frissiteseket." + +#: ../admin/views/system/validation.php:68 +msgid "" +"To register the plugin on a different website, click the “Deregister” button " +"here first." +msgstr "" +"A plugin regisztalasahoz masik domainen, kerlek deregisztald a plugin ezen a " +"domainen." + +#: ../admin/views/system/validation.php:79 +msgid "How to get Support ?" +msgstr "Hogy kapok segitseget? " + +#: ../admin/views/system/validation.php:81 +msgid "Please feel free to contact us via our " +msgstr "Keressen meg minket " + +#: ../admin/views/system/validation.php:81 +msgid "Support Forum " +msgstr "a szupport forumon" + +#: ../admin/views/system/validation.php:81 +msgid "and/or via the " +msgstr "es/vagy a" + +#: ../admin/views/system/validation.php:81 +msgid "Item Disscussion Forum" +msgstr "Termek leirasanak az oldalan" + +#: ../admin/views/system/validation.php:87 +msgid "Click Here to get " +msgstr "Kattins ide hogy megkapd" + +#: ../admin/views/system/validation.php:87 +msgid "Premium Support and Auto Updates" +msgstr "a Premium Szupportot es Auto Frissiteseket" + +#: ../admin/views/templates/slide-general-settings.php:6 +msgid "Main Background" +msgstr "Fö hatter" + +#: ../admin/views/templates/slide-general-settings.php:8 +msgid "Slide Animation" +msgstr "Slide Animacio" + +#: ../admin/views/templates/slide-general-settings.php:9 +msgid "Link & Seo" +msgstr "Link & Seo" + +#: ../admin/views/templates/slide-general-settings.php:10 +msgid "Slide Info" +msgstr "Slide Informacio" + +#: ../admin/views/templates/slide-general-settings.php:34 +msgid "Source Settings" +msgstr "Forrás Beallitasok" + +#: ../admin/views/templates/slide-general-settings.php:35 .. +#: admin/views/templates/slide-stage.php:248 ../admin/views/templates/slider- +#: main-options.php:3428 +msgid "Parallax" +msgstr "Parallax" + +#: ../admin/views/templates/slide-general-settings.php:36 +msgid "Ken Burns" +msgstr "Ken Burns" + +#: ../admin/views/templates/slide-general-settings.php:64 +msgid "Featured Image" +msgstr "Kiemelt kép" + +#: ../admin/views/templates/slide-general-settings.php:69 +msgid "Stream Image" +msgstr "" +"Stream \n" +"kép" + +#: ../admin/views/templates/slide-general-settings.php:75 +msgid "Stream Video" +msgstr "Stream Video" + +#: ../admin/views/templates/slide-general-settings.php:78 .. +#: admin/views/templates/slide-general-settings.php:86 +msgid "Use Cover" +msgstr "Hasznalj Cover-t" + +#: ../admin/views/templates/slide-general-settings.php:83 +msgid "Stream Video + Image" +msgstr "" +"Stream Video+\n" +" kép" + +#: ../admin/views/templates/slide-general-settings.php:93 +msgid "Main / Background Image" +msgstr "" +"Fö Hatter \n" +"kép" + +#: ../admin/views/templates/slide-general-settings.php:97 +msgid "Change Image" +msgstr "Kép csereje" + +#: ../admin/views/templates/slide-general-settings.php:105 +msgid "External URL" +msgstr "Külsö URL" + +#: ../admin/views/templates/slide-general-settings.php:111 +msgid "Get External" +msgstr "Tölts Külsö Forrast" + +#: ../admin/views/templates/slide-general-settings.php:117 +msgid "Transparent" +msgstr "Atlatszo" + +#: ../admin/views/templates/slide-general-settings.php:122 +msgid "Solid Colored" +msgstr "Szolid Szinü" + +#: ../admin/views/templates/slide-general-settings.php:132 +msgid "YouTube Video" +msgstr "YouTube Video" + +#: ../admin/views/templates/slide-general-settings.php:138 .. +#: admin/views/templates/slide-general-settings.php:154 .. +#: admin/views/templates/slide-general-settings.php:889 +msgid "ID:" +msgstr "ID:" + +#: ../admin/views/templates/slide-general-settings.php:140 +msgid "example: T8--OggjJKQ" +msgstr "peldaul: T8--OggjJKQ" + +#: ../admin/views/templates/slide-general-settings.php:142 .. +#: admin/views/templates/slide-general-settings.php:158 .. +#: admin/views/templates/slide-general-settings.php:188 +msgid "Cover Image:" +msgstr "Fedö kep:" + +#: ../admin/views/templates/slide-general-settings.php:148 +msgid "Vimeo Video" +msgstr "Vimeo Video" + +#: ../admin/views/templates/slide-general-settings.php:164 +msgid "HTML5 Video" +msgstr "HTML5 Video" + +#: ../admin/views/templates/slide-general-settings.php:170 +msgid "MPEG:" +msgstr "MPEG:" + +#: ../admin/views/templates/slide-general-settings.php:173 .. +#: admin/views/templates/slide-general-settings.php:179 .. +#: admin/views/templates/slide-general-settings.php:185 +msgid "Change Video" +msgstr "Video csere" + +#: ../admin/views/templates/slide-general-settings.php:176 +msgid "WEBM:" +msgstr "WEBM:" + +#: ../admin/views/templates/slide-general-settings.php:182 +msgid "OGV:" +msgstr "OGV:" + +#: ../admin/views/templates/slide-general-settings.php:196 +msgid "Image Source Size:" +msgstr "Kep Forrasanak merete:" + +#: ../admin/views/templates/slide-general-settings.php:213 +msgid "Alt:" +msgstr "Alt:" + +#: ../admin/views/templates/slide-general-settings.php:215 .. +#: admin/views/templates/slide-stage.php:1259 +msgid "From Media Library" +msgstr "Media Könyvtarbol" + +#: ../admin/views/templates/slide-general-settings.php:216 .. +#: admin/views/templates/slide-stage.php:1260 +msgid "From Filename" +msgstr "Filebol" + +#: ../admin/views/templates/slide-general-settings.php:217 .. +#: admin/views/templates/slide-stage.php:1261 ../admin/views/templates/slide- +#: stage.php:1729 +msgid "Custom" +msgstr "Custom" + +#: ../admin/views/templates/slide-general-settings.php:223 +msgid "Width:" +msgstr "Szélesség" + +#: ../admin/views/templates/slide-general-settings.php:227 +msgid "Height:" +msgstr "Magasság:" + +#: ../admin/views/templates/slide-general-settings.php:260 +msgid "Start At:" +msgstr "Kezd:" + +#: ../admin/views/templates/slide-general-settings.php:262 +msgid "For Example: 00:17" +msgstr "pl.: 00:17" + +#: ../admin/views/templates/slide-general-settings.php:267 +msgid "End At:" +msgstr "Vegez:" + +#: ../admin/views/templates/slide-general-settings.php:269 +msgid "For Example: 02:17" +msgstr "pl.: 02:17" + +#: ../admin/views/templates/slide-general-settings.php:291 +msgid "Mute Video:" +msgstr "Hangtalan Video:" + +#: ../admin/views/templates/slide-general-settings.php:307 +msgid "Arguments YouTube:" +msgstr "Youtube Argumentek:" + +#: ../admin/views/templates/slide-general-settings.php:312 +msgid "Arguments Vimeo:" +msgstr "Vimeo Argumentk:" + +#: ../admin/views/templates/slide-general-settings.php:319 +msgid "Background Fit:" +msgstr "Hatter illesztese:" + +#: ../admin/views/templates/slide-general-settings.php:330 +msgid "Background Position:" +msgstr "" +"Hatter \n" +"pozíciója:\n" + +#: ../admin/views/templates/slide-general-settings.php:351 +msgid "Background Repeat:" +msgstr "Hatter Ismetlese:" + +#: ../admin/views/templates/slide-general-settings.php:367 +msgid "Parallax Level:" +msgstr "Parallax Level:" + +#: ../admin/views/templates/slide-general-settings.php:369 .. +#: admin/views/templates/slide-stage.php:462 +msgid "No Parallax" +msgstr "Nincs Parallax" + +#: ../admin/views/templates/slide-general-settings.php:385 .. +#: admin/views/templates/slide-stage.php:479 +msgid "Parallax Feature in Slider Settings is deactivated, parallax will be ignored." +msgstr "" +"Parallax Feature Slider Beállítások ki van kapcsolva a Slider Beallitasokban." +" Parallaxis figyelmen kívül hagyva." + +#: ../admin/views/templates/slide-general-settings.php:393 .. +#: admin/views/templates/slider-main-options.php:1870 +msgid "Ken Burns / Pan Zoom:" +msgstr "Ken Burns / Pan Zoom:" + +#: ../admin/views/templates/slide-general-settings.php:398 +msgid "Scale: (in %):" +msgstr "Zoom (%):" + +#: ../admin/views/templates/slide-general-settings.php:399 .. +#: admin/views/templates/slide-general-settings.php:407 .. +#: admin/views/templates/slide-general-settings.php:415 .. +#: admin/views/templates/slide-general-settings.php:423 +msgid "From" +msgstr "Mettöl:" + +#: ../admin/views/templates/slide-general-settings.php:401 .. +#: admin/views/templates/slide-general-settings.php:409 .. +#: admin/views/templates/slide-general-settings.php:417 .. +#: admin/views/templates/slide-general-settings.php:425 +msgid "To" +msgstr "Meddig:" + +#: ../admin/views/templates/slide-general-settings.php:406 +msgid "Horizontal Offsets:" +msgstr "Horizontalis eltolas:" + +#: ../admin/views/templates/slide-general-settings.php:414 +msgid "Vertical Offsets:" +msgstr "Vertikalis eltolas:" + +#: ../admin/views/templates/slide-general-settings.php:422 +msgid "Rotation:" +msgstr "Forgatas:" + +#: ../admin/views/templates/slide-general-settings.php:430 .. +#: admin/views/templates/slider-main-options.php:1886 +msgid "Easing:" +msgstr "Easing:" + +#: ../admin/views/templates/slide-general-settings.php:470 .. +#: admin/views/templates/slider-main-options.php:1993 +msgid "Duration (in ms):" +msgstr "Meddig tart (ms):" + +#: ../admin/views/templates/slide-general-settings.php:486 +msgid "The title of the slide, will be shown in the slides list." +msgstr "" +"A slider címe ami látható lesz a slideok listáj\n" +"á\n" +"n ." + +#: ../admin/views/templates/slide-general-settings.php:492 +msgid "Slide \"Delay\":" +msgstr "Slide \"hossza\":" + +#: ../admin/views/templates/slide-general-settings.php:494 +msgid "" +"A new delay value for the Slide. If no delay defined per slide, the delay " +"defined via Options (9000ms) will be used." +msgstr "" +"Egy uj \"hossz\" definicio. Ha nincs kitöltve, akkor az alap ertek lesz veve a " +"Slider Beallitasokbol. Default 9000ms." + +#: ../admin/views/templates/slide-general-settings.php:500 +msgid "Slide State" +msgstr "Slide Allapota" + +#: ../admin/views/templates/slide-general-settings.php:502 +msgid "Published" +msgstr "Közzetett" + +#: ../admin/views/templates/slide-general-settings.php:503 +msgid "Unpublished" +msgstr "Nem Közze tett" + +#: ../admin/views/templates/slide-general-settings.php:505 +msgid "" +"The state of the slide. The unpublished slide will be excluded from the " +"slider." +msgstr "Slide Allapota. Nem közze tett slide nem lesz lathato a sliderben." + +#: ../admin/views/templates/slide-general-settings.php:518 +msgid "Language" +msgstr "Nyelv" + +#: ../admin/views/templates/slide-general-settings.php:529 +msgid "The language of the slide (uses WPML plugin)." +msgstr "A Slide Nyelve (ha WPML Hasznalatban van)" + +#: ../admin/views/templates/slide-general-settings.php:538 +msgid "Visible from:" +msgstr "Lathato mettöl:" + +#: ../admin/views/templates/slide-general-settings.php:540 +msgid "If set, slide will be visible after the date is reached." +msgstr "A slide akkor lesz lathato ha a \"mettöl\" idöpont elerkezett." + +#: ../admin/views/templates/slide-general-settings.php:546 +msgid "Visible until:" +msgstr "Lathato Meddig:" + +#: ../admin/views/templates/slide-general-settings.php:548 +msgid "If set, slide will be visible till the date is reached." +msgstr "A slide addig lesz lathato amig a \"meddig\" idöpont meg lesz." + +#: ../admin/views/templates/slide-general-settings.php:555 +msgid "Thumbnail:" +msgstr "Thumbnail:" + +#: ../admin/views/templates/slide-general-settings.php:573 +msgid "Slide Thumbnail. If not set - it will be taken from the slide image." +msgstr "" +"Slide Thumbnail. Ha nincs beallitva, akkor a Slide kepe lesz automatikusan " +"hasznalva." + +#: ../admin/views/templates/slide-general-settings.php:580 +msgid "Save Performance:" +msgstr "Teljesítmény növelese:" + +#: ../admin/views/templates/slide-general-settings.php:584 +msgid "Slide End Transition will first start when last Layer has been removed." +msgstr "A Slide Kianimalasa akkor kezdodik, ha az utolso layer eltunt." + +#: ../admin/views/templates/slide-general-settings.php:724 +msgid "Used Transitions (Order in Loops)" +msgstr "Hasznalt Slide Animaciok (sorrendben es ismetelve)" + +#: ../admin/views/templates/slide-general-settings.php:731 +msgid "Slot / Box Amount:" +msgstr "Resek / Negyzetek szama:" + +#: ../admin/views/templates/slide-general-settings.php:734 +msgid "# of slots/boxes the slide is divided into." +msgstr "" +"A Resek / Negyzetek szama az animacio alatt. Ennyi darabra lesz \"darabolva\" " +"a slide animalas kozben." + +#: ../admin/views/templates/slide-general-settings.php:739 +msgid "Slot Rotation:" +msgstr "Resek Forgatasa:" + +#: ../admin/views/templates/slide-general-settings.php:742 +msgid "Start Rotation of Transition (deg)." +msgstr "Kezdeti forgatasa az Animacionak (fokban)." + +#: ../admin/views/templates/slide-general-settings.php:747 +msgid "Animation Duration:" +msgstr "Animacio hossza:" + +#: ../admin/views/templates/slide-general-settings.php:750 +msgid "The duration of the transition." +msgstr "Az animacio hossza (idoben)." + +#: ../admin/views/templates/slide-general-settings.php:755 +msgid "Easing In:" +msgstr "Easing In:" + +#: ../admin/views/templates/slide-general-settings.php:795 +msgid "The easing of Appearing transition." +msgstr "A kezdeti animaciok Ease-e." + +#: ../admin/views/templates/slide-general-settings.php:800 +msgid "Easing Out:" +msgstr "Easing \"ki\": " + +#: ../admin/views/templates/slide-general-settings.php:840 +msgid "The easing of Disappearing transition." +msgstr "A kimeno animacio Ease-e." + +#: ../admin/views/templates/slide-general-settings.php:858 +msgid "Parameter" +msgstr "Parameter" + +#: ../admin/views/templates/slide-general-settings.php:859 +msgid "Max. Chars" +msgstr "Max. Karakter" + +#: ../admin/views/templates/slide-general-settings.php:869 +msgid "Description of Slider:" +msgstr "Slider leirasa:" + +#: ../admin/views/templates/slide-general-settings.php:872 +msgid "" +"Define a description here to show at the navigation if enabled in Slider " +"Settings" +msgstr "" +"Ez a leiras hasznalhato pl. a Slider Navigacio elemekben. Vagy csak egy " +"altalanos info kesobbre." + +#: ../admin/views/templates/slide-general-settings.php:881 +msgid "Class:" +msgstr "Class:" + +#: ../admin/views/templates/slide-general-settings.php:883 +msgid "" +"Adds a unique class to the li of the Slide like class=\"rev_special_class\" " +"(add only the classnames, seperated by space)" +msgstr "" +"Ad egy unique osztalyt a Slide \"li\" tag-hoz, mint pl. " +"class=\"rev_special_class\" (csak a class neveket, szokozzel valasztva add " +"meg)" + +#: ../admin/views/templates/slide-general-settings.php:891 +msgid "" +"Adds a unique ID to the li of the Slide like id=\"rev_special_id\" (add only " +"the id)" +msgstr "" +"Ad egy unique ID a slide \"li\" tag-hoz mint pl. id=\"rev_special_id\" (csak az " +"ID-t kell definialni)" + +#: ../admin/views/templates/slide-general-settings.php:897 +msgid "Custom Fields:" +msgstr "Egyéni mezők:" + +#: ../admin/views/templates/slide-general-settings.php:899 +msgid "" +"Add as many attributes as you wish here. (i.e.: data-layer=\"firstlayer\" data-" +"custom=\"somevalue\")." +msgstr "" +"Addj annyi Attributot amennyit csak szeretnel. (pl.: data-" +"layer=\"firstlayer\" data-custom=\"valami\")." + +#: ../admin/views/templates/slide-general-settings.php:905 +msgid "Enable Link:" +msgstr "Link engedelyezese:" + +#: ../admin/views/templates/slide-general-settings.php:907 +msgid "Enable" +msgstr "Engedelyezes" + +#: ../admin/views/templates/slide-general-settings.php:910 +msgid "Link the Full Slide to an URL or Action." +msgstr "Az egesz slide-ot linkeli egy adott URL-re vagy Akciora." + +#: ../admin/views/templates/slide-general-settings.php:917 +msgid "Link Type:" +msgstr "Link Tipusa:" + +#: ../admin/views/templates/slide-general-settings.php:919 +msgid "Regular" +msgstr "Regular" + +#: ../admin/views/templates/slide-general-settings.php:920 +msgid "To Slide" +msgstr "Slidehoz" + +#: ../admin/views/templates/slide-general-settings.php:922 +msgid "Regular - Link to URL, To Slide - Call a Slide Action" +msgstr "Regular - link egy sima Url-lre, Slidehoz - hiv egy masik Slide-ot" + +#: ../admin/views/templates/slide-general-settings.php:929 +msgid "Slide Link:" +msgstr "Slide Link:" + +#: ../admin/views/templates/slide-general-settings.php:931 +msgid "" +"A link on the whole slide pic (use {{link}} or {{meta:somemegatag}} in " +"template sliders to link to a post or some other meta)" +msgstr "" +"Egy link az egesz kepre (hasznald a {{link}} vagy {{meta:somemetatag}} a " +"slider sablonokban hogy linkeljen a \"hozzaszoalshoz\" vagy mas meta tagra)" + +#: ../admin/views/templates/slide-general-settings.php:937 +msgid "Link Target:" +msgstr "Link Celja:" + +#: ../admin/views/templates/slide-general-settings.php:939 .. +#: admin/views/templates/slide-stage.php:2273 +msgid "Same Window" +msgstr "Ugyanabba az ablakba" + +#: ../admin/views/templates/slide-general-settings.php:940 .. +#: admin/views/templates/slide-stage.php:2274 +msgid "New Window" +msgstr "Uj ablakba" + +#: ../admin/views/templates/slide-general-settings.php:942 +msgid "The target of the slide link." +msgstr "A Link celja" + +#: ../admin/views/templates/slide-general-settings.php:950 +msgid "-- Not Chosen --" +msgstr "-- Nincs Valasztva --" + +#: ../admin/views/templates/slide-general-settings.php:951 +msgid "-- Next Slide --" +msgstr "-- Következö Slide --\n" + +#: ../admin/views/templates/slide-general-settings.php:952 +msgid "-- Previous Slide --" +msgstr "-- Elözö Slide --" + +#: ../admin/views/templates/slide-general-settings.php:955 +msgid "-- Scroll Below Slider --" +msgstr "-- Slide Ala Scrollozni --" + +#: ../admin/views/templates/slide-general-settings.php:967 +msgid "Link To Slide:" +msgstr "Link a Slidehoz:" + +#: ../admin/views/templates/slide-general-settings.php:978 +msgid "Call Slide Action" +msgstr "Slide Akcio hivasa:" + +#: ../admin/views/templates/slide-general-settings.php:983 +msgid "Link Sensibility:" +msgstr "" +"Link \n" +"érzékenység:" + +#: ../admin/views/templates/slide-general-settings.php:985 +msgid "Front" +msgstr "Elöl" + +#: ../admin/views/templates/slide-general-settings.php:986 +msgid "Back" +msgstr "Hatterben" + +#: ../admin/views/templates/slide-general-settings.php:988 +msgid "The z-index position of the link related to layers" +msgstr "A z-index pozicioja a link layernek" + +#: ../admin/views/templates/slide-selector.php:52 +msgid "Static / Global Layers" +msgstr "Static / Global Layers" + +#: ../admin/views/templates/slide-selector.php:68 +msgid "Show Layers from Slide:" +msgstr "Mutass Layereket a Slidebol:" + +#: ../admin/views/templates/slide-selector.php:232 +msgid "Add to Templates" +msgstr "Füzd hozza a Sablonokhoz" + +#: ../admin/views/templates/slide-selector.php:247 ../admin/views/templates/slide- +#: selector.php:259 +msgid "Add Slide" +msgstr "Uj Slide" + +#: ../admin/views/templates/slide-selector.php:252 +msgid "Add Blank Slide" +msgstr "Uj üres Slide" + +#: ../admin/views/templates/slide-selector.php:255 +msgid "Add from Template" +msgstr "" +"Uj \n" +"Sablonbol" + +#: ../admin/views/templates/slide-selector.php:315 +msgid "Slide name should not be empty" +msgstr "Slide neve nem lehet üres" + +#: ../admin/views/templates/slide-stage.php:12 +msgid "Style" +msgstr "Style" + +#: ../admin/views/templates/slide-stage.php:13 +msgid "Advanced Style on/off" +msgstr "Halado Stilus ki/be" + +#: ../admin/views/templates/slide-stage.php:19 ../admin/views/templates/slide- +#: stage.php:1766 +msgid "Animation" +msgstr "Animacio" + +#: ../admin/views/templates/slide-stage.php:20 +msgid "Play/Pause Single Layer Animation" +msgstr "Play/Pause egyeni Layer Animaciot" + +#: ../admin/views/templates/slide-stage.php:26 ../admin/views/templates/slide- +#: stage.php:1031 +msgid "Loop Animation" +msgstr "Animacio Ismetlese" + +#: ../admin/views/templates/slide-stage.php:27 +msgid "Play/Pause Layer Loop Animation" +msgstr "Play/Pause Ismetlodo Animaciot" + +#: ../admin/views/templates/slide-stage.php:33 +msgid "Behavior" +msgstr "Viselkedes" + +#: ../admin/views/templates/slide-stage.php:36 +msgid "Attributes" +msgstr "Attribútumok" + +#: ../admin/views/templates/slide-stage.php:38 +msgid "Static Layers" +msgstr "Statik Layerek" + +#: ../admin/views/templates/slide-stage.php:40 +msgid "Performance" +msgstr "Teljesítmény" + +#: ../admin/views/templates/slide-stage.php:56 +msgid "Global Style Editor" +msgstr "Globalis Stilus Editor" + +#: ../admin/views/templates/slide-stage.php:58 +msgid "Dynamic Styles (Not Editable):" +msgstr "Dinamikus Stilusok (nem szerkeszthetö):" diff --git a/plugins/revslider/languages/revslider-it_IT.mo b/plugins/revslider/languages/revslider-it_IT.mo new file mode 100644 index 0000000..cba41f9 Binary files /dev/null and b/plugins/revslider/languages/revslider-it_IT.mo differ diff --git a/plugins/revslider/languages/revslider-it_IT.po b/plugins/revslider/languages/revslider-it_IT.po new file mode 100644 index 0000000..e12ad3a --- /dev/null +++ b/plugins/revslider/languages/revslider-it_IT.po @@ -0,0 +1,7769 @@ +msgid "" +msgstr "" +"Project-Id-Version: Revolution Slider\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: Mon Jul 13 2015 10:02:33 GMT+0200 (CEST)\n" +"PO-Revision-Date: Tue Jul 14 2015 08:39:42 GMT+0200 (CEST)\n" +"Last-Translator: admin \n" +"Language-Team: \n" +"Language: Italian\n" +"Plural-Forms: nplurals=2; plural=n != 1\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Generator: Loco - https://localise.biz/\n" +"X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;" +"__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;" +"_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;" +"esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;" +"esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-Basepath: .\n" +"X-Poedit-SearchPath-0: .\n" +"X-Loco-Target-Locale: it_IT" + +#: ../revslider.php:170 +msgid "Include RevSlider libraries globally (all pages/posts)" +msgstr "" + +# @ revslider +#: ../revslider.php:171 +msgid "Pages to include RevSlider libraries" +msgstr "Pagine per includere librerie RevSlider" + +# @ revslider +#: ../revslider.php:172 +msgid "" +"If you want to use the PHP function \"putRevSlider\" in your code please make " +"sure to check \" " +msgstr "" +"Se si desidera utilizzare la funzione PHP \"putRevSlider \" nel codice " +"assicuratevi di controllare \"" + +# @ revslider +#: ../revslider.php:172 +msgid "" +" \" in the backend's \"General Settings\" (top right panel).

        Or add " +"the current page to the \"" +msgstr "" +" \"nel backend di \" Impostazioni generali\"(pannello in alto a destra).
        " +"Oppure aggiungere la pagina corrente per la \"" + +# @ default +#: ../revslider.php:172 +msgid "\" option box." +msgstr "\" Box opzioni." + +# @ revslider +#: ../revslider.php:212 +msgid "Revolution Slider Error:" +msgstr "Revolution Slider ERRORE:" + +#: ../admin/revslider-admin.class.php:62 ../admin/views/navigation-editor.php:28 +msgid "Navigation Editor" +msgstr "" + +#: ../admin/revslider-admin.class.php:188 +msgid "-- wrong alias -- " +msgstr "" + +#: ../admin/revslider-admin.class.php:189 +msgid "Navigation Bullets and Arrows are now set to none." +msgstr "" + +#: ../admin/revslider-admin.class.php:190 +msgid "Create Template" +msgstr "" + +#: ../admin/revslider-admin.class.php:191 +msgid "Do you really want to delete" +msgstr "" + +#: ../admin/revslider-admin.class.php:192 +msgid "Are you sure to replace the urls?" +msgstr "" + +#: ../admin/revslider-admin.class.php:193 +msgid "" +"Set selected settings on all Slides of this Slider? (This will be saved " +"immediately)" +msgstr "" + +# @ revslider +#: ../admin/revslider-admin.class.php:194 ../admin/views/slide-overview.php:174 +msgid "Select Slide Image" +msgstr "Seleziona Immagine Slide" + +#: ../admin/revslider-admin.class.php:195 +msgid "Select Slide Video" +msgstr "" + +#: ../admin/revslider-admin.class.php:196 +msgid "Show Slide Options" +msgstr "" + +#: ../admin/revslider-admin.class.php:197 +msgid "Hide Slide Options" +msgstr "" + +# @ revslider +#: ../admin/revslider-admin.class.php:198 ../admin/views/slide-overview.php:168 .. +#: admin/views/system/dialog-copy-move.php:3 ../admin/views/templates/slider- +#: main-options.php:1309 ../admin/views/templates/slider-main-options.php:4280 .. +#: admin/views/templates/slides.php:21 ../admin/views/templates/slides.php:43 +msgid "Close" +msgstr "Chiudi" + +#: ../admin/revslider-admin.class.php:199 +msgid "Really update global styles?" +msgstr "" + +#: ../admin/revslider-admin.class.php:200 +msgid "Global Styles Editor" +msgstr "" + +#: ../admin/revslider-admin.class.php:201 ../admin/revslider-admin.class.php:239 . +#: ./admin/views/templates/slider-main-options.php:4301 +msgid "Select Image" +msgstr "" + +#: ../admin/revslider-admin.class.php:202 +msgid "Video Not Found!" +msgstr "" + +#: ../admin/revslider-admin.class.php:203 +msgid "Handle has to be at least three character long" +msgstr "" + +#: ../admin/revslider-admin.class.php:204 +msgid "Really change font settings?" +msgstr "" + +#: ../admin/revslider-admin.class.php:205 +msgid "Really delete font?" +msgstr "" + +#: ../admin/revslider-admin.class.php:206 +msgid "Class already exists, overwrite?" +msgstr "" + +#: ../admin/revslider-admin.class.php:207 +msgid "Class must be a valid CSS class name" +msgstr "" + +#: ../admin/revslider-admin.class.php:208 +msgid "Really overwrite Class?" +msgstr "" + +#: ../admin/revslider-admin.class.php:209 +msgid "Really delete Class" +msgstr "" + +#: ../admin/revslider-admin.class.php:210 +msgid "? This can't be undone!" +msgstr "" + +#: ../admin/revslider-admin.class.php:211 +msgid "This class does not exist." +msgstr "" + +#: ../admin/revslider-admin.class.php:212 +msgid "" +"Making changes to these settings will probably overwrite advanced settings. " +"Continue?" +msgstr "" + +#: ../admin/revslider-admin.class.php:213 +msgid "Select Static Layer Image" +msgstr "" + +#: ../admin/revslider-admin.class.php:214 +msgid "Select Layer Image" +msgstr "" + +#: ../admin/revslider-admin.class.php:215 +msgid "Do you really want to delete all the layers?" +msgstr "" + +#: ../admin/revslider-admin.class.php:216 +msgid "Layer Animation Editor" +msgstr "" + +#: ../admin/revslider-admin.class.php:217 +msgid "Animation already exists, overwrite?" +msgstr "" + +#: ../admin/revslider-admin.class.php:218 +msgid "Really overwrite animation?" +msgstr "" + +#: ../admin/revslider-admin.class.php:219 +msgid "Default animations can't be deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:220 +msgid "Must be greater than start time" +msgstr "" + +#: ../admin/revslider-admin.class.php:221 +msgid "Selected layer not set" +msgstr "" + +#: ../admin/revslider-admin.class.php:222 +msgid "Edit Layer Start" +msgstr "" + +#: ../admin/revslider-admin.class.php:223 +msgid "Edit Layer End" +msgstr "" + +#: ../admin/revslider-admin.class.php:224 +msgid "Default Animations can't be renamed" +msgstr "" + +#: ../admin/revslider-admin.class.php:225 +msgid "Animationname already existing" +msgstr "" + +#: ../admin/revslider-admin.class.php:226 +msgid "CSS classname already existing" +msgstr "" + +#: ../admin/revslider-admin.class.php:227 +msgid "Original CSS classname not found" +msgstr "" + +#: ../admin/revslider-admin.class.php:228 +msgid "Enter a correct class name" +msgstr "" + +#: ../admin/revslider-admin.class.php:229 +msgid "Class not found in database" +msgstr "" + +#: ../admin/revslider-admin.class.php:230 +msgid "CSS classname not found" +msgstr "" + +#: ../admin/revslider-admin.class.php:231 +msgid "Delete this caption? This may affect other Slider" +msgstr "" + +#: ../admin/revslider-admin.class.php:232 +msgid "" +"This will update the Class with the current set Style settings, this may " +"affect other Sliders. Proceed?" +msgstr "" + +#: ../admin/revslider-admin.class.php:233 +msgid "Template will have the state of the last save, proceed?" +msgstr "" + +#: ../admin/revslider-admin.class.php:234 +msgid "Please enter a Slide title" +msgstr "" + +#: ../admin/revslider-admin.class.php:235 +msgid "Please Wait a Moment" +msgstr "" + +# @ revslider +#: ../admin/revslider-admin.class.php:236 ../admin/views/templates/slide-selector. +#: php:192 ../admin/views/templates/slides-list.php:146 +msgid "Copy / Move" +msgstr "Copia/Sposta" + +#: ../admin/revslider-admin.class.php:237 +msgid "Preset Loaded" +msgstr "" + +#: ../admin/revslider-admin.class.php:238 ../admin/views/templates/slide-selector. +#: php:218 +msgid "Add Bulk Slides" +msgstr "" + +#: ../admin/revslider-admin.class.php:240 ../admin/views/navigation-editor.php:38 +#: ../admin/views/templates/slider-main-options.php:2310 +msgid "Arrows" +msgstr "" + +#: ../admin/revslider-admin.class.php:241 ../admin/views/navigation-editor.php:39 +#: ../admin/views/templates/slider-main-options.php:2311 +msgid "Bullets" +msgstr "" + +# @ revslider +#: ../admin/revslider-admin.class.php:242 ../admin/views/templates/slider-main- +#: options.php:2588 +msgid "Thumbnails" +msgstr "Miniature" + +#: ../admin/revslider-admin.class.php:243 ../admin/views/navigation-editor.php:41 +#: ../admin/views/templates/slider-main-options.php:2312 .. +#: admin/views/templates/slider-main-options.php:2760 +msgid "Tabs" +msgstr "" + +#: ../admin/revslider-admin.class.php:244 +msgid "Delete this Navigation?" +msgstr "" + +#: ../admin/revslider-admin.class.php:245 +msgid "Navigation name could not be updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:246 +msgid "Name too short, at least 3 letters between a-zA-z needed" +msgstr "" + +#: ../admin/revslider-admin.class.php:247 +msgid "Navigation name already exists, please choose a different name" +msgstr "" + +#: ../admin/revslider-admin.class.php:248 +msgid "Remove current element from Navigation?" +msgstr "" + +#: ../admin/revslider-admin.class.php:249 +msgid "This navigation element does not exist, create one?" +msgstr "" + +#: ../admin/revslider-admin.class.php:250 +msgid "Overwrite current animation?" +msgstr "" + +#: ../admin/revslider-admin.class.php:251 +msgid "Default animations can't be changed" +msgstr "" + +#: ../admin/revslider-admin.class.php:252 +msgid "Animation already existing with given handle, please choose a different name." +msgstr "" + +#: ../admin/revslider-admin.class.php:253 +msgid "Really delete animation:" +msgstr "" + +#: ../admin/revslider-admin.class.php:254 +msgid "This will reset the navigation, continue?" +msgstr "" + +#: ../admin/revslider-admin.class.php:255 +msgid "Preset name already exists, please choose a different name" +msgstr "" + +#: ../admin/revslider-admin.class.php:256 +msgid "Really delete this preset?" +msgstr "" + +#: ../admin/revslider-admin.class.php:257 +msgid "Maybe wrong YoutTube ID given" +msgstr "" + +#: ../admin/revslider-admin.class.php:258 +msgid "Preset not found" +msgstr "" + +#: ../admin/revslider-admin.class.php:259 +msgid "Cover Image need to be set for videos" +msgstr "" + +#: ../admin/revslider-admin.class.php:260 +msgid "Really remove this action?" +msgstr "" + +#: ../admin/revslider-admin.class.php:261 +msgid "Layer is triggered by " +msgstr "" + +#: ../admin/revslider-admin.class.php:262 +msgid " due to action: " +msgstr "" + +#: ../admin/revslider-admin.class.php:263 +msgid "layer:" +msgstr "" + +#: ../admin/revslider-admin.class.php:264 +msgid "Start Layer \"in\" animation" +msgstr "" + +#: ../admin/revslider-admin.class.php:265 +msgid "Start Layer \"out\" animation" +msgstr "" + +#: ../admin/revslider-admin.class.php:266 ../admin/views/templates/slide-stage. +#: php:2257 +msgid "Start Video" +msgstr "" + +#: ../admin/revslider-admin.class.php:267 ../admin/views/templates/slide-stage. +#: php:2258 +msgid "Stop Video" +msgstr "" + +#: ../admin/revslider-admin.class.php:268 ../admin/views/templates/slide-stage. +#: php:2256 +msgid "Toggle Layer Animation" +msgstr "" + +#: ../admin/revslider-admin.class.php:269 ../admin/views/templates/slide-stage. +#: php:2259 +msgid "Toggle Video" +msgstr "" + +#: ../admin/revslider-admin.class.php:270 ../admin/views/templates/slider-main- +#: options.php:3661 +msgid "Last Slide" +msgstr "" + +#: ../admin/revslider-admin.class.php:271 ../admin/views/templates/slide-stage. +#: php:2260 +msgid "Simulate Click" +msgstr "" + +#: ../admin/revslider-admin.class.php:272 +msgid "Toogle Class" +msgstr "" + +#: ../admin/revslider-admin.class.php:273 +msgid "Copy hover styles to idle?" +msgstr "" + +#: ../admin/revslider-admin.class.php:274 +msgid "Copy idle styles to hover?" +msgstr "" + +#: ../admin/revslider-admin.class.php:275 +msgid "Please select at least one device type" +msgstr "" + +#: ../admin/revslider-admin.class.php:276 +msgid "Please select an existing Style Template" +msgstr "" + +#: ../admin/revslider-admin.class.php:277 +msgid "Can not remove last transition!" +msgstr "" + +#: ../admin/revslider-admin.class.php:278 +msgid "Given animation name is a default animation. These can not be changed." +msgstr "" + +#: ../admin/revslider-admin.class.php:279 +msgid "Animation exists, override existing animation?" +msgstr "" + +# @ revslider +#: ../admin/revslider-admin.class.php:289 +msgid "(never show this message again)  X" +msgstr "(non mostrare di nuovo questo messaggio)  X" + +#: ../admin/revslider-admin.class.php:289 +msgid "" +"Hi! Would you like to activate your version of Revolution Slider to receive " +"live updates & get premium support? This is optional and not needed if the " +"slider came bundled with a theme. " +msgstr "" + +#: ../admin/revslider-admin.class.php:341 +msgid "Close & don't show againX" +msgstr "" + +# @ revslider +#: ../admin/revslider-admin.class.php:413 +msgid "Choose Slide Template" +msgstr "Scegli il Template della Slide" + +#: ../admin/revslider-admin.class.php:509 +msgid "importing slider settings and data..." +msgstr "" + +# @ revslider +#: ../admin/revslider-admin.class.php:525 ../admin/revslider-admin.class.php:546 . +#: ./admin/revslider-admin.class.php:570 +msgid "Go Back" +msgstr "Torna indietro" + +# @ revslider +#: ../admin/revslider-admin.class.php:528 ../admin/revslider-admin.class.php:572 +msgid "Slider Import Success, redirecting..." +msgstr "Slider Importate con Successo, sto reindirizzando ..." + +#: ../admin/revslider-admin.class.php:541 +msgid "importing template slider settings and data..." +msgstr "" + +#: ../admin/revslider-admin.class.php:545 +msgid "ID missing, something went wrong. Please try again!" +msgstr "" + +#: ../admin/revslider-admin.class.php:605 ../admin/revslider-admin.class.php:1299 +#: ../admin/revslider-admin.class.php:1305 +msgid "Slider not found" +msgstr "" + +#: ../admin/revslider-admin.class.php:617 +msgid "Slider setting could not be changed" +msgstr "" + +#: ../admin/revslider-admin.class.php:649 ../includes/operations.class.php:3648 +msgid "Missing values to add preset" +msgstr "" + +#: ../admin/revslider-admin.class.php:657 +msgid "Preset created" +msgstr "" + +#: ../admin/revslider-admin.class.php:666 ../includes/operations.class.php:3670 +msgid "Missing values to remove preset" +msgstr "" + +#: ../admin/revslider-admin.class.php:674 +msgid "Preset deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:720 +msgid "Slider created" +msgstr "" + +# @ revslider +#: ../admin/revslider-admin.class.php:726 +msgid "Slider updated" +msgstr "Slider Aggiornata" + +#: ../admin/revslider-admin.class.php:735 +msgid "Template can't be deleted, it is still being used by the following Sliders: " +msgstr "" + +#: ../admin/revslider-admin.class.php:738 ../admin/revslider-admin.class.php:740 +msgid "Slider deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:748 ../admin/revslider-admin.class.php:823 +msgid "Success! Refreshing page..." +msgstr "" + +# @ revslider +#: ../admin/revslider-admin.class.php:756 +msgid "Slide Created" +msgstr "Slide Creata" + +# @ revslider +#: ../admin/revslider-admin.class.php:758 +msgid "Slides Created" +msgstr "Slides Create" + +# @ revslider +#: ../admin/revslider-admin.class.php:768 +msgid "Slide Created, redirecting..." +msgstr "Slide Create, sto reindirizzando..." + +#: ../admin/revslider-admin.class.php:774 +msgid "Missing redirect ID!" +msgstr "" + +#: ../admin/revslider-admin.class.php:781 +msgid "Slide copied to current Slider, redirecting..." +msgstr "" + +# @ revslider +#: ../admin/revslider-admin.class.php:787 +msgid "Slide updated" +msgstr "Slide aggiornata" + +#: ../admin/revslider-admin.class.php:791 +msgid "Static Global Layers updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:797 +msgid "Post deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:799 +msgid "Slide deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:812 ../admin/revslider-admin.class.php:814 +msgid "Slide duplicated" +msgstr "" + +#: ../admin/revslider-admin.class.php:821 +msgid "Success!" +msgstr "" + +#: ../admin/revslider-admin.class.php:829 +msgid "No valid Slide ID given" +msgstr "" + +#: ../admin/revslider-admin.class.php:833 ../admin/revslider-admin.class.php:837 +msgid "No valid title given" +msgstr "" + +#: ../admin/revslider-admin.class.php:844 +msgid "Could not save Slide as Template" +msgstr "" + +#: ../admin/revslider-admin.class.php:860 +msgid "Slide added to Templates" +msgstr "" + +#: ../admin/revslider-admin.class.php:888 ../admin/revslider-admin.class.php:910 . +#: ./admin/revslider-admin.class.php:931 ../admin/revslider-admin.class.php:980 +msgid "CSS saved" +msgstr "" + +#: ../admin/revslider-admin.class.php:891 ../admin/revslider-admin.class.php:913 . +#: ./admin/revslider-admin.class.php:934 +msgid "CSS could not be saved" +msgstr "" + +#: ../admin/revslider-admin.class.php:952 +msgid "Class name renamed" +msgstr "" + +#: ../admin/revslider-admin.class.php:968 +msgid "Style deleted!" +msgstr "" + +#: ../admin/revslider-admin.class.php:984 ../admin/revslider-admin.class.php:988 . +#: ./admin/revslider-admin.class.php:992 +msgid "Animation saved" +msgstr "" + +#: ../admin/revslider-admin.class.php:996 +msgid "Animation deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:1000 +msgid "Order updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1004 +msgid "Title updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1009 +msgid "Slide changed" +msgstr "" + +# @ revslider +#: ../admin/revslider-admin.class.php:1033 +msgid "General settings updated" +msgstr "Impostazioni Generali aggiornate" + +# @ revslider +#: ../admin/revslider-admin.class.php:1037 +msgid "Sortby updated" +msgstr "Ordinamento Aggiornato" + +# @ revslider +#: ../admin/revslider-admin.class.php:1041 +msgid "Image urls replaced" +msgstr "Le URL delle immagini sono state sostituite" + +# @ revslider +#: ../admin/revslider-admin.class.php:1045 +msgid "Settings in all Slides changed" +msgstr "Le impostazioni in tutte le Slides sono state cambiate" + +# @ revslider +#: ../admin/revslider-admin.class.php:1052 +msgid "The API key, the Purchase Code and the Username need to be set!" +msgstr "La chiave API, il Codice di acquisto e la Username devono essere impostati!" + +# @ revslider +#: ../admin/revslider-admin.class.php:1057 +msgid "Purchase Code Successfully Activated" +msgstr "Codice di acquisto attivato con Successo" + +# @ revslider +#: ../admin/revslider-admin.class.php:1059 +msgid "Purchase Code is invalid" +msgstr "Codice di acquisto non valido" + +# @ revslider +#: ../admin/revslider-admin.class.php:1066 +msgid "Successfully removed validation" +msgstr "Convalida rimossa con Successo" + +# @ revslider +#: ../admin/revslider-admin.class.php:1068 +msgid "Could not remove Validation!" +msgstr "Impossibile rimuovere convalida!" + +# @ revslider +#: ../admin/revslider-admin.class.php:1073 ../admin/revslider-admin.class.php:1080 +msgid "." +msgstr "." + +#: ../admin/revslider-admin.class.php:1086 +msgid "Setting Changed!" +msgstr "" + +#: ../admin/revslider-admin.class.php:1091 +msgid "No ID given" +msgstr "" + +#: ../admin/revslider-admin.class.php:1101 ../admin/revslider-admin.class.php:1119 +msgid "Invalid Email" +msgstr "" + +#: ../admin/revslider-admin.class.php:1104 +msgid "Success! Please check your Emails to finish the subscribtion" +msgstr "" + +#: ../admin/revslider-admin.class.php:1107 ../admin/revslider-admin.class.php:1125 +msgid "Invalid Email/Could not connect to the Newsletter server" +msgstr "" + +#: ../admin/revslider-admin.class.php:1110 ../admin/revslider-admin.class.php:1128 +msgid "No Email given" +msgstr "" + +#: ../admin/revslider-admin.class.php:1122 +msgid "Success! Please check your Emails to finish the process" +msgstr "" + +#: ../admin/revslider-admin.class.php:1148 +msgid "Navigation saved/updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1156 +msgid "Navigations updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1167 +msgid "Navigation deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:1171 +msgid "Wrong ID given" +msgstr "" + +#: ../admin/revslider-admin.class.php:1178 +msgid "Successfully fetched Facebook albums" +msgstr "" + +#: ../admin/revslider-admin.class.php:1181 +msgid "Could not fetch Facebook albums" +msgstr "" + +#: ../admin/revslider-admin.class.php:1186 +msgid "Cleared Albums" +msgstr "" + +#: ../admin/revslider-admin.class.php:1195 +msgid "Successfully fetched flickr photosets" +msgstr "" + +#: ../admin/revslider-admin.class.php:1198 +msgid "Could not fetch flickr photosets" +msgstr "" + +#: ../admin/revslider-admin.class.php:1204 +msgid "Cleared Photosets" +msgstr "" + +#: ../admin/revslider-admin.class.php:1207 +msgid "No User URL - Could not fetch flickr photosets" +msgstr "" + +#: ../admin/revslider-admin.class.php:1211 +msgid "No API KEY - Could not fetch flickr photosets" +msgstr "" + +#: ../admin/revslider-admin.class.php:1220 +msgid "Successfully fetched YouTube playlists" +msgstr "" + +#: ../admin/revslider-admin.class.php:1223 +msgid "Could not fetch YouTube playlists" +msgstr "" + +#: ../admin/revslider-admin.class.php:1309 +msgid "No Data Received" +msgstr "" + +#: ../admin/revslider-admin.class.php:1319 +msgid "Loading Error" +msgstr "" + +#: ../admin/revslider-admin.class.php:1321 +msgid "Loading Error: " +msgstr "" + +# @ revslider +#: ../admin/views/master-view.php:55 ../admin/views/system/validation.php:52 +msgid "Please Wait..." +msgstr "Attendere..." + +#: ../admin/views/navigation-editor.php:33 +msgid "Select the Navigation Category to Edit" +msgstr "" + +#: ../admin/views/navigation-editor.php:33 +msgid "Add New" +msgstr "" + +#: ../admin/views/navigation-editor.php:36 +msgid "#ID" +msgstr "" + +#: ../admin/views/navigation-editor.php:37 +msgid "Skin Name" +msgstr "" + +#: ../admin/views/navigation-editor.php:40 ../admin/views/templates/slider-main- +#: options.php:2313 +msgid "Thumbs" +msgstr "" + +# @ revslider +#: ../admin/views/navigation-editor.php:42 ../admin/views/navigation-editor.php: +#: 67 ../admin/views/templates/slide-stage.php:34 +msgid "Actions" +msgstr "Azioni" + +#: ../admin/views/navigation-editor.php:58 +msgid "Editing" +msgstr "" + +# @ revslider +#: ../admin/views/navigation-editor.php:58 ../admin/views/system/dialog-video.php: +#: 229 +msgid "Remove" +msgstr "Rimuovi" + +#: ../admin/views/navigation-editor.php:61 +msgid "Markup" +msgstr "" + +#: ../admin/views/navigation-editor.php:69 ../admin/views/navigation-editor.php: +#: 70 ../admin/views/navigation-editor.php:71 ../admin/views/navigation-editor. +#: php:72 +msgid "Reset Defaults" +msgstr "" + +#: ../admin/views/navigation-editor.php:73 +msgid "Parameters" +msgstr "" + +# @ revslider +#: ../admin/views/navigation-editor.php:75 ../admin/views/templates/slide-general- +#: settings.php:476 +msgid "Slide Title" +msgstr "Titolo Slide" + +#: ../admin/views/navigation-editor.php:76 +msgid "Slide Description" +msgstr "" + +#: ../admin/views/navigation-editor.php:80 +msgid "Parameter " +msgstr "" + +# @ revslider +#: ../admin/views/navigation-editor.php:94 ../includes/operations.class.php:1418 +msgid "CSS" +msgstr "CSS" + +#: ../admin/views/navigation-editor.php:100 +msgid "Style Helper" +msgstr "" + +#: ../admin/views/navigation-editor.php:102 +msgid "Color Value" +msgstr "" + +#: ../admin/views/navigation-editor.php:106 ../admin/views/navigation-editor.php: +#: 120 ../admin/views/navigation-editor.php:138 ../admin/views/navigation-editor. +#: php:154 ../admin/views/navigation-editor.php:170 ../admin/views/navigation- +#: editor.php:184 ../admin/views/templates/template-selector.php:17 .. +#: admin/views/templates/template-slider-selector.php:15 +msgid "Add" +msgstr "" + +#: ../admin/views/navigation-editor.php:109 ../admin/views/templates/slide-stage. +#: php:2157 ../admin/views/templates/slider-main-options.php:3105 +msgid "Border Radius" +msgstr "" + +#: ../admin/views/navigation-editor.php:111 +msgid "Top Left" +msgstr "" + +#: ../admin/views/navigation-editor.php:113 +msgid "Top Right" +msgstr "" + +#: ../admin/views/navigation-editor.php:115 +msgid "Bottom Right" +msgstr "" + +#: ../admin/views/navigation-editor.php:117 +msgid "Bottom Left" +msgstr "" + +#: ../admin/views/navigation-editor.php:123 ../admin/views/templates/slide-stage. +#: php:244 ../admin/views/templates/slide-stage.php:512 .. +#: admin/views/templates/slide-stage.php:2005 ../admin/views/templates/slide- +#: stage.php:2070 ../admin/views/templates/slide-stage.php:2136 +msgid "Border" +msgstr "" + +# @ revslider +#: ../admin/views/navigation-editor.php:125 ../admin/views/templates/slider-main- +#: options.php:1965 ../admin/views/templates/slider-main-options.php:2397 .. +#: admin/views/templates/slider-main-options.php:2427 .. +#: admin/views/templates/slider-main-options.php:2540 .. +#: admin/views/templates/slider-main-options.php:2710 .. +#: admin/views/templates/slider-main-options.php:2878 .. +#: admin/views/templates/slider-main-options.php:3213 +msgid "Top" +msgstr "Alto" + +# @ revslider +#: ../admin/views/navigation-editor.php:127 ../admin/views/templates/slide-stage. +#: php:282 ../admin/views/templates/slider-main-options.php:2175 .. +#: admin/views/templates/slider-main-options.php:2390 .. +#: admin/views/templates/slider-main-options.php:2419 .. +#: admin/views/templates/slider-main-options.php:2534 .. +#: admin/views/templates/slider-main-options.php:2704 .. +#: admin/views/templates/slider-main-options.php:2872 .. +#: admin/views/templates/slider-main-options.php:3207 +msgid "Right" +msgstr "Destra" + +# @ revslider +#: ../admin/views/navigation-editor.php:129 ../admin/views/templates/slider-main- +#: options.php:1966 ../admin/views/templates/slider-main-options.php:2399 .. +#: admin/views/templates/slider-main-options.php:2429 .. +#: admin/views/templates/slider-main-options.php:2542 .. +#: admin/views/templates/slider-main-options.php:2712 .. +#: admin/views/templates/slider-main-options.php:2880 .. +#: admin/views/templates/slider-main-options.php:3215 +msgid "Bottom" +msgstr "Basso" + +# @ revslider +#: ../admin/views/navigation-editor.php:131 ../admin/views/templates/slide-stage. +#: php:280 ../admin/views/templates/slider-main-options.php:2173 .. +#: admin/views/templates/slider-main-options.php:2388 .. +#: admin/views/templates/slider-main-options.php:2417 .. +#: admin/views/templates/slider-main-options.php:2532 .. +#: admin/views/templates/slider-main-options.php:2702 .. +#: admin/views/templates/slider-main-options.php:2870 .. +#: admin/views/templates/slider-main-options.php:3205 +msgid "Left" +msgstr "Sinistra" + +# @ revslider +#: ../admin/views/navigation-editor.php:133 ../admin/views/navigation-editor.php: +#: 149 ../admin/views/navigation-editor.php:165 ../admin/views/templates/slide- +#: stage.php:751 ../admin/views/templates/slide-stage.php:927 +msgid "Opacity" +msgstr "Opacità" + +#: ../admin/views/navigation-editor.php:141 +msgid "Text-Shadow" +msgstr "" + +# @ revslider +#: ../admin/views/navigation-editor.php:143 ../admin/views/navigation-editor.php: +#: 159 ../admin/views/templates/slide-stage.php:1127 +msgid "Angle" +msgstr "Angolazione" + +#: ../admin/views/navigation-editor.php:145 ../admin/views/navigation-editor.php: +#: 161 +msgid "Distance" +msgstr "" + +#: ../admin/views/navigation-editor.php:147 ../admin/views/navigation-editor.php: +#: 163 +msgid "Blur" +msgstr "" + +#: ../admin/views/navigation-editor.php:157 +msgid "Box-Shadow" +msgstr "" + +#: ../admin/views/navigation-editor.php:173 ../admin/views/templates/slide-stage. +#: php:153 ../admin/views/templates/slide-stage.php:154 .. +#: admin/views/templates/slide-stage.php:2030 ../admin/views/templates/slide- +#: stage.php:2031 +msgid "Font Family" +msgstr "" + +#: ../admin/views/navigation-editor.php:190 +msgid "Resets" +msgstr "" + +#: ../admin/views/navigation-editor.php:192 ../admin/views/navigation-editor.php: +#: 194 ../admin/views/navigation-editor.php:196 ../admin/views/navigation-editor. +#: php:198 +msgid "Classes & Style" +msgstr "" + +#: ../admin/views/navigation-editor.php:193 ../admin/views/navigation-editor.php: +#: 195 ../admin/views/navigation-editor.php:197 ../admin/views/navigation-editor. +#: php:199 +msgid "Only Classes" +msgstr "" + +#: ../admin/views/navigation-editor.php:218 +msgid "Live Preview - Hover & Click for test" +msgstr "" + +#: ../admin/views/navigation-editor.php:220 +msgid "Suggested Width:" +msgstr "" + +#: ../admin/views/navigation-editor.php:222 +msgid "Suggested Height:" +msgstr "" + +#: ../admin/views/navigation-editor.php:241 +msgid "Save All Changes" +msgstr "" + +#: ../admin/views/navigation-editor.php:302 +msgid "View" +msgstr "" + +# @ revslider +#: ../admin/views/navigation-editor.php:302 +msgid "Edit" +msgstr "Modifica" + +#: ../admin/views/navigation-editor.php:1237 +msgid "Custom Navigations" +msgstr "" + +#: ../admin/views/navigation-editor.php:1240 +msgid "Default Navigations" +msgstr "" + +# @ revslider +#: ../admin/views/slide-editor.php:311 +msgid "Slider:" +msgstr "Slider:" + +# @ revslider +#: ../admin/views/slide-editor.php:314 +msgid "Edit Template Slide" +msgstr "Modifica il template della Slide" + +# @ revslider +#: ../admin/views/slide-editor.php:316 ../admin/views/templates/slides-list.php: +#: 107 ../admin/views/templates/wpml-selector.php:10 +msgid "Edit Slide" +msgstr "Modifica Slide" + +# @ revslider +#: ../admin/views/slide-editor.php:318 ../admin/views/slider-overview.php:279 +msgid "Title:" +msgstr "Titolo:" + +# @ revslider +#: ../admin/views/slide-editor.php:321 ../admin/views/slider-overview.php:67 .. +#: admin/views/templates/slider-main-options.php:26 .. +#: admin/views/templates/slides.php:10 +msgid "Help" +msgstr "Aiuto" + +#: ../admin/views/slide-editor.php:350 +msgid "" +"Warning!!! The jquery ui javascript include that is loaded by some of " +"the plugins are custom made and not contain needed components like " +"'autocomplete' or 'draggable' function.\n" +" Without those functions the editor may not work correctly. Please remove " +"those custom jquery ui includes in order the editor will work correctly." +msgstr "" + +#: ../admin/views/slide-editor.php:364 +msgid "Insert Meta" +msgstr "" + +# @ revslider +#: ../admin/views/slide-editor.php:371 +msgid "Post Replace Placeholders:" +msgstr "Sostituisci Post Segnaposto:" + +# @ revslider +#: ../admin/views/slide-editor.php:373 +msgid "Any custom meta tag" +msgstr "Qualsiasi Meta tag personalizzati" + +# @ revslider +#: ../admin/views/slide-editor.php:374 ../admin/views/slide-editor.php:420 +msgid "Post Title" +msgstr "Titolo del Post" + +# @ revslider +#: ../admin/views/slide-editor.php:375 +msgid "Post Excerpt" +msgstr "Estratto del Post" + +# @ revslider +#: ../admin/views/slide-editor.php:376 +msgid "Post Alias" +msgstr "Alias del Post" + +# @ revslider +#: ../admin/views/slide-editor.php:377 ../admin/views/slide-editor.php:421 +msgid "Post content" +msgstr "Contenuto del Post" + +# @ revslider +#: ../admin/views/slide-editor.php:378 ../admin/views/slide-editor.php:422 .. +#: admin/views/slide-editor.php:530 +msgid "The link to the post" +msgstr "Link al Post" + +# @ revslider +#: ../admin/views/slide-editor.php:379 ../admin/views/slide-editor.php:423 .. +#: admin/views/slide-editor.php:444 +msgid "Date created" +msgstr "Data di creazione" + +# @ revslider +#: ../admin/views/slide-editor.php:380 +msgid "Date modified" +msgstr "Data della modifica" + +# @ revslider +#: ../admin/views/slide-editor.php:381 +msgid "Author name" +msgstr "Nome dell'Autore" + +# @ revslider +#: ../admin/views/slide-editor.php:382 +msgid "Number of comments" +msgstr "Numero di Commenti" + +# @ revslider +#: ../admin/views/slide-editor.php:383 +msgid "List of categories with links" +msgstr "Elenco delle categorie con Link" + +# @ revslider +#: ../admin/views/slide-editor.php:384 +msgid "List of tags with links" +msgstr "Elenco dei Tag con Link" + +#: ../admin/views/slide-editor.php:388 +msgid "Featured Image URL" +msgstr "" + +#: ../admin/views/slide-editor.php:389 +msgid "Featured Image <img />" +msgstr "" + +# @ revslider +#: ../admin/views/slide-editor.php:397 +msgid "Events Placeholders:" +msgstr "Eventi Segnaposto:" + +# @ revslider +#: ../admin/views/slide-editor.php:399 +msgid "Event start date" +msgstr "Inizio data dell'evento" + +# @ revslider +#: ../admin/views/slide-editor.php:400 +msgid "Event end date" +msgstr "Evento e data" + +# @ revslider +#: ../admin/views/slide-editor.php:401 +msgid "Event start time" +msgstr "Inizio tempo dell'evento" + +# @ revslider +#: ../admin/views/slide-editor.php:402 +msgid "Event end time" +msgstr "Evento e tempo" + +# @ revslider +#: ../admin/views/slide-editor.php:403 +msgid "Event ID" +msgstr "Evento ID" + +# @ revslider +#: ../admin/views/slide-editor.php:404 +msgid "Event location name" +msgstr "Evento posizione nome" + +# @ revslider +#: ../admin/views/slide-editor.php:405 +msgid "Event location slug" +msgstr "Evento posizione slug" + +# @ revslider +#: ../admin/views/slide-editor.php:406 +msgid "Event location address" +msgstr "Evento posizione indirizzo" + +# @ revslider +#: ../admin/views/slide-editor.php:407 +msgid "Event location town" +msgstr "Evento posizione città" + +# @ revslider +#: ../admin/views/slide-editor.php:408 +msgid "Event location state" +msgstr "Evento posizione stato" + +# @ revslider +#: ../admin/views/slide-editor.php:409 +msgid "Event location postcode" +msgstr "Evento posizione cod. postale" + +# @ revslider +#: ../admin/views/slide-editor.php:410 +msgid "Event location region" +msgstr "Evento posizione regione" + +# @ revslider +#: ../admin/views/slide-editor.php:411 +msgid "Event location country" +msgstr "Evento posizione provincia" + +#: ../admin/views/slide-editor.php:418 +msgid "Flickr Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:424 ../admin/views/slide-editor.php:445 .. +#: admin/views/slide-editor.php:467 ../admin/views/slide-editor.php:490 .. +#: admin/views/slide-editor.php:532 +msgid "Username" +msgstr "" + +#: ../admin/views/slide-editor.php:425 +msgid "Views" +msgstr "" + +#: ../admin/views/slide-editor.php:429 ../admin/views/slide-editor.php:451 .. +#: admin/views/slide-editor.php:473 ../admin/views/slide-editor.php:495 .. +#: admin/views/slide-editor.php:515 ../admin/views/slide-editor.php:539 +msgid "Image URL" +msgstr "" + +#: ../admin/views/slide-editor.php:430 ../admin/views/slide-editor.php:452 .. +#: admin/views/slide-editor.php:474 ../admin/views/slide-editor.php:496 .. +#: admin/views/slide-editor.php:516 ../admin/views/slide-editor.php:540 +msgid "Image <img />" +msgstr "" + +#: ../admin/views/slide-editor.php:439 +msgid "Instagram Placeholders:" +msgstr "" + +# @ revslider +#: ../admin/views/slide-editor.php:441 ../admin/views/slide-editor.php:463 .. +#: admin/views/slide-editor.php:485 ../admin/views/slide-editor.php:507 .. +#: admin/views/slide-editor.php:527 ../admin/views/templates/slide-stage.php: +#: 1241 ../admin/views/templates/slider-main-options.php:422 ../includes/widget. +#: class.php:61 +msgid "Title" +msgstr "Titolo" + +#: ../admin/views/slide-editor.php:442 ../admin/views/slide-editor.php:464 .. +#: admin/views/slide-editor.php:486 ../admin/views/slide-editor.php:509 .. +#: admin/views/slide-editor.php:529 +msgid "Content" +msgstr "" + +#: ../admin/views/slide-editor.php:443 ../admin/views/slide-editor.php:465 .. +#: admin/views/slide-editor.php:487 ../admin/views/slide-editor.php:511 +msgid "Link" +msgstr "" + +#: ../admin/views/slide-editor.php:446 ../admin/views/slide-editor.php:491 .. +#: admin/views/slide-editor.php:533 +msgid "Number of Likes" +msgstr "" + +#: ../admin/views/slide-editor.php:447 ../admin/views/slide-editor.php:535 +msgid "Number of Comments" +msgstr "" + +#: ../admin/views/slide-editor.php:461 +msgid "Twitter Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:466 ../admin/views/slide-editor.php:488 .. +#: admin/views/slide-editor.php:510 ../admin/views/slide-editor.php:531 +msgid "Pulbishing Date" +msgstr "" + +#: ../admin/views/slide-editor.php:468 +msgid "Retweet Count" +msgstr "" + +#: ../admin/views/slide-editor.php:469 +msgid "Favorite Count" +msgstr "" + +#: ../admin/views/slide-editor.php:483 +msgid "Facebook Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:489 +msgid "Last Modify Date" +msgstr "" + +#: ../admin/views/slide-editor.php:505 +msgid "YouTube Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:508 ../admin/views/slide-editor.php:528 +msgid "Excerpt" +msgstr "" + +#: ../admin/views/slide-editor.php:525 +msgid "Vimeo Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:534 +msgid "Number of Views" +msgstr "" + +#: ../admin/views/slide-editor.php:551 ../admin/views/templates/slide-stage.php: +#: 250 ../admin/views/templates/slide-stage.php:515 +msgid "Advanced CSS" +msgstr "" + +#: ../admin/views/slide-editor.php:554 +msgid "Style from Options" +msgstr "" + +#: ../admin/views/slide-editor.php:554 +msgid "Editable via Option Fields, Saved in the Class:" +msgstr "" + +#: ../admin/views/slide-editor.php:558 +msgid "Additional Custom Styling" +msgstr "" + +#: ../admin/views/slide-editor.php:558 +msgid "Appended in the Class:" +msgstr "" + +# @ revslider +#: ../admin/views/slide-editor.php:563 ../admin/views/slide-editor.php:582 .. +#: admin/views/templates/slide-stage.php:86 ../admin/views/templates/slide-stage. +#: php:701 ../admin/views/templates/slide-stage.php:876 +msgid "Save As" +msgstr "Salva come" + +#: ../admin/views/slide-editor.php:565 ../admin/views/slide-editor.php:584 +msgid "Save As:" +msgstr "" + +#: ../admin/views/slide-editor.php:569 +msgid "Rename CSS" +msgstr "" + +#: ../admin/views/slide-editor.php:571 ../admin/views/slide-editor.php:895 +msgid "Rename to:" +msgstr "" + +#: ../admin/views/slide-editor.php:575 +msgid "Layer Inline CSS" +msgstr "" + +#: ../admin/views/slide-editor.php:577 +msgid "Advanced Custom Styling" +msgstr "" + +#: ../admin/views/slide-editor.php:577 +msgid "Appended Inline to the Layer Markup" +msgstr "" + +#: ../admin/views/slide-editor.php:588 +msgid "Save Under" +msgstr "" + +#: ../admin/views/slide-editor.php:590 +msgid "Save Under:" +msgstr "" + +#: ../admin/views/slide-editor.php:838 ../admin/views/slide-editor.php:877 +msgid "Save Slide" +msgstr "" + +# @ revslider +#: ../admin/views/slide-editor.php:842 +msgid "Update Static Layers" +msgstr "Aggiorna Layer Statici" + +# @ revslider +#: ../admin/views/slide-editor.php:846 +msgid "updating" +msgstr "Aggiornamento" + +# @ revslider +#: ../admin/views/slide-editor.php:848 ../admin/views/slide-editor.php:883 .. +#: admin/views/slide-overview.php:169 +msgid "Slider Settings" +msgstr "impostazioni Slider" + +#: ../admin/views/slide-editor.php:849 +msgid "Slides Overview" +msgstr "" + +# @ revslider +#: ../admin/views/slide-editor.php:854 ../admin/views/templates/wpml-selector.php:9 +msgid "Delete Slide" +msgstr "Elimina Slide" + +#: ../admin/views/slide-editor.php:873 +msgid "CSS Global" +msgstr "" + +# @ revslider +#: ../admin/views/slide-editor.php:887 ../admin/views/templates/slider-main- +#: options.php:1310 ../admin/views/templates/slider-main-options.php:4292 .. +#: admin/views/templates/sliders-list.php:169 +msgid "Preview" +msgstr "Anteprima" + +#: ../admin/views/slide-editor.php:893 +msgid "Rename Animation" +msgstr "" + +# @ revslider +#: ../admin/views/slide-editor.php:918 +msgid "Delete this slide?" +msgstr "Elimina questa Slide?" + +#: ../admin/views/slide-overview.php:51 +msgid "New Post" +msgstr "" + +#: ../admin/views/slide-overview.php:61 +msgid "Edit Posts" +msgstr "" + +#: ../admin/views/slide-overview.php:65 +msgid "This is a list of posts that are taken from multiple sources." +msgstr "" + +# @ revslider +#: ../admin/views/slide-overview.php:67 +msgid "Sort by" +msgstr "Ordina per" + +# @ revslider +#: ../admin/views/slide-overview.php:70 +msgid "Updating Sorting..." +msgstr "Aggiornamento Ordinamento..." + +#: ../admin/views/slide-overview.php:75 ../admin/views/templates/slides-list.php:5 +msgid "Post List" +msgstr "" + +# @ revslider +#: ../admin/views/slide-overview.php:76 ../admin/views/templates/slides-list.php:6 +msgid "Saving Order" +msgstr "Salva Ordine" + +#: ../admin/views/slide-overview.php:80 ../admin/views/templates/slides-list.php:12 +msgid "No Posts Found" +msgstr "" + +# @ revslider +#: ../admin/views/slide-overview.php:133 +msgid "Unpublish Post" +msgstr "Non pubblicare Post" + +# @ revslider +#: ../admin/views/slide-overview.php:135 +msgid "Publish Post" +msgstr "Pubblica Post" + +# @ revslider +#: ../admin/views/slide-overview.php:140 +msgid "Edit Post" +msgstr "Modifica Post" + +#: ../admin/views/slide-overview.php:144 ../admin/views/slide-overview.php:146 +msgid "" +"Click to change the slide image. Note: The post featured image will be " +"changed." +msgstr "" + +#: ../admin/views/slide-overview.php:146 +msgid "no image" +msgstr "" + +# @ revslider +#: ../admin/views/slide-overview.php:150 ../admin/views/templates/slide-selector. +#: php:198 ../admin/views/templates/slide-stage.php:89 .. +#: admin/views/templates/slide-stage.php:704 ../admin/views/templates/slide- +#: stage.php:879 ../admin/views/templates/sliders-list.php:167 .. +#: admin/views/templates/slides-list.php:134 +msgid "Delete" +msgstr "Elimina" + +# @ revslider +#: ../admin/views/slide-overview.php:173 +msgid "" +"Warning! Removing this entry will cause the original wordpress post to be " +"deleted." +msgstr "" +"Attenzione! La rimozione di questo inserimento causerà eliminazione del post " +"originale da Wordpress." + +# @ revslider +#: ../admin/views/slider-overview.php:69 +msgid "Global Settings" +msgstr "Impostazioni Globali" + +# @ revslider +#: ../admin/views/slider-overview.php:76 +msgid "Revolution Sliders" +msgstr "Revolution Sliders" + +#: ../admin/views/slider-overview.php:81 +msgid "Sort By:" +msgstr "" + +#: ../admin/views/slider-overview.php:83 +msgid "By ID" +msgstr "" + +#: ../admin/views/slider-overview.php:84 +msgid "By Name" +msgstr "" + +#: ../admin/views/slider-overview.php:85 +msgid "By Type" +msgstr "" + +#: ../admin/views/slider-overview.php:86 +msgid "By Favorit" +msgstr "" + +#: ../admin/views/slider-overview.php:89 +msgid "Filter By:" +msgstr "" + +# @ default +#: ../admin/views/slider-overview.php:92 ../admin/views/templates/slider-main- +#: options.php:3408 +msgid "All" +msgstr "Tutti" + +# @ revslider +#: ../admin/views/slider-overview.php:93 ../admin/views/templates/sliders-list. +#: php:33 +msgid "Posts" +msgstr "Posts" + +# @ revslider +#: ../admin/views/slider-overview.php:94 ../admin/views/templates/slider-main- +#: options.php:146 ../admin/views/templates/sliders-list.php:21 +msgid "Gallery" +msgstr "Galleria" + +# @ revslider +#: ../admin/views/slider-overview.php:95 ../admin/views/system/dialog-video.php: +#: 30 ../admin/views/templates/sliders-list.php:74 +msgid "Vimeo" +msgstr "Vimeo" + +#: ../admin/views/slider-overview.php:96 ../admin/views/system/dialog-video.php: +#: 28 ../admin/views/templates/sliders-list.php:68 +msgid "YouTube" +msgstr "" + +#: ../admin/views/slider-overview.php:97 ../admin/views/templates/sliders-list. +#: php:50 +msgid "Twitter" +msgstr "" + +#: ../admin/views/slider-overview.php:98 ../admin/views/templates/sliders-list. +#: php:44 +msgid "Facebook" +msgstr "" + +#: ../admin/views/slider-overview.php:99 ../admin/views/templates/sliders-list. +#: php:56 +msgid "Instagram" +msgstr "" + +#: ../admin/views/slider-overview.php:100 ../admin/views/templates/sliders-list. +#: php:62 +msgid "Flickr" +msgstr "" + +# @ revslider +#: ../admin/views/slider-overview.php:111 +msgid "No Sliders Found" +msgstr "Non sono state trovate Sliders" + +#: ../admin/views/slider-overview.php:126 +msgid "For the" +msgstr "" + +#: ../admin/views/slider-overview.php:126 +msgid "pages or posts editor" +msgstr "" + +#: ../admin/views/slider-overview.php:126 +msgid "insert the shortcode:" +msgstr "" + +# @ revslider +#: ../admin/views/slider-overview.php:128 ../admin/views/slider-overview.php:132 +msgid "From the" +msgstr "Dal" + +# @ revslider +#: ../admin/views/slider-overview.php:128 +msgid "theme html" +msgstr "Tema html" + +# @ revslider +#: ../admin/views/slider-overview.php:128 +msgid "use" +msgstr "usa" + +#: ../admin/views/slider-overview.php:129 +msgid "To add the slider only to homepage use" +msgstr "" + +#: ../admin/views/slider-overview.php:130 +msgid "To add the slider on specific pages or posts use" +msgstr "" + +# @ revslider +#: ../admin/views/slider-overview.php:132 +msgid "widgets panel" +msgstr "Pannello Widget" + +# @ revslider +#: ../admin/views/slider-overview.php:132 +msgid "drag the \"Revolution Slider\" widget to the desired sidebar" +msgstr "Copia la \"Revolution Slider\" Widget dove desideri nella Sidebar" + +# @ revslider +#: ../admin/views/slider-overview.php:144 +msgid "Version Information" +msgstr "Informazioni sulla Versione" + +# @ revslider +#: ../admin/views/slider-overview.php:149 +msgid "Installed Version" +msgstr "Versione Installata" + +#: ../admin/views/slider-overview.php:153 +msgid "Latest Stable Version" +msgstr "" + +#: ../admin/views/slider-overview.php:153 +msgid "Update to Stable (Free)" +msgstr "" + +# @ revslider +#: ../admin/views/slider-overview.php:157 +msgid "Latest Available Version" +msgstr "Ultima Versione Disponibile" + +# @ revslider +#: ../admin/views/slider-overview.php:157 +msgid "Check Version" +msgstr "Controlla Versione" + +#: ../admin/views/slider-overview.php:169 +msgid "Need Premium Support and Live Updates ?" +msgstr "" + +# @ revslider +#: ../admin/views/slider-overview.php:169 +msgid "Why is this Important ?" +msgstr "Perchè questo è importante ?" + +# @ revslider +#: ../admin/views/slider-overview.php:174 +msgid "Benefits" +msgstr "Benefici" + +# @ revslider +#: ../admin/views/slider-overview.php:176 +msgid "Get Premium Support" +msgstr "Vai al Supporto Premium" + +#: ../admin/views/slider-overview.php:176 +msgid "" +" - We help you in case of Bugs, installation problems, and Conflicts with " +"other plugins and Themes" +msgstr "" + +#: ../admin/views/slider-overview.php:177 +msgid "Live Updates" +msgstr "" + +#: ../admin/views/slider-overview.php:177 +msgid "" +" - Get the latest version of our Plugin. New Features and Bug Fixes are " +"available regularly !" +msgstr "" + +# @ revslider +#: ../admin/views/slider-overview.php:194 +msgid "Information" +msgstr "Informazioni" + +# @ revslider +#: ../admin/views/slider-overview.php:199 +msgid "" +"Please note that this plugin came bundled with a theme. The use of the " +"Revolution Slider is limited to this theme only.
        If you need support from " +"the Slider author ThemePunch or you want to use the Revolution slider with " +"an other theme you will need an extra single license available at CodeCanyon." +msgstr "" +"Si prega di notare che questo plugin è venuto in bundle con un tema. L'uso " +"della Revoluzion Slider si limita solo a questo tema.
        Se hai bisogno di " +"supporto da parte dell'autore Slider ThemePunch o si desidera utilizzare " +"Revoluzion Slider con un altro tema è necessario una licenza singola " +"disponibile in CodeCanyon." + +#: ../admin/views/slider-overview.php:210 +msgid "Newsletter" +msgstr "" + +#: ../admin/views/slider-overview.php:210 +msgid "Why subscribe?" +msgstr "" + +#: ../admin/views/slider-overview.php:216 +msgid "Unsubscribe our newsletter" +msgstr "" + +#: ../admin/views/slider-overview.php:216 +msgid "Subscribe to our newsletter" +msgstr "" + +#: ../admin/views/slider-overview.php:216 +msgid "Enter your E-Mail here" +msgstr "" + +#: ../admin/views/slider-overview.php:217 +msgid "Subscribe" +msgstr "" + +#: ../admin/views/slider-overview.php:219 +msgid "Unsubscribe" +msgstr "" + +#: ../admin/views/slider-overview.php:220 +msgid "Cancel" +msgstr "" + +#: ../admin/views/slider-overview.php:223 +msgid "unsubscibe from newsletter" +msgstr "" + +#: ../admin/views/slider-overview.php:225 +msgid "Perks of subscribing to our Newsletter" +msgstr "" + +#: ../admin/views/slider-overview.php:227 +msgid "Receive info on the latest ThemePunch product updates" +msgstr "" + +#: ../admin/views/slider-overview.php:228 +msgid "Be the first to know about new products by ThemePunch and their partners" +msgstr "" + +#: ../admin/views/slider-overview.php:229 +msgid "" +"Participate in polls and customer surveys that help us increase the quality " +"of our products and services" +msgstr "" + +# @ revslider +#: ../admin/views/slider-overview.php:238 +msgid "Update History" +msgstr "Storico Aggiornamenti" + +# @ revslider +#: ../admin/views/slider-overview.php:248 ../admin/views/slider-overview.php:272 . +#: ./admin/views/templates/sliders-list.php:190 +msgid "Import Slider" +msgstr "Importa Slider" + +# @ revslider +#: ../admin/views/slider-overview.php:254 +msgid "Choose the import file" +msgstr "Scegli il file da importare" + +# @ revslider +#: ../admin/views/slider-overview.php:258 ../admin/views/templates/template- +#: selector.php:242 ../admin/views/templates/template-slider-selector.php:171 +msgid "Note: custom styles will be updated if they exist!" +msgstr "Nota: Eventuali Stili personalizzati saranno aggiornati se esistono!" + +# @ revslider +#: ../admin/views/slider-overview.php:261 ../admin/views/templates/template- +#: selector.php:245 ../admin/views/templates/template-slider-selector.php:174 +msgid "Custom Animations:" +msgstr "Animazioni Personalizzate:" + +# @ revslider +#: ../admin/views/slider-overview.php:262 ../admin/views/slider-overview.php:267 . +#: ./admin/views/templates/slider-main-options.php:3564 .. +#: admin/views/templates/slider-main-options.php:3569 .. +#: admin/views/templates/template-selector.php:246 .. +#: admin/views/templates/template-selector.php:251 .. +#: admin/views/templates/template-slider-selector.php:175 .. +#: admin/views/templates/template-slider-selector.php:180 +msgid "overwrite" +msgstr "Sovrascrivi" + +# @ revslider +#: ../admin/views/slider-overview.php:263 ../admin/views/slider-overview.php:268 . +#: ./admin/views/templates/slider-main-options.php:3565 .. +#: admin/views/templates/slider-main-options.php:3570 .. +#: admin/views/templates/template-selector.php:247 .. +#: admin/views/templates/template-selector.php:252 .. +#: admin/views/templates/template-slider-selector.php:176 .. +#: admin/views/templates/template-slider-selector.php:181 +msgid "append" +msgstr "aggiungi" + +# @ revslider +#: ../admin/views/slider-overview.php:266 ../admin/views/templates/slide-stage. +#: php:62 ../admin/views/templates/template-selector.php:250 .. +#: admin/views/templates/template-slider-selector.php:179 +msgid "Static Styles:" +msgstr "Stili Statici" + +# @ revslider +#: ../admin/views/slider-overview.php:277 ../admin/views/templates/slide-selector. +#: php:196 ../admin/views/templates/sliders-list.php:168 .. +#: admin/views/templates/slides-list.php:136 +msgid "Duplicate" +msgstr "Duplica" + +# @ revslider +#: ../admin/views/system/dialog-copy-move.php:3 +msgid "Do It!" +msgstr "Fatto!" + +# @ revslider +#: ../admin/views/system/dialog-copy-move.php:3 +msgid "Copy / move slide" +msgstr "Copia / Sposta Slide" + +# @ revslider +#: ../admin/views/system/dialog-copy-move.php:7 ../includes/widget.class.php:66 +msgid "Choose Slider" +msgstr "Scegli Slider" + +# @ revslider +#: ../admin/views/system/dialog-copy-move.php:12 +msgid "Choose Operation" +msgstr "Scegli Operazione" + +# @ revslider +#: ../admin/views/system/dialog-copy-move.php:15 +msgid "Copy" +msgstr "Copia" + +# @ revslider +#: ../admin/views/system/dialog-copy-move.php:18 +msgid "Move" +msgstr "Sposta" + +# @ revslider +#: ../admin/views/system/dialog-global-settings.php:25 .. +#: admin/views/templates/slider-main-options.php:1582 +msgid "General Settings" +msgstr "Impostazioni Generali" + +# @ revslider +#: ../admin/views/system/dialog-global-settings.php:36 +msgid "View Plugin Permission:" +msgstr "Vedi i permessi del Plugin:" + +# @ revslider +#: ../admin/views/system/dialog-global-settings.php:40 +msgid "To Admin" +msgstr "Amministratore" + +# @ revslider +#: ../admin/views/system/dialog-global-settings.php:41 +msgid "To Editor, Admin" +msgstr "Editore, Amministratore" + +# @ revslider +#: ../admin/views/system/dialog-global-settings.php:42 +msgid "Author, Editor, Admin" +msgstr "Autore, Editore, Amministratore" + +# @ revslider +#: ../admin/views/system/dialog-global-settings.php:46 +msgid "The role of user that can view and edit the plugin" +msgstr "Il ruolo dell' utente che può visualizzare e modificare il plugin" + +# @ revslider +#: ../admin/views/system/dialog-global-settings.php:52 +msgid "Include RevSlider libraries globally:" +msgstr "Includi RevSlider nelle librerie globali:" + +# @ revslider +#: ../admin/views/system/dialog-global-settings.php:58 .. +#: admin/views/system/dialog-global-settings.php:92 ../admin/views/system/dialog- +#: global-settings.php:113 ../admin/views/system/dialog-global-settings.php:134 .. +#: admin/views/system/dialog-global-settings.php:187 .. +#: admin/views/system/dialog-global-settings.php:209 .. +#: admin/views/templates/slider-main-options.php:3506 +msgid "On" +msgstr "On" + +# @ revslider +#: ../admin/views/system/dialog-global-settings.php:63 .. +#: admin/views/system/dialog-global-settings.php:97 ../admin/views/system/dialog- +#: global-settings.php:118 ../admin/views/system/dialog-global-settings.php:139 .. +#: admin/views/system/dialog-global-settings.php:192 .. +#: admin/views/system/dialog-global-settings.php:214 .. +#: admin/views/templates/slider-main-options.php:2210 .. +#: admin/views/templates/slider-main-options.php:3487 .. +#: admin/views/templates/slider-main-options.php:3508 +msgid "Off" +msgstr "Off" + +# @ revslider +#: ../admin/views/system/dialog-global-settings.php:68 +msgid "" +"ON - Add CSS and JS Files to all pages.
        Off - CSS and JS Files will be " +"only loaded on Pages where any rev_slider shortcode exists." +msgstr "" +"On - Aggiungere CSS e JS files a tutte le pagine.
        Off - CSS e JS files " +"verranno caricati solo nelle pagine in cui sono presenti le scorciatoie " +"rev_slider." + +# @ revslider +#: ../admin/views/system/dialog-global-settings.php:74 +msgid "Pages to include RevSlider libraries:" +msgstr "Pagine dove includere le librerie RevSlider:" + +# @ revslider +#: ../admin/views/system/dialog-global-settings.php:79 +msgid "" +"Specify the page id's that the front end includes will be included in. " +"Example: 2,3,5 also: homepage,3,4" +msgstr "" +"Specifica ID della pagina che comprende il front-end è sarà incluso in. " +"Esempio:. 2,3,5 anche: homepage, 3,4" + +#: ../admin/views/system/dialog-global-settings.php:86 +msgid "Insert JavaScript Into Footer:" +msgstr "" + +# @ revslider +#: ../admin/views/system/dialog-global-settings.php:101 +msgid "" +"Putting the js to footer (instead of the head) is good for fixing some " +"javascript conflicts." +msgstr "" +"Mettere i js nel Footer (invece della head) è un buon sistema per fissare " +"alcuni conflitti javascript." + +#: ../admin/views/system/dialog-global-settings.php:107 +msgid "Defer JavaScript Loading:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:122 +msgid "Defer the loading of the JavaScript libraries to maximize page loading speed." +msgstr "" + +# @ revslider +#: ../admin/views/system/dialog-global-settings.php:128 +msgid "Enable Markup Export option:" +msgstr "Abilita l'opzione per esportare note di revisione:" + +# @ revslider +#: ../admin/views/system/dialog-global-settings.php:143 +msgid "" +"This will enable the option to export the Slider Markups to copy/paste it " +"directly into websites." +msgstr "" +"Abilita l'opzione per esportare le note di revisione della Slider è a " +"copiare / incollare direttamente nei siti web." + +#: ../admin/views/system/dialog-global-settings.php:149 +msgid "Font Loading URL:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:154 +msgid "" +"Insert something in it and it will be used instead of http://fonts." +"googleapis.com/css?family= (For example: http://fonts.useso.com/css?family= " +"which will also work for chinese visitors)" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:161 +msgid "Default Settings for Advanced Responsive Grid Sizes:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:164 +msgid "Desktop Grid Width" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:166 +msgid "Notebook Grid Width" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:168 +msgid "Tablet Grid Width" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:170 +msgid "Mobile Grid Width" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:174 +msgid "Define the default Grid Sizes for devices: Desktop, Tablet and Mobile" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:181 +msgid "Enable Notifications:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:196 +msgid "Enable/Disable ThemePunch Notifications in the Admin Notice bar." +msgstr "" + +# @ revslider +#: ../admin/views/system/dialog-global-settings.php:203 +msgid "Enable Logs:" +msgstr "Abilita Logs:" + +# @ revslider +#: ../admin/views/system/dialog-global-settings.php:218 +msgid "Enable console logs for debugging." +msgstr "Abilita consolle Logs per il debugging." + +# @ revslider +#: ../admin/views/system/dialog-global-settings.php:228 +msgid "Update" +msgstr "Aggiorna" + +# @ revslider +#: ../admin/views/system/dialog-video.php:4 +msgid "Add Video Layout" +msgstr "Agg. Layout Video" + +# @ revslider +#: ../admin/views/system/dialog-video.php:12 ../admin/views/templates/slide- +#: general-settings.php:33 ../admin/views/templates/slider-main-options.php:142 .. +#: admin/views/templates/slider-main-options.php:193 .. +#: admin/views/templates/slider-main-options.php:277 .. +#: admin/views/templates/slider-main-options.php:300 +msgid "Source" +msgstr "Fonte" + +#: ../admin/views/system/dialog-video.php:13 ../admin/views/templates/slider-main- +#: options.php:2053 +msgid "Sizing" +msgstr "" + +# @ revslider +#: ../admin/views/system/dialog-video.php:14 +msgid "Settings" +msgstr "Impostazioni" + +#: ../admin/views/system/dialog-video.php:15 ../admin/views/templates/slide-stage. +#: php:32 ../admin/views/templates/slider-main-options.php:2342 .. +#: admin/views/templates/slider-main-options.php:2487 .. +#: admin/views/templates/slider-main-options.php:2643 .. +#: admin/views/templates/slider-main-options.php:2812 +msgid "Visibility" +msgstr "" + +#: ../admin/views/system/dialog-video.php:16 +msgid "Arguments" +msgstr "" + +# @ revslider +#: ../admin/views/system/dialog-video.php:26 +msgid "Choose video type" +msgstr "Scegli tipo di Video" + +# @ revslider +#: ../admin/views/system/dialog-video.php:32 +msgid "HTML5" +msgstr "HTML5" + +#: ../admin/views/system/dialog-video.php:36 ../admin/views/system/dialog-video. +#: php:40 ../admin/views/system/dialog-video.php:44 +msgid "From Stream" +msgstr "" + +#: ../admin/views/system/dialog-video.php:51 +msgid "Vimeo ID or URL" +msgstr "" + +#: ../admin/views/system/dialog-video.php:54 ../admin/views/templates/slide- +#: general-settings.php:148 +msgid "example: 30300114" +msgstr "" + +#: ../admin/views/system/dialog-video.php:60 +msgid "YouTube ID or URL" +msgstr "" + +# @ revslider +#: ../admin/views/system/dialog-video.php:63 ../admin/views/system/dialog-video. +#: php:74 ../admin/views/system/dialog-video.php:82 ../admin/views/system/dialog- +#: video.php:89 ../admin/views/system/dialog-video.php:96 +msgid "example" +msgstr "esempio" + +# @ revslider +#: ../admin/views/system/dialog-video.php:69 +msgid "Poster Image Url" +msgstr "Url Immagine Poster" + +#: ../admin/views/system/dialog-video.php:72 +msgid "Set Image" +msgstr "" + +# @ revslider +#: ../admin/views/system/dialog-video.php:77 +msgid "Video MP4 Url" +msgstr "Video MP4 Url" + +#: ../admin/views/system/dialog-video.php:80 ../admin/views/system/dialog-video. +#: php:87 ../admin/views/system/dialog-video.php:94 +msgid "Set Video" +msgstr "" + +# @ revslider +#: ../admin/views/system/dialog-video.php:84 +msgid "Video WEBM Url" +msgstr "Video WEBM Url" + +# @ revslider +#: ../admin/views/system/dialog-video.php:91 +msgid "Video OGV Url" +msgstr "Video OGV Url" + +#: ../admin/views/system/dialog-video.php:106 +msgid "Full Screen:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:113 ../admin/views/templates/slide- +#: general-settings.php:226 +msgid "Force Cover:" +msgstr "" + +# @ revslider +#: ../admin/views/system/dialog-video.php:119 ../admin/views/templates/slide- +#: general-settings.php:231 +msgid "Dotted Overlay:" +msgstr "Copertura tratteggiata:" + +# @ revslider +#: ../admin/views/system/dialog-video.php:122 ../admin/views/templates/slide- +#: general-settings.php:234 ../admin/views/templates/slider-main-options.php:2107 +msgid "none" +msgstr "Nessuna" + +# @ revslider +#: ../admin/views/system/dialog-video.php:123 ../admin/views/templates/slide- +#: general-settings.php:235 ../admin/views/templates/slider-main-options.php:2108 +msgid "2 x 2 Black" +msgstr "2 x 2 Nero" + +# @ revslider +#: ../admin/views/system/dialog-video.php:124 ../admin/views/templates/slide- +#: general-settings.php:236 ../admin/views/templates/slider-main-options.php:2109 +msgid "2 x 2 White" +msgstr "2 x 2 Bianco" + +# @ revslider +#: ../admin/views/system/dialog-video.php:125 ../admin/views/templates/slide- +#: general-settings.php:237 ../admin/views/templates/slider-main-options.php:2110 +msgid "3 x 3 Black" +msgstr "3 x 3 Nero" + +# @ revslider +#: ../admin/views/system/dialog-video.php:126 ../admin/views/templates/slide- +#: general-settings.php:238 ../admin/views/templates/slider-main-options.php:2111 +msgid "3 x 3 White" +msgstr "3 x 3 Bianco" + +# @ revslider +#: ../admin/views/system/dialog-video.php:130 ../admin/views/templates/slide- +#: general-settings.php:242 +msgid "Aspect Ratio:" +msgstr "Aspetto Ratio:" + +# @ revslider +#: ../admin/views/system/dialog-video.php:133 ../admin/views/templates/slide- +#: general-settings.php:245 +msgid "16:9" +msgstr "16:9" + +# @ revslider +#: ../admin/views/system/dialog-video.php:134 ../admin/views/templates/slide- +#: general-settings.php:246 +msgid "4:3" +msgstr "4:3" + +# @ revslider +#: ../admin/views/system/dialog-video.php:142 ../admin/views/templates/slide- +#: general-settings.php:265 +msgid "Loop Video:" +msgstr "Cicli Video:" + +# @ revslider +#: ../admin/views/system/dialog-video.php:145 ../admin/views/system/dialog-video. +#: php:217 ../admin/views/templates/slide-general-settings.php:267 .. +#: admin/views/templates/slide-general-settings.php:900 +msgid "Disable" +msgstr "Disabilita" + +#: ../admin/views/system/dialog-video.php:146 ../admin/views/templates/slide- +#: general-settings.php:268 +msgid "Loop, Slide is paused" +msgstr "" + +# @ revslider +#: ../admin/views/system/dialog-video.php:147 ../admin/views/templates/slide- +#: general-settings.php:269 +msgid "Loop, Slide does not stop" +msgstr "Ciclo, non fermare la Slide" + +# @ revslider +#: ../admin/views/system/dialog-video.php:152 +msgid "Autoplay:" +msgstr "Autoplay:" + +# @ revslider +#: ../admin/views/system/dialog-video.php:155 +msgid "Only 1st Time:" +msgstr "Solo 1° Tempo:" + +#: ../admin/views/system/dialog-video.php:161 +msgid "Stop Other Videos:" +msgstr "" + +# @ revslider +#: ../admin/views/system/dialog-video.php:166 ../admin/views/templates/slide- +#: general-settings.php:274 +msgid "Next Slide On End:" +msgstr "Nuova Slide alla Fine" + +#: ../admin/views/system/dialog-video.php:171 ../admin/views/templates/slide- +#: general-settings.php:278 +msgid "Rewind at Slide Start:" +msgstr "" + +# @ revslider +#: ../admin/views/system/dialog-video.php:176 +msgid "Hide Controls:" +msgstr "Nascondi controlli:" + +# @ revslider +#: ../admin/views/system/dialog-video.php:181 +msgid "Mute:" +msgstr "Muto:" + +#: ../admin/views/system/dialog-video.php:186 +msgid "Start at:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:187 +msgid "i.e.: 0:17" +msgstr "" + +#: ../admin/views/system/dialog-video.php:191 +msgid "End at:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:192 +msgid "i.e.: 2:41" +msgstr "" + +#: ../admin/views/system/dialog-video.php:196 +msgid "Show Cover at Pause:" +msgstr "" + +# @ revslider +#: ../admin/views/system/dialog-video.php:201 ../admin/views/templates/slide- +#: general-settings.php:289 +msgid "Video Speed:" +msgstr "Velocità Video" + +# @ revslider +#: ../admin/views/system/dialog-video.php:203 ../admin/views/templates/slide- +#: general-settings.php:291 +msgid "0.25" +msgstr "0.25" + +# @ revslider +#: ../admin/views/system/dialog-video.php:204 ../admin/views/templates/slide- +#: general-settings.php:292 +msgid "0.50" +msgstr "0.50" + +# @ revslider +#: ../admin/views/system/dialog-video.php:205 ../admin/views/templates/slide- +#: general-settings.php:293 ../admin/views/templates/slider-main-options.php:2212 +#: ../admin/views/templates/slider-main-options.php:3125 +msgid "1" +msgstr "1" + +# @ revslider +#: ../admin/views/system/dialog-video.php:206 ../admin/views/templates/slide- +#: general-settings.php:294 +msgid "1.5" +msgstr "1.5" + +# @ revslider +#: ../admin/views/system/dialog-video.php:207 ../admin/views/templates/slide- +#: general-settings.php:295 ../admin/views/templates/slider-main-options.php:2213 +msgid "2" +msgstr "2" + +# @ revslider +#: ../admin/views/system/dialog-video.php:213 +msgid "Video Preload:" +msgstr "Video Precaricato:" + +# @ revslider +#: ../admin/views/system/dialog-video.php:216 ../admin/views/templates/slider- +#: main-options.php:816 +msgid "Auto" +msgstr "Auto" + +# @ revslider +#: ../admin/views/system/dialog-video.php:218 +msgid "Metadata" +msgstr "Metadata" + +# @ revslider +#: ../admin/views/system/dialog-video.php:225 +msgid "Preview Image" +msgstr "Anteprima Immagine" + +#: ../admin/views/system/dialog-video.php:227 +msgid "Image Library" +msgstr "" + +#: ../admin/views/system/dialog-video.php:228 +msgid "Video Thumbnail" +msgstr "" + +# @ revslider +#: ../admin/views/system/dialog-video.php:234 +msgid "Disable Mobile:" +msgstr "Disabilità Mobile:" + +#: ../admin/views/system/dialog-video.php:239 +msgid "Only Preview on Mobile:" +msgstr "" + +# @ revslider +#: ../admin/views/system/dialog-video.php:247 ../admin/views/templates/slide- +#: general-settings.php:299 ../admin/views/templates/slide-general-settings.php:304 +msgid "Arguments:" +msgstr "Argomenti:" + +# @ revslider +#: ../admin/views/system/dialog-video.php:253 ../admin/views/system/dialog-video. +#: php:253 +msgid "Add This Video" +msgstr "Agg. questo Video" + +# @ revslider +#: ../admin/views/system/dialog-video.php:253 +msgid "Update Video" +msgstr "Aggiorna Video" + +# @ revslider +#: ../admin/views/system/validation.php:31 +msgid "Username:" +msgstr "Username:" + +# @ revslider +#: ../admin/views/system/validation.php:34 +msgid "Your Envato username." +msgstr "Il tuo Envato Username." + +# @ revslider +#: ../admin/views/system/validation.php:38 +msgid "Envato API Key:" +msgstr "Chiave API Envato:" + +#: ../admin/views/system/validation.php:41 +msgid "" +"You can find the API key by visiting your Envato Account page, then clicking " +"the My Settings tab. At the bottom of the page you will find your accounts " +"API key." +msgstr "" + +# @ revslider +#: ../admin/views/system/validation.php:45 +msgid "Purchase code:" +msgstr "Codice di Acquisto:" + +# @ revslider +#: ../admin/views/system/validation.php:48 +msgid "Please enter your " +msgstr "Inserisci in tuo " + +# @ revslider +#: ../admin/views/system/validation.php:48 +msgid "CodeCanyon Slider Revolution purchase code / license key" +msgstr "CodeCanyon Revolution Slider codice di acquisto / Chiave licenza" + +# @ revslider +#: ../admin/views/system/validation.php:48 +msgid ". You can find your key by following the instructions on" +msgstr " È possibile trovare la chiave seguendo le istruzioni su " + +# @ revslider +#: ../admin/views/system/validation.php:48 +msgid " this page." +msgstr "Questa Pagina." + +# @ revslider +#: ../admin/views/system/validation.php:54 +msgid "Register" +msgstr "Registra" + +# @ revslider +#: ../admin/views/system/validation.php:56 +msgid "Deregister" +msgstr "Cancellati" + +# @ revslider +#: ../admin/views/system/validation.php:61 +msgid "Search for Updates" +msgstr "Cerca Aggiornamenti" + +# @ revslider +#: ../admin/views/system/validation.php:68 +msgid "" +"To register the plugin on a different website, click the “Deregister” button " +"here first." +msgstr "" +"Per registrare il plugin in un altro sito, prima fare clic sul pulsante " +"\"Cancellati\" qui." + +# @ revslider +#: ../admin/views/system/validation.php:79 +msgid "How to get Support ?" +msgstr "Come ottenere supporto?" + +# @ revslider +#: ../admin/views/system/validation.php:81 +msgid "Please feel free to contact us via our " +msgstr "Non esitate a contattarci tramite il nostro " + +# @ revslider +#: ../admin/views/system/validation.php:81 +msgid "Support Forum " +msgstr "Forum di Supporto" + +# @ revslider +#: ../admin/views/system/validation.php:81 +msgid "and/or via the " +msgstr " e/o vai " + +# @ revslider +#: ../admin/views/system/validation.php:81 +msgid "Item Disscussion Forum" +msgstr "Oggetto discussione Forum" + +# @ revslider +#: ../admin/views/system/validation.php:87 +msgid "Click Here to get " +msgstr "Clicca qui per andare" + +# @ revslider +#: ../admin/views/system/validation.php:87 +msgid "Premium Support and Auto Updates" +msgstr "Supporto Premium e Aggiornamenti Automatici" + +#: ../admin/views/templates/slide-general-settings.php:6 +msgid "Main Background" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:7 +msgid "Gerneral Settings" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:8 +msgid "Slide Animation" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:9 +msgid "Link & Seo" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:10 +msgid "Slide Info" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:34 +msgid "Source Settings" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:35 .. +#: admin/views/templates/slide-stage.php:248 ../admin/views/templates/slider- +#: main-options.php:3285 +msgid "Parallax" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:36 +msgid "Ken Burns" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:64 +msgid "Featured Image" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:69 +msgid "Stream Image" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:75 +msgid "Stream Video" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:78 +msgid "Use Cover" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:85 +msgid "Main / Background Image" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:89 +msgid "Change Image" +msgstr "Cambia Immagine" + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:97 +msgid "External URL" +msgstr "URL Esterno" + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:103 +msgid "Get External" +msgstr "Ottieni Esterno" + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:109 +msgid "Transparent" +msgstr "Trasparente" + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:114 +msgid "Solid Colored" +msgstr "Colore Tinta Unita" + +#: ../admin/views/templates/slide-general-settings.php:124 +msgid "YouTube Video" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:130 .. +#: admin/views/templates/slide-general-settings.php:146 .. +#: admin/views/templates/slide-general-settings.php:881 +msgid "ID:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:132 +msgid "example: T8--OggjJKQ" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:134 .. +#: admin/views/templates/slide-general-settings.php:150 .. +#: admin/views/templates/slide-general-settings.php:180 +msgid "Cover Image:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:140 +msgid "Vimeo Video" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:156 +msgid "HTML5 Video" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:162 +msgid "MPEG:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:165 .. +#: admin/views/templates/slide-general-settings.php:171 .. +#: admin/views/templates/slide-general-settings.php:177 +msgid "Change Video" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:168 +msgid "WEBM:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:174 +msgid "OGV:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:188 +msgid "Image Source Size:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:205 +msgid "Alt:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:207 .. +#: admin/views/templates/slide-stage.php:1259 +msgid "From Media Library" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:208 .. +#: admin/views/templates/slide-stage.php:1260 +msgid "From Filename" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:209 .. +#: admin/views/templates/slide-stage.php:1261 ../admin/views/templates/slide- +#: stage.php:1729 +msgid "Custom" +msgstr "Personalizzato" + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:215 +msgid "Width:" +msgstr "Altezza:" + +#: ../admin/views/templates/slide-general-settings.php:219 +msgid "Height:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:252 +msgid "Start At:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:254 +msgid "For Example: 00:17" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:259 +msgid "End At:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:261 +msgid "For Example: 02:17" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:283 +msgid "Mute Video:" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:311 +msgid "Background Fit:" +msgstr "Sfondo Fit:" + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:322 +msgid "Background Position:" +msgstr "Posizione Sfondo:" + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:343 +msgid "Background Repeat:" +msgstr "Ripeti Sfondo:" + +#: ../admin/views/templates/slide-general-settings.php:359 +msgid "Parallax Level:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:361 .. +#: admin/views/templates/slide-stage.php:462 +msgid "No Parallax" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:377 .. +#: admin/views/templates/slide-stage.php:479 +msgid "Parallax Feature in Slider Settings is deactivated, parallax will be ignored." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:385 .. +#: admin/views/templates/slider-main-options.php:1727 +msgid "Ken Burns / Pan Zoom:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:390 +msgid "Scale: (in %):" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:391 .. +#: admin/views/templates/slide-general-settings.php:399 .. +#: admin/views/templates/slide-general-settings.php:407 .. +#: admin/views/templates/slide-general-settings.php:415 +msgid "From" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:393 .. +#: admin/views/templates/slide-general-settings.php:401 .. +#: admin/views/templates/slide-general-settings.php:409 .. +#: admin/views/templates/slide-general-settings.php:417 +msgid "To" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:398 +msgid "Horizontal Offsets:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:406 +msgid "Vertical Offsets:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:414 +msgid "Rotation:" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:422 .. +#: admin/views/templates/slider-main-options.php:1743 +msgid "Easing:" +msgstr "Effetto:" + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:462 .. +#: admin/views/templates/slider-main-options.php:1850 +msgid "Duration (in ms):" +msgstr "Durata (in ms):" + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:478 +msgid "The title of the slide, will be shown in the slides list." +msgstr "Il titolo della Slide, verrà visualizzato nell'elenco delle Slides." + +#: ../admin/views/templates/slide-general-settings.php:484 +msgid "Slide \"Delay\":" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:486 +msgid "" +"A new delay value for the Slide. If no delay defined per slide, the delay " +"defined via Options (9000ms) will be used." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:492 +msgid "Slide State" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:494 +msgid "Published" +msgstr "Pubblicato" + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:495 +msgid "Unpublished" +msgstr "Non Pubblicato" + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:497 +msgid "" +"The state of the slide. The unpublished slide will be excluded from the " +"slider." +msgstr "Stato della Slide. La Slide non pubblicata sarà esclusa dalla Slider." + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:510 +msgid "Language" +msgstr "Lingua" + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:521 +msgid "The language of the slide (uses WPML plugin)." +msgstr "Lingua della Slide (usa WPML plugin)." + +#: ../admin/views/templates/slide-general-settings.php:530 +msgid "Visible from:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:532 +msgid "If set, slide will be visible after the date is reached." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:538 +msgid "Visible until:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:540 +msgid "If set, slide will be visible till the date is reached." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:547 +msgid "Thumbnail:" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:565 +msgid "Slide Thumbnail. If not set - it will be taken from the slide image." +msgstr "" +"Miniatura della Slide. Se non è impostato - sarà presa dall'immagine della " +"Slide." + +#: ../admin/views/templates/slide-general-settings.php:572 +msgid "Save Performance:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:576 +msgid "Slide End Transition will first start when last Layer has been removed." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:716 +msgid "Used Transitions (Order in Loops)" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:723 +msgid "Slot / Box Amount:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:726 +msgid "# of slots/boxes the slide is divided into." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:731 +msgid "Slot Rotation:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:734 +msgid "Start Rotation of Transition (deg)." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:739 +msgid "Animation Duration:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:742 +msgid "The duration of the transition." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:747 +msgid "Easing In:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:787 +msgid "The easing of Appearing transition." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:792 +msgid "Easing Out:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:832 +msgid "The easing of Disappearing transition." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:850 +msgid "Parameter" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:851 +msgid "Max. Chars" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:861 +msgid "Description of Slider:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:864 +msgid "" +"Define a description here to show at the navigation if enabled in Slider " +"Settings" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:873 +msgid "Class:" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:875 +msgid "" +"Adds a unique class to the li of the Slide like class=\"rev_special_class\" " +"(add only the classnames, seperated by space)" +msgstr "" +"Aggiunge una classe unica alla Slide come una classe a " +"piacere=\"rev_special_class\" (aggiungere solo i nomi della classe, separati " +"da uno spazio)" + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:883 +msgid "" +"Adds a unique ID to the li of the Slide like id=\"rev_special_id\" (add only " +"the id)" +msgstr "" +"Aggiunge un ID univoco alla Slide come un ID a piacere=\"rev_special_id \" " +"(aggiungere solo l'id)" + +#: ../admin/views/templates/slide-general-settings.php:889 +msgid "Custom Fields:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:891 +msgid "" +"Add as many attributes as you wish here. (i.e.: data-layer=\"firstlayer\" data-" +"custom=\"somevalue\")." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:897 +msgid "Enable Link:" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:899 +msgid "Enable" +msgstr "Abilita" + +#: ../admin/views/templates/slide-general-settings.php:902 +msgid "Link the Full Slide to an URL or Action." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:909 +msgid "Link Type:" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:911 +msgid "Regular" +msgstr "Regolare" + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:912 +msgid "To Slide" +msgstr "A Slide" + +#: ../admin/views/templates/slide-general-settings.php:914 +msgid "Regular - Link to URL, To Slide - Call a Slide Action" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:921 +msgid "Slide Link:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:923 +msgid "" +"A link on the whole slide pic (use {{link}} or {{meta:somemegatag}} in " +"template sliders to link to a post or some other meta)" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:929 +msgid "Link Target:" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:931 .. +#: admin/views/templates/slide-stage.php:2273 +msgid "Same Window" +msgstr "Altra Finestra" + +# @ revslider +# @ default +#: ../admin/views/templates/slide-general-settings.php:932 .. +#: admin/views/templates/slide-stage.php:2274 +msgid "New Window" +msgstr "Nuova Finestra" + +#: ../admin/views/templates/slide-general-settings.php:934 +msgid "The target of the slide link." +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:942 +msgid "-- Not Chosen --" +msgstr "-- Nessuna scelta --" + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:943 +msgid "-- Next Slide --" +msgstr "-- Prossima Slide --" + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:944 +msgid "-- Previous Slide --" +msgstr "-- Precedente Slide --" + +# @ revslider +#: ../admin/views/templates/slide-general-settings.php:947 +msgid "-- Scroll Below Slider --" +msgstr "-- Scorrere sotto Slider --" + +#: ../admin/views/templates/slide-general-settings.php:959 +msgid "Link To Slide:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:970 +msgid "Call Slide Action" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:975 +msgid "Link Sensibility:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:977 +msgid "Front" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:978 +msgid "Back" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:980 +msgid "The z-index position of the link related to layers" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:31 +msgid "Static / Global Layers" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-selector.php:47 +msgid "Show Layers from Slide:" +msgstr "Mostra Layers della Slide:" + +#: ../admin/views/templates/slide-selector.php:197 +msgid "Add to Templates" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-selector.php:212 ../admin/views/templates/slide- +#: selector.php:224 +msgid "Add Slide" +msgstr "Agg. Slide" + +#: ../admin/views/templates/slide-selector.php:217 +msgid "Add Blank Slide" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:220 +msgid "Add from Template" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:280 +msgid "Slide name should not be empty" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:12 +msgid "Style" +msgstr "Stile" + +#: ../admin/views/templates/slide-stage.php:13 +msgid "Advanced Style on/off" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:19 ../admin/views/templates/slide- +#: stage.php:1766 +msgid "Animation" +msgstr "Animazione" + +#: ../admin/views/templates/slide-stage.php:20 +msgid "Play/Pause Single Layer Animation" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:26 ../admin/views/templates/slide- +#: stage.php:1031 +msgid "Loop Animation" +msgstr "Animazione Ciclo" + +#: ../admin/views/templates/slide-stage.php:27 +msgid "Play/Pause Layer Loop Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:33 +msgid "Behavior" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:36 +msgid "Attributes" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:38 +msgid "Static Layers" +msgstr "Layer Statici" + +#: ../admin/views/templates/slide-stage.php:40 +msgid "Performance" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:56 +msgid "Global Style Editor" +msgstr "Editore di Stile globale" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:58 +msgid "Dynamic Styles (Not Editable):" +msgstr "Stili Dinamici (Non modificabile)" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:68 +msgid "Save Static Styles" +msgstr "Salva Stili Statici" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:69 +msgid "Overwrite current static styles?" +msgstr "Sovrascrivi Stili Statici correnti ?" + +#: ../admin/views/templates/slide-stage.php:76 +msgid "Caption Style" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:77 +msgid "Style Template" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:79 +msgid "More Style Settings" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:80 +msgid "Reset Style Template" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:84 +msgid "Style Options" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:85 ../admin/views/templates/slide- +#: stage.php:700 ../admin/views/templates/slide-stage.php:875 +msgid "Save" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:87 ../admin/views/templates/slide- +#: stage.php:702 ../admin/views/templates/slide-stage.php:877 +msgid "Rename" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:88 ../admin/views/templates/slide- +#: stage.php:703 ../admin/views/templates/slide-stage.php:878 +msgid "Reset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:99 +msgid "Font Size (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:100 ../admin/views/templates/slide- +#: stage.php:2220 +msgid "Font Size" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:105 +msgid "Line Height (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:106 ../admin/views/templates/slide- +#: stage.php:2221 +msgid "Line Height" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:112 +msgid "White Space" +msgstr "Spazio Bianco" + +#: ../admin/views/templates/slide-stage.php:126 +msgid "Layer Align Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:127 +msgid "Layer Align Center" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:128 +msgid "Layer Align Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:135 ../admin/views/templates/slide- +#: stage.php:136 +msgid "Horizontal Offset from Aligned Position (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:140 ../admin/views/templates/slide- +#: stage.php:141 +msgid "Vertical Offset from Aligned Position (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:164 ../admin/views/templates/slide- +#: stage.php:165 ../admin/views/templates/slide-stage.php:2222 +msgid "Font Weight" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:179 ../admin/views/templates/slide- +#: stage.php:180 ../admin/views/templates/slide-stage.php:522 .. +#: admin/views/templates/slide-stage.php:523 ../admin/views/templates/slider- +#: main-options.php:1984 ../admin/views/templates/slider-main-options.php:2117 .. +#: admin/views/templates/slider-main-options.php:2221 +msgid "Font Color" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:186 +msgid "Layer Align Top" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:187 +msgid "Layer Align Middle" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:188 +msgid "Layer Align Bottom" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:194 ../admin/views/templates/slide- +#: stage.php:195 ../admin/views/templates/slide-stage.php:196 +msgid "Layer Width (px). Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:197 +msgid "Video Width (px). Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:200 ../admin/views/templates/slide- +#: stage.php:201 +msgid "Layer Height (px). Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:202 +msgid "Layer Height (px) Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:203 +msgid "Video Height (px). Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:206 +msgid "Cover Mode" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:217 +msgid "Auto Linebreak (on/off - White Space:normal / nowrap). " +msgstr "" + +#: ../admin/views/templates/slide-stage.php:222 +msgid "Keep Aspect Ratio (on/off)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:227 +msgid "Reset original size" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:242 ../admin/views/templates/slide- +#: stage.php:510 ../admin/views/templates/slider-main-options.php:4321 +msgid "Font" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:243 ../admin/views/templates/slide- +#: stage.php:511 ../admin/views/templates/slide-stage.php:1975 .. +#: admin/views/templates/slide-stage.php:2041 ../admin/views/templates/slide- +#: stage.php:2123 +msgid "Background" +msgstr "Sfondo" + +#: ../admin/views/templates/slide-stage.php:245 ../admin/views/templates/slide- +#: stage.php:513 +msgid "Transform" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:246 ../admin/views/templates/slide- +#: stage.php:514 ../admin/views/templates/slide-stage.php:752 .. +#: admin/views/templates/slide-stage.php:928 ../admin/views/templates/slider- +#: main-options.php:3161 +msgid "Rotation" +msgstr "Rotazione" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:247 ../admin/views/templates/slide- +#: stage.php:757 ../admin/views/templates/slide-stage.php:933 +msgid "Perspective" +msgstr "prospettiva" + +#: ../admin/views/templates/slide-stage.php:249 +msgid "Corners" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:251 ../admin/views/templates/slide- +#: stage.php:641 +msgid "Hover" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:257 ../admin/views/templates/slide- +#: stage.php:258 +msgid "Font Opacity" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:262 +msgid "Italic Font" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:263 +msgid "Italic Font On/Off" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:267 ../admin/views/templates/slide- +#: stage.php:268 ../admin/views/templates/slide-stage.php:531 .. +#: admin/views/templates/slide-stage.php:532 +msgid "Font Decoration" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:278 ../admin/views/templates/slide- +#: stage.php:279 +msgid "Text Align" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:281 ../admin/views/templates/slider- +#: main-options.php:2174 ../admin/views/templates/slider-main-options.php:2389 .. +#: admin/views/templates/slider-main-options.php:2398 .. +#: admin/views/templates/slider-main-options.php:2418 .. +#: admin/views/templates/slider-main-options.php:2428 .. +#: admin/views/templates/slider-main-options.php:2533 .. +#: admin/views/templates/slider-main-options.php:2541 .. +#: admin/views/templates/slider-main-options.php:2703 .. +#: admin/views/templates/slider-main-options.php:2711 .. +#: admin/views/templates/slider-main-options.php:2871 .. +#: admin/views/templates/slider-main-options.php:2879 .. +#: admin/views/templates/slider-main-options.php:3206 .. +#: admin/views/templates/slider-main-options.php:3214 +msgid "Center" +msgstr "Centro" + +#: ../admin/views/templates/slide-stage.php:290 ../admin/views/templates/slide- +#: stage.php:291 ../admin/views/templates/slide-stage.php:542 .. +#: admin/views/templates/slide-stage.php:543 +msgid "Background Color" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:295 ../admin/views/templates/slide- +#: stage.php:296 ../admin/views/templates/slide-stage.php:547 .. +#: admin/views/templates/slide-stage.php:548 +msgid "Background Opacity" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:300 ../admin/views/templates/slide- +#: stage.php:2190 ../admin/views/templates/slide-stage.php:2192 +msgid "Padding" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:301 ../admin/views/templates/slide- +#: stage.php:2193 ../admin/views/templates/slider-main-options.php:3116 +msgid "Padding Top" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:302 ../admin/views/templates/slide- +#: stage.php:2194 +msgid "Padding Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:303 ../admin/views/templates/slide- +#: stage.php:2195 ../admin/views/templates/slider-main-options.php:3119 +msgid "Padding Bottom" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:304 ../admin/views/templates/slide- +#: stage.php:2196 +msgid "Padding Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:310 ../admin/views/templates/slide- +#: stage.php:311 ../admin/views/templates/slide-stage.php:553 .. +#: admin/views/templates/slide-stage.php:554 ../admin/views/templates/slide- +#: stage.php:2008 ../admin/views/templates/slide-stage.php:2073 .. +#: admin/views/templates/slide-stage.php:2140 +msgid "Border Color" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:315 ../admin/views/templates/slide- +#: stage.php:316 ../admin/views/templates/slide-stage.php:557 .. +#: admin/views/templates/slide-stage.php:558 ../admin/views/templates/slide- +#: stage.php:2012 ../admin/views/templates/slide-stage.php:2013 .. +#: admin/views/templates/slide-stage.php:2077 ../admin/views/templates/slide- +#: stage.php:2078 ../admin/views/templates/slide-stage.php:2144 .. +#: admin/views/templates/slide-stage.php:2145 +msgid "Border Opacity" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:320 ../admin/views/templates/slide- +#: stage.php:321 ../admin/views/templates/slide-stage.php:564 .. +#: admin/views/templates/slide-stage.php:565 +msgid "Border Style" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:331 ../admin/views/templates/slide- +#: stage.php:332 ../admin/views/templates/slide-stage.php:575 .. +#: admin/views/templates/slide-stage.php:576 ../admin/views/templates/slide- +#: stage.php:2017 ../admin/views/templates/slide-stage.php:2018 .. +#: admin/views/templates/slide-stage.php:2082 ../admin/views/templates/slide- +#: stage.php:2083 ../admin/views/templates/slide-stage.php:2149 .. +#: admin/views/templates/slide-stage.php:2150 +msgid "Border Width" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:336 ../admin/views/templates/slide- +#: stage.php:580 +msgid "Border Radius (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:337 ../admin/views/templates/slide- +#: stage.php:581 +msgid "Border Radius Top Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:338 ../admin/views/templates/slide- +#: stage.php:582 +msgid "Border Radius Top Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:339 ../admin/views/templates/slide- +#: stage.php:583 +msgid "Border Radius Bottom Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:340 ../admin/views/templates/slide- +#: stage.php:584 +msgid "Border Radius Bottom Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:346 ../admin/views/templates/slide- +#: stage.php:347 ../admin/views/templates/slide-stage.php:614 .. +#: admin/views/templates/slide-stage.php:615 +msgid "Rotation on X axis (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:350 ../admin/views/templates/slide- +#: stage.php:351 ../admin/views/templates/slide-stage.php:618 .. +#: admin/views/templates/slide-stage.php:619 +msgid "Rotation on Y axis (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:355 ../admin/views/templates/slide- +#: stage.php:356 ../admin/views/templates/slide-stage.php:623 .. +#: admin/views/templates/slide-stage.php:624 +msgid "Rotation on Z axis (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:360 ../admin/views/templates/slide- +#: stage.php:361 +msgid "Horizontal Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:364 ../admin/views/templates/slide- +#: stage.php:365 +msgid "Vertical Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:371 ../admin/views/templates/slide- +#: stage.php:589 +#, php-format +msgid "Opacity. (1 = 100% Visible / 0.5 = 50% opacaity / 0 = transparent)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:372 ../admin/views/templates/slide- +#: stage.php:590 +#, php-format +msgid "Opacity (1 = 100% Visible / 0.5 = 50% opacaity / 0 = transparent)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:376 ../admin/views/templates/slide- +#: stage.php:377 ../admin/views/templates/slide-stage.php:594 .. +#: admin/views/templates/slide-stage.php:595 +msgid "X Scale 1 = 100%, 0.5=50%... (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:381 ../admin/views/templates/slide- +#: stage.php:382 ../admin/views/templates/slide-stage.php:598 .. +#: admin/views/templates/slide-stage.php:599 +msgid "Y Scale 1 = 100%, 0.5=50%... (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:386 ../admin/views/templates/slide- +#: stage.php:387 ../admin/views/templates/slide-stage.php:603 .. +#: admin/views/templates/slide-stage.php:604 +msgid "X Skew (+/- px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:391 ../admin/views/templates/slide- +#: stage.php:392 ../admin/views/templates/slide-stage.php:607 .. +#: admin/views/templates/slide-stage.php:608 +msgid "Y Skew (+/- px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:398 ../admin/views/templates/slide- +#: stage.php:630 +msgid "Template" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:399 ../admin/views/templates/slide- +#: stage.php:631 ../admin/views/templates/slider-main-options.php:849 .. +#: admin/views/templates/slider-main-options.php:880 .. +#: admin/views/templates/slider-main-options.php:913 .. +#: admin/views/templates/slider-main-options.php:947 +msgid "Layer" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:407 +msgid "Layer Hover" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:413 ../admin/views/templates/slide- +#: stage.php:414 +msgid "Hover Animation Speed (in ms)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:419 ../admin/views/templates/slide- +#: stage.php:420 +msgid "Hover Animation Easing" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:430 ../admin/views/templates/slide- +#: stage.php:431 +msgid "Mouse Cursor" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:447 ../admin/views/templates/slide- +#: stage.php:448 +msgid "Animation Perspective (default 600)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:452 ../admin/views/templates/slide- +#: stage.php:453 +msgid "Z Offset (+/- px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:459 +msgid "Parallax Depth Level." +msgstr "" + +#: ../admin/views/templates/slide-stage.php:487 +msgid "Sharp Left" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:490 ../admin/views/templates/slide- +#: stage.php:499 +msgid "No Corner" +msgstr "Nessun Angolo" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:491 ../admin/views/templates/slide- +#: stage.php:500 +msgid "Sharp" +msgstr "Angolo" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:492 ../admin/views/templates/slide- +#: stage.php:501 +msgid "Sharp Reversed" +msgstr "Angolo invertito" + +#: ../admin/views/templates/slide-stage.php:496 +msgid "Sharp Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:527 ../admin/views/templates/slide- +#: stage.php:528 +msgid "Font Hover Opacity" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:640 +msgid "Idle" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:645 +msgid "COPY" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:647 +msgid "Copy From Idle" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:648 +msgid "Copy From Hover" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:649 +msgid "Copy From In Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:650 +msgid "Copy From Out Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:667 +msgid "Hover CSS" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:684 ../admin/views/templates/slide- +#: stage.php:856 ../admin/views/templates/slider-main-options.php:1275 +msgid "Advanced Settings" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:688 ../admin/views/templates/slide- +#: stage.php:689 ../admin/views/templates/slide-stage.php:863 .. +#: admin/views/templates/slide-stage.php:864 +msgid "Animation Template" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:699 ../admin/views/templates/slide- +#: stage.php:874 +msgid "Template Options" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:711 ../admin/views/templates/slide- +#: stage.php:712 ../admin/views/templates/slide-stage.php:888 .. +#: admin/views/templates/slide-stage.php:889 +msgid "Animation Easing" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:722 ../admin/views/templates/slide- +#: stage.php:723 ../admin/views/templates/slide-stage.php:899 .. +#: admin/views/templates/slide-stage.php:900 +msgid "Animation Speed (in ms)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:727 ../admin/views/templates/slide- +#: stage.php:728 ../admin/views/templates/slide-stage.php:904 .. +#: admin/views/templates/slide-stage.php:905 +msgid "Split Animaton Text (will not respect Html Markups !)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:729 ../admin/views/templates/slide- +#: stage.php:906 +msgid "No Split" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:730 ../admin/views/templates/slide- +#: stage.php:907 +msgid "Char Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:731 ../admin/views/templates/slide- +#: stage.php:908 +msgid "Word Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:732 ../admin/views/templates/slide- +#: stage.php:909 +msgid "Line Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:736 ../admin/views/templates/slide- +#: stage.php:737 ../admin/views/templates/slide-stage.php:913 .. +#: admin/views/templates/slide-stage.php:914 +msgid "Animation Delay between Splitted Elements" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:750 ../admin/views/templates/slide- +#: stage.php:926 +msgid "Offset" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:753 ../admin/views/templates/slide- +#: stage.php:929 ../admin/views/templates/slider-main-options.php:3180 +msgid "Scale" +msgstr "Scala" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:754 ../admin/views/templates/slide- +#: stage.php:930 +msgid "Skew" +msgstr "Inclinato" + +#: ../admin/views/templates/slide-stage.php:755 ../admin/views/templates/slide- +#: stage.php:931 +msgid "Masking" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:756 ../admin/views/templates/slide- +#: stage.php:932 +msgid "Origin" +msgstr "Origine" + +#: ../admin/views/templates/slide-stage.php:768 +msgid "" +"Mask is not available due Style Transitions. Please remove any Rotation, " +"Scale or skew effect form Idle and Hover settings" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:1037 ../admin/views/templates/slide- +#: stage.php:1725 ../admin/views/templates/slide-stage.php:2244 +msgid "Disabled" +msgstr "Disabilita" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:1038 +msgid "Pendulum" +msgstr "Pendolo" + +#: ../admin/views/templates/slide-stage.php:1039 +msgid "Rotate" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:1040 +msgid "Slideloop" +msgstr "Cicli Slide" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:1041 +msgid "Pulse" +msgstr "Pulse" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:1042 +msgid "Wave" +msgstr "Wave" + +#: ../admin/views/templates/slide-stage.php:1047 +msgid "Loop Speed (sec) - 0.3 = 300ms" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1048 +msgid "Loop Speed (ms)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1057 ../admin/views/templates/slide- +#: stage.php:1058 +msgid "Loop Easing" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1071 +msgid "Loop Parameters" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1077 ../admin/views/templates/slide- +#: stage.php:1078 +msgid "2D Rotation start deg." +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1081 ../admin/views/templates/slide- +#: stage.php:1082 +msgid "2D Rotation end deg." +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1087 ../admin/views/templates/slide- +#: stage.php:1088 +msgid "2D Rotation X Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1091 ../admin/views/templates/slide- +#: stage.php:1092 +msgid "2D Rotation Y Origin" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:1096 +msgid "Start" +msgstr "Inizio" + +#: ../admin/views/templates/slide-stage.php:1098 ../admin/views/templates/slide- +#: stage.php:1099 +msgid "Start X Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1101 ../admin/views/templates/slide- +#: stage.php:1102 +msgid "Start Y Offset" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:1106 +msgid "End" +msgstr "Fine" + +#: ../admin/views/templates/slide-stage.php:1108 ../admin/views/templates/slide- +#: stage.php:1109 +msgid "End X Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1111 ../admin/views/templates/slide- +#: stage.php:1112 +msgid "End Y Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1117 ../admin/views/templates/slide- +#: stage.php:1119 +msgid "Zoom Start" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1121 ../admin/views/templates/slide- +#: stage.php:1123 +msgid "Zoom End" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1129 +msgid "Start Angle" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:1133 +msgid "Radius" +msgstr "Radius" + +#: ../admin/views/templates/slide-stage.php:1135 +msgid "Radius of Rotation / Pendulum" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1143 +msgid "Lazy Loading" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1146 ../admin/views/templates/slide- +#: stage.php:1155 +msgid "Default Setting" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1147 +msgid "Force Lazy Loading" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1148 +msgid "Ignore Lazy Loading" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:1152 +msgid "Source Type" +msgstr "Tipo di Fonte" + +#: ../admin/views/templates/slide-stage.php:1174 ../admin/views/templates/slide- +#: stage.php:2337 +msgid "Animation Timing" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1177 ../admin/views/templates/slide- +#: stage.php:2340 +msgid "In and Out Animation Default" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1178 ../admin/views/templates/slide- +#: stage.php:2341 +msgid "In Animation Default and Out Animation Wait for Trigger" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1179 ../admin/views/templates/slide- +#: stage.php:2342 +msgid "Wait for Trigger" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1183 ../admin/views/templates/slide- +#: stage.php:2345 +msgid "Trigger Memory" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1186 ../admin/views/templates/slide- +#: stage.php:2348 +msgid "Reset Animation and Trigger States every loop" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1187 ../admin/views/templates/slide- +#: stage.php:2349 +msgid "Keep last selected State" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:1227 +msgid "ID" +msgstr "ID" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:1234 +msgid "Classes" +msgstr "Classi" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:1248 +msgid "Rel" +msgstr "Rel" + +#: ../admin/views/templates/slide-stage.php:1256 +msgid "Alt" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1269 +msgid "Internal Classes:" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1285 +msgid "Layer Type:" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1305 +msgid "Visibility on Devices" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1327 +msgid "Hide 'Under' Width" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1333 +msgid "Only on Slider Hover" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:1351 +msgid "Auto Responsive" +msgstr "Auto Responsive" + +#: ../admin/views/templates/slide-stage.php:1357 +msgid "Child Elements Responsive" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1363 +msgid "Align" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1366 +msgid "Grid Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1367 +msgid "Slide Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1372 +msgid "Responsive Offset" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:1396 +msgid "Static Layers will be shown on every slide in template sliders" +msgstr "I Layer statici verranno visualizzati in ogni Slide del template Sliders" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:1403 +msgid "Start on Slide" +msgstr "Inizio della Slide" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:1428 +msgid "End on Slide" +msgstr "Fine della Slide" + +#: ../admin/views/templates/slide-stage.php:1525 +msgid "Image Layer Title " +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1525 +msgid "(only for internal usage):" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1542 +msgid "Add a New Layer" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1545 +msgid "Text/Html" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1546 +msgid "Image" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1547 +msgid "Video" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1548 +msgid "Button" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1549 +msgid "Shape" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1555 +msgid "Quick Layer Selector" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1563 +msgid "Slide contains no layers" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:1624 +msgid "Delete All Layers" +msgstr "Cancella tutti i Layers" + +#: ../admin/views/templates/slide-stage.php:1630 +msgid "Desktop" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1631 ../admin/views/templates/slider- +#: main-options.php:867 +msgid "Notebook" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1632 ../admin/views/templates/slider- +#: main-options.php:901 +msgid "Tablet" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1633 ../admin/views/templates/slider- +#: main-options.php:935 ../admin/views/templates/slider-main-options.php:2055 +msgid "Mobile" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:1723 +msgid "Helper Grid:" +msgstr "Griglia di Aiuto:" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:1732 +msgid "Snap to:" +msgstr "Applica a:" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:1734 ../admin/views/templates/slider- +#: main-options.php:3420 ../admin/views/templates/slider-main-options.php:3514 +msgid "None" +msgstr "Nessuna" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:1735 +msgid "Help Lines" +msgstr "Linea di aiuto" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:1736 +msgid "Layers" +msgstr "Layers" + +#: ../admin/views/templates/slide-stage.php:1750 +msgid "PLAY" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1779 +msgid "DragMe" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1819 +msgid "Add Button Layer" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1825 +msgid "Click on Element to add it" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1829 +msgid "Buttons" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1831 ../admin/views/templates/slide- +#: stage.php:1832 ../admin/views/templates/slide-stage.php:1833 .. +#: admin/views/templates/slide-stage.php:1836 ../admin/views/templates/slide- +#: stage.php:1837 ../admin/views/templates/slide-stage.php:1838 .. +#: admin/views/templates/slide-stage.php:1841 ../admin/views/templates/slide- +#: stage.php:1842 ../admin/views/templates/slide-stage.php:1843 .. +#: admin/views/templates/slide-stage.php:1846 ../admin/views/templates/slide- +#: stage.php:1847 ../admin/views/templates/slide-stage.php:1848 .. +#: admin/views/templates/slide-stage.php:1851 ../admin/views/templates/slide- +#: stage.php:1852 ../admin/views/templates/slide-stage.php:1853 .. +#: admin/views/templates/slide-stage.php:1856 ../admin/views/templates/slide- +#: stage.php:1857 ../admin/views/templates/slide-stage.php:1858 +msgid "Click Here" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1860 +msgid "Predefined Elements" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1971 +msgid "Idle State" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1990 ../admin/views/templates/slide- +#: stage.php:2054 ../admin/views/templates/slide-stage.php:2219 +msgid "Color" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1993 ../admin/views/templates/slide- +#: stage.php:2058 +msgid "Color 2" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2024 +msgid "Text / Icon" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2037 +msgid "Hover State" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2090 +msgid "Text" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2103 +msgid "Add Shape Layer" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2109 +msgid "Click your Shape below to add it" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2119 +msgid "Shape Settings" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:2168 ../admin/views/templates/slider- +#: main-options.php:2367 ../admin/views/templates/slider-main-options.php:2378 .. +#: admin/views/templates/slider-main-options.php:2512 .. +#: admin/views/templates/slider-main-options.php:2523 .. +#: admin/views/templates/slider-main-options.php:2669 .. +#: admin/views/templates/slider-main-options.php:2680 .. +#: admin/views/templates/slider-main-options.php:2837 .. +#: admin/views/templates/slider-main-options.php:2848 +msgid "Width" +msgstr "Largh.:" + +#: ../admin/views/templates/slide-stage.php:2170 ../admin/views/templates/slider- +#: main-options.php:821 +msgid "Full-Width" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:2178 +msgid "Height" +msgstr "Alt.:" + +#: ../admin/views/templates/slide-stage.php:2180 +msgid "Full-Height" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2205 +msgid "Apply Styles to Selection" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2223 +msgid "Advanced Styles will alwys be applied to all Device Sizes." +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2238 +msgid "Click" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2239 +msgid "Mouse Enter" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2240 +msgid "Mouse Leave" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2245 +msgid "Simple Link" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2246 +msgid "Jump to Slide" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:2247 ../admin/views/templates/slider- +#: main-options.php:3641 +msgid "Next Slide" +msgstr "Slide successiva" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:2248 ../admin/views/templates/slider- +#: main-options.php:3637 +msgid "Previous Slide" +msgstr "Slide precedente" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:2249 ../admin/views/templates/slider- +#: main-options.php:3629 +msgid "Pause Slider" +msgstr "Pausa Slider" + +#: ../admin/views/templates/slide-stage.php:2250 +msgid "Play Slider" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2251 +msgid "Toggle Slider" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2252 +msgid "CallBack" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2253 +msgid "Scroll Below Slider" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2254 +msgid "Start Layer \"in\" Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2255 +msgid "Start Layer \"out\" Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2261 +msgid "Toggle Layer Class" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2266 +msgid "Link Url" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2270 +msgid "Link Target" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:2277 +msgid "Link Type" +msgstr "Tipo di Link" + +#: ../admin/views/templates/slide-stage.php:2280 +msgid "jQuery Link" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2281 +msgid "a Tag Link" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2287 +msgid "Jump To" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2296 +msgid "Scroll Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2303 +msgid "Function" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2309 +msgid "Target" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:2313 +msgid "Delay" +msgstr "Durata" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:2315 ../admin/views/templates/slider- +#: main-options.php:1620 ../admin/views/templates/slider-main-options.php:1626 .. +#: admin/views/templates/slider-main-options.php:1645 .. +#: admin/views/templates/slider-main-options.php:1889 .. +#: admin/views/templates/slider-main-options.php:1895 .. +#: admin/views/templates/slider-main-options.php:2353 .. +#: admin/views/templates/slider-main-options.php:2358 .. +#: admin/views/templates/slider-main-options.php:2498 .. +#: admin/views/templates/slider-main-options.php:2503 .. +#: admin/views/templates/slider-main-options.php:2655 .. +#: admin/views/templates/slider-main-options.php:2660 .. +#: admin/views/templates/slider-main-options.php:2824 .. +#: admin/views/templates/slider-main-options.php:2828 .. +#: admin/views/templates/slider-main-options.php:3318 +msgid "ms" +msgstr "ms" + +#: ../admin/views/templates/slide-stage.php:2320 +msgid "at Start" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2322 +msgid "Play In Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2323 +msgid "Keep Hidden" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slide-stage.php:2330 +msgid "Class" +msgstr "Classe" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:25 +msgid "Edit Slider" +msgstr "Modifica Slider" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:25 .. +#: admin/views/templates/sliders-list.php:184 +msgid "New Slider" +msgstr "Nuova Slider" + +#: ../admin/views/templates/slider-main-options.php:36 +msgid "Content Source" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:43 +msgid "Default Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:48 +msgid "Post-Based Slider" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:53 +msgid "Specific Posts" +msgstr "Posts specifici" + +#: ../admin/views/templates/slider-main-options.php:58 +msgid "Flickr Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:63 +msgid "Instagram Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:68 +msgid "Woo Commerce Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:73 +msgid "Twitter Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:78 +msgid "Facebook Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:83 +msgid "YouTube Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:88 +msgid "Vimeo Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:104 +msgid "Coming Soon!" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:112 +msgid "Slides (max 33)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:113 .. +#: admin/views/templates/slider-main-options.php:134 +msgid "Display this number of photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:115 .. +#: admin/views/templates/slider-main-options.php:251 +msgid "Access Token" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:116 +msgid "Put in your Instagram Access Token" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:119 +msgid "" +"Get your Instagram Access Token here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:123 +msgid "Instagram User ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:124 +msgid "Put in the Instagram User ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:126 +msgid "" +"Find the Instagram User ID here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:133 .. +#: admin/views/templates/slider-main-options.php:220 +msgid "Slides (max 500)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:136 +msgid "Flickr API Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:137 +msgid "Put in your Flickr API Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:139 +msgid "" +"Read here how to receive your Flickr API key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:144 +msgid "Display a user's public photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:144 +msgid "User Public Photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:145 +msgid "Display a certain photoset from a user" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:145 +msgid "User Photoset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:146 +msgid "Display a gallery" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:147 +msgid "Display a group's photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:147 +msgid "Groups' Photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:151 +msgid "Flickr User Url" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:152 +msgid "Put in the URL of the flickr User" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:157 +msgid "Select Photoset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:159 +msgid "Select the photoset to pull the data from " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:165 +msgid "Flickr Gallery Url" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:166 +msgid "Put in the URL of the flickr Gallery" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:171 +msgid "Flickr Group Url" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:172 +msgid "Put in the URL of the flickr Group" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:180 +msgid "Slides (max 25)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:181 +msgid "Display this number of posts" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:183 .. +#: admin/views/templates/slider-main-options.php:223 +msgid "Cache (sec)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:184 .. +#: admin/views/templates/slider-main-options.php:224 +msgid "Cache the stream for x seconds" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:188 +msgid "Facebook Page" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:189 +msgid "Put in the URL/ID of the Facebook page" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:195 .. +#: admin/views/templates/slider-main-options.php:303 +msgid "Album" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:196 +msgid "Timeline" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:201 +msgid "Select Album" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:203 +msgid "Select the album to pull the data from " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:208 +msgid "App ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:209 +msgid "Put in the Facebook App ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:212 +msgid "App Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:213 +msgid "Put in the Facebook App secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:221 +msgid "Display this number of tweets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:227 +msgid "Twitter Name @" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:228 +msgid "Put in the Twitter Account to stream from" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:231 +msgid "Text Tweets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:235 +msgid "Retweets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:239 +msgid "Replies" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:244 +msgid "Consumer Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:245 +msgid "Put in your Twitter Consumer Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:247 +msgid "Consumer Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:248 +msgid "Put in your Twitter Consumer Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:252 +msgid "Put in your Twitter Access Token" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:255 +msgid "Access Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:256 +msgid "Put in your Twitter Access Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:258 +msgid "" +"Please register " +"your application with Twitter to get the values" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:264 +msgid "Slides (max 50)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:265 .. +#: admin/views/templates/slider-main-options.php:298 +msgid "Display this number of videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:267 +msgid "Youtube API Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:268 +msgid "Put in your YouTube API Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:271 +msgid "" +"Find information about the YouTube API key here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:274 +msgid "Channel ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:275 +msgid "Put in the ID of the YouTube channel" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:279 +msgid "Display the channel´s videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:279 .. +#: admin/views/templates/slider-main-options.php:305 .. +#: admin/views/templates/slider-main-options.php:323 +msgid "Channel" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:280 +msgid "Display a playlist" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:280 +msgid "Playlist" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:285 +msgid "Select Playlist" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:291 +msgid "" +"See how to find the Youtube channel ID here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:297 +msgid "Slides (max 60)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:302 +msgid "Display the user's videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:302 .. +#: admin/views/templates/slider-main-options.php:311 +msgid "User" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:303 +msgid "Display an album" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:304 +msgid "Display a group's videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:304 .. +#: admin/views/templates/slider-main-options.php:315 +msgid "Group" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:305 +msgid "Display a channel's videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:312 +msgid "Either the shortcut URL or ID of the user" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:316 +msgid "Either the shortcut URL or ID of the group" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:319 +msgid "Album ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:320 +msgid "The ID of the album" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:324 +msgid "Either the shortcut URL of the channel" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:332 +msgid "Specific Posts List:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:336 +msgid "Post Types:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:378 +msgid "Post Categories:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:404 +msgid "Filter Events By:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:418 +msgid "Sort Posts By:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:420 +msgid "Post ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:421 +msgid "Date" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:423 +msgid "Slug" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:424 +msgid "Author" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:425 +msgid "Last Modified" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:426 +msgid "Number Of Comments" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:427 +msgid "Random" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:428 +msgid "Unsorted" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:429 +msgid "Custom Order" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:445 +msgid "Sort Direction:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:448 +msgid "Descending" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:450 +msgid "Ascending" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:454 +msgid "Max Posts Per Slider:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:458 +msgid "Limit The Excerpt To:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:470 +msgid "Slider Title & ShortCode" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:475 +msgid "Enter your Slider Name here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:477 +msgid "The title of the slider, example: Slider 1" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:481 +msgid "Enter your Slider Alias here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:483 +msgid "The alias for embedding your slider, example: slider1" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:489 +msgid "Place the shortcode where you want to show the slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:503 +msgid "Select a Slider Type" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:508 +msgid "Standard Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:513 +msgid "Hero Scene" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:518 +msgid "Carousel Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:522 +msgid "Load a Preset from this Slider Type" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:530 +msgid "Save Current Settings as Preset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:807 +msgid "Slide Layout" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:826 +msgid "Full-Screen" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:836 +msgid "Desktop Large" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:836 +msgid "Max" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:857 .. +#: admin/views/templates/slider-main-options.php:888 .. +#: admin/views/templates/slider-main-options.php:921 .. +#: admin/views/templates/slider-main-options.php:956 +msgid "Layer Grid Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:862 +msgid "Specify a layer grid size above" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:893 .. +#: admin/views/templates/slider-main-options.php:926 .. +#: admin/views/templates/slider-main-options.php:961 +msgid "Custom Grid Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:970 +msgid "Show Advanced Size Options" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:977 +msgid "FullScreen Align Force" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:979 +msgid "Layers align within the full slider instead of the layer grid." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:983 +msgid "Increase/Decrease Fullscreen Height" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:988 +msgid "Containers" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:990 +msgid "" +"Example: #header or .header, .footer, #somecontainer | Height of Slider will " +"be decreased with the height of these Containers to fit perfect in the " +"screen." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:996 +msgid "PX or %" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:998 +msgid "" +"Decrease/Increase height of Slider. Can be used with px and %. " +"Positive/Negative values allowed. Example: 40px or 10%" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:1004 .. +#: admin/views/templates/slider-main-options.php:1028 +msgid "Min. Height" +msgstr "Alt. Minima" + +#: ../admin/views/templates/slider-main-options.php:1006 +msgid "The minimum height of the Slider in FullScreen mode." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1014 +msgid "Overflow Hidden" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1017 +msgid "" +"Adds overflow:hidden to the slider wrapping container which will hide / cut " +"any overlapping elements. Mostly used in Carousel Sliders." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1021 +msgid "Respect Aspect Ratio" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1024 +msgid "" +"It will keep aspect ratio and ignore max height of Layer Grid by upscaling. " +"Layer Area will be vertical centered." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1030 +msgid "The minimum height of the Slider in FullWidth or Auto mode." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1224 +msgid "Force Full Width:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1270 +msgid "Customize, Build & Implement" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1276 +msgid "" +"Go for further customization using the advanced settings on the right of " +"this configuration page." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1278 +msgid "Show Advanced Options" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1283 +msgid "Start Building Slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1284 +msgid "" +"Our drag and drop editor will make creating slide content an absolut breeze. " +"This is where the magic happens!" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:1289 .. +#: admin/views/templates/slider-main-options.php:4286 .. +#: admin/views/templates/slides.php:8 +msgid "Edit Slides" +msgstr "Modifica Slides" + +#: ../admin/views/templates/slider-main-options.php:1297 +msgid "Implement your Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1298 +msgid "" +"There are several ways to add your slider to your wordpress post / page / " +"etc." +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:1305 .. +#: admin/views/templates/slider-main-options.php:4272 +msgid "Save Settings" +msgstr "Salva Slider" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:1306 .. +#: admin/views/templates/slider-main-options.php:4273 +msgid "updating..." +msgstr "Sto Aggiornando..." + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:1308 .. +#: admin/views/templates/slider-main-options.php:4277 +msgid "Delete Slider" +msgstr "Elimina Slider" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:1310 +msgid "Preview Slider" +msgstr "Anteprima Slider" + +#: ../admin/views/templates/slider-main-options.php:1329 +msgid "Custom CSS / Javascript" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:1332 +msgid "Custom CSS" +msgstr "CSS Personalizzato" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:1336 +msgid "Custom JavaScript" +msgstr "JavaScript Personalizzato" + +#: ../admin/views/templates/slider-main-options.php:1588 +msgid "Slideshow" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1589 +msgid "Defaults" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1590 +msgid "Progress Bar" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1591 +msgid "1st Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1592 .. +#: admin/views/templates/slider-main-options.php:2315 +msgid "Misc." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1602 +msgid "" +"Show multi language controls across the slider. Only available when wpml " +"plugin exists." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1602 +msgid "Use Multi Language (WPML)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1610 +msgid "" +"Call next slide when inactive browser tab is focused again. Use this for " +"avoid dissorted layers and broken timeouts after bluring the browser tab." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1610 +msgid "Next Slide on Focus" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1618 +msgid "" +"The time one slide stays on the screen in Milliseconds. This is a Default " +"Global value. Can be adjusted slide to slide also in the slide editor." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1618 +msgid "Default Slide Duration" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1624 +msgid "Sets a delay before the Slider gets initialized" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1624 +msgid "Initialization Delay" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1629 +msgid "Default transition by creating a new slide." +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:1629 +msgid "Transitions" +msgstr "Transizioni" + +#: ../admin/views/templates/slider-main-options.php:1643 +msgid "Default transition duration by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1643 +msgid "Animation Duration" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1652 +msgid "Default main image source size by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1652 +msgid "Image Source Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1668 +msgid "Default background size by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1668 .. +#: admin/views/templates/slider-main-options.php:2133 +msgid "Background Fit" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1690 +msgid "Default background position by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1690 .. +#: admin/views/templates/slider-main-options.php:2150 +msgid "Background Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1716 +msgid "Default background repeat by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1716 .. +#: admin/views/templates/slider-main-options.php:2141 +msgid "Background Repeat" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1727 +msgid "Default Ken/Burn setting by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1738 +msgid "Start Fit: (in %):" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1815 +msgid "End Fit: (in %):" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1820 +msgid "Start Offset X:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1825 +msgid "Start Offset Y:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1830 .. +#: admin/views/templates/slider-main-options.php:1840 .. +#: admin/views/templates/slider-main-options.php:1845 +msgid "End Offset Y:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1835 +msgid "End Offset X:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1855 +msgid "Overwrite Selected Settings on all Slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1864 +msgid "" +"Start from a different slide instead of the first slide. I.e. good for " +"preview / edit mode." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1864 +msgid "Alternative 1st Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1868 +msgid "" +"If active, it will overwrite the first slide transition. Use it to get " +"special transition for the first slide." +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:1868 +msgid "First Transition Active" +msgstr "Attiva prima transizione" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:1873 +msgid "First slide transition type" +msgstr "Tipo Prima transizione Slide" + +#: ../admin/views/templates/slider-main-options.php:1873 +msgid "Transition Type" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1887 +msgid "First slide transition duration." +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:1887 +msgid "Transition Duration" +msgstr "Durata Transazione" + +#: ../admin/views/templates/slider-main-options.php:1893 +msgid "The number of slots or boxes the slide is divided into." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1893 +msgid "Transition Slot Amount" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1904 +msgid "Stops the Timer when mouse is hovering the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1904 +msgid "Stop Slide On Hover" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1909 +msgid "Stops the slideshow after the predefined loop amount at the predefined slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1909 +msgid "Stop Slider After ..." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1915 +msgid "Stops the slider after certain amount of loops. 0 related to the first loop." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1915 +msgid "Amount of Loops" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1920 +msgid "Stops the slider at the given slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1920 +msgid "At Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1926 +msgid "Randomize the order of the slides at every Page reload." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1926 +msgid "Shuffle / Random Mode" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1931 +msgid "" +"If only one Slide is in the Slider, you can choose wether the Slide should " +"loop or if it should stop. If only one Slide exist, slide will be duplicated " +"!" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1931 +msgid "Loop Single Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1937 +msgid "Allow to stop the Slider out of viewport." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1937 +msgid "Stop Slider Out of ViewPort" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1942 +msgid "Out Of ViewPort:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1944 +msgid "Wait" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1945 +msgid "Pause" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1949 +msgid "Min. Size of Slider must be in Viewport before slide starts again." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1949 +msgid "Area out of ViewPort:" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:1951 .. +#: admin/views/templates/slider-main-options.php:3111 .. +#: admin/views/templates/slider-main-options.php:3195 +msgid "%" +msgstr "%" + +#: ../admin/views/templates/slider-main-options.php:1959 +msgid "Enable / disable progress var" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1959 +msgid "Progress Bar Active" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1963 +msgid "Position of the progress bar." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1963 +msgid "Progress Bar Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1971 +msgid "The height of the progress bar" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1971 +msgid "Progress Bar Heigth" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:1973 .. +#: admin/views/templates/slider-main-options.php:1979 .. +#: admin/views/templates/slider-main-options.php:2074 .. +#: admin/views/templates/slider-main-options.php:2080 .. +#: admin/views/templates/slider-main-options.php:2085 .. +#: admin/views/templates/slider-main-options.php:2182 .. +#: admin/views/templates/slider-main-options.php:2188 .. +#: admin/views/templates/slider-main-options.php:2194 .. +#: admin/views/templates/slider-main-options.php:2199 .. +#: admin/views/templates/slider-main-options.php:2369 .. +#: admin/views/templates/slider-main-options.php:2380 .. +#: admin/views/templates/slider-main-options.php:2405 .. +#: admin/views/templates/slider-main-options.php:2411 .. +#: admin/views/templates/slider-main-options.php:2437 .. +#: admin/views/templates/slider-main-options.php:2443 .. +#: admin/views/templates/slider-main-options.php:2475 .. +#: admin/views/templates/slider-main-options.php:2514 .. +#: admin/views/templates/slider-main-options.php:2525 .. +#: admin/views/templates/slider-main-options.php:2548 .. +#: admin/views/templates/slider-main-options.php:2554 .. +#: admin/views/templates/slider-main-options.php:2614 .. +#: admin/views/templates/slider-main-options.php:2628 .. +#: admin/views/templates/slider-main-options.php:2633 .. +#: admin/views/templates/slider-main-options.php:2638 .. +#: admin/views/templates/slider-main-options.php:2671 .. +#: admin/views/templates/slider-main-options.php:2682 .. +#: admin/views/templates/slider-main-options.php:2718 .. +#: admin/views/templates/slider-main-options.php:2724 .. +#: admin/views/templates/slider-main-options.php:2785 .. +#: admin/views/templates/slider-main-options.php:2799 .. +#: admin/views/templates/slider-main-options.php:2804 .. +#: admin/views/templates/slider-main-options.php:2809 .. +#: admin/views/templates/slider-main-options.php:2839 .. +#: admin/views/templates/slider-main-options.php:2850 .. +#: admin/views/templates/slider-main-options.php:2886 .. +#: admin/views/templates/slider-main-options.php:2892 .. +#: admin/views/templates/slider-main-options.php:3101 .. +#: admin/views/templates/slider-main-options.php:3110 .. +#: admin/views/templates/slider-main-options.php:3117 .. +#: admin/views/templates/slider-main-options.php:3120 +msgid "px" +msgstr "px" + +#: ../admin/views/templates/slider-main-options.php:1977 +#, php-format +msgid "" +"The opacity of the progress bar
        (0 == Transparent, 100 = Solid color, 50 " +"= 50% opacity etc...)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1977 +msgid "Progress Bar Opacity" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1983 +msgid "Color of the progress bar." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1983 +msgid "Progress Bar Color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2047 +msgid "Layout & Visual" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:2052 +msgid "Appearance" +msgstr "Aspetto" + +#: ../admin/views/templates/slider-main-options.php:2054 +msgid "Spinner" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:2056 .. +#: admin/views/templates/slider-main-options.php:2529 .. +#: admin/views/templates/slider-main-options.php:2686 .. +#: admin/views/templates/slider-main-options.php:2854 +msgid "Position" +msgstr "Posizione" + +#: ../admin/views/templates/slider-main-options.php:2061 +msgid "If this is enabled, the slider will not be loaded on mobile devices." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2061 +msgid "Disable Slider on Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2066 +msgid "This will disable KenBurns on mobile devices to save performance" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2066 +msgid "Disable KenBurn On Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2070 +msgid "Hide Element Under Width:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2072 +msgid "" +"Hide the slider under the defined slider width. Value 0 will disable the " +"function." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2072 .. +#: admin/views/templates/template-slider-selector.php:15 +msgid "Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2078 +msgid "" +"Hide the selected layers (set layers hide under in slide editor) under the " +"defined slider width. Value 0 will disable the function." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2078 +msgid "Predefined Layers" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2083 +msgid "" +"Hide all layers under the defined slider width. Value 0 will disable the " +"function." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2083 +msgid "All Layers" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2093 +msgid "The Shadow display underneath the banner." +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:2093 +msgid "Shadow Type" +msgstr "Tipo di Ombra" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:2095 +msgid "No Shadow" +msgstr "Nessuna" + +#: ../admin/views/templates/slider-main-options.php:2105 +msgid "Show a dotted overlay over the slides." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2105 +msgid "Dotted Overlay Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2115 +msgid "Slider Background" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2116 +msgid "" +"General background color for slider. Clear value to get transparent slider " +"container." +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:2116 +msgid "Background color" +msgstr "Colore Sfondo" + +#: ../admin/views/templates/slider-main-options.php:2120 +msgid "" +"Padding around the slider. Together with background color shows as slider " +"border." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2120 +msgid "Padding as Border" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2124 +msgid "Use a general background image instead of general background color." +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:2124 +msgid "Show Background Image" +msgstr "Mostra Immagine di Sfondo" + +#: ../admin/views/templates/slider-main-options.php:2129 +msgid "The source of the general background image." +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:2129 +msgid "Background Image Url" +msgstr "Url Immagine di Sfondo" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:2130 +msgid "Set" +msgstr "Imposta" + +#: ../admin/views/templates/slider-main-options.php:2133 +msgid "" +"General background image size. Cover - always fill the container, cuts " +"overlays. Contain- always fits image into slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2135 +msgid "cover" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2136 +msgid "contain" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2137 +msgid "normal" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2141 +msgid "General background image repeat attitude. Used for tiled images." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2143 +msgid "no-repeat" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2144 +msgid "repeat" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2145 +msgid "repeat-x" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2146 +msgid "repeat-y" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2150 +msgid "" +"General background image position. i.e. center center to always center " +"vertical and horizontal the image in the slider background." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2152 +msgid "center top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2153 +msgid "center right" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2154 +msgid "center bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2155 +msgid "center center" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2156 +msgid "left top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2157 +msgid "left center" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2158 +msgid "left bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2159 +msgid "right top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2160 +msgid "right center" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2161 +msgid "right bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2171 +msgid "" +"The position of the slider within the parrent container. (float:left or " +"float:right or with margin:0px auto;). We recomment do use always CENTER, " +"since the slider will auto fill and grow with the wrapping container. Set " +"any border,padding, floating etc. to the wrapping container where the slider " +"embeded instead of using left/right here !" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:2171 +msgid "Position on the page" +msgstr "Posizione sulla pagina" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:2180 +msgid "The top margin of the slider wrapper div" +msgstr "Padding del margine superiore della slider" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:2180 +msgid "Margin Top" +msgstr "Margine Alto" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:2186 +msgid "The bottom margin of the slider wrapper div" +msgstr "Padding del margine inferiore della slider" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:2186 +msgid "Margin Bottom" +msgstr "Margine Basso" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:2192 +msgid "The left margin of the slider wrapper div" +msgstr "Padding del margine sinistro della slider" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:2192 +msgid "Margin Left" +msgstr "Margine Sinistro" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:2197 +msgid "The right margin of the slider wrapper div" +msgstr "Padding del margine destro della slider" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:2197 +msgid "Margin Right" +msgstr "Margine Destro" + +#: ../admin/views/templates/slider-main-options.php:2208 +msgid "Select a Spinner for your Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2208 +msgid "Choose Spinner" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:2214 .. +#: admin/views/templates/slider-main-options.php:3126 +msgid "3" +msgstr "3" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:2215 +msgid "4" +msgstr "4" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:2216 .. +#: admin/views/templates/slider-main-options.php:3127 +msgid "5" +msgstr "5" + +#: ../admin/views/templates/slider-main-options.php:2220 +msgid "The Color the Spinner will be shown in" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2220 +msgid "Spinner Color" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:2305 +msgid "Navigation" +msgstr "Navigazione" + +#: ../admin/views/templates/slider-main-options.php:2314 +msgid "Touch" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2320 +msgid "Enable / Disable Arrows" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2320 +msgid "Enable Arrows" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2325 +msgid "Look of the navigation Arrows" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2325 +msgid "Arrows Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2327 .. +#: admin/views/templates/slider-main-options.php:2458 .. +#: admin/views/templates/slider-main-options.php:2592 .. +#: admin/views/templates/slider-main-options.php:2764 +msgid "No Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2343 +msgid "" +"Enable to make arrows always visible. Disable to hide arrows after the " +"defined time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2343 .. +#: admin/views/templates/slider-main-options.php:2645 .. +#: admin/views/templates/slider-main-options.php:2814 +msgid "Always Show " +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:2345 .. +#: admin/views/templates/slider-main-options.php:2491 .. +#: admin/views/templates/slider-main-options.php:2647 .. +#: admin/views/templates/slider-main-options.php:2816 +msgid "Yes" +msgstr "Si" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:2346 .. +#: admin/views/templates/slider-main-options.php:2492 .. +#: admin/views/templates/slider-main-options.php:2648 .. +#: admin/views/templates/slider-main-options.php:2817 +msgid "No" +msgstr "No" + +#: ../admin/views/templates/slider-main-options.php:2351 +msgid "Time after the Arrows will be hidden(Default: 200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2351 .. +#: admin/views/templates/slider-main-options.php:2496 .. +#: admin/views/templates/slider-main-options.php:2653 +msgid "Hide After" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2356 +msgid "Time after the Arrows will be hidden on Mobile(Default: 1200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2356 .. +#: admin/views/templates/slider-main-options.php:2501 .. +#: admin/views/templates/slider-main-options.php:2658 +msgid "Hide After on Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2362 +msgid "Force Hide Navigation Arrows under width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2362 +msgid "Hide Under" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2367 +msgid "If browser size goes below this value, then Navigation Arrows are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2373 +msgid "Force Hide Navigation over width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2373 +msgid "Hide Over" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2378 +msgid "If browser size goes over this value, then Navigation Arrows are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2384 +msgid "Left Arrow Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2386 +msgid "Horizontal position of the left arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2386 .. +#: admin/views/templates/slider-main-options.php:2415 .. +#: admin/views/templates/slider-main-options.php:2530 .. +#: admin/views/templates/slider-main-options.php:2700 .. +#: admin/views/templates/slider-main-options.php:2868 +msgid "Horizontal Align" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2395 +msgid "Vertical position of the left arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2395 .. +#: admin/views/templates/slider-main-options.php:2425 .. +#: admin/views/templates/slider-main-options.php:2538 .. +#: admin/views/templates/slider-main-options.php:2708 .. +#: admin/views/templates/slider-main-options.php:2876 +msgid "Vertical Align" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2403 +msgid "Offset from current horizontal position of of left arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2403 .. +#: admin/views/templates/slider-main-options.php:2435 .. +#: admin/views/templates/slider-main-options.php:2546 .. +#: admin/views/templates/slider-main-options.php:2716 .. +#: admin/views/templates/slider-main-options.php:2884 +msgid "Horizontal Offset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2409 +msgid "Offset from current vertical position of of left arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2409 .. +#: admin/views/templates/slider-main-options.php:2441 .. +#: admin/views/templates/slider-main-options.php:2552 .. +#: admin/views/templates/slider-main-options.php:2722 .. +#: admin/views/templates/slider-main-options.php:2890 +msgid "Vertical Offset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2414 +msgid "Right Arrow Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2415 +msgid "Horizontal position of the right arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2425 +msgid "Vertical position of the right arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2435 +msgid "Offset from current horizontal position of of right arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2441 +msgid "Offset from current vertical position of of right arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2451 +msgid "Enable / Disable Bullets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2451 +msgid "Enable Bullets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2456 +msgid "Look of the Bullets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2456 +msgid "Bullet Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2473 +msgid "Space between the bullets." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2473 .. +#: admin/views/templates/slider-main-options.php:2612 .. +#: admin/views/templates/slider-main-options.php:2783 +msgid "Space" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2479 +msgid "Direction of the Bullets. Vertical or Horizontal." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2479 .. +#: admin/views/templates/slider-main-options.php:2617 .. +#: admin/views/templates/slider-main-options.php:2788 +msgid "Direction" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2481 .. +#: admin/views/templates/slider-main-options.php:2619 .. +#: admin/views/templates/slider-main-options.php:2790 .. +#: admin/views/templates/slider-main-options.php:2919 .. +#: admin/views/templates/slider-main-options.php:2934 +msgid "Horizontal" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2482 .. +#: admin/views/templates/slider-main-options.php:2620 .. +#: admin/views/templates/slider-main-options.php:2791 .. +#: admin/views/templates/slider-main-options.php:2920 .. +#: admin/views/templates/slider-main-options.php:2935 +msgid "Vertical" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2489 +msgid "" +"Enable to make bullets always visible. Disable to hide bullets after the " +"defined time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2489 +msgid "Always Show" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2496 +msgid "Time after that the bullets will be hidden(Default: 200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2501 +msgid "Time after the bullets will be hidden on Mobile (Default: 1200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2507 +msgid "Force Hide Navigation Bullets under width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2507 .. +#: admin/views/templates/slider-main-options.php:2664 .. +#: admin/views/templates/slider-main-options.php:2832 +msgid "Hide under Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2512 .. +#: admin/views/templates/slider-main-options.php:2523 +msgid "If browser size goes below this value, then Navigation bullets are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2518 +msgid "Force Hide Navigation Bullets over width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2518 .. +#: admin/views/templates/slider-main-options.php:2675 .. +#: admin/views/templates/slider-main-options.php:2843 +msgid "Hide over Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2530 +msgid "Horizontal position of bullets " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2538 +msgid "Vertical positions of bullets " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2546 +msgid "Offset from current horizontal position." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2552 +msgid "Offset from current Vertical position." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2562 +msgid "Enable / Disable Thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2562 +msgid "Enable Thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2569 .. +#: admin/views/templates/slider-main-options.php:2742 +msgid "Wrapper Container" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2571 +msgid "The wrapper div padding of thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2571 .. +#: admin/views/templates/slider-main-options.php:2744 +msgid "Wrapper Padding" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2575 +msgid "Span wrapper to full width or full height based on the direction selected" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2575 .. +#: admin/views/templates/slider-main-options.php:2748 +msgid "Span Wrapper" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2579 +msgid "Thumbnails wrapper background color. For transparent leave empty." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2579 +msgid "Wrapper color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2580 .. +#: admin/views/templates/slider-main-options.php:2752 .. +#: admin/views/templates/slider-main-options.php:2753 +msgid "Wrapper Color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2583 .. +#: admin/views/templates/slider-main-options.php:2756 +#, php-format +msgid "Opacity of the Wrapper container. 0 - transparent, 50 - 50% opacity..." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2583 .. +#: admin/views/templates/slider-main-options.php:2756 +msgid "Wrapper Opacity" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2590 +msgid "Style of the thumbnails." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2590 +msgid "Thumbnails Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2608 +msgid "The amount of max visible Thumbnails in the same time. " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2608 +msgid "Visible Thumbs Amount" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2612 +msgid "Space between the thumbnails." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2617 +msgid "Direction of the Thumbnails. Vertical or Horizontal." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2624 +msgid "Thumbnail Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2626 +msgid "The basic Width of one Thumbnail." +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:2626 +msgid "Thumb Width" +msgstr "Larghezza miniatura" + +#: ../admin/views/templates/slider-main-options.php:2631 +msgid "The basic Height of one Thumbnail." +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:2631 +msgid "Thumb Height" +msgstr "Altezza miniatura" + +#: ../admin/views/templates/slider-main-options.php:2636 +msgid "" +"The minimum width of the auto resized thumbs. Between Max and Min width the " +"sizes are auto calculated)." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2636 +msgid "Min Thumb Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2645 +msgid "" +"Enable to make thumbnails always visible. Disable to hide thumbnails after " +"the defined time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2653 +msgid "Time after that the thumbnails will be hidden(Default: 200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2658 +msgid "Time after that the thumbnails will be hidden on Mobile (Default: 1200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2664 .. +#: admin/views/templates/slider-main-options.php:2675 +msgid "Force Hide Navigation Thumbnails under width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2669 .. +#: admin/views/templates/slider-main-options.php:2680 +msgid "If browser size goes below this value, then Navigation thumbs are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2687 +msgid "" +"Put the thumbnails inside or outside of the slider container. Outside added " +"thumbnails will decrease the size of the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2687 .. +#: admin/views/templates/slider-main-options.php:2856 +msgid "Inner / outer" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2689 .. +#: admin/views/templates/slider-main-options.php:2858 +msgid "Inner Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2690 .. +#: admin/views/templates/slider-main-options.php:2859 +msgid "Outer Left" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2691 .. +#: admin/views/templates/slider-main-options.php:2860 +msgid "Outer Right" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2692 .. +#: admin/views/templates/slider-main-options.php:2861 +msgid "Outer Top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2693 .. +#: admin/views/templates/slider-main-options.php:2862 +msgid "Outer Bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2700 +msgid "Horizontal position of thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2708 +msgid "Vertical position of thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2716 +msgid "Offset from current Horizontal position." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2722 +msgid "Offset from current Vertical position." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2735 +msgid "Enable / Disable navigation tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2735 +msgid "Enable Tabs" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2744 +msgid "The wrapper div padding of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2748 +msgid "Span wrapper to full width or full height based on the direction selected." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2752 +msgid "Tabs wrapper background color. For transparent leave empty." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2762 +msgid "Style of the tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2762 +msgid "Tabs Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2779 +msgid "The amount of max visible tabs in same time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2779 +msgid "Visible Tabs Amount" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2783 +msgid "Space between the tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2788 +msgid "Direction of the Tabs. Vertical or Horizontal." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2795 +msgid "Tab Sizes" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2797 +msgid "The basic width of one tab." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2797 +msgid "Tabs Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2802 +msgid "the basic height of one tab." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2802 +msgid "Tabs Height" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2807 +msgid "" +"The minimum width of the auto resized Tabs. Between Max and Min width the " +"sizes are auto calculated)." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2807 +msgid "Min. Tab Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2814 +msgid "" +"Enable to make tabs always visible. Disable to hide tabs after the defined " +"time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2822 +msgid "Time after that the tabs will be hidden(Default: 200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2822 +msgid "Hide After" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2826 +msgid "Time after that the tabs will be hidden on Mobile (Default: 1200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2826 +msgid "Hide After on Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2832 .. +#: admin/views/templates/slider-main-options.php:2843 +msgid "Force Hide Navigation tabs under width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2837 .. +#: admin/views/templates/slider-main-options.php:2848 +msgid "If browser size goes below this value, then Navigation tabs are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2856 +msgid "" +"Put the tabs inside or outside of the slider container. Outside added tabs " +"will decrease the size of the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2868 +msgid "Horizontal position of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2876 +msgid "Vertical position of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2884 +msgid "Offset from current horizontal position of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2890 +msgid "Offset from current vertical position of tabs." +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:2901 +msgid "Enable Swipe Function on touch devices" +msgstr "Abilita Funzione Swipe sui dispositivi touch" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:2901 +msgid "Touch Enabled" +msgstr "Abilita Touch" + +#: ../admin/views/templates/slider-main-options.php:2905 +msgid "Scroll below slider on vertical swipe" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2905 +msgid "Drag Block Vertical" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2909 +msgid "Defines the sensibility of gestures. Smaller values mean a higher sensibility" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2909 +msgid "Swipe Treshhold (0 - 200)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2913 +msgid "Defines how many fingers are needed minimum for swiping" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2913 +msgid "Swipe Min Finger" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2917 +msgid "Swipe Direction to swap slides?" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2917 +msgid "Swipe Direction" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2928 +msgid "Allow/disallow to navigate the slider with keyboard." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2928 +msgid "Keyboard Navigation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2932 +msgid "" +"Keyboard Direction to swap slides (horizontal - left/right arrow, vertical - " +"up/down arrow)?" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2932 +msgid "Key Direction" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2939 +msgid "Allow/disallow to navigate the slider with Mouse Scroll." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2939 +msgid "Mouse Scroll Navigation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3082 +msgid "Carousel Settings" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3088 +msgid "Basics" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3089 +msgid "Transformations" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3090 +msgid "Aligns" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3094 +msgid "" +"Infinity Carousel Scroll. No Endpoints exists at first and last slide if " +"valuse is set to ON." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3094 +msgid "Infinity Scroll" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3099 +msgid "The horizontal gap/space between the slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3099 +msgid "Space between slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3105 +msgid "The border radius of slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3116 +msgid "The padding top of slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3119 +msgid "The padding bottom of slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3123 +msgid "The maximum visible items in same time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3123 +msgid "Max. Visible Items" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:3128 +msgid "7" +msgstr "7" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:3129 +msgid "9" +msgstr "9" + +#: ../admin/views/templates/slider-main-options.php:3130 +msgid "11" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3131 +msgid "13" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3132 +msgid "15" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3133 +msgid "17" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3134 +msgid "19" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3138 +msgid "" +"Stretch carousel element width to the wrapping container width. Using this " +"you can see only 1 item in same time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3138 +msgid "Stretch Element" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3148 +msgid "" +"All elements out of focus will get some Opacity value based on the Distance " +"to the current focused element, or only the coming/leaving elements." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3148 +msgid "Fade All Elements" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3154 +msgid "Fade is varying based on the distance to the focused element." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3154 +msgid "Varying Fade" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3161 +msgid "Rotation enabled/disabled for not focused elements." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3168 +msgid "Rotation is varying based on the distance to the focused element." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3168 +msgid "Varying Rotation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3173 +msgid "" +"The maximum rotation of the Side elements. Rotation will depend on the " +"element distance to the current focused element. 0 will turn off the Rotation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3173 +msgid "Max. Rotation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3175 +msgid "deg" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3180 +msgid "Scale enabled/disabled for not focused elements." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3188 +msgid "Scale is varying based on the distance to the focused element." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3188 +msgid "Varying Scale" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3193 +msgid "" +"The maximum scale down of the Side elements. Scale will depend on the " +"element distance to the current focused element. Min value is 0 and max " +"value is 100." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3193 +msgid "Max. Scaledown" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3203 +msgid "Horizontal Align of the Carousel." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3203 +msgid "Horizontal Aligns" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3211 +msgid "Vertical Align of the Carousel." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3211 +msgid "Vertical Aligns" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3289 +msgid "" +"Enabling this, will give you new options in the slides to create a unique " +"parallax effect" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3289 +msgid "Enable Parallax" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3294 +msgid "If set to on, parallax will be disabled on mobile devices to save performance" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3294 +msgid "Disable on Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3299 +msgid "Mouse Sensibility" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3301 +msgid "Defines on what event type the parallax should react to" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3301 +msgid "Event" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3303 +msgid "Mouse Move" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3304 +msgid "Scroll Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3305 +msgid "Move and Scroll" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3309 +msgid "Mouse Based parallax calculation Origo" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3309 +msgid "Parallax Origo" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3311 +msgid "Mouse Enter Point" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3312 +msgid "Slider Center" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3316 +msgid "Parallax Speed for Mouse movents." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3316 +msgid "Animation Speed" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3322 +msgid "Parallax Levels" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3324 .. +#: admin/views/templates/slider-main-options.php:3328 .. +#: admin/views/templates/slider-main-options.php:3332 .. +#: admin/views/templates/slider-main-options.php:3336 .. +#: admin/views/templates/slider-main-options.php:3340 .. +#: admin/views/templates/slider-main-options.php:3344 .. +#: admin/views/templates/slider-main-options.php:3348 .. +#: admin/views/templates/slider-main-options.php:3352 .. +#: admin/views/templates/slider-main-options.php:3356 .. +#: admin/views/templates/slider-main-options.php:3360 +msgid "" +"Defines a level that can be used in Slide Editor for this Slider. Smaller " +"value gives a smaller offset effect, higher value will increase the effect." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3324 +msgid "Level Depth 1" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3328 +msgid "Level Depth 2" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3332 +msgid "Level Depth 3" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3336 +msgid "Level Depth 4" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3340 +msgid "Level Depth 5" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3344 +msgid "Level Depth 6" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3348 +msgid "Level Depth 7" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3352 +msgid "Level Depth 8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3356 +msgid "Level Depth 9" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3360 +msgid "Level Depth 10" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3392 +msgid "Performance and SEO Optimization" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3406 +msgid "" +"How to load/preload the images.

        All - Load all " +"image element in a sequence at the initialisation. This will boost up the " +"loading of your page, and will preload all images to have a smooth breakless " +"run already in the first loop.

        Smart - It will " +"allow to load the page as quickest, and load only the current and neighbour " +"slide elements. Will load on demand the next element if not loaded yet. " +"

        Single - It will load only the slide which should " +"be shown, always on demand." +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:3406 +msgid "Lazy Load" +msgstr "Caricamento lento" + +#: ../admin/views/templates/slider-main-options.php:3409 +msgid "Smart" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3410 +msgid "Single" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3411 +msgid "No Lazy Loading" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3418 +msgid "" +"Define SEO Optimization for the Images in the Slider, useful if Lazy Load is " +"on." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3418 +msgid "SEO Optimization" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3421 +msgid "NoScript" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3422 +msgid "NoFrame" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3472 +msgid "Problem Handlings" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3477 +msgid "Fallbacks" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:3478 +msgid "Troubleshooting" +msgstr "Risoluzione dei problemi" + +#: ../admin/views/templates/slider-main-options.php:3481 +msgid "Simplyfies the Slider on IOS4 and IE8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3481 +msgid "Simplify on IOS4/IE8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3485 +msgid "Disables the Slider and load an alternative image instead" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3485 +msgid "Use Alternative Image" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3488 +msgid "On Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3489 +msgid "On IE8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3490 +msgid "On Mobile and IE8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3494 +msgid "The image that will be loaded instead of the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3494 +msgid "Alternate Image" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3499 +msgid "" +"Turns on / off jquery noconflict mode. Try to enable this option if " +"javascript conflicts exist on the page." +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:3499 +msgid "JQuery No Conflict Mode" +msgstr "JQuery Non in modalità Conflitto" + +#: ../admin/views/templates/slider-main-options.php:3503 +msgid "" +"Try this to fix some javascript conflicts of type: TypeError: " +"tpj('#rev_slider_1_1').show().revolution is not a function" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:3503 +msgid "Put JS Includes To Body" +msgstr "Mettere JS Incluso nel corpo" + +#: ../admin/views/templates/slider-main-options.php:3512 +msgid "" +"Activate a protection against wordpress output filters that adds html blocks " +"to the shortcode output like P and BR." +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:3512 +msgid "Output Filters Protection" +msgstr "Filtri di protezione Output" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:3515 +msgid "By Compressing Output" +msgstr "Per compressione di Output" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:3516 +msgid "By Echo Output" +msgstr "Per Echo di Output" + +#: ../admin/views/templates/slider-main-options.php:3545 +msgid "Import / Export / Replace" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3549 +msgid "Import" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3550 .. +#: admin/views/templates/sliders-list.php:154 +msgid "Export" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3551 +msgid "Replace URL" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3563 +msgid "Overwrite or append the custom animations due the new imported values ?" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3563 +msgid "Custom Animations" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3568 +msgid "Overwrite or append the static styles due the new imported values ?" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3568 ../includes/operations. +#: class.php:2322 +msgid "Static Styles" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3577 +msgid "" +"Note! Custom styles will be updated if they exist. Importing slider, will " +"delete all the current slider settings and slides and replacing it with the " +"imported content." +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:3583 +msgid "Export Slider" +msgstr "Esporta Slider" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:3583 +msgid "Export with Dummy Images" +msgstr "Esporta con Immagini fittizie" + +#: ../admin/views/templates/slider-main-options.php:3589 +msgid "" +"Replace all layer and backgorund image url's. example - replace from: http:" +"//localhost" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3589 +msgid "Replace From" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3593 +msgid "" +"Replace all layer and backgorund image url's. example - replace to: http:" +"//yoursite.com" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3593 +msgid "Replace To" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3600 +msgid "Replace URL's" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:3601 +msgid "Replacing..." +msgstr "Sostituzione ..." + +#: ../admin/views/templates/slider-main-options.php:3604 +msgid "Note! The replace process is not reversible !" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:3621 +msgid "API Functions" +msgstr "Funzioni API" + +#: ../admin/views/templates/slider-main-options.php:3625 +msgid "Methods" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3626 +msgid "Events" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3629 +msgid "Call this function to pause the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3633 +msgid "Call this function to play the slider if it is paused." +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:3633 +msgid "Resume Slider" +msgstr "Riprendi Slider" + +#: ../admin/views/templates/slider-main-options.php:3637 +msgid "Switch slider to previous slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3641 +msgid "Switch slider to next slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3645 .. +#: admin/views/templates/slider-main-options.php:3649 +msgid "Switch to the slide which is defined as parameter." +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:3645 +msgid "Go To Slide" +msgstr "Vai alla Slide" + +#: ../admin/views/templates/slider-main-options.php:3649 +msgid "Go To Slide with ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3653 +msgid "Get the amount of existing slides in the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3653 +msgid "Max Slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3657 +msgid "Get the current focused slide index." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3657 +msgid "Current Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3661 +msgid "Get the previously played slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3665 +msgid "Scroll page under the slider." +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:3665 +msgid "External Scroll" +msgstr "Scroll Esterno" + +#: ../admin/views/templates/slider-main-options.php:3669 +msgid "" +"Recalculate all positions, sizing etc in the slider. This should be called " +"i.e. if Slider was invisible and becomes visible without any window resize " +"event." +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:3669 +msgid "Redraw Slider" +msgstr "Ridisegna Slider" + +#: ../admin/views/templates/slider-main-options.php:3673 +msgid "" +"Unbind all listeners, remove current animations and delete containers. Ready " +"for Garbage collection." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3673 +msgid "Kill Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3678 +msgid "Slider Loaded" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3683 +msgid "Slider swapped to an other slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3687 +msgid "Current Slide as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3689 .. +#: admin/views/templates/slider-main-options.php:3740 +msgid "Previous Slide as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3691 +msgid "Slider paused" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3696 +msgid "Slider is Playing after pause" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3701 +msgid "Video is playing in slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3705 .. +#: admin/views/templates/slider-main-options.php:3715 +msgid "The Video API to Manage Video functions" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3707 .. +#: admin/views/templates/slider-main-options.php:3717 +msgid "youtube, vimeo, html5" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:3709 .. +#: admin/views/templates/slider-main-options.php:3719 +msgid "Video Settings" +msgstr "Impostazioni Video" + +#: ../admin/views/templates/slider-main-options.php:3711 +msgid "Video stopped in slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3721 +msgid "Slider reached the 'stop at' slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3726 +msgid "Prepared for slide change" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3730 .. +#: admin/views/templates/slider-main-options.php:3738 +msgid "Current Slide as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3732 +msgid "Coming Slide as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3734 +msgid "Finnished with slide change" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3742 +msgid "Last slide starts" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3747 +msgid "Layer Events" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3750 +msgid "Layer Action (enterstage, enteredstage, leavestage,leftstage)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3752 +msgid "Layer Type (image,video,html)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3754 +msgid "Default Settings for Layer" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3756 +msgid "Layer as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3769 +msgid "Google Fonts" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:3775 +msgid "Add New Font" +msgstr "Agg. nuovi Font" + +# @ revslider +#: ../admin/views/templates/slider-main-options.php:3776 +msgid "" +"Copy the Google Font Family from http://www.google.com/fonts like: Open+Sans:400," +"700,600" +msgstr "" +"Copia le Google Font Family da http://www.google.com/fonts like: Open+Sans:400," +"700,600" + +#: ../admin/views/templates/slider-main-options.php:3831 +msgid "*Only Illustration, most changes are not visible." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:4298 +msgid "Save Settings as Preset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:4300 +msgid "Preset Name" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:4301 +msgid "Select" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:4321 +msgid "Google Font String" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:39 +msgid "Social" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:144 +msgid "Embed Slider" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:150 +msgid "Order Posts" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:163 +msgid "Export to HTML" +msgstr "" + +# @ revslider +#: ../admin/views/templates/sliders-list.php:188 +msgid "Create New Slider" +msgstr "Crea nuova Slider" + +#: ../admin/views/templates/sliders-list.php:189 +msgid "Add Template Slider" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slides-list.php:92 +msgid "Unpublish Slide" +msgstr "Slide non Pubblicata" + +# @ revslider +#: ../admin/views/templates/slides-list.php:96 +msgid "Publish Slide" +msgstr "Pubblica Slide" + +#: ../admin/views/templates/slides-list.php:115 +msgid "Slide Image - Click to change" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slides-list.php:135 +msgid "Deleting Slide..." +msgstr "Elimina Slide..." + +# @ revslider +#: ../admin/views/templates/slides-list.php:139 +msgid "Open copy / move dialog" +msgstr "Apri copia / sposta finestra di dialogo " + +# @ revslider +#: ../admin/views/templates/slides-list.php:147 +msgid "Working..." +msgstr "Sto lavorando..." + +# @ revslider +#: ../admin/views/templates/slides.php:16 ../admin/views/templates/slides.php:36 +msgid "New Slide" +msgstr "Nuova Slide" + +# @ revslider +#: ../admin/views/templates/slides.php:18 ../admin/views/templates/slides.php:38 +msgid "New Transparent Slide" +msgstr "Nuova Slide Trasparente" + +# @ revslider +#: ../admin/views/templates/slides.php:19 ../admin/views/templates/slides.php:39 +msgid "Adding Slide..." +msgstr "Sto Aggiungendo la Slide..." + +# @ revslider +#: ../admin/views/templates/slides.php:36 +msgid "Select image or multiple images to add slide or slides" +msgstr "Selezionare un'immagine o più immagini da aggiungere alla Slide o alla Slider" + +#: ../admin/views/templates/slides.php:41 +msgid "Edit Static / Global Layers" +msgstr "" + +# @ revslider +#: ../admin/views/templates/slides.php:46 +msgid "To Slider Settings" +msgstr "Impostazioni Slider" + +# @ revslider +#: ../admin/views/templates/template-selector.php:17 +msgid "Slide" +msgstr "Slide" + +#: ../admin/views/templates/template-selector.php:22 .. +#: admin/views/templates/template-slider-selector.php:20 +msgid "Revolution Base" +msgstr "" + +#: ../admin/views/templates/template-selector.php:23 +msgid "All Slides" +msgstr "" + +#: ../admin/views/templates/template-selector.php:24 +msgid "Templates" +msgstr "" + +#: ../admin/views/templates/template-selector.php:227 .. +#: admin/views/templates/template-selector.php:240 +msgid "Import Template Slide" +msgstr "" + +#: ../admin/views/templates/template-selector.php:237 .. +#: admin/views/templates/template-slider-selector.php:166 +msgid "" +"Please select the corresponding zip file from the download packages import " +"folder called" +msgstr "" + +#: ../admin/views/templates/template-slider-selector.php:159 .. +#: admin/views/templates/template-slider-selector.php:169 +msgid "Import Template Slider" +msgstr "" + +# @ revslider +#: ../admin/views/templates/wpml-selector.php:11 +msgid "Preview Slide" +msgstr "Anteprima Slide" + +# @ revslider +#: ../admin/views/templates/wpml-selector.php:41 +msgid "Choose slide language" +msgstr "Scegli Lingua della Slide" + +#: ../includes/extension.class.php:56 +msgid "Slider Revolution" +msgstr "" + +#: ../includes/extension.class.php:112 +msgid "Choose Revolution Slider" +msgstr "" + +#: ../includes/extension.class.php:116 +msgid "--- Choose Slider ---" +msgstr "" + +#: ../includes/external-sources.class.php:382 +msgid "Can't get the bearer token, check your credentials" +msgstr "" + +#: ../includes/external-sources.class.php:437 +msgid "Bearer Token is good, check your query" +msgstr "" + +#: ../includes/navigation.class.php:155 +msgid "Invalid ID" +msgstr "" + +#: ../includes/navigation.class.php:159 +msgid "Navigation could not be deleted" +msgstr "" + +#: ../includes/operations.class.php:268 ../includes/operations.class.php:339 +msgid "## Custom Animation ##" +msgstr "" + +#: ../includes/operations.class.php:270 ../includes/operations.class.php:342 +msgid "- VERSION 5.0 ANIMATIONS -" +msgstr "" + +#: ../includes/operations.class.php:292 ../includes/operations.class.php:355 +msgid "- VERSION 4.0 ANIMATIONS -" +msgstr "" + +#: ../includes/operations.class.php:313 ../includes/operations.class.php:375 +msgid "- SAVED CUSTOM ANIMATIONS -" +msgstr "" + +#: ../includes/operations.class.php:340 +msgid "Automatic Reverse" +msgstr "" + +# @ revslider +#: ../includes/operations.class.php:1248 ../includes/operations.class.php:1340 +msgid "Choose language" +msgstr "Cambia Lingua" + +# @ revslider +#: ../includes/operations.class.php:1381 +msgid "CAPTIONS CSS" +msgstr "VOCI CSS" + +# @ revslider +#: ../includes/operations.class.php:1413 +msgid "Replace image path:" +msgstr "Sostituire percorso dell'immagine:" + +# @ revslider +#: ../includes/operations.class.php:1413 +msgid "From:" +msgstr "Da:" + +# @ revslider +#: ../includes/operations.class.php:1413 +msgid "To:" +msgstr "A:" + +# @ revslider +#: ../includes/operations.class.php:1413 +msgid "Replace" +msgstr "Sostituisci" + +# @ revslider +#: ../includes/operations.class.php:1416 +msgid "Header" +msgstr "Titolo" + +# @ revslider +#: ../includes/operations.class.php:1416 ../includes/operations.class.php:1418 .. +#: includes/operations.class.php:1420 ../includes/operations.class.php:1422 +msgid "Mark to Copy" +msgstr "Marchio copiato" + +# @ revslider +#: ../includes/operations.class.php:1420 +msgid "Body" +msgstr "Corpo" + +# @ revslider +#: ../includes/operations.class.php:1422 +msgid "Script" +msgstr "Script" + +# @ revslider +#: ../includes/operations.class.php:1442 +msgid "Loading Preview..." +msgstr "Caricamento Anteprima ..." + +# @ revslider +#: ../includes/operations.class.php:1601 +msgid "Purchase Code already registered!" +msgstr "Codice di acquisto già registrato!" + +#: ../includes/operations.class.php:2003 +msgid "Overall Slider Performance" +msgstr "" + +#: ../includes/operations.class.php:2006 ../includes/operations.class.php:2096 .. +#: includes/operations.class.php:2183 ../includes/operations.class.php:2260 .. +#: includes/operations.class.php:2386 ../includes/operations.class.php:2467 +msgid "Slow" +msgstr "" + +#: ../includes/operations.class.php:2007 ../includes/operations.class.php:2097 .. +#: includes/operations.class.php:2184 ../includes/operations.class.php:2261 .. +#: includes/operations.class.php:2387 ../includes/operations.class.php:2468 +msgid "Ok" +msgstr "" + +#: ../includes/operations.class.php:2008 ../includes/operations.class.php:2098 .. +#: includes/operations.class.php:2185 ../includes/operations.class.php:2262 .. +#: includes/operations.class.php:2388 ../includes/operations.class.php:2469 +msgid "Fast" +msgstr "" + +#: ../includes/operations.class.php:2014 ../includes/operations.class.php:2029 .. +#: includes/operations.class.php:2044 +msgid "Load Speed UMTS:" +msgstr "" + +#: ../includes/operations.class.php:2018 ../includes/operations.class.php:2033 .. +#: includes/operations.class.php:2048 +msgid "Load Speed DSL:" +msgstr "" + +#: ../includes/operations.class.php:2022 ../includes/operations.class.php:2037 .. +#: includes/operations.class.php:2052 +msgid "Load Speed T1:" +msgstr "" + +#: ../includes/operations.class.php:2059 +msgid "Total Slider Size:" +msgstr "" + +#: ../includes/operations.class.php:2064 +msgid "Preloaded Slides Size:" +msgstr "" + +#: ../includes/operations.class.php:2076 +msgid "Need Some Attention" +msgstr "" + +#: ../includes/operations.class.php:2093 +msgid "Image Performance" +msgstr "" + +#: ../includes/operations.class.php:2105 +msgid "Images Loaded:" +msgstr "" + +#: ../includes/operations.class.php:2110 ../includes/operations.class.php:2202 .. +#: includes/operations.class.php:2273 ../includes/operations.class.php:2399 .. +#: includes/operations.class.php:2480 +msgid "Hide Details" +msgstr "" + +#: ../includes/operations.class.php:2110 ../includes/operations.class.php:2110 .. +#: includes/operations.class.php:2202 ../includes/operations.class.php:2202 .. +#: includes/operations.class.php:2273 ../includes/operations.class.php:2273 .. +#: includes/operations.class.php:2399 ../includes/operations.class.php:2399 .. +#: includes/operations.class.php:2480 ../includes/operations.class.php:2480 +msgid "Show Details" +msgstr "" + +#: ../includes/operations.class.php:2137 ../includes/operations.class.php:2220 +msgid "extern" +msgstr "" + +#: ../includes/operations.class.php:2139 ../includes/operations.class.php:2222 +msgid "missing" +msgstr "" + +#: ../includes/operations.class.php:2180 +msgid "Video Performance" +msgstr "" + +#: ../includes/operations.class.php:2192 +msgid "Videos Loaded (max):" +msgstr "" + +#: ../includes/operations.class.php:2198 +msgid "Unknown" +msgstr "" + +#: ../includes/operations.class.php:2257 +msgid "CSS Performance" +msgstr "" + +#: ../includes/operations.class.php:2269 +msgid "CSS Loaded:" +msgstr "" + +#: ../includes/operations.class.php:2294 +msgid "css/settings.css" +msgstr "" + +#: ../includes/operations.class.php:2358 +msgid "Dynamic Styles" +msgstr "" + +#: ../includes/operations.class.php:2383 +msgid "jQuery Performance" +msgstr "" + +#: ../includes/operations.class.php:2395 +msgid "jQuery Loaded:" +msgstr "" + +#: ../includes/operations.class.php:2464 +msgid "Google Fonts Performance" +msgstr "" + +#: ../includes/operations.class.php:2476 +msgid "Fonts Loaded:" +msgstr "" + +# @ revslider +#: ../includes/output.class.php:273 +msgid "" +"No slides found, please add at least one Slide Template to the choosen " +"Template Slider." +msgstr "" +"Non sono state trovate Slides, si prega di aggiungere almeno un Slide " +"Templete scelto dal Template Slider." + +# @ revslider +#: ../includes/output.class.php:275 +msgid "No slides found, please add some slides" +msgstr "Non sono state trovate Slides, per favore aggiungi alcune Slides" + +# @ revslider +#: ../includes/output.class.php:4020 +msgid "Revolution Slider Error" +msgstr "Revolution Slider ERRORE" + +#: ../includes/slide.class.php:205 +msgid "Source must be from Stream" +msgstr "" + +#: ../includes/slider.class.php:810 +msgid "Please select the correct zip file" +msgstr "" + +#: ../includes/slider.class.php:827 +msgid "Please select the correct zip file, checksum failed!" +msgstr "" + +# @ revslider +#: ../includes/slider.class.php:903 +msgid "animations imported!" +msgstr "Animazioni Importate!" + +# @ revslider +#: ../includes/slider.class.php:905 +msgid "" +"no custom animations found, if slider uses custom animations, the provided " +"export may be broken..." +msgstr "" +"Non sono state trovate animazioni personalizzate, se la Slide utilizza " +"animazioni personalizzate, l'esportazione condizionata può essere corotta ..." + +# @ revslider +#: ../includes/slider.class.php:963 +msgid "dynamic styles imported!" +msgstr "Stili dinamici Importati!" + +# @ revslider +#: ../includes/slider.class.php:965 +msgid "" +"no dynamic styles found, if slider uses dynamic styles, the provided export " +"may be broken..." +msgstr "" +"nessun stile dinamico è stato trovato, se la Slider utilizza stili dinamici, " +"l'esportazione condizionata può essere danneggiata ..." + +# @ default +#: ../includes/slider.class.php:1050 ../includes/slider.class.php:1083 .. +#: includes/slider.class.php:1202 ../includes/slider.class.php:1235 +msgid " not found!
        " +msgstr " non trovato!
        " + +#: ../includes/slider.class.php:1327 +msgid "could not find correct Slide to copy, please try again." +msgstr "" + +#: ../includes/slider.class.php:1485 ../includes/slider.class.php:1494 +msgid "Slide could not be duplicated" +msgstr "" + +#: ../includes/slider.class.php:1502 +msgid "Slide could not be copied" +msgstr "" + +#: ../includes/slider.class.php:1810 +msgid "Failed to load Stream" +msgstr "" + +# @ revslider +#: ../includes/widget.class.php:15 +msgid "Displays a revolution slider on the page" +msgstr "Visualizza una revolution slider nella pagina" + +# @ revslider +#: ../includes/widget.class.php:16 +msgid "Revolution Slider" +msgstr "Revolution Slider" + +# @ revslider +#: ../includes/widget.class.php:30 +msgid "No sliders found, Please create a slider" +msgstr "Non sono state trovate sliders, per favore creane una" + +# @ revslider +#: ../includes/widget.class.php:69 +msgid "Home Page Only" +msgstr "Solo nella Home Page" + +# @ revslider +#: ../includes/widget.class.php:72 +msgid "Pages: (example: 2,10)" +msgstr "Pagine: (esempio: 2,10)" + +#: ../includes/framework/base-admin.class.php:267 +msgid "Wrong Request" +msgstr "" + +#: ../includes/framework/base.class.php:219 +msgid "Original" +msgstr "" + +#: ../includes/framework/base.class.php:220 ../includes/framework/base.class.php: +#: 267 ../includes/framework/base.class.php:282 +msgid "Large" +msgstr "" + +#: ../includes/framework/base.class.php:221 +msgid "Large Square" +msgstr "" + +#: ../includes/framework/base.class.php:222 ../includes/framework/base.class.php: +#: 257 ../includes/framework/base.class.php:266 ../includes/framework/base.class. +#: php:281 +msgid "Medium" +msgstr "" + +#: ../includes/framework/base.class.php:223 +msgid "Medium 800" +msgstr "" + +#: ../includes/framework/base.class.php:224 +msgid "Medium 640" +msgstr "" + +#: ../includes/framework/base.class.php:225 ../includes/framework/base.class.php: +#: 265 +msgid "Small" +msgstr "" + +#: ../includes/framework/base.class.php:226 +msgid "Small 320" +msgstr "" + +# @ revslider +#: ../includes/framework/base.class.php:227 ../includes/framework/base.class.php: +#: 234 ../includes/framework/base.class.php:280 +msgid "Thumbnail" +msgstr "Miniatura" + +#: ../includes/framework/base.class.php:228 +msgid "Square" +msgstr "" + +#: ../includes/framework/base.class.php:233 ../includes/framework/base.class.php: +#: 240 +msgid "Standard Resolution" +msgstr "" + +#: ../includes/framework/base.class.php:235 +msgid "Low Resolution" +msgstr "" + +#: ../includes/framework/base.class.php:245 +msgid "Size 0" +msgstr "" + +#: ../includes/framework/base.class.php:246 +msgid "Size 1" +msgstr "" + +#: ../includes/framework/base.class.php:247 +msgid "Size 2" +msgstr "" + +#: ../includes/framework/base.class.php:248 +msgid "Size 3" +msgstr "" + +#: ../includes/framework/base.class.php:249 +msgid "Size 4" +msgstr "" + +#: ../includes/framework/base.class.php:250 +msgid "Size 5" +msgstr "" + +#: ../includes/framework/base.class.php:251 +msgid "Size 6" +msgstr "" + +#: ../includes/framework/base.class.php:256 +msgid "Default" +msgstr "" + +#: ../includes/framework/base.class.php:258 +msgid "High" +msgstr "" + +#: ../includes/framework/base.class.php:259 +msgid "Standard" +msgstr "" + +#: ../includes/framework/base.class.php:260 +msgid "Max. Res." +msgstr "" + +#: ../includes/framework/base.class.php:279 +msgid "Original Size" +msgstr "" + +# @ revslider +#: ../includes/framework/em-integration.class.php:32 +msgid "All Events" +msgstr "Tutti gli Eventi" + +# @ revslider +#: ../includes/framework/em-integration.class.php:33 +msgid "Today" +msgstr "Oggi" + +# @ revslider +#: ../includes/framework/em-integration.class.php:34 +msgid "Tomorrow" +msgstr "Domani" + +# @ revslider +#: ../includes/framework/em-integration.class.php:35 +msgid "Future" +msgstr "Futuri" + +# @ revslider +#: ../includes/framework/em-integration.class.php:36 +msgid "Past" +msgstr "Dopo" + +# @ revslider +#: ../includes/framework/em-integration.class.php:37 +msgid "This Month" +msgstr "Questo Mese" + +# @ revslider +#: ../includes/framework/em-integration.class.php:38 +msgid "Next Month" +msgstr "Mese prossimo" + +# @ revslider +#: ../includes/framework/em-integration.class.php:168 +msgid "Event Start Date" +msgstr "Data Inizio Evento" + +# @ revslider +#: ../includes/framework/em-integration.class.php:169 +msgid "Event End Date" +msgstr "Data Fine Evento" + +# @ revslider +#: ../includes/framework/functions-wordpress.class.php:886 +#, php-format +msgid "View all posts in %s" +msgstr "Vedi tutti i posts in %s" + +# @ revslider +#: ../includes/framework/wpml.class.php:46 ../includes/framework/wpml.class.php:162 +msgid "All Languages" +msgstr "Tutte le Lingue" diff --git a/plugins/revslider/languages/revslider-pl_PL.mo b/plugins/revslider/languages/revslider-pl_PL.mo new file mode 100644 index 0000000..8ded7cf Binary files /dev/null and b/plugins/revslider/languages/revslider-pl_PL.mo differ diff --git a/plugins/revslider/languages/revslider-pl_PL.po b/plugins/revslider/languages/revslider-pl_PL.po new file mode 100644 index 0000000..55e4f51 --- /dev/null +++ b/plugins/revslider/languages/revslider-pl_PL.po @@ -0,0 +1,7341 @@ +msgid "" +msgstr "" +"Project-Id-Version: Revolution Slider\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: Mon Jul 13 2015 10:02:33 GMT+0200 (CEST)\n" +"PO-Revision-Date: Tue Jul 14 2015 08:41:26 GMT+0200 (CEST)\n" +"Last-Translator: admin \n" +"Language-Team: \n" +"Language: Polish\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10 >= 2 && n%10<=4 " +"&&(n%100<10||n%100 >= 20)? 1 : 2)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Generator: Loco - https://localise.biz/\n" +"X-Poedit-Language: \n" +"X-Poedit-Country: \n" +"X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;" +"__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;" +"_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;" +"esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;" +"esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n" +"X-Poedit-Basepath: .\n" +"X-Poedit-Bookmarks: \n" +"X-Poedit-SearchPath-0: .\n" +"X-Textdomain-Support: yes\n" +"X-Loco-Target-Locale: pl_PL" + +#: ../revslider.php:170 +msgid "Include RevSlider libraries globally (all pages/posts)" +msgstr "" + +#: ../revslider.php:171 +msgid "Pages to include RevSlider libraries" +msgstr "Strony do których dołączyc biblioteki RevSlider" + +#: ../revslider.php:172 +msgid "" +"If you want to use the PHP function \"putRevSlider\" in your code please make " +"sure to check \" " +msgstr "" + +#: ../revslider.php:172 +msgid "" +" \" in the backend's \"General Settings\" (top right panel).

        Or add " +"the current page to the \"" +msgstr "" + +#: ../revslider.php:172 +msgid "\" option box." +msgstr "" + +#: ../revslider.php:212 +msgid "Revolution Slider Error:" +msgstr "" + +#: ../admin/revslider-admin.class.php:62 ../admin/views/navigation-editor.php:28 +msgid "Navigation Editor" +msgstr "" + +#: ../admin/revslider-admin.class.php:188 +msgid "-- wrong alias -- " +msgstr "" + +#: ../admin/revslider-admin.class.php:189 +msgid "Navigation Bullets and Arrows are now set to none." +msgstr "" + +#: ../admin/revslider-admin.class.php:190 +msgid "Create Template" +msgstr "" + +#: ../admin/revslider-admin.class.php:191 +msgid "Do you really want to delete" +msgstr "" + +#: ../admin/revslider-admin.class.php:192 +msgid "Are you sure to replace the urls?" +msgstr "" + +#: ../admin/revslider-admin.class.php:193 +msgid "" +"Set selected settings on all Slides of this Slider? (This will be saved " +"immediately)" +msgstr "" + +#: ../admin/revslider-admin.class.php:194 ../admin/views/slide-overview.php:174 +msgid "Select Slide Image" +msgstr "" + +#: ../admin/revslider-admin.class.php:195 +msgid "Select Slide Video" +msgstr "" + +#: ../admin/revslider-admin.class.php:196 +msgid "Show Slide Options" +msgstr "" + +#: ../admin/revslider-admin.class.php:197 +msgid "Hide Slide Options" +msgstr "" + +#: ../admin/revslider-admin.class.php:198 ../admin/views/slide-overview.php:168 .. +#: admin/views/system/dialog-copy-move.php:3 ../admin/views/templates/slider- +#: main-options.php:1309 ../admin/views/templates/slider-main-options.php:4280 .. +#: admin/views/templates/slides.php:21 ../admin/views/templates/slides.php:43 +msgid "Close" +msgstr "Zamknij" + +#: ../admin/revslider-admin.class.php:199 +msgid "Really update global styles?" +msgstr "" + +#: ../admin/revslider-admin.class.php:200 +msgid "Global Styles Editor" +msgstr "" + +#: ../admin/revslider-admin.class.php:201 ../admin/revslider-admin.class.php:239 . +#: ./admin/views/templates/slider-main-options.php:4301 +msgid "Select Image" +msgstr "" + +#: ../admin/revslider-admin.class.php:202 +msgid "Video Not Found!" +msgstr "" + +#: ../admin/revslider-admin.class.php:203 +msgid "Handle has to be at least three character long" +msgstr "" + +#: ../admin/revslider-admin.class.php:204 +msgid "Really change font settings?" +msgstr "" + +#: ../admin/revslider-admin.class.php:205 +msgid "Really delete font?" +msgstr "" + +#: ../admin/revslider-admin.class.php:206 +msgid "Class already exists, overwrite?" +msgstr "" + +#: ../admin/revslider-admin.class.php:207 +msgid "Class must be a valid CSS class name" +msgstr "" + +#: ../admin/revslider-admin.class.php:208 +msgid "Really overwrite Class?" +msgstr "" + +#: ../admin/revslider-admin.class.php:209 +msgid "Really delete Class" +msgstr "" + +#: ../admin/revslider-admin.class.php:210 +msgid "? This can't be undone!" +msgstr "" + +#: ../admin/revslider-admin.class.php:211 +msgid "This class does not exist." +msgstr "" + +#: ../admin/revslider-admin.class.php:212 +msgid "" +"Making changes to these settings will probably overwrite advanced settings. " +"Continue?" +msgstr "" + +#: ../admin/revslider-admin.class.php:213 +msgid "Select Static Layer Image" +msgstr "" + +#: ../admin/revslider-admin.class.php:214 +msgid "Select Layer Image" +msgstr "" + +#: ../admin/revslider-admin.class.php:215 +msgid "Do you really want to delete all the layers?" +msgstr "" + +#: ../admin/revslider-admin.class.php:216 +msgid "Layer Animation Editor" +msgstr "" + +#: ../admin/revslider-admin.class.php:217 +msgid "Animation already exists, overwrite?" +msgstr "" + +#: ../admin/revslider-admin.class.php:218 +msgid "Really overwrite animation?" +msgstr "" + +#: ../admin/revslider-admin.class.php:219 +msgid "Default animations can't be deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:220 +msgid "Must be greater than start time" +msgstr "" + +#: ../admin/revslider-admin.class.php:221 +msgid "Selected layer not set" +msgstr "" + +#: ../admin/revslider-admin.class.php:222 +msgid "Edit Layer Start" +msgstr "" + +#: ../admin/revslider-admin.class.php:223 +msgid "Edit Layer End" +msgstr "" + +#: ../admin/revslider-admin.class.php:224 +msgid "Default Animations can't be renamed" +msgstr "" + +#: ../admin/revslider-admin.class.php:225 +msgid "Animationname already existing" +msgstr "" + +#: ../admin/revslider-admin.class.php:226 +msgid "CSS classname already existing" +msgstr "" + +#: ../admin/revslider-admin.class.php:227 +msgid "Original CSS classname not found" +msgstr "" + +#: ../admin/revslider-admin.class.php:228 +msgid "Enter a correct class name" +msgstr "" + +#: ../admin/revslider-admin.class.php:229 +msgid "Class not found in database" +msgstr "" + +#: ../admin/revslider-admin.class.php:230 +msgid "CSS classname not found" +msgstr "" + +#: ../admin/revslider-admin.class.php:231 +msgid "Delete this caption? This may affect other Slider" +msgstr "" + +#: ../admin/revslider-admin.class.php:232 +msgid "" +"This will update the Class with the current set Style settings, this may " +"affect other Sliders. Proceed?" +msgstr "" + +#: ../admin/revslider-admin.class.php:233 +msgid "Template will have the state of the last save, proceed?" +msgstr "" + +#: ../admin/revslider-admin.class.php:234 +msgid "Please enter a Slide title" +msgstr "" + +#: ../admin/revslider-admin.class.php:235 +msgid "Please Wait a Moment" +msgstr "" + +#: ../admin/revslider-admin.class.php:236 ../admin/views/templates/slide-selector. +#: php:192 ../admin/views/templates/slides-list.php:146 +msgid "Copy / Move" +msgstr "" + +#: ../admin/revslider-admin.class.php:237 +msgid "Preset Loaded" +msgstr "" + +#: ../admin/revslider-admin.class.php:238 ../admin/views/templates/slide-selector. +#: php:218 +msgid "Add Bulk Slides" +msgstr "" + +#: ../admin/revslider-admin.class.php:240 ../admin/views/navigation-editor.php:38 +#: ../admin/views/templates/slider-main-options.php:2310 +msgid "Arrows" +msgstr "" + +#: ../admin/revslider-admin.class.php:241 ../admin/views/navigation-editor.php:39 +#: ../admin/views/templates/slider-main-options.php:2311 +msgid "Bullets" +msgstr "" + +#: ../admin/revslider-admin.class.php:242 ../admin/views/templates/slider-main- +#: options.php:2588 +msgid "Thumbnails" +msgstr "Miniatury" + +#: ../admin/revslider-admin.class.php:243 ../admin/views/navigation-editor.php:41 +#: ../admin/views/templates/slider-main-options.php:2312 .. +#: admin/views/templates/slider-main-options.php:2760 +msgid "Tabs" +msgstr "" + +#: ../admin/revslider-admin.class.php:244 +msgid "Delete this Navigation?" +msgstr "" + +#: ../admin/revslider-admin.class.php:245 +msgid "Navigation name could not be updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:246 +msgid "Name too short, at least 3 letters between a-zA-z needed" +msgstr "" + +#: ../admin/revslider-admin.class.php:247 +msgid "Navigation name already exists, please choose a different name" +msgstr "" + +#: ../admin/revslider-admin.class.php:248 +msgid "Remove current element from Navigation?" +msgstr "" + +#: ../admin/revslider-admin.class.php:249 +msgid "This navigation element does not exist, create one?" +msgstr "" + +#: ../admin/revslider-admin.class.php:250 +msgid "Overwrite current animation?" +msgstr "" + +#: ../admin/revslider-admin.class.php:251 +msgid "Default animations can't be changed" +msgstr "" + +#: ../admin/revslider-admin.class.php:252 +msgid "Animation already existing with given handle, please choose a different name." +msgstr "" + +#: ../admin/revslider-admin.class.php:253 +msgid "Really delete animation:" +msgstr "" + +#: ../admin/revslider-admin.class.php:254 +msgid "This will reset the navigation, continue?" +msgstr "" + +#: ../admin/revslider-admin.class.php:255 +msgid "Preset name already exists, please choose a different name" +msgstr "" + +#: ../admin/revslider-admin.class.php:256 +msgid "Really delete this preset?" +msgstr "" + +#: ../admin/revslider-admin.class.php:257 +msgid "Maybe wrong YoutTube ID given" +msgstr "" + +#: ../admin/revslider-admin.class.php:258 +msgid "Preset not found" +msgstr "" + +#: ../admin/revslider-admin.class.php:259 +msgid "Cover Image need to be set for videos" +msgstr "" + +#: ../admin/revslider-admin.class.php:260 +msgid "Really remove this action?" +msgstr "" + +#: ../admin/revslider-admin.class.php:261 +msgid "Layer is triggered by " +msgstr "" + +#: ../admin/revslider-admin.class.php:262 +msgid " due to action: " +msgstr "" + +#: ../admin/revslider-admin.class.php:263 +msgid "layer:" +msgstr "" + +#: ../admin/revslider-admin.class.php:264 +msgid "Start Layer \"in\" animation" +msgstr "" + +#: ../admin/revslider-admin.class.php:265 +msgid "Start Layer \"out\" animation" +msgstr "" + +#: ../admin/revslider-admin.class.php:266 ../admin/views/templates/slide-stage. +#: php:2257 +msgid "Start Video" +msgstr "" + +#: ../admin/revslider-admin.class.php:267 ../admin/views/templates/slide-stage. +#: php:2258 +msgid "Stop Video" +msgstr "" + +#: ../admin/revslider-admin.class.php:268 ../admin/views/templates/slide-stage. +#: php:2256 +msgid "Toggle Layer Animation" +msgstr "" + +#: ../admin/revslider-admin.class.php:269 ../admin/views/templates/slide-stage. +#: php:2259 +msgid "Toggle Video" +msgstr "" + +#: ../admin/revslider-admin.class.php:270 ../admin/views/templates/slider-main- +#: options.php:3661 +msgid "Last Slide" +msgstr "" + +#: ../admin/revslider-admin.class.php:271 ../admin/views/templates/slide-stage. +#: php:2260 +msgid "Simulate Click" +msgstr "" + +#: ../admin/revslider-admin.class.php:272 +msgid "Toogle Class" +msgstr "" + +#: ../admin/revslider-admin.class.php:273 +msgid "Copy hover styles to idle?" +msgstr "" + +#: ../admin/revslider-admin.class.php:274 +msgid "Copy idle styles to hover?" +msgstr "" + +#: ../admin/revslider-admin.class.php:275 +msgid "Please select at least one device type" +msgstr "" + +#: ../admin/revslider-admin.class.php:276 +msgid "Please select an existing Style Template" +msgstr "" + +#: ../admin/revslider-admin.class.php:277 +msgid "Can not remove last transition!" +msgstr "" + +#: ../admin/revslider-admin.class.php:278 +msgid "Given animation name is a default animation. These can not be changed." +msgstr "" + +#: ../admin/revslider-admin.class.php:279 +msgid "Animation exists, override existing animation?" +msgstr "" + +#: ../admin/revslider-admin.class.php:289 +msgid "(never show this message again)  X" +msgstr "" + +#: ../admin/revslider-admin.class.php:289 +msgid "" +"Hi! Would you like to activate your version of Revolution Slider to receive " +"live updates & get premium support? This is optional and not needed if the " +"slider came bundled with a theme. " +msgstr "" + +#: ../admin/revslider-admin.class.php:341 +msgid "Close & don't show againX" +msgstr "" + +#: ../admin/revslider-admin.class.php:413 +msgid "Choose Slide Template" +msgstr "" + +#: ../admin/revslider-admin.class.php:509 +msgid "importing slider settings and data..." +msgstr "" + +#: ../admin/revslider-admin.class.php:525 ../admin/revslider-admin.class.php:546 . +#: ./admin/revslider-admin.class.php:570 +msgid "Go Back" +msgstr "" + +#: ../admin/revslider-admin.class.php:528 ../admin/revslider-admin.class.php:572 +msgid "Slider Import Success, redirecting..." +msgstr "" + +#: ../admin/revslider-admin.class.php:541 +msgid "importing template slider settings and data..." +msgstr "" + +#: ../admin/revslider-admin.class.php:545 +msgid "ID missing, something went wrong. Please try again!" +msgstr "" + +#: ../admin/revslider-admin.class.php:605 ../admin/revslider-admin.class.php:1299 +#: ../admin/revslider-admin.class.php:1305 +msgid "Slider not found" +msgstr "" + +#: ../admin/revslider-admin.class.php:617 +msgid "Slider setting could not be changed" +msgstr "" + +#: ../admin/revslider-admin.class.php:649 ../includes/operations.class.php:3648 +msgid "Missing values to add preset" +msgstr "" + +#: ../admin/revslider-admin.class.php:657 +msgid "Preset created" +msgstr "" + +#: ../admin/revslider-admin.class.php:666 ../includes/operations.class.php:3670 +msgid "Missing values to remove preset" +msgstr "" + +#: ../admin/revslider-admin.class.php:674 +msgid "Preset deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:720 +msgid "Slider created" +msgstr "" + +#: ../admin/revslider-admin.class.php:726 +msgid "Slider updated" +msgstr "Zaktualizowano suwak" + +#: ../admin/revslider-admin.class.php:735 +msgid "Template can't be deleted, it is still being used by the following Sliders: " +msgstr "" + +#: ../admin/revslider-admin.class.php:738 ../admin/revslider-admin.class.php:740 +msgid "Slider deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:748 ../admin/revslider-admin.class.php:823 +msgid "Success! Refreshing page..." +msgstr "" + +#: ../admin/revslider-admin.class.php:756 +msgid "Slide Created" +msgstr "Utworzono slajd" + +#: ../admin/revslider-admin.class.php:758 +msgid "Slides Created" +msgstr "" + +#: ../admin/revslider-admin.class.php:768 +msgid "Slide Created, redirecting..." +msgstr "" + +#: ../admin/revslider-admin.class.php:774 +msgid "Missing redirect ID!" +msgstr "" + +#: ../admin/revslider-admin.class.php:781 +msgid "Slide copied to current Slider, redirecting..." +msgstr "" + +#: ../admin/revslider-admin.class.php:787 +msgid "Slide updated" +msgstr "Zaktualizowano slajd" + +#: ../admin/revslider-admin.class.php:791 +msgid "Static Global Layers updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:797 +msgid "Post deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:799 +msgid "Slide deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:812 ../admin/revslider-admin.class.php:814 +msgid "Slide duplicated" +msgstr "" + +#: ../admin/revslider-admin.class.php:821 +msgid "Success!" +msgstr "" + +#: ../admin/revslider-admin.class.php:829 +msgid "No valid Slide ID given" +msgstr "" + +#: ../admin/revslider-admin.class.php:833 ../admin/revslider-admin.class.php:837 +msgid "No valid title given" +msgstr "" + +#: ../admin/revslider-admin.class.php:844 +msgid "Could not save Slide as Template" +msgstr "" + +#: ../admin/revslider-admin.class.php:860 +msgid "Slide added to Templates" +msgstr "" + +#: ../admin/revslider-admin.class.php:888 ../admin/revslider-admin.class.php:910 . +#: ./admin/revslider-admin.class.php:931 ../admin/revslider-admin.class.php:980 +msgid "CSS saved" +msgstr "" + +#: ../admin/revslider-admin.class.php:891 ../admin/revslider-admin.class.php:913 . +#: ./admin/revslider-admin.class.php:934 +msgid "CSS could not be saved" +msgstr "" + +#: ../admin/revslider-admin.class.php:952 +msgid "Class name renamed" +msgstr "" + +#: ../admin/revslider-admin.class.php:968 +msgid "Style deleted!" +msgstr "" + +#: ../admin/revslider-admin.class.php:984 ../admin/revslider-admin.class.php:988 . +#: ./admin/revslider-admin.class.php:992 +msgid "Animation saved" +msgstr "" + +#: ../admin/revslider-admin.class.php:996 +msgid "Animation deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:1000 +msgid "Order updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1004 +msgid "Title updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1009 +msgid "Slide changed" +msgstr "" + +#: ../admin/revslider-admin.class.php:1033 +msgid "General settings updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1037 +msgid "Sortby updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1041 +msgid "Image urls replaced" +msgstr "" + +#: ../admin/revslider-admin.class.php:1045 +msgid "Settings in all Slides changed" +msgstr "" + +#: ../admin/revslider-admin.class.php:1052 +msgid "The API key, the Purchase Code and the Username need to be set!" +msgstr "" + +#: ../admin/revslider-admin.class.php:1057 +msgid "Purchase Code Successfully Activated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1059 +msgid "Purchase Code is invalid" +msgstr "" + +#: ../admin/revslider-admin.class.php:1066 +msgid "Successfully removed validation" +msgstr "" + +#: ../admin/revslider-admin.class.php:1068 +msgid "Could not remove Validation!" +msgstr "" + +#: ../admin/revslider-admin.class.php:1073 ../admin/revslider-admin.class.php:1080 +msgid "." +msgstr "" + +#: ../admin/revslider-admin.class.php:1086 +msgid "Setting Changed!" +msgstr "" + +#: ../admin/revslider-admin.class.php:1091 +msgid "No ID given" +msgstr "" + +#: ../admin/revslider-admin.class.php:1101 ../admin/revslider-admin.class.php:1119 +msgid "Invalid Email" +msgstr "" + +#: ../admin/revslider-admin.class.php:1104 +msgid "Success! Please check your Emails to finish the subscribtion" +msgstr "" + +#: ../admin/revslider-admin.class.php:1107 ../admin/revslider-admin.class.php:1125 +msgid "Invalid Email/Could not connect to the Newsletter server" +msgstr "" + +#: ../admin/revslider-admin.class.php:1110 ../admin/revslider-admin.class.php:1128 +msgid "No Email given" +msgstr "" + +#: ../admin/revslider-admin.class.php:1122 +msgid "Success! Please check your Emails to finish the process" +msgstr "" + +#: ../admin/revslider-admin.class.php:1148 +msgid "Navigation saved/updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1156 +msgid "Navigations updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1167 +msgid "Navigation deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:1171 +msgid "Wrong ID given" +msgstr "" + +#: ../admin/revslider-admin.class.php:1178 +msgid "Successfully fetched Facebook albums" +msgstr "" + +#: ../admin/revslider-admin.class.php:1181 +msgid "Could not fetch Facebook albums" +msgstr "" + +#: ../admin/revslider-admin.class.php:1186 +msgid "Cleared Albums" +msgstr "" + +#: ../admin/revslider-admin.class.php:1195 +msgid "Successfully fetched flickr photosets" +msgstr "" + +#: ../admin/revslider-admin.class.php:1198 +msgid "Could not fetch flickr photosets" +msgstr "" + +#: ../admin/revslider-admin.class.php:1204 +msgid "Cleared Photosets" +msgstr "" + +#: ../admin/revslider-admin.class.php:1207 +msgid "No User URL - Could not fetch flickr photosets" +msgstr "" + +#: ../admin/revslider-admin.class.php:1211 +msgid "No API KEY - Could not fetch flickr photosets" +msgstr "" + +#: ../admin/revslider-admin.class.php:1220 +msgid "Successfully fetched YouTube playlists" +msgstr "" + +#: ../admin/revslider-admin.class.php:1223 +msgid "Could not fetch YouTube playlists" +msgstr "" + +#: ../admin/revslider-admin.class.php:1309 +msgid "No Data Received" +msgstr "" + +#: ../admin/revslider-admin.class.php:1319 +msgid "Loading Error" +msgstr "" + +#: ../admin/revslider-admin.class.php:1321 +msgid "Loading Error: " +msgstr "" + +#: ../admin/views/master-view.php:55 ../admin/views/system/validation.php:52 +msgid "Please Wait..." +msgstr "" + +#: ../admin/views/navigation-editor.php:33 +msgid "Select the Navigation Category to Edit" +msgstr "" + +#: ../admin/views/navigation-editor.php:33 +msgid "Add New" +msgstr "" + +#: ../admin/views/navigation-editor.php:36 +msgid "#ID" +msgstr "" + +#: ../admin/views/navigation-editor.php:37 +msgid "Skin Name" +msgstr "" + +#: ../admin/views/navigation-editor.php:40 ../admin/views/templates/slider-main- +#: options.php:2313 +msgid "Thumbs" +msgstr "" + +#: ../admin/views/navigation-editor.php:42 ../admin/views/navigation-editor.php: +#: 67 ../admin/views/templates/slide-stage.php:34 +msgid "Actions" +msgstr "Akcja" + +#: ../admin/views/navigation-editor.php:58 +msgid "Editing" +msgstr "" + +#: ../admin/views/navigation-editor.php:58 ../admin/views/system/dialog-video.php: +#: 229 +msgid "Remove" +msgstr "" + +#: ../admin/views/navigation-editor.php:61 +msgid "Markup" +msgstr "" + +#: ../admin/views/navigation-editor.php:69 ../admin/views/navigation-editor.php: +#: 70 ../admin/views/navigation-editor.php:71 ../admin/views/navigation-editor. +#: php:72 +msgid "Reset Defaults" +msgstr "" + +#: ../admin/views/navigation-editor.php:73 +msgid "Parameters" +msgstr "" + +#: ../admin/views/navigation-editor.php:75 ../admin/views/templates/slide-general- +#: settings.php:476 +msgid "Slide Title" +msgstr "Tytuł slajdu" + +#: ../admin/views/navigation-editor.php:76 +msgid "Slide Description" +msgstr "" + +#: ../admin/views/navigation-editor.php:80 +msgid "Parameter " +msgstr "" + +#: ../admin/views/navigation-editor.php:94 ../includes/operations.class.php:1418 +msgid "CSS" +msgstr "" + +#: ../admin/views/navigation-editor.php:100 +msgid "Style Helper" +msgstr "" + +#: ../admin/views/navigation-editor.php:102 +msgid "Color Value" +msgstr "" + +#: ../admin/views/navigation-editor.php:106 ../admin/views/navigation-editor.php: +#: 120 ../admin/views/navigation-editor.php:138 ../admin/views/navigation-editor. +#: php:154 ../admin/views/navigation-editor.php:170 ../admin/views/navigation- +#: editor.php:184 ../admin/views/templates/template-selector.php:17 .. +#: admin/views/templates/template-slider-selector.php:15 +msgid "Add" +msgstr "" + +#: ../admin/views/navigation-editor.php:109 ../admin/views/templates/slide-stage. +#: php:2157 ../admin/views/templates/slider-main-options.php:3105 +msgid "Border Radius" +msgstr "" + +#: ../admin/views/navigation-editor.php:111 +msgid "Top Left" +msgstr "" + +#: ../admin/views/navigation-editor.php:113 +msgid "Top Right" +msgstr "" + +#: ../admin/views/navigation-editor.php:115 +msgid "Bottom Right" +msgstr "" + +#: ../admin/views/navigation-editor.php:117 +msgid "Bottom Left" +msgstr "" + +#: ../admin/views/navigation-editor.php:123 ../admin/views/templates/slide-stage. +#: php:244 ../admin/views/templates/slide-stage.php:512 .. +#: admin/views/templates/slide-stage.php:2005 ../admin/views/templates/slide- +#: stage.php:2070 ../admin/views/templates/slide-stage.php:2136 +msgid "Border" +msgstr "" + +#: ../admin/views/navigation-editor.php:125 ../admin/views/templates/slider-main- +#: options.php:1965 ../admin/views/templates/slider-main-options.php:2397 .. +#: admin/views/templates/slider-main-options.php:2427 .. +#: admin/views/templates/slider-main-options.php:2540 .. +#: admin/views/templates/slider-main-options.php:2710 .. +#: admin/views/templates/slider-main-options.php:2878 .. +#: admin/views/templates/slider-main-options.php:3213 +msgid "Top" +msgstr "Góra" + +#: ../admin/views/navigation-editor.php:127 ../admin/views/templates/slide-stage. +#: php:282 ../admin/views/templates/slider-main-options.php:2175 .. +#: admin/views/templates/slider-main-options.php:2390 .. +#: admin/views/templates/slider-main-options.php:2419 .. +#: admin/views/templates/slider-main-options.php:2534 .. +#: admin/views/templates/slider-main-options.php:2704 .. +#: admin/views/templates/slider-main-options.php:2872 .. +#: admin/views/templates/slider-main-options.php:3207 +msgid "Right" +msgstr "Prawa" + +#: ../admin/views/navigation-editor.php:129 ../admin/views/templates/slider-main- +#: options.php:1966 ../admin/views/templates/slider-main-options.php:2399 .. +#: admin/views/templates/slider-main-options.php:2429 .. +#: admin/views/templates/slider-main-options.php:2542 .. +#: admin/views/templates/slider-main-options.php:2712 .. +#: admin/views/templates/slider-main-options.php:2880 .. +#: admin/views/templates/slider-main-options.php:3215 +msgid "Bottom" +msgstr "Dół" + +#: ../admin/views/navigation-editor.php:131 ../admin/views/templates/slide-stage. +#: php:280 ../admin/views/templates/slider-main-options.php:2173 .. +#: admin/views/templates/slider-main-options.php:2388 .. +#: admin/views/templates/slider-main-options.php:2417 .. +#: admin/views/templates/slider-main-options.php:2532 .. +#: admin/views/templates/slider-main-options.php:2702 .. +#: admin/views/templates/slider-main-options.php:2870 .. +#: admin/views/templates/slider-main-options.php:3205 +msgid "Left" +msgstr "Lewa" + +#: ../admin/views/navigation-editor.php:133 ../admin/views/navigation-editor.php: +#: 149 ../admin/views/navigation-editor.php:165 ../admin/views/templates/slide- +#: stage.php:751 ../admin/views/templates/slide-stage.php:927 +msgid "Opacity" +msgstr "" + +#: ../admin/views/navigation-editor.php:141 +msgid "Text-Shadow" +msgstr "" + +#: ../admin/views/navigation-editor.php:143 ../admin/views/navigation-editor.php: +#: 159 ../admin/views/templates/slide-stage.php:1127 +msgid "Angle" +msgstr "" + +#: ../admin/views/navigation-editor.php:145 ../admin/views/navigation-editor.php: +#: 161 +msgid "Distance" +msgstr "" + +#: ../admin/views/navigation-editor.php:147 ../admin/views/navigation-editor.php: +#: 163 +msgid "Blur" +msgstr "" + +#: ../admin/views/navigation-editor.php:157 +msgid "Box-Shadow" +msgstr "" + +#: ../admin/views/navigation-editor.php:173 ../admin/views/templates/slide-stage. +#: php:153 ../admin/views/templates/slide-stage.php:154 .. +#: admin/views/templates/slide-stage.php:2030 ../admin/views/templates/slide- +#: stage.php:2031 +msgid "Font Family" +msgstr "" + +#: ../admin/views/navigation-editor.php:190 +msgid "Resets" +msgstr "" + +#: ../admin/views/navigation-editor.php:192 ../admin/views/navigation-editor.php: +#: 194 ../admin/views/navigation-editor.php:196 ../admin/views/navigation-editor. +#: php:198 +msgid "Classes & Style" +msgstr "" + +#: ../admin/views/navigation-editor.php:193 ../admin/views/navigation-editor.php: +#: 195 ../admin/views/navigation-editor.php:197 ../admin/views/navigation-editor. +#: php:199 +msgid "Only Classes" +msgstr "" + +#: ../admin/views/navigation-editor.php:218 +msgid "Live Preview - Hover & Click for test" +msgstr "" + +#: ../admin/views/navigation-editor.php:220 +msgid "Suggested Width:" +msgstr "" + +#: ../admin/views/navigation-editor.php:222 +msgid "Suggested Height:" +msgstr "" + +#: ../admin/views/navigation-editor.php:241 +msgid "Save All Changes" +msgstr "" + +#: ../admin/views/navigation-editor.php:302 +msgid "View" +msgstr "" + +#: ../admin/views/navigation-editor.php:302 +msgid "Edit" +msgstr "" + +#: ../admin/views/navigation-editor.php:1237 +msgid "Custom Navigations" +msgstr "" + +#: ../admin/views/navigation-editor.php:1240 +msgid "Default Navigations" +msgstr "" + +#: ../admin/views/slide-editor.php:311 +msgid "Slider:" +msgstr "" + +#: ../admin/views/slide-editor.php:314 +msgid "Edit Template Slide" +msgstr "" + +#: ../admin/views/slide-editor.php:316 ../admin/views/templates/slides-list.php: +#: 107 ../admin/views/templates/wpml-selector.php:10 +msgid "Edit Slide" +msgstr "Edytuj slajd" + +#: ../admin/views/slide-editor.php:318 ../admin/views/slider-overview.php:279 +msgid "Title:" +msgstr "" + +#: ../admin/views/slide-editor.php:321 ../admin/views/slider-overview.php:67 .. +#: admin/views/templates/slider-main-options.php:26 .. +#: admin/views/templates/slides.php:10 +msgid "Help" +msgstr "Pomoc" + +#: ../admin/views/slide-editor.php:350 +msgid "" +"Warning!!! The jquery ui javascript include that is loaded by some of " +"the plugins are custom made and not contain needed components like " +"'autocomplete' or 'draggable' function.\n" +" Without those functions the editor may not work correctly. Please remove " +"those custom jquery ui includes in order the editor will work correctly." +msgstr "" + +#: ../admin/views/slide-editor.php:364 +msgid "Insert Meta" +msgstr "" + +#: ../admin/views/slide-editor.php:371 +msgid "Post Replace Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:373 +msgid "Any custom meta tag" +msgstr "" + +#: ../admin/views/slide-editor.php:374 ../admin/views/slide-editor.php:420 +msgid "Post Title" +msgstr "" + +#: ../admin/views/slide-editor.php:375 +msgid "Post Excerpt" +msgstr "" + +#: ../admin/views/slide-editor.php:376 +msgid "Post Alias" +msgstr "" + +#: ../admin/views/slide-editor.php:377 ../admin/views/slide-editor.php:421 +msgid "Post content" +msgstr "" + +#: ../admin/views/slide-editor.php:378 ../admin/views/slide-editor.php:422 .. +#: admin/views/slide-editor.php:530 +msgid "The link to the post" +msgstr "" + +#: ../admin/views/slide-editor.php:379 ../admin/views/slide-editor.php:423 .. +#: admin/views/slide-editor.php:444 +msgid "Date created" +msgstr "" + +#: ../admin/views/slide-editor.php:380 +msgid "Date modified" +msgstr "" + +#: ../admin/views/slide-editor.php:381 +msgid "Author name" +msgstr "" + +#: ../admin/views/slide-editor.php:382 +msgid "Number of comments" +msgstr "" + +#: ../admin/views/slide-editor.php:383 +msgid "List of categories with links" +msgstr "" + +#: ../admin/views/slide-editor.php:384 +msgid "List of tags with links" +msgstr "" + +#: ../admin/views/slide-editor.php:388 +msgid "Featured Image URL" +msgstr "" + +#: ../admin/views/slide-editor.php:389 +msgid "Featured Image <img />" +msgstr "" + +#: ../admin/views/slide-editor.php:397 +msgid "Events Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:399 +msgid "Event start date" +msgstr "" + +#: ../admin/views/slide-editor.php:400 +msgid "Event end date" +msgstr "" + +#: ../admin/views/slide-editor.php:401 +msgid "Event start time" +msgstr "" + +#: ../admin/views/slide-editor.php:402 +msgid "Event end time" +msgstr "" + +#: ../admin/views/slide-editor.php:403 +msgid "Event ID" +msgstr "" + +#: ../admin/views/slide-editor.php:404 +msgid "Event location name" +msgstr "" + +#: ../admin/views/slide-editor.php:405 +msgid "Event location slug" +msgstr "" + +#: ../admin/views/slide-editor.php:406 +msgid "Event location address" +msgstr "" + +#: ../admin/views/slide-editor.php:407 +msgid "Event location town" +msgstr "" + +#: ../admin/views/slide-editor.php:408 +msgid "Event location state" +msgstr "" + +#: ../admin/views/slide-editor.php:409 +msgid "Event location postcode" +msgstr "" + +#: ../admin/views/slide-editor.php:410 +msgid "Event location region" +msgstr "" + +#: ../admin/views/slide-editor.php:411 +msgid "Event location country" +msgstr "" + +#: ../admin/views/slide-editor.php:418 +msgid "Flickr Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:424 ../admin/views/slide-editor.php:445 .. +#: admin/views/slide-editor.php:467 ../admin/views/slide-editor.php:490 .. +#: admin/views/slide-editor.php:532 +msgid "Username" +msgstr "" + +#: ../admin/views/slide-editor.php:425 +msgid "Views" +msgstr "" + +#: ../admin/views/slide-editor.php:429 ../admin/views/slide-editor.php:451 .. +#: admin/views/slide-editor.php:473 ../admin/views/slide-editor.php:495 .. +#: admin/views/slide-editor.php:515 ../admin/views/slide-editor.php:539 +msgid "Image URL" +msgstr "" + +#: ../admin/views/slide-editor.php:430 ../admin/views/slide-editor.php:452 .. +#: admin/views/slide-editor.php:474 ../admin/views/slide-editor.php:496 .. +#: admin/views/slide-editor.php:516 ../admin/views/slide-editor.php:540 +msgid "Image <img />" +msgstr "" + +#: ../admin/views/slide-editor.php:439 +msgid "Instagram Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:441 ../admin/views/slide-editor.php:463 .. +#: admin/views/slide-editor.php:485 ../admin/views/slide-editor.php:507 .. +#: admin/views/slide-editor.php:527 ../admin/views/templates/slide-stage.php: +#: 1241 ../admin/views/templates/slider-main-options.php:422 ../includes/widget. +#: class.php:61 +msgid "Title" +msgstr "" + +#: ../admin/views/slide-editor.php:442 ../admin/views/slide-editor.php:464 .. +#: admin/views/slide-editor.php:486 ../admin/views/slide-editor.php:509 .. +#: admin/views/slide-editor.php:529 +msgid "Content" +msgstr "" + +#: ../admin/views/slide-editor.php:443 ../admin/views/slide-editor.php:465 .. +#: admin/views/slide-editor.php:487 ../admin/views/slide-editor.php:511 +msgid "Link" +msgstr "" + +#: ../admin/views/slide-editor.php:446 ../admin/views/slide-editor.php:491 .. +#: admin/views/slide-editor.php:533 +msgid "Number of Likes" +msgstr "" + +#: ../admin/views/slide-editor.php:447 ../admin/views/slide-editor.php:535 +msgid "Number of Comments" +msgstr "" + +#: ../admin/views/slide-editor.php:461 +msgid "Twitter Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:466 ../admin/views/slide-editor.php:488 .. +#: admin/views/slide-editor.php:510 ../admin/views/slide-editor.php:531 +msgid "Pulbishing Date" +msgstr "" + +#: ../admin/views/slide-editor.php:468 +msgid "Retweet Count" +msgstr "" + +#: ../admin/views/slide-editor.php:469 +msgid "Favorite Count" +msgstr "" + +#: ../admin/views/slide-editor.php:483 +msgid "Facebook Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:489 +msgid "Last Modify Date" +msgstr "" + +#: ../admin/views/slide-editor.php:505 +msgid "YouTube Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:508 ../admin/views/slide-editor.php:528 +msgid "Excerpt" +msgstr "" + +#: ../admin/views/slide-editor.php:525 +msgid "Vimeo Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:534 +msgid "Number of Views" +msgstr "" + +#: ../admin/views/slide-editor.php:551 ../admin/views/templates/slide-stage.php: +#: 250 ../admin/views/templates/slide-stage.php:515 +msgid "Advanced CSS" +msgstr "" + +#: ../admin/views/slide-editor.php:554 +msgid "Style from Options" +msgstr "" + +#: ../admin/views/slide-editor.php:554 +msgid "Editable via Option Fields, Saved in the Class:" +msgstr "" + +#: ../admin/views/slide-editor.php:558 +msgid "Additional Custom Styling" +msgstr "" + +#: ../admin/views/slide-editor.php:558 +msgid "Appended in the Class:" +msgstr "" + +#: ../admin/views/slide-editor.php:563 ../admin/views/slide-editor.php:582 .. +#: admin/views/templates/slide-stage.php:86 ../admin/views/templates/slide-stage. +#: php:701 ../admin/views/templates/slide-stage.php:876 +msgid "Save As" +msgstr "" + +#: ../admin/views/slide-editor.php:565 ../admin/views/slide-editor.php:584 +msgid "Save As:" +msgstr "" + +#: ../admin/views/slide-editor.php:569 +msgid "Rename CSS" +msgstr "" + +#: ../admin/views/slide-editor.php:571 ../admin/views/slide-editor.php:895 +msgid "Rename to:" +msgstr "" + +#: ../admin/views/slide-editor.php:575 +msgid "Layer Inline CSS" +msgstr "" + +#: ../admin/views/slide-editor.php:577 +msgid "Advanced Custom Styling" +msgstr "" + +#: ../admin/views/slide-editor.php:577 +msgid "Appended Inline to the Layer Markup" +msgstr "" + +#: ../admin/views/slide-editor.php:588 +msgid "Save Under" +msgstr "" + +#: ../admin/views/slide-editor.php:590 +msgid "Save Under:" +msgstr "" + +#: ../admin/views/slide-editor.php:838 ../admin/views/slide-editor.php:877 +msgid "Save Slide" +msgstr "" + +#: ../admin/views/slide-editor.php:842 +msgid "Update Static Layers" +msgstr "" + +#: ../admin/views/slide-editor.php:846 +msgid "updating" +msgstr "aktualizacja" + +#: ../admin/views/slide-editor.php:848 ../admin/views/slide-editor.php:883 .. +#: admin/views/slide-overview.php:169 +msgid "Slider Settings" +msgstr "" + +#: ../admin/views/slide-editor.php:849 +msgid "Slides Overview" +msgstr "" + +#: ../admin/views/slide-editor.php:854 ../admin/views/templates/wpml-selector.php:9 +msgid "Delete Slide" +msgstr "" + +#: ../admin/views/slide-editor.php:873 +msgid "CSS Global" +msgstr "" + +#: ../admin/views/slide-editor.php:887 ../admin/views/templates/slider-main- +#: options.php:1310 ../admin/views/templates/slider-main-options.php:4292 .. +#: admin/views/templates/sliders-list.php:169 +msgid "Preview" +msgstr "Podgląd" + +#: ../admin/views/slide-editor.php:893 +msgid "Rename Animation" +msgstr "" + +#: ../admin/views/slide-editor.php:918 +msgid "Delete this slide?" +msgstr "" + +#: ../admin/views/slide-overview.php:51 +msgid "New Post" +msgstr "" + +#: ../admin/views/slide-overview.php:61 +msgid "Edit Posts" +msgstr "" + +#: ../admin/views/slide-overview.php:65 +msgid "This is a list of posts that are taken from multiple sources." +msgstr "" + +#: ../admin/views/slide-overview.php:67 +msgid "Sort by" +msgstr "" + +#: ../admin/views/slide-overview.php:70 +msgid "Updating Sorting..." +msgstr "" + +#: ../admin/views/slide-overview.php:75 ../admin/views/templates/slides-list.php:5 +msgid "Post List" +msgstr "" + +#: ../admin/views/slide-overview.php:76 ../admin/views/templates/slides-list.php:6 +msgid "Saving Order" +msgstr "Zapisz zamówienie" + +#: ../admin/views/slide-overview.php:80 ../admin/views/templates/slides-list.php:12 +msgid "No Posts Found" +msgstr "" + +#: ../admin/views/slide-overview.php:133 +msgid "Unpublish Post" +msgstr "" + +#: ../admin/views/slide-overview.php:135 +msgid "Publish Post" +msgstr "" + +#: ../admin/views/slide-overview.php:140 +msgid "Edit Post" +msgstr "" + +#: ../admin/views/slide-overview.php:144 ../admin/views/slide-overview.php:146 +msgid "" +"Click to change the slide image. Note: The post featured image will be " +"changed." +msgstr "" + +#: ../admin/views/slide-overview.php:146 +msgid "no image" +msgstr "" + +#: ../admin/views/slide-overview.php:150 ../admin/views/templates/slide-selector. +#: php:198 ../admin/views/templates/slide-stage.php:89 .. +#: admin/views/templates/slide-stage.php:704 ../admin/views/templates/slide- +#: stage.php:879 ../admin/views/templates/sliders-list.php:167 .. +#: admin/views/templates/slides-list.php:134 +msgid "Delete" +msgstr "Usuń" + +#: ../admin/views/slide-overview.php:173 +msgid "" +"Warning! Removing this entry will cause the original wordpress post to be " +"deleted." +msgstr "" + +#: ../admin/views/slider-overview.php:69 +msgid "Global Settings" +msgstr "" + +#: ../admin/views/slider-overview.php:76 +msgid "Revolution Sliders" +msgstr "Revolution Slider" + +#: ../admin/views/slider-overview.php:81 +msgid "Sort By:" +msgstr "" + +#: ../admin/views/slider-overview.php:83 +msgid "By ID" +msgstr "" + +#: ../admin/views/slider-overview.php:84 +msgid "By Name" +msgstr "" + +#: ../admin/views/slider-overview.php:85 +msgid "By Type" +msgstr "" + +#: ../admin/views/slider-overview.php:86 +msgid "By Favorit" +msgstr "" + +#: ../admin/views/slider-overview.php:89 +msgid "Filter By:" +msgstr "" + +#: ../admin/views/slider-overview.php:92 ../admin/views/templates/slider-main- +#: options.php:3408 +msgid "All" +msgstr "" + +#: ../admin/views/slider-overview.php:93 ../admin/views/templates/sliders-list. +#: php:33 +msgid "Posts" +msgstr "" + +#: ../admin/views/slider-overview.php:94 ../admin/views/templates/slider-main- +#: options.php:146 ../admin/views/templates/sliders-list.php:21 +msgid "Gallery" +msgstr "" + +#: ../admin/views/slider-overview.php:95 ../admin/views/system/dialog-video.php: +#: 30 ../admin/views/templates/sliders-list.php:74 +msgid "Vimeo" +msgstr "" + +#: ../admin/views/slider-overview.php:96 ../admin/views/system/dialog-video.php: +#: 28 ../admin/views/templates/sliders-list.php:68 +msgid "YouTube" +msgstr "" + +#: ../admin/views/slider-overview.php:97 ../admin/views/templates/sliders-list. +#: php:50 +msgid "Twitter" +msgstr "" + +#: ../admin/views/slider-overview.php:98 ../admin/views/templates/sliders-list. +#: php:44 +msgid "Facebook" +msgstr "" + +#: ../admin/views/slider-overview.php:99 ../admin/views/templates/sliders-list. +#: php:56 +msgid "Instagram" +msgstr "" + +#: ../admin/views/slider-overview.php:100 ../admin/views/templates/sliders-list. +#: php:62 +msgid "Flickr" +msgstr "" + +#: ../admin/views/slider-overview.php:111 +msgid "No Sliders Found" +msgstr "Nie znaleziono suwaków" + +#: ../admin/views/slider-overview.php:126 +msgid "For the" +msgstr "" + +#: ../admin/views/slider-overview.php:126 +msgid "pages or posts editor" +msgstr "" + +#: ../admin/views/slider-overview.php:126 +msgid "insert the shortcode:" +msgstr "" + +#: ../admin/views/slider-overview.php:128 ../admin/views/slider-overview.php:132 +msgid "From the" +msgstr "" + +#: ../admin/views/slider-overview.php:128 +msgid "theme html" +msgstr "motywie html" + +#: ../admin/views/slider-overview.php:128 +msgid "use" +msgstr "użyj" + +#: ../admin/views/slider-overview.php:129 +msgid "To add the slider only to homepage use" +msgstr "" + +#: ../admin/views/slider-overview.php:130 +msgid "To add the slider on specific pages or posts use" +msgstr "" + +#: ../admin/views/slider-overview.php:132 +msgid "widgets panel" +msgstr "panelu widżetów" + +#: ../admin/views/slider-overview.php:132 +msgid "drag the \"Revolution Slider\" widget to the desired sidebar" +msgstr "przeciągnij widżet \"Revolutio Slider\" na żądany pasek boczny" + +#: ../admin/views/slider-overview.php:144 +msgid "Version Information" +msgstr "" + +#: ../admin/views/slider-overview.php:149 +msgid "Installed Version" +msgstr "" + +#: ../admin/views/slider-overview.php:153 +msgid "Latest Stable Version" +msgstr "" + +#: ../admin/views/slider-overview.php:153 +msgid "Update to Stable (Free)" +msgstr "" + +#: ../admin/views/slider-overview.php:157 +msgid "Latest Available Version" +msgstr "" + +#: ../admin/views/slider-overview.php:157 +msgid "Check Version" +msgstr "" + +#: ../admin/views/slider-overview.php:169 +msgid "Need Premium Support and Live Updates ?" +msgstr "" + +#: ../admin/views/slider-overview.php:169 +msgid "Why is this Important ?" +msgstr "" + +#: ../admin/views/slider-overview.php:174 +msgid "Benefits" +msgstr "" + +#: ../admin/views/slider-overview.php:176 +msgid "Get Premium Support" +msgstr "" + +#: ../admin/views/slider-overview.php:176 +msgid "" +" - We help you in case of Bugs, installation problems, and Conflicts with " +"other plugins and Themes" +msgstr "" + +#: ../admin/views/slider-overview.php:177 +msgid "Live Updates" +msgstr "" + +#: ../admin/views/slider-overview.php:177 +msgid "" +" - Get the latest version of our Plugin. New Features and Bug Fixes are " +"available regularly !" +msgstr "" + +#: ../admin/views/slider-overview.php:194 +msgid "Information" +msgstr "" + +#: ../admin/views/slider-overview.php:199 +msgid "" +"Please note that this plugin came bundled with a theme. The use of the " +"Revolution Slider is limited to this theme only.
        If you need support from " +"the Slider author ThemePunch or you want to use the Revolution slider with " +"an other theme you will need an extra single license available at CodeCanyon." +msgstr "" + +#: ../admin/views/slider-overview.php:210 +msgid "Newsletter" +msgstr "" + +#: ../admin/views/slider-overview.php:210 +msgid "Why subscribe?" +msgstr "" + +#: ../admin/views/slider-overview.php:216 +msgid "Unsubscribe our newsletter" +msgstr "" + +#: ../admin/views/slider-overview.php:216 +msgid "Subscribe to our newsletter" +msgstr "" + +#: ../admin/views/slider-overview.php:216 +msgid "Enter your E-Mail here" +msgstr "" + +#: ../admin/views/slider-overview.php:217 +msgid "Subscribe" +msgstr "" + +#: ../admin/views/slider-overview.php:219 +msgid "Unsubscribe" +msgstr "" + +#: ../admin/views/slider-overview.php:220 +msgid "Cancel" +msgstr "" + +#: ../admin/views/slider-overview.php:223 +msgid "unsubscibe from newsletter" +msgstr "" + +#: ../admin/views/slider-overview.php:225 +msgid "Perks of subscribing to our Newsletter" +msgstr "" + +#: ../admin/views/slider-overview.php:227 +msgid "Receive info on the latest ThemePunch product updates" +msgstr "" + +#: ../admin/views/slider-overview.php:228 +msgid "Be the first to know about new products by ThemePunch and their partners" +msgstr "" + +#: ../admin/views/slider-overview.php:229 +msgid "" +"Participate in polls and customer surveys that help us increase the quality " +"of our products and services" +msgstr "" + +#: ../admin/views/slider-overview.php:238 +msgid "Update History" +msgstr "" + +#: ../admin/views/slider-overview.php:248 ../admin/views/slider-overview.php:272 . +#: ./admin/views/templates/sliders-list.php:190 +msgid "Import Slider" +msgstr "Import suwaka" + +#: ../admin/views/slider-overview.php:254 +msgid "Choose the import file" +msgstr "Wybierz plik do importu" + +#: ../admin/views/slider-overview.php:258 ../admin/views/templates/template- +#: selector.php:242 ../admin/views/templates/template-slider-selector.php:171 +msgid "Note: custom styles will be updated if they exist!" +msgstr "" + +#: ../admin/views/slider-overview.php:261 ../admin/views/templates/template- +#: selector.php:245 ../admin/views/templates/template-slider-selector.php:174 +msgid "Custom Animations:" +msgstr "" + +#: ../admin/views/slider-overview.php:262 ../admin/views/slider-overview.php:267 . +#: ./admin/views/templates/slider-main-options.php:3564 .. +#: admin/views/templates/slider-main-options.php:3569 .. +#: admin/views/templates/template-selector.php:246 .. +#: admin/views/templates/template-selector.php:251 .. +#: admin/views/templates/template-slider-selector.php:175 .. +#: admin/views/templates/template-slider-selector.php:180 +msgid "overwrite" +msgstr "" + +#: ../admin/views/slider-overview.php:263 ../admin/views/slider-overview.php:268 . +#: ./admin/views/templates/slider-main-options.php:3565 .. +#: admin/views/templates/slider-main-options.php:3570 .. +#: admin/views/templates/template-selector.php:247 .. +#: admin/views/templates/template-selector.php:252 .. +#: admin/views/templates/template-slider-selector.php:176 .. +#: admin/views/templates/template-slider-selector.php:181 +msgid "append" +msgstr "" + +#: ../admin/views/slider-overview.php:266 ../admin/views/templates/slide-stage. +#: php:62 ../admin/views/templates/template-selector.php:250 .. +#: admin/views/templates/template-slider-selector.php:179 +msgid "Static Styles:" +msgstr "" + +#: ../admin/views/slider-overview.php:277 ../admin/views/templates/slide-selector. +#: php:196 ../admin/views/templates/sliders-list.php:168 .. +#: admin/views/templates/slides-list.php:136 +msgid "Duplicate" +msgstr "Zduplikuj" + +#: ../admin/views/system/dialog-copy-move.php:3 +msgid "Do It!" +msgstr "" + +#: ../admin/views/system/dialog-copy-move.php:3 +msgid "Copy / move slide" +msgstr "" + +#: ../admin/views/system/dialog-copy-move.php:7 ../includes/widget.class.php:66 +msgid "Choose Slider" +msgstr "" + +#: ../admin/views/system/dialog-copy-move.php:12 +msgid "Choose Operation" +msgstr "" + +#: ../admin/views/system/dialog-copy-move.php:15 +msgid "Copy" +msgstr "" + +#: ../admin/views/system/dialog-copy-move.php:18 +msgid "Move" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:25 .. +#: admin/views/templates/slider-main-options.php:1582 +msgid "General Settings" +msgstr "Ustawienia ogólne" + +#: ../admin/views/system/dialog-global-settings.php:36 +msgid "View Plugin Permission:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:40 +msgid "To Admin" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:41 +msgid "To Editor, Admin" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:42 +msgid "Author, Editor, Admin" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:46 +msgid "The role of user that can view and edit the plugin" +msgstr "Role użytkowników które mają mieć wglad i możliwość edycji wtyczki" + +#: ../admin/views/system/dialog-global-settings.php:52 +msgid "Include RevSlider libraries globally:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:58 .. +#: admin/views/system/dialog-global-settings.php:92 ../admin/views/system/dialog- +#: global-settings.php:113 ../admin/views/system/dialog-global-settings.php:134 .. +#: admin/views/system/dialog-global-settings.php:187 .. +#: admin/views/system/dialog-global-settings.php:209 .. +#: admin/views/templates/slider-main-options.php:3506 +msgid "On" +msgstr "Włącz" + +#: ../admin/views/system/dialog-global-settings.php:63 .. +#: admin/views/system/dialog-global-settings.php:97 ../admin/views/system/dialog- +#: global-settings.php:118 ../admin/views/system/dialog-global-settings.php:139 .. +#: admin/views/system/dialog-global-settings.php:192 .. +#: admin/views/system/dialog-global-settings.php:214 .. +#: admin/views/templates/slider-main-options.php:2210 .. +#: admin/views/templates/slider-main-options.php:3487 .. +#: admin/views/templates/slider-main-options.php:3508 +msgid "Off" +msgstr "Wyłącz" + +#: ../admin/views/system/dialog-global-settings.php:68 +msgid "" +"ON - Add CSS and JS Files to all pages.
        Off - CSS and JS Files will be " +"only loaded on Pages where any rev_slider shortcode exists." +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:74 +msgid "Pages to include RevSlider libraries:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:79 +msgid "" +"Specify the page id's that the front end includes will be included in. " +"Example: 2,3,5 also: homepage,3,4" +msgstr "" +"Należy podać ID strony do której ma być załączony. Np. 2,3,4 również hompage," +"3,4" + +#: ../admin/views/system/dialog-global-settings.php:86 +msgid "Insert JavaScript Into Footer:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:101 +msgid "" +"Putting the js to footer (instead of the head) is good for fixing some " +"javascript conflicts." +msgstr "" +"Umieszczenie JS w stopce (zamiast w HEAD) jest dobre i pozwala rozwiązać " +"pewne problemy z JavaScript" + +#: ../admin/views/system/dialog-global-settings.php:107 +msgid "Defer JavaScript Loading:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:122 +msgid "Defer the loading of the JavaScript libraries to maximize page loading speed." +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:128 +msgid "Enable Markup Export option:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:143 +msgid "" +"This will enable the option to export the Slider Markups to copy/paste it " +"directly into websites." +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:149 +msgid "Font Loading URL:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:154 +msgid "" +"Insert something in it and it will be used instead of http://fonts." +"googleapis.com/css?family= (For example: http://fonts.useso.com/css?family= " +"which will also work for chinese visitors)" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:161 +msgid "Default Settings for Advanced Responsive Grid Sizes:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:164 +msgid "Desktop Grid Width" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:166 +msgid "Notebook Grid Width" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:168 +msgid "Tablet Grid Width" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:170 +msgid "Mobile Grid Width" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:174 +msgid "Define the default Grid Sizes for devices: Desktop, Tablet and Mobile" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:181 +msgid "Enable Notifications:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:196 +msgid "Enable/Disable ThemePunch Notifications in the Admin Notice bar." +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:203 +msgid "Enable Logs:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:218 +msgid "Enable console logs for debugging." +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:228 +msgid "Update" +msgstr "Uaktualnij" + +#: ../admin/views/system/dialog-video.php:4 +msgid "Add Video Layout" +msgstr "" + +#: ../admin/views/system/dialog-video.php:12 ../admin/views/templates/slide- +#: general-settings.php:33 ../admin/views/templates/slider-main-options.php:142 .. +#: admin/views/templates/slider-main-options.php:193 .. +#: admin/views/templates/slider-main-options.php:277 .. +#: admin/views/templates/slider-main-options.php:300 +msgid "Source" +msgstr "Źródło" + +#: ../admin/views/system/dialog-video.php:13 ../admin/views/templates/slider-main- +#: options.php:2053 +msgid "Sizing" +msgstr "" + +#: ../admin/views/system/dialog-video.php:14 +msgid "Settings" +msgstr "Ustawienia" + +#: ../admin/views/system/dialog-video.php:15 ../admin/views/templates/slide-stage. +#: php:32 ../admin/views/templates/slider-main-options.php:2342 .. +#: admin/views/templates/slider-main-options.php:2487 .. +#: admin/views/templates/slider-main-options.php:2643 .. +#: admin/views/templates/slider-main-options.php:2812 +msgid "Visibility" +msgstr "" + +#: ../admin/views/system/dialog-video.php:16 +msgid "Arguments" +msgstr "" + +#: ../admin/views/system/dialog-video.php:26 +msgid "Choose video type" +msgstr "Wybierz rodzaj wideo" + +#: ../admin/views/system/dialog-video.php:32 +msgid "HTML5" +msgstr "" + +#: ../admin/views/system/dialog-video.php:36 ../admin/views/system/dialog-video. +#: php:40 ../admin/views/system/dialog-video.php:44 +msgid "From Stream" +msgstr "" + +#: ../admin/views/system/dialog-video.php:51 +msgid "Vimeo ID or URL" +msgstr "" + +#: ../admin/views/system/dialog-video.php:54 ../admin/views/templates/slide- +#: general-settings.php:148 +msgid "example: 30300114" +msgstr "" + +#: ../admin/views/system/dialog-video.php:60 +msgid "YouTube ID or URL" +msgstr "" + +#: ../admin/views/system/dialog-video.php:63 ../admin/views/system/dialog-video. +#: php:74 ../admin/views/system/dialog-video.php:82 ../admin/views/system/dialog- +#: video.php:89 ../admin/views/system/dialog-video.php:96 +msgid "example" +msgstr "Na przykład" + +#: ../admin/views/system/dialog-video.php:69 +msgid "Poster Image Url" +msgstr "" + +#: ../admin/views/system/dialog-video.php:72 +msgid "Set Image" +msgstr "" + +#: ../admin/views/system/dialog-video.php:77 +msgid "Video MP4 Url" +msgstr "" + +#: ../admin/views/system/dialog-video.php:80 ../admin/views/system/dialog-video. +#: php:87 ../admin/views/system/dialog-video.php:94 +msgid "Set Video" +msgstr "" + +#: ../admin/views/system/dialog-video.php:84 +msgid "Video WEBM Url" +msgstr "" + +#: ../admin/views/system/dialog-video.php:91 +msgid "Video OGV Url" +msgstr "" + +#: ../admin/views/system/dialog-video.php:106 +msgid "Full Screen:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:113 ../admin/views/templates/slide- +#: general-settings.php:226 +msgid "Force Cover:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:119 ../admin/views/templates/slide- +#: general-settings.php:231 +msgid "Dotted Overlay:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:122 ../admin/views/templates/slide- +#: general-settings.php:234 ../admin/views/templates/slider-main-options.php:2107 +msgid "none" +msgstr "" + +#: ../admin/views/system/dialog-video.php:123 ../admin/views/templates/slide- +#: general-settings.php:235 ../admin/views/templates/slider-main-options.php:2108 +msgid "2 x 2 Black" +msgstr "" + +#: ../admin/views/system/dialog-video.php:124 ../admin/views/templates/slide- +#: general-settings.php:236 ../admin/views/templates/slider-main-options.php:2109 +msgid "2 x 2 White" +msgstr "" + +#: ../admin/views/system/dialog-video.php:125 ../admin/views/templates/slide- +#: general-settings.php:237 ../admin/views/templates/slider-main-options.php:2110 +msgid "3 x 3 Black" +msgstr "" + +#: ../admin/views/system/dialog-video.php:126 ../admin/views/templates/slide- +#: general-settings.php:238 ../admin/views/templates/slider-main-options.php:2111 +msgid "3 x 3 White" +msgstr "" + +#: ../admin/views/system/dialog-video.php:130 ../admin/views/templates/slide- +#: general-settings.php:242 +msgid "Aspect Ratio:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:133 ../admin/views/templates/slide- +#: general-settings.php:245 +msgid "16:9" +msgstr "" + +#: ../admin/views/system/dialog-video.php:134 ../admin/views/templates/slide- +#: general-settings.php:246 +msgid "4:3" +msgstr "" + +#: ../admin/views/system/dialog-video.php:142 ../admin/views/templates/slide- +#: general-settings.php:265 +msgid "Loop Video:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:145 ../admin/views/system/dialog-video. +#: php:217 ../admin/views/templates/slide-general-settings.php:267 .. +#: admin/views/templates/slide-general-settings.php:900 +msgid "Disable" +msgstr "Wyłącz" + +#: ../admin/views/system/dialog-video.php:146 ../admin/views/templates/slide- +#: general-settings.php:268 +msgid "Loop, Slide is paused" +msgstr "" + +#: ../admin/views/system/dialog-video.php:147 ../admin/views/templates/slide- +#: general-settings.php:269 +msgid "Loop, Slide does not stop" +msgstr "" + +#: ../admin/views/system/dialog-video.php:152 +msgid "Autoplay:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:155 +msgid "Only 1st Time:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:161 +msgid "Stop Other Videos:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:166 ../admin/views/templates/slide- +#: general-settings.php:274 +msgid "Next Slide On End:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:171 ../admin/views/templates/slide- +#: general-settings.php:278 +msgid "Rewind at Slide Start:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:176 +msgid "Hide Controls:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:181 +msgid "Mute:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:186 +msgid "Start at:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:187 +msgid "i.e.: 0:17" +msgstr "" + +#: ../admin/views/system/dialog-video.php:191 +msgid "End at:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:192 +msgid "i.e.: 2:41" +msgstr "" + +#: ../admin/views/system/dialog-video.php:196 +msgid "Show Cover at Pause:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:201 ../admin/views/templates/slide- +#: general-settings.php:289 +msgid "Video Speed:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:203 ../admin/views/templates/slide- +#: general-settings.php:291 +msgid "0.25" +msgstr "" + +#: ../admin/views/system/dialog-video.php:204 ../admin/views/templates/slide- +#: general-settings.php:292 +msgid "0.50" +msgstr "" + +#: ../admin/views/system/dialog-video.php:205 ../admin/views/templates/slide- +#: general-settings.php:293 ../admin/views/templates/slider-main-options.php:2212 +#: ../admin/views/templates/slider-main-options.php:3125 +msgid "1" +msgstr "1" + +#: ../admin/views/system/dialog-video.php:206 ../admin/views/templates/slide- +#: general-settings.php:294 +msgid "1.5" +msgstr "" + +#: ../admin/views/system/dialog-video.php:207 ../admin/views/templates/slide- +#: general-settings.php:295 ../admin/views/templates/slider-main-options.php:2213 +msgid "2" +msgstr "2" + +#: ../admin/views/system/dialog-video.php:213 +msgid "Video Preload:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:216 ../admin/views/templates/slider- +#: main-options.php:816 +msgid "Auto" +msgstr "" + +#: ../admin/views/system/dialog-video.php:218 +msgid "Metadata" +msgstr "" + +#: ../admin/views/system/dialog-video.php:225 +msgid "Preview Image" +msgstr "" + +#: ../admin/views/system/dialog-video.php:227 +msgid "Image Library" +msgstr "" + +#: ../admin/views/system/dialog-video.php:228 +msgid "Video Thumbnail" +msgstr "" + +#: ../admin/views/system/dialog-video.php:234 +msgid "Disable Mobile:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:239 +msgid "Only Preview on Mobile:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:247 ../admin/views/templates/slide- +#: general-settings.php:299 ../admin/views/templates/slide-general-settings.php:304 +msgid "Arguments:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:253 ../admin/views/system/dialog-video. +#: php:253 +msgid "Add This Video" +msgstr "" + +#: ../admin/views/system/dialog-video.php:253 +msgid "Update Video" +msgstr "" + +#: ../admin/views/system/validation.php:31 +msgid "Username:" +msgstr "" + +#: ../admin/views/system/validation.php:34 +msgid "Your Envato username." +msgstr "" + +#: ../admin/views/system/validation.php:38 +msgid "Envato API Key:" +msgstr "" + +#: ../admin/views/system/validation.php:41 +msgid "" +"You can find the API key by visiting your Envato Account page, then clicking " +"the My Settings tab. At the bottom of the page you will find your accounts " +"API key." +msgstr "" + +#: ../admin/views/system/validation.php:45 +msgid "Purchase code:" +msgstr "" + +#: ../admin/views/system/validation.php:48 +msgid "Please enter your " +msgstr "" + +#: ../admin/views/system/validation.php:48 +msgid "CodeCanyon Slider Revolution purchase code / license key" +msgstr "" + +#: ../admin/views/system/validation.php:48 +msgid ". You can find your key by following the instructions on" +msgstr "" + +#: ../admin/views/system/validation.php:48 +msgid " this page." +msgstr "" + +#: ../admin/views/system/validation.php:54 +msgid "Register" +msgstr "" + +#: ../admin/views/system/validation.php:56 +msgid "Deregister" +msgstr "" + +#: ../admin/views/system/validation.php:61 +msgid "Search for Updates" +msgstr "" + +#: ../admin/views/system/validation.php:68 +msgid "" +"To register the plugin on a different website, click the “Deregister” button " +"here first." +msgstr "" + +#: ../admin/views/system/validation.php:79 +msgid "How to get Support ?" +msgstr "" + +#: ../admin/views/system/validation.php:81 +msgid "Please feel free to contact us via our " +msgstr "" + +#: ../admin/views/system/validation.php:81 +msgid "Support Forum " +msgstr "" + +#: ../admin/views/system/validation.php:81 +msgid "and/or via the " +msgstr "" + +#: ../admin/views/system/validation.php:81 +msgid "Item Disscussion Forum" +msgstr "" + +#: ../admin/views/system/validation.php:87 +msgid "Click Here to get " +msgstr "" + +#: ../admin/views/system/validation.php:87 +msgid "Premium Support and Auto Updates" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:6 +msgid "Main Background" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:7 +msgid "Gerneral Settings" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:8 +msgid "Slide Animation" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:9 +msgid "Link & Seo" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:10 +msgid "Slide Info" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:34 +msgid "Source Settings" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:35 .. +#: admin/views/templates/slide-stage.php:248 ../admin/views/templates/slider- +#: main-options.php:3285 +msgid "Parallax" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:36 +msgid "Ken Burns" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:64 +msgid "Featured Image" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:69 +msgid "Stream Image" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:75 +msgid "Stream Video" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:78 +msgid "Use Cover" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:85 +msgid "Main / Background Image" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:89 +msgid "Change Image" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:97 +msgid "External URL" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:103 +msgid "Get External" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:109 +msgid "Transparent" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:114 +msgid "Solid Colored" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:124 +msgid "YouTube Video" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:130 .. +#: admin/views/templates/slide-general-settings.php:146 .. +#: admin/views/templates/slide-general-settings.php:881 +msgid "ID:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:132 +msgid "example: T8--OggjJKQ" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:134 .. +#: admin/views/templates/slide-general-settings.php:150 .. +#: admin/views/templates/slide-general-settings.php:180 +msgid "Cover Image:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:140 +msgid "Vimeo Video" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:156 +msgid "HTML5 Video" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:162 +msgid "MPEG:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:165 .. +#: admin/views/templates/slide-general-settings.php:171 .. +#: admin/views/templates/slide-general-settings.php:177 +msgid "Change Video" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:168 +msgid "WEBM:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:174 +msgid "OGV:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:188 +msgid "Image Source Size:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:205 +msgid "Alt:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:207 .. +#: admin/views/templates/slide-stage.php:1259 +msgid "From Media Library" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:208 .. +#: admin/views/templates/slide-stage.php:1260 +msgid "From Filename" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:209 .. +#: admin/views/templates/slide-stage.php:1261 ../admin/views/templates/slide- +#: stage.php:1729 +msgid "Custom" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:215 +msgid "Width:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:219 +msgid "Height:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:252 +msgid "Start At:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:254 +msgid "For Example: 00:17" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:259 +msgid "End At:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:261 +msgid "For Example: 02:17" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:283 +msgid "Mute Video:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:311 +msgid "Background Fit:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:322 +msgid "Background Position:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:343 +msgid "Background Repeat:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:359 +msgid "Parallax Level:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:361 .. +#: admin/views/templates/slide-stage.php:462 +msgid "No Parallax" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:377 .. +#: admin/views/templates/slide-stage.php:479 +msgid "Parallax Feature in Slider Settings is deactivated, parallax will be ignored." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:385 .. +#: admin/views/templates/slider-main-options.php:1727 +msgid "Ken Burns / Pan Zoom:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:390 +msgid "Scale: (in %):" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:391 .. +#: admin/views/templates/slide-general-settings.php:399 .. +#: admin/views/templates/slide-general-settings.php:407 .. +#: admin/views/templates/slide-general-settings.php:415 +msgid "From" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:393 .. +#: admin/views/templates/slide-general-settings.php:401 .. +#: admin/views/templates/slide-general-settings.php:409 .. +#: admin/views/templates/slide-general-settings.php:417 +msgid "To" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:398 +msgid "Horizontal Offsets:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:406 +msgid "Vertical Offsets:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:414 +msgid "Rotation:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:422 .. +#: admin/views/templates/slider-main-options.php:1743 +msgid "Easing:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:462 .. +#: admin/views/templates/slider-main-options.php:1850 +msgid "Duration (in ms):" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:478 +msgid "The title of the slide, will be shown in the slides list." +msgstr "Tytuł slajdu, zostanie pokazany w liście slajdów." + +#: ../admin/views/templates/slide-general-settings.php:484 +msgid "Slide \"Delay\":" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:486 +msgid "" +"A new delay value for the Slide. If no delay defined per slide, the delay " +"defined via Options (9000ms) will be used." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:492 +msgid "Slide State" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:494 +msgid "Published" +msgstr "Opublikowany" + +#: ../admin/views/templates/slide-general-settings.php:495 +msgid "Unpublished" +msgstr "Niepublikowany" + +#: ../admin/views/templates/slide-general-settings.php:497 +msgid "" +"The state of the slide. The unpublished slide will be excluded from the " +"slider." +msgstr "Stan slajdu. Niepublikowane slajdy zostaną wykluczone z suwaka." + +#: ../admin/views/templates/slide-general-settings.php:510 +msgid "Language" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:521 +msgid "The language of the slide (uses WPML plugin)." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:530 +msgid "Visible from:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:532 +msgid "If set, slide will be visible after the date is reached." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:538 +msgid "Visible until:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:540 +msgid "If set, slide will be visible till the date is reached." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:547 +msgid "Thumbnail:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:565 +msgid "Slide Thumbnail. If not set - it will be taken from the slide image." +msgstr "" +"Miniatura slajdu. Jeśli nie jest ustawiony - zostanie wykonane z obrazu " +"slajdu." + +#: ../admin/views/templates/slide-general-settings.php:572 +msgid "Save Performance:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:576 +msgid "Slide End Transition will first start when last Layer has been removed." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:716 +msgid "Used Transitions (Order in Loops)" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:723 +msgid "Slot / Box Amount:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:726 +msgid "# of slots/boxes the slide is divided into." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:731 +msgid "Slot Rotation:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:734 +msgid "Start Rotation of Transition (deg)." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:739 +msgid "Animation Duration:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:742 +msgid "The duration of the transition." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:747 +msgid "Easing In:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:787 +msgid "The easing of Appearing transition." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:792 +msgid "Easing Out:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:832 +msgid "The easing of Disappearing transition." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:850 +msgid "Parameter" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:851 +msgid "Max. Chars" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:861 +msgid "Description of Slider:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:864 +msgid "" +"Define a description here to show at the navigation if enabled in Slider " +"Settings" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:873 +msgid "Class:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:875 +msgid "" +"Adds a unique class to the li of the Slide like class=\"rev_special_class\" " +"(add only the classnames, seperated by space)" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:883 +msgid "" +"Adds a unique ID to the li of the Slide like id=\"rev_special_id\" (add only " +"the id)" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:889 +msgid "Custom Fields:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:891 +msgid "" +"Add as many attributes as you wish here. (i.e.: data-layer=\"firstlayer\" data-" +"custom=\"somevalue\")." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:897 +msgid "Enable Link:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:899 +msgid "Enable" +msgstr "Włącz" + +#: ../admin/views/templates/slide-general-settings.php:902 +msgid "Link the Full Slide to an URL or Action." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:909 +msgid "Link Type:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:911 +msgid "Regular" +msgstr "Normalny" + +#: ../admin/views/templates/slide-general-settings.php:912 +msgid "To Slide" +msgstr "Do slajdu" + +#: ../admin/views/templates/slide-general-settings.php:914 +msgid "Regular - Link to URL, To Slide - Call a Slide Action" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:921 +msgid "Slide Link:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:923 +msgid "" +"A link on the whole slide pic (use {{link}} or {{meta:somemegatag}} in " +"template sliders to link to a post or some other meta)" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:929 +msgid "Link Target:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:931 .. +#: admin/views/templates/slide-stage.php:2273 +msgid "Same Window" +msgstr "To samo okno" + +#: ../admin/views/templates/slide-general-settings.php:932 .. +#: admin/views/templates/slide-stage.php:2274 +msgid "New Window" +msgstr "Nowe okno" + +#: ../admin/views/templates/slide-general-settings.php:934 +msgid "The target of the slide link." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:942 +msgid "-- Not Chosen --" +msgstr "-- Nie wybrano --" + +#: ../admin/views/templates/slide-general-settings.php:943 +msgid "-- Next Slide --" +msgstr "-- Następny slajd --" + +#: ../admin/views/templates/slide-general-settings.php:944 +msgid "-- Previous Slide --" +msgstr "-- Poprzedni slajd --" + +#: ../admin/views/templates/slide-general-settings.php:947 +msgid "-- Scroll Below Slider --" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:959 +msgid "Link To Slide:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:970 +msgid "Call Slide Action" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:975 +msgid "Link Sensibility:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:977 +msgid "Front" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:978 +msgid "Back" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:980 +msgid "The z-index position of the link related to layers" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:31 +msgid "Static / Global Layers" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:47 +msgid "Show Layers from Slide:" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:197 +msgid "Add to Templates" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:212 ../admin/views/templates/slide- +#: selector.php:224 +msgid "Add Slide" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:217 +msgid "Add Blank Slide" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:220 +msgid "Add from Template" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:280 +msgid "Slide name should not be empty" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:12 +msgid "Style" +msgstr "Styl" + +#: ../admin/views/templates/slide-stage.php:13 +msgid "Advanced Style on/off" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:19 ../admin/views/templates/slide- +#: stage.php:1766 +msgid "Animation" +msgstr "Animacje" + +#: ../admin/views/templates/slide-stage.php:20 +msgid "Play/Pause Single Layer Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:26 ../admin/views/templates/slide- +#: stage.php:1031 +msgid "Loop Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:27 +msgid "Play/Pause Layer Loop Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:33 +msgid "Behavior" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:36 +msgid "Attributes" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:38 +msgid "Static Layers" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:40 +msgid "Performance" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:56 +msgid "Global Style Editor" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:58 +msgid "Dynamic Styles (Not Editable):" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:68 +msgid "Save Static Styles" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:69 +msgid "Overwrite current static styles?" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:76 +msgid "Caption Style" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:77 +msgid "Style Template" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:79 +msgid "More Style Settings" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:80 +msgid "Reset Style Template" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:84 +msgid "Style Options" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:85 ../admin/views/templates/slide- +#: stage.php:700 ../admin/views/templates/slide-stage.php:875 +msgid "Save" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:87 ../admin/views/templates/slide- +#: stage.php:702 ../admin/views/templates/slide-stage.php:877 +msgid "Rename" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:88 ../admin/views/templates/slide- +#: stage.php:703 ../admin/views/templates/slide-stage.php:878 +msgid "Reset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:99 +msgid "Font Size (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:100 ../admin/views/templates/slide- +#: stage.php:2220 +msgid "Font Size" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:105 +msgid "Line Height (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:106 ../admin/views/templates/slide- +#: stage.php:2221 +msgid "Line Height" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:112 +msgid "White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:126 +msgid "Layer Align Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:127 +msgid "Layer Align Center" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:128 +msgid "Layer Align Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:135 ../admin/views/templates/slide- +#: stage.php:136 +msgid "Horizontal Offset from Aligned Position (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:140 ../admin/views/templates/slide- +#: stage.php:141 +msgid "Vertical Offset from Aligned Position (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:164 ../admin/views/templates/slide- +#: stage.php:165 ../admin/views/templates/slide-stage.php:2222 +msgid "Font Weight" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:179 ../admin/views/templates/slide- +#: stage.php:180 ../admin/views/templates/slide-stage.php:522 .. +#: admin/views/templates/slide-stage.php:523 ../admin/views/templates/slider- +#: main-options.php:1984 ../admin/views/templates/slider-main-options.php:2117 .. +#: admin/views/templates/slider-main-options.php:2221 +msgid "Font Color" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:186 +msgid "Layer Align Top" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:187 +msgid "Layer Align Middle" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:188 +msgid "Layer Align Bottom" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:194 ../admin/views/templates/slide- +#: stage.php:195 ../admin/views/templates/slide-stage.php:196 +msgid "Layer Width (px). Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:197 +msgid "Video Width (px). Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:200 ../admin/views/templates/slide- +#: stage.php:201 +msgid "Layer Height (px). Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:202 +msgid "Layer Height (px) Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:203 +msgid "Video Height (px). Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:206 +msgid "Cover Mode" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:217 +msgid "Auto Linebreak (on/off - White Space:normal / nowrap). " +msgstr "" + +#: ../admin/views/templates/slide-stage.php:222 +msgid "Keep Aspect Ratio (on/off)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:227 +msgid "Reset original size" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:242 ../admin/views/templates/slide- +#: stage.php:510 ../admin/views/templates/slider-main-options.php:4321 +msgid "Font" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:243 ../admin/views/templates/slide- +#: stage.php:511 ../admin/views/templates/slide-stage.php:1975 .. +#: admin/views/templates/slide-stage.php:2041 ../admin/views/templates/slide- +#: stage.php:2123 +msgid "Background" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:245 ../admin/views/templates/slide- +#: stage.php:513 +msgid "Transform" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:246 ../admin/views/templates/slide- +#: stage.php:514 ../admin/views/templates/slide-stage.php:752 .. +#: admin/views/templates/slide-stage.php:928 ../admin/views/templates/slider- +#: main-options.php:3161 +msgid "Rotation" +msgstr "Obrót" + +#: ../admin/views/templates/slide-stage.php:247 ../admin/views/templates/slide- +#: stage.php:757 ../admin/views/templates/slide-stage.php:933 +msgid "Perspective" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:249 +msgid "Corners" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:251 ../admin/views/templates/slide- +#: stage.php:641 +msgid "Hover" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:257 ../admin/views/templates/slide- +#: stage.php:258 +msgid "Font Opacity" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:262 +msgid "Italic Font" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:263 +msgid "Italic Font On/Off" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:267 ../admin/views/templates/slide- +#: stage.php:268 ../admin/views/templates/slide-stage.php:531 .. +#: admin/views/templates/slide-stage.php:532 +msgid "Font Decoration" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:278 ../admin/views/templates/slide- +#: stage.php:279 +msgid "Text Align" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:281 ../admin/views/templates/slider- +#: main-options.php:2174 ../admin/views/templates/slider-main-options.php:2389 .. +#: admin/views/templates/slider-main-options.php:2398 .. +#: admin/views/templates/slider-main-options.php:2418 .. +#: admin/views/templates/slider-main-options.php:2428 .. +#: admin/views/templates/slider-main-options.php:2533 .. +#: admin/views/templates/slider-main-options.php:2541 .. +#: admin/views/templates/slider-main-options.php:2703 .. +#: admin/views/templates/slider-main-options.php:2711 .. +#: admin/views/templates/slider-main-options.php:2871 .. +#: admin/views/templates/slider-main-options.php:2879 .. +#: admin/views/templates/slider-main-options.php:3206 .. +#: admin/views/templates/slider-main-options.php:3214 +msgid "Center" +msgstr "Wyśrodkowana" + +#: ../admin/views/templates/slide-stage.php:290 ../admin/views/templates/slide- +#: stage.php:291 ../admin/views/templates/slide-stage.php:542 .. +#: admin/views/templates/slide-stage.php:543 +msgid "Background Color" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:295 ../admin/views/templates/slide- +#: stage.php:296 ../admin/views/templates/slide-stage.php:547 .. +#: admin/views/templates/slide-stage.php:548 +msgid "Background Opacity" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:300 ../admin/views/templates/slide- +#: stage.php:2190 ../admin/views/templates/slide-stage.php:2192 +msgid "Padding" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:301 ../admin/views/templates/slide- +#: stage.php:2193 ../admin/views/templates/slider-main-options.php:3116 +msgid "Padding Top" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:302 ../admin/views/templates/slide- +#: stage.php:2194 +msgid "Padding Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:303 ../admin/views/templates/slide- +#: stage.php:2195 ../admin/views/templates/slider-main-options.php:3119 +msgid "Padding Bottom" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:304 ../admin/views/templates/slide- +#: stage.php:2196 +msgid "Padding Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:310 ../admin/views/templates/slide- +#: stage.php:311 ../admin/views/templates/slide-stage.php:553 .. +#: admin/views/templates/slide-stage.php:554 ../admin/views/templates/slide- +#: stage.php:2008 ../admin/views/templates/slide-stage.php:2073 .. +#: admin/views/templates/slide-stage.php:2140 +msgid "Border Color" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:315 ../admin/views/templates/slide- +#: stage.php:316 ../admin/views/templates/slide-stage.php:557 .. +#: admin/views/templates/slide-stage.php:558 ../admin/views/templates/slide- +#: stage.php:2012 ../admin/views/templates/slide-stage.php:2013 .. +#: admin/views/templates/slide-stage.php:2077 ../admin/views/templates/slide- +#: stage.php:2078 ../admin/views/templates/slide-stage.php:2144 .. +#: admin/views/templates/slide-stage.php:2145 +msgid "Border Opacity" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:320 ../admin/views/templates/slide- +#: stage.php:321 ../admin/views/templates/slide-stage.php:564 .. +#: admin/views/templates/slide-stage.php:565 +msgid "Border Style" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:331 ../admin/views/templates/slide- +#: stage.php:332 ../admin/views/templates/slide-stage.php:575 .. +#: admin/views/templates/slide-stage.php:576 ../admin/views/templates/slide- +#: stage.php:2017 ../admin/views/templates/slide-stage.php:2018 .. +#: admin/views/templates/slide-stage.php:2082 ../admin/views/templates/slide- +#: stage.php:2083 ../admin/views/templates/slide-stage.php:2149 .. +#: admin/views/templates/slide-stage.php:2150 +msgid "Border Width" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:336 ../admin/views/templates/slide- +#: stage.php:580 +msgid "Border Radius (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:337 ../admin/views/templates/slide- +#: stage.php:581 +msgid "Border Radius Top Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:338 ../admin/views/templates/slide- +#: stage.php:582 +msgid "Border Radius Top Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:339 ../admin/views/templates/slide- +#: stage.php:583 +msgid "Border Radius Bottom Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:340 ../admin/views/templates/slide- +#: stage.php:584 +msgid "Border Radius Bottom Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:346 ../admin/views/templates/slide- +#: stage.php:347 ../admin/views/templates/slide-stage.php:614 .. +#: admin/views/templates/slide-stage.php:615 +msgid "Rotation on X axis (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:350 ../admin/views/templates/slide- +#: stage.php:351 ../admin/views/templates/slide-stage.php:618 .. +#: admin/views/templates/slide-stage.php:619 +msgid "Rotation on Y axis (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:355 ../admin/views/templates/slide- +#: stage.php:356 ../admin/views/templates/slide-stage.php:623 .. +#: admin/views/templates/slide-stage.php:624 +msgid "Rotation on Z axis (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:360 ../admin/views/templates/slide- +#: stage.php:361 +msgid "Horizontal Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:364 ../admin/views/templates/slide- +#: stage.php:365 +msgid "Vertical Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:371 ../admin/views/templates/slide- +#: stage.php:589 +#, php-format +msgid "Opacity. (1 = 100% Visible / 0.5 = 50% opacaity / 0 = transparent)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:372 ../admin/views/templates/slide- +#: stage.php:590 +#, php-format +msgid "Opacity (1 = 100% Visible / 0.5 = 50% opacaity / 0 = transparent)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:376 ../admin/views/templates/slide- +#: stage.php:377 ../admin/views/templates/slide-stage.php:594 .. +#: admin/views/templates/slide-stage.php:595 +msgid "X Scale 1 = 100%, 0.5=50%... (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:381 ../admin/views/templates/slide- +#: stage.php:382 ../admin/views/templates/slide-stage.php:598 .. +#: admin/views/templates/slide-stage.php:599 +msgid "Y Scale 1 = 100%, 0.5=50%... (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:386 ../admin/views/templates/slide- +#: stage.php:387 ../admin/views/templates/slide-stage.php:603 .. +#: admin/views/templates/slide-stage.php:604 +msgid "X Skew (+/- px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:391 ../admin/views/templates/slide- +#: stage.php:392 ../admin/views/templates/slide-stage.php:607 .. +#: admin/views/templates/slide-stage.php:608 +msgid "Y Skew (+/- px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:398 ../admin/views/templates/slide- +#: stage.php:630 +msgid "Template" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:399 ../admin/views/templates/slide- +#: stage.php:631 ../admin/views/templates/slider-main-options.php:849 .. +#: admin/views/templates/slider-main-options.php:880 .. +#: admin/views/templates/slider-main-options.php:913 .. +#: admin/views/templates/slider-main-options.php:947 +msgid "Layer" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:407 +msgid "Layer Hover" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:413 ../admin/views/templates/slide- +#: stage.php:414 +msgid "Hover Animation Speed (in ms)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:419 ../admin/views/templates/slide- +#: stage.php:420 +msgid "Hover Animation Easing" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:430 ../admin/views/templates/slide- +#: stage.php:431 +msgid "Mouse Cursor" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:447 ../admin/views/templates/slide- +#: stage.php:448 +msgid "Animation Perspective (default 600)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:452 ../admin/views/templates/slide- +#: stage.php:453 +msgid "Z Offset (+/- px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:459 +msgid "Parallax Depth Level." +msgstr "" + +#: ../admin/views/templates/slide-stage.php:487 +msgid "Sharp Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:490 ../admin/views/templates/slide- +#: stage.php:499 +msgid "No Corner" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:491 ../admin/views/templates/slide- +#: stage.php:500 +msgid "Sharp" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:492 ../admin/views/templates/slide- +#: stage.php:501 +msgid "Sharp Reversed" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:496 +msgid "Sharp Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:527 ../admin/views/templates/slide- +#: stage.php:528 +msgid "Font Hover Opacity" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:640 +msgid "Idle" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:645 +msgid "COPY" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:647 +msgid "Copy From Idle" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:648 +msgid "Copy From Hover" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:649 +msgid "Copy From In Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:650 +msgid "Copy From Out Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:667 +msgid "Hover CSS" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:684 ../admin/views/templates/slide- +#: stage.php:856 ../admin/views/templates/slider-main-options.php:1275 +msgid "Advanced Settings" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:688 ../admin/views/templates/slide- +#: stage.php:689 ../admin/views/templates/slide-stage.php:863 .. +#: admin/views/templates/slide-stage.php:864 +msgid "Animation Template" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:699 ../admin/views/templates/slide- +#: stage.php:874 +msgid "Template Options" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:711 ../admin/views/templates/slide- +#: stage.php:712 ../admin/views/templates/slide-stage.php:888 .. +#: admin/views/templates/slide-stage.php:889 +msgid "Animation Easing" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:722 ../admin/views/templates/slide- +#: stage.php:723 ../admin/views/templates/slide-stage.php:899 .. +#: admin/views/templates/slide-stage.php:900 +msgid "Animation Speed (in ms)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:727 ../admin/views/templates/slide- +#: stage.php:728 ../admin/views/templates/slide-stage.php:904 .. +#: admin/views/templates/slide-stage.php:905 +msgid "Split Animaton Text (will not respect Html Markups !)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:729 ../admin/views/templates/slide- +#: stage.php:906 +msgid "No Split" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:730 ../admin/views/templates/slide- +#: stage.php:907 +msgid "Char Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:731 ../admin/views/templates/slide- +#: stage.php:908 +msgid "Word Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:732 ../admin/views/templates/slide- +#: stage.php:909 +msgid "Line Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:736 ../admin/views/templates/slide- +#: stage.php:737 ../admin/views/templates/slide-stage.php:913 .. +#: admin/views/templates/slide-stage.php:914 +msgid "Animation Delay between Splitted Elements" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:750 ../admin/views/templates/slide- +#: stage.php:926 +msgid "Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:753 ../admin/views/templates/slide- +#: stage.php:929 ../admin/views/templates/slider-main-options.php:3180 +msgid "Scale" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:754 ../admin/views/templates/slide- +#: stage.php:930 +msgid "Skew" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:755 ../admin/views/templates/slide- +#: stage.php:931 +msgid "Masking" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:756 ../admin/views/templates/slide- +#: stage.php:932 +msgid "Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:768 +msgid "" +"Mask is not available due Style Transitions. Please remove any Rotation, " +"Scale or skew effect form Idle and Hover settings" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1037 ../admin/views/templates/slide- +#: stage.php:1725 ../admin/views/templates/slide-stage.php:2244 +msgid "Disabled" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1038 +msgid "Pendulum" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1039 +msgid "Rotate" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1040 +msgid "Slideloop" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1041 +msgid "Pulse" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1042 +msgid "Wave" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1047 +msgid "Loop Speed (sec) - 0.3 = 300ms" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1048 +msgid "Loop Speed (ms)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1057 ../admin/views/templates/slide- +#: stage.php:1058 +msgid "Loop Easing" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1071 +msgid "Loop Parameters" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1077 ../admin/views/templates/slide- +#: stage.php:1078 +msgid "2D Rotation start deg." +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1081 ../admin/views/templates/slide- +#: stage.php:1082 +msgid "2D Rotation end deg." +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1087 ../admin/views/templates/slide- +#: stage.php:1088 +msgid "2D Rotation X Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1091 ../admin/views/templates/slide- +#: stage.php:1092 +msgid "2D Rotation Y Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1096 +msgid "Start" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1098 ../admin/views/templates/slide- +#: stage.php:1099 +msgid "Start X Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1101 ../admin/views/templates/slide- +#: stage.php:1102 +msgid "Start Y Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1106 +msgid "End" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1108 ../admin/views/templates/slide- +#: stage.php:1109 +msgid "End X Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1111 ../admin/views/templates/slide- +#: stage.php:1112 +msgid "End Y Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1117 ../admin/views/templates/slide- +#: stage.php:1119 +msgid "Zoom Start" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1121 ../admin/views/templates/slide- +#: stage.php:1123 +msgid "Zoom End" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1129 +msgid "Start Angle" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1133 +msgid "Radius" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1135 +msgid "Radius of Rotation / Pendulum" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1143 +msgid "Lazy Loading" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1146 ../admin/views/templates/slide- +#: stage.php:1155 +msgid "Default Setting" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1147 +msgid "Force Lazy Loading" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1148 +msgid "Ignore Lazy Loading" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1152 +msgid "Source Type" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1174 ../admin/views/templates/slide- +#: stage.php:2337 +msgid "Animation Timing" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1177 ../admin/views/templates/slide- +#: stage.php:2340 +msgid "In and Out Animation Default" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1178 ../admin/views/templates/slide- +#: stage.php:2341 +msgid "In Animation Default and Out Animation Wait for Trigger" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1179 ../admin/views/templates/slide- +#: stage.php:2342 +msgid "Wait for Trigger" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1183 ../admin/views/templates/slide- +#: stage.php:2345 +msgid "Trigger Memory" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1186 ../admin/views/templates/slide- +#: stage.php:2348 +msgid "Reset Animation and Trigger States every loop" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1187 ../admin/views/templates/slide- +#: stage.php:2349 +msgid "Keep last selected State" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1227 +msgid "ID" +msgstr "ID" + +#: ../admin/views/templates/slide-stage.php:1234 +msgid "Classes" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1248 +msgid "Rel" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1256 +msgid "Alt" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1269 +msgid "Internal Classes:" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1285 +msgid "Layer Type:" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1305 +msgid "Visibility on Devices" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1327 +msgid "Hide 'Under' Width" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1333 +msgid "Only on Slider Hover" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1351 +msgid "Auto Responsive" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1357 +msgid "Child Elements Responsive" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1363 +msgid "Align" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1366 +msgid "Grid Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1367 +msgid "Slide Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1372 +msgid "Responsive Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1396 +msgid "Static Layers will be shown on every slide in template sliders" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1403 +msgid "Start on Slide" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1428 +msgid "End on Slide" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1525 +msgid "Image Layer Title " +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1525 +msgid "(only for internal usage):" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1542 +msgid "Add a New Layer" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1545 +msgid "Text/Html" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1546 +msgid "Image" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1547 +msgid "Video" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1548 +msgid "Button" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1549 +msgid "Shape" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1555 +msgid "Quick Layer Selector" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1563 +msgid "Slide contains no layers" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1624 +msgid "Delete All Layers" +msgstr "Usuń wszystkie warstwy" + +#: ../admin/views/templates/slide-stage.php:1630 +msgid "Desktop" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1631 ../admin/views/templates/slider- +#: main-options.php:867 +msgid "Notebook" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1632 ../admin/views/templates/slider- +#: main-options.php:901 +msgid "Tablet" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1633 ../admin/views/templates/slider- +#: main-options.php:935 ../admin/views/templates/slider-main-options.php:2055 +msgid "Mobile" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1723 +msgid "Helper Grid:" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1732 +msgid "Snap to:" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1734 ../admin/views/templates/slider- +#: main-options.php:3420 ../admin/views/templates/slider-main-options.php:3514 +msgid "None" +msgstr "Brak" + +#: ../admin/views/templates/slide-stage.php:1735 +msgid "Help Lines" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1736 +msgid "Layers" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1750 +msgid "PLAY" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1779 +msgid "DragMe" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1819 +msgid "Add Button Layer" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1825 +msgid "Click on Element to add it" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1829 +msgid "Buttons" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1831 ../admin/views/templates/slide- +#: stage.php:1832 ../admin/views/templates/slide-stage.php:1833 .. +#: admin/views/templates/slide-stage.php:1836 ../admin/views/templates/slide- +#: stage.php:1837 ../admin/views/templates/slide-stage.php:1838 .. +#: admin/views/templates/slide-stage.php:1841 ../admin/views/templates/slide- +#: stage.php:1842 ../admin/views/templates/slide-stage.php:1843 .. +#: admin/views/templates/slide-stage.php:1846 ../admin/views/templates/slide- +#: stage.php:1847 ../admin/views/templates/slide-stage.php:1848 .. +#: admin/views/templates/slide-stage.php:1851 ../admin/views/templates/slide- +#: stage.php:1852 ../admin/views/templates/slide-stage.php:1853 .. +#: admin/views/templates/slide-stage.php:1856 ../admin/views/templates/slide- +#: stage.php:1857 ../admin/views/templates/slide-stage.php:1858 +msgid "Click Here" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1860 +msgid "Predefined Elements" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1971 +msgid "Idle State" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1990 ../admin/views/templates/slide- +#: stage.php:2054 ../admin/views/templates/slide-stage.php:2219 +msgid "Color" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1993 ../admin/views/templates/slide- +#: stage.php:2058 +msgid "Color 2" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2024 +msgid "Text / Icon" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2037 +msgid "Hover State" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2090 +msgid "Text" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2103 +msgid "Add Shape Layer" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2109 +msgid "Click your Shape below to add it" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2119 +msgid "Shape Settings" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2168 ../admin/views/templates/slider- +#: main-options.php:2367 ../admin/views/templates/slider-main-options.php:2378 .. +#: admin/views/templates/slider-main-options.php:2512 .. +#: admin/views/templates/slider-main-options.php:2523 .. +#: admin/views/templates/slider-main-options.php:2669 .. +#: admin/views/templates/slider-main-options.php:2680 .. +#: admin/views/templates/slider-main-options.php:2837 .. +#: admin/views/templates/slider-main-options.php:2848 +msgid "Width" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2170 ../admin/views/templates/slider- +#: main-options.php:821 +msgid "Full-Width" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2178 +msgid "Height" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2180 +msgid "Full-Height" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2205 +msgid "Apply Styles to Selection" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2223 +msgid "Advanced Styles will alwys be applied to all Device Sizes." +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2238 +msgid "Click" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2239 +msgid "Mouse Enter" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2240 +msgid "Mouse Leave" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2245 +msgid "Simple Link" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2246 +msgid "Jump to Slide" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2247 ../admin/views/templates/slider- +#: main-options.php:3641 +msgid "Next Slide" +msgstr "Następny slajd" + +#: ../admin/views/templates/slide-stage.php:2248 ../admin/views/templates/slider- +#: main-options.php:3637 +msgid "Previous Slide" +msgstr "Poprzedni slajd" + +#: ../admin/views/templates/slide-stage.php:2249 ../admin/views/templates/slider- +#: main-options.php:3629 +msgid "Pause Slider" +msgstr "Zatrzymaj suwak" + +#: ../admin/views/templates/slide-stage.php:2250 +msgid "Play Slider" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2251 +msgid "Toggle Slider" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2252 +msgid "CallBack" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2253 +msgid "Scroll Below Slider" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2254 +msgid "Start Layer \"in\" Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2255 +msgid "Start Layer \"out\" Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2261 +msgid "Toggle Layer Class" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2266 +msgid "Link Url" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2270 +msgid "Link Target" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2277 +msgid "Link Type" +msgstr "Typ odnośnika" + +#: ../admin/views/templates/slide-stage.php:2280 +msgid "jQuery Link" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2281 +msgid "a Tag Link" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2287 +msgid "Jump To" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2296 +msgid "Scroll Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2303 +msgid "Function" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2309 +msgid "Target" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2313 +msgid "Delay" +msgstr "Opóźnienie" + +#: ../admin/views/templates/slide-stage.php:2315 ../admin/views/templates/slider- +#: main-options.php:1620 ../admin/views/templates/slider-main-options.php:1626 .. +#: admin/views/templates/slider-main-options.php:1645 .. +#: admin/views/templates/slider-main-options.php:1889 .. +#: admin/views/templates/slider-main-options.php:1895 .. +#: admin/views/templates/slider-main-options.php:2353 .. +#: admin/views/templates/slider-main-options.php:2358 .. +#: admin/views/templates/slider-main-options.php:2498 .. +#: admin/views/templates/slider-main-options.php:2503 .. +#: admin/views/templates/slider-main-options.php:2655 .. +#: admin/views/templates/slider-main-options.php:2660 .. +#: admin/views/templates/slider-main-options.php:2824 .. +#: admin/views/templates/slider-main-options.php:2828 .. +#: admin/views/templates/slider-main-options.php:3318 +msgid "ms" +msgstr "ms" + +#: ../admin/views/templates/slide-stage.php:2320 +msgid "at Start" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2322 +msgid "Play In Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2323 +msgid "Keep Hidden" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2330 +msgid "Class" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:25 +msgid "Edit Slider" +msgstr "Edytuj suwak" + +#: ../admin/views/templates/slider-main-options.php:25 .. +#: admin/views/templates/sliders-list.php:184 +msgid "New Slider" +msgstr "Nowy suwak" + +#: ../admin/views/templates/slider-main-options.php:36 +msgid "Content Source" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:43 +msgid "Default Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:48 +msgid "Post-Based Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:53 +msgid "Specific Posts" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:58 +msgid "Flickr Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:63 +msgid "Instagram Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:68 +msgid "Woo Commerce Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:73 +msgid "Twitter Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:78 +msgid "Facebook Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:83 +msgid "YouTube Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:88 +msgid "Vimeo Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:104 +msgid "Coming Soon!" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:112 +msgid "Slides (max 33)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:113 .. +#: admin/views/templates/slider-main-options.php:134 +msgid "Display this number of photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:115 .. +#: admin/views/templates/slider-main-options.php:251 +msgid "Access Token" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:116 +msgid "Put in your Instagram Access Token" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:119 +msgid "" +"Get your Instagram Access Token here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:123 +msgid "Instagram User ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:124 +msgid "Put in the Instagram User ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:126 +msgid "" +"Find the Instagram User ID here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:133 .. +#: admin/views/templates/slider-main-options.php:220 +msgid "Slides (max 500)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:136 +msgid "Flickr API Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:137 +msgid "Put in your Flickr API Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:139 +msgid "" +"Read here how to receive your Flickr API key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:144 +msgid "Display a user's public photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:144 +msgid "User Public Photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:145 +msgid "Display a certain photoset from a user" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:145 +msgid "User Photoset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:146 +msgid "Display a gallery" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:147 +msgid "Display a group's photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:147 +msgid "Groups' Photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:151 +msgid "Flickr User Url" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:152 +msgid "Put in the URL of the flickr User" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:157 +msgid "Select Photoset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:159 +msgid "Select the photoset to pull the data from " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:165 +msgid "Flickr Gallery Url" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:166 +msgid "Put in the URL of the flickr Gallery" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:171 +msgid "Flickr Group Url" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:172 +msgid "Put in the URL of the flickr Group" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:180 +msgid "Slides (max 25)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:181 +msgid "Display this number of posts" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:183 .. +#: admin/views/templates/slider-main-options.php:223 +msgid "Cache (sec)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:184 .. +#: admin/views/templates/slider-main-options.php:224 +msgid "Cache the stream for x seconds" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:188 +msgid "Facebook Page" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:189 +msgid "Put in the URL/ID of the Facebook page" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:195 .. +#: admin/views/templates/slider-main-options.php:303 +msgid "Album" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:196 +msgid "Timeline" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:201 +msgid "Select Album" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:203 +msgid "Select the album to pull the data from " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:208 +msgid "App ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:209 +msgid "Put in the Facebook App ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:212 +msgid "App Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:213 +msgid "Put in the Facebook App secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:221 +msgid "Display this number of tweets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:227 +msgid "Twitter Name @" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:228 +msgid "Put in the Twitter Account to stream from" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:231 +msgid "Text Tweets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:235 +msgid "Retweets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:239 +msgid "Replies" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:244 +msgid "Consumer Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:245 +msgid "Put in your Twitter Consumer Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:247 +msgid "Consumer Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:248 +msgid "Put in your Twitter Consumer Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:252 +msgid "Put in your Twitter Access Token" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:255 +msgid "Access Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:256 +msgid "Put in your Twitter Access Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:258 +msgid "" +"Please register " +"your application with Twitter to get the values" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:264 +msgid "Slides (max 50)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:265 .. +#: admin/views/templates/slider-main-options.php:298 +msgid "Display this number of videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:267 +msgid "Youtube API Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:268 +msgid "Put in your YouTube API Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:271 +msgid "" +"Find information about the YouTube API key here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:274 +msgid "Channel ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:275 +msgid "Put in the ID of the YouTube channel" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:279 +msgid "Display the channel´s videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:279 .. +#: admin/views/templates/slider-main-options.php:305 .. +#: admin/views/templates/slider-main-options.php:323 +msgid "Channel" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:280 +msgid "Display a playlist" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:280 +msgid "Playlist" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:285 +msgid "Select Playlist" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:291 +msgid "" +"See how to find the Youtube channel ID here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:297 +msgid "Slides (max 60)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:302 +msgid "Display the user's videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:302 .. +#: admin/views/templates/slider-main-options.php:311 +msgid "User" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:303 +msgid "Display an album" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:304 +msgid "Display a group's videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:304 .. +#: admin/views/templates/slider-main-options.php:315 +msgid "Group" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:305 +msgid "Display a channel's videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:312 +msgid "Either the shortcut URL or ID of the user" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:316 +msgid "Either the shortcut URL or ID of the group" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:319 +msgid "Album ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:320 +msgid "The ID of the album" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:324 +msgid "Either the shortcut URL of the channel" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:332 +msgid "Specific Posts List:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:336 +msgid "Post Types:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:378 +msgid "Post Categories:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:404 +msgid "Filter Events By:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:418 +msgid "Sort Posts By:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:420 +msgid "Post ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:421 +msgid "Date" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:423 +msgid "Slug" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:424 +msgid "Author" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:425 +msgid "Last Modified" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:426 +msgid "Number Of Comments" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:427 +msgid "Random" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:428 +msgid "Unsorted" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:429 +msgid "Custom Order" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:445 +msgid "Sort Direction:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:448 +msgid "Descending" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:450 +msgid "Ascending" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:454 +msgid "Max Posts Per Slider:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:458 +msgid "Limit The Excerpt To:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:470 +msgid "Slider Title & ShortCode" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:475 +msgid "Enter your Slider Name here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:477 +msgid "The title of the slider, example: Slider 1" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:481 +msgid "Enter your Slider Alias here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:483 +msgid "The alias for embedding your slider, example: slider1" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:489 +msgid "Place the shortcode where you want to show the slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:503 +msgid "Select a Slider Type" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:508 +msgid "Standard Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:513 +msgid "Hero Scene" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:518 +msgid "Carousel Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:522 +msgid "Load a Preset from this Slider Type" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:530 +msgid "Save Current Settings as Preset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:807 +msgid "Slide Layout" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:826 +msgid "Full-Screen" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:836 +msgid "Desktop Large" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:836 +msgid "Max" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:857 .. +#: admin/views/templates/slider-main-options.php:888 .. +#: admin/views/templates/slider-main-options.php:921 .. +#: admin/views/templates/slider-main-options.php:956 +msgid "Layer Grid Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:862 +msgid "Specify a layer grid size above" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:893 .. +#: admin/views/templates/slider-main-options.php:926 .. +#: admin/views/templates/slider-main-options.php:961 +msgid "Custom Grid Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:970 +msgid "Show Advanced Size Options" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:977 +msgid "FullScreen Align Force" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:979 +msgid "Layers align within the full slider instead of the layer grid." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:983 +msgid "Increase/Decrease Fullscreen Height" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:988 +msgid "Containers" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:990 +msgid "" +"Example: #header or .header, .footer, #somecontainer | Height of Slider will " +"be decreased with the height of these Containers to fit perfect in the " +"screen." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:996 +msgid "PX or %" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:998 +msgid "" +"Decrease/Increase height of Slider. Can be used with px and %. " +"Positive/Negative values allowed. Example: 40px or 10%" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1004 .. +#: admin/views/templates/slider-main-options.php:1028 +msgid "Min. Height" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1006 +msgid "The minimum height of the Slider in FullScreen mode." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1014 +msgid "Overflow Hidden" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1017 +msgid "" +"Adds overflow:hidden to the slider wrapping container which will hide / cut " +"any overlapping elements. Mostly used in Carousel Sliders." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1021 +msgid "Respect Aspect Ratio" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1024 +msgid "" +"It will keep aspect ratio and ignore max height of Layer Grid by upscaling. " +"Layer Area will be vertical centered." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1030 +msgid "The minimum height of the Slider in FullWidth or Auto mode." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1224 +msgid "Force Full Width:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1270 +msgid "Customize, Build & Implement" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1276 +msgid "" +"Go for further customization using the advanced settings on the right of " +"this configuration page." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1278 +msgid "Show Advanced Options" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1283 +msgid "Start Building Slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1284 +msgid "" +"Our drag and drop editor will make creating slide content an absolut breeze. " +"This is where the magic happens!" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1289 .. +#: admin/views/templates/slider-main-options.php:4286 .. +#: admin/views/templates/slides.php:8 +msgid "Edit Slides" +msgstr "Edytuj slajdy" + +#: ../admin/views/templates/slider-main-options.php:1297 +msgid "Implement your Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1298 +msgid "" +"There are several ways to add your slider to your wordpress post / page / " +"etc." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1305 .. +#: admin/views/templates/slider-main-options.php:4272 +msgid "Save Settings" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1306 .. +#: admin/views/templates/slider-main-options.php:4273 +msgid "updating..." +msgstr "Aktualizacja..." + +#: ../admin/views/templates/slider-main-options.php:1308 .. +#: admin/views/templates/slider-main-options.php:4277 +msgid "Delete Slider" +msgstr "Usuń suwak" + +#: ../admin/views/templates/slider-main-options.php:1310 +msgid "Preview Slider" +msgstr "Poprzedni suwak" + +#: ../admin/views/templates/slider-main-options.php:1329 +msgid "Custom CSS / Javascript" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1332 +msgid "Custom CSS" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1336 +msgid "Custom JavaScript" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1588 +msgid "Slideshow" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1589 +msgid "Defaults" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1590 +msgid "Progress Bar" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1591 +msgid "1st Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1592 .. +#: admin/views/templates/slider-main-options.php:2315 +msgid "Misc." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1602 +msgid "" +"Show multi language controls across the slider. Only available when wpml " +"plugin exists." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1602 +msgid "Use Multi Language (WPML)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1610 +msgid "" +"Call next slide when inactive browser tab is focused again. Use this for " +"avoid dissorted layers and broken timeouts after bluring the browser tab." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1610 +msgid "Next Slide on Focus" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1618 +msgid "" +"The time one slide stays on the screen in Milliseconds. This is a Default " +"Global value. Can be adjusted slide to slide also in the slide editor." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1618 +msgid "Default Slide Duration" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1624 +msgid "Sets a delay before the Slider gets initialized" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1624 +msgid "Initialization Delay" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1629 +msgid "Default transition by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1629 +msgid "Transitions" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1643 +msgid "Default transition duration by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1643 +msgid "Animation Duration" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1652 +msgid "Default main image source size by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1652 +msgid "Image Source Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1668 +msgid "Default background size by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1668 .. +#: admin/views/templates/slider-main-options.php:2133 +msgid "Background Fit" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1690 +msgid "Default background position by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1690 .. +#: admin/views/templates/slider-main-options.php:2150 +msgid "Background Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1716 +msgid "Default background repeat by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1716 .. +#: admin/views/templates/slider-main-options.php:2141 +msgid "Background Repeat" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1727 +msgid "Default Ken/Burn setting by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1738 +msgid "Start Fit: (in %):" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1815 +msgid "End Fit: (in %):" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1820 +msgid "Start Offset X:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1825 +msgid "Start Offset Y:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1830 .. +#: admin/views/templates/slider-main-options.php:1840 .. +#: admin/views/templates/slider-main-options.php:1845 +msgid "End Offset Y:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1835 +msgid "End Offset X:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1855 +msgid "Overwrite Selected Settings on all Slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1864 +msgid "" +"Start from a different slide instead of the first slide. I.e. good for " +"preview / edit mode." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1864 +msgid "Alternative 1st Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1868 +msgid "" +"If active, it will overwrite the first slide transition. Use it to get " +"special transition for the first slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1868 +msgid "First Transition Active" +msgstr "Pierwsze przejście aktywne" + +#: ../admin/views/templates/slider-main-options.php:1873 +msgid "First slide transition type" +msgstr "Rodzaj przejścia pierwszego slajdu" + +#: ../admin/views/templates/slider-main-options.php:1873 +msgid "Transition Type" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1887 +msgid "First slide transition duration." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1887 +msgid "Transition Duration" +msgstr "Czas przejścia" + +#: ../admin/views/templates/slider-main-options.php:1893 +msgid "The number of slots or boxes the slide is divided into." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1893 +msgid "Transition Slot Amount" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1904 +msgid "Stops the Timer when mouse is hovering the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1904 +msgid "Stop Slide On Hover" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1909 +msgid "Stops the slideshow after the predefined loop amount at the predefined slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1909 +msgid "Stop Slider After ..." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1915 +msgid "Stops the slider after certain amount of loops. 0 related to the first loop." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1915 +msgid "Amount of Loops" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1920 +msgid "Stops the slider at the given slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1920 +msgid "At Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1926 +msgid "Randomize the order of the slides at every Page reload." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1926 +msgid "Shuffle / Random Mode" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1931 +msgid "" +"If only one Slide is in the Slider, you can choose wether the Slide should " +"loop or if it should stop. If only one Slide exist, slide will be duplicated " +"!" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1931 +msgid "Loop Single Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1937 +msgid "Allow to stop the Slider out of viewport." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1937 +msgid "Stop Slider Out of ViewPort" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1942 +msgid "Out Of ViewPort:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1944 +msgid "Wait" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1945 +msgid "Pause" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1949 +msgid "Min. Size of Slider must be in Viewport before slide starts again." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1949 +msgid "Area out of ViewPort:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1951 .. +#: admin/views/templates/slider-main-options.php:3111 .. +#: admin/views/templates/slider-main-options.php:3195 +msgid "%" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1959 +msgid "Enable / disable progress var" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1959 +msgid "Progress Bar Active" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1963 +msgid "Position of the progress bar." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1963 +msgid "Progress Bar Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1971 +msgid "The height of the progress bar" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1971 +msgid "Progress Bar Heigth" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1973 .. +#: admin/views/templates/slider-main-options.php:1979 .. +#: admin/views/templates/slider-main-options.php:2074 .. +#: admin/views/templates/slider-main-options.php:2080 .. +#: admin/views/templates/slider-main-options.php:2085 .. +#: admin/views/templates/slider-main-options.php:2182 .. +#: admin/views/templates/slider-main-options.php:2188 .. +#: admin/views/templates/slider-main-options.php:2194 .. +#: admin/views/templates/slider-main-options.php:2199 .. +#: admin/views/templates/slider-main-options.php:2369 .. +#: admin/views/templates/slider-main-options.php:2380 .. +#: admin/views/templates/slider-main-options.php:2405 .. +#: admin/views/templates/slider-main-options.php:2411 .. +#: admin/views/templates/slider-main-options.php:2437 .. +#: admin/views/templates/slider-main-options.php:2443 .. +#: admin/views/templates/slider-main-options.php:2475 .. +#: admin/views/templates/slider-main-options.php:2514 .. +#: admin/views/templates/slider-main-options.php:2525 .. +#: admin/views/templates/slider-main-options.php:2548 .. +#: admin/views/templates/slider-main-options.php:2554 .. +#: admin/views/templates/slider-main-options.php:2614 .. +#: admin/views/templates/slider-main-options.php:2628 .. +#: admin/views/templates/slider-main-options.php:2633 .. +#: admin/views/templates/slider-main-options.php:2638 .. +#: admin/views/templates/slider-main-options.php:2671 .. +#: admin/views/templates/slider-main-options.php:2682 .. +#: admin/views/templates/slider-main-options.php:2718 .. +#: admin/views/templates/slider-main-options.php:2724 .. +#: admin/views/templates/slider-main-options.php:2785 .. +#: admin/views/templates/slider-main-options.php:2799 .. +#: admin/views/templates/slider-main-options.php:2804 .. +#: admin/views/templates/slider-main-options.php:2809 .. +#: admin/views/templates/slider-main-options.php:2839 .. +#: admin/views/templates/slider-main-options.php:2850 .. +#: admin/views/templates/slider-main-options.php:2886 .. +#: admin/views/templates/slider-main-options.php:2892 .. +#: admin/views/templates/slider-main-options.php:3101 .. +#: admin/views/templates/slider-main-options.php:3110 .. +#: admin/views/templates/slider-main-options.php:3117 .. +#: admin/views/templates/slider-main-options.php:3120 +msgid "px" +msgstr "pixeli" + +#: ../admin/views/templates/slider-main-options.php:1977 +#, php-format +msgid "" +"The opacity of the progress bar
        (0 == Transparent, 100 = Solid color, 50 " +"= 50% opacity etc...)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1977 +msgid "Progress Bar Opacity" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1983 +msgid "Color of the progress bar." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1983 +msgid "Progress Bar Color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2047 +msgid "Layout & Visual" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2052 +msgid "Appearance" +msgstr "Wygląd" + +#: ../admin/views/templates/slider-main-options.php:2054 +msgid "Spinner" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2056 .. +#: admin/views/templates/slider-main-options.php:2529 .. +#: admin/views/templates/slider-main-options.php:2686 .. +#: admin/views/templates/slider-main-options.php:2854 +msgid "Position" +msgstr "Pozycja" + +#: ../admin/views/templates/slider-main-options.php:2061 +msgid "If this is enabled, the slider will not be loaded on mobile devices." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2061 +msgid "Disable Slider on Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2066 +msgid "This will disable KenBurns on mobile devices to save performance" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2066 +msgid "Disable KenBurn On Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2070 +msgid "Hide Element Under Width:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2072 +msgid "" +"Hide the slider under the defined slider width. Value 0 will disable the " +"function." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2072 .. +#: admin/views/templates/template-slider-selector.php:15 +msgid "Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2078 +msgid "" +"Hide the selected layers (set layers hide under in slide editor) under the " +"defined slider width. Value 0 will disable the function." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2078 +msgid "Predefined Layers" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2083 +msgid "" +"Hide all layers under the defined slider width. Value 0 will disable the " +"function." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2083 +msgid "All Layers" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2093 +msgid "The Shadow display underneath the banner." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2093 +msgid "Shadow Type" +msgstr "Rodzaj cienia" + +#: ../admin/views/templates/slider-main-options.php:2095 +msgid "No Shadow" +msgstr "Bez cienia" + +#: ../admin/views/templates/slider-main-options.php:2105 +msgid "Show a dotted overlay over the slides." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2105 +msgid "Dotted Overlay Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2115 +msgid "Slider Background" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2116 +msgid "" +"General background color for slider. Clear value to get transparent slider " +"container." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2116 +msgid "Background color" +msgstr "Kolor tła" + +#: ../admin/views/templates/slider-main-options.php:2120 +msgid "" +"Padding around the slider. Together with background color shows as slider " +"border." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2120 +msgid "Padding as Border" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2124 +msgid "Use a general background image instead of general background color." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2124 +msgid "Show Background Image" +msgstr "Pokaż obraz tła" + +#: ../admin/views/templates/slider-main-options.php:2129 +msgid "The source of the general background image." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2129 +msgid "Background Image Url" +msgstr "Adres http://.... obrazu tła" + +#: ../admin/views/templates/slider-main-options.php:2130 +msgid "Set" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2133 +msgid "" +"General background image size. Cover - always fill the container, cuts " +"overlays. Contain- always fits image into slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2135 +msgid "cover" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2136 +msgid "contain" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2137 +msgid "normal" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2141 +msgid "General background image repeat attitude. Used for tiled images." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2143 +msgid "no-repeat" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2144 +msgid "repeat" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2145 +msgid "repeat-x" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2146 +msgid "repeat-y" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2150 +msgid "" +"General background image position. i.e. center center to always center " +"vertical and horizontal the image in the slider background." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2152 +msgid "center top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2153 +msgid "center right" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2154 +msgid "center bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2155 +msgid "center center" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2156 +msgid "left top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2157 +msgid "left center" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2158 +msgid "left bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2159 +msgid "right top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2160 +msgid "right center" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2161 +msgid "right bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2171 +msgid "" +"The position of the slider within the parrent container. (float:left or " +"float:right or with margin:0px auto;). We recomment do use always CENTER, " +"since the slider will auto fill and grow with the wrapping container. Set " +"any border,padding, floating etc. to the wrapping container where the slider " +"embeded instead of using left/right here !" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2171 +msgid "Position on the page" +msgstr "Pozycja na stornie" + +#: ../admin/views/templates/slider-main-options.php:2180 +msgid "The top margin of the slider wrapper div" +msgstr "Górny margines wrapper div suwaka" + +#: ../admin/views/templates/slider-main-options.php:2180 +msgid "Margin Top" +msgstr "Górny margines" + +#: ../admin/views/templates/slider-main-options.php:2186 +msgid "The bottom margin of the slider wrapper div" +msgstr "Dolny margines otoczki suwaka" + +#: ../admin/views/templates/slider-main-options.php:2186 +msgid "Margin Bottom" +msgstr "Dolny Margines" + +#: ../admin/views/templates/slider-main-options.php:2192 +msgid "The left margin of the slider wrapper div" +msgstr "Lewy margines otoczki suwaka" + +#: ../admin/views/templates/slider-main-options.php:2192 +msgid "Margin Left" +msgstr "Lewy margines" + +#: ../admin/views/templates/slider-main-options.php:2197 +msgid "The right margin of the slider wrapper div" +msgstr "Prawy margines otoczki suwaka" + +#: ../admin/views/templates/slider-main-options.php:2197 +msgid "Margin Right" +msgstr "Prawy Margines" + +#: ../admin/views/templates/slider-main-options.php:2208 +msgid "Select a Spinner for your Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2208 +msgid "Choose Spinner" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2214 .. +#: admin/views/templates/slider-main-options.php:3126 +msgid "3" +msgstr "3" + +#: ../admin/views/templates/slider-main-options.php:2215 +msgid "4" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2216 .. +#: admin/views/templates/slider-main-options.php:3127 +msgid "5" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2220 +msgid "The Color the Spinner will be shown in" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2220 +msgid "Spinner Color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2305 +msgid "Navigation" +msgstr "Nawigacja" + +#: ../admin/views/templates/slider-main-options.php:2314 +msgid "Touch" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2320 +msgid "Enable / Disable Arrows" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2320 +msgid "Enable Arrows" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2325 +msgid "Look of the navigation Arrows" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2325 +msgid "Arrows Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2327 .. +#: admin/views/templates/slider-main-options.php:2458 .. +#: admin/views/templates/slider-main-options.php:2592 .. +#: admin/views/templates/slider-main-options.php:2764 +msgid "No Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2343 +msgid "" +"Enable to make arrows always visible. Disable to hide arrows after the " +"defined time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2343 .. +#: admin/views/templates/slider-main-options.php:2645 .. +#: admin/views/templates/slider-main-options.php:2814 +msgid "Always Show " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2345 .. +#: admin/views/templates/slider-main-options.php:2491 .. +#: admin/views/templates/slider-main-options.php:2647 .. +#: admin/views/templates/slider-main-options.php:2816 +msgid "Yes" +msgstr "Tak" + +#: ../admin/views/templates/slider-main-options.php:2346 .. +#: admin/views/templates/slider-main-options.php:2492 .. +#: admin/views/templates/slider-main-options.php:2648 .. +#: admin/views/templates/slider-main-options.php:2817 +msgid "No" +msgstr "Nie" + +#: ../admin/views/templates/slider-main-options.php:2351 +msgid "Time after the Arrows will be hidden(Default: 200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2351 .. +#: admin/views/templates/slider-main-options.php:2496 .. +#: admin/views/templates/slider-main-options.php:2653 +msgid "Hide After" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2356 +msgid "Time after the Arrows will be hidden on Mobile(Default: 1200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2356 .. +#: admin/views/templates/slider-main-options.php:2501 .. +#: admin/views/templates/slider-main-options.php:2658 +msgid "Hide After on Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2362 +msgid "Force Hide Navigation Arrows under width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2362 +msgid "Hide Under" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2367 +msgid "If browser size goes below this value, then Navigation Arrows are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2373 +msgid "Force Hide Navigation over width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2373 +msgid "Hide Over" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2378 +msgid "If browser size goes over this value, then Navigation Arrows are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2384 +msgid "Left Arrow Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2386 +msgid "Horizontal position of the left arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2386 .. +#: admin/views/templates/slider-main-options.php:2415 .. +#: admin/views/templates/slider-main-options.php:2530 .. +#: admin/views/templates/slider-main-options.php:2700 .. +#: admin/views/templates/slider-main-options.php:2868 +msgid "Horizontal Align" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2395 +msgid "Vertical position of the left arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2395 .. +#: admin/views/templates/slider-main-options.php:2425 .. +#: admin/views/templates/slider-main-options.php:2538 .. +#: admin/views/templates/slider-main-options.php:2708 .. +#: admin/views/templates/slider-main-options.php:2876 +msgid "Vertical Align" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2403 +msgid "Offset from current horizontal position of of left arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2403 .. +#: admin/views/templates/slider-main-options.php:2435 .. +#: admin/views/templates/slider-main-options.php:2546 .. +#: admin/views/templates/slider-main-options.php:2716 .. +#: admin/views/templates/slider-main-options.php:2884 +msgid "Horizontal Offset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2409 +msgid "Offset from current vertical position of of left arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2409 .. +#: admin/views/templates/slider-main-options.php:2441 .. +#: admin/views/templates/slider-main-options.php:2552 .. +#: admin/views/templates/slider-main-options.php:2722 .. +#: admin/views/templates/slider-main-options.php:2890 +msgid "Vertical Offset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2414 +msgid "Right Arrow Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2415 +msgid "Horizontal position of the right arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2425 +msgid "Vertical position of the right arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2435 +msgid "Offset from current horizontal position of of right arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2441 +msgid "Offset from current vertical position of of right arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2451 +msgid "Enable / Disable Bullets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2451 +msgid "Enable Bullets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2456 +msgid "Look of the Bullets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2456 +msgid "Bullet Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2473 +msgid "Space between the bullets." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2473 .. +#: admin/views/templates/slider-main-options.php:2612 .. +#: admin/views/templates/slider-main-options.php:2783 +msgid "Space" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2479 +msgid "Direction of the Bullets. Vertical or Horizontal." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2479 .. +#: admin/views/templates/slider-main-options.php:2617 .. +#: admin/views/templates/slider-main-options.php:2788 +msgid "Direction" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2481 .. +#: admin/views/templates/slider-main-options.php:2619 .. +#: admin/views/templates/slider-main-options.php:2790 .. +#: admin/views/templates/slider-main-options.php:2919 .. +#: admin/views/templates/slider-main-options.php:2934 +msgid "Horizontal" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2482 .. +#: admin/views/templates/slider-main-options.php:2620 .. +#: admin/views/templates/slider-main-options.php:2791 .. +#: admin/views/templates/slider-main-options.php:2920 .. +#: admin/views/templates/slider-main-options.php:2935 +msgid "Vertical" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2489 +msgid "" +"Enable to make bullets always visible. Disable to hide bullets after the " +"defined time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2489 +msgid "Always Show" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2496 +msgid "Time after that the bullets will be hidden(Default: 200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2501 +msgid "Time after the bullets will be hidden on Mobile (Default: 1200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2507 +msgid "Force Hide Navigation Bullets under width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2507 .. +#: admin/views/templates/slider-main-options.php:2664 .. +#: admin/views/templates/slider-main-options.php:2832 +msgid "Hide under Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2512 .. +#: admin/views/templates/slider-main-options.php:2523 +msgid "If browser size goes below this value, then Navigation bullets are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2518 +msgid "Force Hide Navigation Bullets over width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2518 .. +#: admin/views/templates/slider-main-options.php:2675 .. +#: admin/views/templates/slider-main-options.php:2843 +msgid "Hide over Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2530 +msgid "Horizontal position of bullets " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2538 +msgid "Vertical positions of bullets " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2546 +msgid "Offset from current horizontal position." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2552 +msgid "Offset from current Vertical position." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2562 +msgid "Enable / Disable Thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2562 +msgid "Enable Thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2569 .. +#: admin/views/templates/slider-main-options.php:2742 +msgid "Wrapper Container" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2571 +msgid "The wrapper div padding of thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2571 .. +#: admin/views/templates/slider-main-options.php:2744 +msgid "Wrapper Padding" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2575 +msgid "Span wrapper to full width or full height based on the direction selected" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2575 .. +#: admin/views/templates/slider-main-options.php:2748 +msgid "Span Wrapper" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2579 +msgid "Thumbnails wrapper background color. For transparent leave empty." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2579 +msgid "Wrapper color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2580 .. +#: admin/views/templates/slider-main-options.php:2752 .. +#: admin/views/templates/slider-main-options.php:2753 +msgid "Wrapper Color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2583 .. +#: admin/views/templates/slider-main-options.php:2756 +#, php-format +msgid "Opacity of the Wrapper container. 0 - transparent, 50 - 50% opacity..." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2583 .. +#: admin/views/templates/slider-main-options.php:2756 +msgid "Wrapper Opacity" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2590 +msgid "Style of the thumbnails." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2590 +msgid "Thumbnails Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2608 +msgid "The amount of max visible Thumbnails in the same time. " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2608 +msgid "Visible Thumbs Amount" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2612 +msgid "Space between the thumbnails." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2617 +msgid "Direction of the Thumbnails. Vertical or Horizontal." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2624 +msgid "Thumbnail Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2626 +msgid "The basic Width of one Thumbnail." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2626 +msgid "Thumb Width" +msgstr "Szerokość miniatur" + +#: ../admin/views/templates/slider-main-options.php:2631 +msgid "The basic Height of one Thumbnail." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2631 +msgid "Thumb Height" +msgstr "Wysokość miniatur" + +#: ../admin/views/templates/slider-main-options.php:2636 +msgid "" +"The minimum width of the auto resized thumbs. Between Max and Min width the " +"sizes are auto calculated)." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2636 +msgid "Min Thumb Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2645 +msgid "" +"Enable to make thumbnails always visible. Disable to hide thumbnails after " +"the defined time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2653 +msgid "Time after that the thumbnails will be hidden(Default: 200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2658 +msgid "Time after that the thumbnails will be hidden on Mobile (Default: 1200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2664 .. +#: admin/views/templates/slider-main-options.php:2675 +msgid "Force Hide Navigation Thumbnails under width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2669 .. +#: admin/views/templates/slider-main-options.php:2680 +msgid "If browser size goes below this value, then Navigation thumbs are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2687 +msgid "" +"Put the thumbnails inside or outside of the slider container. Outside added " +"thumbnails will decrease the size of the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2687 .. +#: admin/views/templates/slider-main-options.php:2856 +msgid "Inner / outer" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2689 .. +#: admin/views/templates/slider-main-options.php:2858 +msgid "Inner Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2690 .. +#: admin/views/templates/slider-main-options.php:2859 +msgid "Outer Left" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2691 .. +#: admin/views/templates/slider-main-options.php:2860 +msgid "Outer Right" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2692 .. +#: admin/views/templates/slider-main-options.php:2861 +msgid "Outer Top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2693 .. +#: admin/views/templates/slider-main-options.php:2862 +msgid "Outer Bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2700 +msgid "Horizontal position of thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2708 +msgid "Vertical position of thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2716 +msgid "Offset from current Horizontal position." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2722 +msgid "Offset from current Vertical position." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2735 +msgid "Enable / Disable navigation tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2735 +msgid "Enable Tabs" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2744 +msgid "The wrapper div padding of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2748 +msgid "Span wrapper to full width or full height based on the direction selected." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2752 +msgid "Tabs wrapper background color. For transparent leave empty." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2762 +msgid "Style of the tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2762 +msgid "Tabs Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2779 +msgid "The amount of max visible tabs in same time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2779 +msgid "Visible Tabs Amount" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2783 +msgid "Space between the tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2788 +msgid "Direction of the Tabs. Vertical or Horizontal." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2795 +msgid "Tab Sizes" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2797 +msgid "The basic width of one tab." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2797 +msgid "Tabs Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2802 +msgid "the basic height of one tab." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2802 +msgid "Tabs Height" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2807 +msgid "" +"The minimum width of the auto resized Tabs. Between Max and Min width the " +"sizes are auto calculated)." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2807 +msgid "Min. Tab Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2814 +msgid "" +"Enable to make tabs always visible. Disable to hide tabs after the defined " +"time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2822 +msgid "Time after that the tabs will be hidden(Default: 200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2822 +msgid "Hide After" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2826 +msgid "Time after that the tabs will be hidden on Mobile (Default: 1200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2826 +msgid "Hide After on Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2832 .. +#: admin/views/templates/slider-main-options.php:2843 +msgid "Force Hide Navigation tabs under width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2837 .. +#: admin/views/templates/slider-main-options.php:2848 +msgid "If browser size goes below this value, then Navigation tabs are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2856 +msgid "" +"Put the tabs inside or outside of the slider container. Outside added tabs " +"will decrease the size of the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2868 +msgid "Horizontal position of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2876 +msgid "Vertical position of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2884 +msgid "Offset from current horizontal position of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2890 +msgid "Offset from current vertical position of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2901 +msgid "Enable Swipe Function on touch devices" +msgstr "Uruchom funkcje wstrząsania w urządzeniach dotykowych" + +#: ../admin/views/templates/slider-main-options.php:2901 +msgid "Touch Enabled" +msgstr "Dotknij aby aktywować" + +#: ../admin/views/templates/slider-main-options.php:2905 +msgid "Scroll below slider on vertical swipe" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2905 +msgid "Drag Block Vertical" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2909 +msgid "Defines the sensibility of gestures. Smaller values mean a higher sensibility" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2909 +msgid "Swipe Treshhold (0 - 200)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2913 +msgid "Defines how many fingers are needed minimum for swiping" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2913 +msgid "Swipe Min Finger" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2917 +msgid "Swipe Direction to swap slides?" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2917 +msgid "Swipe Direction" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2928 +msgid "Allow/disallow to navigate the slider with keyboard." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2928 +msgid "Keyboard Navigation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2932 +msgid "" +"Keyboard Direction to swap slides (horizontal - left/right arrow, vertical - " +"up/down arrow)?" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2932 +msgid "Key Direction" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2939 +msgid "Allow/disallow to navigate the slider with Mouse Scroll." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2939 +msgid "Mouse Scroll Navigation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3082 +msgid "Carousel Settings" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3088 +msgid "Basics" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3089 +msgid "Transformations" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3090 +msgid "Aligns" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3094 +msgid "" +"Infinity Carousel Scroll. No Endpoints exists at first and last slide if " +"valuse is set to ON." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3094 +msgid "Infinity Scroll" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3099 +msgid "The horizontal gap/space between the slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3099 +msgid "Space between slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3105 +msgid "The border radius of slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3116 +msgid "The padding top of slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3119 +msgid "The padding bottom of slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3123 +msgid "The maximum visible items in same time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3123 +msgid "Max. Visible Items" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3128 +msgid "7" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3129 +msgid "9" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3130 +msgid "11" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3131 +msgid "13" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3132 +msgid "15" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3133 +msgid "17" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3134 +msgid "19" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3138 +msgid "" +"Stretch carousel element width to the wrapping container width. Using this " +"you can see only 1 item in same time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3138 +msgid "Stretch Element" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3148 +msgid "" +"All elements out of focus will get some Opacity value based on the Distance " +"to the current focused element, or only the coming/leaving elements." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3148 +msgid "Fade All Elements" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3154 +msgid "Fade is varying based on the distance to the focused element." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3154 +msgid "Varying Fade" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3161 +msgid "Rotation enabled/disabled for not focused elements." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3168 +msgid "Rotation is varying based on the distance to the focused element." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3168 +msgid "Varying Rotation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3173 +msgid "" +"The maximum rotation of the Side elements. Rotation will depend on the " +"element distance to the current focused element. 0 will turn off the Rotation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3173 +msgid "Max. Rotation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3175 +msgid "deg" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3180 +msgid "Scale enabled/disabled for not focused elements." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3188 +msgid "Scale is varying based on the distance to the focused element." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3188 +msgid "Varying Scale" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3193 +msgid "" +"The maximum scale down of the Side elements. Scale will depend on the " +"element distance to the current focused element. Min value is 0 and max " +"value is 100." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3193 +msgid "Max. Scaledown" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3203 +msgid "Horizontal Align of the Carousel." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3203 +msgid "Horizontal Aligns" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3211 +msgid "Vertical Align of the Carousel." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3211 +msgid "Vertical Aligns" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3289 +msgid "" +"Enabling this, will give you new options in the slides to create a unique " +"parallax effect" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3289 +msgid "Enable Parallax" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3294 +msgid "If set to on, parallax will be disabled on mobile devices to save performance" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3294 +msgid "Disable on Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3299 +msgid "Mouse Sensibility" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3301 +msgid "Defines on what event type the parallax should react to" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3301 +msgid "Event" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3303 +msgid "Mouse Move" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3304 +msgid "Scroll Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3305 +msgid "Move and Scroll" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3309 +msgid "Mouse Based parallax calculation Origo" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3309 +msgid "Parallax Origo" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3311 +msgid "Mouse Enter Point" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3312 +msgid "Slider Center" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3316 +msgid "Parallax Speed for Mouse movents." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3316 +msgid "Animation Speed" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3322 +msgid "Parallax Levels" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3324 .. +#: admin/views/templates/slider-main-options.php:3328 .. +#: admin/views/templates/slider-main-options.php:3332 .. +#: admin/views/templates/slider-main-options.php:3336 .. +#: admin/views/templates/slider-main-options.php:3340 .. +#: admin/views/templates/slider-main-options.php:3344 .. +#: admin/views/templates/slider-main-options.php:3348 .. +#: admin/views/templates/slider-main-options.php:3352 .. +#: admin/views/templates/slider-main-options.php:3356 .. +#: admin/views/templates/slider-main-options.php:3360 +msgid "" +"Defines a level that can be used in Slide Editor for this Slider. Smaller " +"value gives a smaller offset effect, higher value will increase the effect." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3324 +msgid "Level Depth 1" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3328 +msgid "Level Depth 2" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3332 +msgid "Level Depth 3" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3336 +msgid "Level Depth 4" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3340 +msgid "Level Depth 5" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3344 +msgid "Level Depth 6" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3348 +msgid "Level Depth 7" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3352 +msgid "Level Depth 8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3356 +msgid "Level Depth 9" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3360 +msgid "Level Depth 10" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3392 +msgid "Performance and SEO Optimization" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3406 +msgid "" +"How to load/preload the images.

        All - Load all " +"image element in a sequence at the initialisation. This will boost up the " +"loading of your page, and will preload all images to have a smooth breakless " +"run already in the first loop.

        Smart - It will " +"allow to load the page as quickest, and load only the current and neighbour " +"slide elements. Will load on demand the next element if not loaded yet. " +"

        Single - It will load only the slide which should " +"be shown, always on demand." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3406 +msgid "Lazy Load" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3409 +msgid "Smart" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3410 +msgid "Single" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3411 +msgid "No Lazy Loading" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3418 +msgid "" +"Define SEO Optimization for the Images in the Slider, useful if Lazy Load is " +"on." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3418 +msgid "SEO Optimization" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3421 +msgid "NoScript" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3422 +msgid "NoFrame" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3472 +msgid "Problem Handlings" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3477 +msgid "Fallbacks" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3478 +msgid "Troubleshooting" +msgstr "Rozwiązywanie problemów" + +#: ../admin/views/templates/slider-main-options.php:3481 +msgid "Simplyfies the Slider on IOS4 and IE8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3481 +msgid "Simplify on IOS4/IE8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3485 +msgid "Disables the Slider and load an alternative image instead" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3485 +msgid "Use Alternative Image" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3488 +msgid "On Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3489 +msgid "On IE8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3490 +msgid "On Mobile and IE8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3494 +msgid "The image that will be loaded instead of the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3494 +msgid "Alternate Image" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3499 +msgid "" +"Turns on / off jquery noconflict mode. Try to enable this option if " +"javascript conflicts exist on the page." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3499 +msgid "JQuery No Conflict Mode" +msgstr "JQuery No Conflict Mode" + +#: ../admin/views/templates/slider-main-options.php:3503 +msgid "" +"Try this to fix some javascript conflicts of type: TypeError: " +"tpj('#rev_slider_1_1').show().revolution is not a function" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3503 +msgid "Put JS Includes To Body" +msgstr "Umieść JS w sekcji BODY" + +#: ../admin/views/templates/slider-main-options.php:3512 +msgid "" +"Activate a protection against wordpress output filters that adds html blocks " +"to the shortcode output like P and BR." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3512 +msgid "Output Filters Protection" +msgstr "Ochrona filtrów wyjściowych" + +#: ../admin/views/templates/slider-main-options.php:3515 +msgid "By Compressing Output" +msgstr "Według rodzaju kompresji" + +#: ../admin/views/templates/slider-main-options.php:3516 +msgid "By Echo Output" +msgstr "Według Echo" + +#: ../admin/views/templates/slider-main-options.php:3545 +msgid "Import / Export / Replace" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3549 +msgid "Import" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3550 .. +#: admin/views/templates/sliders-list.php:154 +msgid "Export" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3551 +msgid "Replace URL" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3563 +msgid "Overwrite or append the custom animations due the new imported values ?" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3563 +msgid "Custom Animations" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3568 +msgid "Overwrite or append the static styles due the new imported values ?" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3568 ../includes/operations. +#: class.php:2322 +msgid "Static Styles" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3577 +msgid "" +"Note! Custom styles will be updated if they exist. Importing slider, will " +"delete all the current slider settings and slides and replacing it with the " +"imported content." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3583 +msgid "Export Slider" +msgstr "Export suwaka" + +#: ../admin/views/templates/slider-main-options.php:3583 +msgid "Export with Dummy Images" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3589 +msgid "" +"Replace all layer and backgorund image url's. example - replace from: http:" +"//localhost" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3589 +msgid "Replace From" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3593 +msgid "" +"Replace all layer and backgorund image url's. example - replace to: http:" +"//yoursite.com" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3593 +msgid "Replace To" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3600 +msgid "Replace URL's" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3601 +msgid "Replacing..." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3604 +msgid "Note! The replace process is not reversible !" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3621 +msgid "API Functions" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3625 +msgid "Methods" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3626 +msgid "Events" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3629 +msgid "Call this function to pause the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3633 +msgid "Call this function to play the slider if it is paused." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3633 +msgid "Resume Slider" +msgstr "Wznów suwak" + +#: ../admin/views/templates/slider-main-options.php:3637 +msgid "Switch slider to previous slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3641 +msgid "Switch slider to next slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3645 .. +#: admin/views/templates/slider-main-options.php:3649 +msgid "Switch to the slide which is defined as parameter." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3645 +msgid "Go To Slide" +msgstr "Idź do slajdu" + +#: ../admin/views/templates/slider-main-options.php:3649 +msgid "Go To Slide with ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3653 +msgid "Get the amount of existing slides in the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3653 +msgid "Max Slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3657 +msgid "Get the current focused slide index." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3657 +msgid "Current Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3661 +msgid "Get the previously played slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3665 +msgid "Scroll page under the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3665 +msgid "External Scroll" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3669 +msgid "" +"Recalculate all positions, sizing etc in the slider. This should be called " +"i.e. if Slider was invisible and becomes visible without any window resize " +"event." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3669 +msgid "Redraw Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3673 +msgid "" +"Unbind all listeners, remove current animations and delete containers. Ready " +"for Garbage collection." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3673 +msgid "Kill Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3678 +msgid "Slider Loaded" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3683 +msgid "Slider swapped to an other slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3687 +msgid "Current Slide as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3689 .. +#: admin/views/templates/slider-main-options.php:3740 +msgid "Previous Slide as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3691 +msgid "Slider paused" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3696 +msgid "Slider is Playing after pause" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3701 +msgid "Video is playing in slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3705 .. +#: admin/views/templates/slider-main-options.php:3715 +msgid "The Video API to Manage Video functions" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3707 .. +#: admin/views/templates/slider-main-options.php:3717 +msgid "youtube, vimeo, html5" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3709 .. +#: admin/views/templates/slider-main-options.php:3719 +msgid "Video Settings" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3711 +msgid "Video stopped in slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3721 +msgid "Slider reached the 'stop at' slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3726 +msgid "Prepared for slide change" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3730 .. +#: admin/views/templates/slider-main-options.php:3738 +msgid "Current Slide as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3732 +msgid "Coming Slide as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3734 +msgid "Finnished with slide change" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3742 +msgid "Last slide starts" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3747 +msgid "Layer Events" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3750 +msgid "Layer Action (enterstage, enteredstage, leavestage,leftstage)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3752 +msgid "Layer Type (image,video,html)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3754 +msgid "Default Settings for Layer" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3756 +msgid "Layer as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3769 +msgid "Google Fonts" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3775 +msgid "Add New Font" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3776 +msgid "" +"Copy the Google Font Family from http://www.google.com/fonts like: Open+Sans:400," +"700,600" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3831 +msgid "*Only Illustration, most changes are not visible." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:4298 +msgid "Save Settings as Preset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:4300 +msgid "Preset Name" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:4301 +msgid "Select" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:4321 +msgid "Google Font String" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:39 +msgid "Social" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:144 +msgid "Embed Slider" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:150 +msgid "Order Posts" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:163 +msgid "Export to HTML" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:188 +msgid "Create New Slider" +msgstr "Utwórz nowy suwak" + +#: ../admin/views/templates/sliders-list.php:189 +msgid "Add Template Slider" +msgstr "" + +#: ../admin/views/templates/slides-list.php:92 +msgid "Unpublish Slide" +msgstr "Nie publikuj slajdu" + +#: ../admin/views/templates/slides-list.php:96 +msgid "Publish Slide" +msgstr "Publikuj slajd" + +#: ../admin/views/templates/slides-list.php:115 +msgid "Slide Image - Click to change" +msgstr "" + +#: ../admin/views/templates/slides-list.php:135 +msgid "Deleting Slide..." +msgstr "" + +#: ../admin/views/templates/slides-list.php:139 +msgid "Open copy / move dialog" +msgstr "" + +#: ../admin/views/templates/slides-list.php:147 +msgid "Working..." +msgstr "" + +#: ../admin/views/templates/slides.php:16 ../admin/views/templates/slides.php:36 +msgid "New Slide" +msgstr "Nowy slajd" + +#: ../admin/views/templates/slides.php:18 ../admin/views/templates/slides.php:38 +msgid "New Transparent Slide" +msgstr "" + +#: ../admin/views/templates/slides.php:19 ../admin/views/templates/slides.php:39 +msgid "Adding Slide..." +msgstr "" + +#: ../admin/views/templates/slides.php:36 +msgid "Select image or multiple images to add slide or slides" +msgstr "" + +#: ../admin/views/templates/slides.php:41 +msgid "Edit Static / Global Layers" +msgstr "" + +#: ../admin/views/templates/slides.php:46 +msgid "To Slider Settings" +msgstr "Ustawienia suwaka" + +#: ../admin/views/templates/template-selector.php:17 +msgid "Slide" +msgstr "Slajd" + +#: ../admin/views/templates/template-selector.php:22 .. +#: admin/views/templates/template-slider-selector.php:20 +msgid "Revolution Base" +msgstr "" + +#: ../admin/views/templates/template-selector.php:23 +msgid "All Slides" +msgstr "" + +#: ../admin/views/templates/template-selector.php:24 +msgid "Templates" +msgstr "" + +#: ../admin/views/templates/template-selector.php:227 .. +#: admin/views/templates/template-selector.php:240 +msgid "Import Template Slide" +msgstr "" + +#: ../admin/views/templates/template-selector.php:237 .. +#: admin/views/templates/template-slider-selector.php:166 +msgid "" +"Please select the corresponding zip file from the download packages import " +"folder called" +msgstr "" + +#: ../admin/views/templates/template-slider-selector.php:159 .. +#: admin/views/templates/template-slider-selector.php:169 +msgid "Import Template Slider" +msgstr "" + +#: ../admin/views/templates/wpml-selector.php:11 +msgid "Preview Slide" +msgstr "" + +#: ../admin/views/templates/wpml-selector.php:41 +msgid "Choose slide language" +msgstr "" + +#: ../includes/extension.class.php:56 +msgid "Slider Revolution" +msgstr "" + +#: ../includes/extension.class.php:112 +msgid "Choose Revolution Slider" +msgstr "" + +#: ../includes/extension.class.php:116 +msgid "--- Choose Slider ---" +msgstr "" + +#: ../includes/external-sources.class.php:382 +msgid "Can't get the bearer token, check your credentials" +msgstr "" + +#: ../includes/external-sources.class.php:437 +msgid "Bearer Token is good, check your query" +msgstr "" + +#: ../includes/navigation.class.php:155 +msgid "Invalid ID" +msgstr "" + +#: ../includes/navigation.class.php:159 +msgid "Navigation could not be deleted" +msgstr "" + +#: ../includes/operations.class.php:268 ../includes/operations.class.php:339 +msgid "## Custom Animation ##" +msgstr "" + +#: ../includes/operations.class.php:270 ../includes/operations.class.php:342 +msgid "- VERSION 5.0 ANIMATIONS -" +msgstr "" + +#: ../includes/operations.class.php:292 ../includes/operations.class.php:355 +msgid "- VERSION 4.0 ANIMATIONS -" +msgstr "" + +#: ../includes/operations.class.php:313 ../includes/operations.class.php:375 +msgid "- SAVED CUSTOM ANIMATIONS -" +msgstr "" + +#: ../includes/operations.class.php:340 +msgid "Automatic Reverse" +msgstr "" + +#: ../includes/operations.class.php:1248 ../includes/operations.class.php:1340 +msgid "Choose language" +msgstr "" + +#: ../includes/operations.class.php:1381 +msgid "CAPTIONS CSS" +msgstr "" + +#: ../includes/operations.class.php:1413 +msgid "Replace image path:" +msgstr "" + +#: ../includes/operations.class.php:1413 +msgid "From:" +msgstr "" + +#: ../includes/operations.class.php:1413 +msgid "To:" +msgstr "" + +#: ../includes/operations.class.php:1413 +msgid "Replace" +msgstr "" + +#: ../includes/operations.class.php:1416 +msgid "Header" +msgstr "" + +#: ../includes/operations.class.php:1416 ../includes/operations.class.php:1418 .. +#: includes/operations.class.php:1420 ../includes/operations.class.php:1422 +msgid "Mark to Copy" +msgstr "" + +#: ../includes/operations.class.php:1420 +msgid "Body" +msgstr "" + +#: ../includes/operations.class.php:1422 +msgid "Script" +msgstr "" + +#: ../includes/operations.class.php:1442 +msgid "Loading Preview..." +msgstr "" + +#: ../includes/operations.class.php:1601 +msgid "Purchase Code already registered!" +msgstr "" + +#: ../includes/operations.class.php:2003 +msgid "Overall Slider Performance" +msgstr "" + +#: ../includes/operations.class.php:2006 ../includes/operations.class.php:2096 .. +#: includes/operations.class.php:2183 ../includes/operations.class.php:2260 .. +#: includes/operations.class.php:2386 ../includes/operations.class.php:2467 +msgid "Slow" +msgstr "" + +#: ../includes/operations.class.php:2007 ../includes/operations.class.php:2097 .. +#: includes/operations.class.php:2184 ../includes/operations.class.php:2261 .. +#: includes/operations.class.php:2387 ../includes/operations.class.php:2468 +msgid "Ok" +msgstr "" + +#: ../includes/operations.class.php:2008 ../includes/operations.class.php:2098 .. +#: includes/operations.class.php:2185 ../includes/operations.class.php:2262 .. +#: includes/operations.class.php:2388 ../includes/operations.class.php:2469 +msgid "Fast" +msgstr "" + +#: ../includes/operations.class.php:2014 ../includes/operations.class.php:2029 .. +#: includes/operations.class.php:2044 +msgid "Load Speed UMTS:" +msgstr "" + +#: ../includes/operations.class.php:2018 ../includes/operations.class.php:2033 .. +#: includes/operations.class.php:2048 +msgid "Load Speed DSL:" +msgstr "" + +#: ../includes/operations.class.php:2022 ../includes/operations.class.php:2037 .. +#: includes/operations.class.php:2052 +msgid "Load Speed T1:" +msgstr "" + +#: ../includes/operations.class.php:2059 +msgid "Total Slider Size:" +msgstr "" + +#: ../includes/operations.class.php:2064 +msgid "Preloaded Slides Size:" +msgstr "" + +#: ../includes/operations.class.php:2076 +msgid "Need Some Attention" +msgstr "" + +#: ../includes/operations.class.php:2093 +msgid "Image Performance" +msgstr "" + +#: ../includes/operations.class.php:2105 +msgid "Images Loaded:" +msgstr "" + +#: ../includes/operations.class.php:2110 ../includes/operations.class.php:2202 .. +#: includes/operations.class.php:2273 ../includes/operations.class.php:2399 .. +#: includes/operations.class.php:2480 +msgid "Hide Details" +msgstr "" + +#: ../includes/operations.class.php:2110 ../includes/operations.class.php:2110 .. +#: includes/operations.class.php:2202 ../includes/operations.class.php:2202 .. +#: includes/operations.class.php:2273 ../includes/operations.class.php:2273 .. +#: includes/operations.class.php:2399 ../includes/operations.class.php:2399 .. +#: includes/operations.class.php:2480 ../includes/operations.class.php:2480 +msgid "Show Details" +msgstr "" + +#: ../includes/operations.class.php:2137 ../includes/operations.class.php:2220 +msgid "extern" +msgstr "" + +#: ../includes/operations.class.php:2139 ../includes/operations.class.php:2222 +msgid "missing" +msgstr "" + +#: ../includes/operations.class.php:2180 +msgid "Video Performance" +msgstr "" + +#: ../includes/operations.class.php:2192 +msgid "Videos Loaded (max):" +msgstr "" + +#: ../includes/operations.class.php:2198 +msgid "Unknown" +msgstr "" + +#: ../includes/operations.class.php:2257 +msgid "CSS Performance" +msgstr "" + +#: ../includes/operations.class.php:2269 +msgid "CSS Loaded:" +msgstr "" + +#: ../includes/operations.class.php:2294 +msgid "css/settings.css" +msgstr "" + +#: ../includes/operations.class.php:2358 +msgid "Dynamic Styles" +msgstr "" + +#: ../includes/operations.class.php:2383 +msgid "jQuery Performance" +msgstr "" + +#: ../includes/operations.class.php:2395 +msgid "jQuery Loaded:" +msgstr "" + +#: ../includes/operations.class.php:2464 +msgid "Google Fonts Performance" +msgstr "" + +#: ../includes/operations.class.php:2476 +msgid "Fonts Loaded:" +msgstr "" + +#: ../includes/output.class.php:273 +msgid "" +"No slides found, please add at least one Slide Template to the choosen " +"Template Slider." +msgstr "" + +#: ../includes/output.class.php:275 +msgid "No slides found, please add some slides" +msgstr "" + +#: ../includes/output.class.php:4020 +msgid "Revolution Slider Error" +msgstr "" + +#: ../includes/slide.class.php:205 +msgid "Source must be from Stream" +msgstr "" + +#: ../includes/slider.class.php:810 +msgid "Please select the correct zip file" +msgstr "" + +#: ../includes/slider.class.php:827 +msgid "Please select the correct zip file, checksum failed!" +msgstr "" + +#: ../includes/slider.class.php:903 +msgid "animations imported!" +msgstr "" + +#: ../includes/slider.class.php:905 +msgid "" +"no custom animations found, if slider uses custom animations, the provided " +"export may be broken..." +msgstr "" + +#: ../includes/slider.class.php:963 +msgid "dynamic styles imported!" +msgstr "" + +#: ../includes/slider.class.php:965 +msgid "" +"no dynamic styles found, if slider uses dynamic styles, the provided export " +"may be broken..." +msgstr "" + +#: ../includes/slider.class.php:1050 ../includes/slider.class.php:1083 .. +#: includes/slider.class.php:1202 ../includes/slider.class.php:1235 +msgid " not found!
        " +msgstr "" + +#: ../includes/slider.class.php:1327 +msgid "could not find correct Slide to copy, please try again." +msgstr "" + +#: ../includes/slider.class.php:1485 ../includes/slider.class.php:1494 +msgid "Slide could not be duplicated" +msgstr "" + +#: ../includes/slider.class.php:1502 +msgid "Slide could not be copied" +msgstr "" + +#: ../includes/slider.class.php:1810 +msgid "Failed to load Stream" +msgstr "" + +#: ../includes/widget.class.php:15 +msgid "Displays a revolution slider on the page" +msgstr "Pokaż Slider na stronie" + +#: ../includes/widget.class.php:16 +msgid "Revolution Slider" +msgstr "Revolution Slider" + +#: ../includes/widget.class.php:30 +msgid "No sliders found, Please create a slider" +msgstr "Nie odnaleziono suwaka, proszę go utworzyć" + +#: ../includes/widget.class.php:69 +msgid "Home Page Only" +msgstr "" + +#: ../includes/widget.class.php:72 +msgid "Pages: (example: 2,10)" +msgstr "" + +#: ../includes/framework/base-admin.class.php:267 +msgid "Wrong Request" +msgstr "" + +#: ../includes/framework/base.class.php:219 +msgid "Original" +msgstr "" + +#: ../includes/framework/base.class.php:220 ../includes/framework/base.class.php: +#: 267 ../includes/framework/base.class.php:282 +msgid "Large" +msgstr "" + +#: ../includes/framework/base.class.php:221 +msgid "Large Square" +msgstr "" + +#: ../includes/framework/base.class.php:222 ../includes/framework/base.class.php: +#: 257 ../includes/framework/base.class.php:266 ../includes/framework/base.class. +#: php:281 +msgid "Medium" +msgstr "" + +#: ../includes/framework/base.class.php:223 +msgid "Medium 800" +msgstr "" + +#: ../includes/framework/base.class.php:224 +msgid "Medium 640" +msgstr "" + +#: ../includes/framework/base.class.php:225 ../includes/framework/base.class.php: +#: 265 +msgid "Small" +msgstr "" + +#: ../includes/framework/base.class.php:226 +msgid "Small 320" +msgstr "" + +#: ../includes/framework/base.class.php:227 ../includes/framework/base.class.php: +#: 234 ../includes/framework/base.class.php:280 +msgid "Thumbnail" +msgstr "Miniatura" + +#: ../includes/framework/base.class.php:228 +msgid "Square" +msgstr "" + +#: ../includes/framework/base.class.php:233 ../includes/framework/base.class.php: +#: 240 +msgid "Standard Resolution" +msgstr "" + +#: ../includes/framework/base.class.php:235 +msgid "Low Resolution" +msgstr "" + +#: ../includes/framework/base.class.php:245 +msgid "Size 0" +msgstr "" + +#: ../includes/framework/base.class.php:246 +msgid "Size 1" +msgstr "" + +#: ../includes/framework/base.class.php:247 +msgid "Size 2" +msgstr "" + +#: ../includes/framework/base.class.php:248 +msgid "Size 3" +msgstr "" + +#: ../includes/framework/base.class.php:249 +msgid "Size 4" +msgstr "" + +#: ../includes/framework/base.class.php:250 +msgid "Size 5" +msgstr "" + +#: ../includes/framework/base.class.php:251 +msgid "Size 6" +msgstr "" + +#: ../includes/framework/base.class.php:256 +msgid "Default" +msgstr "" + +#: ../includes/framework/base.class.php:258 +msgid "High" +msgstr "" + +#: ../includes/framework/base.class.php:259 +msgid "Standard" +msgstr "" + +#: ../includes/framework/base.class.php:260 +msgid "Max. Res." +msgstr "" + +#: ../includes/framework/base.class.php:279 +msgid "Original Size" +msgstr "" + +#: ../includes/framework/em-integration.class.php:32 +msgid "All Events" +msgstr "" + +#: ../includes/framework/em-integration.class.php:33 +msgid "Today" +msgstr "" + +#: ../includes/framework/em-integration.class.php:34 +msgid "Tomorrow" +msgstr "" + +#: ../includes/framework/em-integration.class.php:35 +msgid "Future" +msgstr "" + +#: ../includes/framework/em-integration.class.php:36 +msgid "Past" +msgstr "" + +#: ../includes/framework/em-integration.class.php:37 +msgid "This Month" +msgstr "" + +#: ../includes/framework/em-integration.class.php:38 +msgid "Next Month" +msgstr "" + +#: ../includes/framework/em-integration.class.php:168 +msgid "Event Start Date" +msgstr "" + +#: ../includes/framework/em-integration.class.php:169 +msgid "Event End Date" +msgstr "" + +#: ../includes/framework/functions-wordpress.class.php:886 +#, php-format +msgid "View all posts in %s" +msgstr "" + +#: ../includes/framework/wpml.class.php:46 ../includes/framework/wpml.class.php:162 +msgid "All Languages" +msgstr "" diff --git a/plugins/revslider/languages/revslider-ru_RU.mo b/plugins/revslider/languages/revslider-ru_RU.mo new file mode 100644 index 0000000..4442516 Binary files /dev/null and b/plugins/revslider/languages/revslider-ru_RU.mo differ diff --git a/plugins/revslider/languages/revslider-ru_RU.po b/plugins/revslider/languages/revslider-ru_RU.po new file mode 100644 index 0000000..f234413 --- /dev/null +++ b/plugins/revslider/languages/revslider-ru_RU.po @@ -0,0 +1,7735 @@ +msgid "" +msgstr "" +"Project-Id-Version: Revolution Slider\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: Mon Jul 13 2015 10:02:33 GMT+0200 (CEST)\n" +"PO-Revision-Date: Tue Aug 04 2015 14:54:25 GMT+0200 (CEST)\n" +"Last-Translator: admin \n" +"Language-Team: \n" +"Language: Russian\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && " +"n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Generator: Loco - https://localise.biz/\n" +"X-Poedit-Language: \n" +"X-Poedit-Country: \n" +"X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;" +"__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;" +"_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;" +"esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;" +"esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n" +"X-Poedit-Basepath: ../\n" +"X-Poedit-Bookmarks: \n" +"X-Poedit-SearchPath-0: .\n" +"X-Textdomain-Support: yes\n" +"X-Loco-Target-Locale: ru_RU" + +#: ../revslider.php:167 +msgid "Include RevSlider libraries globally (all pages/posts)" +msgstr "Подключить библиотеки Revslider глобально ( все страницы / записи )" + +#: ../revslider.php:168 +msgid "Pages to include RevSlider libraries" +msgstr "Страницы включены в RevSlider библиотеки" + +#: ../revslider.php:169 +msgid "" +"If you want to use the PHP function \"putRevSlider\" in your code please make " +"sure to check \" " +msgstr "" +"Если вы хотите использовать функцию PHP \"putRevSlider\" в коде пожалуйста, не " +"забудьте проверить \"" + +#: ../revslider.php:169 +msgid "" +" \" in the backend's \"General Settings\" (top right panel).

        Or add " +"the current page to the \"" +msgstr "" +"\" во внутреннем интерфейсе в \" Общие настройки\" (верхняя правая панель). " +"

        Или добавить текущую страницу в \"" + +#: ../revslider.php:169 +msgid "\" option box." +msgstr "\" опция." + +#: ../revslider.php:209 +msgid "Revolution Slider Error:" +msgstr "Revolution Slider Ошибка:" + +#: ../admin/revslider-admin.class.php:62 ../admin/views/navigation-editor.php:28 +msgid "Navigation Editor" +msgstr "Редактор Навигации" + +#: ../admin/revslider-admin.class.php:188 +msgid "-- wrong alias -- " +msgstr "-- неправильный псевдоним --" + +#: ../admin/revslider-admin.class.php:189 +msgid "Navigation Bullets and Arrows are now set to none." +msgstr "Навигационные Маркеры и Стрелки выключены" + +#: ../admin/revslider-admin.class.php:190 +msgid "Create Template" +msgstr "Создать Шаблон" + +#: ../admin/revslider-admin.class.php:191 +msgid "Do you really want to delete" +msgstr "Вы действительно хотите удалить" + +#: ../admin/revslider-admin.class.php:192 +msgid "Are you sure to replace the urls?" +msgstr "Вы уверены что хотите заменить URLs?" + +#: ../admin/revslider-admin.class.php:193 +msgid "" +"Set selected settings on all Slides of this Slider? (This will be saved " +"immediately)" +msgstr "" +"Применить выбранные настройки для всех Слайдов этого Слайдера? ( Изменения " +"сохранятся мгновенно )" + +#: ../admin/revslider-admin.class.php:194 ../admin/views/slide-overview.php:174 +msgid "Select Slide Image" +msgstr "Выбрать изображение слайда" + +#: ../admin/revslider-admin.class.php:195 +msgid "Select Slide Video" +msgstr "Выбрать Видео для Слайда" + +#: ../admin/revslider-admin.class.php:196 +msgid "Show Slide Options" +msgstr "Показать Параметры Слайда" + +#: ../admin/revslider-admin.class.php:197 +msgid "Hide Slide Options" +msgstr "Спрятать Параметры Слайда" + +#: ../admin/revslider-admin.class.php:198 ../admin/views/slide-overview.php:168 .. +#: admin/views/system/dialog-copy-move.php:3 ../admin/views/templates/slider- +#: main-options.php:1433 ../admin/views/templates/slider-main-options.php:4437 .. +#: admin/views/templates/slides.php:21 ../admin/views/templates/slides.php:43 +msgid "Close" +msgstr "Закрыть" + +#: ../admin/revslider-admin.class.php:199 +msgid "Really update global styles?" +msgstr "Вы уверены что хотите обновить глобальные стили?" + +#: ../admin/revslider-admin.class.php:200 +msgid "Global Styles Editor" +msgstr "Редактор Глобальных Стилей" + +#: ../admin/revslider-admin.class.php:201 ../admin/revslider-admin.class.php:239 . +#: ./admin/views/templates/slider-main-options.php:4458 +msgid "Select Image" +msgstr "Выбрать Изображение" + +#: ../admin/revslider-admin.class.php:202 +msgid "Video Not Found!" +msgstr "Видео не Найдено!" + +#: ../admin/revslider-admin.class.php:203 +msgid "Handle has to be at least three character long" +msgstr "Значение должно быть не меньше 3 символов" + +#: ../admin/revslider-admin.class.php:204 +msgid "Really change font settings?" +msgstr "Вы уверены что хотите изменить настройки шрифта?" + +#: ../admin/revslider-admin.class.php:205 +msgid "Really delete font?" +msgstr "Вы уверены что хотите удалить шрифт?" + +#: ../admin/revslider-admin.class.php:206 +msgid "Class already exists, overwrite?" +msgstr "Класс уже существует, перезаписать?" + +#: ../admin/revslider-admin.class.php:207 +msgid "Class must be a valid CSS class name" +msgstr "Класс должен быть валидным именем CSS класса" + +#: ../admin/revslider-admin.class.php:208 +msgid "Really overwrite Class?" +msgstr "Вы уверены что хотите перезаписать Класс?" + +#: ../admin/revslider-admin.class.php:209 +msgid "Really delete Class" +msgstr "Вы уверены что хотите удалить Класс?" + +#: ../admin/revslider-admin.class.php:210 +msgid "? This can't be undone!" +msgstr "? Это действие нельзя отменить!" + +#: ../admin/revslider-admin.class.php:211 +msgid "This class does not exist." +msgstr "Класс не найден." + +#: ../admin/revslider-admin.class.php:212 +msgid "" +"Making changes to these settings will probably overwrite advanced settings. " +"Continue?" +msgstr "Изменение этих настроек может перезаписать расширенные настройки. Продолжить?" + +#: ../admin/revslider-admin.class.php:213 +msgid "Select Static Layer Image" +msgstr "Выбрать изображение статического слоя" + +#: ../admin/revslider-admin.class.php:214 +msgid "Select Layer Image" +msgstr "Выбрать изображение слоя" + +#: ../admin/revslider-admin.class.php:215 +msgid "Do you really want to delete all the layers?" +msgstr "Вы уверены что хотите удалить все слои?" + +#: ../admin/revslider-admin.class.php:216 +msgid "Layer Animation Editor" +msgstr "Редактор Анимации Слоя" + +#: ../admin/revslider-admin.class.php:217 +msgid "Animation already exists, overwrite?" +msgstr "Анимация уже существует, перезаписать?" + +#: ../admin/revslider-admin.class.php:218 +msgid "Really overwrite animation?" +msgstr "Вы уверены что хотите перезаписать анимацию?" + +#: ../admin/revslider-admin.class.php:219 +msgid "Default animations can't be deleted" +msgstr "Стандартные анимации не могут быть удалены" + +#: ../admin/revslider-admin.class.php:220 +msgid "Must be greater than start time" +msgstr "Значение должно быть больше чем время старта" + +#: ../admin/revslider-admin.class.php:221 +msgid "Selected layer not set" +msgstr "Выбранный слой не установлен" + +#: ../admin/revslider-admin.class.php:222 +msgid "Edit Layer Start" +msgstr "Редактировать Начало Слоя" + +#: ../admin/revslider-admin.class.php:223 +msgid "Edit Layer End" +msgstr "Редактировать Окончание Слоя" + +#: ../admin/revslider-admin.class.php:224 +msgid "Default Animations can't be renamed" +msgstr "Стандартные анимации не могут быть переименованы" + +#: ../admin/revslider-admin.class.php:225 +msgid "Animationname already existing" +msgstr "Анимация с таким именем уже существует" + +#: ../admin/revslider-admin.class.php:226 +msgid "CSS classname already existing" +msgstr "CSS класс с таким именем уже существует" + +#: ../admin/revslider-admin.class.php:227 +msgid "Original CSS classname not found" +msgstr "Оригинальный CSS класс не найден" + +#: ../admin/revslider-admin.class.php:228 +msgid "Enter a correct class name" +msgstr "Введите корректное имя класса" + +#: ../admin/revslider-admin.class.php:229 +msgid "Class not found in database" +msgstr "Класс не найден в базе данных" + +#: ../admin/revslider-admin.class.php:230 +msgid "CSS classname not found" +msgstr "CSS класс не найден" + +#: ../admin/revslider-admin.class.php:231 +msgid "Delete this caption? This may affect other Slider" +msgstr "Удалить этот заголовок? Это может повлиять на другие Слайдеры" + +#: ../admin/revslider-admin.class.php:232 +msgid "" +"This will update the Class with the current set Style settings, this may " +"affect other Sliders. Proceed?" +msgstr "" +"Настройки Класса будет обновлены в соответствии с текущими настройками Стиля," +" это может отразиться на других Слайдерах. Продолжить?" + +#: ../admin/revslider-admin.class.php:233 +msgid "Template will have the state of the last save, proceed?" +msgstr "Шаблон останется в состоянии последнего сохранения. Продолжить?" + +#: ../admin/revslider-admin.class.php:234 +msgid "Please enter a Slide title" +msgstr "Пожалуйста введите название Слайда" + +#: ../admin/revslider-admin.class.php:235 +msgid "Please Wait a Moment" +msgstr "Пожалуйста подождите" + +#: ../admin/revslider-admin.class.php:236 ../admin/views/templates/slide-selector. +#: php:227 ../admin/views/templates/slides-list.php:146 +msgid "Copy / Move" +msgstr "Копия / Перенос" + +#: ../admin/revslider-admin.class.php:237 +msgid "Preset Loaded" +msgstr "Набор Настроек загружен" + +#: ../admin/revslider-admin.class.php:238 ../admin/views/templates/slide-selector. +#: php:253 +msgid "Add Bulk Slides" +msgstr "Пакетное добавление Слайдов" + +#: ../admin/revslider-admin.class.php:240 ../admin/views/navigation-editor.php:38 +#: ../admin/views/templates/slider-main-options.php:2453 +msgid "Arrows" +msgstr "Стрелочки" + +#: ../admin/revslider-admin.class.php:241 ../admin/views/navigation-editor.php:39 +#: ../admin/views/templates/slider-main-options.php:2454 +msgid "Bullets" +msgstr "Маркеры" + +#: ../admin/revslider-admin.class.php:242 ../admin/views/templates/slider-main- +#: options.php:2731 +msgid "Thumbnails" +msgstr "Миниатюры" + +#: ../admin/revslider-admin.class.php:243 ../admin/views/navigation-editor.php:41 +#: ../admin/views/templates/slider-main-options.php:2455 .. +#: admin/views/templates/slider-main-options.php:2903 +msgid "Tabs" +msgstr "Табы" + +#: ../admin/revslider-admin.class.php:244 +msgid "Delete this Navigation?" +msgstr "Удалить Навигацию?" + +#: ../admin/revslider-admin.class.php:245 +msgid "Navigation name could not be updated" +msgstr "Имя навигации не может быть обновлено." + +#: ../admin/revslider-admin.class.php:246 +msgid "Name too short, at least 3 letters between a-zA-z needed" +msgstr "Имя слишком короткое, минимальная длина три буквы a-zA-Z" + +#: ../admin/revslider-admin.class.php:247 +msgid "Navigation name already exists, please choose a different name" +msgstr "Навигация с таким именем уже существует, пожалуйста выберите другое имя" + +#: ../admin/revslider-admin.class.php:248 +msgid "Remove current element from Navigation?" +msgstr "Удалить элемент из Навигации?" + +#: ../admin/revslider-admin.class.php:249 +msgid "This navigation element does not exist, create one?" +msgstr "Элемент Навигации не существует, создать Элемент?" + +#: ../admin/revslider-admin.class.php:250 +msgid "Overwrite current animation?" +msgstr "Перезаписать анимацию?" + +#: ../admin/revslider-admin.class.php:251 +msgid "Default animations can't be changed" +msgstr "Стандартные анимации не могут быть изменены" + +#: ../admin/revslider-admin.class.php:252 +msgid "Animation already existing with given handle, please choose a different name." +msgstr "Анимация с данным именем уже существует, пожалуйста выберите другое имя." + +#: ../admin/revslider-admin.class.php:253 +msgid "Really delete animation:" +msgstr "Вы уверены что хотите удалить анимацию ?" + +#: ../admin/revslider-admin.class.php:254 +msgid "This will reset the navigation, continue?" +msgstr "Это сбросит навигацию, продолжить?" + +#: ../admin/revslider-admin.class.php:255 +msgid "Preset name already exists, please choose a different name" +msgstr "Набор Настроек с таким именем уже существует, пожалуйста выберите другое имя" + +#: ../admin/revslider-admin.class.php:256 +msgid "Really delete this preset?" +msgstr "Вы уверены что хотите удалить Набор Настроек?" + +#: ../admin/revslider-admin.class.php:257 +msgid "This will update the preset with the current settings. Proceed?" +msgstr "" + +#: ../admin/revslider-admin.class.php:258 +msgid "Maybe wrong YoutTube ID given" +msgstr "" +"Возможно вы указали неверный \n" +"YoutTube ID" + +#: ../admin/revslider-admin.class.php:259 +msgid "Preset not found" +msgstr "Набор Настроек не найден" + +#: ../admin/revslider-admin.class.php:260 +msgid "Cover Image need to be set for videos" +msgstr "Видео должно иметь Изображение-обложку " + +#: ../admin/revslider-admin.class.php:261 +msgid "Really remove this action?" +msgstr "Вы уверены что хотите удалить это действие?" + +#: ../admin/revslider-admin.class.php:262 +msgid "Layer is triggered by " +msgstr "Слой инициируется" + +#: ../admin/revslider-admin.class.php:263 +msgid " due to action: " +msgstr "при действии:" + +#: ../admin/revslider-admin.class.php:264 +msgid "layer:" +msgstr "слой:" + +#: ../admin/revslider-admin.class.php:265 +msgid "Start Layer \"in\" animation" +msgstr "Начать анимацию \"появления\" Слоя" + +#: ../admin/revslider-admin.class.php:266 +msgid "Start Layer \"out\" animation" +msgstr "Начать анимацию \"исчезания\" Слоя" + +#: ../admin/revslider-admin.class.php:267 ../admin/views/templates/slide-stage. +#: php:2257 +msgid "Start Video" +msgstr "Показывать Видео" + +#: ../admin/revslider-admin.class.php:268 ../admin/views/templates/slide-stage. +#: php:2258 +msgid "Stop Video" +msgstr "Остановить Видео" + +#: ../admin/revslider-admin.class.php:269 ../admin/views/templates/slide-stage. +#: php:2256 +msgid "Toggle Layer Animation" +msgstr "Переключить Анимацию Слоя" + +#: ../admin/revslider-admin.class.php:270 ../admin/views/templates/slide-stage. +#: php:2259 +msgid "Toggle Video" +msgstr "Переключить Видео" + +#: ../admin/revslider-admin.class.php:271 ../admin/views/templates/slider-main- +#: options.php:3812 +msgid "Last Slide" +msgstr "Последний Слайд" + +#: ../admin/revslider-admin.class.php:272 ../admin/views/templates/slide-stage. +#: php:2260 +msgid "Simulate Click" +msgstr "Имитировать Нажатие" + +#: ../admin/revslider-admin.class.php:273 +msgid "Toogle Class" +msgstr "Переключить Класс" + +#: ../admin/revslider-admin.class.php:274 +msgid "Copy hover styles to idle?" +msgstr "Копировать hover стили в обычные стили?" + +#: ../admin/revslider-admin.class.php:275 +msgid "Copy idle styles to hover?" +msgstr "Копировать обычные стили в hover стили?" + +#: ../admin/revslider-admin.class.php:276 +msgid "Please select at least one device type" +msgstr "Пожалуйста выберите хотя бы один тип устройств" + +#: ../admin/revslider-admin.class.php:277 +msgid "Please select an existing Style Template" +msgstr "Пожалуйста выберите существующий Шаблон Стиля" + +#: ../admin/revslider-admin.class.php:278 +msgid "Can not remove last transition!" +msgstr "Невозможно удалить последнюю анимацию!" + +#: ../admin/revslider-admin.class.php:279 +msgid "Given animation name is a default animation. These can not be changed." +msgstr "" +"Указанное имя анимации используется для стандартной анимации и не может быть " +"изменено." + +#: ../admin/revslider-admin.class.php:280 +msgid "Animation exists, override existing animation?" +msgstr "Анимация уже существует, перезаписать текущую анимацию?" + +#: ../admin/revslider-admin.class.php:290 +msgid "(never show this message again)  X" +msgstr "(не показывать больше это сообщение)  X" + +#: ../admin/revslider-admin.class.php:290 +msgid "" +"Hi! Would you like to activate your version of Revolution Slider to receive " +"live updates & get premium support? This is optional and not needed if the " +"slider came bundled with a theme. " +msgstr "" +"Здравствуйте! Желаете активировать вашу версию Revolution Slider чтобы " +"получать обновления и премиум поддержку? Это не обязательно и не нужно если " +"вы получили слайдер вместе с темой.\n" + +#: ../admin/revslider-admin.class.php:342 +msgid "Close & don't show againX" +msgstr "Закрыть и больше не показывать X" + +#: ../admin/revslider-admin.class.php:415 +msgid "Choose Slide Template" +msgstr "Выберите Шаблон Слайда" + +#: ../admin/revslider-admin.class.php:511 +msgid "importing slider settings and data..." +msgstr "импорт настроек и данных слайдера..." + +#: ../admin/revslider-admin.class.php:527 ../admin/revslider-admin.class.php:548 . +#: ./admin/revslider-admin.class.php:572 +msgid "Go Back" +msgstr "Назад" + +#: ../admin/revslider-admin.class.php:530 ../admin/revslider-admin.class.php:574 +msgid "Slider Import Success, redirecting..." +msgstr "Слайдер Импортирован успешно, перенаправление..." + +#: ../admin/revslider-admin.class.php:543 +msgid "importing template slider settings and data..." +msgstr "импорт настроек и данных шаблона слайдера..." + +#: ../admin/revslider-admin.class.php:547 +msgid "ID missing, something went wrong. Please try again!" +msgstr "ID отсутствует, видимо что-то случилось. Попробуйте еще раз!" + +#: ../admin/revslider-admin.class.php:607 ../admin/revslider-admin.class.php:1322 +#: ../admin/revslider-admin.class.php:1328 +msgid "Slider not found" +msgstr "Слайдер не найден" + +#: ../admin/revslider-admin.class.php:619 +msgid "Slider setting could not be changed" +msgstr "Настройки слайдера не могут быть изменены" + +#: ../admin/revslider-admin.class.php:651 ../includes/operations.class.php:2954 +msgid "Missing values to add preset" +msgstr "Отсутствуют значения для добавления Набора Настроек" + +#: ../admin/revslider-admin.class.php:659 ../admin/revslider-admin.class.php:676 +msgid "Preset created" +msgstr "Набор Настроек создан" + +#: ../admin/revslider-admin.class.php:668 ../includes/operations.class.php:3000 +msgid "Missing values to update preset" +msgstr "" + +#: ../admin/revslider-admin.class.php:685 ../includes/operations.class.php:2976 +msgid "Missing values to remove preset" +msgstr "Отсутствуют значения для удаления Набора Настроек" + +#: ../admin/revslider-admin.class.php:693 +msgid "Preset deleted" +msgstr "Набор Настроек удален" + +#: ../admin/revslider-admin.class.php:739 +msgid "Slider created" +msgstr "Слайдер создан" + +#: ../admin/revslider-admin.class.php:745 +msgid "Slider updated" +msgstr "Слайдер обновлён" + +#: ../admin/revslider-admin.class.php:754 +msgid "Template can't be deleted, it is still being used by the following Sliders: " +msgstr "Шаблон не может быть удален, он используется следующими слайдерами:" + +#: ../admin/revslider-admin.class.php:757 ../admin/revslider-admin.class.php:759 +msgid "Slider deleted" +msgstr "Слайдер удален" + +#: ../admin/revslider-admin.class.php:767 ../admin/revslider-admin.class.php:842 +msgid "Success! Refreshing page..." +msgstr "Операция завершена успешно! Обновляем страницу..." + +#: ../admin/revslider-admin.class.php:775 +msgid "Slide Created" +msgstr "Слайдер Создан" + +#: ../admin/revslider-admin.class.php:777 +msgid "Slides Created" +msgstr "Слайдеры Созданы" + +#: ../admin/revslider-admin.class.php:787 +msgid "Slide Created, redirecting..." +msgstr "Слайд Создан, перенаправление..." + +#: ../admin/revslider-admin.class.php:793 +msgid "Missing redirect ID!" +msgstr "Отсутствует ID переадресации!" + +#: ../admin/revslider-admin.class.php:800 +msgid "Slide copied to current Slider, redirecting..." +msgstr "Слайд скопирован в текущий Слайдер" + +#: ../admin/revslider-admin.class.php:806 +msgid "Slide updated" +msgstr "Слайдер обновлен" + +#: ../admin/revslider-admin.class.php:810 +msgid "Static Global Layers updated" +msgstr "Статические Глобальные Слои обновлены" + +#: ../admin/revslider-admin.class.php:816 +msgid "Post deleted" +msgstr "Запись удалена" + +#: ../admin/revslider-admin.class.php:818 +msgid "Slide deleted" +msgstr "Слайд удален" + +#: ../admin/revslider-admin.class.php:831 ../admin/revslider-admin.class.php:833 +msgid "Slide duplicated" +msgstr "Слайд сдублирован" + +#: ../admin/revslider-admin.class.php:840 +msgid "Success!" +msgstr "Операция завершена успешно!" + +#: ../admin/revslider-admin.class.php:848 +msgid "No valid Slide ID given" +msgstr "Недействительный ID Слайда" + +#: ../admin/revslider-admin.class.php:852 ../admin/revslider-admin.class.php:856 +msgid "No valid title given" +msgstr "Недействительный заголовок" + +#: ../admin/revslider-admin.class.php:863 +msgid "Could not save Slide as Template" +msgstr "Невозможно сохранить Слайд как Шаблон" + +#: ../admin/revslider-admin.class.php:879 +msgid "Slide added to Templates" +msgstr "Слайд добавлен в Шаблоны" + +#: ../admin/revslider-admin.class.php:907 ../admin/revslider-admin.class.php:929 . +#: ./admin/revslider-admin.class.php:950 ../admin/revslider-admin.class.php:999 +msgid "CSS saved" +msgstr "CSS сохранен" + +#: ../admin/revslider-admin.class.php:910 ../admin/revslider-admin.class.php:932 . +#: ./admin/revslider-admin.class.php:953 +msgid "CSS could not be saved" +msgstr "CSS не может быть сохранен" + +#: ../admin/revslider-admin.class.php:971 +msgid "Class name renamed" +msgstr "Класс переименован" + +#: ../admin/revslider-admin.class.php:987 +msgid "Style deleted!" +msgstr "Стиль удален!" + +#: ../admin/revslider-admin.class.php:1003 ../admin/revslider-admin.class.php: +#: 1007 ../admin/revslider-admin.class.php:1011 +msgid "Animation saved" +msgstr "Анимация сохранена" + +#: ../admin/revslider-admin.class.php:1015 +msgid "Animation deleted" +msgstr "Анимация удалена" + +#: ../admin/revslider-admin.class.php:1019 +msgid "Order updated" +msgstr "Заказ обновлен" + +#: ../admin/revslider-admin.class.php:1023 +msgid "Title updated" +msgstr "Название обновлено" + +#: ../admin/revslider-admin.class.php:1028 +msgid "Slide changed" +msgstr "Слайд Изменен" + +#: ../admin/revslider-admin.class.php:1048 +msgid "Slide is now the new active Hero Slide" +msgstr "" + +#: ../admin/revslider-admin.class.php:1056 +msgid "General settings updated" +msgstr "Основные настройки обновлены" + +#: ../admin/revslider-admin.class.php:1060 +msgid "Sortby updated" +msgstr "Сортировка обновлёна" + +#: ../admin/revslider-admin.class.php:1064 +msgid "Image urls replaced" +msgstr "URL-адреса изображений заменены" + +#: ../admin/revslider-admin.class.php:1068 +msgid "Settings in all Slides changed" +msgstr "Настройки во всех слайдах изменились" + +#: ../admin/revslider-admin.class.php:1075 +msgid "The API key, the Purchase Code and the Username need to be set!" +msgstr "" +"Ключ API, \n" +"Код покупки\n" +" и Имя пользователя должны быть установлены!" + +#: ../admin/revslider-admin.class.php:1080 +msgid "Purchase Code Successfully Activated" +msgstr "" +"Код покупки\n" +" успешно активирован!" + +#: ../admin/revslider-admin.class.php:1082 +msgid "Purchase Code is invalid" +msgstr "" +"Код покупки\n" +" недействителен" + +#: ../admin/revslider-admin.class.php:1089 +msgid "Successfully removed validation" +msgstr "Успешно удалены проверки" + +#: ../admin/revslider-admin.class.php:1091 +msgid "Could not remove Validation!" +msgstr "Не удалось удалить Проверка!" + +#: ../admin/revslider-admin.class.php:1096 ../admin/revslider-admin.class.php:1103 +msgid "." +msgstr "." + +#: ../admin/revslider-admin.class.php:1109 +msgid "Setting Changed!" +msgstr "Настройки изменены!" + +#: ../admin/revslider-admin.class.php:1114 +msgid "No ID given" +msgstr "Не указано ID" + +#: ../admin/revslider-admin.class.php:1124 ../admin/revslider-admin.class.php:1142 +msgid "Invalid Email" +msgstr "Неверный Email" + +#: ../admin/revslider-admin.class.php:1127 +msgid "Success! Please check your Emails to finish the subscribtion" +msgstr "" +"Операция завершена успешно! Пожалуйста проверьте Email для завершения " +"подписки" + +#: ../admin/revslider-admin.class.php:1130 ../admin/revslider-admin.class.php:1148 +msgid "Invalid Email/Could not connect to the Newsletter server" +msgstr "" +"Недействительный Email / Невозможно подсоединиться к серверу Новостной " +"рассылки" + +#: ../admin/revslider-admin.class.php:1133 ../admin/revslider-admin.class.php:1151 +msgid "No Email given" +msgstr "Не указан Email" + +#: ../admin/revslider-admin.class.php:1145 +msgid "Success! Please check your Emails to finish the process" +msgstr "Операция завершена успешно! Проверьте ваши Emails для окончания процесса" + +#: ../admin/revslider-admin.class.php:1171 +msgid "Navigation saved/updated" +msgstr "Навигация сохранена / обновлена" + +#: ../admin/revslider-admin.class.php:1179 +msgid "Navigations updated" +msgstr "Навигации обновлены" + +#: ../admin/revslider-admin.class.php:1190 +msgid "Navigation deleted" +msgstr "Навигация удалена" + +#: ../admin/revslider-admin.class.php:1194 +msgid "Wrong ID given" +msgstr "Неверный ID" + +#: ../admin/revslider-admin.class.php:1201 +msgid "Successfully fetched Facebook albums" +msgstr "Альбомы Facebook успешно загружены" + +#: ../admin/revslider-admin.class.php:1204 +msgid "Could not fetch Facebook albums" +msgstr "Невозможно загрузить Альбомы Facebook " + +#: ../admin/revslider-admin.class.php:1209 +msgid "Cleared Albums" +msgstr "Очищенные альбомы" + +#: ../admin/revslider-admin.class.php:1218 +msgid "Successfully fetched flickr photosets" +msgstr "" +"Flickr photosets\n" +" успешно загружены" + +#: ../admin/revslider-admin.class.php:1221 +msgid "Could not fetch flickr photosets" +msgstr "Невозможно загрузить фотосеты Flickr" + +#: ../admin/revslider-admin.class.php:1227 +msgid "Cleared Photosets" +msgstr "Очищенные фотосеты" + +#: ../admin/revslider-admin.class.php:1230 +msgid "No User URL - Could not fetch flickr photosets" +msgstr "Отсутствует URL пользователя - невозможно загрузить фотосеты Flickr" + +#: ../admin/revslider-admin.class.php:1234 +msgid "No API KEY - Could not fetch flickr photosets" +msgstr "Отсутствует API KEY - невозможно загрузить фотосеты Flickr" + +#: ../admin/revslider-admin.class.php:1243 +msgid "Successfully fetched YouTube playlists" +msgstr "" +"Плейлисты Youtube\n" +" успешно загружены" + +#: ../admin/revslider-admin.class.php:1246 +msgid "Could not fetch YouTube playlists" +msgstr "Невозможно загрузить плейлисты Youtube" + +#: ../admin/revslider-admin.class.php:1332 +msgid "No Data Received" +msgstr "Данные не получены" + +#: ../admin/revslider-admin.class.php:1342 +msgid "Loading Error" +msgstr "Ошибка Загрузки" + +#: ../admin/revslider-admin.class.php:1344 +msgid "Loading Error: " +msgstr "Ошибка Загрузки:" + +#: ../admin/views/master-view.php:55 ../admin/views/system/validation.php:52 +msgid "Please Wait..." +msgstr "Ждите..." + +#: ../admin/views/navigation-editor.php:33 +msgid "Select the Navigation Category to Edit" +msgstr "Выберите категорию Навигации для редактирования" + +#: ../admin/views/navigation-editor.php:33 +msgid "Add New" +msgstr "Добавить новый" + +#: ../admin/views/navigation-editor.php:36 +msgid "#ID" +msgstr "#ID" + +#: ../admin/views/navigation-editor.php:37 +msgid "Skin Name" +msgstr "Имя скина" + +#: ../admin/views/navigation-editor.php:40 ../admin/views/templates/slider-main- +#: options.php:2456 +msgid "Thumbs" +msgstr "Миниатюры" + +#: ../admin/views/navigation-editor.php:42 ../admin/views/navigation-editor.php: +#: 67 ../admin/views/templates/slide-stage.php:34 +msgid "Actions" +msgstr "Действия" + +#: ../admin/views/navigation-editor.php:58 +msgid "Editing" +msgstr "Редактирование" + +#: ../admin/views/navigation-editor.php:58 ../admin/views/system/dialog-video.php: +#: 227 +msgid "Remove" +msgstr "Убрать" + +#: ../admin/views/navigation-editor.php:61 +msgid "Markup" +msgstr "Разметка" + +#: ../admin/views/navigation-editor.php:69 ../admin/views/navigation-editor.php: +#: 70 ../admin/views/navigation-editor.php:71 ../admin/views/navigation-editor. +#: php:72 +msgid "Reset Defaults" +msgstr "Сбросить на стандартные настройки" + +#: ../admin/views/navigation-editor.php:73 +msgid "Parameters" +msgstr "Параметры" + +#: ../admin/views/navigation-editor.php:75 ../admin/views/templates/slide-general- +#: settings.php:484 +msgid "Slide Title" +msgstr "Название Слайда" + +#: ../admin/views/navigation-editor.php:76 +msgid "Slide Description" +msgstr "Описание Слайда" + +#: ../admin/views/navigation-editor.php:80 +msgid "Parameter " +msgstr "Параметр" + +#: ../admin/views/navigation-editor.php:94 ../includes/operations.class.php:1409 +msgid "CSS" +msgstr "CSS" + +#: ../admin/views/navigation-editor.php:100 +msgid "Style Helper" +msgstr "Помощник стилей" + +#: ../admin/views/navigation-editor.php:102 +msgid "Color Value" +msgstr "Цвет" + +#: ../admin/views/navigation-editor.php:106 ../admin/views/navigation-editor.php: +#: 120 ../admin/views/navigation-editor.php:138 ../admin/views/navigation-editor. +#: php:154 ../admin/views/navigation-editor.php:170 ../admin/views/navigation- +#: editor.php:184 ../admin/views/templates/template-selector.php:17 .. +#: admin/views/templates/template-slider-selector.php:16 +msgid "Add" +msgstr "Добавить" + +#: ../admin/views/navigation-editor.php:109 ../admin/views/templates/slide-stage. +#: php:2157 ../admin/views/templates/slider-main-options.php:3248 +msgid "Border Radius" +msgstr "Радиус границы" + +#: ../admin/views/navigation-editor.php:111 +msgid "Top Left" +msgstr "Верхний Левый" + +#: ../admin/views/navigation-editor.php:113 +msgid "Top Right" +msgstr "Верхний Правый" + +#: ../admin/views/navigation-editor.php:115 +msgid "Bottom Right" +msgstr "Нижний Правый" + +#: ../admin/views/navigation-editor.php:117 +msgid "Bottom Left" +msgstr "Нижний Левый" + +#: ../admin/views/navigation-editor.php:123 ../admin/views/templates/slide-stage. +#: php:244 ../admin/views/templates/slide-stage.php:512 .. +#: admin/views/templates/slide-stage.php:2005 ../admin/views/templates/slide- +#: stage.php:2070 ../admin/views/templates/slide-stage.php:2136 +msgid "Border" +msgstr "Граница" + +#: ../admin/views/navigation-editor.php:125 ../admin/views/templates/slider-main- +#: options.php:2108 ../admin/views/templates/slider-main-options.php:2540 .. +#: admin/views/templates/slider-main-options.php:2570 .. +#: admin/views/templates/slider-main-options.php:2683 .. +#: admin/views/templates/slider-main-options.php:2853 .. +#: admin/views/templates/slider-main-options.php:3021 .. +#: admin/views/templates/slider-main-options.php:3356 +msgid "Top" +msgstr "Верх" + +#: ../admin/views/navigation-editor.php:127 ../admin/views/templates/slide-stage. +#: php:282 ../admin/views/templates/slider-main-options.php:2318 .. +#: admin/views/templates/slider-main-options.php:2533 .. +#: admin/views/templates/slider-main-options.php:2562 .. +#: admin/views/templates/slider-main-options.php:2677 .. +#: admin/views/templates/slider-main-options.php:2847 .. +#: admin/views/templates/slider-main-options.php:3015 .. +#: admin/views/templates/slider-main-options.php:3350 +msgid "Right" +msgstr "Право" + +#: ../admin/views/navigation-editor.php:129 ../admin/views/templates/slider-main- +#: options.php:2109 ../admin/views/templates/slider-main-options.php:2542 .. +#: admin/views/templates/slider-main-options.php:2572 .. +#: admin/views/templates/slider-main-options.php:2685 .. +#: admin/views/templates/slider-main-options.php:2855 .. +#: admin/views/templates/slider-main-options.php:3023 .. +#: admin/views/templates/slider-main-options.php:3358 +msgid "Bottom" +msgstr "Низ" + +#: ../admin/views/navigation-editor.php:131 ../admin/views/templates/slide-stage. +#: php:280 ../admin/views/templates/slider-main-options.php:2316 .. +#: admin/views/templates/slider-main-options.php:2531 .. +#: admin/views/templates/slider-main-options.php:2560 .. +#: admin/views/templates/slider-main-options.php:2675 .. +#: admin/views/templates/slider-main-options.php:2845 .. +#: admin/views/templates/slider-main-options.php:3013 .. +#: admin/views/templates/slider-main-options.php:3348 +msgid "Left" +msgstr "Лево" + +#: ../admin/views/navigation-editor.php:133 ../admin/views/navigation-editor.php: +#: 149 ../admin/views/navigation-editor.php:165 ../admin/views/templates/slide- +#: stage.php:751 ../admin/views/templates/slide-stage.php:927 +msgid "Opacity" +msgstr "Прозрачность" + +#: ../admin/views/navigation-editor.php:141 +msgid "Text-Shadow" +msgstr "Text-Shadow" + +#: ../admin/views/navigation-editor.php:143 ../admin/views/navigation-editor.php: +#: 159 ../admin/views/templates/slide-stage.php:1127 +msgid "Angle" +msgstr "Угол" + +#: ../admin/views/navigation-editor.php:145 ../admin/views/navigation-editor.php: +#: 161 +msgid "Distance" +msgstr "Дистанция" + +#: ../admin/views/navigation-editor.php:147 ../admin/views/navigation-editor.php: +#: 163 +msgid "Blur" +msgstr "Размытие" + +#: ../admin/views/navigation-editor.php:157 +msgid "Box-Shadow" +msgstr "Box-Shadow" + +#: ../admin/views/navigation-editor.php:173 ../admin/views/templates/slide-stage. +#: php:153 ../admin/views/templates/slide-stage.php:154 .. +#: admin/views/templates/slide-stage.php:2030 ../admin/views/templates/slide- +#: stage.php:2031 +msgid "Font Family" +msgstr "Шрифт" + +#: ../admin/views/navigation-editor.php:190 +msgid "Resets" +msgstr "Сброс" + +#: ../admin/views/navigation-editor.php:192 ../admin/views/navigation-editor.php: +#: 194 ../admin/views/navigation-editor.php:196 ../admin/views/navigation-editor. +#: php:198 +msgid "Classes & Style" +msgstr "Классы и Стили" + +#: ../admin/views/navigation-editor.php:193 ../admin/views/navigation-editor.php: +#: 195 ../admin/views/navigation-editor.php:197 ../admin/views/navigation-editor. +#: php:199 +msgid "Only Classes" +msgstr "Только классы" + +#: ../admin/views/navigation-editor.php:218 +msgid "Live Preview - Hover & Click for test" +msgstr "Живой Предпросмотр - Наведите мышку и нажмите для тестов" + +#: ../admin/views/navigation-editor.php:220 +msgid "Suggested Width:" +msgstr "Предлагаемая ширина:" + +#: ../admin/views/navigation-editor.php:222 +msgid "Suggested Height:" +msgstr "Предлагаемая высота:" + +#: ../admin/views/navigation-editor.php:241 +msgid "Save All Changes" +msgstr "Сохранить все изменения" + +#: ../admin/views/navigation-editor.php:302 +msgid "View" +msgstr "Просмотр" + +#: ../admin/views/navigation-editor.php:302 +msgid "Edit" +msgstr "Редактирование" + +#: ../admin/views/navigation-editor.php:1236 +msgid "Custom Navigations" +msgstr "Пользовательские Навигации" + +#: ../admin/views/navigation-editor.php:1239 +msgid "Default Navigations" +msgstr "Стандартные Навигации" + +#: ../admin/views/slide-editor.php:312 +msgid "Slider:" +msgstr "Слайдер:" + +#: ../admin/views/slide-editor.php:315 +msgid "Edit Template Slide" +msgstr "Редактировать слайд" + +#: ../admin/views/slide-editor.php:317 ../admin/views/templates/slides-list.php: +#: 107 ../admin/views/templates/wpml-selector.php:10 +msgid "Edit Slide" +msgstr "Изменить" + +#: ../admin/views/slide-editor.php:319 ../admin/views/slider-overview.php:290 +msgid "Title:" +msgstr "Заголовок:" + +#: ../admin/views/slide-editor.php:322 ../admin/views/slider-overview.php:67 .. +#: admin/views/templates/slider-main-options.php:33 .. +#: admin/views/templates/slides.php:10 +msgid "Help" +msgstr "Помощь" + +#: ../admin/views/slide-editor.php:351 +msgid "" +"Warning!!! The jquery ui javascript include that is loaded by some of " +"the plugins are custom made and not contain needed components like " +"'autocomplete' or 'draggable' function.\n" +" Without those functions the editor may not work correctly. Please remove " +"those custom jquery ui includes in order the editor will work correctly." +msgstr "" +"Внимание!!! Скрипты jquery ui загружаемые некоторыми плагинами не " +"содержат компоненты типа 'autocomplete' или 'draggable' . Без этих функций " +"редактор может работать некорректно. Пожалуйста деактивируйте эти плагины " +"для корректной работы редактора." + +#: ../admin/views/slide-editor.php:365 +msgid "Insert Meta" +msgstr "Вставить Мета" + +#: ../admin/views/slide-editor.php:372 +msgid "Post Replace Placeholders:" +msgstr "Заменить запись в Области:" + +#: ../admin/views/slide-editor.php:374 +msgid "Any custom meta tag" +msgstr "Любой нестандартный мета-тег" + +#: ../admin/views/slide-editor.php:375 ../admin/views/slide-editor.php:421 +msgid "Post Title" +msgstr "Заголовок записи" + +#: ../admin/views/slide-editor.php:376 +msgid "Post Excerpt" +msgstr "Отрывок записи" + +#: ../admin/views/slide-editor.php:377 +msgid "Post Alias" +msgstr "Псевдоним записи" + +#: ../admin/views/slide-editor.php:378 ../admin/views/slide-editor.php:422 +msgid "Post content" +msgstr "Содержимое записи" + +#: ../admin/views/slide-editor.php:379 ../admin/views/slide-editor.php:423 .. +#: admin/views/slide-editor.php:531 +msgid "The link to the post" +msgstr "Ссылка на запись" + +#: ../admin/views/slide-editor.php:380 ../admin/views/slide-editor.php:424 .. +#: admin/views/slide-editor.php:445 +msgid "Date created" +msgstr "Дата создания" + +#: ../admin/views/slide-editor.php:381 +msgid "Date modified" +msgstr "Дата изменения" + +#: ../admin/views/slide-editor.php:382 +msgid "Author name" +msgstr "Имя Автора" + +#: ../admin/views/slide-editor.php:383 +msgid "Number of comments" +msgstr "Количество комментариев" + +#: ../admin/views/slide-editor.php:384 +msgid "List of categories with links" +msgstr "Список категорий со ссылками" + +#: ../admin/views/slide-editor.php:385 +msgid "List of tags with links" +msgstr "Список тегов со ссылками" + +#: ../admin/views/slide-editor.php:389 +msgid "Featured Image URL" +msgstr "URL Миниатюры Записи" + +#: ../admin/views/slide-editor.php:390 +msgid "Featured Image <img />" +msgstr "Миниатюра Записи <img />" + +#: ../admin/views/slide-editor.php:398 +msgid "Events Placeholders:" +msgstr "Область Событий:" + +#: ../admin/views/slide-editor.php:400 +msgid "Event start date" +msgstr "Дата начала" + +#: ../admin/views/slide-editor.php:401 +msgid "Event end date" +msgstr "Дата окончания" + +#: ../admin/views/slide-editor.php:402 +msgid "Event start time" +msgstr "Время начала" + +#: ../admin/views/slide-editor.php:403 +msgid "Event end time" +msgstr "Время окончания" + +#: ../admin/views/slide-editor.php:404 +msgid "Event ID" +msgstr "ID События" + +#: ../admin/views/slide-editor.php:405 +msgid "Event location name" +msgstr "Событие по имени" + +#: ../admin/views/slide-editor.php:406 +msgid "Event location slug" +msgstr "Событие по метке" + +#: ../admin/views/slide-editor.php:407 +msgid "Event location address" +msgstr "Событие по адресу" + +#: ../admin/views/slide-editor.php:408 +msgid "Event location town" +msgstr "Событие по местности" + +#: ../admin/views/slide-editor.php:409 +msgid "Event location state" +msgstr "Событие по состоянию" + +#: ../admin/views/slide-editor.php:410 +msgid "Event location postcode" +msgstr "Событие по индексу" + +#: ../admin/views/slide-editor.php:411 +msgid "Event location region" +msgstr "Событие по региону" + +#: ../admin/views/slide-editor.php:412 +msgid "Event location country" +msgstr "Событие по стране" + +#: ../admin/views/slide-editor.php:419 +msgid "Flickr Placeholders:" +msgstr "Контейнеры Flickr:" + +#: ../admin/views/slide-editor.php:425 ../admin/views/slide-editor.php:446 .. +#: admin/views/slide-editor.php:468 ../admin/views/slide-editor.php:491 .. +#: admin/views/slide-editor.php:533 +msgid "Username" +msgstr "Имя пользователя" + +#: ../admin/views/slide-editor.php:426 +msgid "Views" +msgstr "Просмотры" + +#: ../admin/views/slide-editor.php:430 ../admin/views/slide-editor.php:452 .. +#: admin/views/slide-editor.php:474 ../admin/views/slide-editor.php:496 .. +#: admin/views/slide-editor.php:516 ../admin/views/slide-editor.php:540 +msgid "Image URL" +msgstr "Ссылка Изображения" + +#: ../admin/views/slide-editor.php:431 ../admin/views/slide-editor.php:453 .. +#: admin/views/slide-editor.php:475 ../admin/views/slide-editor.php:497 .. +#: admin/views/slide-editor.php:517 ../admin/views/slide-editor.php:541 +msgid "Image <img />" +msgstr "Изображение <img />" + +#: ../admin/views/slide-editor.php:440 +msgid "Instagram Placeholders:" +msgstr "Контейнеры Instagram:" + +#: ../admin/views/slide-editor.php:442 ../admin/views/slide-editor.php:464 .. +#: admin/views/slide-editor.php:486 ../admin/views/slide-editor.php:508 .. +#: admin/views/slide-editor.php:528 ../admin/views/templates/slide-stage.php: +#: 1241 ../admin/views/templates/slider-main-options.php:433 ../includes/widget. +#: class.php:61 +msgid "Title" +msgstr "Название" + +#: ../admin/views/slide-editor.php:443 ../admin/views/slide-editor.php:465 .. +#: admin/views/slide-editor.php:487 ../admin/views/slide-editor.php:510 .. +#: admin/views/slide-editor.php:530 +msgid "Content" +msgstr "Контент" + +#: ../admin/views/slide-editor.php:444 ../admin/views/slide-editor.php:466 .. +#: admin/views/slide-editor.php:488 ../admin/views/slide-editor.php:512 +msgid "Link" +msgstr "Ссылка" + +#: ../admin/views/slide-editor.php:447 ../admin/views/slide-editor.php:492 .. +#: admin/views/slide-editor.php:534 +msgid "Number of Likes" +msgstr "Кол-во лайков" + +#: ../admin/views/slide-editor.php:448 ../admin/views/slide-editor.php:536 +msgid "Number of Comments" +msgstr "Кол-во комментариев" + +#: ../admin/views/slide-editor.php:462 +msgid "Twitter Placeholders:" +msgstr "Контейнеры Twitter:" + +#: ../admin/views/slide-editor.php:467 ../admin/views/slide-editor.php:489 .. +#: admin/views/slide-editor.php:511 ../admin/views/slide-editor.php:532 +msgid "Pulbishing Date" +msgstr "Дата Публикации" + +#: ../admin/views/slide-editor.php:469 +msgid "Retweet Count" +msgstr "Кол-во ретвитов" + +#: ../admin/views/slide-editor.php:470 +msgid "Favorite Count" +msgstr "Кол-во Избранных" + +#: ../admin/views/slide-editor.php:484 +msgid "Facebook Placeholders:" +msgstr "Контейнеры Facebook:" + +#: ../admin/views/slide-editor.php:490 +msgid "Last Modify Date" +msgstr "Дата последнего изменения" + +#: ../admin/views/slide-editor.php:506 +msgid "YouTube Placeholders:" +msgstr "Контейнеры YouTube:" + +#: ../admin/views/slide-editor.php:509 ../admin/views/slide-editor.php:529 +msgid "Excerpt" +msgstr "Отрывок" + +#: ../admin/views/slide-editor.php:526 +msgid "Vimeo Placeholders:" +msgstr "Контейнеры Vimeo:" + +#: ../admin/views/slide-editor.php:535 +msgid "Number of Views" +msgstr "Кол-во просмотров" + +#: ../admin/views/slide-editor.php:552 ../admin/views/templates/slide-stage.php: +#: 250 ../admin/views/templates/slide-stage.php:515 +msgid "Advanced CSS" +msgstr "Расширенный CSS" + +#: ../admin/views/slide-editor.php:555 +msgid "Style from Options" +msgstr "Стиль из Параметров" + +#: ../admin/views/slide-editor.php:555 +msgid "Editable via Option Fields, Saved in the Class:" +msgstr "Редактируется в полях Параметров, сохраненных в Классе:" + +#: ../admin/views/slide-editor.php:559 +msgid "Additional Custom Styling" +msgstr "Дополнительные пользовательские Стили" + +#: ../admin/views/slide-editor.php:559 +msgid "Appended in the Class:" +msgstr "Добавлено в класс:" + +#: ../admin/views/slide-editor.php:564 ../admin/views/slide-editor.php:583 .. +#: admin/views/templates/slide-stage.php:86 ../admin/views/templates/slide-stage. +#: php:701 ../admin/views/templates/slide-stage.php:876 +msgid "Save As" +msgstr "Сохранить как" + +#: ../admin/views/slide-editor.php:566 ../admin/views/slide-editor.php:585 +msgid "Save As:" +msgstr "Сохранить как:" + +#: ../admin/views/slide-editor.php:570 +msgid "Rename CSS" +msgstr "Переименовать CSS" + +#: ../admin/views/slide-editor.php:572 ../admin/views/slide-editor.php:899 +msgid "Rename to:" +msgstr "Переименовать:" + +#: ../admin/views/slide-editor.php:576 +msgid "Layer Inline CSS" +msgstr "Inline CSS Слоя" + +#: ../admin/views/slide-editor.php:578 +msgid "Advanced Custom Styling" +msgstr "Расширенные Пользовательские Стили" + +#: ../admin/views/slide-editor.php:578 +msgid "Appended Inline to the Layer Markup" +msgstr "Добавить Inline CSS к разметке слоя" + +#: ../admin/views/slide-editor.php:589 +msgid "Save Under" +msgstr "Сохранить Как" + +#: ../admin/views/slide-editor.php:591 +msgid "Save Under:" +msgstr "Сохранить Как:" + +#: ../admin/views/slide-editor.php:839 ../admin/views/slide-editor.php:881 +msgid "Save Slide" +msgstr "Сохранить слайд" + +#: ../admin/views/slide-editor.php:843 +msgid "Update Static Layers" +msgstr "Обновить Статические Слои" + +#: ../admin/views/slide-editor.php:847 +msgid "updating" +msgstr "обновление" + +#: ../admin/views/slide-editor.php:849 ../admin/views/slide-editor.php:887 .. +#: admin/views/slide-overview.php:169 +msgid "Slider Settings" +msgstr "Настройки слайдера" + +#: ../admin/views/slide-editor.php:850 +msgid "Slides Overview" +msgstr "Обзор Слайдов" + +#: ../admin/views/slide-editor.php:855 ../admin/views/templates/wpml-selector.php:9 +msgid "Delete Slide" +msgstr "Удалить слайд" + +#: ../admin/views/slide-editor.php:877 +msgid "CSS Global" +msgstr "Глобальный CSS" + +#: ../admin/views/slide-editor.php:891 ../admin/views/templates/slider-main- +#: options.php:1434 ../admin/views/templates/slider-main-options.php:4449 .. +#: admin/views/templates/sliders-list.php:169 +msgid "Preview" +msgstr "Просмотр" + +#: ../admin/views/slide-editor.php:897 +msgid "Rename Animation" +msgstr "Переименовать Анимацию" + +#: ../admin/views/slide-editor.php:922 +msgid "Delete this slide?" +msgstr "Удалить этот слайд?" + +#: ../admin/views/slide-overview.php:51 +msgid "New Post" +msgstr "Новая Запись" + +#: ../admin/views/slide-overview.php:61 +msgid "Edit Posts" +msgstr "Редактировать Записи" + +#: ../admin/views/slide-overview.php:65 +msgid "This is a list of posts that are taken from multiple sources." +msgstr "Список записей, собранных из разных источников." + +#: ../admin/views/slide-overview.php:67 +msgid "Sort by" +msgstr "Фильтр по" + +#: ../admin/views/slide-overview.php:70 +msgid "Updating Sorting..." +msgstr "Сортировка обновляются..." + +#: ../admin/views/slide-overview.php:75 ../admin/views/templates/slides-list.php:5 +msgid "Post List" +msgstr "Список Записей" + +#: ../admin/views/slide-overview.php:76 ../admin/views/templates/slides-list.php:6 +msgid "Saving Order" +msgstr "Сохранить выбранное" + +#: ../admin/views/slide-overview.php:80 ../admin/views/templates/slides-list.php:12 +msgid "No Posts Found" +msgstr "Записи не найдены" + +#: ../admin/views/slide-overview.php:133 +msgid "Unpublish Post" +msgstr "Неопубликован" + +#: ../admin/views/slide-overview.php:135 +msgid "Publish Post" +msgstr "Опубликован" + +#: ../admin/views/slide-overview.php:140 +msgid "Edit Post" +msgstr "Изменить Запись" + +#: ../admin/views/slide-overview.php:144 ../admin/views/slide-overview.php:146 +msgid "" +"Click to change the slide image. Note: The post featured image will be " +"changed." +msgstr "" +"Нажмите для смены изображения слайда. Обратите внимание что будет изменена " +"миниатюра записи." + +#: ../admin/views/slide-overview.php:146 +msgid "no image" +msgstr "нет изображения" + +#: ../admin/views/slide-overview.php:150 ../admin/views/templates/slide-selector. +#: php:233 ../admin/views/templates/slide-stage.php:89 .. +#: admin/views/templates/slide-stage.php:704 ../admin/views/templates/slide- +#: stage.php:879 ../admin/views/templates/sliders-list.php:167 .. +#: admin/views/templates/slides-list.php:134 +msgid "Delete" +msgstr "Удалить" + +#: ../admin/views/slide-overview.php:173 +msgid "" +"Warning! Removing this entry will cause the original wordpress post to be " +"deleted." +msgstr "" +"Внимание! Удаление этой записи вызовет стирание оригинального сообщение " +"wordpress." + +#: ../admin/views/slider-overview.php:69 +msgid "Global Settings" +msgstr "Общие настройки" + +#: ../admin/views/slider-overview.php:76 +msgid "Revolution Sliders" +msgstr "Revolution Sliders" + +#: ../admin/views/slider-overview.php:81 +msgid "Sort By:" +msgstr "Сортировать По:" + +#: ../admin/views/slider-overview.php:83 +msgid "By ID" +msgstr "По ID" + +#: ../admin/views/slider-overview.php:84 +msgid "By Name" +msgstr "По Имени" + +#: ../admin/views/slider-overview.php:85 +msgid "By Type" +msgstr "По Типу" + +#: ../admin/views/slider-overview.php:86 +msgid "By Favorit" +msgstr "" +"По \n" +"Избранным" + +#: ../admin/views/slider-overview.php:89 +msgid "Filter By:" +msgstr "Фильтровать По:" + +#: ../admin/views/slider-overview.php:92 ../admin/views/templates/slider-main- +#: options.php:3551 +msgid "All" +msgstr "Все" + +#: ../admin/views/slider-overview.php:93 ../admin/views/templates/sliders-list. +#: php:33 +msgid "Posts" +msgstr "Записи" + +#: ../admin/views/slider-overview.php:94 ../admin/views/templates/slider-main- +#: options.php:155 ../admin/views/templates/sliders-list.php:21 +msgid "Gallery" +msgstr "Галерея" + +#: ../admin/views/slider-overview.php:95 ../admin/views/system/dialog-video.php: +#: 30 ../admin/views/templates/sliders-list.php:74 +msgid "Vimeo" +msgstr "Vimeo" + +#: ../admin/views/slider-overview.php:96 ../admin/views/system/dialog-video.php: +#: 28 ../admin/views/templates/sliders-list.php:68 +msgid "YouTube" +msgstr "YouTube" + +#: ../admin/views/slider-overview.php:97 ../admin/views/templates/sliders-list. +#: php:50 +msgid "Twitter" +msgstr "Twitter" + +#: ../admin/views/slider-overview.php:98 ../admin/views/templates/sliders-list. +#: php:44 +msgid "Facebook" +msgstr "Facebook" + +#: ../admin/views/slider-overview.php:99 ../admin/views/templates/sliders-list. +#: php:56 +msgid "Instagram" +msgstr "Instagram" + +#: ../admin/views/slider-overview.php:100 ../admin/views/templates/sliders-list. +#: php:62 +msgid "Flickr" +msgstr "Flickr" + +#: ../admin/views/slider-overview.php:111 +msgid "No Sliders Found" +msgstr "слайдеры не найдены" + +#: ../admin/views/slider-overview.php:126 ../admin/views/templates/slider-main- +#: options.php:4475 +msgid "Standard Embeding" +msgstr "" + +#: ../admin/views/slider-overview.php:127 ../admin/views/templates/slider-main- +#: options.php:4476 +msgid "For the" +msgstr "Для" + +#: ../admin/views/slider-overview.php:127 ../admin/views/templates/slider-main- +#: options.php:4476 +msgid "pages or posts editor" +msgstr "Редактор страниц / записей" + +#: ../admin/views/slider-overview.php:127 ../admin/views/templates/slider-main- +#: options.php:4476 +msgid "insert the shortcode:" +msgstr "Вставить shortcode:" + +#: ../admin/views/slider-overview.php:129 ../admin/views/slider-overview.php:133 . +#: ./admin/views/templates/slider-main-options.php:4478 .. +#: admin/views/templates/slider-main-options.php:4482 +msgid "From the" +msgstr "В" + +#: ../admin/views/slider-overview.php:129 ../admin/views/templates/slider-main- +#: options.php:4478 +msgid "widgets panel" +msgstr "Панеле виджетов" + +#: ../admin/views/slider-overview.php:129 ../admin/views/templates/slider-main- +#: options.php:4478 +msgid "drag the \"Revolution Slider\" widget to the desired sidebar" +msgstr "Перетащите виджет \"Revolution Slider \" в боковое меню" + +#: ../admin/views/slider-overview.php:131 ../admin/views/templates/slider-main- +#: options.php:4480 +msgid "Advanced Embeding" +msgstr "" + +#: ../admin/views/slider-overview.php:133 ../admin/views/templates/slider-main- +#: options.php:4482 +msgid "theme html" +msgstr "html темы" + +#: ../admin/views/slider-overview.php:133 ../admin/views/templates/slider-main- +#: options.php:4482 +msgid "use" +msgstr "изпользовать" + +#: ../admin/views/slider-overview.php:134 ../admin/views/templates/slider-main- +#: options.php:4483 +msgid "To add the slider only to homepage use" +msgstr "Добавить слайдер только на главную страницу" + +#: ../admin/views/slider-overview.php:135 ../admin/views/templates/slider-main- +#: options.php:4484 +msgid "To add the slider on specific pages or posts use" +msgstr "Добавить слайдер на выбранные страницы или записи" + +#: ../admin/views/slider-overview.php:154 +msgid "Version Information" +msgstr "Информация о Версии" + +#: ../admin/views/slider-overview.php:159 +msgid "Installed Version" +msgstr "Установленная Версия" + +#: ../admin/views/slider-overview.php:163 +msgid "Latest Stable Version" +msgstr "" +"Последняя \n" +"Стабильная \n" +"Версия" + +#: ../admin/views/slider-overview.php:163 +msgid "Update to Stable (Free)" +msgstr "Обновить до Стабильной версии ( Бесплатно )" + +#: ../admin/views/slider-overview.php:167 +msgid "Latest Available Version" +msgstr "Последняя доступная Версия" + +#: ../admin/views/slider-overview.php:167 +msgid "Check Version" +msgstr "Проверить Версию" + +#: ../admin/views/slider-overview.php:179 +msgid "Need Premium Support and Live Updates ?" +msgstr "Нужна Премиум Поддержка и Авто Обновления?" + +#: ../admin/views/slider-overview.php:179 +msgid "Why is this Important ?" +msgstr "Почему это важно?" + +#: ../admin/views/slider-overview.php:184 +msgid "Benefits" +msgstr "Преимущества" + +#: ../admin/views/slider-overview.php:186 +msgid "Get Premium Support" +msgstr "Получить Премиум поддержку " + +#: ../admin/views/slider-overview.php:186 +msgid "" +" - We help you in case of Bugs, installation problems, and Conflicts with " +"other plugins and Themes" +msgstr "" +"- Мы поможем вам с ошибками, проблемами с установкой и конфликтами с другими " +"плагинами и темами" + +#: ../admin/views/slider-overview.php:187 +msgid "Live Updates" +msgstr "Актуальные Обновления " + +#: ../admin/views/slider-overview.php:187 +msgid "" +" - Get the latest version of our Plugin. New Features and Bug Fixes are " +"available regularly !" +msgstr "" +"- Получи последнюю версию нашего плагина. Регулярно получай новые " +"возможности и исправленные ошибки." + +#: ../admin/views/slider-overview.php:204 +msgid "Information" +msgstr "Информация" + +#: ../admin/views/slider-overview.php:209 +msgid "" +"Please note that this plugin came bundled with a theme. The use of the " +"Revolution Slider is limited to this theme only.
        If you need support from " +"the Slider author ThemePunch or you want to use the Revolution slider with " +"an other theme you will need an extra single license available at CodeCanyon." +msgstr "" +"Обратите внимание: этот плагин является частью темы. Использование " +"Revolution Slider ограничено этой темой. Если вам требуется поддержка от " +"автора \n" +"Revolution Slider или вы хотите использовать \n" +"Revolution Slider с другой темой вам потребуется еще одна лицензия." + +#: ../admin/views/slider-overview.php:220 +msgid "Newsletter" +msgstr "Новостная рассылка" + +#: ../admin/views/slider-overview.php:220 +msgid "Why subscribe?" +msgstr "Зачем подписываться?" + +#: ../admin/views/slider-overview.php:226 +msgid "Unsubscribe our newsletter" +msgstr "Отписаться от новостной рассылки" + +#: ../admin/views/slider-overview.php:226 +msgid "Subscribe to our newsletter" +msgstr "Подписаться на новостную рассылку" + +#: ../admin/views/slider-overview.php:226 +msgid "Enter your E-Mail here" +msgstr "Введите ваш E-Mail" + +#: ../admin/views/slider-overview.php:227 +msgid "Subscribe" +msgstr "Подписаться" + +#: ../admin/views/slider-overview.php:229 +msgid "Unsubscribe" +msgstr "Отписаться" + +#: ../admin/views/slider-overview.php:230 +msgid "Cancel" +msgstr "Отменить" + +#: ../admin/views/slider-overview.php:233 +msgid "unsubscibe from newsletter" +msgstr "Отписаться от новостной рассылки" + +#: ../admin/views/slider-overview.php:235 +msgid "Perks of subscribing to our Newsletter" +msgstr "Преимущества подписки на новостную рассылку" + +#: ../admin/views/slider-overview.php:237 +msgid "Receive info on the latest ThemePunch product updates" +msgstr "" +"Получайте информацию о последних обновлениях продуктов от \n" +"ThemePunch" + +#: ../admin/views/slider-overview.php:238 +msgid "Be the first to know about new products by ThemePunch and their partners" +msgstr "" +"Узнайте первыми про новые продукты от \n" +"ThemePunch и партнеров" + +#: ../admin/views/slider-overview.php:239 +msgid "" +"Participate in polls and customer surveys that help us increase the quality " +"of our products and services" +msgstr "" +"Участвуйте в опросах, которые помогают нам повысить качество наших продуктов " +"и услуг" + +#: ../admin/views/slider-overview.php:248 +msgid "Update History" +msgstr "История обновлений" + +#: ../admin/views/slider-overview.php:258 ../admin/views/slider-overview.php:283 . +#: ./admin/views/templates/slider-main-options.php:3725 .. +#: admin/views/templates/sliders-list.php:190 +msgid "Import Slider" +msgstr "Импортировать Слайдер" + +#: ../admin/views/slider-overview.php:264 +msgid "Choose the import file" +msgstr "Выберите файл импорта" + +#: ../admin/views/slider-overview.php:268 +msgid "Note: styles templates will be updated if they exist!" +msgstr "" + +#: ../admin/views/slider-overview.php:271 ../admin/views/templates/template- +#: selector.php:248 ../admin/views/templates/template-slider-selector.php:233 +msgid "Custom Animations:" +msgstr "Своя Анимация:" + +#: ../admin/views/slider-overview.php:272 ../admin/views/slider-overview.php:277 . +#: ./admin/views/templates/slider-main-options.php:3714 .. +#: admin/views/templates/slider-main-options.php:3719 .. +#: admin/views/templates/template-selector.php:249 .. +#: admin/views/templates/template-selector.php:254 .. +#: admin/views/templates/template-slider-selector.php:234 .. +#: admin/views/templates/template-slider-selector.php:239 +msgid "overwrite" +msgstr "заменить" + +#: ../admin/views/slider-overview.php:273 ../admin/views/slider-overview.php:278 . +#: ./admin/views/templates/slider-main-options.php:3715 .. +#: admin/views/templates/slider-main-options.php:3720 .. +#: admin/views/templates/template-selector.php:250 .. +#: admin/views/templates/template-selector.php:255 .. +#: admin/views/templates/template-slider-selector.php:235 .. +#: admin/views/templates/template-slider-selector.php:240 +msgid "append" +msgstr "добавить" + +#: ../admin/views/slider-overview.php:276 ../admin/views/templates/slide-stage. +#: php:62 ../admin/views/templates/template-selector.php:253 .. +#: admin/views/templates/template-slider-selector.php:238 +msgid "Static Styles:" +msgstr "Статические стили:" + +#: ../admin/views/slider-overview.php:279 ../admin/views/templates/slider-main- +#: options.php:3721 ../admin/views/templates/template-selector.php:256 .. +#: admin/views/templates/template-slider-selector.php:241 +msgid "ignore" +msgstr "" + +#: ../admin/views/slider-overview.php:288 ../admin/views/templates/slide-selector. +#: php:231 ../admin/views/templates/sliders-list.php:168 .. +#: admin/views/templates/slides-list.php:136 +msgid "Duplicate" +msgstr "Дублировать" + +#: ../admin/views/system/dialog-copy-move.php:3 +msgid "Do It!" +msgstr "Сдеалть это!" + +#: ../admin/views/system/dialog-copy-move.php:3 +msgid "Copy / move slide" +msgstr "Копия / перенос" + +#: ../admin/views/system/dialog-copy-move.php:7 ../includes/widget.class.php:66 +msgid "Choose Slider" +msgstr "Выберите Slider" + +#: ../admin/views/system/dialog-copy-move.php:12 +msgid "Choose Operation" +msgstr "Выберите операцию" + +#: ../admin/views/system/dialog-copy-move.php:15 +msgid "Copy" +msgstr "Копировать" + +#: ../admin/views/system/dialog-copy-move.php:18 +msgid "Move" +msgstr "Переместить" + +#: ../admin/views/system/dialog-global-settings.php:25 .. +#: admin/views/templates/slide-general-settings.php:7 .. +#: admin/views/templates/slider-main-options.php:1723 +msgid "General Settings" +msgstr "Общие параметры" + +#: ../admin/views/system/dialog-global-settings.php:36 +msgid "View Plugin Permission:" +msgstr "Посмотреть права плагина:" + +#: ../admin/views/system/dialog-global-settings.php:40 +msgid "To Admin" +msgstr "Для Администратора" + +#: ../admin/views/system/dialog-global-settings.php:41 +msgid "To Editor, Admin" +msgstr "Для Редактора, Администратора" + +#: ../admin/views/system/dialog-global-settings.php:42 +msgid "Author, Editor, Admin" +msgstr "Для Автора, Редактора, Администратора" + +#: ../admin/views/system/dialog-global-settings.php:46 +msgid "The role of user that can view and edit the plugin" +msgstr "Роль пользователя, который можно просматривать и редактировать плагин" + +#: ../admin/views/system/dialog-global-settings.php:52 +msgid "Include RevSlider libraries globally:" +msgstr "Включить библиотеки RevSlider глобально:" + +#: ../admin/views/system/dialog-global-settings.php:58 .. +#: admin/views/system/dialog-global-settings.php:92 ../admin/views/system/dialog- +#: global-settings.php:113 ../admin/views/system/dialog-global-settings.php:134 .. +#: admin/views/system/dialog-global-settings.php:187 .. +#: admin/views/system/dialog-global-settings.php:209 .. +#: admin/views/system/dialog-video.php:152 ../admin/views/templates/slider-main- +#: options.php:3652 +msgid "On" +msgstr "Вкл." + +#: ../admin/views/system/dialog-global-settings.php:63 .. +#: admin/views/system/dialog-global-settings.php:97 ../admin/views/system/dialog- +#: global-settings.php:118 ../admin/views/system/dialog-global-settings.php:139 .. +#: admin/views/system/dialog-global-settings.php:192 .. +#: admin/views/system/dialog-global-settings.php:214 .. +#: admin/views/system/dialog-video.php:151 ../admin/views/templates/slider-main- +#: options.php:2353 ../admin/views/templates/slider-main-options.php:3630 .. +#: admin/views/templates/slider-main-options.php:3654 +msgid "Off" +msgstr "Выкл." + +#: ../admin/views/system/dialog-global-settings.php:68 +msgid "" +"ON - Add CSS and JS Files to all pages.
        Off - CSS and JS Files will be " +"only loaded on Pages where any rev_slider shortcode exists." +msgstr "" +"Включено - добавит CSS / JS файлы на все страницы. Выключено - CSS / JS " +"файлы будут добавлены только на страницы, использующие шорткод rev_slider" + +#: ../admin/views/system/dialog-global-settings.php:74 +msgid "Pages to include RevSlider libraries:" +msgstr "Укажите страницы для которых будут подключены библиотеки RevSlider:" + +#: ../admin/views/system/dialog-global-settings.php:79 +msgid "" +"Specify the page id's that the front end includes will be included in. " +"Example: 2,3,5 also: homepage,3,4" +msgstr "" +"Укажите id страниц, которые должны быть включены или исключены с главной " +"страницы. Пример: 2,3,5 также: стартовой, 3,4" + +#: ../admin/views/system/dialog-global-settings.php:86 +msgid "Insert JavaScript Into Footer:" +msgstr "Вставить JS в подвал:" + +#: ../admin/views/system/dialog-global-settings.php:101 +msgid "" +"Putting the js to footer (instead of the head) is good for fixing some " +"javascript conflicts." +msgstr "" +"Вставка JS в подвал (вместо шапки), это хорошо для исправления некоторых " +"конфликтов." + +#: ../admin/views/system/dialog-global-settings.php:107 +msgid "Defer JavaScript Loading:" +msgstr "Отложить загрузку JavaScript:" + +#: ../admin/views/system/dialog-global-settings.php:122 +msgid "Defer the loading of the JavaScript libraries to maximize page loading speed." +msgstr "Отложить загрузку библиотек JavaScript для более быстрой загрузки страницы." + +#: ../admin/views/system/dialog-global-settings.php:128 +msgid "Enable Markup Export option:" +msgstr "Включить возможность экспорта разметки:" + +#: ../admin/views/system/dialog-global-settings.php:143 +msgid "" +"This will enable the option to export the Slider Markups to copy/paste it " +"directly into websites." +msgstr "" +"Включить возможность экспорта разметки для вставки / копирования " +"непосредственно на сайт." + +#: ../admin/views/system/dialog-global-settings.php:149 +msgid "Font Loading URL:" +msgstr "URL Шрифта:" + +#: ../admin/views/system/dialog-global-settings.php:154 +msgid "" +"Insert something in it and it will be used instead of http://fonts." +"googleapis.com/css?family= (For example: http://fonts.useso.com/css?family= " +"which will also work for chinese visitors)" +msgstr "" +"Это значения будет использовано вместо \n" +"http://fonts.googleapis.com/css?family= ( Например: http://fonts.useso." +"com/css?family= будет работать для китайских пользователей )" + +#: ../admin/views/system/dialog-global-settings.php:161 +msgid "Default Settings for Advanced Responsive Grid Sizes:" +msgstr "Стандартные настройки для Раширенных Адаптивных Размеров Сетки:" + +#: ../admin/views/system/dialog-global-settings.php:164 +msgid "Desktop Grid Width" +msgstr "Ширина сетки для Десктопа" + +#: ../admin/views/system/dialog-global-settings.php:166 +msgid "Notebook Grid Width" +msgstr "Ширина сетки для Ноутбука" + +#: ../admin/views/system/dialog-global-settings.php:168 +msgid "Tablet Grid Width" +msgstr "Ширина сетки для Планшета" + +#: ../admin/views/system/dialog-global-settings.php:170 +msgid "Mobile Grid Width" +msgstr "Ширина сетки для Телефона" + +#: ../admin/views/system/dialog-global-settings.php:174 +msgid "Define the default Grid Sizes for devices: Desktop, Tablet and Mobile" +msgstr "" +"Задает стандартные размеры сетки для следующих устройств: Десктоп, Планшет, " +"Телефон" + +#: ../admin/views/system/dialog-global-settings.php:181 +msgid "Enable Notifications:" +msgstr "Включить Оповещения:" + +#: ../admin/views/system/dialog-global-settings.php:196 +msgid "Enable/Disable ThemePunch Notifications in the Admin Notice bar." +msgstr "" +"Включить / Выключить уведомления от ThemePunch в панели уведомлений " +"администратора " + +#: ../admin/views/system/dialog-global-settings.php:203 +msgid "Enable Logs:" +msgstr "Включить Логи:" + +#: ../admin/views/system/dialog-global-settings.php:218 +msgid "Enable console logs for debugging." +msgstr "Включить логи консоли для отладки." + +#: ../admin/views/system/dialog-global-settings.php:228 +msgid "Update" +msgstr "Обновить" + +#: ../admin/views/system/dialog-video.php:4 +msgid "Add Video Layout" +msgstr "Добавить Слой Видео" + +#: ../admin/views/system/dialog-video.php:12 ../admin/views/templates/slide- +#: general-settings.php:33 ../admin/views/templates/slider-main-options.php:151 .. +#: admin/views/templates/slider-main-options.php:202 .. +#: admin/views/templates/slider-main-options.php:286 .. +#: admin/views/templates/slider-main-options.php:309 +msgid "Source" +msgstr "Источник" + +#: ../admin/views/system/dialog-video.php:13 ../admin/views/templates/slider-main- +#: options.php:2196 +msgid "Sizing" +msgstr "Размеры" + +#: ../admin/views/system/dialog-video.php:14 +msgid "Settings" +msgstr "Настройки" + +#: ../admin/views/system/dialog-video.php:15 ../admin/views/templates/slide-stage. +#: php:32 ../admin/views/templates/slider-main-options.php:2485 .. +#: admin/views/templates/slider-main-options.php:2630 .. +#: admin/views/templates/slider-main-options.php:2786 .. +#: admin/views/templates/slider-main-options.php:2955 +msgid "Visibility" +msgstr "Видимость" + +#: ../admin/views/system/dialog-video.php:16 +msgid "Arguments" +msgstr "Аргументы" + +#: ../admin/views/system/dialog-video.php:26 +msgid "Choose video type" +msgstr "Выберите тип видео" + +#: ../admin/views/system/dialog-video.php:32 +msgid "HTML5" +msgstr "HTML5" + +#: ../admin/views/system/dialog-video.php:36 ../admin/views/system/dialog-video. +#: php:40 ../admin/views/system/dialog-video.php:44 +msgid "From Stream" +msgstr "Из потока" + +#: ../admin/views/system/dialog-video.php:51 +msgid "Vimeo ID or URL" +msgstr "Vimeo ID или URL" + +#: ../admin/views/system/dialog-video.php:54 ../admin/views/templates/slide- +#: general-settings.php:156 +msgid "example: 30300114" +msgstr "пример: 30300114" + +#: ../admin/views/system/dialog-video.php:60 +msgid "YouTube ID or URL" +msgstr "YouTube ID или URL" + +#: ../admin/views/system/dialog-video.php:63 ../admin/views/system/dialog-video. +#: php:74 ../admin/views/system/dialog-video.php:82 ../admin/views/system/dialog- +#: video.php:89 ../admin/views/system/dialog-video.php:96 +msgid "example" +msgstr "пример" + +#: ../admin/views/system/dialog-video.php:69 +msgid "Poster Image Url" +msgstr "Постер картинки Url" + +#: ../admin/views/system/dialog-video.php:72 +msgid "Set Image" +msgstr "Выбрать изображение" + +#: ../admin/views/system/dialog-video.php:77 +msgid "Video MP4 Url" +msgstr "Видео MP4 Url" + +#: ../admin/views/system/dialog-video.php:80 ../admin/views/system/dialog-video. +#: php:87 ../admin/views/system/dialog-video.php:94 +msgid "Set Video" +msgstr "Выбрать Видео" + +#: ../admin/views/system/dialog-video.php:84 +msgid "Video WEBM Url" +msgstr "Видео WEBM Url" + +#: ../admin/views/system/dialog-video.php:91 +msgid "Video OGV Url" +msgstr "Видео OGV Url" + +#: ../admin/views/system/dialog-video.php:106 +msgid "Full Screen:" +msgstr "Полный Экран:" + +#: ../admin/views/system/dialog-video.php:111 ../admin/views/templates/slide- +#: general-settings.php:234 +msgid "Force Cover:" +msgstr "Принудительно Использовать Обложку" + +#: ../admin/views/system/dialog-video.php:116 ../admin/views/templates/slide- +#: general-settings.php:239 +msgid "Dotted Overlay:" +msgstr "Наложение точек:" + +#: ../admin/views/system/dialog-video.php:119 ../admin/views/templates/slide- +#: general-settings.php:242 ../admin/views/templates/slider-main-options.php:2250 +msgid "none" +msgstr "пусто" + +#: ../admin/views/system/dialog-video.php:120 ../admin/views/templates/slide- +#: general-settings.php:243 ../admin/views/templates/slider-main-options.php:2251 +msgid "2 x 2 Black" +msgstr "2 x 2 Черный" + +#: ../admin/views/system/dialog-video.php:121 ../admin/views/templates/slide- +#: general-settings.php:244 ../admin/views/templates/slider-main-options.php:2252 +msgid "2 x 2 White" +msgstr "2 x 2 Белый" + +#: ../admin/views/system/dialog-video.php:122 ../admin/views/templates/slide- +#: general-settings.php:245 ../admin/views/templates/slider-main-options.php:2253 +msgid "3 x 3 Black" +msgstr "3 x 3 Черный" + +#: ../admin/views/system/dialog-video.php:123 ../admin/views/templates/slide- +#: general-settings.php:246 ../admin/views/templates/slider-main-options.php:2254 +msgid "3 x 3 White" +msgstr "3 x 3 Белый" + +#: ../admin/views/system/dialog-video.php:127 ../admin/views/templates/slide- +#: general-settings.php:250 +msgid "Aspect Ratio:" +msgstr "Соотношение сторон:" + +#: ../admin/views/system/dialog-video.php:130 ../admin/views/templates/slide- +#: general-settings.php:253 +msgid "16:9" +msgstr "16:9" + +#: ../admin/views/system/dialog-video.php:131 ../admin/views/templates/slide- +#: general-settings.php:254 +msgid "4:3" +msgstr "4:3" + +#: ../admin/views/system/dialog-video.php:139 ../admin/views/templates/slide- +#: general-settings.php:273 +msgid "Loop Video:" +msgstr "Зациклить Видео:" + +#: ../admin/views/system/dialog-video.php:142 ../admin/views/system/dialog-video. +#: php:215 ../admin/views/templates/slide-general-settings.php:275 .. +#: admin/views/templates/slide-general-settings.php:908 +msgid "Disable" +msgstr "Запретить" + +#: ../admin/views/system/dialog-video.php:143 ../admin/views/templates/slide- +#: general-settings.php:276 +msgid "Loop, Slide is paused" +msgstr "Зациклить, Слайд остановлен" + +#: ../admin/views/system/dialog-video.php:144 ../admin/views/templates/slide- +#: general-settings.php:277 +msgid "Loop, Slide does not stop" +msgstr "Зациклить, Слайд не останавливается" + +#: ../admin/views/system/dialog-video.php:149 +msgid "Autoplay:" +msgstr "Автозапуск:" + +#: ../admin/views/system/dialog-video.php:153 +msgid "On 1st Time" +msgstr "" + +#: ../admin/views/system/dialog-video.php:154 +msgid "Not on 1st Time" +msgstr "" + +#: ../admin/views/system/dialog-video.php:159 +msgid "Stop Other Videos:" +msgstr "Остановить остальные Видео:" + +#: ../admin/views/system/dialog-video.php:164 ../admin/views/templates/slide- +#: general-settings.php:282 +msgid "Next Slide On End:" +msgstr "Следующий Слайд и последний:" + +#: ../admin/views/system/dialog-video.php:169 ../admin/views/templates/slide- +#: general-settings.php:286 +msgid "Rewind at Slide Start:" +msgstr "Перемотать на старте слайда:" + +#: ../admin/views/system/dialog-video.php:174 +msgid "Hide Controls:" +msgstr "Скрыть управление:" + +#: ../admin/views/system/dialog-video.php:179 +msgid "Mute:" +msgstr "Пауза:" + +#: ../admin/views/system/dialog-video.php:184 +msgid "Start at:" +msgstr "Старт:" + +#: ../admin/views/system/dialog-video.php:185 +msgid "i.e.: 0:17" +msgstr "например: 0:17" + +#: ../admin/views/system/dialog-video.php:189 +msgid "End at:" +msgstr "Конец: " + +#: ../admin/views/system/dialog-video.php:190 +msgid "i.e.: 2:41" +msgstr "например: 2:41" + +#: ../admin/views/system/dialog-video.php:194 +msgid "Show Cover at Pause:" +msgstr "Показывать обложку во время паузы:" + +#: ../admin/views/system/dialog-video.php:199 ../admin/views/templates/slide- +#: general-settings.php:297 +msgid "Video Speed:" +msgstr "Скорость Видео:" + +#: ../admin/views/system/dialog-video.php:201 ../admin/views/templates/slide- +#: general-settings.php:299 +msgid "0.25" +msgstr "0.25" + +#: ../admin/views/system/dialog-video.php:202 ../admin/views/templates/slide- +#: general-settings.php:300 +msgid "0.50" +msgstr "0.50" + +#: ../admin/views/system/dialog-video.php:203 ../admin/views/templates/slide- +#: general-settings.php:301 ../admin/views/templates/slider-main-options.php:2355 +#: ../admin/views/templates/slider-main-options.php:3268 +msgid "1" +msgstr "1" + +#: ../admin/views/system/dialog-video.php:204 ../admin/views/templates/slide- +#: general-settings.php:302 +msgid "1.5" +msgstr "1.5" + +#: ../admin/views/system/dialog-video.php:205 ../admin/views/templates/slide- +#: general-settings.php:303 ../admin/views/templates/slider-main-options.php:2356 +msgid "2" +msgstr "2" + +#: ../admin/views/system/dialog-video.php:211 +msgid "Video Preload:" +msgstr "Предварительная загрузка видео:" + +#: ../admin/views/system/dialog-video.php:214 ../admin/views/templates/slider- +#: main-options.php:938 +msgid "Auto" +msgstr "Авто" + +#: ../admin/views/system/dialog-video.php:216 +msgid "Metadata" +msgstr "Метаданные" + +#: ../admin/views/system/dialog-video.php:223 +msgid "Preview Image" +msgstr "Предпросмотр" + +#: ../admin/views/system/dialog-video.php:225 +msgid "Image Library" +msgstr "Библиотека Изображений" + +#: ../admin/views/system/dialog-video.php:226 +msgid "Video Thumbnail" +msgstr "Миниатюра Видео" + +#: ../admin/views/system/dialog-video.php:232 +msgid "Disable Mobile:" +msgstr "Выключить на Телефоне:" + +#: ../admin/views/system/dialog-video.php:237 +msgid "Only Preview on Mobile:" +msgstr "Предпросмотр на телефоне:" + +#: ../admin/views/system/dialog-video.php:245 +msgid "Arguments:" +msgstr "Аргументы:" + +#: ../admin/views/system/dialog-video.php:251 ../admin/views/system/dialog-video. +#: php:251 +msgid "Add This Video" +msgstr "Добавить это Видео" + +#: ../admin/views/system/dialog-video.php:251 +msgid "Update Video" +msgstr "Обновить Видео" + +#: ../admin/views/system/validation.php:31 +msgid "Username:" +msgstr "Имя пользователя:" + +#: ../admin/views/system/validation.php:34 +msgid "Your Envato username." +msgstr "Ваше имя пользователя Envato." + +#: ../admin/views/system/validation.php:38 +msgid "Envato API Key:" +msgstr "Envato API ключ:" + +#: ../admin/views/system/validation.php:41 +msgid "" +"You can find the API key by visiting your Envato Account page, then clicking " +"the My Settings tab. At the bottom of the page you will find your accounts " +"API key." +msgstr "" +"Вы можете найти API key на странице вашего Envato аккаунта, в разделе \"My " +"Settings\". В самом низу страницы вы найдете API key." + +#: ../admin/views/system/validation.php:45 +msgid "Purchase code:" +msgstr "Код покупки:" + +#: ../admin/views/system/validation.php:48 +msgid "Please enter your " +msgstr "Пожалуйста введите ваш" + +#: ../admin/views/system/validation.php:48 +msgid "CodeCanyon Slider Revolution purchase code / license key" +msgstr "" +"CodeCanyon Slider Revolution \n" +"код покупки / ключ лицензии" + +#: ../admin/views/system/validation.php:48 +msgid ". You can find your key by following the instructions on" +msgstr ". Вы можете найти ваш ключ следуя инструкциям на" + +#: ../admin/views/system/validation.php:48 +msgid " this page." +msgstr "эту страницу." + +#: ../admin/views/system/validation.php:54 +msgid "Register" +msgstr "Зарегистрироваться" + +#: ../admin/views/system/validation.php:56 +msgid "Deregister" +msgstr "Отменить Регистрацию" + +#: ../admin/views/system/validation.php:61 +msgid "Search for Updates" +msgstr "Поиск Обновлений" + +#: ../admin/views/system/validation.php:68 +msgid "" +"To register the plugin on a different website, click the “Deregister” button " +"here first." +msgstr "" +"Чтобы зарегистрировать плагин для другого сайта нажмите кнопку \"Отменить " +"Регистрацию\"" + +#: ../admin/views/system/validation.php:79 +msgid "How to get Support ?" +msgstr "Как получить Поддержку?" + +#: ../admin/views/system/validation.php:81 +msgid "Please feel free to contact us via our " +msgstr "Пожалуйста, не стесняйтесь связаться с нами через контакты " + +#: ../admin/views/system/validation.php:81 +msgid "Support Forum " +msgstr "Форум поддержки" + +#: ../admin/views/system/validation.php:81 +msgid "and/or via the " +msgstr " и/или через " + +#: ../admin/views/system/validation.php:81 +msgid "Item Disscussion Forum" +msgstr "Форум пользователей" + +#: ../admin/views/system/validation.php:87 +msgid "Click Here to get " +msgstr "Нажмите сюда чтобы получить" + +#: ../admin/views/system/validation.php:87 +msgid "Premium Support and Auto Updates" +msgstr "Премиум Поддержка и Авто Обновления" + +#: ../admin/views/templates/slide-general-settings.php:6 +msgid "Main Background" +msgstr "Главный Фон" + +#: ../admin/views/templates/slide-general-settings.php:8 +msgid "Slide Animation" +msgstr "Анимация Слайда" + +#: ../admin/views/templates/slide-general-settings.php:9 +msgid "Link & Seo" +msgstr "Ссылки и SEO" + +#: ../admin/views/templates/slide-general-settings.php:10 +msgid "Slide Info" +msgstr "Информация о Слайде" + +#: ../admin/views/templates/slide-general-settings.php:34 +msgid "Source Settings" +msgstr "Настройки Источника" + +#: ../admin/views/templates/slide-general-settings.php:35 .. +#: admin/views/templates/slide-stage.php:248 ../admin/views/templates/slider- +#: main-options.php:3428 +msgid "Parallax" +msgstr "Параллакс" + +#: ../admin/views/templates/slide-general-settings.php:36 +msgid "Ken Burns" +msgstr "Ken Burns" + +#: ../admin/views/templates/slide-general-settings.php:64 +msgid "Featured Image" +msgstr "Миниатюра Записи" + +#: ../admin/views/templates/slide-general-settings.php:69 +msgid "Stream Image" +msgstr "Потоковое Изображение" + +#: ../admin/views/templates/slide-general-settings.php:75 +msgid "Stream Video" +msgstr "Потоковое Видео" + +#: ../admin/views/templates/slide-general-settings.php:78 .. +#: admin/views/templates/slide-general-settings.php:86 +msgid "Use Cover" +msgstr "Использовать Обложку" + +#: ../admin/views/templates/slide-general-settings.php:83 +msgid "Stream Video + Image" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:93 +msgid "Main / Background Image" +msgstr "Главное / Фоновое Изображение" + +#: ../admin/views/templates/slide-general-settings.php:97 +msgid "Change Image" +msgstr "Изменить изображение" + +#: ../admin/views/templates/slide-general-settings.php:105 +msgid "External URL" +msgstr "Внешняя ссылка" + +#: ../admin/views/templates/slide-general-settings.php:111 +msgid "Get External" +msgstr "Внешние" + +#: ../admin/views/templates/slide-general-settings.php:117 +msgid "Transparent" +msgstr "Прозрачность" + +#: ../admin/views/templates/slide-general-settings.php:122 +msgid "Solid Colored" +msgstr "Сплошной цвет" + +#: ../admin/views/templates/slide-general-settings.php:132 +msgid "YouTube Video" +msgstr "YouTube Видео" + +#: ../admin/views/templates/slide-general-settings.php:138 .. +#: admin/views/templates/slide-general-settings.php:154 .. +#: admin/views/templates/slide-general-settings.php:889 +msgid "ID:" +msgstr "ID:" + +#: ../admin/views/templates/slide-general-settings.php:140 +msgid "example: T8--OggjJKQ" +msgstr "например: T8--OggjJKQ" + +#: ../admin/views/templates/slide-general-settings.php:142 .. +#: admin/views/templates/slide-general-settings.php:158 .. +#: admin/views/templates/slide-general-settings.php:188 +msgid "Cover Image:" +msgstr "Изображение обложки:" + +#: ../admin/views/templates/slide-general-settings.php:148 +msgid "Vimeo Video" +msgstr "Vimeo Видео" + +#: ../admin/views/templates/slide-general-settings.php:164 +msgid "HTML5 Video" +msgstr "HTML5 Видео" + +#: ../admin/views/templates/slide-general-settings.php:170 +msgid "MPEG:" +msgstr "MPEG:" + +#: ../admin/views/templates/slide-general-settings.php:173 .. +#: admin/views/templates/slide-general-settings.php:179 .. +#: admin/views/templates/slide-general-settings.php:185 +msgid "Change Video" +msgstr "Изменить Видео" + +#: ../admin/views/templates/slide-general-settings.php:176 +msgid "WEBM:" +msgstr "WEBM:" + +#: ../admin/views/templates/slide-general-settings.php:182 +msgid "OGV:" +msgstr "OGV:" + +#: ../admin/views/templates/slide-general-settings.php:196 +msgid "Image Source Size:" +msgstr "Размер Изображения:" + +#: ../admin/views/templates/slide-general-settings.php:213 +msgid "Alt:" +msgstr "Альтернативный текст:" + +#: ../admin/views/templates/slide-general-settings.php:215 .. +#: admin/views/templates/slide-stage.php:1259 +msgid "From Media Library" +msgstr "Из Медиа Библиотеки" + +#: ../admin/views/templates/slide-general-settings.php:216 .. +#: admin/views/templates/slide-stage.php:1260 +msgid "From Filename" +msgstr "Из Файла" + +#: ../admin/views/templates/slide-general-settings.php:217 .. +#: admin/views/templates/slide-stage.php:1261 ../admin/views/templates/slide- +#: stage.php:1729 +msgid "Custom" +msgstr "Свой" + +#: ../admin/views/templates/slide-general-settings.php:223 +msgid "Width:" +msgstr "Ширина:" + +#: ../admin/views/templates/slide-general-settings.php:227 +msgid "Height:" +msgstr "Высота:" + +#: ../admin/views/templates/slide-general-settings.php:260 +msgid "Start At:" +msgstr "Старт:" + +#: ../admin/views/templates/slide-general-settings.php:262 +msgid "For Example: 00:17" +msgstr "Например: 00:17" + +#: ../admin/views/templates/slide-general-settings.php:267 +msgid "End At:" +msgstr "Конец:" + +#: ../admin/views/templates/slide-general-settings.php:269 +msgid "For Example: 02:17" +msgstr "Например: 02:17" + +#: ../admin/views/templates/slide-general-settings.php:291 +msgid "Mute Video:" +msgstr "Выключить звук Видео:" + +#: ../admin/views/templates/slide-general-settings.php:307 +msgid "Arguments YouTube:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:312 +msgid "Arguments Vimeo:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:319 +msgid "Background Fit:" +msgstr "Закрепить Фон:" + +#: ../admin/views/templates/slide-general-settings.php:330 +msgid "Background Position:" +msgstr "Позиция Фона:" + +#: ../admin/views/templates/slide-general-settings.php:351 +msgid "Background Repeat:" +msgstr "Повторять Фон:" + +#: ../admin/views/templates/slide-general-settings.php:367 +msgid "Parallax Level:" +msgstr "Уровень Параллакса:" + +#: ../admin/views/templates/slide-general-settings.php:369 .. +#: admin/views/templates/slide-stage.php:462 +msgid "No Parallax" +msgstr "Параллакс выключен" + +#: ../admin/views/templates/slide-general-settings.php:385 .. +#: admin/views/templates/slide-stage.php:479 +msgid "Parallax Feature in Slider Settings is deactivated, parallax will be ignored." +msgstr "Параллакс выключен в настройках Слайдера, параллакс будет проигнорирован." + +#: ../admin/views/templates/slide-general-settings.php:393 .. +#: admin/views/templates/slider-main-options.php:1870 +msgid "Ken Burns / Pan Zoom:" +msgstr "Ken Burns / Pan Zoom:" + +#: ../admin/views/templates/slide-general-settings.php:398 +msgid "Scale: (in %):" +msgstr "" +"Масштабирование \n" +": (в %):" + +#: ../admin/views/templates/slide-general-settings.php:399 .. +#: admin/views/templates/slide-general-settings.php:407 .. +#: admin/views/templates/slide-general-settings.php:415 .. +#: admin/views/templates/slide-general-settings.php:423 +msgid "From" +msgstr "С" + +#: ../admin/views/templates/slide-general-settings.php:401 .. +#: admin/views/templates/slide-general-settings.php:409 .. +#: admin/views/templates/slide-general-settings.php:417 .. +#: admin/views/templates/slide-general-settings.php:425 +msgid "To" +msgstr "До" + +#: ../admin/views/templates/slide-general-settings.php:406 +msgid "Horizontal Offsets:" +msgstr "Горизонтальные сдвиги:" + +#: ../admin/views/templates/slide-general-settings.php:414 +msgid "Vertical Offsets:" +msgstr "Вертикальные сдвиги:" + +#: ../admin/views/templates/slide-general-settings.php:422 +msgid "Rotation:" +msgstr "Ротация:" + +#: ../admin/views/templates/slide-general-settings.php:430 .. +#: admin/views/templates/slider-main-options.php:1886 +msgid "Easing:" +msgstr "" +"Функция скорости анимации\n" +":" + +#: ../admin/views/templates/slide-general-settings.php:470 .. +#: admin/views/templates/slider-main-options.php:1993 +msgid "Duration (in ms):" +msgstr "Длительность (в мс):" + +#: ../admin/views/templates/slide-general-settings.php:486 +msgid "The title of the slide, will be shown in the slides list." +msgstr "Название слайда, будут показаны в списке слайдов." + +#: ../admin/views/templates/slide-general-settings.php:492 +msgid "Slide \"Delay\":" +msgstr "\"Задержка\" Слайда" + +#: ../admin/views/templates/slide-general-settings.php:494 +msgid "" +"A new delay value for the Slide. If no delay defined per slide, the delay " +"defined via Options (9000ms) will be used." +msgstr "" +"Новое значение \"задержки\" для Слайда. Если время \n" +"\"задержки\" для слайда не задано, будет использовано время \n" +"\"задержки\" из Основных Настроек Слайдера." + +#: ../admin/views/templates/slide-general-settings.php:500 +msgid "Slide State" +msgstr "Состояние Слайда" + +#: ../admin/views/templates/slide-general-settings.php:502 +msgid "Published" +msgstr "Опубликован" + +#: ../admin/views/templates/slide-general-settings.php:503 +msgid "Unpublished" +msgstr "Неопубликован" + +#: ../admin/views/templates/slide-general-settings.php:505 +msgid "" +"The state of the slide. The unpublished slide will be excluded from the " +"slider." +msgstr "Состояние слайда. Неопубликованные слайд будут исключены из ползунка." + +#: ../admin/views/templates/slide-general-settings.php:518 +msgid "Language" +msgstr "Язык" + +#: ../admin/views/templates/slide-general-settings.php:529 +msgid "The language of the slide (uses WPML plugin)." +msgstr "Язык слайда (использует WPML плагин)." + +#: ../admin/views/templates/slide-general-settings.php:538 +msgid "Visible from:" +msgstr "Видим с:" + +#: ../admin/views/templates/slide-general-settings.php:540 +msgid "If set, slide will be visible after the date is reached." +msgstr "Слайд будет виден после этой даты" + +#: ../admin/views/templates/slide-general-settings.php:546 +msgid "Visible until:" +msgstr "Видим до:" + +#: ../admin/views/templates/slide-general-settings.php:548 +msgid "If set, slide will be visible till the date is reached." +msgstr "Слайд будет виден до этой даты" + +#: ../admin/views/templates/slide-general-settings.php:555 +msgid "Thumbnail:" +msgstr "Миниатюра:" + +#: ../admin/views/templates/slide-general-settings.php:573 +msgid "Slide Thumbnail. If not set - it will be taken from the slide image." +msgstr "Миниатюра Слайда. Если не задана - будет сгенерирована из изображения слайда." + +#: ../admin/views/templates/slide-general-settings.php:580 +msgid "Save Performance:" +msgstr "Сохранить Производительность:" + +#: ../admin/views/templates/slide-general-settings.php:584 +msgid "Slide End Transition will first start when last Layer has been removed." +msgstr "Анимация исчезания слайда начнется когда будет скрыт последний слой." + +#: ../admin/views/templates/slide-general-settings.php:724 +msgid "Used Transitions (Order in Loops)" +msgstr "Используемые Анимации ( Порядок в циклах )" + +#: ../admin/views/templates/slide-general-settings.php:731 +msgid "Slot / Box Amount:" +msgstr "Кол-во слотов:" + +#: ../admin/views/templates/slide-general-settings.php:734 +msgid "# of slots/boxes the slide is divided into." +msgstr "кол-во слотов на которые делится слайд" + +#: ../admin/views/templates/slide-general-settings.php:739 +msgid "Slot Rotation:" +msgstr "Поворот слота:" + +#: ../admin/views/templates/slide-general-settings.php:742 +msgid "Start Rotation of Transition (deg)." +msgstr "Начальный поворот перехода ( град. )" + +#: ../admin/views/templates/slide-general-settings.php:747 +msgid "Animation Duration:" +msgstr "Длительность Анимации:" + +#: ../admin/views/templates/slide-general-settings.php:750 +msgid "The duration of the transition." +msgstr "Длительность анимации" + +#: ../admin/views/templates/slide-general-settings.php:755 +msgid "Easing In:" +msgstr "Функция скорости анимации появления:" + +#: ../admin/views/templates/slide-general-settings.php:795 +msgid "The easing of Appearing transition." +msgstr "Функция скорости анимации появления." + +#: ../admin/views/templates/slide-general-settings.php:800 +msgid "Easing Out:" +msgstr "Функция скорости анимации исчезания:" + +#: ../admin/views/templates/slide-general-settings.php:840 +msgid "The easing of Disappearing transition." +msgstr "Функция скорости анимации исчезания." + +#: ../admin/views/templates/slide-general-settings.php:858 +msgid "Parameter" +msgstr "Параметр" + +#: ../admin/views/templates/slide-general-settings.php:859 +msgid "Max. Chars" +msgstr "Макс. кол-во символов" + +#: ../admin/views/templates/slide-general-settings.php:869 +msgid "Description of Slider:" +msgstr "Описание Слайдера:" + +#: ../admin/views/templates/slide-general-settings.php:872 +msgid "" +"Define a description here to show at the navigation if enabled in Slider " +"Settings" +msgstr "" +"Введите описание для показа в навигации ( если опция включена в Настройках " +"Слайдера )" + +#: ../admin/views/templates/slide-general-settings.php:881 +msgid "Class:" +msgstr "Класс:" + +#: ../admin/views/templates/slide-general-settings.php:883 +msgid "" +"Adds a unique class to the li of the Slide like class=\"rev_special_class\" " +"(add only the classnames, seperated by space)" +msgstr "" +"Добавляет уникальный класс для LI элементов слайда, например " +"class=\"rev_special_class\" ( добавляйте только имена классов разделенные " +"пробелом ) " + +#: ../admin/views/templates/slide-general-settings.php:891 +msgid "" +"Adds a unique ID to the li of the Slide like id=\"rev_special_id\" (add only " +"the id)" +msgstr "" +"Добавляет уникальный ID для LI элементов слайда, например " +"class=\"rev_special_id\" ( добавляйте только ID ) " + +#: ../admin/views/templates/slide-general-settings.php:897 +msgid "Custom Fields:" +msgstr "Пользовательские Поля:" + +#: ../admin/views/templates/slide-general-settings.php:899 +msgid "" +"Add as many attributes as you wish here. (i.e.: data-layer=\"firstlayer\" data-" +"custom=\"somevalue\")." +msgstr "" +"Здесь вы можете добавить дополнительные аттрибуты. ( например: data-" +"layer=\"firstlayer\" data-custom=\"somevalue\")." + +#: ../admin/views/templates/slide-general-settings.php:905 +msgid "Enable Link:" +msgstr "Включить Ссылку:" + +#: ../admin/views/templates/slide-general-settings.php:907 +msgid "Enable" +msgstr "Включить" + +#: ../admin/views/templates/slide-general-settings.php:910 +msgid "Link the Full Slide to an URL or Action." +msgstr "Целый Слайд ведет на определенную ссылку или действие." + +#: ../admin/views/templates/slide-general-settings.php:917 +msgid "Link Type:" +msgstr "Тип Ссылки:" + +#: ../admin/views/templates/slide-general-settings.php:919 +msgid "Regular" +msgstr "Постояно" + +#: ../admin/views/templates/slide-general-settings.php:920 +msgid "To Slide" +msgstr "На Слайд" + +#: ../admin/views/templates/slide-general-settings.php:922 +msgid "Regular - Link to URL, To Slide - Call a Slide Action" +msgstr "Обычный - ссылка на URL, На Слайд - переключиться на слайд" + +#: ../admin/views/templates/slide-general-settings.php:929 +msgid "Slide Link:" +msgstr "Ссылка Слайда:" + +#: ../admin/views/templates/slide-general-settings.php:931 +msgid "" +"A link on the whole slide pic (use {{link}} or {{meta:somemegatag}} in " +"template sliders to link to a post or some other meta)" +msgstr "" +"Ссылка изображения слайда ( используйте {{link}} или {{meta:somemegatag}} в " +"Шаблонах Слайдеров чтобы ссылаться на запись или страницу )" + +#: ../admin/views/templates/slide-general-settings.php:937 +msgid "Link Target:" +msgstr "Цель ссылки :" + +#: ../admin/views/templates/slide-general-settings.php:939 .. +#: admin/views/templates/slide-stage.php:2273 +msgid "Same Window" +msgstr "Текущее Окно" + +#: ../admin/views/templates/slide-general-settings.php:940 .. +#: admin/views/templates/slide-stage.php:2274 +msgid "New Window" +msgstr "Новое Окно" + +#: ../admin/views/templates/slide-general-settings.php:942 +msgid "The target of the slide link." +msgstr "Цель ссылки." + +#: ../admin/views/templates/slide-general-settings.php:950 +msgid "-- Not Chosen --" +msgstr "-- Не выбрано --" + +#: ../admin/views/templates/slide-general-settings.php:951 +msgid "-- Next Slide --" +msgstr "-- Следующий слайд --" + +#: ../admin/views/templates/slide-general-settings.php:952 +msgid "-- Previous Slide --" +msgstr "-- Предыдущий слайд --" + +#: ../admin/views/templates/slide-general-settings.php:955 +msgid "-- Scroll Below Slider --" +msgstr "-- Прокрутка под Слайдером --" + +#: ../admin/views/templates/slide-general-settings.php:967 +msgid "Link To Slide:" +msgstr "Ссылка на Слайд:" + +#: ../admin/views/templates/slide-general-settings.php:978 +msgid "Call Slide Action" +msgstr "Переключиться на Слайд" + +#: ../admin/views/templates/slide-general-settings.php:983 +msgid "Link Sensibility:" +msgstr "Чувствительность ссылки:" + +#: ../admin/views/templates/slide-general-settings.php:985 +msgid "Front" +msgstr "Передняя сторона" + +#: ../admin/views/templates/slide-general-settings.php:986 +msgid "Back" +msgstr "Задняя сторона" + +#: ../admin/views/templates/slide-general-settings.php:988 +msgid "The z-index position of the link related to layers" +msgstr "z-index позиция ссылки относительно слоев" + +#: ../admin/views/templates/slide-selector.php:52 +msgid "Static / Global Layers" +msgstr "Статические / Глобальные Слои" + +#: ../admin/views/templates/slide-selector.php:68 +msgid "Show Layers from Slide:" +msgstr "Показывать Слои из Слайда:" + +#: ../admin/views/templates/slide-selector.php:232 +msgid "Add to Templates" +msgstr "Добавить в шаблоны" + +#: ../admin/views/templates/slide-selector.php:247 ../admin/views/templates/slide- +#: selector.php:259 +msgid "Add Slide" +msgstr "Добавить Слайд" + +#: ../admin/views/templates/slide-selector.php:252 +msgid "Add Blank Slide" +msgstr "Добавить пустой Слайд" + +#: ../admin/views/templates/slide-selector.php:255 +msgid "Add from Template" +msgstr "Добавить из Шаблона" + +#: ../admin/views/templates/slide-selector.php:315 +msgid "Slide name should not be empty" +msgstr "Имя Слайда не может быть пустым" + +#: ../admin/views/templates/slide-stage.php:12 +msgid "Style" +msgstr "Стиль" + +#: ../admin/views/templates/slide-stage.php:13 +msgid "Advanced Style on/off" +msgstr "Расширенные Стили вкл/выкл" + +#: ../admin/views/templates/slide-stage.php:19 ../admin/views/templates/slide- +#: stage.php:1766 +msgid "Animation" +msgstr "Анимация" + +#: ../admin/views/templates/slide-stage.php:20 +msgid "Play/Pause Single Layer Animation" +msgstr "Воспроизвести / Остановить анимацию единственного слоя" + +#: ../admin/views/templates/slide-stage.php:26 ../admin/views/templates/slide- +#: stage.php:1031 +msgid "Loop Animation" +msgstr "Зациклить Анимацию" + +#: ../admin/views/templates/slide-stage.php:27 +msgid "Play/Pause Layer Loop Animation" +msgstr "Воспроизвести / Остановить цикличную анимацию слоя" + +#: ../admin/views/templates/slide-stage.php:33 +msgid "Behavior" +msgstr "Поведение" + +#: ../admin/views/templates/slide-stage.php:36 +msgid "Attributes" +msgstr "Аттрибуты" + +#: ../admin/views/templates/slide-stage.php:38 +msgid "Static Layers" +msgstr "Статические Слои" + +#: ../admin/views/templates/slide-stage.php:40 +msgid "Performance" +msgstr "Производительность" + +#: ../admin/views/templates/slide-stage.php:56 +msgid "Global Style Editor" +msgstr "Глобальный Редактор стилей" + +#: ../admin/views/templates/slide-stage.php:58 +msgid "Dynamic Styles (Not Editable):" +msgstr "Динамические стили (не редактируются):" + +#: ../admin/views/templates/slide-stage.php:68 +msgid "Save Static Styles" +msgstr "Сохранить статические стили:" + +#: ../admin/views/templates/slide-stage.php:69 +msgid "Overwrite current static styles?" +msgstr "Переписать текущие статические стили?" + +#: ../admin/views/templates/slide-stage.php:76 +msgid "Caption Style" +msgstr "Стиль Заголовка" + +#: ../admin/views/templates/slide-stage.php:77 +msgid "Style Template" +msgstr "Шаблон Стиля" + +#: ../admin/views/templates/slide-stage.php:79 +msgid "More Style Settings" +msgstr "Больше Настроек Стиля" + +#: ../admin/views/templates/slide-stage.php:80 +msgid "Reset Style Template" +msgstr "Сбросить Шаблон Стиля" + +#: ../admin/views/templates/slide-stage.php:84 +msgid "Style Options" +msgstr "Опции Стиля" + +#: ../admin/views/templates/slide-stage.php:85 ../admin/views/templates/slide- +#: stage.php:700 ../admin/views/templates/slide-stage.php:875 +msgid "Save" +msgstr "Сохранить" + +#: ../admin/views/templates/slide-stage.php:87 ../admin/views/templates/slide- +#: stage.php:702 ../admin/views/templates/slide-stage.php:877 +msgid "Rename" +msgstr "Переименовать" + +#: ../admin/views/templates/slide-stage.php:88 ../admin/views/templates/slide- +#: stage.php:703 ../admin/views/templates/slide-stage.php:878 +msgid "Reset" +msgstr "Сбросить" + +#: ../admin/views/templates/slide-stage.php:99 +msgid "Font Size (px)" +msgstr "Размер шрифта ( px )" + +#: ../admin/views/templates/slide-stage.php:100 ../admin/views/templates/slide- +#: stage.php:2220 +msgid "Font Size" +msgstr "Размер шрифта" + +#: ../admin/views/templates/slide-stage.php:105 +msgid "Line Height (px)" +msgstr "Высота строки ( рх )" + +#: ../admin/views/templates/slide-stage.php:106 ../admin/views/templates/slide- +#: stage.php:2221 +msgid "Line Height" +msgstr "Высота строки" + +#: ../admin/views/templates/slide-stage.php:112 +msgid "White Space" +msgstr "Пробелы" + +#: ../admin/views/templates/slide-stage.php:126 +msgid "Layer Align Left" +msgstr "Выровнять слой по левому краю" + +#: ../admin/views/templates/slide-stage.php:127 +msgid "Layer Align Center" +msgstr "Выровнять слой по центру" + +#: ../admin/views/templates/slide-stage.php:128 +msgid "Layer Align Right" +msgstr "Выровнять слой по правому краю" + +#: ../admin/views/templates/slide-stage.php:135 ../admin/views/templates/slide- +#: stage.php:136 +msgid "Horizontal Offset from Aligned Position (px)" +msgstr "Горизонтальный сдвиг от позиции выравнивания ( рх )" + +#: ../admin/views/templates/slide-stage.php:140 ../admin/views/templates/slide- +#: stage.php:141 +msgid "Vertical Offset from Aligned Position (px)" +msgstr "Вертикальный сдвиг от позиции выравнивания ( рх )" + +#: ../admin/views/templates/slide-stage.php:164 ../admin/views/templates/slide- +#: stage.php:165 ../admin/views/templates/slide-stage.php:2222 +msgid "Font Weight" +msgstr "Толщина шрифта" + +#: ../admin/views/templates/slide-stage.php:179 ../admin/views/templates/slide- +#: stage.php:180 ../admin/views/templates/slide-stage.php:522 .. +#: admin/views/templates/slide-stage.php:523 ../admin/views/templates/slider- +#: main-options.php:2127 ../admin/views/templates/slider-main-options.php:2260 .. +#: admin/views/templates/slider-main-options.php:2364 +msgid "Font Color" +msgstr "Цвет Шрифта" + +#: ../admin/views/templates/slide-stage.php:186 +msgid "Layer Align Top" +msgstr "Выровнять слой по вернему краю" + +#: ../admin/views/templates/slide-stage.php:187 +msgid "Layer Align Middle" +msgstr "Выровнять слой по центру" + +#: ../admin/views/templates/slide-stage.php:188 +msgid "Layer Align Bottom" +msgstr "Выровнять слой по нижнему краю" + +#: ../admin/views/templates/slide-stage.php:194 ../admin/views/templates/slide- +#: stage.php:195 ../admin/views/templates/slide-stage.php:196 +msgid "Layer Width (px). Use 'auto' to respect White Space" +msgstr "Ширина слоя ( px ). Используйте \"auto\" чтобы учитывать пробелы" + +#: ../admin/views/templates/slide-stage.php:197 +msgid "Video Width (px). Use 'auto' to respect White Space" +msgstr "Ширина видео ( px ). Используйте \"auto\" чтобы учитывать пробелы" + +#: ../admin/views/templates/slide-stage.php:200 ../admin/views/templates/slide- +#: stage.php:201 +msgid "Layer Height (px). Use 'auto' to respect White Space" +msgstr "Высота слоя ( px ). Используйте \"auto\" чтобы учитывать пробелы" + +#: ../admin/views/templates/slide-stage.php:202 +msgid "Layer Height (px) Use 'auto' to respect White Space" +msgstr "Высота слоя ( px ). Используйте \"auto\" чтобы учитывать пробелы" + +#: ../admin/views/templates/slide-stage.php:203 +msgid "Video Height (px). Use 'auto' to respect White Space" +msgstr "Высота видео ( px ). Используйте \"auto\" чтобы учитывать пробелы" + +#: ../admin/views/templates/slide-stage.php:206 +msgid "Cover Mode" +msgstr "Режим обложки" + +#: ../admin/views/templates/slide-stage.php:217 +msgid "Auto Linebreak (on/off - White Space:normal / nowrap). " +msgstr "Автоперенос (on/off - White Space:normal / nowrap). " + +#: ../admin/views/templates/slide-stage.php:222 +msgid "Keep Aspect Ratio (on/off)" +msgstr "Сохранять пропорции" + +#: ../admin/views/templates/slide-stage.php:227 +msgid "Reset original size" +msgstr "Сбросить оригинальный размер" + +#: ../admin/views/templates/slide-stage.php:242 ../admin/views/templates/slide- +#: stage.php:510 ../admin/views/templates/slider-main-options.php:4509 +msgid "Font" +msgstr "Шрифт" + +#: ../admin/views/templates/slide-stage.php:243 ../admin/views/templates/slide- +#: stage.php:511 ../admin/views/templates/slide-stage.php:1975 .. +#: admin/views/templates/slide-stage.php:2041 ../admin/views/templates/slide- +#: stage.php:2123 +msgid "Background" +msgstr "Фона" + +#: ../admin/views/templates/slide-stage.php:245 ../admin/views/templates/slide- +#: stage.php:513 +msgid "Transform" +msgstr "Трансформация" + +#: ../admin/views/templates/slide-stage.php:246 ../admin/views/templates/slide- +#: stage.php:514 ../admin/views/templates/slide-stage.php:752 .. +#: admin/views/templates/slide-stage.php:928 ../admin/views/templates/slider- +#: main-options.php:3304 +msgid "Rotation" +msgstr "Чередование" + +#: ../admin/views/templates/slide-stage.php:247 ../admin/views/templates/slide- +#: stage.php:757 ../admin/views/templates/slide-stage.php:933 +msgid "Perspective" +msgstr "Перспектива" + +#: ../admin/views/templates/slide-stage.php:249 +msgid "Corners" +msgstr "Углы" + +#: ../admin/views/templates/slide-stage.php:251 ../admin/views/templates/slide- +#: stage.php:641 +msgid "Hover" +msgstr "Наведение Мышки" + +#: ../admin/views/templates/slide-stage.php:257 ../admin/views/templates/slide- +#: stage.php:258 +msgid "Font Opacity" +msgstr "Прозрачность Шрифта" + +#: ../admin/views/templates/slide-stage.php:262 +msgid "Italic Font" +msgstr "Курсивный Шрифт" + +#: ../admin/views/templates/slide-stage.php:263 +msgid "Italic Font On/Off" +msgstr "Включить / Выключить Курсивный Шрифт" + +#: ../admin/views/templates/slide-stage.php:267 ../admin/views/templates/slide- +#: stage.php:268 ../admin/views/templates/slide-stage.php:531 .. +#: admin/views/templates/slide-stage.php:532 +msgid "Font Decoration" +msgstr "Декорация шрифта" + +#: ../admin/views/templates/slide-stage.php:278 ../admin/views/templates/slide- +#: stage.php:279 +msgid "Text Align" +msgstr "Выравнивание текста" + +#: ../admin/views/templates/slide-stage.php:281 ../admin/views/templates/slider- +#: main-options.php:2317 ../admin/views/templates/slider-main-options.php:2532 .. +#: admin/views/templates/slider-main-options.php:2541 .. +#: admin/views/templates/slider-main-options.php:2561 .. +#: admin/views/templates/slider-main-options.php:2571 .. +#: admin/views/templates/slider-main-options.php:2676 .. +#: admin/views/templates/slider-main-options.php:2684 .. +#: admin/views/templates/slider-main-options.php:2846 .. +#: admin/views/templates/slider-main-options.php:2854 .. +#: admin/views/templates/slider-main-options.php:3014 .. +#: admin/views/templates/slider-main-options.php:3022 .. +#: admin/views/templates/slider-main-options.php:3349 .. +#: admin/views/templates/slider-main-options.php:3357 +msgid "Center" +msgstr "Центр" + +#: ../admin/views/templates/slide-stage.php:290 ../admin/views/templates/slide- +#: stage.php:291 ../admin/views/templates/slide-stage.php:542 .. +#: admin/views/templates/slide-stage.php:543 +msgid "Background Color" +msgstr "Цвет Фона" + +#: ../admin/views/templates/slide-stage.php:295 ../admin/views/templates/slide- +#: stage.php:296 ../admin/views/templates/slide-stage.php:547 .. +#: admin/views/templates/slide-stage.php:548 +msgid "Background Opacity" +msgstr "Прозрачность Фона" + +#: ../admin/views/templates/slide-stage.php:300 ../admin/views/templates/slide- +#: stage.php:2190 ../admin/views/templates/slide-stage.php:2192 +msgid "Padding" +msgstr "Padding" + +#: ../admin/views/templates/slide-stage.php:301 ../admin/views/templates/slide- +#: stage.php:2193 ../admin/views/templates/slider-main-options.php:3259 +msgid "Padding Top" +msgstr "Padding Top" + +#: ../admin/views/templates/slide-stage.php:302 ../admin/views/templates/slide- +#: stage.php:2194 +msgid "Padding Right" +msgstr "Padding Right" + +#: ../admin/views/templates/slide-stage.php:303 ../admin/views/templates/slide- +#: stage.php:2195 ../admin/views/templates/slider-main-options.php:3262 +msgid "Padding Bottom" +msgstr "Padding Bottom" + +#: ../admin/views/templates/slide-stage.php:304 ../admin/views/templates/slide- +#: stage.php:2196 +msgid "Padding Left" +msgstr "Padding Left" + +#: ../admin/views/templates/slide-stage.php:310 ../admin/views/templates/slide- +#: stage.php:311 ../admin/views/templates/slide-stage.php:553 .. +#: admin/views/templates/slide-stage.php:554 ../admin/views/templates/slide- +#: stage.php:2008 ../admin/views/templates/slide-stage.php:2073 .. +#: admin/views/templates/slide-stage.php:2140 +msgid "Border Color" +msgstr "Цвет Границы" + +#: ../admin/views/templates/slide-stage.php:315 ../admin/views/templates/slide- +#: stage.php:316 ../admin/views/templates/slide-stage.php:557 .. +#: admin/views/templates/slide-stage.php:558 ../admin/views/templates/slide- +#: stage.php:2012 ../admin/views/templates/slide-stage.php:2013 .. +#: admin/views/templates/slide-stage.php:2077 ../admin/views/templates/slide- +#: stage.php:2078 ../admin/views/templates/slide-stage.php:2144 .. +#: admin/views/templates/slide-stage.php:2145 +msgid "Border Opacity" +msgstr "Прозрачность Границы" + +#: ../admin/views/templates/slide-stage.php:320 ../admin/views/templates/slide- +#: stage.php:321 ../admin/views/templates/slide-stage.php:564 .. +#: admin/views/templates/slide-stage.php:565 +msgid "Border Style" +msgstr "Стиль Границы" + +#: ../admin/views/templates/slide-stage.php:331 ../admin/views/templates/slide- +#: stage.php:332 ../admin/views/templates/slide-stage.php:575 .. +#: admin/views/templates/slide-stage.php:576 ../admin/views/templates/slide- +#: stage.php:2017 ../admin/views/templates/slide-stage.php:2018 .. +#: admin/views/templates/slide-stage.php:2082 ../admin/views/templates/slide- +#: stage.php:2083 ../admin/views/templates/slide-stage.php:2149 .. +#: admin/views/templates/slide-stage.php:2150 +msgid "Border Width" +msgstr "Ширина Границы" + +#: ../admin/views/templates/slide-stage.php:336 ../admin/views/templates/slide- +#: stage.php:580 +msgid "Border Radius (px)" +msgstr "Радиус Границы ( рх )" + +#: ../admin/views/templates/slide-stage.php:337 ../admin/views/templates/slide- +#: stage.php:581 +msgid "Border Radius Top Left" +msgstr "Border Radius Top Left" + +#: ../admin/views/templates/slide-stage.php:338 ../admin/views/templates/slide- +#: stage.php:582 +msgid "Border Radius Top Right" +msgstr "Border Radius Top Right" + +#: ../admin/views/templates/slide-stage.php:339 ../admin/views/templates/slide- +#: stage.php:583 +msgid "Border Radius Bottom Right" +msgstr "Border Radius Bottom Right" + +#: ../admin/views/templates/slide-stage.php:340 ../admin/views/templates/slide- +#: stage.php:584 +msgid "Border Radius Bottom Left" +msgstr "Border Radius Bottom Left" + +#: ../admin/views/templates/slide-stage.php:346 ../admin/views/templates/slide- +#: stage.php:347 ../admin/views/templates/slide-stage.php:614 .. +#: admin/views/templates/slide-stage.php:615 +msgid "Rotation on X axis (+/-)" +msgstr "Поворот по оси X (+/-)" + +#: ../admin/views/templates/slide-stage.php:350 ../admin/views/templates/slide- +#: stage.php:351 ../admin/views/templates/slide-stage.php:618 .. +#: admin/views/templates/slide-stage.php:619 +msgid "Rotation on Y axis (+/-)" +msgstr "Поворот по оси Y (+/-)" + +#: ../admin/views/templates/slide-stage.php:355 ../admin/views/templates/slide- +#: stage.php:356 ../admin/views/templates/slide-stage.php:623 .. +#: admin/views/templates/slide-stage.php:624 +msgid "Rotation on Z axis (+/-)" +msgstr "Поворот по оси Z (+/-)" + +#: ../admin/views/templates/slide-stage.php:360 ../admin/views/templates/slide- +#: stage.php:361 +msgid "Horizontal Origin" +msgstr "Горизонтальный Origin" + +#: ../admin/views/templates/slide-stage.php:364 ../admin/views/templates/slide- +#: stage.php:365 +msgid "Vertical Origin" +msgstr "Вертикальный Origin" + +#: ../admin/views/templates/slide-stage.php:371 ../admin/views/templates/slide- +#: stage.php:589 +#, php-format +msgid "Opacity. (1 = 100% Visible / 0.5 = 50% opacaity / 0 = transparent)" +msgstr "" +"Прозрачность. (1 = 100% видимость / 0.5 = 50% п\n" +"розрачности\n" +"/ 0 = \n" +"п\n" +"розрачное\n" +")" + +#: ../admin/views/templates/slide-stage.php:372 ../admin/views/templates/slide- +#: stage.php:590 +#, php-format +msgid "Opacity (1 = 100% Visible / 0.5 = 50% opacaity / 0 = transparent)" +msgstr "" +"Прозрачность. (1 = 100% видимость / 0.5 = 50% п\n" +"розрачности\n" +"/ 0 = \n" +"п\n" +"розрачное\n" +")" + +#: ../admin/views/templates/slide-stage.php:376 ../admin/views/templates/slide- +#: stage.php:377 ../admin/views/templates/slide-stage.php:594 .. +#: admin/views/templates/slide-stage.php:595 +msgid "X Scale 1 = 100%, 0.5=50%... (+/-)" +msgstr "X Масштабирование 1 = 100%, 0.5=50%... (+/-)" + +#: ../admin/views/templates/slide-stage.php:381 ../admin/views/templates/slide- +#: stage.php:382 ../admin/views/templates/slide-stage.php:598 .. +#: admin/views/templates/slide-stage.php:599 +msgid "Y Scale 1 = 100%, 0.5=50%... (+/-)" +msgstr "" +"Y \n" +"Масштабирование \n" +"1 = 100%, 0.5=50%... (+/-)" + +#: ../admin/views/templates/slide-stage.php:386 ../admin/views/templates/slide- +#: stage.php:387 ../admin/views/templates/slide-stage.php:603 .. +#: admin/views/templates/slide-stage.php:604 +msgid "X Skew (+/- px)" +msgstr "X Наклон (+/- px)" + +#: ../admin/views/templates/slide-stage.php:391 ../admin/views/templates/slide- +#: stage.php:392 ../admin/views/templates/slide-stage.php:607 .. +#: admin/views/templates/slide-stage.php:608 +msgid "Y Skew (+/- px)" +msgstr "" +"Y \n" +"Наклон \n" +"(+/- px)" + +#: ../admin/views/templates/slide-stage.php:398 ../admin/views/templates/slide- +#: stage.php:630 +msgid "Template" +msgstr "Шаблон" + +#: ../admin/views/templates/slide-stage.php:399 ../admin/views/templates/slide- +#: stage.php:631 ../admin/views/templates/slider-main-options.php:971 .. +#: admin/views/templates/slider-main-options.php:1002 .. +#: admin/views/templates/slider-main-options.php:1035 .. +#: admin/views/templates/slider-main-options.php:1069 +msgid "Layer" +msgstr "Слой" + +#: ../admin/views/templates/slide-stage.php:407 +msgid "Layer Hover" +msgstr "Наведение Мышки на Слой" + +#: ../admin/views/templates/slide-stage.php:413 ../admin/views/templates/slide- +#: stage.php:414 +msgid "Hover Animation Speed (in ms)" +msgstr "Скорость Анимации при наведении мышки ( в ms )" + +#: ../admin/views/templates/slide-stage.php:419 ../admin/views/templates/slide- +#: stage.php:420 +msgid "Hover Animation Easing" +msgstr "Функция скорости анимации исчезания." + +#: ../admin/views/templates/slide-stage.php:430 ../admin/views/templates/slide- +#: stage.php:431 +msgid "Mouse Cursor" +msgstr "Курсор мышки" + +#: ../admin/views/templates/slide-stage.php:447 ../admin/views/templates/slide- +#: stage.php:448 +msgid "Animation Perspective (default 600)" +msgstr "Перспектива Анимации ( по умолчанию 600 )" + +#: ../admin/views/templates/slide-stage.php:452 ../admin/views/templates/slide- +#: stage.php:453 +msgid "Z Offset (+/- px)" +msgstr "Z Смещение (+/- px)" + +#: ../admin/views/templates/slide-stage.php:459 +msgid "Parallax Depth Level." +msgstr "Уровень глубины параллакса." + +#: ../admin/views/templates/slide-stage.php:487 +msgid "Sharp Left" +msgstr "Sharp Left" + +#: ../admin/views/templates/slide-stage.php:490 ../admin/views/templates/slide- +#: stage.php:499 +msgid "No Corner" +msgstr "Нет углов" + +#: ../admin/views/templates/slide-stage.php:491 ../admin/views/templates/slide- +#: stage.php:500 +msgid "Sharp" +msgstr "Четкий" + +#: ../admin/views/templates/slide-stage.php:492 ../admin/views/templates/slide- +#: stage.php:501 +msgid "Sharp Reversed" +msgstr "Четкий обратный ход" + +#: ../admin/views/templates/slide-stage.php:496 +msgid "Sharp Right" +msgstr "Sharp Right" + +#: ../admin/views/templates/slide-stage.php:527 ../admin/views/templates/slide- +#: stage.php:528 +msgid "Font Hover Opacity" +msgstr "Прозрачность шрифта при наведении мышки" + +#: ../admin/views/templates/slide-stage.php:640 +msgid "Idle" +msgstr "Обычное Состояние" + +#: ../admin/views/templates/slide-stage.php:645 +msgid "COPY" +msgstr "Копировать" + +#: ../admin/views/templates/slide-stage.php:647 +msgid "Copy From Idle" +msgstr "Копировать из обычного состояния" + +#: ../admin/views/templates/slide-stage.php:648 +msgid "Copy From Hover" +msgstr "Копировать из Hover состояния" + +#: ../admin/views/templates/slide-stage.php:649 +msgid "Copy From In Animation" +msgstr "Копировать из начальной Анимации" + +#: ../admin/views/templates/slide-stage.php:650 +msgid "Copy From Out Animation" +msgstr "Копировать из конечной Анимации" + +#: ../admin/views/templates/slide-stage.php:667 +msgid "Hover CSS" +msgstr "" +"CSS \n" +"при наведении мышки" + +#: ../admin/views/templates/slide-stage.php:684 ../admin/views/templates/slide- +#: stage.php:856 ../admin/views/templates/slider-main-options.php:1397 +msgid "Advanced Settings" +msgstr "Расширенные Настройки" + +#: ../admin/views/templates/slide-stage.php:688 ../admin/views/templates/slide- +#: stage.php:689 ../admin/views/templates/slide-stage.php:863 .. +#: admin/views/templates/slide-stage.php:864 +msgid "Animation Template" +msgstr "Шаблон Анимации" + +#: ../admin/views/templates/slide-stage.php:699 ../admin/views/templates/slide- +#: stage.php:874 +msgid "Template Options" +msgstr "Параметры Шаблона" + +#: ../admin/views/templates/slide-stage.php:711 ../admin/views/templates/slide- +#: stage.php:712 ../admin/views/templates/slide-stage.php:888 .. +#: admin/views/templates/slide-stage.php:889 +msgid "Animation Easing" +msgstr "Функция скорости анимации" + +#: ../admin/views/templates/slide-stage.php:722 ../admin/views/templates/slide- +#: stage.php:723 ../admin/views/templates/slide-stage.php:899 .. +#: admin/views/templates/slide-stage.php:900 +msgid "Animation Speed (in ms)" +msgstr "Скорость Анимации ( в ms )" + +#: ../admin/views/templates/slide-stage.php:727 ../admin/views/templates/slide- +#: stage.php:728 ../admin/views/templates/slide-stage.php:904 .. +#: admin/views/templates/slide-stage.php:905 +msgid "Split Animaton Text (will not respect Html Markups !)" +msgstr "Split Animaton Text (will not respect Html Markups !)" + +#: ../admin/views/templates/slide-stage.php:729 ../admin/views/templates/slide- +#: stage.php:906 +msgid "No Split" +msgstr "Без разделения" + +#: ../admin/views/templates/slide-stage.php:730 ../admin/views/templates/slide- +#: stage.php:907 +msgid "Char Based" +msgstr "Разделить на буквы" + +#: ../admin/views/templates/slide-stage.php:731 ../admin/views/templates/slide- +#: stage.php:908 +msgid "Word Based" +msgstr "Разделить на слова" + +#: ../admin/views/templates/slide-stage.php:732 ../admin/views/templates/slide- +#: stage.php:909 +msgid "Line Based" +msgstr "Разделить на строки" + +#: ../admin/views/templates/slide-stage.php:736 ../admin/views/templates/slide- +#: stage.php:737 ../admin/views/templates/slide-stage.php:913 .. +#: admin/views/templates/slide-stage.php:914 +msgid "Animation Delay between Splitted Elements" +msgstr "Задержка анимации между разделенными элементами" + +#: ../admin/views/templates/slide-stage.php:750 ../admin/views/templates/slide- +#: stage.php:926 +msgid "Offset" +msgstr "Сдвиг" + +#: ../admin/views/templates/slide-stage.php:753 ../admin/views/templates/slide- +#: stage.php:929 ../admin/views/templates/slider-main-options.php:3323 +msgid "Scale" +msgstr "Масштабирование" + +#: ../admin/views/templates/slide-stage.php:754 ../admin/views/templates/slide- +#: stage.php:930 +msgid "Skew" +msgstr "Наклон" + +#: ../admin/views/templates/slide-stage.php:755 ../admin/views/templates/slide- +#: stage.php:931 +msgid "Masking" +msgstr "Маска" + +#: ../admin/views/templates/slide-stage.php:756 ../admin/views/templates/slide- +#: stage.php:932 +msgid "Origin" +msgstr "Оригинал" + +#: ../admin/views/templates/slide-stage.php:768 +msgid "" +"Mask is not available due Style Transitions. Please remove any Rotation, " +"Scale or skew effect form Idle and Hover settings" +msgstr "" +"Маска недоступна. Пожалуйста уберите эффекты поворота, scale, skew из " +"обычного и hover состояния." + +#: ../admin/views/templates/slide-stage.php:1037 ../admin/views/templates/slide- +#: stage.php:1725 ../admin/views/templates/slide-stage.php:2244 +msgid "Disabled" +msgstr "Выключено" + +#: ../admin/views/templates/slide-stage.php:1038 +msgid "Pendulum" +msgstr "Pendulum" + +#: ../admin/views/templates/slide-stage.php:1039 +msgid "Rotate" +msgstr "Поворот" + +#: ../admin/views/templates/slide-stage.php:1040 +msgid "Slideloop" +msgstr "Slideloop" + +#: ../admin/views/templates/slide-stage.php:1041 +msgid "Pulse" +msgstr "Пульс" + +#: ../admin/views/templates/slide-stage.php:1042 +msgid "Wave" +msgstr "Волна" + +#: ../admin/views/templates/slide-stage.php:1047 +msgid "Loop Speed (sec) - 0.3 = 300ms" +msgstr "" +"Скорость цикла (\n" +"sec) - 0.3 = 300ms" + +#: ../admin/views/templates/slide-stage.php:1048 +msgid "Loop Speed (ms)" +msgstr "Скорость цикла ( ms )" + +#: ../admin/views/templates/slide-stage.php:1057 ../admin/views/templates/slide- +#: stage.php:1058 +msgid "Loop Easing" +msgstr "Функция скорости цикла" + +#: ../admin/views/templates/slide-stage.php:1071 +msgid "Loop Parameters" +msgstr "Параметры цикла" + +#: ../admin/views/templates/slide-stage.php:1077 ../admin/views/templates/slide- +#: stage.php:1078 +msgid "2D Rotation start deg." +msgstr "2D Поворот начальный град." + +#: ../admin/views/templates/slide-stage.php:1081 ../admin/views/templates/slide- +#: stage.php:1082 +msgid "2D Rotation end deg." +msgstr "2D Поворот конечный град." + +#: ../admin/views/templates/slide-stage.php:1087 ../admin/views/templates/slide- +#: stage.php:1088 +msgid "2D Rotation X Origin" +msgstr "2D Поворот позиция по Х " + +#: ../admin/views/templates/slide-stage.php:1091 ../admin/views/templates/slide- +#: stage.php:1092 +msgid "2D Rotation Y Origin" +msgstr "2D Поворот позиция по Y " + +#: ../admin/views/templates/slide-stage.php:1096 +msgid "Start" +msgstr "Начало" + +#: ../admin/views/templates/slide-stage.php:1098 ../admin/views/templates/slide- +#: stage.php:1099 +msgid "Start X Offset" +msgstr "Начальный сдвиг по Х" + +#: ../admin/views/templates/slide-stage.php:1101 ../admin/views/templates/slide- +#: stage.php:1102 +msgid "Start Y Offset" +msgstr "Начальный сдвиг по Y" + +#: ../admin/views/templates/slide-stage.php:1106 +msgid "End" +msgstr "Конец" + +#: ../admin/views/templates/slide-stage.php:1108 ../admin/views/templates/slide- +#: stage.php:1109 +msgid "End X Offset" +msgstr "Конечный сдвиг по Х" + +#: ../admin/views/templates/slide-stage.php:1111 ../admin/views/templates/slide- +#: stage.php:1112 +msgid "End Y Offset" +msgstr "Конечный сдвиг по Y" + +#: ../admin/views/templates/slide-stage.php:1117 ../admin/views/templates/slide- +#: stage.php:1119 +msgid "Zoom Start" +msgstr "Начало Увеличения" + +#: ../admin/views/templates/slide-stage.php:1121 ../admin/views/templates/slide- +#: stage.php:1123 +msgid "Zoom End" +msgstr "Конец Увеличения" + +#: ../admin/views/templates/slide-stage.php:1129 +msgid "Start Angle" +msgstr "Начальный Угол" + +#: ../admin/views/templates/slide-stage.php:1133 +msgid "Radius" +msgstr "Радиус" + +#: ../admin/views/templates/slide-stage.php:1135 +msgid "Radius of Rotation / Pendulum" +msgstr "Радиус поворота / Pendulum" + +#: ../admin/views/templates/slide-stage.php:1143 +msgid "Lazy Loading" +msgstr "Ленивая загрузка" + +#: ../admin/views/templates/slide-stage.php:1146 ../admin/views/templates/slide- +#: stage.php:1155 +msgid "Default Setting" +msgstr "Стандартные Настройки" + +#: ../admin/views/templates/slide-stage.php:1147 +msgid "Force Lazy Loading" +msgstr "Ленивая загрузка принудительно" + +#: ../admin/views/templates/slide-stage.php:1148 +msgid "Ignore Lazy Loading" +msgstr "Игнорировать ленивую загрузку" + +#: ../admin/views/templates/slide-stage.php:1152 +msgid "Source Type" +msgstr "Тип источника" + +#: ../admin/views/templates/slide-stage.php:1174 ../admin/views/templates/slide- +#: stage.php:2337 +msgid "Animation Timing" +msgstr "Время анимации" + +#: ../admin/views/templates/slide-stage.php:1177 ../admin/views/templates/slide- +#: stage.php:2340 +msgid "In and Out Animation Default" +msgstr "Начальная и конечная анимация по умолчанию" + +#: ../admin/views/templates/slide-stage.php:1178 ../admin/views/templates/slide- +#: stage.php:2341 +msgid "In Animation Default and Out Animation Wait for Trigger" +msgstr "Начальная и конечная анимация ждут события" + +#: ../admin/views/templates/slide-stage.php:1179 ../admin/views/templates/slide- +#: stage.php:2342 +msgid "Wait for Trigger" +msgstr "Ждать События" + +#: ../admin/views/templates/slide-stage.php:1183 ../admin/views/templates/slide- +#: stage.php:2345 +msgid "Trigger Memory" +msgstr "Память События" + +#: ../admin/views/templates/slide-stage.php:1186 ../admin/views/templates/slide- +#: stage.php:2348 +msgid "Reset Animation and Trigger States every loop" +msgstr "Сбрасывать состояния Анимации и События каждый цикл" + +#: ../admin/views/templates/slide-stage.php:1187 ../admin/views/templates/slide- +#: stage.php:2349 +msgid "Keep last selected State" +msgstr "Сохранять последнее выбранное состояние" + +#: ../admin/views/templates/slide-stage.php:1227 +msgid "ID" +msgstr "ID" + +#: ../admin/views/templates/slide-stage.php:1234 +msgid "Classes" +msgstr "Классы" + +#: ../admin/views/templates/slide-stage.php:1248 +msgid "Rel" +msgstr "Rel" + +#: ../admin/views/templates/slide-stage.php:1256 +msgid "Alt" +msgstr "Альтернативный текст" + +#: ../admin/views/templates/slide-stage.php:1269 +msgid "Internal Classes:" +msgstr "Внутренние классы:" + +#: ../admin/views/templates/slide-stage.php:1285 +msgid "Layer Type:" +msgstr "Тип Слоя:" + +#: ../admin/views/templates/slide-stage.php:1305 +msgid "Visibility on Devices" +msgstr "Видимость на устройствах" + +#: ../admin/views/templates/slide-stage.php:1327 +msgid "Hide 'Under' Width" +msgstr "Скрыть если ширина меньше чем" + +#: ../admin/views/templates/slide-stage.php:1333 +msgid "Only on Slider Hover" +msgstr "Только при наведении мышки на Слайд" + +#: ../admin/views/templates/slide-stage.php:1351 +msgid "Auto Responsive" +msgstr "Автоматически Адаптивный" + +#: ../admin/views/templates/slide-stage.php:1357 +msgid "Child Elements Responsive" +msgstr "Адаптивные дочерние элементы" + +#: ../admin/views/templates/slide-stage.php:1363 +msgid "Align" +msgstr "Выравнивание" + +#: ../admin/views/templates/slide-stage.php:1366 +msgid "Grid Based" +msgstr "По сетке" + +#: ../admin/views/templates/slide-stage.php:1367 +msgid "Slide Based" +msgstr "По слайду" + +#: ../admin/views/templates/slide-stage.php:1372 +msgid "Responsive Offset" +msgstr "Адаптивное Смещение" + +#: ../admin/views/templates/slide-stage.php:1396 +msgid "Static Layers will be shown on every slide in template sliders" +msgstr "Статические слои будут видны на каждом слайде в Шаблоне Слайдера" + +#: ../admin/views/templates/slide-stage.php:1403 +msgid "Start on Slide" +msgstr "Начать со Слайда" + +#: ../admin/views/templates/slide-stage.php:1428 +msgid "End on Slide" +msgstr "Закончить на Слайде" + +#: ../admin/views/templates/slide-stage.php:1525 +msgid "Image Layer Title " +msgstr "Название Изображения Слоя" + +#: ../admin/views/templates/slide-stage.php:1525 +msgid "(only for internal usage):" +msgstr "(только для внутреннего использования):" + +#: ../admin/views/templates/slide-stage.php:1542 +msgid "Add a New Layer" +msgstr "Добавить Новый Слой" + +#: ../admin/views/templates/slide-stage.php:1545 +msgid "Text/Html" +msgstr "Текст / HTML" + +#: ../admin/views/templates/slide-stage.php:1546 +msgid "Image" +msgstr "Изображение" + +#: ../admin/views/templates/slide-stage.php:1547 +msgid "Video" +msgstr "Видео" + +#: ../admin/views/templates/slide-stage.php:1548 +msgid "Button" +msgstr "Кнопка" + +#: ../admin/views/templates/slide-stage.php:1549 +msgid "Shape" +msgstr "Фигура" + +#: ../admin/views/templates/slide-stage.php:1555 +msgid "Quick Layer Selector" +msgstr "Быстрый выбор Слоя" + +#: ../admin/views/templates/slide-stage.php:1563 +msgid "Slide contains no layers" +msgstr "В Слайде отсутствуют слои " + +#: ../admin/views/templates/slide-stage.php:1624 +msgid "Delete All Layers" +msgstr "Удалить Все Слои" + +#: ../admin/views/templates/slide-stage.php:1630 +msgid "Desktop" +msgstr "Десктоп" + +#: ../admin/views/templates/slide-stage.php:1631 ../admin/views/templates/slider- +#: main-options.php:989 +msgid "Notebook" +msgstr "Ноутбук" + +#: ../admin/views/templates/slide-stage.php:1632 ../admin/views/templates/slider- +#: main-options.php:1023 +msgid "Tablet" +msgstr "Планшет" + +#: ../admin/views/templates/slide-stage.php:1633 ../admin/views/templates/slider- +#: main-options.php:1057 ../admin/views/templates/slider-main-options.php:2198 +msgid "Mobile" +msgstr "Телефон" + +#: ../admin/views/templates/slide-stage.php:1723 +msgid "Helper Grid:" +msgstr "Вспомогательная сетка:" + +#: ../admin/views/templates/slide-stage.php:1732 +msgid "Snap to:" +msgstr "Привязать к:" + +#: ../admin/views/templates/slide-stage.php:1734 ../admin/views/templates/slider- +#: main-options.php:3563 ../admin/views/templates/slider-main-options.php:3660 +msgid "None" +msgstr "Ничего" + +#: ../admin/views/templates/slide-stage.php:1735 +msgid "Help Lines" +msgstr "Вспомогательные Линии" + +#: ../admin/views/templates/slide-stage.php:1736 +msgid "Layers" +msgstr "Слои" + +#: ../admin/views/templates/slide-stage.php:1750 +msgid "PLAY" +msgstr "Воспроизводить" + +#: ../admin/views/templates/slide-stage.php:1779 +msgid "DragMe" +msgstr "ТяниМеня" + +#: ../admin/views/templates/slide-stage.php:1819 +msgid "Add Button Layer" +msgstr "Добавить слой с кнопкой" + +#: ../admin/views/templates/slide-stage.php:1825 +msgid "Click on Element to add it" +msgstr "Нажмите на Элемент чтобы добавить его" + +#: ../admin/views/templates/slide-stage.php:1829 +msgid "Buttons" +msgstr "Кнопки" + +#: ../admin/views/templates/slide-stage.php:1831 ../admin/views/templates/slide- +#: stage.php:1832 ../admin/views/templates/slide-stage.php:1833 .. +#: admin/views/templates/slide-stage.php:1836 ../admin/views/templates/slide- +#: stage.php:1837 ../admin/views/templates/slide-stage.php:1838 .. +#: admin/views/templates/slide-stage.php:1841 ../admin/views/templates/slide- +#: stage.php:1842 ../admin/views/templates/slide-stage.php:1843 .. +#: admin/views/templates/slide-stage.php:1846 ../admin/views/templates/slide- +#: stage.php:1847 ../admin/views/templates/slide-stage.php:1848 .. +#: admin/views/templates/slide-stage.php:1851 ../admin/views/templates/slide- +#: stage.php:1852 ../admin/views/templates/slide-stage.php:1853 .. +#: admin/views/templates/slide-stage.php:1856 ../admin/views/templates/slide- +#: stage.php:1857 ../admin/views/templates/slide-stage.php:1858 +msgid "Click Here" +msgstr "Нажмите Сюда" + +#: ../admin/views/templates/slide-stage.php:1860 +msgid "Predefined Elements" +msgstr "Предопределенные элементы" + +#: ../admin/views/templates/slide-stage.php:1971 +msgid "Idle State" +msgstr "Обычное Состояние" + +#: ../admin/views/templates/slide-stage.php:1990 ../admin/views/templates/slide- +#: stage.php:2054 ../admin/views/templates/slide-stage.php:2219 +msgid "Color" +msgstr "Цвет" + +#: ../admin/views/templates/slide-stage.php:1993 ../admin/views/templates/slide- +#: stage.php:2058 +msgid "Color 2" +msgstr "Цвет 2" + +#: ../admin/views/templates/slide-stage.php:2024 +msgid "Text / Icon" +msgstr "Текст / Иконка" + +#: ../admin/views/templates/slide-stage.php:2037 +msgid "Hover State" +msgstr "Состояние наведения мышки" + +#: ../admin/views/templates/slide-stage.php:2090 +msgid "Text" +msgstr "Текст" + +#: ../admin/views/templates/slide-stage.php:2103 +msgid "Add Shape Layer" +msgstr "Добавить слой с Фигурой" + +#: ../admin/views/templates/slide-stage.php:2109 +msgid "Click your Shape below to add it" +msgstr "Выберите фигуру " + +#: ../admin/views/templates/slide-stage.php:2119 +msgid "Shape Settings" +msgstr "Настройки Фигуры" + +#: ../admin/views/templates/slide-stage.php:2168 ../admin/views/templates/slider- +#: main-options.php:2510 ../admin/views/templates/slider-main-options.php:2521 .. +#: admin/views/templates/slider-main-options.php:2655 .. +#: admin/views/templates/slider-main-options.php:2666 .. +#: admin/views/templates/slider-main-options.php:2812 .. +#: admin/views/templates/slider-main-options.php:2823 .. +#: admin/views/templates/slider-main-options.php:2980 .. +#: admin/views/templates/slider-main-options.php:2991 +msgid "Width" +msgstr "Ширина" + +#: ../admin/views/templates/slide-stage.php:2170 ../admin/views/templates/slider- +#: main-options.php:943 +msgid "Full-Width" +msgstr "Полная Ширина" + +#: ../admin/views/templates/slide-stage.php:2178 +msgid "Height" +msgstr "Высота" + +#: ../admin/views/templates/slide-stage.php:2180 +msgid "Full-Height" +msgstr "Полная Высота" + +#: ../admin/views/templates/slide-stage.php:2205 +msgid "Apply Styles to Selection" +msgstr "Применить стили к выбранному" + +#: ../admin/views/templates/slide-stage.php:2223 +msgid "Advanced Styles will alwys be applied to all Device Sizes." +msgstr "" +"Расширенные Стили \n" +"будут применены ко всем Размерам Устройств" + +#: ../admin/views/templates/slide-stage.php:2238 +msgid "Click" +msgstr "Нажатие мышки" + +#: ../admin/views/templates/slide-stage.php:2239 +msgid "Mouse Enter" +msgstr "Мышка над элементом" + +#: ../admin/views/templates/slide-stage.php:2240 +msgid "Mouse Leave" +msgstr "Мышка вышла за границы элемента" + +#: ../admin/views/templates/slide-stage.php:2245 +msgid "Simple Link" +msgstr "Простая Ссылка" + +#: ../admin/views/templates/slide-stage.php:2246 +msgid "Jump to Slide" +msgstr "Перейти к Слайду" + +#: ../admin/views/templates/slide-stage.php:2247 ../admin/views/templates/slider- +#: main-options.php:3792 +msgid "Next Slide" +msgstr "Следующий слайд" + +#: ../admin/views/templates/slide-stage.php:2248 ../admin/views/templates/slider- +#: main-options.php:3788 +msgid "Previous Slide" +msgstr "Предыдущий слайд" + +#: ../admin/views/templates/slide-stage.php:2249 ../admin/views/templates/slider- +#: main-options.php:3780 +msgid "Pause Slider" +msgstr "Приостановить слайдер" + +#: ../admin/views/templates/slide-stage.php:2250 +msgid "Play Slider" +msgstr "Воспроизводить Слайдер" + +#: ../admin/views/templates/slide-stage.php:2251 +msgid "Toggle Slider" +msgstr "Переключить Слайдер" + +#: ../admin/views/templates/slide-stage.php:2252 +msgid "CallBack" +msgstr "CallBack" + +#: ../admin/views/templates/slide-stage.php:2253 +msgid "Scroll Below Slider" +msgstr "Прокрутить под Слайдер" + +#: ../admin/views/templates/slide-stage.php:2254 +msgid "Start Layer \"in\" Animation" +msgstr "Начать \"начальную\" анимацию Слоя" + +#: ../admin/views/templates/slide-stage.php:2255 +msgid "Start Layer \"out\" Animation" +msgstr "Начать \"конечную\" анимацию Слоя" + +#: ../admin/views/templates/slide-stage.php:2261 +msgid "Toggle Layer Class" +msgstr "Переключить Класс Слоя" + +#: ../admin/views/templates/slide-stage.php:2266 +msgid "Link Url" +msgstr "URL Ссылки" + +#: ../admin/views/templates/slide-stage.php:2270 +msgid "Link Target" +msgstr "Цель Ссылки" + +#: ../admin/views/templates/slide-stage.php:2277 +msgid "Link Type" +msgstr "Тип Ссылки" + +#: ../admin/views/templates/slide-stage.php:2280 +msgid "jQuery Link" +msgstr "Ссылка jQuery" + +#: ../admin/views/templates/slide-stage.php:2281 +msgid "a Tag Link" +msgstr "Ссылка - Таг" + +#: ../admin/views/templates/slide-stage.php:2287 +msgid "Jump To" +msgstr "Перейти К" + +#: ../admin/views/templates/slide-stage.php:2296 +msgid "Scroll Offset" +msgstr "Сдвиг Скролла" + +#: ../admin/views/templates/slide-stage.php:2303 +msgid "Function" +msgstr "Функция" + +#: ../admin/views/templates/slide-stage.php:2309 +msgid "Target" +msgstr "Цель" + +#: ../admin/views/templates/slide-stage.php:2313 +msgid "Delay" +msgstr "Задержка" + +#: ../admin/views/templates/slide-stage.php:2315 ../admin/views/templates/slider- +#: main-options.php:1763 ../admin/views/templates/slider-main-options.php:1769 .. +#: admin/views/templates/slider-main-options.php:1788 .. +#: admin/views/templates/slider-main-options.php:2032 .. +#: admin/views/templates/slider-main-options.php:2038 .. +#: admin/views/templates/slider-main-options.php:2496 .. +#: admin/views/templates/slider-main-options.php:2501 .. +#: admin/views/templates/slider-main-options.php:2641 .. +#: admin/views/templates/slider-main-options.php:2646 .. +#: admin/views/templates/slider-main-options.php:2798 .. +#: admin/views/templates/slider-main-options.php:2803 .. +#: admin/views/templates/slider-main-options.php:2967 .. +#: admin/views/templates/slider-main-options.php:2971 .. +#: admin/views/templates/slider-main-options.php:3461 +msgid "ms" +msgstr "мс" + +#: ../admin/views/templates/slide-stage.php:2320 +msgid "at Start" +msgstr "на Старте" + +#: ../admin/views/templates/slide-stage.php:2322 +msgid "Play In Animation" +msgstr "Проигрывать Анимацию" + +#: ../admin/views/templates/slide-stage.php:2323 +msgid "Keep Hidden" +msgstr "Оставить скрытым" + +#: ../admin/views/templates/slide-stage.php:2330 +msgid "Class" +msgstr "Класс" + +#: ../admin/views/templates/slider-main-options.php:32 +msgid "Edit Slider" +msgstr "Редактировать слайдер" + +#: ../admin/views/templates/slider-main-options.php:32 .. +#: admin/views/templates/sliders-list.php:184 +msgid "New Slider" +msgstr "Новый слайдер" + +#: ../admin/views/templates/slider-main-options.php:45 +msgid "Content Source" +msgstr "Источник Контента" + +#: ../admin/views/templates/slider-main-options.php:52 +msgid "Default Slider" +msgstr "Стандартный Слайдер" + +#: ../admin/views/templates/slider-main-options.php:57 +msgid "Post-Based Slider" +msgstr "Слайдер из Записей" + +#: ../admin/views/templates/slider-main-options.php:62 +msgid "Specific Posts" +msgstr "Специальные Записи" + +#: ../admin/views/templates/slider-main-options.php:67 +msgid "Flickr Stream" +msgstr "Flickr Stream" + +#: ../admin/views/templates/slider-main-options.php:72 +msgid "Instagram Stream" +msgstr "Instagram Stream" + +#: ../admin/views/templates/slider-main-options.php:77 +msgid "Woo Commerce Slider" +msgstr "Woo Commerce Слайдер" + +#: ../admin/views/templates/slider-main-options.php:82 +msgid "Twitter Stream" +msgstr "Twitter Stream" + +#: ../admin/views/templates/slider-main-options.php:87 +msgid "Facebook Stream" +msgstr "Facebook Stream" + +#: ../admin/views/templates/slider-main-options.php:92 +msgid "YouTube Stream" +msgstr "YouTube Stream" + +#: ../admin/views/templates/slider-main-options.php:97 +msgid "Vimeo Stream" +msgstr "Vimeo Stream" + +#: ../admin/views/templates/slider-main-options.php:113 +msgid "Coming Soon!" +msgstr "Скоро!" + +#: ../admin/views/templates/slider-main-options.php:121 +msgid "Slides (max 33)" +msgstr "Слайды ( макс. 33 )" + +#: ../admin/views/templates/slider-main-options.php:122 .. +#: admin/views/templates/slider-main-options.php:143 +msgid "Display this number of photos" +msgstr "Показывать это кол-во фотографий" + +#: ../admin/views/templates/slider-main-options.php:124 .. +#: admin/views/templates/slider-main-options.php:260 +msgid "Access Token" +msgstr "Access Token" + +#: ../admin/views/templates/slider-main-options.php:125 +msgid "Put in your Instagram Access Token" +msgstr "" +"Введите ваш\n" +" Instagram Access Token" + +#: ../admin/views/templates/slider-main-options.php:128 +msgid "" +"Get your Instagram Access Token here" +msgstr "" +"Получить Instagram Access Token здесь" + +#: ../admin/views/templates/slider-main-options.php:132 +msgid "Instagram User ID" +msgstr "ID пользователя Instagram" + +#: ../admin/views/templates/slider-main-options.php:133 +msgid "Put in the Instagram User ID" +msgstr "" +"Введите ваш\n" +" Instagram User ID" + +#: ../admin/views/templates/slider-main-options.php:135 +msgid "" +"Find the Instagram User ID here" +msgstr "" +"Получить Instagram User ID здесь" + +#: ../admin/views/templates/slider-main-options.php:142 .. +#: admin/views/templates/slider-main-options.php:229 +msgid "Slides (max 500)" +msgstr "Слайды ( макс. 500 )" + +#: ../admin/views/templates/slider-main-options.php:145 +msgid "Flickr API Key" +msgstr "Flickr API Key" + +#: ../admin/views/templates/slider-main-options.php:146 +msgid "Put in your Flickr API Key" +msgstr "" +"Введите ваш\n" +" \n" +"Flickr API Key" + +#: ../admin/views/templates/slider-main-options.php:148 +msgid "" +"Read here how to receive your Flickr API key" +msgstr "" +"Читать здесь как получить ваш Flickr API key" + +#: ../admin/views/templates/slider-main-options.php:153 +msgid "Display a user's public photos" +msgstr "Показывать публичные фотографии пользователя" + +#: ../admin/views/templates/slider-main-options.php:153 +msgid "User Public Photos" +msgstr "Публичные фотографии пользователя" + +#: ../admin/views/templates/slider-main-options.php:154 +msgid "Display a certain photoset from a user" +msgstr "Показывать определенный фотосет пользователя" + +#: ../admin/views/templates/slider-main-options.php:154 +msgid "User Photoset" +msgstr "Фотосет Пользователя" + +#: ../admin/views/templates/slider-main-options.php:155 +msgid "Display a gallery" +msgstr "Показывать галерею" + +#: ../admin/views/templates/slider-main-options.php:156 +msgid "Display a group's photos" +msgstr "Показывать фотографии группы" + +#: ../admin/views/templates/slider-main-options.php:156 +msgid "Groups' Photos" +msgstr "Фотографии Группы" + +#: ../admin/views/templates/slider-main-options.php:160 +msgid "Flickr User Url" +msgstr "Ссылка пользователя Flickr" + +#: ../admin/views/templates/slider-main-options.php:161 +msgid "Put in the URL of the flickr User" +msgstr "" +"Введите URL для пользователя \n" +"Flickr" + +#: ../admin/views/templates/slider-main-options.php:166 +msgid "Select Photoset" +msgstr "Выберите фотосет" + +#: ../admin/views/templates/slider-main-options.php:168 +msgid "Select the photoset to pull the data from " +msgstr "Выберите фотосет для загрузки данных" + +#: ../admin/views/templates/slider-main-options.php:174 +msgid "Flickr Gallery Url" +msgstr "Ссылка на галерею Flickr" + +#: ../admin/views/templates/slider-main-options.php:175 +msgid "Put in the URL of the flickr Gallery" +msgstr "" +"Введите URL для галереи \n" +"Flickr" + +#: ../admin/views/templates/slider-main-options.php:180 +msgid "Flickr Group Url" +msgstr "Ссылка на группу Flickr" + +#: ../admin/views/templates/slider-main-options.php:181 +msgid "Put in the URL of the flickr Group" +msgstr "" +"Введите URL для группы \n" +"Flickr" + +#: ../admin/views/templates/slider-main-options.php:189 +msgid "Slides (max 25)" +msgstr "Слайды ( макс. 25 )" + +#: ../admin/views/templates/slider-main-options.php:190 +msgid "Display this number of posts" +msgstr "Показывать определенное кол-во записей" + +#: ../admin/views/templates/slider-main-options.php:192 .. +#: admin/views/templates/slider-main-options.php:232 +msgid "Cache (sec)" +msgstr "Кэш ( сек )" + +#: ../admin/views/templates/slider-main-options.php:193 .. +#: admin/views/templates/slider-main-options.php:233 +msgid "Cache the stream for x seconds" +msgstr "Кешировать Х секунд потока" + +#: ../admin/views/templates/slider-main-options.php:197 +msgid "Facebook Page" +msgstr "Страница Facebook" + +#: ../admin/views/templates/slider-main-options.php:198 +msgid "Put in the URL/ID of the Facebook page" +msgstr "" +"Введите \n" +"URL/ID страницы Facebook" + +#: ../admin/views/templates/slider-main-options.php:204 .. +#: admin/views/templates/slider-main-options.php:312 +msgid "Album" +msgstr "Альбом" + +#: ../admin/views/templates/slider-main-options.php:205 +msgid "Timeline" +msgstr "Таймлайн" + +#: ../admin/views/templates/slider-main-options.php:210 +msgid "Select Album" +msgstr "Выберите Альбом" + +#: ../admin/views/templates/slider-main-options.php:212 +msgid "Select the album to pull the data from " +msgstr "Выберите альбом для загрузки данных" + +#: ../admin/views/templates/slider-main-options.php:217 +msgid "App ID" +msgstr "App ID" + +#: ../admin/views/templates/slider-main-options.php:218 +msgid "Put in the Facebook App ID" +msgstr "Введите Facebook App ID" + +#: ../admin/views/templates/slider-main-options.php:221 +msgid "App Secret" +msgstr "App Secret" + +#: ../admin/views/templates/slider-main-options.php:222 +msgid "Put in the Facebook App secret" +msgstr "Введите Facebook App secret\n" + +#: ../admin/views/templates/slider-main-options.php:230 +msgid "Display this number of tweets" +msgstr "Показывать определенное кол-во твитов" + +#: ../admin/views/templates/slider-main-options.php:236 +msgid "Twitter Name @" +msgstr "Имя Twitter @" + +#: ../admin/views/templates/slider-main-options.php:237 +msgid "Put in the Twitter Account to stream from" +msgstr "Введите аккаунт Twitter" + +#: ../admin/views/templates/slider-main-options.php:240 +msgid "Text Tweets" +msgstr "Текстовые твиты" + +#: ../admin/views/templates/slider-main-options.php:244 +msgid "Retweets" +msgstr "Ретвиты" + +#: ../admin/views/templates/slider-main-options.php:248 +msgid "Replies" +msgstr "Ответы" + +#: ../admin/views/templates/slider-main-options.php:253 +msgid "Consumer Key" +msgstr "Consumer Key" + +#: ../admin/views/templates/slider-main-options.php:254 +msgid "Put in your Twitter Consumer Key" +msgstr "Введите Twitter Consumer Key" + +#: ../admin/views/templates/slider-main-options.php:256 +msgid "Consumer Secret" +msgstr "Consumer Secret" + +#: ../admin/views/templates/slider-main-options.php:257 +msgid "Put in your Twitter Consumer Secret" +msgstr "Введите Twitter Consumer Secret" + +#: ../admin/views/templates/slider-main-options.php:261 +msgid "Put in your Twitter Access Token" +msgstr "Введите Twitter Access Token" + +#: ../admin/views/templates/slider-main-options.php:264 +msgid "Access Secret" +msgstr "Access Secret" + +#: ../admin/views/templates/slider-main-options.php:265 +msgid "Put in your Twitter Access Secret" +msgstr "Введите Twitter Access Secret" + +#: ../admin/views/templates/slider-main-options.php:267 +msgid "" +"Please register " +"your application with Twitter to get the values" +msgstr "" +"Пожалуйста зарегистрируйте ваше приложение в Twitter для загрузки данных" + +#: ../admin/views/templates/slider-main-options.php:273 +msgid "Slides (max 50)" +msgstr "Слайды ( макс. 50 )" + +#: ../admin/views/templates/slider-main-options.php:274 .. +#: admin/views/templates/slider-main-options.php:307 +msgid "Display this number of videos" +msgstr "Показывать определенное кол-во видео" + +#: ../admin/views/templates/slider-main-options.php:276 +msgid "Youtube API Key" +msgstr "Youtube API Key\n" + +#: ../admin/views/templates/slider-main-options.php:277 +msgid "Put in your YouTube API Key" +msgstr "" +"Введите \n" +"Youtube API Key" + +#: ../admin/views/templates/slider-main-options.php:280 +msgid "" +"Find information about the YouTube API key here" +msgstr "" +"Получить YouTube API key здесь" + +#: ../admin/views/templates/slider-main-options.php:283 +msgid "Channel ID" +msgstr "ID Канала" + +#: ../admin/views/templates/slider-main-options.php:284 +msgid "Put in the ID of the YouTube channel" +msgstr "" +"Введите \n" +"ID канала на Youtube" + +#: ../admin/views/templates/slider-main-options.php:288 +msgid "Display the channel´s videos" +msgstr "Показывать видео канала" + +#: ../admin/views/templates/slider-main-options.php:288 .. +#: admin/views/templates/slider-main-options.php:314 .. +#: admin/views/templates/slider-main-options.php:332 +msgid "Channel" +msgstr "Канал" + +#: ../admin/views/templates/slider-main-options.php:289 +msgid "Display a playlist" +msgstr "Показывать плейлист" + +#: ../admin/views/templates/slider-main-options.php:289 +msgid "Playlist" +msgstr "Плейлист" + +#: ../admin/views/templates/slider-main-options.php:294 +msgid "Select Playlist" +msgstr "Выбрать плейлист" + +#: ../admin/views/templates/slider-main-options.php:300 +msgid "" +"See how to find the Youtube channel ID here" +msgstr "" +"Получить Youtube channel ID здесь" + +#: ../admin/views/templates/slider-main-options.php:306 +msgid "Slides (max 60)" +msgstr "Слайды ( макс. 60 )" + +#: ../admin/views/templates/slider-main-options.php:311 +msgid "Display the user's videos" +msgstr "Показывать видео пользователя" + +#: ../admin/views/templates/slider-main-options.php:311 .. +#: admin/views/templates/slider-main-options.php:320 +msgid "User" +msgstr "Пользователь" + +#: ../admin/views/templates/slider-main-options.php:312 +msgid "Display an album" +msgstr "Показывать альбом" + +#: ../admin/views/templates/slider-main-options.php:313 +msgid "Display a group's videos" +msgstr "Показывать видео группы" + +#: ../admin/views/templates/slider-main-options.php:313 .. +#: admin/views/templates/slider-main-options.php:324 +msgid "Group" +msgstr "Группа" + +#: ../admin/views/templates/slider-main-options.php:314 +msgid "Display a channel's videos" +msgstr "Показывать видео канала" + +#: ../admin/views/templates/slider-main-options.php:321 +msgid "Either the shortcut URL or ID of the user" +msgstr "Или shortcut URL или ID пользователя" + +#: ../admin/views/templates/slider-main-options.php:325 +msgid "Either the shortcut URL or ID of the group" +msgstr "Или shortcut URL или ID группы" + +#: ../admin/views/templates/slider-main-options.php:328 +msgid "Album ID" +msgstr "ID Альбома" + +#: ../admin/views/templates/slider-main-options.php:329 +msgid "The ID of the album" +msgstr "ID Альбома" + +#: ../admin/views/templates/slider-main-options.php:333 +msgid "Either the shortcut URL of the channel" +msgstr "Или shortcut URL или ID канала" + +#: ../admin/views/templates/slider-main-options.php:341 +msgid "Specific Posts List:" +msgstr "Список выбранных записей:" + +#: ../admin/views/templates/slider-main-options.php:345 +msgid "Post Types:" +msgstr "Типы записей:" + +#: ../admin/views/templates/slider-main-options.php:389 +msgid "Post Categories:" +msgstr "Категории Записей:" + +#: ../admin/views/templates/slider-main-options.php:415 +msgid "Filter Events By:" +msgstr "Фильтровать события по:" + +#: ../admin/views/templates/slider-main-options.php:429 +msgid "Sort Posts By:" +msgstr "Сортировать Записи по:" + +#: ../admin/views/templates/slider-main-options.php:431 +msgid "Post ID" +msgstr "ID Записи" + +#: ../admin/views/templates/slider-main-options.php:432 +msgid "Date" +msgstr "Дата" + +#: ../admin/views/templates/slider-main-options.php:434 +msgid "Slug" +msgstr "Ссылка записи " + +#: ../admin/views/templates/slider-main-options.php:435 +msgid "Author" +msgstr "Автор" + +#: ../admin/views/templates/slider-main-options.php:436 +msgid "Last Modified" +msgstr "Дата последнего изменения" + +#: ../admin/views/templates/slider-main-options.php:437 +msgid "Number Of Comments" +msgstr "Кол-во комментариев" + +#: ../admin/views/templates/slider-main-options.php:438 +msgid "Random" +msgstr "Случайный" + +#: ../admin/views/templates/slider-main-options.php:439 +msgid "Unsorted" +msgstr "Несортированный" + +#: ../admin/views/templates/slider-main-options.php:440 +msgid "Custom Order" +msgstr "Пользовательский порядок" + +#: ../admin/views/templates/slider-main-options.php:456 +msgid "Sort Direction:" +msgstr "Порядок сортировки:" + +#: ../admin/views/templates/slider-main-options.php:459 +msgid "Descending" +msgstr "по убыванию" + +#: ../admin/views/templates/slider-main-options.php:461 +msgid "Ascending" +msgstr "по возрастанию" + +#: ../admin/views/templates/slider-main-options.php:465 +msgid "Max Posts Per Slider:" +msgstr "Макс. кол-во записей в Слайдере:" + +#: ../admin/views/templates/slider-main-options.php:469 +msgid "Limit The Excerpt To:" +msgstr "Ограничить Отрывок:" + +#: ../admin/views/templates/slider-main-options.php:481 +msgid "Slider Title & ShortCode" +msgstr "Название и шорткод Слайдера" + +#: ../admin/views/templates/slider-main-options.php:486 +msgid "Enter your Slider Name here" +msgstr "Введите имя Слайдера" + +#: ../admin/views/templates/slider-main-options.php:488 +msgid "The title of the slider, example: Slider 1" +msgstr "Название слайдера, например: Slider 1" + +#: ../admin/views/templates/slider-main-options.php:492 +msgid "Enter your Slider Alias here" +msgstr "Введите алиас Слайдера" + +#: ../admin/views/templates/slider-main-options.php:494 +msgid "The alias for embedding your slider, example: slider1" +msgstr "Алиас вашего слайдера, например: slider1" + +#: ../admin/views/templates/slider-main-options.php:500 +msgid "Place the shortcode where you want to show the slider" +msgstr "Вставьте шорткод в место где вы хотите показать слайдер." + +#: ../admin/views/templates/slider-main-options.php:514 +msgid "Select a Slider Type" +msgstr "Выберите Тип Слайдера" + +#: ../admin/views/templates/slider-main-options.php:519 +msgid "Standard Slider" +msgstr "Стандартный Слайдер" + +#: ../admin/views/templates/slider-main-options.php:524 +msgid "Hero Scene" +msgstr "Hero Scene" + +#: ../admin/views/templates/slider-main-options.php:529 +msgid "Carousel Slider" +msgstr "" +"Cлайдер \n" +"Карусель" + +#: ../admin/views/templates/slider-main-options.php:533 +msgid "Load a Preset from this Slider Type" +msgstr "Загрузить Набор Настроек для этого типа Слайдера" + +#: ../admin/views/templates/slider-main-options.php:544 +msgid "Save Current Settings as Preset" +msgstr "Сохранить Текущие Настройки как Набор Настроек" + +#: ../admin/views/templates/slider-main-options.php:929 +msgid "Slide Layout" +msgstr "Лейаут Слайда" + +#: ../admin/views/templates/slider-main-options.php:948 +msgid "Full-Screen" +msgstr "Полноэкранный режим" + +#: ../admin/views/templates/slider-main-options.php:958 +msgid "Desktop Large" +msgstr "Режим широкоформатного монитора" + +#: ../admin/views/templates/slider-main-options.php:958 +msgid "Max" +msgstr "Макс." + +#: ../admin/views/templates/slider-main-options.php:979 .. +#: admin/views/templates/slider-main-options.php:1010 .. +#: admin/views/templates/slider-main-options.php:1043 .. +#: admin/views/templates/slider-main-options.php:1078 +msgid "Layer Grid Size" +msgstr "Размер Сетки Слоя" + +#: ../admin/views/templates/slider-main-options.php:984 +msgid "Specify a layer grid size above" +msgstr "Задает размер сетки слоя" + +#: ../admin/views/templates/slider-main-options.php:1015 .. +#: admin/views/templates/slider-main-options.php:1048 .. +#: admin/views/templates/slider-main-options.php:1083 +msgid "Custom Grid Size" +msgstr "Пользовательский размер сетки" + +#: ../admin/views/templates/slider-main-options.php:1092 +msgid "Show Advanced Size Options" +msgstr "Показать Расширенные Параметры Размера" + +#: ../admin/views/templates/slider-main-options.php:1099 +msgid "FullScreen Align Force" +msgstr "Принудительное выравнивание в полноэкранном режиме." + +#: ../admin/views/templates/slider-main-options.php:1101 +msgid "Layers align within the full slider instead of the layer grid." +msgstr "Выравнивание слоев по ширине слайдера, а не по сетке слоя." + +#: ../admin/views/templates/slider-main-options.php:1105 +msgid "Increase/Decrease Fullscreen Height" +msgstr "" +"Увеличить / Уменьшить высоту в \n" +"Полноэкранном режиме" + +#: ../admin/views/templates/slider-main-options.php:1110 +msgid "Containers" +msgstr "Контейнеры" + +#: ../admin/views/templates/slider-main-options.php:1112 +msgid "" +"Example: #header or .header, .footer, #somecontainer | Height of Slider will " +"be decreased with the height of these Containers to fit perfect in the " +"screen." +msgstr "" +"Пример: #header или .header, .footer, #somecontainer | Высота Слайдера будет " +"уменьшена на высоту этих элементов." + +#: ../admin/views/templates/slider-main-options.php:1118 +msgid "PX or %" +msgstr "PX или %" + +#: ../admin/views/templates/slider-main-options.php:1120 +msgid "" +"Decrease/Increase height of Slider. Can be used with px and %. " +"Positive/Negative values allowed. Example: 40px or 10%" +msgstr "" +"Уменьшить / Увеличить высоту Слайдера. Может быть в px или %. Разрешены " +"положительные / отрицательные значения. Пример: 40px , 10%" + +#: ../admin/views/templates/slider-main-options.php:1126 .. +#: admin/views/templates/slider-main-options.php:1150 +msgid "Min. Height" +msgstr "Мин. высота" + +#: ../admin/views/templates/slider-main-options.php:1128 +msgid "The minimum height of the Slider in FullScreen mode." +msgstr "Минимальная высота Слайдера в полноэкранном режиме" + +#: ../admin/views/templates/slider-main-options.php:1136 +msgid "Overflow Hidden" +msgstr "Overflow Hidden" + +#: ../admin/views/templates/slider-main-options.php:1139 +msgid "" +"Adds overflow:hidden to the slider wrapping container which will hide / cut " +"any overlapping elements. Mostly used in Carousel Sliders." +msgstr "" +"Добавляет overflow:hidden контейнеру слайдера. В основном используется в " +"Слайдер Карусели" + +#: ../admin/views/templates/slider-main-options.php:1143 +msgid "Respect Aspect Ratio" +msgstr "Сохранять пропорции" + +#: ../admin/views/templates/slider-main-options.php:1146 +msgid "" +"It will keep aspect ratio and ignore max height of Layer Grid by upscaling. " +"Layer Area will be vertical centered." +msgstr "" +"Сохранит пропорции и будет игнорировать макс. высоту Сетки Слоя. Слой будет " +"вертикально отцентрирован." + +#: ../admin/views/templates/slider-main-options.php:1152 +msgid "The minimum height of the Slider in FullWidth or Auto mode." +msgstr "Минимальная высота Слайдера в режиме Полной Ширины или Авто режиме." + +#: ../admin/views/templates/slider-main-options.php:1346 +msgid "Force Full Width:" +msgstr "Полная ширина принудительно:" + +#: ../admin/views/templates/slider-main-options.php:1392 +msgid "Customize, Build & Implement" +msgstr "Настройка, Создание и Реализация" + +#: ../admin/views/templates/slider-main-options.php:1398 +msgid "" +"Go for further customization using the advanced settings on the right of " +"this configuration page." +msgstr "Уточните конфигурацию слайдера используя дополнительные настройки справа." + +#: ../admin/views/templates/slider-main-options.php:1400 +msgid "Scroll to Options" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1405 +msgid "Start Building Slides" +msgstr "Начать Создание Слайдов" + +#: ../admin/views/templates/slider-main-options.php:1406 +msgid "" +"Our drag and drop editor will make creating slide content an absolut breeze. " +"This is where the magic happens!" +msgstr "" +"Наш drag-n-drop редактор серьозно облегчает процесс создание слайда. Вот где " +"происходит волшебство!" + +#: ../admin/views/templates/slider-main-options.php:1411 .. +#: admin/views/templates/slider-main-options.php:4443 .. +#: admin/views/templates/slides.php:8 +msgid "Edit Slides" +msgstr "Редактировать слайды" + +#: ../admin/views/templates/slider-main-options.php:1419 +msgid "Implement your Slider" +msgstr "Создайте ваш Слайдер" + +#: ../admin/views/templates/slider-main-options.php:1420 +msgid "" +"There are several ways to add your slider to your wordpress post / page / " +"etc." +msgstr "" +"Существует несколько способов добавления слайдера на страницу / запись " +"Wordpress'а" + +#: ../admin/views/templates/slider-main-options.php:1423 .. +#: admin/views/templates/sliders-list.php:144 +msgid "Embed Slider" +msgstr "Вставить Слайдер" + +#: ../admin/views/templates/slider-main-options.php:1429 .. +#: admin/views/templates/slider-main-options.php:4429 +msgid "Save Settings" +msgstr "Сохранить Настройки" + +#: ../admin/views/templates/slider-main-options.php:1430 .. +#: admin/views/templates/slider-main-options.php:4430 +msgid "updating..." +msgstr "обновляются..." + +#: ../admin/views/templates/slider-main-options.php:1432 .. +#: admin/views/templates/slider-main-options.php:4434 +msgid "Delete Slider" +msgstr "Удалить слайдер" + +#: ../admin/views/templates/slider-main-options.php:1434 +msgid "Preview Slider" +msgstr "Простмотр слайдера" + +#: ../admin/views/templates/slider-main-options.php:1470 +msgid "Custom CSS / Javascript" +msgstr "Пользовательский CSS / JavaScript" + +#: ../admin/views/templates/slider-main-options.php:1473 +msgid "Custom CSS" +msgstr "Пользовательский CSS" + +#: ../admin/views/templates/slider-main-options.php:1477 +msgid "Custom JavaScript" +msgstr "Пользовательский JavaScript" + +#: ../admin/views/templates/slider-main-options.php:1729 +msgid "Slideshow" +msgstr "Слайдшоу" + +#: ../admin/views/templates/slider-main-options.php:1730 +msgid "Defaults" +msgstr "По Умолчанию" + +#: ../admin/views/templates/slider-main-options.php:1731 +msgid "Progress Bar" +msgstr "Индикатор прогресса" + +#: ../admin/views/templates/slider-main-options.php:1732 +msgid "1st Slide" +msgstr "1-й Слайд" + +#: ../admin/views/templates/slider-main-options.php:1733 .. +#: admin/views/templates/slider-main-options.php:2458 +msgid "Misc." +msgstr "Допольнительно" + +#: ../admin/views/templates/slider-main-options.php:1743 +msgid "" +"Show multi language controls across the slider. Only available when wpml " +"plugin exists." +msgstr "Показывать переключатель языка. Только если у вас установлен WPML " + +#: ../admin/views/templates/slider-main-options.php:1743 +msgid "Use Multi Language (WPML)" +msgstr "Использовать мультиязычность ( WPML )" + +#: ../admin/views/templates/slider-main-options.php:1752 +msgid "" +"Call next slide when inactive browser tab is focused again. Use this for " +"avoid dissorted layers and broken timeouts after bluring the browser tab." +msgstr "" +"Переключает на след. слайд когда неактивный таб в браузере снова стает " +"активным. Используйтся для избежания ситуации с поломанными слоями и " +"таймаутами после переключения табов в браузере." + +#: ../admin/views/templates/slider-main-options.php:1752 +msgid "Next Slide on Focus" +msgstr "След. слайд на Фокус" + +#: ../admin/views/templates/slider-main-options.php:1761 +msgid "" +"The time one slide stays on the screen in Milliseconds. This is a Default " +"Global value. Can be adjusted slide to slide also in the slide editor." +msgstr "" +"Время показа одного слайда в ms. Это глобальное значение по умолчанию. Может " +"быть изменено для конкретного слайда в редакторе слайдов." + +#: ../admin/views/templates/slider-main-options.php:1761 +msgid "Default Slide Duration" +msgstr "Длительность Слайд по умолчанию" + +#: ../admin/views/templates/slider-main-options.php:1767 +msgid "Sets a delay before the Slider gets initialized" +msgstr "Устанавливает задержку перед инициализацией Слайдера" + +#: ../admin/views/templates/slider-main-options.php:1767 +msgid "Initialization Delay" +msgstr "Задержка при инициализации" + +#: ../admin/views/templates/slider-main-options.php:1772 +msgid "Default transition by creating a new slide." +msgstr "Анимация по умолчанию при создании нового слайда." + +#: ../admin/views/templates/slider-main-options.php:1772 +msgid "Transitions" +msgstr "Переходы" + +#: ../admin/views/templates/slider-main-options.php:1786 +msgid "Default transition duration by creating a new slide." +msgstr "Длительность анимация по умолчанию при создании нового слайда." + +#: ../admin/views/templates/slider-main-options.php:1786 +msgid "Animation Duration" +msgstr "Длительность Анимации" + +#: ../admin/views/templates/slider-main-options.php:1795 +msgid "Default main image source size by creating a new slide." +msgstr "Размер основного изображения по умолчанию при создании нового слайда." + +#: ../admin/views/templates/slider-main-options.php:1795 +msgid "Image Source Size" +msgstr "Размер Изображения" + +#: ../admin/views/templates/slider-main-options.php:1811 +msgid "Default background size by creating a new slide." +msgstr "Значение параметра \"Размер Фона\" по умолчанию при создании нового слайда." + +#: ../admin/views/templates/slider-main-options.php:1811 .. +#: admin/views/templates/slider-main-options.php:2276 +msgid "Background Fit" +msgstr "Положения Фона В контейнере" + +#: ../admin/views/templates/slider-main-options.php:1833 +msgid "Default background position by creating a new slide." +msgstr "Значение параметра \"Позиция Фона\" по умолчанию при создании нового слайда." + +#: ../admin/views/templates/slider-main-options.php:1833 .. +#: admin/views/templates/slider-main-options.php:2293 +msgid "Background Position" +msgstr "Позиция Фона" + +#: ../admin/views/templates/slider-main-options.php:1859 +msgid "Default background repeat by creating a new slide." +msgstr "Значение параметра \"Повтор Фона\" по умолчанию при создании нового слайда." + +#: ../admin/views/templates/slider-main-options.php:1859 .. +#: admin/views/templates/slider-main-options.php:2284 +msgid "Background Repeat" +msgstr "Повтор Фона" + +#: ../admin/views/templates/slider-main-options.php:1870 +msgid "Default Ken/Burn setting by creating a new slide." +msgstr "Значение параметра \"Ken/Burn\" по умолчанию при создании нового слайда." + +#: ../admin/views/templates/slider-main-options.php:1881 +msgid "Start Fit: (in %):" +msgstr "Начальное положение ( в % ):" + +#: ../admin/views/templates/slider-main-options.php:1958 +msgid "End Fit: (in %):" +msgstr "Конечное положение ( в % ):" + +#: ../admin/views/templates/slider-main-options.php:1963 +msgid "Start Offset X:" +msgstr "Начальный сдвиг по Х:" + +#: ../admin/views/templates/slider-main-options.php:1968 +msgid "Start Offset Y:" +msgstr "Начальный сдвиг по Y:" + +#: ../admin/views/templates/slider-main-options.php:1973 .. +#: admin/views/templates/slider-main-options.php:1983 .. +#: admin/views/templates/slider-main-options.php:1988 +msgid "End Offset Y:" +msgstr "Конечный сдвиг по Y:" + +#: ../admin/views/templates/slider-main-options.php:1978 +msgid "End Offset X:" +msgstr "Конечный сдвиг по Х:" + +#: ../admin/views/templates/slider-main-options.php:1998 +msgid "Overwrite Selected Settings on all Slides" +msgstr "Перезаписать Выбранные настройки для всех Слайдов" + +#: ../admin/views/templates/slider-main-options.php:2007 +msgid "" +"Start from a different slide instead of the first slide. I.e. good for " +"preview / edit mode." +msgstr "" +"Начать с альтернативного слайда вместо первого слайда. Можно использовать " +"при предпросмотре или режиме редактирования." + +#: ../admin/views/templates/slider-main-options.php:2007 +msgid "Alternative 1st Slide" +msgstr "Альтернативный 1-й Слайд" + +#: ../admin/views/templates/slider-main-options.php:2011 +msgid "" +"If active, it will overwrite the first slide transition. Use it to get " +"special transition for the first slide." +msgstr "" +"Эта опция заменит анимацию первого слайда. Используйте ее для назначения " +"специальной анимации для первого слайда." + +#: ../admin/views/templates/slider-main-options.php:2011 +msgid "First Transition Active" +msgstr "Первая активная анимация" + +#: ../admin/views/templates/slider-main-options.php:2016 +msgid "First slide transition type" +msgstr "Тип анимации первого слайда" + +#: ../admin/views/templates/slider-main-options.php:2016 +msgid "Transition Type" +msgstr "Тип Анимации" + +#: ../admin/views/templates/slider-main-options.php:2030 +msgid "First slide transition duration." +msgstr "Длительность анимации первого слайда." + +#: ../admin/views/templates/slider-main-options.php:2030 +msgid "Transition Duration" +msgstr "Длительность Анимации" + +#: ../admin/views/templates/slider-main-options.php:2036 +msgid "The number of slots or boxes the slide is divided into." +msgstr "Кол-во слотов на которые делится слайд." + +#: ../admin/views/templates/slider-main-options.php:2036 +msgid "Transition Slot Amount" +msgstr "Кол-во слотов Анимации" + +#: ../admin/views/templates/slider-main-options.php:2047 +msgid "Stops the Timer when mouse is hovering the slider." +msgstr "Останавливает таймер при наведении мышки на слайдер." + +#: ../admin/views/templates/slider-main-options.php:2047 +msgid "Stop Slide On Hover" +msgstr "Останавливает слайд при наведении мышки" + +#: ../admin/views/templates/slider-main-options.php:2052 +msgid "Stops the slideshow after the predefined loop amount at the predefined slide." +msgstr "Остановить слайдшоу после определенного кол-ва циклов на определенном слайде" + +#: ../admin/views/templates/slider-main-options.php:2052 +msgid "Stop Slider After ..." +msgstr "Остановить слайдер после..." + +#: ../admin/views/templates/slider-main-options.php:2058 +msgid "Stops the slider after certain amount of loops. 0 related to the first loop." +msgstr "" +"Остановить слайдер после определенного кол-ва циклов. 0 относится к первому " +"циклу." + +#: ../admin/views/templates/slider-main-options.php:2058 +msgid "Amount of Loops" +msgstr "Кол-во циклов" + +#: ../admin/views/templates/slider-main-options.php:2063 +msgid "Stops the slider at the given slide" +msgstr "Останавливает слайдер на определенном слайде" + +#: ../admin/views/templates/slider-main-options.php:2063 +msgid "At Slide" +msgstr "Слайд" + +#: ../admin/views/templates/slider-main-options.php:2069 +msgid "Randomize the order of the slides at every Page reload." +msgstr "Случайный порядок слайдов при каждой загрузке страницы." + +#: ../admin/views/templates/slider-main-options.php:2069 +msgid "Shuffle / Random Mode" +msgstr "Режим Случайного порядка" + +#: ../admin/views/templates/slider-main-options.php:2074 +msgid "" +"If only one Slide is in the Slider, you can choose wether the Slide should " +"loop or if it should stop. If only one Slide exist, slide will be duplicated " +"!" +msgstr "" +"Если в Слайдере только один Слайд, вы можете выбрать будет ли Слайд зациклен " +"или он должен остановиться. \n" +"Если создан только один Слайд, он будет сдублирован !" + +#: ../admin/views/templates/slider-main-options.php:2074 +msgid "Loop Single Slide" +msgstr "Зациклить Единственный Слайд" + +#: ../admin/views/templates/slider-main-options.php:2080 +msgid "Allow to stop the Slider out of viewport." +msgstr "Позволяет остановить слайдер когда он находится за границами видимой области." + +#: ../admin/views/templates/slider-main-options.php:2080 +msgid "Stop Slider Out of ViewPort" +msgstr "Остановить слайдер за границами видимой области" + +#: ../admin/views/templates/slider-main-options.php:2085 +msgid "Out Of ViewPort:" +msgstr "За границами видимой области:" + +#: ../admin/views/templates/slider-main-options.php:2087 +msgid "Wait" +msgstr "Ожидание" + +#: ../admin/views/templates/slider-main-options.php:2088 +msgid "Pause" +msgstr "Пауза" + +#: ../admin/views/templates/slider-main-options.php:2092 +msgid "Min. Size of Slider must be in Viewport before slide starts again." +msgstr "" +"Мин. размер Слайдера в видимой области перед тем как слайдер начнет " +"воспроизведение." + +#: ../admin/views/templates/slider-main-options.php:2092 +msgid "Area out of ViewPort:" +msgstr "" +"Размер области \n" +"за границами видимой области" + +#: ../admin/views/templates/slider-main-options.php:2094 .. +#: admin/views/templates/slider-main-options.php:2122 .. +#: admin/views/templates/slider-main-options.php:3254 .. +#: admin/views/templates/slider-main-options.php:3338 +msgid "%" +msgstr "%" + +#: ../admin/views/templates/slider-main-options.php:2102 +msgid "Enable / disable progress var" +msgstr "Включить / Выключить индикатор прогресса" + +#: ../admin/views/templates/slider-main-options.php:2102 +msgid "Progress Bar Active" +msgstr "Индикатор прогресса включен" + +#: ../admin/views/templates/slider-main-options.php:2106 +msgid "Position of the progress bar." +msgstr "Позиция Индикатора прогресса." + +#: ../admin/views/templates/slider-main-options.php:2106 +msgid "Progress Bar Position" +msgstr "Позиция Индикатора прогресса" + +#: ../admin/views/templates/slider-main-options.php:2114 +msgid "The height of the progress bar" +msgstr "Высота Индикатора прогресса." + +#: ../admin/views/templates/slider-main-options.php:2114 +msgid "Progress Bar Heigth" +msgstr "Высота Индикатора прогресса" + +#: ../admin/views/templates/slider-main-options.php:2116 .. +#: admin/views/templates/slider-main-options.php:2217 .. +#: admin/views/templates/slider-main-options.php:2223 .. +#: admin/views/templates/slider-main-options.php:2228 .. +#: admin/views/templates/slider-main-options.php:2325 .. +#: admin/views/templates/slider-main-options.php:2331 .. +#: admin/views/templates/slider-main-options.php:2337 .. +#: admin/views/templates/slider-main-options.php:2342 .. +#: admin/views/templates/slider-main-options.php:2512 .. +#: admin/views/templates/slider-main-options.php:2523 .. +#: admin/views/templates/slider-main-options.php:2548 .. +#: admin/views/templates/slider-main-options.php:2554 .. +#: admin/views/templates/slider-main-options.php:2580 .. +#: admin/views/templates/slider-main-options.php:2586 .. +#: admin/views/templates/slider-main-options.php:2618 .. +#: admin/views/templates/slider-main-options.php:2657 .. +#: admin/views/templates/slider-main-options.php:2668 .. +#: admin/views/templates/slider-main-options.php:2691 .. +#: admin/views/templates/slider-main-options.php:2697 .. +#: admin/views/templates/slider-main-options.php:2757 .. +#: admin/views/templates/slider-main-options.php:2771 .. +#: admin/views/templates/slider-main-options.php:2776 .. +#: admin/views/templates/slider-main-options.php:2781 .. +#: admin/views/templates/slider-main-options.php:2814 .. +#: admin/views/templates/slider-main-options.php:2825 .. +#: admin/views/templates/slider-main-options.php:2861 .. +#: admin/views/templates/slider-main-options.php:2867 .. +#: admin/views/templates/slider-main-options.php:2928 .. +#: admin/views/templates/slider-main-options.php:2942 .. +#: admin/views/templates/slider-main-options.php:2947 .. +#: admin/views/templates/slider-main-options.php:2952 .. +#: admin/views/templates/slider-main-options.php:2982 .. +#: admin/views/templates/slider-main-options.php:2993 .. +#: admin/views/templates/slider-main-options.php:3029 .. +#: admin/views/templates/slider-main-options.php:3035 .. +#: admin/views/templates/slider-main-options.php:3244 .. +#: admin/views/templates/slider-main-options.php:3253 .. +#: admin/views/templates/slider-main-options.php:3260 .. +#: admin/views/templates/slider-main-options.php:3263 +msgid "px" +msgstr "px" + +#: ../admin/views/templates/slider-main-options.php:2120 +#, php-format +msgid "" +"The opacity of the progress bar
        (0 == Transparent, 100 = Solid color, 50 " +"= 50% opacity etc...)" +msgstr "" +"Прозрачность Индикатора прогресса
        (0 == прозрачная , 100 = непрозрачная, " +"50 = 50% прозрачности )\n" + +#: ../admin/views/templates/slider-main-options.php:2120 +msgid "Progress Bar Opacity" +msgstr "Прозрачность Индикатора прогресса" + +#: ../admin/views/templates/slider-main-options.php:2126 +msgid "Color of the progress bar." +msgstr "Цвет Индикатора прогресса." + +#: ../admin/views/templates/slider-main-options.php:2126 +msgid "Progress Bar Color" +msgstr "Цвет Индикатора прогресса" + +#: ../admin/views/templates/slider-main-options.php:2190 +msgid "Layout & Visual" +msgstr "Лейаут и Внешний Вид" + +#: ../admin/views/templates/slider-main-options.php:2195 +msgid "Appearance" +msgstr "Внешний вид" + +#: ../admin/views/templates/slider-main-options.php:2197 +msgid "Spinner" +msgstr "Загрузчик" + +#: ../admin/views/templates/slider-main-options.php:2199 .. +#: admin/views/templates/slider-main-options.php:2672 .. +#: admin/views/templates/slider-main-options.php:2829 .. +#: admin/views/templates/slider-main-options.php:2997 +msgid "Position" +msgstr "Позиция" + +#: ../admin/views/templates/slider-main-options.php:2204 +msgid "If this is enabled, the slider will not be loaded on mobile devices." +msgstr "Включить чтобы слайдер на загружался на мобильных устройствах." + +#: ../admin/views/templates/slider-main-options.php:2204 +msgid "Disable Slider on Mobile" +msgstr "Выключить слайдер на Телефоне" + +#: ../admin/views/templates/slider-main-options.php:2209 +msgid "This will disable KenBurns on mobile devices to save performance" +msgstr "Выключит KenBurn на телефонах для большей производительности" + +#: ../admin/views/templates/slider-main-options.php:2209 +msgid "Disable KenBurn On Mobile" +msgstr "Выключить KenBurn на Телефоне" + +#: ../admin/views/templates/slider-main-options.php:2213 +msgid "Hide Element Under Width:" +msgstr "Скрыть элемент при ширине меньше:" + +#: ../admin/views/templates/slider-main-options.php:2215 +msgid "" +"Hide the slider under the defined slider width. Value 0 will disable the " +"function." +msgstr "" +"Скрыть слайдер если ширина меньше чем указанная. Значение 0 отключит эту " +"функцию" + +#: ../admin/views/templates/slider-main-options.php:2215 .. +#: admin/views/templates/template-slider-selector.php:16 +msgid "Slider" +msgstr "Слайдер" + +#: ../admin/views/templates/slider-main-options.php:2221 +msgid "" +"Hide the selected layers (set layers hide under in slide editor) under the " +"defined slider width. Value 0 will disable the function." +msgstr "" +"Скрыть выбранные слои ( слои можно выбрать в редакторе слайдов ) если " +"ширина меньше чем указанная. Значение 0 отключит эту функцию" + +#: ../admin/views/templates/slider-main-options.php:2221 +msgid "Predefined Layers" +msgstr "Предопределенные Слои" + +#: ../admin/views/templates/slider-main-options.php:2226 +msgid "" +"Hide all layers under the defined slider width. Value 0 will disable the " +"function." +msgstr "" +"Скрыть все слои если ширина меньше чем указанная. Значение 0 отключит эту " +"функцию" + +#: ../admin/views/templates/slider-main-options.php:2226 +msgid "All Layers" +msgstr "Все слои" + +#: ../admin/views/templates/slider-main-options.php:2236 +msgid "The Shadow display underneath the banner." +msgstr "Тень под слайдером." + +#: ../admin/views/templates/slider-main-options.php:2236 +msgid "Shadow Type" +msgstr "Тип Тени" + +#: ../admin/views/templates/slider-main-options.php:2238 +msgid "No Shadow" +msgstr "Нет Тени" + +#: ../admin/views/templates/slider-main-options.php:2248 +msgid "Show a dotted overlay over the slides." +msgstr "Показывать точечный слой над слайдами." + +#: ../admin/views/templates/slider-main-options.php:2248 +msgid "Dotted Overlay Size" +msgstr "Размер Точечного Слоя" + +#: ../admin/views/templates/slider-main-options.php:2258 +msgid "Slider Background" +msgstr "Фон слайдера" + +#: ../admin/views/templates/slider-main-options.php:2259 +msgid "" +"General background color for slider. Clear value to get transparent slider " +"container." +msgstr "Цвет фона слайдер. Оставьте пустым для получения прозрачного фона." + +#: ../admin/views/templates/slider-main-options.php:2259 +msgid "Background color" +msgstr "Цвет Фона" + +#: ../admin/views/templates/slider-main-options.php:2263 +msgid "" +"Padding around the slider. Together with background color shows as slider " +"border." +msgstr "" +"Отступ вокруг слайдера. Если задать цвет фона, то будет выглядеть как " +"граница слайдера." + +#: ../admin/views/templates/slider-main-options.php:2263 +msgid "Padding as Border" +msgstr "Отступ как Граница" + +#: ../admin/views/templates/slider-main-options.php:2267 +msgid "Use a general background image instead of general background color." +msgstr "Использовать изображения общего фона вместо цвета фона." + +#: ../admin/views/templates/slider-main-options.php:2267 +msgid "Show Background Image" +msgstr "Показать фоновое изображение" + +#: ../admin/views/templates/slider-main-options.php:2272 +msgid "The source of the general background image." +msgstr "" +"Источник \n" +"изображения общего фона." + +#: ../admin/views/templates/slider-main-options.php:2272 +msgid "Background Image Url" +msgstr "Адрес фонового изображения" + +#: ../admin/views/templates/slider-main-options.php:2273 .. +#: admin/views/templates/slider-main-options.php:3640 +msgid "Set" +msgstr "Назначить" + +#: ../admin/views/templates/slider-main-options.php:2276 +msgid "" +"General background image size. Cover - always fill the container, cuts " +"overlays. Contain- always fits image into slider." +msgstr "" +"Размер изображения общего фона. Cover - полностью заполняет контейнер и " +"обрезает части которые не поместились. Contain - все изображение видно в " +"контейнере." + +#: ../admin/views/templates/slider-main-options.php:2278 +msgid "cover" +msgstr "cover" + +#: ../admin/views/templates/slider-main-options.php:2279 +msgid "contain" +msgstr "contain" + +#: ../admin/views/templates/slider-main-options.php:2280 +msgid "normal" +msgstr "normal" + +#: ../admin/views/templates/slider-main-options.php:2284 +msgid "General background image repeat attitude. Used for tiled images." +msgstr "Повтор изображения общего фона. Используется для изображений плиткой." + +#: ../admin/views/templates/slider-main-options.php:2286 +msgid "no-repeat" +msgstr "no-repeat" + +#: ../admin/views/templates/slider-main-options.php:2287 +msgid "repeat" +msgstr "repeat" + +#: ../admin/views/templates/slider-main-options.php:2288 +msgid "repeat-x" +msgstr "repeat-x" + +#: ../admin/views/templates/slider-main-options.php:2289 +msgid "repeat-y" +msgstr "repeat-y" + +#: ../admin/views/templates/slider-main-options.php:2293 +msgid "" +"General background image position. i.e. center center to always center " +"vertical and horizontal the image in the slider background." +msgstr "" +"Позиция изображения общего фона ( например \"центр центр\" чтобы " +"отцентрировать изображение фона по горизонтали и вертикали )" + +#: ../admin/views/templates/slider-main-options.php:2295 +msgid "center top" +msgstr "центр сверху" + +#: ../admin/views/templates/slider-main-options.php:2296 +msgid "center right" +msgstr "центр справа" + +#: ../admin/views/templates/slider-main-options.php:2297 +msgid "center bottom" +msgstr "центра снизу" + +#: ../admin/views/templates/slider-main-options.php:2298 +msgid "center center" +msgstr "центр центр" + +#: ../admin/views/templates/slider-main-options.php:2299 +msgid "left top" +msgstr "слева сверху" + +#: ../admin/views/templates/slider-main-options.php:2300 +msgid "left center" +msgstr "слева центр" + +#: ../admin/views/templates/slider-main-options.php:2301 +msgid "left bottom" +msgstr "слева снизу" + +#: ../admin/views/templates/slider-main-options.php:2302 +msgid "right top" +msgstr "справа сверху" + +#: ../admin/views/templates/slider-main-options.php:2303 +msgid "right center" +msgstr "справа центр" + +#: ../admin/views/templates/slider-main-options.php:2304 +msgid "right bottom" +msgstr "справа внизу" + +#: ../admin/views/templates/slider-main-options.php:2314 +msgid "" +"The position of the slider within the parrent container. (float:left or " +"float:right or with margin:0px auto;). We recomment do use always CENTER, " +"since the slider will auto fill and grow with the wrapping container. Set " +"any border,padding, floating etc. to the wrapping container where the slider " +"embeded instead of using left/right here !" +msgstr "" +"Позиция слайдера внутри родительского контейнера. \n" +"(float:left или float:right или с margin:0px auto;). Мы рекомендуем всегда " +"использовать ЦЕНТР, потому что слайдер самостоятельно займет все свободное " +"пространство \n" +"родительского контейнера. Используйте CSS для \n" +"родительского контейнера ( border, padding, float ... ) " + +#: ../admin/views/templates/slider-main-options.php:2314 +msgid "Position on the page" +msgstr "Позиция на странице" + +#: ../admin/views/templates/slider-main-options.php:2323 +msgid "The top margin of the slider wrapper div" +msgstr "Верхний край поля обертки слайдера div" + +#: ../admin/views/templates/slider-main-options.php:2323 +msgid "Margin Top" +msgstr "Верхний Край" + +#: ../admin/views/templates/slider-main-options.php:2329 +msgid "The bottom margin of the slider wrapper div" +msgstr "Нижний край поля обертки слайдера div" + +#: ../admin/views/templates/slider-main-options.php:2329 +msgid "Margin Bottom" +msgstr "Нижний Край" + +#: ../admin/views/templates/slider-main-options.php:2335 +msgid "The left margin of the slider wrapper div" +msgstr "Левый край поля обертки слайдера div" + +#: ../admin/views/templates/slider-main-options.php:2335 +msgid "Margin Left" +msgstr "Левый Край" + +#: ../admin/views/templates/slider-main-options.php:2340 +msgid "The right margin of the slider wrapper div" +msgstr "Правый край поля обертки слайдера div" + +#: ../admin/views/templates/slider-main-options.php:2340 +msgid "Margin Right" +msgstr "Правый Край" + +#: ../admin/views/templates/slider-main-options.php:2351 +msgid "Select a Spinner for your Slider" +msgstr "Выберите загрузчик для вашего Слайдера" + +#: ../admin/views/templates/slider-main-options.php:2351 +msgid "Choose Spinner" +msgstr "Выберите Загрузчик" + +#: ../admin/views/templates/slider-main-options.php:2357 .. +#: admin/views/templates/slider-main-options.php:3269 +msgid "3" +msgstr "3" + +#: ../admin/views/templates/slider-main-options.php:2358 +msgid "4" +msgstr "4" + +#: ../admin/views/templates/slider-main-options.php:2359 .. +#: admin/views/templates/slider-main-options.php:3270 +msgid "5" +msgstr "5" + +#: ../admin/views/templates/slider-main-options.php:2363 +msgid "The Color the Spinner will be shown in" +msgstr "Цвет Загрузчика" + +#: ../admin/views/templates/slider-main-options.php:2363 +msgid "Spinner Color" +msgstr "Цвет Загрузчика" + +#: ../admin/views/templates/slider-main-options.php:2448 +msgid "Navigation" +msgstr "Навигация" + +#: ../admin/views/templates/slider-main-options.php:2457 +msgid "Touch" +msgstr "Касание" + +#: ../admin/views/templates/slider-main-options.php:2463 +msgid "Enable / Disable Arrows" +msgstr "Включить / Выключить стрелочки" + +#: ../admin/views/templates/slider-main-options.php:2463 +msgid "Enable Arrows" +msgstr "Включить Стрелки" + +#: ../admin/views/templates/slider-main-options.php:2468 +msgid "Look of the navigation Arrows" +msgstr "Вид навигационных стрелок" + +#: ../admin/views/templates/slider-main-options.php:2468 +msgid "Arrows Style" +msgstr "Стиль Стрелок" + +#: ../admin/views/templates/slider-main-options.php:2470 .. +#: admin/views/templates/slider-main-options.php:2601 .. +#: admin/views/templates/slider-main-options.php:2735 .. +#: admin/views/templates/slider-main-options.php:2907 +msgid "No Style" +msgstr "Нет Стиля" + +#: ../admin/views/templates/slider-main-options.php:2486 +msgid "" +"Enable to make arrows always visible. Disable to hide arrows after the " +"defined time." +msgstr "" +"Включить чтобы сделать стрелки видимыми. Выключить чтобы скрыть стрелки " +"после определенного времени." + +#: ../admin/views/templates/slider-main-options.php:2486 .. +#: admin/views/templates/slider-main-options.php:2788 .. +#: admin/views/templates/slider-main-options.php:2957 +msgid "Always Show " +msgstr "Всегда Показывать" + +#: ../admin/views/templates/slider-main-options.php:2488 .. +#: admin/views/templates/slider-main-options.php:2634 .. +#: admin/views/templates/slider-main-options.php:2790 .. +#: admin/views/templates/slider-main-options.php:2959 +msgid "Yes" +msgstr "Да" + +#: ../admin/views/templates/slider-main-options.php:2489 .. +#: admin/views/templates/slider-main-options.php:2635 .. +#: admin/views/templates/slider-main-options.php:2791 .. +#: admin/views/templates/slider-main-options.php:2960 +msgid "No" +msgstr "Нет" + +#: ../admin/views/templates/slider-main-options.php:2494 +msgid "Time after the Arrows will be hidden(Default: 200 ms)" +msgstr "Время после которого стрелки будут скрыты. ( По умолчанию: 200 ms )" + +#: ../admin/views/templates/slider-main-options.php:2494 .. +#: admin/views/templates/slider-main-options.php:2639 .. +#: admin/views/templates/slider-main-options.php:2796 +msgid "Hide After" +msgstr "Скрыть при" + +#: ../admin/views/templates/slider-main-options.php:2499 +msgid "Time after the Arrows will be hidden on Mobile(Default: 1200 ms)" +msgstr "" +"Время после которого стрелки будут скрыты на Телефоне. ( По умолчанию: 1200 " +"ms )" + +#: ../admin/views/templates/slider-main-options.php:2499 .. +#: admin/views/templates/slider-main-options.php:2644 .. +#: admin/views/templates/slider-main-options.php:2801 +msgid "Hide After on Mobile" +msgstr "Скрыть на Телефоне при" + +#: ../admin/views/templates/slider-main-options.php:2505 +msgid "Force Hide Navigation Arrows under width" +msgstr "Принудительно скрывать стрелки при ширине меньше чем" + +#: ../admin/views/templates/slider-main-options.php:2505 +msgid "Hide Under" +msgstr "Скрыть после" + +#: ../admin/views/templates/slider-main-options.php:2510 +msgid "If browser size goes below this value, then Navigation Arrows are hidden." +msgstr "Если ширина браузера меньше заданной, стрелки будут скрыты" + +#: ../admin/views/templates/slider-main-options.php:2516 +msgid "Force Hide Navigation over width" +msgstr "Принудительно скрыть навигацию при ширине больше чем" + +#: ../admin/views/templates/slider-main-options.php:2516 +msgid "Hide Over" +msgstr "Скрыть при ширине больше" + +#: ../admin/views/templates/slider-main-options.php:2521 +msgid "If browser size goes over this value, then Navigation Arrows are hidden." +msgstr "Если ширина браузера больше заданной, стрелки будут скрыты" + +#: ../admin/views/templates/slider-main-options.php:2527 +msgid "Left Arrow Position" +msgstr "Позиция левой стрелки" + +#: ../admin/views/templates/slider-main-options.php:2529 +msgid "Horizontal position of the left arrow." +msgstr "Горизонтальная позиция левой стрелки" + +#: ../admin/views/templates/slider-main-options.php:2529 .. +#: admin/views/templates/slider-main-options.php:2558 .. +#: admin/views/templates/slider-main-options.php:2673 .. +#: admin/views/templates/slider-main-options.php:2843 .. +#: admin/views/templates/slider-main-options.php:3011 +msgid "Horizontal Align" +msgstr "Горизонтальное выравнивание" + +#: ../admin/views/templates/slider-main-options.php:2538 +msgid "Vertical position of the left arrow." +msgstr "Вертикальная позиция левой стрелки" + +#: ../admin/views/templates/slider-main-options.php:2538 .. +#: admin/views/templates/slider-main-options.php:2568 .. +#: admin/views/templates/slider-main-options.php:2681 .. +#: admin/views/templates/slider-main-options.php:2851 .. +#: admin/views/templates/slider-main-options.php:3019 +msgid "Vertical Align" +msgstr "Вертикальное выравнивание" + +#: ../admin/views/templates/slider-main-options.php:2546 +msgid "Offset from current horizontal position of of left arrow." +msgstr "Сдвиг от текущей горизонтальной позиции левой стрелки" + +#: ../admin/views/templates/slider-main-options.php:2546 .. +#: admin/views/templates/slider-main-options.php:2578 .. +#: admin/views/templates/slider-main-options.php:2689 .. +#: admin/views/templates/slider-main-options.php:2859 .. +#: admin/views/templates/slider-main-options.php:3027 +msgid "Horizontal Offset" +msgstr "Горизонтальный сдвиг" + +#: ../admin/views/templates/slider-main-options.php:2552 +msgid "Offset from current vertical position of of left arrow." +msgstr "Сдвиг от текущей вертикальной позиции левой стрелки" + +#: ../admin/views/templates/slider-main-options.php:2552 .. +#: admin/views/templates/slider-main-options.php:2584 .. +#: admin/views/templates/slider-main-options.php:2695 .. +#: admin/views/templates/slider-main-options.php:2865 .. +#: admin/views/templates/slider-main-options.php:3033 +msgid "Vertical Offset" +msgstr "Вертикальный сдвиг" + +#: ../admin/views/templates/slider-main-options.php:2557 +msgid "Right Arrow Position" +msgstr "Позиция правой стрелки" + +#: ../admin/views/templates/slider-main-options.php:2558 +msgid "Horizontal position of the right arrow." +msgstr "Горизонтальная позиция правой стрелки" + +#: ../admin/views/templates/slider-main-options.php:2568 +msgid "Vertical position of the right arrow." +msgstr "Вертикальная позиция правой стрелки" + +#: ../admin/views/templates/slider-main-options.php:2578 +msgid "Offset from current horizontal position of of right arrow." +msgstr "Сдвиг от текущей горизонтальной позиции правой стрелки" + +#: ../admin/views/templates/slider-main-options.php:2584 +msgid "Offset from current vertical position of of right arrow." +msgstr "Сдвиг от текущей вертикальной позиции правой стрелки" + +#: ../admin/views/templates/slider-main-options.php:2594 +msgid "Enable / Disable Bullets" +msgstr "Включить / Выключить маркеры" + +#: ../admin/views/templates/slider-main-options.php:2594 +msgid "Enable Bullets" +msgstr "Включить маркеры" + +#: ../admin/views/templates/slider-main-options.php:2599 +msgid "Look of the Bullets" +msgstr "Вид маркера" + +#: ../admin/views/templates/slider-main-options.php:2599 +msgid "Bullet Style" +msgstr "Стиль маркера" + +#: ../admin/views/templates/slider-main-options.php:2616 +msgid "Space between the bullets." +msgstr "Расстояние между маркерами" + +#: ../admin/views/templates/slider-main-options.php:2616 .. +#: admin/views/templates/slider-main-options.php:2755 .. +#: admin/views/templates/slider-main-options.php:2926 +msgid "Space" +msgstr "Расстояние" + +#: ../admin/views/templates/slider-main-options.php:2622 +msgid "Direction of the Bullets. Vertical or Horizontal." +msgstr "Направление маркеров. Вертикальное или горизонтальная" + +#: ../admin/views/templates/slider-main-options.php:2622 .. +#: admin/views/templates/slider-main-options.php:2760 .. +#: admin/views/templates/slider-main-options.php:2931 +msgid "Direction" +msgstr "Направление" + +#: ../admin/views/templates/slider-main-options.php:2624 .. +#: admin/views/templates/slider-main-options.php:2762 .. +#: admin/views/templates/slider-main-options.php:2933 .. +#: admin/views/templates/slider-main-options.php:3062 .. +#: admin/views/templates/slider-main-options.php:3077 +msgid "Horizontal" +msgstr "Горизонтальное" + +#: ../admin/views/templates/slider-main-options.php:2625 .. +#: admin/views/templates/slider-main-options.php:2763 .. +#: admin/views/templates/slider-main-options.php:2934 .. +#: admin/views/templates/slider-main-options.php:3063 .. +#: admin/views/templates/slider-main-options.php:3078 +msgid "Vertical" +msgstr "Вертикальное" + +#: ../admin/views/templates/slider-main-options.php:2632 +msgid "" +"Enable to make bullets always visible. Disable to hide bullets after the " +"defined time." +msgstr "" +"Включить чтобы сделать маркеры видимыми всегда. Выключить чтобы скрыть " +"маркеры после определенного времени" + +#: ../admin/views/templates/slider-main-options.php:2632 +msgid "Always Show" +msgstr "Всегда показывать" + +#: ../admin/views/templates/slider-main-options.php:2639 +msgid "Time after that the bullets will be hidden(Default: 200 ms)" +msgstr "Время после которого маркеры будут скрыты. ( По умолчанию: 200 ms )" + +#: ../admin/views/templates/slider-main-options.php:2644 +msgid "Time after the bullets will be hidden on Mobile (Default: 1200 ms)" +msgstr "" +"Время после которого маркеры будут скрыты на Телефоне. ( По умолчанию: 1200 " +"ms )" + +#: ../admin/views/templates/slider-main-options.php:2650 +msgid "Force Hide Navigation Bullets under width" +msgstr "Принудительно скрыть маркеры при ширине меньше чем" + +#: ../admin/views/templates/slider-main-options.php:2650 .. +#: admin/views/templates/slider-main-options.php:2807 .. +#: admin/views/templates/slider-main-options.php:2975 +msgid "Hide under Width" +msgstr "Скрыть при ширине меньше" + +#: ../admin/views/templates/slider-main-options.php:2655 .. +#: admin/views/templates/slider-main-options.php:2666 +msgid "If browser size goes below this value, then Navigation bullets are hidden." +msgstr "Если ширина браузера меньше заданной, маркеры будут скрыты" + +#: ../admin/views/templates/slider-main-options.php:2661 +msgid "Force Hide Navigation Bullets over width" +msgstr "Принудительно скрыть маркеры при ширине больше чем" + +#: ../admin/views/templates/slider-main-options.php:2661 .. +#: admin/views/templates/slider-main-options.php:2818 .. +#: admin/views/templates/slider-main-options.php:2986 +msgid "Hide over Width" +msgstr "Скрыть при ширине больше " + +#: ../admin/views/templates/slider-main-options.php:2673 +msgid "Horizontal position of bullets " +msgstr "Горизонтальная позиция маркеров" + +#: ../admin/views/templates/slider-main-options.php:2681 +msgid "Vertical positions of bullets " +msgstr "Вертикальная позиция маркеров" + +#: ../admin/views/templates/slider-main-options.php:2689 +msgid "Offset from current horizontal position." +msgstr "Сдвиг от текущей горизонтальной позиции" + +#: ../admin/views/templates/slider-main-options.php:2695 +msgid "Offset from current Vertical position." +msgstr "Сдвиг от текущей вертикальной позиции" + +#: ../admin/views/templates/slider-main-options.php:2705 +msgid "Enable / Disable Thumbnails" +msgstr "Включить / Выключить Миниатюры" + +#: ../admin/views/templates/slider-main-options.php:2705 +msgid "Enable Thumbnails" +msgstr "Включить Миниатюры" + +#: ../admin/views/templates/slider-main-options.php:2712 .. +#: admin/views/templates/slider-main-options.php:2885 +msgid "Wrapper Container" +msgstr "Контейнер" + +#: ../admin/views/templates/slider-main-options.php:2714 +msgid "The wrapper div padding of thumbnails" +msgstr "Padding контейнера миниатюр" + +#: ../admin/views/templates/slider-main-options.php:2714 .. +#: admin/views/templates/slider-main-options.php:2887 +msgid "Wrapper Padding" +msgstr "Отступ" + +#: ../admin/views/templates/slider-main-options.php:2718 +msgid "Span wrapper to full width or full height based on the direction selected" +msgstr "" +"Растянуть контейнер до полной ширины или полной высоты на основе выбранного " +"направления." + +#: ../admin/views/templates/slider-main-options.php:2718 .. +#: admin/views/templates/slider-main-options.php:2891 +msgid "Span Wrapper" +msgstr "Растянуть Контейнер" + +#: ../admin/views/templates/slider-main-options.php:2722 +msgid "Thumbnails wrapper background color. For transparent leave empty." +msgstr "Цвет фона миниатюр. Если не указан - прозрачный." + +#: ../admin/views/templates/slider-main-options.php:2722 +msgid "Wrapper color" +msgstr "Цвет контейнера" + +#: ../admin/views/templates/slider-main-options.php:2723 .. +#: admin/views/templates/slider-main-options.php:2895 .. +#: admin/views/templates/slider-main-options.php:2896 +msgid "Wrapper Color" +msgstr "Цвет контейнера" + +#: ../admin/views/templates/slider-main-options.php:2726 .. +#: admin/views/templates/slider-main-options.php:2899 +#, php-format +msgid "Opacity of the Wrapper container. 0 - transparent, 50 - 50% opacity..." +msgstr "Прозрачность контейнера. 0 - прозрачный, 50 - 50% прозрачности." + +#: ../admin/views/templates/slider-main-options.php:2726 .. +#: admin/views/templates/slider-main-options.php:2899 +msgid "Wrapper Opacity" +msgstr "Прозрачность контейнера" + +#: ../admin/views/templates/slider-main-options.php:2733 +msgid "Style of the thumbnails." +msgstr "Стиль миниатюр." + +#: ../admin/views/templates/slider-main-options.php:2733 +msgid "Thumbnails Style" +msgstr "Стиль Миниатюр" + +#: ../admin/views/templates/slider-main-options.php:2751 +msgid "The amount of max visible Thumbnails in the same time. " +msgstr "Максимальное кол-во одновременно видимых миниатюр." + +#: ../admin/views/templates/slider-main-options.php:2751 +msgid "Visible Thumbs Amount" +msgstr "Кол-во видимых Миниатюр" + +#: ../admin/views/templates/slider-main-options.php:2755 +msgid "Space between the thumbnails." +msgstr "Расстояние между миниатюрами." + +#: ../admin/views/templates/slider-main-options.php:2760 +msgid "Direction of the Thumbnails. Vertical or Horizontal." +msgstr "Направление миниатюр. Вертикальное или горизонтальное." + +#: ../admin/views/templates/slider-main-options.php:2767 +msgid "Thumbnail Size" +msgstr "Размер миниатюры\n" + +#: ../admin/views/templates/slider-main-options.php:2769 +msgid "The basic Width of one Thumbnail." +msgstr "Базовая ширина миниатюры" + +#: ../admin/views/templates/slider-main-options.php:2769 +msgid "Thumb Width" +msgstr "Ширина миниатюр" + +#: ../admin/views/templates/slider-main-options.php:2774 +msgid "The basic Height of one Thumbnail." +msgstr "Базовая высота миниатюры." + +#: ../admin/views/templates/slider-main-options.php:2774 +msgid "Thumb Height" +msgstr "Высота миниатюр" + +#: ../admin/views/templates/slider-main-options.php:2779 +msgid "" +"The minimum width of the auto resized thumbs. Between Max and Min width the " +"sizes are auto calculated)." +msgstr "" +"Минимальная ширина миниатюры. Значения между мин. и макс. шириной " +"рассчитываются автоматически." + +#: ../admin/views/templates/slider-main-options.php:2779 +msgid "Min Thumb Width" +msgstr "Минимальная ширина миниатюры" + +#: ../admin/views/templates/slider-main-options.php:2788 +msgid "" +"Enable to make thumbnails always visible. Disable to hide thumbnails after " +"the defined time." +msgstr "" +"Включить - миниатюры всегда видимы. Выключить - спрятать миниатюры после " +"определенного времени." + +#: ../admin/views/templates/slider-main-options.php:2796 +msgid "Time after that the thumbnails will be hidden(Default: 200 ms)" +msgstr "Время после которого миниатюры будут спрятаны ( по умолчанию: 200 ms )" + +#: ../admin/views/templates/slider-main-options.php:2801 +msgid "Time after that the thumbnails will be hidden on Mobile (Default: 1200 ms)" +msgstr "" +"Время после которого миниатюры будут спрятаны на Телефоне ( по умолчанию: " +"1200 ms)" + +#: ../admin/views/templates/slider-main-options.php:2807 .. +#: admin/views/templates/slider-main-options.php:2818 +msgid "Force Hide Navigation Thumbnails under width" +msgstr "Принудительно прятать миниатюры при ширине меньше чем" + +#: ../admin/views/templates/slider-main-options.php:2812 .. +#: admin/views/templates/slider-main-options.php:2823 +msgid "If browser size goes below this value, then Navigation thumbs are hidden." +msgstr "Если ширина браузера меньше этого значения, миниатюры будут скрыты." + +#: ../admin/views/templates/slider-main-options.php:2830 +msgid "" +"Put the thumbnails inside or outside of the slider container. Outside added " +"thumbnails will decrease the size of the slider." +msgstr "" +"Определить положение Миниатюр - внутри или снаружи контейнера слайда. " +"Миниатюры снаружи слайдера уменьшат размер слайдера." + +#: ../admin/views/templates/slider-main-options.php:2830 .. +#: admin/views/templates/slider-main-options.php:2999 +msgid "Inner / outer" +msgstr "Внешний / Внутренний" + +#: ../admin/views/templates/slider-main-options.php:2832 .. +#: admin/views/templates/slider-main-options.php:3001 +msgid "Inner Slider" +msgstr "Внутренний Слайдер" + +#: ../admin/views/templates/slider-main-options.php:2833 .. +#: admin/views/templates/slider-main-options.php:3002 +msgid "Outer Left" +msgstr "Outer Left" + +#: ../admin/views/templates/slider-main-options.php:2834 .. +#: admin/views/templates/slider-main-options.php:3003 +msgid "Outer Right" +msgstr "Outer Right" + +#: ../admin/views/templates/slider-main-options.php:2835 .. +#: admin/views/templates/slider-main-options.php:3004 +msgid "Outer Top" +msgstr "Outer Top" + +#: ../admin/views/templates/slider-main-options.php:2836 .. +#: admin/views/templates/slider-main-options.php:3005 +msgid "Outer Bottom" +msgstr "Outer Bottom" + +#: ../admin/views/templates/slider-main-options.php:2843 +msgid "Horizontal position of thumbnails" +msgstr "Горизонтальная позиция миниатюр" + +#: ../admin/views/templates/slider-main-options.php:2851 +msgid "Vertical position of thumbnails" +msgstr "Вертикальная позиция миниатюр" + +#: ../admin/views/templates/slider-main-options.php:2859 +msgid "Offset from current Horizontal position." +msgstr "Сдвиг от текущей горизонтальной позиции." + +#: ../admin/views/templates/slider-main-options.php:2865 +msgid "Offset from current Vertical position." +msgstr "Сдвиг от текущей вертикальной позиции." + +#: ../admin/views/templates/slider-main-options.php:2878 +msgid "Enable / Disable navigation tabs." +msgstr "Включить / Выключить табы" + +#: ../admin/views/templates/slider-main-options.php:2878 +msgid "Enable Tabs" +msgstr "Включить Табы" + +#: ../admin/views/templates/slider-main-options.php:2887 +msgid "The wrapper div padding of tabs." +msgstr "Отступы контейнера табов." + +#: ../admin/views/templates/slider-main-options.php:2891 +msgid "Span wrapper to full width or full height based on the direction selected." +msgstr "" +"Растянуть контейнер на полную ширину или высоту в зависимости от выбранного " +"направления." + +#: ../admin/views/templates/slider-main-options.php:2895 +msgid "Tabs wrapper background color. For transparent leave empty." +msgstr "Цвет фона табов. Если не указан - прозрачный." + +#: ../admin/views/templates/slider-main-options.php:2905 +msgid "Style of the tabs." +msgstr "Стиль табов." + +#: ../admin/views/templates/slider-main-options.php:2905 +msgid "Tabs Style" +msgstr "Стиль Табов" + +#: ../admin/views/templates/slider-main-options.php:2922 +msgid "The amount of max visible tabs in same time." +msgstr "Макс. кол-во одновременно видимых табов." + +#: ../admin/views/templates/slider-main-options.php:2922 +msgid "Visible Tabs Amount" +msgstr "Кол-во видимых табов" + +#: ../admin/views/templates/slider-main-options.php:2926 +msgid "Space between the tabs." +msgstr "Расстояние между табами." + +#: ../admin/views/templates/slider-main-options.php:2931 +msgid "Direction of the Tabs. Vertical or Horizontal." +msgstr "Направление Табов. Вертикальное или Горизонтальное." + +#: ../admin/views/templates/slider-main-options.php:2938 +msgid "Tab Sizes" +msgstr "Размеры Табов" + +#: ../admin/views/templates/slider-main-options.php:2940 +msgid "The basic width of one tab." +msgstr "Стандартная ширина одного таба." + +#: ../admin/views/templates/slider-main-options.php:2940 +msgid "Tabs Width" +msgstr "Ширина Табов" + +#: ../admin/views/templates/slider-main-options.php:2945 +msgid "the basic height of one tab." +msgstr "Стандартная длина одного таба." + +#: ../admin/views/templates/slider-main-options.php:2945 +msgid "Tabs Height" +msgstr "Высота Табов" + +#: ../admin/views/templates/slider-main-options.php:2950 +msgid "" +"The minimum width of the auto resized Tabs. Between Max and Min width the " +"sizes are auto calculated)." +msgstr "" +"Минимальная ширина табов. Размер между макс. и мин. шириной рассчитывается " +"автоматически." + +#: ../admin/views/templates/slider-main-options.php:2950 +msgid "Min. Tab Width" +msgstr "Минимальная ширина таба" + +#: ../admin/views/templates/slider-main-options.php:2957 +msgid "" +"Enable to make tabs always visible. Disable to hide tabs after the defined " +"time." +msgstr "" +"Включить чтобы табы были видны всегда. Выключить чтобы спрятать табы после " +"определенного времени." + +#: ../admin/views/templates/slider-main-options.php:2965 +msgid "Time after that the tabs will be hidden(Default: 200 ms)" +msgstr "Время после которого табы будут скрыты ( По умолчанию: 200 ms )" + +#: ../admin/views/templates/slider-main-options.php:2965 +msgid "Hide After" +msgstr "Скрыть Через" + +#: ../admin/views/templates/slider-main-options.php:2969 +msgid "Time after that the tabs will be hidden on Mobile (Default: 1200 ms)" +msgstr "Время после которого табы будут скрыты на Телефоне ( По умолчанию: 1200 ms )" + +#: ../admin/views/templates/slider-main-options.php:2969 +msgid "Hide After on Mobile" +msgstr "Скрыть Через ( на Телефоне )" + +#: ../admin/views/templates/slider-main-options.php:2975 .. +#: admin/views/templates/slider-main-options.php:2986 +msgid "Force Hide Navigation tabs under width" +msgstr "Скрыть табы принудительно при ширине меньше чем" + +#: ../admin/views/templates/slider-main-options.php:2980 .. +#: admin/views/templates/slider-main-options.php:2991 +msgid "If browser size goes below this value, then Navigation tabs are hidden." +msgstr "Если ширина браузера меньше этого значения, табы будут скрыты." + +#: ../admin/views/templates/slider-main-options.php:2999 +msgid "" +"Put the tabs inside or outside of the slider container. Outside added tabs " +"will decrease the size of the slider." +msgstr "" +"Определить положение Табов - внутри или снаружи контейнера слайда. \n" +"Табы \n" +"снаружи слайдера уменьшат размер слайдера." + +#: ../admin/views/templates/slider-main-options.php:3011 +msgid "Horizontal position of tabs." +msgstr "Горизонтальная позиция табов." + +#: ../admin/views/templates/slider-main-options.php:3019 +msgid "Vertical position of tabs." +msgstr "Вертикальная позиция табов." + +#: ../admin/views/templates/slider-main-options.php:3027 +msgid "Offset from current horizontal position of tabs." +msgstr "Сдвиг от текущей горизонтальной позиции табов." + +#: ../admin/views/templates/slider-main-options.php:3033 +msgid "Offset from current vertical position of tabs." +msgstr "" +"Сдвиг от текущей \n" +"вертикальной \n" +"позиции табов." + +#: ../admin/views/templates/slider-main-options.php:3044 +msgid "Enable Swipe Function on touch devices" +msgstr "Включить функцию Swipe на сенсорных устройствах" + +#: ../admin/views/templates/slider-main-options.php:3044 +msgid "Touch Enabled" +msgstr "Реагировать на нажатия пальца " + +#: ../admin/views/templates/slider-main-options.php:3048 +msgid "Scroll below slider on vertical swipe" +msgstr "Прокручивать окно под слайдер при вертикальном свайпе" + +#: ../admin/views/templates/slider-main-options.php:3048 +msgid "Drag Block Vertical" +msgstr "Тянуть блок Вертикально" + +#: ../admin/views/templates/slider-main-options.php:3052 +msgid "Defines the sensibility of gestures. Smaller values mean a higher sensibility" +msgstr "Чувствительность жестов. Чем меньше значение тем больше чувствительность" + +#: ../admin/views/templates/slider-main-options.php:3052 +msgid "Swipe Treshhold (0 - 200)" +msgstr "Порог Свайпа (0 - 200)" + +#: ../admin/views/templates/slider-main-options.php:3056 +msgid "Defines how many fingers are needed minimum for swiping" +msgstr "" +"Определяет сколько пальцев используется для свайпа. ( Не меньше чем текущее " +"значение )" + +#: ../admin/views/templates/slider-main-options.php:3056 +msgid "Swipe Min Finger" +msgstr "Мин. кол-во пальцев" + +#: ../admin/views/templates/slider-main-options.php:3060 +msgid "Swipe Direction to swap slides?" +msgstr "Направление свайпа для переключение слайдов" + +#: ../admin/views/templates/slider-main-options.php:3060 +msgid "Swipe Direction" +msgstr "Направление свайпа" + +#: ../admin/views/templates/slider-main-options.php:3071 +msgid "Allow/disallow to navigate the slider with keyboard." +msgstr "Включить / выключить навигацию на клавиатуре." + +#: ../admin/views/templates/slider-main-options.php:3071 +msgid "Keyboard Navigation" +msgstr "Навигацию на Клавиатуре" + +#: ../admin/views/templates/slider-main-options.php:3075 +msgid "" +"Keyboard Direction to swap slides (horizontal - left/right arrow, vertical - " +"up/down arrow)?" +msgstr "" +"Навигация на клавиатуре для переключения слайдов ( горизонтальное - левая / " +"правая стрелка, вертикальное - вверх / вниз стрелка ) " + +#: ../admin/views/templates/slider-main-options.php:3075 +msgid "Key Direction" +msgstr "Направление" + +#: ../admin/views/templates/slider-main-options.php:3082 +msgid "Allow/disallow to navigate the slider with Mouse Scroll." +msgstr "Включить / выключить навигацию с помощью скролла мышки." + +#: ../admin/views/templates/slider-main-options.php:3082 +msgid "Mouse Scroll Navigation" +msgstr "Навигацию Скроллом Мышки" + +#: ../admin/views/templates/slider-main-options.php:3225 +msgid "Carousel Settings" +msgstr "Настройки Карусели" + +#: ../admin/views/templates/slider-main-options.php:3231 +msgid "Basics" +msgstr "Основные" + +#: ../admin/views/templates/slider-main-options.php:3232 +msgid "Transformations" +msgstr "Трансформации" + +#: ../admin/views/templates/slider-main-options.php:3233 +msgid "Aligns" +msgstr "Выравнивание" + +#: ../admin/views/templates/slider-main-options.php:3237 +msgid "" +"Infinity Carousel Scroll. No Endpoints exists at first and last slide if " +"valuse is set to ON." +msgstr "Бесконечная карусель. После последнего слайда показывается первый слайд." + +#: ../admin/views/templates/slider-main-options.php:3237 +msgid "Infinity Scroll" +msgstr "Бесконечная Карусель" + +#: ../admin/views/templates/slider-main-options.php:3242 +msgid "The horizontal gap/space between the slides" +msgstr "Горизонтальное расстояние между слайдами" + +#: ../admin/views/templates/slider-main-options.php:3242 +msgid "Space between slides" +msgstr "Расстояние между слайдами" + +#: ../admin/views/templates/slider-main-options.php:3248 +msgid "The border radius of slides" +msgstr "Радиус границы слайдов" + +#: ../admin/views/templates/slider-main-options.php:3259 +msgid "The padding top of slides" +msgstr "Отступ сверху для слайдов" + +#: ../admin/views/templates/slider-main-options.php:3262 +msgid "The padding bottom of slides" +msgstr "Отступ снизу для слайдов" + +#: ../admin/views/templates/slider-main-options.php:3266 +msgid "The maximum visible items in same time." +msgstr "Макс. кол-во одновременно видимых элементов." + +#: ../admin/views/templates/slider-main-options.php:3266 +msgid "Max. Visible Items" +msgstr "Макс. кол-во Видимых Элементов." + +#: ../admin/views/templates/slider-main-options.php:3271 +msgid "7" +msgstr "7" + +#: ../admin/views/templates/slider-main-options.php:3272 +msgid "9" +msgstr "9" + +#: ../admin/views/templates/slider-main-options.php:3273 +msgid "11" +msgstr "11" + +#: ../admin/views/templates/slider-main-options.php:3274 +msgid "13" +msgstr "13" + +#: ../admin/views/templates/slider-main-options.php:3275 +msgid "15" +msgstr "15" + +#: ../admin/views/templates/slider-main-options.php:3276 +msgid "17" +msgstr "17" + +#: ../admin/views/templates/slider-main-options.php:3277 +msgid "19" +msgstr "19" + +#: ../admin/views/templates/slider-main-options.php:3281 +msgid "" +"Stretch carousel element width to the wrapping container width. Using this " +"you can see only 1 item in same time." +msgstr "" +"Растягивать ширину элементов карусели до размера родительского контейнера. " +"Используя этот параметр вы будете видеть только один элемент." + +#: ../admin/views/templates/slider-main-options.php:3281 +msgid "Stretch Element" +msgstr "Растягивать Элементы" + +#: ../admin/views/templates/slider-main-options.php:3291 +msgid "" +"All elements out of focus will get some Opacity value based on the Distance " +"to the current focused element, or only the coming/leaving elements." +msgstr "" +"Или все элементы не в фокусе станут в какой-то мере прозрачными в " +"зависимости от расстояния до фокусного элемента, или только появляющиеся / " +"исчезающие элементы." + +#: ../admin/views/templates/slider-main-options.php:3291 +msgid "Fade All Elements" +msgstr "Скрывать все Элементы" + +#: ../admin/views/templates/slider-main-options.php:3297 +msgid "Fade is varying based on the distance to the focused element." +msgstr "Скрытие варьируется от расстояния до фокусного элемента." + +#: ../admin/views/templates/slider-main-options.php:3297 +msgid "Varying Fade" +msgstr "Варьирование Скрытия" + +#: ../admin/views/templates/slider-main-options.php:3304 +msgid "Rotation enabled/disabled for not focused elements." +msgstr "Поворот включен / выключен для элементов не в фокусе." + +#: ../admin/views/templates/slider-main-options.php:3311 +msgid "Rotation is varying based on the distance to the focused element." +msgstr "Поворот варьируется от расстояния до фокусного элемента." + +#: ../admin/views/templates/slider-main-options.php:3311 +msgid "Varying Rotation" +msgstr "Варьирование Поворота" + +#: ../admin/views/templates/slider-main-options.php:3316 +msgid "" +"The maximum rotation of the Side elements. Rotation will depend on the " +"element distance to the current focused element. 0 will turn off the Rotation" +msgstr "" +"Макс. поворот боковых элементов. Поворот зависит от расстояния элемента до " +"текущего элемента. 0 - выключит поворот." + +#: ../admin/views/templates/slider-main-options.php:3316 +msgid "Max. Rotation" +msgstr "Макс. поворот" + +#: ../admin/views/templates/slider-main-options.php:3318 +msgid "deg" +msgstr "град." + +#: ../admin/views/templates/slider-main-options.php:3323 +msgid "Scale enabled/disabled for not focused elements." +msgstr "" +"Масштабирование включено / отключено для не\n" +"сфокусированных \n" +"элементов" + +#: ../admin/views/templates/slider-main-options.php:3331 +msgid "Scale is varying based on the distance to the focused element." +msgstr "" +"Масштаб определяется в зависимости от расстояния до сфокусированного " +"элемента." + +#: ../admin/views/templates/slider-main-options.php:3331 +msgid "Varying Scale" +msgstr "Варьируемое Масштабирование" + +#: ../admin/views/templates/slider-main-options.php:3336 +msgid "" +"The maximum scale down of the Side elements. Scale will depend on the " +"element distance to the current focused element. Min value is 0 and max " +"value is 100." +msgstr "" +"Макс. уменьшение боковых элементов. Масштабирование зависит от расстояния " +"между элементом и сфокусированным элементом. Мин. значение = 0, макс. " +"значение = 100." + +#: ../admin/views/templates/slider-main-options.php:3336 +msgid "Max. Scaledown" +msgstr "Макс. уменьшение" + +#: ../admin/views/templates/slider-main-options.php:3346 +msgid "Horizontal Align of the Carousel." +msgstr "Горизонтальное выравнивание карусели." + +#: ../admin/views/templates/slider-main-options.php:3346 +msgid "Horizontal Aligns" +msgstr "Горизонтальное выравнивание" + +#: ../admin/views/templates/slider-main-options.php:3354 +msgid "Vertical Align of the Carousel." +msgstr "Вертикальное выравнивание карусели" + +#: ../admin/views/templates/slider-main-options.php:3354 +msgid "Vertical Aligns" +msgstr "Вертикальное выравнивание" + +#: ../admin/views/templates/slider-main-options.php:3432 +msgid "" +"Enabling this, will give you new options in the slides to create a unique " +"parallax effect" +msgstr "Даст вам новые настройки в слайдах для создания уникального параллакс эффекта" + +#: ../admin/views/templates/slider-main-options.php:3432 +msgid "Enable Parallax" +msgstr "" +"Включить \n" +"Параллакс" + +#: ../admin/views/templates/slider-main-options.php:3437 +msgid "If set to on, parallax will be disabled on mobile devices to save performance" +msgstr "" +"Параллакс будет отключен на мобильных устройствах для большей " +"производительности" + +#: ../admin/views/templates/slider-main-options.php:3437 +msgid "Disable on Mobile" +msgstr "Выключить на Телефоне" + +#: ../admin/views/templates/slider-main-options.php:3442 +msgid "Mouse Sensibility" +msgstr "Чувствительность мышки" + +#: ../admin/views/templates/slider-main-options.php:3444 +msgid "Defines on what event type the parallax should react to" +msgstr "Определяет на какой тип события должен реагировать параллакс" + +#: ../admin/views/templates/slider-main-options.php:3444 +msgid "Event" +msgstr "Событие" + +#: ../admin/views/templates/slider-main-options.php:3446 +msgid "Mouse Move" +msgstr "Движение мышки" + +#: ../admin/views/templates/slider-main-options.php:3447 +msgid "Scroll Position" +msgstr "Позиция Прокрутки" + +#: ../admin/views/templates/slider-main-options.php:3448 +msgid "Move and Scroll" +msgstr "Движения и Скролл" + +#: ../admin/views/templates/slider-main-options.php:3452 +msgid "Mouse Based parallax calculation Origo" +msgstr "Параллакс Origo основанные на движении мышки" + +#: ../admin/views/templates/slider-main-options.php:3452 +msgid "Parallax Origo" +msgstr "Параллакс Origo" + +#: ../admin/views/templates/slider-main-options.php:3454 +msgid "Mouse Enter Point" +msgstr "Точка входа Мышки" + +#: ../admin/views/templates/slider-main-options.php:3455 +msgid "Slider Center" +msgstr "Центр Слайдера" + +#: ../admin/views/templates/slider-main-options.php:3459 +msgid "Parallax Speed for Mouse movents." +msgstr "Скорость Параллакса для движений мышки." + +#: ../admin/views/templates/slider-main-options.php:3459 +msgid "Animation Speed" +msgstr "Скорость Анимации" + +#: ../admin/views/templates/slider-main-options.php:3465 +msgid "Parallax Levels" +msgstr "Уровни Параллакса" + +#: ../admin/views/templates/slider-main-options.php:3467 .. +#: admin/views/templates/slider-main-options.php:3471 .. +#: admin/views/templates/slider-main-options.php:3475 .. +#: admin/views/templates/slider-main-options.php:3479 .. +#: admin/views/templates/slider-main-options.php:3483 .. +#: admin/views/templates/slider-main-options.php:3487 .. +#: admin/views/templates/slider-main-options.php:3491 .. +#: admin/views/templates/slider-main-options.php:3495 .. +#: admin/views/templates/slider-main-options.php:3499 .. +#: admin/views/templates/slider-main-options.php:3503 +msgid "" +"Defines a level that can be used in Slide Editor for this Slider. Smaller " +"value gives a smaller offset effect, higher value will increase the effect." +msgstr "" +"Определяет уровни которые могут быть использованы в Редакторе Слайдов для " +"этого Слайдера. Меньшее значение дает меньший эффект сдвига, большее " +"значение увеличивает эффект." + +#: ../admin/views/templates/slider-main-options.php:3467 +msgid "Level Depth 1" +msgstr "Уровень Глубины 1" + +#: ../admin/views/templates/slider-main-options.php:3471 +msgid "Level Depth 2" +msgstr "Уровень Глубины 2" + +#: ../admin/views/templates/slider-main-options.php:3475 +msgid "Level Depth 3" +msgstr "Уровень Глубины 3" + +#: ../admin/views/templates/slider-main-options.php:3479 +msgid "Level Depth 4" +msgstr "Уровень Глубины 4" + +#: ../admin/views/templates/slider-main-options.php:3483 +msgid "Level Depth 5" +msgstr "Уровень Глубины 5" + +#: ../admin/views/templates/slider-main-options.php:3487 +msgid "Level Depth 6" +msgstr "Уровень Глубины 6" + +#: ../admin/views/templates/slider-main-options.php:3491 +msgid "Level Depth 7" +msgstr "Уровень Глубины 7" + +#: ../admin/views/templates/slider-main-options.php:3495 +msgid "Level Depth 8" +msgstr "Уровень Глубины 8" + +#: ../admin/views/templates/slider-main-options.php:3499 +msgid "Level Depth 9" +msgstr "Уровень Глубины 9" + +#: ../admin/views/templates/slider-main-options.php:3503 +msgid "Level Depth 10" +msgstr "Уровень Глубины 10" + +#: ../admin/views/templates/slider-main-options.php:3535 +msgid "Performance and SEO Optimization" +msgstr "Производительность и SEO Оптимизация" + +#: ../admin/views/templates/slider-main-options.php:3549 +msgid "" +"How to load/preload the images.

        All - Load all " +"image element in a sequence at the initialisation. This will boost up the " +"loading of your page, and will preload all images to have a smooth and " +"breakless run already in the first loop.

        Smart - " +"It will load the page as quick as possible, and load only the current and " +"neighbour slide elements. If slide is called which not loaded yet, will be " +"loaded on demand with minimal delays.

        Single - It " +"will load only the the start slide. Any other slides will be loaded on " +"demand." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3549 +msgid "Lazy Load" +msgstr "Ленивая Загрузка" + +#: ../admin/views/templates/slider-main-options.php:3552 +msgid "Smart" +msgstr "Умный режим" + +#: ../admin/views/templates/slider-main-options.php:3553 +msgid "Single" +msgstr "Единичный режим" + +#: ../admin/views/templates/slider-main-options.php:3554 +msgid "No Lazy Loading" +msgstr "Выключить ленивую загрузку" + +#: ../admin/views/templates/slider-main-options.php:3561 +msgid "" +"Define SEO Optimization for the Images in the Slider, useful if Lazy Load is " +"on." +msgstr "" +"SEO Оптимизация для изображений в слайдере. Полезно при активной ленивой " +"загрузке" + +#: ../admin/views/templates/slider-main-options.php:3561 +msgid "SEO Optimization" +msgstr "SEO Оптимизация" + +#: ../admin/views/templates/slider-main-options.php:3564 +msgid "NoScript" +msgstr "NoScript" + +#: ../admin/views/templates/slider-main-options.php:3565 +msgid "NoFrame" +msgstr "NoFrame" + +#: ../admin/views/templates/slider-main-options.php:3615 +msgid "Problem Handlings" +msgstr "Решение Проблем" + +#: ../admin/views/templates/slider-main-options.php:3620 +msgid "Fallbacks" +msgstr "Откаты" + +#: ../admin/views/templates/slider-main-options.php:3621 +msgid "Troubleshooting" +msgstr "Устранение неисправностей" + +#: ../admin/views/templates/slider-main-options.php:3624 +msgid "Simplyfies the Slider on IOS4 and IE8" +msgstr "Упрощает слайдер на IOS4/IE8" + +#: ../admin/views/templates/slider-main-options.php:3624 +msgid "Simplify on IOS4/IE8" +msgstr "Упрощать на IOS4/IE8" + +#: ../admin/views/templates/slider-main-options.php:3628 +msgid "Disables the Slider and load an alternative image instead" +msgstr "Выключить слайдер и загрузить альтернативное изображение вместо слайдера" + +#: ../admin/views/templates/slider-main-options.php:3628 +msgid "Use Alternative Image" +msgstr "Использовать альтернативное изображение" + +#: ../admin/views/templates/slider-main-options.php:3631 +msgid "On Mobile" +msgstr "На Телефоне" + +#: ../admin/views/templates/slider-main-options.php:3632 +msgid "On IE8" +msgstr "На IE8" + +#: ../admin/views/templates/slider-main-options.php:3633 +msgid "On Mobile and IE8" +msgstr "На Телефоне и IE8" + +#: ../admin/views/templates/slider-main-options.php:3638 +msgid "The image that will be loaded instead of the slider." +msgstr "Изображение, которое будет загружено вместо слайдера." + +#: ../admin/views/templates/slider-main-options.php:3638 +msgid "Alternate Image" +msgstr "Альтернативное изображение" + +#: ../admin/views/templates/slider-main-options.php:3645 +msgid "" +"Turns on / off jquery noconflict mode. Try to enable this option if " +"javascript conflicts exist on the page." +msgstr "Включить / выключить режим jQuery noConflict" + +#: ../admin/views/templates/slider-main-options.php:3645 +msgid "JQuery No Conflict Mode" +msgstr "JQuery Не Conflict Mode" + +#: ../admin/views/templates/slider-main-options.php:3649 +msgid "" +"Try this to fix some javascript conflicts of type: TypeError: " +"tpj('#rev_slider_1_1').show().revolution is not a function" +msgstr "" +"Попробуйте этот метод для исправление конфликтов javascript типа: TypeError: " +"tpj('#rev_slider_1_1').show().revolution is not a function" + +#: ../admin/views/templates/slider-main-options.php:3649 +msgid "Put JS Includes To Body" +msgstr "Вставить JS Includes в Body" + +#: ../admin/views/templates/slider-main-options.php:3658 +msgid "" +"Activate a protection against wordpress output filters that adds html blocks " +"to the shortcode output like P and BR." +msgstr "" +"Активировать защиту от фильтра wordpress который добавляет html элементы " +"типа P, BR." + +#: ../admin/views/templates/slider-main-options.php:3658 +msgid "Output Filters Protection" +msgstr "" +"Защита от \n" +"фильтра wordpress" + +#: ../admin/views/templates/slider-main-options.php:3661 +msgid "By Compressing Output" +msgstr "Сжимать при выводе" + +#: ../admin/views/templates/slider-main-options.php:3662 +msgid "By Echo Output" +msgstr "Выводить похожие" + +#: ../admin/views/templates/slider-main-options.php:3666 +msgid "Turns on / off visible Debug Mode on Front End." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3666 +msgid "Debug Mode" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3695 +msgid "Import / Export / Replace" +msgstr "Импорт / Экспорт / Заменить" + +#: ../admin/views/templates/slider-main-options.php:3699 +msgid "Import" +msgstr "Импорт" + +#: ../admin/views/templates/slider-main-options.php:3700 .. +#: admin/views/templates/sliders-list.php:154 +msgid "Export" +msgstr "Экспорт" + +#: ../admin/views/templates/slider-main-options.php:3701 +msgid "Replace URL" +msgstr "Заменить URL" + +#: ../admin/views/templates/slider-main-options.php:3713 +msgid "Overwrite or append the custom animations due the new imported values ?" +msgstr "Перезаписать или добавить к пользовательским анимациям импортируемые?" + +#: ../admin/views/templates/slider-main-options.php:3713 +msgid "Custom Animations" +msgstr "Пользовательские Анимации" + +#: ../admin/views/templates/slider-main-options.php:3718 +msgid "Overwrite or append the static styles due the new imported values ?" +msgstr "Перезаписать или добавить к статическим стилям импортируемые?" + +#: ../admin/views/templates/slider-main-options.php:3718 ../includes/operations. +#: class.php:2313 +msgid "Static Styles" +msgstr "Статические Стили" + +#: ../admin/views/templates/slider-main-options.php:3728 +msgid "" +"Note! Style templates will be updated if they exist. Importing slider, will " +"delete all the current slider settings and slides and replacing it with the " +"imported content." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3734 +msgid "Export Slider" +msgstr "Экспорт слайдера" + +#: ../admin/views/templates/slider-main-options.php:3734 +msgid "Export with Dummy Images" +msgstr "Экспортировать с пустыми изображениями " + +#: ../admin/views/templates/slider-main-options.php:3740 +msgid "" +"Replace all layer and backgorund image url's. example - replace from: http:" +"//localhost" +msgstr "" +"Заменить URL всех слоев и фоновых изображений. Пример - заменить на: http:" +"//yoursite.com" + +#: ../admin/views/templates/slider-main-options.php:3740 +msgid "Replace From" +msgstr "Заменить С" + +#: ../admin/views/templates/slider-main-options.php:3744 +msgid "" +"Replace all layer and backgorund image url's. example - replace to: http:" +"//yoursite.com" +msgstr "" +"Заменить URL всех слоев и фоновых изображений. Пример - заменить на: http:" +"//yoursite.com" + +#: ../admin/views/templates/slider-main-options.php:3744 +msgid "Replace To" +msgstr "Заменить на" + +#: ../admin/views/templates/slider-main-options.php:3751 +msgid "Replace URL's" +msgstr "Заменить URL's" + +#: ../admin/views/templates/slider-main-options.php:3752 +msgid "Replacing..." +msgstr "Замена..." + +#: ../admin/views/templates/slider-main-options.php:3755 +msgid "Note! The replace process is not reversible !" +msgstr "Обратите внимание! Процесс замены необратим!" + +#: ../admin/views/templates/slider-main-options.php:3772 +msgid "API Functions" +msgstr "API Функции" + +#: ../admin/views/templates/slider-main-options.php:3776 +msgid "Methods" +msgstr "Методы" + +#: ../admin/views/templates/slider-main-options.php:3777 +msgid "Events" +msgstr "События" + +#: ../admin/views/templates/slider-main-options.php:3780 +msgid "Call this function to pause the slider." +msgstr "Используйте эту функцию для остановки слайдера." + +#: ../admin/views/templates/slider-main-options.php:3784 +msgid "Call this function to play the slider if it is paused." +msgstr "" +"Используйте эту функцию для воспроизведения слайдера если он \n" +"остановлен \n" +"." + +#: ../admin/views/templates/slider-main-options.php:3784 +msgid "Resume Slider" +msgstr "Продолжить слайдер" + +#: ../admin/views/templates/slider-main-options.php:3788 +msgid "Switch slider to previous slide." +msgstr "" +"Переключиться на \n" +"предыдущий слайд." + +#: ../admin/views/templates/slider-main-options.php:3792 +msgid "Switch slider to next slide." +msgstr "Переключиться на следующий слайд." + +#: ../admin/views/templates/slider-main-options.php:3796 .. +#: admin/views/templates/slider-main-options.php:3800 +msgid "Switch to the slide which is defined as parameter." +msgstr "Переключиться на слайд, указанный параметром." + +#: ../admin/views/templates/slider-main-options.php:3796 +msgid "Go To Slide" +msgstr "Перейти на слайд" + +#: ../admin/views/templates/slider-main-options.php:3800 +msgid "Go To Slide with ID" +msgstr "Перейти к слайду с ID" + +#: ../admin/views/templates/slider-main-options.php:3804 +msgid "Get the amount of existing slides in the slider." +msgstr "Получить количество слайдов в слайдере." + +#: ../admin/views/templates/slider-main-options.php:3804 +msgid "Max Slides" +msgstr "Макс. кол-во слайдов" + +#: ../admin/views/templates/slider-main-options.php:3808 +msgid "Get the current focused slide index." +msgstr "Получить индекс текущего слайда" + +#: ../admin/views/templates/slider-main-options.php:3808 +msgid "Current Slide" +msgstr "Текущий Слайд" + +#: ../admin/views/templates/slider-main-options.php:3812 +msgid "Get the previously played slide." +msgstr "Получить предыдущий слайд." + +#: ../admin/views/templates/slider-main-options.php:3816 +msgid "Scroll page under the slider." +msgstr "Прокрутить страницу под слайдер." + +#: ../admin/views/templates/slider-main-options.php:3816 +msgid "External Scroll" +msgstr "Внешняя прокрутка" + +#: ../admin/views/templates/slider-main-options.php:3820 +msgid "" +"Recalculate all positions, sizing etc in the slider. This should be called " +"i.e. if Slider was invisible and becomes visible without any window resize " +"event." +msgstr "" +"Пересчитывает все позиции, размеры и т.д. в слайдере. Используйте если к " +"примеру слайдер был невидим а потом стал видимым без события resize окна." + +#: ../admin/views/templates/slider-main-options.php:3820 +msgid "Redraw Slider" +msgstr "Перерисовать Слайдер" + +#: ../admin/views/templates/slider-main-options.php:3824 +msgid "" +"Unbind all listeners, remove current animations and delete containers. Ready " +"for Garbage collection." +msgstr "Убрать все события, анимации и удалить контейнеры. Готов для сборки мусора." + +#: ../admin/views/templates/slider-main-options.php:3824 +msgid "Kill Slider" +msgstr "Уничтожить Слайдер" + +#: ../admin/views/templates/slider-main-options.php:3829 +msgid "Slider Loaded" +msgstr "Слайдер загружен" + +#: ../admin/views/templates/slider-main-options.php:3834 +msgid "Slider swapped to an other slide" +msgstr "Слайдер переключился на другой слайд" + +#: ../admin/views/templates/slider-main-options.php:3838 +msgid "Current Slide as jQuery Object" +msgstr "Текущий слайд как объект jQuery" + +#: ../admin/views/templates/slider-main-options.php:3840 .. +#: admin/views/templates/slider-main-options.php:3891 +msgid "Previous Slide as jQuery Object" +msgstr "Предыдущий слайд как объект jQuery" + +#: ../admin/views/templates/slider-main-options.php:3842 +msgid "Slider paused" +msgstr "Слайдер остановлен" + +#: ../admin/views/templates/slider-main-options.php:3847 +msgid "Slider is Playing after pause" +msgstr "Слайдер воспроизводится после паузы" + +#: ../admin/views/templates/slider-main-options.php:3852 +msgid "Video is playing in slider" +msgstr "" +"Видео \n" +"в слайдере воспроизводится" + +#: ../admin/views/templates/slider-main-options.php:3856 .. +#: admin/views/templates/slider-main-options.php:3866 +msgid "The Video API to Manage Video functions" +msgstr "Видео API для контроля Видео функций" + +#: ../admin/views/templates/slider-main-options.php:3858 .. +#: admin/views/templates/slider-main-options.php:3868 +msgid "youtube, vimeo, html5" +msgstr "youtube, vimeo, html5" + +#: ../admin/views/templates/slider-main-options.php:3860 .. +#: admin/views/templates/slider-main-options.php:3870 +msgid "Video Settings" +msgstr "Параметры Видео" + +#: ../admin/views/templates/slider-main-options.php:3862 +msgid "Video stopped in slider" +msgstr "" +"Видео \n" +"в слайдере \n" +"остановлено " + +#: ../admin/views/templates/slider-main-options.php:3872 +msgid "Slider reached the 'stop at' slide" +msgstr "Слайдер достиг \"остановиться на\" слайда." + +#: ../admin/views/templates/slider-main-options.php:3877 +msgid "Prepared for slide change" +msgstr "Подготовлен для смены слайда" + +#: ../admin/views/templates/slider-main-options.php:3881 .. +#: admin/views/templates/slider-main-options.php:3889 +msgid "Current Slide as jQuery Object" +msgstr "Текущий слайд как объект jQuery" + +#: ../admin/views/templates/slider-main-options.php:3883 +msgid "Coming Slide as jQuery Object" +msgstr "Следующий слайд как объект jQuery" + +#: ../admin/views/templates/slider-main-options.php:3885 +msgid "Finnished with slide change" +msgstr "Завершена смена слайда" + +#: ../admin/views/templates/slider-main-options.php:3893 +msgid "Last slide starts" +msgstr "Последний слайд стартует" + +#: ../admin/views/templates/slider-main-options.php:3898 +msgid "Layer Events" +msgstr "События Слоя" + +#: ../admin/views/templates/slider-main-options.php:3901 +msgid "Layer Action (enterstage, enteredstage, leavestage,leftstage)" +msgstr "Действия слоя (enterstage, enteredstage, leavestage, leftstage)" + +#: ../admin/views/templates/slider-main-options.php:3903 +msgid "Layer Type (image,video,html)" +msgstr "Тип слоя (image,video,html)" + +#: ../admin/views/templates/slider-main-options.php:3905 +msgid "Default Settings for Layer" +msgstr "Стандартные настройки для Слоя" + +#: ../admin/views/templates/slider-main-options.php:3907 +msgid "Layer as jQuery Object" +msgstr "Слой как объект jQuery" + +#: ../admin/views/templates/slider-main-options.php:3920 +msgid "Google Fonts" +msgstr "Шрифты Google " + +#: ../admin/views/templates/slider-main-options.php:3926 +msgid "Add New Font" +msgstr "Добавить новый Шрифт" + +#: ../admin/views/templates/slider-main-options.php:3927 +msgid "" +"Copy the Google Font Family from http://www.google.com/fonts like: Open+Sans:400," +"700,600" +msgstr "" +"Скопировать Google Font Family с http://www.google.com/fonts например: Open+Sans:" +"400,700,600" + +#: ../admin/views/templates/slider-main-options.php:3982 +msgid "*Only Illustration, most changes are not visible." +msgstr "* Только для иллюстрации, большинство изменений невидимо." + +#: ../admin/views/templates/slider-main-options.php:4455 +msgid "Save Settings as Preset" +msgstr "Сохранить Настройки как Набор Настроек" + +#: ../admin/views/templates/slider-main-options.php:4457 +msgid "Preset Name" +msgstr "Имя Набора Настроек" + +#: ../admin/views/templates/slider-main-options.php:4458 +msgid "Select" +msgstr "Выбрать" + +#: ../admin/views/templates/slider-main-options.php:4509 +msgid "Google Font String" +msgstr "Шрифт Google" + +#: ../admin/views/templates/sliders-list.php:39 +msgid "Social" +msgstr "Социальный" + +#: ../admin/views/templates/sliders-list.php:150 +msgid "Order Posts" +msgstr "Порядок Записей" + +#: ../admin/views/templates/sliders-list.php:163 +msgid "Export to HTML" +msgstr "Экспорт в HTML" + +#: ../admin/views/templates/sliders-list.php:188 +msgid "Create New Slider" +msgstr "Создать новый слайдер" + +#: ../admin/views/templates/sliders-list.php:189 +msgid "Add Template Slider" +msgstr "Добавить Шаблон Слайдера" + +#: ../admin/views/templates/slides-list.php:92 +msgid "Unpublish Slide" +msgstr "Отменить публикацию слайдов" + +#: ../admin/views/templates/slides-list.php:96 +msgid "Publish Slide" +msgstr "Публикация слайда" + +#: ../admin/views/templates/slides-list.php:115 +msgid "Slide Image - Click to change" +msgstr "Изображение слоя - нажмите , чтобы изменить\n" + +#: ../admin/views/templates/slides-list.php:135 +msgid "Deleting Slide..." +msgstr "Удаление Слайда..." + +#: ../admin/views/templates/slides-list.php:139 +msgid "Open copy / move dialog" +msgstr "Открыть диалог копирования / перемещения" + +#: ../admin/views/templates/slides-list.php:147 +msgid "Working..." +msgstr "Работа ..." + +#: ../admin/views/templates/slides.php:16 ../admin/views/templates/slides.php:36 +msgid "New Slide" +msgstr "Новый Слайд" + +#: ../admin/views/templates/slides.php:18 ../admin/views/templates/slides.php:38 +msgid "New Transparent Slide" +msgstr "Новый Прозрачный Слайд" + +#: ../admin/views/templates/slides.php:19 ../admin/views/templates/slides.php:39 +msgid "Adding Slide..." +msgstr "Добавление Слайда..." + +#: ../admin/views/templates/slides.php:36 +msgid "Select image or multiple images to add slide or slides" +msgstr "" +"Выберите изображение или несколько изображений, чтобы добавить слайд или " +"слайды" + +#: ../admin/views/templates/slides.php:41 +msgid "Edit Static / Global Layers" +msgstr "Редактировать Статические / Глобальные Слои" + +#: ../admin/views/templates/slides.php:46 +msgid "To Slider Settings" +msgstr "Перейти к установкам слайдера" + +#: ../admin/views/templates/template-selector.php:17 +msgid "Slide" +msgstr "Слайд" + +#: ../admin/views/templates/template-selector.php:22 .. +#: admin/views/templates/template-slider-selector.php:21 +msgid "Revolution Base" +msgstr "База Revolution" + +#: ../admin/views/templates/template-selector.php:23 +msgid "All Slides" +msgstr "Все слайды" + +#: ../admin/views/templates/template-selector.php:24 +msgid "Templates" +msgstr "Шаблоны" + +#: ../admin/views/templates/template-selector.php:230 .. +#: admin/views/templates/template-selector.php:243 +msgid "Import Template Slide" +msgstr "Импортировать Шаблон Слайда" + +#: ../admin/views/templates/template-selector.php:240 .. +#: admin/views/templates/template-slider-selector.php:225 +msgid "" +"Please select the corresponding zip file from the download packages import " +"folder called" +msgstr "" +"Пожалуйста выберите соответствующий архив ( zip file ) из директории для " +"загруженных пакетов называемый" + +#: ../admin/views/templates/template-selector.php:245 .. +#: admin/views/templates/template-slider-selector.php:230 +msgid "Note: style templates will be updated if they exist!" +msgstr "" + +#: ../admin/views/templates/template-slider-selector.php:218 .. +#: admin/views/templates/template-slider-selector.php:228 +msgid "Import Template Slider" +msgstr "Импортировать Шаблон Слайдера" + +#: ../admin/views/templates/wpml-selector.php:11 +msgid "Preview Slide" +msgstr "Простмотреть слайд" + +#: ../admin/views/templates/wpml-selector.php:41 +msgid "Choose slide language" +msgstr "Выбрать язык слайда" + +#: ../includes/extension.class.php:56 +msgid "Slider Revolution" +msgstr "Slider Revolution" + +#: ../includes/extension.class.php:112 +msgid "Choose Revolution Slider" +msgstr "" +"Выбрать \n" +"Revolution Slider" + +#: ../includes/extension.class.php:116 +msgid "--- Choose Slider ---" +msgstr "--- Выбрать Слайдер ---" + +#: ../includes/external-sources.class.php:383 +msgid "Can't get the bearer token, check your credentials" +msgstr "Не удается получить токен, проверьте свои учетные данные" + +#: ../includes/external-sources.class.php:438 +msgid "Bearer Token is good, check your query" +msgstr "Токен правильный, проверьте ваш запрос" + +#: ../includes/navigation.class.php:155 +msgid "Invalid ID" +msgstr "Неверный ID" + +#: ../includes/navigation.class.php:159 +msgid "Navigation could not be deleted" +msgstr "Навигация не может быть удалена" + +#: ../includes/operations.class.php:262 ../includes/operations.class.php:332 +msgid "## Custom Animation ##" +msgstr "## Пользовательские Анимации ##" + +#: ../includes/operations.class.php:264 ../includes/operations.class.php:335 +msgid "- VERSION 5.0 ANIMATIONS -" +msgstr "" +"- VERSION 5.0 \n" +"Анимации \n" +"-" + +#: ../includes/operations.class.php:286 ../includes/operations.class.php:348 +msgid "- VERSION 4.0 ANIMATIONS -" +msgstr "" +"- VERSION 4.0 \n" +"Анимации \n" +"-" + +#: ../includes/operations.class.php:307 ../includes/operations.class.php:368 +msgid "- SAVED CUSTOM ANIMATIONS -" +msgstr "" +"- Сохраненные Пользовательские \n" +"Анимации \n" +"-" + +#: ../includes/operations.class.php:333 +msgid "Automatic Reverse" +msgstr "Автоматический Реверс" + +#: ../includes/operations.class.php:1239 ../includes/operations.class.php:1331 +msgid "Choose language" +msgstr "Выберите язык" + +#: ../includes/operations.class.php:1372 +msgid "CAPTIONS CSS" +msgstr "CSS Заголовков" + +#: ../includes/operations.class.php:1404 +msgid "Replace image path:" +msgstr "Заменить путь к изображениям:" + +#: ../includes/operations.class.php:1404 +msgid "From:" +msgstr "С:" + +#: ../includes/operations.class.php:1404 +msgid "To:" +msgstr "На:" + +#: ../includes/operations.class.php:1404 +msgid "Replace" +msgstr "Заменить" + +#: ../includes/operations.class.php:1407 +msgid "Header" +msgstr "Шапка" + +#: ../includes/operations.class.php:1407 ../includes/operations.class.php:1409 .. +#: includes/operations.class.php:1411 ../includes/operations.class.php:1413 +msgid "Mark to Copy" +msgstr "Отметить для Копирования" + +#: ../includes/operations.class.php:1411 +msgid "Body" +msgstr "Контентная часть" + +#: ../includes/operations.class.php:1413 +msgid "Script" +msgstr "Скрипт" + +#: ../includes/operations.class.php:1433 +msgid "Loading Preview..." +msgstr "Загрузка предпросмотра..." + +#: ../includes/operations.class.php:1592 +msgid "Purchase Code already registered!" +msgstr "" +"Код покупки уже\n" +" зарегистрирован!" + +#: ../includes/operations.class.php:1994 +msgid "Overall Slider Performance" +msgstr "Общая Производительность Слайдера" + +#: ../includes/operations.class.php:1997 ../includes/operations.class.php:2087 .. +#: includes/operations.class.php:2174 ../includes/operations.class.php:2251 .. +#: includes/operations.class.php:2377 ../includes/operations.class.php:2458 +msgid "Slow" +msgstr "Медленно" + +#: ../includes/operations.class.php:1998 ../includes/operations.class.php:2088 .. +#: includes/operations.class.php:2175 ../includes/operations.class.php:2252 .. +#: includes/operations.class.php:2378 ../includes/operations.class.php:2459 +msgid "Ok" +msgstr "Ок" + +#: ../includes/operations.class.php:1999 ../includes/operations.class.php:2089 .. +#: includes/operations.class.php:2176 ../includes/operations.class.php:2253 .. +#: includes/operations.class.php:2379 ../includes/operations.class.php:2460 +msgid "Fast" +msgstr "Быстро" + +#: ../includes/operations.class.php:2005 ../includes/operations.class.php:2020 .. +#: includes/operations.class.php:2035 +msgid "Load Speed UMTS:" +msgstr "" +"Скорость загрузки \n" +"UMTS:" + +#: ../includes/operations.class.php:2009 ../includes/operations.class.php:2024 .. +#: includes/operations.class.php:2039 +msgid "Load Speed DSL:" +msgstr "" +"Скорость загрузки \n" +"DSL:" + +#: ../includes/operations.class.php:2013 ../includes/operations.class.php:2028 .. +#: includes/operations.class.php:2043 +msgid "Load Speed T1:" +msgstr "" +"Скорость загрузки \n" +"T1:" + +#: ../includes/operations.class.php:2050 +msgid "Total Slider Size:" +msgstr "Общий Размер Слайдера:" + +#: ../includes/operations.class.php:2055 +msgid "Preloaded Slides Size:" +msgstr "Размер предзагруженных слайдов" + +#: ../includes/operations.class.php:2067 +msgid "Need Some Attention" +msgstr "Требует Внимания" + +#: ../includes/operations.class.php:2084 +msgid "Image Performance" +msgstr "Производительность Изображений" + +#: ../includes/operations.class.php:2096 +msgid "Images Loaded:" +msgstr "Загруженные изображения:" + +#: ../includes/operations.class.php:2101 ../includes/operations.class.php:2193 .. +#: includes/operations.class.php:2264 ../includes/operations.class.php:2390 .. +#: includes/operations.class.php:2471 +msgid "Hide Details" +msgstr "Спрятать Детали" + +#: ../includes/operations.class.php:2101 ../includes/operations.class.php:2101 .. +#: includes/operations.class.php:2193 ../includes/operations.class.php:2193 .. +#: includes/operations.class.php:2264 ../includes/operations.class.php:2264 .. +#: includes/operations.class.php:2390 ../includes/operations.class.php:2390 .. +#: includes/operations.class.php:2471 ../includes/operations.class.php:2471 +msgid "Show Details" +msgstr "Показать Детали" + +#: ../includes/operations.class.php:2128 ../includes/operations.class.php:2211 +msgid "extern" +msgstr "extern" + +#: ../includes/operations.class.php:2130 ../includes/operations.class.php:2213 +msgid "missing" +msgstr "отсутствует" + +#: ../includes/operations.class.php:2171 +msgid "Video Performance" +msgstr "Производительность Видео" + +#: ../includes/operations.class.php:2183 +msgid "Videos Loaded (max):" +msgstr "Загруженные видео ( макс ):" + +#: ../includes/operations.class.php:2189 +msgid "Unknown" +msgstr "Неизвестно" + +#: ../includes/operations.class.php:2248 +msgid "CSS Performance" +msgstr "Производительность CSS" + +#: ../includes/operations.class.php:2260 +msgid "CSS Loaded:" +msgstr "Загруженный CSS:" + +#: ../includes/operations.class.php:2285 +msgid "css/settings.css" +msgstr "css/settings.css" + +#: ../includes/operations.class.php:2349 +msgid "Dynamic Styles" +msgstr "Динамические стили" + +#: ../includes/operations.class.php:2374 +msgid "jQuery Performance" +msgstr "Производительность jQuery" + +#: ../includes/operations.class.php:2386 +msgid "jQuery Loaded:" +msgstr "jQuery загружено:" + +#: ../includes/operations.class.php:2455 +msgid "Google Fonts Performance" +msgstr "Производительность Google Fonts" + +#: ../includes/operations.class.php:2467 +msgid "Fonts Loaded:" +msgstr "Загруженные шрифты:" + +#: ../includes/output.class.php:312 +msgid "" +"No slides found, please add at least one Slide Template to the choosen " +"language." +msgstr "" + +#: ../includes/output.class.php:314 +msgid "No slides found, please add some slides" +msgstr "Слайды не найдены, пожалуйста добавьте слайды" + +#: ../includes/output.class.php:3612 +msgid "Revolution Slider Error" +msgstr "Revolution Slider Ошибка" + +#: ../includes/slide.class.php:205 +msgid "Source must be from Stream" +msgstr "Источник должен быть из Потока" + +#: ../includes/slider.class.php:893 +msgid "No file sent." +msgstr "" + +#: ../includes/slider.class.php:896 +msgid "Exceeded filesize limit." +msgstr "" + +#: ../includes/slider.class.php:927 +msgid "Please select the correct zip file" +msgstr "Пожалуйста выберите корректный zip файл" + +#: ../includes/slider.class.php:944 +msgid "Please select the correct zip file, checksum failed!" +msgstr "Пожалуйста выберите корректный zip файл, ошибка проверки контрольной суммы " + +#: ../includes/slider.class.php:1020 +msgid "animations imported!" +msgstr "анимации импортировались!" + +#: ../includes/slider.class.php:1022 +msgid "" +"no custom animations found, if slider uses custom animations, the provided " +"export may be broken..." +msgstr "" +"пользовательская анимация не найденна, если слайдер использовал " +"пользовательские анимации, при экспорте могли быть нарушенны..." + +#: ../includes/slider.class.php:1082 +msgid "dynamic styles imported!" +msgstr "динамические стили импортированны!" + +#: ../includes/slider.class.php:1084 +msgid "" +"no dynamic styles found, if slider uses dynamic styles, the provided export " +"may be broken..." +msgstr "" +"не найдены динамические стили, если слайдер использовал динамические стили, " +"при экспорте могли быть нарушены..." + +#: ../includes/slider.class.php:1372 ../includes/slider.class.php:1405 .. +#: includes/framework/base.class.php:487 +msgid " not found!
        " +msgstr "" +"не найдено!\n" +"
        " + +#: ../includes/slider.class.php:1556 +msgid "could not find correct Slide to copy, please try again." +msgstr "невозможно найти корректный слайд для копирования, попробуйте еще раз." + +#: ../includes/slider.class.php:1714 ../includes/slider.class.php:1723 +msgid "Slide could not be duplicated" +msgstr "Слайд не может быть сдублирован" + +#: ../includes/slider.class.php:1731 +msgid "Slide could not be copied" +msgstr "Слайд не может быть скопирован" + +#: ../includes/slider.class.php:2039 +msgid "Failed to load Stream" +msgstr "Ошибка загрузки Потока" + +#: ../includes/widget.class.php:15 +msgid "Displays a revolution slider on the page" +msgstr "Показывать Revolution Slider на странице" + +#: ../includes/widget.class.php:16 +msgid "Revolution Slider" +msgstr "Revolution Slider" + +#: ../includes/widget.class.php:30 +msgid "No sliders found, Please create a slider" +msgstr "Слайдеров не найдено, пожалуйста создайте слайдер" + +#: ../includes/widget.class.php:69 +msgid "Home Page Only" +msgstr "Только на Главной" + +#: ../includes/widget.class.php:72 +msgid "Pages: (example: 2,10)" +msgstr "Страниц: (пример: 2,10)" + +#: ../includes/framework/base-admin.class.php:265 +msgid "Wrong Request" +msgstr "Неверный Запрос" + +#: ../includes/framework/base.class.php:219 +msgid "Original" +msgstr "Оригинал" + +#: ../includes/framework/base.class.php:220 ../includes/framework/base.class.php: +#: 267 ../includes/framework/base.class.php:282 +msgid "Large" +msgstr "Большой" + +#: ../includes/framework/base.class.php:221 +msgid "Large Square" +msgstr "Большой Квадратный" + +#: ../includes/framework/base.class.php:222 ../includes/framework/base.class.php: +#: 257 ../includes/framework/base.class.php:266 ../includes/framework/base.class. +#: php:281 +msgid "Medium" +msgstr "Средний" + +#: ../includes/framework/base.class.php:223 +msgid "Medium 800" +msgstr "Средний 800" + +#: ../includes/framework/base.class.php:224 +msgid "Medium 640" +msgstr "Средний 640" + +#: ../includes/framework/base.class.php:225 ../includes/framework/base.class.php: +#: 265 +msgid "Small" +msgstr "Маленький" + +#: ../includes/framework/base.class.php:226 +msgid "Small 320" +msgstr "Маленький 320" + +#: ../includes/framework/base.class.php:227 ../includes/framework/base.class.php: +#: 234 ../includes/framework/base.class.php:280 +msgid "Thumbnail" +msgstr "Миниатюра" + +#: ../includes/framework/base.class.php:228 +msgid "Square" +msgstr "Квадратный" + +#: ../includes/framework/base.class.php:233 ../includes/framework/base.class.php: +#: 240 +msgid "Standard Resolution" +msgstr "Стандартное разрешение" + +#: ../includes/framework/base.class.php:235 +msgid "Low Resolution" +msgstr "Низкое разрешение" + +#: ../includes/framework/base.class.php:245 +msgid "Size 0" +msgstr "Размер 0" + +#: ../includes/framework/base.class.php:246 +msgid "Size 1" +msgstr "Размер 1" + +#: ../includes/framework/base.class.php:247 +msgid "Size 2" +msgstr "Размер 2" + +#: ../includes/framework/base.class.php:248 +msgid "Size 3" +msgstr "Размер 3" + +#: ../includes/framework/base.class.php:249 +msgid "Size 4" +msgstr "Размер 4" + +#: ../includes/framework/base.class.php:250 +msgid "Size 5" +msgstr "Размер 5" + +#: ../includes/framework/base.class.php:251 +msgid "Size 6" +msgstr "Размер 6" + +#: ../includes/framework/base.class.php:256 +msgid "Default" +msgstr "По умолчанию" + +#: ../includes/framework/base.class.php:258 +msgid "High" +msgstr "Высокий" + +#: ../includes/framework/base.class.php:259 +msgid "Standard" +msgstr "Стандартный" + +#: ../includes/framework/base.class.php:260 +msgid "Max. Res." +msgstr "Макс. Разрешение" + +#: ../includes/framework/base.class.php:279 +msgid "Original Size" +msgstr "Оригинальный Размер" + +#: ../includes/framework/em-integration.class.php:32 +msgid "All Events" +msgstr "Все События " + +#: ../includes/framework/em-integration.class.php:33 +msgid "Today" +msgstr "Сегодня" + +#: ../includes/framework/em-integration.class.php:34 +msgid "Tomorrow" +msgstr "Завтра" + +#: ../includes/framework/em-integration.class.php:35 +msgid "Future" +msgstr "Будущий" + +#: ../includes/framework/em-integration.class.php:36 +msgid "Past" +msgstr "Прошедший" + +#: ../includes/framework/em-integration.class.php:37 +msgid "This Month" +msgstr "Текущий месяц" + +#: ../includes/framework/em-integration.class.php:38 +msgid "Next Month" +msgstr "Следующий месяц" + +#: ../includes/framework/em-integration.class.php:168 +msgid "Event Start Date" +msgstr "Дата начала события" + +#: ../includes/framework/em-integration.class.php:169 +msgid "Event End Date" +msgstr "Дата окончания события" + +#: ../includes/framework/functions-wordpress.class.php:887 +#, php-format +msgid "View all posts in %s" +msgstr "Просмотр всех публикаций в %s" + +#: ../includes/framework/wpml.class.php:46 ../includes/framework/wpml.class.php:162 +msgid "All Languages" +msgstr "Все Языки" diff --git a/plugins/revslider/languages/revslider-zh_CN.mo b/plugins/revslider/languages/revslider-zh_CN.mo new file mode 100644 index 0000000..e6a67d3 Binary files /dev/null and b/plugins/revslider/languages/revslider-zh_CN.mo differ diff --git a/plugins/revslider/languages/revslider-zh_CN.po b/plugins/revslider/languages/revslider-zh_CN.po new file mode 100644 index 0000000..5d994ae --- /dev/null +++ b/plugins/revslider/languages/revslider-zh_CN.po @@ -0,0 +1,7334 @@ +msgid "" +msgstr "" +"Project-Id-Version: Revolution Slider\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: Mon Jul 13 2015 10:02:33 GMT+0200 (CEST)\n" +"PO-Revision-Date: Tue Jul 14 2015 08:40:14 GMT+0200 (CEST)\n" +"Last-Translator: admin \n" +"Language-Team: \n" +"Language: Chinese (China)\n" +"Plural-Forms: nplurals=1; plural=0\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Generator: Loco - https://localise.biz/\n" +"X-Poedit-Language: \n" +"X-Poedit-Country: \n" +"X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;" +"__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;" +"_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;" +"esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;" +"esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n" +"X-Poedit-Basepath: \n" +"X-Poedit-Bookmarks: \n" +"X-Poedit-SearchPath-0: .\n" +"X-Textdomain-Support: yes\n" +"X-Loco-Target-Locale: zh_CN" + +#: ../revslider.php:170 +msgid "Include RevSlider libraries globally (all pages/posts)" +msgstr "" + +#: ../revslider.php:171 +msgid "Pages to include RevSlider libraries" +msgstr "" + +#: ../revslider.php:172 +msgid "" +"If you want to use the PHP function \"putRevSlider\" in your code please make " +"sure to check \" " +msgstr "" + +#: ../revslider.php:172 +msgid "" +" \" in the backend's \"General Settings\" (top right panel).

        Or add " +"the current page to the \"" +msgstr "" + +#: ../revslider.php:172 +msgid "\" option box." +msgstr "" + +#: ../revslider.php:212 +msgid "Revolution Slider Error:" +msgstr "" + +#: ../admin/revslider-admin.class.php:62 ../admin/views/navigation-editor.php:28 +msgid "Navigation Editor" +msgstr "" + +#: ../admin/revslider-admin.class.php:188 +msgid "-- wrong alias -- " +msgstr "" + +#: ../admin/revslider-admin.class.php:189 +msgid "Navigation Bullets and Arrows are now set to none." +msgstr "" + +#: ../admin/revslider-admin.class.php:190 +msgid "Create Template" +msgstr "" + +#: ../admin/revslider-admin.class.php:191 +msgid "Do you really want to delete" +msgstr "" + +#: ../admin/revslider-admin.class.php:192 +msgid "Are you sure to replace the urls?" +msgstr "" + +#: ../admin/revslider-admin.class.php:193 +msgid "" +"Set selected settings on all Slides of this Slider? (This will be saved " +"immediately)" +msgstr "" + +#: ../admin/revslider-admin.class.php:194 ../admin/views/slide-overview.php:174 +msgid "Select Slide Image" +msgstr "" + +#: ../admin/revslider-admin.class.php:195 +msgid "Select Slide Video" +msgstr "" + +#: ../admin/revslider-admin.class.php:196 +msgid "Show Slide Options" +msgstr "" + +#: ../admin/revslider-admin.class.php:197 +msgid "Hide Slide Options" +msgstr "" + +#: ../admin/revslider-admin.class.php:198 ../admin/views/slide-overview.php:168 .. +#: admin/views/system/dialog-copy-move.php:3 ../admin/views/templates/slider- +#: main-options.php:1309 ../admin/views/templates/slider-main-options.php:4280 .. +#: admin/views/templates/slides.php:21 ../admin/views/templates/slides.php:43 +msgid "Close" +msgstr "关闭" + +#: ../admin/revslider-admin.class.php:199 +msgid "Really update global styles?" +msgstr "" + +#: ../admin/revslider-admin.class.php:200 +msgid "Global Styles Editor" +msgstr "" + +#: ../admin/revslider-admin.class.php:201 ../admin/revslider-admin.class.php:239 . +#: ./admin/views/templates/slider-main-options.php:4301 +msgid "Select Image" +msgstr "" + +#: ../admin/revslider-admin.class.php:202 +msgid "Video Not Found!" +msgstr "" + +#: ../admin/revslider-admin.class.php:203 +msgid "Handle has to be at least three character long" +msgstr "" + +#: ../admin/revslider-admin.class.php:204 +msgid "Really change font settings?" +msgstr "" + +#: ../admin/revslider-admin.class.php:205 +msgid "Really delete font?" +msgstr "" + +#: ../admin/revslider-admin.class.php:206 +msgid "Class already exists, overwrite?" +msgstr "" + +#: ../admin/revslider-admin.class.php:207 +msgid "Class must be a valid CSS class name" +msgstr "" + +#: ../admin/revslider-admin.class.php:208 +msgid "Really overwrite Class?" +msgstr "" + +#: ../admin/revslider-admin.class.php:209 +msgid "Really delete Class" +msgstr "" + +#: ../admin/revslider-admin.class.php:210 +msgid "? This can't be undone!" +msgstr "" + +#: ../admin/revslider-admin.class.php:211 +msgid "This class does not exist." +msgstr "" + +#: ../admin/revslider-admin.class.php:212 +msgid "" +"Making changes to these settings will probably overwrite advanced settings. " +"Continue?" +msgstr "" + +#: ../admin/revslider-admin.class.php:213 +msgid "Select Static Layer Image" +msgstr "" + +#: ../admin/revslider-admin.class.php:214 +msgid "Select Layer Image" +msgstr "" + +#: ../admin/revslider-admin.class.php:215 +msgid "Do you really want to delete all the layers?" +msgstr "" + +#: ../admin/revslider-admin.class.php:216 +msgid "Layer Animation Editor" +msgstr "" + +#: ../admin/revslider-admin.class.php:217 +msgid "Animation already exists, overwrite?" +msgstr "" + +#: ../admin/revslider-admin.class.php:218 +msgid "Really overwrite animation?" +msgstr "" + +#: ../admin/revslider-admin.class.php:219 +msgid "Default animations can't be deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:220 +msgid "Must be greater than start time" +msgstr "" + +#: ../admin/revslider-admin.class.php:221 +msgid "Selected layer not set" +msgstr "" + +#: ../admin/revslider-admin.class.php:222 +msgid "Edit Layer Start" +msgstr "" + +#: ../admin/revslider-admin.class.php:223 +msgid "Edit Layer End" +msgstr "" + +#: ../admin/revslider-admin.class.php:224 +msgid "Default Animations can't be renamed" +msgstr "" + +#: ../admin/revslider-admin.class.php:225 +msgid "Animationname already existing" +msgstr "" + +#: ../admin/revslider-admin.class.php:226 +msgid "CSS classname already existing" +msgstr "" + +#: ../admin/revslider-admin.class.php:227 +msgid "Original CSS classname not found" +msgstr "" + +#: ../admin/revslider-admin.class.php:228 +msgid "Enter a correct class name" +msgstr "" + +#: ../admin/revslider-admin.class.php:229 +msgid "Class not found in database" +msgstr "" + +#: ../admin/revslider-admin.class.php:230 +msgid "CSS classname not found" +msgstr "" + +#: ../admin/revslider-admin.class.php:231 +msgid "Delete this caption? This may affect other Slider" +msgstr "" + +#: ../admin/revslider-admin.class.php:232 +msgid "" +"This will update the Class with the current set Style settings, this may " +"affect other Sliders. Proceed?" +msgstr "" + +#: ../admin/revslider-admin.class.php:233 +msgid "Template will have the state of the last save, proceed?" +msgstr "" + +#: ../admin/revslider-admin.class.php:234 +msgid "Please enter a Slide title" +msgstr "" + +#: ../admin/revslider-admin.class.php:235 +msgid "Please Wait a Moment" +msgstr "" + +#: ../admin/revslider-admin.class.php:236 ../admin/views/templates/slide-selector. +#: php:192 ../admin/views/templates/slides-list.php:146 +msgid "Copy / Move" +msgstr "" + +#: ../admin/revslider-admin.class.php:237 +msgid "Preset Loaded" +msgstr "" + +#: ../admin/revslider-admin.class.php:238 ../admin/views/templates/slide-selector. +#: php:218 +msgid "Add Bulk Slides" +msgstr "" + +#: ../admin/revslider-admin.class.php:240 ../admin/views/navigation-editor.php:38 +#: ../admin/views/templates/slider-main-options.php:2310 +msgid "Arrows" +msgstr "" + +#: ../admin/revslider-admin.class.php:241 ../admin/views/navigation-editor.php:39 +#: ../admin/views/templates/slider-main-options.php:2311 +msgid "Bullets" +msgstr "" + +#: ../admin/revslider-admin.class.php:242 ../admin/views/templates/slider-main- +#: options.php:2588 +msgid "Thumbnails" +msgstr "缩略图" + +#: ../admin/revslider-admin.class.php:243 ../admin/views/navigation-editor.php:41 +#: ../admin/views/templates/slider-main-options.php:2312 .. +#: admin/views/templates/slider-main-options.php:2760 +msgid "Tabs" +msgstr "" + +#: ../admin/revslider-admin.class.php:244 +msgid "Delete this Navigation?" +msgstr "" + +#: ../admin/revslider-admin.class.php:245 +msgid "Navigation name could not be updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:246 +msgid "Name too short, at least 3 letters between a-zA-z needed" +msgstr "" + +#: ../admin/revslider-admin.class.php:247 +msgid "Navigation name already exists, please choose a different name" +msgstr "" + +#: ../admin/revslider-admin.class.php:248 +msgid "Remove current element from Navigation?" +msgstr "" + +#: ../admin/revslider-admin.class.php:249 +msgid "This navigation element does not exist, create one?" +msgstr "" + +#: ../admin/revslider-admin.class.php:250 +msgid "Overwrite current animation?" +msgstr "" + +#: ../admin/revslider-admin.class.php:251 +msgid "Default animations can't be changed" +msgstr "" + +#: ../admin/revslider-admin.class.php:252 +msgid "Animation already existing with given handle, please choose a different name." +msgstr "" + +#: ../admin/revslider-admin.class.php:253 +msgid "Really delete animation:" +msgstr "" + +#: ../admin/revslider-admin.class.php:254 +msgid "This will reset the navigation, continue?" +msgstr "" + +#: ../admin/revslider-admin.class.php:255 +msgid "Preset name already exists, please choose a different name" +msgstr "" + +#: ../admin/revslider-admin.class.php:256 +msgid "Really delete this preset?" +msgstr "" + +#: ../admin/revslider-admin.class.php:257 +msgid "Maybe wrong YoutTube ID given" +msgstr "" + +#: ../admin/revslider-admin.class.php:258 +msgid "Preset not found" +msgstr "" + +#: ../admin/revslider-admin.class.php:259 +msgid "Cover Image need to be set for videos" +msgstr "" + +#: ../admin/revslider-admin.class.php:260 +msgid "Really remove this action?" +msgstr "" + +#: ../admin/revslider-admin.class.php:261 +msgid "Layer is triggered by " +msgstr "" + +#: ../admin/revslider-admin.class.php:262 +msgid " due to action: " +msgstr "" + +#: ../admin/revslider-admin.class.php:263 +msgid "layer:" +msgstr "" + +#: ../admin/revslider-admin.class.php:264 +msgid "Start Layer \"in\" animation" +msgstr "" + +#: ../admin/revslider-admin.class.php:265 +msgid "Start Layer \"out\" animation" +msgstr "" + +#: ../admin/revslider-admin.class.php:266 ../admin/views/templates/slide-stage. +#: php:2257 +msgid "Start Video" +msgstr "" + +#: ../admin/revslider-admin.class.php:267 ../admin/views/templates/slide-stage. +#: php:2258 +msgid "Stop Video" +msgstr "" + +#: ../admin/revslider-admin.class.php:268 ../admin/views/templates/slide-stage. +#: php:2256 +msgid "Toggle Layer Animation" +msgstr "" + +#: ../admin/revslider-admin.class.php:269 ../admin/views/templates/slide-stage. +#: php:2259 +msgid "Toggle Video" +msgstr "" + +#: ../admin/revslider-admin.class.php:270 ../admin/views/templates/slider-main- +#: options.php:3661 +msgid "Last Slide" +msgstr "" + +#: ../admin/revslider-admin.class.php:271 ../admin/views/templates/slide-stage. +#: php:2260 +msgid "Simulate Click" +msgstr "" + +#: ../admin/revslider-admin.class.php:272 +msgid "Toogle Class" +msgstr "" + +#: ../admin/revslider-admin.class.php:273 +msgid "Copy hover styles to idle?" +msgstr "" + +#: ../admin/revslider-admin.class.php:274 +msgid "Copy idle styles to hover?" +msgstr "" + +#: ../admin/revslider-admin.class.php:275 +msgid "Please select at least one device type" +msgstr "" + +#: ../admin/revslider-admin.class.php:276 +msgid "Please select an existing Style Template" +msgstr "" + +#: ../admin/revslider-admin.class.php:277 +msgid "Can not remove last transition!" +msgstr "" + +#: ../admin/revslider-admin.class.php:278 +msgid "Given animation name is a default animation. These can not be changed." +msgstr "" + +#: ../admin/revslider-admin.class.php:279 +msgid "Animation exists, override existing animation?" +msgstr "" + +#: ../admin/revslider-admin.class.php:289 +msgid "(never show this message again)  X" +msgstr "" + +#: ../admin/revslider-admin.class.php:289 +msgid "" +"Hi! Would you like to activate your version of Revolution Slider to receive " +"live updates & get premium support? This is optional and not needed if the " +"slider came bundled with a theme. " +msgstr "" + +#: ../admin/revslider-admin.class.php:341 +msgid "Close & don't show againX" +msgstr "" + +#: ../admin/revslider-admin.class.php:413 +msgid "Choose Slide Template" +msgstr "" + +#: ../admin/revslider-admin.class.php:509 +msgid "importing slider settings and data..." +msgstr "" + +#: ../admin/revslider-admin.class.php:525 ../admin/revslider-admin.class.php:546 . +#: ./admin/revslider-admin.class.php:570 +msgid "Go Back" +msgstr "" + +#: ../admin/revslider-admin.class.php:528 ../admin/revslider-admin.class.php:572 +msgid "Slider Import Success, redirecting..." +msgstr "" + +#: ../admin/revslider-admin.class.php:541 +msgid "importing template slider settings and data..." +msgstr "" + +#: ../admin/revslider-admin.class.php:545 +msgid "ID missing, something went wrong. Please try again!" +msgstr "" + +#: ../admin/revslider-admin.class.php:605 ../admin/revslider-admin.class.php:1299 +#: ../admin/revslider-admin.class.php:1305 +msgid "Slider not found" +msgstr "" + +#: ../admin/revslider-admin.class.php:617 +msgid "Slider setting could not be changed" +msgstr "" + +#: ../admin/revslider-admin.class.php:649 ../includes/operations.class.php:3648 +msgid "Missing values to add preset" +msgstr "" + +#: ../admin/revslider-admin.class.php:657 +msgid "Preset created" +msgstr "" + +#: ../admin/revslider-admin.class.php:666 ../includes/operations.class.php:3670 +msgid "Missing values to remove preset" +msgstr "" + +#: ../admin/revslider-admin.class.php:674 +msgid "Preset deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:720 +msgid "Slider created" +msgstr "" + +#: ../admin/revslider-admin.class.php:726 +msgid "Slider updated" +msgstr "幻灯片已更新" + +#: ../admin/revslider-admin.class.php:735 +msgid "Template can't be deleted, it is still being used by the following Sliders: " +msgstr "" + +#: ../admin/revslider-admin.class.php:738 ../admin/revslider-admin.class.php:740 +msgid "Slider deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:748 ../admin/revslider-admin.class.php:823 +msgid "Success! Refreshing page..." +msgstr "" + +#: ../admin/revslider-admin.class.php:756 +msgid "Slide Created" +msgstr "幻灯片已创建" + +#: ../admin/revslider-admin.class.php:758 +msgid "Slides Created" +msgstr "" + +#: ../admin/revslider-admin.class.php:768 +msgid "Slide Created, redirecting..." +msgstr "" + +#: ../admin/revslider-admin.class.php:774 +msgid "Missing redirect ID!" +msgstr "" + +#: ../admin/revslider-admin.class.php:781 +msgid "Slide copied to current Slider, redirecting..." +msgstr "" + +#: ../admin/revslider-admin.class.php:787 +msgid "Slide updated" +msgstr "幻灯片已更新" + +#: ../admin/revslider-admin.class.php:791 +msgid "Static Global Layers updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:797 +msgid "Post deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:799 +msgid "Slide deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:812 ../admin/revslider-admin.class.php:814 +msgid "Slide duplicated" +msgstr "" + +#: ../admin/revslider-admin.class.php:821 +msgid "Success!" +msgstr "" + +#: ../admin/revslider-admin.class.php:829 +msgid "No valid Slide ID given" +msgstr "" + +#: ../admin/revslider-admin.class.php:833 ../admin/revslider-admin.class.php:837 +msgid "No valid title given" +msgstr "" + +#: ../admin/revslider-admin.class.php:844 +msgid "Could not save Slide as Template" +msgstr "" + +#: ../admin/revslider-admin.class.php:860 +msgid "Slide added to Templates" +msgstr "" + +#: ../admin/revslider-admin.class.php:888 ../admin/revslider-admin.class.php:910 . +#: ./admin/revslider-admin.class.php:931 ../admin/revslider-admin.class.php:980 +msgid "CSS saved" +msgstr "" + +#: ../admin/revslider-admin.class.php:891 ../admin/revslider-admin.class.php:913 . +#: ./admin/revslider-admin.class.php:934 +msgid "CSS could not be saved" +msgstr "" + +#: ../admin/revslider-admin.class.php:952 +msgid "Class name renamed" +msgstr "" + +#: ../admin/revslider-admin.class.php:968 +msgid "Style deleted!" +msgstr "" + +#: ../admin/revslider-admin.class.php:984 ../admin/revslider-admin.class.php:988 . +#: ./admin/revslider-admin.class.php:992 +msgid "Animation saved" +msgstr "" + +#: ../admin/revslider-admin.class.php:996 +msgid "Animation deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:1000 +msgid "Order updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1004 +msgid "Title updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1009 +msgid "Slide changed" +msgstr "" + +#: ../admin/revslider-admin.class.php:1033 +msgid "General settings updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1037 +msgid "Sortby updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1041 +msgid "Image urls replaced" +msgstr "" + +#: ../admin/revslider-admin.class.php:1045 +msgid "Settings in all Slides changed" +msgstr "" + +#: ../admin/revslider-admin.class.php:1052 +msgid "The API key, the Purchase Code and the Username need to be set!" +msgstr "" + +#: ../admin/revslider-admin.class.php:1057 +msgid "Purchase Code Successfully Activated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1059 +msgid "Purchase Code is invalid" +msgstr "" + +#: ../admin/revslider-admin.class.php:1066 +msgid "Successfully removed validation" +msgstr "" + +#: ../admin/revslider-admin.class.php:1068 +msgid "Could not remove Validation!" +msgstr "" + +#: ../admin/revslider-admin.class.php:1073 ../admin/revslider-admin.class.php:1080 +msgid "." +msgstr "" + +#: ../admin/revslider-admin.class.php:1086 +msgid "Setting Changed!" +msgstr "" + +#: ../admin/revslider-admin.class.php:1091 +msgid "No ID given" +msgstr "" + +#: ../admin/revslider-admin.class.php:1101 ../admin/revslider-admin.class.php:1119 +msgid "Invalid Email" +msgstr "" + +#: ../admin/revslider-admin.class.php:1104 +msgid "Success! Please check your Emails to finish the subscribtion" +msgstr "" + +#: ../admin/revslider-admin.class.php:1107 ../admin/revslider-admin.class.php:1125 +msgid "Invalid Email/Could not connect to the Newsletter server" +msgstr "" + +#: ../admin/revslider-admin.class.php:1110 ../admin/revslider-admin.class.php:1128 +msgid "No Email given" +msgstr "" + +#: ../admin/revslider-admin.class.php:1122 +msgid "Success! Please check your Emails to finish the process" +msgstr "" + +#: ../admin/revslider-admin.class.php:1148 +msgid "Navigation saved/updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1156 +msgid "Navigations updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1167 +msgid "Navigation deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:1171 +msgid "Wrong ID given" +msgstr "" + +#: ../admin/revslider-admin.class.php:1178 +msgid "Successfully fetched Facebook albums" +msgstr "" + +#: ../admin/revslider-admin.class.php:1181 +msgid "Could not fetch Facebook albums" +msgstr "" + +#: ../admin/revslider-admin.class.php:1186 +msgid "Cleared Albums" +msgstr "" + +#: ../admin/revslider-admin.class.php:1195 +msgid "Successfully fetched flickr photosets" +msgstr "" + +#: ../admin/revslider-admin.class.php:1198 +msgid "Could not fetch flickr photosets" +msgstr "" + +#: ../admin/revslider-admin.class.php:1204 +msgid "Cleared Photosets" +msgstr "" + +#: ../admin/revslider-admin.class.php:1207 +msgid "No User URL - Could not fetch flickr photosets" +msgstr "" + +#: ../admin/revslider-admin.class.php:1211 +msgid "No API KEY - Could not fetch flickr photosets" +msgstr "" + +#: ../admin/revslider-admin.class.php:1220 +msgid "Successfully fetched YouTube playlists" +msgstr "" + +#: ../admin/revslider-admin.class.php:1223 +msgid "Could not fetch YouTube playlists" +msgstr "" + +#: ../admin/revslider-admin.class.php:1309 +msgid "No Data Received" +msgstr "" + +#: ../admin/revslider-admin.class.php:1319 +msgid "Loading Error" +msgstr "" + +#: ../admin/revslider-admin.class.php:1321 +msgid "Loading Error: " +msgstr "" + +#: ../admin/views/master-view.php:55 ../admin/views/system/validation.php:52 +msgid "Please Wait..." +msgstr "" + +#: ../admin/views/navigation-editor.php:33 +msgid "Select the Navigation Category to Edit" +msgstr "" + +#: ../admin/views/navigation-editor.php:33 +msgid "Add New" +msgstr "" + +#: ../admin/views/navigation-editor.php:36 +msgid "#ID" +msgstr "" + +#: ../admin/views/navigation-editor.php:37 +msgid "Skin Name" +msgstr "" + +#: ../admin/views/navigation-editor.php:40 ../admin/views/templates/slider-main- +#: options.php:2313 +msgid "Thumbs" +msgstr "" + +#: ../admin/views/navigation-editor.php:42 ../admin/views/navigation-editor.php: +#: 67 ../admin/views/templates/slide-stage.php:34 +msgid "Actions" +msgstr "操作" + +#: ../admin/views/navigation-editor.php:58 +msgid "Editing" +msgstr "" + +#: ../admin/views/navigation-editor.php:58 ../admin/views/system/dialog-video.php: +#: 229 +msgid "Remove" +msgstr "" + +#: ../admin/views/navigation-editor.php:61 +msgid "Markup" +msgstr "" + +#: ../admin/views/navigation-editor.php:69 ../admin/views/navigation-editor.php: +#: 70 ../admin/views/navigation-editor.php:71 ../admin/views/navigation-editor. +#: php:72 +msgid "Reset Defaults" +msgstr "" + +#: ../admin/views/navigation-editor.php:73 +msgid "Parameters" +msgstr "" + +#: ../admin/views/navigation-editor.php:75 ../admin/views/templates/slide-general- +#: settings.php:476 +msgid "Slide Title" +msgstr "幻灯片的标题" + +#: ../admin/views/navigation-editor.php:76 +msgid "Slide Description" +msgstr "" + +#: ../admin/views/navigation-editor.php:80 +msgid "Parameter " +msgstr "" + +#: ../admin/views/navigation-editor.php:94 ../includes/operations.class.php:1418 +msgid "CSS" +msgstr "" + +#: ../admin/views/navigation-editor.php:100 +msgid "Style Helper" +msgstr "" + +#: ../admin/views/navigation-editor.php:102 +msgid "Color Value" +msgstr "" + +#: ../admin/views/navigation-editor.php:106 ../admin/views/navigation-editor.php: +#: 120 ../admin/views/navigation-editor.php:138 ../admin/views/navigation-editor. +#: php:154 ../admin/views/navigation-editor.php:170 ../admin/views/navigation- +#: editor.php:184 ../admin/views/templates/template-selector.php:17 .. +#: admin/views/templates/template-slider-selector.php:15 +msgid "Add" +msgstr "" + +#: ../admin/views/navigation-editor.php:109 ../admin/views/templates/slide-stage. +#: php:2157 ../admin/views/templates/slider-main-options.php:3105 +msgid "Border Radius" +msgstr "" + +#: ../admin/views/navigation-editor.php:111 +msgid "Top Left" +msgstr "" + +#: ../admin/views/navigation-editor.php:113 +msgid "Top Right" +msgstr "" + +#: ../admin/views/navigation-editor.php:115 +msgid "Bottom Right" +msgstr "" + +#: ../admin/views/navigation-editor.php:117 +msgid "Bottom Left" +msgstr "" + +#: ../admin/views/navigation-editor.php:123 ../admin/views/templates/slide-stage. +#: php:244 ../admin/views/templates/slide-stage.php:512 .. +#: admin/views/templates/slide-stage.php:2005 ../admin/views/templates/slide- +#: stage.php:2070 ../admin/views/templates/slide-stage.php:2136 +msgid "Border" +msgstr "" + +#: ../admin/views/navigation-editor.php:125 ../admin/views/templates/slider-main- +#: options.php:1965 ../admin/views/templates/slider-main-options.php:2397 .. +#: admin/views/templates/slider-main-options.php:2427 .. +#: admin/views/templates/slider-main-options.php:2540 .. +#: admin/views/templates/slider-main-options.php:2710 .. +#: admin/views/templates/slider-main-options.php:2878 .. +#: admin/views/templates/slider-main-options.php:3213 +msgid "Top" +msgstr "顶部" + +#: ../admin/views/navigation-editor.php:127 ../admin/views/templates/slide-stage. +#: php:282 ../admin/views/templates/slider-main-options.php:2175 .. +#: admin/views/templates/slider-main-options.php:2390 .. +#: admin/views/templates/slider-main-options.php:2419 .. +#: admin/views/templates/slider-main-options.php:2534 .. +#: admin/views/templates/slider-main-options.php:2704 .. +#: admin/views/templates/slider-main-options.php:2872 .. +#: admin/views/templates/slider-main-options.php:3207 +msgid "Right" +msgstr "右边" + +#: ../admin/views/navigation-editor.php:129 ../admin/views/templates/slider-main- +#: options.php:1966 ../admin/views/templates/slider-main-options.php:2399 .. +#: admin/views/templates/slider-main-options.php:2429 .. +#: admin/views/templates/slider-main-options.php:2542 .. +#: admin/views/templates/slider-main-options.php:2712 .. +#: admin/views/templates/slider-main-options.php:2880 .. +#: admin/views/templates/slider-main-options.php:3215 +msgid "Bottom" +msgstr "下部" + +#: ../admin/views/navigation-editor.php:131 ../admin/views/templates/slide-stage. +#: php:280 ../admin/views/templates/slider-main-options.php:2173 .. +#: admin/views/templates/slider-main-options.php:2388 .. +#: admin/views/templates/slider-main-options.php:2417 .. +#: admin/views/templates/slider-main-options.php:2532 .. +#: admin/views/templates/slider-main-options.php:2702 .. +#: admin/views/templates/slider-main-options.php:2870 .. +#: admin/views/templates/slider-main-options.php:3205 +msgid "Left" +msgstr "左边" + +#: ../admin/views/navigation-editor.php:133 ../admin/views/navigation-editor.php: +#: 149 ../admin/views/navigation-editor.php:165 ../admin/views/templates/slide- +#: stage.php:751 ../admin/views/templates/slide-stage.php:927 +msgid "Opacity" +msgstr "" + +#: ../admin/views/navigation-editor.php:141 +msgid "Text-Shadow" +msgstr "" + +#: ../admin/views/navigation-editor.php:143 ../admin/views/navigation-editor.php: +#: 159 ../admin/views/templates/slide-stage.php:1127 +msgid "Angle" +msgstr "" + +#: ../admin/views/navigation-editor.php:145 ../admin/views/navigation-editor.php: +#: 161 +msgid "Distance" +msgstr "" + +#: ../admin/views/navigation-editor.php:147 ../admin/views/navigation-editor.php: +#: 163 +msgid "Blur" +msgstr "" + +#: ../admin/views/navigation-editor.php:157 +msgid "Box-Shadow" +msgstr "" + +#: ../admin/views/navigation-editor.php:173 ../admin/views/templates/slide-stage. +#: php:153 ../admin/views/templates/slide-stage.php:154 .. +#: admin/views/templates/slide-stage.php:2030 ../admin/views/templates/slide- +#: stage.php:2031 +msgid "Font Family" +msgstr "" + +#: ../admin/views/navigation-editor.php:190 +msgid "Resets" +msgstr "" + +#: ../admin/views/navigation-editor.php:192 ../admin/views/navigation-editor.php: +#: 194 ../admin/views/navigation-editor.php:196 ../admin/views/navigation-editor. +#: php:198 +msgid "Classes & Style" +msgstr "" + +#: ../admin/views/navigation-editor.php:193 ../admin/views/navigation-editor.php: +#: 195 ../admin/views/navigation-editor.php:197 ../admin/views/navigation-editor. +#: php:199 +msgid "Only Classes" +msgstr "" + +#: ../admin/views/navigation-editor.php:218 +msgid "Live Preview - Hover & Click for test" +msgstr "" + +#: ../admin/views/navigation-editor.php:220 +msgid "Suggested Width:" +msgstr "" + +#: ../admin/views/navigation-editor.php:222 +msgid "Suggested Height:" +msgstr "" + +#: ../admin/views/navigation-editor.php:241 +msgid "Save All Changes" +msgstr "" + +#: ../admin/views/navigation-editor.php:302 +msgid "View" +msgstr "" + +#: ../admin/views/navigation-editor.php:302 +msgid "Edit" +msgstr "" + +#: ../admin/views/navigation-editor.php:1237 +msgid "Custom Navigations" +msgstr "" + +#: ../admin/views/navigation-editor.php:1240 +msgid "Default Navigations" +msgstr "" + +#: ../admin/views/slide-editor.php:311 +msgid "Slider:" +msgstr "" + +#: ../admin/views/slide-editor.php:314 +msgid "Edit Template Slide" +msgstr "" + +#: ../admin/views/slide-editor.php:316 ../admin/views/templates/slides-list.php: +#: 107 ../admin/views/templates/wpml-selector.php:10 +msgid "Edit Slide" +msgstr "编辑幻灯片" + +#: ../admin/views/slide-editor.php:318 ../admin/views/slider-overview.php:279 +msgid "Title:" +msgstr "" + +#: ../admin/views/slide-editor.php:321 ../admin/views/slider-overview.php:67 .. +#: admin/views/templates/slider-main-options.php:26 .. +#: admin/views/templates/slides.php:10 +msgid "Help" +msgstr "帮助" + +#: ../admin/views/slide-editor.php:350 +msgid "" +"Warning!!! The jquery ui javascript include that is loaded by some of " +"the plugins are custom made and not contain needed components like " +"'autocomplete' or 'draggable' function.\n" +" Without those functions the editor may not work correctly. Please remove " +"those custom jquery ui includes in order the editor will work correctly." +msgstr "" + +#: ../admin/views/slide-editor.php:364 +msgid "Insert Meta" +msgstr "" + +#: ../admin/views/slide-editor.php:371 +msgid "Post Replace Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:373 +msgid "Any custom meta tag" +msgstr "" + +#: ../admin/views/slide-editor.php:374 ../admin/views/slide-editor.php:420 +msgid "Post Title" +msgstr "" + +#: ../admin/views/slide-editor.php:375 +msgid "Post Excerpt" +msgstr "" + +#: ../admin/views/slide-editor.php:376 +msgid "Post Alias" +msgstr "" + +#: ../admin/views/slide-editor.php:377 ../admin/views/slide-editor.php:421 +msgid "Post content" +msgstr "" + +#: ../admin/views/slide-editor.php:378 ../admin/views/slide-editor.php:422 .. +#: admin/views/slide-editor.php:530 +msgid "The link to the post" +msgstr "" + +#: ../admin/views/slide-editor.php:379 ../admin/views/slide-editor.php:423 .. +#: admin/views/slide-editor.php:444 +msgid "Date created" +msgstr "" + +#: ../admin/views/slide-editor.php:380 +msgid "Date modified" +msgstr "" + +#: ../admin/views/slide-editor.php:381 +msgid "Author name" +msgstr "" + +#: ../admin/views/slide-editor.php:382 +msgid "Number of comments" +msgstr "" + +#: ../admin/views/slide-editor.php:383 +msgid "List of categories with links" +msgstr "" + +#: ../admin/views/slide-editor.php:384 +msgid "List of tags with links" +msgstr "" + +#: ../admin/views/slide-editor.php:388 +msgid "Featured Image URL" +msgstr "" + +#: ../admin/views/slide-editor.php:389 +msgid "Featured Image <img />" +msgstr "" + +#: ../admin/views/slide-editor.php:397 +msgid "Events Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:399 +msgid "Event start date" +msgstr "" + +#: ../admin/views/slide-editor.php:400 +msgid "Event end date" +msgstr "" + +#: ../admin/views/slide-editor.php:401 +msgid "Event start time" +msgstr "" + +#: ../admin/views/slide-editor.php:402 +msgid "Event end time" +msgstr "" + +#: ../admin/views/slide-editor.php:403 +msgid "Event ID" +msgstr "" + +#: ../admin/views/slide-editor.php:404 +msgid "Event location name" +msgstr "" + +#: ../admin/views/slide-editor.php:405 +msgid "Event location slug" +msgstr "" + +#: ../admin/views/slide-editor.php:406 +msgid "Event location address" +msgstr "" + +#: ../admin/views/slide-editor.php:407 +msgid "Event location town" +msgstr "" + +#: ../admin/views/slide-editor.php:408 +msgid "Event location state" +msgstr "" + +#: ../admin/views/slide-editor.php:409 +msgid "Event location postcode" +msgstr "" + +#: ../admin/views/slide-editor.php:410 +msgid "Event location region" +msgstr "" + +#: ../admin/views/slide-editor.php:411 +msgid "Event location country" +msgstr "" + +#: ../admin/views/slide-editor.php:418 +msgid "Flickr Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:424 ../admin/views/slide-editor.php:445 .. +#: admin/views/slide-editor.php:467 ../admin/views/slide-editor.php:490 .. +#: admin/views/slide-editor.php:532 +msgid "Username" +msgstr "" + +#: ../admin/views/slide-editor.php:425 +msgid "Views" +msgstr "" + +#: ../admin/views/slide-editor.php:429 ../admin/views/slide-editor.php:451 .. +#: admin/views/slide-editor.php:473 ../admin/views/slide-editor.php:495 .. +#: admin/views/slide-editor.php:515 ../admin/views/slide-editor.php:539 +msgid "Image URL" +msgstr "" + +#: ../admin/views/slide-editor.php:430 ../admin/views/slide-editor.php:452 .. +#: admin/views/slide-editor.php:474 ../admin/views/slide-editor.php:496 .. +#: admin/views/slide-editor.php:516 ../admin/views/slide-editor.php:540 +msgid "Image <img />" +msgstr "" + +#: ../admin/views/slide-editor.php:439 +msgid "Instagram Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:441 ../admin/views/slide-editor.php:463 .. +#: admin/views/slide-editor.php:485 ../admin/views/slide-editor.php:507 .. +#: admin/views/slide-editor.php:527 ../admin/views/templates/slide-stage.php: +#: 1241 ../admin/views/templates/slider-main-options.php:422 ../includes/widget. +#: class.php:61 +msgid "Title" +msgstr "" + +#: ../admin/views/slide-editor.php:442 ../admin/views/slide-editor.php:464 .. +#: admin/views/slide-editor.php:486 ../admin/views/slide-editor.php:509 .. +#: admin/views/slide-editor.php:529 +msgid "Content" +msgstr "" + +#: ../admin/views/slide-editor.php:443 ../admin/views/slide-editor.php:465 .. +#: admin/views/slide-editor.php:487 ../admin/views/slide-editor.php:511 +msgid "Link" +msgstr "" + +#: ../admin/views/slide-editor.php:446 ../admin/views/slide-editor.php:491 .. +#: admin/views/slide-editor.php:533 +msgid "Number of Likes" +msgstr "" + +#: ../admin/views/slide-editor.php:447 ../admin/views/slide-editor.php:535 +msgid "Number of Comments" +msgstr "" + +#: ../admin/views/slide-editor.php:461 +msgid "Twitter Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:466 ../admin/views/slide-editor.php:488 .. +#: admin/views/slide-editor.php:510 ../admin/views/slide-editor.php:531 +msgid "Pulbishing Date" +msgstr "" + +#: ../admin/views/slide-editor.php:468 +msgid "Retweet Count" +msgstr "" + +#: ../admin/views/slide-editor.php:469 +msgid "Favorite Count" +msgstr "" + +#: ../admin/views/slide-editor.php:483 +msgid "Facebook Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:489 +msgid "Last Modify Date" +msgstr "" + +#: ../admin/views/slide-editor.php:505 +msgid "YouTube Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:508 ../admin/views/slide-editor.php:528 +msgid "Excerpt" +msgstr "" + +#: ../admin/views/slide-editor.php:525 +msgid "Vimeo Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:534 +msgid "Number of Views" +msgstr "" + +#: ../admin/views/slide-editor.php:551 ../admin/views/templates/slide-stage.php: +#: 250 ../admin/views/templates/slide-stage.php:515 +msgid "Advanced CSS" +msgstr "" + +#: ../admin/views/slide-editor.php:554 +msgid "Style from Options" +msgstr "" + +#: ../admin/views/slide-editor.php:554 +msgid "Editable via Option Fields, Saved in the Class:" +msgstr "" + +#: ../admin/views/slide-editor.php:558 +msgid "Additional Custom Styling" +msgstr "" + +#: ../admin/views/slide-editor.php:558 +msgid "Appended in the Class:" +msgstr "" + +#: ../admin/views/slide-editor.php:563 ../admin/views/slide-editor.php:582 .. +#: admin/views/templates/slide-stage.php:86 ../admin/views/templates/slide-stage. +#: php:701 ../admin/views/templates/slide-stage.php:876 +msgid "Save As" +msgstr "" + +#: ../admin/views/slide-editor.php:565 ../admin/views/slide-editor.php:584 +msgid "Save As:" +msgstr "" + +#: ../admin/views/slide-editor.php:569 +msgid "Rename CSS" +msgstr "" + +#: ../admin/views/slide-editor.php:571 ../admin/views/slide-editor.php:895 +msgid "Rename to:" +msgstr "" + +#: ../admin/views/slide-editor.php:575 +msgid "Layer Inline CSS" +msgstr "" + +#: ../admin/views/slide-editor.php:577 +msgid "Advanced Custom Styling" +msgstr "" + +#: ../admin/views/slide-editor.php:577 +msgid "Appended Inline to the Layer Markup" +msgstr "" + +#: ../admin/views/slide-editor.php:588 +msgid "Save Under" +msgstr "" + +#: ../admin/views/slide-editor.php:590 +msgid "Save Under:" +msgstr "" + +#: ../admin/views/slide-editor.php:838 ../admin/views/slide-editor.php:877 +msgid "Save Slide" +msgstr "" + +#: ../admin/views/slide-editor.php:842 +msgid "Update Static Layers" +msgstr "" + +#: ../admin/views/slide-editor.php:846 +msgid "updating" +msgstr "更新中" + +#: ../admin/views/slide-editor.php:848 ../admin/views/slide-editor.php:883 .. +#: admin/views/slide-overview.php:169 +msgid "Slider Settings" +msgstr "滑块设置" + +#: ../admin/views/slide-editor.php:849 +msgid "Slides Overview" +msgstr "" + +#: ../admin/views/slide-editor.php:854 ../admin/views/templates/wpml-selector.php:9 +msgid "Delete Slide" +msgstr "" + +#: ../admin/views/slide-editor.php:873 +msgid "CSS Global" +msgstr "" + +#: ../admin/views/slide-editor.php:887 ../admin/views/templates/slider-main- +#: options.php:1310 ../admin/views/templates/slider-main-options.php:4292 .. +#: admin/views/templates/sliders-list.php:169 +msgid "Preview" +msgstr "预览" + +#: ../admin/views/slide-editor.php:893 +msgid "Rename Animation" +msgstr "" + +#: ../admin/views/slide-editor.php:918 +msgid "Delete this slide?" +msgstr "" + +#: ../admin/views/slide-overview.php:51 +msgid "New Post" +msgstr "" + +#: ../admin/views/slide-overview.php:61 +msgid "Edit Posts" +msgstr "" + +#: ../admin/views/slide-overview.php:65 +msgid "This is a list of posts that are taken from multiple sources." +msgstr "" + +#: ../admin/views/slide-overview.php:67 +msgid "Sort by" +msgstr "" + +#: ../admin/views/slide-overview.php:70 +msgid "Updating Sorting..." +msgstr "" + +#: ../admin/views/slide-overview.php:75 ../admin/views/templates/slides-list.php:5 +msgid "Post List" +msgstr "" + +#: ../admin/views/slide-overview.php:76 ../admin/views/templates/slides-list.php:6 +msgid "Saving Order" +msgstr "保存列表中" + +#: ../admin/views/slide-overview.php:80 ../admin/views/templates/slides-list.php:12 +msgid "No Posts Found" +msgstr "" + +#: ../admin/views/slide-overview.php:133 +msgid "Unpublish Post" +msgstr "" + +#: ../admin/views/slide-overview.php:135 +msgid "Publish Post" +msgstr "" + +#: ../admin/views/slide-overview.php:140 +msgid "Edit Post" +msgstr "" + +#: ../admin/views/slide-overview.php:144 ../admin/views/slide-overview.php:146 +msgid "" +"Click to change the slide image. Note: The post featured image will be " +"changed." +msgstr "" + +#: ../admin/views/slide-overview.php:146 +msgid "no image" +msgstr "" + +#: ../admin/views/slide-overview.php:150 ../admin/views/templates/slide-selector. +#: php:198 ../admin/views/templates/slide-stage.php:89 .. +#: admin/views/templates/slide-stage.php:704 ../admin/views/templates/slide- +#: stage.php:879 ../admin/views/templates/sliders-list.php:167 .. +#: admin/views/templates/slides-list.php:134 +msgid "Delete" +msgstr "删除" + +#: ../admin/views/slide-overview.php:173 +msgid "" +"Warning! Removing this entry will cause the original wordpress post to be " +"deleted." +msgstr "" + +#: ../admin/views/slider-overview.php:69 +msgid "Global Settings" +msgstr "全局设置" + +#: ../admin/views/slider-overview.php:76 +msgid "Revolution Sliders" +msgstr "革命滑块" + +#: ../admin/views/slider-overview.php:81 +msgid "Sort By:" +msgstr "" + +#: ../admin/views/slider-overview.php:83 +msgid "By ID" +msgstr "" + +#: ../admin/views/slider-overview.php:84 +msgid "By Name" +msgstr "" + +#: ../admin/views/slider-overview.php:85 +msgid "By Type" +msgstr "" + +#: ../admin/views/slider-overview.php:86 +msgid "By Favorit" +msgstr "" + +#: ../admin/views/slider-overview.php:89 +msgid "Filter By:" +msgstr "" + +#: ../admin/views/slider-overview.php:92 ../admin/views/templates/slider-main- +#: options.php:3408 +msgid "All" +msgstr "" + +#: ../admin/views/slider-overview.php:93 ../admin/views/templates/sliders-list. +#: php:33 +msgid "Posts" +msgstr "文章" + +#: ../admin/views/slider-overview.php:94 ../admin/views/templates/slider-main- +#: options.php:146 ../admin/views/templates/sliders-list.php:21 +msgid "Gallery" +msgstr "图片墙" + +#: ../admin/views/slider-overview.php:95 ../admin/views/system/dialog-video.php: +#: 30 ../admin/views/templates/sliders-list.php:74 +msgid "Vimeo" +msgstr "" + +#: ../admin/views/slider-overview.php:96 ../admin/views/system/dialog-video.php: +#: 28 ../admin/views/templates/sliders-list.php:68 +msgid "YouTube" +msgstr "" + +#: ../admin/views/slider-overview.php:97 ../admin/views/templates/sliders-list. +#: php:50 +msgid "Twitter" +msgstr "" + +#: ../admin/views/slider-overview.php:98 ../admin/views/templates/sliders-list. +#: php:44 +msgid "Facebook" +msgstr "" + +#: ../admin/views/slider-overview.php:99 ../admin/views/templates/sliders-list. +#: php:56 +msgid "Instagram" +msgstr "" + +#: ../admin/views/slider-overview.php:100 ../admin/views/templates/sliders-list. +#: php:62 +msgid "Flickr" +msgstr "" + +#: ../admin/views/slider-overview.php:111 +msgid "No Sliders Found" +msgstr "没有找到幻灯片" + +#: ../admin/views/slider-overview.php:126 +msgid "For the" +msgstr "" + +#: ../admin/views/slider-overview.php:126 +msgid "pages or posts editor" +msgstr "" + +#: ../admin/views/slider-overview.php:126 +msgid "insert the shortcode:" +msgstr "" + +#: ../admin/views/slider-overview.php:128 ../admin/views/slider-overview.php:132 +msgid "From the" +msgstr "" + +#: ../admin/views/slider-overview.php:128 +msgid "theme html" +msgstr "HTML主题" + +#: ../admin/views/slider-overview.php:128 +msgid "use" +msgstr "使用" + +#: ../admin/views/slider-overview.php:129 +msgid "To add the slider only to homepage use" +msgstr "" + +#: ../admin/views/slider-overview.php:130 +msgid "To add the slider on specific pages or posts use" +msgstr "" + +#: ../admin/views/slider-overview.php:132 +msgid "widgets panel" +msgstr "小工具面板" + +#: ../admin/views/slider-overview.php:132 +msgid "drag the \"Revolution Slider\" widget to the desired sidebar" +msgstr "拖动革命滑块到所需的侧边栏小部件" + +#: ../admin/views/slider-overview.php:144 +msgid "Version Information" +msgstr "" + +#: ../admin/views/slider-overview.php:149 +msgid "Installed Version" +msgstr "" + +#: ../admin/views/slider-overview.php:153 +msgid "Latest Stable Version" +msgstr "" + +#: ../admin/views/slider-overview.php:153 +msgid "Update to Stable (Free)" +msgstr "" + +#: ../admin/views/slider-overview.php:157 +msgid "Latest Available Version" +msgstr "" + +#: ../admin/views/slider-overview.php:157 +msgid "Check Version" +msgstr "" + +#: ../admin/views/slider-overview.php:169 +msgid "Need Premium Support and Live Updates ?" +msgstr "" + +#: ../admin/views/slider-overview.php:169 +msgid "Why is this Important ?" +msgstr "" + +#: ../admin/views/slider-overview.php:174 +msgid "Benefits" +msgstr "" + +#: ../admin/views/slider-overview.php:176 +msgid "Get Premium Support" +msgstr "" + +#: ../admin/views/slider-overview.php:176 +msgid "" +" - We help you in case of Bugs, installation problems, and Conflicts with " +"other plugins and Themes" +msgstr "" + +#: ../admin/views/slider-overview.php:177 +msgid "Live Updates" +msgstr "" + +#: ../admin/views/slider-overview.php:177 +msgid "" +" - Get the latest version of our Plugin. New Features and Bug Fixes are " +"available regularly !" +msgstr "" + +#: ../admin/views/slider-overview.php:194 +msgid "Information" +msgstr "" + +#: ../admin/views/slider-overview.php:199 +msgid "" +"Please note that this plugin came bundled with a theme. The use of the " +"Revolution Slider is limited to this theme only.
        If you need support from " +"the Slider author ThemePunch or you want to use the Revolution slider with " +"an other theme you will need an extra single license available at CodeCanyon." +msgstr "" + +#: ../admin/views/slider-overview.php:210 +msgid "Newsletter" +msgstr "" + +#: ../admin/views/slider-overview.php:210 +msgid "Why subscribe?" +msgstr "" + +#: ../admin/views/slider-overview.php:216 +msgid "Unsubscribe our newsletter" +msgstr "" + +#: ../admin/views/slider-overview.php:216 +msgid "Subscribe to our newsletter" +msgstr "" + +#: ../admin/views/slider-overview.php:216 +msgid "Enter your E-Mail here" +msgstr "" + +#: ../admin/views/slider-overview.php:217 +msgid "Subscribe" +msgstr "" + +#: ../admin/views/slider-overview.php:219 +msgid "Unsubscribe" +msgstr "" + +#: ../admin/views/slider-overview.php:220 +msgid "Cancel" +msgstr "" + +#: ../admin/views/slider-overview.php:223 +msgid "unsubscibe from newsletter" +msgstr "" + +#: ../admin/views/slider-overview.php:225 +msgid "Perks of subscribing to our Newsletter" +msgstr "" + +#: ../admin/views/slider-overview.php:227 +msgid "Receive info on the latest ThemePunch product updates" +msgstr "" + +#: ../admin/views/slider-overview.php:228 +msgid "Be the first to know about new products by ThemePunch and their partners" +msgstr "" + +#: ../admin/views/slider-overview.php:229 +msgid "" +"Participate in polls and customer surveys that help us increase the quality " +"of our products and services" +msgstr "" + +#: ../admin/views/slider-overview.php:238 +msgid "Update History" +msgstr "" + +#: ../admin/views/slider-overview.php:248 ../admin/views/slider-overview.php:272 . +#: ./admin/views/templates/sliders-list.php:190 +msgid "Import Slider" +msgstr "" + +#: ../admin/views/slider-overview.php:254 +msgid "Choose the import file" +msgstr "选择导入文件" + +#: ../admin/views/slider-overview.php:258 ../admin/views/templates/template- +#: selector.php:242 ../admin/views/templates/template-slider-selector.php:171 +msgid "Note: custom styles will be updated if they exist!" +msgstr "注:自定义样式如果存在将会被更新!" + +#: ../admin/views/slider-overview.php:261 ../admin/views/templates/template- +#: selector.php:245 ../admin/views/templates/template-slider-selector.php:174 +msgid "Custom Animations:" +msgstr "自定义动画:" + +#: ../admin/views/slider-overview.php:262 ../admin/views/slider-overview.php:267 . +#: ./admin/views/templates/slider-main-options.php:3564 .. +#: admin/views/templates/slider-main-options.php:3569 .. +#: admin/views/templates/template-selector.php:246 .. +#: admin/views/templates/template-selector.php:251 .. +#: admin/views/templates/template-slider-selector.php:175 .. +#: admin/views/templates/template-slider-selector.php:180 +msgid "overwrite" +msgstr "覆盖" + +#: ../admin/views/slider-overview.php:263 ../admin/views/slider-overview.php:268 . +#: ./admin/views/templates/slider-main-options.php:3565 .. +#: admin/views/templates/slider-main-options.php:3570 .. +#: admin/views/templates/template-selector.php:247 .. +#: admin/views/templates/template-selector.php:252 .. +#: admin/views/templates/template-slider-selector.php:176 .. +#: admin/views/templates/template-slider-selector.php:181 +msgid "append" +msgstr "附加" + +#: ../admin/views/slider-overview.php:266 ../admin/views/templates/slide-stage. +#: php:62 ../admin/views/templates/template-selector.php:250 .. +#: admin/views/templates/template-slider-selector.php:179 +msgid "Static Styles:" +msgstr "静态样式" + +#: ../admin/views/slider-overview.php:277 ../admin/views/templates/slide-selector. +#: php:196 ../admin/views/templates/sliders-list.php:168 .. +#: admin/views/templates/slides-list.php:136 +msgid "Duplicate" +msgstr "复制/备份" + +#: ../admin/views/system/dialog-copy-move.php:3 +msgid "Do It!" +msgstr "" + +#: ../admin/views/system/dialog-copy-move.php:3 +msgid "Copy / move slide" +msgstr "" + +#: ../admin/views/system/dialog-copy-move.php:7 ../includes/widget.class.php:66 +msgid "Choose Slider" +msgstr "" + +#: ../admin/views/system/dialog-copy-move.php:12 +msgid "Choose Operation" +msgstr "" + +#: ../admin/views/system/dialog-copy-move.php:15 +msgid "Copy" +msgstr "" + +#: ../admin/views/system/dialog-copy-move.php:18 +msgid "Move" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:25 .. +#: admin/views/templates/slider-main-options.php:1582 +msgid "General Settings" +msgstr "通用设置" + +#: ../admin/views/system/dialog-global-settings.php:36 +msgid "View Plugin Permission:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:40 +msgid "To Admin" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:41 +msgid "To Editor, Admin" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:42 +msgid "Author, Editor, Admin" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:46 +msgid "The role of user that can view and edit the plugin" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:52 +msgid "Include RevSlider libraries globally:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:58 .. +#: admin/views/system/dialog-global-settings.php:92 ../admin/views/system/dialog- +#: global-settings.php:113 ../admin/views/system/dialog-global-settings.php:134 .. +#: admin/views/system/dialog-global-settings.php:187 .. +#: admin/views/system/dialog-global-settings.php:209 .. +#: admin/views/templates/slider-main-options.php:3506 +msgid "On" +msgstr "打开" + +#: ../admin/views/system/dialog-global-settings.php:63 .. +#: admin/views/system/dialog-global-settings.php:97 ../admin/views/system/dialog- +#: global-settings.php:118 ../admin/views/system/dialog-global-settings.php:139 .. +#: admin/views/system/dialog-global-settings.php:192 .. +#: admin/views/system/dialog-global-settings.php:214 .. +#: admin/views/templates/slider-main-options.php:2210 .. +#: admin/views/templates/slider-main-options.php:3487 .. +#: admin/views/templates/slider-main-options.php:3508 +msgid "Off" +msgstr "关闭" + +#: ../admin/views/system/dialog-global-settings.php:68 +msgid "" +"ON - Add CSS and JS Files to all pages.
        Off - CSS and JS Files will be " +"only loaded on Pages where any rev_slider shortcode exists." +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:74 +msgid "Pages to include RevSlider libraries:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:79 +msgid "" +"Specify the page id's that the front end includes will be included in. " +"Example: 2,3,5 also: homepage,3,4" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:86 +msgid "Insert JavaScript Into Footer:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:101 +msgid "" +"Putting the js to footer (instead of the head) is good for fixing some " +"javascript conflicts." +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:107 +msgid "Defer JavaScript Loading:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:122 +msgid "Defer the loading of the JavaScript libraries to maximize page loading speed." +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:128 +msgid "Enable Markup Export option:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:143 +msgid "" +"This will enable the option to export the Slider Markups to copy/paste it " +"directly into websites." +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:149 +msgid "Font Loading URL:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:154 +msgid "" +"Insert something in it and it will be used instead of http://fonts." +"googleapis.com/css?family= (For example: http://fonts.useso.com/css?family= " +"which will also work for chinese visitors)" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:161 +msgid "Default Settings for Advanced Responsive Grid Sizes:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:164 +msgid "Desktop Grid Width" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:166 +msgid "Notebook Grid Width" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:168 +msgid "Tablet Grid Width" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:170 +msgid "Mobile Grid Width" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:174 +msgid "Define the default Grid Sizes for devices: Desktop, Tablet and Mobile" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:181 +msgid "Enable Notifications:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:196 +msgid "Enable/Disable ThemePunch Notifications in the Admin Notice bar." +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:203 +msgid "Enable Logs:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:218 +msgid "Enable console logs for debugging." +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:228 +msgid "Update" +msgstr "" + +#: ../admin/views/system/dialog-video.php:4 +msgid "Add Video Layout" +msgstr "" + +#: ../admin/views/system/dialog-video.php:12 ../admin/views/templates/slide- +#: general-settings.php:33 ../admin/views/templates/slider-main-options.php:142 .. +#: admin/views/templates/slider-main-options.php:193 .. +#: admin/views/templates/slider-main-options.php:277 .. +#: admin/views/templates/slider-main-options.php:300 +msgid "Source" +msgstr "" + +#: ../admin/views/system/dialog-video.php:13 ../admin/views/templates/slider-main- +#: options.php:2053 +msgid "Sizing" +msgstr "" + +#: ../admin/views/system/dialog-video.php:14 +msgid "Settings" +msgstr "设置" + +#: ../admin/views/system/dialog-video.php:15 ../admin/views/templates/slide-stage. +#: php:32 ../admin/views/templates/slider-main-options.php:2342 .. +#: admin/views/templates/slider-main-options.php:2487 .. +#: admin/views/templates/slider-main-options.php:2643 .. +#: admin/views/templates/slider-main-options.php:2812 +msgid "Visibility" +msgstr "" + +#: ../admin/views/system/dialog-video.php:16 +msgid "Arguments" +msgstr "" + +#: ../admin/views/system/dialog-video.php:26 +msgid "Choose video type" +msgstr "选择视频类型" + +#: ../admin/views/system/dialog-video.php:32 +msgid "HTML5" +msgstr "" + +#: ../admin/views/system/dialog-video.php:36 ../admin/views/system/dialog-video. +#: php:40 ../admin/views/system/dialog-video.php:44 +msgid "From Stream" +msgstr "" + +#: ../admin/views/system/dialog-video.php:51 +msgid "Vimeo ID or URL" +msgstr "" + +#: ../admin/views/system/dialog-video.php:54 ../admin/views/templates/slide- +#: general-settings.php:148 +msgid "example: 30300114" +msgstr "" + +#: ../admin/views/system/dialog-video.php:60 +msgid "YouTube ID or URL" +msgstr "" + +#: ../admin/views/system/dialog-video.php:63 ../admin/views/system/dialog-video. +#: php:74 ../admin/views/system/dialog-video.php:82 ../admin/views/system/dialog- +#: video.php:89 ../admin/views/system/dialog-video.php:96 +msgid "example" +msgstr "例如" + +#: ../admin/views/system/dialog-video.php:69 +msgid "Poster Image Url" +msgstr "" + +#: ../admin/views/system/dialog-video.php:72 +msgid "Set Image" +msgstr "" + +#: ../admin/views/system/dialog-video.php:77 +msgid "Video MP4 Url" +msgstr "" + +#: ../admin/views/system/dialog-video.php:80 ../admin/views/system/dialog-video. +#: php:87 ../admin/views/system/dialog-video.php:94 +msgid "Set Video" +msgstr "" + +#: ../admin/views/system/dialog-video.php:84 +msgid "Video WEBM Url" +msgstr "" + +#: ../admin/views/system/dialog-video.php:91 +msgid "Video OGV Url" +msgstr "" + +#: ../admin/views/system/dialog-video.php:106 +msgid "Full Screen:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:113 ../admin/views/templates/slide- +#: general-settings.php:226 +msgid "Force Cover:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:119 ../admin/views/templates/slide- +#: general-settings.php:231 +msgid "Dotted Overlay:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:122 ../admin/views/templates/slide- +#: general-settings.php:234 ../admin/views/templates/slider-main-options.php:2107 +msgid "none" +msgstr "" + +#: ../admin/views/system/dialog-video.php:123 ../admin/views/templates/slide- +#: general-settings.php:235 ../admin/views/templates/slider-main-options.php:2108 +msgid "2 x 2 Black" +msgstr "" + +#: ../admin/views/system/dialog-video.php:124 ../admin/views/templates/slide- +#: general-settings.php:236 ../admin/views/templates/slider-main-options.php:2109 +msgid "2 x 2 White" +msgstr "" + +#: ../admin/views/system/dialog-video.php:125 ../admin/views/templates/slide- +#: general-settings.php:237 ../admin/views/templates/slider-main-options.php:2110 +msgid "3 x 3 Black" +msgstr "" + +#: ../admin/views/system/dialog-video.php:126 ../admin/views/templates/slide- +#: general-settings.php:238 ../admin/views/templates/slider-main-options.php:2111 +msgid "3 x 3 White" +msgstr "" + +#: ../admin/views/system/dialog-video.php:130 ../admin/views/templates/slide- +#: general-settings.php:242 +msgid "Aspect Ratio:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:133 ../admin/views/templates/slide- +#: general-settings.php:245 +msgid "16:9" +msgstr "" + +#: ../admin/views/system/dialog-video.php:134 ../admin/views/templates/slide- +#: general-settings.php:246 +msgid "4:3" +msgstr "" + +#: ../admin/views/system/dialog-video.php:142 ../admin/views/templates/slide- +#: general-settings.php:265 +msgid "Loop Video:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:145 ../admin/views/system/dialog-video. +#: php:217 ../admin/views/templates/slide-general-settings.php:267 .. +#: admin/views/templates/slide-general-settings.php:900 +msgid "Disable" +msgstr "禁用" + +#: ../admin/views/system/dialog-video.php:146 ../admin/views/templates/slide- +#: general-settings.php:268 +msgid "Loop, Slide is paused" +msgstr "" + +#: ../admin/views/system/dialog-video.php:147 ../admin/views/templates/slide- +#: general-settings.php:269 +msgid "Loop, Slide does not stop" +msgstr "" + +#: ../admin/views/system/dialog-video.php:152 +msgid "Autoplay:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:155 +msgid "Only 1st Time:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:161 +msgid "Stop Other Videos:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:166 ../admin/views/templates/slide- +#: general-settings.php:274 +msgid "Next Slide On End:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:171 ../admin/views/templates/slide- +#: general-settings.php:278 +msgid "Rewind at Slide Start:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:176 +msgid "Hide Controls:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:181 +msgid "Mute:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:186 +msgid "Start at:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:187 +msgid "i.e.: 0:17" +msgstr "" + +#: ../admin/views/system/dialog-video.php:191 +msgid "End at:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:192 +msgid "i.e.: 2:41" +msgstr "" + +#: ../admin/views/system/dialog-video.php:196 +msgid "Show Cover at Pause:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:201 ../admin/views/templates/slide- +#: general-settings.php:289 +msgid "Video Speed:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:203 ../admin/views/templates/slide- +#: general-settings.php:291 +msgid "0.25" +msgstr "" + +#: ../admin/views/system/dialog-video.php:204 ../admin/views/templates/slide- +#: general-settings.php:292 +msgid "0.50" +msgstr "" + +#: ../admin/views/system/dialog-video.php:205 ../admin/views/templates/slide- +#: general-settings.php:293 ../admin/views/templates/slider-main-options.php:2212 +#: ../admin/views/templates/slider-main-options.php:3125 +msgid "1" +msgstr "" + +#: ../admin/views/system/dialog-video.php:206 ../admin/views/templates/slide- +#: general-settings.php:294 +msgid "1.5" +msgstr "" + +#: ../admin/views/system/dialog-video.php:207 ../admin/views/templates/slide- +#: general-settings.php:295 ../admin/views/templates/slider-main-options.php:2213 +msgid "2" +msgstr "" + +#: ../admin/views/system/dialog-video.php:213 +msgid "Video Preload:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:216 ../admin/views/templates/slider- +#: main-options.php:816 +msgid "Auto" +msgstr "" + +#: ../admin/views/system/dialog-video.php:218 +msgid "Metadata" +msgstr "" + +#: ../admin/views/system/dialog-video.php:225 +msgid "Preview Image" +msgstr "" + +#: ../admin/views/system/dialog-video.php:227 +msgid "Image Library" +msgstr "" + +#: ../admin/views/system/dialog-video.php:228 +msgid "Video Thumbnail" +msgstr "" + +#: ../admin/views/system/dialog-video.php:234 +msgid "Disable Mobile:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:239 +msgid "Only Preview on Mobile:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:247 ../admin/views/templates/slide- +#: general-settings.php:299 ../admin/views/templates/slide-general-settings.php:304 +msgid "Arguments:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:253 ../admin/views/system/dialog-video. +#: php:253 +msgid "Add This Video" +msgstr "" + +#: ../admin/views/system/dialog-video.php:253 +msgid "Update Video" +msgstr "" + +#: ../admin/views/system/validation.php:31 +msgid "Username:" +msgstr "" + +#: ../admin/views/system/validation.php:34 +msgid "Your Envato username." +msgstr "" + +#: ../admin/views/system/validation.php:38 +msgid "Envato API Key:" +msgstr "" + +#: ../admin/views/system/validation.php:41 +msgid "" +"You can find the API key by visiting your Envato Account page, then clicking " +"the My Settings tab. At the bottom of the page you will find your accounts " +"API key." +msgstr "" + +#: ../admin/views/system/validation.php:45 +msgid "Purchase code:" +msgstr "" + +#: ../admin/views/system/validation.php:48 +msgid "Please enter your " +msgstr "" + +#: ../admin/views/system/validation.php:48 +msgid "CodeCanyon Slider Revolution purchase code / license key" +msgstr "" + +#: ../admin/views/system/validation.php:48 +msgid ". You can find your key by following the instructions on" +msgstr "" + +#: ../admin/views/system/validation.php:48 +msgid " this page." +msgstr "" + +#: ../admin/views/system/validation.php:54 +msgid "Register" +msgstr "" + +#: ../admin/views/system/validation.php:56 +msgid "Deregister" +msgstr "" + +#: ../admin/views/system/validation.php:61 +msgid "Search for Updates" +msgstr "" + +#: ../admin/views/system/validation.php:68 +msgid "" +"To register the plugin on a different website, click the “Deregister” button " +"here first." +msgstr "" + +#: ../admin/views/system/validation.php:79 +msgid "How to get Support ?" +msgstr "" + +#: ../admin/views/system/validation.php:81 +msgid "Please feel free to contact us via our " +msgstr "" + +#: ../admin/views/system/validation.php:81 +msgid "Support Forum " +msgstr "" + +#: ../admin/views/system/validation.php:81 +msgid "and/or via the " +msgstr "" + +#: ../admin/views/system/validation.php:81 +msgid "Item Disscussion Forum" +msgstr "" + +#: ../admin/views/system/validation.php:87 +msgid "Click Here to get " +msgstr "" + +#: ../admin/views/system/validation.php:87 +msgid "Premium Support and Auto Updates" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:6 +msgid "Main Background" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:7 +msgid "Gerneral Settings" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:8 +msgid "Slide Animation" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:9 +msgid "Link & Seo" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:10 +msgid "Slide Info" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:34 +msgid "Source Settings" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:35 .. +#: admin/views/templates/slide-stage.php:248 ../admin/views/templates/slider- +#: main-options.php:3285 +msgid "Parallax" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:36 +msgid "Ken Burns" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:64 +msgid "Featured Image" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:69 +msgid "Stream Image" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:75 +msgid "Stream Video" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:78 +msgid "Use Cover" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:85 +msgid "Main / Background Image" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:89 +msgid "Change Image" +msgstr "选择图片" + +#: ../admin/views/templates/slide-general-settings.php:97 +msgid "External URL" +msgstr "外部URL" + +#: ../admin/views/templates/slide-general-settings.php:103 +msgid "Get External" +msgstr "外部链接地址" + +#: ../admin/views/templates/slide-general-settings.php:109 +msgid "Transparent" +msgstr "透明" + +#: ../admin/views/templates/slide-general-settings.php:114 +msgid "Solid Colored" +msgstr "纯色" + +#: ../admin/views/templates/slide-general-settings.php:124 +msgid "YouTube Video" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:130 .. +#: admin/views/templates/slide-general-settings.php:146 .. +#: admin/views/templates/slide-general-settings.php:881 +msgid "ID:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:132 +msgid "example: T8--OggjJKQ" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:134 .. +#: admin/views/templates/slide-general-settings.php:150 .. +#: admin/views/templates/slide-general-settings.php:180 +msgid "Cover Image:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:140 +msgid "Vimeo Video" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:156 +msgid "HTML5 Video" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:162 +msgid "MPEG:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:165 .. +#: admin/views/templates/slide-general-settings.php:171 .. +#: admin/views/templates/slide-general-settings.php:177 +msgid "Change Video" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:168 +msgid "WEBM:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:174 +msgid "OGV:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:188 +msgid "Image Source Size:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:205 +msgid "Alt:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:207 .. +#: admin/views/templates/slide-stage.php:1259 +msgid "From Media Library" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:208 .. +#: admin/views/templates/slide-stage.php:1260 +msgid "From Filename" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:209 .. +#: admin/views/templates/slide-stage.php:1261 ../admin/views/templates/slide- +#: stage.php:1729 +msgid "Custom" +msgstr "自定义" + +#: ../admin/views/templates/slide-general-settings.php:215 +msgid "Width:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:219 +msgid "Height:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:252 +msgid "Start At:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:254 +msgid "For Example: 00:17" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:259 +msgid "End At:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:261 +msgid "For Example: 02:17" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:283 +msgid "Mute Video:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:311 +msgid "Background Fit:" +msgstr "背景适合:" + +#: ../admin/views/templates/slide-general-settings.php:322 +msgid "Background Position:" +msgstr "背景位置:" + +#: ../admin/views/templates/slide-general-settings.php:343 +msgid "Background Repeat:" +msgstr "背景重复:" + +#: ../admin/views/templates/slide-general-settings.php:359 +msgid "Parallax Level:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:361 .. +#: admin/views/templates/slide-stage.php:462 +msgid "No Parallax" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:377 .. +#: admin/views/templates/slide-stage.php:479 +msgid "Parallax Feature in Slider Settings is deactivated, parallax will be ignored." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:385 .. +#: admin/views/templates/slider-main-options.php:1727 +msgid "Ken Burns / Pan Zoom:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:390 +msgid "Scale: (in %):" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:391 .. +#: admin/views/templates/slide-general-settings.php:399 .. +#: admin/views/templates/slide-general-settings.php:407 .. +#: admin/views/templates/slide-general-settings.php:415 +msgid "From" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:393 .. +#: admin/views/templates/slide-general-settings.php:401 .. +#: admin/views/templates/slide-general-settings.php:409 .. +#: admin/views/templates/slide-general-settings.php:417 +msgid "To" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:398 +msgid "Horizontal Offsets:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:406 +msgid "Vertical Offsets:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:414 +msgid "Rotation:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:422 .. +#: admin/views/templates/slider-main-options.php:1743 +msgid "Easing:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:462 .. +#: admin/views/templates/slider-main-options.php:1850 +msgid "Duration (in ms):" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:478 +msgid "The title of the slide, will be shown in the slides list." +msgstr "幻灯片的标题,将显示在幻灯片列表中。" + +#: ../admin/views/templates/slide-general-settings.php:484 +msgid "Slide \"Delay\":" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:486 +msgid "" +"A new delay value for the Slide. If no delay defined per slide, the delay " +"defined via Options (9000ms) will be used." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:492 +msgid "Slide State" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:494 +msgid "Published" +msgstr "已发布" + +#: ../admin/views/templates/slide-general-settings.php:495 +msgid "Unpublished" +msgstr "未发布" + +#: ../admin/views/templates/slide-general-settings.php:497 +msgid "" +"The state of the slide. The unpublished slide will be excluded from the " +"slider." +msgstr "幻灯片的状态。未发表的幻灯片将不会使用" + +#: ../admin/views/templates/slide-general-settings.php:510 +msgid "Language" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:521 +msgid "The language of the slide (uses WPML plugin)." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:530 +msgid "Visible from:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:532 +msgid "If set, slide will be visible after the date is reached." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:538 +msgid "Visible until:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:540 +msgid "If set, slide will be visible till the date is reached." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:547 +msgid "Thumbnail:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:565 +msgid "Slide Thumbnail. If not set - it will be taken from the slide image." +msgstr "滑块缩略图。如果没有设置,将会选取幻灯片里的图片" + +#: ../admin/views/templates/slide-general-settings.php:572 +msgid "Save Performance:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:576 +msgid "Slide End Transition will first start when last Layer has been removed." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:716 +msgid "Used Transitions (Order in Loops)" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:723 +msgid "Slot / Box Amount:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:726 +msgid "# of slots/boxes the slide is divided into." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:731 +msgid "Slot Rotation:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:734 +msgid "Start Rotation of Transition (deg)." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:739 +msgid "Animation Duration:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:742 +msgid "The duration of the transition." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:747 +msgid "Easing In:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:787 +msgid "The easing of Appearing transition." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:792 +msgid "Easing Out:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:832 +msgid "The easing of Disappearing transition." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:850 +msgid "Parameter" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:851 +msgid "Max. Chars" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:861 +msgid "Description of Slider:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:864 +msgid "" +"Define a description here to show at the navigation if enabled in Slider " +"Settings" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:873 +msgid "Class:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:875 +msgid "" +"Adds a unique class to the li of the Slide like class=\"rev_special_class\" " +"(add only the classnames, seperated by space)" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:883 +msgid "" +"Adds a unique ID to the li of the Slide like id=\"rev_special_id\" (add only " +"the id)" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:889 +msgid "Custom Fields:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:891 +msgid "" +"Add as many attributes as you wish here. (i.e.: data-layer=\"firstlayer\" data-" +"custom=\"somevalue\")." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:897 +msgid "Enable Link:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:899 +msgid "Enable" +msgstr "启用" + +#: ../admin/views/templates/slide-general-settings.php:902 +msgid "Link the Full Slide to an URL or Action." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:909 +msgid "Link Type:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:911 +msgid "Regular" +msgstr "正常" + +#: ../admin/views/templates/slide-general-settings.php:912 +msgid "To Slide" +msgstr "链接到另一个幻灯片" + +#: ../admin/views/templates/slide-general-settings.php:914 +msgid "Regular - Link to URL, To Slide - Call a Slide Action" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:921 +msgid "Slide Link:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:923 +msgid "" +"A link on the whole slide pic (use {{link}} or {{meta:somemegatag}} in " +"template sliders to link to a post or some other meta)" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:929 +msgid "Link Target:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:931 .. +#: admin/views/templates/slide-stage.php:2273 +msgid "Same Window" +msgstr "同一窗口" + +#: ../admin/views/templates/slide-general-settings.php:932 .. +#: admin/views/templates/slide-stage.php:2274 +msgid "New Window" +msgstr "新窗口" + +#: ../admin/views/templates/slide-general-settings.php:934 +msgid "The target of the slide link." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:942 +msgid "-- Not Chosen --" +msgstr "-- 未选择 --" + +#: ../admin/views/templates/slide-general-settings.php:943 +msgid "-- Next Slide --" +msgstr "-- 下一张滑块 --" + +#: ../admin/views/templates/slide-general-settings.php:944 +msgid "-- Previous Slide --" +msgstr "-- 上一张幻灯片 --" + +#: ../admin/views/templates/slide-general-settings.php:947 +msgid "-- Scroll Below Slider --" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:959 +msgid "Link To Slide:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:970 +msgid "Call Slide Action" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:975 +msgid "Link Sensibility:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:977 +msgid "Front" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:978 +msgid "Back" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:980 +msgid "The z-index position of the link related to layers" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:31 +msgid "Static / Global Layers" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:47 +msgid "Show Layers from Slide:" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:197 +msgid "Add to Templates" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:212 ../admin/views/templates/slide- +#: selector.php:224 +msgid "Add Slide" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:217 +msgid "Add Blank Slide" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:220 +msgid "Add from Template" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:280 +msgid "Slide name should not be empty" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:12 +msgid "Style" +msgstr "样式" + +#: ../admin/views/templates/slide-stage.php:13 +msgid "Advanced Style on/off" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:19 ../admin/views/templates/slide- +#: stage.php:1766 +msgid "Animation" +msgstr "动画" + +#: ../admin/views/templates/slide-stage.php:20 +msgid "Play/Pause Single Layer Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:26 ../admin/views/templates/slide- +#: stage.php:1031 +msgid "Loop Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:27 +msgid "Play/Pause Layer Loop Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:33 +msgid "Behavior" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:36 +msgid "Attributes" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:38 +msgid "Static Layers" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:40 +msgid "Performance" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:56 +msgid "Global Style Editor" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:58 +msgid "Dynamic Styles (Not Editable):" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:68 +msgid "Save Static Styles" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:69 +msgid "Overwrite current static styles?" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:76 +msgid "Caption Style" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:77 +msgid "Style Template" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:79 +msgid "More Style Settings" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:80 +msgid "Reset Style Template" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:84 +msgid "Style Options" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:85 ../admin/views/templates/slide- +#: stage.php:700 ../admin/views/templates/slide-stage.php:875 +msgid "Save" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:87 ../admin/views/templates/slide- +#: stage.php:702 ../admin/views/templates/slide-stage.php:877 +msgid "Rename" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:88 ../admin/views/templates/slide- +#: stage.php:703 ../admin/views/templates/slide-stage.php:878 +msgid "Reset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:99 +msgid "Font Size (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:100 ../admin/views/templates/slide- +#: stage.php:2220 +msgid "Font Size" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:105 +msgid "Line Height (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:106 ../admin/views/templates/slide- +#: stage.php:2221 +msgid "Line Height" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:112 +msgid "White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:126 +msgid "Layer Align Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:127 +msgid "Layer Align Center" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:128 +msgid "Layer Align Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:135 ../admin/views/templates/slide- +#: stage.php:136 +msgid "Horizontal Offset from Aligned Position (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:140 ../admin/views/templates/slide- +#: stage.php:141 +msgid "Vertical Offset from Aligned Position (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:164 ../admin/views/templates/slide- +#: stage.php:165 ../admin/views/templates/slide-stage.php:2222 +msgid "Font Weight" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:179 ../admin/views/templates/slide- +#: stage.php:180 ../admin/views/templates/slide-stage.php:522 .. +#: admin/views/templates/slide-stage.php:523 ../admin/views/templates/slider- +#: main-options.php:1984 ../admin/views/templates/slider-main-options.php:2117 .. +#: admin/views/templates/slider-main-options.php:2221 +msgid "Font Color" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:186 +msgid "Layer Align Top" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:187 +msgid "Layer Align Middle" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:188 +msgid "Layer Align Bottom" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:194 ../admin/views/templates/slide- +#: stage.php:195 ../admin/views/templates/slide-stage.php:196 +msgid "Layer Width (px). Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:197 +msgid "Video Width (px). Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:200 ../admin/views/templates/slide- +#: stage.php:201 +msgid "Layer Height (px). Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:202 +msgid "Layer Height (px) Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:203 +msgid "Video Height (px). Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:206 +msgid "Cover Mode" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:217 +msgid "Auto Linebreak (on/off - White Space:normal / nowrap). " +msgstr "" + +#: ../admin/views/templates/slide-stage.php:222 +msgid "Keep Aspect Ratio (on/off)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:227 +msgid "Reset original size" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:242 ../admin/views/templates/slide- +#: stage.php:510 ../admin/views/templates/slider-main-options.php:4321 +msgid "Font" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:243 ../admin/views/templates/slide- +#: stage.php:511 ../admin/views/templates/slide-stage.php:1975 .. +#: admin/views/templates/slide-stage.php:2041 ../admin/views/templates/slide- +#: stage.php:2123 +msgid "Background" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:245 ../admin/views/templates/slide- +#: stage.php:513 +msgid "Transform" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:246 ../admin/views/templates/slide- +#: stage.php:514 ../admin/views/templates/slide-stage.php:752 .. +#: admin/views/templates/slide-stage.php:928 ../admin/views/templates/slider- +#: main-options.php:3161 +msgid "Rotation" +msgstr "旋转" + +#: ../admin/views/templates/slide-stage.php:247 ../admin/views/templates/slide- +#: stage.php:757 ../admin/views/templates/slide-stage.php:933 +msgid "Perspective" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:249 +msgid "Corners" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:251 ../admin/views/templates/slide- +#: stage.php:641 +msgid "Hover" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:257 ../admin/views/templates/slide- +#: stage.php:258 +msgid "Font Opacity" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:262 +msgid "Italic Font" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:263 +msgid "Italic Font On/Off" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:267 ../admin/views/templates/slide- +#: stage.php:268 ../admin/views/templates/slide-stage.php:531 .. +#: admin/views/templates/slide-stage.php:532 +msgid "Font Decoration" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:278 ../admin/views/templates/slide- +#: stage.php:279 +msgid "Text Align" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:281 ../admin/views/templates/slider- +#: main-options.php:2174 ../admin/views/templates/slider-main-options.php:2389 .. +#: admin/views/templates/slider-main-options.php:2398 .. +#: admin/views/templates/slider-main-options.php:2418 .. +#: admin/views/templates/slider-main-options.php:2428 .. +#: admin/views/templates/slider-main-options.php:2533 .. +#: admin/views/templates/slider-main-options.php:2541 .. +#: admin/views/templates/slider-main-options.php:2703 .. +#: admin/views/templates/slider-main-options.php:2711 .. +#: admin/views/templates/slider-main-options.php:2871 .. +#: admin/views/templates/slider-main-options.php:2879 .. +#: admin/views/templates/slider-main-options.php:3206 .. +#: admin/views/templates/slider-main-options.php:3214 +msgid "Center" +msgstr "居中" + +#: ../admin/views/templates/slide-stage.php:290 ../admin/views/templates/slide- +#: stage.php:291 ../admin/views/templates/slide-stage.php:542 .. +#: admin/views/templates/slide-stage.php:543 +msgid "Background Color" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:295 ../admin/views/templates/slide- +#: stage.php:296 ../admin/views/templates/slide-stage.php:547 .. +#: admin/views/templates/slide-stage.php:548 +msgid "Background Opacity" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:300 ../admin/views/templates/slide- +#: stage.php:2190 ../admin/views/templates/slide-stage.php:2192 +msgid "Padding" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:301 ../admin/views/templates/slide- +#: stage.php:2193 ../admin/views/templates/slider-main-options.php:3116 +msgid "Padding Top" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:302 ../admin/views/templates/slide- +#: stage.php:2194 +msgid "Padding Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:303 ../admin/views/templates/slide- +#: stage.php:2195 ../admin/views/templates/slider-main-options.php:3119 +msgid "Padding Bottom" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:304 ../admin/views/templates/slide- +#: stage.php:2196 +msgid "Padding Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:310 ../admin/views/templates/slide- +#: stage.php:311 ../admin/views/templates/slide-stage.php:553 .. +#: admin/views/templates/slide-stage.php:554 ../admin/views/templates/slide- +#: stage.php:2008 ../admin/views/templates/slide-stage.php:2073 .. +#: admin/views/templates/slide-stage.php:2140 +msgid "Border Color" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:315 ../admin/views/templates/slide- +#: stage.php:316 ../admin/views/templates/slide-stage.php:557 .. +#: admin/views/templates/slide-stage.php:558 ../admin/views/templates/slide- +#: stage.php:2012 ../admin/views/templates/slide-stage.php:2013 .. +#: admin/views/templates/slide-stage.php:2077 ../admin/views/templates/slide- +#: stage.php:2078 ../admin/views/templates/slide-stage.php:2144 .. +#: admin/views/templates/slide-stage.php:2145 +msgid "Border Opacity" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:320 ../admin/views/templates/slide- +#: stage.php:321 ../admin/views/templates/slide-stage.php:564 .. +#: admin/views/templates/slide-stage.php:565 +msgid "Border Style" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:331 ../admin/views/templates/slide- +#: stage.php:332 ../admin/views/templates/slide-stage.php:575 .. +#: admin/views/templates/slide-stage.php:576 ../admin/views/templates/slide- +#: stage.php:2017 ../admin/views/templates/slide-stage.php:2018 .. +#: admin/views/templates/slide-stage.php:2082 ../admin/views/templates/slide- +#: stage.php:2083 ../admin/views/templates/slide-stage.php:2149 .. +#: admin/views/templates/slide-stage.php:2150 +msgid "Border Width" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:336 ../admin/views/templates/slide- +#: stage.php:580 +msgid "Border Radius (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:337 ../admin/views/templates/slide- +#: stage.php:581 +msgid "Border Radius Top Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:338 ../admin/views/templates/slide- +#: stage.php:582 +msgid "Border Radius Top Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:339 ../admin/views/templates/slide- +#: stage.php:583 +msgid "Border Radius Bottom Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:340 ../admin/views/templates/slide- +#: stage.php:584 +msgid "Border Radius Bottom Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:346 ../admin/views/templates/slide- +#: stage.php:347 ../admin/views/templates/slide-stage.php:614 .. +#: admin/views/templates/slide-stage.php:615 +msgid "Rotation on X axis (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:350 ../admin/views/templates/slide- +#: stage.php:351 ../admin/views/templates/slide-stage.php:618 .. +#: admin/views/templates/slide-stage.php:619 +msgid "Rotation on Y axis (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:355 ../admin/views/templates/slide- +#: stage.php:356 ../admin/views/templates/slide-stage.php:623 .. +#: admin/views/templates/slide-stage.php:624 +msgid "Rotation on Z axis (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:360 ../admin/views/templates/slide- +#: stage.php:361 +msgid "Horizontal Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:364 ../admin/views/templates/slide- +#: stage.php:365 +msgid "Vertical Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:371 ../admin/views/templates/slide- +#: stage.php:589 +#, php-format +msgid "Opacity. (1 = 100% Visible / 0.5 = 50% opacaity / 0 = transparent)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:372 ../admin/views/templates/slide- +#: stage.php:590 +#, php-format +msgid "Opacity (1 = 100% Visible / 0.5 = 50% opacaity / 0 = transparent)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:376 ../admin/views/templates/slide- +#: stage.php:377 ../admin/views/templates/slide-stage.php:594 .. +#: admin/views/templates/slide-stage.php:595 +msgid "X Scale 1 = 100%, 0.5=50%... (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:381 ../admin/views/templates/slide- +#: stage.php:382 ../admin/views/templates/slide-stage.php:598 .. +#: admin/views/templates/slide-stage.php:599 +msgid "Y Scale 1 = 100%, 0.5=50%... (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:386 ../admin/views/templates/slide- +#: stage.php:387 ../admin/views/templates/slide-stage.php:603 .. +#: admin/views/templates/slide-stage.php:604 +msgid "X Skew (+/- px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:391 ../admin/views/templates/slide- +#: stage.php:392 ../admin/views/templates/slide-stage.php:607 .. +#: admin/views/templates/slide-stage.php:608 +msgid "Y Skew (+/- px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:398 ../admin/views/templates/slide- +#: stage.php:630 +msgid "Template" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:399 ../admin/views/templates/slide- +#: stage.php:631 ../admin/views/templates/slider-main-options.php:849 .. +#: admin/views/templates/slider-main-options.php:880 .. +#: admin/views/templates/slider-main-options.php:913 .. +#: admin/views/templates/slider-main-options.php:947 +msgid "Layer" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:407 +msgid "Layer Hover" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:413 ../admin/views/templates/slide- +#: stage.php:414 +msgid "Hover Animation Speed (in ms)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:419 ../admin/views/templates/slide- +#: stage.php:420 +msgid "Hover Animation Easing" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:430 ../admin/views/templates/slide- +#: stage.php:431 +msgid "Mouse Cursor" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:447 ../admin/views/templates/slide- +#: stage.php:448 +msgid "Animation Perspective (default 600)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:452 ../admin/views/templates/slide- +#: stage.php:453 +msgid "Z Offset (+/- px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:459 +msgid "Parallax Depth Level." +msgstr "" + +#: ../admin/views/templates/slide-stage.php:487 +msgid "Sharp Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:490 ../admin/views/templates/slide- +#: stage.php:499 +msgid "No Corner" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:491 ../admin/views/templates/slide- +#: stage.php:500 +msgid "Sharp" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:492 ../admin/views/templates/slide- +#: stage.php:501 +msgid "Sharp Reversed" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:496 +msgid "Sharp Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:527 ../admin/views/templates/slide- +#: stage.php:528 +msgid "Font Hover Opacity" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:640 +msgid "Idle" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:645 +msgid "COPY" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:647 +msgid "Copy From Idle" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:648 +msgid "Copy From Hover" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:649 +msgid "Copy From In Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:650 +msgid "Copy From Out Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:667 +msgid "Hover CSS" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:684 ../admin/views/templates/slide- +#: stage.php:856 ../admin/views/templates/slider-main-options.php:1275 +msgid "Advanced Settings" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:688 ../admin/views/templates/slide- +#: stage.php:689 ../admin/views/templates/slide-stage.php:863 .. +#: admin/views/templates/slide-stage.php:864 +msgid "Animation Template" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:699 ../admin/views/templates/slide- +#: stage.php:874 +msgid "Template Options" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:711 ../admin/views/templates/slide- +#: stage.php:712 ../admin/views/templates/slide-stage.php:888 .. +#: admin/views/templates/slide-stage.php:889 +msgid "Animation Easing" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:722 ../admin/views/templates/slide- +#: stage.php:723 ../admin/views/templates/slide-stage.php:899 .. +#: admin/views/templates/slide-stage.php:900 +msgid "Animation Speed (in ms)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:727 ../admin/views/templates/slide- +#: stage.php:728 ../admin/views/templates/slide-stage.php:904 .. +#: admin/views/templates/slide-stage.php:905 +msgid "Split Animaton Text (will not respect Html Markups !)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:729 ../admin/views/templates/slide- +#: stage.php:906 +msgid "No Split" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:730 ../admin/views/templates/slide- +#: stage.php:907 +msgid "Char Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:731 ../admin/views/templates/slide- +#: stage.php:908 +msgid "Word Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:732 ../admin/views/templates/slide- +#: stage.php:909 +msgid "Line Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:736 ../admin/views/templates/slide- +#: stage.php:737 ../admin/views/templates/slide-stage.php:913 .. +#: admin/views/templates/slide-stage.php:914 +msgid "Animation Delay between Splitted Elements" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:750 ../admin/views/templates/slide- +#: stage.php:926 +msgid "Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:753 ../admin/views/templates/slide- +#: stage.php:929 ../admin/views/templates/slider-main-options.php:3180 +msgid "Scale" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:754 ../admin/views/templates/slide- +#: stage.php:930 +msgid "Skew" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:755 ../admin/views/templates/slide- +#: stage.php:931 +msgid "Masking" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:756 ../admin/views/templates/slide- +#: stage.php:932 +msgid "Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:768 +msgid "" +"Mask is not available due Style Transitions. Please remove any Rotation, " +"Scale or skew effect form Idle and Hover settings" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1037 ../admin/views/templates/slide- +#: stage.php:1725 ../admin/views/templates/slide-stage.php:2244 +msgid "Disabled" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1038 +msgid "Pendulum" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1039 +msgid "Rotate" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1040 +msgid "Slideloop" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1041 +msgid "Pulse" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1042 +msgid "Wave" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1047 +msgid "Loop Speed (sec) - 0.3 = 300ms" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1048 +msgid "Loop Speed (ms)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1057 ../admin/views/templates/slide- +#: stage.php:1058 +msgid "Loop Easing" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1071 +msgid "Loop Parameters" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1077 ../admin/views/templates/slide- +#: stage.php:1078 +msgid "2D Rotation start deg." +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1081 ../admin/views/templates/slide- +#: stage.php:1082 +msgid "2D Rotation end deg." +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1087 ../admin/views/templates/slide- +#: stage.php:1088 +msgid "2D Rotation X Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1091 ../admin/views/templates/slide- +#: stage.php:1092 +msgid "2D Rotation Y Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1096 +msgid "Start" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1098 ../admin/views/templates/slide- +#: stage.php:1099 +msgid "Start X Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1101 ../admin/views/templates/slide- +#: stage.php:1102 +msgid "Start Y Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1106 +msgid "End" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1108 ../admin/views/templates/slide- +#: stage.php:1109 +msgid "End X Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1111 ../admin/views/templates/slide- +#: stage.php:1112 +msgid "End Y Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1117 ../admin/views/templates/slide- +#: stage.php:1119 +msgid "Zoom Start" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1121 ../admin/views/templates/slide- +#: stage.php:1123 +msgid "Zoom End" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1129 +msgid "Start Angle" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1133 +msgid "Radius" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1135 +msgid "Radius of Rotation / Pendulum" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1143 +msgid "Lazy Loading" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1146 ../admin/views/templates/slide- +#: stage.php:1155 +msgid "Default Setting" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1147 +msgid "Force Lazy Loading" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1148 +msgid "Ignore Lazy Loading" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1152 +msgid "Source Type" +msgstr "源类型" + +#: ../admin/views/templates/slide-stage.php:1174 ../admin/views/templates/slide- +#: stage.php:2337 +msgid "Animation Timing" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1177 ../admin/views/templates/slide- +#: stage.php:2340 +msgid "In and Out Animation Default" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1178 ../admin/views/templates/slide- +#: stage.php:2341 +msgid "In Animation Default and Out Animation Wait for Trigger" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1179 ../admin/views/templates/slide- +#: stage.php:2342 +msgid "Wait for Trigger" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1183 ../admin/views/templates/slide- +#: stage.php:2345 +msgid "Trigger Memory" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1186 ../admin/views/templates/slide- +#: stage.php:2348 +msgid "Reset Animation and Trigger States every loop" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1187 ../admin/views/templates/slide- +#: stage.php:2349 +msgid "Keep last selected State" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1227 +msgid "ID" +msgstr "ID" + +#: ../admin/views/templates/slide-stage.php:1234 +msgid "Classes" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1248 +msgid "Rel" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1256 +msgid "Alt" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1269 +msgid "Internal Classes:" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1285 +msgid "Layer Type:" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1305 +msgid "Visibility on Devices" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1327 +msgid "Hide 'Under' Width" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1333 +msgid "Only on Slider Hover" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1351 +msgid "Auto Responsive" +msgstr "自动适应" + +#: ../admin/views/templates/slide-stage.php:1357 +msgid "Child Elements Responsive" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1363 +msgid "Align" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1366 +msgid "Grid Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1367 +msgid "Slide Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1372 +msgid "Responsive Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1396 +msgid "Static Layers will be shown on every slide in template sliders" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1403 +msgid "Start on Slide" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1428 +msgid "End on Slide" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1525 +msgid "Image Layer Title " +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1525 +msgid "(only for internal usage):" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1542 +msgid "Add a New Layer" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1545 +msgid "Text/Html" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1546 +msgid "Image" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1547 +msgid "Video" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1548 +msgid "Button" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1549 +msgid "Shape" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1555 +msgid "Quick Layer Selector" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1563 +msgid "Slide contains no layers" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1624 +msgid "Delete All Layers" +msgstr "删除所有幻灯片" + +#: ../admin/views/templates/slide-stage.php:1630 +msgid "Desktop" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1631 ../admin/views/templates/slider- +#: main-options.php:867 +msgid "Notebook" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1632 ../admin/views/templates/slider- +#: main-options.php:901 +msgid "Tablet" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1633 ../admin/views/templates/slider- +#: main-options.php:935 ../admin/views/templates/slider-main-options.php:2055 +msgid "Mobile" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1723 +msgid "Helper Grid:" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1732 +msgid "Snap to:" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1734 ../admin/views/templates/slider- +#: main-options.php:3420 ../admin/views/templates/slider-main-options.php:3514 +msgid "None" +msgstr "空" + +#: ../admin/views/templates/slide-stage.php:1735 +msgid "Help Lines" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1736 +msgid "Layers" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1750 +msgid "PLAY" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1779 +msgid "DragMe" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1819 +msgid "Add Button Layer" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1825 +msgid "Click on Element to add it" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1829 +msgid "Buttons" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1831 ../admin/views/templates/slide- +#: stage.php:1832 ../admin/views/templates/slide-stage.php:1833 .. +#: admin/views/templates/slide-stage.php:1836 ../admin/views/templates/slide- +#: stage.php:1837 ../admin/views/templates/slide-stage.php:1838 .. +#: admin/views/templates/slide-stage.php:1841 ../admin/views/templates/slide- +#: stage.php:1842 ../admin/views/templates/slide-stage.php:1843 .. +#: admin/views/templates/slide-stage.php:1846 ../admin/views/templates/slide- +#: stage.php:1847 ../admin/views/templates/slide-stage.php:1848 .. +#: admin/views/templates/slide-stage.php:1851 ../admin/views/templates/slide- +#: stage.php:1852 ../admin/views/templates/slide-stage.php:1853 .. +#: admin/views/templates/slide-stage.php:1856 ../admin/views/templates/slide- +#: stage.php:1857 ../admin/views/templates/slide-stage.php:1858 +msgid "Click Here" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1860 +msgid "Predefined Elements" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1971 +msgid "Idle State" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1990 ../admin/views/templates/slide- +#: stage.php:2054 ../admin/views/templates/slide-stage.php:2219 +msgid "Color" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1993 ../admin/views/templates/slide- +#: stage.php:2058 +msgid "Color 2" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2024 +msgid "Text / Icon" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2037 +msgid "Hover State" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2090 +msgid "Text" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2103 +msgid "Add Shape Layer" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2109 +msgid "Click your Shape below to add it" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2119 +msgid "Shape Settings" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2168 ../admin/views/templates/slider- +#: main-options.php:2367 ../admin/views/templates/slider-main-options.php:2378 .. +#: admin/views/templates/slider-main-options.php:2512 .. +#: admin/views/templates/slider-main-options.php:2523 .. +#: admin/views/templates/slider-main-options.php:2669 .. +#: admin/views/templates/slider-main-options.php:2680 .. +#: admin/views/templates/slider-main-options.php:2837 .. +#: admin/views/templates/slider-main-options.php:2848 +msgid "Width" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2170 ../admin/views/templates/slider- +#: main-options.php:821 +msgid "Full-Width" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2178 +msgid "Height" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2180 +msgid "Full-Height" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2205 +msgid "Apply Styles to Selection" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2223 +msgid "Advanced Styles will alwys be applied to all Device Sizes." +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2238 +msgid "Click" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2239 +msgid "Mouse Enter" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2240 +msgid "Mouse Leave" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2245 +msgid "Simple Link" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2246 +msgid "Jump to Slide" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2247 ../admin/views/templates/slider- +#: main-options.php:3641 +msgid "Next Slide" +msgstr "下一张幻灯片" + +#: ../admin/views/templates/slide-stage.php:2248 ../admin/views/templates/slider- +#: main-options.php:3637 +msgid "Previous Slide" +msgstr "上一张幻灯片" + +#: ../admin/views/templates/slide-stage.php:2249 ../admin/views/templates/slider- +#: main-options.php:3629 +msgid "Pause Slider" +msgstr "暂停滑块" + +#: ../admin/views/templates/slide-stage.php:2250 +msgid "Play Slider" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2251 +msgid "Toggle Slider" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2252 +msgid "CallBack" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2253 +msgid "Scroll Below Slider" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2254 +msgid "Start Layer \"in\" Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2255 +msgid "Start Layer \"out\" Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2261 +msgid "Toggle Layer Class" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2266 +msgid "Link Url" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2270 +msgid "Link Target" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2277 +msgid "Link Type" +msgstr "链接类型" + +#: ../admin/views/templates/slide-stage.php:2280 +msgid "jQuery Link" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2281 +msgid "a Tag Link" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2287 +msgid "Jump To" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2296 +msgid "Scroll Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2303 +msgid "Function" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2309 +msgid "Target" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2313 +msgid "Delay" +msgstr "延迟时间" + +#: ../admin/views/templates/slide-stage.php:2315 ../admin/views/templates/slider- +#: main-options.php:1620 ../admin/views/templates/slider-main-options.php:1626 .. +#: admin/views/templates/slider-main-options.php:1645 .. +#: admin/views/templates/slider-main-options.php:1889 .. +#: admin/views/templates/slider-main-options.php:1895 .. +#: admin/views/templates/slider-main-options.php:2353 .. +#: admin/views/templates/slider-main-options.php:2358 .. +#: admin/views/templates/slider-main-options.php:2498 .. +#: admin/views/templates/slider-main-options.php:2503 .. +#: admin/views/templates/slider-main-options.php:2655 .. +#: admin/views/templates/slider-main-options.php:2660 .. +#: admin/views/templates/slider-main-options.php:2824 .. +#: admin/views/templates/slider-main-options.php:2828 .. +#: admin/views/templates/slider-main-options.php:3318 +msgid "ms" +msgstr "毫秒(ms)" + +#: ../admin/views/templates/slide-stage.php:2320 +msgid "at Start" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2322 +msgid "Play In Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2323 +msgid "Keep Hidden" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2330 +msgid "Class" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:25 +msgid "Edit Slider" +msgstr "编辑滑块" + +#: ../admin/views/templates/slider-main-options.php:25 .. +#: admin/views/templates/sliders-list.php:184 +msgid "New Slider" +msgstr "新建滑块" + +#: ../admin/views/templates/slider-main-options.php:36 +msgid "Content Source" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:43 +msgid "Default Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:48 +msgid "Post-Based Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:53 +msgid "Specific Posts" +msgstr "特定文章" + +#: ../admin/views/templates/slider-main-options.php:58 +msgid "Flickr Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:63 +msgid "Instagram Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:68 +msgid "Woo Commerce Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:73 +msgid "Twitter Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:78 +msgid "Facebook Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:83 +msgid "YouTube Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:88 +msgid "Vimeo Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:104 +msgid "Coming Soon!" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:112 +msgid "Slides (max 33)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:113 .. +#: admin/views/templates/slider-main-options.php:134 +msgid "Display this number of photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:115 .. +#: admin/views/templates/slider-main-options.php:251 +msgid "Access Token" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:116 +msgid "Put in your Instagram Access Token" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:119 +msgid "" +"Get your Instagram Access Token here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:123 +msgid "Instagram User ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:124 +msgid "Put in the Instagram User ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:126 +msgid "" +"Find the Instagram User ID here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:133 .. +#: admin/views/templates/slider-main-options.php:220 +msgid "Slides (max 500)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:136 +msgid "Flickr API Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:137 +msgid "Put in your Flickr API Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:139 +msgid "" +"Read here how to receive your Flickr API key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:144 +msgid "Display a user's public photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:144 +msgid "User Public Photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:145 +msgid "Display a certain photoset from a user" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:145 +msgid "User Photoset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:146 +msgid "Display a gallery" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:147 +msgid "Display a group's photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:147 +msgid "Groups' Photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:151 +msgid "Flickr User Url" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:152 +msgid "Put in the URL of the flickr User" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:157 +msgid "Select Photoset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:159 +msgid "Select the photoset to pull the data from " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:165 +msgid "Flickr Gallery Url" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:166 +msgid "Put in the URL of the flickr Gallery" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:171 +msgid "Flickr Group Url" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:172 +msgid "Put in the URL of the flickr Group" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:180 +msgid "Slides (max 25)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:181 +msgid "Display this number of posts" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:183 .. +#: admin/views/templates/slider-main-options.php:223 +msgid "Cache (sec)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:184 .. +#: admin/views/templates/slider-main-options.php:224 +msgid "Cache the stream for x seconds" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:188 +msgid "Facebook Page" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:189 +msgid "Put in the URL/ID of the Facebook page" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:195 .. +#: admin/views/templates/slider-main-options.php:303 +msgid "Album" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:196 +msgid "Timeline" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:201 +msgid "Select Album" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:203 +msgid "Select the album to pull the data from " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:208 +msgid "App ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:209 +msgid "Put in the Facebook App ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:212 +msgid "App Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:213 +msgid "Put in the Facebook App secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:221 +msgid "Display this number of tweets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:227 +msgid "Twitter Name @" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:228 +msgid "Put in the Twitter Account to stream from" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:231 +msgid "Text Tweets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:235 +msgid "Retweets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:239 +msgid "Replies" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:244 +msgid "Consumer Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:245 +msgid "Put in your Twitter Consumer Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:247 +msgid "Consumer Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:248 +msgid "Put in your Twitter Consumer Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:252 +msgid "Put in your Twitter Access Token" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:255 +msgid "Access Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:256 +msgid "Put in your Twitter Access Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:258 +msgid "" +"Please register " +"your application with Twitter to get the values" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:264 +msgid "Slides (max 50)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:265 .. +#: admin/views/templates/slider-main-options.php:298 +msgid "Display this number of videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:267 +msgid "Youtube API Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:268 +msgid "Put in your YouTube API Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:271 +msgid "" +"Find information about the YouTube API key here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:274 +msgid "Channel ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:275 +msgid "Put in the ID of the YouTube channel" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:279 +msgid "Display the channel´s videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:279 .. +#: admin/views/templates/slider-main-options.php:305 .. +#: admin/views/templates/slider-main-options.php:323 +msgid "Channel" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:280 +msgid "Display a playlist" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:280 +msgid "Playlist" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:285 +msgid "Select Playlist" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:291 +msgid "" +"See how to find the Youtube channel ID here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:297 +msgid "Slides (max 60)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:302 +msgid "Display the user's videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:302 .. +#: admin/views/templates/slider-main-options.php:311 +msgid "User" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:303 +msgid "Display an album" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:304 +msgid "Display a group's videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:304 .. +#: admin/views/templates/slider-main-options.php:315 +msgid "Group" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:305 +msgid "Display a channel's videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:312 +msgid "Either the shortcut URL or ID of the user" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:316 +msgid "Either the shortcut URL or ID of the group" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:319 +msgid "Album ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:320 +msgid "The ID of the album" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:324 +msgid "Either the shortcut URL of the channel" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:332 +msgid "Specific Posts List:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:336 +msgid "Post Types:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:378 +msgid "Post Categories:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:404 +msgid "Filter Events By:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:418 +msgid "Sort Posts By:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:420 +msgid "Post ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:421 +msgid "Date" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:423 +msgid "Slug" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:424 +msgid "Author" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:425 +msgid "Last Modified" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:426 +msgid "Number Of Comments" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:427 +msgid "Random" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:428 +msgid "Unsorted" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:429 +msgid "Custom Order" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:445 +msgid "Sort Direction:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:448 +msgid "Descending" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:450 +msgid "Ascending" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:454 +msgid "Max Posts Per Slider:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:458 +msgid "Limit The Excerpt To:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:470 +msgid "Slider Title & ShortCode" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:475 +msgid "Enter your Slider Name here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:477 +msgid "The title of the slider, example: Slider 1" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:481 +msgid "Enter your Slider Alias here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:483 +msgid "The alias for embedding your slider, example: slider1" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:489 +msgid "Place the shortcode where you want to show the slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:503 +msgid "Select a Slider Type" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:508 +msgid "Standard Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:513 +msgid "Hero Scene" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:518 +msgid "Carousel Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:522 +msgid "Load a Preset from this Slider Type" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:530 +msgid "Save Current Settings as Preset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:807 +msgid "Slide Layout" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:826 +msgid "Full-Screen" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:836 +msgid "Desktop Large" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:836 +msgid "Max" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:857 .. +#: admin/views/templates/slider-main-options.php:888 .. +#: admin/views/templates/slider-main-options.php:921 .. +#: admin/views/templates/slider-main-options.php:956 +msgid "Layer Grid Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:862 +msgid "Specify a layer grid size above" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:893 .. +#: admin/views/templates/slider-main-options.php:926 .. +#: admin/views/templates/slider-main-options.php:961 +msgid "Custom Grid Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:970 +msgid "Show Advanced Size Options" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:977 +msgid "FullScreen Align Force" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:979 +msgid "Layers align within the full slider instead of the layer grid." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:983 +msgid "Increase/Decrease Fullscreen Height" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:988 +msgid "Containers" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:990 +msgid "" +"Example: #header or .header, .footer, #somecontainer | Height of Slider will " +"be decreased with the height of these Containers to fit perfect in the " +"screen." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:996 +msgid "PX or %" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:998 +msgid "" +"Decrease/Increase height of Slider. Can be used with px and %. " +"Positive/Negative values allowed. Example: 40px or 10%" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1004 .. +#: admin/views/templates/slider-main-options.php:1028 +msgid "Min. Height" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1006 +msgid "The minimum height of the Slider in FullScreen mode." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1014 +msgid "Overflow Hidden" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1017 +msgid "" +"Adds overflow:hidden to the slider wrapping container which will hide / cut " +"any overlapping elements. Mostly used in Carousel Sliders." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1021 +msgid "Respect Aspect Ratio" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1024 +msgid "" +"It will keep aspect ratio and ignore max height of Layer Grid by upscaling. " +"Layer Area will be vertical centered." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1030 +msgid "The minimum height of the Slider in FullWidth or Auto mode." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1224 +msgid "Force Full Width:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1270 +msgid "Customize, Build & Implement" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1276 +msgid "" +"Go for further customization using the advanced settings on the right of " +"this configuration page." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1278 +msgid "Show Advanced Options" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1283 +msgid "Start Building Slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1284 +msgid "" +"Our drag and drop editor will make creating slide content an absolut breeze. " +"This is where the magic happens!" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1289 .. +#: admin/views/templates/slider-main-options.php:4286 .. +#: admin/views/templates/slides.php:8 +msgid "Edit Slides" +msgstr "编辑幻灯片" + +#: ../admin/views/templates/slider-main-options.php:1297 +msgid "Implement your Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1298 +msgid "" +"There are several ways to add your slider to your wordpress post / page / " +"etc." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1305 .. +#: admin/views/templates/slider-main-options.php:4272 +msgid "Save Settings" +msgstr "保存设置" + +#: ../admin/views/templates/slider-main-options.php:1306 .. +#: admin/views/templates/slider-main-options.php:4273 +msgid "updating..." +msgstr "更新中..." + +#: ../admin/views/templates/slider-main-options.php:1308 .. +#: admin/views/templates/slider-main-options.php:4277 +msgid "Delete Slider" +msgstr "删除滑块" + +#: ../admin/views/templates/slider-main-options.php:1310 +msgid "Preview Slider" +msgstr "预览滑块" + +#: ../admin/views/templates/slider-main-options.php:1329 +msgid "Custom CSS / Javascript" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1332 +msgid "Custom CSS" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1336 +msgid "Custom JavaScript" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1588 +msgid "Slideshow" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1589 +msgid "Defaults" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1590 +msgid "Progress Bar" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1591 +msgid "1st Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1592 .. +#: admin/views/templates/slider-main-options.php:2315 +msgid "Misc." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1602 +msgid "" +"Show multi language controls across the slider. Only available when wpml " +"plugin exists." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1602 +msgid "Use Multi Language (WPML)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1610 +msgid "" +"Call next slide when inactive browser tab is focused again. Use this for " +"avoid dissorted layers and broken timeouts after bluring the browser tab." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1610 +msgid "Next Slide on Focus" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1618 +msgid "" +"The time one slide stays on the screen in Milliseconds. This is a Default " +"Global value. Can be adjusted slide to slide also in the slide editor." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1618 +msgid "Default Slide Duration" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1624 +msgid "Sets a delay before the Slider gets initialized" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1624 +msgid "Initialization Delay" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1629 +msgid "Default transition by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1629 +msgid "Transitions" +msgstr "过渡" + +#: ../admin/views/templates/slider-main-options.php:1643 +msgid "Default transition duration by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1643 +msgid "Animation Duration" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1652 +msgid "Default main image source size by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1652 +msgid "Image Source Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1668 +msgid "Default background size by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1668 .. +#: admin/views/templates/slider-main-options.php:2133 +msgid "Background Fit" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1690 +msgid "Default background position by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1690 .. +#: admin/views/templates/slider-main-options.php:2150 +msgid "Background Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1716 +msgid "Default background repeat by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1716 .. +#: admin/views/templates/slider-main-options.php:2141 +msgid "Background Repeat" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1727 +msgid "Default Ken/Burn setting by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1738 +msgid "Start Fit: (in %):" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1815 +msgid "End Fit: (in %):" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1820 +msgid "Start Offset X:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1825 +msgid "Start Offset Y:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1830 .. +#: admin/views/templates/slider-main-options.php:1840 .. +#: admin/views/templates/slider-main-options.php:1845 +msgid "End Offset Y:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1835 +msgid "End Offset X:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1855 +msgid "Overwrite Selected Settings on all Slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1864 +msgid "" +"Start from a different slide instead of the first slide. I.e. good for " +"preview / edit mode." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1864 +msgid "Alternative 1st Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1868 +msgid "" +"If active, it will overwrite the first slide transition. Use it to get " +"special transition for the first slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1868 +msgid "First Transition Active" +msgstr "当前的第一个过度" + +#: ../admin/views/templates/slider-main-options.php:1873 +msgid "First slide transition type" +msgstr "第一张幻灯片过渡类型" + +#: ../admin/views/templates/slider-main-options.php:1873 +msgid "Transition Type" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1887 +msgid "First slide transition duration." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1887 +msgid "Transition Duration" +msgstr "过渡时间" + +#: ../admin/views/templates/slider-main-options.php:1893 +msgid "The number of slots or boxes the slide is divided into." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1893 +msgid "Transition Slot Amount" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1904 +msgid "Stops the Timer when mouse is hovering the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1904 +msgid "Stop Slide On Hover" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1909 +msgid "Stops the slideshow after the predefined loop amount at the predefined slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1909 +msgid "Stop Slider After ..." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1915 +msgid "Stops the slider after certain amount of loops. 0 related to the first loop." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1915 +msgid "Amount of Loops" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1920 +msgid "Stops the slider at the given slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1920 +msgid "At Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1926 +msgid "Randomize the order of the slides at every Page reload." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1926 +msgid "Shuffle / Random Mode" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1931 +msgid "" +"If only one Slide is in the Slider, you can choose wether the Slide should " +"loop or if it should stop. If only one Slide exist, slide will be duplicated " +"!" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1931 +msgid "Loop Single Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1937 +msgid "Allow to stop the Slider out of viewport." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1937 +msgid "Stop Slider Out of ViewPort" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1942 +msgid "Out Of ViewPort:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1944 +msgid "Wait" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1945 +msgid "Pause" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1949 +msgid "Min. Size of Slider must be in Viewport before slide starts again." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1949 +msgid "Area out of ViewPort:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1951 .. +#: admin/views/templates/slider-main-options.php:3111 .. +#: admin/views/templates/slider-main-options.php:3195 +msgid "%" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1959 +msgid "Enable / disable progress var" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1959 +msgid "Progress Bar Active" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1963 +msgid "Position of the progress bar." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1963 +msgid "Progress Bar Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1971 +msgid "The height of the progress bar" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1971 +msgid "Progress Bar Heigth" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1973 .. +#: admin/views/templates/slider-main-options.php:1979 .. +#: admin/views/templates/slider-main-options.php:2074 .. +#: admin/views/templates/slider-main-options.php:2080 .. +#: admin/views/templates/slider-main-options.php:2085 .. +#: admin/views/templates/slider-main-options.php:2182 .. +#: admin/views/templates/slider-main-options.php:2188 .. +#: admin/views/templates/slider-main-options.php:2194 .. +#: admin/views/templates/slider-main-options.php:2199 .. +#: admin/views/templates/slider-main-options.php:2369 .. +#: admin/views/templates/slider-main-options.php:2380 .. +#: admin/views/templates/slider-main-options.php:2405 .. +#: admin/views/templates/slider-main-options.php:2411 .. +#: admin/views/templates/slider-main-options.php:2437 .. +#: admin/views/templates/slider-main-options.php:2443 .. +#: admin/views/templates/slider-main-options.php:2475 .. +#: admin/views/templates/slider-main-options.php:2514 .. +#: admin/views/templates/slider-main-options.php:2525 .. +#: admin/views/templates/slider-main-options.php:2548 .. +#: admin/views/templates/slider-main-options.php:2554 .. +#: admin/views/templates/slider-main-options.php:2614 .. +#: admin/views/templates/slider-main-options.php:2628 .. +#: admin/views/templates/slider-main-options.php:2633 .. +#: admin/views/templates/slider-main-options.php:2638 .. +#: admin/views/templates/slider-main-options.php:2671 .. +#: admin/views/templates/slider-main-options.php:2682 .. +#: admin/views/templates/slider-main-options.php:2718 .. +#: admin/views/templates/slider-main-options.php:2724 .. +#: admin/views/templates/slider-main-options.php:2785 .. +#: admin/views/templates/slider-main-options.php:2799 .. +#: admin/views/templates/slider-main-options.php:2804 .. +#: admin/views/templates/slider-main-options.php:2809 .. +#: admin/views/templates/slider-main-options.php:2839 .. +#: admin/views/templates/slider-main-options.php:2850 .. +#: admin/views/templates/slider-main-options.php:2886 .. +#: admin/views/templates/slider-main-options.php:2892 .. +#: admin/views/templates/slider-main-options.php:3101 .. +#: admin/views/templates/slider-main-options.php:3110 .. +#: admin/views/templates/slider-main-options.php:3117 .. +#: admin/views/templates/slider-main-options.php:3120 +msgid "px" +msgstr "像素(px)" + +#: ../admin/views/templates/slider-main-options.php:1977 +#, php-format +msgid "" +"The opacity of the progress bar
        (0 == Transparent, 100 = Solid color, 50 " +"= 50% opacity etc...)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1977 +msgid "Progress Bar Opacity" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1983 +msgid "Color of the progress bar." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1983 +msgid "Progress Bar Color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2047 +msgid "Layout & Visual" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2052 +msgid "Appearance" +msgstr "外观" + +#: ../admin/views/templates/slider-main-options.php:2054 +msgid "Spinner" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2056 .. +#: admin/views/templates/slider-main-options.php:2529 .. +#: admin/views/templates/slider-main-options.php:2686 .. +#: admin/views/templates/slider-main-options.php:2854 +msgid "Position" +msgstr "位置" + +#: ../admin/views/templates/slider-main-options.php:2061 +msgid "If this is enabled, the slider will not be loaded on mobile devices." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2061 +msgid "Disable Slider on Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2066 +msgid "This will disable KenBurns on mobile devices to save performance" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2066 +msgid "Disable KenBurn On Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2070 +msgid "Hide Element Under Width:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2072 +msgid "" +"Hide the slider under the defined slider width. Value 0 will disable the " +"function." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2072 .. +#: admin/views/templates/template-slider-selector.php:15 +msgid "Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2078 +msgid "" +"Hide the selected layers (set layers hide under in slide editor) under the " +"defined slider width. Value 0 will disable the function." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2078 +msgid "Predefined Layers" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2083 +msgid "" +"Hide all layers under the defined slider width. Value 0 will disable the " +"function." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2083 +msgid "All Layers" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2093 +msgid "The Shadow display underneath the banner." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2093 +msgid "Shadow Type" +msgstr "阴影类型" + +#: ../admin/views/templates/slider-main-options.php:2095 +msgid "No Shadow" +msgstr "无阴影" + +#: ../admin/views/templates/slider-main-options.php:2105 +msgid "Show a dotted overlay over the slides." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2105 +msgid "Dotted Overlay Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2115 +msgid "Slider Background" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2116 +msgid "" +"General background color for slider. Clear value to get transparent slider " +"container." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2116 +msgid "Background color" +msgstr "背景颜色" + +#: ../admin/views/templates/slider-main-options.php:2120 +msgid "" +"Padding around the slider. Together with background color shows as slider " +"border." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2120 +msgid "Padding as Border" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2124 +msgid "Use a general background image instead of general background color." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2124 +msgid "Show Background Image" +msgstr "显示背景图片" + +#: ../admin/views/templates/slider-main-options.php:2129 +msgid "The source of the general background image." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2129 +msgid "Background Image Url" +msgstr "背景图片的URL地址" + +#: ../admin/views/templates/slider-main-options.php:2130 +msgid "Set" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2133 +msgid "" +"General background image size. Cover - always fill the container, cuts " +"overlays. Contain- always fits image into slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2135 +msgid "cover" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2136 +msgid "contain" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2137 +msgid "normal" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2141 +msgid "General background image repeat attitude. Used for tiled images." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2143 +msgid "no-repeat" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2144 +msgid "repeat" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2145 +msgid "repeat-x" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2146 +msgid "repeat-y" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2150 +msgid "" +"General background image position. i.e. center center to always center " +"vertical and horizontal the image in the slider background." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2152 +msgid "center top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2153 +msgid "center right" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2154 +msgid "center bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2155 +msgid "center center" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2156 +msgid "left top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2157 +msgid "left center" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2158 +msgid "left bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2159 +msgid "right top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2160 +msgid "right center" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2161 +msgid "right bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2171 +msgid "" +"The position of the slider within the parrent container. (float:left or " +"float:right or with margin:0px auto;). We recomment do use always CENTER, " +"since the slider will auto fill and grow with the wrapping container. Set " +"any border,padding, floating etc. to the wrapping container where the slider " +"embeded instead of using left/right here !" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2171 +msgid "Position on the page" +msgstr "页面上的位置" + +#: ../admin/views/templates/slider-main-options.php:2180 +msgid "The top margin of the slider wrapper div" +msgstr "幻灯片距上部div的上边距" + +#: ../admin/views/templates/slider-main-options.php:2180 +msgid "Margin Top" +msgstr "上边距(Margin Top)" + +#: ../admin/views/templates/slider-main-options.php:2186 +msgid "The bottom margin of the slider wrapper div" +msgstr "幻灯片距下部div的下边距" + +#: ../admin/views/templates/slider-main-options.php:2186 +msgid "Margin Bottom" +msgstr "下边距(Margin Bottom)" + +#: ../admin/views/templates/slider-main-options.php:2192 +msgid "The left margin of the slider wrapper div" +msgstr "滑块距左部div的左边距" + +#: ../admin/views/templates/slider-main-options.php:2192 +msgid "Margin Left" +msgstr "左边距" + +#: ../admin/views/templates/slider-main-options.php:2197 +msgid "The right margin of the slider wrapper div" +msgstr "幻灯片距右部div的右边距" + +#: ../admin/views/templates/slider-main-options.php:2197 +msgid "Margin Right" +msgstr "有边距" + +#: ../admin/views/templates/slider-main-options.php:2208 +msgid "Select a Spinner for your Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2208 +msgid "Choose Spinner" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2214 .. +#: admin/views/templates/slider-main-options.php:3126 +msgid "3" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2215 +msgid "4" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2216 .. +#: admin/views/templates/slider-main-options.php:3127 +msgid "5" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2220 +msgid "The Color the Spinner will be shown in" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2220 +msgid "Spinner Color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2305 +msgid "Navigation" +msgstr "导航" + +#: ../admin/views/templates/slider-main-options.php:2314 +msgid "Touch" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2320 +msgid "Enable / Disable Arrows" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2320 +msgid "Enable Arrows" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2325 +msgid "Look of the navigation Arrows" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2325 +msgid "Arrows Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2327 .. +#: admin/views/templates/slider-main-options.php:2458 .. +#: admin/views/templates/slider-main-options.php:2592 .. +#: admin/views/templates/slider-main-options.php:2764 +msgid "No Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2343 +msgid "" +"Enable to make arrows always visible. Disable to hide arrows after the " +"defined time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2343 .. +#: admin/views/templates/slider-main-options.php:2645 .. +#: admin/views/templates/slider-main-options.php:2814 +msgid "Always Show " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2345 .. +#: admin/views/templates/slider-main-options.php:2491 .. +#: admin/views/templates/slider-main-options.php:2647 .. +#: admin/views/templates/slider-main-options.php:2816 +msgid "Yes" +msgstr "是" + +#: ../admin/views/templates/slider-main-options.php:2346 .. +#: admin/views/templates/slider-main-options.php:2492 .. +#: admin/views/templates/slider-main-options.php:2648 .. +#: admin/views/templates/slider-main-options.php:2817 +msgid "No" +msgstr "否" + +#: ../admin/views/templates/slider-main-options.php:2351 +msgid "Time after the Arrows will be hidden(Default: 200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2351 .. +#: admin/views/templates/slider-main-options.php:2496 .. +#: admin/views/templates/slider-main-options.php:2653 +msgid "Hide After" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2356 +msgid "Time after the Arrows will be hidden on Mobile(Default: 1200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2356 .. +#: admin/views/templates/slider-main-options.php:2501 .. +#: admin/views/templates/slider-main-options.php:2658 +msgid "Hide After on Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2362 +msgid "Force Hide Navigation Arrows under width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2362 +msgid "Hide Under" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2367 +msgid "If browser size goes below this value, then Navigation Arrows are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2373 +msgid "Force Hide Navigation over width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2373 +msgid "Hide Over" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2378 +msgid "If browser size goes over this value, then Navigation Arrows are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2384 +msgid "Left Arrow Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2386 +msgid "Horizontal position of the left arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2386 .. +#: admin/views/templates/slider-main-options.php:2415 .. +#: admin/views/templates/slider-main-options.php:2530 .. +#: admin/views/templates/slider-main-options.php:2700 .. +#: admin/views/templates/slider-main-options.php:2868 +msgid "Horizontal Align" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2395 +msgid "Vertical position of the left arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2395 .. +#: admin/views/templates/slider-main-options.php:2425 .. +#: admin/views/templates/slider-main-options.php:2538 .. +#: admin/views/templates/slider-main-options.php:2708 .. +#: admin/views/templates/slider-main-options.php:2876 +msgid "Vertical Align" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2403 +msgid "Offset from current horizontal position of of left arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2403 .. +#: admin/views/templates/slider-main-options.php:2435 .. +#: admin/views/templates/slider-main-options.php:2546 .. +#: admin/views/templates/slider-main-options.php:2716 .. +#: admin/views/templates/slider-main-options.php:2884 +msgid "Horizontal Offset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2409 +msgid "Offset from current vertical position of of left arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2409 .. +#: admin/views/templates/slider-main-options.php:2441 .. +#: admin/views/templates/slider-main-options.php:2552 .. +#: admin/views/templates/slider-main-options.php:2722 .. +#: admin/views/templates/slider-main-options.php:2890 +msgid "Vertical Offset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2414 +msgid "Right Arrow Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2415 +msgid "Horizontal position of the right arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2425 +msgid "Vertical position of the right arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2435 +msgid "Offset from current horizontal position of of right arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2441 +msgid "Offset from current vertical position of of right arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2451 +msgid "Enable / Disable Bullets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2451 +msgid "Enable Bullets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2456 +msgid "Look of the Bullets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2456 +msgid "Bullet Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2473 +msgid "Space between the bullets." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2473 .. +#: admin/views/templates/slider-main-options.php:2612 .. +#: admin/views/templates/slider-main-options.php:2783 +msgid "Space" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2479 +msgid "Direction of the Bullets. Vertical or Horizontal." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2479 .. +#: admin/views/templates/slider-main-options.php:2617 .. +#: admin/views/templates/slider-main-options.php:2788 +msgid "Direction" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2481 .. +#: admin/views/templates/slider-main-options.php:2619 .. +#: admin/views/templates/slider-main-options.php:2790 .. +#: admin/views/templates/slider-main-options.php:2919 .. +#: admin/views/templates/slider-main-options.php:2934 +msgid "Horizontal" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2482 .. +#: admin/views/templates/slider-main-options.php:2620 .. +#: admin/views/templates/slider-main-options.php:2791 .. +#: admin/views/templates/slider-main-options.php:2920 .. +#: admin/views/templates/slider-main-options.php:2935 +msgid "Vertical" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2489 +msgid "" +"Enable to make bullets always visible. Disable to hide bullets after the " +"defined time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2489 +msgid "Always Show" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2496 +msgid "Time after that the bullets will be hidden(Default: 200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2501 +msgid "Time after the bullets will be hidden on Mobile (Default: 1200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2507 +msgid "Force Hide Navigation Bullets under width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2507 .. +#: admin/views/templates/slider-main-options.php:2664 .. +#: admin/views/templates/slider-main-options.php:2832 +msgid "Hide under Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2512 .. +#: admin/views/templates/slider-main-options.php:2523 +msgid "If browser size goes below this value, then Navigation bullets are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2518 +msgid "Force Hide Navigation Bullets over width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2518 .. +#: admin/views/templates/slider-main-options.php:2675 .. +#: admin/views/templates/slider-main-options.php:2843 +msgid "Hide over Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2530 +msgid "Horizontal position of bullets " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2538 +msgid "Vertical positions of bullets " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2546 +msgid "Offset from current horizontal position." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2552 +msgid "Offset from current Vertical position." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2562 +msgid "Enable / Disable Thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2562 +msgid "Enable Thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2569 .. +#: admin/views/templates/slider-main-options.php:2742 +msgid "Wrapper Container" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2571 +msgid "The wrapper div padding of thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2571 .. +#: admin/views/templates/slider-main-options.php:2744 +msgid "Wrapper Padding" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2575 +msgid "Span wrapper to full width or full height based on the direction selected" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2575 .. +#: admin/views/templates/slider-main-options.php:2748 +msgid "Span Wrapper" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2579 +msgid "Thumbnails wrapper background color. For transparent leave empty." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2579 +msgid "Wrapper color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2580 .. +#: admin/views/templates/slider-main-options.php:2752 .. +#: admin/views/templates/slider-main-options.php:2753 +msgid "Wrapper Color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2583 .. +#: admin/views/templates/slider-main-options.php:2756 +#, php-format +msgid "Opacity of the Wrapper container. 0 - transparent, 50 - 50% opacity..." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2583 .. +#: admin/views/templates/slider-main-options.php:2756 +msgid "Wrapper Opacity" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2590 +msgid "Style of the thumbnails." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2590 +msgid "Thumbnails Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2608 +msgid "The amount of max visible Thumbnails in the same time. " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2608 +msgid "Visible Thumbs Amount" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2612 +msgid "Space between the thumbnails." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2617 +msgid "Direction of the Thumbnails. Vertical or Horizontal." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2624 +msgid "Thumbnail Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2626 +msgid "The basic Width of one Thumbnail." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2626 +msgid "Thumb Width" +msgstr "缩略图宽度" + +#: ../admin/views/templates/slider-main-options.php:2631 +msgid "The basic Height of one Thumbnail." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2631 +msgid "Thumb Height" +msgstr "缩略图高度" + +#: ../admin/views/templates/slider-main-options.php:2636 +msgid "" +"The minimum width of the auto resized thumbs. Between Max and Min width the " +"sizes are auto calculated)." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2636 +msgid "Min Thumb Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2645 +msgid "" +"Enable to make thumbnails always visible. Disable to hide thumbnails after " +"the defined time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2653 +msgid "Time after that the thumbnails will be hidden(Default: 200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2658 +msgid "Time after that the thumbnails will be hidden on Mobile (Default: 1200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2664 .. +#: admin/views/templates/slider-main-options.php:2675 +msgid "Force Hide Navigation Thumbnails under width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2669 .. +#: admin/views/templates/slider-main-options.php:2680 +msgid "If browser size goes below this value, then Navigation thumbs are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2687 +msgid "" +"Put the thumbnails inside or outside of the slider container. Outside added " +"thumbnails will decrease the size of the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2687 .. +#: admin/views/templates/slider-main-options.php:2856 +msgid "Inner / outer" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2689 .. +#: admin/views/templates/slider-main-options.php:2858 +msgid "Inner Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2690 .. +#: admin/views/templates/slider-main-options.php:2859 +msgid "Outer Left" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2691 .. +#: admin/views/templates/slider-main-options.php:2860 +msgid "Outer Right" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2692 .. +#: admin/views/templates/slider-main-options.php:2861 +msgid "Outer Top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2693 .. +#: admin/views/templates/slider-main-options.php:2862 +msgid "Outer Bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2700 +msgid "Horizontal position of thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2708 +msgid "Vertical position of thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2716 +msgid "Offset from current Horizontal position." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2722 +msgid "Offset from current Vertical position." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2735 +msgid "Enable / Disable navigation tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2735 +msgid "Enable Tabs" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2744 +msgid "The wrapper div padding of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2748 +msgid "Span wrapper to full width or full height based on the direction selected." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2752 +msgid "Tabs wrapper background color. For transparent leave empty." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2762 +msgid "Style of the tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2762 +msgid "Tabs Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2779 +msgid "The amount of max visible tabs in same time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2779 +msgid "Visible Tabs Amount" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2783 +msgid "Space between the tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2788 +msgid "Direction of the Tabs. Vertical or Horizontal." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2795 +msgid "Tab Sizes" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2797 +msgid "The basic width of one tab." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2797 +msgid "Tabs Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2802 +msgid "the basic height of one tab." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2802 +msgid "Tabs Height" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2807 +msgid "" +"The minimum width of the auto resized Tabs. Between Max and Min width the " +"sizes are auto calculated)." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2807 +msgid "Min. Tab Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2814 +msgid "" +"Enable to make tabs always visible. Disable to hide tabs after the defined " +"time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2822 +msgid "Time after that the tabs will be hidden(Default: 200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2822 +msgid "Hide After" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2826 +msgid "Time after that the tabs will be hidden on Mobile (Default: 1200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2826 +msgid "Hide After on Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2832 .. +#: admin/views/templates/slider-main-options.php:2843 +msgid "Force Hide Navigation tabs under width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2837 .. +#: admin/views/templates/slider-main-options.php:2848 +msgid "If browser size goes below this value, then Navigation tabs are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2856 +msgid "" +"Put the tabs inside or outside of the slider container. Outside added tabs " +"will decrease the size of the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2868 +msgid "Horizontal position of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2876 +msgid "Vertical position of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2884 +msgid "Offset from current horizontal position of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2890 +msgid "Offset from current vertical position of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2901 +msgid "Enable Swipe Function on touch devices" +msgstr "启用具有滑动功能的触摸设备" + +#: ../admin/views/templates/slider-main-options.php:2901 +msgid "Touch Enabled" +msgstr "启用点触设备" + +#: ../admin/views/templates/slider-main-options.php:2905 +msgid "Scroll below slider on vertical swipe" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2905 +msgid "Drag Block Vertical" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2909 +msgid "Defines the sensibility of gestures. Smaller values mean a higher sensibility" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2909 +msgid "Swipe Treshhold (0 - 200)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2913 +msgid "Defines how many fingers are needed minimum for swiping" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2913 +msgid "Swipe Min Finger" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2917 +msgid "Swipe Direction to swap slides?" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2917 +msgid "Swipe Direction" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2928 +msgid "Allow/disallow to navigate the slider with keyboard." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2928 +msgid "Keyboard Navigation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2932 +msgid "" +"Keyboard Direction to swap slides (horizontal - left/right arrow, vertical - " +"up/down arrow)?" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2932 +msgid "Key Direction" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2939 +msgid "Allow/disallow to navigate the slider with Mouse Scroll." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2939 +msgid "Mouse Scroll Navigation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3082 +msgid "Carousel Settings" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3088 +msgid "Basics" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3089 +msgid "Transformations" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3090 +msgid "Aligns" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3094 +msgid "" +"Infinity Carousel Scroll. No Endpoints exists at first and last slide if " +"valuse is set to ON." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3094 +msgid "Infinity Scroll" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3099 +msgid "The horizontal gap/space between the slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3099 +msgid "Space between slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3105 +msgid "The border radius of slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3116 +msgid "The padding top of slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3119 +msgid "The padding bottom of slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3123 +msgid "The maximum visible items in same time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3123 +msgid "Max. Visible Items" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3128 +msgid "7" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3129 +msgid "9" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3130 +msgid "11" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3131 +msgid "13" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3132 +msgid "15" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3133 +msgid "17" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3134 +msgid "19" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3138 +msgid "" +"Stretch carousel element width to the wrapping container width. Using this " +"you can see only 1 item in same time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3138 +msgid "Stretch Element" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3148 +msgid "" +"All elements out of focus will get some Opacity value based on the Distance " +"to the current focused element, or only the coming/leaving elements." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3148 +msgid "Fade All Elements" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3154 +msgid "Fade is varying based on the distance to the focused element." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3154 +msgid "Varying Fade" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3161 +msgid "Rotation enabled/disabled for not focused elements." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3168 +msgid "Rotation is varying based on the distance to the focused element." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3168 +msgid "Varying Rotation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3173 +msgid "" +"The maximum rotation of the Side elements. Rotation will depend on the " +"element distance to the current focused element. 0 will turn off the Rotation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3173 +msgid "Max. Rotation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3175 +msgid "deg" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3180 +msgid "Scale enabled/disabled for not focused elements." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3188 +msgid "Scale is varying based on the distance to the focused element." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3188 +msgid "Varying Scale" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3193 +msgid "" +"The maximum scale down of the Side elements. Scale will depend on the " +"element distance to the current focused element. Min value is 0 and max " +"value is 100." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3193 +msgid "Max. Scaledown" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3203 +msgid "Horizontal Align of the Carousel." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3203 +msgid "Horizontal Aligns" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3211 +msgid "Vertical Align of the Carousel." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3211 +msgid "Vertical Aligns" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3289 +msgid "" +"Enabling this, will give you new options in the slides to create a unique " +"parallax effect" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3289 +msgid "Enable Parallax" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3294 +msgid "If set to on, parallax will be disabled on mobile devices to save performance" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3294 +msgid "Disable on Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3299 +msgid "Mouse Sensibility" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3301 +msgid "Defines on what event type the parallax should react to" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3301 +msgid "Event" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3303 +msgid "Mouse Move" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3304 +msgid "Scroll Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3305 +msgid "Move and Scroll" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3309 +msgid "Mouse Based parallax calculation Origo" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3309 +msgid "Parallax Origo" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3311 +msgid "Mouse Enter Point" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3312 +msgid "Slider Center" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3316 +msgid "Parallax Speed for Mouse movents." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3316 +msgid "Animation Speed" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3322 +msgid "Parallax Levels" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3324 .. +#: admin/views/templates/slider-main-options.php:3328 .. +#: admin/views/templates/slider-main-options.php:3332 .. +#: admin/views/templates/slider-main-options.php:3336 .. +#: admin/views/templates/slider-main-options.php:3340 .. +#: admin/views/templates/slider-main-options.php:3344 .. +#: admin/views/templates/slider-main-options.php:3348 .. +#: admin/views/templates/slider-main-options.php:3352 .. +#: admin/views/templates/slider-main-options.php:3356 .. +#: admin/views/templates/slider-main-options.php:3360 +msgid "" +"Defines a level that can be used in Slide Editor for this Slider. Smaller " +"value gives a smaller offset effect, higher value will increase the effect." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3324 +msgid "Level Depth 1" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3328 +msgid "Level Depth 2" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3332 +msgid "Level Depth 3" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3336 +msgid "Level Depth 4" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3340 +msgid "Level Depth 5" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3344 +msgid "Level Depth 6" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3348 +msgid "Level Depth 7" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3352 +msgid "Level Depth 8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3356 +msgid "Level Depth 9" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3360 +msgid "Level Depth 10" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3392 +msgid "Performance and SEO Optimization" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3406 +msgid "" +"How to load/preload the images.

        All - Load all " +"image element in a sequence at the initialisation. This will boost up the " +"loading of your page, and will preload all images to have a smooth breakless " +"run already in the first loop.

        Smart - It will " +"allow to load the page as quickest, and load only the current and neighbour " +"slide elements. Will load on demand the next element if not loaded yet. " +"

        Single - It will load only the slide which should " +"be shown, always on demand." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3406 +msgid "Lazy Load" +msgstr "延迟加载" + +#: ../admin/views/templates/slider-main-options.php:3409 +msgid "Smart" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3410 +msgid "Single" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3411 +msgid "No Lazy Loading" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3418 +msgid "" +"Define SEO Optimization for the Images in the Slider, useful if Lazy Load is " +"on." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3418 +msgid "SEO Optimization" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3421 +msgid "NoScript" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3422 +msgid "NoFrame" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3472 +msgid "Problem Handlings" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3477 +msgid "Fallbacks" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3478 +msgid "Troubleshooting" +msgstr "故障排除" + +#: ../admin/views/templates/slider-main-options.php:3481 +msgid "Simplyfies the Slider on IOS4 and IE8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3481 +msgid "Simplify on IOS4/IE8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3485 +msgid "Disables the Slider and load an alternative image instead" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3485 +msgid "Use Alternative Image" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3488 +msgid "On Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3489 +msgid "On IE8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3490 +msgid "On Mobile and IE8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3494 +msgid "The image that will be loaded instead of the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3494 +msgid "Alternate Image" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3499 +msgid "" +"Turns on / off jquery noconflict mode. Try to enable this option if " +"javascript conflicts exist on the page." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3499 +msgid "JQuery No Conflict Mode" +msgstr "JQuery的无冲突模式" + +#: ../admin/views/templates/slider-main-options.php:3503 +msgid "" +"Try this to fix some javascript conflicts of type: TypeError: " +"tpj('#rev_slider_1_1').show().revolution is not a function" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3503 +msgid "Put JS Includes To Body" +msgstr "把JS包含在body块" + +#: ../admin/views/templates/slider-main-options.php:3512 +msgid "" +"Activate a protection against wordpress output filters that adds html blocks " +"to the shortcode output like P and BR." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3512 +msgid "Output Filters Protection" +msgstr "保护输出滤波器" + +#: ../admin/views/templates/slider-main-options.php:3515 +msgid "By Compressing Output" +msgstr "通过压缩输出" + +#: ../admin/views/templates/slider-main-options.php:3516 +msgid "By Echo Output" +msgstr "由echo打印输出" + +#: ../admin/views/templates/slider-main-options.php:3545 +msgid "Import / Export / Replace" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3549 +msgid "Import" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3550 .. +#: admin/views/templates/sliders-list.php:154 +msgid "Export" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3551 +msgid "Replace URL" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3563 +msgid "Overwrite or append the custom animations due the new imported values ?" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3563 +msgid "Custom Animations" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3568 +msgid "Overwrite or append the static styles due the new imported values ?" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3568 ../includes/operations. +#: class.php:2322 +msgid "Static Styles" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3577 +msgid "" +"Note! Custom styles will be updated if they exist. Importing slider, will " +"delete all the current slider settings and slides and replacing it with the " +"imported content." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3583 +msgid "Export Slider" +msgstr "导出滑块" + +#: ../admin/views/templates/slider-main-options.php:3583 +msgid "Export with Dummy Images" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3589 +msgid "" +"Replace all layer and backgorund image url's. example - replace from: http:" +"//localhost" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3589 +msgid "Replace From" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3593 +msgid "" +"Replace all layer and backgorund image url's. example - replace to: http:" +"//yoursite.com" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3593 +msgid "Replace To" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3600 +msgid "Replace URL's" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3601 +msgid "Replacing..." +msgstr "替换中..." + +#: ../admin/views/templates/slider-main-options.php:3604 +msgid "Note! The replace process is not reversible !" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3621 +msgid "API Functions" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3625 +msgid "Methods" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3626 +msgid "Events" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3629 +msgid "Call this function to pause the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3633 +msgid "Call this function to play the slider if it is paused." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3633 +msgid "Resume Slider" +msgstr "重命名滑块" + +#: ../admin/views/templates/slider-main-options.php:3637 +msgid "Switch slider to previous slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3641 +msgid "Switch slider to next slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3645 .. +#: admin/views/templates/slider-main-options.php:3649 +msgid "Switch to the slide which is defined as parameter." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3645 +msgid "Go To Slide" +msgstr "转到幻灯片" + +#: ../admin/views/templates/slider-main-options.php:3649 +msgid "Go To Slide with ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3653 +msgid "Get the amount of existing slides in the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3653 +msgid "Max Slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3657 +msgid "Get the current focused slide index." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3657 +msgid "Current Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3661 +msgid "Get the previously played slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3665 +msgid "Scroll page under the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3665 +msgid "External Scroll" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3669 +msgid "" +"Recalculate all positions, sizing etc in the slider. This should be called " +"i.e. if Slider was invisible and becomes visible without any window resize " +"event." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3669 +msgid "Redraw Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3673 +msgid "" +"Unbind all listeners, remove current animations and delete containers. Ready " +"for Garbage collection." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3673 +msgid "Kill Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3678 +msgid "Slider Loaded" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3683 +msgid "Slider swapped to an other slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3687 +msgid "Current Slide as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3689 .. +#: admin/views/templates/slider-main-options.php:3740 +msgid "Previous Slide as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3691 +msgid "Slider paused" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3696 +msgid "Slider is Playing after pause" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3701 +msgid "Video is playing in slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3705 .. +#: admin/views/templates/slider-main-options.php:3715 +msgid "The Video API to Manage Video functions" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3707 .. +#: admin/views/templates/slider-main-options.php:3717 +msgid "youtube, vimeo, html5" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3709 .. +#: admin/views/templates/slider-main-options.php:3719 +msgid "Video Settings" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3711 +msgid "Video stopped in slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3721 +msgid "Slider reached the 'stop at' slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3726 +msgid "Prepared for slide change" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3730 .. +#: admin/views/templates/slider-main-options.php:3738 +msgid "Current Slide as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3732 +msgid "Coming Slide as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3734 +msgid "Finnished with slide change" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3742 +msgid "Last slide starts" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3747 +msgid "Layer Events" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3750 +msgid "Layer Action (enterstage, enteredstage, leavestage,leftstage)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3752 +msgid "Layer Type (image,video,html)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3754 +msgid "Default Settings for Layer" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3756 +msgid "Layer as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3769 +msgid "Google Fonts" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3775 +msgid "Add New Font" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3776 +msgid "" +"Copy the Google Font Family from http://www.google.com/fonts like: Open+Sans:400," +"700,600" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3831 +msgid "*Only Illustration, most changes are not visible." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:4298 +msgid "Save Settings as Preset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:4300 +msgid "Preset Name" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:4301 +msgid "Select" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:4321 +msgid "Google Font String" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:39 +msgid "Social" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:144 +msgid "Embed Slider" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:150 +msgid "Order Posts" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:163 +msgid "Export to HTML" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:188 +msgid "Create New Slider" +msgstr "新建滑块" + +#: ../admin/views/templates/sliders-list.php:189 +msgid "Add Template Slider" +msgstr "" + +#: ../admin/views/templates/slides-list.php:92 +msgid "Unpublish Slide" +msgstr "取消发布幻灯片" + +#: ../admin/views/templates/slides-list.php:96 +msgid "Publish Slide" +msgstr "发布幻灯片" + +#: ../admin/views/templates/slides-list.php:115 +msgid "Slide Image - Click to change" +msgstr "" + +#: ../admin/views/templates/slides-list.php:135 +msgid "Deleting Slide..." +msgstr "" + +#: ../admin/views/templates/slides-list.php:139 +msgid "Open copy / move dialog" +msgstr "" + +#: ../admin/views/templates/slides-list.php:147 +msgid "Working..." +msgstr "" + +#: ../admin/views/templates/slides.php:16 ../admin/views/templates/slides.php:36 +msgid "New Slide" +msgstr "新建幻灯片" + +#: ../admin/views/templates/slides.php:18 ../admin/views/templates/slides.php:38 +msgid "New Transparent Slide" +msgstr "新的透明幻灯片" + +#: ../admin/views/templates/slides.php:19 ../admin/views/templates/slides.php:39 +msgid "Adding Slide..." +msgstr "正在添加滑块..." + +#: ../admin/views/templates/slides.php:36 +msgid "Select image or multiple images to add slide or slides" +msgstr "" + +#: ../admin/views/templates/slides.php:41 +msgid "Edit Static / Global Layers" +msgstr "" + +#: ../admin/views/templates/slides.php:46 +msgid "To Slider Settings" +msgstr "幻灯片设置" + +#: ../admin/views/templates/template-selector.php:17 +msgid "Slide" +msgstr "幻灯片" + +#: ../admin/views/templates/template-selector.php:22 .. +#: admin/views/templates/template-slider-selector.php:20 +msgid "Revolution Base" +msgstr "" + +#: ../admin/views/templates/template-selector.php:23 +msgid "All Slides" +msgstr "" + +#: ../admin/views/templates/template-selector.php:24 +msgid "Templates" +msgstr "" + +#: ../admin/views/templates/template-selector.php:227 .. +#: admin/views/templates/template-selector.php:240 +msgid "Import Template Slide" +msgstr "" + +#: ../admin/views/templates/template-selector.php:237 .. +#: admin/views/templates/template-slider-selector.php:166 +msgid "" +"Please select the corresponding zip file from the download packages import " +"folder called" +msgstr "" + +#: ../admin/views/templates/template-slider-selector.php:159 .. +#: admin/views/templates/template-slider-selector.php:169 +msgid "Import Template Slider" +msgstr "" + +#: ../admin/views/templates/wpml-selector.php:11 +msgid "Preview Slide" +msgstr "预览滑块" + +#: ../admin/views/templates/wpml-selector.php:41 +msgid "Choose slide language" +msgstr "" + +#: ../includes/extension.class.php:56 +msgid "Slider Revolution" +msgstr "" + +#: ../includes/extension.class.php:112 +msgid "Choose Revolution Slider" +msgstr "" + +#: ../includes/extension.class.php:116 +msgid "--- Choose Slider ---" +msgstr "" + +#: ../includes/external-sources.class.php:382 +msgid "Can't get the bearer token, check your credentials" +msgstr "" + +#: ../includes/external-sources.class.php:437 +msgid "Bearer Token is good, check your query" +msgstr "" + +#: ../includes/navigation.class.php:155 +msgid "Invalid ID" +msgstr "" + +#: ../includes/navigation.class.php:159 +msgid "Navigation could not be deleted" +msgstr "" + +#: ../includes/operations.class.php:268 ../includes/operations.class.php:339 +msgid "## Custom Animation ##" +msgstr "" + +#: ../includes/operations.class.php:270 ../includes/operations.class.php:342 +msgid "- VERSION 5.0 ANIMATIONS -" +msgstr "" + +#: ../includes/operations.class.php:292 ../includes/operations.class.php:355 +msgid "- VERSION 4.0 ANIMATIONS -" +msgstr "" + +#: ../includes/operations.class.php:313 ../includes/operations.class.php:375 +msgid "- SAVED CUSTOM ANIMATIONS -" +msgstr "" + +#: ../includes/operations.class.php:340 +msgid "Automatic Reverse" +msgstr "" + +#: ../includes/operations.class.php:1248 ../includes/operations.class.php:1340 +msgid "Choose language" +msgstr "" + +#: ../includes/operations.class.php:1381 +msgid "CAPTIONS CSS" +msgstr "" + +#: ../includes/operations.class.php:1413 +msgid "Replace image path:" +msgstr "" + +#: ../includes/operations.class.php:1413 +msgid "From:" +msgstr "" + +#: ../includes/operations.class.php:1413 +msgid "To:" +msgstr "" + +#: ../includes/operations.class.php:1413 +msgid "Replace" +msgstr "替换" + +#: ../includes/operations.class.php:1416 +msgid "Header" +msgstr "" + +#: ../includes/operations.class.php:1416 ../includes/operations.class.php:1418 .. +#: includes/operations.class.php:1420 ../includes/operations.class.php:1422 +msgid "Mark to Copy" +msgstr "" + +#: ../includes/operations.class.php:1420 +msgid "Body" +msgstr "" + +#: ../includes/operations.class.php:1422 +msgid "Script" +msgstr "" + +#: ../includes/operations.class.php:1442 +msgid "Loading Preview..." +msgstr "" + +#: ../includes/operations.class.php:1601 +msgid "Purchase Code already registered!" +msgstr "" + +#: ../includes/operations.class.php:2003 +msgid "Overall Slider Performance" +msgstr "" + +#: ../includes/operations.class.php:2006 ../includes/operations.class.php:2096 .. +#: includes/operations.class.php:2183 ../includes/operations.class.php:2260 .. +#: includes/operations.class.php:2386 ../includes/operations.class.php:2467 +msgid "Slow" +msgstr "" + +#: ../includes/operations.class.php:2007 ../includes/operations.class.php:2097 .. +#: includes/operations.class.php:2184 ../includes/operations.class.php:2261 .. +#: includes/operations.class.php:2387 ../includes/operations.class.php:2468 +msgid "Ok" +msgstr "" + +#: ../includes/operations.class.php:2008 ../includes/operations.class.php:2098 .. +#: includes/operations.class.php:2185 ../includes/operations.class.php:2262 .. +#: includes/operations.class.php:2388 ../includes/operations.class.php:2469 +msgid "Fast" +msgstr "" + +#: ../includes/operations.class.php:2014 ../includes/operations.class.php:2029 .. +#: includes/operations.class.php:2044 +msgid "Load Speed UMTS:" +msgstr "" + +#: ../includes/operations.class.php:2018 ../includes/operations.class.php:2033 .. +#: includes/operations.class.php:2048 +msgid "Load Speed DSL:" +msgstr "" + +#: ../includes/operations.class.php:2022 ../includes/operations.class.php:2037 .. +#: includes/operations.class.php:2052 +msgid "Load Speed T1:" +msgstr "" + +#: ../includes/operations.class.php:2059 +msgid "Total Slider Size:" +msgstr "" + +#: ../includes/operations.class.php:2064 +msgid "Preloaded Slides Size:" +msgstr "" + +#: ../includes/operations.class.php:2076 +msgid "Need Some Attention" +msgstr "" + +#: ../includes/operations.class.php:2093 +msgid "Image Performance" +msgstr "" + +#: ../includes/operations.class.php:2105 +msgid "Images Loaded:" +msgstr "" + +#: ../includes/operations.class.php:2110 ../includes/operations.class.php:2202 .. +#: includes/operations.class.php:2273 ../includes/operations.class.php:2399 .. +#: includes/operations.class.php:2480 +msgid "Hide Details" +msgstr "" + +#: ../includes/operations.class.php:2110 ../includes/operations.class.php:2110 .. +#: includes/operations.class.php:2202 ../includes/operations.class.php:2202 .. +#: includes/operations.class.php:2273 ../includes/operations.class.php:2273 .. +#: includes/operations.class.php:2399 ../includes/operations.class.php:2399 .. +#: includes/operations.class.php:2480 ../includes/operations.class.php:2480 +msgid "Show Details" +msgstr "" + +#: ../includes/operations.class.php:2137 ../includes/operations.class.php:2220 +msgid "extern" +msgstr "" + +#: ../includes/operations.class.php:2139 ../includes/operations.class.php:2222 +msgid "missing" +msgstr "" + +#: ../includes/operations.class.php:2180 +msgid "Video Performance" +msgstr "" + +#: ../includes/operations.class.php:2192 +msgid "Videos Loaded (max):" +msgstr "" + +#: ../includes/operations.class.php:2198 +msgid "Unknown" +msgstr "" + +#: ../includes/operations.class.php:2257 +msgid "CSS Performance" +msgstr "" + +#: ../includes/operations.class.php:2269 +msgid "CSS Loaded:" +msgstr "" + +#: ../includes/operations.class.php:2294 +msgid "css/settings.css" +msgstr "" + +#: ../includes/operations.class.php:2358 +msgid "Dynamic Styles" +msgstr "" + +#: ../includes/operations.class.php:2383 +msgid "jQuery Performance" +msgstr "" + +#: ../includes/operations.class.php:2395 +msgid "jQuery Loaded:" +msgstr "" + +#: ../includes/operations.class.php:2464 +msgid "Google Fonts Performance" +msgstr "" + +#: ../includes/operations.class.php:2476 +msgid "Fonts Loaded:" +msgstr "" + +#: ../includes/output.class.php:273 +msgid "" +"No slides found, please add at least one Slide Template to the choosen " +"Template Slider." +msgstr "" + +#: ../includes/output.class.php:275 +msgid "No slides found, please add some slides" +msgstr "" + +#: ../includes/output.class.php:4020 +msgid "Revolution Slider Error" +msgstr "" + +#: ../includes/slide.class.php:205 +msgid "Source must be from Stream" +msgstr "" + +#: ../includes/slider.class.php:810 +msgid "Please select the correct zip file" +msgstr "" + +#: ../includes/slider.class.php:827 +msgid "Please select the correct zip file, checksum failed!" +msgstr "" + +#: ../includes/slider.class.php:903 +msgid "animations imported!" +msgstr "" + +#: ../includes/slider.class.php:905 +msgid "" +"no custom animations found, if slider uses custom animations, the provided " +"export may be broken..." +msgstr "" + +#: ../includes/slider.class.php:963 +msgid "dynamic styles imported!" +msgstr "" + +#: ../includes/slider.class.php:965 +msgid "" +"no dynamic styles found, if slider uses dynamic styles, the provided export " +"may be broken..." +msgstr "" + +#: ../includes/slider.class.php:1050 ../includes/slider.class.php:1083 .. +#: includes/slider.class.php:1202 ../includes/slider.class.php:1235 +msgid " not found!
        " +msgstr "" + +#: ../includes/slider.class.php:1327 +msgid "could not find correct Slide to copy, please try again." +msgstr "" + +#: ../includes/slider.class.php:1485 ../includes/slider.class.php:1494 +msgid "Slide could not be duplicated" +msgstr "" + +#: ../includes/slider.class.php:1502 +msgid "Slide could not be copied" +msgstr "" + +#: ../includes/slider.class.php:1810 +msgid "Failed to load Stream" +msgstr "" + +#: ../includes/widget.class.php:15 +msgid "Displays a revolution slider on the page" +msgstr "在此页面显示幻灯片" + +#: ../includes/widget.class.php:16 +msgid "Revolution Slider" +msgstr "革命滑块" + +#: ../includes/widget.class.php:30 +msgid "No sliders found, Please create a slider" +msgstr "没有找到幻灯片,请创建一个幻灯片" + +#: ../includes/widget.class.php:69 +msgid "Home Page Only" +msgstr "" + +#: ../includes/widget.class.php:72 +msgid "Pages: (example: 2,10)" +msgstr "" + +#: ../includes/framework/base-admin.class.php:267 +msgid "Wrong Request" +msgstr "" + +#: ../includes/framework/base.class.php:219 +msgid "Original" +msgstr "" + +#: ../includes/framework/base.class.php:220 ../includes/framework/base.class.php: +#: 267 ../includes/framework/base.class.php:282 +msgid "Large" +msgstr "" + +#: ../includes/framework/base.class.php:221 +msgid "Large Square" +msgstr "" + +#: ../includes/framework/base.class.php:222 ../includes/framework/base.class.php: +#: 257 ../includes/framework/base.class.php:266 ../includes/framework/base.class. +#: php:281 +msgid "Medium" +msgstr "" + +#: ../includes/framework/base.class.php:223 +msgid "Medium 800" +msgstr "" + +#: ../includes/framework/base.class.php:224 +msgid "Medium 640" +msgstr "" + +#: ../includes/framework/base.class.php:225 ../includes/framework/base.class.php: +#: 265 +msgid "Small" +msgstr "" + +#: ../includes/framework/base.class.php:226 +msgid "Small 320" +msgstr "" + +#: ../includes/framework/base.class.php:227 ../includes/framework/base.class.php: +#: 234 ../includes/framework/base.class.php:280 +msgid "Thumbnail" +msgstr "缩略图" + +#: ../includes/framework/base.class.php:228 +msgid "Square" +msgstr "" + +#: ../includes/framework/base.class.php:233 ../includes/framework/base.class.php: +#: 240 +msgid "Standard Resolution" +msgstr "" + +#: ../includes/framework/base.class.php:235 +msgid "Low Resolution" +msgstr "" + +#: ../includes/framework/base.class.php:245 +msgid "Size 0" +msgstr "" + +#: ../includes/framework/base.class.php:246 +msgid "Size 1" +msgstr "" + +#: ../includes/framework/base.class.php:247 +msgid "Size 2" +msgstr "" + +#: ../includes/framework/base.class.php:248 +msgid "Size 3" +msgstr "" + +#: ../includes/framework/base.class.php:249 +msgid "Size 4" +msgstr "" + +#: ../includes/framework/base.class.php:250 +msgid "Size 5" +msgstr "" + +#: ../includes/framework/base.class.php:251 +msgid "Size 6" +msgstr "" + +#: ../includes/framework/base.class.php:256 +msgid "Default" +msgstr "" + +#: ../includes/framework/base.class.php:258 +msgid "High" +msgstr "" + +#: ../includes/framework/base.class.php:259 +msgid "Standard" +msgstr "" + +#: ../includes/framework/base.class.php:260 +msgid "Max. Res." +msgstr "" + +#: ../includes/framework/base.class.php:279 +msgid "Original Size" +msgstr "" + +#: ../includes/framework/em-integration.class.php:32 +msgid "All Events" +msgstr "" + +#: ../includes/framework/em-integration.class.php:33 +msgid "Today" +msgstr "" + +#: ../includes/framework/em-integration.class.php:34 +msgid "Tomorrow" +msgstr "" + +#: ../includes/framework/em-integration.class.php:35 +msgid "Future" +msgstr "" + +#: ../includes/framework/em-integration.class.php:36 +msgid "Past" +msgstr "" + +#: ../includes/framework/em-integration.class.php:37 +msgid "This Month" +msgstr "" + +#: ../includes/framework/em-integration.class.php:38 +msgid "Next Month" +msgstr "" + +#: ../includes/framework/em-integration.class.php:168 +msgid "Event Start Date" +msgstr "" + +#: ../includes/framework/em-integration.class.php:169 +msgid "Event End Date" +msgstr "" + +#: ../includes/framework/functions-wordpress.class.php:886 +#, php-format +msgid "View all posts in %s" +msgstr "" + +#: ../includes/framework/wpml.class.php:46 ../includes/framework/wpml.class.php:162 +msgid "All Languages" +msgstr "" diff --git a/plugins/revslider/languages/revslider.pot b/plugins/revslider/languages/revslider.pot new file mode 100644 index 0000000..95e9ea0 --- /dev/null +++ b/plugins/revslider/languages/revslider.pot @@ -0,0 +1,7410 @@ +# Loco Gettext template +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Revolution Slider\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: Mon Jul 13 2015 10:02:33 GMT+0200 (CEST)\n" +"POT-Revision-Date: Tue Aug 04 2015 14:53:44 GMT+0200 (CEST)\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: admin \n" +"Language-Team: \n" +"Language: \n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-Basepath: .\n" +"X-Poedit-SearchPath-0: ..\n" +"X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;" +"__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;" +"_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;" +"esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;" +"esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n" +"X-Loco-Target-Locale: en_US\n" +"X-Generator: Loco - https://localise.biz/" + +#: ../revslider.php:167 +msgid "Include RevSlider libraries globally (all pages/posts)" +msgstr "" + +#: ../revslider.php:168 +msgid "Pages to include RevSlider libraries" +msgstr "" + +#: ../revslider.php:169 +msgid "" +"If you want to use the PHP function \"putRevSlider\" in your code please make " +"sure to check \" " +msgstr "" + +#: ../revslider.php:169 +msgid "" +" \" in the backend's \"General Settings\" (top right panel).

        Or add " +"the current page to the \"" +msgstr "" + +#: ../revslider.php:169 +msgid "\" option box." +msgstr "" + +#: ../revslider.php:209 +msgid "Revolution Slider Error:" +msgstr "" + +#: ../admin/revslider-admin.class.php:62 ../admin/views/navigation-editor.php:28 +msgid "Navigation Editor" +msgstr "" + +#: ../admin/revslider-admin.class.php:188 +msgid "-- wrong alias -- " +msgstr "" + +#: ../admin/revslider-admin.class.php:189 +msgid "Navigation Bullets and Arrows are now set to none." +msgstr "" + +#: ../admin/revslider-admin.class.php:190 +msgid "Create Template" +msgstr "" + +#: ../admin/revslider-admin.class.php:191 +msgid "Do you really want to delete" +msgstr "" + +#: ../admin/revslider-admin.class.php:192 +msgid "Are you sure to replace the urls?" +msgstr "" + +#: ../admin/revslider-admin.class.php:193 +msgid "" +"Set selected settings on all Slides of this Slider? (This will be saved " +"immediately)" +msgstr "" + +#: ../admin/revslider-admin.class.php:194 ../admin/views/slide-overview.php:174 +msgid "Select Slide Image" +msgstr "" + +#: ../admin/revslider-admin.class.php:195 +msgid "Select Slide Video" +msgstr "" + +#: ../admin/revslider-admin.class.php:196 +msgid "Show Slide Options" +msgstr "" + +#: ../admin/revslider-admin.class.php:197 +msgid "Hide Slide Options" +msgstr "" + +#: ../admin/revslider-admin.class.php:198 ../admin/views/slide-overview.php:168 .. +#: /admin/views/system/dialog-copy-move.php:3 ../admin/views/templates/slider- +#: main-options.php:1433 ../admin/views/templates/slider-main-options.php:4437 .. +#: /admin/views/templates/slides.php:21 ../admin/views/templates/slides.php:43 +msgid "Close" +msgstr "" + +#: ../admin/revslider-admin.class.php:199 +msgid "Really update global styles?" +msgstr "" + +#: ../admin/revslider-admin.class.php:200 +msgid "Global Styles Editor" +msgstr "" + +#: ../admin/revslider-admin.class.php:201 ../admin/revslider-admin.class.php:239 . +#: ./admin/views/templates/slider-main-options.php:4458 +msgid "Select Image" +msgstr "" + +#: ../admin/revslider-admin.class.php:202 +msgid "Video Not Found!" +msgstr "" + +#: ../admin/revslider-admin.class.php:203 +msgid "Handle has to be at least three character long" +msgstr "" + +#: ../admin/revslider-admin.class.php:204 +msgid "Really change font settings?" +msgstr "" + +#: ../admin/revslider-admin.class.php:205 +msgid "Really delete font?" +msgstr "" + +#: ../admin/revslider-admin.class.php:206 +msgid "Class already exists, overwrite?" +msgstr "" + +#: ../admin/revslider-admin.class.php:207 +msgid "Class must be a valid CSS class name" +msgstr "" + +#: ../admin/revslider-admin.class.php:208 +msgid "Really overwrite Class?" +msgstr "" + +#: ../admin/revslider-admin.class.php:209 +msgid "Really delete Class" +msgstr "" + +#: ../admin/revslider-admin.class.php:210 +msgid "? This can't be undone!" +msgstr "" + +#: ../admin/revslider-admin.class.php:211 +msgid "This class does not exist." +msgstr "" + +#: ../admin/revslider-admin.class.php:212 +msgid "" +"Making changes to these settings will probably overwrite advanced settings. " +"Continue?" +msgstr "" + +#: ../admin/revslider-admin.class.php:213 +msgid "Select Static Layer Image" +msgstr "" + +#: ../admin/revslider-admin.class.php:214 +msgid "Select Layer Image" +msgstr "" + +#: ../admin/revslider-admin.class.php:215 +msgid "Do you really want to delete all the layers?" +msgstr "" + +#: ../admin/revslider-admin.class.php:216 +msgid "Layer Animation Editor" +msgstr "" + +#: ../admin/revslider-admin.class.php:217 +msgid "Animation already exists, overwrite?" +msgstr "" + +#: ../admin/revslider-admin.class.php:218 +msgid "Really overwrite animation?" +msgstr "" + +#: ../admin/revslider-admin.class.php:219 +msgid "Default animations can't be deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:220 +msgid "Must be greater than start time" +msgstr "" + +#: ../admin/revslider-admin.class.php:221 +msgid "Selected layer not set" +msgstr "" + +#: ../admin/revslider-admin.class.php:222 +msgid "Edit Layer Start" +msgstr "" + +#: ../admin/revslider-admin.class.php:223 +msgid "Edit Layer End" +msgstr "" + +#: ../admin/revslider-admin.class.php:224 +msgid "Default Animations can't be renamed" +msgstr "" + +#: ../admin/revslider-admin.class.php:225 +msgid "Animationname already existing" +msgstr "" + +#: ../admin/revslider-admin.class.php:226 +msgid "CSS classname already existing" +msgstr "" + +#: ../admin/revslider-admin.class.php:227 +msgid "Original CSS classname not found" +msgstr "" + +#: ../admin/revslider-admin.class.php:228 +msgid "Enter a correct class name" +msgstr "" + +#: ../admin/revslider-admin.class.php:229 +msgid "Class not found in database" +msgstr "" + +#: ../admin/revslider-admin.class.php:230 +msgid "CSS classname not found" +msgstr "" + +#: ../admin/revslider-admin.class.php:231 +msgid "Delete this caption? This may affect other Slider" +msgstr "" + +#: ../admin/revslider-admin.class.php:232 +msgid "" +"This will update the Class with the current set Style settings, this may " +"affect other Sliders. Proceed?" +msgstr "" + +#: ../admin/revslider-admin.class.php:233 +msgid "Template will have the state of the last save, proceed?" +msgstr "" + +#: ../admin/revslider-admin.class.php:234 +msgid "Please enter a Slide title" +msgstr "" + +#: ../admin/revslider-admin.class.php:235 +msgid "Please Wait a Moment" +msgstr "" + +#: ../admin/revslider-admin.class.php:236 ../admin/views/templates/slide-selector. +#: php:227 ../admin/views/templates/slides-list.php:146 +msgid "Copy / Move" +msgstr "" + +#: ../admin/revslider-admin.class.php:237 +msgid "Preset Loaded" +msgstr "" + +#: ../admin/revslider-admin.class.php:238 ../admin/views/templates/slide-selector. +#: php:253 +msgid "Add Bulk Slides" +msgstr "" + +#: ../admin/revslider-admin.class.php:240 ../admin/views/navigation-editor.php:38 +#: ../admin/views/templates/slider-main-options.php:2453 +msgid "Arrows" +msgstr "" + +#: ../admin/revslider-admin.class.php:241 ../admin/views/navigation-editor.php:39 +#: ../admin/views/templates/slider-main-options.php:2454 +msgid "Bullets" +msgstr "" + +#: ../admin/revslider-admin.class.php:242 ../admin/views/templates/slider-main- +#: options.php:2731 +msgid "Thumbnails" +msgstr "" + +#: ../admin/revslider-admin.class.php:243 ../admin/views/navigation-editor.php:41 +#: ../admin/views/templates/slider-main-options.php:2455 .. +#: /admin/views/templates/slider-main-options.php:2903 +msgid "Tabs" +msgstr "" + +#: ../admin/revslider-admin.class.php:244 +msgid "Delete this Navigation?" +msgstr "" + +#: ../admin/revslider-admin.class.php:245 +msgid "Navigation name could not be updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:246 +msgid "Name too short, at least 3 letters between a-zA-z needed" +msgstr "" + +#: ../admin/revslider-admin.class.php:247 +msgid "Navigation name already exists, please choose a different name" +msgstr "" + +#: ../admin/revslider-admin.class.php:248 +msgid "Remove current element from Navigation?" +msgstr "" + +#: ../admin/revslider-admin.class.php:249 +msgid "This navigation element does not exist, create one?" +msgstr "" + +#: ../admin/revslider-admin.class.php:250 +msgid "Overwrite current animation?" +msgstr "" + +#: ../admin/revslider-admin.class.php:251 +msgid "Default animations can't be changed" +msgstr "" + +#: ../admin/revslider-admin.class.php:252 +msgid "Animation already existing with given handle, please choose a different name." +msgstr "" + +#: ../admin/revslider-admin.class.php:253 +msgid "Really delete animation:" +msgstr "" + +#: ../admin/revslider-admin.class.php:254 +msgid "This will reset the navigation, continue?" +msgstr "" + +#: ../admin/revslider-admin.class.php:255 +msgid "Preset name already exists, please choose a different name" +msgstr "" + +#: ../admin/revslider-admin.class.php:256 +msgid "Really delete this preset?" +msgstr "" + +#: ../admin/revslider-admin.class.php:257 +msgid "This will update the preset with the current settings. Proceed?" +msgstr "" + +#: ../admin/revslider-admin.class.php:258 +msgid "Maybe wrong YoutTube ID given" +msgstr "" + +#: ../admin/revslider-admin.class.php:259 +msgid "Preset not found" +msgstr "" + +#: ../admin/revslider-admin.class.php:260 +msgid "Cover Image need to be set for videos" +msgstr "" + +#: ../admin/revslider-admin.class.php:261 +msgid "Really remove this action?" +msgstr "" + +#: ../admin/revslider-admin.class.php:262 +msgid "Layer is triggered by " +msgstr "" + +#: ../admin/revslider-admin.class.php:263 +msgid " due to action: " +msgstr "" + +#: ../admin/revslider-admin.class.php:264 +msgid "layer:" +msgstr "" + +#: ../admin/revslider-admin.class.php:265 +msgid "Start Layer \"in\" animation" +msgstr "" + +#: ../admin/revslider-admin.class.php:266 +msgid "Start Layer \"out\" animation" +msgstr "" + +#: ../admin/revslider-admin.class.php:267 ../admin/views/templates/slide-stage. +#: php:2257 +msgid "Start Video" +msgstr "" + +#: ../admin/revslider-admin.class.php:268 ../admin/views/templates/slide-stage. +#: php:2258 +msgid "Stop Video" +msgstr "" + +#: ../admin/revslider-admin.class.php:269 ../admin/views/templates/slide-stage. +#: php:2256 +msgid "Toggle Layer Animation" +msgstr "" + +#: ../admin/revslider-admin.class.php:270 ../admin/views/templates/slide-stage. +#: php:2259 +msgid "Toggle Video" +msgstr "" + +#: ../admin/revslider-admin.class.php:271 ../admin/views/templates/slider-main- +#: options.php:3812 +msgid "Last Slide" +msgstr "" + +#: ../admin/revslider-admin.class.php:272 ../admin/views/templates/slide-stage. +#: php:2260 +msgid "Simulate Click" +msgstr "" + +#: ../admin/revslider-admin.class.php:273 +msgid "Toogle Class" +msgstr "" + +#: ../admin/revslider-admin.class.php:274 +msgid "Copy hover styles to idle?" +msgstr "" + +#: ../admin/revslider-admin.class.php:275 +msgid "Copy idle styles to hover?" +msgstr "" + +#: ../admin/revslider-admin.class.php:276 +msgid "Please select at least one device type" +msgstr "" + +#: ../admin/revslider-admin.class.php:277 +msgid "Please select an existing Style Template" +msgstr "" + +#: ../admin/revslider-admin.class.php:278 +msgid "Can not remove last transition!" +msgstr "" + +#: ../admin/revslider-admin.class.php:279 +msgid "Given animation name is a default animation. These can not be changed." +msgstr "" + +#: ../admin/revslider-admin.class.php:280 +msgid "Animation exists, override existing animation?" +msgstr "" + +#: ../admin/revslider-admin.class.php:290 +msgid "(never show this message again)  X" +msgstr "" + +#: ../admin/revslider-admin.class.php:290 +msgid "" +"Hi! Would you like to activate your version of Revolution Slider to receive " +"live updates & get premium support? This is optional and not needed if the " +"slider came bundled with a theme. " +msgstr "" + +#: ../admin/revslider-admin.class.php:342 +msgid "Close & don't show againX" +msgstr "" + +#: ../admin/revslider-admin.class.php:415 +msgid "Choose Slide Template" +msgstr "" + +#: ../admin/revslider-admin.class.php:511 +msgid "importing slider settings and data..." +msgstr "" + +#: ../admin/revslider-admin.class.php:527 ../admin/revslider-admin.class.php:548 . +#: ./admin/revslider-admin.class.php:572 +msgid "Go Back" +msgstr "" + +#: ../admin/revslider-admin.class.php:530 ../admin/revslider-admin.class.php:574 +msgid "Slider Import Success, redirecting..." +msgstr "" + +#: ../admin/revslider-admin.class.php:543 +msgid "importing template slider settings and data..." +msgstr "" + +#: ../admin/revslider-admin.class.php:547 +msgid "ID missing, something went wrong. Please try again!" +msgstr "" + +#: ../admin/revslider-admin.class.php:607 ../admin/revslider-admin.class.php:1322 +#: ../admin/revslider-admin.class.php:1328 +msgid "Slider not found" +msgstr "" + +#: ../admin/revslider-admin.class.php:619 +msgid "Slider setting could not be changed" +msgstr "" + +#: ../admin/revslider-admin.class.php:651 ../includes/operations.class.php:2954 +msgid "Missing values to add preset" +msgstr "" + +#: ../admin/revslider-admin.class.php:659 ../admin/revslider-admin.class.php:676 +msgid "Preset created" +msgstr "" + +#: ../admin/revslider-admin.class.php:668 ../includes/operations.class.php:3000 +msgid "Missing values to update preset" +msgstr "" + +#: ../admin/revslider-admin.class.php:685 ../includes/operations.class.php:2976 +msgid "Missing values to remove preset" +msgstr "" + +#: ../admin/revslider-admin.class.php:693 +msgid "Preset deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:739 +msgid "Slider created" +msgstr "" + +#: ../admin/revslider-admin.class.php:745 +msgid "Slider updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:754 +msgid "Template can't be deleted, it is still being used by the following Sliders: " +msgstr "" + +#: ../admin/revslider-admin.class.php:757 ../admin/revslider-admin.class.php:759 +msgid "Slider deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:767 ../admin/revslider-admin.class.php:842 +msgid "Success! Refreshing page..." +msgstr "" + +#: ../admin/revslider-admin.class.php:775 +msgid "Slide Created" +msgstr "" + +#: ../admin/revslider-admin.class.php:777 +msgid "Slides Created" +msgstr "" + +#: ../admin/revslider-admin.class.php:787 +msgid "Slide Created, redirecting..." +msgstr "" + +#: ../admin/revslider-admin.class.php:793 +msgid "Missing redirect ID!" +msgstr "" + +#: ../admin/revslider-admin.class.php:800 +msgid "Slide copied to current Slider, redirecting..." +msgstr "" + +#: ../admin/revslider-admin.class.php:806 +msgid "Slide updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:810 +msgid "Static Global Layers updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:816 +msgid "Post deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:818 +msgid "Slide deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:831 ../admin/revslider-admin.class.php:833 +msgid "Slide duplicated" +msgstr "" + +#: ../admin/revslider-admin.class.php:840 +msgid "Success!" +msgstr "" + +#: ../admin/revslider-admin.class.php:848 +msgid "No valid Slide ID given" +msgstr "" + +#: ../admin/revslider-admin.class.php:852 ../admin/revslider-admin.class.php:856 +msgid "No valid title given" +msgstr "" + +#: ../admin/revslider-admin.class.php:863 +msgid "Could not save Slide as Template" +msgstr "" + +#: ../admin/revslider-admin.class.php:879 +msgid "Slide added to Templates" +msgstr "" + +#: ../admin/revslider-admin.class.php:907 ../admin/revslider-admin.class.php:929 . +#: ./admin/revslider-admin.class.php:950 ../admin/revslider-admin.class.php:999 +msgid "CSS saved" +msgstr "" + +#: ../admin/revslider-admin.class.php:910 ../admin/revslider-admin.class.php:932 . +#: ./admin/revslider-admin.class.php:953 +msgid "CSS could not be saved" +msgstr "" + +#: ../admin/revslider-admin.class.php:971 +msgid "Class name renamed" +msgstr "" + +#: ../admin/revslider-admin.class.php:987 +msgid "Style deleted!" +msgstr "" + +#: ../admin/revslider-admin.class.php:1003 ../admin/revslider-admin.class.php: +#: 1007 ../admin/revslider-admin.class.php:1011 +msgid "Animation saved" +msgstr "" + +#: ../admin/revslider-admin.class.php:1015 +msgid "Animation deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:1019 +msgid "Order updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1023 +msgid "Title updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1028 +msgid "Slide changed" +msgstr "" + +#: ../admin/revslider-admin.class.php:1048 +msgid "Slide is now the new active Hero Slide" +msgstr "" + +#: ../admin/revslider-admin.class.php:1056 +msgid "General settings updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1060 +msgid "Sortby updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1064 +msgid "Image urls replaced" +msgstr "" + +#: ../admin/revslider-admin.class.php:1068 +msgid "Settings in all Slides changed" +msgstr "" + +#: ../admin/revslider-admin.class.php:1075 +msgid "The API key, the Purchase Code and the Username need to be set!" +msgstr "" + +#: ../admin/revslider-admin.class.php:1080 +msgid "Purchase Code Successfully Activated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1082 +msgid "Purchase Code is invalid" +msgstr "" + +#: ../admin/revslider-admin.class.php:1089 +msgid "Successfully removed validation" +msgstr "" + +#: ../admin/revslider-admin.class.php:1091 +msgid "Could not remove Validation!" +msgstr "" + +#: ../admin/revslider-admin.class.php:1096 ../admin/revslider-admin.class.php:1103 +msgid "." +msgstr "" + +#: ../admin/revslider-admin.class.php:1109 +msgid "Setting Changed!" +msgstr "" + +#: ../admin/revslider-admin.class.php:1114 +msgid "No ID given" +msgstr "" + +#: ../admin/revslider-admin.class.php:1124 ../admin/revslider-admin.class.php:1142 +msgid "Invalid Email" +msgstr "" + +#: ../admin/revslider-admin.class.php:1127 +msgid "Success! Please check your Emails to finish the subscribtion" +msgstr "" + +#: ../admin/revslider-admin.class.php:1130 ../admin/revslider-admin.class.php:1148 +msgid "Invalid Email/Could not connect to the Newsletter server" +msgstr "" + +#: ../admin/revslider-admin.class.php:1133 ../admin/revslider-admin.class.php:1151 +msgid "No Email given" +msgstr "" + +#: ../admin/revslider-admin.class.php:1145 +msgid "Success! Please check your Emails to finish the process" +msgstr "" + +#: ../admin/revslider-admin.class.php:1171 +msgid "Navigation saved/updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1179 +msgid "Navigations updated" +msgstr "" + +#: ../admin/revslider-admin.class.php:1190 +msgid "Navigation deleted" +msgstr "" + +#: ../admin/revslider-admin.class.php:1194 +msgid "Wrong ID given" +msgstr "" + +#: ../admin/revslider-admin.class.php:1201 +msgid "Successfully fetched Facebook albums" +msgstr "" + +#: ../admin/revslider-admin.class.php:1204 +msgid "Could not fetch Facebook albums" +msgstr "" + +#: ../admin/revslider-admin.class.php:1209 +msgid "Cleared Albums" +msgstr "" + +#: ../admin/revslider-admin.class.php:1218 +msgid "Successfully fetched flickr photosets" +msgstr "" + +#: ../admin/revslider-admin.class.php:1221 +msgid "Could not fetch flickr photosets" +msgstr "" + +#: ../admin/revslider-admin.class.php:1227 +msgid "Cleared Photosets" +msgstr "" + +#: ../admin/revslider-admin.class.php:1230 +msgid "No User URL - Could not fetch flickr photosets" +msgstr "" + +#: ../admin/revslider-admin.class.php:1234 +msgid "No API KEY - Could not fetch flickr photosets" +msgstr "" + +#: ../admin/revslider-admin.class.php:1243 +msgid "Successfully fetched YouTube playlists" +msgstr "" + +#: ../admin/revslider-admin.class.php:1246 +msgid "Could not fetch YouTube playlists" +msgstr "" + +#: ../admin/revslider-admin.class.php:1332 +msgid "No Data Received" +msgstr "" + +#: ../admin/revslider-admin.class.php:1342 +msgid "Loading Error" +msgstr "" + +#: ../admin/revslider-admin.class.php:1344 +msgid "Loading Error: " +msgstr "" + +#: ../admin/views/master-view.php:55 ../admin/views/system/validation.php:52 +msgid "Please Wait..." +msgstr "" + +#: ../admin/views/navigation-editor.php:33 +msgid "Select the Navigation Category to Edit" +msgstr "" + +#: ../admin/views/navigation-editor.php:33 +msgid "Add New" +msgstr "" + +#: ../admin/views/navigation-editor.php:36 +msgid "#ID" +msgstr "" + +#: ../admin/views/navigation-editor.php:37 +msgid "Skin Name" +msgstr "" + +#: ../admin/views/navigation-editor.php:40 ../admin/views/templates/slider-main- +#: options.php:2456 +msgid "Thumbs" +msgstr "" + +#: ../admin/views/navigation-editor.php:42 ../admin/views/navigation-editor.php: +#: 67 ../admin/views/templates/slide-stage.php:34 +msgid "Actions" +msgstr "" + +#: ../admin/views/navigation-editor.php:58 +msgid "Editing" +msgstr "" + +#: ../admin/views/navigation-editor.php:58 ../admin/views/system/dialog-video.php: +#: 227 +msgid "Remove" +msgstr "" + +#: ../admin/views/navigation-editor.php:61 +msgid "Markup" +msgstr "" + +#: ../admin/views/navigation-editor.php:69 ../admin/views/navigation-editor.php: +#: 70 ../admin/views/navigation-editor.php:71 ../admin/views/navigation-editor. +#: php:72 +msgid "Reset Defaults" +msgstr "" + +#: ../admin/views/navigation-editor.php:73 +msgid "Parameters" +msgstr "" + +#: ../admin/views/navigation-editor.php:75 ../admin/views/templates/slide-general- +#: settings.php:484 +msgid "Slide Title" +msgstr "" + +#: ../admin/views/navigation-editor.php:76 +msgid "Slide Description" +msgstr "" + +#: ../admin/views/navigation-editor.php:80 +msgid "Parameter " +msgstr "" + +#: ../admin/views/navigation-editor.php:94 ../includes/operations.class.php:1409 +msgid "CSS" +msgstr "" + +#: ../admin/views/navigation-editor.php:100 +msgid "Style Helper" +msgstr "" + +#: ../admin/views/navigation-editor.php:102 +msgid "Color Value" +msgstr "" + +#: ../admin/views/navigation-editor.php:106 ../admin/views/navigation-editor.php: +#: 120 ../admin/views/navigation-editor.php:138 ../admin/views/navigation-editor. +#: php:154 ../admin/views/navigation-editor.php:170 ../admin/views/navigation- +#: editor.php:184 ../admin/views/templates/template-selector.php:17 .. +#: /admin/views/templates/template-slider-selector.php:16 +msgid "Add" +msgstr "" + +#: ../admin/views/navigation-editor.php:109 ../admin/views/templates/slide-stage. +#: php:2157 ../admin/views/templates/slider-main-options.php:3248 +msgid "Border Radius" +msgstr "" + +#: ../admin/views/navigation-editor.php:111 +msgid "Top Left" +msgstr "" + +#: ../admin/views/navigation-editor.php:113 +msgid "Top Right" +msgstr "" + +#: ../admin/views/navigation-editor.php:115 +msgid "Bottom Right" +msgstr "" + +#: ../admin/views/navigation-editor.php:117 +msgid "Bottom Left" +msgstr "" + +#: ../admin/views/navigation-editor.php:123 ../admin/views/templates/slide-stage. +#: php:244 ../admin/views/templates/slide-stage.php:512 .. +#: /admin/views/templates/slide-stage.php:2005 ../admin/views/templates/slide- +#: stage.php:2070 ../admin/views/templates/slide-stage.php:2136 +msgid "Border" +msgstr "" + +#: ../admin/views/navigation-editor.php:125 ../admin/views/templates/slider-main- +#: options.php:2108 ../admin/views/templates/slider-main-options.php:2540 .. +#: /admin/views/templates/slider-main-options.php:2570 .. +#: /admin/views/templates/slider-main-options.php:2683 .. +#: /admin/views/templates/slider-main-options.php:2853 .. +#: /admin/views/templates/slider-main-options.php:3021 .. +#: /admin/views/templates/slider-main-options.php:3356 +msgid "Top" +msgstr "" + +#: ../admin/views/navigation-editor.php:127 ../admin/views/templates/slide-stage. +#: php:282 ../admin/views/templates/slider-main-options.php:2318 .. +#: /admin/views/templates/slider-main-options.php:2533 .. +#: /admin/views/templates/slider-main-options.php:2562 .. +#: /admin/views/templates/slider-main-options.php:2677 .. +#: /admin/views/templates/slider-main-options.php:2847 .. +#: /admin/views/templates/slider-main-options.php:3015 .. +#: /admin/views/templates/slider-main-options.php:3350 +msgid "Right" +msgstr "" + +#: ../admin/views/navigation-editor.php:129 ../admin/views/templates/slider-main- +#: options.php:2109 ../admin/views/templates/slider-main-options.php:2542 .. +#: /admin/views/templates/slider-main-options.php:2572 .. +#: /admin/views/templates/slider-main-options.php:2685 .. +#: /admin/views/templates/slider-main-options.php:2855 .. +#: /admin/views/templates/slider-main-options.php:3023 .. +#: /admin/views/templates/slider-main-options.php:3358 +msgid "Bottom" +msgstr "" + +#: ../admin/views/navigation-editor.php:131 ../admin/views/templates/slide-stage. +#: php:280 ../admin/views/templates/slider-main-options.php:2316 .. +#: /admin/views/templates/slider-main-options.php:2531 .. +#: /admin/views/templates/slider-main-options.php:2560 .. +#: /admin/views/templates/slider-main-options.php:2675 .. +#: /admin/views/templates/slider-main-options.php:2845 .. +#: /admin/views/templates/slider-main-options.php:3013 .. +#: /admin/views/templates/slider-main-options.php:3348 +msgid "Left" +msgstr "" + +#: ../admin/views/navigation-editor.php:133 ../admin/views/navigation-editor.php: +#: 149 ../admin/views/navigation-editor.php:165 ../admin/views/templates/slide- +#: stage.php:751 ../admin/views/templates/slide-stage.php:927 +msgid "Opacity" +msgstr "" + +#: ../admin/views/navigation-editor.php:141 +msgid "Text-Shadow" +msgstr "" + +#: ../admin/views/navigation-editor.php:143 ../admin/views/navigation-editor.php: +#: 159 ../admin/views/templates/slide-stage.php:1127 +msgid "Angle" +msgstr "" + +#: ../admin/views/navigation-editor.php:145 ../admin/views/navigation-editor.php: +#: 161 +msgid "Distance" +msgstr "" + +#: ../admin/views/navigation-editor.php:147 ../admin/views/navigation-editor.php: +#: 163 +msgid "Blur" +msgstr "" + +#: ../admin/views/navigation-editor.php:157 +msgid "Box-Shadow" +msgstr "" + +#: ../admin/views/navigation-editor.php:173 ../admin/views/templates/slide-stage. +#: php:153 ../admin/views/templates/slide-stage.php:154 .. +#: /admin/views/templates/slide-stage.php:2030 ../admin/views/templates/slide- +#: stage.php:2031 +msgid "Font Family" +msgstr "" + +#: ../admin/views/navigation-editor.php:190 +msgid "Resets" +msgstr "" + +#: ../admin/views/navigation-editor.php:192 ../admin/views/navigation-editor.php: +#: 194 ../admin/views/navigation-editor.php:196 ../admin/views/navigation-editor. +#: php:198 +msgid "Classes & Style" +msgstr "" + +#: ../admin/views/navigation-editor.php:193 ../admin/views/navigation-editor.php: +#: 195 ../admin/views/navigation-editor.php:197 ../admin/views/navigation-editor. +#: php:199 +msgid "Only Classes" +msgstr "" + +#: ../admin/views/navigation-editor.php:218 +msgid "Live Preview - Hover & Click for test" +msgstr "" + +#: ../admin/views/navigation-editor.php:220 +msgid "Suggested Width:" +msgstr "" + +#: ../admin/views/navigation-editor.php:222 +msgid "Suggested Height:" +msgstr "" + +#: ../admin/views/navigation-editor.php:241 +msgid "Save All Changes" +msgstr "" + +#: ../admin/views/navigation-editor.php:302 +msgid "View" +msgstr "" + +#: ../admin/views/navigation-editor.php:302 +msgid "Edit" +msgstr "" + +#: ../admin/views/navigation-editor.php:1236 +msgid "Custom Navigations" +msgstr "" + +#: ../admin/views/navigation-editor.php:1239 +msgid "Default Navigations" +msgstr "" + +#: ../admin/views/slide-editor.php:312 +msgid "Slider:" +msgstr "" + +#: ../admin/views/slide-editor.php:315 +msgid "Edit Template Slide" +msgstr "" + +#: ../admin/views/slide-editor.php:317 ../admin/views/templates/slides-list.php: +#: 107 ../admin/views/templates/wpml-selector.php:10 +msgid "Edit Slide" +msgstr "" + +#: ../admin/views/slide-editor.php:319 ../admin/views/slider-overview.php:290 +msgid "Title:" +msgstr "" + +#: ../admin/views/slide-editor.php:322 ../admin/views/slider-overview.php:67 .. +#: /admin/views/templates/slider-main-options.php:33 .. +#: /admin/views/templates/slides.php:10 +msgid "Help" +msgstr "" + +#: ../admin/views/slide-editor.php:351 +msgid "" +"Warning!!! The jquery ui javascript include that is loaded by some of " +"the plugins are custom made and not contain needed components like " +"'autocomplete' or 'draggable' function.\n" +" Without those functions the editor may not work correctly. Please remove " +"those custom jquery ui includes in order the editor will work correctly." +msgstr "" + +#: ../admin/views/slide-editor.php:365 +msgid "Insert Meta" +msgstr "" + +#: ../admin/views/slide-editor.php:372 +msgid "Post Replace Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:374 +msgid "Any custom meta tag" +msgstr "" + +#: ../admin/views/slide-editor.php:375 ../admin/views/slide-editor.php:421 +msgid "Post Title" +msgstr "" + +#: ../admin/views/slide-editor.php:376 +msgid "Post Excerpt" +msgstr "" + +#: ../admin/views/slide-editor.php:377 +msgid "Post Alias" +msgstr "" + +#: ../admin/views/slide-editor.php:378 ../admin/views/slide-editor.php:422 +msgid "Post content" +msgstr "" + +#: ../admin/views/slide-editor.php:379 ../admin/views/slide-editor.php:423 .. +#: /admin/views/slide-editor.php:531 +msgid "The link to the post" +msgstr "" + +#: ../admin/views/slide-editor.php:380 ../admin/views/slide-editor.php:424 .. +#: /admin/views/slide-editor.php:445 +msgid "Date created" +msgstr "" + +#: ../admin/views/slide-editor.php:381 +msgid "Date modified" +msgstr "" + +#: ../admin/views/slide-editor.php:382 +msgid "Author name" +msgstr "" + +#: ../admin/views/slide-editor.php:383 +msgid "Number of comments" +msgstr "" + +#: ../admin/views/slide-editor.php:384 +msgid "List of categories with links" +msgstr "" + +#: ../admin/views/slide-editor.php:385 +msgid "List of tags with links" +msgstr "" + +#: ../admin/views/slide-editor.php:389 +msgid "Featured Image URL" +msgstr "" + +#: ../admin/views/slide-editor.php:390 +msgid "Featured Image <img />" +msgstr "" + +#: ../admin/views/slide-editor.php:398 +msgid "Events Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:400 +msgid "Event start date" +msgstr "" + +#: ../admin/views/slide-editor.php:401 +msgid "Event end date" +msgstr "" + +#: ../admin/views/slide-editor.php:402 +msgid "Event start time" +msgstr "" + +#: ../admin/views/slide-editor.php:403 +msgid "Event end time" +msgstr "" + +#: ../admin/views/slide-editor.php:404 +msgid "Event ID" +msgstr "" + +#: ../admin/views/slide-editor.php:405 +msgid "Event location name" +msgstr "" + +#: ../admin/views/slide-editor.php:406 +msgid "Event location slug" +msgstr "" + +#: ../admin/views/slide-editor.php:407 +msgid "Event location address" +msgstr "" + +#: ../admin/views/slide-editor.php:408 +msgid "Event location town" +msgstr "" + +#: ../admin/views/slide-editor.php:409 +msgid "Event location state" +msgstr "" + +#: ../admin/views/slide-editor.php:410 +msgid "Event location postcode" +msgstr "" + +#: ../admin/views/slide-editor.php:411 +msgid "Event location region" +msgstr "" + +#: ../admin/views/slide-editor.php:412 +msgid "Event location country" +msgstr "" + +#: ../admin/views/slide-editor.php:419 +msgid "Flickr Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:425 ../admin/views/slide-editor.php:446 .. +#: /admin/views/slide-editor.php:468 ../admin/views/slide-editor.php:491 .. +#: /admin/views/slide-editor.php:533 +msgid "Username" +msgstr "" + +#: ../admin/views/slide-editor.php:426 +msgid "Views" +msgstr "" + +#: ../admin/views/slide-editor.php:430 ../admin/views/slide-editor.php:452 .. +#: /admin/views/slide-editor.php:474 ../admin/views/slide-editor.php:496 .. +#: /admin/views/slide-editor.php:516 ../admin/views/slide-editor.php:540 +msgid "Image URL" +msgstr "" + +#: ../admin/views/slide-editor.php:431 ../admin/views/slide-editor.php:453 .. +#: /admin/views/slide-editor.php:475 ../admin/views/slide-editor.php:497 .. +#: /admin/views/slide-editor.php:517 ../admin/views/slide-editor.php:541 +msgid "Image <img />" +msgstr "" + +#: ../admin/views/slide-editor.php:440 +msgid "Instagram Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:442 ../admin/views/slide-editor.php:464 .. +#: /admin/views/slide-editor.php:486 ../admin/views/slide-editor.php:508 .. +#: /admin/views/slide-editor.php:528 ../admin/views/templates/slide-stage.php: +#: 1241 ../admin/views/templates/slider-main-options.php:433 ../includes/widget. +#: class.php:61 +msgid "Title" +msgstr "" + +#: ../admin/views/slide-editor.php:443 ../admin/views/slide-editor.php:465 .. +#: /admin/views/slide-editor.php:487 ../admin/views/slide-editor.php:510 .. +#: /admin/views/slide-editor.php:530 +msgid "Content" +msgstr "" + +#: ../admin/views/slide-editor.php:444 ../admin/views/slide-editor.php:466 .. +#: /admin/views/slide-editor.php:488 ../admin/views/slide-editor.php:512 +msgid "Link" +msgstr "" + +#: ../admin/views/slide-editor.php:447 ../admin/views/slide-editor.php:492 .. +#: /admin/views/slide-editor.php:534 +msgid "Number of Likes" +msgstr "" + +#: ../admin/views/slide-editor.php:448 ../admin/views/slide-editor.php:536 +msgid "Number of Comments" +msgstr "" + +#: ../admin/views/slide-editor.php:462 +msgid "Twitter Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:467 ../admin/views/slide-editor.php:489 .. +#: /admin/views/slide-editor.php:511 ../admin/views/slide-editor.php:532 +msgid "Pulbishing Date" +msgstr "" + +#: ../admin/views/slide-editor.php:469 +msgid "Retweet Count" +msgstr "" + +#: ../admin/views/slide-editor.php:470 +msgid "Favorite Count" +msgstr "" + +#: ../admin/views/slide-editor.php:484 +msgid "Facebook Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:490 +msgid "Last Modify Date" +msgstr "" + +#: ../admin/views/slide-editor.php:506 +msgid "YouTube Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:509 ../admin/views/slide-editor.php:529 +msgid "Excerpt" +msgstr "" + +#: ../admin/views/slide-editor.php:526 +msgid "Vimeo Placeholders:" +msgstr "" + +#: ../admin/views/slide-editor.php:535 +msgid "Number of Views" +msgstr "" + +#: ../admin/views/slide-editor.php:552 ../admin/views/templates/slide-stage.php: +#: 250 ../admin/views/templates/slide-stage.php:515 +msgid "Advanced CSS" +msgstr "" + +#: ../admin/views/slide-editor.php:555 +msgid "Style from Options" +msgstr "" + +#: ../admin/views/slide-editor.php:555 +msgid "Editable via Option Fields, Saved in the Class:" +msgstr "" + +#: ../admin/views/slide-editor.php:559 +msgid "Additional Custom Styling" +msgstr "" + +#: ../admin/views/slide-editor.php:559 +msgid "Appended in the Class:" +msgstr "" + +#: ../admin/views/slide-editor.php:564 ../admin/views/slide-editor.php:583 .. +#: /admin/views/templates/slide-stage.php:86 ../admin/views/templates/slide-stage. +#: php:701 ../admin/views/templates/slide-stage.php:876 +msgid "Save As" +msgstr "" + +#: ../admin/views/slide-editor.php:566 ../admin/views/slide-editor.php:585 +msgid "Save As:" +msgstr "" + +#: ../admin/views/slide-editor.php:570 +msgid "Rename CSS" +msgstr "" + +#: ../admin/views/slide-editor.php:572 ../admin/views/slide-editor.php:899 +msgid "Rename to:" +msgstr "" + +#: ../admin/views/slide-editor.php:576 +msgid "Layer Inline CSS" +msgstr "" + +#: ../admin/views/slide-editor.php:578 +msgid "Advanced Custom Styling" +msgstr "" + +#: ../admin/views/slide-editor.php:578 +msgid "Appended Inline to the Layer Markup" +msgstr "" + +#: ../admin/views/slide-editor.php:589 +msgid "Save Under" +msgstr "" + +#: ../admin/views/slide-editor.php:591 +msgid "Save Under:" +msgstr "" + +#: ../admin/views/slide-editor.php:839 ../admin/views/slide-editor.php:881 +msgid "Save Slide" +msgstr "" + +#: ../admin/views/slide-editor.php:843 +msgid "Update Static Layers" +msgstr "" + +#: ../admin/views/slide-editor.php:847 +msgid "updating" +msgstr "" + +#: ../admin/views/slide-editor.php:849 ../admin/views/slide-editor.php:887 .. +#: /admin/views/slide-overview.php:169 +msgid "Slider Settings" +msgstr "" + +#: ../admin/views/slide-editor.php:850 +msgid "Slides Overview" +msgstr "" + +#: ../admin/views/slide-editor.php:855 ../admin/views/templates/wpml-selector.php:9 +msgid "Delete Slide" +msgstr "" + +#: ../admin/views/slide-editor.php:877 +msgid "CSS Global" +msgstr "" + +#: ../admin/views/slide-editor.php:891 ../admin/views/templates/slider-main- +#: options.php:1434 ../admin/views/templates/slider-main-options.php:4449 .. +#: /admin/views/templates/sliders-list.php:169 +msgid "Preview" +msgstr "" + +#: ../admin/views/slide-editor.php:897 +msgid "Rename Animation" +msgstr "" + +#: ../admin/views/slide-editor.php:922 +msgid "Delete this slide?" +msgstr "" + +#: ../admin/views/slide-overview.php:51 +msgid "New Post" +msgstr "" + +#: ../admin/views/slide-overview.php:61 +msgid "Edit Posts" +msgstr "" + +#: ../admin/views/slide-overview.php:65 +msgid "This is a list of posts that are taken from multiple sources." +msgstr "" + +#: ../admin/views/slide-overview.php:67 +msgid "Sort by" +msgstr "" + +#: ../admin/views/slide-overview.php:70 +msgid "Updating Sorting..." +msgstr "" + +#: ../admin/views/slide-overview.php:75 ../admin/views/templates/slides-list.php:5 +msgid "Post List" +msgstr "" + +#: ../admin/views/slide-overview.php:76 ../admin/views/templates/slides-list.php:6 +msgid "Saving Order" +msgstr "" + +#: ../admin/views/slide-overview.php:80 ../admin/views/templates/slides-list.php:12 +msgid "No Posts Found" +msgstr "" + +#: ../admin/views/slide-overview.php:133 +msgid "Unpublish Post" +msgstr "" + +#: ../admin/views/slide-overview.php:135 +msgid "Publish Post" +msgstr "" + +#: ../admin/views/slide-overview.php:140 +msgid "Edit Post" +msgstr "" + +#: ../admin/views/slide-overview.php:144 ../admin/views/slide-overview.php:146 +msgid "" +"Click to change the slide image. Note: The post featured image will be " +"changed." +msgstr "" + +#: ../admin/views/slide-overview.php:146 +msgid "no image" +msgstr "" + +#: ../admin/views/slide-overview.php:150 ../admin/views/templates/slide-selector. +#: php:233 ../admin/views/templates/slide-stage.php:89 .. +#: /admin/views/templates/slide-stage.php:704 ../admin/views/templates/slide- +#: stage.php:879 ../admin/views/templates/sliders-list.php:167 .. +#: /admin/views/templates/slides-list.php:134 +msgid "Delete" +msgstr "" + +#: ../admin/views/slide-overview.php:173 +msgid "" +"Warning! Removing this entry will cause the original wordpress post to be " +"deleted." +msgstr "" + +#: ../admin/views/slider-overview.php:69 +msgid "Global Settings" +msgstr "" + +#: ../admin/views/slider-overview.php:76 +msgid "Revolution Sliders" +msgstr "" + +#: ../admin/views/slider-overview.php:81 +msgid "Sort By:" +msgstr "" + +#: ../admin/views/slider-overview.php:83 +msgid "By ID" +msgstr "" + +#: ../admin/views/slider-overview.php:84 +msgid "By Name" +msgstr "" + +#: ../admin/views/slider-overview.php:85 +msgid "By Type" +msgstr "" + +#: ../admin/views/slider-overview.php:86 +msgid "By Favorit" +msgstr "" + +#: ../admin/views/slider-overview.php:89 +msgid "Filter By:" +msgstr "" + +#: ../admin/views/slider-overview.php:92 ../admin/views/templates/slider-main- +#: options.php:3551 +msgid "All" +msgstr "" + +#: ../admin/views/slider-overview.php:93 ../admin/views/templates/sliders-list. +#: php:33 +msgid "Posts" +msgstr "" + +#: ../admin/views/slider-overview.php:94 ../admin/views/templates/slider-main- +#: options.php:155 ../admin/views/templates/sliders-list.php:21 +msgid "Gallery" +msgstr "" + +#: ../admin/views/slider-overview.php:95 ../admin/views/system/dialog-video.php: +#: 30 ../admin/views/templates/sliders-list.php:74 +msgid "Vimeo" +msgstr "" + +#: ../admin/views/slider-overview.php:96 ../admin/views/system/dialog-video.php: +#: 28 ../admin/views/templates/sliders-list.php:68 +msgid "YouTube" +msgstr "" + +#: ../admin/views/slider-overview.php:97 ../admin/views/templates/sliders-list. +#: php:50 +msgid "Twitter" +msgstr "" + +#: ../admin/views/slider-overview.php:98 ../admin/views/templates/sliders-list. +#: php:44 +msgid "Facebook" +msgstr "" + +#: ../admin/views/slider-overview.php:99 ../admin/views/templates/sliders-list. +#: php:56 +msgid "Instagram" +msgstr "" + +#: ../admin/views/slider-overview.php:100 ../admin/views/templates/sliders-list. +#: php:62 +msgid "Flickr" +msgstr "" + +#: ../admin/views/slider-overview.php:111 +msgid "No Sliders Found" +msgstr "" + +#: ../admin/views/slider-overview.php:126 ../admin/views/templates/slider-main- +#: options.php:4475 +msgid "Standard Embeding" +msgstr "" + +#: ../admin/views/slider-overview.php:127 ../admin/views/templates/slider-main- +#: options.php:4476 +msgid "For the" +msgstr "" + +#: ../admin/views/slider-overview.php:127 ../admin/views/templates/slider-main- +#: options.php:4476 +msgid "pages or posts editor" +msgstr "" + +#: ../admin/views/slider-overview.php:127 ../admin/views/templates/slider-main- +#: options.php:4476 +msgid "insert the shortcode:" +msgstr "" + +#: ../admin/views/slider-overview.php:129 ../admin/views/slider-overview.php:133 . +#: ./admin/views/templates/slider-main-options.php:4478 .. +#: /admin/views/templates/slider-main-options.php:4482 +msgid "From the" +msgstr "" + +#: ../admin/views/slider-overview.php:129 ../admin/views/templates/slider-main- +#: options.php:4478 +msgid "widgets panel" +msgstr "" + +#: ../admin/views/slider-overview.php:129 ../admin/views/templates/slider-main- +#: options.php:4478 +msgid "drag the \"Revolution Slider\" widget to the desired sidebar" +msgstr "" + +#: ../admin/views/slider-overview.php:131 ../admin/views/templates/slider-main- +#: options.php:4480 +msgid "Advanced Embeding" +msgstr "" + +#: ../admin/views/slider-overview.php:133 ../admin/views/templates/slider-main- +#: options.php:4482 +msgid "theme html" +msgstr "" + +#: ../admin/views/slider-overview.php:133 ../admin/views/templates/slider-main- +#: options.php:4482 +msgid "use" +msgstr "" + +#: ../admin/views/slider-overview.php:134 ../admin/views/templates/slider-main- +#: options.php:4483 +msgid "To add the slider only to homepage use" +msgstr "" + +#: ../admin/views/slider-overview.php:135 ../admin/views/templates/slider-main- +#: options.php:4484 +msgid "To add the slider on specific pages or posts use" +msgstr "" + +#: ../admin/views/slider-overview.php:154 +msgid "Version Information" +msgstr "" + +#: ../admin/views/slider-overview.php:159 +msgid "Installed Version" +msgstr "" + +#: ../admin/views/slider-overview.php:163 +msgid "Latest Stable Version" +msgstr "" + +#: ../admin/views/slider-overview.php:163 +msgid "Update to Stable (Free)" +msgstr "" + +#: ../admin/views/slider-overview.php:167 +msgid "Latest Available Version" +msgstr "" + +#: ../admin/views/slider-overview.php:167 +msgid "Check Version" +msgstr "" + +#: ../admin/views/slider-overview.php:179 +msgid "Need Premium Support and Live Updates ?" +msgstr "" + +#: ../admin/views/slider-overview.php:179 +msgid "Why is this Important ?" +msgstr "" + +#: ../admin/views/slider-overview.php:184 +msgid "Benefits" +msgstr "" + +#: ../admin/views/slider-overview.php:186 +msgid "Get Premium Support" +msgstr "" + +#: ../admin/views/slider-overview.php:186 +msgid "" +" - We help you in case of Bugs, installation problems, and Conflicts with " +"other plugins and Themes" +msgstr "" + +#: ../admin/views/slider-overview.php:187 +msgid "Live Updates" +msgstr "" + +#: ../admin/views/slider-overview.php:187 +msgid "" +" - Get the latest version of our Plugin. New Features and Bug Fixes are " +"available regularly !" +msgstr "" + +#: ../admin/views/slider-overview.php:204 +msgid "Information" +msgstr "" + +#: ../admin/views/slider-overview.php:209 +msgid "" +"Please note that this plugin came bundled with a theme. The use of the " +"Revolution Slider is limited to this theme only.
        If you need support from " +"the Slider author ThemePunch or you want to use the Revolution slider with " +"an other theme you will need an extra single license available at CodeCanyon." +msgstr "" + +#: ../admin/views/slider-overview.php:220 +msgid "Newsletter" +msgstr "" + +#: ../admin/views/slider-overview.php:220 +msgid "Why subscribe?" +msgstr "" + +#: ../admin/views/slider-overview.php:226 +msgid "Unsubscribe our newsletter" +msgstr "" + +#: ../admin/views/slider-overview.php:226 +msgid "Subscribe to our newsletter" +msgstr "" + +#: ../admin/views/slider-overview.php:226 +msgid "Enter your E-Mail here" +msgstr "" + +#: ../admin/views/slider-overview.php:227 +msgid "Subscribe" +msgstr "" + +#: ../admin/views/slider-overview.php:229 +msgid "Unsubscribe" +msgstr "" + +#: ../admin/views/slider-overview.php:230 +msgid "Cancel" +msgstr "" + +#: ../admin/views/slider-overview.php:233 +msgid "unsubscibe from newsletter" +msgstr "" + +#: ../admin/views/slider-overview.php:235 +msgid "Perks of subscribing to our Newsletter" +msgstr "" + +#: ../admin/views/slider-overview.php:237 +msgid "Receive info on the latest ThemePunch product updates" +msgstr "" + +#: ../admin/views/slider-overview.php:238 +msgid "Be the first to know about new products by ThemePunch and their partners" +msgstr "" + +#: ../admin/views/slider-overview.php:239 +msgid "" +"Participate in polls and customer surveys that help us increase the quality " +"of our products and services" +msgstr "" + +#: ../admin/views/slider-overview.php:248 +msgid "Update History" +msgstr "" + +#: ../admin/views/slider-overview.php:258 ../admin/views/slider-overview.php:283 . +#: ./admin/views/templates/slider-main-options.php:3725 .. +#: /admin/views/templates/sliders-list.php:190 +msgid "Import Slider" +msgstr "" + +#: ../admin/views/slider-overview.php:264 +msgid "Choose the import file" +msgstr "" + +#: ../admin/views/slider-overview.php:268 +msgid "Note: styles templates will be updated if they exist!" +msgstr "" + +#: ../admin/views/slider-overview.php:271 ../admin/views/templates/template- +#: selector.php:248 ../admin/views/templates/template-slider-selector.php:233 +msgid "Custom Animations:" +msgstr "" + +#: ../admin/views/slider-overview.php:272 ../admin/views/slider-overview.php:277 . +#: ./admin/views/templates/slider-main-options.php:3714 .. +#: /admin/views/templates/slider-main-options.php:3719 .. +#: /admin/views/templates/template-selector.php:249 .. +#: /admin/views/templates/template-selector.php:254 .. +#: /admin/views/templates/template-slider-selector.php:234 .. +#: /admin/views/templates/template-slider-selector.php:239 +msgid "overwrite" +msgstr "" + +#: ../admin/views/slider-overview.php:273 ../admin/views/slider-overview.php:278 . +#: ./admin/views/templates/slider-main-options.php:3715 .. +#: /admin/views/templates/slider-main-options.php:3720 .. +#: /admin/views/templates/template-selector.php:250 .. +#: /admin/views/templates/template-selector.php:255 .. +#: /admin/views/templates/template-slider-selector.php:235 .. +#: /admin/views/templates/template-slider-selector.php:240 +msgid "append" +msgstr "" + +#: ../admin/views/slider-overview.php:276 ../admin/views/templates/slide-stage. +#: php:62 ../admin/views/templates/template-selector.php:253 .. +#: /admin/views/templates/template-slider-selector.php:238 +msgid "Static Styles:" +msgstr "" + +#: ../admin/views/slider-overview.php:279 ../admin/views/templates/slider-main- +#: options.php:3721 ../admin/views/templates/template-selector.php:256 .. +#: /admin/views/templates/template-slider-selector.php:241 +msgid "ignore" +msgstr "" + +#: ../admin/views/slider-overview.php:288 ../admin/views/templates/slide-selector. +#: php:231 ../admin/views/templates/sliders-list.php:168 .. +#: /admin/views/templates/slides-list.php:136 +msgid "Duplicate" +msgstr "" + +#: ../admin/views/system/dialog-copy-move.php:3 +msgid "Do It!" +msgstr "" + +#: ../admin/views/system/dialog-copy-move.php:3 +msgid "Copy / move slide" +msgstr "" + +#: ../admin/views/system/dialog-copy-move.php:7 ../includes/widget.class.php:66 +msgid "Choose Slider" +msgstr "" + +#: ../admin/views/system/dialog-copy-move.php:12 +msgid "Choose Operation" +msgstr "" + +#: ../admin/views/system/dialog-copy-move.php:15 +msgid "Copy" +msgstr "" + +#: ../admin/views/system/dialog-copy-move.php:18 +msgid "Move" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:25 .. +#: /admin/views/templates/slide-general-settings.php:7 .. +#: /admin/views/templates/slider-main-options.php:1723 +msgid "General Settings" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:36 +msgid "View Plugin Permission:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:40 +msgid "To Admin" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:41 +msgid "To Editor, Admin" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:42 +msgid "Author, Editor, Admin" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:46 +msgid "The role of user that can view and edit the plugin" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:52 +msgid "Include RevSlider libraries globally:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:58 .. +#: /admin/views/system/dialog-global-settings.php:92 ../admin/views/system/dialog- +#: global-settings.php:113 ../admin/views/system/dialog-global-settings.php:134 .. +#: /admin/views/system/dialog-global-settings.php:187 .. +#: /admin/views/system/dialog-global-settings.php:209 .. +#: /admin/views/system/dialog-video.php:152 ../admin/views/templates/slider-main- +#: options.php:3652 +msgid "On" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:63 .. +#: /admin/views/system/dialog-global-settings.php:97 ../admin/views/system/dialog- +#: global-settings.php:118 ../admin/views/system/dialog-global-settings.php:139 .. +#: /admin/views/system/dialog-global-settings.php:192 .. +#: /admin/views/system/dialog-global-settings.php:214 .. +#: /admin/views/system/dialog-video.php:151 ../admin/views/templates/slider-main- +#: options.php:2353 ../admin/views/templates/slider-main-options.php:3630 .. +#: /admin/views/templates/slider-main-options.php:3654 +msgid "Off" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:68 +msgid "" +"ON - Add CSS and JS Files to all pages.
        Off - CSS and JS Files will be " +"only loaded on Pages where any rev_slider shortcode exists." +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:74 +msgid "Pages to include RevSlider libraries:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:79 +msgid "" +"Specify the page id's that the front end includes will be included in. " +"Example: 2,3,5 also: homepage,3,4" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:86 +msgid "Insert JavaScript Into Footer:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:101 +msgid "" +"Putting the js to footer (instead of the head) is good for fixing some " +"javascript conflicts." +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:107 +msgid "Defer JavaScript Loading:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:122 +msgid "Defer the loading of the JavaScript libraries to maximize page loading speed." +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:128 +msgid "Enable Markup Export option:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:143 +msgid "" +"This will enable the option to export the Slider Markups to copy/paste it " +"directly into websites." +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:149 +msgid "Font Loading URL:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:154 +msgid "" +"Insert something in it and it will be used instead of http://fonts." +"googleapis.com/css?family= (For example: http://fonts.useso.com/css?family= " +"which will also work for chinese visitors)" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:161 +msgid "Default Settings for Advanced Responsive Grid Sizes:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:164 +msgid "Desktop Grid Width" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:166 +msgid "Notebook Grid Width" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:168 +msgid "Tablet Grid Width" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:170 +msgid "Mobile Grid Width" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:174 +msgid "Define the default Grid Sizes for devices: Desktop, Tablet and Mobile" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:181 +msgid "Enable Notifications:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:196 +msgid "Enable/Disable ThemePunch Notifications in the Admin Notice bar." +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:203 +msgid "Enable Logs:" +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:218 +msgid "Enable console logs for debugging." +msgstr "" + +#: ../admin/views/system/dialog-global-settings.php:228 +msgid "Update" +msgstr "" + +#: ../admin/views/system/dialog-video.php:4 +msgid "Add Video Layout" +msgstr "" + +#: ../admin/views/system/dialog-video.php:12 ../admin/views/templates/slide- +#: general-settings.php:33 ../admin/views/templates/slider-main-options.php:151 .. +#: /admin/views/templates/slider-main-options.php:202 .. +#: /admin/views/templates/slider-main-options.php:286 .. +#: /admin/views/templates/slider-main-options.php:309 +msgid "Source" +msgstr "" + +#: ../admin/views/system/dialog-video.php:13 ../admin/views/templates/slider-main- +#: options.php:2196 +msgid "Sizing" +msgstr "" + +#: ../admin/views/system/dialog-video.php:14 +msgid "Settings" +msgstr "" + +#: ../admin/views/system/dialog-video.php:15 ../admin/views/templates/slide-stage. +#: php:32 ../admin/views/templates/slider-main-options.php:2485 .. +#: /admin/views/templates/slider-main-options.php:2630 .. +#: /admin/views/templates/slider-main-options.php:2786 .. +#: /admin/views/templates/slider-main-options.php:2955 +msgid "Visibility" +msgstr "" + +#: ../admin/views/system/dialog-video.php:16 +msgid "Arguments" +msgstr "" + +#: ../admin/views/system/dialog-video.php:26 +msgid "Choose video type" +msgstr "" + +#: ../admin/views/system/dialog-video.php:32 +msgid "HTML5" +msgstr "" + +#: ../admin/views/system/dialog-video.php:36 ../admin/views/system/dialog-video. +#: php:40 ../admin/views/system/dialog-video.php:44 +msgid "From Stream" +msgstr "" + +#: ../admin/views/system/dialog-video.php:51 +msgid "Vimeo ID or URL" +msgstr "" + +#: ../admin/views/system/dialog-video.php:54 ../admin/views/templates/slide- +#: general-settings.php:156 +msgid "example: 30300114" +msgstr "" + +#: ../admin/views/system/dialog-video.php:60 +msgid "YouTube ID or URL" +msgstr "" + +#: ../admin/views/system/dialog-video.php:63 ../admin/views/system/dialog-video. +#: php:74 ../admin/views/system/dialog-video.php:82 ../admin/views/system/dialog- +#: video.php:89 ../admin/views/system/dialog-video.php:96 +msgid "example" +msgstr "" + +#: ../admin/views/system/dialog-video.php:69 +msgid "Poster Image Url" +msgstr "" + +#: ../admin/views/system/dialog-video.php:72 +msgid "Set Image" +msgstr "" + +#: ../admin/views/system/dialog-video.php:77 +msgid "Video MP4 Url" +msgstr "" + +#: ../admin/views/system/dialog-video.php:80 ../admin/views/system/dialog-video. +#: php:87 ../admin/views/system/dialog-video.php:94 +msgid "Set Video" +msgstr "" + +#: ../admin/views/system/dialog-video.php:84 +msgid "Video WEBM Url" +msgstr "" + +#: ../admin/views/system/dialog-video.php:91 +msgid "Video OGV Url" +msgstr "" + +#: ../admin/views/system/dialog-video.php:106 +msgid "Full Screen:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:111 ../admin/views/templates/slide- +#: general-settings.php:234 +msgid "Force Cover:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:116 ../admin/views/templates/slide- +#: general-settings.php:239 +msgid "Dotted Overlay:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:119 ../admin/views/templates/slide- +#: general-settings.php:242 ../admin/views/templates/slider-main-options.php:2250 +msgid "none" +msgstr "" + +#: ../admin/views/system/dialog-video.php:120 ../admin/views/templates/slide- +#: general-settings.php:243 ../admin/views/templates/slider-main-options.php:2251 +msgid "2 x 2 Black" +msgstr "" + +#: ../admin/views/system/dialog-video.php:121 ../admin/views/templates/slide- +#: general-settings.php:244 ../admin/views/templates/slider-main-options.php:2252 +msgid "2 x 2 White" +msgstr "" + +#: ../admin/views/system/dialog-video.php:122 ../admin/views/templates/slide- +#: general-settings.php:245 ../admin/views/templates/slider-main-options.php:2253 +msgid "3 x 3 Black" +msgstr "" + +#: ../admin/views/system/dialog-video.php:123 ../admin/views/templates/slide- +#: general-settings.php:246 ../admin/views/templates/slider-main-options.php:2254 +msgid "3 x 3 White" +msgstr "" + +#: ../admin/views/system/dialog-video.php:127 ../admin/views/templates/slide- +#: general-settings.php:250 +msgid "Aspect Ratio:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:130 ../admin/views/templates/slide- +#: general-settings.php:253 +msgid "16:9" +msgstr "" + +#: ../admin/views/system/dialog-video.php:131 ../admin/views/templates/slide- +#: general-settings.php:254 +msgid "4:3" +msgstr "" + +#: ../admin/views/system/dialog-video.php:139 ../admin/views/templates/slide- +#: general-settings.php:273 +msgid "Loop Video:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:142 ../admin/views/system/dialog-video. +#: php:215 ../admin/views/templates/slide-general-settings.php:275 .. +#: /admin/views/templates/slide-general-settings.php:908 +msgid "Disable" +msgstr "" + +#: ../admin/views/system/dialog-video.php:143 ../admin/views/templates/slide- +#: general-settings.php:276 +msgid "Loop, Slide is paused" +msgstr "" + +#: ../admin/views/system/dialog-video.php:144 ../admin/views/templates/slide- +#: general-settings.php:277 +msgid "Loop, Slide does not stop" +msgstr "" + +#: ../admin/views/system/dialog-video.php:149 +msgid "Autoplay:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:153 +msgid "On 1st Time" +msgstr "" + +#: ../admin/views/system/dialog-video.php:154 +msgid "Not on 1st Time" +msgstr "" + +#: ../admin/views/system/dialog-video.php:159 +msgid "Stop Other Videos:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:164 ../admin/views/templates/slide- +#: general-settings.php:282 +msgid "Next Slide On End:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:169 ../admin/views/templates/slide- +#: general-settings.php:286 +msgid "Rewind at Slide Start:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:174 +msgid "Hide Controls:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:179 +msgid "Mute:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:184 +msgid "Start at:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:185 +msgid "i.e.: 0:17" +msgstr "" + +#: ../admin/views/system/dialog-video.php:189 +msgid "End at:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:190 +msgid "i.e.: 2:41" +msgstr "" + +#: ../admin/views/system/dialog-video.php:194 +msgid "Show Cover at Pause:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:199 ../admin/views/templates/slide- +#: general-settings.php:297 +msgid "Video Speed:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:201 ../admin/views/templates/slide- +#: general-settings.php:299 +msgid "0.25" +msgstr "" + +#: ../admin/views/system/dialog-video.php:202 ../admin/views/templates/slide- +#: general-settings.php:300 +msgid "0.50" +msgstr "" + +#: ../admin/views/system/dialog-video.php:203 ../admin/views/templates/slide- +#: general-settings.php:301 ../admin/views/templates/slider-main-options.php:2355 +#: ../admin/views/templates/slider-main-options.php:3268 +msgid "1" +msgstr "" + +#: ../admin/views/system/dialog-video.php:204 ../admin/views/templates/slide- +#: general-settings.php:302 +msgid "1.5" +msgstr "" + +#: ../admin/views/system/dialog-video.php:205 ../admin/views/templates/slide- +#: general-settings.php:303 ../admin/views/templates/slider-main-options.php:2356 +msgid "2" +msgstr "" + +#: ../admin/views/system/dialog-video.php:211 +msgid "Video Preload:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:214 ../admin/views/templates/slider- +#: main-options.php:938 +msgid "Auto" +msgstr "" + +#: ../admin/views/system/dialog-video.php:216 +msgid "Metadata" +msgstr "" + +#: ../admin/views/system/dialog-video.php:223 +msgid "Preview Image" +msgstr "" + +#: ../admin/views/system/dialog-video.php:225 +msgid "Image Library" +msgstr "" + +#: ../admin/views/system/dialog-video.php:226 +msgid "Video Thumbnail" +msgstr "" + +#: ../admin/views/system/dialog-video.php:232 +msgid "Disable Mobile:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:237 +msgid "Only Preview on Mobile:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:245 +msgid "Arguments:" +msgstr "" + +#: ../admin/views/system/dialog-video.php:251 ../admin/views/system/dialog-video. +#: php:251 +msgid "Add This Video" +msgstr "" + +#: ../admin/views/system/dialog-video.php:251 +msgid "Update Video" +msgstr "" + +#: ../admin/views/system/validation.php:31 +msgid "Username:" +msgstr "" + +#: ../admin/views/system/validation.php:34 +msgid "Your Envato username." +msgstr "" + +#: ../admin/views/system/validation.php:38 +msgid "Envato API Key:" +msgstr "" + +#: ../admin/views/system/validation.php:41 +msgid "" +"You can find the API key by visiting your Envato Account page, then clicking " +"the My Settings tab. At the bottom of the page you will find your accounts " +"API key." +msgstr "" + +#: ../admin/views/system/validation.php:45 +msgid "Purchase code:" +msgstr "" + +#: ../admin/views/system/validation.php:48 +msgid "Please enter your " +msgstr "" + +#: ../admin/views/system/validation.php:48 +msgid "CodeCanyon Slider Revolution purchase code / license key" +msgstr "" + +#: ../admin/views/system/validation.php:48 +msgid ". You can find your key by following the instructions on" +msgstr "" + +#: ../admin/views/system/validation.php:48 +msgid " this page." +msgstr "" + +#: ../admin/views/system/validation.php:54 +msgid "Register" +msgstr "" + +#: ../admin/views/system/validation.php:56 +msgid "Deregister" +msgstr "" + +#: ../admin/views/system/validation.php:61 +msgid "Search for Updates" +msgstr "" + +#: ../admin/views/system/validation.php:68 +msgid "" +"To register the plugin on a different website, click the “Deregister” button " +"here first." +msgstr "" + +#: ../admin/views/system/validation.php:79 +msgid "How to get Support ?" +msgstr "" + +#: ../admin/views/system/validation.php:81 +msgid "Please feel free to contact us via our " +msgstr "" + +#: ../admin/views/system/validation.php:81 +msgid "Support Forum " +msgstr "" + +#: ../admin/views/system/validation.php:81 +msgid "and/or via the " +msgstr "" + +#: ../admin/views/system/validation.php:81 +msgid "Item Disscussion Forum" +msgstr "" + +#: ../admin/views/system/validation.php:87 +msgid "Click Here to get " +msgstr "" + +#: ../admin/views/system/validation.php:87 +msgid "Premium Support and Auto Updates" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:6 +msgid "Main Background" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:8 +msgid "Slide Animation" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:9 +msgid "Link & Seo" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:10 +msgid "Slide Info" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:34 +msgid "Source Settings" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:35 .. +#: /admin/views/templates/slide-stage.php:248 ../admin/views/templates/slider- +#: main-options.php:3428 +msgid "Parallax" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:36 +msgid "Ken Burns" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:64 +msgid "Featured Image" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:69 +msgid "Stream Image" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:75 +msgid "Stream Video" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:78 .. +#: /admin/views/templates/slide-general-settings.php:86 +msgid "Use Cover" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:83 +msgid "Stream Video + Image" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:93 +msgid "Main / Background Image" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:97 +msgid "Change Image" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:105 +msgid "External URL" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:111 +msgid "Get External" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:117 +msgid "Transparent" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:122 +msgid "Solid Colored" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:132 +msgid "YouTube Video" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:138 .. +#: /admin/views/templates/slide-general-settings.php:154 .. +#: /admin/views/templates/slide-general-settings.php:889 +msgid "ID:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:140 +msgid "example: T8--OggjJKQ" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:142 .. +#: /admin/views/templates/slide-general-settings.php:158 .. +#: /admin/views/templates/slide-general-settings.php:188 +msgid "Cover Image:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:148 +msgid "Vimeo Video" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:164 +msgid "HTML5 Video" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:170 +msgid "MPEG:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:173 .. +#: /admin/views/templates/slide-general-settings.php:179 .. +#: /admin/views/templates/slide-general-settings.php:185 +msgid "Change Video" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:176 +msgid "WEBM:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:182 +msgid "OGV:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:196 +msgid "Image Source Size:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:213 +msgid "Alt:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:215 .. +#: /admin/views/templates/slide-stage.php:1259 +msgid "From Media Library" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:216 .. +#: /admin/views/templates/slide-stage.php:1260 +msgid "From Filename" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:217 .. +#: /admin/views/templates/slide-stage.php:1261 ../admin/views/templates/slide- +#: stage.php:1729 +msgid "Custom" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:223 +msgid "Width:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:227 +msgid "Height:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:260 +msgid "Start At:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:262 +msgid "For Example: 00:17" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:267 +msgid "End At:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:269 +msgid "For Example: 02:17" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:291 +msgid "Mute Video:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:307 +msgid "Arguments YouTube:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:312 +msgid "Arguments Vimeo:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:319 +msgid "Background Fit:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:330 +msgid "Background Position:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:351 +msgid "Background Repeat:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:367 +msgid "Parallax Level:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:369 .. +#: /admin/views/templates/slide-stage.php:462 +msgid "No Parallax" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:385 .. +#: /admin/views/templates/slide-stage.php:479 +msgid "Parallax Feature in Slider Settings is deactivated, parallax will be ignored." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:393 .. +#: /admin/views/templates/slider-main-options.php:1870 +msgid "Ken Burns / Pan Zoom:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:398 +msgid "Scale: (in %):" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:399 .. +#: /admin/views/templates/slide-general-settings.php:407 .. +#: /admin/views/templates/slide-general-settings.php:415 .. +#: /admin/views/templates/slide-general-settings.php:423 +msgid "From" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:401 .. +#: /admin/views/templates/slide-general-settings.php:409 .. +#: /admin/views/templates/slide-general-settings.php:417 .. +#: /admin/views/templates/slide-general-settings.php:425 +msgid "To" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:406 +msgid "Horizontal Offsets:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:414 +msgid "Vertical Offsets:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:422 +msgid "Rotation:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:430 .. +#: /admin/views/templates/slider-main-options.php:1886 +msgid "Easing:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:470 .. +#: /admin/views/templates/slider-main-options.php:1993 +msgid "Duration (in ms):" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:486 +msgid "The title of the slide, will be shown in the slides list." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:492 +msgid "Slide \"Delay\":" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:494 +msgid "" +"A new delay value for the Slide. If no delay defined per slide, the delay " +"defined via Options (9000ms) will be used." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:500 +msgid "Slide State" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:502 +msgid "Published" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:503 +msgid "Unpublished" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:505 +msgid "" +"The state of the slide. The unpublished slide will be excluded from the " +"slider." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:518 +msgid "Language" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:529 +msgid "The language of the slide (uses WPML plugin)." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:538 +msgid "Visible from:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:540 +msgid "If set, slide will be visible after the date is reached." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:546 +msgid "Visible until:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:548 +msgid "If set, slide will be visible till the date is reached." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:555 +msgid "Thumbnail:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:573 +msgid "Slide Thumbnail. If not set - it will be taken from the slide image." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:580 +msgid "Save Performance:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:584 +msgid "Slide End Transition will first start when last Layer has been removed." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:724 +msgid "Used Transitions (Order in Loops)" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:731 +msgid "Slot / Box Amount:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:734 +msgid "# of slots/boxes the slide is divided into." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:739 +msgid "Slot Rotation:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:742 +msgid "Start Rotation of Transition (deg)." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:747 +msgid "Animation Duration:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:750 +msgid "The duration of the transition." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:755 +msgid "Easing In:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:795 +msgid "The easing of Appearing transition." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:800 +msgid "Easing Out:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:840 +msgid "The easing of Disappearing transition." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:858 +msgid "Parameter" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:859 +msgid "Max. Chars" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:869 +msgid "Description of Slider:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:872 +msgid "" +"Define a description here to show at the navigation if enabled in Slider " +"Settings" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:881 +msgid "Class:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:883 +msgid "" +"Adds a unique class to the li of the Slide like class=\"rev_special_class\" " +"(add only the classnames, seperated by space)" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:891 +msgid "" +"Adds a unique ID to the li of the Slide like id=\"rev_special_id\" (add only " +"the id)" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:897 +msgid "Custom Fields:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:899 +msgid "" +"Add as many attributes as you wish here. (i.e.: data-layer=\"firstlayer\" data-" +"custom=\"somevalue\")." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:905 +msgid "Enable Link:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:907 +msgid "Enable" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:910 +msgid "Link the Full Slide to an URL or Action." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:917 +msgid "Link Type:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:919 +msgid "Regular" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:920 +msgid "To Slide" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:922 +msgid "Regular - Link to URL, To Slide - Call a Slide Action" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:929 +msgid "Slide Link:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:931 +msgid "" +"A link on the whole slide pic (use {{link}} or {{meta:somemegatag}} in " +"template sliders to link to a post or some other meta)" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:937 +msgid "Link Target:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:939 .. +#: /admin/views/templates/slide-stage.php:2273 +msgid "Same Window" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:940 .. +#: /admin/views/templates/slide-stage.php:2274 +msgid "New Window" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:942 +msgid "The target of the slide link." +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:950 +msgid "-- Not Chosen --" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:951 +msgid "-- Next Slide --" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:952 +msgid "-- Previous Slide --" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:955 +msgid "-- Scroll Below Slider --" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:967 +msgid "Link To Slide:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:978 +msgid "Call Slide Action" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:983 +msgid "Link Sensibility:" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:985 +msgid "Front" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:986 +msgid "Back" +msgstr "" + +#: ../admin/views/templates/slide-general-settings.php:988 +msgid "The z-index position of the link related to layers" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:52 +msgid "Static / Global Layers" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:68 +msgid "Show Layers from Slide:" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:232 +msgid "Add to Templates" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:247 ../admin/views/templates/slide- +#: selector.php:259 +msgid "Add Slide" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:252 +msgid "Add Blank Slide" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:255 +msgid "Add from Template" +msgstr "" + +#: ../admin/views/templates/slide-selector.php:315 +msgid "Slide name should not be empty" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:12 +msgid "Style" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:13 +msgid "Advanced Style on/off" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:19 ../admin/views/templates/slide- +#: stage.php:1766 +msgid "Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:20 +msgid "Play/Pause Single Layer Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:26 ../admin/views/templates/slide- +#: stage.php:1031 +msgid "Loop Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:27 +msgid "Play/Pause Layer Loop Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:33 +msgid "Behavior" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:36 +msgid "Attributes" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:38 +msgid "Static Layers" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:40 +msgid "Performance" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:56 +msgid "Global Style Editor" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:58 +msgid "Dynamic Styles (Not Editable):" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:68 +msgid "Save Static Styles" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:69 +msgid "Overwrite current static styles?" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:76 +msgid "Caption Style" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:77 +msgid "Style Template" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:79 +msgid "More Style Settings" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:80 +msgid "Reset Style Template" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:84 +msgid "Style Options" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:85 ../admin/views/templates/slide- +#: stage.php:700 ../admin/views/templates/slide-stage.php:875 +msgid "Save" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:87 ../admin/views/templates/slide- +#: stage.php:702 ../admin/views/templates/slide-stage.php:877 +msgid "Rename" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:88 ../admin/views/templates/slide- +#: stage.php:703 ../admin/views/templates/slide-stage.php:878 +msgid "Reset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:99 +msgid "Font Size (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:100 ../admin/views/templates/slide- +#: stage.php:2220 +msgid "Font Size" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:105 +msgid "Line Height (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:106 ../admin/views/templates/slide- +#: stage.php:2221 +msgid "Line Height" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:112 +msgid "White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:126 +msgid "Layer Align Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:127 +msgid "Layer Align Center" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:128 +msgid "Layer Align Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:135 ../admin/views/templates/slide- +#: stage.php:136 +msgid "Horizontal Offset from Aligned Position (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:140 ../admin/views/templates/slide- +#: stage.php:141 +msgid "Vertical Offset from Aligned Position (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:164 ../admin/views/templates/slide- +#: stage.php:165 ../admin/views/templates/slide-stage.php:2222 +msgid "Font Weight" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:179 ../admin/views/templates/slide- +#: stage.php:180 ../admin/views/templates/slide-stage.php:522 .. +#: /admin/views/templates/slide-stage.php:523 ../admin/views/templates/slider- +#: main-options.php:2127 ../admin/views/templates/slider-main-options.php:2260 .. +#: /admin/views/templates/slider-main-options.php:2364 +msgid "Font Color" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:186 +msgid "Layer Align Top" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:187 +msgid "Layer Align Middle" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:188 +msgid "Layer Align Bottom" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:194 ../admin/views/templates/slide- +#: stage.php:195 ../admin/views/templates/slide-stage.php:196 +msgid "Layer Width (px). Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:197 +msgid "Video Width (px). Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:200 ../admin/views/templates/slide- +#: stage.php:201 +msgid "Layer Height (px). Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:202 +msgid "Layer Height (px) Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:203 +msgid "Video Height (px). Use 'auto' to respect White Space" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:206 +msgid "Cover Mode" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:217 +msgid "Auto Linebreak (on/off - White Space:normal / nowrap). " +msgstr "" + +#: ../admin/views/templates/slide-stage.php:222 +msgid "Keep Aspect Ratio (on/off)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:227 +msgid "Reset original size" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:242 ../admin/views/templates/slide- +#: stage.php:510 ../admin/views/templates/slider-main-options.php:4509 +msgid "Font" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:243 ../admin/views/templates/slide- +#: stage.php:511 ../admin/views/templates/slide-stage.php:1975 .. +#: /admin/views/templates/slide-stage.php:2041 ../admin/views/templates/slide- +#: stage.php:2123 +msgid "Background" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:245 ../admin/views/templates/slide- +#: stage.php:513 +msgid "Transform" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:246 ../admin/views/templates/slide- +#: stage.php:514 ../admin/views/templates/slide-stage.php:752 .. +#: /admin/views/templates/slide-stage.php:928 ../admin/views/templates/slider- +#: main-options.php:3304 +msgid "Rotation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:247 ../admin/views/templates/slide- +#: stage.php:757 ../admin/views/templates/slide-stage.php:933 +msgid "Perspective" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:249 +msgid "Corners" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:251 ../admin/views/templates/slide- +#: stage.php:641 +msgid "Hover" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:257 ../admin/views/templates/slide- +#: stage.php:258 +msgid "Font Opacity" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:262 +msgid "Italic Font" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:263 +msgid "Italic Font On/Off" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:267 ../admin/views/templates/slide- +#: stage.php:268 ../admin/views/templates/slide-stage.php:531 .. +#: /admin/views/templates/slide-stage.php:532 +msgid "Font Decoration" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:278 ../admin/views/templates/slide- +#: stage.php:279 +msgid "Text Align" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:281 ../admin/views/templates/slider- +#: main-options.php:2317 ../admin/views/templates/slider-main-options.php:2532 .. +#: /admin/views/templates/slider-main-options.php:2541 .. +#: /admin/views/templates/slider-main-options.php:2561 .. +#: /admin/views/templates/slider-main-options.php:2571 .. +#: /admin/views/templates/slider-main-options.php:2676 .. +#: /admin/views/templates/slider-main-options.php:2684 .. +#: /admin/views/templates/slider-main-options.php:2846 .. +#: /admin/views/templates/slider-main-options.php:2854 .. +#: /admin/views/templates/slider-main-options.php:3014 .. +#: /admin/views/templates/slider-main-options.php:3022 .. +#: /admin/views/templates/slider-main-options.php:3349 .. +#: /admin/views/templates/slider-main-options.php:3357 +msgid "Center" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:290 ../admin/views/templates/slide- +#: stage.php:291 ../admin/views/templates/slide-stage.php:542 .. +#: /admin/views/templates/slide-stage.php:543 +msgid "Background Color" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:295 ../admin/views/templates/slide- +#: stage.php:296 ../admin/views/templates/slide-stage.php:547 .. +#: /admin/views/templates/slide-stage.php:548 +msgid "Background Opacity" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:300 ../admin/views/templates/slide- +#: stage.php:2190 ../admin/views/templates/slide-stage.php:2192 +msgid "Padding" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:301 ../admin/views/templates/slide- +#: stage.php:2193 ../admin/views/templates/slider-main-options.php:3259 +msgid "Padding Top" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:302 ../admin/views/templates/slide- +#: stage.php:2194 +msgid "Padding Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:303 ../admin/views/templates/slide- +#: stage.php:2195 ../admin/views/templates/slider-main-options.php:3262 +msgid "Padding Bottom" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:304 ../admin/views/templates/slide- +#: stage.php:2196 +msgid "Padding Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:310 ../admin/views/templates/slide- +#: stage.php:311 ../admin/views/templates/slide-stage.php:553 .. +#: /admin/views/templates/slide-stage.php:554 ../admin/views/templates/slide- +#: stage.php:2008 ../admin/views/templates/slide-stage.php:2073 .. +#: /admin/views/templates/slide-stage.php:2140 +msgid "Border Color" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:315 ../admin/views/templates/slide- +#: stage.php:316 ../admin/views/templates/slide-stage.php:557 .. +#: /admin/views/templates/slide-stage.php:558 ../admin/views/templates/slide- +#: stage.php:2012 ../admin/views/templates/slide-stage.php:2013 .. +#: /admin/views/templates/slide-stage.php:2077 ../admin/views/templates/slide- +#: stage.php:2078 ../admin/views/templates/slide-stage.php:2144 .. +#: /admin/views/templates/slide-stage.php:2145 +msgid "Border Opacity" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:320 ../admin/views/templates/slide- +#: stage.php:321 ../admin/views/templates/slide-stage.php:564 .. +#: /admin/views/templates/slide-stage.php:565 +msgid "Border Style" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:331 ../admin/views/templates/slide- +#: stage.php:332 ../admin/views/templates/slide-stage.php:575 .. +#: /admin/views/templates/slide-stage.php:576 ../admin/views/templates/slide- +#: stage.php:2017 ../admin/views/templates/slide-stage.php:2018 .. +#: /admin/views/templates/slide-stage.php:2082 ../admin/views/templates/slide- +#: stage.php:2083 ../admin/views/templates/slide-stage.php:2149 .. +#: /admin/views/templates/slide-stage.php:2150 +msgid "Border Width" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:336 ../admin/views/templates/slide- +#: stage.php:580 +msgid "Border Radius (px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:337 ../admin/views/templates/slide- +#: stage.php:581 +msgid "Border Radius Top Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:338 ../admin/views/templates/slide- +#: stage.php:582 +msgid "Border Radius Top Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:339 ../admin/views/templates/slide- +#: stage.php:583 +msgid "Border Radius Bottom Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:340 ../admin/views/templates/slide- +#: stage.php:584 +msgid "Border Radius Bottom Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:346 ../admin/views/templates/slide- +#: stage.php:347 ../admin/views/templates/slide-stage.php:614 .. +#: /admin/views/templates/slide-stage.php:615 +msgid "Rotation on X axis (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:350 ../admin/views/templates/slide- +#: stage.php:351 ../admin/views/templates/slide-stage.php:618 .. +#: /admin/views/templates/slide-stage.php:619 +msgid "Rotation on Y axis (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:355 ../admin/views/templates/slide- +#: stage.php:356 ../admin/views/templates/slide-stage.php:623 .. +#: /admin/views/templates/slide-stage.php:624 +msgid "Rotation on Z axis (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:360 ../admin/views/templates/slide- +#: stage.php:361 +msgid "Horizontal Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:364 ../admin/views/templates/slide- +#: stage.php:365 +msgid "Vertical Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:371 ../admin/views/templates/slide- +#: stage.php:589 +#, php-format +msgid "Opacity. (1 = 100% Visible / 0.5 = 50% opacaity / 0 = transparent)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:372 ../admin/views/templates/slide- +#: stage.php:590 +#, php-format +msgid "Opacity (1 = 100% Visible / 0.5 = 50% opacaity / 0 = transparent)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:376 ../admin/views/templates/slide- +#: stage.php:377 ../admin/views/templates/slide-stage.php:594 .. +#: /admin/views/templates/slide-stage.php:595 +msgid "X Scale 1 = 100%, 0.5=50%... (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:381 ../admin/views/templates/slide- +#: stage.php:382 ../admin/views/templates/slide-stage.php:598 .. +#: /admin/views/templates/slide-stage.php:599 +msgid "Y Scale 1 = 100%, 0.5=50%... (+/-)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:386 ../admin/views/templates/slide- +#: stage.php:387 ../admin/views/templates/slide-stage.php:603 .. +#: /admin/views/templates/slide-stage.php:604 +msgid "X Skew (+/- px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:391 ../admin/views/templates/slide- +#: stage.php:392 ../admin/views/templates/slide-stage.php:607 .. +#: /admin/views/templates/slide-stage.php:608 +msgid "Y Skew (+/- px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:398 ../admin/views/templates/slide- +#: stage.php:630 +msgid "Template" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:399 ../admin/views/templates/slide- +#: stage.php:631 ../admin/views/templates/slider-main-options.php:971 .. +#: /admin/views/templates/slider-main-options.php:1002 .. +#: /admin/views/templates/slider-main-options.php:1035 .. +#: /admin/views/templates/slider-main-options.php:1069 +msgid "Layer" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:407 +msgid "Layer Hover" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:413 ../admin/views/templates/slide- +#: stage.php:414 +msgid "Hover Animation Speed (in ms)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:419 ../admin/views/templates/slide- +#: stage.php:420 +msgid "Hover Animation Easing" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:430 ../admin/views/templates/slide- +#: stage.php:431 +msgid "Mouse Cursor" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:447 ../admin/views/templates/slide- +#: stage.php:448 +msgid "Animation Perspective (default 600)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:452 ../admin/views/templates/slide- +#: stage.php:453 +msgid "Z Offset (+/- px)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:459 +msgid "Parallax Depth Level." +msgstr "" + +#: ../admin/views/templates/slide-stage.php:487 +msgid "Sharp Left" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:490 ../admin/views/templates/slide- +#: stage.php:499 +msgid "No Corner" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:491 ../admin/views/templates/slide- +#: stage.php:500 +msgid "Sharp" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:492 ../admin/views/templates/slide- +#: stage.php:501 +msgid "Sharp Reversed" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:496 +msgid "Sharp Right" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:527 ../admin/views/templates/slide- +#: stage.php:528 +msgid "Font Hover Opacity" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:640 +msgid "Idle" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:645 +msgid "COPY" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:647 +msgid "Copy From Idle" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:648 +msgid "Copy From Hover" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:649 +msgid "Copy From In Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:650 +msgid "Copy From Out Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:667 +msgid "Hover CSS" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:684 ../admin/views/templates/slide- +#: stage.php:856 ../admin/views/templates/slider-main-options.php:1397 +msgid "Advanced Settings" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:688 ../admin/views/templates/slide- +#: stage.php:689 ../admin/views/templates/slide-stage.php:863 .. +#: /admin/views/templates/slide-stage.php:864 +msgid "Animation Template" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:699 ../admin/views/templates/slide- +#: stage.php:874 +msgid "Template Options" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:711 ../admin/views/templates/slide- +#: stage.php:712 ../admin/views/templates/slide-stage.php:888 .. +#: /admin/views/templates/slide-stage.php:889 +msgid "Animation Easing" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:722 ../admin/views/templates/slide- +#: stage.php:723 ../admin/views/templates/slide-stage.php:899 .. +#: /admin/views/templates/slide-stage.php:900 +msgid "Animation Speed (in ms)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:727 ../admin/views/templates/slide- +#: stage.php:728 ../admin/views/templates/slide-stage.php:904 .. +#: /admin/views/templates/slide-stage.php:905 +msgid "Split Animaton Text (will not respect Html Markups !)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:729 ../admin/views/templates/slide- +#: stage.php:906 +msgid "No Split" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:730 ../admin/views/templates/slide- +#: stage.php:907 +msgid "Char Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:731 ../admin/views/templates/slide- +#: stage.php:908 +msgid "Word Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:732 ../admin/views/templates/slide- +#: stage.php:909 +msgid "Line Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:736 ../admin/views/templates/slide- +#: stage.php:737 ../admin/views/templates/slide-stage.php:913 .. +#: /admin/views/templates/slide-stage.php:914 +msgid "Animation Delay between Splitted Elements" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:750 ../admin/views/templates/slide- +#: stage.php:926 +msgid "Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:753 ../admin/views/templates/slide- +#: stage.php:929 ../admin/views/templates/slider-main-options.php:3323 +msgid "Scale" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:754 ../admin/views/templates/slide- +#: stage.php:930 +msgid "Skew" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:755 ../admin/views/templates/slide- +#: stage.php:931 +msgid "Masking" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:756 ../admin/views/templates/slide- +#: stage.php:932 +msgid "Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:768 +msgid "" +"Mask is not available due Style Transitions. Please remove any Rotation, " +"Scale or skew effect form Idle and Hover settings" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1037 ../admin/views/templates/slide- +#: stage.php:1725 ../admin/views/templates/slide-stage.php:2244 +msgid "Disabled" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1038 +msgid "Pendulum" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1039 +msgid "Rotate" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1040 +msgid "Slideloop" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1041 +msgid "Pulse" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1042 +msgid "Wave" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1047 +msgid "Loop Speed (sec) - 0.3 = 300ms" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1048 +msgid "Loop Speed (ms)" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1057 ../admin/views/templates/slide- +#: stage.php:1058 +msgid "Loop Easing" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1071 +msgid "Loop Parameters" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1077 ../admin/views/templates/slide- +#: stage.php:1078 +msgid "2D Rotation start deg." +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1081 ../admin/views/templates/slide- +#: stage.php:1082 +msgid "2D Rotation end deg." +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1087 ../admin/views/templates/slide- +#: stage.php:1088 +msgid "2D Rotation X Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1091 ../admin/views/templates/slide- +#: stage.php:1092 +msgid "2D Rotation Y Origin" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1096 +msgid "Start" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1098 ../admin/views/templates/slide- +#: stage.php:1099 +msgid "Start X Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1101 ../admin/views/templates/slide- +#: stage.php:1102 +msgid "Start Y Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1106 +msgid "End" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1108 ../admin/views/templates/slide- +#: stage.php:1109 +msgid "End X Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1111 ../admin/views/templates/slide- +#: stage.php:1112 +msgid "End Y Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1117 ../admin/views/templates/slide- +#: stage.php:1119 +msgid "Zoom Start" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1121 ../admin/views/templates/slide- +#: stage.php:1123 +msgid "Zoom End" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1129 +msgid "Start Angle" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1133 +msgid "Radius" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1135 +msgid "Radius of Rotation / Pendulum" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1143 +msgid "Lazy Loading" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1146 ../admin/views/templates/slide- +#: stage.php:1155 +msgid "Default Setting" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1147 +msgid "Force Lazy Loading" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1148 +msgid "Ignore Lazy Loading" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1152 +msgid "Source Type" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1174 ../admin/views/templates/slide- +#: stage.php:2337 +msgid "Animation Timing" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1177 ../admin/views/templates/slide- +#: stage.php:2340 +msgid "In and Out Animation Default" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1178 ../admin/views/templates/slide- +#: stage.php:2341 +msgid "In Animation Default and Out Animation Wait for Trigger" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1179 ../admin/views/templates/slide- +#: stage.php:2342 +msgid "Wait for Trigger" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1183 ../admin/views/templates/slide- +#: stage.php:2345 +msgid "Trigger Memory" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1186 ../admin/views/templates/slide- +#: stage.php:2348 +msgid "Reset Animation and Trigger States every loop" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1187 ../admin/views/templates/slide- +#: stage.php:2349 +msgid "Keep last selected State" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1227 +msgid "ID" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1234 +msgid "Classes" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1248 +msgid "Rel" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1256 +msgid "Alt" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1269 +msgid "Internal Classes:" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1285 +msgid "Layer Type:" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1305 +msgid "Visibility on Devices" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1327 +msgid "Hide 'Under' Width" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1333 +msgid "Only on Slider Hover" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1351 +msgid "Auto Responsive" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1357 +msgid "Child Elements Responsive" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1363 +msgid "Align" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1366 +msgid "Grid Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1367 +msgid "Slide Based" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1372 +msgid "Responsive Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1396 +msgid "Static Layers will be shown on every slide in template sliders" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1403 +msgid "Start on Slide" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1428 +msgid "End on Slide" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1525 +msgid "Image Layer Title " +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1525 +msgid "(only for internal usage):" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1542 +msgid "Add a New Layer" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1545 +msgid "Text/Html" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1546 +msgid "Image" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1547 +msgid "Video" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1548 +msgid "Button" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1549 +msgid "Shape" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1555 +msgid "Quick Layer Selector" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1563 +msgid "Slide contains no layers" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1624 +msgid "Delete All Layers" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1630 +msgid "Desktop" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1631 ../admin/views/templates/slider- +#: main-options.php:989 +msgid "Notebook" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1632 ../admin/views/templates/slider- +#: main-options.php:1023 +msgid "Tablet" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1633 ../admin/views/templates/slider- +#: main-options.php:1057 ../admin/views/templates/slider-main-options.php:2198 +msgid "Mobile" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1723 +msgid "Helper Grid:" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1732 +msgid "Snap to:" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1734 ../admin/views/templates/slider- +#: main-options.php:3563 ../admin/views/templates/slider-main-options.php:3660 +msgid "None" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1735 +msgid "Help Lines" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1736 +msgid "Layers" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1750 +msgid "PLAY" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1779 +msgid "DragMe" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1819 +msgid "Add Button Layer" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1825 +msgid "Click on Element to add it" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1829 +msgid "Buttons" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1831 ../admin/views/templates/slide- +#: stage.php:1832 ../admin/views/templates/slide-stage.php:1833 .. +#: /admin/views/templates/slide-stage.php:1836 ../admin/views/templates/slide- +#: stage.php:1837 ../admin/views/templates/slide-stage.php:1838 .. +#: /admin/views/templates/slide-stage.php:1841 ../admin/views/templates/slide- +#: stage.php:1842 ../admin/views/templates/slide-stage.php:1843 .. +#: /admin/views/templates/slide-stage.php:1846 ../admin/views/templates/slide- +#: stage.php:1847 ../admin/views/templates/slide-stage.php:1848 .. +#: /admin/views/templates/slide-stage.php:1851 ../admin/views/templates/slide- +#: stage.php:1852 ../admin/views/templates/slide-stage.php:1853 .. +#: /admin/views/templates/slide-stage.php:1856 ../admin/views/templates/slide- +#: stage.php:1857 ../admin/views/templates/slide-stage.php:1858 +msgid "Click Here" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1860 +msgid "Predefined Elements" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1971 +msgid "Idle State" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1990 ../admin/views/templates/slide- +#: stage.php:2054 ../admin/views/templates/slide-stage.php:2219 +msgid "Color" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:1993 ../admin/views/templates/slide- +#: stage.php:2058 +msgid "Color 2" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2024 +msgid "Text / Icon" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2037 +msgid "Hover State" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2090 +msgid "Text" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2103 +msgid "Add Shape Layer" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2109 +msgid "Click your Shape below to add it" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2119 +msgid "Shape Settings" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2168 ../admin/views/templates/slider- +#: main-options.php:2510 ../admin/views/templates/slider-main-options.php:2521 .. +#: /admin/views/templates/slider-main-options.php:2655 .. +#: /admin/views/templates/slider-main-options.php:2666 .. +#: /admin/views/templates/slider-main-options.php:2812 .. +#: /admin/views/templates/slider-main-options.php:2823 .. +#: /admin/views/templates/slider-main-options.php:2980 .. +#: /admin/views/templates/slider-main-options.php:2991 +msgid "Width" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2170 ../admin/views/templates/slider- +#: main-options.php:943 +msgid "Full-Width" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2178 +msgid "Height" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2180 +msgid "Full-Height" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2205 +msgid "Apply Styles to Selection" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2223 +msgid "Advanced Styles will alwys be applied to all Device Sizes." +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2238 +msgid "Click" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2239 +msgid "Mouse Enter" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2240 +msgid "Mouse Leave" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2245 +msgid "Simple Link" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2246 +msgid "Jump to Slide" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2247 ../admin/views/templates/slider- +#: main-options.php:3792 +msgid "Next Slide" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2248 ../admin/views/templates/slider- +#: main-options.php:3788 +msgid "Previous Slide" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2249 ../admin/views/templates/slider- +#: main-options.php:3780 +msgid "Pause Slider" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2250 +msgid "Play Slider" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2251 +msgid "Toggle Slider" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2252 +msgid "CallBack" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2253 +msgid "Scroll Below Slider" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2254 +msgid "Start Layer \"in\" Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2255 +msgid "Start Layer \"out\" Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2261 +msgid "Toggle Layer Class" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2266 +msgid "Link Url" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2270 +msgid "Link Target" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2277 +msgid "Link Type" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2280 +msgid "jQuery Link" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2281 +msgid "a Tag Link" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2287 +msgid "Jump To" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2296 +msgid "Scroll Offset" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2303 +msgid "Function" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2309 +msgid "Target" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2313 +msgid "Delay" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2315 ../admin/views/templates/slider- +#: main-options.php:1763 ../admin/views/templates/slider-main-options.php:1769 .. +#: /admin/views/templates/slider-main-options.php:1788 .. +#: /admin/views/templates/slider-main-options.php:2032 .. +#: /admin/views/templates/slider-main-options.php:2038 .. +#: /admin/views/templates/slider-main-options.php:2496 .. +#: /admin/views/templates/slider-main-options.php:2501 .. +#: /admin/views/templates/slider-main-options.php:2641 .. +#: /admin/views/templates/slider-main-options.php:2646 .. +#: /admin/views/templates/slider-main-options.php:2798 .. +#: /admin/views/templates/slider-main-options.php:2803 .. +#: /admin/views/templates/slider-main-options.php:2967 .. +#: /admin/views/templates/slider-main-options.php:2971 .. +#: /admin/views/templates/slider-main-options.php:3461 +msgid "ms" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2320 +msgid "at Start" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2322 +msgid "Play In Animation" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2323 +msgid "Keep Hidden" +msgstr "" + +#: ../admin/views/templates/slide-stage.php:2330 +msgid "Class" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:32 +msgid "Edit Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:32 .. +#: /admin/views/templates/sliders-list.php:184 +msgid "New Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:45 +msgid "Content Source" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:52 +msgid "Default Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:57 +msgid "Post-Based Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:62 +msgid "Specific Posts" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:67 +msgid "Flickr Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:72 +msgid "Instagram Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:77 +msgid "Woo Commerce Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:82 +msgid "Twitter Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:87 +msgid "Facebook Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:92 +msgid "YouTube Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:97 +msgid "Vimeo Stream" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:113 +msgid "Coming Soon!" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:121 +msgid "Slides (max 33)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:122 .. +#: /admin/views/templates/slider-main-options.php:143 +msgid "Display this number of photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:124 .. +#: /admin/views/templates/slider-main-options.php:260 +msgid "Access Token" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:125 +msgid "Put in your Instagram Access Token" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:128 +msgid "" +"Get your Instagram Access Token here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:132 +msgid "Instagram User ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:133 +msgid "Put in the Instagram User ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:135 +msgid "" +"Find the Instagram User ID here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:142 .. +#: /admin/views/templates/slider-main-options.php:229 +msgid "Slides (max 500)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:145 +msgid "Flickr API Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:146 +msgid "Put in your Flickr API Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:148 +msgid "" +"Read here how to receive your Flickr API key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:153 +msgid "Display a user's public photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:153 +msgid "User Public Photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:154 +msgid "Display a certain photoset from a user" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:154 +msgid "User Photoset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:155 +msgid "Display a gallery" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:156 +msgid "Display a group's photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:156 +msgid "Groups' Photos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:160 +msgid "Flickr User Url" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:161 +msgid "Put in the URL of the flickr User" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:166 +msgid "Select Photoset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:168 +msgid "Select the photoset to pull the data from " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:174 +msgid "Flickr Gallery Url" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:175 +msgid "Put in the URL of the flickr Gallery" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:180 +msgid "Flickr Group Url" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:181 +msgid "Put in the URL of the flickr Group" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:189 +msgid "Slides (max 25)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:190 +msgid "Display this number of posts" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:192 .. +#: /admin/views/templates/slider-main-options.php:232 +msgid "Cache (sec)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:193 .. +#: /admin/views/templates/slider-main-options.php:233 +msgid "Cache the stream for x seconds" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:197 +msgid "Facebook Page" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:198 +msgid "Put in the URL/ID of the Facebook page" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:204 .. +#: /admin/views/templates/slider-main-options.php:312 +msgid "Album" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:205 +msgid "Timeline" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:210 +msgid "Select Album" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:212 +msgid "Select the album to pull the data from " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:217 +msgid "App ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:218 +msgid "Put in the Facebook App ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:221 +msgid "App Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:222 +msgid "Put in the Facebook App secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:230 +msgid "Display this number of tweets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:236 +msgid "Twitter Name @" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:237 +msgid "Put in the Twitter Account to stream from" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:240 +msgid "Text Tweets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:244 +msgid "Retweets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:248 +msgid "Replies" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:253 +msgid "Consumer Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:254 +msgid "Put in your Twitter Consumer Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:256 +msgid "Consumer Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:257 +msgid "Put in your Twitter Consumer Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:261 +msgid "Put in your Twitter Access Token" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:264 +msgid "Access Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:265 +msgid "Put in your Twitter Access Secret" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:267 +msgid "" +"Please register " +"your application with Twitter to get the values" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:273 +msgid "Slides (max 50)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:274 .. +#: /admin/views/templates/slider-main-options.php:307 +msgid "Display this number of videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:276 +msgid "Youtube API Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:277 +msgid "Put in your YouTube API Key" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:280 +msgid "" +"Find information about the YouTube API key here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:283 +msgid "Channel ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:284 +msgid "Put in the ID of the YouTube channel" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:288 +msgid "Display the channel´s videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:288 .. +#: /admin/views/templates/slider-main-options.php:314 .. +#: /admin/views/templates/slider-main-options.php:332 +msgid "Channel" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:289 +msgid "Display a playlist" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:289 +msgid "Playlist" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:294 +msgid "Select Playlist" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:300 +msgid "" +"See how to find the Youtube channel ID here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:306 +msgid "Slides (max 60)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:311 +msgid "Display the user's videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:311 .. +#: /admin/views/templates/slider-main-options.php:320 +msgid "User" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:312 +msgid "Display an album" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:313 +msgid "Display a group's videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:313 .. +#: /admin/views/templates/slider-main-options.php:324 +msgid "Group" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:314 +msgid "Display a channel's videos" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:321 +msgid "Either the shortcut URL or ID of the user" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:325 +msgid "Either the shortcut URL or ID of the group" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:328 +msgid "Album ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:329 +msgid "The ID of the album" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:333 +msgid "Either the shortcut URL of the channel" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:341 +msgid "Specific Posts List:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:345 +msgid "Post Types:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:389 +msgid "Post Categories:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:415 +msgid "Filter Events By:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:429 +msgid "Sort Posts By:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:431 +msgid "Post ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:432 +msgid "Date" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:434 +msgid "Slug" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:435 +msgid "Author" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:436 +msgid "Last Modified" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:437 +msgid "Number Of Comments" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:438 +msgid "Random" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:439 +msgid "Unsorted" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:440 +msgid "Custom Order" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:456 +msgid "Sort Direction:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:459 +msgid "Descending" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:461 +msgid "Ascending" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:465 +msgid "Max Posts Per Slider:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:469 +msgid "Limit The Excerpt To:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:481 +msgid "Slider Title & ShortCode" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:486 +msgid "Enter your Slider Name here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:488 +msgid "The title of the slider, example: Slider 1" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:492 +msgid "Enter your Slider Alias here" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:494 +msgid "The alias for embedding your slider, example: slider1" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:500 +msgid "Place the shortcode where you want to show the slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:514 +msgid "Select a Slider Type" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:519 +msgid "Standard Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:524 +msgid "Hero Scene" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:529 +msgid "Carousel Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:533 +msgid "Load a Preset from this Slider Type" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:544 +msgid "Save Current Settings as Preset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:929 +msgid "Slide Layout" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:948 +msgid "Full-Screen" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:958 +msgid "Desktop Large" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:958 +msgid "Max" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:979 .. +#: /admin/views/templates/slider-main-options.php:1010 .. +#: /admin/views/templates/slider-main-options.php:1043 .. +#: /admin/views/templates/slider-main-options.php:1078 +msgid "Layer Grid Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:984 +msgid "Specify a layer grid size above" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1015 .. +#: /admin/views/templates/slider-main-options.php:1048 .. +#: /admin/views/templates/slider-main-options.php:1083 +msgid "Custom Grid Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1092 +msgid "Show Advanced Size Options" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1099 +msgid "FullScreen Align Force" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1101 +msgid "Layers align within the full slider instead of the layer grid." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1105 +msgid "Increase/Decrease Fullscreen Height" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1110 +msgid "Containers" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1112 +msgid "" +"Example: #header or .header, .footer, #somecontainer | Height of Slider will " +"be decreased with the height of these Containers to fit perfect in the " +"screen." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1118 +msgid "PX or %" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1120 +msgid "" +"Decrease/Increase height of Slider. Can be used with px and %. " +"Positive/Negative values allowed. Example: 40px or 10%" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1126 .. +#: /admin/views/templates/slider-main-options.php:1150 +msgid "Min. Height" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1128 +msgid "The minimum height of the Slider in FullScreen mode." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1136 +msgid "Overflow Hidden" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1139 +msgid "" +"Adds overflow:hidden to the slider wrapping container which will hide / cut " +"any overlapping elements. Mostly used in Carousel Sliders." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1143 +msgid "Respect Aspect Ratio" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1146 +msgid "" +"It will keep aspect ratio and ignore max height of Layer Grid by upscaling. " +"Layer Area will be vertical centered." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1152 +msgid "The minimum height of the Slider in FullWidth or Auto mode." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1346 +msgid "Force Full Width:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1392 +msgid "Customize, Build & Implement" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1398 +msgid "" +"Go for further customization using the advanced settings on the right of " +"this configuration page." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1400 +msgid "Scroll to Options" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1405 +msgid "Start Building Slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1406 +msgid "" +"Our drag and drop editor will make creating slide content an absolut breeze. " +"This is where the magic happens!" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1411 .. +#: /admin/views/templates/slider-main-options.php:4443 .. +#: /admin/views/templates/slides.php:8 +msgid "Edit Slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1419 +msgid "Implement your Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1420 +msgid "" +"There are several ways to add your slider to your wordpress post / page / " +"etc." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1423 .. +#: /admin/views/templates/sliders-list.php:144 +msgid "Embed Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1429 .. +#: /admin/views/templates/slider-main-options.php:4429 +msgid "Save Settings" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1430 .. +#: /admin/views/templates/slider-main-options.php:4430 +msgid "updating..." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1432 .. +#: /admin/views/templates/slider-main-options.php:4434 +msgid "Delete Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1434 +msgid "Preview Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1470 +msgid "Custom CSS / Javascript" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1473 +msgid "Custom CSS" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1477 +msgid "Custom JavaScript" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1729 +msgid "Slideshow" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1730 +msgid "Defaults" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1731 +msgid "Progress Bar" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1732 +msgid "1st Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1733 .. +#: /admin/views/templates/slider-main-options.php:2458 +msgid "Misc." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1743 +msgid "" +"Show multi language controls across the slider. Only available when wpml " +"plugin exists." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1743 +msgid "Use Multi Language (WPML)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1752 +msgid "" +"Call next slide when inactive browser tab is focused again. Use this for " +"avoid dissorted layers and broken timeouts after bluring the browser tab." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1752 +msgid "Next Slide on Focus" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1761 +msgid "" +"The time one slide stays on the screen in Milliseconds. This is a Default " +"Global value. Can be adjusted slide to slide also in the slide editor." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1761 +msgid "Default Slide Duration" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1767 +msgid "Sets a delay before the Slider gets initialized" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1767 +msgid "Initialization Delay" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1772 +msgid "Default transition by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1772 +msgid "Transitions" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1786 +msgid "Default transition duration by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1786 +msgid "Animation Duration" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1795 +msgid "Default main image source size by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1795 +msgid "Image Source Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1811 +msgid "Default background size by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1811 .. +#: /admin/views/templates/slider-main-options.php:2276 +msgid "Background Fit" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1833 +msgid "Default background position by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1833 .. +#: /admin/views/templates/slider-main-options.php:2293 +msgid "Background Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1859 +msgid "Default background repeat by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1859 .. +#: /admin/views/templates/slider-main-options.php:2284 +msgid "Background Repeat" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1870 +msgid "Default Ken/Burn setting by creating a new slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1881 +msgid "Start Fit: (in %):" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1958 +msgid "End Fit: (in %):" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1963 +msgid "Start Offset X:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1968 +msgid "Start Offset Y:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1973 .. +#: /admin/views/templates/slider-main-options.php:1983 .. +#: /admin/views/templates/slider-main-options.php:1988 +msgid "End Offset Y:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1978 +msgid "End Offset X:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:1998 +msgid "Overwrite Selected Settings on all Slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2007 +msgid "" +"Start from a different slide instead of the first slide. I.e. good for " +"preview / edit mode." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2007 +msgid "Alternative 1st Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2011 +msgid "" +"If active, it will overwrite the first slide transition. Use it to get " +"special transition for the first slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2011 +msgid "First Transition Active" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2016 +msgid "First slide transition type" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2016 +msgid "Transition Type" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2030 +msgid "First slide transition duration." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2030 +msgid "Transition Duration" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2036 +msgid "The number of slots or boxes the slide is divided into." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2036 +msgid "Transition Slot Amount" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2047 +msgid "Stops the Timer when mouse is hovering the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2047 +msgid "Stop Slide On Hover" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2052 +msgid "Stops the slideshow after the predefined loop amount at the predefined slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2052 +msgid "Stop Slider After ..." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2058 +msgid "Stops the slider after certain amount of loops. 0 related to the first loop." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2058 +msgid "Amount of Loops" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2063 +msgid "Stops the slider at the given slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2063 +msgid "At Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2069 +msgid "Randomize the order of the slides at every Page reload." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2069 +msgid "Shuffle / Random Mode" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2074 +msgid "" +"If only one Slide is in the Slider, you can choose wether the Slide should " +"loop or if it should stop. If only one Slide exist, slide will be duplicated " +"!" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2074 +msgid "Loop Single Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2080 +msgid "Allow to stop the Slider out of viewport." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2080 +msgid "Stop Slider Out of ViewPort" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2085 +msgid "Out Of ViewPort:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2087 +msgid "Wait" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2088 +msgid "Pause" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2092 +msgid "Min. Size of Slider must be in Viewport before slide starts again." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2092 +msgid "Area out of ViewPort:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2094 .. +#: /admin/views/templates/slider-main-options.php:2122 .. +#: /admin/views/templates/slider-main-options.php:3254 .. +#: /admin/views/templates/slider-main-options.php:3338 +msgid "%" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2102 +msgid "Enable / disable progress var" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2102 +msgid "Progress Bar Active" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2106 +msgid "Position of the progress bar." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2106 +msgid "Progress Bar Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2114 +msgid "The height of the progress bar" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2114 +msgid "Progress Bar Heigth" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2116 .. +#: /admin/views/templates/slider-main-options.php:2217 .. +#: /admin/views/templates/slider-main-options.php:2223 .. +#: /admin/views/templates/slider-main-options.php:2228 .. +#: /admin/views/templates/slider-main-options.php:2325 .. +#: /admin/views/templates/slider-main-options.php:2331 .. +#: /admin/views/templates/slider-main-options.php:2337 .. +#: /admin/views/templates/slider-main-options.php:2342 .. +#: /admin/views/templates/slider-main-options.php:2512 .. +#: /admin/views/templates/slider-main-options.php:2523 .. +#: /admin/views/templates/slider-main-options.php:2548 .. +#: /admin/views/templates/slider-main-options.php:2554 .. +#: /admin/views/templates/slider-main-options.php:2580 .. +#: /admin/views/templates/slider-main-options.php:2586 .. +#: /admin/views/templates/slider-main-options.php:2618 .. +#: /admin/views/templates/slider-main-options.php:2657 .. +#: /admin/views/templates/slider-main-options.php:2668 .. +#: /admin/views/templates/slider-main-options.php:2691 .. +#: /admin/views/templates/slider-main-options.php:2697 .. +#: /admin/views/templates/slider-main-options.php:2757 .. +#: /admin/views/templates/slider-main-options.php:2771 .. +#: /admin/views/templates/slider-main-options.php:2776 .. +#: /admin/views/templates/slider-main-options.php:2781 .. +#: /admin/views/templates/slider-main-options.php:2814 .. +#: /admin/views/templates/slider-main-options.php:2825 .. +#: /admin/views/templates/slider-main-options.php:2861 .. +#: /admin/views/templates/slider-main-options.php:2867 .. +#: /admin/views/templates/slider-main-options.php:2928 .. +#: /admin/views/templates/slider-main-options.php:2942 .. +#: /admin/views/templates/slider-main-options.php:2947 .. +#: /admin/views/templates/slider-main-options.php:2952 .. +#: /admin/views/templates/slider-main-options.php:2982 .. +#: /admin/views/templates/slider-main-options.php:2993 .. +#: /admin/views/templates/slider-main-options.php:3029 .. +#: /admin/views/templates/slider-main-options.php:3035 .. +#: /admin/views/templates/slider-main-options.php:3244 .. +#: /admin/views/templates/slider-main-options.php:3253 .. +#: /admin/views/templates/slider-main-options.php:3260 .. +#: /admin/views/templates/slider-main-options.php:3263 +msgid "px" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2120 +#, php-format +msgid "" +"The opacity of the progress bar
        (0 == Transparent, 100 = Solid color, 50 " +"= 50% opacity etc...)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2120 +msgid "Progress Bar Opacity" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2126 +msgid "Color of the progress bar." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2126 +msgid "Progress Bar Color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2190 +msgid "Layout & Visual" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2195 +msgid "Appearance" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2197 +msgid "Spinner" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2199 .. +#: /admin/views/templates/slider-main-options.php:2672 .. +#: /admin/views/templates/slider-main-options.php:2829 .. +#: /admin/views/templates/slider-main-options.php:2997 +msgid "Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2204 +msgid "If this is enabled, the slider will not be loaded on mobile devices." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2204 +msgid "Disable Slider on Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2209 +msgid "This will disable KenBurns on mobile devices to save performance" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2209 +msgid "Disable KenBurn On Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2213 +msgid "Hide Element Under Width:" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2215 +msgid "" +"Hide the slider under the defined slider width. Value 0 will disable the " +"function." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2215 .. +#: /admin/views/templates/template-slider-selector.php:16 +msgid "Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2221 +msgid "" +"Hide the selected layers (set layers hide under in slide editor) under the " +"defined slider width. Value 0 will disable the function." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2221 +msgid "Predefined Layers" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2226 +msgid "" +"Hide all layers under the defined slider width. Value 0 will disable the " +"function." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2226 +msgid "All Layers" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2236 +msgid "The Shadow display underneath the banner." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2236 +msgid "Shadow Type" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2238 +msgid "No Shadow" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2248 +msgid "Show a dotted overlay over the slides." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2248 +msgid "Dotted Overlay Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2258 +msgid "Slider Background" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2259 +msgid "" +"General background color for slider. Clear value to get transparent slider " +"container." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2259 +msgid "Background color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2263 +msgid "" +"Padding around the slider. Together with background color shows as slider " +"border." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2263 +msgid "Padding as Border" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2267 +msgid "Use a general background image instead of general background color." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2267 +msgid "Show Background Image" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2272 +msgid "The source of the general background image." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2272 +msgid "Background Image Url" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2273 .. +#: /admin/views/templates/slider-main-options.php:3640 +msgid "Set" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2276 +msgid "" +"General background image size. Cover - always fill the container, cuts " +"overlays. Contain- always fits image into slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2278 +msgid "cover" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2279 +msgid "contain" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2280 +msgid "normal" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2284 +msgid "General background image repeat attitude. Used for tiled images." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2286 +msgid "no-repeat" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2287 +msgid "repeat" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2288 +msgid "repeat-x" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2289 +msgid "repeat-y" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2293 +msgid "" +"General background image position. i.e. center center to always center " +"vertical and horizontal the image in the slider background." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2295 +msgid "center top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2296 +msgid "center right" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2297 +msgid "center bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2298 +msgid "center center" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2299 +msgid "left top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2300 +msgid "left center" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2301 +msgid "left bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2302 +msgid "right top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2303 +msgid "right center" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2304 +msgid "right bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2314 +msgid "" +"The position of the slider within the parrent container. (float:left or " +"float:right or with margin:0px auto;). We recomment do use always CENTER, " +"since the slider will auto fill and grow with the wrapping container. Set " +"any border,padding, floating etc. to the wrapping container where the slider " +"embeded instead of using left/right here !" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2314 +msgid "Position on the page" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2323 +msgid "The top margin of the slider wrapper div" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2323 +msgid "Margin Top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2329 +msgid "The bottom margin of the slider wrapper div" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2329 +msgid "Margin Bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2335 +msgid "The left margin of the slider wrapper div" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2335 +msgid "Margin Left" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2340 +msgid "The right margin of the slider wrapper div" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2340 +msgid "Margin Right" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2351 +msgid "Select a Spinner for your Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2351 +msgid "Choose Spinner" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2357 .. +#: /admin/views/templates/slider-main-options.php:3269 +msgid "3" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2358 +msgid "4" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2359 .. +#: /admin/views/templates/slider-main-options.php:3270 +msgid "5" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2363 +msgid "The Color the Spinner will be shown in" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2363 +msgid "Spinner Color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2448 +msgid "Navigation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2457 +msgid "Touch" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2463 +msgid "Enable / Disable Arrows" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2463 +msgid "Enable Arrows" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2468 +msgid "Look of the navigation Arrows" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2468 +msgid "Arrows Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2470 .. +#: /admin/views/templates/slider-main-options.php:2601 .. +#: /admin/views/templates/slider-main-options.php:2735 .. +#: /admin/views/templates/slider-main-options.php:2907 +msgid "No Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2486 +msgid "" +"Enable to make arrows always visible. Disable to hide arrows after the " +"defined time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2486 .. +#: /admin/views/templates/slider-main-options.php:2788 .. +#: /admin/views/templates/slider-main-options.php:2957 +msgid "Always Show " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2488 .. +#: /admin/views/templates/slider-main-options.php:2634 .. +#: /admin/views/templates/slider-main-options.php:2790 .. +#: /admin/views/templates/slider-main-options.php:2959 +msgid "Yes" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2489 .. +#: /admin/views/templates/slider-main-options.php:2635 .. +#: /admin/views/templates/slider-main-options.php:2791 .. +#: /admin/views/templates/slider-main-options.php:2960 +msgid "No" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2494 +msgid "Time after the Arrows will be hidden(Default: 200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2494 .. +#: /admin/views/templates/slider-main-options.php:2639 .. +#: /admin/views/templates/slider-main-options.php:2796 +msgid "Hide After" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2499 +msgid "Time after the Arrows will be hidden on Mobile(Default: 1200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2499 .. +#: /admin/views/templates/slider-main-options.php:2644 .. +#: /admin/views/templates/slider-main-options.php:2801 +msgid "Hide After on Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2505 +msgid "Force Hide Navigation Arrows under width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2505 +msgid "Hide Under" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2510 +msgid "If browser size goes below this value, then Navigation Arrows are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2516 +msgid "Force Hide Navigation over width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2516 +msgid "Hide Over" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2521 +msgid "If browser size goes over this value, then Navigation Arrows are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2527 +msgid "Left Arrow Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2529 +msgid "Horizontal position of the left arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2529 .. +#: /admin/views/templates/slider-main-options.php:2558 .. +#: /admin/views/templates/slider-main-options.php:2673 .. +#: /admin/views/templates/slider-main-options.php:2843 .. +#: /admin/views/templates/slider-main-options.php:3011 +msgid "Horizontal Align" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2538 +msgid "Vertical position of the left arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2538 .. +#: /admin/views/templates/slider-main-options.php:2568 .. +#: /admin/views/templates/slider-main-options.php:2681 .. +#: /admin/views/templates/slider-main-options.php:2851 .. +#: /admin/views/templates/slider-main-options.php:3019 +msgid "Vertical Align" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2546 +msgid "Offset from current horizontal position of of left arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2546 .. +#: /admin/views/templates/slider-main-options.php:2578 .. +#: /admin/views/templates/slider-main-options.php:2689 .. +#: /admin/views/templates/slider-main-options.php:2859 .. +#: /admin/views/templates/slider-main-options.php:3027 +msgid "Horizontal Offset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2552 +msgid "Offset from current vertical position of of left arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2552 .. +#: /admin/views/templates/slider-main-options.php:2584 .. +#: /admin/views/templates/slider-main-options.php:2695 .. +#: /admin/views/templates/slider-main-options.php:2865 .. +#: /admin/views/templates/slider-main-options.php:3033 +msgid "Vertical Offset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2557 +msgid "Right Arrow Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2558 +msgid "Horizontal position of the right arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2568 +msgid "Vertical position of the right arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2578 +msgid "Offset from current horizontal position of of right arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2584 +msgid "Offset from current vertical position of of right arrow." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2594 +msgid "Enable / Disable Bullets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2594 +msgid "Enable Bullets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2599 +msgid "Look of the Bullets" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2599 +msgid "Bullet Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2616 +msgid "Space between the bullets." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2616 .. +#: /admin/views/templates/slider-main-options.php:2755 .. +#: /admin/views/templates/slider-main-options.php:2926 +msgid "Space" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2622 +msgid "Direction of the Bullets. Vertical or Horizontal." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2622 .. +#: /admin/views/templates/slider-main-options.php:2760 .. +#: /admin/views/templates/slider-main-options.php:2931 +msgid "Direction" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2624 .. +#: /admin/views/templates/slider-main-options.php:2762 .. +#: /admin/views/templates/slider-main-options.php:2933 .. +#: /admin/views/templates/slider-main-options.php:3062 .. +#: /admin/views/templates/slider-main-options.php:3077 +msgid "Horizontal" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2625 .. +#: /admin/views/templates/slider-main-options.php:2763 .. +#: /admin/views/templates/slider-main-options.php:2934 .. +#: /admin/views/templates/slider-main-options.php:3063 .. +#: /admin/views/templates/slider-main-options.php:3078 +msgid "Vertical" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2632 +msgid "" +"Enable to make bullets always visible. Disable to hide bullets after the " +"defined time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2632 +msgid "Always Show" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2639 +msgid "Time after that the bullets will be hidden(Default: 200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2644 +msgid "Time after the bullets will be hidden on Mobile (Default: 1200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2650 +msgid "Force Hide Navigation Bullets under width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2650 .. +#: /admin/views/templates/slider-main-options.php:2807 .. +#: /admin/views/templates/slider-main-options.php:2975 +msgid "Hide under Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2655 .. +#: /admin/views/templates/slider-main-options.php:2666 +msgid "If browser size goes below this value, then Navigation bullets are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2661 +msgid "Force Hide Navigation Bullets over width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2661 .. +#: /admin/views/templates/slider-main-options.php:2818 .. +#: /admin/views/templates/slider-main-options.php:2986 +msgid "Hide over Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2673 +msgid "Horizontal position of bullets " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2681 +msgid "Vertical positions of bullets " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2689 +msgid "Offset from current horizontal position." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2695 +msgid "Offset from current Vertical position." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2705 +msgid "Enable / Disable Thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2705 +msgid "Enable Thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2712 .. +#: /admin/views/templates/slider-main-options.php:2885 +msgid "Wrapper Container" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2714 +msgid "The wrapper div padding of thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2714 .. +#: /admin/views/templates/slider-main-options.php:2887 +msgid "Wrapper Padding" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2718 +msgid "Span wrapper to full width or full height based on the direction selected" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2718 .. +#: /admin/views/templates/slider-main-options.php:2891 +msgid "Span Wrapper" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2722 +msgid "Thumbnails wrapper background color. For transparent leave empty." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2722 +msgid "Wrapper color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2723 .. +#: /admin/views/templates/slider-main-options.php:2895 .. +#: /admin/views/templates/slider-main-options.php:2896 +msgid "Wrapper Color" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2726 .. +#: /admin/views/templates/slider-main-options.php:2899 +#, php-format +msgid "Opacity of the Wrapper container. 0 - transparent, 50 - 50% opacity..." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2726 .. +#: /admin/views/templates/slider-main-options.php:2899 +msgid "Wrapper Opacity" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2733 +msgid "Style of the thumbnails." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2733 +msgid "Thumbnails Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2751 +msgid "The amount of max visible Thumbnails in the same time. " +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2751 +msgid "Visible Thumbs Amount" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2755 +msgid "Space between the thumbnails." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2760 +msgid "Direction of the Thumbnails. Vertical or Horizontal." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2767 +msgid "Thumbnail Size" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2769 +msgid "The basic Width of one Thumbnail." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2769 +msgid "Thumb Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2774 +msgid "The basic Height of one Thumbnail." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2774 +msgid "Thumb Height" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2779 +msgid "" +"The minimum width of the auto resized thumbs. Between Max and Min width the " +"sizes are auto calculated)." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2779 +msgid "Min Thumb Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2788 +msgid "" +"Enable to make thumbnails always visible. Disable to hide thumbnails after " +"the defined time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2796 +msgid "Time after that the thumbnails will be hidden(Default: 200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2801 +msgid "Time after that the thumbnails will be hidden on Mobile (Default: 1200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2807 .. +#: /admin/views/templates/slider-main-options.php:2818 +msgid "Force Hide Navigation Thumbnails under width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2812 .. +#: /admin/views/templates/slider-main-options.php:2823 +msgid "If browser size goes below this value, then Navigation thumbs are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2830 +msgid "" +"Put the thumbnails inside or outside of the slider container. Outside added " +"thumbnails will decrease the size of the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2830 .. +#: /admin/views/templates/slider-main-options.php:2999 +msgid "Inner / outer" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2832 .. +#: /admin/views/templates/slider-main-options.php:3001 +msgid "Inner Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2833 .. +#: /admin/views/templates/slider-main-options.php:3002 +msgid "Outer Left" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2834 .. +#: /admin/views/templates/slider-main-options.php:3003 +msgid "Outer Right" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2835 .. +#: /admin/views/templates/slider-main-options.php:3004 +msgid "Outer Top" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2836 .. +#: /admin/views/templates/slider-main-options.php:3005 +msgid "Outer Bottom" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2843 +msgid "Horizontal position of thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2851 +msgid "Vertical position of thumbnails" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2859 +msgid "Offset from current Horizontal position." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2865 +msgid "Offset from current Vertical position." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2878 +msgid "Enable / Disable navigation tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2878 +msgid "Enable Tabs" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2887 +msgid "The wrapper div padding of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2891 +msgid "Span wrapper to full width or full height based on the direction selected." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2895 +msgid "Tabs wrapper background color. For transparent leave empty." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2905 +msgid "Style of the tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2905 +msgid "Tabs Style" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2922 +msgid "The amount of max visible tabs in same time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2922 +msgid "Visible Tabs Amount" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2926 +msgid "Space between the tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2931 +msgid "Direction of the Tabs. Vertical or Horizontal." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2938 +msgid "Tab Sizes" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2940 +msgid "The basic width of one tab." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2940 +msgid "Tabs Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2945 +msgid "the basic height of one tab." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2945 +msgid "Tabs Height" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2950 +msgid "" +"The minimum width of the auto resized Tabs. Between Max and Min width the " +"sizes are auto calculated)." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2950 +msgid "Min. Tab Width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2957 +msgid "" +"Enable to make tabs always visible. Disable to hide tabs after the defined " +"time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2965 +msgid "Time after that the tabs will be hidden(Default: 200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2965 +msgid "Hide After" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2969 +msgid "Time after that the tabs will be hidden on Mobile (Default: 1200 ms)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2969 +msgid "Hide After on Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2975 .. +#: /admin/views/templates/slider-main-options.php:2986 +msgid "Force Hide Navigation tabs under width" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2980 .. +#: /admin/views/templates/slider-main-options.php:2991 +msgid "If browser size goes below this value, then Navigation tabs are hidden." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:2999 +msgid "" +"Put the tabs inside or outside of the slider container. Outside added tabs " +"will decrease the size of the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3011 +msgid "Horizontal position of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3019 +msgid "Vertical position of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3027 +msgid "Offset from current horizontal position of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3033 +msgid "Offset from current vertical position of tabs." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3044 +msgid "Enable Swipe Function on touch devices" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3044 +msgid "Touch Enabled" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3048 +msgid "Scroll below slider on vertical swipe" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3048 +msgid "Drag Block Vertical" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3052 +msgid "Defines the sensibility of gestures. Smaller values mean a higher sensibility" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3052 +msgid "Swipe Treshhold (0 - 200)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3056 +msgid "Defines how many fingers are needed minimum for swiping" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3056 +msgid "Swipe Min Finger" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3060 +msgid "Swipe Direction to swap slides?" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3060 +msgid "Swipe Direction" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3071 +msgid "Allow/disallow to navigate the slider with keyboard." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3071 +msgid "Keyboard Navigation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3075 +msgid "" +"Keyboard Direction to swap slides (horizontal - left/right arrow, vertical - " +"up/down arrow)?" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3075 +msgid "Key Direction" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3082 +msgid "Allow/disallow to navigate the slider with Mouse Scroll." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3082 +msgid "Mouse Scroll Navigation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3225 +msgid "Carousel Settings" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3231 +msgid "Basics" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3232 +msgid "Transformations" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3233 +msgid "Aligns" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3237 +msgid "" +"Infinity Carousel Scroll. No Endpoints exists at first and last slide if " +"valuse is set to ON." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3237 +msgid "Infinity Scroll" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3242 +msgid "The horizontal gap/space between the slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3242 +msgid "Space between slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3248 +msgid "The border radius of slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3259 +msgid "The padding top of slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3262 +msgid "The padding bottom of slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3266 +msgid "The maximum visible items in same time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3266 +msgid "Max. Visible Items" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3271 +msgid "7" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3272 +msgid "9" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3273 +msgid "11" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3274 +msgid "13" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3275 +msgid "15" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3276 +msgid "17" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3277 +msgid "19" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3281 +msgid "" +"Stretch carousel element width to the wrapping container width. Using this " +"you can see only 1 item in same time." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3281 +msgid "Stretch Element" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3291 +msgid "" +"All elements out of focus will get some Opacity value based on the Distance " +"to the current focused element, or only the coming/leaving elements." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3291 +msgid "Fade All Elements" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3297 +msgid "Fade is varying based on the distance to the focused element." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3297 +msgid "Varying Fade" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3304 +msgid "Rotation enabled/disabled for not focused elements." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3311 +msgid "Rotation is varying based on the distance to the focused element." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3311 +msgid "Varying Rotation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3316 +msgid "" +"The maximum rotation of the Side elements. Rotation will depend on the " +"element distance to the current focused element. 0 will turn off the Rotation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3316 +msgid "Max. Rotation" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3318 +msgid "deg" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3323 +msgid "Scale enabled/disabled for not focused elements." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3331 +msgid "Scale is varying based on the distance to the focused element." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3331 +msgid "Varying Scale" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3336 +msgid "" +"The maximum scale down of the Side elements. Scale will depend on the " +"element distance to the current focused element. Min value is 0 and max " +"value is 100." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3336 +msgid "Max. Scaledown" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3346 +msgid "Horizontal Align of the Carousel." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3346 +msgid "Horizontal Aligns" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3354 +msgid "Vertical Align of the Carousel." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3354 +msgid "Vertical Aligns" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3432 +msgid "" +"Enabling this, will give you new options in the slides to create a unique " +"parallax effect" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3432 +msgid "Enable Parallax" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3437 +msgid "If set to on, parallax will be disabled on mobile devices to save performance" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3437 +msgid "Disable on Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3442 +msgid "Mouse Sensibility" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3444 +msgid "Defines on what event type the parallax should react to" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3444 +msgid "Event" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3446 +msgid "Mouse Move" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3447 +msgid "Scroll Position" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3448 +msgid "Move and Scroll" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3452 +msgid "Mouse Based parallax calculation Origo" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3452 +msgid "Parallax Origo" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3454 +msgid "Mouse Enter Point" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3455 +msgid "Slider Center" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3459 +msgid "Parallax Speed for Mouse movents." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3459 +msgid "Animation Speed" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3465 +msgid "Parallax Levels" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3467 .. +#: /admin/views/templates/slider-main-options.php:3471 .. +#: /admin/views/templates/slider-main-options.php:3475 .. +#: /admin/views/templates/slider-main-options.php:3479 .. +#: /admin/views/templates/slider-main-options.php:3483 .. +#: /admin/views/templates/slider-main-options.php:3487 .. +#: /admin/views/templates/slider-main-options.php:3491 .. +#: /admin/views/templates/slider-main-options.php:3495 .. +#: /admin/views/templates/slider-main-options.php:3499 .. +#: /admin/views/templates/slider-main-options.php:3503 +msgid "" +"Defines a level that can be used in Slide Editor for this Slider. Smaller " +"value gives a smaller offset effect, higher value will increase the effect." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3467 +msgid "Level Depth 1" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3471 +msgid "Level Depth 2" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3475 +msgid "Level Depth 3" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3479 +msgid "Level Depth 4" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3483 +msgid "Level Depth 5" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3487 +msgid "Level Depth 6" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3491 +msgid "Level Depth 7" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3495 +msgid "Level Depth 8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3499 +msgid "Level Depth 9" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3503 +msgid "Level Depth 10" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3535 +msgid "Performance and SEO Optimization" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3549 +msgid "" +"How to load/preload the images.

        All - Load all " +"image element in a sequence at the initialisation. This will boost up the " +"loading of your page, and will preload all images to have a smooth and " +"breakless run already in the first loop.

        Smart - " +"It will load the page as quick as possible, and load only the current and " +"neighbour slide elements. If slide is called which not loaded yet, will be " +"loaded on demand with minimal delays.

        Single - It " +"will load only the the start slide. Any other slides will be loaded on " +"demand." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3549 +msgid "Lazy Load" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3552 +msgid "Smart" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3553 +msgid "Single" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3554 +msgid "No Lazy Loading" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3561 +msgid "" +"Define SEO Optimization for the Images in the Slider, useful if Lazy Load is " +"on." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3561 +msgid "SEO Optimization" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3564 +msgid "NoScript" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3565 +msgid "NoFrame" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3615 +msgid "Problem Handlings" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3620 +msgid "Fallbacks" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3621 +msgid "Troubleshooting" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3624 +msgid "Simplyfies the Slider on IOS4 and IE8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3624 +msgid "Simplify on IOS4/IE8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3628 +msgid "Disables the Slider and load an alternative image instead" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3628 +msgid "Use Alternative Image" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3631 +msgid "On Mobile" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3632 +msgid "On IE8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3633 +msgid "On Mobile and IE8" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3638 +msgid "The image that will be loaded instead of the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3638 +msgid "Alternate Image" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3645 +msgid "" +"Turns on / off jquery noconflict mode. Try to enable this option if " +"javascript conflicts exist on the page." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3645 +msgid "JQuery No Conflict Mode" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3649 +msgid "" +"Try this to fix some javascript conflicts of type: TypeError: " +"tpj('#rev_slider_1_1').show().revolution is not a function" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3649 +msgid "Put JS Includes To Body" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3658 +msgid "" +"Activate a protection against wordpress output filters that adds html blocks " +"to the shortcode output like P and BR." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3658 +msgid "Output Filters Protection" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3661 +msgid "By Compressing Output" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3662 +msgid "By Echo Output" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3666 +msgid "Turns on / off visible Debug Mode on Front End." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3666 +msgid "Debug Mode" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3695 +msgid "Import / Export / Replace" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3699 +msgid "Import" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3700 .. +#: /admin/views/templates/sliders-list.php:154 +msgid "Export" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3701 +msgid "Replace URL" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3713 +msgid "Overwrite or append the custom animations due the new imported values ?" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3713 +msgid "Custom Animations" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3718 +msgid "Overwrite or append the static styles due the new imported values ?" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3718 ../includes/operations. +#: class.php:2313 +msgid "Static Styles" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3728 +msgid "" +"Note! Style templates will be updated if they exist. Importing slider, will " +"delete all the current slider settings and slides and replacing it with the " +"imported content." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3734 +msgid "Export Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3734 +msgid "Export with Dummy Images" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3740 +msgid "" +"Replace all layer and backgorund image url's. example - replace from: http:" +"//localhost" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3740 +msgid "Replace From" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3744 +msgid "" +"Replace all layer and backgorund image url's. example - replace to: http:" +"//yoursite.com" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3744 +msgid "Replace To" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3751 +msgid "Replace URL's" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3752 +msgid "Replacing..." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3755 +msgid "Note! The replace process is not reversible !" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3772 +msgid "API Functions" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3776 +msgid "Methods" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3777 +msgid "Events" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3780 +msgid "Call this function to pause the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3784 +msgid "Call this function to play the slider if it is paused." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3784 +msgid "Resume Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3788 +msgid "Switch slider to previous slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3792 +msgid "Switch slider to next slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3796 .. +#: /admin/views/templates/slider-main-options.php:3800 +msgid "Switch to the slide which is defined as parameter." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3796 +msgid "Go To Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3800 +msgid "Go To Slide with ID" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3804 +msgid "Get the amount of existing slides in the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3804 +msgid "Max Slides" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3808 +msgid "Get the current focused slide index." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3808 +msgid "Current Slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3812 +msgid "Get the previously played slide." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3816 +msgid "Scroll page under the slider." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3816 +msgid "External Scroll" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3820 +msgid "" +"Recalculate all positions, sizing etc in the slider. This should be called " +"i.e. if Slider was invisible and becomes visible without any window resize " +"event." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3820 +msgid "Redraw Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3824 +msgid "" +"Unbind all listeners, remove current animations and delete containers. Ready " +"for Garbage collection." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3824 +msgid "Kill Slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3829 +msgid "Slider Loaded" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3834 +msgid "Slider swapped to an other slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3838 +msgid "Current Slide as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3840 .. +#: /admin/views/templates/slider-main-options.php:3891 +msgid "Previous Slide as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3842 +msgid "Slider paused" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3847 +msgid "Slider is Playing after pause" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3852 +msgid "Video is playing in slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3856 .. +#: /admin/views/templates/slider-main-options.php:3866 +msgid "The Video API to Manage Video functions" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3858 .. +#: /admin/views/templates/slider-main-options.php:3868 +msgid "youtube, vimeo, html5" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3860 .. +#: /admin/views/templates/slider-main-options.php:3870 +msgid "Video Settings" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3862 +msgid "Video stopped in slider" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3872 +msgid "Slider reached the 'stop at' slide" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3877 +msgid "Prepared for slide change" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3881 .. +#: /admin/views/templates/slider-main-options.php:3889 +msgid "Current Slide as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3883 +msgid "Coming Slide as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3885 +msgid "Finnished with slide change" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3893 +msgid "Last slide starts" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3898 +msgid "Layer Events" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3901 +msgid "Layer Action (enterstage, enteredstage, leavestage,leftstage)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3903 +msgid "Layer Type (image,video,html)" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3905 +msgid "Default Settings for Layer" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3907 +msgid "Layer as jQuery Object" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3920 +msgid "Google Fonts" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3926 +msgid "Add New Font" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3927 +msgid "" +"Copy the Google Font Family from http://www.google.com/fonts like: Open+Sans:400," +"700,600" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:3982 +msgid "*Only Illustration, most changes are not visible." +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:4455 +msgid "Save Settings as Preset" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:4457 +msgid "Preset Name" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:4458 +msgid "Select" +msgstr "" + +#: ../admin/views/templates/slider-main-options.php:4509 +msgid "Google Font String" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:39 +msgid "Social" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:150 +msgid "Order Posts" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:163 +msgid "Export to HTML" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:188 +msgid "Create New Slider" +msgstr "" + +#: ../admin/views/templates/sliders-list.php:189 +msgid "Add Template Slider" +msgstr "" + +#: ../admin/views/templates/slides-list.php:92 +msgid "Unpublish Slide" +msgstr "" + +#: ../admin/views/templates/slides-list.php:96 +msgid "Publish Slide" +msgstr "" + +#: ../admin/views/templates/slides-list.php:115 +msgid "Slide Image - Click to change" +msgstr "" + +#: ../admin/views/templates/slides-list.php:135 +msgid "Deleting Slide..." +msgstr "" + +#: ../admin/views/templates/slides-list.php:139 +msgid "Open copy / move dialog" +msgstr "" + +#: ../admin/views/templates/slides-list.php:147 +msgid "Working..." +msgstr "" + +#: ../admin/views/templates/slides.php:16 ../admin/views/templates/slides.php:36 +msgid "New Slide" +msgstr "" + +#: ../admin/views/templates/slides.php:18 ../admin/views/templates/slides.php:38 +msgid "New Transparent Slide" +msgstr "" + +#: ../admin/views/templates/slides.php:19 ../admin/views/templates/slides.php:39 +msgid "Adding Slide..." +msgstr "" + +#: ../admin/views/templates/slides.php:36 +msgid "Select image or multiple images to add slide or slides" +msgstr "" + +#: ../admin/views/templates/slides.php:41 +msgid "Edit Static / Global Layers" +msgstr "" + +#: ../admin/views/templates/slides.php:46 +msgid "To Slider Settings" +msgstr "" + +#: ../admin/views/templates/template-selector.php:17 +msgid "Slide" +msgstr "" + +#: ../admin/views/templates/template-selector.php:22 .. +#: /admin/views/templates/template-slider-selector.php:21 +msgid "Revolution Base" +msgstr "" + +#: ../admin/views/templates/template-selector.php:23 +msgid "All Slides" +msgstr "" + +#: ../admin/views/templates/template-selector.php:24 +msgid "Templates" +msgstr "" + +#: ../admin/views/templates/template-selector.php:230 .. +#: /admin/views/templates/template-selector.php:243 +msgid "Import Template Slide" +msgstr "" + +#: ../admin/views/templates/template-selector.php:240 .. +#: /admin/views/templates/template-slider-selector.php:225 +msgid "" +"Please select the corresponding zip file from the download packages import " +"folder called" +msgstr "" + +#: ../admin/views/templates/template-selector.php:245 .. +#: /admin/views/templates/template-slider-selector.php:230 +msgid "Note: style templates will be updated if they exist!" +msgstr "" + +#: ../admin/views/templates/template-slider-selector.php:218 .. +#: /admin/views/templates/template-slider-selector.php:228 +msgid "Import Template Slider" +msgstr "" + +#: ../admin/views/templates/wpml-selector.php:11 +msgid "Preview Slide" +msgstr "" + +#: ../admin/views/templates/wpml-selector.php:41 +msgid "Choose slide language" +msgstr "" + +#: ../includes/extension.class.php:56 +msgid "Slider Revolution" +msgstr "" + +#: ../includes/extension.class.php:112 +msgid "Choose Revolution Slider" +msgstr "" + +#: ../includes/extension.class.php:116 +msgid "--- Choose Slider ---" +msgstr "" + +#: ../includes/external-sources.class.php:383 +msgid "Can't get the bearer token, check your credentials" +msgstr "" + +#: ../includes/external-sources.class.php:438 +msgid "Bearer Token is good, check your query" +msgstr "" + +#: ../includes/navigation.class.php:155 +msgid "Invalid ID" +msgstr "" + +#: ../includes/navigation.class.php:159 +msgid "Navigation could not be deleted" +msgstr "" + +#: ../includes/operations.class.php:262 ../includes/operations.class.php:332 +msgid "## Custom Animation ##" +msgstr "" + +#: ../includes/operations.class.php:264 ../includes/operations.class.php:335 +msgid "- VERSION 5.0 ANIMATIONS -" +msgstr "" + +#: ../includes/operations.class.php:286 ../includes/operations.class.php:348 +msgid "- VERSION 4.0 ANIMATIONS -" +msgstr "" + +#: ../includes/operations.class.php:307 ../includes/operations.class.php:368 +msgid "- SAVED CUSTOM ANIMATIONS -" +msgstr "" + +#: ../includes/operations.class.php:333 +msgid "Automatic Reverse" +msgstr "" + +#: ../includes/operations.class.php:1239 ../includes/operations.class.php:1331 +msgid "Choose language" +msgstr "" + +#: ../includes/operations.class.php:1372 +msgid "CAPTIONS CSS" +msgstr "" + +#: ../includes/operations.class.php:1404 +msgid "Replace image path:" +msgstr "" + +#: ../includes/operations.class.php:1404 +msgid "From:" +msgstr "" + +#: ../includes/operations.class.php:1404 +msgid "To:" +msgstr "" + +#: ../includes/operations.class.php:1404 +msgid "Replace" +msgstr "" + +#: ../includes/operations.class.php:1407 +msgid "Header" +msgstr "" + +#: ../includes/operations.class.php:1407 ../includes/operations.class.php:1409 .. +#: /includes/operations.class.php:1411 ../includes/operations.class.php:1413 +msgid "Mark to Copy" +msgstr "" + +#: ../includes/operations.class.php:1411 +msgid "Body" +msgstr "" + +#: ../includes/operations.class.php:1413 +msgid "Script" +msgstr "" + +#: ../includes/operations.class.php:1433 +msgid "Loading Preview..." +msgstr "" + +#: ../includes/operations.class.php:1592 +msgid "Purchase Code already registered!" +msgstr "" + +#: ../includes/operations.class.php:1994 +msgid "Overall Slider Performance" +msgstr "" + +#: ../includes/operations.class.php:1997 ../includes/operations.class.php:2087 .. +#: /includes/operations.class.php:2174 ../includes/operations.class.php:2251 .. +#: /includes/operations.class.php:2377 ../includes/operations.class.php:2458 +msgid "Slow" +msgstr "" + +#: ../includes/operations.class.php:1998 ../includes/operations.class.php:2088 .. +#: /includes/operations.class.php:2175 ../includes/operations.class.php:2252 .. +#: /includes/operations.class.php:2378 ../includes/operations.class.php:2459 +msgid "Ok" +msgstr "" + +#: ../includes/operations.class.php:1999 ../includes/operations.class.php:2089 .. +#: /includes/operations.class.php:2176 ../includes/operations.class.php:2253 .. +#: /includes/operations.class.php:2379 ../includes/operations.class.php:2460 +msgid "Fast" +msgstr "" + +#: ../includes/operations.class.php:2005 ../includes/operations.class.php:2020 .. +#: /includes/operations.class.php:2035 +msgid "Load Speed UMTS:" +msgstr "" + +#: ../includes/operations.class.php:2009 ../includes/operations.class.php:2024 .. +#: /includes/operations.class.php:2039 +msgid "Load Speed DSL:" +msgstr "" + +#: ../includes/operations.class.php:2013 ../includes/operations.class.php:2028 .. +#: /includes/operations.class.php:2043 +msgid "Load Speed T1:" +msgstr "" + +#: ../includes/operations.class.php:2050 +msgid "Total Slider Size:" +msgstr "" + +#: ../includes/operations.class.php:2055 +msgid "Preloaded Slides Size:" +msgstr "" + +#: ../includes/operations.class.php:2067 +msgid "Need Some Attention" +msgstr "" + +#: ../includes/operations.class.php:2084 +msgid "Image Performance" +msgstr "" + +#: ../includes/operations.class.php:2096 +msgid "Images Loaded:" +msgstr "" + +#: ../includes/operations.class.php:2101 ../includes/operations.class.php:2193 .. +#: /includes/operations.class.php:2264 ../includes/operations.class.php:2390 .. +#: /includes/operations.class.php:2471 +msgid "Hide Details" +msgstr "" + +#: ../includes/operations.class.php:2101 ../includes/operations.class.php:2101 .. +#: /includes/operations.class.php:2193 ../includes/operations.class.php:2193 .. +#: /includes/operations.class.php:2264 ../includes/operations.class.php:2264 .. +#: /includes/operations.class.php:2390 ../includes/operations.class.php:2390 .. +#: /includes/operations.class.php:2471 ../includes/operations.class.php:2471 +msgid "Show Details" +msgstr "" + +#: ../includes/operations.class.php:2128 ../includes/operations.class.php:2211 +msgid "extern" +msgstr "" + +#: ../includes/operations.class.php:2130 ../includes/operations.class.php:2213 +msgid "missing" +msgstr "" + +#: ../includes/operations.class.php:2171 +msgid "Video Performance" +msgstr "" + +#: ../includes/operations.class.php:2183 +msgid "Videos Loaded (max):" +msgstr "" + +#: ../includes/operations.class.php:2189 +msgid "Unknown" +msgstr "" + +#: ../includes/operations.class.php:2248 +msgid "CSS Performance" +msgstr "" + +#: ../includes/operations.class.php:2260 +msgid "CSS Loaded:" +msgstr "" + +#: ../includes/operations.class.php:2285 +msgid "css/settings.css" +msgstr "" + +#: ../includes/operations.class.php:2349 +msgid "Dynamic Styles" +msgstr "" + +#: ../includes/operations.class.php:2374 +msgid "jQuery Performance" +msgstr "" + +#: ../includes/operations.class.php:2386 +msgid "jQuery Loaded:" +msgstr "" + +#: ../includes/operations.class.php:2455 +msgid "Google Fonts Performance" +msgstr "" + +#: ../includes/operations.class.php:2467 +msgid "Fonts Loaded:" +msgstr "" + +#: ../includes/output.class.php:312 +msgid "" +"No slides found, please add at least one Slide Template to the choosen " +"language." +msgstr "" + +#: ../includes/output.class.php:314 +msgid "No slides found, please add some slides" +msgstr "" + +#: ../includes/output.class.php:3612 +msgid "Revolution Slider Error" +msgstr "" + +#: ../includes/slide.class.php:205 +msgid "Source must be from Stream" +msgstr "" + +#: ../includes/slider.class.php:893 +msgid "No file sent." +msgstr "" + +#: ../includes/slider.class.php:896 +msgid "Exceeded filesize limit." +msgstr "" + +#: ../includes/slider.class.php:927 +msgid "Please select the correct zip file" +msgstr "" + +#: ../includes/slider.class.php:944 +msgid "Please select the correct zip file, checksum failed!" +msgstr "" + +#: ../includes/slider.class.php:1020 +msgid "animations imported!" +msgstr "" + +#: ../includes/slider.class.php:1022 +msgid "" +"no custom animations found, if slider uses custom animations, the provided " +"export may be broken..." +msgstr "" + +#: ../includes/slider.class.php:1082 +msgid "dynamic styles imported!" +msgstr "" + +#: ../includes/slider.class.php:1084 +msgid "" +"no dynamic styles found, if slider uses dynamic styles, the provided export " +"may be broken..." +msgstr "" + +#: ../includes/slider.class.php:1372 ../includes/slider.class.php:1405 .. +#: /includes/framework/base.class.php:487 +msgid " not found!
        " +msgstr "" + +#: ../includes/slider.class.php:1556 +msgid "could not find correct Slide to copy, please try again." +msgstr "" + +#: ../includes/slider.class.php:1714 ../includes/slider.class.php:1723 +msgid "Slide could not be duplicated" +msgstr "" + +#: ../includes/slider.class.php:1731 +msgid "Slide could not be copied" +msgstr "" + +#: ../includes/slider.class.php:2039 +msgid "Failed to load Stream" +msgstr "" + +#: ../includes/widget.class.php:15 +msgid "Displays a revolution slider on the page" +msgstr "" + +#: ../includes/widget.class.php:16 +msgid "Revolution Slider" +msgstr "" + +#: ../includes/widget.class.php:30 +msgid "No sliders found, Please create a slider" +msgstr "" + +#: ../includes/widget.class.php:69 +msgid "Home Page Only" +msgstr "" + +#: ../includes/widget.class.php:72 +msgid "Pages: (example: 2,10)" +msgstr "" + +#: ../includes/framework/base-admin.class.php:265 +msgid "Wrong Request" +msgstr "" + +#: ../includes/framework/base.class.php:219 +msgid "Original" +msgstr "" + +#: ../includes/framework/base.class.php:220 ../includes/framework/base.class.php: +#: 267 ../includes/framework/base.class.php:282 +msgid "Large" +msgstr "" + +#: ../includes/framework/base.class.php:221 +msgid "Large Square" +msgstr "" + +#: ../includes/framework/base.class.php:222 ../includes/framework/base.class.php: +#: 257 ../includes/framework/base.class.php:266 ../includes/framework/base.class. +#: php:281 +msgid "Medium" +msgstr "" + +#: ../includes/framework/base.class.php:223 +msgid "Medium 800" +msgstr "" + +#: ../includes/framework/base.class.php:224 +msgid "Medium 640" +msgstr "" + +#: ../includes/framework/base.class.php:225 ../includes/framework/base.class.php: +#: 265 +msgid "Small" +msgstr "" + +#: ../includes/framework/base.class.php:226 +msgid "Small 320" +msgstr "" + +#: ../includes/framework/base.class.php:227 ../includes/framework/base.class.php: +#: 234 ../includes/framework/base.class.php:280 +msgid "Thumbnail" +msgstr "" + +#: ../includes/framework/base.class.php:228 +msgid "Square" +msgstr "" + +#: ../includes/framework/base.class.php:233 ../includes/framework/base.class.php: +#: 240 +msgid "Standard Resolution" +msgstr "" + +#: ../includes/framework/base.class.php:235 +msgid "Low Resolution" +msgstr "" + +#: ../includes/framework/base.class.php:245 +msgid "Size 0" +msgstr "" + +#: ../includes/framework/base.class.php:246 +msgid "Size 1" +msgstr "" + +#: ../includes/framework/base.class.php:247 +msgid "Size 2" +msgstr "" + +#: ../includes/framework/base.class.php:248 +msgid "Size 3" +msgstr "" + +#: ../includes/framework/base.class.php:249 +msgid "Size 4" +msgstr "" + +#: ../includes/framework/base.class.php:250 +msgid "Size 5" +msgstr "" + +#: ../includes/framework/base.class.php:251 +msgid "Size 6" +msgstr "" + +#: ../includes/framework/base.class.php:256 +msgid "Default" +msgstr "" + +#: ../includes/framework/base.class.php:258 +msgid "High" +msgstr "" + +#: ../includes/framework/base.class.php:259 +msgid "Standard" +msgstr "" + +#: ../includes/framework/base.class.php:260 +msgid "Max. Res." +msgstr "" + +#: ../includes/framework/base.class.php:279 +msgid "Original Size" +msgstr "" + +#: ../includes/framework/em-integration.class.php:32 +msgid "All Events" +msgstr "" + +#: ../includes/framework/em-integration.class.php:33 +msgid "Today" +msgstr "" + +#: ../includes/framework/em-integration.class.php:34 +msgid "Tomorrow" +msgstr "" + +#: ../includes/framework/em-integration.class.php:35 +msgid "Future" +msgstr "" + +#: ../includes/framework/em-integration.class.php:36 +msgid "Past" +msgstr "" + +#: ../includes/framework/em-integration.class.php:37 +msgid "This Month" +msgstr "" + +#: ../includes/framework/em-integration.class.php:38 +msgid "Next Month" +msgstr "" + +#: ../includes/framework/em-integration.class.php:168 +msgid "Event Start Date" +msgstr "" + +#: ../includes/framework/em-integration.class.php:169 +msgid "Event End Date" +msgstr "" + +#: ../includes/framework/functions-wordpress.class.php:887 +#, php-format +msgid "View all posts in %s" +msgstr "" + +#: ../includes/framework/wpml.class.php:46 ../includes/framework/wpml.class.php:162 +msgid "All Languages" +msgstr "" diff --git a/plugins/revslider/public/assets/assets/coloredbg.png b/plugins/revslider/public/assets/assets/coloredbg.png new file mode 100644 index 0000000..db75b7a Binary files /dev/null and b/plugins/revslider/public/assets/assets/coloredbg.png differ diff --git a/plugins/revslider/public/assets/assets/gridtile.png b/plugins/revslider/public/assets/assets/gridtile.png new file mode 100644 index 0000000..b07e396 Binary files /dev/null and b/plugins/revslider/public/assets/assets/gridtile.png differ diff --git a/plugins/revslider/public/assets/assets/gridtile_3x3.png b/plugins/revslider/public/assets/assets/gridtile_3x3.png new file mode 100644 index 0000000..6f2c31d Binary files /dev/null and b/plugins/revslider/public/assets/assets/gridtile_3x3.png differ diff --git a/plugins/revslider/public/assets/assets/gridtile_3x3_white.png b/plugins/revslider/public/assets/assets/gridtile_3x3_white.png new file mode 100644 index 0000000..a8830fc Binary files /dev/null and b/plugins/revslider/public/assets/assets/gridtile_3x3_white.png differ diff --git a/plugins/revslider/public/assets/assets/gridtile_white.png b/plugins/revslider/public/assets/assets/gridtile_white.png new file mode 100644 index 0000000..7f2599e Binary files /dev/null and b/plugins/revslider/public/assets/assets/gridtile_white.png differ diff --git a/plugins/revslider/public/assets/assets/loader.gif b/plugins/revslider/public/assets/assets/loader.gif new file mode 100644 index 0000000..53dd589 Binary files /dev/null and b/plugins/revslider/public/assets/assets/loader.gif differ diff --git a/plugins/revslider/public/assets/assets/sources/fb.png b/plugins/revslider/public/assets/assets/sources/fb.png new file mode 100644 index 0000000..9eb46b9 Binary files /dev/null and b/plugins/revslider/public/assets/assets/sources/fb.png differ diff --git a/plugins/revslider/public/assets/assets/sources/fr.png b/plugins/revslider/public/assets/assets/sources/fr.png new file mode 100644 index 0000000..827859a Binary files /dev/null and b/plugins/revslider/public/assets/assets/sources/fr.png differ diff --git a/plugins/revslider/public/assets/assets/sources/ig.png b/plugins/revslider/public/assets/assets/sources/ig.png new file mode 100644 index 0000000..0ddc86e Binary files /dev/null and b/plugins/revslider/public/assets/assets/sources/ig.png differ diff --git a/plugins/revslider/public/assets/assets/sources/post.png b/plugins/revslider/public/assets/assets/sources/post.png new file mode 100644 index 0000000..45ddcc9 Binary files /dev/null and b/plugins/revslider/public/assets/assets/sources/post.png differ diff --git a/plugins/revslider/public/assets/assets/sources/revolution_slide1.png b/plugins/revslider/public/assets/assets/sources/revolution_slide1.png new file mode 100644 index 0000000..99ead16 Binary files /dev/null and b/plugins/revslider/public/assets/assets/sources/revolution_slide1.png differ diff --git a/plugins/revslider/public/assets/assets/sources/revolution_slide2.png b/plugins/revslider/public/assets/assets/sources/revolution_slide2.png new file mode 100644 index 0000000..4b945ef Binary files /dev/null and b/plugins/revslider/public/assets/assets/sources/revolution_slide2.png differ diff --git a/plugins/revslider/public/assets/assets/sources/tw.png b/plugins/revslider/public/assets/assets/sources/tw.png new file mode 100644 index 0000000..53b1133 Binary files /dev/null and b/plugins/revslider/public/assets/assets/sources/tw.png differ diff --git a/plugins/revslider/public/assets/assets/sources/vm.png b/plugins/revslider/public/assets/assets/sources/vm.png new file mode 100644 index 0000000..824933b Binary files /dev/null and b/plugins/revslider/public/assets/assets/sources/vm.png differ diff --git a/plugins/revslider/public/assets/assets/sources/wc.png b/plugins/revslider/public/assets/assets/sources/wc.png new file mode 100644 index 0000000..80233ca Binary files /dev/null and b/plugins/revslider/public/assets/assets/sources/wc.png differ diff --git a/plugins/revslider/public/assets/assets/sources/yt.png b/plugins/revslider/public/assets/assets/sources/yt.png new file mode 100644 index 0000000..84849e8 Binary files /dev/null and b/plugins/revslider/public/assets/assets/sources/yt.png differ diff --git a/plugins/revslider/public/assets/css/closedhand.cur b/plugins/revslider/public/assets/css/closedhand.cur new file mode 100644 index 0000000..41aaa62 Binary files /dev/null and b/plugins/revslider/public/assets/css/closedhand.cur differ diff --git a/plugins/revslider/public/assets/css/index.php b/plugins/revslider/public/assets/css/index.php new file mode 100644 index 0000000..e69de29 diff --git a/plugins/revslider/public/assets/css/openhand.cur b/plugins/revslider/public/assets/css/openhand.cur new file mode 100644 index 0000000..fba3ddc Binary files /dev/null and b/plugins/revslider/public/assets/css/openhand.cur differ diff --git a/plugins/revslider/public/assets/css/settings.css b/plugins/revslider/public/assets/css/settings.css new file mode 100644 index 0000000..575fabf --- /dev/null +++ b/plugins/revslider/public/assets/css/settings.css @@ -0,0 +1,1132 @@ +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Default Style Settings - + +Screen Stylesheet + +version: 5.0.0 +date: 18/03/15 +author: themepunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ + + +@font-face { + font-family: 'revicons'; + src: url('../fonts/revicons/revicons.eot?5510888'); + src: url('../fonts/revicons/revicons.eot?5510888#iefix') format('embedded-opentype'), + url('../fonts/revicons/revicons.woff?5510888') format('woff'), + url('../fonts/revicons/revicons.ttf?5510888') format('truetype'), + url('../fonts/revicons/revicons.svg?5510888#revicons') format('svg'); + font-weight: normal; + font-style: normal; +} + + [class^="revicon-"]:before, [class*=" revicon-"]:before { + font-family: "revicons"; + font-style: normal; + font-weight: normal; + speak: none; + display: inline-block; + text-decoration: inherit; + width: 1em; + margin-right: .2em; + text-align: center; + + /* For safety - reset parent styles, that can break glyph codes*/ + font-variant: normal; + text-transform: none; + + /* fix buttons height, for twitter bootstrap */ + line-height: 1em; + + /* Animation center compensation - margins should be symmetric */ + /* remove if not needed */ + margin-left: .2em; + + /* you can be more comfortable with increased icons size */ + /* font-size: 120%; */ + + /* Uncomment for 3D effect */ + /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ +} + +.revicon-search-1:before { content: '\e802'; } /* '' */ +.revicon-pencil-1:before { content: '\e831'; } /* '' */ +.revicon-picture-1:before { content: '\e803'; } /* '' */ +.revicon-cancel:before { content: '\e80a'; } /* '' */ +.revicon-info-circled:before { content: '\e80f'; } /* '' */ +.revicon-trash:before { content: '\e801'; } /* '' */ +.revicon-left-dir:before { content: '\e817'; } /* '' */ +.revicon-right-dir:before { content: '\e818'; } /* '' */ +.revicon-down-open:before { content: '\e83b'; } /* '' */ +.revicon-left-open:before { content: '\e819'; } /* '' */ +.revicon-right-open:before { content: '\e81a'; } /* '' */ +.revicon-angle-left:before { content: '\e820'; } /* '' */ +.revicon-angle-right:before { content: '\e81d'; } /* '' */ +.revicon-left-big:before { content: '\e81f'; } /* '' */ +.revicon-right-big:before { content: '\e81e'; } /* '' */ +.revicon-magic:before { content: '\e807'; } /* '' */ +.revicon-picture:before { content: '\e800'; } /* '' */ +.revicon-export:before { content: '\e80b'; } /* '' */ +.revicon-cog:before { content: '\e832'; } /* '' */ +.revicon-login:before { content: '\e833'; } /* '' */ +.revicon-logout:before { content: '\e834'; } /* '' */ +.revicon-video:before { content: '\e805'; } /* '' */ +.revicon-arrow-combo:before { content: '\e827'; } /* '' */ +.revicon-left-open-1:before { content: '\e82a'; } /* '' */ +.revicon-right-open-1:before { content: '\e82b'; } /* '' */ +.revicon-left-open-mini:before { content: '\e822'; } /* '' */ +.revicon-right-open-mini:before { content: '\e823'; } /* '' */ +.revicon-left-open-big:before { content: '\e824'; } /* '' */ +.revicon-right-open-big:before { content: '\e825'; } /* '' */ +.revicon-left:before { content: '\e836'; } /* '' */ +.revicon-right:before { content: '\e826'; } /* '' */ +.revicon-ccw:before { content: '\e808'; } /* '' */ +.revicon-arrows-ccw:before { content: '\e806'; } /* '' */ +.revicon-palette:before { content: '\e829'; } /* '' */ +.revicon-list-add:before { content: '\e80c'; } /* '' */ +.revicon-doc:before { content: '\e809'; } /* '' */ +.revicon-left-open-outline:before { content: '\e82e'; } /* '' */ +.revicon-left-open-2:before { content: '\e82c'; } /* '' */ +.revicon-right-open-outline:before { content: '\e82f'; } /* '' */ +.revicon-right-open-2:before { content: '\e82d'; } /* '' */ +.revicon-equalizer:before { content: '\e83a'; } /* '' */ +.revicon-layers-alt:before { content: '\e804'; } /* '' */ +.revicon-popup:before { content: '\e828'; } /* '' */ + + + +/****************************** + - BASIC STYLES - +******************************/ + +.rev_slider_wrapper{ + position:relative; + z-index: 0; +} + + +.rev_slider{ + position:relative; + overflow:visible; +} + +.tp-overflow-hidden { overflow:hidden;} + +.tp-simpleresponsive img, +.rev_slider img{ + max-width:none !important; + -moz-transition: none 0; + -webkit-transition: none 0; + -o-transition: none 0; + transition: none 0; + margin:0px; + padding:0px; + border-width:0px; + border:none; +} + +.rev_slider .no-slides-text{ + font-weight:bold; + text-align:center; + padding-top:80px; +} + +.rev_slider >ul, +.rev_slider_wrapper >ul, +.tp-revslider-mainul >li, +.rev_slider >ul >li, +.rev_slider >ul >li:before, +.tp-revslider-mainul >li:before, +.tp-simpleresponsive >ul, +.tp-simpleresponsive >ul >li, +.tp-simpleresponsive >ul >li:before, +.tp-revslider-mainul >li, +.tp-simpleresponsive >ul >li{ + list-style:none !important; + position:absolute; + margin:0px !important; + padding:0px !important; + overflow-x: visible; + overflow-y: visible; + list-style-type: none !important; + background-image:none; + background-position:0px 0px; + text-indent: 0em; + top:0px;left:0px; +} + + +.tp-revslider-mainul >li, +.rev_slider >ul >li, +.rev_slider >ul >li:before, +.tp-revslider-mainul >li:before, +.tp-simpleresponsive >ul >li, +.tp-simpleresponsive >ul >li:before, +.tp-revslider-mainul >li, +.tp-simpleresponsive >ul >li { + visibility:hidden; +} + +.tp-revslider-slidesli, +.tp-revslider-mainul { + padding:0 !important; + margin:0 !important; + list-style:none !important; +} + +.rev_slider .tp-caption, +.rev_slider .caption { + position:relative; + visibility:hidden; + white-space: nowrap; + display: block; +} + + +/* CAROUSEL FUNCTIONS */ +.tp-carousel-wrapper { + cursor:url(openhand.cur), move; +} +.tp-carousel-wrapper.dragged { + cursor:url(closedhand.cur), move; +} + +/* ADDED FOR SLIDELINK MANAGEMENT */ +.tp-caption { + z-index:1 +} + +.tp_inner_padding { + box-sizing:border-box; + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + max-height:none !important; +} + + +.tp-caption { + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; + position:absolute; + -webkit-font-smoothing: antialiased !important; +} + + + +.tp-forcenotvisible, +.tp-hide-revslider, +.tp-caption.tp-hidden-caption { + visibility:hidden !important; + display:none !important +} + +.rev_slider embed, +.rev_slider iframe, +.rev_slider object, +.rev_slider video { + max-width: none !important +} + + + +/********************************************** + - FULLSCREEN AND FULLWIDHT CONTAINERS - +**********************************************/ +.rev_slider_wrapper { width:100%;} + +.fullscreen-container { + position:relative; + padding:0; +} + + +.fullwidthbanner-container{ + position:relative; + padding:0; + overflow:hidden; +} + +.fullwidthbanner-container .fullwidthabanner{ + width:100%; + position:relative; +} + + + +/********************************* + - SPECIAL TP CAPTIONS - +**********************************/ + +.tp-static-layers { + position:absolute; z-index:505; top:0px;left:0px} + + +.tp-caption .frontcorner { + width: 0; + height: 0; + border-left: 40px solid transparent; + border-right: 0px solid transparent; + border-top: 40px solid #00A8FF; + position: absolute;left:-40px;top:0px; +} + +.tp-caption .backcorner { + width: 0; + height: 0; + border-left: 0px solid transparent; + border-right: 40px solid transparent; + border-bottom: 40px solid #00A8FF; + position: absolute;right:0px;top:0px; +} + +.tp-caption .frontcornertop { + width: 0; + height: 0; + border-left: 40px solid transparent; + border-right: 0px solid transparent; + border-bottom: 40px solid #00A8FF; + position: absolute;left:-40px;top:0px; +} + +.tp-caption .backcornertop { + width: 0; + height: 0; + border-left: 0px solid transparent; + border-right: 40px solid transparent; + border-top: 40px solid #00A8FF; + position: absolute;right:0px;top:0px; +} + +.tp-layer-inner-rotation { + position: relative !important; +} + + +/*********************************************** + - SPECIAL ALTERNATIVE IMAGE SETTINGS - +***********************************************/ + +img.tp-slider-alternative-image { + width:100%; height:auto; +} + + +/****************************** + - IE8 HACKS - +*******************************/ +.noFilterClass { + filter:none !important; +} + + +/******************************** + - FULLSCREEN VIDEO - +*********************************/ + +.rs-background-video-layer { position: absolute;top:0px;left:0px; width:100%;height:100%;visibility: hidden;z-index: 0;} + +.tp-caption.coverscreenvideo { width:100%;height:100%;top:0px;left:0px;position:absolute;} +.caption.fullscreenvideo, +.tp-caption.fullscreenvideo { left:0px; top:0px; position:absolute;width:100%;height:100%} + +.caption.fullscreenvideo iframe, +.caption.fullscreenvideo video, +.tp-caption.fullscreenvideo iframe, +.tp-caption.fullscreenvideo iframe video { width:100% !important; height:100% !important; display: none} + +.fullcoveredvideo video, +.fullscreenvideo video { background: #000} + +.fullcoveredvideo .tp-poster { background-position: center center;background-size: cover;width:100%;height:100%;top:0px;left:0px} + + +.videoisplaying .html5vid .tp-poster { display: none} + +.tp-video-play-button { + background:#000; + background:rgba(0,0,0,0.3); + border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px; + position: absolute; + top: 50%; + left: 50%; + color: #FFF; + z-index: 3; + margin-top: -25px; + margin-left: -25px; + line-height: 50px !important; + text-align: center; + cursor: pointer; + width: 50px; + height:50px; + box-sizing: border-box; + -moz-box-sizing: border-box; + display: inline-block; + vertical-align: top; + z-index: 4; + opacity: 0; + -webkit-transition:opacity 300ms ease-out !important; + -moz-transition:opacity 300ms ease-out !important; + -o-transition:opacity 300ms ease-out !important; + transition:opacity 300ms ease-out !important; +} +.tp-caption .html5vid { width:100% !important; height:100% !important;} +.tp-video-play-button i { width:50px;height:50px; display:inline-block; text-align: center; vertical-align: top; line-height: 50px !important; font-size: 40px !important;} +.tp-caption:hover .tp-video-play-button { opacity: 1;} +.tp-caption .tp-revstop { display:none; border-left:5px solid #fff !important; border-right:5px solid #fff !important;margin-top:15px !important;line-height: 20px !important;vertical-align: top; font-size:25px !important;} +.videoisplaying .revicon-right-dir { display:none} +.videoisplaying .tp-revstop { display:inline-block} + +.videoisplaying .tp-video-play-button { display:none} +.tp-caption:hover .tp-video-play-button { display:block} + +.fullcoveredvideo .tp-video-play-button { display:none !important} + + +.fullscreenvideo .fullscreenvideo video { object-fit:contain !important;} + +.fullscreenvideo .fullcoveredvideo video { object-fit:cover !important;} + +.tp-video-controls { + position: absolute; + bottom: 0; + left: 0; + right: 0; + padding: 5px; + opacity: 0; + -webkit-transition: opacity .3s; + -moz-transition: opacity .3s; + -o-transition: opacity .3s; + -ms-transition: opacity .3s; + transition: opacity .3s; + background-image: linear-gradient(bottom, rgb(0,0,0) 13%, rgb(50,50,50) 100%); + background-image: -o-linear-gradient(bottom, rgb(0,0,0) 13%, rgb(50,50,50) 100%); + background-image: -moz-linear-gradient(bottom, rgb(0,0,0) 13%, rgb(50,50,50) 100%); + background-image: -webkit-linear-gradient(bottom, rgb(0,0,0) 13%, rgb(50,50,50) 100%); + background-image: -ms-linear-gradient(bottom, rgb(0,0,0) 13%, rgb(50,50,50) 100%); + background-image: -webkit-gradient(linear,left bottom,left top,color-stop(0.13, rgb(0,0,0)),color-stop(1, rgb(50,50,50))); + display:table;max-width:100%; overflow:hidden;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box; +} + +.tp-caption:hover .tp-video-controls { opacity: .9;} + +.tp-video-button { + background: rgba(0,0,0,.5); + border: 0; + color: #EEE; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; + cursor:pointer; + line-height:12px; + font-size:12px; + color:#fff; + padding:0px; + margin:0px; + outline: none; + } +.tp-video-button:hover { cursor: pointer;} + + +.tp-video-button-wrap, +.tp-video-seek-bar-wrap, +.tp-video-vol-bar-wrap { padding:0px 5px;display:table-cell; } + +.tp-video-seek-bar-wrap { width:80%} +.tp-video-vol-bar-wrap { width:20%} + +.tp-volume-bar, +.tp-seek-bar { width:100%; cursor: pointer; outline:none; line-height:12px;margin:0; padding:0;} + + +.rs-fullvideo-cover { width:100%;height:100%;top:0px;left:0px;position: absolute; background:transparent;z-index:5;} + + + + +/******************************** + - DOTTED OVERLAYS - +*********************************/ +.tp-dottedoverlay { background-repeat:repeat;width:100%;height:100%;position:absolute;top:0px;left:0px;z-index:3} +.tp-dottedoverlay.twoxtwo { background:url(../assets/gridtile.png)} +.tp-dottedoverlay.twoxtwowhite { background:url(../assets/gridtile_white.png)} +.tp-dottedoverlay.threexthree { background:url(../assets/gridtile_3x3.png)} +.tp-dottedoverlay.threexthreewhite { background:url(../assets/gridtile_3x3_white.png)} + + +/****************************** + - SHADOWS - +******************************/ + +.tp-shadowcover { width:100%;height:100%;top:0px;left:0px;background: #fff;position: absolute; z-index: -1;} +.tp-shadow1 { + -webkit-box-shadow: 0 10px 6px -6px rgba(0,0,0,0.8); + -moz-box-shadow: 0 10px 6px -6px rgba(0,0,0,0.8); + box-shadow: 0 10px 6px -6px rgba(0,0,0,0.8); +} + +.tp-shadow2:before, .tp-shadow2:after, +.tp-shadow3:before, .tp-shadow4:after +{ + z-index: -2; + position: absolute; + content: ""; + bottom: 10px; + left: 10px; + width: 50%; + top: 85%; + max-width:300px; + background: transparent; + -webkit-box-shadow: 0 15px 10px rgba(0,0,0,0.8); + -moz-box-shadow: 0 15px 10px rgba(0,0,0,0.8); + box-shadow: 0 15px 10px rgba(0,0,0,0.8); + -webkit-transform: rotate(-3deg); + -moz-transform: rotate(-3deg); + -o-transform: rotate(-3deg); + -ms-transform: rotate(-3deg); + transform: rotate(-3deg); +} + +.tp-shadow2:after, +.tp-shadow4:after +{ + -webkit-transform: rotate(3deg); + -moz-transform: rotate(3deg); + -o-transform: rotate(3deg); + -ms-transform: rotate(3deg); + transform: rotate(3deg); + right: 10px; + left: auto; +} + +.tp-shadow5 +{ + position:relative; + -webkit-box-shadow:0 1px 4px rgba(0, 0, 0, 0.3), 0 0 40px rgba(0, 0, 0, 0.1) inset; + -moz-box-shadow:0 1px 4px rgba(0, 0, 0, 0.3), 0 0 40px rgba(0, 0, 0, 0.1) inset; + box-shadow:0 1px 4px rgba(0, 0, 0, 0.3), 0 0 40px rgba(0, 0, 0, 0.1) inset; +} +.tp-shadow5:before, .tp-shadow5:after +{ + content:""; + position:absolute; + z-index:-2; + -webkit-box-shadow:0 0 25px 0px rgba(0,0,0,0.6); + -moz-box-shadow:0 0 25px 0px rgba(0,0,0,0.6); + box-shadow:0 0 25px 0px rgba(0,0,0,0.6); + top:30%; + bottom:0; + left:20px; + right:20px; + -moz-border-radius:100px / 20px; + border-radius:100px / 20px; +} + +/****************************** + - BUTTONS - +*******************************/ + +.tp-button{ + padding:6px 13px 5px; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + height:30px; + cursor:pointer; + color:#fff !important; text-shadow:0px 1px 1px rgba(0, 0, 0, 0.6) !important; font-size:15px; line-height:45px !important; + background:url(../images/gradient/g30.png) repeat-x top; font-family: arial, sans-serif; font-weight: bold; letter-spacing: -1px; + text-decoration:none; +} + +.tp-button.big { color:#fff; text-shadow:0px 1px 1px rgba(0, 0, 0, 0.6); font-weight:bold; padding:9px 20px; font-size:19px; line-height:57px !important; background:url(../images/gradient/g40.png) repeat-x top} + + +.purchase:hover, +.tp-button:hover, +.tp-button.big:hover { background-position:bottom, 15px 11px} + + +/* BUTTON COLORS */ + +.tp-button.green, .tp-button:hover.green, +.purchase.green, .purchase:hover.green { background-color:#21a117; -webkit-box-shadow: 0px 3px 0px 0px #104d0b; -moz-box-shadow: 0px 3px 0px 0px #104d0b; box-shadow: 0px 3px 0px 0px #104d0b; } + +.tp-button.blue, .tp-button:hover.blue, +.purchase.blue, .purchase:hover.blue { background-color:#1d78cb; -webkit-box-shadow: 0px 3px 0px 0px #0f3e68; -moz-box-shadow: 0px 3px 0px 0px #0f3e68; box-shadow: 0px 3px 0px 0px #0f3e68} + +.tp-button.red, .tp-button:hover.red, +.purchase.red, .purchase:hover.red { background-color:#cb1d1d; -webkit-box-shadow: 0px 3px 0px 0px #7c1212; -moz-box-shadow: 0px 3px 0px 0px #7c1212; box-shadow: 0px 3px 0px 0px #7c1212} + +.tp-button.orange, .tp-button:hover.orange, +.purchase.orange, .purchase:hover.orange { background-color:#ff7700; -webkit-box-shadow: 0px 3px 0px 0px #a34c00; -moz-box-shadow: 0px 3px 0px 0px #a34c00; box-shadow: 0px 3px 0px 0px #a34c00} + +.tp-button.darkgrey,.tp-button.grey, +.tp-button:hover.darkgrey,.tp-button:hover.grey, +.purchase.darkgrey, .purchase:hover.darkgrey { background-color:#555; -webkit-box-shadow: 0px 3px 0px 0px #222; -moz-box-shadow: 0px 3px 0px 0px #222; box-shadow: 0px 3px 0px 0px #222} + +.tp-button.lightgrey, .tp-button:hover.lightgrey, +.purchase.lightgrey, .purchase:hover.lightgrey { background-color:#888; -webkit-box-shadow: 0px 3px 0px 0px #555; -moz-box-shadow: 0px 3px 0px 0px #555; box-shadow: 0px 3px 0px 0px #555} + + + +/* TP BUTTONS DESKTOP SIZE */ + +.rev-btn, +.rev-btn:visited { outline:none !important; box-shadow:none !important; text-decoration: none !important; line-height: 44px; font-size: 17px; font-weight: 500; padding: 12px 35px; box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box; font-family: "Roboto", sans-serif; cursor: pointer;} + +.rev-btn.rev-uppercase, +.rev-btn.rev-uppercase:visited { text-transform: uppercase; letter-spacing: 1px; font-size: 15px; font-weight: 900; } + +.rev-btn.rev-withicon i { font-size: 15px; font-weight: normal; position: relative; top: 0px; -webkit-transition: all 0.2s ease-out !important; -moz-transition: all 0.2s ease-out !important; -o-transition: all 0.2s ease-out !important; -ms-transition: all 0.2s ease-out !important; margin-left:10px !importan;} + +.rev-btn.rev-hiddenicon i { font-size: 15px; font-weight: normal; position: relative; top: 0px; -webkit-transition: all 0.2s ease-out !important; -moz-transition: all 0.2s ease-out !important; -o-transition: all 0.2s ease-out !important; -ms-transition: all 0.2s ease-out !important; opacity: 0; margin-left:0px !important; width:0px !important; } +.rev-btn.rev-hiddenicon:hover i { opacity: 1 !important; margin-left:10px !important; width:auto !important;} + +/* REV BUTTONS MEDIUM */ +.rev-btn.rev-medium, +.rev-btn.rev-medium:visited { line-height: 36px; font-size: 14px; padding: 10px 30px; } + +.rev-btn.rev-medium.rev-withicon i { font-size: 14px; top: 0px; } + +.rev-btn.rev-medium.rev-hiddenicon i { font-size: 14px; top: 0px; } + + +/* REV BUTTONS SMALL */ +.rev-btn.rev-small, +.rev-btn.rev-small:visited { line-height: 28px; font-size: 12px; padding: 7px 20px; } + +.rev-btn.rev-small.rev-withicon i { font-size: 12px; top: 0px; } + +.rev-btn.rev-small.rev-hiddenicon i { font-size: 12px; top: 0px; } + + +/* ROUNDING OPTIONS */ +.rev-maxround { -webkit-border-radius: 30px; -moz-border-radius: 30px; border-radius: 30px; } +.rev-minround { -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } + + +/* BURGER BUTTON */ +.rev-burger { + position: relative; + width: 60px; + height: 60px; + box-sizing: border-box; + padding: 22px 0 0 14px; + border-radius: 50%; + border: 1px solid rgba(51,51,51,0.25); + tap-highlight-color: transparent; + cursor: pointer; +} +.rev-burger span { + display: block; + width: 30px; + height: 3px; + background: #333; + transition: .7s; + pointer-events: none; + transform-style: flat !important; +} +.rev-burger span:nth-child(2) { + margin: 3px 0; +} + +#dialog_addbutton .rev-burger:hover :first-child, +.open .rev-burger :first-child, +.open.rev-burger :first-child { + transform: translateY(6px) rotate(-45deg); + -webkit-transform: translateY(6px) rotate(-45deg); +} +#dialog_addbutton .rev-burger:hover :nth-child(2), +.open .rev-burger :nth-child(2), +.open.rev-burger :nth-child(2) { + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); + opacity: 0; +} +#dialog_addbutton .rev-burger:hover :last-child, +.open .rev-burger :last-child, +.open.rev-burger :last-child { + transform: translateY(-6px) rotate(-135deg); + -webkit-transform: translateY(-6px) rotate(-135deg); +} + +.rev-burger.revb-white { + border: 2px solid rgba(255,255,255,0.2); +} +.rev-burger.revb-white span { + background: #fff; +} +.rev-burger.revb-whitenoborder { + border: 0; +} +.rev-burger.revb-whitenoborder span { + background: #fff; +} +.rev-burger.revb-darknoborder { + border: 0; +} +.rev-burger.revb-darknoborder span { + background: #333; +} + +.rev-burger.revb-whitefull { + background: #fff; + border:none; +} + +.rev-burger.revb-whitefull span { + background:#333; +} + +.rev-burger.revb-darkfull { + background: #333; + border:none; +} + +.rev-burger.revb-darkfull span { + background:#fff; +} + + +/* SCROLL DOWN BUTTON */ +@-webkit-keyframes rev-ani-mouse { + 0% { opacity: 1;top: 29%;} + 15% {opacity: 1;top: 50%;} + 50% { opacity: 0;top: 50%;} + 100% { opacity: 0;top: 29%;} +} +@-moz-keyframes rev-ani-mouse { + 0% {opacity: 1;top: 29%;} + 15% {opacity: 1;top: 50%;} + 50% {opacity: 0;top: 50%;} + 100% {opacity: 0;top: 29%;} +} +@keyframes rev-ani-mouse { + 0% {opacity: 1;top: 29%;} + 15% {opacity: 1;top: 50%;} + 50% {opacity: 0;top: 50%;} + 100% {opacity: 0;top: 29%;} +} +.rev-scroll-btn { + display: inline-block; + position: relative; + left: 0; + right: 0; + text-align: center; + cursor: pointer; + width:35px; + height:55px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + border: 3px solid white; + border-radius: 23px; +} +.rev-scroll-btn > * { + display: inline-block; + line-height: 18px; + font-size: 13px; + font-weight: normal; + color: #7f8c8d; + color: #ffffff; + font-family: "proxima-nova", "Helvetica Neue", Helvetica, Arial, sans-serif; + letter-spacing: 2px; +} +.rev-scroll-btn > *:hover, +.rev-scroll-btn > *:focus, +.rev-scroll-btn > *.active { + color: #ffffff; +} +.rev-scroll-btn > *:hover, +.rev-scroll-btn > *:focus, +.rev-scroll-btn > *:active, +.rev-scroll-btn > *.active { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.rev-scroll-btn.revs-fullwhite { + background:#fff; +} + +.rev-scroll-btn.revs-fullwhite span { + background: #333; +} + +.rev-scroll-btn.revs-fulldark { + background:#333; + border:none; +} + +.rev-scroll-btn.revs-fulldark span { + background: #fff; +} + +.rev-scroll-btn span { + position: absolute; + display: block; + top: 29%; + left: 50%; + width: 8px; + height: 8px; + margin: -4px 0 0 -4px; + background: white; + border-radius: 50%; + -webkit-animation: rev-ani-mouse 2.5s linear infinite; + -moz-animation: rev-ani-mouse 2.5s linear infinite; + animation: rev-ani-mouse 2.5s linear infinite; +} + +.rev-scroll-btn.revs-dark { + border-color:#333; +} +.rev-scroll-btn.revs-dark span { + background: #333; +} + +.rev-control-btn { + position: relative; + display: inline-block; + z-index: 5; + color: #FFF; + font-size: 20px; + line-height: 60px; + font-weight: 400; + font-style: normal; + font-family: Raleway; + text-decoration: none; + text-align: center; + background-color: #000; + border-radius: 50px; + text-shadow: none; + background-color: rgba(0, 0, 0, 0.50); + width:60px; + height:60px; + box-sizing: border-box; + cursor: pointer; +} + +.rev-cbutton-dark-sr { + border-radius: 3px; +} + +.rev-cbutton-light { + color: #333; + background-color: rgba(255,255,255, 0.75); +} + +.rev-cbutton-light-sr { + color: #333; + border-radius: 3; + background-color: rgba(255,255,255, 0.75); +} + + +.rev-sbutton { + line-height: 37px; + width:37px; + height:37px; +} + +.rev-sbutton-blue { + background-color: #3B5998 +} +.rev-sbutton-lightblue { + background-color: #00A0D1; +} +.rev-sbutton-red { + background-color: #DD4B39; +} + + + + +/************************************ +- TP BANNER TIMER - +*************************************/ +.tp-bannertimer { visibility: hidden; width:100%; height:5px; /*background:url(../assets/timer.png);*/ background: #fff; background: rgba(0,0,0,0.15); position:absolute; z-index:200; top:0px} +.tp-bannertimer.tp-bottom { top:auto; bottom:0px !important;height:5px} + + +/********************************************* +- BASIC SETTINGS FOR THE BANNER - +***********************************************/ + + .tp-simpleresponsive img { + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; +} + +.tp-caption img { + background: transparent; + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF)"; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF); + zoom: 1; +} + + + +/* CAPTION SLIDELINK **/ +.caption.slidelink a div, +.tp-caption.slidelink a div { width:3000px; height:1500px; background:url(../assets/coloredbg.png) repeat} +.tp-caption.slidelink a span{ background:url(../assets/coloredbg.png) repeat} +.tp-shape { width:100%;height:100%;} + + + + +/****************************** + - LOADER FORMS - +********************************/ + +.tp-loader { + top:50%; left:50%; + z-index:10000; + position:absolute; +} + +.tp-loader.spinner0 { + width: 40px; + height: 40px; + background-color: #fff; + background:url(../assets/loader.gif) no-repeat center center; + box-shadow: 0px 0px 20px 0px rgba(0,0,0,0.15); + -webkit-box-shadow: 0px 0px 20px 0px rgba(0,0,0,0.15); + margin-top:-20px; + margin-left:-20px; + -webkit-animation: tp-rotateplane 1.2s infinite ease-in-out; + animation: tp-rotateplane 1.2s infinite ease-in-out; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} + + +.tp-loader.spinner1 { + width: 40px; + height: 40px; + background-color: #fff; + box-shadow: 0px 0px 20px 0px rgba(0,0,0,0.15); + -webkit-box-shadow: 0px 0px 20px 0px rgba(0,0,0,0.15); + margin-top:-20px; + margin-left:-20px; + -webkit-animation: tp-rotateplane 1.2s infinite ease-in-out; + animation: tp-rotateplane 1.2s infinite ease-in-out; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} + + + +.tp-loader.spinner5 { + background:url(../assets/loader.gif) no-repeat 10px 10px; + background-color:#fff; + margin:-22px -22px; + width:44px;height:44px; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} + + +@-webkit-keyframes tp-rotateplane { + 0% { -webkit-transform: perspective(120px) } + 50% { -webkit-transform: perspective(120px) rotateY(180deg) } + 100% { -webkit-transform: perspective(120px) rotateY(180deg) rotateX(180deg) } +} + +@keyframes tp-rotateplane { + 0% { transform: perspective(120px) rotateX(0deg) rotateY(0deg);} + 50% { transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);} + 100% { transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);} +} + + +.tp-loader.spinner2 { + width: 40px; + height: 40px; + margin-top:-20px;margin-left:-20px; + background-color: #ff0000; + box-shadow: 0px 0px 20px 0px rgba(0,0,0,0.15); + -webkit-box-shadow: 0px 0px 20px 0px rgba(0,0,0,0.15); + border-radius: 100%; + -webkit-animation: tp-scaleout 1.0s infinite ease-in-out; + animation: tp-scaleout 1.0s infinite ease-in-out; +} + +@-webkit-keyframes tp-scaleout { + 0% { -webkit-transform: scale(0.0) } + 100% {-webkit-transform: scale(1.0); opacity: 0;} +} + +@keyframes tp-scaleout { + 0% {transform: scale(0.0);-webkit-transform: scale(0.0);} + 100% {transform: scale(1.0);-webkit-transform: scale(1.0);opacity: 0;} +} + + +.tp-loader.spinner3 { + margin: -9px 0px 0px -35px; + width: 70px; + text-align: center; +} + +.tp-loader.spinner3 .bounce1, +.tp-loader.spinner3 .bounce2, +.tp-loader.spinner3 .bounce3 { + width: 18px; + height: 18px; + background-color: #fff; + box-shadow: 0px 0px 20px 0px rgba(0,0,0,0.15); + -webkit-box-shadow: 0px 0px 20px 0px rgba(0,0,0,0.15); + border-radius: 100%; + display: inline-block; + -webkit-animation: tp-bouncedelay 1.4s infinite ease-in-out; + animation: tp-bouncedelay 1.4s infinite ease-in-out; + /* Prevent first frame from flickering when animation starts */ + -webkit-animation-fill-mode: both; + animation-fill-mode: both; +} + +.tp-loader.spinner3 .bounce1 { + -webkit-animation-delay: -0.32s; + animation-delay: -0.32s; +} + +.tp-loader.spinner3 .bounce2 { + -webkit-animation-delay: -0.16s; + animation-delay: -0.16s; +} + +@-webkit-keyframes tp-bouncedelay { + 0%, 80%, 100% { -webkit-transform: scale(0.0) } + 40% { -webkit-transform: scale(1.0) } +} + +@keyframes tp-bouncedelay { + 0%, 80%, 100% {transform: scale(0.0);} + 40% {transform: scale(1.0);} +} + + + + +.tp-loader.spinner4 { + margin: -20px 0px 0px -20px; + width: 40px; + height: 40px; + text-align: center; + -webkit-animation: tp-rotate 2.0s infinite linear; + animation: tp-rotate 2.0s infinite linear; +} + +.tp-loader.spinner4 .dot1, +.tp-loader.spinner4 .dot2 { + width: 60%; + height: 60%; + display: inline-block; + position: absolute; + top: 0; + background-color: #fff; + border-radius: 100%; + -webkit-animation: tp-bounce 2.0s infinite ease-in-out; + animation: tp-bounce 2.0s infinite ease-in-out; + box-shadow: 0px 0px 20px 0px rgba(0,0,0,0.15); + -webkit-box-shadow: 0px 0px 20px 0px rgba(0,0,0,0.15); +} + +.tp-loader.spinner4 .dot2 { + top: auto; + bottom: 0px; + -webkit-animation-delay: -1.0s; + animation-delay: -1.0s; +} + +@-webkit-keyframes tp-rotate { 100% { -webkit-transform: rotate(360deg) }} +@keyframes tp-rotate { 100% { transform: rotate(360deg); -webkit-transform: rotate(360deg) }} + +@-webkit-keyframes tp-bounce { + 0%, 100% { -webkit-transform: scale(0.0) } + 50% { -webkit-transform: scale(1.0) } +} + +@keyframes tp-bounce { + 0%, 100% {transform: scale(0.0);} + 50% { transform: scale(1.0);} +} + + + +/*********************************************** + - STANDARD NAVIGATION SETTINGS +***********************************************/ + + +.tp-thumbs.navbar, +.tp-bullets.navbar, +.tp-tabs.navbar { border:none; min-height: 0; margin:0; border-radius: 0; -moz-border-radius:0; -webkit-border-radius:0;} + +.tp-tabs, +.tp-thumbs, +.tp-bullets { position:absolute; display:block; z-index:1000; top:0px; left:0px;} + +.tp-tab, +.tp-thumb { cursor: pointer; position:absolute;opacity:0.5; box-sizing: border-box;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;} + +.tp-videoposter, +.tp-thumb-image, +.tp-tab-image { background-position: center center; background-size:cover;width:100%;height:100%; display:block; position:absolute;top:0px;left:0px;} + +.tp-tab:hover, +.tp-tab.selected, +.tp-thumb:hover, +.tp-thumb.selected { opacity:1;} + +.tp-tab-mask, +.tp-thumb-mask { box-sizing:border-box !important; -webkit-box-sizing:border-box !important; -moz-box-sizing:border-box !important} + +.tp-tabs, +.tp-thumbs { box-sizing:content-box !important; -webkit-box-sizing:content-box !important; -moz-box-sizing: content-box !important} + +.tp-bullet { width:15px;height:15px; position:absolute; background:#fff; background:rgba(255,255,255,0.3); cursor: pointer;} +.tp-bullet.selected, +.tp-bullet:hover { background:#fff;} + +.tp-bannertimer { background:#000; background:rgba(0,0,0,0.15); height:5px;} + + +.tparrows { cursor:pointer; background:#000; background:rgba(0,0,0,0.5); width:40px;height:40px;position:absolute; display:block; z-index:100; } +.tparrows:hover { background:#000;} +.tparrows:before { font-family: "revicons"; font-size:15px; color:#fff; display:block; line-height: 40px; text-align: center;} +.tparrows.tp-leftarrow:before { content: '\e824'; } +.tparrows.tp-rightarrow:before { content: '\e825'; } + + + +/******************* + - DEBUG MODE - +*******************/ + +.hglayerinfo { position: fixed; + bottom: 0px; + left: 0px; + color: #FFF; + font-size: 12px; + line-height: 20px; + font-weight: 600; + background: rgba(0, 0, 0, 0.75); + padding: 5px 10px; + z-index: 2000; + white-space: normal;} +.hginfo { position:absolute;top:-2px;left:-2px;color:#e74c3c;font-size:12px;font-weight:600; background:#000;padding:2px 5px;} +.indebugmode .tp-caption:hover { border:1px dashed #c0392b !important;} +.helpgrid { border:2px dashed #c0392b;position:absolute;top:0px;peft:0px;z-index:0 } + diff --git a/plugins/revslider/public/assets/fonts/font-awesome/css/font-awesome.css b/plugins/revslider/public/assets/fonts/font-awesome/css/font-awesome.css new file mode 100644 index 0000000..689e807 --- /dev/null +++ b/plugins/revslider/public/assets/fonts/font-awesome/css/font-awesome.css @@ -0,0 +1,1608 @@ +/*! + * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.2.0'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} + +[class^="fa-icon-"], [class*=" fa-icon-"] { + display: inline-block; + font-family: 'FontAwesome'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + display: inline-block; +} + +.fa-icon-spin { + -webkit-animation: fa-icon-spin 2s infinite linear; + animation: fa-icon-spin 2s infinite linear; +} + +.fa-icon-rotate-90 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-icon-rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-icon-rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-icon-flip-horizontal { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.fa-icon-flip-vertical { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .fa-icon-rotate-90, +:root .fa-icon-rotate-180, +:root .fa-icon-rotate-270, +:root .fa-icon-flip-horizontal, +:root .fa-icon-flip-vertical { + filter: none; +} +.fa-icon-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-icon-stack-1x, +.fa-icon-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-icon-stack-1x { + line-height: inherit; +} +.fa-icon-stack-2x { + font-size: 2em; +} +.fa-icon-inverse { + color: #ffffff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-icon-glass:before { + content: "\f000"; +} +.fa-icon-music:before { + content: "\f001"; +} +.fa-icon-search:before { + content: "\f002"; +} +.fa-icon-envelope-o:before { + content: "\f003"; +} +.fa-icon-heart:before { + content: "\f004"; +} +.fa-icon-star:before { + content: "\f005"; +} +.fa-icon-star-o:before { + content: "\f006"; +} +.fa-icon-user:before { + content: "\f007"; +} +.fa-icon-film:before { + content: "\f008"; +} +.fa-icon-th-large:before { + content: "\f009"; +} +.fa-icon-th:before { + content: "\f00a"; +} +.fa-icon-th-list:before { + content: "\f00b"; +} +.fa-icon-check:before { + content: "\f00c"; +} +.fa-icon-remove:before, +.fa-icon-close:before, +.fa-icon-times:before { + content: "\f00d"; +} +.fa-icon-search-plus:before { + content: "\f00e"; +} +.fa-icon-search-minus:before { + content: "\f010"; +} +.fa-icon-power-off:before { + content: "\f011"; +} +.fa-icon-signal:before { + content: "\f012"; +} +.fa-icon-gear:before, +.fa-icon-cog:before { + content: "\f013"; +} +.fa-icon-trash-o:before { + content: "\f014"; +} +.fa-icon-home:before { + content: "\f015"; +} +.fa-icon-file-o:before { + content: "\f016"; +} +.fa-icon-clock-o:before { + content: "\f017"; +} +.fa-icon-road:before { + content: "\f018"; +} +.fa-icon-download:before { + content: "\f019"; +} +.fa-icon-arrow-circle-o-down:before { + content: "\f01a"; +} +.fa-icon-arrow-circle-o-up:before { + content: "\f01b"; +} +.fa-icon-inbox:before { + content: "\f01c"; +} +.fa-icon-play-circle-o:before { + content: "\f01d"; +} +.fa-icon-rotate-right:before, +.fa-icon-repeat:before { + content: "\f01e"; +} +.fa-icon-refresh:before { + content: "\f021"; +} +.fa-icon-list-alt:before { + content: "\f022"; +} +.fa-icon-lock:before { + content: "\f023"; +} +.fa-icon-flag:before { + content: "\f024"; +} +.fa-icon-headphones:before { + content: "\f025"; +} +.fa-icon-volume-off:before { + content: "\f026"; +} +.fa-icon-volume-down:before { + content: "\f027"; +} +.fa-icon-volume-up:before { + content: "\f028"; +} +.fa-icon-qrcode:before { + content: "\f029"; +} +.fa-icon-barcode:before { + content: "\f02a"; +} +.fa-icon-tag:before { + content: "\f02b"; +} +.fa-icon-tags:before { + content: "\f02c"; +} +.fa-icon-book:before { + content: "\f02d"; +} +.fa-icon-bookmark:before { + content: "\f02e"; +} +.fa-icon-print:before { + content: "\f02f"; +} +.fa-icon-camera:before { + content: "\f030"; +} +.fa-icon-font:before { + content: "\f031"; +} +.fa-icon-bold:before { + content: "\f032"; +} +.fa-icon-italic:before { + content: "\f033"; +} +.fa-icon-text-height:before { + content: "\f034"; +} +.fa-icon-text-width:before { + content: "\f035"; +} +.fa-icon-align-left:before { + content: "\f036"; +} +.fa-icon-align-center:before { + content: "\f037"; +} +.fa-icon-align-right:before { + content: "\f038"; +} +.fa-icon-align-justify:before { + content: "\f039"; +} +.fa-icon-list:before { + content: "\f03a"; +} +.fa-icon-dedent:before, +.fa-icon-outdent:before { + content: "\f03b"; +} +.fa-icon-indent:before { + content: "\f03c"; +} +.fa-icon-video-camera:before { + content: "\f03d"; +} +.fa-icon-photo:before, +.fa-icon-image:before, +.fa-icon-picture-o:before { + content: "\f03e"; +} +.fa-icon-pencil:before { + content: "\f040"; +} +.fa-icon-map-marker:before { + content: "\f041"; +} +.fa-icon-adjust:before { + content: "\f042"; +} +.fa-icon-tint:before { + content: "\f043"; +} +.fa-icon-edit:before, +.fa-icon-pencil-square-o:before { + content: "\f044"; +} +.fa-icon-share-square-o:before { + content: "\f045"; +} +.fa-icon-check-square-o:before { + content: "\f046"; +} +.fa-icon-arrows:before { + content: "\f047"; +} +.fa-icon-step-backward:before { + content: "\f048"; +} +.fa-icon-fast-backward:before { + content: "\f049"; +} +.fa-icon-backward:before { + content: "\f04a"; +} +.fa-icon-play:before { + content: "\f04b"; +} +.fa-icon-pause:before { + content: "\f04c"; +} +.fa-icon-stop:before { + content: "\f04d"; +} +.fa-icon-forward:before { + content: "\f04e"; +} +.fa-icon-fast-forward:before { + content: "\f050"; +} +.fa-icon-step-forward:before { + content: "\f051"; +} +.fa-icon-eject:before { + content: "\f052"; +} +.fa-icon-chevron-left:before { + content: "\f053"; +} +.fa-icon-chevron-right:before { + content: "\f054"; +} +.fa-icon-plus-circle:before { + content: "\f055"; +} +.fa-icon-minus-circle:before { + content: "\f056"; +} +.fa-icon-times-circle:before { + content: "\f057"; +} +.fa-icon-check-circle:before { + content: "\f058"; +} +.fa-icon-question-circle:before { + content: "\f059"; +} +.fa-icon-info-circle:before { + content: "\f05a"; +} +.fa-icon-crosshairs:before { + content: "\f05b"; +} +.fa-icon-times-circle-o:before { + content: "\f05c"; +} +.fa-icon-check-circle-o:before { + content: "\f05d"; +} +.fa-icon-ban:before { + content: "\f05e"; +} +.fa-icon-arrow-left:before { + content: "\f060"; +} +.fa-icon-arrow-right:before { + content: "\f061"; +} +.fa-icon-arrow-up:before { + content: "\f062"; +} +.fa-icon-arrow-down:before { + content: "\f063"; +} +.fa-icon-mail-forward:before, +.fa-icon-share:before { + content: "\f064"; +} +.fa-icon-expand:before { + content: "\f065"; +} +.fa-icon-compress:before { + content: "\f066"; +} +.fa-icon-plus:before { + content: "\f067"; +} +.fa-icon-minus:before { + content: "\f068"; +} +.fa-icon-asterisk:before { + content: "\f069"; +} +.fa-icon-exclamation-circle:before { + content: "\f06a"; +} +.fa-icon-gift:before { + content: "\f06b"; +} +.fa-icon-leaf:before { + content: "\f06c"; +} +.fa-icon-fire:before { + content: "\f06d"; +} +.fa-icon-eye:before { + content: "\f06e"; +} +.fa-icon-eye-slash:before { + content: "\f070"; +} +.fa-icon-warning:before, +.fa-icon-exclamation-triangle:before { + content: "\f071"; +} +.fa-icon-plane:before { + content: "\f072"; +} +.fa-icon-calendar:before { + content: "\f073"; +} +.fa-icon-random:before { + content: "\f074"; +} +.fa-icon-comment:before { + content: "\f075"; +} +.fa-icon-magnet:before { + content: "\f076"; +} +.fa-icon-chevron-up:before { + content: "\f077"; +} +.fa-icon-chevron-down:before { + content: "\f078"; +} +.fa-icon-retweet:before { + content: "\f079"; +} +.fa-icon-shopping-cart:before { + content: "\f07a"; +} +.fa-icon-folder:before { + content: "\f07b"; +} +.fa-icon-folder-open:before { + content: "\f07c"; +} +.fa-icon-arrows-v:before { + content: "\f07d"; +} +.fa-icon-arrows-h:before { + content: "\f07e"; +} +.fa-icon-bar-chart-o:before, +.fa-icon-bar-chart:before { + content: "\f080"; +} +.fa-icon-twitter-square:before { + content: "\f081"; +} +.fa-icon-facebook-square:before { + content: "\f082"; +} +.fa-icon-camera-retro:before { + content: "\f083"; +} +.fa-icon-key:before { + content: "\f084"; +} +.fa-icon-gears:before, +.fa-icon-cogs:before { + content: "\f085"; +} +.fa-icon-comments:before { + content: "\f086"; +} +.fa-icon-thumbs-o-up:before { + content: "\f087"; +} +.fa-icon-thumbs-o-down:before { + content: "\f088"; +} +.fa-icon-star-half:before { + content: "\f089"; +} +.fa-icon-heart-o:before { + content: "\f08a"; +} +.fa-icon-sign-out:before { + content: "\f08b"; +} +.fa-icon-linkedin-square:before { + content: "\f08c"; +} +.fa-icon-thumb-tack:before { + content: "\f08d"; +} +.fa-icon-external-link:before { + content: "\f08e"; +} +.fa-icon-sign-in:before { + content: "\f090"; +} +.fa-icon-trophy:before { + content: "\f091"; +} +.fa-icon-github-square:before { + content: "\f092"; +} +.fa-icon-upload:before { + content: "\f093"; +} +.fa-icon-lemon-o:before { + content: "\f094"; +} +.fa-icon-phone:before { + content: "\f095"; +} +.fa-icon-square-o:before { + content: "\f096"; +} +.fa-icon-bookmark-o:before { + content: "\f097"; +} +.fa-icon-phone-square:before { + content: "\f098"; +} +.fa-icon-twitter:before { + content: "\f099"; +} +.fa-icon-facebook:before { + content: "\f09a"; +} +.fa-icon-github:before { + content: "\f09b"; +} +.fa-icon-unlock:before { + content: "\f09c"; +} +.fa-icon-credit-card:before { + content: "\f09d"; +} +.fa-icon-rss:before { + content: "\f09e"; +} +.fa-icon-hdd-o:before { + content: "\f0a0"; +} +.fa-icon-bullhorn:before { + content: "\f0a1"; +} +.fa-icon-bell:before { + content: "\f0f3"; +} +.fa-icon-certificate:before { + content: "\f0a3"; +} +.fa-icon-hand-o-right:before { + content: "\f0a4"; +} +.fa-icon-hand-o-left:before { + content: "\f0a5"; +} +.fa-icon-hand-o-up:before { + content: "\f0a6"; +} +.fa-icon-hand-o-down:before { + content: "\f0a7"; +} +.fa-icon-arrow-circle-left:before { + content: "\f0a8"; +} +.fa-icon-arrow-circle-right:before { + content: "\f0a9"; +} +.fa-icon-arrow-circle-up:before { + content: "\f0aa"; +} +.fa-icon-arrow-circle-down:before { + content: "\f0ab"; +} +.fa-icon-globe:before { + content: "\f0ac"; +} +.fa-icon-wrench:before { + content: "\f0ad"; +} +.fa-icon-tasks:before { + content: "\f0ae"; +} +.fa-icon-filter:before { + content: "\f0b0"; +} +.fa-icon-briefcase:before { + content: "\f0b1"; +} +.fa-icon-arrows-alt:before { + content: "\f0b2"; +} +.fa-icon-group:before, +.fa-icon-users:before { + content: "\f0c0"; +} +.fa-icon-chain:before, +.fa-icon-link:before { + content: "\f0c1"; +} +.fa-icon-cloud:before { + content: "\f0c2"; +} +.fa-icon-flask:before { + content: "\f0c3"; +} +.fa-icon-cut:before, +.fa-icon-scissors:before { + content: "\f0c4"; +} +.fa-icon-copy:before, +.fa-icon-files-o:before { + content: "\f0c5"; +} +.fa-icon-paperclip:before { + content: "\f0c6"; +} +.fa-icon-save:before, +.fa-icon-floppy-o:before { + content: "\f0c7"; +} +.fa-icon-square:before { + content: "\f0c8"; +} +.fa-icon-navicon:before, +.fa-icon-reorder:before, +.fa-icon-bars:before { + content: "\f0c9"; +} +.fa-icon-list-ul:before { + content: "\f0ca"; +} +.fa-icon-list-ol:before { + content: "\f0cb"; +} +.fa-icon-strikethrough:before { + content: "\f0cc"; +} +.fa-icon-underline:before { + content: "\f0cd"; +} +.fa-icon-table:before { + content: "\f0ce"; +} +.fa-icon-magic:before { + content: "\f0d0"; +} +.fa-icon-truck:before { + content: "\f0d1"; +} +.fa-icon-pinterest:before { + content: "\f0d2"; +} +.fa-icon-pinterest-square:before { + content: "\f0d3"; +} +.fa-icon-google-plus-square:before { + content: "\f0d4"; +} +.fa-icon-google-plus:before { + content: "\f0d5"; +} +.fa-icon-money:before { + content: "\f0d6"; +} +.fa-icon-caret-down:before { + content: "\f0d7"; +} +.fa-icon-caret-up:before { + content: "\f0d8"; +} +.fa-icon-caret-left:before { + content: "\f0d9"; +} +.fa-icon-caret-right:before { + content: "\f0da"; +} +.fa-icon-columns:before { + content: "\f0db"; +} +.fa-icon-unsorted:before, +.fa-icon-sort:before { + content: "\f0dc"; +} +.fa-icon-sort-down:before, +.fa-icon-sort-desc:before { + content: "\f0dd"; +} +.fa-icon-sort-up:before, +.fa-icon-sort-asc:before { + content: "\f0de"; +} +.fa-icon-envelope:before { + content: "\f0e0"; +} +.fa-icon-linkedin:before { + content: "\f0e1"; +} +.fa-icon-rotate-left:before, +.fa-icon-undo:before { + content: "\f0e2"; +} +.fa-icon-legal:before, +.fa-icon-gavel:before { + content: "\f0e3"; +} +.fa-icon-dashboard:before, +.fa-icon-tachometer:before { + content: "\f0e4"; +} +.fa-icon-comment-o:before { + content: "\f0e5"; +} +.fa-icon-comments-o:before { + content: "\f0e6"; +} +.fa-icon-flash:before, +.fa-icon-bolt:before { + content: "\f0e7"; +} +.fa-icon-sitemap:before { + content: "\f0e8"; +} +.fa-icon-umbrella:before { + content: "\f0e9"; +} +.fa-icon-paste:before, +.fa-icon-clipboard:before { + content: "\f0ea"; +} +.fa-icon-lightbulb-o:before { + content: "\f0eb"; +} +.fa-icon-exchange:before { + content: "\f0ec"; +} +.fa-icon-cloud-download:before { + content: "\f0ed"; +} +.fa-icon-cloud-upload:before { + content: "\f0ee"; +} +.fa-icon-user-md:before { + content: "\f0f0"; +} +.fa-icon-stethoscope:before { + content: "\f0f1"; +} +.fa-icon-suitcase:before { + content: "\f0f2"; +} +.fa-icon-bell-o:before { + content: "\f0a2"; +} +.fa-icon-coffee:before { + content: "\f0f4"; +} +.fa-icon-cutlery:before { + content: "\f0f5"; +} +.fa-icon-file-text-o:before { + content: "\f0f6"; +} +.fa-icon-building-o:before { + content: "\f0f7"; +} +.fa-icon-hospital-o:before { + content: "\f0f8"; +} +.fa-icon-ambulance:before { + content: "\f0f9"; +} +.fa-icon-medkit:before { + content: "\f0fa"; +} +.fa-icon-fighter-jet:before { + content: "\f0fb"; +} +.fa-icon-beer:before { + content: "\f0fc"; +} +.fa-icon-h-square:before { + content: "\f0fd"; +} +.fa-icon-plus-square:before { + content: "\f0fe"; +} +.fa-icon-angle-double-left:before { + content: "\f100"; +} +.fa-icon-angle-double-right:before { + content: "\f101"; +} +.fa-icon-angle-double-up:before { + content: "\f102"; +} +.fa-icon-angle-double-down:before { + content: "\f103"; +} +.fa-icon-angle-left:before { + content: "\f104"; +} +.fa-icon-angle-right:before { + content: "\f105"; +} +.fa-icon-angle-up:before { + content: "\f106"; +} +.fa-icon-angle-down:before { + content: "\f107"; +} +.fa-icon-desktop:before { + content: "\f108"; +} +.fa-icon-laptop:before { + content: "\f109"; +} +.fa-icon-tablet:before { + content: "\f10a"; +} +.fa-icon-mobile-phone:before, +.fa-icon-mobile:before { + content: "\f10b"; +} +.fa-icon-circle-o:before { + content: "\f10c"; +} +.fa-icon-quote-left:before { + content: "\f10d"; +} +.fa-icon-quote-right:before { + content: "\f10e"; +} +.fa-icon-spinner:before { + content: "\f110"; +} +.fa-icon-circle:before { + content: "\f111"; +} +.fa-icon-mail-reply:before, +.fa-icon-reply:before { + content: "\f112"; +} +.fa-icon-github-alt:before { + content: "\f113"; +} +.fa-icon-folder-o:before { + content: "\f114"; +} +.fa-icon-folder-open-o:before { + content: "\f115"; +} +.fa-icon-smile-o:before { + content: "\f118"; +} +.fa-icon-frown-o:before { + content: "\f119"; +} +.fa-icon-meh-o:before { + content: "\f11a"; +} +.fa-icon-gamepad:before { + content: "\f11b"; +} +.fa-icon-keyboard-o:before { + content: "\f11c"; +} +.fa-icon-flag-o:before { + content: "\f11d"; +} +.fa-icon-flag-checkered:before { + content: "\f11e"; +} +.fa-icon-terminal:before { + content: "\f120"; +} +.fa-icon-code:before { + content: "\f121"; +} +.fa-icon-mail-reply-all:before, +.fa-icon-reply-all:before { + content: "\f122"; +} +.fa-icon-star-half-empty:before, +.fa-icon-star-half-full:before, +.fa-icon-star-half-o:before { + content: "\f123"; +} +.fa-icon-location-arrow:before { + content: "\f124"; +} +.fa-icon-crop:before { + content: "\f125"; +} +.fa-icon-code-fork:before { + content: "\f126"; +} +.fa-icon-unlink:before, +.fa-icon-chain-broken:before { + content: "\f127"; +} +.fa-icon-question:before { + content: "\f128"; +} +.fa-icon-info:before { + content: "\f129"; +} +.fa-icon-exclamation:before { + content: "\f12a"; +} +.fa-icon-superscript:before { + content: "\f12b"; +} +.fa-icon-subscript:before { + content: "\f12c"; +} +.fa-icon-eraser:before { + content: "\f12d"; +} +.fa-icon-puzzle-piece:before { + content: "\f12e"; +} +.fa-icon-microphone:before { + content: "\f130"; +} +.fa-icon-microphone-slash:before { + content: "\f131"; +} +.fa-icon-shield:before { + content: "\f132"; +} +.fa-icon-calendar-o:before { + content: "\f133"; +} +.fa-icon-fire-extinguisher:before { + content: "\f134"; +} +.fa-icon-rocket:before { + content: "\f135"; +} +.fa-icon-maxcdn:before { + content: "\f136"; +} +.fa-icon-chevron-circle-left:before { + content: "\f137"; +} +.fa-icon-chevron-circle-right:before { + content: "\f138"; +} +.fa-icon-chevron-circle-up:before { + content: "\f139"; +} +.fa-icon-chevron-circle-down:before { + content: "\f13a"; +} +.fa-icon-html5:before { + content: "\f13b"; +} +.fa-icon-css3:before { + content: "\f13c"; +} +.fa-icon-anchor:before { + content: "\f13d"; +} +.fa-icon-unlock-alt:before { + content: "\f13e"; +} +.fa-icon-bullseye:before { + content: "\f140"; +} +.fa-icon-ellipsis-h:before { + content: "\f141"; +} +.fa-icon-ellipsis-v:before { + content: "\f142"; +} +.fa-icon-rss-square:before { + content: "\f143"; +} +.fa-icon-play-circle:before { + content: "\f144"; +} +.fa-icon-ticket:before { + content: "\f145"; +} +.fa-icon-minus-square:before { + content: "\f146"; +} +.fa-icon-minus-square-o:before { + content: "\f147"; +} +.fa-icon-level-up:before { + content: "\f148"; +} +.fa-icon-level-down:before { + content: "\f149"; +} +.fa-icon-check-square:before { + content: "\f14a"; +} +.fa-icon-pencil-square:before { + content: "\f14b"; +} +.fa-icon-external-link-square:before { + content: "\f14c"; +} +.fa-icon-share-square:before { + content: "\f14d"; +} +.fa-icon-compass:before { + content: "\f14e"; +} +.fa-icon-toggle-down:before, +.fa-icon-caret-square-o-down:before { + content: "\f150"; +} +.fa-icon-toggle-up:before, +.fa-icon-caret-square-o-up:before { + content: "\f151"; +} +.fa-icon-toggle-right:before, +.fa-icon-caret-square-o-right:before { + content: "\f152"; +} +.fa-icon-euro:before, +.fa-icon-eur:before { + content: "\f153"; +} +.fa-icon-gbp:before { + content: "\f154"; +} +.fa-icon-dollar:before, +.fa-icon-usd:before { + content: "\f155"; +} +.fa-icon-rupee:before, +.fa-icon-inr:before { + content: "\f156"; +} +.fa-icon-cny:before, +.fa-icon-rmb:before, +.fa-icon-yen:before, +.fa-icon-jpy:before { + content: "\f157"; +} +.fa-icon-ruble:before, +.fa-icon-rouble:before, +.fa-icon-rub:before { + content: "\f158"; +} +.fa-icon-won:before, +.fa-icon-krw:before { + content: "\f159"; +} +.fa-icon-bitcoin:before, +.fa-icon-btc:before { + content: "\f15a"; +} +.fa-icon-file:before { + content: "\f15b"; +} +.fa-icon-file-text:before { + content: "\f15c"; +} +.fa-icon-sort-alpha-asc:before { + content: "\f15d"; +} +.fa-icon-sort-alpha-desc:before { + content: "\f15e"; +} +.fa-icon-sort-amount-asc:before { + content: "\f160"; +} +.fa-icon-sort-amount-desc:before { + content: "\f161"; +} +.fa-icon-sort-numeric-asc:before { + content: "\f162"; +} +.fa-icon-sort-numeric-desc:before { + content: "\f163"; +} +.fa-icon-thumbs-up:before { + content: "\f164"; +} +.fa-icon-thumbs-down:before { + content: "\f165"; +} +.fa-icon-youtube-square:before { + content: "\f166"; +} +.fa-icon-youtube:before { + content: "\f167"; +} +.fa-icon-xing:before { + content: "\f168"; +} +.fa-icon-xing-square:before { + content: "\f169"; +} +.fa-icon-youtube-play:before { + content: "\f16a"; +} +.fa-icon-dropbox:before { + content: "\f16b"; +} +.fa-icon-stack-overflow:before { + content: "\f16c"; +} +.fa-icon-instagram:before { + content: "\f16d"; +} +.fa-icon-flickr:before { + content: "\f16e"; +} +.fa-icon-adn:before { + content: "\f170"; +} +.fa-icon-bitbucket:before { + content: "\f171"; +} +.fa-icon-bitbucket-square:before { + content: "\f172"; +} +.fa-icon-tumblr:before { + content: "\f173"; +} +.fa-icon-tumblr-square:before { + content: "\f174"; +} +.fa-icon-long-arrow-down:before { + content: "\f175"; +} +.fa-icon-long-arrow-up:before { + content: "\f176"; +} +.fa-icon-long-arrow-left:before { + content: "\f177"; +} +.fa-icon-long-arrow-right:before { + content: "\f178"; +} +.fa-icon-apple:before { + content: "\f179"; +} +.fa-icon-windows:before { + content: "\f17a"; +} +.fa-icon-android:before { + content: "\f17b"; +} +.fa-icon-linux:before { + content: "\f17c"; +} +.fa-icon-dribbble:before { + content: "\f17d"; +} +.fa-icon-skype:before { + content: "\f17e"; +} +.fa-icon-foursquare:before { + content: "\f180"; +} +.fa-icon-trello:before { + content: "\f181"; +} +.fa-icon-female:before { + content: "\f182"; +} +.fa-icon-male:before { + content: "\f183"; +} +.fa-icon-gittip:before { + content: "\f184"; +} +.fa-icon-sun-o:before { + content: "\f185"; +} +.fa-icon-moon-o:before { + content: "\f186"; +} +.fa-icon-archive:before { + content: "\f187"; +} +.fa-icon-bug:before { + content: "\f188"; +} +.fa-icon-vk:before { + content: "\f189"; +} +.fa-icon-weibo:before { + content: "\f18a"; +} +.fa-icon-renren:before { + content: "\f18b"; +} +.fa-icon-pagelines:before { + content: "\f18c"; +} +.fa-icon-stack-exchange:before { + content: "\f18d"; +} +.fa-icon-arrow-circle-o-right:before { + content: "\f18e"; +} +.fa-icon-arrow-circle-o-left:before { + content: "\f190"; +} +.fa-icon-toggle-left:before, +.fa-icon-caret-square-o-left:before { + content: "\f191"; +} +.fa-icon-dot-circle-o:before { + content: "\f192"; +} +.fa-icon-wheelchair:before { + content: "\f193"; +} +.fa-icon-vimeo-square:before { + content: "\f194"; +} +.fa-icon-turkish-lira:before, +.fa-icon-try:before { + content: "\f195"; +} +.fa-icon-plus-square-o:before { + content: "\f196"; +} +.fa-icon-space-shuttle:before { + content: "\f197"; +} +.fa-icon-slack:before { + content: "\f198"; +} +.fa-icon-envelope-square:before { + content: "\f199"; +} +.fa-icon-wordpress:before { + content: "\f19a"; +} +.fa-icon-openid:before { + content: "\f19b"; +} +.fa-icon-institution:before, +.fa-icon-bank:before, +.fa-icon-university:before { + content: "\f19c"; +} +.fa-icon-mortar-board:before, +.fa-icon-graduation-cap:before { + content: "\f19d"; +} +.fa-icon-yahoo:before { + content: "\f19e"; +} +.fa-icon-google:before { + content: "\f1a0"; +} +.fa-icon-reddit:before { + content: "\f1a1"; +} +.fa-icon-reddit-square:before { + content: "\f1a2"; +} +.fa-icon-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-icon-stumbleupon:before { + content: "\f1a4"; +} +.fa-icon-delicious:before { + content: "\f1a5"; +} +.fa-icon-digg:before { + content: "\f1a6"; +} +.fa-icon-pied-piper:before { + content: "\f1a7"; +} +.fa-icon-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-icon-drupal:before { + content: "\f1a9"; +} +.fa-icon-joomla:before { + content: "\f1aa"; +} +.fa-icon-language:before { + content: "\f1ab"; +} +.fa-icon-fax:before { + content: "\f1ac"; +} +.fa-icon-building:before { + content: "\f1ad"; +} +.fa-icon-child:before { + content: "\f1ae"; +} +.fa-icon-paw:before { + content: "\f1b0"; +} +.fa-icon-spoon:before { + content: "\f1b1"; +} +.fa-icon-cube:before { + content: "\f1b2"; +} +.fa-icon-cubes:before { + content: "\f1b3"; +} +.fa-icon-behance:before { + content: "\f1b4"; +} +.fa-icon-behance-square:before { + content: "\f1b5"; +} +.fa-icon-steam:before { + content: "\f1b6"; +} +.fa-icon-steam-square:before { + content: "\f1b7"; +} +.fa-icon-recycle:before { + content: "\f1b8"; +} +.fa-icon-automobile:before, +.fa-icon-car:before { + content: "\f1b9"; +} +.fa-icon-cab:before, +.fa-icon-taxi:before { + content: "\f1ba"; +} +.fa-icon-tree:before { + content: "\f1bb"; +} +.fa-icon-spotify:before { + content: "\f1bc"; +} +.fa-icon-deviantart:before { + content: "\f1bd"; +} +.fa-icon-soundcloud:before { + content: "\f1be"; +} +.fa-icon-database:before { + content: "\f1c0"; +} +.fa-icon-file-pdf-o:before { + content: "\f1c1"; +} +.fa-icon-file-word-o:before { + content: "\f1c2"; +} +.fa-icon-file-excel-o:before { + content: "\f1c3"; +} +.fa-icon-file-powerpoint-o:before { + content: "\f1c4"; +} +.fa-icon-file-photo-o:before, +.fa-icon-file-picture-o:before, +.fa-icon-file-image-o:before { + content: "\f1c5"; +} +.fa-icon-file-zip-o:before, +.fa-icon-file-archive-o:before { + content: "\f1c6"; +} +.fa-icon-file-sound-o:before, +.fa-icon-file-audio-o:before { + content: "\f1c7"; +} +.fa-icon-file-movie-o:before, +.fa-icon-file-video-o:before { + content: "\f1c8"; +} +.fa-icon-file-code-o:before { + content: "\f1c9"; +} +.fa-icon-vine:before { + content: "\f1ca"; +} +.fa-icon-codepen:before { + content: "\f1cb"; +} +.fa-icon-jsfiddle:before { + content: "\f1cc"; +} +.fa-icon-life-bouy:before, +.fa-icon-life-buoy:before, +.fa-icon-life-saver:before, +.fa-icon-support:before, +.fa-icon-life-ring:before { + content: "\f1cd"; +} +.fa-icon-circle-o-notch:before { + content: "\f1ce"; +} +.fa-icon-ra:before, +.fa-icon-rebel:before { + content: "\f1d0"; +} +.fa-icon-ge:before, +.fa-icon-empire:before { + content: "\f1d1"; +} +.fa-icon-git-square:before { + content: "\f1d2"; +} +.fa-icon-git:before { + content: "\f1d3"; +} +.fa-icon-hacker-news:before { + content: "\f1d4"; +} +.fa-icon-tencent-weibo:before { + content: "\f1d5"; +} +.fa-icon-qq:before { + content: "\f1d6"; +} +.fa-icon-wechat:before, +.fa-icon-weixin:before { + content: "\f1d7"; +} +.fa-icon-send:before, +.fa-icon-paper-plane:before { + content: "\f1d8"; +} +.fa-icon-send-o:before, +.fa-icon-paper-plane-o:before { + content: "\f1d9"; +} +.fa-icon-history:before { + content: "\f1da"; +} +.fa-icon-circle-thin:before { + content: "\f1db"; +} +.fa-icon-header:before { + content: "\f1dc"; +} +.fa-icon-paragraph:before { + content: "\f1dd"; +} +.fa-icon-sliders:before { + content: "\f1de"; +} +.fa-icon-share-alt:before { + content: "\f1e0"; +} +.fa-icon-share-alt-square:before { + content: "\f1e1"; +} +.fa-icon-bomb:before { + content: "\f1e2"; +} +.fa-icon-soccer-ball-o:before, +.fa-icon-futbol-o:before { + content: "\f1e3"; +} +.fa-icon-tty:before { + content: "\f1e4"; +} +.fa-icon-binoculars:before { + content: "\f1e5"; +} +.fa-icon-plug:before { + content: "\f1e6"; +} +.fa-icon-slideshare:before { + content: "\f1e7"; +} +.fa-icon-twitch:before { + content: "\f1e8"; +} +.fa-icon-yelp:before { + content: "\f1e9"; +} +.fa-icon-newspaper-o:before { + content: "\f1ea"; +} +.fa-icon-wifi:before { + content: "\f1eb"; +} +.fa-icon-calculator:before { + content: "\f1ec"; +} +.fa-icon-paypal:before { + content: "\f1ed"; +} +.fa-icon-google-wallet:before { + content: "\f1ee"; +} +.fa-icon-cc-visa:before { + content: "\f1f0"; +} +.fa-icon-cc-mastercard:before { + content: "\f1f1"; +} +.fa-icon-cc-discover:before { + content: "\f1f2"; +} +.fa-icon-cc-amex:before { + content: "\f1f3"; +} +.fa-icon-cc-paypal:before { + content: "\f1f4"; +} +.fa-icon-cc-stripe:before { + content: "\f1f5"; +} +.fa-icon-bell-slash:before { + content: "\f1f6"; +} +.fa-icon-bell-slash-o:before { + content: "\f1f7"; +} +.fa-icon-trash:before { + content: "\f1f8"; +} +.fa-icon-copyright:before { + content: "\f1f9"; +} +.fa-icon-at:before { + content: "\f1fa"; +} +.fa-icon-eyedropper:before { + content: "\f1fb"; +} +.fa-icon-paint-brush:before { + content: "\f1fc"; +} +.fa-icon-birthday-cake:before { + content: "\f1fd"; +} +.fa-icon-area-chart:before { + content: "\f1fe"; +} +.fa-icon-pie-chart:before { + content: "\f200"; +} +.fa-icon-line-chart:before { + content: "\f201"; +} +.fa-icon-lastfm:before { + content: "\f202"; +} +.fa-icon-lastfm-square:before { + content: "\f203"; +} +.fa-icon-toggle-off:before { + content: "\f204"; +} +.fa-icon-toggle-on:before { + content: "\f205"; +} +.fa-icon-bicycle:before { + content: "\f206"; +} +.fa-icon-bus:before { + content: "\f207"; +} +.fa-icon-ioxhost:before { + content: "\f208"; +} +.fa-icon-angellist:before { + content: "\f209"; +} +.fa-icon-cc:before { + content: "\f20a"; +} +.fa-icon-shekel:before, +.fa-icon-sheqel:before, +.fa-icon-ils:before { + content: "\f20b"; +} +.fa-icon-meanpath:before { + content: "\f20c"; +} diff --git a/plugins/revslider/public/assets/fonts/font-awesome/css/font-awesome.min.css b/plugins/revslider/public/assets/fonts/font-awesome/css/font-awesome.min.css new file mode 100644 index 0000000..318fb87 --- /dev/null +++ b/plugins/revslider/public/assets/fonts/font-awesome/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.2.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"} \ No newline at end of file diff --git a/plugins/revslider/public/assets/fonts/font-awesome/css/index.php b/plugins/revslider/public/assets/fonts/font-awesome/css/index.php new file mode 100644 index 0000000..e69de29 diff --git a/plugins/revslider/public/assets/fonts/font-awesome/fonts/FontAwesome.otf b/plugins/revslider/public/assets/fonts/font-awesome/fonts/FontAwesome.otf new file mode 100644 index 0000000..81c9ad9 Binary files /dev/null and b/plugins/revslider/public/assets/fonts/font-awesome/fonts/FontAwesome.otf differ diff --git a/plugins/revslider/public/assets/fonts/font-awesome/fonts/fontawesome-webfont.eot b/plugins/revslider/public/assets/fonts/font-awesome/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000..84677bc Binary files /dev/null and b/plugins/revslider/public/assets/fonts/font-awesome/fonts/fontawesome-webfont.eot differ diff --git a/plugins/revslider/public/assets/fonts/font-awesome/fonts/fontawesome-webfont.svg b/plugins/revslider/public/assets/fonts/font-awesome/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..a5c1044 --- /dev/null +++ b/plugins/revslider/public/assets/fonts/font-awesome/fonts/fontawesome-webfont.svg @@ -0,0 +1,520 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/revslider/public/assets/fonts/font-awesome/fonts/fontawesome-webfont.ttf b/plugins/revslider/public/assets/fonts/font-awesome/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..96a3639 Binary files /dev/null and b/plugins/revslider/public/assets/fonts/font-awesome/fonts/fontawesome-webfont.ttf differ diff --git a/plugins/revslider/public/assets/fonts/font-awesome/fonts/fontawesome-webfont.woff b/plugins/revslider/public/assets/fonts/font-awesome/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..628b6a5 Binary files /dev/null and b/plugins/revslider/public/assets/fonts/font-awesome/fonts/fontawesome-webfont.woff differ diff --git a/plugins/revslider/public/assets/fonts/font-awesome/fonts/index.php b/plugins/revslider/public/assets/fonts/font-awesome/fonts/index.php new file mode 100644 index 0000000..e69de29 diff --git a/plugins/revslider/public/assets/fonts/font-awesome/index.php b/plugins/revslider/public/assets/fonts/font-awesome/index.php new file mode 100644 index 0000000..e69de29 diff --git a/plugins/revslider/public/assets/fonts/index.php b/plugins/revslider/public/assets/fonts/index.php new file mode 100644 index 0000000..e69de29 diff --git a/plugins/revslider/public/assets/fonts/pe-icon-7-stroke/css/helper.css b/plugins/revslider/public/assets/fonts/pe-icon-7-stroke/css/helper.css new file mode 100644 index 0000000..c42c3fe --- /dev/null +++ b/plugins/revslider/public/assets/fonts/pe-icon-7-stroke/css/helper.css @@ -0,0 +1,191 @@ + +/* HELPER CLASS + * -------------------------- */ + +/* FA based classes */ + +/*! Modified from font-awesome helper CSS classes - PIXEDEN + * Font Awesome 4.0.3 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (CSS: MIT License) + */ + +/* makes the font 33% larger relative to the icon container */ +.pe-lg { + font-size: 1.3333333333333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.pe-2x { + font-size: 2em; +} +.pe-3x { + font-size: 3em; +} +.pe-4x { + font-size: 4em; +} +.pe-5x { + font-size: 5em; +} +.pe-fw { + width: 1.2857142857142858em; + text-align: center; +} +.pe-ul { + padding-left: 0; + margin-left: 2.142857142857143em; + list-style-type: none; +} +.pe-ul > li { + position: relative; +} +.pe-li { + position: absolute; + left: -2.142857142857143em; + width: 2.142857142857143em; + top: 0.14285714285714285em; + text-align: center; +} +.pe-li.pe-lg { + left: -1.8571428571428572em; +} +.pe-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.pe.pull-left { + margin-right: .3em; +} +.pe.pull-right { + margin-left: .3em; +} +.pe-spin { + -webkit-animation: spin 2s infinite linear; + -moz-animation: spin 2s infinite linear; + -o-animation: spin 2s infinite linear; + animation: spin 2s infinite linear; +} +@-moz-keyframes spin { + 0% { + -moz-transform: rotate(0deg); + } + 100% { + -moz-transform: rotate(359deg); + } +} +@-webkit-keyframes spin { + 0% { + -webkit-transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + } +} +@-o-keyframes spin { + 0% { + -o-transform: rotate(0deg); + } + 100% { + -o-transform: rotate(359deg); + } +} +@-ms-keyframes spin { + 0% { + -ms-transform: rotate(0deg); + } + 100% { + -ms-transform: rotate(359deg); + } +} +@keyframes spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(359deg); + } +} +.pe-rotate-90 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); +} +.pe-rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -o-transform: rotate(180deg); + transform: rotate(180deg); +} +.pe-rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -webkit-transform: rotate(270deg); + -moz-transform: rotate(270deg); + -ms-transform: rotate(270deg); + -o-transform: rotate(270deg); + transform: rotate(270deg); +} +.pe-flip-horizontal { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); + -webkit-transform: scale(-1, 1); + -moz-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + -o-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.pe-flip-vertical { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); + -webkit-transform: scale(1, -1); + -moz-transform: scale(1, -1); + -ms-transform: scale(1, -1); + -o-transform: scale(1, -1); + transform: scale(1, -1); +} +.pe-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.pe-stack-1x, +.pe-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.pe-stack-1x { + line-height: inherit; +} +.pe-stack-2x { + font-size: 2em; +} +.pe-inverse { + color: #ffffff; +} + +/* Custom classes / mods - PIXEDEN */ +.pe-va { + vertical-align: middle; +} + +.pe-border { + border: solid 0.08em #eaeaea; +} + +[class^="pe-7s-"], [class*=" pe-7s-"] { + display: inline-block; +} \ No newline at end of file diff --git a/plugins/revslider/public/assets/fonts/pe-icon-7-stroke/css/index.php b/plugins/revslider/public/assets/fonts/pe-icon-7-stroke/css/index.php new file mode 100644 index 0000000..e69de29 diff --git a/plugins/revslider/public/assets/fonts/pe-icon-7-stroke/css/pe-icon-7-stroke.css b/plugins/revslider/public/assets/fonts/pe-icon-7-stroke/css/pe-icon-7-stroke.css new file mode 100644 index 0000000..3833322 --- /dev/null +++ b/plugins/revslider/public/assets/fonts/pe-icon-7-stroke/css/pe-icon-7-stroke.css @@ -0,0 +1,632 @@ +@font-face { + font-family: 'Pe-icon-7-stroke'; + src:url('../fonts/Pe-icon-7-stroke.eot?d7yf1v'); + src:url('../fonts/Pe-icon-7-stroke.eot?#iefixd7yf1v') format('embedded-opentype'), + url('../fonts/Pe-icon-7-stroke.woff?d7yf1v') format('woff'), + url('../fonts/Pe-icon-7-stroke.ttf?d7yf1v') format('truetype'), + url('../fonts/Pe-icon-7-stroke.svg?d7yf1v#Pe-icon-7-stroke') format('svg'); + font-weight: normal; + font-style: normal; +} + +[class^="pe-7s-"], [class*=" pe-7s-"] { + display: inline-block; + font-family: 'Pe-icon-7-stroke'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.pe-7s-album:before { + content: "\e6aa"; +} +.pe-7s-arc:before { + content: "\e6ab"; +} +.pe-7s-back-2:before { + content: "\e6ac"; +} +.pe-7s-bandaid:before { + content: "\e6ad"; +} +.pe-7s-car:before { + content: "\e6ae"; +} +.pe-7s-diamond:before { + content: "\e6af"; +} +.pe-7s-door-lock:before { + content: "\e6b0"; +} +.pe-7s-eyedropper:before { + content: "\e6b1"; +} +.pe-7s-female:before { + content: "\e6b2"; +} +.pe-7s-gym:before { + content: "\e6b3"; +} +.pe-7s-hammer:before { + content: "\e6b4"; +} +.pe-7s-headphones:before { + content: "\e6b5"; +} +.pe-7s-helm:before { + content: "\e6b6"; +} +.pe-7s-hourglass:before { + content: "\e6b7"; +} +.pe-7s-leaf:before { + content: "\e6b8"; +} +.pe-7s-magic-wand:before { + content: "\e6b9"; +} +.pe-7s-male:before { + content: "\e6ba"; +} +.pe-7s-map-2:before { + content: "\e6bb"; +} +.pe-7s-next-2:before { + content: "\e6bc"; +} +.pe-7s-paint-bucket:before { + content: "\e6bd"; +} +.pe-7s-pendrive:before { + content: "\e6be"; +} +.pe-7s-photo:before { + content: "\e6bf"; +} +.pe-7s-piggy:before { + content: "\e6c0"; +} +.pe-7s-plugin:before { + content: "\e6c1"; +} +.pe-7s-refresh-2:before { + content: "\e6c2"; +} +.pe-7s-rocket:before { + content: "\e6c3"; +} +.pe-7s-settings:before { + content: "\e6c4"; +} +.pe-7s-shield:before { + content: "\e6c5"; +} +.pe-7s-smile:before { + content: "\e6c6"; +} +.pe-7s-usb:before { + content: "\e6c7"; +} +.pe-7s-vector:before { + content: "\e6c8"; +} +.pe-7s-wine:before { + content: "\e6c9"; +} +.pe-7s-cloud-upload:before { + content: "\e68a"; +} +.pe-7s-cash:before { + content: "\e68c"; +} +.pe-7s-close:before { + content: "\e680"; +} +.pe-7s-bluetooth:before { + content: "\e68d"; +} +.pe-7s-cloud-download:before { + content: "\e68b"; +} +.pe-7s-way:before { + content: "\e68e"; +} +.pe-7s-close-circle:before { + content: "\e681"; +} +.pe-7s-id:before { + content: "\e68f"; +} +.pe-7s-angle-up:before { + content: "\e682"; +} +.pe-7s-wristwatch:before { + content: "\e690"; +} +.pe-7s-angle-up-circle:before { + content: "\e683"; +} +.pe-7s-world:before { + content: "\e691"; +} +.pe-7s-angle-right:before { + content: "\e684"; +} +.pe-7s-volume:before { + content: "\e692"; +} +.pe-7s-angle-right-circle:before { + content: "\e685"; +} +.pe-7s-users:before { + content: "\e693"; +} +.pe-7s-angle-left:before { + content: "\e686"; +} +.pe-7s-user-female:before { + content: "\e694"; +} +.pe-7s-angle-left-circle:before { + content: "\e687"; +} +.pe-7s-up-arrow:before { + content: "\e695"; +} +.pe-7s-angle-down:before { + content: "\e688"; +} +.pe-7s-switch:before { + content: "\e696"; +} +.pe-7s-angle-down-circle:before { + content: "\e689"; +} +.pe-7s-scissors:before { + content: "\e697"; +} +.pe-7s-wallet:before { + content: "\e600"; +} +.pe-7s-safe:before { + content: "\e698"; +} +.pe-7s-volume2:before { + content: "\e601"; +} +.pe-7s-volume1:before { + content: "\e602"; +} +.pe-7s-voicemail:before { + content: "\e603"; +} +.pe-7s-video:before { + content: "\e604"; +} +.pe-7s-user:before { + content: "\e605"; +} +.pe-7s-upload:before { + content: "\e606"; +} +.pe-7s-unlock:before { + content: "\e607"; +} +.pe-7s-umbrella:before { + content: "\e608"; +} +.pe-7s-trash:before { + content: "\e609"; +} +.pe-7s-tools:before { + content: "\e60a"; +} +.pe-7s-timer:before { + content: "\e60b"; +} +.pe-7s-ticket:before { + content: "\e60c"; +} +.pe-7s-target:before { + content: "\e60d"; +} +.pe-7s-sun:before { + content: "\e60e"; +} +.pe-7s-study:before { + content: "\e60f"; +} +.pe-7s-stopwatch:before { + content: "\e610"; +} +.pe-7s-star:before { + content: "\e611"; +} +.pe-7s-speaker:before { + content: "\e612"; +} +.pe-7s-signal:before { + content: "\e613"; +} +.pe-7s-shuffle:before { + content: "\e614"; +} +.pe-7s-shopbag:before { + content: "\e615"; +} +.pe-7s-share:before { + content: "\e616"; +} +.pe-7s-server:before { + content: "\e617"; +} +.pe-7s-search:before { + content: "\e618"; +} +.pe-7s-film:before { + content: "\e6a5"; +} +.pe-7s-science:before { + content: "\e619"; +} +.pe-7s-disk:before { + content: "\e6a6"; +} +.pe-7s-ribbon:before { + content: "\e61a"; +} +.pe-7s-repeat:before { + content: "\e61b"; +} +.pe-7s-refresh:before { + content: "\e61c"; +} +.pe-7s-add-user:before { + content: "\e6a9"; +} +.pe-7s-refresh-cloud:before { + content: "\e61d"; +} +.pe-7s-paperclip:before { + content: "\e69c"; +} +.pe-7s-radio:before { + content: "\e61e"; +} +.pe-7s-note2:before { + content: "\e69d"; +} +.pe-7s-print:before { + content: "\e61f"; +} +.pe-7s-network:before { + content: "\e69e"; +} +.pe-7s-prev:before { + content: "\e620"; +} +.pe-7s-mute:before { + content: "\e69f"; +} +.pe-7s-power:before { + content: "\e621"; +} +.pe-7s-medal:before { + content: "\e6a0"; +} +.pe-7s-portfolio:before { + content: "\e622"; +} +.pe-7s-like2:before { + content: "\e6a1"; +} +.pe-7s-plus:before { + content: "\e623"; +} +.pe-7s-left-arrow:before { + content: "\e6a2"; +} +.pe-7s-play:before { + content: "\e624"; +} +.pe-7s-key:before { + content: "\e6a3"; +} +.pe-7s-plane:before { + content: "\e625"; +} +.pe-7s-joy:before { + content: "\e6a4"; +} +.pe-7s-photo-gallery:before { + content: "\e626"; +} +.pe-7s-pin:before { + content: "\e69b"; +} +.pe-7s-phone:before { + content: "\e627"; +} +.pe-7s-plug:before { + content: "\e69a"; +} +.pe-7s-pen:before { + content: "\e628"; +} +.pe-7s-right-arrow:before { + content: "\e699"; +} +.pe-7s-paper-plane:before { + content: "\e629"; +} +.pe-7s-delete-user:before { + content: "\e6a7"; +} +.pe-7s-paint:before { + content: "\e62a"; +} +.pe-7s-bottom-arrow:before { + content: "\e6a8"; +} +.pe-7s-notebook:before { + content: "\e62b"; +} +.pe-7s-note:before { + content: "\e62c"; +} +.pe-7s-next:before { + content: "\e62d"; +} +.pe-7s-news-paper:before { + content: "\e62e"; +} +.pe-7s-musiclist:before { + content: "\e62f"; +} +.pe-7s-music:before { + content: "\e630"; +} +.pe-7s-mouse:before { + content: "\e631"; +} +.pe-7s-more:before { + content: "\e632"; +} +.pe-7s-moon:before { + content: "\e633"; +} +.pe-7s-monitor:before { + content: "\e634"; +} +.pe-7s-micro:before { + content: "\e635"; +} +.pe-7s-menu:before { + content: "\e636"; +} +.pe-7s-map:before { + content: "\e637"; +} +.pe-7s-map-marker:before { + content: "\e638"; +} +.pe-7s-mail:before { + content: "\e639"; +} +.pe-7s-mail-open:before { + content: "\e63a"; +} +.pe-7s-mail-open-file:before { + content: "\e63b"; +} +.pe-7s-magnet:before { + content: "\e63c"; +} +.pe-7s-loop:before { + content: "\e63d"; +} +.pe-7s-look:before { + content: "\e63e"; +} +.pe-7s-lock:before { + content: "\e63f"; +} +.pe-7s-lintern:before { + content: "\e640"; +} +.pe-7s-link:before { + content: "\e641"; +} +.pe-7s-like:before { + content: "\e642"; +} +.pe-7s-light:before { + content: "\e643"; +} +.pe-7s-less:before { + content: "\e644"; +} +.pe-7s-keypad:before { + content: "\e645"; +} +.pe-7s-junk:before { + content: "\e646"; +} +.pe-7s-info:before { + content: "\e647"; +} +.pe-7s-home:before { + content: "\e648"; +} +.pe-7s-help2:before { + content: "\e649"; +} +.pe-7s-help1:before { + content: "\e64a"; +} +.pe-7s-graph3:before { + content: "\e64b"; +} +.pe-7s-graph2:before { + content: "\e64c"; +} +.pe-7s-graph1:before { + content: "\e64d"; +} +.pe-7s-graph:before { + content: "\e64e"; +} +.pe-7s-global:before { + content: "\e64f"; +} +.pe-7s-gleam:before { + content: "\e650"; +} +.pe-7s-glasses:before { + content: "\e651"; +} +.pe-7s-gift:before { + content: "\e652"; +} +.pe-7s-folder:before { + content: "\e653"; +} +.pe-7s-flag:before { + content: "\e654"; +} +.pe-7s-filter:before { + content: "\e655"; +} +.pe-7s-file:before { + content: "\e656"; +} +.pe-7s-expand1:before { + content: "\e657"; +} +.pe-7s-exapnd2:before { + content: "\e658"; +} +.pe-7s-edit:before { + content: "\e659"; +} +.pe-7s-drop:before { + content: "\e65a"; +} +.pe-7s-drawer:before { + content: "\e65b"; +} +.pe-7s-download:before { + content: "\e65c"; +} +.pe-7s-display2:before { + content: "\e65d"; +} +.pe-7s-display1:before { + content: "\e65e"; +} +.pe-7s-diskette:before { + content: "\e65f"; +} +.pe-7s-date:before { + content: "\e660"; +} +.pe-7s-cup:before { + content: "\e661"; +} +.pe-7s-culture:before { + content: "\e662"; +} +.pe-7s-crop:before { + content: "\e663"; +} +.pe-7s-credit:before { + content: "\e664"; +} +.pe-7s-copy-file:before { + content: "\e665"; +} +.pe-7s-config:before { + content: "\e666"; +} +.pe-7s-compass:before { + content: "\e667"; +} +.pe-7s-comment:before { + content: "\e668"; +} +.pe-7s-coffee:before { + content: "\e669"; +} +.pe-7s-cloud:before { + content: "\e66a"; +} +.pe-7s-clock:before { + content: "\e66b"; +} +.pe-7s-check:before { + content: "\e66c"; +} +.pe-7s-chat:before { + content: "\e66d"; +} +.pe-7s-cart:before { + content: "\e66e"; +} +.pe-7s-camera:before { + content: "\e66f"; +} +.pe-7s-call:before { + content: "\e670"; +} +.pe-7s-calculator:before { + content: "\e671"; +} +.pe-7s-browser:before { + content: "\e672"; +} +.pe-7s-box2:before { + content: "\e673"; +} +.pe-7s-box1:before { + content: "\e674"; +} +.pe-7s-bookmarks:before { + content: "\e675"; +} +.pe-7s-bicycle:before { + content: "\e676"; +} +.pe-7s-bell:before { + content: "\e677"; +} +.pe-7s-battery:before { + content: "\e678"; +} +.pe-7s-ball:before { + content: "\e679"; +} +.pe-7s-back:before { + content: "\e67a"; +} +.pe-7s-attention:before { + content: "\e67b"; +} +.pe-7s-anchor:before { + content: "\e67c"; +} +.pe-7s-albums:before { + content: "\e67d"; +} +.pe-7s-alarm:before { + content: "\e67e"; +} +.pe-7s-airplay:before { + content: "\e67f"; +} diff --git a/plugins/revslider/public/assets/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.eot b/plugins/revslider/public/assets/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.eot new file mode 100644 index 0000000..6f7b584 Binary files /dev/null and b/plugins/revslider/public/assets/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.eot differ diff --git a/plugins/revslider/public/assets/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.svg b/plugins/revslider/public/assets/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.svg new file mode 100644 index 0000000..0f03a5a --- /dev/null +++ b/plugins/revslider/public/assets/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.svg @@ -0,0 +1,212 @@ + + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/revslider/public/assets/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.ttf b/plugins/revslider/public/assets/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.ttf new file mode 100644 index 0000000..bc8a269 Binary files /dev/null and b/plugins/revslider/public/assets/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.ttf differ diff --git a/plugins/revslider/public/assets/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.woff b/plugins/revslider/public/assets/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.woff new file mode 100644 index 0000000..c205e6f Binary files /dev/null and b/plugins/revslider/public/assets/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.woff differ diff --git a/plugins/revslider/public/assets/fonts/pe-icon-7-stroke/fonts/index.php b/plugins/revslider/public/assets/fonts/pe-icon-7-stroke/fonts/index.php new file mode 100644 index 0000000..e69de29 diff --git a/plugins/revslider/public/assets/fonts/pe-icon-7-stroke/index.php b/plugins/revslider/public/assets/fonts/pe-icon-7-stroke/index.php new file mode 100644 index 0000000..e69de29 diff --git a/plugins/revslider/public/assets/fonts/revicons/index.php b/plugins/revslider/public/assets/fonts/revicons/index.php new file mode 100644 index 0000000..e69de29 diff --git a/plugins/revslider/public/assets/fonts/revicons/revicons.eot b/plugins/revslider/public/assets/fonts/revicons/revicons.eot new file mode 100644 index 0000000..955dc3f Binary files /dev/null and b/plugins/revslider/public/assets/fonts/revicons/revicons.eot differ diff --git a/plugins/revslider/public/assets/fonts/revicons/revicons.svg b/plugins/revslider/public/assets/fonts/revicons/revicons.svg new file mode 100644 index 0000000..7c9d595 --- /dev/null +++ b/plugins/revslider/public/assets/fonts/revicons/revicons.svg @@ -0,0 +1,54 @@ + + + +Copyright (C) 2013 by original authors @ fontello.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/revslider/public/assets/fonts/revicons/revicons.ttf b/plugins/revslider/public/assets/fonts/revicons/revicons.ttf new file mode 100644 index 0000000..4e8df98 Binary files /dev/null and b/plugins/revslider/public/assets/fonts/revicons/revicons.ttf differ diff --git a/plugins/revslider/public/assets/fonts/revicons/revicons.woff b/plugins/revslider/public/assets/fonts/revicons/revicons.woff new file mode 100644 index 0000000..6d3ea4d Binary files /dev/null and b/plugins/revslider/public/assets/fonts/revicons/revicons.woff differ diff --git a/plugins/revslider/public/assets/index.php b/plugins/revslider/public/assets/index.php new file mode 100644 index 0000000..e69de29 diff --git a/plugins/revslider/public/assets/js/extensions/revolution.extension.actions.min.js b/plugins/revslider/public/assets/js/extensions/revolution.extension.actions.min.js new file mode 100644 index 0000000..2b9a5c9 --- /dev/null +++ b/plugins/revslider/public/assets/js/extensions/revolution.extension.actions.min.js @@ -0,0 +1,8 @@ +/******************************************** + * REVOLUTION 5.0 EXTENSION - ACTIONS + * @version: 1.0.1 (07.08.2015) + * @requires jquery.themepunch.revolution.js + * @author ThemePunch +*********************************************/ + +!function($){var _R=jQuery.fn.revolution;jQuery.extend(!0,_R,{checkActions:function(e,a,t){checkActions_intern(e,a,t)}});var checkActions_intern=function(_nc,opt,as){as&&as.length&&jQuery.each(as,function(i,a){switch(a.delay=parseInt(a.delay,0)/1e3,_nc.addClass("noSwipe"),_nc.on(a.event,function(){var tnc=jQuery("#"+a.layer);if("stoplayer"==a.action||"togglelayer"==a.action||"startlayer"==a.action){if(tnc.length>0)if("startlayer"==a.action||"togglelayer"==a.action&&"in"!=tnc.data("animdirection")){tnc.data("animdirection","in");var otl=tnc.data("timeline_out"),base_offsetx="carousel"===opt.sliderType?0:opt.width/2-opt.gridwidth[opt.curWinRange]*opt.bw/2,base_offsety=0;void 0!=otl&&otl.pause(0).kill(),_R.animateSingleCaption&&_R.animateSingleCaption(tnc,opt,base_offsetx,base_offsety,0,!1,!0);var tl=tnc.data("timeline");tnc.data("triggerstate","on"),punchgs.TweenLite.delayedCall(a.delay,function(){tl.play(0)},[tl])}else("stoplayer"==a.action||"togglelayer"==a.action&&"out"!=tnc.data("animdirection"))&&(tnc.data("animdirection","out"),tnc.data("triggered",!0),tnc.data("triggerstate","off"),_R.stopVideo&&_R.stopVideo(tnc,opt),_R.endMoveCaption&&punchgs.TweenLite.delayedCall(a.delay,_R.endMoveCaption,[tnc,null,null,opt]))}else punchgs.TweenLite.delayedCall(a.delay,function(){switch(a.action){case"scrollbelow":_nc.addClass("tp-scrollbelowslider"),_nc.data("scrolloffset",a.offset),_nc.data("scrolldelay",a.delay);var off=getOffContH(opt.fullScreenOffsetContainer)||0,aof=parseInt(a.offset,0)||0;off=off-aof||0,jQuery("body,html").animate({scrollTop:opt.c.offset().top+jQuery(opt.li[0]).height()-off+"px"},{duration:400});break;case"callback":eval(a.callback);break;case"jumptoslide":switch(a.slide.toLowerCase()){case"+1":case"next":opt.sc_indicator="arrow",_R.callingNewSlide(opt,opt.c,1);break;case"previous":case"prev":case"-1":opt.sc_indicator="arrow",_R.callingNewSlide(opt,opt.c,-1);break;default:var ts=jQuery.isNumeric(a.slide)?parseInt(a.slide,0):a.slide;_R.callingNewSlide(opt,opt.c,ts)}break;case"simplelink":window.open(a.url,a.target);break;case"toggleslider":"playing"==opt.sliderstatus?opt.c.revpause():opt.c.revresume();break;case"pauseslider":opt.c.revpause();break;case"playslider":opt.c.revresume();break;case"playvideo":tnc.length>0&&_R.playVideo(tnc,opt);break;case"stopvideo":tnc.length>0&&_R.stopVideo&&_R.stopVideo(tnc,opt);break;case"togglevideo":tnc.length>0&&(_R.isVideoPlaying(tnc,opt)?_R.stopVideo&&_R.stopVideo(tnc,opt):_R.playVideo(tnc,opt));break;case"simulateclick":tnc.length>0&&tnc.click();break;case"toggleclass":tnc.length>0&&(tnc.hasClass(a.classname)?tnc.removeClass(a.classname):tnc.addClass(a.classname))}},[tnc,opt,a,_nc])}),a.action){case"togglelayer":case"startlayer":case"playlayer":case"stoplayer":var tnc=jQuery("#"+a.layer);"bytrigger"!=tnc.data("start")&&(tnc.data("triggerstate","on"),tnc.data("animdirection","in"))}})},getOffContH=function(e){if(void 0==e)return 0;if(e.split(",").length>1){oc=e.split(",");var a=0;return jQuery.each(oc,function(e,t){jQuery(t).length>0&&(a+=jQuery(t).outerHeight(!0))}),a}return jQuery(e).height()}}(jQuery); \ No newline at end of file diff --git a/plugins/revslider/public/assets/js/extensions/revolution.extension.carousel.min.js b/plugins/revslider/public/assets/js/extensions/revolution.extension.carousel.min.js new file mode 100644 index 0000000..b1a63ec --- /dev/null +++ b/plugins/revslider/public/assets/js/extensions/revolution.extension.carousel.min.js @@ -0,0 +1,8 @@ +/******************************************** + * REVOLUTION 5.0 EXTENSION - CAROUSEL + * @version: 1.0.0 (08.07.2015) + * @requires jquery.themepunch.revolution.js + * @author ThemePunch +*********************************************/ + +!function(){var i=jQuery.fn.revolution;jQuery.extend(!0,i,{prepareCarousel:function(e,o,l){l=e.carousel.lastdirection=a(l,e.carousel.lastdirection),t(e),e.carousel.slide_offset_target=r(e),void 0==o?i.carouselToEvalPosition(e,l):s(e,l,!1)},carouselToEvalPosition:function(e,t){var o=e.carousel;t=o.lastdirection=a(t,o.lastdirection);var l="center"===o.horizontal_align?(o.wrapwidth/2-o.slide_width/2-o.slide_globaloffset)/o.slide_width:(0-o.slide_globaloffset)/o.slide_width,r=i.simp(l,e.slideamount,!1),n=r-Math.floor(r),d=0,f=-1*(Math.ceil(r)-r),h=-1*(Math.floor(r)-r);d=n>=.3&&"left"===t||n>=.7&&"right"===t?f:.3>n&&"left"===t||.7>n&&"right"===t?h:d,d="off"===o.infinity?0>r?r:l>e.slideamount-1?l-(e.slideamount-1):d:d,o.slide_offset_target=d*o.slide_width,0!==Math.abs(o.slide_offset_target)?s(e,t,!0):i.organiseCarousel(e,t)},organiseCarousel:function(i,e,t,a){e=void 0===e||"down"==e||"up"==e||null===e||jQuery.isEmptyObject(e)?"left":e;for(var s=i.carousel,o=new Array,l=s.slides.length,r="right"===s.horizontal_align?r=i.width:0,n=0;l>n;n++){var d=n*s.slide_width+s.slide_offset;"on"===s.infinity&&(d=d>s.wrapwidth-s.inneroffset&&"right"==e?s.slide_offset-(s.slides.length-n)*s.slide_width:d,d=d<0-s.inneroffset-s.slide_width&&"left"==e?d+s.maxwidth:d),o[n]=d}var f=999;jQuery.each(s.slides,function(i,a){var r=o[i];"on"===s.infinity&&(r=r>s.wrapwidth-s.inneroffset&&"left"===e?o[0]-(l-i)*s.slide_width:r,r=r<0-s.inneroffset-s.slide_width?"left"==e?r+s.maxwidth:"right"===e?o[l-1]+(i+1)*s.slide_width:r:r);var n=new Object;n.left=r+s.inneroffset;var d="center"===s.horizontal_align?(Math.abs(s.wrapwidth/2)-(n.left+s.slide_width/2))/s.slide_width:(s.inneroffset-n.left)/s.slide_width,h="center"===s.horizontal_align?2:1;if((t&&Math.abs(d)d&&d>0?1-d:Math.abs(d)>s.maxVisibleItems-1?1-(Math.abs(d)-(s.maxVisibleItems-1)):1;break;case"right":n.autoAlpha=d>-1&&0>d?1-Math.abs(d):d>s.maxVisibleItems-1?1-(Math.abs(d)-(s.maxVisibleItems-1)):1}else n.autoAlpha=Math.abs(d)0)if("on"===s.vary_scale){n.scale=1-Math.abs(s.minScale/100/Math.ceil(s.maxVisibleItems/h)*d);var w=(s.slide_width-s.slide_width*n.scale)*Math.abs(d)}else{n.scale=d>=1||-1>=d?1-s.minScale/100:(100-s.minScale*Math.abs(d))/100;var w=(s.slide_width-s.slide_width*(1-s.minScale/100))*Math.abs(d)}void 0!==s.maxRotation&&0!=Math.abs(s.maxRotation)&&("on"===s.vary_rotation?(n.rotationY=Math.abs(s.maxRotation)-Math.abs((1-Math.abs(1/Math.ceil(s.maxVisibleItems/h)*d))*s.maxRotation),n.autoAlpha=Math.abs(n.rotationY)>90?0:n.autoAlpha):n.rotationY=d>=1||-1>=d?s.maxRotation:Math.abs(d)*s.maxRotation,n.rotationY=0>d?-1*n.rotationY:n.rotationY),n.x=-1*s.space*d,n.left=Math.floor(n.left),n.x=Math.floor(n.x),void 0!==n.scale?0>d?n.x-w:n.x+w:n.x,n.zIndex=Math.round(100-Math.abs(5*d)),n.transformStyle="flat",punchgs.TweenLite.set(a,n)}),a&&(i.c.find(".next-revslide").removeClass("next-revslide"),jQuery(s.slides[s.focused]).addClass("next-revslide"),i.c.trigger("revolution.nextslide.waiting"));s.wrapwidth/2-s.slide_offset,s.maxwidth+s.slide_offset-s.wrapwidth/2}});var e=function(i){var e=i.carousel;e.infbackup=e.infinity,e.maxVisiblebackup=e.maxVisibleItems,e.slide_globaloffset="none",e.slide_offset=0,e.wrap=i.c.find(".tp-carousel-wrapper"),e.slides=i.c.find(".tp-revslider-slidesli"),0!==e.maxRotation&&punchgs.TweenLite.set(e.wrap,{perspective:1200,transformStyle:"flat"}),void 0!==e.border_radius&&parseInt(e.border_radius,0)>0&&punchgs.TweenLite.set(i.c.find(".tp-revslider-slidesli"),{borderRadius:e.border_radius})},t=function(t){void 0===t.bw&&i.setSize(t);var a=t.carousel,s=i.getHorizontalOffset(t.c,"left"),o=i.getHorizontalOffset(t.c,"right");void 0===a.wrap&&e(t),a.slide_width="on"!==a.stretch?t.gridwidth[t.curWinRange]*t.bw:t.c.width(),a.maxwidth=t.slideamount*a.slide_width,a.maxVisiblebackup>a.slides.length+1&&(a.maxVisibleItems=a.slides.length+2),a.wrapwidth=a.maxVisibleItems*a.slide_width+(a.maxVisibleItems-1)*a.space,a.wrapwidth="auto"!=t.sliderLayout?a.wrapwidth>t.c.closest(".tp-simpleresponsive").width()?t.c.closest(".tp-simpleresponsive").width():a.wrapwidth:a.wrapwidth>t.ul.width()?t.ul.width():a.wrapwidth,a.infinity=a.wrapwidth>=a.maxwidth?"off":a.infbackup,a.wrapoffset="center"===a.horizontal_align?(t.c.width()-o-s-a.wrapwidth)/2:0,a.wrapoffset="auto"!=t.sliderLayout&&t.outernav?0:a.wrapoffsetMath.abs(e)?i>0?i-Math.abs(Math.floor(i/e)*e):i+Math.abs(Math.floor(i/e)*e):i},l=function(i,e,t){var t,t,a=e-i,s=e-t-i;return a=o(a,t),s=o(s,t),Math.abs(a)>Math.abs(s)?s:a},r=function(e){var t=0,a=e.carousel;if(void 0!==a.positionanim&&a.positionanim.kill(),"none"==a.slide_globaloffset)a.slide_globaloffset=t="center"===a.horizontal_align?a.wrapwidth/2-a.slide_width/2:0;else{a.slide_globaloffset=a.slide_offset,a.slide_offset=0;var s=e.c.find(".processing-revslide").index(),o="center"===a.horizontal_align?(a.wrapwidth/2-a.slide_width/2-a.slide_globaloffset)/a.slide_width:(0-a.slide_globaloffset)/a.slide_width;o=i.simp(o,e.slideamount,!1),s=s>=0?s:e.c.find(".active-revslide").index(),s=s>=0?s:0,t="off"===a.infinity?o-s:-l(o,s,e.slideamount),t*=a.slide_width}return t}}(jQuery); \ No newline at end of file diff --git a/plugins/revslider/public/assets/js/extensions/revolution.extension.kenburn.min.js b/plugins/revslider/public/assets/js/extensions/revolution.extension.kenburn.min.js new file mode 100644 index 0000000..d26ba3d --- /dev/null +++ b/plugins/revslider/public/assets/js/extensions/revolution.extension.kenburn.min.js @@ -0,0 +1,8 @@ +/******************************************** + * REVOLUTION 5.0 EXTENSION - KEN BURN + * @version: 1.0.0 (03.08.2015) + * @requires jquery.themepunch.revolution.js + * @author ThemePunch +*********************************************/ + +!function(){var t=jQuery.fn.revolution;jQuery.extend(!0,t,{stopKenBurn:function(t){void 0!=t.data("kbtl")&&t.data("kbtl").pause()},startKenBurn:function(t,e,a){var r=t.data(),n=t.find(".defaultimg"),s=n.data("lazyload")||n.data("src"),i=(r.owidth/r.oheight,"carousel"===e.sliderType?e.carousel.slide_width:e.ul.width()),o=e.ul.height();t.data("kbtl")&&t.data("kbtl").kill(),a=a||0,0==t.find(".tp-kbimg").length&&(t.append('
        '),t.data("kenburn",t.find(".tp-kbimg")));var d=function(t,e,a,r,n,s,i){var o=t*a,d=e*a,l=Math.abs(r-o),h=Math.abs(n-d),p=new Object;return p.l=(0-s)*l,p.r=p.l+o,p.t=(0-i)*h,p.b=p.t+d,p.h=s,p.v=i,p},l=function(t,e,a,r,n){var s=t.bgposition.split(" ")||"center center",i="center"==s[0]?"50%":"left"==s[0]||"left"==s[1]?"0%":"right"==s[0]||"right"==s[1]?"100%":s[0],o="center"==s[1]?"50%":"top"==s[0]||"top"==s[1]?"0%":"bottom"==s[0]||"bottom"==s[1]?"100%":s[1];i=parseInt(i,0)/100||0,o=parseInt(o,0)/100||0;var l=new Object;return l.start=d(n.start.width,n.start.height,n.start.scale,e,a,i,o),l.end=d(n.start.width,n.start.height,n.end.scale,e,a,i,o),l},h=function(t,e,a){var r=a.scalestart/100,n=a.scaleend/100,s=void 0!=a.oofsetstart?a.offsetstart.split(" ")||[0,0]:[0,0],i=void 0!=a.offsetend?a.offsetend.split(" ")||[0,0]:[0,0];a.bgposition="center center"==a.bgposition?"50% 50%":a.bgposition;{var o=new Object,d=t*r,h=(d/a.owidth*a.oheight,t*n);h/a.owidth*a.oheight}if(o.start=new Object,o.starto=new Object,o.end=new Object,o.endo=new Object,o.start.width=t,o.start.height=o.start.width/a.owidth*a.oheight,o.start.height0?0:c+s[0]0?0:u+i[0]0?0:b+s[1]0?0:f+i[1]t&&(t=0),0>i&&(i=e.slideamount),0===t&&i===e.slideamount-1&&(i=e.slideamount+1),a.data("startslide",t),a.data("endslide",i)},animateTheCaptions:function(a,t,i,n){var o="carousel"===t.sliderType?0:t.width/2-t.gridwidth[t.curWinRange]*t.bw/2,d=0,r=a.data("index");t.layers=t.layers||new Object,t.layers[r]=t.layers[r]||a.find(".tp-caption"),t.layers["static"]=t.layers["static"]||t.c.find(".tp-static-layers").find(".tp-caption");var s=new Array;if(t.conh=t.c.height(),t.conw=t.c.width(),t.ulw=t.ul.width(),t.ulh=t.ul.height(),t.debugMode){a.addClass("indebugmode"),a.find(".helpgrid").remove(),t.c.find(".hglayerinfo").remove(),a.append('
        ');var l=a.find(".helpgrid");l.append('
        Zoom:'+Math.round(100*t.bw)+"%     Device Level:"+t.curWinRange+"    Grid Preset:"+t.gridwidth[t.curWinRange]+"x"+t.gridheight[t.curWinRange]+"
        "),t.c.append('
        '),l.append('
        ')}jQuery.each(s,function(){var a=jQuery(this);punchgs.TweenLite.set(a.find(".tp-videoposter"),{autoAlpha:1}),punchgs.TweenLite.set(a.find("iframe"),{autoAlpha:0})}),jQuery.each(t.layers[r],function(a,e){s.push(e)}),jQuery.each(t.layers["static"],function(a,e){s.push(e)}),jQuery.each(s,function(a){e.animateSingleCaption(jQuery(this),t,o,d,a,i)});var p=jQuery("body").find("#"+t.c.attr("id")).find(".tp-bannertimer");p.data("opt",t),void 0!=n&&setTimeout(function(){n.resume()},30)},animateSingleCaption:function(i,o,m,f,w,y,b){var x=y,T=p(i,o,"in",!0),L=i.data("_pw")||i.closest(".tp-parallax-wrap"),W=i.data("_lw")||i.closest(".tp-loop-wrap"),C=i.data("_mw")||i.closest(".tp-mask-wrap"),j=i.data("responsive")||"on",I=i.data("responsive_offset")||"on",R=i.data("basealign")||"grid",k="grid"===R?o.width:o.ulw,_="grid"===R?o.height:o.ulh;if(i.data("_pw")||(i.data("_pw",L),i.data("_lw",W),i.data("_mw",C)),"fullscreen"==o.sliderLayout&&(f=_/2-o.gridheight[o.curWinRange]*o.bh/2),("on"==o.autoHeight||void 0!=o.minHeight&&o.minHeight>0)&&(f=o.conh/2-o.gridheight[o.curWinRange]*o.bh/2),0>f&&(f=0),o.debugMode){i.closest("li").find(".helpgrid").css({top:f+"px",left:m+"px"});var z=o.c.find(".hglayerinfo");i.on("hover, mouseenter",function(){var a="";jQuery.each(i.data(),function(e,t){"object"!=typeof t&&(a=a+''+e+":"+t+"    ")}),z.html(a)})}var S=l(i.data("visibility"),o)[o.curWinRange]||l(i.data("visibility"),o)||"on";if("off"==S||km&&(m=0),void 0!=i.data("thumbimage")&&void 0==i.data("videoposter")&&i.data("videoposter",i.data("thumbimage")),i.hasClass("tp-videolayer")&&void 0!=i.data("videoposter")&&"on"==i.data("posterOnMobile")&&_ISM){var Q=l(i.data("videowidth"),o)[o.curWinRange]||l(i.data("videowidth"),o)||"auto",M=l(i.data("videoheight"),o)[o.curWinRange]||l(i.data("videoheight"),o)||"auto";Q=parseFloat(H),M=parseFloat(B),i.append('
        '),i.css("100%"!=Q?{minWidth:Q+"px",minHeight:M+"px"}:{width:"100%",height:"100%"}),i.removeClass("tp-videolayer")}if(i.find("img").length>0){var O=i.find("img");i.data("layertype","image"),0==O.width()&&O.css({width:"auto"}),0==O.height()&&O.css({height:"auto"}),void 0==O.data("ww")&&O.width()>0&&O.data("ww",O.width()),void 0==O.data("hh")&&O.height()>0&&O.data("hh",O.height());var H=O.data("ww"),B=O.data("hh"),F="slide"==R?o.ulw:o.gridwidth[o.curWinRange],A="slide"==R?o.ulh:o.gridheight[o.curWinRange],H=l(O.data("ww"),o)[o.curWinRange]||l(O.data("ww"),o)||"auto",B=l(O.data("hh"),o)[o.curWinRange]||l(O.data("hh"),o)||"auto";H="full"===H?F:parseFloat(H),B="full"===B?A:parseFloat(B),void 0==H&&(H=0),void 0==B&&(B=0),"off"!==j?(O.width(H*o.bw),O.height(B*o.bh)):(O.width(H),O.height(B))}if("slide"===R&&(m=0,f=0),i.hasClass("tp-videolayer")||i.find("iframe").length>0||i.find("video").length>0){if(i.data("layertype","video"),e.manageVideoLayer(i,o,y,x),!y&&!x){{i.data("videotype")}e.resetVideo(i,o)}var D=i.data("aspectratio");void 0!=D&&D.split(":").length>1&&e.prepareCoveredVideo(D,o,i);var O=i.find("iframe")?i.find("iframe"):O=i.find("video"),X=i.find("iframe")?!1:!0,Y=i.hasClass("coverscreenvideo");O.css({display:"block"}),void 0==i.data("videowidth")&&(i.data("videowidth",O.width()),i.data("videoheight",O.height()));var P,H=l(i.data("videowidth"),o)[o.curWinRange]||l(i.data("videowidth"),o)||"auto",B=l(i.data("videoheight"),o)[o.curWinRange]||l(i.data("videoheight"),o)||"auto";H=parseFloat(H),B=parseFloat(B),void 0===i.data("cssobj")&&(P=c(i,0),i.data("cssobj",P));var V=g(i.data("cssobj"),o);if("auto"==V.lineHeight&&(V.lineHeight=V.fontSize+4),i.hasClass("fullscreenvideo")||Y){m=0,f=0,i.data("x",0),i.data("y",0);var N=_;"on"==o.autoHeight&&(N=o.conh),i.css({width:k,height:N})}else punchgs.TweenLite.set(i,{paddingTop:Math.round(V.paddingTop*o.bh)+"px",paddingBottom:Math.round(V.paddingBottom*o.bh)+"px",paddingLeft:Math.round(V.paddingLeft*o.bw)+"px",paddingRight:Math.round(V.paddingRight*o.bw)+"px",marginTop:V.marginTop*o.bh+"px",marginBottom:V.marginBottom*o.bh+"px",marginLeft:V.marginLeft*o.bw+"px",marginRight:V.marginRight*o.bw+"px",borderTopWidth:Math.round(V.borderTopWidth*o.bh)+"px",borderBottomWidth:Math.round(V.borderBottomWidth*o.bh)+"px",borderLeftWidth:Math.round(V.borderLeftWidth*o.bw)+"px",borderRightWidth:Math.round(V.borderRightWidth*o.bw)+"px",width:H*o.bw+"px",height:B*o.bh+"px"});(0==X&&!Y||1!=i.data("forcecover")&&!i.hasClass("fullscreenvideo")&&!Y)&&(O.width(H*o.bw),O.height(B*o.bh))}i.find(".tp-resizeme, .tp-resizeme *").each(function(){u(jQuery(this),o,"rekursive",j)}),i.hasClass("tp-resizeme")&&i.find("*").each(function(){u(jQuery(this),o,"rekursive",j)}),u(i,o,0,j);var Z=i.outerHeight(),$=i.css("backgroundColor");a(i,".frontcorner","left","borderRight","borderTopColor",Z,$),a(i,".frontcornertop","left","borderRight","borderBottomColor",Z,$),a(i,".backcorner","right","borderLeft","borderBottomColor",Z,$),a(i,".backcornertop","right","borderLeft","borderTopColor",Z,$),"on"==o.fullScreenAlignForce&&(m=0,f=0);var G=i.data("arrobj");if(void 0===G){var G=new Object;G.voa=l(i.data("voffset"),o)[o.curWinRange]||l(i.data("voffset"),o)[0],G.hoa=l(i.data("hoffset"),o)[o.curWinRange]||l(i.data("hoffset"),o)[0],G.elx=l(i.data("x"),o)[o.curWinRange]||l(i.data("x"),o)[0],G.ely=l(i.data("y"),o)[o.curWinRange]||l(i.data("y"),o)[0]}var U=0==G.voa.length?0:G.voa,q=0==G.hoa.length?0:G.hoa,E=0==G.elx.length?0:G.elx,J=0==G.ely.length?0:G.ely,K=i.outerWidth(!0),ae=i.outerHeight(!0);0==K&&0==ae&&(K=o.ulw,ae=o.ulh);var ee="off"!==I?parseInt(U,0)*o.bw:parseInt(U,0),te="off"!==I?parseInt(q,0)*o.bw:parseInt(q,0),ie="grid"===R?o.gridwidth[o.curWinRange]*o.bw:k,ne="grid"===R?o.gridheight[o.curWinRange]*o.bw:_;"on"==o.fullScreenAlignForce&&(ie=o.ulw,ne=o.ulh),E="center"===E||"middle"===E?ie/2-K/2+te:"left"===E?te:"right"===E?ie-K-te:"off"!==I?E*o.bw:E,J="center"==J||"middle"==J?ne/2-ae/2+ee:"top"==J?ee:"bottom"==J?ne-ae-ee:"off"!==I?J*o.bw:J;var oe=i.data("lasttriggerstate"),de=i.data("triggerstate"),re=i.data("start")||100,se=i.data("end"),le=b?0:"bytrigger"===re||"sliderenter"===re?0:parseFloat(re)/1e3,pe=E+m,he=J+f,ce=i.css("z-Index");b||("reset"==oe&&"bytrigger"!=re?(i.data("triggerstate","on"),i.data("animdirection","in"),de="on"):"reset"==oe&&"bytrigger"==re&&(i.data("triggerstate","off"),i.data("animdirection","out"),de="off")),punchgs.TweenLite.set(L,{zIndex:ce,top:he,left:pe,overwrite:"auto"}),0==T&&(x=!0),void 0==i.data("timeline")||x||(2!=T&&i.data("timeline").gotoAndPlay(0),x=!0),!y&&i.data("timeline_out")&&2!=T&&0!=T&&(i.data("timeline_out").kill(),i.data("outstarted",0)),b&&void 0!=i.data("timeline")&&(i.removeData("$anims"),i.data("timeline").pause(0),i.data("timeline").kill(),void 0!=i.data("newhoveranim")&&(i.data("newhoveranim").progress(0),i.data("newhoveranim").kill()),i.removeData("timeline"),punchgs.TweenLite.killTweensOf(i),i.unbind("hover"),i.removeClass("rs-hover-ready"),i.removeData("newhoveranim"));var ge=i.data("timeline")?i.data("timeline").time():0,me=void 0!==i.data("timeline")?i.data("timeline").progress():0,ue=i.data("timeline")||new punchgs.TimelineLite({smoothChildTiming:!0});if(me=jQuery.isNumeric(me)?me:0,ue.pause(),1>me&&1!=i.data("outstarted")||2==T||b){var ve=i;if(void 0!=i.data("mySplitText")&&i.data("mySplitText").revert(),i.data("splitin")&&i.data("splitin").match(/chars|words|lines/g)||i.data("splitout")&&i.data("splitout").match(/chars|words|lines/g)){var fe=i.find("a").length>0?i.find("a"):i;i.data("mySplitText",new punchgs.SplitText(fe,{type:"lines,words,chars",charsClass:"tp-splitted",wordsClass:"tp-splitted",linesClass:"tp-splitted"})),i.addClass("splitted")}void 0!==i.data("mySplitText")&&(ve=i.data("mySplitText")[i.data("splitin")]);var we=new Object;if(!i.data("$anims")||b){var ye=t(),be=t(),xe=n(),Te=void 0!==i.data("transform_hover")||void 0!==i.data("style_hover");be=r(be,i.data("transform_idle")),ye=r(be,i.data("transform_in")),Te&&(xe=r(xe,i.data("transform_hover")),xe=h(xe,i.data("style_hover")),i.data("hover",xe)),ye.elemdelay=void 0==i.data("elementdelay")?0:i.data("elementdelay"),be.anim.ease=ye.anim.ease=ye.anim.ease||punchgs.Power1.easeInOut,Te&&!i.hasClass("rs-hover-ready")&&(i.addClass("rs-hover-ready"),i.hover(function(a){var e=jQuery(a.currentTarget),t=e.data("hover"),i=e.data("timeline");i&&1==i.progress()&&(void 0===e.data("newhoveranim")||"none"===e.data("newhoveranim")?e.data("newhoveranim",punchgs.TweenLite.to(e,t.speed,t.anim)):(e.data("newhoveranim").progress(0),e.data("newhoveranim").play()))},function(a){var e=jQuery(a.currentTarget),t=e.data("timeline");t&&1==t.progress()&&void 0!=e.data("newhoveranim")&&e.data("newhoveranim").reverse()})),we=new Object,we.f=ye,we.r=be,i.data("$anims")}else we=i.data("$anims");var Le=s(i.data("mask_in")),We=new punchgs.TimelineLite;if(we.f.anim.x=we.f.anim.x*o.bw||d(we.f.anim.x,o,K,ae,he,pe,"horizontal"),we.f.anim.y=we.f.anim.y*o.bw||d(we.f.anim.y,o,K,ae,he,pe,"vertical"),2!=T||b){if(ve!=i){var Ce=we.r.anim.ease;ue.add(punchgs.TweenLite.set(i,we.r.anim)),we.r=t(),we.r.anim.ease=Ce}if(we.f.anim.visibility="hidden",We.eventCallback("onStart",function(){punchgs.TweenLite.set(i,{visibility:"visible"}),i.data("iframes")&&i.find("iframe").each(function(){punchgs.TweenLite.set(jQuery(this),{autoAlpha:1})}),punchgs.TweenLite.set(L,{visibility:"visible"});var a={};a.layer=i,a.eventtype="enterstage",a.layertype=i.data("layertype"),a.layersettings=i.data(),o.c.trigger("revolution.layeraction",a)}),We.eventCallback("onComplete",function(){var a={};a.layer=i,a.eventtype="enteredstage",a.layertype=i.data("layertype"),a.layersettings=i.data(),o.c.trigger("revolution.layeraction",a),e.animcompleted(i,o)}),ue.add(We.staggerFromTo(ve,we.f.speed,we.f.anim,we.r.anim,we.f.elemdelay),le),Le){var je=new Object;je.ease=we.r.anim.ease,je.overflow=Le.anim.overflow="hidden",je.x=je.y=0,Le.anim.x=Le.anim.x*o.bw||d(Le.anim.x,o,K,ae,he,pe,"horizontal"),Le.anim.y=Le.anim.y*o.bw||d(Le.anim.y,o,K,ae,he,pe,"vertical"),ue.add(punchgs.TweenLite.fromTo(C,we.f.speed,Le.anim,je,ye.elemdelay),le)}else ue.add(punchgs.TweenLite.set(C,{overflow:"visible"},ye.elemdelay),0)}i.data("timeline",ue),T=p(i,o,"in"),0!==me&&2!=T||"bytrigger"===se||b||"sliderleave"==se||(void 0==se||-1!=T&&2!=T||"bytriger"===se?punchgs.TweenLite.delayedCall(999999,e.endMoveCaption,[i,C,L,o]):punchgs.TweenLite.delayedCall(parseInt(i.data("end"),0)/1e3,e.endMoveCaption,[i,C,L,o])),ue=i.data("timeline"),"on"==i.data("loopanimation")&&v(W,o.bw),"sliderenter"!=re&&(-1==T||1==T||b||0==T&&1>me&&i.hasClass("rev-static-visbile"))&&(1>me&&me>0||0==me&&"bytrigger"!=re&&"keep"!=oe||0==me&&"bytrigger"!=re&&"keep"==oe&&"on"==de||"bytrigger"==re&&"keep"==oe&&"on"==de)&&ue.resume(ge)}"on"==i.data("loopanimation")&&punchgs.TweenLite.set(W,{minWidth:K,minHeight:ae}),0==i.data("slidelink")||1!=i.data("slidelink")&&!i.hasClass("slidelink")?(punchgs.TweenLite.set(C,{width:"auto",height:"auto"}),i.data("slidelink",0)):(punchgs.TweenLite.set(C,{width:"100%",height:"100%"}),i.data("slidelink",1))},endMoveCaption:function(a,e,n,o){e=e||a.data("_mw"),n=n||a.data("_pw"),a.data("outstarted",1),a.data("timeline").pause();var l=new punchgs.TimelineLite,p=new punchgs.TimelineLite,h=new punchgs.TimelineLite,c=r(t(),a.data("transform_in")),g=a.data("transform_out")?r(i(),a.data("transform_out")):r(i(),a.data("transform_in")),m=a.data("splitout")&&a.data("splitout").match(/words|chars|lines/g)?a.data("mySplitText")[a.data("splitout")]:a,u=void 0==a.data("endelementdelay")?0:a.data("endelementdelay"),v=a.innerWidth(),f=a.innerHeight(),w=n.position();a.data("transform_out")&&a.data("transform_out").match(/auto:auto/g)&&(c.speed=g.speed,c.anim.ease=g.anim.ease,g=c);var y=s(a.data("mask_out"));g.anim.x=g.anim.x*o.bw||d(g.anim.x,o,v,f,w.top,w.left,"horizontal"),g.anim.y=g.anim.y*o.bw||d(g.anim.y,o,v,f,w.top,w.left,"vertical"),p.eventCallback("onStart",function(){var e={};e.layer=a,e.eventtype="leavestage",e.layertype=a.data("layertype"),e.layersettings=a.data(),o.c.trigger("revolution.layeraction",e)}),p.eventCallback("onComplete",function(){punchgs.TweenLite.set(a,{visibility:"hidden"}),punchgs.TweenLite.set(n,{visibility:"hidden"});var e={};e.layer=a,e.eventtype="leftstage",e.layertype=a.data("layertype"),e.layersettings=a.data(),o.c.trigger("revolution.layeraction",e)}),l.add(p.staggerTo(m,g.speed,g.anim,u),0),y?(y.anim.ease=g.anim.ease,y.anim.overflow="hidden",y.anim.x=y.anim.x*o.bw||d(y.anim.x,o,v,f,w.top,w.left,"horizontal"),y.anim.y=y.anim.y*o.bw||d(y.anim.y,o,v,f,w.top,w.left,"vertical"),l.add(h.to(e,g.speed,y.anim,u),0)):l.add(h.set(e,{overflow:"visible",overwrite:"auto"},u),0),a.data("timeline_out",l)},removeTheCaptions:function(a,t){var i=a.data("index"),n=new Array;jQuery.each(t.layers[i],function(a,e){n.push(e)}),jQuery.each(t.layers["static"],function(a,e){n.push(e)}),punchgs.TweenLite.killDelayedCallsTo(e.endMoveCaption),jQuery.each(n,function(){var a=jQuery(this),i=p(a,t,"out");0!=i&&(f(a),clearTimeout(a.data("videoplaywait")),e.stopVideo&&e.stopVideo(a,t),e.endMoveCaption(a,null,null,t),t.playingvideos=[],t.lastplayedvideos=[])})}});var t=function(){var a=new Object;return a.anim=new Object,a.anim.x=0,a.anim.y=0,a.anim.z=0,a.anim.rotationX=0,a.anim.rotationY=0,a.anim.rotationZ=0,a.anim.scaleX=1,a.anim.scaleY=1,a.anim.skewX=0,a.anim.skewY=0,a.anim.opacity=1,a.anim.transformOrigin="50% 50%",a.anim.transformPerspective=600,a.anim.rotation=0,a.anim.ease=punchgs.Power3.easeOut,a.anim.force3D="auto",a.speed=.3,a.anim.autoAlpha=1,a.anim.visibility="visible",a.anim.overwrite="all",a},i=function(){var a=new Object;return a.anim=new Object,a.anim.x=0,a.anim.y=0,a.anim.z=0,a},n=function(){var a=new Object;return a.anim=new Object,a.speed=.2,a},o=function(a,e){if(jQuery.isNumeric(parseFloat(a)))return parseFloat(a);if(void 0===a||"inherit"===a)return e;if(a.split("{").length>1){var t=a.split(","),i=parseFloat(t[1].split("}")[0]);t=parseFloat(t[0].split("{")[1]),a=Math.random()*(i-t)+t}return a},d=function(a,e,t,i,n,o,d){return!jQuery.isNumeric(a)&&a.match(/%]/g)?(a=a.split("[")[1].split("]")[0],"horizontal"==d?a=(t+2)*parseInt(a,0)/100:"vertical"==d&&(a=(i+2)*parseInt(a,0)/100)):(a="layer_left"===a?0-t:"layer_right"===a?t:a,a="layer_top"===a?0-i:"layer_bottom"===a?i:a,a="left"===a||"stage_left"===a?0-t-o:"right"===a||"stage_right"===a?e.conw-o:"center"===a||"stage_center"===a?e.conw/2-t/2-o:a,a="top"===a||"stage_top"===a?0-i-n:"bottom"===a||"stage_bottom"===a?e.conh-n:"middle"===a||"stage_middle"===a?e.conh/2-i/2-n:a),a},r=function(a,e){var t=new Object;if(t=jQuery.extend(!0,{},t,a),void 0===e)return t;var i=e.split(";");return jQuery.each(i,function(a,e){var i=e.split(":"),n=i[0],d=i[1];("rotationX"==n||"rX"==n)&&(t.anim.rotationX=o(d,t.anim.rotationX)+"deg"),("rotationY"==n||"rY"==n)&&(t.anim.rotationY=o(d,t.anim.rotationY)+"deg"),("rotationZ"==n||"rZ"==n)&&(t.anim.rotation=o(d,t.anim.rotationZ)+"deg"),("scaleX"==n||"sX"==n)&&(t.anim.scaleX=o(d,t.anim.scaleX)),("scaleY"==n||"sY"==n)&&(t.anim.scaleY=o(d,t.anim.scaleY)),("opacity"==n||"o"==n)&&(t.anim.opacity=o(d,t.anim.opacity)),("skewX"==n||"skX"==n)&&(t.anim.skewX=o(d,t.anim.skewX)),("skewY"==n||"skY"==n)&&(t.anim.skewY=o(d,t.anim.skewY)),"x"==n&&(t.anim.x=o(d,t.anim.x)),"y"==n&&(t.anim.y=o(d,t.anim.y)),"z"==n&&(t.anim.z=o(d,t.anim.z)),("transformOrigin"==n||"tO"==n)&&(t.anim.transformOrigin=d.toString()),("transformPerspective"==n||"tP"==n)&&(t.anim.transformPerspective=parseInt(d,0)),("speed"==n||"s"==n)&&(t.speed=parseFloat(d)/1e3),("ease"==n||"e"==n)&&(t.anim.ease=d)}),t},s=function(a){if(void 0===a)return!1;var e=new Object;return e.anim=new Object,jQuery.each(a.split(";"),function(a,t){t=t.split(":");var i=t[0],n=t[1];"x"==i&&(e.anim.x=n),"y"==i&&(e.anim.y=n),"s"==i&&(e.speed=parseFloat(n)/1e3),("e"==i||"ease"==i)&&(e.anim.ease=n)}),e},l=function(a,e){if(void 0==a&&(a=0),!jQuery.isArray(a)&&"string"===jQuery.type(a)&&(a.split(",").length>1||a.split("[").length>1)){a=a.replace("[",""),a=a.replace("]","");var t=a.split(a.match(/'/g)?"',":",");a=new Array,jQuery.each(t,function(e,t){t=t.replace("'",""),t=t.replace("'",""),a.push(t)})}else{var i=a;jQuery.isArray(a)||(a=new Array,a.push(i))}var i=a[a.length-1];if(a.lengths||s>d?2:0:s>=o&&d>=s||o==s||d==s?(i||(a.addClass("rev-static-visbile"),a.removeClass("rev-static-hidden")),n=1):n=0:a.hasClass("rev-static-visbile")?o>s||s>d?(n=2,i||(a.removeClass("rev-static-visbile"),a.addClass("rev-static-hidden"))):n=0:n=2}return n},h=function(a,e){return void 0===e?a:(e=e.replace("c:","color:"),e=e.replace("bg:","background-color:"),e=e.replace("bw:","border-width:"),e=e.replace("bc:","border-color:"),e=e.replace("br:","borderRadius:"),e=e.replace("bs:","border-style:"),e=e.replace("td:","text-decoration:"),jQuery.each(e.split(";"),function(e,t){var i=t.split(":");i[0].length>0&&(a.anim[i[0]]=i[1])}),a)},c=function(a,e){var t,i=new Object,n=!1;return"rekursive"==e&&(t=a.closest(".tp-caption"),t&&a.css("fontSize")===t.css("fontSize")&&(n=!0)),i.basealign=a.data("basealign")||"grid",i.fontSize=n?void 0===t.data("fontsize")?parseInt(t.css("fontSize"),0)||0:t.data("fontsize"):void 0===a.data("fontsize")?parseInt(a.css("fontSize"),0)||0:a.data("fontsize"),i.fontWeight=n?void 0===t.data("fontweight")?parseInt(t.css("fontWeight"),0)||0:t.data("fontweight"):void 0===a.data("fontweight")?parseInt(a.css("fontWeight"),0)||0:a.data("fontweight"),i.whiteSpace=n?void 0===t.data("whitespace")?t.css("whitespace")||"normal":t.data("whitespace"):void 0===a.data("whitespace")?a.css("whitespace")||"normal":a.data("whitespace"),i.lineHeight=n?void 0===t.data("lineheight")?parseInt(t.css("lineHeight"),0)||0:t.data("lineheight"):void 0===a.data("lineheight")?parseInt(a.css("lineHeight"),0)||0:a.data("lineheight"),i.letterSpacing=n?void 0===t.data("letterspacing")?parseFloat(t.css("letterSpacing"),0)||0:t.data("letterspacing"):void 0===a.data("letterspacing")?parseFloat(a.css("letterSpacing"))||0:a.data("letterspacing"),i.paddingTop=void 0===a.data("paddingtop")?parseInt(a.css("paddingTop"),0)||0:a.data("paddingtop"),i.paddingBottom=void 0===a.data("paddingbottom")?parseInt(a.css("paddingBottom"),0)||0:a.data("paddingbottom"),i.paddingLeft=void 0===a.data("paddingleft")?parseInt(a.css("paddingLeft"),0)||0:a.data("paddingleft"),i.paddingRight=void 0===a.data("paddingright")?parseInt(a.css("paddingRight"),0)||0:a.data("paddingright"),i.marginTop=void 0===a.data("margintop")?parseInt(a.css("marginTop"),0)||0:a.data("margintop"),i.marginBottom=void 0===a.data("marginbottom")?parseInt(a.css("marginBottom"),0)||0:a.data("marginbottom"),i.marginLeft=void 0===a.data("marginleft")?parseInt(a.css("marginLeft"),0)||0:a.data("marginleft"),i.marginRight=void 0===a.data("marginright")?parseInt(a.css("marginRight"),0)||0:a.data("marginright"),i.borderTopWidth=void 0===a.data("bordertopwidth")?parseInt(a.css("borderTopWidth"),0)||0:a.data("bordertopwidth"),i.borderBottomWidth=void 0===a.data("borderbottomwidth")?parseInt(a.css("borderBottomWidth"),0)||0:a.data("borderbottomwidth"),i.borderLeftWidth=void 0===a.data("borderleftwidth")?parseInt(a.css("borderLeftWidth"),0)||0:a.data("borderleftwidth"),i.borderRightWidth=void 0===a.data("borderrightwidth")?parseInt(a.css("borderRightWidth"),0)||0:a.data("borderrightwidth"),"rekursive"!=e&&(i.color=void 0===a.data("color")?"nopredefinedcolor":a.data("color"),i.whiteSpace=n?void 0===t.data("whitespace")?t.css("whiteSpace")||"nowrap":t.data("whitespace"):void 0===a.data("whitespace")?a.css("whiteSpace")||"nowrap":a.data("whitespace"),i.minWidth=void 0===a.data("width")?parseInt(a.css("minWidth"),0)||0:a.data("width"),i.minHeight=void 0===a.data("height")?parseInt(a.css("minHeight"),0)||0:a.data("height"),i.maxWidth=void 0===a.data("width")?parseInt(a.css("maxWidth"),0)||"none":a.data("width"),i.maxHeight=void 0===a.data("height")?parseInt(a.css("maxHeight"),0)||"none":a.data("height"),i.wan=void 0===a.data("wan")?parseInt(a.css("-webkit-transition"),0)||"none":a.data("wan"),i.moan=void 0===a.data("moan")?parseInt(a.css("-moz-animation-transition"),0)||"none":a.data("moan"),i.man=void 0===a.data("man")?parseInt(a.css("-ms-animation-transition"),0)||"none":a.data("man"),i.ani=void 0===a.data("ani")?parseInt(a.css("transition"),0)||"none":a.data("ani")),i},g=function(a,e){var t=new Object;return jQuery.each(a,function(i,n){t[i]=l(n,e)[e.curWinRange]||a[i]}),t},m=function(a,e,t,i){return a=jQuery.isNumeric(a)?a*e+"px":a,a="full"===a?i:"auto"===a||"none"===a?t:a},u=function(a,e,t,i){var n;void 0===a.data("cssobj")?(n=c(a,t),a.data("cssobj",n)):n=a.data("cssobj");var o=g(n,e),d=e.bw,r=e.bh;if("off"===i&&(d=1,r=1),"auto"==o.lineHeight&&(o.lineHeight=o.fontSize+4),!a.hasClass("tp-splitted")){if(a.css("-webkit-transition","none"),a.css("-moz-transition","none"),a.css("-ms-transition","none"),a.css("transition","none"),punchgs.TweenLite.set(a,{fontSize:Math.round(o.fontSize*d)+"px",fontWeight:o.fontWeight,letterSpacing:Math.floor(o.letterSpacing*d)+"px",paddingTop:Math.round(o.paddingTop*r)+"px",paddingBottom:Math.round(o.paddingBottom*r)+"px",paddingLeft:Math.round(o.paddingLeft*d)+"px",paddingRight:Math.round(o.paddingRight*d)+"px",marginTop:o.marginTop*r+"px",marginBottom:o.marginBottom*r+"px",marginLeft:o.marginLeft*d+"px",marginRight:o.marginRight*d+"px",borderTopWidth:Math.round(o.borderTopWidth*r)+"px",borderBottomWidth:Math.round(o.borderBottomWidth*r)+"px",borderLeftWidth:Math.round(o.borderLeftWidth*d)+"px",borderRightWidth:Math.round(o.borderRightWidth*d)+"px",lineHeight:Math.round(o.lineHeight*r)+"px",overwrite:"auto"}),"rekursive"!=t){var s="slide"==o.basealign?e.ulw:e.gridwidth[e.curWinRange],l="slide"==o.basealign?e.ulh:e.gridheight[e.curWinRange],p=m(o.maxWidth,d,"none",s),h=m(o.maxHeight,r,"none",l),u=m(o.minWidth,d,"0px",s),v=m(o.minHeight,r,"0px",l);punchgs.TweenLite.set(a,{maxWidth:p,maxHeight:h,minWidth:u,minHeight:v,whiteSpace:o.whiteSpace,overwrite:"auto"}),"nopredefinedcolor"!=o.color&&punchgs.TweenLite.set(a,{color:o.color,overwrite:"auto"})}setTimeout(function(){a.css("-webkit-transition",a.data("wan")),a.css("-moz-transition",a.data("moan")),a.css("-ms-transition",a.data("man")),a.css("transition",a.data("ani"))},30)}},v=function(a,e){if(a.hasClass("rs-pendulum")&&void 0==a.data("loop-timeline")){a.data("loop-timeline",new punchgs.TimelineLite);var t=void 0==a.data("startdeg")?-20:a.data("startdeg"),i=void 0==a.data("enddeg")?20:a.data("enddeg"),n=void 0==a.data("speed")?2:a.data("speed"),o=void 0==a.data("origin")?"50% 50%":a.data("origin"),d=void 0==a.data("easing")?punchgs.Power2.easeInOut:a.data("ease");t*=e,i*=e,a.data("loop-timeline").append(new punchgs.TweenLite.fromTo(a,n,{force3D:"auto",rotation:t,transformOrigin:o},{rotation:i,ease:d})),a.data("loop-timeline").append(new punchgs.TweenLite.fromTo(a,n,{force3D:"auto",rotation:i,transformOrigin:o},{rotation:t,ease:d,onComplete:function(){a.data("loop-timeline").restart()}}))}if(a.hasClass("rs-rotate")&&void 0==a.data("loop-timeline")){a.data("loop-timeline",new punchgs.TimelineLite);var t=void 0==a.data("startdeg")?0:a.data("startdeg"),i=void 0==a.data("enddeg")?360:a.data("enddeg");n=void 0==a.data("speed")?2:a.data("speed"),o=void 0==a.data("origin")?"50% 50%":a.data("origin"),d=void 0==a.data("easing")?punchgs.Power2.easeInOut:a.data("easing"),t*=e,i*=e,a.data("loop-timeline").append(new punchgs.TweenLite.fromTo(a,n,{force3D:"auto",rotation:t,transformOrigin:o},{rotation:i,ease:d,onComplete:function(){a.data("loop-timeline").restart()}}))}if(a.hasClass("rs-slideloop")&&void 0==a.data("loop-timeline")){a.data("loop-timeline",new punchgs.TimelineLite);var r=void 0==a.data("xs")?0:a.data("xs"),s=void 0==a.data("ys")?0:a.data("ys"),l=void 0==a.data("xe")?0:a.data("xe"),p=void 0==a.data("ye")?0:a.data("ye"),n=void 0==a.data("speed")?2:a.data("speed"),d=void 0==a.data("easing")?punchgs.Power2.easeInOut:a.data("easing");r*=e,s*=e,l*=e,p*=e,a.data("loop-timeline").append(new punchgs.TweenLite.fromTo(a,n,{force3D:"auto",x:r,y:s},{x:l,y:p,ease:d})),a.data("loop-timeline").append(new punchgs.TweenLite.fromTo(a,n,{force3D:"auto",x:l,y:p},{x:r,y:s,onComplete:function(){a.data("loop-timeline").restart()}}))}if(a.hasClass("rs-pulse")&&void 0==a.data("loop-timeline")){a.data("loop-timeline",new punchgs.TimelineLite);var h=void 0==a.data("zoomstart")?0:a.data("zoomstart"),c=void 0==a.data("zoomend")?0:a.data("zoomend"),n=void 0==a.data("speed")?2:a.data("speed"),d=void 0==a.data("easing")?punchgs.Power2.easeInOut:a.data("easing");a.data("loop-timeline").append(new punchgs.TweenLite.fromTo(a,n,{force3D:"auto",scale:h},{scale:c,ease:d})),a.data("loop-timeline").append(new punchgs.TweenLite.fromTo(a,n,{force3D:"auto",scale:c},{scale:h,onComplete:function(){a.data("loop-timeline").restart()}}))}if(a.hasClass("rs-wave")&&void 0==a.data("loop-timeline")){a.data("loop-timeline",new punchgs.TimelineLite);var g=void 0==a.data("angle")?10:parseInt(a.data("angle"),0),m=void 0==a.data("radius")?10:parseInt(a.data("radius"),0),n=void 0==a.data("speed")?-20:a.data("speed"),o=void 0==a.data("origin")?"50% 50%":a.data("origin"),u=o.split(" "),v=new Object;u.length>=1?(v.x=u[0],v.y=u[1]):(v.x="50%",v.y="50%"),g*=e,m*=e;var f=0-a.height()/2+m*(-1+parseInt(v.y,0)/100),w=a.width()*(-.5+parseInt(v.x,0)/100),y={a:0,ang:g,element:a,unit:m,xoffset:w,yoffset:f};a.data("loop-timeline").append(new punchgs.TweenLite.fromTo(y,n,{a:360},{a:0,force3D:"auto",ease:punchgs.Linear.easeNone,onUpdate:function(){var a=y.a*(Math.PI/180);punchgs.TweenLite.to(y.element,.1,{force3D:"auto",x:y.xoffset+Math.cos(a)*y.unit,y:y.yoffset+y.unit*(1-Math.sin(a))})},onComplete:function(){a.data("loop-timeline").restart()}}))}},f=function(a){a.find(".rs-pendulum, .rs-slideloop, .rs-pulse, .rs-wave").each(function(){var a=jQuery(this);void 0!=a.data("loop-timeline")&&(a.data("loop-timeline").pause(),a.data("loop-timeline",null))})}}(jQuery); \ No newline at end of file diff --git a/plugins/revslider/public/assets/js/extensions/revolution.extension.migration.min.js b/plugins/revslider/public/assets/js/extensions/revolution.extension.migration.min.js new file mode 100644 index 0000000..5dc965d --- /dev/null +++ b/plugins/revslider/public/assets/js/extensions/revolution.extension.migration.min.js @@ -0,0 +1,9 @@ +/***************************************************************************************************** + * jquery.themepunch.revmigrate.js - jQuery Plugin for Revolution Slider Migration from 4.x to 5.0 + * @version: 1.0.0 (18.06.2015) + * @requires jQuery v1.7 or later (tested on 1.9) + * @author ThemePunch +*****************************************************************************************************/ + + +!function(){var t=jQuery.fn.revolution;jQuery.extend(!0,t,{migration:function(t,e){return e=a(e),o(t,e),e}});var a=function(t){if(t.parallaxLevels||t.parallaxBgFreeze){var a=new Object;a.type=t.parallax,a.levels=t.parallaxLevels,a.bgparallax="on"==t.parallaxBgFreeze?"off":"on",a.disable_onmobile=t.parallaxDisableOnMobile,t.parallax=a}if(void 0===t.disableProgressBar&&(t.disableProgressBar=t.hideTimerBar||"off"),(t.startwidth||t.startheight)&&(t.gridwidth=t.startwidth,t.gridheight=t.startheight),void 0===t.sliderType&&(t.sliderType="standard"),"on"===t.fullScreen&&(t.sliderLayout="fullscreen"),"on"===t.fullWidth&&(t.sliderLayout="fullwidth"),void 0===t.sliderLayout&&(t.sliderLayout="auto"),void 0===t.navigation){var o=new Object;if("solo"==t.navigationArrows||"nextto"==t.navigationArrows){var e=new Object;e.enable=!0,e.style=t.navigationStyle||"",e.hide_onmobile="on"===t.hideArrowsOnMobile?!0:!1,e.hide_onleave=t.hideThumbs>0?!0:!1,e.hide_delay=t.hideThumbs>0?t.hideThumbs:200,e.hide_delay_mobile=t.hideNavDelayOnMobile||1500,e.hide_under=0,e.tmp="",e.left={h_align:t.soloArrowLeftHalign,v_align:t.soloArrowLeftValign,h_offset:t.soloArrowLeftHOffset,v_offset:t.soloArrowLeftVOffset},e.right={h_align:t.soloArrowRightHalign,v_align:t.soloArrowRightValign,h_offset:t.soloArrowRightHOffset,v_offset:t.soloArrowRightVOffset},o.arrows=e}if("bullet"==t.navigationType){var r=new Object;r.style=t.navigationStyle||"",r.enable=!0,r.hide_onmobile="on"===t.hideArrowsOnMobile?!0:!1,r.hide_onleave=t.hideThumbs>0?!0:!1,r.hide_delay=t.hideThumbs>0?t.hideThumbs:200,r.hide_delay_mobile=t.hideNavDelayOnMobile||1500,r.hide_under=0,r.direction="horizontal",r.h_align=t.navigationHAlign||"center",r.v_align=t.navigationVAlign||"bottom",r.space=5,r.h_offset=t.navigationHOffset||0,r.v_offset=t.navigationVOffset||20,r.tmp='',o.bullets=r}if("thumb"==t.navigationType){var i=new Object;i.style=t.navigationStyle||"",i.enable=!0,i.width=t.thumbWidth||100,i.height=t.thumbHeight||50,i.min_width=t.thumbWidth||100,i.wrapper_padding=2,i.wrapper_color="#f5f5f5",i.wrapper_opacity=1,i.visibleAmount=t.thumbAmount||3,i.hide_onmobile="on"===t.hideArrowsOnMobile?!0:!1,i.hide_onleave=t.hideThumbs>0?!0:!1,i.hide_delay=t.hideThumbs>0?t.hideThumbs:200,i.hide_delay_mobile=t.hideNavDelayOnMobile||1500,i.hide_under=0,i.direction="horizontal",i.span=!1,i.position="inner",i.space=2,i.h_align=t.navigationHAlign||"center",i.v_align=t.navigationVAlign||"bottom",i.h_offset=t.navigationHOffset||0,i.v_offset=t.navigationVOffset||20,i.tmp='',o.thumbnails=i}t.navigation=o,t.navigation.keyboardNavigation=t.keyboardNavigation||"on",t.navigation.onHoverStop=t.onHoverStop||"on",t.navigation.touch={touchenabled:t.touchenabled||"on",swipe_treshold:t.swipe_treshold||75,swipe_min_touches:t.swipe_min_touches||1,drag_block_vertical:t.drag_block_vertical||!1}}return t.fallbacks={isJoomla:t.isJoomla||!1,panZoomDisableOnMobile:t.parallaxDisableOnMobile||"off",simplifyAll:t.simplifyAll||"on",nextSlideOnWindowFocus:t.nextSlideOnWindowFocus||"off",disableFocusListener:t.disableFocusListener||!0},t},o=function(t){var a=new Object,o=t.width(),e=t.height();a.skewfromleftshort="x:-50;skX:85;o:0",a.skewfromrightshort="x:50;skX:-85;o:0",a.sfl="x:-50;o:0",a.sfr="x:50;o:0",a.sft="y:-50;o:0",a.sfb="y:50;o:0",a.skewfromleft="x:top;skX:85;o:0",a.skewfromright="x:bottom;skX:-85;o:0",a.lfl="x:top;o:0",a.lfr="x:bottom;o:0",a.lft="y:left;o:0",a.lfb="y:right;o:0",a.fade="o:0";720*Math.random()-360;t.find(".tp-caption").each(function(){var t=jQuery(this),r=(2*Math.random()*o-o,2*Math.random()*e-e,3*Math.random(),720*Math.random()-360,70*Math.random()-35,70*Math.random()-35,t.attr("class"));a.randomrotate="x:{-400,400};y:{-400,400};sX:{0,2};sY:{0,2};rZ:{-180,180};rX:{-180,180};rY:{-180,180};o:0;",r.match("randomrotate")?t.data("transform_in",a.randomrotate):r.match(/\blfl\b/)?t.data("transform_in",a.lfl):r.match(/\blfr\b/)?t.data("transform_in",a.lfr):r.match(/\blft\b/)?t.data("transform_in",a.lft):r.match(/\blfb\b/)?t.data("transform_in",a.lfb):r.match(/\bsfl\b/)?t.data("transform_in",a.sfl):r.match(/\bsfr\b/)?t.data("transform_in",a.sfr):r.match(/\bsft\b/)?t.data("transform_in",a.sft):r.match(/\bsfb\b/)?t.data("transform_in",a.sfb):r.match(/\bskewfromleftshort\b/)?t.data("transform_in",a.skewfromleftshort):r.match(/\bskewfromrightshort\b/)?t.data("transform_in",a.skewfromrightshort):r.match(/\bskewfromleft\b/)?t.data("transform_in",a.skewfromleft):r.match(/\bskewfromright\b/)?t.data("transform_in",a.skewfromright):r.match(/\bfade\b/)&&t.data("transform_in",a.fade),r.match(/\brandomrotateout\b/)?t.data("transform_out",a.randomrotate):r.match(/\bltl\b/)?t.data("transform_out",a.lfl):r.match(/\bltr\b/)?t.data("transform_out",a.lfr):r.match(/\bltt\b/)?t.data("transform_out",a.lft):r.match(/\bltb\b/)?t.data("transform_out",a.lfb):r.match(/\bstl\b/)?t.data("transform_out",a.sfl):r.match(/\bstr\b/)?t.data("transform_out",a.sfr):r.match(/\bstt\b/)?t.data("transform_out",a.sft):r.match(/\bstb\b/)?t.data("transform_out",a.sfb):r.match(/\bskewtoleftshortout\b/)?t.data("transform_out",a.skewfromleftshort):r.match(/\bskewtorightshortout\b/)?t.data("transform_out",a.skewfromrightshort):r.match(/\bskewtoleftout\b/)?t.data("transform_out",a.skewfromleft):r.match(/\bskewtorightout\b/)?t.data("transform_out",a.skewfromright):r.match(/\bfadeout\b/)&&t.data("transform_out",a.fade),void 0!=t.data("customin")&&t.data("transform_in",t.data("customin")),void 0!=t.data("customout")&&t.data("transform_out",t.data("customout"))})}}(jQuery); \ No newline at end of file diff --git a/plugins/revslider/public/assets/js/extensions/revolution.extension.navigation.min.js b/plugins/revslider/public/assets/js/extensions/revolution.extension.navigation.min.js new file mode 100644 index 0000000..7833f2f --- /dev/null +++ b/plugins/revslider/public/assets/js/extensions/revolution.extension.navigation.min.js @@ -0,0 +1,9 @@ + +/******************************************** + * REVOLUTION 5.0 EXTENSION - NAVIGATION + * @version: 1.0.1 (07.08.2015) + * @requires jquery.themepunch.revolution.js + * @author ThemePunch +*********************************************/ + +!function(){var t=jQuery.fn.revolution,e=t.is_mobile();jQuery.extend(!0,t,{hideUnHideNav:function(t){var e=t.c.width(),i=t.navigation.arrows,a=t.navigation.bullets,n=t.navigation.thumbnails,s=t.navigation.tabs;h(i)&&y(t.c.find(".tparrows"),i.hide_under,e,i.hide_over),h(a)&&y(t.c.find(".tp-bullets"),a.hide_under,e,a.hide_over),h(n)&&y(t.c.parent().find(".tp-thumbs"),n.hide_under,e,n.hide_over),h(s)&&y(t.c.parent().find(".tp-tabs"),s.hide_under,e,s.hide_over),x(t)},resizeThumbsTabs:function(t){if(t.navigation&&t.navigation.tabs.enable||t.navigation&&t.navigation.thumbnails.enable){var e=(jQuery(window).width()-480)/500,i=new punchgs.TimelineLite,n=t.navigation.tabs,s=t.navigation.thumbnails;i.pause(),e=e>1?1:0>e?0:e,h(n)&&n.width>n.min_width&&a(e,i,t.c,n,t.slideamount,"tab"),h(s)&&s.width>s.min_width&&a(e,i,t.c,s,t.slideamount,"thumb"),i.play(),x(t)}return!0},manageNavigation:function(e){var a=t.getHorizontalOffset(e.c.parent(),"left"),n=t.getHorizontalOffset(e.c.parent(),"right");h(e.navigation.bullets)&&("fullscreen"!=e.sliderLayout&&"fullwidth"!=e.sliderLayout&&(e.navigation.bullets.h_offset_old=void 0===e.navigation.bullets.h_offset_old?e.navigation.bullets.h_offset:e.navigation.bullets.h_offset_old,e.navigation.bullets.h_offset="center"===e.navigation.bullets.h_align?e.navigation.bullets.h_offset_old+a/2-n/2:e.navigation.bullets.h_offset_old+a-n),m(e.c.find(".tp-bullets"),e.navigation.bullets)),h(e.navigation.thumbnails)&&m(e.c.parent().find(".tp-thumbs"),e.navigation.thumbnails),h(e.navigation.tabs)&&m(e.c.parent().find(".tp-tabs"),e.navigation.tabs),h(e.navigation.arrows)&&("fullscreen"!=e.sliderLayout&&"fullwidth"!=e.sliderLayout&&(e.navigation.arrows.left.h_offset_old=void 0===e.navigation.arrows.left.h_offset_old?e.navigation.arrows.left.h_offset:e.navigation.arrows.left.h_offset_old,e.navigation.arrows.left.h_offset="right"===e.navigation.arrows.left.h_align?e.navigation.arrows.left.h_offset_old+n:e.navigation.arrows.left.h_offset_old+a,e.navigation.arrows.right.h_offset_old=void 0===e.navigation.arrows.right.h_offset_old?e.navigation.arrows.right.h_offset:e.navigation.arrows.right.h_offset_old,e.navigation.arrows.right.h_offset="right"===e.navigation.arrows.right.h_align?e.navigation.arrows.right.h_offset_old+n:e.navigation.arrows.right.h_offset_old+a),m(e.c.find(".tp-leftarrow.tparrows"),e.navigation.arrows.left),m(e.c.find(".tp-rightarrow.tparrows"),e.navigation.arrows.right)),h(e.navigation.thumbnails)&&i(e.c.parent().find(".tp-thumbs"),e.navigation.thumbnails),h(e.navigation.tabs)&&i(e.c.parent().find(".tp-tabs"),e.navigation.tabs)},createNavigation:function(t,a){var n=t.parent(),o=a.navigation.arrows,p=a.navigation.bullets,f=a.navigation.thumbnails,v=a.navigation.tabs,m=h(o),w=h(p),x=h(f),y=h(v);s(t,a),r(t,a),m&&g(t,o,a),a.li.each(function(){var e=jQuery(this);w&&b(t,p,e,a),x&&_(t,f,e,"tp-thumb",a),y&&_(t,v,e,"tp-tab",a)}),t.bind("revolution.slide.onafterswap revolution.nextslide.waiting",function(){var e=0==t.find(".next-revslide").length?t.find(".active-revslide").data("index"):t.find(".next-revslide").data("index");t.find(".tp-bullet").each(function(){var t=jQuery(this);t.data("liref")===e?t.addClass("selected"):t.removeClass("selected")}),n.find(".tp-thumb, .tp-tab").each(function(){var t=jQuery(this);t.data("liref")===e?(t.addClass("selected"),t.hasClass("tp-tab")?i(n.find(".tp-tabs"),v):i(n.find(".tp-thumbs"),f)):t.removeClass("selected")});var s=0,r=!1;jQuery.each(a.thumbs,function(t,i){s=r===!1?t:s,r=i.id===e||t===e?!0:r});var d=s>0?s-1:a.slideamount-1,l=s+1==a.slideamount?0:s+1;if(o.enable===!0){var h=o.tmp;jQuery.each(a.thumbs[d].params,function(t,e){h=h.replace(e.from,e.to)}),o.left.j.html(h),h=o.tmp,jQuery.each(a.thumbs[l].params,function(t,e){h=h.replace(e.from,e.to)}),o.right.j.html(h),punchgs.TweenLite.set(o.left.j.find(".tp-arr-imgholder"),{backgroundImage:"url("+a.thumbs[d].src+")"}),punchgs.TweenLite.set(o.right.j.find(".tp-arr-imgholder"),{backgroundImage:"url("+a.thumbs[l].src+")"})}}),l(o),l(p),l(f),l(v),n.on("mouseenter mousemove",function(){n.hasClass("tp-mouseover")||(n.addClass("tp-mouseover"),punchgs.TweenLite.killDelayedCallsTo(c),m&&o.hide_onleave&&c(n.find(".tparrows"),o,"show"),w&&p.hide_onleave&&c(n.find(".tp-bullets"),p,"show"),x&&f.hide_onleave&&c(n.find(".tp-thumbs"),f,"show"),y&&v.hide_onleave&&c(n.find(".tp-tabs"),v,"show"),e&&(n.removeClass("tp-mouseover"),u(t,a)))}),n.on("mouseleave",function(){n.removeClass("tp-mouseover"),u(t,a)}),m&&o.hide_onleave&&c(n.find(".tparrows"),o,"hide",0),w&&p.hide_onleave&&c(n.find(".tp-bullets"),p,"hide",0),x&&f.hide_onleave&&c(n.find(".tp-thumbs"),f,"hide",0),y&&v.hide_onleave&&c(n.find(".tp-tabs"),v,"hide",0),x&&d(n.find(".tp-thumbs"),a),y&&d(n.find(".tp-tabs"),a),"carousel"===a.sliderType&&d(t,a,!0),"on"==a.navigation.touch.touchenabled&&d(t,a,"swipebased")}});var i=function(t,e){var i=(t.hasClass("tp-thumbs")?".tp-thumbs":".tp-tabs",t.hasClass("tp-thumbs")?".tp-thumb-mask":".tp-tab-mask"),a=t.hasClass("tp-thumbs")?".tp-thumbs-inner-wrapper":".tp-tabs-inner-wrapper",n=t.hasClass("tp-thumbs")?".tp-thumb":".tp-tab",s=t.find(i),r=s.find(a),o=e.direction,d="vertical"===o?s.find(n).first().outerHeight(!0)+e.space:s.find(n).first().outerWidth(!0)+e.space,l="vertical"===o?s.height():s.width(),h=parseInt(s.find(n+".selected").data("liindex"),0),p=l/d,u="vertical"===o?s.height():s.width(),c=0-h*d,g="vertical"===o?r.height():r.width(),f=0-(g-u)>c?0-(g-u):f>0?0:c,v=r.data("offset");p>2&&(f=0>=c-(v+d)?0-d>c-(v+d)?v:f+d:f,f=d>c-d+v+l&&c+(Math.round(p)-2)*df?0-(g-u):f>0?0:f,"vertical"!==o&&s.width()>=r.width()&&(f=0),"vertical"===o&&s.height()>=r.height()&&(f=0),t.hasClass("dragged")||("vertical"===o?r.data("tmmove",punchgs.TweenLite.to(r,.5,{top:f+"px",ease:punchgs.Power3.easeInOut})):r.data("tmmove",punchgs.TweenLite.to(r,.5,{left:f+"px",ease:punchgs.Power3.easeInOut})),r.data("offset",f))},a=function(t,e,i,a,n,s){var r=i.parent().find(".tp-"+s+"s"),o=r.find(".tp-"+s+"s-inner-wrapper"),d=r.find(".tp-"+s+"-mask"),l=a.width*ta?-1:1),n&&!i&&(i=1>n?-1:1),n=navigator.userAgent.match(/mozilla/i)?10*n:n,(n>300||-300>n)&&(n/=10),{spinX:e,spinY:i,pixelX:a,pixelY:n}},s=function(e,i){"on"===i.navigation.keyboardNavigation&&jQuery(document).keydown(function(a){("horizontal"==i.navigation.keyboard_direction&&39==a.keyCode||"vertical"==i.navigation.keyboard_direction&&40==a.keyCode)&&(i.sc_indicator="arrow",t.callingNewSlide(i,e,1)),("horizontal"==i.navigation.keyboard_direction&&37==a.keyCode||"vertical"==i.navigation.keyboard_direction&&38==a.keyCode)&&(i.sc_indicator="arrow",t.callingNewSlide(i,e,-1))})},r=function(e,i){if("on"===i.navigation.mouseScrollNavigation){var a=navigator.userAgent.match(/mozilla/i)?-29:-49,s=navigator.userAgent.match(/mozilla/i)?29:49;e.on("mousewheel DOMMouseScroll",function(r){var o=n(r.originalEvent),d=e.find(".tp-revslider-slidesli.active-revslide").index(),l=e.find(".tp-revslider-slidesli.processing-revslide").index(),h=-1!=d&&0==d||-1!=l&&0==l?!0:!1,p=-1!=d&&d==i.slideamount-1||1!=l&&l==i.slideamount-1?!0:!1;if(-1==l){if(o.pixelYs&&!p)return i.sc_indicator="arrow",t.callingNewSlide(i,e,1),!1}else if(!p)return!1;r.preventDefault()})}},o=function(t,i,a){return t=e?jQuery(a.target).closest("."+t).length||jQuery(a.srcElement).closest("."+t).length:jQuery(a.toElement).closest("."+t).length||jQuery(a.originalTarget).closest("."+t).length,t===!0||1===t?1:0},d=function(i,a,n){i.data("opt",a);var s=a.carousel;jQuery(".bullet, .bullets, .tp-bullets, .tparrows").addClass("noSwipe"),s.Limit="endless";var r=(e||"Firefox"===t.get_browser(),i),d="vertical"===a.navigation.thumbnails.direction||"vertical"===a.navigation.tabs.direction?"none":"vertical",l=a.navigation.touch.swipe_direction||"horizontal";d="swipebased"==n&&"vertical"==l?"none":n?"vertical":d,r.swipe({allowPageScroll:d,triggerOnTouchLeave:!0,excludeElements:jQuery.fn.swipe.defaults.excludedElements,swipeStatus:function(e,n,r,d){var h=o("rev_slider_wrapper",i,e),p=o("tp-thumbs",i,e),u=o("tp-tabs",i,e),c=jQuery(this).attr("class"),g=c.match(/tp-tabs|tp-thumb/gi)?!0:!1;if("carousel"===a.sliderType&&(("move"===n||"end"===n||"cancel"==n)&&a.dragStartedOverSlider&&!a.dragStartedOverThumbs&&!a.dragStartedOverTabs||"start"===n&&h>0&&0===p&&0===u))switch(a.dragStartedOverSlider=!0,d=r&&r.match(/left|up/g)?Math.round(-1*d):d=Math.round(1*d),n){case"start":void 0!==s.positionanim&&(s.positionanim.kill(),s.slide_globaloffset="off"===s.infinity?s.slide_offset:t.simp(s.slide_offset,s.maxwidth)),s.overpull="none",s.wrap.addClass("dragged");break;case"move":if(s.slide_offset="off"===s.infinity?s.slide_globaloffset+d:t.simp(s.slide_globaloffset+d,s.maxwidth),"off"===s.infinity){var f="center"===s.horizontal_align?(s.wrapwidth/2-s.slide_width/2-s.slide_offset)/s.slide_width:(0-s.slide_offset)/s.slide_width;"none"!==s.overpull&&0!==s.overpull||!(0>f||f>a.slideamount-1)?f>=0&&f<=a.slideamount-1&&(f>=0&&d>s.overpull||f<=a.slideamount-1&&df?s.slide_offset+(s.overpull-d)/1.1+Math.sqrt(Math.abs((s.overpull-d)/1.1)):f>a.slideamount-1?s.slide_offset+(s.overpull-d)/1.1-Math.sqrt(Math.abs((s.overpull-d)/1.1)):s.slide_offset}t.organiseCarousel(a,r,!0,!0);break;case"end":case"cancel":s.slide_globaloffset=s.slide_offset,s.wrap.removeClass("dragged"),t.carouselToEvalPosition(a,r),a.dragStartedOverSlider=!1,a.dragStartedOverThumbs=!1,a.dragStartedOverTabs=!1}else{if(("move"!==n&&"end"!==n&&"cancel"!=n||a.dragStartedOverSlider||!a.dragStartedOverThumbs&&!a.dragStartedOverTabs)&&!("start"===n&&h>0&&(p>0||u>0))){if("end"==n&&!g){if(a.sc_indicator="arrow","horizontal"==l&&"left"==r||"vertical"==l&&"up"==r)return t.callingNewSlide(a,a.c,1),!1;if("horizontal"==l&&"right"==r||"vertical"==l&&"down"==r)return t.callingNewSlide(a,a.c,-1),!1}return a.dragStartedOverSlider=!1,a.dragStartedOverThumbs=!1,a.dragStartedOverTabs=!1,!0}p>0&&(a.dragStartedOverThumbs=!0),u>0&&(a.dragStartedOverTabs=!0);var v=a.dragStartedOverThumbs?".tp-thumbs":".tp-tabs",m=a.dragStartedOverThumbs?".tp-thumb-mask":".tp-tab-mask",b=a.dragStartedOverThumbs?".tp-thumbs-inner-wrapper":".tp-tabs-inner-wrapper",w=a.dragStartedOverThumbs?".tp-thumb":".tp-tab",_=a.dragStartedOverThumbs?a.navigation.thumbnails:a.navigation.tabs;d=r&&r.match(/left|up/g)?Math.round(-1*d):d=Math.round(1*d);var x=i.parent().find(m),y=x.find(b),T=_.direction,L="vertical"===T?y.height():y.width(),C="vertical"===T?x.height():x.width(),S="vertical"===T?x.find(w).first().outerHeight(!0)+_.space:x.find(w).first().outerWidth(!0)+_.space,j=void 0===y.data("offset")?0:parseInt(y.data("offset"),0),k=0;switch(n){case"start":i.parent().find(v).addClass("dragged"),j="vertical"===T?y.position().top:y.position().left,y.data("offset",j),y.data("tmmove")&&y.data("tmmove").pause();break;case"move":if(C>=L)return!1;k=j+d,k=k>0?"horizontal"===T?k-y.width()*(k/y.width()*k/y.width()):k-y.height()*(k/y.height()*k/y.height()):k;var O="vertical"===T?0-(y.height()-x.height()):0-(y.width()-x.width());k=O>k?"horizontal"===T?k+y.width()*(k-O)/y.width()*(k-O)/y.width():k+y.height()*(k-O)/y.height()*(k-O)/y.height():k,"vertical"===T?punchgs.TweenLite.set(y,{top:k+"px"}):punchgs.TweenLite.set(y,{left:k+"px"});break;case"end":case"cancel":if(g)return k=j+d,k="vertical"===T?k<0-(y.height()-x.height())?0-(y.height()-x.height()):k:k<0-(y.width()-x.width())?0-(y.width()-x.width()):k,k=k>0?0:k,k=Math.abs(d)>S/10?0>=d?Math.floor(k/S)*S:Math.ceil(k/S)*S:0>d?Math.ceil(k/S)*S:Math.floor(k/S)*S,k="vertical"===T?k<0-(y.height()-x.height())?0-(y.height()-x.height()):k:k<0-(y.width()-x.width())?0-(y.width()-x.width()):k,k=k>0?0:k,"vertical"===T?punchgs.TweenLite.to(y,.5,{top:k+"px",ease:punchgs.Power3.easeOut}):punchgs.TweenLite.to(y,.5,{left:k+"px",ease:punchgs.Power3.easeOut}),k=k?k:"vertical"===T?y.position().top:y.position().left,y.data("offset",k),y.data("distance",d),setTimeout(function(){a.dragStartedOverSlider=!1,a.dragStartedOverThumbs=!1,a.dragStartedOverTabs=!1},100),i.parent().find(v).removeClass("dragged"),!1}}}})},l=function(t){t.hide_delay=jQuery.isNumeric(parseInt(t.hide_delay,0))?t.hide_delay/1e3:.2,t.hide_delay_mobile=jQuery.isNumeric(parseInt(t.hide_delay_mobile,0))?t.hide_delay_mobile/1e3:.2},h=function(t){return t&&t.enable},p=function(t){return t&&t.enable&&t.hide_onleave===!0&&(void 0===t.position?!0:!t.position.match(/outer/g))},u=function(t,i){var a=t.parent();p(i.navigation.arrows)&&punchgs.TweenLite.delayedCall(e?i.navigation.arrows.hide_delay_mobile:i.navigation.arrows.hide_delay,c,[a.find(".tparrows"),i.navigation.arrows,"hide"]),p(i.navigation.bullets)&&punchgs.TweenLite.delayedCall(e?i.navigation.bullets.hide_delay_mobile:i.navigation.bullets.hide_delay,c,[a.find(".tp-bullets"),i.navigation.bullets,"hide"]),p(i.navigation.thumbnails)&&punchgs.TweenLite.delayedCall(e?i.navigation.thumbnails.hide_delay_mobile:i.navigation.thumbnails.hide_delay,c,[a.find(".tp-thumbs"),i.navigation.thumbnails,"hide"]),p(i.navigation.tabs)&&punchgs.TweenLite.delayedCall(e?i.navigation.tabs.hide_delay_mobile:i.navigation.tabs.hide_delay,c,[a.find(".tp-tabs"),i.navigation.tabs,"hide"])},c=function(t,e,i,a){switch(a=void 0===a?.5:a,i){case"show":punchgs.TweenLite.to(t,a,{autoAlpha:1,ease:punchgs.Power3.easeInOut,overwrite:"auto"});break;case"hide":punchgs.TweenLite.to(t,a,{autoAlpha:0,ease:punchgs.Power3.easeInOu,overwrite:"auto"})}},g=function(t,e,i){e.style=void 0===e.style?"":e.style,e.left.style=void 0===e.left.style?"":e.left.style,e.right.style=void 0===e.right.style?"":e.right.style,0===t.find(".tp-leftarrow.tparrows").length&&t.append('
        '+e.tmp+"
        "),0===t.find(".tp-rightarrow.tparrows").length&&t.append('
        '+e.tmp+"
        ");var a=t.find(".tp-leftarrow.tparrows"),n=t.find(".tp-rightarrow.tparrows");n.click(function(){i.sc_indicator="arrow",t.revnext()}),a.click(function(){i.sc_indicator="arrow",t.revprev()}),e.right.j=t.find(".tp-rightarrow.tparrows"),e.left.j=t.find(".tp-leftarrow.tparrows"),e.padding_top=parseInt(i.carousel.padding_top||0,0),e.padding_bottom=parseInt(i.carousel.padding_bottom||0,0),m(a,e.left),m(n,e.right),("outer-left"==e.position||"outer-right"==e.position)&&(i.outernav=!0)},f=function(t,e){var i=t.outerHeight(!0),a=(t.outerWidth(!0),"top"===e.v_align?{top:"0px",y:Math.round(e.v_offset)+"px"}:"center"===e.v_align?{top:"50%",y:Math.round(0-i/2+e.v_offset)+"px"}:{top:"100%",y:Math.round(0-(i+e.v_offset))+"px"});t.hasClass("outer-bottom")||punchgs.TweenLite.set(t,a)},v=function(t,e){var i=(t.outerHeight(!0),t.outerWidth(!0)),a="left"===e.h_align?{left:"0px",x:Math.round(e.h_offset)+"px"}:"center"===e.h_align?{left:"50%",x:Math.round(0-i/2+e.h_offset)+"px"}:{left:"100%",x:Math.round(0-(i+e.h_offset))+"px"};punchgs.TweenLite.set(t,a)},m=function(t,e){var i=t.closest(".tp-simpleresponsive").length>0?t.closest(".tp-simpleresponsive"):t.closest(".tp-revslider-mainul").length>0?t.closest(".tp-revslider-mainul"):t.closest(".rev_slider_wrapper").length>0?t.closest(".rev_slider_wrapper"):t.parent().find(".tp-revslider-mainul"),a=i.width(),n=i.height();if(f(t,e),v(t,e),"outer-left"!==e.position||"fullwidth"!=e.sliderLayout&&"fullscreen"!=e.sliderLayout?"outer-right"!==e.position||"fullwidth"!=e.sliderLayout&&"fullscreen"!=e.sliderLayout||punchgs.TweenLite.set(t,{right:0-t.outerWidth()+"px",x:e.h_offset+"px"}):punchgs.TweenLite.set(t,{left:0-t.outerWidth()+"px",x:e.h_offset+"px"}),t.hasClass("tp-thumbs")||t.hasClass("tp-tabs")){var s=t.data("wr_padding"),r=t.data("maxw"),o=t.data("maxh"),d=t.find(t.hasClass("tp-thumbs")?".tp-thumb-mask":".tp-tab-mask"),l=parseInt(e.padding_top||0,0),h=parseInt(e.padding_bottom||0,0);r>a&&"outer-left"!==e.position&&"outer-right"!==e.position?(punchgs.TweenLite.set(t,{left:"0px",x:0,maxWidth:a-2*s+"px"}),punchgs.TweenLite.set(d,{maxWidth:a-2*s+"px"})):(punchgs.TweenLite.set(t,{maxWidth:r+"px"}),punchgs.TweenLite.set(d,{maxWidth:r+"px"})),o+2*s>n&&"outer-bottom"!==e.position&&"outer-top"!==e.position?(punchgs.TweenLite.set(t,{top:"0px",y:0,maxHeight:l+h+(n-2*s)+"px"}),punchgs.TweenLite.set(d,{maxHeight:l+h+(n-2*s)+"px"})):(punchgs.TweenLite.set(t,{maxHeight:o+"px"}),punchgs.TweenLite.set(d,{maxHeight:o+"px"})),"outer-left"!==e.position&&"outer-right"!==e.position&&(l=0,h=0),e.span===!0&&"vertical"===e.direction?(punchgs.TweenLite.set(t,{maxHeight:l+h+(n-2*s)+"px",height:l+h+(n-2*s)+"px",top:0-l,y:0}),f(d,e)):e.span===!0&&"horizontal"===e.direction&&(punchgs.TweenLite.set(t,{maxWidth:"100%",width:a-2*s+"px",left:0,x:0}),v(d,e))}},b=function(t,e,i,a){0===t.find(".tp-bullets").length&&(e.style=void 0===e.style?"":e.style,t.append('
        '));var n=t.find(".tp-bullets"),s=i.data("index"),r=e.tmp;jQuery.each(a.thumbs[i.index()].params,function(t,e){r=r.replace(e.from,e.to)}),n.append('
        '+r+"
        ");var o=t.find(".justaddedbullet"),d=t.find(".tp-bullet").length,l=o.outerWidth()+parseInt(void 0===e.space?0:e.space,0),h=o.outerHeight()+parseInt(void 0===e.space?0:e.space,0);"vertical"===e.direction?(o.css({top:(d-1)*h+"px",left:"0px"}),n.css({height:(d-1)*h+o.outerHeight(),width:o.outerWidth()})):(o.css({left:(d-1)*l+"px",top:"0px"}),n.css({width:(d-1)*l+o.outerWidth(),height:o.outerHeight()})),o.find(".tp-bullet-image").css({backgroundImage:"url("+a.thumbs[i.index()].src+")"}),o.data("liref",s),o.click(function(){a.sc_indicator="bullet",t.revcallslidewithid(s),t.find(".tp-bullet").removeClass("selected"),jQuery(this).addClass("selected")}),o.removeClass("justaddedbullet"),e.padding_top=parseInt(a.carousel.padding_top||0,0),e.padding_bottom=parseInt(a.carousel.padding_bottom||0,0),("outer-left"==e.position||"outer-right"==e.position)&&(a.outernav=!0),m(n,e)},w=function(t,e){e=parseFloat(e),t=t.replace("#","");var i=parseInt(t.substring(0,2),16),a=parseInt(t.substring(2,4),16),n=parseInt(t.substring(4,6),16),s="rgba("+i+","+a+","+n+","+e+")";return s},_=function(t,e,i,a,n){var s="tp-thumb"===a?".tp-thumbs":".tp-tabs",r="tp-thumb"===a?".tp-thumb-mask":".tp-tab-mask",o="tp-thumb"===a?".tp-thumbs-inner-wrapper":".tp-tabs-inner-wrapper",d="tp-thumb"===a?".tp-thumb":".tp-tab",l="tp-thumb"===a?".tp-thumb-image":".tp-tab-image";if(e.visibleAmount=e.visibleAmount>n.slideamount?n.slideamount:e.visibleAmount,e.sliderLayout=n.sliderLayout,0===t.parent().find(s).length){e.style=void 0===e.style?"":e.style;var h=e.span===!0?"tp-span-wrapper":"",p='
        ';"outer-top"===e.position?t.parent().prepend(p):"outer-bottom"===e.position?t.after(p):t.append(p),e.padding_top=parseInt(n.carousel.padding_top||0,0),e.padding_bottom=parseInt(n.carousel.padding_bottom||0,0),("outer-left"==e.position||"outer-right"==e.position)&&(n.outernav=!0)}var u=i.data("index"),c=t.parent().find(s),g=c.find(r),f=g.find(o),v="horizontal"===e.direction?e.width*e.visibleAmount+e.space*(e.visibleAmount-1):e.width,b="horizontal"===e.direction?e.height:e.height*e.visibleAmount+e.space*(e.visibleAmount-1),_=e.tmp;jQuery.each(n.thumbs[i.index()].params,function(t,e){_=_.replace(e.from,e.to)}),f.append('
        '+_+"
        ");var x=c.find(".justaddedthumb"),y=c.find(d).length,T=x.outerWidth()+parseInt(void 0===e.space?0:e.space,0),L=x.outerHeight()+parseInt(void 0===e.space?0:e.space,0);x.find(l).css({backgroundImage:"url("+n.thumbs[i.index()].src+")"}),"vertical"===e.direction?(x.css({top:(y-1)*L+"px",left:"0px"}),f.css({height:(y-1)*L+x.outerHeight(),width:x.outerWidth()})):(x.css({left:(y-1)*T+"px",top:"0px"}),f.css({width:(y-1)*T+x.outerWidth(),height:x.outerHeight()})),c.data("maxw",v),c.data("maxh",b),c.data("wr_padding",e.wrapper_padding);var C="outer-top"===e.position||"outer-bottom"===e.position?"relative":"absolute",S="outer-top"!==e.position&&"outer-bottom"!==e.position||"center"!==e.h_align?"0":"auto";g.css({maxWidth:v+"px",maxHeight:b+"px",overflow:"hidden",position:"relative"}),c.css({maxWidth:v+"px",margin:S,maxHeight:b+"px",overflow:"visible",position:C,background:w(e.wrapper_color,e.wrapper_opacity),padding:e.wrapper_padding+"px",boxSizing:"contet-box"}),x.click(function(){n.sc_indicator="bullet";var e=t.parent().find(o).data("distance");e=void 0===e?0:e,Math.abs(e)<10&&(t.revcallslidewithid(u),t.parent().find(s).removeClass("selected"),jQuery(this).addClass("selected"))}),x.removeClass("justaddedthumb"),m(c,e)},x=function(t){var e=t.c.parent().find(".outer-top"),i=t.c.parent().find(".outer-bottom");t.top_outer=e.hasClass("tp-forcenotvisible")?0:e.outerHeight()||0,t.bottom_outer=i.hasClass("tp-forcenotvisible")?0:i.outerHeight()||0},y=function(t,e,i,a){e>i||i>a?t.addClass("tp-forcenotvisible"):t.removeClass("tp-forcenotvisible")}}(jQuery); \ No newline at end of file diff --git a/plugins/revslider/public/assets/js/extensions/revolution.extension.parallax.min.js b/plugins/revslider/public/assets/js/extensions/revolution.extension.parallax.min.js new file mode 100644 index 0000000..3dbf044 --- /dev/null +++ b/plugins/revslider/public/assets/js/extensions/revolution.extension.parallax.min.js @@ -0,0 +1,8 @@ +/******************************************** + * REVOLUTION 5.0 EXTENSION - PARALLAX + * @version: 1.0.0 (08.07.2015) + * @requires jquery.themepunch.revolution.js + * @author ThemePunch +*********************************************/ + +!function(){var e=jQuery.fn.revolution,a=e.is_mobile();jQuery.extend(!0,e,{checkForParallax:function(t,o){var r=o.parallax;return a&&"on"==r.disable_onmobile?!1:(o.li.each(function(){for(var e=jQuery(this),a=1;10>=a;a++)e.find(".rs-parallaxlevel-"+a).each(function(){var e=jQuery(this),t=e.closest(".tp-parallax-wrap");t.data("parallaxlevel",r.levels[a-1]),t.addClass("tp-parallax-container")})}),("mouse"==r.type||"scroll+mouse"==r.type||"mouse+scroll"==r.type)&&(t.mouseenter(function(e){var a=t.find(".active-revslide"),o=t.offset().top,r=t.offset().left,i=e.pageX-r,n=e.pageY-o;a.data("enterx",i),a.data("entery",n)}),t.on("mousemove.hoverdir, mouseleave.hoverdir",function(e){var a=t.find(".active-revslide");switch(e.type){case"mousemove":if("enterpoint"==r.origo){var i=t.offset().top,n=t.offset().left;void 0==a.data("enterx")&&a.data("enterx",e.pageX-n),void 0==a.data("entery")&&a.data("entery",e.pageY-i);var l=a.data("enterx"),s=a.data("entery"),c=l-(e.pageX-n),p=s-(e.pageY-i),u=r.speed/1e3||.4}else var i=t.offset().top,n=t.offset().left,c=o.conw/2-(e.pageX-n),p=o.conh/2-(e.pageY-i),u=r.speed/1e3||3;a.find(".tp-parallax-container").each(function(){var e=jQuery(this),a=parseInt(e.data("parallaxlevel"),0)/100,t=c*a,o=p*a;"scroll+mouse"==r.type||"mouse+scroll"==r.type?punchgs.TweenLite.to(e,u,{force3D:"auto",x:t,ease:punchgs.Power3.easeOut,overwrite:"all"}):punchgs.TweenLite.to(e,u,{force3D:"auto",x:t,y:o,ease:punchgs.Power3.easeOut,overwrite:"all"})});break;case"mouseleave":a.find(".tp-parallax-container").each(function(){var e=jQuery(this);"scroll+mouse"==r.type||"mouse+scroll"==r.type?punchgs.TweenLite.to(e,1.5,{force3D:"auto",x:0,ease:punchgs.Power3.easeOut}):punchgs.TweenLite.to(e,1.5,{force3D:"auto",x:0,y:0,ease:punchgs.Power3.easeOut})})}}),a&&(window.ondeviceorientation=function(e){var a=Math.round(e.beta||0),o=Math.round(e.gamma||0),r=t.find(".active-revslide");if(jQuery(window).width()>jQuery(window).height()){var i=o;o=a,a=i}var n=360/t.width()*o,l=180/t.height()*a;r.find(".tp-parallax-container").each(function(){var e=jQuery(this),a=parseInt(e.data("parallaxlevel"),0)/100,t=n*a,o=l*a;punchgs.TweenLite.to(e,.2,{force3D:"auto",x:t,y:o,ease:punchgs.Power3.easeOut})})})),void e.scrollTicker(o,t))},scrollTicker:function(a,t){1!=a.scrollTicker&&(a.scrollTicker=!0,punchgs.TweenLite.ticker.fps(150),punchgs.TweenLite.ticker.addEventListener("tick",function(){e.scrollHandling(a)},t,!0,1))},scrollHandling:function(t){t.lastwindowheight=t.lastwindowheight||jQuery(window).height();var o=t.c.offset().top,r=jQuery(window).scrollTop(),i=new Object,n=t.viewPort,l=t.parallax;if(t.lastscrolltop==r)return!1;t.lastscrolltop=r,i.top=o-r,i.h=0==t.conh?t.c.height():t.conh,i.bottom=o-r+i.h;var s=i.top<0?i.top/i.h:i.bottom>t.lastwindowheight?(i.bottom-t.lastwindowheight)/i.h:0,c=1-Math.abs(s);if(c=0>c?0:c,n.enable&&(1-n.visible_area<=c?t.inviewport||(t.inviewport=!0,e.enterInViewPort(t)):t.inviewport&&(t.inviewport=!1,e.leaveViewPort(t))),a&&"on"==t.parallax.disable_onmobile)return!1;var p=new punchgs.TimelineLite;p.pause(),("scroll"==l.type||"scroll+mouse"==l.type||"mouse+scroll"==l.type)&&t.c.find(".tp-parallax-container").each(function(){var e=jQuery(this),a=parseInt(e.data("parallaxlevel"),0)/100,o=s*-(a*t.conh);e.data("parallaxoffset",o),p.add(punchgs.TweenLite.set(e,{force3D:"auto",y:o}),0)}),t.c.find(".tp-revslider-slidesli .slotholder, .tp-revslider-slidesli .rs-background-video-layer").each(function(){var e=jQuery(this),a=e.data("bgparallax")||t.parallax.bgparallax;if(a="on"==a?1:a,void 0!==a||"off"!==a){var o=t.parallax.levels[parseInt(a,0)-1]/100,r=s*-(o*t.conh);jQuery.isNumeric(r)&&p.add(punchgs.TweenLite.set(e,{position:"absolute",top:"0px",left:"0px",backfaceVisibility:"hidden",force3D:"true",y:r+"px",overwrite:"auto"}),0)}}),p.play(0)}})}(jQuery); \ No newline at end of file diff --git a/plugins/revslider/public/assets/js/extensions/revolution.extension.slideanims.min.js b/plugins/revslider/public/assets/js/extensions/revolution.extension.slideanims.min.js new file mode 100644 index 0000000..743dda0 --- /dev/null +++ b/plugins/revslider/public/assets/js/extensions/revolution.extension.slideanims.min.js @@ -0,0 +1,8 @@ +/************************************************ + * REVOLUTION 5.0 EXTENSION - SLIDE ANIMATIONS + * @version: 1.0.0 (08.07.2015) + * @requires jquery.themepunch.revolution.js + * @author ThemePunch +************************************************/ + +!function(){var t=jQuery.fn.revolution;jQuery.extend(!0,t,{animateSlide:function(t,e,o,a,n,r,s,l,d){return i(t,e,o,a,n,r,s,l,d)}});var e=function(e,o,a,i){var n=e,r=n.find(".defaultimg"),s=n.data("zoomstart"),l=n.data("rotationstart");void 0!=r.data("currotate")&&(l=r.data("currotate")),void 0!=r.data("curscale")&&"box"==i?s=100*r.data("curscale"):void 0!=r.data("curscale")&&(s=r.data("curscale")),t.slotSize(r,o);var d=r.attr("src"),h=r.css("backgroundColor"),c=o.width,f=o.height,p=r.data("fxof"),u=0;"on"==o.autoHeight&&(f=o.c.height()),void 0==p&&(p=0);var g=0,v=r.data("bgfit"),w=r.data("bgrepeat"),m=r.data("bgposition");switch(void 0==v&&(v="cover"),void 0==w&&(w="no-repeat"),void 0==m&&(m="center center"),i){case"box":var y=0,x=0,T=0;if(y=o.sloth>o.slotw?o.sloth:o.slotw,!a)var g=0-y;o.slotw=y,o.sloth=y;for(var x=0,T=0,z=0;z
        '),T+=y,void 0!=s&&void 0!=l&&punchgs.TweenLite.set(n.find(".slot").last(),{rotationZ:l});x+=y}break;case"vertical":case"horizontal":if("horizontal"==i){if(!a)var g=0-o.slotw;for(var b=0;b
        '),void 0!=s&&void 0!=l&&punchgs.TweenLite.set(n.find(".slot").last(),{rotationZ:l})}else{if(!a)var g=0-o.sloth;for(var b=0;b
        '),void 0!=s&&void 0!=l&&punchgs.TweenLite.set(n.find(".slot").last(),{rotationZ:l})}}},o=function(t,e,o,a,i){function n(){jQuery.each(x,function(t,e){(e[0]==o||e[8]==o)&&(v=e[1],w=e[2],m=y),y+=1})}var r=punchgs.Power1.easeIn,s=punchgs.Power1.easeOut,l=punchgs.Power1.easeInOut,d=punchgs.Power2.easeIn,h=punchgs.Power2.easeOut,c=punchgs.Power2.easeInOut,f=(punchgs.Power3.easeIn,punchgs.Power3.easeOut),p=punchgs.Power3.easeInOut,u=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],g=[16,17,18,19,20,21,22,23,24,25,27],v=0,w=1,m=0,y=0,x=(new Array,[["boxslide",0,1,10,0,"box",!1,null,0,s,s,500,6],["boxfade",1,0,10,0,"box",!1,null,1,l,l,700,5],["slotslide-horizontal",2,0,0,200,"horizontal",!0,!1,2,c,c,700,3],["slotslide-vertical",3,0,0,200,"vertical",!0,!1,3,c,c,700,3],["curtain-1",4,3,0,0,"horizontal",!0,!0,4,s,s,300,5],["curtain-2",5,3,0,0,"horizontal",!0,!0,5,s,s,300,5],["curtain-3",6,3,25,0,"horizontal",!0,!0,6,s,s,300,5],["slotzoom-horizontal",7,0,0,400,"horizontal",!0,!0,7,s,s,300,7],["slotzoom-vertical",8,0,0,0,"vertical",!0,!0,8,h,h,500,8],["slotfade-horizontal",9,0,0,500,"horizontal",!0,null,9,h,h,500,25],["slotfade-vertical",10,0,0,500,"vertical",!0,null,10,h,h,500,25],["fade",11,0,1,300,"horizontal",!0,null,11,c,c,1e3,1],["slideleft",12,0,1,0,"horizontal",!0,!0,12,p,p,1e3,1],["slideup",13,0,1,0,"horizontal",!0,!0,13,p,p,1e3,1],["slidedown",14,0,1,0,"horizontal",!0,!0,14,p,p,1e3,1],["slideright",15,0,1,0,"horizontal",!0,!0,15,p,p,1e3,1],["slideoverleft",12,7,1,0,"horizontal",!0,!0,12,p,p,1e3,1],["slideoverup",13,7,1,0,"horizontal",!0,!0,13,p,p,1e3,1],["slideoverdown",14,7,1,0,"horizontal",!0,!0,14,p,p,1e3,1],["slideoverright",15,7,1,0,"horizontal",!0,!0,15,p,p,1e3,1],["papercut",16,0,0,600,"",null,null,16,p,p,1e3,2],["3dcurtain-horizontal",17,0,20,100,"vertical",!1,!0,17,l,l,500,7],["3dcurtain-vertical",18,0,10,100,"horizontal",!1,!0,18,l,l,500,5],["cubic",19,0,20,600,"horizontal",!1,!0,19,p,p,500,1],["cube",19,0,20,600,"horizontal",!1,!0,20,p,p,500,1],["flyin",20,0,4,600,"vertical",!1,!0,21,f,p,500,1],["turnoff",21,0,1,500,"horizontal",!1,!0,22,p,p,500,1],["incube",22,0,20,200,"horizontal",!1,!0,23,c,c,500,1],["cubic-horizontal",23,0,20,500,"vertical",!1,!0,24,h,h,500,1],["cube-horizontal",23,0,20,500,"vertical",!1,!0,25,h,h,500,1],["incube-horizontal",24,0,20,500,"vertical",!1,!0,26,c,c,500,1],["turnoff-vertical",25,0,1,200,"horizontal",!1,!0,27,c,c,500,1],["fadefromright",12,1,1,0,"horizontal",!0,!0,28,c,c,1e3,1],["fadefromleft",15,1,1,0,"horizontal",!0,!0,29,c,c,1e3,1],["fadefromtop",14,1,1,0,"horizontal",!0,!0,30,c,c,1e3,1],["fadefrombottom",13,1,1,0,"horizontal",!0,!0,31,c,c,1e3,1],["fadetoleftfadefromright",12,2,1,0,"horizontal",!0,!0,32,c,c,1e3,1],["fadetorightfadefromleft",15,2,1,0,"horizontal",!0,!0,33,c,c,1e3,1],["fadetobottomfadefromtop",14,2,1,0,"horizontal",!0,!0,34,c,c,1e3,1],["fadetotopfadefrombottom",13,2,1,0,"horizontal",!0,!0,35,c,c,1e3,1],["parallaxtoright",12,3,1,0,"horizontal",!0,!0,36,c,d,1500,1],["parallaxtoleft",15,3,1,0,"horizontal",!0,!0,37,c,d,1500,1],["parallaxtotop",14,3,1,0,"horizontal",!0,!0,38,c,r,1500,1],["parallaxtobottom",13,3,1,0,"horizontal",!0,!0,39,c,r,1500,1],["scaledownfromright",12,4,1,0,"horizontal",!0,!0,40,c,d,1e3,1],["scaledownfromleft",15,4,1,0,"horizontal",!0,!0,41,c,d,1e3,1],["scaledownfromtop",14,4,1,0,"horizontal",!0,!0,42,c,d,1e3,1],["scaledownfrombottom",13,4,1,0,"horizontal",!0,!0,43,c,d,1e3,1],["zoomout",13,5,1,0,"horizontal",!0,!0,44,c,d,1e3,1],["zoomin",13,6,1,0,"horizontal",!0,!0,45,c,d,1e3,1],["notransition",26,0,1,0,"horizontal",!0,null,46,c,d,1e3,1]]);"slidehorizontal"==o&&(o="slideleft",1==i&&(o="slideright")),"slidevertical"==o&&(o="slideup",1==i&&(o="slidedown")),"slideoverhorizontal"==o&&(o="slideoverleft",1==i&&(o="slideoverright")),"slideoververtical"==o&&(o="slideoverup",1==i&&(o="slideoverdown")),"parallaxhorizontal"==o&&(o="parallaxtoleft",1==i&&(o="parallaxtoright")),"parallaxvertical"==o&&(o="parallaxtotop",1==i&&(o="parallaxtobottom")),"random"==o&&(o=Math.round(Math.random()*x.length-1),o>x.length-1&&(o=x.length-1)),"random-static"==o&&(o=Math.round(Math.random()*u.length-1),o>u.length-1&&(o=u.length-1),o=u[o]),"random-premium"==o&&(o=Math.round(Math.random()*g.length-1),o>g.length-1&&(o=g.length-1),o=g[o]);var T=[12,13,14,15,16,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45];if(1==e.isJoomla&&void 0!=window.MooTools&&-1!=T.indexOf(o)){var z=Math.round(Math.random()*(g.length-2))+1;z>g.length-1&&(z=g.length-1),0==z&&(z=1),o=g[z]}n(),v>26&&(v=26),0>v&&(v=0);var b=new Object;return b.nexttrans=v,b.STA=x[m],b.specials=w,b},a=function(t,e){return void 0==e||jQuery.isNumeric(t)?t:void 0==t?t:t.split(",")[e]},i=function(t,i,n,r,s,l,d,h,c){var f=l.index(),p=s.index(),u=f>p?1:0;"arrow"==r.sc_indicator&&(0==f&&p==r.slideamount-1&&(u=1),f==r.slideamount-1&&0==p&&(u=0));var g=o(n,r,i,d,u),v=g.STA,w=g.specials,t=g.nexttrans;"on"==d.data("kenburns")&&(t=11);var m=s.data("nexttransid")||0,y=a(s.data("masterspeed"),m);y="default"===y?v[11]:"random"===y?Math.round(1e3*Math.random()+300):void 0!=y?parseInt(y,0):v[11],y=y>r.delay?r.delay:y,y+=v[4],r.slots=a(s.data("slotamount"),m),r.slots=void 0==r.slots||"default"==r.slots?v[12]:"random"==r.slots?Math.round(12*Math.random()+4):v[12],r.slots=r.slots<1?"boxslide"==i?Math.round(6*Math.random()+3):"flyin"==i?Math.round(4*Math.random()+1):r.slots:r.slots,r.slots=(4==t||5==t||6==t)&&r.slots<3?3:r.slots,r.slots=0!=v[3]?Math.min(r.slots,v[3]):r.slots,r.slots=9==t?r.width/20:10==t?r.height/20:r.slots,r.rotate=a(s.data("rotate"),m),r.rotate=void 0==r.rotate||"default"==r.rotate?0:999==r.rotate||"random"==r.rotate?Math.round(360*Math.random()):r.rotate,r.rotate=!jQuery.support.transition||r.ie||r.ie9?0:r.rotate,11!=t&&(null!=v[7]&&e(h,r,v[7],v[5]),null!=v[6]&&e(d,r,v[6],v[5])),c.add(punchgs.TweenLite.set(d,{autoAlpha:1}),0),c.add(punchgs.TweenLite.set(h,{autoAlpha:1}),0);var x=a(s.data("easein"),m),T=a(s.data("easeout"),m);if(x="default"===x?v[9]||punchgs.Power2.easeInOut:x||v[9]||punchgs.Power2.easeInOut,T="default"===T?v[10]||punchgs.Power2.easeInOut:T||v[10]||punchgs.Power2.easeInOut,0==t){var z=Math.ceil(r.height/r.sloth),b=0;d.find(".slotslide").each(function(t){var e=jQuery(this);b+=1,b==z&&(b=0),c.add(punchgs.TweenLite.from(e,y/600,{opacity:0,top:0-r.sloth,left:0-r.slotw,rotation:r.rotate,force3D:"auto",ease:x}),(15*t+30*b)/1500)})}if(1==t){var L,D=0;d.find(".slotslide").each(function(t){var e=jQuery(this),o=Math.random()*y+300,a=500*Math.random()+200;o+a>L&&(L=a+a,D=t),c.add(punchgs.TweenLite.from(e,o/1e3,{autoAlpha:0,force3D:"auto",rotation:r.rotate,ease:x}),a/1e3)})}if(2==t){var M=new punchgs.TimelineLite;h.find(".slotslide").each(function(){var t=jQuery(this);M.add(punchgs.TweenLite.to(t,y/1e3,{left:r.slotw,ease:x,force3D:"auto",rotation:0-r.rotate}),0),c.add(M,0)}),d.find(".slotslide").each(function(){var t=jQuery(this);M.add(punchgs.TweenLite.from(t,y/1e3,{left:0-r.slotw,ease:x,force3D:"auto",rotation:r.rotate}),0),c.add(M,0)})}if(3==t){var M=new punchgs.TimelineLite;h.find(".slotslide").each(function(){var t=jQuery(this);M.add(punchgs.TweenLite.to(t,y/1e3,{top:r.sloth,ease:x,rotation:r.rotate,force3D:"auto",transformPerspective:600}),0),c.add(M,0)}),d.find(".slotslide").each(function(){var t=jQuery(this);M.add(punchgs.TweenLite.from(t,y/1e3,{top:0-r.sloth,rotation:r.rotate,ease:T,force3D:"auto",transformPerspective:600}),0),c.add(M,0)})}if(4==t||5==t){setTimeout(function(){h.find(".defaultimg").css({opacity:0})},100);var j=y/1e3,M=new punchgs.TimelineLite;h.find(".slotslide").each(function(e){var o=jQuery(this),a=e*j/r.slots;5==t&&(a=(r.slots-e-1)*j/r.slots/1.5),M.add(punchgs.TweenLite.to(o,3*j,{transformPerspective:600,force3D:"auto",top:0+r.height,opacity:.5,rotation:r.rotate,ease:x,delay:a}),0),c.add(M,0)}),d.find(".slotslide").each(function(e){var o=jQuery(this),a=e*j/r.slots;5==t&&(a=(r.slots-e-1)*j/r.slots/1.5),M.add(punchgs.TweenLite.from(o,3*j,{top:0-r.height,opacity:.5,rotation:r.rotate,force3D:"auto",ease:punchgs.eo,delay:a}),0),c.add(M,0)})}if(6==t){r.slots<2&&(r.slots=2),r.slots%2&&(r.slots=r.slots+1);var M=new punchgs.TimelineLite;setTimeout(function(){h.find(".defaultimg").css({opacity:0})},100),h.find(".slotslide").each(function(t){var e=jQuery(this);if(t+1r.delay&&(y=r.delay);var M=new punchgs.TimelineLite;setTimeout(function(){h.find(".defaultimg").css({opacity:0})},100),h.find(".slotslide").each(function(){var t=jQuery(this).find("div");M.add(punchgs.TweenLite.to(t,y/1e3,{left:0-r.slotw/2+"px",top:0-r.height/2+"px",width:2*r.slotw+"px",height:2*r.height+"px",opacity:0,rotation:r.rotate,force3D:"auto",ease:x}),0),c.add(M,0)}),d.find(".slotslide").each(function(t){var e=jQuery(this).find("div");M.add(punchgs.TweenLite.fromTo(e,y/1e3,{left:0,top:0,opacity:0,transformPerspective:600},{left:0-t*r.slotw+"px",ease:T,force3D:"auto",top:"0px",width:r.width,height:r.height,opacity:1,rotation:0,delay:.1}),0),c.add(M,0)})}if(8==t){y=3*y,y>r.delay&&(y=r.delay);var M=new punchgs.TimelineLite;h.find(".slotslide").each(function(){var t=jQuery(this).find("div");M.add(punchgs.TweenLite.to(t,y/1e3,{left:0-r.width/2+"px",top:0-r.sloth/2+"px",width:2*r.width+"px",height:2*r.sloth+"px",force3D:"auto",ease:x,opacity:0,rotation:r.rotate}),0),c.add(M,0)}),d.find(".slotslide").each(function(t){var e=jQuery(this).find("div");M.add(punchgs.TweenLite.fromTo(e,y/1e3,{left:0,top:0,opacity:0,force3D:"auto"},{left:"0px",top:0-t*r.sloth+"px",width:d.find(".defaultimg").data("neww")+"px",height:d.find(".defaultimg").data("newh")+"px",opacity:1,ease:T,rotation:0}),0),c.add(M,0)})}if(9==t||10==t){var P=0;d.find(".slotslide").each(function(t){var e=jQuery(this);P++,c.add(punchgs.TweenLite.fromTo(e,y/1e3,{autoAlpha:0,force3D:"auto",transformPerspective:600},{autoAlpha:1,ease:x,delay:5*t/1e3}),0)})}if(11==t||26==t){var P=0;26==t&&(y=0),c.add(punchgs.TweenLite.fromTo(d,y/1e3,{autoAlpha:0},{autoAlpha:1,force3D:"auto",ease:x}),0),c.add(punchgs.TweenLite.to(h,y/1e3,{autoAlpha:0,force3D:"auto",ease:x}),0),c.add(punchgs.TweenLite.set(d.find(".defaultimg"),{autoAlpha:1}),0),c.add(punchgs.TweenLite.set(h.find("defaultimg"),{autoAlpha:1}),0)}if(12==t||13==t||14==t||15==t){y=y,y>r.delay&&(y=r.delay),setTimeout(function(){punchgs.TweenLite.set(h.find(".defaultimg"),{autoAlpha:0})},100);var A=r.width,Q=r.height,O=d.find(".slotslide"),k=0,X=0,Y=1,I=1,S=1,C=y/1e3,V=C;("fullwidth"==r.sliderLayout||"fullscreen"==r.sliderLayout)&&(A=O.width(),Q=O.height()),12==t?k=A:15==t?k=0-A:13==t?X=Q:14==t&&(X=0-Q),1==w&&(Y=0),2==w&&(Y=0),3==w&&(C=y/1300),(4==w||5==w)&&(I=.6),6==w&&(I=1.4),(5==w||6==w)&&(S=1.4,Y=0,A=0,Q=0,k=0,X=0),6==w&&(S=.6);7==w&&(A=0,Q=0),c.add(punchgs.TweenLite.from(O,C,{left:k,top:X,scale:S,opacity:Y,rotation:r.rotate,ease:x,force3D:"auto"}),0);var Z=h.find(".slotslide");if((4==w||5==w)&&(A=0,Q=0),1!=w)switch(t){case 12:c.add(punchgs.TweenLite.to(Z,V,{left:0-A+"px",force3D:"auto",scale:I,opacity:Y,rotation:r.rotate,ease:T}),0);break;case 15:c.add(punchgs.TweenLite.to(Z,V,{left:A+"px",force3D:"auto",scale:I,opacity:Y,rotation:r.rotate,ease:T}),0);break;case 13:c.add(punchgs.TweenLite.to(Z,V,{top:0-Q+"px",force3D:"auto",scale:I,opacity:Y,rotation:r.rotate,ease:T}),0);break;case 14:c.add(punchgs.TweenLite.to(Z,V,{top:Q+"px",force3D:"auto",scale:I,opacity:Y,rotation:r.rotate,ease:T}),0)}}if(16==t){var M=new punchgs.TimelineLite;c.add(punchgs.TweenLite.set(l,{position:"absolute","z-index":20}),0),c.add(punchgs.TweenLite.set(s,{position:"absolute","z-index":15}),0),l.wrapInner('
        '),l.find(".tp-half-one").clone(!0).appendTo(l).addClass("tp-half-two"),l.find(".tp-half-two").removeClass("tp-half-one");var A=r.width,Q=r.height;"on"==r.autoHeight&&(Q=n.height()),l.find(".tp-half-one .defaultimg").wrap('
        '),l.find(".tp-half-two .defaultimg").wrap('
        '),l.find(".tp-half-two .defaultimg").css({position:"absolute",top:"-50%"}),l.find(".tp-half-two .tp-caption").wrapAll('
        '),c.add(punchgs.TweenLite.set(l.find(".tp-half-two"),{width:A,height:Q,overflow:"hidden",zIndex:15,position:"absolute",top:Q/2,left:"0px",transformPerspective:600,transformOrigin:"center bottom"}),0),c.add(punchgs.TweenLite.set(l.find(".tp-half-one"),{width:A,height:Q/2,overflow:"visible",zIndex:10,position:"absolute",top:"0px",left:"0px",transformPerspective:600,transformOrigin:"center top"}),0);var H=(l.find(".defaultimg"),Math.round(20*Math.random()-10)),J=Math.round(20*Math.random()-10),N=Math.round(20*Math.random()-10),_=.4*Math.random()-.2,q=.4*Math.random()-.2,B=1*Math.random()+1,E=1*Math.random()+1,F=.3*Math.random()+.3;c.add(punchgs.TweenLite.set(l.find(".tp-half-one"),{overflow:"hidden"}),0),c.add(punchgs.TweenLite.fromTo(l.find(".tp-half-one"),y/800,{width:A,height:Q/2,position:"absolute",top:"0px",left:"0px",force3D:"auto",transformOrigin:"center top"},{scale:B,rotation:H,y:0-Q-Q/4,autoAlpha:0,ease:x}),0),c.add(punchgs.TweenLite.fromTo(l.find(".tp-half-two"),y/800,{width:A,height:Q,overflow:"hidden",position:"absolute",top:Q/2,left:"0px",force3D:"auto",transformOrigin:"center bottom"},{scale:E,rotation:J,y:Q+Q/4,ease:x,autoAlpha:0,onComplete:function(){punchgs.TweenLite.set(l,{position:"absolute","z-index":15}),punchgs.TweenLite.set(s,{position:"absolute","z-index":20}),l.find(".tp-half-one").length>0&&(l.find(".tp-half-one .defaultimg").unwrap(),l.find(".tp-half-one .slotholder").unwrap()),l.find(".tp-half-two").remove()}}),0),M.add(punchgs.TweenLite.set(d.find(".defaultimg"),{autoAlpha:1}),0),null!=l.html()&&c.add(punchgs.TweenLite.fromTo(s,(y-200)/1e3,{scale:F,x:r.width/4*_,y:Q/4*q,rotation:N,force3D:"auto",transformOrigin:"center center",ease:T},{autoAlpha:1,scale:1,x:0,y:0,rotation:0}),0),c.add(M,0)}if(17==t&&d.find(".slotslide").each(function(t){var e=jQuery(this);c.add(punchgs.TweenLite.fromTo(e,y/800,{opacity:0,rotationY:0,scale:.9,rotationX:-110,force3D:"auto",transformPerspective:600,transformOrigin:"center center"},{opacity:1,top:0,left:0,scale:1,rotation:0,rotationX:0,force3D:"auto",rotationY:0,ease:x,delay:.06*t}),0)}),18==t&&d.find(".slotslide").each(function(t){var e=jQuery(this);c.add(punchgs.TweenLite.fromTo(e,y/500,{autoAlpha:0,rotationY:110,scale:.9,rotationX:10,force3D:"auto",transformPerspective:600,transformOrigin:"center center"},{autoAlpha:1,top:0,left:0,scale:1,rotation:0,rotationX:0,force3D:"auto",rotationY:0,ease:x,delay:.06*t}),0)}),19==t||22==t){var M=new punchgs.TimelineLite;c.add(punchgs.TweenLite.set(l,{zIndex:20}),0),c.add(punchgs.TweenLite.set(s,{zIndex:20}),0),setTimeout(function(){h.find(".defaultimg").css({opacity:0})},100);var G=90,Y=1,K="center center ";1==u&&(G=-90),19==t?(K=K+"-"+r.height/2,Y=0):K+=r.height/2,punchgs.TweenLite.set(n,{transformStyle:"flat",backfaceVisibility:"hidden",transformPerspective:600}),d.find(".slotslide").each(function(t){var e=jQuery(this);M.add(punchgs.TweenLite.fromTo(e,y/1e3,{transformStyle:"flat",backfaceVisibility:"hidden",left:0,rotationY:r.rotate,z:10,top:0,scale:1,force3D:"auto",transformPerspective:600,transformOrigin:K,rotationX:G},{left:0,rotationY:0,top:0,z:0,scale:1,force3D:"auto",rotationX:0,delay:50*t/1e3,ease:x}),0),M.add(punchgs.TweenLite.to(e,.1,{autoAlpha:1,delay:50*t/1e3}),0),c.add(M)}),h.find(".slotslide").each(function(t){var e=jQuery(this),o=-90;1==u&&(o=90),M.add(punchgs.TweenLite.fromTo(e,y/1e3,{transformStyle:"flat",backfaceVisibility:"hidden",autoAlpha:1,rotationY:0,top:0,z:0,scale:1,force3D:"auto",transformPerspective:600,transformOrigin:K,rotationX:0},{autoAlpha:1,rotationY:r.rotate,top:0,z:10,scale:1,rotationX:o,delay:50*t/1e3,force3D:"auto",ease:T}),0),c.add(M)}),c.add(punchgs.TweenLite.set(l,{zIndex:18}),0)}if(20==t){if(setTimeout(function(){h.find(".defaultimg").css({opacity:0})},100),1==u)var R=-r.width,G=80,K="20% 70% -"+r.height/2;else var R=r.width,G=-80,K="80% 70% -"+r.height/2;d.find(".slotslide").each(function(t){var e=jQuery(this),o=50*t/1e3;c.add(punchgs.TweenLite.fromTo(e,y/1e3,{left:R,rotationX:40,z:-600,opacity:Y,top:0,scale:1,force3D:"auto",transformPerspective:600,transformOrigin:K,transformStyle:"flat",rotationY:G},{left:0,rotationX:0,opacity:1,top:0,z:0,scale:1,rotationY:0,delay:o,ease:x}),0)}),h.find(".slotslide").each(function(t){var e=jQuery(this),o=50*t/1e3;if(o=t>0?o+y/9e3:0,1!=u)var a=-r.width/2,i=30,n="20% 70% -"+r.height/2;else var a=r.width/2,i=-30,n="80% 70% -"+r.height/2;T=punchgs.Power2.easeInOut,c.add(punchgs.TweenLite.fromTo(e,y/1e3,{opacity:1,rotationX:0,top:0,z:0,scale:1,left:0,force3D:"auto",transformPerspective:600,transformOrigin:n,transformStyle:"flat",rotationY:0},{opacity:1,rotationX:20,top:0,z:-600,left:a,force3D:"auto",rotationY:i,delay:o,ease:T}),0)})}if(21==t||25==t){setTimeout(function(){h.find(".defaultimg").css({opacity:0})},100);var G=90,R=-r.width,U=-G;if(1==u)if(25==t){var K="center top 0";G=r.rotate}else{var K="left center 0";U=r.rotate}else if(R=r.width,G=-90,25==t){var K="center bottom 0";U=-G,G=r.rotate}else{var K="right center 0";U=r.rotate}d.find(".slotslide").each(function(){var t=jQuery(this),e=y/1.5/3;c.add(punchgs.TweenLite.fromTo(t,2*e/1e3,{left:0,transformStyle:"flat",rotationX:U,z:0,autoAlpha:0,top:0,scale:1,force3D:"auto",transformPerspective:1200,transformOrigin:K,rotationY:G},{left:0,rotationX:0,top:0,z:0,autoAlpha:1,scale:1,rotationY:0,force3D:"auto",delay:e/1e3,ease:x}),0)}),1!=u?(R=-r.width,G=90,25==t?(K="center top 0",U=-G,G=r.rotate):(K="left center 0",U=r.rotate)):(R=r.width,G=-90,25==t?(K="center bottom 0",U=-G,G=r.rotate):(K="right center 0",U=r.rotate)),h.find(".slotslide").each(function(){var t=jQuery(this);c.add(punchgs.TweenLite.fromTo(t,y/1e3,{left:0,transformStyle:"flat",rotationX:0,z:0,autoAlpha:1,top:0,scale:1,force3D:"auto",transformPerspective:1200,transformOrigin:K,rotationY:0},{left:0,rotationX:U,top:0,z:0,autoAlpha:1,force3D:"auto",scale:1,rotationY:G,ease:T}),0)})}if(23==t||24==t){setTimeout(function(){h.find(".defaultimg").css({opacity:0})},100);var G=-90,Y=1,W=0;if(1==u&&(G=90),23==t){var K="center center -"+r.width/2;Y=0}else var K="center center "+r.width/2;punchgs.TweenLite.set(n,{transformStyle:"preserve-3d",backfaceVisibility:"hidden",perspective:2500}),d.find(".slotslide").each(function(t){var e=jQuery(this);c.add(punchgs.TweenLite.fromTo(e,y/1e3,{left:W,rotationX:r.rotate,force3D:"auto",opacity:Y,top:0,scale:1,transformPerspective:1200,transformOrigin:K,rotationY:G},{left:0,rotationX:0,autoAlpha:1,top:0,z:0,scale:1,rotationY:0,delay:50*t/500,ease:x}),0)}),G=90,1==u&&(G=-90),h.find(".slotslide").each(function(e){var o=jQuery(this);c.add(punchgs.TweenLite.fromTo(o,y/1e3,{left:0,rotationX:0,top:0,z:0,scale:1,force3D:"auto",transformStyle:"flat",transformPerspective:1200,transformOrigin:K,rotationY:0},{left:W,rotationX:r.rotate,top:0,scale:1,rotationY:G,delay:50*e/500,ease:T}),0),23==t&&c.add(punchgs.TweenLite.fromTo(o,y/2e3,{autoAlpha:1},{autoAlpha:0,delay:50*e/500+y/3e3,ease:T}),0)})}return c}}(jQuery); \ No newline at end of file diff --git a/plugins/revslider/public/assets/js/extensions/revolution.extension.video.min.js b/plugins/revslider/public/assets/js/extensions/revolution.extension.video.min.js new file mode 100644 index 0000000..cffe767 --- /dev/null +++ b/plugins/revslider/public/assets/js/extensions/revolution.extension.video.min.js @@ -0,0 +1,8 @@ +/******************************************** + * REVOLUTION 5.0 EXTENSION - VIDEO FUNCTIONS + * @version: 1.0.0 (03.08.2015) + * @requires jquery.themepunch.revolution.js + * @author ThemePunch +*********************************************/ + +!function(){function e(e){return void 0==e?-1:jQuery.isNumeric(e)?e:e.split(":").length>1?60*parseInt(e.split(":")[0],0)+parseInt(e.split(":")[1],0):e}var t=jQuery.fn.revolution,a=t.is_mobile();jQuery.extend(!0,t,{resetVideo:function(t){switch(t.data("videotype")){case"youtube":{t.data("player")}try{if("on"==t.data("forcerewind")&&!a){var i=e(t.data("videostartat"));i=-1==i?0:i,t.data("player").seekTo(i),t.data("player").pauseVideo()}}catch(o){}0==t.find(".tp-videoposter").length&&punchgs.TweenLite.to(t.find("iframe"),.3,{autoAlpha:1,display:"block",ease:punchgs.Power3.easeInOut});break;case"vimeo":var d=$f(t.find("iframe").attr("id"));try{if("on"==t.data("forcerewind")&&!a){var i=e(t.data("videostartat"));i=-1==i?0:i,d.api("seekTo",i),d.api("pause")}}catch(o){}0==t.find(".tp-videoposter").length&&punchgs.TweenLite.to(t.find("iframe"),.3,{autoAlpha:1,display:"block",ease:punchgs.Power3.easeInOut});break;case"html5":if(a&&1==t.data("disablevideoonmobile"))return!1;var n=t.find("video"),r=n[0];if(punchgs.TweenLite.to(n,.3,{autoAlpha:1,display:"block",ease:punchgs.Power3.easeInOut}),"on"==t.data("forcerewind")&&!t.hasClass("videoisplaying"))try{var i=e(t.data("videostartat"));r.currentTime=-1==i?0:i}catch(o){}"mute"==t.data("volume")&&(r.muted=!0)}},stopVideo:function(e){switch(e.data("videotype")){case"youtube":try{var t=e.data("player");t.pauseVideo()}catch(a){}break;case"vimeo":try{var i=$f(e.find("iframe").attr("id"));i.api("pause")}catch(a){}break;case"html5":var o=e.find("video"),d=o[0];d.pause()}},playVideo:function(o,n){switch(clearTimeout(o.data("videoplaywait")),o.data("videotype")){case"youtube":if(0==o.find("iframe").length)o.append(o.data("videomarkup")),d(o,n,!0);else if(void 0!=o.data("player").playVideo){o.data("player").playVideo();var r=e(o.data("videostartat"));-1!=r&&o.data("player").seekTo(r)}else o.data("videoplaywait",setTimeout(function(){t.playVideo(o,n)},50));break;case"vimeo":if(0==o.find("iframe").length)o.append(o.data("videomarkup")),d(o,n,!0);else if(o.hasClass("rs-apiready")){var s=o.find("iframe").attr("id"),p=$f(s);void 0==p.api("play")?o.data("videoplaywait",setTimeout(function(){t.playVideo(o,n)},50)):setTimeout(function(){p.api("play");var t=e(o.data("videostartat"));-1!=t&&p.api("seekTo",t)},510)}else o.data("videoplaywait",setTimeout(function(){t.playVideo(o,n)},50));break;case"html5":if(a&&1==o.data("disablevideoonmobile"))return!1;var l=o.find("video"),v=l[0],u=l.parent();if(1!=u.data("metaloaded"))i(v,"loadedmetadata",function(a){t.resetVideo(a,n),v.play();var i=e(a.data("videostartat"));-1!=i&&(v.currentTime=i)}(o));else{v.play();var r=e(o.data("videostartat"));-1!=r&&(v.currentTime=r)}}},isVideoPlaying:function(e,t){var a=!1;return void 0!=t.playingvideos&&jQuery.each(t.playingvideos,function(t,i){e.attr("id")==i.attr("id")&&(a=!0)}),a},prepareCoveredVideo:function(e,t,a){var i=a.find("iframe"),o=e.split(":")[0],d=e.split(":")[1],n=t.width/t.height,r=o/d,s=n/r*100,p=r/n*100;n>r?punchgs.TweenLite.to(i,.001,{height:s+"%",width:"100%",top:-(s-100)/2+"%",left:"0px",position:"absolute"}):punchgs.TweenLite.to(i,.001,{width:p+"%",height:"100%",left:-(p-100)/2+"%",top:"0px",position:"absolute"})},checkVideoApis:function(e,t,a){var i="https:"===location.protocol?"https":"http";if((void 0!=e.data("ytid")||e.find("iframe").length>0&&e.find("iframe").attr("src").toLowerCase().indexOf("youtube")>0)&&(t.youtubeapineeded=!0),(void 0!=e.data("ytid")||e.find("iframe").length>0&&e.find("iframe").attr("src").toLowerCase().indexOf("youtube")>0)&&0==a.addedyt){a.addedyt=1;var o=document.createElement("script");o.src="https://www.youtube.com/iframe_api";var d=document.getElementsByTagName("script")[0],n=!0;jQuery("head").find("*").each(function(){"htps://www.youtube.com/iframe_api"==jQuery(this).attr("src")&&(n=!1)}),n&&d.parentNode.insertBefore(o,d)}if((void 0!=e.data("vimeoid")||e.find("iframe").length>0&&e.find("iframe").attr("src").toLowerCase().indexOf("vimeo")>0)&&(t.vimeoapineeded=!0),(void 0!=e.data("vimeoid")||e.find("iframe").length>0&&e.find("iframe").attr("src").toLowerCase().indexOf("vimeo")>0)&&0==a.addedvim){a.addedvim=1;var r=document.createElement("script"),d=document.getElementsByTagName("script")[0],n=!0;r.src=i+"://f.vimeocdn.com/js/froogaloop2.min.js",jQuery("head").find("*").each(function(){jQuery(this).attr("src")==i+"://a.vimeocdn.com/js/froogaloop2.min.js"&&(n=!1)}),n&&d.parentNode.insertBefore(r,d)}return a},manageVideoLayer:function(o,r){var s=o.data("videoattributes"),p=o.data("ytid"),l=o.data("vimeoid"),v=o.data("videpreload"),u=o.data("videomp4"),c=o.data("videowebm"),f=o.data("videoogv"),m=o.data("videocontrols"),y="http",h="loop"==o.data("videoloop")?"loop":"loopandnoslidestop"==o.data("videoloop")?"loop":"",g=void 0!=u||void 0!=c?"html5":void 0!=p&&String(p).length>1?"youtube":void 0!=l&&String(l).length>1?"vimeo":"none",b="html5"==g&&0==o.find("video").length?"html5":"youtube"==g&&0==o.find("iframe").length?"youtube":"vimeo"==g&&0==o.find("iframe").length?"vimeo":"none";switch(o.data("videotype",g),b){case"html5":"controls"!=m&&(m="");var w='","controls"==m&&(w+='
        '),o.data("videomarkup",w),o.append(w),(a&&1==o.data("disablevideoonmobile")||t.isIE(8))&&o.find("video").remove(),o.find("video").each(function(){var e=this,a=jQuery(this);a.parent().hasClass("html5vid")||a.wrap('
        ');var d=a.parent();1!=d.data("metaloaded")&&i(e,"loadedmetadata",function(e){n(e,r),t.resetVideo(e,r)}(o))});break;case"youtube":y="http","none"==m&&(s=s.replace("controls=1","controls=0"),-1==s.toLowerCase().indexOf("controls")&&(s+="&controls=0"));var k=e(o.data("videostartat")),T=e(o.data("videoendat"));-1!=k&&(s=s+"&start="+k),-1!=T&&(s=s+"&end="+T),o.data("videomarkup",'');break;case"vimeo":"https:"===location.protocol&&(y="https"),o.data("videomarkup",'')}void 0!=o.data("videoposter")&&o.data("videoposter").length>2?(0==o.find(".tp-videoposter").length&&o.append('
        '),0==o.find("iframe").length&&o.find(".tp-videoposter").click(function(){if(t.playVideo(o,r),a){if(1==o.data("disablevideoonmobile"))return!1;punchgs.TweenLite.to(o.find(".tp-videoposter"),.3,{autoAlpha:0,force3D:"auto",ease:punchgs.Power3.easeInOut}),punchgs.TweenLite.to(o.find("iframe"),.3,{autoAlpha:1,display:"block",ease:punchgs.Power3.easeInOut})}})):0!=o.find("iframe").length||"youtube"!=g&&"vimeo"!=g||(o.append(o.data("videomarkup")),d(o,r,!1)),"none"!=o.data("dottedoverlay")&&void 0!=o.data("dottedoverlay")&&1!=o.find(".tp-dottedoverlay").length&&o.append('
        '),o.addClass("HasListener"),1==o.data("bgvideo")&&punchgs.TweenLite.set(o.find("video, iframe"),{autoAlpha:0})}});var i=function(e,t,a){e.addEventListener?e.addEventListener(t,a,!1):e.attachEvent(t,a,!1)},o=function(e,t,a){var i={};return i.video=e,i.videotype=t,i.settings=a,i},d=function(i,d,n){var p=i.find("iframe"),l="iframe"+Math.round(1e5*Math.random()+1),v=i.data("videoloop"),u="loopandnoslidestop"!=v;if(v="loop"==v||"loopandnoslidestop"==v,1==i.data("forcecover")){i.removeClass("fullscreenvideo").addClass("coverscreenvideo");var c=i.data("aspectratio");void 0!=c&&c.split(":").length>1&&t.prepareCoveredVideo(c,d,i)}if(p.attr("id",l),n&&i.data("startvideonow",!0),1!==i.data("videolistenerexist"))switch(i.data("videotype")){case"youtube":var f=new YT.Player(l,{events:{onStateChange:function(t){var a=t.target.getVideoEmbedCode(),i=jQuery("#"+a.split('id="')[1].split('"')[0]),n=i.closest(".tp-simpleresponsive"),p=i.parent(),l=i.parent().data("player");if(t.data==YT.PlayerState.PLAYING)punchgs.TweenLite.to(p.find(".tp-videoposter"),.3,{autoAlpha:0,force3D:"auto",ease:punchgs.Power3.easeInOut}),punchgs.TweenLite.to(p.find("iframe"),.3,{autoAlpha:1,display:"block",ease:punchgs.Power3.easeInOut}),"mute"==p.data("volume")&&l.mute(),d.videoplaying=!0,r(p,d),n.trigger("stoptimer"),d.c.trigger("revolution.slide.onvideoplay",o(l,"youtube",p.data()));else{if(0==t.data&&v){l.playVideo();var u=e(p.data("videostartat"));-1!=u&&l.seekTo(u)}(0==t.data||2==t.data)&&"on"==p.data("showcoveronpause")&&p.find(".tp-videoposter").length>0&&(punchgs.TweenLite.to(p.find(".tp-videoposter"),.3,{autoAlpha:1,force3D:"auto",ease:punchgs.Power3.easeInOut}),punchgs.TweenLite.to(p.find("iframe"),.3,{autoAlpha:0,ease:punchgs.Power3.easeInOut})),-1!=t.data&&3!=t.data&&(d.videoplaying=!1,s(p,d),n.trigger("starttimer"),d.c.trigger("revolution.slide.onvideostop",o(l,"youtube",p.data()))),0==t.data&&1==p.data("nextslideatend")?(d.c.revnext(),s(p,d)):(s(p,d),d.videoplaying=!1,n.trigger("starttimer"),d.c.trigger("revolution.slide.onvideostop",o(l,"youtube",p.data())))}},onReady:function(t){{var i=t.target.getVideoEmbedCode(),o=jQuery("#"+i.split('id="')[1].split('"')[0]),d=o.parent(),n=d.data("videorate");d.data("videostart")}if(d.addClass("rs-apiready"),void 0!=n&&t.target.setPlaybackRate(parseFloat(n)),d.find(".tp-videoposter").unbind("click"),d.find(".tp-videoposter").click(function(){a||f.playVideo()}),d.data("startvideonow")){d.data("player").playVideo();var r=e(d.data("videostartat"));-1!=r&&d.data("player").seekTo(r)}d.data("videolistenerexist",1)}}});i.data("player",f);break;case"vimeo":for(var m,y=p.attr("src"),h={},g=y,b=/([^&=]+)=([^&]*)/g;m=b.exec(g);)h[decodeURIComponent(m[1])]=decodeURIComponent(m[2]);y=void 0!=h.player_id?y.replace(h.player_id,l):y+"&player_id="+l;try{y=y.replace("api=0","api=1")}catch(w){}y+="&api=1",p.attr("src",y);var f=i.find("iframe")[0],k=(jQuery("#"+l),$f(l));k.addEvent("ready",function(){if(i.addClass("rs-apiready"),k.addEvent("play",function(){i.data("nextslidecalled",0),punchgs.TweenLite.to(i.find(".tp-videoposter"),.3,{autoAlpha:0,force3D:"auto",ease:punchgs.Power3.easeInOut}),punchgs.TweenLite.to(i.find("iframe"),.3,{autoAlpha:1,display:"block",ease:punchgs.Power3.easeInOut}),d.c.trigger("revolution.slide.onvideoplay",o(k,"vimeo",i.data())),d.videoplaying=!0,r(i,d),u&&d.c.trigger("stoptimer"),"mute"==i.data("volume")&&k.api("setVolume","0")}),k.addEvent("playProgress",function(t){var a=e(i.data("videoendat"));if(0!=a&&Math.abs(a-t.seconds)<.3&&a>t.seconds&&1!=i.data("nextslidecalled"))if(v){k.api("play");var o=e(i.data("videostartat"));-1!=o&&k.api("seekTo",o)}else 1==i.data("nextslideatend")&&(i.data("nextslidecalled",1),d.c.revnext()),k.api("pause")}),k.addEvent("finish",function(){s(i,d),d.videoplaying=!1,d.c.trigger("starttimer"),d.c.trigger("revolution.slide.onvideostop",o(k,"vimeo",i.data())),1==i.data("nextslideatend")&&d.c.revnext()}),k.addEvent("pause",function(){i.find(".tp-videoposter").length>0&&"on"==i.data("showcoveronpause")&&(punchgs.TweenLite.to(i.find(".tp-videoposter"),.3,{autoAlpha:1,force3D:"auto",ease:punchgs.Power3.easeInOut}),punchgs.TweenLite.to(i.find("iframe"),.3,{autoAlpha:0,ease:punchgs.Power3.easeInOut})),d.videoplaying=!1,s(i,d),d.c.trigger("starttimer"),d.c.trigger("revolution.slide.onvideostop",o(k,"vimeo",i.data()))}),i.find(".tp-videoposter").unbind("click"),i.find(".tp-videoposter").click(function(){return a?void 0:(k.api("play"),!1)}),i.data("startvideonow")){k.api("play");var t=e(i.data("videostartat"));-1!=t&&k.api("seekTo",t)}i.data("videolistenerexist",1)})}else{var T=e(i.data("videostartat"));switch(i.data("videotype")){case"youtube":n&&(i.data("player").playVideo(),-1!=T&&i.data("player").seekTo());break;case"vimeo":if(n){var k=$f(i.find("iframe").attr("id"));k.api("play"),-1!=T&&k.api("seekTo",T)}}}},n=function(t,d){if(a&&1==t.data("disablevideoonmobile"))return!1;var n=t.find("video"),p=n[0],l=n.parent(),v=t.data("videoloop"),u="loopandnoslidestop"!=v;v="loop"==v||"loopandnoslidestop"==v,l.data("metaloaded",1),void 0==n.attr("control")&&(0!=t.find(".tp-video-play-button").length||a||t.append('
         
        '),t.find("video, .tp-poster, .tp-video-play-button").click(function(){t.hasClass("videoisplaying")?p.pause():p.play()})),(1==t.data("forcecover")||t.hasClass("fullscreenvideo"))&&l.addClass(1==t.data("forcecover")?"fullcoveredvideo":"fullscreenvideo");var c=t.find(".tp-vid-play-pause")[0],f=t.find(".tp-vid-mute")[0],m=t.find(".tp-vid-full-screen")[0],y=t.find(".tp-seek-bar")[0],h=t.find(".tp-volume-bar")[0];void 0!=c&&(i(c,"click",function(){1==p.paused?p.play():p.pause()}),i(f,"click",function(){0==p.muted?(p.muted=!0,f.innerHTML="Unmute"):(p.muted=!1,f.innerHTML="Mute")}),i(m,"click",function(){p.requestFullscreen?p.requestFullscreen():p.mozRequestFullScreen?p.mozRequestFullScreen():p.webkitRequestFullscreen&&p.webkitRequestFullscreen()}),i(y,"change",function(){var e=p.duration*(y.value/100);p.currentTime=e}),i(p,"timeupdate",function(){var a=100/p.duration*p.currentTime,i=e(t.data("videoendat")),o=p.currentTime;if(y.value=a,0!=i&&Math.abs(i-o)<=.3&&i>o&&1!=t.data("nextslidecalled"))if(v){p.play();var n=e(t.data("videostartat"));-1!=n&&(p.currentTime=n)}else 1==t.data("nextslideatend")&&(t.data("nextslidecalled",1),d.c.revnext()),p.pause()}),i(y,"mousedown",function(){t.addClass("seekbardragged"),p.pause()}),i(y,"mouseup",function(){t.removeClass("seekbardragged"),p.play()}),i(h,"change",function(){p.volume=h.value})),i(p,"play",function(){t.data("nextslidecalled",0),"mute"==t.data("volume")&&(p.muted=!0),t.addClass("videoisplaying"),r(t,d),u?(d.videoplaying=!0,d.c.trigger("stoptimer"),d.c.trigger("revolution.slide.onvideoplay",o(p,"html5",t.data()))):(d.videoplaying=!1,d.c.trigger("starttimer"),d.c.trigger("revolution.slide.onvideostop",o(p,"html5",t.data()))),punchgs.TweenLite.to(t.find(".tp-videoposter"),.3,{autoAlpha:0,force3D:"auto",ease:punchgs.Power3.easeInOut}),punchgs.TweenLite.to(t.find("video"),.3,{autoAlpha:1,display:"block",ease:punchgs.Power3.easeInOut});var e=t.find(".tp-vid-play-pause")[0],a=t.find(".tp-vid-mute")[0];void 0!=e&&(e.innerHTML="Pause"),void 0!=a&&p.muted&&(a.innerHTML="Unmute")}),i(p,"pause",function(){t.find(".tp-videoposter").length>0&&"on"==t.data("showcoveronpause")&&!t.hasClass("seekbardragged")&&(punchgs.TweenLite.to(t.find(".tp-videoposter"),.3,{autoAlpha:1,force3D:"auto",ease:punchgs.Power3.easeInOut}),punchgs.TweenLite.to(t.find("video"),.3,{autoAlpha:0,ease:punchgs.Power3.easeInOut})),t.removeClass("videoisplaying"),d.videoplaying=!1,s(t,d),d.c.trigger("starttimer"),d.c.trigger("revolution.slide.onvideostop",o(p,"html5",t.data()));var e=t.find(".tp-vid-play-pause")[0];void 0!=e&&(e.innerHTML="Play")}),i(p,"ended",function(){s(t,d),d.videoplaying=!1,s(t,d),d.c.trigger("starttimer"),d.c.trigger("revolution.slide.onvideostop",o(p,"html5",t.data())),1==t.data("nextslideatend")&&d.c.revnext(),t.removeClass("videoisplaying")})},r=function(e,a){void 0==a.playingvideos&&(a.playingvideos=new Array),e.data("stopallvideos")&&void 0!=a.playingvideos&&a.playingvideos.length>0&&(a.lastplayedvideos=jQuery.extend(!0,[],a.playingvideos),jQuery.each(a.playingvideos,function(e,i){t.stopVideo(i,a)})),a.playingvideos.push(e)},s=function(e,t){void 0!=t.playingvideos&&t.playingvideos.splice(jQuery.inArray(e,t.playingvideos),1)}}(jQuery); \ No newline at end of file diff --git a/plugins/revslider/public/assets/js/extensions/source/revolution.extension.actions.js b/plugins/revslider/public/assets/js/extensions/source/revolution.extension.actions.js new file mode 100644 index 0000000..e84d840 --- /dev/null +++ b/plugins/revslider/public/assets/js/extensions/source/revolution.extension.actions.js @@ -0,0 +1,167 @@ +/******************************************** + * REVOLUTION 5.0 EXTENSION - ACTIONS + * @version: 1.0.1 (07.08.2015) + * @requires jquery.themepunch.revolution.js + * @author ThemePunch +*********************************************/ + +(function($) { + +var _R = jQuery.fn.revolution; + +/////////////////////////////////////////// +// EXTENDED FUNCTIONS AVAILABLE GLOBAL // +/////////////////////////////////////////// +jQuery.extend(true,_R, { + checkActions : function(_nc,opt,as) { + checkActions_intern(_nc,opt,as); + } +}); + +////////////////////////////////////////// +// - INITIALISATION OF ACTIONS - // +////////////////////////////////////////// +var checkActions_intern = function(_nc,opt,as) { +if (as && as.length) + jQuery.each(as,function(i,a) { + a.delay = parseInt(a.delay,0)/1000; + _nc.addClass("noSwipe") + _nc.on(a.event,function() { + var tnc = jQuery("#"+a.layer); + if (a.action=="stoplayer" || a.action=="togglelayer" || a.action=="startlayer") { + if (tnc.length>0) + if (a.action=="startlayer" || (a.action=="togglelayer" && tnc.data('animdirection')!="in")) { + tnc.data('animdirection',"in"); + var otl = tnc.data('timeline_out'), + base_offsetx = opt.sliderType==="carousel" ? 0 : opt.width/2 - (opt.gridwidth[opt.curWinRange]*opt.bw)/2, + base_offsety=0; + if (otl!=undefined) otl.pause(0).kill(); + if (_R.animateSingleCaption) _R.animateSingleCaption(tnc,opt,base_offsetx,base_offsety,0,false,true); + var tl = tnc.data('timeline'); + tnc.data('triggerstate',"on"); + punchgs.TweenLite.delayedCall(a.delay,function() { + tl.play(0); + },[tl]); + } else + + if (a.action=="stoplayer" || (a.action=="togglelayer" && tnc.data('animdirection')!="out")) { + tnc.data('animdirection',"out"); + tnc.data('triggered',true); + tnc.data('triggerstate',"off"); + if (_R.stopVideo) _R.stopVideo(tnc,opt); + if (_R.endMoveCaption) + punchgs.TweenLite.delayedCall(a.delay,_R.endMoveCaption,[tnc,null,null,opt]); + } + } else + punchgs.TweenLite.delayedCall(a.delay,function() { + switch (a.action) { + case "scrollbelow": + + _nc.addClass("tp-scrollbelowslider"); + _nc.data('scrolloffset',a.offset); + _nc.data('scrolldelay',a.delay); + var off=getOffContH(opt.fullScreenOffsetContainer) || 0, + aof = parseInt(a.offset,0) || 0; + off = off - aof || 0; + jQuery('body,html').animate({scrollTop:(opt.c.offset().top+(jQuery(opt.li[0]).height())-off)+"px"},{duration:400}); + break; + case "callback": + eval(a.callback); + break; + case "jumptoslide": + switch (a.slide.toLowerCase()) { + case "+1": + case "next": + opt.sc_indicator="arrow"; + _R.callingNewSlide(opt,opt.c,1); + break; + case "previous": + case "prev": + case "-1": + opt.sc_indicator="arrow"; + _R.callingNewSlide(opt,opt.c,-1); + break; + default: + var ts = jQuery.isNumeric(a.slide) ? parseInt(a.slide,0) : a.slide; + _R.callingNewSlide(opt,opt.c,ts); + break; + } + break; + case "simplelink": + window.open(a.url,a.target); + break; + case "toggleslider": + if (opt.sliderstatus=="playing") + opt.c.revpause(); + else + opt.c.revresume(); + break; + case "pauseslider": + opt.c.revpause(); + break; + case "playslider": + opt.c.revresume(); + break; + case "playvideo": + if (tnc.length>0) + _R.playVideo(tnc,opt); + break; + case "stopvideo": + if (tnc.length>0) + if (_R.stopVideo) _R.stopVideo(tnc,opt); + break; + case "togglevideo": + if (tnc.length>0) + + if (!_R.isVideoPlaying(tnc,opt)) + _R.playVideo(tnc,opt); + else + if (_R.stopVideo) _R.stopVideo(tnc,opt); + break; + case "simulateclick": + if (tnc.length>0) tnc.click(); + break; + case "toggleclass": + if (tnc.length>0) + if (!tnc.hasClass(a.classname)) + tnc.addClass(a.classname); + else + tnc.removeClass(a.classname); + break; + } + },[tnc,opt,a,_nc]); + }); + switch (a.action) { + case "togglelayer": + case "startlayer": + case "playlayer": + case "stoplayer": + var tnc = jQuery("#"+a.layer); + if (tnc.data('start')!="bytrigger") { + tnc.data('triggerstate',"on"); + tnc.data('animdirection',"in"); + } + break; + + } + }) +} + + +var getOffContH = function(c) { + if (c==undefined) return 0; + if (c.split(',').length>1) { + oc = c.split(","); + var a =0; + jQuery.each(oc,function(index,sc) { + if (jQuery(sc).length>0) + a = a + jQuery(sc).outerHeight(true); + }); + return a; + } else { + return jQuery(c).height(); + } + return 0; +} + +})(jQuery); \ No newline at end of file diff --git a/plugins/revslider/public/assets/js/extensions/source/revolution.extension.carousel.js b/plugins/revslider/public/assets/js/extensions/source/revolution.extension.carousel.js new file mode 100644 index 0000000..2502c5c --- /dev/null +++ b/plugins/revslider/public/assets/js/extensions/source/revolution.extension.carousel.js @@ -0,0 +1,337 @@ +/******************************************** + * REVOLUTION 5.0 EXTENSION - CAROUSEL + * @version: 1.0.0 (08.07.2015) + * @requires jquery.themepunch.revolution.js + * @author ThemePunch +*********************************************/ + +(function($) { + +var _R = jQuery.fn.revolution; + + /////////////////////////////////////////// + // EXTENDED FUNCTIONS AVAILABLE GLOBAL // + /////////////////////////////////////////// +jQuery.extend(true,_R, { + + // CALCULATE CAROUSEL POSITIONS + prepareCarousel : function(opt,a,direction) { + + direction = opt.carousel.lastdirection = dircheck(direction,opt.carousel.lastdirection); + setCarouselDefaults(opt); + + opt.carousel.slide_offset_target = getActiveCarouselOffset(opt); + + if (a==undefined) + _R.carouselToEvalPosition(opt,direction); + else + animateCarousel(opt,direction,false); + + }, + + // MOVE FORWARDS/BACKWARDS DEPENDING ON THE OFFSET TO GET CAROUSEL IN EVAL POSITION AGAIN + carouselToEvalPosition : function(opt,direction) { + + var _ = opt.carousel; + direction = _.lastdirection = dircheck(direction,_.lastdirection); + + var bb = _.horizontal_align==="center" ? ((_.wrapwidth/2-_.slide_width/2) - _.slide_globaloffset) / _.slide_width : (0 - _.slide_globaloffset) / _.slide_width, + fi = _R.simp(bb,opt.slideamount,false); + + var cm = fi - Math.floor(fi), + calc = 0, + mc = -1 * (Math.ceil(fi) - fi), + mf = -1 * (Math.floor(fi) - fi); + + calc = cm>=0.3 && direction==="left" || cm>=0.7 && direction==="right" ? mc : cm<0.3 && direction==="left" || cm<0.7 && direction==="right" ? mf : calc; + calc = _.infinity==="off" ? fi<0 ? fi : bb>opt.slideamount-1 ? bb-(opt.slideamount-1) : calc : calc; + + _.slide_offset_target = calc * _.slide_width; + // LONGER "SMASH" +/- 1 to Calc + + if (Math.abs(_.slide_offset_target) !==0) + animateCarousel(opt,direction,true); + else { + _R.organiseCarousel(opt,direction); + } + }, + + // ORGANISE THE CAROUSEL ELEMENTS IN POSITION AND TRANSFORMS + organiseCarousel : function(opt,direction,setmaind,unli) { + + direction = direction === undefined || direction=="down" || direction=="up" || direction===null || jQuery.isEmptyObject(direction) ? "left" : direction; + var _ = opt.carousel, + slidepositions = new Array(), + len = _.slides.length, + leftlimit = _.horizontal_align ==="right" ? leftlimit = opt.width : 0; + + + for (var i=0;i_.wrapwidth-_.inneroffset && direction=="right" ? _.slide_offset - ((_.slides.length-i)*_.slide_width) : pos; + pos = pos<0-_.inneroffset-_.slide_width && direction=="left" ? pos + _.maxwidth : pos; + } + slidepositions[i] = pos; + } + var maxd = 999; + + // SECOND RUN FOR NEGATIVE ADJUSTMENETS + jQuery.each(_.slides,function(i,slide) { + var pos = slidepositions[i]; + if (_.infinity==="on") { + + pos = pos>_.wrapwidth-_.inneroffset && direction==="left" ? slidepositions[0] - ((len-i)*_.slide_width) : pos; + pos = pos<0-_.inneroffset-_.slide_width ? direction=="left" ? pos + _.maxwidth : direction==="right" ? slidepositions[len-1] + ((i+1)*_.slide_width) : pos : pos; + } + + var tr= new Object(); + + tr.left = pos + _.inneroffset; + + // CHCECK DISTANCES FROM THE CURRENT FAKE FOCUS POSITION + var d = _.horizontal_align==="center" ? (Math.abs(_.wrapwidth/2) - (tr.left+_.slide_width/2))/_.slide_width : (_.inneroffset - tr.left)/_.slide_width, + offsdir = d<0 ? -1:1, + ha = _.horizontal_align==="center" ? 2 : 1; + + + if ((setmaind && Math.abs(d)0 ? 1-d : Math.abs(d)>_.maxVisibleItems-1 ? 1- (Math.abs(d)-(_.maxVisibleItems-1)) : 1; + break; + case "right": + tr.autoAlpha = d>-1 && d<0 ? 1-Math.abs(d) : d>_.maxVisibleItems-1 ? 1- (Math.abs(d)-(_.maxVisibleItems-1)) : 1; + break; + } + else + tr.autoAlpha = Math.abs(d)0) { + if (_.vary_scale==="on") { + tr.scale = 1- Math.abs(((_.minScale/100/Math.ceil(_.maxVisibleItems/ha))*d)); + var sx = (_.slide_width - (_.slide_width*tr.scale)) *Math.abs(d); + } else { + tr.scale = d>=1 || d<=-1 ? 1 - _.minScale/100 : (100-( _.minScale*Math.abs(d)))/100; + var sx=(_.slide_width - (_.slide_width*(1 - _.minScale/100)))*Math.abs(d); + } + } + + // ROTATION FUNCTIONS + if (_.maxRotation!==undefined && Math.abs(_.maxRotation)!=0) { + if (_.vary_rotation ==="on") { + tr.rotationY = Math.abs(_.maxRotation) - Math.abs((1-Math.abs(((1/Math.ceil(_.maxVisibleItems/ha))*d))) * _.maxRotation); + tr.autoAlpha = Math.abs(tr.rotationY)>90 ? 0 : tr.autoAlpha; + } else { + tr.rotationY = d>=1 || d<=-1 ? _.maxRotation : Math.abs(d)*_.maxRotation; + } + tr.rotationY = d<0 ? tr.rotationY*-1 : tr.rotationY; + } + + // SET SPACES BETWEEN ELEMENTS + tr.x = (-1*_.space) * d; + + tr.left = Math.floor(tr.left); + tr.x = Math.floor(tr.x); + + // ADD EXTRA SPACE ADJUSTEMENT IF COVER MODE IS SELECTED + tr.scale !== undefined ? d<0 ? tr.x-sx :tr.x+sx : tr.x; + + // ZINDEX ADJUSTEMENT + tr.zIndex = Math.round(100-Math.abs(d*5)); + + // TRANSFORM STYLE + tr.transformStyle = "flat"; + + + // ADJUST TRANSFORMATION OF SLIDE + punchgs.TweenLite.set(slide,tr); + }); + + if (unli) { + opt.c.find('.next-revslide').removeClass("next-revslide"); + jQuery(_.slides[_.focused]).addClass("next-revslide"); + opt.c.trigger("revolution.nextslide.waiting"); + } + + var ll = _.wrapwidth/2 - _.slide_offset , + rl = _.maxwidth+_.slide_offset-_.wrapwidth/2; + } + +}); + +/************************************************** + - CAROUSEL FUNCTIONS - +***************************************************/ + +var defineCarouselElements = function(opt) { + var _ = opt.carousel; + + _.infbackup = _.infinity; + _.maxVisiblebackup = _.maxVisibleItems; + // SET DEFAULT OFFSETS TO 0 + _.slide_globaloffset = "none"; + _.slide_offset = 0; + // SET UL REFERENCE + _.wrap = opt.c.find('.tp-carousel-wrapper'); + // COLLECT SLIDES + _.slides = opt.c.find('.tp-revslider-slidesli'); + + // SET PERSPECTIVE IF ROTATION IS ADDED + if (_.maxRotation!==0) + punchgs.TweenLite.set(_.wrap,{perspective:1200,transformStyle:"flat"}); + if (_.border_radius!==undefined && parseInt(_.border_radius,0) >0) { + punchgs.TweenLite.set(opt.c.find('.tp-revslider-slidesli'),{borderRadius:_.border_radius}); + } +} + +var setCarouselDefaults = function(opt) { + + if (opt.bw===undefined) _R.setSize(opt); + var _=opt.carousel, + loff = _R.getHorizontalOffset(opt.c,"left"), + roff = _R.getHorizontalOffset(opt.c,"right"); + + // IF NO DEFAULTS HAS BEEN DEFINED YET + if (_.wrap===undefined) defineCarouselElements(opt); + // DEFAULT LI WIDTH SHOULD HAVE THE SAME WIDTH OF TH OPT WIDTH + _.slide_width = _.stretch!=="on" ? opt.gridwidth[opt.curWinRange]*opt.bw : opt.c.width(); + + // CALCULATE CAROUSEL WIDTH + _.maxwidth = opt.slideamount*_.slide_width; + if (_.maxVisiblebackup>_.slides.length+1) + _.maxVisibleItems = _.slides.length+2; + + // SET MAXIMUM CAROUSEL WARPPER WIDTH (SHOULD BE AN ODD NUMBER) + _.wrapwidth = (_.maxVisibleItems * _.slide_width) + ((_.maxVisibleItems - 1) * _.space); + _.wrapwidth = opt.sliderLayout!="auto" ? + _.wrapwidth>opt.c.closest('.tp-simpleresponsive').width() ? opt.c.closest('.tp-simpleresponsive').width() : _.wrapwidth : + _.wrapwidth>opt.ul.width() ? opt.ul.width() : _.wrapwidth; + + + // INFINITY MODIFICATIONS + _.infinity = _.wrapwidth >=_.maxwidth ? "off" : _.infbackup; + + + // SET POSITION OF WRAP CONTAINER + _.wrapoffset = _.horizontal_align==="center" ? (opt.c.width()-roff - loff - _.wrapwidth)/2 : 0; + _.wrapoffset = opt.sliderLayout!="auto" && opt.outernav ? 0 : _.wrapoffset < loff ? loff : _.wrapoffset; + + + + if (_.horizontal_align==="right") + punchgs.TweenLite.set(_.wrap,{left:"auto",right:_.wrapoffset+"px", width:_.wrapwidth, overflow:"hidden"}); + else + punchgs.TweenLite.set(_.wrap,{right:"auto",left:_.wrapoffset+"px", width:_.wrapwidth, overflow:"hidden"}); + + + + // INNER OFFSET FOR RTL + _.inneroffset = _.horizontal_align==="right" ? _.wrapwidth - _.slide_width : 0; + + // THE REAL OFFSET OF THE WRAPPER + _.realoffset = (Math.abs(_.wrap.position().left)); // + opt.c.width()/2); + + // THE SCREEN WIDTH/2 + _.windhalf = jQuery(window).width()/2; + + + +} + + +// DIRECTION CHECK +var dircheck = function(d,b) { + return d===null || jQuery.isEmptyObject(d) ? b : d === undefined ? "right" : d;; +} + +// ANIMATE THE CAROUSEL WITH OFFSETS +var animateCarousel = function(opt,direction,nsae) { + var _ = opt.carousel; + direction = _.lastdirection = dircheck(direction,_.lastdirection); + + var animobj = new Object(); + animobj.from = 0; + animobj.to = _.slide_offset_target; + if (_.positionanim!==undefined) + _.positionanim.pause(); + _.positionanim = punchgs.TweenLite.to(animobj,1.2,{from:animobj.to, + onUpdate:function() { + _.slide_offset = _.slide_globaloffset + animobj.from; + _.slide_offset = _R.simp(_.slide_offset , _.maxwidth); + _R.organiseCarousel(opt,direction,false,false); + }, + onComplete:function() { + + _.slide_globaloffset = _.infinity==="off" ? _.slide_globaloffset + _.slide_offset_target : _R.simp(_.slide_globaloffset + _.slide_offset_target, _.maxwidth); + _.slide_offset = _R.simp(_.slide_offset , _.maxwidth); + + _R.organiseCarousel(opt,direction,false,true); + var li = jQuery(opt.li[_.focused]); + opt.c.find('.next-revslide').removeClass("next-revslide"); + if (nsae) _R.callingNewSlide(opt,opt.c,li.data('index')); + }, ease:punchgs.Expo.easeOut}); +} + + +var breduc = function(a,m) { + return Math.abs(a)>Math.abs(m) ? a>0 ? a - Math.abs(Math.floor(a/(m))*(m)) : a + Math.abs(Math.floor(a/(m))*(m)) : a; +} + +// CAROUSEL INFINITY MODE, DOWN OR UP ANIMATION +var getBestDirection = function(a,b,max) { + var dira = b-a,max, + dirb = (b-max) - a,max; + dira = breduc(dira,max); + dirb = breduc(dirb,max); + return Math.abs(dira)>Math.abs(dirb) ? dirb : dira; + } + +// GET OFFSETS BEFORE ANIMATION +var getActiveCarouselOffset = function(opt) { + var ret = 0, + _ = opt.carousel; + + if (_.positionanim!==undefined) _.positionanim.kill(); + + if (_.slide_globaloffset=="none") + _.slide_globaloffset = ret = _.horizontal_align==="center" ? (_.wrapwidth/2-_.slide_width/2) : 0; + + else { + + _.slide_globaloffset = _.slide_offset; + _.slide_offset = 0; + var ci = opt.c.find('.processing-revslide').index(), + fi = _.horizontal_align==="center" ? ((_.wrapwidth/2-_.slide_width/2) - _.slide_globaloffset) / _.slide_width : (0 - _.slide_globaloffset) / _.slide_width; + + fi = _R.simp(fi,opt.slideamount,false); + ci = ci>=0 ? ci : opt.c.find('.active-revslide').index(); + ci = ci>=0 ? ci : 0; + + ret = _.infinity==="off" ? fi-ci : -getBestDirection(fi,ci,opt.slideamount); + ret = ret * _.slide_width; + } + return ret; +} + +})(jQuery); \ No newline at end of file diff --git a/plugins/revslider/public/assets/js/extensions/source/revolution.extension.kenburn.js b/plugins/revslider/public/assets/js/extensions/source/revolution.extension.kenburn.js new file mode 100644 index 0000000..d740696 --- /dev/null +++ b/plugins/revslider/public/assets/js/extensions/source/revolution.extension.kenburn.js @@ -0,0 +1,175 @@ +/******************************************** + * REVOLUTION 5.0 EXTENSION - KEN BURN + * @version: 1.0.0 (03.08.2015) + * @requires jquery.themepunch.revolution.js + * @author ThemePunch +*********************************************/ + +(function($) { + +var _R = jQuery.fn.revolution; + +/////////////////////////////////////////// +// EXTENDED FUNCTIONS AVAILABLE GLOBAL // +/////////////////////////////////////////// +jQuery.extend(true,_R, { + + stopKenBurn : function(l) { + if (l.data('kbtl')!=undefined) + l.data('kbtl').pause(); + }, + + startKenBurn : function(l,opt,prgs) { + var d = l.data(), + i = l.find('.defaultimg'), + s = i.data('lazyload') || i.data('src'), + i_a = d.owidth / d.oheight, + cw = opt.sliderType==="carousel" ? opt.carousel.slide_width : opt.ul.width(), + ch = opt.ul.height(), + c_a = cw / ch; + + + if (l.data('kbtl')) + l.data('kbtl').kill(); + + + prgs = prgs || 0; + + + + + // NO KEN BURN IMAGE EXIST YET + if (l.find('.tp-kbimg').length==0) { + l.append('
        '); + l.data('kenburn',l.find('.tp-kbimg')); + } + + var getKBSides = function(w,h,f,cw,ch,ho,vo) { + var tw = w * f, + th = h * f, + hd = Math.abs(cw-tw), + vd = Math.abs(ch-th), + s = new Object(); + s.l = (0-ho)*hd; + s.r = s.l + tw; + s.t = (0-vo)*vd; + s.b = s.t + th; + s.h = ho; + s.v = vo; + return s; + }, + + getKBCorners = function(d,cw,ch,ofs,o) { + + var p = d.bgposition.split(" ") || "center center", + ho = p[0] == "center" ? "50%" : p[0] == "left" || p [1] == "left" ? "0%" : p[0]=="right" || p[1] =="right" ? "100%" : p[0], + vo = p[1] == "center" ? "50%" : p[0] == "top" || p [1] == "top" ? "0%" : p[0]=="bottom" || p[1] =="bottom" ? "100%" : p[1]; + + ho = parseInt(ho,0)/100 || 0; + vo = parseInt(vo,0)/100 || 0; + + + var sides = new Object(); + + + sides.start = getKBSides(o.start.width,o.start.height,o.start.scale,cw,ch,ho,vo); + sides.end = getKBSides(o.start.width,o.start.height,o.end.scale,cw,ch,ho,vo); + + return sides; + }, + + kcalcL = function(cw,ch,d) { + var f=d.scalestart/100, + fe=d.scaleend/100, + ofs = d.oofsetstart != undefined ? d.offsetstart.split(" ") || [0,0] : [0,0], + ofe = d.offsetend != undefined ? d.offsetend.split(" ") || [0,0] : [0,0]; + d.bgposition = d.bgposition == "center center" ? "50% 50%" : d.bgposition; + + + var o = new Object(), + sw = cw*f, + sh = sw/d.owidth * d.oheight, + ew = cw*fe, + eh = ew/d.owidth * d.oheight; + + + + o.start = new Object(); + o.starto = new Object(); + o.end = new Object(); + o.endo = new Object(); + + o.start.width = cw; + o.start.height = o.start.width / d.owidth * d.oheight; + + if (o.start.height0 ? 0 : iws + ofs[0] < cw ? cw-iws : ofs[0]; + ofe[0] = ofe[0]>0 ? 0 : iwe + ofe[0] < cw ? cw-iwe : ofe[0]; + + ofs[1] = ofs[1]>0 ? 0 : ihs + ofs[1] < ch ? ch-ihs : ofs[1]; + ofe[1] = ofe[1]>0 ? 0 : ihe + ofe[1] < ch ? ch-ihe : ofe[1]; + + + + o.starto.x = ofs[0]+"px"; + o.starto.y = ofs[1]+"px"; + o.endo.x = ofe[0]+"px"; + o.endo.y = ofe[1]+"px"; + o.end.ease = o.endo.ease = d.ease; + o.end.force3D = o.endo.force3D = true; + return o; + }; + + if (l.data('kbtl')!=undefined) { + l.data('kbtl').kill(); + l.removeData('kbtl'); + } + + var k = l.data('kenburn'), + kw = k.parent(), + anim = kcalcL(cw,ch,d), + kbtl = new punchgs.TimelineLite(); + + + kbtl.pause(); + + anim.start.transformOrigin = "0% 0%"; + anim.starto.transformOrigin = "0% 0%"; + + kbtl.add(punchgs.TweenLite.fromTo(k,d.duration/1000,anim.start,anim.end),0); + kbtl.add(punchgs.TweenLite.fromTo(kw,d.duration/1000,anim.starto,anim.endo),0); + + kbtl.progress(prgs); + kbtl.play(); + + l.data('kbtl',kbtl); + } +}); + +})(jQuery); \ No newline at end of file diff --git a/plugins/revslider/public/assets/js/extensions/source/revolution.extension.layeranimation.js b/plugins/revslider/public/assets/js/extensions/source/revolution.extension.layeranimation.js new file mode 100644 index 0000000..f222cef --- /dev/null +++ b/plugins/revslider/public/assets/js/extensions/source/revolution.extension.layeranimation.js @@ -0,0 +1,1349 @@ +/******************************************** + * REVOLUTION 5.0 EXTENSION - LAYER ANIMATION + * @version: 1.0.1 (06.08.2015) + * @requires jquery.themepunch.revolution.js + * @author ThemePunch +*********************************************/ + +(function($) { + +var _R = jQuery.fn.revolution; + +/////////////////////////////////////////// +// EXTENDED FUNCTIONS AVAILABLE GLOBAL // +/////////////////////////////////////////// +jQuery.extend(true,_R, { + + // MAKE SURE THE ANIMATION ENDS WITH A CLEANING ON MOZ TRANSFORMS + animcompleted : function(_nc,opt) { + var t = _nc.data('videotype'), + ap = _nc.data('autoplay'), + an = _nc.data('autoplayonlyfirsttime'); + + + if (t!=undefined && t!="none") + if (ap==true || ap=="true" || ap=="on" || ap=="1sttime" || an) { + _R.playVideo(_nc,opt); + if ( an || ap=="1sttime") { + _nc.data('autoplayonlyfirsttime',false); + _nc.data('autoplay',"off"); + } + } else + if (ap=="no1sttime") + _nc.data('autoplay','on'); + }, + + /******************************************************** + - PREPARE AND DEFINE STATIC LAYER DIRECTIONS - + *********************************************************/ + handleStaticLayers : function(_nc,opt) { + var s = parseInt(_nc.data('startslide'),0), + e = parseInt(_nc.data('endslide'),0); + if (s < 0) + s=0; + if (e <0 ) + e = opt.slideamount; + if (s===0 && e===opt.slideamount-1) + e = opt.slideamount+1; + _nc.data('startslide',s); + _nc.data('endslide',e); + }, + + /************************************ + ANIMATE ALL CAPTIONS + *************************************/ + animateTheCaptions : function(nextli, opt,recalled,mtl) { + var base_offsetx = opt.sliderType==="carousel" ? 0 : opt.width/2 - (opt.gridwidth[opt.curWinRange]*opt.bw)/2, + base_offsety=0, + index = nextli.data('index'); + + opt.layers = opt.layers || new Object(); + opt.layers[index] = opt.layers[index] || nextli.find('.tp-caption') + opt.layers["static"] = opt.layers["static"] || opt.c.find('.tp-static-layers').find('.tp-caption'); + + var allcaptions = new Array; + + opt.conh = opt.c.height(); + opt.conw = opt.c.width(); + opt.ulw = opt.ul.width(); + opt.ulh = opt.ul.height(); + + /* ENABLE DEBUG MODE */ + if (opt.debugMode) { + nextli.addClass("indebugmode"); + nextli.find('.helpgrid').remove(); + opt.c.find('.hglayerinfo').remove(); + nextli.append('
        '); + var hg = nextli.find('.helpgrid'); + hg.append('
        Zoom:'+(Math.round(opt.bw*100))+'%     Device Level:'+opt.curWinRange+'    Grid Preset:'+opt.gridwidth[opt.curWinRange]+'x'+opt.gridheight[opt.curWinRange]+'
        ') + opt.c.append('
        ') + hg.append('
        '); + } + + jQuery.each(allcaptions,function(i) { + var _nc = jQuery(this); + punchgs.TweenLite.set(_nc.find('.tp-videoposter'),{autoAlpha:1}); + punchgs.TweenLite.set(_nc.find('iframe'),{autoAlpha:0}); + }) + + // COLLECT ALL CAPTIONS + jQuery.each(opt.layers[index], function(i,a) { allcaptions.push(a); }); + jQuery.each(opt.layers["static"], function(i,a) { allcaptions.push(a); }); + + // GO THROUGH ALL CAPTIONS, AND MANAGE THEM + jQuery.each(allcaptions,function(i) { + + _R.animateSingleCaption(jQuery(this),opt,base_offsetx,base_offsety,i,recalled) + }); + + var bt=jQuery('body').find('#'+opt.c.attr('id')).find('.tp-bannertimer'); + bt.data('opt',opt); + + + if (mtl != undefined) setTimeout(function() { + mtl.resume(); + },30); + }, + + /*************************************** + - ANIMATE THE CAPTIONS - + ***************************************/ + animateSingleCaption : function(_nc,opt,offsetx,offsety,i,recalled,triggerforce) { + + var internrecalled = recalled, + staticdirection = staticLayerStatus(_nc,opt,"in",true), + _pw = _nc.data('_pw') || _nc.closest('.tp-parallax-wrap'), + _lw = _nc.data('_lw') || _nc.closest('.tp-loop-wrap'), + _mw = _nc.data('_mw') || _nc.closest('.tp-mask-wrap'), + _responsive = _nc.data('responsive') || "on", + _respoffset = _nc.data('responsive_offset') || "on", + _ba = _nc.data('basealign') || "grid", + _gw = _ba==="grid" ? opt.width : opt.ulw, //opt.conw, + _gh = _ba==="grid" ? opt.height : opt.ulh; //opt.conh; + + + + if (!_nc.data('_pw')) { + _nc.data('_pw',_pw); + _nc.data('_lw',_lw); + _nc.data('_mw',_mw); + } + + if (opt.sliderLayout=="fullscreen") + offsety = _gh/2 - (opt.gridheight[opt.curWinRange]*opt.bh)/2; + + if (opt.autoHeight=="on" || (opt.minHeight!=undefined && opt.minHeight>0)) + offsety = opt.conh/2 - (opt.gridheight[opt.curWinRange]*opt.bh)/2;; + + if (offsety<0) offsety=0; + + + // LAYER GRID FOR DEBUGGING + if (opt.debugMode) { + _nc.closest('li').find('.helpgrid').css({top:offsety+"px", left:offsetx+"px"}); + var linfo = opt.c.find('.hglayerinfo'); + _nc.on("hover, mouseenter",function() { + var ltxt = "", + spa = 0; + + jQuery.each(_nc.data(),function(key,val) { + if (typeof val !== "object") { + + ltxt = ltxt + ''+key+":"+val+"    "; + + } + }); + linfo.html(ltxt); + }); + } + /* END OF DEBUGGING */ + + + var handlecaption=0, + layervisible = makeArray(_nc.data('visibility'),opt)[opt.curWinRange] || makeArray(_nc.data('visibility'),opt) || "on"; + + // HIDE CAPTION IF RESOLUTION IS TOO LOW + if (layervisible=="off" || (_gw
        '); + if (vidw!="100%") + _nc.css({minWidth:vidw+"px",minHeight:vidh+"px"}); + else + _nc.css({width:"100%",height:"100%"}); + _nc.removeClass("tp-videolayer"); + } + + // IF IT IS AN IMAGE + if (_nc.find('img').length>0) { + var im = _nc.find('img'); + _nc.data('layertype',"image"); + if (im.width()==0) im.css({width:"auto"}); + if (im.height()==0) im.css({height:"auto"}); + + + + + if (im.data('ww') == undefined && im.width()>0) im.data('ww',im.width()); + if (im.data('hh') == undefined && im.height()>0) im.data('hh',im.height()); + + var ww = im.data('ww'), + hh = im.data('hh'), + fuw = _ba =="slide" ? opt.ulw : opt.gridwidth[opt.curWinRange], + fuh = _ba =="slide" ? opt.ulh : opt.gridheight[opt.curWinRange], + + ww = makeArray(im.data('ww'),opt)[opt.curWinRange] || makeArray(im.data('ww'),opt) || "auto", + hh = makeArray(im.data('hh'),opt)[opt.curWinRange] || makeArray(im.data('hh'),opt) || "auto"; + + ww = ww === "full" ? fuw : parseFloat(ww); + hh = hh === "full" ? fuh : parseFloat(hh); + + if (ww==undefined) ww=0; + if (hh==undefined) hh=0; + + if (_responsive!=="off") { + im.width(ww*opt.bw); + im.height(hh*opt.bh); + } else { + im.width(ww); + im.height(hh); + } + } + + if (_ba==="slide") { + offsetx = 0; + offsety=0; + } + + + // IF IT IS A VIDEO LAYER + if (_nc.hasClass("tp-videolayer") || _nc.find('iframe').length>0 || _nc.find('video').length>0) { + + _nc.data('layertype',"video"); + _R.manageVideoLayer(_nc,opt,recalled,internrecalled); + if (!recalled && !internrecalled) { + var t = _nc.data('videotype'); + _R.resetVideo(_nc,opt); + } + + var asprat = _nc.data('aspectratio'); + if (asprat!=undefined && asprat.split(":").length>1) + _R.prepareCoveredVideo(asprat,opt,_nc); + + var im = _nc.find('iframe') ? _nc.find('iframe') : im = _nc.find('video'), + html5vid = _nc.find('iframe') ? false : true, + yvcover = _nc.hasClass('coverscreenvideo'); + + im.css({display:"block"}); + + // SET WIDTH / HEIGHT + if (_nc.data('videowidth') == undefined) { + _nc.data('videowidth',im.width()); + _nc.data('videoheight',im.height()); + } + var ww = makeArray(_nc.data('videowidth'),opt)[opt.curWinRange] || makeArray(_nc.data('videowidth'),opt) || "auto", + hh = makeArray(_nc.data('videoheight'),opt)[opt.curWinRange] || makeArray(_nc.data('videoheight'),opt) || "auto", + getobj; + + ww = parseFloat(ww); + hh = parseFloat(hh); + + + // READ AND WRITE CSS SETTINGS OF IFRAME AND VIDEO FOR RESIZING ELEMENST ON DEMAND + if (_nc.data('cssobj')===undefined) { + getobj = getcssParams(_nc,0); + _nc.data('cssobj',getobj); + } + + var ncobj = setResponsiveCSSValues(_nc.data('cssobj'),opt); + + + // IE8 FIX FOR AUTO LINEHEIGHT + if (ncobj.lineHeight=="auto") ncobj.lineHeight = ncobj.fontSize+4; + + if (!_nc.hasClass('fullscreenvideo') && !yvcover) { + punchgs.TweenLite.set(_nc,{ + paddingTop: Math.round((ncobj.paddingTop * opt.bh)) + "px", + paddingBottom: Math.round((ncobj.paddingBottom * opt.bh)) + "px", + paddingLeft: Math.round((ncobj.paddingLeft* opt.bw)) + "px", + paddingRight: Math.round((ncobj.paddingRight * opt.bw)) + "px", + marginTop: (ncobj.marginTop * opt.bh) + "px", + marginBottom: (ncobj.marginBottom * opt.bh) + "px", + marginLeft: (ncobj.marginLeft * opt.bw) + "px", + marginRight: (ncobj.marginRight * opt.bw) + "px", + borderTopWidth: Math.round(ncobj.borderTopWidth * opt.bh) + "px", + borderBottomWidth: Math.round(ncobj.borderBottomWidth * opt.bh) + "px", + borderLeftWidth: Math.round(ncobj.borderLeftWidth * opt.bw) + "px", + borderRightWidth: Math.round(ncobj.borderRightWidth * opt.bw) + "px", + width:(ww*opt.bw)+"px", + height:(hh*opt.bh)+"px" + }); + } else { + offsetx=0; offsety=0; + _nc.data('x',0) + _nc.data('y',0) + + var ovhh = _gh; + if (opt.autoHeight=="on") ovhh = opt.conh + _nc.css({'width':_gw, 'height':ovhh }); + + + } + + if ((html5vid == false && !yvcover) || ((_nc.data('forcecover')!=1 && !_nc.hasClass('fullscreenvideo') && !yvcover))) { + im.width(ww*opt.bw); + im.height(hh*opt.bh); + } + } // END OF POSITION AND STYLE READ OUTS OF VIDEO + + + + // ALL WRAPPED REKURSIVE ELEMENTS SHOULD BE RESPONSIVE HANDLED + _nc.find('.tp-resizeme, .tp-resizeme *').each(function() { + calcCaptionResponsive(jQuery(this),opt,"rekursive",_responsive); + }); + + // ALL ELEMENTS IF THE MAIN ELEMENT IS REKURSIVE RESPONSIVE SHOULD BE REPONSIVE HANDLED + if (_nc.hasClass("tp-resizeme")) + _nc.find('*').each(function() { + calcCaptionResponsive(jQuery(this),opt,"rekursive",_responsive); + }); + + // RESPONIVE HANDLING OF CURRENT LAYER + calcCaptionResponsive(_nc,opt,0,_responsive); + + // _nc FRONTCORNER CHANGES + var ncch = _nc.outerHeight(), + bgcol = _nc.css('backgroundColor'); + sharpCorners(_nc,'.frontcorner','left','borderRight','borderTopColor',ncch,bgcol); + sharpCorners(_nc,'.frontcornertop','left','borderRight','borderBottomColor',ncch,bgcol); + sharpCorners(_nc,'.backcorner','right','borderLeft','borderBottomColor',ncch,bgcol); + sharpCorners(_nc,'.backcornertop','right','borderLeft','borderTopColor',ncch,bgcol); + + + if (opt.fullScreenAlignForce == "on") { + offsetx=0; + offsety=0; + } + + var arrobj = _nc.data('arrobj'); + if (arrobj===undefined) { + var arrobj = new Object(); + arrobj.voa = makeArray(_nc.data('voffset'),opt)[opt.curWinRange] || makeArray(_nc.data('voffset'),opt)[0]; + arrobj.hoa = makeArray(_nc.data('hoffset'),opt)[opt.curWinRange] || makeArray(_nc.data('hoffset'),opt)[0]; + arrobj.elx = makeArray(_nc.data('x'),opt)[opt.curWinRange] || makeArray(_nc.data('x'),opt)[0]; + arrobj.ely = makeArray(_nc.data('y'),opt)[opt.curWinRange] || makeArray(_nc.data('y'),opt)[0]; + } + + + // CORRECTION OF NEGATIVE VALUES FROM OLDER SLIDER + //arrobj.voa = arrobj.ely==="bottom" ? arrobj.voa * -1 : arrobj.voa; + //arrobj.hoa = arrobj.elx==="right" ? arrobj.hoa * -1 : arrobj.hoa; + + + var voa = arrobj.voa.length==0 ? 0 : arrobj.voa, + hoa = arrobj.hoa.length==0 ? 0 : arrobj.hoa, + elx = arrobj.elx.length==0 ? 0 : arrobj.elx, + ely = arrobj.ely.length==0 ? 0 : arrobj.ely, + eow = _nc.outerWidth(true), + eoh = _nc.outerHeight(true); + + + // NEED CLASS FOR FULLWIDTH AND FULLHEIGHT LAYER SETTING !! + if (eow==0 && eoh==0) { + eow = opt.ulw; + eoh = opt.ulh; + } + + var vofs= _respoffset !=="off" ? parseInt(voa,0)*opt.bw : parseInt(voa,0), + hofs= _respoffset !=="off" ? parseInt(hoa,0)*opt.bw : parseInt(hoa,0), + crw = _ba==="grid" ? opt.gridwidth[opt.curWinRange]*opt.bw : _gw, + crh = _ba==="grid" ? opt.gridheight[opt.curWinRange]*opt.bw : _gh; + + + + if (opt.fullScreenAlignForce == "on") { + crw = opt.ulw; + crh = opt.ulh; + } + + + // ALIGN POSITIONED ELEMENTS + elx = elx==="center" || elx==="middle" ? (crw/2 - eow/2) + hofs : elx==="left" ? hofs : elx==="right" ? (crw - eow) - hofs : _respoffset !=="off" ? elx * opt.bw : elx; + ely = ely=="center" || ely=="middle" ? (crh/2 - eoh/2) + vofs : ely =="top" ? vofs : ely=="bottom" ? (crh - eoh)-vofs : _respoffset !=="off" ? ely*opt.bw : ely; + + + // THE TRANSITIONS OF CAPTIONS + // MDELAY AND MSPEED + + + var $lts = _nc.data('lasttriggerstate'), + $cts = _nc.data('triggerstate'), + $start = _nc.data('start') || 100, + $end = _nc.data('end'), + mdelay = triggerforce ? 0 : $start==="bytrigger" || $start==="sliderenter" ? 0 : parseFloat($start)/1000, + calcx = (elx+offsetx), + calcy = (ely+offsety), + tpcapindex = _nc.css("z-Index"); + + + if (!triggerforce) + if ($lts=="reset" && $start!="bytrigger") { + _nc.data("triggerstate","on"); + _nc.data('animdirection',"in"); + $cts = "on"; + } else + if ($lts=="reset" && $start=="bytrigger") { + _nc.data("triggerstate","off"); + _nc.data('animdirection',"out"); + $cts = "off"; + } + + + // SET TOP/LEFT POSITION OF LAYER + punchgs.TweenLite.set(_pw,{zIndex:tpcapindex, top:calcy,left:calcx,overwrite:"auto"}); + + if (staticdirection == 0) internrecalled = true; + + // STATIC LAYER, THINK ON THIS !!! + if (_nc.data('timeline')!=undefined && !internrecalled) { + if (staticdirection!=2) + _nc.data('timeline').gotoAndPlay(0); + internrecalled = true; + } + + // KILL OUT ANIMATION + + if (!recalled && _nc.data('timeline_out') && staticdirection!=2 && staticdirection!=0) { + _nc.data('timeline_out').kill(); + _nc.data('outstarted',0); + } + + // TRIGGERED ELEMENTS SHOULD + if (triggerforce && _nc.data('timeline')!=undefined) { + _nc.removeData('$anims') + _nc.data('timeline').pause(0); + _nc.data('timeline').kill(); + if (_nc.data('newhoveranim')!=undefined) { + _nc.data('newhoveranim').progress(0); + _nc.data('newhoveranim').kill(); + } + _nc.removeData('timeline'); + punchgs.TweenLite.killTweensOf(_nc); + _nc.unbind('hover'); + _nc.removeClass("rs-hover-ready"); + + _nc.removeData('newhoveranim'); + + } + + var $time = _nc.data('timeline') ? _nc.data('timeline').time() : 0, + $progress = _nc.data('timeline')!==undefined ? _nc.data('timeline').progress() : 0, + tl = _nc.data('timeline') || new punchgs.TimelineLite({smoothChildTiming:true}); + + $progress = jQuery.isNumeric($progress) ? $progress: 0; + + tl.pause(); + // LAYER IS TRIGGERED ?? + + + + if ($progress<1 && _nc.data('outstarted') != 1 || staticdirection==2 || triggerforce) { + var animobject = _nc; + + if (_nc.data('mySplitText') !=undefined) _nc.data('mySplitText').revert(); + + if (_nc.data('splitin') && _nc.data('splitin').match(/chars|words|lines/g) || _nc.data('splitout') && _nc.data('splitout').match(/chars|words|lines/g)) { + var splittarget = _nc.find('a').length>0 ? _nc.find('a') : _nc; + _nc.data('mySplitText',new punchgs.SplitText(splittarget,{type:"lines,words,chars",charsClass:"tp-splitted",wordsClass:"tp-splitted",linesClass:"tp-splitted"})); + _nc.addClass("splitted"); + } + + if ( _nc.data('mySplitText') !==undefined) animobject = _nc.data('mySplitText')[_nc.data('splitin')] + + var $a = new Object(); + + // BUILD ANIMATION LIBRARY AND HOVER ANIMATION + if (!_nc.data('$anims') || triggerforce) { + var $from = newAnimObject(), + $result = newAnimObject(), + $hover = newHoverAnimObject(), + hashover = _nc.data('transform_hover')!==undefined || _nc.data('style_hover')!==undefined; + + // WHICH ANIMATION TYPE SHOULD BE USED + $result = getAnimDatas($result,_nc.data('transform_idle')); + $from = getAnimDatas($result,_nc.data('transform_in')); + if (hashover) { + $hover = getAnimDatas($hover,_nc.data('transform_hover')); + $hover = convertHoverStyle($hover,_nc.data('style_hover')); + _nc.data('hover',$hover); + } + + // DELAYS + $from.elemdelay = (_nc.data('elementdelay') == undefined) ? 0 : _nc.data('elementdelay'); + $result.anim.ease = $from.anim.ease = $from.anim.ease || punchgs.Power1.easeInOut; + + + + // HOVER ANIMATION + if (hashover && !_nc.hasClass("rs-hover-ready")) { + + _nc.addClass("rs-hover-ready"); + _nc.hover(function(e) { + var nc = jQuery(e.currentTarget), + t = nc.data('hover'), + intl = nc.data('timeline'); + + if (intl && intl.progress()==1) { + if (nc.data('newhoveranim')===undefined || nc.data('newhoveranim')==="none") + nc.data('newhoveranim',punchgs.TweenLite.to(nc,t.speed,t.anim)); + else { + nc.data('newhoveranim').progress(0); + nc.data('newhoveranim').play(); + } + } + }, + function(e) { + var nc = jQuery(e.currentTarget), + intl = nc.data('timeline'); + + if (intl && intl.progress()==1 && nc.data('newhoveranim')!=undefined) + nc.data('newhoveranim').reverse(); + }); + } + $a = new Object(); + $a.f = $from; + $a.r = $result; + _nc.data('$anims'); + } else { + $a = _nc.data('$anims'); + } + + + + // SET WRAPPING CONTAINER SIZES + var $mask_frm = getMaskDatas(_nc.data('mask_in')), + newtl = new punchgs.TimelineLite(); + + $a.f.anim.x = $a.f.anim.x * opt.bw || getBorderDirections($a.f.anim.x,opt,eow,eoh,calcy,calcx, "horizontal" ); + $a.f.anim.y = $a.f.anim.y * opt.bw || getBorderDirections($a.f.anim.y,opt,eow,eoh,calcy,calcx, "vertical" ); + + + + // IF LAYER IS NOT STATIC, OR STATIC AND NOT ANIMATED IN AT THIS LOOP + if (staticdirection != 2 || triggerforce) { + + // SPLITED ANIMATION IS IN GAME + if (animobject != _nc) { + var oldease = $a.r.anim.ease; + tl.add(punchgs.TweenLite.set(_nc, $a.r.anim)); + $a.r = newAnimObject(); + $a.r.anim.ease = oldease; + } + + $a.f.anim.visibility = "hidden"; + + newtl.eventCallback("onStart",function(){ + punchgs.TweenLite.set(_nc,{visibility:"visible"}); + // FIX VISIBLE IFRAME BUG IN SAFARI + if (_nc.data('iframes')) + _nc.find('iframe').each(function() { + punchgs.TweenLite.set(jQuery(this),{autoAlpha:1}); + }) + punchgs.TweenLite.set(_pw,{visibility:"visible"}); + var data={}; + data.layer = _nc; + data.eventtype = "enterstage"; + data.layertype = _nc.data('layertype'); + data.layersettings = _nc.data(); + opt.c.trigger("revolution.layeraction",data) + }); + + newtl.eventCallback("onComplete",function() { + var data={}; + data.layer = _nc; + data.eventtype = "enteredstage"; + data.layertype = _nc.data('layertype'); + data.layersettings = _nc.data(); + opt.c.trigger("revolution.layeraction",data); + _R.animcompleted(_nc,opt); + }); + + + tl.add(newtl.staggerFromTo(animobject,$a.f.speed,$a.f.anim,$a.r.anim,$a.f.elemdelay),mdelay); + + + // MASK ANIMATION + if ($mask_frm) { + var $mask_rsl = new Object(); + $mask_rsl.ease = $a.r.anim.ease; + $mask_rsl.overflow = $mask_frm.anim.overflow ="hidden"; + $mask_rsl.x = $mask_rsl.y = 0; + + $mask_frm.anim.x = $mask_frm.anim.x * opt.bw || getBorderDirections($mask_frm.anim.x,opt,eow,eoh,calcy,calcx,"horizontal"); + $mask_frm.anim.y = $mask_frm.anim.y * opt.bw || getBorderDirections($mask_frm.anim.y,opt,eow,eoh,calcy,calcx,"vertical"); + + + tl.add(punchgs.TweenLite.fromTo(_mw,$a.f.speed,$mask_frm.anim,$mask_rsl,$from.elemdelay),mdelay); + } else { + tl.add(punchgs.TweenLite.set(_mw,{overflow:"visible"},$from.elemdelay),0); + } + } + + // SAVE IT TO NCAPTION BEFORE NEW STEPS WILL BE ADDED + _nc.data('timeline',tl); + + // IF THERE IS ANY EXIT ANIM DEFINED + // For Static Layers -> 1 -> In, 2-> Out 0-> Ignore -1-> Not Static + staticdirection = staticLayerStatus(_nc,opt,"in"); + + if (($progress === 0 || staticdirection==2) && $end!=="bytrigger" && !triggerforce && $end!="sliderleave") + if (($end!=undefined) && (staticdirection==-1 || staticdirection==2) && ($end!=="bytriger")) + punchgs.TweenLite.delayedCall(parseInt(_nc.data('end'),0)/1000,_R.endMoveCaption,[_nc,_mw,_pw,opt]); + else + punchgs.TweenLite.delayedCall(999999,_R.endMoveCaption,[_nc,_mw,_pw,opt]); + + + // SAVE THE TIMELINE IN DOM ELEMENT + + tl = _nc.data('timeline'); + + if (_nc.data('loopanimation')=="on") callCaptionLoops(_lw,opt.bw); + + + if ($start!="sliderenter" && (staticdirection==-1 || staticdirection==1 || triggerforce || (staticdirection==0 && $progress<1 && _nc.hasClass("rev-static-visbile")))) + if (($progress<1 && $progress>0) || + ($progress==0 && $start!="bytrigger" && $lts!="keep") || + ($progress==0 && $start!="bytrigger" && $lts=="keep" && $cts=="on") || + ($start=="bytrigger" && $lts=="keep" && $cts=="on")) + tl.resume($time); + } + + //punchgs.TweenLite.set(_mw,{width:eow, height:eoh}); + if (_nc.data('loopanimation')=="on") punchgs.TweenLite.set(_lw,{minWidth:eow,minHeight:eoh}); + + if (_nc.data('slidelink')!=0 && (_nc.data('slidelink')==1 || _nc.hasClass("slidelink"))) { + punchgs.TweenLite.set(_mw,{width:"100%", height:"100%"}); + _nc.data('slidelink',1); + } else { + punchgs.TweenLite.set(_mw,{width:"auto", height:"auto"}); + _nc.data('slidelink',0); + } + }, + + ////////////////////////////// + // MOVE OUT THE CAPTIONS // + //////////////////////////// + endMoveCaption : function(_nc,_mw,_pw,opt) { + + _mw = _mw || _nc.data('_mw'); + _pw = _pw || _nc.data('_pw'); + + // Kill TimeLine of "in Animation" + _nc.data('outstarted',1); + + _nc.data('timeline').pause(); + + var tl = new punchgs.TimelineLite(), + subtl = new punchgs.TimelineLite(), + newmasktl = new punchgs.TimelineLite(), + $from = getAnimDatas(newAnimObject(),_nc.data('transform_in')), + $to = _nc.data('transform_out') ? getAnimDatas(newEndAnimObject(),_nc.data('transform_out')) : getAnimDatas(newEndAnimObject(),_nc.data('transform_in')), + animobject = _nc.data('splitout') && _nc.data('splitout').match(/words|chars|lines/g) ? _nc.data('mySplitText')[_nc.data('splitout')] : _nc, + elemdelay = (_nc.data('endelementdelay') == undefined) ? 0 : _nc.data('endelementdelay'), + iw = _nc.innerWidth(), + ih = _nc.innerHeight(), + p = _pw.position(); + + // IF REVERSE AUTO ANIMATION ENABLED + if (_nc.data('transform_out') && _nc.data('transform_out').match(/auto:auto/g)) { + $from.speed = $to.speed; + $from.anim.ease = $to.anim.ease; + $to = $from; + } + + var $mask_to = getMaskDatas(_nc.data('mask_out')); + + $to.anim.x = $to.anim.x * opt.bw || getBorderDirections($to.anim.x,opt,iw,ih,p.top,p.left,"horizontal"); + $to.anim.y = $to.anim.y * opt.bw || getBorderDirections($to.anim.y,opt,iw,ih,p.top,p.left,"vertical"); + + subtl.eventCallback("onStart",function(){ + var data={}; + data.layer = _nc; + data.eventtype = "leavestage"; + data.layertype = _nc.data('layertype'); + data.layersettings = _nc.data(); + opt.c.trigger("revolution.layeraction",data); + }); + + subtl.eventCallback("onComplete",function(){ + punchgs.TweenLite.set(_nc,{visibility:"hidden"}); + punchgs.TweenLite.set(_pw,{visibility:"hidden"}); + var data={}; + data.layer = _nc; + data.eventtype = "leftstage"; + data.layertype = _nc.data('layertype'); + data.layersettings = _nc.data(); + opt.c.trigger("revolution.layeraction",data); + }); + + tl.add(subtl.staggerTo(animobject,$to.speed,$to.anim,elemdelay),0); + + // MASK ANIMATION + if ($mask_to) { + $mask_to.anim.ease = $to.anim.ease; + $mask_to.anim.overflow = "hidden"; + + $mask_to.anim.x = $mask_to.anim.x * opt.bw || getBorderDirections($mask_to.anim.x,opt,iw,ih,p.top,p.left,"horizontal"); + $mask_to.anim.y = $mask_to.anim.y * opt.bw || getBorderDirections($mask_to.anim.y,opt,iw,ih,p.top,p.left,"vertical"); + + + tl.add(newmasktl.to(_mw,$to.speed,$mask_to.anim,elemdelay),0); + } else { + tl.add(newmasktl.set(_mw,{overflow:"visible",overwrite:"auto"},elemdelay),0); + } + + _nc.data('timeline_out',tl); + }, + + ////////////////////////// + // REMOVE THE CAPTIONS // + ///////////////////////// + removeTheCaptions : function(actli,opt) { + var removetime = 0, + index = actli.data('index'), + allcaptions = new Array; + + // COLLECT ALL CAPTIONS + jQuery.each(opt.layers[index], function(i,a) { allcaptions.push(a); }); + jQuery.each(opt.layers["static"], function(i,a) { allcaptions.push(a); }); + punchgs.TweenLite.killDelayedCallsTo(_R.endMoveCaption); + + // GO THROUGH ALL CAPTIONS, AND MANAGE THEM + jQuery.each(allcaptions,function(i) { + var _nc=jQuery(this), + stat = staticLayerStatus(_nc,opt,"out"); + if (stat != 0 ) { //0 == ignore + killCaptionLoops(_nc); + clearTimeout(_nc.data('videoplaywait')); + if (_R.stopVideo) _R.stopVideo(_nc,opt); + _R.endMoveCaption(_nc,null,null,opt) + opt.playingvideos = []; + opt.lastplayedvideos = []; + } + }); + } +}); + + + + + +/********************************************************************************************** + - HELPER FUNCTIONS FOR LAYER TRANSFORMS - +**********************************************************************************************/ + + + +///////////////////////////////////// +// - CREATE ANIMATION OBJECT - // +///////////////////////////////////// +var newAnimObject = function() { + var a = new Object(); + a.anim = new Object(); + a.anim.x=0; + a.anim.y=0; + a.anim.z=0; + a.anim.rotationX = 0; + a.anim.rotationY = 0; + a.anim.rotationZ = 0; + a.anim.scaleX = 1; + a.anim.scaleY = 1; + a.anim.skewX = 0; + a.anim.skewY = 0; + a.anim.opacity=1; + a.anim.transformOrigin = "50% 50%"; + a.anim.transformPerspective = 600; + a.anim.rotation = 0; + a.anim.ease = punchgs.Power3.easeOut; + a.anim.force3D = "auto"; + a.speed = 0.3; + a.anim.autoAlpha = 1; + a.anim.visibility = "visible"; + a.anim.overwrite = "all"; + return a; +} + +var newEndAnimObject = function() { + var a = new Object(); + a.anim = new Object(); + a.anim.x=0; + a.anim.y=0; + a.anim.z=0; + return a; +} + +var newHoverAnimObject = function() { + var a = new Object(); + a.anim = new Object(); + a.speed = 0.2; + return a; +} + +var animDataTranslator = function(val,defval) { + + if (jQuery.isNumeric(parseFloat(val))) { + return parseFloat(val); + } else + if (val===undefined || val==="inherit") { + return defval; + } else + if (val.split("{").length>1) { + var min = val.split(","), + max = parseFloat(min[1].split("}")[0]); + min = parseFloat(min[0].split("{")[1]); + val = Math.random()*(max-min) + min; + } + return val; +} + +var getBorderDirections = function (x,o,w,h,top,left,direction) { + + if (!jQuery.isNumeric(x) && x.match(/%]/g)) { + x = x.split("[")[1].split("]")[0]; + if (direction=="horizontal") + x = (w+2)*parseInt(x,0)/100; + else + if (direction=="vertical") + x = (h+2)*parseInt(x,0)/100; + } else { + + + x = x === "layer_left" ? (0-w) : x === "layer_right" ? w : x; + x = x === "layer_top" ? (0-h) : x==="layer_bottom" ? h : x; + x = x === "left" || x==="stage_left" ? (0-w-left) : x === "right" || x==="stage_right" ? o.conw-left : x === "center" || x === "stage_center" ? (o.conw/2 - w/2)-left : x; + x = x === "top" || x==="stage_top" ? (0-h-top) : x==="bottom" || x==="stage_bottom" ? o.conh-top : x === "middle" || x === "stage_middle" ? (o.conh/2 - h/2)-top : x; + } + + return x; +} + +/////////////////////////////////////////////////// +// ANALYSE AND READ OUT DATAS FROM HTML CAPTIONS // +/////////////////////////////////////////////////// +var getAnimDatas = function(frm,data) { + var o = new Object(); + o = jQuery.extend(true,{},o, frm); + if (data === undefined) + return o; + + var customarray = data.split(';'); + jQuery.each(customarray,function(index,pa) { + var p = pa.split(":") + var w = p[0], + v = p[1]; + if (w=="rotationX" || w=="rX") o.anim.rotationX = animDataTranslator(v,o.anim.rotationX)+"deg"; + if (w=="rotationY" || w=="rY") o.anim.rotationY = animDataTranslator(v,o.anim.rotationY)+"deg"; + if (w=="rotationZ" || w=="rZ") o.anim.rotation = animDataTranslator(v,o.anim.rotationZ)+"deg"; + if (w=="scaleX" || w=="sX") o.anim.scaleX = animDataTranslator(v,o.anim.scaleX); + if (w=="scaleY" || w=="sY") o.anim.scaleY = animDataTranslator(v,o.anim.scaleY); + if (w=="opacity" || w=="o") o.anim.opacity = animDataTranslator(v,o.anim.opacity); + if (w=="skewX" || w=="skX") o.anim.skewX = animDataTranslator(v,o.anim.skewX); + if (w=="skewY" || w=="skY") o.anim.skewY = animDataTranslator(v,o.anim.skewY); + if (w=="x") o.anim.x = animDataTranslator(v,o.anim.x); + if (w=="y") o.anim.y = animDataTranslator(v,o.anim.y); + if (w=="z") o.anim.z = animDataTranslator(v,o.anim.z); + if (w=="transformOrigin" || w=="tO") o.anim.transformOrigin = v.toString(); + if (w=="transformPerspective" || w=="tP") o.anim.transformPerspective=parseInt(v,0); + if (w=="speed" || w=="s") o.speed = parseFloat(v)/1000; + if (w=="ease" || w=="e") o.anim.ease = v; + + }) + + return o; +} + +///////////////////////////////// +// BUILD MASK ANIMATION OBJECT // +///////////////////////////////// +var getMaskDatas = function(d) { + if (d === undefined) + return false; + + var o = new Object(); + o.anim = new Object(); + + jQuery.each(d.split(';'),function(index,param) { + param = param.split(":") + var w = param[0], + v = param[1]; + if (w=="x") o.anim.x = v; + if (w=="y") o.anim.y = v; + if (w=="s") o.speed = parseFloat(v)/1000; + if (w=="e" || w=="ease") o.anim.ease = v; + }); + + return o; +} + + + + +//////////////////////// +// SHOW THE CAPTION // +/////////////////////// + +var makeArray = function(obj,opt,show) { + + if (obj==undefined) obj = 0; + + if (!jQuery.isArray(obj) && jQuery.type(obj)==="string" && (obj.split(",").length>1 || obj.split("[").length>1)) { + obj = obj.replace("[",""); + obj = obj.replace("]",""); + var newobj = obj.match(/'/g) ? obj.split("',") : obj.split(","); + obj = new Array(); + jQuery.each(newobj,function(index,element) { + element = element.replace("'",""); + element = element.replace("'",""); + obj.push(element); + }) + } else { + var tempw = obj; + if (!jQuery.isArray(obj) ) { + obj = new Array(); + obj.push(tempw); + } + } + + var tempw = obj[obj.length-1]; + + if (obj.length=ai) || (s == ai) || (e == ai)){ + if (!dontmod) { + _nc.addClass("rev-static-visbile"); + _nc.removeClass("rev-static-hidden"); + } + a = 1; + } else + a = 0; + + // IF STATIC ITEM ALREADY VISIBLE + } else { + if ((e==ai) || (s > ai) || (e < ai)) + a = 2; + else + a = 0; + } + } else { + // IF STATIC ITEM CURRENTLY NOT VISIBLE + if (_nc.hasClass("rev-static-visbile")) { + if ((s > ai) || + (e < ai)) { + a = 2; + if (!dontmod) { + _nc.removeClass("rev-static-visbile"); + _nc.addClass("rev-static-hidden"); + } + } else { + a = 0; + } + } else { + a = 2; + } + } + } + + return a; // 1 -> In, 2-> Out 0-> Ignore -1-> Not Static +} + + + +var convertHoverStyle = function(t,s) { + if (s===undefined) return t; + s = s.replace("c:","color:"); + s = s.replace("bg:","background-color:"); + s = s.replace("bw:","border-width:"); + s = s.replace("bc:","border-color:"); + s = s.replace("br:","borderRadius:"); + s = s.replace("bs:","border-style:"); + s = s.replace("td:","text-decoration:"); + + jQuery.each(s.split(";"),function(key,cont){ + var attr = cont.split(":"); + if (attr[0].length>0) + t.anim[attr[0]] = attr[1]; + + + }) + + return t; + +} +//////////////////////////////////////////////// +// - GET CSS ATTRIBUTES OF ELEMENT - // +//////////////////////////////////////////////// +var getcssParams = function(nc,level) { + + var obj = new Object(), + gp = false, + pc; + + // CHECK IF CURRENT ELEMENT SHOULD RESPECT REKURSICVE RESIZES, AND SHOULD OWN THE SAME ATTRIBUTES FROM PARRENT ELEMENT + if (level=="rekursive") { + pc = nc.closest('.tp-caption'); + if (pc && nc.css("fontSize") === pc.css("fontSize")) + gp = true; + } + + obj.basealign = nc.data('basealign') || "grid"; + obj.fontSize = gp ? pc.data('fontsize')===undefined ? parseInt(pc.css('fontSize'),0) || 0 : pc.data('fontsize') : nc.data('fontsize')===undefined ? parseInt(nc.css('fontSize'),0) || 0 : nc.data('fontsize'); + obj.fontWeight = gp ? pc.data('fontweight')===undefined ? parseInt(pc.css('fontWeight'),0) || 0 : pc.data('fontweight') : nc.data('fontweight')===undefined ? parseInt(nc.css('fontWeight'),0) || 0 : nc.data('fontweight'); + obj.whiteSpace = gp ? pc.data('whitespace')===undefined ? pc.css('whitespace') || "normal" : pc.data('whitespace') : nc.data('whitespace')===undefined ? nc.css('whitespace') || "normal" : nc.data('whitespace'); + + obj.lineHeight = gp ? pc.data('lineheight')===undefined ? parseInt(pc.css('lineHeight'),0) || 0 : pc.data('lineheight') : nc.data('lineheight')===undefined ? parseInt(nc.css('lineHeight'),0) || 0 : nc.data('lineheight'); + obj.letterSpacing = gp ? pc.data('letterspacing')===undefined ? parseFloat(pc.css('letterSpacing'),0) || 0 : pc.data('letterspacing') : nc.data('letterspacing')===undefined ? parseFloat(nc.css('letterSpacing')) || 0 : nc.data('letterspacing'); + + obj.paddingTop = nc.data('paddingtop')===undefined ? parseInt(nc.css('paddingTop'),0) || 0 : nc.data('paddingtop'); + obj.paddingBottom = nc.data('paddingbottom')===undefined ? parseInt(nc.css('paddingBottom'),0) || 0 : nc.data('paddingbottom'); + obj.paddingLeft = nc.data('paddingleft')===undefined ? parseInt(nc.css('paddingLeft'),0) || 0 : nc.data('paddingleft'); + obj.paddingRight = nc.data('paddingright')===undefined ? parseInt(nc.css('paddingRight'),0) || 0 : nc.data('paddingright'); + + obj.marginTop = nc.data('margintop')===undefined ? parseInt(nc.css('marginTop'),0) || 0 : nc.data('margintop'); + obj.marginBottom = nc.data('marginbottom')===undefined ? parseInt(nc.css('marginBottom'),0) || 0 : nc.data('marginbottom'); + obj.marginLeft = nc.data('marginleft')===undefined ? parseInt(nc.css('marginLeft'),0) || 0 : nc.data('marginleft'); + obj.marginRight = nc.data('marginright')===undefined ? parseInt(nc.css('marginRight'),0) || 0 : nc.data('marginright'); + + obj.borderTopWidth = nc.data('bordertopwidth')===undefined ? parseInt(nc.css('borderTopWidth'),0) || 0 : nc.data('bordertopwidth'); + obj.borderBottomWidth = nc.data('borderbottomwidth')===undefined ? parseInt(nc.css('borderBottomWidth'),0) || 0 : nc.data('borderbottomwidth'); + obj.borderLeftWidth = nc.data('borderleftwidth')===undefined ? parseInt(nc.css('borderLeftWidth'),0) || 0 : nc.data('borderleftwidth'); + obj.borderRightWidth = nc.data('borderrightwidth')===undefined ? parseInt(nc.css('borderRightWidth'),0) || 0 : nc.data('borderrightwidth'); + + if (level!="rekursive") { + obj.color = nc.data('color')===undefined ? "nopredefinedcolor" : nc.data('color'); + obj.whiteSpace = gp ? pc.data('whitespace')===undefined ? pc.css('whiteSpace') || "nowrap" : pc.data('whitespace') : nc.data('whitespace')===undefined ? nc.css('whiteSpace') || "nowrap" : nc.data('whitespace'); + obj.minWidth = nc.data('width')===undefined ? parseInt(nc.css('minWidth'),0) || 0 : nc.data('width'); + obj.minHeight = nc.data('height')===undefined ? parseInt(nc.css('minHeight'),0) || 0 : nc.data('height'); + obj.maxWidth = nc.data('width')===undefined ? parseInt(nc.css('maxWidth'),0) || "none" : nc.data('width'); + obj.maxHeight = nc.data('height')===undefined ? parseInt(nc.css('maxHeight'),0) || "none" : nc.data('height'); + + obj.wan = nc.data('wan')===undefined ? parseInt(nc.css('-webkit-transition'),0) || "none" : nc.data('wan'); + obj.moan = nc.data('moan')===undefined ? parseInt(nc.css('-moz-animation-transition'),0) || "none" : nc.data('moan'); + obj.man = nc.data('man')===undefined ? parseInt(nc.css('-ms-animation-transition'),0) || "none" : nc.data('man'); + obj.ani = nc.data('ani')===undefined ? parseInt(nc.css('transition'),0) || "none" : nc.data('ani'); + } + + return obj; +} + +// READ SINGLE OR ARRAY VALUES OF OBJ CSS ELEMENTS +var setResponsiveCSSValues = function(obj,opt) { + var newobj = new Object(); + + jQuery.each(obj,function(key,val){ + + newobj[key] = makeArray(val,opt)[opt.curWinRange] || obj[key]; + }) + return newobj; +} + +var minmaxconvert = function(a,m,r,fr) { + + a = jQuery.isNumeric(a) ? (a * m)+"px" : a; + a = a==="full" ? fr : a==="auto" || a==="none" ? r : a; + return a; + +} + +///////////////////////////////////////////////////////////////// +// - CALCULATE THE RESPONSIVE SIZES OF THE CAPTIONS - // +///////////////////////////////////////////////////////////////// +var calcCaptionResponsive = function(nc,opt,level,responsive) { + var getobj; + + if (nc.data('cssobj')===undefined) { + getobj = getcssParams(nc,level); + nc.data('cssobj',getobj); + } else + getobj = nc.data('cssobj'); + + var obj = setResponsiveCSSValues(getobj,opt); + + var bw=opt.bw, + bh=opt.bh; + + if (responsive==="off") { + bw=1; + bh=1; + } + + // IE8 FIX FOR AUTO LINEHEIGHT + if (obj.lineHeight=="auto") obj.lineHeight = obj.fontSize+4; + + + if (!nc.hasClass("tp-splitted")) { + + nc.css("-webkit-transition", "none"); + nc.css("-moz-transition", "none"); + nc.css("-ms-transition", "none"); + nc.css("transition", "none"); + + punchgs.TweenLite.set(nc,{ + + fontSize: Math.round((obj.fontSize * bw))+"px", + fontWeight: obj.fontWeight, + letterSpacing:Math.floor((obj.letterSpacing * bw))+"px", + paddingTop: Math.round((obj.paddingTop * bh)) + "px", + paddingBottom: Math.round((obj.paddingBottom * bh)) + "px", + paddingLeft: Math.round((obj.paddingLeft* bw)) + "px", + paddingRight: Math.round((obj.paddingRight * bw)) + "px", + marginTop: (obj.marginTop * bh) + "px", + marginBottom: (obj.marginBottom * bh) + "px", + marginLeft: (obj.marginLeft * bw) + "px", + marginRight: (obj.marginRight * bw) + "px", + borderTopWidth: Math.round(obj.borderTopWidth * bh) + "px", + borderBottomWidth: Math.round(obj.borderBottomWidth * bh) + "px", + borderLeftWidth: Math.round(obj.borderLeftWidth * bw) + "px", + borderRightWidth: Math.round(obj.borderRightWidth * bw) + "px", + lineHeight: Math.round(obj.lineHeight * bh) + "px", + overwrite:"auto"}); + + if (level!="rekursive") { + + + + var winw = obj.basealign =="slide" ? opt.ulw : opt.gridwidth[opt.curWinRange], + winh = obj.basealign =="slide" ? opt.ulh : opt.gridheight[opt.curWinRange], + maxw = minmaxconvert(obj.maxWidth,bw,"none",winw), + maxh = minmaxconvert(obj.maxHeight,bh,"none",winh), + minw = minmaxconvert(obj.minWidth,bw,"0px",winw), + minh = minmaxconvert(obj.minHeight,bh,"0px",winh); + + + punchgs.TweenLite.set(nc,{ + maxWidth:maxw, + maxHeight:maxh, + minWidth:minw, + minHeight:minh, + whiteSpace:obj.whiteSpace, + overwrite:"auto" + }); + if (obj.color!="nopredefinedcolor") + punchgs.TweenLite.set(nc,{color:obj.color,overwrite:"auto"}); + + } + + setTimeout(function() { + nc.css("-webkit-transition", nc.data('wan')); + nc.css("-moz-transition", nc.data('moan')); + nc.css("-ms-transition", nc.data('man')); + nc.css("transition", nc.data('ani')); + + },30); + } +} + + +////////////////////// +// CAPTION LOOPS // +////////////////////// +var callCaptionLoops = function(el,factor) { + + // SOME LOOPING ANIMATION ON INTERNAL ELEMENTS + if (el.hasClass("rs-pendulum")) { + if (el.data('loop-timeline')==undefined) { + el.data('loop-timeline',new punchgs.TimelineLite); + var startdeg = el.data('startdeg')==undefined ? -20 : el.data('startdeg'), + enddeg = el.data('enddeg')==undefined ? 20 : el.data('enddeg'), + speed = el.data('speed')==undefined ? 2 : el.data('speed'), + origin = el.data('origin')==undefined ? "50% 50%" : el.data('origin'), + easing = el.data('easing')==undefined ? punchgs.Power2.easeInOut : el.data('ease'); + + + startdeg = startdeg * factor; + enddeg = enddeg * factor; + + el.data('loop-timeline').append(new punchgs.TweenLite.fromTo(el,speed,{force3D:"auto",rotation:startdeg,transformOrigin:origin},{rotation:enddeg,ease:easing})); + el.data('loop-timeline').append(new punchgs.TweenLite.fromTo(el,speed,{force3D:"auto",rotation:enddeg,transformOrigin:origin},{rotation:startdeg,ease:easing,onComplete:function() { + el.data('loop-timeline').restart(); + }})); + } + + } + + // SOME LOOPING ANIMATION ON INTERNAL ELEMENTS + if (el.hasClass("rs-rotate")) { + if (el.data('loop-timeline')==undefined) { + el.data('loop-timeline',new punchgs.TimelineLite); + var startdeg = el.data('startdeg')==undefined ? 0 : el.data('startdeg'), + enddeg = el.data('enddeg')==undefined ? 360 : el.data('enddeg'); + speed = el.data('speed')==undefined ? 2 : el.data('speed'), + origin = el.data('origin')==undefined ? "50% 50%" : el.data('origin'), + easing = el.data('easing')==undefined ? punchgs.Power2.easeInOut : el.data('easing'); + + startdeg = startdeg * factor; + enddeg = enddeg * factor; + + el.data('loop-timeline').append(new punchgs.TweenLite.fromTo(el,speed,{force3D:"auto",rotation:startdeg,transformOrigin:origin},{rotation:enddeg,ease:easing,onComplete:function() { + el.data('loop-timeline').restart(); + }})); + } + + } + + // SOME LOOPING ANIMATION ON INTERNAL ELEMENTS + if (el.hasClass("rs-slideloop")) { + if (el.data('loop-timeline')==undefined) { + el.data('loop-timeline',new punchgs.TimelineLite); + var xs = el.data('xs')==undefined ? 0 : el.data('xs'), + ys = el.data('ys')==undefined ? 0 : el.data('ys'), + xe = el.data('xe')==undefined ? 0 : el.data('xe'), + ye = el.data('ye')==undefined ? 0 : el.data('ye'), + speed = el.data('speed')==undefined ? 2 : el.data('speed'), + easing = el.data('easing')==undefined ? punchgs.Power2.easeInOut : el.data('easing'); + + xs = xs * factor; + ys = ys * factor; + xe = xe * factor; + ye = ye * factor; + + el.data('loop-timeline').append(new punchgs.TweenLite.fromTo(el,speed,{force3D:"auto",x:xs,y:ys},{x:xe,y:ye,ease:easing})); + el.data('loop-timeline').append(new punchgs.TweenLite.fromTo(el,speed,{force3D:"auto",x:xe,y:ye},{x:xs,y:ys,onComplete:function() { + el.data('loop-timeline').restart(); + }})); + } + } + + // SOME LOOPING ANIMATION ON INTERNAL ELEMENTS + if (el.hasClass("rs-pulse")) { + if (el.data('loop-timeline')==undefined) { + el.data('loop-timeline',new punchgs.TimelineLite); + var zoomstart = el.data('zoomstart')==undefined ? 0 : el.data('zoomstart'), + zoomend = el.data('zoomend')==undefined ? 0 : el.data('zoomend'), + speed = el.data('speed')==undefined ? 2 : el.data('speed'), + easing = el.data('easing')==undefined ? punchgs.Power2.easeInOut : el.data('easing'); + + el.data('loop-timeline').append(new punchgs.TweenLite.fromTo(el,speed,{force3D:"auto",scale:zoomstart},{scale:zoomend,ease:easing})); + el.data('loop-timeline').append(new punchgs.TweenLite.fromTo(el,speed,{force3D:"auto",scale:zoomend},{scale:zoomstart,onComplete:function() { + el.data('loop-timeline').restart(); + }})); + } + } + + if (el.hasClass("rs-wave")) { + if (el.data('loop-timeline')==undefined) { + el.data('loop-timeline',new punchgs.TimelineLite); + + var angle= el.data('angle')==undefined ? 10 : parseInt(el.data('angle'),0), + radius = el.data('radius')==undefined ? 10 : parseInt(el.data('radius'),0), + speed = el.data('speed')==undefined ? -20 : el.data('speed'), + origin = el.data('origin')==undefined ? "50% 50%" : el.data('origin'), + ors = origin.split(" "), + oo = new Object(); + + if (ors.length>=1) { + oo.x = ors[0]; + oo.y = ors[1]; + } else { + oo.x = "50%"; + oo.y = "50%"; + } + + angle = angle*factor; + radius = radius * factor; + + var yo = (0-el.height()/2) + (radius*(-1+(parseInt(oo.y,0)/100))), + xo = (el.width())*(-0.5+(parseInt(oo.x,0)/100)), + angobj= {a:0, ang : angle, element:el, unit:radius, xoffset:xo, yoffset:yo}; + + + el.data('loop-timeline').append(new punchgs.TweenLite.fromTo(angobj,speed, + { a:360 }, + { a:0, + force3D:"auto", + ease:punchgs.Linear.easeNone, + onUpdate:function() { + + var rad = angobj.a * (Math.PI / 180); + punchgs.TweenLite.to(angobj.element,0.1,{force3D:"auto",x:angobj.xoffset+Math.cos(rad) * angobj.unit, y:angobj.yoffset+angobj.unit * (1 - Math.sin(rad))}); + + }, + onComplete:function() { + el.data('loop-timeline').restart(); + } + } + )); + } + } +} + +var killCaptionLoops = function(nextcaption) { + // SOME LOOPING ANIMATION ON INTERNAL ELEMENTS + nextcaption.find('.rs-pendulum, .rs-slideloop, .rs-pulse, .rs-wave').each(function() { + var el = jQuery(this); + if (el.data('loop-timeline')!=undefined) { + el.data('loop-timeline').pause(); + el.data('loop-timeline',null); + } + }); +} + +})(jQuery); \ No newline at end of file diff --git a/plugins/revslider/public/assets/js/extensions/source/revolution.extension.migration.js b/plugins/revslider/public/assets/js/extensions/source/revolution.extension.migration.js new file mode 100644 index 0000000..4ba485e --- /dev/null +++ b/plugins/revslider/public/assets/js/extensions/source/revolution.extension.migration.js @@ -0,0 +1,259 @@ +/***************************************************************************************************** + * jquery.themepunch.revmigrate.js - jQuery Plugin for Revolution Slider Migration from 4.x to 5.0 + * @version: 1.0.0 (18.06.2015) + * @requires jQuery v1.7 or later (tested on 1.9) + * @author ThemePunch +*****************************************************************************************************/ + + +(function($) { + +var _R = jQuery.fn.revolution; + +/////////////////////////////////////////// +// EXTENDED FUNCTIONS AVAILABLE GLOBAL // +/////////////////////////////////////////// +jQuery.extend(true,_R, { + + // OUR PLUGIN HERE :) + migration: function(container,options) { + // PREPARE THE NEW OPTIONS + options = prepOptions(options); + // PREPARE LAYER ANIMATIONS + prepLayerAnimations(container,options); + return options; + } + }); + +var prepOptions = function(o) { + + // PARALLAX FALLBACKS + if (o.parallaxLevels || o.parallaxBgFreeze) { + var p = new Object(); + p.type = o.parallax + p.levels = o.parallaxLevels; + p.bgparallax = o.parallaxBgFreeze == "on" ? "off" : "on"; + + p.disable_onmobile = o.parallaxDisableOnMobile; + o.parallax = p; + } + if (o.disableProgressBar === undefined) + o.disableProgressBar = o.hideTimerBar || "off"; + + // BASIC FALLBACKS + if (o.startwidth || o.startheight) { + o.gridwidth = o.startwidth; + o.gridheight = o.startheight; + } + + if (o.sliderType===undefined) + o.sliderType = "standard"; + + if (o.fullScreen==="on") + o.sliderLayout = "fullscreen"; + + if (o.fullWidth==="on") + o.sliderLayout = "fullwidth"; + + if (o.sliderLayout===undefined) + o.sliderLayout = "auto"; + + + // NAVIGATION ARROW FALLBACKS + if (o.navigation===undefined) { + var n = new Object(); + if (o.navigationArrows=="solo" || o.navigationArrows=="nextto") { + var a = new Object(); + a.enable = true; + a.style = o.navigationStyle || ""; + a.hide_onmobile = o.hideArrowsOnMobile==="on" ? true : false; + a.hide_onleave = o.hideThumbs >0 ? true : false; + a.hide_delay = o.hideThumbs>0 ? o.hideThumbs : 200; + a.hide_delay_mobile = o.hideNavDelayOnMobile || 1500; + a.hide_under = 0; + a.tmp = ''; + a.left = { + h_align:o.soloArrowLeftHalign, + v_align:o.soloArrowLeftValign, + h_offset:o.soloArrowLeftHOffset, + v_offset:o.soloArrowLeftVOffset + }; + a.right = { + h_align:o.soloArrowRightHalign, + v_align:o.soloArrowRightValign, + h_offset:o.soloArrowRightHOffset, + v_offset:o.soloArrowRightVOffset + }; + n.arrows = a; + } + if (o.navigationType=="bullet") { + var b = new Object(); + b.style = o.navigationStyle || ""; + b.enable=true; + b.hide_onmobile = o.hideArrowsOnMobile==="on" ? true : false; + b.hide_onleave = o.hideThumbs >0 ? true : false; + b.hide_delay = o.hideThumbs>0 ? o.hideThumbs : 200; + b.hide_delay_mobile = o.hideNavDelayOnMobile || 1500; + b.hide_under = 0; + b.direction="horizontal"; + b.h_align=o.navigationHAlign || "center"; + b.v_align=o.navigationVAlign || "bottom"; + b.space=5; + b.h_offset=o.navigationHOffset || 0; + b.v_offset=o.navigationVOffset || 20; + b.tmp=''; + n.bullets = b; + } + if (o.navigationType=="thumb") { + var t = new Object(); + t.style=o.navigationStyle || ""; + t.enable=true; + t.width=o.thumbWidth || 100; + t.height=o.thumbHeight || 50; + t.min_width=o.thumbWidth || 100; + t.wrapper_padding=2; + t.wrapper_color="#f5f5f5"; + t.wrapper_opacity=1; + t.visibleAmount=o.thumbAmount || 3; + t.hide_onmobile = o.hideArrowsOnMobile==="on" ? true : false; + t.hide_onleave = o.hideThumbs >0 ? true : false; + t.hide_delay = o.hideThumbs>0 ? o.hideThumbs : 200; + t.hide_delay_mobile = o.hideNavDelayOnMobile || 1500; + t.hide_under = 0; + t.direction="horizontal"; + t.span=false; + t.position="inner"; + t.space=2; + t.h_align=o.navigationHAlign || "center"; + t.v_align=o.navigationVAlign || "bottom"; + t.h_offset=o.navigationHOffset || 0; + t.v_offset=o.navigationVOffset || 20; + t.tmp=''; + n.thumbnails = t; + } + + o.navigation = n; + + o.navigation.keyboardNavigation=o.keyboardNavigation || "on"; + o.navigation.onHoverStop=o.onHoverStop || "on"; + o.navigation.touch = { + touchenabled:o.touchenabled || "on", + swipe_treshold : o.swipe_treshold ||75, + swipe_min_touches : o.swipe_min_touches || 1, + drag_block_vertical:o.drag_block_vertical || false + }; + + } + + o.fallbacks = { + isJoomla:o.isJoomla || false, + panZoomDisableOnMobile: o.parallaxDisableOnMobile || "off", + simplifyAll:o.simplifyAll || "on", + nextSlideOnWindowFocus:o.nextSlideOnWindowFocus || "off", + disableFocusListener:o.disableFocusListener || true + }; + + return o; + +} + +var prepLayerAnimations = function(container,opt) { + + var c = new Object(), + cw = container.width(), + ch = container.height(); + + c.skewfromleftshort = "x:-50;skX:85;o:0"; + c.skewfromrightshort = "x:50;skX:-85;o:0"; + c.sfl = "x:-50;o:0"; + c.sfr = "x:50;o:0"; + c.sft = "y:-50;o:0"; + c.sfb = "y:50;o:0"; + c.skewfromleft = "x:top;skX:85;o:0"; + c.skewfromright = "x:bottom;skX:-85;o:0"; + c.lfl = "x:top;o:0"; + c.lfr = "x:bottom;o:0"; + c.lft = "y:left;o:0"; + c.lfb = "y:right;o:0"; + c.fade = "o:0"; + var src = (Math.random()*720-360) + + + container.find('.tp-caption').each(function() { + var cp = jQuery(this), + rw = Math.random()*(cw*2)-cw, + rh = Math.random()*(ch*2)-ch, + rs = Math.random()*3, + rz = Math.random()*720-360, + rx = Math.random()*70-35, + ry = Math.random()*70-35, + ncc = cp.attr('class'); + c.randomrotate = "x:{-400,400};y:{-400,400};sX:{0,2};sY:{0,2};rZ:{-180,180};rX:{-180,180};rY:{-180,180};o:0;"; + + if (ncc.match("randomrotate")) cp.data('transform_in',c.randomrotate) + else + if (ncc.match(/\blfl\b/)) cp.data('transform_in',c.lfl) + else + if (ncc.match(/\blfr\b/)) cp.data('transform_in',c.lfr) + else + if (ncc.match(/\blft\b/)) cp.data('transform_in',c.lft) + else + if (ncc.match(/\blfb\b/)) cp.data('transform_in',c.lfb) + else + if (ncc.match(/\bsfl\b/)) cp.data('transform_in',c.sfl) + else + if (ncc.match(/\bsfr\b/)) cp.data('transform_in',c.sfr) + else + if (ncc.match(/\bsft\b/)) cp.data('transform_in',c.sft) + else + if (ncc.match(/\bsfb\b/)) cp.data('transform_in',c.sfb) + else + if (ncc.match(/\bskewfromleftshort\b/)) cp.data('transform_in',c.skewfromleftshort) + else + if (ncc.match(/\bskewfromrightshort\b/)) cp.data('transform_in',c.skewfromrightshort) + else + if (ncc.match(/\bskewfromleft\b/)) cp.data('transform_in',c.skewfromleft) + else + if (ncc.match(/\bskewfromright\b/)) cp.data('transform_in',c.skewfromright) + else + if (ncc.match(/\bfade\b/)) cp.data('transform_in',c.fade); + + if (ncc.match(/\brandomrotateout\b/)) cp.data('transform_out',c.randomrotate) + else + if (ncc.match(/\bltl\b/)) cp.data('transform_out',c.lfl) + else + if (ncc.match(/\bltr\b/)) cp.data('transform_out',c.lfr) + else + if (ncc.match(/\bltt\b/)) cp.data('transform_out',c.lft) + else + if (ncc.match(/\bltb\b/)) cp.data('transform_out',c.lfb) + else + if (ncc.match(/\bstl\b/)) cp.data('transform_out',c.sfl) + else + if (ncc.match(/\bstr\b/)) cp.data('transform_out',c.sfr) + else + if (ncc.match(/\bstt\b/)) cp.data('transform_out',c.sft) + else + if (ncc.match(/\bstb\b/)) cp.data('transform_out',c.sfb) + else + if (ncc.match(/\bskewtoleftshortout\b/)) cp.data('transform_out',c.skewfromleftshort) + else + if (ncc.match(/\bskewtorightshortout\b/)) cp.data('transform_out',c.skewfromrightshort) + else + if (ncc.match(/\bskewtoleftout\b/)) cp.data('transform_out',c.skewfromleft) + else + if (ncc.match(/\bskewtorightout\b/)) cp.data('transform_out',c.skewfromright) + else + if (ncc.match(/\bfadeout\b/)) cp.data('transform_out',c.fade); + + if (cp.data('customin')!=undefined) cp.data('transform_in',cp.data('customin')); + if (cp.data('customout')!=undefined) cp.data('transform_out',cp.data('customout')); + + }) + +} +})(jQuery); + + + + diff --git a/plugins/revslider/public/assets/js/extensions/source/revolution.extension.navigation.js b/plugins/revslider/public/assets/js/extensions/source/revolution.extension.navigation.js new file mode 100644 index 0000000..043b299 --- /dev/null +++ b/plugins/revslider/public/assets/js/extensions/source/revolution.extension.navigation.js @@ -0,0 +1,972 @@ + +/******************************************** + * REVOLUTION 5.0 EXTENSION - NAVIGATION + * @version: 1.0.1 (07.08.2015) + * @requires jquery.themepunch.revolution.js + * @author ThemePunch +*********************************************/ + +(function($) { + +var _R = jQuery.fn.revolution, + _ISM = _R.is_mobile(); + + +/////////////////////////////////////////// +// EXTENDED FUNCTIONS AVAILABLE GLOBAL // +/////////////////////////////////////////// +jQuery.extend(true,_R, { + + + hideUnHideNav : function(opt) { + var w = opt.c.width(), + a = opt.navigation.arrows, + b = opt.navigation.bullets, + c = opt.navigation.thumbnails, + d = opt.navigation.tabs; + + if (ckNO(a)) biggerNav(opt.c.find('.tparrows'),a.hide_under,w,a.hide_over); + if (ckNO(b)) biggerNav(opt.c.find('.tp-bullets'),b.hide_under,w,b.hide_over); + if (ckNO(c)) biggerNav(opt.c.parent().find('.tp-thumbs'),c.hide_under,w,c.hide_over); + if (ckNO(d)) biggerNav(opt.c.parent().find('.tp-tabs'),d.hide_under,w,d.hide_over); + + setONHeights(opt); + + }, + + resizeThumbsTabs : function(opt) { + + + if ((opt.navigation && opt.navigation.tabs.enable) || (opt.navigation && opt.navigation.thumbnails.enable)) { + var f = (jQuery(window).width()-480) / 500, + tws = new punchgs.TimelineLite(), + otab = opt.navigation.tabs, + othu = opt.navigation.thumbnails; + + tws.pause(); + f = f>1 ? 1 : f<0 ? 0 : f; + + if (ckNO(otab) && otab.width>otab.min_width) rtt(f,tws,opt.c,otab,opt.slideamount,'tab'); + if (ckNO(othu) && othu.width>othu.min_width) rtt(f,tws,opt.c,othu,opt.slideamount,'thumb'); + + tws.play(); + + setONHeights(opt); + } + return true; + }, + + + // PUT NAVIGATION IN POSITION AND MAKE SURE THUMBS AND TABS SHOWING TO THE RIGHT POSITION + manageNavigation : function(opt) { + + + var lof = _R.getHorizontalOffset(opt.c.parent(),"left"), + rof = _R.getHorizontalOffset(opt.c.parent(),"right"); + + if (ckNO(opt.navigation.bullets)) { + if (opt.sliderLayout!="fullscreen" && opt.sliderLayout!="fullwidth") { + // OFFSET ADJUSTEMENT FOR LEFT ARROWS BASED ON THUMBNAILS AND TABS OUTTER + opt.navigation.bullets.h_offset_old = opt.navigation.bullets.h_offset_old === undefined ? opt.navigation.bullets.h_offset : opt.navigation.bullets.h_offset_old; + opt.navigation.bullets.h_offset = opt.navigation.bullets.h_align==="center" ? opt.navigation.bullets.h_offset_old+lof/2 -rof/2: opt.navigation.bullets.h_offset_old+lof-rof; + } + setNavElPositions(opt.c.find('.tp-bullets'),opt.navigation.bullets); + } + + if (ckNO(opt.navigation.thumbnails)) + setNavElPositions(opt.c.parent().find('.tp-thumbs'),opt.navigation.thumbnails); + + if (ckNO(opt.navigation.tabs)) + setNavElPositions(opt.c.parent().find('.tp-tabs'),opt.navigation.tabs); + + if (ckNO(opt.navigation.arrows)) { + + if (opt.sliderLayout!="fullscreen" && opt.sliderLayout!="fullwidth") { + // OFFSET ADJUSTEMENT FOR LEFT ARROWS BASED ON THUMBNAILS AND TABS OUTTER + opt.navigation.arrows.left.h_offset_old = opt.navigation.arrows.left.h_offset_old === undefined ? opt.navigation.arrows.left.h_offset : opt.navigation.arrows.left.h_offset_old; + opt.navigation.arrows.left.h_offset = opt.navigation.arrows.left.h_align==="right" ? opt.navigation.arrows.left.h_offset_old+rof : opt.navigation.arrows.left.h_offset_old+lof; + + opt.navigation.arrows.right.h_offset_old = opt.navigation.arrows.right.h_offset_old === undefined ? opt.navigation.arrows.right.h_offset : opt.navigation.arrows.right.h_offset_old; + opt.navigation.arrows.right.h_offset = opt.navigation.arrows.right.h_align==="right" ? opt.navigation.arrows.right.h_offset_old+rof : opt.navigation.arrows.right.h_offset_old+lof; + } + setNavElPositions(opt.c.find('.tp-leftarrow.tparrows'),opt.navigation.arrows.left); + setNavElPositions(opt.c.find('.tp-rightarrow.tparrows'),opt.navigation.arrows.right); + } + + + if (ckNO(opt.navigation.thumbnails)) + moveThumbsInPosition(opt.c.parent().find('.tp-thumbs'),opt.navigation.thumbnails); + + if (ckNO(opt.navigation.tabs)) + moveThumbsInPosition(opt.c.parent().find('.tp-tabs'),opt.navigation.tabs); + }, + + + // MANAGE THE NAVIGATION + createNavigation : function(container,opt) { + + var cp = container.parent(), + _a = opt.navigation.arrows, _b = opt.navigation.bullets, _c = opt.navigation.thumbnails, _d = opt.navigation.tabs, + a = ckNO(_a), b = ckNO(_b), c = ckNO(_c), d = ckNO(_d); + + + // Initialise Keyboard Navigation if Option set so + initKeyboard(container,opt); + + // Initialise Mouse Scroll Navigation if Option set so + initMouseScroll(container,opt); + + //Draw the Arrows + if (a) initArrows(container,_a,opt); + + // BUILD BULLETS, THUMBS and TABS + opt.li.each(function(index) { + var li = jQuery(this); + if (b) addBullet(container,_b,li,opt); + if (c) addThumb(container,_c,li,'tp-thumb',opt); + if (d) addThumb(container,_d,li,'tp-tab',opt); + }); + + // LISTEN TO SLIDE CHANGE - SET ACTIVE SLIDE BULLET + container.bind('revolution.slide.onafterswap revolution.nextslide.waiting',function() { + + //cp.find('.tp-bullet, .tp-thumb, .tp-tab').removeClass("selected"); + + var si = container.find(".next-revslide").length==0 ? container.find(".active-revslide").data("index") : container.find(".next-revslide").data("index"); + + container.find('.tp-bullet').each(function() { + var _t = jQuery(this); + if (_t.data('liref')===si) + _t.addClass("selected"); + else + _t.removeClass("selected"); + }); + + cp.find('.tp-thumb, .tp-tab').each(function() { + var _t = jQuery(this); + if (_t.data('liref')===si) { + _t.addClass("selected"); + if (_t.hasClass("tp-tab")) + moveThumbsInPosition(cp.find('.tp-tabs'),_d); + else + moveThumbsInPosition(cp.find('.tp-thumbs'),_c); + } else + _t.removeClass("selected"); + + }); + + var ai = 0, + f = false; + + jQuery.each(opt.thumbs,function(i,obj) { + ai = f === false ? i : ai; + f = obj.id === si || i === si ? true : f; + }); + + + var pi = ai>0 ? ai-1 : opt.slideamount-1, + ni = (ai+1)==opt.slideamount ? 0 : ai+1; + + + if (_a.enable === true) { + var inst = _a.tmp; + jQuery.each(opt.thumbs[pi].params,function(i,obj) { + inst = inst.replace(obj.from,obj.to); + }); + _a.left.j.html(inst); + inst = _a.tmp; + jQuery.each(opt.thumbs[ni].params,function(i,obj) { + inst = inst.replace(obj.from,obj.to); + }); + _a.right.j.html(inst); + punchgs.TweenLite.set(_a.left.j.find('.tp-arr-imgholder'),{backgroundImage:"url("+opt.thumbs[pi].src+")"}); + punchgs.TweenLite.set(_a.right.j.find('.tp-arr-imgholder'),{backgroundImage:"url("+opt.thumbs[ni].src+")"}); + } + + + }); + + hdResets(_a); + hdResets(_b); + hdResets(_c); + hdResets(_d); + + + // HOVER OVER ELEMENTS SHOULD SHOW/HIDE NAVIGATION ELEMENTS + cp.on("mouseenter mousemove",function() { + + if (!cp.hasClass("tp-mouseover")) { + cp.addClass("tp-mouseover"); + + punchgs.TweenLite.killDelayedCallsTo(showHideNavElements); + + if (a && _a.hide_onleave) showHideNavElements(cp.find('.tparrows'),_a,"show"); + if (b && _b.hide_onleave) showHideNavElements(cp.find('.tp-bullets'),_b,"show"); + if (c && _c.hide_onleave) showHideNavElements(cp.find('.tp-thumbs'),_c,"show"); + if (d && _d.hide_onleave) showHideNavElements(cp.find('.tp-tabs'),_d,"show"); + + // ON MOBILE WE NEED TO HIDE ELEMENTS EVEN AFTER TOUCH + if (_ISM) { + cp.removeClass("tp-mouseover"); + callAllDelayedCalls(container,opt); + } + } + }); + + cp.on("mouseleave",function() { + cp.removeClass("tp-mouseover"); + callAllDelayedCalls(container,opt); + }); + + // FIRST RUN HIDE ALL ELEMENTS + if (a && _a.hide_onleave) showHideNavElements(cp.find('.tparrows'),_a,"hide",0); + if (b && _b.hide_onleave) showHideNavElements(cp.find('.tp-bullets'),_b,"hide",0); + if (c && _c.hide_onleave) showHideNavElements(cp.find('.tp-thumbs'),_c,"hide",0); + if (d && _d.hide_onleave) showHideNavElements(cp.find('.tp-tabs'),_d,"hide",0); + + // Initialise Swipe Navigation + if (c) swipeAction(cp.find('.tp-thumbs'),opt); + if (d) swipeAction(cp.find('.tp-tabs'),opt); + if (opt.sliderType==="carousel") swipeAction(container,opt,true); + if (opt.navigation.touch.touchenabled=="on") swipeAction(container,opt,"swipebased"); + } + +}); + + + + +///////////////////////////////// +// - INTERNAL FUNCTIONS - /// +///////////////////////////////// + + +var moveThumbsInPosition = function(container,opt) { + + var thumbs = container.hasClass("tp-thumbs") ? ".tp-thumbs" : ".tp-tabs", + thumbmask = container.hasClass("tp-thumbs") ? ".tp-thumb-mask" : ".tp-tab-mask", + thumbsiw = container.hasClass("tp-thumbs") ? ".tp-thumbs-inner-wrapper" : ".tp-tabs-inner-wrapper", + thumb = container.hasClass("tp-thumbs") ? ".tp-thumb" : ".tp-tab", + t=container.find(thumbmask), + el = t.find(thumbsiw), + thumbdir = opt.direction, + tw = thumbdir==="vertical" ? t.find(thumb).first().outerHeight(true)+opt.space : t.find(thumb).first().outerWidth(true)+opt.space, + tmw = thumbdir==="vertical" ? t.height() : t.width(), + ti = parseInt(t.find(thumb+'.selected').data('liindex'),0), + me = tmw/tw, + ts = thumbdir==="vertical" ? t.height() : t.width(), + tp = 0-(ti * tw), + els = thumbdir==="vertical" ? el.height() : el.width(), + curpos = tp < 0-(els-ts) ? 0-(els-ts) : curpos > 0 ? 0 : tp, + elp = el.data('offset'); + + + if (me>2) { + curpos = tp - (elp+tw) <= 0 ? tp - (elp+tw) < 0-tw ? elp : curpos + tw : curpos; + curpos = ( (tp-tw + elp + tmw)< tw && tp + (Math.round(me)-2)*tw < elp) ? tp + (Math.round(me)-2)*tw : curpos; + } + + curpos = curpos < 0-(els-ts) ? 0-(els-ts) : curpos > 0 ? 0 : curpos; + + if (thumbdir!=="vertical" && t.width()>=el.width()) curpos = 0; + if (thumbdir==="vertical" && t.height()>=el.height()) curpos = 0; + + + if (!container.hasClass("dragged")) { + if (thumbdir==="vertical") + el.data('tmmove',punchgs.TweenLite.to(el,0.5,{top:curpos+"px",ease:punchgs.Power3.easeInOut})); + else + el.data('tmmove',punchgs.TweenLite.to(el,0.5,{left:curpos+"px",ease:punchgs.Power3.easeInOut})); + el.data('offset',curpos); + } + }; + + +// RESIZE THE THUMBS BASED ON ORIGINAL SIZE AND CURRENT SIZE OF WINDOW +var rtt = function(f,tws,c,o,lis,wh) { + var h = c.parent().find('.tp-'+wh+'s'), + ins = h.find('.tp-'+wh+'s-inner-wrapper'), + mask = h.find('.tp-'+wh+'-mask'), + cw = o.width*f < o.min_width ? o.min_width : Math.round(o.width*f), + ch = Math.round((cw/o.width) * o.height), + iw = o.direction === "vertical" ? cw : (cw*lis) + ((o.space)*(lis-1)), + ih = o.direction === "vertical" ? (ch*lis) + ((o.space)*(lis-1)) : ch, + anm = o.direction === "vertical" ? {width:cw+"px"} : {height:ch+"px"}; + + + tws.add(punchgs.TweenLite.set(h,anm)); + tws.add(punchgs.TweenLite.set(ins,{width:iw+"px",height:ih+"px"})); + tws.add(punchgs.TweenLite.set(mask,{width:iw+"px",height:ih+"px"})); + + jQuery.each(ins.find('.tp-'+wh+''),function(i,el) { + if (o.direction === "vertical") + tws.add(punchgs.TweenLite.set(el,{top:(i*(ch+parseInt((o.space===undefined? 0:o.space),0))),width:cw+"px",height:ch+"px"})); + else + if (o.direction === "horizontal") + tws.add(punchgs.TweenLite.set(el,{left:(i*(cw+parseInt((o.space===undefined? 0:o.space),0))),width:cw+"px",height:ch+"px"})); + }); + return tws; +}; + +// INTERNAL FUNCTIONS +var normalizeWheel = function( event) /*object*/ { + + var sX = 0, sY = 0, // spinX, spinY + pX = 0, pY = 0, // pixelX, pixelY + PIXEL_STEP = 1, + LINE_HEIGHT = 1, + PAGE_HEIGHT = 1; + + // Legacy + if ('detail' in event) { sY = event.detail; } + if ('wheelDelta' in event) { sY = -event.wheelDelta / 120; } + if ('wheelDeltaY' in event) { sY = -event.wheelDeltaY / 120; } + if ('wheelDeltaX' in event) { sX = -event.wheelDeltaX / 120; } + + + //sY = navigator.userAgent.match(/mozilla/i) ? sY*10 : sY; + + + // side scrolling on FF with DOMMouseScroll + if ( 'axis' in event && event.axis === event.HORIZONTAL_AXIS ) { + sX = sY; + sY = 0; + } + + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + + if ('deltaY' in event) { pY = event.deltaY; } + if ('deltaX' in event) { pX = event.deltaX; } + + + + if ((pX || pY) && event.deltaMode) { + if (event.deltaMode == 1) { // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { sX = (pX < 1) ? -1 : 1; } + if (pY && !sY) { sY = (pY < 1) ? -1 : 1; } + + pY = navigator.userAgent.match(/mozilla/i) ? pY*10 : pY; + + if (pY>300 || pY<-300) pY = pY/10; + + return { spinX : sX, + spinY : sY, + pixelX : pX, + pixelY : pY }; + }; + +var initKeyboard = function(container,opt) { + if (opt.navigation.keyboardNavigation!=="on") return; + jQuery(document).keydown(function(e){ + if ((opt.navigation.keyboard_direction=="horizontal" && e.keyCode == 39) || (opt.navigation.keyboard_direction=="vertical" && e.keyCode==40)) { + opt.sc_indicator="arrow"; + _R.callingNewSlide(opt,container,1); + } + if ((opt.navigation.keyboard_direction=="horizontal" && e.keyCode == 37) || (opt.navigation.keyboard_direction=="vertical" && e.keyCode==38)) { + opt.sc_indicator="arrow"; + _R.callingNewSlide(opt,container,-1); + } + }); +}; + +var initMouseScroll = function(container,opt) { + if (opt.navigation.mouseScrollNavigation!=="on") return; + var bl = navigator.userAgent.match(/mozilla/i) ? -29 : -49, + tl = navigator.userAgent.match(/mozilla/i) ? 29 : 49; + + container.on('mousewheel DOMMouseScroll', function(e) { + var res = normalizeWheel(e.originalEvent), + asi = container.find('.tp-revslider-slidesli.active-revslide').index(), + psi = container.find('.tp-revslider-slidesli.processing-revslide').index(), + fs = asi!=-1 && asi==0 || psi!=-1 && psi==0 ? true : false, + ls = asi!=-1 && asi==opt.slideamount-1 || psi!=1 && psi==opt.slideamount-1 ? true:false; + + if (psi==-1) { + if(res.pixelYtl) { + if (!ls) { + opt.sc_indicator="arrow"; + _R.callingNewSlide(opt,container,1); + return false; + } + } + + + } else { + if (!ls) + return false; + } + e.preventDefault(); + }); +}; + +var isme = function (a,c,e) { + a = _ISM ? jQuery(e.target).closest('.'+a).length || jQuery(e.srcElement).closest('.'+a).length : jQuery(e.toElement).closest('.'+a).length || jQuery(e.originalTarget).closest('.'+a).length; + return a === true || a=== 1 ? 1 : 0; +}; + +// - SET THE SWIPE FUNCTION // +var swipeAction = function(container,opt,vertical) { + + container.data('opt',opt); + + // TOUCH ENABLED SCROLL + var _ = opt.carousel; + jQuery(".bullet, .bullets, .tp-bullets, .tparrows").addClass("noSwipe"); + + _.Limit = "endless"; + var notonbody = _ISM || _R.get_browser()==="Firefox", + SwipeOn = container, //notonbody ? container : jQuery('body'), + pagescroll = opt.navigation.thumbnails.direction==="vertical" || opt.navigation.tabs.direction==="vertical"? "none" : "vertical", + swipe_wait_dir = opt.navigation.touch.swipe_direction || "horizontal"; + + pagescroll = vertical == "swipebased" && swipe_wait_dir=="vertical" ? "none" : vertical ? "vertical" : pagescroll; + + + SwipeOn.swipe({ + allowPageScroll:pagescroll, + triggerOnTouchLeave:true, + excludeElements:jQuery.fn.swipe.defaults.excludedElements, + + swipeStatus:function(event,phase,direction,distance,duration,fingerCount,fingerData) { + + + var withinslider = isme('rev_slider_wrapper',container,event), + withinthumbs = isme('tp-thumbs',container,event), + withintabs = isme('tp-tabs',container,event), + starget = jQuery(this).attr('class'), + istt = starget.match(/tp-tabs|tp-thumb/gi) ? true : false; + + + + // SWIPE OVER SLIDER, TO SWIPE SLIDES IN CAROUSEL MODE + if (opt.sliderType==="carousel" && + (((phase==="move" || phase==="end" || phase=="cancel") && (opt.dragStartedOverSlider && !opt.dragStartedOverThumbs && !opt.dragStartedOverTabs)) + || (phase==="start" && withinslider>0 && withinthumbs===0 && withintabs===0))) { + + opt.dragStartedOverSlider = true; + distance = (direction && direction.match(/left|up/g)) ? Math.round(distance * -1) : distance = Math.round(distance * 1); + + switch (phase) { + case "start": + if (_.positionanim!==undefined) { + _.positionanim.kill(); + _.slide_globaloffset = _.infinity==="off" ? _.slide_offset : _R.simp(_.slide_offset, _.maxwidth); + } + _.overpull = "none"; + _.wrap.addClass("dragged"); + break; + case "move": + + + _.slide_offset = _.infinity==="off" ? _.slide_globaloffset + distance : _R.simp(_.slide_globaloffset + distance, _.maxwidth); + + if (_.infinity==="off") { + var bb = _.horizontal_align==="center" ? ((_.wrapwidth/2-_.slide_width/2) - _.slide_offset) / _.slide_width : (0 - _.slide_offset) / _.slide_width; + + if ((_.overpull ==="none" || _.overpull===0) && (bb<0 || bb>opt.slideamount-1)) + _.overpull = distance; + else + if (bb>=0 && bb<=opt.slideamount-1 && ((bb>=0 && distance>_.overpull) || (bb<=opt.slideamount-1 && distance<_.overpull))) + _.overpull = 0; + + _.slide_offset = bb<0 ? _.slide_offset+ (_.overpull-distance)/1.1 + Math.sqrt(Math.abs((_.overpull-distance)/1.1)) : + bb>opt.slideamount-1 ? _.slide_offset+ (_.overpull-distance)/1.1 - Math.sqrt(Math.abs((_.overpull-distance)/1.1)) : _.slide_offset ; + } + _R.organiseCarousel(opt,direction,true,true); + break; + + case "end": + case "cancel": + //duration !! + _.slide_globaloffset = _.slide_offset; + _.wrap.removeClass("dragged"); + _R.carouselToEvalPosition(opt,direction); + opt.dragStartedOverSlider = false; + opt.dragStartedOverThumbs = false; + opt.dragStartedOverTabs = false; + break; + } + } else + + // SWIPE OVER THUMBS OR TABS + if (( + ((phase==="move" || phase==="end" || phase=="cancel") && (!opt.dragStartedOverSlider && (opt.dragStartedOverThumbs || opt.dragStartedOverTabs))) + || + (phase==="start" && (withinslider>0 && (withinthumbs>0 || withintabs>0))))) { + + + if (withinthumbs>0) opt.dragStartedOverThumbs = true; + if (withintabs>0) opt.dragStartedOverTabs = true; + + var thumbs = opt.dragStartedOverThumbs ? ".tp-thumbs" : ".tp-tabs", + thumbmask = opt.dragStartedOverThumbs ? ".tp-thumb-mask" : ".tp-tab-mask", + thumbsiw = opt.dragStartedOverThumbs ? ".tp-thumbs-inner-wrapper" : ".tp-tabs-inner-wrapper", + thumb = opt.dragStartedOverThumbs ? ".tp-thumb" : ".tp-tab", + _o = opt.dragStartedOverThumbs ? opt.navigation.thumbnails : opt.navigation.tabs; + + + distance = (direction && direction.match(/left|up/g)) ? Math.round(distance * -1) : distance = Math.round(distance * 1); + var t= container.parent().find(thumbmask), + el = t.find(thumbsiw), + tdir = _o.direction, + els = tdir==="vertical" ? el.height() : el.width(), + ts = tdir==="vertical" ? t.height() : t.width(), + tw = tdir==="vertical" ? t.find(thumb).first().outerHeight(true)+_o.space : t.find(thumb).first().outerWidth(true)+_o.space, + newpos = (el.data('offset') === undefined ? 0 : parseInt(el.data('offset'),0)), + curpos = 0; + + switch (phase) { + case "start": + container.parent().find(thumbs).addClass("dragged"); + newpos = tdir === "vertical" ? el.position().top : el.position().left; + el.data('offset',newpos); + if (el.data('tmmove')) el.data('tmmove').pause(); + + break; + case "move": + if (els<=ts) return false; + + curpos = newpos + distance; + curpos = curpos>0 ? tdir==="horizontal" ? curpos - (el.width() * (curpos/el.width() * curpos/el.width())) : curpos - (el.height() * (curpos/el.height() * curpos/el.height())) : curpos; + var dif = tdir==="vertical" ? 0-(el.height()-t.height()) : 0-(el.width()-t.width()); + curpos = curpos < dif ? tdir==="horizontal" ? curpos + (el.width() * (curpos-dif)/el.width() * (curpos-dif)/el.width()) : curpos + (el.height() * (curpos-dif)/el.height() * (curpos-dif)/el.height()) : curpos; + if (tdir==="vertical") + punchgs.TweenLite.set(el,{top:curpos+"px"}); + else + punchgs.TweenLite.set(el,{left:curpos+"px"}); + + + break; + + case "end": + case "cancel": + + if (istt) { + curpos = newpos + distance; + + curpos = tdir==="vertical" ? curpos < 0-(el.height()-t.height()) ? 0-(el.height()-t.height()) : curpos : curpos < 0-(el.width()-t.width()) ? 0-(el.width()-t.width()) : curpos; + curpos = curpos > 0 ? 0 : curpos; + + curpos = Math.abs(distance)>tw/10 ? distance<=0 ? Math.floor(curpos/tw)*tw : Math.ceil(curpos/tw)*tw : distance<0 ? Math.ceil(curpos/tw)*tw : Math.floor(curpos/tw)*tw; + + curpos = tdir==="vertical" ? curpos < 0-(el.height()-t.height()) ? 0-(el.height()-t.height()) : curpos : curpos < 0-(el.width()-t.width()) ? 0-(el.width()-t.width()) : curpos; + curpos = curpos > 0 ? 0 : curpos; + + if (tdir==="vertical") + punchgs.TweenLite.to(el,0.5,{top:curpos+"px",ease:punchgs.Power3.easeOut}); + else + punchgs.TweenLite.to(el,0.5,{left:curpos+"px",ease:punchgs.Power3.easeOut}); + + curpos = !curpos ? tdir==="vertical" ? el.position().top : el.position().left : curpos; + + el.data('offset',curpos); + el.data('distance',distance); + + setTimeout(function() { + opt.dragStartedOverSlider = false; + opt.dragStartedOverThumbs = false; + opt.dragStartedOverTabs = false; + },100); + container.parent().find(thumbs).removeClass("dragged"); + + return false; + } + break; + } + } + else { + if (phase=="end" && !istt) { + + opt.sc_indicator="arrow"; + + if ((swipe_wait_dir=="horizontal" && direction == "left") || (swipe_wait_dir=="vertical" && direction == "up")) { + _R.callingNewSlide(opt,opt.c,1); + return false; + } + if ((swipe_wait_dir=="horizontal" && direction == "right") || (swipe_wait_dir=="vertical" && direction == "down")) { + _R.callingNewSlide(opt,opt.c,-1); + return false; + } + + } + opt.dragStartedOverSlider = false; + opt.dragStartedOverThumbs = false; + opt.dragStartedOverTabs = false; + return true; + } + } + }); +}; + + +// NAVIGATION HELPER FUNCTIONS +var hdResets = function(o) { + o.hide_delay = !jQuery.isNumeric(parseInt(o.hide_delay,0)) ? 0.2 : o.hide_delay/1000; + o.hide_delay_mobile = !jQuery.isNumeric(parseInt(o.hide_delay_mobile,0)) ? 0.2 : o.hide_delay_mobile/1000; +}; + +var ckNO = function(opt) { + return opt && opt.enable; +}; + +var ckNOLO = function(opt) { + return opt && opt.enable && opt.hide_onleave===true && (opt.position===undefined ? true : !opt.position.match(/outer/g)); +}; + +var callAllDelayedCalls = function(container,opt) { + var cp = container.parent(); + + if (ckNOLO(opt.navigation.arrows)) + punchgs.TweenLite.delayedCall(_ISM ? opt.navigation.arrows.hide_delay_mobile : opt.navigation.arrows.hide_delay,showHideNavElements,[cp.find('.tparrows'),opt.navigation.arrows,"hide"]); + + if (ckNOLO(opt.navigation.bullets)) + punchgs.TweenLite.delayedCall(_ISM ? opt.navigation.bullets.hide_delay_mobile : opt.navigation.bullets.hide_delay,showHideNavElements,[cp.find('.tp-bullets'),opt.navigation.bullets,"hide"]); + + if (ckNOLO(opt.navigation.thumbnails)) + punchgs.TweenLite.delayedCall(_ISM ? opt.navigation.thumbnails.hide_delay_mobile : opt.navigation.thumbnails.hide_delay,showHideNavElements,[cp.find('.tp-thumbs'),opt.navigation.thumbnails,"hide"]); + + if (ckNOLO(opt.navigation.tabs)) + punchgs.TweenLite.delayedCall(_ISM ? opt.navigation.tabs.hide_delay_mobile : opt.navigation.tabs.hide_delay,showHideNavElements,[cp.find('.tp-tabs'),opt.navigation.tabs,"hide"]); +}; + +var showHideNavElements = function(container,opt,dir,speed) { + speed = speed===undefined ? 0.5 : speed; + switch (dir) { + case "show": + punchgs.TweenLite.to(container,speed, {autoAlpha:1,ease:punchgs.Power3.easeInOut,overwrite:"auto"}); + break; + case "hide": + punchgs.TweenLite.to(container,speed, {autoAlpha:0,ease:punchgs.Power3.easeInOu,overwrite:"auto"}); + break; + } + +}; + + +// ADD ARROWS +var initArrows = function(container,o,opt) { + // SET oIONAL CLASSES + o.style = o.style === undefined ? "" : o.style; + o.left.style = o.left.style === undefined ? "" : o.left.style; + o.right.style = o.right.style === undefined ? "" : o.right.style; + + + // ADD LEFT AND RIGHT ARROWS + if (container.find('.tp-leftarrow.tparrows').length===0) + container.append('
        '+o.tmp+'
        '); + if (container.find('.tp-rightarrow.tparrows').length===0) + container.append('
        '+o.tmp+'
        '); + var la = container.find('.tp-leftarrow.tparrows'), + ra = container.find('.tp-rightarrow.tparrows'); + // CLICK HANDLINGS ON LEFT AND RIGHT ARROWS + ra.click(function() { opt.sc_indicator="arrow"; container.revnext();}); + la.click(function() { opt.sc_indicator="arrow"; container.revprev();}); + + // SHORTCUTS + o.right.j = container.find('.tp-rightarrow.tparrows'); + o.left.j = container.find('.tp-leftarrow.tparrows') + + // OUTTUER PADDING DEFAULTS + o.padding_top = parseInt((opt.carousel.padding_top||0),0), + o.padding_bottom = parseInt((opt.carousel.padding_bottom||0),0); + + // POSITION OF ARROWS + setNavElPositions(la,o.left); + setNavElPositions(ra,o.right); + + if (o.position=="outer-left" || o.position=="outer-right") opt.outernav = true; +}; + + +// PUT ELEMENTS VERTICAL / HORIZONTAL IN THE RIGHT POSITION +var putVinPosition = function(el,o) { + var elh = el.outerHeight(true), + elw = el.outerWidth(true), + a = o.v_align === "top" ? {top:"0px",y:Math.round(o.v_offset)+"px"} : o.v_align === "center" ? {top:"50%",y:Math.round(((0-elh/2)+o.v_offset))+"px"} : {top:"100%",y:Math.round((0-(elh+o.v_offset)))+"px"}; + if (!el.hasClass("outer-bottom")) punchgs.TweenLite.set(el,a); +}; + +var putHinPosition = function(el,o) { + + var elh = el.outerHeight(true), + elw = el.outerWidth(true), + a = o.h_align === "left" ? {left:"0px",x:Math.round(o.h_offset)+"px"} : o.h_align === "center" ? {left:"50%",x:Math.round(((0-elw/2)+o.h_offset))+"px"} : {left:"100%",x:Math.round((0-(elw+o.h_offset)))+"px"}; + punchgs.TweenLite.set(el,a); +}; + +// SET POSITION OF ELEMENTS +var setNavElPositions = function(el,o) { + + var wrapper = + el.closest('.tp-simpleresponsive').length>0 ? + el.closest('.tp-simpleresponsive') : + el.closest('.tp-revslider-mainul').length>0 ? + el.closest('.tp-revslider-mainul') : + el.closest('.rev_slider_wrapper').length>0 ? + el.closest('.rev_slider_wrapper'): + el.parent().find('.tp-revslider-mainul'), + ww = wrapper.width(), + wh = wrapper.height(); + + putVinPosition(el,o); + putHinPosition(el,o); + + if (o.position==="outer-left" && (o.sliderLayout=="fullwidth" || o.sliderLayout=="fullscreen")) + punchgs.TweenLite.set(el,{left:(0-el.outerWidth())+"px",x:o.h_offset+"px"}); + else + if (o.position==="outer-right" && (o.sliderLayout=="fullwidth" || o.sliderLayout=="fullscreen")) + punchgs.TweenLite.set(el,{right:(0-el.outerWidth())+"px",x:o.h_offset+"px"}); + + + // MAX WIDTH AND HEIGHT BASED ON THE SOURROUNDING CONTAINER + if (el.hasClass("tp-thumbs") || el.hasClass("tp-tabs")) { + + var wpad = el.data('wr_padding'), + maxw = el.data('maxw'), + maxh = el.data('maxh'), + mask = el.hasClass("tp-thumbs") ? el.find('.tp-thumb-mask') : el.find('.tp-tab-mask'), + cpt = parseInt((o.padding_top||0),0), + cpb = parseInt((o.padding_bottom||0),0); + + + // ARE THE CONTAINERS BIGGER THAN THE SLIDER WIDTH OR HEIGHT ? + if (maxw>ww && o.position!=="outer-left" && o.position!=="outer-right") { + punchgs.TweenLite.set(el,{left:"0px",x:0,maxWidth:(ww-2*wpad)+"px"}); + punchgs.TweenLite.set(mask,{maxWidth:(ww-2*wpad)+"px"}); + } else { + punchgs.TweenLite.set(el,{maxWidth:(maxw)+"px"}); + punchgs.TweenLite.set(mask,{maxWidth:(maxw)+"px"}); + } + + if (maxh+2*wpad>wh && o.position!=="outer-bottom" && o.position!=="outer-top") { + punchgs.TweenLite.set(el,{top:"0px",y:0,maxHeight:(cpt+cpb+(wh-2*wpad))+"px"}); + punchgs.TweenLite.set(mask,{maxHeight:(cpt+cpb+(wh-2*wpad))+"px"}); + } else { + punchgs.TweenLite.set(el,{maxHeight:(maxh)+"px"}); + punchgs.TweenLite.set(mask,{maxHeight:maxh+"px"}); + } + + if (o.position!=="outer-left" && o.position!=="outer-right") { + cpt = 0; + cpb = 0; + } + + // SPAN IS ENABLED + if (o.span===true && o.direction==="vertical") { + punchgs.TweenLite.set(el,{maxHeight:(cpt+cpb+(wh-2*wpad))+"px",height:(cpt+cpb+(wh-2*wpad))+"px",top:(0-cpt),y:0}); + putVinPosition(mask,o); + } else + + if (o.span===true && o.direction==="horizontal") { + punchgs.TweenLite.set(el,{maxWidth:"100%",width:(ww-2*wpad)+"px",left:0,x:0}); + putHinPosition(mask,o); + } + } +}; + + +// ADD A BULLET +var addBullet = function(container,o,li,opt) { + + // Check if Bullet exists already ? + if (container.find('.tp-bullets').length===0) { + o.style = o.style === undefined ? "" : o.style; + container.append('
        '); + } + + // Add Bullet Structure to the Bullet Container + var bw = container.find('.tp-bullets'), + linkto = li.data('index'), + inst = o.tmp; + + jQuery.each(opt.thumbs[li.index()].params,function(i,obj) { inst = inst.replace(obj.from,obj.to);}) + + + bw.append('
        '+inst+'
        '); + + // SET BULLET SPACES AND POSITION + var b = container.find('.justaddedbullet'), + am = container.find('.tp-bullet').length, + w = b.outerWidth()+parseInt((o.space===undefined? 0:o.space),0), + h = b.outerHeight()+parseInt((o.space===undefined? 0:o.space),0); + + //bgimage = li.data('thumb') !==undefined ? li.data('thumb') : li.find('.defaultimg').data('lazyload') !==undefined && li.find('.defaultimg').data('lazyload') !== 'undefined' ? li.find('.defaultimg').data('lazyload') : li.find('.defaultimg').data('src'); + + if (o.direction==="vertical") { + b.css({top:((am-1)*h)+"px", left:"0px"}); + bw.css({height:(((am-1)*h) + b.outerHeight()),width:b.outerWidth()}); + } + else { + b.css({left:((am-1)*w)+"px", top:"0px"}); + bw.css({width:(((am-1)*w) + b.outerWidth()),height:b.outerHeight()}); + } + + b.find('.tp-bullet-image').css({backgroundImage:'url('+opt.thumbs[li.index()].src+')'}); + // SET LINK TO AND LISTEN TO CLICK + b.data('liref',linkto); + b.click(function() { + opt.sc_indicator="bullet"; + container.revcallslidewithid(linkto); + container.find('.tp-bullet').removeClass("selected"); + jQuery(this).addClass("selected"); + + }); + // REMOVE HELP CLASS + b.removeClass("justaddedbullet"); + + // OUTTUER PADDING DEFAULTS + o.padding_top = parseInt((opt.carousel.padding_top||0),0), + o.padding_bottom = parseInt((opt.carousel.padding_bottom||0),0); + + if (o.position=="outer-left" || o.position=="outer-right") opt.outernav = true; + + // PUT ALL CONTAINER IN POSITION + setNavElPositions(bw,o); +}; + + +var cHex = function(hex,o){ + o = parseFloat(o); + hex = hex.replace('#',''); + var r = parseInt(hex.substring(0,2), 16), + g = parseInt(hex.substring(2,4), 16), + b = parseInt(hex.substring(4,6), 16), + result = 'rgba('+r+','+g+','+b+','+o+')'; + return result; +}; + +// ADD THUMBNAILS +var addThumb = function(container,o,li,what,opt) { + var thumbs = what==="tp-thumb" ? ".tp-thumbs" : ".tp-tabs", + thumbmask = what==="tp-thumb" ? ".tp-thumb-mask" : ".tp-tab-mask", + thumbsiw = what==="tp-thumb" ? ".tp-thumbs-inner-wrapper" : ".tp-tabs-inner-wrapper", + thumb = what==="tp-thumb" ? ".tp-thumb" : ".tp-tab", + timg = what ==="tp-thumb" ? ".tp-thumb-image" : ".tp-tab-image"; + + o.visibleAmount = o.visibleAmount>opt.slideamount ? opt.slideamount : o.visibleAmount; + o.sliderLayout = opt.sliderLayout; + + // Check if THUNBS/TABS exists already ? + if (container.parent().find(thumbs).length===0) { + o.style = o.style === undefined ? "" : o.style; + + var spanw = o.span===true ? "tp-span-wrapper" : "", + addcontent = '
        '; + + if (o.position==="outer-top") + container.parent().prepend(addcontent) + else + if (o.position==="outer-bottom") + container.after(addcontent); + else + container.append(addcontent); + + // OUTTUER PADDING DEFAULTS + o.padding_top = parseInt((opt.carousel.padding_top||0),0), + o.padding_bottom = parseInt((opt.carousel.padding_bottom||0),0); + + if (o.position=="outer-left" || o.position=="outer-right") opt.outernav = true; + } + + + + // Add Thumb/TAB Structure to the THUMB/TAB Container + var linkto = li.data('index'), + t = container.parent().find(thumbs), + tm = t.find(thumbmask), + tw = tm.find(thumbsiw), + maxw = o.direction==="horizontal" ? (o.width * o.visibleAmount) + (o.space*(o.visibleAmount-1)) : o.width, + maxh = o.direction==="horizontal" ? o.height : (o.height * o.visibleAmount) + (o.space*(o.visibleAmount-1)), + inst = o.tmp; + jQuery.each(opt.thumbs[li.index()].params,function(i,obj) { + inst = inst.replace(obj.from,obj.to); + }) + + tw.append('
        '+inst+'
        '); + + + // SET BULLET SPACES AND POSITION + var b = t.find('.justaddedthumb'), + am = t.find(thumb).length, + w = b.outerWidth()+parseInt((o.space===undefined? 0:o.space),0), + h = b.outerHeight()+parseInt((o.space===undefined? 0:o.space),0); + + // FILL CONTENT INTO THE TAB / THUMBNAIL + b.find(timg).css({backgroundImage:"url("+opt.thumbs[li.index()].src+")"}); + + + if (o.direction==="vertical") { + b.css({top:((am-1)*h)+"px", left:"0px"}); + tw.css({height:(((am-1)*h) + b.outerHeight()),width:b.outerWidth()}); + } + else { + b.css({left:((am-1)*w)+"px", top:"0px"}); + tw.css({width:(((am-1)*w) + b.outerWidth()),height:b.outerHeight()}); + } + + t.data('maxw',maxw); + t.data('maxh',maxh); + t.data('wr_padding',o.wrapper_padding); + var position = o.position === "outer-top" || o.position==="outer-bottom" ? "relative" : "absolute", + _margin = (o.position === "outer-top" || o.position==="outer-bottom") && (o.h_align==="center") ? "auto" : "0"; + + + tm.css({maxWidth:maxw+"px",maxHeight:maxh+"px",overflow:"hidden",position:"relative"}); + t.css({maxWidth:(maxw)+"px",margin:_margin, maxHeight:maxh+"px",overflow:"visible",position:position,background:cHex(o.wrapper_color,o.wrapper_opacity),padding:o.wrapper_padding+"px",boxSizing:"contet-box"}); + + + + // SET LINK TO AND LISTEN TO CLICK + b.click(function() { + + opt.sc_indicator="bullet"; + var dis = container.parent().find(thumbsiw).data('distance'); + dis = dis === undefined ? 0 : dis; + if (Math.abs(dis)<10) { + container.revcallslidewithid(linkto); + container.parent().find(thumbs).removeClass("selected"); + jQuery(this).addClass("selected"); + } + }); + // REMOVE HELP CLASS + b.removeClass("justaddedthumb"); + + // PUT ALL CONTAINER IN POSITION + setNavElPositions(t,o); +}; + +var setONHeights = function(o) { + var ot = o.c.parent().find('.outer-top'), + ob = o.c.parent().find('.outer-bottom'); + o.top_outer = !ot.hasClass("tp-forcenotvisible") ? ot.outerHeight() || 0 : 0; + o.bottom_outer = !ob.hasClass("tp-forcenotvisible") ? ob.outerHeight() || 0 : 0; +}; + + +// HIDE NAVIGATION ON PURPOSE +var biggerNav = function(el,a,b,c) { + if (a>b || b>c) + el.addClass("tp-forcenotvisible") + else + el.removeClass("tp-forcenotvisible"); +}; + +})(jQuery); \ No newline at end of file diff --git a/plugins/revslider/public/assets/js/extensions/source/revolution.extension.parallax.js b/plugins/revslider/public/assets/js/extensions/source/revolution.extension.parallax.js new file mode 100644 index 0000000..1748920 --- /dev/null +++ b/plugins/revslider/public/assets/js/extensions/source/revolution.extension.parallax.js @@ -0,0 +1,219 @@ +/******************************************** + * REVOLUTION 5.0 EXTENSION - PARALLAX + * @version: 1.0.0 (08.07.2015) + * @requires jquery.themepunch.revolution.js + * @author ThemePunch +*********************************************/ + +(function($) { + +var _R = jQuery.fn.revolution, + _ISM = _R.is_mobile(); + +jQuery.extend(true,_R, { + + checkForParallax : function(container,opt) { + + var _ = opt.parallax; + + if (_ISM && _.disable_onmobile=="on") return false; + + opt.li.each(function() { + var li = jQuery(this); + for (var i = 1; i<=10;i++) + li.find('.rs-parallaxlevel-'+i).each(function() { + var pw = jQuery(this), + tpw = pw.closest('.tp-parallax-wrap'); + tpw.data('parallaxlevel',_.levels[i-1]) + tpw.addClass("tp-parallax-container"); + }); + }) + + + + if (_.type=="mouse" || _.type=="scroll+mouse" || _.type=="mouse+scroll") { + + + container.mouseenter(function(event) { + + var currslide = container.find('.active-revslide'); + var t = container.offset().top, + l = container.offset().left, + ex = (event.pageX-l), + ey = (event.pageY-t); + currslide.data("enterx",ex); + currslide.data("entery",ey); + + }) + + container.on('mousemove.hoverdir, mouseleave.hoverdir',function(event) { + + var currslide = container.find('.active-revslide'); + switch (event.type) { + + case "mousemove": + + if (_.origo=="enterpoint") { + var t = container.offset().top, + l = container.offset().left; + + if (currslide.data("enterx") ==undefined) currslide.data("enterx",(event.pageX-l)); + if (currslide.data("entery") ==undefined) currslide.data("entery",(event.pageY-t)); + + var mh = currslide.data("enterx"), + mv = currslide.data("entery"), + diffh = (mh - (event.pageX - l)), + diffv = (mv - (event.pageY - t)), + s = _.speed/1000 || 0.4; + } else { + var t = container.offset().top, + l = container.offset().left, + diffh = (opt.conw/2 - (event.pageX-l)), + diffv = (opt.conh/2 - (event.pageY-t)), + s = _.speed/1000 || 3; + } + + currslide.find(".tp-parallax-container").each(function() { + var pc = jQuery(this), + pl = parseInt(pc.data('parallaxlevel'),0)/100, + offsh = diffh * pl, + offsv = diffv * pl; + + if (_.type=="scroll+mouse" || _.type=="mouse+scroll") + punchgs.TweenLite.to(pc,s,{force3D:"auto",x:offsh,ease:punchgs.Power3.easeOut,overwrite:"all"}); + else + punchgs.TweenLite.to(pc,s,{force3D:"auto",x:offsh,y:offsv,ease:punchgs.Power3.easeOut,overwrite:"all"}); + }) + + break; + case "mouseleave": + currslide.find(".tp-parallax-container").each(function() { + var pc = jQuery(this); + if (_.type=="scroll+mouse" || _.type=="mouse+scroll") + punchgs.TweenLite.to(pc,1.5,{force3D:"auto",x:0,ease:punchgs.Power3.easeOut}); + else + punchgs.TweenLite.to(pc,1.5,{force3D:"auto",x:0,y:0,ease:punchgs.Power3.easeOut}); + }) + break; + } + }); + + if (_ISM) + window.ondeviceorientation = function(event) { + var y = Math.round(event.beta || 0), + x = Math.round(event.gamma || 0); + + var currslide = container.find('.active-revslide'); + + if (jQuery(window).width() > jQuery(window).height()){ + var xx = x; + x = y; + y = xx; + } + + var curh = 360/container.width() * x, + curv = 180/container.height() * y; + + currslide.find(".tp-parallax-container").each(function() { + var pc = jQuery(this), + pl = parseInt(pc.data('parallaxlevel'),0)/100, + offsh = curh * pl, + offsv = curv * pl; + punchgs.TweenLite.to(pc,0.2,{force3D:"auto",x:offsh,y:offsv,ease:punchgs.Power3.easeOut}); + }) + } + } + + /*if (_.type=="scroll" || _.type=="scroll+mouse" || _.type=="mouse+scroll") + if (_ISM && opt.parallax.disable_onmobile=="on") + return false; + else*/ + _R.scrollTicker(opt,container); + + + }, + + scrollTicker : function(opt,container) { + if (opt.scrollTicker!=true) { + opt.scrollTicker = true; + punchgs.TweenLite.ticker.fps(150); + punchgs.TweenLite.ticker.addEventListener("tick",function() {_R.scrollHandling(opt);},container,true,1); + } + }, + + + + // - SET POST OF SCROLL PARALLAX - + scrollHandling : function(opt) { + + + opt.lastwindowheight = opt.lastwindowheight || jQuery(window).height(); + + var t = opt.c.offset().top, + st = jQuery(window).scrollTop(), + b = new Object(), + _v = opt.viewPort, + _ = opt.parallax; + + if (opt.lastscrolltop==st) return false; + opt.lastscrolltop = st; + + b.top = (t-st); + b.h = opt.conh==0 ? opt.c.height() : opt.conh; + b.bottom = (t-st) + b.h; + + var proc = b.top<0 ? b.top / b.h : b.bottom>opt.lastwindowheight ? (b.bottom-opt.lastwindowheight) / b.h : 0; + + var area = 1-Math.abs(proc); + area = area<0 ? 0 : area; + + if (_v.enable) { + + if (1-_v.visible_area<=area) { + if (!opt.inviewport) { + opt.inviewport = true; + _R.enterInViewPort(opt); + } + } else { + if (opt.inviewport) { + opt.inviewport = false; + _R.leaveViewPort(opt); + } + } + } + // SCROLL BASED PARALLAX EFFECT + if (_ISM && opt.parallax.disable_onmobile=="on") return false; + + var pt = new punchgs.TimelineLite(); + pt.pause(); + + if (_.type=="scroll" || _.type=="scroll+mouse" || _.type=="mouse+scroll") + opt.c.find(".tp-parallax-container").each(function(i) { + var pc = jQuery(this), + pl = parseInt(pc.data('parallaxlevel'),0)/100, + offsv = proc * -(pl*opt.conh); + pc.data('parallaxoffset',offsv); + pt.add(punchgs.TweenLite.set(pc,{force3D:"auto",y:offsv}),0); + }); + opt.c.find('.tp-revslider-slidesli .slotholder, .tp-revslider-slidesli .rs-background-video-layer').each(function() { + + var t = jQuery(this), + l = t.data('bgparallax') || opt.parallax.bgparallax; + l = l == "on" ? 1 : l; + if (l!== undefined || l !== "off") { + var pl = opt.parallax.levels[parseInt(l,0)-1]/100, + offsv = proc * -(pl*opt.conh); + if (jQuery.isNumeric(offsv)) + pt.add(punchgs.TweenLite.set(t,{position:"absolute",top:"0px",left:"0px",backfaceVisibility:"hidden",force3D:"true",y:offsv+"px",overwrite:"auto"}),0); + } + }); + + pt.play(0); + } + +}); + + + +//// END OF PARALLAX EFFECT +})(jQuery); \ No newline at end of file diff --git a/plugins/revslider/public/assets/js/extensions/source/revolution.extension.slideanims.js b/plugins/revslider/public/assets/js/extensions/source/revolution.extension.slideanims.js new file mode 100644 index 0000000..a3886b0 --- /dev/null +++ b/plugins/revslider/public/assets/js/extensions/source/revolution.extension.slideanims.js @@ -0,0 +1,1223 @@ +/************************************************ + * REVOLUTION 5.0 EXTENSION - SLIDE ANIMATIONS + * @version: 1.0.0 (08.07.2015) + * @requires jquery.themepunch.revolution.js + * @author ThemePunch +************************************************/ + +(function($) { + +var _R = jQuery.fn.revolution; + + /////////////////////////////////////////// + // EXTENDED FUNCTIONS AVAILABLE GLOBAL // + /////////////////////////////////////////// + jQuery.extend(true,_R, { + + animateSlide : function(nexttrans, comingtransition, container, opt, nextli, actli, nextsh, actsh, mtl) { + return animateSlideIntern(nexttrans, comingtransition, container, opt, nextli, actli, nextsh, actsh, mtl) + } + + }); + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// SLIDE TRANSITION MODULES //////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +////////////////////////////////////////////////////// +// +// * Revolution Slider - TRANSITION PREDEFINITION MODULES +// * @version: 5.0.0 (13.02.2015) +// * @author ThemePunch +// +////////////////////////////////////////////////////// + + + /////////////////////// + // PREPARE THE SLIDE // + ////////////////////// + var prepareOneSlide = function(slotholder,opt,visible,vorh) { + + var sh=slotholder, + img = sh.find('.defaultimg'), + scalestart = sh.data('zoomstart'), + rotatestart = sh.data('rotationstart'); + + if (img.data('currotate')!=undefined) + rotatestart = img.data('currotate'); + if (img.data('curscale')!=undefined && vorh=="box") + scalestart = img.data('curscale')*100; + else + if (img.data('curscale')!=undefined) + scalestart = img.data('curscale'); + + _R.slotSize(img,opt); + + + var src = img.attr('src'), + bgcolor=img.css('backgroundColor'), + w = opt.width, + h = opt.height, + fulloff = img.data("fxof"), + fullyoff=0; + + if (opt.autoHeight=="on") h = opt.c.height(); + if (fulloff==undefined) fulloff=0; + + var off=0, + bgfit = img.data('bgfit'), + bgrepeat = img.data('bgrepeat'), + bgposition = img.data('bgposition'); + + if (bgfit==undefined) bgfit="cover"; + if (bgrepeat==undefined) bgrepeat="no-repeat"; + if (bgposition==undefined) bgposition="center center"; + + switch (vorh) { + // BOX ANIMATION PREPARING + case "box": + // SET THE MINIMAL SIZE OF A BOX + var basicsize = 0, + x = 0, + y = 0; + + if (opt.sloth>opt.slotw) + basicsize=opt.sloth + else + basicsize=opt.slotw; + + if (!visible) { + var off=0-basicsize; + } + + opt.slotw = basicsize; + opt.sloth = basicsize; + var x=0; + var y=0; + + for (var j=0;j'+ + + '
        '+ + + '
        '+ + '
        '); + y=y+basicsize; + + + + if (scalestart!=undefined && rotatestart!=undefined) + punchgs.TweenLite.set(sh.find('.slot').last(),{rotationZ:rotatestart}); + } + x=x+basicsize; + } + break; + + // SLOT ANIMATION PREPARING + case "vertical": + case "horizontal": + + if (vorh == "horizontal") { + if (!visible) var off=0-opt.slotw; + for (var i=0;i'+ + '
        '+ + '
        '+ + '
        '); + if (scalestart!=undefined && rotatestart!=undefined) + punchgs.TweenLite.set(sh.find('.slot').last(),{rotationZ:rotatestart}); + + } + } else { + if (!visible) var off=0-opt.sloth; + for (var i=0;i'+ + + '
        '+ + '
        '+ + + '
        '); + if (scalestart!=undefined && rotatestart!=undefined) + punchgs.TweenLite.set(sh.find('.slot').last(),{rotationZ:rotatestart}); + + } + } + break; + } + } + + + +var getSliderTransitionParameters = function(container,opt,comingtransition,nextsh,slidedirection) { + + + /* Transition Name , + Transition Code, + Transition Sub Code, + Max Slots, + MasterSpeed Delays, + Preparing Slots (box,slideh, slidev), + Call on nextsh (null = no, true/false for visibility first preparing), + Call on actsh (null = no, true/false for visibility first preparing), + Index of Animation + easeIn, + easeOut, + speed, + slots, + */ + var p1i = punchgs.Power1.easeIn, + p1o = punchgs.Power1.easeOut, + p1io = punchgs.Power1.easeInOut, + p2i = punchgs.Power2.easeIn, + p2o = punchgs.Power2.easeOut, + p2io = punchgs.Power2.easeInOut, + p3i = punchgs.Power3.easeIn, + p3o = punchgs.Power3.easeOut, + p3io = punchgs.Power3.easeInOut, + flatTransitions = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45], + premiumTransitions = [16,17,18,19,20,21,22,23,24,25,27], + nexttrans =0, + specials = 1, + STAindex = 0, + indexcounter =0, + STA = new Array, + transitionsArray = [ ['boxslide' , 0, 1, 10, 0,'box',false,null,0,p1o,p1o,500,6], + ['boxfade', 1, 0, 10, 0,'box',false,null,1,p1io,p1io,700,5], + ['slotslide-horizontal', 2, 0, 0, 200,'horizontal',true,false,2,p2io,p2io,700,3], + ['slotslide-vertical', 3, 0,0,200,'vertical',true,false,3,p2io,p2io,700,3], + ['curtain-1', 4, 3,0,0,'horizontal',true,true,4,p1o,p1o,300,5], + ['curtain-2', 5, 3,0,0,'horizontal',true,true,5,p1o,p1o,300,5], + ['curtain-3', 6, 3,25,0,'horizontal',true,true,6,p1o,p1o,300,5], + ['slotzoom-horizontal', 7, 0,0,400,'horizontal',true,true,7,p1o,p1o,300,7], + ['slotzoom-vertical', 8, 0,0,0,'vertical',true,true,8,p2o,p2o,500,8], + ['slotfade-horizontal', 9, 0,0,500,'horizontal',true,null,9,p2o,p2o,500,25], + ['slotfade-vertical', 10, 0,0 ,500,'vertical',true,null,10,p2o,p2o,500,25], + ['fade', 11, 0, 1 ,300,'horizontal',true,null,11,p2io,p2io,1000,1], + ['slideleft', 12, 0,1,0,'horizontal',true,true,12,p3io,p3io,1000,1], + ['slideup', 13, 0,1,0,'horizontal',true,true,13,p3io,p3io,1000,1], + ['slidedown', 14, 0,1,0,'horizontal',true,true,14,p3io,p3io,1000,1], + ['slideright', 15, 0,1,0,'horizontal',true,true,15,p3io,p3io,1000,1], + ['slideoverleft', 12, 7,1,0,'horizontal',true,true,12,p3io,p3io,1000,1], + ['slideoverup', 13, 7,1,0,'horizontal',true,true,13,p3io,p3io,1000,1], + ['slideoverdown', 14, 7,1,0,'horizontal',true,true,14,p3io,p3io,1000,1], + ['slideoverright', 15, 7,1,0,'horizontal',true,true,15,p3io,p3io,1000,1], + ['papercut', 16, 0,0,600,'',null,null,16,p3io,p3io,1000,2], + ['3dcurtain-horizontal', 17, 0,20,100,'vertical',false,true,17,p1io,p1io,500,7], + ['3dcurtain-vertical', 18, 0,10,100,'horizontal',false,true,18,p1io,p1io,500,5], + ['cubic', 19, 0,20,600,'horizontal',false,true,19,p3io,p3io,500,1], + ['cube',19,0,20,600,'horizontal',false,true,20,p3io,p3io,500,1], + ['flyin', 20, 0,4,600,'vertical',false,true,21,p3o,p3io,500,1], + ['turnoff', 21, 0,1,500,'horizontal',false,true,22,p3io,p3io,500,1], + ['incube', 22, 0,20,200,'horizontal',false,true,23,p2io,p2io,500,1], + ['cubic-horizontal', 23, 0,20,500,'vertical',false,true,24,p2o,p2o,500,1], + ['cube-horizontal', 23, 0,20,500,'vertical',false,true,25,p2o,p2o,500,1], + ['incube-horizontal', 24, 0,20,500,'vertical',false,true,26,p2io,p2io,500,1], + ['turnoff-vertical', 25, 0,1,200,'horizontal',false,true,27,p2io,p2io,500,1], + ['fadefromright', 12, 1,1,0,'horizontal',true,true,28,p2io,p2io,1000,1], + ['fadefromleft', 15, 1,1,0,'horizontal',true,true,29,p2io,p2io,1000,1], + ['fadefromtop', 14, 1,1,0,'horizontal',true,true,30,p2io,p2io,1000,1], + ['fadefrombottom', 13, 1,1,0,'horizontal',true,true,31,p2io,p2io,1000,1], + ['fadetoleftfadefromright', 12, 2,1,0,'horizontal',true,true,32,p2io,p2io,1000,1], + ['fadetorightfadefromleft', 15, 2,1,0,'horizontal',true,true,33,p2io,p2io,1000,1], + ['fadetobottomfadefromtop', 14, 2,1,0,'horizontal',true,true,34,p2io,p2io,1000,1], + ['fadetotopfadefrombottom', 13, 2,1,0,'horizontal',true,true,35,p2io,p2io,1000,1], + ['parallaxtoright', 12, 3,1,0,'horizontal',true,true,36,p2io,p2i,1500,1], + ['parallaxtoleft', 15, 3,1,0,'horizontal',true,true,37,p2io,p2i,1500,1], + ['parallaxtotop', 14, 3,1,0,'horizontal',true,true,38,p2io,p1i,1500,1], + ['parallaxtobottom', 13, 3,1,0,'horizontal',true,true,39,p2io,p1i,1500,1], + ['scaledownfromright', 12, 4,1,0,'horizontal',true,true,40,p2io,p2i,1000,1], + ['scaledownfromleft', 15, 4,1,0,'horizontal',true,true,41,p2io,p2i,1000,1], + ['scaledownfromtop', 14, 4,1,0,'horizontal',true,true,42,p2io,p2i,1000,1], + ['scaledownfrombottom', 13, 4,1,0,'horizontal',true,true,43,p2io,p2i,1000,1], + ['zoomout', 13, 5,1,0,'horizontal',true,true,44,p2io,p2i,1000,1], + ['zoomin', 13, 6,1,0,'horizontal',true,true,45,p2io,p2i,1000,1], + ['notransition',26,0,1,0,'horizontal',true,null,46,p2io,p2i,1000,1], + ]; + + + if (comingtransition=="slidehorizontal") { + comingtransition = "slideleft" + if (slidedirection==1) + comingtransition = "slideright" + } + + + if (comingtransition=="slidevertical") { + comingtransition = "slideup" + if (slidedirection==1) + comingtransition = "slidedown" + } + + if (comingtransition=="slideoverhorizontal") { + comingtransition = "slideoverleft" + if (slidedirection==1) + comingtransition = "slideoverright" + } + + + if (comingtransition=="slideoververtical") { + comingtransition = "slideoverup" + if (slidedirection==1) + comingtransition = "slideoverdown" + } + + + if (comingtransition=="parallaxhorizontal") { + comingtransition = "parallaxtoleft" + if (slidedirection==1) + comingtransition = "parallaxtoright" + } + + + if (comingtransition=="parallaxvertical") { + comingtransition = "parallaxtotop" + if (slidedirection==1) + comingtransition = "parallaxtobottom" + } + + + // RANDOM TRANSITIONS + if (comingtransition == "random") { + comingtransition = Math.round(Math.random()*transitionsArray.length-1); + if (comingtransition>transitionsArray.length-1) comingtransition=transitionsArray.length-1; + } + + // RANDOM FLAT TRANSITIONS + if (comingtransition == "random-static") { + comingtransition = Math.round(Math.random()*flatTransitions.length-1); + if (comingtransition>flatTransitions.length-1) comingtransition=flatTransitions.length-1; + comingtransition = flatTransitions[comingtransition]; + } + + // RANDOM PREMIUM TRANSITIONS + if (comingtransition == "random-premium") { + comingtransition = Math.round(Math.random()*premiumTransitions.length-1); + if (comingtransition>premiumTransitions.length-1) comingtransition=premiumTransitions.length-1; + comingtransition = premiumTransitions[comingtransition]; + } + + //joomla only change: avoid problematic transitions that don't compatible with mootools + var problematicTransitions = [12,13,14,15,16,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45]; + if(opt.isJoomla == true && window.MooTools != undefined && problematicTransitions.indexOf(comingtransition) != -1){ + + var newTransIndex = Math.round(Math.random() * (premiumTransitions.length-2) ) + 1; + + //some limits fix + if (newTransIndex > premiumTransitions.length-1) + newTransIndex = premiumTransitions.length-1; + + if(newTransIndex == 0) + newTransIndex = 1; + + comingtransition = premiumTransitions[newTransIndex]; + } + + + + function findTransition() { + // FIND THE RIGHT TRANSITION PARAMETERS HERE + jQuery.each(transitionsArray,function(inde,trans) { + if (trans[0] == comingtransition || trans[8] == comingtransition) { + nexttrans = trans[1]; + specials = trans[2]; + STAindex = indexcounter; + } + indexcounter = indexcounter+1; + }) + } + + findTransition(); + + + + if (nexttrans>26) nexttrans = 26; + if (nexttrans<0) nexttrans = 0; + var obj = new Object(); + obj.nexttrans = nexttrans; + obj.STA = transitionsArray[STAindex]; // PREPARED DEFAULT SETTINGS PER TRANSITION + obj.specials = specials; + return obj; +} + + +/************************************* + - ANIMATE THE SLIDE - +*************************************/ + +var gSlideTransA = function(a,i) { + if (i==undefined || jQuery.isNumeric(a)) return a; + if (a==undefined) return a; + return a.split(",")[i]; +} + +var animateSlideIntern = function(nexttrans, comingtransition, container, opt, nextli, actli, nextsh, actsh, mtl) { + + // GET THE TRANSITION + + var ai = actli.index(), + ni = nextli.index(), + slidedirection = ni opt.delay ? opt.delay : masterspeed; + + // ADJUST MASTERSPEED + masterspeed = masterspeed + STA[4]; + + + /////////////////////// + // ADJUST SLOTS // + /////////////////////// + opt.slots = gSlideTransA(nextli.data('slotamount'),ctid); + opt.slots = opt.slots==undefined || opt.slots=="default" ? STA[12] : opt.slots=="random" ? Math.round(Math.random()*12+4) : STA[12]; + opt.slots = opt.slots < 1 ? comingtransition=="boxslide" ? Math.round(Math.random()*6+3) : comingtransition=="flyin" ? Math.round(Math.random()*4+1) : opt.slots : opt.slots; + opt.slots = (nexttrans==4 || nexttrans==5 || nexttrans==6) && opt.slots<3 ? 3 : opt.slots; + opt.slots = STA[3] != 0 ? Math.min(opt.slots,STA[3]) : opt.slots; + opt.slots = nexttrans==9 ? opt.width/20 : nexttrans==10 ? opt.height/20 : opt.slots; + + + ///////////////////////////////////////////// + // SET THE ACTUAL AMOUNT OF SLIDES !! // + // SET A RANDOM AMOUNT OF SLOTS // + /////////////////////////////////////////// + opt.rotate = gSlideTransA(nextli.data('rotate'),ctid); + opt.rotate = opt.rotate==undefined || opt.rotate=="default" ? 0 : opt.rotate==999 || opt.rotate=="random" ? Math.round(Math.random()*360) : opt.rotate; + opt.rotate = (!jQuery.support.transition || opt.ie || opt.ie9) ? 0 : opt.rotate; + + + + + + // prepareOneSlide + if (nexttrans!=11) { + if (STA[7] !=null) prepareOneSlide(actsh,opt,STA[7],STA[5]); + if (STA[6] !=null) prepareOneSlide(nextsh,opt,STA[6],STA[5]); + } + + // DEFAULT SETTINGS FOR NEXT AND ACT SH + mtl.add(punchgs.TweenLite.set(nextsh,{autoAlpha:1}),0); + mtl.add(punchgs.TweenLite.set(actsh,{autoAlpha:1}),0); + + var ei= gSlideTransA(nextli.data('easein'),ctid), + eo =gSlideTransA(nextli.data('easeout'),ctid); + + ei = ei==="default" ? STA[9] || punchgs.Power2.easeInOut : ei || STA[9] || punchgs.Power2.easeInOut; + eo = eo==="default" ? STA[10] || punchgs.Power2.easeInOut : eo || STA[10] || punchgs.Power2.easeInOut; + + + ///////////////////////////////////// + // THE SLOTSLIDE - TRANSITION I. // + //////////////////////////////////// + if (nexttrans==0) { // BOXSLIDE + + + // ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT + var maxz = Math.ceil(opt.height/opt.sloth); + var curz = 0; + nextsh.find('.slotslide').each(function(j) { + var ss=jQuery(this); + curz=curz+1; + if (curz==maxz) curz=0; + + mtl.add(punchgs.TweenLite.from(ss,(masterspeed)/600, + {opacity:0,top:(0-opt.sloth),left:(0-opt.slotw),rotation:opt.rotate,force3D:"auto",ease:ei}),((j*15) + ((curz)*30))/1500); + }); + } + ///////////////////////////////////// + // THE SLOTSLIDE - TRANSITION I. // + //////////////////////////////////// + if (nexttrans==1) { + + // ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT + var maxtime, + maxj = 0; + + nextsh.find('.slotslide').each(function(j) { + var ss=jQuery(this), + rand=Math.random()*masterspeed+300, + rand2=Math.random()*500+200; + if (rand+rand2>maxtime) { + maxtime = rand2+rand2; + maxj = j; + } + mtl.add(punchgs.TweenLite.from(ss,rand/1000, + {autoAlpha:0, force3D:"auto",rotation:opt.rotate,ease:ei}),rand2/1000); + }); + } + + + ///////////////////////////////////// + // THE SLOTSLIDE - TRANSITION I. // + //////////////////////////////////// + if (nexttrans==2) { + + var subtl = new punchgs.TimelineLite(); + // ALL OLD SLOTS SHOULD BE SLIDED TO THE RIGHT + actsh.find('.slotslide').each(function() { + var ss=jQuery(this); + subtl.add(punchgs.TweenLite.to(ss,masterspeed/1000,{left:opt.slotw,ease:ei, force3D:"auto",rotation:(0-opt.rotate)}),0); + mtl.add(subtl,0); + }); + + // ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT + nextsh.find('.slotslide').each(function() { + var ss=jQuery(this); + subtl.add(punchgs.TweenLite.from(ss,masterspeed/1000,{left:0-opt.slotw,ease:ei, force3D:"auto",rotation:opt.rotate}),0); + mtl.add(subtl,0); + }); + } + + + + ///////////////////////////////////// + // THE SLOTSLIDE - TRANSITION I. // + //////////////////////////////////// + if (nexttrans==3) { + var subtl = new punchgs.TimelineLite(); + + // ALL OLD SLOTS SHOULD BE SLIDED TO THE RIGHT + actsh.find('.slotslide').each(function() { + var ss=jQuery(this); + subtl.add(punchgs.TweenLite.to(ss,masterspeed/1000,{top:opt.sloth,ease:ei,rotation:opt.rotate,force3D:"auto",transformPerspective:600}),0); + mtl.add(subtl,0); + + }); + + // ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT + nextsh.find('.slotslide').each(function() { + var ss=jQuery(this); + subtl.add(punchgs.TweenLite.from(ss,masterspeed/1000,{top:0-opt.sloth,rotation:opt.rotate,ease:eo,force3D:"auto",transformPerspective:600}),0); + mtl.add(subtl,0); + }); + } + + + + ///////////////////////////////////// + // THE SLOTSLIDE - TRANSITION I. // + //////////////////////////////////// + if (nexttrans==4 || nexttrans==5) { + + setTimeout(function() { + actsh.find('.defaultimg').css({opacity:0}); + },100); + + + // ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT + var cspeed = (masterspeed)/1000, + ticker = cspeed, + subtl = new punchgs.TimelineLite(); + + actsh.find('.slotslide').each(function(i) { + var ss=jQuery(this); + var del = (i*cspeed)/opt.slots; + if (nexttrans==5) del = ((opt.slots-i-1)*cspeed)/(opt.slots)/1.5; + subtl.add(punchgs.TweenLite.to(ss,cspeed*3,{transformPerspective:600,force3D:"auto",top:0+opt.height,opacity:0.5,rotation:opt.rotate,ease:ei,delay:del}),0); + mtl.add(subtl,0); + }); + + // ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT + nextsh.find('.slotslide').each(function(i) { + var ss=jQuery(this); + var del = (i*cspeed)/opt.slots; + if (nexttrans==5) del = ((opt.slots-i-1)*cspeed)/(opt.slots)/1.5; + subtl.add(punchgs.TweenLite.from(ss,cspeed*3, + {top:(0-opt.height),opacity:0.5,rotation:opt.rotate,force3D:"auto",ease:punchgs.eo,delay:del}),0); + mtl.add(subtl,0); + + }); + + + } + + ///////////////////////////////////// + // THE SLOTSLIDE - TRANSITION I. // + //////////////////////////////////// + if (nexttrans==6) { + + + if (opt.slots<2) opt.slots=2; + if (opt.slots % 2) opt.slots = opt.slots+1; + + var subtl = new punchgs.TimelineLite(); + + //SET DEFAULT IMG UNVISIBLE + setTimeout(function() { + actsh.find('.defaultimg').css({opacity:0}); + },100); + + actsh.find('.slotslide').each(function(i) { + var ss=jQuery(this); + if (i+1opt.delay) masterspeed=opt.delay; + var subtl = new punchgs.TimelineLite(); + + //SET DEFAULT IMG UNVISIBLE + setTimeout(function() { + actsh.find('.defaultimg').css({opacity:0}); + },100); + + // ALL OLD SLOTS SHOULD BE SLIDED TO THE RIGHT + actsh.find('.slotslide').each(function() { + var ss=jQuery(this).find('div'); + subtl.add(punchgs.TweenLite.to(ss,masterspeed/1000,{ + left:(0-opt.slotw/2)+'px', + top:(0-opt.height/2)+'px', + width:(opt.slotw*2)+"px", + height:(opt.height*2)+"px", + opacity:0, + rotation:opt.rotate, + force3D:"auto", + ease:ei}),0); + mtl.add(subtl,0); + + }); + + ////////////////////////////////////////////////////////////// + // ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT // + /////////////////////////////////////////////////////////////// + nextsh.find('.slotslide').each(function(i) { + var ss=jQuery(this).find('div'); + + subtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000, + {left:0,top:0,opacity:0,transformPerspective:600}, + {left:(0-i*opt.slotw)+'px', + ease:eo, + force3D:"auto", + top:(0)+'px', + width:opt.width, + height:opt.height, + opacity:1,rotation:0, + delay:0.1}),0); + mtl.add(subtl,0); + }); + } + + + + + //////////////////////////////////// + // THE SLOTSZOOM - TRANSITION II. // + //////////////////////////////////// + if (nexttrans==8) { + + masterspeed = masterspeed * 3; + if (masterspeed>opt.delay) masterspeed=opt.delay; + var subtl = new punchgs.TimelineLite(); + + + + // ALL OLD SLOTS SHOULD BE SLIDED TO THE RIGHT + actsh.find('.slotslide').each(function() { + var ss=jQuery(this).find('div'); + subtl.add(punchgs.TweenLite.to(ss,masterspeed/1000, + {left:(0-opt.width/2)+'px', + top:(0-opt.sloth/2)+'px', + width:(opt.width*2)+"px", + height:(opt.sloth*2)+"px", + force3D:"auto", + ease:ei, + opacity:0,rotation:opt.rotate}),0); + mtl.add(subtl,0); + + }); + + + // ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT // + /////////////////////////////////////////////////////////////// + nextsh.find('.slotslide').each(function(i) { + var ss=jQuery(this).find('div'); + + subtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000, + {left:0, top:0,opacity:0,force3D:"auto"}, + {'left':(0)+'px', + 'top':(0-i*opt.sloth)+'px', + 'width':(nextsh.find('.defaultimg').data('neww'))+"px", + 'height':(nextsh.find('.defaultimg').data('newh'))+"px", + opacity:1, + ease:eo,rotation:0, + }),0); + mtl.add(subtl,0); + }); + } + + + //////////////////////////////////////// + // THE SLOTSFADE - TRANSITION III. // + ////////////////////////////////////// + if (nexttrans==9 || nexttrans==10) { + var ssamount=0; + // ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT + nextsh.find('.slotslide').each(function(i) { + var ss=jQuery(this); + ssamount++; + mtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000,{autoAlpha:0,force3D:"auto",transformPerspective:600}, + {autoAlpha:1,ease:ei,delay:(i*5)/1000}),0); + + }); + } + + /////////////////////////// + // SIMPLE FADE ANIMATION // + /////////////////////////// + if (nexttrans==11 || nexttrans==26) { + var ssamount=0; + if (nexttrans==26) masterspeed=0; + mtl.add(punchgs.TweenLite.fromTo(nextsh,masterspeed/1000,{autoAlpha:0},{autoAlpha:1,force3D:"auto",ease:ei}),0); + mtl.add(punchgs.TweenLite.to(actsh,masterspeed/1000,{autoAlpha:0,force3D:"auto",ease:ei}),0); + mtl.add(punchgs.TweenLite.set(nextsh.find('.defaultimg'),{autoAlpha:1}),0); + mtl.add(punchgs.TweenLite.set(actsh.find('defaultimg'),{autoAlpha:1}),0); + } + + if (nexttrans==12 || nexttrans==13 || nexttrans==14 || nexttrans==15) { + masterspeed = masterspeed; + if (masterspeed>opt.delay) masterspeed=opt.delay; + //masterspeed = 1000; + + setTimeout(function() { + punchgs.TweenLite.set(actsh.find('.defaultimg'),{autoAlpha:0}); + + },100); + + var oow = opt.width, + ooh = opt.height, + ssn=nextsh.find('.slotslide'), + twx = 0, + twy = 0, + op = 1, + scal = 1, + fromscale = 1, + speedy = masterspeed/1000, + speedy2 = speedy; + + + if (opt.sliderLayout=="fullwidth" || opt.sliderLayout=="fullscreen") { + oow=ssn.width(); + ooh=ssn.height(); + } + + + + if (nexttrans==12) + twx = oow; + else + if (nexttrans==15) + twx = 0-oow; + else + if (nexttrans==13) + twy = ooh; + else + if (nexttrans==14) + twy = 0-ooh; + + + // DEPENDING ON EXTENDED SPECIALS, DIFFERENT SCALE AND OPACITY FUNCTIONS NEED TO BE ADDED + if (specials == 1) op = 0; + if (specials == 2) op = 0; + if (specials == 3) speedy = masterspeed / 1300; + + if (specials==4 || specials==5) + scal=0.6; + if (specials==6 ) + scal=1.4; + + + if (specials==5 || specials==6) { + fromscale=1.4; + op=0; + oow=0; + ooh=0;twx=0;twy=0; + } + if (specials==6) fromscale=0.6; + var dd = 0; + + if (specials==7) { + oow = 0; + ooh = 0; + } + + mtl.add(punchgs.TweenLite.from(ssn,speedy, + {left:twx, top:twy, scale:fromscale, opacity:op,rotation:opt.rotate,ease:ei,force3D:"auto"}),0); + + var ssa=actsh.find('.slotslide'); + + if (specials==4 || specials==5) { + oow = 0; ooh=0; + } + + if (specials!=1) + switch (nexttrans) { + case 12: + mtl.add(punchgs.TweenLite.to(ssa,speedy2,{'left':(0-oow)+'px',force3D:"auto",scale:scal,opacity:op,rotation:opt.rotate,ease:eo}),0); + break; + case 15: + mtl.add(punchgs.TweenLite.to(ssa,speedy2,{'left':(oow)+'px',force3D:"auto",scale:scal,opacity:op,rotation:opt.rotate,ease:eo}),0); + break; + case 13: + mtl.add(punchgs.TweenLite.to(ssa,speedy2,{'top':(0-ooh)+'px',force3D:"auto",scale:scal,opacity:op,rotation:opt.rotate,ease:eo}),0); + break; + case 14: + mtl.add(punchgs.TweenLite.to(ssa,speedy2,{'top':(ooh)+'px',force3D:"auto",scale:scal,opacity:op,rotation:opt.rotate,ease:eo}),0); + break; + } + } + + ////////////////////////////////////// + // THE SLOTSLIDE - TRANSITION XVI. // + ////////////////////////////////////// + if (nexttrans==16) { // PAPERCUT + + + var subtl = new punchgs.TimelineLite(); + mtl.add(punchgs.TweenLite.set(actli,{'position':'absolute','z-index':20}),0); + mtl.add(punchgs.TweenLite.set(nextli,{'position':'absolute','z-index':15}),0); + + + // PREPARE THE CUTS + actli.wrapInner('
        '); + + actli.find('.tp-half-one').clone(true).appendTo(actli).addClass("tp-half-two"); + actli.find('.tp-half-two').removeClass('tp-half-one'); + + var oow = opt.width, + ooh = opt.height; + if (opt.autoHeight=="on") + ooh = container.height(); + + + actli.find('.tp-half-one .defaultimg').wrap('
        ') + actli.find('.tp-half-two .defaultimg').wrap('
        ') + actli.find('.tp-half-two .defaultimg').css({position:'absolute',top:'-50%'}); + actli.find('.tp-half-two .tp-caption').wrapAll('
        '); + + mtl.add(punchgs.TweenLite.set(actli.find('.tp-half-two'), + {width:oow,height:ooh,overflow:'hidden',zIndex:15,position:'absolute',top:ooh/2,left:'0px',transformPerspective:600,transformOrigin:"center bottom"}),0); + + mtl.add(punchgs.TweenLite.set(actli.find('.tp-half-one'), + {width:oow,height:ooh/2,overflow:'visible',zIndex:10,position:'absolute',top:'0px',left:'0px',transformPerspective:600,transformOrigin:"center top"}),0); + + // ANIMATE THE CUTS + var img=actli.find('.defaultimg'), + ro1=Math.round(Math.random()*20-10), + ro2=Math.round(Math.random()*20-10), + ro3=Math.round(Math.random()*20-10), + xof = Math.random()*0.4-0.2, + yof = Math.random()*0.4-0.2, + sc1=Math.random()*1+1, + sc2=Math.random()*1+1, + sc3=Math.random()*0.3+0.3; + + mtl.add(punchgs.TweenLite.set(actli.find('.tp-half-one'),{overflow:'hidden'}),0); + mtl.add(punchgs.TweenLite.fromTo(actli.find('.tp-half-one'),masterspeed/800, + {width:oow,height:ooh/2,position:'absolute',top:'0px',left:'0px',force3D:"auto",transformOrigin:"center top"}, + {scale:sc1,rotation:ro1,y:(0-ooh-ooh/4),autoAlpha:0,ease:ei}),0); + mtl.add(punchgs.TweenLite.fromTo(actli.find('.tp-half-two'),masterspeed/800, + {width:oow,height:ooh,overflow:'hidden',position:'absolute',top:ooh/2,left:'0px',force3D:"auto",transformOrigin:"center bottom"}, + {scale:sc2,rotation:ro2,y:ooh+ooh/4,ease:ei,autoAlpha:0,onComplete:function() { + // CLEAN UP + punchgs.TweenLite.set(actli,{'position':'absolute','z-index':15}); + punchgs.TweenLite.set(nextli,{'position':'absolute','z-index':20}); + if (actli.find('.tp-half-one').length>0) { + actli.find('.tp-half-one .defaultimg').unwrap(); + actli.find('.tp-half-one .slotholder').unwrap(); + } + actli.find('.tp-half-two').remove(); + }}),0); + + subtl.add(punchgs.TweenLite.set(nextsh.find('.defaultimg'),{autoAlpha:1}),0); + + if (actli.html()!=null) + mtl.add(punchgs.TweenLite.fromTo(nextli,(masterspeed-200)/1000, + {scale:sc3,x:(opt.width/4)*xof, y:(ooh/4)*yof,rotation:ro3,force3D:"auto",transformOrigin:"center center",ease:eo}, + {autoAlpha:1,scale:1,x:0,y:0,rotation:0}),0); + + mtl.add(subtl,0); + + + } + + //////////////////////////////////////// + // THE SLOTSLIDE - TRANSITION XVII. // + /////////////////////////////////////// + if (nexttrans==17) { // 3D CURTAIN HORIZONTAL + + + // ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT + + nextsh.find('.slotslide').each(function(j) { + var ss=jQuery(this); + + mtl.add(punchgs.TweenLite.fromTo(ss,(masterspeed)/800, + {opacity:0,rotationY:0,scale:0.9,rotationX:-110,force3D:"auto",transformPerspective:600,transformOrigin:"center center"}, + {opacity:1,top:0,left:0,scale:1,rotation:0,rotationX:0,force3D:"auto",rotationY:0,ease:ei,delay:j*0.06}),0); + + }); + } + + + + //////////////////////////////////////// + // THE SLOTSLIDE - TRANSITION XVIII. // + /////////////////////////////////////// + if (nexttrans==18) { // 3D CURTAIN VERTICAL + + // ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT + nextsh.find('.slotslide').each(function(j) { + var ss=jQuery(this); + + mtl.add(punchgs.TweenLite.fromTo(ss,(masterspeed)/500, + {autoAlpha:0,rotationY:110,scale:0.9,rotationX:10,force3D:"auto",transformPerspective:600,transformOrigin:"center center"}, + {autoAlpha:1,top:0,left:0,scale:1,rotation:0,rotationX:0,force3D:"auto",rotationY:0,ease:ei,delay:j*0.06}),0); + }); + + + + } + + + //////////////////////////////////////// + // THE SLOTSLIDE - TRANSITION XIX. // + /////////////////////////////////////// + if (nexttrans==19 || nexttrans==22) { // IN CUBE + + var subtl = new punchgs.TimelineLite(); + //SET DEFAULT IMG UNVISIBLE + + mtl.add(punchgs.TweenLite.set(actli,{zIndex:20}),0); + mtl.add(punchgs.TweenLite.set(nextli,{zIndex:20}),0); + setTimeout(function() { + actsh.find('.defaultimg').css({opacity:0}); + },100); + var rot = 90, + op = 1, + torig ="center center "; + + if (slidedirection==1) rot = -90; + + if (nexttrans==19) { + torig = torig+"-"+opt.height/2; + op=0; + + } else { + torig = torig+opt.height/2; + } + + // ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT + punchgs.TweenLite.set(container,{transformStyle:"flat",backfaceVisibility:"hidden",transformPerspective:600}); + + nextsh.find('.slotslide').each(function(j) { + var ss=jQuery(this); + + subtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000, + {transformStyle:"flat",backfaceVisibility:"hidden",left:0,rotationY:opt.rotate,z:10,top:0,scale:1,force3D:"auto",transformPerspective:600,transformOrigin:torig,rotationX:rot}, + {left:0,rotationY:0,top:0,z:0, scale:1,force3D:"auto",rotationX:0, delay:(j*50)/1000,ease:ei}),0); + subtl.add(punchgs.TweenLite.to(ss,0.1,{autoAlpha:1,delay:(j*50)/1000}),0); + mtl.add(subtl); + }); + + actsh.find('.slotslide').each(function(j) { + var ss=jQuery(this); + var rot = -90; + if (slidedirection==1) rot = 90; + + subtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000, + {transformStyle:"flat",backfaceVisibility:"hidden",autoAlpha:1,rotationY:0,top:0,z:0,scale:1,force3D:"auto",transformPerspective:600,transformOrigin:torig, rotationX:0}, + {autoAlpha:1,rotationY:opt.rotate,top:0,z:10, scale:1,rotationX:rot, delay:(j*50)/1000,force3D:"auto",ease:eo}),0); + + mtl.add(subtl); + }); + mtl.add(punchgs.TweenLite.set(actli,{zIndex:18}),0); + } + + + + + //////////////////////////////////////// + // THE SLOTSLIDE - TRANSITION XX. // + /////////////////////////////////////// + if (nexttrans==20 ) { // FLYIN + + + setTimeout(function() { + actsh.find('.defaultimg').css({opacity:0}); + },100); + + if (slidedirection==1) { + var ofx = -opt.width + var rot =80; + var torig = "20% 70% -"+opt.height/2; + } else { + var ofx = opt.width; + var rot = -80; + var torig = "80% 70% -"+opt.height/2; + } + + + nextsh.find('.slotslide').each(function(j) { + var ss=jQuery(this), + d = (j*50)/1000; + + + + mtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000, + {left:ofx,rotationX:40,z:-600, opacity:op,top:0,scale:1,force3D:"auto",transformPerspective:600,transformOrigin:torig,transformStyle:"flat",rotationY:rot}, + {left:0,rotationX:0,opacity:1,top:0,z:0, scale:1,rotationY:0, delay:d,ease:ei}),0); + + + }); + actsh.find('.slotslide').each(function(j) { + var ss=jQuery(this), + d = (j*50)/1000; + d = j>0 ? d + masterspeed/9000 : 0; + + if (slidedirection!=1) { + var ofx = -opt.width/2 + var rot =30; + var torig = "20% 70% -"+opt.height/2; + } else { + var ofx = opt.width/2; + var rot = -30; + var torig = "80% 70% -"+opt.height/2; + } + eo=punchgs.Power2.easeInOut; + + mtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000, + {opacity:1,rotationX:0,top:0,z:0,scale:1,left:0, force3D:"auto",transformPerspective:600,transformOrigin:torig, transformStyle:"flat",rotationY:0}, + {opacity:1,rotationX:20,top:0, z:-600, left:ofx, force3D:"auto",rotationY:rot, delay:d,ease:eo}),0); + + + }); + } + + //////////////////////////////////////// + // THE SLOTSLIDE - TRANSITION XX. // + /////////////////////////////////////// + if (nexttrans==21 || nexttrans==25) { // TURNOFF + + + //SET DEFAULT IMG UNVISIBLE + + setTimeout(function() { + actsh.find('.defaultimg').css({opacity:0}); + },100); + var rot = 90, + ofx = -opt.width, + rot2 = -rot; + + if (slidedirection==1) { + if (nexttrans==25) { + var torig = "center top 0"; + rot = opt.rotate; + } else { + var torig = "left center 0"; + rot2 = opt.rotate; + } + + } else { + ofx = opt.width; + rot = -90; + if (nexttrans==25) { + var torig = "center bottom 0" + rot2 = -rot; + rot = opt.rotate; + } else { + var torig = "right center 0"; + rot2 = opt.rotate; + } + } + + nextsh.find('.slotslide').each(function(j) { + var ss=jQuery(this), + ms2 = ((masterspeed/1.5)/3); + + + mtl.add(punchgs.TweenLite.fromTo(ss,(ms2*2)/1000, + {left:0,transformStyle:"flat",rotationX:rot2,z:0, autoAlpha:0,top:0,scale:1,force3D:"auto",transformPerspective:1200,transformOrigin:torig,rotationY:rot}, + {left:0,rotationX:0,top:0,z:0, autoAlpha:1,scale:1,rotationY:0,force3D:"auto",delay:ms2/1000, ease:ei}),0); + }); + + + if (slidedirection!=1) { + ofx = -opt.width + rot = 90; + + if (nexttrans==25) { + torig = "center top 0" + rot2 = -rot; + rot = opt.rotate; + } else { + torig = "left center 0"; + rot2 = opt.rotate; + } + + } else { + ofx = opt.width; + rot = -90; + if (nexttrans==25) { + torig = "center bottom 0" + rot2 = -rot; + rot = opt.rotate; + } else { + torig = "right center 0"; + rot2 = opt.rotate; + } + } + + actsh.find('.slotslide').each(function(j) { + var ss=jQuery(this); + mtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000, + {left:0,transformStyle:"flat",rotationX:0,z:0, autoAlpha:1,top:0,scale:1,force3D:"auto",transformPerspective:1200,transformOrigin:torig,rotationY:0}, + {left:0,rotationX:rot2,top:0,z:0,autoAlpha:1,force3D:"auto", scale:1,rotationY:rot,ease:eo}),0); + }); + } + + + + //////////////////////////////////////// + // THE SLOTSLIDE - TRANSITION XX. // + /////////////////////////////////////// + if (nexttrans==23 || nexttrans == 24) { // cube-horizontal - inboxhorizontal + + //SET DEFAULT IMG UNVISIBLE + setTimeout(function() { + actsh.find('.defaultimg').css({opacity:0}); + },100); + var rot = -90, + op = 1, + opx=0; + + if (slidedirection==1) rot = 90; + if (nexttrans==23) { + var torig = "center center -"+opt.width/2; + op=0; + } else + var torig = "center center "+opt.width/2; + + punchgs.TweenLite.set(container,{transformStyle:"preserve-3d",backfaceVisibility:"hidden",perspective:2500}); + nextsh.find('.slotslide').each(function(j) { + var ss=jQuery(this); + mtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000, + {left:opx,rotationX:opt.rotate,force3D:"auto",opacity:op,top:0,scale:1,transformPerspective:1200,transformOrigin:torig,rotationY:rot}, + {left:0,rotationX:0,autoAlpha:1,top:0,z:0, scale:1,rotationY:0, delay:(j*50)/500,ease:ei}),0); + }); + + rot = 90; + if (slidedirection==1) rot = -90; + + actsh.find('.slotslide').each(function(j) { + var ss=jQuery(this); + mtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000, + {left:0,rotationX:0,top:0,z:0,scale:1,force3D:"auto",transformStyle:"flat",transformPerspective:1200,transformOrigin:torig, rotationY:0}, + {left:opx,rotationX:opt.rotate,top:0, scale:1,rotationY:rot, delay:(j*50)/500,ease:eo}),0); + if (nexttrans==23) mtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/2000,{autoAlpha:1},{autoAlpha:0,delay:(j*50)/500 + masterspeed/3000,ease:eo}),0); + + }); + } + return mtl; +} +})(jQuery); \ No newline at end of file diff --git a/plugins/revslider/public/assets/js/extensions/source/revolution.extension.video.js b/plugins/revslider/public/assets/js/extensions/source/revolution.extension.video.js new file mode 100644 index 0000000..40e00e4 --- /dev/null +++ b/plugins/revslider/public/assets/js/extensions/source/revolution.extension.video.js @@ -0,0 +1,840 @@ +/******************************************** + * REVOLUTION 5.0 EXTENSION - VIDEO FUNCTIONS + * @version: 1.0.0 (03.08.2015) + * @requires jquery.themepunch.revolution.js + * @author ThemePunch +*********************************************/ + +(function($) { + +var _R = jQuery.fn.revolution, + _ISM = _R.is_mobile(); + +/////////////////////////////////////////// +// EXTENDED FUNCTIONS AVAILABLE GLOBAL // +/////////////////////////////////////////// +jQuery.extend(true,_R, { + + resetVideo : function(_nc,opt) { + switch (_nc.data('videotype')) { + case "youtube": + var player=_nc.data('player'); + try{ + if (_nc.data('forcerewind')=="on" && !_ISM) { + var s = getStartSec(_nc.data('videostartat')); + s= s==-1 ? 0 : s; + + _nc.data('player').seekTo(s); + + _nc.data('player').pauseVideo(); + } + + } catch(e) {} + if (_nc.find('.tp-videoposter').length==0) + punchgs.TweenLite.to(_nc.find('iframe'),0.3,{autoAlpha:1,display:"block",ease:punchgs.Power3.easeInOut}); + break; + + case "vimeo": + var f = $f(_nc.find('iframe').attr("id")); + try{ + if (_nc.data('forcerewind')=="on" && !_ISM) { + var s = getStartSec(_nc.data('videostartat')), + ct = 0; + s= s==-1 ? 0 : s; + f.api("seekTo",s); + f.api("pause"); + } + + } catch(e) {} + if (_nc.find('.tp-videoposter').length==0) + punchgs.TweenLite.to(_nc.find('iframe'),0.3,{autoAlpha:1,display:"block",ease:punchgs.Power3.easeInOut}); + break; + + case "html5": + if (_ISM && _nc.data('disablevideoonmobile')==1) return false; + + var jvideo = _nc.find('video'), + video = jvideo[0]; + + + punchgs.TweenLite.to(jvideo,0.3,{autoAlpha:1,display:"block",ease:punchgs.Power3.easeInOut}); + + if (_nc.data('forcerewind')=="on" && !_nc.hasClass("videoisplaying")) { + try{ + var s = getStartSec(_nc.data('videostartat')); + video.currentTime = s == -1 ? 0 : s; + } catch(e) {} + } + + if (_nc.data('volume')=="mute") + video.muted = true; + break; + } + }, + + + stopVideo : function(_nc,opt) { + + switch (_nc.data('videotype')) { + case "youtube": + try{ + var player=_nc.data('player'); + player.pauseVideo(); + } catch(e) {} + break; + case "vimeo": + try{ + var f = $f(_nc.find('iframe').attr("id")); + f.api("pause"); + + } catch(e) {} + break; + case "html5": + var jvideo = _nc.find('video'), + video = jvideo[0]; + video.pause(); + break; + } + }, + + playVideo : function(_nc,opt) { + + clearTimeout(_nc.data('videoplaywait')); + switch (_nc.data('videotype')) { + case "youtube": + + if (_nc.find('iframe').length==0) { + _nc.append(_nc.data('videomarkup')); + addVideoListener(_nc,opt,true); + } else { + if (_nc.data('player').playVideo !=undefined) { + _nc.data('player').playVideo(); + var s = getStartSec(_nc.data('videostartat')); + if (s!=-1) _nc.data('player').seekTo(s); + } else { + _nc.data('videoplaywait',setTimeout(function() { + _R.playVideo(_nc,opt); + },50)); + } + } + break; + case "vimeo": + + if (_nc.find('iframe').length==0) { + _nc.append(_nc.data('videomarkup')); + addVideoListener(_nc,opt,true); + + } else { + if (_nc.hasClass("rs-apiready")) { + var id = _nc.find('iframe').attr("id"), + f = $f(id); + if (f.api("play")==undefined) { + _nc.data('videoplaywait',setTimeout(function() { + + _R.playVideo(_nc,opt); + },50)); + } else { + setTimeout(function() { + + f.api("play"); + var s = getStartSec(_nc.data('videostartat')); + if (s!=-1) f.api("seekTo",s); + },510); + } + } else { + _nc.data('videoplaywait',setTimeout(function() { + + _R.playVideo(_nc,opt); + },50)); + } + } + break; + case "html5": + if (_ISM && _nc.data('disablevideoonmobile')==1) return false; + var jvideo = _nc.find('video'), + video = jvideo[0], + html5vid = jvideo.parent(); + + if (html5vid.data('metaloaded') != 1) { + addEvent(video,'loadedmetadata',function(_nc) { + _R.resetVideo(_nc,opt); + video.play(); + var s = getStartSec(_nc.data('videostartat')); + if (s!=-1) video.currentTime = s; + }(_nc)); + } else { + video.play(); + var s = getStartSec(_nc.data('videostartat')); + if (s!=-1) video.currentTime = s; + } + break; + } + }, + + isVideoPlaying : function(_nc,opt) { + var ret = false; + if (opt.playingvideos != undefined) { + jQuery.each(opt.playingvideos,function(i,nc) { + if (_nc.attr('id') == nc.attr('id')) + ret = true; + }); + } + return ret; + }, + + prepareCoveredVideo : function(asprat,opt,nextcaption) { + var ifr = nextcaption.find('iframe'), + wa = asprat.split(':')[0], + ha = asprat.split(':')[1], + od = opt.width/opt.height, + vd = wa/ha, + nvh = (od/vd)*100, + nvw = (vd/od)*100; + if (od>vd) + punchgs.TweenLite.to(ifr,0.001,{height:nvh+"%", width:"100%", top:-(nvh-100)/2+"%",left:"0px",position:"absolute"}); + else + punchgs.TweenLite.to(ifr,0.001,{width:nvw+"%", height:"100%", left:-(nvw-100)/2+"%",top:"0px",position:"absolute"}); + + }, + + checkVideoApis : function(_nc,opt,addedApis) { + var httpprefix = location.protocol === 'https:' ? "https" : "http"; + + if ((_nc.data('ytid')!=undefined || _nc.find('iframe').length>0 && _nc.find('iframe').attr('src').toLowerCase().indexOf('youtube')>0)) opt.youtubeapineeded = true; + if ((_nc.data('ytid')!=undefined || _nc.find('iframe').length>0 && _nc.find('iframe').attr('src').toLowerCase().indexOf('youtube')>0) && addedApis.addedyt==0) { + addedApis.addedyt=1; + var s = document.createElement("script"); + s.src = "https://www.youtube.com/iframe_api"; /* Load Player API*/ + var before = document.getElementsByTagName("script")[0], + loadit = true; + jQuery('head').find('*').each(function(){ + if (jQuery(this).attr('src') == "htps://www.youtube.com/iframe_api") + loadit = false; + }); + if (loadit) before.parentNode.insertBefore(s, before); + } + + if ((_nc.data('vimeoid')!=undefined || _nc.find('iframe').length>0 && _nc.find('iframe').attr('src').toLowerCase().indexOf('vimeo')>0)) opt.vimeoapineeded = true; + if ((_nc.data('vimeoid')!=undefined || _nc.find('iframe').length>0 && _nc.find('iframe').attr('src').toLowerCase().indexOf('vimeo')>0) && addedApis.addedvim==0) { + addedApis.addedvim=1; + var f = document.createElement("script"), + before = document.getElementsByTagName("script")[0], + loadit = true; + f.src = httpprefix+"://f.vimeocdn.com/js/froogaloop2.min.js"; /* Load Player API*/ + + jQuery('head').find('*').each(function(){ + if (jQuery(this).attr('src') == httpprefix+"://a.vimeocdn.com/js/froogaloop2.min.js") + loadit = false; + }); + if (loadit) + before.parentNode.insertBefore(f, before); + } + return addedApis; + }, + + manageVideoLayer : function(_nc,opt,recalled,internrecalled) { + // YOUTUBE AND VIMEO LISTENRES INITIALISATION + var vida = _nc.data("videoattributes"), + vidytid = _nc.data('ytid'), + vimeoid = _nc.data('vimeoid'), + videopreload = _nc.data('videpreload'), + videomp = _nc.data('videomp4'), + videowebm = _nc.data('videowebm'), + videoogv = _nc.data('videoogv'), + videocontrols = _nc.data('videocontrols'), + httpprefix = "http", + videoloop = _nc.data('videoloop')=="loop" ? "loop" : _nc.data('videoloop')=="loopandnoslidestop" ? "loop" : "", + videotype = (videomp!=undefined || videowebm!=undefined) ? "html5" : + (vidytid!=undefined && String(vidytid).length>1) ? "youtube" : + (vimeoid!=undefined && String(vimeoid).length>1) ? "vimeo" : "none", + newvideotype = (videotype=="html5" && _nc.find('video').length==0) ? "html5" : + (videotype=="youtube" && _nc.find('iframe').length==0) ? "youtube" : + (videotype=="vimeo" && _nc.find('iframe').length==0) ? "vimeo" : "none"; + + _nc.data('videotype',videotype); + // ADD HTML5 VIDEO IF NEEDED + switch (newvideotype) { + case "html5": + if (videocontrols!="controls") videocontrols=""; + var apptxt = ''; + + + if (videocontrols=="controls") + apptxt = apptxt + ('
        '+ + '
        '+ + '
        '+ + '
        '+ + '
        '+ + '
        '+ + '
        '); + + _nc.data('videomarkup',apptxt) + _nc.append(apptxt); + + // START OF HTML5 VIDEOS + if ((_ISM && _nc.data('disablevideoonmobile')==1) ||_R.isIE(8)) _nc.find('video').remove(); + + // ADD HTML5 VIDEO CONTAINER + _nc.find('video').each(function(i) { + var video = this, + jvideo = jQuery(this); + + if (!jvideo.parent().hasClass("html5vid")) + jvideo.wrap('
        '); + + var html5vid = jvideo.parent(); + if (html5vid.data('metaloaded') != 1) { + addEvent(video,'loadedmetadata',function(_nc) { + htmlvideoevents(_nc,opt); + _R.resetVideo(_nc,opt); + }(_nc)); + } + }); + break; + case "youtube": + httpprefix = "http"; + if (videocontrols=="none") { + vida = vida.replace("controls=1","controls=0"); + if (vida.toLowerCase().indexOf('controls')==-1) + vida = vida+"&controls=0"; + } + + var s = getStartSec(_nc.data('videostartat')), + e = getStartSec(_nc.data('videoendat')); + + if (s!=-1) vida=vida+"&start="+s; + if (e!=-1) vida=vida+"&end="+e; + + _nc.data('videomarkup',''); + break; + + case "vimeo": + if (location.protocol === 'https:') + httpprefix = "https"; + _nc.data('videomarkup',''); + break; + } + + //if (videotype=="vimeo" || videotype=="youtube") { + // IF VIDEOPOSTER EXISTING + if (_nc.data('videoposter')!=undefined && _nc.data('videoposter').length>2) { + if (_nc.find('.tp-videoposter').length==0) + _nc.append('
        '); + if (_nc.find('iframe').length==0) + _nc.find('.tp-videoposter').click(function() { + + _R.playVideo(_nc,opt); + + if (_ISM) { + if (_nc.data('disablevideoonmobile')==1) return false; + punchgs.TweenLite.to(_nc.find('.tp-videoposter'),0.3,{autoAlpha:0,force3D:"auto",ease:punchgs.Power3.easeInOut}); + punchgs.TweenLite.to(_nc.find('iframe'),0.3,{autoAlpha:1,display:"block",ease:punchgs.Power3.easeInOut}); + } + }) + } else { + if (_nc.find('iframe').length==0 && (videotype=="youtube" || videotype=="vimeo")) { + + _nc.append(_nc.data('videomarkup')); + addVideoListener(_nc,opt,false); + } + } + + // ADD DOTTED OVERLAY IF NEEDED + if (_nc.data('dottedoverlay')!="none" && _nc.data('dottedoverlay')!=undefined && _nc.find('.tp-dottedoverlay').length!=1) + _nc.append('
        '); + + _nc.addClass("HasListener"); + + if (_nc.data('bgvideo')==1) { + punchgs.TweenLite.set(_nc.find('video, iframe'),{autoAlpha:0}); + } + } + +}); + + + + + +////////////////////////////////////////////////////// +// * Revolution Slider - VIDEO / API FUNCTIONS // +// * @version: 1.0 (30.10.2014) // +// * @author ThemePunch // +////////////////////////////////////////////////////// + +function getStartSec(st) { + return st == undefined ? -1 :jQuery.isNumeric(st) ? st : st.split(":").length>1 ? parseInt(st.split(":")[0],0)*60 + parseInt(st.split(":")[1],0) : st; +}; + +// - VIMEO ADD EVENT ///// +var addEvent = function(element, eventName, callback) { + if (element.addEventListener) + element.addEventListener(eventName, callback, false); + else + element.attachEvent(eventName, callback, false); +}; + +var getVideoDatas = function(p,t,d) { + var a = {}; + a.video = p; + a.videotype = t; + a.settings = d; + return a; +} + + +var addVideoListener = function(_nc,opt,startnow) { + + var ifr = _nc.find('iframe'), + frameID = "iframe"+Math.round(Math.random()*100000+1), + loop = _nc.data('videoloop'), + pforv = loop != "loopandnoslidestop"; + + loop = loop =="loop" || loop =="loopandnoslidestop"; + + // CARE ABOUT ASPECT RATIO + if (_nc.data('forcecover')==1) { + _nc.removeClass("fullscreenvideo").addClass("coverscreenvideo"); + var asprat = _nc.data('aspectratio'); + if (asprat!=undefined && asprat.split(":").length>1) + _R.prepareCoveredVideo(asprat,opt,_nc); + } + + // IF LISTENER DOES NOT EXIST YET + ifr.attr('id',frameID); + + if (startnow) _nc.data('startvideonow',true); + + if (_nc.data('videolistenerexist')!==1) { + switch (_nc.data('videotype')) { + // YOUTUBE LISTENER + case "youtube": + + var player = new YT.Player(frameID, { + events: { + "onStateChange": function(event) { + var embedCode = event.target.getVideoEmbedCode(), + ytcont = jQuery('#'+embedCode.split('id="')[1].split('"')[0]), + container = ytcont.closest('.tp-simpleresponsive'), + _nc = ytcont.parent(), + player = ytcont.parent().data('player'); + if (event.data == YT.PlayerState.PLAYING) { + punchgs.TweenLite.to(_nc.find('.tp-videoposter'),0.3,{autoAlpha:0,force3D:"auto",ease:punchgs.Power3.easeInOut}); + punchgs.TweenLite.to(_nc.find('iframe'),0.3,{autoAlpha:1,display:"block",ease:punchgs.Power3.easeInOut}); + if (_nc.data('volume')=="mute") + player.mute(); + opt.videoplaying=true; + addVidtoList(_nc,opt); + container.trigger('stoptimer'); + opt.c.trigger('revolution.slide.onvideoplay',getVideoDatas(player,"youtube",_nc.data())); + } else { + if (event.data==0 && loop) { + player.playVideo(); + var s = getStartSec(_nc.data('videostartat')); + if (s!=-1) player.seekTo(s); + } + if ((event.data==0 || event.data==2) && _nc.data('showcoveronpause')=="on" && _nc.find('.tp-videoposter').length>0) { + punchgs.TweenLite.to(_nc.find('.tp-videoposter'),0.3,{autoAlpha:1,force3D:"auto",ease:punchgs.Power3.easeInOut}); + punchgs.TweenLite.to(_nc.find('iframe'),0.3,{autoAlpha:0,ease:punchgs.Power3.easeInOut}); + } + if ((event.data!=-1 && event.data!=3)) { + opt.videoplaying=false; + remVidfromList(_nc,opt); + container.trigger('starttimer'); + opt.c.trigger('revolution.slide.onvideostop',getVideoDatas(player,"youtube",_nc.data())); + } + if (event.data==0 && _nc.data('nextslideatend')==true) { + opt.c.revnext(); + remVidfromList(_nc,opt); + } else { + remVidfromList(_nc,opt); + opt.videoplaying=false; + container.trigger('starttimer'); + opt.c.trigger('revolution.slide.onvideostop',getVideoDatas(player,"youtube",_nc.data())); + } + } + }, + 'onReady': function(event) { + + var embedCode = event.target.getVideoEmbedCode(), + ytcont = jQuery('#'+embedCode.split('id="')[1].split('"')[0]), + _nc = ytcont.parent(), + videorate = _nc.data('videorate'), + videostart = _nc.data('videostart'); + + _nc.addClass("rs-apiready"); + if (videorate!=undefined) + event.target.setPlaybackRate(parseFloat(videorate)); + + // PLAY VIDEO IF THUMBNAIL HAS BEEN CLICKED + _nc.find('.tp-videoposter').unbind("click"); + _nc.find('.tp-videoposter').click(function() { + if (!_ISM) { + player.playVideo(); + } + }) + + if (_nc.data('startvideonow')) { + + _nc.data('player').playVideo(); + var s = getStartSec(_nc.data('videostartat')); + if (s!=-1) _nc.data('player').seekTo(s); + //_nc.find('.tp-videoposter').click(); + } + _nc.data('videolistenerexist',1); + } + } + }); + _nc.data('player',player); + break; + + // VIMEO LISTENER + case "vimeo": + var isrc = ifr.attr('src'), + queryParameters = {}, queryString = isrc, + re = /([^&=]+)=([^&]*)/g, m; + // Creates a map with the query string parameters + while (m = re.exec(queryString)) { + queryParameters[decodeURIComponent(m[1])] = decodeURIComponent(m[2]); + } + if (queryParameters['player_id']!=undefined) + isrc = isrc.replace(queryParameters['player_id'],frameID); + else + isrc=isrc+"&player_id="+frameID; + try{ isrc = isrc.replace('api=0','api=1'); } catch(e) {} + isrc=isrc+"&api=1"; + ifr.attr('src',isrc); + + + var player = _nc.find('iframe')[0], + vimcont = jQuery('#'+frameID), + f = $f(frameID); + + f.addEvent('ready', function(){ + + _nc.addClass("rs-apiready"); + f.addEvent('play', function(data) { + _nc.data('nextslidecalled',0); + punchgs.TweenLite.to(_nc.find('.tp-videoposter'),0.3,{autoAlpha:0,force3D:"auto",ease:punchgs.Power3.easeInOut}); + punchgs.TweenLite.to(_nc.find('iframe'),0.3,{autoAlpha:1,display:"block",ease:punchgs.Power3.easeInOut}); + opt.c.trigger('revolution.slide.onvideoplay',getVideoDatas(f,"vimeo",_nc.data())); + opt.videoplaying=true; + addVidtoList(_nc,opt); + if (pforv) + opt.c.trigger('stoptimer'); + if (_nc.data('volume')=="mute") + f.api('setVolume',"0"); + }); + + f.addEvent('playProgress',function(data) { + var et = getStartSec(_nc.data('videoendat')) + + + if (et!=0 && (Math.abs(et-data.seconds) <0.3 && et>data.seconds) && _nc.data('nextslidecalled') != 1) { + if (loop) { + + f.api("play"); + var s = getStartSec(_nc.data('videostartat')); + if (s!=-1) f.api("seekTo",s); + } else { + if (_nc.data('nextslideatend')==true) { + _nc.data('nextslidecalled',1); + opt.c.revnext(); + } + f.api("pause"); + } + } + }); + + f.addEvent('finish', function(data) { + remVidfromList(_nc,opt); + opt.videoplaying=false; + opt.c.trigger('starttimer'); + opt.c.trigger('revolution.slide.onvideostop',getVideoDatas(f,"vimeo",_nc.data())); + if (_nc.data('nextslideatend')==true) + opt.c.revnext(); + + }); + + f.addEvent('pause', function(data) { + + if (_nc.find('.tp-videoposter').length>0 && _nc.data('showcoveronpause')=="on") { + punchgs.TweenLite.to(_nc.find('.tp-videoposter'),0.3,{autoAlpha:1,force3D:"auto",ease:punchgs.Power3.easeInOut}); + punchgs.TweenLite.to(_nc.find('iframe'),0.3,{autoAlpha:0,ease:punchgs.Power3.easeInOut}); + } + opt.videoplaying=false; + remVidfromList(_nc,opt); + opt.c.trigger('starttimer'); + opt.c.trigger('revolution.slide.onvideostop',getVideoDatas(f,"vimeo",_nc.data())); + }); + + + + _nc.find('.tp-videoposter').unbind("click"); + _nc.find('.tp-videoposter').click(function() { + if (!_ISM) { + + f.api("play"); + return false; + } + }) + if (_nc.data('startvideonow')) { + + f.api("play"); + var s = getStartSec(_nc.data('videostartat')); + if (s!=-1) f.api("seekTo",s); + } + _nc.data('videolistenerexist',1); + }); + break; + } + } else { + var s = getStartSec(_nc.data('videostartat')); + switch (_nc.data('videotype')) { + // YOUTUBE LISTENER + case "youtube": + if (startnow) { + _nc.data('player').playVideo(); + if (s!=-1) _nc.data('player').seekTo() + } + break; + case "vimeo": + if (startnow) { + var f = $f(_nc.find('iframe').attr("id")); + f.api("play"); + if (s!=-1) f.api("seekTo",s); + } + break; + } + } +} + + +///////////////////////////////////////// HTML5 VIDEOS /////////////////////////////////////////// + +var htmlvideoevents = function(_nc,opt,startnow) { + + if (_ISM && _nc.data('disablevideoonmobile')==1) return false; + var jvideo = _nc.find('video'), + video = jvideo[0], + html5vid = jvideo.parent(), + loop = _nc.data('videoloop'), + pforv = loop != "loopandnoslidestop"; + + loop = loop =="loop" || loop =="loopandnoslidestop"; + + html5vid.data('metaloaded',1); + // FIRST TIME LOADED THE HTML5 VIDEO + + + + + //PLAY, STOP VIDEO ON CLICK OF PLAY, POSTER ELEMENTS + if (jvideo.attr('control') == undefined ) { + if (_nc.find('.tp-video-play-button').length==0 && !_ISM) + _nc.append('
         
        '); + _nc.find('video, .tp-poster, .tp-video-play-button').click(function() { + if (_nc.hasClass("videoisplaying")) + video.pause(); + else + video.play(); + }) + } + + // PRESET FULLCOVER VIDEOS ON DEMAND + if (_nc.data('forcecover')==1 || _nc.hasClass('fullscreenvideo')) { + if (_nc.data('forcecover')==1) + html5vid.addClass("fullcoveredvideo"); + else + html5vid.addClass("fullscreenvideo"); + } + + + // FIND CONTROL BUTTONS IN VIDEO, AND ADD EVENT LISTENERS ON THEM + var playButton = _nc.find('.tp-vid-play-pause')[0], + muteButton = _nc.find('.tp-vid-mute')[0], + fullScreenButton = _nc.find('.tp-vid-full-screen')[0], + seekBar = _nc.find('.tp-seek-bar')[0], + volumeBar = _nc.find('.tp-volume-bar')[0]; + + if (playButton!=undefined) { + // Event listener for the play/pause button + addEvent(playButton,"click", function() { + if (video.paused == true) + video.play(); + else + video.pause(); + }); + + // Event listener for the mute button + addEvent(muteButton,"click", function() { + if (video.muted == false) { + video.muted = true; + muteButton.innerHTML = "Unmute"; + } else { + video.muted = false; + muteButton.innerHTML = "Mute"; + } + }); + + // Event listener for the full-screen button + addEvent(fullScreenButton,"click", function() { + if (video.requestFullscreen) { + video.requestFullscreen(); + } else if (video.mozRequestFullScreen) { + video.mozRequestFullScreen(); // Firefox + } else if (video.webkitRequestFullscreen) { + video.webkitRequestFullscreen(); // Chrome and Safari + } + }); + + + // Event listener for the seek bar + addEvent(seekBar,"change", function() { + var time = video.duration * (seekBar.value / 100); + video.currentTime = time; + + }); + + // Update the seek bar as the video plays + addEvent(video,"timeupdate", function() { + var value = (100 / video.duration) * video.currentTime, + et = getStartSec(_nc.data('videoendat')), + cs =video.currentTime; + seekBar.value = value; + if (et!=0 && (Math.abs(et-cs) <=0.3 && et>cs) && _nc.data('nextslidecalled') != 1) { + if (loop) { + video.play(); + var s = getStartSec(_nc.data('videostartat')); + if (s!=-1) video.currentTime = s; + } else { + if (_nc.data('nextslideatend')==true) { + _nc.data('nextslidecalled',1); + opt.c.revnext(); + } + video.pause(); + } + } + }); + + // Pause the video when the seek handle is being dragged + addEvent(seekBar,"mousedown", function() { + _nc.addClass("seekbardragged"); + video.pause(); + + }); + + // Play the video when the seek handle is dropped + addEvent(seekBar,"mouseup", function() { + _nc.removeClass("seekbardragged"); + video.play(); + + }); + + // Event listener for the volume bar + addEvent(volumeBar,"change", function() { + // Update the video volume + video.volume = volumeBar.value; + }); + } + + + // VIDEO EVENT LISTENER FOR "PLAY" + addEvent(video,"play",function() { + + + _nc.data('nextslidecalled',0); + + if (_nc.data('volume')=="mute") + video.muted=true; + + _nc.addClass("videoisplaying"); + + addVidtoList(_nc,opt); + + if (!pforv) { + opt.videoplaying=false; + opt.c.trigger('starttimer'); + opt.c.trigger('revolution.slide.onvideostop',getVideoDatas(video,"html5",_nc.data())); + } else { + opt.videoplaying=true; + opt.c.trigger('stoptimer'); + opt.c.trigger('revolution.slide.onvideoplay',getVideoDatas(video,"html5",_nc.data())); + } + + punchgs.TweenLite.to(_nc.find('.tp-videoposter'),0.3,{autoAlpha:0,force3D:"auto",ease:punchgs.Power3.easeInOut}); + punchgs.TweenLite.to(_nc.find('video'),0.3,{autoAlpha:1,display:"block",ease:punchgs.Power3.easeInOut}); + + var playButton = _nc.find('.tp-vid-play-pause')[0], + muteButton = _nc.find('.tp-vid-mute')[0]; + if (playButton!=undefined) + playButton.innerHTML = "Pause"; + if (muteButton!=undefined && video.muted) + muteButton.innerHTML = "Unmute"; + }); + + // VIDEO EVENT LISTENER FOR "PAUSE" + addEvent(video,"pause",function() { + + if (_nc.find('.tp-videoposter').length>0 && _nc.data('showcoveronpause')=="on" && !_nc.hasClass("seekbardragged")) { + punchgs.TweenLite.to(_nc.find('.tp-videoposter'),0.3,{autoAlpha:1,force3D:"auto",ease:punchgs.Power3.easeInOut}); + punchgs.TweenLite.to(_nc.find('video'),0.3,{autoAlpha:0,ease:punchgs.Power3.easeInOut}); + } + + _nc.removeClass("videoisplaying"); + opt.videoplaying=false; + remVidfromList(_nc,opt); + opt.c.trigger('starttimer'); + opt.c.trigger('revolution.slide.onvideostop',getVideoDatas(video,"html5",_nc.data())); + var playButton = _nc.find('.tp-vid-play-pause')[0]; + if (playButton!=undefined) + playButton.innerHTML = "Play"; + }); + + // VIDEO EVENT LISTENER FOR "END" + addEvent(video,"ended",function() { + remVidfromList(_nc,opt); + opt.videoplaying=false; + remVidfromList(_nc,opt); + opt.c.trigger('starttimer'); + opt.c.trigger('revolution.slide.onvideostop',getVideoDatas(video,"html5",_nc.data())); + if (_nc.data('nextslideatend')==true) + opt.c.revnext(); + _nc.removeClass("videoisplaying"); + + + }); +} + + + +var addVidtoList = function(_nc,opt) { + + if (opt.playingvideos == undefined) opt.playingvideos = new Array(); + + // STOP OTHER VIDEOS + if (_nc.data('stopallvideos')) { + if (opt.playingvideos != undefined && opt.playingvideos.length>0) { + opt.lastplayedvideos = jQuery.extend(true,[],opt.playingvideos); + jQuery.each(opt.playingvideos,function(i,_nc) { + _R.stopVideo(_nc,opt); + }); + } + } + opt.playingvideos.push(_nc); +} + + +var remVidfromList = function(_nc,opt) { + if (opt.playingvideos != undefined) + opt.playingvideos.splice(jQuery.inArray(_nc,opt.playingvideos),1); +} + + +})(jQuery); \ No newline at end of file diff --git a/plugins/revslider/public/assets/js/index.php b/plugins/revslider/public/assets/js/index.php new file mode 100644 index 0000000..e69de29 diff --git a/plugins/revslider/public/assets/js/jquery.themepunch.enablelog.js b/plugins/revslider/public/assets/js/jquery.themepunch.enablelog.js new file mode 100644 index 0000000..3b73f58 --- /dev/null +++ b/plugins/revslider/public/assets/js/jquery.themepunch.enablelog.js @@ -0,0 +1 @@ +window.tplogs = true; \ No newline at end of file diff --git a/plugins/revslider/public/assets/js/jquery.themepunch.revolution.min.js b/plugins/revslider/public/assets/js/jquery.themepunch.revolution.min.js new file mode 100644 index 0000000..1261876 --- /dev/null +++ b/plugins/revslider/public/assets/js/jquery.themepunch.revolution.min.js @@ -0,0 +1,9 @@ + +/************************************************************************** + * jquery.themepunch.revolution.js - jQuery Plugin for Revolution Slider + * @version: 5.0.2 (07.08.2015) + * @requires jQuery v1.7 or later (tested on 1.9) + * @author ThemePunch +**************************************************************************/ +function revslider_showDoubleJqueryError(e){var t="Revolution Slider Error: You have some jquery.js library include that comes after the revolution files js include.";t+="
        This includes make eliminates the revolution slider libraries, and make it not work.",t+="

        To fix it you can:
            1. In the Slider Settings -> Troubleshooting set option: Put JS Includes To Body option to true.",t+="
            2. Find the double jquery.js include and remove it.",t=""+t+"",jQuery(e).show().html(t)}!function(e,t){"use strict";e.fn.extend({revolution:function(a){var n={delay:9e3,responsiveLevels:4064,gridwidth:960,gridheight:500,minHeight:0,autoHeight:"off",sliderType:"standard",sliderLayout:"auto",fullScreenAlignForce:"off",fullScreenOffsetContainer:"",fullScreenOffset:"0",hideCaptionAtLimit:0,hideAllCaptionAtLimit:0,hideSliderAtLimit:0,disableProgressBar:"off",stopAtSlide:-1,stopAfterLoops:-1,shadow:0,dottedOverlay:"none",startDelay:0,lazyType:"smart",spinner:"spinner0",viewPort:{enable:!1,outof:"wait",visible_area:"60%"},fallbacks:{isJoomla:!1,panZoomDisableOnMobile:"off",simplifyAll:"on",nextSlideOnWindowFocus:"off",disableFocusListener:!0},parallax:{type:"off",levels:[10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85],origo:"enterpoint",speed:400,bgparallax:"on",opacity:"on",disable_onmobile:"off"},carousel:{horizontal_align:"center",vertical_align:"center",infinity:"on",space:0,maxVisibleItems:3,stretch:"off",fadeout:"on",maxRotation:0,minScale:0,vary_fade:"off",vary_rotation:"on",vary_scale:"off",border_radius:"0px",padding_top:0,padding_bottom:0},navigation:{keyboardNavigation:"on",keyboard_direction:"horizontal",mouseScrollNavigation:"off",onHoverStop:"on",touch:{touchenabled:"off",swipe_treshold:75,swipe_min_touches:1,drag_block_vertical:!1,swipe_direction:"horizontal"},arrows:{style:"",enable:!1,hide_onmobile:!1,hide_onleave:!0,hide_delay:200,hide_delay_mobile:1200,hide_under:0,hide_over:9999,tmp:"",left:{h_align:"left",v_align:"center",h_offset:20,v_offset:0},right:{h_align:"right",v_align:"center",h_offset:20,v_offset:0}},bullets:{style:"",enable:!1,hide_onmobile:!1,hide_onleave:!0,hide_delay:200,hide_delay_mobile:1200,hide_under:0,hide_over:9999,direction:"horizontal",h_align:"left",v_align:"center",space:0,h_offset:20,v_offset:0,tmp:''},thumbnails:{style:"",enable:!1,width:100,height:50,min_width:100,wrapper_padding:2,wrapper_color:"#f5f5f5",wrapper_opacity:1,tmp:'',visibleAmount:5,hide_onmobile:!1,hide_onleave:!0,hide_delay:200,hide_delay_mobile:1200,hide_under:0,hide_over:9999,direction:"horizontal",span:!1,position:"inner",space:2,h_align:"left",v_align:"center",h_offset:20,v_offset:0},tabs:{style:"",enable:!1,width:100,min_width:100,height:50,wrapper_padding:10,wrapper_color:"#f5f5f5",wrapper_opacity:1,tmp:'',visibleAmount:5,hide_onmobile:!1,hide_onleave:!0,hide_delay:200,hide_delay_mobile:1200,hide_under:0,hide_over:9999,direction:"horizontal",span:!1,space:0,position:"inner",h_align:"left",v_align:"center",h_offset:20,v_offset:0}},extensions:"extensions/",extensions_suffix:".min.js",debugMode:!1};return a=e.extend(!0,{},n,a),this.each(function(){var n=e(this);"hero"==a.sliderType&&n.find(">ul>li").each(function(t){t>0&&e(this).remove()}),a.jsFileLocation=a.jsFileLocation||s("themepunch.revolution.min.js"),a.jsFileLocation=a.jsFileLocation+a.extensions,a.scriptsneeded=o(a,n),a.curWinRange=0,e(this).on("scriptsloaded",function(){return a.modulesfailing?(n.html('
        !! Error at loading Slider Revolution 5.0 Extrensions.'+a.errorm+"
        ").show(),!1):(i.migration!=t&&(a=i.migration(n,a)),punchgs.force3D=!0,"on"!==a.simplifyAll&&punchgs.TweenLite.lagSmoothing(1e3,16),l(n,a),void u(n,a))}),r(n,a.scriptsneeded)})},revdebugmode:function(){return this.each(function(){var i=e(this);if(i!=t&&i.length>0&&e("body").find("#"+i.attr("id")).length>0){var a=i.parent().find(".tp-bannertimer"),n=a.data("opt");n.debugMode=!0,v(i,n)}})},revscroll:function(i){return this.each(function(){var a=e(this);a!=t&&a.length>0&&e("body").find("#"+a.attr("id")).length>0&&e("body,html").animate({scrollTop:a.offset().top+opt.li.height()-i+"px"},{duration:400})})},revredraw:function(){return this.each(function(){var i=e(this);if(i!=t&&i.length>0&&e("body").find("#"+i.attr("id")).length>0){var a=i.parent().find(".tp-bannertimer"),n=a.data("opt");v(i,n)}})},revkill:function(){var a=this,n=e(this);if(punchgs.TweenLite.killDelayedCallsTo(showHideNavElements),i.endMoveCaption&&punchgs.TweenLite.killDelayedCallsTo(i.endMoveCaption),n!=t&&n.length>0&&e("body").find("#"+n.attr("id")).length>0){n.data("conthover",1),n.data("conthover-changed",1),n.trigger("revolution.slide.onpause");var o=n.parent().find(".tp-bannertimer"),r=o.data("opt");r.tonpause=!0,n.trigger("stoptimer"),punchgs.TweenLite.killTweensOf(n.find("*"),!1),punchgs.TweenLite.killTweensOf(n,!1),n.unbind("hover, mouseover, mouseenter,mouseleave, resize");var s="resize.revslider-"+n.attr("id");e(window).off(s),n.find("*").each(function(){var i=e(this);i.unbind("on, hover, mouseenter,mouseleave,mouseover, resize,restarttimer, stoptimer"),i.off("on, hover, mouseenter,mouseleave,mouseover, resize"),i.data("mySplitText",null),i.data("ctl",null),i.data("tween")!=t&&i.data("tween").kill(),i.data("kenburn")!=t&&i.data("kenburn").kill(),i.data("timeline_out")!=t&&i.data("timeline_out").kill(),i.data("timeline")!=t&&i.data("timeline").kill(),i.remove(),i.empty(),i=null}),punchgs.TweenLite.killTweensOf(n.find("*"),!1),punchgs.TweenLite.killTweensOf(n,!1),o.remove();try{n.closest(".forcefullwidth_wrapper_tp_banner").remove()}catch(d){}try{n.closest(".rev_slider_wrapper").remove()}catch(d){}try{n.remove()}catch(d){}return n.empty(),n.html(),n=null,r=null,delete a.c,delete a.opt,!0}return!1},revpause:function(){return this.each(function(){var i=e(this);if(i!=t&&i.length>0&&e("body").find("#"+i.attr("id")).length>0){i.data("conthover",1),i.data("conthover-changed",1),i.trigger("revolution.slide.onpause");var a=i.parent().find(".tp-bannertimer"),n=a.data("opt");n.tonpause=!0,i.trigger("stoptimer")}})},revresume:function(){return this.each(function(){var i=e(this);if(i!=t&&i.length>0&&e("body").find("#"+i.attr("id")).length>0){i.data("conthover",0),i.data("conthover-changed",1),i.trigger("revolution.slide.onresume");var a=i.parent().find(".tp-bannertimer"),n=a.data("opt");n.tonpause=!1,i.trigger("starttimer")}})},revnext:function(){return this.each(function(){var a=e(this);if(a!=t&&a.length>0&&e("body").find("#"+a.attr("id")).length>0){var n=a.parent().find(".tp-bannertimer"),o=n.data("opt");i.callingNewSlide(o,a,1)}})},revprev:function(){return this.each(function(){var a=e(this);if(a!=t&&a.length>0&&e("body").find("#"+a.attr("id")).length>0){var n=a.parent().find(".tp-bannertimer"),o=n.data("opt");i.callingNewSlide(o,a,-1)}})},revmaxslide:function(){return e(this).find(".tp-revslider-mainul >li").length},revcurrentslide:function(){var i=e(this);if(i!=t&&i.length>0&&e("body").find("#"+i.attr("id")).length>0){var a=i.parent().find(".tp-bannertimer"),n=a.data("opt");return parseInt(n.act,0)+1}},revlastslide:function(){return e(this).find(".tp-revslider-mainul >li").length},revshowslide:function(a){return this.each(function(){var n=e(this);if(n!=t&&n.length>0&&e("body").find("#"+n.attr("id")).length>0){var o=n.parent().find(".tp-bannertimer"),r=o.data("opt");i.callingNewSlide(r,n,"to"+(a-1))}})},revcallslidewithid:function(a){return this.each(function(){var n=e(this);if(n!=t&&n.length>0&&e("body").find("#"+n.attr("id")).length>0){var o=n.parent().find(".tp-bannertimer"),r=o.data("opt");i.callingNewSlide(r,n,a)}})}});var i=e.fn.revolution;e.extend(!0,i,{simp:function(e,t,i){var a=Math.abs(e)-Math.floor(Math.abs(e/t))*t;return i?a:0>e?-1*a:a},iOSVersion:function(){var e=!1;return navigator.userAgent.match(/iPhone/i)||navigator.userAgent.match(/iPod/i)||navigator.userAgent.match(/iPad/i)?navigator.userAgent.match(/OS 4_\d like Mac OS X/i)&&(e=!0):e=!1,e},isIE:function(t,i){var a=e('
        ').appendTo(e("body"));a.html("");var n=a.find("a").length;return a.remove(),n},is_mobile:function(){var e=["android","webos","iphone","ipad","blackberry","Android","webos",,"iPod","iPhone","iPad","Blackberry","BlackBerry"],t=!1;for(var i in e)navigator.userAgent.split(e[i]).length>1&&(t=!0);return t},get_browser:function(){var e,t=navigator.appName,i=navigator.userAgent,a=i.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i);return a&&null!=(e=i.match(/version\/([\.\d]+)/i))&&(a[2]=e[1]),a=a?[a[1],a[2]]:[t,navigator.appVersion,"-?"],a[0]},get_browser_version:function(){var e,t=navigator.appName,i=navigator.userAgent,a=i.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i);return a&&null!=(e=i.match(/version\/([\.\d]+)/i))&&(a[2]=e[1]),a=a?[a[1],a[2]]:[t,navigator.appVersion,"-?"],a[1]},getHorizontalOffset:function(e,t){var i=c(e,".outer-left"),a=c(e,".outer-right");switch(t){case"left":return i;case"right":return a;case"both":return i+a}},callingNewSlide:function(t,i,a){var n=i.find(".next-revslide").length>0?i.find(".next-revslide").index():i.find(".processing-revslide").length>0?i.find(".processing-revslide").index():i.find(".active-revslide").index(),o=0;i.find(".next-revslide").removeClass("next-revslide"),a&&e.isNumeric(a)||a.match(/to/g)?(1===a||-1===a?(o=n+a,o=0>o?t.slideamount-1:o>=t.slideamount?0:o):(a=parseInt(a.split("to")[1],0),o=0>a?0:a>t.slideamount-1?t.slideamount-1:a),i.find(".tp-revslider-slidesli:eq("+o+")").addClass("next-revslide")):a&&i.find(".tp-revslider-slidesli").each(function(){var t=e(this);t.data("index")===a&&t.addClass("next-revslide")}),o=i.find(".next-revslide").index(),i.trigger("revolution.nextslide.waiting"),o!==n&&-1!=o?S(i,t):i.find(".next-revslide").removeClass("next-revslide")},slotSize:function(i,a){a.slotw=Math.ceil(a.width/a.slots),a.sloth=Math.ceil("fullscreen"==a.sliderLayout?e(window).height()/a.slots:a.height/a.slots),"on"==a.autoHeight&&i!==t&&""!==i&&(a.sloth=Math.ceil(i.height()/a.slots))},setSize:function(i){var a=(i.top_outer||0)+(i.bottom_outer||0),n=parseInt(i.carousel.padding_top||0,0),o=parseInt(i.carousel.padding_bottom||0,0),r=i.gridheight[i.curWinRange];if(r=ri.gridheight[i.curWinRange]&&"on"!=i.autoHeight&&(i.height=i.gridheight[i.curWinRange]),"fullscreen"==i.sliderLayout){i.height=i.bw*i.gridheight[i.curWinRange];var s=(i.c.parent().width(),e(window).height());if(i.fullScreenOffsetContainer!=t){try{var d=i.fullScreenOffsetContainer.split(",");e.each(d,function(t,i){s=e(i).length>0?s-e(i).outerHeight(!0):s})}catch(l){}try{i.fullScreenOffset.split("%").length>1&&i.fullScreenOffset!=t&&i.fullScreenOffset.length>0?s-=e(window).height()*parseInt(i.fullScreenOffset,0)/100:i.fullScreenOffset!=t&&i.fullScreenOffset.length>0&&(s-=parseInt(i.fullScreenOffset,0))}catch(l){}}s=s0&&e.each(a.lastplayedvideos,function(e,t){i.playVideo(t,a)})},leaveViewPort:function(a){a.sliderlaststatus=a.sliderstatus,a.c.trigger("stoptimer"),a.playingvideos!=t&&a.playingvideos.length>0&&(a.lastplayedvideos=e.extend(!0,[],a.playingvideos),e.each(a.playingvideos,function(e,t){i.stopVideo&&i.stopVideo(t,a)}))}});var a=i.is_mobile(),n=function(i,a){return e("body").data(i)?!1:a.filesystem?(a.errorm===t&&(a.errorm="
        Local Filesystem Detected !
        Put this to your header:"),console.warn("Local Filesystem detected !"),a.errorm=a.errorm+'
        <script type="text/javascript" src="'+a.jsFileLocation+i+a.extensions_suffix+'"></script>',console.warn(a.jsFileLocation+i+a.extensions_suffix+" could not be loaded !"),console.warn("Please use a local Server or work online or make sure that you load all needed Libraries manually in your Document."),console.log(" "),a.modulesfailing=!0,!1):(e.ajax({url:a.jsFileLocation+i+a.extensions_suffix,dataType:"script",cache:!0,error:function(e){console.warn("Slider Revolution 5.0 Error !"),console.error("Failure at Loading:"+i+a.extensions_suffix+" on Path:"+a.jsFileLocation),console.info(e)}}),void e("body").data(i,!0))},o=function(a,o){var r=new Object,s=a.navigation;return r.kenburns=!1,r.parallax=!1,r.carousel=!1,r.navigation=!1,r.videos=!1,r.actions=!1,r.layeranim=!1,r.migration=!1,o.data("version")&&o.data("version").match(/5./gi)?(o.find("img").each(function(){"on"==e(this).data("kenburns")&&(r.kenburns=!0)}),("carousel"==a.sliderType||"on"==s.keyboardNavigation||"on"==s.mouseScrollNavigation||"on"==s.touch.touchenabled||s.arrows.enable||s.bullets.enable||s.thumbnails.enable||s.tabs.enable)&&(r.navigation=!0),o.find(".tp-caption, .tp-static-layer, .rs-background-video-layer").each(function(){var i=e(this);(i.data("ytid")!=t||i.find("iframe").length>0&&i.find("iframe").attr("src").toLowerCase().indexOf("youtube")>0)&&(r.videos=!0),(i.data("vimeoid")!=t||i.find("iframe").length>0&&i.find("iframe").attr("src").toLowerCase().indexOf("vimeo")>0)&&(r.videos=!0),i.data("actions")!==t&&(r.actions=!0),r.layeranim=!0}),o.find("li").each(function(){e(this).data("link")&&e(this).data("link")!=t&&(r.layeranim=!0)}),!r.videos&&(o.find(".rs-background-video-layer").length>0||o.find(".tp-videolayer").length>0||o.find("iframe").length>0||o.find("video").length>0)&&(r.videos=!0),"carousel"==a.sliderType&&(r.carousel=!0),("off"!==a.parallax.type||a.viewPort.enable||"true"==a.viewPort.enable)&&(r.parallax=!0)):(r.kenburns=!0,r.parallax=!0,r.carousel=!1,r.navigation=!0,r.videos=!0,r.actions=!0,r.layeranim=!0,r.migration=!0),"hero"==a.sliderType&&(r.carousel=!1,r.navigation=!1),window.location.href.match(/file:/gi)&&(r.filesystem=!0,a.filesystem=!0),r.videos&&"undefined"==typeof i.isVideoPlaying&&n("revolution.extension.video",a),r.carousel&&"undefined"==typeof i.prepareCarousel&&n("revolution.extension.carousel",a),r.carousel||"undefined"!=typeof i.animateSlide||n("revolution.extension.slideanims",a),r.actions&&"undefined"==typeof i.checkActions&&n("revolution.extension.actions",a),r.layeranim&&"undefined"==typeof i.handleStaticLayers&&n("revolution.extension.layeranimation",a),r.kenburns&&"undefined"==typeof i.stopKenBurn&&n("revolution.extension.kenburn",a),r.navigation&&"undefined"==typeof i.createNavigation&&n("revolution.extension.navigation",a),r.migration&&"undefined"==typeof i.migration&&n("revolution.extension.migration",a),r.parallax&&"undefined"==typeof i.checkForParallax&&n("revolution.extension.parallax",a),r},r=function(e,t){t.filesystem||"undefined"!=typeof punchgs&&(!t.kenburns||t.kenburns&&"undefined"!=typeof i.stopKenBurn)&&(!t.navigation||t.navigation&&"undefined"!=typeof i.createNavigation)&&(!t.carousel||t.carousel&&"undefined"!=typeof i.prepareCarousel)&&(!t.videos||t.videos&&"undefined"!=typeof i.resetVideo)&&(!t.actions||t.actions&&"undefined"!=typeof i.checkActions)&&(!t.layeranim||t.layeranim&&"undefined"!=typeof i.handleStaticLayers)&&(!t.migration||t.migration&&"undefined"!=typeof i.migration)&&(!t.parallax||t.parallax&&"undefined"!=typeof i.checkForParallax)&&(t.carousel||!t.carousel&&"undefined"!=typeof i.animateSlide)?e.trigger("scriptsloaded"):setTimeout(function(){r(e,t)},50)},s=function(){var t=new RegExp("themepunch.revolution.min.js","gi"),i="";return e("script").each(function(){var a=e(this).attr("src");a&&a.match(t)&&(i=a)}),i=i.replace("jquery.themepunch.revolution.min.js",""),i=i.replace("jquery.themepunch.revolution.js",""),i=i.split("?")[0]},d=function(t){var i=9999,a=0,n=0,o=0,r=e(window).width();e.each(t.responsiveLevels,function(e,t){t>r&&(0==a||a>t)&&(i=t,o=e,a=t),r>t&&t>a&&(a=t,n=e)}),i>a&&(o=n),t.curWinRange=o},l=function(e,t){t.carousel.maxVisibleItems=t.carousel.maxVisibleItems<1?999:t.carousel.maxVisibleItems,t.carousel.vertical_align="top"===t.carousel.vertical_align?"0%":"bottom"===t.carousel.vertical_align?"100%":"50%"},c=function(t,i){var a=0;return t.find(i).each(function(){var t=e(this);!t.hasClass("tp-forcenotvisible")&&a'),n.find(">ul").addClass("tp-revslider-mainul"),o.c=n,o.ul=n.find(".tp-revslider-mainul"),o.cid=n.attr("id"),o.ul.css({visibility:"visible"}),"on"==o.shuffle){var r=new Object,s=o.ul.find(">li:first-child");r.fstransition=s.data("fstransition"),r.fsmasterspeed=s.data("fsmasterspeed"),r.fsslotamount=s.data("fsslotamount");for(var l=0;lli:eq("+c+")").prependTo(o.ul)}var u=o.ul.find(">li:first-child");u.data("fstransition",r.fstransition),u.data("fsmasterspeed",r.fsmasterspeed),u.data("fsslotamount",r.fsslotamount),o.li=o.ul.find(">li")}if(o.li=o.ul.find(">li"),o.thumbs=new Array,o.slideamount=o.li.length,o.slots=4,o.act=-1,o.firststart=1,o.loadqueue=new Array,o.syncload=0,o.conw=n.width(),o.conh=n.height(),o.responsiveLevels.length>1?o.responsiveLevels[0]=9999:o.responsiveLevels=9999,e.each(o.li,function(i,a){var a=e(a),n=a.find(".rev-slidebg")||a.find("img").first(),r=0;a.addClass("tp-revslider-slidesli"),a.data("index")===t&&a.data("index","rs-"+Math.round(999999*Math.random()));var s=new Object;s.params=new Array,s.id=a.data("index"),s.src=a.data("thumb")!==t?a.data("thumb"):n.data("lazyload")!==t?n.data("lazyload"):n.attr("src"),a.data("title")!==t&&s.params.push({from:RegExp("\\{\\{title\\}\\}","g"),to:a.data("title")}),a.data("description")!==t&&s.params.push({from:RegExp("\\{\\{description\\}\\}","g"),to:a.data("description")});for(var r=1;10>=r;r++)a.data("param"+r)!==t&&s.params.push({from:RegExp("\\{\\{param"+r+"\\}\\}","g"),to:a.data("param"+r)});if(o.thumbs.push(s),a.data("origindex",a.index()),a.data("link")!=t){var d=a.data("link"),l=a.data("target")||"_self",c="back"===a.data("slideindex")?0:60,u=a.data("linktoslide"),p=u;u!=t&&"next"!=u&&"prev"!=u&&o.li.each(function(){var t=e(this);t.data("origindex")+1==p&&(u=t.index()+1)}),"slide"!=d&&(u="no");var h='":T;for(t.innerHTML=p+($?V:""),H&&g(t,"{{LT}}","<"),y=t.getElementsByTagName("*"),l=y.length,w=[],d=0;l>d;d++)w[d]=y[d];if(A||L)for(d=0;l>d;d++)b=w[d],f=b.parentNode===t,(f||L||M&&!D)&&(x=b.offsetTop,A&&f&&x!==I&&"BR"!==b.nodeName&&(_=[],A.push(_),I=x),L&&(b._x=b.offsetLeft,b._y=x,b._w=b.offsetWidth,b._h=b.offsetHeight),A&&(D!==f&&M||(_.push(b),b._x-=N),f&&d&&(w[d-1]._wordEnd=!0),"BR"===b.nodeName&&b.nextSibling&&"BR"===b.nextSibling.nodeName&&A.push([])));for(d=0;l>d;d++)b=w[d],f=b.parentNode===t,"BR"!==b.nodeName?(L&&(S=b.style,D||f||(b._x+=b.parentNode._x,b._y+=b.parentNode._y),S.left=b._x+"px",S.top=b._y+"px",S.position="absolute",S.display="block",S.width=b._w+1+"px",S.height=b._h+"px"),D?f&&""!==b.innerHTML?J.push(b):M&&K.push(b):f?(t.removeChild(b),w.splice(d--,1),l--):!f&&M&&(x=!A&&!L&&b.nextSibling,t.appendChild(b),x||t.appendChild(n.createTextNode(" ")),K.push(b))):A||L?(t.removeChild(b),w.splice(d--,1),l--):D||t.appendChild(b);if(A){for(L&&(P=n.createElement("div"),t.appendChild(P),k=P.offsetWidth+"px",x=P.offsetParent===t?0:t.offsetLeft,t.removeChild(P)),S=t.style.cssText,t.style.cssText="display:none;";t.firstChild;)t.removeChild(t.firstChild);for(C=!L||!D&&!M,d=0;A.length>d;d++){for(_=A[d],P=n.createElement("div"),P.style.cssText="display:block;text-align:"+U+";position:"+(L?"absolute;":"relative;"),Z&&(P.className=Z+(W?d+1:"")),te.push(P),l=_.length,y=0;l>y;y++)"BR"!==_[y].nodeName&&(b=_[y],P.appendChild(b),C&&(b._wordEnd||D)&&P.appendChild(n.createTextNode(" ")),L&&(0===y&&(P.style.top=b._y+"px",P.style.left=N+x+"px"),b.style.top="0px",x&&(b.style.left=b._x-x+"px")));0===l&&(P.innerHTML=" "),D||M||(P.innerHTML=r(P).split(String.fromCharCode(160)).join(" ")),L&&(P.style.width=k,P.style.height=b._h+"px"),t.appendChild(P)}t.style.cssText=S}L&&(Y>t.clientHeight&&(t.style.height=Y-X+"px",Y>t.clientHeight&&(t.style.height=Y+F+"px")),q>t.clientWidth&&(t.style.width=q-j+"px",q>t.clientWidth&&(t.style.width=q+B+"px"))),v(i,K),v(s,J),v(o,te)},T=d.prototype;T.split=function(t){this.isSplit&&this.revert(),this.vars=t||this.vars,this._originals.length=this.chars.length=this.words.length=this.lines.length=0;for(var e=this.elements.length;--e>-1;)this._originals[e]=this.elements[e].innerHTML,y(this.elements[e],this.vars,this.chars,this.words,this.lines);return this.chars.reverse(),this.words.reverse(),this.lines.reverse(),this.isSplit=!0,this},T.revert=function(){if(!this._originals)throw"revert() call wasn't scoped properly.";for(var t=this._originals.length;--t>-1;)this.elements[t].innerHTML=this._originals[t];return this.chars=[],this.words=[],this.lines=[],this.isSplit=!1,this},d.selector=t.$||t.jQuery||function(e){var i=t.$||t.jQuery;return i?(d.selector=i,i(e)):"undefined"==typeof document?e:document.querySelectorAll?document.querySelectorAll(e):document.getElementById("#"===e.charAt(0)?e.substr(1):e)},d.version="0.3.3"})(_gsScope),function(t){"use strict";var e=function(){return(_gsScope.GreenSockGlobals||_gsScope)[t]};"function"==typeof define&&define.amd?define(["TweenLite"],e):"undefined"!=typeof module&&module.exports&&(module.exports=e())}("SplitText"); + +try{ + window.GreenSockGlobals = null; + window._gsQueue = null; + window._gsDefine = null; + + delete(window.GreenSockGlobals); + delete(window._gsQueue); + delete(window._gsDefine); + } catch(e) {} + +try{ + window.GreenSockGlobals = oldgs; + window._gsQueue = oldgs_queue; + } catch(e) {} + +if (window.tplogs==true) + try { + console.groupEnd(); + } catch(e) {} + +(function(e,t){ + e.waitForImages={hasImageProperties:["backgroundImage","listStyleImage","borderImage","borderCornerImage"]};e.expr[":"].uncached=function(t){var n=document.createElement("img");n.src=t.src;return e(t).is('img[src!=""]')&&!n.complete};e.fn.waitForImages=function(t,n,r){if(e.isPlainObject(arguments[0])){n=t.each;r=t.waitForAll;t=t.finished}t=t||e.noop;n=n||e.noop;r=!!r;if(!e.isFunction(t)||!e.isFunction(n)){throw new TypeError("An invalid callback was supplied.")}return this.each(function(){var i=e(this),s=[];if(r){var o=e.waitForImages.hasImageProperties||[],u=/url\((['"]?)(.*?)\1\)/g;i.find("*").each(function(){var t=e(this);if(t.is("img:uncached")){s.push({src:t.attr("src"),element:t[0]})}e.each(o,function(e,n){var r=t.css(n);if(!r){return true}var i;while(i=u.exec(r)){s.push({src:i[2],element:t[0]})}})})}else{i.find("img:uncached").each(function(){s.push({src:this.src,element:this})})}var f=s.length,l=0;if(f==0){t.call(i[0])}e.each(s,function(r,s){var o=new Image;e(o).bind("load error",function(e){l++;n.call(s.element,l,f,e.type=="load");if(l==f){t.call(i[0]);return false}});o.src=s.src})})}; +})(jQuery) diff --git a/plugins/revslider/public/assets/js/source/jquery.themepunch.enablelog.js b/plugins/revslider/public/assets/js/source/jquery.themepunch.enablelog.js new file mode 100644 index 0000000..3b73f58 --- /dev/null +++ b/plugins/revslider/public/assets/js/source/jquery.themepunch.enablelog.js @@ -0,0 +1 @@ +window.tplogs = true; \ No newline at end of file diff --git a/plugins/revslider/public/assets/js/source/jquery.themepunch.revolution.js b/plugins/revslider/public/assets/js/source/jquery.themepunch.revolution.js new file mode 100644 index 0000000..fa72ea2 --- /dev/null +++ b/plugins/revslider/public/assets/js/source/jquery.themepunch.revolution.js @@ -0,0 +1,2310 @@ + +/************************************************************************** + * jquery.themepunch.revolution.js - jQuery Plugin for Revolution Slider + * @version: 5.0.2 (07.08.2015) + * @requires jQuery v1.7 or later (tested on 1.9) + * @author ThemePunch +**************************************************************************/ +(function(jQuery,undefined){ + "use strict"; + + jQuery.fn.extend({ + + revolution: function(options) { + + // SET DEFAULT VALUES OF ITEM // + var defaults = { + delay:9000, + responsiveLevels:4064, // Single or Arrac for Responsive Levels i.e.: 4064 or i.e. [2048, 1024, 768, 480] + gridwidth:960, // Single or Array i.e. 960 or [960, 840,760,460] + gridheight:500, // Single or Array i.e. 500 or [500, 450,400,350] + minHeight:0, + autoHeight:"off", + sliderType : "standard", // standard, carousel, hero + sliderLayout : "auto", // auto, fullwidth, fullscreen + fullScreenAlignForce:"off", + fullScreenOffsetContainer:"", // Size for FullScreen Slider minimising Calculated on the Container sizes + fullScreenOffset:"0", // Size for FullScreen Slider minimising + hideCaptionAtLimit:0, // It Defines if a caption should be shown under a Screen Resolution ( Basod on The Width of Browser) + hideAllCaptionAtLimit:0, // Hide all The Captions if Width of Browser is less then this value + hideSliderAtLimit:0, // Hide the whole slider, and stop also functions if Width of Browser is less than this value + disableProgressBar:"off", // Hides Progress Bar if is set to "on" + stopAtSlide:-1, // Stop Timer if Slide "x" has been Reached. If stopAfterLoops set to 0, then it stops already in the first Loop at slide X which defined. -1 means do not stop at any slide. stopAfterLoops has no sinn in this case. + stopAfterLoops:-1, // Stop Timer if All slides has been played "x" times. IT will stop at THe slide which is defined via stopAtSlide:x, if set to -1 slide never stop automatic + shadow:0, //0 = no Shadow, 1,2,3 = 3 Different Art of Shadows (No Shadow in Fullwidth Version !) + dottedOverlay:"none", //twoxtwo, threexthree, twoxtwowhite, threexthreewhite + startDelay:0, // Delay before the first Animation starts. + lazyType : "smart", //full, smart, single + spinner:"spinner0", + + viewPort:{ + enable:false, // if enabled, slider wait with start or wait at first slide. + outof:"wait", // wait,pause + visible_area:"60%" + }, + + fallbacks:{ + isJoomla:false, + panZoomDisableOnMobile:"off", + simplifyAll:"on", + nextSlideOnWindowFocus:"off", + disableFocusListener:true + }, + + parallax : { + type : "off", // off, mouse, scroll, mouse+scroll + levels: [10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85], + origo:"enterpoint", // slidercenter or enterpoint + speed:400, + bgparallax : "on", + opacity:"on", + disable_onmobile:"off" + + }, + + carousel : { + horizontal_align : "center", + vertical_align : "center", + infinity : "on", + space : 0, + maxVisibleItems : 3, + stretch:"off", + fadeout:"on", + maxRotation:0, + minScale:0, + vary_fade:"off", + vary_rotation:"on", + vary_scale:"off", + border_radius:"0px", + padding_top:0, + padding_bottom:0 + }, + + navigation : { + keyboardNavigation:"on", + keyboard_direction:"horizontal", // horizontal - left/right arrows, vertical - top/bottom arrows + mouseScrollNavigation:"off", + onHoverStop:"on", // Stop Banner Timet at Hover on Slide on/off + + touch:{ + touchenabled:"off", // Enable Swipe Function : on/off + swipe_treshold : 75, // The number of pixels that the user must move their finger by before it is considered a swipe. + swipe_min_touches : 1, // Min Finger (touch) used for swipe + drag_block_vertical:false, // Prevent Vertical Scroll during Swipe + swipe_direction:"horizontal" + }, + arrows: { + style:"", + enable:false, + hide_onmobile:false, + hide_onleave:true, + hide_delay:200, + hide_delay_mobile:1200, + hide_under:0, + hide_over:9999, + tmp:'', + left : { + h_align:"left", + v_align:"center", + h_offset:20, + v_offset:0, + }, + right : { + h_align:"right", + v_align:"center", + h_offset:20, + v_offset:0 + } + }, + bullets: { + style:"", + enable:false, + hide_onmobile:false, + hide_onleave:true, + hide_delay:200, + hide_delay_mobile:1200, + hide_under:0, + hide_over:9999, + direction:"horizontal", + h_align:"left", + v_align:"center", + space:0, + h_offset:20, + v_offset:0, + tmp:'' + }, + thumbnails: { + style:"", + enable:false, + width:100, + height:50, + min_width:100, + wrapper_padding:2, + wrapper_color:"#f5f5f5", + wrapper_opacity:1, + tmp:'', + visibleAmount:5, + hide_onmobile:false, + hide_onleave:true, + hide_delay:200, + hide_delay_mobile:1200, + hide_under:0, + hide_over:9999, + direction:"horizontal", + span:false, + position:"inner", + space:2, + h_align:"left", + v_align:"center", + h_offset:20, + v_offset:0 + }, + tabs: { + style:"", + enable:false, + width:100, + min_width:100, + height:50, + wrapper_padding:10, + wrapper_color:"#f5f5f5", + wrapper_opacity:1, + tmp:'', + visibleAmount:5, + hide_onmobile:false, + hide_onleave:true, + hide_delay:200, + hide_delay_mobile:1200, + hide_under:0, + hide_over:9999, + direction:"horizontal", + span:false, + space:0, + position:"inner", + h_align:"left", + v_align:"center", + h_offset:20, + v_offset:0 + } + }, + extensions:"extensions/source/", //example extensions/ or extensions/source/ + extensions_suffix:".js", + debugMode:false + }; + + // Merge of Defaults + options = jQuery.extend(true,{},defaults, options); + + return this.each(function() { + + var c = jQuery(this); + //REMOVE SLIDES IF SLIDER IS HERO + if (options.sliderType=="hero") { + c.find('>ul>li').each(function(i) { + if (i>0) jQuery(this).remove(); + }) + } + options.jsFileLocation = options.jsFileLocation || getScriptLocation("themepunch.revolution.min.js"); + options.jsFileLocation = options.jsFileLocation + options.extensions; + options.scriptsneeded = getNeededScripts(options,c); + options.curWinRange = 0; + + jQuery(this).on("scriptsloaded",function() { + if (options.modulesfailing ) { + c.html('
        !! Error at loading Slider Revolution 5.0 Extrensions.'+options.errorm+'
        ').show(); + return false; + } + // CHECK FOR MIGRATION + if (_R.migration!=undefined) options = _R.migration(c,options); + punchgs.force3D = true; + if (options.simplifyAll!=="on") punchgs.TweenLite.lagSmoothing(1000,16); + prepareOptions(c,options); + initSlider(c,options); + }); + + waitForScripts(c,options.scriptsneeded); + }) + }, + + // ENABLE DEBUG MODE + revdebugmode: function() { + return this.each(function() { + var container=jQuery(this); + if (container!=undefined && container.length>0 && jQuery('body').find('#'+container.attr('id')).length>0) { + var bt = container.parent().find('.tp-bannertimer'), + opt = bt.data('opt'); + opt.debugMode = true; + containerResized(container,opt); + } + }) + }, + + // METHODE SCROLL + revscroll: function(oy) { + return this.each(function() { + var container=jQuery(this); + if (container!=undefined && container.length>0 && jQuery('body').find('#'+container.attr('id')).length>0) + jQuery('body,html').animate({scrollTop:(container.offset().top+(opt.li.height())-oy)+"px"},{duration:400}); + }) + }, + + // METHODE PAUSE + revredraw: function(oy) { + return this.each(function() { + + var container=jQuery(this); + if (container!=undefined && container.length>0 && jQuery('body').find('#'+container.attr('id')).length>0) { + var bt = container.parent().find('.tp-bannertimer'); + var opt = bt.data('opt'); + + containerResized(container,opt); + } + }) + }, + // METHODE PAUSE + revkill: function(oy) { + + var self = this, + container=jQuery(this); + + punchgs.TweenLite.killDelayedCallsTo(showHideNavElements); + if (_R.endMoveCaption) + punchgs.TweenLite.killDelayedCallsTo(_R.endMoveCaption); + + if (container!=undefined && container.length>0 && jQuery('body').find('#'+container.attr('id')).length>0) { + + container.data('conthover',1); + container.data('conthover-changed',1); + container.trigger('revolution.slide.onpause'); + var bt = container.parent().find('.tp-bannertimer'), + opt = bt.data('opt'); + opt.tonpause = true; + container.trigger('stoptimer'); + + punchgs.TweenLite.killTweensOf(container.find('*'),false); + punchgs.TweenLite.killTweensOf(container,false); + container.unbind('hover, mouseover, mouseenter,mouseleave, resize'); + var resizid = "resize.revslider-"+container.attr('id'); + jQuery(window).off(resizid); + container.find('*').each(function() { + var el = jQuery(this); + + el.unbind('on, hover, mouseenter,mouseleave,mouseover, resize,restarttimer, stoptimer'); + el.off('on, hover, mouseenter,mouseleave,mouseover, resize'); + el.data('mySplitText',null); + el.data('ctl',null); + if (el.data('tween')!=undefined) + el.data('tween').kill(); + if (el.data('kenburn')!=undefined) + el.data('kenburn').kill(); + if (el.data('timeline_out')!=undefined) + el.data('timeline_out').kill(); + if (el.data('timeline')!=undefined) + el.data('timeline').kill(); + + el.remove(); + el.empty(); + el=null; + }) + + + punchgs.TweenLite.killTweensOf(container.find('*'),false); + punchgs.TweenLite.killTweensOf(container,false); + bt.remove(); + try{container.closest('.forcefullwidth_wrapper_tp_banner').remove();} catch(e) {} + try{container.closest('.rev_slider_wrapper').remove()} catch(e) {} + try{container.remove();} catch(e) {} + container.empty(); + container.html(); + container = null; + + opt = null; + delete(self.c); + delete(self.opt); + + return true; + } else { + return false; + } + + + }, + + // METHODE PAUSE + revpause: function() { + return this.each(function() { + var c=jQuery(this); + if (c!=undefined && c.length>0 && jQuery('body').find('#'+c.attr('id')).length>0) { + c.data('conthover',1); + c.data('conthover-changed',1); + c.trigger('revolution.slide.onpause'); + var bt = c.parent().find('.tp-bannertimer'); + var opt = bt.data('opt'); + opt.tonpause = true; + c.trigger('stoptimer'); + } + }) + }, + + // METHODE RESUME + revresume: function() { + return this.each(function() { + var c=jQuery(this); + if (c!=undefined && c.length>0 && jQuery('body').find('#'+c.attr('id')).length>0) { + c.data('conthover',0); + c.data('conthover-changed',1); + c.trigger('revolution.slide.onresume'); + var bt = c.parent().find('.tp-bannertimer'); + var opt = bt.data('opt'); + opt.tonpause = false; + c.trigger('starttimer'); + } + }) + }, + + // METHODE NEXT + revnext: function() { + return this.each(function() { + // CATCH THE CONTAINER + var c=jQuery(this); + if (c!=undefined && c.length>0 && jQuery('body').find('#'+c.attr('id')).length>0) { + var bt = c.parent().find('.tp-bannertimer'), + opt = bt.data('opt'); + _R.callingNewSlide(opt,c,1); + } + }) + }, + + // METHODE RESUME + revprev: function() { + return this.each(function() { + // CATCH THE CONTAINER + var c=jQuery(this); + if (c!=undefined && c.length>0 && jQuery('body').find('#'+c.attr('id')).length>0) { + var bt = c.parent().find('.tp-bannertimer'), + opt = bt.data('opt'); + _R.callingNewSlide(opt,c,-1); + } + }) + }, + + // METHODE LENGTH + revmaxslide: function() { + // CATCH THE CONTAINER + return jQuery(this).find('.tp-revslider-mainul >li').length; + }, + + + // METHODE CURRENT + revcurrentslide: function() { + // CATCH THE CONTAINER + var c=jQuery(this); + if (c!=undefined && c.length>0 && jQuery('body').find('#'+c.attr('id')).length>0) { + var bt = c.parent().find('.tp-bannertimer'); + var opt = bt.data('opt'); + return parseInt(opt.act,0)+1; + } + }, + + // METHODE CURRENT + revlastslide: function() { + // CATCH THE CONTAINER + return jQuery(this).find('.tp-revslider-mainul >li').length; + }, + + + // METHODE JUMP TO SLIDE + revshowslide: function(slide) { + return this.each(function() { + // CATCH THE CONTAINER + var c=jQuery(this); + if (c!=undefined && c.length>0 && jQuery('body').find('#'+c.attr('id')).length>0) { + var bt = c.parent().find('.tp-bannertimer'), + opt = bt.data('opt'); + _R.callingNewSlide(opt,c,"to"+(slide-1)); + } + }) + }, + revcallslidewithid: function(slide) { + return this.each(function() { + // CATCH THE CONTAINER + var c=jQuery(this); + if (c!=undefined && c.length>0 && jQuery('body').find('#'+c.attr('id')).length>0) { + var bt = c.parent().find('.tp-bannertimer'), + opt = bt.data('opt'); + _R.callingNewSlide(opt,c,slide); + } + }) + } +}); + + + +////////////////////////////////////////////////////////////// +// - REVOLUTION FUNCTION EXTENSIONS FOR GLOBAL USAGE - // +////////////////////////////////////////////////////////////// +var _R = jQuery.fn.revolution; + +jQuery.extend(true, _R, { + + simp : function(a,b,basic) { + var c = Math.abs(a) - (Math.floor(Math.abs(a / b))*b); + if (basic) + return c; + else + return a<0 ? -1*c : c; + }, + + // - IS IOS VERSION OLDER THAN 5 ?? + iOSVersion : function() { + var oldios = false; + if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i))) { + if (navigator.userAgent.match(/OS 4_\d like Mac OS X/i)) { + oldios = true; + } + } else { + oldios = false; + } + return oldios; + }, + + + // - CHECK IF BROWSER IS IE - + isIE : function( version, comparison ){ + var $div = jQuery('
        ').appendTo(jQuery('body')); + $div.html(''); + var ieTest = $div.find('a').length; + $div.remove(); + return ieTest; + }, + + // - IS MOBILE ?? + is_mobile : function() { + var agents = ['android', 'webos', 'iphone', 'ipad', 'blackberry','Android', 'webos', ,'iPod', 'iPhone', 'iPad', 'Blackberry', 'BlackBerry']; + var ismobile=false; + for(var i in agents) { + + if (navigator.userAgent.split(agents[i]).length>1) { + ismobile = true; + + } + } + return ismobile; + }, + + get_browser : function(){ + var N=navigator.appName, ua=navigator.userAgent, tem; + var M=ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i); + if(M && (tem= ua.match(/version\/([\.\d]+)/i))!= null) M[2]= tem[1]; + M=M? [M[1], M[2]]: [N, navigator.appVersion, '-?']; + return M[0]; + }, + + get_browser_version : function(){ + var N=navigator.appName, ua=navigator.userAgent, tem; + var M=ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i); + if(M && (tem= ua.match(/version\/([\.\d]+)/i))!= null) M[2]= tem[1]; + M=M? [M[1], M[2]]: [N, navigator.appVersion, '-?']; + return M[1]; + }, + + // GET THE HORIZONTAL OFFSET OF SLIDER BASED ON THE THU`MBNAIL AND TABS LEFT AND RIGHT SIDE + getHorizontalOffset : function(container,side) { + var thumbloff = gWiderOut(container,'.outer-left'), + thumbroff = gWiderOut(container,'.outer-right'); + + switch (side) { + case "left": + return thumbloff; + break; + case "right": + return thumbroff; + break; + case "both": + return thumbloff+thumbroff; + break; + } + }, + + + // - CALLING THE NEW SLIDE - // + callingNewSlide : function(opt,container,direction) { + + + var aindex = container.find('.next-revslide').length>0 ? container.find('.next-revslide').index() : container.find('.processing-revslide').length>0 ? container.find('.processing-revslide').index() : container.find('.active-revslide').index(), + nindex = 0; + + container.find('.next-revslide').removeClass("next-revslide"); + + + // SET NEXT DIRECTION + if (direction && jQuery.isNumeric(direction) || direction.match(/to/g)) { + if (direction===1 || direction === -1) { + nindex = aindex + direction; + nindex = nindex<0 ? opt.slideamount-1 : nindex>=opt.slideamount ? 0 : nindex; + } else { + + direction=parseInt(direction.split("to")[1],0); + nindex = direction<0 ? 0 : direction>opt.slideamount-1 ? opt.slideamount-1 : direction; + } + container.find('.tp-revslider-slidesli:eq('+nindex+')').addClass("next-revslide"); + } else + if (direction) { + + container.find('.tp-revslider-slidesli').each(function() { + var li=jQuery(this); + if (li.data('index')===direction) li.addClass("next-revslide"); + }) + } + + + nindex = container.find('.next-revslide').index(); + container.trigger("revolution.nextslide.waiting"); + + + if (nindex !== aindex && nindex!=-1) + swapSlide(container,opt); + else + container.find('.next-revslide').removeClass("next-revslide"); + }, + + slotSize : function(img,opt) { + opt.slotw=Math.ceil(opt.width/opt.slots); + + if (opt.sliderLayout=="fullscreen") + opt.sloth=Math.ceil(jQuery(window).height()/opt.slots); + else + opt.sloth=Math.ceil(opt.height/opt.slots); + + if (opt.autoHeight=="on" && img!==undefined && img!=="") + opt.sloth=Math.ceil(img.height()/opt.slots); + + + }, + + setSize : function(opt) { + + var ofh = (opt.top_outer || 0) + (opt.bottom_outer || 0), + cpt = parseInt((opt.carousel.padding_top||0),0), + cpb = parseInt((opt.carousel.padding_bottom||0),0), + maxhei = opt.gridheight[opt.curWinRange]; + + maxhei = maxheiopt.gridheight[opt.curWinRange] && opt.autoHeight!="on") opt.height=opt.gridheight[opt.curWinRange]; + + if (opt.sliderLayout=="fullscreen") { + opt.height = opt.bw * opt.gridheight[opt.curWinRange]; + var cow = opt.c.parent().width(); + var coh = jQuery(window).height(); + + if (opt.fullScreenOffsetContainer!=undefined) { + try{ + var offcontainers = opt.fullScreenOffsetContainer.split(","); + jQuery.each(offcontainers,function(index,searchedcont) { + coh = jQuery(searchedcont).length>0 ? coh - jQuery(searchedcont).outerHeight(true) : coh; + }); + } catch(e) {} + try{ + if (opt.fullScreenOffset.split("%").length>1 && opt.fullScreenOffset!=undefined && opt.fullScreenOffset.length>0) + coh = coh - (jQuery(window).height()* parseInt(opt.fullScreenOffset,0)/100); + else + if (opt.fullScreenOffset!=undefined && opt.fullScreenOffset.length>0) + coh = coh - parseInt(opt.fullScreenOffset,0); + } catch(e) {} + } + + coh = coh0) { + + jQuery.each(opt.lastplayedvideos,function(i,_nc) { + + _R.playVideo(_nc,opt); + }); + } + }, + + leaveViewPort : function(opt) { + opt.sliderlaststatus = opt.sliderstatus; + opt.c.trigger("stoptimer"); + if (opt.playingvideos != undefined && opt.playingvideos.length>0) { + opt.lastplayedvideos = jQuery.extend(true,[],opt.playingvideos); + jQuery.each(opt.playingvideos,function(i,_nc) { + if (_R.stopVideo) _R.stopVideo(_nc,opt); + }); + } + } + +}); + + +var _ISM = _R.is_mobile(); + + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +var lAjax = function(s,o) { + if (jQuery('body').data(s)) return false; + if (o.filesystem) { + if (o.errorm===undefined) + o.errorm = "
        Local Filesystem Detected !
        Put this to your header:"; + console.warn('Local Filesystem detected !'); + o.errorm = o.errorm+'
        <script type="text/javascript" src="'+o.jsFileLocation+s+o.extensions_suffix+'"></script>'; + console.warn(o.jsFileLocation+s+o.extensions_suffix+' could not be loaded !'); + console.warn('Please use a local Server or work online or make sure that you load all needed Libraries manually in your Document.'); + console.log(" "); + o.modulesfailing = true; + return false; + } + jQuery.ajax({ + url:o.jsFileLocation+s+o.extensions_suffix, + 'dataType':'script', + 'cache':true, + "error":function(e) { + console.warn("Slider Revolution 5.0 Error !") + console.error("Failure at Loading:"+s+o.extensions_suffix+" on Path:"+o.jsFileLocation) + console.info(e); + } + }); + jQuery('body').data(s,true); +} + +var getNeededScripts = function(o,c) { + var n = new Object(), + _n = o.navigation; + + n.kenburns = false; + n.parallax = false; + n.carousel = false; + n.navigation = false; + n.videos = false; + n.actions = false; + n.layeranim = false; + n.migration = false; + + + // MIGRATION EXTENSION + if (!c.data('version') || !c.data('version').match(/5./gi)) { + n.kenburns = true; + n.parallax = true; + n.carousel = false; + n.navigation = true; + n.videos = true; + n.actions = true; + n.layeranim = true; + n.migration = true; + } + else { + // KEN BURN MODUL + c.find('img').each(function(){ + if (jQuery(this).data('kenburns')=="on") n.kenburns = true; + }); + + // NAVIGATION EXTENSTION + if (o.sliderType =="carousel" || _n.keyboardNavigation=="on" || _n.mouseScrollNavigation=="on" || _n.touch.touchenabled=="on" || _n.arrows.enable || _n.bullets.enable || _n.thumbnails.enable || _n.tabs.enable ) + n.navigation = true; + + // LAYERANIM, VIDEOS, ACTIONS EXTENSIONS + c.find('.tp-caption, .tp-static-layer, .rs-background-video-layer').each(function(){ + var _nc = jQuery(this); + if ((_nc.data('ytid')!=undefined || _nc.find('iframe').length>0 && _nc.find('iframe').attr('src').toLowerCase().indexOf('youtube')>0)) + n.videos = true; + if ((_nc.data('vimeoid')!=undefined || _nc.find('iframe').length>0 && _nc.find('iframe').attr('src').toLowerCase().indexOf('vimeo')>0)) + n.videos = true; + if (_nc.data('actions')!==undefined) + n.actions = true; + n.layeranim = true; + }); + + c.find('li').each(function() { + if (jQuery(this).data('link') && jQuery(this).data('link')!=undefined) + n.layeranim = true; + }) + + // VIDEO EXTENSION + if (!n.videos && (c.find('.rs-background-video-layer').length>0 || c.find(".tp-videolayer").length>0 || c.find('iframe').length>0 || c.find('video').length>0)) + n.videos = true; + + // VIDEO EXTENSION + if (o.sliderType =="carousel") + n.carousel = true; + + + + if (o.parallax.type!=="off" || o.viewPort.enable || o.viewPort.enable=="true") + n.parallax = true; + } + + if (o.sliderType=="hero") { + n.carousel = false; + n.navigation = false; + } + + if (window.location.href.match(/file:/gi)) { + n.filesystem = true; + o.filesystem = true; + } + + // LOAD THE NEEDED LIBRARIES + if (n.videos && typeof _R.isVideoPlaying=='undefined') lAjax('revolution.extension.video',o); + if (n.carousel && typeof _R.prepareCarousel=='undefined') lAjax('revolution.extension.carousel',o); + if (!n.carousel && typeof _R.animateSlide=='undefined') lAjax('revolution.extension.slideanims',o); + if (n.actions && typeof _R.checkActions=='undefined') lAjax('revolution.extension.actions',o); + if (n.layeranim && typeof _R.handleStaticLayers=='undefined') lAjax('revolution.extension.layeranimation',o); + if (n.kenburns && typeof _R.stopKenBurn=='undefined') lAjax('revolution.extension.kenburn',o); + if (n.navigation && typeof _R.createNavigation=='undefined') lAjax('revolution.extension.navigation',o); + if (n.migration && typeof _R.migration=='undefined') lAjax('revolution.extension.migration',o); + if (n.parallax && typeof _R.checkForParallax=='undefined') lAjax('revolution.extension.parallax',o); + + + + return n; +} + +/////////////////////////////////// +// - WAIT FOR SCRIPT LOADS - // +/////////////////////////////////// +var waitForScripts = function(c,n) { + // CHECK KEN BURN DEPENDENCIES + + if (n.filesystem || + (typeof punchgs !== 'undefined' && + (!n.kenburns || (n.kenburns && typeof _R.stopKenBurn !== 'undefined')) && + (!n.navigation || (n.navigation && typeof _R.createNavigation !== 'undefined')) && + (!n.carousel || (n.carousel && typeof _R.prepareCarousel !== 'undefined')) && + (!n.videos || (n.videos && typeof _R.resetVideo !== 'undefined')) && + (!n.actions || (n.actions && typeof _R.checkActions !== 'undefined')) && + (!n.layeranim || (n.layeranim && typeof _R.handleStaticLayers !== 'undefined')) && + (!n.migration || (n.migration && typeof _R.migration !== 'undefined')) && + (!n.parallax || (n.parallax && typeof _R.checkForParallax !== 'undefined')) && + (n.carousel || (!n.carousel && typeof _R.animateSlide !== 'undefined')) + )) + c.trigger("scriptsloaded"); + else + setTimeout(function() { + waitForScripts(c,n); + },50); + +} + +////////////////////////////////// +// - GET SCRIPT LOCATION - // +////////////////////////////////// +var getScriptLocation = function(a) { + + var srcexp = new RegExp("themepunch.revolution.min.js","gi"), + ret = ""; + jQuery("script").each(function() { + var src = jQuery(this).attr("src"); + if (src && src.match(srcexp)) + ret = src; + }); + + ret = ret.replace('jquery.themepunch.revolution.min.js', ''); + ret = ret.replace('jquery.themepunch.revolution.js', ''); + ret = ret.split("?")[0]; + return ret; +} + +////////////////////////////////////////// +// - ADVANCED RESPONSIVE LEVELS - // +////////////////////////////////////////// +var setCurWinRange = function(opt) { + var curlevel = 0, + curwidth = 9999, + lastmaxlevel = 0, + lastmaxid = 0, + curid = 0, + winw = jQuery(window).width(); + + jQuery.each(opt.responsiveLevels,function(index,level) { + if (winwlevel) { + curwidth = level; + curid = index; + lastmaxlevel = level; + } + } + + if (winw>level && lastmaxlevel'); + + // PREPRARE SOME CLASSES AND VARIABLES + container.find('>ul').addClass("tp-revslider-mainul"); + + // CREATE SOME DEFAULT OPTIONS FOR LATER + opt.c=container; + opt.ul = container.find('.tp-revslider-mainul'); + opt.cid = container.attr('id'); + opt.ul.css({visibility:"visible"}); + + // RANDOMIZE THE SLIDER SHUFFLE MODE + if (opt.shuffle=="on") { + var fsa = new Object, + fli = opt.ul.find('>li:first-child'); + + fsa.fstransition = fli.data('fstransition'); + fsa.fsmasterspeed = fli.data('fsmasterspeed'); + fsa.fsslotamount = fli.data('fsslotamount'); + + for (var u=0;uli:eq('+it+')').prependTo(opt.ul); + } + + var newfli = opt.ul.find('>li:first-child'); + newfli.data('fstransition',fsa.fstransition); + newfli.data('fsmasterspeed',fsa.fsmasterspeed); + newfli.data('fsslotamount',fsa.fsslotamount); + // COLLECT ALL LI INTO AN ARRAY + opt.li = opt.ul.find('>li'); + } + + + opt.li = opt.ul.find('>li'); + opt.thumbs = new Array(); + opt.slideamount = opt.li.length; + opt.slots=4; + opt.act=-1; + opt.firststart=1; + opt.loadqueue = new Array(); + opt.syncload = 0; + opt.conw = container.width(); + opt.conh = container.height(); + + if (opt.responsiveLevels.length>1) + opt.responsiveLevels[0] = 9999; + else + opt.responsiveLevels = 9999; + + // RECORD THUMBS AND SET INDEXES + jQuery.each(opt.li,function(index,li) { + var li = jQuery(li), + img = li.find('.rev-slidebg') || li.find('img').first(), + i = 0; + li.addClass("tp-revslider-slidesli"); + if (li.data('index')===undefined) li.data('index','rs-'+Math.round(Math.random()*999999)); + + var obj = new Object; + obj.params = new Array(); + + obj.id = li.data('index'); + obj.src = li.data('thumb')!==undefined ? li.data('thumb') : img.data('lazyload') !== undefined ? img.data('lazyload') : img.attr('src'); + if (li.data('title') !== undefined) obj.params.push({from:RegExp("\\{\\{title\\}\\}","g"), to:li.data("title")}) + if (li.data('description') !== undefined) obj.params.push({from:RegExp("\\{\\{description\\}\\}","g"), to:li.data("description")}) + for (var i=1;i<=10;i++) { + if (li.data("param"+i)!==undefined) + obj.params.push({from:RegExp("\\{\\{param"+i+"\\}\\}","g"), to:li.data("param"+i)}) + } + opt.thumbs.push(obj); + + li.data('origindex',li.index()); + + // IF LINK ON SLIDE EXISTS, NEED TO CREATE A PROPER LAYER FOR IT. + if (li.data('link')!=undefined) { + var link = li.data('link'), + target= li.data('target') || "_self", + zindex= li.data('slideindex')==="back" ? 0 : 60, + linktoslide=li.data('linktoslide'), + checksl = linktoslide; + if (linktoslide != undefined) + if (linktoslide!="next" && linktoslide!="prev") + opt.li.each(function() { + var t = jQuery(this); + if (t.data('origindex')+1==checksl) linktoslide = t.index()+1; + }); + + + if (link!="slide") linktoslide="no"; + var apptxt = '
        '; + li.append(apptxt); + } + }); + + + // CREATE GRID WIDTH AND HEIGHT ARRAYS + opt.rle = opt.responsiveLevels.length || 1; + opt.gridwidth = cArray(opt.gridwidth,opt.rle); + opt.gridheight = cArray(opt.gridheight,opt.rle); + // END OF VERSION 5.0 INIT MODIFICATION + + + + // SIMPLIFY ANIMATIONS ON OLD IOS AND IE8 IF NEEDED + if (opt.simplifyAll=="on" && (_R.isIE(8) || _R.iOSVersion())) { + container.find('.tp-caption').each(function() { + var tc = jQuery(this); + tc.removeClass("customin customout").addClass("fadein fadeout"); + tc.data('splitin',""); + tc.data('speed',400); + }) + opt.li.each(function() { + var li= jQuery(this); + li.data('transition',"fade"); + li.data('masterspeed',500); + li.data('slotamount',1); + var img = li.find('.rev-slidebg') || li.find('>img').first(); + img.data('kenburns',"off"); + }); + } + + opt.desktop = !navigator.userAgent.match(/(iPhone|iPod|iPad|Android|BlackBerry|BB10|mobi|tablet|opera mini|nexus 7)/i); + + // SOME OPTIONS WHICH SHOULD CLOSE OUT SOME OTHER SETTINGS + opt.autoHeight = opt.sliderLayout=="fullscreen" ? "on" : opt.autoHeight; + + if (opt.sliderLayout=="fullwidth" && opt.autoHeight=="off") container.css({maxHeight:opt.gridheight[opt.curWinRange]+"px"}); + + // BUILD A FORCE FULLWIDTH CONTAINER, TO SPAN THE FULL SLIDER TO THE FULL WIDTH OF BROWSER + if (opt.sliderLayout!="auto" && container.closest('.forcefullwidth_wrapper_tp_banner').length==0) { + var cp = container.parent(), + mb = cp.css('marginBottom'), + mt = cp.css('marginTop'); + mb = mb===undefined ? 0 : mb; + mt = mt===undefined ? 0 : mt; + + cp.wrap('
        '); + container.closest('.forcefullwidth_wrapper_tp_banner').append('
        '); + container.parent().css({marginTop:"0px",marginBottom:"0px"}); + //container.css({'backgroundColor':container.parent().css('backgroundColor'),'backgroundImage':container.parent().css('backgroundImage')}); + container.parent().css({position:'absolute'}); + } + + + + // SHADOW ADD ONS + if (opt.shadow!==undefined && opt.shadow>0) { + container.parent().addClass('tp-shadow'+opt.shadow); + container.parent().append('
        '); + container.parent().find('.tp-shadowcover').css({'backgroundColor':container.parent().css('backgroundColor'),'backgroundImage':container.parent().css('backgroundImage')}); + } + + // ESTIMATE THE CURRENT WINDOWS RANGE INDEX + setCurWinRange(opt); + + // IF THE CONTAINER IS NOT YET INITIALISED, LETS GO FOR IT + if (!container.hasClass("revslider-initialised")) { + // MARK THAT THE CONTAINER IS INITIALISED WITH SLIDER REVOLUTION ALREADY + container.addClass("revslider-initialised"); + + // FOR BETTER SELECTION, ADD SOME BASIC CLASS + container.addClass("tp-simpleresponsive"); + + // WE DONT HAVE ANY ID YET ? WE NEED ONE ! LETS GIVE ONE RANDOMLY FOR RUNTIME + if (container.attr('id')==undefined) container.attr('id',"revslider-"+Math.round(Math.random()*1000+5)); + + // CHECK IF FIREFOX 13 IS ON WAY.. IT HAS A STRANGE BUG, CSS ANIMATE SHOULD NOT BE USED + opt.firefox13 = false; + opt.ie = !jQuery.support.opacity; + opt.ie9 = (document.documentMode == 9); + + opt.origcd=opt.delay; + + + + // CHECK THE jQUERY VERSION + var version = jQuery.fn.jquery.split('.'), + versionTop = parseFloat(version[0]), + versionMinor = parseFloat(version[1]), + versionIncrement = parseFloat(version[2] || '0'); + if (versionTop==1 && versionMinor < 7) + container.html('
        The Current Version of jQuery:'+version+'
        Please update your jQuery Version to min. 1.7 in Case you wish to use the Revolution Slider Plugin
        '); + if (versionTop>1) opt.ie=false; + + + + // PREPARE VIDEO PLAYERS + var addedApis = new Object(); + addedApis.addedyt=0; + addedApis.addedvim=0; + addedApis.addedvid=0; + + container.find('.tp-caption, .rs-background-video-layer').each(function(i) { + var _nc = jQuery(this), + an = _nc.data('autoplayonlyfirsttime'), + ap = _nc.data('autoplay'); + + if (_nc.hasClass("tp-static-layer") && _R.handleStaticLayers) + _R.handleStaticLayers(_nc,opt); + + // FIX VISIBLE IFRAME BUG IN SAFARI + var iff = 0; + _nc.find('iframe').each(function() { + punchgs.TweenLite.set(jQuery(this),{autoAlpha:0}); + iff++; + }) + if (iff>0) + _nc.data('iframes',true) + + if (_nc.hasClass("tp-caption")) { + // PREPARE LAYERS AND WRAP THEM WITH PARALLAX, LOOP, MASK HELP CONTAINERS + var ec = _nc.hasClass("slidelink") ? "width:100% !important;height:100% !important;" : ""; + _nc.wrap(''); + var lar = ['pendulum', 'rotate','slideloop','pulse','wave'], + _lc = _nc.closest('.tp-loop-wrap'); + jQuery.each(lar,function(i,k) { + var lw = _nc.find('.rs-'+k), + f = lw.data() || ""; + if (f!="") { + _lc.data(f); + _lc.addClass("rs-"+k); + lw.children(0).unwrap(); + _nc.data('loopanimation',"on"); + } + }); + punchgs.TweenLite.set(_nc,{visibility:"hidden"}); + } + + var as = _nc.data('actions'); + if (as!==undefined) _R.checkActions(_nc,opt,as); + + checkHoverDependencies(_nc,opt); + + if (_R.checkVideoApis) + addedApis = _R.checkVideoApis(_nc,opt,addedApis); + + // REMOVE VIDEO AUTOPLAYS FOR MOBILE DEVICES + if (_ISM) { + if (an == true || an=="true") + _nc.data('autoplayonlyfirsttime',"false"); + if (ap==true || ap=="true") + _nc.data('autoplay',"off"); + } + + + // PREPARE TIMER BEHAVIOUR BASED ON AUTO PLAYED VIDEOS IN SLIDES + if (an == true || an=="true" || ap == "1sttime") + _nc.closest('li.tp-revslider-slidesli').addClass("rs-pause-timer-once"); + if (ap==true || ap=="true" || ap == "on" || ap == "no1sttime") + _nc.closest('li.tp-revslider-slidesli').addClass("rs-pause-timer-always"); + + }); + + container.hover( + function() { + container.trigger('tp-mouseenter'); + }, + function() { + container.trigger('tp-mouseleft'); + }); + + + // REMOVE ANY VIDEO JS SETTINGS OF THE VIDEO IF NEEDED (OLD FALL BACK, AND HELP FOR 3THD PARTY PLUGIN CONFLICTS) + container.find('.tp-caption video').each(function(i) { + var v = jQuery(this); + v.removeClass("video-js vjs-default-skin"); + v.attr("preload",""); + v.css({display:"none"}); + }); + + //PREPARE LOADINGS ALL IN SEQUENCE + if (opt.sliderType!=="standard") opt.lazyType = "all"; + + + // PRELOAD STATIC LAYERS + loadImages(container.find('.tp-static-layers img'),opt,container,0); + waitForCurrentImages(container.find('.tp-static-layers img'),opt,function() { + container.find('.tp-static-layers img').each(function() { + var e = jQuery(this), + src = e.data('lazyload') != undefined ? e.data('lazyload') : e.attr('src'), + loadobj = getLoadObj(opt,src); + e.attr('src',loadobj.src) + }) + }) + + // SET ALL LI AN INDEX AND INIT LAZY LOADING + opt.li.each(function(i) { + var li = jQuery(this); + + if (opt.lazyType=="all" || (opt.lazyType=="smart" && (i==0 || i == 1 || i == opt.slideamount || i == opt.slideamount-1))) { + loadImages(li,opt,container,i); + + waitForCurrentImages(li,opt,function() { + if (opt.sliderType=="carousel") + punchgs.TweenLite.to(li,1,{autoAlpha:1,ease:punchgs.Power3.easeInOut}); + }); + } + + }); + + + + // IF DEEPLINK HAS BEEN SET + var deeplink = getUrlVars("#")[0]; + if (deeplink.length<9) { + if (deeplink.split('slide').length>1) { + var dslide=parseInt(deeplink.split('slide')[1],0); + if (dslide<1) dslide=1; + if (dslide>opt.slideamount) dslide=opt.slideamount; + opt.startWithSlide=dslide-1; + } + } + + // PREPARE THE SPINNER + container.append( '
        '+ + '
        '+ + '
        '+ + '
        '+ + '
        '+ + '
        '+ + '
        '); + + + // RESET THE TIMER + if (container.find('.tp-bannertimer').length===0) container.append(''); + container.find('.tp-bannertimer').css({'width':'0%'}); + container.find('.tp-bannertimer').data('opt',opt); + + // PREPARE THE SLIDES + opt.ul.css({'display':'block'}); + prepareSlides(container,opt); + if (opt.parallax.type!=="off") _R.checkForParallax(container,opt); + + + // PREPARE SLIDER SIZE + _R.setSize(opt); + + + // Call the Navigation Builder + if (opt.sliderType!=="hero") _R.createNavigation(container,opt); + if (_R.resizeThumbsTabs) _R.resizeThumbsTabs(opt); + contWidthManager(opt); + var _v = opt.viewPort; + opt.inviewport = false; + + if (_v !=undefined && _v.enable) { + _v.visible_area = parseFloat(_v.visible_area)/100; + _v.visible_area = _v.visible_area<0.001 ? _v.visible_area*100 : _v.visible_area; + if (_R.scrollTicker) _R.scrollTicker(opt,container); + } + + + + // START THE SLIDER + setTimeout(function() { + if ( opt.sliderType =="carousel") _R.prepareCarousel(opt); + + if (!_v.enable || (_v.enable && opt.inviewport) || (_v.enable && !opt.inviewport && !_v.outof=="wait")) { + swapSlide(container,opt); + } + else + opt.waitForFirstSlide = true; + + if (_R.manageNavigation) _R.manageNavigation(opt); + + + // START COUNTDOWN + if (opt.slideamount>1) { + if (!_v.enable || (_v.enable && opt.inviewport)) + countDown(container,opt); + else + opt.waitForCountDown = true; + } + setTimeout(function() { + container.trigger('revolution.slide.onloaded'); + },100); + },opt.startDelay); + opt.startDelay=0; + + + + /****************************** + - FULLSCREEN CHANGE - + ********************************/ + // FULLSCREEN MODE TESTING + jQuery("body").data('rs-fullScreenMode',false); + jQuery(window).on ('mozfullscreenchange webkitfullscreenchange fullscreenchange',function(){ + jQuery("body").data('rs-fullScreenMode',!jQuery("body").data('rs-fullScreenMode')); + if (jQuery("body").data('rs-fullScreenMode')) { + setTimeout(function() { + jQuery(window).trigger("resize"); + },200); + } + }); + + var resizid = "resize.revslider-"+container.attr('id'); + + // IF RESIZED, NEED TO STOP ACTUAL TRANSITION AND RESIZE ACTUAL IMAGES + jQuery(window).on(resizid,function() { + if (container==undefined) return false; + + if (jQuery('body').find(container)!=0) + contWidthManager(opt); + + if (container.outerWidth(true)!=opt.width || container.is(":hidden") || (opt.sliderLayout=="fullscreen" && jQuery(window).height()!=opt.lastwindowheight)) { + opt.lastwindowheight = jQuery(window).height(); + containerResized(container,opt); + } + + + }); + + hideSliderUnder(container,opt); + contWidthManager(opt); + if (!opt.disableFocusListener && opt.disableFocusListener!="true" && opt.disableFocusListener!==true) tabBlurringCheck(container,opt); + } +} + +/************************************* + - CREATE SIMPLE ARRAYS - +**************************************/ +var cArray = function(b,l) { + if (!jQuery.isArray(b)) { + var t = b; + b = new Array(); + b.push(t); + } + if (b.lengthopt.bw) + opt.bh=opt.bw + else + opt.bw = opt.bh; + + if (opt.bh>1 || opt.bw>1) { opt.bw=1; opt.bh=1; } +} + + + + + +///////////////////////////////////////// +// - PREPARE THE SLIDES / SLOTS - // +/////////////////////////////////////// +var prepareSlides = function(container,opt) { + + container.find('.tp-caption').each(function() { + var c = jQuery(this); + if (c.data('transition')!==undefined) c.addClass(c.data('transition')); + }); + + // PREPARE THE UL CONTAINER TO HAVEING MAX HEIGHT AND HEIGHT FOR ANY SITUATION + opt.ul.css({overflow:'hidden',width:'100%',height:'100%',maxHeight:container.parent().css('maxHeight')}) + if (opt.autoHeight=="on") { + opt.ul.css({overflow:'hidden',width:'100%',height:'100%',maxHeight:"none"}); + container.css({'maxHeight':'none'}); + container.parent().css({'maxHeight':'none'}); + } + //_R.setSize("",opt); + opt.li.each(function(j) { + var li=jQuery(this); + + + //START WITH CORRECT SLIDE + if ((opt.startWithSlide !=undefined && j==opt.startWithSlide) || opt.startWithSlide ===undefined && j==0) + li.addClass("next-revslide"); + + + // MAKE LI OVERFLOW HIDDEN FOR FURTHER ISSUES + li.css({'width':'100%','height':'100%','overflow':'hidden'}); + + }); + + if (opt.sliderType === "carousel") { + //SET CAROUSEL + opt.ul.css({overflow:"visible"}).wrap(''); + var apt = '
        '; + opt.c.parent().prepend(apt); + opt.c.parent().append(apt); + _R.prepareCarousel(opt); + } + + // RESOLVE OVERFLOW HIDDEN OF MAIN CONTAINER + container.parent().css({'overflow':'visible'}); + + + opt.li.find('>img').each(function(j) { + + var img=jQuery(this), + bgvid = img.closest('li').find('.rs-background-video-layer'); + + + img.addClass('defaultimg'); + + // TURN OF KEN BURNS IF WE ARE ON MOBILE AND IT IS WISHED SO + if (opt.panZoomDisableOnMobile == "on" && _ISM) { + img.data('kenburns',"off"); + img.data('bgfit',"cover"); + } + + + img.wrap('
        '); + var dts = img.data(); + img.closest('.slotholder').data(dts); + + if (bgvid.length>0 && dts.bgparallax!=undefined) + bgvid.data('bgparallax',dts.bgparallax); + + if (opt.dottedOverlay!="none" && opt.dottedOverlay!=undefined) + img.closest('.slotholder').append('
        '); + + var src=img.attr('src'); + dts.src = src; + dts.bgfit = dts.bgfit || "cover"; + dts.bgrepeat = dts.bgrepeat || "no-repeat", + dts.bgposition = dts.bgposition || "center center"; + + var pari = img.closest('.slotholder'); + img.parent().append('
        '); + var comment = document.createComment("Runtime Modification - Img tag is Still Available for SEO Goals in Source - " + img.get(0).outerHTML); + img.replaceWith(comment); + img = pari.find('.tp-bgimg'); + img.data(dts); + img.attr("src",src); + + if (opt.sliderType === "standard" || opt.sliderType==="undefined") + img.css({'opacity':0}); + + }) + + +} + + +// REMOVE SLOTS // +var removeSlots = function(container,opt,where,addon) { + opt.removePrepare = opt.removePrepare + addon; + where.find('.slot').each(function() { + jQuery(this).remove(); + }); + opt.transition = 0; + opt.removePrepare = 0; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// SLIDE SWAPS //////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +// THE IMAGE IS LOADED, WIDTH, HEIGHT CAN BE SAVED +var imgLoaded = function(img,opt,progress) { + opt.syncload--; + jQuery.each(opt.loadqueue, function(index,queue) { + + var mqsrc = queue.src.replace(/\.\.\/\.\.\//gi,""); + + if (queue.src === decodeURIComponent(img.src) || (window.location.origin==="file://" && img.src.match(new RegExp(mqsrc)))) { + queue.progress = progress; + queue.width = img.width; + queue.height = img.height; + } + }); + progressImageLoad(opt); +} + +// PRELOAD IMAGES 3 PIECES ON ONE GO, CHECK LOAD PRIORITY +var progressImageLoad = function(opt) { + if (opt.syncload == 3) return; + + jQuery.each(opt.loadqueue, function(index,queue) { + if (queue.progress.match(/prepared/g)) { + if (opt.syncload<=3) { + opt.syncload++; + var img = new Image(); + + img.onload = function() { + imgLoaded(this,opt,"loaded"); + }; + img.onerror = function() { + imgLoaded(this,opt,"failed"); + }; + img.src=queue.src; + queue.progress="inload"; + } + } + }); +} + +// ADD TO QUEUE THE NOT LOADED IMAGES YES +var addToLoadQueue = function(src,opt,prio) { + var alreadyexist = false; + jQuery.each(opt.loadqueue, function(index,queue) { + if (queue.src === src) alreadyexist = true; + }); + + + if (!alreadyexist) { + var loadobj = new Object(); + loadobj.src = src; + loadobj.prio = prio; + loadobj.progress = "prepared"; + opt.loadqueue.push(loadobj); + } + +} + +// LOAD THE IMAGES OF THE PREDEFINED CONTAINER +var loadImages = function(container,opt,nextli,prio) { + + nextli.find('img,.defaultimg').each(function() { + var element = jQuery(this), + src = element.data('lazyload') !== undefined && element.data('lazyload')!=="undefined" ? element.data('lazyload') : element.attr('src'); + + addToLoadQueue(src,opt,prio); + }); + progressImageLoad(opt); +} + +// FIND SEARCHED IMAGE IN THE LOAD QUEUE +var getLoadObj = function(opt,src) { + var obj = new Object(); + jQuery.each(opt.loadqueue, function(index,queue) { + if (queue.src == src) obj = queue; + }); + return obj; +} + +// WAIT PROGRESS TILL THE PREDEFINED CONTAINER HAS ALL IMAGES LOADED INSIDE +var waitForCurrentImages = function(nextli,opt,callback) { + + var waitforload = false; + nextli.find('img,.defaultimg').each(function() { + var element = jQuery(this), + src = element.data('lazyload') != undefined ? element.data('lazyload') : element.attr('src'), + loadobj = getLoadObj(opt,src); + + // IF ELEMENTS IS NOT LOADED YET, AND IT IS NOW LOADED + if (element.data('loaded')===undefined && loadobj !==undefined && loadobj.progress && loadobj.progress.match(/loaded/g)) { + + element.attr('src',loadobj.src); + // IF IT IS A DEFAULT IMG, WE NEED TO ASSIGN SOME SPECIAL VALUES TO IT + if (element.hasClass("defaultimg")) { + if (!_R.isIE(8)) + element.css({backgroundImage:'url("'+loadobj.src+'")'}); + else { + defimg.attr('src',loadobj.src); + } + nextli.data('owidth',loadobj.width); + nextli.data('oheight',loadobj.height); + nextli.find('.slotholder').data('owidth',loadobj.width); + nextli.find('.slotholder').data('oheight',loadobj.height); + } else { + var w = element.data('ww'), + h = element.data('hh'); + + w = w==undefined || w =="auto" || w=="" ? loadobj.width : w; + h = h==undefined || h =="auto" || h=="" ? loadobj.height : h; + + element.data('ww',w); + element.data('hh',h); + + } + // ELEMENT IS NOW FULLY LOADED + element.data('loaded',true); + } + + if (loadobj && loadobj.progress && loadobj.progress.match(/inprogress|inload|prepared/g)) waitforload = true; + // WAIT FOR VIDEO API'S + if (opt.youtubeapineeded == true && (!window['YT'] || YT.Player==undefined)) waitforload = true; + if (opt.vimeoapineeded == true && !window['Froogaloop']) waitforload = true; + + + }); + + + if (waitforload) + setTimeout(function() { + waitForCurrentImages(nextli,opt,callback) ; + },19); + else + callback(); + +} + + +////////////////////////////////////// +// - CALL TO SWAP THE SLIDES - // +///////////////////////////////////// +var swapSlide = function(container,opt) { + + clearTimeout(opt.waitWithSwapSlide); + + if (container.find('.processing-revslide').length>0) { + opt.waitWithSwapSlide = setTimeout(function() { + swapSlide(container,opt); + + },150); + return false; + } + + var actli = container.find('.active-revslide'), + nextli = container.find('.next-revslide'), + defimg= nextli.find('.defaultimg'); + + + if (nextli.index() === actli.index()) { + nextli.removeClass("next-revslide"); + return false; + } + nextli.removeClass("next-revslide").addClass("processing-revslide"); + + // CHECK IF WE ARE ALREADY AT LAST ITEM TO PLAY IN REAL LOOP SESSION + if (opt.stopLoop=="on" && nextli.index()==opt.lastslidetoshow-1) { + container.find('.tp-bannertimer').css({'visibility':'hidden'}); + container.trigger('revolution.slide.onstop'); + opt.noloopanymore = 1; + } + + // INCREASE LOOP AMOUNTS + if (nextli.index()===opt.slideamount-1) { + opt.looptogo=opt.looptogo-1; + if (opt.looptogo<=0) + opt.stopLoop="on"; + } + + opt.tonpause = true; + container.trigger('stoptimer'); + opt.cd=0; + container.find('.tp-loader').css({display:"block"}); + loadImages(container,opt,nextli,1); + + + // WAIT FOR SWAP SLIDE PROGRESS + waitForCurrentImages(nextli,opt,function() { + // MANAGE BG VIDEOS + nextli.find('.rs-background-video-layer').each(function() { + var _nc = jQuery(this); + if (!_nc.hasClass("HasListener")) { + _nc.data('bgvideo',1); + _R.manageVideoLayer(_nc,opt); + } + _nc.append('
        ') + }); + swapSlideProgress(opt,defimg,container) + }); + +} + +////////////////////////////////////// +// - PROGRESS SWAP THE SLIDES - // +///////////////////////////////////// +var swapSlideProgress = function(opt,defimg,container) { + + var actli = container.find('.active-revslide'), + nextli = container.find('.processing-revslide'), + actsh = actli.find('.slotholder'), + nextsh = nextli.find('.slotholder'); + opt.tonpause = false; + opt.cd=0; + container.trigger('nulltimer'); + + container.find('.tp-loader').css({display:"none"}); + // if ( opt.sliderType =="carousel") _R.prepareCarousel(opt); + _R.setSize(opt); + _R.slotSize(defimg,opt); + + if (_R.manageNavigation) _R.manageNavigation(opt); + var data={}; + data.nextslide=nextli; + data.currentslide=actli; + container.trigger('revolution.slide.onbeforeswap',data); + + opt.transition = 1; + opt.videoplaying = false; + + // IF DELAY HAS BEEN SET VIA THE SLIDE, WE TAKE THE NEW VALUE, OTHER WAY THE OLD ONE... + if (nextli.data('delay')!=undefined) { + opt.cd=0; + opt.delay=nextli.data('delay'); + } else + opt.delay=opt.origcd; + + + + /////////////////////////// + // REMOVE THE CAPTIONS // + /////////////////////////// + + if (actli.index() != nextli.index() && opt.firststart!=1) + if (_R.removeTheCaptions) _R.removeTheCaptions(actli,opt); + + + if (!nextli.hasClass('rs-pause-timer-once') && !nextli.hasClass("rs-pause-timer-always")) + container.trigger('restarttimer'); + else + opt.videoplaying = true; + + nextli.removeClass("rs-pause-timer-once"); + + var nexttrans, + direction=-1, + mtl; + + // SELECT SLIDER TYPE + if ( opt.sliderType =="carousel") { + mtl = new punchgs.TimelineLite(); + _R.prepareCarousel(opt,mtl); + letItFree(container,opt,nextsh,actsh,nextli,actli,mtl); + opt.transition = 0; + opt.firststart = 0; + } else { + mtl = new punchgs.TimelineLite({onComplete:function() { + letItFree(container,opt,nextsh,actsh,nextli,actli,mtl); + }}); + mtl.add(punchgs.TweenLite.set(nextsh.find('.defaultimg'),{opacity:0})); + mtl.pause(); + + if (opt.firststart==1) { + punchgs.TweenLite.set(actli,{autoAlpha:0}); + opt.firststart=0; + } + + + punchgs.TweenLite.set(actli,{zIndex:18}); + punchgs.TweenLite.set(nextli,{autoAlpha:0,zIndex:20}); + + + // IF THERE IS AN OTHER FIRST SLIDE START HAS BEED SELECTED + if (nextli.data('differentissplayed') =='prepared') { + nextli.data('differentissplayed','done'); + nextli.data('transition',nextli.data('savedtransition')); + nextli.data('slotamount',nextli.data('savedslotamount')); + nextli.data('masterspeed',nextli.data('savedmasterspeed')); + } + + + if (nextli.data('fstransition') != undefined && nextli.data('differentissplayed') !="done") { + + nextli.data('savedtransition',nextli.data('transition')); + nextli.data('savedslotamount',nextli.data('slotamount')); + nextli.data('savedmasterspeed',nextli.data('masterspeed')); + nextli.data('transition',nextli.data('fstransition')); + nextli.data('slotamount',nextli.data('fsslotamount')); + nextli.data('masterspeed',nextli.data('fsmasterspeed')); + nextli.data('differentissplayed','prepared'); + } + + if (nextli.data('transition')==undefined) nextli.data('transition',"random"); + + nexttrans = 0; + var transtext = nextli.data('transition') !== undefined ? nextli.data('transition').split(",") : "fade", + curtransid = nextli.data('nexttransid') == undefined ? -1 : nextli.data('nexttransid'); + if (nextli.data('randomtransition')=="on") + curtransid = Math.round(Math.random()*transtext.length); + else + curtransid=curtransid+1; + + if (curtransid==transtext.length) curtransid=0; + nextli.data('nexttransid',curtransid); + + var comingtransition = transtext[curtransid]; + + if (opt.ie) { + if (comingtransition=="boxfade") comingtransition = "boxslide"; + if (comingtransition=="slotfade-vertical") comingtransition = "slotzoom-vertical"; + if (comingtransition=="slotfade-horizontal") comingtransition = "slotzoom-horizontal"; + } + + if (_R.isIE(8)) + comingtransition = 11; + + + + mtl = _R.animateSlide(nexttrans, comingtransition, container, opt, nextli, actli, nextsh, actsh, mtl); + if (nextsh.data('kenburns')=="on") { + _R.startKenBurn(nextsh,opt); + mtl.add(punchgs.TweenLite.set(nextsh,{autoAlpha:0})) + } + + // SHOW FIRST LI && ANIMATE THE CAPTIONS + mtl.pause(); + } + + // START PARALLAX IF NEEDED + if (opt.parallax.type=="scroll" && opt.parallax.firstgo==undefined && _R.scrollHandling) { + opt.parallax.firstgo = true; + _R.scrollHandling(opt); + setTimeout(function() { + _R.scrollHandling(opt); + },210); + setTimeout(function() { + _R.scrollHandling(opt); + },420); + } + + + if (_R.animateTheCaptions) { + _R.animateTheCaptions(nextli, opt,null,mtl); + } else { + if (mtl != undefined) setTimeout(function() { + mtl.resume(); + },30); + } + punchgs.TweenLite.to(nextli,0.001,{autoAlpha:1}); + + +} + + +////////////////////////////////////////// +// GIVE FREE THE TRANSITIOSN // +////////////////////////////////////////// +var letItFree = function(container,opt,nextsh,actsh,nextli,actli,mtl) { + + if (opt.sliderType==="carousel") { + // CAROUSEL SLIDER + } else { + opt.removePrepare = 0; + punchgs.TweenLite.to(nextsh.find('.defaultimg'),0.001,{zIndex:20,autoAlpha:1,onComplete:function() { + removeSlots(container,opt,nextli,1); + + }}); + if (nextli.index()!=actli.index()) { + punchgs.TweenLite.to(actli,0.2,{zIndex:18,autoAlpha:0,onComplete:function() { + removeSlots(container,opt,actli,1); + }}); + } + } + + container.find('.active-revslide').removeClass("active-revslide"); + container.find('.processing-revslide').removeClass("processing-revslide").addClass("active-revslide"); + opt.act=nextli.index(); + + + if (opt.parallax.type=="scroll" || opt.parallax.type=="scroll+mouse" || opt.parallax.type=="mouse+scroll") + _R.scrollHandling(opt); + + mtl.clear(); + + + if (actsh.data('kbtl')!=undefined) { + actsh.data('kbtl').reverse(); + actsh.data('kbtl').timeScale(25); + } + if (nextsh.data('kenburns')=="on") { + if (nextsh.data('kbtl')!=undefined) { + nextsh.data('kbtl').timeScale(1); + nextsh.data('kbtl').play(); + } + else + _R.startKenBurn(nextsh,opt); + } + + nextli.find('.rs-background-video-layer').each(function(i) { + if (_ISM) return false; + var _nc = jQuery(this) + _R.resetVideo(_nc,opt); + + punchgs.TweenLite.fromTo(_nc,1,{autoAlpha:0},{autoAlpha:1,ease:punchgs.Power3.easeInOut,delay:0.2,onComplete:function() { + if (_R.animcompleted) _R.animcompleted(_nc,opt); + }}); + }); + + actli.find('.rs-background-video-layer').each(function(i) { + if (_ISM) return false; + var _nc = jQuery(this); + if (_R.stopVideo) { + _R.resetVideo(_nc,opt); + _R.stopVideo(_nc,opt); + } + punchgs.TweenLite.to(_nc,1,{autoAlpha:0,ease:punchgs.Power3.easeInOut,delay:0.2}); + }); + // TIRGGER THE ON CHANGE EVENTS + var data={}; + data.slideIndex=nextli.index()+1; + data.slideLIIndex=nextli.index(); + data.slide = nextli; + data.currentslide=nextli; + data.prevslide = actli; + container.trigger('revolution.slide.onchange',data); + container.trigger('revolution.slide.onafterswap',data); + +} + + +/////////////////////////// +// REMOVE THE LISTENERS // +/////////////////////////// +var removeAllListeners = function(container,opt) { + container.children().each(function() { + try{ jQuery(this).die('click'); } catch(e) {} + try{ jQuery(this).die('mouseenter');} catch(e) {} + try{ jQuery(this).die('mouseleave');} catch(e) {} + try{ jQuery(this).unbind('hover');} catch(e) {} + }) + try{ container.die('click','mouseenter','mouseleave');} catch(e) {} + clearInterval(opt.cdint); + container=null; +} + +/////////////////////////// +// - countDown - // +///////////////////////// +var countDown = function(container,opt) { + opt.cd=0; + opt.loop=0; + if (opt.stopAfterLoops!=undefined && opt.stopAfterLoops>-1) + opt.looptogo=opt.stopAfterLoops; + else + opt.looptogo=9999999; + + if (opt.stopAtSlide!=undefined && opt.stopAtSlide>-1) + opt.lastslidetoshow=opt.stopAtSlide; + else + opt.lastslidetoshow=999; + + opt.stopLoop="off"; + + if (opt.looptogo==0) opt.stopLoop="on"; + + if (opt.slideamount >1 && !(opt.stopAfterLoops==0 && opt.stopAtSlide==1) ) { + var bt=container.find('.tp-bannertimer'); + + // LISTENERS //container.trigger('stoptimer'); + container.on('stoptimer',function() { + + var bt = jQuery(this).find('.tp-bannertimer'); + bt.data('tween').pause(); + if (opt.disableProgressBar=="on") bt.css({visibility:"hidden"}); + opt.sliderstatus = "paused"; + }); + + + container.on('starttimer',function() { + if (opt.conthover!=1 && opt.videoplaying!=true && opt.width>opt.hideSliderAtLimit && opt.tonpause != true && opt.overnav !=true) + if (opt.noloopanymore !== 1 && (!opt.viewPort.enable || opt.inviewport)) { + bt.css({visibility:"visible"}); + bt.data('tween').resume(); + opt.sliderstatus = "playing"; + } + + if (opt.disableProgressBar=="on") bt.css({visibility:"hidden"}); + }); + + + container.on('restarttimer',function() { + var bt = jQuery(this).find('.tp-bannertimer'); + if (opt.noloopanymore !== 1 && (!opt.viewPort.enable || opt.inviewport)) { + bt.css({visibility:"visible"}); + bt.data('tween').kill(); + bt.data('tween',punchgs.TweenLite.fromTo(bt,opt.delay/1000,{width:"0%"},{force3D:"auto",width:"100%",ease:punchgs.Linear.easeNone,onComplete:countDownNext,delay:1})); + opt.sliderstatus = "playing"; + } + if (opt.disableProgressBar=="on") bt.css({visibility:"hidden"}); + }); + + container.on('nulltimer',function() { + bt.data('tween').pause(0); + if (opt.disableProgressBar=="on") bt.css({visibility:"hidden"}); + opt.sliderstatus = "paused"; + }); + + var countDownNext = function() { + if (jQuery('body').find(container).length==0) { + removeAllListeners(container,opt); + clearInterval(opt.cdint); + } + + container.trigger("revolution.slide.slideatend"); + + //STATE OF API CHANGED -> MOVE TO AIP BETTER + if (container.data('conthover-changed') == 1) { + opt.conthover= container.data('conthover'); + container.data('conthover-changed',0); + } + + _R.callingNewSlide(opt,container,1); + } + + bt.data('tween',punchgs.TweenLite.fromTo(bt,opt.delay/1000,{width:"0%"},{force3D:"auto",width:"100%",ease:punchgs.Linear.easeNone,onComplete:countDownNext,delay:1})); + bt.data('opt',opt); + container.trigger("starttimer"); + + container.on('tp-mouseenter',function() { + if (opt.navigation.onHoverStop=="on" && (!_ISM)) { + container.trigger('stoptimer'); + container.trigger('revolution.slide.onpause'); + } + }); + container.on('tp-mouseleft',function() { + if (container.data('conthover')!=1 && opt.navigation.onHoverStop=="on" && ((opt.viewPort.enable==true && opt.inviewport) || opt.viewPort.enable==false)) { + container.trigger('revolution.slide.onresume'); + container.trigger('starttimer'); + } + }); + } +} + + + + +////////////////////////////////////////////////////// +// * Revolution Slider - NEEDFULL FUNCTIONS +// * @version: 1.0 (30.10.2014) +// * @author ThemePunch +////////////////////////////////////////////////////// + + + +// - BLUR / FOXUS FUNCTIONS ON BROWSER + +var vis = (function(){ + var stateKey, + eventKey, + keys = { + hidden: "visibilitychange", + webkitHidden: "webkitvisibilitychange", + mozHidden: "mozvisibilitychange", + msHidden: "msvisibilitychange" + }; + for (stateKey in keys) { + if (stateKey in document) { + eventKey = keys[stateKey]; + break; + } + } + return function(c) { + if (c) document.addEventListener(eventKey, c); + return !document[stateKey]; + } + })(); + +var restartOnFocus = function(opt) { + if (opt==undefined || opt.c==undefined) return false; + punchgs.TweenLite.delayedCall(0.3,function(){ + // TAB IS ACTIVE, WE CAN START ANY PART OF THE SLIDER + if (opt.nextSlideOnWindowFocus=="on") opt.c.revnext(); + opt.c.revredraw(); + if (opt.lastsliderstatus=="playing") + opt.c.revresume(); + }); +} + +var lastStatBlur = function(opt) { + opt.lastsliderstatus = opt.sliderstatus; + opt.c.revpause(); + var actsh = opt.c.find('.active-revslide .slotholder'), + nextsh = opt.c.find('.processing-revslide .slotholder'); + + if (nextsh.data('kenburns')=="on") + _R.stopKenBurn(nextsh,opt); + + if (actsh.data('kenburns')=="on") + _R.stopKenBurn(actsh,opt); + + +} + +var tabBlurringCheck = function(container,opt) { + var notIE = (document.documentMode === undefined), + isChromium = window.chrome; + + if (notIE && !isChromium) { + // checks for Firefox and other NON IE Chrome versions + jQuery(window).on("focusin", function () { + restartOnFocus(opt); + }).on("focusout", function () { + lastStatBlur(opt); + }); + } else { + // checks for IE and Chromium versions + if (window.addEventListener) { + // bind focus event + window.addEventListener("focus", function (event) { + restartOnFocus(opt); + }, false); + // bind blur event + window.addEventListener("blur", function (event) { + lastStatBlur(opt); + }, false); + + } else { + // bind focus event + window.attachEvent("focus", function (event) { + restartOnFocus(opt); + }); + // bind focus event + window.attachEvent("blur", function (event) { + lastStatBlur(opt); + }); + } + } +} + + +// - GET THE URL PARAMETER // + +var getUrlVars = function (hashdivider){ + var vars = [], hash; + var hashes = window.location.href.slice(window.location.href.indexOf(hashdivider) + 1).split('_'); + for(var i = 0; i < hashes.length; i++) + { + hashes[i] = hashes[i].replace('%3D',"="); + hash = hashes[i].split('='); + vars.push(hash[0]); + vars[hash[0]] = hash[1]; + } + return vars; +} + + + + +})(jQuery); + + +///////////////////////////////////////////////////////////////////////////////// +// +// SOME ERROR MESSAGES IN CASE THE PLUGIN CAN NOT BE LOADED +// +///////////////////////////////////////////////////////////////////////////////// +function revslider_showDoubleJqueryError(sliderID) { + var errorMessage = "Revolution Slider Error: You have some jquery.js library include that comes after the revolution files js include."; + errorMessage += "
        This includes make eliminates the revolution slider libraries, and make it not work."; + errorMessage += "

        To fix it you can:
            1. In the Slider Settings -> Troubleshooting set option: Put JS Includes To Body option to true."; + errorMessage += "
            2. Find the double jquery.js include and remove it."; + errorMessage = "" + errorMessage + "" + jQuery(sliderID).show().html(errorMessage); +} + + diff --git a/plugins/revslider/public/assets/js/source/jquery.themepunch.tools.min.js b/plugins/revslider/public/assets/js/source/jquery.themepunch.tools.min.js new file mode 100644 index 0000000..f075406 --- /dev/null +++ b/plugins/revslider/public/assets/js/source/jquery.themepunch.tools.min.js @@ -0,0 +1,135 @@ +/******************************************** + - THEMEPUNCH TOOLS Ver. 1.0 - + Last Update of Tools 27.02.2015 +*********************************************/ + + +/* +* @fileOverview TouchSwipe - jQuery Plugin +* @version 1.6.6 +* +* @author Matt Bryson http://www.github.com/mattbryson +* @see https://github.com/mattbryson/TouchSwipe-Jquery-Plugin +* @see http://labs.skinkers.com/touchSwipe/ +* @see http://plugins.jquery.com/project/touchSwipe +* +* Copyright (c) 2010 Matt Bryson +* Dual licensed under the MIT or GPL Version 2 licenses. +* +*/ +(function(a){if(typeof define==="function"&&define.amd&&define.amd.jQuery){define(["jquery"],a)}else{a(jQuery)}}(function(f){var y="1.6.9",p="left",o="right",e="up",x="down",c="in",A="out",m="none",s="auto",l="swipe",t="pinch",B="tap",j="doubletap",b="longtap",z="hold",E="horizontal",u="vertical",i="all",r=10,g="start",k="move",h="end",q="cancel",a="ontouchstart" in window,v=window.navigator.msPointerEnabled&&!window.navigator.pointerEnabled,d=window.navigator.pointerEnabled||window.navigator.msPointerEnabled,C="TouchSwipe";var n={fingers:1,threshold:75,cancelThreshold:null,pinchThreshold:20,maxTimeThreshold:null,fingerReleaseThreshold:250,longTapThreshold:500,doubleTapThreshold:200,swipe:null,swipeLeft:null,swipeRight:null,swipeUp:null,swipeDown:null,swipeStatus:null,pinchIn:null,pinchOut:null,pinchStatus:null,click:null,tap:null,doubleTap:null,longTap:null,hold:null,triggerOnTouchEnd:true,triggerOnTouchLeave:false,allowPageScroll:"auto",fallbackToMouseEvents:true,excludedElements:"label, button, input, select, textarea, a, .noSwipe",preventDefaultEvents:true};f.fn.swipe=function(H){var G=f(this),F=G.data(C);if(F&&typeof H==="string"){if(F[H]){return F[H].apply(this,Array.prototype.slice.call(arguments,1))}else{f.error("Method "+H+" does not exist on jQuery.swipe")}}else{if(!F&&(typeof H==="object"||!H)){return w.apply(this,arguments)}}return G};f.fn.swipe.version=y;f.fn.swipe.defaults=n;f.fn.swipe.phases={PHASE_START:g,PHASE_MOVE:k,PHASE_END:h,PHASE_CANCEL:q};f.fn.swipe.directions={LEFT:p,RIGHT:o,UP:e,DOWN:x,IN:c,OUT:A};f.fn.swipe.pageScroll={NONE:m,HORIZONTAL:E,VERTICAL:u,AUTO:s};f.fn.swipe.fingers={ONE:1,TWO:2,THREE:3,ALL:i};function w(F){if(F&&(F.allowPageScroll===undefined&&(F.swipe!==undefined||F.swipeStatus!==undefined))){F.allowPageScroll=m}if(F.click!==undefined&&F.tap===undefined){F.tap=F.click}if(!F){F={}}F=f.extend({},f.fn.swipe.defaults,F);return this.each(function(){var H=f(this);var G=H.data(C);if(!G){G=new D(this,F);H.data(C,G)}})}function D(a5,aw){var aA=(a||d||!aw.fallbackToMouseEvents),K=aA?(d?(v?"MSPointerDown":"pointerdown"):"touchstart"):"mousedown",az=aA?(d?(v?"MSPointerMove":"pointermove"):"touchmove"):"mousemove",V=aA?(d?(v?"MSPointerUp":"pointerup"):"touchend"):"mouseup",T=aA?null:"mouseleave",aE=(d?(v?"MSPointerCancel":"pointercancel"):"touchcancel");var ah=0,aQ=null,ac=0,a2=0,a0=0,H=1,ar=0,aK=0,N=null;var aS=f(a5);var aa="start";var X=0;var aR=null;var U=0,a3=0,a6=0,ae=0,O=0;var aX=null,ag=null;try{aS.bind(K,aO);aS.bind(aE,ba)}catch(al){f.error("events not supported "+K+","+aE+" on jQuery.swipe")}this.enable=function(){aS.bind(K,aO);aS.bind(aE,ba);return aS};this.disable=function(){aL();return aS};this.destroy=function(){aL();aS.data(C,null);aS=null};this.option=function(bd,bc){if(aw[bd]!==undefined){if(bc===undefined){return aw[bd]}else{aw[bd]=bc}}else{f.error("Option "+bd+" does not exist on jQuery.swipe.options")}return null};function aO(be){if(aC()){return}if(f(be.target).closest(aw.excludedElements,aS).length>0){return}var bf=be.originalEvent?be.originalEvent:be;var bd,bg=bf.touches,bc=bg?bg[0]:bf;aa=g;if(bg){X=bg.length}else{be.preventDefault()}ah=0;aQ=null;aK=null;ac=0;a2=0;a0=0;H=1;ar=0;aR=ak();N=ab();S();if(!bg||(X===aw.fingers||aw.fingers===i)||aY()){aj(0,bc);U=au();if(X==2){aj(1,bg[1]);a2=a0=av(aR[0].start,aR[1].start)}if(aw.swipeStatus||aw.pinchStatus){bd=P(bf,aa)}}else{bd=false}if(bd===false){aa=q;P(bf,aa);return bd}else{if(aw.hold){ag=setTimeout(f.proxy(function(){aS.trigger("hold",[bf.target]);if(aw.hold){bd=aw.hold.call(aS,bf,bf.target)}},this),aw.longTapThreshold)}ap(true)}return null}function a4(bf){var bi=bf.originalEvent?bf.originalEvent:bf;if(aa===h||aa===q||an()){return}var be,bj=bi.touches,bd=bj?bj[0]:bi;var bg=aI(bd);a3=au();if(bj){X=bj.length}if(aw.hold){clearTimeout(ag)}aa=k;if(X==2){if(a2==0){aj(1,bj[1]);a2=a0=av(aR[0].start,aR[1].start)}else{aI(bj[1]);a0=av(aR[0].end,aR[1].end);aK=at(aR[0].end,aR[1].end)}H=a8(a2,a0);ar=Math.abs(a2-a0)}if((X===aw.fingers||aw.fingers===i)||!bj||aY()){aQ=aM(bg.start,bg.end);am(bf,aQ);ah=aT(bg.start,bg.end);ac=aN();aJ(aQ,ah);if(aw.swipeStatus||aw.pinchStatus){be=P(bi,aa)}if(!aw.triggerOnTouchEnd||aw.triggerOnTouchLeave){var bc=true;if(aw.triggerOnTouchLeave){var bh=aZ(this);bc=F(bg.end,bh)}if(!aw.triggerOnTouchEnd&&bc){aa=aD(k)}else{if(aw.triggerOnTouchLeave&&!bc){aa=aD(h)}}if(aa==q||aa==h){P(bi,aa)}}}else{aa=q;P(bi,aa)}if(be===false){aa=q;P(bi,aa)}}function M(bc){var bd=bc.originalEvent?bc.originalEvent:bc,be=bd.touches;if(be){if(be.length){G();return true}}if(an()){X=ae}a3=au();ac=aN();if(bb()||!ao()){aa=q;P(bd,aa)}else{if(aw.triggerOnTouchEnd||(aw.triggerOnTouchEnd==false&&aa===k)){bc.preventDefault();aa=h;P(bd,aa)}else{if(!aw.triggerOnTouchEnd&&a7()){aa=h;aG(bd,aa,B)}else{if(aa===k){aa=q;P(bd,aa)}}}}ap(false);return null}function ba(){X=0;a3=0;U=0;a2=0;a0=0;H=1;S();ap(false)}function L(bc){var bd=bc.originalEvent?bc.originalEvent:bc;if(aw.triggerOnTouchLeave){aa=aD(h);P(bd,aa)}}function aL(){aS.unbind(K,aO);aS.unbind(aE,ba);aS.unbind(az,a4);aS.unbind(V,M);if(T){aS.unbind(T,L)}ap(false)}function aD(bg){var bf=bg;var be=aB();var bd=ao();var bc=bb();if(!be||bc){bf=q}else{if(bd&&bg==k&&(!aw.triggerOnTouchEnd||aw.triggerOnTouchLeave)){bf=h}else{if(!bd&&bg==h&&aw.triggerOnTouchLeave){bf=q}}}return bf}function P(be,bc){var bd,bf=be.touches;if((J()||W())||(Q()||aY())){if(J()||W()){bd=aG(be,bc,l)}if((Q()||aY())&&bd!==false){bd=aG(be,bc,t)}}else{if(aH()&&bd!==false){bd=aG(be,bc,j)}else{if(aq()&&bd!==false){bd=aG(be,bc,b)}else{if(ai()&&bd!==false){bd=aG(be,bc,B)}}}}if(bc===q){ba(be)}if(bc===h){if(bf){if(!bf.length){ba(be)}}else{ba(be)}}return bd}function aG(bf,bc,be){var bd;if(be==l){aS.trigger("swipeStatus",[bc,aQ||null,ah||0,ac||0,X,aR]);if(aw.swipeStatus){bd=aw.swipeStatus.call(aS,bf,bc,aQ||null,ah||0,ac||0,X,aR);if(bd===false){return false}}if(bc==h&&aW()){aS.trigger("swipe",[aQ,ah,ac,X,aR]);if(aw.swipe){bd=aw.swipe.call(aS,bf,aQ,ah,ac,X,aR);if(bd===false){return false}}switch(aQ){case p:aS.trigger("swipeLeft",[aQ,ah,ac,X,aR]);if(aw.swipeLeft){bd=aw.swipeLeft.call(aS,bf,aQ,ah,ac,X,aR)}break;case o:aS.trigger("swipeRight",[aQ,ah,ac,X,aR]);if(aw.swipeRight){bd=aw.swipeRight.call(aS,bf,aQ,ah,ac,X,aR)}break;case e:aS.trigger("swipeUp",[aQ,ah,ac,X,aR]);if(aw.swipeUp){bd=aw.swipeUp.call(aS,bf,aQ,ah,ac,X,aR)}break;case x:aS.trigger("swipeDown",[aQ,ah,ac,X,aR]);if(aw.swipeDown){bd=aw.swipeDown.call(aS,bf,aQ,ah,ac,X,aR)}break}}}if(be==t){aS.trigger("pinchStatus",[bc,aK||null,ar||0,ac||0,X,H,aR]);if(aw.pinchStatus){bd=aw.pinchStatus.call(aS,bf,bc,aK||null,ar||0,ac||0,X,H,aR);if(bd===false){return false}}if(bc==h&&a9()){switch(aK){case c:aS.trigger("pinchIn",[aK||null,ar||0,ac||0,X,H,aR]);if(aw.pinchIn){bd=aw.pinchIn.call(aS,bf,aK||null,ar||0,ac||0,X,H,aR)}break;case A:aS.trigger("pinchOut",[aK||null,ar||0,ac||0,X,H,aR]);if(aw.pinchOut){bd=aw.pinchOut.call(aS,bf,aK||null,ar||0,ac||0,X,H,aR)}break}}}if(be==B){if(bc===q||bc===h){clearTimeout(aX);clearTimeout(ag);if(Z()&&!I()){O=au();aX=setTimeout(f.proxy(function(){O=null;aS.trigger("tap",[bf.target]);if(aw.tap){bd=aw.tap.call(aS,bf,bf.target)}},this),aw.doubleTapThreshold)}else{O=null;aS.trigger("tap",[bf.target]);if(aw.tap){bd=aw.tap.call(aS,bf,bf.target)}}}}else{if(be==j){if(bc===q||bc===h){clearTimeout(aX);O=null;aS.trigger("doubletap",[bf.target]);if(aw.doubleTap){bd=aw.doubleTap.call(aS,bf,bf.target)}}}else{if(be==b){if(bc===q||bc===h){clearTimeout(aX);O=null;aS.trigger("longtap",[bf.target]);if(aw.longTap){bd=aw.longTap.call(aS,bf,bf.target)}}}}}return bd}function ao(){var bc=true;if(aw.threshold!==null){bc=ah>=aw.threshold}return bc}function bb(){var bc=false;if(aw.cancelThreshold!==null&&aQ!==null){bc=(aU(aQ)-ah)>=aw.cancelThreshold}return bc}function af(){if(aw.pinchThreshold!==null){return ar>=aw.pinchThreshold}return true}function aB(){var bc;if(aw.maxTimeThreshold){if(ac>=aw.maxTimeThreshold){bc=false}else{bc=true}}else{bc=true}return bc}function am(bc,bd){if(aw.preventDefaultEvents===false){return}if(aw.allowPageScroll===m){bc.preventDefault()}else{var be=aw.allowPageScroll===s;switch(bd){case p:if((aw.swipeLeft&&be)||(!be&&aw.allowPageScroll!=E)){bc.preventDefault()}break;case o:if((aw.swipeRight&&be)||(!be&&aw.allowPageScroll!=E)){bc.preventDefault()}break;case e:if((aw.swipeUp&&be)||(!be&&aw.allowPageScroll!=u)){bc.preventDefault()}break;case x:if((aw.swipeDown&&be)||(!be&&aw.allowPageScroll!=u)){bc.preventDefault()}break}}}function a9(){var bd=aP();var bc=Y();var be=af();return bd&&bc&&be}function aY(){return !!(aw.pinchStatus||aw.pinchIn||aw.pinchOut)}function Q(){return !!(a9()&&aY())}function aW(){var bf=aB();var bh=ao();var be=aP();var bc=Y();var bd=bb();var bg=!bd&&bc&&be&&bh&&bf;return bg}function W(){return !!(aw.swipe||aw.swipeStatus||aw.swipeLeft||aw.swipeRight||aw.swipeUp||aw.swipeDown)}function J(){return !!(aW()&&W())}function aP(){return((X===aw.fingers||aw.fingers===i)||!a)}function Y(){return aR[0].end.x!==0}function a7(){return !!(aw.tap)}function Z(){return !!(aw.doubleTap)}function aV(){return !!(aw.longTap)}function R(){if(O==null){return false}var bc=au();return(Z()&&((bc-O)<=aw.doubleTapThreshold))}function I(){return R()}function ay(){return((X===1||!a)&&(isNaN(ah)||ahaw.longTapThreshold)&&(ah=0)){return p}else{if((be<=360)&&(be>=315)){return p}else{if((be>=135)&&(be<=225)){return o}else{if((be>45)&&(be<135)){return x}else{return e}}}}}function au(){var bc=new Date();return bc.getTime()}function aZ(bc){bc=f(bc);var be=bc.offset();var bd={left:be.left,right:be.left+bc.outerWidth(),top:be.top,bottom:be.top+bc.outerHeight()};return bd}function F(bc,bd){return(bc.x>bd.left&&bc.xbd.top&&bc.ye;e++)n[s[e]]=n=n[s[e]]||{};return n},h=l("com.greensock"),_=1e-10,u=function(t){var e,i=[],s=t.length;for(e=0;e!==s;i.push(t[e++]));return i},m=function(){},f=function(){var t=Object.prototype.toString,e=t.call([]);return function(i){return null!=i&&(i instanceof Array||"object"==typeof i&&!!i.push&&t.call(i)===e)}}(),c={},p=function(s,n,r,a){this.sc=c[s]?c[s].sc:[],c[s]=this,this.gsClass=null,this.func=r;var o=[];this.check=function(h){for(var _,u,m,f,d=n.length,v=d;--d>-1;)(_=c[n[d]]||new p(n[d],[])).gsClass?(o[d]=_.gsClass,v--):h&&_.sc.push(this);if(0===v&&r)for(u=("com.greensock."+s).split("."),m=u.pop(),f=l(u.join("."))[m]=this.gsClass=r.apply(r,o),a&&(i[m]=f,"function"==typeof define&&define.amd?define((t.GreenSockAMDPath?t.GreenSockAMDPath+"/":"")+s.split(".").pop(),[],function(){return f}):s===e&&"undefined"!=typeof module&&module.exports&&(module.exports=f)),d=0;this.sc.length>d;d++)this.sc[d].check()},this.check(!0)},d=t._gsDefine=function(t,e,i,s){return new p(t,e,i,s)},v=h._class=function(t,e,i){return e=e||function(){},d(t,[],function(){return e},i),e};d.globals=i;var g=[0,0,1,1],T=[],y=v("easing.Ease",function(t,e,i,s){this._func=t,this._type=i||0,this._power=s||0,this._params=e?g.concat(e):g},!0),w=y.map={},P=y.register=function(t,e,i,s){for(var n,r,a,o,l=e.split(","),_=l.length,u=(i||"easeIn,easeOut,easeInOut").split(",");--_>-1;)for(r=l[_],n=s?v("easing."+r,null,!0):h.easing[r]||{},a=u.length;--a>-1;)o=u[a],w[r+"."+o]=w[o+r]=n[o]=t.getRatio?t:t[o]||new t};for(r=y.prototype,r._calcEnd=!1,r.getRatio=function(t){if(this._func)return this._params[0]=t,this._func.apply(null,this._params);var e=this._type,i=this._power,s=1===e?1-t:2===e?t:.5>t?2*t:2*(1-t);return 1===i?s*=s:2===i?s*=s*s:3===i?s*=s*s*s:4===i&&(s*=s*s*s*s),1===e?1-s:2===e?s:.5>t?s/2:1-s/2},s=["Linear","Quad","Cubic","Quart","Quint,Strong"],n=s.length;--n>-1;)r=s[n]+",Power"+n,P(new y(null,null,1,n),r,"easeOut",!0),P(new y(null,null,2,n),r,"easeIn"+(0===n?",easeNone":"")),P(new y(null,null,3,n),r,"easeInOut");w.linear=h.easing.Linear.easeIn,w.swing=h.easing.Quad.easeInOut;var b=v("events.EventDispatcher",function(t){this._listeners={},this._eventTarget=t||this});r=b.prototype,r.addEventListener=function(t,e,i,s,n){n=n||0;var r,l,h=this._listeners[t],_=0;for(null==h&&(this._listeners[t]=h=[]),l=h.length;--l>-1;)r=h[l],r.c===e&&r.s===i?h.splice(l,1):0===_&&n>r.pr&&(_=l+1);h.splice(_,0,{c:e,s:i,up:s,pr:n}),this!==a||o||a.wake()},r.removeEventListener=function(t,e){var i,s=this._listeners[t];if(s)for(i=s.length;--i>-1;)if(s[i].c===e)return s.splice(i,1),void 0},r.dispatchEvent=function(t){var e,i,s,n=this._listeners[t];if(n)for(e=n.length,i=this._eventTarget;--e>-1;)s=n[e],s&&(s.up?s.c.call(s.s||i,{type:t,target:i}):s.c.call(s.s||i))};var k=t.requestAnimationFrame,A=t.cancelAnimationFrame,S=Date.now||function(){return(new Date).getTime()},x=S();for(s=["ms","moz","webkit","o"],n=s.length;--n>-1&&!k;)k=t[s[n]+"RequestAnimationFrame"],A=t[s[n]+"CancelAnimationFrame"]||t[s[n]+"CancelRequestAnimationFrame"];v("Ticker",function(t,e){var i,s,n,r,l,h=this,u=S(),f=e!==!1&&k,c=500,p=33,d="tick",v=function(t){var e,a,o=S()-x;o>c&&(u+=o-p),x+=o,h.time=(x-u)/1e3,e=h.time-l,(!i||e>0||t===!0)&&(h.frame++,l+=e+(e>=r?.004:r-e),a=!0),t!==!0&&(n=s(v)),a&&h.dispatchEvent(d)};b.call(h),h.time=h.frame=0,h.tick=function(){v(!0)},h.lagSmoothing=function(t,e){c=t||1/_,p=Math.min(e,c,0)},h.sleep=function(){null!=n&&(f&&A?A(n):clearTimeout(n),s=m,n=null,h===a&&(o=!1))},h.wake=function(){null!==n?h.sleep():h.frame>10&&(x=S()-c+5),s=0===i?m:f&&k?k:function(t){return setTimeout(t,0|1e3*(l-h.time)+1)},h===a&&(o=!0),v(2)},h.fps=function(t){return arguments.length?(i=t,r=1/(i||60),l=this.time+r,h.wake(),void 0):i},h.useRAF=function(t){return arguments.length?(h.sleep(),f=t,h.fps(i),void 0):f},h.fps(t),setTimeout(function(){f&&5>h.frame&&h.useRAF(!1)},1500)}),r=h.Ticker.prototype=new h.events.EventDispatcher,r.constructor=h.Ticker;var R=v("core.Animation",function(t,e){if(this.vars=e=e||{},this._duration=this._totalDuration=t||0,this._delay=Number(e.delay)||0,this._timeScale=1,this._active=e.immediateRender===!0,this.data=e.data,this._reversed=e.reversed===!0,B){o||a.wake();var i=this.vars.useFrames?q:B;i.add(this,i._time),this.vars.paused&&this.paused(!0)}});a=R.ticker=new h.Ticker,r=R.prototype,r._dirty=r._gc=r._initted=r._paused=!1,r._totalTime=r._time=0,r._rawPrevTime=-1,r._next=r._last=r._onUpdate=r._timeline=r.timeline=null,r._paused=!1;var C=function(){o&&S()-x>2e3&&a.wake(),setTimeout(C,2e3)};C(),r.play=function(t,e){return null!=t&&this.seek(t,e),this.reversed(!1).paused(!1)},r.pause=function(t,e){return null!=t&&this.seek(t,e),this.paused(!0)},r.resume=function(t,e){return null!=t&&this.seek(t,e),this.paused(!1)},r.seek=function(t,e){return this.totalTime(Number(t),e!==!1)},r.restart=function(t,e){return this.reversed(!1).paused(!1).totalTime(t?-this._delay:0,e!==!1,!0)},r.reverse=function(t,e){return null!=t&&this.seek(t||this.totalDuration(),e),this.reversed(!0).paused(!1)},r.render=function(){},r.invalidate=function(){return this._time=this._totalTime=0,this._initted=this._gc=!1,this._rawPrevTime=-1,(this._gc||!this.timeline)&&this._enabled(!0),this},r.isActive=function(){var t,e=this._timeline,i=this._startTime;return!e||!this._gc&&!this._paused&&e.isActive()&&(t=e.rawTime())>=i&&i+this.totalDuration()/this._timeScale>t},r._enabled=function(t,e){return o||a.wake(),this._gc=!t,this._active=this.isActive(),e!==!0&&(t&&!this.timeline?this._timeline.add(this,this._startTime-this._delay):!t&&this.timeline&&this._timeline._remove(this,!0)),!1},r._kill=function(){return this._enabled(!1,!1)},r.kill=function(t,e){return this._kill(t,e),this},r._uncache=function(t){for(var e=t?this:this.timeline;e;)e._dirty=!0,e=e.timeline;return this},r._swapSelfInParams=function(t){for(var e=t.length,i=t.concat();--e>-1;)"{self}"===t[e]&&(i[e]=this);return i},r._callback=function(t){var e=this.vars;e[t].apply(e[t+"Scope"]||e.callbackScope||this,e[t+"Params"]||T)},r.eventCallback=function(t,e,i,s){if("on"===(t||"").substr(0,2)){var n=this.vars;if(1===arguments.length)return n[t];null==e?delete n[t]:(n[t]=e,n[t+"Params"]=f(i)&&-1!==i.join("").indexOf("{self}")?this._swapSelfInParams(i):i,n[t+"Scope"]=s),"onUpdate"===t&&(this._onUpdate=e)}return this},r.delay=function(t){return arguments.length?(this._timeline.smoothChildTiming&&this.startTime(this._startTime+t-this._delay),this._delay=t,this):this._delay},r.duration=function(t){return arguments.length?(this._duration=this._totalDuration=t,this._uncache(!0),this._timeline.smoothChildTiming&&this._time>0&&this._timethis._duration?this._duration:t,e)):this._time},r.totalTime=function(t,e,i){if(o||a.wake(),!arguments.length)return this._totalTime;if(this._timeline){if(0>t&&!i&&(t+=this.totalDuration()),this._timeline.smoothChildTiming){this._dirty&&this.totalDuration();var s=this._totalDuration,n=this._timeline;if(t>s&&!i&&(t=s),this._startTime=(this._paused?this._pauseTime:n._time)-(this._reversed?s-t:t)/this._timeScale,n._dirty||this._uncache(!1),n._timeline)for(;n._timeline;)n._timeline._time!==(n._startTime+n._totalTime)/n._timeScale&&n.totalTime(n._totalTime,!0),n=n._timeline}this._gc&&this._enabled(!0,!1),(this._totalTime!==t||0===this._duration)&&(this.render(t,e,!1),z.length&&$())}return this},r.progress=r.totalProgress=function(t,e){return arguments.length?this.totalTime(this.duration()*t,e):this._time/this.duration()},r.startTime=function(t){return arguments.length?(t!==this._startTime&&(this._startTime=t,this.timeline&&this.timeline._sortChildren&&this.timeline.add(this,t-this._delay)),this):this._startTime},r.endTime=function(t){return this._startTime+(0!=t?this.totalDuration():this.duration())/this._timeScale},r.timeScale=function(t){if(!arguments.length)return this._timeScale;if(t=t||_,this._timeline&&this._timeline.smoothChildTiming){var e=this._pauseTime,i=e||0===e?e:this._timeline.totalTime();this._startTime=i-(i-this._startTime)*this._timeScale/t}return this._timeScale=t,this._uncache(!1)},r.reversed=function(t){return arguments.length?(t!=this._reversed&&(this._reversed=t,this.totalTime(this._timeline&&!this._timeline.smoothChildTiming?this.totalDuration()-this._totalTime:this._totalTime,!0)),this):this._reversed},r.paused=function(t){if(!arguments.length)return this._paused;var e,i,s=this._timeline;return t!=this._paused&&s&&(o||t||a.wake(),e=s.rawTime(),i=e-this._pauseTime,!t&&s.smoothChildTiming&&(this._startTime+=i,this._uncache(!1)),this._pauseTime=t?e:null,this._paused=t,this._active=this.isActive(),!t&&0!==i&&this._initted&&this.duration()&&this.render(s.smoothChildTiming?this._totalTime:(e-this._startTime)/this._timeScale,!0,!0)),this._gc&&!t&&this._enabled(!0,!1),this};var D=v("core.SimpleTimeline",function(t){R.call(this,0,t),this.autoRemoveChildren=this.smoothChildTiming=!0});r=D.prototype=new R,r.constructor=D,r.kill()._gc=!1,r._first=r._last=r._recent=null,r._sortChildren=!1,r.add=r.insert=function(t,e){var i,s;if(t._startTime=Number(e||0)+t._delay,t._paused&&this!==t._timeline&&(t._pauseTime=t._startTime+(this.rawTime()-t._startTime)/t._timeScale),t.timeline&&t.timeline._remove(t,!0),t.timeline=t._timeline=this,t._gc&&t._enabled(!0,!0),i=this._last,this._sortChildren)for(s=t._startTime;i&&i._startTime>s;)i=i._prev;return i?(t._next=i._next,i._next=t):(t._next=this._first,this._first=t),t._next?t._next._prev=t:this._last=t,t._prev=i,this._recent=t,this._timeline&&this._uncache(!0),this},r._remove=function(t,e){return t.timeline===this&&(e||t._enabled(!1,!0),t._prev?t._prev._next=t._next:this._first===t&&(this._first=t._next),t._next?t._next._prev=t._prev:this._last===t&&(this._last=t._prev),t._next=t._prev=t.timeline=null,t===this._recent&&(this._recent=this._last),this._timeline&&this._uncache(!0)),this},r.render=function(t,e,i){var s,n=this._first;for(this._totalTime=this._time=this._rawPrevTime=t;n;)s=n._next,(n._active||t>=n._startTime&&!n._paused)&&(n._reversed?n.render((n._dirty?n.totalDuration():n._totalDuration)-(t-n._startTime)*n._timeScale,e,i):n.render((t-n._startTime)*n._timeScale,e,i)),n=s},r.rawTime=function(){return o||a.wake(),this._totalTime};var I=v("TweenLite",function(e,i,s){if(R.call(this,i,s),this.render=I.prototype.render,null==e)throw"Cannot tween a null target.";this.target=e="string"!=typeof e?e:I.selector(e)||e;var n,r,a,o=e.jquery||e.length&&e!==t&&e[0]&&(e[0]===t||e[0].nodeType&&e[0].style&&!e.nodeType),l=this.vars.overwrite;if(this._overwrite=l=null==l?Q[I.defaultOverwrite]:"number"==typeof l?l>>0:Q[l],(o||e instanceof Array||e.push&&f(e))&&"number"!=typeof e[0])for(this._targets=a=u(e),this._propLookup=[],this._siblings=[],n=0;a.length>n;n++)r=a[n],r?"string"!=typeof r?r.length&&r!==t&&r[0]&&(r[0]===t||r[0].nodeType&&r[0].style&&!r.nodeType)?(a.splice(n--,1),this._targets=a=a.concat(u(r))):(this._siblings[n]=K(r,this,!1),1===l&&this._siblings[n].length>1&&J(r,this,null,1,this._siblings[n])):(r=a[n--]=I.selector(r),"string"==typeof r&&a.splice(n+1,1)):a.splice(n--,1);else this._propLookup={},this._siblings=K(e,this,!1),1===l&&this._siblings.length>1&&J(e,this,null,1,this._siblings);(this.vars.immediateRender||0===i&&0===this._delay&&this.vars.immediateRender!==!1)&&(this._time=-_,this.render(-this._delay))},!0),E=function(e){return e&&e.length&&e!==t&&e[0]&&(e[0]===t||e[0].nodeType&&e[0].style&&!e.nodeType)},O=function(t,e){var i,s={};for(i in t)G[i]||i in e&&"transform"!==i&&"x"!==i&&"y"!==i&&"width"!==i&&"height"!==i&&"className"!==i&&"border"!==i||!(!F[i]||F[i]&&F[i]._autoCSS)||(s[i]=t[i],delete t[i]);t.css=s};r=I.prototype=new R,r.constructor=I,r.kill()._gc=!1,r.ratio=0,r._firstPT=r._targets=r._overwrittenProps=r._startAt=null,r._notifyPluginsOfEnabled=r._lazy=!1,I.version="1.17.0",I.defaultEase=r._ease=new y(null,null,1,1),I.defaultOverwrite="auto",I.ticker=a,I.autoSleep=120,I.lagSmoothing=function(t,e){a.lagSmoothing(t,e)},I.selector=t.$||t.jQuery||function(e){var i=t.$||t.jQuery;return i?(I.selector=i,i(e)):"undefined"==typeof document?e:document.querySelectorAll?document.querySelectorAll(e):document.getElementById("#"===e.charAt(0)?e.substr(1):e)};var z=[],N={},L=I._internals={isArray:f,isSelector:E,lazyTweens:z},F=I._plugins={},U=L.tweenLookup={},j=0,G=L.reservedProps={ease:1,delay:1,overwrite:1,onComplete:1,onCompleteParams:1,onCompleteScope:1,useFrames:1,runBackwards:1,startAt:1,onUpdate:1,onUpdateParams:1,onUpdateScope:1,onStart:1,onStartParams:1,onStartScope:1,onReverseComplete:1,onReverseCompleteParams:1,onReverseCompleteScope:1,onRepeat:1,onRepeatParams:1,onRepeatScope:1,easeParams:1,yoyo:1,immediateRender:1,repeat:1,repeatDelay:1,data:1,paused:1,reversed:1,autoCSS:1,lazy:1,onOverwrite:1,callbackScope:1},Q={none:0,all:1,auto:2,concurrent:3,allOnStart:4,preexisting:5,"true":1,"false":0},q=R._rootFramesTimeline=new D,B=R._rootTimeline=new D,M=30,$=L.lazyRender=function(){var t,e=z.length;for(N={};--e>-1;)t=z[e],t&&t._lazy!==!1&&(t.render(t._lazy[0],t._lazy[1],!0),t._lazy=!1);z.length=0};B._startTime=a.time,q._startTime=a.frame,B._active=q._active=!0,setTimeout($,1),R._updateRoot=I.render=function(){var t,e,i;if(z.length&&$(),B.render((a.time-B._startTime)*B._timeScale,!1,!1),q.render((a.frame-q._startTime)*q._timeScale,!1,!1),z.length&&$(),a.frame>=M){M=a.frame+(parseInt(I.autoSleep,10)||120);for(i in U){for(e=U[i].tweens,t=e.length;--t>-1;)e[t]._gc&&e.splice(t,1);0===e.length&&delete U[i]}if(i=B._first,(!i||i._paused)&&I.autoSleep&&!q._first&&1===a._listeners.tick.length){for(;i&&i._paused;)i=i._next;i||a.sleep()}}},a.addEventListener("tick",R._updateRoot);var K=function(t,e,i){var s,n,r=t._gsTweenID;if(U[r||(t._gsTweenID=r="t"+j++)]||(U[r]={target:t,tweens:[]}),e&&(s=U[r].tweens,s[n=s.length]=e,i))for(;--n>-1;)s[n]===e&&s.splice(n,1);return U[r].tweens},H=function(t,e,i,s){var n,r,a=t.vars.onOverwrite;return a&&(n=a(t,e,i,s)),a=I.onOverwrite,a&&(r=a(t,e,i,s)),n!==!1&&r!==!1},J=function(t,e,i,s,n){var r,a,o,l;if(1===s||s>=4){for(l=n.length,r=0;l>r;r++)if((o=n[r])!==e)o._gc||o._kill(null,t,e)&&(a=!0);else if(5===s)break;return a}var h,u=e._startTime+_,m=[],f=0,c=0===e._duration;for(r=n.length;--r>-1;)(o=n[r])===e||o._gc||o._paused||(o._timeline!==e._timeline?(h=h||V(e,0,c),0===V(o,h,c)&&(m[f++]=o)):u>=o._startTime&&o._startTime+o.totalDuration()/o._timeScale>u&&((c||!o._initted)&&2e-10>=u-o._startTime||(m[f++]=o)));for(r=f;--r>-1;)if(o=m[r],2===s&&o._kill(i,t,e)&&(a=!0),2!==s||!o._firstPT&&o._initted){if(2!==s&&!H(o,e))continue;o._enabled(!1,!1)&&(a=!0)}return a},V=function(t,e,i){for(var s=t._timeline,n=s._timeScale,r=t._startTime;s._timeline;){if(r+=s._startTime,n*=s._timeScale,s._paused)return-100;s=s._timeline}return r/=n,r>e?r-e:i&&r===e||!t._initted&&2*_>r-e?_:(r+=t.totalDuration()/t._timeScale/n)>e+_?0:r-e-_};r._init=function(){var t,e,i,s,n,r=this.vars,a=this._overwrittenProps,o=this._duration,l=!!r.immediateRender,h=r.ease;if(r.startAt){this._startAt&&(this._startAt.render(-1,!0),this._startAt.kill()),n={};for(s in r.startAt)n[s]=r.startAt[s];if(n.overwrite=!1,n.immediateRender=!0,n.lazy=l&&r.lazy!==!1,n.startAt=n.delay=null,this._startAt=I.to(this.target,0,n),l)if(this._time>0)this._startAt=null;else if(0!==o)return}else if(r.runBackwards&&0!==o)if(this._startAt)this._startAt.render(-1,!0),this._startAt.kill(),this._startAt=null;else{0!==this._time&&(l=!1),i={};for(s in r)G[s]&&"autoCSS"!==s||(i[s]=r[s]);if(i.overwrite=0,i.data="isFromStart",i.lazy=l&&r.lazy!==!1,i.immediateRender=l,this._startAt=I.to(this.target,0,i),l){if(0===this._time)return}else this._startAt._init(),this._startAt._enabled(!1),this.vars.immediateRender&&(this._startAt=null)}if(this._ease=h=h?h instanceof y?h:"function"==typeof h?new y(h,r.easeParams):w[h]||I.defaultEase:I.defaultEase,r.easeParams instanceof Array&&h.config&&(this._ease=h.config.apply(h,r.easeParams)),this._easeType=this._ease._type,this._easePower=this._ease._power,this._firstPT=null,this._targets)for(t=this._targets.length;--t>-1;)this._initProps(this._targets[t],this._propLookup[t]={},this._siblings[t],a?a[t]:null)&&(e=!0);else e=this._initProps(this.target,this._propLookup,this._siblings,a);if(e&&I._onPluginEvent("_onInitAllProps",this),a&&(this._firstPT||"function"!=typeof this.target&&this._enabled(!1,!1)),r.runBackwards)for(i=this._firstPT;i;)i.s+=i.c,i.c=-i.c,i=i._next;this._onUpdate=r.onUpdate,this._initted=!0},r._initProps=function(e,i,s,n){var r,a,o,l,h,_;if(null==e)return!1;N[e._gsTweenID]&&$(),this.vars.css||e.style&&e!==t&&e.nodeType&&F.css&&this.vars.autoCSS!==!1&&O(this.vars,e);for(r in this.vars){if(_=this.vars[r],G[r])_&&(_ instanceof Array||_.push&&f(_))&&-1!==_.join("").indexOf("{self}")&&(this.vars[r]=_=this._swapSelfInParams(_,this));else if(F[r]&&(l=new F[r])._onInitTween(e,this.vars[r],this)){for(this._firstPT=h={_next:this._firstPT,t:l,p:"setRatio",s:0,c:1,f:!0,n:r,pg:!0,pr:l._priority},a=l._overwriteProps.length;--a>-1;)i[l._overwriteProps[a]]=this._firstPT;(l._priority||l._onInitAllProps)&&(o=!0),(l._onDisable||l._onEnable)&&(this._notifyPluginsOfEnabled=!0)}else this._firstPT=i[r]=h={_next:this._firstPT,t:e,p:r,f:"function"==typeof e[r],n:r,pg:!1,pr:0},h.s=h.f?e[r.indexOf("set")||"function"!=typeof e["get"+r.substr(3)]?r:"get"+r.substr(3)]():parseFloat(e[r]),h.c="string"==typeof _&&"="===_.charAt(1)?parseInt(_.charAt(0)+"1",10)*Number(_.substr(2)):Number(_)-h.s||0;h&&h._next&&(h._next._prev=h)}return n&&this._kill(n,e)?this._initProps(e,i,s,n):this._overwrite>1&&this._firstPT&&s.length>1&&J(e,this,i,this._overwrite,s)?(this._kill(i,e),this._initProps(e,i,s,n)):(this._firstPT&&(this.vars.lazy!==!1&&this._duration||this.vars.lazy&&!this._duration)&&(N[e._gsTweenID]=!0),o)},r.render=function(t,e,i){var s,n,r,a,o=this._time,l=this._duration,h=this._rawPrevTime;if(t>=l)this._totalTime=this._time=l,this.ratio=this._ease._calcEnd?this._ease.getRatio(1):1,this._reversed||(s=!0,n="onComplete",i=i||this._timeline.autoRemoveChildren),0===l&&(this._initted||!this.vars.lazy||i)&&(this._startTime===this._timeline._duration&&(t=0),(0===t||0>h||h===_&&"isPause"!==this.data)&&h!==t&&(i=!0,h>_&&(n="onReverseComplete")),this._rawPrevTime=a=!e||t||h===t?t:_);else if(1e-7>t)this._totalTime=this._time=0,this.ratio=this._ease._calcEnd?this._ease.getRatio(0):0,(0!==o||0===l&&h>0)&&(n="onReverseComplete",s=this._reversed),0>t&&(this._active=!1,0===l&&(this._initted||!this.vars.lazy||i)&&(h>=0&&(h!==_||"isPause"!==this.data)&&(i=!0),this._rawPrevTime=a=!e||t||h===t?t:_)),this._initted||(i=!0);else if(this._totalTime=this._time=t,this._easeType){var u=t/l,m=this._easeType,f=this._easePower;(1===m||3===m&&u>=.5)&&(u=1-u),3===m&&(u*=2),1===f?u*=u:2===f?u*=u*u:3===f?u*=u*u*u:4===f&&(u*=u*u*u*u),this.ratio=1===m?1-u:2===m?u:.5>t/l?u/2:1-u/2}else this.ratio=this._ease.getRatio(t/l);if(this._time!==o||i){if(!this._initted){if(this._init(),!this._initted||this._gc)return;if(!i&&this._firstPT&&(this.vars.lazy!==!1&&this._duration||this.vars.lazy&&!this._duration))return this._time=this._totalTime=o,this._rawPrevTime=h,z.push(this),this._lazy=[t,e],void 0;this._time&&!s?this.ratio=this._ease.getRatio(this._time/l):s&&this._ease._calcEnd&&(this.ratio=this._ease.getRatio(0===this._time?0:1))}for(this._lazy!==!1&&(this._lazy=!1),this._active||!this._paused&&this._time!==o&&t>=0&&(this._active=!0),0===o&&(this._startAt&&(t>=0?this._startAt.render(t,e,i):n||(n="_dummyGS")),this.vars.onStart&&(0!==this._time||0===l)&&(e||this._callback("onStart"))),r=this._firstPT;r;)r.f?r.t[r.p](r.c*this.ratio+r.s):r.t[r.p]=r.c*this.ratio+r.s,r=r._next;this._onUpdate&&(0>t&&this._startAt&&t!==-1e-4&&this._startAt.render(t,e,i),e||(this._time!==o||s)&&this._callback("onUpdate")),n&&(!this._gc||i)&&(0>t&&this._startAt&&!this._onUpdate&&t!==-1e-4&&this._startAt.render(t,e,i),s&&(this._timeline.autoRemoveChildren&&this._enabled(!1,!1),this._active=!1),!e&&this.vars[n]&&this._callback(n),0===l&&this._rawPrevTime===_&&a!==_&&(this._rawPrevTime=0))}},r._kill=function(t,e,i){if("all"===t&&(t=null),null==t&&(null==e||e===this.target))return this._lazy=!1,this._enabled(!1,!1);e="string"!=typeof e?e||this._targets||this.target:I.selector(e)||e;var s,n,r,a,o,l,h,_,u,m=i&&this._time&&i._startTime===this._startTime&&this._timeline===i._timeline;if((f(e)||E(e))&&"number"!=typeof e[0])for(s=e.length;--s>-1;)this._kill(t,e[s],i)&&(l=!0);else{if(this._targets){for(s=this._targets.length;--s>-1;)if(e===this._targets[s]){o=this._propLookup[s]||{},this._overwrittenProps=this._overwrittenProps||[],n=this._overwrittenProps[s]=t?this._overwrittenProps[s]||{}:"all";break}}else{if(e!==this.target)return!1;o=this._propLookup,n=this._overwrittenProps=t?this._overwrittenProps||{}:"all"}if(o){if(h=t||o,_=t!==n&&"all"!==n&&t!==o&&("object"!=typeof t||!t._tempKill),i&&(I.onOverwrite||this.vars.onOverwrite)){for(r in h)o[r]&&(u||(u=[]),u.push(r));if((u||!t)&&!H(this,i,e,u))return!1}for(r in h)(a=o[r])&&(m&&(a.f?a.t[a.p](a.s):a.t[a.p]=a.s,l=!0),a.pg&&a.t._kill(h)&&(l=!0),a.pg&&0!==a.t._overwriteProps.length||(a._prev?a._prev._next=a._next:a===this._firstPT&&(this._firstPT=a._next),a._next&&(a._next._prev=a._prev),a._next=a._prev=null),delete o[r]),_&&(n[r]=1);!this._firstPT&&this._initted&&this._enabled(!1,!1)}}return l},r.invalidate=function(){return this._notifyPluginsOfEnabled&&I._onPluginEvent("_onDisable",this),this._firstPT=this._overwrittenProps=this._startAt=this._onUpdate=null,this._notifyPluginsOfEnabled=this._active=this._lazy=!1,this._propLookup=this._targets?{}:[],R.prototype.invalidate.call(this),this.vars.immediateRender&&(this._time=-_,this.render(-this._delay)),this},r._enabled=function(t,e){if(o||a.wake(),t&&this._gc){var i,s=this._targets;if(s)for(i=s.length;--i>-1;)this._siblings[i]=K(s[i],this,!0);else this._siblings=K(this.target,this,!0)}return R.prototype._enabled.call(this,t,e),this._notifyPluginsOfEnabled&&this._firstPT?I._onPluginEvent(t?"_onEnable":"_onDisable",this):!1},I.to=function(t,e,i){return new I(t,e,i)},I.from=function(t,e,i){return i.runBackwards=!0,i.immediateRender=0!=i.immediateRender,new I(t,e,i)},I.fromTo=function(t,e,i,s){return s.startAt=i,s.immediateRender=0!=s.immediateRender&&0!=i.immediateRender,new I(t,e,s)},I.delayedCall=function(t,e,i,s,n){return new I(e,0,{delay:t,onComplete:e,onCompleteParams:i,callbackScope:s,onReverseComplete:e,onReverseCompleteParams:i,immediateRender:!1,lazy:!1,useFrames:n,overwrite:0})},I.set=function(t,e){return new I(t,0,e)},I.getTweensOf=function(t,e){if(null==t)return[];t="string"!=typeof t?t:I.selector(t)||t;var i,s,n,r;if((f(t)||E(t))&&"number"!=typeof t[0]){for(i=t.length,s=[];--i>-1;)s=s.concat(I.getTweensOf(t[i],e));for(i=s.length;--i>-1;)for(r=s[i],n=i;--n>-1;)r===s[n]&&s.splice(i,1)}else for(s=K(t).concat(),i=s.length;--i>-1;)(s[i]._gc||e&&!s[i].isActive())&&s.splice(i,1);return s},I.killTweensOf=I.killDelayedCallsTo=function(t,e,i){"object"==typeof e&&(i=e,e=!1);for(var s=I.getTweensOf(t,e),n=s.length;--n>-1;)s[n]._kill(i,t)};var W=v("plugins.TweenPlugin",function(t,e){this._overwriteProps=(t||"").split(","),this._propName=this._overwriteProps[0],this._priority=e||0,this._super=W.prototype},!0);if(r=W.prototype,W.version="1.10.1",W.API=2,r._firstPT=null,r._addTween=function(t,e,i,s,n,r){var a,o;return null!=s&&(a="number"==typeof s||"="!==s.charAt(1)?Number(s)-Number(i):parseInt(s.charAt(0)+"1",10)*Number(s.substr(2)))?(this._firstPT=o={_next:this._firstPT,t:t,p:e,s:i,c:a,f:"function"==typeof t[e],n:n||e,r:r},o._next&&(o._next._prev=o),o):void 0},r.setRatio=function(t){for(var e,i=this._firstPT,s=1e-6;i;)e=i.c*t+i.s,i.r?e=Math.round(e):s>e&&e>-s&&(e=0),i.f?i.t[i.p](e):i.t[i.p]=e,i=i._next},r._kill=function(t){var e,i=this._overwriteProps,s=this._firstPT;if(null!=t[this._propName])this._overwriteProps=[];else for(e=i.length;--e>-1;)null!=t[i[e]]&&i.splice(e,1);for(;s;)null!=t[s.n]&&(s._next&&(s._next._prev=s._prev),s._prev?(s._prev._next=s._next,s._prev=null):this._firstPT===s&&(this._firstPT=s._next)),s=s._next;return!1},r._roundProps=function(t,e){for(var i=this._firstPT;i;)(t[this._propName]||null!=i.n&&t[i.n.split(this._propName+"_").join("")])&&(i.r=e),i=i._next},I._onPluginEvent=function(t,e){var i,s,n,r,a,o=e._firstPT;if("_onInitAllProps"===t){for(;o;){for(a=o._next,s=n;s&&s.pr>o.pr;)s=s._next;(o._prev=s?s._prev:r)?o._prev._next=o:n=o,(o._next=s)?s._prev=o:r=o,o=a}o=e._firstPT=n}for(;o;)o.pg&&"function"==typeof o.t[t]&&o.t[t]()&&(i=!0),o=o._next;return i},W.activate=function(t){for(var e=t.length;--e>-1;)t[e].API===W.API&&(F[(new t[e])._propName]=t[e]);return!0},d.plugin=function(t){if(!(t&&t.propName&&t.init&&t.API))throw"illegal plugin definition.";var e,i=t.propName,s=t.priority||0,n=t.overwriteProps,r={init:"_onInitTween",set:"setRatio",kill:"_kill",round:"_roundProps",initAll:"_onInitAllProps"},a=v("plugins."+i.charAt(0).toUpperCase()+i.substr(1)+"Plugin",function(){W.call(this,i,s),this._overwriteProps=n||[]},t.global===!0),o=a.prototype=new W(i);o.constructor=a,a.API=t.API;for(e in r)"function"==typeof t[e]&&(o[r[e]]=t[e]);return a.version=t.version,W.activate([a]),a},s=t._gsQueue){for(n=0;s.length>n;n++)s[n]();for(r in c)c[r].func||t.console.log("GSAP encountered missing dependency: com.greensock."+r)}o=!1}})("undefined"!=typeof module&&module.exports&&"undefined"!=typeof global?global:this||window,"TweenLite"); + +/*! + * VERSION: 1.17.0 + * DATE: 2015-05-27 + * UPDATES AND DOCS AT: http://greensock.com + * + * @license Copyright (c) 2008-2015, GreenSock. All rights reserved. + * This work is subject to the terms at http://greensock.com/standard-license or for + * Club GreenSock members, the software agreement that was issued with your membership. + * + * @author: Jack Doyle, jack@greensock.com + */ +var _gsScope="undefined"!=typeof module&&module.exports&&"undefined"!=typeof global?global:this||window;(_gsScope._gsQueue||(_gsScope._gsQueue=[])).push(function(){"use strict";_gsScope._gsDefine("TimelineLite",["core.Animation","core.SimpleTimeline","TweenLite"],function(t,e,i){var s=function(t){e.call(this,t),this._labels={},this.autoRemoveChildren=this.vars.autoRemoveChildren===!0,this.smoothChildTiming=this.vars.smoothChildTiming===!0,this._sortChildren=!0,this._onUpdate=this.vars.onUpdate;var i,s,r=this.vars;for(s in r)i=r[s],h(i)&&-1!==i.join("").indexOf("{self}")&&(r[s]=this._swapSelfInParams(i));h(r.tweens)&&this.add(r.tweens,0,r.align,r.stagger)},r=1e-10,n=i._internals,a=s._internals={},o=n.isSelector,h=n.isArray,l=n.lazyTweens,_=n.lazyRender,u=[],f=_gsScope._gsDefine.globals,c=function(t){var e,i={};for(e in t)i[e]=t[e];return i},p=a.pauseCallback=function(t,e,i,s){var n,a=t._timeline,o=a._totalTime,h=t._startTime,l=0>t._rawPrevTime||0===t._rawPrevTime&&a._reversed,_=l?0:r,f=l?r:0;if(e||!this._forcingPlayhead){for(a.pause(h),n=t._prev;n&&n._startTime===h;)n._rawPrevTime=f,n=n._prev;for(n=t._next;n&&n._startTime===h;)n._rawPrevTime=_,n=n._next;e&&e.apply(s||a.vars.callbackScope||a,i||u),(this._forcingPlayhead||!a._paused)&&a.seek(o)}},m=function(t){var e,i=[],s=t.length;for(e=0;e!==s;i.push(t[e++]));return i},d=s.prototype=new e;return s.version="1.17.0",d.constructor=s,d.kill()._gc=d._forcingPlayhead=!1,d.to=function(t,e,s,r){var n=s.repeat&&f.TweenMax||i;return e?this.add(new n(t,e,s),r):this.set(t,s,r)},d.from=function(t,e,s,r){return this.add((s.repeat&&f.TweenMax||i).from(t,e,s),r)},d.fromTo=function(t,e,s,r,n){var a=r.repeat&&f.TweenMax||i;return e?this.add(a.fromTo(t,e,s,r),n):this.set(t,r,n)},d.staggerTo=function(t,e,r,n,a,h,l,_){var u,f=new s({onComplete:h,onCompleteParams:l,callbackScope:_,smoothChildTiming:this.smoothChildTiming});for("string"==typeof t&&(t=i.selector(t)||t),t=t||[],o(t)&&(t=m(t)),n=n||0,0>n&&(t=m(t),t.reverse(),n*=-1),u=0;t.length>u;u++)r.startAt&&(r.startAt=c(r.startAt)),f.to(t[u],e,c(r),u*n);return this.add(f,a)},d.staggerFrom=function(t,e,i,s,r,n,a,o){return i.immediateRender=0!=i.immediateRender,i.runBackwards=!0,this.staggerTo(t,e,i,s,r,n,a,o)},d.staggerFromTo=function(t,e,i,s,r,n,a,o,h){return s.startAt=i,s.immediateRender=0!=s.immediateRender&&0!=i.immediateRender,this.staggerTo(t,e,s,r,n,a,o,h)},d.call=function(t,e,s,r){return this.add(i.delayedCall(0,t,e,s),r)},d.set=function(t,e,s){return s=this._parseTimeOrLabel(s,0,!0),null==e.immediateRender&&(e.immediateRender=s===this._time&&!this._paused),this.add(new i(t,0,e),s)},s.exportRoot=function(t,e){t=t||{},null==t.smoothChildTiming&&(t.smoothChildTiming=!0);var r,n,a=new s(t),o=a._timeline;for(null==e&&(e=!0),o._remove(a,!0),a._startTime=0,a._rawPrevTime=a._time=a._totalTime=o._time,r=o._first;r;)n=r._next,e&&r instanceof i&&r.target===r.vars.onComplete||a.add(r,r._startTime-r._delay),r=n;return o.add(a,0),a},d.add=function(r,n,a,o){var l,_,u,f,c,p;if("number"!=typeof n&&(n=this._parseTimeOrLabel(n,0,!0,r)),!(r instanceof t)){if(r instanceof Array||r&&r.push&&h(r)){for(a=a||"normal",o=o||0,l=n,_=r.length,u=0;_>u;u++)h(f=r[u])&&(f=new s({tweens:f})),this.add(f,l),"string"!=typeof f&&"function"!=typeof f&&("sequence"===a?l=f._startTime+f.totalDuration()/f._timeScale:"start"===a&&(f._startTime-=f.delay())),l+=o;return this._uncache(!0)}if("string"==typeof r)return this.addLabel(r,n);if("function"!=typeof r)throw"Cannot add "+r+" into the timeline; it is not a tween, timeline, function, or string.";r=i.delayedCall(0,r)}if(e.prototype.add.call(this,r,n),(this._gc||this._time===this._duration)&&!this._paused&&this._durationr._startTime;c._timeline;)p&&c._timeline.smoothChildTiming?c.totalTime(c._totalTime,!0):c._gc&&c._enabled(!0,!1),c=c._timeline;return this},d.remove=function(e){if(e instanceof t)return this._remove(e,!1);if(e instanceof Array||e&&e.push&&h(e)){for(var i=e.length;--i>-1;)this.remove(e[i]);return this}return"string"==typeof e?this.removeLabel(e):this.kill(null,e)},d._remove=function(t,i){e.prototype._remove.call(this,t,i);var s=this._last;return s?this._time>s._startTime+s._totalDuration/s._timeScale&&(this._time=this.duration(),this._totalTime=this._totalDuration):this._time=this._totalTime=this._duration=this._totalDuration=0,this},d.append=function(t,e){return this.add(t,this._parseTimeOrLabel(null,e,!0,t))},d.insert=d.insertMultiple=function(t,e,i,s){return this.add(t,e||0,i,s)},d.appendMultiple=function(t,e,i,s){return this.add(t,this._parseTimeOrLabel(null,e,!0,t),i,s)},d.addLabel=function(t,e){return this._labels[t]=this._parseTimeOrLabel(e),this},d.addPause=function(t,e,s,r){var n=i.delayedCall(0,p,["{self}",e,s,r],this);return n.data="isPause",this.add(n,t)},d.removeLabel=function(t){return delete this._labels[t],this},d.getLabelTime=function(t){return null!=this._labels[t]?this._labels[t]:-1},d._parseTimeOrLabel=function(e,i,s,r){var n;if(r instanceof t&&r.timeline===this)this.remove(r);else if(r&&(r instanceof Array||r.push&&h(r)))for(n=r.length;--n>-1;)r[n]instanceof t&&r[n].timeline===this&&this.remove(r[n]);if("string"==typeof i)return this._parseTimeOrLabel(i,s&&"number"==typeof e&&null==this._labels[i]?e-this.duration():0,s);if(i=i||0,"string"!=typeof e||!isNaN(e)&&null==this._labels[e])null==e&&(e=this.duration());else{if(n=e.indexOf("="),-1===n)return null==this._labels[e]?s?this._labels[e]=this.duration()+i:i:this._labels[e]+i;i=parseInt(e.charAt(n-1)+"1",10)*Number(e.substr(n+1)),e=n>1?this._parseTimeOrLabel(e.substr(0,n-1),0,s):this.duration()}return Number(e)+i},d.seek=function(t,e){return this.totalTime("number"==typeof t?t:this._parseTimeOrLabel(t),e!==!1)},d.stop=function(){return this.paused(!0)},d.gotoAndPlay=function(t,e){return this.play(t,e)},d.gotoAndStop=function(t,e){return this.pause(t,e)},d.render=function(t,e,i){this._gc&&this._enabled(!0,!1);var s,n,a,o,h,u=this._dirty?this.totalDuration():this._totalDuration,f=this._time,c=this._startTime,p=this._timeScale,m=this._paused;if(t>=u)this._totalTime=this._time=u,this._reversed||this._hasPausedChild()||(n=!0,o="onComplete",h=!!this._timeline.autoRemoveChildren,0===this._duration&&(0===t||0>this._rawPrevTime||this._rawPrevTime===r)&&this._rawPrevTime!==t&&this._first&&(h=!0,this._rawPrevTime>r&&(o="onReverseComplete"))),this._rawPrevTime=this._duration||!e||t||this._rawPrevTime===t?t:r,t=u+1e-4;else if(1e-7>t)if(this._totalTime=this._time=0,(0!==f||0===this._duration&&this._rawPrevTime!==r&&(this._rawPrevTime>0||0>t&&this._rawPrevTime>=0))&&(o="onReverseComplete",n=this._reversed),0>t)this._active=!1,this._timeline.autoRemoveChildren&&this._reversed?(h=n=!0,o="onReverseComplete"):this._rawPrevTime>=0&&this._first&&(h=!0),this._rawPrevTime=t;else{if(this._rawPrevTime=this._duration||!e||t||this._rawPrevTime===t?t:r,0===t&&n)for(s=this._first;s&&0===s._startTime;)s._duration||(n=!1),s=s._next;t=0,this._initted||(h=!0)}else this._totalTime=this._time=this._rawPrevTime=t;if(this._time!==f&&this._first||i||h){if(this._initted||(this._initted=!0),this._active||!this._paused&&this._time!==f&&t>0&&(this._active=!0),0===f&&this.vars.onStart&&0!==this._time&&(e||this._callback("onStart")),this._time>=f)for(s=this._first;s&&(a=s._next,!this._paused||m);)(s._active||s._startTime<=this._time&&!s._paused&&!s._gc)&&(s._reversed?s.render((s._dirty?s.totalDuration():s._totalDuration)-(t-s._startTime)*s._timeScale,e,i):s.render((t-s._startTime)*s._timeScale,e,i)),s=a;else for(s=this._last;s&&(a=s._prev,!this._paused||m);)(s._active||f>=s._startTime&&!s._paused&&!s._gc)&&(s._reversed?s.render((s._dirty?s.totalDuration():s._totalDuration)-(t-s._startTime)*s._timeScale,e,i):s.render((t-s._startTime)*s._timeScale,e,i)),s=a;this._onUpdate&&(e||(l.length&&_(),this._callback("onUpdate"))),o&&(this._gc||(c===this._startTime||p!==this._timeScale)&&(0===this._time||u>=this.totalDuration())&&(n&&(l.length&&_(),this._timeline.autoRemoveChildren&&this._enabled(!1,!1),this._active=!1),!e&&this.vars[o]&&this._callback(o)))}},d._hasPausedChild=function(){for(var t=this._first;t;){if(t._paused||t instanceof s&&t._hasPausedChild())return!0;t=t._next}return!1},d.getChildren=function(t,e,s,r){r=r||-9999999999;for(var n=[],a=this._first,o=0;a;)r>a._startTime||(a instanceof i?e!==!1&&(n[o++]=a):(s!==!1&&(n[o++]=a),t!==!1&&(n=n.concat(a.getChildren(!0,e,s)),o=n.length))),a=a._next;return n},d.getTweensOf=function(t,e){var s,r,n=this._gc,a=[],o=0;for(n&&this._enabled(!0,!0),s=i.getTweensOf(t),r=s.length;--r>-1;)(s[r].timeline===this||e&&this._contains(s[r]))&&(a[o++]=s[r]);return n&&this._enabled(!1,!0),a},d.recent=function(){return this._recent},d._contains=function(t){for(var e=t.timeline;e;){if(e===this)return!0;e=e.timeline}return!1},d.shiftChildren=function(t,e,i){i=i||0;for(var s,r=this._first,n=this._labels;r;)r._startTime>=i&&(r._startTime+=t),r=r._next;if(e)for(s in n)n[s]>=i&&(n[s]+=t);return this._uncache(!0)},d._kill=function(t,e){if(!t&&!e)return this._enabled(!1,!1);for(var i=e?this.getTweensOf(e):this.getChildren(!0,!0,!1),s=i.length,r=!1;--s>-1;)i[s]._kill(t,e)&&(r=!0);return r},d.clear=function(t){var e=this.getChildren(!1,!0,!0),i=e.length;for(this._time=this._totalTime=0;--i>-1;)e[i]._enabled(!1,!1);return t!==!1&&(this._labels={}),this._uncache(!0)},d.invalidate=function(){for(var e=this._first;e;)e.invalidate(),e=e._next;return t.prototype.invalidate.call(this)},d._enabled=function(t,i){if(t===this._gc)for(var s=this._first;s;)s._enabled(t,!0),s=s._next;return e.prototype._enabled.call(this,t,i)},d.totalTime=function(){this._forcingPlayhead=!0;var e=t.prototype.totalTime.apply(this,arguments);return this._forcingPlayhead=!1,e},d.duration=function(t){return arguments.length?(0!==this.duration()&&0!==t&&this.timeScale(this._duration/t),this):(this._dirty&&this.totalDuration(),this._duration)},d.totalDuration=function(t){if(!arguments.length){if(this._dirty){for(var e,i,s=0,r=this._last,n=999999999999;r;)e=r._prev,r._dirty&&r.totalDuration(),r._startTime>n&&this._sortChildren&&!r._paused?this.add(r,r._startTime-r._delay):n=r._startTime,0>r._startTime&&!r._paused&&(s-=r._startTime,this._timeline.smoothChildTiming&&(this._startTime+=r._startTime/this._timeScale),this.shiftChildren(-r._startTime,!1,-9999999999),n=0),i=r._startTime+r._totalDuration/r._timeScale,i>s&&(s=i),r=e;this._duration=this._totalDuration=s,this._dirty=!1}return this._totalDuration}return 0!==this.totalDuration()&&0!==t&&this.timeScale(this._totalDuration/t),this},d.paused=function(e){if(!e)for(var i=this._first,s=this._time;i;)i._startTime===s&&"isPause"===i.data&&(i._rawPrevTime=0),i=i._next;return t.prototype.paused.apply(this,arguments)},d.usesFrames=function(){for(var e=this._timeline;e._timeline;)e=e._timeline;return e===t._rootFramesTimeline},d.rawTime=function(){return this._paused?this._totalTime:(this._timeline.rawTime()-this._startTime)*this._timeScale},s},!0)}),_gsScope._gsDefine&&_gsScope._gsQueue.pop()(),function(t){"use strict";var e=function(){return(_gsScope.GreenSockGlobals||_gsScope)[t]};"function"==typeof define&&define.amd?define(["TweenLite"],e):"undefined"!=typeof module&&module.exports&&(require("./TweenLite.js"),module.exports=e())}("TimelineLite"); + + +/*! + * VERSION: beta 1.15.2 + * DATE: 2015-01-27 + * UPDATES AND DOCS AT: http://greensock.com + * + * @license Copyright (c) 2008-2015, GreenSock. All rights reserved. + * This work is subject to the terms at http://greensock.com/standard-license or for + * Club GreenSock members, the software agreement that was issued with your membership. + * + * @author: Jack Doyle, jack@greensock.com + **/ +var _gsScope="undefined"!=typeof module&&module.exports&&"undefined"!=typeof global?global:this||window;(_gsScope._gsQueue||(_gsScope._gsQueue=[])).push(function(){"use strict";_gsScope._gsDefine("easing.Back",["easing.Ease"],function(t){var e,i,s,r=_gsScope.GreenSockGlobals||_gsScope,n=r.com.greensock,a=2*Math.PI,o=Math.PI/2,h=n._class,l=function(e,i){var s=h("easing."+e,function(){},!0),r=s.prototype=new t;return r.constructor=s,r.getRatio=i,s},_=t.register||function(){},u=function(t,e,i,s){var r=h("easing."+t,{easeOut:new e,easeIn:new i,easeInOut:new s},!0);return _(r,t),r},c=function(t,e,i){this.t=t,this.v=e,i&&(this.next=i,i.prev=this,this.c=i.v-e,this.gap=i.t-t)},f=function(e,i){var s=h("easing."+e,function(t){this._p1=t||0===t?t:1.70158,this._p2=1.525*this._p1},!0),r=s.prototype=new t;return r.constructor=s,r.getRatio=i,r.config=function(t){return new s(t)},s},p=u("Back",f("BackOut",function(t){return(t-=1)*t*((this._p1+1)*t+this._p1)+1}),f("BackIn",function(t){return t*t*((this._p1+1)*t-this._p1)}),f("BackInOut",function(t){return 1>(t*=2)?.5*t*t*((this._p2+1)*t-this._p2):.5*((t-=2)*t*((this._p2+1)*t+this._p2)+2)})),m=h("easing.SlowMo",function(t,e,i){e=e||0===e?e:.7,null==t?t=.7:t>1&&(t=1),this._p=1!==t?e:0,this._p1=(1-t)/2,this._p2=t,this._p3=this._p1+this._p2,this._calcEnd=i===!0},!0),d=m.prototype=new t;return d.constructor=m,d.getRatio=function(t){var e=t+(.5-t)*this._p;return this._p1>t?this._calcEnd?1-(t=1-t/this._p1)*t:e-(t=1-t/this._p1)*t*t*t*e:t>this._p3?this._calcEnd?1-(t=(t-this._p3)/this._p1)*t:e+(t-e)*(t=(t-this._p3)/this._p1)*t*t*t:this._calcEnd?1:e},m.ease=new m(.7,.7),d.config=m.config=function(t,e,i){return new m(t,e,i)},e=h("easing.SteppedEase",function(t){t=t||1,this._p1=1/t,this._p2=t+1},!0),d=e.prototype=new t,d.constructor=e,d.getRatio=function(t){return 0>t?t=0:t>=1&&(t=.999999999),(this._p2*t>>0)*this._p1},d.config=e.config=function(t){return new e(t)},i=h("easing.RoughEase",function(e){e=e||{};for(var i,s,r,n,a,o,h=e.taper||"none",l=[],_=0,u=0|(e.points||20),f=u,p=e.randomize!==!1,m=e.clamp===!0,d=e.template instanceof t?e.template:null,g="number"==typeof e.strength?.4*e.strength:.4;--f>-1;)i=p?Math.random():1/u*f,s=d?d.getRatio(i):i,"none"===h?r=g:"out"===h?(n=1-i,r=n*n*g):"in"===h?r=i*i*g:.5>i?(n=2*i,r=.5*n*n*g):(n=2*(1-i),r=.5*n*n*g),p?s+=Math.random()*r-.5*r:f%2?s+=.5*r:s-=.5*r,m&&(s>1?s=1:0>s&&(s=0)),l[_++]={x:i,y:s};for(l.sort(function(t,e){return t.x-e.x}),o=new c(1,1,null),f=u;--f>-1;)a=l[f],o=new c(a.x,a.y,o);this._prev=new c(0,0,0!==o.t?o:o.next)},!0),d=i.prototype=new t,d.constructor=i,d.getRatio=function(t){var e=this._prev;if(t>e.t){for(;e.next&&t>=e.t;)e=e.next;e=e.prev}else for(;e.prev&&e.t>=t;)e=e.prev;return this._prev=e,e.v+(t-e.t)/e.gap*e.c},d.config=function(t){return new i(t)},i.ease=new i,u("Bounce",l("BounceOut",function(t){return 1/2.75>t?7.5625*t*t:2/2.75>t?7.5625*(t-=1.5/2.75)*t+.75:2.5/2.75>t?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375}),l("BounceIn",function(t){return 1/2.75>(t=1-t)?1-7.5625*t*t:2/2.75>t?1-(7.5625*(t-=1.5/2.75)*t+.75):2.5/2.75>t?1-(7.5625*(t-=2.25/2.75)*t+.9375):1-(7.5625*(t-=2.625/2.75)*t+.984375)}),l("BounceInOut",function(t){var e=.5>t;return t=e?1-2*t:2*t-1,t=1/2.75>t?7.5625*t*t:2/2.75>t?7.5625*(t-=1.5/2.75)*t+.75:2.5/2.75>t?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375,e?.5*(1-t):.5*t+.5})),u("Circ",l("CircOut",function(t){return Math.sqrt(1-(t-=1)*t)}),l("CircIn",function(t){return-(Math.sqrt(1-t*t)-1)}),l("CircInOut",function(t){return 1>(t*=2)?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)})),s=function(e,i,s){var r=h("easing."+e,function(t,e){this._p1=t>=1?t:1,this._p2=(e||s)/(1>t?t:1),this._p3=this._p2/a*(Math.asin(1/this._p1)||0),this._p2=a/this._p2},!0),n=r.prototype=new t;return n.constructor=r,n.getRatio=i,n.config=function(t,e){return new r(t,e)},r},u("Elastic",s("ElasticOut",function(t){return this._p1*Math.pow(2,-10*t)*Math.sin((t-this._p3)*this._p2)+1},.3),s("ElasticIn",function(t){return-(this._p1*Math.pow(2,10*(t-=1))*Math.sin((t-this._p3)*this._p2))},.3),s("ElasticInOut",function(t){return 1>(t*=2)?-.5*this._p1*Math.pow(2,10*(t-=1))*Math.sin((t-this._p3)*this._p2):.5*this._p1*Math.pow(2,-10*(t-=1))*Math.sin((t-this._p3)*this._p2)+1},.45)),u("Expo",l("ExpoOut",function(t){return 1-Math.pow(2,-10*t)}),l("ExpoIn",function(t){return Math.pow(2,10*(t-1))-.001}),l("ExpoInOut",function(t){return 1>(t*=2)?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*(t-1)))})),u("Sine",l("SineOut",function(t){return Math.sin(t*o)}),l("SineIn",function(t){return-Math.cos(t*o)+1}),l("SineInOut",function(t){return-.5*(Math.cos(Math.PI*t)-1)})),h("easing.EaseLookup",{find:function(e){return t.map[e]}},!0),_(r.SlowMo,"SlowMo","ease,"),_(i,"RoughEase","ease,"),_(e,"SteppedEase","ease,"),p},!0)}),_gsScope._gsDefine&&_gsScope._gsQueue.pop()(); + + +/*! + * VERSION: 1.17.0 + * DATE: 2015-05-27 + * UPDATES AND DOCS AT: http://greensock.com + * + * @license Copyright (c) 2008-2015, GreenSock. All rights reserved. + * This work is subject to the terms at http://greensock.com/standard-license or for + * Club GreenSock members, the software agreement that was issued with your membership. + * + * @author: Jack Doyle, jack@greensock.com + */ +var _gsScope="undefined"!=typeof module&&module.exports&&"undefined"!=typeof global?global:this||window;(_gsScope._gsQueue||(_gsScope._gsQueue=[])).push(function(){"use strict";_gsScope._gsDefine("plugins.CSSPlugin",["plugins.TweenPlugin","TweenLite"],function(t,e){var i,r,s,n,a=function(){t.call(this,"css"),this._overwriteProps.length=0,this.setRatio=a.prototype.setRatio},o=_gsScope._gsDefine.globals,l={},h=a.prototype=new t("css");h.constructor=a,a.version="1.17.0",a.API=2,a.defaultTransformPerspective=0,a.defaultSkewType="compensated",a.defaultSmoothOrigin=!0,h="px",a.suffixMap={top:h,right:h,bottom:h,left:h,width:h,height:h,fontSize:h,padding:h,margin:h,perspective:h,lineHeight:""};var u,f,c,p,_,d,m=/(?:\d|\-\d|\.\d|\-\.\d)+/g,g=/(?:\d|\-\d|\.\d|\-\.\d|\+=\d|\-=\d|\+=.\d|\-=\.\d)+/g,v=/(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b)/gi,y=/(?![+-]?\d*\.?\d+|[+-]|e[+-]\d+)[^0-9]/g,x=/(?:\d|\-|\+|=|#|\.)*/g,T=/opacity *= *([^)]*)/i,w=/opacity:([^;]*)/i,b=/alpha\(opacity *=.+?\)/i,P=/^(rgb|hsl)/,S=/([A-Z])/g,O=/-([a-z])/gi,k=/(^(?:url\(\"|url\())|(?:(\"\))$|\)$)/gi,C=function(t,e){return e.toUpperCase()},R=/(?:Left|Right|Width)/i,A=/(M11|M12|M21|M22)=[\d\-\.e]+/gi,M=/progid\:DXImageTransform\.Microsoft\.Matrix\(.+?\)/i,D=/,(?=[^\)]*(?:\(|$))/gi,N=Math.PI/180,L=180/Math.PI,F={},X=document,z=function(t){return X.createElementNS?X.createElementNS("http://www.w3.org/1999/xhtml",t):X.createElement(t)},B=z("div"),E=z("img"),I=a._internals={_specialProps:l},Y=navigator.userAgent,W=function(){var t=Y.indexOf("Android"),e=z("a");return c=-1!==Y.indexOf("Safari")&&-1===Y.indexOf("Chrome")&&(-1===t||Number(Y.substr(t+8,1))>3),_=c&&6>Number(Y.substr(Y.indexOf("Version/")+8,1)),p=-1!==Y.indexOf("Firefox"),(/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(Y)||/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(Y))&&(d=parseFloat(RegExp.$1)),e?(e.style.cssText="top:1px;opacity:.55;",/^0.55/.test(e.style.opacity)):!1}(),V=function(t){return T.test("string"==typeof t?t:(t.currentStyle?t.currentStyle.filter:t.style.filter)||"")?parseFloat(RegExp.$1)/100:1},j=function(t){window.console&&console.log(t)},G="",U="",q=function(t,e){e=e||B;var i,r,s=e.style;if(void 0!==s[t])return t;for(t=t.charAt(0).toUpperCase()+t.substr(1),i=["O","Moz","ms","Ms","Webkit"],r=5;--r>-1&&void 0===s[i[r]+t];);return r>=0?(U=3===r?"ms":i[r],G="-"+U.toLowerCase()+"-",U+t):null},H=X.defaultView?X.defaultView.getComputedStyle:function(){},Q=a.getStyle=function(t,e,i,r,s){var n;return W||"opacity"!==e?(!r&&t.style[e]?n=t.style[e]:(i=i||H(t))?n=i[e]||i.getPropertyValue(e)||i.getPropertyValue(e.replace(S,"-$1").toLowerCase()):t.currentStyle&&(n=t.currentStyle[e]),null==s||n&&"none"!==n&&"auto"!==n&&"auto auto"!==n?n:s):V(t)},Z=I.convertToPixels=function(t,i,r,s,n){if("px"===s||!s)return r;if("auto"===s||!r)return 0;var o,l,h,u=R.test(i),f=t,c=B.style,p=0>r;if(p&&(r=-r),"%"===s&&-1!==i.indexOf("border"))o=r/100*(u?t.clientWidth:t.clientHeight);else{if(c.cssText="border:0 solid red;position:"+Q(t,"position")+";line-height:0;","%"!==s&&f.appendChild)c[u?"borderLeftWidth":"borderTopWidth"]=r+s;else{if(f=t.parentNode||X.body,l=f._gsCache,h=e.ticker.frame,l&&u&&l.time===h)return l.width*r/100;c[u?"width":"height"]=r+s}f.appendChild(B),o=parseFloat(B[u?"offsetWidth":"offsetHeight"]),f.removeChild(B),u&&"%"===s&&a.cacheWidths!==!1&&(l=f._gsCache=f._gsCache||{},l.time=h,l.width=100*(o/r)),0!==o||n||(o=Z(t,i,r,s,!0))}return p?-o:o},$=I.calculateOffset=function(t,e,i){if("absolute"!==Q(t,"position",i))return 0;var r="left"===e?"Left":"Top",s=Q(t,"margin"+r,i);return t["offset"+r]-(Z(t,e,parseFloat(s),s.replace(x,""))||0)},K=function(t,e){var i,r,s,n={};if(e=e||H(t,null))if(i=e.length)for(;--i>-1;)s=e[i],(-1===s.indexOf("-transform")||Pe===s)&&(n[s.replace(O,C)]=e.getPropertyValue(s));else for(i in e)(-1===i.indexOf("Transform")||be===i)&&(n[i]=e[i]);else if(e=t.currentStyle||t.style)for(i in e)"string"==typeof i&&void 0===n[i]&&(n[i.replace(O,C)]=e[i]);return W||(n.opacity=V(t)),r=Xe(t,e,!1),n.rotation=r.rotation,n.skewX=r.skewX,n.scaleX=r.scaleX,n.scaleY=r.scaleY,n.x=r.x,n.y=r.y,Oe&&(n.z=r.z,n.rotationX=r.rotationX,n.rotationY=r.rotationY,n.scaleZ=r.scaleZ),n.filters&&delete n.filters,n},J=function(t,e,i,r,s){var n,a,o,l={},h=t.style;for(a in i)"cssText"!==a&&"length"!==a&&isNaN(a)&&(e[a]!==(n=i[a])||s&&s[a])&&-1===a.indexOf("Origin")&&("number"==typeof n||"string"==typeof n)&&(l[a]="auto"!==n||"left"!==a&&"top"!==a?""!==n&&"auto"!==n&&"none"!==n||"string"!=typeof e[a]||""===e[a].replace(y,"")?n:0:$(t,a),void 0!==h[a]&&(o=new pe(h,a,h[a],o)));if(r)for(a in r)"className"!==a&&(l[a]=r[a]);return{difs:l,firstMPT:o}},te={width:["Left","Right"],height:["Top","Bottom"]},ee=["marginLeft","marginRight","marginTop","marginBottom"],ie=function(t,e,i){var r=parseFloat("width"===e?t.offsetWidth:t.offsetHeight),s=te[e],n=s.length;for(i=i||H(t,null);--n>-1;)r-=parseFloat(Q(t,"padding"+s[n],i,!0))||0,r-=parseFloat(Q(t,"border"+s[n]+"Width",i,!0))||0;return r},re=function(t,e){(null==t||""===t||"auto"===t||"auto auto"===t)&&(t="0 0");var i=t.split(" "),r=-1!==t.indexOf("left")?"0%":-1!==t.indexOf("right")?"100%":i[0],s=-1!==t.indexOf("top")?"0%":-1!==t.indexOf("bottom")?"100%":i[1];return null==s?s="center"===r?"50%":"0":"center"===s&&(s="50%"),("center"===r||isNaN(parseFloat(r))&&-1===(r+"").indexOf("="))&&(r="50%"),t=r+" "+s+(i.length>2?" "+i[2]:""),e&&(e.oxp=-1!==r.indexOf("%"),e.oyp=-1!==s.indexOf("%"),e.oxr="="===r.charAt(1),e.oyr="="===s.charAt(1),e.ox=parseFloat(r.replace(y,"")),e.oy=parseFloat(s.replace(y,"")),e.v=t),e||t},se=function(t,e){return"string"==typeof t&&"="===t.charAt(1)?parseInt(t.charAt(0)+"1",10)*parseFloat(t.substr(2)):parseFloat(t)-parseFloat(e)},ne=function(t,e){return null==t?e:"string"==typeof t&&"="===t.charAt(1)?parseInt(t.charAt(0)+"1",10)*parseFloat(t.substr(2))+e:parseFloat(t)},ae=function(t,e,i,r){var s,n,a,o,l,h=1e-6;return null==t?o=e:"number"==typeof t?o=t:(s=360,n=t.split("_"),l="="===t.charAt(1),a=(l?parseInt(t.charAt(0)+"1",10)*parseFloat(n[0].substr(2)):parseFloat(n[0]))*(-1===t.indexOf("rad")?1:L)-(l?0:e),n.length&&(r&&(r[i]=e+a),-1!==t.indexOf("short")&&(a%=s,a!==a%(s/2)&&(a=0>a?a+s:a-s)),-1!==t.indexOf("_cw")&&0>a?a=(a+9999999999*s)%s-(0|a/s)*s:-1!==t.indexOf("ccw")&&a>0&&(a=(a-9999999999*s)%s-(0|a/s)*s)),o=e+a),h>o&&o>-h&&(o=0),o},oe={aqua:[0,255,255],lime:[0,255,0],silver:[192,192,192],black:[0,0,0],maroon:[128,0,0],teal:[0,128,128],blue:[0,0,255],navy:[0,0,128],white:[255,255,255],fuchsia:[255,0,255],olive:[128,128,0],yellow:[255,255,0],orange:[255,165,0],gray:[128,128,128],purple:[128,0,128],green:[0,128,0],red:[255,0,0],pink:[255,192,203],cyan:[0,255,255],transparent:[255,255,255,0]},le=function(t,e,i){return t=0>t?t+1:t>1?t-1:t,0|255*(1>6*t?e+6*(i-e)*t:.5>t?i:2>3*t?e+6*(i-e)*(2/3-t):e)+.5},he=a.parseColor=function(t){var e,i,r,s,n,a;return t&&""!==t?"number"==typeof t?[t>>16,255&t>>8,255&t]:(","===t.charAt(t.length-1)&&(t=t.substr(0,t.length-1)),oe[t]?oe[t]:"#"===t.charAt(0)?(4===t.length&&(e=t.charAt(1),i=t.charAt(2),r=t.charAt(3),t="#"+e+e+i+i+r+r),t=parseInt(t.substr(1),16),[t>>16,255&t>>8,255&t]):"hsl"===t.substr(0,3)?(t=t.match(m),s=Number(t[0])%360/360,n=Number(t[1])/100,a=Number(t[2])/100,i=.5>=a?a*(n+1):a+n-a*n,e=2*a-i,t.length>3&&(t[3]=Number(t[3])),t[0]=le(s+1/3,e,i),t[1]=le(s,e,i),t[2]=le(s-1/3,e,i),t):(t=t.match(m)||oe.transparent,t[0]=Number(t[0]),t[1]=Number(t[1]),t[2]=Number(t[2]),t.length>3&&(t[3]=Number(t[3])),t)):oe.black},ue="(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#.+?\\b";for(h in oe)ue+="|"+h+"\\b";ue=RegExp(ue+")","gi");var fe=function(t,e,i,r){if(null==t)return function(t){return t};var s,n=e?(t.match(ue)||[""])[0]:"",a=t.split(n).join("").match(v)||[],o=t.substr(0,t.indexOf(a[0])),l=")"===t.charAt(t.length-1)?")":"",h=-1!==t.indexOf(" ")?" ":",",u=a.length,f=u>0?a[0].replace(m,""):"";return u?s=e?function(t){var e,c,p,_;if("number"==typeof t)t+=f;else if(r&&D.test(t)){for(_=t.replace(D,"|").split("|"),p=0;_.length>p;p++)_[p]=s(_[p]);return _.join(",")}if(e=(t.match(ue)||[n])[0],c=t.split(e).join("").match(v)||[],p=c.length,u>p--)for(;u>++p;)c[p]=i?c[0|(p-1)/2]:a[p];return o+c.join(h)+h+e+l+(-1!==t.indexOf("inset")?" inset":"")}:function(t){var e,n,c;if("number"==typeof t)t+=f;else if(r&&D.test(t)){for(n=t.replace(D,"|").split("|"),c=0;n.length>c;c++)n[c]=s(n[c]);return n.join(",")}if(e=t.match(v)||[],c=e.length,u>c--)for(;u>++c;)e[c]=i?e[0|(c-1)/2]:a[c];return o+e.join(h)+l}:function(t){return t}},ce=function(t){return t=t.split(","),function(e,i,r,s,n,a,o){var l,h=(i+"").split(" ");for(o={},l=0;4>l;l++)o[t[l]]=h[l]=h[l]||h[(l-1)/2>>0];return s.parse(e,o,n,a)}},pe=(I._setPluginRatio=function(t){this.plugin.setRatio(t);for(var e,i,r,s,n=this.data,a=n.proxy,o=n.firstMPT,l=1e-6;o;)e=a[o.v],o.r?e=Math.round(e):l>e&&e>-l&&(e=0),o.t[o.p]=e,o=o._next;if(n.autoRotate&&(n.autoRotate.rotation=a.rotation),1===t)for(o=n.firstMPT;o;){if(i=o.t,i.type){if(1===i.type){for(s=i.xs0+i.s+i.xs1,r=1;i.l>r;r++)s+=i["xn"+r]+i["xs"+(r+1)];i.e=s}}else i.e=i.s+i.xs0;o=o._next}},function(t,e,i,r,s){this.t=t,this.p=e,this.v=i,this.r=s,r&&(r._prev=this,this._next=r)}),_e=(I._parseToProxy=function(t,e,i,r,s,n){var a,o,l,h,u,f=r,c={},p={},_=i._transform,d=F;for(i._transform=null,F=e,r=u=i.parse(t,e,r,s),F=d,n&&(i._transform=_,f&&(f._prev=null,f._prev&&(f._prev._next=null)));r&&r!==f;){if(1>=r.type&&(o=r.p,p[o]=r.s+r.c,c[o]=r.s,n||(h=new pe(r,"s",o,h,r.r),r.c=0),1===r.type))for(a=r.l;--a>0;)l="xn"+a,o=r.p+"_"+l,p[o]=r.data[l],c[o]=r[l],n||(h=new pe(r,l,o,h,r.rxp[l]));r=r._next}return{proxy:c,end:p,firstMPT:h,pt:u}},I.CSSPropTween=function(t,e,r,s,a,o,l,h,u,f,c){this.t=t,this.p=e,this.s=r,this.c=s,this.n=l||e,t instanceof _e||n.push(this.n),this.r=h,this.type=o||0,u&&(this.pr=u,i=!0),this.b=void 0===f?r:f,this.e=void 0===c?r+s:c,a&&(this._next=a,a._prev=this)}),de=function(t,e,i,r,s,n){var a=new _e(t,e,i,r-i,s,-1,n);return a.b=i,a.e=a.xs0=r,a},me=a.parseComplex=function(t,e,i,r,s,n,a,o,l,h){i=i||n||"",a=new _e(t,e,0,0,a,h?2:1,null,!1,o,i,r),r+="";var f,c,p,_,d,v,y,x,T,w,b,S,O=i.split(", ").join(",").split(" "),k=r.split(", ").join(",").split(" "),C=O.length,R=u!==!1;for((-1!==r.indexOf(",")||-1!==i.indexOf(","))&&(O=O.join(" ").replace(D,", ").split(" "),k=k.join(" ").replace(D,", ").split(" "),C=O.length),C!==k.length&&(O=(n||"").split(" "),C=O.length),a.plugin=l,a.setRatio=h,f=0;C>f;f++)if(_=O[f],d=k[f],x=parseFloat(_),x||0===x)a.appendXtra("",x,se(d,x),d.replace(g,""),R&&-1!==d.indexOf("px"),!0);else if(s&&("#"===_.charAt(0)||oe[_]||P.test(_)))S=","===d.charAt(d.length-1)?"),":")",_=he(_),d=he(d),T=_.length+d.length>6,T&&!W&&0===d[3]?(a["xs"+a.l]+=a.l?" transparent":"transparent",a.e=a.e.split(k[f]).join("transparent")):(W||(T=!1),a.appendXtra(T?"rgba(":"rgb(",_[0],d[0]-_[0],",",!0,!0).appendXtra("",_[1],d[1]-_[1],",",!0).appendXtra("",_[2],d[2]-_[2],T?",":S,!0),T&&(_=4>_.length?1:_[3],a.appendXtra("",_,(4>d.length?1:d[3])-_,S,!1)));else if(v=_.match(m)){if(y=d.match(g),!y||y.length!==v.length)return a;for(p=0,c=0;v.length>c;c++)b=v[c],w=_.indexOf(b,p),a.appendXtra(_.substr(p,w-p),Number(b),se(y[c],b),"",R&&"px"===_.substr(w+b.length,2),0===c),p=w+b.length;a["xs"+a.l]+=_.substr(p)}else a["xs"+a.l]+=a.l?" "+_:_;if(-1!==r.indexOf("=")&&a.data){for(S=a.xs0+a.data.s,f=1;a.l>f;f++)S+=a["xs"+f]+a.data["xn"+f];a.e=S+a["xs"+f]}return a.l||(a.type=-1,a.xs0=a.e),a.xfirst||a},ge=9;for(h=_e.prototype,h.l=h.pr=0;--ge>0;)h["xn"+ge]=0,h["xs"+ge]="";h.xs0="",h._next=h._prev=h.xfirst=h.data=h.plugin=h.setRatio=h.rxp=null,h.appendXtra=function(t,e,i,r,s,n){var a=this,o=a.l;return a["xs"+o]+=n&&o?" "+t:t||"",i||0===o||a.plugin?(a.l++,a.type=a.setRatio?2:1,a["xs"+a.l]=r||"",o>0?(a.data["xn"+o]=e+i,a.rxp["xn"+o]=s,a["xn"+o]=e,a.plugin||(a.xfirst=new _e(a,"xn"+o,e,i,a.xfirst||a,0,a.n,s,a.pr),a.xfirst.xs0=0),a):(a.data={s:e+i},a.rxp={},a.s=e,a.c=i,a.r=s,a)):(a["xs"+o]+=e+(r||""),a)};var ve=function(t,e){e=e||{},this.p=e.prefix?q(t)||t:t,l[t]=l[this.p]=this,this.format=e.formatter||fe(e.defaultValue,e.color,e.collapsible,e.multi),e.parser&&(this.parse=e.parser),this.clrs=e.color,this.multi=e.multi,this.keyword=e.keyword,this.dflt=e.defaultValue,this.pr=e.priority||0},ye=I._registerComplexSpecialProp=function(t,e,i){"object"!=typeof e&&(e={parser:i});var r,s,n=t.split(","),a=e.defaultValue;for(i=i||[a],r=0;n.length>r;r++)e.prefix=0===r&&e.prefix,e.defaultValue=i[r]||a,s=new ve(n[r],e)},xe=function(t){if(!l[t]){var e=t.charAt(0).toUpperCase()+t.substr(1)+"Plugin";ye(t,{parser:function(t,i,r,s,n,a,h){var u=o.com.greensock.plugins[e];return u?(u._cssRegister(),l[r].parse(t,i,r,s,n,a,h)):(j("Error: "+e+" js file not loaded."),n)}})}};h=ve.prototype,h.parseComplex=function(t,e,i,r,s,n){var a,o,l,h,u,f,c=this.keyword;if(this.multi&&(D.test(i)||D.test(e)?(o=e.replace(D,"|").split("|"),l=i.replace(D,"|").split("|")):c&&(o=[e],l=[i])),l){for(h=l.length>o.length?l.length:o.length,a=0;h>a;a++)e=o[a]=o[a]||this.dflt,i=l[a]=l[a]||this.dflt,c&&(u=e.indexOf(c),f=i.indexOf(c),u!==f&&(-1===f?o[a]=o[a].split(c).join(""):-1===u&&(o[a]+=" "+c)));e=o.join(", "),i=l.join(", ")}return me(t,this.p,e,i,this.clrs,this.dflt,r,this.pr,s,n)},h.parse=function(t,e,i,r,n,a){return this.parseComplex(t.style,this.format(Q(t,this.p,s,!1,this.dflt)),this.format(e),n,a)},a.registerSpecialProp=function(t,e,i){ye(t,{parser:function(t,r,s,n,a,o){var l=new _e(t,s,0,0,a,2,s,!1,i);return l.plugin=o,l.setRatio=e(t,r,n._tween,s),l},priority:i})},a.useSVGTransformAttr=c||p;var Te,we="scaleX,scaleY,scaleZ,x,y,z,skewX,skewY,rotation,rotationX,rotationY,perspective,xPercent,yPercent".split(","),be=q("transform"),Pe=G+"transform",Se=q("transformOrigin"),Oe=null!==q("perspective"),ke=I.Transform=function(){this.perspective=parseFloat(a.defaultTransformPerspective)||0,this.force3D=a.defaultForce3D!==!1&&Oe?a.defaultForce3D||"auto":!1},Ce=window.SVGElement,Re=function(t,e,i){var r,s=X.createElementNS("http://www.w3.org/2000/svg",t),n=/([a-z])([A-Z])/g;for(r in i)s.setAttributeNS(null,r.replace(n,"$1-$2").toLowerCase(),i[r]);return e.appendChild(s),s},Ae=X.documentElement,Me=function(){var t,e,i,r=d||/Android/i.test(Y)&&!window.chrome;return X.createElementNS&&!r&&(t=Re("svg",Ae),e=Re("rect",t,{width:100,height:50,x:100}),i=e.getBoundingClientRect().width,e.style[Se]="50% 50%",e.style[be]="scaleX(0.5)",r=i===e.getBoundingClientRect().width&&!(p&&Oe),Ae.removeChild(t)),r}(),De=function(t,e,i,r,s){var n,o,l,h,u,f,c,p,_,d,m,g,v,y,x=t._gsTransform,T=Fe(t,!0);x&&(v=x.xOrigin,y=x.yOrigin),(!r||2>(n=r.split(" ")).length)&&(c=t.getBBox(),e=re(e).split(" "),n=[(-1!==e[0].indexOf("%")?parseFloat(e[0])/100*c.width:parseFloat(e[0]))+c.x,(-1!==e[1].indexOf("%")?parseFloat(e[1])/100*c.height:parseFloat(e[1]))+c.y]),i.xOrigin=h=parseFloat(n[0]),i.yOrigin=u=parseFloat(n[1]),r&&T!==Le&&(f=T[0],c=T[1],p=T[2],_=T[3],d=T[4],m=T[5],g=f*_-c*p,o=h*(_/g)+u*(-p/g)+(p*m-_*d)/g,l=h*(-c/g)+u*(f/g)-(f*m-c*d)/g,h=i.xOrigin=n[0]=o,u=i.yOrigin=n[1]=l),x&&(s||s!==!1&&a.defaultSmoothOrigin!==!1?(o=h-v,l=u-y,x.xOffset+=o*T[0]+l*T[2]-o,x.yOffset+=o*T[1]+l*T[3]-l):x.xOffset=x.yOffset=0),t.setAttribute("data-svg-origin",n.join(" "))},Ne=function(t){return!!(Ce&&"function"==typeof t.getBBox&&t.getCTM&&(!t.parentNode||t.parentNode.getBBox&&t.parentNode.getCTM))},Le=[1,0,0,1,0,0],Fe=function(t,e){var i,r,s,n,a,o=t._gsTransform||new ke,l=1e5;if(be?r=Q(t,Pe,null,!0):t.currentStyle&&(r=t.currentStyle.filter.match(A),r=r&&4===r.length?[r[0].substr(4),Number(r[2].substr(4)),Number(r[1].substr(4)),r[3].substr(4),o.x||0,o.y||0].join(","):""),i=!r||"none"===r||"matrix(1, 0, 0, 1, 0, 0)"===r,(o.svg||t.getBBox&&Ne(t))&&(i&&-1!==(t.style[be]+"").indexOf("matrix")&&(r=t.style[be],i=0),s=t.getAttribute("transform"),i&&s&&(-1!==s.indexOf("matrix")?(r=s,i=0):-1!==s.indexOf("translate")&&(r="matrix(1,0,0,1,"+s.match(/(?:\-|\b)[\d\-\.e]+\b/gi).join(",")+")",i=0))),i)return Le;for(s=(r||"").match(/(?:\-|\b)[\d\-\.e]+\b/gi)||[],ge=s.length;--ge>-1;)n=Number(s[ge]),s[ge]=(a=n-(n|=0))?(0|a*l+(0>a?-.5:.5))/l+n:n;return e&&s.length>6?[s[0],s[1],s[4],s[5],s[12],s[13]]:s},Xe=I.getTransform=function(t,i,r,n){if(t._gsTransform&&r&&!n)return t._gsTransform;var o,l,h,u,f,c,p=r?t._gsTransform||new ke:new ke,_=0>p.scaleX,d=2e-5,m=1e5,g=Oe?parseFloat(Q(t,Se,i,!1,"0 0 0").split(" ")[2])||p.zOrigin||0:0,v=parseFloat(a.defaultTransformPerspective)||0;if(p.svg=!(!t.getBBox||!Ne(t)),p.svg&&(De(t,Q(t,Se,s,!1,"50% 50%")+"",p,t.getAttribute("data-svg-origin")),Te=a.useSVGTransformAttr||Me),o=Fe(t),o!==Le){if(16===o.length){var y,x,T,w,b,P=o[0],S=o[1],O=o[2],k=o[3],C=o[4],R=o[5],A=o[6],M=o[7],D=o[8],N=o[9],F=o[10],X=o[12],z=o[13],B=o[14],E=o[11],I=Math.atan2(A,F);p.zOrigin&&(B=-p.zOrigin,X=D*B-o[12],z=N*B-o[13],B=F*B+p.zOrigin-o[14]),p.rotationX=I*L,I&&(w=Math.cos(-I),b=Math.sin(-I),y=C*w+D*b,x=R*w+N*b,T=A*w+F*b,D=C*-b+D*w,N=R*-b+N*w,F=A*-b+F*w,E=M*-b+E*w,C=y,R=x,A=T),I=Math.atan2(D,F),p.rotationY=I*L,I&&(w=Math.cos(-I),b=Math.sin(-I),y=P*w-D*b,x=S*w-N*b,T=O*w-F*b,N=S*b+N*w,F=O*b+F*w,E=k*b+E*w,P=y,S=x,O=T),I=Math.atan2(S,P),p.rotation=I*L,I&&(w=Math.cos(-I),b=Math.sin(-I),P=P*w+C*b,x=S*w+R*b,R=S*-b+R*w,A=O*-b+A*w,S=x),p.rotationX&&Math.abs(p.rotationX)+Math.abs(p.rotation)>359.9&&(p.rotationX=p.rotation=0,p.rotationY+=180),p.scaleX=(0|Math.sqrt(P*P+S*S)*m+.5)/m,p.scaleY=(0|Math.sqrt(R*R+N*N)*m+.5)/m,p.scaleZ=(0|Math.sqrt(A*A+F*F)*m+.5)/m,p.skewX=0,p.perspective=E?1/(0>E?-E:E):0,p.x=X,p.y=z,p.z=B,p.svg&&(p.x-=p.xOrigin-(p.xOrigin*P-p.yOrigin*C),p.y-=p.yOrigin-(p.yOrigin*S-p.xOrigin*R))}else if(!(Oe&&!n&&o.length&&p.x===o[4]&&p.y===o[5]&&(p.rotationX||p.rotationY)||void 0!==p.x&&"none"===Q(t,"display",i))){var Y=o.length>=6,W=Y?o[0]:1,V=o[1]||0,j=o[2]||0,G=Y?o[3]:1;p.x=o[4]||0,p.y=o[5]||0,h=Math.sqrt(W*W+V*V),u=Math.sqrt(G*G+j*j),f=W||V?Math.atan2(V,W)*L:p.rotation||0,c=j||G?Math.atan2(j,G)*L+f:p.skewX||0,Math.abs(c)>90&&270>Math.abs(c)&&(_?(h*=-1,c+=0>=f?180:-180,f+=0>=f?180:-180):(u*=-1,c+=0>=c?180:-180)),p.scaleX=h,p.scaleY=u,p.rotation=f,p.skewX=c,Oe&&(p.rotationX=p.rotationY=p.z=0,p.perspective=v,p.scaleZ=1),p.svg&&(p.x-=p.xOrigin-(p.xOrigin*W+p.yOrigin*j),p.y-=p.yOrigin-(p.xOrigin*V+p.yOrigin*G))}p.zOrigin=g;for(l in p)d>p[l]&&p[l]>-d&&(p[l]=0)}return r&&(t._gsTransform=p,p.svg&&(Te&&t.style[be]?e.delayedCall(.001,function(){Ie(t.style,be)}):!Te&&t.getAttribute("transform")&&e.delayedCall(.001,function(){t.removeAttribute("transform")}))),p},ze=function(t){var e,i,r=this.data,s=-r.rotation*N,n=s+r.skewX*N,a=1e5,o=(0|Math.cos(s)*r.scaleX*a)/a,l=(0|Math.sin(s)*r.scaleX*a)/a,h=(0|Math.sin(n)*-r.scaleY*a)/a,u=(0|Math.cos(n)*r.scaleY*a)/a,f=this.t.style,c=this.t.currentStyle;if(c){i=l,l=-h,h=-i,e=c.filter,f.filter="";var p,_,m=this.t.offsetWidth,g=this.t.offsetHeight,v="absolute"!==c.position,y="progid:DXImageTransform.Microsoft.Matrix(M11="+o+", M12="+l+", M21="+h+", M22="+u,w=r.x+m*r.xPercent/100,b=r.y+g*r.yPercent/100;if(null!=r.ox&&(p=(r.oxp?.01*m*r.ox:r.ox)-m/2,_=(r.oyp?.01*g*r.oy:r.oy)-g/2,w+=p-(p*o+_*l),b+=_-(p*h+_*u)),v?(p=m/2,_=g/2,y+=", Dx="+(p-(p*o+_*l)+w)+", Dy="+(_-(p*h+_*u)+b)+")"):y+=", sizingMethod='auto expand')",f.filter=-1!==e.indexOf("DXImageTransform.Microsoft.Matrix(")?e.replace(M,y):y+" "+e,(0===t||1===t)&&1===o&&0===l&&0===h&&1===u&&(v&&-1===y.indexOf("Dx=0, Dy=0")||T.test(e)&&100!==parseFloat(RegExp.$1)||-1===e.indexOf("gradient("&&e.indexOf("Alpha"))&&f.removeAttribute("filter")),!v){var P,S,O,k=8>d?1:-1;for(p=r.ieOffsetX||0,_=r.ieOffsetY||0,r.ieOffsetX=Math.round((m-((0>o?-o:o)*m+(0>l?-l:l)*g))/2+w),r.ieOffsetY=Math.round((g-((0>u?-u:u)*g+(0>h?-h:h)*m))/2+b),ge=0;4>ge;ge++)S=ee[ge],P=c[S],i=-1!==P.indexOf("px")?parseFloat(P):Z(this.t,S,parseFloat(P),P.replace(x,""))||0,O=i!==r[S]?2>ge?-r.ieOffsetX:-r.ieOffsetY:2>ge?p-r.ieOffsetX:_-r.ieOffsetY,f[S]=(r[S]=Math.round(i-O*(0===ge||2===ge?1:k)))+"px"}}},Be=I.set3DTransformRatio=I.setTransformRatio=function(t){var e,i,r,s,n,a,o,l,h,u,f,c,_,d,m,g,v,y,x,T,w,b,P,S=this.data,O=this.t.style,k=S.rotation,C=S.rotationX,R=S.rotationY,A=S.scaleX,M=S.scaleY,D=S.scaleZ,L=S.x,F=S.y,X=S.z,z=S.svg,B=S.perspective,E=S.force3D;if(!(((1!==t&&0!==t||"auto"!==E||this.tween._totalTime!==this.tween._totalDuration&&this.tween._totalTime)&&E||X||B||R||C)&&(!Te||!z)&&Oe))return k||S.skewX||z?(k*=N,b=S.skewX*N,P=1e5,e=Math.cos(k)*A,s=Math.sin(k)*A,i=Math.sin(k-b)*-M,n=Math.cos(k-b)*M,b&&"simple"===S.skewType&&(v=Math.tan(b),v=Math.sqrt(1+v*v),i*=v,n*=v,S.skewY&&(e*=v,s*=v)),z&&(L+=S.xOrigin-(S.xOrigin*e+S.yOrigin*i)+S.xOffset,F+=S.yOrigin-(S.xOrigin*s+S.yOrigin*n)+S.yOffset,Te&&(S.xPercent||S.yPercent)&&(d=this.t.getBBox(),L+=.01*S.xPercent*d.width,F+=.01*S.yPercent*d.height),d=1e-6,d>L&&L>-d&&(L=0),d>F&&F>-d&&(F=0)),x=(0|e*P)/P+","+(0|s*P)/P+","+(0|i*P)/P+","+(0|n*P)/P+","+L+","+F+")",z&&Te?this.t.setAttribute("transform","matrix("+x):O[be]=(S.xPercent||S.yPercent?"translate("+S.xPercent+"%,"+S.yPercent+"%) matrix(":"matrix(")+x):O[be]=(S.xPercent||S.yPercent?"translate("+S.xPercent+"%,"+S.yPercent+"%) matrix(":"matrix(")+A+",0,0,"+M+","+L+","+F+")",void 0;if(p&&(d=1e-4,d>A&&A>-d&&(A=D=2e-5),d>M&&M>-d&&(M=D=2e-5),!B||S.z||S.rotationX||S.rotationY||(B=0)),k||S.skewX)k*=N,m=e=Math.cos(k),g=s=Math.sin(k),S.skewX&&(k-=S.skewX*N,m=Math.cos(k),g=Math.sin(k),"simple"===S.skewType&&(v=Math.tan(S.skewX*N),v=Math.sqrt(1+v*v),m*=v,g*=v,S.skewY&&(e*=v,s*=v))),i=-g,n=m;else{if(!(R||C||1!==D||B||z))return O[be]=(S.xPercent||S.yPercent?"translate("+S.xPercent+"%,"+S.yPercent+"%) translate3d(":"translate3d(")+L+"px,"+F+"px,"+X+"px)"+(1!==A||1!==M?" scale("+A+","+M+")":""),void 0;e=n=1,i=s=0}h=1,r=a=o=l=u=f=0,c=B?-1/B:0,_=S.zOrigin,d=1e-6,T=",",w="0",k=R*N,k&&(m=Math.cos(k),g=Math.sin(k),o=-g,u=c*-g,r=e*g,a=s*g,h=m,c*=m,e*=m,s*=m),k=C*N,k&&(m=Math.cos(k),g=Math.sin(k),v=i*m+r*g,y=n*m+a*g,l=h*g,f=c*g,r=i*-g+r*m,a=n*-g+a*m,h*=m,c*=m,i=v,n=y),1!==D&&(r*=D,a*=D,h*=D,c*=D),1!==M&&(i*=M,n*=M,l*=M,f*=M),1!==A&&(e*=A,s*=A,o*=A,u*=A),(_||z)&&(_&&(L+=r*-_,F+=a*-_,X+=h*-_+_),z&&(L+=S.xOrigin-(S.xOrigin*e+S.yOrigin*i)+S.xOffset,F+=S.yOrigin-(S.xOrigin*s+S.yOrigin*n)+S.yOffset),d>L&&L>-d&&(L=w),d>F&&F>-d&&(F=w),d>X&&X>-d&&(X=0)),x=S.xPercent||S.yPercent?"translate("+S.xPercent+"%,"+S.yPercent+"%) matrix3d(":"matrix3d(",x+=(d>e&&e>-d?w:e)+T+(d>s&&s>-d?w:s)+T+(d>o&&o>-d?w:o),x+=T+(d>u&&u>-d?w:u)+T+(d>i&&i>-d?w:i)+T+(d>n&&n>-d?w:n),C||R?(x+=T+(d>l&&l>-d?w:l)+T+(d>f&&f>-d?w:f)+T+(d>r&&r>-d?w:r),x+=T+(d>a&&a>-d?w:a)+T+(d>h&&h>-d?w:h)+T+(d>c&&c>-d?w:c)+T):x+=",0,0,0,0,1,0,",x+=L+T+F+T+X+T+(B?1+-X/B:1)+")",O[be]=x};h=ke.prototype,h.x=h.y=h.z=h.skewX=h.skewY=h.rotation=h.rotationX=h.rotationY=h.zOrigin=h.xPercent=h.yPercent=h.xOffset=h.yOffset=0,h.scaleX=h.scaleY=h.scaleZ=1,ye("transform,scale,scaleX,scaleY,scaleZ,x,y,z,rotation,rotationX,rotationY,rotationZ,skewX,skewY,shortRotation,shortRotationX,shortRotationY,shortRotationZ,transformOrigin,svgOrigin,transformPerspective,directionalRotation,parseTransform,force3D,skewType,xPercent,yPercent,smoothOrigin",{parser:function(t,e,i,r,n,o,l){if(r._lastParsedTransform===l)return n;r._lastParsedTransform=l;var h,u,f,c,p,_,d,m,g,v=t._gsTransform,y=r._transform=Xe(t,s,!0,l.parseTransform),x=t.style,T=1e-6,w=we.length,b=l,P={},S="transformOrigin";if("string"==typeof b.transform&&be)f=B.style,f[be]=b.transform,f.display="block",f.position="absolute",X.body.appendChild(B),h=Xe(B,null,!1),X.body.removeChild(B),null!=b.xPercent&&(h.xPercent=ne(b.xPercent,y.xPercent)),null!=b.yPercent&&(h.yPercent=ne(b.yPercent,y.yPercent));else if("object"==typeof b){if(h={scaleX:ne(null!=b.scaleX?b.scaleX:b.scale,y.scaleX),scaleY:ne(null!=b.scaleY?b.scaleY:b.scale,y.scaleY),scaleZ:ne(b.scaleZ,y.scaleZ),x:ne(b.x,y.x),y:ne(b.y,y.y),z:ne(b.z,y.z),xPercent:ne(b.xPercent,y.xPercent),yPercent:ne(b.yPercent,y.yPercent),perspective:ne(b.transformPerspective,y.perspective)},d=b.directionalRotation,null!=d)if("object"==typeof d)for(f in d)b[f]=d[f];else b.rotation=d;"string"==typeof b.x&&-1!==b.x.indexOf("%")&&(h.x=0,h.xPercent=ne(b.x,y.xPercent)),"string"==typeof b.y&&-1!==b.y.indexOf("%")&&(h.y=0,h.yPercent=ne(b.y,y.yPercent)),h.rotation=ae("rotation"in b?b.rotation:"shortRotation"in b?b.shortRotation+"_short":"rotationZ"in b?b.rotationZ:y.rotation,y.rotation,"rotation",P),Oe&&(h.rotationX=ae("rotationX"in b?b.rotationX:"shortRotationX"in b?b.shortRotationX+"_short":y.rotationX||0,y.rotationX,"rotationX",P),h.rotationY=ae("rotationY"in b?b.rotationY:"shortRotationY"in b?b.shortRotationY+"_short":y.rotationY||0,y.rotationY,"rotationY",P)),h.skewX=null==b.skewX?y.skewX:ae(b.skewX,y.skewX),h.skewY=null==b.skewY?y.skewY:ae(b.skewY,y.skewY),(u=h.skewY-y.skewY)&&(h.skewX+=u,h.rotation+=u)}for(Oe&&null!=b.force3D&&(y.force3D=b.force3D,_=!0),y.skewType=b.skewType||y.skewType||a.defaultSkewType,p=y.force3D||y.z||y.rotationX||y.rotationY||h.z||h.rotationX||h.rotationY||h.perspective,p||null==b.scale||(h.scaleZ=1);--w>-1;)i=we[w],c=h[i]-y[i],(c>T||-T>c||null!=b[i]||null!=F[i])&&(_=!0,n=new _e(y,i,y[i],c,n),i in P&&(n.e=P[i]),n.xs0=0,n.plugin=o,r._overwriteProps.push(n.n));return c=b.transformOrigin,y.svg&&(c||b.svgOrigin)&&(m=y.xOffset,g=y.yOffset,De(t,re(c),h,b.svgOrigin,b.smoothOrigin),n=de(y,"xOrigin",(v?y:h).xOrigin,h.xOrigin,n,S),n=de(y,"yOrigin",(v?y:h).yOrigin,h.yOrigin,n,S),(m!==y.xOffset||g!==y.yOffset)&&(n=de(y,"xOffset",v?m:y.xOffset,y.xOffset,n,S),n=de(y,"yOffset",v?g:y.yOffset,y.yOffset,n,S)),c=Te?null:"0px 0px"),(c||Oe&&p&&y.zOrigin)&&(be?(_=!0,i=Se,c=(c||Q(t,i,s,!1,"50% 50%"))+"",n=new _e(x,i,0,0,n,-1,S),n.b=x[i],n.plugin=o,Oe?(f=y.zOrigin,c=c.split(" "),y.zOrigin=(c.length>2&&(0===f||"0px"!==c[2])?parseFloat(c[2]):f)||0,n.xs0=n.e=c[0]+" "+(c[1]||"50%")+" 0px",n=new _e(y,"zOrigin",0,0,n,-1,n.n),n.b=f,n.xs0=n.e=y.zOrigin):n.xs0=n.e=c):re(c+"",y)),_&&(r._transformType=y.svg&&Te||!p&&3!==this._transformType?2:3),n},prefix:!0}),ye("boxShadow",{defaultValue:"0px 0px 0px 0px #999",prefix:!0,color:!0,multi:!0,keyword:"inset"}),ye("borderRadius",{defaultValue:"0px",parser:function(t,e,i,n,a){e=this.format(e);var o,l,h,u,f,c,p,_,d,m,g,v,y,x,T,w,b=["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"],P=t.style;for(d=parseFloat(t.offsetWidth),m=parseFloat(t.offsetHeight),o=e.split(" "),l=0;b.length>l;l++)this.p.indexOf("border")&&(b[l]=q(b[l])),f=u=Q(t,b[l],s,!1,"0px"),-1!==f.indexOf(" ")&&(u=f.split(" "),f=u[0],u=u[1]),c=h=o[l],p=parseFloat(f),v=f.substr((p+"").length),y="="===c.charAt(1),y?(_=parseInt(c.charAt(0)+"1",10),c=c.substr(2),_*=parseFloat(c),g=c.substr((_+"").length-(0>_?1:0))||""):(_=parseFloat(c),g=c.substr((_+"").length)),""===g&&(g=r[i]||v),g!==v&&(x=Z(t,"borderLeft",p,v),T=Z(t,"borderTop",p,v),"%"===g?(f=100*(x/d)+"%",u=100*(T/m)+"%"):"em"===g?(w=Z(t,"borderLeft",1,"em"),f=x/w+"em",u=T/w+"em"):(f=x+"px",u=T+"px"),y&&(c=parseFloat(f)+_+g,h=parseFloat(u)+_+g)),a=me(P,b[l],f+" "+u,c+" "+h,!1,"0px",a);return a},prefix:!0,formatter:fe("0px 0px 0px 0px",!1,!0)}),ye("backgroundPosition",{defaultValue:"0 0",parser:function(t,e,i,r,n,a){var o,l,h,u,f,c,p="background-position",_=s||H(t,null),m=this.format((_?d?_.getPropertyValue(p+"-x")+" "+_.getPropertyValue(p+"-y"):_.getPropertyValue(p):t.currentStyle.backgroundPositionX+" "+t.currentStyle.backgroundPositionY)||"0 0"),g=this.format(e);if(-1!==m.indexOf("%")!=(-1!==g.indexOf("%"))&&(c=Q(t,"backgroundImage").replace(k,""),c&&"none"!==c)){for(o=m.split(" "),l=g.split(" "),E.setAttribute("src",c),h=2;--h>-1;)m=o[h],u=-1!==m.indexOf("%"),u!==(-1!==l[h].indexOf("%"))&&(f=0===h?t.offsetWidth-E.width:t.offsetHeight-E.height,o[h]=u?parseFloat(m)/100*f+"px":100*(parseFloat(m)/f)+"%");m=o.join(" ")}return this.parseComplex(t.style,m,g,n,a)},formatter:re}),ye("backgroundSize",{defaultValue:"0 0",formatter:re}),ye("perspective",{defaultValue:"0px",prefix:!0}),ye("perspectiveOrigin",{defaultValue:"50% 50%",prefix:!0}),ye("transformStyle",{prefix:!0}),ye("backfaceVisibility",{prefix:!0}),ye("userSelect",{prefix:!0}),ye("margin",{parser:ce("marginTop,marginRight,marginBottom,marginLeft")}),ye("padding",{parser:ce("paddingTop,paddingRight,paddingBottom,paddingLeft")}),ye("clip",{defaultValue:"rect(0px,0px,0px,0px)",parser:function(t,e,i,r,n,a){var o,l,h;return 9>d?(l=t.currentStyle,h=8>d?" ":",",o="rect("+l.clipTop+h+l.clipRight+h+l.clipBottom+h+l.clipLeft+")",e=this.format(e).split(",").join(h)):(o=this.format(Q(t,this.p,s,!1,this.dflt)),e=this.format(e)),this.parseComplex(t.style,o,e,n,a)}}),ye("textShadow",{defaultValue:"0px 0px 0px #999",color:!0,multi:!0}),ye("autoRound,strictUnits",{parser:function(t,e,i,r,s){return s}}),ye("border",{defaultValue:"0px solid #000",parser:function(t,e,i,r,n,a){return this.parseComplex(t.style,this.format(Q(t,"borderTopWidth",s,!1,"0px")+" "+Q(t,"borderTopStyle",s,!1,"solid")+" "+Q(t,"borderTopColor",s,!1,"#000")),this.format(e),n,a)},color:!0,formatter:function(t){var e=t.split(" ");return e[0]+" "+(e[1]||"solid")+" "+(t.match(ue)||["#000"])[0]}}),ye("borderWidth",{parser:ce("borderTopWidth,borderRightWidth,borderBottomWidth,borderLeftWidth")}),ye("float,cssFloat,styleFloat",{parser:function(t,e,i,r,s){var n=t.style,a="cssFloat"in n?"cssFloat":"styleFloat";return new _e(n,a,0,0,s,-1,i,!1,0,n[a],e)}});var Ee=function(t){var e,i=this.t,r=i.filter||Q(this.data,"filter")||"",s=0|this.s+this.c*t;100===s&&(-1===r.indexOf("atrix(")&&-1===r.indexOf("radient(")&&-1===r.indexOf("oader(")?(i.removeAttribute("filter"),e=!Q(this.data,"filter")):(i.filter=r.replace(b,""),e=!0)),e||(this.xn1&&(i.filter=r=r||"alpha(opacity="+s+")"),-1===r.indexOf("pacity")?0===s&&this.xn1||(i.filter=r+" alpha(opacity="+s+")"):i.filter=r.replace(T,"opacity="+s))};ye("opacity,alpha,autoAlpha",{defaultValue:"1",parser:function(t,e,i,r,n,a){var o=parseFloat(Q(t,"opacity",s,!1,"1")),l=t.style,h="autoAlpha"===i;return"string"==typeof e&&"="===e.charAt(1)&&(e=("-"===e.charAt(0)?-1:1)*parseFloat(e.substr(2))+o),h&&1===o&&"hidden"===Q(t,"visibility",s)&&0!==e&&(o=0),W?n=new _e(l,"opacity",o,e-o,n):(n=new _e(l,"opacity",100*o,100*(e-o),n),n.xn1=h?1:0,l.zoom=1,n.type=2,n.b="alpha(opacity="+n.s+")",n.e="alpha(opacity="+(n.s+n.c)+")",n.data=t,n.plugin=a,n.setRatio=Ee),h&&(n=new _e(l,"visibility",0,0,n,-1,null,!1,0,0!==o?"inherit":"hidden",0===e?"hidden":"inherit"),n.xs0="inherit",r._overwriteProps.push(n.n),r._overwriteProps.push(i)),n}});var Ie=function(t,e){e&&(t.removeProperty?(("ms"===e.substr(0,2)||"webkit"===e.substr(0,6))&&(e="-"+e),t.removeProperty(e.replace(S,"-$1").toLowerCase())):t.removeAttribute(e))},Ye=function(t){if(this.t._gsClassPT=this,1===t||0===t){this.t.setAttribute("class",0===t?this.b:this.e);for(var e=this.data,i=this.t.style;e;)e.v?i[e.p]=e.v:Ie(i,e.p),e=e._next;1===t&&this.t._gsClassPT===this&&(this.t._gsClassPT=null)}else this.t.getAttribute("class")!==this.e&&this.t.setAttribute("class",this.e)};ye("className",{parser:function(t,e,r,n,a,o,l){var h,u,f,c,p,_=t.getAttribute("class")||"",d=t.style.cssText;if(a=n._classNamePT=new _e(t,r,0,0,a,2),a.setRatio=Ye,a.pr=-11,i=!0,a.b=_,u=K(t,s),f=t._gsClassPT){for(c={},p=f.data;p;)c[p.p]=1,p=p._next;f.setRatio(1)}return t._gsClassPT=a,a.e="="!==e.charAt(1)?e:_.replace(RegExp("\\s*\\b"+e.substr(2)+"\\b"),"")+("+"===e.charAt(0)?" "+e.substr(2):""),t.setAttribute("class",a.e),h=J(t,u,K(t),l,c),t.setAttribute("class",_),a.data=h.firstMPT,t.style.cssText=d,a=a.xfirst=n.parse(t,h.difs,a,o)}});var We=function(t){if((1===t||0===t)&&this.data._totalTime===this.data._totalDuration&&"isFromStart"!==this.data.data){var e,i,r,s,n,a=this.t.style,o=l.transform.parse;if("all"===this.e)a.cssText="",s=!0;else for(e=this.e.split(" ").join("").split(","),r=e.length;--r>-1;)i=e[r],l[i]&&(l[i].parse===o?s=!0:i="transformOrigin"===i?Se:l[i].p),Ie(a,i);s&&(Ie(a,be),n=this.t._gsTransform,n&&(n.svg&&this.t.removeAttribute("data-svg-origin"),delete this.t._gsTransform))}};for(ye("clearProps",{parser:function(t,e,r,s,n){return n=new _e(t,r,0,0,n,2),n.setRatio=We,n.e=e,n.pr=-10,n.data=s._tween,i=!0,n}}),h="bezier,throwProps,physicsProps,physics2D".split(","),ge=h.length;ge--;)xe(h[ge]);h=a.prototype,h._firstPT=h._lastParsedTransform=h._transform=null,h._onInitTween=function(t,e,o){if(!t.nodeType)return!1;this._target=t,this._tween=o,this._vars=e,u=e.autoRound,i=!1,r=e.suffixMap||a.suffixMap,s=H(t,""),n=this._overwriteProps; +var h,p,d,m,g,v,y,x,T,b=t.style;if(f&&""===b.zIndex&&(h=Q(t,"zIndex",s),("auto"===h||""===h)&&this._addLazySet(b,"zIndex",0)),"string"==typeof e&&(m=b.cssText,h=K(t,s),b.cssText=m+";"+e,h=J(t,h,K(t)).difs,!W&&w.test(e)&&(h.opacity=parseFloat(RegExp.$1)),e=h,b.cssText=m),this._firstPT=p=e.className?l.className.parse(t,e.className,"className",this,null,null,e):this.parse(t,e,null),this._transformType){for(T=3===this._transformType,be?c&&(f=!0,""===b.zIndex&&(y=Q(t,"zIndex",s),("auto"===y||""===y)&&this._addLazySet(b,"zIndex",0)),_&&this._addLazySet(b,"WebkitBackfaceVisibility",this._vars.WebkitBackfaceVisibility||(T?"visible":"hidden"))):b.zoom=1,d=p;d&&d._next;)d=d._next;x=new _e(t,"transform",0,0,null,2),this._linkCSSP(x,null,d),x.setRatio=be?Be:ze,x.data=this._transform||Xe(t,s,!0),x.tween=o,x.pr=-1,n.pop()}if(i){for(;p;){for(v=p._next,d=m;d&&d.pr>p.pr;)d=d._next;(p._prev=d?d._prev:g)?p._prev._next=p:m=p,(p._next=d)?d._prev=p:g=p,p=v}this._firstPT=m}return!0},h.parse=function(t,e,i,n){var a,o,h,f,c,p,_,d,m,g,v=t.style;for(a in e)p=e[a],o=l[a],o?i=o.parse(t,p,a,this,i,n,e):(c=Q(t,a,s)+"",m="string"==typeof p,"color"===a||"fill"===a||"stroke"===a||-1!==a.indexOf("Color")||m&&P.test(p)?(m||(p=he(p),p=(p.length>3?"rgba(":"rgb(")+p.join(",")+")"),i=me(v,a,c,p,!0,"transparent",i,0,n)):!m||-1===p.indexOf(" ")&&-1===p.indexOf(",")?(h=parseFloat(c),_=h||0===h?c.substr((h+"").length):"",(""===c||"auto"===c)&&("width"===a||"height"===a?(h=ie(t,a,s),_="px"):"left"===a||"top"===a?(h=$(t,a,s),_="px"):(h="opacity"!==a?0:1,_="")),g=m&&"="===p.charAt(1),g?(f=parseInt(p.charAt(0)+"1",10),p=p.substr(2),f*=parseFloat(p),d=p.replace(x,"")):(f=parseFloat(p),d=m?p.replace(x,""):""),""===d&&(d=a in r?r[a]:_),p=f||0===f?(g?f+h:f)+d:e[a],_!==d&&""!==d&&(f||0===f)&&h&&(h=Z(t,a,h,_),"%"===d?(h/=Z(t,a,100,"%")/100,e.strictUnits!==!0&&(c=h+"%")):"em"===d?h/=Z(t,a,1,"em"):"px"!==d&&(f=Z(t,a,f,d),d="px"),g&&(f||0===f)&&(p=f+h+d)),g&&(f+=h),!h&&0!==h||!f&&0!==f?void 0!==v[a]&&(p||"NaN"!=p+""&&null!=p)?(i=new _e(v,a,f||h||0,0,i,-1,a,!1,0,c,p),i.xs0="none"!==p||"display"!==a&&-1===a.indexOf("Style")?p:c):j("invalid "+a+" tween value: "+e[a]):(i=new _e(v,a,h,f-h,i,0,a,u!==!1&&("px"===d||"zIndex"===a),0,c,p),i.xs0=d)):i=me(v,a,c,p,!0,null,i,0,n)),n&&i&&!i.plugin&&(i.plugin=n);return i},h.setRatio=function(t){var e,i,r,s=this._firstPT,n=1e-6;if(1!==t||this._tween._time!==this._tween._duration&&0!==this._tween._time)if(t||this._tween._time!==this._tween._duration&&0!==this._tween._time||this._tween._rawPrevTime===-1e-6)for(;s;){if(e=s.c*t+s.s,s.r?e=Math.round(e):n>e&&e>-n&&(e=0),s.type)if(1===s.type)if(r=s.l,2===r)s.t[s.p]=s.xs0+e+s.xs1+s.xn1+s.xs2;else if(3===r)s.t[s.p]=s.xs0+e+s.xs1+s.xn1+s.xs2+s.xn2+s.xs3;else if(4===r)s.t[s.p]=s.xs0+e+s.xs1+s.xn1+s.xs2+s.xn2+s.xs3+s.xn3+s.xs4;else if(5===r)s.t[s.p]=s.xs0+e+s.xs1+s.xn1+s.xs2+s.xn2+s.xs3+s.xn3+s.xs4+s.xn4+s.xs5;else{for(i=s.xs0+e+s.xs1,r=1;s.l>r;r++)i+=s["xn"+r]+s["xs"+(r+1)];s.t[s.p]=i}else-1===s.type?s.t[s.p]=s.xs0:s.setRatio&&s.setRatio(t);else s.t[s.p]=e+s.xs0;s=s._next}else for(;s;)2!==s.type?s.t[s.p]=s.b:s.setRatio(t),s=s._next;else for(;s;){if(2!==s.type)if(s.r&&-1!==s.type)if(e=Math.round(s.s+s.c),s.type){if(1===s.type){for(r=s.l,i=s.xs0+e+s.xs1,r=1;s.l>r;r++)i+=s["xn"+r]+s["xs"+(r+1)];s.t[s.p]=i}}else s.t[s.p]=e+s.xs0;else s.t[s.p]=s.e;else s.setRatio(t);s=s._next}},h._enableTransforms=function(t){this._transform=this._transform||Xe(this._target,s,!0),this._transformType=this._transform.svg&&Te||!t&&3!==this._transformType?2:3};var Ve=function(){this.t[this.p]=this.e,this.data._linkCSSP(this,this._next,null,!0)};h._addLazySet=function(t,e,i){var r=this._firstPT=new _e(t,e,0,0,this._firstPT,2);r.e=i,r.setRatio=Ve,r.data=this},h._linkCSSP=function(t,e,i,r){return t&&(e&&(e._prev=t),t._next&&(t._next._prev=t._prev),t._prev?t._prev._next=t._next:this._firstPT===t&&(this._firstPT=t._next,r=!0),i?i._next=t:r||null!==this._firstPT||(this._firstPT=t),t._next=e,t._prev=i),t},h._kill=function(e){var i,r,s,n=e;if(e.autoAlpha||e.alpha){n={};for(r in e)n[r]=e[r];n.opacity=1,n.autoAlpha&&(n.visibility=1)}return e.className&&(i=this._classNamePT)&&(s=i.xfirst,s&&s._prev?this._linkCSSP(s._prev,i._next,s._prev._prev):s===this._firstPT&&(this._firstPT=i._next),i._next&&this._linkCSSP(i._next,i._next._next,s._prev),this._classNamePT=null),t.prototype._kill.call(this,n)};var je=function(t,e,i){var r,s,n,a;if(t.slice)for(s=t.length;--s>-1;)je(t[s],e,i);else for(r=t.childNodes,s=r.length;--s>-1;)n=r[s],a=n.type,n.style&&(e.push(K(n)),i&&i.push(n)),1!==a&&9!==a&&11!==a||!n.childNodes.length||je(n,e,i)};return a.cascadeTo=function(t,i,r){var s,n,a,o,l=e.to(t,i,r),h=[l],u=[],f=[],c=[],p=e._internals.reservedProps;for(t=l._targets||l.target,je(t,u,c),l.render(i,!0,!0),je(t,f),l.render(0,!0,!0),l._enabled(!0),s=c.length;--s>-1;)if(n=J(c[s],u[s],f[s]),n.firstMPT){n=n.difs;for(a in r)p[a]&&(n[a]=r[a]);o={};for(a in n)o[a]=u[s][a];h.push(e.fromTo(c[s],i,o,n))}return h},t.activate([a]),a},!0)}),_gsScope._gsDefine&&_gsScope._gsQueue.pop()(),function(t){"use strict";var e=function(){return(_gsScope.GreenSockGlobals||_gsScope)[t]};"function"==typeof define&&define.amd?define(["TweenLite"],e):"undefined"!=typeof module&&module.exports&&(require("../TweenLite.js"),module.exports=e())}("CSSPlugin"); + +/*! + * VERSION: beta 0.3.3 + * DATE: 2014-10-29 + * UPDATES AND DOCS AT: http://greensock.com + * + * @license Copyright (c) 2008-2015, GreenSock. All rights reserved. + * SplitText is a Club GreenSock membership benefit; You must have a valid membership to use + * this code without violating the terms of use. Visit http://www.greensock.com/club/ to sign up or get more details. + * This work is subject to the software agreement that was issued with your membership. + * + * @author: Jack Doyle, jack@greensock.com + */ +var _gsScope="undefined"!=typeof module&&module.exports&&"undefined"!=typeof global?global:this||window;(function(t){"use strict";var e=t.GreenSockGlobals||t,i=function(t){var i,s=t.split("."),r=e;for(i=0;s.length>i;i++)r[s[i]]=r=r[s[i]]||{};return r},s=i("com.greensock.utils"),r=function(t){var e=t.nodeType,i="";if(1===e||9===e||11===e){if("string"==typeof t.textContent)return t.textContent;for(t=t.firstChild;t;t=t.nextSibling)i+=r(t)}else if(3===e||4===e)return t.nodeValue;return i},n=document,a=n.defaultView?n.defaultView.getComputedStyle:function(){},o=/([A-Z])/g,h=function(t,e,i,s){var r;return(i=i||a(t,null))?(t=i.getPropertyValue(e.replace(o,"-$1").toLowerCase()),r=t||i.length?t:i[e]):t.currentStyle&&(i=t.currentStyle,r=i[e]),s?r:parseInt(r,10)||0},l=function(t){return t.length&&t[0]&&(t[0].nodeType&&t[0].style&&!t.nodeType||t[0].length&&t[0][0])?!0:!1},_=function(t){var e,i,s,r=[],n=t.length;for(e=0;n>e;e++)if(i=t[e],l(i))for(s=i.length,s=0;i.length>s;s++)r.push(i[s]);else r.push(i);return r},u=")eefec303079ad17405c",c=/(?:
        ||
        )/gi,f=n.all&&!n.addEventListener,p="
        ":">")}},d=s.SplitText=e.SplitText=function(t,e){if("string"==typeof t&&(t=d.selector(t)),!t)throw"cannot split a null element.";this.elements=l(t)?_(t):[t],this.chars=[],this.words=[],this.lines=[],this._originals=[],this.vars=e||{},this.split(e)},g=function(t,e,i){var s=t.nodeType;if(1===s||9===s||11===s)for(t=t.firstChild;t;t=t.nextSibling)g(t,e,i);else(3===s||4===s)&&(t.nodeValue=t.nodeValue.split(e).join(i))},v=function(t,e){for(var i=e.length;--i>-1;)t.push(e[i])},y=function(t,e,i,s,o){c.test(t.innerHTML)&&(t.innerHTML=t.innerHTML.replace(c,u));var l,_,f,p,d,y,T,w,b,x,P,S,k,C,R=r(t),O=e.type||e.split||"chars,words,lines",A=-1!==O.indexOf("lines")?[]:null,D=-1!==O.indexOf("words"),M=-1!==O.indexOf("chars"),L="absolute"===e.position||e.absolute===!0,z=L?"­ ":" ",I=-999,E=a(t),N=h(t,"paddingLeft",E),F=h(t,"borderBottomWidth",E)+h(t,"borderTopWidth",E),B=h(t,"borderLeftWidth",E)+h(t,"borderRightWidth",E),X=h(t,"paddingTop",E)+h(t,"paddingBottom",E),j=h(t,"paddingLeft",E)+h(t,"paddingRight",E),U=h(t,"textAlign",E,!0),Y=t.clientHeight,q=t.clientWidth,V="
        ",G=m(e.wordsClass),Q=m(e.charsClass),W=-1!==(e.linesClass||"").indexOf("++"),Z=e.linesClass,H=-1!==R.indexOf("<"),$=!0,K=[],J=[],te=[];for(W&&(Z=Z.split("++").join("")),H&&(R=R.split("<").join("{{LT}}")),l=R.length,p=G(),d=0;l>d;d++)if(T=R.charAt(d),")"===T&&R.substr(d,20)===u)p+=($?V:"")+"
        ",$=!1,d!==l-20&&R.substr(d+20,20)!==u&&(p+=" "+G(),$=!0),d+=19;else if(" "===T&&" "!==R.charAt(d-1)&&d!==l-1&&R.substr(d-20,20)!==u){for(p+=$?V:"",$=!1;" "===R.charAt(d+1);)p+=z,d++;(")"!==R.charAt(d+1)||R.substr(d+1,20)!==u)&&(p+=z+G(),$=!0)}else p+=M&&" "!==T?Q()+T+"
        ":T;for(t.innerHTML=p+($?V:""),H&&g(t,"{{LT}}","<"),y=t.getElementsByTagName("*"),l=y.length,w=[],d=0;l>d;d++)w[d]=y[d];if(A||L)for(d=0;l>d;d++)b=w[d],f=b.parentNode===t,(f||L||M&&!D)&&(x=b.offsetTop,A&&f&&x!==I&&"BR"!==b.nodeName&&(_=[],A.push(_),I=x),L&&(b._x=b.offsetLeft,b._y=x,b._w=b.offsetWidth,b._h=b.offsetHeight),A&&(D!==f&&M||(_.push(b),b._x-=N),f&&d&&(w[d-1]._wordEnd=!0),"BR"===b.nodeName&&b.nextSibling&&"BR"===b.nextSibling.nodeName&&A.push([])));for(d=0;l>d;d++)b=w[d],f=b.parentNode===t,"BR"!==b.nodeName?(L&&(S=b.style,D||f||(b._x+=b.parentNode._x,b._y+=b.parentNode._y),S.left=b._x+"px",S.top=b._y+"px",S.position="absolute",S.display="block",S.width=b._w+1+"px",S.height=b._h+"px"),D?f&&""!==b.innerHTML?J.push(b):M&&K.push(b):f?(t.removeChild(b),w.splice(d--,1),l--):!f&&M&&(x=!A&&!L&&b.nextSibling,t.appendChild(b),x||t.appendChild(n.createTextNode(" ")),K.push(b))):A||L?(t.removeChild(b),w.splice(d--,1),l--):D||t.appendChild(b);if(A){for(L&&(P=n.createElement("div"),t.appendChild(P),k=P.offsetWidth+"px",x=P.offsetParent===t?0:t.offsetLeft,t.removeChild(P)),S=t.style.cssText,t.style.cssText="display:none;";t.firstChild;)t.removeChild(t.firstChild);for(C=!L||!D&&!M,d=0;A.length>d;d++){for(_=A[d],P=n.createElement("div"),P.style.cssText="display:block;text-align:"+U+";position:"+(L?"absolute;":"relative;"),Z&&(P.className=Z+(W?d+1:"")),te.push(P),l=_.length,y=0;l>y;y++)"BR"!==_[y].nodeName&&(b=_[y],P.appendChild(b),C&&(b._wordEnd||D)&&P.appendChild(n.createTextNode(" ")),L&&(0===y&&(P.style.top=b._y+"px",P.style.left=N+x+"px"),b.style.top="0px",x&&(b.style.left=b._x-x+"px")));0===l&&(P.innerHTML=" "),D||M||(P.innerHTML=r(P).split(String.fromCharCode(160)).join(" ")),L&&(P.style.width=k,P.style.height=b._h+"px"),t.appendChild(P)}t.style.cssText=S}L&&(Y>t.clientHeight&&(t.style.height=Y-X+"px",Y>t.clientHeight&&(t.style.height=Y+F+"px")),q>t.clientWidth&&(t.style.width=q-j+"px",q>t.clientWidth&&(t.style.width=q+B+"px"))),v(i,K),v(s,J),v(o,te)},T=d.prototype;T.split=function(t){this.isSplit&&this.revert(),this.vars=t||this.vars,this._originals.length=this.chars.length=this.words.length=this.lines.length=0;for(var e=this.elements.length;--e>-1;)this._originals[e]=this.elements[e].innerHTML,y(this.elements[e],this.vars,this.chars,this.words,this.lines);return this.chars.reverse(),this.words.reverse(),this.lines.reverse(),this.isSplit=!0,this},T.revert=function(){if(!this._originals)throw"revert() call wasn't scoped properly.";for(var t=this._originals.length;--t>-1;)this.elements[t].innerHTML=this._originals[t];return this.chars=[],this.words=[],this.lines=[],this.isSplit=!1,this},d.selector=t.$||t.jQuery||function(e){var i=t.$||t.jQuery;return i?(d.selector=i,i(e)):"undefined"==typeof document?e:document.querySelectorAll?document.querySelectorAll(e):document.getElementById("#"===e.charAt(0)?e.substr(1):e)},d.version="0.3.3"})(_gsScope),function(t){"use strict";var e=function(){return(_gsScope.GreenSockGlobals||_gsScope)[t]};"function"==typeof define&&define.amd?define(["TweenLite"],e):"undefined"!=typeof module&&module.exports&&(module.exports=e())}("SplitText"); + +try{ + window.GreenSockGlobals = null; + window._gsQueue = null; + window._gsDefine = null; + + delete(window.GreenSockGlobals); + delete(window._gsQueue); + delete(window._gsDefine); + } catch(e) {} + +try{ + window.GreenSockGlobals = oldgs; + window._gsQueue = oldgs_queue; + } catch(e) {} + +if (window.tplogs==true) + try { + console.groupEnd(); + } catch(e) {} + +(function(e,t){ + e.waitForImages={hasImageProperties:["backgroundImage","listStyleImage","borderImage","borderCornerImage"]};e.expr[":"].uncached=function(t){var n=document.createElement("img");n.src=t.src;return e(t).is('img[src!=""]')&&!n.complete};e.fn.waitForImages=function(t,n,r){if(e.isPlainObject(arguments[0])){n=t.each;r=t.waitForAll;t=t.finished}t=t||e.noop;n=n||e.noop;r=!!r;if(!e.isFunction(t)||!e.isFunction(n)){throw new TypeError("An invalid callback was supplied.")}return this.each(function(){var i=e(this),s=[];if(r){var o=e.waitForImages.hasImageProperties||[],u=/url\((['"]?)(.*?)\1\)/g;i.find("*").each(function(){var t=e(this);if(t.is("img:uncached")){s.push({src:t.attr("src"),element:t[0]})}e.each(o,function(e,n){var r=t.css(n);if(!r){return true}var i;while(i=u.exec(r)){s.push({src:i[2],element:t[0]})}})})}else{i.find("img:uncached").each(function(){s.push({src:this.src,element:this})})}var f=s.length,l=0;if(f==0){t.call(i[0])}e.each(s,function(r,s){var o=new Image;e(o).bind("load error",function(e){l++;n.call(s.element,l,f,e.type=="load");if(l==f){t.call(i[0]);return false}});o.src=s.src})})}; +})(jQuery) diff --git a/plugins/revslider/public/index.php b/plugins/revslider/public/index.php new file mode 100644 index 0000000..e69de29 diff --git a/plugins/revslider/public/revslider-front.class.php b/plugins/revslider/public/revslider-front.class.php new file mode 100644 index 0000000..18c238f --- /dev/null +++ b/plugins/revslider/public/revslider-front.class.php @@ -0,0 +1,434 @@ + + * @link http://www.themepunch.com/ + * @copyright 2015 ThemePunch + */ + +if( !defined( 'ABSPATH') ) exit(); + +class RevSliderFront extends RevSliderBaseFront{ + + /* Provider: - * + * + * the constructor + */ + public function __construct(){ + + parent::__construct($this); + + //set table names + RevSliderGlobals::$table_sliders = self::$table_prefix.RevSliderGlobals::TABLE_SLIDERS_NAME; + RevSliderGlobals::$table_slides = self::$table_prefix.RevSliderGlobals::TABLE_SLIDES_NAME; + RevSliderGlobals::$table_static_slides = self::$table_prefix.RevSliderGlobals::TABLE_STATIC_SLIDES_NAME; + RevSliderGlobals::$table_settings = self::$table_prefix.RevSliderGlobals::TABLE_SETTINGS_NAME; + RevSliderGlobals::$table_css = self::$table_prefix.RevSliderGlobals::TABLE_CSS_NAME; + RevSliderGlobals::$table_layer_anims = self::$table_prefix.RevSliderGlobals::TABLE_LAYER_ANIMS_NAME; + RevSliderGlobals::$table_navigation = self::$table_prefix.RevSliderGlobals::TABLE_NAVIGATION_NAME; + + add_filter('punchfonts_modify_url', array('RevSliderFront', 'modify_punch_url')); + + add_action('wp_enqueue_scripts', array($this, 'enqueue_styles')); + } + + + /* Provider: - * + * + * a must function. you can not use it, but the function must stay there! + */ + public static function onAddScripts(){ + global $wp_version; + + $style_pre = ''; + $style_post = ''; + if($wp_version < 3.7){ + $style_pre = ''; + } + + $operations = new RevSliderOperations(); + $arrValues = $operations->getGeneralSettingsValues(); + + $includesGlobally = RevSliderFunctions::getVal($arrValues, "includes_globally","on"); + $includesFooter = RevSliderFunctions::getVal($arrValues, "js_to_footer","off"); + $strPutIn = RevSliderFunctions::getVal($arrValues, "pages_for_includes"); + $isPutIn = RevSliderOutput::isPutIn($strPutIn,true); + + //put the includes only on pages with active widget or shortcode + // if the put in match, then include them always (ignore this if) + if($isPutIn == false && $includesGlobally == "off"){ + $isWidgetActive = is_active_widget( false, false, "rev-slider-widget", true ); + $hasShortcode = RevSliderFunctionsWP::hasShortcode("rev_slider"); + + if($isWidgetActive == false && $hasShortcode == false) + return(false); + } + + wp_enqueue_style('rs-plugin-settings', RS_PLUGIN_URL .'public/assets/css/settings.css', array(), RevSliderGlobals::SLIDER_REVISION); + + $custom_css = RevSliderOperations::getStaticCss(); + $custom_css = RevSliderCssParser::compress_css($custom_css); + wp_add_inline_style( 'rs-plugin-settings', $style_pre.$custom_css.$style_post ); + + $setBase = (is_ssl()) ? "https://" : "http://"; + + wp_enqueue_script(array('jquery')); + + //add icon sets + //wp_register_style('rs-icon-set-fa-icon-', RS_PLUGIN_URL .'public/assets/fonts/font-awesome/css/font-awesome.css', array(), RevSliderGlobals::SLIDER_REVISION); + //wp_register_style('rs-icon-set-pe-7s-', RS_PLUGIN_URL .'public/assets/fonts/pe-icon-7-stroke/css/pe-icon-7-stroke.css', array(), RevSliderGlobals::SLIDER_REVISION); + + + if($includesFooter == "off"){ + + $waitfor = array('jquery'); + + $enable_logs = RevSliderFunctions::getVal($arrValues, "enable_logs",'off'); + + if($enable_logs == 'on'){ + wp_enqueue_script('enable-logs', RS_PLUGIN_URL .'public/assets/js/jquery.themepunch.enablelog.js', $waitfor, RevSliderGlobals::SLIDER_REVISION); + $waitfor[] = 'enable-logs'; + } + + wp_enqueue_script('tp-tools', RS_PLUGIN_URL .'public/assets/js/jquery.themepunch.tools.min.js', $waitfor, RevSliderGlobals::SLIDER_REVISION); + wp_enqueue_script('revmin', RS_PLUGIN_URL .'public/assets/js/jquery.themepunch.revolution.min.js', 'tp-tools', RevSliderGlobals::SLIDER_REVISION); + + }else{ + //put javascript to footer + add_action('wp_footer', array('RevSliderFront', 'putJavascript')); + } + + add_action('wp_head', array('RevSliderFront', 'add_meta_generator')); + add_action("wp_footer", array('RevSliderFront',"load_icon_fonts") ); + + // Async JS Loading + $js_defer = RevSliderBase::getVar($arrValues, 'js_defer', 'off'); + if($js_defer!='off') add_filter('clean_url', array('RevSliderFront', 'add_defer_forscript'), 11, 1); + } + + + /* Provider: - * + * + * create db tables + */ + public static function createDBTables(){ + self::createTable(RevSliderGlobals::TABLE_SLIDERS_NAME); + self::createTable(RevSliderGlobals::TABLE_SLIDES_NAME); + self::createTable(RevSliderGlobals::TABLE_STATIC_SLIDES_NAME); + self::createTable(RevSliderGlobals::TABLE_CSS_NAME); + self::createTable(RevSliderGlobals::TABLE_LAYER_ANIMS_NAME); + self::createTable(RevSliderGlobals::TABLE_NAVIGATION_NAME); + + self::updateTables(); + } + + public static function load_icon_fonts(){ + global $fa_icon_var,$pe_7s_var; + if($fa_icon_var) echo ""; + if($pe_7s_var) echo ""; + } + + public static function updateTables(){ + $cur_ver = get_option('revslider_table_version', '1.0.0'); + if(version_compare($cur_ver, '1.0.1', '<')){ //add missing settings field, for new creates lines in slide editor for example + require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); + + $tableName = RevSliderGlobals::TABLE_SLIDES_NAME; + $sql = "CREATE TABLE " .self::$table_prefix.$tableName ." ( + id int(9) NOT NULL AUTO_INCREMENT, + slider_id int(9) NOT NULL, + slide_order int not NULL, + params text NOT NULL, + layers text NOT NULL, + settings text NOT NULL, + UNIQUE KEY id (id) + );"; + dbDelta($sql); + + $tableName = RevSliderGlobals::TABLE_STATIC_SLIDES_NAME; + $sql = "CREATE TABLE " .self::$table_prefix.$tableName ." ( + id int(9) NOT NULL AUTO_INCREMENT, + slider_id int(9) NOT NULL, + params text NOT NULL, + layers text NOT NULL, + settings text NOT NULL, + UNIQUE KEY id (id) + );"; + dbDelta($sql); + + update_option('revslider_table_version', '1.0.1'); + $cur_ver = '1.0.1'; + } + + if(version_compare($cur_ver, '1.0.2', '<')){ + require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); + $tableName = RevSliderGlobals::TABLE_SLIDERS_NAME; + + $sql = "CREATE TABLE " .self::$table_prefix.$tableName ." ( + id int(9) NOT NULL AUTO_INCREMENT, + title tinytext NOT NULL, + alias tinytext, + params text NOT NULL, + settings text NULL, + UNIQUE KEY id (id) + );"; + dbDelta($sql); + + update_option('revslider_table_version', '1.0.2'); + $cur_ver = '1.0.2'; + } + + if(version_compare($cur_ver, '1.0.3', '<')){ + require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); + $tableName = RevSliderGlobals::TABLE_CSS_NAME; + + $sql = "CREATE TABLE " .self::$table_prefix.$tableName ." ( + id int(9) NOT NULL AUTO_INCREMENT, + handle TEXT NOT NULL, + settings TEXT, + hover TEXT, + advanced MEDIUMTEXT, + params TEXT NOT NULL, + UNIQUE KEY id (id) + );"; + dbDelta($sql); + + update_option('revslider_table_version', '1.0.3'); + $cur_ver = '1.0.3'; + } + + if(version_compare($cur_ver, '1.0.4', '<')){ + require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); + + $sql = "CREATE TABLE " .self::$table_prefix.RevSliderGlobals::TABLE_SLIDERS_NAME ." ( + UNIQUE KEY id (id) + );"; + dbDelta($sql); + $sql = "CREATE TABLE " .self::$table_prefix.RevSliderGlobals::TABLE_SLIDES_NAME ." ( + UNIQUE KEY id (id) + );"; + dbDelta($sql); + $sql = "CREATE TABLE " .self::$table_prefix.RevSliderGlobals::TABLE_STATIC_SLIDES_NAME ." ( + UNIQUE KEY id (id) + );"; + dbDelta($sql); + $sql = "CREATE TABLE " .self::$table_prefix.RevSliderGlobals::TABLE_CSS_NAME ." ( + UNIQUE KEY id (id) + );"; + dbDelta($sql); + $sql = "CREATE TABLE " .self::$table_prefix.RevSliderGlobals::TABLE_LAYER_ANIMS_NAME ." ( + UNIQUE KEY id (id) + );"; + dbDelta($sql); + + update_option('revslider_table_version', '1.0.4'); + $cur_ver = '1.0.4'; + } + + if(version_compare($cur_ver, '1.0.5', '<')){ + require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); + + $sql = "CREATE TABLE " .self::$table_prefix.RevSliderGlobals::TABLE_SLIDERS_NAME ." ( + type VARCHAR(191) NOT NULL + params MEDIUMTEXT NOT NULL + );"; + dbDelta($sql); + $sql = "CREATE TABLE " .self::$table_prefix.RevSliderGlobals::TABLE_SLIDES_NAME ." ( + params MEDIUMTEXT NOT NULL, + layers MEDIUMTEXT NOT NULL + );"; + dbDelta($sql); + $sql = "CREATE TABLE " .self::$table_prefix.RevSliderGlobals::TABLE_STATIC_SLIDES_NAME ." ( + params MEDIUMTEXT NOT NULL, + layers MEDIUMTEXT NOT NULL + );"; + dbDelta($sql); + $sql = "CREATE TABLE " .self::$table_prefix.RevSliderGlobals::TABLE_LAYER_ANIMS_NAME ." ( + settings text NULL + );"; + dbDelta($sql); + + update_option('revslider_table_version', '1.0.5'); + $cur_ver = '1.0.5'; + } + + } + + + /* Provider: - * + * create tables + */ + public static function createTable($tableName){ + global $wpdb; + + $parseCssToDb = false; + + $checkForTablesOneTime = get_option('revslider_checktables', '0'); + + if($checkForTablesOneTime == '0'){ + update_option('revslider_checktables', '1'); + if(RevSliderFunctionsWP::isDBTableExists(self::$table_prefix.RevSliderGlobals::TABLE_CSS_NAME)){ //$wpdb->tables( 'global' ) + //check if database is empty + $result = $wpdb->get_row("SELECT COUNT( DISTINCT id ) AS NumberOfEntrys FROM ".self::$table_prefix.RevSliderGlobals::TABLE_CSS_NAME); + if($result->NumberOfEntrys == 0) $parseCssToDb = true; + } + } + + if($parseCssToDb){ + $RevSliderOperations = new RevSliderOperations(); + $RevSliderOperations->importCaptionsCssContentArray(); + $RevSliderOperations->moveOldCaptionsCss(); + } + + //if table exists - don't create it. + $tableRealName = self::$table_prefix.$tableName; + if(RevSliderFunctionsWP::isDBTableExists($tableRealName)) + return(false); + + switch($tableName){ + case RevSliderGlobals::TABLE_SLIDERS_NAME: + $sql = "CREATE TABLE " .self::$table_prefix.$tableName ." ( + id int(9) NOT NULL AUTO_INCREMENT, + title tinytext NOT NULL, + alias tinytext, + params MEDIUMTEXT NOT NULL, + UNIQUE KEY id (id) + );"; + break; + case RevSliderGlobals::TABLE_SLIDES_NAME: + $sql = "CREATE TABLE " .self::$table_prefix.$tableName ." ( + id int(9) NOT NULL AUTO_INCREMENT, + slider_id int(9) NOT NULL, + slide_order int not NULL, + params MEDIUMTEXT NOT NULL, + layers MEDIUMTEXT NOT NULL, + UNIQUE KEY id (id) + );"; + break; + case RevSliderGlobals::TABLE_STATIC_SLIDES_NAME: + $sql = "CREATE TABLE " .self::$table_prefix.$tableName ." ( + id int(9) NOT NULL AUTO_INCREMENT, + slider_id int(9) NOT NULL, + params MEDIUMTEXT NOT NULL, + layers MEDIUMTEXT NOT NULL, + UNIQUE KEY id (id) + );"; + break; + case RevSliderGlobals::TABLE_CSS_NAME: + $sql = "CREATE TABLE " .self::$table_prefix.$tableName ." ( + id int(9) NOT NULL AUTO_INCREMENT, + handle TEXT NOT NULL, + settings MEDIUMTEXT, + hover MEDIUMTEXT, + params MEDIUMTEXT NOT NULL, + UNIQUE KEY id (id) + );"; + $parseCssToDb = true; + break; + case RevSliderGlobals::TABLE_LAYER_ANIMS_NAME: + $sql = "CREATE TABLE " .self::$table_prefix.$tableName ." ( + id int(9) NOT NULL AUTO_INCREMENT, + handle TEXT NOT NULL, + params TEXT NOT NULL, + UNIQUE KEY id (id) + );"; + break; + case RevSliderGlobals::TABLE_NAVIGATION_NAME: + $sql = "CREATE TABLE " .self::$table_prefix.$tableName ." ( + id int(9) NOT NULL AUTO_INCREMENT, + name VARCHAR(191) NOT NULL, + handle VARCHAR(191) NOT NULL, + css MEDIUMTEXT NOT NULL, + markup MEDIUMTEXT NOT NULL, + settings MEDIUMTEXT NULL, + UNIQUE KEY id (id) + );"; + break; + + default: + RevSliderFunctions::throwError("table: $tableName not found"); + break; + } + + require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); + dbDelta($sql); + + if($parseCssToDb){ + $RevSliderOperations = new RevSliderOperations(); + $RevSliderOperations->importCaptionsCssContentArray(); + $RevSliderOperations->moveOldCaptionsCss(); + } + + } + + + + public function enqueue_styles(){ + + } + + + /* Provider: - * + * Change FontURL to new URL (added for chinese support since google is blocked there) + * @since: 5.0 + */ + public static function modify_punch_url($url){ + $operations = new RevSliderOperations(); + $arrValues = $operations->getGeneralSettingsValues(); + + $set_diff_font = RevSliderFunctions::getVal($arrValues, "change_font_loading",''); + if($set_diff_font !== ''){ + return $set_diff_font; + }else{ + return $url; + } + } + + + /* Provider: - * + * + * javascript output to footer + */ + public function putJavascript(){ + $urlPlugin = RS_PLUGIN_URL."public/assets/"; + + $operations = new RevSliderOperations(); + $arrValues = $operations->getGeneralSettingsValues(); + + $js_defer = RevSliderBase::getVar($arrValues, 'js_defer', 'off'); + if($js_defer!='off') $js_defer = 'defer="defer"'; + else $js_defer = ''; + ?> + + + '."\n"; + } + + /* Provider: - * + * + * adds async loading + * @since: 5.0 + */ + public static function add_defer_forscript($url) + { + if ( strpos($url, 'themepunch.enablelog.js' )===false && strpos($url, 'themepunch.revolution.min.js' )===false && strpos($url, 'themepunch.tools.min.js' )===false ) + return $url; + else if (is_admin()) + return $url; + else + return $url."' defer='defer"; + } + +} + +?> \ No newline at end of file diff --git a/plugins/revslider/release_log.html b/plugins/revslider/release_log.html new file mode 100644 index 0000000..e9744e1 --- /dev/null +++ b/plugins/revslider/release_log.html @@ -0,0 +1,1047 @@ +
        + + +

        Version 5.0.2 StarPath (8th August 2015)

        + +
        NEW FEATURES
        +
          +
        • Added jQuery 2.1.4 and 1.11.3 Support
        • +
        + +
        BUGFIXES
        +
          +
        • Fixed a bug where if Min Height was set, the Slider was broken.
        • +
        • Fixed a bug where Slide Links did not work without existing layers.
        • +
        • Fixed some Backend CSS Issues for RTL / LTR View
        • +
        • Fallback to transparent background image if no correct background image was set
        • +
        • Missing Template Previews added
        • +
        • Fixed a Bug where Images with special Char Names were not loaded.
        • +
        • Fixed a bug where PunchFont Fallbacks are printed in the content not source
        • +
        • Fixed a bug where PunchFonts could not be edited in Essential Grid if version 5.0+ of Slider Revolution is installed
        • +
        + + +

        Version 5.0.1 StarPath (7th August 2015)

        +
        BUGFIXES
        +
          +
        • Full Slide Link was not available after update on 5.0.0. Sizing issue is fixed now.
        • +
        + +

        Version 5.0 StarPath (6th August 2015)

        + +
        The Technology
        +Our premise is "less is more" and that is reflected in the structure of our components. In order to incorporate so much functionality into our plugins, we make sure everything is build as modular as possible. +
          +
        • Fully Responsive & Mobile Specific Features
        • +
        • jQuery 1.7 - jQuery 2.x Supported
        • +
        • Lightning Fast Greensock Animation Engine
        • +
        • Powerful API functions
        • +
        • Smart Font Loading
        • +
        +
        General Options
        +We want Revolution Slider to be able to fulfill all slide based roles along with special functionality like carousels and hero blocks. If you can‘t find a specific feature, feel free to ask us! +
          +
        • All Sizes Possible (Full Responsive + Revolutionary 4 Level Advanced Sizes)
        • +
        • Hero, Carousel and Classic Slider Features
        • +
        • Fullwidth, Fullscreen, Auto Responsive Slider sizes
        • +
        • Unlimited Slider per page
        • +
        • Image BG Cover, Contain, Tiling, Alignment, etc.
        • +
        • WYSIWYG Drag & Drop Editor
        • +
        • Published / Unpublished Slides
        • +
        • Published slides based on predefined Dates
        • +
        • Simple and Advanced Lazy Loading for Quicker and SEO Optimized Slider Start
        • +
        • Link and Actions on Slides
        • +
        • Parallax Effects, full customizeable, combined with Ken Burns and other effects (Mouse / Scroll controlled)
        • +
        • Improved Light weight Ken Burns Effects (easier & faster)
        • +
        • Word Premiere for Advacned Action Building
        • +
        • Build your Social Stream supported Bulk Slider
        • +
        • Easy and quick building based on Slider, Slide and Layer Templates
        • +
        • Performance Monitor and better Performance Suggestions
        • +
        • Viewport based Slide Loading and Progress
        • +
        • Create Slider Defaults, Reset, overwrite single Settings due all slides
        • +
        • Save Slide, Slider, Layer, Animation as Template
        • +
        +
        Layer Capabilities
        +Layers have evolved from simple layers to become powerful scene building tools!
        Drag and Drop, Customize & Animate your way to your perfect slider. +
          +
        • Animation Builder
        • +
        • Huge Number of Possible Transitions
        • +
        • Create your custom animations
        • +
        • Set Start / End Time, Speed, Ease and Effects of any Layers
        • +
        • Show/hide layers on Slider Effects, Events, Actions
        • +
        • Add Unlimited Number of Layers
        • +
        • YouTube, Vimeo, Self-Hosted HTML5 Videos, Shapes, Buttons, Predefined Buttons as Layer
        • +
        • Set actions and links per Layers
        • +
        • Combine Actions due different Layers and slides
        • +
        • Option to Link to a Specific Slide via Layer
        • +
        • Toggle Animation, Classes, video functions via Layers
        • +
        • Variable Layer Image Sizes, full responsive and/or Device Size based
        • +
        • Design your Layers for different Device sizes after your needs
        • +
        • Option to Hide Layers on Any Devices
        • +
        +
        Slider Navigation
        +We have implemented almost all navigation types you can think of, which can be aligned anywhere on the stage.
        Be in full control with Slider Revolution Navigation! +
          +
        • Bullet, Button, Tabs and Thumbnail Navigation, single or mixed mode. Any position like outter,inner, aligned etc.
        • +
        • Left/Right, Top/Bottom Mouse Scroll events.
        • +
        • Vertical/Horizontal Keyboard actions
        • +
        • Mobile Touch Enabled (Optional)
        • +
        • Drag and Pull Carousel Feature
        • +
        • "Stop Slide Timer on Hover" Function
        • +
        • Auto-Hiding of Navigation with Delay Option
        • +
        • Optional Countdown Timer Line
        • +
        • Set Position, color, size of Time Line
        • +
        • Set Size, visibility, amount and behaviour of Thumbs, Tabs, Bullets, Arrows
        • +
        • Hide / Enable Navigation on Mobile Devices
        • +
        • Keyboard Navigation
        • +
        • Fancy Navigation Skins with Slider Preview
        • +
        +
        Video Features
        +
          +
        • AutoPlay - Always, only first time, skip first time, wait for action
        • +
        • Stop video on Blur, Play Video only in ViewPort
        • +
        • Rewind, or keep current progress time
        • +
        • Set Star and End time
        • +
        • Loop, Loop and Progress Slide
        • +
        • Fullscreen, fullwidth, boxed
        • +
        • Navigation features
        • +
        • Action based controll (due other layers)
        • +
        • New Video API, Events and Methods to controll media outside of the Slider
        • +
        +
        Content Sources
        +Slider Revolution is not just your ordinary image & video slider any longer. Now you can also pull the sliders content from popular social media steams. +
          +
        • Custom-Build Content
        • +
        • WordPress Posts
        • +
        • Facebook
        • +
        • Twitter
        • +
        • YouTube
        • +
        • Vimeo
        • +
        • Flickr
        • +
        • Instagram
        • +
        • (WooCommerce: Coming Soon!)
        • +
        +
        Get Involved!
        +Is there a feature you would like to see?
        We will go through all your feedback weekly and pick the most requested features to be included in a future update!
        +Contact us via our Profile Form


        + + +

        Version 4.6.93 SkyWood (8th May 2015)

        +
        BUGFIXES
        +
          +
        • Fixed a bug in backend at the process of adding YouTube videos
        • +
        + + +

        Version 4.6.92 SkyWood (28th April 2015)

        +
        BUGFIXES
        +
          +
        • Added a fix for PHP version < 5.3 which appeared in version 4.6.91
        • +
        + + +

        Version 4.6.91 SkyWood (28th April 2015)

        +
        BUGFIXES
        +
          +
        • Fixed a very low risk vulnerability to stay on par with security standards: More info on the envato blog: http://marketblog.envato.com/news/wordpress-item-security-vulnerability/
        • +
        + + +

        Version 4.6.9 SkyWood (16th April 2015)

        +
        BUGFIXES
        +
          +
        • Fixed wrong ajax action: update_slider occuring in 4.6.8
        • +
        + + +

        Version 4.6.8 SkyWood (15th April 2015)

        +
        INFO
        +
          +
        • This update is a preparation for version 5.0
        • +
        +
        BUGFIXES
        +
          +
        • Fixed Vimeo Event Video Playing which was not triggered
        • +
        • Fixed Parallax issues where Mouse was already hovering on Slider at load, parallax was not working
        • +
        • Fixed Parallax "Not clickable" Layers
        • +
        • Fixed Firefox Half cut images during the Animation sequences
        • +
        + + +

        Version 4.6.5 SkyWood (2nd December 2014)

        +
        BUGFIXES
        +
          +
        • Fixed Compatibility of Sandboxed GreenSock engine
        • +
        • Fixed Compatibility issues with W3C Total Cache Minifying engine
        • +
        • Fixed Static Layer Disappearing Issue
        • +
        • Fixed Lazy Loading and Preloading issues (Distorted images in FireFox)
        • +
        + + +

        Version 4.6.4 SkyWood (27th November 2014)

        +
        NEW FEATURES
        +
          +
        • Added option to show only the Preview Image of a video on mobile, disabling the video
        • +
        +
        CHANGES
        +
          +
        • Min. Height now gone if Fullscreen is selected
        • +
        +
        BUGFIXES
        +
          +
        • Fixed an issue where the Parallax Effect if Mouse already hovered on the Slider in Firefox was not working well
        • +
        • Fixed an issue where exports can have wrong styles in it
        • +
        • Fixed Firefox HTML5 Video Playback
        • +
        • Fixed Thumbnail Vertical Offset Positions in Resized Screens
        • +
        + + +

        Version 4.6.3 SkyWood (21th October 2014)

        +
        BUGFIXES
        +
          +
        • Fixed an issue where the Slide Link was not working correctly
        • +
        + + +

        Version 4.6.2 SkyWood (18th October 2014)

        +
        NEW FEATURES
        +
          +
        • Added "revkill" as method to remove the Slider from the page silently if needed
        • +
        • Added "slideatend" event that triggers if the slide is at the end
        • +
        • Changed import function for compatibility with some Windows Server machines (thanks to ThemeFuzz)
        • +
        • Improved Slider import function for theme authors to make it more easy to insert demo slider through scripts
        • +
        • Added scripts so that a Slider can be loaded in Essential Grid at Ajax loading (Essential Grid version 1.5 or later needed)
        • +
        • Added new Custom Controls for HTML5 Video Player to avoid Chrome "unclickable" buttons issue
        • +
        • Added Rotating Loop Animation on Layers
        • +
        • Spinner can now be disabled in the Slider Settings
        • +
        • New fallback options for iOS4 and IE8 added in the Slider Settings (Alternative Image and/or simplyfied output)
        • +
        • Added option to redraw Slider on browser tab focus
        • +
        +
        CHANGES
        +
          +
        • More changes on exporting Sliders for further compatibility
        • +
        • Activating the plugin a second time will now no longer add default fonts again
        • +
        • Saving CSS / a new CSS class through the style editor will now sanitize the classname
        • +
        • Setting the single slide setting in the Slide Editor to off will now set the values Arrows Type and Bullets Type to none
        • +
        • Improved minifying support
        • +
        • Easy auto settings for single loop option
        • +
        • Videos on mobile devices available again
        • +
        • Minimized the styling output
        • +
        • Improved output validation (style attribute scoped)
        • +
        • Changed backend icon of static layers to avoid confusion
        • +
        • Removed console=1 from the YouTube default settings (only works for new added YouTube video layers)
        • +
        • Google Fonts will no longer be inserted after multiple plugin activation/deactivation
        • +
        • Improved compatibility with databases
        • +
        • Enabled unlimited speed parameter
        • +
        +
        BUGFIXES
        +
          +
        • WPML Slides will now be exported properly and can be imported again
        • +
        • Improved the size and style handling of Layers in Slide Editor (resizing, rotating and lost values of parameters)
        • +
        • IE8 - line height "auto" broke the fullscreen slider. In case "auto" is set, the font size +4px will be calculated for line height
        • +
        • z-index bug for first layer in case dotted overlay exists fixed
        • +
        • SSL compatibility with Vimeo videos in the backend added
        • +
        • Chrome's max-width fallback from % to px. Slides accepting now only px values!
        • +
        • Transition speed had no influence on real transitions
        • +
        • Max transition can now have the same value as the max delay of the Slide
        • +
        • Fixed missing Box Slide, Paper Cut and Box Fade transitions
        • +
        • Further export compatibility for multisites
        • +
        • Fix of Lists in Captions - Formatting and Display issues
        • +
        • Link to Another Slide in Random Mode Bug linked to the wrong Slide Bug is fixed
        • +
        • Undefined poster image on HTML5 videos fixed
        • +
        • Fixed Vimeo/YouTube timings (delaying issues)
        • +
        • Fixed KenBurn dotted overlay
        • +
        • Fixed problem with loop animations
        • +
        • Fixed navigation style issues
        • +
        • Fixed Pan Zoom for mobile issues
        • +
        • Fixed a bug where videos restarted on resize
        • +
        • Fixed HTML5 video markup output
        • +
        • Fixed a bug where hide slider on mobile did not work on certain devices
        • +
        • Fixed a bug with speed parameters
        • +
        • Fixed a bug where caption naming in layers list was not updating anymore
        • +
        • Further IE8 compatibility by changing CSS styles
        • +
        • Fixed boxfade and boxslide animations
        • +
        • Fixed a bug where the first layer z-index was always placed behind the dotted overlay
        • +
        • SSL compatibility with Vimeo API in the backend added
        • +
        + + +

        Version 4.6 SkyWood (25th August 2014)

        +
        NEW FEATURES
        +
          +
        • Option to disable each video on mobile
        • +
        • Option to disable Pan Zoom on Mobile
        • +
        • Option to disable Parallax on Mobile
        • +
        • Randomized Animation from the Selected Animations available now
        • +
        • New Offset option for the Scroll Below Function
        • +
        • New Option to set Slider Min Height - Content will be vertical centered in case content container is smaller then min height of Slider
        • +
        • New Loop Options for HTML5 Videos: none, loop and stop Slider Timer or Loop till Progress Bar reaches the End
        • +
        +
        CHANGES
        +
          +
        • Alternative First Slide wins now, even if Random Slides is enabled
        • +
        • Vimeo, YouTube and HTML5 Video can be added now via options on demand instead of preadding iFrames. This will avoid Preloads delays, and slow site loadings
        • +
        • Using now tp-videolayer class for Videos to identificate Video Layers better
        • +
        • Class "current-sr-slide-visible" added to the Slide "li" tag which is currently Visible
        • +
        • Swipe Engine Change
        • +
        • Swipe Treshold Option Default 75 - The number of pixels that the user must move their finger by before it is considered a swipe.
        • +
        • Swipe Min Finger Default 1 - Min Finger (touch) used for swipe
        • +
        • Drag Block Vertical Default false - Scroll Auto below Slider on Vertical Swipe on Slider
        • +
        +
        BUGFIXES
        +
          +
        • YouTube Force Rewind fix
        • +
        • YouTube Mute in Second Loop fix
        • +
        • Added backwards compatibility for inline CSS with WordPress versions under 3.7
        • +
        • Ken Burns Dotted Overlay was not visible
        • +
        • IE8 Console Group Issue - Slider was not visible in IE8
        • +
        • Looping Issues if Slides has been manually hanged after Loop Stopped
        • +
        • Browser Tab Change -> Broken ELements fixed. Option for Slide Change on Blur Tab / Browser also available.
        • +
        • Navigation Style Preview1- Preview4 Styling issues
        • +
        • Power2 Error at some Animation
        • +
        • Mouse Over on Loaded PArallax Slider issue - Slider will always play parallax effect, even if Mouse was already hovering the slider at laod
        • +
        • IE8 and other Old MObile Devices Fall Back on simple Transitions. CAn be forced now
        • +
        • HTML5, YouTube and Vimeo Video Playback fixes
        • +
        + + +

        Version 4.5.96 SkyWood (24th July 2014)

        +
        CHANGES
        +
          +
        • Parallax Mouse Hover acting only in Horizontal Direction if Parallax Scroll is defined
        • +
        +
        BUGFIXES
        +
          +
        + + +

        Version 4.5.95 SkyWood (16th July 2014)

        +
        CHANGES
        +
          +
        • Changed Animation Engine, improved Animation technology. Reduced file size, and added Timeline based transitions
        • +
        +
        BUGFIXES
        +
          +
        • Fixed Flickering effects on mobile devices
        • +
        • Fixed stuttering on animation with many layers
        • +
        • Fixed Ken Burn animation failures after few Transition types
        • +
        • Added Safari 3d Back to Transitions
        • +
        • Fixed some broken Slide Transitions
        • +
        • Fixed IE8 transition failres, fall back always on Fade
        • +
        + + +

        Version 4.5.9 SkyWood (7th July 2014)

        +
        NEW FEATURES
        +
          +
        • Drag and Rotate the Layer Content to set a 2D Rotation per element
        • +
        • Drag and Resize Elements, images, Contents for better text breaks, and more flexibility
        • +
        • Now also Split Animated Text content can be Rotated
        • +
        • Added feature to allow Looped Animation and Rotated Content
        • +
        +
        CHANGES
        +
          +
        • Reenabled Link ID, Class, Title and Rel in Slide Editor
        • +
        +
        BUGFIXES
        +
          +
        • Fixed Vimeo First Auto Play issue
        • +
        • Fixed unseletable elements in Locked Mode
        • +
        • Fixed Output Failure if Rotated and Looped Animation has been selected
        • +
        • Various Bug fix in Drag And Drop Editor
        • +
        • Fix of Background Image if Screen size less Then Grid Width, postion of Elements and BG backend and frontend looked different
        • +
        • Various Fixes for Mobile Styling. Broken Transitions, bad performance on Mobile devices
        • +
        • Bug with Rotated Layers on Backend fixed
        • +
        • Bug with MAx Width and Max Height of elements was not visible in Backend
        • +
        • White Space Bugs - Backend was not displaying settings of White Spaces
        • +
        • Ken Burn Images on backend was distorted if Window has been resized
        • +
        + +

        Version 4.5.8 SkyWood (4th July 2014)

        +
        CHANGES
        +
          +
        • Reenabled Link ID, Class, Title and Rel in Slide Editor
        • +
        + + + +

        Version 4.5.7 SkyWood (2nd July 2014)

        +
        NEW FEATURES
        +
          +
        • New Options in Global Settings, like Disable/Enable Hammer.js Plugin
        • +
        • New Developer Option to Disable via the theme the Hammer.js Plugin (Avada Requests)
        • +
        + +
        CHANGES
        +
          +
        • Minimized Style Output in the Document, only used Layer Styles are really loaded
        • +
        • Changed the Aq_Resize name to prevend conflicts with other themes that also use it and modified code in it
        • +
        • Updated GreenSock Engine to 12.1
        • +
        • Protected Mode for GreenSock for ThemePunch Plugins added. No more conflict between any other plugins / themes and ThemePunch Tools
        • +
        • Lag Smoothing Enabled
        • +
        + +
        BUGFIXES
        +
          +
        • Bug fixed where Parallax Mode for Mobile Disabled breaks the 2nd and further Slider Positions
        • +
        + + +

        Version 4.5.6 SkyWood (25th June 2014)

        + +
        NEW FEATURES
        + + +
        CHANGES
        +
          +
        • Added missing fonts from Punch Fonts into the CSS Editor Font Family dropdown
        • +
        + +
        BUGFIXES
        +
          +
        • Fullscreen Layout Without Offset Heights got the Wrong Height
        • +
        + + +

        Version 4.5.5 SkyWood (24th June 2014)

        + +
        NEW FEATURES
        +
          +
        • Option to disable parallax on mobile added
        • +
        • Option to add an offset in px or % to FullScreen Slider
        • +
        • Two new Slide transitions: Parallax Vertical and Parallax Horizontal
        • +
        • Export Slider into HTML. Option availble first when Feature enabled under Global Settings
        • +
        + +
        CHANGES
        +
          +
        • Static Layers now have to be enable in each Slider for usage (can be found in General Settings tab)
        • +
        • onChange Event delivers the Slide Index and the Slide jQuery Object now
        • +
        • Global option JavaScript into footer now also adds the revslider calls into the footer
        • +
        + +
        BUGFIXES
        +
          +
        • Lazy Loading bug in combination with Static Layers fixed
        • +
        • "Hide Slider Under" option did not redraw the Layers after Resize. Bug is fixed
        • +
        • YouTube Video Bug with Overlay Image on Mobile Devices.
        • +
        • IE8 and IE9 Slide Link Bug Fixed
        • +
        • Output Filters Protection fix for "By Compressing Output"
        • +
        + + +

        Version 4.5.4 SkyWood (16th June 2014)

        + +
        NEW FEATURES
        +
          +
        • Static Layers added. Can be found under Slide List (new button called "Edit Static Layers")
        • +
        • Possibility added to insert id, class, attr and i.e. own data attributes to each specific Slide
        • +
        + +
        CHANGES
        +
          +
        • Inline CSS compressed/minimized now in output
        • +
        + +
        BUGFIXES
        +
          +
        • Layers sometimes not fading out fixed
        • +
        + + +

        Version 4.5.3 SkyWood (12th June 2014)

        + +
        BUGFIXES
        +
          +
        • IE jQuery bugfix
        • +
        • Responsive Through All Levels fixed where checkbox would be always checked on each element after reload of Slide Editor
        • +
        + + +

        Version 4.5.2 SkyWood (10th June 2014)

        + +
        NEW FEATURES
        +
          +
        • data-parallaxoffset attribute is now available and updated on Scroll. This value can be interesting for Developers to read current Parallax Offsets of the elements with the jQuery selector .tp-parallax-container (Possible usage for Blur, Fade, Rotation effects based on the values)
        • +
        + +
        BUGFIXES
        +
          +
        • Thumbnail is not Showing has been fixed
        • +
        • Choosen Global Settings now correctly set again
        • +
        • Shortcode dropdown selector will now insert the right shortcode
        • +
        • Auto Play only First Time on Videos (YouTube and Vimeo) did not work well.
        • +
        • Imported layers will be stripped of slashes now
        • +
        + + +

        Version 4.5.01 SkyWood (06th June 2014)

        +
        BUGFIXES
        +
          +
        • Fixed a bug where new Slider & Template Slider button is missing
        • +
        + + +

        Version 4.5.0 SkyWood (05th June 2014)

        +
        NEW FEATURES
        +
          +
        • Improved Backend Functionality
        • +
        • Added a timeline based editor for better & easier handling of layer times
        • +
        • Loop Effect now available. Choose between four loop types for each layer in the Slide Editor under "Layer Animations"
        • +
        • Parallax Effect now available. Enable it in Slider Settings in the Parallax Tab and set your desired level of each layer in Slide Settings
        • +
        • Parallax on Mouse Movement Added
        • +
        • Parallax on Scroll Added with Background fixed or Scrolled Options
        • +
        • PArallax on Mobile Device Tilt
        • +
        • qTranslate is now supported in layers
        • +
        • Added filter hook called 'revslider_get_posts' that can be used to manipulate the WP_Query array
        • +
        • New Grid/Snap functionality in Slide Editor for better positioning of elements
        • +
        • Punch Fonts are now included. This should now be used if google fonts need to be loaded through the Slider Revolution plugin
        • +
        • Option added to not load the Slider on Mobile devices
        • +
        • 2D rotation options added to layers in Slide Editor
        • +
        • New navigation types called preview1, preview2, preview3, preview4 and custom
        • +
        • Custom CSS and JavaScript can now be added directly in each Slider
        • +
        • Placeholder of Slider at Page load will be auto generated. No more Jump Vertically during Slider is loading
        • +
        • Added Performance Boost optional, where Outgoing Layers first animated before next slide is played. Helps if many layers added to one Slide
        • +
        • Reburn of Pan Zoom Effect on FullScreen, FullWidth and Boxed layout with a complete new Engine
        • +
        + +
        CHANGES
        +
          +
        • Check if more then one instance of Slider Revolution exists.
        • +
        • Added support for spaces in putRevSlider("newslider2014","2,10") like putRevSlider("newslider2014","2, homepage")
        • +
        • Added check if hammer.js is already included
        • +
        • Added allowfullscreen="true" into YouTube video iFrame output
        • +
        • Using now Aqua Resizer for thumbnail generation
        • +
        • Pagination added to the Slide Overview page
        • +
        • Added Sorting of Slides based on names or Shortcode in Slider Overview page
        • +
        • Video ID of YouTube and Vimeo can now be changed on editing a layer
        • +
        • Added notification on post based slider if the template slider does not have any slides created
        • +
        • Removed the JavaScript inside of the href attribute of buttons from the Slide Editor
        • +
        + +
        BUGFIXES
        +
          +
        • Fixed a bug where Template Sliders would change to normal Sliders
        • +
        • Fixed a bug where layer positions in slide editor where not correctly calculated if the layer had a padding or margin.
        • +
        • white-space and max-width/max-height are now correctly shown in Slide Editor
        • +
        • Fix for importing where \n was translated to n
        • +
        • Visible Last slide at Loading fixed
        • +
        • Visible Navigation Elements on Load fixed
        • +
        + + + +

        Version 4.3.8 SkyWood (27th April 2014)

        +
        BUGFIXES
        +
          +
        • BugFix for Shortcode Selector in WordPress 3.9 that happens on toggle between text & visual button
        • +
        • added px to height css in fullwidth Sliders
        • +
        + + +

        Version 4.3.7 SkyWood (17th April 2014)

        +
        BUGFIXES
        +
          +
        • Select ShortCodes are now back in Posts on WordPress 3.9
        • +
        • Ken Burns Dobble Start after changing the slide
        • +
        + +

        Version 4.3.6 SkyWood (14th April 2014)

        + +
        CHANGES
        +
          +
        • Ken Burns and Pan Zoom Effect Engine Change. Animation based on Img rotations and Zooms, Transitions instead of Background animation. Due this change the Aniamtions become really Smooth and Clean.
        • +
        + +
        BUGFIXES
        +
          +
        • Fixed some compability issues with custom captions
        • +
        + +

        Version 4.3.5 SkyWood (09th April 2014)

        + +
        CHANGES
        +
          +
        • Decreased Loading Time of Styles due loading styles Inline in Header (based on WordPress Best Practices)
        • +
        + +
        BUGFIXES
        +
          +
        • Fixed Click and Taps bugs on Elements in Slider viewing Slider in Mobile Devices
        • +
        • Fixed Positions of Videos after leaving Fullscreen Video Playback
        • +
        • Fixed Element Transitions by clicking Next/previous Slider before Elements has been shown. Currently Not Visible Elements will not show up suddenly any more.
        • +
        + +
        + + +

        Version 4.3.4 SkyWood (07th April 2014)

        + +
        CHANGES
        +
          +
        • Changed Backend Style of Style Editor
        • +
        • Added Swipe Up & Down to scroll below or above the slider on Mobile Devices
        • +
        + +
        BUGFIXES
        +
          +
        • Fixed Color Picker in Backend Editor
        • +
        + +
        + + +

        Version 4.3.3 SkyWood (27th March 2014)

        + +
        CHANGES
        +
          +
        • Changed the validation process to meet the envato requirements
        • +
        + +
        BUGFIXES
        +
          +
        • KenBurn effect "End Position" fix if percentage is choosen
        • +
        + +
        + +

        Version 4.3.2 SkyWood (25th March 2014)

        + +
        NEW FEATURES
        +
          +
        • Added Option keyboardNavigation to allow Navigation with left/right arrows
        • +
        + +
        CHANGES
        +
          +
        • Removed video-js plugin and added Browser Native HTML5 Video Player
        • +
        + +
        BUGFIXES
        +
          +
        • Added stripslashes to the import process to the layers
        • +
        • Added multisite custom css fix
        • +
        • Fixed HTML5 Video Loading issues
        • +
        • Fixed Android Device Swipe Feature
        • +
        + +
        + +

        Version 4.3.1 SkyWood (21th March 2014)

        + +
        CHANGES
        +
          +
        • Changed the activation text
        • +
        + +
        BUGFIXES
        +
          +
        • Fix for Thumbnail generating on some installations
        • +
        + +
        + +

        Version 4.3 SkyWood (18th March 2014)

        +
        BUGFIXES
        +
          +
        • Fix if Slider does not load after Touch Option is Disabled
        • +
        • MultiSite export fix on some installations.
        • +
        + +
        + +

        Version 4.2.7 SkyWood (18th March 2014)

        +
        NEW FEATURES
        +
          +
        • Added Options like Swipe Velocity, Swipe Min/Max Touches
        • +
        • Added Drag Block Vertical option to prevent verticall scroll if needed. Default (false)
        • +
        + +
        BUGFIXES
        +
          +
        • BugFix for FireFox Timer Line - Visibilty of Timer was ignored in Firefox and IE
        • +
        • BugFix for checking for new updates
        • +
        • BugFix for event manager, dates will now be correctly translated if they are not english
        • +
        + +
        + +

        Version 4.2.6 SkyWood (17th March 2014)

        +
        NEW FEATURES
        +
          +
        • New Slider Setting option: Hide Mobile Nav After in Mobile Visibility Tab
        • +
        + +
        CHANGES
        +
          +
        • Calculation of forceFullScreenAlign Positions. Resized Positions are More exact
        • +
        • Replacement of rel=0 in youtube video layer disabled
        • +
        • Added Hide Slider under "window width" for all type of Slider Layouts. Slider is stopped / started depends on the Window size also
        • +
        + +
        BUGFIXES
        +
          +
        • Hide Timer Bug has been fixed
        • +
        • Small multisite export/import adjustments
        • +
        • Small general export/import adjustments
        • +
        • Missing static-captions.css text in console on slider preview removed
        • +
        • YouTube: Hide Controls do now work
        • +
        • YouTube/Vimeo allow now to insert direct URL or ID
        • +
        • YouTube rel=0 fix
        • +
        • YouTube iOS Fix for Replaying videos on 2nd Call
        • +
        • StopOnHover set to 1 Bug has been fixed
        • +
        • Backend Speed improvements on some hosters
        • + +
        + +
        + +

        Version 4.2.5 SkyWood (12th March 2014)

        +
        BUGFIXES
        +
          +
        • Slide Link zIndex issues and Slide Link Resizing issues fixed
        • +
        • Individual Slide Timer has been fixed. Broken since version 4.2.4
        • +
        + + +
        + +

        Version 4.2.4 SkyWood (10th March 2014)

        +
        CHANGES
        +
          +
        • Updated Russian Translation / Language Pack
        • +
        • Improved Plugin Processes, Removed Script Intervals and Timers for Better CPU Management (30-50% less CPU Usage)
        • +
        + + +
        + +

        Version 4.2.3 SkyWood (3th March 2014)

        +
        BUGFIXES
        +
          +
        • BugFix in Russian Language causing the error "setting layer_caption not found"
        • +
        + + +
        + +

        Version 4.2.2 SkyWood (28th February 2014)

        +
        BUGFIXES
        +
          +
        • In case HTML5 Video Js Loads later then Meta of Video will not fire the Auto Play Option
        • +
        • Changed update check. In some situations user will not see that a new update is available.
        • +
        + +
        + +

        Version 4.2.1 SkyWood (27th February 2014)

        +
        BUGFIXES
        +
          +
        • Fixed YouTube Api, changed youtube api load to permanent Https
        • +
        • Fixed HTML5 Video Preload. A Waiting process added for Video JS and Stream preloads
        • +
        • Fixed Vimeo API Preloads
        • +
        • Fixed "Unclickable" Notice for Auto Updates and Premium Support
        • +
        + +
        + +

        Version 4.2 SkyWood (25th February 2014)

        +
        NEW FEATURES
        +
          +
        • New Activation process added
        • +
        • New Automatic Updates process added
        • +
        • Added Char, Word and Line Based Text animation to improve the Visual Experience on the Layer Animations
        • +
        • Added 5 Different Loader Spinner with Live Preview Selector
        • +
        • Added a new Shortcode type. Now [rev_slider slider_alias] and also [rev_slider alias="slider_alias"] works.
        • +
        • Added polish language thanks to Dawid Dudek (www.supportitc.pl)
        • +
        • Meta Box for RevSlider now available in all Custom Post Types
        • +
        • Added remove Thumbnail in Slide Editor
        • +
        • Added white-space, maxwidth and maxheight options
        • +
        + +
        CHANGES
        +
          +
        • Improved Loading Speed. Slider loads over 1-2 sec quicker than before.
        • +
        • Improved Lazy Loading, to load Images and Layer images on demand. Intelligent Preloading of next slide Elements.
        • +
        • Removed function mysql_insert_id() that will be deprecated in php version 5.5.x
        • +
        • Auto Thumbnail Function, small copy of Slider Image, or Colorer BG used as Default.
        • +
        + +
        BUGFIXES
        +
          +
        • Fixed YouTube Api
        • +
        • CSS editor bugfix where custom styles were set into other choosen layers
        • +
        • Added missing argument for WPML, this enables WPML functionality in using the specific post feature
        • +
        • Small adjustment for css editor that caused problems on some installations
        • +
        • Check if ssl on external jquery library & css include
        • +
        • Fixed Overlapping layers if Mixed Align Mode used in Slide
        • +
        • Fixed Pause/Resume function if Navigation elements has been hovered.
        • +
        • MultiSite Style Settings - Minor Workaround added till next Major Release
        • +
        + +
        + + + +

        Version 4.1.5 SkyWood

        +
        NEW FEATURES
        +
          +
        • Added Chinese translation thanks to lastme (http://www.lastme.com/)
        • +
        +
        CHANGES
        +
          +
        • Removed function mysql_insert_id() that will be deprecated in php version 5.5.x
        • +
        + + + +
        + +

        Version 4.1.4 SkyWood

        +
        NEW FEATURES
        +
          +
        • ID, Class, Title & Rel attribute for Links on images added
        • +
        • Added files so that google does not index internal files
        • +
        +
        CHANGES
        +
          +
        • German language files recreated
        • +
        • instead of a fatal error, the none existence of ZipArchive will now give a more gently message
        • +
        + + + + +
        + + +

        Version 4.1.3 SkyWood

        +
        CHANGES
        +
          +
        • Imported images through slider import create now also the thumbnails
        • +
        +
        BUGFIXES
        +
          +
        • stripslashes problem in global styles at slider imports fixed
        • +
        • multisite import of slider now correctly imports images
        • +
        • selecting thumbnails/video overlays now work on multisites
        • +
        + + + +
        + + +

        Version 4.1.2 SkyWood

        +
        CHANGES
        +
          +
        • Deleting Posts inside a Post Slider will now trash instead of deleting them
        • +
        +
        BUGFIXES
        +
          +
        • Fixed a z-index issue where the-events-calendar set the jquery-ui-dialog overlay over the Slider Revolution Dialogs
        • +
        • Http / Https loading of API’S in the right format depending on the current URL
        • +
        • Issue solved with the HTML5 Video Sizing
        • +
        • YouTube Api does not work without the origin=http://yourdomain any more !! +
            +
          • The slider adds this now automatically on every YouTube video.
          • +
          • NOTE: Please note that this only works on live servers and not local installations.
          • +
          • For example: autoplay will not work on local machines but on your live servers
          • +
          +
        • +
        + + +
        + + + +

        Version 4.1.1 SkyWood

        +
        NEW FEATURES
        +
          +
        • New API Method: rev redraw for Redrawing the current Slide in case, slider is included some animated container.
        • +
        • New tab in Slider Settings: Reset Options. +
            +
          • Reset all Transitions of this Slider to a choosen one
          • +
          • Reset all Transition Durations of this Slider to a choosen one
          • +
          • New Dropdown on Post/Pages for revslider Shortcodes (found in Visual mode of Editor)
          • +
          +
        • +
        +
        CHANGES
        +
          +
        • New button in Slide Edit mode to go back to Slide List of Slider
        • +
        +
        BUGFIXES
        +
          +
        • Remove of Aspect Ratio and Dotted Overlay if Cover was not choosen in HTML5 Videos
        • +
        • Fixed a bug on import of Slider where custom arrows might break
        • +
        • Fixed a bug for Missing static-layers.css
        • +
        • Fixed FF and IE10 Animation issues
        • +
        • Fixed Wrong calculated Center positions if Caption has CSS3 Animations associated
        • +
        + + +
        + + + +

        Version 4.1 SkyWood

        +
        NEW FEATURES
        +
          +
        • Ken Burns Effect (align start/end) bg Fit (start/end), Speed and easing
        • +
        • Min Height for Fullscreen Sliders
        • +
        • Fullscreen HTML5 Videos with new functions
        • +
        • Cover the whole HTML5 Videoscreen (no black borders)
        • +
        • Dotted overlays on HTML5 Videos with cover & slide backgrounds
        • +
        • Dotted Overlay on Background Images (global setting)
        • +
        • Mute option on Videos
        • +
        • Force Rewind of Videos on slideview
        • +
        +
        CHANGES
        +
          +
        • Fallback to old export if zip extension is not installed on server
        • +
        +
        BUGFIXES
        +
          +
        • Post meta tag fix for plugin: Types - Complete Solution for Custom Fields and Types
        • +
        + + + + +
        + + +

        Version 4.0.6 SkyWood

        +
        BUGFIXES
        +
          +
        • Force Fullwidth Offsets
        • +
        • Added FF Protection for 3d Animated Elements
        • +
        • Update GreenSock Engine with Protection for FF25 Animations
        • +
        • IE8 HALO Effect Solved
        • +
        + + + +
        + +

        Version 4.0.5 SkyWood

        +
        NEW FEATURES
        +
          +
        • New Background-Image options in slider settings under Appearance Tab
        • +
        • Usage of placeholder %link% and %meta:somemeta% for Slide Link in General Slide Settings
        • +
        +
        CHANGES
        +
          +
        • Added fallback for dynamic-layers.css (if not writable, load layers.php instead)
        • +
        +
        BUGFIXES
        +
          +
        • Fixed a bug where no layers could be added to Slides
        • +
        • Fixed a bug where Post Sliders do not show the correct thumbnails in navigation
        • +
        • Fixed a few texts for better multilanguage support
        • +
        + + +
        + + + +

        Version 4.0.4 SkyWood

        +
        BUGFIXES
        +
          +
        • inserted two missing functions
        • +
        + +
        + + +

        Version 4.0.3 SkyWood

        +
        CHNAGES
        +
          +
        • the option Responsive Through All Levels in layers is now checked as default
        • +
        • set default background-position of main slide image to center top
        • +
        +
        BUGFIXES
        +
          +
        • bug in interpreting the css fixed
        • +
        • fixed a bug that occures on some video layers and that may brake the edit slide page
        • +
        • fixed a bug with Post Sliders not being shown with the template Slider styles
        • +
        + + + +
        + +

        Version 4.0.2 SkyWood

        +
        BUGFIXES
        +
          +
        • WPML was not working correctly, fixed "Wrong Request" bug
        • +
        + + +
        + +

        Version 4.0.1 SkyWood

        +
        CHANGES
        +
          +
        • add revision to css/js files to prevent caching issues
        • +
        + + + +
        + +

        Version 4.0 SkyWood

        +
        NEW FEATURES
        +
          +
        • New Live Style Editor (Simple and Advanced)
        • +
        • Custom Caption Creator
        • +
        • Live Caption Animation Viewer in Editor
        • +
        • Export Feature (with Images and Static/Dynamic Styles and with Custom Animations)
        • +
        • New Main Image Aligns, Repeating and Sizing (like center,center, repeat-x,y,no, cover and container and many more)
        • +
        • New Layout Viewer ( to see differences between, fullwidth, fullscreen, custom)
        • +
        • Only Styles are loaded which used in Current Slides
        • +
        • template slider for post slider added
        • +
        • allow external images as slide backgrounds
        • +
        • new options for videos
        • +
        • many other new options added
        • +
        • added relpace url's neer export / import slider
        • +
        • new options for hiding thumbs/bullets/arrows on mobile
        • +
        • new option force fill width in autoresponsive mode
        • +
        • id, class, rel tag can be set for each element
        • +
        • alt tag for images can be set
        • +
        • layers can now be locked
        • +
        • layer images can now be resized
        • +
        • Added new Flat Transitions
        • +
        • Added FullScreen and FullWidth Forcing in Boxed Themes
        • +
        • Added Thumbnail for Videos
        • +
        • Tooltip for Titles
        • +
        • Shadow Prelayouts
        • +
        • Move Tabs to Change Slide Order
        • +
        • Published / Unpublished Slides also Date / Time Dependent
        • +
        • Loop and Controlless HTML5 Videos
        • +
        • Play Video only First Time, then Hold
        • +
        • Linear Resizing of Thumbs
        • +
        • Unlimited Containers for Offsetting Fullscreen Height
        • +
        +
        CHANGES
        +
          +
        • Style of Backend in Flat Style
        • +
        • Much cleaner interface
        • +
        • Load Plugins and Revolution Slider splitter, dependent on Other Plugins
        • +
        • Jquery.themepunch.revolution.min.js loads now in the footer (Optional)
        • +
        • Main transitions are now listed in flat and premium transitions
        • +
        +
        BUGFIXES
        +
          +
        • many small/mayor bug fixes
        • +
        • added error messages on some situations in slider by post view.
        • +
        • fixed css bug that made the screens overlap with wordpress error messages
        • +
        • fixed image positioning in edit layers js file
        • +
        • fixed images url's output in https websites
        • +
        +
        \ No newline at end of file diff --git a/plugins/revslider/revslider.php b/plugins/revslider/revslider.php new file mode 100644 index 0000000..5ea45ff --- /dev/null +++ b/plugins/revslider/revslider.php @@ -0,0 +1,212 @@ + ''), $args, 'rev_slider')); + $sliderAlias = ($alias != '') ? $alias : RevSliderFunctions::getVal($args,0); + + $gal_ids = RevSliderFunctionsWP::check_for_shortcodes($mid_content); //check for example on gallery shortcode and do stuff + + ob_start(); + if(!empty($gal_ids)){ //add a gallery based slider + $slider = RevSliderOutput::putSlider($sliderAlias, '', $gal_ids); + }else{ + $slider = RevSliderOutput::putSlider($sliderAlias); + } + $content = ob_get_contents(); + ob_clean(); + ob_end_clean(); + + // Do not output Slider if we are on mobile + $disable_on_mobile = $slider->getParam("disable_on_mobile","off"); + if($disable_on_mobile == 'on'){ + $mobile = (strstr($_SERVER['HTTP_USER_AGENT'],'Android') || strstr($_SERVER['HTTP_USER_AGENT'],'webOS') || strstr($_SERVER['HTTP_USER_AGENT'],'iPhone') ||strstr($_SERVER['HTTP_USER_AGENT'],'iPod') || strstr($_SERVER['HTTP_USER_AGENT'],'iPad') || wp_is_mobile()) ? true : false; + if($mobile) return false; + } + + $show_alternate = $slider->getParam("show_alternative_type","off"); + + if($show_alternate == 'mobile' || $show_alternate == 'mobile-ie8'){ + if(wp_is_mobile()){ + $show_alternate_image = $slider->getParam("show_alternate_image",""); + return ''; + } + } + + //handle slider output types + if(!empty($slider)){ + $outputType = $slider->getParam("output_type",""); + switch($outputType){ + case "compress": + $content = str_replace("\n", "", $content); + $content = str_replace("\r", "", $content); + return($content); + break; + case "echo": + echo $content; //bypass the filters + break; + default: + return($content); + break; + } + }else + return($content); //normal output + + } + + add_shortcode( 'rev_slider', 'rev_slider_shortcode' ); + + //add tiny box dropdown menu + $tinybox = new RevSliderTinyBox(); + + + /* Provider: - * + * Call Extensions + */ + $revext = new RevSliderExtension(); + + if(is_admin()){ //load admin part + + require_once(RS_PLUGIN_PATH . 'includes/framework/update.class.php'); + require_once(RS_PLUGIN_PATH . 'includes/framework/newsletter.class.php'); + require_once(RS_PLUGIN_PATH . 'admin/revslider-admin.class.php'); + + $productAdmin = new RevSliderAdmin(RS_PLUGIN_FILE_PATH); + + }else{ //load front part + + /* Provider: - * + * + * put rev slider on the page. + * the data can be slider ID or slider alias. + */ + function putRevSlider($data,$putIn = ""){ + $operations = new RevSliderOperations(); + $arrValues = $operations->getGeneralSettingsValues(); + $includesGlobally = RevSliderFunctions::getVal($arrValues, "includes_globally","on"); + $strPutIn = RevSliderFunctions::getVal($arrValues, "pages_for_includes"); + $isPutIn = RevSliderOutput::isPutIn($strPutIn,true); + if($isPutIn == false && $includesGlobally == "off"){ + $output = new RevSliderOutput(); + $option1Name = __("Include RevSlider libraries globally (all pages/posts)", REVSLIDER_TEXTDOMAIN); + $option2Name = __("Pages to include RevSlider libraries", REVSLIDER_TEXTDOMAIN); + $output->putErrorMessage(__("If you want to use the PHP function \"putRevSlider\" in your code please make sure to check \" ",REVSLIDER_TEXTDOMAIN).$option1Name.__(" \" in the backend's \"General Settings\" (top right panel).

        Or add the current page to the \"",REVSLIDER_TEXTDOMAIN).$option2Name.__("\" option box.", REVSLIDER_TEXTDOMAIN)); + return(false); + } + + // Do not output Slider if we are on mobile + ob_start(); + $slider = RevSliderOutput::putSlider($data,$putIn); + $content = ob_get_contents(); + ob_clean(); + ob_end_clean(); + + $disable_on_mobile = $slider->getParam("disable_on_mobile","off"); + if($disable_on_mobile == 'on'){ + $mobile = (strstr($_SERVER['HTTP_USER_AGENT'],'Android') || strstr($_SERVER['HTTP_USER_AGENT'],'webOS') || strstr($_SERVER['HTTP_USER_AGENT'],'iPhone') ||strstr($_SERVER['HTTP_USER_AGENT'],'iPod') || strstr($_SERVER['HTTP_USER_AGENT'],'iPad') || wp_is_mobile()) ? true : false; + if($mobile) return false; + } + + echo $content; + } + + + /* Provider: - * + * + * put rev slider on the page. + * the data can be slider ID or slider alias. + */ + function checkRevSliderExists($alias){ + $rev = new RevSlider(); + return $rev->isAliasExists($alias); + } + + $productFront = new RevSliderFront(RS_PLUGIN_FILE_PATH); + } + + add_action('plugins_loaded', array( 'RevSliderFront', 'createDBTables' )); //add update checks + add_action('plugins_loaded', array( 'RevSliderPluginUpdate', 'do_update_checks' )); //add update checks + +}catch(Exception $e){ + $message = $e->getMessage(); + $trace = $e->getTraceAsString(); + echo _e("Revolution Slider Error:",REVSLIDER_TEXTDOMAIN)." ".$message.""; +} + +?> \ No newline at end of file diff --git a/plugins/revslider/uninstall.php b/plugins/revslider/uninstall.php new file mode 100644 index 0000000..b116d7b --- /dev/null +++ b/plugins/revslider/uninstall.php @@ -0,0 +1,44 @@ +prefix . RevSliderGlobals::TABLE_SLIDERS_NAME; +$tableSlides = $wpdb->prefix . RevSliderGlobals::TABLE_SLIDES_NAME; +$tableSettings = $wpdb->prefix . RevSliderGlobals::TABLE_SETTINGS_NAME; +$tableCss = $wpdb->prefix . RevSliderGlobals::TABLE_CSS_NAME; +$tableAnims = $wpdb->prefix . RevSliderGlobals::TABLE_LAYER_ANIMS_NAME; +$tableStaticSlides = $wpdb->prefix . RevSliderGlobals::TABLE_STATIC_SLIDES_NAME; + +$wpdb->query( "DROP TABLE $tableSliders" ); +$wpdb->query( "DROP TABLE $tableSlides" ); +$wpdb->query( "DROP TABLE $tableSettings" ); +$wpdb->query( "DROP TABLE $tableCss" ); +$wpdb->query( "DROP TABLE $tableAnims" ); +$wpdb->query( "DROP TABLE $tableStaticSlides" ); + +//deactivate activation if plugin was activated + +delete_option('revslider-latest-version'); +delete_option('revslider-update-check-short'); +delete_option('revslider-update-check'); +delete_option('revslider_update_info'); +delete_option('revslider-api-key'); +delete_option('revslider-username'); +delete_option('revslider-code'); +delete_option('revslider-valid'); +delete_option('revslider-valid-notice'); +*/ + +//needs to be deleted so that everything gets checked at a new installation +delete_option('revslider_table_version'); +delete_option('revslider_checktables'); +?> \ No newline at end of file diff --git a/plugins/updraftplus/admin.php b/plugins/updraftplus/admin.php new file mode 100644 index 0000000..72b80c8 --- /dev/null +++ b/plugins/updraftplus/admin.php @@ -0,0 +1,5264 @@ +admin_init(); + } + + private function wp_normalize_path($path) { + // wp_normalize_path is not present before WP 3.9 + if (function_exists('wp_normalize_path')) return wp_normalize_path($path); + // Taken from WP 4.6 + $path = str_replace( '\\', '/', $path ); + $path = preg_replace( '|(?<=.)/+|', '/', $path ); + if ( ':' === substr( $path, 1, 1 ) ) { + $path = ucfirst( $path ); + } + return $path; + } + + public function get_templates_dir() { + return apply_filters('updraftplus_templates_dir', $this->wp_normalize_path(UPDRAFTPLUS_DIR.'/templates')); + } + + public function get_templates_url() { + return apply_filters('updraftplus_templates_url', UPDRAFTPLUS_DIR.'/templates'); + } + + private function register_template_directories() { + + $template_directories = array(); + + $templates_dir = $this->get_templates_dir(); + + if ($dh = opendir($templates_dir)) { + while (($file = readdir($dh)) !== false) { + if ('.' == $file || '..' == $file) continue; + if (is_dir($templates_dir.'/'.$file)) { + $template_directories[$file] = $templates_dir.'/'.$file; + } + } + closedir($dh); + } + + // This is the optimal hook for most extensions to hook into + $this->template_directories = apply_filters('updraftplus_template_directories', $template_directories); + + } + + public function include_template($path, $return_instead_of_echo = false, $extract_these = array()) { + if ($return_instead_of_echo) ob_start(); + + if (preg_match('#^([^/]+)/(.*)$#', $path, $matches)) { + $prefix = $matches[1]; + $suffix = $matches[2]; + if (isset($this->template_directories[$prefix])) { + $template_file = $this->template_directories[$prefix].'/'.$suffix; + } + } + + if (!isset($template_file)) { + $template_file = UPDRAFTPLUS_DIR.'/templates/'.$path; + } + + $template_file = apply_filters('updraftplus_template', $template_file, $path); + + do_action('updraftplus_before_template', $path, $template_file, $return_instead_of_echo, $extract_these); + + if (!file_exists($template_file)) { + error_log("UpdraftPlus: template not found: $template_file"); + echo __('Error:', 'updraftplus').' '.__('template not found', 'updraftplus')." ($path)"; + } else { + extract($extract_these); + global $updraftplus, $wpdb; + $updraftplus_admin = $this; + include $template_file; + } + + do_action('updraftplus_after_template', $path, $template_file, $return_instead_of_echo, $extract_these); + + if ($return_instead_of_echo) return ob_get_clean(); + } + + private function setup_all_admin_notices_global($service){ + if ('googledrive' === $service || (is_array($service) && in_array('googledrive', $service))) { + $opts = UpdraftPlus_Options::get_updraft_option('updraft_googledrive'); + if (empty($opts)) { + $clientid = UpdraftPlus_Options::get_updraft_option('updraft_googledrive_clientid', ''); + $token = UpdraftPlus_Options::get_updraft_option('updraft_googledrive_token', ''); + } else { + $clientid = $opts['clientid']; + $token = (empty($opts['token'])) ? '' : $opts['token']; + } + if (!empty($clientid) && empty($token)) add_action('all_admin_notices', array($this,'show_admin_warning_googledrive')); + } + if ('googlecloud' === $service || (is_array($service) && in_array('googlecloud', $service))) { + $opts = UpdraftPlus_Options::get_updraft_option('updraft_googlecloud'); + if (!empty($opts)) { + $clientid = $opts['clientid']; + $token = (empty($opts['token'])) ? '' : $opts['token']; + } + if (!empty($clientid) && empty($token)) add_action('all_admin_notices', array($this,'show_admin_warning_googlecloud')); + } + if ('dropbox' === $service || (is_array($service) && in_array('dropbox', $service))) { + $opts = UpdraftPlus_Options::get_updraft_option('updraft_dropbox'); + if (empty($opts['tk_access_token'])) { + add_action('all_admin_notices', array($this,'show_admin_warning_dropbox') ); + } + } + if ('onedrive' === $service || (is_array($service) && in_array('onedrive', $service))) { + $opts = UpdraftPlus_Options::get_updraft_option('updraft_onedrive'); + //if (((!empty($opts['clientid']) && !empty($opts['secret'])) || !empty($opts['use_master'])) && empty($opts['refresh_token'])) + if((defined('UPDRAFTPLUS_CUSTOM_ONEDRIVE_APP') && UPDRAFTPLUS_CUSTOM_ONEDRIVE_APP)){ + if(!empty($opts['clientid']) && !empty($opts['secret']) && empty($opts['refresh_token'])) add_action('all_admin_notices', array($this,'show_admin_warning_onedrive') ); + } else{ + if(empty($opts['refresh_token']))add_action('all_admin_notices', array($this,'show_admin_warning_onedrive') ); + } + } + + if ('updraftvault' === $service || (is_array($service) && in_array('updraftvault', $service))) { + $vault_settings = UpdraftPlus_Options::get_updraft_option('updraft_updraftvault'); + $connected = (is_array($vault_settings) && !empty($vault_settings['token']) && !empty($vault_settings['email'])) ? true : false; + if (!$connected) add_action('all_admin_notices', array($this,'show_admin_warning_updraftvault') ); + } + + if ($this->disk_space_check(1048576*35) === false) add_action('all_admin_notices', array($this, 'show_admin_warning_diskspace')); + } + + private function setup_all_admin_notices_udonly($service, $override = false){ + global $wp_version; + + if (UpdraftPlus_Options::user_can_manage() && defined('DISABLE_WP_CRON') && DISABLE_WP_CRON == true) { + add_action('all_admin_notices', array($this, 'show_admin_warning_disabledcron')); + } + + if (UpdraftPlus_Options::get_updraft_option('updraft_debug_mode')) { + @ini_set('display_errors',1); + @error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED); + add_action('all_admin_notices', array($this, 'show_admin_debug_warning')); + } + + if (null === UpdraftPlus_Options::get_updraft_option('updraft_interval')) { + add_action('all_admin_notices', array($this, 'show_admin_nosettings_warning')); + $this->no_settings_warning = true; + } + + # Avoid false positives, by attempting to raise the limit (as happens when we actually do a backup) + @set_time_limit(UPDRAFTPLUS_SET_TIME_LIMIT); + $max_execution_time = (int)@ini_get('max_execution_time'); + if ($max_execution_time>0 && $max_execution_time<20) { + add_action('all_admin_notices', array($this, 'show_admin_warning_execution_time')); + } + + // LiteSpeed has a generic problem with terminating cron jobs + if (isset($_SERVER['SERVER_SOFTWARE']) && strpos($_SERVER['SERVER_SOFTWARE'], 'LiteSpeed') !== false) { + if (!is_file(ABSPATH.'.htaccess') || !preg_match('/noabort/i', file_get_contents(ABSPATH.'.htaccess'))) { + add_action('all_admin_notices', array($this, 'show_admin_warning_litespeed')); + } + } + + if (version_compare($wp_version, '3.2', '<')) add_action('all_admin_notices', array($this, 'show_admin_warning_wordpressversion')); + } + + /* + private function reset_all_updraft_admin_notices() { + + $actions_to_remove = array('show_admin_warning_googledrive', 'show_admin_warning_googlecloud', 'show_admin_warning_dropbox', 'show_admin_warning_onedrive', 'show_admin_warning_updraftvault', 'show_admin_warning_diskspace', 'show_admin_warning_disabledcron', 'show_admin_debug_warning', 'show_admin_warning_execution_time', 'show_admin_warning_litespeed', 'show_admin_warning_wordpressversion'); + + foreach ($actions_to_remove as $action) { + remove_action('all_admin_notices', $action); + } + + } + */ + + //Used to output the information for the next scheduled backup + //**// moved to function for the ajax saves + private function next_scheduled_backups_output() { + // UNIX timestamp + $next_scheduled_backup = wp_next_scheduled('updraft_backup'); + if ($next_scheduled_backup) { + // Convert to GMT + $next_scheduled_backup_gmt = gmdate('Y-m-d H:i:s', $next_scheduled_backup); + // Convert to blog time zone + $next_scheduled_backup = get_date_from_gmt($next_scheduled_backup_gmt, 'D, F j, Y H:i'); +// $next_scheduled_backup = date_i18n('D, F j, Y H:i', $next_scheduled_backup); + } else { + $next_scheduled_backup = __('Nothing currently scheduled', 'updraftplus'); + $files_not_scheduled = true; + } + + $next_scheduled_backup_database = wp_next_scheduled('updraft_backup_database'); + if (UpdraftPlus_Options::get_updraft_option('updraft_interval_database',UpdraftPlus_Options::get_updraft_option('updraft_interval')) == UpdraftPlus_Options::get_updraft_option('updraft_interval')) { + if (isset($files_not_scheduled)) { + $next_scheduled_backup_database = $next_scheduled_backup; + $database_not_scheduled = true; + } else { + $next_scheduled_backup_database = __("At the same time as the files backup", 'updraftplus'); + $next_scheduled_backup_database_same_time = true; + } + } else { + if ($next_scheduled_backup_database) { + // Convert to GMT + $next_scheduled_backup_database_gmt = gmdate('Y-m-d H:i:s', $next_scheduled_backup_database); + // Convert to blog time zone + $next_scheduled_backup_database = get_date_from_gmt($next_scheduled_backup_database_gmt, 'D, F j, Y H:i'); +// $next_scheduled_backup_database = date_i18n('D, F j, Y H:i', $next_scheduled_backup_database); + } else { + $next_scheduled_backup_database = __('Nothing currently scheduled', 'updraftplus'); + $database_not_scheduled = true; + } + } + ?> + + + + + : + + + + : + + + register_template_directories(); + + global $updraftplus, $wp_version, $pagenow; + add_filter('updraftplus_dirlist_others', array($updraftplus, 'backup_others_dirlist')); + add_filter('updraftplus_dirlist_uploads', array($updraftplus, 'backup_uploads_dirlist')); + + // First, the checks that are on all (admin) pages: + + $service = UpdraftPlus_Options::get_updraft_option('updraft_service'); + + if (UpdraftPlus_Options::user_can_manage()) { + + $this->print_restore_in_progress_box_if_needed(); + + // Main dashboard page advert + // Since our nonce is printed, make sure they have sufficient credentials + if ($pagenow == 'index.php' && current_user_can('update_plugins') && (!file_exists(UPDRAFTPLUS_DIR.'/udaddons') || (defined('UPDRAFTPLUS_FORCE_DASHNOTICE') && UPDRAFTPLUS_FORCE_DASHNOTICE))) { + + $dismissed_until = UpdraftPlus_Options::get_updraft_option('updraftplus_dismisseddashnotice', 0); + + $backup_dir = $updraftplus->backups_dir_location(); + // N.B. Not an exact proxy for the installed time; they may have tweaked the expert option to move the directory + $installed = @filemtime($backup_dir.'/index.html'); + $installed_for = time() - $installed; + + if (($installed && time() > $dismissed_until && $installed_for > 28*86400 && !defined('UPDRAFTPLUS_NOADS_B')) || (defined('UPDRAFTPLUS_FORCE_DASHNOTICE') && UPDRAFTPLUS_FORCE_DASHNOTICE)) { + add_action('all_admin_notices', array($this, 'show_admin_notice_upgradead') ); + } + } + + //Moved out for use with Ajax saving + $this->setup_all_admin_notices_global($service); + } + + // Next, the actions that only come on the UpdraftPlus page + if ($pagenow != UpdraftPlus_Options::admin_page() || empty($_REQUEST['page']) || 'updraftplus' != $_REQUEST['page']) return; + $this->setup_all_admin_notices_udonly($service); + + add_action('admin_enqueue_scripts', array($this, 'admin_enqueue_scripts'), 99999); + } + + public function updraft_ajaxrestore() { +// TODO: All needs testing with restricted filesystem permissions. Those credentials need to be POST-ed too - currently not. +// TODO +// error_log(serialize($_POST)); + + if (empty($_POST['subaction']) || 'restore' != $_POST['subaction']) { + echo json_encode(array('e' => 'Illegitimate data sent (0)')); + die(); + } + + if (empty($_POST['restorenonce'])) { + echo json_encode(array('e' => 'Illegitimate data sent (1)')); + die(); + } + + $restore_nonce = (string)$_POST['restorenonce']; + + if (empty($_POST['ajaxauth'])) { + echo json_encode(array('e' => 'Illegitimate data sent (2)')); + die(); + } + + global $updraftplus; + + $ajax_auth = get_site_option('updraft_ajax_restore_'.$restore_nonce); + + if (!$ajax_auth) { + echo json_encode(array('e' => 'Illegitimate data sent (3)')); + die(); + } + + if (!preg_match('/^([0-9a-f]+):(\d+)/i', $ajax_auth, $matches)) { + echo json_encode(array('e' => 'Illegitimate data sent (4)')); + die(); + } + + $nonce_time = $matches[2]; + $auth_code_sent = $matches[1]; + if (time() > $nonce_time + 600) { + echo json_encode(array('e' => 'Illegitimate data sent (5)')); + die(); + } + +// TODO: Deactivate the auth code whilst the operation is underway + + $last_one = empty($_POST['lastone']) ? false : true; + + @set_time_limit(UPDRAFTPLUS_SET_TIME_LIMIT); + + $updraftplus->backup_time_nonce($restore_nonce); + $updraftplus->logfile_open($restore_nonce); + + $timestamp = empty($_POST['timestamp']) ? false : (int)$_POST['timestamp']; + $multisite = empty($_POST['multisite']) ? false : (bool)$_POST['multisite']; + $created_by_version = empty($_POST['created_by_version']) ? false : (int)$_POST['created_by_version']; + + // TODO: We need to know about first_one (not yet sent), as well as last_one + + // TODO: Verify the values of these + $type = empty($_POST['type']) ? false : (int)$_POST['type']; + $backupfile = empty($_POST['backupfile']) ? false : (string)$_POST['backupfile']; + + $updraftplus->log("Deferred restore resumption: $type: $backupfile (timestamp=$timestamp, last_one=$last_one)"); + + + + $backupable_entities = $updraftplus->get_backupable_file_entities(true); + + if (!isset($backupable_entities[$type])) { + echo json_encode(array('e' => 'Illegitimate data sent (6 - no such entity)', 'data' => $type)); + die(); + } + + + if ($last_one) { + // Remove the auth nonce from the DB to prevent abuse + delete_site_option('updraft_ajax_restore_'.$restore_nonce); + } else { + // Reset the counter after a successful operation + update_site_option('updraft_ajax_restore_'.$restore_nonce, $auth_code_sent.':'.time()); + } + + echo json_encode(array('e' => 'TODO', 'd' => $_POST)); + die; + } + + public function wp_before_admin_bar_render() { + global $wp_admin_bar; + + if (!UpdraftPlus_Options::user_can_manage()) return; + if (defined('UPDRAFTPLUS_ADMINBAR_DISABLE') && UPDRAFTPLUS_ADMINBAR_DISABLE) return; + + if (false == apply_filters('updraftplus_settings_page_render', true)) return; + + $option_location = UpdraftPlus_Options::admin_page_url(); + + $args = array( + 'id' => 'updraft_admin_node', + 'title' => apply_filters('updraftplus_admin_node_title', 'UpdraftPlus') + ); + $wp_admin_bar->add_node($args); + + $args = array( + 'id' => 'updraft_admin_node_status', + 'title' => __('Current Status', 'updraftplus').' / '.__('Backup Now', 'updraftplus'), + 'parent' => 'updraft_admin_node', + 'href' => $option_location.'?page=updraftplus&tab=status' + ); + $wp_admin_bar->add_node($args); + + $args = array( + 'id' => 'updraft_admin_node_backups', + 'title' => __('Existing Backups', 'updraftplus'), + 'parent' => 'updraft_admin_node', + 'href' => $option_location.'?page=updraftplus&tab=backups' + ); + $wp_admin_bar->add_node($args); + + $args = array( + 'id' => 'updraft_admin_node_settings', + 'title' => __('Settings', 'updraftplus'), + 'parent' => 'updraft_admin_node', + 'href' => $option_location.'?page=updraftplus&tab=settings' + ); + $wp_admin_bar->add_node($args); + + $args = array( + 'id' => 'updraft_admin_node_expert_content', + 'title' => __('Advanced Tools', 'updraftplus'), + 'parent' => 'updraft_admin_node', + 'href' => $option_location.'?page=updraftplus&tab=expert' + ); + $wp_admin_bar->add_node($args); + + $args = array( + 'id' => 'updraft_admin_node_addons', + 'title' => __('Extensions', 'updraftplus'), + 'parent' => 'updraft_admin_node', + 'href' => $option_location.'?page=updraftplus&tab=addons' + ); + $wp_admin_bar->add_node($args); + + global $updraftplus; + if (!$updraftplus->have_addons) { + $args = array( + 'id' => 'updraft_admin_node_premium', + 'title' => 'UpdraftPlus Premium', + 'parent' => 'updraft_admin_node', + 'href' => apply_filters('updraftplus_com_link','https://updraftplus.com/shop/updraftplus-premium/') + ); + $wp_admin_bar->add_node($args); + } + } + +// // Defeat other plugins/themes which dump their jQuery UI CSS onto our settings page +// public function style_loader_tag($link, $handle) { +// if ('jquery-ui' != $handle || false === strpos) return $link; +// return "\n"; +// } + + public function show_admin_notice_upgradead() { + $this->include_template('wp-admin/notices/thanks-for-using-main-dash.php'); + } + + private function ensure_sufficient_jquery_and_enqueue() { + global $updraftplus, $wp_version; + + $enqueue_version = @constant('WP_DEBUG') ? $updraftplus->version.'-'.time() : $updraftplus->version; + + if (version_compare($wp_version, '3.3', '<')) { + // Require a newer jQuery (3.2.1 has 1.6.1, so we go for something not too much newer). We use .on() in a way that is incompatible with < 1.7 + wp_deregister_script('jquery'); + wp_register_script('jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js', false, '1.7.2', false); + wp_enqueue_script('jquery'); + // No plupload until 3.3 + wp_enqueue_script('updraftplus-admin-ui', UPDRAFTPLUS_URL.'/includes/updraft-admin-ui.js', array('jquery', 'jquery-ui-dialog'), $enqueue_version, true); + } else { + wp_enqueue_script('updraftplus-admin-ui', UPDRAFTPLUS_URL.'/includes/updraft-admin-ui.js', array('jquery', 'jquery-ui-dialog', 'plupload-all'), $enqueue_version); + } + + } + + // This is also called directly from the auto-backup add-on + public function admin_enqueue_scripts() { + + global $updraftplus, $wp_locale; + + // Defeat other plugins/themes which dump their jQuery UI CSS onto our settings page + wp_deregister_style('jquery-ui'); + wp_enqueue_style('jquery-ui', UPDRAFTPLUS_URL.'/includes/jquery-ui.custom.css', array(), '1.11.4'); + + $our_version = @constant('SCRIPT_DEBUG') ? $updraftplus->version.'.'.time() : $updraftplus->version; + + wp_enqueue_style('updraft-admin-css', UPDRAFTPLUS_URL.'/css/admin.css', array(), $our_version); +// add_filter('style_loader_tag', array($this, 'style_loader_tag'), 10, 2); + + $this->ensure_sufficient_jquery_and_enqueue(); + + wp_enqueue_script('jquery-blockui', UPDRAFTPLUS_URL.'/includes/jquery.blockUI.js', array('jquery'), '2.70.0'); + + wp_enqueue_script('jquery-labelauty', UPDRAFTPLUS_URL.'/includes/labelauty/jquery-labelauty.js', array('jquery'), '20160622-ud'); + wp_enqueue_style('jquery-labelauty', UPDRAFTPLUS_URL.'/includes/labelauty/jquery-labelauty.css', array(), '20150925'); + + do_action('updraftplus_admin_enqueue_scripts'); + + $day_selector = ''; + for ($day_index = 0; $day_index <= 6; $day_index++) { +// $selected = ($opt == $day_index) ? 'selected="selected"' : ''; + $selected = ''; + $day_selector .= "\n\t'; + } + + $mday_selector = ''; + for ($mday_index = 1; $mday_index <= 28; $mday_index++) { +// $selected = ($opt == $mday_index) ? 'selected="selected"' : ''; + $selected = ''; + $mday_selector .= "\n\t'; + } + + wp_localize_script('updraftplus-admin-ui', 'updraftlion', array( + 'sendonlyonwarnings' => __('Send a report only when there are warnings/errors', 'updraftplus'), + 'wholebackup' => __('When the Email storage method is enabled, also send the entire backup', 'updraftplus'), + 'emailsizelimits' => esc_attr(sprintf(__('Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive.','updraftplus'), '10-20')), + 'rescanning' => __('Rescanning (looking for backups that you have uploaded manually into the internal backup store)...','updraftplus'), + 'rescanningremote' => __('Rescanning remote and local storage for backup sets...','updraftplus'), + 'enteremailhere' => esc_attr(__('To send to more than one address, separate each address with a comma.', 'updraftplus')), + 'excludedeverything' => __('If you exclude both the database and the files, then you have excluded everything!', 'updraftplus'), + 'nofileschosen' => __('You have chosen to backup files, but no file entities have been selected', 'updraftplus'), + 'restoreproceeding' => __('The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished.', 'updraftplus'), + 'unexpectedresponse' => __('Unexpected response:','updraftplus'), + 'servererrorcode' => __('The web server returned an error code (try again, or check your web server logs)', 'updraftplus'), + 'newuserpass' => __("The new user's RackSpace console password is (this will not be shown again):", 'updraftplus'), + 'trying' => __('Trying...', 'updraftplus'), + 'fetching' => __('Fetching...', 'updraftplus'), + 'calculating' => __('calculating...','updraftplus'), + 'begunlooking' => __('Begun looking for this entity','updraftplus'), + 'stilldownloading' => __('Some files are still downloading or being processed - please wait.', 'updraftplus'), + 'processing' => __('Processing files - please wait...', 'updraftplus'), + 'emptyresponse' => __('Error: the server sent an empty response.', 'updraftplus'), + 'warnings' => __('Warnings:','updraftplus'), + 'errors' => __('Errors:','updraftplus'), + 'jsonnotunderstood' => __('Error: the server sent us a response which we did not understand.', 'updraftplus'), + 'errordata' => __('Error data:', 'updraftplus'), + 'error' => __('Error:','updraftplus'), + 'errornocolon' => __('Error','updraftplus'), + 'fileready' => __('File ready.','updraftplus'), + 'youshould' => __('You should:','updraftplus'), + 'deletefromserver' => __('Delete from your web server','updraftplus'), + 'downloadtocomputer' => __('Download to your computer','updraftplus'), + 'andthen' => __('and then, if you wish,', 'updraftplus'), + 'notunderstood' => __('Download error: the server sent us a response which we did not understand.', 'updraftplus'), + 'requeststart' => __('Requesting start of backup...', 'updraftplus'), + 'phpinfo' => __('PHP information', 'updraftplus'), + 'delete_old_dirs' => __('Delete Old Directories', 'updraftplus'), + 'raw' => __('Raw backup history', 'updraftplus'), + 'notarchive' => __('This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz)).', 'updraftplus').' '.__('However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern.','updraftplus'), + 'notarchive2' => '

        '.__('This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz)).', 'updraftplus').'

        '.apply_filters('updraftplus_if_foreign_then_premium_message', '

        '.__('If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you.', 'updraftplus').'

        '), + 'makesure' => __('(make sure that you were trying to upload a zip file previously created by UpdraftPlus)','updraftplus'), + 'uploaderror' => __('Upload error:','updraftplus'), + 'notdba' => __('This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz).','updraftplus'), + 'uploaderr' => __('Upload error', 'updraftplus'), + 'followlink' => __('Follow this link to attempt decryption and download the database file to your computer.','updraftplus'), + 'thiskey' => __('This decryption key will be attempted:','updraftplus'), + 'unknownresp' => __('Unknown server response:','updraftplus'), + 'ukrespstatus' => __('Unknown server response status:','updraftplus'), + 'uploaded' => __('The file was uploaded.','updraftplus'), + 'backupnow' => __('Backup Now', 'updraftplus'), + 'cancel' => __('Cancel', 'updraftplus'), + 'deletebutton' => __('Delete', 'updraftplus'), + 'createbutton' => __('Create', 'updraftplus'), + 'youdidnotselectany' => __('You did not select any components to restore. Please select at least one, and then try again.', 'updraftplus'), + 'proceedwithupdate' => __('Proceed with update', 'updraftplus'), + 'close' => __('Close', 'updraftplus'), + 'restore' => __('Restore', 'updraftplus'), + 'downloadlogfile' => __('Download log file', 'updraftplus'), + 'automaticbackupbeforeupdate' => __('Automatic backup before update', 'updraftplus'), + 'unsavedsettings' => __('You have made changes to your settings, and not saved.', 'updraftplus'), + 'saving' => __('Saving...', 'updraftplus'), + 'connect' => __('Connect', 'updraftplus'), + 'connecting' => __('Connecting...', 'updraftplus'), + 'disconnect' => __('Disconnect', 'updraftplus'), + 'disconnecting' => __('Disconnecting...', 'updraftplus'), + 'counting' => __('Counting...', 'updraftplus'), + 'updatequotacount' => __('Update quota count', 'updraftplus'), + 'addingsite' => __('Adding...', 'updraftplus'), + 'addsite' => __('Add site', 'updraftplus'), +// 'resetting' => __('Resetting...', 'updraftplus'), + 'creating_please_allow' => __('Creating...', 'updraftplus').(function_exists('openssl_encrypt') ? '' : ' ('.__('your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup.', 'updraftplus').')'), + 'sendtosite' => __('Send to site:', 'updraftplus'), + 'checkrpcsetup' => sprintf(__('You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly.', 'updraftplus'), '2.10.3'), + 'pleasenamekey' => __('Please give this key a name (e.g. indicate the site it is for):', 'updraftplus'), + 'key' => __('Key', 'updraftplus'), + 'nokeynamegiven' => sprintf(__("Failure: No %s was given.",'updraftplus'), __('key name','updraftplus')), + 'deleting' => __('Deleting...', 'updraftplus'), + 'enter_mothership_url' => __('Please enter a valid URL', 'updraftplus'), + 'delete_response_not_understood' => __("We requested to delete the file, but could not understand the server's response", 'updraftplus'), + 'testingconnection' => __('Testing connection...', 'updraftplus'), + 'send' => __('Send', 'updraftplus'), + 'migratemodalheight' => class_exists('UpdraftPlus_Addons_Migrator') ? 555 : 300, + 'migratemodalwidth' => class_exists('UpdraftPlus_Addons_Migrator') ? 770 : 500, + 'download' => _x('Download', '(verb)', 'updraftplus'), + 'unsavedsettingsbackup' => __('You have made changes to your settings, and not saved.', 'updraftplus')."\n".__('You should save your changes to ensure that they are used for making your backup.','updraftplus'), + 'unsaved_settings_export' => __('You have made changes to your settings, and not saved.', 'updraftplus')."\n".__('Your export file will be of your displayed settings, not your saved ones.','updraftplus'), + 'dayselector' => $day_selector, + 'mdayselector' => $mday_selector, + 'day' => __('day', 'updraftplus'), + 'inthemonth' => __('in the month', 'updraftplus'), + 'days' => __('day(s)', 'updraftplus'), + 'hours' => __('hour(s)', 'updraftplus'), + 'weeks' => __('week(s)', 'updraftplus'), + 'forbackupsolderthan' => __('For backups older than', 'updraftplus'), + 'ud_url' => UPDRAFTPLUS_URL, + 'processing' => __('Processing...', 'updraftplus'), + 'pleasefillinrequired' => __('Please fill in the required information.', 'updraftplus'), + 'test_settings' => __('Test %s Settings', 'updraftplus'), + 'testing_settings' => __('Testing %s Settings...', 'updraftplus'), + 'settings_test_result' => __('%s settings test result:', 'updraftplus'), + 'nothing_yet_logged' => __('Nothing yet logged', 'updraftplus'), + 'import_select_file' => __('You have not yet selected a file to import.','updraftplus'), + 'updraft_settings_url' => UpdraftPlus_Options::admin_page_url().'?page=updraftplus', + 'network_site_url' => network_site_url(), + 'importing' => __('Importing...', 'updraftplus'), + 'importing_data_from' => __('This will import data from:', 'updraftplus'), + 'exported_on' => __('Which was exported on:','updraftplus'), + 'continue_import' => __('Do you want to carry out the import?','updraftplus'), + 'complete' => __('Complete','updraftplus'), + 'remote_delete_limit' => defined('UPDRAFTPLUS_REMOTE_DELETE_LIMIT') ? UPDRAFTPLUS_REMOTE_DELETE_LIMIT : 15, + 'remote_files_deleted' => __('remote files deleted', 'updraftplus'), + ) ); + } + + // Despite the name, this fires irrespective of what capabilities the user has (even none - so be careful) + public function core_upgrade_preamble() { + // They need to be able to perform backups, and to perform updates + if (!UpdraftPlus_Options::user_can_manage() || (!current_user_can('update_core') && !current_user_can('update_plugins') && !current_user_can('update_themes'))) return; + + if (!class_exists('UpdraftPlus_Addon_Autobackup')) { + if (defined('UPDRAFTPLUS_NOADS_B')) return; + } + + ?> + '; + echo '

        '. __('Be safe with an automatic backup','updraftplus').'

        '; + echo apply_filters('updraftplus_autobackup_blurb', ''); + echo '
        '; + } + ?> + + 'html5,flash,silverlight,html4', + 'browse_button' => 'plupload-browse-button', + 'container' => 'plupload-upload-ui', + 'drop_element' => 'drag-drop-area', + 'file_data_name' => 'async-upload', + 'multiple_queues' => true, + 'max_file_size' => '100Gb', + 'chunk_size' => $chunk_size.'b', + 'url' => admin_url('admin-ajax.php', 'relative'), + 'multipart' => true, + 'multi_selection' => true, + 'urlstream_upload' => true, + // additional post data to send to our ajax hook + 'multipart_params' => array( + '_ajax_nonce' => wp_create_nonce('updraft-uploader'), + 'action' => 'plupload_action' + ) + ); +// 'flash_swf_url' => includes_url('js/plupload/plupload.flash.swf'), +// 'silverlight_xap_url' => includes_url('js/plupload/plupload.silverlight.xap'), + +// We want to receive -db files also... +// if (1) { +// $plupload_init['filters'] = array(array('title' => __('Allowed Files'), 'extensions' => 'zip,tar,gz,bz2,crypt,sql,txt')); +// } else { +// } + + # WP 3.9 updated to plupload 2.0 - https://core.trac.wordpress.org/ticket/25663 + if (is_file(ABSPATH.WPINC.'/js/plupload/Moxie.swf')) { + $plupload_init['flash_swf_url'] = includes_url('js/plupload/Moxie.swf'); + } else { + $plupload_init['flash_swf_url'] = includes_url('js/plupload/plupload.flash.swf'); + } + + if (is_file(ABSPATH.WPINC.'/js/plupload/Moxie.xap')) { + $plupload_init['silverlight_xap_url'] = includes_url('js/plupload/Moxie.xap'); + } else { + $plupload_init['silverlight_xap_url'] = includes_url('js/plupload/plupload.silverlight.swf'); + } + + ?> + backups_dir_location(); + $disk_free_space = @disk_free_space($updraft_dir); + if ($disk_free_space == false) return -1; + return ($disk_free_space > $space) ? true : false; + } + + # Adds the settings link under the plugin on the plugin screen. + public function plugin_action_links($links, $file) { + if (is_array($links) && $file == 'updraftplus/updraftplus.php'){ + $settings_link = ''.__("Settings", "updraftplus").''; + array_unshift($links, $settings_link); +// $settings_link = ''.__("Donate","UpdraftPlus").''; +// array_unshift($links, $settings_link); + $settings_link = ''.__("Add-Ons / Pro Support","updraftplus").''; + array_unshift($links, $settings_link); + } + return $links; + } + + public function admin_action_upgrade_pluginortheme() { + if (isset($_GET['action']) && ($_GET['action'] == 'upgrade-plugin' || $_GET['action'] == 'upgrade-theme') && !class_exists('UpdraftPlus_Addon_Autobackup') && !defined('UPDRAFTPLUS_NOADS_B')) { + + if ($_GET['action'] == 'upgrade-plugin') { + if (!current_user_can('update_plugins')) return; + } else { + if (!current_user_can('update_themes')) return; + } + + $dismissed_until = UpdraftPlus_Options::get_updraft_option('updraftplus_dismissedautobackup', 0); + if ($dismissed_until > time()) return; + + if ( 'upgrade-plugin' == $_GET['action'] ) { + $title = __('Update Plugin'); + $parent_file = 'plugins.php'; + $submenu_file = 'plugins.php'; + } else { + $title = __('Update Theme'); + $parent_file = 'themes.php'; + $submenu_file = 'themes.php'; + } + + require_once(ABSPATH.'wp-admin/admin-header.php'); + + if (!class_exists('UpdraftPlus_Notices')) require_once(UPDRAFTPLUS_DIR.'/includes/updraftplus-notices.php'); + + UpdraftPlus_Notices::do_notice('autobackup', 'autobackup'); + } + } + + public function show_admin_warning($message, $class = "updated") { + echo '
        '."

        $message

        "; + } + + // + public function show_admin_warning_unwritable(){ + $unwritable_mess = htmlspecialchars(__("The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option).", 'updraftplus')); + $this->show_admin_warning($unwritable_mess, "error"); + } + + public function show_admin_nosettings_warning() { + $this->show_admin_warning(''.__('Welcome to UpdraftPlus!', 'updraftplus').' '.__('To make a backup, just press the Backup Now button.', 'updraftplus').' '.__('To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab.', 'updraftplus').'', 'updated notice is-dismissible'); + } + + public function show_admin_warning_execution_time() { + $this->show_admin_warning(''.__('Warning','updraftplus').': '.sprintf(__('The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)', 'updraftplus'), (int)@ini_get('max_execution_time'), 90)); + } + + public function show_admin_warning_disabledcron() { + $this->show_admin_warning(''.__('Warning','updraftplus').': '.__('The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled.','updraftplus').' '.__('Go here for more information.','updraftplus').'', 'updated updraftplus-disable-wp-cron-warning'); + } + + public function show_admin_warning_diskspace() { + $this->show_admin_warning(''.__('Warning','updraftplus').': '.sprintf(__('You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue.','updraftplus'),'35 MB')); + } + + public function show_admin_warning_wordpressversion() { + $this->show_admin_warning(''.__('Warning','updraftplus').': '.sprintf(__('UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress.', 'updraftplus'), '3.2')); + } + + public function show_admin_warning_litespeed() { + $this->show_admin_warning(''.__('Warning','updraftplus').': '.sprintf(__('Your website is hosted using the %s web server.','updraftplus'),'LiteSpeed').' '.__('Please consult this FAQ if you have problems backing up.', 'updraftplus').''); + } + + public function show_admin_debug_warning() { + $this->show_admin_warning(''.__('Notice','updraftplus').': '.__('UpdraftPlus\'s debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request.', 'updraftplus').''); + } + + public function show_admin_warning_overdue_crons($howmany) { + $ret = '

        '; + $ret .= ''.__('Warning','updraftplus').': '.sprintf(__('WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working.', 'updraftplus'), $howmany).' '.__('Read this page for a guide to possible causes and how to fix it.', 'updraftplus').''; + $ret .= '

        '; + return $ret; + } + + //checking remote storage + public function show_admin_warning_dropbox() { + $this->show_admin_warning(''.__('UpdraftPlus notice:','updraftplus').' '.sprintf(__('Follow this link to authorize access to your %s account (you will not be able to back up to %s without it).','updraftplus'), 'Dropbox', 'Dropbox').'', 'updated updraft_authenticate_dropbox'); + } + + public function show_admin_warning_onedrive() { + $this->show_admin_warning(''.__('UpdraftPlus notice:','updraftplus').' '.sprintf(__('Follow this link to authorize access to your %s account (you will not be able to back up to %s without it).','updraftplus'), 'OneDrive', 'OneDrive').'', 'updated updraft_authenticate_onedrive'); + } + + public function show_admin_warning_updraftvault() { + $this->show_admin_warning(''.__('UpdraftPlus notice:','updraftplus').' '.sprintf(__('%s has been chosen for remote storage, but you are not currently connected.', 'updraftplus'), 'UpdraftPlus Vault').' '.__('Go to the remote storage settings in order to connect.', 'updraftplus'), 'updated'); + } + + public function show_admin_warning_googledrive() { + $this->show_admin_warning(''.__('UpdraftPlus notice:','updraftplus').' '.sprintf(__('Follow this link to authorize access to your %s account (you will not be able to back up to %s without it).','updraftplus'), 'Google Drive', 'Google Drive').'', 'updated updraft_authenticate_googledrive'); + } + + public function show_admin_warning_googlecloud() { + $this->show_admin_warning(''.__('UpdraftPlus notice:','updraftplus').' '.sprintf(__('Follow this link to authorize access to your %s account (you will not be able to back up to %s without it).','updraftplus'), 'Google Cloud', 'Google Cloud').'', 'updated updraft_authenticate_googlecloud'); + } + + // This options filter removes ABSPATH off the front of updraft_dir, if it is given absolutely and contained within it + public function prune_updraft_dir_prefix($updraft_dir) { + if ('/' == substr($updraft_dir, 0, 1) || "\\" == substr($updraft_dir, 0, 1) || preg_match('/^[a-zA-Z]:/', $updraft_dir)) { + $wcd = trailingslashit(WP_CONTENT_DIR); + if (strpos($updraft_dir, $wcd) === 0) { + $updraft_dir = substr($updraft_dir, strlen($wcd)); + } + # Legacy +// if (strpos($updraft_dir, ABSPATH) === 0) { +// $updraft_dir = substr($updraft_dir, strlen(ABSPATH)); +// } + } + return $updraft_dir; + } + + public function updraft_download_backup() { + + if (empty($_REQUEST['_wpnonce']) || !wp_verify_nonce($_REQUEST['_wpnonce'], 'updraftplus_download')) die; + + if (empty($_REQUEST['timestamp']) || !is_numeric($_REQUEST['timestamp']) || empty($_REQUEST['type'])) exit; + + $findex = empty($_REQUEST['findex']) ? 0 : (int)$_REQUEST['findex']; + $stage = empty($_REQUEST['stage']) ? '' : $_REQUEST['stage']; + + // This call may not actually return, depending upon what mode it is called in + echo json_encode($this->do_updraft_download_backup($findex, $_REQUEST['type'], $_REQUEST['timestamp'], $stage)); + + die(); + } + + // This function may die(), depending on the request being made in $stage + public function do_updraft_download_backup($findex, $type, $timestamp, $stage, $close_connection_callable = false) { + + @set_time_limit(UPDRAFTPLUS_SET_TIME_LIMIT); + + global $updraftplus; + + // This is a bit ugly; these variables get placed back into $_POST (where they may possibly have come from), so that UpdraftPlus::log() can detect exactly where to log the download status. + $_POST['findex'] = $findex; + $_POST['type'] = $type; + $_POST['timestamp'] = $timestamp; + + // Check that it is a known entity type; if not, die + if ('db' != substr($type, 0, 2)) { + $backupable_entities = $updraftplus->get_backupable_file_entities(true); + foreach ($backupable_entities as $t => $info) { + if ($type == $t) $type_match = true; + } + if (empty($type_match)) return array('result' => 'error', 'code' => 'no_such_type'); + } + + // We already know that no possible entities have an MD5 clash (even after 2 characters) + // Also, there's nothing enforcing a requirement that nonces are hexadecimal + $job_nonce = dechex($timestamp).$findex.substr(md5($type), 0, 3); + + // You need a nonce before you can set job data. And we certainly don't yet have one. + $updraftplus->backup_time_nonce($job_nonce); + + $debug_mode = UpdraftPlus_Options::get_updraft_option('updraft_debug_mode'); + + // Set the job type before logging, as there can be different logging destinations + $updraftplus->jobdata_set('job_type', 'download'); + $updraftplus->jobdata_set('job_time_ms', $updraftplus->job_time_ms); + + // Retrieve the information from our backup history + $backup_history = $updraftplus->get_backup_history(); + // Base name + $file = $backup_history[$timestamp][$type]; + + // Deal with multi-archive sets + if (is_array($file)) $file=$file[$findex]; + + // Where it should end up being downloaded to + $fullpath = $updraftplus->backups_dir_location().'/'.$file; + + if (2 == $stage) { + $updraftplus->spool_file($fullpath); + // Do not return - we do not want the caller to add any output + die; + } + + if ('delete' == $stage) { + @unlink($fullpath); + $updraftplus->log("The file has been deleted ($file)"); + return array('result' => 'deleted'); + } + + // TODO: FIXME: Failed downloads may leave log files forever (though they are small) + if ($debug_mode) $updraftplus->logfile_open($updraftplus->nonce); + + set_error_handler(array($updraftplus, 'php_error'), E_ALL & ~E_STRICT); + + $updraftplus->log("Requested to obtain file: timestamp=$timestamp, type=$type, index=$findex"); + + $itext = empty($findex) ? '' : $findex; + $known_size = isset($backup_history[$timestamp][$type.$itext.'-size']) ? $backup_history[$timestamp][$type.$itext.'-size'] : 0; + + $services = (isset($backup_history[$timestamp]['service'])) ? $backup_history[$timestamp]['service'] : false; + if (is_string($services)) $services = array($services); + + $updraftplus->jobdata_set('service', $services); + + // Fetch it from the cloud, if we have not already got it + + $needs_downloading = false; + + if (!file_exists($fullpath)) { + //if the file doesn't exist and they're using one of the cloud options, fetch it down from the cloud. + $needs_downloading = true; + $updraftplus->log('File does not yet exist locally - needs downloading'); + } elseif ($known_size > 0 && filesize($fullpath) < $known_size) { + $updraftplus->log("The file was found locally (".filesize($fullpath).") but did not match the size in the backup history ($known_size) - will resume downloading"); + $needs_downloading = true; + } elseif ($known_size > 0) { + $updraftplus->log('The file was found locally and matched the recorded size from the backup history ('.round($known_size/1024,1).' KB)'); + } else { + $updraftplus->log('No file size was found recorded in the backup history. We will assume the local one is complete.'); + $known_size = filesize($fullpath); + } + + // The AJAX responder that updates on progress wants to see this + $updraftplus->jobdata_set('dlfile_'.$timestamp.'_'.$type.'_'.$findex, "downloading:$known_size:$fullpath"); + + if ($needs_downloading) { + + // Update the "last modified" time to dissuade any other instances from thinking that no downloaders are active + @touch($fullpath); + + $msg = array( + 'result' => 'needs_download' + ); + + if ($close_connection_callable && is_callable($close_connection_callable)) { + call_user_func($close_connection_callable, $msg); + } else { + $updraftplus->close_browser_connection(json_encode($msg)); + } + + $is_downloaded = false; + add_action('http_request_args', array($updraftplus, 'modify_http_options')); + foreach ($services as $service) { + if ($is_downloaded) continue; + $download = $this->download_file($file, $service); + if (is_readable($fullpath) && $download !== false) { + clearstatcache(); + $updraftplus->log('Remote fetch was successful (file size: '.round(filesize($fullpath)/1024,1).' KB)'); + $is_downloaded = true; + } else { + clearstatcache(); + if (0 === @filesize($fullpath)) @unlink($fullpath); + $updraftplus->log('Remote fetch failed'); + } + } + remove_action('http_request_args', array($updraftplus, 'modify_http_options')); + } + + // Now, be ready to spool the thing to the browser + if (is_file($fullpath) && is_readable($fullpath)) { + + // That message is then picked up by the AJAX listener + $updraftplus->jobdata_set('dlfile_'.$timestamp.'_'.$type.'_'.$findex, 'downloaded:'.filesize($fullpath).":$fullpath"); + + $result = 'downloaded'; + + } else { + + $updraftplus->jobdata_set('dlfile_'.$timestamp.'_'.$type.'_'.$findex, 'failed'); + $updraftplus->jobdata_set('dlerrors_'.$timestamp.'_'.$type.'_'.$findex, $updraftplus->errors); + $updraftplus->log('Remote fetch failed. File '.$fullpath.' did not exist or was unreadable. If you delete local backups then remote retrieval may have failed.'); + + $result = 'download_failed'; + } + + restore_error_handler(); + + @fclose($updraftplus->logfile_handle); + if (!$debug_mode) @unlink($updraftplus->logfile_name); + + // The browser connection was possibly already closed, but not necessarily + return array('result' => $result); + + } + + # Pass only a single service, as a string, into this function + private function download_file($file, $service) { + + global $updraftplus; + + @set_time_limit(UPDRAFTPLUS_SET_TIME_LIMIT); + + $updraftplus->log("Requested file from remote service: $service: $file"); + + $method_include = UPDRAFTPLUS_DIR.'/methods/'.$service.'.php'; + if (file_exists($method_include)) require_once($method_include); + + $objname = "UpdraftPlus_BackupModule_${service}"; + if (method_exists($objname, "download")) { + $remote_obj = new $objname; + return $remote_obj->download($file); + } else { + $updraftplus->log("Automatic backup restoration is not available with the method: $service."); + $updraftplus->log("$file: ".sprintf(__("The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder", 'updraftplus'), $service)." (".$this->prune_updraft_dir_prefix($updraftplus->backups_dir_location()).")", 'error'); + return false; + } + + } + + public function updraft_ajax_handler() { + + global $updraftplus; + + $nonce = (empty($_REQUEST['nonce'])) ? "" : $_REQUEST['nonce']; + + if (!wp_verify_nonce($nonce, 'updraftplus-credentialtest-nonce') || empty($_REQUEST['subaction'])) die('Security check'); + + // Mitigation in case the nonce leaked to an unauthorised user + if (isset($_REQUEST['subaction']) && 'dismissautobackup' == $_REQUEST['subaction']) { + if (!current_user_can('update_plugins') && !current_user_can('update_themes')) return; + } elseif (isset($_REQUEST['subaction']) && ('dismissexpiry' == $_REQUEST['subaction'] || 'dismissdashnotice' == $_REQUEST['subaction'])) { + if (!current_user_can('update_plugins')) return; + } else { + if (!UpdraftPlus_Options::user_can_manage()) return; + } + + // Some of this checks that _REQUEST['subaction'] is set, which is redundant (done already in the nonce check) + /* + // This one is no longer used anywhere + if (isset($_REQUEST['subaction']) && 'lastlog' == $_REQUEST['subaction']) { + + $last_message = UpdraftPlus_Options::get_updraft_option('updraft_lastmessage'); + + echo htmlspecialchars( '('.__('Nothing yet logged', 'updraftplus').')')); + + } else + */ + if ('forcescheduledresumption' == $_REQUEST['subaction'] && !empty($_REQUEST['resumption']) && !empty($_REQUEST['job_id']) && is_numeric($_REQUEST['resumption'])) { + // Casting $resumption to int is absolutely necessary, as the WP cron system uses a hashed serialisation of the parameters for identifying jobs. Different type => different hash => does not match + $resumption = (int)$_REQUEST['resumption']; + $job_id = $_REQUEST['job_id']; + $get_cron = $this->get_cron($job_id); + if (!is_array($get_cron)) { + echo json_encode(array('r' => false)); + } else { + $updraftplus->log("Forcing resumption: job id=$job_id, resumption=$resumption"); + $time = $get_cron[0]; +// wp_unschedule_event($time, 'updraft_backup_resume', array($resumption, $job_id)); + wp_clear_scheduled_hook('updraft_backup_resume', array($resumption, $job_id)); + $updraftplus->close_browser_connection(json_encode(array('r' => true))); + $updraftplus->jobdata_set_from_array($get_cron[1]); + $updraftplus->backup_resume($resumption, $job_id); + } + } elseif (isset($_GET['subaction']) && 'activejobs_list' == $_GET['subaction']) { + + echo json_encode($this->get_activejobs_list($_GET)); + + } elseif (isset($_REQUEST['subaction']) && 'updraftcentral_delete_key' == $_REQUEST['subaction'] && isset($_REQUEST['key_id'])) { + + global $updraftplus_updraftcentral_main; + if (!is_a($updraftplus_updraftcentral_main, 'UpdraftPlus_UpdraftCentral_Main')) { + echo json_encode(array('error' => 'UpdraftPlus_UpdraftCentral_Main object not found')); + die; + } + + echo json_encode($updraftplus_updraftcentral_main->delete_key($_REQUEST['key_id'])); + die; + + } elseif (isset($_REQUEST['subaction']) && ('updraftcentral_create_key' == $_REQUEST['subaction'] || 'updraftcentral_get_log' == $_REQUEST['subaction'])) { + + global $updraftplus_updraftcentral_main; + if (!is_a($updraftplus_updraftcentral_main, 'UpdraftPlus_UpdraftCentral_Main')) { + echo json_encode(array('error' => 'UpdraftPlus_UpdraftCentral_Main object not found')); + die; + } + + $call_method = substr($_REQUEST['subaction'], 15); + + echo json_encode(call_user_func(array($updraftplus_updraftcentral_main, $call_method), $_REQUEST)); + + die; + + } elseif (isset($_REQUEST['subaction']) && 'callwpaction' == $_REQUEST['subaction'] && !empty($_REQUEST['wpaction'])) { + + ob_start(); + + $res = 'Request received: '; + + if (preg_match('/^([^:]+)+:(.*)$/', stripslashes($_REQUEST['wpaction']), $matches)) { + $action = $matches[1]; + if (null === ($args = json_decode($matches[2], true))) { + $res .= "The parameters (should be JSON) could not be decoded"; + $action = false; + } else { + $res .= "Will despatch action: ".htmlspecialchars($action).", parameters: ".htmlspecialchars(implode(',', $args)); + } + } else { + $action = $_REQUEST['wpaction']; + $res .= "Will despatch action: ".htmlspecialchars($action).", no parameters"; + } + + echo json_encode(array('r' => $res)); + $ret = ob_get_clean(); + $updraftplus->close_browser_connection($ret); + if (!empty($action)) { + if (!empty($args)) { + do_action_ref_array($action, $args); + } else { + do_action($action); + } + } + die; + } elseif (isset($_REQUEST['subaction']) && 'whichdownloadsneeded' == $_REQUEST['subaction'] && is_array($_REQUEST['downloads']) && isset($_REQUEST['timestamp']) && is_numeric($_REQUEST['timestamp'])) { + // The purpose of this is to look at the list of indicated downloads, and indicate which are not already fully downloaded. i.e. Which need further action. + $send_back = array(); + + $backup = $updraftplus->get_backup_history($_REQUEST['timestamp']); + $updraft_dir = $updraftplus->backups_dir_location(); + $backupable_entities = $updraftplus->get_backupable_file_entities(); + + if (empty($backup)) { + echo json_encode(array('result' => 'asyouwere')); + } else { + foreach ($_REQUEST['downloads'] as $i => $download) { + if (is_array($download) && 2 == count($download) && isset($download[0]) && isset($download[1])) { + $entity = $download[0]; + if (('db' == $entity || isset($backupable_entities[$entity])) && isset($backup[$entity])) { + $indexes = explode(',', $download[1]); + $retain_string = ''; + foreach ($indexes as $index) { + $retain = true; // default + $findex = (0 == $index) ? '' : (string)$index; + $files = $backup[$entity]; + if (!is_array($files)) $files = array($files); + $size_key = $entity.$findex.'-size'; + if (isset($files[$index]) && isset($backup[$size_key])) { + $file = $updraft_dir.'/'.$files[$index]; + if (file_exists($file) && filesize($file) >= $backup[$size_key]) { + $retain = false; + } + } + if ($retain) { + $retain_string .= ('' === $retain_string) ? $index : ','.$index; + $send_back[$i][0] = $entity; + $send_back[$i][1] = $retain_string; + } + } + } else { + $send_back[$i][0] = $entity; + $send_back[$i][1] = $download[$i][1]; + } + } else { + // Format not understood. Just send it back as-is. + $send_back[$i] = $download[$i]; + } + } + // Finally, renumber the keys (to usual PHP style - 0, 1, ...). Otherwise, in order to preserve the indexes, json_encode() will create an object instead of an array in the case where $send_back only has one element (and is indexed with an index > 0) + $send_back = array_values($send_back); + echo json_encode(array('downloads' => $send_back)); + } + } elseif (isset($_REQUEST['subaction']) && 'httpget' == $_REQUEST['subaction']) { + if (empty($_REQUEST['uri'])) { + echo json_encode(array('r' => '')); + die; + } + $uri = $_REQUEST['uri']; + if (!empty($_REQUEST['curl'])) { + if (!function_exists('curl_exec')) { + echo json_encode(array('e' => 'No Curl installed')); + die; + } + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $uri); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_FAILONERROR, true); + curl_setopt($ch, CURLOPT_HEADER, true); + curl_setopt($ch, CURLOPT_VERBOSE, true); + curl_setopt($ch, CURLOPT_STDERR, $output=fopen('php://temp', "w+")); + $response = curl_exec($ch); + $error = curl_error($ch); + $getinfo = curl_getinfo($ch); + curl_close($ch); + $resp = array(); + if (false === $response) { + $resp['e'] = htmlspecialchars($error); + # json_encode(array('e' => htmlspecialchars($error))); + } + $resp['r'] = (empty($response)) ? '' : htmlspecialchars(substr($response, 0, 2048)); + rewind($output); + $verb = stream_get_contents($output); + if (!empty($verb)) $resp['r'] = htmlspecialchars($verb)."\n\n".$resp['r']; + echo json_encode($resp); +// echo json_encode(array('r' => htmlspecialchars(substr($response, 0, 2048)))); + } else { + $response = wp_remote_get($uri, array('timeout' => 10)); + if (is_wp_error($response)) { + echo json_encode(array('e' => htmlspecialchars($response->get_error_message()))); + die; + } + echo json_encode(array('r' => wp_remote_retrieve_response_code($response).': '.htmlspecialchars(substr(wp_remote_retrieve_body($response), 0, 2048)))); + } + die; + } elseif (isset($_REQUEST['subaction']) && 'dismissautobackup' == $_REQUEST['subaction']) { + UpdraftPlus_Options::update_updraft_option('updraftplus_dismissedautobackup', time() + 84*86400); + } elseif (isset($_REQUEST['subaction']) && 'dismiss_notice' == $_REQUEST['subaction']) { + UpdraftPlus_Options::update_updraft_option('dismissed_general_notices_until', time() + 84*86400); + } elseif (isset($_REQUEST['subaction']) && 'dismiss_season' == $_REQUEST['subaction']) { + UpdraftPlus_Options::update_updraft_option('dismissed_season_notices_until', time() + 366*86400); + } elseif (isset($_REQUEST['subaction']) && 'set_autobackup_default' == $_REQUEST['subaction']) { + // This option when set should have integers, not bools + $default = empty($_REQUEST['default']) ? 0 : 1; + UpdraftPlus_Options::update_updraft_option('updraft_autobackup_default', $default); + } elseif (isset($_REQUEST['subaction']) && 'dismissexpiry' == $_REQUEST['subaction']) { + UpdraftPlus_Options::update_updraft_option('updraftplus_dismissedexpiry', time() + 14*86400); + } elseif (isset($_REQUEST['subaction']) && 'dismissdashnotice' == $_REQUEST['subaction']) { + UpdraftPlus_Options::update_updraft_option('updraftplus_dismisseddashnotice', time() + 366*86400); + } elseif (isset($_REQUEST['subaction']) && 'poplog' == $_REQUEST['subaction']){ + + echo json_encode($this->fetch_log($_REQUEST['backup_nonce'])); + + } elseif (isset($_REQUEST['subaction']) && 'restore_alldownloaded' == $_REQUEST['subaction'] && isset($_REQUEST['restoreopts']) && isset($_REQUEST['timestamp'])) { + + $backups = $updraftplus->get_backup_history(); + $updraft_dir = $updraftplus->backups_dir_location(); + + $timestamp = (int)$_REQUEST['timestamp']; + if (!isset($backups[$timestamp])) { + echo json_encode(array('m' => '', 'w' => '', 'e' => __('No such backup set exists', 'updraftplus'))); + die; + } + + $mess = array(); + parse_str(stripslashes($_REQUEST['restoreopts']), $res); + + if (isset($res['updraft_restore'])) { + + set_error_handler(array($this, 'get_php_errors'), E_ALL & ~E_STRICT); + + $elements = array_flip($res['updraft_restore']); + + $warn = array(); $err = array(); + + @set_time_limit(UPDRAFTPLUS_SET_TIME_LIMIT); + $max_execution_time = (int)@ini_get('max_execution_time'); + + if ($max_execution_time>0 && $max_execution_time<61) { + $warn[] = sprintf(__('The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece).', 'updraftplus'), $max_execution_time); + } + + if (isset($backups[$timestamp]['native']) && false == $backups[$timestamp]['native']) { + $warn[] = __('This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site.', 'updraftplus').' '.__('You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website).', 'updraftplus'); + } + + if (isset($elements['db'])) { + + // Analyse the header of the database file + display results + list ($mess2, $warn2, $err2, $info) = $updraftplus->analyse_db_file($timestamp, $res); + $mess = array_merge($mess, $mess2); + $warn = array_merge($warn, $warn2); + $err = array_merge($err, $err2); + foreach ($backups[$timestamp] as $bid => $bval) { + if ('db' != $bid && 'db' == substr($bid, 0, 2) && '-size' != substr($bid, -5, 5)) { + $warn[] = __('Only the WordPress database can be restored; you will need to deal with the external database manually.', 'updraftplus'); + break; + } + } + } + + $backupable_entities = $updraftplus->get_backupable_file_entities(true, true); + $backupable_plus_db = $backupable_entities; + $backupable_plus_db['db'] = array('path' => 'path-unused', 'description' => __('Database', 'updraftplus')); + + if (!empty($backups[$timestamp]['meta_foreign'])) { + $foreign_known = apply_filters('updraftplus_accept_archivename', array()); + if (!is_array($foreign_known) || empty($foreign_known[$backups[$timestamp]['meta_foreign']])) { + $err[] = sprintf(__('Backup created by unknown source (%s) - cannot be restored.', 'updraftplus'), $backups[$timestamp]['meta_foreign']); + } else { + // For some reason, on PHP 5.5 passing by reference in a single array stopped working with apply_filters_ref_array (though not with do_action_ref_array). + $backupable_plus_db = apply_filters_ref_array("updraftplus_importforeign_backupable_plus_db", array($backupable_plus_db, array($foreign_known[$backups[$timestamp]['meta_foreign']], &$mess, &$warn, &$err))); + } + } + + foreach ($backupable_plus_db as $type => $entity_info) { + if (!isset($elements[$type])) continue; + $whatwegot = $backups[$timestamp][$type]; + if (is_string($whatwegot)) $whatwegot = array($whatwegot); + $expected_index = 0; + $missing = ''; + ksort($whatwegot); + $outof = false; + foreach ($whatwegot as $index => $file) { + if (preg_match('/\d+of(\d+)\.zip/', $file, $omatch)) { $outof = max($matches[1], 1); } + if ($index != $expected_index) { + $missing .= ($missing == '') ? (1+$expected_index) : ",".(1+$expected_index); + } + if (!file_exists($updraft_dir.'/'.$file)) { + $err[] = sprintf(__('File not found (you need to upload it): %s', 'updraftplus'), $updraft_dir.'/'.$file); + } elseif (filesize($updraft_dir.'/'.$file) == 0) { + $err[] = sprintf(__('File was found, but is zero-sized (you need to re-upload it): %s', 'updraftplus'), $file); + } else { + $itext = (0 == $index) ? '' : $index; + if (!empty($backups[$timestamp][$type.$itext.'-size']) && $backups[$timestamp][$type.$itext.'-size'] != filesize($updraft_dir.'/'.$file)) { + if (empty($warn['doublecompressfixed'])) { + $warn[] = sprintf(__('File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt.', 'updraftplus'), $file, filesize($updraft_dir.'/'.$file), $backups[$timestamp][$type.$itext.'-size']); + } + } + do_action_ref_array("updraftplus_checkzip_$type", array($updraft_dir.'/'.$file, &$mess, &$warn, &$err)); + } + $expected_index++; + } + do_action_ref_array("updraftplus_checkzip_end_$type", array(&$mess, &$warn, &$err)); + // Detect missing archives where they are missing from the end of the set + if ($outof>0 && $expected_index < $outof) { + for ($j = $expected_index; $j<$outof; $j++) { + $missing .= ($missing == '') ? (1+$j) : ",".(1+$j); + } + } + if ('' != $missing) { + $warn[] = sprintf(__("This multi-archive backup set appears to have the following archives missing: %s", 'updraftplus'), $missing.' ('.$entity_info['description'].')'); + } + } + + if (0 == count($err) && 0 == count($warn)) { + $mess_first = __('The backup archive files have been successfully processed. Now press Restore again to proceed.', 'updraftplus'); + } elseif (0 == count($err)) { + $mess_first = __('The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first.', 'updraftplus'); + } else { + $mess_first = __('The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying.', 'updraftplus'); + } + + if (count($this->logged) >0) { + foreach ($this->logged as $lwarn) $warn[] = $lwarn; + } + restore_error_handler(); + + // Get the info if it hasn't already come from the DB scan + if (!isset($info) || !is_array($info)) $info = array(); + + // Not all chracters can be json-encoded, and we don't need this potentially-arbitrary user-supplied info. + unset($info['label']); + + if (!isset($info['created_by_version']) && !empty($backups[$timestamp]['created_by_version'])) $info['created_by_version'] = $backups[$timestamp]['created_by_version']; + + if (!isset($info['multisite']) && !empty($backups[$timestamp]['is_multisite'])) $info['multisite'] = $backups[$timestamp]['is_multisite']; + + do_action_ref_array('updraftplus_restore_all_downloaded_postscan', array($backups, $timestamp, $elements, &$info, &$mess, &$warn, &$err)); + + echo json_encode(array('m' => '

        '.$mess_first.'

        '.implode('
        ', $mess), 'w' => implode('
        ', $warn), 'e' => implode('
        ', $err), 'i' => json_encode($info))); + } + } elseif ('sid_reset' == $_REQUEST['subaction']) { + + delete_site_option('updraftplus-addons_siteid'); + echo json_encode(array('newsid' => $updraftplus->siteid())); + + } elseif (('vault_connect' == $_REQUEST['subaction'] && isset($_REQUEST['email']) && isset($_REQUEST['pass'])) || 'vault_disconnect' == $_REQUEST['subaction'] || 'vault_recountquota' == $_REQUEST['subaction']) { + + require_once(UPDRAFTPLUS_DIR.'/methods/updraftvault.php'); + $vault = new UpdraftPlus_BackupModule_updraftvault(); + call_user_func(array($vault, 'ajax_'.$_REQUEST['subaction'])); + + } elseif (isset($_POST['backup_timestamp']) && 'deleteset' == $_REQUEST['subaction']) { + + echo json_encode($this->delete_set($_POST)); + + } elseif ('rawbackuphistory' == $_REQUEST['subaction']) { + + echo '

        '.__('Known backups (raw)', 'updraftplus').'

        ';
        +			var_dump($updraftplus->get_backup_history());
        +			echo '
        '; + + echo '

        Files

        ';
        +			$updraft_dir = $updraftplus->backups_dir_location();
        +			$raw_output = array();
        +			$d = dir($updraft_dir);
        +			while (false !== ($entry = $d->read())) {
        +				$fp = $updraft_dir.'/'.$entry;
        +				$mtime = filemtime($fp);
        +				if (is_dir($fp)) {
        +					$size = '       d';
        +				} elseif (is_link($fp)) {
        +					$size = '       l';
        +				} elseif (is_file($fp)) {
        +					$size = sprintf("%8.1f", round(filesize($fp)/1024, 1)).' '.gmdate('r', $mtime);
        +				} else {
        +					$size = '       ?';
        +				}
        +				if (preg_match('/^log\.(.*)\.txt$/', $entry, $lmatch)) $entry = ''.$entry.'';
        +				$raw_output[$mtime] = empty($raw_output[$mtime]) ? sprintf("%s %s\n", $size, $entry) : $raw_output[$mtime].sprintf("%s %s\n", $size, $entry);
        +			}
        +			@$d->close();
        +			krsort($raw_output, SORT_NUMERIC);
        +			foreach ($raw_output as $line) echo $line;
        +			echo '
        '; + + echo '

        '.__('Options (raw)', 'updraftplus').'

        '; + $opts = $updraftplus->get_settings_keys(); + asort($opts); + // '.__('Key','updraftplus').''.__('Value','updraftplus').' + echo ''; + foreach ($opts as $opt) { + echo ''; + } + echo '
        '.htmlspecialchars($opt).''.htmlspecialchars(print_r(UpdraftPlus_Options::get_updraft_option($opt), true)).'
        '; + + do_action('updraftplus_showrawinfo'); + + + } elseif ('countbackups' == $_REQUEST['subaction']) { + $backup_history = UpdraftPlus_Options::get_updraft_option('updraft_backup_history'); + $backup_history = (is_array($backup_history))?$backup_history:array(); + #echo sprintf(__('%d set(s) available', 'updraftplus'), count($backup_history)); + echo __('Existing Backups', 'updraftplus').' ('.count($backup_history).')'; + } elseif ('ping' == $_REQUEST['subaction']) { + // The purpose of this is to detect brokenness caused by extra line feeds in plugins/themes - before it breaks other AJAX operations and leads to support requests + echo 'pong'; + } elseif ('checkoverduecrons' == $_REQUEST['subaction']) { + $how_many_overdue = $this->howmany_overdue_crons(); + if ($how_many_overdue >= 4) echo json_encode(array('m' => $this->show_admin_warning_overdue_crons($how_many_overdue))); + } elseif ('delete_old_dirs' == $_REQUEST['subaction']) { + $this->delete_old_dirs_go(false); + } elseif ('phpinfo' == $_REQUEST['subaction']) { + phpinfo(INFO_ALL ^ (INFO_CREDITS | INFO_LICENSE)); + + echo '

        '.__('Constants', 'updraftplus').'

        '; + $opts = @get_defined_constants(); + ksort($opts); + // '.__('Key','updraftplus').''.__('Value','updraftplus').' + echo ''; + foreach ($opts as $key => $opt) { + echo ''; + } + echo '
        '.htmlspecialchars($key).''.htmlspecialchars(print_r($opt, true)).'
        '; + + } elseif ('doaction' == $_REQUEST['subaction'] && !empty($_REQUEST['subsubaction']) && 'updraft_' == substr($_REQUEST['subsubaction'], 0, 8)) { + do_action($_REQUEST['subsubaction']); + } elseif ('backupnow' == $_REQUEST['subaction']) { + + $this->request_backupnow($_REQUEST); + + # Old-style: schedule an event in 5 seconds time. This has the advantage of testing out the scheduler, and alerting the user if it doesn't work... but has the disadvantage of not working in that case. + # I don't think the
        s should be here - in case this is ever re-activated +// if (wp_schedule_single_event(time()+5, $event, array($backupnow_nocloud)) === false) { +// $updraftplus->log("A backup run failed to schedule"); +// echo __("Failed.", 'updraftplus'); +// } else { +// echo htmlspecialchars(__('OK. You should soon see activity in the "Last log message" field below.','updraftplus'))."
        ".__('Nothing happening? Follow this link for help.','updraftplus')."
        "; +// $updraftplus->log("A backup run has been scheduled"); +// } + + } elseif (isset($_GET['subaction']) && 'lastbackup' == $_GET['subaction']) { + echo $this->last_backup_html(); + } elseif (isset($_GET['subaction']) && 'activejobs_delete' == $_GET['subaction'] && isset($_GET['jobid'])) { + + echo json_encode($this->activejobs_delete((string)$_GET['jobid'])); + + } elseif (isset($_GET['subaction']) && 'diskspaceused' == $_GET['subaction'] && isset($_GET['entity'])) { + $entity = $_GET['entity']; + // This can count either the size of the Updraft directory, or of the data to be backed up + echo $this->get_disk_space_used($entity); + } elseif (isset($_GET['subaction']) && 'historystatus' == $_GET['subaction']) { + $remotescan = !empty($_GET['remotescan']); + $rescan = ($remotescan || !empty($_GET['rescan'])); + + $history_status = $this->get_history_status($rescan, $remotescan); + echo @json_encode($history_status); + + } elseif (isset($_POST['subaction']) && $_POST['subaction'] == 'credentials_test') { + + $this->do_credentials_test($_POST); + die; + + } + die; + + } + + // This echoes output; so, you will need to do output buffering if you want to capture it + public function do_credentials_test($test_settings) { + + $method = (!empty($test_settings['method']) && preg_match("/^[a-z0-9]+$/", $test_settings['method'])) ? $test_settings['method'] : ""; + + $objname = "UpdraftPlus_BackupModule_$method"; + + $this->logged = array(); + # TODO: Add action for WP HTTP SSL stuff + set_error_handler(array($this, 'get_php_errors'), E_ALL & ~E_STRICT); + + if (!class_exists($objname)) include_once(UPDRAFTPLUS_DIR."/methods/$method.php"); + + # TODO: Add action for WP HTTP SSL stuff + if (method_exists($objname, "credentials_test")) { + $obj = new $objname; + $obj->credentials_test($test_settings); + } + + if (count($this->logged) >0) { + echo "\n\n".__('Messages:', 'updraftplus')."\n"; + foreach ($this->logged as $err) { + echo "* $err\n"; + } + } + restore_error_handler(); + } + + // Relevant options (array keys): backup_timestamp, delete_remote, + public function delete_set($opts) { + + global $updraftplus; + + $backups = $updraftplus->get_backup_history(); + $timestamps = (string)$opts['backup_timestamp']; + + $remote_delete_limit = (isset($opts['remote_delete_limit']) && $opts['remote_delete_limit'] > 0) ? (int)$opts['remote_delete_limit'] : PHP_INT_MAX; + + $timestamps = explode(',', $timestamps); + $delete_remote = empty($opts['delete_remote']) ? false : true; + + // You need a nonce before you can set job data. And we certainly don't yet have one. + $updraftplus->backup_time_nonce(); + // Set the job type before logging, as there can be different logging destinations + $updraftplus->jobdata_set('job_type', 'delete'); + $updraftplus->jobdata_set('job_time_ms', $updraftplus->job_time_ms); + + if (UpdraftPlus_Options::get_updraft_option('updraft_debug_mode')) { + $updraftplus->logfile_open($updraftplus->nonce); + set_error_handler(array($updraftplus, 'php_error'), E_ALL & ~E_STRICT); + } + + $updraft_dir = $updraftplus->backups_dir_location(); + $backupable_entities = $updraftplus->get_backupable_file_entities(true, true); + + $local_deleted = 0; + $remote_deleted = 0; + $sets_removed = 0; + + foreach ($timestamps as $i => $timestamp) { + + if (!isset($backups[$timestamp])) { + return array('result' => 'error', 'message' => __('Backup set not found', 'updraftplus')); + } + + $nonce = isset($backups[$timestamp]['nonce']) ? $backups[$timestamp]['nonce'] : ''; + + $delete_from_service = array(); + + if ($delete_remote) { + // Locate backup set + if (isset($backups[$timestamp]['service'])) { + $services = is_string($backups[$timestamp]['service']) ? array($backups[$timestamp]['service']) : $backups[$timestamp]['service']; + if (is_array($services)) { + foreach ($services as $service) { + if ($service && $service != 'none' && $service != 'email') $delete_from_service[] = $service; + } + } + } + } + + $files_to_delete = array(); + foreach ($backupable_entities as $key => $ent) { + if (isset($backups[$timestamp][$key])) { + $files_to_delete[$key] = $backups[$timestamp][$key]; + } + } + // Delete DB + foreach ($backups[$timestamp] as $key => $value){ + if ('db' == strtolower(substr($key, 0, 2)) && '-size' != substr($key, -5, 5)) { + $files_to_delete[$key] = $backups[$timestamp][$key]; + } + } + + // Also delete the log + if ($nonce && !UpdraftPlus_Options::get_updraft_option('updraft_debug_mode')) { + $files_to_delete['log'] = "log.$nonce.txt"; + } + + add_action('http_request_args', array($updraftplus, 'modify_http_options')); + + foreach ($files_to_delete as $key => $files) { + + if (is_string($files)) { + $was_string = true; + $files = array($files); + } else { + $was_string = false; + } + + foreach ($files as $file) { + if (is_file($updraft_dir.'/'.$file) && @unlink($updraft_dir.'/'.$file)) $local_deleted++; + } + + if ('log' != $key && count($delete_from_service) > 0) { + foreach ($delete_from_service as $service) { + if ('email' == $service) continue; + if (file_exists(UPDRAFTPLUS_DIR."/methods/$service.php")) require_once(UPDRAFTPLUS_DIR."/methods/$service.php"); + $objname = "UpdraftPlus_BackupModule_".$service; + $deleted = -1; + if (class_exists($objname)) { + # TODO: Re-use the object (i.e. prevent repeated connection setup/teardown) + $remote_obj = new $objname; + + foreach ($files as $index => $file) { + if ($remote_deleted == $remote_delete_limit) { + return $this->remove_backup_set_cleanup(false, $backups, $local_deleted, $remote_deleted, $sets_removed); + } + + $deleted = $remote_obj->delete($file); + + if ($deleted === -1) { + //echo __('Did not know how to delete from this cloud service.', 'updraftplus'); + } elseif ($deleted !== false) { + $remote_deleted++; + } + + $itext = $index ? (string)$index : ''; + if ($was_string) { + unset($backups[$timestamp][$key]); + if ('db' == strtolower(substr($key, 0, 2))) unset($backups[$timestamp][$key][$index.'-size']); + } else { + unset($backups[$timestamp][$key][$index]); + unset($backups[$timestamp][$key.$itext.'-size']); + if (empty($backups[$timestamp][$key])) unset($backups[$timestamp][$key]); + } + if (isset($backups[$timestamp]['checksums']) && is_array($backups[$timestamp]['checksums'])) { + foreach (array_keys($backups[$timestamp]['checksums']) as $algo) { + unset($backups[$timestamp]['checksums'][$algo][$key.$index]); + } + } + + // If we don't save the array back, then the above section will fire again for the same files - and the remote storage will be requested to delete already-deleted files, which then means no time is actually saved by the browser-backend loop method. + UpdraftPlus_Options::update_updraft_option('updraft_backup_history', $backups); + + } + } + } + } + } + + unset($backups[$timestamp]); + UpdraftPlus_Options::update_updraft_option('updraft_backup_history', $backups); + $sets_removed++; + } + + + return $this->remove_backup_set_cleanup(true, $backups, $local_deleted, $remote_deleted, $sets_removed); + + } + + public function remove_backup_set_cleanup($delete_complete, $backups, $local_deleted, $remote_deleted, $sets_removed) { + + global $updraftplus; + + remove_action('http_request_args', array($updraftplus, 'modify_http_options')); + + UpdraftPlus_Options::update_updraft_option('updraft_backup_history', $backups); + + $updraftplus->log("Local files deleted: $local_deleted. Remote files deleted: $remote_deleted"); + + if ($delete_complete) { + $set_message = __('Backup sets removed:', 'updraftplus'); + $local_message = __('Local files deleted:', 'updraftplus'); + $remote_message = __('Remote files deleted:', 'updraftplus'); + + if (UpdraftPlus_Options::get_updraft_option('updraft_debug_mode')) { + restore_error_handler(); + } + + return array('result' => 'success', 'set_message' => $set_message, 'local_message' => $local_message, 'remote_message' => $remote_message, 'backup_sets' => $sets_removed, 'backup_local' => $local_deleted, 'backup_remote' => $remote_deleted); + } else { + + return array('result' => 'continue', 'backup_local' => $local_deleted, 'backup_remote' => $remote_deleted, 'backup_sets' => $sets_removed); + } + } + + public function get_history_status($rescan, $remotescan) { + + global $updraftplus; + + if ($rescan) $messages = $updraftplus->rebuild_backup_history($remotescan); + $backup_history = UpdraftPlus_Options::get_updraft_option('updraft_backup_history'); + $backup_history = (is_array($backup_history)) ? $backup_history : array(); + $output = $this->existing_backup_table($backup_history); + $data = array(); + + if (!empty($messages) && is_array($messages)) { + $noutput = '
          '; + foreach ($messages as $msg) { + $noutput .= '
        • '.(empty($msg['desc']) ? '' : $msg['desc'].': ').''.$msg['message'].'
        • '; + if (!empty($msg['data'])) { + if (!empty($msg['desc'])) { + $data['desc'] = $msg['data']; + } else { + // At the time of authorship, this code branch is not known to be used + $data[] = $msg['data']; + } + } + } + $noutput .= '
        '; + $output = $noutput.$output; + } + + $logs_exist = (false !== strpos($output, 'downloadlog')); + if (!$logs_exist) { + list($mod_time, $log_file, $nonce) = $updraftplus->last_modified_log(); + if ($mod_time) $logs_exist = true; + } + + return apply_filters('updraftplus_get_history_status_result', array( + 'n' => sprintf(__('Existing Backups', 'updraftplus').' (%d)', count($backup_history)), + 't' => $output, + 'data' => $data, + 'cksum' => md5($output), + 'logs_exist' => $logs_exist, + )); + } + + public function get_disk_space_used($entity) { + global $updraftplus; + if ('updraft' == $entity) { + return $this->recursive_directory_size($updraftplus->backups_dir_location()); + } else { + $backupable_entities = $updraftplus->get_backupable_file_entities(true, false); + if ('all' == $entity) { + $total_size = 0; + foreach ($backupable_entities as $entity => $data) { + # Might be an array + $basedir = $backupable_entities[$entity]; + $dirs = apply_filters('updraftplus_dirlist_'.$entity, $basedir); + $size = $this->recursive_directory_size($dirs, $updraftplus->get_exclude($entity), $basedir, 'numeric'); + if (is_numeric($size) && $size>0) $total_size += $size; + } + return $updraftplus->convert_numeric_size_to_text($total_size); + } elseif (!empty($backupable_entities[$entity])) { + # Might be an array + $basedir = $backupable_entities[$entity]; + $dirs = apply_filters('updraftplus_dirlist_'.$entity, $basedir); + return $this->recursive_directory_size($dirs, $updraftplus->get_exclude($entity), $basedir); + } + } + return __('Error', 'updraftplus'); + } + + public function activejobs_delete($job_id) { + + if (preg_match("/^[0-9a-f]{12}$/", $job_id)) { + + global $updraftplus; + $cron = get_option('cron'); + $found_it = false; + + $updraft_dir = $updraftplus->backups_dir_location(); + if (file_exists($updraft_dir.'/log.'.$job_id.'.txt')) touch($updraft_dir.'/deleteflag-'.$job_id.'.txt'); + + foreach ($cron as $time => $job) { + if (isset($job['updraft_backup_resume'])) { + foreach ($job['updraft_backup_resume'] as $hook => $info) { + if (isset($info['args'][1]) && $info['args'][1] == $job_id) { + $args = $cron[$time]['updraft_backup_resume'][$hook]['args']; + wp_unschedule_event($time, 'updraft_backup_resume', $args); + if (!$found_it) return array('ok' => 'Y', 'c' => 'deleted', 'm' => __('Job deleted', 'updraftplus')); + $found_it = true; + } + } + } + } + } + + if (!$found_it) return array('ok' => 'N', 'c' => 'not_found', 'm' => __('Could not find that job - perhaps it has already finished?', 'updraftplus')); + + } + + // Input: an array of items + // Each item is in the format: ,,(,) + // The 'base' is not for us: we just pass it straight back + public function get_download_statuses($downloaders) { + global $updraftplus; + $download_status = array(); + foreach ($downloaders as $downloader) { + # prefix, timestamp, entity, index + if (preg_match('/^([^,]+),(\d+),([-a-z]+|db[0-9]+),(\d+)$/', $downloader, $matches)) { + $findex = (empty($matches[4])) ? '0' : $matches[4]; + $updraftplus->nonce = dechex($matches[2]).$findex.substr(md5($matches[3]), 0, 3); + $updraftplus->jobdata_reset(); + $status = $this->download_status($matches[2], $matches[3], $matches[4]); + if (is_array($status)) { + $status['base'] = $matches[1]; + $status['timestamp'] = $matches[2]; + $status['what'] = $matches[3]; + $status['findex'] = $findex; + $download_status[] = $status; + } + } + } + return $download_status; + } + + public function get_activejobs_list($request) { + + global $updraftplus; + + $download_status = empty($request['downloaders']) ? array(): $this->get_download_statuses(explode(':', $request['downloaders'])); + + if (!empty($request['oneshot'])) { + $job_id = get_site_option('updraft_oneshotnonce', false); + // print_active_job() for one-shot jobs that aren't in cron + $active_jobs = (false === $job_id) ? '' : $this->print_active_job($job_id, true); + } elseif (!empty($request['thisjobonly'])) { + // print_active_jobs() is for resumable jobs where we want the cron info to be included in the output + $active_jobs = $this->print_active_jobs($request['thisjobonly']); + } else { + $active_jobs = $this->print_active_jobs(); + } + + $logupdate_array = array(); + if (!empty($request['log_fetch'])) { + if (isset($request['log_nonce'])) { + $log_nonce = $request['log_nonce']; + $log_pointer = isset($request['log_pointer']) ? absint($request['log_pointer']) : 0; + $logupdate_array = $this->fetch_log($log_nonce, $log_pointer); + } + } + + return array( + // We allow the front-end to decide what to do if there's nothing logged - we used to (up to 1.11.29) send a pre-defined message + 'l' => htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_lastmessage', '')), + 'j' => $active_jobs, + 'ds' => $download_status, + 'u' => $logupdate_array + ); + + } + + public function request_backupnow($request, $close_connection_callable = false) { + global $updraftplus; + + $backupnow_nocloud = (empty($request['backupnow_nocloud'])) ? false : true; + $event = (!empty($request['backupnow_nofiles'])) ? 'updraft_backupnow_backup_database' : ((!empty($request['backupnow_nodb'])) ? 'updraft_backupnow_backup' : 'updraft_backupnow_backup_all'); + + // The call to backup_time_nonce() allows us to know the nonce in advance, and return it + $nonce = $updraftplus->backup_time_nonce(); + + $msg = array( + 'nonce' => $nonce, + 'm' => ''.__('Start backup', 'updraftplus').': '.htmlspecialchars(__('OK. You should soon see activity in the "Last log message" field below.','updraftplus')) + ); + + if ($close_connection_callable && is_callable($close_connection_callable)) { + call_user_func($close_connection_callable, $msg); + } else { + $updraftplus->close_browser_connection(json_encode($msg)); + } + + $options = array('nocloud' => $backupnow_nocloud, 'use_nonce' => $nonce); + if (!empty($request['onlythisfileentity']) && is_string($request['onlythisfileentity'])) { + // Something to see in the 'last log' field when it first appears, before the backup actually starts + $updraftplus->log(__('Start backup','updraftplus')); + $options['restrict_files_to_override'] = explode(',', $request['onlythisfileentity']); + } + + if (!empty($request['extradata'])) { + $options['extradata'] = $request['extradata']; + } + + do_action($event, apply_filters('updraft_backupnow_options', $options, $request)); + } + + public function fetch_log($backup_nonce, $log_pointer=0) { + global $updraftplus; + + if (empty($backup_nonce)) { + list($mod_time, $log_file, $nonce) = $updraftplus->last_modified_log(); + } else { + $nonce = $backup_nonce; + } + + if (!preg_match('/^[0-9a-f]+$/', $nonce)) die('Security check'); + + $log_content = ''; + $new_pointer = $log_pointer; + + if (!empty($nonce)) { + $updraft_dir = $updraftplus->backups_dir_location(); + + $potential_log_file = $updraft_dir."/log.".$nonce.".txt"; + + if (is_readable($potential_log_file)){ + + $templog_array = array(); + $log_file = fopen($potential_log_file, "r"); + if ($log_pointer > 0) fseek($log_file, $log_pointer); + + while (($buffer = fgets($log_file, 4096)) !== false) { + $templog_array[] = $buffer; + } + if (!feof($log_file)) { + $templog_array[] = __('Error: unexpected file read fail', 'updraftplus'); + } + + $new_pointer = ftell($log_file); + $log_content = implode("", $templog_array); + + } else { + $log_content .= __('The log file could not be read.','updraftplus'); + } + + } else { + $log_content .= __('The log file could not be read.','updraftplus'); + } + + $ret_array = array( + 'html' => $log_content, + 'nonce' => $nonce, + 'pointer' => $new_pointer + ); + + return $ret_array; + } + + public function howmany_overdue_crons() { + $how_many_overdue = 0; + if (function_exists('_get_cron_array') || (is_file(ABSPATH.WPINC.'/cron.php') && include_once(ABSPATH.WPINC.'/cron.php') && function_exists('_get_cron_array'))) { + $crons = _get_cron_array(); + if (is_array($crons)) { + $timenow = time(); + foreach ($crons as $jt => $job) { + if ($jt < $timenow) { + $how_many_overdue++; + } + } + } + } + return $how_many_overdue; + } + + public function get_php_errors($errno, $errstr, $errfile, $errline) { + global $updraftplus; + if (0 == error_reporting()) return true; + $logline = $updraftplus->php_error_to_logline($errno, $errstr, $errfile, $errline); + if (false !== $logline) $this->logged[] = $logline; + # Don't pass it up the chain (since it's going to be output to the user always) + return true; + } + + private function download_status($timestamp, $type, $findex) { + global $updraftplus; + $response = array( 'm' => $updraftplus->jobdata_get('dlmessage_'.$timestamp.'_'.$type.'_'.$findex).'
        ' ); + if ($file = $updraftplus->jobdata_get('dlfile_'.$timestamp.'_'.$type.'_'.$findex)) { + if ('failed' == $file) { + $response['e'] = __('Download failed', 'updraftplus').'
        '; + $response['failed'] = true; + $errs = $updraftplus->jobdata_get('dlerrors_'.$timestamp.'_'.$type.'_'.$findex); + if (is_array($errs) && !empty($errs)) { + $response['e'] .= '
          '; + foreach ($errs as $err) { + if (is_array($err)) { + $response['e'] .= '
        • '.htmlspecialchars($err['message']).'
        • '; + } else { + $response['e'] .= '
        • '.htmlspecialchars($err).'
        • '; + } + } + $response['e'] .= '
        '; + } + } elseif (preg_match('/^downloaded:(\d+):(.*)$/', $file, $matches) && file_exists($matches[2])) { + $response['p'] = 100; + $response['f'] = $matches[2]; + $response['s'] = (int)$matches[1]; + $response['t'] = (int)$matches[1]; + $response['m'] = __('File ready.', 'updraftplus'); + } elseif (preg_match('/^downloading:(\d+):(.*)$/', $file, $matches) && file_exists($matches[2])) { + // Convert to bytes + $response['f'] = $matches[2]; + $total_size = (int)max($matches[1], 1); + $cur_size = filesize($matches[2]); + $response['s'] = $cur_size; + $file_age = time() - filemtime($matches[2]); + if ($file_age > 20) $response['a'] = time() - filemtime($matches[2]); + $response['t'] = $total_size; + $response['m'] .= __("Download in progress", 'updraftplus').' ('.round($cur_size/1024).' / '.round(($total_size/1024)).' KB)'; + $response['p'] = round(100*$cur_size/$total_size); + } else { + $response['m'] .= __('No local copy present.', 'updraftplus'); + $response['p'] = 0; + $response['s'] = 0; + $response['t'] = 1; + } + } + return $response; + } + + public function upload_dir($uploads) { + global $updraftplus; + $updraft_dir = $updraftplus->backups_dir_location(); + if (is_writable($updraft_dir)) $uploads['path'] = $updraft_dir; + return $uploads; + } + + // We do actually want to over-write + public function unique_filename_callback($dir, $name, $ext) { + return $name.$ext; + } + + public function sanitize_file_name($filename) { + // WordPress 3.4.2 on multisite (at least) adds in an unwanted underscore + return preg_replace('/-db(.*)\.gz_\.crypt$/', '-db$1.gz.crypt', $filename); + } + + public function plupload_action() { + // check ajax nonce + + global $updraftplus; + @set_time_limit(UPDRAFTPLUS_SET_TIME_LIMIT); + + if (!UpdraftPlus_Options::user_can_manage()) exit; + check_ajax_referer('updraft-uploader'); + + $updraft_dir = $updraftplus->backups_dir_location(); + if (!@$updraftplus->really_is_writable($updraft_dir)) { + echo json_encode(array('e' => sprintf(__("Backup directory (%s) is not writable, or does not exist.", 'updraftplus'), $updraft_dir).' '.__('You will find more information about this in the Settings section.', 'updraftplus'))); + exit; + } + + add_filter('upload_dir', array($this, 'upload_dir')); + add_filter('sanitize_file_name', array($this, 'sanitize_file_name')); + // handle file upload + + $farray = array('test_form' => true, 'action' => 'plupload_action'); + + $farray['test_type'] = false; + $farray['ext'] = 'x-gzip'; + $farray['type'] = 'application/octet-stream'; + + if (!isset($_POST['chunks'])) { + $farray['unique_filename_callback'] = array($this, 'unique_filename_callback'); + } + + $status = wp_handle_upload( + $_FILES['async-upload'], + $farray + ); + remove_filter('upload_dir', array($this, 'upload_dir')); + remove_filter('sanitize_file_name', array($this, 'sanitize_file_name')); + + if (isset($status['error'])) { + echo json_encode(array('e' => $status['error'])); + exit; + } + + // If this was the chunk, then we should instead be concatenating onto the final file + if (isset($_POST['chunks']) && isset($_POST['chunk']) && preg_match('/^[0-9]+$/',$_POST['chunk'])) { + $final_file = basename($_POST['name']); + if (!rename($status['file'], $updraft_dir.'/'.$final_file.'.'.$_POST['chunk'].'.zip.tmp')) { + @unlink($status['file']); + echo json_encode(array('e' => sprintf(__('Error: %s', 'updraftplus'), __('This file could not be uploaded', 'updraftplus')))); + exit; + } + $status['file'] = $updraft_dir.'/'.$final_file.'.'.$_POST['chunk'].'.zip.tmp'; + + // Final chunk? If so, then stich it all back together + if ($_POST['chunk'] == $_POST['chunks']-1) { + if ($wh = fopen($updraft_dir.'/'.$final_file, 'wb')) { + for ($i=0 ; $i<$_POST['chunks']; $i++) { + $rf = $updraft_dir.'/'.$final_file.'.'.$i.'.zip.tmp'; + if ($rh = fopen($rf, 'rb')) { + while ($line = fread($rh, 32768)) fwrite($wh, $line); + fclose($rh); + @unlink($rf); + } + } + fclose($wh); + $status['file'] = $updraft_dir.'/'.$final_file; + if ('.tar' == substr($final_file, -4, 4)) { + if (file_exists($status['file'].'.gz')) unlink($status['file'].'.gz'); + if (file_exists($status['file'].'.bz2')) unlink($status['file'].'.bz2'); + } elseif ('.tar.gz' == substr($final_file, -7, 7)) { + if (file_exists(substr($status['file'], 0, strlen($status['file'])-3))) unlink(substr($status['file'], 0, strlen($status['file'])-3)); + if (file_exists(substr($status['file'], 0, strlen($status['file'])-3).'.bz2')) unlink(substr($status['file'], 0, strlen($status['file'])-3).'.bz2'); + } elseif ('.tar.bz2' == substr($final_file, -8, 8)) { + if (file_exists(substr($status['file'], 0, strlen($status['file'])-4))) unlink(substr($status['file'], 0, strlen($status['file'])-4)); + if (file_exists(substr($status['file'], 0, strlen($status['file'])-4).'.gz')) unlink(substr($status['file'], 0, strlen($status['file'])-3).'.gz'); + } + } + } + + } + + $response = array(); + if (!isset($_POST['chunks']) || (isset($_POST['chunk']) && $_POST['chunk'] == $_POST['chunks']-1)) { + $file = basename($status['file']); + if (!preg_match('/^log\.[a-f0-9]{12}\.txt/i', $file) && !preg_match('/^backup_([\-0-9]{15})_.*_([0-9a-f]{12})-([\-a-z]+)([0-9]+)?(\.(zip|gz|gz\.crypt))?$/i', $file, $matches)) { + $accept = apply_filters('updraftplus_accept_archivename', array()); + if (is_array($accept)) { + foreach ($accept as $acc) { + if (preg_match('/'.$acc['pattern'].'/i', $file)) $accepted = $acc['desc']; + } + } + if (!empty($accepted)) { + $response['dm'] = sprintf(__('This backup was created by %s, and can be imported.', 'updraftplus'), $accepted); + } else { + @unlink($status['file']); + echo json_encode(array('e' => sprintf(__('Error: %s', 'updraftplus'),__('Bad filename format - this does not look like a file created by UpdraftPlus','updraftplus')))); + exit; + } + } else { + $backupable_entities = $updraftplus->get_backupable_file_entities(true); + $type = isset($matches[3]) ? $matches[3] : ''; + if (!preg_match('/^log\.[a-f0-9]{12}\.txt/', $file) && 'db' != $type && !isset($backupable_entities[$type])) { + @unlink($status['file']); + echo json_encode(array('e' => sprintf(__('Error: %s', 'updraftplus'),sprintf(__('This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?','updraftplus'), htmlspecialchars($type))))); + exit; + } + } + } + + // send the uploaded file url in response + $response['m'] = $status['url']; + echo json_encode($response); + exit; + } + + # Database decrypter + public function plupload_action2() { + + @set_time_limit(UPDRAFTPLUS_SET_TIME_LIMIT); + global $updraftplus; + + if (!UpdraftPlus_Options::user_can_manage()) exit; + check_ajax_referer('updraft-uploader'); + + $updraft_dir = $updraftplus->backups_dir_location(); + if (!is_writable($updraft_dir)) exit; + + add_filter('upload_dir', array($this, 'upload_dir')); + add_filter('sanitize_file_name', array($this, 'sanitize_file_name')); + // handle file upload + + $farray = array( 'test_form' => true, 'action' => 'plupload_action2' ); + + $farray['test_type'] = false; + $farray['ext'] = 'crypt'; + $farray['type'] = 'application/octet-stream'; + + if (isset($_POST['chunks'])) { +// $farray['ext'] = 'zip'; +// $farray['type'] = 'application/zip'; + } else { + $farray['unique_filename_callback'] = array($this, 'unique_filename_callback'); + } + + $status = wp_handle_upload( + $_FILES['async-upload'], + $farray + ); + remove_filter('upload_dir', array($this, 'upload_dir')); + remove_filter('sanitize_file_name', array($this, 'sanitize_file_name')); + + if (isset($status['error'])) { + echo 'ERROR:'.$status['error']; + exit; + } + + // If this was the chunk, then we should instead be concatenating onto the final file + if (isset($_POST['chunks']) && isset($_POST['chunk']) && preg_match('/^[0-9]+$/',$_POST['chunk'])) { + $final_file = basename($_POST['name']); + rename($status['file'], $updraft_dir.'/'.$final_file.'.'.$_POST['chunk'].'.zip.tmp'); + $status['file'] = $updraft_dir.'/'.$final_file.'.'.$_POST['chunk'].'.zip.tmp'; + + // Final chunk? If so, then stich it all back together + if ($_POST['chunk'] == $_POST['chunks']-1) { + if ($wh = fopen($updraft_dir.'/'.$final_file, 'wb')) { + for ($i=0 ; $i<$_POST['chunks']; $i++) { + $rf = $updraft_dir.'/'.$final_file.'.'.$i.'.zip.tmp'; + if ($rh = fopen($rf, 'rb')) { + while ($line = fread($rh, 32768)) fwrite($wh, $line); + fclose($rh); + @unlink($rf); + } + } + fclose($wh); + $status['file'] = $updraft_dir.'/'.$final_file; + } + } + + } + + if (!isset($_POST['chunks']) || (isset($_POST['chunk']) && $_POST['chunk'] == $_POST['chunks']-1)) { + $file = basename($status['file']); + if (!preg_match('/^backup_([\-0-9]{15})_.*_([0-9a-f]{12})-db([0-9]+)?\.(gz\.crypt)$/i', $file)) { + + @unlink($status['file']); + echo 'ERROR:'.__('Bad filename format - this does not look like an encrypted database file created by UpdraftPlus','updraftplus'); + + exit; + } + } + + // send the uploaded file url in response +// echo 'OK:'.$status['url']; + echo 'OK:'.$file; + exit; + } + + public function settings_header() { + global $updraftplus; + ?> + +
        +

        plugin_title; ?>

        + + ">UpdraftPlus.Com | + | + "> | + | + "> | + "> | + | + "> | - : version; ?> +
        + log(__('Sufficient information about the in-progress restoration operation could not be found.', 'updraftplus').' (restoreid_mismatch)', 'error', 'restoreid_mismatch'); + } else { + + $restore_jobdata = $updraftplus->jobdata_getarray($restore_in_progress); + if (is_array($restore_jobdata) && isset($restore_jobdata['job_type']) && 'restore' == $restore_jobdata['job_type'] && isset($restore_jobdata['second_loop_entities']) && !empty($restore_jobdata['second_loop_entities']) && isset($restore_jobdata['job_time_ms']) && isset($restore_jobdata['backup_timestamp'])) { + $backup_timestamp = $restore_jobdata['backup_timestamp']; + $continuation_data = $restore_jobdata; + } else { + $abort_restore_already = true; + $updraftplus->log(__('Sufficient information about the in-progress restoration operation could not be found.', 'updraftplus').' (restoreid_nojobdata)', 'error', 'restoreid_nojobdata'); + } + } + + } else { + $backup_timestamp = $_REQUEST['backup_timestamp']; + $continuation_data = null; + } + + if (empty($abort_restore_already)) { + $backup_success = $this->restore_backup($backup_timestamp, $continuation_data); + } else { + $backup_success = false; + } + + if (empty($updraftplus->errors) && $backup_success === true) { +// TODO: Deal with the case of some of the work having been deferred + // If we restored the database, then that will have out-of-date information which may confuse the user - so automatically re-scan for them. + $updraftplus->rebuild_backup_history(); + echo '

        '; + $updraftplus->log_e('Restore successful!'); + echo '

        '; + $updraftplus->log("Restore successful"); + $s_val = 1; + if (!empty($this->entities_to_restore) && is_array($this->entities_to_restore)) { + foreach ($this->entities_to_restore as $k => $v) { + if ('db' != $v) $s_val = 2; + } + } + $pval = ($updraftplus->have_addons) ? 1 : 0; + + echo ''.__('Actions','updraftplus').': '.__('Return to UpdraftPlus Configuration','updraftplus').''; + return; + } elseif (is_wp_error($backup_success)) { + echo '

        '; + $updraftplus->log_e('Restore failed...'); + echo '

        '; + $updraftplus->log_wp_error($backup_success); + $updraftplus->log("Restore failed"); + $updraftplus->list_errors(); + echo ''.__('Actions','updraftplus').': '.__('Return to UpdraftPlus Configuration','updraftplus').''; + return; + } elseif (false === $backup_success) { + # This means, "not yet - but stay on the page because we may be able to do it later, e.g. if the user types in the requested information" + echo '

        '; + $updraftplus->log_e('Restore failed...'); + echo '

        '; + $updraftplus->log("Restore failed"); + $updraftplus->list_errors(); + echo ''.__('Actions','updraftplus').': '.__('Return to UpdraftPlus Configuration','updraftplus').''; + return; + } + } + + if (isset($_REQUEST['action']) && 'updraft_delete_old_dirs' == $_REQUEST['action']) { + $nonce = (empty($_REQUEST['_wpnonce'])) ? "" : $_REQUEST['_wpnonce']; + if (!wp_verify_nonce($nonce, 'updraftplus-credentialtest-nonce')) die('Security check'); + $this->delete_old_dirs_go(); + return; + } + + if (!empty($_REQUEST['action']) && 'updraftplus_broadcastaction' == $_REQUEST['action'] && !empty($_REQUEST['subaction'])) { + $nonce = (empty($_REQUEST['nonce'])) ? "" : $_REQUEST['nonce']; + if (!wp_verify_nonce($nonce, 'updraftplus-credentialtest-nonce')) die('Security check'); + do_action($_REQUEST['subaction']); + return; + } + + if (isset($_GET['error'])) { + // This is used by Microsoft OneDrive authorisation failures (May 15). I am not sure what may have been using the 'error' GET parameter otherwise - but it is harmless. + if (!empty($_GET['error_description'])) { + $this->show_admin_warning(htmlspecialchars($_GET['error_description']).' ('.htmlspecialchars($_GET['error']).')', 'error'); + } else { + $this->show_admin_warning(htmlspecialchars($_GET['error']), 'error'); + } + } + + if (isset($_GET['message'])) $this->show_admin_warning(htmlspecialchars($_GET['message'])); + + if (isset($_GET['action']) && $_GET['action'] == 'updraft_create_backup_dir' && isset($_GET['nonce']) && wp_verify_nonce($_GET['nonce'], 'create_backup_dir')) { + $created = $this->create_backup_dir(); + if (is_wp_error($created)) { + echo '

        '.__('Backup directory could not be created', 'updraftplus').'...
        '; + echo '

          '; + foreach ($created->get_error_messages() as $key => $msg) { + echo '
        • '.htmlspecialchars($msg).'
        • '; + } + echo '

        '; + } elseif ($created !== false) { + echo '

        '.__('Backup directory successfully created.', 'updraftplus').'


        '; + } + echo ''.__('Actions','updraftplus').': '.__('Return to UpdraftPlus Configuration', 'updraftplus').''; + return; + } + + echo ''; + + if (isset($_POST['action']) && 'updraft_wipesettings' == $_POST['action']) { + $settings = $updraftplus->get_settings_keys(); + foreach ($settings as $s) UpdraftPlus_Options::delete_updraft_option($s); + + // These aren't in get_settings_keys() because they are always in the options table, regardless of context + global $wpdb; + $wpdb->query("DELETE FROM $wpdb->options WHERE ( option_name LIKE 'updraftplus_unlocked_%' OR option_name LIKE 'updraftplus_locked_%' OR option_name LIKE 'updraftplus_last_lock_time_%' OR option_name LIKE 'updraftplus_semaphore_%' OR option_name LIKE 'updraft_jobdata_%' OR option_name LIKE 'updraft_last_scheduled_%' )"); + + $site_options = array('updraft_oneshotnonce'); + foreach ($site_options as $s) delete_site_option($s); + + $this->show_admin_warning(__("Your settings have been wiped.", 'updraftplus')); + } + + // This opens a div + $this->settings_header(); + ?> + +
        +

        + + + + + + "> + +

        +
        + + show_admin_warning("" . __("OptimizePress 2.0 encodes its contents, so search/replace does not work.","updraftplus") . ' ' . __("To fix this problem go here.","updraftplus") . "", "notice notice-warning"); + } + $success_advert = (isset($_GET['pval']) && 0 == $_GET['pval'] && !$updraftplus->have_addons) ? '

        '.__('For even more features and personal support, check out ','updraftplus').'UpdraftPlus Premium.

        ' : ""; + + echo "
        ".__('Your backup has been restored.','updraftplus').'
        '; + // Unnecessary - will be advised of this below +// if (2 == $_GET['updraft_restore_success']) echo ' '.__('Your old (themes, uploads, plugins, whatever) directories have been retained with "-old" appended to their name. Remove them when you are satisfied that the backup worked properly.'); + echo $success_advert; + $include_deleteform_div = false; + + } + +// $this->print_restore_in_progress_box_if_needed(); + + if ($this->scan_old_dirs(true)) $this->print_delete_old_dirs_form(true, $include_deleteform_div); + + // Close the div opened by the earlier section + if (isset($_GET['updraft_restore_success'])) echo '
        '; + + if(empty($success_advert) && empty($this->no_settings_warning)) { + if (!class_exists('UpdraftPlus_Notices')) require_once(UPDRAFTPLUS_DIR.'/includes/updraftplus-notices.php'); + UpdraftPlus_Notices::do_notice(); + } + + if (!$updraftplus->memory_check(64)) { + // HS8390 - A case where UpdraftPlus::memory_check_current() returns -1 + $memory_check_current = $updraftplus->memory_check_current(); + if ($memory_check_current > 0) { ?> +
        memory_check_current(); ?> MB
        + errors)) { + echo '
        '; + $updraftplus->list_errors(); + echo '
        '; + } + + $backup_history = UpdraftPlus_Options::get_updraft_option('updraft_backup_history'); + if (empty($backup_history)) { + $updraftplus->rebuild_backup_history(); + $backup_history = UpdraftPlus_Options::get_updraft_option('updraft_backup_history'); + } + $backup_history = is_array($backup_history) ? $backup_history : array(); + ?> + + + + backups_dir_location(); + $backup_disabled = ($updraftplus->really_is_writable($updraft_dir)) ? '' : 'disabled="disabled"'; + ?> + +
        +
        
        +		
        + +
        + +
        + + + + + + + + + + + + + + last_backup_html(); + $current_time = get_date_from_gmt(gmdate('Y-m-d H:i:s'), 'D, F j, Y H:i'); +// $current_time = date_i18n('D, F j, Y H:i'); + + ?> + + + + + + + + + + + + +
        :
        + + show_admin_warning($unwritable_mess, "error"); + } + ?> + + + + + + +
        General", 'updraftplus'); ?>">:
        + :
        + + next_scheduled_backups_output(); ?> +
        +
        + +
        + + render_active_jobs_and_log_table(); ?> + + + +
        +
        +
        +
        + + + +
        + + + backupnow_modal_contents(); ?> +
        + + +

        UpdraftPlus

        + + + + +
        +

        '. __('Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on.','updraftplus');?>.

        +
        + + +
        + + + +
        style=""> + $is_opera); + $this->settings_downloading_and_restoring($backup_history, false, $tmp_opts); + $this->settings_delete_and_restore_modals(); + ?> +
        + +
        style=""> +

        + + settings_formcontents(); ?> + +
        + +
        style=""> + settings_expertsettings($backup_disabled); ?> +
        + +
        style=""> + + +
        +

        UpdraftPlus Premium

        +

        + ">
        +

        +

        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ">
        WordPress.Org + UpdraftPlus.Com
        + ">
        +
        +
        + '; + + // settings_header() opens a div + echo '
        '; + } + + private function print_restore_in_progress_box_if_needed() { + $restore_in_progress = get_site_option('updraft_restore_in_progress'); + if (!empty($restore_in_progress)) { + global $updraftplus; + $restore_jobdata = $updraftplus->jobdata_getarray($restore_in_progress); + if (is_array($restore_jobdata) && !empty($restore_jobdata)) { + // Only print if within the last 24 hours; and only after 2 minutes + if (isset($restore_jobdata['job_type']) && 'restore' == $restore_jobdata['job_type'] && isset($restore_jobdata['second_loop_entities']) && !empty($restore_jobdata['second_loop_entities']) && isset($restore_jobdata['job_time_ms']) && (time() - $restore_jobdata['job_time_ms'] > 120 || (defined('UPDRAFTPLUS_RESTORE_PROGRESS_ALWAYS_SHOW') && UPDRAFTPLUS_RESTORE_PROGRESS_ALWAYS_SHOW)) && time() - $restore_jobdata['job_time_ms'] < 86400 && (empty($_REQUEST['action']) || ('updraft_restore' != $_REQUEST['action'] && 'updraft_restore_continue' != $_REQUEST['action']))) { + $restore_jobdata['jobid'] = $restore_in_progress; + $this->restore_in_progress_jobdata = $restore_jobdata; + add_action('all_admin_notices', array($this, 'show_admin_restore_in_progress_notice') ); + } + } + } + } + + public function show_admin_restore_in_progress_notice() { + + if (isset($_REQUEST['action']) && 'updraft_restore_abort' == $_REQUEST['action'] && !empty($_REQUEST['restoreid'])) { + delete_site_option('updraft_restore_in_progress'); + return; + } + + $restore_jobdata = $this->restore_in_progress_jobdata; + $seconds_ago = time() - (int)$restore_jobdata['job_time_ms']; + $minutes_ago = floor($seconds_ago/60); + $seconds_ago = $seconds_ago - $minutes_ago*60; + $time_ago = sprintf(__("%s minutes, %s seconds", 'updraftplus'), $minutes_ago, $seconds_ago); + ?>
        +
        +

        +
        + + + + + +
        "; + + } + + public function backupnow_modal_contents() { + + $ret = $this->backup_now_widgetry(); + +// $ret .= '

        '.__('Does nothing happen when you attempt backups?','updraftplus').' '.__('Go here for help.', 'updraftplus').'

        '; + + return $ret; + } + + private function backup_now_widgetry() { + + $ret = ''; + + $ret .= '

        +
        '; + + $ret .= ' (...)
        '; + + $ret .= '

        '; + + $ret .= ''.$this->backup_now_remote_message().''; + + $ret .= '

        '; + + $ret .= apply_filters('updraft_backupnow_modal_afteroptions', '', ''); + + return $ret; + } + + // Also used by the auto-backups add-on + public function render_active_jobs_and_log_table($wide_format = false, $print_active_jobs = true) { + ?> + + + print_active_jobs() : '';?> + "> + + + + + + + + + + + + + + + + + + get_updraftplus_rssfeed(); + if (is_a($feed, 'SimplePie')) { + echo ''; + } + } + ?> +
        + +
        :
        +
        + most_recently_modified_log_link(); ?> +
        : +
        + most_recently_modified_log_link(); ?> +
        '.__('Latest UpdraftPlus.com news:', 'updraftplus').''; + echo '
        + last_modified_log(); + + ?> + class="updraft-log-link" onclick="event.preventDefault(); updraft_popuplog('');"> + true, + 'include_opera_warning' => false, + 'will_immediately_calculate_disk_space' => true, + 'include_whitespace_warning' => true, + 'include_header' => false, + ); + + foreach ($default_options as $k => $v) { + if (!isset($options[$k])) $options[$k] = $v; + } + + if (false === $backup_history) $backup_history = UpdraftPlus_Options::get_updraft_option('updraft_backup_history'); + if (!is_array($backup_history)) $backup_history=array(); + + if (!empty($options['include_header'])) echo '

        '.__('Existing Backups', 'updraftplus').' ('.count($backup_history).')

        '; + + ?> +
        + '.__('Existing Backups: Downloading And Restoring', 'updraftplus').''; */ ?> + + + + +
          +
        • :
        • + +
        • + + | + + | +
        • + +
        • :
        • + + +
        + + + + + + +
        +
        + existing_backup_table($backup_history); ?> +
        + +
        + + + + +
        +
        +
        +
        + +
        +
        +

        + +

        + +
        + + + + + +

        + +

        +
        +
        +
        +
        + +
        +

        :

        + +
        + +

        +
        + +
        + +
        + +
        +

        :

        +
        +
        + + + + + + detect_safe_mode()) { + echo "

        ".__("Your web server has PHP's so-called safe_mode active.", 'updraftplus').' '.__('This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time', 'updraftplus').' '.__('or to restore manually', 'updraftplus').'.


        '; + } + + $backupable_entities = $updraftplus->get_backupable_file_entities(true, true); + foreach ($backupable_entities as $type => $info) { + if (!isset($info['restorable']) || $info['restorable'] == true) { + echo '

        '; + + do_action("updraftplus_restore_form_$type"); + + echo '
        '; + } else { + $sdescrip = isset($info['shortdescription']) ? $info['shortdescription'] : $info['description']; + echo "
        ".htmlspecialchars(sprintf(__('The following entity cannot be restored automatically: "%s".', 'updraftplus'), $sdescrip))." ".__('You will need to restore it manually.', 'updraftplus')."
        ".''; + echo '
        '; + } + } + ?> +

        + + + +
        +
        +
        +

        " target="_blank">

        +
        +
        + + $head$content"; + } + + public function get_settings_expertsettings($backup_disabled){ + ob_start(); + $this->settings_expertsettings($backup_disabled); + return ob_get_clean(); + } + + private function settings_expertsettings($backup_disabled) { + $this->include_template('wp-admin/advanced/advanced-tools.php'); + } + + private function print_delete_old_dirs_form($include_blurb = true, $include_div = true) { + if ($include_blurb) { + if ($include_div) { + echo '
        '; + } + echo '

        '.__('Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked.','updraftplus').'

        '; + } + ?> +
        + + + +
        + '; + } + + private function get_cron($job_id = false) { + + $cron = get_option('cron'); + if (!is_array($cron)) $cron = array(); + if (false === $job_id) return $cron; + + foreach ($cron as $time => $job) { + if (isset($job['updraft_backup_resume'])) { + foreach ($job['updraft_backup_resume'] as $hook => $info) { + if (isset($info['args'][1]) && $job_id == $info['args'][1]) { + global $updraftplus; + $jobdata = $updraftplus->jobdata_getarray($job_id); + return (!is_array($jobdata)) ? false : array($time, $jobdata); + } + } + } + } + } + + // A value for $this_job_only also causes something to always be returned (to allow detection of the job having started on the front-end) + private function print_active_jobs($this_job_only = false) { + $cron = $this->get_cron(); +// $found_jobs = 0; + $ret = ''; + + foreach ($cron as $time => $job) { + if (isset($job['updraft_backup_resume'])) { + foreach ($job['updraft_backup_resume'] as $hook => $info) { + if (isset($info['args'][1])) { +// $found_jobs++; + $job_id = $info['args'][1]; + if (false === $this_job_only || $job_id == $this_job_only) { + $ret .= $this->print_active_job($job_id, false, $time, $info['args'][0]); + } + } + } + } + } + + // A value for $this_job_only implies that output is required + if (false !== $this_job_only && !$ret) { + $ret = $this->print_active_job($this_job_only); + if ('' == $ret) { + // The presence of the exact ID matters to the front-end - indicates that the backup job has at least begun + $ret = '
        '.__('The backup has finished running', 'updraftplus').' - '.__('View Log', 'updraftplus').'
        '; + } + } + +// if (0 == $found_jobs) $ret .= '

        '.__('(None)', 'updraftplus').'

        '; + return $ret; + } + + private function print_active_job($job_id, $is_oneshot = false, $time = false, $next_resumption = false) { + + $ret = ''; + + global $updraftplus; + $jobdata = $updraftplus->jobdata_getarray($job_id); + + if (false == apply_filters('updraftplus_print_active_job_continue', true, $is_oneshot, $next_resumption, $jobdata)) return ''; + + #if (!is_array($jobdata)) $jobdata = array(); + if (!isset($jobdata['backup_time'])) return ''; + + $backupable_entities = $updraftplus->get_backupable_file_entities(true, true); + + $began_at = (isset($jobdata['backup_time'])) ? get_date_from_gmt(gmdate('Y-m-d H:i:s', (int)$jobdata['backup_time']), 'D, F j, Y H:i') : '?'; + + $jobstatus = empty($jobdata['jobstatus']) ? 'unknown' : $jobdata['jobstatus']; + $stage = 0; + switch ($jobstatus) { + # Stage 0 + case 'begun': + $curstage = __('Backup begun', 'updraftplus'); + break; + # Stage 1 + case 'filescreating': + $stage = 1; + $curstage = __('Creating file backup zips', 'updraftplus'); + if (!empty($jobdata['filecreating_substatus']) && isset($backupable_entities[$jobdata['filecreating_substatus']['e']]['description'])) { + + $sdescrip = preg_replace('/ \(.*\)$/', '', $backupable_entities[$jobdata['filecreating_substatus']['e']]['description']); + if (strlen($sdescrip) > 20 && isset($jobdata['filecreating_substatus']['e']) && is_array($jobdata['filecreating_substatus']['e']) && isset($backupable_entities[$jobdata['filecreating_substatus']['e']]['shortdescription'])) $sdescrip = $backupable_entities[$jobdata['filecreating_substatus']['e']]['shortdescription']; + $curstage .= ' ('.$sdescrip.')'; + if (isset($jobdata['filecreating_substatus']['i']) && isset($jobdata['filecreating_substatus']['t'])) { + $stage = min(2, 1 + ($jobdata['filecreating_substatus']['i']/max($jobdata['filecreating_substatus']['t'],1))); + } + } + break; + case 'filescreated': + $stage = 2; + $curstage = __('Created file backup zips', 'updraftplus'); + break; + + # Stage 4 + case 'clouduploading': + $stage = 4; + $curstage = __('Uploading files to remote storage', 'updraftplus'); + if (isset($jobdata['uploading_substatus']['t']) && isset($jobdata['uploading_substatus']['i'])) { + $t = max((int)$jobdata['uploading_substatus']['t'], 1); + $i = min($jobdata['uploading_substatus']['i']/$t, 1); + $p = min($jobdata['uploading_substatus']['p'], 1); + $pd = $i + $p/$t; + $stage = 4 + $pd; + $curstage .= ' '.sprintf(__('(%s%%, file %s of %s)', 'updraftplus'), floor(100*$pd), $jobdata['uploading_substatus']['i']+1, $t); + } + break; + case 'pruning': + $stage = 5; + $curstage = __('Pruning old backup sets', 'updraftplus'); + break; + case 'resumingforerrors': + $stage = -1; + $curstage = __('Waiting until scheduled time to retry because of errors', 'updraftplus'); + break; + # Stage 6 + case 'finished': + $stage = 6; + $curstage = __('Backup finished', 'updraftplus'); + break; + default: + + # Database creation and encryption occupies the space from 2 to 4. Databases are created then encrypted, then the next databae is created/encrypted, etc. + if ('dbcreated' == substr($jobstatus, 0, 9)) { + $jobstatus = 'dbcreated'; + $whichdb = substr($jobstatus, 9); + if (!is_numeric($whichdb)) $whichdb = 0; + $howmanydbs = max((empty($jobdata['backup_database']) || !is_array($jobdata['backup_database'])) ? 1 : count($jobdata['backup_database']), 1); + $perdbspace = 2/$howmanydbs; + + $stage = min(4, 2 + ($whichdb+2)*$perdbspace); + + $curstage = __('Created database backup', 'updraftplus'); + + } elseif ('dbcreating' == substr($jobstatus, 0, 10)) { + $whichdb = substr($jobstatus, 10); + if (!is_numeric($whichdb)) $whichdb = 0; + $howmanydbs = (empty($jobdata['backup_database']) || !is_array($jobdata['backup_database'])) ? 1 : count($jobdata['backup_database']); + $perdbspace = 2/$howmanydbs; + $jobstatus = 'dbcreating'; + + $stage = min(4, 2 + $whichdb*$perdbspace); + + $curstage = __('Creating database backup', 'updraftplus'); + if (!empty($jobdata['dbcreating_substatus']['t'])) { + $curstage .= ' ('.sprintf(__('table: %s', 'updraftplus'), $jobdata['dbcreating_substatus']['t']).')'; + if (!empty($jobdata['dbcreating_substatus']['i']) && !empty($jobdata['dbcreating_substatus']['a'])) { + $substage = max(0.001, ($jobdata['dbcreating_substatus']['i'] / max($jobdata['dbcreating_substatus']['a'],1))); + $stage += $substage * $perdbspace * 0.5; + } + } + } elseif ('dbencrypting' == substr($jobstatus, 0, 12)) { + $whichdb = substr($jobstatus, 12); + if (!is_numeric($whichdb)) $whichdb = 0; + $howmanydbs = (empty($jobdata['backup_database']) || !is_array($jobdata['backup_database'])) ? 1 : count($jobdata['backup_database']); + $perdbspace = 2/$howmanydbs; + $stage = min(4, 2 + $whichdb*$perdbspace + $perdbspace*0.5); + $jobstatus = 'dbencrypting'; + $curstage = __('Encrypting database', 'updraftplus'); + } elseif ('dbencrypted' == substr($jobstatus, 0, 11)) { + $whichdb = substr($jobstatus, 11); + if (!is_numeric($whichdb)) $whichdb = 0; + $howmanydbs = (empty($jobdata['backup_database']) || !is_array($jobdata['backup_database'])) ? 1 : count($jobdata['backup_database']); + $jobstatus = 'dbencrypted'; + $perdbspace = 2/$howmanydbs; + $stage = min(4, 2 + $whichdb*$perdbspace + $perdbspace); + $curstage = __('Encrypted database', 'updraftplus'); + } else { + $curstage = __('Unknown', 'updraftplus'); + } + } + + $runs_started = (empty($jobdata['runs_started'])) ? array() : $jobdata['runs_started']; + $time_passed = (empty($jobdata['run_times'])) ? array() : $jobdata['run_times']; + $last_checkin_ago = -1; + if (is_array($time_passed)) { + foreach ($time_passed as $run => $passed) { + if (isset($runs_started[$run])) { + $time_ago = microtime(true) - ($runs_started[$run] + $time_passed[$run]); + if ($time_ago < $last_checkin_ago || $last_checkin_ago == -1) $last_checkin_ago = $time_ago; + } + } + } + + $next_res_after = (int)$time-time(); + $next_res_txt = ($is_oneshot) ? '' : ' - '.sprintf(__("next resumption: %d (after %ss)", 'updraftplus'), $next_resumption, $next_res_after). ' '; + $last_activity_txt = ($last_checkin_ago >= 0) ? ' - '.sprintf(__('last activity: %ss ago', 'updraftplus'), floor($last_checkin_ago)).' ' : ''; + + if (($last_checkin_ago < 50 && $next_res_after>30) || $is_oneshot) { + $show_inline_info = $last_activity_txt; + $title_info = $next_res_txt; + } else { + $show_inline_info = $next_res_txt; + $title_info = $last_activity_txt; + } + + // Existence of the 'updraft-jobid-(id)' id is checked for in other places, so do not modify this + $ret .= '
        '.$began_at.' '; + + $ret .= $show_inline_info; + $ret .= '- '.__('show log', 'updraftplus').''; + + if (!$is_oneshot) $ret .=' - '.__('stop', 'updraftplus').''; + + $ret .= apply_filters('updraft_printjob_beforewarnings', '', $jobdata, $job_id); + + if (!empty($jobdata['warnings']) && is_array($jobdata['warnings'])) { + $ret .= '
          '; + foreach ($jobdata['warnings'] as $warning) { + $ret .= '
        • '.sprintf(__('Warning: %s', 'updraftplus'), make_clickable(htmlspecialchars($warning))).'
        • '; + } + $ret .= '
        '; + } + + $ret .= '
        '; + $ret .= htmlspecialchars($curstage); + //we need to add this data-progress attribute in order to be able to update the progress bar in UDC + $ret .= '
        '; + $ret .= '
        '; + + $ret .= '
        '; + + return $ret; + + } + + private function delete_old_dirs_go($show_return = true) { + echo ($show_return) ? '

        UpdraftPlus - '.__('Remove old directories', 'updraftplus').'

        ' : '

        '.__('Remove old directories', 'updraftplus').'

        '; + + if ($this->delete_old_dirs()) { + echo '

        '.__('Old directories successfully removed.','updraftplus').'


        '; + } else { + echo '

        ',__('Old directory removal failed for some reason. You may want to do this manually.','updraftplus').'


        '; + } + if ($show_return) echo ''.__('Actions','updraftplus').': '.__('Return to UpdraftPlus Configuration','updraftplus').''; + } + + //deletes the -old directories that are created when a backup is restored. + private function delete_old_dirs() { + global $wp_filesystem, $updraftplus; + $credentials = request_filesystem_credentials(wp_nonce_url(UpdraftPlus_Options::admin_page_url()."?page=updraftplus&action=updraft_delete_old_dirs", 'updraftplus-credentialtest-nonce')); + WP_Filesystem($credentials); + if ($wp_filesystem->errors->get_error_code()) { + foreach ($wp_filesystem->errors->get_error_messages() as $message) + show_message($message); + exit; + } + // From WP_CONTENT_DIR - which contains 'themes' + $ret = $this->delete_old_dirs_dir($wp_filesystem->wp_content_dir()); + + $updraft_dir = $updraftplus->backups_dir_location(); + if ($updraft_dir) { + $ret4 = ($updraft_dir) ? $this->delete_old_dirs_dir($updraft_dir, false) : true; + } else { + $ret4 = true; + } + +// $ret2 = $this->delete_old_dirs_dir($wp_filesystem->abspath()); + $plugs = untrailingslashit($wp_filesystem->wp_plugins_dir()); + if ($wp_filesystem->is_dir($plugs.'-old')) { + print "".__('Delete','updraftplus').": plugins-old: "; + if (!$wp_filesystem->delete($plugs.'-old', true)) { + $ret3 = false; + print "".__('Failed', 'updraftplus')."
        "; + } else { + $ret3 = true; + print "".__('OK', 'updraftplus')."
        "; + } + } else { + $ret3 = true; + } + + return $ret && $ret3 && $ret4; + } + + private function delete_old_dirs_dir($dir, $wpfs = true) { + + $dir = trailingslashit($dir); + + global $wp_filesystem, $updraftplus; + + if ($wpfs) { + $list = $wp_filesystem->dirlist($dir); + } else { + $list = scandir($dir); + } + if (!is_array($list)) return false; + + $ret = true; + foreach ($list as $item) { + $name = (is_array($item)) ? $item['name'] : $item; + if ("-old" == substr($name, -4, 4)) { + //recursively delete + print "".__('Delete','updraftplus').": ".htmlspecialchars($name).": "; + + if ($wpfs) { + if (!$wp_filesystem->delete($dir.$name, true)) { + $ret = false; + echo "".__('Failed', 'updraftplus')."
        "; + } else { + echo "".__('OK', 'updraftplus')."
        "; + } + } else { + if ($updraftplus->remove_local_directory($dir.$name)) { + echo "".__('OK', 'updraftplus')."
        "; + } else { + $ret = false; + echo "".__('Failed', 'updraftplus')."
        "; + } + } + } + } + return $ret; + } + + // The aim is to get a directory that is writable by the webserver, because that's the only way we can create zip files + private function create_backup_dir() { + + global $wp_filesystem, $updraftplus; + + if (false === ($credentials = request_filesystem_credentials(UpdraftPlus_Options::admin_page().'?page=updraftplus&action=updraft_create_backup_dir&nonce='.wp_create_nonce('create_backup_dir')))) { + return false; + } + + if ( ! WP_Filesystem($credentials) ) { + // our credentials were no good, ask the user for them again + request_filesystem_credentials(UpdraftPlus_Options::admin_page().'?page=updraftplus&action=updraft_create_backup_dir&nonce='.wp_create_nonce('create_backup_dir'), '', true); + return false; + } + + $updraft_dir = $updraftplus->backups_dir_location(); + + $default_backup_dir = $wp_filesystem->find_folder(dirname($updraft_dir)).basename($updraft_dir); + + $updraft_dir = ($updraft_dir) ? $wp_filesystem->find_folder(dirname($updraft_dir)).basename($updraft_dir) : $default_backup_dir; + + if (!$wp_filesystem->is_dir($default_backup_dir) && !$wp_filesystem->mkdir($default_backup_dir, 0775)) { + $wperr = new WP_Error; + if ( $wp_filesystem->errors->get_error_code() ) { + foreach ( $wp_filesystem->errors->get_error_messages() as $message ) { + $wperr->add('mkdir_error', $message); + } + return $wperr; + } else { + return new WP_Error('mkdir_error', __('The request to the filesystem to create the directory failed.', 'updraftplus')); + } + } + + if ($wp_filesystem->is_dir($default_backup_dir)) { + + if ($updraftplus->really_is_writable($updraft_dir)) return true; + + @$wp_filesystem->chmod($default_backup_dir, 0775); + if ($updraftplus->really_is_writable($updraft_dir)) return true; + + @$wp_filesystem->chmod($default_backup_dir, 0777); + + if ($updraftplus->really_is_writable($updraft_dir)) { + echo '

        '.__('The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems', 'updraftplus').'

        '; + return true; + } else { + @$wp_filesystem->chmod($default_backup_dir, 0775); + $show_dir = (0 === strpos($default_backup_dir, ABSPATH)) ? substr($default_backup_dir, strlen(ABSPATH)) : $default_backup_dir; + return new WP_Error('writable_error', __('The folder exists, but your webserver does not have permission to write to it.', 'updraftplus').' '.__('You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory.', 'updraftplus').' ('.$show_dir.')'); + } + } + + return true; + } + + //scans the content dir to see if any -old dirs are present + private function scan_old_dirs($print_as_comment = false) { + global $updraftplus; + $dirs = scandir(untrailingslashit(WP_CONTENT_DIR)); + if (!is_array($dirs)) $dirs = array(); + $dirs_u = @scandir($updraftplus->backups_dir_location()); + if (!is_array($dirs_u)) $dirs_u = array(); + foreach (array_merge($dirs, $dirs_u) as $dir) { + if (preg_match('/-old$/', $dir)) { + if ($print_as_comment) echo ''; + return true; + } + } + # No need to scan ABSPATH - we don't backup there + if (is_dir(untrailingslashit(WP_PLUGIN_DIR).'-old')) { + if ($print_as_comment) echo ''; + return true; + } + return false; + } + + public function storagemethod_row($method, $header, $contents) { + ?> + + + + + ".$print_time.''; + } else { + $inc_time = get_date_from_gmt(gmdate('Y-m-d H:i:s', $updraft_last_backup['backup_time_incremental']), 'D, F j, Y H:i'); +// $inc_time = date_i18n('D, F j, Y H:i', $updraft_last_backup['backup_time_incremental']); + $last_backup_text = "$inc_time (".sprintf(__('incremental backup; base backup: %s', 'updraftplus'), $print_time).')'; + } + + $last_backup_text .= '
        '; + + // Show errors + warnings + if (is_array($updraft_last_backup['errors'])) { + foreach ($updraft_last_backup['errors'] as $err) { + $level = (is_array($err)) ? $err['level'] : 'error'; + $message = (is_array($err)) ? $err['message'] : $err; + $last_backup_text .= ('warning' == $level) ? "" : ""; + if ('warning' == $level) { + $message = sprintf(__("Warning: %s", 'updraftplus'), make_clickable(htmlspecialchars($message))); + } else { + $message = htmlspecialchars($message); + } + $last_backup_text .= $message; + $last_backup_text .= '
        '; + } + } + + // Link log + if (!empty($updraft_last_backup['backup_nonce'])) { + $updraft_dir = $updraftplus->backups_dir_location(); + + $potential_log_file = $updraft_dir."/log.".$updraft_last_backup['backup_nonce'].".txt"; + if (is_readable($potential_log_file)) $last_backup_text .= "".__('Download log file','updraftplus').""; + } + + } else { + $last_backup_text = "".__('No backup has been completed','updraftplus').""; + } + + return $last_backup_text; + + } + + public function get_intervals() { + return apply_filters('updraftplus_backup_intervals', array( + 'manual' => _x("Manual", 'i.e. Non-automatic', 'updraftplus'), + 'every4hours' => sprintf(__("Every %s hours", 'updraftplus'), '4'), + 'every8hours' => sprintf(__("Every %s hours", 'updraftplus'), '8'), + 'twicedaily' => sprintf(__("Every %s hours", 'updraftplus'), '12'), + 'daily' => __("Daily", 'updraftplus'), + 'weekly' => __("Weekly", 'updraftplus'), + 'fortnightly' => __("Fortnightly", 'updraftplus'), + 'monthly' => __("Monthly", 'updraftplus') + )); + } + + private function really_writable_message($really_is_writable, $updraft_dir){ + if ($really_is_writable) { + $dir_info = ''.__('Backup directory specified is writable, which is good.','updraftplus').''; + } else { + $dir_info = ''; + if (!is_dir($updraft_dir)) { + $dir_info .= __('Backup directory specified does not exist.','updraftplus'); + } else { + $dir_info .= __('Backup directory specified exists, but is not writable.','updraftplus'); + } + $dir_info .= ''.__('Follow this link to attempt to create the directory and set the permissions','updraftplus').', '.__('or, to reset this option','updraftplus').' '.__('click here','updraftplus').'. '.__('If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process.','updraftplus').''; + } + return $dir_info; + } + + public function settings_formcontents($options = array()) { + + global $updraftplus; + + $updraft_dir = $updraftplus->backups_dir_location(); + $really_is_writable = $updraftplus->really_is_writable($updraft_dir); + + $default_options = array( + 'include_database_decrypter' => true, + 'include_adverts' => true, + 'include_save_button' => true + ); + foreach ($default_options as $k => $v) { + if (!isset($options[$k])) $options[$k] = $v; + } + + ?> + + + + + + + + + + + + + + + + + + + + + + +
        : +
        + ', $selected_interval); ?> + + + '; + +// echo apply_filters('updraftplus_retain_files_intervalline', $retain_files_config, $updraft_retain); + echo $retain_files_config; + + ?> +
        + +
        : + + "> +
        : +
        + ', $selected_interval_db); ?> + + '; + +// echo apply_filters('updraftplus_retain_db_intervalline', $retain_dbs_config, $updraft_retain_db); + echo $retain_dbs_config; + ?> +
        + +
        + '.__('To fix the time at which a backup should take place,','updraftplus').' ('.__('e.g. if your server is busy at day and you want to run overnight','updraftplus').'), '.__('or to configure more complex schedules', 'updraftplus').', '.htmlspecialchars(__('use UpdraftPlus Premium', 'updraftplus')).'

        '); + ?> +
        + +

        + + + + + + + '; + } + ?> + + + + + + + + backup_methods as $method => $description) { + do_action('updraftplus_config_print_before_storage', $method); + require_once(UPDRAFTPLUS_DIR.'/methods/'.$method.'.php'); + $call_method = 'UpdraftPlus_BackupModule_'.$method; + $method_objects[$method] = new $call_method; + $method_objects[$method]->config_print(); + do_action('updraftplus_config_print_after_storage', $method); + } + ?> + +
        '.apply_filters('updraftplus_after_remote_storage_heading_message', ''.__('(tap on an icon to select or unselect)', 'updraftplus').''); + ?>: +
        + just_one($active_service); + + //Change this to give a class that we can exclude + $multi = apply_filters('updraftplus_storage_printoptions_multi', ''); + + foreach($updraftplus->backup_methods as $method => $description) { + $backup_using = esc_attr(sprintf(__("Backup using %s?", 'updraftplus'), $description)); + + echo ""; + } + ?> + + + '; + echo '

        '.htmlspecialchars(__('You can send a backup to more than one destination with an add-on.','updraftplus')).'

        '; + echo '
        + +
        + +

        + + + + + + +
        : + files_selector_widgetry(); ?> +

        '.htmlspecialchars(__('See also the "More Files" add-on from our shop.', 'updraftplus')).''); ?>

        +
        + +

        + + + + + + + + + + + + + + + + + + + + '.__("This feature is part of UpdraftPlus Premium.", 'updraftplus').'' + $moredbs_config = apply_filters('updraft_database_moredbs_config', false); + if (!empty($moredbs_config)) { + ?> + + + + + + + + +
        : + '.__("Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup.", 'updraftplus').' '.__('It can also backup external databases.', 'updraftplus')); + ?> +
        + + + + + + +
        : +
        + +

        + + + + + + + + + + + + +
        : + + >
        + '.__('For more reporting features, use the Reporting add-on.', 'updraftplus').''; + ?> +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        : -
        + +
        + + +
        + + jQuery(document).ready(function() { + + backup_methods as $method => $description) { + // already done: require_once(UPDRAFTPLUS_DIR.'/methods/'.$method.'.php'); + $call_method = "UpdraftPlus_BackupModule_$method"; + if (method_exists($call_method, 'config_print_javascript_onready')) { + $method_objects[$method]->config_print_javascript_onready(); + } + } + ?> + }); + get_backupable_file_entities(true, true); + # The true (default value if non-existent) here has the effect of forcing a default of on. + $include_more_paths = UpdraftPlus_Options::get_updraft_option('updraft_include_more_path'); + foreach ($backupable_entities as $key => $info) { + $included = (UpdraftPlus_Options::get_updraft_option("updraft_include_$key", apply_filters("updraftplus_defaultoption_include_".$key, true))) ? 'checked="checked"' : ""; + if ('others' == $key || 'uploads' == $key) { + + $data_toggle_exclude_field = $show_exclusion_options ? 'data-toggle_exclude_field="'.$key.'"' : ''; + + $ret .= '
        '; + + if ($show_exclusion_options) { + $include_exclude = UpdraftPlus_Options::get_updraft_option('updraft_include_'.$key.'_exclude', ('others' == $key) ? UPDRAFT_DEFAULT_OTHERS_EXCLUDE : UPDRAFT_DEFAULT_UPLOADS_EXCLUDE); + + $display = ($included) ? '' : 'class="updraft-hidden" style="display:none;"'; + + $ret .= "
        "; + + $ret .= ''; + + $ret .= ''; + + $ret .= '
        '; + } + + } else { + + if ($key != 'more' || true === $include_more || ('sometimes' === $include_more && !empty($include_more_paths))) { + + $data_toggle_exclude_field = $show_exclusion_options ? 'data-toggle_exclude_field="'.$key.'"' : ''; + + $ret .= "
        "; + $ret .= apply_filters("updraftplus_config_option_include_$key", '', $prefix); + } + } + } + + return $ret; + } + + public function show_double_warning($text, $extraclass = '', $echo = true) { + + $ret = "

        $text

        "; + $ret .= "

        $text

        "; + + if ($echo) echo $ret; + return $ret; + + } + + public function optionfilter_split_every($value) { + $value = absint($value); + if ($value < UPDRAFTPLUS_SPLIT_MIN) $value = UPDRAFTPLUS_SPLIT_MIN; + return $value; + } + + public function curl_check($service, $has_fallback = false, $extraclass = '', $echo = true) { + + $ret = ''; + + // Check requirements + if (!function_exists("curl_init") || !function_exists('curl_exec')) { + + $ret .= $this->show_double_warning(''.__('Warning','updraftplus').': '.sprintf(__("Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it.", 'updraftplus'), $service, 'Curl').' ', $extraclass, false); + + } else { + $curl_version = curl_version(); + $curl_ssl_supported= ($curl_version['features'] & CURL_VERSION_SSL); + if (!$curl_ssl_supported) { + if ($has_fallback) { + $ret .= '

        '.__('Warning','updraftplus').': '.sprintf(__("Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on).",'updraftplus'),$service).'

        '; + } else { + $ret .= $this->show_double_warning('

        '.__('Warning','updraftplus').': '.sprintf(__("Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative.",'updraftplus'),$service).'

        ', $extraclass, false); + } + } else { + $ret .= '

        '.sprintf(__("Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help.", 'updraftplus'),$service).'

        '; + } + } + if ($echo) { + echo $ret; + } else { + return $ret; + } + } + + # If $basedirs is passed as an array, then $directorieses must be too + private function recursive_directory_size($directorieses, $exclude = array(), $basedirs = '', $format='text') { + + $size = 0; + + if (is_string($directorieses)) { + $basedirs = $directorieses; + $directorieses = array($directorieses); + } + + if (is_string($basedirs)) $basedirs = array($basedirs); + + foreach ($directorieses as $ind => $directories) { + if (!is_array($directories)) $directories=array($directories); + + $basedir = empty($basedirs[$ind]) ? $basedirs[0] : $basedirs[$ind]; + + foreach ($directories as $dir) { + if (is_file($dir)) { + $size += @filesize($dir); + } else { + $suffix = ('' != $basedir) ? ((0 === strpos($dir, $basedir.'/')) ? substr($dir, 1+strlen($basedir)) : '') : ''; + $size += $this->recursive_directory_size_raw($basedir, $exclude, $suffix); + } + } + + } + + if ('numeric' == $format) return $size; + + global $updraftplus; + return $updraftplus->convert_numeric_size_to_text($size); + + } + + private function recursive_directory_size_raw($prefix_directory, &$exclude = array(), $suffix_directory = '') { + + $directory = $prefix_directory.('' == $suffix_directory ? '' : '/'.$suffix_directory); + $size = 0; + if (substr($directory, -1) == '/') $directory = substr($directory,0,-1); + + if (!file_exists($directory) || !is_dir($directory) || !is_readable($directory)) return -1; + if (file_exists($directory.'/.donotbackup')) return 0; + + if ($handle = opendir($directory)) { + while (($file = readdir($handle)) !== false) { + if ($file != '.' && $file != '..') { + $spath = ('' == $suffix_directory) ? $file : $suffix_directory.'/'.$file; + if (false !== ($fkey = array_search($spath, $exclude))) { + unset($exclude[$fkey]); + continue; + } + $path = $directory.'/'.$file; + if (is_file($path)) { + $size += filesize($path); + } elseif (is_dir($path)) { + $handlesize = $this->recursive_directory_size_raw($prefix_directory, $exclude, $suffix_directory.('' == $suffix_directory ? '' : '/').$file); + if ($handlesize >= 0) { $size += $handlesize; }# else { return -1; } + } + } + } + closedir($handle); + } + + return $size; + + } + + private function raw_backup_info($backup_history, $key, $nonce) { + + global $updraftplus; + + $backup = $backup_history[$key]; + + $pretty_date = get_date_from_gmt(gmdate('Y-m-d H:i:s', (int)$key), 'M d, Y G:i'); + + $rawbackup = "

        $pretty_date

        "; + + if (!empty($backup['label'])) $rawbackup .= ''.$backup['label'].''; + + $rawbackup .= '

        '; + + $backupable_entities = $updraftplus->get_backupable_file_entities(true, true); + + if (!empty($nonce)) { + $jd = $updraftplus->jobdata_getarray($nonce); + } else { + $jd = array(); + } + + foreach ($backupable_entities as $type => $info) { + if (!isset($backup[$type])) continue; + + $rawbackup .= $updraftplus->printfile($info['description'], $backup, $type, array('sha1'), $jd, true); + +// $rawbackup .= '

        '.$info['description'].'

        '; +// $files = is_string($backup[$type]) ? array($backup[$type]) : $backup[$type]; +// foreach ($files as $index => $file) { +// $rawbackup .= $file.'
        '; +// } + } + + $total_size = 0; + foreach ($backup as $ekey => $files) { + if ('db' == strtolower(substr($ekey, 0, 2)) && '-size' != substr($ekey, -5, 5)) { + $rawbackup .= $updraftplus->printfile(__('Database', 'updraftplus'), $backup, $ekey, array('sha1'), $jd, true); + } + if (!isset($backupable_entities[$ekey]) && ('db' != substr($ekey, 0, 2) || '-size' == substr($ekey, -5, 5))) continue; + if (is_string($files)) $files = array($files); + foreach ($files as $findex => $file) { + $size_key = (0 == $findex) ? $ekey.'-size' : $ekey.$findex.'-size'; + $total_size = (false === $total_size || !isset($backup[$size_key]) || !is_numeric($backup[$size_key])) ? false : $total_size + $backup[$size_key]; + } + } + + $services = empty($backup['service']) ? array('none') : $backup['service']; + if (!is_array($services)) $services = array('none'); + + $rawbackup .= ''.__('Uploaded to:', 'updraftplus').' '; + + $show_services = ''; + foreach ($services as $serv) { + if ('none' == $serv || '' == $serv) { + $add_none = true; + } elseif (isset($updraftplus->backup_methods[$serv])) { + $show_services .= ($show_services) ? ', '.$updraftplus->backup_methods[$serv] : $updraftplus->backup_methods[$serv]; + } else { + $show_services .= ($show_services) ? ', '.$serv : $serv; + } + } + if ('' == $show_services && $add_none) $show_services .= __('None', 'updraftplus'); + + $rawbackup .= $show_services; + + if ($total_size !== false) { + $rawbackup .= '

        '.__('Total backup size:', 'updraftplus').' '.$updraftplus->convert_numeric_size_to_text($total_size).'

        '; + } + + + + $rawbackup .= '


        '.print_r($backup, true).'

        '; + + if (!empty($jd) && is_array($jd)) { + $rawbackup .= '

        '.print_r($jd, true).'

        '; + } + + return esc_attr($rawbackup); + } + + private function existing_backup_table($backup_history = false) { + + global $updraftplus; + + if (false === $backup_history) $backup_history = UpdraftPlus_Options::get_updraft_option('updraft_backup_history'); + if (!is_array($backup_history)) $backup_history=array(); + if (empty($backup_history)) return "

        ".__('You have not yet made any backups.', 'updraftplus')."

        "; + + $updraft_dir = $updraftplus->backups_dir_location(); + $backupable_entities = $updraftplus->get_backupable_file_entities(true, true); + + $accept = apply_filters('updraftplus_accept_archivename', array()); + if (!is_array($accept)) $accept = array(); + + $ret = ''; + + //".__('Actions', 'updraftplus')." + $ret .= " + + + + + + + + + + "; +// $ret .= " +// +// "; + + krsort($backup_history); + foreach ($backup_history as $key => $backup) { + + $remote_sent = (!empty($backup['service']) && ((is_array($backup['service']) && in_array('remotesend', $backup['service'])) || 'remotesend' === $backup['service'])) ? true : false; + + # https://core.trac.wordpress.org/ticket/25331 explains why the following line is wrong + # $pretty_date = date_i18n('Y-m-d G:i',$key); + // Convert to blog time zone +// $pretty_date = get_date_from_gmt(gmdate('Y-m-d H:i:s', (int)$key), 'Y-m-d G:i'); + $pretty_date = get_date_from_gmt(gmdate('Y-m-d H:i:s', (int)$key), 'M d, Y G:i'); + + $esc_pretty_date = esc_attr($pretty_date); + $entities = ''; + + $non = $backup['nonce']; + $rawbackup = $this->raw_backup_info($backup_history, $key, $non); + + $jobdata = $updraftplus->jobdata_getarray($non); + + $delete_button = $this->delete_button($key, $non, $backup); + + $date_label = $this->date_label($pretty_date, $key, $backup, $jobdata, $non); + + $log_button = $this->log_button($backup); + + // Remote backups with no log result in useless empty rows + // However, not showing anything messes up the "Existing Backups (14)" display, until we tweak that code to count differently +// if ($remote_sent && !$log_button) continue; + + $ret .= << + + +ENDHERE; + + $ret .= ""; + + // No logs expected for foreign backups + if (empty($backup['meta_foreign'])) { + // $ret .= '"; + } + } + + $ret .= ""; + + $ret .= ''; + + $ret .= ''; + + $ret .= ""; + + } + + $ret .= '
        ".__('Backup date', 'updraftplus')."".__('Backup data (click to download)', 'updraftplus')."".__('Actions', 'updraftplus')."
         
        + $date_label + "; + + if ($remote_sent) { + + $ret .= __('Backup sent to remote site - not available for download.', 'updraftplus'); + if (!empty($backup['remotesend_url'])) $ret .= '
        '.__('Site', 'updraftplus').': '.htmlspecialchars($backup['remotesend_url']); + + } else { + + if (empty($backup['meta_foreign']) || !empty($accept[$backup['meta_foreign']]['separatedb'])) { + + if (isset($backup['db'])) { + $entities .= '/db=0/'; + + // Set a flag according to whether or not $backup['db'] ends in .crypt, then pick this up in the display of the decrypt field. + $db = is_array($backup['db']) ? $backup['db'][0] : $backup['db']; + if ($updraftplus->is_db_encrypted($db)) $entities .= '/dbcrypted=1/'; + + $ret .= $this->download_db_button('db', $key, $esc_pretty_date, $backup, $accept); + } else { + // $ret .= sprintf(_x('(No %s)','Message shown when no such object is available','updraftplus'), __('database', 'updraftplus')); + } + + # External databases + foreach ($backup as $bkey => $binfo) { + if ('db' == $bkey || 'db' != substr($bkey, 0, 2) || '-size' == substr($bkey, -5, 5)) continue; + $ret .= $this->download_db_button($bkey, $key, $esc_pretty_date, $backup); + } + + } else { + # Foreign without separate db + $entities = '/db=0/meta_foreign=1/'; + } + + if (!empty($backup['meta_foreign']) && !empty($accept[$backup['meta_foreign']]) && !empty($accept[$backup['meta_foreign']]['separatedb'])) { + $entities .= '/meta_foreign=2/'; + } + + $download_buttons = $this->download_buttons($backup, $key, $accept, $entities, $esc_pretty_date); + + $ret .= $download_buttons; + + // $ret .="
        '.$this->log_button($backup)."'; + $ret .= $this->restore_button($backup, $key, $pretty_date, $entities); + $ret .= $delete_button; + if (empty($backup['meta_foreign'])) $ret .= $log_button; + $ret .= '
         
        '; + return $ret; + } + + private function download_db_button($bkey, $key, $esc_pretty_date, $backup, $accept = array()) { + + if (!empty($backup['meta_foreign']) && isset($accept[$backup['meta_foreign']])) { + $desc_source = $accept[$backup['meta_foreign']]['desc']; + } else { + $desc_source = __('unknown source', 'updraftplus'); + } + + $ret = ''; + + if ('db' == $bkey) { + $dbt = empty($backup['meta_foreign']) ? esc_attr(__('Database','updraftplus')) : esc_attr(sprintf(__('Database (created by %s)', 'updraftplus'), $desc_source)); + } else { + $dbt = __('External database','updraftplus').' ('.substr($bkey, 2).')'; + } + + $ret .= $this->download_button($bkey, $key, 0, null, '', $dbt, $esc_pretty_date, '0'); + + return $ret; + } + + // Go through each of the file entities + private function download_buttons($backup, $key, $accept, &$entities, $esc_pretty_date) { + global $updraftplus; + $ret = ''; + $backupable_entities = $updraftplus->get_backupable_file_entities(true, true); + +// $colspan = 1; +// if (!empty($backup['meta_foreign'])) { +// $colspan = 2; +// if (empty($accept[$backup['meta_foreign']]['separatedb'])) $colspan++; +// } +// $ret .= (1 == $colspan) ? '' : ''; + + $first_entity = true; + + foreach ($backupable_entities as $type => $info) { + if (!empty($backup['meta_foreign']) && 'wpcore' != $type) continue; +// $colspan = 1; +// if (!empty($backup['meta_foreign'])) { +// $colspan = (1+count($backupable_entities)); +// if (empty($accept[$backup['meta_foreign']]['separatedb'])) $colspan++; +// } +// $ret .= (1 == $colspan) ? '' : ''; + $ide = ''; + if ('wpcore' == $type) $wpcore_restore_descrip = $info['description']; + if (empty($backup['meta_foreign'])) { + $sdescrip = preg_replace('/ \(.*\)$/', '', $info['description']); + if (strlen($sdescrip) > 20 && isset($info['shortdescription'])) $sdescrip = $info['shortdescription']; + } else { + $info['description'] = 'WordPress'; + + if (isset($accept[$backup['meta_foreign']])) { + $desc_source = $accept[$backup['meta_foreign']]['desc']; + $ide .= sprintf(__('Backup created by: %s.', 'updraftplus'), $accept[$backup['meta_foreign']]['desc']).' '; + } else { + $desc_source = __('unknown source', 'updraftplus'); + $ide .= __('Backup created by unknown source (%s) - cannot be restored.', 'updraftplus').' '; + } + + $sdescrip = (empty($accept[$backup['meta_foreign']]['separatedb'])) ? sprintf(__('Files and database WordPress backup (created by %s)', 'updraftplus'), $desc_source) : sprintf(__('Files backup (created by %s)', 'updraftplus'), $desc_source); + if ('wpcore' == $type) $wpcore_restore_descrip = $sdescrip; + } + if (isset($backup[$type])) { + if (!is_array($backup[$type])) $backup[$type]=array($backup[$type]); + $howmanyinset = count($backup[$type]); + $expected_index = 0; + $index_missing = false; + $set_contents = ''; + $entities .= "/$type="; + $whatfiles = $backup[$type]; + ksort($whatfiles); + foreach ($whatfiles as $findex => $bfile) { + $set_contents .= ($set_contents == '') ? $findex : ",$findex"; + if ($findex != $expected_index) $index_missing = true; + $expected_index++; + } + $entities .= $set_contents.'/'; + if (!empty($backup['meta_foreign'])) { + $entities .= '/plugins=0//themes=0//uploads=0//others=0/'; + } + $printing_first = true; + foreach ($whatfiles as $findex => $bfile) { + + $pdescrip = ($findex > 0) ? $sdescrip.' ('.($findex+1).')' : $sdescrip; + if ($printing_first) { + $ide .= __('Press here to download', 'updraftplus').' '.strtolower($info['description']); + } else { + $ret .= ''; + } else { + $printing_first = false; + } + } + } else { +// $ret .= sprintf(_x('(No %s)','Message shown when no such object is available','updraftplus'), preg_replace('/\s\(.{12,}\)/', '', strtolower($sdescrip))); + } +// $ret .= ''; + } +// $ret .= ''; + return $ret; + } + + public function date_label($pretty_date, $key, $backup, $jobdata, $nonce, $simple_format = false) { +// $ret = apply_filters('updraftplus_showbackup_date', ''.$pretty_date.'', $backup, $jobdata, (int)$key); + $ret = apply_filters('updraftplus_showbackup_date', $pretty_date, $backup, $jobdata, (int)$key, $simple_format); + if (is_array($jobdata) && !empty($jobdata['resume_interval']) && (empty($jobdata['jobstatus']) || 'finished' != $jobdata['jobstatus'])) { + if ($simple_format) { + $ret .= ' '.__('(Not finished)', 'updraftplus'); + } else { + $ret .= apply_filters('updraftplus_msg_unfinishedbackup', "
        ".__('(Not finished)', 'updraftplus').'', $jobdata, $nonce); + } + } + return $ret; + } + + private function download_button($type, $backup_timestamp, $findex, $info, $title, $pdescrip, $esc_pretty_date, $set_contents) { + + $ret = ''; + + $wp_nonce = wp_create_nonce('updraftplus_download'); + + // updraft_downloader(base, backup_timestamp, what, whicharea, set_contents, prettydate, async) + $ret .= ''; + // onclick="'."return updraft_downloader('uddlstatus_', '$backup_timestamp', '$type', '.ud_downloadstatus', '$set_contents', '$esc_pretty_date', true)".'" + + return $ret; + } + + private function restore_button($backup, $key, $pretty_date, $entities = '') { + $ret = '
        '; + + if ($entities) { + $show_data = $pretty_date; + if (isset($backup['native']) && false == $backup['native']) { + $show_data .= ' '.__('(backup set imported from remote location)', 'updraftplus'); + } + + $ret .= ''; + } + $ret .= "
        \n"; + return $ret; + } + + private function delete_button($key, $nonce, $backup) { + $sval = ((isset($backup['service']) && $backup['service'] != 'email' && $backup['service'] != 'none')) ? '1' : '0'; + return ''; + } + + private function log_button($backup) { + global $updraftplus; + $updraft_dir = $updraftplus->backups_dir_location(); + $ret = ''; + if (isset($backup['nonce']) && preg_match("/^[0-9a-f]{12}$/",$backup['nonce']) && is_readable($updraft_dir.'/log.'.$backup['nonce'].'.txt')) { + $nval = $backup['nonce']; +// $lt = esc_attr(__('View Log','updraftplus')); + $lt = __('View Log', 'updraftplus'); + $url = esc_attr(UpdraftPlus_Options::admin_page()."?page=updraftplus&action=downloadlog&updraftplus_backup_nonce=$nval"); + $ret .= << + + $lt + + +
        +ENDHERE; + return $ret; + } else { +// return str_replace(' ', ' ', '('.__('No backup log)', 'updraftplus').')'); + } + } + + // Return values: false = 'not yet' (not necessarily terminal); WP_Error = terminal failure; true = success + private function restore_backup($timestamp, $continuation_data = null) { + + @set_time_limit(UPDRAFTPLUS_SET_TIME_LIMIT); + + global $wp_filesystem, $updraftplus; + $backup_history = UpdraftPlus_Options::get_updraft_option('updraft_backup_history'); + if (!isset($backup_history[$timestamp]) || !is_array($backup_history[$timestamp])) { + echo '

        '.__('This backup does not exist in the backup history - restoration aborted. Timestamp:','updraftplus')." $timestamp


        "; + return new WP_Error('does_not_exist', __('Backup does not exist in the backup history', 'updraftplus')); + } + + // request_filesystem_credentials passes on fields just via hidden name/value pairs. + // Build array of parameters to be passed via this + $extra_fields = array(); + if (isset($_POST['updraft_restore']) && is_array($_POST['updraft_restore'])) { + foreach ($_POST['updraft_restore'] as $entity) { + $_POST['updraft_restore_'.$entity] = 1; + $extra_fields[] = 'updraft_restore_'.$entity; + } + } + + if (is_array($continuation_data)) { + foreach ($continuation_data['second_loop_entities'] as $type => $files) { + $_POST['updraft_restore_'.$type] = 1; + if (!in_array('updraft_restore_'.$type, $extra_fields)) $extra_fields[] = 'updraft_restore_'.$type; + } + if (!empty($continuation_data['restore_options'])) $restore_options = $continuation_data['restore_options']; + } + + // Now make sure that updraft_restorer_ option fields get passed along to request_filesystem_credentials + foreach ($_POST as $key => $value) { + if (0 === strpos($key, 'updraft_restorer_')) $extra_fields[] = $key; + } + + $credentials = request_filesystem_credentials(UpdraftPlus_Options::admin_page()."?page=updraftplus&action=updraft_restore&backup_timestamp=$timestamp", '', false, false, $extra_fields); + WP_Filesystem($credentials); + if ( $wp_filesystem->errors->get_error_code() ) { + echo '

        '.__('Why am I seeing this?', 'updraftplus').'

        '; + foreach ( $wp_filesystem->errors->get_error_messages() as $message ) show_message($message); + exit; + } + + // If we make it this far then WP_Filesystem has been instantiated and is functional + + # Set up logging + $updraftplus->backup_time_nonce(); + $updraftplus->jobdata_set('job_type', 'restore'); + $updraftplus->jobdata_set('job_time_ms', $updraftplus->job_time_ms); + $updraftplus->logfile_open($updraftplus->nonce); + + # Provide download link for the log file + + # TODO: Automatic purging of old log files + # TODO: Provide option to auto-email the log file + + echo '

        '.__('UpdraftPlus Restoration: Progress', 'updraftplus').'

        '; + + $this->show_admin_warning(''.__('Follow this link to download the log file for this restoration (needed for any support requests).', 'updraftplus').''); + + $updraft_dir = trailingslashit($updraftplus->backups_dir_location()); + $foreign_known = apply_filters('updraftplus_accept_archivename', array()); + + $service = (isset($backup_history[$timestamp]['service'])) ? $backup_history[$timestamp]['service'] : false; + if (!is_array($service)) $service = array($service); + + // Now, need to turn any updraft_restore_ fields (that came from a potential WP_Filesystem form) back into parts of the _POST array (which we want to use) + if (empty($_POST['updraft_restore']) || (!is_array($_POST['updraft_restore']))) $_POST['updraft_restore'] = array(); + + $backup_set = $backup_history[$timestamp]; + $entities_to_restore = array(); + foreach ($_POST['updraft_restore'] as $entity) { + if (empty($backup_set['meta_foreign'])) { + $entities_to_restore[$entity] = $entity; + } else { + if ('db' == $entity && !empty($foreign_known[$backup_set['meta_foreign']]) && !empty($foreign_known[$backup_set['meta_foreign']]['separatedb'])) { + $entities_to_restore[$entity] = 'db'; + } else { + $entities_to_restore[$entity] = 'wpcore'; + } + } + } + + foreach ($_POST as $key => $value) { + if (0 === strpos($key, 'updraft_restore_')) { + $nkey = substr($key, 16); + if (!isset($entities_to_restore[$nkey])) { + $_POST['updraft_restore'][] = $nkey; + if (empty($backup_set['meta_foreign'])) { + $entities_to_restore[$nkey] = $nkey; + } else { + if ('db' == $entity && !empty($foreign_known[$backup_set['meta_foreign']]['separatedb'])) { + $entities_to_restore[$nkey] = 'db'; + } else { + $entities_to_restore[$nkey] = 'wpcore'; + } + } + } + } + } + + if (0 == count($_POST['updraft_restore'])) { + echo '

        '.__('ABORT: Could not find the information on which entities to restore.', 'updraftplus').'

        '; + echo '

        '.__('If making a request for support, please include this information:','updraftplus').' '.count($_POST).' : '.htmlspecialchars(serialize($_POST)).'

        '; + return new WP_Error('missing_info', 'Backup information not found'); + } + + $this->entities_to_restore = $entities_to_restore; + + set_error_handler(array($updraftplus, 'php_error'), E_ALL & ~E_STRICT); + + /* + $_POST['updraft_restore'] is typically something like: array( 0=>'db', 1=>'plugins', 2=>'themes'), etc. + i.e. array ( 'db', 'plugins', themes') + */ + + if (empty($restore_options)) { + // Gather the restore optons into one place - code after here should read the options, and not the HTTP layer + $restore_options = array(); + if (!empty($_POST['updraft_restorer_restore_options'])) { + parse_str(stripslashes($_POST['updraft_restorer_restore_options']), $restore_options); + } + $restore_options['updraft_restorer_replacesiteurl'] = empty($_POST['updraft_restorer_replacesiteurl']) ? false : true; + $restore_options['updraft_encryptionphrase'] = empty($_POST['updraft_encryptionphrase']) ? '' : (string)stripslashes($_POST['updraft_encryptionphrase']); + $restore_options['updraft_restorer_wpcore_includewpconfig'] = empty($_POST['updraft_restorer_wpcore_includewpconfig']) ? false : true; + $updraftplus->jobdata_set('restore_options', $restore_options); + } + + // Restore in the most helpful order + uksort($backup_set, array($this, 'sort_restoration_entities')); + + // Now log + $copy_restore_options = $restore_options; + if (!empty($copy_restore_options['updraft_encryptionphrase'])) $copy_restore_options['updraft_encryptionphrase'] = '***'; + $updraftplus->log("Restore job started. Entities to restore: ".implode(', ', array_flip($entities_to_restore)).'. Restore options: '.json_encode($copy_restore_options)); + + $backup_set['timestamp'] = $timestamp; + + $backupable_entities = $updraftplus->get_backupable_file_entities(true, true); + + // Allow add-ons to adjust the restore directory (but only in the case of restore - otherwise, they could just use the filter built into UpdraftPlus::get_backupable_file_entities) + $backupable_entities = apply_filters('updraft_backupable_file_entities_on_restore', $backupable_entities, $restore_options, $backup_set); + + // We use a single object for each entity, because we want to store information about the backup set + require_once(UPDRAFTPLUS_DIR.'/restorer.php'); + + global $updraftplus_restorer; + + $updraftplus_restorer = new Updraft_Restorer(new Updraft_Restorer_Skin, $backup_set, false, $restore_options); + + $second_loop = array(); + + echo "

        ".__('Final checks', 'updraftplus').'

        '; + + if (empty($backup_set['meta_foreign'])) { + $entities_to_download = $entities_to_restore; + } else { + if (!empty($foreign_known[$backup_set['meta_foreign']]['separatedb'])) { + $entities_to_download = array(); + if (in_array('db', $entities_to_restore)) { + $entities_to_download['db'] = 1; + } + if (count($entities_to_restore) > 1 || !in_array('db', $entities_to_restore)) { + $entities_to_download['wpcore'] = 1; + } + } else { + $entities_to_download = array('wpcore' => 1); + } + } + + // First loop: make sure that files are present + readable; and populate array for second loop + foreach ($backup_set as $type => $files) { + // All restorable entities must be given explicitly, as we can store other arbitrary data in the history array + if (!isset($backupable_entities[$type]) && 'db' != $type) continue; + if (isset($backupable_entities[$type]['restorable']) && $backupable_entities[$type]['restorable'] == false) continue; + + if (!isset($entities_to_download[$type])) continue; + if ('wpcore' == $type && is_multisite() && 0 === $updraftplus_restorer->ud_backup_is_multisite) { + echo "

        $type: "; + $updraftplus->log(__('Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file.', 'updraftplus'), 'notice-restore'); + #TODO + #$updraftplus->log_e('Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file.'); + echo "

        "; + continue; + } + + if (is_string($files)) $files=array($files); + + foreach ($files as $ind => $file) { + + $fullpath = $updraft_dir.$file; + $updraftplus->log(sprintf(__("Looking for %s archive: file name: %s", 'updraftplus'), $type, $file), 'notice-restore'); + + if (is_array($continuation_data) && isset($continuation_data['second_loop_entities'][$type]) && !in_array($file, $continuation_data['second_loop_entities'][$type])) { + echo __('Skipping: this archive was already restored.', 'updraftplus')."
        "; + // Set the marker so that the existing directory isn't moved out of the way + $updraftplus_restorer->been_restored[$type] = true; + continue; + } + + add_action('http_request_args', array($updraftplus, 'modify_http_options')); + foreach ($service as $serv) { + if (!is_readable($fullpath)) { + $sd = (empty($updraftplus->backup_methods[$serv])) ? $serv : $updraftplus->backup_methods[$serv]; + $updraftplus->log(__("File is not locally present - needs retrieving from remote storage",'updraftplus')." ($sd)", 'notice-restore'); + $this->download_file($file, $serv); + if (!is_readable($fullpath)) { + $updraftplus->log(__("Error", 'updraftplus'), 'notice-restore'); + } else { + $updraftplus->log(__("OK", 'updraftplus'), 'notice-restore'); + } + } + } + remove_action('http_request_args', array($updraftplus, 'modify_http_options')); + + $index = ($ind == 0) ? '' : $ind; + // If a file size is stored in the backup data, then verify correctness of the local file + if (isset($backup_history[$timestamp][$type.$index.'-size'])) { + $fs = $backup_history[$timestamp][$type.$index.'-size']; + $print_message = __("Archive is expected to be size:",'updraftplus')." ".round($fs/1024, 1)." KB: "; + $as = @filesize($fullpath); + if ($as == $fs) { + $updraftplus->log($print_message.__('OK','updraftplus'), 'notice-restore'); + } else { + $updraftplus->log($print_message.__('Error:','updraftplus')." ".__('file is size:', 'updraftplus')." ".round($as/1024)." ($fs, $as)", 'warning-restore'); + } + } else { + $updraftplus->log(__("The backup records do not contain information about the proper size of this file.",'updraftplus'), 'notice-restore'); + } + if (!is_readable($fullpath)) { + $updraftplus->log(__('Could not find one of the files for restoration', 'updraftplus')." ($file)", 'warning-restore'); + $updraftplus->log("$file: ".__('Could not find one of the files for restoration', 'updraftplus'), 'error'); + echo '
        '; + restore_error_handler(); + return false; + } + } + + if (empty($updraftplus_restorer->ud_foreign)) { + $types = array($type); + } else { + if ('db' != $type || empty($foreign_known[$updraftplus_restorer->ud_foreign]['separatedb'])) { + $types = array('wpcore'); + } else { + $types = array('db'); + } + } + + foreach ($types as $check_type) { + $info = (isset($backupable_entities[$check_type])) ? $backupable_entities[$check_type] : array(); + $val = $updraftplus_restorer->pre_restore_backup($files, $check_type, $info, $continuation_data); + if (is_wp_error($val)) { + $updraftplus->log_wp_error($val); + foreach ($val->get_error_messages() as $msg) { + $updraftplus->log(__('Error:', 'updraftplus').' '.$msg, 'warning-restore'); + } + foreach ($val->get_error_codes() as $code) { + if ('already_exists' == $code) $this->print_delete_old_dirs_form(false); + } + echo '
        '; //close the updraft_restore_progress div even if we error + restore_error_handler(); + return $val; + } elseif (false === $val) { + echo '
        '; //close the updraft_restore_progress div even if we error + restore_error_handler(); + return false; + } + } + + foreach ($entities_to_restore as $entity => $via) { + if ($via == $type) { + if ('wpcore' == $via && 'db' == $entity && count($files) > 1) { + $second_loop[$entity] = apply_filters('updraftplus_select_wpcore_file_with_db', $files, $updraftplus_restorer->ud_foreign); + } else { + $second_loop[$entity] = $files; + } + } + } + + } + + $updraftplus_restorer->delete = (UpdraftPlus_Options::get_updraft_option('updraft_delete_local')) ? true : false; + if ('none' === $service || 'email' === $service || empty($service) || (is_array($service) && 1 == count($service) && (in_array('none', $service) || in_array('', $service) || in_array('email', $service))) || !empty($updraftplus_restorer->ud_foreign)) { + if ($updraftplus_restorer->delete) $updraftplus->log_e('Will not delete any archives after unpacking them, because there was no cloud storage for this backup'); + $updraftplus_restorer->delete = false; + } + + if (!empty($updraftplus_restorer->ud_foreign)) $updraftplus->log("Foreign backup; created by: ".$updraftplus_restorer->ud_foreign); + + // Second loop: now actually do the restoration + uksort($second_loop, array($this, 'sort_restoration_entities')); + + // If continuing, then prune those already done + if (is_array($continuation_data)) { + foreach ($second_loop as $type => $files) { + if (isset($continuation_data['second_loop_entities'][$type])) $second_loop[$type] = $continuation_data['second_loop_entities'][$type]; + } + } + + $updraftplus->jobdata_set('second_loop_entities', $second_loop); + $updraftplus->jobdata_set('backup_timestamp', $timestamp); + // use a site option, as otherwise on multisite when all the array of options is updated via UpdraftPlus_Options::update_site_option(), it will over-write any restored UD options from the backup + update_site_option('updraft_restore_in_progress', $updraftplus->nonce); + + foreach ($second_loop as $type => $files) { + # Types: uploads, themes, plugins, others, db + $info = (isset($backupable_entities[$type])) ? $backupable_entities[$type] : array(); + + echo ('db' == $type) ? "

        ".__('Database','updraftplus')."

        " : "

        ".$info['description']."

        "; + $updraftplus->log("Entity: ".$type); + + if (is_string($files)) $files = array($files); + foreach ($files as $fkey => $file) { + $last_one = (1 == count($second_loop) && 1 == count($files)); + + $val = $updraftplus_restorer->restore_backup($file, $type, $info, $last_one); + + if (is_wp_error($val)) { + $codes = $val->get_error_codes(); + if (is_array($codes) && in_array('not_found', $codes) && !empty($updraftplus_restorer->ud_foreign) && apply_filters('updraftplus_foreign_allow_missing_entity', false, $type, $updraftplus_restorer->ud_foreign)) { + $updraftplus->log("Entity to move not found in this zip - but this is possible with this foreign backup type"); + } else { + + $updraftplus->log_e($val); + foreach ($val->get_error_messages() as $msg) { + $updraftplus->log(__('Error message', 'updraftplus').': '.$msg, 'notice-restore'); + } + $codes = $val->get_error_codes(); + if (is_array($codes)) { + foreach ($codes as $code) { + $data = $val->get_error_data($code); + if (!empty($data)) { + $pdata = (is_string($data)) ? $data : serialize($data); + $updraftplus->log(__('Error data:', 'updraftplus').' '.$pdata, 'warning-restore'); + if (false !== strpos($pdata, 'PCLZIP_ERR_BAD_FORMAT (-10)')) { + echo ''.__('Please consult this FAQ for help on what to do about it.', 'updraftplus').'
        '; + } + } + } + } + echo '
        '; //close the updraft_restore_progress div even if we error + restore_error_handler(); + return $val; + } + } elseif (false === $val) { + echo '
        '; //close the updraft_restore_progress div even if we error + restore_error_handler(); + return false; + } + unset($files[$fkey]); + $second_loop[$type] = $files; + $updraftplus->jobdata_set('second_loop_entities', $second_loop); + $updraftplus->jobdata_set('backup_timestamp', $timestamp); + + do_action('updraft_restored_archive', $file, $type, $val, $fkey, $timestamp); + + } + unset($second_loop[$type]); + update_site_option('updraft_restore_in_progress', $updraftplus->nonce); + $updraftplus->jobdata_set('second_loop_entities', $second_loop); + $updraftplus->jobdata_set('backup_timestamp', $timestamp); + } + + // All done - remove + delete_site_option('updraft_restore_in_progress'); + + foreach (array('template', 'stylesheet', 'template_root', 'stylesheet_root') as $opt) { + add_filter('pre_option_'.$opt, array($this, 'option_filter_'.$opt)); + } + + # Clear any cached pages after the restore + $updraftplus_restorer->clear_cache(); + + if (!function_exists('validate_current_theme')) require_once(ABSPATH.WPINC.'/themes'); + + # Have seen a case where the current theme in the DB began with a capital, but not on disk - and this breaks migrating from Windows to a case-sensitive system + $template = get_option('template'); + if (!empty($template) && $template != WP_DEFAULT_THEME && $template != strtolower($template)) { + + $theme_root = get_theme_root($template); + $theme_root2 = get_theme_root(strtolower($template)); + + if (!file_exists("$theme_root/$template/style.css") && file_exists("$theme_root/".strtolower($template)."/style.css")) { + $updraftplus->log_e("Theme directory (%s) not found, but lower-case version exists; updating database option accordingly", $template); + update_option('template', strtolower($template)); + } + + } + + if (!validate_current_theme()) { + echo ''; + $updraftplus->log_e("The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme"); + echo ''; + } + + echo '
        '; //close the updraft_restore_progress div + + restore_error_handler(); + return true; + } + + public function option_filter_template($val) { global $updraftplus; return $updraftplus->option_filter_get('template'); } + + public function option_filter_stylesheet($val) { global $updraftplus; return $updraftplus->option_filter_get('stylesheet'); } + + public function option_filter_template_root($val) { global $updraftplus; return $updraftplus->option_filter_get('template_root'); } + + public function option_filter_stylesheet_root($val) { global $updraftplus; return $updraftplus->option_filter_get('stylesheet_root'); } + + public function sort_restoration_entities($a, $b) { + if ($a == $b) return 0; + // Put the database first + // Put wpcore after plugins/uploads/themes (needed for restores of foreign all-in-one formats) + if ('db' == $a || 'wpcore' == $b) return -1; + if ('db' == $b || 'wpcore' == $a) return 1; + // After wpcore, next last is others + if ('others' == $b) return -1; + if ('others' == $a) return 1; + // And then uploads - this is only because we want to make sure uploads is after plugins, so that we know before we get to the uploads whether the version of UD which might have to unpack them can do this new-style or not. + if ('uploads' == $b) return -1; + if ('uploads' == $a) return 1; + return strcmp($a, $b); + } + + public function return_array($input) { + if (!is_array($input)) $input = array(); + return $input; + } + + public function updraft_ajax_savesettings() { + global $updraftplus; + + if (empty($_POST) || empty($_POST['subaction']) || 'savesettings' != $_POST['subaction'] || !isset($_POST['nonce']) || !is_user_logged_in() || !UpdraftPlus_Options::user_can_manage() || !wp_verify_nonce($_POST['nonce'], 'updraftplus-settings-nonce')) die('Security check'); + + if (empty($_POST['settings']) || !is_string($_POST['settings'])) die('Invalid data'); + + parse_str(stripslashes($_POST['settings']), $posted_settings); + // We now have $posted_settings as an array + + echo json_encode($this->save_settings($posted_settings)); + + die; + } + + public function updraft_ajax_importsettings() { + global $updraftplus; + + if (empty($_POST) || empty($_POST['subaction']) || 'importsettings' != $_POST['subaction'] || !isset($_POST['nonce']) || !is_user_logged_in() || !UpdraftPlus_Options::user_can_manage() || !wp_verify_nonce($_POST['nonce'], 'updraftplus-settings-nonce')) die('Security check'); + + if (empty($_POST['settings']) || !is_string($_POST['settings'])) die('Invalid data'); + + $this->import_settings($_POST); + } + + public function import_settings($settings) { + + $settings = json_decode(stripslashes($settings['settings']),true); + + echo json_encode($this->save_settings($settings)); + + die; + } + + private function backup_now_remote_message() { + global $updraftplus; + + $service = $updraftplus->just_one(UpdraftPlus_Options::get_updraft_option('updraft_service')); + if (is_string($service)) $service = array($service); + if (!is_array($service)) $service = array(); + + $no_remote_configured = (empty($service) || array('none') === $service || array('') === $service) ? true : false; + + if ($no_remote_configured) { + return ' '.sprintf(__("Backup won't be sent to any remote storage - none has been saved in the %s", 'updraftplus'), ''.__('settings', 'updraftplus')).'. '.__('Not got any remote storage?', 'updraftplus').' '.__("Check out UpdraftPlus Vault.", 'updraftplus').''; + } else { + return ' '; + } + } + + public function save_settings($settings) { + + global $updraftplus; + + // Make sure that settings filters are registered + UpdraftPlus_Options::admin_init(); + + $return_array = array('saved' => true); + + $add_to_post_keys = array('updraft_interval', 'updraft_interval_database', 'updraft_starttime_files', 'updraft_starttime_db', 'updraft_startday_files', 'updraft_startday_db'); + + //If database and files are on same schedule, override the db day/time settings + if (isset($settings['updraft_interval_database']) && isset($settings['updraft_interval_database']) && $settings['updraft_interval_database'] == $settings['updraft_interval'] && isset($settings['updraft_starttime_files'])) { + $settings['updraft_starttime_db'] = $settings['updraft_starttime_files']; + $settings['updraft_startday_db'] = $settings['updraft_startday_files']; + } + foreach ($add_to_post_keys as $key) { + // For add-ons that look at $_POST to find saved settings, add the relevant keys to $_POST so that they find them there + if (isset($settings[$key])) { + $_POST[$key] = $settings[$key]; + } + } + + // Wipe the extra retention rules, as they are not saved correctly if the last one is deleted + UpdraftPlus_Options::update_updraft_option('updraft_retain_extrarules', array()); + UpdraftPlus_Options::update_updraft_option('updraft_email', array()); + UpdraftPlus_Options::update_updraft_option('updraft_report_warningsonly', array()); + UpdraftPlus_Options::update_updraft_option('updraft_report_wholebackup', array()); + UpdraftPlus_Options::update_updraft_option('updraft_extradbs', array()); + UpdraftPlus_Options::update_updraft_option('updraft_include_more_path', array()); + + $relevant_keys = $updraftplus->get_settings_keys(); + + if (method_exists('UpdraftPlus_Options', 'mass_options_update')) { + $original_settings = $settings; + $settings = UpdraftPlus_Options::mass_options_update($settings); + $mass_updated = true; + } + + foreach ($settings as $key => $value) { +// $exclude_keys = array('option_page', 'action', '_wpnonce', '_wp_http_referer'); + +// if (!in_array($key, $exclude_keys)) { + if (in_array($key, $relevant_keys)) { + if ($key == "updraft_service" && is_array($value)){ + foreach ($value as $subkey => $subvalue){ + if ($subvalue == '0') unset($value[$subkey]); + } + } + + // This flag indicates that either the stored database option was changed, or that the supplied option was changed before being stored. It isn't comprehensive - it's only used to update some UI elements with invalid input. + $updated = empty($mass_updated) ? (is_string($value) && $value != UpdraftPlus_Options::get_updraft_option($key)) : (is_string($value) && (!isset($original_settings[$key]) || $original_settings[$key] != $value)); + + $db_updated = empty($mass_updated) ? UpdraftPlus_Options::update_updraft_option($key, $value) : true; + + // Add information on what has changed to array to loop through to update links etc. + // Restricting to strings for now, to prevent any unintended leakage (since this is just used for UI updating) + if ($updated) { + $value = UpdraftPlus_Options::get_updraft_option($key); + if (is_string($value)) $return_array['changed'][$key] = $value; + } + } else { + // When last active, it was catching: option_page, action, _wpnonce, _wp_http_referer, updraft_s3_endpoint, updraft_dreamobjects_endpoint. The latter two are empty; probably don't need to be in the page at all. + //error_log("Non-UD key when saving from POSTed data: ".$key); + } + } + + // Checking for various possible messages + $updraft_dir = $updraftplus->backups_dir_location(false); + $really_is_writable = $updraftplus->really_is_writable($updraft_dir); + $dir_info = $this->really_writable_message($really_is_writable, $updraft_dir); + $button_title = esc_attr(__('This button is disabled because your backup directory is not writable (see the settings).', 'updraftplus')); + + $return_array['backup_now_message'] = $this->backup_now_remote_message(); + + $return_array['backup_dir'] = array('writable' => $really_is_writable, 'message' => $dir_info, 'button_title' => $button_title); + + //Because of the single AJAX call, we need to remove the existing UD messages from the 'all_admin_notices' action + remove_all_actions('all_admin_notices'); + + //Moving from 2 to 1 ajax call + ob_start(); + + $service = UpdraftPlus_Options::get_updraft_option('updraft_service'); + + $this->setup_all_admin_notices_global($service); + $this->setup_all_admin_notices_udonly($service); + + do_action('all_admin_notices'); + + if (!$really_is_writable){ //Check if writable + $this->show_admin_warning_unwritable(); + } + + if ($return_array['saved'] == true){ // + $this->show_admin_warning(__('Your settings have been saved.', 'updraftplus'), 'updated fade'); + } + + $messages_output = ob_get_contents(); + + ob_clean(); + + // Backup schedule output + $this->next_scheduled_backups_output(); + + $scheduled_output = ob_get_clean(); + + $return_array['messages'] = $messages_output; + $return_array['scheduled'] = $scheduled_output; + + //*** Add the updated options to the return message, so we can update on screen ***\\ + + + return $return_array; + + } + +} diff --git a/plugins/updraftplus/backup.php b/plugins/updraftplus/backup.php new file mode 100644 index 0000000..a08212e --- /dev/null +++ b/plugins/updraftplus/backup.php @@ -0,0 +1,3024 @@ + times + private $altered_since = -1; + # Time for the current entity + private $makezip_if_altered_since = -1; + + private $excluded_extensions = false; + + private $use_zip_object = 'UpdraftPlus_ZipArchive'; + public $debug = false; + + public $updraft_dir; + private $blog_name; + private $wpdb_obj; + private $job_file_entities = array(); + + private $first_run = 0; + + // Record of zip files created + private $backup_files_array = array(); + + // Used for reporting + private $remotestorage_extrainfo = array(); + + // Used when deciding to use the 'store' or 'deflate' zip storage method + private $extensions_to_not_compress = array(); + + public function __construct($backup_files, $altered_since = -1) { + + global $updraftplus; + + // Get the blog name and rip out known-problematic characters. Remember that we may need to be able to upload this to any FTP server or cloud storage, where filename support may be unknown + $blog_name = str_replace('__', '_', preg_replace('/[^A-Za-z0-9_]/','', str_replace(' ','_', substr(get_bloginfo(), 0, 32)))); + if (!$blog_name || preg_match('#^_+$#', $blog_name)) { + // Try again... + $parsed_url = parse_url(home_url(), PHP_URL_HOST); + $parsed_subdir = untrailingslashit(parse_url(home_url(), PHP_URL_PATH)); + if ($parsed_subdir && '/' != $parsed_subdir) $parsed_url .= str_replace(array('/', '\\'), '_', $parsed_subdir); + $blog_name = str_replace('__', '_', preg_replace('/[^A-Za-z0-9_]/','', str_replace(' ','_', substr($parsed_url, 0, 32)))); + if (!$blog_name || preg_match('#^_+$#', $blog_name)) $blog_name = 'WordPress_Backup'; + } + + // Allow an over-ride. Careful about introducing characters not supported by your filesystem or cloud storage. + $this->blog_name = apply_filters('updraftplus_blog_name', $blog_name); + + # Decide which zip engine to begin with + $this->debug = UpdraftPlus_Options::get_updraft_option('updraft_debug_mode'); + $this->updraft_dir = $updraftplus->backups_dir_location(); + $this->updraft_dir_realpath = realpath($this->updraft_dir); + + add_action('updraft_report_remotestorage_extrainfo', array($this, 'report_remotestorage_extrainfo'), 10, 3); + + if ('no' === $backup_files) { + $this->use_zip_object = 'UpdraftPlus_PclZip'; + return; + } + + $this->extensions_to_not_compress = array_unique(array_map('strtolower', array_map('trim', explode(',', UPDRAFTPLUS_ZIP_NOCOMPRESS)))); + + $this->altered_since = $altered_since; + + // false means 'tried + failed'; whereas 0 means 'not yet tried' + // Disallow binzip on OpenVZ when we're not sure there's plenty of memory + if ($this->binzip === 0 && (!defined('UPDRAFTPLUS_PREFERPCLZIP') || UPDRAFTPLUS_PREFERPCLZIP != true) && (!defined('UPDRAFTPLUS_NO_BINZIP') || !UPDRAFTPLUS_NO_BINZIP) && $updraftplus->current_resumption <9) { + + if (@file_exists('/proc/user_beancounters') && @file_exists('/proc/meminfo') && @is_readable('/proc/meminfo')) { + $meminfo = @file_get_contents('/proc/meminfo', false, null, -1, 200); + if (is_string($meminfo) && preg_match('/MemTotal:\s+(\d+) kB/', $meminfo, $matches)) { + $memory_mb = $matches[1]/1024; + # If the report is of a large amount, then we're probably getting the total memory on the hypervisor (this has been observed), and don't really know the VPS's memory + $vz_log = "OpenVZ; reported memory: ".round($memory_mb, 1)." MB"; + if ($memory_mb < 1024 || $memory_mb > 8192) { + $openvz_lowmem = true; + $vz_log .= " (will not use BinZip)"; + } + $updraftplus->log($vz_log); + } + } + if (empty($openvz_lowmem)) { + $updraftplus->log('Checking if we have a zip executable available'); + $binzip = $updraftplus->find_working_bin_zip(); + if (is_string($binzip)) { + $updraftplus->log("Zip engine: found/will use a binary zip: $binzip"); + $this->binzip = $binzip; + $this->use_zip_object = 'UpdraftPlus_BinZip'; + } + } + } + + # In tests, PclZip was found to be 25% slower than ZipArchive + if ($this->use_zip_object != 'UpdraftPlus_PclZip' && empty($this->binzip) && ((defined('UPDRAFTPLUS_PREFERPCLZIP') && UPDRAFTPLUS_PREFERPCLZIP == true) || !class_exists('ZipArchive') || !class_exists('UpdraftPlus_ZipArchive') || (!extension_loaded('zip') && !method_exists('ZipArchive', 'AddFile')))) { + global $updraftplus; + $updraftplus->log("Zip engine: ZipArchive is not available or is disabled (will use PclZip if needed)"); + $this->use_zip_object = 'UpdraftPlus_PclZip'; + } + + } + + public function report_remotestorage_extrainfo($service, $info_html, $info_plain) { + $this->remotestorage_extrainfo[$service] = array('pretty' => $info_html, 'plain' => $info_plain); + } + + // Public, because called from the 'More Files' add-on + public function create_zip($create_from_dir, $whichone, $backup_file_basename, $index, $first_linked_index = false) { + // Note: $create_from_dir can be an array or a string + @set_time_limit(UPDRAFTPLUS_SET_TIME_LIMIT); + $original_index = $index; + $this->index = $index; + $this->first_linked_index = (false === $first_linked_index) ? 0 : $first_linked_index; + + $this->whichone = $whichone; + + global $updraftplus; + + $this->zip_split_every = max((int)$updraftplus->jobdata_get('split_every'), UPDRAFTPLUS_SPLIT_MIN)*1048576; + + if ('others' != $whichone) $updraftplus->log("Beginning creation of dump of $whichone (split every: ".round($this->zip_split_every/1048576,1)." MB)"); + + if (is_string($create_from_dir) && !file_exists($create_from_dir)) { + $flag_error = true; + $updraftplus->log("Does not exist: $create_from_dir"); + if ('mu-plugins' == $whichone) { + if (!function_exists('get_mu_plugins')) require_once(ABSPATH.'wp-admin/includes/plugin.php'); + $mu_plugins = get_mu_plugins(); + if (count($mu_plugins) == 0) { + $updraftplus->log("There appear to be no mu-plugins to back up. Will not raise an error."); + $flag_error = false; + } + } + if ($flag_error) $updraftplus->log(sprintf(__("%s - could not back this entity up; the corresponding directory does not exist (%s)", 'updraftplus'), $whichone, $create_from_dir), 'error'); + return false; + } + + $itext = (empty($index)) ? '' : ($index+1); + $base_path = $backup_file_basename.'-'.$whichone.$itext.'.zip'; + $full_path = $this->updraft_dir.'/'.$base_path; + $time_now = time(); + + # This is compatible with filenames which indicate increments, as it is looking only for the current increment + if (file_exists($full_path)) { + # Gather any further files that may also exist + $files_existing = array(); + while (file_exists($full_path)) { + $files_existing[] = $base_path; + $time_mod = (int)@filemtime($full_path); + $updraftplus->log($base_path.": this file has already been created (age: ".round($time_now-$time_mod,1)." s)"); + if ($time_mod>100 && ($time_now-$time_mod)<30) { + $updraftplus->terminate_due_to_activity($base_path, $time_now, $time_mod); + } + $index++; + # This is compatible with filenames which indicate increments, as it is looking only for the current increment + $base_path = $backup_file_basename.'-'.$whichone.($index+1).'.zip'; + $full_path = $this->updraft_dir.'/'.$base_path; + } + } + + // Temporary file, to be able to detect actual completion (upon which, it is renamed) + + // New (Jun-13) - be more aggressive in removing temporary files from earlier attempts - anything >=600 seconds old of this kind + $updraftplus->clean_temporary_files('_'.$updraftplus->nonce."-$whichone", 600); + + // Firstly, make sure that the temporary file is not already being written to - which can happen if a resumption takes place whilst an old run is still active + $zip_name = $full_path.'.tmp'; + $time_mod = (int)@filemtime($zip_name); + if (file_exists($zip_name) && $time_mod>100 && ($time_now-$time_mod)<30) { + $updraftplus->terminate_due_to_activity($zip_name, $time_now, $time_mod); + } + if (file_exists($zip_name)) { + $updraftplus->log("File exists ($zip_name), but was apparently not modified within the last 30 seconds, so we assume that any previous run has now terminated (time_mod=$time_mod, time_now=$time_now, diff=".($time_now-$time_mod).")"); + } + + // Now, check for other forms of temporary file, which would indicate that some activity is going on (even if it hasn't made it into the main zip file yet) + // Note: this doesn't catch PclZip temporary files + $d = dir($this->updraft_dir); + $match = '_'.$updraftplus->nonce."-".$whichone; + while (false !== ($e = $d->read())) { + if ('.' == $e || '..' == $e || !is_file($this->updraft_dir.'/'.$e)) continue; + $ziparchive_match = preg_match("/$match([0-9]+)?\.zip\.tmp\.([A-Za-z0-9]){6}?$/i", $e); + $binzip_match = preg_match("/^zi([A-Za-z0-9]){6}$/", $e); + $pclzip_match = preg_match("/^pclzip-[a-z0-9]+.tmp$/", $e); + if ($time_now-filemtime($this->updraft_dir.'/'.$e) < 30 && ($ziparchive_match || (0 != $updraftplus->current_resumption && ($binzip_match || $pclzip_match)))) { + $updraftplus->terminate_due_to_activity($this->updraft_dir.'/'.$e, $time_now, filemtime($this->updraft_dir.'/'.$e)); + } + } + @$d->close(); + clearstatcache(); + + if (isset($files_existing)) { + # Because of zip-splitting, the mere fact that files exist is not enough to indicate that the entity is finished. For that, we need to also see that no subsequent file has been started. + # Q. What if the previous runner died in between zips, and it is our job to start the next one? A. The next temporary file is created before finishing the former zip, so we are safe (and we are also safe-guarded by the updated value of the index being stored in the database). + return $files_existing; + } + + $this->log_account_space(); + + $this->zip_microtime_start = microtime(true); + + # The paths in the zip should then begin with '$whichone', having removed WP_CONTENT_DIR from the front + $zipcode = $this->make_zipfile($create_from_dir, $backup_file_basename, $whichone); + if ($zipcode !== true) { + $updraftplus->log("ERROR: Zip failure: Could not create $whichone zip (".$this->index." / $index)"); + $updraftplus->log(sprintf(__("Could not create %s zip. Consult the log file for more information.",'updraftplus'),$whichone), 'error'); + # The caller is required to update $index from $this->index + return false; + } else { + $itext = (empty($this->index)) ? '' : ($this->index+1); + $full_path = $this->updraft_dir.'/'.$backup_file_basename.'-'.$whichone.$itext.'.zip'; + if (file_exists($full_path.'.tmp')) { + if (@filesize($full_path.'.tmp') === 0) { + $updraftplus->log("Did not create $whichone zip (".$this->index.") - not needed"); + @unlink($full_path.'.tmp'); + } else { + $sha = sha1_file($full_path.'.tmp'); + $updraftplus->jobdata_set('sha1-'.$whichone.$this->index, $sha); + @rename($full_path.'.tmp', $full_path); + $timetaken = max(microtime(true)-$this->zip_microtime_start, 0.000001); + $kbsize = filesize($full_path)/1024; + $rate = round($kbsize/$timetaken, 1); + $updraftplus->log("Created $whichone zip (".$this->index.") - ".round($kbsize,1)." KB in ".round($timetaken,1)." s ($rate KB/s) (SHA1 checksum: $sha)"); + // We can now remove any left-over temporary files from this job + } + } elseif ($this->index > $original_index) { + $updraftplus->log("Did not create $whichone zip (".$this->index.") - not needed (2)"); + # Added 12-Feb-2014 (to help multiple morefiles) + $this->index--; + } else { + $updraftplus->log("Looked-for $whichone zip (".$this->index.") was not found (".basename($full_path).".tmp)", 'warning'); + } + $updraftplus->clean_temporary_files('_'.$updraftplus->nonce."-$whichone", 0); + } + + // Remove cache list files as well, if there are any + $updraftplus->clean_temporary_files('_'.$updraftplus->nonce."-$whichone", 0, true); + + # Create the results array to send back (just the new ones, not any prior ones) + $files_existing = array(); + $res_index = 0; + for ($i = $original_index; $i<= $this->index; $i++) { + $itext = (empty($i)) ? '' : ($i+1); + $full_path = $this->updraft_dir.'/'.$backup_file_basename.'-'.$whichone.$itext.'.zip'; + if (file_exists($full_path)) { + $files_existing[$res_index] = $backup_file_basename.'-'.$whichone.$itext.'.zip'; + } + $res_index++; + } + return $files_existing; + } + + // This method is for calling outside of a cloud_backup() context. It constructs a list of services for which prune operations should be attempted, and then calls prune_retained_backups() if necessary upon them. + public function do_prune_standalone() { + global $updraftplus; + + $services = $updraftplus->just_one($updraftplus->jobdata_get('service')); + if (!is_array($services)) $services = array($services); + + $prune_services = array(); + + foreach ($services as $ind => $service) { + if ($service == "none" || '' == $service) continue; + + $objname = "UpdraftPlus_BackupModule_${service}"; + if (!class_exists($objname) && file_exists(UPDRAFTPLUS_DIR.'/methods/'.$service.'.php')) { + require_once(UPDRAFTPLUS_DIR.'/methods/'.$service.'.php'); + } + if (class_exists($objname)) { + $remote_obj = new $objname; + $pass_to_prune = null; + $prune_services[$service] = array($remote_obj, null); + } else { + $updraftplus->log("Could not prune from service $service: remote method not found"); + } + + } + + if (!empty($prune_services)) $this->prune_retained_backups($prune_services); + } + + // Dispatch to the relevant function + public function cloud_backup($backup_array) { + + global $updraftplus; + + $services = $updraftplus->just_one($updraftplus->jobdata_get('service')); + if (!is_array($services)) $services = array($services); + + // We need to make sure that the loop below actually runs + if (empty($services)) $services = array('none'); + + $updraftplus->jobdata_set('jobstatus', 'clouduploading'); + + add_action('http_request_args', array($updraftplus, 'modify_http_options')); + + $upload_status = $updraftplus->jobdata_get('uploading_substatus'); + if (!is_array($upload_status) || !isset($upload_status['t'])) { + $upload_status = array('i' => 0, 'p' => 0, 't' => max(1, count($services))*count($backup_array)); + $updraftplus->jobdata_set('uploading_substatus', $upload_status); + } + + $do_prune = array(); + + # If there was no check-in last time, then attempt a different service first - in case a time-out on the attempted service leads to no activity and everything stopping + if (count($services) >1 && !empty($updraftplus->no_checkin_last_time)) { + $updraftplus->log('No check-in last time: will try a different remote service first'); + array_push($services, array_shift($services)); + // Make sure that the 'no worthwhile activity' detector isn't flumoxed by the starting of a new upload at 0% + if ($updraftplus->current_resumption > 9) $updraftplus->jobdata_set('uploaded_lastreset', $updraftplus->current_resumption); + if (1 == ($updraftplus->current_resumption % 2) && count($services)>2) array_push($services, array_shift($services)); + } + + $errors_before_uploads = $updraftplus->error_count(); + + foreach ($services as $ind => $service) { + # Used for logging by record_upload_chunk() + $this->current_service = $service; + # Used when deciding whether to delete the local file + $this->last_service = ($ind+1 >= count($services) && $errors_before_uploads == $updraftplus->error_count()) ? true : false; + + $log_extra = ($this->last_service) ? ' (last)' : ''; + $updraftplus->log("Cloud backup selection (".($ind+1)."/".count($services)."): ".$service.$log_extra); + @set_time_limit(UPDRAFTPLUS_SET_TIME_LIMIT); + + $method_include = UPDRAFTPLUS_DIR.'/methods/'.$service.'.php'; + if (file_exists($method_include)) require_once($method_include); + + if ($service == "none" || '' == $service) { + $updraftplus->log("No remote despatch: user chose no remote backup service"); + # Still want to mark as "uploaded", to signal that nothing more needs doing. (Important on incremental runs with no cloud storage). + foreach ($backup_array as $bind => $file) { + if ($updraftplus->is_uploaded($file)) { + $updraftplus->log("Already uploaded: $file"); + } else { + $updraftplus->uploaded_file($file, true); + } + } + $this->prune_retained_backups(array("none" => array(null, null))); + } else { + $updraftplus->log("Beginning dispatch of backup to remote ($service)"); + $sarray = array(); + foreach ($backup_array as $bind => $file) { + if ($updraftplus->is_uploaded($file, $service)) { + $updraftplus->log("Already uploaded to $service: $file"); + } else { + $sarray[$bind] = $file; + } + } + $objname = "UpdraftPlus_BackupModule_$service"; + if (class_exists($objname)) { + $remote_obj = new $objname; + if (count($sarray)>0) { + $pass_to_prune = $remote_obj->backup($sarray); + $do_prune[$service] = array($remote_obj, $pass_to_prune); + } else { + // We still need to make sure that prune is run on this remote storage method, even if all entities were previously uploaded + $do_prune[$service] = array($remote_obj, null); + } + } else { + $updraftplus->log("Unexpected error: no class '$objname' was found ($method_include)"); + $updraftplus->log(sprintf(__("Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)", 'updraftplus'), $objname), 'error'); + } + } + } + + if (!empty($do_prune)) $this->prune_retained_backups($do_prune); + + remove_action('http_request_args', array($updraftplus, 'modify_http_options')); + + } + + private function group_backups($backup_history) { + return array(array('sets' => $backup_history, 'process_order' => 'keep_newest')); + } + + // $services *must* be an array + public function prune_retained_backups($services) { + + global $updraftplus, $wpdb; + + if ($updraftplus->jobdata_get('remotesend_info') != '') { + $updraftplus->log("Prune old backups from local store: skipping, as this was a remote send operation"); + return; + } + + if (method_exists($wpdb, 'check_connection') && (!defined('UPDRAFTPLUS_SUPPRESS_CONNECTION_CHECKS') || !UPDRAFTPLUS_SUPPRESS_CONNECTION_CHECKS)) { + if (!$wpdb->check_connection(false)) { + $updraftplus->reschedule(60); + $updraftplus->log("It seems the database went away; scheduling a resumption and terminating for now"); + $updraftplus->record_still_alive(); + die; + } + } + + // If they turned off deletion on local backups, then there is nothing to do + if (0 == UpdraftPlus_Options::get_updraft_option('updraft_delete_local') && 1 == count($services) && in_array('none', $services)) { + $updraftplus->log("Prune old backups from local store: nothing to do, since the user disabled local deletion and we are using local backups"); + return; + } + +// $updraftplus->jobdata_set('jobstatus', 'pruning'); +// $updraftplus->jobdata_set('prune', 'begun'); + call_user_func_array(array($updraftplus, 'jobdata_set_multi'), array('jobstatus', 'pruning', 'prune', 'begun')); + + // Number of backups to retain - files + $updraft_retain = UpdraftPlus_Options::get_updraft_option('updraft_retain', 2); + $updraft_retain = is_numeric($updraft_retain) ? $updraft_retain : 1; + + // Number of backups to retain - db + $updraft_retain_db = UpdraftPlus_Options::get_updraft_option('updraft_retain_db', $updraft_retain); + $updraft_retain_db = is_numeric($updraft_retain_db) ? $updraft_retain_db : 1; + + $updraftplus->log("Retain: beginning examination of existing backup sets; user setting: retain_files=$updraft_retain, retain_db=$updraft_retain_db"); + + // Returns an array, most recent first, of backup sets + $backup_history = $updraftplus->get_backup_history(); + $db_backups_found = 0; + $file_backups_found = 0; + + $ignored_because_imported = array(); + + // Remove non-native (imported) backups, which are neither counted nor pruned. It's neater to do these in advance, and log only one line. + $functional_backup_history = $backup_history; + foreach ($functional_backup_history as $backup_time => $backup_to_examine) { + if (isset($backup_to_examine['native']) && false == $backup_to_examine['native']) { + $ignored_because_imported[] = $backup_time; + unset($functional_backup_history[$backup_time]); + } + } + if (!empty($ignored_because_imported)) { + $updraftplus->log("These backup set(s) were imported from a remote location, so will not be counted or pruned. Skipping: ".implode(', ', $ignored_because_imported)); + } + + $backupable_entities = $updraftplus->get_backupable_file_entities(true); + + $database_backups_found = array(); + + $file_entities_backups_found = array(); + foreach ($backupable_entities as $entity => $info) { + $file_entities_backups_found[$entity] = 0; + } + + if (false === ($backup_db_groups = apply_filters('updraftplus_group_backups_for_pruning', false, $functional_backup_history, 'db'))) { + $backup_db_groups = $this->group_backups($functional_backup_history); + } + $updraftplus->log("Number of backup sets in history: ".count($backup_history)."; groups (db): ".count($backup_db_groups)); + + foreach ($backup_db_groups as $group_id => $group) { + + // The array returned by UpdraftPlus::get_backup_history() is already sorted, with most-recent first +// foreach ($backup_history as $backup_datestamp => $backup_to_examine) { + + if (empty($group['sets']) || !is_array($group['sets'])) continue; + $sets = $group['sets']; + + // Sort the groups into the desired "keep this first" order + $process_order = (!empty($group['process_order']) && 'keep_oldest' == $group['process_order']) ? 'keep_oldest' : 'keep_newest'; + if ('keep_oldest' == $process_order) ksort($sets); + + $rule = !empty($group['rule']) ? $group['rule'] : array('after-howmany' => 0, 'after-period' => 0, 'every-period' => 1, 'every-howmany' => 1); + + foreach ($sets as $backup_datestamp => $backup_to_examine) { + + $files_to_prune = array(); + $nonce = empty($backup_to_examine['nonce']) ? '???' : $backup_to_examine['nonce']; + + // $backup_to_examine is an array of file names, keyed on db/plugins/themes/uploads + // The new backup_history array is saved afterwards, so remember to unset the ones that are to be deleted + $updraftplus->log(sprintf("Examining (for databases) backup set with group_id=$group_id, nonce=%s, datestamp=%s (%s)", $nonce, $backup_datestamp, gmdate('M d Y H:i:s', $backup_datestamp))); + + // This was already done earlier +// if (isset($backup_to_examine['native']) && false == $backup_to_examine['native']) { +// $updraftplus->log("This backup set was imported from a remote location, so will not be counted or pruned. Skipping."); +// continue; +// } + + // Auto-backups are only counted or deleted once we have reached the retain limit - before that, they are skipped + $is_autobackup = !empty($backup_to_examine['autobackup']); + + $remote_sent = (!empty($backup_to_examine['service']) && ((is_array($backup_to_examine['service']) && in_array('remotesend', $backup_to_examine['service'])) || 'remotesend' === $backup_to_examine['service'])) ? true : false; + + $any_deleted_via_filter_yet = false; + + // Databases + foreach ($backup_to_examine as $key => $data) { + if ('db' != strtolower(substr($key, 0, 2)) || '-size' == substr($key, -5, 5)) continue; + + if (empty($database_backups_found[$key])) $database_backups_found[$key] = 0; + + if ($nonce == $updraftplus->nonce) { + $updraftplus->log("This backup set is the backup set just made, so will not be deleted."); + $database_backups_found[$key]++; + continue; + } + + if ($is_autobackup) { + if ($any_deleted_via_filter_yet) { + $updraftplus->log("This backup set ($backup_datestamp) was an automatic backup, but we have previously deleted a backup due to a limit, so it will be pruned (but not counted towards numerical limits)."); + $prune_it = true; + } elseif ($database_backups_found[$key] < $updraft_retain_db) { + $updraftplus->log("This backup set ($backup_datestamp) was an automatic backup, and we have not yet reached any retain limits, so it will not be counted or pruned. Skipping."); + continue; + } else { + $updraftplus->log("This backup set ($backup_datestamp) was an automatic backup, and we have already reached retain limits, so it will be pruned."); + $prune_it = true; + } + } else { + $prune_it = false; + } + + if ($remote_sent) { + $prune_it = true; + $updraftplus->log("$backup_datestamp: $key: was sent to remote site; will remove from local record (only)"); + } + + // All non-auto backups must be run through this filter (in date order) regardless of the current state of $prune_it - so that filters are able to track state. + $prune_it_before_filter = $prune_it; + + if (!$is_autobackup) $prune_it = apply_filters('updraftplus_prune_or_not', $prune_it, 'db', $backup_datestamp, $key, $database_backups_found[$key], $rule, $group_id); + + // Apply the final retention limit list (do not increase the 'retained' counter before seeing if the backup is being pruned for some other reason) + if (!$prune_it && !$is_autobackup) { + + if ($database_backups_found[$key] + 1 > $updraft_retain_db) { + $prune_it = true; + + $fname = (is_string($data)) ? $data : $data[0]; + $updraftplus->log("$backup_datestamp: $key: this set includes a database (".$fname."); db count is now ".$database_backups_found[$key]); + + $updraftplus->log("$backup_datestamp: $key: over retain limit ($updraft_retain_db); will delete this database"); + } + + } + + if ($prune_it) { + if (!$prune_it_before_filter) $any_deleted_via_filter_yet = true; + + if (!empty($data)) { + $size_key = $key.'-size'; + $size = isset($backup_to_examine[$size_key]) ? $backup_to_examine[$size_key] : null; + foreach ($services as $service => $sd) { + $this->prune_file($service, $data, $sd[0], $sd[1], array($size)); + } + } + unset($backup_to_examine[$key]); + $updraftplus->record_still_alive(); + } elseif (!$is_autobackup) { + $database_backups_found[$key]++; + } + + $backup_to_examine = $this->remove_backup_set_if_empty($backup_to_examine, $backup_datestamp, $backupable_entities, $backup_history); + if (empty($backup_to_examine)) { + unset($functional_backup_history[$backup_datestamp]); + unset($backup_history[$backup_datestamp]); + $this->maybe_save_backup_history_and_reschedule($backup_history); + } else { + $functional_backup_history[$backup_datestamp] = $backup_to_examine; + $backup_history[$backup_datestamp] = $backup_to_examine; + } + } + } + } + + if (false === ($backup_files_groups = apply_filters('updraftplus_group_backups_for_pruning', false, $functional_backup_history, 'files'))) { + $backup_files_groups = $this->group_backups($functional_backup_history); + } + + $updraftplus->log("Number of backup sets in history: ".count($backup_history)."; groups (files): ".count($backup_files_groups)); + + // Now again - this time for the files + foreach ($backup_files_groups as $group_id => $group) { + + // The array returned by UpdraftPlus::get_backup_history() is already sorted, with most-recent first +// foreach ($backup_history as $backup_datestamp => $backup_to_examine) { + + if (empty($group['sets']) || !is_array($group['sets'])) continue; + $sets = $group['sets']; + + // Sort the groups into the desired "keep this first" order + $process_order = (!empty($group['process_order']) && 'keep_oldest' == $group['process_order']) ? 'keep_oldest' : 'keep_newest'; + // Youngest - i.e. smallest epoch - first + if ('keep_oldest' == $process_order) ksort($sets); + + $rule = !empty($group['rule']) ? $group['rule'] : array('after-howmany' => 0, 'after-period' => 0, 'every-period' => 1, 'every-howmany' => 1); + + foreach ($sets as $backup_datestamp => $backup_to_examine) { + + $files_to_prune = array(); + $nonce = empty($backup_to_examine['nonce']) ? '???' : $backup_to_examine['nonce']; + + // $backup_to_examine is an array of file names, keyed on db/plugins/themes/uploads + // The new backup_history array is saved afterwards, so remember to unset the ones that are to be deleted + $updraftplus->log(sprintf("Examining (for files) backup set with nonce=%s, datestamp=%s (%s)", $nonce, $backup_datestamp, gmdate('M d Y H:i:s', $backup_datestamp))); + + // This was already done earlier +// if (isset($backup_to_examine['native']) && false == $backup_to_examine['native']) { +// $updraftplus->log("This backup set was imported from a remote location, so will not be counted or pruned. Skipping."); +// continue; +// } + + // Auto-backups are only counted or deleted once we have reached the retain limit - before that, they are skipped + $is_autobackup = !empty($backup_to_examine['autobackup']); + + $remote_sent = (!empty($backup_to_examine['service']) && ((is_array($backup_to_examine['service']) && in_array('remotesend', $backup_to_examine['service'])) || 'remotesend' === $backup_to_examine['service'])) ? true : false; + + $any_deleted_via_filter_yet = false; + + $file_sizes = array(); + + // Files + foreach ($backupable_entities as $entity => $info) { + if (!empty($backup_to_examine[$entity])) { + + // This should only be able to happen if you import backups with a future timestamp + if ($nonce == $updraftplus->nonce) { + $updraftplus->log("This backup set is the backup set just made, so will not be deleted."); + $file_entities_backups_found[$entity]++; + continue; + } + + if ($is_autobackup) { + if ($any_deleted_via_filter_yet) { + $updraftplus->log("This backup set was an automatic backup, but we have previously deleted a backup due to a limit, so it will be pruned (but not counted towards numerical limits)."); + $prune_it = true; + } elseif ($file_entities_backups_found[$entity] < $updraft_retain) { + $updraftplus->log("This backup set ($backup_datestamp) was an automatic backup, and we have not yet reached any retain limits, so it will not be counted or pruned. Skipping."); + continue; + } else { + $updraftplus->log("This backup set ($backup_datestamp) was an automatic backup, and we have already reached retain limits, so it will be pruned."); + $prune_it = true; + } + } else { + $prune_it = false; + } + + if ($remote_sent) { + $prune_it = true; + } + + // All non-auto backups must be run through this filter (in date order) regardless of the current state of $prune_it - so that filters are able to track state. + $prune_it_before_filter = $prune_it; + if (!$is_autobackup) $prune_it = apply_filters('updraftplus_prune_or_not', $prune_it, 'files', $backup_datestamp, $entity, $file_entities_backups_found[$entity], $rule, $group_id); + + // The "more than maximum to keep?" counter should not be increased until we actually know that the set is being kept. Before verison 1.11.22, we checked this before running the filter, which resulted in the counter being increased for sets that got pruned via the filter (i.e. not kept) - and too many backups were thus deleted + if (!$prune_it && !$is_autobackup) { + if ($file_entities_backups_found[$entity] >= $updraft_retain) { + $updraftplus->log("$entity: over retain limit ($updraft_retain); will delete this file entity"); + $prune_it = true; + } + } + + if ($prune_it) { + if (!$prune_it_before_filter) $any_deleted_via_filter_yet = true; + $prune_this = $backup_to_examine[$entity]; + if (is_string($prune_this)) $prune_this = array($prune_this); + + foreach ($prune_this as $k => $prune_file) { + if ($remote_sent) { + $updraftplus->log("$entity: $backup_datestamp: was sent to remote site; will remove from local record (only)"); + } + $size_key = (0 == $k) ? $entity.'-size' : $entity.$k.'-size'; + $size = (isset($backup_to_examine[$size_key])) ? $backup_to_examine[$size_key] : null; + $files_to_prune[] = $prune_file; + $file_sizes[] = $size; + } + unset($backup_to_examine[$entity]); + + } elseif (!$is_autobackup) { + $file_entities_backups_found[$entity]++; + } + } + } + + // Sending an empty array is not itself a problem - except that the remote storage method may not check that before setting up a connection, which can waste time: especially if this is done every time around the loop. + if (!empty($files_to_prune)) { + // Actually delete the files + foreach ($services as $service => $sd) { + $this->prune_file($service, $files_to_prune, $sd[0], $sd[1], $file_sizes); + $updraftplus->record_still_alive(); + } + } + + $backup_to_examine = $this->remove_backup_set_if_empty($backup_to_examine, $backup_datestamp, $backupable_entities, $backup_history); + if (empty($backup_to_examine)) { +// unset($functional_backup_history[$backup_datestamp]); + unset($backup_history[$backup_datestamp]); + $this->maybe_save_backup_history_and_reschedule($backup_history); + } else { +// $functional_backup_history[$backup_datestamp] = $backup_to_examine; + $backup_history[$backup_datestamp] = $backup_to_examine; + } + + // Loop over backup sets + } + + // Look over backup groups + } + + $updraftplus->log("Retain: saving new backup history (sets now: ".count($backup_history).") and finishing retain operation"); + UpdraftPlus_Options::update_updraft_option('updraft_backup_history', $backup_history, false); + + do_action('updraftplus_prune_retained_backups_finished'); + + $updraftplus->jobdata_set('prune', 'finished'); + + } + + // The purpose of this is to save the backup history periodically - for the benefit of setups where the pruning takes longer than the total allow run time (e.g. if the network communications to the remote storage have delays in, and there are a lot of sets to scan) + private function maybe_save_backup_history_and_reschedule($backup_history) { + static $last_saved_at = 0; + if (!$last_saved_at) $last_saved_at = time(); + if (time() - $last_saved_at >= 10) { + global $updraftplus; + $updraftplus->log("Retain: saving new backup history, because at least 10 seconds have passed since the last save (sets now: ".count($backup_history).")"); + UpdraftPlus_Options::update_updraft_option('updraft_backup_history', $backup_history, false); + $updraftplus->something_useful_happened(); + $last_saved_at = time(); + } + } + + private function remove_backup_set_if_empty($backup_to_examine, $backup_datestamp, $backupable_entities, $backup_history) { + + global $updraftplus; + + // Get new result, post-deletion; anything left in this set? + $contains_files = 0; + foreach ($backupable_entities as $entity => $info) { + if (isset($backup_to_examine[$entity])) { + $contains_files = 1; + break; + } + } + + $contains_db = 0; + foreach ($backup_to_examine as $key => $data) { + if ('db' == strtolower(substr($key, 0, 2)) && '-size' != substr($key, -5, 5)) { + $contains_db = 1; + break; + } + } + + // Delete backup set completely if empty, o/w just remove DB + // We search on the four keys which represent data, allowing other keys to be used to track other things + if (!$contains_files && !$contains_db) { + $updraftplus->log("This backup set is now empty; will remove from history"); + if (isset($backup_to_examine['nonce'])) { + $fullpath = $this->updraft_dir."/log.".$backup_to_examine['nonce'].".txt"; + if (is_file($fullpath)) { + $updraftplus->log("Deleting log file (log.".$backup_to_examine['nonce'].".txt)"); + @unlink($fullpath); + } else { + $updraftplus->log("Corresponding log file (log.".$backup_to_examine['nonce'].".txt) not found - must have already been deleted"); + } + } else { + $updraftplus->log("No nonce record found in the backup set, so cannot delete any remaining log file"); + } +// unset($backup_history[$backup_datestamp]); + return false; + } else { + $updraftplus->log("This backup set remains non-empty (f=$contains_files/d=$contains_db); will retain in history"); + return $backup_to_examine; + } + + } + + # $dofiles: An array of files (or a single string for one file) + private function prune_file($service, $dofiles, $method_object = null, $object_passback = null, $file_sizes = array()) { + global $updraftplus; + if (!is_array($dofiles)) $dofiles=array($dofiles); + + if (!apply_filters('updraftplus_prune_file', true, $dofiles, $service, $method_object, $object_passback, $file_sizes)) { + $updraftplus->log("Prune: service=$service: skipped via filter"); + } + + foreach ($dofiles as $i => $dofile) { + if (empty($dofile)) continue; + $updraftplus->log("Delete file: $dofile, service=$service"); + $fullpath = $this->updraft_dir.'/'.$dofile; + // delete it if it's locally available + if (file_exists($fullpath)) { + $updraftplus->log("Deleting local copy ($dofile)"); + @unlink($fullpath); + } + } + // Despatch to the particular method's deletion routine + if (!is_null($method_object)) $method_object->delete($dofiles, $object_passback, $file_sizes); + } + + # The jobdata is passed in instead of fetched, because the live jobdata may now differ from that which should be reported on (e.g. an incremental run was subsequently scheduled) + public function send_results_email($final_message, $jobdata) { + + global $updraftplus; + + $debug_mode = UpdraftPlus_Options::get_updraft_option('updraft_debug_mode'); + + $sendmail_to = $updraftplus->just_one_email(UpdraftPlus_Options::get_updraft_option('updraft_email')); + if (is_string($sendmail_to)) $sendmail_to = array($sendmail_to); + + $backup_files =$jobdata['backup_files']; + $backup_db = $jobdata['backup_database']; + + if (is_array($backup_db)) $backup_db = $backup_db['wp']; + if (is_array($backup_db)) $backup_db = $backup_db['status']; + + $backup_type = ('backup' == $jobdata['job_type']) ? __('Full backup', 'updraftplus') : __('Incremental', 'updraftplus'); + + $was_aborted = !empty($jobdata['aborted']); + + if ($was_aborted) { + $backup_contains = __('The backup was aborted by the user', 'updraftplus'); + } elseif ('finished' == $backup_files && ('finished' == $backup_db || 'encrypted' == $backup_db)) { + $backup_contains = __("Files and database", 'updraftplus')." ($backup_type)"; + } elseif ('finished' == $backup_files) { + $backup_contains = ($backup_db == "begun") ? __("Files (database backup has not completed)", 'updraftplus') : __("Files only (database was not part of this particular schedule)", 'updraftplus'); + $backup_contains .= " ($backup_type)"; + } elseif ($backup_db == 'finished' || $backup_db == 'encrypted') { + $backup_contains = ($backup_files == "begun") ? __("Database (files backup has not completed)", 'updraftplus') : __("Database only (files were not part of this particular schedule)", 'updraftplus'); + } else { + $updraftplus->log('Unknown/unexpected status: '.serialize($backup_files).'/'.serialize($backup_db)); + $backup_contains = __("Unknown/unexpected error - please raise a support request", 'updraftplus'); + } + + $append_log = ''; + $attachments = array(); + + $error_count = 0; + + if ($updraftplus->error_count() > 0) { + $append_log .= __('Errors encountered:', 'updraftplus')."\r\n"; + $attachments[0] = $updraftplus->logfile_name; + foreach ($updraftplus->errors as $err) { + if (is_wp_error($err)) { + foreach ($err->get_error_messages() as $msg) { + $append_log .= "* ".rtrim($msg)."\r\n"; + } + } elseif (is_array($err) && 'error' == $err['level']) { + $append_log .= "* ".rtrim($err['message'])."\r\n"; + } elseif (is_string($err)) { + $append_log .= "* ".rtrim($err)."\r\n"; + } + $error_count++; + } + $append_log.="\r\n"; + } + $warnings = (isset($jobdata['warnings'])) ? $jobdata['warnings'] : array(); + if (is_array($warnings) && count($warnings) >0) { + $append_log .= __('Warnings encountered:', 'updraftplus')."\r\n"; + $attachments[0] = $updraftplus->logfile_name; + foreach ($warnings as $err) { + $append_log .= "* ".rtrim($err)."\r\n"; + } + $append_log.="\r\n"; + } + + if ($debug_mode && '' != $updraftplus->logfile_name && !in_array($updraftplus->logfile_name, $attachments)) { + $append_log .= "\r\n".__('The log file has been attached to this email.', 'updraftplus'); + $attachments[0] = $updraftplus->logfile_name; + } + + // We have to use the action in order to set the MIME type on the attachment - by default, WordPress just puts application/octet-stream + + $subject = apply_filters('updraft_report_subject', sprintf(__('Backed up: %s', 'updraftplus'), get_bloginfo('name')).' (UpdraftPlus '.$updraftplus->version.') '.get_date_from_gmt(gmdate('Y-m-d H:i:s', time()), 'Y-m-d H:i'), $error_count, count($warnings)); + + # The class_exists() check here is a micro-optimization to prevent a possible HTTP call whose results may be disregarded by the filter + $feed = ''; + if (!class_exists('UpdraftPlus_Addon_Reporting') && !defined('UPDRAFTPLUS_NOADS_B') && !defined('UPDRAFTPLUS_NONEWSFEED')) { + $updraftplus->log('Fetching RSS news feed'); + $rss = $updraftplus->get_updraftplus_rssfeed(); + $updraftplus->log('Fetched RSS news feed; result is a: '.get_class($rss)); + if (is_a($rss, 'SimplePie')) { + $feed .= __('Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news', 'updraftplus')." - ".sprintf(__('read more at %s', 'updraftplus'), 'https://updraftplus.com/news/')."\r\n\r\n"; + foreach ($rss->get_items(0, 6) as $item) { + $feed .= '* '; + $feed .= $item->get_title(); + $feed .= " (".$item->get_date('j F Y').")"; + #$feed .= ' - '.$item->get_permalink(); + $feed .= "\r\n"; + } + } + $feed .= "\r\n\r\n"; + } + + $extra_messages = apply_filters('updraftplus_report_extramessages', array()); + $extra_msg = ''; + if (is_array($extra_messages)) { + foreach ($extra_messages as $msg) { + $extra_msg .= ''.$msg['key'].': '.$msg['val']."\r\n"; + } + } + + foreach ($this->remotestorage_extrainfo as $service => $message) { + if (!empty($updraftplus->backup_methods[$service])) $extra_msg .= $updraftplus->backup_methods[$service].': '.$message['plain']."\r\n"; + } + + // Make it available to the filter + $jobdata['remotestorage_extrainfo'] = $this->remotestorage_extrainfo; + + if (!class_exists('UpdraftPlus_Notices')) require_once(UPDRAFTPLUS_DIR.'/includes/updraftplus-notices.php'); + $ws_advert = UpdraftPlus_Notices::do_notice(false, 'report-plain', true); + + $body = apply_filters('updraft_report_body', + __('Backup of:', 'updraftplus').' '.site_url()."\r\n". + "UpdraftPlus ".__('WordPress backup is complete','updraftplus').".\r\n". + __('Backup contains:','updraftplus')." $backup_contains\r\n". + __('Latest status:', 'updraftplus').' '.$final_message."\r\n". + $extra_msg. + "\r\n". + $feed. + $ws_advert."\r\n". + $append_log, + $final_message, $backup_contains, $updraftplus->errors, $warnings, $jobdata); + + $this->attachments = apply_filters('updraft_report_attachments', $attachments); + + if (count($this->attachments)>0) add_action('phpmailer_init', array($this, 'phpmailer_init')); + + $attach_size = 0; + $unlink_files = array(); + + foreach ($this->attachments as $ind => $attach) { + if ($attach == $updraftplus->logfile_name && filesize($attach) > 6*1048576) { + + $updraftplus->log("Log file is large (".round(filesize($attach)/1024, 1)." KB): will compress before e-mailing"); + + if (!$handle = fopen($attach, "r")) { + $updraftplus->log("Error: Failed to open log file for reading: ".$attach); + } else { + if (!$whandle = gzopen($attach.'.gz', 'w')) { + $updraftplus->log("Error: Failed to open log file for reading: ".$attach.".gz"); + } else { + while (false !== ($line = @stream_get_line($handle, 131072, "\n"))) { + @gzwrite($whandle, $line."\n"); + } + fclose($handle); + gzclose($whandle); + $this->attachments[$ind] = $attach.'.gz'; + $unlink_files[] = $attach.'.gz'; + } + } + } + $attach_size += filesize($this->attachments[$ind]); + } + + foreach ($sendmail_to as $ind => $mailto) { + + if (false === apply_filters('updraft_report_sendto', true, $mailto, $error_count, count($warnings), $ind)) continue; + + foreach (explode(',', $mailto) as $sendmail_addr) { + $updraftplus->log("Sending email ('$backup_contains') report (attachments: ".count($attachments).", size: ".round($attach_size/1024, 1)." KB) to: ".substr($sendmail_addr, 0, 5)."..."); + try { + wp_mail(trim($sendmail_addr), $subject, $body, array("X-UpdraftPlus-Backup-ID: ".$updraftplus->nonce)); + } catch (Exception $e) { + $updraftplus->log("Exception occurred when sending mail (".get_class($e)."): ".$e->getMessage()); + } + } + } + + foreach ($unlink_files as $file) @unlink($file); + + do_action('updraft_report_finished'); + if (count($this->attachments)>0) remove_action('phpmailer_init', array($this, 'phpmailer_init')); + + } + + // The purpose of this function is to make sure that the options table is put in the database first, then the users table, then the site + blogs tables (if present - multisite), then the usermeta table; and after that the core WP tables - so that when restoring we restore the core tables first + private function backup_db_sorttables($a_arr, $b_arr) { + + $a = $a_arr['name']; + $a_table_type = $a_arr['type']; + $b = $b_arr['name']; + $b_table_type = $b_arr['type']; + + // Views must always go after tables (since they can depend upon them) + if ('VIEW' == $a_table_type && 'VIEW' != $b_table_type) return 1; + if ('VIEW' == $b_table_type && 'VIEW' != $a_table_type) return -1; + + if ('wp' != $this->whichdb) return strcmp($a, $b); + + global $updraftplus; + if ($a == $b) return 0; + $our_table_prefix = $this->table_prefix_raw; + if ($a == $our_table_prefix.'options') return -1; + if ($b == $our_table_prefix.'options') return 1; + if ($a == $our_table_prefix.'site') return -1; + if ($b == $our_table_prefix.'site') return 1; + if ($a == $our_table_prefix.'blogs') return -1; + if ($b == $our_table_prefix.'blogs') return 1; + if ($a == $our_table_prefix.'users') return -1; + if ($b == $our_table_prefix.'users') return 1; + if ($a == $our_table_prefix.'usermeta') return -1; + if ($b == $our_table_prefix.'usermeta') return 1; + + if (empty($our_table_prefix)) return strcmp($a, $b); + + try { + $core_tables = array_merge($this->wpdb_obj->tables, $this->wpdb_obj->global_tables, $this->wpdb_obj->ms_global_tables); + } catch (Exception $e) { + $updraftplus->log($e->getMessage()); + } + + if (empty($core_tables)) $core_tables = array('terms', 'term_taxonomy', 'termmeta', 'term_relationships', 'commentmeta', 'comments', 'links', 'postmeta', 'posts', 'site', 'sitemeta', 'blogs', 'blogversions'); + + global $updraftplus; + $na = $updraftplus->str_replace_once($our_table_prefix, '', $a); + $nb = $updraftplus->str_replace_once($our_table_prefix, '', $b); + if (in_array($na, $core_tables) && !in_array($nb, $core_tables)) return -1; + if (!in_array($na, $core_tables) && in_array($nb, $core_tables)) return 1; + return strcmp($a, $b); + } + + private function log_account_space() { + # Don't waste time if space is huge + if (!empty($this->account_space_oodles)) return; + global $updraftplus; + $hosting_bytes_free = $updraftplus->get_hosting_disk_quota_free(); + if (is_array($hosting_bytes_free)) { + $perc = round(100*$hosting_bytes_free[1]/(max($hosting_bytes_free[2], 1)), 1); + $updraftplus->log(sprintf('Free disk space in account: %s (%s used)', round($hosting_bytes_free[3]/1048576, 1)." MB", "$perc %")); + } + } + + // Returns the basename up to and including the nonce (but not the entity) + private function get_backup_file_basename_from_time($use_time) { + global $updraftplus; + return 'backup_'.get_date_from_gmt(gmdate('Y-m-d H:i:s', $use_time), 'Y-m-d-Hi').'_'.$this->blog_name.'_'.$updraftplus->nonce; + } + + private function find_existing_zips($dir, $match_nonce) { + $zips = array(); + if ($handle = opendir($dir)) { + while (false !== ($entry = readdir($handle))) { + if ($entry != "." && $entry != "..") { + if (preg_match('/^backup_(\d{4})-(\d{2})-(\d{2})-(\d{2})(\d{2})_.*_([0-9a-f]{12})-([\-a-z]+)([0-9]+)?\.zip$/i', $entry, $matches)) { + if ($matches[6] !== $match_nonce) continue; + $timestamp = mktime($matches[4], $matches[5], 0, $matches[2], $matches[3], $matches[1]); + $entity = $matches[7]; + $index = empty($matches[8]) ? '0': $matches[8]; + $zips[$entity][$index] = array($timestamp, $entry); + } + } + } + } + return $zips; + } + + // $files should be an array as returned by find_existing_zips() + private function file_exists($files, $entity, $index = 0) { + if (isset($files[$entity]) && isset($files[$entity][$index])) { + $file = $files[$entity][$index]; + // Return the filename + return $file[1]; + } else { + return false; + } + } + + // This function is resumable + private function backup_dirs($job_status) { + + global $updraftplus; + + if (!$updraftplus->backup_time) $updraftplus->backup_time_nonce(); + + $use_time = apply_filters('updraftplus_backup_time_thisrun', $updraftplus->backup_time); + $backup_file_basename = $this->get_backup_file_basename_from_time($use_time); + + $backup_array = array(); + + $possible_backups = $updraftplus->get_backupable_file_entities(true); + + // Was there a check-in last time? If not, then reduce the amount of data attempted + if ($job_status != 'finished' && $updraftplus->current_resumption >= 2) { + + # NOTYET: Possible amendment to original algorithm; not just no check-in, but if the check in was very early (can happen if we get a very early checkin for some trivial operation, then attempt something too big) + + + // 03-Sep-2015 - came across a case (HS#2052) where there apparently was a check-in 'last time', but no resumption was scheduled because the 'useful_checkin' jobdata was *not* last time - which must indicate dying at a very unfortunate/unlikely point in the code. As a result, the split was not auto-reduced. Consequently, we've added !$updraftplus->newresumption_scheduled as a condition on the first check here (it was already on the second), as if no resumption is scheduled then whatever checkin there was last time was only partial. This was on GoDaddy, for which a number of curious I/O event combinations have been seen in recent months - their platform appears to have some odd behaviour when PHP is killed off. + // 04-Sep-2015 - move the '$updraftplus->current_resumption<=10' check to the inner loop (instead of applying to this whole section), as I see no reason for that restriction (case seen in HS#2064 where it was required on resumption 15) + if (!empty($updraftplus->no_checkin_last_time) || !$updraftplus->newresumption_scheduled) { + // Apr 2015: !$updraftplus->newresumption_scheduled added after seeing a log where there was no activity on resumption 9, and extra resumption 10 then tried the same operation. + if ($updraftplus->current_resumption - $updraftplus->last_successful_resumption > 2 || !$updraftplus->newresumption_scheduled) { + $this->try_split = true; + } elseif ($updraftplus->current_resumption<=10) { + $maxzipbatch = $updraftplus->jobdata_get('maxzipbatch', 26214400); + if ((int)$maxzipbatch < 1) $maxzipbatch = 26214400; + + $new_maxzipbatch = max(floor($maxzipbatch * 0.75), 20971520); + if ($new_maxzipbatch < $maxzipbatch) { + $updraftplus->log("No check-in was detected on the previous run - as a result, we are reducing the batch amount (old=$maxzipbatch, new=$new_maxzipbatch)"); + $updraftplus->jobdata_set('maxzipbatch', $new_maxzipbatch); + $updraftplus->jobdata_set('maxzipbatch_ceiling', $new_maxzipbatch); + } + } + } + } + + if($job_status != 'finished' && !$updraftplus->really_is_writable($this->updraft_dir)) { + $updraftplus->log("Backup directory (".$this->updraft_dir.") is not writable, or does not exist"); + $updraftplus->log(sprintf(__("Backup directory (%s) is not writable, or does not exist.", 'updraftplus'), $this->updraft_dir), 'error'); + return array(); + } + + $this->job_file_entities = $updraftplus->jobdata_get('job_file_entities'); + # This is just used for the visual feedback (via the 'substatus' key) + $which_entity = 0; + # e.g. plugins, themes, uploads, others + # $whichdir might be an array (if $youwhat is 'more') + + # Returns an array (keyed off the entity) of ($timestamp, $filename) arrays + $existing_zips = $this->find_existing_zips($this->updraft_dir, $updraftplus->nonce); + + foreach ($possible_backups as $youwhat => $whichdir) { + + if (isset($this->job_file_entities[$youwhat])) { + + $index = (int)$this->job_file_entities[$youwhat]['index']; + if (empty($index)) $index=0; + $indextext = (0 == $index) ? '' : (1+$index); + + $zip_file = $this->updraft_dir.'/'.$backup_file_basename.'-'.$youwhat.$indextext.'.zip'; + + # Split needed? + $split_every = max((int)$updraftplus->jobdata_get('split_every'), 250); + //if (file_exists($zip_file) && filesize($zip_file) > $split_every*1048576) { + if (false != ($existing_file = $this->file_exists($existing_zips, $youwhat, $index)) && filesize($this->updraft_dir.'/'.$existing_file) > $split_every*1048576) { + $index++; + $this->job_file_entities[$youwhat]['index'] = $index; + $updraftplus->jobdata_set('job_file_entities', $this->job_file_entities); + } + + // Populate prior parts of array, if we're on a subsequent zip file + if ($index > 0) { + for ($i=0; $i<$index; $i++) { + $itext = (0 == $i) ? '' : ($i+1); + // Get the previously-stored filename if possible (which should be always); failing that, base it on the current run + + $zip_file = (isset($this->backup_files_array[$youwhat]) && isset($this->backup_files_array[$youwhat][$i])) ? $this->backup_files_array[$youwhat][$i] : $backup_file_basename.'-'.$youwhat.$itext.'.zip'; + + $backup_array[$youwhat][$i] = $zip_file; + $z = $this->updraft_dir.'/'.$zip_file; + $itext = (0 == $i) ? '' : $i; + + $fs_key = $youwhat.$itext.'-size'; + if (file_exists($z)) { + $backup_array[$fs_key] = filesize($z); + } elseif (isset($this->backup_files_array[$fs_key])) { + $backup_array[$fs_key] = $this->backup_files_array[$fs_key]; + } + } + } + + // I am not certain that all the conditions in here are possible. But there's no harm. + if ('finished' == $job_status) { + // Add the final part of the array + if ($index > 0) { + $zip_file = (isset($this->backup_files_array[$youwhat]) && isset($this->backup_files_array[$youwhat][$index])) ? $this->backup_files_array[$youwhat][$index] : $backup_file_basename.'-'.$youwhat.($index+1).'.zip'; + + //$fbase = $backup_file_basename.'-'.$youwhat.($index+1).'.zip'; + $z = $this->updraft_dir.'/'.$zip_file; + $fs_key = $youwhat.$index.'-size'; + if (file_exists($z)) { + $backup_array[$youwhat][$index] = $fbase; + $backup_array[$fs_key] = filesize($z); + } elseif (isset($this->backup_files_array[$fs_key])) { + $backup_array[$youwhat][$index] = $fbase; + $backup_array[$fs_key] = $this->backup_files_array[$fskey]; + } + } else { + $zip_file = (isset($this->backup_files_array[$youwhat]) && isset($this->backup_files_array[$youwhat][0])) ? $this->backup_files_array[$youwhat][0] : $backup_file_basename.'-'.$youwhat.'.zip'; + + $backup_array[$youwhat] = $zip_file; + $fs_key=$youwhat.'-size'; + + if (file_exists($zip_file)) { + $backup_array[$fs_key] = filesize($zip_file); + } elseif (isset($this->backup_files_array[$fs_key])) { + $backup_array[$fs_key] = $this->backup_files_array[$fs_key]; + } + } + } else { + + $which_entity++; + $updraftplus->jobdata_set('filecreating_substatus', array('e' => $youwhat, 'i' => $which_entity, 't' => count($this->job_file_entities))); + + if ('others' == $youwhat) $updraftplus->log("Beginning backup of other directories found in the content directory (index: $index)"); + + # Apply a filter to allow add-ons to provide their own method for creating a zip of the entity + $created = apply_filters('updraftplus_backup_makezip_'.$youwhat, $whichdir, $backup_file_basename, $index); + # If the filter did not lead to something being created, then use the default method + if ($created === $whichdir) { + + // http://www.phpconcept.net/pclzip/user-guide/53 + /* First parameter to create is: + An array of filenames or dirnames, + or + A string containing the filename or a dirname, + or + A string containing a list of filename or dirname separated by a comma. + */ + + if ('others' == $youwhat) { + $dirlist = $updraftplus->backup_others_dirlist(true); + } elseif ('uploads' == $youwhat) { + $dirlist = $updraftplus->backup_uploads_dirlist(true); + } else { + $dirlist = $whichdir; + if (is_array($dirlist)) $dirlist=array_shift($dirlist); + } + + if (count($dirlist)>0) { + $created = $this->create_zip($dirlist, $youwhat, $backup_file_basename, $index); + # Now, store the results + if (!is_string($created) && !is_array($created)) $updraftplus->log("$youwhat: create_zip returned an error"); + } else { + $updraftplus->log("No backup of $youwhat: there was nothing found to back up"); + } + } + + if ($created != $whichdir && (is_string($created) || is_array($created))) { + if (is_string($created)) $created=array($created); + foreach ($created as $findex => $fname) { + $backup_array[$youwhat][$index] = $fname; + $itext = ($index == 0) ? '' : $index; + $index++; + $backup_array[$youwhat.$itext.'-size'] = filesize($this->updraft_dir.'/'.$fname); + } + } + + $this->job_file_entities[$youwhat]['index'] = $this->index; + $updraftplus->jobdata_set('job_file_entities', $this->job_file_entities); + + } + } else { + $updraftplus->log("No backup of $youwhat: excluded by user's options"); + } + } + + return $backup_array; + } + + // This uses a saved status indicator; its only purpose is to indicate *total* completion; there is no actual danger, just wasted time, in resuming when it was not needed. So the saved status indicator just helps save resources. + public function resumable_backup_of_files($resumption_no) { + global $updraftplus; + // Backup directories and return a numerically indexed array of file paths to the backup files + $bfiles_status = $updraftplus->jobdata_get('backup_files'); + $this->backup_files_array = $updraftplus->jobdata_get('backup_files_array');; + if (!is_array($this->backup_files_array)) $this->backup_files_array = array(); + if ('finished' == $bfiles_status) { + $updraftplus->log("Creation of backups of directories: already finished"); + # Check for recent activity + foreach ($this->backup_files_array as $files) { + if (!is_array($files)) $files=array($files); + foreach ($files as $file) $updraftplus->check_recent_modification($this->updraft_dir.'/'.$file); + } + } elseif ('begun' == $bfiles_status) { + $this->first_run = apply_filters('updraftplus_filerun_firstrun', 0); + if ($resumption_no > $this->first_run) { + $updraftplus->log("Creation of backups of directories: had begun; will resume"); + } else { + $updraftplus->log("Creation of backups of directories: beginning"); + } + $updraftplus->jobdata_set('jobstatus', 'filescreating'); + $this->backup_files_array = $this->backup_dirs($bfiles_status); + $updraftplus->jobdata_set('backup_files_array', $this->backup_files_array); + $updraftplus->jobdata_set('backup_files', 'finished'); + $updraftplus->jobdata_set('jobstatus', 'filescreated'); + } else { + # This is not necessarily a backup run which is meant to contain files at all + $updraftplus->log('This backup run is not intended for files - skipping'); + return array(); + } + + /* + // DOES NOT WORK: there is no crash-safe way to do this here - have to be renamed at cloud-upload time instead + $new_backup_array = array(); + foreach ($backup_array as $entity => $files) { + if (!is_array($files)) $files=array($files); + $outof = count($files); + foreach ($files as $ind => $file) { + $nval = $file; + if (preg_match('/^(backup_[\-0-9]{15}_.*_[0-9a-f]{12}-[\-a-z]+)([0-9]+)?\.zip$/i', $file, $matches)) { + $num = max((int)$matches[2],1); + $new = $matches[1].$num.'of'.$outof.'.zip'; + if (file_exists($this->updraft_dir.'/'.$file)) { + if (@rename($this->updraft_dir.'/'.$file, $this->updraft_dir.'/'.$new)) { + $updraftplus->log(sprintf("Renaming: %s to %s", $file, $new)); + $nval = $new; + } + } elseif (file_exists($this->updraft_dir.'/'.$new)) { + $nval = $new; + } + } + $new_backup_array[$entity][$ind] = $nval; + } + } + */ + return $this->backup_files_array; + } + + /* This function is resumable, using the following method: + - Each table is written out to ($final_filename).table.tmp + - When the writing finishes, it is renamed to ($final_filename).table + - When all tables are finished, they are concatenated into the final file + */ + // dbinfo is only used when whichdb != 'wp'; and the keys should be: user, pass, name, host, prefix + public function backup_db($already_done = 'begun', $whichdb = 'wp', $dbinfo = array()) { + + global $updraftplus, $wpdb; + + $this->whichdb = $whichdb; + $this->whichdb_suffix = ('wp' == $whichdb) ? '' : $whichdb; + + if (!$updraftplus->backup_time) $updraftplus->backup_time_nonce(); + if (!$updraftplus->opened_log_time) $updraftplus->logfile_open($updraftplus->nonce); + + if ('wp' == $this->whichdb) { + $this->wpdb_obj = $wpdb; + # The table prefix after being filtered - i.e. what filters what we'll actually back up + $this->table_prefix = $updraftplus->get_table_prefix(true); + # The unfiltered table prefix - i.e. the real prefix that things are relative to + $this->table_prefix_raw = $updraftplus->get_table_prefix(false); + $dbinfo['host'] = DB_HOST; + $dbinfo['name'] = DB_NAME; + $dbinfo['user'] = DB_USER; + $dbinfo['pass'] = DB_PASSWORD; + } else { + if (!is_array($dbinfo) || empty($dbinfo['host'])) return false; + # The methods that we may use: check_connection (WP>=3.9), get_results, get_row, query + $this->wpdb_obj = new UpdraftPlus_WPDB_OtherDB($dbinfo['user'], $dbinfo['pass'], $dbinfo['name'], $dbinfo['host']); + if (!empty($this->wpdb_obj->error)) { + $updraftplus->log($dbinfo['user'].'@'.$dbinfo['host'].'/'.$dbinfo['name'].' : database connection attempt failed'); + $updraftplus->log($dbinfo['user'].'@'.$dbinfo['host'].'/'.$dbinfo['name'].' : '.__('database connection attempt failed.', 'updraftplus').' '.__('Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled.', 'updraftplus'), 'error'); + return $updraftplus->log_wp_error($this->wpdb_obj->error); + } + $this->table_prefix = $dbinfo['prefix']; + $this->table_prefix_raw = $dbinfo['prefix']; + } + + $this->dbinfo = $dbinfo; + + $errors = 0; + + $use_time = apply_filters('updraftplus_backup_time_thisrun', $updraftplus->backup_time); + $file_base = $this->get_backup_file_basename_from_time($use_time); + $backup_file_base = $this->updraft_dir.'/'.$file_base; + + if ('finished' == $already_done) return basename($backup_file_base).'-db'.(('wp' == $whichdb) ? '' : $whichdb).'.gz'; + if ('encrypted' == $already_done) return basename($backup_file_base).'-db'.(('wp' == $whichdb) ? '' : $whichdb).'.gz.crypt'; + + $updraftplus->jobdata_set('jobstatus', 'dbcreating'.$this->whichdb_suffix); + + $binsqldump = $updraftplus->find_working_sqldump(); + + $total_tables = 0; + + # WP 3.9 onwards - https://core.trac.wordpress.org/browser/trunk/src/wp-includes/wp-db.php?rev=27925 - check_connection() allows us to get the database connection back if it had dropped + if ('wp' == $whichdb && method_exists($this->wpdb_obj, 'check_connection') && (!defined('UPDRAFTPLUS_SUPPRESS_CONNECTION_CHECKS') || !UPDRAFTPLUS_SUPPRESS_CONNECTION_CHECKS)) { + if (!$this->wpdb_obj->check_connection(false)) { + $updraftplus->reschedule(60); + $updraftplus->log("It seems the database went away; scheduling a resumption and terminating for now"); + $updraftplus->record_still_alive(); + die; + } + } + + // SHOW FULL - so that we get to know whether it's a BASE TABLE or a VIEW + $all_tables = $this->wpdb_obj->get_results("SHOW FULL TABLES", ARRAY_N); + + if (empty($all_tables) && !empty($this->wpdb_obj->last_error)) { + $all_tables = $this->wpdb_obj->get_results("SHOW TABLES", ARRAY_N); + $all_tables = array_map(create_function('$a', 'return array("name" => $a[0], "type" => "BASE TABLE");'), $all_tables); + } else { + $all_tables = array_map(create_function('$a', 'return array("name" => $a[0], "type" => $a[1]);'), $all_tables); + } + + # If this is not the WP database, then we do not consider it a fatal error if there are no tables + if ('wp' == $whichdb && 0 == count($all_tables)) { + $extra = ($updraftplus->newresumption_scheduled) ? ' - '.__('please wait for the rescheduled attempt', 'updraftplus') : ''; + $updraftplus->log("Error: No WordPress database tables found (SHOW TABLES returned nothing)".$extra); + $updraftplus->log(__("No database tables found", 'updraftplus').$extra, 'error'); + die; + } + + // Put the options table first + usort($all_tables, array($this, 'backup_db_sorttables')); + + $all_table_names = array_map(create_function('$a', 'return $a["name"];'), $all_tables); + + if (!$updraftplus->really_is_writable($this->updraft_dir)) { + $updraftplus->log("The backup directory (".$this->updraft_dir.") could not be written to (could be account/disk space full, or wrong permissions)."); + $updraftplus->log($this->updraft_dir.": ".__('The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail.','updraftplus'), 'warning'); + # Why not just fail now? We saw a bizarre case when the results of really_is_writable() changed during the run. + } + + # This check doesn't strictly get all possible duplicates; it's only designed for the case that can happen when moving between deprecated Windows setups and Linux + $this->duplicate_tables_exist = false; + foreach ($all_table_names as $table) { + if (strtolower($table) != $table && in_array(strtolower($table), $all_table_names)) { + $this->duplicate_tables_exist = true; + $updraftplus->log("Tables with names differing only based on case-sensitivity exist in the MySQL database: $table / ".strtolower($table)); + } + } + $how_many_tables = count($all_tables); + + $stitch_files = array(); + $found_options_table = false; + $is_multisite = is_multisite(); + + foreach ($all_tables as $ti) { + + $table = $ti['name']; + $table_type = $ti['type']; + + $manyrows_warning = false; + $total_tables++; + + // Increase script execution time-limit to 15 min for every table. + @set_time_limit(UPDRAFTPLUS_SET_TIME_LIMIT); + // The table file may already exist if we have produced it on a previous run + $table_file_prefix = $file_base.'-db'.$this->whichdb_suffix.'-table-'.$table.'.table'; + + if ('wp' == $whichdb && (strtolower($this->table_prefix_raw.'options') == strtolower($table) || ($is_multisite && (strtolower($this->table_prefix_raw.'sitemeta') == strtolower($table) || strtolower($this->table_prefix_raw.'1_options') == strtolower($table))))) $found_options_table = true; + + if (file_exists($this->updraft_dir.'/'.$table_file_prefix.'.gz')) { + $updraftplus->log("Table $table: corresponding file already exists; moving on"); + $stitch_files[] = $table_file_prefix; + } else { + # === is needed, otherwise 'false' matches (i.e. prefix does not match) + if (empty($this->table_prefix) || ($this->duplicate_tables_exist == false && stripos($table, $this->table_prefix) === 0 ) || ($this->duplicate_tables_exist == true && strpos($table, $this->table_prefix) === 0 ) ) { + + if (!apply_filters('updraftplus_backup_table', true, $table, $this->table_prefix, $whichdb, $dbinfo)) { + $updraftplus->log("Skipping table (filtered): $table"); + } else { + + $db_temp_file = $this->updraft_dir.'/'.$table_file_prefix.'.tmp.gz'; + $updraftplus->check_recent_modification($db_temp_file); + + // Open file, store the handle + $opened = $this->backup_db_open($db_temp_file, true); + if (false === $opened) return false; + + // Create the SQL statements + $this->stow("# " . sprintf('Table: %s' ,$updraftplus->backquote($table)) . "\n"); + $updraftplus->jobdata_set('dbcreating_substatus', array('t' => $table, 'i' => $total_tables, 'a' => $how_many_tables)); + + $table_status = $this->wpdb_obj->get_row("SHOW TABLE STATUS WHERE Name='$table'"); + if (isset($table_status->Rows)) { + $rows = $table_status->Rows; + $updraftplus->log("Table $table: Total expected rows (approximate): ".$rows); + $this->stow("# Approximate rows expected in table: $rows\n"); + if ($rows > UPDRAFTPLUS_WARN_DB_ROWS) { + $manyrows_warning = true; + $updraftplus->log(sprintf(__("Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup", 'updraftplus'), $table, $rows).' '.__('If not, you will need to either remove data from this table, or contact your hosting company to request more resources.', 'updraftplus'), 'warning', 'manyrows_'.$this->whichdb_suffix.$table); + } + } + + # Don't include the job data for any backups - so that when the database is restored, it doesn't continue an apparently incomplete backup + if ('wp' == $this->whichdb && (!empty($this->table_prefix) && strtolower($this->table_prefix.'sitemeta') == strtolower($table))) { + $where = 'meta_key NOT LIKE "updraft_jobdata_%"'; + } elseif ('wp' == $this->whichdb && (!empty($this->table_prefix) && strtolower($this->table_prefix.'options') == strtolower($table))) { + if (strtolower(substr(PHP_OS, 0, 3)) == 'win') { + $updraft_jobdata = "'updraft_jobdata_%'"; + $site_transient_update = "'_site_transient_update_%'"; + } else { + $updraft_jobdata = '"updraft_jobdata_%"'; + $site_transient_update = '"_site_transient_update_%"'; + } + + $where = 'option_name NOT LIKE '.$updraft_jobdata.' AND option_name NOT LIKE '.$site_transient_update.''; + } else { + $where = ''; + } + + # If no check-in last time, then we could in future try the other method (but - any point in retrying slow method on large tables??) + + # New Jul 2014: This attempt to use bindump instead at a lower threshold is quite conservative - only if the last successful run was exactly two resumptions ago - may be useful to expand + $bindump_threshold = (!$updraftplus->something_useful_happened && !empty($updraftplus->current_resumption) && ($updraftplus->current_resumption - $updraftplus->last_successful_resumption == 2 )) ? 1000 : 8000; + + $bindump = (isset($rows) && ($rows>$bindump_threshold || (defined('UPDRAFTPLUS_ALWAYS_TRY_MYSQLDUMP') && UPDRAFTPLUS_ALWAYS_TRY_MYSQLDUMP)) && is_string($binsqldump)) ? $this->backup_table_bindump($binsqldump, $table, $where) : false; + if (true !== $bindump) $this->backup_table($table, $where, 'none', $table_type); + + if (!empty($manyrows_warning)) $updraftplus->log_removewarning('manyrows_'.$this->whichdb_suffix.$table); + + $this->close(); + + $updraftplus->log("Table $table: finishing file (${table_file_prefix}.gz - ".round(filesize($this->updraft_dir.'/'.$table_file_prefix.'.tmp.gz')/1024,1)." KB)"); + + rename($db_temp_file, $this->updraft_dir.'/'.$table_file_prefix.'.gz'); + $updraftplus->something_useful_happened(); + $stitch_files[] = $table_file_prefix; + } + } else { + $total_tables--; + $updraftplus->log("Skipping table (lacks our prefix (".$this->table_prefix.")): $table"); + } + + } + } + + if ('wp' == $whichdb) { + if (!$found_options_table) { + if ($is_multisite) { + $updraftplus->log(__('The database backup appears to have failed', 'updraftplus').' - '.__('no options or sitemeta table was found', 'updraftplus'), 'warning', 'optstablenotfound'); + } else { + $updraftplus->log(__('The database backup appears to have failed', 'updraftplus').' - '.__('the options table was not found', 'updraftplus'), 'warning', 'optstablenotfound'); + } + $time_this_run = time()-$updraftplus->opened_log_time; + if ($time_this_run > 2000) { + # Have seen this happen; not sure how, but it was apparently deterministic; if the current process had been running for a long time, then apparently all database commands silently failed. + # If we have been running that long, then the resumption may be far off; bring it closer + $updraftplus->reschedule(60); + $updraftplus->log("Have been running very long, and it seems the database went away; scheduling a resumption and terminating for now"); + $updraftplus->record_still_alive(); + die; + } + } else { + $updraftplus->log_removewarning('optstablenotfound'); + } + } + + // Race detection - with zip files now being resumable, these can more easily occur, with two running side-by-side + $backup_final_file_name = $backup_file_base.'-db'.$this->whichdb_suffix.'.gz'; + $time_now = time(); + $time_mod = (int)@filemtime($backup_final_file_name); + if (file_exists($backup_final_file_name) && $time_mod>100 && ($time_now-$time_mod)<30) { + $updraftplus->terminate_due_to_activity($backup_final_file_name, $time_now, $time_mod); + } + if (file_exists($backup_final_file_name)) { + $updraftplus->log("The final database file ($backup_final_file_name) exists, but was apparently not modified within the last 30 seconds (time_mod=$time_mod, time_now=$time_now, diff=".($time_now-$time_mod)."). Thus we assume that another UpdraftPlus terminated; thus we will continue."); + } + + // Finally, stitch the files together + if (!function_exists('gzopen')) { + if (function_exists('gzopen64')) { + $updraftplus->log("PHP function is disabled; abort expected: gzopen - buggy Ubuntu PHP version; try this plugin to help: https://wordpress.org/plugins/wp-ubuntu-gzopen-fix/"); + } else { + $updraftplus->log("PHP function is disabled; abort expected: gzopen"); + } + } + + if (false === $this->backup_db_open($backup_final_file_name, true)) return false; + + $this->backup_db_header(); + + // We delay the unlinking because if two runs go concurrently and fail to detect each other (should not happen, but there's no harm in assuming the detection failed) then that leads to files missing from the db dump + $unlink_files = array(); + + $sind = 1; + foreach ($stitch_files as $table_file) { + $updraftplus->log("{$table_file}.gz ($sind/$how_many_tables): adding to final database dump"); + if (!$handle = gzopen($this->updraft_dir.'/'.$table_file.'.gz', "r")) { + $updraftplus->log("Error: Failed to open database file for reading: ${table_file}.gz"); + $updraftplus->log(__("Failed to open database file for reading:", 'updraftplus').' '.$table_file.'.gz', 'error'); + $errors++; + } else { + while ($line = gzgets($handle, 65536)) { $this->stow($line); } + gzclose($handle); + $unlink_files[] = $this->updraft_dir.'/'.$table_file.'.gz'; + } + $sind++; + // Came across a database with 7600 tables... adding them all took over 500 seconds; and so when the resumption started up, no activity was detected + if ($sind % 100 == 0) $updraftplus->something_useful_happened(); + } + + if (@constant("DB_CHARSET")) { + $this->stow("/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;\n/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;\n/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;\n"); + } + + $updraftplus->log($file_base.'-db'.$this->whichdb_suffix.'.gz: finished writing out complete database file ('.round(filesize($backup_final_file_name)/1024,1).' KB)'); + if (!$this->close()) { + $updraftplus->log('An error occurred whilst closing the final database file'); + $updraftplus->log(__('An error occurred whilst closing the final database file', 'updraftplus'), 'error'); + $errors++; + } + + foreach ($unlink_files as $unlink_file) @unlink($unlink_file); + + if ($errors > 0) { + return false; + } else { + # We no longer encrypt here - because the operation can take long, we made it resumable and moved it to the upload loop + $updraftplus->jobdata_set('jobstatus', 'dbcreated'.$this->whichdb_suffix); + $sha = sha1_file($backup_final_file_name); + $updraftplus->jobdata_set('sha1-db'.(('wp' == $whichdb) ? '0' : $whichdb.'0'), $sha); + $updraftplus->log("Total database tables backed up: $total_tables (".basename($backup_final_file_name).", size: ".filesize($backup_final_file_name).", checksum (SHA1): $sha)"); + return basename($backup_final_file_name); + } + + } + + private function backup_table_bindump($potsql, $table_name, $where) { + + $microtime = microtime(true); + + global $updraftplus; + + // Deal with Windows/old MySQL setups with erroneous table prefixes differing in case + // Can't get binary mysqldump to make this transformation +// $dump_as_table = ($this->duplicate_tables_exist == false && stripos($table, $this->table_prefix) === 0 && strpos($table, $this->table_prefix) !== 0) ? $this->table_prefix.substr($table, strlen($this->table_prefix)) : $table; + + $pfile = md5(time().rand()).'.tmp'; + file_put_contents($this->updraft_dir.'/'.$pfile, "[mysqldump]\npassword=".$this->dbinfo['pass']."\n"); + + // Note: escapeshellarg() adds quotes around the string + if ($where) $where="--where=".escapeshellarg($where); + + if (strtolower(substr(PHP_OS, 0, 3)) == 'win') { + $exec = "cd ".escapeshellarg(str_replace('/', '\\', $this->updraft_dir))." & "; + } else { + $exec = "cd ".escapeshellarg($this->updraft_dir)."; "; + } + + $exec .= "$potsql --defaults-file=$pfile $where --max_allowed_packet=1M --quote-names --add-drop-table --skip-comments --skip-set-charset --allow-keywords --dump-date --extended-insert --user=".escapeshellarg($this->dbinfo['user'])." --host=".escapeshellarg($this->dbinfo['host'])." ".$this->dbinfo['name']." ".escapeshellarg($table_name); + + $ret = false; + $any_output = false; + $writes = 0; + $handle = popen($exec, "r"); + if ($handle) { + while (!feof($handle)) { + $w = fgets($handle); + if ($w) { + $this->stow($w); + $writes++; + $any_output = true; + } + } + $ret = pclose($handle); + if ($ret != 0) { + $updraftplus->log("Binary mysqldump: error (code: $ret)"); + // Keep counter of failures? Change value of binsqldump? + } else { + if ($any_output) { + $updraftplus->log("Table $table_name: binary mysqldump finished (writes: $writes) in ".sprintf("%.02f",max(microtime(true)-$microtime,0.00001))." seconds"); + $ret = true; + } + } + } else { + $updraftplus->log("Binary mysqldump error: bindump popen failed"); + } + + # Clean temporary files + @unlink($this->updraft_dir.'/'.$pfile); + + return $ret; + + } + + /** + * Taken partially from phpMyAdmin and partially from + * Alain Wolf, Zurich - Switzerland + * Website: http://restkultur.ch/personal/wolf/scripts/db_backup/ + * Modified by Scott Merrill (http://www.skippy.net/) + * to use the WordPress $wpdb object + * @param string $table + * @param string $segment + * @return void + */ + private function backup_table($table, $where = '', $segment = 'none', $table_type = 'BASE TABLE') { + global $updraftplus; + + $microtime = microtime(true); + $total_rows = 0; + + // Deal with Windows/old MySQL setups with erroneous table prefixes differing in case + $dump_as_table = ($this->duplicate_tables_exist == false && stripos($table, $this->table_prefix) === 0 && strpos($table, $this->table_prefix) !== 0) ? $this->table_prefix.substr($table, strlen($this->table_prefix)) : $table; + + $table_structure = $this->wpdb_obj->get_results("DESCRIBE ".$updraftplus->backquote($table)); + if (! $table_structure) { + //$updraftplus->log(__('Error getting table details','wp-db-backup') . ": $table", 'error'); + return false; + } + + if($segment == 'none' || $segment == 0) { + // Add SQL statement to drop existing table + $this->stow("\n# Delete any existing table ".$updraftplus->backquote($table)."\n\n"); + $this->stow("DROP TABLE IF EXISTS " . $updraftplus->backquote($dump_as_table) . ";\n"); + + if ('VIEW' == $table_type) { + $this->stow("DROP VIEW IF EXISTS " . $updraftplus->backquote($dump_as_table) . ";\n"); + } + + // Table structure + // Comment in SQL-file + + $description = ('VIEW' == $table_type) ? 'view' : 'table'; + + $this->stow("\n# Table structure of $description ".$updraftplus->backquote($table)."\n\n"); + + $create_table = $this->wpdb_obj->get_results("SHOW CREATE TABLE ".$updraftplus->backquote($table), ARRAY_N); + if (false === $create_table) { + $err_msg ='Error with SHOW CREATE TABLE for '.$table; + //$updraftplus->log($err_msg, 'error'); + $this->stow("#\n# $err_msg\n#\n"); + } + $create_line = $updraftplus->str_lreplace('TYPE=', 'ENGINE=', $create_table[0][1]); + + # Remove PAGE_CHECKSUM parameter from MyISAM - was internal, undocumented, later removed (so causes errors on import) + if (preg_match('/ENGINE=([^\s;]+)/', $create_line, $eng_match)) { + $engine = $eng_match[1]; + if ('myisam' == strtolower($engine)) { + $create_line = preg_replace('/PAGE_CHECKSUM=\d\s?/', '', $create_line, 1); + } + } + + if ($dump_as_table !== $table) $create_line = $updraftplus->str_replace_once($table, $dump_as_table, $create_line); + + $this->stow($create_line.' ;'); + + if (false === $table_structure) { + $err_msg = sprintf("Error getting $description structure of %s", $table); + $this->stow("#\n# $err_msg\n#\n"); + } + + // Comment in SQL-file + $this->stow("\n\n# " . sprintf("Data contents of $description %s",$updraftplus->backquote($table)) . "\n\n"); + + } + + # Some tables have optional data, and should be skipped if they do not work + $table_sans_prefix = substr($table, strlen($this->table_prefix_raw)); + $data_optional_tables = ('wp' == $this->whichdb) ? apply_filters('updraftplus_data_optional_tables', explode(',', UPDRAFTPLUS_DATA_OPTIONAL_TABLES)) : array(); + if (in_array($table_sans_prefix, $data_optional_tables)) { + if (!$updraftplus->something_useful_happened && !empty($updraftplus->current_resumption) && ($updraftplus->current_resumption - $updraftplus->last_successful_resumption > 2)) { + $updraftplus->log("Table $table: Data skipped (previous attempts failed, and table is marked as non-essential)"); + return true; + } + } + + // In UpdraftPlus, segment is always 'none' + if('VIEW' != $table_type && ($segment == 'none' || $segment >= 0)) { + $defs = array(); + $integer_fields = array(); + // $table_structure was from "DESCRIBE $table" + foreach ($table_structure as $struct) { + if ( (0 === strpos($struct->Type, 'tinyint')) || (0 === strpos(strtolower($struct->Type), 'smallint')) || + (0 === strpos(strtolower($struct->Type), 'mediumint')) || (0 === strpos(strtolower($struct->Type), 'int')) || (0 === strpos(strtolower($struct->Type), 'bigint')) ) { + $defs[strtolower($struct->Field)] = ( null === $struct->Default ) ? 'NULL' : $struct->Default; + $integer_fields[strtolower($struct->Field)] = "1"; + } + } + + // Experimentation here shows that on large tables (we tested with 180,000 rows) on MyISAM, 1000 makes the table dump out 3x faster than the previous value of 100. After that, the benefit diminishes (increasing to 4000 only saved another 12%) + + $increment = 1000; + if (!$updraftplus->something_useful_happened && !empty($updraftplus->current_resumption) && ($updraftplus->current_resumption - $updraftplus->last_successful_resumption > 1)) { + # This used to be fixed at 500; but we (after a long time) saw a case that looked like an out-of-memory even at this level. We must be careful about going too low, though - otherwise we increase the risks of timeouts. + $increment = ( $updraftplus->current_resumption - $updraftplus->last_successful_resumption > 2 ) ? 350 : 500; + } + + if($segment == 'none') { + $row_start = 0; + $row_inc = $increment; + } else { + $row_start = $segment * $increment; + $row_inc = $increment; + } + + $search = array("\x00", "\x0a", "\x0d", "\x1a"); + $replace = array('\0', '\n', '\r', '\Z'); + + if ($where) $where = "WHERE $where"; + + do { + @set_time_limit(UPDRAFTPLUS_SET_TIME_LIMIT); + + $table_data = $this->wpdb_obj->get_results("SELECT * FROM $table $where LIMIT {$row_start}, {$row_inc}", ARRAY_A); + $entries = 'INSERT INTO ' . $updraftplus->backquote($dump_as_table) . ' VALUES '; + // \x08\\x09, not required + if($table_data) { + $thisentry = ""; + foreach ($table_data as $row) { + $total_rows++; + $values = array(); + foreach ($row as $key => $value) { + if (isset($integer_fields[strtolower($key)])) { + // make sure there are no blank spots in the insert syntax, + // yet try to avoid quotation marks around integers + $value = ( null === $value || '' === $value) ? $defs[strtolower($key)] : $value; + $values[] = ( '' === $value ) ? "''" : $value; + } else { + $values[] = (null === $value) ? 'NULL' : "'" . str_replace($search, $replace, str_replace('\'', '\\\'', str_replace('\\', '\\\\', $value))) . "'"; + } + } + if ($thisentry) $thisentry .= ",\n "; + $thisentry .= '('.implode(', ', $values).')'; + // Flush every 512KB + if (strlen($thisentry) > 524288) { + $this->stow(" \n".$entries.$thisentry.';'); + $thisentry = ""; + } + + } + if ($thisentry) $this->stow(" \n".$entries.$thisentry.';'); + $row_start += $row_inc; + } + } while(count($table_data) > 0 && 'none' == $segment); + } + + if(($segment == 'none') || ($segment < 0)) { + // Create footer/closing comment in SQL-file + $this->stow("\n"); + $this->stow("# End of data contents of table ".$updraftplus->backquote($table) . "\n"); + $this->stow("\n"); + } + $updraftplus->log("Table $table: Total rows added: $total_rows in ".sprintf("%.02f",max(microtime(true)-$microtime,0.00001))." seconds"); + + } // end backup_table() + + + /*END OF WP-DB-BACKUP BLOCK */ + + // Encrypts the file if the option is set; returns the basename of the file (according to whether it was encrypted or nto) + public function encrypt_file($file) { + global $updraftplus; + $encryption = UpdraftPlus_Options::get_updraft_option('updraft_encryptionphrase'); + if (strlen($encryption) > 0) { + $updraftplus->log("Attempting to encrypt backup file"); + $result = apply_filters('updraft_encrypt_file', null, $file, $encryption, $this->whichdb, $this->whichdb_suffix); + if (null === $result) { +// $updraftplus->log(sprintf(__("As previously warned (see: %s), encryption is no longer a feature of the free edition of UpdraftPlus", 'updraftplus'), 'https://updraftplus.com/next-updraftplus-release-ready-testing/ + https://updraftplus.com/shop/updraftplus-premium/'), 'warning', 'needpremiumforcrypt'); +// UpdraftPlus_Options::update_updraft_option('updraft_encryptionphrase', ''); + return basename($file); + } + return $result; + } else { + return basename($file); + } + } + + public function close() { + return ($this->dbhandle_isgz) ? gzclose($this->dbhandle) : fclose($this->dbhandle); + } + + // Open a file, store its filehandle + public function backup_db_open($file, $allow_gz = true) { + if (function_exists('gzopen') && $allow_gz == true) { + $this->dbhandle = @gzopen($file, 'w'); + $this->dbhandle_isgz = true; + } else { + $this->dbhandle = @fopen($file, 'w'); + $this->dbhandle_isgz = false; + } + if(false === $this->dbhandle) { + global $updraftplus; + $updraftplus->log("ERROR: $file: Could not open the backup file for writing"); + $updraftplus->log($file.": ".__("Could not open the backup file for writing",'updraftplus'), 'error'); + } + return $this->dbhandle; + } + + public function stow($query_line) { + if ($this->dbhandle_isgz) { + if(false == ($ret = @gzwrite($this->dbhandle, $query_line))) { + //$updraftplus->log(__('There was an error writing a line to the backup script:','wp-db-backup') . ' ' . $query_line . ' ' . $php_errormsg, 'error'); + } + } else { + if(false == ($ret = @fwrite($this->dbhandle, $query_line))) { + //$updraftplus->log(__('There was an error writing a line to the backup script:','wp-db-backup') . ' ' . $query_line . ' ' . $php_errormsg, 'error'); + } + } + return $ret; + } + + private function backup_db_header() { + + @include(ABSPATH.WPINC.'/version.php'); + global $wp_version, $updraftplus; + + $mysql_version = $this->wpdb_obj->db_version(); + # (function_exists('mysql_get_server_info')) ? @mysql_get_server_info() : '?'; + + if ('wp' == $this->whichdb) { + $wp_upload_dir = wp_upload_dir(); + $this->stow("# WordPress MySQL database backup\n"); + $this->stow("# Created by UpdraftPlus version ".$updraftplus->version." (https://updraftplus.com)\n"); + $this->stow("# WordPress Version: $wp_version, running on PHP ".phpversion()." (".$_SERVER["SERVER_SOFTWARE"]."), MySQL $mysql_version\n"); + $this->stow("# Backup of: ".untrailingslashit(site_url())."\n"); + $this->stow("# Home URL: ".untrailingslashit(home_url())."\n"); + $this->stow("# Content URL: ".untrailingslashit(content_url())."\n"); + $this->stow("# Uploads URL: ".untrailingslashit($wp_upload_dir['baseurl'])."\n"); + $this->stow("# Table prefix: ".$this->table_prefix_raw."\n"); + $this->stow("# Filtered table prefix: ".$this->table_prefix."\n"); + $this->stow("# Site info: multisite=".(is_multisite() ? '1' : '0')."\n"); + $this->stow("# Site info: end\n"); + } else { + $this->stow("# MySQL database backup (supplementary database ".$this->whichdb.")\n"); + $this->stow("# Created by UpdraftPlus version ".$updraftplus->version." (https://updraftplus.com)\n"); + $this->stow("# WordPress Version: $wp_version, running on PHP ".phpversion()." (".$_SERVER["SERVER_SOFTWARE"]."), MySQL $mysql_version\n"); + $this->stow("# ".sprintf('External database: (%s)', $this->dbinfo['user'].'@'.$this->dbinfo['host'].'/'.$this->dbinfo['name'])."\n"); + $this->stow("# Backup created by: ".untrailingslashit(site_url())."\n"); + $this->stow("# Table prefix: ".$this->table_prefix_raw."\n"); + $this->stow("# Filtered table prefix: ".$this->table_prefix."\n"); + } + + $label = $updraftplus->jobdata_get('label'); + if (!empty($label)) $this->stow("# Label: $label\n"); + + $this->stow("#\n"); + $this->stow("# Generated: ".date("l j. F Y H:i T")."\n"); + $this->stow("# Hostname: ".$this->dbinfo['host']."\n"); + $this->stow("# Database: ".$updraftplus->backquote($this->dbinfo['name'])."\n"); + $this->stow("# --------------------------------------------------------\n"); + + if (@constant("DB_CHARSET")) { + $this->stow("/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;\n"); + $this->stow("/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;\n"); + $this->stow("/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;\n"); + $this->stow("/*!40101 SET NAMES " . DB_CHARSET . " */;\n"); + } + $this->stow("/*!40101 SET foreign_key_checks = 0 */;\n\n"); + } + + public function phpmailer_init($phpmailer) { + global $updraftplus; + if (empty($this->attachments) || !is_array($this->attachments)) return; + foreach ($this->attachments as $attach) { + $mime_type = (preg_match('/\.gz$/', $attach)) ? 'application/x-gzip' : 'text/plain'; + try { + $phpmailer->AddAttachment($attach, '', 'base64', $mime_type); + } catch (Exception $e) { + $updraftplus->log("Exception occurred when adding attachment (".get_class($e)."): ".$e->getMessage()); + } + } + } + + // This function recursively packs the zip, dereferencing symlinks but packing into a single-parent tree for universal unpacking + // $exclude is passed by reference so that we can remove elements as they are matched - saves time checking against already-dealt-with objects + private function makezip_recursive_add($fullpath, $use_path_when_storing, $original_fullpath, $startlevels = 1, &$exclude) { + +// $zipfile = $this->zip_basename.(($this->index == 0) ? '' : ($this->index+1)).'.zip.tmp'; + + global $updraftplus; + + // Only BinZip supports symlinks. This means that as a consistent outcome, the only think that can be done with directory symlinks is either a) potentially duplicate the data or b) skip it. Whilst with internal WP entities (e.g. plugins) we definitely want the data, in the case of user-selected directories, we assume the user knew what they were doing when they chose the directory - i.e. we can skip symlink-accessed data that's outside. + if (is_link($fullpath) && is_dir($fullpath) && 'more' == $this->whichone) { + $updraftplus->log("Directory symlink encounted in more files backup: $use_path_when_storing -> ".readlink($fullpath).": skipping"); + return true; + } + + // De-reference. Important to do to both, because on Windows only doing it to one can make them non-equal, where they were previously equal - something which we later rely upon + $fullpath = realpath($fullpath); + $original_fullpath = realpath($original_fullpath); + + // Is the place we've ended up above the original base? That leads to infinite recursion + if (($fullpath !== $original_fullpath && strpos($original_fullpath, $fullpath) === 0) || ($original_fullpath == $fullpath && ((1== $startlevels && strpos($use_path_when_storing, '/') !== false) || (2 == $startlevels && substr_count($use_path_when_storing, '/') >1)))) { + $updraftplus->log("Infinite recursion: symlink led us to $fullpath, which is within $original_fullpath"); + $updraftplus->log(__("Infinite recursion: consult your log for more information",'updraftplus'), 'error'); + return false; + } + + # This is sufficient for the ones we have exclude options for - uploads, others, wpcore + $stripped_storage_path = (1 == $startlevels) ? $use_path_when_storing : substr($use_path_when_storing, strpos($use_path_when_storing, '/') + 1); + if (false !== ($fkey = array_search($stripped_storage_path, $exclude))) { + $updraftplus->log("Entity excluded by configuration option: $stripped_storage_path"); + unset($exclude[$fkey]); + return true; + } + + $if_altered_since = $this->makezip_if_altered_since; + + if (is_file($fullpath)) { + if (!empty($this->excluded_extensions) && $this->is_entity_excluded_by_extension($fullpath)) { + $updraftplus->log("Entity excluded by configuration option (extension): ".basename($fullpath)); + } elseif (!empty($this->excluded_prefixes) && $this->is_entity_excluded_by_prefix($fullpath)) { + $updraftplus->log("Entity excluded by configuration option (prefix): ".basename($fullpath)); + } elseif (is_readable($fullpath)) { + $mtime = filemtime($fullpath); + $key = ($fullpath == $original_fullpath) ? ((2 == $startlevels) ? $use_path_when_storing : $this->basename($fullpath)) : $use_path_when_storing.'/'.$this->basename($fullpath); + if ($mtime > 0 && $mtime > $if_altered_since) { + $this->zipfiles_batched[$fullpath] = $key; + $this->makezip_recursive_batchedbytes += @filesize($fullpath); + #@touch($zipfile); + } else { + $this->zipfiles_skipped_notaltered[$fullpath] = $key; + } + } else { + $updraftplus->log("$fullpath: unreadable file"); + $updraftplus->log(sprintf(__("%s: unreadable file - could not be backed up (check the file permissions and ownership)", 'updraftplus'), $fullpath), 'warning'); + } + } elseif (is_dir($fullpath)) { + if ($fullpath == $this->updraft_dir_realpath) { + $updraftplus->log("Skip directory (UpdraftPlus backup directory): $use_path_when_storing"); + return true; + } + if (file_exists($fullpath.'/.donotbackup')) { + $updraftplus->log("Skip directory (.donotbackup file found): $use_path_when_storing"); + return true; + } + + if (!isset($this->existing_files[$use_path_when_storing])) $this->zipfiles_dirbatched[] = $use_path_when_storing; + + if (!$dir_handle = @opendir($fullpath)) { + $updraftplus->log("Failed to open directory: $fullpath"); + $updraftplus->log(sprintf(__("Failed to open directory (check the file permissions and ownership): %s",'updraftplus'), $fullpath), 'error'); + return false; + } + + while (false !== ($e = readdir($dir_handle))) { + if ('.' == $e || '..' == $e) continue; + + if (is_link($fullpath.'/'.$e)) { + $deref = realpath($fullpath.'/'.$e); + if (is_file($deref)) { + if (is_readable($deref)) { + $use_stripped = $stripped_storage_path.'/'.$e; + if (false !== ($fkey = array_search($use_stripped, $exclude))) { + $updraftplus->log("Entity excluded by configuration option: $use_stripped"); + unset($exclude[$fkey]); + } elseif (!empty($this->excluded_extensions) && $this->is_entity_excluded_by_extension($e)) { + $updraftplus->log("Entity excluded by configuration option (extension): $use_stripped"); + } elseif (!empty($this->excluded_prefixes) && $this->is_entity_excluded_by_prefix($e)) { + $updraftplus->log("Entity excluded by configuration option (prefix): $use_stripped"); + } else { + $mtime = filemtime($deref); + if ($mtime > 0 && $mtime > $if_altered_since) { + $this->zipfiles_batched[$deref] = $use_path_when_storing.'/'.$e; + $this->makezip_recursive_batchedbytes += @filesize($deref); + #@touch($zipfile); + } else { + $this->zipfiles_skipped_notaltered[$deref] = $use_path_when_storing.'/'.$e; + } + } + } else { + $updraftplus->log("$deref: unreadable file"); + $updraftplus->log(sprintf(__("%s: unreadable file - could not be backed up"), $deref), 'warning'); + } + } elseif (is_dir($deref)) { + +// $link_target = readlink($deref); +// $updraftplus->log("Symbolic link $use_path_when_storing/$e -> $link_target"); + + $this->makezip_recursive_add($deref, $use_path_when_storing.'/'.$e, $original_fullpath, $startlevels, $exclude); + } + } elseif (is_file($fullpath.'/'.$e)) { + if (is_readable($fullpath.'/'.$e)) { + $use_stripped = $stripped_storage_path.'/'.$e; + if (false !== ($fkey = array_search($use_stripped, $exclude))) { + $updraftplus->log("Entity excluded by configuration option: $use_stripped"); + unset($exclude[$fkey]); + } elseif (!empty($this->excluded_extensions) && $this->is_entity_excluded_by_extension($e)) { + $updraftplus->log("Entity excluded by configuration option (extension): $use_stripped"); + } elseif (!empty($this->excluded_prefixes) && $this->is_entity_excluded_by_prefix($e)) { + $updraftplus->log("Entity excluded by configuration option (prefix): $use_stripped"); + } else { + $mtime = filemtime($fullpath.'/'.$e); + if ($mtime > 0 && $mtime > $if_altered_since) { + $this->zipfiles_batched[$fullpath.'/'.$e] = $use_path_when_storing.'/'.$e; + $this->makezip_recursive_batchedbytes += @filesize($fullpath.'/'.$e); + } else { + $this->zipfiles_skipped_notaltered[$fullpath.'/'.$e] = $use_path_when_storing.'/'.$e; + } + } + } else { + $updraftplus->log("$fullpath/$e: unreadable file"); + $updraftplus->log(sprintf(__("%s: unreadable file - could not be backed up", 'updraftplus'), $use_path_when_storing.'/'.$e), 'warning', "unrfile-$e"); + } + } elseif (is_dir($fullpath.'/'.$e)) { + if ('wpcore' == $this->whichone && 'updraft' == $e && basename($use_path_when_storing) == 'wp-content' && (!defined('UPDRAFTPLUS_WPCORE_INCLUDE_UPDRAFT_DIRS') || !UPDRAFTPLUS_WPCORE_INCLUDE_UPDRAFT_DIRS)) { + // This test, of course, won't catch everything - it just aims to make things better by default + $updraftplus->log("Directory excluded for looking like a sub-site's internal UpdraftPlus directory (enable by defining UPDRAFTPLUS_WPCORE_INCLUDE_UPDRAFT_DIRS): ".$use_path_when_storing.'/'.$e); + } else { + // no need to addEmptyDir here, as it gets done when we recurse + $this->makezip_recursive_add($fullpath.'/'.$e, $use_path_when_storing.'/'.$e, $original_fullpath, $startlevels, $exclude); + } + } + } + closedir($dir_handle); + } else { + $updraftplus->log("Unexpected: path ($use_path_when_storing) fails both is_file() and is_dir()"); + } + + return true; + + } + + private function get_excluded_extensions($exclude) { + if (!is_array($exclude)) $exclude = array(); + $exclude_extensions = array(); + foreach ($exclude as $ex) { + if (preg_match('/^ext:(.+)$/i', $ex, $matches)) { + $exclude_extensions[] = strtolower($matches[1]); + } + } + + if (defined('UPDRAFTPLUS_EXCLUDE_EXTENSIONS')) { + $exclude_from_define = explode(',', UPDRAFTPLUS_EXCLUDE_EXTENSIONS); + foreach ($exclude_from_define as $ex) { + $exclude_extensions[] = strtolower(trim($ex)); + } + } + + return $exclude_extensions; + } + + private function get_excluded_prefixes($exclude) { + if (!is_array($exclude)) $exclude = array(); + $exclude_prefixes = array(); + foreach ($exclude as $pref) { + if (preg_match('/^prefix:(.+)$/i', $pref, $matches)) { + $exclude_prefixes[] = strtolower($matches[1]); + } + } + + return $exclude_prefixes; + } + + private function is_entity_excluded_by_extension($entity) { + foreach ($this->excluded_extensions as $ext) { + if (!$ext) continue; + $eln = strlen($ext); + if (strtolower(substr($entity, -$eln, $eln)) == $ext) return true; + } + return false; + } + + private function is_entity_excluded_by_prefix($entity) { + $entity = basename($entity); + foreach ($this->excluded_prefixes as $pref) { + if (!$pref) continue; + $eln = strlen($pref); + if (strtolower(substr($entity, 0, $eln)) == $pref) return true; + } + return false; + } + + private function unserialize_gz_cache_file($file) { + if (!$whandle = gzopen($file, 'r')) return false; + global $updraftplus; + $emptimes = 0; + $var = ''; + while (!gzeof($whandle)) { + $bytes = @gzread($whandle, 1048576); + if (empty($bytes)) { + $emptimes++; + $updraftplus->log("Got empty gzread ($emptimes times)"); + if ($emptimes>2) return false; + } else { + $var .= $bytes; + } + } + gzclose($whandle); + return unserialize($var); + } + + // Caution: $source is allowed to be an array, not just a filename + // $destination is the temporary file (ending in .tmp) + private function make_zipfile($source, $backup_file_basename, $whichone, $retry_on_error = true) { + + global $updraftplus; + + $original_index = $this->index; + + $itext = (empty($this->index)) ? '' : ($this->index+1); + $destination_base = $backup_file_basename.'-'.$whichone.$itext.'.zip.tmp'; + $destination = $this->updraft_dir.'/'.$destination_base; + + // Legacy/redundant + //if (empty($whichone) && is_string($whichone)) $whichone = basename($source); + + // When to prefer PCL: + // - We were asked to + // - No zip extension present and no relevant method present + // The zip extension check is not redundant, because method_exists segfaults some PHP installs, leading to support requests + + // We need meta-info about $whichone + $backupable_entities = $updraftplus->get_backupable_file_entities(true, false); + # This is only used by one corner-case in BinZip + #$this->make_zipfile_source = (isset($backupable_entities[$whichone])) ? $backupable_entities[$whichone] : $source; + $this->make_zipfile_source = (is_array($source) && isset($backupable_entities[$whichone])) ? (('uploads' == $whichone) ? dirname($backupable_entities[$whichone]) : $backupable_entities[$whichone]) : dirname($source); + + $this->existing_files = array(); + # Used for tracking compression ratios + $this->existing_files_rawsize = 0; + $this->existing_zipfiles_size = 0; + + // Enumerate existing files + // Usually first_linked_index is zero; the exception being with more files, where previous zips' contents are irrelevant + for ($j=$this->first_linked_index; $j<=$this->index; $j++) { + $jtext = ($j == 0) ? '' : ($j+1); + # This is, in a non-obvious way, compatible with filenames which indicate increments + # $j does not need to start at zero; it should start at the index which the current entity split at. However, this is not directly known, and can only be deduced from examining the filenames. And, for other indexes from before the current increment, the searched-for filename won't exist (even if there is no cloud storage). So, this indirectly results in the desired outcome when we start from $j=0. + $examine_zip = $this->updraft_dir.'/'.$backup_file_basename.'-'.$whichone.$jtext.'.zip'.(($j == $this->index) ? '.tmp' : ''); + + // This comes from https://wordpress.org/support/topic/updraftplus-not-moving-all-files-to-remote-server - where it appears that the jobdata's record of the split was done (i.e. database write), but the *earlier* rename of the .tmp file was not done (i.e. I/O lost). i.e. In theory, this should be impossible; but, the sychnronicity apparently cannot be fully relied upon in some setups. The check for the index being one behind is being conservative - there's no inherent reason why it couldn't be done for other indexes. + // Note that in this 'impossible' case, no backup data was being lost - the design still ensures that the on-disk backup is fine. The problem was a gap in the sequence numbering of the zip files, leading to user confusion. + // Other examples of this appear to be in HS#1001 and #1047 + if ($j != $this->index && !file_exists($examine_zip)) { + $alt_examine_zip = $this->updraft_dir.'/'.$backup_file_basename.'-'.$whichone.$jtext.'.zip'.(($j == $this->index - 1) ? '.tmp' : ''); + if ($alt_examine_zip != $examine_zip && file_exists($alt_examine_zip) && is_readable($alt_examine_zip) && filesize($alt_examine_zip)>0) { + $updraftplus->log("Looked-for zip file not found; but non-zero .tmp zip was, despite not being current index ($j != ".$this->index." - renaming zip (assume previous resumption's IO was lost before kill)"); + if (rename($alt_examine_zip, $examine_zip)) { + clearstatcache(); + } else { + $updraftplus->log("Rename failed - backup zips likely to not have sequential numbers (does not affect backup integrity, but can cause user confusion)"); + } + } + } + + // If the file exists, then we should grab its index of files inside, and sizes + // Then, when we come to write a file, we should check if it's already there, and only add if it is not + if (file_exists($examine_zip) && is_readable($examine_zip) && filesize($examine_zip)>0) { + $this->existing_zipfiles_size += filesize($examine_zip); + $zip = new $this->use_zip_object; + if (!$zip->open($examine_zip)) { + $updraftplus->log("Could not open zip file to examine (".$zip->last_error."); will remove: ".basename($examine_zip)); + @unlink($examine_zip); + } else { + + # Don't put this in the for loop, or the magic __get() method gets called and opens the zip file every time the loop goes round + $numfiles = $zip->numFiles; + + for ($i=0; $i < $numfiles; $i++) { + $si = $zip->statIndex($i); + $name = $si['name']; + $this->existing_files[$name] = $si['size']; + $this->existing_files_rawsize += $si['size']; + } + + @$zip->close(); + } + + $updraftplus->log(basename($examine_zip).": Zip file already exists, with ".count($this->existing_files)." files"); + + # try_split is set if there have been no check-ins recently - or if it needs to be split anyway + if ($j == $this->index) { + if (isset($this->try_split)) { + if (filesize($examine_zip) > 50*1048576) { + # We could, as a future enhancement, save this back to the job data, if we see a case that needs it + $this->zip_split_every = max( + (int)$this->zip_split_every/2, + UPDRAFTPLUS_SPLIT_MIN*1048576, + min(filesize($examine_zip)-1048576, $this->zip_split_every) + ); + $updraftplus->jobdata_set('split_every', (int)($this->zip_split_every/1048576)); + $updraftplus->log("No check-in on last two runs; bumping index and reducing zip split to: ".round($this->zip_split_every/1048576, 1)." MB"); + $do_bump_index = true; + } + unset($this->try_split); + } elseif (filesize($examine_zip) > $this->zip_split_every) { + $updraftplus->log(sprintf("Zip size is at/near split limit (%s MB / %s MB) - bumping index (from: %d)", filesize($examine_zip), round($this->zip_split_every/1048576, 1), $this->index)); + $do_bump_index = true; + } + } + + } elseif (file_exists($examine_zip)) { + $updraftplus->log("Zip file already exists, but is not readable or was zero-sized; will remove: ".basename($examine_zip)); + @unlink($examine_zip); + } + } + + $this->zip_last_ratio = ($this->existing_files_rawsize > 0) ? ($this->existing_zipfiles_size/$this->existing_files_rawsize) : 1; + + $this->zipfiles_added = 0; + $this->zipfiles_added_thisrun = 0; + $this->zipfiles_dirbatched = array(); + $this->zipfiles_batched = array(); + $this->zipfiles_skipped_notaltered = array(); + $this->zipfiles_lastwritetime = time(); + $this->zip_basename = $this->updraft_dir.'/'.$backup_file_basename.'-'.$whichone; + + if (!empty($do_bump_index)) $this->bump_index(); + + $error_occurred = false; + + # Store this in its original form + $this->source = $source; + + # Reset. This counter is used only with PcLZip, to decide if it's better to do it all-in-one + $this->makezip_recursive_batchedbytes = 0; + if (!is_array($source)) $source=array($source); + + $exclude = $updraftplus->get_exclude($whichone); + + $files_enumerated_at = $updraftplus->jobdata_get('files_enumerated_at'); + if (!is_array($files_enumerated_at)) $files_enumerated_at = array(); + $files_enumerated_at[$whichone] = time(); + $updraftplus->jobdata_set('files_enumerated_at', $files_enumerated_at); + + $this->makezip_if_altered_since = (is_array($this->altered_since)) ? (isset($this->altered_since[$whichone]) ? $this->altered_since[$whichone] : -1) : -1; + + // Reset + $got_uploads_from_cache = false; + + // Uploads: can/should we get it back from the cache? + // || 'others' == $whichone + if (('uploads' == $whichone || 'others' == $whichone) && function_exists('gzopen') && function_exists('gzread')) { + $use_cache_files = false; + $cache_file_base = $this->zip_basename.'-cachelist-'.$this->makezip_if_altered_since; + // Cache file suffixes: -zfd.gz.tmp, -zfb.gz.tmp, -info.tmp, (possible)-zfs.gz.tmp + if (file_exists($cache_file_base.'-zfd.gz.tmp') && file_exists($cache_file_base.'-zfb.gz.tmp') && file_exists($cache_file_base.'-info.tmp')) { + // Cache files exist; shall we use them? + $mtime = filemtime($cache_file_base.'-zfd.gz.tmp'); + // Require < 30 minutes old + if (time() - $mtime < 1800) { $use_cache_files = true; } + $any_failures = false; + if ($use_cache_files) { + $var = $this->unserialize_gz_cache_file($cache_file_base.'-zfd.gz.tmp'); + if (is_array($var)) { + $this->zipfiles_dirbatched = $var; + $var = $this->unserialize_gz_cache_file($cache_file_base.'-zfb.gz.tmp'); + if (is_array($var)) { + $this->zipfiles_batched = $var; + if (file_exists($cache_file_base.'-info.tmp')) { + $var = maybe_unserialize(file_get_contents($cache_file_base.'-info.tmp')); + if (is_array($var) && isset($var['makezip_recursive_batchedbytes'])) { + $this->makezip_recursive_batchedbytes = $var['makezip_recursive_batchedbytes']; + if (file_exists($cache_file_base.'-zfs.gz.tmp')) {~ + $var = $this->unserialize_gz_cache_file($cache_file_base.'-zfs.gz.tmp'); + if (is_array($var)) { + $this->zipfiles_skipped_notaltered = $var; + } else { + $any_failures = true; + } + } else { + $this->zipfiles_skipped_notaltered = array(); + } + } else { + $any_failures = true; + } + } + } else { + $any_failures = true; + } + } else { + $any_failures = true; + } + if ($any_failures) { + $updraftplus->log("Failed to recover file lists from existing cache files"); + // Reset it all + $this->zipfiles_skipped_notaltered = array(); + $this->makezip_recursive_batchedbytes = 0; + $this->zipfiles_batched = array(); + $this->zipfiles_dirbatched = array(); + } else { + $updraftplus->log("File lists recovered from cache files; sizes: ".count($this->zipfiles_batched).", ".count($this->zipfiles_batched).", ".count($this->zipfiles_skipped_notaltered).")"); + $got_uploads_from_cache = true; + } + } + } + } + + $time_counting_began = time(); + + $this->excluded_extensions = $this->get_excluded_extensions($exclude); + $this->excluded_prefixes = $this->get_excluded_prefixes($exclude); + + foreach ($source as $element) { + #makezip_recursive_add($fullpath, $use_path_when_storing, $original_fullpath, $startlevels = 1, $exclude_array) + if ('uploads' == $whichone) { + if (empty($got_uploads_from_cache)) { + $dirname = dirname($element); + $basename = $this->basename($element); + $add_them = $this->makezip_recursive_add($element, basename($dirname).'/'.$basename, $element, 2, $exclude); + } else { + $add_them = true; + } + } else { + if (empty($got_uploads_from_cache)) { + $add_them = $this->makezip_recursive_add($element, $this->basename($element), $element, 1, $exclude); + } else { + $add_them = true; + } + } + if (is_wp_error($add_them) || false === $add_them) $error_occurred = true; + } + + $time_counting_ended = time(); + + // Cache the file scan, if it looks like it'll be useful + // We use gzip to reduce the size as on hosts which limit disk I/O, the cacheing may make things worse + // || 'others' == $whichone + if (('uploads' == $whichone|| 'others' == $whichone) && !$error_occurred && function_exists('gzopen') && function_exists('gzwrite')) { + $cache_file_base = $this->zip_basename.'-cachelist-'.$this->makezip_if_altered_since; + + // Just approximate - we're trying to avoid an otherwise-unpredictable PHP fatal error. Cacheing only happens if file enumeration took a long time - so presumably there are very many. + $memory_needed_estimate = 0; + foreach ($this->zipfiles_batched as $k => $v) { $memory_needed_estimate += strlen($k)+strlen($v)+12; } + + // We haven't bothered to check if we just fetched the files from cache, as that shouldn't take a long time and so shouldn't trigger this + // Let us suppose we need 15% overhead for gzipping + + $memory_limit = ini_get('memory_limit'); + $memory_usage = round(@memory_get_usage(false)/1048576, 1); + $memory_usage2 = round(@memory_get_usage(true)/1048576, 1); + + if ($time_counting_ended-$time_counting_began > 20 && $updraftplus->verify_free_memory($memory_needed_estimate*0.15) && $whandle = gzopen($cache_file_base.'-zfb.gz.tmp', 'w')) { + $updraftplus->log("File counting took a long time (".($time_counting_ended - $time_counting_began)."s); will attempt to cache results (memory_limit: $memory_limit (used: ${memory_usage}M | ${memory_usage2}M), estimated uncompressed bytes: ".round($memory_needed_estimate/1024, 1)." Kb)"); + + $buf = 'a:'.count($this->zipfiles_batched).':{'; + foreach ($this->zipfiles_batched as $file => $add_as) { + $k = addslashes($file); + $v = addslashes($add_as); + $buf .= 's:'.strlen($k).':"'.$k.'";s:'.strlen($v).':"'.$v.'";'; + if (strlen($buf) > 1048576) { + gzwrite($whandle, $buf, strlen($buf)); + $buf = ''; + } + } + $buf .= '}'; + $final = gzwrite($whandle, $buf); + unset($buf); + +// $serialised = serialize($this->zipfiles_batched); +// $updraftplus->log("Actual uncompressed bytes: ".round(strlen($serialised)/1024, 1)." Kb"); +// if (!gzwrite($whandle, $serialised)) { + if (!$final) { + @unlink($cache_file_base.'-zfb.gz.tmp'); + @gzclose($whandle); + } else { + gzclose($whandle); + if (!empty($this->zipfiles_skipped_notaltered)) { + if ($shandle = gzopen($cache_file_base.'-zfs.gz.tmp', 'w')) { + if (!gzwrite($shandle, serialize($this->zipfiles_skipped_notaltered))) { + $aborted_on_skipped = true; + } + gzclose($shandle); + } else { + $aborted_on_skipped = true; + } + } + if (!empty($aborted_on_skipped)) { + @unlink($cache_file_base.'-zfs.gz.tmp'); + @unlink($cache_file_base.'-zfb.gz.tmp'); + } else { + $info_array = array('makezip_recursive_batchedbytes' => $this->makezip_recursive_batchedbytes); + if (!file_put_contents($cache_file_base.'-info.tmp', serialize($info_array))) { + @unlink($cache_file_base.'-zfs.gz.tmp'); + @unlink($cache_file_base.'-zfb.gz.tmp'); + } + if ($dhandle = gzopen($cache_file_base.'-zfd.gz.tmp', 'w')) { + if (!gzwrite($dhandle, serialize($this->zipfiles_dirbatched))) { + $aborted_on_dirbatched = true; + } + gzclose($dhandle); + } else { + $aborted_on_dirbatched = true; + } + if (!empty($aborted_on_dirbatched)) { + @unlink($cache_file_base.'-zfs.gz.tmp'); + @unlink($cache_file_base.'-zfd.gz.tmp'); + @unlink($cache_file_base.'-zfb.gz.tmp'); + @unlink($cache_file_base.'-info.tmp'); + } else { + // Success. + } + } + } + } + +/* + Class variables that get altered: + zipfiles_batched + makezip_recursive_batchedbytes + zipfiles_skipped_notaltered + zipfiles_dirbatched + + Class variables that the result depends upon (other than the state of the filesystem): + makezip_if_altered_since + existing_files + */ + + } + + // Any not yet dispatched? Under our present scheme, at this point nothing has yet been despatched. And since the enumerating of all files can take a while, we can at this point do a further modification check to reduce the chance of overlaps. + // This relies on us *not* touch()ing the zip file to indicate to any resumption 'behind us' that we're already here. Rather, we're relying on the combined facts that a) if it takes us a while to search the directory tree, then it should do for the one behind us too (though they'll have the benefit of cache, so could catch very fast) and b) we touch *immediately* after finishing the enumeration of the files to add. + // $retry_on_error is here being used as a proxy for 'not the second time around, when there might be the remains of the file on the first time around' + if ($retry_on_error) $updraftplus->check_recent_modification($destination); + // Here we're relying on the fact that both PclZip and ZipArchive will happily operate on an empty file. Note that BinZip *won't* (for that, may need a new strategy - e.g. add the very first file on its own, in order to 'lay down a marker') + if (empty($do_bump_index)) @touch($destination); + + if (count($this->zipfiles_dirbatched) > 0 || count($this->zipfiles_batched) > 0) { + + $updraftplus->log(sprintf("Total entities for the zip file: %d directories, %d files (%d skipped as non-modified), %s MB", count($this->zipfiles_dirbatched), count($this->zipfiles_batched), count($this->zipfiles_skipped_notaltered), round($this->makezip_recursive_batchedbytes/1048576,1))); + + // No need to warn if we're going to retry anyway. (And if we get killed, the zip will be rescanned for its contents upon resumption). + $warn_on_failures = ($retry_on_error) ? false : true; + $add_them = $this->makezip_addfiles($warn_on_failures); + + if (is_wp_error($add_them)) { + foreach ($add_them->get_error_messages() as $msg) { + $updraftplus->log("Error returned from makezip_addfiles: ".$msg); + } + $error_occurred = true; + } elseif (false === $add_them) { + $updraftplus->log("Error: makezip_addfiles returned false"); + $error_occurred = true; + } + + } + + // Reset these variables because the index may have changed since we began + + $itext = (empty($this->index)) ? '' : ($this->index+1); + $destination_base = $backup_file_basename.'-'.$whichone.$itext.'.zip.tmp'; + $destination = $this->updraft_dir.'/'.$destination_base; + + // ZipArchive::addFile sometimes fails - there's nothing when we expected something. + // Did not used to have || $error_occured here. But it is better to retry, than to simply warn the user to check his logs. + if (((file_exists($destination) || $this->index == $original_index) && @filesize($destination) < 90 && 'UpdraftPlus_ZipArchive' == $this->use_zip_object) || ($error_occurred && $retry_on_error)) { + // This can be made more sophisticated if feedback justifies it. Currently we just switch to PclZip. But, it may have been a BinZip failure, so we could then try ZipArchive if that is available. If doing that, make sure that an infinite recursion isn't made possible. + $updraftplus->log("makezip_addfiles(".$this->use_zip_object.") apparently failed (file=".basename($destination).", type=$whichone, size=".filesize($destination).") - retrying with PclZip"); + $saved_zip_object = $this->use_zip_object; + $this->use_zip_object = 'UpdraftPlus_PclZip'; + $ret = $this->make_zipfile($source, $backup_file_basename, $whichone, false); + $this->use_zip_object = $saved_zip_object; + return $ret; + } + + // zipfiles_added > 0 means that $zip->close() has been called. i.e. An attempt was made to add something: something _should_ be there. + // Why return true even if $error_occurred may be set? 1) Because in that case, a warning has already been logged. 2) Because returning false causes an error to be logged, which means it'll all be retried again. Also 3) this has been the pattern of the code for a long time, and the algorithm has been proven in the real-world: don't change what's not broken. + // (file_exists($destination) || $this->index == $original_index) might be an alternative to $this->zipfiles_added > 0 - ? But, don't change what's not broken. + if ($error_occurred == false || $this->zipfiles_added > 0) { + return true; + } else { + $updraftplus->log("makezip failure: zipfiles_added=".$this->zipfiles_added.", error_occurred=".$error_occurred." (method=".$this->use_zip_object.")"); + return false; + } + + } + + private function basename($element) { + # This function is an ugly, conservative workaround for https://bugs.php.net/bug.php?id=62119. It does not aim to always work-around, but to ensure that nothing is made worse. + $dirname = dirname($element); + $basename_manual = preg_replace('#^[\\/]+#', '', substr($element, strlen($dirname))); + $basename = basename($element); + if ($basename_manual != $basename) { + $locale = setlocale(LC_CTYPE, "0"); + if ('C' == $locale) { + setlocale(LC_CTYPE, 'en_US.UTF8'); + $basename_new = basename($element); + if ($basename_new == $basename_manual) $basename = $basename_new; + setlocale(LC_CTYPE, $locale); + } + } + return $basename; + } + + private function file_should_be_stored_without_compression($file) { + if (!is_array($this->extensions_to_not_compress)) return false; + foreach ($this->extensions_to_not_compress as $ext) { + $ext_len = strlen($ext); + if (strtolower(substr($file, -$ext_len, $ext_len)) == $ext) return true; + } + return false; + } + + // Q. Why don't we only open and close the zip file just once? + // A. Because apparently PHP doesn't write out until the final close, and it will return an error if anything file has vanished in the meantime. So going directory-by-directory reduces our chances of hitting an error if the filesystem is changing underneath us (which is very possible if dealing with e.g. 1GB of files) + + // We batch up the files, rather than do them one at a time. So we are more efficient than open,one-write,close. + // To call into here, the array $this->zipfiles_batched must be populated (keys=paths, values=add-to-zip-as values). It gets reset upon exit from here. + private function makezip_addfiles($warn_on_failures) { + + global $updraftplus; + + # Used to detect requests to bump the size + $bump_index = false; + $ret = true; + + $zipfile = $this->zip_basename.(($this->index == 0) ? '' : ($this->index+1)).'.zip.tmp'; + + $maxzipbatch = $updraftplus->jobdata_get('maxzipbatch', 26214400); + if ((int)$maxzipbatch < 1024) $maxzipbatch = 26214400; + + // Short-circuit the null case, because we want to detect later if something useful happenned + if (count($this->zipfiles_dirbatched) == 0 && count($this->zipfiles_batched) == 0) return true; + + # If on PclZip, then if possible short-circuit to a quicker method (makes a huge time difference - on a folder of 1500 small files, 2.6s instead of 76.6) + # This assumes that makezip_addfiles() is only called once so that we know about all needed files (the new style) + # This is rather conservative - because it assumes zero compression. But we can't know that in advance. + $force_allinone = false; + if (0 == $this->index && $this->makezip_recursive_batchedbytes < $this->zip_split_every) { + # So far, we only have a processor for this for PclZip; but that check can be removed - need to address the below items + # TODO: Is this really what we want? Always go all-in-one for < 500MB???? Should be more conservative? Or, is it always faster to go all-in-one? What about situations where we might want to auto-split because of slowness - check that that is still working. + # TODO: Test this new method for PclZip - are we still getting the performance gains? Test for ZipArchive too. + if ('UpdraftPlus_PclZip' == $this->use_zip_object && ($this->makezip_recursive_batchedbytes < 512*1048576 || (defined('UPDRAFTPLUS_PCLZIP_FORCEALLINONE') && UPDRAFTPLUS_PCLZIP_FORCEALLINONE == true && 'UpdraftPlus_PclZip' == $this->use_zip_object))) { + $updraftplus->log("Only one archive required (".$this->use_zip_object.") - will attempt to do in single operation (data: ".round($this->makezip_recursive_batchedbytes/1024,1)." KB, split: ".round($this->zip_split_every/1024, 1)." KB)"); +// $updraftplus->log("PclZip, and only one archive required - will attempt to do in single operation (data: ".round($this->makezip_recursive_batchedbytes/1024,1)." KB, split: ".round($this->zip_split_every/1024, 1)." KB)"); + $force_allinone = true; +// if(!class_exists('PclZip')) require_once(ABSPATH.'/wp-admin/includes/class-pclzip.php'); +// $zip = new PclZip($zipfile); +// $remove_path = ($this->whichone == 'wpcore') ? untrailingslashit(ABSPATH) : WP_CONTENT_DIR; +// $add_path = false; +// // Remove prefixes +// $backupable_entities = $updraftplus->get_backupable_file_entities(true); +// if (isset($backupable_entities[$this->whichone])) { +// if ('plugins' == $this->whichone || 'themes' == $this->whichone || 'uploads' == $this->whichone) { +// $remove_path = dirname($backupable_entities[$this->whichone]); +// # To normalise instead of removing (which binzip doesn't support, so we don't do it), you'd remove the dirname() in the above line, and uncomment the below one. +// #$add_path = $this->whichone; +// } else { +// $remove_path = $backupable_entities[$this->whichone]; +// } +// } +// if ($add_path) { +// $zipcode = $zip->create($this->source, PCLZIP_OPT_REMOVE_PATH, $remove_path, PCLZIP_OPT_ADD_PATH, $add_path); +// } else { +// $zipcode = $zip->create($this->source, PCLZIP_OPT_REMOVE_PATH, $remove_path); +// } +// if ($zipcode == 0) { +// $updraftplus->log("PclZip Error: ".$zip->errorInfo(true), 'warning'); +// return $zip->errorCode(); +// } else { +// $updraftplus->something_useful_happened(); +// return true; +// } + } + } + + // 05-Mar-2013 - added a new check on the total data added; it appears that things fall over if too much data is contained in the cumulative total of files that were addFile'd without a close-open cycle; presumably data is being stored in memory. In the case in question, it was a batch of MP3 files of around 100MB each - 25 of those equals 2.5GB! + + $data_added_since_reopen = 0; + # The following array is used only for error reporting if ZipArchive::close fails (since that method itself reports no error messages - we have to track manually what we were attempting to add) + $files_zipadded_since_open = array(); + + $zip = new $this->use_zip_object; + if (file_exists($zipfile)) { + $opencode = $zip->open($zipfile); + $original_size = filesize($zipfile); + clearstatcache(); + } else { + $create_code = (version_compare(PHP_VERSION, '5.2.12', '>') && defined('ZIPARCHIVE::CREATE')) ? ZIPARCHIVE::CREATE : 1; + $opencode = $zip->open($zipfile, $create_code); + $original_size = 0; + } + + if ($opencode !== true) return new WP_Error('no_open', sprintf(__('Failed to open the zip file (%s) - %s', 'updraftplus'),$zipfile, $zip->last_error)); + # TODO: This action isn't being called for the all-in-one case - should be, I think + do_action("updraftplus_makezip_addfiles_prepack", $this, $this->whichone); + + // Make sure all directories are created before we start creating files + while ($dir = array_pop($this->zipfiles_dirbatched)) $zip->addEmptyDir($dir); + $zipfiles_added_thisbatch = 0; + + // Go through all those batched files + foreach ($this->zipfiles_batched as $file => $add_as) { + + if (!file_exists($file)) { + $updraftplus->log("File has vanished from underneath us; dropping: ".$add_as); + continue; + } + + $fsize = filesize($file); + + if (@constant('UPDRAFTPLUS_SKIP_FILE_OVER_SIZE') && $fsize > UPDRAFTPLUS_SKIP_FILE_OVER_SIZE) { + $updraftplus->log("File is larger than the user-configured (UPDRAFTPLUS_SKIP_FILE_OVER_SIZE) maximum (is: ".round($fsize/1024, 1)." KB); will skip: ".$add_as); + continue; + } elseif ($fsize > UPDRAFTPLUS_WARN_FILE_SIZE) { + $updraftplus->log(sprintf(__('A very large file was encountered: %s (size: %s Mb)', 'updraftplus'), $add_as, round($fsize/1048576, 1)), 'warning', 'vlargefile_'.md5($this->whichone.'#'.$add_as)); + } + + // Skips files that are already added + if (!isset($this->existing_files[$add_as]) || $this->existing_files[$add_as] != $fsize) { + + @touch($zipfile); + $zip->addFile($file, $add_as); + $zipfiles_added_thisbatch++; + + if (method_exists($zip, 'setCompressionName') && $this->file_should_be_stored_without_compression($add_as)) { + if (false == ($set_compress = $zip->setCompressionName($add_as, ZipArchive::CM_STORE))) { + $updraftplus->log("Zip: setCompressionName failed on: $add_as"); + } + } + + // N.B., Since makezip_addfiles() can get called more than once if there were errors detected, potentially $zipfiles_added_thisrun can exceed the total number of batched files (if they get processed twice). + $this->zipfiles_added_thisrun++; + $files_zipadded_since_open[] = array('file' => $file, 'addas' => $add_as); + + $data_added_since_reopen += $fsize; + /* Conditions for forcing a write-out and re-open: + - more than $maxzipbatch bytes have been batched + - more than 2.0 seconds have passed since the last time we wrote + - that adding this batch of data is likely already enough to take us over the split limit (and if that happens, then do actually split - to prevent a scenario of progressively tinier writes as we approach but don't actually reach the limit) + - more than 500 files batched (should perhaps intelligently lower this as the zip file gets bigger - not yet needed) + */ + + # Add 10% margin. It only really matters when the OS has a file size limit, exceeding which causes failure (e.g. 2GB on 32-bit) + # Since we don't test before the file has been created (so that zip_last_ratio has meaningful data), we rely on max_zip_batch being less than zip_split_every - which should always be the case + $reaching_split_limit = ( $this->zip_last_ratio > 0 && $original_size>0 && ($original_size + 1.1*$data_added_since_reopen*$this->zip_last_ratio) > $this->zip_split_every) ? true : false; + + if (!$force_allinone && ($zipfiles_added_thisbatch > UPDRAFTPLUS_MAXBATCHFILES || $reaching_split_limit || $data_added_since_reopen > $maxzipbatch || (time() - $this->zipfiles_lastwritetime) > 2)) { + + @set_time_limit(UPDRAFTPLUS_SET_TIME_LIMIT); + $something_useful_sizetest = false; + + if ($data_added_since_reopen > $maxzipbatch) { + $something_useful_sizetest = true; + $updraftplus->log("Adding batch to zip file (".$this->use_zip_object."): over ".round($maxzipbatch/1048576,1)." MB added on this batch (".round($data_added_since_reopen/1048576,1)." MB, ".count($this->zipfiles_batched)." files batched, $zipfiles_added_thisbatch (".$this->zipfiles_added_thisrun.") added so far); re-opening (prior size: ".round($original_size/1024,1).' KB)'); + } elseif ($zipfiles_added_thisbatch > UPDRAFTPLUS_MAXBATCHFILES) { + $updraftplus->log("Adding batch to zip file (".$this->use_zip_object."): over ".UPDRAFTPLUS_MAXBATCHFILES." files added on this batch (".round($data_added_since_reopen/1048576,1)." MB, ".count($this->zipfiles_batched)." files batched, $zipfiles_added_thisbatch (".$this->zipfiles_added_thisrun.") added so far); re-opening (prior size: ".round($original_size/1024,1).' KB)'); + } elseif (!$reaching_split_limit) { + $updraftplus->log("Adding batch to zip file (".$this->use_zip_object."): over 2.0 seconds have passed since the last write (".round($data_added_since_reopen/1048576,1)." MB, $zipfiles_added_thisbatch (".$this->zipfiles_added_thisrun.") files added so far); re-opening (prior size: ".round($original_size/1024,1).' KB)'); + } else { + $updraftplus->log("Adding batch to zip file (".$this->use_zip_object."): possibly approaching split limit (".round($data_added_since_reopen/1048576,1)." MB, $zipfiles_added_thisbatch (".$this->zipfiles_added_thisrun.") files added so far); last ratio: ".round($this->zip_last_ratio,4)."; re-opening (prior size: ".round($original_size/1024,1).' KB)'); + } + + if (!$zip->close()) { + // Though we will continue processing the files we've got, the final error code will be false, to allow a second attempt on the failed ones. This also keeps us consistent with a negative result for $zip->close() further down. We don't just retry here, because we have seen cases (with BinZip) where upon failure, the existing zip had actually been deleted. So, to be safe we need to re-scan the existing zips. + $ret = false; + $this->record_zip_error($files_zipadded_since_open, $zip->last_error, $warn_on_failures); + } + + $zipfiles_added_thisbatch = 0; + + # This triggers a re-open, later + unset($zip); + $files_zipadded_since_open = array(); + // Call here, in case we've got so many big files that we don't complete the whole routine + if (filesize($zipfile) > $original_size) { + + # It is essential that this does not go above 1, even though in reality (and this can happen at the start, if just 1 file is added (e.g. due to >2.0s detection) the 'compressed' zip file may be *bigger* than the files stored in it. When that happens, if the ratio is big enough, it can then fire the "approaching split limit" detection (very) prematurely + $this->zip_last_ratio = ($data_added_since_reopen > 0) ? min((filesize($zipfile) - $original_size)/$data_added_since_reopen, 1) : 1; + + # We need a rolling update of this + $original_size = filesize($zipfile); + + # Move on to next zip? + if ($reaching_split_limit || filesize($zipfile) > $this->zip_split_every) { + $bump_index = true; + # Take the filesize now because later we wanted to know we did clearstatcache() + $bumped_at = round(filesize($zipfile)/1048576, 1); + } + + # Need to make sure that something_useful_happened() is always called + + # How long since the current run began? If it's taken long (and we're in danger of not making it at all), or if that is forseeable in future because of general slowness, then we should reduce the parameters. + if (!$something_useful_sizetest) { + $updraftplus->something_useful_happened(); + } else { + + // Do this as early as possible + $updraftplus->something_useful_happened(); + + $time_since_began = max(microtime(true)- $this->zipfiles_lastwritetime, 0.000001); + $normalised_time_since_began = $time_since_began*($maxzipbatch/$data_added_since_reopen); + + // Don't measure speed until after ZipArchive::close() + $rate = round($data_added_since_reopen/$time_since_began, 1); + + $updraftplus->log(sprintf("A useful amount of data was added after this amount of zip processing: %s s (normalised: %s s, rate: %s KB/s)", round($time_since_began, 1), round($normalised_time_since_began, 1), round($rate/1024, 1))); + + // We want to detect not only that we need to reduce the size of batches, but also the capability to increase them. This is particularly important because of ZipArchive()'s (understandable, given the tendency of PHP processes being terminated without notice) practice of first creating a temporary zip file via copying before acting on that zip file (so the information is atomic). Unfortunately, once the size of the zip file gets over 100MB, the copy operation beguns to be significant. By the time you've hit 500MB on many web hosts the copy is the majority of the time taken. So we want to do more in between these copies if possible. + + /* "Could have done more" - detect as: + - A batch operation would still leave a "good chunk" of time in a run + - "Good chunk" means that the time we took to add the batch is less than 50% of a run time + - We can do that on any run after the first (when at least one ceiling on the maximum time is known) + - But in the case where a max_execution_time is long (so that resumptions are never needed), and we're always on run 0, we will automatically increase chunk size if the batch took less than 6 seconds. + */ + + // At one stage we had a strategy of not allowing check-ins to have more than 20s between them. However, once the zip file got to a certain size, PHP's habit of copying the entire zip file first meant that it *always* went over 18s, and thence a drop in the max size was inevitable - which was bad, because with the copy time being something that only grew, the outcome was less data being copied every time + + // Gather the data. We try not to do this unless necessary (may be time-sensitive) + if ($updraftplus->current_resumption >= 1) { + $time_passed = $updraftplus->jobdata_get('run_times'); + if (!is_array($time_passed)) $time_passed = array(); + list($max_time, $timings_string, $run_times_known) = $updraftplus->max_time_passed($time_passed, $updraftplus->current_resumption-1, $this->first_run); + } else { + $run_times_known = 0; + $max_time = -1; + } + + if ($normalised_time_since_began<6 || ($updraftplus->current_resumption >=1 && $run_times_known >=1 && $time_since_began < 0.6*$max_time )) { + + // How much can we increase it by? + if ($normalised_time_since_began <6) { + if ($run_times_known > 0 && $max_time >0) { + $new_maxzipbatch = min(floor(max( + $maxzipbatch*6/$normalised_time_since_began, $maxzipbatch*((0.6*$max_time)/$normalised_time_since_began))), + 200*1024*1024 + ); + } else { + # Maximum of 200MB in a batch + $new_maxzipbatch = min( floor($maxzipbatch*6/$normalised_time_since_began), + 200*1024*1024 + ); + } + } else { + // Use up to 60% of available time + $new_maxzipbatch = min( + floor($maxzipbatch*((0.6*$max_time)/$normalised_time_since_began)), + 200*1024*1024 + ); + } + + # Throttle increases - don't increase by more than 2x in one go - ??? + # $new_maxzipbatch = floor(min(2*$maxzipbatch, $new_maxzipbatch)); + # Also don't allow anything that is going to be more than 18 seconds - actually, that's harmful because of the basically fixed time taken to copy the file + # $new_maxzipbatch = floor(min(18*$rate ,$new_maxzipbatch)); + + # Don't go above the split amount (though we expect that to be higher anyway, unless sending via email) + $new_maxzipbatch = min($new_maxzipbatch, $this->zip_split_every); + + # Don't raise it above a level that failed on a previous run + $maxzipbatch_ceiling = $updraftplus->jobdata_get('maxzipbatch_ceiling'); + if (is_numeric($maxzipbatch_ceiling) && $maxzipbatch_ceiling > 20*1024*1024 && $new_maxzipbatch > $maxzipbatch_ceiling) { + $updraftplus->log("Was going to raise maxzipbytes to $new_maxzipbatch, but this is too high: a previous failure led to the ceiling being set at $maxzipbatch_ceiling, which we will use instead"); + $new_maxzipbatch = $maxzipbatch_ceiling; + } + + // Final sanity check + if ($new_maxzipbatch > 1024*1024) $updraftplus->jobdata_set("maxzipbatch", $new_maxzipbatch); + + if ($new_maxzipbatch <= 1024*1024) { + $updraftplus->log("Unexpected new_maxzipbatch value obtained (time=$time_since_began, normalised_time=$normalised_time_since_began, max_time=$max_time, data points known=$run_times_known, old_max_bytes=$maxzipbatch, new_max_bytes=$new_maxzipbatch)"); + } elseif ($new_maxzipbatch > $maxzipbatch) { + $updraftplus->log("Performance is good - will increase the amount of data we attempt to batch (time=$time_since_began, normalised_time=$normalised_time_since_began, max_time=$max_time, data points known=$run_times_known, old_max_bytes=$maxzipbatch, new_max_bytes=$new_maxzipbatch)"); + } elseif ($new_maxzipbatch < $maxzipbatch) { + // Ironically, we thought we were speedy... + $updraftplus->log("Adjust: Reducing maximum amount of batched data (time=$time_since_began, normalised_time=$normalised_time_since_began, max_time=$max_time, data points known=$run_times_known, new_max_bytes=$new_maxzipbatch, old_max_bytes=$maxzipbatch)"); + } else { + $updraftplus->log("Performance is good - but we will not increase the amount of data we batch, as we are already at the present limit (time=$time_since_began, normalised_time=$normalised_time_since_began, max_time=$max_time, data points known=$run_times_known, max_bytes=$maxzipbatch)"); + } + + if ($new_maxzipbatch > 1024*1024) $maxzipbatch = $new_maxzipbatch; + } + + // Detect excessive slowness + // Don't do this until we're on at least resumption 7, as we want to allow some time for things to settle down and the maxiumum time to be accurately known (since reducing the batch size unnecessarily can itself cause extra slowness, due to PHP's usage of temporary zip files) + + // We use a percentage-based system as much as possible, to avoid the various criteria being in conflict with each other (i.e. a run being both 'slow' and 'fast' at the same time, which is increasingly likely as max_time gets smaller). + + if (!$updraftplus->something_useful_happened && $updraftplus->current_resumption >= 7) { + + $updraftplus->something_useful_happened(); + + if ($run_times_known >= 5 && ($time_since_began > 0.8 * $max_time || $time_since_began + 7 > $max_time)) { + + $new_maxzipbatch = max(floor($maxzipbatch*0.8), 20971520); + if ($new_maxzipbatch < $maxzipbatch) { + $maxzipbatch = $new_maxzipbatch; + $updraftplus->jobdata_set("maxzipbatch", $new_maxzipbatch); + $updraftplus->log("We are within a small amount of the expected maximum amount of time available; the zip-writing thresholds will be reduced (time_passed=$time_since_began, normalised_time_passed=$normalised_time_since_began, max_time=$max_time, data points known=$run_times_known, old_max_bytes=$maxzipbatch, new_max_bytes=$new_maxzipbatch)"); + } else { + $updraftplus->log("We are within a small amount of the expected maximum amount of time available, but the zip-writing threshold is already at its lower limit (20MB), so will not be further reduced (max_time=$max_time, data points known=$run_times_known, max_bytes=$maxzipbatch)"); + } + } + + } else { + $updraftplus->something_useful_happened(); + } + } + $data_added_since_reopen = 0; + } else { + # ZipArchive::close() can take a very long time, which we want to know about + $updraftplus->record_still_alive(); + } + + clearstatcache(); + $this->zipfiles_lastwritetime = time(); + } + } elseif (0 == $this->zipfiles_added_thisrun) { + // Update lastwritetime, because otherwise the 2.0-second-activity detection can fire prematurely (e.g. if it takes >2.0 seconds to process the previously-written files, then the detector fires after 1 file. This then can have the knock-on effect of having something_useful_happened() called, but then a subsequent attempt to write out a lot of meaningful data fails, and the maximum batch is not then reduced. + // Testing shows that calling time() 1000 times takes negligible time + $this->zipfiles_lastwritetime=time(); + } + + $this->zipfiles_added++; + + // Don't call something_useful_happened() here - nothing necessarily happens until close() is called + if ($this->zipfiles_added % 100 == 0) $updraftplus->log("Zip: ".basename($zipfile).": ".$this->zipfiles_added." files added (on-disk size: ".round(@filesize($zipfile)/1024,1)." KB)"); + + if ($bump_index) { + $updraftplus->log(sprintf("Zip size is at/near split limit (%s MB / %s MB) - bumping index (from: %d)", $bumped_at, round($this->zip_split_every/1048576, 1), $this->index)); + $bump_index = false; + $this->bump_index(); + $zipfile = $this->zip_basename.($this->index+1).'.zip.tmp'; + } + + if (empty($zip)) { + $zip = new $this->use_zip_object; + + if (file_exists($zipfile)) { + $opencode = $zip->open($zipfile); + $original_size = filesize($zipfile); + clearstatcache(); + } else { + $create_code = defined('ZIPARCHIVE::CREATE') ? ZIPARCHIVE::CREATE : 1; + $opencode = $zip->open($zipfile, $create_code); + $original_size = 0; + } + + if ($opencode !== true) return new WP_Error('no_open', sprintf(__('Failed to open the zip file (%s) - %s', 'updraftplus'), $zipfile, $zip->last_error)); + } + + } + + # Reset array + $this->zipfiles_batched = array(); + $this->zipfiles_skipped_notaltered = array(); + + if (false == ($nret = $zip->close())) $this->record_zip_error($files_zipadded_since_open, $zip->last_error, $warn_on_failures); + + do_action("updraftplus_makezip_addfiles_finished", $this, $this->whichone); + + $this->zipfiles_lastwritetime = time(); + # May not exist if the last thing we did was bump + if (file_exists($zipfile) && filesize($zipfile) > $original_size) $updraftplus->something_useful_happened(); + + # Move on to next archive? + if (file_exists($zipfile) && filesize($zipfile) > $this->zip_split_every) { + $updraftplus->log(sprintf("Zip size has gone over split limit (%s, %s) - bumping index (%d)", round(filesize($zipfile)/1048576,1), round($this->zip_split_every/1048576, 1), $this->index)); + $this->bump_index(); + } + + clearstatcache(); + + return ($ret == false) ? false : $nret; + } + + private function record_zip_error($files_zipadded_since_open, $msg, $warn = true) { + global $updraftplus; + + if (!empty($updraftplus->cpanel_quota_readable)) { + $hosting_bytes_free = $updraftplus->get_hosting_disk_quota_free(); + if (is_array($hosting_bytes_free)) { + $perc = round(100*$hosting_bytes_free[1]/(max($hosting_bytes_free[2], 1)), 1); + $quota_free_msg = sprintf('Free disk space in account: %s (%s used)', round($hosting_bytes_free[3]/1048576, 1)." MB", "$perc %"); + $updraftplus->log($quota_free_msg); + if ($hosting_bytes_free[3] < 1048576*50) { + $quota_low = true; + $quota_free_mb = round($hosting_bytes_free[3]/1048576, 1); + $updraftplus->log(sprintf(__('Your free space in your hosting account is very low - only %s Mb remain', 'updraftplus'), $quota_free_mb), 'warning', 'lowaccountspace'.$quota_free_mb); + } + } + } + + // Always warn of this + if (strpos($msg, 'File Size Limit Exceeded') !== false && 'UpdraftPlus_BinZip' == $this->use_zip_object) { + $updraftplus->log(sprintf(__('The zip engine returned the message: %s.', 'updraftplus'), 'File Size Limit Exceeded'). __('Go here for more information.','updraftplus').' https://updraftplus.com/what-should-i-do-if-i-see-the-message-file-size-limit-exceeded/', 'warning', 'zipcloseerror-filesizelimit'); + } elseif ($warn) { + $warn_msg = __('A zip error occurred', 'updraftplus').' - '; + if (!empty($quota_low)) { + $warn_msg = sprintf(__('your web hosting account appears to be full; please see: %s', 'updraftplus'), 'https://updraftplus.com/faqs/how-much-free-disk-space-do-i-need-to-create-a-backup/'); + } else { + $warn_msg .= __('check your log for more details.', 'updraftplus'); + } + $updraftplus->log($warn_msg, 'warning', 'zipcloseerror-'.$this->whichone); + } + + $updraftplus->log("The attempt to close the zip file returned an error ($msg). List of files we were trying to add follows (check their permissions)."); + + foreach ($files_zipadded_since_open as $ffile) { + $updraftplus->log("File: ".$ffile['addas']." (exists: ".(int)@file_exists($ffile['file']).", is_readable: ".(int)@is_readable($ffile['file'])." size: ".@filesize($ffile['file']).')', 'notice', false, true); + } + } + + private function bump_index() { + global $updraftplus; + $youwhat = $this->whichone; + + $timetaken = max(microtime(true)-$this->zip_microtime_start, 0.000001); + + $itext = ($this->index == 0) ? '' : ($this->index+1); + $full_path = $this->zip_basename.$itext.'.zip'; + $sha = sha1_file($full_path.'.tmp'); + $updraftplus->jobdata_set('sha1-'.$youwhat.$this->index, $sha); + + $next_full_path = $this->zip_basename.($this->index+2).'.zip'; + # We touch the next zip before renaming the temporary file; this indicates that the backup for the entity is not *necessarily* finished + touch($next_full_path.'.tmp'); + + if (file_exists($full_path.'.tmp') && filesize($full_path.'.tmp') > 0) { + if (!rename($full_path.'.tmp', $full_path)) { + $updraftplus->log("Rename failed for $full_path.tmp"); + } else { + $updraftplus->something_useful_happened(); + } + } + $kbsize = filesize($full_path)/1024; + $rate = round($kbsize/$timetaken, 1); + $updraftplus->log("Created ".$this->whichone." zip (".$this->index.") - ".round($kbsize,1)." KB in ".round($timetaken,1)." s ($rate KB/s) (SHA1 checksum: ".$sha.")"); + $this->zip_microtime_start = microtime(true); + + # No need to add $itext here - we can just delete any temporary files for this zip + $updraftplus->clean_temporary_files('_'.$updraftplus->nonce."-".$youwhat, 600); + + $this->index++; + $this->job_file_entities[$youwhat]['index'] = $this->index; + $updraftplus->jobdata_set('job_file_entities', $this->job_file_entities); + } + +} + +class UpdraftPlus_WPDB_OtherDB extends wpdb { + // This adjusted bail() does two things: 1) Never dies and 2) logs in the UD log + public function bail( $message, $error_code = '500' ) { + global $updraftplus; + if ('db_connect_fail' == $error_code) $message = 'Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled.'; + $updraftplus->log("WPDB_OtherDB error: $message ($error_code)"); + # Now do the things that would have been done anyway + if ( class_exists( 'WP_Error' ) ) + $this->error = new WP_Error($error_code, $message); + else + $this->error = $message; + return false; + } +} + diff --git a/plugins/updraftplus/central/bootstrap.php b/plugins/updraftplus/central/bootstrap.php new file mode 100644 index 0000000..c34cdaa --- /dev/null +++ b/plugins/updraftplus/central/bootstrap.php @@ -0,0 +1,556 @@ + 'UpdraftCentral_Core_Commands', + 'updraftplus' => 'UpdraftPlus_RemoteControl_Commands', + 'updates' => 'UpdraftCentral_Updates_Commands', + 'users' => 'UpdraftCentral_Users_Commands', +// 'advanced' => 'UpdraftCentral_Advanced_Commands' + )); + + // Remote control keys + // These are different from the remote send keys, which are set up in the Migrator add-on + $our_keys = UpdraftPlus_Options::get_updraft_option('updraft_central_localkeys'); + if (is_array($our_keys) && !empty($our_keys)) { + $remote_control = new UpdraftPlus_UpdraftCentral_Listener($our_keys, $command_classes); + } + + } + + public function wp_ajax_updraftcentral_receivepublickey() { + + // The actual nonce check is done in the method below + if (empty($_GET['_wpnonce']) || empty($_GET['public_key']) || !isset($_GET['updraft_key_index'])) die; + + $result = $this->receive_public_key(); + if (!is_array($result) || empty($result['responsetype'])) die; + + echo 'UpdraftCentral

        '.__('UpdraftCentral Connection', 'updraftplus').'

        '.htmlspecialchars(network_site_url()).'

        '; + + if ('ok' == $result['responsetype']) { + echo __('An UpdraftCentral connection has been made successfully.', 'updraftplus'); + } else { + echo ''.__('A new UpdraftCentral connection has not been made.', 'updraftplus').'
        '; + switch($result['code']) { + case 'unknown_key': + echo __('The key referred to was unknown.', 'updraftplus'); + break; + case 'not_logged_in'; + +// $the_url = admin_url('admin-ajax.php').'?action=updraftcentral_receivepublickey&_wpnonce='.urlencode($_GET['_wpnonce']).'&updraft_key_index='.urlencode($_GET['updraft_key_index']).'&public_key='.urlencode($_GET['public_key']); + + echo __('You are not logged into this WordPress site in your web browser.', 'updraftplus').' '.__('You must visit this URL in the same browser and login session as you created the key in.', 'updraftplus'); + + break; + case 'nonce_failure'; + + echo 'Security check. '; + + _e('You must visit this link in the same browser and login session as you created the key in.', 'updraftplus'); + + break; + case 'already_have'; + echo __('This connection appears to already have been made.', 'updraftplus'); + break; + default: + echo htmlspecialchars(print_r($result, true)); + break; + } + } + + echo '

        '.__('Close...', 'updraftplus').'

        '; + die; + } + + private function receive_public_key() { + + if (!is_user_logged_in()) { + return array('responsetype' => 'error', 'code' => 'not_logged_in'); + } + + if (!wp_verify_nonce($_GET['_wpnonce'], 'updraftcentral_receivepublickey')) return array('responsetype' => 'error', 'code' => 'nonce_failure'); + + $updraft_key_index = $_GET['updraft_key_index']; + + $our_keys = UpdraftPlus_Options::get_updraft_option('updraft_central_localkeys'); + if (!is_array($our_keys)) $our_keys = array(); + + if (!isset($our_keys[$updraft_key_index])) { + return array('responsetype' => 'error', 'code' => 'unknown_key'); + } + + if (!empty($our_keys[$updraft_key_index]['publickey_remote'])) { + return array('responsetype' => 'error', 'code' => 'already_have'); + } + + $our_keys[$updraft_key_index]['publickey_remote'] = base64_decode($_GET['public_key']); + UpdraftPlus_Options::update_updraft_option('updraft_central_localkeys', $our_keys); + + return array('responsetype' => 'ok', 'code' => 'ok'); + } + + // Action parameters, from udrpc: $message, $level, $this->key_name_indicator, $this->debug, $this + public function udrpc_log($message, $level, $key_name_indicator) { + $udrpc_log = get_site_option('updraftcentral_client_log'); + if (!is_array($udrpc_log)) $udrpc_log = array(); + + $new_item = array( + 'time' => time(), + 'level' => $level, + 'message' => $message, + 'key_name_indicator' => $key_name_indicator + ); + + if (!empty($_SERVER['REMOTE_ADDR'])) { + $new_item['remote_ip'] = $_SERVER['REMOTE_ADDR']; + } + if (!empty($_SERVER['HTTP_USER_AGENT'])) { + $new_item['http_user_agent'] = $_SERVER['HTTP_USER_AGENT']; + } + if (!empty($_SERVER['HTTP_X_SECONDARY_USER_AGENT'])) { + $new_item['http_secondary_user_agent'] = $_SERVER['HTTP_X_SECONDARY_USER_AGENT']; + } + + $udrpc_log[] = $new_item; + + if (count($udrpc_log) > 50) array_shift($udrpc_log); + + update_site_option('updraftcentral_client_log', $udrpc_log); + } + + public function delete_key($key_id) { + $our_keys = UpdraftPlus_Options::get_updraft_option('updraft_central_localkeys'); + if (!is_array($our_keys)) $our_keys = array(); + if (isset($our_keys[$key_id])) { + unset($our_keys[$key_id]); + UpdraftPlus_Options::update_updraft_option('updraft_central_localkeys', $our_keys); + } + return array('deleted' => 1, 'keys_table' => $this->get_keys_table()); + } + + public function get_log($params) { + + $udrpc_log = get_site_option('updraftcentral_client_log'); + if (!is_array($udrpc_log)) $udrpc_log = array(); + + $log_contents = ''; + + // Events are appended to the array in the order they happen. So, reversing the order gets them into most-recent-first order. + rsort($udrpc_log); + + if (empty($udrpc_log)) { + $log_contents = ''.__('(Nothing yet logged)', 'updraftplus').''; + } + + foreach ($udrpc_log as $m) { + + // Skip invalid data + if (!isset($m['time'])) continue; + + $time = gmdate('Y-m-d H:i:s O', $m['time']); + // $level is not used yet. We could put the message in different colours for different levels, if/when it becomes used. + + $key_name_indicator = empty($m['key_name_indicator']) ? '' : $m['key_name_indicator']; + + $log_contents .= ''."$time "; + + if (!empty($m['remote_ip'])) $log_contents .= '['.htmlspecialchars($m['remote_ip']).'] '; + + $log_contents .= "[".htmlspecialchars($key_name_indicator)."] ".htmlspecialchars($m['message'])."\n"; + } + + return array('log_contents' => $log_contents); + + } + + public function create_key($params) { + // Use the site URL - this means that if the site URL changes, communication ends; which is the case anyway + $user = wp_get_current_user(); + + $where_send = empty($params['where_send']) ? '' : (string)$params['where_send']; + + if ($where_send != '__updraftpluscom') { + $purl = parse_url($where_send); + if (empty($purl) || !array($purl) || empty($purl['scheme']) || empty($purl['host'])) return array('error' => __('An invalid URL was entered', 'updraftplus')); + } + + $flags = defined('ENT_HTML5') ? ENT_QUOTES | ENT_HTML5 : ENT_QUOTES; + + $extra_info = array( + 'user_id' => $user->ID, + 'user_login' => $user->user_login, + 'ms_id' => get_current_blog_id(), + 'site_title' => html_entity_decode(get_bloginfo('name'), $flags), + ); + + if ($where_send) { + $extra_info['mothership'] = $where_send; + if (!empty($params['mothership_firewalled'])) { + $extra_info['mothership_firewalled'] = true; + } + } + + if (!empty($params['key_description'])) { + $extra_info['name'] = (string)$params['key_description']; + } + + $key_size = (empty($params['key_size']) || !is_numeric($params['key_size']) || $params['key_size'] < 512) ? 2048 : (int)$params['key_size']; + + $extra_info['key_size'] = $key_size; + + $created = $this->create_remote_control_key(false, $extra_info, $where_send); + + if (is_array($created)) { + $created['keys_table'] = $this->get_keys_table(); + } + + return $created; + die; + } + + private function indicator_name_from_index($index) { + return $index.'.central.updraftplus.com'; + } + + private function create_remote_control_key($index = false, $extra_info = array(), $post_it = false) { + + global $updraftplus; + + $our_keys = UpdraftPlus_Options::get_updraft_option('updraft_central_localkeys'); + if (!is_array($our_keys)) $our_keys = array(); + + if (false === $index) { + if (empty($our_keys)) { + $index = 0; + } else { + $index = max(array_keys($our_keys))+1; + } + } + + $name_hash = $index; + + if (isset($our_keys[$name_hash])) { + unset($our_keys[$name_hash]); + } + + $indicator_name = $this->indicator_name_from_index($name_hash); + + $ud_rpc = $updraftplus->get_udrpc($indicator_name); + + $send_to_updraftpluscom = false; + if ('__updraftpluscom' == $post_it) { + $send_to_updraftpluscom = true; + $post_it = defined('UPDRAFTPLUS_OVERRIDE_UDCOM_DESTINATION') ? UPDRAFTPLUS_OVERRIDE_UDCOM_DESTINATION : 'https://updraftplus.com/?updraftcentral_action=receive_key'; + $post_it_description = 'UpdraftPlus.Com'; + } else { + $post_it_description = $post_it; + } + + // Normally, key generation takes seconds, even on a slow machine. However, some Windows machines appear to have a setup in which it takes a minute or more. And then, if you're on a double-localhost setup on slow hardware - even worse. It doesn't hurt to just raise the maximum execution time. + + @set_time_limit(UPDRAFTPLUS_SET_TIME_LIMIT); + + $key_size = (empty($extra_info['key_size']) || !is_numeric($extra_info['key_size']) || $extra_info['key_size'] < 512) ? 2048 : (int)$extra_info['key_size']; +// unset($extra_info['key_size']); + + if (is_object($ud_rpc) && $ud_rpc->generate_new_keypair($key_size)) { + + if ($post_it && empty($extra_info['mothership_firewalled'])) { + + $p_url = parse_url($post_it); + if (is_array($p_url) && !empty($p_url['user'])) { + $http_username = $p_url['user']; + $http_password = empty($p_url['pass']) ? '' : $p_url['pass']; + $post_it = $p_url['scheme'].'://'.$p_url['host']; + if (!empty($p_url['port'])) $post_it .= ':'.$p_url['port']; + $post_it .= $p_url['path']; + if (!empty($p_url['query'])) $post_it .= '?'.$p_url['query']; + } + + $post_options = array( + 'timeout' => 90, + 'body' => array( + 'updraftcentral_action' => 'receive_key', + 'key' => $ud_rpc->get_key_remote() + ) + ); + + if (!empty($http_username)) { + $post_options['headers'] = array( + 'Authorization' => 'Basic '.base64_encode($http_username.':'.$http_password) + ); + } + + // This option allows the key to be sent to the other side via a known-secure channel (e.g. http over SSL), rather than potentially allowing it to travel over an unencrypted channel (e.g. http back to the user's browser). As such, if specified, it is compulsory for it to work. + $sent_key = wp_remote_post( + $post_it, + $post_options + ); + + if (is_wp_error($sent_key) || empty($sent_key)) { + $err_msg = sprintf(__('A key was created, but the attempt to register it with %s was unsuccessful - please try again later.', 'updraftplus'), (string)$post_it_description); + if (is_wp_error($sent_key)) $err_msg .= ' '.$sent_key->get_error_message().' ('.$sent_key->get_error_code().')'; + return array( + 'r' => $err_msg + ); + } + + $response = json_decode(wp_remote_retrieve_body($sent_key), true); + + if (!is_array($response) || !isset($response['key_id']) || !isset($response['key_public'])) { + return array( + 'r' => sprintf(__('A key was created, but the attempt to register it with %s was unsuccessful - please try again later.', 'updraftplus'), (string)$post_it_description), + 'raw' => wp_remote_retrieve_body($sent_key) + ); + } + + $key_hash = hash('sha256', $ud_rpc->get_key_remote()); + + $local_bundle = $ud_rpc->get_portable_bundle('base64_with_count', $extra_info, array('key' => array('key_hash' => $key_hash, 'key_id' => $response['key_id']))); + + } elseif ($post_it) { + // Don't send; instead, include in the bundle info that the mothership is firewalled; this will then tell the mothership to try the reverse connection instead + + if (is_array($extra_info)) { + $extra_info['mothership_firewalled_callback_url'] = wp_nonce_url(admin_url('admin-ajax.php'), 'updraftcentral_receivepublickey'); + $extra_info['updraft_key_index'] = $index; + } + + + $local_bundle = $ud_rpc->get_portable_bundle('base64_with_count', $extra_info, array('key' => $ud_rpc->get_key_remote())); + } + + + if (isset($extra_info['name'])) { + $name = (string)$extra_info['name']; + unset($extra_info['name']); + } else { + $name = 'UpdraftCentral Remote Control'; + } + + $our_keys[$name_hash] = array( + 'name' => $name, + 'key' => $ud_rpc->get_key_local(), + 'extra_info' => $extra_info, + 'created' => time(), + ); + // Store the other side's public key + if (!empty($response) && is_array($response) && !empty($response['key_public'])) { + $our_keys[$name_hash]['publickey_remote'] = $response['key_public']; + } + UpdraftPlus_Options::update_updraft_option('updraft_central_localkeys', $our_keys); + + return array( + 'bundle' => $local_bundle, + 'r' => __('Key created successfully.', 'updraftplus').' '.__('You must copy and paste this key now - it cannot be shown again.', 'updraftplus'), +// 'selector' => $this->get_remotesites_selector(array()), +// 'ourkeys' => $this->list_our_keys($our_keys), + ); + } + + return false; + + } + + public function get_keys_table() { + + $ret = ''; + + $our_keys = UpdraftPlus_Options::get_updraft_option('updraft_central_localkeys'); + if (!is_array($our_keys)) $our_keys = array(); + + if (empty($our_keys)) { + $ret .= ''.__('No keys have yet been created.', 'updraftplus').''; + } + + foreach ($our_keys as $i => $key) { + + if (empty($key['extra_info'])) continue; + + $user_id = $key['extra_info']['user_id']; + + if (!empty($key['extra_info']['mothership'])) { + + $mothership_url = $key['extra_info']['mothership']; + + if ('__updraftpluscom' == $mothership_url) { + $reconstructed_url = 'https://updraftplus.com'; + } else { + $purl = parse_url($mothership_url); + $path = empty($purl['path']) ? '' : $purl['path']; + + $reconstructed_url = $purl['scheme'].'://'.$purl['host'].(!empty($purl['port']) ? ':'.$purl['port'] : '').$path; + } + + } else { + $reconstructed_url = __('Unknown', 'updraftplus'); + } + + $name = $key['name']; + + $user = get_user_by('id', $user_id); + + $user_display = is_a($user, 'WP_User') ? $user->user_login.' ('.$user->user_email.')' : __('Unknown', 'updraftplus'); + + $ret .= ''.htmlspecialchars($name).' ('.htmlspecialchars($i).')'.__("Access this site as user:", 'updraftplus')." ".htmlspecialchars($user_display)."
        ".__('Public key was sent to:', 'updraftplus').' '.htmlspecialchars($reconstructed_url).'
        '; + + if (!empty($key['created'])) { + $ret .= __('Created:', 'updraftplus').' '.date_i18n(get_option('date_format').' '.get_option('time_format'), $key['created']).'.'; + if (!empty($key['extra_info']['key_size'])) { + $ret .= ' '.sprintf(__('Key size: %d bits', 'updraftplus'), $key['extra_info']['key_size']).'.'; + } + $ret .= '
        '; + } + + $ret .= ''.__('Delete...', 'updraftplus').''; + } + + + ob_start(); + ?> +
        +
        + + + + + + + + + + +
        +
        +
        + +
        +

        + + + + + + + + + + + + + + + + + + + + + + +
        + : + + +
        : + +
        + +
        + +
        +
        + +
        +
        + + +
        + +
        +
        + +
        +

        - + +

        +
        +				
        +
        + +
        +

        +

        + '.__('Read more about it here.', 'updraftplus').''; ?> +

        +
        + get_keys_table() ?> + create_key_markup() ?> + create_log_markup() ?> +
        +
        + options['context'] = $context; + } + // TODO: fix up request_filesystem_credentials(), or split it, to allow us to request a no-output version + // This will output a credentials form in event of failure, We don't want that, so just hide with a buffer + ob_start(); + $result = parent::request_filesystem_credentials( $error, $context, $allow_relaxed_file_ownership ); + ob_end_clean(); + return $result; + } + + /** + * @access public + * + * @return array + */ + public function get_upgrade_messages() { + return $this->messages; + } + + /** + * @param string|array|WP_Error $data + */ + public function feedback( $data ) { + if ( is_wp_error( $data ) ) { + $string = $data->get_error_message(); + } elseif ( is_array( $data ) ) { + return; + } else { + $string = $data; + } + if ( ! empty( $this->upgrader->strings[ $string ] ) ) + $string = $this->upgrader->strings[ $string ]; + + if ( strpos( $string, '%' ) !== false ) { + $args = func_get_args(); + $args = array_splice( $args, 1 ); + if ( ! empty( $args ) ) + $string = vsprintf( $string, $args ); + } + + $string = trim( $string ); + + // Only allow basic HTML in the messages, as it'll be used in emails/logs rather than direct browser output. + $string = wp_kses( $string, array( + 'a' => array( + 'href' => true + ), + 'br' => true, + 'em' => true, + 'strong' => true, + ) ); + + if ( empty( $string ) ) + return; + + $this->messages[] = $string; + } + + /** + * @access public + */ + public function header() { + ob_start(); + } + + /** + * @access public + */ + public function footer() { + $output = ob_get_clean(); + if ( ! empty( $output ) ) + $this->feedback( $output ); + } + + /** + * @access public + */ + public function bulk_header() {} + + /** + * @access public + */ + public function bulk_footer() {} + +} diff --git a/plugins/updraftplus/central/commands.php b/plugins/updraftplus/central/commands.php new file mode 100644 index 0000000..efec080 --- /dev/null +++ b/plugins/updraftplus/central/commands.php @@ -0,0 +1,55 @@ + (string - a code), 'data' => (mixed)); + + RPC commands are not allowed to begin with an underscore. So, any private methods can be prefixed with an underscore. + +*/ + +abstract class UpdraftCentral_Commands { + + protected $rc; + protected $ud; + + public function __construct($rc) { + $this->rc = $rc; + global $updraftplus; + $this->ud = $updraftplus; + } + + final protected function _admin_include() { + $files = func_get_args(); + foreach ($files as $file) { + require_once(ABSPATH.'/wp-admin/includes/'.$file); + } + } + + final protected function _frontend_include() { + $files = func_get_args(); + foreach ($files as $file) { + require_once(ABSPATH.WPINC.'/'.$file); + } + } + + final protected function _response($data = null, $code = 'rpcok') { + return apply_filters('updraftplus_remotecontrol_response', array( + 'response' => $code, + 'data' => $data + ), $data, $code); + } + + final protected function _generic_error_response($code = 'central_unspecified', $data = null) { + return $this->_response( + array( + 'code' => $code, + 'data' => $data + ), + 'rpcerror' + ); + } + +} diff --git a/plugins/updraftplus/central/listener.php b/plugins/updraftplus/central/listener.php new file mode 100644 index 0000000..89a85b1 --- /dev/null +++ b/plugins/updraftplus/central/listener.php @@ -0,0 +1,207 @@ +ud = $updraftplus; + // It seems impossible for this condition to result in a return; but it seems Plesk can do something odd within the control panel that causes a problem - see HS#6276 + if (!is_a($this->ud, 'UpdraftPlus')) return; + + $this->command_classes = $command_classes; + + foreach ($keys as $name_hash => $key) { + // publickey_remote isn't necessarily set yet, depending on the key exchange method + if (!is_array($key) || empty($key['extra_info']) || empty($key['publickey_remote'])) continue; + $indicator = $name_hash.'.central.updraftplus.com'; + $ud_rpc = $this->ud->get_udrpc($indicator); + $this->udrpc_version = $ud_rpc->version; + + // Only turn this on if you are comfortable with potentially anything appearing in your PHP error log + if (defined('UPDRAFTPLUS_UDRPC_FORCE_DEBUG') && UPDRAFTPLUS_UDRPC_FORCE_DEBUG) $ud_rpc->set_debug(true); + $this->receivers[$indicator] = $ud_rpc; + $this->extra_info[$indicator] = isset($key['extra_info']) ? $key['extra_info'] : null; + $ud_rpc->set_key_local($key['key']); + $ud_rpc->set_key_remote($key['publickey_remote']); + // Create listener (which causes WP actions to be fired when messages are received) + $ud_rpc->activate_replay_protection(); + if (!empty($key['extra_info']) && isset($key['extra_info']['mothership'])) { + $mothership = $key['extra_info']['mothership']; + unset($url); + if ('__updraftpluscom' == $mothership) { + $url = 'https://updraftplus.com'; + } elseif (false != ($parsed = parse_url($key['extra_info']['mothership'])) && is_array($parsed)) { + $url = $parsed['scheme'].'://'.$parsed['host']; + } + if (!empty($url)) $ud_rpc->set_allow_cors_from(array($url)); + } + $ud_rpc->create_listener(); + } + + // If we ever need to expand beyond a single GET action, this can/should be generalised and put into the commands class + if (!empty($_GET['udcentral_action']) && 'login' == $_GET['udcentral_action']) { + # auth_redirect() does not return, according to the documentation; but the code shows that it can + # auth_redirect(); + + if (!empty($_GET['login_id']) && is_numeric($_GET['login_id']) && !empty($_GET['login_key'])) { + $login_user = get_user_by('id', $_GET['login_id']); + + require_once(ABSPATH.WPINC.'/version.php'); + if (is_a($login_user, 'WP_User') || (version_compare($wp_version, '3.5', '<') && !empty($login_user->ID))) { + // Allow site implementers to disable this functionality + $allow_autologin = apply_filters('updraftcentral_allow_autologin', true, $login_user); + if ($allow_autologin) { + $login_key = get_user_meta($login_user->ID, 'updraftcentral_login_key', true); + if (is_array($login_key) && !empty($login_key['created']) && $login_key['created'] > time() - 60 && !empty($login_key['key']) && $login_key['key'] == $_GET['login_key']) { + $autologin = empty($login_key['redirect_url']) ? network_admin_url() : $login_key['redirect_url']; + } + } + } + } + if (!empty($autologin)) { + // Allow use once only + delete_user_meta($login_user->ID, 'updraftcentral_login_key'); + $this->autologin_user($login_user, $autologin); + } + } + + add_filter('udrpc_action', array($this, 'udrpc_action'), 10, 5); + + } + + // Do verification before calling this method + private function autologin_user($user, $redirect_url = false) { + if (!is_user_logged_in()) { + // $user = get_user_by('id', $user_id); + // Don't check that it's a WP_User - that's WP 3.5+ only + if (!is_object($user) || empty($user->ID)) return; + wp_set_current_user($user->ID, $user->user_login); + wp_set_auth_cookie($user->ID); + do_action('wp_login', $user->user_login, $user); + } + if ($redirect_url) { + wp_safe_redirect($redirect_url); + exit; + } + } + + public function udrpc_action($response, $command, $data, $key_name_indicator, $ud_rpc) { + + if (empty($this->receivers[$key_name_indicator])) return $response; + $this->initialise_listener_error_handling($key_name_indicator); + + if (!preg_match('/^([a-z0-9]+)\.(.*)$/', $command, $matches)) return; + $class_prefix = $matches[1]; + $command = $matches[2]; + + // We only handle some commands - the others, we let something else deal with + if (!isset($this->command_classes[$class_prefix])) return $response; + + $command_php_class = $this->command_classes[$class_prefix]; + + do_action('updraftcentral_command_class_wanted', $command_php_class); + + if (!class_exists($command_php_class)) { + if (file_exists(UPDRAFTPLUS_DIR.'/central/modules/'.$class_prefix.'.php')) { + if (!class_exists('UpdraftCentral_Commands')) require_once(UPDRAFTPLUS_DIR.'/central/commands.php'); + require_once(UPDRAFTPLUS_DIR.'/central/modules/'.$class_prefix.'.php'); + } + } + + if (empty($this->commands[$class_prefix])) { + if (class_exists($command_php_class)) { + $this->commands[$class_prefix] = new $command_php_class($this); + } + } + + $command_class = isset($this->commands[$class_prefix]) ? $this->commands[$class_prefix] : new stdClass; + + if ('_' == substr($command, 0, 1) || !is_a($command_class, $command_php_class) || !method_exists($command_class, $command)) { + if (defined('UPDRAFTPLUS_UDRPC_FORCE_DEBUG') && UPDRAFTPLUS_UDRPC_FORCE_DEBUG) error_log("Unknown RPC command received: ".$command); + return $this->return_rpc_message(array('response' => 'rpcerror', 'data' => array('code' => 'unknown_rpc_command', 'data' => array('prefix' => $class_prefix, 'command' => $command, 'class' => $command_php_class)))); + } + + $extra_info = isset($this->extra_info[$key_name_indicator]) ? $this->extra_info[$key_name_indicator] : null; + + // Make it so that current_user_can() checks can apply + work + if (!empty($extra_info['user_id'])) wp_set_current_user($extra_info['user_id']); + + $this->current_udrpc = $ud_rpc; + + // Despatch + $msg = call_user_func(array($command_class, $command), $data, $extra_info); + + return $this->return_rpc_message($msg); + } + + public function get_current_udrpc() { + return $this->current_udrpc; + } + + private function initialise_listener_error_handling($hash) { + $this->ud->error_reporting_stop_when_logged = true; + set_error_handler(array($this->ud, 'php_error'), E_ALL & ~E_STRICT); + $this->php_events = array(); + @ob_start(); + add_filter('updraftplus_logline', array($this, 'updraftplus_logline'), 10, 4); + if (!UpdraftPlus_Options::get_updraft_option('updraft_debug_mode')) return; +// $this->ud->nonce = $hash; +// $this->ud->logfile_open($hash); + } + + public function updraftplus_logline($line, $nonce, $level, $uniq_id) { + if ('notice' === $level && 'php_event' === $uniq_id) { + $this->php_events[] = $line; + } + return $line; + } + + public function return_rpc_message($msg) { + if (is_array($msg) && isset($msg['response']) && 'error' == $msg['response']) { + $this->ud->log('Unexpected response code in remote communications: '.serialize($msg)); + } + + $caught_output = @ob_get_contents(); + @ob_end_clean(); + // If turning output-catching off, turn this on instead: + // $caught_output = ''; @ob_end_flush(); + + // If there's higher-level output buffering going on, then get rid of that + if (ob_get_level()) ob_end_clean(); + + if ($caught_output) { + if (!isset($msg['data'])) $msg['data'] = null; + $msg['data'] = array('caught_output' => $caught_output, 'previous_data' => $msg['data']); + $already_rearranged_data = true; + } + + if (!empty($this->php_events)) { + if (!isset($msg['data'])) $msg['data'] = null; + if (!empty($already_rearranged_data)) { + $msg['data']['php_events'] = array(); + } else { + $msg['data'] = array('php_events' => array(), 'previous_data' => $msg['data']); + } + foreach ($this->php_events as $logline) { + $msg['data']['php_events'][] = $logline; + } + } + restore_error_handler(); + + return $msg; + } + +} diff --git a/plugins/updraftplus/central/modules/core.php b/plugins/updraftplus/central/modules/core.php new file mode 100644 index 0000000..f53a006 --- /dev/null +++ b/plugins/updraftplus/central/modules/core.php @@ -0,0 +1,129 @@ + (string - a code), 'data' => (mixed)); + + RPC commands are not allowed to begin with an underscore. So, any private methods can be prefixed with an underscore. + +*/ + +class UpdraftCentral_Core_Commands extends UpdraftCentral_Commands { + + public function get_login_url($redirect_to, $extra_info) { + if (is_array($extra_info) && !empty($extra_info['user_id']) && is_numeric($extra_info['user_id'])) { + + $user_id = $extra_info['user_id']; + + if (false == ($login_key = $this->_get_autologin_key($user_id))) return $this->_generic_error_response('user_key_failure'); + + // Default value + $redirect_url = network_admin_url(); + if (is_array($redirect_to) && !empty($redirect_to['module'])) { + switch ($redirect_to['module']) { + case 'updraftplus'; + if ('initiate_restore' == $redirect_to['action'] && class_exists('UpdraftPlus_Options')) { + $redirect_url = UpdraftPlus_Options::admin_page_url().'?page=updraftplus&udaction=initiate_restore&entities='.urlencode($redirect_to['data']['entities']).'&showdata='.urlencode($redirect_to['data']['showdata']).'&backup_timestamp='.(int)$redirect_to['data']['backup_timestamp']; + } elseif ('download_file' == $redirect_to['action']) { + $findex = empty($redirect_to['data']['findex']) ? 0 : (int)$redirect_to['data']['findex']; + // e.g. ?udcentral_action=dl&action=updraftplus_spool_file&backup_timestamp=1455101696&findex=0&what=plugins + $redirect_url = site_url().'?udcentral_action=spool_file&action=updraftplus_spool_file&findex='.$findex.'&what='.urlencode($redirect_to['data']['what']).'&backup_timestamp='.(int)$redirect_to['data']['backup_timestamp']; + } + break; + case 'direct_url': + $redirect_url = $redirect_to['url']; + break; + } + } + + $login_key = apply_filters('updraftplus_remotecontrol_login_key', array( + 'key' => $login_key, + 'created' => time(), + 'redirect_url' => $redirect_url + ), $redirect_to, $extra_info); + + // Over-write any previous value - only one can be valid at a time) + update_user_meta($user_id, 'updraftcentral_login_key', $login_key); + + return $this->_response(array( + 'login_url' => network_site_url('?udcentral_action=login&login_id='.$user_id.'&login_key='.$login_key['key']) + )); + + } else { + return $this->_generic_error_response('user_unknown'); + } + } + + public function phpinfo() { + + $phpinfo = $this->_get_phpinfo_array(); + + if (!empty($phpinfo)){ + return $this->_response($phpinfo); + } + + return $this->_generic_error_response('phpinfo_fail'); + + } + + // https://secure.php.net/phpinfo + private function _get_phpinfo_array() { + ob_start(); + phpinfo(11); + $phpinfo = array('phpinfo' => array()); + + if (preg_match_all('#(?:

        (?:)?(.*?)(?:)?

        )|(?:(.*?)\s*(?:(.*?)\s*(?:(.*?)\s*)?)?)#s', ob_get_clean(), $matches, PREG_SET_ORDER)){ + foreach($matches as $match){ + if(strlen($match[1])){ + $phpinfo[$match[1]] = array(); + }elseif(isset($match[3])){ + $keys1 = array_keys($phpinfo); + $phpinfo[end($keys1)][$match[2]] = isset($match[4]) ? array($match[3], $match[4]) : $match[3]; + } else { + $keys1 = array_keys($phpinfo); + $phpinfo[end($keys1)][] = $match[2]; + + } + + } + return $phpinfo; + } + + return false; + + } + + // This is intended to be short-lived. Hence, there's no intention other than that it is random and only used once - only the most recent one is valid. + public function _get_autologin_key($user_id) { + $secure_auth_key = defined('SECURE_AUTH_KEY') ? SECURE_AUTH_KEY : hash('sha256', DB_PASSWORD).'_'.rand(0, 999999999); + if (!defined('SECURE_AUTH_KEY')) return false; + $hash_it = $user_id.'_'.microtime(true).'_'.rand(0, 999999999).'_'.$secure_auth_key; + $hash = hash('sha256', $hash_it); + return $hash; + } + + public function site_info() { + + global $wpdb; + @include(ABSPATH.WPINC.'/version.php'); + + $ud_version = is_a($this->ud, 'UpdraftPlus') ? $this->ud->version : 'none'; + + return $this->_response(array( + 'versions' => array( + 'ud' => $ud_version, + 'php' => PHP_VERSION, + 'wp' => $wp_version, + 'mysql' => $wpdb->db_version(), + 'udrpc_php' => $this->rc->udrpc_version, + ), + 'bloginfo' => array( + 'url' => network_site_url(), + 'name' => get_bloginfo('name'), + ) + )); + } + +} diff --git a/plugins/updraftplus/central/modules/updates.php b/plugins/updraftplus/central/modules/updates.php new file mode 100644 index 0000000..346cc79 --- /dev/null +++ b/plugins/updraftplus/central/modules/updates.php @@ -0,0 +1,533 @@ +_generic_error_response('invalid_data'); + + if (!empty($updates['plugins']) && !current_user_can('update_plugins')) return $this->_generic_error_response('updates_permission_denied', 'update_plugins'); + + if (!empty($updates['themes']) && !current_user_can('update_themes')) return $this->_generic_error_response('updates_permission_denied', 'update_themes'); + + if (!empty($updates['core']) && !current_user_can('update_core')) return $this->_generic_error_response('updates_permission_denied', 'update_core'); + + $this->_admin_include('plugin.php', 'update.php', 'file.php', 'template.php'); + $this->_frontend_include('update.php'); + + if (!empty($updates['meta']) && isset($updates['meta']['filesystem_credentials'])) { + parse_str($updates['meta']['filesystem_credentials'], $filesystem_credentials); + if (is_array($filesystem_credentials)) { + foreach ($filesystem_credentials as $key => $value) { + // Put them into $_POST, which is where request_filesystem_credentials() checks for them. + $_POST[$key] = $value; + } + } + } + + $plugins = empty($updates['plugins']) ? array() : $updates['plugins']; + $plugin_updates = array(); + foreach ($plugins as $plugin_info) { + $plugin_file = $plugin_info['plugin']; + $plugin_updates[] = $this->_update_plugin($plugin_info['plugin'], $plugin_info['slug']); + } + + $themes = empty($updates['themes']) ? array() : $updates['themes']; + $theme_updates = array(); + foreach ($themes as $theme_info) { + $theme = $theme_info['theme']; + $theme_updates[] = $this->_update_theme($theme); + } + + $cores = empty($updates['core']) ? array() : $updates['core']; + $core_updates = array(); + foreach ($cores as $core) { + $core_updates[] = $this->_update_core(null); + // Only one (and always we go to the latest version) - i.e. we ignore the passed parameters + break; + } + + return $this->_response(array( + 'plugins' => $plugin_updates, + 'themes' => $theme_updates, + 'core' => $core_updates, + )); + + } + + // Mostly from wp_ajax_update_plugin() in wp-admin/includes/ajax-actions.php (WP 4.5.2) + // Code-formatting style has been retained from the original, for ease of comparison/updating + private function _update_plugin($plugin, $slug) { + + $status = array( + 'update' => 'plugin', + 'plugin' => $plugin, + 'slug' => sanitize_key( $slug ), + 'oldVersion' => '', + 'newVersion' => '', + ); + + if (false !== strpos($plugin, '..') || false !== strpos($plugin, ':') || !preg_match('#^[^\/]#i', $plugin)) { + $status['error'] = 'not_found'; + return $status; + } + + $plugin_data = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin ); + if (!isset($plugin_data['Name']) || !isset($plugin_data['Author']) || ('' == $plugin_data['Name'] && '' == $plugin_data['Author'])) { + $status['error'] = 'not_found'; + return $status; + } + + if ( $plugin_data['Version'] ) { + $status['oldVersion'] = $plugin_data['Version']; + } + + if ( ! current_user_can( 'update_plugins' ) ) { + $status['error'] = 'updates_permission_denied'; + return $status; + } + + include_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' ); + + wp_update_plugins(); + + // WP < 3.7 + if (!class_exists('Automatic_Upgrader_Skin')) require_once(UPDRAFTPLUS_DIR.'/central/classes/class-automatic-upgrader-skin.php'); + + $skin = new Automatic_Upgrader_Skin(); + $upgrader = new Plugin_Upgrader( $skin ); + $result = $upgrader->bulk_upgrade( array( $plugin ) ); + + if ( is_array( $result ) && empty( $result[$plugin] ) && is_wp_error( $skin->result ) ) { + $result = $skin->result; + } + + $status['messages'] = $upgrader->skin->get_upgrade_messages(); + + if ( is_array( $result ) && !empty( $result[ $plugin ] ) ) { + $plugin_update_data = current( $result ); + + /* + * If the `update_plugins` site transient is empty (e.g. when you update + * two plugins in quick succession before the transient repopulates), + * this may be the return. + * + * Preferably something can be done to ensure `update_plugins` isn't empty. + * For now, surface some sort of error here. + */ + if ( $plugin_update_data === true ) { + $status['error'] = 'update_failed'; + return $status; + } + + $plugin_data = get_plugins( '/' . $result[ $plugin ]['destination_name'] ); + $plugin_data = reset( $plugin_data ); + + if ( $plugin_data['Version'] ) { + $status['newVersion'] = $plugin_data['Version']; + } + return $status; + + } else if ( is_wp_error( $result ) ) { + $status['error'] = $result->get_error_code(); + $status['error_message'] = $result->get_error_message(); + return $status; + + } else if ( is_bool( $result ) && ! $result ) { + $status['error'] = 'unable_to_connect_to_filesystem'; + + global $wp_filesystem; + + // Pass through the error from WP_Filesystem if one was raised + if ( isset($wp_filesystem->errors) && is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->get_error_code() ) { + $status['error'] = $wp_filesystem->errors->get_error_code(); + $status['error_message'] = $wp_filesystem->errors->get_error_message(); + } + + return $status; + + } else { + // An unhandled error occured + $status['error'] = 'update_failed'; + return $status; + } + } + + // Adapted from _update_theme (above) + private function _update_core($core) { + + global $wp_filesystem; + + $status = array( + 'update' => 'core', + 'core' => $core, + 'oldVersion' => '', + 'newVersion' => '', + ); + + include(ABSPATH.WPINC.'/version.php'); + + $status['oldVersion'] = $wp_version; + + if ( ! current_user_can( 'update_core' ) ) { + $status['error'] = 'updates_permission_denied'; + return $status; + } + + include_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' ); + + wp_version_check(); + + $locale = get_locale(); + + $core_update_key = false; + $core_update_latest_version = false; + + $get_core_updates = get_core_updates(); + + @include(ABSPATH.WPINC.'/version.php'); + + foreach ($get_core_updates as $k => $core_update) { + if (isset($core_update->version) && version_compare($core_update->version, $wp_version, '>') && version_compare($core_update->version, $core_update_latest_version, '>')) { + $core_update_latest_version = $core_update->version; + $core_update_key = $k; + } + } + + if ( $core_update_key === false ) { + $status['error'] = 'no_update_found'; + return $status; + } + + $update = $get_core_updates[$core_update_key]; + + // WP < 3.7 + if (!class_exists('Automatic_Upgrader_Skin')) require_once(UPDRAFTPLUS_DIR.'/central/classes/class-automatic-upgrader-skin.php'); + + $skin = new Automatic_Upgrader_Skin(); + $upgrader = new Core_Upgrader( $skin ); + + $result = $upgrader->upgrade($update); + + $status['messages'] = $upgrader->skin->get_upgrade_messages(); + + if ( is_wp_error( $result ) ) { + $status['error'] = $result->get_error_code(); + $status['error_message'] = $result->get_error_message(); + return $status; + + } else if ( is_bool( $result ) && ! $result ) { + $status['error'] = 'unable_to_connect_to_filesystem'; + + // Pass through the error from WP_Filesystem if one was raised + if ( is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->get_error_code() ) { + $status['error'] = $wp_filesystem->errors->get_error_code(); + $status['error_message'] = $wp_filesystem->errors->get_error_message(); + } + + return $status; + + + } elseif ( preg_match('/^[0-9]/', $result) ) { + + $status['newVersion'] = $result; + + return $status; + + } else { + // An unhandled error occured + $status['error'] = 'update_failed'; + return $status; + } + + } + + private function _update_theme($theme) { + + global $wp_filesystem; + + $status = array( + 'update' => 'theme', + 'theme' => $theme, + 'oldVersion' => '', + 'newVersion' => '', + ); + + if (false !== strpos($theme, '/') || false !== strpos($theme, '\\')) { + $status['error'] = 'not_found'; + return $status; + } + + $theme_version = $this->get_theme_version($theme); + if (false === $theme_version) { + $status['error'] = 'not_found'; + return $status; + } + $status['oldVersion'] = $theme_version; + + if ( ! current_user_can( 'update_themes' ) ) { + $status['error'] = 'updates_permission_denied'; + return $status; + } + + include_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' ); + + wp_update_themes(); + + // WP < 3.7 + if (!class_exists('Automatic_Upgrader_Skin')) require_once(UPDRAFTPLUS_DIR.'/central/classes/class-automatic-upgrader-skin.php'); + + $skin = new Automatic_Upgrader_Skin(); + $upgrader = new Theme_Upgrader( $skin ); + $upgrader->init(); + $result = $upgrader->bulk_upgrade( array($theme) ); + + if ( is_array( $result ) && empty( $result[$theme] ) && is_wp_error( $skin->result ) ) { + $result = $skin->result; + } + + $status['messages'] = $upgrader->skin->get_upgrade_messages(); + + if ( is_array( $result ) && !empty( $result[ $theme ] ) ) { + $theme_update_data = current( $result ); + + /* + * If the `update_themes` site transient is empty (e.g. when you update + * two plugins in quick succession before the transient repopulates), + * this may be the return. + * + * Preferably something can be done to ensure `update_themes` isn't empty. + * For now, surface some sort of error here. + */ + if ( $theme_update_data === true ) { + $status['error'] = 'update_failed'; + return $status; + } + + $new_theme_version = $this->get_theme_version($theme); + if (false === $new_theme_version) { + $status['error'] = 'update_failed'; + return $status; + } + + $status['newVersion'] = $new_theme_version; + + return $status; + + } else if ( is_wp_error( $result ) ) { + $status['error'] = $result->get_error_code(); + $status['error_message'] = $result->get_error_message(); + return $status; + + } else if ( is_bool( $result ) && ! $result ) { + $status['error'] = 'unable_to_connect_to_filesystem'; + + // Pass through the error from WP_Filesystem if one was raised + if ( is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->get_error_code() ) { + $status['error'] = $wp_filesystem->errors->get_error_code(); + $status['error_message'] = $wp_filesystem->errors->get_error_message(); + } + + return $status; + + } else { + // An unhandled error occured + $status['error'] = 'update_failed'; + return $status; + } + + } + + private function get_theme_version($theme) { + + if (function_exists('wp_get_theme')) { + // Since WP 3.4.0 + $theme = wp_get_theme($theme); + + if (is_a($theme, 'WP_Theme')) { + return $theme->Version; + } else { + return false; + } + + } else { + $theme_data = get_theme_data(WP_CONTENT_DIR . '/themes/'.$theme.'/style.css'); + + if (isset($theme_data['Version'])) { + return $theme_data['Version']; + } else { + return false; + } + } + } + + public function get_updates($options) { + + if (!current_user_can('update_plugins') && !current_user_can('update_themes') && !current_user_can('update_core')) return $this->_generic_error_response('updates_permission_denied'); + + $this->_admin_include('plugin.php', 'update.php', 'file.php', 'template.php'); + $this->_frontend_include('update.php'); + + if (!is_array($options)) $options = array(); + + // Normalise it + $plugin_updates = array(); + if (current_user_can('update_plugins')) { + + // Detect if refresh needed + $transient = get_site_transient('update_plugins'); + if (!empty($options['force_refresh']) || false === $transient) { + delete_site_transient('update_plugins'); + wp_update_plugins(); + } + + $get_plugin_updates = get_plugin_updates(); + if (is_array($get_plugin_updates)) { + foreach ($get_plugin_updates as $update) { + $plugin_updates[] = array( + 'name' => $update->Name, + 'plugin_uri' => $update->PluginURI, + 'version' => $update->Version, + 'description' => $update->Description, + 'author' => $update->Author, + 'author_uri' => $update->AuthorURI, + 'title' => $update->Title, + 'author_name' => $update->AuthorName, + 'update' => array( + 'plugin' => $update->update->plugin, + 'slug' => $update->update->slug, + 'new_version' => $update->update->new_version, + 'package' => $update->update->package, + 'tested' => isset($update->update->tested) ? $update->update->tested : null, + 'compatibility' => isset($update->update->compatibility) ? (array)$update->update->compatibility : null, + 'sections' => isset($update->update->sections) ? (array)$update->update->sections : null, + ), + ); + } + } + } + + $theme_updates = array(); + if (current_user_can('update_themes')) { + + // Detect if refresh needed + $transient = get_site_transient('update_themes'); + if (!empty($options['force_refresh']) || false === $transient) { + delete_site_transient('update_themes'); + wp_update_themes(); + } + $get_theme_updates = get_theme_updates(); + if (is_array($get_theme_updates)) { + foreach ($get_theme_updates as $update) { + $theme_updates[] = array( + 'name' => @$update->Name, + 'theme_uri' => @$update->ThemeURI, + 'version' => @$update->Version, + 'description' => @$update->Description, + 'author' => @$update->Author, + 'author_uri' => @$update->AuthorURI, + 'update' => array( + 'theme' => @$update->update['theme'], + 'new_version' => @$update->update['new_version'], + 'package' => @$update->update['package'], + 'url' => @$update->update['url'], + ), + ); + } + } + } + + $core_updates = array(); + if (current_user_can('update_core')) { + + // Detect if refresh needed + $transient = get_site_transient('update_core'); + if (!empty($options['force_refresh']) || false === $transient) { + // The next line is only needed for older WP versions - otherwise, the parameter to wp_version_check forces a check. + delete_site_transient('update_core'); + wp_version_check(array(), true); + } + + $get_core_updates = get_core_updates(); + + if (is_array($get_core_updates)) { + + $core_update_key = false; + $core_update_latest_version = false; + + @include(ABSPATH.WPINC.'/version.php'); + + foreach ($get_core_updates as $k => $core_update) { + if (isset($core_update->version) && version_compare($core_update->version, $wp_version, '>') && version_compare($core_update->version, $core_update_latest_version, '>')) { + $core_update_latest_version = $core_update->version; + $core_update_key = $k; + } + } + + if ($core_update_key !== false) { + + $update = $get_core_updates[$core_update_key]; + + global $wpdb; + + $mysql_version = $wpdb->db_version(); + + $is_mysql = (file_exists( WP_CONTENT_DIR . '/db.php' ) && empty( $wpdb->is_mysql )) ? false : true; + + $core_updates[] = array( + 'download' => $update->download, + 'version' => $update->version, + 'php_version' => $update->php_version, + 'mysql_version' => $update->mysql_version, + 'installed' => array( + 'version' => $wp_version, + 'mysql' => $mysql_version, + 'php' => PHP_VERSION, + 'is_mysql' => $is_mysql, + ), + 'sufficient' => array( + 'mysql' => version_compare($mysql_version, $update->mysql_version, '>='), + 'php' => version_compare(PHP_VERSION, $update->php_version, '>='), + ), + ); + + } + } + + } + + + // Do we need to ask the user for filesystem credentials? + $request_filesystem_credentials = array(); + $check_fs = array( + 'plugins' => WP_PLUGIN_DIR, + 'themes' => WP_CONTENT_DIR.'/themes', + 'core' => untrailingslashit(ABSPATH) + ); + + foreach ($check_fs as $entity => $dir) { + $filesystem_method = get_filesystem_method(array(), $dir); + ob_start(); + $filesystem_credentials_are_stored = request_filesystem_credentials(site_url()); + $filesystem_form = strip_tags(ob_get_contents(), '

        '); + ob_end_clean(); + $request_filesystem_credentials[$entity] = ($filesystem_method != 'direct' && ! $filesystem_credentials_are_stored); + } + + $automatic_backups = (class_exists('UpdraftPlus_Options') && class_exists('UpdraftPlus_Addon_Autobackup') && UpdraftPlus_Options::get_updraft_option('updraft_autobackup_default', true)) ? true : false; + + return $this->_response(array( + 'plugins' => $plugin_updates, + 'themes' => $theme_updates, + 'core' => $core_updates, + 'meta' => array( + 'request_filesystem_credentials' => $request_filesystem_credentials, + 'filesystem_form' => $filesystem_form, + 'automatic_backups' => $automatic_backups + ), + )); + } + +} diff --git a/plugins/updraftplus/central/modules/updraftplus.php b/plugins/updraftplus/central/modules/updraftplus.php new file mode 100644 index 0000000..94654f2 --- /dev/null +++ b/plugins/updraftplus/central/modules/updraftplus.php @@ -0,0 +1,365 @@ + (string - a code), 'data' => (mixed)); + + RPC commands are not allowed to begin with an underscore. So, any private methods can be prefixed with an underscore. + +*/ + +class UpdraftPlus_RemoteControl_Commands extends UpdraftCentral_Commands { + + public function get_download_status($items) { + if (false === ($updraftplus_admin = $this->_load_ud_admin())) return $this->_generic_error_response('no_updraftplus'); + + if (!UpdraftPlus_Options::user_can_manage()) return $this->_generic_error_response('updraftplus_permission_denied'); + + if (!is_array($items)) $items = array(); + + return $this->_response($updraftplus_admin->get_download_statuses($items)); + + } + + public function downloader($downloader_params) { + + if (false === ($updraftplus_admin = $this->_load_ud_admin())) return $this->_generic_error_response('no_updraftplus'); + + if (!UpdraftPlus_Options::user_can_manage()) return $this->_generic_error_response('updraftplus_permission_denied'); + + $findex = $downloader_params['findex']; + $type = $downloader_params['type']; + $timestamp = $downloader_params['timestamp']; + // Valid stages: 2='spool the data'|'delete'='delete local copy'|anything else='make sure it is present' + $stage = empty($downloader_params['stage']) ? false : $downloader_params['stage']; + + // This may, or may not, return, depending upon whether the files are already downloaded + // The response is usually an array with key 'result', and values deleted|downloaded|needs_download|download_failed + $response = $updraftplus_admin->do_updraft_download_backup($findex, $type, $timestamp, $stage, array($this, '_updraftplus_background_operation_started')); + + if (is_array($response)) { + $response['request'] = $downloader_params; + } + + return $this->_response($response); + } + + public function delete_downloaded($set_info) { + $set_info['stage'] = 'delete'; + return $this->downloader($set_info); + } + + public function backup_progress($params) { + + if (false === ($updraftplus_admin = $this->_load_ud_admin())) return $this->_generic_error_response('no_updraftplus'); + + if (!UpdraftPlus_Options::user_can_manage()) return $this->_generic_error_response('updraftplus_permission_denied'); + + $request = array( + 'thisjobonly' => $params['job_id'] + ); + + $activejobs_list = $updraftplus_admin->get_activejobs_list($request); + + return $this->_response($activejobs_list); + + } + + public function backupnow($params) { + + if (false === ($updraftplus_admin = $this->_load_ud_admin())) return $this->_generic_error_response('no_updraftplus'); + if (!UpdraftPlus_Options::user_can_manage()) return $this->_generic_error_response('updraftplus_permission_denied'); + + $updraftplus_admin->request_backupnow($params, array($this, '_updraftplus_background_operation_started')); + + // Control returns when the backup finished; but, the browser connection should have been closed before + die; + } + + public function _updraftplus_background_operation_started($msg) { + + // Under-the-hood hackery to allow the browser connection to be closed, and the backup/download to continue + + $rpc_response = $this->rc->return_rpc_message($this->_response($msg)); + + $data = isset($rpc_response['data']) ? $rpc_response['data'] : null; + + $ud_rpc = $this->rc->get_current_udrpc(); + + $encoded = json_encode($ud_rpc->create_message($rpc_response['response'], $data, true)); + + $this->_load_ud()->close_browser_connection($encoded); + + } + + private function _load_ud() { + global $updraftplus; + return is_a($updraftplus, 'UpdraftPlus') ? $updraftplus : false; + } + + private function _load_ud_admin() { + if (!defined('UPDRAFTPLUS_DIR') || !is_file(UPDRAFTPLUS_DIR.'/admin.php')) return false; + require_once(UPDRAFTPLUS_DIR.'/admin.php'); + global $updraftplus_admin; + return $updraftplus_admin; + } + + public function get_log($job_id) { + + if (false === ($updraftplus = $this->_load_ud())) return $this->_generic_error_response('no_updraftplus'); + + if (!UpdraftPlus_Options::user_can_manage()) return $this->_generic_error_response('updraftplus_permission_denied'); + + if (!preg_match("/^[0-9a-f]{12}$/", $job_id)) return $this->_generic_error_response('updraftplus_permission_invalid_jobid'); + + $updraft_dir = $updraftplus->backups_dir_location(); + $log_file = $updraft_dir.'/log.'.$job_id.'.txt'; + + if (is_readable($log_file)) { + return $this->_response(array('log' => file_get_contents($log_file))); + } else { + return $this->_generic_error_response('updraftplus_unreadable_log'); + } + + } + + public function activejobs_delete($job_id) { + + if (false === ($updraftplus_admin = $this->_load_ud_admin())) return $this->_generic_error_response('no_updraftplus'); + if (!UpdraftPlus_Options::user_can_manage()) return $this->_generic_error_response('updraftplus_permission_denied'); + + $delete = $updraftplus_admin->activejobs_delete((string)$job_id); + return $this->_response($delete); + + } + + public function deleteset($what) { + + if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return $this->_generic_error_response('no_updraftplus'); + if (!UpdraftPlus_Options::user_can_manage()) return $this->_generic_error_response('updraftplus_permission_denied'); + + $results = $updraftplus_admin->delete_set($what); + + $get_history_opts = isset($what['get_history_opts']) ? $what['get_history_opts'] : array(); + + $history = $updraftplus_admin->settings_downloading_and_restoring(UpdraftPlus_Options::get_updraft_option('updraft_backup_history'), true, $get_history_opts); + + $results['history'] = $history; + + return $this->_response($results); + + } + + public function rescan($what) { + + if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return $this->_generic_error_response('no_updraftplus'); + if (!UpdraftPlus_Options::user_can_manage()) return $this->_generic_error_response('updraftplus_permission_denied'); + + $remotescan = ('remotescan' == $what); + $rescan = ($remotescan || 'rescan' == $what); + + $history_status = $updraftplus_admin->get_history_status($rescan, $remotescan); + + return $this->_response($history_status); + + } + + public function get_settings($options) { + if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return $this->_generic_error_response('no_updraftplus'); + + if (!UpdraftPlus_Options::user_can_manage()) return $this->_generic_error_response('updraftplus_permission_denied'); + + ob_start(); + $updraftplus_admin->settings_formcontents($options); + $output = ob_get_contents(); + ob_end_clean(); + + return $this->_response(array( + 'settings' => $output, + 'meta' => apply_filters('updraftplus_get_settings_meta', array()), + )); + + } + + public function test_storage_settings($test_data) { + + if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return $this->_generic_error_response('no_updraftplus'); + + if (!UpdraftPlus_Options::user_can_manage()) return $this->_generic_error_response('updraftplus_permission_denied'); + + ob_start(); + $updraftplus_admin->do_credentials_test($test_data); + $output = ob_get_contents(); + ob_end_clean(); + + return $this->_response(array( + 'output' => $output, + )); + + } + + public function extradb_testconnection($info) { + + if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return $this->_generic_error_response('no_updraftplus'); + + if (!UpdraftPlus_Options::user_can_manage()) return $this->_generic_error_response('updraftplus_permission_denied'); + + $results = apply_filters('updraft_extradb_testconnection_go', array(), $info); + + return $this->_response($results); + + } + + private function _get_vault() { + require_once(UPDRAFTPLUS_DIR.'/methods/updraftvault.php'); + $vault = new UpdraftPlus_BackupModule_updraftvault(); + return $vault; + } + + public function vault_connect($credentials) { + + if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return $this->_generic_error_response('no_updraftplus'); + + if (!UpdraftPlus_Options::user_can_manage()) return $this->_generic_error_response('updraftplus_permission_denied'); + + $results = $this->_get_vault()->ajax_vault_connect(false, $credentials); + + return $this->_response($results); + + } + + public function vault_disconnect() { + + if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return $this->_generic_error_response('no_updraftplus'); + + if (!UpdraftPlus_Options::user_can_manage()) return $this->_generic_error_response('updraftplus_permission_denied'); + + $results = (array)$this->_get_vault()->ajax_vault_disconnect(false); + + return $this->_response($results); + + } + + public function vault_recount_quota() { + if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return $this->_generic_error_response('no_updraftplus'); + + if (!UpdraftPlus_Options::user_can_manage()) return $this->_generic_error_response('updraftplus_permission_denied'); + + $results = $this->_get_vault()->ajax_vault_recountquota(false); + + return $this->_response($results); + } + + public function save_settings($settings) { + + if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return $this->_generic_error_response('no_updraftplus'); + + if (!UpdraftPlus_Options::user_can_manage()) return $this->_generic_error_response('updraftplus_permission_denied'); + + if (empty($settings) || !is_string($settings)) return $this->_generic_error_response('invalid_settings'); + + parse_str($settings, $settings_as_array); + + $results = $updraftplus_admin->save_settings($settings_as_array); + + return $this->_response($results); + + } + + public function s3_newuser($data) { + if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return $this->_generic_error_response('no_updraftplus'); + + if (!UpdraftPlus_Options::user_can_manage()) return $this->_generic_error_response('updraftplus_permission_denied'); + $results = apply_filters('updraft_s3_newuser_go', array(), $data); + + return $this->_response($results); + } + + public function cloudfiles_newuser($data) { + + global $updraftplus_addon_cloudfilesenhanced; + if (!is_a($updraftplus_addon_cloudfilesenhanced, 'UpdraftPlus_Addon_CloudFilesEnhanced')) { + $data = array('e' => 1, 'm' => sprintf(__('%s add-on not found', 'updraftplus'), 'Rackspace Cloud Files')); + } else { + $data = $updraftplus_addon_cloudfilesenhanced->create_api_user($data); + } + + if ($data["e"] === 0) { + return $this->_response($data); + } else { + return $this->_generic_error_response("error", $data); + } + } + + public function get_fragment($fragment) { + + if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return $this->_generic_error_response('no_updraftplus'); + + if (!UpdraftPlus_Options::user_can_manage()) return $this->_generic_error_response('updraftplus_permission_denied'); + + if (is_array($fragment)) { + $data = $fragment['data']; + $fragment = $fragment['fragment']; + } + + $error = false; + switch ($fragment) { + case 's3_new_api_user_form': + ob_start(); + do_action('updraft_s3_print_new_api_user_form', false); + $output = ob_get_contents(); + ob_end_clean(); + break; + case 'cloudfiles_new_api_user_form': + global $updraftplus_addon_cloudfilesenhanced; + if (!is_a($updraftplus_addon_cloudfilesenhanced, 'UpdraftPlus_Addon_CloudFilesEnhanced')) { + $error = true; + $output = 'cloudfiles_addon_not_found'; + } else { + $output = array( + 'accounts' => $updraftplus_addon_cloudfilesenhanced->account_options(), + 'regions' => $updraftplus_addon_cloudfilesenhanced->region_options(), + ); + } + break; + case 'backupnow_modal_contents': + $updraft_dir = $updraftplus->backups_dir_location(); + if (!$updraftplus->really_is_writable($updraft_dir)) { + $output = array('error' => true, 'html' => __("The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option).", 'updraftplus')); + } else { + $output = array('html' => $updraftplus_admin->backupnow_modal_contents()); + } + break; + case 'panel_download_and_restore': + $backup_history = UpdraftPlus_Options::get_updraft_option('updraft_backup_history'); + if (empty($backup_history)) { + $updraftplus->rebuild_backup_history(); + $backup_history = UpdraftPlus_Options::get_updraft_option('updraft_backup_history'); + } + $backup_history = is_array($backup_history) ? $backup_history : array(); + + $output = $updraftplus_admin->settings_downloading_and_restoring($backup_history, true, $data); + break; + case 'disk_usage': + $output = $updraftplus_admin->get_disk_space_used($data); + break; + default: + // We just return a code - translation is done on the other side + $output = 'ud_get_fragment_could_not_return'; + $error = true; + break; + } + + if (empty($error)) { + return $this->_response(array( + 'output' => $output, + )); + } else { + return $this->_generic_error_response('get_fragment_error', $output); + } + + } + +} diff --git a/plugins/updraftplus/central/modules/users.php b/plugins/updraftplus/central/modules/users.php new file mode 100644 index 0000000..c39e4a5 --- /dev/null +++ b/plugins/updraftplus/central/modules/users.php @@ -0,0 +1,358 @@ +_admin_include('user.php'); + $query1 = new WP_User_Query( array ( + 'orderby' => 'ID', + 'order' => 'ASC', + 'role'=> $query["role"], + 'search' => '*' . esc_attr( $query["search"] ) . '*', + )); + $query2 = new WP_User_Query( array ( + 'orderby' => 'ID', + 'order' => 'ASC', + 'role'=> $query["role"], + 'meta_query'=>array( + 'relation' => 'OR', + array( + 'key' => 'first_name', + 'value' => $query["search"], + 'compare' => 'LIKE' + ), + array( + 'key' => 'last_name', + 'value' => $query["search"], + 'compare' => 'LIKE' + ), + ) + )); + + if(empty( $query1->results)){ + $query1->results = array(); + } + if(empty( $query2->results)){ + $query2->results = array(); + } + if(empty($query1->results) && empty($query2->results)){ + return array("message" => "users_not_found"); + } + + $found_users = array_merge($query1->results, $query2->results); + $users = array(); + foreach ($found_users as $new_user) { + $new = true; + foreach ($users as $user) { + if($new_user == $user){ + $new = false; + } + }; + if($new){ + array_push($users, $new_user); + } + }; + + return $users; + } + + private function _calculate_pages($query){ + $per_page_options = array(); + for($i = 1; $i < 6; $i++){ + $value = $i * 10; + array_push($per_page_options, $value ); + }; + + if(!empty($query)){ + + if(!empty($query['search'])){ + return array( + page_count => 1, + page_no => 1 + ); + } + + $pages = array(); + $page_query = new WP_User_Query(array('role'=> $query["role"])); + $page_count = ceil($page_query->total_users / $query["per_page"]); + if($page_count > 1){ + + for($i = 0; $i < $page_count; $i++){ + if( $i + 1 == $query["page_no"]){ + $paginator_item = array( + "value"=>$i+1, + "setting"=>"disabled" + ); + }else{ + $paginator_item = array( + "value"=>$i+1 + ); + } + array_push($pages, $paginator_item); + }; + + if($query["page_no"] >= $page_count){ + $page_next = array( + "value"=>$page_count, + "setting"=>"disabled" + ); + }else{ + $page_next = array( + "value"=>$query["page_no"] + 1 + ); + }; + if($query["page_no"] === 1){ + $page_prev = array( + "value"=>1, + "setting"=>"disabled" + ); + }else{ + $page_prev = array( + "value"=>$query["page_no"] - 1 + ); + }; + + return array( + "page_no" => $query["page_no"], + "per_page" => $query["per_page"], + "page_count" => $page_count, + "pages" => $pages, + "page_next" => $page_next, + "page_prev" => $page_prev, + "total_results" => $page_query->total_users, + "per_page_options" => $per_page_options + ); + + } + else{ + return array( + "page_no" => $query["page_no"], + "per_page" => $query["per_page"], + "page_count" => $page_count, + "total_results" => $page_query->total_users, + "per_page_options" => $per_page_options + ); + } + } + else{ + return array( + "per_page_options" => $per_page_options + ); + } + } + + public function check_username($username){ + $this->_admin_include('user.php'); + if(username_exists($username)){ + $result = array("valid"=>false, "message"=>'username_exists'); + return $this->_response($result); + } + if(!validate_username($username)){ + $result = array("valid"=>false, "message"=>'username_invalid'); + return $this->_response($result); + } + + $result = array("valid"=>true, "message"=>'username_valid'); + return $this->_response($result); + } + + public function check_email($email){ + $this->_admin_include('user.php'); + + if (is_email($email) === false){ + $result = array("valid"=> false, "message"=>'email_invalid'); + return $this->_response($result); + } + + if (email_exists($email)){ + $result = array("valid"=> false, "message"=>'email_exists'); + return $this->_response($result); + } + + $result = array("valid"=> true, "message"=>'email_valid'); + return $this->_response($result); + } + + public function get_users($query) { + $this->_admin_include('user.php'); + + $users; + + if(!empty($query["search"])){ + $users = $this->_search_users($query); + } + else{ + if(empty($query["per_page"])){ $query["per_page"] = 10; } + if(empty($query["page_no"])){ $query["page_no"] = 1; } + if(empty($query["role"])){ $query["role"] = ""; } + + $user_query = new WP_User_Query(array( + 'orderby' => 'ID', + 'order' => 'ASC', + 'number' => $query["per_page"], + 'paged'=> $query["page_no"], + 'role'=> $query["role"] + )); + + if(empty( $user_query->results)){ + $result = array("message"=>'users_not_found'); + return $this->_response($result); + } + + $users = $user_query->results; + } + + foreach ( $users as &$user) { + $user_object = get_userdata($user->ID); + if(method_exists($user_object, 'to_array')){ + $user = $user_object->to_array(); + $user["roles"] = $user_object->roles; + $user["first_name"] = $user_object->first_name; + $user["last_name"] = $user_object->last_name; + $user["description"] = $user_object->description; + }else{ + $user = $user_object; + } + } + + $result = array( + "users"=>$users, + "paging" => $this->_calculate_pages($query) + ); + + + return $this->_response($result); + } + + public function add_user($user){ + $this->_admin_include('user.php'); + + if(!current_user_can('create_users') && !is_super_admin()){ + $result = array("error" => true, "message" => "user_create_no_permission"); + return $this->_response($result); + } + if ( is_email($user["user_email"]) === false){ + $result = array("error" => true, "message" => "email_invalid"); + return $this->_response($result); + } + if (email_exists( $user["user_email"] )){ + $result = array("error" => true, "message" => "email_exists"); + return $this->_response($result); + } + if(username_exists($user["user_login"])){ + $result = array("error" => true, "message" => "username_exists"); + return $this->_response($result); + } + if(!validate_username($user["user_login"])){ + $result = array("error"=>true, "message"=>'username_invalid'); + return $this->_response($result); + } + + $user_id = wp_insert_user( $user ) ; + if($user_id > 0){ + $result = array("error" => false, "message"=>"user_created_with_user_name", "values" => array($user['user_login'])); + return $this->_response($result); + }else{ + $result = array("error" => true, "message"=>"user_create_failed", "values" => array($user)); + } + return $this->_response($result); + } + + /** + * [delete_user - UCP: users.delete_user] + * + * This function is used to check to make sure the user_id is valid and that it has has user delete permissions. + * If there are no issues, the user is deleted. + * + * current_user_can: This check the user permissons from UCP + * get_userdata: This get the user data on the data from user_id in the $user_id array + * wp_delete_user: Deleting users on the User ID (user_id) and, IF Specified, the Assigner ID (assign_user_id). + * + * @param [type] $user_ids [description] THis is an Array of user_id and assign_user_id sent over from UpdraftCentral + * @return [type] Array [description] This will send back an error array along with message if there are any issues with the user_id + */ + public function delete_user($user_ids){ + $this->_admin_include('user.php'); + + if(!current_user_can('delete_users') && !is_super_admin()){ + $result = array("error" => true, "message" => "user_delete_no_permission"); + return $this->_response($result); + } + if ( get_userdata( $user_ids["user_id"] ) === false ) { + $result = array("error" => true, "message"=>"user_not_found"); + return $this->_response($result); + } + + if(wp_delete_user($user_ids["user_id"], $user_ids["assign_user_id"])){ + $result = array("error" => false, "message"=>"user_deleted"); + }else{ + $result = array("error" => true, "message"=>"user_delete_failed"); + } + return $this->_response($result); + } + + public function edit_user($user){ + $this->_admin_include('user.php'); + + if(!current_user_can('edit_users') && !is_super_admin() && $user["ID"] !== get_current_user_id()){ + $result = array("error" => true, "message" => "user_edit_no_permission"); + return $this->_response($result); + } + + if ( get_userdata( $user["ID"] ) === false ) { + $result = array("error" => true, "message"=>"user_not_found"); + return $this->_response($result); + } + if($user["ID"] == get_current_user_id()){ + unset($user["role"]); + } + + /* Validate Username*/ + if(!validate_username($user["user_login"])){ + $result = array("error"=>true, "message"=>'username_invalid'); + return $this->_response($result); + } + /* Validate Email if not the same*/ + + $remote_user = get_userdata($user["ID"]); + $old_email = $remote_user->user_email; + + if($user['user_email'] !== $old_email){ + if (is_email($user['user_email']) === false){ + $result = array("error"=> true, "message"=>'email_invalid'); + return $this->_response($result); + } + + if (email_exists($user['user_email'])){ + $result = array("error"=> true, "message"=>'email_exists'); + return $this->_response($result); + } + } + + + $user_id = wp_update_user( $user ); + if ( is_wp_error( $user_id ) ) { + $result = array("error" => true, "message" => "user_edit_failed_with_error", "values" => array($user_id)); + } else { + $result = array("error" => false, "message" => "user_edited_with_user_name", "values" => array($user["user_login"])); + } + return $this->_response($result); + } + + public function get_roles(){ + $this->_admin_include('user.php'); + $roles = array_reverse( get_editable_roles() ); + return $this->_response($roles); + } + + public function get_user_filters(){ + $this->_admin_include('user.php'); + $result = array( + "roles" => array_reverse(get_editable_roles()), + "paging" => $this->_calculate_pages(null), + ); + return $this->_response($result); + } +} diff --git a/plugins/updraftplus/changelog.txt b/plugins/updraftplus/changelog.txt new file mode 100644 index 0000000..c641d73 --- /dev/null +++ b/plugins/updraftplus/changelog.txt @@ -0,0 +1,1687 @@ +This file contains changelog entries that are not contained in the main readme.txt file (that file contains the newest entries). + += 1.12.5 - 08/Apr/2016 = + +* TWEAK: (Paid versions) - tweak the updater class so that it sends the information that updraftplus.com needs in order to correctly advise about language pack update availability. (If you are continuously seeing the same language pack update offered, then this may continue for a few more hours - please be patient!). +* TWEAK: Detect another case and deal with an HTTP 413 response when sending chunked data on a direct site-to-site migration + += 1.12.4 - 07/Apr/2016 = + +* FEATURE: Faster uploads to Dropbox, via adapting to network conditions: https://updraftplus.com/faster-dropbox-uploads/ +* FEATURE: (Paid versions) Plugin now no longer bundles all translations - instead, WP's mechanism for downloading single translations, as/when needed, is used (reduces on-disk size by 12MB=36%)). +* FIX: Deal with some database encryption phrases with special characters that were incorrectly processed +* FIX: Deal with an error in the advanced retention rules processing code, that could lead to keeping the wrong backup set +* FIX: Fix an unescaped string which could cause a JavaScript notice on the UD settings page in some non-English translations +* FIX: The minimum allowed value for the split size was not previously taking effect when saving settings +* TWEAK: When connection to an updraftplus.com UpdraftCentral dashboard, allow use of the alternative connection method +* TWEAK: Suppress some known deprecation warnings on PHP 7 +* TWEAK: Show OpenSSL/Mcrypt info in the log + debug info +* TWEAK: Detect a completed upload to Dropbox masked by a race event from the WP scheduler +* TWEAK: The drop-down in the 'Migrate' dialog will now update on a rescan without needing a page reload +* TWEAK: (Paid versions) Update bundled plugin updater class (Yahnis Elsts) to version 3.0 +* TWEAK: Add woocommerce_sessions to the list of tables of transient data +* TWEAK: When saving settings, if invalid input is adjusted, this will be reflected back to the UI without a page load (not on all elements) +* TWEAK: When saving settings, the schedule was written twice on non-multisite installs + += 1.12.2 - 30/Mar/2016 = + +* TWEAK: When testing Amazon S3 bucket accessibility, slightly improve one of the corner-case checks +* TWEAK: When creating an encryption key for direct Migration, or UpdraftCentral, allow the user to choose their key size (this helps with PHP installs lacking both OpenSSL and GMP, in which case key creation can be really slow) +* TWEAK: Detect another case and deal with an HTTP 413 response when sending chunked data on a direct site-to-site migration + += 1.12.1 - 24/Mar/2016 = + +* TWEAK: Update the bundled remote communications library - needed for some UpdraftCentral users + += 1.12.0 - 23/Mar/2016 = + +* FEATURE: Compatible with the forthcoming (very soon!) UpdraftCentral remote control panel +* COMPATIBILITY: Tested + supported on the upcoming WordPress 4.5 +* FIX: On some setups, if no remote storage was configured (not recommended), then old backups were not being pruned +* FIX: Make FTP active mode (very rarely seen) work correctly again +* TWEAK: Added a hint to FTP users who appear to be firewalled on only the data channel when attempting to use encrypted FTP +* TWEAK: Improve detection of the WordPress scheduler duplicating periodic events when the server is overloaded +* TWEAK: Simplify main tab layout upon first use +* TWEAK: Add some previously unbundled licence files +* TWEAK: Prevent a couple of PHP notices being logged when running a manual search/replace +* TWEAK: Add a filter to allow more over-riding of pruning + += 1.11.29 - 27/Feb/2016 = + +* FIX: When saving settings on multisite, some connections to remote storage could drop and need to be re-made +* FIX: Fix an inoperative button in the Clone dialog box +* FIX: Fix an error upon automatic backups (Premium) in 2.11.28 +* TWEAK: Updated readme to reflect > 700,000 active sites +* TWEAK: When cloning a site and mod_rewrite is not available, give a warning pre-restore +* TWEAK: Options saving on multisite is now much more efficient (in terms of database requests required) +* TWEAK: Improve the scheduling algorithm in the case of hosts that allow very long runs times, and a network outage on the cloud storage +* TWEAK: When connecting to updraftplus.com to claim a licence (paid versions), use the newer JSON-based protocol +* TWEAK: Many and various internal improvements to structure of the admin page HTML, CSS and JS +* TWEAK: The boxes for adding extra addresses for reporting, and extra DBs, now fade in + += 1.11.27 - 17/Feb/2016 = + +* FEATURE: Automatic backups can take place before updates commissioned via WordPress.Com/JetPack remote site management (requires a not-yet-released version of JetPack - all current releases are insufficient, so please don't file reports about this yet) +* FIX: Fixed a further logic error in the advanced backup retention options, potentially relevant if you had more than one extra rule, affecting the oldest backups +* TWEAK: Resolve issue on some sites with in-dashboard downloads being interfered with by other site components +* TWEAK: Auto-backups now hook to a newly-added more suitable action, on WP 4.4+ (https://core.trac.wordpress.org/ticket/30441) +* TWEAK: Make WebDAV library not use a language construct that's not supported by HHVM +* TWEAK: Change options in the "Backup Now" dialog as main settings are changed +* TWEAK: Show the file options in the "Backup Now" dialog if/when alerting the user that they've chosen inconsistent options +* TWEAK: When pruning old backups, save the history to the database at least every 10 seconds, to help with sites with slow network communications and short PHP timeouts + += 1.11.26 - 13/Feb/2016 = + +* TWEAK: Prevent HTTP 500 download errors on some very large file/hosting setups +* TWEAK: A tiny number of users had a badly laid-out settings screen until they refreshed their browser cache. This release prevents that. + += 1.11.24 - 10/Feb/2016 = + +* FIX: Fixed further logic errors in the advanced backup retention options, potentially relevant if you had more than one extra rule +* TWEAK: Saving of settings is now done over AJAX (i.e. without a page reload) +* TWEAK: In-dashboard downloads now process the HTTP Range: header, allowing resumption of failed downloads via the browser +* TWEAK: Tweak 'Existing Backups' table CSS, to allow more entities per row +* TWEAK: Warn copy.com users of Barracuda ending the service - https://techlib.barracuda.com/CudaDrive/EOL +* TWEAK: Rename the 'hidden' CSS class, to prevent clashes with other plugins/themes which load their CSS code onto UD's page (which they shouldn't be doing) +* TWEAK: Fix newsletter sign-up link +* TWEAK: Log and triple-click summary now mentions the total size of the backup (i.e. total of the compressed backup set) +* TWEAK: Try to detect a very rare case of recoverable database read failure, and schedule a re-try +* TWEAK: Suppress unnecessary warning message when Dropbox account info checking fails +* TWEAK: Attempt to restart a large OneDrive upload in a particular case seen when OneDrive's end seems to get into confusion about state +* TWEAK: Various bits of internal re-factoring to support future improvements + += 1.11.23 - 26/Jan/2016 = + +* FIX: When migrating a sub-folder based multisite into a non-root install with different relative path to the source multisite (I can't think of any good reasons to do this), the search/replace could leave sub-sites unreachable without manual correction +* FIX: Logic errors in the advanced backup retention options could lead to the oldest backups being deleted prematurely, and some backups not being deleted when they were overdue for deletion +* FIX: Amazon S3 bucket creation wizard (in the S3 enhanced add-on) was not honouring the chosen region for new buckets +* FIX: Upon restoration over an existing site, inactive plugins could remain post-restore (bug introduced in 1.11.20) +* TWEAK: Various internal re-organisations, to improve modularity/re-use of the code +* TWEAK: Internal CSS re-organisation to make future layout changes easier +* TWEAK: The "stop" link in the backup progress indicator now halts the backup asap, instead of at the next scheduled resumption +* TWEAK: Clarify the course of action needed if you attempt a Dropbox backup without Curl +* TWEAK: Add support for the new Asia Pacific (Seoul) region to Amazon S3 +* TWEAK: Make the automatic backup option box appear on the updates page for users who can update plugins or themes (not just core - previously it was assumed that these would always go together in the real world, but some managed hosts are now removing the core update capability from the default admin user, whilst leaving the others) +* TWEAK: Change default zip split size to 400Mb on new installs +* TWEAK: Clean up use of composer, to conform to proper usage standards, and update to current version (to avoid causing a problem for plugins using PSR-4 autoloaders) +* TWEAK: Provide direct links to cart when choosing UpdraftPlus Vault storage +* TWEAK: Add debug.log to the default exclusions in wp-content (when people leave debug logging on and forget, it can get huge) +* TWEAK: On multisite, make sure that the site/blogs tables are placed early in the backup (assists with quickly scanning backup info) +* TWEAK: Update to phpseclib 1.0.1 +* TWEAK: Prevent a PHP notice when using SCP +* TWEAK: Add new termmeta table to the default list of core tables (which is usually automatically detected) + += 1.11.21 - 28/Dec/2015 = + +* TWEAK: If there's a problem connecting to UpdraftPlus Vault, in some situations the information on the cause was not easily readable +* TWEAK: Slightly more logging on failed OneDrive operations, to aid problem-solving +* TWEAK: Add wysija_email_user_stat to the list of potentially huge non-critical tables (which can get skipped in an emergency) +* FIX: Package Pear/Exception.php, so that servers without it already can use Microsoft Azure blob storage +* FIX: Prevent PHP fatal error on admin area in some restore scenarios + += 1.11.20 - 21/Dec/2015 = + +* FEATURE: WordPress multisite backup administrators can now selectively restore data from a chosen site, instead of restoring the entire WordPress install - https://updraftplus.com/selectively-restoring-on-wordpress-multisite/ (requires WP 3.5+, UpdraftPlus Premium) +* FEATURE: Import a WordPress single-site backup into WordPress multisite, as a new site (requires WP 3.5+, UpdraftPlus Premium) - https://updraftplus.com/information-on-importing-a-single-site-wordpress-backup-into-a-wordpress-network-i-e-multisite/ +* FIX: Properly encode folder paths with Copy.Com, allowing some previously prevented folder names to work +* FIX: In-dashboard decryption using some decryption keys with URL-encodable characters failed +* FIX: Prevent PHP fatal error on settings page on a buggy old PHP version (5.2.10) when Google Cloud storage add-on not present +* FIX: When using multiple remote storage providers, a race condition could lead to some old backups not being deleted on the storage not uploaded to last +* FIX: Views are now placed after tables in the database backup +* FIX: In-page uploader widget was not working on sub-domain based multisites in some dashboard access scenarios +* FIX: Package Net/URL2 (PEAR), so that servers without it already can use Microsoft Azure blob storage +* TWEAK: Upgrade Microsoft OneDrive API usage to latest version +* TWEAK: Automatic backups are now hooked into the themes page in the network admin on WP multisite installs +* TWEAK: Dashboard messages were not being clearly shown when trying to use UpdraftPlus Vault without PHP Curl available +* TWEAK: Protect against other plugins loading incompatible Google SDKs when Google Cloud is being used +* TWEAK: When trying to use S3, DreamObjects or UpdraftPlus Vault without PHP Curl available, make the cause of the problem more obvious +* TWEAK: When sending data to remote site, keep re-trying on receipt of an HTTP 413 (request entity too large) down to 64Kb (instead of previous 128Kb) - a webserver was seen in the wild configured at this level +* TWEAK: Detect the WordPress scheduler invoking a scheduled backup multiple times, in some cases where the existing semaphore lock wasn't helping (because the backup already finished, or the WP scheduler invoked multiple instances of the same event minutes apart - apparently possible when very heavily overloaded) +* TWEAK: Detect an inconsistent semaphore locking state, and fix it (apparently only possible upon unexpected server crash) +* TWEAK: Provide a button to cancel (not just continue) an interrupted restore +* TWEAK: Work around buggy Ubuntu PHP versions - https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1315888 +* TWEAK: Make sure that backup options get passed on with continuation data, when resuming an interrupted restore +* TWEAK: Catch a few untranslated strings (in the decryptor widget for encrypted backups) +* TWEAK: Log more information if a connection to UpdraftPlus Vault fails +* TWEAK: The internal info shown when triple-clicking a backup set's date had messed-up formatting + += 1.11.18 - 25/Nov/2015 = + +* FEATURE: On hosts with low timeouts that kill restore operations half-way though, provide an obvious button on the dashboard to immediately resume; see: https://updraftplus.com/resuming-interrupted-restores/ +* FEATURE: Usability improvements and ability to select file components in the 'Backup Now' dialog - https://updraftplus.com/improvements-to-the-backup-now-dialog-box/ +* FEATURE: Full support for Microsoft Azure blob storage (UpdraftPlus Premium) +* FEATURE: Allow all files beginning with a defined prefix to be excluded from the backup by inputting (for example) prefix:someprefix_,prefix:someotherprefix- in your exclusion settings - see: https://updraftplus.com/faqs/how-can-i-exclude-particular-filesdirectories-from-the-backup/ +* FEATURE: UpdraftPlus Premium can now restore backups created by "Dropbox Backup" by WPAdm +* COMPATIBILITY: Tested/supported on the forthcoming WordPress 4.4 +* TWEAK: Faster zip file creation on PHP 7 with ZipArchive - https://updraftplus.com/faster-zip-file-creation-with-the-php-7-zip-engine/ +* TWEAK: Improve settings tab: remove headings, tweak a few wordings, move "remote storage" section further up +* TWEAK: Introduce UPDRAFTPLUS_SET_TIME_LIMIT internal constant +* TWEAK: Quote the table name passed to MySQL in DESCRIBE statement +* TWEAK: Prevent a PHP notice being logged during initial updates connection, and another when restoring third-party databases +* TWEAK: Style previously unstyled button in some auto-backup scenarios +* FIX: A few settings were not being deleted by the "Wipe Settings" button. +* FIX: Importer would not correctly handle third-party backups where the files and zip were both in zip format, separately, and where they were restored together +* FIX: With multi-archive backup sets, files in the top level of a backup of WP core or 'others' were not restored by an in-dashboard restore if they over-wrote an existing non-identical file if they were not in the first archive + += 1.11.17 - 13/Nov/2015 = + +* FIX: Resolve a conflict with "Simple Calendar" (formerly "Google Calendar Events") since their re-written 3.0 release, when using Google Drive storage + += 1.11.15 - 28/Oct/2015 = + +* FEATURE: Google Cloud Storage support (UpdraftPlus Premium) +* FIX: Automatic backups of WordPress core prior to WP core upgrade in recent versions were including non-WP core files +* FIX: OwnCloud 8.1's WebDAV server responds differently, breaking UD's communications: restore the ability to back up to OwnCloud WebDAV +* TWEAK: Allow use of the Meta key for selecting multiple backup sets (as well as Control) +* TWEAK: When sending backup data directly site-to-site (when migrating), handle the (very rare) case where a remote server complains of the chunk size after accepting previous chunks of the same size +* TWEAK: Add message to final log line when sending backup set directly to a remote site, reminding the user of what to do next. +* TWEAK: Tweak zip-splitting algorithm, to prevent delayed split on resumption when final file in the last-created zip is gigantic +* TWEAK: By default, exclude directories that appear to be the UpdraftPlus internal directory of a site stored in a sub-directory when backing up WordPress core +* TWEAK: In the debugging output, show more clearly when Curl is not installed +* TWEAK: Remove trailing slashes from what WP returns as the uploads/plugins directories, in case the user has specified a manual directory over-ride and erroneously added a trailing slash +* TWEAK: Replace all remaining http:// links to updraftplus.com with https:// +* TWEAK: Raise some of the Google Drive network timeouts +* TWEAK: Suppress an internal PHP notice when pruning backups in some circumstances +* TRANSLATIONS: Various updated translations + += 1.11.12 - 29/Sep/2015 = + +* FEATURE: More sophisticated rules for retention/deletion (UpdraftPlus Premium) - https://updraftplus.com/more-sophisticated-backup-retention/ +* FEATURE: Delete multiple backups at once - https://updraftplus.com/deleting-multiple-backups/ +* FEATURE: When choosing a monthly backup, you can now choose the starting date (e.g. choose 17th, not just choose the next week-day, e.g. next Monday) +* FEATURE: You can exclude files with any particular extension by using the constant UPDRAFTPLUS_EXCLUDE_EXTENSIONS (comma-separate different extensions), or by inputting (for example) ext:.zip,ext:.mp4 in your exclusion settings. +* FEATURE: Tested and supported on the forthcoming PHP 7.0 +* FIX: SFTP uploads could hang after finishing, if more than one attempt was needed to upload the file +* FIX: Stop causing JavaScript errors on WordPress 3.2 on the plugins page +* TWEAK: UI improvement when choosing multiple storage options - https://updraftplus.com/a-prettier-way-to-choose-remote-storage-options/ +* TWEAK: The storage selection drop-down (free version) now has icons to make it easier on the eye +* TWEAK: Use UpdraftPlus Vault logo +* TWEAK: Replace target="_new" with target="_blank" when opening new browser ports, to be more standards-compliant +* TWEAK: Tweak the auto-split algorithm again to catch another case where it would have been better to split in a low-resource situation +* TWEAK: When checking the backup integrity, allow for a multisite to not have a root options table; check sitemeta instead (unlikely, but theoretically possible) +* TWEAK: Raise default Google Drive network timeout from 15 seconds - it's too possible to hit this on a slow uplink (e.g. congested ADSL) +* TWEAK: Upgrade the bundled Google SDK to the most recent release (1.1.4) +* TWEAK: Add previously-untranslated string +* TWEAK: Suppress a PHP notice relating to a constant that needed quoting +* TWEAK: Turn off reporting of PHP deprecation conditions if using phpseclib on PHP 7 (can break communications - phpseclib uses PHP4-style constructors) +* TRANSLATIONS: Various updated translations + += 1.11.9 - 04/Sep/2015 = + +* FIX: Dropbox introduced an un-documented, un-announced change to their server, which caused new site authentications in UpdraftPlus to no longer work. Now fixed with this release. +* FIX: If backing up multiple extra directories under "more files", if large directories required a resumption, then inclusion of the files multiple times in the backup was possible. +* TWEAK: Tweak the auto-split algorithm to not avoid firing in a particular case (that relies on a sequence of unlikely I/O events, seen on GoDaddy) if there's no resumption scheduled +* TWEAK: Add mysql.sql to the (changeable) default configuration for excludes from wp-content - on WP Engine this is an unreadable file that they create that thus produces a backup warning +* TWEAK: Add a dashboard warning (+ link to documentation) if UD appears to be incompletely installed +* TWEAK: Add UPDRAFTPLUS_WEBDAV_NEVER_CHUNK constant for WebDAV servers that return the wrong error code when chunking fails +* TWEAK: Introduce a UPDRAFTPLUS_REMOTESEND_DEFAULT_CHUNK_BYTES constant allowing the over-riding of the remote-send (Migrator) starting chunk size in wp-config.php (expert users) +* TWEAK: Add CSS classes to dashboard updates notices, so that people can hide them more easily if they wish +* TWEAK: If gzopen() is disabled, then test binzip without trying to use PclZip to verify the results +* TWEAK: Add work-around for PHP bug https://bugs.php.net/bug.php?id=62852 + += 1.11.6 - 22/Aug/2015 = + +* FIX: SFTP was not working in 1.11.4 for some servers (related to phpseclib library update and sources of random data) +* FIX: 1.11.5 release had wrong version number in header for paying users; corrected with fresh release + += 1.11.4 - 19/Aug/2015 = + +* FIX: Perform previously missing tweak on the database after restoring a multisite backup to an install with a different table prefix, which inhibited the ability to create new users on the main site in a network. +* TWEAK: Remove an inefficiency when examining files to prune from Google Drive, reducing the amount of time needed. +* TWEAK: Show a warning if UpdraftPlus's directory in wp-content/plugins has been manually renamed to include a space, which WordPress does not support +* TWEAK: Skip search/replacing of the 'guid' column in the posts table when migrating (improves performance - and prevents possible re-appearances of blog articles in peoples' feed readers if double-migrating) +* TWEAK: Upgraded the bundled phpseclib Math, Net and File libraries to current versions (1.0 branch) +* TWEAK: Prevent PHP notice in log file when deleting FTP backup from dashboard +* TRANSLATIONS: Updated translations, including Greek + += 1.11.3 - 13/Aug/2015 = + +* FIX: Fix access to S3 for PHP 5.2 users using buckets in the US-WEST-1 region +* FIX: Fix access to UpdraftPlus Vault for some PHP 5.2 users + += 1.11.2 - 11/Aug/2015 = + +* TWEAK: Handle the results when someone with no UpdraftPlus Vault quota attempts to connect more gracefully + += 1.11.1 - 10/Aug/2015 = + +* FEATURE: UpdraftPlus Vault storage - simple to set up storage from your trusted provider: https://updraftplus.com/landing/vault - with 1Gb of free storage for UpdraftPlus Premium customers ( https://updraftplus.com/shop/updraftplus-premium/ ) - and more storage available for anyone to purchase. All other storage options (Dropbox, Google Drive, etc.) remain available, of course! +* FEATURE: S3 enhanced wizard now allows the user to optionally deny the new Amazon Web Services IAM user download and/or delete permissions, for an even more secure setup (at the cost of some convenience - you will need to download/restore/delete S3 backups outside of UpdraftPlus). +* FEATURE: Amazon S3 in UpdraftPlus Premium now supports optional server-side encryption +* FEATURE: An "UpdraftPlus" menu now appears on the WP admin bar, allowing quick access. +* COMPATIBILITY: Tested and compatible with WordPress 4.3 +* SPEED: For users' whose backups are created with a zip binary (the default engine, where available), CPU usage + zip creation times have been significantly reduced +* SPEED: For users cloning a website with a large number of users and a changed table prefix, a long and slow series of SQL operations has been replaced with a single fast one +* FIX: The chunk-uploading algorithm for Copy.Com could unnecessarily upload the same chunks multiple times. We have not had any reports, but we believe it's also theoretically possible that a Copy.Com upload could have been corrupted by the same issue, so recommend updating for all Copy.Com users. +* FIX: Fix issue with site cloning whereby on sites with very large numbers of entries in the postmeta table that needed search/replacing, some could be omitted (in the case seen, the table had >600,000 entries) +* FIX: Saving the settings immediately after authenticating with Copy.Com resulted in being redirected to WP's page for all settings. +* FIX: If PHP was killed by the webserver during the process of pruning old backups, then this would not be retried until the next backup, thus potentially leaving more backups than desired around in remote storage in the meanwhile. +* FIX: Log files sometimes failed to mention the MySQL version +* TRANSLATIONS: Various updated translations - thanks to our translators +* TWEAK: When choosing multiple remote storage options (Premium), these are now stacked via tabs, instead of vertically as before +* TWEAK: More help for enormous sites on badly resourced web hosting: part of the enumeration of uploads needing backing up is now cached, allowing more to be time when time limits are short +* TWEAK: Secret credentials (e.g. S3 secret key) in the admin area are now starred (as explained in our long-standing FAQ, this does nothing to protect against malicious WordPress co-admins on your site - https://updraftplus.com/faqs/in-the-administration-section-it-shows-my-amazon-ftp-etc-passwords-without-using-stars-is-this-safe/ - but at least we won't get asked about it so many times!). +* TWEAK: Provide more direct help to the user if they are hosting with Strato and get the 'File Size Limit Exceeded' zip message +* TWEAK: When migrating data directly to a remote site, if the remote site returns a 413 HTTP code ("Request Entity Too Large"), re-try using a smaller chunk size +* TWEAK: Log when about to begin encryption of a database file (allowing the progress to be monitored more easily if there's a problem) +* TWEAK: Detect a further case of an incompatible database (that is from a remote source and uses MySQL features not present on the destination server) and warn before attempting to import. +* TWEAK: Make the error message shown if trying to restore an incompatible database (that is from a remote source and uses MySQL features not present on the destination server) clearer. +* TWEAK: If the user uses "Backup Now" before saving their settings, warn them that the unsaved settings changes won't apply to this backup +* TWEAK: Only warn about very large files found once for each file (rather than once per resumption) +* TWEAK: Add the UPDRAFTPLUS_GOOGLEDRIVE_DISABLEGZIP constant - define it as true to work-around broken HTTP setups (possibly broken outgoing proxy?) when accessing Google Drive +* TWEAK: When claiming an add-on (paid versions), the user's updraftplus.com password will automatically be forgotten once it is no longer needed +* TWEAK: Handle the case of the user typing in an invalid number of backups to retain more elegantly +* TWEAK: No longer require the php-mcrypt module for Dropbox +* TWEAK: Also retry a smaller chunk size if it looks like mod_security unhelpfully replaced a 413 HTTP code with a 200 success message despite the operation actually failing for this reason, or if it looks like sending is just timing out before the PHP timeout (so that we don't get notified). +* TWEAK: Added new CA root certificates to store (http://curl.haxx.se/ca/cacert.pem) +* TWEAK: If the Migrator's direct-send component drops its chunk size, then store this information so that it doesn't have to go through the cycle of finding the best chunk size the next time. +* TWEAK: Added UPDRAFTPLUS_IPV4_ONLY constant to prevent use of IPv6 (currently implemented by Google Drive only) +* TWEAK: Deal with a case where the web host appears to be losing disk I/O near kill time, despite later database writes going through (so, the order of operations was insufficient to guarantee what had been completed). This issue was only cosmetic - backup sets were intact (hence "tweak", not "fix") +* TWEAK: Increase HTTP timeout for remote site-to-site operations +* TWEAK: Don't cause the 'debug' tab to abort rendering if the web host has disabled the gzopen() function (which is an odd/pointless thing to do) +* TWEAK: Resolve PHP 'strict standards' coding internal notice in Google Drive module + += 1.10.3 - 2015-06-09 = + +* FEATURE: Migration component can now send backup data directly from one WP site to another - https://updraftplus.com/shop/updraftplus-premium/ +* FEATURE: Support active mode FTP servers (extremely rare) +* FIX: The error message when choosing no components to restore was empty +* FIX: Restore ability to run on WordPress 3.5 (actually fixed in downloads of 1.10.1 after 2015-05-13) +* FIX: Some automatic pre-upgrade backups were not marked internally as such, leading UD to delete the oldest scheduled backup prematurely backups prematurely +* TWEAK: Reduce HTTP round-trips when checking presence + downloading backup archives in a restore/migrate operation +* TWEAK: Alert the user earlier if they're trying to use a database with a character set not supported by MySQL +* TWEAK: Use separate internal jobs for separate downloads, and thus avoid race conditions when updating job data (symptom: download widgets that don't show current information) +* TWEAK: Add constant UPDRAFTPLUS_SFTP_TIMEOUT allowing users to over-ride (via wp-config.php) the default SFTP timeout (default now: 15 seconds). +* TWEAK: Make Copy.Com filter out non-backups from remote file listings at an earlier stage +* TWEAK: Log more information when a curl error occurs when getting a OneDrive access token +* TWEAK: Code re-arrangement in OneDrive library to deal with sites using the obsolete PHP safe_mode +* TWEAK: Clearer message for users whose access to paid plugin updates has expired (paid versions) +* TWEAK: Improve detection of started pre-upgrade automatic backups in case of webserver misbehaviour +* TWEAK: Fix untranslated message when confirming the wiping of settings +* TWEAK: Replace more non-SSL links to updraftplus.com with SSL links +* TWEAK: Use a POST instead of a GET during one of the restore sub-stages (avoids a false positive on some mod_security setups) +* TWEAK: Improve backup-file-naming routine to reduce the times when no ASCII name can be found (ASCII is preferred as not all cloud storage methods will accept arbitrary characters in filenames) +* TWEAK: Don't keep a log file (unless debug mode is on) for scheduled tasks that result in the result that nothing needs backing up +* TWEAK: Remove cache files from Cherry Framework child themes upon migration (framework misbehaves if cache files are present after URL change) + += 1.10.1 - 2015-05-12 = + +* FEATURE: Microsoft OneDrive support (Premium version) - full support (including chunked/resumable uploading and downloading) +* FEATURE: Allow prevention of backup of unwanted tables, via a filter; see: https://updraftplus.com/faqs/how-can-i-exclude-a-specific-table-from-the-backup/ +* FIX: Restore window would not open if date contained a single quote character in it (which was possible only in some languages) +* FIX: Restore the ability of PHP installations (< 1%) without curl to use Google Drive (broke when Google introduced a new SSL certificate at their end which PHP couldn't handle properly without extra help). +* TWEAK: Add woocommerce_order_items and relevanssi_log to the list of potentially huge tables that won't need search/replacing +* TWEAK: Add link to admin email setting and fix broken link to reporting add-on in free version +* TWEAK: Provide more direct help for paid users getting blocked by the security shield when connecting for updates access +* TWEAK: Small tweak in zip-splitting algorithm if it looks likely that there are insufficient resources with no further resumptions yet scheduled +* TWEAK: "Migrate" dialogue, when the Migrator is installed, now contains a widget to use directly (instead of just directing to other route) +* TWEAK: Ask user to confirm if they navigate away from the settings page with unsaved changes +* TWEAK: Replace some non-SSL links to updraftplus.com with SSL links, and replace all non-SSL readme links +* TWEAK: Add UPDRAFTPLUS_DBSCAN_TIMEOUT constant to control how much time is allowed for scanning database, and make the default vary instead of constant (will help users with absolutely enormous databases). +* TWEAK: Provide clearer guidance to users with a wrong updraftplus.com password entered for updates +* TWEAK: When cloning a site with Jetpack, automatically clear Jetpack invalid connection status +* TWEAK: Prevent some old admin notices from being repeated when saving settings + += 1.9.64 - 2015-04-20 = + +* FEATURE: (Premium) Added wizard to make it easier to create limited-access AWS users (requires PHP 5.3.3) +* SECURITY: Fix non-persistent back-end XSS vulnerability, reported by Sucuri - https://updraftplus.com/new-security-vulnerability-found-across-significant-numbers-of-wordpress-plugins-including-updraftplus/ +* FIX: Fix failure to access some files (e.g. for downloading or deleting) in Google Drive folders that contained >100 UpdraftPlus backup archives (thanks to IanUK for his help) +* TWEAK: Amazon S3 reduced redundancy storage (a feature of UpdraftPlus Premium) now requires use of PHP 5.3.3 or later. +* TWEAK: Various fixes to bring automatic backups code up to date with WP 4.2 release candidate 1 (there were some changes since beta 3, which worked since UD 1.9.62) +* TWEAK: Update to version 2.0 of plugin updater class (https://github.com/YahnisElsts/plugin-update-checker) - necessary on WP 4.2 to prevent shiny updates after the first failing when 3rd party plugins exist, and to suppress a PHP notice on the plugins page. +* TWEAK: Add wp_rp_tags to the list of potentially huge tables that won't need search/replacing +* TRANSLATION: New Slovenian translation, courtesy of Clav Icula + += 1.9.63 - 2015-04-03 = + +* TWEAK: Revert to previous global SSL CA bundle: it seems Amazon S3 still has servers with 1024-bit SSL certificates + += 1.9.62 - 2015-04-01 = + +* FEATURE: Automatic backups now integrate with the forthcoming WP 4.2's "shiny plugin updates" +* COMPATIBILITY: Tested and marked compatible with the forthcoming WordPress 4.2 (tested up to beta 3) +* FIX: Fix regression in 1.9.60 for corner-case of S3 users with no permission to check their bucket's location (but permission to write to it). +* TWEAK: Make "settings saved" message disappear after a few seconds, to prevent UI clutter +* TWEAK: Decrease UI clutter in backup time selection +* TWEAK: Update to latest global SSL CA bundle, removing again 1024-bit root CAs (last attempted in 1.9.26, but S3 still had some legacy servers). Modern web browsers have not accepted these for 6 months now. (SSL verification can be turned off in the expert options). +* TWEAK: Defeat WP Download Manager Google Drive plugin's loading of its SDK on all pages (conflicting with UD when UD attempts to backup to Google Drive) +* TWEAK: Detect case of old MySQL on Windows with table prefix that varies by case (and hence WP actually only works by accident) - produce a consistent backup that can be restored on any MySQL server. +* TWEAK: Add dashboard notice with links to more resources, for free users who've been installed >4 weeks (with option to dismiss notice) +* TWEAK: Add itsec_log to the list of tables of non-essential/not-needing-search/replace + likely to be large tables for backup strategy +* TWEAK: Improvement to scheduling algorithm in case where WP's scheduler starts same resumption multiple times - prevent next attempt being delayed longer than necessary +* TWEAK: Add a header to report emails indicating the job ID - helps when debugging +* TWEAK: Detect + show a more helpful error message if blocked by CloudFlare when connecting for updates (paid versions) +* TWEAK: Make it easier to use custom Dropbox API keys, via UPDRAFTPLUS_CUSTOM_DROPBOX_APP constant (define to true in wp-config.php) +* TWEAK: Tweak debug output of webserver information to avoid triggering a (silly) mod_security rule in some setups +* TWEAK: Alert the user if using Amazon S3 if they do not have the PHP XML Writer module available +* TWEAK: Log the fact that local deletions are being skipped, if the user set that option. +* TWEAK: Give timestamp of WPB2D backups without relying upon location of SQL file +* TWEAK: Detect a situation on migration where the uploads path is changed (from a site that began pre-WP 3.5) that was previously undetected +* TRANSLATIONS: French translation updated from less than half to complete, thanks to Erwan François. Various other translations updated (many thanks to all translators). + += 1.9.60 - 2015-02-24 = + +* FEATURE: When using "Backup Now", and keeping the UpdraftPlus settings page open, a broken WP scheduler will not prevent the backup's progress. +* FEATURE: Amazon's "EU Central 1" Frankfurt region now supported again (Amazon began requiring their new signature method at this location - probably a sign of things to come everywhere). PHP 5.3.3 required for this region. +* FEATURE: Database backup files can now be handled when uncompressed - i.e., you can remove the gzip compression, and use the resulting file (useful for large backups on slow/limited hosting: pre-decompressing the file will reduce the processing time needed) +* FEATURE: Introduced new in-page auto-backup widget that can resume, and thus cope with a backup of any size. This feature is in preparation of WP 4.2's major re-write of the updating user experience flow. +* TWEAK: Update PHP-Opencloud (Rackspace) and dependency libraries to current versions. +* TWEAK: Make sure that activity is recorded periodically when adding database tables to the final database backup (found a site with over 7,500 tables) +* TWEAK: Don't bother to attempt to detect double-gz compression on setups where it can't be handled (where gzseek() has been disabled in the PHP configuration) +* TWEAK: Added free/Premium comparison table to the free version +* TWEAK: Importer (part of UpdraftPlus Premium) can now import generic .sql, .sql.gz and .sql.bz2 files +* TWEAK: Don't show the "memory limit" warning in a case where the value could not be accurately detected +* TWEAK: If the user chooses the "email" remote storage method, then a warning will be added if the archive being sent is bigger than most mailservers can carry (and will be removed if it is successfully sent), thus giving the user a hint as to the failure cause (if they overlooked the existing warning in the email settings). +* TWEAK: The importer (part of UpdraftPlus Premium) can now import the latest BackupWordPress format databases +* TWEAK: Flush output buffer explicitly when closing the browser connection - prevents delayed feedback on some setups +* TWEAK: Automatic backups are now offered if you go to the 'Plugins' page, and update via the 'More information' iframe +* TWEAK: Trim spaces from Google Drive client_id/secret - some users didn't spot that they introduced whitespace when copy-pasting +* TWEAK: Add "Simple Visitor Stats" and "Simple Feed Stats" tables to the list of tables that may have large amounts of data, and which don't need search/replacing when migrating +* TWEAK: When restoring plugins and themes, log the list of entities being restored (helps with tracing problems) +* TWEAK: Deal with CloudFTP/StorageMadeEasy returning directory listings in a non-standard format, when rescanning remote backups +* TWEAK: Version numbering scheme for paid versions changed; see: https://updraftplus.com/change-in-updraftpluss-version-numbering-scheme-for-paid-versions/ +* TRANSLATIONS: Updated translations in several languages (many thanks for our translators) +* FIX: For imported 3rd-party backups, the 'Existing Backups' tab (only) was showing "Unknown Source" instead of the detected source. + += 1.9.52 - 2015-02-07 = + +* FIX: Fix issue when migrating (hence, in Premium versions only) backups with very large options tables output by mysqldump, which could cause the site URL to finish with an incorrect value + += 1.9.51 - 2015-02-03 = + +* SECURITY: Prevent nonce leak that could allow logged-in users who aren't admins (if you have any) to access backups, UpdraftPlus settings and perform other harmful actions. No issue exists for users of UpdraftPlus Premium, or if you have the stand-alone "Automatic Backups" or "No Adverts" add-ons, or if your site has no untrusted users who can log in (or whilst have dismissed the "Automatic Backups" notice on the updates page). Credit to Sucuri (http://sucuri.net) for identifying this issue, and notifying us of it. + += 1.9.50 - 2015-01-29 = + +* TWEAK: Importer now supports a previously-unseen format for WordPress Backup 2 Dropbox backups +* TWEAK: Fix cron calculation that could have prevented UpdraftPlus loading when using ALTERNATE_WP_CRON (see 1.9.45) +* TWEAK: If insufficient permissions exist when restoring, then exit maintenance mode when this is detected; and handle the case of having create but not drop permissions more elegantly +* TWEAK: Defeat some other plugins/themes which load their CSS code onto UpdraftPlus settings page and break things +* TWEAK: Prevent a "not tested on this version of WP" message showing for a short time after install of a new version, when it only applied to the previous version +* TWEAK: Reduce HTTP timeout when checking for available plugin updates (paid versions) from 10 to 5 seconds +* TWEAK: Tidy up the post-restore screen a little - one less info box. +* TWEAK: When a restore finishes, WP Super Cache's cache will be emptied (if present), to prevent confusion caused by cached pre-restore pages. +* TWEAK: Slight change to how the 'mothership' for updates is calculated, for more flexibility in our in-house testing +* TWEAK: Log more informative error if user chooses 'FTP' for their remote storage, but adds no FTP settings +* TWEAK: Change "any other directory" to "any other file/directory" in the "more files" add-on, to better reflect its capabilities +* TWEAK: Make sure that "more files" will skip UD's temporary directory, if asked to back up a parent directory of it +* TWEAK: Default to https for updates checking, with fallback to http (only relevant to versions from updraftplus.com) +* TWEAK: Prevent 'Strict Standards' PHP coding notice with WebDAV on PHP 5.5 +* TWEAK: Provide clickable link through to the admin email address in the reporting settings +* TWEAK: If the gzopen or gzread functions are disabled in the PHP install, then the message saying so omitted to say which one (or both) +* FIX: WebDAV upload method could very occasionally fail to detect upload error conditions + += 1.9.46 - 2014-12-29 = + +* FEATURE: Chunked/resumable uploads are now supported for SFTP +* FIX: Scan for existing backup sets added manually to local storage in recent versions could overlook some unless clicked twice, in non-GMT timezones +* TWEAK: Work-around issue in Manage WP worker plugin which caused a crash when authenticating with Dropbox +* TWEAK: Prevent PHP notice when listing files on SFTP server +* TWEAK: Reset an internal upload counter used to detect activity when a cloud storage switch is made due to no apparent activity - could prevent some large, long-running uploads on hosts with little available execution time + += 1.9.45 - 2014-12-20 = + +* FIX: Fix case in which the database imported from a BackWPUp backup could be falsely identified as missing (introduced in 1.9.40) +* FIX: WordPress installs with ALTERNATE_WP_CRON set could skip some scheduled backups (since 1.9.19, so it appears that the conditions required to cause this bug are rare) + += 1.9.44 - 2014-12-13 = + +* TRANSLATIONS: Add new incomplete translations (ready for the wordpress.org change to take translation availability into account when searching for plugins): Norwegian Bokmål, Norwegian Nynorsk, Finnish, Hebrew, Catalan, Vietnamese, Bengali +* FIX: Fix a failure to detect the progress properly for large backup sets, introduced in 1.9.40 + += 1.9.43 - 2014-12-11 = +* FIX: Fix bug in 'lock admin' feature causing lock-outs even with the correct password +* TWEAK: Site is put in maintenance mode whilst database restore takes place + += 1.9.42 - 2014-12-08 = +* FIX: Fix bug in 1.9.40 that caused some cloud storage uploads to be terminated. +* FIX: Restore functionality for Premium users on older WP versions (3.1 - 3.5) + += 1.9.40 - 2014-12-04 = + +* FEATURE: The auto-backup addon (UpdraftPlus Premium) can now run before +WordPress automatic updates +* FEATURE: Lock access to your UpdraftPlus settings (Premium) - +https://updraftplus.com/lock-updraftplus-settings/ +* FEATURE: The full log file viewer is now real-time - it updates as the +backup progresses +* FEATURE: When downloading from remote storage via the settings page, stalled +downloads are now automatically restarted (relevant for large backups with low +web-server PHP time-outs) +* FIX: Manual search/replace expert tool was broken in early downloads of +1.9.31 +* FIX: Suppress bogus messages about missing files from 3rd party tar backups +when restoring +* FIX: If backing up multiple "more files" locations (Premium), then paths +that were identical in both locations could be omitted from the second +location +* FIX: With the reporting add-on, any mails sent by other plugins after +UpdraftPlus had finished (which has never been seen in the wild) would have +corrupted contents +* TWEAK: The tab for downloading/restoring backups has been simplified +* TWEAK: Item for UpdraftPlus now appears in the network admin menu, for +super-admins on network installs +* TWEAK: Labels (Premium) are now maintained and can be detected for +locally-imported database backups +* TWEAK: Automatic backups are now labelled +* TWEAK: The "retain" settings now do not apply for auto-backups (Premium), +unless at least the specified number of non-auto-backups has already been +retained. +* TWEAK: Time selector now accepts typed hours without the trailing zero +* TWEAK: Extended BackWPUp importer to handle older BackWPUp backups lacking +manifests +* TWEAK: Removed Bitcasa storage option, due to closing down of API (November +15th 2014) +* TWEAK: When an invalid JSON response is received during restore stage 2, +display the data directly (not just in the error console, where not everyone +will think of looking). +* TWEAK: 3rd party backups which are missing expected entities are now handled +more gracefully +* TWEAK: The fancy report now tells the user what paths are in the zips for +any additional paths they configured to add to the backup +* TWEAK: Add a swifter resumption in one corner case (efficiency) +* TWEAK: If a zip error is encountered on cPanel, then the free disk space is +checked, to potentially give the user more information on probable causes +* TWEAK: You can now remove your updraftplus.com password from the settings +(paid version) without losing your access to updates +* TWEAK: Suppress top advert if the user is on their first go (free version - +danger of too many notices) +* TWEAK: Don't display the post-restoration message "if your backup set...", +since we can work this out ourselves +* TWEAK: Supply extra help to the user if the backup directory is not +writable. +* TWEAK: SCP remote storage now logs chunk progress +* TWEAK: Provide a database encryption phrase text entry in the restore +options (rather than needing to enter it in the settings) +* TWEAK: Set the PclZip temporary directory to the Updraft directory if unset, +to keep its temporary files out of the way more easily +* COMPATIBILITY: Tested with the forthcoming WordPress 4.1 +* TRANSLATIONS: New Dansk / Danish translation by Lars Lund and Lasse Jensen + += 1.9.31 - 2014-10-24 = + +* TWEAK: Bitcasa now gives a deprecation warning (Bitcasa are closing down +their API on November 15th 2014) +* TWEAK: Fix bug causing PHP notices in Migrator add-on search/replace +* TWEAK: Add support for Amazon S3's new Frankfurt region +* TWEAK: Add work-around for bug in the ancient PHP 5.2.6 (May 2008!) if +binary zip not available + += 1.9.30 - 2014-10-21 = + +* FEATURE: Add the capability to handle BackupWordPress database zip backups +(https://updraftplus.com/shop/importer/) +* FEATURE: Add capability to apply labels to backups (Premium - +https://updraftplus.com/shop/updraftplus-premium/) +* TWEAK: Logs are now shown in a pop-out window with a separate download +button +* TWEAK: Detect select/poll lengthy timeouts when uploading to Dropbox, and +prevent overlapping activity +* TWEAK: Add constant UPDRAFTPLUS_NOAUTOBACKUPS to programatically disable the +automatic backups add-on +* TWEAK: Rename UpdraftPlus Dropbox class, to avoid clash with Ninja Forms +upload add-on +* TWEAK: Made the output of the HTTP (curl) debugging tool more informative +* TWEAK: Add web.config file to make updraft directory unviewable on IIS +* TWEAK: If the user tries to import a WordPress Network backup into a +single-site install, then detect and warn +* TWEAK: In the free version, avoid unexpectedly changing the daily backup +time when other settings are saved +* TWEAK: Improve the immediate retry strategy in case of zip failure (saves +time and/or notifying the user to manually check the log) +* TWEAK: Correctly detect language on WP 4.0 onwards, when suggesting helping +with translation +* TWEAK: When connecting for updates to updraftplus.com (Premium), indicate if +it was the username or password that was wrong +* TWEAK: Alert user if they are trying to use Google Drive with a direct-IP +address site URL forbidden by Google's policy +* TWEAK: Prevent a corner-case where excessive logging could occur upon +restoration +* TWEAK: Be less strict with case when looking for supported patterns in the +Importer add-on (https://updraftplus.com/shop/importer/) +* TWEAK: Search/replace the postmeta table faster +* DEPRECATED: Bitcasa support has been deprecated, and the links removed from +the free version. (Existing Premium users using Bitcasa will continue to be +able to do so). See: +https://updraftplus.com/bitcasas-current-direction-unclear/ +* FIX: Fix corner-case in URL search/replace when migrating a site that had WP +in a different directory to the site home, and migration to a sub-directory of +the original site. +* FIX: Autobackup setting (https://updraftplus.com/shop/autobackup/) failed to +save properly if turned off on first usage +* TRANSLATION: New Farsi (Persian, fa_IR) translation, courtesy of +Jamshidpour, Ashkan Ghadimi, Mohammad (2online4.ir) and Nasiri Amirreza + += 1.9.26 - 2014/09/22 = + +* TWEAK: There are still some Amazon S3 servers validated via a Verisign +1024-bit certificate, causing backup to fail due to SSL validation failure. +Revert to previous collection of root SSL certificates in order to still allow +access to these servers (see: +https://blog.mozilla.org/security/2014/09/08/phasing-out-certificates-with-1024-bit-rsa-keys/) +* TWEAK: If Google Drive reports that the quota will be exceeded, then make +this feedback more obvious to the user without reading the log +* TWEAK: If the user enters an S3 path with an erroneous preceding slash, then +remove it +* FIX: Amazon S3 RRS settings (Premium) were not being applied on archives +smaller than 5Mb +* TRANSLATION: New Română (Romanian, ro_RO) translation, courtesy of +Augustin-Mihai Mufturel and Teodor Muraru + += 1.9.25 - 2014/09/17 = + +* FEATURE: Copy (https://copy.com) cloud storage support (Premium - +https://updraftplus.com/shop/updraftplus-premium/) +* FEATURE: The search/replace expert tool can now work on selected tables only +* PERFORMANCE: Use PageVisibility API to be more intelligent about when we +need to poll for progress in the dashboard +* FIX: The Migrator add-on would fetch more database rows than it should, +increasing the (low) risk of hitting memory limits, and increasing the time +needed on enormous sites +* FIX: Some Google Drive backups could get uploaded twice, if you were using +multiple storage backends +* FIX: If user set the option to not verify SSL certificates, then this option +was not honoured for all methods +* FIX: If user had never saved their settings (and hence using no cloud +backup), then old backup sets were not pruned +* TWEAK: Inform the user of possible plugin compatibility issues if they are +about to restore a site onto a webserver running a PHP major version older +than the original backup. +* TWEAK: Detect database disconnection when search/replacing, and reconnect if +possible; and to try less rows in case it was a memory limit +* TWEAK: Allow wildcards at either end in exclusion items (e.g. *backups*) +* TWEAK: Add option to control how many rows are search/replaced at once +* TWEAK: Prevent PHP notice being generated on first Google Drive +authentication +* TWEAK: Update Bitcasa console link to new location +* TRANSLATIONS: New Portuguese (Portugal) translation (pt_PT) - thanks to +Pedro Mendonça +* TRANSLATIONS: Updated translations for Dutch, Italian, Swedish, Russian, +Czech, Greek, Portuguese (Brazilian) + += 1.9.19 - 2014/08/19 = + +* FEATURE: Omit any directory from the backup (recursively) by creating a file +called .donotbackup within it +* PERFORMANCE: Lazy-load more code +* PERFORMANCE: Prevent no-op search/replacements when restoring +* FIX: Fix a corner-case where a backup might be able to continue but no +attempt was made after using PclZip +* FIX: Fix a corner-case (race condition) where UD might try to upload the +same archive twice +* FIX: Detection of pre-WP 3.5 hard-coded uploads paths upon site clone had +stopped working +* FIX: Fix bug in Importer add-on which could halt restorations of 3rd-party +backups from the BackupWordPress plugin +* FIX: Fix bug in the informational disk space consumption calculation in the +expert tools section +* TWEAK: Catch + log errors thrown by phpMailer +* TWEAK: Merge Google SDK tweak from +https://github.com/google/google-api-php-client/pull/189 to deal with buggy +curl/proxy combinations with Google Drive +* TWEAK: Prevent PHP log notice being generated on "Backup Now" +* TWEAK: Change default zip split size to 500Mb on new installs +* TWEAK: Scheduling algorithm tweak for more efficiency with very large +backups when PHP is allowed to run long +* TWEAK: Do not rely on PHP's disk_free_space() when it returns (int)0 +* TWEAK: Check database connection after auto-backup +* TWEAK: More helpful message if uploading a backup when local storage is not +writable +* TWEAK: Extra logic to survive out-of-memory MySQL conditions in extreme +cases; plus introduce UPDRAFTPLUS_ALWAYS_TRY_MYSQLDUMP constant +* TWEAK: Tweak Amazon S3 logic so that it can cope with a situation where +there is no permission to request its location (but there is permission for +all other operations) +* TWEAK: Workaround for PHP bug #62119 which could cause some files beginning +with a non-ASCII character to be dropped +* TWEAK: Warn the user if they are running on Apache without mod_rewrite and +restore a site with permalinks requiring mod_rewrite +* TWEAK: If Premium user was backing up non-WP tables, then optimize the +backup table order +* TWEAK: Deal with case when uploading very large backups to Google Drive on +overloaded servers with unreliable network where activity check might misfire +* TRANSLATIONS: Updated translations: Hungarian, Swedish, Russian, Brazilian +(Portuguese), Spanish, Czeck, Dutch, Turkish, German + += 1.9.17 - 2014/07/16 = + +* FEATURE: Can now import/restore/migrate backups created by WordPress Backup +To Dropbox (Premium) +* FIX: Fix bug in Importer add-on that prevented some potential warnings about +the integrity of the 3rd party backup zip being displayed +* FIX: Some errors upon S3 downloads were not being passed back up to the +settings page for display +* FIX: Update "Rackspace Enhanced" add-on for compatibility with current +Rackspace API +* TWEAK: Prevent spurious messages about quota for users who have upgraded +their Bitcasa account to infinite storage +* TWEAK: Prevent some unnecessary duplication of work when resuming a database +backup (since 1.9.13) +* TWEAK: Dropbox now supports use of WP_PROXY_ settings (proxy needs to +support HTTP GET/POST/PUT) +* TWEAK: Add work-around for "Google Drive as CDN" plugin's inclusion of +incompatible Google SDK +* TWEAK: "More Files" add-on now lets you list single files for inclusion +* TRANSLATIONS: Many translations updated + += 1.9.15 - 2014/06/09 = + +* FEATURE: New search/replace expert tool (Premium) +* TWEAK: UI has been simplified - see: +https://updraftplus.com/gentle-re-design/ +* TWEAK: "Backup Now" now avoids the WordPress scheduler - thus meaning it can +work on sites where the WordPress scheduler is broken (e.g. Heart Internet) +* TWEAK: Make sure that server HTTP-level errors are shown directly to the +user at the 'Processing files...' stage of a restore +* TWEAK: Amend SQL which prevented options/sitemeta tables backing up at full +speed on large sites +* TWEAK: Dropbox will now display some error messages more prominently, where +relevant +* TWEAK: Dropbox account user's name is stored when you authorise +* TWEAK: Show link to FAQ if user's zip upload is corrupt +* TWEAK: Work around annoying Google Drive issue whereby Google's end +sometimes returns an incomplete list of folders +* TWEAK: Interpret time in imported backup sets as being in destination WP +install's timezone +* TWEAK: Auto-correct Dropbox folder configuration if the user erroneously +enters a full URL instead of a folder path +* TWEAK: Bitcasa back-end now checks account quota and logs a warning if it +looks like it will be exceeded +* TWEAK: Email reports created by UpdraftPlus (free) now include the latest +blog headlines from updraftplus.com +* TWEAK: Make sure all relevant restoration options in restore dialogue are +shown (works around Firefox issue upon page reload/navigation) +* FIX: Reporting add-on could mis-display number of warnings when saying "X +errors, Y warnings". +* TRANSLATION: New Tagalog translation (thanks to Kristen Macasero) + += 1.9.13 - 2014/05/19 = + +* FEATURE: Google Drive now works without the PHP curl module being needed +* FEATURE: UpdraftPlus Premium can now back up non-WordPress tables and +external databases; database encryption is also now a Premium feature; see: +https://updraftplus.com/backing-external-databases/ +* FIX: Work around conflicts with the Google Analyticator and Appointments+ +plugins when using Google Drive since 1.9.4 (see: +http://wordpress.org/support/topic/dont-unconditionally-load-old-google-sdk) +* FIX: Work around conflict with some XCache setups that prevented activation +since 1.9.4 +* FIX: Make all S3 SSL settings take effect +* FIX: Fix packet size calculation issue upon restore that could cause false +detection of over-large packets +* FIX: Prevent unnecessary abortion of restore if PHP's (deprecated) safe_mode +is on (PHP 5.3 and below) +* FIX: When migrating a multisite with a different table prefix, make sure the +user role list is maintained on each site +* FIX: Rescan of remote FTP storage was not using configured path +* TWEAK: Now tested on PHP 5.5 +* TWEAK: Migrator can now cope with situations where the development site was +developed under multiple URLs without the developer cleaning up +* TWEAK: Remove several PHP strict coding standards messages, and a +deprecation warning on PHP 5.5+ when using Bitcasa +* TWEAK: Add Counterize tables to the custom lists of tables that do not need +search/replacing upon migration / are non-vital data +* TWEAK: Check for DB connection having been dropped before pruning old +backups (WP 3.9+) +* TWEAK: Make sure that if the user has not configured the Google Drive API in +their Google account, then they are alerted +* TRANSLATIONS: Updated Greek, Czech, German, Spanish, French, Dutch, +Portuguese (Brazilian), Russian, Swedish and Turkish translations + += 1.9.5 - 2014/04/25 = + +* FIX: Backups were not uploaded successfully if you were using both an +encrypted database and Google Drive storage in 1.9.4 + += 1.9.4 - 2014/04/23 = + +* FEATURE: New remote storage back-end for OpenStack Swift +* FEATURE: New remote storage back-end for Bitcasa (Premium - +https://updraftplus.com/shop/updraftplus-premium/) +* FEATURE: New Google Drive back-end now uses new SDK; resulting new +capabilities include ability to rescan remote storage, and chunked downloading +for huge files; also requires a shorter list of permissions +* FEATURE: Restore backups that were created by the plugin BackWPup (Premium - +https://updraftplus.com/shop/updraftplus-premium/) +* FIX: WebDAV storage: remove requirement for PEAR to be pre-installed on +server +* FIX: Fix restoration on sites where WP did not have direct filesystem access +* FIX: Fix regex which prevented download progress of mu-plugins zip +displaying correctly +* FIX: Fix issue preventing some useful information about URL changes being +included in the migration log file +* FIX: Restore compatibility with WordPress 3.2 (if you're using that, you're +overdue an upgrade by some years!) +* TWEAK: Enable new locations for plupload Flash/Silverlight widgets (for +non-HTML5 browsers) in WP3.9+ (later reverted by core devs, but is harmless in +case they re-introduce) +* TWEAK: Take advantage of WP 3.9+'s new method (if available) for maintaining +DB connectivity on very long runs +* TWEAK: Add filter so that programmers can allow the options page to be shown +to non-admins +* TWEAK: Add filter allowing programmers to forbid a backup +* TWEAK: Detect and adapt to cases where the site is moved to a system with +different case-sensitivity and the database record of the theme is now wrong +* TWEAK: Prevent erroneous warning about a missing table in the database +backup on some WPMU installs that began life as a very old WP version +* TWEAK: Introduce constant allowing users of pre-release WP installs to +disable notices about using a version of WP that UpdraftPlus has not been +tested on. +* TWEAK: Make Dropbox uploads at least 25% faster (in our testing) by +increasing the chunk size +* TWEAK: Reduce number of rows fetched from MySQL if no activity took place on +the previous resumption +* TWEAK: AWS image in settings page will now use https if dashboard access is +https - prevents non-https warnings in recent browsers +* TWEAK: Hook into Better WP Security so that it doesn't tell the user that +they have no backup plugin +* TWEAK: New debugging tool to test remote HTTP connectivity +* TWEAK: Tweak the MySQL version detection in the 'debug' section of the admin +page to prevent a PHP message being thrown on PHP 5.5+/WP3.9+ +* TRANSLATION: New Czech (cs_CZ) translation; thanks to Martin Křížek +* TRANSLATION: Updated Russian, Swedish, Dutch and Portuguese translations + += 1.9.0 - 2014/03/26 = + +* COMPATIBILITY: Tested on and updated for forthcoming WordPress 3.9 +* FIX: Prevent SQL errors on restore if SQL command was over-sized and split +awkwardly (very hard to trigger) +* FIX: Fix subtle race condition that prevented uploads of large archives on +Amazon S3 in some very limited situations +* FEATURE: Ability to restore and migrate from backups produced by other +backup plugins (Premium) (supported: BackUpWordPress and Simple Backups +(zip-based; though, if you have a tar-backup, you can re-pack it easily)) +* FEATURE: Feature to re-scan remote storage (allows detection of existing +backups after a restore to an earlier site version, and allows quicker moving +of data from site to site when migrating) +* FEATURE: SFTP add-on (https://updraftplus.com/shop/sftp/) now supports +key-based logins (as well as password-based) +* TWEAK: Add a warning message and link to helpful page for people whose WP +schedulers don't seem to be working (at least 4 overdue jobs in the queue) +* TWEAK: Introduce a filter allowing users to add a bespoke scheduling option +(e.g. every 2 days) +* TWEAK: When backup is sent by email attachment, the email now indicates the +originating site more clearly +* TWEAK: Display a dashboard warning if you are using a version of UpdraftPlus +that has not been tested on your current WordPress version +* TWEAK: Add work-around for bad hard-coded data in Elegant Themes Theme +Builder when restoring +* TWEAK: Log a message when Dropbox authentication completes (prevent user +confusion if the most recent message is pre-success) +* TRANSLATIONS: New Arabic translation (thanks to Omar Amassine - me at +omar.ma, Ahmed Fahmy and Riyadh Altayib) +* TRANSLATIONS: Updated Spanish translation (thanks to Pablo Laguna - +laguna.sanchez at gmail.com) +* TRANSLATIONS: Updated Nederlands / Dutch translation (thanks to Dennis +Hunink - dennishunink at me.com) +* TRANSLATIONS: New Turkish translation (various translators - not yet +complete) + += 1.8.13 - 2014/03/07 = + +* FIX: Fix bug that prevented changes to your schedule being saved on network +(WPMU) installs (Multisite add-on) + += 1.8.12 - 2014/02/27 = + +* FIX: Prevent spurious warning message showing when authenticating new +Dropbox connections (introduced in 1.8.11) +* TWEAK: Add support for Amazon S3's China + government zones + += 1.8.11 - 2014/02/27 = + +* FIX: Deal with some unlikely multisite migration combinations +* FEATURE: Allow the 'exclude' options (for omitting files/directories from +the backup) to go to any level (i.e. can now exclude entities which are deep +in the directory tree) +* FEATURE: "More Files" add-on (and hence Premium) now allows adding as many +non-WP directories as you like +* FEATURE: Allow use of Amazon S3's Reduced Redundancy Storage (via +add-on/Premium) +* FEATURE: Allow all messages to be centrally logged in syslog/Event Log (via +add-on/Premium) +* RELIABILITY: Allow skipping of data from tables whose data is explicitly +known to be inessential if at least 2 attempts to backup the data fail (e.g. +lack of resources on low-budget hosts with huge tables, e.g. StatPress data) - +as an alternative to total backup failure. +* TWEAK: Prevent spurious warning message if the site (uploads) is empty and +using /usr/bin/zip +* TWEAK: Work-around for quirky FTP server for which PHP loses the +communication if SIZE is called for a non-existent file +* TWEAK: Show table prefix in debugging information, and add quick links to +install useful debugging plugins +* TWEAK: Limit amount of to-database logging when backing up uploads if the +user is not using dated directories (speed-up) +* TWEAK: Split zip earlier if progress made in the past but not recently +(should help with some ultra-low-resource hosts, e.g. one.com) +* TWEAK: "Custom Content Type Manager" plugin has bad hard-coded cache data; +detect + fix this on restore +* TRANSLATIONS: Updated translations for Russian, Dutch, German and Portuguese +(Brazilian) + += 1.8.8 - 2014/01/27 = + +* FIX: Correctly detect table prefix on some WPMU installs that had been +upgraded from an earlier version than 3.0 (i.e. very old) +* FIX: Files directly in wp-content/uploads (from a 1.8.5 backup and not in +any sub-directory) were being restored one directory too high +* UPDATED: Updated Swedish, Portuguese and Dutch translations +* UPDATED: Update root certificates to match latest CURL/Mozilla version +* TWEAK: Automatically change http(s):// to webdav(s):// in WebDAV URLs if the +user overlooks the instructions +* TWEAK: If SHOW TABLES returns no tables, then schedule a re-try later +(presume the DB connection had been dropped) +* TWEAK: Preceed warnings in the log file with [Warning] +* TWEAK: Prevent a very rare PHP segfault due to +https://bugs.php.net/bug.php?id=51425 +* TWEAK: Show the filename being unpacked during restore (helps with +troubleshooting if there are very many zips) +* TWEAK: Premium plugin now shows information about pending/past +update/support expiries + links to renewal page +* TWEAK: Show all defined constants in the debug dialog +* TWEAK: Detect + deal with situations where the webserver double-gzipped the +database file +* TWEAK: Display a warning in the FTP configuration section if the hosting +company disabled FTP functions +* TWEAK: Make sure that WebDAV notices are included in UD's log file + += 1.8.5 - 2014/01/09 = + +* FEATURE: Add option to exclude specified files from the 'uploads' backup. +The default option will omit backing up backups created by at least 2 other +backup plugins. +* FEATURE: New Brazilian Portuguese translation - thanks to Lucien Raven and +Tom Fonseca +* FEATURE: Migrator search/replace now handles JSON and object-encoded data +* UPDATED: Updated Swedish translation +* FIX: When advising the user that his remaining Dropbox quota is +insufficient, take into account parts of the file already uploaded +* FIX: Delete Old Directories button in 1.8.2 was using a PHP 5.3+ feature: +restore PHP 5.2 compatibility +* FIX: Reporting add-on was incorrectly inflating the number displayed for the +total error count if there were warnings +* FIX: Prevent a bogus warning appearing when the user has filtered the base +table prefix +* TWEAK: Give more feedback to user when FTP login fails. Also, improve +automatic switch to non-SSL FTP if SSL FTP fails to cover more situations. +* TWEAK: Add informational text about the implications of not choosing any +remote storage method +* TWEAK: Supply the "Delete Old Directories" button directly with the message +advising users to press it +* TWEAK: If using WP Slimstats, don't search/replace the slimstats table when +migrating (referer data should be left intact); and this table is often +gigantic, so this hugely speeds up restores/migrations +* TWEAK: Handle odd file permissions setups more skilfully when +restoring/migrating +* TWEAK: Automatically rescan for new backup sets if none were previously +known (saves a click when manually importing) +* TWEAK: Force a shorter pathname to be used when unpacking zip files (prevent +maximum pathname limits being hit) +* TWEAK: Tweak CSS to work-around other plugins that dump their CSS code on +all settings pages and break modals (in this case, Events Manager) +* TWEAK: Hide the instruction for users of Opera unless the user agent header +indicates Opera +* TWEAK: Speed migrations by skipping redundant search/replace scan on +term_relationships table (which can never have URLs in it) + += 1.8.2 - 2013/12/13 = + +* FIX: Various small fixes to the initial release of 1.8.1 +* TWEAK: Restorer now switches theme if database is restored to indicate a +non-existent theme, and Migrator temporarily disables cacheing plugins during +Migration +* TWEAK: Improve handling of MySQL's maximum packet size - attempt to raise +it, and leave some margin +* TWEAK: Move the Rackspace SDK around to prevent problems on systems with +limited maximum pathname lengths +* TWEAK: Provide a link to the log file at the top of the restoration page + += 1.8.1 - 2013/12/10 = + +* FEATURE: New "Reporting" add-on - more sophisticated/flexible backup reports +(https://updraftplus.com/shop/reporting/) +* FEATURE: New enhanced add-on for Rackspace Cloud Files users, allowing them +to create a new sub-user with exclusive access to the backup container +(https://updraftplus.com/shop/cloudfiles-enhanced/) (PHP 5.3.3+ required for +this feature) +* FEATURE: Add region-selection (Dallas/Chicago/Northern Virginia/Sydney/Hong +Kong) to Rackspace Cloud Files (PHP 5.3.3+ required for this feature) +* FEATURE: Add option to 'Backup Now' dialog to not despatch this backup to +the cloud +* FIX: Fix bug in restore of wpcore (Premium) with certain options when backup +set was from a previously restored backup with the same certain options +* FIX: After restoring a site, only delete the backup set from local storage +if it was also stored in the cloud (prevents the user having to upload the +backup set twice if they want to re-run the restore) +* FIX: Improve detection of extremely long-running/slow jobs +* FIX: Fix issue with Rackspace Cloudfiles on WPMU installs +* TWEAK: Mark as tested up to WordPress 3.8 +* TWEAK: Restore operations are now logged +* TWEAK: Detect the database connection dropping and recover (seen on a very +slow site where PHP ran continuously for 30 mins) +* TWEAK: Change how permalinks are flushed post-restore. This spares the user +from having to manually visit the permalinks page if they had plugins that +altered their permalink structure (e.g. WooCommerce). +* TWEAK: Require fewer file permissions when restoring/migrating +* TWEAK: Remove various spurious PHP notices caught by the post-1.7.41 extra +logging +* TWEAK: Compress the log file before emailing it, if it is over 6Mb +* TWEAK: Make sure some potential error messages from Dropbox are displayed +properly +* TWEAK: Work around sites with site/home URL settings in the WP DB that +erroneously have a trailing slash +* TWEAK: Log PHP notices for all job types + += 1.7.41 - 2013/11/16 = + +* FIX: Work around bug in some old PHP versions on Windows when creating +database dump +* FIX: If binary mysqldump failed, then retry +* TWEAK: Log PHP notices in the log file +* TWEAK: Allow primitive exclusion based on filename suffixes + += 1.7.39 - 2013/11/11 = + +* FIX: Correct calculation of which old backups to delete when automatic +pre-plugin/theme backups run +* FIX: Binzip could block if the zip binary produced a lot of unexpected +output +* FIX: Fix a corner-case where a setting needed manual updating post-migration +on WP 3.4+earlier sites with custom uploads path +* FIX: Prevent the settings page needing a refresh if the server temporarily +goes away +* TWEAK: For reasons unknown, Google's new cloud console removes parameters +after the first from the redirect_uri; this breaks new Google Drive +authentications. To work around this, we have adjusted our redirect_uri to use +only one parameter. +* TWEAK: Removed a couple of clicks from the install procedure for add-ons +* TWEAK: Handle migration URL rewrites where content directory location has +been manually altered +* TWEAK: Change default number of backups to retain on new installs from 1 to +2 +* TWEAK: Add extra file permissions check before restoring (prevent unexpected +aborts) +* TWEAK: Suppress a spurious 'insufficient visitors' warning for some sites +with long-running backups +* TWEAK: Prevent spurious message about unexpected SQL if restoring a backup +with very large tables produced by mysqldump +* TWEAK: Catch some more untranslated strings +* TRANSLATIONS: New Russian translation; updated German and Polish +translations + += 1.7.35 - 2013/10/26 = + +* FIX: Fix potential problem whereby some tables could be missed from the +backup on WPMU (WP multisite) installs. Strongly recommended that all WPMU +users update and take a fresh backup. +* FIX: Work around http://bugs.mysql.com/62077 (could cause permanently stuck +lock on databases with wrong collocations - if you have this problem, then no +backups happen) +* TWEAK: Don't use binzip method on OpenVZ with low memory +* TWEAK: Suppress a couple of spurious messages in the log +* TWEAK: Add facility to quickly download log files in the 'expert settings' +section + += 1.7.34 - 2013/10/21 = + +* FEATURE: Options in the "Backup Now" dialog to exclude files or database +from the backup (https://updraftplus.com/more-flexibility-in-backup-now/) +* FEATURE: Use binary mysqldump, if available, for much faster dumps of large +tables +* FEATURE: New Ελληνική / Greek translation (el): Κώστας Θερμογιάννης (Kostas +Thermoyiannis) - http://tovivlio.net +* FIX: Fix a JavaScript error in Internet Explorer 8 +* FIX: Under very unusual circumstances, it was still possible for multiple +backup jobs to occur +* FIX: For non-English installs, the email indicating backup success sometimes +failed to send +* FIX: Fix obscure table name error if WP was using bespoke database setup +without delete access +* FIX: On multi-site installs, settings changes could be lost if they were +made during an ongoing backup +* TWEAK: Now marked as WordPress 3.7 compatible +* TWEAK: Raw files list in expert section now makes log files directly +downloadable +* TWEAK: Detect available disk quota in CPanel account (if relevant), log, and +warn if low +* TWEAK: Amazon S3 backend now can use WP proxy settings (if any) +* TWEAK: All multisite settings pages have now been moved to the network admin +section +* TWEAK: Restorer now handles hand-moved non-default WP site directories +(where they differ from the website base directory) +* TWEAK: Migrator can now migrate sub-domain-based WPMU installs with no +manual steps required +* TWEAK: Internationalised the add-ons management page (Premium) +* TWEAK: Switch zip engines from ZipArchive earlier if it appears to be broken +* TWEAK: Now cleans up some previously un-caught temporary files if the backup +aborted unexpectedly +* TWEAK: Remove bogus warning about W3TC object cache +* TWEAK: Backup log file now includes SHA1 checksums +* TWEAK: Add warning for user if their max_execution_time is very low +* TWEAK: Make fewer HTTP requests when tracking download status +* TWEAK: Under certain conditions, the report email could wrongly state that +files were included in a db-only backup +* TWEAK: Improve detection of recent activity on resumptions when zips split +* TWEAK: Prevent some warning messages from being shown twice +* TWEAK: Remove the "that's a lot of rows" warning once the table successfully +finishes being dumped +* TWEAK: Cache the results of looking for a zip executable for the duration of +the job +* TWEAK: Some badly-written plugins place their own code on UD's settings +page, and break the layout; overcome this +* TWEAK: Add a warning for people using encryption without mcrypt installed +(slow) +* TWEAK: Suppress useless warning when using BinZip and only empty directories +exist in 'others' backup + += 1.7.20 - 2013/09/20 = +* TWEAK: Add semaphore locking to prevent WP's cron system kicking off +multiple jobs on overloaded systems +* TWEAK: Catch and display some previously uncaught AJAX notices when +restoring, and display information on the restore process earlier + += 1.7.18 - 2013/09/17 = +* FEATURE: New "more +storage" add-on, enabling backing up to multiple storage destinations +* FEATURE: New progress meter on dashboard page when a backup is running +* FEATURE: SCP support (in the SFTP/FTPS/SCP add-on) +* FEATURE: If (and only if) your settings page is open, then UpdraftPlus will +automatically perform tricks to help backups run even if your WordPress +install has its scheduler disabled (of course, enabling your scheduler would +better). +* FIX: Fix bug whereby clicking on 'rescan' lost track of backups sent to +remote storage +* FIX: Fix obscure bug that could cause WPMU installs to not back up all +tables +* FIX: Fix unwanted warning message if the uploads folder was empty +* FIX: Show timestamps of available backup sets in local time zone +* FIX: Email subjects and contents use local time zone +* FIX: Fix mangled pathnames for PclZip one-shot attempts +* FIX: Fix bug that caused files to be dropped if one was in a sub-directory +of the entity and named (entire name) "0" +* FIX: Show correct title on page when upgrading +* FIX: Fix one-character typo that could cause Dropbox uploads to not continue +if Dropbox threw a transient error from their end +* FIX: Permanent solution to conflict with W3TC's object cache (and removal of +advisory notice) +* FIX: Correctly show estimated size of 'others' backup within the expert +section +* FIX: Fix small typo in inline decrypter that led to viewer reading an +incomplete message +* TWEAK: Warn the user if they seem to be a on a dev website that is not +visited + so can't backup +(https://updraftplus.com/faqs/why-am-i-getting-warnings-about-my-site-not-having-enough-visitors/) +* TWEAK: More detection of possible overlaps (use temporary files as evidence) +* TWEAK: Extra check that the directory is writable before unpacking zip in +restore (so user gets friendly error message instead of trickier one) +* TWEAK: Provide option to remember the "automatic backup" setting +* TWEAK: The WebDAV add-on +now has support for WebDAV servers that don't support Content-Range (e.g. +ownCloud) + += 1.7.3 - 2013/08/26 = +* FIX: Some Dropbox connect errors were being lost +* FIX: Fix detection of availability of binary zip method on PHP installs +where popen() is available put proc_open() is disabled +* FIX: (Premium): WP Core and More Files remaining locally/not being +despatched to cloud storage +* TWEAK: More logging of the success (or not) of backups sent via email +* TWEAK: Remember hint from previous job if PHP is allowed to run for more +than 300 seconds at a time + += 1.7.1 - 2013/08/20 = +* FIX: Fix error preventing file backups in 1.7.0 for PHP installs without the +ZipArchive class. +* TWEAK: Only include phpseclib in the path when required + += 1.7.0 - 2013/08/20 = +* FEATURE: Split large sites into multiple zips (see: +https://updraftplus.com/splitting-large-sites-into-multiple-archives/) +* FEATURE: Fix time add-on can now also choose the day of the week +* FEATURE: New add-on/Premium feature - Automatic Backups (automatically take +backups before plugin/theme updates) - https://updraftplus.com/shop/autobackup/ +* FEATURE: Svensk / Swedish translation (sv_SE) by Steve Sandström +(http://www.brandicon.se) +* FEATURE: Français / French translation (fr_FR) by ufo3D - http://ufo-3d.fr/ +and Thomas Jacobsen - http://123informatique.ch/ - with help from Françoise +Lhermitte - http://www.ajwan.net +* TWEAK: Save the result of looking for a binary zip (don't re-test) +* TWEAK: Show 'Last log message' in dashboard using local time zone +* TWEAK: Log file times are now recorded relative to the backup start, rather +than the current resumption start +* TWEAK: More code-tidying and optimisation +* TWEAK: Warn the user if the WordPress scheduler is disabled +* TWEAK: Many + various extra sanity-checks for possible problems +* TWEAK: Warn user if trying to upload an above-limit (>10Gb) file to Google +Drive +* TWEAK: Reduce memory usage during restore +* TWEAK: No longer require mbstring extension for Dropbox +* TWEAK: Move JavaScript into separate file, and make strings translatable +* INTERNALS: PclZip and BinZip methods now have feature parity with ZipArchive +(can resume+split, more logging) +* TWEAK/FIX: When restoring/migrating, split SQL commands to avoid exceeding +MySQL's max_allowed_packet +* FIX: Make sure output buffering is off when sending files from the browser +(prevents memory exhaustion) +* FIX: Prevent double-backup (very unusual combination of circumstances) +* FIX: Some Windows webserver configurations could have corruption of +filenames in WordPress core backups (recoverable) +* FIX: Remove temporary files created by PclZip (where PclZip is used) + += 1.6.46 - 2013/07/11 = +* FEATURE: New storage back-end for any S3-compatible provider (e.g. Google +Cloud Storage, Eucalyptus, Cloudian, many more - tested with Dreamobjects and +original S3) +* FEATURE: Delete existing backup sets manually (deletes both local + cloud +copies). Also show backup set debugging info in expert options; and counter +now dynamically updates without refresh. +* FEATURE: Restorations + migrations can now be attempted even if the user +lacks CREATE TABLE or DROP TABLE permissions +* FEATURE: Italiano/Italian translation by Francesco Carpana (f.carpana at +gmail.com) +* FEATURE: Chinese (zh_CN) translation by K L Wang (http://klwang.info) +* FEATURE: Re-worked error handling internally, leading to users now being +notified prominently of warning-level conditions (non-fatal conditions, but +things the user should be advised of) +* FEATURE: Allow some hiding of secrets in the admin area (see: +https://updraftplus.com/faqs/in-the-administration-section-it-shows-my-amazon-ftp-etc-passwords-without-using-stars-is-this-safe/) +* FEATURE: Restorer now obtains files at an earlier stage, allowing analysis + +more intelligent presentation of options and applicable warnings pre-restore. +Now warns if you are migrating without having chosen search/replace of DB. +Also pre-decrypts the database, which lessens the risk of timeouts. +* FEATURE: Allow entries in the list of files to exclude from backup to end in +a wildcard (*). Change default exclusion for content dir to include backup* to +catch other backup plugins' archives. +* FIX: "Wipe settings" wipes S3 + DreamObjects settings (they were retained +previously) +* FIX: Suppress spurious "Table prefix has changed" message +* FIX: Now copes on restores/migrations if you've moved around your +WP_CONTENT_DIR/WP_PLUGIN_DIR/UPLOADS folder +* FIX: Escape output of logging lines (prevents on-page JavaScript breakage if +error from cloud service contained unescaped quotes) +* FIX: Fix syntax error in rarely-triggered part of scheduling calculation +algorithm that could cause a dramatic slow-down +* FIX: Tweak the no-activity-for-a-while-when-writing-zip detector to not fire +prematurely (found an extreme corner-case where this caused a problem) +* FIX: The "Test (cloud method) settings" button would fail if credentials +contained a backslash (\), due to WP's automatic doubling of backslashes +* FIX: When restoring, don't make failure to remove a temporary directory an +abortion condition +* FIX: Database dump now retains NULL values for string fields (instead of +making them empty strings) +* FIX: Remove directories that cause an error during restoration when user +restores from a backup made from a previously-restored site without removing +old directories when requested. +* TWEAK: Detect WP installs with broken plugins that add extra white-space +(thus breaking AJAX output) +* TWEAK: When running on (old) MySQL 4.1, replace TYPE= with ENGINE= for +compatibility with later MySQL versions +* TWEAK: Detect which MySQL engines are available on the restoring side, and +switch if the requested engine is not available; remove PAGE_CHECKSUM and +TRANSACTIONAL options if engine was (M)aria. Always remove (removed from +upstream) PAGE_CHECKSUM from MyISAM. +* TWEAK: Batch database rows by the 1000 instead of 100 - proved to be 3x +faster on massive MyISAM tables +* TWEAK: Abort a restoration if the first CREATE TABLE command produces an +error (rather than continue and likely have many more) +* TWEAK: Replace one use of method_exists() to prevent triggering segfault in +some faulty PHP installs +* TWEAK: Allow an extra attempt if in "over-time" - allows recovery from +transient errors (e.g. cloud service temporary outage) in over-time. +* TWEAK: Work-around WP installs with broken cacheing setups where cache +deletion is not working +* TWEAK: If ZipArchive::close() fails, then log the list of files we were +trying to add at the time +* TWEAK: Detect generous amounts of time allowed for running better, and +schedule appropriately +* TWEAK: Add detection of jQuery errors in the admin page, and direct users +with such errors to a help page +* TWEAK: More aggressively clean up temporary files (can lower temporary disk +space requirements) +* TWEAK: Provide the error message sent by Google upon initial Drive +authentication errors. +* TWEAK: Found a case where PHP's is_writable() erroneously returns true - +actually test a write +* TWEAK: Use pseudo-namespacing on the CloudFiles library to prevent clashes +with other plugins (pre-emptive - no known conflicts exist) +* TWEAK: Use higher priority on cron backup schedules call to prevent other +plugins which call WP wrongly from over-writing new cron schedules (e.g. +BackupBuddy) + += 1.6.17 - 2013/06/06 = +* FEATURE: News blog - https://updraftplus.com/news/ - please subscribe if you +want to stay up to date with news of new features, tips, and special offers. +RSS link: http://feeds.feedburner.com/UpdraftPlus +* FEATURE: Restoration/migration now copes with a change of table prefix, and +asks WordPress to recreate your .htaccess/web.config file +* FEATURE: Add support for DreamHost DreamObjects +(http://dreamhost.com/cloud/dreamobjects/) +* FEATURE: Polski / Polish (pl_PL) translation: thanks to Bartosz Kaczmarek +(barth.kaczmarek at gmail.com) +* FEATURE: Add expert options to count expected uncompressed backup size, +show/delete active jobs, and PHP info +* FEATURE: Send backup reports to multiple addresses (comma-separate the +addresses you wish to use) +* FIX: Inform users of Dropbox tokens which stop working +* FIX: Don't flag an error if mu-plugins are selected, but none are found and +WordPress agrees that none exist +* COMPATIBILITY: WordPress multisite post-3.5 does not store blog uploads +separately from main uploads directory +* COMPATIBILITY: Now marked as compatible with WordPress 3.6 +* TWEAK: When errors occur, list them in the notification email and attach the +log file +* TWEAK: Use only one transient per job, and clean it up upon completion +* TWEAK: Added a "Clone/Migrate" button to give a visual clue for people +wanting to do this +* TWEAK: More verbose error reporting from PclZip +* TWEAK: After database restoration, permalinks are flushed (often helps +regenerate .htaccess+web.config files) +* TWEAK: Database backups now put the options table first, to allow earlier +changing of site URL upon migration +* TWEAK: Show PHP + web server versions in the debug information +* TWEAK: More sophisticated attempts to get a writable backup directory, and +more helpful messages if we can't +* TWEAK: Some more logging, data-gathering and algorithm-tweaking to +especially improve the chances for people with astonishingly slow web hosting, +but also tweaks that improve efficiency everywhere, especially for larger +backup sets. +* TWEAK: Migrator plugin now does search+replace after each table (instead of +after them all) +* TWEAK: Clean up temporary files earlier where safe+possible (can lower disk +space requirements) +* TWEAK: Re-scan of known sets now removes those known to be gone from the +list +* TWEAK: Made a few things use AJAX instead of full page loads +* TWEAK: Replace Rackspace logo with current version +* TWEAK: Make missing PHP component warnings more prominent +* TWEAK: Warn users if they have W3 Total Cache's object cache (which has a +bug that affects scheduled tasks) active. +* TWEAK: Add a notice for users who have turned on debugging (some forget to +turn it off, then ask for support when they see lots of debugging notices) + += 1.6.2 - 05/11/2013 = +* FIX: Prevent PHP fatal error on some database restores + += 1.6.1 - 05/06/2013 = +* FEATURE: New "Migrator" add-on for moving sites from one WordPress install +to another (https://updraftplus.com/shop/) +* FEATURE: The "More files" add-on can now back up any files from anywhere on +your filesystem (not just parts of WordPress) +* FEATURE: The "More files" add-on can now exclude specified directories from +the backup of WordPress core +* FEATURE: Dropbox and Google Drive now check available quota before uploading +* FEATURE: Nederlands / Dutch (nl_NL) translation: thanks to Hans van der +Vlist - hansvandervlist at gmail.com +* FEATURE: The SFTP/FTPS add-on now supports implicit encryption (so now both +explicit + implicit are supported) +* FIX: Google Drive now requires additional permissions to download your files +- you will need to re-authenticate if you are downloading or restoring. +* FIX: Fix serious corruption issue in larger Rackspace Cloud Files backups +(fixed a bug in Rackspace's Cloud Files library) +* FIX: Fix mcrypt call in Dropbox module to be compatible with PHP 5.2 on +Windows, and with ancient FreeBSD versions which have no /dev/urandom +* FIX: Allow top-level "Restore" button even if no backup sets currently known +(to allow uploading some) +* FIX: Fixed issues hindering restoration on web hosting setups with file +permissions that invoked WP's remote filesystem methods +* TWEAK: Database backup now includes more info about original WP install +(e.g. WP/PHP versions) +* TWEAK: The "More files" add-on now allows the user to choose whether to +restore wp-config.php or not (and gives help) +* TWEAK: Added an approximate expected row count when beginning to dump out a +table +* TWEAK: Remove the Google Drive URL prefix automatically for those who don't +spot the instruction to do so + += 1.5.22 - 04/16/2013 = +* FIX: 1.5.21 broke Dropbox authentication for some users. Upgrade if you had +that issue. + += 1.5.21 - 04/15/2013 = +* FEATURE: Now restores databases (we recommend the MySQL command-line for +versions created with previous versions of UpdraftPlus) +* FEATURE: Rackspace Cloud Files support +(http://www.rackspace.com/cloud/files/) +* FEATURE: Built-in multi-uploader, allowing easier restoration of old backup +sets +* FEATURE: Allow instant downloading of the most recently modified log file +* FEATURE: Built in drag-and-drop database decrypter for manual decryption +* FEATURE: Deutsch / German translation: thanks to Marcel Herrguth - mherrguth +at mrgeneration.de +* FEATURE: Magyar / Hungarian translation: thanks to Szépe Viktor - +http://www.szepe.net +* FEATURE: Spanish / Español translation: thanks to Fernando Villasmil - +villasmil.fernando at gmail.com +* FEATURE: Added encryption (used by default) to Amazon S3 communications +* FEATURE: New "more files" add-on, allowing backup of WordPress core and +non-WordPress files +* RELIABILITY: Various algorithm tweaks to help larger sites on lower +resources. Largest site a known user has: 1.5Gb +* RELIABILITY/FEATURE: Ship up-to-date SSL certificates, and added expert +options to prefer server SSL CA certificates, and to disable peer verification +* SPEED: Batch INSERT commands in database backups, for much faster +restoration (typically 95% faster) +* SPEED/RELIABILITY: FTP and FTPS (not SFTP) are now chunked and resumable +(both download and upload), subject to your FTP server responding correctly to +SIZE +* SPEED: Re-factoring of admin-area and some backup code into separate +lazy-loaded files, to reduce memory consumption on sites generally +* FIX: Clear PHP's file stat cache when checking for zip file activity - fixes +potential halt on very enormous sites or sites with very low PHP timeouts. +* FIX: Caught some untranslated strings +* FIX: Respect WordPress's WP_MAX_MEMORY_LIMIT constant +* FIX: Remove timezone display from local time - WordPress's get_date_from_gmt +function does not completely do what the manual says it does +* FIX: A small typo slipped into 1.5.5 which prevented some Google Drive users +from setting up new installations +* FIX: Fix strict coding warnings on PHP 5.4 +* TWEAK: In fix-time add-on, fade UI when relevant +* TWEAK: Improved UI of downloader +* TWEAK: Decrease FTP timeouts to improve our chances of getting back an error +before PHP aborts +* TWEAK: Tweaked al relevant methods to follow the general SSL CA certificate +options + += 1.5.5 - 03/26/2013 = +* Now translatable - .pot file included (translators welcome!) +* When restoring, you can now select only some components to restore +* History of previous backups can re-scan to find backups manually imported +(e.g. via FTP) (trunk has drag-and-drop uploader) +* Multisite add-on (https://updraftplus.com/shop/) now stores/restores blogs +and mu-plugins separately +* Display UpdraftPlus's disk space usage +* Internationalisation hooks in main body of plugin +* Correctly remove old 'other' directories from a restoration when requested +* Various layout + niceness fixes upon restoration +* Prevent deletion of local archives upon failed restoration when there was no +cloud storage +* Various usability tweaks for the admin UI, including showing multisite +warning only on UD's pages +* Fix incorrect restoration (since 1.4.0) of directory-less paths from +'others' zip +* Fix prevention of Dropbox re-authentication when Dropbox returns 5xx first +time (library error) +* Clear Dropbox credentials if the user explicitly re-authenticates +* Clean up temporary files left behind by zipArchive::addFile +* Tweak Dropbox library to work from behind very weird proxies that +double-surround the HTTP header +* Improved help for people with broken schedulers +* Fix FTP download error + += 1.4.48 - 03/11/2013 = +* Improve batching on zip creation for sites with very large files +* Unlimited early resumption if zip file creation takes too long +* Suppress some warning notices that can break JavaScript on sites with +notices sent to the browser +* Earlier warning/failure if backup directory was not writable +* Hooks for Dropbox folders add-on +* More scheduler/overlap tweaks, to assist enormous uploads +* When the temporary directory is within the site, store+display relatively +(removes need to modify upon site move) +* Sort existing backups display by date +* Use WordPress time for creation of filenames +* Fix bug in 1.4.47 which caused problems on new site installs +* Prevent erroneous warning when backup zip (usually uploads) has no files + += 1.4.30 - 03/04/2013 = +* Hooks for WebDAV support via add-on + += 1.4.29 - 02/23/2013 = +* Now remembers what cloud service you used for historical backups, if you +later switch +* Now performs user downloads from the settings page asynchronously, meaning +that enormous backups can be fetched this way +* Fixed bug which forced GoogleDrive users to re-authenticate unnecessarily +* Fixed apparent race condition that broke some backups +* Include disk free space warning +* More intelligent scheduling of resumptions, leading to faster completion on +hosts with low max_execution_time values +* Polls and updates in-page backup history status (no refresh required) +* Hooks for SFTP + encrypted FTP add-on + += 1.4.14 - 02/19/2013 = +* Display final status message in email +* Clean-up any old temporary files detected + += 1.4.13 - 02/18/2013 = +* Some extra hooks for "fix time" add-on +(https://updraftplus.com/shop/fix-time/) +* Some internal simplification +* Small spelling + text fixes + += 1.4.11 - 02/13/2013 = +* Various branding tweaks - launch of +updraftplus.com +* Important fix for people with non-encrypted database backups + += 1.4.9 - 02/12/2013 = +* Do more when testing Amazon S3 connectivity (catches users with bucket but +not file access) +* Tweak algorithm for detecting useful activity to further help gigantic sites + += 1.4.7 - 02/09/2013 = +* Tweak for some Amazon EU West 1 bucket users + += 1.4.6 - 02/07/2013 = +* Amazon S3 now works for users with non-US buckets +* Further tweak to overlap detection + += 1.4.2 - 02/06/2013 = +* More Amazon S3 logging which should help people with wrong details +* More race/overlap detection, and more flexible rescheduling + += 1.4.0 - 02/04/2013 = +* Zip file creation is now resumable; and thus the entire backup operation is; +there is now no "too early to resume" point. So even the most enormous site +backups should now be able to proceed. +* Prefer PHP's native zip functions if available - 25% speed-up on zip +creation + += 1.3.22 - 01/31/2013 = +* More help for really large uploads; dynamically alter the maximum number of +resumption attempts if something useful is still happening + += 1.3.20 - 01/30/2013 = +* Add extra error checking in S3 method (can prevent logging loop) + += 1.3.19 - 01/29/2013 = +* Since 1.3.3, the 'Last Backup' indicator in the control panel had not been +updating + += 1.3.18 - 01/28/2013 = +* Made 'expert mode' easier to operate, and tidier options for non-expert +users. +* Some (not total) compliance with PHP's strict coding standards mode +* More detail provided when failing to authorise with Google + += 1.3.15 - 01/26/2013 = +* Various changes to Google Drive authentication to help those who don't enter +the correct details first time, or who later need to change accounts. + += 1.3.12 - 01/25/2013 = +* 1.3.0 to 1.3.8 had a fatal flaw for people with large backups. +* 1.3.0 to 1.3.9 gave erroneous information in the email reports on what the +backup contained. +* Fixed DropBox authentication for some users who were having problems + += 1.3.8 - 01/24/2013 = +* Fixed faulty assumptions in 'resume' code, now leading to more reliable +resuming +* Removed some duplicate code; first attempt and resumptions now uses same +code +* Added further parameters that should be removed on a wipe operation +* More logging of detected double runs + += 1.3.2 - 01/23/2013 = +* Internal reorganisation, enabling UpdraftPlus Premium + += 1.2.46 - 01/22/2013 = +* Easier Dropbox setup (we are now an official production app) +* New button to delete all existing settings +* Admin console now displays rolling status updates +* Feature: choose how many files and databases to retain separately +* Fixed bug with checking access token on Google Drive restore +* Fixed bug producing copious warnings in PHP log +* Fixed bug in automated restoration processes +* Possibly fixed settings saving bug in RTL installations +* Fix erroneous display of max_execution_time warning +* Better logging when running a DB debug session +* Better detection/handling of overlapping/concurrent runs + += 1.2.31 - 01/15/2013 = +* Fixed bug with Dropbox deletions +* Fixed cases where Dropbox failed to resume chunked uploading +* Can now create uncreated zip files on a resumption attempt +* FTP method now supports SSL (automatically detected) +* New "Test FTP settings" button +* Less noise when debugging is turned off +* Fix bug (in 1.2.30) that prevented some database uploads completing + += 1.2.20 - 01/12/2013 = +* Dropbox no longer limited to 150Mb uploads +* Dropbox can upload in chunks and resume uploading chunks +* Improved Dropbox help text + += 1.2.18 - 01/11/2013 = +* Revert Dropbox to CURL-only - was not working properly with WordPress's +built-in methods +* Add note that only up to 150Mb is possible for a Dropbox upload, until we +change our API usage +* Fix unnecessary repetition of database dump upon resumption of a failed +backup + += 1.2.14 - 01/08/2013 = +* Dropbox support (no chunked uploading yet, but otherwise complete) +* Make the creation of the database dump also resumable, for people with +really slow servers +* Database table backups are now timed +* FTP logging slightly improved +* Dropbox support uses WordPress's built-in HTTP functions + += 1.1.16 - 01/07/2013 = +* Requested feature: more frequent scheduling options requested +* Fixed bug which mangled default suggestion for backup working directory on +Windows +* Provide a 'Test S3 Settings' button for Amazon S3 users + += 1.1.11 - 01/04/2013 = +* Bug fix: some backup runs were erroneously being identified as superfluous +and cancelled + += 1.1.9 - 12/31/2012 = +* Big code re-factoring; cloud access methods now modularised, paving way for +easier adding of new methods. Note that Google Drive users may need to +re-authenticate - please check that your backups are working. +* Fix bug whereby some resumptions of failed backups were erroneously +cancelled +* Database encryption made part of what is resumable + += 1.0.16 - 12/24/2012 = +* Improve race detection and clean up already-created files when detected + += 1.0.15 - 12/22/2012 = +* Fixed bug that set 1Tb (instead of 1Mb) chunk sizes for Google Drive uploads +* Added link to some screenshots to help with Google Drive setup +* Allowed use of existing Amazon S3 buckets with restrictive policies +(previously, we tested for the bucket's existence by running a create +operation on it, which may not be permitted) +* Use WordPress's native HTTP functions for greater reliability when +performing Google Drive authorisation +* Deal with WP-Cron racey double events (abort superceeded backups) +* Allow user to download logs from admin interface + += 1.0.5 - 12/13/2012 = +* Tweaked default Google Drive options + += 1.0.4 - 12/10/2012 = +* Implemented resumption/chunked uploading on Google Drive - much bigger sites +can now be backed up +* Fixed bug whereby setting for deleting local backups was lost +* Now marked as 1.0, since we are feature-complete with targeted features for +this release +* Made description fuller + += 0.9.20 - 12/06/2012 = +* Updated to latest S3.php library with chunked uploading patch +* Implemented chunked uploading on Amazon S3 - much bigger sites can now be +backed up with S3 + += 0.9.10 - 11/22/2012 = +* Completed basic Google Drive support (thanks to Sorin Iclanzan, code taken +from "Backup" plugin under GPLv3+); now supporting uploading, purging and +restoring - i.e. full UpdraftPlus functionality +* Licence change to GPLv3+ (from GPLv2+) to allow incorporating Sorin's code +* Tidied/organised the settings screen further + += 0.9.2 - 11/21/2012 = +* Failed uploads can now be re-tried, giving really big blogs a better +opportunity to eventually succeed uploading + += 0.8.51 - 11/19/2012 = +* Moved screenshot into assets, reducing plugin download size + += 0.8.50 - 10/13/2012 = +* Important new feature: back up other directories found in the WP content +(wp-content) directory (not just plugins/themes/uploads, as in original +Updraft) + += 0.8.37 - 10/12/2012 = +* Don't whinge about Google Drive authentication if that method is not current + += 0.8.36 - 10/03/2012 = +* Support using sub-directories in Amazon S3 +* Some more debug logging for Amazon S3 + += 0.8.33 - 09/19/2012 = +* Work around some web hosts with invalid safe_mode configurations + += 0.8.32 - 09/17/2012 = +* Fix a subtle bug that caused database tables from outside of this WordPress +install to be backed up + += 0.8.31 - 09/08/2012 = +* Fixed error deleting old S3 backups. If your expired S3 backups were not +deleted, they should be in future - but you will need to delete manually those +that expired before you installed this update. +* Fixed minor bug closing log file +* Marked as working with WordPress 3.4.2 + += 0.8.29 - 06/29/2012 = +* Marking as tested up to WordPress 3.4.1 + += 0.8.28 - 06/06/2012 = +* Now experimentally supports Google Drive (thanks to Sorin Iclanzan, code +re-used from his Google Drive-only 'backup' plugin) +* New feature: backup files and database on separate schedules +* Tidied and improved retain behaviour + += 0.7.7 - 05/29/2012 = +* Implementation of a logging mechanism to allow easier debugging and +development + += 0.7.4 - 05/21/2012 = +* Removed CloudFront method; I have no way of testing this +* Backup all tables found in the database that have this site's table prefix +* If encryption fails, then abort (don't revert to not encrypting) +* Added ability to decrypt encrypted database backups +* Added ability to opt out of backing up each file group +* Now adds database character set, the lack of which before made database +backups unusable without modifications +* Version number bump to make clear that this is an improvement on the +original Updraft, and is now tried and tested + += 0.1.3 - 01/16/2012 = +* Force backup of all tables found in database (vanilla Updraft only backed up +WP core tables) +* Tweak notification email to include site name + += 0.1 - 08/10/2011 = + +* A fork of Updraft Backup/Restore 0.6.1 by Paul Kehrer with the following +improvements +* Replaced deprecated function calls (in WordPress 3.2.1) +* Removed all warnings from basic admin page with WP_DEBUG on +* Implemented encrypted backup (but not yet automatic restoration) on database +* Some de-uglification of admin interface diff --git a/plugins/updraftplus/class-updraftplus.php b/plugins/updraftplus/class-updraftplus.php new file mode 100644 index 0000000..09d5916 --- /dev/null +++ b/plugins/updraftplus/class-updraftplus.php @@ -0,0 +1,4009 @@ + 'UpdraftPlus Vault', + 'dropbox' => 'Dropbox', + 's3' => 'Amazon S3', + 'cloudfiles' => 'Rackspace Cloud Files', + 'googledrive' => 'Google Drive', + 'onedrive' => 'Microsoft OneDrive', + 'ftp' => 'FTP', + 'azure' => 'Microsoft Azure', + 'sftp' => 'SFTP / SCP', + 'googlecloud' => 'Google Cloud', + 'webdav' => 'WebDAV', + 's3generic' => 'S3-Compatible (Generic)', + 'openstack' => 'OpenStack (Swift)', + 'dreamobjects' => 'DreamObjects', + 'email' => 'Email' + ); + + public $errors = array(); + public $nonce; + public $logfile_name = ""; + public $logfile_handle = false; + public $backup_time; + public $job_time_ms; + + public $opened_log_time; + private $backup_dir; + + private $jobdata; + + public $something_useful_happened = false; + public $have_addons = false; + + // Used to schedule resumption attempts beyond the tenth, if needed + public $current_resumption; + public $newresumption_scheduled = false; + + public $cpanel_quota_readable = false; + + public $error_reporting_stop_when_logged = false; + + private $combine_jobs_around; + + public function __construct() { + + // Bitcasa support is deprecated + if (is_file(UPDRAFTPLUS_DIR.'/addons/bitcasa.php')) $this->backup_methods['bitcasa'] = 'Bitcasa'; + + // Copy.Com will be closed on 1st May 2016 + if (is_file(UPDRAFTPLUS_DIR.'/addons/copycom.php')) $this->backup_methods['copycom'] = 'Copy.Com'; + + // Initialisation actions - takes place on plugin load + + if ($fp = fopen(UPDRAFTPLUS_DIR.'/updraftplus.php', 'r')) { + $file_data = fread($fp, 1024); + if (preg_match("/Version: ([\d\.]+)(\r|\n)/", $file_data, $matches)) { + $this->version = $matches[1]; + } + fclose($fp); + } + + # Create admin page + add_action('init', array($this, 'handle_url_actions')); + // Run earlier than default - hence earlier than other components + // admin_menu runs earlier, and we need it because options.php wants to use $updraftplus_admin before admin_init happens + add_action(apply_filters('updraft_admin_menu_hook', 'admin_menu'), array($this, 'admin_menu'), 9); + # Not a mistake: admin-ajax.php calls only admin_init and not admin_menu + add_action('admin_init', array($this, 'admin_menu'), 9); + + # The two actions which we schedule upon + add_action('updraft_backup', array($this, 'backup_files')); + add_action('updraft_backup_database', array($this, 'backup_database')); + + # The three actions that can be called from "Backup Now" + add_action('updraft_backupnow_backup', array($this, 'backupnow_files')); + add_action('updraft_backupnow_backup_database', array($this, 'backupnow_database')); + add_action('updraft_backupnow_backup_all', array($this, 'backup_all')); + + # backup_all as an action is legacy (Oct 2013) - there may be some people who wrote cron scripts to use it + add_action('updraft_backup_all', array($this, 'backup_all')); + + # This is our runs-after-backup event, whose purpose is to see if it succeeded or failed, and resume/mom-up etc. + add_action('updraft_backup_resume', array($this, 'backup_resume'), 10, 3); + + # If files + db are on different schedules but are scheduled for the same time, then combine them + add_filter('schedule_event', array($this, 'schedule_event')); + + add_action('plugins_loaded', array($this, 'plugins_loaded')); + + # Prevent iThemes Security from telling people that they have no backups (and advertising them another product on that basis!) + add_filter('itsec_has_external_backup', '__return_true', 999); + add_filter('itsec_external_backup_link', array($this, 'itsec_external_backup_link'), 999); + add_filter('itsec_scheduled_external_backup', array($this, 'itsec_scheduled_external_backup'), 999); + + # register_deactivation_hook(__FILE__, array($this, 'deactivation')); + if (!empty($_POST) && !empty($_GET['udm_action']) && 'vault_disconnect' == $_GET['udm_action'] && !empty($_POST['udrpc_message']) && !empty($_POST['reset_hash'])) { + add_action('wp_loaded', array($this, 'wp_loaded_vault_disconnect'), 1); + } + + } + + public function itsec_scheduled_external_backup($x) { return (!wp_next_scheduled('updraft_backup')) ? false : true; } + public function itsec_external_backup_link($x) { return UpdraftPlus_Options::admin_page_url().'?page=updraftplus'; } + + public function wp_loaded_vault_disconnect() { + $opts = UpdraftPlus_Options::get_updraft_option('updraft_updraftvault'); + if (is_array($opts) && !empty($opts['token']) && $opts['token']) { + $site_id = $this->siteid(); + $hash = hash('sha256', $site_id.':::'.$opts['token']); + if ($hash == $_POST['reset_hash']) { + $this->log('This site has been remotely disconnected from UpdraftPlus Vault'); + require_once(UPDRAFTPLUS_DIR.'/methods/updraftvault.php'); + $vault = new UpdraftPlus_BackupModule_updraftvault(); + $vault->ajax_vault_disconnect(); + // Die, as the vault method has already sent output + die; + } else { + $this->log('An invalid request was received to disconnect this site from UpdraftPlus Vault'); + } + } + echo json_encode(array('disconnected' => 0)); + die; + } + + // Gets an RPC object, and sets some defaults on it that we always want + public function get_udrpc($indicator_name = 'migrator.updraftplus.com') { + if (!class_exists('UpdraftPlus_Remote_Communications')) require_once(apply_filters('updraftplus_class_udrpc_path', UPDRAFTPLUS_DIR.'/includes/class-udrpc.php', $this->version)); + $ud_rpc = new UpdraftPlus_Remote_Communications($indicator_name); + $ud_rpc->set_can_generate(true); + return $ud_rpc; + } + + public function ensure_phpseclib($classes = false, $class_paths = false) { + + if (false === strpos(get_include_path(), UPDRAFTPLUS_DIR.'/includes/phpseclib')) set_include_path(UPDRAFTPLUS_DIR.'/includes/phpseclib'.PATH_SEPARATOR.get_include_path()); + + $this->no_deprecation_warnings_on_php7(); + + if ($classes) { + $any_missing = false; + if (is_string($classes)) $classes = array($classes); + foreach ($classes as $cl) { + if (!class_exists($cl)) $any_missing = true; + } + if (!$any_missing) return; + } + + if ($class_paths) { + if (is_string($class_paths)) $class_paths = array($class_paths); + foreach ($class_paths as $cp) { + require_once(UPDRAFTPLUS_DIR.'/includes/phpseclib/'.$cp.'.php'); + } + } + } + + // Ugly, but necessary to prevent debug output breaking the conversation when the user has debug turned on + private function no_deprecation_warnings_on_php7() { + // PHP_MAJOR_VERSION is defined in PHP 5.2.7+ + // We don't test for PHP > 7 because the specific deprecated element will be removed in PHP 8 - and so no warning should come anyway (and we shouldn't suppress other stuff until we know we need to). + if (defined('PHP_MAJOR_VERSION') && PHP_MAJOR_VERSION == 7) { + $old_level = error_reporting(); + $new_level = $old_level & ~E_DEPRECATED; + if ($old_level != $new_level) error_reporting($new_level); + $this->no_deprecation_warnings = true; + } + } + + public function close_browser_connection($txt = '') { + // Close browser connection so that it can resume AJAX polling + header('Content-Length: '.((!empty($txt)) ? 4+strlen($txt) : '0')); + header('Connection: close'); + header('Content-Encoding: none'); + if (session_id()) session_write_close(); + echo "\r\n\r\n"; + echo $txt; + // These two added - 19-Feb-15 - started being required on local dev machine, for unknown reason (probably some plugin that started an output buffer). + if (ob_get_level()) ob_end_flush(); + flush(); + } + + // Returns the number of bytes free, if it can be detected; otherwise, false + // Presently, we only detect CPanel. If you know of others, then feel free to contribute! + public function get_hosting_disk_quota_free() { + if (!@is_dir('/usr/local/cpanel') || $this->detect_safe_mode() || !function_exists('popen') || (!@is_executable('/usr/local/bin/perl') && !@is_executable('/usr/local/cpanel/3rdparty/bin/perl')) || (defined('UPDRAFTPLUS_SKIP_CPANEL_QUOTA_CHECK') && UPDRAFTPLUS_SKIP_CPANEL_QUOTA_CHECK)) return false; + + $perl = (@is_executable('/usr/local/cpanel/3rdparty/bin/perl')) ? '/usr/local/cpanel/3rdparty/bin/perl' : '/usr/local/bin/perl'; + + $exec = "UPDRAFTPLUSKEY=updraftplus $perl ".UPDRAFTPLUS_DIR."/includes/get-cpanel-quota-usage.pl"; + + $handle = @popen($exec, 'r'); + if (!is_resource($handle)) return false; + + $found = false; + $lines = 0; + while (false === $found && !feof($handle) && $lines<100) { + $lines++; + $w = fgets($handle); + # Used, limit, remain + if (preg_match('/RESULT: (\d+) (\d+) (\d+) /', $w, $matches)) { $found = true; } + } + $ret = pclose($handle); + if (false === $found ||$ret != 0) return false; + + if ((int)$matches[2]<100 || ($matches[1] + $matches[3] != $matches[2])) return false; + + $this->cpanel_quota_readable = true; + + return $matches; + } + + public function last_modified_log() { + $updraft_dir = $this->backups_dir_location(); + + $log_file = ''; + $mod_time = false; + $nonce = ''; + + if ($handle = @opendir($updraft_dir)) { + while (false !== ($entry = readdir($handle))) { + // The latter match is for files created internally by zipArchive::addFile + if (preg_match('/^log\.([a-z0-9]+)\.txt$/i', $entry, $matches)) { + $mtime = filemtime($updraft_dir.'/'.$entry); + if ($mtime > $mod_time) { + $mod_time = $mtime; + $log_file = $updraft_dir.'/'.$entry; + $nonce = $matches[1]; + } + } + } + @closedir($handle); + } + + return array($mod_time, $log_file, $nonce); + } + + // This function may get called multiple times, so write accordingly + public function admin_menu() { + // We are in the admin area: now load all that code + global $updraftplus_admin; + if (empty($updraftplus_admin)) require_once(UPDRAFTPLUS_DIR.'/admin.php'); + + if (isset($_GET['wpnonce']) && isset($_GET['page']) && isset($_GET['action']) && $_GET['page'] == 'updraftplus' && $_GET['action'] == 'downloadlatestmodlog' && wp_verify_nonce($_GET['wpnonce'], 'updraftplus_download')) { + + list ($mod_time, $log_file, $nonce) = $this->last_modified_log(); + + if ($mod_time >0) { + if (is_readable($log_file)) { + header('Content-type: text/plain'); + readfile($log_file); + exit; + } else { + add_action('all_admin_notices', array($this,'show_admin_warning_unreadablelog') ); + } + } else { + add_action('all_admin_notices', array($this,'show_admin_warning_nolog') ); + } + } + + } + + public function modify_http_options($opts) { + + if (!is_array($opts)) return $opts; + + if (!UpdraftPlus_Options::get_updraft_option('updraft_ssl_useservercerts')) $opts['sslcertificates'] = UPDRAFTPLUS_DIR.'/includes/cacert.pem'; + + $opts['sslverify'] = UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify') ? false : true; + + return $opts; + + } + + // Handle actions passed on to method plugins; e.g. Google OAuth 2.0 - ?action=updraftmethod-googledrive-auth&page=updraftplus + // Nov 2013: Google's new cloud console, for reasons as yet unknown, only allows you to enter a redirect_uri with a single URL parameter... thus, we put page second, and re-add it if necessary. Apr 2014: Bitcasa already do this, so perhaps it is part of the OAuth2 standard or best practice somewhere. + // Also handle action=downloadlog + public function handle_url_actions() { + + // First, basic security check: must be an admin page, with ability to manage options, with the right parameters + // Also, only on GET because WordPress on the options page repeats parameters sometimes when POST-ing via the _wp_referer field + if (isset($_SERVER['REQUEST_METHOD']) && 'GET' == $_SERVER['REQUEST_METHOD'] && isset($_GET['action'])) { + if (preg_match("/^updraftmethod-([a-z]+)-([a-z]+)$/", $_GET['action'], $matches) && file_exists(UPDRAFTPLUS_DIR.'/methods/'.$matches[1].'.php') && UpdraftPlus_Options::user_can_manage()) { + $_GET['page'] = 'updraftplus'; + $_REQUEST['page'] = 'updraftplus'; + $method = $matches[1]; + require_once(UPDRAFTPLUS_DIR.'/methods/'.$method.'.php'); + $call_class = "UpdraftPlus_BackupModule_".$method; + $call_method = "action_".$matches[2]; + $backup_obj = new $call_class; + add_action('http_request_args', array($this, 'modify_http_options')); + try { + if (method_exists($backup_obj, $call_method)) { + call_user_func(array($backup_obj, $call_method)); + } elseif (method_exists($backup_obj, 'action_handler')) { + call_user_func(array($backup_obj, 'action_handler'), $matches[2]); + } + } catch (Exception $e) { + $this->log(sprintf(__("%s error: %s", 'updraftplus'), $method, $e->getMessage().' ('.$e->getCode().')', 'error')); + } + remove_action('http_request_args', array($this, 'modify_http_options')); + } elseif (isset( $_GET['page'] ) && $_GET['page'] == 'updraftplus' && $_GET['action'] == 'downloadlog' && isset($_GET['updraftplus_backup_nonce']) && preg_match("/^[0-9a-f]{12}$/",$_GET['updraftplus_backup_nonce']) && UpdraftPlus_Options::user_can_manage()) { + // No WordPress nonce is needed here or for the next, since the backup is already nonce-based + $updraft_dir = $this->backups_dir_location(); + $log_file = $updraft_dir.'/log.'.$_GET['updraftplus_backup_nonce'].'.txt'; + if (is_readable($log_file)) { + header('Content-type: text/plain'); + if (!empty($_GET['force_download'])) header('Content-Disposition: attachment; filename="'.basename($log_file).'"'); + readfile($log_file); + exit; + } else { + add_action('all_admin_notices', array($this,'show_admin_warning_unreadablelog') ); + } + } elseif (isset( $_GET['page'] ) && $_GET['page'] == 'updraftplus' && $_GET['action'] == 'downloadfile' && isset($_GET['updraftplus_file']) && preg_match('/^backup_([\-0-9]{15})_.*_([0-9a-f]{12})-db([0-9]+)?+\.(gz\.crypt)$/i', $_GET['updraftplus_file']) && UpdraftPlus_Options::user_can_manage()) { + // Though this (venerable) code uses the action 'downloadfile', in fact, it's not that general: it's just for downloading a decrypted copy of encrypted databases, and nothing else + $updraft_dir = $this->backups_dir_location(); + $file = $_GET['updraftplus_file']; + $spool_file = $updraft_dir.'/'.basename($file); + if (is_readable($spool_file)) { + $dkey = isset($_GET['decrypt_key']) ? stripslashes($_GET['decrypt_key']) : ''; + $this->spool_file($spool_file, $dkey); + exit; + } else { + add_action('all_admin_notices', array($this,'show_admin_warning_unreadablefile') ); + } + } elseif ($_GET['action'] == 'updraftplus_spool_file' && !empty($_GET['what']) && !empty($_GET['backup_timestamp']) && is_numeric($_GET['backup_timestamp']) && UpdraftPlus_Options::user_can_manage()) { + // At some point, it may be worth merging this with the previous section + $updraft_dir = $this->backups_dir_location(); + + $findex = isset($_GET['findex']) ? (int)$_GET['findex'] : 0; + $backup_timestamp = $_GET['backup_timestamp']; + $what = $_GET['what']; + + $backup_history = UpdraftPlus_Options::get_updraft_option('updraft_backup_history'); + + $filename = null; + if (isset($backup_history[$backup_timestamp])) { + if ('db' != substr($what, 0, 2)) { + $backupable_entities = $this->get_backupable_file_entities(); + if (!isset($backupable_entities[$what])) $filename = false; + } + if (false !== $filename && isset($backup_history[$backup_timestamp][$what])) { + if (is_string($backup_history[$backup_timestamp][$what]) && 0 == $findex) { + $filename = $backup_history[$backup_timestamp][$what]; + } elseif (isset($backup_history[$backup_timestamp][$what][$findex])) { + $filename = $backup_history[$backup_timestamp][$what][$findex]; + } + } + } + if (empty($filename) || !is_readable($updraft_dir.'/'.basename($filename))) { + echo json_encode(array('result' => __('UpdraftPlus notice:','updraftplus').' '.__('The given file was not found, or could not be read.','updraftplus'))); + exit; + } + + $dkey = isset($_GET['decrypt_key']) ? stripslashes($_GET['decrypt_key']) : ""; + + $this->spool_file($updraft_dir.'/'.basename($filename), $dkey); + exit; + + } + } + } + + public function get_table_prefix($allow_override = false) { + global $wpdb; + if (is_multisite() && !defined('MULTISITE')) { + # In this case (which should only be possible on installs upgraded from pre WP 3.0 WPMU), $wpdb->get_blog_prefix() cannot be made to return the right thing. $wpdb->base_prefix is not explicitly marked as public, so we prefer to use get_blog_prefix if we can, for future compatibility. + $prefix = $wpdb->base_prefix; + } else { + $prefix = $wpdb->get_blog_prefix(0); + } + return ($allow_override) ? apply_filters('updraftplus_get_table_prefix', $prefix) : $prefix; + } + + public function siteid() { + $sid = get_site_option('updraftplus-addons_siteid'); + if (!is_string($sid) || empty($sid)) { + $sid = md5(rand().microtime(true).home_url()); + update_site_option('updraftplus-addons_siteid', $sid); + } + return $sid; + } + + public function show_admin_warning_unreadablelog() { + global $updraftplus_admin; + $updraftplus_admin->show_admin_warning(''.__('UpdraftPlus notice:','updraftplus').' '.__('The log file could not be read.','updraftplus')); + } + + public function show_admin_warning_nolog() { + global $updraftplus_admin; + $updraftplus_admin->show_admin_warning(''.__('UpdraftPlus notice:','updraftplus').' '.__('No log files were found.','updraftplus')); + } + + public function show_admin_warning_unreadablefile() { + global $updraftplus_admin; + $updraftplus_admin->show_admin_warning(''.__('UpdraftPlus notice:','updraftplus').' '.__('The given file was not found, or could not be read.','updraftplus')); + } + + public function plugins_loaded() { + + // Tell WordPress where to find the translations + load_plugin_textdomain('updraftplus', false, basename(dirname(__FILE__)).'/languages/'); + + // The Google Analyticator plugin does something horrible: loads an old version of the Google SDK on init, always - which breaks us + if ((defined('DOING_CRON') && DOING_CRON) || (defined('DOING_AJAX') && DOING_AJAX && isset($_REQUEST['subaction']) && 'backupnow' == $_REQUEST['subaction']) || (isset($_GET['page']) && $_GET['page'] == 'updraftplus')) { + remove_action('init', 'ganalyticator_stats_init'); + // Appointments+ does the same; but provides a cleaner way to disable it + @define('APP_GCAL_DISABLE', true); + } + + if (file_exists(UPDRAFTPLUS_DIR.'/central/bootstrap.php')) require_once(UPDRAFTPLUS_DIR.'/central/bootstrap.php'); + + } + + // Cleans up temporary files found in the updraft directory (and some in the site root - pclzip) + // Always cleans up temporary files over 12 hours old. + // With parameters, also cleans up those. + // Also cleans out old job data older than 12 hours old (immutable value) + // include_cachelist also looks to match any files of cached file analysis data + public function clean_temporary_files($match = '', $older_than = 43200, $include_cachelist = false) { + # Clean out old job data + if ($older_than > 10000) { + global $wpdb; + + $all_jobs = $wpdb->get_results("SELECT option_name, option_value FROM $wpdb->options WHERE option_name LIKE 'updraft_jobdata_%'", ARRAY_A); + foreach ($all_jobs as $job) { + $val = maybe_unserialize($job['option_value']); + # TODO: Can simplify this after a while (now all jobs use job_time_ms) - 1 Jan 2014 + $delete = false; + if (!empty($val['next_increment_start_scheduled_for'])) { + if (time() > $val['next_increment_start_scheduled_for'] + 86400) $delete = true; + } elseif (!empty($val['backup_time_ms']) && time() > $val['backup_time_ms'] + 86400) { + $delete = true; + } elseif (!empty($val['job_time_ms']) && time() > $val['job_time_ms'] + 86400) { + $delete = true; + } elseif (!empty($val['job_type']) && 'backup' != $val['job_type'] && empty($val['backup_time_ms']) && empty($val['job_time_ms'])) { + $delete = true; + } + if ($delete) delete_option($job['option_name']); + } + } + $updraft_dir = $this->backups_dir_location(); + $now_time=time(); + if ($handle = opendir($updraft_dir)) { + while (false !== ($entry = readdir($handle))) { + $manifest_match = preg_match("/^udmanifest$match\.json$/i", $entry); + // This match is for files created internally by zipArchive::addFile + $ziparchive_match = preg_match("/$match([0-9]+)?\.zip\.tmp\.([A-Za-z0-9]){6}?$/i", $entry); + // zi followed by 6 characters is the pattern used by /usr/bin/zip on Linux systems. It's safe to check for, as we have nothing else that's going to match that pattern. + $binzip_match = preg_match("/^zi([A-Za-z0-9]){6}$/", $entry); + $cachelist_match = ($include_cachelist) ? preg_match("/$match-cachelist-.*.tmp$/i", $entry) : false; + $browserlog_match = preg_match('/^log\.[0-9a-f]+-browser\.txt$/', $entry); + # Temporary files from the database dump process - not needed, as is caught by the catch-all + # $table_match = preg_match("/${match}-table-(.*)\.table(\.tmp)?\.gz$/i", $entry); + # The gz goes in with the txt, because we *don't* want to reap the raw .txt files + if ((preg_match("/$match\.(tmp|table|txt\.gz)(\.gz)?$/i", $entry) || $cachelist_match || $ziparchive_match || $binzip_match || $manifest_match || $browserlog_match) && is_file($updraft_dir.'/'.$entry)) { + // We delete if a parameter was specified (and either it is a ZipArchive match or an order to delete of whatever age), or if over 12 hours old + if (($match && ($ziparchive_match || $binzip_match || $cachelist_match || $manifest_match || 0 == $older_than) && $now_time-filemtime($updraft_dir.'/'.$entry) >= $older_than) || $now_time-filemtime($updraft_dir.'/'.$entry)>43200) { + $this->log("Deleting old temporary file: $entry"); + @unlink($updraft_dir.'/'.$entry); + } + } + } + @closedir($handle); + } + # Depending on the PHP setup, the current working directory could be ABSPATH or wp-admin - scan both + # Since 1.9.32, we set them to go into $updraft_dir, so now we must check there too. Checking the old ones doesn't hurt, as other backup plugins might leave their temporary files around can cause issues with huge files. + foreach (array(ABSPATH, ABSPATH.'wp-admin/', $updraft_dir.'/') as $path) { + if ($handle = opendir($path)) { + while (false !== ($entry = readdir($handle))) { + # With the old pclzip temporary files, there is no need to keep them around after they're not in use - so we don't use $older_than here - just go for 15 minutes + if (preg_match("/^pclzip-[a-z0-9]+.tmp$/", $entry) && $now_time-filemtime($path.$entry) >= 900) { + $this->log("Deleting old PclZip temporary file: $entry"); + @unlink($path.$entry); + } + } + @closedir($handle); + } + } + } + + public function backup_time_nonce($nonce = false) { + $this->job_time_ms = microtime(true); + $this->backup_time = time(); + if (false === $nonce) $nonce = substr(md5(time().rand()), 20); + $this->nonce = $nonce; + return $nonce; + } + + public function get_wordpress_version() { + static $got_wp_version = false; + if (!$got_wp_version) { + global $wp_version; + @include(ABSPATH.WPINC.'/version.php'); + $got_wp_version = $wp_version; + } + return $got_wp_version; + } + + /** + * Opens the log file, writes a standardised header, and stores the resulting name and handle in the class variables logfile_name/logfile_handle/opened_log_time (and possibly backup_is_already_complete) + * + * @param string $nonce - Used in the log file name to distinguish it from other log files. Should be the job nonce. + * @returns void + */ + public function logfile_open($nonce) { + + $updraft_dir = $this->backups_dir_location(); + $this->logfile_name = $updraft_dir."/log.$nonce.txt"; + + if (file_exists($this->logfile_name)) { + $seek_to = max((filesize($this->logfile_name) - 340), 1); + $handle = fopen($this->logfile_name, 'r'); + if (is_resource($handle)) { + // Returns 0 on success + if (0 === @fseek($handle, $seek_to)) { + $bytes_back = filesize($this->logfile_name) - $seek_to; + # Return to the end of the file + $read_recent = fread($handle, $bytes_back); + # Move to end of file - ought to be redundant + if (false !== strpos($read_recent, ') The backup apparently succeeded') && false !== strpos($read_recent, 'and is now complete')) { + $this->backup_is_already_complete = true; + } + } + fclose($handle); + } + } + + $this->logfile_handle = fopen($this->logfile_name, 'a'); + + $this->opened_log_time = microtime(true); + + $this->write_log_header(array($this, 'log')); + + } + + /** + * Writes a standardised header to the log file, using the specified logging function, which needs to be compatible with (or to be) UpdraftPlus::log() + * + * @param callable $logging_function + */ + public function write_log_header($logging_function) { + + global $wpdb; + + $updraft_dir = $this->backups_dir_location(); + + call_user_func($logging_function, 'Opened log file at time: '.date('r').' on '.network_site_url()); + + $wp_version = $this->get_wordpress_version(); + $mysql_version = $wpdb->db_version(); + $safe_mode = $this->detect_safe_mode(); + + $memory_limit = ini_get('memory_limit'); + $memory_usage = round(@memory_get_usage(false)/1048576, 1); + $memory_usage2 = round(@memory_get_usage(true)/1048576, 1); + + // Attempt to raise limit to avoid false positives + @set_time_limit(UPDRAFTPLUS_SET_TIME_LIMIT); + $max_execution_time = (int)@ini_get("max_execution_time"); + + $logline = "UpdraftPlus WordPress backup plugin (https://updraftplus.com): ".$this->version." WP: ".$wp_version." PHP: ".phpversion()." (".PHP_SAPI.", ".@php_uname().") MySQL: $mysql_version WPLANG: ".get_locale()." Server: ".$_SERVER["SERVER_SOFTWARE"]." safe_mode: $safe_mode max_execution_time: $max_execution_time memory_limit: $memory_limit (used: ${memory_usage}M | ${memory_usage2}M) multisite: ".(is_multisite() ? 'Y' : 'N')." openssl: ".(defined('OPENSSL_VERSION_TEXT') ? OPENSSL_VERSION_TEXT : 'N')." mcrypt: ".(function_exists('mcrypt_encrypt') ? 'Y' : 'N')." LANG: ".getenv('LANG')." ZipArchive::addFile: "; + + // method_exists causes some faulty PHP installations to segfault, leading to support requests + if (version_compare(phpversion(), '5.2.0', '>=') && extension_loaded('zip')) { + $logline .= 'Y'; + } else { + $logline .= (class_exists('ZipArchive') && method_exists('ZipArchive', 'addFile')) ? "Y" : "N"; + } + + if (0 === $this->current_resumption) { + $memlim = $this->memory_check_current(); + if ($memlim<65 && $memlim>0) { + $this->log(sprintf(__('The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)', 'updraftplus'), round($memlim, 1)), 'warning', 'lowram'); + } + if ($max_execution_time>0 && $max_execution_time<20) { + call_user_func($logging_function, sprintf(__('The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)', 'updraftplus'), $max_execution_time, 90), 'warning', 'lowmaxexecutiontime'); + } + + } + + call_user_func($logging_function, $logline); + + $hosting_bytes_free = $this->get_hosting_disk_quota_free(); + if (is_array($hosting_bytes_free)) { + $perc = round(100*$hosting_bytes_free[1]/(max($hosting_bytes_free[2], 1)), 1); + $quota_free = ' / '.sprintf('Free disk space in account: %s (%s used)', round($hosting_bytes_free[3]/1048576, 1)." MB", "$perc %"); + if ($hosting_bytes_free[3] < 1048576*50) { + $quota_free_mb = round($hosting_bytes_free[3]/1048576, 1); + call_user_func($logging_function, sprintf(__('Your free space in your hosting account is very low - only %s Mb remain', 'updraftplus'), $quota_free_mb), 'warning', 'lowaccountspace'.$quota_free_mb); + } + } else { + $quota_free = ''; + } + + $disk_free_space = @disk_free_space($updraft_dir); + # == rather than === here is deliberate; support experience shows that a result of (int)0 is not reliable. i.e. 0 can be returned when the real result should be false. + if ($disk_free_space == false) { + call_user_func($logging_function, "Free space on disk containing Updraft's temporary directory: Unknown".$quota_free); + } else { + call_user_func($logging_function, "Free space on disk containing Updraft's temporary directory: ".round($disk_free_space/1048576, 1)." MB".$quota_free); + $disk_free_mb = round($disk_free_space/1048576, 1); + if ($disk_free_space < 50*1048576) call_user_func($logging_function, sprintf(__('Your free disk space is very low - only %s Mb remain', 'updraftplus'), round($disk_free_space/1048576, 1)), 'warning', 'lowdiskspace'.$disk_free_mb); + } + + } + + /* Logs the given line, adding (relative) time stamp and newline + Note these subtleties of log handling: + - Messages at level 'error' are not logged to file - it is assumed that a separate call to log() at another level will take place. This is because at level 'error', messages are translated; whereas the log file is for developers who may not know the translated language. Messages at level 'error' are for the user. + - Messages at level 'error' do not persist through the job (they are only saved with save_backup_history(), and never restored from there - so only the final save_backup_history() errors persist); we presume that either a) they will be cleared on the next attempt, or b) they will occur again on the final attempt (at which point they will go to the user). But... + - ... messages at level 'warning' persist. These are conditions that are unlikely to be cleared, not-fatal, but the user should be informed about. The $uniq_id field (which should not be numeric) can then be used for warnings that should only be logged once + $skip_dblog = true is suitable when there's a risk of excessive logging, and the information is not important for the user to see in the browser on the settings page + + The uniq_id field is also used with PHP event detection - it is set then to 'php_event' - which is useful for anything hooking the action to detect + */ + + public function verify_free_memory($how_many_bytes_needed) { + // This returns in MB + $memory_limit = $this->memory_check_current(); + if (!is_numeric($memory_limit)) return false; + $memory_limit = $memory_limit * 1048576; + $memory_usage = round(@memory_get_usage(false)/1048576, 1); + $memory_usage2 = round(@memory_get_usage(true)/1048576, 1); + if ($memory_limit - $memory_usage > $how_many_bytes_needed && $memory_limit - $memory_usage2 > $how_many_bytes_needed) return true; + return false; + } + + /* + $line - the log line + $level - the log level: notice, warning, error. If suffixed with a hypen and a destination, then the default destination is changed too. + $uniq_id - (string)each of these will only be logged once + $skip_dblog - if true, then do not write to the database + */ + public function log($line, $level = 'notice', $uniq_id = false, $skip_dblog = false) { + + $destination = 'default'; + if (preg_match('/^([a-z]+)-([a-z]+)$/', $level, $matches)) { + $level = $matches[1]; + $destination = $matches[2]; + } + + if ('error' == $level || 'warning' == $level) { + if ('error' == $level && 0 == $this->error_count()) $this->log('An error condition has occurred for the first time during this job'); + if ($uniq_id) { + $this->errors[$uniq_id] = array('level' => $level, 'message' => $line); + } else { + $this->errors[] = array('level' => $level, 'message' => $line); + } + # Errors are logged separately + if ('error' == $level) return; + # It's a warning + $warnings = $this->jobdata_get('warnings'); + if (!is_array($warnings)) $warnings = array(); + if ($uniq_id) { + $warnings[$uniq_id] = $line; + } else { + $warnings[] = $line; + } + $this->jobdata_set('warnings', $warnings); + } + + if (false === ($line = apply_filters('updraftplus_logline', $line, $this->nonce, $level, $uniq_id, $destination))) return; + + if ($this->logfile_handle) { + # Record log file times relative to the backup start, if possible + $rtime = (!empty($this->job_time_ms)) ? microtime(true)-$this->job_time_ms : microtime(true)-$this->opened_log_time; + fwrite($this->logfile_handle, sprintf("%08.03f", round($rtime, 3))." (".$this->current_resumption.") ".(('notice' != $level) ? '['.ucfirst($level).'] ' : '').$line."\n"); + } + + switch ($this->jobdata_get('job_type')) { + case 'download': + // Download messages are keyed on the job (since they could be running several), and type + // The values of the POST array were checked before + $findex = empty($_POST['findex']) ? 0 : $_POST['findex']; + + if (!empty($_POST['timestamp']) && !empty($_POST['type'])) $this->jobdata_set('dlmessage_'.$_POST['timestamp'].'_'.$_POST['type'].'_'.$findex, $line); + + break; + case 'restore': + #if ('debug' != $level) echo $line."\n"; + break; + default: + if (!$skip_dblog && 'debug' != $level) UpdraftPlus_Options::update_updraft_option('updraft_lastmessage', $line." (".date_i18n('M d H:i:s').")", false); + break; + } + + if (defined('UPDRAFTPLUS_CONSOLELOG')) print $line."\n"; + if (defined('UPDRAFTPLUS_BROWSERLOG')) print htmlentities($line)."
        \n"; + } + + public function log_removewarning($uniq_id) { + $warnings = $this->jobdata_get('warnings'); + if (!is_array($warnings)) $warnings=array(); + unset($warnings[$uniq_id]); + $this->jobdata_set('warnings', $warnings); + unset($this->errors[$uniq_id]); + } + + # For efficiency, you can also feed false or a string into this function + public function log_wp_error($err, $echo = false, $logerror = false) { + if (false === $err) return false; + if (is_string($err)) { + $this->log("Error message: $err"); + if ($echo) $this->log(sprintf(__('Error: %s', 'updraftplus'), $err), 'notice-warning'); + if ($logerror) $this->log($err, 'error'); + return false; + } + foreach ($err->get_error_messages() as $msg) { + $this->log("Error message: $msg"); + if ($echo) $this->log(sprintf(__('Error: %s', 'updraftplus'), $msg), 'notice-warning'); + if ($logerror) $this->log($msg, 'error'); + } + $codes = $err->get_error_codes(); + if (is_array($codes)) { + foreach ($codes as $code) { + $data = $err->get_error_data($code); + if (!empty($data)) { + $ll = (is_string($data)) ? $data : serialize($data); + $this->log("Error data (".$code."): ".$ll); + } + } + } + # Returns false so that callers can return with false more efficiently if they wish + return false; + } + + public function get_max_packet_size() { + global $wpdb; + $mp = (int)$wpdb->get_var("SELECT @@session.max_allowed_packet"); + # Default to 1MB + $mp = (is_numeric($mp) && $mp > 0) ? $mp : 1048576; + # 32MB + if ($mp < 33554432) { + $save = $wpdb->show_errors(false); + $req = @$wpdb->query("SET GLOBAL max_allowed_packet=33554432"); + $wpdb->show_errors($save); + if (!$req) $this->log("Tried to raise max_allowed_packet from ".round($mp/1048576,1)." MB to 32 MB, but failed (".$wpdb->last_error.", ".serialize($req).")"); + $mp = (int)$wpdb->get_var("SELECT @@session.max_allowed_packet"); + # Default to 1MB + $mp = (is_numeric($mp) && $mp > 0) ? $mp : 1048576; + } + $this->log("Max packet size: ".round($mp/1048576, 1)." MB"); + return $mp; + } + + # Q. Why is this abstracted into a separate function? A. To allow poedit and other parsers to pick up the need to translate strings passed to it (and not pick up all of those passed to log()). + # 1st argument = the line to be logged (obligatory) + # Further arguments = parameters for sprintf() + public function log_e() { + $args = func_get_args(); + # Get first argument + $pre_line = array_shift($args); + # Log it whilst still in English + if (is_wp_error($pre_line)) { + $this->log_wp_error($pre_line); + } else { + // Now run (v)sprintf on it, using any remaining arguments. vsprintf = sprintf but takes an array instead of individual arguments + $this->log(vsprintf($pre_line, $args)); + // This is slightly hackish, in that we have no way to use a different level or destination. In that case, the caller should instead call log() twice with different parameters, instead of using this convenience function. + $this->log(vsprintf(__($pre_line, 'updraftplus'), $args), 'notice-restore'); + } + } + + // This function is used by cloud methods to provide standardised logging, but more importantly to help us detect that meaningful activity took place during a resumption run, so that we can schedule further resumptions if it is worthwhile + public function record_uploaded_chunk($percent, $extra = '', $file_path = false, $log_it = true) { + + // Touch the original file, which helps prevent overlapping runs + if ($file_path) touch($file_path); + + // What this means in effect is that at least one of the files touched during the run must reach this percentage (so lapping round from 100 is OK) + if ($percent > 0.7 * ($this->current_resumption - max($this->jobdata_get('uploaded_lastreset'), 9))) $this->something_useful_happened(); + + // Log it + global $updraftplus_backup; + $log = (!empty($updraftplus_backup->current_service)) ? ucfirst($updraftplus_backup->current_service)." chunked upload: $percent % uploaded" : ''; + if ($log && $log_it) $this->log($log.(($extra) ? " ($extra)" : '')); + // If we are on an 'overtime' resumption run, and we are still meaningfully uploading, then schedule a new resumption + // Our definition of meaningful is that we must maintain an overall average of at least 0.7% per run, after allowing 9 runs for everything else to get going + // i.e. Max 100/.7 + 9 = 150 runs = 760 minutes = 12 hrs 40, if spaced at 5 minute intervals. However, our algorithm now decreases the intervals if it can, so this should not really come into play + // If they get 2 minutes on each run, and the file is 1GB, then that equals 10.2MB/120s = minimum 59KB/s upload speed required + + $upload_status = $this->jobdata_get('uploading_substatus'); + if (is_array($upload_status)) { + $upload_status['p'] = $percent/100; + $this->jobdata_set('uploading_substatus', $upload_status); + } + + } + + /** + * Method for helping remote storage methods to upload files in chunks without needing to duplicate all the overhead + * + * @param string $file the full path to the file + * @param object $caller the object to call back to do the actual network API calls; needs to have a chunked_upload() method. + * @param string $cloudpath this is passed back to the callback function; within this function, it is used only for logging + * @param string $logname the prefix used on log lines. Also passed back to the callback function. + * @param integer $chunk_size the size, in bytes, of each upload chunk + * @param integer $uploaded_size how many bytes have already been uploaded. This is passed back to the callback function; within this method, it is only used for logging. + * @param boolean $singletons when the file, given the chunk size, would only have one chunk, should that be uploaded (true), or instead should 1 be returned (false) ? + */ + public function chunked_upload($caller, $file, $cloudpath, $logname, $chunk_size, $uploaded_size, $singletons = false) { + + $fullpath = $this->backups_dir_location().'/'.$file; + $orig_file_size = filesize($fullpath); + if ($uploaded_size >= $orig_file_size) return true; + + $chunks = floor($orig_file_size / $chunk_size); + // There will be a remnant unless the file size was exactly on a chunk boundary + if ($orig_file_size % $chunk_size > 0) $chunks++; + + $this->log("$logname upload: $file (chunks: $chunks, size: $chunk_size) -> $cloudpath ($uploaded_size)"); + + if (0 == $chunks) { + return 1; + } elseif ($chunks < 2 && !$singletons) { + return 1; + } else { + + if (false == ($fp = @fopen($fullpath, 'rb'))) { + $this->log("$logname: failed to open file: $fullpath"); + $this->log("$file: ".sprintf(__('%s Error: Failed to open local file','updraftplus'), $logname), 'error'); + return false; + } + + $errors_so_far = 0; + $upload_start = 0; + $upload_end = -1; + $chunk_index = 1; + // The file size minus one equals the byte offset of the final byte + $upload_end = min($chunk_size - 1, $orig_file_size - 1); + + while ($upload_start < $orig_file_size) { + + // Don't forget the +1; otherwise the last byte is omitted + $upload_size = $upload_end - $upload_start + 1; + + if ($upload_start) fseek($fp, $upload_start); + + /* + * Valid return values for $uploaded are many, as the possibilities have grown over time. + * This could be cleaned up; but, it works, and it's not hugely complex. + * + * WP_Error : an error occured. The only permissible codes are: reduce_chunk_size (only on the first chunk), try_again + * (bool)true : What was requested was done + * (int)1 : What was requested was done, but do not log anything + * (bool)false : There was an error + * (Object) : Properties: + * (bool)log: (bool) - if absent, defaults to true + * (int)new_chunk_size: advisory amount for the chunk size for future chunks + * NOT IMPLEMENTED: (int)bytes_uploaded: Actual number of bytes uploaded (needs to be positive - o/w, should return an error instead) + * + * N.B. Consumers should consult $fp and $upload_start to get data; they should not re-calculate from $chunk_index, which is not an indicator of file position. + */ + $uploaded = $caller->chunked_upload($file, $fp, $chunk_index, $upload_size, $upload_start, $upload_end, $orig_file_size); + + // Try again? (Just once - added in 1.12.6 (can make more sophisticated if there is a need)) + if (is_wp_error($uploaded) && 'try_again' == $uploaded->get_error_code()) { + // Arbitrary wait + sleep(3); + $this->log("Re-trying after wait (to allow apparent inconsistency to clear)"); + $uploaded = $caller->chunked_upload($file, $fp, $chunk_index, $upload_size, $upload_start, $upload_end, $orig_file_size); + } + + // This is the only other supported case of a WP_Error - otherwise, a boolean must be returned + // Note that this is only allowed on the first chunk. The caller is responsible to remember its chunk size if it uses this facility. + if (1 == $chunk_index && is_wp_error($uploaded) && 'reduce_chunk_size' == $uploaded->get_error_code() && false != ($new_chunk_size = $uploaded->get_error_data()) && is_numeric($new_chunk_size)) { + $this->log("Re-trying with new chunk size: ".$new_chunk_size); + return $this->chunked_upload($caller, $file, $cloudpath, $logname, $new_chunk_size, $uploaded_size, $singletons); + } + + $uploaded_amount = $chunk_size; + + /* + // Not using this approach for now. Instead, going to allow the consumers to increase the next chunk size + if (is_object($uploaded) && isset($uploaded->bytes_uploaded)) { + if (!$uploaded->bytes_uploaded) { + $uploaded = false; + } else { + $uploaded_amount = $uploaded->bytes_uploaded; + $uploaded = (!isset($uploaded->log) || $uploaded->log) ? true : 1; + } + } + */ + if (is_object($uploaded) && isset($uploaded->new_chunk_size)) { + if ($uploaded->new_chunk_size >= 1048576) $new_chunk_size = $uploaded->new_chunk_size; + $uploaded = (!isset($uploaded->log) || $uploaded->log) ? true : 1; + } + + if ($uploaded) { + $perc = round(100*($upload_end + 1)/max($orig_file_size, 1), 1); + // Consumers use a return value of (int)1 (rather than (bool)true) to suppress logging + $log_it = ($uploaded === 1) ? false : true; + $this->record_uploaded_chunk($perc, $chunk_index, $fullpath, $log_it); + + // $uploaded_bytes = $upload_end + 1; + + } else { + $errors_so_far++; + if ($errors_so_far >= 3) { @fclose($fp); return false; } + } + + $chunk_index++; + $upload_start = $upload_end + 1; + $upload_end += isset($new_chunk_size) ? $uploaded_amount + $new_chunk_size - $chunk_size : $uploaded_amount; + $upload_end = min($upload_end, $orig_file_size - 1); + + } + + @fclose($fp); + + if ($errors_so_far) return false; + + // All chunks are uploaded - now combine the chunks + $ret = true; + if (method_exists($caller, 'chunked_upload_finish')) { + $ret = $caller->chunked_upload_finish($file); + if (!$ret) { + $this->log("$logname - failed to re-assemble chunks (".$e->getMessage().')'); + $this->log(sprintf(__('%s error - failed to re-assemble chunks', 'updraftplus'), $logname), 'error'); + } + } + if ($ret) { + $this->log("$logname upload: success"); + # UpdraftPlus_RemoteStorage_Addons_Base calls this itself + if (!is_a($caller, 'UpdraftPlus_RemoteStorage_Addons_Base')) $this->uploaded_file($file); + } + + return $ret; + + } + } + + /** + * Provides a convenience function allowing remote storage methods to download a file in chunks, without duplicated overhead. + * + * @param string $file - The basename of the file being downloaded + * @param object $method - This remote storage method object needs to have a chunked_download() method to call back + * @param integer $remote_size - The size, in bytes, of the object being downloaded + * @param boolean $manually_break_up - Whether to break the download into multiple network operations (rather than just issuing a GET with a range beginning at the end of the already-downloaded data, and carrying on until it times out) + * @param * $passback - A value to pass back to the callback function + * @param integer $chunk_size - Break up the download into chunks of this number of bytes. Should be set if and only if $manually_break_up is true. + */ + public function chunked_download($file, $method, $remote_size, $manually_break_up = false, $passback = null, $chunk_size = 1048576) { + + try { + + $fullpath = $this->backups_dir_location().'/'.$file; + $start_offset = file_exists($fullpath) ? filesize($fullpath) : 0; + + if ($start_offset >= $remote_size) { + $this->log("File is already completely downloaded ($start_offset/$remote_size)"); + return true; + } + + // Some more remains to download - so let's do it + // N.B. We use ftell(), which precludes us from using open in append-only ('a') mode - see https://php.net/manual/en/function.fopen.php + if (!($fh = fopen($fullpath, 'c'))) { + $this->log("Error opening local file: $fullpath"); + $this->log($file.": ".__("Error",'updraftplus').": ".__('Error opening local file: Failed to download','updraftplus'), 'error'); + return false; + } + + $last_byte = ($manually_break_up) ? min($remote_size, $start_offset + $chunk_size ) : $remote_size; + + # This only affects logging + $expected_bytes_delivered_so_far = true; + + while ($start_offset < $remote_size) { + $headers = array(); + // If resuming, then move to the end of the file + + $requested_bytes = $last_byte-$start_offset; + + if ($expected_bytes_delivered_so_far) { + $this->log("$file: local file is status: $start_offset/$remote_size bytes; requesting next $requested_bytes bytes"); + } else { + $this->log("$file: local file is status: $start_offset/$remote_size bytes; requesting next chunk (${start_offset}-)"); + } + + if ($start_offset > 0 || $last_byte<$remote_size) { + fseek($fh, $start_offset); + // N.B. Don't alter this format without checking what relies upon it + $last_byte_start = $last_byte - 1; + $headers['Range'] = "bytes=$start_offset-$last_byte_start"; + } + + /* + * The most common method is for the remote storage module to return a string with the results in it. In that case, the final $fh parameter is unused. However, since not all SDKs have that option conveniently, it is also possible to use the file handle and write directly to that; in that case, the method can either return the number of bytes written, or (boolean)true to infer it from the new file *pointer*. + * The method is free to write/return as much data as it pleases. + */ + $ret = $method->chunked_download($file, $headers, $passback, $fh); + if (true === $ret) { + clearstatcache(); + // Some SDKs (including AWS/S3) close the resource + // N.B. We use ftell(), which precludes us from using open in append-only ('a') mode - see https://php.net/manual/en/function.fopen.php + if (is_resource($fh)) { + $ret = ftell($fh); + } else { + $ret = filesize($fullpath); + // fseek returns - on success + if (false == ($fh = fopen($fullpath, 'c')) || 0 !== fseek($fh, $ret)) { + $this->log("Error opening local file: $fullpath"); + $this->log($file.": ".__("Error",'updraftplus').": ".__('Error opening local file: Failed to download','updraftplus'), 'error'); + return false; + } + } + if (is_integer($ret)) $ret -= $start_offset; + } + + // Note that this covers a false code returned either by chunked_download() or by ftell. + if (false === $ret) return false; + + $returned_bytes = is_integer($ret) ? $ret : strlen($ret); + + if ($returned_bytes > $requested_bytes || $returned_bytes < $requested_bytes - 1) $expected_bytes_delivered_so_far = false; + + if (!is_integer($ret) && !fwrite($fh, $ret)) throw new Exception('Write failure (start offset: '.$start_offset.', bytes: '.strlen($ret).'; requested: '.$requested_bytes.')'); + + clearstatcache(); + $start_offset = ftell($fh); + $last_byte = ($manually_break_up) ? min($remote_size, $start_offset + $chunk_size) : $remote_size; + + } + + } catch(Exception $e) { + $this->log('Error ('.get_class($e).') - failed to download the file ('.$e->getCode().', '.$e->getMessage().')'); + $this->log("$file: ".__('Error - failed to download the file', 'updraftplus').' ('.$e->getCode().', '.$e->getMessage().')' ,'error'); + return false; + } + + fclose($fh); + + return true; + } + + public function decrypt($fullpath, $key, $ciphertext = false) { + $this->ensure_phpseclib('Crypt_Rijndael', 'Crypt/Rijndael'); + $rijndael = new Crypt_Rijndael(); + if (defined('UPDRAFTPLUS_DECRYPTION_ENGINE')) { + if ('openssl' == UPDRAFTPLUS_DECRYPTION_ENGINE) { + $rijndael->setPreferredEngine(CRYPT_ENGINE_OPENSSL); + } elseif ('mcrypt' == UPDRAFTPLUS_DECRYPTION_ENGINE) { + $rijndael->setPreferredEngine(CRYPT_ENGINE_MCRYPT); + } elseif ('internal' == UPDRAFTPLUS_DECRYPTION_ENGINE) { + $rijndael->setPreferredEngine(CRYPT_ENGINE_INTERNAL); + } + } + $rijndael->setKey($key); + return (false == $ciphertext) ? $rijndael->decrypt(file_get_contents($fullpath)) : $rijndael->decrypt($ciphertext); + } + + public function detect_safe_mode() { + return (@ini_get('safe_mode') && strtolower(@ini_get('safe_mode')) != "off") ? 1 : 0; + } + + public function find_working_sqldump($logit = true, $cacheit = true) { + + // The hosting provider may have explicitly disabled the popen or proc_open functions + if ($this->detect_safe_mode() || !function_exists('popen') || !function_exists('escapeshellarg')) { + if ($cacheit) $this->jobdata_set('binsqldump', false); + return false; + } + $existing = $this->jobdata_get('binsqldump', null); + # Theoretically, we could have moved machines, due to a migration + if (null !== $existing && (!is_string($existing) || @is_executable($existing))) return $existing; + + $updraft_dir = $this->backups_dir_location(); + global $wpdb; + $table_name = $wpdb->get_blog_prefix().'options'; + $tmp_file = md5(time().rand()).".sqltest.tmp"; + $pfile = md5(time().rand()).'.tmp'; + file_put_contents($updraft_dir.'/'.$pfile, "[mysqldump]\npassword=".DB_PASSWORD."\n"); + + $result = false; + foreach (explode(',', UPDRAFTPLUS_MYSQLDUMP_EXECUTABLE) as $potsql) { + + if (!@is_executable($potsql)) continue; + + if ($logit) $this->log("Testing: $potsql"); + + if (strtolower(substr(PHP_OS, 0, 3)) == 'win') { + $exec = "cd ".escapeshellarg(str_replace('/', '\\', $updraft_dir))." & "; + $siteurl = "'siteurl'"; + if (false !== strpos($potsql, ' ')) $potsql = '"'.$potsql.'"'; + } else { + $exec = "cd ".escapeshellarg($updraft_dir)."; "; + $siteurl = "\\'siteurl\\'"; + if (false !== strpos($potsql, ' ')) $potsql = "'$potsql'"; + } + + $exec .= "$potsql --defaults-file=$pfile --max_allowed_packet=1M --quote-names --add-drop-table --skip-comments --skip-set-charset --allow-keywords --dump-date --extended-insert --where=option_name=$siteurl --user=".escapeshellarg(DB_USER)." --host=".escapeshellarg(DB_HOST)." ".DB_NAME." ".escapeshellarg($table_name).""; + + $handle = popen($exec, "r"); + if ($handle) { + if (!feof($handle)) { + $output = fread($handle, 8192); + if ($output && $logit) { + $log_output = (strlen($output) > 512) ? substr($output, 0, 512).' (truncated - '.strlen($output).' bytes total)' : $output; + $this->log("Output: ".str_replace("\n", '\\n', trim($log_output))); + } + } else { + $output = ''; + } + $ret = pclose($handle); + if ($ret !=0) { + if ($logit) { + $this->log("Binary mysqldump: error (code: $ret)"); + } + } else { +// $dumped = file_get_contents($updraft_dir.'/'.$tmp_file, false, null, 0, 4096); + if (stripos($output, 'insert into') !== false) { + if ($logit) $this->log("Working binary mysqldump found: $potsql"); + $result = $potsql; + break; + } + } + } else { + if ($logit) $this->log("Error: popen failed"); + } + } + + @unlink($updraft_dir.'/'.$pfile); + @unlink($updraft_dir.'/'.$tmp_file); + + if ($cacheit) $this->jobdata_set('binsqldump', $result); + + return $result; + } + + // We require -@ and -u -r to work - which is the usual Linux binzip + public function find_working_bin_zip($logit = true, $cacheit = true) { + if ($this->detect_safe_mode()) return false; + // The hosting provider may have explicitly disabled the popen or proc_open functions + if (!function_exists('popen') || !function_exists('proc_open') || !function_exists('escapeshellarg')) { + if ($cacheit) $this->jobdata_set('binzip', false); + return false; + } + + $existing = $this->jobdata_get('binzip', null); + # Theoretically, we could have moved machines, due to a migration + if (null !== $existing && (!is_string($existing) || @is_executable($existing))) return $existing; + + $updraft_dir = $this->backups_dir_location(); + foreach (explode(',', UPDRAFTPLUS_ZIP_EXECUTABLE) as $potzip) { + if (!@is_executable($potzip)) continue; + if ($logit) $this->log("Testing: $potzip"); + + # Test it, see if it is compatible with Info-ZIP + # If you have another kind of zip, then feel free to tell me about it + @mkdir($updraft_dir.'/binziptest/subdir1/subdir2', 0777, true); + file_put_contents($updraft_dir.'/binziptest/subdir1/subdir2/test.html', 'UpdraftPlus is a great backup and restoration plugin for WordPress.'); + @unlink($updraft_dir.'/binziptest/test.zip'); + if (is_file($updraft_dir.'/binziptest/subdir1/subdir2/test.html')) { + + $exec = "cd ".escapeshellarg($updraft_dir)."; $potzip"; + if (defined('UPDRAFTPLUS_BINZIP_OPTS') && UPDRAFTPLUS_BINZIP_OPTS) $exec .= ' '.UPDRAFTPLUS_BINZIP_OPTS; + $exec .= " -v -u -r binziptest/test.zip binziptest/subdir1"; + + $all_ok=true; + $handle = popen($exec, "r"); + if ($handle) { + while (!feof($handle)) { + $w = fgets($handle); + if ($w && $logit) $this->log("Output: ".trim($w)); + } + $ret = pclose($handle); + if ($ret !=0) { + if ($logit) $this->log("Binary zip: error (code: $ret)"); + $all_ok = false; + } + } else { + if ($logit) $this->log("Error: popen failed"); + $all_ok = false; + } + + # Now test -@ + if (true == $all_ok) { + file_put_contents($updraft_dir.'/binziptest/subdir1/subdir2/test2.html', 'UpdraftPlus is a really great backup and restoration plugin for WordPress.'); + + $exec = $potzip; + if (defined('UPDRAFTPLUS_BINZIP_OPTS') && UPDRAFTPLUS_BINZIP_OPTS) $exec .= ' '.UPDRAFTPLUS_BINZIP_OPTS; + $exec .= " -v -@ binziptest/test.zip"; + + $all_ok=true; + + $descriptorspec = array( + 0 => array('pipe', 'r'), + 1 => array('pipe', 'w'), + 2 => array('pipe', 'w') + ); + $handle = proc_open($exec, $descriptorspec, $pipes, $updraft_dir); + if (is_resource($handle)) { + if (!fwrite($pipes[0], "binziptest/subdir1/subdir2/test2.html\n")) { + @fclose($pipes[0]); + @fclose($pipes[1]); + @fclose($pipes[2]); + $all_ok = false; + } else { + fclose($pipes[0]); + while (!feof($pipes[1])) { + $w = fgets($pipes[1]); + if ($w && $logit) $this->log("Output: ".trim($w)); + } + fclose($pipes[1]); + + while (!feof($pipes[2])) { + $last_error = fgets($pipes[2]); + if (!empty($last_error) && $logit) $this->log("Stderr output: ".trim($w)); + } + fclose($pipes[2]); + + $ret = proc_close($handle); + if ($ret !=0) { + if ($logit) $this->log("Binary zip: error (code: $ret)"); + $all_ok = false; + } + + } + + } else { + if ($logit) $this->log("Error: proc_open failed"); + $all_ok = false; + } + + } + + // Do we now actually have a working zip? Need to test the created object using PclZip + // If it passes, then remove dirs and then return $potzip; + $found_first = false; + $found_second = false; + if ($all_ok && file_exists($updraft_dir.'/binziptest/test.zip')) { + if (function_exists('gzopen')) { + if(!class_exists('PclZip')) require_once(ABSPATH.'/wp-admin/includes/class-pclzip.php'); + $zip = new PclZip($updraft_dir.'/binziptest/test.zip'); + $foundit = 0; + if (($list = $zip->listContent()) != 0) { + foreach ($list as $obj) { + if ($obj['filename'] && !empty($obj['stored_filename']) && 'binziptest/subdir1/subdir2/test.html' == $obj['stored_filename'] && $obj['size']==131) $found_first=true; + if ($obj['filename'] && !empty($obj['stored_filename']) && 'binziptest/subdir1/subdir2/test2.html' == $obj['stored_filename'] && $obj['size']==138) $found_second=true; + } + } + } else { + // PclZip will die() if gzopen is not found + // Obviously, this is a kludge - we assume it's working. We could, of course, just return false - but since we already know now that PclZip can't work, that only leaves ZipArchive + $this->log("gzopen function not found; PclZip cannot be invoked; will assume that binary zip works if we have a non-zero file"); + if (filesize($updraft_dir.'/binziptest/test.zip') > 0) { + $found_first = true; + $found_second = true; + } + } + } + $this->remove_binzip_test_files($updraft_dir); + if ($found_first && $found_second) { + if ($logit) $this->log("Working binary zip found: $potzip"); + if ($cacheit) $this->jobdata_set('binzip', $potzip); + return $potzip; + } + + } + $this->remove_binzip_test_files($updraft_dir); + } + if ($cacheit) $this->jobdata_set('binzip', false); + return false; + } + + private function remove_binzip_test_files($updraft_dir) { + @unlink($updraft_dir.'/binziptest/subdir1/subdir2/test.html'); + @unlink($updraft_dir.'/binziptest/subdir1/subdir2/test2.html'); + @rmdir($updraft_dir.'/binziptest/subdir1/subdir2'); + @rmdir($updraft_dir.'/binziptest/subdir1'); + @unlink($updraft_dir.'/binziptest/test.zip'); + @rmdir($updraft_dir.'/binziptest'); + } + + // This function is purely for timing - we just want to know the maximum run-time; not whether we have achieved anything during it + public function record_still_alive() { + // Update the record of maximum detected runtime on each run + $time_passed = $this->jobdata_get('run_times'); + if (!is_array($time_passed)) $time_passed = array(); + + $time_this_run = microtime(true)-$this->opened_log_time; + $time_passed[$this->current_resumption] = $time_this_run; + $this->jobdata_set('run_times', $time_passed); + + $resume_interval = $this->jobdata_get('resume_interval'); + if ($time_this_run + 30 > $resume_interval) { + $new_interval = ceil($time_this_run + 30); + set_site_transient('updraft_initial_resume_interval', (int)$new_interval, 8*86400); + $this->log("The time we have been running (".round($time_this_run,1).") is approaching the resumption interval ($resume_interval) - increasing resumption interval to $new_interval"); + $this->jobdata_set('resume_interval', $new_interval); + } + + } + + public function something_useful_happened() { + + $this->record_still_alive(); + + if (!$this->something_useful_happened) { + $useful_checkin = $this->jobdata_get('useful_checkin'); + if (empty($useful_checkin) || $this->current_resumption > $useful_checkin) $this->jobdata_set('useful_checkin', $this->current_resumption); + } + + $this->something_useful_happened = true; + + $updraft_dir = $this->backups_dir_location(); + if (file_exists($updraft_dir.'/deleteflag-'.$this->nonce.'.txt')) { + $this->log("User request for abort: backup job will be immediately halted"); + @unlink($updraft_dir.'/deleteflag-'.$this->nonce.'.txt'); + $this->backup_finish($this->current_resumption + 1, true, true, $this->current_resumption, true); + die; + } + + if ($this->current_resumption >= 9 && false == $this->newresumption_scheduled) { + $this->log("This is resumption ".$this->current_resumption.", but meaningful activity is still taking place; so a new one will be scheduled"); + // We just use max here to make sure we get a number at all + $resume_interval = max($this->jobdata_get('resume_interval'), 75); + // Don't consult the minimum here + // if (!is_numeric($resume_interval) || $resume_interval<300) { $resume_interval = 300; } + $schedule_for = time()+$resume_interval; + $this->newresumption_scheduled = $schedule_for; + wp_schedule_single_event($schedule_for, 'updraft_backup_resume', array($this->current_resumption + 1, $this->nonce)); + } else { + $this->reschedule_if_needed(); + } + } + + public function option_filter_get($which) { + global $wpdb; + $row = $wpdb->get_row($wpdb->prepare("SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", $which)); + // Has to be get_row instead of get_var because of funkiness with 0, false, null values + return (is_object($row)) ? $row->option_value : false; + } + + public function parse_filename($filename) { + if (preg_match('/^backup_([\-0-9]{10})-([0-9]{4})_.*_([0-9a-f]{12})-([\-a-z]+)([0-9]+)?+\.(zip|gz|gz\.crypt)$/i', $filename, $matches)) { + return array( + 'date' => strtotime($matches[1].' '.$matches[2]), + 'nonce' => $matches[3], + 'type' => $matches[4], + 'index' => (empty($matches[5]) ? 0 : $matches[5]-1), + 'extension' => $matches[6]); + } else { + return false; + } + } + + // Pretty printing + public function printfile($description, $history, $entity, $checksums, $jobdata, $smaller=false) { + + if (empty($history[$entity])) return; + + if ($smaller) { + $pfiles = "".$description." (".sprintf(__('files: %s', 'updraftplus'), count($history[$entity])).")
        \n"; + } else { + $pfiles = "

        ".$description." (".sprintf(__('files: %s', 'updraftplus'), count($history[$entity])).")

        \n\n"; + } + + $pfiles .= '
          '; + $files = $history[$entity]; + if (is_string($files)) $files = array($files); + + foreach ($files as $ind => $file) { + + $op = htmlspecialchars($file)."\n"; + $skey = $entity.((0 == $ind) ? '' : $ind).'-size'; + + $meta = ''; + if ('db' == substr($entity, 0, 2) && 'db' != $entity) { + $dind = substr($entity, 2); + if (is_array($jobdata) && !empty($jobdata['backup_database']) && is_array($jobdata['backup_database']) && !empty($jobdata['backup_database'][$dind]) && is_array($jobdata['backup_database'][$dind]['dbinfo']) && !empty($jobdata['backup_database'][$dind]['dbinfo']['host'])) { + $dbinfo = $jobdata['backup_database'][$dind]['dbinfo']; + $meta .= sprintf(__('External database (%s)', 'updraftplus'), $dbinfo['user'].'@'.$dbinfo['host'].'/'.$dbinfo['name'])."
          "; + } + } + if (isset($history[$skey])) $meta .= sprintf(__('Size: %s MB', 'updraftplus'), round($history[$skey]/1048576, 1)); + $ckey = $entity.$ind; + foreach ($checksums as $ck) { + $ck_plain = false; + if (isset($history['checksums'][$ck][$ckey])) { + $meta .= (($meta) ? ', ' : '').sprintf(__('%s checksum: %s', 'updraftplus'), strtoupper($ck), $history['checksums'][$ck][$ckey]); + $ck_plain = true; + } + if (isset($history['checksums'][$ck][$ckey.'.crypt'])) { + if ($ck_plain) $meta .= ' '.__('(when decrypted)'); + $meta .= (($meta) ? ', ' : '').sprintf(__('%s checksum: %s', 'updraftplus'), strtoupper($ck), $history['checksums'][$ck][$ckey.'.crypt']); + } + } + + $fileinfo = apply_filters("updraftplus_fileinfo_$entity", array(), $ind); + if (is_array($fileinfo) && !empty($fileinfo)) { + if (isset($fileinfo['html'])) { + $meta .= $fileinfo['html']; + } + } + + #if ($meta) $meta = " ($meta)"; + if ($meta) $meta = "
          $meta"; + $pfiles .= '
        • '.$op.$meta."\n
        • \n"; + } + + $pfiles .= "
        \n"; + + return $pfiles; + + } + + // This important function returns a list of file entities that can potentially be backed up (subject to users settings), and optionally further meta-data about them + public function get_backupable_file_entities($include_others = true, $full_info = false) { + + $wp_upload_dir = $this->wp_upload_dir(); + + if ($full_info) { + $arr = array( + 'plugins' => array('path' => untrailingslashit(WP_PLUGIN_DIR), 'description' => __('Plugins','updraftplus')), + 'themes' => array('path' => WP_CONTENT_DIR.'/themes', 'description' => __('Themes','updraftplus')), + 'uploads' => array('path' => untrailingslashit($wp_upload_dir['basedir']), 'description' => __('Uploads','updraftplus')) + ); + } else { + $arr = array( + 'plugins' => untrailingslashit(WP_PLUGIN_DIR), + 'themes' => WP_CONTENT_DIR.'/themes', + 'uploads' => untrailingslashit($wp_upload_dir['basedir']) + ); + } + + $arr = apply_filters('updraft_backupable_file_entities', $arr, $full_info); + + // We then add 'others' on to the end + if ($include_others) { + if ($full_info) { + $arr['others'] = array('path' => WP_CONTENT_DIR, 'description' => __('Others', 'updraftplus')); + } else { + $arr['others'] = WP_CONTENT_DIR; + } + } + + // Entries that should be added after 'others' + $arr = apply_filters('updraft_backupable_file_entities_final', $arr, $full_info); + + return $arr; + + } + + # This is just a long-winded way of forcing WP to get the value afresh from the db, instead of using the auto-loaded/cached value (which can be out of date, especially since backups are, by their nature, long-running) + public function filter_updraft_backup_history($v) { + global $wpdb; + $row = $wpdb->get_row( $wpdb->prepare("SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", 'updraft_backup_history' ) ); + if (is_object($row )) return maybe_unserialize($row->option_value); + return false; + } + + public function php_error_to_logline($errno, $errstr, $errfile, $errline) { + switch ($errno) { + case 1: $e_type = 'E_ERROR'; break; + case 2: $e_type = 'E_WARNING'; break; + case 4: $e_type = 'E_PARSE'; break; + case 8: $e_type = 'E_NOTICE'; break; + case 16: $e_type = 'E_CORE_ERROR'; break; + case 32: $e_type = 'E_CORE_WARNING'; break; + case 64: $e_type = 'E_COMPILE_ERROR'; break; + case 128: $e_type = 'E_COMPILE_WARNING'; break; + case 256: $e_type = 'E_USER_ERROR'; break; + case 512: $e_type = 'E_USER_WARNING'; break; + case 1024: $e_type = 'E_USER_NOTICE'; break; + case 2048: $e_type = 'E_STRICT'; break; + case 4096: $e_type = 'E_RECOVERABLE_ERROR'; break; + case 8192: $e_type = 'E_DEPRECATED'; break; + case 16384: $e_type = 'E_USER_DEPRECATED'; break; + case 30719: $e_type = 'E_ALL'; break; + default: $e_type = "E_UNKNOWN ($errno)"; break; + } + + if (!is_string($errstr)) $errstr = serialize($errstr); + + if (0 === strpos($errfile, ABSPATH)) $errfile = substr($errfile, strlen(ABSPATH)); + + if ('E_DEPRECATED' == $e_type && !empty($this->no_deprecation_warnings)) { + return false; + } + + return "PHP event: code $e_type: $errstr (line $errline, $errfile)"; + + } + + public function php_error($errno, $errstr, $errfile, $errline) { + if (0 == error_reporting()) return true; + $logline = $this->php_error_to_logline($errno, $errstr, $errfile, $errline); + if (false !== $logline) $this->log($logline, 'notice', 'php_event'); + // Pass it up the chain + return $this->error_reporting_stop_when_logged; + } + + public function backup_resume($resumption_no, $bnonce) { + + set_error_handler(array($this, 'php_error'), E_ALL & ~E_STRICT); + + $this->current_resumption = $resumption_no; + + @set_time_limit(UPDRAFTPLUS_SET_TIME_LIMIT); + @ignore_user_abort(true); + + $runs_started = array(); + $time_now = microtime(true); + + add_filter('pre_option_updraft_backup_history', array($this, 'filter_updraft_backup_history')); + + // Restore state + $resumption_extralog = ''; + $prev_resumption = $resumption_no - 1; + $last_successful_resumption = -1; + $job_type = 'backup'; + + if ($resumption_no > 0) { + + $this->nonce = $bnonce; + $this->backup_time = $this->jobdata_get('backup_time'); + $this->job_time_ms = $this->jobdata_get('job_time_ms'); + + # Get the warnings before opening the log file, as opening the log file may generate new ones (which then leads to $this->errors having duplicate entries when they are copied over below) + $warnings = $this->jobdata_get('warnings'); + + $this->logfile_open($bnonce); + + // Import existing warnings. The purpose of this is so that when save_backup_history() is called, it has a complete set - because job data expires quickly, whilst the warnings of the last backup run need to persist + if (is_array($warnings)) { + foreach ($warnings as $warning) { + $this->errors[] = array('level' => 'warning', 'message' => $warning); + } + } + + $runs_started = $this->jobdata_get('runs_started'); + if (!is_array($runs_started)) $runs_started=array(); + $time_passed = $this->jobdata_get('run_times'); + if (!is_array($time_passed)) $time_passed = array(); + + foreach ($time_passed as $run => $passed) { + if (isset($runs_started[$run]) && $runs_started[$run] + $time_passed[$run] + 30 > $time_now) { + // We don't want to increase the resumption if WP has started two copies of the same resumption off + if ($run && $run == $resumption_no) { + $increase_resumption = false; + $this->log("It looks like WordPress's scheduler has started multiple instances of this resumption"); + } else { + $increase_resumption = true; + } + $this->terminate_due_to_activity('check-in', round($time_now, 1), round($runs_started[$run] + $time_passed[$run], 1), $increase_resumption); + } + } + + for ($i = 0; $i<=$prev_resumption; $i++) { + if (isset($time_passed[$i])) $last_successful_resumption = $i; + } + + if (isset($time_passed[$prev_resumption])) { + $resumption_extralog = ", previous check-in=".round($time_passed[$prev_resumption], 1)."s"; + } else { + $this->no_checkin_last_time = true; + } + + // This is just a simple test to catch restorations of old backup sets where the backup includes a resumption of the backup job + if ($time_now - $this->backup_time > 172800 && true == apply_filters('updraftplus_check_obsolete_backup', true, $time_now, $this)) { + + // We have seen cases where the get_site_option() call that self::get_jobdata() relies on returns nothing, even though the data was there in the database. This appears to be sometimes reproducible for the people who get it, but stops being reproducible if they change their backup times - which suggests that they're having failures at times of extreme load. We can attempt to detect this case, and reschedule, instead of aborting. + if (empty($this->backup_time) && empty($this->backup_is_already_complete) && !empty($this->logfile_name) && is_readable($this->logfile_name)) { + $first_log_bit = file_get_contents($this->logfile_name, false, null, 0, 250); + if (preg_match('/\(0\) Opened log file at time: (.*) on /', $first_log_bit, $matches)) { + $first_opened = strtotime($matches[1]); + // The value of 1000 seconds here is somewhat arbitrary; but allows for the problem to occur in ~ the first 15 minutes. In practice, the problem is extremely rare; if this does not catch it, we can tweak the algorithm. + if (time() - $first_opened < 1000) { + $this->log("This backup task (".$this->nonce.") failed to load its job data (possible database server malfunction), but appears to be only recently started: scheduling a fresh resumption in order to try again, and then ending this resumption ($time_now, ".$this->backup_time.") (existing jobdata keys: ".implode(', ', array_keys($this->jobdata)).")"); + $this->reschedule(120); + die; + } + } + } + + $this->log("This backup task (".$this->nonce.") is either complete or began over 2 days ago: ending ($time_now, ".$this->backup_time.") (existing jobdata keys: ".implode(', ', array_keys($this->jobdata)).")"); + die; + } + + } else { + $label = $this->jobdata_get('label'); + if ($label) $resumption_extralog = ", label=$label"; + } + + $this->last_successful_resumption = $last_successful_resumption; + + $runs_started[$resumption_no] = $time_now; + if (!empty($this->backup_time)) $this->jobdata_set('runs_started', $runs_started); + + // Schedule again, to run in 5 minutes again, in case we again fail + // The actual interval can be increased (for future resumptions) by other code, if it detects apparent overlapping + $resume_interval = max(intval($this->jobdata_get('resume_interval')), 100); + + $btime = $this->backup_time; + + $job_type = $this->jobdata_get('job_type'); + + do_action('updraftplus_resume_backup_'.$job_type); + + $updraft_dir = $this->backups_dir_location(); + + $time_ago = time()-$btime; + + $this->log("Backup run: resumption=$resumption_no, nonce=$bnonce, begun at=$btime (${time_ago}s ago), job type=$job_type".$resumption_extralog); + + // This works round a bizarre bug seen in one WP install, where delete_transient and wp_clear_scheduled_hook both took no effect, and upon 'resumption' the entire backup would repeat. + // Argh. In fact, this has limited effect, as apparently (at least on another install seen), the saving of the updated transient via jobdata_set() also took no effect. Still, it does not hurt. + if ($resumption_no >= 1 && 'finished' == $this->jobdata_get('jobstatus')) { + $this->log('Terminate: This backup job is already finished (1).'); + die; + } elseif ('backup' == $job_type && !empty($this->backup_is_already_complete)) { + $this->jobdata_set('jobstatus', 'finished'); + $this->log('Terminate: This backup job is already finished (2).'); + die; + } + + if ($resumption_no > 0 && isset($runs_started[$prev_resumption])) { + $our_expected_start = $runs_started[$prev_resumption] + $resume_interval; + # If the previous run increased the resumption time, then it is timed from the end of the previous run, not the start + if (isset($time_passed[$prev_resumption]) && $time_passed[$prev_resumption]>0) $our_expected_start += $time_passed[$prev_resumption]; + $our_expected_start = apply_filters('updraftplus_expected_start', $our_expected_start, $job_type); + # More than 12 minutes late? + if ($time_now > $our_expected_start + 720) { + $this->log('Long time past since expected resumption time: approx expected='.round($our_expected_start,1).", now=".round($time_now, 1).", diff=".round($time_now-$our_expected_start,1)); + $this->log(__('Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:', 'updraftplus').' https://updraftplus.com/faqs/why-am-i-getting-warnings-about-my-site-not-having-enough-visitors/', 'warning', 'infrequentvisits'); + } + } + + $this->jobdata_set('current_resumption', $resumption_no); + + $first_run = apply_filters('updraftplus_filerun_firstrun', 0); + + // We just do this once, as we don't want to be in permanent conflict with the overlap detector + if ($resumption_no >= $first_run + 8 && $resumption_no < $first_run + 15 && $resume_interval >= 300) { + + // $time_passed is set earlier + list($max_time, $timings_string, $run_times_known) = $this->max_time_passed($time_passed, $resumption_no - 1, $first_run); + + # Do this on resumption 8, or the first time that we have 6 data points + if (($first_run + 8 == $resumption_no && $run_times_known >= 6) || (6 == $run_times_known && !empty($time_passed[$prev_resumption]))) { + $this->log("Time passed on previous resumptions: $timings_string (known: $run_times_known, max: $max_time)"); + // Remember that 30 seconds is used as the 'perhaps something is still running' detection threshold, and that 45 seconds is used as the 'the next resumption is approaching - reschedule!' interval + if ($max_time + 52 < $resume_interval) { + $resume_interval = round($max_time + 52); + $this->log("Based on the available data, we are bringing the resumption interval down to: $resume_interval seconds"); + $this->jobdata_set('resume_interval', $resume_interval); + } + // This next condition was added in response to HS#9174, a case where on one resumption, PHP was allowed to run for >3000 seconds - but other than that, up to 500 seconds. As a result, the resumption interval got stuck at a large value, whilst resumptions were only allowed to run for a much smaller amount. + // This detects whether our last run was less than half the resume interval, but was non-trivial (at least 50 seconds - so, indicating it didn't just error out straight away), but with a resume interval of over 300 seconds. In this case, it is reduced. + } elseif (isset($time_passed[$prev_resumption]) && $time_passed[$prev_resumption] > 50 && $resume_interval > 300 && $time_passed[$prev_resumption] < $resume_interval/2 && 'clouduploading' == $this->jobdata_get('jobstatus')) { + $resume_interval = round($time_passed[$prev_resumption] + 52); + $this->log("Time passed on previous resumptions: $timings_string (known: $run_times_known, max: $max_time). Based on the available data, we are bringing the resumption interval down to: $resume_interval seconds"); + $this->jobdata_set('resume_interval', $resume_interval); + } + + } + + // A different argument than before is needed otherwise the event is ignored + $next_resumption = $resumption_no+1; + if ($next_resumption < $first_run + 10) { + if (true === $this->jobdata_get('one_shot')) { + if (true === $this->jobdata_get('reschedule_before_upload') && 1 == $next_resumption) { + $this->log('A resumption will be scheduled for the cloud backup stage'); + $schedule_resumption = true; + } else { + $this->log('We are in "one shot" mode - no resumptions will be scheduled'); + } + } else { + $schedule_resumption = true; + } + } else { + // We're in over-time - we only reschedule if something useful happened last time (used to be that we waited for it to happen this time - but that meant that temporary errors, e.g. Google 400s on uploads, scuppered it all - we'd do better to have another chance + $useful_checkin = $this->jobdata_get('useful_checkin'); + $last_resumption = $resumption_no-1; + + if (empty($useful_checkin) || $useful_checkin < $last_resumption) { + $this->log(sprintf('The current run is resumption number %d, and there was nothing useful done on the last run (last useful run: %s) - will not schedule a further attempt until we see something useful happening this time', $resumption_no, $useful_checkin)); + } else { + $schedule_resumption = true; + } + } + + // Sanity check + if (empty($this->backup_time)) { + $this->log('The backup_time parameter appears to be empty (usually caused by resuming an already-complete backup).'); + return false; + } + + if (isset($schedule_resumption)) { + $schedule_for = time()+$resume_interval; + $this->log("Scheduling a resumption ($next_resumption) after $resume_interval seconds ($schedule_for) in case this run gets aborted"); + wp_schedule_single_event($schedule_for, 'updraft_backup_resume', array($next_resumption, $bnonce)); + $this->newresumption_scheduled = $schedule_for; + } + + $backup_files = $this->jobdata_get('backup_files'); + + global $updraftplus_backup; + // Bring in all the backup routines + require_once(UPDRAFTPLUS_DIR.'/backup.php'); + $updraftplus_backup = new UpdraftPlus_Backup($backup_files, apply_filters('updraftplus_files_altered_since', -1, $job_type)); + + $undone_files = array(); + + if ('no' == $backup_files) { + $this->log("This backup run is not intended for files - skipping"); + $our_files = array(); + } else { + + // This should be always called; if there were no files in this run, it returns us an empty array + $backup_array = $updraftplus_backup->resumable_backup_of_files($resumption_no); + + // This save, if there was something, is then immediately picked up again + if (is_array($backup_array)) { + $this->log('Saving backup status to database (elements: '.count($backup_array).")"); + $this->save_backup_history($backup_array); + } + + // Switch of variable name is purely vestigial + $our_files = $backup_array; + if (!is_array($our_files)) $our_files = array(); + + } + + $backup_databases = $this->jobdata_get('backup_database'); + + if (!is_array($backup_databases)) $backup_databases = array('wp' => $backup_databases); + + foreach ($backup_databases as $whichdb => $backup_database) { + + if (is_array($backup_database)) { + $dbinfo = $backup_database['dbinfo']; + $backup_database = $backup_database['status']; + } else { + $dbinfo = array(); + } + + $tindex = ('wp' == $whichdb) ? 'db' : 'db'.$whichdb; + + if ('begun' == $backup_database || 'finished' == $backup_database || 'encrypted' == $backup_database) { + + if ('wp' == $whichdb) { + $db_descrip = 'WordPress DB'; + } else { + if (!empty($dbinfo) && is_array($dbinfo) && !empty($dbinfo['host'])) { + $db_descrip = "External DB $whichdb - ".$dbinfo['user'].'@'.$dbinfo['host'].'/'.$dbinfo['name']; + } else { + $db_descrip = "External DB $whichdb - details appear to be missing"; + } + } + + if ('begun' == $backup_database) { + if ($resumption_no > 0) { + $this->log("Resuming creation of database dump ($db_descrip)"); + } else { + $this->log("Beginning creation of database dump ($db_descrip)"); + } + } elseif ('encrypted' == $backup_database) { + $this->log("Database dump ($db_descrip): Creation and encryption were completed already"); + } else { + $this->log("Database dump ($db_descrip): Creation was completed already"); + } + + if ('wp' != $whichdb && (empty($dbinfo) || !is_array($dbinfo) || empty($dbinfo['host']))) { + unset($backup_databases[$whichdb]); + $this->jobdata_set('backup_database', $backup_databases); + continue; + } + + $db_backup = $updraftplus_backup->backup_db($backup_database, $whichdb, $dbinfo); + + if(is_array($our_files) && is_string($db_backup)) $our_files[$tindex] = $db_backup; + + if ('encrypted' != $backup_database) { + $backup_databases[$whichdb] = array('status' => 'finished', 'dbinfo' => $dbinfo); + $this->jobdata_set('backup_database', $backup_databases); + } + } elseif ('no' == $backup_database) { + $this->log("No database backup ($whichdb) - not part of this run"); + } else { + $this->log("Unrecognised data when trying to ascertain if the database ($whichdb) was backed up (".serialize($backup_database).")"); + } + + // This is done before cloud despatch, because we want a record of what *should* be in the backup. Whether it actually makes it there or not is not yet known. + $this->save_backup_history($our_files); + + // Potentially encrypt the database if it is not already + if ('no' != $backup_database && isset($our_files[$tindex]) && !preg_match("/\.crypt$/", $our_files[$tindex])) { + $our_files[$tindex] = $updraftplus_backup->encrypt_file($our_files[$tindex]); + // No need to save backup history now, as it will happen in a few lines time + if (preg_match("/\.crypt$/", $our_files[$tindex])) { + $backup_databases[$whichdb] = array('status' => 'encrypted', 'dbinfo' => $dbinfo); + $this->jobdata_set('backup_database', $backup_databases); + } + } + + if ('no' != $backup_database && isset($our_files[$tindex]) && file_exists($updraft_dir.'/'.$our_files[$tindex])) { + $our_files[$tindex.'-size'] = filesize($updraft_dir.'/'.$our_files[$tindex]); + $this->save_backup_history($our_files); + } + + } + + $backupable_entities = $this->get_backupable_file_entities(true); + + $checksums = array('sha1' => array()); + + $total_size = 0; + + // Queue files for upload + foreach ($our_files as $key => $files) { + // Only continue if the stored info was about a dump + if (!isset($backupable_entities[$key]) && ('db' != substr($key, 0, 2) || '-size' == substr($key, -5, 5))) continue; + if (is_string($files)) $files = array($files); + foreach ($files as $findex => $file) { + + $size_key = (0 == $findex) ? $key.'-size' : $key.$findex.'-size'; + $total_size = (false === $total_size || !isset($our_files[$size_key]) || !is_numeric($our_files[$size_key])) ? false : $total_size + $our_files[$size_key]; + + $sha = $this->jobdata_get('sha1-'.$key.$findex); + if ($sha) $checksums['sha1'][$key.$findex] = $sha; + $sha = $this->jobdata_get('sha1-'.$key.$findex.'.crypt'); + if ($sha) $checksums['sha1'][$key.$findex.".crypt"] = $sha; + if ($this->is_uploaded($file)) { + $this->log("$file: $key: This file has already been successfully uploaded"); + } elseif (is_file($updraft_dir.'/'.$file)) { + if (!in_array($file, $undone_files)) { + $this->log("$file: $key: This file has not yet been successfully uploaded: will queue"); + $undone_files[$key.$findex] = $file; + } else { + $this->log("$file: $key: This file was already queued for upload (this condition should never be seen)"); + } + } else { + $this->log("$file: $key: Note: This file was not marked as successfully uploaded, but does not exist on the local filesystem ($updraft_dir/$file)"); + $this->uploaded_file($file, true); + } + } + } + $our_files['checksums'] = $checksums; + + // Save again (now that we have checksums) + $size_description = (false === $total_size) ? 'Unknown' : $this->convert_numeric_size_to_text($total_size); + $this->log("Saving backup history. Total backup size: $size_description"); + $this->save_backup_history($our_files); + do_action('updraft_final_backup_history', $our_files); + + // We finished; so, low memory was not a problem + $this->log_removewarning('lowram'); + + if (0 == count($undone_files)) { + $this->log("Resume backup ($bnonce, $resumption_no): finish run"); + if (is_array($our_files)) $this->save_last_backup($our_files); + $this->log("There were no more files that needed uploading"); + // No email, as the user probably already got one if something else completed the run + $allow_email = false; + if ('begun' == $this->jobdata_get('prune')) { + // Begun, but not finished + $this->log("Restarting backup prune operation"); + $updraftplus_backup->do_prune_standalone(); + $allow_email = true; + } + $this->backup_finish($next_resumption, true, $allow_email, $resumption_no); + restore_error_handler(); + return; + } + + $this->error_count_before_cloud_backup = $this->error_count(); + + // This is intended for one-shot backups, where we do want a resumption if it's only for uploading + if (empty($this->newresumption_scheduled) && 0 == $resumption_no && 0 == $this->error_count_before_cloud_backup && true === $this->jobdata_get('reschedule_before_upload')) { + $this->log("Cloud backup stage reached on one-shot backup: scheduling resumption for the cloud upload"); + $this->reschedule(60); + $this->record_still_alive(); + } + + $this->log("Requesting upload of the files that have not yet been successfully uploaded (".count($undone_files).")"); + + $updraftplus_backup->cloud_backup($undone_files); + + $this->log("Resume backup ($bnonce, $resumption_no): finish run"); + if (is_array($our_files)) $this->save_last_backup($our_files); + $this->backup_finish($next_resumption, true, true, $resumption_no); + + restore_error_handler(); + + } + + public function convert_numeric_size_to_text($size) { + if ($size > 1073741824) { + return round($size / 1073741824, 1).' GB'; + } elseif ($size > 1048576) { + return round($size / 1048576, 1).' MB'; + } elseif ($size > 1024) { + return round($size / 1024, 1).' KB'; + } else { + return round($size, 1).' B'; + } + } + + public function max_time_passed($time_passed, $upto, $first_run) { + $max_time = 0; + $timings_string = ""; + $run_times_known=0; + for ($i=$first_run; $i<=$upto; $i++) { + $timings_string .= "$i:"; + if (isset($time_passed[$i])) { + $timings_string .= round($time_passed[$i], 1).' '; + $run_times_known++; + if ($time_passed[$i] > $max_time) $max_time = round($time_passed[$i]); + } else { + $timings_string .= '? '; + } + } + return array($max_time, $timings_string, $run_times_known); + } + + public function jobdata_getarray($non) { + return get_site_option("updraft_jobdata_".$non, array()); + } + + public function jobdata_set_from_array($array) { + $this->jobdata = $array; + if (!empty($this->nonce)) update_site_option("updraft_jobdata_".$this->nonce, $this->jobdata); + } + + // This works with any amount of settings, but we provide also a jobdata_set for efficiency as normally there's only one setting + public function jobdata_set_multi() { + if (!is_array($this->jobdata)) $this->jobdata = array(); + + $args = func_num_args(); + + for ($i=1; $i<=$args/2; $i++) { + $key = func_get_arg($i*2-2); + $value = func_get_arg($i*2-1); + $this->jobdata[$key] = $value; + } + if (!empty($this->nonce)) update_site_option("updraft_jobdata_".$this->nonce, $this->jobdata); + } + + public function jobdata_set($key, $value) { + if (empty($this->jobdata)) { + $this->jobdata = empty($this->nonce) ? array() : get_site_option("updraft_jobdata_".$this->nonce); + if (!is_array($this->jobdata)) $this->jobdata = array(); + } + $this->jobdata[$key] = $value; + if ($this->nonce) update_site_option("updraft_jobdata_".$this->nonce, $this->jobdata); + } + + public function jobdata_delete($key) { + if (!is_array($this->jobdata)) { + $this->jobdata = empty($this->nonce) ? array() : get_site_option("updraft_jobdata_".$this->nonce); + if (!is_array($this->jobdata)) $this->jobdata = array(); + } + unset($this->jobdata[$key]); + if ($this->nonce) update_site_option("updraft_jobdata_".$this->nonce, $this->jobdata); + } + + public function get_job_option($opt) { + // These are meant to be read-only + if (empty($this->jobdata['option_cache']) || !is_array($this->jobdata['option_cache'])) { + if (!is_array($this->jobdata)) $this->jobdata = get_site_option("updraft_jobdata_".$this->nonce, array()); + $this->jobdata['option_cache'] = array(); + } + return (isset($this->jobdata['option_cache'][$opt])) ? $this->jobdata['option_cache'][$opt] : UpdraftPlus_Options::get_updraft_option($opt); + } + + public function jobdata_get($key, $default = null) { + if (empty($this->jobdata)) { + $this->jobdata = empty($this->nonce) ? array() : get_site_option("updraft_jobdata_".$this->nonce, array()); + if (!is_array($this->jobdata)) return $default; + } + return isset($this->jobdata[$key]) ? $this->jobdata[$key] : $default; + } + + public function jobdata_reset() { + $this->jobdata = null; + } + + private function ensure_semaphore_exists($semaphore) { + // Make sure the options for semaphores exist + global $wpdb; + $results = $wpdb->get_results(" + SELECT option_id + FROM $wpdb->options + WHERE option_name IN ('updraftplus_locked_$semaphore', 'updraftplus_unlocked_$semaphore', 'updraftplus_last_lock_time_$semaphore', 'updraftplus_semaphore_$semaphore') + "); + // Use of update_option() is correct here - since it is what is used in class-semaphore.php + if (!is_array($results) || count($results) < 3) { + if (is_array($results) && count($results) > 0) $this->log("Semaphore ($semaphore) in an impossible/broken state - fixing (".count($results).")"); + update_option('updraftplus_unlocked_'.$semaphore, '1'); + delete_option('updraftplus_locked_'.$semaphore); + update_option('updraftplus_last_lock_time_'.$semaphore, current_time('mysql', 1)); + update_option('updraftplus_semaphore_'.$semaphore, '0'); + } + } + + public function backup_files() { + # Note that the "false" for database gets over-ridden automatically if they turn out to have the same schedules + $this->boot_backup(true, false); + } + + public function backup_database() { + # Note that nothing will happen if the file backup had the same schedule + $this->boot_backup(false, true); + } + + public function backup_all($options) { + $skip_cloud = empty($options['nocloud']) ? false : true; + $this->boot_backup(1, 1, false, false, ($skip_cloud) ? 'none' : false, $options); + } + + public function backupnow_files($options) { + $skip_cloud = empty($options['nocloud']) ? false : true; + $this->boot_backup(1, 0, false, false, ($skip_cloud) ? 'none' : false, $options); + } + + public function backupnow_database($options) { + $skip_cloud = empty($options['nocloud']) ? false : true; + $this->boot_backup(0, 1, false, false, ($skip_cloud) ? 'none' : false, $options); + } + + // This procedure initiates a backup run + // $backup_files/$backup_database: true/false = yes/no (over-write allowed); 1/0 = yes/no (force) + public function boot_backup($backup_files, $backup_database, $restrict_files_to_override = false, $one_shot = false, $service = false, $options = array()) { + + @ignore_user_abort(true); + @set_time_limit(UPDRAFTPLUS_SET_TIME_LIMIT); + + if (false === $restrict_files_to_override && isset($options['restrict_files_to_override'])) $restrict_files_to_override = $options['restrict_files_to_override']; + // Generate backup information + $use_nonce = (empty($options['use_nonce'])) ? false : $options['use_nonce']; + $this->backup_time_nonce($use_nonce); + // The current_resumption is consulted within logfile_open() + $this->current_resumption = 0; + $this->logfile_open($this->nonce); + + if (!is_file($this->logfile_name)) { + $this->log('Failed to open log file ('.$this->logfile_name.') - you need to check your UpdraftPlus settings (your chosen directory for creating files in is not writable, or you ran out of disk space). Backup aborted.'); + $this->log(__('Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings.','updraftplus'), 'error'); + return false; + } + + // Some house-cleaning + $this->clean_temporary_files(); + + // Log some information that may be helpful + $this->log("Tasks: Backup files: $backup_files (schedule: ".UpdraftPlus_Options::get_updraft_option('updraft_interval', 'unset').") Backup DB: $backup_database (schedule: ".UpdraftPlus_Options::get_updraft_option('updraft_interval_database', 'unset').")"); + + // The is_bool() check here is confirming that we're allowed to adjust the parameters + if (false === $one_shot && is_bool($backup_database)) { + # If the files and database schedules are the same, and if this the file one, then we rope in database too. + # On the other hand, if the schedules were the same and this was the database run, then there is nothing to do. + + $files_schedule = UpdraftPlus_Options::get_updraft_option('updraft_interval'); + $db_schedule = UpdraftPlus_Options::get_updraft_option('updraft_interval_database'); + + $sched_log_extra = ''; + + if ('manual' != $files_schedule) { + if ($files_schedule == $db_schedule || UpdraftPlus_Options::get_updraft_option('updraft_interval_database', 'xyz') == 'xyz') { + $sched_log_extra = 'Combining jobs from identical schedules. '; + $backup_database = ($backup_files == true) ? true : false; + } elseif ($files_schedule && $db_schedule && $files_schedule != $db_schedule) { + + // This stored value is the earliest of the two apparently-close jobs + $combine_around = empty($this->combine_jobs_around) ? false : $this->combine_jobs_around; + + if (preg_match('/^(cancel:)?(\d+)$/', $combine_around, $matches)) { + + $combine_around = $matches[2]; + + // Re-save the option, since otherwise it will have been reset and not be accessible to the 'other' run + UpdraftPlus_Options::update_updraft_option('updraft_combine_jobs_around', 'cancel:'.$this->combine_jobs_around); + + $margin = (defined('UPDRAFTPLUS_COMBINE_MARGIN') && is_numeric(UPDRAFTPLUS_COMBINE_MARGIN)) ? UPDRAFTPLUS_COMBINE_MARGIN : 600; + + $time_now = time(); + + // The margin is doubled, to cope with the lack of predictability in WP's cron system + if ($time_now >= $combine_around && $time_now <= $combine_around + 2*$margin) { + + $sched_log_extra = 'Combining jobs from co-inciding events. '; + + if ('cancel:' == $matches[1]) { + $backup_database = false; + $backup_files = false; + } else { + // We want them both to happen on whichever run is first (since, afterwards, the updraft_combine_jobs_around option will have been removed when the event is rescheduled). + $backup_database = true; + $backup_files = true; + } + + } + + } + } + } + $this->log("Processed schedules. ${sched_log_extra}Tasks now: Backup files: $backup_files Backup DB: $backup_database"); + } + + $semaphore = (($backup_files) ? 'f' : '') . (($backup_database) ? 'd' : ''); + $this->ensure_semaphore_exists($semaphore); + + if (false == apply_filters('updraftplus_boot_backup', true, $backup_files, $backup_database, $one_shot)) { + $this->log("Backup aborted (via filter)"); + return false; + } + + if (!is_string($service) && !is_array($service)) $service = UpdraftPlus_Options::get_updraft_option('updraft_service'); + $service = $this->just_one($service); + if (is_string($service)) $service = array($service); + if (!is_array($service)) $service = array('none'); + + if (!empty($options['extradata']) && preg_match('#services=remotesend/(\d+)#', $options['extradata'])) { + if ($service === array('none')) $service = array(); + $service[] = 'remotesend'; + } + + $option_cache = array(); + + foreach ($service as $serv) { + if ('' == $serv || 'none' == $serv) continue; + include_once(UPDRAFTPLUS_DIR.'/methods/'.$serv.'.php'); + $cclass = 'UpdraftPlus_BackupModule_'.$serv; + $obj = new $cclass; + + if (method_exists($cclass, 'get_credentials')) { + $opts = $obj->get_credentials(); + if (is_array($opts)) { + foreach ($opts as $opt) $option_cache[$opt] = UpdraftPlus_Options::get_updraft_option($opt); + } + } + } + $option_cache = apply_filters('updraftplus_job_option_cache', $option_cache); + + // If nothing to be done, then just finish + if (!$backup_files && !$backup_database) { + $ret = $this->backup_finish(1, false, false, 0); + // Don't keep useless log files + if (!UpdraftPlus_Options::get_updraft_option('updraft_debug_mode') && !empty($this->logfile_name) && file_exists($this->logfile_name)) { + unlink($this->logfile_name); + } + return $ret; + } + + // Are we doing an action called by the WP scheduler? If so, we want to check when that last happened; the point being that the dodgy WP scheduler, when overloaded, can call the event multiple times - and sometimes, it evades the semaphore because it calls a second run after the first has finished, or > 3 minutes (our semaphore lock time) later + // doing_action() was added in WP 3.9 + // wp_cron() can be called from the 'init' action + + if (function_exists('doing_action') && (doing_action('init') || @constant('DOING_CRON')) && (doing_action('updraft_backup_database') || doing_action('updraft_backup'))) { + $last_scheduled_action_called_at = get_option("updraft_last_scheduled_$semaphore"); + // 11 minutes - so, we're assuming that they haven't custom-modified their schedules to run scheduled backups more often than that. If they have, they need also to use the filter to over-ride this check. + $seconds_ago = time() - $last_scheduled_action_called_at; + if ($last_scheduled_action_called_at && $seconds_ago < 660 && apply_filters('updraft_check_repeated_scheduled_backups', true)) { + $this->log(sprintf('Scheduled backup aborted - another backup of this type was apparently invoked by the WordPress scheduler only %d seconds ago - the WordPress scheduler invoking events multiple times usually indicates a very overloaded server (or other plugins that mis-use the scheduler)', $seconds_ago)); + return; + } + } + update_option("updraft_last_scheduled_$semaphore", time()); + + require_once(UPDRAFTPLUS_DIR.'/includes/class-semaphore.php'); + $this->semaphore = UpdraftPlus_Semaphore::factory(); + $this->semaphore->lock_name = $semaphore; + + $semaphore_log_message = 'Requesting semaphore lock ('.$semaphore.')'; + if (!empty($last_scheduled_action_called_at)) { + $semaphore_log_message .= " (apparently via scheduler: last_scheduled_action_called_at=$last_scheduled_action_called_at, seconds_ago=$seconds_ago)"; + } else { + $semaphore_log_message .= " (apparently not via scheduler)"; + } + + $this->log($semaphore_log_message); + if (!$this->semaphore->lock()) { + $this->log('Failed to gain semaphore lock ('.$semaphore.') - another backup of this type is apparently already active - aborting (if this is wrong - i.e. if the other backup crashed without removing the lock, then another can be started after 3 minutes)'); + return; + } + + // Allow the resume interval to be more than 300 if last time we know we went beyond that - but never more than 600 + if (defined('UPDRAFTPLUS_INITIAL_RESUME_INTERVAL') && is_numeric(UPDRAFTPLUS_INITIAL_RESUME_INTERVAL)) { + $resume_interval = UPDRAFTPLUS_INITIAL_RESUME_INTERVAL; + } else { + $resume_interval = (int)min(max(300, get_site_transient('updraft_initial_resume_interval')), 600); + } + # We delete it because we only want to know about behaviour found during the very last backup run (so, if you move servers then old data is not retained) + delete_site_transient('updraft_initial_resume_interval'); + + $job_file_entities = array(); + if ($backup_files) { + $possible_backups = $this->get_backupable_file_entities(true); + foreach ($possible_backups as $youwhat => $whichdir) { + if ((false === $restrict_files_to_override && UpdraftPlus_Options::get_updraft_option("updraft_include_$youwhat", apply_filters("updraftplus_defaultoption_include_$youwhat", true))) || (is_array($restrict_files_to_override) && in_array($youwhat, $restrict_files_to_override))) { + // The 0 indicates the zip file index + $job_file_entities[$youwhat] = array( + 'index' => 0 + ); + } + } + } + + $followups_allowed = (((!$one_shot && defined('DOING_CRON') && DOING_CRON)) || (defined('UPDRAFTPLUS_FOLLOWUPS_ALLOWED') && UPDRAFTPLUS_FOLLOWUPS_ALLOWED)); + + $split_every = max(intval(UpdraftPlus_Options::get_updraft_option('updraft_split_every', 400)), UPDRAFTPLUS_SPLIT_MIN); + + $initial_jobdata = array( + 'resume_interval', $resume_interval, + 'job_type', 'backup', + 'jobstatus', 'begun', + 'backup_time', $this->backup_time, + 'job_time_ms', $this->job_time_ms, + 'service', $service, + 'split_every', $split_every, + 'maxzipbatch', 26214400, #25MB + 'job_file_entities', $job_file_entities, + 'option_cache', $option_cache, + 'uploaded_lastreset', 9, + 'one_shot', $one_shot, + 'followsups_allowed', $followups_allowed + ); + + if ($one_shot) update_site_option('updraft_oneshotnonce', $this->nonce); + + if (!empty($options['extradata']) && 'autobackup' == $options['extradata']) array_push($initial_jobdata, 'is_autobackup', true); + + // Save what *should* be done, to make it resumable from this point on + if ($backup_database) { + $dbs = apply_filters('updraft_backup_databases', array('wp' => 'begun')); + if (is_array($dbs)) { + foreach ($dbs as $key => $db) { + if ('wp' != $key && (!is_array($db) || empty($db['dbinfo']) || !is_array($db['dbinfo']) || empty($db['dbinfo']['host']))) unset($dbs[$key]); + } + } + } else { + $dbs = "no"; + } + + array_push($initial_jobdata, 'backup_database', $dbs); + array_push($initial_jobdata, 'backup_files', (($backup_files) ? 'begun' : 'no')); + + if (is_array($options) && !empty($options['label'])) array_push($initial_jobdata, 'label', $options['label']); + + try { + // Use of jobdata_set_multi saves around 200ms + call_user_func_array(array($this, 'jobdata_set_multi'), apply_filters('updraftplus_initial_jobdata', $initial_jobdata, $options, $split_every)); + } catch (Exception $e) { + $this->log($e->getMessage()); + return false; + } + + // Everything is set up; now go + $this->backup_resume(0, $this->nonce); + + if ($one_shot) delete_site_option('updraft_oneshotnonce'); + + } + + // This function examines inside the updraft directory to see if any new archives have been uploaded. If so, it adds them to the backup set. (Non-present items are also removed, only if the service is 'none'). + // If $remotescan is set, then remote storage is also scanned + // $only_add_this_file : an array with keys 'name' and (optionally) 'label' + public function rebuild_backup_history($remotescan = false, $only_add_this_file = false) { + + # TODO: Make compatible with incremental naming scheme + + $messages = array(); + $gmt_offset = get_option('gmt_offset'); + + // Array of nonces keyed by filename + $known_files = array(); + // Array of backup times keyed by nonce + $known_nonces = array(); + $changes = false; + + $backupable_entities = $this->get_backupable_file_entities(true, false); + + $backup_history = UpdraftPlus_Options::get_updraft_option('updraft_backup_history'); + if (!is_array($backup_history)) $backup_history = array(); + $updraft_dir = $this->backups_dir_location(); + if (!is_dir($updraft_dir)) return; + + $accept = apply_filters('updraftplus_accept_archivename', array()); + if (!is_array($accept)) $accept = array(); + // Process what is known from the database backup history; this means populating $known_files and $known_nonces + foreach ($backup_history as $btime => $bdata) { + $found_file = false; + foreach ($bdata as $key => $values) { + if ('db' != $key && !isset($backupable_entities[$key])) continue; + // Record which set this file is found in + if (!is_array($values)) $values=array($values); + foreach ($values as $val) { + if (!is_string($val)) continue; + if (preg_match('/^backup_([\-0-9]{15})_.*_([0-9a-f]{12})-[\-a-z]+([0-9]+)?+(\.(zip|gz|gz\.crypt))?$/i', $val, $matches)) { + $nonce = $matches[2]; + if (isset($bdata['service']) && ($bdata['service'] === 'none' || (is_array($bdata['service']) && (array('none') === $bdata['service'] || (1 == count($bdata['service']) && isset($bdata['service'][0]) && empty($bdata['service'][0]))))) && !is_file($updraft_dir.'/'.$val)) { + # File without remote storage is no longer present + } else { + $found_file = true; + $known_files[$val] = $nonce; + $known_nonces[$nonce] = (empty($known_nonces[$nonce]) || $known_nonces[$nonce]<100) ? $btime : min($btime, $known_nonces[$nonce]); + } + } else { + $accepted = false; + foreach ($accept as $fkey => $acc) { + if (preg_match('/'.$acc['pattern'].'/i', $val)) $accepted = $fkey; + } + if (!empty($accepted) && (false != ($btime = apply_filters('updraftplus_foreign_gettime', false, $accepted, $val))) && $btime > 0) { + $found_file = true; + # Generate a nonce; this needs to be deterministic and based on the filename only + $nonce = substr(md5($val), 0, 12); + $known_files[$val] = $nonce; + $known_nonces[$nonce] = (empty($known_nonces[$nonce]) || $known_nonces[$nonce]<100) ? $btime : min($btime, $known_nonces[$nonce]); + } + } + } + } + if (!$found_file) { + # File recorded as being without remote storage is no longer present - though it may in fact exist in remote storage, and this will be picked up later + unset($backup_history[$btime]); + $changes = true; + } + } + + $remotefiles = array(); + $remotesizes = array(); + # Scan remote storage and get back lists of files and their sizes + # TODO: Make compatible with incremental naming + if ($remotescan) { + add_action('http_request_args', array($this, 'modify_http_options')); + foreach ($this->backup_methods as $method => $method_description) { + require_once(UPDRAFTPLUS_DIR.'/methods/'.$method.'.php'); + $objname = 'UpdraftPlus_BackupModule_'.$method; + $obj = new $objname; + if (!method_exists($obj, 'listfiles')) continue; + $files = $obj->listfiles('backup_'); + if (is_array($files)) { + foreach ($files as $entry) { + $n = $entry['name']; + if (!preg_match('/^backup_([\-0-9]{15})_.*_([0-9a-f]{12})-([\-a-z]+)([0-9]+)?(\.(zip|gz|gz\.crypt))?$/i', $n, $matches)) continue; + if (isset($remotefiles[$n])) { + $remotefiles[$n][] = $method; + } else { + $remotefiles[$n] = array($method); + } + if (!empty($entry['size'])) { + if (empty($remotesizes[$n]) || $remotesizes[$n] < $entry['size']) $remotesizes[$n] = $entry['size']; + } + } + } elseif (is_wp_error($files)) { + foreach ($files->get_error_codes() as $code) { + if ('no_settings' == $code || 'no_addon' == $code || 'insufficient_php' == $code || 'no_listing' == $code) continue; + $messages[] = array( + 'method' => $method, + 'desc' => $method_description, + 'code' => $code, + 'message' => $files->get_error_message($code), + 'data' => $files->get_error_data($code), + ); + } + } + } + remove_action('http_request_args', array($this, 'modify_http_options')); + } + + if (!$handle = opendir($updraft_dir)) return; + + // See if there are any more files in the local directory than the ones already known about + while (false !== ($entry = readdir($handle))) { + $accepted_foreign = false; + $potmessage = false; + + if ($only_add_this_file !== false && $entry != $only_add_this_file['file']) continue; + + if ('.' == $entry || '..' == $entry) continue; + + # TODO: Make compatible with Incremental naming + if (preg_match('/^backup_([\-0-9]{15})_.*_([0-9a-f]{12})-([\-a-z]+)([0-9]+)?(\.(zip|gz|gz\.crypt))?$/i', $entry, $matches)) { + // Interpret the time as one from the blog's local timezone, rather than as UTC + # $matches[1] is YYYY-MM-DD-HHmm, to be interpreted as being the local timezone + $btime2 = strtotime($matches[1]); + $btime = (!empty($gmt_offset)) ? $btime2 - $gmt_offset*3600 : $btime2; + $nonce = $matches[2]; + $type = $matches[3]; + if ('db' == $type) { + $type .= (!empty($matches[4])) ? $matches[4] : ''; + $index = 0; + } else { + $index = (empty($matches[4])) ? '0' : (max((int)$matches[4]-1,0)); + } + $itext = ($index == 0) ? '' : $index; + } elseif (false != ($accepted_foreign = apply_filters('updraftplus_accept_foreign', false, $entry)) && false !== ($btime = apply_filters('updraftplus_foreign_gettime', false, $accepted_foreign, $entry))) { + $nonce = substr(md5($entry), 0, 12); + $type = (preg_match('/\.sql(\.(bz2|gz))?$/i', $entry) || preg_match('/-database-([-0-9]+)\.zip$/i', $entry) || preg_match('/backup_db_/', $entry)) ? 'db' : 'wpcore'; + $index = apply_filters('updraftplus_accepted_foreign_index', 0, $entry, $accepted_foreign); + $itext = $index ? $index : ''; + $potmessage = array( + 'code' => 'foundforeign_'.md5($entry), + 'desc' => $entry, + 'method' => '', + 'message' => sprintf(__('Backup created by: %s.', 'updraftplus'), $accept[$accepted_foreign]['desc']) + ); + } elseif ('.zip' == strtolower(substr($entry, -4, 4)) || preg_match('/\.sql(\.(bz2|gz))?$/i', $entry)) { + $potmessage = array( + 'code' => 'possibleforeign_'.md5($entry), + 'desc' => $entry, + 'method' => '', + 'message' => __('This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz)).', 'updraftplus').' '.__('If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you.', 'updraftplus').'' + ); + $messages[$potmessage['code']] = $potmessage; + continue; + } else { + continue; + } + // The time from the filename does not include seconds. Need to identify the seconds to get the right time + if (isset($known_nonces[$nonce])) { + $btime_exact = $known_nonces[$nonce]; + # TODO: If the btime we had was more than 60 seconds earlier, then this must be an increment - we then need to change the $backup_history array accordingly. We can pad the '60 second' test, as there's no option to run an increment more frequently than every 4 hours (though someone could run one manually from the CLI) + if ($btime > 100 && $btime_exact - $btime > 60 && !empty($backup_history[$btime_exact])) { + # TODO: This needs testing + # The code below assumes that $backup_history[$btime] is presently empty + # Re-key array, indicating the newly-found time to be the start of the backup set + $backup_history[$btime] = $backup_history[$btime_exact]; + unset($backup_history[$btime_exact]); + $btime_exact = $btime; + } + $btime = $btime_exact; + } + if ($btime <= 100) continue; + $fs = @filesize($updraft_dir.'/'.$entry); + + if (!isset($known_files[$entry])) { + $changes = true; + if (is_array($potmessage)) $messages[$potmessage['code']] = $potmessage; + if (is_array($only_add_this_file)) { + if (isset($only_add_this_file['label'])) $backup_history[$btime]['label'] = $only_add_this_file['label']; + $backup_history[$btime]['native'] = false; + } elseif ('db' == $type && !$accepted_foreign) { + list ($mess, $warn, $err, $info) = $this->analyse_db_file(false, array(), $updraft_dir.'/'.$entry, true); + if (!empty($info['label'])) { + $backup_history[$btime]['label'] = $info['label']; + } + if (!empty($info['created_by_version'])) { + $backup_history[$btime]['created_by_version'] = $info['created_by_version']; + } + } + } + + # TODO: Code below here has not been reviewed or adjusted for compatibility with incremental backups + # Make sure we have the right list of services + $current_services = (!empty($backup_history[$btime]) && !empty($backup_history[$btime]['service'])) ? $backup_history[$btime]['service'] : array(); + if (is_string($current_services)) $current_services = array($current_services); + if (!is_array($current_services)) $current_services = array(); + if (!empty($remotefiles[$entry])) { + if (0 == count(array_diff($current_services, $remotefiles[$entry]))) { + $backup_history[$btime]['service'] = $remotefiles[$entry]; + $changes = true; + } + # Get the right size (our local copy may be too small) + foreach ($remotefiles[$entry] as $rem) { + if (!empty($rem['size']) && $rem['size'] > $fs) { + $fs = $rem['size']; + $changes = true; + } + } + # Remove from $remotefiles, so that we can later see what was left over + unset($remotefiles[$entry]); + } else { + # Not known remotely + if (!empty($backup_history[$btime])) { + if (empty($backup_history[$btime]['service']) || ('none' !== $backup_history[$btime]['service'] && '' !== $backup_history[$btime]['service'] && array('none') !== $backup_history[$btime]['service'])) { + $backup_history[$btime]['service'] = 'none'; + $changes = true; + } + } else { + $backup_history[$btime]['service'] = 'none'; + $changes = true; + } + } + + $backup_history[$btime][$type][$index] = $entry; + if ($fs > 0) $backup_history[$btime][$type.$itext.'-size'] = $fs; + $backup_history[$btime]['nonce'] = $nonce; + if (!empty($accepted_foreign)) $backup_history[$btime]['meta_foreign'] = $accepted_foreign; + } + + # Any found in remote storage that we did not previously know about? + # Compare $remotefiles with $known_files / $known_nonces, and adjust $backup_history + if (count($remotefiles) > 0) { + + # $backup_history[$btime]['nonce'] = $nonce + foreach ($remotefiles as $file => $services) { + if (!preg_match('/^backup_([\-0-9]{15})_.*_([0-9a-f]{12})-([\-a-z]+)([0-9]+)?(\.(zip|gz|gz\.crypt))?$/i', $file, $matches)) continue; + $nonce = $matches[2]; + $type = $matches[3]; + if ('db' == $type) { + $index = 0; + $type .= !empty($matches[4]) ? $matches[4] : ''; + } else { + $index = (empty($matches[4])) ? '0' : (max((int)$matches[4]-1,0)); + } + $itext = ($index == 0) ? '' : $index; + $btime2 = strtotime($matches[1]); + $btime = (!empty($gmt_offset)) ? $btime2 - $gmt_offset*3600 : $btime2; + + if (isset($known_nonces[$nonce])) $btime = $known_nonces[$nonce]; + if ($btime <= 100) continue; + # Remember that at this point, we already know that the file is not known about locally + if (isset($backup_history[$btime])) { + if (!isset($backup_history[$btime]['service']) || ((is_array($backup_history[$btime]['service']) && $backup_history[$btime]['service'] !== $services) || is_string($backup_history[$btime]['service']) && (1 != count($services) || $services[0] !== $backup_history[$btime]['service']))) { + $changes = true; + $backup_history[$btime]['service'] = $services; + $backup_history[$btime]['nonce'] = $nonce; + } + if (!isset($backup_history[$btime][$type][$index])) { + $changes = true; + $backup_history[$btime][$type][$index] = $file; + $backup_history[$btime]['nonce'] = $nonce; + if (!empty($remotesizes[$file])) $backup_history[$btime][$type.$itext.'-size'] = $remotesizes[$file]; + } + } else { + $changes = true; + $backup_history[$btime]['service'] = $services; + $backup_history[$btime][$type][$index] = $file; + $backup_history[$btime]['nonce'] = $nonce; + if (!empty($remotesizes[$file])) $backup_history[$btime][$type.$itext.'-size'] = $remotesizes[$file]; + $backup_history[$btime]['native'] = false; + $messages['nonnative'] = array( + 'message' => __('One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the "retain" settings; if/when you wish to delete them then you must do so manually.', 'updraftplus'), + 'code' => 'nonnative', + 'desc' => '', + 'method' => '' + ); + } + + } + } + + if ($changes) UpdraftPlus_Options::update_updraft_option('updraft_backup_history', $backup_history); + + return $messages; + + } + + private function backup_finish($cancel_event, $do_cleanup, $allow_email, $resumption_no, $force_abort = false) { + + if (!empty($this->semaphore)) $this->semaphore->unlock(); + + $delete_jobdata = false; + + // The valid use of $do_cleanup is to indicate if in fact anything exists to clean up (if no job really started, then there may be nothing) + + // In fact, leaving the hook to run (if debug is set) is harmless, as the resume job should only do tasks that were left unfinished, which at this stage is none. + if (0 == $this->error_count() || $force_abort) { + if ($do_cleanup) { + $this->log("There were no errors in the uploads, so the 'resume' event ($cancel_event) is being unscheduled"); + # This apparently-worthless setting of metadata before deleting it is for the benefit of a WP install seen where wp_clear_scheduled_hook() and delete_transient() apparently did nothing (probably a faulty cache) + $this->jobdata_set('jobstatus', 'finished'); + wp_clear_scheduled_hook('updraft_backup_resume', array($cancel_event, $this->nonce)); + # This should be unnecessary - even if it does resume, all should be detected as finished; but I saw one very strange case where it restarted, and repeated everything; so, this will help + wp_clear_scheduled_hook('updraft_backup_resume', array($cancel_event+1, $this->nonce)); + wp_clear_scheduled_hook('updraft_backup_resume', array($cancel_event+2, $this->nonce)); + wp_clear_scheduled_hook('updraft_backup_resume', array($cancel_event+3, $this->nonce)); + wp_clear_scheduled_hook('updraft_backup_resume', array($cancel_event+4, $this->nonce)); + $delete_jobdata = true; + } + } else { + $this->log("There were errors in the uploads, so the 'resume' event is remaining scheduled"); + $this->jobdata_set('jobstatus', 'resumingforerrors'); + # If there were no errors before moving to the upload stage, on the first run, then bring the resumption back very close. Since this is only attempted on the first run, it is really only an efficiency thing for a quicker finish if there was an unexpected networking event. We don't want to do it straight away every time, as it may be that the cloud service is down - and might be up in 5 minutes time. This was added after seeing a case where resumption 0 got to run for 10 hours... and the resumption 7 that should have picked up the uploading of 1 archive that failed never occurred. + if (isset($this->error_count_before_cloud_backup) && 0 === $this->error_count_before_cloud_backup) { + if (0 == $resumption_no) { + $this->reschedule(60); + } else { + // Added 27/Feb/2016 - though the cloud service seems to be down, we still don't want to wait too long + $resume_interval = $this->jobdata_get('resume_interval'); + + // 15 minutes + 2 for each resumption (a modest back-off) + $max_interval = 900 + $resumption_no * 120; + if ($resume_interval > $max_interval) { + $this->reschedule($max_interval); + } + } + } + } + + // Send the results email if appropriate, which means: + // - The caller allowed it (which is not the case in an 'empty' run) + // - And: An email address was set (which must be so in email mode) + // And one of: + // - Debug mode + // - There were no errors (which means we completed and so this is the final run - time for the final report) + // - It was the tenth resumption; everything failed + + $send_an_email = false; + # Save the jobdata's state for the reporting - because it might get changed (e.g. incremental backup is scheduled) + $jobdata_as_was = $this->jobdata; + + // Make sure that the final status is shown + if ($force_abort) { + $send_an_email = true; + $final_message = __('The backup was aborted by the user', 'updraftplus'); + } elseif (0 == $this->error_count()) { + $send_an_email = true; + $service = $this->jobdata_get('service'); + $remote_sent = (!empty($service) && ((is_array($service) && in_array('remotesend', $service)) || 'remotesend' === $service)) ? true : false; + if (0 == $this->error_count('warning')) { + $final_message = __('The backup apparently succeeded and is now complete', 'updraftplus'); + # Ensure it is logged in English. Not hugely important; but helps with a tiny number of really broken setups in which the options cacheing is broken + if ('The backup apparently succeeded and is now complete' != $final_message) { + $this->log('The backup apparently succeeded and is now complete'); + } + } else { + $final_message = __('The backup apparently succeeded (with warnings) and is now complete','updraftplus'); + if ('The backup apparently succeeded (with warnings) and is now complete' != $final_message) { + $this->log('The backup apparently succeeded (with warnings) and is now complete'); + } + } + if ($remote_sent && !$force_abort) $final_message .= '. '.__('To complete your migration/clone, you should now log in to the remote site and restore the backup set.', 'updraftplus'); + if ($do_cleanup) $delete_jobdata = apply_filters('updraftplus_backup_complete', $delete_jobdata); + } elseif (false == $this->newresumption_scheduled) { + $send_an_email = true; + $final_message = __('The backup attempt has finished, apparently unsuccessfully', 'updraftplus'); + } else { + // There are errors, but a resumption will be attempted + $final_message = __('The backup has not finished; a resumption is scheduled', 'updraftplus'); + } + + // Now over-ride the decision to send an email, if needed + if (UpdraftPlus_Options::get_updraft_option('updraft_debug_mode')) { + $send_an_email = true; + $this->log("An email has been scheduled for this job, because we are in debug mode"); + } + + $email = UpdraftPlus_Options::get_updraft_option('updraft_email'); + + // If there's no email address, or the set was empty, that is the final over-ride: don't send + if (!$allow_email) { + $send_an_email = false; + $this->log("No email will be sent - this backup set was empty."); + } elseif (empty($email)) { + $send_an_email = false; + $this->log("No email will/can be sent - the user has not configured an email address."); + } + + global $updraftplus_backup; + + if ($force_abort) $jobdata_as_was['aborted'] = true; + if ($send_an_email) $updraftplus_backup->send_results_email($final_message, $jobdata_as_was); + + # Make sure this is the final message logged (so it remains on the dashboard) + $this->log($final_message); + + @fclose($this->logfile_handle); + $this->logfile_handle = null; + + // This is left until last for the benefit of the front-end UI, which then gets maximum chance to display the 'finished' status + if ($delete_jobdata) delete_site_option('updraft_jobdata_'.$this->nonce); + + } + + // This function returns 'true' if mod_rewrite could be detected as unavailable; a 'false' result may mean it just couldn't find out the answer + public function mod_rewrite_unavailable($check_if_in_use_first = true) { + if (function_exists('apache_get_modules')) { + global $wp_rewrite; + $mods = apache_get_modules(); + if ((!$check_if_in_use_first || $wp_rewrite->using_mod_rewrite_permalinks()) && ((in_array('core', $mods) || in_array('http_core', $mods)) && !in_array('mod_rewrite', $mods))) { + return true; + } + } + return false; + } + + public function error_count($level = 'error') { + $count = 0; + foreach ($this->errors as $err) { + if (('error' == $level && (is_string($err) || is_wp_error($err))) || (is_array($err) && $level == $err['level']) ) { $count++; } + } + return $count; + } + + public function list_errors() { + echo '
          '; + foreach ($this->errors as $err) { + if (is_wp_error($err)) { + foreach ($err->get_error_messages() as $msg) { + echo '
        • '.htmlspecialchars($msg).'
        • '; + } + } elseif (is_array($err) && 'error' == $err['level']) { + echo "
        • ".htmlspecialchars($err['message'])."
        • "; + } elseif (is_string($err)) { + echo "
        • ".htmlspecialchars($err)."
        • "; + } else { + print "
        • ".print_r($err,true)."
        • "; + } + } + echo '
        '; + } + + private function save_last_backup($backup_array) { + $success = ($this->error_count() == 0) ? 1 : 0; + $last_backup = apply_filters('updraftplus_save_last_backup', array( + 'backup_time' => $this->backup_time, + 'backup_array' => $backup_array, + 'success' => $success, + 'errors' => $this->errors, + 'backup_nonce' => $this->nonce + )); + UpdraftPlus_Options::update_updraft_option('updraft_last_backup', $last_backup, false); + } + + # $handle must be either false or a WPDB class (or extension thereof). Other options are not yet fully supported. + public function check_db_connection($handle = false, $logit = false, $reschedule = false) { + + $type = false; + if (false === $handle || is_a($handle, 'wpdb')) { + $type='wpdb'; + } elseif (is_resource($handle)) { + # Expected: string(10) "mysql link" + $type=get_resource_type($handle); + } elseif (is_object($handle) && is_a($handle, 'mysqli')) { + $type='mysqli'; + } + + if (false === $type) return -1; + + $db_connected = -1; + + if ('mysql link' == $type || 'mysqli' == $type) { + if ('mysql link' == $type && @mysql_ping($handle)) return true; + if ('mysqli' == $type && @mysqli_ping($handle)) return true; + + for ( $tries = 1; $tries <= 5; $tries++ ) { + # to do, if ever needed +// if ( $this->db_connect( false ) ) return true; +// sleep( 1 ); + } + + } elseif ('wpdb' == $type) { + if (false === $handle || (is_object($handle) && 'wpdb' == get_class($handle))) { + global $wpdb; + $handle = $wpdb; + } + if (method_exists($handle, 'check_connection') && (!defined('UPDRAFTPLUS_SUPPRESS_CONNECTION_CHECKS') || !UPDRAFTPLUS_SUPPRESS_CONNECTION_CHECKS)) { + if (!$handle->check_connection(false)) { + if ($logit) $this->log("The database went away, and could not be reconnected to"); + # Almost certainly a no-op + if ($reschedule) $this->reschedule(60); + $db_connected = false; + } else { + $db_connected = true; + } + } + } + + return $db_connected; + + } + + // This should be called whenever a file is successfully uploaded + public function uploaded_file($file, $force = false) { + + global $updraftplus_backup; + + $db_connected = $this->check_db_connection(false, true, true); + + $service = empty($updraftplus_backup->current_service) ? '' : $updraftplus_backup->current_service; + $shash = $service.'-'.md5($file); + + $this->jobdata_set("uploaded_".$shash, 'yes'); + + if ($force || !empty($updraftplus_backup->last_service)) { + $hash = md5($file); + $this->log("Recording as successfully uploaded: $file ($hash)"); + $this->jobdata_set('uploaded_lastreset', $this->current_resumption); + $this->jobdata_set("uploaded_".$hash, 'yes'); + } else { + $this->log("Recording as successfully uploaded: $file (".$updraftplus_backup->current_service.", more services to follow)"); + } + + $upload_status = $this->jobdata_get('uploading_substatus'); + if (is_array($upload_status) && isset($upload_status['i'])) { + $upload_status['i']++; + $upload_status['p']=0; + $this->jobdata_set('uploading_substatus', $upload_status); + } + + # Really, we could do this immediately when we realise the DB has gone away. This is just for the probably-impossible case that a DB write really can still succeed. But, we must abort before calling delete_local(), as the removal of the local file can cause it to be recreated if the DB is out of sync with the fact that it really is already uploaded + if (false === $db_connected) { + $this->record_still_alive(); + die; + } + + // Delete local files immediately if the option is set + // Where we are only backing up locally, only the "prune" function should do deleting + $service = $this->jobdata_get('service'); + if (!empty($updraftplus_backup->last_service) && ($service !== '' && ((is_array($service) && count($service)>0 && (count($service) > 1 || ($service[0] != '' && $service[0] != 'none'))) || (is_string($service) && $service !== 'none')))) { + $this->delete_local($file); + } + } + + public function is_uploaded($file, $service = '') { + $hash = $service.(('' == $service) ? '' : '-').md5($file); + return ($this->jobdata_get("uploaded_$hash") === "yes") ? true : false; + } + + private function delete_local($file) { + $log = "Deleting local file: $file: "; + if (UpdraftPlus_Options::get_updraft_option('updraft_delete_local')) { + $fullpath = $this->backups_dir_location().'/'.$file; + $deleted = unlink($fullpath); + $this->log($log.(($deleted) ? 'OK' : 'failed')); + return $deleted; + } else { + $this->log($log."skipped: user has unchecked updraft_delete_local option"); + } + return true; + } + + // This function is not needed for backup success, according to the design, but it helps with efficient scheduling + private function reschedule_if_needed() { + // If nothing is scheduled, then return + if (empty($this->newresumption_scheduled)) return; + $time_now = time(); + $time_away = $this->newresumption_scheduled - $time_now; + // 45 is chosen because it is 15 seconds more than what is used to detect recent activity on files (file mod times). (If we use exactly the same, then it's more possible to slightly miss each other) + if ($time_away >1 && $time_away <= 45) { + $this->log('The scheduled resumption is within 45 seconds - will reschedule'); + // Push 45 seconds into the future + // $this->reschedule(60); + // Increase interval generally by 45 seconds, on the assumption that our prior estimates were innaccurate (i.e. not just 45 seconds *this* time) + $this->increase_resume_and_reschedule(45); + } + } + + public function reschedule($how_far_ahead) { + // Reschedule - remove presently scheduled event + $next_resumption = $this->current_resumption + 1; + wp_clear_scheduled_hook('updraft_backup_resume', array($next_resumption, $this->nonce)); + // Add new event + # This next line may be too cautious; but until 14-Aug-2014, it was 300. + # Update 20-Mar-2015 - lowered from 180 + if ($how_far_ahead < 120) $how_far_ahead=120; + $schedule_for = time() + $how_far_ahead; + $this->log("Rescheduling resumption $next_resumption: moving to $how_far_ahead seconds from now ($schedule_for)"); + wp_schedule_single_event($schedule_for, 'updraft_backup_resume', array($next_resumption, $this->nonce)); + $this->newresumption_scheduled = $schedule_for; + } + + private function increase_resume_and_reschedule($howmuch = 120, $force_schedule = false) { + + $resume_interval = max(intval($this->jobdata_get('resume_interval')), ($howmuch === 0) ? 120 : 300); + + if (empty($this->newresumption_scheduled) && $force_schedule) { + $this->log("A new resumption will be scheduled to prevent the job ending"); + } + + $new_resume = $resume_interval + $howmuch; + # It may be that we're increasing for the second (or more) time during a run, and that we already know that the new value will be insufficient, and can be increased + if ($this->opened_log_time > 100 && microtime(true)-$this->opened_log_time > $new_resume) { + $new_resume = ceil(microtime(true)-$this->opened_log_time)+45; + $howmuch = $new_resume-$resume_interval; + } + + # This used to be always $new_resume, until 14-Aug-2014. However, people who have very long-running processes can end up with very long times between resumptions as a result. + # Actually, let's not try this yet. I think it is safe, but think there is a more conservative solution available. + #$how_far_ahead = min($new_resume, 600); + $how_far_ahead = $new_resume; + # If it is very long-running, then that would normally be known soon. + # If the interval is already 12 minutes or more, then try the next resumption 10 minutes from now (i.e. sooner than it would have been). Thus, we are guaranteed to get at least 24 minutes of processing in the first 34. + if ($this->current_resumption <= 1 && $new_resume > 720) $how_far_ahead = 600; + + if (!empty($this->newresumption_scheduled) || $force_schedule) $this->reschedule($how_far_ahead); + $this->jobdata_set('resume_interval', $new_resume); + + $this->log("To decrease the likelihood of overlaps, increasing resumption interval to: $resume_interval + $howmuch = $new_resume"); + } + + // For detecting another run, and aborting if one was found + public function check_recent_modification($file) { + if (file_exists($file)) { + $time_mod = (int)@filemtime($file); + $time_now = time(); + if ($time_mod>100 && ($time_now-$time_mod)<30) { + $this->terminate_due_to_activity($file, $time_now, $time_mod); + } + } + } + + public function get_exclude($whichone) { + if ('uploads' == $whichone) { + $exclude = explode(',', UpdraftPlus_Options::get_updraft_option('updraft_include_uploads_exclude', UPDRAFT_DEFAULT_UPLOADS_EXCLUDE)); + } elseif ('others' == $whichone) { + $exclude = explode(',', UpdraftPlus_Options::get_updraft_option('updraft_include_others_exclude', UPDRAFT_DEFAULT_OTHERS_EXCLUDE)); + } else { + $exclude = apply_filters('updraftplus_include_'.$whichone.'_exclude', array()); + } + return (empty($exclude) || !is_array($exclude)) ? array() : $exclude; + } + + public function really_is_writable($dir) { + // Suppress warnings, since if the user is dumping warnings to screen, then invalid JavaScript results and the screen breaks. + if (!@is_writable($dir)) return false; + // Found a case - GoDaddy server, Windows, PHP 5.2.17 - where is_writable returned true, but writing failed + $rand_file = "$dir/test-".md5(rand().time()).".txt"; + while (file_exists($rand_file)) { + $rand_file = "$dir/test-".md5(rand().time()).".txt"; + } + $ret = @file_put_contents($rand_file, 'testing...'); + @unlink($rand_file); + return ($ret > 0); + } + + public function wp_upload_dir() { + if (is_multisite()) { + global $current_site; + switch_to_blog($current_site->blog_id); + } + + $wp_upload_dir = wp_upload_dir(); + + if (is_multisite()) restore_current_blog(); + + return $wp_upload_dir; + } + + public function backup_uploads_dirlist($logit = false) { + # Create an array of directories to be skipped + # Make the values into the keys + $exclude = UpdraftPlus_Options::get_updraft_option('updraft_include_uploads_exclude', UPDRAFT_DEFAULT_UPLOADS_EXCLUDE); + if ($logit) $this->log("Exclusion option setting (uploads): ".$exclude); + $skip = array_flip(preg_split("/,/", $exclude)); + $wp_upload_dir = $this->wp_upload_dir(); + $uploads_dir = $wp_upload_dir['basedir']; + return $this->compile_folder_list_for_backup($uploads_dir, array(), $skip); + } + + public function backup_others_dirlist($logit = false) { + # Create an array of directories to be skipped + # Make the values into the keys + $exclude = UpdraftPlus_Options::get_updraft_option('updraft_include_others_exclude', UPDRAFT_DEFAULT_OTHERS_EXCLUDE); + if ($logit) $this->log("Exclusion option setting (others): ".$exclude); + $skip = array_flip(preg_split("/,/", $exclude)); + $file_entities = $this->get_backupable_file_entities(false); + + # Keys = directory names to avoid; values = the label for that directory (used only in log files) + #$avoid_these_dirs = array_flip($file_entities); + $avoid_these_dirs = array(); + foreach ($file_entities as $type => $dirs) { + if (is_string($dirs)) { + $avoid_these_dirs[$dirs] = $type; + } elseif (is_array($dirs)) { + foreach ($dirs as $dir) { + $avoid_these_dirs[$dir] = $type; + } + } + } + return $this->compile_folder_list_for_backup(WP_CONTENT_DIR, $avoid_these_dirs, $skip); + } + + // Add backquotes to tables and db-names in SQL queries. Taken from phpMyAdmin. + public function backquote($a_name) { + if (!empty($a_name) && $a_name != '*') { + if (is_array($a_name)) { + $result = array(); + reset($a_name); + while(list($key, $val) = each($a_name)) + $result[$key] = '`'.$val.'`'; + return $result; + } else { + return '`'.$a_name.'`'; + } + } else { + return $a_name; + } + } + + public function strip_dirslash($string) { + return preg_replace('#/+(,|$)#', '$1', $string); + } + + public function remove_empties($list) { + if (!is_array($list)) return $list; + foreach ($list as $ind => $entry) { + if (empty($entry)) unset($list[$ind]); + } + return $list; + } + + // avoid_these_dirs and skip_these_dirs ultimately do the same thing; but avoid_these_dirs takes full paths whereas skip_these_dirs takes basenames; and they are logged differently (dirs in avoid are potentially dangerous to include; skip is just a user-level preference). They are allowed to overlap. + public function compile_folder_list_for_backup($backup_from_inside_dir, $avoid_these_dirs, $skip_these_dirs) { + + // Entries in $skip_these_dirs are allowed to end in *, which means "and anything else as a suffix". It's not a full shell glob, but it covers what is needed to-date. + + $dirlist = array(); + $added = 0; + + $this->log('Looking for candidates to back up in: '.$backup_from_inside_dir); + $updraft_dir = $this->backups_dir_location(); + + if (is_file($backup_from_inside_dir)) { + array_push($dirlist, $backup_from_inside_dir); + $added++; + $this->log("finding files: $backup_from_inside_dir: adding to list ($added)"); + } elseif ($handle = opendir($backup_from_inside_dir)) { + + while (false !== ($entry = readdir($handle))) { + // $candidate: full path; $entry = one-level + $candidate = $backup_from_inside_dir.'/'.$entry; + if ($entry != "." && $entry != "..") { + if (isset($avoid_these_dirs[$candidate])) { + $this->log("finding files: $entry: skipping: this is the ".$avoid_these_dirs[$candidate]." directory"); + } elseif ($candidate == $updraft_dir) { + $this->log("finding files: $entry: skipping: this is the updraft directory"); + } elseif (isset($skip_these_dirs[$entry])) { + $this->log("finding files: $entry: skipping: excluded by options"); + } else { + $add_to_list = true; + // Now deal with entries in $skip_these_dirs ending in * or starting with * + foreach ($skip_these_dirs as $skip => $sind) { + if ('*' == substr($skip, -1, 1) && '*' == substr($skip, 0, 1) && strlen($skip) > 2) { + if (strpos($entry, substr($skip, 1, strlen($skip-2))) !== false) { + $this->log("finding files: $entry: skipping: excluded by options (glob)"); + $add_to_list = false; + } + } elseif ('*' == substr($skip, -1, 1) && strlen($skip) > 1) { + if (substr($entry, 0, strlen($skip)-1) == substr($skip, 0, strlen($skip)-1)) { + $this->log("finding files: $entry: skipping: excluded by options (glob)"); + $add_to_list = false; + } + } elseif ('*' == substr($skip, 0, 1) && strlen($skip) > 1) { + if (strlen($entry) >= strlen($skip)-1 && substr($entry, (strlen($skip)-1)*-1) == substr($skip, 1)) { + $this->log("finding files: $entry: skipping: excluded by options (glob)"); + $add_to_list = false; + } + } + } + if ($add_to_list) { + array_push($dirlist, $candidate); + $added++; + $skip_dblog = (($added > 50 && 0 != $added % 100) || ($added > 2000 && 0 != $added % 500)); + $this->log("finding files: $entry: adding to list ($added)", 'notice', false, $skip_dblog); + } + } + } + } + @closedir($handle); + } else { + $this->log('ERROR: Could not read the directory: '.$backup_from_inside_dir); + $this->log(__('Could not read the directory', 'updraftplus').': '.$backup_from_inside_dir, 'error'); + } + + return $dirlist; + + } + + private function save_backup_history($backup_array) { + if(is_array($backup_array)) { + $backup_history = UpdraftPlus_Options::get_updraft_option('updraft_backup_history'); + $backup_history = (is_array($backup_history)) ? $backup_history : array(); + $backup_array['nonce'] = $this->nonce; + $backup_array['service'] = $this->jobdata_get('service'); + if ('' != ($label = $this->jobdata_get('label', ''))) $backup_array['label'] = $label; + $backup_array['created_by_version'] = $this->version; + $backup_array['is_multisite'] = is_multisite() ? true : false; + $remotesend_info = $this->jobdata_get('remotesend_info'); + if (is_array($remotesend_info) && !empty($remotesend_info['url'])) $backup_array['remotesend_url'] = $remotesend_info['url']; + if (false != ($autobackup = $this->jobdata_get('is_autobackup', false))) $backup_array['autobackup'] = true; + $backup_history[$this->backup_time] = $backup_array; + UpdraftPlus_Options::update_updraft_option('updraft_backup_history', $backup_history, false); + } else { + $this->log('Could not save backup history because we have no backup array. Backup probably failed.'); + $this->log(__('Could not save backup history because we have no backup array. Backup probably failed.','updraftplus'), 'error'); + } + } + + public function is_db_encrypted($file) { + return preg_match('/\.crypt$/i', $file); + } + + public function get_backup_history($timestamp = false) { + $backup_history = UpdraftPlus_Options::get_updraft_option('updraft_backup_history'); + // The line below actually *introduces* a race condition + // global $wpdb; + // $backup_history = @unserialize($wpdb->get_var($wpdb->prepare("SELECT option_value from $wpdb->options WHERE option_name='updraft_backup_history'"))); + if (is_array($backup_history)) { + krsort($backup_history); //reverse sort so earliest backup is last on the array. Then we can array_pop. + } else { + $backup_history = array(); + } + if (!$timestamp) return $backup_history; + return (isset($backup_history[$timestamp])) ? $backup_history[$timestamp] : array(); + } + + public function terminate_due_to_activity($file, $time_now, $time_mod, $increase_resumption = true) { + # We check-in, to avoid 'no check in last time!' detectors firing + $this->record_still_alive(); + $file_size = file_exists($file) ? round(filesize($file)/1024,1). 'KB' : 'n/a'; + $this->log("Terminate: ".basename($file)." exists with activity within the last 30 seconds (time_mod=$time_mod, time_now=$time_now, diff=".(floor($time_now-$time_mod)).", size=$file_size). This likely means that another UpdraftPlus run is at work; so we will exit."); + $increase_by = ($increase_resumption) ? 120 : 0; + $this->increase_resume_and_reschedule($increase_by, true); + if (!defined('UPDRAFTPLUS_ALLOW_RECENT_ACTIVITY') || true != UPDRAFTPLUS_ALLOW_RECENT_ACTIVITY) die; + } + + # Replace last occurence + public function str_lreplace($search, $replace, $subject) { + $pos = strrpos($subject, $search); + if($pos !== false) $subject = substr_replace($subject, $replace, $pos, strlen($search)); + return $subject; + } + + public function str_replace_once($needle, $replace, $haystack) { + $pos = strpos($haystack, $needle); + return ($pos !== false) ? substr_replace($haystack,$replace,$pos,strlen($needle)) : $haystack; + } + + /* + If files + db are on different schedules but are scheduled for the same time, then combine them + $event = (object) array( 'hook' => $hook, 'timestamp' => $timestamp, 'schedule' => $recurrence, 'args' => $args, 'interval' => $schedules[$recurrence]['interval'] ); + See wp_schedule_single_event() and wp_schedule_event() in wp-includes/cron.php + */ + public function schedule_event($event) { + + static $scheduled = array(); + + + if ('updraft_backup' == $event->hook || 'updraft_backup_database' == $event->hook) { + + // Reset the option - but make sure it is saved first so that we can used it (since this hook may be called just before our actual cron task) + $this->combine_jobs_around = UpdraftPlus_Options::get_updraft_option('updraft_combine_jobs_around'); + + UpdraftPlus_Options::delete_updraft_option('updraft_combine_jobs_around'); + + $scheduled[$event->hook] = true; + + // This next fragment is wrong: there's only a 'second call' when saving all settings; otherwise, the WP scheduler might just be updating one event. So, there's some inefficieny as the option is wiped and set uselessly at least once when saving settings. + // We only want to take action on the second call (otherwise, our information is out-of-date already) + // If there is no second call, then that's fine - nothing to do + //if (count($scheduled) < 2) { + // return $event; + //} + + $backup_scheduled_for = ('updraft_backup' == $event->hook) ? $event->timestamp : wp_next_scheduled('updraft_backup'); + $db_scheduled_for = ('updraft_backup_database' == $event->hook) ? $event->timestamp : wp_next_scheduled('updraft_backup_database'); + + $diff = absint($backup_scheduled_for - $db_scheduled_for); + + $margin = (defined('UPDRAFTPLUS_COMBINE_MARGIN') && is_numeric(UPDRAFTPLUS_COMBINE_MARGIN)) ? UPDRAFTPLUS_COMBINE_MARGIN : 600; + + if ($backup_scheduled_for && $db_scheduled_for && $diff < $margin) { + // We could change the event parameters; however, this would complicate other code paths (because the WP cron system uses a hash of the parameters as a key, and you must supply the exact parameters to look up events). So, we just set a marker that boot_backup() can pick up on. + UpdraftPlus_Options::update_updraft_option('updraft_combine_jobs_around', min($backup_scheduled_for, $db_scheduled_for)); + } + + } + + return $event; + + } + + /* + This function is both the backup scheduler and a filter callback for saving the option. + It is called in the register_setting for the updraft_interval, which means when the + admin settings are saved it is called. + */ + public function schedule_backup($interval) { + $previous_time = wp_next_scheduled('updraft_backup'); + + // Clear schedule so that we don't stack up scheduled backups + wp_clear_scheduled_hook('updraft_backup'); + if ('manual' == $interval) return 'manual'; + $previous_interval = UpdraftPlus_Options::get_updraft_option('updraft_interval'); + + $valid_schedules = wp_get_schedules(); + if (empty($valid_schedules[$interval])) $interval = 'daily'; + + // Try to avoid changing the time is one was already scheduled. This is fairly conservative - we could do more, e.g. check if a backup already happened today. + $default_time = ($interval == $previous_interval && $previous_time>0) ? $previous_time : time()+120; + $first_time = apply_filters('updraftplus_schedule_firsttime_files', $default_time); + + wp_schedule_event($first_time, $interval, 'updraft_backup'); + + return $interval; + } + + public function schedule_backup_database($interval) { + $previous_time = wp_next_scheduled('updraft_backup_database'); + + // Clear schedule so that we don't stack up scheduled backups + wp_clear_scheduled_hook('updraft_backup_database'); + if ('manual' == $interval) return 'manual'; + + $previous_interval = UpdraftPlus_Options::get_updraft_option('updraft_interval_database'); + + $valid_schedules = wp_get_schedules(); + if (empty($valid_schedules[$interval])) $interval = 'daily'; + + // Try to avoid changing the time is one was already scheduled. This is fairly conservative - we could do more, e.g. check if a backup already happened today. + $default_time = ($interval == $previous_interval && $previous_time>0) ? $previous_time : time()+120; + + $first_time = apply_filters('updraftplus_schedule_firsttime_db', $default_time); + wp_schedule_event($first_time, $interval, 'updraft_backup_database'); + + return $interval; + } + + // Acts as a WordPress options filter + public function onedrive_checkchange($onedrive) { + $opts = UpdraftPlus_Options::get_updraft_option('updraft_onedrive'); + if (!is_array($opts)) $opts = array(); + if (!is_array($onedrive)) return $opts; + $old_client_id = empty($opts['clientid']) ? '' : $opts['clientid']; + $now_client_id = empty($onedrive['clientid']) ? '' : $onedrive['clientid']; + if (!empty($opts['refresh_token']) && $old_client_id != $now_client_id) { + unset($opts['refresh_token']); + unset($opts['tokensecret']); + unset($opts['ownername']); + } + foreach ($onedrive as $key => $value) { + if ('folder' == $key) $value = trim(str_replace('\\', '/', $value), '/'); + $opts[$key] = ('clientid' == $key || 'secret' == $key) ? trim($value) : $value; + } + return $opts; + } + + // This is a WordPress options filter + public function azure_checkchange($azure) { + $opts = UpdraftPlus_Options::get_updraft_option('updraft_azure'); + if (!is_array($opts)) $opts = array(); + if (!is_array($azure)) return $opts; + foreach ($azure as $key => $value) { + if ('folder' == $key) $value = trim(str_replace('\\', '/', $value), '/'); + // Only lower-case containers are permitted - enforce this + if ('container' == $key) $value = strtolower($value); + $opts[$key] = ('key' == $key || 'account_name' == $key) ? trim($value) : $value; + // Convert one likely misunderstanding of the format to enter the account name in + if ('account_name' == $key && preg_match('#^https?://(.*)\.blob\.core\.windows#i', $opts['account_name'], $matches)) { + $opts['account_name'] = $matches[1]; + } + } + return $opts; + } + + + // Acts as a WordPress options filter + public function googledrive_checkchange($google) { + $opts = UpdraftPlus_Options::get_updraft_option('updraft_googledrive'); + if (!is_array($google)) return $opts; + $old_client_id = (empty($opts['clientid'])) ? '' : $opts['clientid']; + if (!empty($opts['token']) && $old_client_id != $google['clientid']) { + require_once(UPDRAFTPLUS_DIR.'/methods/googledrive.php'); + add_action('http_request_args', array($this, 'modify_http_options')); + UpdraftPlus_BackupModule_googledrive::gdrive_auth_revoke(false); + remove_action('http_request_args', array($this, 'modify_http_options')); + $google['token'] = ''; + unset($opts['ownername']); + } + foreach ($google as $key => $value) { + // Trim spaces - I got support requests from users who didn't spot the spaces they introduced when copy/pasting + $opts[$key] = ('clientid' == $key || 'secret' == $key) ? trim($value) : $value; + } + if (isset($opts['folder'])) { + $opts['folder'] = apply_filters('updraftplus_options_googledrive_foldername', 'UpdraftPlus', $opts['folder']); + unset($opts['parentid']); + } + return $opts; + } + + // Acts as a WordPress options filter + public function googlecloud_checkchange($google) { + $opts = UpdraftPlus_Options::get_updraft_option('updraft_googlecloud'); + if (!is_array($google)) return $opts; + + $old_token = (empty($opts['token'])) ? '' : $opts['token']; + $old_client_id = (empty($opts['clientid'])) ? '' : $opts['clientid']; + $old_client_secret = (empty($opts['secret'])) ? '' : $opts['secret']; + + if($old_client_id == $google['clientid'] && $old_client_secret == $google['secret']){ + $google['token'] = $old_token; + } + if (!empty($opts['token']) && $old_client_id != $google['clientid']) { + add_action('http_request_args', array($this, 'modify_http_options')); + UpdraftPlus_Addons_RemoteStorage_googlecloud::gcloud_auth_revoke(false); + remove_action('http_request_args', array($this, 'modify_http_options')); + $google['token'] = ''; + unset($opts['ownername']); + } + foreach ($google as $key => $value) { + // Trim spaces - I got support requests from users who didn't spot the spaces they introduced when copy/pasting + $opts[$key] = ('clientid' == $key || 'secret' == $key) ? trim($value) : $value; + if ($key == 'bucket_location') $opts[$key] = trim(strtolower($value)); + } + + return $google; + } + + public function ftp_sanitise($ftp) { + if (is_array($ftp) && !empty($ftp['host']) && preg_match('#ftp(es|s)?://(.*)#i', $ftp['host'], $matches)) { + $ftp['host'] = untrailingslashit($matches[2]); + } + return $ftp; + } + + public function s3_sanitise($s3) { + if (is_array($s3) && !empty($s3['path']) && '/' == substr($s3['path'], 0, 1)) { + $s3['path'] = substr($s3['path'], 1); + } + return $s3; + } + + // Acts as a WordPress options filter + public function bitcasa_checkchange($bitcasa) { + $opts = UpdraftPlus_Options::get_updraft_option('updraft_bitcasa'); + if (!is_array($opts)) $opts = array(); + if (!is_array($bitcasa)) return $opts; + $old_client_id = (empty($opts['clientid'])) ? '' : $opts['clientid']; + if (!empty($opts['token']) && $old_client_id != $bitcasa['clientid']) { + unset($opts['token']); + unset($opts['ownername']); + } + foreach ($bitcasa as $key => $value) { $opts[$key] = $value; } + return $opts; + } + + // Acts as a WordPress options filter + public function copycom_checkchange($copycom) { + $opts = UpdraftPlus_Options::get_updraft_option('updraft_copycom'); + if (!is_array($opts)) $opts = array(); + if (!is_array($copycom)) return $opts; + $old_client_id = (empty($opts['clientid'])) ? '' : $opts['clientid']; + if (!empty($opts['token']) && $old_client_id != $copycom['clientid']) { + unset($opts['token']); + unset($opts['tokensecret']); + unset($opts['ownername']); + } + foreach ($copycom as $key => $value) { + if ('clientid' == $key || 'secret' == $key) { + $opts[$key] = trim($value); + } else { + $opts[$key] = $value; + } + } + return $opts; + } + + // Acts as a WordPress options filter + public function dropbox_checkchange($dropbox) { + $opts = UpdraftPlus_Options::get_updraft_option('updraft_dropbox'); + if (!is_array($opts)) $opts = array(); + if (!is_array($dropbox)) return $opts; + if (!empty($opts['tk_access_token']) && empty($opts['appkey']) && !empty($dropbox['appkey'])) { + unset($opts['tk_access_token']); + unset($opts['folder']); + unset($opts['ownername']); + } + foreach ($dropbox as $key => $value) { + if (null === $value) { + unset($opts[$key]); + } else { + $opts[$key] = $value; + } + } + if (!empty($opts['folder']) && preg_match('#^https?://(www.)dropbox\.com/home/Apps/UpdraftPlus(.Com)?([^/]*)/(.*)$#i', $opts['folder'], $matches)) $opts['folder'] = $matches[3]; + return $opts; + } + + public function remove_local_directory($dir, $contents_only = false) { + // PHP 5.3+ only + //foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS), RecursiveIteratorIterator::CHILD_FIRST) as $path) { + // $path->isFile() ? unlink($path->getPathname()) : rmdir($path->getPathname()); + //} + //return rmdir($dir); + + if ($handle = @opendir($dir)) { + while (false !== ($entry = readdir($handle))) { + if ('.' !== $entry && '..' !== $entry) { + if (is_dir($dir.'/'.$entry)) { + $this->remove_local_directory($dir.'/'.$entry, false); + } else { + @unlink($dir.'/'.$entry); + } + } + } + @closedir($handle); + } + + return ($contents_only) ? true : rmdir($dir); + } + + // Returns without any trailing slash + public function backups_dir_location($allow_cache = true) { + + if ($allow_cache && !empty($this->backup_dir)) return $this->backup_dir; + + $updraft_dir = untrailingslashit(UpdraftPlus_Options::get_updraft_option('updraft_dir')); + # When newly installing, if someone had (e.g.) wp-content/updraft in their database from a previous, deleted pre-1.7.18 install but had removed the updraft directory before re-installing, without this fix they'd end up with wp-content/wp-content/updraft. + if (preg_match('/^wp-content\/(.*)$/', $updraft_dir, $matches) && ABSPATH.'wp-content' === WP_CONTENT_DIR) { + UpdraftPlus_Options::update_updraft_option('updraft_dir', $matches[1]); + $updraft_dir = WP_CONTENT_DIR.'/'.$matches[1]; + } + $default_backup_dir = WP_CONTENT_DIR.'/updraft'; + $updraft_dir = ($updraft_dir) ? $updraft_dir : $default_backup_dir; + + // Do a test for a relative path + if ('/' != substr($updraft_dir, 0, 1) && "\\" != substr($updraft_dir, 0, 1) && !preg_match('/^[a-zA-Z]:/', $updraft_dir)) { + # Legacy - file paths stored related to ABSPATH + if (is_dir(ABSPATH.$updraft_dir) && is_file(ABSPATH.$updraft_dir.'/index.html') && is_file(ABSPATH.$updraft_dir.'/.htaccess') && !is_file(ABSPATH.$updraft_dir.'/index.php') && false !== strpos(file_get_contents(ABSPATH.$updraft_dir.'/.htaccess', false, null, 0, 20), 'deny from all')) { + $updraft_dir = ABSPATH.$updraft_dir; + } else { + # File paths stored relative to WP_CONTENT_DIR + $updraft_dir = trailingslashit(WP_CONTENT_DIR).$updraft_dir; + } + } + + // Check for the existence of the dir and prevent enumeration + // index.php is for a sanity check - make sure that we're not somewhere unexpected + if((!is_dir($updraft_dir) || !is_file($updraft_dir.'/index.html') || !is_file($updraft_dir.'/.htaccess')) && !is_file($updraft_dir.'/index.php') || !is_file($updraft_dir.'/web.config')) { + @mkdir($updraft_dir, 0775, true); + @file_put_contents($updraft_dir.'/index.html',"WordPress backups by UpdraftPlus"); + if (!is_file($updraft_dir.'/.htaccess')) @file_put_contents($updraft_dir.'/.htaccess','deny from all'); + if (!is_file($updraft_dir.'/web.config')) @file_put_contents($updraft_dir.'/web.config', "\n\n\n\n\n\n\n"); + } + + $this->backup_dir = $updraft_dir; + + return $updraft_dir; + } + + private function spool_crypted_file($fullpath, $encryption) { + if ('' == $encryption) $encryption = UpdraftPlus_Options::get_updraft_option('updraft_encryptionphrase'); + if ('' == $encryption) { + header('Content-type: text/plain'); + _e("Decryption failed. The database file is encrypted, but you have no encryption key entered.", 'updraftplus'); + $this->log('Decryption of database failed: the database file is encrypted, but you have no encryption key entered.', 'error'); + } else { + $ciphertext = $this->decrypt($fullpath, $encryption); + if ($ciphertext) { + header('Content-type: application/x-gzip'); + header("Content-Disposition: attachment; filename=\"".substr(basename($fullpath), 0, -6)."\";"); + header("Content-Length: ".strlen($ciphertext)); + print $ciphertext; + } else { + header('Content-type: text/plain'); + echo __("Decryption failed. The most likely cause is that you used the wrong key.", 'updraftplus')." ".__('The decryption key used:', 'updraftplus').' '.$encryption; + + } + } + } + + public function get_mime_type_from_filename($filename, $allow_gzip = true) { + if ('.zip' == substr($filename, -4, 4)) { + return 'application/zip'; + } elseif ('.tar' == substr($filename, -4, 4)) { + return 'application/x-tar'; + } elseif ('.tar.gz' == substr($filename, -7, 7)) { + return 'application/x-tgz'; + } elseif ('.tar.bz2' == substr($filename, -8, 8)) { + return 'application/x-bzip-compressed-tar'; + } elseif ($allow_gzip && '.gz' == substr($filename, -3, 3)) { + // When we sent application/x-gzip as a content-type header to the browser, we found a case where the server compressed it a second time (since observed several times) + return 'application/x-gzip'; + } else { + return 'application/octet-stream'; + } + } + + public function spool_file($fullpath, $encryption = '') { + @set_time_limit(900); + + if (file_exists($fullpath)) { + + // Prevent any debug output + // Don't enable this line - it causes 500 HTTP errors in some cases/hosts on some large files, for unknown reason + //@ini_set('display_errors', '0'); + + $spooled = false; + if ('.crypt' == substr($fullpath, -6, 6)) { + if (ob_get_level()) { + $flush_max = min(5, (int)ob_get_level()); + for ($i=1; $i<=$flush_max; $i++) { @ob_end_clean(); } + } + header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 + header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past + $this->spool_crypted_file($fullpath, (string)$encryption); + return; + } + + $content_type = $this->get_mime_type_from_filename($fullpath, false); + + require_once(UPDRAFTPLUS_DIR.'/includes/class-partialfileservlet.php'); + + //Prevent the file being read into memory + if (ob_get_level()) { + $flush_max = min(5, (int)ob_get_level()); + for ($i=1; $i<=$flush_max; $i++) { @ob_end_clean(); } + } + if (ob_get_level()) @ob_end_clean(); // Twice - see HS#6673 - someone at least needed it + + if (isset($_SERVER['HTTP_RANGE'])) { + $range_header = trim($_SERVER['HTTP_RANGE']); + } elseif (function_exists('apache_request_headers')) { + foreach (apache_request_headers() as $name => $value) { + if (strtoupper($name) === 'RANGE') { + $range_header = trim($value); + } + } + } + + if (empty($range_header)) { + header("Content-Length: ".filesize($fullpath)); + header("Content-type: $content_type"); + header("Content-Disposition: attachment; filename=\"".basename($fullpath)."\";"); + readfile($fullpath); + return; + } + + try { + $range_header = UpdraftPlus_RangeHeader::createFromHeaderString($range_header); + $servlet = new UpdraftPlus_PartialFileServlet($range_header); + $servlet->sendFile($fullpath, $content_type); + } catch (UpdraftPlus_InvalidRangeHeaderException $e) { + header("HTTP/1.1 400 Bad Request"); + error_log("UpdraftPlus: UpdraftPlus_InvalidRangeHeaderException: ".$e->getMessage()); + } catch (UpdraftPlus_UnsatisfiableRangeException $e) { + header("HTTP/1.1 416 Range Not Satisfiable"); + } catch (UpdraftPlus_NonExistentFileException $e) { + header("HTTP/1.1 404 Not Found"); + } catch (UpdraftPlus_UnreadableFileException $e) { + header("HTTP/1.1 500 Internal Server Error"); + } + + } else { + echo __('File not found', 'updraftplus'); + } + } + + public function retain_range($input) { + $input = (int)$input; + return ($input > 0) ? min($input, 9999) : 1; + } + + // This is used as a WordPress options filter + public function construct_webdav_url($input) { + + if (isset($input['webdav'])) { + + $url = null; + $slash = "/"; + $host = ""; + $colon = ""; + $port_colon = ""; + + if ((80 == $input['port'] && 'webdav' == $input['webdav']) || (443 == $input['port'] && 'webdavs' == $input['webdav'])) { + $input['port'] = ''; + } + + if ('/' == substr($input['path'], 0, 1)){ + $slash = ""; + } + + if (false === strpos($input['host'],"@")){ + $host = "@"; + } + + if ('' != $input['user'] && '' != $input['pass']){ + $colon = ":"; + } + + if ('' != $input['host'] && '' != $input['port']){ + $port_colon = ":"; + } + + if (!empty($input['url']) && 'http' == strtolower(substr($input['url'], 0, 4))) { + $input['url'] = 'webdav'.substr($input['url'], 4); + } elseif ('' != $input['user'] && '' != $input['pass']) { + $input['url'] = $input['webdav'] . urlencode($input['user']) . $colon . urlencode($input['pass']) . $host . urlencode($input['host']) . $port_colon . $input['port'] . $slash . $input['path']; + } else { + $input['url'] = $input['webdav'] . urlencode($input['host']) . $port_colon . $input['port'] . $slash . $input['path']; + } + + // array_splice($input, 1); + } + + return array('url' => $input['url']); + } + + public function just_one_email($input, $required = false) { + $x = $this->just_one($input, 'saveemails', (empty($input) && false === $required) ? '' : get_bloginfo('admin_email')); + if (is_array($x)) { + foreach ($x as $ind => $val) { + if (empty($val)) unset($x[$ind]); + } + if (empty($x)) $x = ''; + } + return $x; + } + + public function just_one($input, $filter = 'savestorage', $rinput = false) { + $oinput = $input; + if (false === $rinput) $rinput = (is_array($input)) ? array_pop($input) : $input; + if (is_string($rinput) && false !== strpos($rinput, ',')) $rinput = substr($rinput, 0, strpos($rinput, ',')); + return apply_filters('updraftplus_'.$filter, $rinput, $oinput); + } + + public function enqueue_select2() { + // De-register to defeat any plugins that may have registered incompatible versions (e.g. WooCommerce 2.5 beta1 still has the Select 2 3.5 series) + wp_deregister_script('select2'); + wp_deregister_style('select2'); + $select2_version = '4.0.3'; + wp_enqueue_script('select2', UPDRAFTPLUS_URL."/includes/select2/select2.min.js", array('jquery'), $select2_version); + wp_enqueue_style('select2', UPDRAFTPLUS_URL."/includes/select2/select2.min.css", array(), $select2_version); + } + + public function memory_check_current($memory_limit = false) { + # Returns in megabytes + if ($memory_limit == false) $memory_limit = ini_get('memory_limit'); + $memory_limit = rtrim($memory_limit); + $memory_unit = $memory_limit[strlen($memory_limit)-1]; + if ((int)$memory_unit == 0 && $memory_unit !== '0') { + $memory_limit = substr($memory_limit,0,strlen($memory_limit)-1); + } else { + $memory_unit = ''; + } + switch($memory_unit) { + case '': + $memory_limit = floor($memory_limit/1048576); + break; + case 'K': + case 'k': + $memory_limit = floor($memory_limit/1024); + break; + case 'G': + $memory_limit = $memory_limit*1024; + break; + case 'M': + //assumed size, no change needed + break; + } + return $memory_limit; + } + + public function memory_check($memory, $check_using = false) { + $memory_limit = $this->memory_check_current($check_using); + return ($memory_limit >= $memory)?true:false; + } + + private function url_start($html_allowed, $url, $https = false) { + $proto = ($https) ? 'https' : 'http'; + if (strpos($url, 'updraftplus.com') !== false){ + return $html_allowed ? "" : ""; + }else{ + return $html_allowed ? "" : ""; + } + } + + private function url_end($html_allowed, $url, $https = false) { + $proto = ($https) ? 'https' : 'http'; + return $html_allowed ? '' : " ($proto://$url)"; + } + + private function translation_needed() { + $wplang = get_locale(); + if (strlen($wplang) < 1 || $wplang == 'en_US' || $wplang == 'en_GB') return false; + if (defined('WP_LANG_DIR') && is_file(WP_LANG_DIR.'/plugins/updraftplus-'.$wplang.'.mo')) return false; + if (is_file(UPDRAFTPLUS_DIR.'/languages/updraftplus-'.$wplang.'.mo')) return false; + return true; + } + + public function get_updraftplus_rssfeed() { + if (!function_exists('fetch_feed')) require(ABSPATH . WPINC . '/feed.php'); + return fetch_feed('http://feeds.feedburner.com/updraftplus/'); + } + + public function analyse_db_file($timestamp, $res, $db_file = false, $header_only = false) { + + $mess = array(); $warn = array(); $err = array(); $info = array(); + + $wp_version = $this->get_wordpress_version(); + global $wpdb; + + $updraft_dir = $this->backups_dir_location(); + + if (false === $db_file) { + # This attempts to raise the maximum packet size. This can't be done within the session, only globally. Therefore, it has to be done before the session starts; in our case, during the pre-analysis. + $this->get_max_packet_size(); + + $backup = $this->get_backup_history($timestamp); + if (!isset($backup['nonce']) || !isset($backup['db'])) return array($mess, $warn, $err, $info); + + $db_file = (is_string($backup['db'])) ? $updraft_dir.'/'.$backup['db'] : $updraft_dir.'/'.$backup['db'][0]; + } + + if (!is_readable($db_file)) return array($mess, $warn, $err, $info); + + // Encrypted - decrypt it + if ($this->is_db_encrypted($db_file)) { + + $encryption = empty($res['updraft_encryptionphrase']) ? UpdraftPlus_Options::get_updraft_option('updraft_encryptionphrase') : $res['updraft_encryptionphrase']; + + if (!$encryption) { + if (class_exists('UpdraftPlus_Addon_MoreDatabase')) { + $err[] = sprintf(__('Error: %s', 'updraftplus'), __('Decryption failed. The database file is encrypted, but you have no encryption key entered.', 'updraftplus')); + } else { + $err[] = sprintf(__('Error: %s', 'updraftplus'), __('Decryption failed. The database file is encrypted.', 'updraftplus')); + } + return array($mess, $warn, $err, $info); + } + + $ciphertext = $this->decrypt($db_file, $encryption); + + if ($ciphertext) { + $new_db_file = $updraft_dir.'/'.basename($db_file, '.crypt'); + if (!file_put_contents($new_db_file, $ciphertext)) { + $err[] = __('Failed to write out the decrypted database to the filesystem.','updraftplus'); + return array($mess, $warn, $err, $info); + } + $db_file = $new_db_file; + } else { + $err[] = __('Decryption failed. The most likely cause is that you used the wrong key.','updraftplus'); + return array($mess, $warn, $err, $info); + } + } + + # Even the empty schema when gzipped comes to 1565 bytes; a blank WP 3.6 install at 5158. But we go low, in case someone wants to share single tables. + if (filesize($db_file) < 1000) { + $err[] = sprintf(__('The database is too small to be a valid WordPress database (size: %s Kb).','updraftplus'), round(filesize($db_file)/1024, 1)); + return array($mess, $warn, $err, $info); + } + + $is_plain = ('.gz' == substr($db_file, -3, 3)) ? false : true; + + $dbhandle = ($is_plain) ? fopen($db_file, 'r') : $this->gzopen_for_read($db_file, $warn, $err); + if (!is_resource($dbhandle)) { + $err[] = __('Failed to open database file.', 'updraftplus'); + return array($mess, $warn, $err, $info); + } + + $info['timestamp'] = $timestamp; + + # Analyse the file, print the results. + + $line = 0; + $old_siteurl = ''; + $old_home = ''; + $old_table_prefix = ''; + $old_siteinfo = array(); + $gathering_siteinfo = true; + $old_wp_version = ''; + $old_php_version = ''; + + $tables_found = array(); + + // TODO: If the backup is the right size/checksum, then we could restore the $line <= 100 in the 'while' condition and not bother scanning the whole thing? Or better: sort the core tables to be first so that this usually terminates early + + $wanted_tables = array('terms', 'term_taxonomy', 'term_relationships', 'commentmeta', 'comments', 'links', 'options', 'postmeta', 'posts', 'users', 'usermeta'); + + $migration_warning = false; + $processing_create = false; + $db_version = $wpdb->db_version(); + + // Don't set too high - we want a timely response returned to the browser + // Until April 2015, this was always 90. But we've seen a few people with ~1GB databases (uncompressed), and 90s is not enough. Note that we don't bother checking here if it's compressed - having a too-large timeout when unexpected is harmless, as it won't be hit. On very large dbs, they're expecting it to take a while. + // "120 or 240" is a first attempt at something more useful than just fixed at 90 - but should be sufficient (as 90 was for everyone without ~1GB databases) + $default_dbscan_timeout = (filesize($db_file) < 31457280) ? 120 : 240; + $dbscan_timeout = (defined('UPDRAFTPLUS_DBSCAN_TIMEOUT') && is_numeric(UPDRAFTPLUS_DBSCAN_TIMEOUT)) ? UPDRAFTPLUS_DBSCAN_TIMEOUT : $default_dbscan_timeout; + @set_time_limit($dbscan_timeout); + + while ((($is_plain && !feof($dbhandle)) || (!$is_plain && !gzeof($dbhandle))) && ($line<100 || (!$header_only && count($wanted_tables)>0))) { + $line++; + // Up to 1MB + $buffer = ($is_plain) ? rtrim(fgets($dbhandle, 1048576)) : rtrim(gzgets($dbhandle, 1048576)); + // Comments are what we are interested in + if (substr($buffer, 0, 1) == '#') { + $processing_create = false; + if ('' == $old_siteurl && preg_match('/^\# Backup of: (http(.*))$/', $buffer, $matches)) { + $old_siteurl = untrailingslashit($matches[1]); + $mess[] = __('Backup of:', 'updraftplus').' '.htmlspecialchars($old_siteurl).((!empty($old_wp_version)) ? ' '.sprintf(__('(version: %s)', 'updraftplus'), $old_wp_version) : ''); + // Check for should-be migration + if ($old_siteurl != untrailingslashit(site_url())) { + if (!$migration_warning) { + $migration_warning = true; + $powarn = apply_filters('updraftplus_dbscan_urlchange', sprintf(__('Warning: %s', 'updraftplus'), ''.__('This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work.', 'updraftplus').''), $old_siteurl, $res); + if (!empty($powarn)) $warn[] = $powarn; + } + // Explicitly set it, allowing the consumer to detect when the result was unknown + $info['same_url'] = false; + + if ($this->mod_rewrite_unavailable(false)) { + $warn[] = sprintf(__('You are using the %s webserver, but do not seem to have the %s module loaded.', 'updraftplus'), 'Apache', 'mod_rewrite').' '.sprintf(__('You should enable %s to make any pretty permalinks (e.g. %s) work', 'updraftplus'), 'mod_rewrite', 'http://example.com/my-page/'); + } + + } else { + $info['same_url'] = true; + } + } elseif ('' == $old_home && preg_match('/^\# Home URL: (http(.*))$/', $buffer, $matches)) { + $old_home = untrailingslashit($matches[1]); + // Check for should-be migration + if (!$migration_warning && $old_home != home_url()) { + $migration_warning = true; + $powarn = apply_filters('updraftplus_dbscan_urlchange', sprintf(__('Warning: %s', 'updraftplus'), ''.__('This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work.', 'updraftplus').''), $old_home, $res); + if (!empty($powarn)) $warn[] = $powarn; + } + } elseif (!isset($info['created_by_version']) && preg_match('/^\# Created by UpdraftPlus version ([\d\.]+)/', $buffer, $matches)) { + $info['created_by_version'] = trim($matches[1]); + } elseif ('' == $old_wp_version && preg_match('/^\# WordPress Version: ([0-9]+(\.[0-9]+)+)(-[-a-z0-9]+,)?(.*)$/', $buffer, $matches)) { + $old_wp_version = $matches[1]; + if (!empty($matches[3])) $old_wp_version .= substr($matches[3], 0, strlen($matches[3])-1); + if (version_compare($old_wp_version, $wp_version, '>')) { + //$mess[] = sprintf(__('%s version: %s', 'updraftplus'), 'WordPress', $old_wp_version); + $warn[] = sprintf(__('You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this.', 'updraftplus'), $old_wp_version, $wp_version); + } + if (preg_match('/running on PHP ([0-9]+\.[0-9]+)(\s|\.)/', $matches[4], $nmatches) && preg_match('/^([0-9]+\.[0-9]+)(\s|\.)/', PHP_VERSION, $cmatches)) { + $old_php_version = $nmatches[1]; + $current_php_version = $cmatches[1]; + if (version_compare($old_php_version, $current_php_version, '>')) { + //$mess[] = sprintf(__('%s version: %s', 'updraftplus'), 'WordPress', $old_wp_version); + $warn[] = sprintf(__('The site in this backup was running on a webserver with version %s of %s. ', 'updraftplus'), $old_php_version, 'PHP').' '.sprintf(__('This is significantly newer than the server which you are now restoring onto (version %s).', 'updraftplus'), PHP_VERSION).' '.sprintf(__('You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version.', 'updraftplus'), 'PHP').' '.sprintf(__('Any support requests to do with %s should be raised with your web hosting company.', 'updraftplus'), 'PHP'); + } + } + } elseif ('' == $old_table_prefix && (preg_match('/^\# Table prefix: (\S+)$/', $buffer, $matches) || preg_match('/^-- Table prefix: (\S+)$/i', $buffer, $matches))) { + $old_table_prefix = $matches[1]; +// echo ''.__('Old table prefix:', 'updraftplus').' '.htmlspecialchars($old_table_prefix).'
        '; + } elseif (empty($info['label']) && preg_match('/^\# Label: (.*)$/', $buffer, $matches)) { + $info['label'] = $matches[1]; + $mess[] = __('Backup label:', 'updraftplus').' '.htmlspecialchars($info['label']); + } elseif ($gathering_siteinfo && preg_match('/^\# Site info: (\S+)$/', $buffer, $matches)) { + if ('end' == $matches[1]) { + $gathering_siteinfo = false; + // Sanity checks + if (isset($old_siteinfo['multisite']) && !$old_siteinfo['multisite'] && is_multisite()) { + // Just need to check that you're crazy + //if (!defined('UPDRAFTPLUS_EXPERIMENTAL_IMPORTINTOMULTISITE') || !UPDRAFTPLUS_EXPERIMENTAL_IMPORTINTOMULTISITE) { + //$err[] = sprintf(__('Error: %s', 'updraftplus'), __('You are running on WordPress multisite - but your backup is not of a multisite site.', 'updraftplus')); + //return array($mess, $warn, $err, $info); + //} else { + $warn[] = __('You are running on WordPress multisite - but your backup is not of a multisite site.', 'updraftplus').' '.__('It will be imported as a new site.', 'updraftplus').' '.__('Please read this link for important information on this process.', 'updraftplus').''; + //} + // Got the needed code? + if (!class_exists('UpdraftPlusAddOn_MultiSite') || !class_exists('UpdraftPlus_Addons_Migrator')) { + $err[] = sprintf(__('Error: %s', 'updraftplus'), sprintf(__('To import an ordinary WordPress site into a multisite installation requires %s.', 'updraftplus'), 'UpdraftPlus Premium')); + return array($mess, $warn, $err, $info); + } + } elseif (isset($old_siteinfo['multisite']) && $old_siteinfo['multisite'] && !is_multisite()) { + $warn[] = __('Warning:', 'updraftplus').' '.__('Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible.', 'updraftplus').' '.__('If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite.', 'updraftplus').''; + } + } elseif (preg_match('/^([^=]+)=(.*)$/', $matches[1], $kvmatches)) { + $key = $kvmatches[1]; + $val = $kvmatches[2]; + if ('multisite' == $key) { + $info['multisite'] = $val ? true : false; + if ($val) $mess[] = ''.__('Site information:', 'updraftplus').' '.'backup is of a WordPress Network'; + } + $old_siteinfo[$key]=$val; + } + } + + } elseif (preg_match('/^\s*create table \`?([^\`\(]*)\`?\s*\(/i', $buffer, $matches)) { + $table = $matches[1]; + $tables_found[] = $table; + if ($old_table_prefix) { + // Remove prefix + $table = $this->str_replace_once($old_table_prefix, '', $table); + if (in_array($table, $wanted_tables)) { + $wanted_tables = array_diff($wanted_tables, array($table)); + } + } + if (substr($buffer, -1, 1) != ';') $processing_create = true; + } elseif ($processing_create) { + if (substr($buffer, -1, 1) == ';') $processing_create = false; + static $mysql_version_warned = false; + if (!$mysql_version_warned && version_compare($db_version, '5.2.0', '<') && preg_match('/(CHARSET|COLLATE)[= ]utf8mb4/', $buffer)) { + $mysql_version_warned = true; + $err[] = sprintf(__('Error: %s', 'updraftplus'), sprintf(__('The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on.', 'updraftplus'), $db_version).' '.__('You must upgrade MySQL to be able to use this database.', 'updraftplus')); + } + } + } + + if ($is_plain) { + @fclose($dbhandle); + } else { + @gzclose($dbhandle); + } + +/* $blog_tables = "CREATE TABLE $wpdb->terms ( +CREATE TABLE $wpdb->term_taxonomy ( +CREATE TABLE $wpdb->term_relationships ( +CREATE TABLE $wpdb->commentmeta ( +CREATE TABLE $wpdb->comments ( +CREATE TABLE $wpdb->links ( +CREATE TABLE $wpdb->options ( +CREATE TABLE $wpdb->postmeta ( +CREATE TABLE $wpdb->posts ( + $users_single_table = "CREATE TABLE $wpdb->users ( + $users_multi_table = "CREATE TABLE $wpdb->users ( + $usermeta_table = "CREATE TABLE $wpdb->usermeta ( + $ms_global_tables = "CREATE TABLE $wpdb->blogs ( +CREATE TABLE $wpdb->blog_versions ( +CREATE TABLE $wpdb->registration_log ( +CREATE TABLE $wpdb->site ( +CREATE TABLE $wpdb->sitemeta ( +CREATE TABLE $wpdb->signups ( +*/ + + $missing_tables = array(); + if ($old_table_prefix) { + if (!$header_only) { + foreach ($wanted_tables as $table) { + if (!in_array($old_table_prefix.$table, $tables_found)) { + $missing_tables[] = $table; + } + } + if (count($missing_tables)>0) { + $warn[] = sprintf(__('This database backup is missing core WordPress tables: %s', 'updraftplus'), implode(', ', $missing_tables)); + } + } + } else { + if (empty($backup['meta_foreign'])) { + $warn[] = __('UpdraftPlus was unable to find the table prefix when scanning the database backup.', 'updraftplus'); + } + } + + return array($mess, $warn, $err, $info); + + } + + private function gzopen_for_read($file, &$warn, &$err) { + if (!function_exists('gzopen') || !function_exists('gzread')) { + $missing = ''; + if (!function_exists('gzopen')) $missing .= 'gzopen'; + if (!function_exists('gzread')) $missing .= ($missing) ? ', gzread' : 'gzread'; + $err[] = sprintf(__("Your web server's PHP installation has these functions disabled: %s.", 'updraftplus'), $missing).' '.sprintf(__('Your hosting company must enable these functions before %s can work.', 'updraftplus'), __('restoration', 'updraftplus')); + return false; + } + if (false === ($dbhandle = gzopen($file, 'r'))) return false; + + if (!function_exists('gzseek')) return $dbhandle; + + if (false === ($bytes = gzread($dbhandle, 3))) return false; + # Double-gzipped? + if ('H4sI' != base64_encode($bytes)) { + if (0 === gzseek($dbhandle, 0)) { + return $dbhandle; + } else { + @gzclose($dbhandle); + return gzopen($file, 'r'); + } + } + # Yes, it's double-gzipped + + $what_to_return = false; + $mess = __('The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver.', 'updraftplus'); + $messkey = 'doublecompress'; + $err_msg = ''; + + if (false === ($fnew = fopen($file.".tmp", 'w')) || !is_resource($fnew)) { + + @gzclose($dbhandle); + $err_msg = __('The attempt to undo the double-compression failed.', 'updraftplus'); + + } else { + + @fwrite($fnew, $bytes); + $emptimes = 0; + while (!gzeof($dbhandle)) { + $bytes = @gzread($dbhandle, 262144); + if (empty($bytes)) { + $emptimes++; + $this->log("Got empty gzread ($emptimes times)"); + if ($emptimes>2) break; + } else { + @fwrite($fnew, $bytes); + } + } + + gzclose($dbhandle); + fclose($fnew); + # On some systems (all Windows?) you can't rename a gz file whilst it's gzopened + if (!rename($file.".tmp", $file)) { + $err_msg = __('The attempt to undo the double-compression failed.', 'updraftplus'); + } else { + $mess .= ' '.__('The attempt to undo the double-compression succeeded.', 'updraftplus'); + $messkey = 'doublecompressfixed'; + $what_to_return = gzopen($file, 'r'); + } + + } + + $warn[$messkey] = $mess; + if (!empty($err_msg)) $err[] = $err_msg; + return $what_to_return; + } + + # TODO: Remove legacy storage setting keys from here + // These are used in 4 places (Feb 2016 - of course, you should re-scan the code to check if relying on this): showing current settings on the debug modal, wiping all current settings, getting a settings bundle to restore when migrating, and for relevant keys in POST-ed data when saving settings over AJAX + public function get_settings_keys() { + // N.B. updraft_backup_history is not included here, as we don't want that wiped + return array('updraft_autobackup_default', 'updraft_dropbox', 'updraft_googledrive', 'updraftplus_tmp_googledrive_access_token', 'updraftplus_dismissedautobackup', 'dismissed_general_notices_until', 'dismissed_season_notices_until', 'updraftplus_dismissedexpiry', 'updraftplus_dismisseddashnotice', 'updraft_interval', 'updraft_interval_increments', 'updraft_interval_database', 'updraft_retain', 'updraft_retain_db', 'updraft_encryptionphrase', 'updraft_service', 'updraft_dropbox_appkey', 'updraft_dropbox_secret', 'updraft_googledrive_clientid', 'updraft_googledrive_secret', 'updraft_googledrive_remotepath', 'updraft_ftp', 'updraft_ftp_login', 'updraft_ftp_pass', 'updraft_ftp_remote_path', 'updraft_server_address', 'updraft_dir', 'updraft_email', 'updraft_delete_local', 'updraft_debug_mode', 'updraft_include_plugins', 'updraft_include_themes', 'updraft_include_uploads', 'updraft_include_others', 'updraft_include_wpcore', 'updraft_include_wpcore_exclude', 'updraft_include_more', 'updraft_include_blogs', 'updraft_include_mu-plugins', + 'updraft_include_others_exclude', 'updraft_include_uploads_exclude', 'updraft_lastmessage', 'updraft_googledrive_token', 'updraft_dropboxtk_request_token', 'updraft_dropboxtk_access_token', 'updraft_dropbox_folder', 'updraft_adminlocking', 'updraft_updraftvault', 'updraft_remotesites', 'updraft_migrator_localkeys', 'updraft_central_localkeys', 'updraft_retain_extrarules', 'updraft_googlecloud', 'updraft_include_more_path', 'updraft_split_every', 'updraft_ssl_nossl', 'updraft_backupdb_nonwp', 'updraft_extradbs', 'updraft_combine_jobs_around', + 'updraft_last_backup', 'updraft_starttime_files', 'updraft_starttime_db', 'updraft_startday_db', 'updraft_startday_files', 'updraft_sftp_settings', 'updraft_s3', 'updraft_s3generic', 'updraft_dreamhost', 'updraft_s3generic_login', 'updraft_s3generic_pass', 'updraft_s3generic_remote_path', 'updraft_s3generic_endpoint', 'updraft_webdav_settings', 'updraft_openstack', 'updraft_bitcasa', 'updraft_copycom', 'updraft_onedrive', 'updraft_azure', 'updraft_cloudfiles', 'updraft_cloudfiles_user', 'updraft_cloudfiles_apikey', 'updraft_cloudfiles_path', 'updraft_cloudfiles_authurl', 'updraft_ssl_useservercerts', 'updraft_ssl_disableverify', 'updraft_s3_login', 'updraft_s3_pass', 'updraft_s3_remote_path', 'updraft_dreamobjects_login', 'updraft_dreamobjects_pass', 'updraft_dreamobjects_remote_path', 'updraft_dreamobjects', 'updraft_report_warningsonly', 'updraft_report_wholebackup', 'updraft_log_syslog', 'updraft_extradatabases'); + } + +} diff --git a/plugins/updraftplus/class-zip.php b/plugins/updraftplus/class-zip.php new file mode 100644 index 0000000..d55a226 --- /dev/null +++ b/plugins/updraftplus/class-zip.php @@ -0,0 +1,325 @@ +addfiles = array(); + $this->adddirs = array(); + // Put this in a non-backed-up, writeable location, to make sure that huge temporary files aren't created and then added to the backup - and that we have somewhere writable + global $updraftplus; + if (!defined('PCLZIP_TEMPORARY_DIR')) define('PCLZIP_TEMPORARY_DIR', trailingslashit($updraftplus->backups_dir_location())); + } + + # Used to include mtime in statindex (by default, not done - to save memory; probably a bit paranoid) + public function ud_include_mtime() { + $this->include_mtime = true; + } + + public function __get($name) { + if ($name != 'numFiles') return null; + + if (empty($this->pclzip)) return false; + + $statindex = $this->pclzip->listContent(); + + if (empty($statindex)) { + $this->statindex=array(); + return 0; + } + + $result = array(); + foreach ($statindex as $i => $file) { + if (!isset($statindex[$i]['folder']) || 0 == $statindex[$i]['folder']) { + $result[] = $file; + } + unset($statindex[$i]); + } + + $this->statindex=$result; + + return count($this->statindex); + + } + + public function statIndex($i) { + if (empty($this->statindex[$i])) return array('name' => null, 'size' => 0); + $v = array('name' => $this->statindex[$i]['filename'], 'size' => $this->statindex[$i]['size']); + if ($this->include_mtime) $v['mtime'] = $this->statindex[$i]['mtime']; + return $v; + } + + public function open($path, $flags = 0) { + if(!class_exists('PclZip')) include_once(ABSPATH.'/wp-admin/includes/class-pclzip.php'); + if(!class_exists('PclZip')) { + $this->last_error = "No PclZip class was found"; + return false; + } + + # Route around PHP bug (exact version with the problem not known) + $ziparchive_create_match = (version_compare(PHP_VERSION, '5.2.12', '>') && defined('ZIPARCHIVE::CREATE')) ? ZIPARCHIVE::CREATE : 1; + + if ($flags == $ziparchive_create_match && file_exists($path)) @unlink($path); + + $this->pclzip = new PclZip($path); + if (empty($this->pclzip)) { + $this->last_error = 'Could not get a PclZip object'; + return false; + } + + # Make the empty directory we need to implement addEmptyDir() + global $updraftplus; + $updraft_dir = $updraftplus->backups_dir_location(); + if (!is_dir($updraft_dir.'/emptydir') && !mkdir($updraft_dir.'/emptydir')) { + $this->last_error = "Could not create empty directory ($updraft_dir/emptydir)"; + return false; + } + + $this->path = $path; + + return true; + + } + + # Do the actual write-out - it is assumed that close() is where this is done. Needs to return true/false + public function close() { + if (empty($this->pclzip)) { + $this->last_error = 'Zip file was not opened'; + return false; + } + + global $updraftplus; + $updraft_dir = $updraftplus->backups_dir_location(); + + $activity = false; + + # Add the empty directories + foreach ($this->adddirs as $dir) { + if (false == $this->pclzip->add($updraft_dir.'/emptydir', PCLZIP_OPT_REMOVE_PATH, $updraft_dir.'/emptydir', PCLZIP_OPT_ADD_PATH, $dir)) { + $this->last_error = $this->pclzip->errorInfo(true); + return false; + } + $activity = true; + } + + foreach ($this->addfiles as $rdirname => $adirnames) { + foreach ($adirnames as $adirname => $files) { + if (false == $this->pclzip->add($files, PCLZIP_OPT_REMOVE_PATH, $rdirname, PCLZIP_OPT_ADD_PATH, $adirname)) { + $this->last_error = $this->pclzip->errorInfo(true); + return false; + } + $activity = true; + } + unset($this->addfiles[$rdirname]); + } + + $this->pclzip = false; + $this->addfiles = array(); + $this->adddirs = array(); + + clearstatcache(); + if ($activity && filesize($this->path) < 50) { + $this->last_error = "Write failed - unknown cause (check your file permissions)"; + return false; + } + + return true; + } + + # Note: basename($add_as) is irrelevant; that is, it is actually basename($file) that will be used. But these are always identical in our usage. + public function addFile($file, $add_as) { + # Add the files. PclZip appears to do the whole (copy zip to temporary file, add file, move file) cycle for each file - so batch them as much as possible. We have to batch by dirname(). On a test with 1000 files of 25KB each in the same directory, this reduced the time needed on that directory from 120s to 15s (or 5s with primed caches). + $rdirname = dirname($file); + $adirname = dirname($add_as); + $this->addfiles[$rdirname][$adirname][] = $file; + } + + # PclZip doesn't have a direct way to do this + public function addEmptyDir($dir) { + $this->adddirs[] = $dir; + } + +} + +class UpdraftPlus_BinZip extends UpdraftPlus_PclZip { + + private $binzip; + + public function __construct() { + global $updraftplus_backup; + $this->binzip = $updraftplus_backup->binzip; + if (!is_string($this->binzip)) { + $this->last_error = "No binary zip was found"; + return false; + } + return parent::__construct(); + } + + public function addFile($file, $add_as) { + + global $updraftplus; + # Get the directory that $add_as is relative to + $base = $updraftplus->str_lreplace($add_as, '', $file); + + if ($file == $base) { + // Shouldn't happen; but see: https://bugs.php.net/bug.php?id=62119 + $updraftplus->log("File skipped due to unexpected name mismatch (locale: ".setlocale(LC_CTYPE, "0")."): file=$file add_as=$add_as", 'notice', false, true); + } else { + $rdirname = untrailingslashit($base); + # Note: $file equals $rdirname/$add_as + $this->addfiles[$rdirname][] = $add_as; + } + + } + + # The standard zip binary cannot list; so we use PclZip for that + # Do the actual write-out - it is assumed that close() is where this is done. Needs to return true/false + public function close() { + + if (empty($this->pclzip)) { + $this->last_error = 'Zip file was not opened'; + return false; + } + + global $updraftplus, $updraftplus_backup; + $updraft_dir = $updraftplus->backups_dir_location(); + + $activity = false; + + # BinZip does not like zero-sized zip files + if (file_exists($this->path) && 0 == filesize($this->path)) @unlink($this->path); + + $descriptorspec = array( + 0 => array('pipe', 'r'), + 1 => array('pipe', 'w'), + 2 => array('pipe', 'w') + ); + $exec = $this->binzip; + if (defined('UPDRAFTPLUS_BINZIP_OPTS') && UPDRAFTPLUS_BINZIP_OPTS) $exec .= ' '.UPDRAFTPLUS_BINZIP_OPTS; + $exec .= " -v -@ ".escapeshellarg($this->path); + + $last_recorded_alive = time(); + $something_useful_happened = $updraftplus->something_useful_happened; + $orig_size = file_exists($this->path) ? filesize($this->path) : 0; + $last_size = $orig_size; + clearstatcache(); + + $added_dirs_yet = false; + + # If there are no files to add, but there are empty directories, then we need to make sure the directories actually get added + if (0 == count($this->addfiles) && 0 < count($this->adddirs)) { + $dir = realpath($updraftplus_backup->make_zipfile_source); + $this->addfiles[$dir] = '././.'; + } + // Loop over each destination directory name + foreach ($this->addfiles as $rdirname => $files) { + + $process = proc_open($exec, $descriptorspec, $pipes, $rdirname); + + if (!is_resource($process)) { + $updraftplus->log('BinZip error: proc_open failed'); + $this->last_error = 'BinZip error: proc_open failed'; + return false; + } + + if (!$added_dirs_yet) { + # Add the directories - (in fact, with binzip, non-empty directories automatically have their entries added; but it doesn't hurt to add them explicitly) + foreach ($this->adddirs as $dir) { + fwrite($pipes[0], $dir."/\n"); + } + $added_dirs_yet=true; + } + + $read = array($pipes[1], $pipes[2]); + $except = null; + + if (!is_array($files) || 0 == count($files)) { + fclose($pipes[0]); + $write = array(); + } else { + $write = array($pipes[0]); + } + + while ((!feof($pipes[1]) || !feof($pipes[2]) || (is_array($files) && count($files)>0)) && false !== ($changes = @stream_select($read, $write, $except, 0, 200000))) { + + if (is_array($write) && in_array($pipes[0], $write) && is_array($files) && count($files)>0) { + $file = array_pop($files); + // Send the list of files on stdin + fwrite($pipes[0], $file."\n"); + if (0 == count($files)) fclose($pipes[0]); + } + + if (is_array($read) && in_array($pipes[1], $read)) { + $w = fgets($pipes[1]); + // Logging all this really slows things down; use debug to mitigate + if ($w && $updraftplus_backup->debug) $updraftplus->log("Output from zip: ".trim($w), 'debug'); + if (time() > $last_recorded_alive + 5) { + $updraftplus->record_still_alive(); + $last_recorded_alive = time(); + } + if (file_exists($this->path)) { + $new_size = @filesize($this->path); + if (!$something_useful_happened && $new_size > $orig_size + 20) { + $updraftplus->something_useful_happened(); + $something_useful_happened = true; + } + clearstatcache(); + # Log when 20% bigger or at least every 50MB + if ($new_size > $last_size*1.2 || $new_size > $last_size + 52428800) { + $updraftplus->log(basename($this->path).sprintf(": size is now: %.2f MB", round($new_size/1048576,1))); + $last_size = $new_size; + } + } + } + + if (is_array($read) && in_array($pipes[2], $read)) { + $last_error = fgets($pipes[2]); + if (!empty($last_error)) $this->last_error = rtrim($last_error); + } + + // Re-set + $read = array($pipes[1], $pipes[2]); + $write = (is_array($files) && count($files) >0) ? array($pipes[0]) : array(); + $except = null; + + } + + fclose($pipes[1]); + fclose($pipes[2]); + + $ret = proc_close($process); + + if ($ret != 0 && $ret != 12) { + if ($ret < 128) { + $updraftplus->log("Binary zip: error (code: $ret - look it up in the Diagnostics section of the zip manual at http://www.info-zip.org/mans/zip.html for interpretation... and also check that your hosting account quota is not full)"); + } else { + $updraftplus->log("Binary zip: error (code: $ret - a code above 127 normally means that the zip process was deliberately killed ... and also check that your hosting account quota is not full)"); + } + if (!empty($w) && !$updraftplus_backup->debug) $updraftplus->log("Last output from zip: ".trim($w), 'debug'); + return false; + } + + unset($this->addfiles[$rdirname]); + } + + return true; + } + +} diff --git a/plugins/updraftplus/clean-composer.sh b/plugins/updraftplus/clean-composer.sh new file mode 100644 index 0000000..7c11c33 --- /dev/null +++ b/plugins/updraftplus/clean-composer.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +# This script is for removing unwanted stuff that Composer pulls in upon an update (documentation, tests, etc.) - stuff that's just bloat as far as the plugin packaging is concerned. + +# Abort if not running in shell environment +[[ -z $SHELL ]] && exit + +rm -rf vendor/eher/oauth/test + +# Un-needed Rackspace/PHP-Opencloud components +for i in doc tests samples; do + rm -rf vendor/rackspace/php-opencloud/$i +done +# Referenced in the auto-loader +mkdir vendor/rackspace/php-opencloud/tests + +for i in Autoscale CloudMonitoring Compute Database DNS Image LoadBalancer Networking Orchestration Queues Volume; do + rm -rf vendor/rackspace/php-opencloud/lib/OpenCloud/$i +done + +for i in docs phing tests; do + rm -rf vendor/guzzle/guzzle/$i +done +# Referenced in the auto-loader +mkdir vendor/guzzle/guzzle/tests + +# Un-wanted AWS stuff +for i in AutoScaling CloudSearchDomain CognitoIdentity DirectConnect ElasticBeanstalk OpsWorks StorageGateway CloudFormation CloudTrail CognitoSync DynamoDb ElasticLoadBalancing ImportExport Rds Ses Sts CloudFront CloudWatch Ec2 ElasticTranscoder Kinesis Redshift SimpleDb Support CloudHsm CloudWatchLogs ConfigService Ecs Emr Kms Route53 Sns Swf CloudSearch CodeDeploy DataPipeline ElastiCache Glacier Lambda Route53Domains Sqs; do + rm -rf vendor/aws/aws-sdk-php/src/Aws/$i +done + +echo "Important: remember to disable the PSR-4 autoloading, to prevent fatals caused by plugins with older versions of Composer" \ No newline at end of file diff --git a/plugins/updraftplus/composer.json b/plugins/updraftplus/composer.json new file mode 100644 index 0000000..f9ccc34 --- /dev/null +++ b/plugins/updraftplus/composer.json @@ -0,0 +1,10 @@ +{ + "autoload": { + "classmap": [ "vendor/symfony/event-dispatcher/" ] + }, + "require": { + "eher/oauth": "^1.0", + "rackspace/php-opencloud": "1.12.2", + "aws/aws-sdk-php": "2.8.*" + } +} diff --git a/plugins/updraftplus/composer.lock b/plugins/updraftplus/composer.lock new file mode 100644 index 0000000..a2afef0 --- /dev/null +++ b/plugins/updraftplus/composer.lock @@ -0,0 +1,373 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "hash": "02bee7ad83137f80e5b61b7963d82d17", + "content-hash": "4737de1914ed64f5d71431d94c2f91cf", + "packages": [ + { + "name": "aws/aws-sdk-php", + "version": "2.8.30", + "source": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-php.git", + "reference": "2d7183cd22381237bce25f11d741a77bdeb2d0b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/2d7183cd22381237bce25f11d741a77bdeb2d0b8", + "reference": "2d7183cd22381237bce25f11d741a77bdeb2d0b8", + "shasum": "" + }, + "require": { + "guzzle/guzzle": "~3.7", + "php": ">=5.3.3" + }, + "require-dev": { + "doctrine/cache": "~1.0", + "ext-openssl": "*", + "monolog/monolog": "~1.4", + "phpunit/phpunit": "~4.0", + "phpunit/phpunit-mock-objects": "2.3.1", + "symfony/yaml": "~2.1" + }, + "suggest": { + "doctrine/cache": "Adds support for caching of credentials and responses", + "ext-apc": "Allows service description opcode caching, request and response caching, and credentials caching", + "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages", + "monolog/monolog": "Adds support for logging HTTP requests and responses", + "symfony/yaml": "Eases the ability to write manifests for creating jobs in AWS Import/Export" + }, + "type": "library", + "autoload": { + "psr-0": { + "Aws": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Amazon Web Services", + "homepage": "http://aws.amazon.com" + } + ], + "description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project", + "homepage": "http://aws.amazon.com/sdkforphp", + "keywords": [ + "amazon", + "aws", + "cloud", + "dynamodb", + "ec2", + "glacier", + "s3", + "sdk" + ], + "time": "2016-05-03 17:42:24" + }, + { + "name": "eher/oauth", + "version": "1.0.7", + "source": { + "type": "git", + "url": "https://github.com/EHER/OAuth.git", + "reference": "935c1f7709d1c1457de9e250d0e5f29cac06e507" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/EHER/OAuth/zipball/935c1f7709d1c1457de9e250d0e5f29cac06e507", + "reference": "935c1f7709d1c1457de9e250d0e5f29cac06e507", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "eher/phpunit": "1.6" + }, + "type": "library", + "autoload": { + "psr-0": { + "Eher\\OAuth": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "OAuth 1 PHP Library", + "time": "2012-12-13 23:48:10" + }, + { + "name": "guzzle/guzzle", + "version": "v3.9.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle3.git", + "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle3/zipball/0645b70d953bc1c067bbc8d5bc53194706b628d9", + "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "php": ">=5.3.3", + "symfony/event-dispatcher": "~2.1" + }, + "replace": { + "guzzle/batch": "self.version", + "guzzle/cache": "self.version", + "guzzle/common": "self.version", + "guzzle/http": "self.version", + "guzzle/inflection": "self.version", + "guzzle/iterator": "self.version", + "guzzle/log": "self.version", + "guzzle/parser": "self.version", + "guzzle/plugin": "self.version", + "guzzle/plugin-async": "self.version", + "guzzle/plugin-backoff": "self.version", + "guzzle/plugin-cache": "self.version", + "guzzle/plugin-cookie": "self.version", + "guzzle/plugin-curlauth": "self.version", + "guzzle/plugin-error-response": "self.version", + "guzzle/plugin-history": "self.version", + "guzzle/plugin-log": "self.version", + "guzzle/plugin-md5": "self.version", + "guzzle/plugin-mock": "self.version", + "guzzle/plugin-oauth": "self.version", + "guzzle/service": "self.version", + "guzzle/stream": "self.version" + }, + "require-dev": { + "doctrine/cache": "~1.3", + "monolog/monolog": "~1.0", + "phpunit/phpunit": "3.7.*", + "psr/log": "~1.0", + "symfony/class-loader": "~2.1", + "zendframework/zend-cache": "2.*,<2.3", + "zendframework/zend-log": "2.*,<2.3" + }, + "suggest": { + "guzzlehttp/guzzle": "Guzzle 5 has moved to a new package name. The package you have installed, Guzzle 3, is deprecated." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.9-dev" + } + }, + "autoload": { + "psr-0": { + "Guzzle": "src/", + "Guzzle\\Tests": "tests/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Guzzle Community", + "homepage": "https://github.com/guzzle/guzzle/contributors" + } + ], + "description": "PHP HTTP client. This library is deprecated in favor of https://packagist.org/packages/guzzlehttp/guzzle", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "time": "2015-03-18 18:23:50" + }, + { + "name": "psr/log", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b", + "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b", + "shasum": "" + }, + "type": "library", + "autoload": { + "psr-0": { + "Psr\\Log\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2012-12-21 11:40:51" + }, + { + "name": "rackspace/php-opencloud", + "version": "v1.12.2", + "source": { + "type": "git", + "url": "https://github.com/rackspace/php-opencloud.git", + "reference": "9c0ade232ddd1ae23994349406171ffea1127b5d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rackspace/php-opencloud/zipball/9c0ade232ddd1ae23994349406171ffea1127b5d", + "reference": "9c0ade232ddd1ae23994349406171ffea1127b5d", + "shasum": "" + }, + "require": { + "guzzle/guzzle": "~3.8", + "php": ">=5.3.3", + "psr/log": "~1.0" + }, + "require-dev": { + "apigen/apigen": "~2.8", + "fabpot/php-cs-fixer": "1.0.*@dev", + "jakub-onderka/php-parallel-lint": "0.*", + "phpunit/phpunit": "4.3.*", + "satooshi/php-coveralls": "0.6.*@dev" + }, + "type": "library", + "autoload": { + "psr-0": { + "OpenCloud": [ + "lib/", + "tests/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Glen Campbell", + "email": "glen.campbell@rackspace.com" + }, + { + "name": "Jamie Hannaford", + "email": "jamie.hannaford@rackspace.com", + "homepage": "https://github.com/jamiehannaford" + }, + { + "name": "Shaunak Kashyap", + "email": "shaunak.kashyap@rackspace.com", + "homepage": "https://github.com/ycombinator" + } + ], + "description": "PHP SDK for Rackspace/OpenStack APIs", + "keywords": [ + "Openstack", + "nova", + "opencloud", + "rackspace", + "swift" + ], + "time": "2015-03-16 23:57:58" + }, + { + "name": "symfony/event-dispatcher", + "version": "v2.8.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "81c4c51f7fd6d0d40961bd53dd60cade32db6ed6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/81c4c51f7fd6d0d40961bd53dd60cade32db6ed6", + "reference": "81c4c51f7fd6d0d40961bd53dd60cade32db6ed6", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.0,>=2.0.5|~3.0.0", + "symfony/dependency-injection": "~2.6|~3.0.0", + "symfony/expression-language": "~2.6|~3.0.0", + "symfony/stopwatch": "~2.3|~3.0.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony EventDispatcher Component", + "homepage": "https://symfony.com", + "time": "2016-04-05 16:36:54" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [] +} diff --git a/plugins/updraftplus/css/admin.css b/plugins/updraftplus/css/admin.css new file mode 100644 index 0000000..c3821f3 --- /dev/null +++ b/plugins/updraftplus/css/admin.css @@ -0,0 +1,1527 @@ +/* General things used by many things */ + + /* Widths and sizing */ + .max-width-600 { + max-width: 600px; + } + + .width-900 { + width: 900px; + } + + .width-80 { + width: 80%; + } + + /* End widths and sizing */ + + /* Font styling */ + .no-decoration { + text-decoration: none; + } + + .bold { + font-weight: bold; + } + /* End font styling */ + + /* Alignment */ + .center-align-td { + text-align: center; + } + /* End of Alignment */ + + /* Padding */ + .remove-padding { + padding: 0 !important; + } + /* End of padding */ + + .updraft-text-center { + text-align: center; + } + + .autobackup { + padding: 6px; + margin: 8px 0px; + } + + ul .disc { + list-style: disc inside; + } + + .dashicons-log-fix { + display: inherit; + } + + /* Input boxes */ + + input { + border-radius: 4px; + line-height: 1.42; + border: 1px solid #ccc; + height: 27px; + padding: 2px 6px; + color: #555; + } + + input[type="text"] { + font-size: 14px; + } + + input[type="number"] { + height: 31px; + } + + select { + border-radius: 4px; + } + + /* End input boxes */ + + +/* Main Buttons */ + .main-dashboard-buttons { + border-width: 4px; + border-radius: 12px; + letter-spacing: 0px; + font-size: 17px; + font-weight: bold; + padding-left: 0.7em; + padding-right: 2em; + padding: 0.3em 1em; + line-height: 1.7em; + background: transparent; + position: relative; + border: 2px solid; + transition: all 0.2s; + vertical-align: baseline; + box-sizing: border-box; + text-align: center; + line-height: 1.3em; + margin-left: .3em; + text-transform: none; + line-height: 1; + text-decoration: none; + } + + .button-restore { + border-color: RGB(98, 158, 192); + color: RGB(98, 158, 192); + } + + .dashboard-main-sizing { + border-width: 4px; + width: 190px; + line-height: 1.7em; + } + + .button-restore:hover, .button-migrate:hover, .button-backup:hover, + .button-view-log:hover, .button-mass-selectors:hover, + .button-delete:hover, .button-entity-backup:hover, .udp-button-primary:hover { + border-color: #df6926; + color: #df6926; + } + + .button-migrate { + color: rgb(238, 169, 32); + border-color: rgb(238, 169, 32); + } + + .button-backup { + border-color: #84CA1B; + color: #84CA1B; + } + + .existing-backups-buttons { + font-size: 11px; + line-height: 1.4em; + border-width: 3px; + } + + .existing-backups-restore-buttons { + font-size: 11px; + line-height: 1.4em; + border-width: 3px; + } + + .button-delete { + color: #E23900; + border-color: #E23900; + font-size: 14px; + line-height: 1.4em; + border-width: 2px; + margin-right: 10px; + } + + .button-view-log, .button-mass-selectors { + color: darkgrey; + border-color: darkgrey; + font-size: 14px; + line-height: 1.4em; + border-width: 2px; + margin-top: -1px; + } + + .button-view-log { + width: 120px; + } + + .button-existing-restore { + font-size: 14px; + line-height: 1.4em; + border-width: 2px; + width: 110px; + } + + .main-restore { + margin-right: 3%; + margin-left: 3%; + } + + .button-entity-backup { + color: #555555; + border-color: #555555; + font-size: 11px; + line-height: 1.4em; + border-width: 2px; + margin-right: 5px; + } + + .button-select-all { + width: 122px; + } + + .button-deselect { + width: 92px; + } + + #ud_massactions > .display-flex > .mass-selectors-margins { + margin-right: -4px; + } + + .udp-button-primary { + border-width: 4px; + color: #0073AA; + border-color: #0073AA; + font-size: 14px; + height: 40px; + } + + #ud_massactions .button-delete { + margin-right: 0px; + } + + /* End Main Buttons */ + +/* End of common elements */ + +.udp-logo-70 { + width: 70px; + height: 70px; + float: left; + padding-right: 25px; +} + +h3 .thank-you { + margin-top: 0px; +} + +.ws_advert { + max-width: 800px; + font-size:140%; + line-height: 140%; + padding:14px; + clear:left; +} + +.dismiss-dash-notice { + float: right; + position: relative; + top: -20px; +} + +#updraft_report_cell .updraft_reportbox { + padding:8px; + margin: 8px 0; + border: 1px dotted; + clear:left; + float:left; +} + +#updraft_report_cell button.updraft_reportbox_delete { + font-size: 50%; + float:right; + padding:0 3px; + position: relative; + top: -4px; + left: 4px; +} + +#updraft-navtab-settings-content .updraft-test-button { + font-size:18px !important; +} + +#updraft_report_cell .updraft_report_checkbox { + margin-top: 4px; +} + +#updraft_report_cell .updraft_report_email { + width: 300px; +} + +#updraft_report_cell .updraft_report_another_p { + clear:left; +} + +/* Taken straight from admin.php */ + + #updraft-navtab-settings-content table.form-table p { + max-width: 700px; + } + + #updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected { + background-color: #ccc; + } + + .updraft_settings_sectionheading { + display: none; + } + + .updraft-backupentitybutton-disabled { + background-color: transparent; + border: none; + color: #0074a2; + text-decoration: underline; + cursor: pointer; + clear: none; + float: left; + } + .updraft-backupentitybutton { + margin-left: 8px; + } + .updraft-bigbutton { + padding: 2px 0px !important; + margin-right: 14px !important; + font-size:22px !important; + min-height: 32px; + min-width: 180px; + } + + .updraft_debugrow th { + float: right; + text-align: right; + font-weight: bold; + padding-right: 8px; + min-width: 140px; + } + + .updraft_debugrow td { + min-width: 300px; + vertical-align: bottom; + } + + #updraft_webdav_host_error { + color: red; + } + + .updraftplus-morefiles-row-delete { + cursor: pointer; + color: red; + font-size: 100%; + font-weight: bold; + border: 0px; + border-radius: 3px; + padding: 2px; + margin: 0 6px; + } + .updraftplus-morefiles-row-delete:hover { + cursor: pointer; + color: white; + background: red; + } + + #updraft-wrap .form-table th { + width: 230px; + } + .updraftplus-remove { + background-color: #c00000; + border: 1px solid #c00000; + height: 22px; + padding: 4px 3px 0; + margin-right: 6px; + } + .updraft-viewlogdiv form { + margin: 0; + padding: 0; + } + .updraft-viewlogdiv { + background-color: #ffffff; + color: #000000; + border: 1px solid #000000; + height: 26px; + padding: 0px; + margin: 0 4px 0 0; + border-radius: 3px; + float: left; + } + .updraft-viewlogdiv input, .updraft-viewlogdiv a { + border: none; + background-color: transparent; + color: #000; + margin:0px; + padding: 3px 4px; + font-size: 16px; + line-height: 26px; + } + .updraft-viewlogdiv:hover { + background-color: #000000; + color: #ffffff; + border: 1px solid #ffffff; + cursor: pointer; + } + .updraft-viewlogdiv input:hover, .updraft-viewlogdiv a:hover { + color: #ffffff; + cursor: pointer; + } + .updraftplus-remove a { + color: white; + padding: 4px 4px 0px; + } + .updraftplus-remove:hover { + background-color: white; + border: 1px solid #c00000; + } + .updraftplus-remove a:hover { + color: #c00000; + } + .drag-drop #drag-drop-area2 { + border: 4px dashed #ddd; + height: 200px; + } + #drag-drop-area2 .drag-drop-inside { + margin: 36px auto 0; + width: 350px; + } + #filelist, #filelist2 { + width: 100%; + } + #filelist .file, #filelist2 .file, .ud_downloadstatus .file, #ud_downloadstatus2 .file { + padding: 5px; + background: #ececec; + border: solid 1px #ccc; + margin: 4px 0; + } + + ul.updraft_premium_description_list { + list-style: disc inside; + } + ul.updraft_premium_description_list li { + display: inline; + } + ul.updraft_premium_description_list li::after { + content: " | "; + } + ul.updraft_premium_description_list li.last::after { + content: ""; + } + .updraft_feature_cell{ + background-color: #F7D9C9 !important; + padding: 5px 10px 5px 10px; + } + .updraft_feat_table, .updraft_feat_th, .updraft_feat_table td{ + border: 1px solid black; + border-collapse: collapse; + font-size: 120%; + background-color: white; + } + .updraft_tick_cell{ + text-align: center; + } + .updraft_tick_cell img{ + margin: 4px 0; + height: 24px; + } + + #filelist .fileprogress, #filelist2 .fileprogress, .ud_downloadstatus .dlfileprogress, #ud_downloadstatus2 .dlfileprogress { + width: 0%; + background: #f6a828; + height: 5px; + } + .ud_downloadstatus .raw, #ud_downloadstatus2 .raw { + margin-top: 8px; + clear:left; + } + .ud_downloadstatus .file, #ud_downloadstatus2 .file { + margin-top: 8px; + } + tr.updraftplusmethod h3 { + margin: 0px; + } + #updraft_retain_db_rules .updraft_retain_rules_delete, #updraft_retain_files_rules .updraft_retain_rules_delete { + cursor: pointer; + color: red; + font-size: 120%; + font-weight: bold; + border: 0px; + border-radius: 3px; + padding: 2px; + margin: 0 6px; + } + #updraft_retain_db_rules .updraft_retain_rules_delete:hover, #updraft_retain_files_rules .updraft_retain_rules_delete:hover { + cursor: pointer; + color: white; + background: red; + } + + #updraft_backup_started { + max-width: 800px; + font-size: 140%; + line-height: 140%; + padding: 14px; + clear:left; + } + +/* End stuff already in admin.php */ + +#plupload-upload-ui2 { + width: 80%; +} + +.backup-restored { + padding: 8px; +} + +.backup-restored span { + font-size: 120% +} + +.memory-limit { + padding:8px; +} + +.updraft_list_errors { + padding: 8px; +} + +/*.nav-tab { + border-radius: 20px 20px 0 0; + border-color: grey; + border-width: 2px; + margin-top: 34px; +} + +.nav-tab:hover { + border-bottom: 0; +} + +.nav-tab-active, .nav-tab-active:active { + color: #df6926; + border-color: #D3D3D3; + border-width: 1px; + border-bottom: 0; +} + +.nav-tab-active:focus { + color: #df6926; +}*/ + +.nav-tab-wrapper { + margin: 14px 0px; +} + +#updraft-poplog-content { + white-space: pre-wrap; +} + +.next-backup { + border: 0px; + padding: 0px; + margin: 0 10px 0 0; +} + +.not-scheduled { + vertical-align: top !important; + margin: 0px !important; + padding: 0px !important; +} + +.next-backup .updraft_scheduled { + /* width: 124px;*/ + margin: 0px; + padding: 2px 4px 2px 0px; +} + +#next-backup-table-inner td { + vertical-align: top; +} + +.next-backup .updraft_all-files { + color: blue; + margin: 0px; + padding: 2px 0px 0px; +} + +.multisite-advert-width { + width: 800px; +} + +.updraft_settings_sectionheading { + margin-top: 6px; +} + +.premium-upgrade-prompt { + font-size: 115%; +} + +.updraft_feat_table { + margin-top: 30px; +} + +.show_admin_restore_in_progress_notice { + padding: 8px; +} + +.show_admin_restore_in_progress_notice .unfinished-restoration { + font-size: 120%; +} + +input #backupnow_includefiles_moreoptions { + margin: 4px 16px 6px; + border: 1px dotted; + padding: 6px 10px; +} + +.form-table #updraft_activejobsrow .minimum-height{ + min-height: 100px; +} + +#updraft_lastlogmessagerow .last-message { + padding-top: 20px; + display: block; +} + +.updraft_simplepie { + vertical-align: top; +} + +.download-backups { + margin-top: 8px; +} + +.download-backups .updraft_download_button { + margin-right: 6px; + margin-top: 4px; +} + +.download-backups .choose-components-button { + font-size: 16px; +} + +.download-backups .ud-whitespace-warning { + background-color: pink; + padding: 8px; + margin: 4px; + border: 1px dotted; +} + +.download-backups .ul { + list-style: none inside; + max-width: 800px; + margin-top: 6px; + margin-bottom: 12px; +} + +#updraft-plupload-modal { + width: 75%; + margin: 16px; + margin-left: 100px; +} + +.download-backups .upload { + max-width: 610px; +} + +.download-backups #plupload-upload-ui { + width: 70%; +} + +.ud_downloadstatus { + padding: 10px; + background: #f1f1f1; +} + +#ud_massactions { + padding: 14px; + position: fixed; + right: 25%; + top: 25%; + border: 2px solid; + border-radius: 4px; + background: rgb(241, 241, 241); + float: right; +} + +#ud_massactions .updraftplus-remove { + clear: left; + font-size: 16px; + text-align: center; + border-radius: 4px; + margin-top: 4px; +} + +#ud_massactions .updraftplus-remove a { + text-decoration: none; +} + +#ud_massactions .updraft-viewlogdiv { + font-size: 16px; + text-align:center; + border-radius: 4px; + margin-top: 4px; +} + +#ud_massactions .updraft-viewlogdiv a { + text-decoration: none; + position: relative; + top: 3px; +} + +#ud_massactions .updraft-viewlogdiv a { + text-decoration: none; + position: relative; + top: 3px; +} + +#updraft-navtab-backups-content .updraft_existing_backups { + margin-bottom: 12px; +} + +#updraft-message-modal-innards { + padding: 4px; +} + +#updraft-authenticate-modal { + text-align: center; + font-size: 16px !important; +} + +#updraft-authenticate-modal p { + font-size: 16px; +} + +#updraft_delete_form p { + margin-top: 3px; + padding-top: 0; +} + +#updraft_restore_form .cannot-restore { + margin: 8px 0; +} + +#updraft_restorer_dboptions { + padding: 12px; + margin: 8px 0 4px; + border: dashed 1px; +} + +#updraft_restorer_dboptions h4 { + margin: 0px 0px 6px; + padding:0px; +} + +.updraft_debugrow th { + vertical-align: top; + padding-top: 6px; +} + +.expertmode p { + font-size: 125%; +} + +.expertmode .call-wp-action { + width: 300px; + height: 22px; +} + +.updraftplus-lock-advert { + clear: left; + max-width: 600px; +} + +.uncompressed-data { + clear: left; + max-width: 600px; +} + +.delete-old-directories { + padding: 8px; + padding-bottom: 12px; +} + +.active-jobs { + min-width: 480px; + min-height: 48px; + text-align: center; + margin-top: 4px; + padding: 8px; + border: 1px solid; + float: left; + clear: left; +} + +.job-id { + min-width: 480px; + margin-top: 4px; + padding: 8px; + border: 1px solid; + clear: left; + float: left; +} + +.next-resumption { + font-weight: bold; +} + +.updraft_percentage { + z-index:-1; + position: absolute; + left: 0px; + top: 0px; + text-align: center; + background-color: #f6a828; +} + +.curstage { + border-radius: 4px; + margin-top: 8px; + padding-top: 4px; + border: 1px solid #aaa; + width: 100%; + height: 22px; + position: relative; + text-align: center; + font-style: italic; +} + +.retain-files { + width: 48px; +} + +.backup-interval-description tr td div { + max-width: 670px; +} + +#updraft-manualdecrypt-modal { + width: 85%; + margin: 6px; + margin-left: 100px; +} + +.directory-permissions { + font-size: 110%; + font-weight: bold; +} + +.double-warning { + border:1px solid; + padding: 6px; +} + +.raw-backup-info { + font-style: italic; + font-weight: bold; + font-size: 120%; +} + +.updraft_existingbackup_date { + width: 22%; + max-width: 140px; +} + +.existing-backups-table { + margin-top: 20px; + margin-left: 20px; + width: 80%; +} + +.tr-bottom-4 { + margin-bottom: 4px; +} + +.form-table .backup-date { + width: 172px; + padding: 0; + padding-left: 15px; +} + +.form-table .backup-data { + width: 426px; + padding: 0; + padding-left: 15px; +} + +.form-table .updraft_backup_actions { + width: 272px; + padding: 0 0 10px 15px; +} + +.existing-date { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + max-width: 140px; + width: 25%; +} + +.line-break-tr { + height: 2px; + padding: 1px; + margin: 0px; +} + +.line-break-td { + margin: 0; + padding: 0; +} + +.td-line-color { + height: 2px; + background-color: #888888; +} + +.raw-backup { + max-width: 140px; +} + +.existing-backups-actions { + padding: 1px; + margin:0px; +} + +.existing-backups-border { + height: 2px; + padding: 1px; + margin: 0px; +} + +.existing-backups-border > td { + margin: 0; + padding: 0; +} + +.existing-backups-border > div { + height: 2px; + background-color: #aaaaaa; +} + +.updraft_existing_backup_date { + max-width: 140px; +} + +.restore-button { + margin-right: 6px; + float: left; + clear: none; +} + +.updraftplus-remove { + font-size: 16px; + text-align: center; + border-radius: 4px; +} + +.before-restore-button { + padding: 1px; + margin: 0px; +} + +.table-separator-tr { + height: 2px; + padding: 1px; + margin: 0px; +} + +.table-separator-td { + margin: 0px; + padding: 0px; +} + +.end-of-table-div { + height: 2px; + background-color: #aaaaaa; +} + +.last-backup-job { + padding-top: 3% !important; +} + +.line-height-03 { + line-height: 0.3 !important; +} + +.line-height-13 { + line-height: 1.3 !important; +} + +.line-height-23 { + line-height: 2.3 !important; +} + +#updraft_diskspaceused { + color: #df6926; +} + +.updraft_premium_description_list { + text-align: left; +} + +#updraft_delete_old_dirs_pagediv { + padding-bottom: 10px; +} + +/*#updraft_lastlogmessagerow > td, #updraft_last_backup > td { + padding: 0; +}*/ + +.job-id { + margin: 0 auto; + width: 20%; +} + +.updraft_all-files { + color: #df6926; +} + +/* Time + scheduling add-on*/ +.fix-time { + width: 70px; +} + +.retain-files { + width: 70px; +} + +.number-input { + min-width: 50px; + max-width: 70px; +} + +.additional-rule-width { + min-width: 60px; + max-width: 70px; +} + +/* Add-ons */ +/* Want to fix the WordPress icons so that they fit inline with the text, and don't push everything out of place. */ + +.dashicons { + line-height: inherit; + font-size: inherit; +} + +.addon-logo-150 { + margin-left: 30px; + margin-top: 33px; + height: 125px; + width: 150px; +} + +.margin-bottom-50 { + margin-bottom: 50px; +} + +.premium-container { + width: 80%; +} + +/* Main Header */ + +.main-header { + background-color: #df6926; + height: 200px; + width: 100%; +} + +.button-add-to-cart { + color: white; + border-color: white; + float: none; + margin-right: 17px; +} + +.button-add-to-cart:hover, .button-add-to-cart:focus, .button-add-to-cart:active { + border-color: #A0A5AA; + color: #A0A5AA; +} + +.addon-title { + margin-top: 25px; +} + +.addon-text { + margin-top: 75px; +} + +.image-main-div { + width: 25%; + float: left; +} + +.text-main-div { + width: 60%; + float: left; + text-align: center; + color: white; + margin-top: 16px; +} + +.text-main-div-title { + font-weight: bold !important; + color: white; + text-align: center; +} + +.text-main-div-paragraph { + color: white; +} + +/* End main header */ + +/* Vault icons */ + +.updraftplus-vault-cta { + width: 100%; + text-align: center; + margin-bottom: 50px; +} + +.updraftplus-vault-cta h1 { + font-weight: bold; +} + +.updraftvault-buy { + width: 225px; + height: 225px; + border: 2px solid #777777; + display: inline-table; + margin: 0 auto; + margin-right: 50px; + position: relative; +} + +.updraftplus-vault-cta > .vault-options > .center-vault { + width: 275px; + height: 275px; +} + +.updraftplus-vault-cta > .vault-options > .center-vault > a { + right: 21%; + font-size: 16px; + border-width: 4px !important; +} + + +.updraftplus-vault-cta > .vault-options > .center-vault > p { + font-size: 16px; +} + +.updraftvault-buy .button-purchase { + right: 24%; + margin-left: 0; + line-height: 1.7em; +} + +.updraftvault-buy hr { + height: 2px; + background-color: #777777; + margin-top: 18px; +} + +.right { + margin-right: 0px; +} + +.updraftvault-buy .addon-logo-100 { + height: 100px; + width: 125px; + margin-top: 7px; +} + +.updraftvault-buy .addon-logo-large { + margin-top: 7px; +} + +.updraftvault-buy .button-buy-vault { + font-size: 12px; + color: #df6926; + border-color: #df6926; + border-width: 2px !important; + position: absolute; + right: 29%; + bottom: 2%; +} + +.premium-addon-div .button-purchase { + line-height: 1.7em; +} + +.updraftvault-buy .button-buy-vault:hover { + border-color: darkgrey; + color: darkgrey; +} + +/* End Vault icons */ + +/* Premium addons */ + +.premium-addons { + margin-top: 80px; + width: 100%; + margin: 0 auto; + display: table; +} + +.addon-list { + /* margin-left: 32px; */ + display: table; + text-align: center; +} + +.premium-addons h1 { + text-align: center; + font-weight: bold; +} + +.premium-addons p { + text-align: center; +} + +.premium-addons .premium-addon-div { + width: 200px; + height: 250px; + border: 2px solid #777777; + display: inline-table; + margin: 0 auto; + margin-right: 25px; + margin-top: 25px; + text-align: center; + position: relative; +} + +.premium-addons .premium-addon-div p { + margin-left: 2px; + margin-right: 2px; +} + +.premium-addons .premium-addon-div img { + width: auto; + height: 50px; + margin-top: 7px; +} + +.premium-addons .premium-addon-div .hr-alignment { + margin-top: 44px; +} + +.premium-addons .premium-addon-div .dropbox-logo { + height: 39px; + width: 150px; +} + +.premium-addons .premium-addon-div .azure-logo, .premium-addons .premium-addon-div .onedrive-logo { + width: 75%; + height: 24px; +} +.button-purchase { + font-size: 12px; + color: #df6926; + border-color: #df6926; + border-width: 2px !important; + position: absolute; + right: 25%; + bottom: 2%; +} + +.button-purchase:hover { + color: darkgrey; + border-color: darkgrey; +} + +.premium-addons .premium-addon-div hr { + height: 2px; + background-color: #777777; + margin-top: 18px; +} + +.premium-addon-div p { + font-style: italic; +} + +.addon-list > .premium-addon-div > .onedrive-fix, +.addon-list > .premium-addon-div > .azure-logo { + margin-top: 33px; +} + +.addon-list > .premium-addon-div > .dropbox-fix { + margin-top: 18px; +} + +/* End premium addons */ + + +/* Forgotton something (that is the name of the div rather than a mental note!) */ + +.premium-forgotton-something { + margin-top: 5%; +} + +.premium-forgotton-something h1 { + text-align: center; + font-weight: bold; +} + +.premium-forgotton-something p { + text-align: center; + font-weight: normal; +} + +.premium-forgotton-something .button-faq { + color: #df6926; + border-color: #df6926; + margin: 0 auto; + display: table; +} + +.premium-forgotton-something .button-faq:hover { + color: #777777; + border-color: #777777; +} + +/* End of forgotton something */ + +.updraftplusmethod.updraftvault #vaultlogo { padding-left: 40px; } + +.updraftplusmethod.updraftvault .vault_primary_option { + float: left; + width:50%; + text-align:center; + padding-bottom:20px; +} + +.updraftplusmethod.updraftvault .vault_primary_option div { + clear:right; + padding-top: 20px; +} + +.updraftplusmethod.updraftvault .clear-left { + clear: left; +} + +.updraftplusmethod.updraftvault .padding-top-20px { padding-top: 20px; } + +.updraftplusmethod.updraftvault .padding-top-14px { padding-top: 14px; } + +.updraftplusmethod.updraftvault #updraftvault_settings_default .button-primary, .updraftplusmethod.updraftvault #updraftvault_settings_showoptions .button-primary { + font-size: 18px !important; + padding-bottom: 20px; +} + +.updraftplusmethod.updraftvault #updraftvault_showoptions, .updraftplusmethod.updraftvault #updraftvault_connect { + margin-top:8px; +} + +.updraftplusmethod.updraftvault #updraftvault_settings_connect input { + margin-right:10px; +} + +.updraftplusmethod.updraftvault #updraftvault_email { width: 280px; } +.updraftplusmethod.updraftvault #updraftvault_pass { width: 200px; } + +.updraftplusmethod.updraftvault #vault-is-connected { margin: 0; padding: 0; } + +.updraftplusmethod.updraftvault #updraftvault_settings_default p { + clear:left; +} + +.updraftplusmethod.updraftvault .vault-purchase-option { + float: left; + width:33%; + text-align:center; + padding-top: 20px; +} + +.updraftplusmethod.updraftvault .vault-purchase-option-size { + font-size: 200%; + font-weight:bold; +} + +.updraftplusmethod.updraftvault .vault-purchase-option-link { + clear:both; + font-size: 150% +} + +.updraftplusmethod.updraftvault .vault-purchase-option-or { + clear: both; + font-size: 115%; + font-style: italic; +} + +/* Automation Backup Advert by B */ +.autobackup-image { +/* display: inline-block; */ +/* min-width: 10%; + max-width:25%;*/ +/* float: left;*/ + clear: left; + float: left; + width: 110px; + height: 110px; +} + +.autobackup-description { + width: 100%; +} + +.advert-description { + float: left; + clear: right; + padding: 4px 10px 8px; + width: 70%; + clear:right; + vertical-align: top; +} + +.advert-btn { + display: inline-block; + min-width:10%; + vertical-align: top; + margin-bottom: 8px; +} + +.advert-btn:first-of-type { + margin-top: 25px; +} + +.advert-btn a { + display: block; + cursor: pointer; +} + +a.btn-get-started { + background: #fff; + border: 2px solid #df6926; + border-radius: 4px; + color: #df6926; + display: inline-block; + margin-left: 10px !important; + margin-bottom: 7px !important; + font-size: 18px !important; + line-height: 20px; + min-height: 28px; + padding: 11px 10px 5px; + text-transform: uppercase; + text-decoration: none; +} + +.circle-dblarrow { + border: 1px solid #df6926; + border-radius: 100%; + display: inline-block; + font-size: 17px; + line-height: 17px; + margin-left: 5px; + width: 20px; + height: 20px; + text-align: center; +} + +@media screen and (max-width: 782px) { + +/* .advert-description { + min-width: 75%; + margin-bottom: 5px; + } + + .advert-btn { + margin-top: 15px; + margin-left:86px; + min-width: 100%; + }*/ +} +/* End Automation Backup Advert by B */ +/* New Responsive Pretty Advanced Settings */ +.expertmode .advanced_settings_container { + height: auto; + overflow: hidden; +} + +.expertmode .advanced_settings_container .advanced_settings_menu { + float: none; + border-bottom: 1px solid rgb(204, 204, 204); +} + +.expertmode .advanced_settings_container .advanced_settings_content { + padding-top: 5px; + float: none; + width:auto; + overflow: auto; +} + +.expertmode .advanced_settings_container .advanced_settings_content h3 { + margin-top: 5px !important; +} + +.expertmode .advanced_settings_container .advanced_settings_content .advanced_tools { + display: none; +} +.expertmode .advanced_settings_container .advanced_settings_content .site_info { + display: block; +} + +.expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_button { + display: inline-block; + cursor: pointer; + padding: 5px; + color: #000000; +} + +.expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_text { + font-size: 16px; +} + +.expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_button:hover { + background-color: #eaeaea; +} + +.expertmode .advanced_settings_container .advanced_settings_menu .active { + background-color: #3498db; + color:#ffffff; +} + +.expertmode .advanced_settings_container .advanced_settings_menu .active:hover { + background-color: #72c5fd; + color: #ffffff; +} + +.expertmode .advanced_settings_container .advanced_settings_content input#import_settings { + height:auto !important; +} + +@media screen and (min-width: 670px) { + .expertmode .advanced_settings_container .advanced_settings_menu { + float: left; + width: 215px; + border-right: 1px solid rgb(204, 204, 204); + border-bottom: none; + } + + .expertmode .advanced_settings_container .advanced_settings_content { + padding-left: 10px; + padding-top: 0px; + } + + .expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_button { + display: block; + } +} diff --git a/plugins/updraftplus/css/updraftplus-notices.css b/plugins/updraftplus/css/updraftplus-notices.css new file mode 100644 index 0000000..68af1de --- /dev/null +++ b/plugins/updraftplus/css/updraftplus-notices.css @@ -0,0 +1,62 @@ +/* CSS for adverts */ + +.updraft_notice_container { + height: auto; + overflow: hidden; +} + +.updraft_advert_content_left { + float:none; + width:65px; +} + +.updraft_advert_content_right { + float:none; + width:auto; + overflow: hidden; +} + +.updraft_advert_bottom { + margin: 10px 0; + padding: 10px; + font-size: 140%; + background-color: white; + border-color: #E6DB55; + border: 1px solid; + border-radius: 4px; +} + +.updraft-advert-dismiss { + float: right; + font-size: 13px; + font-weight: normal; +} + +h3.updraft_advert_heading { + margin-top: 5px !important; + margin-bottom: 5px !important; +} + +h4.updraft_advert_heading { + margin-top: 2px !important; + margin-bottom: 3px !important; +} + +.updraft_center_content { + text-align: center; + margin-bottom:5px; +} + +.updraft_notice_link { + padding-left:5px; +} + +.updraft_text_center { + text-align: center; +} + +@media screen and (min-width: 560px) { + .updraft_advert_content_left { + float: left; + } +} diff --git a/plugins/updraftplus/example-decrypt.php b/plugins/updraftplus/example-decrypt.php new file mode 100644 index 0000000..e6dbc3f --- /dev/null +++ b/plugins/updraftplus/example-decrypt.php @@ -0,0 +1,37 @@ +output.sql.gz + +3) You may then want to gunzip the resulting file to have a standard SQL file. +e.g. +gunzip output.sql.gz + +*/ + +function rijndael_decrypt_file($file, $key) { + + require_once(dirname(__FILE__).'/includes/phpseclib/Crypt/Rijndael.php'); + + $rijndael = new Crypt_Rijndael(); + + $rijndael->setKey($key); + + $ciphertext = file_get_contents($file); + + print $rijndael->decrypt($ciphertext); + +} diff --git a/plugins/updraftplus/images/automaticbackup.png b/plugins/updraftplus/images/automaticbackup.png new file mode 100644 index 0000000..1d7c675 Binary files /dev/null and b/plugins/updraftplus/images/automaticbackup.png differ diff --git a/plugins/updraftplus/images/azure.png b/plugins/updraftplus/images/azure.png new file mode 100644 index 0000000..fc5d738 Binary files /dev/null and b/plugins/updraftplus/images/azure.png differ diff --git a/plugins/updraftplus/images/copycom.png b/plugins/updraftplus/images/copycom.png new file mode 100644 index 0000000..ab0d866 Binary files /dev/null and b/plugins/updraftplus/images/copycom.png differ diff --git a/plugins/updraftplus/images/dashicon.png b/plugins/updraftplus/images/dashicon.png new file mode 100644 index 0000000..65c9965 Binary files /dev/null and b/plugins/updraftplus/images/dashicon.png differ diff --git a/plugins/updraftplus/images/dreamobjects_logo-horiz-2013.png b/plugins/updraftplus/images/dreamobjects_logo-horiz-2013.png new file mode 100644 index 0000000..ae5094b Binary files /dev/null and b/plugins/updraftplus/images/dreamobjects_logo-horiz-2013.png differ diff --git a/plugins/updraftplus/images/dropbox-logo.png b/plugins/updraftplus/images/dropbox-logo.png new file mode 100644 index 0000000..e02bd47 Binary files /dev/null and b/plugins/updraftplus/images/dropbox-logo.png differ diff --git a/plugins/updraftplus/images/googlecloud.png b/plugins/updraftplus/images/googlecloud.png new file mode 100644 index 0000000..05b762a Binary files /dev/null and b/plugins/updraftplus/images/googlecloud.png differ diff --git a/plugins/updraftplus/images/icons/azure.png b/plugins/updraftplus/images/icons/azure.png new file mode 100644 index 0000000..3e9c289 Binary files /dev/null and b/plugins/updraftplus/images/icons/azure.png differ diff --git a/plugins/updraftplus/images/icons/cloudfiles.png b/plugins/updraftplus/images/icons/cloudfiles.png new file mode 100644 index 0000000..9bad3cb Binary files /dev/null and b/plugins/updraftplus/images/icons/cloudfiles.png differ diff --git a/plugins/updraftplus/images/icons/copycom.png b/plugins/updraftplus/images/icons/copycom.png new file mode 100644 index 0000000..86cc8cc Binary files /dev/null and b/plugins/updraftplus/images/icons/copycom.png differ diff --git a/plugins/updraftplus/images/icons/dreamobjects.png b/plugins/updraftplus/images/icons/dreamobjects.png new file mode 100644 index 0000000..27544f2 Binary files /dev/null and b/plugins/updraftplus/images/icons/dreamobjects.png differ diff --git a/plugins/updraftplus/images/icons/dropbox.png b/plugins/updraftplus/images/icons/dropbox.png new file mode 100644 index 0000000..292725c Binary files /dev/null and b/plugins/updraftplus/images/icons/dropbox.png differ diff --git a/plugins/updraftplus/images/icons/email.png b/plugins/updraftplus/images/icons/email.png new file mode 100644 index 0000000..217ac04 Binary files /dev/null and b/plugins/updraftplus/images/icons/email.png differ diff --git a/plugins/updraftplus/images/icons/folder.png b/plugins/updraftplus/images/icons/folder.png new file mode 100644 index 0000000..0567344 Binary files /dev/null and b/plugins/updraftplus/images/icons/folder.png differ diff --git a/plugins/updraftplus/images/icons/googlecloud.png b/plugins/updraftplus/images/icons/googlecloud.png new file mode 100644 index 0000000..1c19be1 Binary files /dev/null and b/plugins/updraftplus/images/icons/googlecloud.png differ diff --git a/plugins/updraftplus/images/icons/googledrive.png b/plugins/updraftplus/images/icons/googledrive.png new file mode 100644 index 0000000..43eb03c Binary files /dev/null and b/plugins/updraftplus/images/icons/googledrive.png differ diff --git a/plugins/updraftplus/images/icons/onedrive.png b/plugins/updraftplus/images/icons/onedrive.png new file mode 100644 index 0000000..cf089fd Binary files /dev/null and b/plugins/updraftplus/images/icons/onedrive.png differ diff --git a/plugins/updraftplus/images/icons/openstack.png b/plugins/updraftplus/images/icons/openstack.png new file mode 100644 index 0000000..a2b2e9a Binary files /dev/null and b/plugins/updraftplus/images/icons/openstack.png differ diff --git a/plugins/updraftplus/images/icons/s3.png b/plugins/updraftplus/images/icons/s3.png new file mode 100644 index 0000000..a1303cb Binary files /dev/null and b/plugins/updraftplus/images/icons/s3.png differ diff --git a/plugins/updraftplus/images/icons/updraftvault.png b/plugins/updraftplus/images/icons/updraftvault.png new file mode 100644 index 0000000..984affb Binary files /dev/null and b/plugins/updraftplus/images/icons/updraftvault.png differ diff --git a/plugins/updraftplus/images/icons/webdav.png b/plugins/updraftplus/images/icons/webdav.png new file mode 100644 index 0000000..29686d2 Binary files /dev/null and b/plugins/updraftplus/images/icons/webdav.png differ diff --git a/plugins/updraftplus/images/notices/black_friday.png b/plugins/updraftplus/images/notices/black_friday.png new file mode 100644 index 0000000..b87c1b4 Binary files /dev/null and b/plugins/updraftplus/images/notices/black_friday.png differ diff --git a/plugins/updraftplus/images/notices/christmas.png b/plugins/updraftplus/images/notices/christmas.png new file mode 100644 index 0000000..9c2372b Binary files /dev/null and b/plugins/updraftplus/images/notices/christmas.png differ diff --git a/plugins/updraftplus/images/notices/locksettings.png b/plugins/updraftplus/images/notices/locksettings.png new file mode 100644 index 0000000..1c57550 Binary files /dev/null and b/plugins/updraftplus/images/notices/locksettings.png differ diff --git a/plugins/updraftplus/images/notices/migrator.png b/plugins/updraftplus/images/notices/migrator.png new file mode 100644 index 0000000..d2dea50 Binary files /dev/null and b/plugins/updraftplus/images/notices/migrator.png differ diff --git a/plugins/updraftplus/images/notices/multiplestorage_destinations.png b/plugins/updraftplus/images/notices/multiplestorage_destinations.png new file mode 100644 index 0000000..2d0811d Binary files /dev/null and b/plugins/updraftplus/images/notices/multiplestorage_destinations.png differ diff --git a/plugins/updraftplus/images/notices/new_year.png b/plugins/updraftplus/images/notices/new_year.png new file mode 100644 index 0000000..6bf2b00 Binary files /dev/null and b/plugins/updraftplus/images/notices/new_year.png differ diff --git a/plugins/updraftplus/images/notices/reporting.png b/plugins/updraftplus/images/notices/reporting.png new file mode 100644 index 0000000..d223bf4 Binary files /dev/null and b/plugins/updraftplus/images/notices/reporting.png differ diff --git a/plugins/updraftplus/images/notices/spring.png b/plugins/updraftplus/images/notices/spring.png new file mode 100644 index 0000000..b6b3489 Binary files /dev/null and b/plugins/updraftplus/images/notices/spring.png differ diff --git a/plugins/updraftplus/images/notices/summer.png b/plugins/updraftplus/images/notices/summer.png new file mode 100644 index 0000000..15449dd Binary files /dev/null and b/plugins/updraftplus/images/notices/summer.png differ diff --git a/plugins/updraftplus/images/notices/support.png b/plugins/updraftplus/images/notices/support.png new file mode 100644 index 0000000..7130ca1 Binary files /dev/null and b/plugins/updraftplus/images/notices/support.png differ diff --git a/plugins/updraftplus/images/notices/updraft_logo.png b/plugins/updraftplus/images/notices/updraft_logo.png new file mode 100644 index 0000000..ab76d63 Binary files /dev/null and b/plugins/updraftplus/images/notices/updraft_logo.png differ diff --git a/plugins/updraftplus/images/onedrive.png b/plugins/updraftplus/images/onedrive.png new file mode 100644 index 0000000..4925abe Binary files /dev/null and b/plugins/updraftplus/images/onedrive.png differ diff --git a/plugins/updraftplus/images/padlock-150.png b/plugins/updraftplus/images/padlock-150.png new file mode 100644 index 0000000..ae26ef2 Binary files /dev/null and b/plugins/updraftplus/images/padlock-150.png differ diff --git a/plugins/updraftplus/images/rackspacecloud-logo.png b/plugins/updraftplus/images/rackspacecloud-logo.png new file mode 100644 index 0000000..9af5b9d Binary files /dev/null and b/plugins/updraftplus/images/rackspacecloud-logo.png differ diff --git a/plugins/updraftplus/images/ud-logo-150.png b/plugins/updraftplus/images/ud-logo-150.png new file mode 100644 index 0000000..24d0c01 Binary files /dev/null and b/plugins/updraftplus/images/ud-logo-150.png differ diff --git a/plugins/updraftplus/images/udlogo-rotating.gif b/plugins/updraftplus/images/udlogo-rotating.gif new file mode 100644 index 0000000..7466e5f Binary files /dev/null and b/plugins/updraftplus/images/udlogo-rotating.gif differ diff --git a/plugins/updraftplus/images/udp-logo-white.png b/plugins/updraftplus/images/udp-logo-white.png new file mode 100644 index 0000000..8177a70 Binary files /dev/null and b/plugins/updraftplus/images/udp-logo-white.png differ diff --git a/plugins/updraftplus/images/updraft_cross.png b/plugins/updraftplus/images/updraft_cross.png new file mode 100644 index 0000000..e4875d7 Binary files /dev/null and b/plugins/updraftplus/images/updraft_cross.png differ diff --git a/plugins/updraftplus/images/updraft_freev.png b/plugins/updraftplus/images/updraft_freev.png new file mode 100644 index 0000000..b8bf467 Binary files /dev/null and b/plugins/updraftplus/images/updraft_freev.png differ diff --git a/plugins/updraftplus/images/updraft_premv.png b/plugins/updraftplus/images/updraft_premv.png new file mode 100644 index 0000000..beb7ddb Binary files /dev/null and b/plugins/updraftplus/images/updraft_premv.png differ diff --git a/plugins/updraftplus/images/updraft_tick.png b/plugins/updraftplus/images/updraft_tick.png new file mode 100644 index 0000000..56e8282 Binary files /dev/null and b/plugins/updraftplus/images/updraft_tick.png differ diff --git a/plugins/updraftplus/images/updraftvault-150.png b/plugins/updraftplus/images/updraftvault-150.png new file mode 100644 index 0000000..e0c24c6 Binary files /dev/null and b/plugins/updraftplus/images/updraftvault-150.png differ diff --git a/plugins/updraftplus/includes/Dropbox/API.php b/plugins/updraftplus/includes/Dropbox/API.php new file mode 100644 index 0000000..1ceae46 --- /dev/null +++ b/plugins/updraftplus/includes/Dropbox/API.php @@ -0,0 +1,594 @@ + + * @link https://github.com/benthedesigner/dropbox + * @link https://www.dropbox.com/developers + * @link https://status.dropbox.com Dropbox status + * @package Dropbox + */ +class UpdraftPlus_Dropbox_API +{ + // API Endpoints + const API_URL = 'https://api.dropbox.com/1/'; + const API_URL_V2 = 'https://api.dropboxapi.com/2/'; + const CONTENT_URL = 'https://api-content.dropbox.com/1/'; + + /** + * OAuth consumer object + * @var null|OAuth\Consumer + */ + private $OAuth; + + /** + * The root level for file paths + * Either `dropbox` or `sandbox` (preferred) + * @var null|string + */ + private $root; + + /** + * Format of the API response + * @var string + */ + private $responseFormat = 'php'; + + /** + * JSONP callback + * @var string + */ + private $callback = 'dropboxCallback'; + + /** + * Chunk size used for chunked uploads + * @see \Dropbox\API::chunkedUpload() + */ + private $chunkSize = 4194304; + + /** + * Set the OAuth consumer object + * See 'General Notes' at the link below for information on access type + * @link https://www.dropbox.com/developers/reference/api + * @param OAuth\Consumer\ConsumerAbstract $OAuth + * @param string $root Dropbox app access type + */ + public function __construct(Dropbox_ConsumerAbstract $OAuth, $root = 'sandbox') + { + $this->OAuth = $OAuth; + $this->setRoot($root); + } + + /** + * Set the root level + * @param mixed $root + * @throws Exception + * @return void + */ + public function setRoot($root) + { + if ($root !== 'sandbox' && $root !== 'dropbox') { + throw new Exception("Expected a root of either 'dropbox' or 'sandbox', got '$root'"); + } else { + $this->root = $root; + } + } + + /** + * Retrieves information about the user's account + * @return object stdClass + */ + public function accountInfo() + { + $response = $this->fetch('POST', self::API_URL, 'account/info'); + return $response; + } + + /** + * Uploads a physical file from disk + * Dropbox impose a 150MB limit to files uploaded via the API. If the file + * exceeds this limit or does not exist, an Exception will be thrown + * @param string $file Absolute path to the file to be uploaded + * @param string|bool $filename The destination filename of the uploaded file + * @param string $path Path to upload the file to, relative to root + * @param boolean $overwrite Should the file be overwritten? (Default: true) + * @return object stdClass + */ + public function putFile($file, $filename = false, $path = '', $overwrite = true) + { + if (file_exists($file)) { + if (filesize($file) <= 157286400) { + $call = 'files/' . $this->root . '/' . $this->encodePath($path); + // If no filename is provided we'll use the original filename + $filename = (is_string($filename)) ? $filename : basename($file); + $params = array( + 'filename' => $filename, + 'file' => '@' . str_replace('\\', '/', $file) . ';filename=' . $filename, + 'overwrite' => (int) $overwrite, + ); + $response = $this->fetch('POST', self::CONTENT_URL, $call, $params); + return $response; + } + throw new Exception('File exceeds 150MB upload limit'); + } + + // Throw an Exception if the file does not exist + throw new Exception('Local file ' . $file . ' does not exist'); + } + + /** + * Uploads file data from a stream + * Note: This function is experimental and requires further testing + * @todo Add filesize check + * @param resource $stream A readable stream created using fopen() + * @param string $filename The destination filename, including path + * @param boolean $overwrite Should the file be overwritten? (Default: true) + * @return array + */ + public function putStream($stream, $filename, $overwrite = true) + { + $this->OAuth->setInFile($stream); + $path = $this->encodePath($filename); + $call = 'files_put/' . $this->root . '/' . $path; + $params = array('overwrite' => (int) $overwrite); + $response = $this->fetch('PUT', self::CONTENT_URL, $call, $params); + return $response; + } + + /** + * Uploads large files to Dropbox in mulitple chunks + * @param string $file Absolute path to the file to be uploaded + * @param string|bool $filename The destination filename of the uploaded file + * @param string $path Path to upload the file to, relative to root + * @param boolean $overwrite Should the file be overwritten? (Default: true) + * @param integer $offset position to seek to when opening the file + * @param string $uploadID existing upload_id to resume an upload + * @param string|array function to call back to upon each chunk + * @return stdClass + */ + public function chunkedUpload($file, $filename = false, $path = '', $overwrite = true, $offset = 0, $uploadID = null, $callback = null) + { + if (file_exists($file)) { + if ($handle = @fopen($file, 'r')) { + // Set initial upload ID and offset + if ($offset > 0) { + fseek($handle, $offset); + } + + // Read from the file handle until EOF, uploading each chunk + while ($data = fread($handle, $this->chunkSize)) { + // Open a temporary file handle and write a chunk of data to it + $chunkHandle = fopen('php://temp', 'rw'); + fwrite($chunkHandle, $data); + + // Set the file, request parameters and send the request + $this->OAuth->setInFile($chunkHandle); + $params = array('upload_id' => $uploadID, 'offset' => $offset); + $response = $this->fetch('PUT', self::CONTENT_URL, 'chunked_upload', $params); + + // On subsequent chunks, use the upload ID returned by the previous request + if (isset($response['body']->upload_id)) { + $uploadID = $response['body']->upload_id; + } + + if (isset($response['body']->offset)) { + $offset = $response['body']->offset; + if ($callback) { + call_user_func($callback, $offset, $uploadID, $file); + } + } + + // Close the file handle for this chunk + fclose($chunkHandle); + } + + // Complete the chunked upload + $filename = (is_string($filename)) ? $filename : basename($file); + $call = 'commit_chunked_upload/' . $this->root . '/' . $this->encodePath($path . $filename); + $params = array('overwrite' => (int) $overwrite, 'upload_id' => $uploadID); + $response = $this->fetch('POST', self::CONTENT_URL, $call, $params); + return $response; + } else { + throw new Exception('Could not open ' . $file . ' for reading'); + } + } + + // Throw an Exception if the file does not exist + throw new Exception('Local file ' . $file . ' does not exist'); + } + + /** + * Downloads a file + * Returns the base filename, raw file data and mime type returned by Fileinfo + * @param string $file Path to file, relative to root, including path + * @param string $outFile Filename to write the downloaded file to + * @param string $revision The revision of the file to retrieve + * @param boolean $allow_resume - append to the file if it already exists + * @return array + */ + public function getFile($file, $outFile = false, $revision = null, $allow_resume = false) + { + // Only allow php response format for this call + if ($this->responseFormat !== 'php') { + throw new Exception('This method only supports the `php` response format'); + } + + $params = array('rev' => $revision); + + $handle = null; + if ($outFile !== false) { + // Create a file handle if $outFile is specified + if ($allow_resume && file_exists($outFile)) { + if (!$handle = fopen($outFile, 'a')) { + throw new Exception("Unable to open file handle for $outFile"); + } else { + $this->OAuth->setOutFile($handle); + $params['headers'] = array('Range: bytes='.filesize($outFile).'-'); + } + } + elseif (!$handle = fopen($outFile, 'w')) { + throw new Exception("Unable to open file handle for $outFile"); + } else { + $this->OAuth->setOutFile($handle); + } + } + + $file = $this->encodePath($file); + $call = 'files/' . $this->root . '/' . $file; + $response = $this->fetch('GET', self::CONTENT_URL, $call, $params); + + // Close the file handle if one was opened + if ($handle) fclose($handle); + + return array( + 'name' => ($outFile) ? $outFile : basename($file), + 'mime' => $this->getMimeType(($outFile) ? $outFile : $response['body'], $outFile), + 'meta' => json_decode($response['headers']['x-dropbox-metadata']), + 'data' => $response['body'], + ); + } + + /** + * Retrieves file and folder metadata + * @param string $path The path to the file/folder, relative to root + * @param string $rev Return metadata for a specific revision (Default: latest rev) + * @param int $limit Maximum number of listings to return + * @param string $hash Metadata hash to compare against + * @param bool $list Return contents field with response + * @param bool $deleted Include files/folders that have been deleted + * @return object stdClass + */ + public function metaData($path = null, $rev = null, $limit = 10000, $hash = false, $list = true, $deleted = false) + { + $call = 'metadata/' . $this->root . '/' . $this->encodePath($path); + $params = array( + 'file_limit' => ($limit < 1) ? 1 : (($limit > 10000) ? 10000 : (int) $limit), + 'hash' => (is_string($hash)) ? $hash : 0, + 'list' => (int) $list, + 'include_deleted' => (int) $deleted, + 'rev' => (is_string($rev)) ? $rev : null, + ); + $response = $this->fetch('POST', self::API_URL, $call, $params); + return $response; + } + + /** + * Return "delta entries", intructing you how to update + * your application state to match the server's state + * Important: This method does not make changes to the application state + * @param null|string $cursor Used to keep track of your current state + * @return array Array of delta entries + */ + public function delta($cursor = null) + { + $call = 'delta'; + $params = array('cursor' => $cursor); + $response = $this->fetch('POST', self::API_URL, $call, $params); + return $response; + } + + /** + * Obtains metadata for the previous revisions of a file + * @param string Path to the file, relative to root + * @param integer Number of revisions to return (1-1000) + * @return array + */ + public function revisions($file, $limit = 10) + { + $call = 'revisions/' . $this->root . '/' . $this->encodePath($file); + $params = array( + 'rev_limit' => ($limit < 1) ? 1 : (($limit > 1000) ? 1000 : (int) $limit), + ); + $response = $this->fetch('GET', self::API_URL, $call, $params); + return $response; + } + + /** + * Restores a file path to a previous revision + * @param string $file Path to the file, relative to root + * @param string $revision The revision of the file to restore + * @return object stdClass + */ + public function restore($file, $revision) + { + $call = 'restore/' . $this->root . '/' . $this->encodePath($file); + $params = array('rev' => $revision); + $response = $this->fetch('POST', self::API_URL, $call, $params); + return $response; + } + + /** + * Returns metadata for all files and folders that match the search query + * @param mixed $query The search string. Must be at least 3 characters long + * @param string $path The path to the folder you want to search in + * @param integer $limit Maximum number of results to return (1-1000) + * @param boolean $deleted Include deleted files/folders in the search + * @return array + */ + public function search($query, $path = '', $limit = 1000, $deleted = false) + { + $call = 'search/' . $this->root . '/' . $this->encodePath($path); + $params = array( + 'query' => $query, + 'file_limit' => ($limit < 1) ? 1 : (($limit > 1000) ? 1000 : (int) $limit), + 'include_deleted' => (int) $deleted, + ); + $response = $this->fetch('GET', self::API_URL, $call, $params); + return $response; + } + + /** + * Creates and returns a shareable link to files or folders + * The link returned is for a preview page from which the user an choose to + * download the file if they wish. For direct download links, see media(). + * @param string $path The path to the file/folder you want a sharable link to + * @return object stdClass + */ + public function shares($path, $shortUrl = true) + { + $call = 'shares/' . $this->root . '/' .$this->encodePath($path); + $params = array('short_url' => ($shortUrl) ? 1 : 0); + $response = $this->fetch('POST', self::API_URL, $call, $params); + return $response; + } + + /** + * Returns a link directly to a file + * @param string $path The path to the media file you want a direct link to + * @return object stdClass + */ + public function media($path) + { + $call = 'media/' . $this->root . '/' . $this->encodePath($path); + $response = $this->fetch('POST', self::API_URL, $call); + return $response; + } + + /** + * Gets a thumbnail for an image + * @param string $file The path to the image you wish to thumbnail + * @param string $format The thumbnail format, either JPEG or PNG + * @param string $size The size of the thumbnail + * @return array + */ + public function thumbnails($file, $format = 'JPEG', $size = 'small') + { + // Only allow php response format for this call + if ($this->responseFormat !== 'php') { + throw new Exception('This method only supports the `php` response format'); + } + + $format = strtoupper($format); + // If $format is not 'PNG', default to 'JPEG' + if ($format != 'PNG') $format = 'JPEG'; + + $size = strtolower($size); + $sizes = array('s', 'm', 'l', 'xl', 'small', 'medium', 'large'); + // If $size is not valid, default to 'small' + if (!in_array($size, $sizes)) $size = 'small'; + + $call = 'thumbnails/' . $this->root . '/' . $this->encodePath($file); + $params = array('format' => $format, 'size' => $size); + $response = $this->fetch('GET', self::CONTENT_URL, $call, $params); + + return array( + 'name' => basename($file), + 'mime' => $this->getMimeType($response['body']), + 'meta' => json_decode($response['headers']['x-dropbox-metadata']), + 'data' => $response['body'], + ); + } + + /** + * Creates and returns a copy_ref to a file + * This reference string can be used to copy that file to another user's + * Dropbox by passing it in as the from_copy_ref parameter on /fileops/copy + * @param $path File for which ref should be created, relative to root + * @return array + */ + public function copyRef($path) + { + $call = 'copy_ref/' . $this->root . '/' . $this->encodePath($path); + $response = $this->fetch('GET', self::API_URL, $call); + return $response; + } + + /** + * Copies a file or folder to a new location + * @param string $from File or folder to be copied, relative to root + * @param string $to Destination path, relative to root + * @param null|string $fromCopyRef Must be used instead of the from_path + * @return object stdClass + */ + public function copy($from, $to, $fromCopyRef = null) + { + $call = 'fileops/copy'; + $params = array( + 'root' => $this->root, + 'from_path' => $this->normalisePath($from), + 'to_path' => $this->normalisePath($to), + ); + + if ($fromCopyRef) { + $params['from_path'] = null; + $params['from_copy_ref'] = $fromCopyRef; + } + + $response = $this->fetch('POST', self::API_URL, $call, $params); + return $response; + } + + /** + * Creates a folder + * @param string New folder to create relative to root + * @return object stdClass + */ + public function create($path) + { + $call = 'fileops/create_folder'; + $params = array('root' => $this->root, 'path' => $this->normalisePath($path)); + $response = $this->fetch('POST', self::API_URL, $call, $params); + return $response; + } + + /** + * Deletes a file or folder + * @param string $path The path to the file or folder to be deleted + * @return object stdClass + */ + public function delete($path) + { + $call = 'fileops/delete'; + $params = array('root' => $this->root, 'path' => $this->normalisePath($path)); + $response = $this->fetch('POST', self::API_URL, $call, $params); + return $response; + } + + /** + * Moves a file or folder to a new location + * @param string $from File or folder to be moved, relative to root + * @param string $to Destination path, relative to root + * @return object stdClass + */ + public function move($from, $to) + { + $call = 'fileops/move'; + $params = array( + 'root' => $this->root, + 'from_path' => $this->normalisePath($from), + 'to_path' => $this->normalisePath($to), + ); + $response = $this->fetch('POST', self::API_URL, $call, $params); + return $response; + } + + /** + * Intermediate fetch function + * @param string $method The HTTP method + * @param string $url The API endpoint + * @param string $call The API method to call + * @param array $params Additional parameters + * @return mixed + */ + private function fetch($method, $url, $call, array $params = array()) + { + // Make the API call via the consumer + $response = $this->OAuth->fetch($method, $url, $call, $params); + + // Format the response and return + switch ($this->responseFormat) { + case 'json': + return json_encode($response); + case 'jsonp': + $response = json_encode($response); + return $this->callback . '(' . $response . ')'; + default: + return $response; + } + } + + /** + * Set the API response format + * @param string $format One of php, json or jsonp + * @return void + */ + public function setResponseFormat($format) + { + $format = strtolower($format); + if (!in_array($format, array('php', 'json', 'jsonp'))) { + throw new Exception("Expected a format of php, json or jsonp, got '$format'"); + } else { + $this->responseFormat = $format; + } + } + + /** + * Set the chunk size for chunked uploads + * If $chunkSize is empty, set to 4194304 bytes (4 MB) + * @see \Dropbox\API\chunkedUpload() + */ + public function setChunkSize($chunkSize = 4194304) + { + if (!is_int($chunkSize)) { + throw new Exception('Expecting chunk size to be an integer, got ' . gettype($chunkSize)); + } elseif ($chunkSize > 157286400) { + throw new Exception('Chunk size must not exceed 157286400 bytes, got ' . $chunkSize); + } else { + $this->chunkSize = $chunkSize; + } + } + + /** + * Set the JSONP callback function + * @param string $function + * @return void + */ + public function setCallback($function) + { + $this->callback = $function; + } + + /** + * Get the mime type of downloaded file + * If the Fileinfo extension is not loaded, return false + * @param string $data File contents as a string or filename + * @param string $isFilename Is $data a filename? + * @return boolean|string Mime type and encoding of the file + */ + private function getMimeType($data, $isFilename = false) + { + if (extension_loaded('fileinfo')) { + $finfo = new finfo(FILEINFO_MIME); + if ($isFilename !== false) { + return $finfo->file($data); + } + return $finfo->buffer($data); + } + return false; + } + + /** + * Trim the path of forward slashes and replace + * consecutive forward slashes with a single slash + * @param string $path The path to normalise + * @return string + */ + private function normalisePath($path) + { + $path = preg_replace('#/+#', '/', trim($path, '/')); + return $path; + } + + /** + * Encode the path, then replace encoded slashes + * with literal forward slash characters + * @param string $path The path to encode + * @return string + */ + private function encodePath($path) + { + $path = $this->normalisePath($path); + $path = str_replace('%2F', '/', rawurlencode($path)); + return $path; + } +} diff --git a/plugins/updraftplus/includes/Dropbox/Exception.php b/plugins/updraftplus/includes/Dropbox/Exception.php new file mode 100644 index 0000000..958fb0f --- /dev/null +++ b/plugins/updraftplus/includes/Dropbox/Exception.php @@ -0,0 +1,28 @@ + + * @link https://github.com/benthedesigner/dropbox + * @package Dropbox + */ +class Dropbox_Exception extends Exception { +} + +class Dropbox_BadRequestException extends Exception { +} + +class Dropbox_CurlException extends Exception { +} + +class Dropbox_NotAcceptableException extends Exception { +} + +class Dropbox_NotFoundException extends Exception { +} + +class Dropbox_NotModifiedException extends Exception { +} + +class Dropbox_UnsupportedMediaTypeException extends Exception { +} diff --git a/plugins/updraftplus/includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php b/plugins/updraftplus/includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php new file mode 100644 index 0000000..677a265 --- /dev/null +++ b/plugins/updraftplus/includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php @@ -0,0 +1,433 @@ + +* @link https://github.com/benthedesigner/dropbox +* @package Dropbox\OAuth +* @subpackage Consumer +*/ + +abstract class Dropbox_ConsumerAbstract +{ + // Dropbox web endpoint + const WEB_URL = 'https://www.dropbox.com/1/'; + + // OAuth flow methods + const AUTHORISE_METHOD = 'oauth2/authorize'; + const DEAUTHORISE_METHOD = 'disable_access_token'; + const ACCESS_TOKEN_METHOD = 'oauth2/token'; + const OAUTH_UPGRADE = 'oauth2/token_from_oauth1'; + + /** + * Signature method, either PLAINTEXT or HMAC-SHA1 + * @var string + */ + private $sigMethod = 'PLAINTEXT'; + + /** + * Output file handle + * @var null|resource + */ + protected $outFile = null; + + /** + * Input file handle + * @var null|resource + */ + protected $inFile = null; + + /** + * Authenticate using 3-legged OAuth flow, firstly + * checking we don't already have tokens to use + * @return void + */ + protected function authenticate() + { + global $updraftplus; + + $access_token = $this->storage->get('access_token'); + //Check if the new token type is set if not they need to be upgraded to OAuth2 + if (!empty($access_token) && isset($access_token->oauth_token) && !isset($access_token->token_type)) { + $updraftplus->log('OAuth v1 token found: upgrading to v2'); + $this->upgradeOAuth(); + $updraftplus->log('OAuth token upgrade successful'); + } + + if (empty($access_token) || !isset($access_token->oauth_token)) { + try { + $this->getAccessToken(); + } catch(Exception $e) { + $excep_class = get_class($e); + // 04-Sep-2015 - Dropbox started throwing a 400, which caused a Dropbox_BadRequestException which previously wasn't being caught + if ('Dropbox_BadRequestException' == $excep_class || 'Dropbox_Exception' == $excep_class) { + global $updraftplus; + $updraftplus->log($e->getMessage().' - need to reauthenticate this site with Dropbox (if this fails, then you can also try wiping your settings from the Expert Settings section)'); + //$this->getRequestToken(); + $this->authorise(); + } else { + throw $e; + } + } + } + } + + /** + * Upgrade the user's OAuth1 token to a OAuth2 token + * @return void + */ + private function upgradeOAuth() + { + $url = UpdraftPlus_Dropbox_API::API_URL . self::OAUTH_UPGRADE; + $response = $this->fetch('POST', $url, ''); + $token = new stdClass(); + /* + oauth token secret and oauth token were needed by oauth1 + these are replaced in oauth2 with an access token + currently they are still there just in case a method somewhere is expecting them to both be set + as far as I can tell only the oauth token is used + after more testing token secret can be removed. + */ + + $token->oauth_token_secret = $response['body']->access_token; + $token->oauth_token = $response['body']->access_token; + $token->token_type = $response['body']->token_type; + $this->storage->set($token, 'access_token'); + $this->storage->set('true','upgraded'); + $this->storage->do_unset('request_token'); + } + + /** + * Obtain user authorisation + * The user will be redirected to Dropbox' web endpoint + * @link http://tools.ietf.org/html/rfc5849#section-2.2 + * @return void + */ + private function authorise() + { + // Only redirect if not using CLI + if (PHP_SAPI !== 'cli' && (!defined('DOING_CRON') || !DOING_CRON) && (!defined('DOING_AJAX') || !DOING_AJAX)) { + $url = $this->getAuthoriseUrl(); + if (!headers_sent()) { + header('Location: ' . $url); + exit; + } else { + throw new Dropbox_Exception(sprintf(__('The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help).', 'updraftplus'), 'Dropbox')); + } + ?>log('Dropbox reauthorisation needed; but we are running from cron, AJAX or the CLI, so this is not possible'); + $this->storage->do_unset('access_token'); + throw new Dropbox_Exception(sprintf(__('You need to re-authenticate with %s, as your existing credentials are not working.', 'updraftplus'), 'Dropbox')); + #$updraftplus->log(sprintf(__('You need to re-authenticate with %s, as your existing credentials are not working.', 'updraftplus'), 'Dropbox'), 'error'); + return false; + } + + /** + * Build the user authorisation URL + * @return string + */ + public function getAuthoriseUrl() + { + /* + Generate a random key to be passed to Dropbox and stored in session to be checked to prevent CSRF + Uses OpenSSL or Mcrypt or defaults to pure PHP implementaion if neither are available. + */ + + global $updraftplus; + if (!function_exists('crypt_random_string')) $updraftplus->ensure_phpseclib('Crypt_Random', 'Crypt/Random'); + + $CSRF = base64_encode(crypt_random_string(16)); + $this->storage->set($CSRF,'CSRF'); + // Prepare request parameters + /* + For OAuth v2 Dropbox needs to use a authorisation url that matches one that is set inside the + Dropbox developer console. In order to check this it needs the client ID for the OAuth v2 app + This will use the default one unless the user is using their own Dropbox App + + For users that use their own Dropbox App there is also no need to provide the callbackhome as + part of the CSRF as there is no need to go to auth.updraftplus.com also the redirect uri can + then be set to the home as default + + Check if the key has dropbox: if so then remove it to stop the request from being invalid + */ + $appkey = $this->storage->get('appkey'); + + if (!empty($appkey) && 'dropbox:' == substr($appkey, 0, 8)) { + $key = substr($appkey, 8); + } else if (!empty($appkey)) { + $key = $appkey; + } + + $params = array( + 'client_id' => empty($key) ? $this->oauth2_id : $key, + 'response_type' => 'code', + 'redirect_uri' => empty($key) ? $this->callback : $this->callbackhome, + 'state' => empty($key) ? $CSRF.$this->callbackhome : $CSRF, + ); + + // Build the URL and redirect the user + $query = '?' . http_build_query($params, '', '&'); + $url = self::WEB_URL . self::AUTHORISE_METHOD . $query; + return $url; + } + + protected function deauthenticate() + { + $url = UpdraftPlus_Dropbox_API::API_URL . self::DEAUTHORISE_METHOD; + $response = $this->fetch('POST', $url, ''); + $this->storage->delete(); + } + + /** + * Acquire an access token + * Tokens acquired at this point should be stored to + * prevent having to request new tokens for each API call + * @link http://tools.ietf.org/html/rfc5849#section-2.3 + */ + public function getAccessToken() + { + + // If this is non-empty, then we just received a code. It is stored in 'code' - our next job is to put it into the proper place. + $code = $this->storage->get('code'); + /* + Checks to see if the user is using their own Dropbox App if so then they need to get + a request token. If they are using our App then we just need to save these details + */ + if (!empty($code)){ + $appkey = $this->storage->get('appkey'); + if (!empty($appkey)){ + // Get the signed request URL + $url = UpdraftPlus_Dropbox_API::API_URL . self::ACCESS_TOKEN_METHOD; + $params = array( + 'code' => $code, + 'grant_type' => 'authorization_code', + 'redirect_uri' => $this->callbackhome, + 'client_id' => $this->consumerKey, + 'client_secret' => $this->consumerSecret, + ); + $response = $this->fetch('POST', $url, '' , $params); + + $code = json_decode(json_encode($response['body']),true); + + } else { + $code = base64_decode($code); + $code = json_decode($code, true); + } + + /* + Again oauth token secret and oauth token were needed by oauth1 + these are replaced in oauth2 with an access token + currently they are still there just in case a method somewhere is expecting them to both be set + as far as I can tell only the oauth token is used + after more testing token secret can be removed. + */ + + $token = new stdClass(); + $token->oauth_token_secret = $code['access_token']; + $token->oauth_token = $code['access_token']; + $token->account_id = $code['account_id']; + $token->token_type = $code['token_type']; + $token->uid = $code['uid']; + $this->storage->set($token, 'access_token'); + $this->storage->do_unset('upgraded'); + + //reset code + $this->storage->do_unset('code'); + } else { + throw new Dropbox_BadRequestException("No Dropbox Code found, will try to get one now", 400); + } + } + + /** + * Get the request/access token + * This will return the access/request token depending on + * which stage we are at in the OAuth flow, or a dummy object + * if we have not yet started the authentication process + * @return object stdClass + */ + private function getToken() + { + if (!$token = $this->storage->get('access_token')) { + if (!$token = $this->storage->get('request_token')) { + $token = new stdClass(); + $token->oauth_token = null; + $token->oauth_token_secret = null; + } + } + return $token; + } + + /** + * Generate signed request URL + * See inline comments for description + * @link http://tools.ietf.org/html/rfc5849#section-3.4 + * @param string $method HTTP request method + * @param string $url API endpoint to send the request to + * @param string $call API call to send + * @param array $additional Additional parameters as an associative array + * @return array + */ + protected function getSignedRequest($method, $url, $call, array $additional = array()) + { + // Get the request/access token + $token = $this->getToken(); + // Prepare the standard request parameters differnt for OAuth1 and OAuth2, we still need OAuth1 to make the request to the upgrade token endpoint + if (isset($token->token_type)) { + $params = array( + 'access_token' => $token->oauth_token, + ); + } else { + // Generate a random string for the request + $nonce = md5(microtime(true) . uniqid('', true)); + $params = array( + 'oauth_consumer_key' => $this->consumerKey, + 'oauth_token' => $token->oauth_token, + 'oauth_signature_method' => $this->sigMethod, + 'oauth_version' => '1.0', + // Generate nonce and timestamp if signature method is HMAC-SHA1 + 'oauth_timestamp' => ($this->sigMethod == 'HMAC-SHA1') ? time() : null, + 'oauth_nonce' => ($this->sigMethod == 'HMAC-SHA1') ? $nonce : null, + ); + } + + // Merge with the additional request parameters + $params = array_merge($params, $additional); + ksort($params); + + // URL encode each parameter to RFC3986 for use in the base string + $encoded = array(); + foreach($params as $param => $value) { + if ($value !== null) { + // If the value is a file upload (prefixed with @), replace it with + // the destination filename, the file path will be sent in POSTFIELDS + if (isset($value[0]) && $value[0] === '@') $value = $params['filename']; + # Prevent spurious PHP warning by only doing non-arrays + if (!is_array($value)) $encoded[] = $this->encode($param) . '=' . $this->encode($value); + } else { + unset($params[$param]); + } + } + + // Build the first part of the string + $base = $method . '&' . $this->encode($url . $call) . '&'; + + // Re-encode the encoded parameter string and append to $base + $base .= $this->encode(implode('&', $encoded)); + + // Concatenate the secrets with an ampersand + $key = $this->consumerSecret . '&' . $token->oauth_token_secret; + + // Get the signature string based on signature method + $signature = $this->getSignature($base, $key); + $params['oauth_signature'] = $signature; + + // Build the signed request URL + $query = '?' . http_build_query($params, '', '&'); + + return array( + 'url' => $url . $call . $query, + 'postfields' => $params, + ); + } + + /** + * Generate the oauth_signature for a request + * @param string $base Signature base string, used by HMAC-SHA1 + * @param string $key Concatenated consumer and token secrets + */ + private function getSignature($base, $key) + { + switch ($this->sigMethod) { + case 'PLAINTEXT': + $signature = $key; + break; + case 'HMAC-SHA1': + $signature = base64_encode(hash_hmac('sha1', $base, $key, true)); + break; + } + + return $signature; + } + + /** + * Set the OAuth signature method + * @param string $method Either PLAINTEXT or HMAC-SHA1 + * @return void + */ + public function setSignatureMethod($method) + { + $method = strtoupper($method); + + switch ($method) { + case 'PLAINTEXT': + case 'HMAC-SHA1': + $this->sigMethod = $method; + break; + default: + throw new Dropbox_Exception('Unsupported signature method ' . $method); + } + } + + /** + * Set the output file + * @param resource Resource to stream response data to + * @return void + */ + public function setOutFile($handle) + { + if (!is_resource($handle) || get_resource_type($handle) != 'stream') { + throw new Dropbox_Exception('Outfile must be a stream resource'); + } + $this->outFile = $handle; + } + + /** + * Set the input file + * @param resource Resource to read data from + * @return void + */ + public function setInFile($handle) + { + if (!is_resource($handle) || get_resource_type($handle) != 'stream') { + throw new Dropbox_Exception('Infile must be a stream resource'); + } + fseek($handle, 0); + $this->inFile = $handle; + } + + /** + * Parse response parameters for a token into an object + * Dropbox returns tokens in the response parameters, and + * not a JSON encoded object as per other API requests + * @link http://oauth.net/core/1.0/#response_parameters + * @param string $response + * @return object stdClass + */ + private function parseTokenString($response) + { + $parts = explode('&', $response); + $token = new stdClass(); + foreach ($parts as $part) { + list($k, $v) = explode('=', $part, 2); + $k = strtolower($k); + $token->$k = $v; + } + return $token; + } + + /** + * Encode a value to RFC3986 + * This is a convenience method to decode ~ symbols encoded + * by rawurldecode. This will encode all characters except + * the unreserved set, ALPHA, DIGIT, '-', '.', '_', '~' + * @link http://tools.ietf.org/html/rfc5849#section-3.6 + * @param mixed $value + */ + private function encode($value) + { + return str_replace('%7E', '~', rawurlencode($value)); + } +} diff --git a/plugins/updraftplus/includes/Dropbox/OAuth/Consumer/Curl.php b/plugins/updraftplus/includes/Dropbox/OAuth/Consumer/Curl.php new file mode 100644 index 0000000..00769fd --- /dev/null +++ b/plugins/updraftplus/includes/Dropbox/OAuth/Consumer/Curl.php @@ -0,0 +1,249 @@ + +* @link https://github.com/benthedesigner/dropbox +* @package Dropbox\OAuth +* @subpackage Consumer +*/ + +class Dropbox_Curl extends Dropbox_ConsumerAbstract +{ + /** + * Default cURL options + * @var array + */ + protected $defaultOptions = array( + CURLOPT_VERBOSE => true, + CURLOPT_HEADER => true, + CURLINFO_HEADER_OUT => false, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_FOLLOWLOCATION => false, + ); + + /** + * Store the last response form the API + * @var mixed + */ + protected $lastResponse = null; + + /** + * Set properties and begin authentication + * @param string $key + * @param string $secret + * @param \Dropbox\OAuth\Consumer\StorageInterface $storage + * @param string $callback + */ + public function __construct($key, $oauth2_id, $secret, Dropbox_StorageInterface $storage, $callback = null, $callbackhome = null, $deauthenticate = false) + { + // Check the cURL extension is loaded + if (!extension_loaded('curl')) { + throw new Dropbox_Exception('The cURL OAuth consumer requires the cURL extension. Please speak to your web hosting provider so that this missing PHP component can be installed.'); + } + + $this->consumerKey = $key; + $this->oauth2_id = $oauth2_id; + $this->consumerSecret = $secret; + $this->storage = $storage; + $this->callback = $callback; + $this->callbackhome = $callbackhome; + + if ($deauthenticate) { + $this->deauthenticate(); + } else { + $this->authenticate(); + } + } + + /** + * Execute an API call + * @todo Improve error handling + * @param string $method The HTTP method + * @param string $url The API endpoint + * @param string $call The API method to call + * @param array $additional Additional parameters + * @return string|object stdClass + */ + public function fetch($method, $url, $call, array $additional = array()) + { + // Get the signed request URL + $request = $this->getSignedRequest($method, $url, $call, $additional); + + // Initialise and execute a cURL request + $handle = curl_init($request['url']); + + // Get the default options array + $options = $this->defaultOptions; + if (!UpdraftPlus_Options::get_updraft_option('updraft_ssl_useservercerts')) { + $options[CURLOPT_CAINFO] = UPDRAFTPLUS_DIR.'/includes/cacert.pem'; + } + if (UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify')) { + $options[CURLOPT_SSL_VERIFYPEER] = false; + } else { + $options[CURLOPT_SSL_VERIFYPEER] = true; + } + + if (!class_exists('WP_HTTP_Proxy')) require_once(ABSPATH.WPINC.'/class-http.php'); + $proxy = new WP_HTTP_Proxy(); + + if ($proxy->is_enabled()) { + # WP_HTTP_Proxy returns empty strings if nothing is set + $user = $proxy->username(); + $pass = $proxy->password(); + $host = $proxy->host(); + $port = (int)$proxy->port(); + if (empty($port)) $port = 8080; + if (!empty($host) && $proxy->send_through_proxy($request['url'])) { + $options[CURLOPT_PROXY] = $host; + $options[CURLOPT_PROXYTYPE] = CURLPROXY_HTTP; + $options[CURLOPT_PROXYPORT] = $port; + if (!empty($user) && !empty($pass)) { + $options[CURLOPT_PROXYAUTH] = CURLAUTH_ANY; + $options[CURLOPT_PROXYUSERPWD] = sprintf('%s:%s', $user, $pass); + } + } + } + + if ($method == 'GET' && $this->outFile) { // GET + $options[CURLOPT_RETURNTRANSFER] = false; + $options[CURLOPT_HEADER] = false; + $options[CURLOPT_FILE] = $this->outFile; + $options[CURLOPT_BINARYTRANSFER] = true; + $options[CURLOPT_FAILONERROR] = true; + if (isset($additional['headers'])) $options[CURLOPT_HTTPHEADER] = $additional['headers']; + $this->outFile = null; + } elseif ($method == 'POST') { // POST + $options[CURLOPT_POST] = true; + $options[CURLOPT_POSTFIELDS] = $request['postfields']; + } elseif ($method == 'PUT' && $this->inFile) { // PUT + $options[CURLOPT_PUT] = true; + $options[CURLOPT_INFILE] = $this->inFile; + // @todo Update so the data is not loaded into memory to get its size + $options[CURLOPT_INFILESIZE] = strlen(stream_get_contents($this->inFile)); + fseek($this->inFile, 0); + $this->inFile = null; + } + + // Set the cURL options at once + curl_setopt_array($handle, $options); + // Execute, get any error and close + $response = curl_exec($handle); + $error = curl_error($handle); + $getinfo = curl_getinfo($handle); + + curl_close($handle); + + //Check if a cURL error has occured + if ($response === false) { + throw new Dropbox_CurlException($error); + } else { + // Parse the response if it is a string + if (is_string($response)) { + $response = $this->parse($response); + } + + // Set the last response + $this->lastResponse = $response; + + $code = (!empty($response['code'])) ? $response['code'] : $getinfo['http_code']; + + // The API doesn't return an error message for the 304 status code... + // 304's are only returned when the path supplied during metadata calls has not been modified + if ($code == 304) { + $response['body'] = new stdClass; + $response['body']->error = 'The folder contents have not changed'; + } + + // Check if an error occurred and throw an Exception + if (!empty($response['body']->error)) { + // Dropbox returns error messages inconsistently... + if ($response['body']->error instanceof stdClass) { + $array = array_values((array) $response['body']->error); + $message = $array[0]; + } else { + $message = $response['body']->error; + } + + // Throw an Exception with the appropriate with the appropriate message and code + switch ($code) { + case 304: + throw new Dropbox_NotModifiedException($message, 304); + case 400: + throw new Dropbox_BadRequestException($message, 400); + case 404: + throw new Dropbox_NotFoundException($message, 404); + case 406: + throw new Dropbox_NotAcceptableException($message, 406); + case 415: + throw new Dropbox_UnsupportedMediaTypeException($message, 415); + case 401: + //401 means oauth token is expired continue to manually handle the exception depending on the situation + continue; + default: + throw new Dropbox_Exception($message, $code); + } + } + + return $response; + } + } + + /** + * Parse a cURL response + * @param string $response + * @return array + */ + private function parse($response) + { + // Explode the response into headers and body parts (separated by double EOL) + list($headers, $response) = explode("\r\n\r\n", $response, 2); + + // Explode response headers + $lines = explode("\r\n", $headers); + + // If the status code is 100, the API server must send a final response + // We need to explode the response again to get the actual response + if (preg_match('#^HTTP/1.1 100#i', $lines[0])) { + list($headers, $response) = explode("\r\n\r\n", $response, 2); + $lines = explode("\r\n", $headers); + } + + // Get the HTTP response code from the first line + $first = array_shift($lines); + $pattern = '#^HTTP/1.1 ([0-9]{3})#i'; + preg_match($pattern, $first, $matches); + $code = $matches[1]; + + // Parse the remaining headers into an associative array + $headers = array(); + foreach ($lines as $line) { + list($k, $v) = explode(': ', $line, 2); + $headers[strtolower($k)] = $v; + } + + // If the response body is not a JSON encoded string + // we'll return the entire response body + if (!$body = json_decode($response)) { + $body = $response; + } + + if (is_string($body)) { + $body_lines = explode("\r\n", $body); + if (preg_match('#^HTTP/1.1 100#i', $body_lines[0]) && preg_match('#^HTTP/1.#i', $body_lines[2])) { + return $this->parse($body); + } + } + + return array('code' => $code, 'body' => $body, 'headers' => $headers); + } + + /** + * Return the response for the last API request + * @return mixed + */ + public function getlastResponse() + { + return $this->lastResponse; + } +} diff --git a/plugins/updraftplus/includes/Dropbox/OAuth/Consumer/WordPress.php b/plugins/updraftplus/includes/Dropbox/OAuth/Consumer/WordPress.php new file mode 100644 index 0000000..a4eedc0 --- /dev/null +++ b/plugins/updraftplus/includes/Dropbox/OAuth/Consumer/WordPress.php @@ -0,0 +1,80 @@ + +* @link https://github.com/DavidAnderson684/Dropbox +* @package Dropbox\OAuth +* @subpackage Consumer +*/ + +class Dropbox_ConsumerWordPress extends Dropbox_ConsumerAbstract +{ + + /** + * Set properties and begin authentication + * @param string $key + * @param string $secret + * @param \Dropbox\OAuth\Consumer\StorageInterface $storage + * @param string $callback + */ + public function __construct($key, $secret, Dropbox_StorageInterface $storage, $callback = null) + { + // Check we are in a WordPress environment + if (!defined('ABSPATH')) { + throw new Dropbox_Exception('The WordPress OAuth consumer requires a WordPress environment'); + } + + $this->consumerKey = $key; + $this->consumerSecret = $secret; + $this->storage = $storage; + $this->callback = $callback; + $this->authenticate(); + } + + /** + * Execute an API call + * @param string $method The HTTP method + * @param string $url The API endpoint + * @param string $call The API method to call + * @param array $additional Additional parameters + * @return array + */ + public function fetch($method, $url, $call, array $additional = array()) + { + // Get the signed request URL + $request = $this->getSignedRequest($method, $url, $call, $additional); + if ($method == 'GET') { + $args = array ( ); + $response = wp_remote_get($request['url'], $args); + $this->outFile = null; + } elseif ($method == 'POST') { + $args = array( 'body' => $request['postfields'] ); + $response = wp_remote_post($request['url'], $args ); + } elseif ($method == 'PUT' && $this->inFile) { + return new WP_Error('unsupported', "WordPress does not have a native HTTP PUT function"); + } + + // If the response body is not a JSON encoded string + // we'll return the entire response body + // Important to do this first, as the next section relies on the decoding having taken place + if (!$body = json_decode(wp_remote_retrieve_body($response))) { + $body = wp_remote_retrieve_body($response); + } + + // Check if an error occurred and throw an Exception. This is part of the authentication process - don't modify. + if (!empty($body->error)) { + $message = $body->error . ' (Status Code: ' . wp_remote_retrieve_response_code($response) . ')'; + throw new Dropbox_Exception($message); + } + + if (is_wp_error($response)) { + $message = $response->get_error_message(); + throw new Dropbox_Exception($message); + } + + $results = array ( 'body' => $body, 'code' => wp_remote_retrieve_response_code($response), 'headers' => $response['headers'] ); + return $results; + } + +} diff --git a/plugins/updraftplus/includes/Dropbox/OAuth/Storage/Encrypter.php b/plugins/updraftplus/includes/Dropbox/OAuth/Storage/Encrypter.php new file mode 100644 index 0000000..81ae160 --- /dev/null +++ b/plugins/updraftplus/includes/Dropbox/OAuth/Storage/Encrypter.php @@ -0,0 +1,109 @@ + + * @link https://github.com/benthedesigner/dropbox + * @package Dropbox\Oauth + * @subpackage Storage + */ + +/* UpdraftPlus notes +Using this was fairly pointless (it encrypts storage credentials at rest). But, it's implemented now, so needs supporting. +Investigation shows that mcrypt and phpseclib native encryption using different padding schemes. +As a result, that which is encrypted by phpseclib native can be decrypted by mcrypt, but not vice-versa. Each can (as you'd expect) decrypt the results of their own encryption. +As a consequence, it makes sense to always encrypt with phpseclib native, and prefer decrypting with with mcrypt if it is available and otherwise fall back to phpseclib. +We could deliberately re-encrypt all loaded information with phpseclib native, but there seems little need for that yet. There can only be a problem if mcrypt is disabled - which pre-July-2015 meant that Dropbox wouldn't work at all. Now, it will force a re-authorisation. +*/ + +class Dropbox_Encrypter +{ + // Encryption settings - default settings yield encryption to AES (256-bit) standard + // @todo Provide PHPDOC for each class constant + const KEY_SIZE = 32; + const IV_SIZE = 16; + + /** + * Encryption key + * @var null|string + */ + private $key = null; + + /** + * Check Mcrypt is loaded and set the encryption key + * @param string $key + * @return void + */ + public function __construct($key) + { + if (preg_match('/^[A-Za-z0-9]+$/', $key) && $length = strlen($key) === self::KEY_SIZE) { + # Short-cut so that the mbstring extension is not required + $this->key = $key; + } elseif (($length = mb_strlen($key, '8bit')) !== self::KEY_SIZE) { + throw new Dropbox_Exception('Expecting a ' . self::KEY_SIZE . ' byte key, got ' . $length); + } else { + // Set the encryption key + $this->key = $key; + } + } + + /** + * Encrypt the OAuth token + * @param \stdClass $token Serialized token object + * @return string + */ + public function encrypt($token) + { + + // Encryption: we always use phpseclib for this + + global $updraftplus; + $updraftplus->ensure_phpseclib('Crypt_AES', 'Crypt/AES'); + $updraftplus->ensure_phpseclib('Crypt_Rijndael', 'Crypt/Rijndael'); + + if (!function_exists('crypt_random_string')) require_once(UPDRAFTPLUS_DIR.'/includes/phpseclib/Crypt/Random.php'); + + $iv = crypt_random_string(self::IV_SIZE); + + // Defaults to CBC mode + $rijndael = new Crypt_Rijndael(); + + $rijndael->setKey($this->key); + + $rijndael->setIV($iv); + + $cipherText = $rijndael->encrypt($token); + + return base64_encode($iv . $cipherText); + } + + /** + * Decrypt the ciphertext + * @param string $cipherText + * @return object \stdClass Unserialized token + */ + public function decrypt($cipherText) + { + + // Decryption: prefer mcrypt, if available (since it can decrypt data encrypted by either mcrypt or phpseclib) + + $cipherText = base64_decode($cipherText); + $iv = substr($cipherText, 0, self::IV_SIZE); + $cipherText = substr($cipherText, self::IV_SIZE); + + if (function_exists('mcrypt_decrypt')) { + $token = @mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $this->key, $cipherText, MCRYPT_MODE_CBC, $iv); + } else { + global $updraftplus; + $updraftplus->ensure_phpseclib('Crypt_Rijndael', 'Crypt/Rijndael'); + + $rijndael = new Crypt_Rijndael(); + $rijndael->setKey($this->key); + $rijndael->setIV($iv); + $token = $rijndael->decrypt($cipherText); + } + + return $token; + } +} diff --git a/plugins/updraftplus/includes/Dropbox/OAuth/Storage/StorageInterface.php b/plugins/updraftplus/includes/Dropbox/OAuth/Storage/StorageInterface.php new file mode 100644 index 0000000..4710ea0 --- /dev/null +++ b/plugins/updraftplus/includes/Dropbox/OAuth/Storage/StorageInterface.php @@ -0,0 +1,30 @@ + + * @link https://github.com/benthedesigner/dropbox + * @package Dropbox\OAuth + * @subpackage Storage + */ + +interface Dropbox_StorageInterface +{ + /** + * Get a token by type + * @param string $type Token type to retrieve + */ + public function get($type); + + /** + * Set a token by type + * @param \stdClass $token Token object to set + * @param string $type Token type + */ + public function set($token, $type); + + /** + * Delete tokens for the current session/user + */ + public function delete(); +} diff --git a/plugins/updraftplus/includes/Dropbox/OAuth/Storage/WordPress.php b/plugins/updraftplus/includes/Dropbox/OAuth/Storage/WordPress.php new file mode 100644 index 0000000..ec353ab --- /dev/null +++ b/plugins/updraftplus/includes/Dropbox/OAuth/Storage/WordPress.php @@ -0,0 +1,184 @@ + + * @link http://wordshell.net + * @package Dropbox\Oauth + * @subpackage Storage + */ + +class Dropbox_WordPress implements Dropbox_StorageInterface +{ + /** + * Option name + * @var string + */ + protected $option_name_prefix = 'dropbox_token'; + + /** + * Option name (array storage) + * @var string + */ + protected $option_array = ''; + + /** + * Encyption object + * @var Encrypter|null + */ + protected $encrypter = null; + + /** + * Check if an instance of the encrypter is passed, set the encryption object + * @return void + */ + public function __construct(Dropbox_Encrypter $encrypter = null, $option_name_prefix = 'dropbox_token', $option_array = 'dropbox') + { + if ($encrypter instanceof Dropbox_Encrypter) { + $this->encrypter = $encrypter; + } + + $this->option_name_prefix = $option_name_prefix; + $this->option_array = $option_array; + + } + + /** + * Get an entry from the Dropbox options in the database + * If the encryption object is set then decrypt the token before returning + * @param string $type is the key to retrieve + * @return array|bool + */ + public function get($type) + { + if ($type != 'request_token' && $type != 'access_token' && $type != 'appkey' && $type != 'CSRF' && $type != 'code') { + throw new Dropbox_Exception("Expected a type of either 'request_token', 'access_token', 'CSRF' or 'code', got '$type'"); + } else { + if (false !== ($opts = UpdraftPlus_Options::get_updraft_option($this->option_array))) { + if ($type == 'request_token' || $type == 'access_token'){ + if (!empty($opts[$this->option_name_prefix.$type])) { + $gettoken = $opts[$this->option_name_prefix.$type]; + $token = $this->decrypt($gettoken); + return $token; + } + } else { + if (!empty($opts[$type])) { + return $opts[$type]; + } + } + } + return false; + } + } + + /** + * Set a value in the database by type + * If the value is a token and the encryption object is set then encrypt the token before storing + * @param \stdClass Token object to set + * @param string $type Token type + * @return void + */ + public function set($token, $type) + { + if ($type != 'request_token' && $type != 'access_token' && $type != 'upgraded' && $type != 'CSRF' && $type != 'code') { + throw new Dropbox_Exception("Expected a type of either 'request_token', 'access_token', 'CSRF', 'upgraded' or 'code', got '$type'"); + } else { + + $opts = UpdraftPlus_Options::get_updraft_option($this->option_array); + + if ($type == 'access_token'){ + $token = $this->encrypt($token); + $opts[$this->option_name_prefix.$type] = $token; + } else if ($type == 'request_token' ) { + $opts[$this->option_name_prefix.$type] = $token; + } else { + $opts[$type] = $token; + } + UpdraftPlus_Options::update_updraft_option($this->option_array, $opts); + } + } + + /** + * Remove a value in the database by type rather than setting to null / empty + * set the value to null here so that when it gets to the options filter it will + * unset the value there, this avoids a bug where if the value is not set then + * the option filter will take the value from the database and save that version back. + * + * N.B. Before PHP 7.0, you can't call a method name unset() + * + * @param string $type Token type + * @return void + */ + public function do_unset($type) + { + if ($type != 'request_token' && $type != 'access_token' && $type != 'upgraded' && $type != 'CSRF' && $type != 'code') { + throw new Dropbox_Exception("Expected a type of either 'request_token', 'access_token', 'CSRF', 'upgraded' or 'code', got '$type'"); + } else { + + $opts = UpdraftPlus_Options::get_updraft_option($this->option_array); + + if ($type == 'access_token' || $type == 'request_token'){ + $opts[$this->option_name_prefix.$type] = null; + } else { + $opts[$type] = null; + } + UpdraftPlus_Options::update_updraft_option($this->option_array, $opts); + } + } + + /** + * Delete the request and access tokens currently stored in the database + * @return bool + */ + public function delete() + { + $opts = UpdraftPlus_Options::get_updraft_option($this->option_array); + $opts[$this->option_name_prefix.'request_token'] = null; + $opts[$this->option_name_prefix.'access_token'] = null; + unset($opts['ownername']); + unset($opts['upgraded']); + UpdraftPlus_Options::update_updraft_option($this->option_array, $opts); + return true; + } + + /** + * Use the Encrypter to encrypt a token and return it + * If there is not encrypter object, return just the + * serialized token object for storage + * @param stdClass $token OAuth token to encrypt + * @return stdClass|string + */ + protected function encrypt($token) + { + // Serialize the token object + $token = serialize($token); + + // Encrypt the token if there is an Encrypter instance + if ($this->encrypter instanceof Dropbox_Encrypter) { + $token = $this->encrypter->encrypt($token); + } + + // Return the token + return $token; + } + + /** + * Decrypt a token using the Encrypter object and return it + * If there is no Encrypter object, assume the token was stored + * serialized and return the unserialized token object + * @param stdClass $token OAuth token to encrypt + * @return stdClass|string + */ + protected function decrypt($token) + { + // Decrypt the token if there is an Encrypter instance + if ($this->encrypter instanceof Dropbox_Encrypter) { + $token = $this->encrypter->decrypt($token); + } + + // Return the unserialized token + return @unserialize($token); + } +} diff --git a/plugins/updraftplus/includes/Dropbox2/API.php b/plugins/updraftplus/includes/Dropbox2/API.php new file mode 100644 index 0000000..e6dd45d --- /dev/null +++ b/plugins/updraftplus/includes/Dropbox2/API.php @@ -0,0 +1,638 @@ + + * @link https://github.com/benthedesigner/dropbox + * @link https://www.dropbox.com/developers + * @link https://status.dropbox.com Dropbox status + * @package Dropbox + */ +class UpdraftPlus_Dropbox_API { + // API Endpoints + const API_URL = 'https://api.dropbox.com/1/'; + const API_URL_V2 = 'https://api.dropboxapi.com/'; + const CONTENT_URL = 'https://api-content.dropbox.com/1/'; + const CONTENT_URL_V2 = 'https://content.dropboxapi.com/2/'; + + /** + * OAuth consumer object + * @var null|OAuth\Consumer + */ + private $OAuth; + + /** + * The root level for file paths + * Either `dropbox` or `sandbox` (preferred) + * @var null|string + */ + private $root; + + /** + * Format of the API response + * @var string + */ + private $responseFormat = 'php'; + + /** + * JSONP callback + * @var string + */ + private $callback = 'dropboxCallback'; + + /** + * Chunk size used for chunked uploads + * @see \Dropbox\API::chunkedUpload() + */ + private $chunkSize = 4194304; + + /** + * Set the OAuth consumer object + * See 'General Notes' at the link below for information on access type + * @link https://www.dropbox.com/developers/reference/api + * @param OAuth\Consumer\ConsumerAbstract $OAuth + * @param string $root Dropbox app access type + */ + public function __construct(Dropbox_ConsumerAbstract $OAuth, $root = 'sandbox') { + $this->OAuth = $OAuth; + $this->setRoot($root); + } + + /** + * Set the root level + * @param mixed $root + * @throws Exception + * @return void + */ + public function setRoot($root) { + if ($root !== 'sandbox' && $root !== 'dropbox') { + throw new Exception("Expected a root of either 'dropbox' or 'sandbox', got '$root'"); + } else { + $this->root = $root; + } + } + + /** + * Retrieves information about the user's account + * @return object stdClass + */ + public function accountInfo() { + $call = '2/users/get_current_account'; + $params = array('api_v2' => true); + $response = $this->fetch('POST', self::API_URL_V2, $call, $params); + return $response; + } + + /** + * Retrieves information about the user's quota + * @return object stdClass + */ + public function quotaInfo() { + $call = '2/users/get_space_usage'; + $params = array('api_v2' => true); + $response = $this->fetch('POST', self::API_URL_V2, $call, $params); + return $response; + } + + /** + * Not used + * Uploads a physical file from disk + * Dropbox impose a 150MB limit to files uploaded via the API. If the file + * exceeds this limit or does not exist, an Exception will be thrown + * @param string $file Absolute path to the file to be uploaded + * @param string|bool $filename The destination filename of the uploaded file + * @param string $path Path to upload the file to, relative to root + * @param boolean $overwrite Should the file be overwritten? (Default: true) + * @return object stdClass + */ + // public function putFile($file, $filename = false, $path = '', $overwrite = true) + // { + // if (file_exists($file)) { + // if (filesize($file) <= 157286400) { + // $call = 'files/' . $this->root . '/' . $this->encodePath($path); + // // If no filename is provided we'll use the original filename + // $filename = (is_string($filename)) ? $filename : basename($file); + // $params = array( + // 'filename' => $filename, + // 'file' => '@' . str_replace('\\', '/', $file) . ';filename=' . $filename, + // 'overwrite' => (int) $overwrite, + // ); + // $response = $this->fetch('POST', self::CONTENT_URL, $call, $params); + // return $response; + // } + // throw new Exception('File exceeds 150MB upload limit'); + // } + + // // Throw an Exception if the file does not exist + // throw new Exception('Local file ' . $file . ' does not exist'); + // } + + /** + * Not used + * Uploads file data from a stream + * Note: This function is experimental and requires further testing + * @todo Add filesize check + * @param resource $stream A readable stream created using fopen() + * @param string $filename The destination filename, including path + * @param boolean $overwrite Should the file be overwritten? (Default: true) + * @return array + */ + // public function putStream($stream, $filename, $overwrite = true) + // { + // $this->OAuth->setInFile($stream); + // $path = $this->encodePath($filename); + // $call = 'files_put/' . $this->root . '/' . $path; + // $params = array('overwrite' => (int) $overwrite); + // $response = $this->fetch('PUT', self::CONTENT_URL, $call, $params); + // return $response; + // } + + /** + * Uploads large files to Dropbox in mulitple chunks + * @param string $file Absolute path to the file to be uploaded + * @param string|bool $filename The destination filename of the uploaded file + * @param string $path Path to upload the file to, relative to root + * @param boolean $overwrite Should the file be overwritten? (Default: true) + * @param integer $offset position to seek to when opening the file + * @param string $uploadID existing upload_id to resume an upload + * @param string|array function to call back to upon each chunk + * @return stdClass + */ + public function chunkedUpload($file, $filename = false, $path = '', $overwrite = true, $offset = 0, $uploadID = null, $callback = null) { + + if (file_exists($file)) { + if ($handle = @fopen($file, 'r')) { + // Set initial upload ID and offset + if ($offset > 0) { + fseek($handle, $offset); + } + + /* + Set firstCommit to true so that the upload session start endpoint is called. + */ + $firstCommit = true; + + // Read from the file handle until EOF, uploading each chunk + while ($data = fread($handle, $this->chunkSize)) { + + // Set the file, request parameters and send the request + $this->OAuth->setInFile($data); + + if ($firstCommit) { + $params = array('close' => false, 'api_v2' => true, 'content_upload' => true); + $response = $this->fetch('POST', self::CONTENT_URL_V2, 'files/upload_session/start', $params); + $firstCommit = false; + } else { + $params = array('cursor' => array('session_id' => $uploadID, 'offset' => $offset), 'api_v2' => true, 'content_upload' => true); + $response = $this->append_upload($params, false); + } + + // On subsequent chunks, use the upload ID returned by the previous request + if (isset($response['body']->session_id)) { + $uploadID = $response['body']->session_id; + } + + /* + API v2 no longer returns the offset, we need to manually work this out. So check that there are no errors and update the offset as well as calling the callback method. + */ + if (!isset($response['body']->error)) { + $offset = ftell($handle); + if ($callback) { + call_user_func($callback, $offset, $uploadID, $file); + } + $this->OAuth->setInFile(null); + } + } + + // Complete the chunked upload + $filename = (is_string($filename)) ? $filename : basename($file); + $params = array('cursor' => array('session_id' => $uploadID, 'offset' => $offset), 'commit' => array('path' => '/' . $this->encodePath($path . $filename), 'mode' => 'add'), 'api_v2' => true, 'content_upload' => true); + $response = $this->append_upload($params, true); + return $response; + } else { + throw new Exception('Could not open ' . $file . ' for reading'); + } + } + + // Throw an Exception if the file does not exist + throw new Exception('Local file ' . $file . ' does not exist'); + } + + private function append_upload($params, $last_call) { + try { + if ($last_call){ + $response = $this->fetch('POST', self::CONTENT_URL_V2, 'files/upload_session/finish', $params); + } else { + $response = $this->fetch('POST', self::CONTENT_URL_V2, 'files/upload_session/append_v2', $params); + } + } catch (Exception $e) { + $responseCheck = json_decode($e->getMessage()); + if (isset($responseCheck) && strpos($responseCheck[0] , 'incorrect_offset') !== false) { + $params['cursor']['offset'] = $responseCheck[1]; + $response = $this->append_upload($params, $last_call); + } else { + throw $e; + } + } + return $response; + } + + /** + * Downloads a file + * Returns the base filename, raw file data and mime type returned by Fileinfo + * @param string $file Path to file, relative to root, including path + * @param string $outFile Filename to write the downloaded file to + * @param string $revision The revision of the file to retrieve + * @param boolean $allow_resume - append to the file if it already exists + * @return array + */ + public function getFile($file, $outFile = false, $revision = null, $allow_resume = false) { + // Only allow php response format for this call + if ($this->responseFormat !== 'php') { + throw new Exception('This method only supports the `php` response format'); + } + + $handle = null; + if ($outFile !== false) { + // Create a file handle if $outFile is specified + if ($allow_resume && file_exists($outFile)) { + if (!$handle = fopen($outFile, 'a')) { + throw new Exception("Unable to open file handle for $outFile"); + } else { + $this->OAuth->setOutFile($handle); + $params['headers'] = array('Range: bytes='.filesize($outFile).'-'); + } + } + elseif (!$handle = fopen($outFile, 'w')) { + throw new Exception("Unable to open file handle for $outFile"); + } else { + $this->OAuth->setOutFile($handle); + } + } + + $file = $this->encodePath($file); + $call = 'files/download'; + $params = array('path' => '/' . $file, 'api_v2' => true, 'content_download' => true); + $response = $this->fetch('POST', self::CONTENT_URL_V2, $call, $params); + + // Close the file handle if one was opened + if ($handle) fclose($handle); + + return array( + 'name' => ($outFile) ? $outFile : basename($file), + 'mime' => $this->getMimeType(($outFile) ? $outFile : $response['body'], $outFile), + 'meta' => json_decode($response['headers']['dropbox-api-result']), + 'data' => $response['body'], + ); + } + + /** + * Not used + * Retrieves file and folder metadata + * @param string $path The path to the file/folder, relative to root + * @param string $rev Return metadata for a specific revision (Default: latest rev) + * @param int $limit Maximum number of listings to return + * @param string $hash Metadata hash to compare against + * @param bool $list Return contents field with response + * @param bool $deleted Include files/folders that have been deleted + * @return object stdClass + */ + // public function metaData($path = null, $rev = null, $limit = 10000, $hash = false, $list = true, $deleted = false) + // { + // $call = 'metadata/' . $this->root . '/' . $this->encodePath($path); + // $params = array( + // 'file_limit' => ($limit < 1) ? 1 : (($limit > 10000) ? 10000 : (int) $limit), + // 'hash' => (is_string($hash)) ? $hash : 0, + // 'list' => (int) $list, + // 'include_deleted' => (int) $deleted, + // 'rev' => (is_string($rev)) ? $rev : null, + // ); + // $response = $this->fetch('POST', self::API_URL, $call, $params); + // return $response; + // } + + /** + * Not used + * Return "delta entries", intructing you how to update + * your application state to match the server's state + * Important: This method does not make changes to the application state + * @param null|string $cursor Used to keep track of your current state + * @return array Array of delta entries + */ + // public function delta($cursor = null) + // { + // $call = 'delta'; + // $params = array('cursor' => $cursor); + // $response = $this->fetch('POST', self::API_URL, $call, $params); + // return $response; + // } + + /** + * Not used + * Obtains metadata for the previous revisions of a file + * @param string Path to the file, relative to root + * @param integer Number of revisions to return (1-1000) + * @return array + */ + // public function revisions($file, $limit = 10) + // { + // $call = 'revisions/' . $this->root . '/' . $this->encodePath($file); + // $params = array( + // 'rev_limit' => ($limit < 1) ? 1 : (($limit > 1000) ? 1000 : (int) $limit), + // ); + // $response = $this->fetch('GET', self::API_URL, $call, $params); + // return $response; + // } + + /** + * Not used + * Restores a file path to a previous revision + * @param string $file Path to the file, relative to root + * @param string $revision The revision of the file to restore + * @return object stdClass + */ + // public function restore($file, $revision) + // { + // $call = 'restore/' . $this->root . '/' . $this->encodePath($file); + // $params = array('rev' => $revision); + // $response = $this->fetch('POST', self::API_URL, $call, $params); + // return $response; + // } + + /** + * Returns metadata for all files and folders that match the search query + * @param mixed $query The search string. Must be at least 3 characters long + * @param string $path The path to the folder you want to search in + * @param integer $limit Maximum number of results to return (1-1000) + * @return array + */ + public function search($query, $path = '', $limit = 1000) { + $call = '2/files/search'; + $path = $this->encodePath($path); + // APIv2 requires that the path match this regex: String(pattern="(/(.|[\r\n])*)?|(ns:[0-9]+(/.*)?)") + if ($path && '/' != substr($path, 0, 1)) $path = "/$path"; + $params = array( + 'path' => $path, + 'query' => $query, + 'max_results' => ($limit < 1) ? 1 : (($limit > 1000) ? 1000 : (int) $limit), + 'api_v2' => true, + ); + $response = $this->fetch('POST', self::API_URL_V2, $call, $params); + return $response; + } + + /** + * Not used + * Creates and returns a shareable link to files or folders + * The link returned is for a preview page from which the user an choose to + * download the file if they wish. For direct download links, see media(). + * @param string $path The path to the file/folder you want a sharable link to + * @return object stdClass + */ + // public function shares($path, $shortUrl = true) + // { + // $call = 'shares/' . $this->root . '/' .$this->encodePath($path); + // $params = array('short_url' => ($shortUrl) ? 1 : 0); + // $response = $this->fetch('POST', self::API_URL, $call, $params); + // return $response; + // } + + /** + * Not used + * Returns a link directly to a file + * @param string $path The path to the media file you want a direct link to + * @return object stdClass + */ + // public function media($path) + // { + // $call = 'media/' . $this->root . '/' . $this->encodePath($path); + // $response = $this->fetch('POST', self::API_URL, $call); + // return $response; + // } + + /** + * Not used + * Gets a thumbnail for an image + * @param string $file The path to the image you wish to thumbnail + * @param string $format The thumbnail format, either JPEG or PNG + * @param string $size The size of the thumbnail + * @return array + */ + // public function thumbnails($file, $format = 'JPEG', $size = 'small') + // { + // // Only allow php response format for this call + // if ($this->responseFormat !== 'php') { + // throw new Exception('This method only supports the `php` response format'); + // } + + // $format = strtoupper($format); + // // If $format is not 'PNG', default to 'JPEG' + // if ($format != 'PNG') $format = 'JPEG'; + + // $size = strtolower($size); + // $sizes = array('s', 'm', 'l', 'xl', 'small', 'medium', 'large'); + // // If $size is not valid, default to 'small' + // if (!in_array($size, $sizes)) $size = 'small'; + + // $call = 'thumbnails/' . $this->root . '/' . $this->encodePath($file); + // $params = array('format' => $format, 'size' => $size); + // $response = $this->fetch('GET', self::CONTENT_URL, $call, $params); + + // return array( + // 'name' => basename($file), + // 'mime' => $this->getMimeType($response['body']), + // 'meta' => json_decode($response['headers']['x-dropbox-metadata']), + // 'data' => $response['body'], + // ); + // } + + /** + * Not used + * THIS IS NOT AVAILABLE IN V2. + * Creates and returns a copy_ref to a file + * This reference string can be used to copy that file to another user's + * Dropbox by passing it in as the from_copy_ref parameter on /fileops/copy + * @param $path File for which ref should be created, relative to root + * @return array + */ + // public function copyRef($path) + // { + // $call = 'copy_ref/' . $this->root . '/' . $this->encodePath($path); + // $response = $this->fetch('GET', self::API_URL, $call); + // return $response; + // } + + /** + * Not used + * Copies a file or folder to a new location + * @param string $from File or folder to be copied, relative to root + * @param string $to Destination path, relative to root + * @param null|string $fromCopyRef Must be used instead of the from_path + * @return object stdClass + */ + // public function copy($from, $to, $fromCopyRef = null) + // { + // $call = 'fileops/copy'; + // $params = array( + // 'root' => $this->root, + // 'from_path' => $this->normalisePath($from), + // 'to_path' => $this->normalisePath($to), + // ); + + // if ($fromCopyRef) { + // $params['from_path'] = null; + // $params['from_copy_ref'] = $fromCopyRef; + // } + + // $response = $this->fetch('POST', self::API_URL, $call, $params); + // return $response; + // } + + /** + * Not used + * Creates a folder + * @param string New folder to create relative to root + * @return object stdClass + */ + // public function create($path) + // { + // $call = 'fileops/create_folder'; + // $params = array('root' => $this->root, 'path' => $this->normalisePath($path)); + // $response = $this->fetch('POST', self::API_URL, $call, $params); + // return $response; + // } + + /** + * Deletes a file or folder + * @param string $path The path to the file or folder to be deleted + * @return object stdClass + */ + public function delete($path) { + $call = '2/files/delete'; + $params = array('path' => '/' . $this->normalisePath($path), 'api_v2' => true); + $response = $this->fetch('POST', self::API_URL_V2, $call, $params); + return $response; + } + + /** + * Not used + * Moves a file or folder to a new location + * @param string $from File or folder to be moved, relative to root + * @param string $to Destination path, relative to root + * @return object stdClass + */ + // public function move($from, $to) + // { + // $call = 'fileops/move'; + // $params = array( + // 'root' => $this->root, + // 'from_path' => $this->normalisePath($from), + // 'to_path' => $this->normalisePath($to), + // ); + // $response = $this->fetch('POST', self::API_URL, $call, $params); + // return $response; + // } + + /** + * Intermediate fetch function + * @param string $method The HTTP method + * @param string $url The API endpoint + * @param string $call The API method to call + * @param array $params Additional parameters + * @return mixed + */ + private function fetch($method, $url, $call, array $params = array()) { + // Make the API call via the consumer + $response = $this->OAuth->fetch($method, $url, $call, $params); + + // Format the response and return + switch ($this->responseFormat) { + case 'json': + return json_encode($response); + case 'jsonp': + $response = json_encode($response); + return $this->callback . '(' . $response . ')'; + default: + return $response; + } + } + + /** + * Set the API response format + * @param string $format One of php, json or jsonp + * @return void + */ + public function setResponseFormat($format) { + $format = strtolower($format); + if (!in_array($format, array('php', 'json', 'jsonp'))) { + throw new Exception("Expected a format of php, json or jsonp, got '$format'"); + } else { + $this->responseFormat = $format; + } + } + + /** + * Set the chunk size for chunked uploads + * If $chunkSize is empty, set to 4194304 bytes (4 MB) + * @see \Dropbox\API\chunkedUpload() + */ + public function setChunkSize($chunkSize = 4194304) { + if (!is_int($chunkSize)) { + throw new Exception('Expecting chunk size to be an integer, got ' . gettype($chunkSize)); + } elseif ($chunkSize > 157286400) { + throw new Exception('Chunk size must not exceed 157286400 bytes, got ' . $chunkSize); + } else { + $this->chunkSize = $chunkSize; + } + } + + /** + * Set the JSONP callback function + * @param string $function + * @return void + */ + public function setCallback($function) { + $this->callback = $function; + } + + /** + * Get the mime type of downloaded file + * If the Fileinfo extension is not loaded, return false + * @param string $data File contents as a string or filename + * @param string $isFilename Is $data a filename? + * @return boolean|string Mime type and encoding of the file + */ + private function getMimeType($data, $isFilename = false) { + if (extension_loaded('fileinfo')) { + $finfo = new finfo(FILEINFO_MIME); + if ($isFilename !== false) { + return $finfo->file($data); + } + return $finfo->buffer($data); + } + return false; + } + + /** + * Trim the path of forward slashes and replace + * consecutive forward slashes with a single slash + * @param string $path The path to normalise + * @return string + */ + private function normalisePath($path) { + $path = preg_replace('#/+#', '/', trim($path, '/')); + return $path; + } + + /** + * Encode the path, then replace encoded slashes + * with literal forward slash characters + * @param string $path The path to encode + * @return string + */ + private function encodePath($path) { + $path = $this->normalisePath($path); + $path = str_replace('%2F', '/', rawurlencode($path)); + return $path; + } +} diff --git a/plugins/updraftplus/includes/Dropbox2/Exception.php b/plugins/updraftplus/includes/Dropbox2/Exception.php new file mode 100644 index 0000000..958fb0f --- /dev/null +++ b/plugins/updraftplus/includes/Dropbox2/Exception.php @@ -0,0 +1,28 @@ + + * @link https://github.com/benthedesigner/dropbox + * @package Dropbox + */ +class Dropbox_Exception extends Exception { +} + +class Dropbox_BadRequestException extends Exception { +} + +class Dropbox_CurlException extends Exception { +} + +class Dropbox_NotAcceptableException extends Exception { +} + +class Dropbox_NotFoundException extends Exception { +} + +class Dropbox_NotModifiedException extends Exception { +} + +class Dropbox_UnsupportedMediaTypeException extends Exception { +} diff --git a/plugins/updraftplus/includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php b/plugins/updraftplus/includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php new file mode 100644 index 0000000..f5c98d8 --- /dev/null +++ b/plugins/updraftplus/includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php @@ -0,0 +1,467 @@ + +* @link https://github.com/benthedesigner/dropbox +* @package Dropbox\OAuth +* @subpackage Consumer +*/ + +abstract class Dropbox_ConsumerAbstract +{ + // Dropbox web endpoint. v2 API has just dropped the 1/ suffix to the below. + const WEB_URL = 'https://www.dropbox.com/'; + + // OAuth flow methods + const AUTHORISE_METHOD = 'oauth2/authorize'; + // Beware - the documentation in one place says oauth2/token/revoke, but that appears to be wrong + const DEAUTHORISE_METHOD = '2/auth/token/revoke'; + const ACCESS_TOKEN_METHOD = 'oauth2/token'; + // The next endpoint only exists with APIv1 + const OAUTH_UPGRADE = 'oauth2/token_from_oauth1'; + + /** + * Signature method, either PLAINTEXT or HMAC-SHA1 + * @var string + */ + private $sigMethod = 'PLAINTEXT'; + + /** + * Output file handle + * @var null|resource + */ + protected $outFile = null; + + /** + * Input file handle + * @var null|resource + */ + protected $inFile = null; + + /** + * Authenticate using 3-legged OAuth flow, firstly + * checking we don't already have tokens to use + * @return void + */ + protected function authenticate() + { + global $updraftplus; + + $access_token = $this->storage->get('access_token'); + //Check if the new token type is set if not they need to be upgraded to OAuth2 + if (!empty($access_token) && isset($access_token->oauth_token) && !isset($access_token->token_type)) { + $updraftplus->log('OAuth v1 token found: upgrading to v2'); + $this->upgradeOAuth(); + $updraftplus->log('OAuth token upgrade successful'); + } + + if (empty($access_token) || !isset($access_token->oauth_token)) { + try { + $this->getAccessToken(); + } catch(Exception $e) { + $excep_class = get_class($e); + // 04-Sep-2015 - Dropbox started throwing a 400, which caused a Dropbox_BadRequestException which previously wasn't being caught + if ('Dropbox_BadRequestException' == $excep_class || 'Dropbox_Exception' == $excep_class) { + global $updraftplus; + $updraftplus->log($e->getMessage().' - need to reauthenticate this site with Dropbox (if this fails, then you can also try wiping your settings from the Expert Settings section)'); + //$this->getRequestToken(); + $this->authorise(); + } else { + throw $e; + } + } + } + } + + /** + * Upgrade the user's OAuth1 token to a OAuth2 token + * @return void + */ + private function upgradeOAuth() + { + // N.B. This call only exists under API v1 - i.e. there is no APIv2 equivalent. Hence the APIv1 endpoint (API_URL) is used, and not the v2 (API_URL_V2) + $url = UpdraftPlus_Dropbox_API::API_URL . self::OAUTH_UPGRADE; + $response = $this->fetch('POST', $url, ''); + $token = new stdClass(); + /* + oauth token secret and oauth token were needed by oauth1 + these are replaced in oauth2 with an access token + currently they are still there just in case a method somewhere is expecting them to both be set + as far as I can tell only the oauth token is used + after more testing token secret can be removed. + */ + + $token->oauth_token_secret = $response['body']->access_token; + $token->oauth_token = $response['body']->access_token; + $token->token_type = $response['body']->token_type; + $this->storage->set($token, 'access_token'); + $this->storage->set('true','upgraded'); + $this->storage->do_unset('request_token'); + } + + /** + * Obtain user authorisation + * The user will be redirected to Dropbox' web endpoint + * @link http://tools.ietf.org/html/rfc5849#section-2.2 + * @return void + */ + private function authorise() + { + // Only redirect if not using CLI + if (PHP_SAPI !== 'cli' && (!defined('DOING_CRON') || !DOING_CRON) && (!defined('DOING_AJAX') || !DOING_AJAX)) { + $url = $this->getAuthoriseUrl(); + if (!headers_sent()) { + header('Location: ' . $url); + exit; + } else { + throw new Dropbox_Exception(sprintf(__('The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help).', 'updraftplus'), 'Dropbox')); + } + ?>log('Dropbox reauthorisation needed; but we are running from cron, AJAX or the CLI, so this is not possible'); + $this->storage->do_unset('access_token'); + throw new Dropbox_Exception(sprintf(__('You need to re-authenticate with %s, as your existing credentials are not working.', 'updraftplus'), 'Dropbox')); + #$updraftplus->log(sprintf(__('You need to re-authenticate with %s, as your existing credentials are not working.', 'updraftplus'), 'Dropbox'), 'error'); + return false; + } + + /** + * Build the user authorisation URL + * @return string + */ + public function getAuthoriseUrl() + { + /* + Generate a random key to be passed to Dropbox and stored in session to be checked to prevent CSRF + Uses OpenSSL or Mcrypt or defaults to pure PHP implementaion if neither are available. + */ + + global $updraftplus; + if (!function_exists('crypt_random_string')) $updraftplus->ensure_phpseclib('Crypt_Random', 'Crypt/Random'); + + $CSRF = base64_encode(crypt_random_string(16)); + $this->storage->set($CSRF,'CSRF'); + // Prepare request parameters + /* + For OAuth v2 Dropbox needs to use a authorisation url that matches one that is set inside the + Dropbox developer console. In order to check this it needs the client ID for the OAuth v2 app + This will use the default one unless the user is using their own Dropbox App + + For users that use their own Dropbox App there is also no need to provide the callbackhome as + part of the CSRF as there is no need to go to auth.updraftplus.com also the redirect uri can + then be set to the home as default + + Check if the key has dropbox: if so then remove it to stop the request from being invalid + */ + $appkey = $this->storage->get('appkey'); + + if (!empty($appkey) && 'dropbox:' == substr($appkey, 0, 8)) { + $key = substr($appkey, 8); + } else if (!empty($appkey)) { + $key = $appkey; + } + + $params = array( + 'client_id' => empty($key) ? $this->oauth2_id : $key, + 'response_type' => 'code', + 'redirect_uri' => empty($key) ? $this->callback : $this->callbackhome, + 'state' => empty($key) ? $CSRF.$this->callbackhome : $CSRF, + ); + + // Build the URL and redirect the user + $query = '?' . http_build_query($params, '', '&'); + $url = self::WEB_URL . self::AUTHORISE_METHOD . $query; + return $url; + } + + protected function deauthenticate() + { + $url = UpdraftPlus_Dropbox_API::API_URL_V2 . self::DEAUTHORISE_METHOD; + $response = $this->fetch('POST', $url, ''); + $this->storage->delete(); + } + + /** + * Acquire an access token + * Tokens acquired at this point should be stored to + * prevent having to request new tokens for each API call + * @link http://tools.ietf.org/html/rfc5849#section-2.3 + */ + public function getAccessToken() + { + + // If this is non-empty, then we just received a code. It is stored in 'code' - our next job is to put it into the proper place. + $code = $this->storage->get('code'); + /* + Checks to see if the user is using their own Dropbox App if so then they need to get + a request token. If they are using our App then we just need to save these details + */ + if (!empty($code)){ + $appkey = $this->storage->get('appkey'); + if (!empty($appkey)){ + // Get the signed request URL + $url = UpdraftPlus_Dropbox_API::API_URL_V2 . self::ACCESS_TOKEN_METHOD; + $params = array( + 'code' => $code, + 'grant_type' => 'authorization_code', + 'redirect_uri' => $this->callbackhome, + 'client_id' => $this->consumerKey, + 'client_secret' => $this->consumerSecret, + ); + $response = $this->fetch('POST', $url, '' , $params); + + $code = json_decode(json_encode($response['body']),true); + + } else { + $code = base64_decode($code); + $code = json_decode($code, true); + } + + /* + Again oauth token secret and oauth token were needed by oauth1 + these are replaced in oauth2 with an access token + currently they are still there just in case a method somewhere is expecting them to both be set + as far as I can tell only the oauth token is used + after more testing token secret can be removed. + */ + + $token = new stdClass(); + $token->oauth_token_secret = $code['access_token']; + $token->oauth_token = $code['access_token']; + $token->account_id = $code['account_id']; + $token->token_type = $code['token_type']; + $token->uid = $code['uid']; + $this->storage->set($token, 'access_token'); + $this->storage->do_unset('upgraded'); + + //reset code + $this->storage->do_unset('code'); + } else { + throw new Dropbox_BadRequestException("No Dropbox Code found, will try to get one now", 400); + } + } + + /** + * Get the request/access token + * This will return the access/request token depending on + * which stage we are at in the OAuth flow, or a dummy object + * if we have not yet started the authentication process + * @return object stdClass + */ + private function getToken() + { + if (!$token = $this->storage->get('access_token')) { + if (!$token = $this->storage->get('request_token')) { + $token = new stdClass(); + $token->oauth_token = null; + $token->oauth_token_secret = null; + } + } + return $token; + } + + /** + * Generate signed request URL + * See inline comments for description + * @link http://tools.ietf.org/html/rfc5849#section-3.4 + * @param string $method HTTP request method + * @param string $url API endpoint to send the request to + * @param string $call API call to send + * @param array $additional Additional parameters as an associative array + * @return array + */ + protected function getSignedRequest($method, $url, $call, array $additional = array()) + { + // Get the request/access token + $token = $this->getToken(); + + // Prepare the standard request parameters differnt for OAuth1 and OAuth2, we still need OAuth1 to make the request to the upgrade token endpoint + if (isset($token->token_type)) { + $params = array( + 'access_token' => $token->oauth_token, + ); + + /* + To keep this API backwards compatible with the API v1 endpoints all v2 endpoints will also send to this method a api_v2 parameter this will then return just the access token as the signed request is not needed for any calls. + */ + + if (isset($additional['api_v2']) && $additional['api_v2'] == true) { + unset($additional['api_v2']); + if (isset($additional['content_download']) && $additional['content_download'] == true) { + unset($additional['content_download']); + $headers = array( + 'Authorization: Bearer '.$params['access_token'], + 'Content-Type:', + 'Dropbox-API-Arg: '.json_encode($additional), + ); + $additional = ''; + } else if (isset($additional['content_upload']) && $additional['content_upload'] == true) { + unset($additional['content_upload']); + $headers = array( + 'Authorization: Bearer '.$params['access_token'], + 'Content-Type: application/octet-stream', + 'Dropbox-API-Arg: '.json_encode($additional), + ); + $additional = ''; + } else { + $headers = array( + 'Authorization: Bearer '.$params['access_token'], + 'Content-Type: application/json', + ); + } + return array( + 'url' => $url . $call, + 'postfields' => $additional, + 'headers' => $headers, + ); + } + } else { + // Generate a random string for the request + $nonce = md5(microtime(true) . uniqid('', true)); + $params = array( + 'oauth_consumer_key' => $this->consumerKey, + 'oauth_token' => $token->oauth_token, + 'oauth_signature_method' => $this->sigMethod, + 'oauth_version' => '1.0', + // Generate nonce and timestamp if signature method is HMAC-SHA1 + 'oauth_timestamp' => ($this->sigMethod == 'HMAC-SHA1') ? time() : null, + 'oauth_nonce' => ($this->sigMethod == 'HMAC-SHA1') ? $nonce : null, + ); + } + + // Merge with the additional request parameters + $params = array_merge($params, $additional); + ksort($params); + + // URL encode each parameter to RFC3986 for use in the base string + $encoded = array(); + foreach($params as $param => $value) { + if ($value !== null) { + // If the value is a file upload (prefixed with @), replace it with + // the destination filename, the file path will be sent in POSTFIELDS + if (isset($value[0]) && $value[0] === '@') $value = $params['filename']; + # Prevent spurious PHP warning by only doing non-arrays + if (!is_array($value)) $encoded[] = $this->encode($param) . '=' . $this->encode($value); + } else { + unset($params[$param]); + } + } + + // Build the first part of the string + $base = $method . '&' . $this->encode($url . $call) . '&'; + + // Re-encode the encoded parameter string and append to $base + $base .= $this->encode(implode('&', $encoded)); + + // Concatenate the secrets with an ampersand + $key = $this->consumerSecret . '&' . $token->oauth_token_secret; + + // Get the signature string based on signature method + $signature = $this->getSignature($base, $key); + $params['oauth_signature'] = $signature; + + // Build the signed request URL + $query = '?' . http_build_query($params, '', '&'); + + return array( + 'url' => $url . $call . $query, + 'postfields' => $params, + ); + } + + /** + * Generate the oauth_signature for a request + * @param string $base Signature base string, used by HMAC-SHA1 + * @param string $key Concatenated consumer and token secrets + */ + private function getSignature($base, $key) + { + switch ($this->sigMethod) { + case 'PLAINTEXT': + $signature = $key; + break; + case 'HMAC-SHA1': + $signature = base64_encode(hash_hmac('sha1', $base, $key, true)); + break; + } + + return $signature; + } + + /** + * Set the OAuth signature method + * @param string $method Either PLAINTEXT or HMAC-SHA1 + * @return void + */ + public function setSignatureMethod($method) + { + $method = strtoupper($method); + + switch ($method) { + case 'PLAINTEXT': + case 'HMAC-SHA1': + $this->sigMethod = $method; + break; + default: + throw new Dropbox_Exception('Unsupported signature method ' . $method); + } + } + + /** + * Set the output file + * @param resource Resource to stream response data to + * @return void + */ + public function setOutFile($handle) + { + if (!is_resource($handle) || get_resource_type($handle) != 'stream') { + throw new Dropbox_Exception('Outfile must be a stream resource'); + } + $this->outFile = $handle; + } + + /** + * Set the input file + * @param resource Resource to read data from + * @return void + */ + public function setInFile($handle) { + $this->inFile = $handle; + } + + /** + * Parse response parameters for a token into an object + * Dropbox returns tokens in the response parameters, and + * not a JSON encoded object as per other API requests + * @link http://oauth.net/core/1.0/#response_parameters + * @param string $response + * @return object stdClass + */ + private function parseTokenString($response) + { + $parts = explode('&', $response); + $token = new stdClass(); + foreach ($parts as $part) { + list($k, $v) = explode('=', $part, 2); + $k = strtolower($k); + $token->$k = $v; + } + return $token; + } + + /** + * Encode a value to RFC3986 + * This is a convenience method to decode ~ symbols encoded + * by rawurldecode. This will encode all characters except + * the unreserved set, ALPHA, DIGIT, '-', '.', '_', '~' + * @link http://tools.ietf.org/html/rfc5849#section-3.6 + * @param mixed $value + */ + private function encode($value) + { + return str_replace('%7E', '~', rawurlencode($value)); + } +} diff --git a/plugins/updraftplus/includes/Dropbox2/OAuth/Consumer/Curl.php b/plugins/updraftplus/includes/Dropbox2/OAuth/Consumer/Curl.php new file mode 100644 index 0000000..cf628b6 --- /dev/null +++ b/plugins/updraftplus/includes/Dropbox2/OAuth/Consumer/Curl.php @@ -0,0 +1,290 @@ + +* @link https://github.com/benthedesigner/dropbox +* @package Dropbox\OAuth +* @subpackage Consumer +*/ + +class Dropbox_Curl extends Dropbox_ConsumerAbstract +{ + /** + * Default cURL options + * @var array + */ + protected $defaultOptions = array( + CURLOPT_VERBOSE => true, + CURLOPT_HEADER => true, + CURLINFO_HEADER_OUT => false, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_FOLLOWLOCATION => false, + ); + + /** + * Store the last response form the API + * @var mixed + */ + protected $lastResponse = null; + + /** + * Set properties and begin authentication + * @param string $key + * @param string $secret + * @param \Dropbox\OAuth\Consumer\StorageInterface $storage + * @param string $callback + */ + public function __construct($key, $oauth2_id, $secret, Dropbox_StorageInterface $storage, $callback = null, $callbackhome = null, $deauthenticate = false) + { + // Check the cURL extension is loaded + if (!extension_loaded('curl')) { + throw new Dropbox_Exception('The cURL OAuth consumer requires the cURL extension. Please speak to your web hosting provider so that this missing PHP component can be installed.'); + } + + $this->consumerKey = $key; + $this->oauth2_id = $oauth2_id; + $this->consumerSecret = $secret; + $this->storage = $storage; + $this->callback = $callback; + $this->callbackhome = $callbackhome; + + if ($deauthenticate) { + $this->deauthenticate(); + } else { + $this->authenticate(); + } + } + + /** + * Execute an API call + * @todo Improve error handling + * @param string $method The HTTP method + * @param string $url The API endpoint + * @param string $call The API method to call + * @param array $additional Additional parameters + * @return string|object stdClass + */ + public function fetch($method, $url, $call, array $additional = array()) + { + // Get the signed request URL + $request = $this->getSignedRequest($method, $url, $call, $additional); + + // Initialise and execute a cURL request + $handle = curl_init($request['url']); + + // Get the default options array + $options = $this->defaultOptions; + if (!UpdraftPlus_Options::get_updraft_option('updraft_ssl_useservercerts')) { + $options[CURLOPT_CAINFO] = UPDRAFTPLUS_DIR.'/includes/cacert.pem'; + } + if (UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify')) { + $options[CURLOPT_SSL_VERIFYPEER] = false; + } else { + $options[CURLOPT_SSL_VERIFYPEER] = true; + } + + if (!class_exists('WP_HTTP_Proxy')) require_once(ABSPATH.WPINC.'/class-http.php'); + $proxy = new WP_HTTP_Proxy(); + + if ($proxy->is_enabled()) { + # WP_HTTP_Proxy returns empty strings if nothing is set + $user = $proxy->username(); + $pass = $proxy->password(); + $host = $proxy->host(); + $port = (int)$proxy->port(); + if (empty($port)) $port = 8080; + if (!empty($host) && $proxy->send_through_proxy($request['url'])) { + $options[CURLOPT_PROXY] = $host; + $options[CURLOPT_PROXYTYPE] = CURLPROXY_HTTP; + $options[CURLOPT_PROXYPORT] = $port; + if (!empty($user) && !empty($pass)) { + $options[CURLOPT_PROXYAUTH] = CURLAUTH_ANY; + $options[CURLOPT_PROXYUSERPWD] = sprintf('%s:%s', $user, $pass); + } + } + } + + if (isset($request['headers'])) $options[CURLOPT_HTTPHEADER] = $request['headers']; + + /* + Add check to see if it's an API v2 call if so then json encode the contents. This is so that it is backwards compatible with API v1 endpoints. + */ + if (isset($additional['api_v2']) && !empty($request['postfields'])) { + $request['postfields'] = json_encode($request['postfields']); + } + + if ($method == 'GET' && $this->outFile) { // GET + $options[CURLOPT_RETURNTRANSFER] = false; + $options[CURLOPT_HEADER] = false; + $options[CURLOPT_FILE] = $this->outFile; + $options[CURLOPT_BINARYTRANSFER] = true; + $options[CURLOPT_FAILONERROR] = true; + /* + Not sure if this is used, keeping it here for backwards compatibility at the moment. + With API v2 the headers are set in the $request they are set above if they are set. + */ + if (isset($additional['headers'])) $options[CURLOPT_HTTPHEADER] = $additional['headers']; + $this->outFile = null; + } elseif ($method == 'POST' && $this->outFile) { // POST + $options[CURLOPT_POST] = true; + $options[CURLOPT_RETURNTRANSFER] = false; + $options[CURLOPT_HEADER] = false; + $options[CURLOPT_FILE] = $this->outFile; + $options[CURLOPT_BINARYTRANSFER] = true; + $options[CURLOPT_FAILONERROR] = true; + $this->outFile = null; + } elseif ($method == 'POST' && $this->inFile) { // POST + $options[CURLOPT_POST] = true; + $options[CURLOPT_POSTFIELDS] = $this->inFile; + } elseif ($method == 'POST') { // POST + $options[CURLOPT_POST] = true; + $options[CURLOPT_POSTFIELDS] = $request['postfields']; + } elseif ($method == 'PUT' && $this->inFile) { // PUT + $options[CURLOPT_PUT] = true; + $options[CURLOPT_INFILE] = $this->inFile; + // @todo Update so the data is not loaded into memory to get its size + $options[CURLOPT_INFILESIZE] = strlen(stream_get_contents($this->inFile)); + fseek($this->inFile, 0); + $this->inFile = null; + } + + // Set the cURL options at once + curl_setopt_array($handle, $options); + // Execute, get any error and close + $response = curl_exec($handle); + $error = curl_error($handle); + $getinfo = curl_getinfo($handle); + + curl_close($handle); + + //Check if a cURL error has occured + if ($response === false) { + throw new Dropbox_CurlException($error); + } else { + // Parse the response if it is a string + if (is_string($response)) { + $response = $this->parse($response); + } + + // Set the last response + $this->lastResponse = $response; + + $code = (!empty($response['code'])) ? $response['code'] : $getinfo['http_code']; + + // The API doesn't return an error message for the 304 status code... + // 304's are only returned when the path supplied during metadata calls has not been modified + if ($code == 304) { + $response['body'] = new stdClass; + $response['body']->error = 'The folder contents have not changed'; + } + + // Check if an error occurred and throw an Exception + if (!empty($response['body']->error)) { + // Dropbox returns error messages inconsistently... + if ($response['body']->error instanceof stdClass) { + $array = array_values((array) $response['body']->error); + //Dropbox API v2 only throws 409 errors if this error is a incorrect_offset then we need the entire error array not just the message. PHP Exception messages have to be a string so JSON encode the array. + if (strpos($array[0] , 'incorrect_offset') !== false) { + $message = json_encode($array); + } elseif (strpos($array[0] , 'lookup_failed') !== false ) { + //re-structure the array so it is correctly formatted for API + //Note: Dropbox v2 returns different errors at different stages hence this fix + $correctOffset = array( + '0' => $array[1]->{'.tag'}, + '1' => $array[1]->correct_offset + ); + + $message = json_encode($correctOffset); + } else { + $message = $array[0]; + } + } else { + $message = $response['body']->error; + } + + // Throw an Exception with the appropriate with the appropriate message and code + switch ($code) { + case 304: + throw new Dropbox_NotModifiedException($message, 304); + case 400: + throw new Dropbox_BadRequestException($message, 400); + case 404: + throw new Dropbox_NotFoundException($message, 404); + case 406: + throw new Dropbox_NotAcceptableException($message, 406); + case 415: + throw new Dropbox_UnsupportedMediaTypeException($message, 415); + case 401: + //401 means oauth token is expired continue to manually handle the exception depending on the situation + continue; + case 409: + //409 in API V2 every error will return with a 409 to find out what the error is the error description should be checked. + throw new Dropbox_Exception($message, $code); + default: + throw new Dropbox_Exception($message, $code); + } + } + + return $response; + } + } + + /** + * Parse a cURL response + * @param string $response + * @return array + */ + private function parse($response) + { + // Explode the response into headers and body parts (separated by double EOL) + list($headers, $response) = explode("\r\n\r\n", $response, 2); + + // Explode response headers + $lines = explode("\r\n", $headers); + + // If the status code is 100, the API server must send a final response + // We need to explode the response again to get the actual response + if (preg_match('#^HTTP/1.1 100#i', $lines[0])) { + list($headers, $response) = explode("\r\n\r\n", $response, 2); + $lines = explode("\r\n", $headers); + } + + // Get the HTTP response code from the first line + $first = array_shift($lines); + $pattern = '#^HTTP/1.1 ([0-9]{3})#i'; + preg_match($pattern, $first, $matches); + $code = $matches[1]; + + // Parse the remaining headers into an associative array + $headers = array(); + foreach ($lines as $line) { + list($k, $v) = explode(': ', $line, 2); + $headers[strtolower($k)] = $v; + } + + // If the response body is not a JSON encoded string + // we'll return the entire response body + if (!$body = json_decode($response)) { + $body = $response; + } + + if (is_string($body)) { + $body_lines = explode("\r\n", $body); + if (preg_match('#^HTTP/1.1 100#i', $body_lines[0]) && preg_match('#^HTTP/1.#i', $body_lines[2])) { + return $this->parse($body); + } + } + + return array('code' => $code, 'body' => $body, 'headers' => $headers); + } + + /** + * Return the response for the last API request + * @return mixed + */ + public function getlastResponse() + { + return $this->lastResponse; + } +} diff --git a/plugins/updraftplus/includes/Dropbox2/OAuth/Consumer/WordPress.php b/plugins/updraftplus/includes/Dropbox2/OAuth/Consumer/WordPress.php new file mode 100644 index 0000000..a4eedc0 --- /dev/null +++ b/plugins/updraftplus/includes/Dropbox2/OAuth/Consumer/WordPress.php @@ -0,0 +1,80 @@ + +* @link https://github.com/DavidAnderson684/Dropbox +* @package Dropbox\OAuth +* @subpackage Consumer +*/ + +class Dropbox_ConsumerWordPress extends Dropbox_ConsumerAbstract +{ + + /** + * Set properties and begin authentication + * @param string $key + * @param string $secret + * @param \Dropbox\OAuth\Consumer\StorageInterface $storage + * @param string $callback + */ + public function __construct($key, $secret, Dropbox_StorageInterface $storage, $callback = null) + { + // Check we are in a WordPress environment + if (!defined('ABSPATH')) { + throw new Dropbox_Exception('The WordPress OAuth consumer requires a WordPress environment'); + } + + $this->consumerKey = $key; + $this->consumerSecret = $secret; + $this->storage = $storage; + $this->callback = $callback; + $this->authenticate(); + } + + /** + * Execute an API call + * @param string $method The HTTP method + * @param string $url The API endpoint + * @param string $call The API method to call + * @param array $additional Additional parameters + * @return array + */ + public function fetch($method, $url, $call, array $additional = array()) + { + // Get the signed request URL + $request = $this->getSignedRequest($method, $url, $call, $additional); + if ($method == 'GET') { + $args = array ( ); + $response = wp_remote_get($request['url'], $args); + $this->outFile = null; + } elseif ($method == 'POST') { + $args = array( 'body' => $request['postfields'] ); + $response = wp_remote_post($request['url'], $args ); + } elseif ($method == 'PUT' && $this->inFile) { + return new WP_Error('unsupported', "WordPress does not have a native HTTP PUT function"); + } + + // If the response body is not a JSON encoded string + // we'll return the entire response body + // Important to do this first, as the next section relies on the decoding having taken place + if (!$body = json_decode(wp_remote_retrieve_body($response))) { + $body = wp_remote_retrieve_body($response); + } + + // Check if an error occurred and throw an Exception. This is part of the authentication process - don't modify. + if (!empty($body->error)) { + $message = $body->error . ' (Status Code: ' . wp_remote_retrieve_response_code($response) . ')'; + throw new Dropbox_Exception($message); + } + + if (is_wp_error($response)) { + $message = $response->get_error_message(); + throw new Dropbox_Exception($message); + } + + $results = array ( 'body' => $body, 'code' => wp_remote_retrieve_response_code($response), 'headers' => $response['headers'] ); + return $results; + } + +} diff --git a/plugins/updraftplus/includes/Dropbox2/OAuth/Storage/Encrypter.php b/plugins/updraftplus/includes/Dropbox2/OAuth/Storage/Encrypter.php new file mode 100644 index 0000000..81ae160 --- /dev/null +++ b/plugins/updraftplus/includes/Dropbox2/OAuth/Storage/Encrypter.php @@ -0,0 +1,109 @@ + + * @link https://github.com/benthedesigner/dropbox + * @package Dropbox\Oauth + * @subpackage Storage + */ + +/* UpdraftPlus notes +Using this was fairly pointless (it encrypts storage credentials at rest). But, it's implemented now, so needs supporting. +Investigation shows that mcrypt and phpseclib native encryption using different padding schemes. +As a result, that which is encrypted by phpseclib native can be decrypted by mcrypt, but not vice-versa. Each can (as you'd expect) decrypt the results of their own encryption. +As a consequence, it makes sense to always encrypt with phpseclib native, and prefer decrypting with with mcrypt if it is available and otherwise fall back to phpseclib. +We could deliberately re-encrypt all loaded information with phpseclib native, but there seems little need for that yet. There can only be a problem if mcrypt is disabled - which pre-July-2015 meant that Dropbox wouldn't work at all. Now, it will force a re-authorisation. +*/ + +class Dropbox_Encrypter +{ + // Encryption settings - default settings yield encryption to AES (256-bit) standard + // @todo Provide PHPDOC for each class constant + const KEY_SIZE = 32; + const IV_SIZE = 16; + + /** + * Encryption key + * @var null|string + */ + private $key = null; + + /** + * Check Mcrypt is loaded and set the encryption key + * @param string $key + * @return void + */ + public function __construct($key) + { + if (preg_match('/^[A-Za-z0-9]+$/', $key) && $length = strlen($key) === self::KEY_SIZE) { + # Short-cut so that the mbstring extension is not required + $this->key = $key; + } elseif (($length = mb_strlen($key, '8bit')) !== self::KEY_SIZE) { + throw new Dropbox_Exception('Expecting a ' . self::KEY_SIZE . ' byte key, got ' . $length); + } else { + // Set the encryption key + $this->key = $key; + } + } + + /** + * Encrypt the OAuth token + * @param \stdClass $token Serialized token object + * @return string + */ + public function encrypt($token) + { + + // Encryption: we always use phpseclib for this + + global $updraftplus; + $updraftplus->ensure_phpseclib('Crypt_AES', 'Crypt/AES'); + $updraftplus->ensure_phpseclib('Crypt_Rijndael', 'Crypt/Rijndael'); + + if (!function_exists('crypt_random_string')) require_once(UPDRAFTPLUS_DIR.'/includes/phpseclib/Crypt/Random.php'); + + $iv = crypt_random_string(self::IV_SIZE); + + // Defaults to CBC mode + $rijndael = new Crypt_Rijndael(); + + $rijndael->setKey($this->key); + + $rijndael->setIV($iv); + + $cipherText = $rijndael->encrypt($token); + + return base64_encode($iv . $cipherText); + } + + /** + * Decrypt the ciphertext + * @param string $cipherText + * @return object \stdClass Unserialized token + */ + public function decrypt($cipherText) + { + + // Decryption: prefer mcrypt, if available (since it can decrypt data encrypted by either mcrypt or phpseclib) + + $cipherText = base64_decode($cipherText); + $iv = substr($cipherText, 0, self::IV_SIZE); + $cipherText = substr($cipherText, self::IV_SIZE); + + if (function_exists('mcrypt_decrypt')) { + $token = @mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $this->key, $cipherText, MCRYPT_MODE_CBC, $iv); + } else { + global $updraftplus; + $updraftplus->ensure_phpseclib('Crypt_Rijndael', 'Crypt/Rijndael'); + + $rijndael = new Crypt_Rijndael(); + $rijndael->setKey($this->key); + $rijndael->setIV($iv); + $token = $rijndael->decrypt($cipherText); + } + + return $token; + } +} diff --git a/plugins/updraftplus/includes/Dropbox2/OAuth/Storage/StorageInterface.php b/plugins/updraftplus/includes/Dropbox2/OAuth/Storage/StorageInterface.php new file mode 100644 index 0000000..4710ea0 --- /dev/null +++ b/plugins/updraftplus/includes/Dropbox2/OAuth/Storage/StorageInterface.php @@ -0,0 +1,30 @@ + + * @link https://github.com/benthedesigner/dropbox + * @package Dropbox\OAuth + * @subpackage Storage + */ + +interface Dropbox_StorageInterface +{ + /** + * Get a token by type + * @param string $type Token type to retrieve + */ + public function get($type); + + /** + * Set a token by type + * @param \stdClass $token Token object to set + * @param string $type Token type + */ + public function set($token, $type); + + /** + * Delete tokens for the current session/user + */ + public function delete(); +} diff --git a/plugins/updraftplus/includes/Dropbox2/OAuth/Storage/WordPress.php b/plugins/updraftplus/includes/Dropbox2/OAuth/Storage/WordPress.php new file mode 100644 index 0000000..ec353ab --- /dev/null +++ b/plugins/updraftplus/includes/Dropbox2/OAuth/Storage/WordPress.php @@ -0,0 +1,184 @@ + + * @link http://wordshell.net + * @package Dropbox\Oauth + * @subpackage Storage + */ + +class Dropbox_WordPress implements Dropbox_StorageInterface +{ + /** + * Option name + * @var string + */ + protected $option_name_prefix = 'dropbox_token'; + + /** + * Option name (array storage) + * @var string + */ + protected $option_array = ''; + + /** + * Encyption object + * @var Encrypter|null + */ + protected $encrypter = null; + + /** + * Check if an instance of the encrypter is passed, set the encryption object + * @return void + */ + public function __construct(Dropbox_Encrypter $encrypter = null, $option_name_prefix = 'dropbox_token', $option_array = 'dropbox') + { + if ($encrypter instanceof Dropbox_Encrypter) { + $this->encrypter = $encrypter; + } + + $this->option_name_prefix = $option_name_prefix; + $this->option_array = $option_array; + + } + + /** + * Get an entry from the Dropbox options in the database + * If the encryption object is set then decrypt the token before returning + * @param string $type is the key to retrieve + * @return array|bool + */ + public function get($type) + { + if ($type != 'request_token' && $type != 'access_token' && $type != 'appkey' && $type != 'CSRF' && $type != 'code') { + throw new Dropbox_Exception("Expected a type of either 'request_token', 'access_token', 'CSRF' or 'code', got '$type'"); + } else { + if (false !== ($opts = UpdraftPlus_Options::get_updraft_option($this->option_array))) { + if ($type == 'request_token' || $type == 'access_token'){ + if (!empty($opts[$this->option_name_prefix.$type])) { + $gettoken = $opts[$this->option_name_prefix.$type]; + $token = $this->decrypt($gettoken); + return $token; + } + } else { + if (!empty($opts[$type])) { + return $opts[$type]; + } + } + } + return false; + } + } + + /** + * Set a value in the database by type + * If the value is a token and the encryption object is set then encrypt the token before storing + * @param \stdClass Token object to set + * @param string $type Token type + * @return void + */ + public function set($token, $type) + { + if ($type != 'request_token' && $type != 'access_token' && $type != 'upgraded' && $type != 'CSRF' && $type != 'code') { + throw new Dropbox_Exception("Expected a type of either 'request_token', 'access_token', 'CSRF', 'upgraded' or 'code', got '$type'"); + } else { + + $opts = UpdraftPlus_Options::get_updraft_option($this->option_array); + + if ($type == 'access_token'){ + $token = $this->encrypt($token); + $opts[$this->option_name_prefix.$type] = $token; + } else if ($type == 'request_token' ) { + $opts[$this->option_name_prefix.$type] = $token; + } else { + $opts[$type] = $token; + } + UpdraftPlus_Options::update_updraft_option($this->option_array, $opts); + } + } + + /** + * Remove a value in the database by type rather than setting to null / empty + * set the value to null here so that when it gets to the options filter it will + * unset the value there, this avoids a bug where if the value is not set then + * the option filter will take the value from the database and save that version back. + * + * N.B. Before PHP 7.0, you can't call a method name unset() + * + * @param string $type Token type + * @return void + */ + public function do_unset($type) + { + if ($type != 'request_token' && $type != 'access_token' && $type != 'upgraded' && $type != 'CSRF' && $type != 'code') { + throw new Dropbox_Exception("Expected a type of either 'request_token', 'access_token', 'CSRF', 'upgraded' or 'code', got '$type'"); + } else { + + $opts = UpdraftPlus_Options::get_updraft_option($this->option_array); + + if ($type == 'access_token' || $type == 'request_token'){ + $opts[$this->option_name_prefix.$type] = null; + } else { + $opts[$type] = null; + } + UpdraftPlus_Options::update_updraft_option($this->option_array, $opts); + } + } + + /** + * Delete the request and access tokens currently stored in the database + * @return bool + */ + public function delete() + { + $opts = UpdraftPlus_Options::get_updraft_option($this->option_array); + $opts[$this->option_name_prefix.'request_token'] = null; + $opts[$this->option_name_prefix.'access_token'] = null; + unset($opts['ownername']); + unset($opts['upgraded']); + UpdraftPlus_Options::update_updraft_option($this->option_array, $opts); + return true; + } + + /** + * Use the Encrypter to encrypt a token and return it + * If there is not encrypter object, return just the + * serialized token object for storage + * @param stdClass $token OAuth token to encrypt + * @return stdClass|string + */ + protected function encrypt($token) + { + // Serialize the token object + $token = serialize($token); + + // Encrypt the token if there is an Encrypter instance + if ($this->encrypter instanceof Dropbox_Encrypter) { + $token = $this->encrypter->encrypt($token); + } + + // Return the token + return $token; + } + + /** + * Decrypt a token using the Encrypter object and return it + * If there is no Encrypter object, assume the token was stored + * serialized and return the unserialized token object + * @param stdClass $token OAuth token to encrypt + * @return stdClass|string + */ + protected function decrypt($token) + { + // Decrypt the token if there is an Encrypter instance + if ($this->encrypter instanceof Dropbox_Encrypter) { + $token = $this->encrypter->decrypt($token); + } + + // Return the unserialized token + return @unserialize($token); + } +} diff --git a/plugins/updraftplus/includes/Google/Auth/Abstract.php b/plugins/updraftplus/includes/Google/Auth/Abstract.php new file mode 100644 index 0000000..4cd7b55 --- /dev/null +++ b/plugins/updraftplus/includes/Google/Auth/Abstract.php @@ -0,0 +1,38 @@ + + * + */ +abstract class Google_Auth_Abstract +{ + /** + * An utility function that first calls $this->auth->sign($request) and then + * executes makeRequest() on that signed request. Used for when a request + * should be authenticated + * @param Google_Http_Request $request + * @return Google_Http_Request $request + */ + abstract public function authenticatedRequest(Google_Http_Request $request); + abstract public function sign(Google_Http_Request $request); +} diff --git a/plugins/updraftplus/includes/Google/Auth/AppIdentity.php b/plugins/updraftplus/includes/Google/Auth/AppIdentity.php new file mode 100644 index 0000000..5fb6699 --- /dev/null +++ b/plugins/updraftplus/includes/Google/Auth/AppIdentity.php @@ -0,0 +1,120 @@ +client = $client; + } + + /** + * Retrieve an access token for the scopes supplied. + */ + public function authenticateForScope($scopes) + { + if ($this->token && $this->tokenScopes == $scopes) { + return $this->token; + } + + $cacheKey = self::CACHE_PREFIX; + if (is_string($scopes)) { + $cacheKey .= $scopes; + } else if (is_array($scopes)) { + $cacheKey .= implode(":", $scopes); + } + + $this->token = $this->client->getCache()->get($cacheKey); + if (!$this->token) { + $this->retrieveToken($scopes, $cacheKey); + } else if ($this->token['expiration_time'] < time()) { + $this->client->getCache()->delete($cacheKey); + $this->retrieveToken($scopes, $cacheKey); + } + + $this->tokenScopes = $scopes; + return $this->token; + } + + /** + * Retrieve a new access token and store it in cache + * @param mixed $scopes + * @param string $cacheKey + */ + private function retrieveToken($scopes, $cacheKey) + { + $this->token = AppIdentityService::getAccessToken($scopes); + if ($this->token) { + $this->client->getCache()->set( + $cacheKey, + $this->token + ); + } + } + + /** + * Perform an authenticated / signed apiHttpRequest. + * This function takes the apiHttpRequest, calls apiAuth->sign on it + * (which can modify the request in what ever way fits the auth mechanism) + * and then calls apiCurlIO::makeRequest on the signed request + * + * @param Google_Http_Request $request + * @return Google_Http_Request The resulting HTTP response including the + * responseHttpCode, responseHeaders and responseBody. + */ + public function authenticatedRequest(Google_Http_Request $request) + { + $request = $this->sign($request); + return $this->client->getIo()->makeRequest($request); + } + + public function sign(Google_Http_Request $request) + { + if (!$this->token) { + // No token, so nothing to do. + return $request; + } + + $this->client->getLogger()->debug('App Identity authentication'); + + // Add the OAuth2 header to the request + $request->setRequestHeaders( + array('Authorization' => 'Bearer ' . $this->token['access_token']) + ); + + return $request; + } +} diff --git a/plugins/updraftplus/includes/Google/Auth/AssertionCredentials.php b/plugins/updraftplus/includes/Google/Auth/AssertionCredentials.php new file mode 100644 index 0000000..831d374 --- /dev/null +++ b/plugins/updraftplus/includes/Google/Auth/AssertionCredentials.php @@ -0,0 +1,136 @@ +serviceAccountName = $serviceAccountName; + $this->scopes = is_string($scopes) ? $scopes : implode(' ', $scopes); + $this->privateKey = $privateKey; + $this->privateKeyPassword = $privateKeyPassword; + $this->assertionType = $assertionType; + $this->sub = $sub; + $this->prn = $sub; + $this->useCache = $useCache; + } + + /** + * Generate a unique key to represent this credential. + * @return string + */ + public function getCacheKey() + { + if (!$this->useCache) { + return false; + } + $h = $this->sub; + $h .= $this->assertionType; + $h .= $this->privateKey; + $h .= $this->scopes; + $h .= $this->serviceAccountName; + return md5($h); + } + + public function generateAssertion() + { + $now = time(); + + $jwtParams = array( + 'aud' => Google_Auth_OAuth2::OAUTH2_TOKEN_URI, + 'scope' => $this->scopes, + 'iat' => $now, + 'exp' => $now + self::MAX_TOKEN_LIFETIME_SECS, + 'iss' => $this->serviceAccountName, + ); + + if ($this->sub !== false) { + $jwtParams['sub'] = $this->sub; + } else if ($this->prn !== false) { + $jwtParams['prn'] = $this->prn; + } + + return $this->makeSignedJwt($jwtParams); + } + + /** + * Creates a signed JWT. + * @param array $payload + * @return string The signed JWT. + */ + private function makeSignedJwt($payload) + { + $header = array('typ' => 'JWT', 'alg' => 'RS256'); + + $payload = json_encode($payload); + // Handle some overzealous escaping in PHP json that seemed to cause some errors + // with claimsets. + $payload = str_replace('\/', '/', $payload); + + $segments = array( + Google_Utils::urlSafeB64Encode(json_encode($header)), + Google_Utils::urlSafeB64Encode($payload) + ); + + $signingInput = implode('.', $segments); + $signer = new Google_Signer_P12($this->privateKey, $this->privateKeyPassword); + $signature = $signer->sign($signingInput); + $segments[] = Google_Utils::urlSafeB64Encode($signature); + + return implode(".", $segments); + } +} diff --git a/plugins/updraftplus/includes/Google/Auth/ComputeEngine.php b/plugins/updraftplus/includes/Google/Auth/ComputeEngine.php new file mode 100644 index 0000000..88ff6ff --- /dev/null +++ b/plugins/updraftplus/includes/Google/Auth/ComputeEngine.php @@ -0,0 +1,146 @@ + + */ +class Google_Auth_ComputeEngine extends Google_Auth_Abstract +{ + const METADATA_AUTH_URL = + 'http://metadata/computeMetadata/v1/instance/service-accounts/default/token'; + private $client; + private $token; + + public function __construct(Google_Client $client, $config = null) + { + $this->client = $client; + } + + /** + * Perform an authenticated / signed apiHttpRequest. + * This function takes the apiHttpRequest, calls apiAuth->sign on it + * (which can modify the request in what ever way fits the auth mechanism) + * and then calls apiCurlIO::makeRequest on the signed request + * + * @param Google_Http_Request $request + * @return Google_Http_Request The resulting HTTP response including the + * responseHttpCode, responseHeaders and responseBody. + */ + public function authenticatedRequest(Google_Http_Request $request) + { + $request = $this->sign($request); + return $this->client->getIo()->makeRequest($request); + } + + /** + * @param string $token + * @throws Google_Auth_Exception + */ + public function setAccessToken($token) + { + $token = json_decode($token, true); + if ($token == null) { + throw new Google_Auth_Exception('Could not json decode the token'); + } + if (! isset($token['access_token'])) { + throw new Google_Auth_Exception("Invalid token format"); + } + $token['created'] = time(); + $this->token = $token; + } + + public function getAccessToken() + { + return json_encode($this->token); + } + + /** + * Acquires a new access token from the compute engine metadata server. + * @throws Google_Auth_Exception + */ + public function acquireAccessToken() + { + $request = new Google_Http_Request( + self::METADATA_AUTH_URL, + 'GET', + array( + 'Metadata-Flavor' => 'Google' + ) + ); + $request->disableGzip(); + $response = $this->client->getIo()->makeRequest($request); + + if ($response->getResponseHttpCode() == 200) { + $this->setAccessToken($response->getResponseBody()); + $this->token['created'] = time(); + return $this->getAccessToken(); + } else { + throw new Google_Auth_Exception( + sprintf( + "Error fetching service account access token, message: '%s'", + $response->getResponseBody() + ), + $response->getResponseHttpCode() + ); + } + } + + /** + * Include an accessToken in a given apiHttpRequest. + * @param Google_Http_Request $request + * @return Google_Http_Request + * @throws Google_Auth_Exception + */ + public function sign(Google_Http_Request $request) + { + if ($this->isAccessTokenExpired()) { + $this->acquireAccessToken(); + } + + $this->client->getLogger()->debug('Compute engine service account authentication'); + + $request->setRequestHeaders( + array('Authorization' => 'Bearer ' . $this->token['access_token']) + ); + + return $request; + } + + /** + * Returns if the access_token is expired. + * @return bool Returns True if the access_token is expired. + */ + public function isAccessTokenExpired() + { + if (!$this->token || !isset($this->token['created'])) { + return true; + } + + // If the token is set to expire in the next 30 seconds. + $expired = ($this->token['created'] + + ($this->token['expires_in'] - 30)) < time(); + + return $expired; + } +} diff --git a/plugins/updraftplus/includes/Google/Auth/Exception.php b/plugins/updraftplus/includes/Google/Auth/Exception.php new file mode 100644 index 0000000..e4b75c1 --- /dev/null +++ b/plugins/updraftplus/includes/Google/Auth/Exception.php @@ -0,0 +1,24 @@ + + */ +class Google_Auth_LoginTicket +{ + const USER_ATTR = "sub"; + + // Information from id token envelope. + private $envelope; + + // Information from id token payload. + private $payload; + + /** + * Creates a user based on the supplied token. + * + * @param string $envelope Header from a verified authentication token. + * @param string $payload Information from a verified authentication token. + */ + public function __construct($envelope, $payload) + { + $this->envelope = $envelope; + $this->payload = $payload; + } + + /** + * Returns the numeric identifier for the user. + * @throws Google_Auth_Exception + * @return + */ + public function getUserId() + { + if (array_key_exists(self::USER_ATTR, $this->payload)) { + return $this->payload[self::USER_ATTR]; + } + throw new Google_Auth_Exception("No user_id in token"); + } + + /** + * Returns attributes from the login ticket. This can contain + * various information about the user session. + * @return array + */ + public function getAttributes() + { + return array("envelope" => $this->envelope, "payload" => $this->payload); + } +} diff --git a/plugins/updraftplus/includes/Google/Auth/OAuth2.php b/plugins/updraftplus/includes/Google/Auth/OAuth2.php new file mode 100644 index 0000000..5206e3b --- /dev/null +++ b/plugins/updraftplus/includes/Google/Auth/OAuth2.php @@ -0,0 +1,632 @@ +client = $client; + } + + /** + * Perform an authenticated / signed apiHttpRequest. + * This function takes the apiHttpRequest, calls apiAuth->sign on it + * (which can modify the request in what ever way fits the auth mechanism) + * and then calls apiCurlIO::makeRequest on the signed request + * + * @param Google_Http_Request $request + * @return Google_Http_Request The resulting HTTP response including the + * responseHttpCode, responseHeaders and responseBody. + */ + public function authenticatedRequest(Google_Http_Request $request) + { + $request = $this->sign($request); + return $this->client->getIo()->makeRequest($request); + } + + /** + * @param string $code + * @throws Google_Auth_Exception + * @return string + */ + public function authenticate($code) + { + if (strlen($code) == 0) { + throw new Google_Auth_Exception("Invalid code"); + } + + // We got here from the redirect from a successful authorization grant, + // fetch the access token + $request = new Google_Http_Request( + self::OAUTH2_TOKEN_URI, + 'POST', + array(), + array( + 'code' => $code, + 'grant_type' => 'authorization_code', + 'redirect_uri' => $this->client->getClassConfig($this, 'redirect_uri'), + 'client_id' => $this->client->getClassConfig($this, 'client_id'), + 'client_secret' => $this->client->getClassConfig($this, 'client_secret') + ) + ); + $request->disableGzip(); + $response = $this->client->getIo()->makeRequest($request); + + if ($response->getResponseHttpCode() == 200) { + $this->setAccessToken($response->getResponseBody()); + $this->token['created'] = time(); + return $this->getAccessToken(); + } else { + $decodedResponse = json_decode($response->getResponseBody(), true); + if ($decodedResponse != null && $decodedResponse['error']) { + $errorText = $decodedResponse['error']; + if (isset($decodedResponse['error_description'])) { + $errorText .= ": " . $decodedResponse['error_description']; + } + } + throw new Google_Auth_Exception( + sprintf( + "Error fetching OAuth2 access token, message: '%s'", + $errorText + ), + $response->getResponseHttpCode() + ); + } + } + + /** + * Create a URL to obtain user authorization. + * The authorization endpoint allows the user to first + * authenticate, and then grant/deny the access request. + * @param string $scope The scope is expressed as a list of space-delimited strings. + * @return string + */ + public function createAuthUrl($scope) + { + $params = array( + 'response_type' => 'code', + 'redirect_uri' => $this->client->getClassConfig($this, 'redirect_uri'), + 'client_id' => $this->client->getClassConfig($this, 'client_id'), + 'scope' => $scope, + 'access_type' => $this->client->getClassConfig($this, 'access_type'), + ); + + // Prefer prompt to approval prompt. + if ($this->client->getClassConfig($this, 'prompt')) { + $params = $this->maybeAddParam($params, 'prompt'); + } else { + $params = $this->maybeAddParam($params, 'approval_prompt'); + } + $params = $this->maybeAddParam($params, 'login_hint'); + $params = $this->maybeAddParam($params, 'hd'); + $params = $this->maybeAddParam($params, 'openid.realm'); + $params = $this->maybeAddParam($params, 'include_granted_scopes'); + + // If the list of scopes contains plus.login, add request_visible_actions + // to auth URL. + $rva = $this->client->getClassConfig($this, 'request_visible_actions'); + if (strpos($scope, 'plus.login') && strlen($rva) > 0) { + $params['request_visible_actions'] = $rva; + } + + if (isset($this->state)) { + $params['state'] = $this->state; + } + + return self::OAUTH2_AUTH_URL . "?" . http_build_query($params, '', '&'); + } + + /** + * @param string $token + * @throws Google_Auth_Exception + */ + public function setAccessToken($token) + { + $token = json_decode($token, true); + if ($token == null) { + throw new Google_Auth_Exception('Could not json decode the token'); + } + if (! isset($token['access_token'])) { + throw new Google_Auth_Exception("Invalid token format"); + } + $this->token = $token; + } + + public function getAccessToken() + { + return json_encode($this->token); + } + + public function getRefreshToken() + { + if (array_key_exists('refresh_token', $this->token)) { + return $this->token['refresh_token']; + } else { + return null; + } + } + + public function setState($state) + { + $this->state = $state; + } + + public function setAssertionCredentials(Google_Auth_AssertionCredentials $creds) + { + $this->assertionCredentials = $creds; + } + + /** + * Include an accessToken in a given apiHttpRequest. + * @param Google_Http_Request $request + * @return Google_Http_Request + * @throws Google_Auth_Exception + */ + public function sign(Google_Http_Request $request) + { + // add the developer key to the request before signing it + if ($this->client->getClassConfig($this, 'developer_key')) { + $request->setQueryParam('key', $this->client->getClassConfig($this, 'developer_key')); + } + + // Cannot sign the request without an OAuth access token. + if (null == $this->token && null == $this->assertionCredentials) { + return $request; + } + + // Check if the token is set to expire in the next 30 seconds + // (or has already expired). + if ($this->isAccessTokenExpired()) { + if ($this->assertionCredentials) { + $this->refreshTokenWithAssertion(); + } else { + $this->client->getLogger()->debug('OAuth2 access token expired'); + if (! array_key_exists('refresh_token', $this->token)) { + $error = "The OAuth 2.0 access token has expired," + ." and a refresh token is not available. Refresh tokens" + ." are not returned for responses that were auto-approved."; + + $this->client->getLogger()->error($error); + throw new Google_Auth_Exception($error); + } + $this->refreshToken($this->token['refresh_token']); + } + } + + $this->client->getLogger()->debug('OAuth2 authentication'); + + // Add the OAuth2 header to the request + $request->setRequestHeaders( + array('Authorization' => 'Bearer ' . $this->token['access_token']) + ); + + return $request; + } + + /** + * Fetches a fresh access token with the given refresh token. + * @param string $refreshToken + * @return void + */ + public function refreshToken($refreshToken) + { + $this->refreshTokenRequest( + array( + 'client_id' => $this->client->getClassConfig($this, 'client_id'), + 'client_secret' => $this->client->getClassConfig($this, 'client_secret'), + 'refresh_token' => $refreshToken, + 'grant_type' => 'refresh_token' + ) + ); + } + + /** + * Fetches a fresh access token with a given assertion token. + * @param Google_Auth_AssertionCredentials $assertionCredentials optional. + * @return void + */ + public function refreshTokenWithAssertion($assertionCredentials = null) + { + if (!$assertionCredentials) { + $assertionCredentials = $this->assertionCredentials; + } + + $cacheKey = $assertionCredentials->getCacheKey(); + + if ($cacheKey) { + // We can check whether we have a token available in the + // cache. If it is expired, we can retrieve a new one from + // the assertion. + $token = $this->client->getCache()->get($cacheKey); + if ($token) { + $this->setAccessToken($token); + } + if (!$this->isAccessTokenExpired()) { + return; + } + } + + $this->client->getLogger()->debug('OAuth2 access token expired'); + $this->refreshTokenRequest( + array( + 'grant_type' => 'assertion', + 'assertion_type' => $assertionCredentials->assertionType, + 'assertion' => $assertionCredentials->generateAssertion(), + ) + ); + + if ($cacheKey) { + // Attempt to cache the token. + $this->client->getCache()->set( + $cacheKey, + $this->getAccessToken() + ); + } + } + + private function refreshTokenRequest($params) + { + if (isset($params['assertion'])) { + $this->client->getLogger()->info( + 'OAuth2 access token refresh with Signed JWT assertion grants.' + ); + } else { + $this->client->getLogger()->info('OAuth2 access token refresh'); + } + + $http = new Google_Http_Request( + self::OAUTH2_TOKEN_URI, + 'POST', + array(), + $params + ); + $http->disableGzip(); + $request = $this->client->getIo()->makeRequest($http); + + $code = $request->getResponseHttpCode(); + $body = $request->getResponseBody(); + if (200 == $code) { + $token = json_decode($body, true); + if ($token == null) { + throw new Google_Auth_Exception("Could not json decode the access token"); + } + + if (! isset($token['access_token']) || ! isset($token['expires_in'])) { + throw new Google_Auth_Exception("Invalid token format"); + } + + if (isset($token['id_token'])) { + $this->token['id_token'] = $token['id_token']; + } + $this->token['access_token'] = $token['access_token']; + $this->token['expires_in'] = $token['expires_in']; + $this->token['created'] = time(); + } else { + throw new Google_Auth_Exception("Error refreshing the OAuth2 token, message: '$body'", $code); + } + } + + /** + * Revoke an OAuth2 access token or refresh token. This method will revoke the current access + * token, if a token isn't provided. + * @throws Google_Auth_Exception + * @param string|null $token The token (access token or a refresh token) that should be revoked. + * @return boolean Returns True if the revocation was successful, otherwise False. + */ + public function revokeToken($token = null) + { + if (!$token) { + if (!$this->token) { + // Not initialized, no token to actually revoke + return false; + } elseif (array_key_exists('refresh_token', $this->token)) { + $token = $this->token['refresh_token']; + } else { + $token = $this->token['access_token']; + } + } + $request = new Google_Http_Request( + self::OAUTH2_REVOKE_URI, + 'POST', + array(), + "token=$token" + ); + $request->disableGzip(); + $response = $this->client->getIo()->makeRequest($request); + $code = $response->getResponseHttpCode(); + if ($code == 200) { + $this->token = null; + return true; + } + + return false; + } + + /** + * Returns if the access_token is expired. + * @return bool Returns True if the access_token is expired. + */ + public function isAccessTokenExpired() + { + if (!$this->token || !isset($this->token['created'])) { + return true; + } + + // If the token is set to expire in the next 30 seconds. + $expired = ($this->token['created'] + + ($this->token['expires_in'] - 30)) < time(); + + return $expired; + } + + // Gets federated sign-on certificates to use for verifying identity tokens. + // Returns certs as array structure, where keys are key ids, and values + // are PEM encoded certificates. + private function getFederatedSignOnCerts() + { + return $this->retrieveCertsFromLocation( + $this->client->getClassConfig($this, 'federated_signon_certs_url') + ); + } + + /** + * Retrieve and cache a certificates file. + * + * @param $url string location + * @throws Google_Auth_Exception + * @return array certificates + */ + public function retrieveCertsFromLocation($url) + { + // If we're retrieving a local file, just grab it. + if ("http" != substr($url, 0, 4)) { + $file = file_get_contents($url); + if ($file) { + return json_decode($file, true); + } else { + throw new Google_Auth_Exception( + "Failed to retrieve verification certificates: '" . + $url . "'." + ); + } + } + + // This relies on makeRequest caching certificate responses. + $request = $this->client->getIo()->makeRequest( + new Google_Http_Request( + $url + ) + ); + if ($request->getResponseHttpCode() == 200) { + $certs = json_decode($request->getResponseBody(), true); + if ($certs) { + return $certs; + } + } + throw new Google_Auth_Exception( + "Failed to retrieve verification certificates: '" . + $request->getResponseBody() . "'.", + $request->getResponseHttpCode() + ); + } + + /** + * Verifies an id token and returns the authenticated apiLoginTicket. + * Throws an exception if the id token is not valid. + * The audience parameter can be used to control which id tokens are + * accepted. By default, the id token must have been issued to this OAuth2 client. + * + * @param $id_token + * @param $audience + * @return Google_Auth_LoginTicket + */ + public function verifyIdToken($id_token = null, $audience = null) + { + if (!$id_token) { + $id_token = $this->token['id_token']; + } + $certs = $this->getFederatedSignonCerts(); + if (!$audience) { + $audience = $this->client->getClassConfig($this, 'client_id'); + } + + return $this->verifySignedJwtWithCerts($id_token, $certs, $audience, self::OAUTH2_ISSUER); + } + + /** + * Verifies the id token, returns the verified token contents. + * + * @param $jwt string the token + * @param $certs array of certificates + * @param $required_audience string the expected consumer of the token + * @param [$issuer] the expected issues, defaults to Google + * @param [$max_expiry] the max lifetime of a token, defaults to MAX_TOKEN_LIFETIME_SECS + * @throws Google_Auth_Exception + * @return mixed token information if valid, false if not + */ + public function verifySignedJwtWithCerts( + $jwt, + $certs, + $required_audience, + $issuer = null, + $max_expiry = null + ) { + if (!$max_expiry) { + // Set the maximum time we will accept a token for. + $max_expiry = self::MAX_TOKEN_LIFETIME_SECS; + } + + $segments = explode(".", $jwt); + if (count($segments) != 3) { + throw new Google_Auth_Exception("Wrong number of segments in token: $jwt"); + } + $signed = $segments[0] . "." . $segments[1]; + $signature = Google_Utils::urlSafeB64Decode($segments[2]); + + // Parse envelope. + $envelope = json_decode(Google_Utils::urlSafeB64Decode($segments[0]), true); + if (!$envelope) { + throw new Google_Auth_Exception("Can't parse token envelope: " . $segments[0]); + } + + // Parse token + $json_body = Google_Utils::urlSafeB64Decode($segments[1]); + $payload = json_decode($json_body, true); + if (!$payload) { + throw new Google_Auth_Exception("Can't parse token payload: " . $segments[1]); + } + + // Check signature + $verified = false; + foreach ($certs as $keyName => $pem) { + $public_key = new Google_Verifier_Pem($pem); + if ($public_key->verify($signed, $signature)) { + $verified = true; + break; + } + } + + if (!$verified) { + throw new Google_Auth_Exception("Invalid token signature: $jwt"); + } + + // Check issued-at timestamp + $iat = 0; + if (array_key_exists("iat", $payload)) { + $iat = $payload["iat"]; + } + if (!$iat) { + throw new Google_Auth_Exception("No issue time in token: $json_body"); + } + $earliest = $iat - self::CLOCK_SKEW_SECS; + + // Check expiration timestamp + $now = time(); + $exp = 0; + if (array_key_exists("exp", $payload)) { + $exp = $payload["exp"]; + } + if (!$exp) { + throw new Google_Auth_Exception("No expiration time in token: $json_body"); + } + if ($exp >= $now + $max_expiry) { + throw new Google_Auth_Exception( + sprintf("Expiration time too far in future: %s", $json_body) + ); + } + + $latest = $exp + self::CLOCK_SKEW_SECS; + if ($now < $earliest) { + throw new Google_Auth_Exception( + sprintf( + "Token used too early, %s < %s: %s", + $now, + $earliest, + $json_body + ) + ); + } + if ($now > $latest) { + throw new Google_Auth_Exception( + sprintf( + "Token used too late, %s > %s: %s", + $now, + $latest, + $json_body + ) + ); + } + + $iss = $payload['iss']; + if ($issuer && $iss != $issuer) { + throw new Google_Auth_Exception( + sprintf( + "Invalid issuer, %s != %s: %s", + $iss, + $issuer, + $json_body + ) + ); + } + + // Check audience + $aud = $payload["aud"]; + if ($aud != $required_audience) { + throw new Google_Auth_Exception( + sprintf( + "Wrong recipient, %s != %s:", + $aud, + $required_audience, + $json_body + ) + ); + } + + // All good. + return new Google_Auth_LoginTicket($envelope, $payload); + } + + /** + * Add a parameter to the auth params if not empty string. + */ + private function maybeAddParam($params, $name) + { + $param = $this->client->getClassConfig($this, $name); + if ($param != '') { + $params[$name] = $param; + } + return $params; + } +} diff --git a/plugins/updraftplus/includes/Google/Auth/Simple.php b/plugins/updraftplus/includes/Google/Auth/Simple.php new file mode 100644 index 0000000..9a8e58c --- /dev/null +++ b/plugins/updraftplus/includes/Google/Auth/Simple.php @@ -0,0 +1,63 @@ +client = $client; + } + + /** + * Perform an authenticated / signed apiHttpRequest. + * This function takes the apiHttpRequest, calls apiAuth->sign on it + * (which can modify the request in what ever way fits the auth mechanism) + * and then calls apiCurlIO::makeRequest on the signed request + * + * @param Google_Http_Request $request + * @return Google_Http_Request The resulting HTTP response including the + * responseHttpCode, responseHeaders and responseBody. + */ + public function authenticatedRequest(Google_Http_Request $request) + { + $request = $this->sign($request); + return $this->io->makeRequest($request); + } + + public function sign(Google_Http_Request $request) + { + $key = $this->client->getClassConfig($this, 'developer_key'); + if ($key) { + $this->client->getLogger()->debug( + 'Simple API Access developer key authentication' + ); + $request->setQueryParam('key', $key); + } + return $request; + } +} diff --git a/plugins/updraftplus/includes/Google/Cache/Abstract.php b/plugins/updraftplus/includes/Google/Cache/Abstract.php new file mode 100644 index 0000000..ff19f36 --- /dev/null +++ b/plugins/updraftplus/includes/Google/Cache/Abstract.php @@ -0,0 +1,53 @@ + + */ +abstract class Google_Cache_Abstract +{ + + abstract public function __construct(Google_Client $client); + + /** + * Retrieves the data for the given key, or false if they + * key is unknown or expired + * + * @param String $key The key who's data to retrieve + * @param boolean|int $expiration Expiration time in seconds + * + */ + abstract public function get($key, $expiration = false); + + /** + * Store the key => $value set. The $value is serialized + * by this function so can be of any type + * + * @param string $key Key of the data + * @param string $value data + */ + abstract public function set($key, $value); + + /** + * Removes the key/data pair for the given $key + * + * @param String $key + */ + abstract public function delete($key); +} diff --git a/plugins/updraftplus/includes/Google/Cache/Apc.php b/plugins/updraftplus/includes/Google/Cache/Apc.php new file mode 100644 index 0000000..67a64dd --- /dev/null +++ b/plugins/updraftplus/includes/Google/Cache/Apc.php @@ -0,0 +1,113 @@ + + */ +class Google_Cache_Apc extends Google_Cache_Abstract +{ + /** + * @var Google_Client the current client + */ + private $client; + + public function __construct(Google_Client $client) + { + if (! function_exists('apc_add') ) { + $error = "Apc functions not available"; + + $client->getLogger()->error($error); + throw new Google_Cache_Exception($error); + } + + $this->client = $client; + } + + /** + * @inheritDoc + */ + public function get($key, $expiration = false) + { + $ret = apc_fetch($key); + if ($ret === false) { + $this->client->getLogger()->debug( + 'APC cache miss', + array('key' => $key) + ); + return false; + } + if (is_numeric($expiration) && (time() - $ret['time'] > $expiration)) { + $this->client->getLogger()->debug( + 'APC cache miss (expired)', + array('key' => $key, 'var' => $ret) + ); + $this->delete($key); + return false; + } + + $this->client->getLogger()->debug( + 'APC cache hit', + array('key' => $key, 'var' => $ret) + ); + + return $ret['data']; + } + + /** + * @inheritDoc + */ + public function set($key, $value) + { + $var = array('time' => time(), 'data' => $value); + $rc = apc_store($key, $var); + + if ($rc == false) { + $this->client->getLogger()->error( + 'APC cache set failed', + array('key' => $key, 'var' => $var) + ); + throw new Google_Cache_Exception("Couldn't store data"); + } + + $this->client->getLogger()->debug( + 'APC cache set', + array('key' => $key, 'var' => $var) + ); + } + + /** + * @inheritDoc + * @param String $key + */ + public function delete($key) + { + $this->client->getLogger()->debug( + 'APC cache delete', + array('key' => $key) + ); + apc_delete($key); + } +} diff --git a/plugins/updraftplus/includes/Google/Cache/Exception.php b/plugins/updraftplus/includes/Google/Cache/Exception.php new file mode 100644 index 0000000..2d751d5 --- /dev/null +++ b/plugins/updraftplus/includes/Google/Cache/Exception.php @@ -0,0 +1,24 @@ + + */ +class Google_Cache_File extends Google_Cache_Abstract +{ + const MAX_LOCK_RETRIES = 10; + private $path; + private $fh; + + /** + * @var Google_Client the current client + */ + private $client; + + public function __construct(Google_Client $client) + { + $this->client = $client; + $this->path = $this->client->getClassConfig($this, 'directory'); + } + + public function get($key, $expiration = false) + { + $storageFile = $this->getCacheFile($key); + $data = false; + + if (!file_exists($storageFile)) { + $this->client->getLogger()->debug( + 'File cache miss', + array('key' => $key, 'file' => $storageFile) + ); + return false; + } + + if ($expiration) { + $mtime = filemtime($storageFile); + if ((time() - $mtime) >= $expiration) { + $this->client->getLogger()->debug( + 'File cache miss (expired)', + array('key' => $key, 'file' => $storageFile) + ); + $this->delete($key); + return false; + } + } + + if ($this->acquireReadLock($storageFile)) { + if (filesize($storageFile) > 0) { + $data = fread($this->fh, filesize($storageFile)); + $data = unserialize($data); + } else { + $this->client->getLogger()->debug( + 'Cache file was empty', + array('file' => $storageFile) + ); + } + $this->unlock($storageFile); + } + + $this->client->getLogger()->debug( + 'File cache hit', + array('key' => $key, 'file' => $storageFile, 'var' => $data) + ); + + return $data; + } + + public function set($key, $value) + { + $storageFile = $this->getWriteableCacheFile($key); + if ($this->acquireWriteLock($storageFile)) { + // We serialize the whole request object, since we don't only want the + // responseContent but also the postBody used, headers, size, etc. + $data = serialize($value); + $result = fwrite($this->fh, $data); + $this->unlock($storageFile); + + $this->client->getLogger()->debug( + 'File cache set', + array('key' => $key, 'file' => $storageFile, 'var' => $value) + ); + } else { + $this->client->getLogger()->notice( + 'File cache set failed', + array('key' => $key, 'file' => $storageFile) + ); + } + } + + public function delete($key) + { + $file = $this->getCacheFile($key); + if (file_exists($file) && !unlink($file)) { + $this->client->getLogger()->error( + 'File cache delete failed', + array('key' => $key, 'file' => $file) + ); + throw new Google_Cache_Exception("Cache file could not be deleted"); + } + + $this->client->getLogger()->debug( + 'File cache delete', + array('key' => $key, 'file' => $file) + ); + } + + private function getWriteableCacheFile($file) + { + return $this->getCacheFile($file, true); + } + + private function getCacheFile($file, $forWrite = false) + { + return $this->getCacheDir($file, $forWrite) . '/' . md5($file); + } + + private function getCacheDir($file, $forWrite) + { + // use the first 2 characters of the hash as a directory prefix + // this should prevent slowdowns due to huge directory listings + // and thus give some basic amount of scalability + $storageDir = $this->path . '/' . substr(md5($file), 0, 2); + if ($forWrite && ! is_dir($storageDir)) { + if (! mkdir($storageDir, 0755, true)) { + $this->client->getLogger()->error( + 'File cache creation failed', + array('dir' => $storageDir) + ); + throw new Google_Cache_Exception("Could not create storage directory: $storageDir"); + } + } + return $storageDir; + } + + private function acquireReadLock($storageFile) + { + return $this->acquireLock(LOCK_SH, $storageFile); + } + + private function acquireWriteLock($storageFile) + { + $rc = $this->acquireLock(LOCK_EX, $storageFile); + if (!$rc) { + $this->client->getLogger()->notice( + 'File cache write lock failed', + array('file' => $storageFile) + ); + $this->delete($storageFile); + } + return $rc; + } + + private function acquireLock($type, $storageFile) + { + $mode = $type == LOCK_EX ? "w" : "r"; + $this->fh = fopen($storageFile, $mode); + if (!$this->fh) { + $this->client->getLogger()->error( + 'Failed to open file during lock acquisition', + array('file' => $storageFile) + ); + return false; + } + $count = 0; + while (!flock($this->fh, $type | LOCK_NB)) { + // Sleep for 10ms. + usleep(10000); + if (++$count < self::MAX_LOCK_RETRIES) { + return false; + } + } + return true; + } + + public function unlock($storageFile) + { + if ($this->fh) { + flock($this->fh, LOCK_UN); + } + } +} diff --git a/plugins/updraftplus/includes/Google/Cache/Memcache.php b/plugins/updraftplus/includes/Google/Cache/Memcache.php new file mode 100644 index 0000000..4a415af --- /dev/null +++ b/plugins/updraftplus/includes/Google/Cache/Memcache.php @@ -0,0 +1,184 @@ + + */ +class Google_Cache_Memcache extends Google_Cache_Abstract +{ + private $connection = false; + private $mc = false; + private $host; + private $port; + + /** + * @var Google_Client the current client + */ + private $client; + + public function __construct(Google_Client $client) + { + if (!function_exists('memcache_connect') && !class_exists("Memcached")) { + $error = "Memcache functions not available"; + + $client->getLogger()->error($error); + throw new Google_Cache_Exception($error); + } + + $this->client = $client; + + if ($client->isAppEngine()) { + // No credentials needed for GAE. + $this->mc = new Memcached(); + $this->connection = true; + } else { + $this->host = $client->getClassConfig($this, 'host'); + $this->port = $client->getClassConfig($this, 'port'); + if (empty($this->host) || (empty($this->port) && (string) $this->port != "0")) { + $error = "You need to supply a valid memcache host and port"; + + $client->getLogger()->error($error); + throw new Google_Cache_Exception($error); + } + } + } + + /** + * @inheritDoc + */ + public function get($key, $expiration = false) + { + $this->connect(); + $ret = false; + if ($this->mc) { + $ret = $this->mc->get($key); + } else { + $ret = memcache_get($this->connection, $key); + } + if ($ret === false) { + $this->client->getLogger()->debug( + 'Memcache cache miss', + array('key' => $key) + ); + return false; + } + if (is_numeric($expiration) && (time() - $ret['time'] > $expiration)) { + $this->client->getLogger()->debug( + 'Memcache cache miss (expired)', + array('key' => $key, 'var' => $ret) + ); + $this->delete($key); + return false; + } + + $this->client->getLogger()->debug( + 'Memcache cache hit', + array('key' => $key, 'var' => $ret) + ); + + return $ret['data']; + } + + /** + * @inheritDoc + * @param string $key + * @param string $value + * @throws Google_Cache_Exception + */ + public function set($key, $value) + { + $this->connect(); + // we store it with the cache_time default expiration so objects will at + // least get cleaned eventually. + $data = array('time' => time(), 'data' => $value); + $rc = false; + if ($this->mc) { + $rc = $this->mc->set($key, $data); + } else { + $rc = memcache_set($this->connection, $key, $data, false); + } + if ($rc == false) { + $this->client->getLogger()->error( + 'Memcache cache set failed', + array('key' => $key, 'var' => $data) + ); + + throw new Google_Cache_Exception("Couldn't store data in cache"); + } + + $this->client->getLogger()->debug( + 'Memcache cache set', + array('key' => $key, 'var' => $data) + ); + } + + /** + * @inheritDoc + * @param String $key + */ + public function delete($key) + { + $this->connect(); + if ($this->mc) { + $this->mc->delete($key, 0); + } else { + memcache_delete($this->connection, $key, 0); + } + + $this->client->getLogger()->debug( + 'Memcache cache delete', + array('key' => $key) + ); + } + + /** + * Lazy initialiser for memcache connection. Uses pconnect for to take + * advantage of the persistence pool where possible. + */ + private function connect() + { + if ($this->connection) { + return; + } + + if (class_exists("Memcached")) { + $this->mc = new Memcached(); + $this->mc->addServer($this->host, $this->port); + $this->connection = true; + } else { + $this->connection = memcache_pconnect($this->host, $this->port); + } + + if (! $this->connection) { + $error = "Couldn't connect to memcache server"; + + $this->client->getLogger()->error($error); + throw new Google_Cache_Exception($error); + } + } +} diff --git a/plugins/updraftplus/includes/Google/Cache/Null.php b/plugins/updraftplus/includes/Google/Cache/Null.php new file mode 100644 index 0000000..21b6a1c --- /dev/null +++ b/plugins/updraftplus/includes/Google/Cache/Null.php @@ -0,0 +1,57 @@ +isAppEngine()) { + // Automatically use Memcache if we're in AppEngine. + $config->setCacheClass('Google_Cache_Memcache'); + } + + if (version_compare(phpversion(), "5.3.4", "<=") || $this->isAppEngine()) { + // Automatically disable compress.zlib, as currently unsupported. + $config->setClassConfig('Google_Http_Request', 'disable_gzip', true); + } + } + + if ($config->getIoClass() == Google_Config::USE_AUTO_IO_SELECTION) { + if (function_exists('curl_version') && function_exists('curl_exec') + && !$this->isAppEngine()) { + $config->setIoClass("Google_IO_Curl"); + } else { + $config->setIoClass("Google_IO_Stream"); + } + } + + $this->config = $config; + } + + /** + * Get a string containing the version of the library. + * + * @return string + */ + public function getLibraryVersion() + { + return self::LIBVER; + } + + /** + * Attempt to exchange a code for an valid authentication token. + * Helper wrapped around the OAuth 2.0 implementation. + * + * @param $code string code from accounts.google.com + * @return string token + */ + public function authenticate($code) + { + $this->authenticated = true; + return $this->getAuth()->authenticate($code); + } + + /** + * Loads a service account key and parameters from a JSON + * file from the Google Developer Console. Uses that and the + * given array of scopes to return an assertion credential for + * use with refreshTokenWithAssertionCredential. + * + * @param string $jsonLocation File location of the project-key.json. + * @param array $scopes The scopes to assert. + * @return Google_Auth_AssertionCredentials. + * @ + */ + public function loadServiceAccountJson($jsonLocation, $scopes) + { + $data = json_decode(file_get_contents($jsonLocation)); + if (isset($data->type) && $data->type == 'service_account') { + // Service Account format. + $cred = new Google_Auth_AssertionCredentials( + $data->client_email, + $scopes, + $data->private_key + ); + return $cred; + } else { + throw new Google_Exception("Invalid service account JSON file."); + } + } + + /** + * Set the auth config from the JSON string provided. + * This structure should match the file downloaded from + * the "Download JSON" button on in the Google Developer + * Console. + * @param string $json the configuration json + * @throws Google_Exception + */ + public function setAuthConfig($json) + { + $data = json_decode($json); + $key = isset($data->installed) ? 'installed' : 'web'; + if (!isset($data->$key)) { + throw new Google_Exception("Invalid client secret JSON file."); + } + $this->setClientId($data->$key->client_id); + $this->setClientSecret($data->$key->client_secret); + if (isset($data->$key->redirect_uris)) { + $this->setRedirectUri($data->$key->redirect_uris[0]); + } + } + + /** + * Set the auth config from the JSON file in the path + * provided. This should match the file downloaded from + * the "Download JSON" button on in the Google Developer + * Console. + * @param string $file the file location of the client json + */ + public function setAuthConfigFile($file) + { + $this->setAuthConfig(file_get_contents($file)); + } + + /** + * @throws Google_Auth_Exception + * @return array + * @visible For Testing + */ + public function prepareScopes() + { + if (empty($this->requestedScopes)) { + throw new Google_Auth_Exception("No scopes specified"); + } + $scopes = implode(' ', $this->requestedScopes); + return $scopes; + } + + /** + * Set the OAuth 2.0 access token using the string that resulted from calling createAuthUrl() + * or Google_Client#getAccessToken(). + * @param string $accessToken JSON encoded string containing in the following format: + * {"access_token":"TOKEN", "refresh_token":"TOKEN", "token_type":"Bearer", + * "expires_in":3600, "id_token":"TOKEN", "created":1320790426} + */ + public function setAccessToken($accessToken) + { + if ($accessToken == 'null') { + $accessToken = null; + } + $this->getAuth()->setAccessToken($accessToken); + } + + + + /** + * Set the authenticator object + * @param Google_Auth_Abstract $auth + */ + public function setAuth(Google_Auth_Abstract $auth) + { + $this->config->setAuthClass(get_class($auth)); + $this->auth = $auth; + } + + /** + * Set the IO object + * @param Google_IO_Abstract $io + */ + public function setIo(Google_IO_Abstract $io) + { + $this->config->setIoClass(get_class($io)); + $this->io = $io; + } + + /** + * Set the Cache object + * @param Google_Cache_Abstract $cache + */ + public function setCache(Google_Cache_Abstract $cache) + { + $this->config->setCacheClass(get_class($cache)); + $this->cache = $cache; + } + + /** + * Set the Logger object + * @param Google_Logger_Abstract $logger + */ + public function setLogger(Google_Logger_Abstract $logger) + { + $this->config->setLoggerClass(get_class($logger)); + $this->logger = $logger; + } + + /** + * Construct the OAuth 2.0 authorization request URI. + * @return string + */ + public function createAuthUrl() + { + $scopes = $this->prepareScopes(); + return $this->getAuth()->createAuthUrl($scopes); + } + + /** + * Get the OAuth 2.0 access token. + * @return string $accessToken JSON encoded string in the following format: + * {"access_token":"TOKEN", "refresh_token":"TOKEN", "token_type":"Bearer", + * "expires_in":3600,"id_token":"TOKEN", "created":1320790426} + */ + public function getAccessToken() + { + $token = $this->getAuth()->getAccessToken(); + // The response is json encoded, so could be the string null. + // It is arguable whether this check should be here or lower + // in the library. + return (null == $token || 'null' == $token || '[]' == $token) ? null : $token; + } + + /** + * Get the OAuth 2.0 refresh token. + * @return string $refreshToken refresh token or null if not available + */ + public function getRefreshToken() + { + return $this->getAuth()->getRefreshToken(); + } + + /** + * Returns if the access_token is expired. + * @return bool Returns True if the access_token is expired. + */ + public function isAccessTokenExpired() + { + return $this->getAuth()->isAccessTokenExpired(); + } + + /** + * Set OAuth 2.0 "state" parameter to achieve per-request customization. + * @see http://tools.ietf.org/html/draft-ietf-oauth-v2-22#section-3.1.2.2 + * @param string $state + */ + public function setState($state) + { + $this->getAuth()->setState($state); + } + + /** + * @param string $accessType Possible values for access_type include: + * {@code "offline"} to request offline access from the user. + * {@code "online"} to request online access from the user. + */ + public function setAccessType($accessType) + { + $this->config->setAccessType($accessType); + } + + /** + * @param string $approvalPrompt Possible values for approval_prompt include: + * {@code "force"} to force the approval UI to appear. (This is the default value) + * {@code "auto"} to request auto-approval when possible. + */ + public function setApprovalPrompt($approvalPrompt) + { + $this->config->setApprovalPrompt($approvalPrompt); + } + + /** + * Set the login hint, email address or sub id. + * @param string $loginHint + */ + public function setLoginHint($loginHint) + { + $this->config->setLoginHint($loginHint); + } + + /** + * Set the application name, this is included in the User-Agent HTTP header. + * @param string $applicationName + */ + public function setApplicationName($applicationName) + { + $this->config->setApplicationName($applicationName); + } + + /** + * Set the OAuth 2.0 Client ID. + * @param string $clientId + */ + public function setClientId($clientId) + { + $this->config->setClientId($clientId); + } + + /** + * Set the OAuth 2.0 Client Secret. + * @param string $clientSecret + */ + public function setClientSecret($clientSecret) + { + $this->config->setClientSecret($clientSecret); + } + + /** + * Set the OAuth 2.0 Redirect URI. + * @param string $redirectUri + */ + public function setRedirectUri($redirectUri) + { + $this->config->setRedirectUri($redirectUri); + } + + /** + * If 'plus.login' is included in the list of requested scopes, you can use + * this method to define types of app activities that your app will write. + * You can find a list of available types here: + * @link https://developers.google.com/+/api/moment-types + * + * @param array $requestVisibleActions Array of app activity types + */ + public function setRequestVisibleActions($requestVisibleActions) + { + if (is_array($requestVisibleActions)) { + $requestVisibleActions = join(" ", $requestVisibleActions); + } + $this->config->setRequestVisibleActions($requestVisibleActions); + } + + /** + * Set the developer key to use, these are obtained through the API Console. + * @see http://code.google.com/apis/console-help/#generatingdevkeys + * @param string $developerKey + */ + public function setDeveloperKey($developerKey) + { + $this->config->setDeveloperKey($developerKey); + } + + /** + * Set the hd (hosted domain) parameter streamlines the login process for + * Google Apps hosted accounts. By including the domain of the user, you + * restrict sign-in to accounts at that domain. + * @param $hd string - the domain to use. + */ + public function setHostedDomain($hd) + { + $this->config->setHostedDomain($hd); + } + + /** + * Set the prompt hint. Valid values are none, consent and select_account. + * If no value is specified and the user has not previously authorized + * access, then the user is shown a consent screen. + * @param $prompt string + */ + public function setPrompt($prompt) + { + $this->config->setPrompt($prompt); + } + + /** + * openid.realm is a parameter from the OpenID 2.0 protocol, not from OAuth + * 2.0. It is used in OpenID 2.0 requests to signify the URL-space for which + * an authentication request is valid. + * @param $realm string - the URL-space to use. + */ + public function setOpenidRealm($realm) + { + $this->config->setOpenidRealm($realm); + } + + /** + * If this is provided with the value true, and the authorization request is + * granted, the authorization will include any previous authorizations + * granted to this user/application combination for other scopes. + * @param $include boolean - the URL-space to use. + */ + public function setIncludeGrantedScopes($include) + { + $this->config->setIncludeGrantedScopes($include); + } + + /** + * Fetches a fresh OAuth 2.0 access token with the given refresh token. + * @param string $refreshToken + */ + public function refreshToken($refreshToken) + { + $this->getAuth()->refreshToken($refreshToken); + } + + /** + * Revoke an OAuth2 access token or refresh token. This method will revoke the current access + * token, if a token isn't provided. + * @throws Google_Auth_Exception + * @param string|null $token The token (access token or a refresh token) that should be revoked. + * @return boolean Returns True if the revocation was successful, otherwise False. + */ + public function revokeToken($token = null) + { + return $this->getAuth()->revokeToken($token); + } + + /** + * Verify an id_token. This method will verify the current id_token, if one + * isn't provided. + * @throws Google_Auth_Exception + * @param string|null $token The token (id_token) that should be verified. + * @return Google_Auth_LoginTicket Returns an apiLoginTicket if the verification was + * successful. + */ + public function verifyIdToken($token = null) + { + return $this->getAuth()->verifyIdToken($token); + } + + /** + * Verify a JWT that was signed with your own certificates. + * + * @param $id_token string The JWT token + * @param $cert_location array of certificates + * @param $audience string the expected consumer of the token + * @param $issuer string the expected issuer, defaults to Google + * @param [$max_expiry] the max lifetime of a token, defaults to MAX_TOKEN_LIFETIME_SECS + * @return mixed token information if valid, false if not + */ + public function verifySignedJwt($id_token, $cert_location, $audience, $issuer, $max_expiry = null) + { + $auth = new Google_Auth_OAuth2($this); + $certs = $auth->retrieveCertsFromLocation($cert_location); + return $auth->verifySignedJwtWithCerts($id_token, $certs, $audience, $issuer, $max_expiry); + } + + /** + * @param $creds Google_Auth_AssertionCredentials + */ + public function setAssertionCredentials(Google_Auth_AssertionCredentials $creds) + { + $this->getAuth()->setAssertionCredentials($creds); + } + + /** + * Set the scopes to be requested. Must be called before createAuthUrl(). + * Will remove any previously configured scopes. + * @param array $scopes, ie: array('https://www.googleapis.com/auth/plus.login', + * 'https://www.googleapis.com/auth/moderator') + */ + public function setScopes($scopes) + { + $this->requestedScopes = array(); + $this->addScope($scopes); + } + + /** + * This functions adds a scope to be requested as part of the OAuth2.0 flow. + * Will append any scopes not previously requested to the scope parameter. + * A single string will be treated as a scope to request. An array of strings + * will each be appended. + * @param $scope_or_scopes string|array e.g. "profile" + */ + public function addScope($scope_or_scopes) + { + if (is_string($scope_or_scopes) && !in_array($scope_or_scopes, $this->requestedScopes)) { + $this->requestedScopes[] = $scope_or_scopes; + } else if (is_array($scope_or_scopes)) { + foreach ($scope_or_scopes as $scope) { + $this->addScope($scope); + } + } + } + + /** + * Returns the list of scopes requested by the client + * @return array the list of scopes + * + */ + public function getScopes() + { + return $this->requestedScopes; + } + + /** + * Declare whether batch calls should be used. This may increase throughput + * by making multiple requests in one connection. + * + * @param boolean $useBatch True if the batch support should + * be enabled. Defaults to False. + */ + public function setUseBatch($useBatch) + { + // This is actually an alias for setDefer. + $this->setDefer($useBatch); + } + + /** + * Declare whether making API calls should make the call immediately, or + * return a request which can be called with ->execute(); + * + * @param boolean $defer True if calls should not be executed right away. + */ + public function setDefer($defer) + { + $this->deferExecution = $defer; + } + + /** + * Helper method to execute deferred HTTP requests. + * + * @param $request Google_Http_Request|Google_Http_Batch + * @throws Google_Exception + * @return object of the type of the expected class or array. + */ + public function execute($request) + { + if ($request instanceof Google_Http_Request) { + $request->setUserAgent( + $this->getApplicationName() + . " " . self::USER_AGENT_SUFFIX + . $this->getLibraryVersion() + ); + if (!$this->getClassConfig("Google_Http_Request", "disable_gzip")) { + $request->enableGzip(); + } + $request->maybeMoveParametersToBody(); + return Google_Http_REST::execute($this, $request); + } else if ($request instanceof Google_Http_Batch) { + return $request->execute(); + } else { + throw new Google_Exception("Do not know how to execute this type of object."); + } + } + + /** + * Whether or not to return raw requests + * @return boolean + */ + public function shouldDefer() + { + return $this->deferExecution; + } + + /** + * @return Google_Auth_Abstract Authentication implementation + */ + public function getAuth() + { + if (!isset($this->auth)) { + $class = $this->config->getAuthClass(); + $this->auth = new $class($this); + } + return $this->auth; + } + + /** + * @return Google_IO_Abstract IO implementation + */ + public function getIo() + { + if (!isset($this->io)) { + $class = $this->config->getIoClass(); + $this->io = new $class($this); + } + return $this->io; + } + + /** + * @return Google_Cache_Abstract Cache implementation + */ + public function getCache() + { + if (!isset($this->cache)) { + $class = $this->config->getCacheClass(); + $this->cache = new $class($this); + } + return $this->cache; + } + + /** + * @return Google_Logger_Abstract Logger implementation + */ + public function getLogger() + { + if (!isset($this->logger)) { + $class = $this->config->getLoggerClass(); + $this->logger = new $class($this); + } + return $this->logger; + } + + /** + * Retrieve custom configuration for a specific class. + * @param $class string|object - class or instance of class to retrieve + * @param $key string optional - key to retrieve + * @return array + */ + public function getClassConfig($class, $key = null) + { + if (!is_string($class)) { + $class = get_class($class); + } + return $this->config->getClassConfig($class, $key); + } + + /** + * Set configuration specific to a given class. + * $config->setClassConfig('Google_Cache_File', + * array('directory' => '/tmp/cache')); + * @param $class string|object - The class name for the configuration + * @param $config string key or an array of configuration values + * @param $value string optional - if $config is a key, the value + * + */ + public function setClassConfig($class, $config, $value = null) + { + if (!is_string($class)) { + $class = get_class($class); + } + $this->config->setClassConfig($class, $config, $value); + + } + + /** + * @return string the base URL to use for calls to the APIs + */ + public function getBasePath() + { + return $this->config->getBasePath(); + } + + /** + * @return string the name of the application + */ + public function getApplicationName() + { + return $this->config->getApplicationName(); + } + + /** + * Are we running in Google AppEngine? + * return bool + */ + public function isAppEngine() + { + return (isset($_SERVER['SERVER_SOFTWARE']) && + strpos($_SERVER['SERVER_SOFTWARE'], 'Google App Engine') !== false); + } +} diff --git a/plugins/updraftplus/includes/Google/Collection.php b/plugins/updraftplus/includes/Google/Collection.php new file mode 100644 index 0000000..3f4c301 --- /dev/null +++ b/plugins/updraftplus/includes/Google/Collection.php @@ -0,0 +1,101 @@ +modelData[$this->collection_key]) + && is_array($this->modelData[$this->collection_key])) { + reset($this->modelData[$this->collection_key]); + } + } + + public function current() + { + $this->coerceType($this->key()); + if (is_array($this->modelData[$this->collection_key])) { + return current($this->modelData[$this->collection_key]); + } + } + + public function key() + { + if (isset($this->modelData[$this->collection_key]) + && is_array($this->modelData[$this->collection_key])) { + return key($this->modelData[$this->collection_key]); + } + } + + public function next() + { + return next($this->modelData[$this->collection_key]); + } + + public function valid() + { + $key = $this->key(); + return $key !== null && $key !== false; + } + + public function count() + { + if (!isset($this->modelData[$this->collection_key])) { + return 0; + } + return count($this->modelData[$this->collection_key]); + } + + public function offsetExists ($offset) + { + if (!is_numeric($offset)) { + return parent::offsetExists($offset); + } + return isset($this->modelData[$this->collection_key][$offset]); + } + + public function offsetGet($offset) + { + if (!is_numeric($offset)) { + return parent::offsetGet($offset); + } + $this->coerceType($offset); + return $this->modelData[$this->collection_key][$offset]; + } + + public function offsetSet($offset, $value) + { + if (!is_numeric($offset)) { + return parent::offsetSet($offset, $value); + } + $this->modelData[$this->collection_key][$offset] = $value; + } + + public function offsetUnset($offset) + { + if (!is_numeric($offset)) { + return parent::offsetUnset($offset); + } + unset($this->modelData[$this->collection_key][$offset]); + } + + private function coerceType($offset) + { + $typeKey = $this->keyType($this->collection_key); + if (isset($this->$typeKey) && !is_object($this->modelData[$this->collection_key][$offset])) { + $type = $this->$typeKey; + $this->modelData[$this->collection_key][$offset] = + new $type($this->modelData[$this->collection_key][$offset]); + } + } +} diff --git a/plugins/updraftplus/includes/Google/Config.php b/plugins/updraftplus/includes/Google/Config.php new file mode 100644 index 0000000..357a7fc --- /dev/null +++ b/plugins/updraftplus/includes/Google/Config.php @@ -0,0 +1,452 @@ +configuration = array( + // The application_name is included in the User-Agent HTTP header. + 'application_name' => '', + + // Which Authentication, Storage and HTTP IO classes to use. + 'auth_class' => 'Google_Auth_OAuth2', + 'io_class' => self::USE_AUTO_IO_SELECTION, + 'cache_class' => 'Google_Cache_File', + 'logger_class' => 'Google_Logger_Null', + + // Don't change these unless you're working against a special development + // or testing environment. + 'base_path' => 'https://www.googleapis.com', + + // Definition of class specific values, like file paths and so on. + 'classes' => array( + 'Google_IO_Abstract' => array( + 'request_timeout_seconds' => 100, + ), + 'Google_Logger_Abstract' => array( + 'level' => 'debug', + 'log_format' => "[%datetime%] %level%: %message% %context%\n", + 'date_format' => 'd/M/Y:H:i:s O', + 'allow_newlines' => true + ), + 'Google_Logger_File' => array( + 'file' => 'php://stdout', + 'mode' => 0640, + 'lock' => false, + ), + 'Google_Http_Request' => array( + // Disable the use of gzip on calls if set to true. Defaults to false. + 'disable_gzip' => self::GZIP_ENABLED, + + // We default gzip to disabled on uploads even if gzip is otherwise + // enabled, due to some issues seen with small packet sizes for uploads. + // Please test with this option before enabling gzip for uploads in + // a production environment. + 'enable_gzip_for_uploads' => self::GZIP_UPLOADS_DISABLED, + ), + // If you want to pass in OAuth 2.0 settings, they will need to be + // structured like this. + 'Google_Auth_OAuth2' => array( + // Keys for OAuth 2.0 access, see the API console at + // https://developers.google.com/console + 'client_id' => '', + 'client_secret' => '', + 'redirect_uri' => '', + + // Simple API access key, also from the API console. Ensure you get + // a Server key, and not a Browser key. + 'developer_key' => '', + + // Other parameters. + 'hd' => '', + 'prompt' => '', + 'openid.realm' => '', + 'include_granted_scopes' => '', + 'login_hint' => '', + 'request_visible_actions' => '', + 'access_type' => 'online', + 'approval_prompt' => 'auto', + 'federated_signon_certs_url' => + 'https://www.googleapis.com/oauth2/v1/certs', + ), + 'Google_Task_Runner' => array( + // Delays are specified in seconds + 'initial_delay' => 1, + 'max_delay' => 60, + // Base number for exponential backoff + 'factor' => 2, + // A random number between -jitter and jitter will be added to the + // factor on each iteration to allow for better distribution of + // retries. + 'jitter' => .5, + // Maximum number of retries allowed + 'retries' => 0 + ), + 'Google_Service_Exception' => array( + 'retry_map' => array( + '500' => self::TASK_RETRY_ALWAYS, + '503' => self::TASK_RETRY_ALWAYS, + 'rateLimitExceeded' => self::TASK_RETRY_ALWAYS, + 'userRateLimitExceeded' => self::TASK_RETRY_ALWAYS + ) + ), + 'Google_IO_Exception' => array( + 'retry_map' => !extension_loaded('curl') ? array() : array( + CURLE_COULDNT_RESOLVE_HOST => self::TASK_RETRY_ALWAYS, + CURLE_COULDNT_CONNECT => self::TASK_RETRY_ALWAYS, + CURLE_OPERATION_TIMEOUTED => self::TASK_RETRY_ALWAYS, + CURLE_SSL_CONNECT_ERROR => self::TASK_RETRY_ALWAYS, + CURLE_GOT_NOTHING => self::TASK_RETRY_ALWAYS + ) + ), + // Set a default directory for the file cache. + 'Google_Cache_File' => array( + 'directory' => sys_get_temp_dir() . '/Google_Client' + ) + ), + ); + if ($ini_file_location) { + $ini = parse_ini_file($ini_file_location, true); + if (is_array($ini) && count($ini)) { + $merged_configuration = $ini + $this->configuration; + if (isset($ini['classes']) && isset($this->configuration['classes'])) { + $merged_configuration['classes'] = $ini['classes'] + $this->configuration['classes']; + } + $this->configuration = $merged_configuration; + } + } + } + + /** + * Set configuration specific to a given class. + * $config->setClassConfig('Google_Cache_File', + * array('directory' => '/tmp/cache')); + * @param $class string The class name for the configuration + * @param $config string key or an array of configuration values + * @param $value string optional - if $config is a key, the value + */ + public function setClassConfig($class, $config, $value = null) + { + if (!is_array($config)) { + if (!isset($this->configuration['classes'][$class])) { + $this->configuration['classes'][$class] = array(); + } + $this->configuration['classes'][$class][$config] = $value; + } else { + $this->configuration['classes'][$class] = $config; + } + } + + public function getClassConfig($class, $key = null) + { + if (!isset($this->configuration['classes'][$class])) { + return null; + } + if ($key === null) { + return $this->configuration['classes'][$class]; + } else { + return $this->configuration['classes'][$class][$key]; + } + } + + /** + * Return the configured cache class. + * @return string + */ + public function getCacheClass() + { + return $this->configuration['cache_class']; + } + + /** + * Return the configured logger class. + * @return string + */ + public function getLoggerClass() + { + return $this->configuration['logger_class']; + } + + /** + * Return the configured Auth class. + * @return string + */ + public function getAuthClass() + { + return $this->configuration['auth_class']; + } + + /** + * Set the auth class. + * + * @param $class string the class name to set + */ + public function setAuthClass($class) + { + $prev = $this->configuration['auth_class']; + if (!isset($this->configuration['classes'][$class]) && + isset($this->configuration['classes'][$prev])) { + $this->configuration['classes'][$class] = + $this->configuration['classes'][$prev]; + } + $this->configuration['auth_class'] = $class; + } + + /** + * Set the IO class. + * + * @param $class string the class name to set + */ + public function setIoClass($class) + { + $prev = $this->configuration['io_class']; + if (!isset($this->configuration['classes'][$class]) && + isset($this->configuration['classes'][$prev])) { + $this->configuration['classes'][$class] = + $this->configuration['classes'][$prev]; + } + $this->configuration['io_class'] = $class; + } + + /** + * Set the cache class. + * + * @param $class string the class name to set + */ + public function setCacheClass($class) + { + $prev = $this->configuration['cache_class']; + if (!isset($this->configuration['classes'][$class]) && + isset($this->configuration['classes'][$prev])) { + $this->configuration['classes'][$class] = + $this->configuration['classes'][$prev]; + } + $this->configuration['cache_class'] = $class; + } + + /** + * Set the logger class. + * + * @param $class string the class name to set + */ + public function setLoggerClass($class) + { + $prev = $this->configuration['logger_class']; + if (!isset($this->configuration['classes'][$class]) && + isset($this->configuration['classes'][$prev])) { + $this->configuration['classes'][$class] = + $this->configuration['classes'][$prev]; + } + $this->configuration['logger_class'] = $class; + } + + /** + * Return the configured IO class. + * + * @return string + */ + public function getIoClass() + { + return $this->configuration['io_class']; + } + + /** + * Set the application name, this is included in the User-Agent HTTP header. + * @param string $name + */ + public function setApplicationName($name) + { + $this->configuration['application_name'] = $name; + } + + /** + * @return string the name of the application + */ + public function getApplicationName() + { + return $this->configuration['application_name']; + } + + /** + * Set the client ID for the auth class. + * @param $clientId string - the API console client ID + */ + public function setClientId($clientId) + { + $this->setAuthConfig('client_id', $clientId); + } + + /** + * Set the client secret for the auth class. + * @param $secret string - the API console client secret + */ + public function setClientSecret($secret) + { + $this->setAuthConfig('client_secret', $secret); + } + + /** + * Set the redirect uri for the auth class. Note that if using the + * Javascript based sign in flow, this should be the string 'postmessage'. + * + * @param $uri string - the URI that users should be redirected to + */ + public function setRedirectUri($uri) + { + $this->setAuthConfig('redirect_uri', $uri); + } + + /** + * Set the app activities for the auth class. + * @param $rva string a space separated list of app activity types + */ + public function setRequestVisibleActions($rva) + { + $this->setAuthConfig('request_visible_actions', $rva); + } + + /** + * Set the the access type requested (offline or online.) + * @param $access string - the access type + */ + public function setAccessType($access) + { + $this->setAuthConfig('access_type', $access); + } + + /** + * Set when to show the approval prompt (auto or force) + * @param $approval string - the approval request + */ + public function setApprovalPrompt($approval) + { + $this->setAuthConfig('approval_prompt', $approval); + } + + /** + * Set the login hint (email address or sub identifier) + * @param $hint string + */ + public function setLoginHint($hint) + { + $this->setAuthConfig('login_hint', $hint); + } + + /** + * Set the developer key for the auth class. Note that this is separate value + * from the client ID - if it looks like a URL, its a client ID! + * @param $key string - the API console developer key + */ + public function setDeveloperKey($key) + { + $this->setAuthConfig('developer_key', $key); + } + + /** + * Set the hd (hosted domain) parameter streamlines the login process for + * Google Apps hosted accounts. By including the domain of the user, you + * restrict sign-in to accounts at that domain. + * + * This should not be used to ensure security on your application - check + * the hd values within an id token (@see Google_Auth_LoginTicket) after sign + * in to ensure that the user is from the domain you were expecting. + * + * @param $hd string - the domain to use. + */ + public function setHostedDomain($hd) + { + $this->setAuthConfig('hd', $hd); + } + + /** + * Set the prompt hint. Valid values are none, consent and select_account. + * If no value is specified and the user has not previously authorized + * access, then the user is shown a consent screen. + * @param $prompt string + */ + public function setPrompt($prompt) + { + $this->setAuthConfig('prompt', $prompt); + } + + /** + * openid.realm is a parameter from the OpenID 2.0 protocol, not from OAuth + * 2.0. It is used in OpenID 2.0 requests to signify the URL-space for which + * an authentication request is valid. + * @param $realm string - the URL-space to use. + */ + public function setOpenidRealm($realm) + { + $this->setAuthConfig('openid.realm', $realm); + } + + /** + * If this is provided with the value true, and the authorization request is + * granted, the authorization will include any previous authorizations + * granted to this user/application combination for other scopes. + * @param $include boolean - the URL-space to use. + */ + public function setIncludeGrantedScopes($include) + { + $this->setAuthConfig( + 'include_granted_scopes', + $include ? "true" : "false" + ); + } + + /** + * @return string the base URL to use for API calls + */ + public function getBasePath() + { + return $this->configuration['base_path']; + } + + /** + * Set the auth configuration for the current auth class. + * @param $key - the key to set + * @param $value - the parameter value + */ + private function setAuthConfig($key, $value) + { + if (!isset($this->configuration['classes'][$this->getAuthClass()])) { + $this->configuration['classes'][$this->getAuthClass()] = array(); + } + $this->configuration['classes'][$this->getAuthClass()][$key] = $value; + } +} diff --git a/plugins/updraftplus/includes/Google/Exception.php b/plugins/updraftplus/includes/Google/Exception.php new file mode 100644 index 0000000..af80269 --- /dev/null +++ b/plugins/updraftplus/includes/Google/Exception.php @@ -0,0 +1,20 @@ +client = $client; + $this->base_path = $this->client->getBasePath(); + $this->expected_classes = array(); + $boundary = (false == $boundary) ? mt_rand() : $boundary; + $this->boundary = str_replace('"', '', $boundary); + } + + public function add(Google_Http_Request $request, $key = false) + { + if (false == $key) { + $key = mt_rand(); + } + + $this->requests[$key] = $request; + } + + public function execute() + { + $body = ''; + + /** @var Google_Http_Request $req */ + foreach ($this->requests as $key => $req) { + $body .= "--{$this->boundary}\n"; + $body .= $req->toBatchString($key) . "\n"; + $this->expected_classes["response-" . $key] = $req->getExpectedClass(); + } + + $body = rtrim($body); + $body .= "\n--{$this->boundary}--"; + + $url = $this->base_path . '/batch'; + $httpRequest = new Google_Http_Request($url, 'POST'); + $httpRequest->setRequestHeaders( + array('Content-Type' => 'multipart/mixed; boundary=' . $this->boundary) + ); + + $httpRequest->setPostBody($body); + $response = $this->client->getIo()->makeRequest($httpRequest); + + return $this->parseResponse($response); + } + + public function parseResponse(Google_Http_Request $response) + { + $contentType = $response->getResponseHeader('content-type'); + $contentType = explode(';', $contentType); + $boundary = false; + foreach ($contentType as $part) { + $part = (explode('=', $part, 2)); + if (isset($part[0]) && 'boundary' == trim($part[0])) { + $boundary = $part[1]; + } + } + + $body = $response->getResponseBody(); + if ($body) { + $body = str_replace("--$boundary--", "--$boundary", $body); + $parts = explode("--$boundary", $body); + $responses = array(); + + foreach ($parts as $part) { + $part = trim($part); + if (!empty($part)) { + list($metaHeaders, $part) = explode("\r\n\r\n", $part, 2); + $metaHeaders = $this->client->getIo()->getHttpResponseHeaders($metaHeaders); + + $status = substr($part, 0, strpos($part, "\n")); + $status = explode(" ", $status); + $status = $status[1]; + + list($partHeaders, $partBody) = $this->client->getIo()->ParseHttpResponse($part, false); + $response = new Google_Http_Request(""); + $response->setResponseHttpCode($status); + $response->setResponseHeaders($partHeaders); + $response->setResponseBody($partBody); + + // Need content id. + $key = $metaHeaders['content-id']; + + if (isset($this->expected_classes[$key]) && + strlen($this->expected_classes[$key]) > 0) { + $class = $this->expected_classes[$key]; + $response->setExpectedClass($class); + } + + try { + $response = Google_Http_REST::decodeHttpResponse($response, $this->client); + $responses[$key] = $response; + } catch (Google_Service_Exception $e) { + // Store the exception as the response, so successful responses + // can be processed. + $responses[$key] = $e; + } + } + } + + return $responses; + } + + return null; + } +} diff --git a/plugins/updraftplus/includes/Google/Http/CacheParser.php b/plugins/updraftplus/includes/Google/Http/CacheParser.php new file mode 100644 index 0000000..a6167ad --- /dev/null +++ b/plugins/updraftplus/includes/Google/Http/CacheParser.php @@ -0,0 +1,185 @@ +getRequestMethod(); + if (! in_array($method, self::$CACHEABLE_HTTP_METHODS)) { + return false; + } + + // Don't cache authorized requests/responses. + // [rfc2616-14.8] When a shared cache receives a request containing an + // Authorization field, it MUST NOT return the corresponding response + // as a reply to any other request... + if ($resp->getRequestHeader("authorization")) { + return false; + } + + return true; + } + + /** + * Check if an HTTP response can be cached by a private local cache. + * + * @static + * @param Google_Http_Request $resp + * @return bool True if the response is cacheable. + * False if the response is un-cacheable. + */ + public static function isResponseCacheable(Google_Http_Request $resp) + { + // First, check if the HTTP request was cacheable before inspecting the + // HTTP response. + if (false == self::isRequestCacheable($resp)) { + return false; + } + + $code = $resp->getResponseHttpCode(); + if (! in_array($code, self::$CACHEABLE_STATUS_CODES)) { + return false; + } + + // The resource is uncacheable if the resource is already expired and + // the resource doesn't have an ETag for revalidation. + $etag = $resp->getResponseHeader("etag"); + if (self::isExpired($resp) && $etag == false) { + return false; + } + + // [rfc2616-14.9.2] If [no-store is] sent in a response, a cache MUST NOT + // store any part of either this response or the request that elicited it. + $cacheControl = $resp->getParsedCacheControl(); + if (isset($cacheControl['no-store'])) { + return false; + } + + // Pragma: no-cache is an http request directive, but is occasionally + // used as a response header incorrectly. + $pragma = $resp->getResponseHeader('pragma'); + if ($pragma == 'no-cache' || strpos($pragma, 'no-cache') !== false) { + return false; + } + + // [rfc2616-14.44] Vary: * is extremely difficult to cache. "It implies that + // a cache cannot determine from the request headers of a subsequent request + // whether this response is the appropriate representation." + // Given this, we deem responses with the Vary header as uncacheable. + $vary = $resp->getResponseHeader('vary'); + if ($vary) { + return false; + } + + return true; + } + + /** + * @static + * @param Google_Http_Request $resp + * @return bool True if the HTTP response is considered to be expired. + * False if it is considered to be fresh. + */ + public static function isExpired(Google_Http_Request $resp) + { + // HTTP/1.1 clients and caches MUST treat other invalid date formats, + // especially including the value “0”, as in the past. + $parsedExpires = false; + $responseHeaders = $resp->getResponseHeaders(); + + if (isset($responseHeaders['expires'])) { + $rawExpires = $responseHeaders['expires']; + // Check for a malformed expires header first. + if (empty($rawExpires) || (is_numeric($rawExpires) && $rawExpires <= 0)) { + return true; + } + + // See if we can parse the expires header. + $parsedExpires = strtotime($rawExpires); + if (false == $parsedExpires || $parsedExpires <= 0) { + return true; + } + } + + // Calculate the freshness of an http response. + $freshnessLifetime = false; + $cacheControl = $resp->getParsedCacheControl(); + if (isset($cacheControl['max-age'])) { + $freshnessLifetime = $cacheControl['max-age']; + } + + $rawDate = $resp->getResponseHeader('date'); + $parsedDate = strtotime($rawDate); + + if (empty($rawDate) || false == $parsedDate) { + // We can't default this to now, as that means future cache reads + // will always pass with the logic below, so we will require a + // date be injected if not supplied. + throw new Google_Exception("All cacheable requests must have creation dates."); + } + + if (false == $freshnessLifetime && isset($responseHeaders['expires'])) { + $freshnessLifetime = $parsedExpires - $parsedDate; + } + + if (false == $freshnessLifetime) { + return true; + } + + // Calculate the age of an http response. + $age = max(0, time() - $parsedDate); + if (isset($responseHeaders['age'])) { + $age = max($age, strtotime($responseHeaders['age'])); + } + + return $freshnessLifetime <= $age; + } + + /** + * Determine if a cache entry should be revalidated with by the origin. + * + * @param Google_Http_Request $response + * @return bool True if the entry is expired, else return false. + */ + public static function mustRevalidate(Google_Http_Request $response) + { + // [13.3] When a cache has a stale entry that it would like to use as a + // response to a client's request, it first has to check with the origin + // server to see if its cached entry is still usable. + return self::isExpired($response); + } +} diff --git a/plugins/updraftplus/includes/Google/Http/MediaFileUpload.php b/plugins/updraftplus/includes/Google/Http/MediaFileUpload.php new file mode 100644 index 0000000..dd4590c --- /dev/null +++ b/plugins/updraftplus/includes/Google/Http/MediaFileUpload.php @@ -0,0 +1,306 @@ +client = $client; + $this->request = $request; + $this->mimeType = $mimeType; + $this->data = $data; + $this->size = strlen($this->data); + $this->resumable = $resumable; + if (!$chunkSize) { + $chunkSize = 256 * 1024; + } + $this->chunkSize = $chunkSize; + $this->progress = 0; + $this->boundary = $boundary; + + // Process Media Request + $this->process(); + } + + /** + * Set the size of the file that is being uploaded. + * @param $size - int file size in bytes + */ + public function setFileSize($size) + { + $this->size = $size; + } + + /** + * Return the progress on the upload + * @return int progress in bytes uploaded. + */ + public function getProgress() + { + return $this->progress; + } + + /** + * Return the HTTP result code from the last call made. + * @return int code + */ + public function getHttpResultCode() + { + return $this->httpResultCode; + } + + /** + * Send the next part of the file to upload. + * @param [$chunk] the next set of bytes to send. If false will used $data passed + * at construct time. + */ + public function nextChunk($chunk = false) + { + if (false == $this->resumeUri) { + $this->resumeUri = $this->getResumeUri(); + } + + if (false == $chunk) { + $chunk = substr($this->data, $this->progress, $this->chunkSize); + } + + $lastBytePos = $this->progress + strlen($chunk) - 1; + $headers = array( + 'content-range' => "bytes $this->progress-$lastBytePos/$this->size", + 'content-type' => $this->request->getRequestHeader('content-type'), + 'content-length' => $this->chunkSize, + 'expect' => '', + ); + + $httpRequest = new Google_Http_Request( + $this->resumeUri, + 'PUT', + $headers, + $chunk + ); + + if ($this->client->getClassConfig("Google_Http_Request", "enable_gzip_for_uploads")) { + $httpRequest->enableGzip(); + } else { + $httpRequest->disableGzip(); + } + + $response = $this->client->getIo()->makeRequest($httpRequest); + $response->setExpectedClass($this->request->getExpectedClass()); + $code = $response->getResponseHttpCode(); + $this->httpResultCode = $code; + + if (308 == $code) { + // Track the amount uploaded. + $range = explode('-', $response->getResponseHeader('range')); + $this->progress = $range[1] + 1; + + // Allow for changing upload URLs. + $location = $response->getResponseHeader('location'); + if ($location) { + $this->resumeUri = $location; + } + + // No problems, but upload not complete. + return false; + } else { + return Google_Http_REST::decodeHttpResponse($response, $this->client); + } + } + + /** + * @param $meta + * @param $params + * @return array|bool + * @visible for testing + */ + private function process() + { + $postBody = false; + $contentType = false; + + $meta = $this->request->getPostBody(); + $meta = is_string($meta) ? json_decode($meta, true) : $meta; + + $uploadType = $this->getUploadType($meta); + $this->request->setQueryParam('uploadType', $uploadType); + $this->transformToUploadUrl(); + $mimeType = $this->mimeType ? + $this->mimeType : + $this->request->getRequestHeader('content-type'); + + if (self::UPLOAD_RESUMABLE_TYPE == $uploadType) { + $contentType = $mimeType; + $postBody = is_string($meta) ? $meta : json_encode($meta); + } else if (self::UPLOAD_MEDIA_TYPE == $uploadType) { + $contentType = $mimeType; + $postBody = $this->data; + } else if (self::UPLOAD_MULTIPART_TYPE == $uploadType) { + // This is a multipart/related upload. + $boundary = $this->boundary ? $this->boundary : mt_rand(); + $boundary = str_replace('"', '', $boundary); + $contentType = 'multipart/related; boundary=' . $boundary; + $related = "--$boundary\r\n"; + $related .= "Content-Type: application/json; charset=UTF-8\r\n"; + $related .= "\r\n" . json_encode($meta) . "\r\n"; + $related .= "--$boundary\r\n"; + $related .= "Content-Type: $mimeType\r\n"; + $related .= "Content-Transfer-Encoding: base64\r\n"; + $related .= "\r\n" . base64_encode($this->data) . "\r\n"; + $related .= "--$boundary--"; + $postBody = $related; + } + + $this->request->setPostBody($postBody); + + if (isset($contentType) && $contentType) { + $contentTypeHeader['content-type'] = $contentType; + $this->request->setRequestHeaders($contentTypeHeader); + } + } + + private function transformToUploadUrl() + { + $base = $this->request->getBaseComponent(); + $this->request->setBaseComponent($base . '/upload'); + } + + /** + * Valid upload types: + * - resumable (UPLOAD_RESUMABLE_TYPE) + * - media (UPLOAD_MEDIA_TYPE) + * - multipart (UPLOAD_MULTIPART_TYPE) + * @param $meta + * @return string + * @visible for testing + */ + public function getUploadType($meta) + { + if ($this->resumable) { + return self::UPLOAD_RESUMABLE_TYPE; + } + + if (false == $meta && $this->data) { + return self::UPLOAD_MEDIA_TYPE; + } + + return self::UPLOAD_MULTIPART_TYPE; + } + + private function getResumeUri() + { + $result = null; + $body = $this->request->getPostBody(); + if ($body) { + $headers = array( + 'content-type' => 'application/json; charset=UTF-8', + 'content-length' => Google_Utils::getStrLen($body), + 'x-upload-content-type' => $this->mimeType, + 'x-upload-content-length' => $this->size, + 'expect' => '', + ); + $this->request->setRequestHeaders($headers); + } + + $response = $this->client->getIo()->makeRequest($this->request); + $location = $response->getResponseHeader('location'); + $code = $response->getResponseHttpCode(); + + if (200 == $code && true == $location) { + return $location; + } + $message = $code; + $body = @json_decode($response->getResponseBody()); + if (!empty( $body->error->errors ) ) { + $message .= ': '; + foreach ($body->error->errors as $error) { + $message .= "{$error->domain}, {$error->message};"; + } + $message = rtrim($message, ';'); + } + + $error = "Failed to start the resumable upload (HTTP {$message})"; + $this->client->getLogger()->error($error); + throw new Google_Exception($error); + } +} diff --git a/plugins/updraftplus/includes/Google/Http/REST.php b/plugins/updraftplus/includes/Google/Http/REST.php new file mode 100644 index 0000000..16859ba --- /dev/null +++ b/plugins/updraftplus/includes/Google/Http/REST.php @@ -0,0 +1,179 @@ +getRequestMethod(), $req->getUrl()), + array(get_class(), 'doExecute'), + array($client, $req) + ); + + return $runner->run(); + } + + /** + * Executes a Google_Http_Request + * + * @param Google_Client $client + * @param Google_Http_Request $req + * @return array decoded result + * @throws Google_Service_Exception on server side error (ie: not authenticated, + * invalid or malformed post body, invalid url) + */ + public static function doExecute(Google_Client $client, Google_Http_Request $req) + { + $httpRequest = $client->getIo()->makeRequest($req); + $httpRequest->setExpectedClass($req->getExpectedClass()); + return self::decodeHttpResponse($httpRequest, $client); + } + + /** + * Decode an HTTP Response. + * @static + * @throws Google_Service_Exception + * @param Google_Http_Request $response The http response to be decoded. + * @param Google_Client $client + * @return mixed|null + */ + public static function decodeHttpResponse($response, Google_Client $client = null) + { + $code = $response->getResponseHttpCode(); + $body = $response->getResponseBody(); + $decoded = null; + + if ((intVal($code)) >= 300) { + $decoded = json_decode($body, true); + $err = 'Error calling ' . $response->getRequestMethod() . ' ' . $response->getUrl(); + if (isset($decoded['error']) && + isset($decoded['error']['message']) && + isset($decoded['error']['code'])) { + // if we're getting a json encoded error definition, use that instead of the raw response + // body for improved readability + $err .= ": ({$decoded['error']['code']}) {$decoded['error']['message']}"; + } else { + $err .= ": ($code) $body"; + } + + $errors = null; + // Specific check for APIs which don't return error details, such as Blogger. + if (isset($decoded['error']) && isset($decoded['error']['errors'])) { + $errors = $decoded['error']['errors']; + } + + $map = null; + if ($client) { + $client->getLogger()->error( + $err, + array('code' => $code, 'errors' => $errors) + ); + + $map = $client->getClassConfig( + 'Google_Service_Exception', + 'retry_map' + ); + } + throw new Google_Service_Exception($err, $code, null, $errors, $map); + } + + // Only attempt to decode the response, if the response code wasn't (204) 'no content' + if ($code != '204') { + if ($response->getExpectedRaw()) { + return $body; + } + + $decoded = json_decode($body, true); + if ($decoded === null || $decoded === "") { + # UpdraftPlus patch + $error = "Invalid json in service response ($code): $body"; + if ($client) { + $client->getLogger()->error($error); + } + throw new Google_Service_Exception($error); + } + + if ($response->getExpectedClass()) { + $class = $response->getExpectedClass(); + $decoded = new $class($decoded); + } + } + return $decoded; + } + + /** + * Parse/expand request parameters and create a fully qualified + * request uri. + * @static + * @param string $servicePath + * @param string $restPath + * @param array $params + * @return string $requestUrl + */ + public static function createRequestUri($servicePath, $restPath, $params) + { + $requestUrl = $servicePath . $restPath; + $uriTemplateVars = array(); + $queryVars = array(); + foreach ($params as $paramName => $paramSpec) { + if ($paramSpec['type'] == 'boolean') { + $paramSpec['value'] = ($paramSpec['value']) ? 'true' : 'false'; + } + if ($paramSpec['location'] == 'path') { + $uriTemplateVars[$paramName] = $paramSpec['value']; + } else if ($paramSpec['location'] == 'query') { + if (isset($paramSpec['repeated']) && is_array($paramSpec['value'])) { + foreach ($paramSpec['value'] as $value) { + $queryVars[] = $paramName . '=' . rawurlencode(rawurldecode($value)); + } + } else { + $queryVars[] = $paramName . '=' . rawurlencode(rawurldecode($paramSpec['value'])); + } + } + } + + if (count($uriTemplateVars)) { + $uriTemplateParser = new Google_Utils_URITemplate(); + $requestUrl = $uriTemplateParser->parse($requestUrl, $uriTemplateVars); + } + + if (count($queryVars)) { + $requestUrl .= '?' . implode($queryVars, '&'); + } + + return $requestUrl; + } +} diff --git a/plugins/updraftplus/includes/Google/Http/Request.php b/plugins/updraftplus/includes/Google/Http/Request.php new file mode 100644 index 0000000..b3113d5 --- /dev/null +++ b/plugins/updraftplus/includes/Google/Http/Request.php @@ -0,0 +1,504 @@ + + * @author Chirag Shah + * + */ +class Google_Http_Request +{ + const GZIP_UA = " (gzip)"; + + private $batchHeaders = array( + 'Content-Type' => 'application/http', + 'Content-Transfer-Encoding' => 'binary', + 'MIME-Version' => '1.0', + ); + + protected $queryParams; + protected $requestMethod; + protected $requestHeaders; + protected $baseComponent = null; + protected $path; + protected $postBody; + protected $userAgent; + protected $canGzip = null; + + protected $responseHttpCode; + protected $responseHeaders; + protected $responseBody; + + protected $expectedClass; + protected $expectedRaw = false; + + public $accessKey; + + public function __construct( + $url, + $method = 'GET', + $headers = array(), + $postBody = null + ) { + $this->setUrl($url); + $this->setRequestMethod($method); + $this->setRequestHeaders($headers); + $this->setPostBody($postBody); + } + + /** + * Misc function that returns the base url component of the $url + * used by the OAuth signing class to calculate the base string + * @return string The base url component of the $url. + */ + public function getBaseComponent() + { + return $this->baseComponent; + } + + /** + * Set the base URL that path and query parameters will be added to. + * @param $baseComponent string + */ + public function setBaseComponent($baseComponent) + { + $this->baseComponent = $baseComponent; + } + + /** + * Enable support for gzipped responses with this request. + */ + public function enableGzip() + { + $this->setRequestHeaders(array("Accept-Encoding" => "gzip")); + $this->canGzip = true; + $this->setUserAgent($this->userAgent); + } + + /** + * Disable support for gzip responses with this request. + */ + public function disableGzip() + { + if ( + isset($this->requestHeaders['accept-encoding']) && + $this->requestHeaders['accept-encoding'] == "gzip" + ) { + unset($this->requestHeaders['accept-encoding']); + } + $this->canGzip = false; + $this->userAgent = str_replace(self::GZIP_UA, "", $this->userAgent); + } + + /** + * Can this request accept a gzip response? + * @return bool + */ + public function canGzip() + { + return $this->canGzip; + } + + /** + * Misc function that returns an array of the query parameters of the current + * url used by the OAuth signing class to calculate the signature + * @return array Query parameters in the query string. + */ + public function getQueryParams() + { + return $this->queryParams; + } + + /** + * Set a new query parameter. + * @param $key - string to set, does not need to be URL encoded + * @param $value - string to set, does not need to be URL encoded + */ + public function setQueryParam($key, $value) + { + $this->queryParams[$key] = $value; + } + + /** + * @return string HTTP Response Code. + */ + public function getResponseHttpCode() + { + return (int) $this->responseHttpCode; + } + + /** + * @param int $responseHttpCode HTTP Response Code. + */ + public function setResponseHttpCode($responseHttpCode) + { + $this->responseHttpCode = $responseHttpCode; + } + + /** + * @return $responseHeaders (array) HTTP Response Headers. + */ + public function getResponseHeaders() + { + return $this->responseHeaders; + } + + /** + * @return string HTTP Response Body + */ + public function getResponseBody() + { + return $this->responseBody; + } + + /** + * Set the class the response to this request should expect. + * + * @param $class string the class name + */ + public function setExpectedClass($class) + { + $this->expectedClass = $class; + } + + /** + * Retrieve the expected class the response should expect. + * @return string class name + */ + public function getExpectedClass() + { + return $this->expectedClass; + } + + /** + * Enable expected raw response + */ + public function enableExpectedRaw() + { + $this->expectedRaw = true; + } + + /** + * Disable expected raw response + */ + public function disableExpectedRaw() + { + $this->expectedRaw = false; + } + + /** + * Expected raw response or not. + * @return boolean expected raw response + */ + public function getExpectedRaw() + { + return $this->expectedRaw; + } + + /** + * @param array $headers The HTTP response headers + * to be normalized. + */ + public function setResponseHeaders($headers) + { + $headers = Google_Utils::normalize($headers); + if ($this->responseHeaders) { + $headers = array_merge($this->responseHeaders, $headers); + } + + $this->responseHeaders = $headers; + } + + /** + * @param string $key + * @return array|boolean Returns the requested HTTP header or + * false if unavailable. + */ + public function getResponseHeader($key) + { + return isset($this->responseHeaders[$key]) + ? $this->responseHeaders[$key] + : false; + } + + /** + * @param string $responseBody The HTTP response body. + */ + public function setResponseBody($responseBody) + { + $this->responseBody = $responseBody; + } + + /** + * @return string $url The request URL. + */ + public function getUrl() + { + return $this->baseComponent . $this->path . + (count($this->queryParams) ? + "?" . $this->buildQuery($this->queryParams) : + ''); + } + + /** + * @return string $method HTTP Request Method. + */ + public function getRequestMethod() + { + return $this->requestMethod; + } + + /** + * @return array $headers HTTP Request Headers. + */ + public function getRequestHeaders() + { + return $this->requestHeaders; + } + + /** + * @param string $key + * @return array|boolean Returns the requested HTTP header or + * false if unavailable. + */ + public function getRequestHeader($key) + { + return isset($this->requestHeaders[$key]) + ? $this->requestHeaders[$key] + : false; + } + + /** + * @return string $postBody HTTP Request Body. + */ + public function getPostBody() + { + return $this->postBody; + } + + /** + * @param string $url the url to set + */ + public function setUrl($url) + { + if (substr($url, 0, 4) != 'http') { + // Force the path become relative. + if (substr($url, 0, 1) !== '/') { + $url = '/' . $url; + } + } + $parts = parse_url($url); + if (isset($parts['host'])) { + $this->baseComponent = sprintf( + "%s%s%s", + isset($parts['scheme']) ? $parts['scheme'] . "://" : '', + isset($parts['host']) ? $parts['host'] : '', + isset($parts['port']) ? ":" . $parts['port'] : '' + ); + } + $this->path = isset($parts['path']) ? $parts['path'] : ''; + $this->queryParams = array(); + if (isset($parts['query'])) { + $this->queryParams = $this->parseQuery($parts['query']); + } + } + + /** + * @param string $method Set he HTTP Method and normalize + * it to upper-case, as required by HTTP. + * + */ + public function setRequestMethod($method) + { + $this->requestMethod = strtoupper($method); + } + + /** + * @param array $headers The HTTP request headers + * to be set and normalized. + */ + public function setRequestHeaders($headers) + { + $headers = Google_Utils::normalize($headers); + if ($this->requestHeaders) { + $headers = array_merge($this->requestHeaders, $headers); + } + $this->requestHeaders = $headers; + } + + /** + * @param string $postBody the postBody to set + */ + public function setPostBody($postBody) + { + $this->postBody = $postBody; + } + + /** + * Set the User-Agent Header. + * @param string $userAgent The User-Agent. + */ + public function setUserAgent($userAgent) + { + $this->userAgent = $userAgent; + if ($this->canGzip) { + $this->userAgent = $userAgent . self::GZIP_UA; + } + } + + /** + * @return string The User-Agent. + */ + public function getUserAgent() + { + return $this->userAgent; + } + + /** + * Returns a cache key depending on if this was an OAuth signed request + * in which case it will use the non-signed url and access key to make this + * cache key unique per authenticated user, else use the plain request url + * @return string The md5 hash of the request cache key. + */ + public function getCacheKey() + { + $key = $this->getUrl(); + + if (isset($this->accessKey)) { + $key .= $this->accessKey; + } + + if (isset($this->requestHeaders['authorization'])) { + $key .= $this->requestHeaders['authorization']; + } + + return md5($key); + } + + public function getParsedCacheControl() + { + $parsed = array(); + $rawCacheControl = $this->getResponseHeader('cache-control'); + if ($rawCacheControl) { + $rawCacheControl = str_replace(', ', '&', $rawCacheControl); + parse_str($rawCacheControl, $parsed); + } + + return $parsed; + } + + /** + * @param string $id + * @return string A string representation of the HTTP Request. + */ + public function toBatchString($id) + { + $str = ''; + $path = parse_url($this->getUrl(), PHP_URL_PATH) . "?" . + http_build_query($this->queryParams); + $str .= $this->getRequestMethod() . ' ' . $path . " HTTP/1.1\n"; + + foreach ($this->getRequestHeaders() as $key => $val) { + $str .= $key . ': ' . $val . "\n"; + } + + if ($this->getPostBody()) { + $str .= "\n"; + $str .= $this->getPostBody(); + } + + $headers = ''; + foreach ($this->batchHeaders as $key => $val) { + $headers .= $key . ': ' . $val . "\n"; + } + + $headers .= "Content-ID: $id\n"; + $str = $headers . "\n" . $str; + + return $str; + } + + /** + * Our own version of parse_str that allows for multiple variables + * with the same name. + * @param $string - the query string to parse + */ + private function parseQuery($string) + { + $return = array(); + $parts = explode("&", $string); + foreach ($parts as $part) { + list($key, $value) = explode('=', $part, 2); + $value = urldecode($value); + if (isset($return[$key])) { + if (!is_array($return[$key])) { + $return[$key] = array($return[$key]); + } + $return[$key][] = $value; + } else { + $return[$key] = $value; + } + } + return $return; + } + + /** + * A version of build query that allows for multiple + * duplicate keys. + * @param $parts array of key value pairs + */ + private function buildQuery($parts) + { + $return = array(); + foreach ($parts as $key => $value) { + if (is_array($value)) { + foreach ($value as $v) { + $return[] = urlencode($key) . "=" . urlencode($v); + } + } else { + $return[] = urlencode($key) . "=" . urlencode($value); + } + } + return implode('&', $return); + } + + /** + * If we're POSTing and have no body to send, we can send the query + * parameters in there, which avoids length issues with longer query + * params. + */ + public function maybeMoveParametersToBody() + { + if ($this->getRequestMethod() == "POST" && empty($this->postBody)) { + $this->setRequestHeaders( + array( + "content-type" => + "application/x-www-form-urlencoded; charset=UTF-8" + ) + ); + $this->setPostBody($this->buildQuery($this->queryParams)); + $this->queryParams = array(); + } + } +} diff --git a/plugins/updraftplus/includes/Google/IO/Abstract.php b/plugins/updraftplus/includes/Google/IO/Abstract.php new file mode 100644 index 0000000..34a3fc5 --- /dev/null +++ b/plugins/updraftplus/includes/Google/IO/Abstract.php @@ -0,0 +1,339 @@ + null, "PUT" => null); + private static $HOP_BY_HOP = array( + 'connection' => true, + 'keep-alive' => true, + 'proxy-authenticate' => true, + 'proxy-authorization' => true, + 'te' => true, + 'trailers' => true, + 'transfer-encoding' => true, + 'upgrade' => true + ); + + + /** @var Google_Client */ + protected $client; + + public function __construct(Google_Client $client) + { + $this->client = $client; + $timeout = $client->getClassConfig('Google_IO_Abstract', 'request_timeout_seconds'); + if ($timeout > 0) { + $this->setTimeout($timeout); + } + } + + /** + * Executes a Google_Http_Request + * @param Google_Http_Request $request the http request to be executed + * @return array containing response headers, body, and http code + * @throws Google_IO_Exception on curl or IO error + */ + abstract public function executeRequest(Google_Http_Request $request); + + /** + * Set options that update the transport implementation's behavior. + * @param $options + */ + abstract public function setOptions($options); + + /** + * Set the maximum request time in seconds. + * @param $timeout in seconds + */ + abstract public function setTimeout($timeout); + + /** + * Get the maximum request time in seconds. + * @return timeout in seconds + */ + abstract public function getTimeout(); + + /** + * Test for the presence of a cURL header processing bug + * + * The cURL bug was present in versions prior to 7.30.0 and caused the header + * length to be miscalculated when a "Connection established" header added by + * some proxies was present. + * + * @return boolean + */ + abstract protected function needsQuirk(); + + /** + * @visible for testing. + * Cache the response to an HTTP request if it is cacheable. + * @param Google_Http_Request $request + * @return bool Returns true if the insertion was successful. + * Otherwise, return false. + */ + public function setCachedRequest(Google_Http_Request $request) + { + // Determine if the request is cacheable. + if (Google_Http_CacheParser::isResponseCacheable($request)) { + $this->client->getCache()->set($request->getCacheKey(), $request); + return true; + } + + return false; + } + + /** + * Execute an HTTP Request + * + * @param Google_Http_Request $request the http request to be executed + * @return Google_Http_Request http request with the response http code, + * response headers and response body filled in + * @throws Google_IO_Exception on curl or IO error + */ + public function makeRequest(Google_Http_Request $request) + { + // First, check to see if we have a valid cached version. + $cached = $this->getCachedRequest($request); + if ($cached !== false && $cached instanceof Google_Http_Request) { + if (!$this->checkMustRevalidateCachedRequest($cached, $request)) { + return $cached; + } + } + + if (array_key_exists($request->getRequestMethod(), self::$ENTITY_HTTP_METHODS)) { + $request = $this->processEntityRequest($request); + } + + list($responseData, $responseHeaders, $respHttpCode) = $this->executeRequest($request); + + if ($respHttpCode == 304 && $cached) { + // If the server responded NOT_MODIFIED, return the cached request. + $this->updateCachedRequest($cached, $responseHeaders); + return $cached; + } + + if (!isset($responseHeaders['Date']) && !isset($responseHeaders['date'])) { + $responseHeaders['date'] = date("r"); + } + + $request->setResponseHttpCode($respHttpCode); + $request->setResponseHeaders($responseHeaders); + $request->setResponseBody($responseData); + // Store the request in cache (the function checks to see if the request + // can actually be cached) + $this->setCachedRequest($request); + return $request; + } + + /** + * @visible for testing. + * @param Google_Http_Request $request + * @return Google_Http_Request|bool Returns the cached object or + * false if the operation was unsuccessful. + */ + public function getCachedRequest(Google_Http_Request $request) + { + if (false === Google_Http_CacheParser::isRequestCacheable($request)) { + return false; + } + + return $this->client->getCache()->get($request->getCacheKey()); + } + + /** + * @visible for testing + * Process an http request that contains an enclosed entity. + * @param Google_Http_Request $request + * @return Google_Http_Request Processed request with the enclosed entity. + */ + public function processEntityRequest(Google_Http_Request $request) + { + $postBody = $request->getPostBody(); + $contentType = $request->getRequestHeader("content-type"); + + // Set the default content-type as application/x-www-form-urlencoded. + if (false == $contentType) { + $contentType = self::FORM_URLENCODED; + $request->setRequestHeaders(array('content-type' => $contentType)); + } + + // Force the payload to match the content-type asserted in the header. + if ($contentType == self::FORM_URLENCODED && is_array($postBody)) { + $postBody = http_build_query($postBody, '', '&'); + $request->setPostBody($postBody); + } + + // Make sure the content-length header is set. + if (!$postBody || is_string($postBody)) { + $postsLength = strlen($postBody); + $request->setRequestHeaders(array('content-length' => $postsLength)); + } + + return $request; + } + + /** + * Check if an already cached request must be revalidated, and if so update + * the request with the correct ETag headers. + * @param Google_Http_Request $cached A previously cached response. + * @param Google_Http_Request $request The outbound request. + * return bool If the cached object needs to be revalidated, false if it is + * still current and can be re-used. + */ + protected function checkMustRevalidateCachedRequest($cached, $request) + { + if (Google_Http_CacheParser::mustRevalidate($cached)) { + $addHeaders = array(); + if ($cached->getResponseHeader('etag')) { + // [13.3.4] If an entity tag has been provided by the origin server, + // we must use that entity tag in any cache-conditional request. + $addHeaders['If-None-Match'] = $cached->getResponseHeader('etag'); + } elseif ($cached->getResponseHeader('date')) { + $addHeaders['If-Modified-Since'] = $cached->getResponseHeader('date'); + } + + $request->setRequestHeaders($addHeaders); + return true; + } else { + return false; + } + } + + /** + * Update a cached request, using the headers from the last response. + * @param Google_Http_Request $cached A previously cached response. + * @param mixed Associative array of response headers from the last request. + */ + protected function updateCachedRequest($cached, $responseHeaders) + { + $hopByHop = self::$HOP_BY_HOP; + if (!empty($responseHeaders['connection'])) { + $connectionHeaders = array_map( + 'strtolower', + array_filter( + array_map('trim', explode(',', $responseHeaders['connection'])) + ) + ); + $hopByHop += array_fill_keys($connectionHeaders, true); + } + + $endToEnd = array_diff_key($responseHeaders, $hopByHop); + $cached->setResponseHeaders($endToEnd); + } + + /** + * Used by the IO lib and also the batch processing. + * + * @param $respData + * @param $headerSize + * @return array + */ + public function parseHttpResponse($respData, $headerSize) + { + // check proxy header + foreach (self::$CONNECTION_ESTABLISHED_HEADERS as $established_header) { + if (stripos($respData, $established_header) !== false) { + // existed, remove it + $respData = str_ireplace($established_header, '', $respData); + // Subtract the proxy header size unless the cURL bug prior to 7.30.0 + // is present which prevented the proxy header size from being taken into + // account. + if (!$this->needsQuirk()) { + $headerSize -= strlen($established_header); + } + break; + } + } + + if ($headerSize) { + $responseBody = substr($respData, $headerSize); + $responseHeaders = substr($respData, 0, $headerSize); + } else { + $responseSegments = explode("\r\n\r\n", $respData, 2); + $responseHeaders = $responseSegments[0]; + $responseBody = isset($responseSegments[1]) ? $responseSegments[1] : + null; + } + + $responseHeaders = $this->getHttpResponseHeaders($responseHeaders); + return array($responseHeaders, $responseBody); + } + + /** + * Parse out headers from raw headers + * @param rawHeaders array or string + * @return array + */ + public function getHttpResponseHeaders($rawHeaders) + { + if (is_array($rawHeaders)) { + return $this->parseArrayHeaders($rawHeaders); + } else { + return $this->parseStringHeaders($rawHeaders); + } + } + + private function parseStringHeaders($rawHeaders) + { + $headers = array(); + $responseHeaderLines = explode("\r\n", $rawHeaders); + foreach ($responseHeaderLines as $headerLine) { + if ($headerLine && strpos($headerLine, ':') !== false) { + list($header, $value) = explode(': ', $headerLine, 2); + $header = strtolower($header); + if (isset($headers[$header])) { + $headers[$header] .= "\n" . $value; + } else { + $headers[$header] = $value; + } + } + } + return $headers; + } + + private function parseArrayHeaders($rawHeaders) + { + $header_count = count($rawHeaders); + $headers = array(); + + for ($i = 0; $i < $header_count; $i++) { + $header = $rawHeaders[$i]; + // Times will have colons in - so we just want the first match. + $header_parts = explode(': ', $header, 2); + if (count($header_parts) == 2) { + $headers[strtolower($header_parts[0])] = $header_parts[1]; + } + } + + return $headers; + } +} diff --git a/plugins/updraftplus/includes/Google/IO/Curl.php b/plugins/updraftplus/includes/Google/IO/Curl.php new file mode 100644 index 0000000..5617e10 --- /dev/null +++ b/plugins/updraftplus/includes/Google/IO/Curl.php @@ -0,0 +1,181 @@ + + */ + +if (!class_exists('Google_Client')) { + require_once dirname(__FILE__) . '/../autoload.php'; +} + +class Google_IO_Curl extends Google_IO_Abstract +{ + // cURL hex representation of version 7.30.0 + const NO_QUIRK_VERSION = 0x071E00; + + private $options = array(); + + public function __construct(Google_Client $client) + { + if (!extension_loaded('curl')) { + $error = 'The cURL IO handler requires the cURL extension to be enabled'; + $client->getLogger()->critical($error); + throw new Google_IO_Exception($error); + } + + parent::__construct($client); + } + + /** + * Execute an HTTP Request + * + * @param Google_Http_Request $request the http request to be executed + * @return array containing response headers, body, and http code + * @throws Google_IO_Exception on curl or IO error + */ + public function executeRequest(Google_Http_Request $request) + { + $curl = curl_init(); + + if ($request->getPostBody()) { + curl_setopt($curl, CURLOPT_POSTFIELDS, $request->getPostBody()); + } + + $requestHeaders = $request->getRequestHeaders(); + if ($requestHeaders && is_array($requestHeaders)) { + $curlHeaders = array(); + foreach ($requestHeaders as $k => $v) { + $curlHeaders[] = "$k: $v"; + } + curl_setopt($curl, CURLOPT_HTTPHEADER, $curlHeaders); + } + curl_setopt($curl, CURLOPT_URL, $request->getUrl()); + + curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $request->getRequestMethod()); + curl_setopt($curl, CURLOPT_USERAGENT, $request->getUserAgent()); + + curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false); + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true); + // 1 is CURL_SSLVERSION_TLSv1, which is not always defined in PHP. +// UpdraftPlus patch +// The SDK leaves this on the default setting in later releases +// curl_setopt($curl, CURLOPT_SSLVERSION, 1); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); + curl_setopt($curl, CURLOPT_HEADER, true); + + if ($request->canGzip()) { + curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate'); + } + + $options = $this->client->getClassConfig('Google_IO_Curl', 'options'); + if (is_array($options)) { + $this->setOptions($options); + } + + foreach ($this->options as $key => $var) { + curl_setopt($curl, $key, $var); + } + + if (!isset($this->options[CURLOPT_CAINFO])) { + curl_setopt($curl, CURLOPT_CAINFO, dirname(__FILE__) . '/cacerts.pem'); + } + + $this->client->getLogger()->debug( + 'cURL request', + array( + 'url' => $request->getUrl(), + 'method' => $request->getRequestMethod(), + 'headers' => $requestHeaders, + 'body' => $request->getPostBody() + ) + ); + + $response = curl_exec($curl); + if ($response === false) { + $error = curl_error($curl); + $code = curl_errno($curl); + $map = $this->client->getClassConfig('Google_IO_Exception', 'retry_map'); + + $this->client->getLogger()->error('cURL ' . $error); + throw new Google_IO_Exception($error, $code, null, $map); + } + $headerSize = curl_getinfo($curl, CURLINFO_HEADER_SIZE); + + list($responseHeaders, $responseBody) = $this->parseHttpResponse($response, $headerSize); + $responseCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); + + $this->client->getLogger()->debug( + 'cURL response', + array( + 'code' => $responseCode, + 'headers' => $responseHeaders, + 'body' => $responseBody, + ) + ); + + return array($responseBody, $responseHeaders, $responseCode); + } + + /** + * Set options that update the transport implementation's behavior. + * @param $options + */ + public function setOptions($options) + { + $this->options = $options + $this->options; + } + + /** + * Set the maximum request time in seconds. + * @param $timeout in seconds + */ + public function setTimeout($timeout) + { + // Since this timeout is really for putting a bound on the time + // we'll set them both to the same. If you need to specify a longer + // CURLOPT_TIMEOUT, or a higher CONNECTTIMEOUT, the best thing to + // do is use the setOptions method for the values individually. + $this->options[CURLOPT_CONNECTTIMEOUT] = $timeout; + $this->options[CURLOPT_TIMEOUT] = $timeout; + } + + /** + * Get the maximum request time in seconds. + * @return timeout in seconds + */ + public function getTimeout() + { + return $this->options[CURLOPT_TIMEOUT]; + } + + /** + * Test for the presence of a cURL header processing bug + * + * {@inheritDoc} + * + * @return boolean + */ + protected function needsQuirk() + { + $ver = curl_version(); + $versionNum = $ver['version_number']; + return $versionNum < Google_IO_Curl::NO_QUIRK_VERSION; + } +} diff --git a/plugins/updraftplus/includes/Google/IO/Exception.php b/plugins/updraftplus/includes/Google/IO/Exception.php new file mode 100644 index 0000000..da9342d --- /dev/null +++ b/plugins/updraftplus/includes/Google/IO/Exception.php @@ -0,0 +1,69 @@ += 0) { + parent::__construct($message, $code, $previous); + } else { + parent::__construct($message, $code); + } + + if (is_array($retryMap)) { + $this->retryMap = $retryMap; + } + } + + /** + * Gets the number of times the associated task can be retried. + * + * NOTE: -1 is returned if the task can be retried indefinitely + * + * @return integer + */ + public function allowedRetries() + { + if (isset($this->retryMap[$this->code])) { + return $this->retryMap[$this->code]; + } + + return 0; + } +} diff --git a/plugins/updraftplus/includes/Google/IO/Stream.php b/plugins/updraftplus/includes/Google/IO/Stream.php new file mode 100644 index 0000000..aec0a2b --- /dev/null +++ b/plugins/updraftplus/includes/Google/IO/Stream.php @@ -0,0 +1,281 @@ + + */ + +if (!class_exists('Google_Client')) { + require_once dirname(__FILE__) . '/../autoload.php'; +} + +class Google_IO_Stream extends Google_IO_Abstract +{ + const TIMEOUT = "timeout"; + const ZLIB = "compress.zlib://"; + private $options = array(); + private $trappedErrorNumber; + private $trappedErrorString; + + private static $DEFAULT_HTTP_CONTEXT = array( + "follow_location" => 0, + "ignore_errors" => 1, + ); + + private static $DEFAULT_SSL_CONTEXT = array( + "verify_peer" => true, + ); + + public function __construct(Google_Client $client) + { + if (!ini_get('allow_url_fopen')) { + $error = 'The stream IO handler requires the allow_url_fopen runtime ' . + 'configuration to be enabled'; + $client->getLogger()->critical($error); + throw new Google_IO_Exception($error); + } + + parent::__construct($client); + } + + /** + * Execute an HTTP Request + * + * @param Google_Http_Request $request the http request to be executed + * @return array containing response headers, body, and http code + * @throws Google_IO_Exception on curl or IO error + */ + public function executeRequest(Google_Http_Request $request) + { + $default_options = stream_context_get_options(stream_context_get_default()); + + $requestHttpContext = array_key_exists('http', $default_options) ? + $default_options['http'] : array(); + + if ($request->getPostBody()) { + $requestHttpContext["content"] = $request->getPostBody(); + } + + $requestHeaders = $request->getRequestHeaders(); + if ($requestHeaders && is_array($requestHeaders)) { + $headers = ""; + foreach ($requestHeaders as $k => $v) { + $headers .= "$k: $v\r\n"; + } + $requestHttpContext["header"] = $headers; + } + + $requestHttpContext["method"] = $request->getRequestMethod(); + $requestHttpContext["user_agent"] = $request->getUserAgent(); + + $requestSslContext = array_key_exists('ssl', $default_options) ? + $default_options['ssl'] : array(); + +# UpdraftPlus patch +// if (!array_key_exists("cafile", $requestSslContext)) { +// $requestSslContext["cafile"] = dirname(__FILE__) . '/cacerts.pem'; +// } + + $url = $request->getUrl(); + + if (preg_match('#^https?://([^/]+)/#', $url, $umatches)) { $cname = $umatches[1]; } else { $cname = false; } + +# UpdraftPlus patch +// Added +if (empty($this->options['disable_verify_peer'])) { + $requestSslContext['verify_peer'] = true; + if (version_compare(PHP_VERSION, '5.6.0', '>=')) { + if (!empty($cname)) $requestSslContext['peer_name'] = $cname; + } else { + if (!empty($cname)) { + $requestSslContext['CN_match'] = $cname; + $retry_on_fail = true; + } + } +} else { + $requestSslContext['allow_self_signed'] = true; +} +if (!empty($this->options['cafile'])) $requestSslContext['cafile'] = $this->options['cafile']; + + $options = array( + "http" => array_merge( + self::$DEFAULT_HTTP_CONTEXT, + $requestHttpContext + ), + "ssl" => array_merge( +# UpdraftPlus patch +// self::$DEFAULT_SSL_CONTEXT, + $requestSslContext + ) + ); + + $context = stream_context_create($options); + +# UpdraftPlus patch +// $url = $request->getUrl(); + + if ($request->canGzip()) { + $url = self::ZLIB . $url; + } + + $this->client->getLogger()->debug( + 'Stream request', + array( + 'url' => $url, + 'method' => $request->getRequestMethod(), + 'headers' => $requestHeaders, + 'body' => $request->getPostBody() + ) + ); + + // We are trapping any thrown errors in this method only and + // throwing an exception. + $this->trappedErrorNumber = null; + $this->trappedErrorString = null; + + // START - error trap. + set_error_handler(array($this, 'trapError')); + $fh = fopen($url, 'r', false, $context); + +# UpdraftPLus patch + if (!$fh && isset($retry_on_fail) && !empty($cname) && 'www.googleapis.com' == $cname) { +// Reset + $this->trappedErrorNumber = null; + $this->trappedErrorString = null; + global $updraftplus; + $updraftplus->log("Using Stream, and fopen failed; retrying different CN match to try to overcome"); + // www.googleapis.com does not match the cert now being presented - *.storage.googleapis.com; presumably, PHP's stream handler isn't handling alternative names properly. Rather than turn off all verification, let's retry with a new name to match. + $options['ssl']['CN_match'] = 'www.storage.googleapis.com'; + $context = stream_context_create($options); + $fh = fopen($url, 'r', false, $context); + } + + restore_error_handler(); + // END - error trap. + + if ($this->trappedErrorNumber) { + $error = sprintf( + "HTTP Error: Unable to connect: '%s'", + $this->trappedErrorString + ); + + $this->client->getLogger()->error('Stream ' . $error); + throw new Google_IO_Exception($error, $this->trappedErrorNumber); + } + + $response_data = false; + $respHttpCode = self::UNKNOWN_CODE; + if ($fh) { + if (isset($this->options[self::TIMEOUT])) { + stream_set_timeout($fh, $this->options[self::TIMEOUT]); + } + + $response_data = stream_get_contents($fh); + fclose($fh); + + $respHttpCode = $this->getHttpResponseCode($http_response_header); + } + + if (false === $response_data) { + $error = sprintf( + "HTTP Error: Unable to connect: '%s'", + $respHttpCode + ); + + $this->client->getLogger()->error('Stream ' . $error); + throw new Google_IO_Exception($error, $respHttpCode); + } + + $responseHeaders = $this->getHttpResponseHeaders($http_response_header); + + $this->client->getLogger()->debug( + 'Stream response', + array( + 'code' => $respHttpCode, + 'headers' => $responseHeaders, + 'body' => $response_data, + ) + ); + + return array($response_data, $responseHeaders, $respHttpCode); + } + + /** + * Set options that update the transport implementation's behavior. + * @param $options + */ + public function setOptions($options) + { + $this->options = $options + $this->options; + } + + /** + * Method to handle errors, used for error handling around + * stream connection methods. + */ + public function trapError($errno, $errstr) + { + $this->trappedErrorNumber = $errno; + $this->trappedErrorString = $errstr; + } + + /** + * Set the maximum request time in seconds. + * @param $timeout in seconds + */ + public function setTimeout($timeout) + { + $this->options[self::TIMEOUT] = $timeout; + } + + /** + * Get the maximum request time in seconds. + * @return timeout in seconds + */ + public function getTimeout() + { + return $this->options[self::TIMEOUT]; + } + + /** + * Test for the presence of a cURL header processing bug + * + * {@inheritDoc} + * + * @return boolean + */ + protected function needsQuirk() + { + return false; + } + + protected function getHttpResponseCode($response_headers) + { + $header_count = count($response_headers); + + for ($i = 0; $i < $header_count; $i++) { + $header = $response_headers[$i]; + if (strncasecmp("HTTP", $header, strlen("HTTP")) == 0) { + $response = explode(' ', $header); + return $response[1]; + } + } + return self::UNKNOWN_CODE; + } +} diff --git a/plugins/updraftplus/includes/Google/IO/cacerts.pem b/plugins/updraftplus/includes/Google/IO/cacerts.pem new file mode 100644 index 0000000..70990f1 --- /dev/null +++ b/plugins/updraftplus/includes/Google/IO/cacerts.pem @@ -0,0 +1,2183 @@ +# Issuer: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc. +# Subject: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc. +# Label: "GTE CyberTrust Global Root" +# Serial: 421 +# MD5 Fingerprint: ca:3d:d3:68:f1:03:5c:d0:32:fa:b8:2b:59:e8:5a:db +# SHA1 Fingerprint: 97:81:79:50:d8:1c:96:70:cc:34:d8:09:cf:79:44:31:36:7e:f4:74 +# SHA256 Fingerprint: a5:31:25:18:8d:21:10:aa:96:4b:02:c7:b7:c6:da:32:03:17:08:94:e5:fb:71:ff:fb:66:67:d5:e6:81:0a:36 +-----BEGIN CERTIFICATE----- +MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD +VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv +bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv +b3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1MQswCQYDVQQGEwJV +UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU +cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds +b2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrH +iM3dFw4usJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTS +r41tiGeA5u2ylc9yMcqlHHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X4 +04Wqk2kmhXBIgD8SFcd5tB8FLztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3r +GwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l9 +3PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0P +lZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ +-----END CERTIFICATE----- + +# Issuer: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division +# Subject: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division +# Label: "Thawte Server CA" +# Serial: 1 +# MD5 Fingerprint: c5:70:c4:a2:ed:53:78:0c:c8:10:53:81:64:cb:d0:1d +# SHA1 Fingerprint: 23:e5:94:94:51:95:f2:41:48:03:b4:d5:64:d2:a3:a3:f5:d8:8b:8c +# SHA256 Fingerprint: b4:41:0b:73:e2:e6:ea:ca:47:fb:c4:2f:8f:a4:01:8a:f4:38:1d:c5:4c:fa:a8:44:50:46:1e:ed:09:45:4d:e9 +-----BEGIN CERTIFICATE----- +MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx +FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD +VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm +MCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx +MDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT +DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3 +dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl +cyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3 +DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD +gY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91 +yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX +L+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj +EzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG +7oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e +QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ +qdq5snUb9kLy78fyGPmJvKP/iiMucEc= +-----END CERTIFICATE----- + +# Issuer: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division +# Subject: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division +# Label: "Thawte Premium Server CA" +# Serial: 1 +# MD5 Fingerprint: 06:9f:69:79:16:66:90:02:1b:8c:8c:a2:c3:07:6f:3a +# SHA1 Fingerprint: 62:7f:8d:78:27:65:63:99:d2:7d:7f:90:44:c9:fe:b3:f3:3e:fa:9a +# SHA256 Fingerprint: ab:70:36:36:5c:71:54:aa:29:c2:c2:9f:5d:41:91:16:3b:16:2a:22:25:01:13:57:d5:6d:07:ff:a7:bc:1f:72 +-----BEGIN CERTIFICATE----- +MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx +FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD +VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy +dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t +MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB +MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG +A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp +b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl +cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv +bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE +VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ +ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR +uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG +9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI +hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM +pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg== +-----END CERTIFICATE----- + +# Issuer: O=Equifax OU=Equifax Secure Certificate Authority +# Subject: O=Equifax OU=Equifax Secure Certificate Authority +# Label: "Equifax Secure CA" +# Serial: 903804111 +# MD5 Fingerprint: 67:cb:9d:c0:13:24:8a:82:9b:b2:17:1e:d1:1b:ec:d4 +# SHA1 Fingerprint: d2:32:09:ad:23:d3:14:23:21:74:e4:0d:7f:9d:62:13:97:86:63:3a +# SHA256 Fingerprint: 08:29:7a:40:47:db:a2:36:80:c7:31:db:6e:31:76:53:ca:78:48:e1:be:bd:3a:0b:01:79:a7:07:f9:2c:f1:78 +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV +UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy +dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1 +MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx +dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B +AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f +BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A +cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC +AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ +MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm +aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw +ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj +IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF +MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA +A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y +7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh +1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4 +-----END CERTIFICATE----- + +# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority +# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority +# Label: "Verisign Class 3 Public Primary Certification Authority" +# Serial: 149843929435818692848040365716851702463 +# MD5 Fingerprint: 10:fc:63:5d:f6:26:3e:0d:f3:25:be:5f:79:cd:67:67 +# SHA1 Fingerprint: 74:2c:31:92:e6:07:e4:24:eb:45:49:54:2b:e1:bb:c5:3e:61:74:e2 +# SHA256 Fingerprint: e7:68:56:34:ef:ac:f6:9a:ce:93:9a:6b:25:5b:7b:4f:ab:ef:42:93:5b:50:a2:65:ac:b5:cb:60:27:e4:4e:70 +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG +A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz +cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 +MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV +BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN +ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE +BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is +I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G +CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do +lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc +AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k +-----END CERTIFICATE----- + +# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network +# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network +# Label: "Verisign Class 3 Public Primary Certification Authority - G2" +# Serial: 167285380242319648451154478808036881606 +# MD5 Fingerprint: a2:33:9b:4c:74:78:73:d4:6c:e7:c1:f3:8d:cb:5c:e9 +# SHA1 Fingerprint: 85:37:1c:a6:e5:50:14:3d:ce:28:03:47:1b:de:3a:09:e8:f8:77:0f +# SHA256 Fingerprint: 83:ce:3c:12:29:68:8a:59:3d:48:5f:81:97:3c:0f:91:95:43:1e:da:37:cc:5e:36:43:0e:79:c7:a8:88:63:8b +-----BEGIN CERTIFICATE----- +MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ +BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh +c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy +MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp +emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X +DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw +FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg +UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo +YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 +MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB +AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4 +pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0 +13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID +AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk +U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i +F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY +oJ2daZH9 +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA +# Subject: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA +# Label: "GlobalSign Root CA" +# Serial: 4835703278459707669005204 +# MD5 Fingerprint: 3e:45:52:15:09:51:92:e1:b7:5d:37:9f:b1:87:29:8a +# SHA1 Fingerprint: b1:bc:96:8b:d4:f4:9d:62:2a:a8:9a:81:f2:15:01:52:a4:1d:82:9c +# SHA256 Fingerprint: eb:d4:10:40:e4:bb:3e:c7:42:c9:e3:81:d3:1e:f2:a4:1a:48:b6:68:5c:96:e7:ce:f3:c1:df:6c:d4:33:1c:99 +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG +A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv +b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw +MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i +YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT +aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ +jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp +xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp +1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG +snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ +U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8 +9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E +BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B +AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz +yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE +38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP +AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad +DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME +HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R2 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R2 +# Label: "GlobalSign Root CA - R2" +# Serial: 4835703278459682885658125 +# MD5 Fingerprint: 94:14:77:7e:3e:5e:fd:8f:30:bd:41:b0:cf:e7:d0:30 +# SHA1 Fingerprint: 75:e0:ab:b6:13:85:12:27:1c:04:f8:5f:dd:de:38:e4:b7:24:2e:fe +# SHA256 Fingerprint: ca:42:dd:41:74:5f:d0:b8:1e:b9:02:36:2c:f9:d8:bf:71:9d:a1:bd:1b:1e:fc:94:6f:5b:4c:99:f4:2c:1b:9e +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G +A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp +Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1 +MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG +A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL +v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8 +eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq +tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd +C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa +zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB +mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH +V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n +bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG +3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs +J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO +291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS +ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd +AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 +TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== +-----END CERTIFICATE----- + +# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority +# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority +# Label: "ValiCert Class 1 VA" +# Serial: 1 +# MD5 Fingerprint: 65:58:ab:15:ad:57:6c:1e:a8:a7:b5:69:ac:bf:ff:eb +# SHA1 Fingerprint: e5:df:74:3c:b6:01:c4:9b:98:43:dc:ab:8c:e8:6a:81:10:9f:e4:8e +# SHA256 Fingerprint: f4:c1:49:55:1a:30:13:a3:5b:c7:bf:fe:17:a7:f3:44:9b:c1:ab:5b:5a:0a:e7:4b:06:c2:3b:90:00:4c:01:04 +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 +IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz +BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y +aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG +9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIyMjM0OFoXDTE5MDYy +NTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y +azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw +Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl +cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9Y +LqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIiGQj4/xEjm84H9b9pGib+ +TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCmDuJWBQ8Y +TfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0 +LBwGlN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLW +I8sogTLDAHkY7FkXicnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPw +nXS3qT6gpf+2SQMT2iLM7XGCK5nPOrf1LXLI +-----END CERTIFICATE----- + +# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority +# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority +# Label: "ValiCert Class 2 VA" +# Serial: 1 +# MD5 Fingerprint: a9:23:75:9b:ba:49:36:6e:31:c2:db:f2:e7:66:ba:87 +# SHA1 Fingerprint: 31:7a:2a:d0:7f:2b:33:5e:f5:a1:c3:4e:4b:57:e8:b7:d8:f1:fc:a6 +# SHA256 Fingerprint: 58:d0:17:27:9c:d4:dc:63:ab:dd:b1:96:a6:c9:90:6c:30:c4:e0:87:83:ea:e8:c1:60:99:54:d6:93:55:59:6b +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 +IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz +BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y +aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG +9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy +NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y +azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw +Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl +cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY +dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9 +WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS +v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v +UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu +IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC +W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd +-----END CERTIFICATE----- + +# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority +# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority +# Label: "RSA Root Certificate 1" +# Serial: 1 +# MD5 Fingerprint: a2:6f:53:b7:ee:40:db:4a:68:e7:fa:18:d9:10:4b:72 +# SHA1 Fingerprint: 69:bd:8c:f4:9c:d3:00:fb:59:2e:17:93:ca:55:6a:f3:ec:aa:35:fb +# SHA256 Fingerprint: bc:23:f9:8a:31:3c:b9:2d:e3:bb:fc:3a:5a:9f:44:61:ac:39:49:4c:4a:e1:5a:9e:9d:f1:31:e9:9b:73:01:9a +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 +IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz +BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y +aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG +9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMjIzM1oXDTE5MDYy +NjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y +azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw +Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl +cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjmFGWHOjVsQaBalfD +cnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td3zZxFJmP3MKS8edgkpfs +2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89HBFx1cQqY +JJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliE +Zwgs3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJ +n0WuPIqpsHEzXcjFV9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/A +PhmcGcwTTYJBtYze4D1gCCAPRX5ron+jjBXu +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only +# Label: "Verisign Class 3 Public Primary Certification Authority - G3" +# Serial: 206684696279472310254277870180966723415 +# MD5 Fingerprint: cd:68:b6:a7:c7:c4:ce:75:e0:1d:4f:57:44:61:92:09 +# SHA1 Fingerprint: 13:2d:0d:45:53:4b:69:97:cd:b2:d5:c3:39:e2:55:76:60:9b:5c:c6 +# SHA256 Fingerprint: eb:04:cf:5e:b1:f3:9a:fa:76:2f:2b:b1:20:f2:96:cb:a5:20:c1:b9:7d:b1:58:95:65:b8:1c:b9:a1:7b:72:44 +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl +cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu +LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT +aWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD +VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT +aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ +bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu +IENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMu6nFL8eB8aHm8b +N3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1EUGO+i2t +KmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGu +kxUccLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBm +CC+Vk7+qRy+oRpfwEuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJ +Xwzw3sJ2zq/3avL6QaaiMxTJ5Xpj055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWu +imi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAERSWwauSCPc/L8my/uRan2Te +2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5fj267Cz3qWhMe +DGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC +/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565p +F4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGt +TxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Class 4 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Class 4 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only +# Label: "Verisign Class 4 Public Primary Certification Authority - G3" +# Serial: 314531972711909413743075096039378935511 +# MD5 Fingerprint: db:c8:f2:27:2e:b1:ea:6a:29:23:5d:fe:56:3e:33:df +# SHA1 Fingerprint: c8:ec:8c:87:92:69:cb:4b:ab:39:e9:8d:7e:57:67:f3:14:95:73:9d +# SHA256 Fingerprint: e3:89:36:0d:0f:db:ae:b3:d2:50:58:4b:47:30:31:4e:22:2f:39:c1:56:a0:20:14:4e:8d:96:05:61:79:15:06 +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl +cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu +LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT +aWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD +VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT +aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ +bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu +IENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK3LpRFpxlmr8Y+1 +GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaStBO3IFsJ ++mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0Gbd +U6LM8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLm +NxdLMEYH5IBtptiWLugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XY +ufTsgsbSPZUd5cBPhMnZo0QoBmrXRazwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ +ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAj/ola09b5KROJ1WrIhVZPMq1 +CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXttmhwwjIDLk5Mq +g6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm +fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c +2NU8Qh0XwRJdRTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/ +bLvSHgCwIe34QWKCudiyxLtGUPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg== +-----END CERTIFICATE----- + +# Issuer: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Subject: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Label: "Entrust.net Secure Server CA" +# Serial: 927650371 +# MD5 Fingerprint: df:f2:80:73:cc:f1:e6:61:73:fc:f5:42:e9:c5:7c:ee +# SHA1 Fingerprint: 99:a6:9b:e6:1a:fe:88:6b:4d:2b:82:00:7c:b8:54:fc:31:7e:15:39 +# SHA256 Fingerprint: 62:f2:40:27:8c:56:4c:4d:d8:bf:7d:9d:4f:6f:36:6e:a8:94:d2:2f:5f:34:d9:89:a9:83:ac:ec:2f:ff:ed:50 +-----BEGIN CERTIFICATE----- +MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC +VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u +ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc +KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u +ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1 +MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE +ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j +b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF +bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg +U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA +A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/ +I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3 +wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC +AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb +oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5 +BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p +dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk +MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp +b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu +dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0 +MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi +E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa +MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI +hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN +95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd +2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= +-----END CERTIFICATE----- + +# Issuer: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Subject: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Label: "Entrust.net Premium 2048 Secure Server CA" +# Serial: 946059622 +# MD5 Fingerprint: ba:21:ea:20:d6:dd:db:8f:c1:57:8b:40:ad:a1:fc:fc +# SHA1 Fingerprint: 80:1d:62:d0:7b:44:9d:5c:5c:03:5c:98:ea:61:fa:44:3c:2a:58:fe +# SHA256 Fingerprint: d1:c3:39:ea:27:84:eb:87:0f:93:4f:c5:63:4e:4a:a9:ad:55:05:01:64:01:f2:64:65:d3:7a:57:46:63:35:9f +-----BEGIN CERTIFICATE----- +MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML +RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp +bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5 +IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0xOTEy +MjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 +LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp +YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG +A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq +K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe +sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX +MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT +XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/ +HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH +4QIDAQABo3QwcjARBglghkgBhvhCAQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGA +vtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdERgL7YibkIozH5oSQJFrlwMB0G +CSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEA +WUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo +oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQ +h7A6tcOdBTcSo8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18 +f3v/rxzP5tsHrV7bhZ3QKw0z2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfN +B/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjXOP/swNlQ8C5LWK5Gb9Auw2DaclVy +vUxFnmG6v4SBkgPR0ml8xQ== +-----END CERTIFICATE----- + +# Issuer: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust +# Subject: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust +# Label: "Baltimore CyberTrust Root" +# Serial: 33554617 +# MD5 Fingerprint: ac:b6:94:a5:9c:17:e0:d7:91:52:9b:b1:97:06:a6:e4 +# SHA1 Fingerprint: d4:de:20:d0:5e:66:fc:53:fe:1a:50:88:2c:78:db:28:52:ca:e4:74 +# SHA256 Fingerprint: 16:af:57:a9:f6:76:b0:ab:12:60:95:aa:5e:ba:de:f2:2a:b3:11:19:d6:44:ac:95:cd:4b:93:db:f3:f2:6a:eb +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ +RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD +VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX +DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y +ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy +VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr +mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr +IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK +mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu +XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy +dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye +jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1 +BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3 +DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92 +9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx +jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0 +Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz +ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS +R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp +-----END CERTIFICATE----- + +# Issuer: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc. +# Subject: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc. +# Label: "Equifax Secure Global eBusiness CA" +# Serial: 1 +# MD5 Fingerprint: 8f:5d:77:06:27:c4:98:3c:5b:93:78:e7:d7:7d:9b:cc +# SHA1 Fingerprint: 7e:78:4a:10:1c:82:65:cc:2d:e1:f1:6d:47:b4:40:ca:d9:0a:19:45 +# SHA256 Fingerprint: 5f:0b:62:ea:b5:e3:53:ea:65:21:65:16:58:fb:b6:53:59:f4:43:28:0a:4a:fb:d1:04:d7:7d:10:f9:f0:4c:07 +-----BEGIN CERTIFICATE----- +MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEc +MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBT +ZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIw +MDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0VxdWlmYXggU2Vj +dXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEdsb2JhbCBlQnVzaW5l +c3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRVPEnC +UdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc +58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/ +o5brhTMhHD4ePmBudpxnhcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAH +MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1dr +aGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUA +A4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkA +Z70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv +8qIYNMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV +-----END CERTIFICATE----- + +# Issuer: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc. +# Subject: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc. +# Label: "Equifax Secure eBusiness CA 1" +# Serial: 4 +# MD5 Fingerprint: 64:9c:ef:2e:44:fc:c6:8f:52:07:d0:51:73:8f:cb:3d +# SHA1 Fingerprint: da:40:18:8b:91:89:a3:ed:ee:ae:da:97:fe:2f:9d:f5:b7:d1:8a:41 +# SHA256 Fingerprint: cf:56:ff:46:a4:a1:86:10:9d:d9:65:84:b5:ee:b5:8a:51:0c:42:75:b0:e5:f9:4f:40:bb:ae:86:5e:19:f6:73 +-----BEGIN CERTIFICATE----- +MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEc +MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBT +ZWN1cmUgZUJ1c2luZXNzIENBLTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQw +MDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5j +LjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENBLTEwgZ8wDQYJ +KoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ1MRo +RvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBu +WqDZQu4aIZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKw +Env+j6YDAgMBAAGjZjBkMBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTAD +AQH/MB8GA1UdIwQYMBaAFEp4MlIR21kWNl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRK +eDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQFAAOBgQB1W6ibAxHm6VZM +zfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5lSE/9dR+ +WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN +/Bf+KpYrtWKmpj29f5JZzVoqgrI3eQ== +-----END CERTIFICATE----- + +# Issuer: O=Equifax Secure OU=Equifax Secure eBusiness CA-2 +# Subject: O=Equifax Secure OU=Equifax Secure eBusiness CA-2 +# Label: "Equifax Secure eBusiness CA 2" +# Serial: 930140085 +# MD5 Fingerprint: aa:bf:bf:64:97:da:98:1d:6f:c6:08:3a:95:70:33:ca +# SHA1 Fingerprint: 39:4f:f6:85:0b:06:be:52:e5:18:56:cc:10:e1:80:e8:82:b3:85:cc +# SHA256 Fingerprint: 2f:27:4e:48:ab:a4:ac:7b:76:59:33:10:17:75:50:6d:c3:0e:e3:8e:f6:ac:d5:c0:49:32:cf:e0:41:23:42:20 +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2Vj +dXJlIGVCdXNpbmVzcyBDQS0yMB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0 +NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkVxdWlmYXggU2VjdXJlMSYwJAYD +VQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCBnzANBgkqhkiG9w0B +AQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn2Z0G +vxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/ +BPO3QSQ5BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0C +AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEX +MBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJl +IGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTkw +NjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9euSBIplBq +y/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQF +MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA +A4GBAAyGgq3oThr1jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy +0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1 +E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUmV+GRMOrN +-----END CERTIFICATE----- + +# Issuer: CN=AddTrust Class 1 CA Root O=AddTrust AB OU=AddTrust TTP Network +# Subject: CN=AddTrust Class 1 CA Root O=AddTrust AB OU=AddTrust TTP Network +# Label: "AddTrust Low-Value Services Root" +# Serial: 1 +# MD5 Fingerprint: 1e:42:95:02:33:92:6b:b9:5f:c0:7f:da:d6:b2:4b:fc +# SHA1 Fingerprint: cc:ab:0e:a0:4c:23:01:d6:69:7b:dd:37:9f:cd:12:eb:24:e3:94:9d +# SHA256 Fingerprint: 8c:72:09:27:9a:c0:4e:27:5e:16:d0:7f:d3:b7:75:e8:01:54:b5:96:80:46:e3:1f:52:dd:25:76:63:24:e9:a7 +-----BEGIN CERTIFICATE----- +MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEU +MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 +b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMw +MTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYD +VQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUA +A4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ul +CDtbKRY654eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6n +tGO0/7Gcrjyvd7ZWxbWroulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyl +dI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1Zmne3yzxbrww2ywkEtvrNTVokMsAsJch +PXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJuiGMx1I4S+6+JNM3GOGvDC ++Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8wHQYDVR0O +BBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8E +BTADAQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBl +MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFk +ZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENB +IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxtZBsfzQ3duQH6lmM0MkhHma6X +7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0PhiVYrqW9yTkkz +43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY +eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJl +pz/+0WatC7xrmYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOA +WiFeIc9TVPC6b4nbqKqVz4vjccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk= +-----END CERTIFICATE----- + +# Issuer: CN=AddTrust External CA Root O=AddTrust AB OU=AddTrust External TTP Network +# Subject: CN=AddTrust External CA Root O=AddTrust AB OU=AddTrust External TTP Network +# Label: "AddTrust External Root" +# Serial: 1 +# MD5 Fingerprint: 1d:35:54:04:85:78:b0:3f:42:42:4d:bf:20:73:0a:3f +# SHA1 Fingerprint: 02:fa:f3:e2:91:43:54:68:60:78:57:69:4d:f5:e4:5b:68:85:18:68 +# SHA256 Fingerprint: 68:7f:a4:51:38:22:78:ff:f0:c8:b1:1f:8d:43:d5:76:67:1c:6e:b2:bc:ea:b4:13:fb:83:d9:65:d0:6d:2f:f2 +-----BEGIN CERTIFICATE----- +MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU +MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs +IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290 +MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux +FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h +bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v +dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt +H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9 +uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX +mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX +a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN +E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0 +WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD +VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0 +Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU +cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx +IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN +AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH +YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 +6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC +Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX +c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a +mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= +-----END CERTIFICATE----- + +# Issuer: CN=AddTrust Public CA Root O=AddTrust AB OU=AddTrust TTP Network +# Subject: CN=AddTrust Public CA Root O=AddTrust AB OU=AddTrust TTP Network +# Label: "AddTrust Public Services Root" +# Serial: 1 +# MD5 Fingerprint: c1:62:3e:23:c5:82:73:9c:03:59:4b:2b:e9:77:49:7f +# SHA1 Fingerprint: 2a:b6:28:48:5e:78:fb:f3:ad:9e:79:10:dd:6b:df:99:72:2c:96:e5 +# SHA256 Fingerprint: 07:91:ca:07:49:b2:07:82:aa:d3:c7:d7:bd:0c:df:c9:48:58:35:84:3e:b2:d7:99:60:09:ce:43:ab:6c:69:27 +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEU +MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 +b3JrMSAwHgYDVQQDExdBZGRUcnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAx +MDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtB +ZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIDAeBgNV +BAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV +6tsfSlbunyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nX +GCwwfQ56HmIexkvA/X1id9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnP +dzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSGAa2Il+tmzV7R/9x98oTaunet3IAIx6eH +1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAwHM+A+WD+eeSI8t0A65RF +62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0GA1UdDgQW +BBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUw +AwEB/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDEL +MAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRU +cnVzdCBUVFAgTmV0d29yazEgMB4GA1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJv +b3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4JNojVhaTdt02KLmuG7jD8WS6 +IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL+YPoRNWyQSW/ +iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao +GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh +4SINhwBk/ox9Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQm +XiLsks3/QppEIW1cxeMiHV9HEufOX1362KqxMy3ZdvJOOjMMK7MtkAY= +-----END CERTIFICATE----- + +# Issuer: CN=AddTrust Qualified CA Root O=AddTrust AB OU=AddTrust TTP Network +# Subject: CN=AddTrust Qualified CA Root O=AddTrust AB OU=AddTrust TTP Network +# Label: "AddTrust Qualified Certificates Root" +# Serial: 1 +# MD5 Fingerprint: 27:ec:39:47:cd:da:5a:af:e2:9a:01:65:21:a9:4c:bb +# SHA1 Fingerprint: 4d:23:78:ec:91:95:39:b5:00:7f:75:8f:03:3b:21:1e:c5:4d:8b:cf +# SHA256 Fingerprint: 80:95:21:08:05:db:4b:bc:35:5e:44:28:d8:fd:6e:c2:cd:e3:ab:5f:b9:7a:99:42:98:8e:b8:f4:dc:d0:60:16 +-----BEGIN CERTIFICATE----- +MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEU +MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 +b3JrMSMwIQYDVQQDExpBZGRUcnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1 +MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcxCzAJBgNVBAYTAlNFMRQwEgYDVQQK +EwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIzAh +BgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwq +xBb/4Oxx64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G +87B4pfYOQnrjfxvM0PC3KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i +2O+tCBGaKZnhqkRFmhJePp1tUvznoD1oL/BLcHwTOK28FSXx1s6rosAx1i+f4P8U +WfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GRwVY18BTcZTYJbqukB8c1 +0cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HUMIHRMB0G +A1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0T +AQH/BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6Fr +pGkwZzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQL +ExRBZGRUcnVzdCBUVFAgTmV0d29yazEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlm +aWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBABmrder4i2VhlRO6aQTv +hsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxGGuoYQ992zPlm +hpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X +dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3 +P6CxB9bpT9zeRXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9Y +iQBCYz95OdBEsIJuQRno3eDBiFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5no +xqE= +-----END CERTIFICATE----- + +# Issuer: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. +# Subject: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. +# Label: "Entrust Root Certification Authority" +# Serial: 1164660820 +# MD5 Fingerprint: d6:a5:c3:ed:5d:dd:3e:00:c1:3d:87:92:1f:1d:3f:e4 +# SHA1 Fingerprint: b3:1e:b1:b7:40:e3:6c:84:02:da:dc:37:d4:4d:f5:d4:67:49:52:f9 +# SHA256 Fingerprint: 73:c1:76:43:4f:1b:c6:d5:ad:f4:5b:0e:76:e7:27:28:7c:8d:e5:76:16:c1:e6:e6:14:1a:2b:2c:bc:7d:8e:4c +-----BEGIN CERTIFICATE----- +MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0 +Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW +KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl +cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0MloXDTI2MTEyNzIw +NTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMTkw +NwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSBy +ZWZlcmVuY2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNV +BAMTJEVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBALaVtkNC+sZtKm9I35RMOVcF7sN5EUFo +Nu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYszA9u3g3s+IIRe7bJWKKf4 +4LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOwwCj0Yzfv9 +KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGI +rb68j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi +94DkZfs0Nw4pgHBNrziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOB +sDCBrTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAi +gA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1MzQyWjAfBgNVHSMEGDAWgBRo +kORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DHhmak8fdLQ/uE +vW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA +A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9t +O1KzKtvn1ISMY/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6Zua +AGAT/3B+XxFNSRuzFVJ7yVTav52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP +9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTSW3iDVuycNsMm4hH2Z0kdkquM++v/ +eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0tHuu2guQOHXvgR1m +0vdXcDazv/wor3ElhVsT/h5/WrQ8 +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Global CA O=GeoTrust Inc. +# Subject: CN=GeoTrust Global CA O=GeoTrust Inc. +# Label: "GeoTrust Global CA" +# Serial: 144470 +# MD5 Fingerprint: f7:75:ab:29:fb:51:4e:b7:77:5e:ff:05:3c:99:8e:f5 +# SHA1 Fingerprint: de:28:f4:a4:ff:e5:b9:2f:a3:c5:03:d1:a3:49:a7:f9:96:2a:82:12 +# SHA256 Fingerprint: ff:85:6a:2d:25:1d:cd:88:d3:66:56:f4:50:12:67:98:cf:ab:aa:de:40:79:9c:72:2d:e4:d2:b5:db:36:a7:3a +-----BEGIN CERTIFICATE----- +MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i +YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg +R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9 +9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq +fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv +iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU +1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+ +bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW +MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA +ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l +uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn +Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS +tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF +PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un +hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV +5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw== +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Global CA 2 O=GeoTrust Inc. +# Subject: CN=GeoTrust Global CA 2 O=GeoTrust Inc. +# Label: "GeoTrust Global CA 2" +# Serial: 1 +# MD5 Fingerprint: 0e:40:a7:6c:de:03:5d:8f:d1:0f:e4:d1:8d:f9:6c:a9 +# SHA1 Fingerprint: a9:e9:78:08:14:37:58:88:f2:05:19:b0:6d:2b:0d:2b:60:16:90:7d +# SHA256 Fingerprint: ca:2d:82:a0:86:77:07:2f:8a:b6:76:4f:f0:35:67:6c:fe:3e:5e:32:5e:01:21:72:df:3f:92:09:6d:b7:9b:85 +-----BEGIN CERTIFICATE----- +MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEW +MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFs +IENBIDIwHhcNMDQwMzA0MDUwMDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3Qg +R2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDvPE1A +PRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/NTL8 +Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hL +TytCOb1kLUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL +5mkWRxHCJ1kDs6ZgwiFAVvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7 +S4wMcoKK+xfNAGw6EzywhIdLFnopsk/bHdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe +2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNHK266ZUap +EBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6td +EPx7srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv +/NgdRN3ggX+d6YvhZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywN +A0ZF66D0f0hExghAzN4bcLUprbqLOzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0 +abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkCx1YAzUm5s2x7UwQa4qjJqhIF +I8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqFH4z1Ir+rzoPz +4iIprn2DQKi6bA== +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Universal CA O=GeoTrust Inc. +# Subject: CN=GeoTrust Universal CA O=GeoTrust Inc. +# Label: "GeoTrust Universal CA" +# Serial: 1 +# MD5 Fingerprint: 92:65:58:8b:a2:1a:31:72:73:68:5c:b4:a5:7a:07:48 +# SHA1 Fingerprint: e6:21:f3:35:43:79:05:9a:4b:68:30:9d:8a:2f:74:22:15:87:ec:79 +# SHA256 Fingerprint: a0:45:9b:9f:63:b2:25:59:f5:fa:5d:4c:6d:b3:f9:f7:2f:f1:93:42:03:35:78:f0:73:bf:1d:1b:46:cb:b9:12 +-----BEGIN CERTIFICATE----- +MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEW +MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVy +c2FsIENBMB4XDTA0MDMwNDA1MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UE +BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xHjAcBgNVBAMTFUdlb1RydXN0 +IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKYV +VaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9tJPi8 +cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTT +QjOgNB0eRXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFh +F7em6fgemdtzbvQKoiFs7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2v +c7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d8Lsrlh/eezJS/R27tQahsiFepdaVaH/w +mZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7VqnJNk22CDtucvc+081xd +VHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3CgaRr0BHdCX +teGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZ +f9hBZ3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfRe +Bi9Fi1jUIxaS5BZuKGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+ +nhutxx9z3SxPGWX9f5NAEC7S8O08ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB +/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0XG0D08DYj3rWMB8GA1UdIwQY +MBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG +9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc +aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fX +IwjhmF7DWgh2qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzyn +ANXH/KttgCJwpQzgXQQpAvvLoJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0z +uzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsKxr2EoyNB3tZ3b4XUhRxQ4K5RirqN +Pnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxFKyDuSN/n3QmOGKja +QI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2DFKW +koRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9 +ER/frslKxfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQt +DF4JbAiXfKM9fJP/P6EUp8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/Sfuvm +bJxPgWp6ZKy7PtXny3YuxadIwVyQD8vIP/rmMuGNG2+k5o7Y+SlIis5z/iw= +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Universal CA 2 O=GeoTrust Inc. +# Subject: CN=GeoTrust Universal CA 2 O=GeoTrust Inc. +# Label: "GeoTrust Universal CA 2" +# Serial: 1 +# MD5 Fingerprint: 34:fc:b8:d0:36:db:9e:14:b3:c2:f2:db:8f:e4:94:c7 +# SHA1 Fingerprint: 37:9a:19:7b:41:85:45:35:0c:a6:03:69:f3:3c:2e:af:47:4f:20:79 +# SHA256 Fingerprint: a0:23:4f:3b:c8:52:7c:a5:62:8e:ec:81:ad:5d:69:89:5d:a5:68:0d:c9:1d:1c:b8:47:7f:33:f8:78:b9:5b:0b +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEW +MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVy +c2FsIENBIDIwHhcNMDQwMzA0MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYD +VQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1 +c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0DE81 +WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUG +FF+3Qs17j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdq +XbboW0W63MOhBW9Wjo8QJqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxL +se4YuU6W3Nx2/zu+z18DwPw76L5GG//aQMJS9/7jOvdqdzXQ2o3rXhhqMcceujwb +KNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2WP0+GfPtDCapkzj4T8Fd +IgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP20gaXT73 +y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRt +hAAnZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgoc +QIgfksILAAX/8sgCSqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4 +Lt1ZrtmhN79UNdxzMk+MBB4zsslG8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAfBgNV +HSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8EBAMCAYYwDQYJ +KoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z +dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQ +L1EuxBRa3ugZ4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgr +Fg5fNuH8KrUwJM/gYwx7WBr+mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSo +ag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpqA1Ihn0CoZ1Dy81of398j9tx4TuaY +T1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpgY+RdM4kX2TGq2tbz +GDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiPpm8m +1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJV +OCiNUW7dFGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH +6aLcr34YEoP9VhdBLtUpgn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwX +QMAJKOSLakhT2+zNVVXxxvjpoixMptEmX36vWkzaH6byHCx+rgIW0lbQL1dTR+iS +-----END CERTIFICATE----- + +# Issuer: CN=America Online Root Certification Authority 1 O=America Online Inc. +# Subject: CN=America Online Root Certification Authority 1 O=America Online Inc. +# Label: "America Online Root Certification Authority 1" +# Serial: 1 +# MD5 Fingerprint: 14:f1:08:ad:9d:fa:64:e2:89:e7:1c:cf:a8:ad:7d:5e +# SHA1 Fingerprint: 39:21:c1:15:c1:5d:0e:ca:5c:cb:5b:c4:f0:7d:21:d8:05:0b:56:6a +# SHA256 Fingerprint: 77:40:73:12:c6:3a:15:3d:5b:c0:0b:4e:51:75:9c:df:da:c2:37:dc:2a:33:b6:79:46:e9:8e:9b:fa:68:0a:e3 +-----BEGIN CERTIFICATE----- +MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc +MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP +bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2 +MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft +ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lk +hsmj76CGv2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym +1BW32J/X3HGrfpq/m44zDyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsW +OqMFf6Dch9Wc/HKpoH145LcxVR5lu9RhsCFg7RAycsWSJR74kEoYeEfffjA3PlAb +2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP8c9GsEsPPt2IYriMqQko +O3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAU +AK3Zo/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB +BQUAA4IBAQB8itEfGDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkF +Zu90821fnZmv9ov761KyBZiibyrFVL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAb +LjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft3OJvx8Fi8eNy1gTIdGcL+oir +oQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43gKd8hdIaC2y+C +MMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds +sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7 +-----END CERTIFICATE----- + +# Issuer: CN=America Online Root Certification Authority 2 O=America Online Inc. +# Subject: CN=America Online Root Certification Authority 2 O=America Online Inc. +# Label: "America Online Root Certification Authority 2" +# Serial: 1 +# MD5 Fingerprint: d6:ed:3c:ca:e2:66:0f:af:10:43:0d:77:9b:04:09:bf +# SHA1 Fingerprint: 85:b5:ff:67:9b:0c:79:96:1f:c8:6e:44:22:00:46:13:db:17:92:84 +# SHA256 Fingerprint: 7d:3b:46:5a:60:14:e5:26:c0:af:fc:ee:21:27:d2:31:17:27:ad:81:1c:26:84:2d:00:6a:f3:73:06:cc:80:bd +-----BEGIN CERTIFICATE----- +MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc +MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP +bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2 +MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft +ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC +206B89enfHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFci +KtZHgVdEglZTvYYUAQv8f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2 +JxhP7JsowtS013wMPgwr38oE18aO6lhOqKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9 +BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JNRvCAOVIyD+OEsnpD8l7e +Xz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0gBe4lL8B +PeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67 +Xnfn6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEq +Z8A9W6Wa6897GqidFEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZ +o2C7HK2JNDJiuEMhBnIMoVxtRsX6Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3 ++L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnjB453cMor9H124HhnAgMBAAGj +YzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3OpaaEg5+31IqEj +FNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE +AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmn +xPBUlgtk87FYT15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2 +LHo1YGwRgJfMqZJS5ivmae2p+DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzccc +obGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXgJXUjhx5c3LqdsKyzadsXg8n33gy8 +CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//ZoyzH1kUQ7rVyZ2OuMe +IjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgOZtMA +DjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2F +AjgQ5ANh1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUX +Om/9riW99XJZZLF0KjhfGEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPb +AZO1XB4Y3WRayhgoPmMEEf0cjQAPuDffZ4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQl +Zvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuPcX/9XhmgD0uRuMRUvAaw +RY8mkaKO/qk= +-----END CERTIFICATE----- + +# Issuer: CN=AAA Certificate Services O=Comodo CA Limited +# Subject: CN=AAA Certificate Services O=Comodo CA Limited +# Label: "Comodo AAA Services root" +# Serial: 1 +# MD5 Fingerprint: 49:79:04:b0:eb:87:19:ac:47:b0:bc:11:51:9b:74:d0 +# SHA1 Fingerprint: d1:eb:23:a4:6d:17:d6:8f:d9:25:64:c2:f1:f1:60:17:64:d8:e3:49 +# SHA256 Fingerprint: d7:a7:a0:fb:5d:7e:27:31:d7:71:e9:48:4e:bc:de:f7:1d:5f:0c:3e:0a:29:48:78:2b:c8:3e:e0:ea:69:9e:f4 +-----BEGIN CERTIFICATE----- +MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb +MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow +GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj +YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL +MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE +BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM +GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua +BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe +3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4 +YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR +rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm +ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU +oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF +MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v +QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t +b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF +AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q +GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz +Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2 +G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi +l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3 +smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== +-----END CERTIFICATE----- + +# Issuer: CN=Secure Certificate Services O=Comodo CA Limited +# Subject: CN=Secure Certificate Services O=Comodo CA Limited +# Label: "Comodo Secure Services root" +# Serial: 1 +# MD5 Fingerprint: d3:d9:bd:ae:9f:ac:67:24:b3:c8:1b:52:e1:b9:a9:bd +# SHA1 Fingerprint: 4a:65:d5:f4:1d:ef:39:b8:b8:90:4a:4a:d3:64:81:33:cf:c7:a1:d1 +# SHA256 Fingerprint: bd:81:ce:3b:4f:65:91:d1:1a:67:b5:fc:7a:47:fd:ef:25:52:1b:f9:aa:4e:18:b9:e3:df:2e:34:a7:80:3b:e8 +-----BEGIN CERTIFICATE----- +MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEb +MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow +GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRp +ZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVow +fjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAiBgNV +BAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPM +cm3ye5drswfxdySRXyWP9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3S +HpR7LZQdqnXXs5jLrLxkU0C8j6ysNstcrbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996 +CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rCoznl2yY4rYsK7hljxxwk +3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3Vp6ea5EQz +6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNV +HQ4EFgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1Ud +EwEB/wQFMAMBAf8wgYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2Rv +Y2EuY29tL1NlY3VyZUNlcnRpZmljYXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRw +Oi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmww +DQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm4J4oqF7Tt/Q0 +5qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj +Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtI +gKvcnDe4IRRLDXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJ +aD61JlfutuC23bkpgHl9j6PwpCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDl +izeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1HRR3B7Hzs/Sk= +-----END CERTIFICATE----- + +# Issuer: CN=Trusted Certificate Services O=Comodo CA Limited +# Subject: CN=Trusted Certificate Services O=Comodo CA Limited +# Label: "Comodo Trusted Services root" +# Serial: 1 +# MD5 Fingerprint: 91:1b:3f:6e:cd:9e:ab:ee:07:fe:1f:71:d2:b3:61:27 +# SHA1 Fingerprint: e1:9f:e3:0e:8b:84:60:9e:80:9b:17:0d:72:a8:c5:ba:6e:14:09:bd +# SHA256 Fingerprint: 3f:06:e5:56:81:d4:96:f5:be:16:9e:b5:38:9f:9f:2b:8f:f6:1e:17:08:df:68:81:72:48:49:cd:5d:27:cb:69 +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEb +MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow +GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0 +aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEwMDAwMDBaFw0yODEyMzEyMzU5NTla +MH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO +BgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUwIwYD +VQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWW +fnJSoBVC21ndZHoa0Lh73TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMt +TGo87IvDktJTdyR0nAducPy9C1t2ul/y/9c3S0pgePfw+spwtOpZqqPOSC+pw7IL +fhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6juljatEPmsbS9Is6FARW +1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsSivnkBbA7 +kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0G +A1UdDgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21v +ZG9jYS5jb20vVHJ1c3RlZENlcnRpZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRo +dHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENlcnRpZmljYXRlU2VydmljZXMu +Y3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8NtwuleGFTQQuS9/ +HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32 +pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxIS +jBc/lDb+XbDABHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+ +xqFx7D+gIIxmOom0jtTYsU0lR+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/Atyjcn +dBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O9y5Xt5hwXsjEeLBi +-----END CERTIFICATE----- + +# Issuer: CN=UTN - DATACorp SGC O=The USERTRUST Network OU=http://www.usertrust.com +# Subject: CN=UTN - DATACorp SGC O=The USERTRUST Network OU=http://www.usertrust.com +# Label: "UTN DATACorp SGC Root CA" +# Serial: 91374294542884689855167577680241077609 +# MD5 Fingerprint: b3:a5:3e:77:21:6d:ac:4a:c0:c9:fb:d5:41:3d:ca:06 +# SHA1 Fingerprint: 58:11:9f:0e:12:82:87:ea:50:fd:d9:87:45:6f:4f:78:dc:fa:d6:d4 +# SHA256 Fingerprint: 85:fb:2f:91:dd:12:27:5a:01:45:b6:36:53:4f:84:02:4a:d6:8b:69:b8:ee:88:68:4f:f7:11:37:58:05:b3:48 +-----BEGIN CERTIFICATE----- +MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCB +kzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug +Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho +dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZBgNVBAMTElVUTiAtIERBVEFDb3Jw +IFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBaMIGTMQswCQYDVQQG +EwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYD +VQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cu +dXNlcnRydXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6 +E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ysraP6LnD43m77VkIVni5c7yPeIbkFdicZ +D0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlowHDyUwDAXlCCpVZvNvlK +4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA9P4yPykq +lXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulW +bfXv33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQAB +o4GrMIGoMAsGA1UdDwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRT +MtGzz3/64PGgXYVOktKeRR20TzA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3Js +LnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dDLmNybDAqBgNVHSUEIzAhBggr +BgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3DQEBBQUAA4IB +AQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft +Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyj +j98C5OBxOvG0I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVH +KWss5nbZqSl9Mt3JNjy9rjXxEZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv +2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwPDPafepE39peC4N1xaf92P2BNPM/3 +mfnGV/TJVTl4uix5yaaIK/QI +-----END CERTIFICATE----- + +# Issuer: CN=UTN-USERFirst-Hardware O=The USERTRUST Network OU=http://www.usertrust.com +# Subject: CN=UTN-USERFirst-Hardware O=The USERTRUST Network OU=http://www.usertrust.com +# Label: "UTN USERFirst Hardware Root CA" +# Serial: 91374294542884704022267039221184531197 +# MD5 Fingerprint: 4c:56:41:e5:0d:bb:2b:e8:ca:a3:ed:18:08:ad:43:39 +# SHA1 Fingerprint: 04:83:ed:33:99:ac:36:08:05:87:22:ed:bc:5e:46:00:e3:be:f9:d7 +# SHA256 Fingerprint: 6e:a5:47:41:d0:04:66:7e:ed:1b:48:16:63:4a:a3:a7:9e:6e:4b:96:95:0f:82:79:da:fc:8d:9b:d8:81:21:37 +-----BEGIN CERTIFICATE----- +MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCB +lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug +Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho +dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt +SGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgxOTIyWjCBlzELMAkG +A1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEe +MBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8v +d3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdh +cmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn +0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlIwrthdBKWHTxqctU8EGc6Oe0rE81m65UJ +M6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFdtqdt++BxF2uiiPsA3/4a +MXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8i4fDidNd +oI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqI +DsjfPe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9Ksy +oUhbAgMBAAGjgbkwgbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFKFyXyYbKJhDlV0HN9WFlp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0 +dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LUhhcmR3YXJlLmNy +bDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEF +BQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM +//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28Gpgoiskli +CE7/yMgUsogWXecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gE +CJChicsZUN/KHAG8HQQZexB2lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t +3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kniCrVWFCVH/A7HFe7fRQ5YiuayZSS +KqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67nfhmqA== +-----END CERTIFICATE----- + +# Issuer: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com +# Subject: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com +# Label: "XRamp Global CA Root" +# Serial: 107108908803651509692980124233745014957 +# MD5 Fingerprint: a1:0b:44:b3:ca:10:d8:00:6e:9d:0f:d8:0f:92:0a:d1 +# SHA1 Fingerprint: b8:01:86:d1:eb:9c:86:a5:41:04:cf:30:54:f3:4c:52:b7:e5:58:c6 +# SHA256 Fingerprint: ce:cd:dc:90:50:99:d8:da:df:c5:b1:d2:09:b7:37:cb:e2:c1:8c:fb:2c:10:c0:ff:0b:cf:0d:32:86:fc:1a:a2 +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCB +gjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk +MCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRY +UmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQxMTAxMTcx +NDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3 +dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2Vy +dmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS6 +38eMpSe2OAtp87ZOqCwuIR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCP +KZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMxfoArtYzAQDsRhtDLooY2YKTVMIJt2W7Q +DxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FEzG+gSqmUsE3a56k0enI4 +qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqsAxcZZPRa +JSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNVi +PvryxS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0P +BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASs +jVy16bYbMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0 +eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQEwDQYJKoZIhvcNAQEFBQAD +ggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc/Kh4ZzXxHfAR +vbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt +qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLa +IR9NmXmd4c8nnxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSy +i6mx5O+aGtA9aZnuqCij4Tyz8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQ +O+7ETPTsJ3xCwnR8gooJybQDJbw= +-----END CERTIFICATE----- + +# Issuer: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority +# Subject: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority +# Label: "Go Daddy Class 2 CA" +# Serial: 0 +# MD5 Fingerprint: 91:de:06:25:ab:da:fd:32:17:0c:bb:25:17:2a:84:67 +# SHA1 Fingerprint: 27:96:ba:e6:3f:18:01:e2:77:26:1b:a0:d7:77:70:02:8f:20:ee:e4 +# SHA256 Fingerprint: c3:84:6b:f2:4b:9e:93:ca:64:27:4c:0e:c6:7c:1e:cc:5e:02:4f:fc:ac:d2:d7:40:19:35:0e:81:fe:54:6a:e4 +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh +MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE +YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3 +MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo +ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg +MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN +ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA +PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w +wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi +EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY +avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+ +YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE +sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h +/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5 +IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD +ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy +OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P +TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER +dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf +ReYNnyicsbkqWletNw+vHX/bvZ8= +-----END CERTIFICATE----- + +# Issuer: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority +# Subject: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority +# Label: "Starfield Class 2 CA" +# Serial: 0 +# MD5 Fingerprint: 32:4a:4b:bb:c8:63:69:9b:be:74:9a:c6:dd:1d:46:24 +# SHA1 Fingerprint: ad:7e:1c:28:b0:64:ef:8f:60:03:40:20:14:c3:d0:e3:37:0e:b5:8a +# SHA256 Fingerprint: 14:65:fa:20:53:97:b8:76:fa:a6:f0:a9:95:8e:55:90:e4:0f:cc:7f:aa:4f:b7:c2:c8:67:75:21:fb:5f:b6:58 +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzEl +MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMp +U3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQw +NjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBoMQswCQYDVQQGEwJVUzElMCMGA1UE +ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZp +ZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqGSIb3 +DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf +8MOh2tTYbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN ++lq2cwQlZut3f+dZxkqZJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0 +X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVmepsZGD3/cVE8MC5fvj13c7JdBmzDI1aa +K4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSNF4Azbl5KXZnJHoe0nRrA +1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HFMIHCMB0G +A1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fR +zt0fhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0 +YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBD +bGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8w +DQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGsafPzWdqbAYcaT1epoXkJKtv3 +L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLMPUxA2IGvd56D +eruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl +xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynp +VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY +WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q= +-----END CERTIFICATE----- + +# Issuer: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing +# Subject: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing +# Label: "StartCom Certification Authority" +# Serial: 1 +# MD5 Fingerprint: 22:4d:8f:8a:fc:f7:35:c2:bb:57:34:90:7b:8b:22:16 +# SHA1 Fingerprint: 3e:2b:f7:f2:03:1b:96:f3:8c:e6:c4:d8:a8:5d:3e:2d:58:47:6a:0f +# SHA256 Fingerprint: c7:66:a9:be:f2:d4:07:1c:86:3a:31:aa:49:20:e8:13:b2:d1:98:60:8c:b7:b7:cf:e2:11:43:b8:36:df:09:ea +-----BEGIN CERTIFICATE----- +MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEW +MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg +Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM2WhcNMzYwOTE3MTk0NjM2WjB9 +MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi +U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh +cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk +pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf +OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C +Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT +Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi +HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM +Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w ++2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+ +Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3 +Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B +26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID +AQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE +FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9j +ZXJ0LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3Js +LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFM +BgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUHAgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0 +Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRwOi8vY2VydC5zdGFy +dGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYgU3Rh +cnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlh +YmlsaXR5LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2Yg +dGhlIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFp +bGFibGUgYXQgaHR0cDovL2NlcnQuc3RhcnRjb20ub3JnL3BvbGljeS5wZGYwEQYJ +YIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNT +TCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAgEAFmyZ +9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8 +jhvh3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUW +FjgKXlf2Ysd6AgXmvB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJz +ewT4F+irsfMuXGRuczE6Eri8sxHkfY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1 +ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3fsNrarnDy0RLrHiQi+fHLB5L +EUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZEoalHmdkrQYu +L6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq +yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuC +O3NJo2pXh5Tl1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6V +um0ABj6y6koQOdjQK/W/7HW/lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkySh +NOsF/5oirpt9P/FlUQqmMGqz9IgcgA38corog14= +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Assured ID Root CA" +# Serial: 17154717934120587862167794914071425081 +# MD5 Fingerprint: 87:ce:0b:7b:2a:0e:49:00:e1:58:71:9b:37:a8:93:72 +# SHA1 Fingerprint: 05:63:b8:63:0d:62:d7:5a:bb:c8:ab:1e:4b:df:b5:a8:99:b2:4d:43 +# SHA256 Fingerprint: 3e:90:99:b5:01:5e:8f:48:6c:00:bc:ea:9d:11:1e:e7:21:fa:ba:35:5a:89:bc:f1:df:69:56:1e:3d:c6:32:5c +-----BEGIN CERTIFICATE----- +MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv +b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl +cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c +JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP +mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+ +wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4 +VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/ +AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB +AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW +BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun +pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC +dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf +fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm +NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx +H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe ++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root CA" +# Serial: 10944719598952040374951832963794454346 +# MD5 Fingerprint: 79:e4:a9:84:0d:7d:3a:96:d7:c0:4f:e2:43:4c:89:2e +# SHA1 Fingerprint: a8:98:5d:3a:65:e5:e5:c4:b2:d7:d6:6d:40:c6:dd:2f:b1:9c:54:36 +# SHA256 Fingerprint: 43:48:a0:e9:44:4c:78:cb:26:5e:05:8d:5e:89:44:b4:d8:4f:96:62:bd:26:db:25:7f:89:34:a4:43:c7:01:61 +-----BEGIN CERTIFICATE----- +MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD +QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j +b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB +CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 +nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt +43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P +T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 +gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO +BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR +TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw +DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr +hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg +06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF +PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls +YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk +CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert High Assurance EV Root CA" +# Serial: 3553400076410547919724730734378100087 +# MD5 Fingerprint: d4:74:de:57:5c:39:b2:d3:9c:85:83:c5:c0:65:49:8a +# SHA1 Fingerprint: 5f:b7:ee:06:33:e2:59:db:ad:0c:4c:9a:e6:d3:8f:1a:61:c7:dc:25 +# SHA256 Fingerprint: 74:31:e5:f4:c3:c1:ce:46:90:77:4f:0b:61:e0:54:40:88:3b:a9:a0:1e:d0:0b:a6:ab:d7:80:6e:d3:b1:18:cf +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j +ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 +LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug +RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm ++9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW +PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM +xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB +Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 +hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg +EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA +FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec +nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z +eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF +hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 +Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe +vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep ++OkuE6N36B9K +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Primary Certification Authority O=GeoTrust Inc. +# Subject: CN=GeoTrust Primary Certification Authority O=GeoTrust Inc. +# Label: "GeoTrust Primary Certification Authority" +# Serial: 32798226551256963324313806436981982369 +# MD5 Fingerprint: 02:26:c3:01:5e:08:30:37:43:a9:d0:7d:cf:37:e6:bf +# SHA1 Fingerprint: 32:3c:11:8e:1b:f7:b8:b6:52:54:e2:e2:10:0d:d6:02:90:37:f0:96 +# SHA256 Fingerprint: 37:d5:10:06:c5:12:ea:ab:62:64:21:f1:ec:8c:92:01:3f:c5:f8:2a:e9:8e:e5:33:eb:46:19:b8:de:b4:d0:6c +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBY +MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMo +R2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEx +MjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgxCzAJBgNVBAYTAlVTMRYwFAYDVQQK +Ew1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQcmltYXJ5IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9 +AWbK7hWNb6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjA +ZIVcFU2Ix7e64HXprQU9nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE0 +7e9GceBrAqg1cmuXm2bgyxx5X9gaBGgeRwLmnWDiNpcB3841kt++Z8dtd1k7j53W +kBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGttm/81w7a4DSwDRp35+MI +mO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJ +KoZIhvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ1 +6CePbJC/kRYkRj5KTs4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl +4b7UVXGYNTq+k+qurUKykG/g/CFNNWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6K +oKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHaFloxt/m0cYASSJlyc1pZU8Fj +UjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG1riR/aYNKxoU +AT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= +-----END CERTIFICATE----- + +# Issuer: CN=thawte Primary Root CA O=thawte, Inc. OU=Certification Services Division/(c) 2006 thawte, Inc. - For authorized use only +# Subject: CN=thawte Primary Root CA O=thawte, Inc. OU=Certification Services Division/(c) 2006 thawte, Inc. - For authorized use only +# Label: "thawte Primary Root CA" +# Serial: 69529181992039203566298953787712940909 +# MD5 Fingerprint: 8c:ca:dc:0b:22:ce:f5:be:72:ac:41:1a:11:a8:d8:12 +# SHA1 Fingerprint: 91:c6:d6:ee:3e:8a:c8:63:84:e5:48:c2:99:29:5c:75:6c:81:7b:81 +# SHA256 Fingerprint: 8d:72:2f:81:a9:c1:13:c0:79:1d:f1:36:a2:96:6d:b2:6c:95:0a:97:1d:b4:6b:41:99:f4:ea:54:b7:8b:fb:9f +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCB +qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf +Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw +MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV +BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3MDAwMDAwWhcNMzYw +NzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5j +LjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYG +A1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFs +W0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta +3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk +6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6 +Sk/KaAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94J +NqR32HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XP +r87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7ORtvzw6WfU +DW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeEuzLlQRHAd9mz +YJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX +xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2 +/qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/ +LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7 +jVaMaA== +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G5 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2006 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G5 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2006 VeriSign, Inc. - For authorized use only +# Label: "VeriSign Class 3 Public Primary Certification Authority - G5" +# Serial: 33037644167568058970164719475676101450 +# MD5 Fingerprint: cb:17:e4:31:67:3e:e2:09:fe:45:57:93:f3:0a:fa:1c +# SHA1 Fingerprint: 4e:b6:d5:78:49:9b:1c:cf:5f:58:1e:ad:56:be:3d:9b:67:44:a5:e5 +# SHA256 Fingerprint: 9a:cf:ab:7e:43:c8:d8:80:d0:6b:26:2a:94:de:ee:e4:b4:65:99:89:c3:d0:ca:f1:9b:af:64:05:e4:1a:b7:df +-----BEGIN CERTIFICATE----- +MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL +ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp +U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW +ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW +ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp +U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y +aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1 +nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex +t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz +SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG +BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+ +rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/ +NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E +BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH +BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy +aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv +MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE +p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y +5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK +WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ +4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N +hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq +-----END CERTIFICATE----- + +# Issuer: CN=COMODO Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO Certification Authority O=COMODO CA Limited +# Label: "COMODO Certification Authority" +# Serial: 104350513648249232941998508985834464573 +# MD5 Fingerprint: 5c:48:dc:f7:42:72:ec:56:94:6d:1c:cc:71:35:80:75 +# SHA1 Fingerprint: 66:31:bf:9e:f7:4f:9e:b6:c9:d5:a6:0c:ba:6a:be:d1:f7:bd:ef:7b +# SHA256 Fingerprint: 0c:2c:d6:3d:f7:80:6f:a3:99:ed:e8:09:11:6b:57:5b:f8:79:89:f0:65:18:f9:80:8c:86:05:03:17:8b:af:66 +-----BEGIN CERTIFICATE----- +MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCB +gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV +BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw +MDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl +YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P +RE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3 +UcEbVASY06m/weaKXTuH+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI +2GqGd0S7WWaXUF601CxwRM/aN5VCaTwwxHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8 +Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV4EajcNxo2f8ESIl33rXp ++2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA1KGzqSX+ +DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5O +nKVIrLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW +/zAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6g +PKA6hjhodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9u +QXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOCAQEAPpiem/Yb6dc5t3iuHXIY +SdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CPOGEIqB6BCsAv +IC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ +RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4 +zJVSk/BwJVmcIGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5dd +BA6+C4OmF4O5MBKgxTMVBbkN+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IB +ZQ== +-----END CERTIFICATE----- + +# Issuer: CN=Network Solutions Certificate Authority O=Network Solutions L.L.C. +# Subject: CN=Network Solutions Certificate Authority O=Network Solutions L.L.C. +# Label: "Network Solutions Certificate Authority" +# Serial: 116697915152937497490437556386812487904 +# MD5 Fingerprint: d3:f3:a6:16:c0:fa:6b:1d:59:b1:2d:96:4d:0e:11:2e +# SHA1 Fingerprint: 74:f8:a3:c3:ef:e7:b3:90:06:4b:83:90:3c:21:64:60:20:e5:df:ce +# SHA256 Fingerprint: 15:f0:ba:00:a3:ac:7a:f3:ac:88:4c:07:2b:10:11:a0:77:bd:77:c0:97:f4:01:64:b2:f8:59:8a:bd:83:86:0c +-----BEGIN CERTIFICATE----- +MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBi +MQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu +MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3Jp +dHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMxMjM1OTU5WjBiMQswCQYDVQQGEwJV +UzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydO +ZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwz +c7MEL7xxjOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPP +OCwGJgl6cvf6UDL4wpPTaaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rl +mGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXTcrA/vGp97Eh/jcOrqnErU2lBUzS1sLnF +BgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc/Qzpf14Dl847ABSHJ3A4 +qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMBAAGjgZcw +gZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIB +BjAPBgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwu +bmV0c29sc3NsLmNvbS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3Jp +dHkuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc8 +6fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q4LqILPxFzBiwmZVRDuwduIj/ +h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/GGUsyfJj4akH +/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv +wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHN +pGxlaKFJdlxDydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey +-----END CERTIFICATE----- + +# Issuer: CN=COMODO ECC Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO ECC Certification Authority O=COMODO CA Limited +# Label: "COMODO ECC Certification Authority" +# Serial: 41578283867086692638256921589707938090 +# MD5 Fingerprint: 7c:62:ff:74:9d:31:53:5e:68:4a:d5:78:aa:1e:bf:23 +# SHA1 Fingerprint: 9f:74:4e:9f:2b:4d:ba:ec:0f:31:2c:50:b6:56:3b:8e:2d:93:c3:11 +# SHA256 Fingerprint: 17:93:92:7a:06:14:54:97:89:ad:ce:2f:8f:34:f7:f0:b6:6d:0f:3a:e3:a3:b8:4d:21:ec:15:db:ba:4f:ad:c7 +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL +MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE +BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT +IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw +MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy +ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N +T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR +FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J +cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW +BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm +fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv +GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- + +# Issuer: CN=TC TrustCenter Class 2 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 2 CA +# Subject: CN=TC TrustCenter Class 2 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 2 CA +# Label: "TC TrustCenter Class 2 CA II" +# Serial: 941389028203453866782103406992443 +# MD5 Fingerprint: ce:78:33:5c:59:78:01:6e:18:ea:b9:36:a0:b9:2e:23 +# SHA1 Fingerprint: ae:50:83:ed:7c:f4:5c:bc:8f:61:c6:21:fe:68:5d:79:42:21:15:6e +# SHA256 Fingerprint: e6:b8:f8:76:64:85:f8:07:ae:7f:8d:ac:16:70:46:1f:07:c0:a1:3e:ef:3a:1f:f7:17:53:8d:7a:ba:d3:91:b4 +-----BEGIN CERTIFICATE----- +MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjEL +MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNV +BAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0 +Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYwMTEyMTQzODQzWhcNMjUxMjMxMjI1 +OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIgR21i +SDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UEAxMc +VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jf +tMjWQ+nEdVl//OEd+DFwIxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKg +uNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2J +XjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQXa7pIXSSTYtZgo+U4+lK +8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7uSNQZu+99 +5OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1Ud +EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3 +kUrL84J6E1wIqzCB7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRy +dXN0Y2VudGVyLmRlL2NybC92Mi90Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6 +Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBUcnVzdENlbnRlciUyMENsYXNz +JTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21iSCxPVT1yb290 +Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u +TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iS +GNn3Bzn1LL4GdXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprt +ZjluS5TmVfwLG4t3wVMTZonZKNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8 +au0WOB9/WIFaGusyiC2y8zl3gK9etmF1KdsjTYjKUCjLhdLTEKJZbtOTVAB6okaV +hgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kPJOzHdiEoZa5X6AeI +dUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfkvQ== +-----END CERTIFICATE----- + +# Issuer: CN=TC TrustCenter Class 3 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 3 CA +# Subject: CN=TC TrustCenter Class 3 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 3 CA +# Label: "TC TrustCenter Class 3 CA II" +# Serial: 1506523511417715638772220530020799 +# MD5 Fingerprint: 56:5f:aa:80:61:12:17:f6:67:21:e6:2b:6d:61:56:8e +# SHA1 Fingerprint: 80:25:ef:f4:6e:70:c8:d4:72:24:65:84:fe:40:3b:8a:8d:6a:db:f5 +# SHA256 Fingerprint: 8d:a0:84:fc:f9:9c:e0:77:22:f8:9b:32:05:93:98:06:fa:5c:b8:11:e1:c8:13:f6:a1:08:c7:d3:36:b3:40:8e +-----BEGIN CERTIFICATE----- +MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjEL +MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNV +BAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0 +Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYwMTEyMTQ0MTU3WhcNMjUxMjMxMjI1 +OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIgR21i +SDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UEAxMc +VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJW +Ht4bNwcwIi9v8Qbxq63WyKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+Q +Vl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo6SI7dYnWRBpl8huXJh0obazovVkdKyT2 +1oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZuV3bOx4a+9P/FRQI2Alq +ukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk2ZyqBwi1 +Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1Ud +EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NX +XAek0CSnwPIA1DCB7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRy +dXN0Y2VudGVyLmRlL2NybC92Mi90Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6 +Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBUcnVzdENlbnRlciUyMENsYXNz +JTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21iSCxPVT1yb290 +Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u +TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlN +irTzwppVMXzEO2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8 +TtXqluJucsG7Kv5sbviRmEb8yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6 +g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9IJqDnxrcOfHFcqMRA/07QlIp2+gB +95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal092Y+tTmBvTwtiBj +S+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc5A== +-----END CERTIFICATE----- + +# Issuer: CN=TC TrustCenter Universal CA I O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA +# Subject: CN=TC TrustCenter Universal CA I O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA +# Label: "TC TrustCenter Universal CA I" +# Serial: 601024842042189035295619584734726 +# MD5 Fingerprint: 45:e1:a5:72:c5:a9:36:64:40:9e:f5:e4:58:84:67:8c +# SHA1 Fingerprint: 6b:2f:34:ad:89:58:be:62:fd:b0:6b:5c:ce:bb:9d:d9:4f:4e:39:f3 +# SHA256 Fingerprint: eb:f3:c0:2a:87:89:b1:fb:7d:51:19:95:d6:63:b7:29:06:d9:13:ce:0d:5e:10:56:8a:8a:77:e2:58:61:67:e7 +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTEL +MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNV +BAsTG1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1 +c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcNMDYwMzIyMTU1NDI4WhcNMjUxMjMx +MjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIg +R21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYwJAYD +VQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSR +JJZ4Hgmgm5qVSkr1YnwCqMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3T +fCZdzHd55yx4Oagmcw6iXSVphU9VDprvxrlE4Vc93x9UIuVvZaozhDrzznq+VZeu +jRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtwag+1m7Z3W0hZneTvWq3z +wZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9OgdwZu5GQ +fezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYD +VR0jBBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAO +BgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0G +CSqGSIb3DQEBBQUAA4IBAQAo0uCG1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X1 +7caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/CyvwbZ71q+s2IhtNerNXxTPqYn +8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3ghUJGooWMNjs +ydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT +ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/ +2TYcuiUaUj0a7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY +-----END CERTIFICATE----- + +# Issuer: CN=Cybertrust Global Root O=Cybertrust, Inc +# Subject: CN=Cybertrust Global Root O=Cybertrust, Inc +# Label: "Cybertrust Global Root" +# Serial: 4835703278459682877484360 +# MD5 Fingerprint: 72:e4:4a:87:e3:69:40:80:77:ea:bc:e3:f4:ff:f0:e1 +# SHA1 Fingerprint: 5f:43:e5:b1:bf:f8:78:8c:ac:1c:c7:ca:4a:9a:c6:22:2b:cc:34:c6 +# SHA256 Fingerprint: 96:0a:df:00:63:e9:63:56:75:0c:29:65:dd:0a:08:67:da:0b:9c:bd:6e:77:71:4a:ea:fb:23:49:ab:39:3d:a3 +-----BEGIN CERTIFICATE----- +MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYG +A1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2Jh +bCBSb290MB4XDTA2MTIxNTA4MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UE +ChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBS +b290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+Mi8vRRQZhP/8NN5 +7CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW0ozS +J8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2y +HLtgwEZLAfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iP +t3sMpTjr3kfb1V05/Iin89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNz +FtApD0mpSPCzqrdsxacwOUBdrsTiXSZT8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAY +XSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/ +MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2MDSgMqAw +hi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3Js +MB8GA1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUA +A4IBAQBW7wojoFROlZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMj +Wqd8BfP9IjsO0QbE2zZMcwSO5bAi5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUx +XOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2hO0j9n0Hq0V+09+zv+mKts2o +omcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+TX3EJIrduPuoc +A06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW +WL1WMRJOEcgh4LMRkWXbtKaIOM5V +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only +# Subject: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only +# Label: "GeoTrust Primary Certification Authority - G3" +# Serial: 28809105769928564313984085209975885599 +# MD5 Fingerprint: b5:e8:34:36:c9:10:44:58:48:70:6d:2e:83:d4:b8:05 +# SHA1 Fingerprint: 03:9e:ed:b8:0b:e7:a0:3c:69:53:89:3b:20:d2:d9:32:3a:4c:2a:fd +# SHA256 Fingerprint: b4:78:b8:12:25:0d:f8:78:63:5c:2a:a7:ec:7d:15:5e:aa:62:5e:e8:29:16:e2:cd:29:43:61:88:6c:d1:fb:d4 +-----BEGIN CERTIFICATE----- +MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCB +mDELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsT +MChjKSAyMDA4IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s +eTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIzNTk1OVowgZgxCzAJ +BgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg +MjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0 +BgNVBAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz ++uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5jK/BGvESyiaHAKAxJcCGVn2TAppMSAmUm +hsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdEc5IiaacDiGydY8hS2pgn +5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3CIShwiP/W +JmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exAL +DmKudlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZC +huOl1UcCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw +HQYDVR0OBBYEFMR5yo6hTgMdHNxr2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IB +AQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9cr5HqQ6XErhK8WTTOd8lNNTB +zU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbEAp7aDHdlDkQN +kv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD +AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUH +SJsMC8tJP33st/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2G +spki4cErx5z481+oghLrGREt +-----END CERTIFICATE----- + +# Issuer: CN=thawte Primary Root CA - G2 O=thawte, Inc. OU=(c) 2007 thawte, Inc. - For authorized use only +# Subject: CN=thawte Primary Root CA - G2 O=thawte, Inc. OU=(c) 2007 thawte, Inc. - For authorized use only +# Label: "thawte Primary Root CA - G2" +# Serial: 71758320672825410020661621085256472406 +# MD5 Fingerprint: 74:9d:ea:60:24:c4:fd:22:53:3e:cc:3a:72:d9:29:4f +# SHA1 Fingerprint: aa:db:bc:22:23:8f:c4:01:a1:27:bb:38:dd:f4:1d:db:08:9e:f0:12 +# SHA256 Fingerprint: a4:31:0d:50:af:18:a6:44:71:90:37:2a:86:af:af:8b:95:1f:fb:43:1d:83:7f:1e:56:88:b4:59:71:ed:15:57 +-----BEGIN CERTIFICATE----- +MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMp +IDIwMDcgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAi +BgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMjAeFw0wNzExMDUwMDAw +MDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh +d3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBGb3Ig +YXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9v +dCBDQSAtIEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/ +BebfowJPDQfGAFG6DAJSLSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6 +papu+7qzcMBniKI11KOasf2twu8x+qi58/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUmtgAMADna3+FGO6Lts6K +DPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUNG4k8VIZ3 +KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41ox +XZ3Krr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== +-----END CERTIFICATE----- + +# Issuer: CN=thawte Primary Root CA - G3 O=thawte, Inc. OU=Certification Services Division/(c) 2008 thawte, Inc. - For authorized use only +# Subject: CN=thawte Primary Root CA - G3 O=thawte, Inc. OU=Certification Services Division/(c) 2008 thawte, Inc. - For authorized use only +# Label: "thawte Primary Root CA - G3" +# Serial: 127614157056681299805556476275995414779 +# MD5 Fingerprint: fb:1b:5d:43:8a:94:cd:44:c6:76:f2:43:4b:47:e7:31 +# SHA1 Fingerprint: f1:8b:53:8d:1b:e9:03:b6:a6:f0:56:43:5b:17:15:89:ca:f3:6b:f2 +# SHA256 Fingerprint: 4b:03:f4:58:07:ad:70:f2:1b:fc:2c:ae:71:c9:fd:e4:60:4c:06:4c:f5:ff:b6:86:ba:e5:db:aa:d7:fd:d3:4c +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCB +rjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf +Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw +MDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNV +BAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0wODA0MDIwMDAwMDBa +Fw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhhd3Rl +LCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9u +MTgwNgYDVQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXpl +ZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEcz +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsr8nLPvb2FvdeHsbnndm +gcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2AtP0LMqmsywCPLLEHd5N/8 +YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC+BsUa0Lf +b1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS9 +9irY7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2S +zhkGcuYMXDhpxwTWvGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUk +OQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNV +HQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJKoZIhvcNAQELBQADggEBABpA +2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweKA3rD6z8KLFIW +oCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu +t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7c +KUGRIjxpp7sC8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fM +m7v/OeZWYdMKp8RcTGB7BXcmer/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZu +MdRAGmI0Nj81Aa6sY6A= +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Primary Certification Authority - G2 O=GeoTrust Inc. OU=(c) 2007 GeoTrust Inc. - For authorized use only +# Subject: CN=GeoTrust Primary Certification Authority - G2 O=GeoTrust Inc. OU=(c) 2007 GeoTrust Inc. - For authorized use only +# Label: "GeoTrust Primary Certification Authority - G2" +# Serial: 80682863203381065782177908751794619243 +# MD5 Fingerprint: 01:5e:d8:6b:bd:6f:3d:8e:a1:31:f8:12:e0:98:73:6a +# SHA1 Fingerprint: 8d:17:84:d5:37:f3:03:7d:ec:70:fe:57:8b:51:9a:99:e6:10:d7:b0 +# SHA256 Fingerprint: 5e:db:7a:c4:3b:82:a0:6a:87:61:e8:d7:be:49:79:eb:f2:61:1f:7d:d7:9b:f9:1c:1c:6b:56:6a:21:9e:d7:66 +-----BEGIN CERTIFICATE----- +MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDEL +MAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChj +KSAyMDA3IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2 +MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 +eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1OVowgZgxCzAJBgNV +BAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykgMjAw +NyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNV +BAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH +MjB2MBAGByqGSM49AgEGBSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcL +So17VDs6bl8VAsBQps8lL33KSLjHUGMcKiEIfJo22Av+0SbFWDEwKCXzXV2juLal +tJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO +BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+EVXVMAoG +CCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGT +qQ7mndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBucz +rD6ogRLQy7rQkgu2npaqBA+K +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Universal Root Certification Authority O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2008 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Universal Root Certification Authority O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2008 VeriSign, Inc. - For authorized use only +# Label: "VeriSign Universal Root Certification Authority" +# Serial: 85209574734084581917763752644031726877 +# MD5 Fingerprint: 8e:ad:b5:01:aa:4d:81:e4:8c:1d:d1:e1:14:00:95:19 +# SHA1 Fingerprint: 36:79:ca:35:66:87:72:30:4d:30:a5:fb:87:3b:0f:a7:7b:b7:0d:54 +# SHA256 Fingerprint: 23:99:56:11:27:a5:71:25:de:8c:ef:ea:61:0d:df:2f:a0:78:b5:c8:06:7f:4e:82:82:90:bf:b8:60:e8:4b:3c +-----BEGIN CERTIFICATE----- +MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCB +vTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL +ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJp +U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MTgwNgYDVQQDEy9W +ZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe +Fw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJVUzEX +MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0 +IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9y +IGF1dGhvcml6ZWQgdXNlIG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNh +bCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj1mCOkdeQmIN65lgZOIzF +9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGPMiJhgsWH +H26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+H +LL729fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN +/BMReYTtXlT2NJ8IAfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPT +rJ9VAMf2CGqUuV/c4DPxhGD5WycRtPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1Ud +EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0GCCsGAQUFBwEMBGEwX6FdoFsw +WTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgs +exkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud +DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4 +sAPmLGd75JR3Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+ +seQxIcaBlVZaDrHC1LGmWazxY8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz +4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTxP/jgdFcrGJ2BtMQo2pSXpXDrrB2+ +BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+PwGZsY6rp2aQW9IHR +lRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4mJO3 +7M2CYfE45k+XmCpajQ== +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G4 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2007 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G4 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2007 VeriSign, Inc. - For authorized use only +# Label: "VeriSign Class 3 Public Primary Certification Authority - G4" +# Serial: 63143484348153506665311985501458640051 +# MD5 Fingerprint: 3a:52:e1:e7:fd:6f:3a:e3:6f:f3:6f:99:1b:f9:22:41 +# SHA1 Fingerprint: 22:d5:d8:df:8f:02:31:d1:8d:f7:9d:b7:cf:8a:2d:64:c9:3f:6c:3a +# SHA256 Fingerprint: 69:dd:d7:ea:90:bb:57:c9:3e:13:5d:c8:5e:a6:fc:d5:48:0b:60:32:39:bd:c4:54:fc:75:8b:2a:26:cf:7f:79 +-----BEGIN CERTIFICATE----- +MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW +ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp +U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y +aXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjELMAkG +A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJp +U2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwg +SW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2ln +biBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8Utpkmw4tXNherJI9/gHm +GUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGzrl0Bp3ve +fLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJ +aW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYj +aHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMW +kf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMDA2gAMGUCMGYhDBgmYFo4e1ZC +4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIxAJw9SDkjOVga +FRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== +-----END CERTIFICATE----- + +# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority +# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority +# Label: "Verisign Class 3 Public Primary Certification Authority" +# Serial: 80507572722862485515306429940691309246 +# MD5 Fingerprint: ef:5a:f1:33:ef:f1:cd:bb:51:02:ee:12:14:4b:96:c4 +# SHA1 Fingerprint: a1:db:63:93:91:6f:17:e4:18:55:09:40:04:15:c7:02:40:b0:ae:6b +# SHA256 Fingerprint: a4:b6:b3:99:6f:c2:f3:06:b3:fd:86:81:bd:63:41:3d:8c:50:09:cc:4f:a3:29:c2:cc:f0:e2:fa:1b:14:03:05 +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkG +A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz +cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 +MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV +BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN +ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE +BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is +I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G +CSqGSIb3DQEBBQUAA4GBABByUqkFFBkyCEHwxWsKzH4PIRnN5GfcX6kb5sroc50i +2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWXbj9T/UWZYB2oK0z5XqcJ +2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/D/xwzoiQ +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 +# Label: "GlobalSign Root CA - R3" +# Serial: 4835703278459759426209954 +# MD5 Fingerprint: c5:df:b8:49:ca:05:13:55:ee:2d:ba:1a:c3:3e:b0:28 +# SHA1 Fingerprint: d6:9b:56:11:48:f0:1c:77:c5:45:78:c1:09:26:df:5b:85:69:76:ad +# SHA256 Fingerprint: cb:b5:22:d7:b7:f1:27:ad:6a:01:13:86:5b:df:1c:d4:10:2e:7d:07:59:af:63:5a:7c:f4:72:0d:c9:63:c5:3b +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G +A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp +Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4 +MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG +A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8 +RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT +gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm +KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd +QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ +XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw +DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o +LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU +RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp +jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK +6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX +mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs +Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH +WD9f +-----END CERTIFICATE----- + +# Issuer: CN=TC TrustCenter Universal CA III O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA +# Subject: CN=TC TrustCenter Universal CA III O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA +# Label: "TC TrustCenter Universal CA III" +# Serial: 2010889993983507346460533407902964 +# MD5 Fingerprint: 9f:dd:db:ab:ff:8e:ff:45:21:5f:f0:6c:9d:8f:fe:2b +# SHA1 Fingerprint: 96:56:cd:7b:57:96:98:95:d0:e1:41:46:68:06:fb:b8:c6:11:06:87 +# SHA256 Fingerprint: 30:9b:4a:87:f6:ca:56:c9:31:69:aa:a9:9c:6d:98:88:54:d7:89:2b:d5:43:7e:2d:07:b2:9c:be:da:55:d3:5d +-----BEGIN CERTIFICATE----- +MIID4TCCAsmgAwIBAgIOYyUAAQACFI0zFQLkbPQwDQYJKoZIhvcNAQEFBQAwezEL +MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNV +BAsTG1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQTEoMCYGA1UEAxMfVEMgVHJ1 +c3RDZW50ZXIgVW5pdmVyc2FsIENBIElJSTAeFw0wOTA5MDkwODE1MjdaFw0yOTEy +MzEyMzU5NTlaMHsxCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNUQyBUcnVzdENlbnRl +ciBHbWJIMSQwIgYDVQQLExtUQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0ExKDAm +BgNVBAMTH1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQSBJSUkwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDC2pxisLlxErALyBpXsq6DFJmzNEubkKLF +5+cvAqBNLaT6hdqbJYUtQCggbergvbFIgyIpRJ9Og+41URNzdNW88jBmlFPAQDYv +DIRlzg9uwliT6CwLOunBjvvya8o84pxOjuT5fdMnnxvVZ3iHLX8LR7PH6MlIfK8v +zArZQe+f/prhsq75U7Xl6UafYOPfjdN/+5Z+s7Vy+EutCHnNaYlAJ/Uqwa1D7KRT +yGG299J5KmcYdkhtWyUB0SbFt1dpIxVbYYqt8Bst2a9c8SaQaanVDED1M4BDj5yj +dipFtK+/fz6HP3bFzSreIMUWWMv5G/UPyw0RUmS40nZid4PxWJ//AgMBAAGjYzBh +MB8GA1UdIwQYMBaAFFbn4VslQ4Dg9ozhcbyO5YAvxEjiMA8GA1UdEwEB/wQFMAMB +Af8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRW5+FbJUOA4PaM4XG8juWAL8RI +4jANBgkqhkiG9w0BAQUFAAOCAQEAg8ev6n9NCjw5sWi+e22JLumzCecYV42Fmhfz +dkJQEw/HkG8zrcVJYCtsSVgZ1OK+t7+rSbyUyKu+KGwWaODIl0YgoGhnYIg5IFHY +aAERzqf2EQf27OysGh+yZm5WZ2B6dF7AbZc2rrUNXWZzwCUyRdhKBgePxLcHsU0G +DeGl6/R1yrqc0L2z0zIkTO5+4nYES0lT2PLpVDP85XEfPRRclkvxOvIAu2y0+pZV +CIgJwcyRGSmwIC3/yzikQOEXvnlhgP8HA4ZMTnsGnxGGjYnuJ8Tb4rwZjgvDwxPH +LQNjO9Po5KIqwoIIlBZU8O8fJ5AluA0OKBtHd0e9HKgl8ZS0Zg== +-----END CERTIFICATE----- + +# Issuer: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. +# Subject: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. +# Label: "Go Daddy Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: 80:3a:bc:22:c1:e6:fb:8d:9b:3b:27:4a:32:1b:9a:01 +# SHA1 Fingerprint: 47:be:ab:c9:22:ea:e8:0e:78:78:34:62:a7:9f:45:c2:54:fd:e6:8b +# SHA256 Fingerprint: 45:14:0b:32:47:eb:9c:c8:c5:b4:f0:d7:b5:30:91:f7:32:92:08:9e:6e:5a:63:e2:74:9d:d3:ac:a9:19:8e:da +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT +EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp +ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz +NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH +EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE +AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD +E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH +/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy +DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh +GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR +tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA +AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX +WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu +9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr +gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo +2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI +4uJEvlz36hz1 +-----END CERTIFICATE----- + +# Issuer: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Subject: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Label: "Starfield Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: d6:39:81:c6:52:7e:96:69:fc:fc:ca:66:ed:05:f2:96 +# SHA1 Fingerprint: b5:1c:06:7c:ee:2b:0c:3d:f8:55:ab:2d:92:f4:fe:39:d4:e7:0f:0e +# SHA256 Fingerprint: 2c:e1:cb:0b:f9:d2:f9:e1:02:99:3f:be:21:51:52:c3:b2:dd:0c:ab:de:1c:68:e5:31:9b:83:91:54:db:b7:f5 +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs +ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAw +MFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj +aG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZp +Y2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL3twQP89o/8ArFvW59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMg +nLRJdzIpVv257IzdIvpy3Cdhl+72WoTsbhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1 +HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNkN3mSwOxGXn/hbVNMYq/N +Hwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7NfZTD4p7dN +dloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0 +HZbUJtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO +BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0G +CSqGSIb3DQEBCwUAA4IBAQARWfolTwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjU +sHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx4mcujJUDJi5DnUox9g61DLu3 +4jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUwF5okxBDgBPfg +8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1 +mMpYjn0q7pBZc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- + +# Issuer: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Subject: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Label: "Starfield Services Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: 17:35:74:af:7b:61:1c:eb:f4:f9:3c:e2:ee:40:f9:a2 +# SHA1 Fingerprint: 92:5a:8f:8d:2c:6d:04:e0:66:5f:59:6a:ff:22:d8:63:e8:25:6f:3f +# SHA256 Fingerprint: 56:8d:69:05:a2:c8:87:08:a4:b3:02:51:90:ed:cf:ed:b1:97:4a:60:6a:13:c6:e5:29:0f:cb:2a:e6:3e:da:b5 +-----BEGIN CERTIFICATE----- +MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs +ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNVBAYTAlVTMRAwDgYD +VQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFy +ZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2Vy +dmljZXMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20p +OsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm2 +8xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4PahHQUw2eeBGg6345AWh1K +Ts9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLPLJGmpufe +hRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk +6mFBrMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAw +DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+q +AdcwKziIorhtSpzyEZGDMA0GCSqGSIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMI +bw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPPE95Dz+I0swSdHynVv/heyNXB +ve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTyxQGjhdByPq1z +qwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd +iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn +0q23KXB56jzaYyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCN +sSi6 +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Commercial O=AffirmTrust +# Subject: CN=AffirmTrust Commercial O=AffirmTrust +# Label: "AffirmTrust Commercial" +# Serial: 8608355977964138876 +# MD5 Fingerprint: 82:92:ba:5b:ef:cd:8a:6f:a6:3d:55:f9:84:f6:d6:b7 +# SHA1 Fingerprint: f9:b5:b6:32:45:5f:9c:be:ec:57:5f:80:dc:e9:6e:2c:c7:b2:78:b7 +# SHA256 Fingerprint: 03:76:ab:1d:54:c5:f9:80:3c:e4:b2:e2:01:a0:ee:7e:ef:7b:57:b6:36:e8:a9:3c:9b:8d:48:60:c9:6f:5f:a7 +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz +dCBDb21tZXJjaWFsMB4XDTEwMDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDEL +MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp +cm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6EqdbDuKP +Hx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yr +ba0F8PrVC8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPAL +MeIrJmqbTFeurCA+ukV6BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1 +yHp52UKqK39c/s4mT6NmgTWvRLpUHhwwMmWd5jyTXlBOeuM61G7MGvv50jeuJCqr +VwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNVHQ4EFgQUnZPGU4teyq8/ +nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ +KoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYG +XUPGhi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNj +vbz4YYCanrHOQnDiqX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivt +Z8SOyUOyXGsViQK8YvxO8rUzqrJv0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9g +N53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0khsUlHRUe072o0EclNmsxZt9YC +nlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Networking O=AffirmTrust +# Subject: CN=AffirmTrust Networking O=AffirmTrust +# Label: "AffirmTrust Networking" +# Serial: 8957382827206547757 +# MD5 Fingerprint: 42:65:ca:be:01:9a:9a:4c:a9:8c:41:49:cd:c0:d5:7f +# SHA1 Fingerprint: 29:36:21:02:8b:20:ed:02:f5:66:c5:32:d1:d6:ed:90:9f:45:00:2f +# SHA256 Fingerprint: 0a:81:ec:5a:92:97:77:f1:45:90:4a:f3:8d:5d:50:9f:66:b5:e2:c5:8f:cd:b5:31:05:8b:0e:17:f3:f0:b4:1b +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz +dCBOZXR3b3JraW5nMB4XDTEwMDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDEL +MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp +cm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SEHi3y +YJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbua +kCNrmreIdIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRL +QESxG9fhwoXA3hA/Pe24/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp +6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gbh+0t+nvujArjqWaJGctB+d1ENmHP4ndG +yH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNVHQ4EFgQUBx/S55zawm6i +QLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ +KoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfO +tDIuUFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzu +QY0x2+c06lkh1QF612S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZ +Lgo/bNjR9eUJtGxUAArgFU2HdW23WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4u +olu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9/ZFvgrG+CJPbFEfxojfHRZ48 +x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Premium O=AffirmTrust +# Subject: CN=AffirmTrust Premium O=AffirmTrust +# Label: "AffirmTrust Premium" +# Serial: 7893706540734352110 +# MD5 Fingerprint: c4:5d:0e:48:b6:ac:28:30:4e:0a:bc:f9:38:16:87:57 +# SHA1 Fingerprint: d8:a6:33:2c:e0:03:6f:b1:85:f6:63:4f:7d:6a:06:65:26:32:28:27 +# SHA256 Fingerprint: 70:a7:3f:7f:37:6b:60:07:42:48:90:45:34:b1:14:82:d5:bf:0e:69:8e:cc:49:8d:f5:25:77:eb:f2:e9:3b:9a +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVz +dCBQcmVtaXVtMB4XDTEwMDEyOTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkG +A1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1U +cnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxBLf +qV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtnBKAQ +JG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ ++jjeRFcV5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrS +s8PhaJyJ+HoAVt70VZVs+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5 +HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmdGPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d7 +70O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5Rp9EixAqnOEhss/n/fauG +V+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NIS+LI+H+S +qHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S +5u046uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4Ia +C1nEWTJ3s7xgaVY5/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TX +OwF0lkLgAOIua+rF7nKsu7/+6qqo+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYE +FJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ +BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByvMiPIs0laUZx2 +KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg +Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B +8OWycvpEgjNC6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQ +MKSOyARiqcTtNd56l+0OOF6SL5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc +0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK+4w1IX2COPKpVJEZNZOUbWo6xbLQ +u4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmVBtWVyuEklut89pMF +u+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFgIxpH +YoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8 +GKa1qF60g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaO +RtGdFNrHF+QFlozEJLUbzxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6e +KeC2uAloGRwYQw== +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Premium ECC O=AffirmTrust +# Subject: CN=AffirmTrust Premium ECC O=AffirmTrust +# Label: "AffirmTrust Premium ECC" +# Serial: 8401224907861490260 +# MD5 Fingerprint: 64:b0:09:55:cf:b1:d5:99:e2:be:13:ab:a6:5d:ea:4d +# SHA1 Fingerprint: b8:23:6b:00:2f:1d:16:86:53:01:55:6c:11:a4:37:ca:eb:ff:c3:bb +# SHA256 Fingerprint: bd:71:fd:f6:da:97:e4:cf:62:d1:64:7a:dd:25:81:b0:7d:79:ad:f8:39:7e:b4:ec:ba:9c:5e:84:88:82:14:23 +-----BEGIN CERTIFICATE----- +MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMC +VVMxFDASBgNVBAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQ +cmVtaXVtIEVDQzAeFw0xMDAxMjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJ +BgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1UcnVzdDEgMB4GA1UEAwwXQWZmaXJt +VHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNMF4bFZ0D +0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQN8O9 +ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0G +A1UdDgQWBBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/Vs +aobgxCd05DhT1wV/GzTjxi+zygk8N53X57hG8f2h4nECMEJZh0PUUd+60wkyWs6I +flc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKMeQ== +-----END CERTIFICATE----- + +# Issuer: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing +# Subject: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing +# Label: "StartCom Certification Authority" +# Serial: 45 +# MD5 Fingerprint: c9:3b:0d:84:41:fc:a4:76:79:23:08:57:de:10:19:16 +# SHA1 Fingerprint: a3:f1:33:3f:e2:42:bf:cf:c5:d1:4e:8f:39:42:98:40:68:10:d1:a0 +# SHA256 Fingerprint: e1:78:90:ee:09:a3:fb:f4:f4:8b:9c:41:4a:17:d6:37:b7:a5:06:47:e9:bc:75:23:22:72:7f:cc:17:42:a9:11 +-----BEGIN CERTIFICATE----- +MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEW +MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg +Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM3WhcNMzYwOTE3MTk0NjM2WjB9 +MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi +U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh +cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk +pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf +OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C +Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT +Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi +HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM +Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w ++2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+ +Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3 +Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B +26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID +AQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD +VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFul +F2mHMMo0aEPQQa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCC +ATgwLgYIKwYBBQUHAgEWImh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5w +ZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL2ludGVybWVk +aWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENvbW1lcmNpYWwgKFN0 +YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0aGUg +c2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0 +aWZpY2F0aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93 +d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgG +CWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5fPGFf59Jb2vKXfuM/gTF +wWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWmN3PH/UvS +Ta0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst +0OcNOrg+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNc +pRJvkrKTlMeIFw6Ttn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKl +CcWw0bdT82AUuoVpaiF8H3VhFyAXe2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVF +P0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA2MFrLH9ZXF2RsXAiV+uKa0hK +1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBsHvUwyKMQ5bLm +KhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE +JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ +8dCAWZvLMdibD4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnm +fyWl8kgAwKQB2j8= +-----END CERTIFICATE----- + +# Issuer: CN=StartCom Certification Authority G2 O=StartCom Ltd. +# Subject: CN=StartCom Certification Authority G2 O=StartCom Ltd. +# Label: "StartCom Certification Authority G2" +# Serial: 59 +# MD5 Fingerprint: 78:4b:fb:9e:64:82:0a:d3:b8:4c:62:f3:64:f2:90:64 +# SHA1 Fingerprint: 31:f1:fd:68:22:63:20:ee:c6:3b:3f:9d:ea:4a:3e:53:7c:7c:39:17 +# SHA256 Fingerprint: c7:ba:65:67:de:93:a7:98:ae:1f:aa:79:1e:71:2d:37:8f:ae:1f:93:c4:39:7f:ea:44:1b:b7:cb:e6:fd:59:95 +-----BEGIN CERTIFICATE----- +MIIFYzCCA0ugAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEW +MBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlm +aWNhdGlvbiBBdXRob3JpdHkgRzIwHhcNMTAwMTAxMDEwMDAxWhcNMzkxMjMxMjM1 +OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoG +A1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgRzIwggIiMA0G +CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8Oo1XJ +JZlKxdBWQYeQTSFgpBSHO839sj60ZwNq7eEPS8CRhXBF4EKe3ikj1AENoBB5uNsD +vfOpL9HG4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnoo +D/Uefyf3lLE3PbfHkffiAez9lInhzG7TNtYKGXmu1zSCZf98Qru23QumNK9LYP5/ +Q0kGi4xDuFby2X8hQxfqp0iVAXV16iulQ5XqFYSdCI0mblWbq9zSOdIxHWDirMxW +RST1HFSr7obdljKF+ExP6JV2tgXdNiNnvP8V4so75qbsO+wmETRIjfaAKxojAuuK +HDp2KntWFhxyKrOq42ClAJ8Em+JvHhRYW6Vsi1g8w7pOOlz34ZYrPu8HvKTlXcxN +nw3h3Kq74W4a7I/htkxNeXJdFzULHdfBR9qWJODQcqhaX2YtENwvKhOuJv4KHBnM +0D4LnMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/i +UUjXuG+v+E5+M5iSFGI6dWPPe/regjupuznixL0sAA7IF6wT700ljtizkC+p2il9 +Ha90OrInwMEePnWjFqmveiJdnxMaz6eg6+OGCtP95paV1yPIN93EfKo2rJgaErHg +TuixO/XWb/Ew1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE +AwIBBjAdBgNVHQ4EFgQUS8W0QGutHLOlHGVuRjaJhwUMDrYwDQYJKoZIhvcNAQEL +BQADggIBAHNXPyzVlTJ+N9uWkusZXn5T50HsEbZH77Xe7XRcxfGOSeD8bpkTzZ+K +2s06Ctg6Wgk/XzTQLwPSZh0avZyQN8gMjgdalEVGKua+etqhqaRpEpKwfTbURIfX +UfEpY9Z1zRbkJ4kd+MIySP3bmdCPX1R0zKxnNBFi2QwKN4fRoxdIjtIXHfbX/dtl +6/2o1PXWT6RbdejF0mCy2wl+JYt7ulKSnj7oxXehPOBKc2thz4bcQ///If4jXSRK +9dNtD2IEBVeC2m6kMyV5Sy5UGYvMLD0w6dEG/+gyRr61M3Z3qAFdlsHB1b6uJcDJ +HgoJIIihDsnzb02CVAAgp9KP5DlUFy6NHrgbuxu9mk47EDTcnIhT76IxW1hPkWLI +wpqazRVdOKnWvvgTtZ8SafJQYqz7Fzf07rh1Z2AQ+4NQ+US1dZxAF7L+/XldblhY +XzD8AK6vM8EOTmy6p6ahfzLbOOCxchcKK5HsamMm7YnUeMx0HgX4a/6ManY5Ka5l +IxKVCCIcl85bBu4M4ru8H0ST9tg4RQUh7eStqxK2A6RCLi3ECToDZ2mEmuFZkIoo +hdVddLHRDiBYmxOlsGOm7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulr +so8uBtjRkcfGEvRM/TAXw8HaOFvjqermobp573PYtlNXLfbQ4ddI +-----END CERTIFICATE----- diff --git a/plugins/updraftplus/includes/Google/Logger/Abstract.php b/plugins/updraftplus/includes/Google/Logger/Abstract.php new file mode 100644 index 0000000..d759b95 --- /dev/null +++ b/plugins/updraftplus/includes/Google/Logger/Abstract.php @@ -0,0 +1,408 @@ + 600, + self::ALERT => 550, + self::CRITICAL => 500, + self::ERROR => 400, + self::WARNING => 300, + self::NOTICE => 250, + self::INFO => 200, + self::DEBUG => 100, + ); + + /** + * @var integer $level The minimum logging level + */ + protected $level = self::DEBUG; + + /** + * @var string $logFormat The current log format + */ + protected $logFormat = self::DEFAULT_LOG_FORMAT; + /** + * @var string $dateFormat The current date format + */ + protected $dateFormat = self::DEFAULT_DATE_FORMAT; + + /** + * @var boolean $allowNewLines If newlines are allowed + */ + protected $allowNewLines = false; + + /** + * @param Google_Client $client The current Google client + */ + public function __construct(Google_Client $client) + { + $this->setLevel( + $client->getClassConfig('Google_Logger_Abstract', 'level') + ); + + $format = $client->getClassConfig('Google_Logger_Abstract', 'log_format'); + $this->logFormat = $format ? $format : self::DEFAULT_LOG_FORMAT; + + $format = $client->getClassConfig('Google_Logger_Abstract', 'date_format'); + $this->dateFormat = $format ? $format : self::DEFAULT_DATE_FORMAT; + + $this->allowNewLines = (bool) $client->getClassConfig( + 'Google_Logger_Abstract', + 'allow_newlines' + ); + } + + /** + * Sets the minimum logging level that this logger handles. + * + * @param integer $level + */ + public function setLevel($level) + { + $this->level = $this->normalizeLevel($level); + } + + /** + * Checks if the logger should handle messages at the provided level. + * + * @param integer $level + * @return boolean + */ + public function shouldHandle($level) + { + return $this->normalizeLevel($level) >= $this->level; + } + + /** + * System is unusable. + * + * @param string $message The log message + * @param array $context The log context + */ + public function emergency($message, array $context = array()) + { + $this->log(self::EMERGENCY, $message, $context); + } + + /** + * Action must be taken immediately. + * + * Example: Entire website down, database unavailable, etc. This should + * trigger the SMS alerts and wake you up. + * + * @param string $message The log message + * @param array $context The log context + */ + public function alert($message, array $context = array()) + { + $this->log(self::ALERT, $message, $context); + } + + /** + * Critical conditions. + * + * Example: Application component unavailable, unexpected exception. + * + * @param string $message The log message + * @param array $context The log context + */ + public function critical($message, array $context = array()) + { + $this->log(self::CRITICAL, $message, $context); + } + + /** + * Runtime errors that do not require immediate action but should typically + * be logged and monitored. + * + * @param string $message The log message + * @param array $context The log context + */ + public function error($message, array $context = array()) + { + $this->log(self::ERROR, $message, $context); + } + + /** + * Exceptional occurrences that are not errors. + * + * Example: Use of deprecated APIs, poor use of an API, undesirable things + * that are not necessarily wrong. + * + * @param string $message The log message + * @param array $context The log context + */ + public function warning($message, array $context = array()) + { + $this->log(self::WARNING, $message, $context); + } + + /** + * Normal but significant events. + * + * @param string $message The log message + * @param array $context The log context + */ + public function notice($message, array $context = array()) + { + $this->log(self::NOTICE, $message, $context); + } + + /** + * Interesting events. + * + * Example: User logs in, SQL logs. + * + * @param string $message The log message + * @param array $context The log context + */ + public function info($message, array $context = array()) + { + $this->log(self::INFO, $message, $context); + } + + /** + * Detailed debug information. + * + * @param string $message The log message + * @param array $context The log context + */ + public function debug($message, array $context = array()) + { + $this->log(self::DEBUG, $message, $context); + } + + /** + * Logs with an arbitrary level. + * + * @param mixed $level The log level + * @param string $message The log message + * @param array $context The log context + */ + public function log($level, $message, array $context = array()) + { + if (!$this->shouldHandle($level)) { + return false; + } + + $levelName = is_int($level) ? array_search($level, self::$levels) : $level; + $message = $this->interpolate( + array( + 'message' => $message, + 'context' => $context, + 'level' => strtoupper($levelName), + 'datetime' => new DateTime(), + ) + ); + + $this->write($message); + } + + /** + * Interpolates log variables into the defined log format. + * + * @param array $variables The log variables. + * @return string + */ + protected function interpolate(array $variables = array()) + { + $template = $this->logFormat; + + if (!$variables['context']) { + $template = str_replace('%context%', '', $template); + unset($variables['context']); + } else { + $this->reverseJsonInContext($variables['context']); + } + + foreach ($variables as $key => $value) { + if (strpos($template, '%'. $key .'%') !== false) { + $template = str_replace( + '%' . $key . '%', + $this->export($value), + $template + ); + } + } + + return $template; + } + + /** + * Reverses JSON encoded PHP arrays and objects so that they log better. + * + * @param array $context The log context + */ + protected function reverseJsonInContext(array &$context) + { + if (!$context) { + return; + } + + foreach ($context as $key => $val) { + if (!$val || !is_string($val) || !($val[0] == '{' || $val[0] == '[')) { + continue; + } + + $json = @json_decode($val); + if (is_object($json) || is_array($json)) { + $context[$key] = $json; + } + } + } + + /** + * Exports a PHP value for logging to a string. + * + * @param mixed $value The value to + */ + protected function export($value) + { + if (is_string($value)) { + if ($this->allowNewLines) { + return $value; + } + + return preg_replace('/[\r\n]+/', ' ', $value); + } + + if (is_resource($value)) { + return sprintf( + 'resource(%d) of type (%s)', + $value, + get_resource_type($value) + ); + } + + if ($value instanceof DateTime) { + return $value->format($this->dateFormat); + } + + if (version_compare(PHP_VERSION, '5.4.0', '>=')) { + $options = JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE; + + if ($this->allowNewLines) { + $options |= JSON_PRETTY_PRINT; + } + + return @json_encode($value, $options); + } + + return str_replace('\\/', '/', @json_encode($value)); + } + + /** + * Converts a given log level to the integer form. + * + * @param mixed $level The logging level + * @return integer $level The normalized level + * @throws Google_Logger_Exception If $level is invalid + */ + protected function normalizeLevel($level) + { + if (is_int($level) && array_search($level, self::$levels) !== false) { + return $level; + } + + if (is_string($level) && isset(self::$levels[$level])) { + return self::$levels[$level]; + } + + throw new Google_Logger_Exception( + sprintf("Unknown LogLevel: '%s'", $level) + ); + } + + /** + * Writes a message to the current log implementation. + * + * @param string $message The message + */ + abstract protected function write($message); +} diff --git a/plugins/updraftplus/includes/Google/Logger/Exception.php b/plugins/updraftplus/includes/Google/Logger/Exception.php new file mode 100644 index 0000000..6b0e873 --- /dev/null +++ b/plugins/updraftplus/includes/Google/Logger/Exception.php @@ -0,0 +1,24 @@ +getClassConfig('Google_Logger_File', 'file'); + if (!is_string($file) && !is_resource($file)) { + throw new Google_Logger_Exception( + 'File logger requires a filename or a valid file pointer' + ); + } + + $mode = $client->getClassConfig('Google_Logger_File', 'mode'); + if (!$mode) { + $this->mode = $mode; + } + + $this->lock = (bool) $client->getClassConfig('Google_Logger_File', 'lock'); + $this->file = $file; + } + + /** + * {@inheritdoc} + */ + protected function write($message) + { + if (is_string($this->file)) { + $this->open(); + } elseif (!is_resource($this->file)) { + throw new Google_Logger_Exception('File pointer is no longer available'); + } + + if ($this->lock) { + flock($this->file, LOCK_EX); + } + + fwrite($this->file, (string) $message); + + if ($this->lock) { + flock($this->file, LOCK_UN); + } + } + + /** + * Opens the log for writing. + * + * @return resource + */ + private function open() + { + // Used for trapping `fopen()` errors. + $this->trappedErrorNumber = null; + $this->trappedErrorString = null; + + $old = set_error_handler(array($this, 'trapError')); + + $needsChmod = !file_exists($this->file); + $fh = fopen($this->file, 'a'); + + restore_error_handler(); + + // Handles trapped `fopen()` errors. + if ($this->trappedErrorNumber) { + throw new Google_Logger_Exception( + sprintf( + "Logger Error: '%s'", + $this->trappedErrorString + ), + $this->trappedErrorNumber + ); + } + + if ($needsChmod) { + @chmod($this->file, $this->mode & ~umask()); + } + + return $this->file = $fh; + } + + /** + * Closes the log stream resource. + */ + private function close() + { + if (is_resource($this->file)) { + fclose($this->file); + } + } + + /** + * Traps `fopen()` errors. + * + * @param integer $errno The error number + * @param string $errstr The error string + */ + private function trapError($errno, $errstr) + { + $this->trappedErrorNumber = $errno; + $this->trappedErrorString = $errstr; + } + + public function __destruct() + { + $this->close(); + } +} diff --git a/plugins/updraftplus/includes/Google/Logger/Null.php b/plugins/updraftplus/includes/Google/Logger/Null.php new file mode 100644 index 0000000..62fa890 --- /dev/null +++ b/plugins/updraftplus/includes/Google/Logger/Null.php @@ -0,0 +1,43 @@ +setLogger($logger); + } + } + + /** + * Sets the PSR-3 logger where logging will be delegated. + * + * NOTE: The `$logger` should technically implement + * `Psr\Log\LoggerInterface`, but we don't explicitly require this so that + * we can be compatible with PHP 5.2. + * + * @param Psr\Log\LoggerInterface $logger The PSR-3 logger + */ + public function setLogger(/*Psr\Log\LoggerInterface*/ $logger) + { + $this->logger = $logger; + } + + /** + * {@inheritdoc} + */ + public function shouldHandle($level) + { + return isset($this->logger) && parent::shouldHandle($level); + } + + /** + * {@inheritdoc} + */ + public function log($level, $message, array $context = array()) + { + if (!$this->shouldHandle($level)) { + return false; + } + + if ($context) { + $this->reverseJsonInContext($context); + } + + $levelName = is_int($level) ? array_search($level, self::$levels) : $level; + $this->logger->log($levelName, $message, $context); + } + + /** + * {@inheritdoc} + */ + protected function write($message, array $context = array()) + { + } +} diff --git a/plugins/updraftplus/includes/Google/Model.php b/plugins/updraftplus/includes/Google/Model.php new file mode 100644 index 0000000..5ebe59d --- /dev/null +++ b/plugins/updraftplus/includes/Google/Model.php @@ -0,0 +1,295 @@ +mapTypes($array); + } + $this->gapiInit(); + } + + /** + * Getter that handles passthrough access to the data array, and lazy object creation. + * @param string $key Property name. + * @return mixed The value if any, or null. + */ + public function __get($key) + { + $keyTypeName = $this->keyType($key); + $keyDataType = $this->dataType($key); + if (isset($this->$keyTypeName) && !isset($this->processed[$key])) { + if (isset($this->modelData[$key])) { + $val = $this->modelData[$key]; + } else if (isset($this->$keyDataType) && + ($this->$keyDataType == 'array' || $this->$keyDataType == 'map')) { + $val = array(); + } else { + $val = null; + } + + if ($this->isAssociativeArray($val)) { + if (isset($this->$keyDataType) && 'map' == $this->$keyDataType) { + foreach ($val as $arrayKey => $arrayItem) { + $this->modelData[$key][$arrayKey] = + $this->createObjectFromName($keyTypeName, $arrayItem); + } + } else { + $this->modelData[$key] = $this->createObjectFromName($keyTypeName, $val); + } + } else if (is_array($val)) { + $arrayObject = array(); + foreach ($val as $arrayIndex => $arrayItem) { + $arrayObject[$arrayIndex] = + $this->createObjectFromName($keyTypeName, $arrayItem); + } + $this->modelData[$key] = $arrayObject; + } + $this->processed[$key] = true; + } + + return isset($this->modelData[$key]) ? $this->modelData[$key] : null; + } + + /** + * Initialize this object's properties from an array. + * + * @param array $array Used to seed this object's properties. + * @return void + */ + protected function mapTypes($array) + { + // Hard initialise simple types, lazy load more complex ones. + foreach ($array as $key => $val) { + if ( !property_exists($this, $this->keyType($key)) && + property_exists($this, $key)) { + $this->$key = $val; + unset($array[$key]); + } elseif (property_exists($this, $camelKey = Google_Utils::camelCase($key))) { + // This checks if property exists as camelCase, leaving it in array as snake_case + // in case of backwards compatibility issues. + $this->$camelKey = $val; + } + } + $this->modelData = $array; + } + + /** + * Blank initialiser to be used in subclasses to do post-construction initialisation - this + * avoids the need for subclasses to have to implement the variadics handling in their + * constructors. + */ + protected function gapiInit() + { + return; + } + + /** + * Create a simplified object suitable for straightforward + * conversion to JSON. This is relatively expensive + * due to the usage of reflection, but shouldn't be called + * a whole lot, and is the most straightforward way to filter. + */ + public function toSimpleObject() + { + $object = new stdClass(); + + // Process all other data. + foreach ($this->modelData as $key => $val) { + $result = $this->getSimpleValue($val); + if ($result !== null) { + $object->$key = $this->nullPlaceholderCheck($result); + } + } + + // Process all public properties. + $reflect = new ReflectionObject($this); + $props = $reflect->getProperties(ReflectionProperty::IS_PUBLIC); + foreach ($props as $member) { + $name = $member->getName(); + $result = $this->getSimpleValue($this->$name); + if ($result !== null) { + $name = $this->getMappedName($name); + $object->$name = $this->nullPlaceholderCheck($result); + } + } + + return $object; + } + + /** + * Handle different types of values, primarily + * other objects and map and array data types. + */ + private function getSimpleValue($value) + { + if ($value instanceof Google_Model) { + return $value->toSimpleObject(); + } else if (is_array($value)) { + $return = array(); + foreach ($value as $key => $a_value) { + $a_value = $this->getSimpleValue($a_value); + if ($a_value !== null) { + $key = $this->getMappedName($key); + $return[$key] = $this->nullPlaceholderCheck($a_value); + } + } + return $return; + } + return $value; + } + + /** + * Check whether the value is the null placeholder and return true null. + */ + private function nullPlaceholderCheck($value) + { + if ($value === self::NULL_VALUE) { + return null; + } + return $value; + } + + /** + * If there is an internal name mapping, use that. + */ + private function getMappedName($key) + { + if (isset($this->internal_gapi_mappings) && + isset($this->internal_gapi_mappings[$key])) { + $key = $this->internal_gapi_mappings[$key]; + } + return $key; + } + + /** + * Returns true only if the array is associative. + * @param array $array + * @return bool True if the array is associative. + */ + protected function isAssociativeArray($array) + { + if (!is_array($array)) { + return false; + } + $keys = array_keys($array); + foreach ($keys as $key) { + if (is_string($key)) { + return true; + } + } + return false; + } + + /** + * Given a variable name, discover its type. + * + * @param $name + * @param $item + * @return object The object from the item. + */ + private function createObjectFromName($name, $item) + { + $type = $this->$name; + return new $type($item); + } + + /** + * Verify if $obj is an array. + * @throws Google_Exception Thrown if $obj isn't an array. + * @param array $obj Items that should be validated. + * @param string $method Method expecting an array as an argument. + */ + public function assertIsArray($obj, $method) + { + if ($obj && !is_array($obj)) { + throw new Google_Exception( + "Incorrect parameter type passed to $method(). Expected an array." + ); + } + } + + public function offsetExists($offset) + { + return isset($this->$offset) || isset($this->modelData[$offset]); + } + + public function offsetGet($offset) + { + return isset($this->$offset) ? + $this->$offset : + $this->__get($offset); + } + + public function offsetSet($offset, $value) + { + if (property_exists($this, $offset)) { + $this->$offset = $value; + } else { + $this->modelData[$offset] = $value; + $this->processed[$offset] = true; + } + } + + public function offsetUnset($offset) + { + unset($this->modelData[$offset]); + } + + protected function keyType($key) + { + return $key . "Type"; + } + + protected function dataType($key) + { + return $key . "DataType"; + } + + public function __isset($key) + { + return isset($this->modelData[$key]); + } + + public function __unset($key) + { + unset($this->modelData[$key]); + } +} diff --git a/plugins/updraftplus/includes/Google/Service.php b/plugins/updraftplus/includes/Google/Service.php new file mode 100644 index 0000000..be75eb7 --- /dev/null +++ b/plugins/updraftplus/includes/Google/Service.php @@ -0,0 +1,40 @@ +client = $client; + } + + /** + * Return the associated Google_Client class. + * @return Google_Client + */ + public function getClient() + { + return $this->client; + } +} diff --git a/plugins/updraftplus/includes/Google/Service/Audit.php b/plugins/updraftplus/includes/Google/Service/Audit.php new file mode 100644 index 0000000..60672ec --- /dev/null +++ b/plugins/updraftplus/includes/Google/Service/Audit.php @@ -0,0 +1,416 @@ + + * Lets you access user activities in your enterprise made through various + * applications.

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Audit extends Google_Service +{ + + + public $activities; + + + /** + * Constructs the internal representation of the Audit service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'apps/reporting/audit/v1/'; + $this->version = 'v1'; + $this->serviceName = 'audit'; + + $this->activities = new Google_Service_Audit_Activities_Resource( + $this, + $this->serviceName, + 'activities', + array( + 'methods' => array( + 'list' => array( + 'path' => '{customerId}/{applicationId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'applicationId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'actorEmail' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'actorApplicationId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'actorIpAddress' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'caller' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'eventName' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'startTime' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'endTime' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'continuationToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "activities" collection of methods. + * Typical usage is: + * + * $auditService = new Google_Service_Audit(...); + * $activities = $auditService->activities; + * + */ +class Google_Service_Audit_Activities_Resource extends Google_Service_Resource +{ + + /** + * Retrieves a list of activities for a specific customer and application. + * (activities.listActivities) + * + * @param string $customerId Represents the customer who is the owner of target + * object on which action was performed. + * @param string $applicationId Application ID of the application on which the + * event was performed. + * @param array $optParams Optional parameters. + * + * @opt_param string actorEmail Email address of the user who performed the + * action. + * @opt_param string actorApplicationId Application ID of the application which + * interacted on behalf of the user while performing the event. + * @opt_param string actorIpAddress IP Address of host where the event was + * performed. Supports both IPv4 and IPv6 addresses. + * @opt_param string caller Type of the caller. + * @opt_param int maxResults Number of activity records to be shown in each + * page. + * @opt_param string eventName Name of the event being queried. + * @opt_param string startTime Return events which occured at or after this + * time. + * @opt_param string endTime Return events which occured at or before this time. + * @opt_param string continuationToken Next page URL. + * @return Google_Service_Audit_Activities + */ + public function listActivities($customerId, $applicationId, $optParams = array()) + { + $params = array('customerId' => $customerId, 'applicationId' => $applicationId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Audit_Activities"); + } +} + + + + +class Google_Service_Audit_Activities extends Google_Collection +{ + protected $collection_key = 'items'; + protected $internal_gapi_mappings = array( + ); + protected $itemsType = 'Google_Service_Audit_Activity'; + protected $itemsDataType = 'array'; + public $kind; + public $next; + + + public function setItems($items) + { + $this->items = $items; + } + public function getItems() + { + return $this->items; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setNext($next) + { + $this->next = $next; + } + public function getNext() + { + return $this->next; + } +} + +class Google_Service_Audit_Activity extends Google_Collection +{ + protected $collection_key = 'events'; + protected $internal_gapi_mappings = array( + ); + protected $actorType = 'Google_Service_Audit_ActivityActor'; + protected $actorDataType = ''; + protected $eventsType = 'Google_Service_Audit_ActivityEvents'; + protected $eventsDataType = 'array'; + protected $idType = 'Google_Service_Audit_ActivityId'; + protected $idDataType = ''; + public $ipAddress; + public $kind; + public $ownerDomain; + + + public function setActor(Google_Service_Audit_ActivityActor $actor) + { + $this->actor = $actor; + } + public function getActor() + { + return $this->actor; + } + public function setEvents($events) + { + $this->events = $events; + } + public function getEvents() + { + return $this->events; + } + public function setId(Google_Service_Audit_ActivityId $id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setIpAddress($ipAddress) + { + $this->ipAddress = $ipAddress; + } + public function getIpAddress() + { + return $this->ipAddress; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setOwnerDomain($ownerDomain) + { + $this->ownerDomain = $ownerDomain; + } + public function getOwnerDomain() + { + return $this->ownerDomain; + } +} + +class Google_Service_Audit_ActivityActor extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $applicationId; + public $callerType; + public $email; + public $key; + + + public function setApplicationId($applicationId) + { + $this->applicationId = $applicationId; + } + public function getApplicationId() + { + return $this->applicationId; + } + public function setCallerType($callerType) + { + $this->callerType = $callerType; + } + public function getCallerType() + { + return $this->callerType; + } + public function setEmail($email) + { + $this->email = $email; + } + public function getEmail() + { + return $this->email; + } + public function setKey($key) + { + $this->key = $key; + } + public function getKey() + { + return $this->key; + } +} + +class Google_Service_Audit_ActivityEvents extends Google_Collection +{ + protected $collection_key = 'parameters'; + protected $internal_gapi_mappings = array( + ); + public $eventType; + public $name; + protected $parametersType = 'Google_Service_Audit_ActivityEventsParameters'; + protected $parametersDataType = 'array'; + + + public function setEventType($eventType) + { + $this->eventType = $eventType; + } + public function getEventType() + { + return $this->eventType; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setParameters($parameters) + { + $this->parameters = $parameters; + } + public function getParameters() + { + return $this->parameters; + } +} + +class Google_Service_Audit_ActivityEventsParameters extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $name; + public $value; + + + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setValue($value) + { + $this->value = $value; + } + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Audit_ActivityId extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $applicationId; + public $customerId; + public $time; + public $uniqQualifier; + + + public function setApplicationId($applicationId) + { + $this->applicationId = $applicationId; + } + public function getApplicationId() + { + return $this->applicationId; + } + public function setCustomerId($customerId) + { + $this->customerId = $customerId; + } + public function getCustomerId() + { + return $this->customerId; + } + public function setTime($time) + { + $this->time = $time; + } + public function getTime() + { + return $this->time; + } + public function setUniqQualifier($uniqQualifier) + { + $this->uniqQualifier = $uniqQualifier; + } + public function getUniqQualifier() + { + return $this->uniqQualifier; + } +} diff --git a/plugins/updraftplus/includes/Google/Service/Container.php b/plugins/updraftplus/includes/Google/Service/Container.php new file mode 100644 index 0000000..ac409b7 --- /dev/null +++ b/plugins/updraftplus/includes/Google/Service/Container.php @@ -0,0 +1,981 @@ + + * The Google Container Engine API is used for building and managing container + * based applications, powered by the open source Kubernetes technology.

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Container extends Google_Service +{ + /** View and manage your data across Google Cloud Platform services. */ + const CLOUD_PLATFORM = + "https://www.googleapis.com/auth/cloud-platform"; + + public $projects_clusters; + public $projects_operations; + public $projects_zones_clusters; + public $projects_zones_operations; + public $projects_zones_tokens; + + + /** + * Constructs the internal representation of the Container service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'container/v1beta1/projects/'; + $this->version = 'v1beta1'; + $this->serviceName = 'container'; + + $this->projects_clusters = new Google_Service_Container_ProjectsClusters_Resource( + $this, + $this->serviceName, + 'clusters', + array( + 'methods' => array( + 'list' => array( + 'path' => '{projectId}/clusters', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->projects_operations = new Google_Service_Container_ProjectsOperations_Resource( + $this, + $this->serviceName, + 'operations', + array( + 'methods' => array( + 'list' => array( + 'path' => '{projectId}/operations', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->projects_zones_clusters = new Google_Service_Container_ProjectsZonesClusters_Resource( + $this, + $this->serviceName, + 'clusters', + array( + 'methods' => array( + 'create' => array( + 'path' => '{projectId}/zones/{zoneId}/clusters', + 'httpMethod' => 'POST', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zoneId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'delete' => array( + 'path' => '{projectId}/zones/{zoneId}/clusters/{clusterId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zoneId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'clusterId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{projectId}/zones/{zoneId}/clusters/{clusterId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zoneId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'clusterId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{projectId}/zones/{zoneId}/clusters', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zoneId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->projects_zones_operations = new Google_Service_Container_ProjectsZonesOperations_Resource( + $this, + $this->serviceName, + 'operations', + array( + 'methods' => array( + 'get' => array( + 'path' => '{projectId}/zones/{zoneId}/operations/{operationId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zoneId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'operationId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{projectId}/zones/{zoneId}/operations', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zoneId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->projects_zones_tokens = new Google_Service_Container_ProjectsZonesTokens_Resource( + $this, + $this->serviceName, + 'tokens', + array( + 'methods' => array( + 'get' => array( + 'path' => '{masterProjectId}/zones/{zoneId}/tokens/{projectNumber}/{clusterName}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'masterProjectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zoneId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'projectNumber' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'clusterName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "projects" collection of methods. + * Typical usage is: + * + * $containerService = new Google_Service_Container(...); + * $projects = $containerService->projects; + * + */ +class Google_Service_Container_Projects_Resource extends Google_Service_Resource +{ +} + +/** + * The "clusters" collection of methods. + * Typical usage is: + * + * $containerService = new Google_Service_Container(...); + * $clusters = $containerService->clusters; + * + */ +class Google_Service_Container_ProjectsClusters_Resource extends Google_Service_Resource +{ + + /** + * Lists all clusters owned by a project across all zones. + * (clusters.listProjectsClusters) + * + * @param string $projectId The Google Developers Console project ID or project + * number. + * @param array $optParams Optional parameters. + * @return Google_Service_Container_ListAggregatedClustersResponse + */ + public function listProjectsClusters($projectId, $optParams = array()) + { + $params = array('projectId' => $projectId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Container_ListAggregatedClustersResponse"); + } +} +/** + * The "operations" collection of methods. + * Typical usage is: + * + * $containerService = new Google_Service_Container(...); + * $operations = $containerService->operations; + * + */ +class Google_Service_Container_ProjectsOperations_Resource extends Google_Service_Resource +{ + + /** + * Lists all operations in a project, across all zones. + * (operations.listProjectsOperations) + * + * @param string $projectId The Google Developers Console project ID or project + * number. + * @param array $optParams Optional parameters. + * @return Google_Service_Container_ListAggregatedOperationsResponse + */ + public function listProjectsOperations($projectId, $optParams = array()) + { + $params = array('projectId' => $projectId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Container_ListAggregatedOperationsResponse"); + } +} +/** + * The "zones" collection of methods. + * Typical usage is: + * + * $containerService = new Google_Service_Container(...); + * $zones = $containerService->zones; + * + */ +class Google_Service_Container_ProjectsZones_Resource extends Google_Service_Resource +{ +} + +/** + * The "clusters" collection of methods. + * Typical usage is: + * + * $containerService = new Google_Service_Container(...); + * $clusters = $containerService->clusters; + * + */ +class Google_Service_Container_ProjectsZonesClusters_Resource extends Google_Service_Resource +{ + + /** + * Creates a cluster, consisting of the specified number and type of Google + * Compute Engine instances, plus a Kubernetes master instance. + * + * The cluster is created in the project's default network. + * + * A firewall is added that allows traffic into port 443 on the master, which + * enables HTTPS. A firewall and a route is added for each node to allow the + * containers on that node to communicate with all other instances in the + * cluster. + * + * Finally, a route named k8s-iproute-10-xx-0-0 is created to track that the + * cluster's 10.xx.0.0/16 CIDR has been assigned. (clusters.create) + * + * @param string $projectId The Google Developers Console project ID or project + * number. + * @param string $zoneId The name of the Google Compute Engine zone in which the + * cluster resides. + * @param Google_CreateClusterRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Container_Operation + */ + public function create($projectId, $zoneId, Google_Service_Container_CreateClusterRequest $postBody, $optParams = array()) + { + $params = array('projectId' => $projectId, 'zoneId' => $zoneId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('create', array($params), "Google_Service_Container_Operation"); + } + + /** + * Deletes the cluster, including the Kubernetes master and all worker nodes. + * + * Firewalls and routes that were configured at cluster creation are also + * deleted. (clusters.delete) + * + * @param string $projectId The Google Developers Console project ID or project + * number. + * @param string $zoneId The name of the Google Compute Engine zone in which the + * cluster resides. + * @param string $clusterId The name of the cluster to delete. + * @param array $optParams Optional parameters. + * @return Google_Service_Container_Operation + */ + public function delete($projectId, $zoneId, $clusterId, $optParams = array()) + { + $params = array('projectId' => $projectId, 'zoneId' => $zoneId, 'clusterId' => $clusterId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_Container_Operation"); + } + + /** + * Gets a specific cluster. (clusters.get) + * + * @param string $projectId The Google Developers Console project ID or project + * number. + * @param string $zoneId The name of the Google Compute Engine zone in which the + * cluster resides. + * @param string $clusterId The name of the cluster to retrieve. + * @param array $optParams Optional parameters. + * @return Google_Service_Container_Cluster + */ + public function get($projectId, $zoneId, $clusterId, $optParams = array()) + { + $params = array('projectId' => $projectId, 'zoneId' => $zoneId, 'clusterId' => $clusterId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Container_Cluster"); + } + + /** + * Lists all clusters owned by a project in the specified zone. + * (clusters.listProjectsZonesClusters) + * + * @param string $projectId The Google Developers Console project ID or project + * number. + * @param string $zoneId The name of the Google Compute Engine zone in which the + * cluster resides. + * @param array $optParams Optional parameters. + * @return Google_Service_Container_ListClustersResponse + */ + public function listProjectsZonesClusters($projectId, $zoneId, $optParams = array()) + { + $params = array('projectId' => $projectId, 'zoneId' => $zoneId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Container_ListClustersResponse"); + } +} +/** + * The "operations" collection of methods. + * Typical usage is: + * + * $containerService = new Google_Service_Container(...); + * $operations = $containerService->operations; + * + */ +class Google_Service_Container_ProjectsZonesOperations_Resource extends Google_Service_Resource +{ + + /** + * Gets the specified operation. (operations.get) + * + * @param string $projectId The Google Developers Console project ID or project + * number. + * @param string $zoneId The name of the Google Compute Engine zone in which the + * operation resides. This is always the same zone as the cluster with which the + * operation is associated. + * @param string $operationId The server-assigned name of the operation. + * @param array $optParams Optional parameters. + * @return Google_Service_Container_Operation + */ + public function get($projectId, $zoneId, $operationId, $optParams = array()) + { + $params = array('projectId' => $projectId, 'zoneId' => $zoneId, 'operationId' => $operationId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Container_Operation"); + } + + /** + * Lists all operations in a project in a specific zone. + * (operations.listProjectsZonesOperations) + * + * @param string $projectId The Google Developers Console project ID or project + * number. + * @param string $zoneId The name of the Google Compute Engine zone to return + * operations for. + * @param array $optParams Optional parameters. + * @return Google_Service_Container_ListOperationsResponse + */ + public function listProjectsZonesOperations($projectId, $zoneId, $optParams = array()) + { + $params = array('projectId' => $projectId, 'zoneId' => $zoneId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Container_ListOperationsResponse"); + } +} +/** + * The "tokens" collection of methods. + * Typical usage is: + * + * $containerService = new Google_Service_Container(...); + * $tokens = $containerService->tokens; + * + */ +class Google_Service_Container_ProjectsZonesTokens_Resource extends Google_Service_Resource +{ + + /** + * Gets a compute-rw scoped OAuth2 access token for . Authentication is + * performed to ensure that the caller is a member of and that the request is + * coming from the expected master VM for the specified cluster. See go/gke- + * cross-project-auth for more details. (tokens.get) + * + * @param string $masterProjectId The hosted master project from which this + * request is coming. + * @param string $zoneId The zone of the specified cluster. + * @param string $projectNumber The project number for which the access token is + * being requested. + * @param string $clusterName The name of the specified cluster. + * @param array $optParams Optional parameters. + * @return Google_Service_Container_Token + */ + public function get($masterProjectId, $zoneId, $projectNumber, $clusterName, $optParams = array()) + { + $params = array('masterProjectId' => $masterProjectId, 'zoneId' => $zoneId, 'projectNumber' => $projectNumber, 'clusterName' => $clusterName); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Container_Token"); + } +} + + + + +class Google_Service_Container_Cluster extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $clusterApiVersion; + public $containerIpv4Cidr; + public $creationTimestamp; + public $description; + public $enableCloudLogging; + public $endpoint; + protected $masterAuthType = 'Google_Service_Container_MasterAuth'; + protected $masterAuthDataType = ''; + public $name; + public $network; + protected $nodeConfigType = 'Google_Service_Container_NodeConfig'; + protected $nodeConfigDataType = ''; + public $nodeRoutingPrefixSize; + public $numNodes; + public $selfLink; + public $servicesIpv4Cidr; + public $status; + public $statusMessage; + public $zone; + + + public function setClusterApiVersion($clusterApiVersion) + { + $this->clusterApiVersion = $clusterApiVersion; + } + public function getClusterApiVersion() + { + return $this->clusterApiVersion; + } + public function setContainerIpv4Cidr($containerIpv4Cidr) + { + $this->containerIpv4Cidr = $containerIpv4Cidr; + } + public function getContainerIpv4Cidr() + { + return $this->containerIpv4Cidr; + } + public function setCreationTimestamp($creationTimestamp) + { + $this->creationTimestamp = $creationTimestamp; + } + public function getCreationTimestamp() + { + return $this->creationTimestamp; + } + public function setDescription($description) + { + $this->description = $description; + } + public function getDescription() + { + return $this->description; + } + public function setEnableCloudLogging($enableCloudLogging) + { + $this->enableCloudLogging = $enableCloudLogging; + } + public function getEnableCloudLogging() + { + return $this->enableCloudLogging; + } + public function setEndpoint($endpoint) + { + $this->endpoint = $endpoint; + } + public function getEndpoint() + { + return $this->endpoint; + } + public function setMasterAuth(Google_Service_Container_MasterAuth $masterAuth) + { + $this->masterAuth = $masterAuth; + } + public function getMasterAuth() + { + return $this->masterAuth; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setNetwork($network) + { + $this->network = $network; + } + public function getNetwork() + { + return $this->network; + } + public function setNodeConfig(Google_Service_Container_NodeConfig $nodeConfig) + { + $this->nodeConfig = $nodeConfig; + } + public function getNodeConfig() + { + return $this->nodeConfig; + } + public function setNodeRoutingPrefixSize($nodeRoutingPrefixSize) + { + $this->nodeRoutingPrefixSize = $nodeRoutingPrefixSize; + } + public function getNodeRoutingPrefixSize() + { + return $this->nodeRoutingPrefixSize; + } + public function setNumNodes($numNodes) + { + $this->numNodes = $numNodes; + } + public function getNumNodes() + { + return $this->numNodes; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } + public function setServicesIpv4Cidr($servicesIpv4Cidr) + { + $this->servicesIpv4Cidr = $servicesIpv4Cidr; + } + public function getServicesIpv4Cidr() + { + return $this->servicesIpv4Cidr; + } + public function setStatus($status) + { + $this->status = $status; + } + public function getStatus() + { + return $this->status; + } + public function setStatusMessage($statusMessage) + { + $this->statusMessage = $statusMessage; + } + public function getStatusMessage() + { + return $this->statusMessage; + } + public function setZone($zone) + { + $this->zone = $zone; + } + public function getZone() + { + return $this->zone; + } +} + +class Google_Service_Container_CreateClusterRequest extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + protected $clusterType = 'Google_Service_Container_Cluster'; + protected $clusterDataType = ''; + + + public function setCluster(Google_Service_Container_Cluster $cluster) + { + $this->cluster = $cluster; + } + public function getCluster() + { + return $this->cluster; + } +} + +class Google_Service_Container_ListAggregatedClustersResponse extends Google_Collection +{ + protected $collection_key = 'clusters'; + protected $internal_gapi_mappings = array( + ); + protected $clustersType = 'Google_Service_Container_Cluster'; + protected $clustersDataType = 'array'; + + + public function setClusters($clusters) + { + $this->clusters = $clusters; + } + public function getClusters() + { + return $this->clusters; + } +} + +class Google_Service_Container_ListAggregatedOperationsResponse extends Google_Collection +{ + protected $collection_key = 'operations'; + protected $internal_gapi_mappings = array( + ); + protected $operationsType = 'Google_Service_Container_Operation'; + protected $operationsDataType = 'array'; + + + public function setOperations($operations) + { + $this->operations = $operations; + } + public function getOperations() + { + return $this->operations; + } +} + +class Google_Service_Container_ListClustersResponse extends Google_Collection +{ + protected $collection_key = 'clusters'; + protected $internal_gapi_mappings = array( + ); + protected $clustersType = 'Google_Service_Container_Cluster'; + protected $clustersDataType = 'array'; + + + public function setClusters($clusters) + { + $this->clusters = $clusters; + } + public function getClusters() + { + return $this->clusters; + } +} + +class Google_Service_Container_ListOperationsResponse extends Google_Collection +{ + protected $collection_key = 'operations'; + protected $internal_gapi_mappings = array( + ); + protected $operationsType = 'Google_Service_Container_Operation'; + protected $operationsDataType = 'array'; + + + public function setOperations($operations) + { + $this->operations = $operations; + } + public function getOperations() + { + return $this->operations; + } +} + +class Google_Service_Container_MasterAuth extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $bearerToken; + public $password; + public $user; + + + public function setBearerToken($bearerToken) + { + $this->bearerToken = $bearerToken; + } + public function getBearerToken() + { + return $this->bearerToken; + } + public function setPassword($password) + { + $this->password = $password; + } + public function getPassword() + { + return $this->password; + } + public function setUser($user) + { + $this->user = $user; + } + public function getUser() + { + return $this->user; + } +} + +class Google_Service_Container_NodeConfig extends Google_Collection +{ + protected $collection_key = 'serviceAccounts'; + protected $internal_gapi_mappings = array( + ); + public $machineType; + protected $serviceAccountsType = 'Google_Service_Container_ServiceAccount'; + protected $serviceAccountsDataType = 'array'; + public $sourceImage; + + + public function setMachineType($machineType) + { + $this->machineType = $machineType; + } + public function getMachineType() + { + return $this->machineType; + } + public function setServiceAccounts($serviceAccounts) + { + $this->serviceAccounts = $serviceAccounts; + } + public function getServiceAccounts() + { + return $this->serviceAccounts; + } + public function setSourceImage($sourceImage) + { + $this->sourceImage = $sourceImage; + } + public function getSourceImage() + { + return $this->sourceImage; + } +} + +class Google_Service_Container_Operation extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $errorMessage; + public $name; + public $operationType; + public $selfLink; + public $status; + public $target; + public $targetLink; + public $zone; + + + public function setErrorMessage($errorMessage) + { + $this->errorMessage = $errorMessage; + } + public function getErrorMessage() + { + return $this->errorMessage; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setOperationType($operationType) + { + $this->operationType = $operationType; + } + public function getOperationType() + { + return $this->operationType; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } + public function setStatus($status) + { + $this->status = $status; + } + public function getStatus() + { + return $this->status; + } + public function setTarget($target) + { + $this->target = $target; + } + public function getTarget() + { + return $this->target; + } + public function setTargetLink($targetLink) + { + $this->targetLink = $targetLink; + } + public function getTargetLink() + { + return $this->targetLink; + } + public function setZone($zone) + { + $this->zone = $zone; + } + public function getZone() + { + return $this->zone; + } +} + +class Google_Service_Container_ServiceAccount extends Google_Collection +{ + protected $collection_key = 'scopes'; + protected $internal_gapi_mappings = array( + ); + public $email; + public $scopes; + + + public function setEmail($email) + { + $this->email = $email; + } + public function getEmail() + { + return $this->email; + } + public function setScopes($scopes) + { + $this->scopes = $scopes; + } + public function getScopes() + { + return $this->scopes; + } +} + +class Google_Service_Container_Token extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $accessToken; + public $expiryTimeSeconds; + + + public function setAccessToken($accessToken) + { + $this->accessToken = $accessToken; + } + public function getAccessToken() + { + return $this->accessToken; + } + public function setExpiryTimeSeconds($expiryTimeSeconds) + { + $this->expiryTimeSeconds = $expiryTimeSeconds; + } + public function getExpiryTimeSeconds() + { + return $this->expiryTimeSeconds; + } +} diff --git a/plugins/updraftplus/includes/Google/Service/Datastore.php b/plugins/updraftplus/includes/Google/Service/Datastore.php new file mode 100644 index 0000000..e627d9d --- /dev/null +++ b/plugins/updraftplus/includes/Google/Service/Datastore.php @@ -0,0 +1,1524 @@ + + * API for accessing Google Cloud Datastore.

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Datastore extends Google_Service +{ + /** View and manage your data across Google Cloud Platform services. */ + const CLOUD_PLATFORM = + "https://www.googleapis.com/auth/cloud-platform"; + /** View and manage your Google Cloud Datastore data. */ + const DATASTORE = + "https://www.googleapis.com/auth/datastore"; + /** View your email address. */ + const USERINFO_EMAIL = + "https://www.googleapis.com/auth/userinfo.email"; + + public $datasets; + + + /** + * Constructs the internal representation of the Datastore service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'datastore/v1beta2/datasets/'; + $this->version = 'v1beta2'; + $this->serviceName = 'datastore'; + + $this->datasets = new Google_Service_Datastore_Datasets_Resource( + $this, + $this->serviceName, + 'datasets', + array( + 'methods' => array( + 'allocateIds' => array( + 'path' => '{datasetId}/allocateIds', + 'httpMethod' => 'POST', + 'parameters' => array( + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'beginTransaction' => array( + 'path' => '{datasetId}/beginTransaction', + 'httpMethod' => 'POST', + 'parameters' => array( + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'commit' => array( + 'path' => '{datasetId}/commit', + 'httpMethod' => 'POST', + 'parameters' => array( + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'lookup' => array( + 'path' => '{datasetId}/lookup', + 'httpMethod' => 'POST', + 'parameters' => array( + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'rollback' => array( + 'path' => '{datasetId}/rollback', + 'httpMethod' => 'POST', + 'parameters' => array( + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'runQuery' => array( + 'path' => '{datasetId}/runQuery', + 'httpMethod' => 'POST', + 'parameters' => array( + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "datasets" collection of methods. + * Typical usage is: + * + * $datastoreService = new Google_Service_Datastore(...); + * $datasets = $datastoreService->datasets; + * + */ +class Google_Service_Datastore_Datasets_Resource extends Google_Service_Resource +{ + + /** + * Allocate IDs for incomplete keys (useful for referencing an entity before it + * is inserted). (datasets.allocateIds) + * + * @param string $datasetId Identifies the dataset. + * @param Google_AllocateIdsRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Datastore_AllocateIdsResponse + */ + public function allocateIds($datasetId, Google_Service_Datastore_AllocateIdsRequest $postBody, $optParams = array()) + { + $params = array('datasetId' => $datasetId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('allocateIds', array($params), "Google_Service_Datastore_AllocateIdsResponse"); + } + + /** + * Begin a new transaction. (datasets.beginTransaction) + * + * @param string $datasetId Identifies the dataset. + * @param Google_BeginTransactionRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Datastore_BeginTransactionResponse + */ + public function beginTransaction($datasetId, Google_Service_Datastore_BeginTransactionRequest $postBody, $optParams = array()) + { + $params = array('datasetId' => $datasetId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('beginTransaction', array($params), "Google_Service_Datastore_BeginTransactionResponse"); + } + + /** + * Commit a transaction, optionally creating, deleting or modifying some + * entities. (datasets.commit) + * + * @param string $datasetId Identifies the dataset. + * @param Google_CommitRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Datastore_CommitResponse + */ + public function commit($datasetId, Google_Service_Datastore_CommitRequest $postBody, $optParams = array()) + { + $params = array('datasetId' => $datasetId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('commit', array($params), "Google_Service_Datastore_CommitResponse"); + } + + /** + * Look up some entities by key. (datasets.lookup) + * + * @param string $datasetId Identifies the dataset. + * @param Google_LookupRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Datastore_LookupResponse + */ + public function lookup($datasetId, Google_Service_Datastore_LookupRequest $postBody, $optParams = array()) + { + $params = array('datasetId' => $datasetId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('lookup', array($params), "Google_Service_Datastore_LookupResponse"); + } + + /** + * Roll back a transaction. (datasets.rollback) + * + * @param string $datasetId Identifies the dataset. + * @param Google_RollbackRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Datastore_RollbackResponse + */ + public function rollback($datasetId, Google_Service_Datastore_RollbackRequest $postBody, $optParams = array()) + { + $params = array('datasetId' => $datasetId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('rollback', array($params), "Google_Service_Datastore_RollbackResponse"); + } + + /** + * Query for entities. (datasets.runQuery) + * + * @param string $datasetId Identifies the dataset. + * @param Google_RunQueryRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Datastore_RunQueryResponse + */ + public function runQuery($datasetId, Google_Service_Datastore_RunQueryRequest $postBody, $optParams = array()) + { + $params = array('datasetId' => $datasetId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('runQuery', array($params), "Google_Service_Datastore_RunQueryResponse"); + } +} + + + + +class Google_Service_Datastore_AllocateIdsRequest extends Google_Collection +{ + protected $collection_key = 'keys'; + protected $internal_gapi_mappings = array( + ); + protected $keysType = 'Google_Service_Datastore_Key'; + protected $keysDataType = 'array'; + + + public function setKeys($keys) + { + $this->keys = $keys; + } + public function getKeys() + { + return $this->keys; + } +} + +class Google_Service_Datastore_AllocateIdsResponse extends Google_Collection +{ + protected $collection_key = 'keys'; + protected $internal_gapi_mappings = array( + ); + protected $headerType = 'Google_Service_Datastore_ResponseHeader'; + protected $headerDataType = ''; + protected $keysType = 'Google_Service_Datastore_Key'; + protected $keysDataType = 'array'; + + + public function setHeader(Google_Service_Datastore_ResponseHeader $header) + { + $this->header = $header; + } + public function getHeader() + { + return $this->header; + } + public function setKeys($keys) + { + $this->keys = $keys; + } + public function getKeys() + { + return $this->keys; + } +} + +class Google_Service_Datastore_BeginTransactionRequest extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $isolationLevel; + + + public function setIsolationLevel($isolationLevel) + { + $this->isolationLevel = $isolationLevel; + } + public function getIsolationLevel() + { + return $this->isolationLevel; + } +} + +class Google_Service_Datastore_BeginTransactionResponse extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + protected $headerType = 'Google_Service_Datastore_ResponseHeader'; + protected $headerDataType = ''; + public $transaction; + + + public function setHeader(Google_Service_Datastore_ResponseHeader $header) + { + $this->header = $header; + } + public function getHeader() + { + return $this->header; + } + public function setTransaction($transaction) + { + $this->transaction = $transaction; + } + public function getTransaction() + { + return $this->transaction; + } +} + +class Google_Service_Datastore_CommitRequest extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $ignoreReadOnly; + public $mode; + protected $mutationType = 'Google_Service_Datastore_Mutation'; + protected $mutationDataType = ''; + public $transaction; + + + public function setIgnoreReadOnly($ignoreReadOnly) + { + $this->ignoreReadOnly = $ignoreReadOnly; + } + public function getIgnoreReadOnly() + { + return $this->ignoreReadOnly; + } + public function setMode($mode) + { + $this->mode = $mode; + } + public function getMode() + { + return $this->mode; + } + public function setMutation(Google_Service_Datastore_Mutation $mutation) + { + $this->mutation = $mutation; + } + public function getMutation() + { + return $this->mutation; + } + public function setTransaction($transaction) + { + $this->transaction = $transaction; + } + public function getTransaction() + { + return $this->transaction; + } +} + +class Google_Service_Datastore_CommitResponse extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + protected $headerType = 'Google_Service_Datastore_ResponseHeader'; + protected $headerDataType = ''; + protected $mutationResultType = 'Google_Service_Datastore_MutationResult'; + protected $mutationResultDataType = ''; + + + public function setHeader(Google_Service_Datastore_ResponseHeader $header) + { + $this->header = $header; + } + public function getHeader() + { + return $this->header; + } + public function setMutationResult(Google_Service_Datastore_MutationResult $mutationResult) + { + $this->mutationResult = $mutationResult; + } + public function getMutationResult() + { + return $this->mutationResult; + } +} + +class Google_Service_Datastore_CompositeFilter extends Google_Collection +{ + protected $collection_key = 'filters'; + protected $internal_gapi_mappings = array( + ); + protected $filtersType = 'Google_Service_Datastore_Filter'; + protected $filtersDataType = 'array'; + public $operator; + + + public function setFilters($filters) + { + $this->filters = $filters; + } + public function getFilters() + { + return $this->filters; + } + public function setOperator($operator) + { + $this->operator = $operator; + } + public function getOperator() + { + return $this->operator; + } +} + +class Google_Service_Datastore_Entity extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + protected $keyType = 'Google_Service_Datastore_Key'; + protected $keyDataType = ''; + protected $propertiesType = 'Google_Service_Datastore_Property'; + protected $propertiesDataType = 'map'; + + + public function setKey(Google_Service_Datastore_Key $key) + { + $this->key = $key; + } + public function getKey() + { + return $this->key; + } + public function setProperties($properties) + { + $this->properties = $properties; + } + public function getProperties() + { + return $this->properties; + } +} + +class Google_Service_Datastore_EntityProperties extends Google_Model +{ +} + +class Google_Service_Datastore_EntityResult extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + protected $entityType = 'Google_Service_Datastore_Entity'; + protected $entityDataType = ''; + + + public function setEntity(Google_Service_Datastore_Entity $entity) + { + $this->entity = $entity; + } + public function getEntity() + { + return $this->entity; + } +} + +class Google_Service_Datastore_Filter extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + protected $compositeFilterType = 'Google_Service_Datastore_CompositeFilter'; + protected $compositeFilterDataType = ''; + protected $propertyFilterType = 'Google_Service_Datastore_PropertyFilter'; + protected $propertyFilterDataType = ''; + + + public function setCompositeFilter(Google_Service_Datastore_CompositeFilter $compositeFilter) + { + $this->compositeFilter = $compositeFilter; + } + public function getCompositeFilter() + { + return $this->compositeFilter; + } + public function setPropertyFilter(Google_Service_Datastore_PropertyFilter $propertyFilter) + { + $this->propertyFilter = $propertyFilter; + } + public function getPropertyFilter() + { + return $this->propertyFilter; + } +} + +class Google_Service_Datastore_GqlQuery extends Google_Collection +{ + protected $collection_key = 'numberArgs'; + protected $internal_gapi_mappings = array( + ); + public $allowLiteral; + protected $nameArgsType = 'Google_Service_Datastore_GqlQueryArg'; + protected $nameArgsDataType = 'array'; + protected $numberArgsType = 'Google_Service_Datastore_GqlQueryArg'; + protected $numberArgsDataType = 'array'; + public $queryString; + + + public function setAllowLiteral($allowLiteral) + { + $this->allowLiteral = $allowLiteral; + } + public function getAllowLiteral() + { + return $this->allowLiteral; + } + public function setNameArgs($nameArgs) + { + $this->nameArgs = $nameArgs; + } + public function getNameArgs() + { + return $this->nameArgs; + } + public function setNumberArgs($numberArgs) + { + $this->numberArgs = $numberArgs; + } + public function getNumberArgs() + { + return $this->numberArgs; + } + public function setQueryString($queryString) + { + $this->queryString = $queryString; + } + public function getQueryString() + { + return $this->queryString; + } +} + +class Google_Service_Datastore_GqlQueryArg extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $cursor; + public $name; + protected $valueType = 'Google_Service_Datastore_Value'; + protected $valueDataType = ''; + + + public function setCursor($cursor) + { + $this->cursor = $cursor; + } + public function getCursor() + { + return $this->cursor; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setValue(Google_Service_Datastore_Value $value) + { + $this->value = $value; + } + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Datastore_Key extends Google_Collection +{ + protected $collection_key = 'path'; + protected $internal_gapi_mappings = array( + ); + protected $partitionIdType = 'Google_Service_Datastore_PartitionId'; + protected $partitionIdDataType = ''; + protected $pathType = 'Google_Service_Datastore_KeyPathElement'; + protected $pathDataType = 'array'; + + + public function setPartitionId(Google_Service_Datastore_PartitionId $partitionId) + { + $this->partitionId = $partitionId; + } + public function getPartitionId() + { + return $this->partitionId; + } + public function setPath($path) + { + $this->path = $path; + } + public function getPath() + { + return $this->path; + } +} + +class Google_Service_Datastore_KeyPathElement extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $id; + public $kind; + public $name; + + + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } +} + +class Google_Service_Datastore_KindExpression extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $name; + + + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } +} + +class Google_Service_Datastore_LookupRequest extends Google_Collection +{ + protected $collection_key = 'keys'; + protected $internal_gapi_mappings = array( + ); + protected $keysType = 'Google_Service_Datastore_Key'; + protected $keysDataType = 'array'; + protected $readOptionsType = 'Google_Service_Datastore_ReadOptions'; + protected $readOptionsDataType = ''; + + + public function setKeys($keys) + { + $this->keys = $keys; + } + public function getKeys() + { + return $this->keys; + } + public function setReadOptions(Google_Service_Datastore_ReadOptions $readOptions) + { + $this->readOptions = $readOptions; + } + public function getReadOptions() + { + return $this->readOptions; + } +} + +class Google_Service_Datastore_LookupResponse extends Google_Collection +{ + protected $collection_key = 'missing'; + protected $internal_gapi_mappings = array( + ); + protected $deferredType = 'Google_Service_Datastore_Key'; + protected $deferredDataType = 'array'; + protected $foundType = 'Google_Service_Datastore_EntityResult'; + protected $foundDataType = 'array'; + protected $headerType = 'Google_Service_Datastore_ResponseHeader'; + protected $headerDataType = ''; + protected $missingType = 'Google_Service_Datastore_EntityResult'; + protected $missingDataType = 'array'; + + + public function setDeferred($deferred) + { + $this->deferred = $deferred; + } + public function getDeferred() + { + return $this->deferred; + } + public function setFound($found) + { + $this->found = $found; + } + public function getFound() + { + return $this->found; + } + public function setHeader(Google_Service_Datastore_ResponseHeader $header) + { + $this->header = $header; + } + public function getHeader() + { + return $this->header; + } + public function setMissing($missing) + { + $this->missing = $missing; + } + public function getMissing() + { + return $this->missing; + } +} + +class Google_Service_Datastore_Mutation extends Google_Collection +{ + protected $collection_key = 'upsert'; + protected $internal_gapi_mappings = array( + ); + protected $deleteType = 'Google_Service_Datastore_Key'; + protected $deleteDataType = 'array'; + public $force; + protected $insertType = 'Google_Service_Datastore_Entity'; + protected $insertDataType = 'array'; + protected $insertAutoIdType = 'Google_Service_Datastore_Entity'; + protected $insertAutoIdDataType = 'array'; + protected $updateType = 'Google_Service_Datastore_Entity'; + protected $updateDataType = 'array'; + protected $upsertType = 'Google_Service_Datastore_Entity'; + protected $upsertDataType = 'array'; + + + public function setDelete($delete) + { + $this->delete = $delete; + } + public function getDelete() + { + return $this->delete; + } + public function setForce($force) + { + $this->force = $force; + } + public function getForce() + { + return $this->force; + } + public function setInsert($insert) + { + $this->insert = $insert; + } + public function getInsert() + { + return $this->insert; + } + public function setInsertAutoId($insertAutoId) + { + $this->insertAutoId = $insertAutoId; + } + public function getInsertAutoId() + { + return $this->insertAutoId; + } + public function setUpdate($update) + { + $this->update = $update; + } + public function getUpdate() + { + return $this->update; + } + public function setUpsert($upsert) + { + $this->upsert = $upsert; + } + public function getUpsert() + { + return $this->upsert; + } +} + +class Google_Service_Datastore_MutationResult extends Google_Collection +{ + protected $collection_key = 'insertAutoIdKeys'; + protected $internal_gapi_mappings = array( + ); + public $indexUpdates; + protected $insertAutoIdKeysType = 'Google_Service_Datastore_Key'; + protected $insertAutoIdKeysDataType = 'array'; + + + public function setIndexUpdates($indexUpdates) + { + $this->indexUpdates = $indexUpdates; + } + public function getIndexUpdates() + { + return $this->indexUpdates; + } + public function setInsertAutoIdKeys($insertAutoIdKeys) + { + $this->insertAutoIdKeys = $insertAutoIdKeys; + } + public function getInsertAutoIdKeys() + { + return $this->insertAutoIdKeys; + } +} + +class Google_Service_Datastore_PartitionId extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $datasetId; + public $namespace; + + + public function setDatasetId($datasetId) + { + $this->datasetId = $datasetId; + } + public function getDatasetId() + { + return $this->datasetId; + } + public function setNamespace($namespace) + { + $this->namespace = $namespace; + } + public function getNamespace() + { + return $this->namespace; + } +} + +class Google_Service_Datastore_Property extends Google_Collection +{ + protected $collection_key = 'listValue'; + protected $internal_gapi_mappings = array( + ); + public $blobKeyValue; + public $blobValue; + public $booleanValue; + public $dateTimeValue; + public $doubleValue; + protected $entityValueType = 'Google_Service_Datastore_Entity'; + protected $entityValueDataType = ''; + public $indexed; + public $integerValue; + protected $keyValueType = 'Google_Service_Datastore_Key'; + protected $keyValueDataType = ''; + protected $listValueType = 'Google_Service_Datastore_Value'; + protected $listValueDataType = 'array'; + public $meaning; + public $stringValue; + + + public function setBlobKeyValue($blobKeyValue) + { + $this->blobKeyValue = $blobKeyValue; + } + public function getBlobKeyValue() + { + return $this->blobKeyValue; + } + public function setBlobValue($blobValue) + { + $this->blobValue = $blobValue; + } + public function getBlobValue() + { + return $this->blobValue; + } + public function setBooleanValue($booleanValue) + { + $this->booleanValue = $booleanValue; + } + public function getBooleanValue() + { + return $this->booleanValue; + } + public function setDateTimeValue($dateTimeValue) + { + $this->dateTimeValue = $dateTimeValue; + } + public function getDateTimeValue() + { + return $this->dateTimeValue; + } + public function setDoubleValue($doubleValue) + { + $this->doubleValue = $doubleValue; + } + public function getDoubleValue() + { + return $this->doubleValue; + } + public function setEntityValue(Google_Service_Datastore_Entity $entityValue) + { + $this->entityValue = $entityValue; + } + public function getEntityValue() + { + return $this->entityValue; + } + public function setIndexed($indexed) + { + $this->indexed = $indexed; + } + public function getIndexed() + { + return $this->indexed; + } + public function setIntegerValue($integerValue) + { + $this->integerValue = $integerValue; + } + public function getIntegerValue() + { + return $this->integerValue; + } + public function setKeyValue(Google_Service_Datastore_Key $keyValue) + { + $this->keyValue = $keyValue; + } + public function getKeyValue() + { + return $this->keyValue; + } + public function setListValue($listValue) + { + $this->listValue = $listValue; + } + public function getListValue() + { + return $this->listValue; + } + public function setMeaning($meaning) + { + $this->meaning = $meaning; + } + public function getMeaning() + { + return $this->meaning; + } + public function setStringValue($stringValue) + { + $this->stringValue = $stringValue; + } + public function getStringValue() + { + return $this->stringValue; + } +} + +class Google_Service_Datastore_PropertyExpression extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $aggregationFunction; + protected $propertyType = 'Google_Service_Datastore_PropertyReference'; + protected $propertyDataType = ''; + + + public function setAggregationFunction($aggregationFunction) + { + $this->aggregationFunction = $aggregationFunction; + } + public function getAggregationFunction() + { + return $this->aggregationFunction; + } + public function setProperty(Google_Service_Datastore_PropertyReference $property) + { + $this->property = $property; + } + public function getProperty() + { + return $this->property; + } +} + +class Google_Service_Datastore_PropertyFilter extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $operator; + protected $propertyType = 'Google_Service_Datastore_PropertyReference'; + protected $propertyDataType = ''; + protected $valueType = 'Google_Service_Datastore_Value'; + protected $valueDataType = ''; + + + public function setOperator($operator) + { + $this->operator = $operator; + } + public function getOperator() + { + return $this->operator; + } + public function setProperty(Google_Service_Datastore_PropertyReference $property) + { + $this->property = $property; + } + public function getProperty() + { + return $this->property; + } + public function setValue(Google_Service_Datastore_Value $value) + { + $this->value = $value; + } + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Datastore_PropertyOrder extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $direction; + protected $propertyType = 'Google_Service_Datastore_PropertyReference'; + protected $propertyDataType = ''; + + + public function setDirection($direction) + { + $this->direction = $direction; + } + public function getDirection() + { + return $this->direction; + } + public function setProperty(Google_Service_Datastore_PropertyReference $property) + { + $this->property = $property; + } + public function getProperty() + { + return $this->property; + } +} + +class Google_Service_Datastore_PropertyReference extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $name; + + + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } +} + +class Google_Service_Datastore_Query extends Google_Collection +{ + protected $collection_key = 'projection'; + protected $internal_gapi_mappings = array( + ); + public $endCursor; + protected $filterType = 'Google_Service_Datastore_Filter'; + protected $filterDataType = ''; + protected $groupByType = 'Google_Service_Datastore_PropertyReference'; + protected $groupByDataType = 'array'; + protected $kindsType = 'Google_Service_Datastore_KindExpression'; + protected $kindsDataType = 'array'; + public $limit; + public $offset; + protected $orderType = 'Google_Service_Datastore_PropertyOrder'; + protected $orderDataType = 'array'; + protected $projectionType = 'Google_Service_Datastore_PropertyExpression'; + protected $projectionDataType = 'array'; + public $startCursor; + + + public function setEndCursor($endCursor) + { + $this->endCursor = $endCursor; + } + public function getEndCursor() + { + return $this->endCursor; + } + public function setFilter(Google_Service_Datastore_Filter $filter) + { + $this->filter = $filter; + } + public function getFilter() + { + return $this->filter; + } + public function setGroupBy($groupBy) + { + $this->groupBy = $groupBy; + } + public function getGroupBy() + { + return $this->groupBy; + } + public function setKinds($kinds) + { + $this->kinds = $kinds; + } + public function getKinds() + { + return $this->kinds; + } + public function setLimit($limit) + { + $this->limit = $limit; + } + public function getLimit() + { + return $this->limit; + } + public function setOffset($offset) + { + $this->offset = $offset; + } + public function getOffset() + { + return $this->offset; + } + public function setOrder($order) + { + $this->order = $order; + } + public function getOrder() + { + return $this->order; + } + public function setProjection($projection) + { + $this->projection = $projection; + } + public function getProjection() + { + return $this->projection; + } + public function setStartCursor($startCursor) + { + $this->startCursor = $startCursor; + } + public function getStartCursor() + { + return $this->startCursor; + } +} + +class Google_Service_Datastore_QueryResultBatch extends Google_Collection +{ + protected $collection_key = 'entityResults'; + protected $internal_gapi_mappings = array( + ); + public $endCursor; + public $entityResultType; + protected $entityResultsType = 'Google_Service_Datastore_EntityResult'; + protected $entityResultsDataType = 'array'; + public $moreResults; + public $skippedResults; + + + public function setEndCursor($endCursor) + { + $this->endCursor = $endCursor; + } + public function getEndCursor() + { + return $this->endCursor; + } + public function setEntityResultType($entityResultType) + { + $this->entityResultType = $entityResultType; + } + public function getEntityResultType() + { + return $this->entityResultType; + } + public function setEntityResults($entityResults) + { + $this->entityResults = $entityResults; + } + public function getEntityResults() + { + return $this->entityResults; + } + public function setMoreResults($moreResults) + { + $this->moreResults = $moreResults; + } + public function getMoreResults() + { + return $this->moreResults; + } + public function setSkippedResults($skippedResults) + { + $this->skippedResults = $skippedResults; + } + public function getSkippedResults() + { + return $this->skippedResults; + } +} + +class Google_Service_Datastore_ReadOptions extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $readConsistency; + public $transaction; + + + public function setReadConsistency($readConsistency) + { + $this->readConsistency = $readConsistency; + } + public function getReadConsistency() + { + return $this->readConsistency; + } + public function setTransaction($transaction) + { + $this->transaction = $transaction; + } + public function getTransaction() + { + return $this->transaction; + } +} + +class Google_Service_Datastore_ResponseHeader extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $kind; + + + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Datastore_RollbackRequest extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $transaction; + + + public function setTransaction($transaction) + { + $this->transaction = $transaction; + } + public function getTransaction() + { + return $this->transaction; + } +} + +class Google_Service_Datastore_RollbackResponse extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + protected $headerType = 'Google_Service_Datastore_ResponseHeader'; + protected $headerDataType = ''; + + + public function setHeader(Google_Service_Datastore_ResponseHeader $header) + { + $this->header = $header; + } + public function getHeader() + { + return $this->header; + } +} + +class Google_Service_Datastore_RunQueryRequest extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + protected $gqlQueryType = 'Google_Service_Datastore_GqlQuery'; + protected $gqlQueryDataType = ''; + protected $partitionIdType = 'Google_Service_Datastore_PartitionId'; + protected $partitionIdDataType = ''; + protected $queryType = 'Google_Service_Datastore_Query'; + protected $queryDataType = ''; + protected $readOptionsType = 'Google_Service_Datastore_ReadOptions'; + protected $readOptionsDataType = ''; + + + public function setGqlQuery(Google_Service_Datastore_GqlQuery $gqlQuery) + { + $this->gqlQuery = $gqlQuery; + } + public function getGqlQuery() + { + return $this->gqlQuery; + } + public function setPartitionId(Google_Service_Datastore_PartitionId $partitionId) + { + $this->partitionId = $partitionId; + } + public function getPartitionId() + { + return $this->partitionId; + } + public function setQuery(Google_Service_Datastore_Query $query) + { + $this->query = $query; + } + public function getQuery() + { + return $this->query; + } + public function setReadOptions(Google_Service_Datastore_ReadOptions $readOptions) + { + $this->readOptions = $readOptions; + } + public function getReadOptions() + { + return $this->readOptions; + } +} + +class Google_Service_Datastore_RunQueryResponse extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + protected $batchType = 'Google_Service_Datastore_QueryResultBatch'; + protected $batchDataType = ''; + protected $headerType = 'Google_Service_Datastore_ResponseHeader'; + protected $headerDataType = ''; + + + public function setBatch(Google_Service_Datastore_QueryResultBatch $batch) + { + $this->batch = $batch; + } + public function getBatch() + { + return $this->batch; + } + public function setHeader(Google_Service_Datastore_ResponseHeader $header) + { + $this->header = $header; + } + public function getHeader() + { + return $this->header; + } +} + +class Google_Service_Datastore_Value extends Google_Collection +{ + protected $collection_key = 'listValue'; + protected $internal_gapi_mappings = array( + ); + public $blobKeyValue; + public $blobValue; + public $booleanValue; + public $dateTimeValue; + public $doubleValue; + protected $entityValueType = 'Google_Service_Datastore_Entity'; + protected $entityValueDataType = ''; + public $indexed; + public $integerValue; + protected $keyValueType = 'Google_Service_Datastore_Key'; + protected $keyValueDataType = ''; + protected $listValueType = 'Google_Service_Datastore_Value'; + protected $listValueDataType = 'array'; + public $meaning; + public $stringValue; + + + public function setBlobKeyValue($blobKeyValue) + { + $this->blobKeyValue = $blobKeyValue; + } + public function getBlobKeyValue() + { + return $this->blobKeyValue; + } + public function setBlobValue($blobValue) + { + $this->blobValue = $blobValue; + } + public function getBlobValue() + { + return $this->blobValue; + } + public function setBooleanValue($booleanValue) + { + $this->booleanValue = $booleanValue; + } + public function getBooleanValue() + { + return $this->booleanValue; + } + public function setDateTimeValue($dateTimeValue) + { + $this->dateTimeValue = $dateTimeValue; + } + public function getDateTimeValue() + { + return $this->dateTimeValue; + } + public function setDoubleValue($doubleValue) + { + $this->doubleValue = $doubleValue; + } + public function getDoubleValue() + { + return $this->doubleValue; + } + public function setEntityValue(Google_Service_Datastore_Entity $entityValue) + { + $this->entityValue = $entityValue; + } + public function getEntityValue() + { + return $this->entityValue; + } + public function setIndexed($indexed) + { + $this->indexed = $indexed; + } + public function getIndexed() + { + return $this->indexed; + } + public function setIntegerValue($integerValue) + { + $this->integerValue = $integerValue; + } + public function getIntegerValue() + { + return $this->integerValue; + } + public function setKeyValue(Google_Service_Datastore_Key $keyValue) + { + $this->keyValue = $keyValue; + } + public function getKeyValue() + { + return $this->keyValue; + } + public function setListValue($listValue) + { + $this->listValue = $listValue; + } + public function getListValue() + { + return $this->listValue; + } + public function setMeaning($meaning) + { + $this->meaning = $meaning; + } + public function getMeaning() + { + return $this->meaning; + } + public function setStringValue($stringValue) + { + $this->stringValue = $stringValue; + } + public function getStringValue() + { + return $this->stringValue; + } +} diff --git a/plugins/updraftplus/includes/Google/Service/Directory.php b/plugins/updraftplus/includes/Google/Service/Directory.php new file mode 100644 index 0000000..f0fac34 --- /dev/null +++ b/plugins/updraftplus/includes/Google/Service/Directory.php @@ -0,0 +1,5564 @@ + + * The Admin SDK Directory API lets you view and manage enterprise resources + * such as users and groups, administrative notifications, security features, + * and more.

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Directory extends Google_Service +{ + /** View and manage your Chrome OS devices' metadata. */ + const ADMIN_DIRECTORY_DEVICE_CHROMEOS = + "https://www.googleapis.com/auth/admin.directory.device.chromeos"; + /** View your Chrome OS devices' metadata. */ + const ADMIN_DIRECTORY_DEVICE_CHROMEOS_READONLY = + "https://www.googleapis.com/auth/admin.directory.device.chromeos.readonly"; + /** View and manage your mobile devices' metadata. */ + const ADMIN_DIRECTORY_DEVICE_MOBILE = + "https://www.googleapis.com/auth/admin.directory.device.mobile"; + /** Manage your mobile devices by performing administrative tasks. */ + const ADMIN_DIRECTORY_DEVICE_MOBILE_ACTION = + "https://www.googleapis.com/auth/admin.directory.device.mobile.action"; + /** View your mobile devices' metadata. */ + const ADMIN_DIRECTORY_DEVICE_MOBILE_READONLY = + "https://www.googleapis.com/auth/admin.directory.device.mobile.readonly"; + /** View and manage the provisioning of groups on your domain. */ + const ADMIN_DIRECTORY_GROUP = + "https://www.googleapis.com/auth/admin.directory.group"; + /** View and manage group subscriptions on your domain. */ + const ADMIN_DIRECTORY_GROUP_MEMBER = + "https://www.googleapis.com/auth/admin.directory.group.member"; + /** View group subscriptions on your domain. */ + const ADMIN_DIRECTORY_GROUP_MEMBER_READONLY = + "https://www.googleapis.com/auth/admin.directory.group.member.readonly"; + /** View groups on your domain. */ + const ADMIN_DIRECTORY_GROUP_READONLY = + "https://www.googleapis.com/auth/admin.directory.group.readonly"; + /** View and manage notifications received on your domain. */ + const ADMIN_DIRECTORY_NOTIFICATIONS = + "https://www.googleapis.com/auth/admin.directory.notifications"; + /** View and manage organization units on your domain. */ + const ADMIN_DIRECTORY_ORGUNIT = + "https://www.googleapis.com/auth/admin.directory.orgunit"; + /** View organization units on your domain. */ + const ADMIN_DIRECTORY_ORGUNIT_READONLY = + "https://www.googleapis.com/auth/admin.directory.orgunit.readonly"; + /** View and manage the provisioning of users on your domain. */ + const ADMIN_DIRECTORY_USER = + "https://www.googleapis.com/auth/admin.directory.user"; + /** View and manage user aliases on your domain. */ + const ADMIN_DIRECTORY_USER_ALIAS = + "https://www.googleapis.com/auth/admin.directory.user.alias"; + /** View user aliases on your domain. */ + const ADMIN_DIRECTORY_USER_ALIAS_READONLY = + "https://www.googleapis.com/auth/admin.directory.user.alias.readonly"; + /** View users on your domain. */ + const ADMIN_DIRECTORY_USER_READONLY = + "https://www.googleapis.com/auth/admin.directory.user.readonly"; + /** Manage data access permissions for users on your domain. */ + const ADMIN_DIRECTORY_USER_SECURITY = + "https://www.googleapis.com/auth/admin.directory.user.security"; + /** View and manage the provisioning of user schemas on your domain. */ + const ADMIN_DIRECTORY_USERSCHEMA = + "https://www.googleapis.com/auth/admin.directory.userschema"; + /** View user schemas on your domain. */ + const ADMIN_DIRECTORY_USERSCHEMA_READONLY = + "https://www.googleapis.com/auth/admin.directory.userschema.readonly"; + + public $asps; + public $channels; + public $chromeosdevices; + public $groups; + public $groups_aliases; + public $members; + public $mobiledevices; + public $notifications; + public $orgunits; + public $schemas; + public $tokens; + public $users; + public $users_aliases; + public $users_photos; + public $verificationCodes; + + + /** + * Constructs the internal representation of the Directory service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'admin/directory/v1/'; + $this->version = 'directory_v1'; + $this->serviceName = 'admin'; + + $this->asps = new Google_Service_Directory_Asps_Resource( + $this, + $this->serviceName, + 'asps', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'users/{userKey}/asps/{codeId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'codeId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'users/{userKey}/asps/{codeId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'codeId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'users/{userKey}/asps', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->channels = new Google_Service_Directory_Channels_Resource( + $this, + $this->serviceName, + 'channels', + array( + 'methods' => array( + 'stop' => array( + 'path' => '/admin/directory_v1/channels/stop', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + $this->chromeosdevices = new Google_Service_Directory_Chromeosdevices_Resource( + $this, + $this->serviceName, + 'chromeosdevices', + array( + 'methods' => array( + 'get' => array( + 'path' => 'customer/{customerId}/devices/chromeos/{deviceId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'deviceId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'customer/{customerId}/devices/chromeos', + 'httpMethod' => 'GET', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'orderBy' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'sortOrder' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'query' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => 'customer/{customerId}/devices/chromeos/{deviceId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'deviceId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'update' => array( + 'path' => 'customer/{customerId}/devices/chromeos/{deviceId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'deviceId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->groups = new Google_Service_Directory_Groups_Resource( + $this, + $this->serviceName, + 'groups', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'groups/{groupKey}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'groupKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'groups/{groupKey}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'groupKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'groups', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'list' => array( + 'path' => 'groups', + 'httpMethod' => 'GET', + 'parameters' => array( + 'customer' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'domain' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'userKey' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => 'groups/{groupKey}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'groupKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'groups/{groupKey}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'groupKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->groups_aliases = new Google_Service_Directory_GroupsAliases_Resource( + $this, + $this->serviceName, + 'aliases', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'groups/{groupKey}/aliases/{alias}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'groupKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'alias' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'groups/{groupKey}/aliases', + 'httpMethod' => 'POST', + 'parameters' => array( + 'groupKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'groups/{groupKey}/aliases', + 'httpMethod' => 'GET', + 'parameters' => array( + 'groupKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->members = new Google_Service_Directory_Members_Resource( + $this, + $this->serviceName, + 'members', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'groups/{groupKey}/members/{memberKey}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'groupKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'memberKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'groups/{groupKey}/members/{memberKey}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'groupKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'memberKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'groups/{groupKey}/members', + 'httpMethod' => 'POST', + 'parameters' => array( + 'groupKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'groups/{groupKey}/members', + 'httpMethod' => 'GET', + 'parameters' => array( + 'groupKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'roles' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => 'groups/{groupKey}/members/{memberKey}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'groupKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'memberKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'groups/{groupKey}/members/{memberKey}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'groupKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'memberKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->mobiledevices = new Google_Service_Directory_Mobiledevices_Resource( + $this, + $this->serviceName, + 'mobiledevices', + array( + 'methods' => array( + 'action' => array( + 'path' => 'customer/{customerId}/devices/mobile/{resourceId}/action', + 'httpMethod' => 'POST', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'resourceId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'delete' => array( + 'path' => 'customer/{customerId}/devices/mobile/{resourceId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'resourceId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'customer/{customerId}/devices/mobile/{resourceId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'resourceId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'customer/{customerId}/devices/mobile', + 'httpMethod' => 'GET', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'orderBy' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'sortOrder' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'query' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->notifications = new Google_Service_Directory_Notifications_Resource( + $this, + $this->serviceName, + 'notifications', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'customer/{customer}/notifications/{notificationId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'customer' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'notificationId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'customer/{customer}/notifications/{notificationId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'customer' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'notificationId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'customer/{customer}/notifications', + 'httpMethod' => 'GET', + 'parameters' => array( + 'customer' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => 'customer/{customer}/notifications/{notificationId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'customer' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'notificationId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'customer/{customer}/notifications/{notificationId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'customer' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'notificationId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->orgunits = new Google_Service_Directory_Orgunits_Resource( + $this, + $this->serviceName, + 'orgunits', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'customer/{customerId}/orgunits{/orgUnitPath*}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'orgUnitPath' => array( + 'location' => 'path', + 'type' => 'string', + 'repeated' => true, + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'customer/{customerId}/orgunits{/orgUnitPath*}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'orgUnitPath' => array( + 'location' => 'path', + 'type' => 'string', + 'repeated' => true, + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'customer/{customerId}/orgunits', + 'httpMethod' => 'POST', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'customer/{customerId}/orgunits', + 'httpMethod' => 'GET', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'type' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'orgUnitPath' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => 'customer/{customerId}/orgunits{/orgUnitPath*}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'orgUnitPath' => array( + 'location' => 'path', + 'type' => 'string', + 'repeated' => true, + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'customer/{customerId}/orgunits{/orgUnitPath*}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'orgUnitPath' => array( + 'location' => 'path', + 'type' => 'string', + 'repeated' => true, + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->schemas = new Google_Service_Directory_Schemas_Resource( + $this, + $this->serviceName, + 'schemas', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'customer/{customerId}/schemas/{schemaKey}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'schemaKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'customer/{customerId}/schemas/{schemaKey}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'schemaKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'customer/{customerId}/schemas', + 'httpMethod' => 'POST', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'customer/{customerId}/schemas', + 'httpMethod' => 'GET', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => 'customer/{customerId}/schemas/{schemaKey}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'schemaKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'customer/{customerId}/schemas/{schemaKey}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'schemaKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->tokens = new Google_Service_Directory_Tokens_Resource( + $this, + $this->serviceName, + 'tokens', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'users/{userKey}/tokens/{clientId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'clientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'users/{userKey}/tokens/{clientId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'clientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'users/{userKey}/tokens', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->users = new Google_Service_Directory_Users_Resource( + $this, + $this->serviceName, + 'users', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'users/{userKey}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'users/{userKey}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'viewType' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'customFieldMask' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'insert' => array( + 'path' => 'users', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'list' => array( + 'path' => 'users', + 'httpMethod' => 'GET', + 'parameters' => array( + 'customer' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'orderBy' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'domain' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'showDeleted' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'customFieldMask' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'sortOrder' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'query' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'viewType' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'event' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'makeAdmin' => array( + 'path' => 'users/{userKey}/makeAdmin', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => 'users/{userKey}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'undelete' => array( + 'path' => 'users/{userKey}/undelete', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'users/{userKey}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'watch' => array( + 'path' => 'users/watch', + 'httpMethod' => 'POST', + 'parameters' => array( + 'customer' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'orderBy' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'domain' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'showDeleted' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'customFieldMask' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'sortOrder' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'query' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'viewType' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'event' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->users_aliases = new Google_Service_Directory_UsersAliases_Resource( + $this, + $this->serviceName, + 'aliases', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'users/{userKey}/aliases/{alias}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'alias' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'users/{userKey}/aliases', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'users/{userKey}/aliases', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'event' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'watch' => array( + 'path' => 'users/{userKey}/aliases/watch', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'event' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->users_photos = new Google_Service_Directory_UsersPhotos_Resource( + $this, + $this->serviceName, + 'photos', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'users/{userKey}/photos/thumbnail', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'users/{userKey}/photos/thumbnail', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => 'users/{userKey}/photos/thumbnail', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'users/{userKey}/photos/thumbnail', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->verificationCodes = new Google_Service_Directory_VerificationCodes_Resource( + $this, + $this->serviceName, + 'verificationCodes', + array( + 'methods' => array( + 'generate' => array( + 'path' => 'users/{userKey}/verificationCodes/generate', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'invalidate' => array( + 'path' => 'users/{userKey}/verificationCodes/invalidate', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'users/{userKey}/verificationCodes', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "asps" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $asps = $adminService->asps; + * + */ +class Google_Service_Directory_Asps_Resource extends Google_Service_Resource +{ + + /** + * Delete an ASP issued by a user. (asps.delete) + * + * @param string $userKey Identifies the user in the API request. The value can + * be the user's primary email address, alias email address, or unique user ID. + * @param int $codeId The unique ID of the ASP to be deleted. + * @param array $optParams Optional parameters. + */ + public function delete($userKey, $codeId, $optParams = array()) + { + $params = array('userKey' => $userKey, 'codeId' => $codeId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * Get information about an ASP issued by a user. (asps.get) + * + * @param string $userKey Identifies the user in the API request. The value can + * be the user's primary email address, alias email address, or unique user ID. + * @param int $codeId The unique ID of the ASP. + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Asp + */ + public function get($userKey, $codeId, $optParams = array()) + { + $params = array('userKey' => $userKey, 'codeId' => $codeId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Directory_Asp"); + } + + /** + * List the ASPs issued by a user. (asps.listAsps) + * + * @param string $userKey Identifies the user in the API request. The value can + * be the user's primary email address, alias email address, or unique user ID. + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Asps + */ + public function listAsps($userKey, $optParams = array()) + { + $params = array('userKey' => $userKey); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Directory_Asps"); + } +} + +/** + * The "channels" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $channels = $adminService->channels; + * + */ +class Google_Service_Directory_Channels_Resource extends Google_Service_Resource +{ + + /** + * Stop watching resources through this channel (channels.stop) + * + * @param Google_Channel $postBody + * @param array $optParams Optional parameters. + */ + public function stop(Google_Service_Directory_Channel $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('stop', array($params)); + } +} + +/** + * The "chromeosdevices" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $chromeosdevices = $adminService->chromeosdevices; + * + */ +class Google_Service_Directory_Chromeosdevices_Resource extends Google_Service_Resource +{ + + /** + * Retrieve Chrome OS Device (chromeosdevices.get) + * + * @param string $customerId Immutable id of the Google Apps account + * @param string $deviceId Immutable id of Chrome OS Device + * @param array $optParams Optional parameters. + * + * @opt_param string projection Restrict information returned to a set of + * selected fields. + * @return Google_Service_Directory_ChromeOsDevice + */ + public function get($customerId, $deviceId, $optParams = array()) + { + $params = array('customerId' => $customerId, 'deviceId' => $deviceId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Directory_ChromeOsDevice"); + } + + /** + * Retrieve all Chrome OS Devices of a customer (paginated) + * (chromeosdevices.listChromeosdevices) + * + * @param string $customerId Immutable id of the Google Apps account + * @param array $optParams Optional parameters. + * + * @opt_param string orderBy Column to use for sorting results + * @opt_param string projection Restrict information returned to a set of + * selected fields. + * @opt_param int maxResults Maximum number of results to return. Default is 100 + * @opt_param string pageToken Token to specify next page in the list + * @opt_param string sortOrder Whether to return results in ascending or + * descending order. Only of use when orderBy is also used + * @opt_param string query Search string in the format given at + * http://support.google.com/chromeos/a/bin/answer.py?hl=en=1698333 + * @return Google_Service_Directory_ChromeOsDevices + */ + public function listChromeosdevices($customerId, $optParams = array()) + { + $params = array('customerId' => $customerId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Directory_ChromeOsDevices"); + } + + /** + * Update Chrome OS Device. This method supports patch semantics. + * (chromeosdevices.patch) + * + * @param string $customerId Immutable id of the Google Apps account + * @param string $deviceId Immutable id of Chrome OS Device + * @param Google_ChromeOsDevice $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string projection Restrict information returned to a set of + * selected fields. + * @return Google_Service_Directory_ChromeOsDevice + */ + public function patch($customerId, $deviceId, Google_Service_Directory_ChromeOsDevice $postBody, $optParams = array()) + { + $params = array('customerId' => $customerId, 'deviceId' => $deviceId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Directory_ChromeOsDevice"); + } + + /** + * Update Chrome OS Device (chromeosdevices.update) + * + * @param string $customerId Immutable id of the Google Apps account + * @param string $deviceId Immutable id of Chrome OS Device + * @param Google_ChromeOsDevice $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string projection Restrict information returned to a set of + * selected fields. + * @return Google_Service_Directory_ChromeOsDevice + */ + public function update($customerId, $deviceId, Google_Service_Directory_ChromeOsDevice $postBody, $optParams = array()) + { + $params = array('customerId' => $customerId, 'deviceId' => $deviceId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Directory_ChromeOsDevice"); + } +} + +/** + * The "groups" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $groups = $adminService->groups; + * + */ +class Google_Service_Directory_Groups_Resource extends Google_Service_Resource +{ + + /** + * Delete Group (groups.delete) + * + * @param string $groupKey Email or immutable Id of the group + * @param array $optParams Optional parameters. + */ + public function delete($groupKey, $optParams = array()) + { + $params = array('groupKey' => $groupKey); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * Retrieve Group (groups.get) + * + * @param string $groupKey Email or immutable Id of the group + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Group + */ + public function get($groupKey, $optParams = array()) + { + $params = array('groupKey' => $groupKey); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Directory_Group"); + } + + /** + * Create Group (groups.insert) + * + * @param Google_Group $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Group + */ + public function insert(Google_Service_Directory_Group $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Directory_Group"); + } + + /** + * Retrieve all groups in a domain (paginated) (groups.listGroups) + * + * @param array $optParams Optional parameters. + * + * @opt_param string customer Immutable id of the Google Apps account. In case + * of multi-domain, to fetch all groups for a customer, fill this field instead + * of domain. + * @opt_param string pageToken Token to specify next page in the list + * @opt_param string domain Name of the domain. Fill this field to get groups + * from only this domain. To return all groups in a multi-domain fill customer + * field instead. + * @opt_param int maxResults Maximum number of results to return. Default is 200 + * @opt_param string userKey Email or immutable Id of the user if only those + * groups are to be listed, the given user is a member of. If Id, it should + * match with id of user object + * @return Google_Service_Directory_Groups + */ + public function listGroups($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Directory_Groups"); + } + + /** + * Update Group. This method supports patch semantics. (groups.patch) + * + * @param string $groupKey Email or immutable Id of the group. If Id, it should + * match with id of group object + * @param Google_Group $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Group + */ + public function patch($groupKey, Google_Service_Directory_Group $postBody, $optParams = array()) + { + $params = array('groupKey' => $groupKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Directory_Group"); + } + + /** + * Update Group (groups.update) + * + * @param string $groupKey Email or immutable Id of the group. If Id, it should + * match with id of group object + * @param Google_Group $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Group + */ + public function update($groupKey, Google_Service_Directory_Group $postBody, $optParams = array()) + { + $params = array('groupKey' => $groupKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Directory_Group"); + } +} + +/** + * The "aliases" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $aliases = $adminService->aliases; + * + */ +class Google_Service_Directory_GroupsAliases_Resource extends Google_Service_Resource +{ + + /** + * Remove a alias for the group (aliases.delete) + * + * @param string $groupKey Email or immutable Id of the group + * @param string $alias The alias to be removed + * @param array $optParams Optional parameters. + */ + public function delete($groupKey, $alias, $optParams = array()) + { + $params = array('groupKey' => $groupKey, 'alias' => $alias); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * Add a alias for the group (aliases.insert) + * + * @param string $groupKey Email or immutable Id of the group + * @param Google_Alias $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Alias + */ + public function insert($groupKey, Google_Service_Directory_Alias $postBody, $optParams = array()) + { + $params = array('groupKey' => $groupKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Directory_Alias"); + } + + /** + * List all aliases for a group (aliases.listGroupsAliases) + * + * @param string $groupKey Email or immutable Id of the group + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Aliases + */ + public function listGroupsAliases($groupKey, $optParams = array()) + { + $params = array('groupKey' => $groupKey); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Directory_Aliases"); + } +} + +/** + * The "members" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $members = $adminService->members; + * + */ +class Google_Service_Directory_Members_Resource extends Google_Service_Resource +{ + + /** + * Remove membership. (members.delete) + * + * @param string $groupKey Email or immutable Id of the group + * @param string $memberKey Email or immutable Id of the member + * @param array $optParams Optional parameters. + */ + public function delete($groupKey, $memberKey, $optParams = array()) + { + $params = array('groupKey' => $groupKey, 'memberKey' => $memberKey); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * Retrieve Group Member (members.get) + * + * @param string $groupKey Email or immutable Id of the group + * @param string $memberKey Email or immutable Id of the member + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Member + */ + public function get($groupKey, $memberKey, $optParams = array()) + { + $params = array('groupKey' => $groupKey, 'memberKey' => $memberKey); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Directory_Member"); + } + + /** + * Add user to the specified group. (members.insert) + * + * @param string $groupKey Email or immutable Id of the group + * @param Google_Member $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Member + */ + public function insert($groupKey, Google_Service_Directory_Member $postBody, $optParams = array()) + { + $params = array('groupKey' => $groupKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Directory_Member"); + } + + /** + * Retrieve all members in a group (paginated) (members.listMembers) + * + * @param string $groupKey Email or immutable Id of the group + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Token to specify next page in the list + * @opt_param string roles Comma separated role values to filter list results + * on. + * @opt_param int maxResults Maximum number of results to return. Default is 200 + * @return Google_Service_Directory_Members + */ + public function listMembers($groupKey, $optParams = array()) + { + $params = array('groupKey' => $groupKey); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Directory_Members"); + } + + /** + * Update membership of a user in the specified group. This method supports + * patch semantics. (members.patch) + * + * @param string $groupKey Email or immutable Id of the group. If Id, it should + * match with id of group object + * @param string $memberKey Email or immutable Id of the user. If Id, it should + * match with id of member object + * @param Google_Member $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Member + */ + public function patch($groupKey, $memberKey, Google_Service_Directory_Member $postBody, $optParams = array()) + { + $params = array('groupKey' => $groupKey, 'memberKey' => $memberKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Directory_Member"); + } + + /** + * Update membership of a user in the specified group. (members.update) + * + * @param string $groupKey Email or immutable Id of the group. If Id, it should + * match with id of group object + * @param string $memberKey Email or immutable Id of the user. If Id, it should + * match with id of member object + * @param Google_Member $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Member + */ + public function update($groupKey, $memberKey, Google_Service_Directory_Member $postBody, $optParams = array()) + { + $params = array('groupKey' => $groupKey, 'memberKey' => $memberKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Directory_Member"); + } +} + +/** + * The "mobiledevices" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $mobiledevices = $adminService->mobiledevices; + * + */ +class Google_Service_Directory_Mobiledevices_Resource extends Google_Service_Resource +{ + + /** + * Take action on Mobile Device (mobiledevices.action) + * + * @param string $customerId Immutable id of the Google Apps account + * @param string $resourceId Immutable id of Mobile Device + * @param Google_MobileDeviceAction $postBody + * @param array $optParams Optional parameters. + */ + public function action($customerId, $resourceId, Google_Service_Directory_MobileDeviceAction $postBody, $optParams = array()) + { + $params = array('customerId' => $customerId, 'resourceId' => $resourceId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('action', array($params)); + } + + /** + * Delete Mobile Device (mobiledevices.delete) + * + * @param string $customerId Immutable id of the Google Apps account + * @param string $resourceId Immutable id of Mobile Device + * @param array $optParams Optional parameters. + */ + public function delete($customerId, $resourceId, $optParams = array()) + { + $params = array('customerId' => $customerId, 'resourceId' => $resourceId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * Retrieve Mobile Device (mobiledevices.get) + * + * @param string $customerId Immutable id of the Google Apps account + * @param string $resourceId Immutable id of Mobile Device + * @param array $optParams Optional parameters. + * + * @opt_param string projection Restrict information returned to a set of + * selected fields. + * @return Google_Service_Directory_MobileDevice + */ + public function get($customerId, $resourceId, $optParams = array()) + { + $params = array('customerId' => $customerId, 'resourceId' => $resourceId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Directory_MobileDevice"); + } + + /** + * Retrieve all Mobile Devices of a customer (paginated) + * (mobiledevices.listMobiledevices) + * + * @param string $customerId Immutable id of the Google Apps account + * @param array $optParams Optional parameters. + * + * @opt_param string orderBy Column to use for sorting results + * @opt_param string projection Restrict information returned to a set of + * selected fields. + * @opt_param int maxResults Maximum number of results to return. Default is 100 + * @opt_param string pageToken Token to specify next page in the list + * @opt_param string sortOrder Whether to return results in ascending or + * descending order. Only of use when orderBy is also used + * @opt_param string query Search string in the format given at + * http://support.google.com/a/bin/answer.py?hl=en=1408863#search + * @return Google_Service_Directory_MobileDevices + */ + public function listMobiledevices($customerId, $optParams = array()) + { + $params = array('customerId' => $customerId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Directory_MobileDevices"); + } +} + +/** + * The "notifications" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $notifications = $adminService->notifications; + * + */ +class Google_Service_Directory_Notifications_Resource extends Google_Service_Resource +{ + + /** + * Deletes a notification (notifications.delete) + * + * @param string $customer The unique ID for the customer's Google account. The + * customerId is also returned as part of the Users resource. + * @param string $notificationId The unique ID of the notification. + * @param array $optParams Optional parameters. + */ + public function delete($customer, $notificationId, $optParams = array()) + { + $params = array('customer' => $customer, 'notificationId' => $notificationId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * Retrieves a notification. (notifications.get) + * + * @param string $customer The unique ID for the customer's Google account. The + * customerId is also returned as part of the Users resource. + * @param string $notificationId The unique ID of the notification. + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Notification + */ + public function get($customer, $notificationId, $optParams = array()) + { + $params = array('customer' => $customer, 'notificationId' => $notificationId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Directory_Notification"); + } + + /** + * Retrieves a list of notifications. (notifications.listNotifications) + * + * @param string $customer The unique ID for the customer's Google account. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken The token to specify the page of results to + * retrieve. + * @opt_param string maxResults Maximum number of notifications to return per + * page. The default is 100. + * @opt_param string language The ISO 639-1 code of the language notifications + * are returned in. The default is English (en). + * @return Google_Service_Directory_Notifications + */ + public function listNotifications($customer, $optParams = array()) + { + $params = array('customer' => $customer); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Directory_Notifications"); + } + + /** + * Updates a notification. This method supports patch semantics. + * (notifications.patch) + * + * @param string $customer The unique ID for the customer's Google account. + * @param string $notificationId The unique ID of the notification. + * @param Google_Notification $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Notification + */ + public function patch($customer, $notificationId, Google_Service_Directory_Notification $postBody, $optParams = array()) + { + $params = array('customer' => $customer, 'notificationId' => $notificationId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Directory_Notification"); + } + + /** + * Updates a notification. (notifications.update) + * + * @param string $customer The unique ID for the customer's Google account. + * @param string $notificationId The unique ID of the notification. + * @param Google_Notification $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Notification + */ + public function update($customer, $notificationId, Google_Service_Directory_Notification $postBody, $optParams = array()) + { + $params = array('customer' => $customer, 'notificationId' => $notificationId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Directory_Notification"); + } +} + +/** + * The "orgunits" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $orgunits = $adminService->orgunits; + * + */ +class Google_Service_Directory_Orgunits_Resource extends Google_Service_Resource +{ + + /** + * Remove Organization Unit (orgunits.delete) + * + * @param string $customerId Immutable id of the Google Apps account + * @param string $orgUnitPath Full path of the organization unit or its Id + * @param array $optParams Optional parameters. + */ + public function delete($customerId, $orgUnitPath, $optParams = array()) + { + $params = array('customerId' => $customerId, 'orgUnitPath' => $orgUnitPath); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * Retrieve Organization Unit (orgunits.get) + * + * @param string $customerId Immutable id of the Google Apps account + * @param string $orgUnitPath Full path of the organization unit or its Id + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_OrgUnit + */ + public function get($customerId, $orgUnitPath, $optParams = array()) + { + $params = array('customerId' => $customerId, 'orgUnitPath' => $orgUnitPath); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Directory_OrgUnit"); + } + + /** + * Add Organization Unit (orgunits.insert) + * + * @param string $customerId Immutable id of the Google Apps account + * @param Google_OrgUnit $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_OrgUnit + */ + public function insert($customerId, Google_Service_Directory_OrgUnit $postBody, $optParams = array()) + { + $params = array('customerId' => $customerId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Directory_OrgUnit"); + } + + /** + * Retrieve all Organization Units (orgunits.listOrgunits) + * + * @param string $customerId Immutable id of the Google Apps account + * @param array $optParams Optional parameters. + * + * @opt_param string type Whether to return all sub-organizations or just + * immediate children + * @opt_param string orgUnitPath the URL-encoded organization unit's path or its + * Id + * @return Google_Service_Directory_OrgUnits + */ + public function listOrgunits($customerId, $optParams = array()) + { + $params = array('customerId' => $customerId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Directory_OrgUnits"); + } + + /** + * Update Organization Unit. This method supports patch semantics. + * (orgunits.patch) + * + * @param string $customerId Immutable id of the Google Apps account + * @param string $orgUnitPath Full path of the organization unit or its Id + * @param Google_OrgUnit $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_OrgUnit + */ + public function patch($customerId, $orgUnitPath, Google_Service_Directory_OrgUnit $postBody, $optParams = array()) + { + $params = array('customerId' => $customerId, 'orgUnitPath' => $orgUnitPath, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Directory_OrgUnit"); + } + + /** + * Update Organization Unit (orgunits.update) + * + * @param string $customerId Immutable id of the Google Apps account + * @param string $orgUnitPath Full path of the organization unit or its Id + * @param Google_OrgUnit $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_OrgUnit + */ + public function update($customerId, $orgUnitPath, Google_Service_Directory_OrgUnit $postBody, $optParams = array()) + { + $params = array('customerId' => $customerId, 'orgUnitPath' => $orgUnitPath, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Directory_OrgUnit"); + } +} + +/** + * The "schemas" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $schemas = $adminService->schemas; + * + */ +class Google_Service_Directory_Schemas_Resource extends Google_Service_Resource +{ + + /** + * Delete schema (schemas.delete) + * + * @param string $customerId Immutable id of the Google Apps account + * @param string $schemaKey Name or immutable Id of the schema + * @param array $optParams Optional parameters. + */ + public function delete($customerId, $schemaKey, $optParams = array()) + { + $params = array('customerId' => $customerId, 'schemaKey' => $schemaKey); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * Retrieve schema (schemas.get) + * + * @param string $customerId Immutable id of the Google Apps account + * @param string $schemaKey Name or immutable Id of the schema + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Schema + */ + public function get($customerId, $schemaKey, $optParams = array()) + { + $params = array('customerId' => $customerId, 'schemaKey' => $schemaKey); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Directory_Schema"); + } + + /** + * Create schema. (schemas.insert) + * + * @param string $customerId Immutable id of the Google Apps account + * @param Google_Schema $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Schema + */ + public function insert($customerId, Google_Service_Directory_Schema $postBody, $optParams = array()) + { + $params = array('customerId' => $customerId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Directory_Schema"); + } + + /** + * Retrieve all schemas for a customer (schemas.listSchemas) + * + * @param string $customerId Immutable id of the Google Apps account + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Schemas + */ + public function listSchemas($customerId, $optParams = array()) + { + $params = array('customerId' => $customerId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Directory_Schemas"); + } + + /** + * Update schema. This method supports patch semantics. (schemas.patch) + * + * @param string $customerId Immutable id of the Google Apps account + * @param string $schemaKey Name or immutable Id of the schema. + * @param Google_Schema $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Schema + */ + public function patch($customerId, $schemaKey, Google_Service_Directory_Schema $postBody, $optParams = array()) + { + $params = array('customerId' => $customerId, 'schemaKey' => $schemaKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Directory_Schema"); + } + + /** + * Update schema (schemas.update) + * + * @param string $customerId Immutable id of the Google Apps account + * @param string $schemaKey Name or immutable Id of the schema. + * @param Google_Schema $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Schema + */ + public function update($customerId, $schemaKey, Google_Service_Directory_Schema $postBody, $optParams = array()) + { + $params = array('customerId' => $customerId, 'schemaKey' => $schemaKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Directory_Schema"); + } +} + +/** + * The "tokens" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $tokens = $adminService->tokens; + * + */ +class Google_Service_Directory_Tokens_Resource extends Google_Service_Resource +{ + + /** + * Delete all access tokens issued by a user for an application. (tokens.delete) + * + * @param string $userKey Identifies the user in the API request. The value can + * be the user's primary email address, alias email address, or unique user ID. + * @param string $clientId The Client ID of the application the token is issued + * to. + * @param array $optParams Optional parameters. + */ + public function delete($userKey, $clientId, $optParams = array()) + { + $params = array('userKey' => $userKey, 'clientId' => $clientId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * Get information about an access token issued by a user. (tokens.get) + * + * @param string $userKey Identifies the user in the API request. The value can + * be the user's primary email address, alias email address, or unique user ID. + * @param string $clientId The Client ID of the application the token is issued + * to. + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Token + */ + public function get($userKey, $clientId, $optParams = array()) + { + $params = array('userKey' => $userKey, 'clientId' => $clientId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Directory_Token"); + } + + /** + * Returns the set of tokens specified user has issued to 3rd party + * applications. (tokens.listTokens) + * + * @param string $userKey Identifies the user in the API request. The value can + * be the user's primary email address, alias email address, or unique user ID. + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Tokens + */ + public function listTokens($userKey, $optParams = array()) + { + $params = array('userKey' => $userKey); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Directory_Tokens"); + } +} + +/** + * The "users" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $users = $adminService->users; + * + */ +class Google_Service_Directory_Users_Resource extends Google_Service_Resource +{ + + /** + * Delete user (users.delete) + * + * @param string $userKey Email or immutable Id of the user + * @param array $optParams Optional parameters. + */ + public function delete($userKey, $optParams = array()) + { + $params = array('userKey' => $userKey); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * retrieve user (users.get) + * + * @param string $userKey Email or immutable Id of the user + * @param array $optParams Optional parameters. + * + * @opt_param string viewType Whether to fetch the ADMIN_VIEW or DOMAIN_PUBLIC + * view of the user. + * @opt_param string customFieldMask Comma-separated list of schema names. All + * fields from these schemas are fetched. This should only be set when + * projection=custom. + * @opt_param string projection What subset of fields to fetch for this user. + * @return Google_Service_Directory_User + */ + public function get($userKey, $optParams = array()) + { + $params = array('userKey' => $userKey); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Directory_User"); + } + + /** + * create user. (users.insert) + * + * @param Google_User $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_User + */ + public function insert(Google_Service_Directory_User $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Directory_User"); + } + + /** + * Retrieve either deleted users or all users in a domain (paginated) + * (users.listUsers) + * + * @param array $optParams Optional parameters. + * + * @opt_param string customer Immutable id of the Google Apps account. In case + * of multi-domain, to fetch all users for a customer, fill this field instead + * of domain. + * @opt_param string orderBy Column to use for sorting results + * @opt_param string domain Name of the domain. Fill this field to get users + * from only this domain. To return all users in a multi-domain fill customer + * field instead. + * @opt_param string projection What subset of fields to fetch for this user. + * @opt_param string showDeleted If set to true retrieves the list of deleted + * users. Default is false + * @opt_param string customFieldMask Comma-separated list of schema names. All + * fields from these schemas are fetched. This should only be set when + * projection=custom. + * @opt_param int maxResults Maximum number of results to return. Default is + * 100. Max allowed is 500 + * @opt_param string pageToken Token to specify next page in the list + * @opt_param string sortOrder Whether to return results in ascending or + * descending order. + * @opt_param string query Query string search. Should be of the form "". + * Complete documentation is at https://developers.google.com/admin- + * sdk/directory/v1/guides/search-users + * @opt_param string viewType Whether to fetch the ADMIN_VIEW or DOMAIN_PUBLIC + * view of the user. + * @opt_param string event Event on which subscription is intended (if + * subscribing) + * @return Google_Service_Directory_Users + */ + public function listUsers($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Directory_Users"); + } + + /** + * change admin status of a user (users.makeAdmin) + * + * @param string $userKey Email or immutable Id of the user as admin + * @param Google_UserMakeAdmin $postBody + * @param array $optParams Optional parameters. + */ + public function makeAdmin($userKey, Google_Service_Directory_UserMakeAdmin $postBody, $optParams = array()) + { + $params = array('userKey' => $userKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('makeAdmin', array($params)); + } + + /** + * update user. This method supports patch semantics. (users.patch) + * + * @param string $userKey Email or immutable Id of the user. If Id, it should + * match with id of user object + * @param Google_User $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_User + */ + public function patch($userKey, Google_Service_Directory_User $postBody, $optParams = array()) + { + $params = array('userKey' => $userKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Directory_User"); + } + + /** + * Undelete a deleted user (users.undelete) + * + * @param string $userKey The immutable id of the user + * @param Google_UserUndelete $postBody + * @param array $optParams Optional parameters. + */ + public function undelete($userKey, Google_Service_Directory_UserUndelete $postBody, $optParams = array()) + { + $params = array('userKey' => $userKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('undelete', array($params)); + } + + /** + * update user (users.update) + * + * @param string $userKey Email or immutable Id of the user. If Id, it should + * match with id of user object + * @param Google_User $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_User + */ + public function update($userKey, Google_Service_Directory_User $postBody, $optParams = array()) + { + $params = array('userKey' => $userKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Directory_User"); + } + + /** + * Watch for changes in users list (users.watch) + * + * @param Google_Channel $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string customer Immutable id of the Google Apps account. In case + * of multi-domain, to fetch all users for a customer, fill this field instead + * of domain. + * @opt_param string orderBy Column to use for sorting results + * @opt_param string domain Name of the domain. Fill this field to get users + * from only this domain. To return all users in a multi-domain fill customer + * field instead. + * @opt_param string projection What subset of fields to fetch for this user. + * @opt_param string showDeleted If set to true retrieves the list of deleted + * users. Default is false + * @opt_param string customFieldMask Comma-separated list of schema names. All + * fields from these schemas are fetched. This should only be set when + * projection=custom. + * @opt_param int maxResults Maximum number of results to return. Default is + * 100. Max allowed is 500 + * @opt_param string pageToken Token to specify next page in the list + * @opt_param string sortOrder Whether to return results in ascending or + * descending order. + * @opt_param string query Query string search. Should be of the form "". + * Complete documentation is at https://developers.google.com/admin- + * sdk/directory/v1/guides/search-users + * @opt_param string viewType Whether to fetch the ADMIN_VIEW or DOMAIN_PUBLIC + * view of the user. + * @opt_param string event Event on which subscription is intended (if + * subscribing) + * @return Google_Service_Directory_Channel + */ + public function watch(Google_Service_Directory_Channel $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('watch', array($params), "Google_Service_Directory_Channel"); + } +} + +/** + * The "aliases" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $aliases = $adminService->aliases; + * + */ +class Google_Service_Directory_UsersAliases_Resource extends Google_Service_Resource +{ + + /** + * Remove a alias for the user (aliases.delete) + * + * @param string $userKey Email or immutable Id of the user + * @param string $alias The alias to be removed + * @param array $optParams Optional parameters. + */ + public function delete($userKey, $alias, $optParams = array()) + { + $params = array('userKey' => $userKey, 'alias' => $alias); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * Add a alias for the user (aliases.insert) + * + * @param string $userKey Email or immutable Id of the user + * @param Google_Alias $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Alias + */ + public function insert($userKey, Google_Service_Directory_Alias $postBody, $optParams = array()) + { + $params = array('userKey' => $userKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Directory_Alias"); + } + + /** + * List all aliases for a user (aliases.listUsersAliases) + * + * @param string $userKey Email or immutable Id of the user + * @param array $optParams Optional parameters. + * + * @opt_param string event Event on which subscription is intended (if + * subscribing) + * @return Google_Service_Directory_Aliases + */ + public function listUsersAliases($userKey, $optParams = array()) + { + $params = array('userKey' => $userKey); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Directory_Aliases"); + } + + /** + * Watch for changes in user aliases list (aliases.watch) + * + * @param string $userKey Email or immutable Id of the user + * @param Google_Channel $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string event Event on which subscription is intended (if + * subscribing) + * @return Google_Service_Directory_Channel + */ + public function watch($userKey, Google_Service_Directory_Channel $postBody, $optParams = array()) + { + $params = array('userKey' => $userKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('watch', array($params), "Google_Service_Directory_Channel"); + } +} +/** + * The "photos" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $photos = $adminService->photos; + * + */ +class Google_Service_Directory_UsersPhotos_Resource extends Google_Service_Resource +{ + + /** + * Remove photos for the user (photos.delete) + * + * @param string $userKey Email or immutable Id of the user + * @param array $optParams Optional parameters. + */ + public function delete($userKey, $optParams = array()) + { + $params = array('userKey' => $userKey); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * Retrieve photo of a user (photos.get) + * + * @param string $userKey Email or immutable Id of the user + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_UserPhoto + */ + public function get($userKey, $optParams = array()) + { + $params = array('userKey' => $userKey); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Directory_UserPhoto"); + } + + /** + * Add a photo for the user. This method supports patch semantics. + * (photos.patch) + * + * @param string $userKey Email or immutable Id of the user + * @param Google_UserPhoto $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_UserPhoto + */ + public function patch($userKey, Google_Service_Directory_UserPhoto $postBody, $optParams = array()) + { + $params = array('userKey' => $userKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Directory_UserPhoto"); + } + + /** + * Add a photo for the user (photos.update) + * + * @param string $userKey Email or immutable Id of the user + * @param Google_UserPhoto $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_UserPhoto + */ + public function update($userKey, Google_Service_Directory_UserPhoto $postBody, $optParams = array()) + { + $params = array('userKey' => $userKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Directory_UserPhoto"); + } +} + +/** + * The "verificationCodes" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $verificationCodes = $adminService->verificationCodes; + * + */ +class Google_Service_Directory_VerificationCodes_Resource extends Google_Service_Resource +{ + + /** + * Generate new backup verification codes for the user. + * (verificationCodes.generate) + * + * @param string $userKey Email or immutable Id of the user + * @param array $optParams Optional parameters. + */ + public function generate($userKey, $optParams = array()) + { + $params = array('userKey' => $userKey); + $params = array_merge($params, $optParams); + return $this->call('generate', array($params)); + } + + /** + * Invalidate the current backup verification codes for the user. + * (verificationCodes.invalidate) + * + * @param string $userKey Email or immutable Id of the user + * @param array $optParams Optional parameters. + */ + public function invalidate($userKey, $optParams = array()) + { + $params = array('userKey' => $userKey); + $params = array_merge($params, $optParams); + return $this->call('invalidate', array($params)); + } + + /** + * Returns the current set of valid backup verification codes for the specified + * user. (verificationCodes.listVerificationCodes) + * + * @param string $userKey Identifies the user in the API request. The value can + * be the user's primary email address, alias email address, or unique user ID. + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_VerificationCodes + */ + public function listVerificationCodes($userKey, $optParams = array()) + { + $params = array('userKey' => $userKey); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Directory_VerificationCodes"); + } +} + + + + +class Google_Service_Directory_Alias extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $alias; + public $etag; + public $id; + public $kind; + public $primaryEmail; + + + public function setAlias($alias) + { + $this->alias = $alias; + } + public function getAlias() + { + return $this->alias; + } + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setPrimaryEmail($primaryEmail) + { + $this->primaryEmail = $primaryEmail; + } + public function getPrimaryEmail() + { + return $this->primaryEmail; + } +} + +class Google_Service_Directory_Aliases extends Google_Collection +{ + protected $collection_key = 'aliases'; + protected $internal_gapi_mappings = array( + ); + protected $aliasesType = 'Google_Service_Directory_Alias'; + protected $aliasesDataType = 'array'; + public $etag; + public $kind; + + + public function setAliases($aliases) + { + $this->aliases = $aliases; + } + public function getAliases() + { + return $this->aliases; + } + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Directory_Asp extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $codeId; + public $creationTime; + public $etag; + public $kind; + public $lastTimeUsed; + public $name; + public $userKey; + + + public function setCodeId($codeId) + { + $this->codeId = $codeId; + } + public function getCodeId() + { + return $this->codeId; + } + public function setCreationTime($creationTime) + { + $this->creationTime = $creationTime; + } + public function getCreationTime() + { + return $this->creationTime; + } + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setLastTimeUsed($lastTimeUsed) + { + $this->lastTimeUsed = $lastTimeUsed; + } + public function getLastTimeUsed() + { + return $this->lastTimeUsed; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setUserKey($userKey) + { + $this->userKey = $userKey; + } + public function getUserKey() + { + return $this->userKey; + } +} + +class Google_Service_Directory_Asps extends Google_Collection +{ + protected $collection_key = 'items'; + protected $internal_gapi_mappings = array( + ); + public $etag; + protected $itemsType = 'Google_Service_Directory_Asp'; + protected $itemsDataType = 'array'; + public $kind; + + + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setItems($items) + { + $this->items = $items; + } + public function getItems() + { + return $this->items; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Directory_Channel extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $address; + public $expiration; + public $id; + public $kind; + public $params; + public $payload; + public $resourceId; + public $resourceUri; + public $token; + public $type; + + + public function setAddress($address) + { + $this->address = $address; + } + public function getAddress() + { + return $this->address; + } + public function setExpiration($expiration) + { + $this->expiration = $expiration; + } + public function getExpiration() + { + return $this->expiration; + } + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setParams($params) + { + $this->params = $params; + } + public function getParams() + { + return $this->params; + } + public function setPayload($payload) + { + $this->payload = $payload; + } + public function getPayload() + { + return $this->payload; + } + public function setResourceId($resourceId) + { + $this->resourceId = $resourceId; + } + public function getResourceId() + { + return $this->resourceId; + } + public function setResourceUri($resourceUri) + { + $this->resourceUri = $resourceUri; + } + public function getResourceUri() + { + return $this->resourceUri; + } + public function setToken($token) + { + $this->token = $token; + } + public function getToken() + { + return $this->token; + } + public function setType($type) + { + $this->type = $type; + } + public function getType() + { + return $this->type; + } +} + +class Google_Service_Directory_ChannelParams extends Google_Model +{ +} + +class Google_Service_Directory_ChromeOsDevice extends Google_Collection +{ + protected $collection_key = 'recentUsers'; + protected $internal_gapi_mappings = array( + ); + protected $activeTimeRangesType = 'Google_Service_Directory_ChromeOsDeviceActiveTimeRanges'; + protected $activeTimeRangesDataType = 'array'; + public $annotatedAssetId; + public $annotatedLocation; + public $annotatedUser; + public $bootMode; + public $deviceId; + public $etag; + public $ethernetMacAddress; + public $firmwareVersion; + public $kind; + public $lastEnrollmentTime; + public $lastSync; + public $macAddress; + public $meid; + public $model; + public $notes; + public $orderNumber; + public $orgUnitPath; + public $osVersion; + public $platformVersion; + protected $recentUsersType = 'Google_Service_Directory_ChromeOsDeviceRecentUsers'; + protected $recentUsersDataType = 'array'; + public $serialNumber; + public $status; + public $supportEndDate; + public $willAutoRenew; + + + public function setActiveTimeRanges($activeTimeRanges) + { + $this->activeTimeRanges = $activeTimeRanges; + } + public function getActiveTimeRanges() + { + return $this->activeTimeRanges; + } + public function setAnnotatedAssetId($annotatedAssetId) + { + $this->annotatedAssetId = $annotatedAssetId; + } + public function getAnnotatedAssetId() + { + return $this->annotatedAssetId; + } + public function setAnnotatedLocation($annotatedLocation) + { + $this->annotatedLocation = $annotatedLocation; + } + public function getAnnotatedLocation() + { + return $this->annotatedLocation; + } + public function setAnnotatedUser($annotatedUser) + { + $this->annotatedUser = $annotatedUser; + } + public function getAnnotatedUser() + { + return $this->annotatedUser; + } + public function setBootMode($bootMode) + { + $this->bootMode = $bootMode; + } + public function getBootMode() + { + return $this->bootMode; + } + public function setDeviceId($deviceId) + { + $this->deviceId = $deviceId; + } + public function getDeviceId() + { + return $this->deviceId; + } + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setEthernetMacAddress($ethernetMacAddress) + { + $this->ethernetMacAddress = $ethernetMacAddress; + } + public function getEthernetMacAddress() + { + return $this->ethernetMacAddress; + } + public function setFirmwareVersion($firmwareVersion) + { + $this->firmwareVersion = $firmwareVersion; + } + public function getFirmwareVersion() + { + return $this->firmwareVersion; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setLastEnrollmentTime($lastEnrollmentTime) + { + $this->lastEnrollmentTime = $lastEnrollmentTime; + } + public function getLastEnrollmentTime() + { + return $this->lastEnrollmentTime; + } + public function setLastSync($lastSync) + { + $this->lastSync = $lastSync; + } + public function getLastSync() + { + return $this->lastSync; + } + public function setMacAddress($macAddress) + { + $this->macAddress = $macAddress; + } + public function getMacAddress() + { + return $this->macAddress; + } + public function setMeid($meid) + { + $this->meid = $meid; + } + public function getMeid() + { + return $this->meid; + } + public function setModel($model) + { + $this->model = $model; + } + public function getModel() + { + return $this->model; + } + public function setNotes($notes) + { + $this->notes = $notes; + } + public function getNotes() + { + return $this->notes; + } + public function setOrderNumber($orderNumber) + { + $this->orderNumber = $orderNumber; + } + public function getOrderNumber() + { + return $this->orderNumber; + } + public function setOrgUnitPath($orgUnitPath) + { + $this->orgUnitPath = $orgUnitPath; + } + public function getOrgUnitPath() + { + return $this->orgUnitPath; + } + public function setOsVersion($osVersion) + { + $this->osVersion = $osVersion; + } + public function getOsVersion() + { + return $this->osVersion; + } + public function setPlatformVersion($platformVersion) + { + $this->platformVersion = $platformVersion; + } + public function getPlatformVersion() + { + return $this->platformVersion; + } + public function setRecentUsers($recentUsers) + { + $this->recentUsers = $recentUsers; + } + public function getRecentUsers() + { + return $this->recentUsers; + } + public function setSerialNumber($serialNumber) + { + $this->serialNumber = $serialNumber; + } + public function getSerialNumber() + { + return $this->serialNumber; + } + public function setStatus($status) + { + $this->status = $status; + } + public function getStatus() + { + return $this->status; + } + public function setSupportEndDate($supportEndDate) + { + $this->supportEndDate = $supportEndDate; + } + public function getSupportEndDate() + { + return $this->supportEndDate; + } + public function setWillAutoRenew($willAutoRenew) + { + $this->willAutoRenew = $willAutoRenew; + } + public function getWillAutoRenew() + { + return $this->willAutoRenew; + } +} + +class Google_Service_Directory_ChromeOsDeviceActiveTimeRanges extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $activeTime; + public $date; + + + public function setActiveTime($activeTime) + { + $this->activeTime = $activeTime; + } + public function getActiveTime() + { + return $this->activeTime; + } + public function setDate($date) + { + $this->date = $date; + } + public function getDate() + { + return $this->date; + } +} + +class Google_Service_Directory_ChromeOsDeviceRecentUsers extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $email; + public $type; + + + public function setEmail($email) + { + $this->email = $email; + } + public function getEmail() + { + return $this->email; + } + public function setType($type) + { + $this->type = $type; + } + public function getType() + { + return $this->type; + } +} + +class Google_Service_Directory_ChromeOsDevices extends Google_Collection +{ + protected $collection_key = 'chromeosdevices'; + protected $internal_gapi_mappings = array( + ); + protected $chromeosdevicesType = 'Google_Service_Directory_ChromeOsDevice'; + protected $chromeosdevicesDataType = 'array'; + public $etag; + public $kind; + public $nextPageToken; + + + public function setChromeosdevices($chromeosdevices) + { + $this->chromeosdevices = $chromeosdevices; + } + public function getChromeosdevices() + { + return $this->chromeosdevices; + } + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Directory_Group extends Google_Collection +{ + protected $collection_key = 'nonEditableAliases'; + protected $internal_gapi_mappings = array( + ); + public $adminCreated; + public $aliases; + public $description; + public $directMembersCount; + public $email; + public $etag; + public $id; + public $kind; + public $name; + public $nonEditableAliases; + + + public function setAdminCreated($adminCreated) + { + $this->adminCreated = $adminCreated; + } + public function getAdminCreated() + { + return $this->adminCreated; + } + public function setAliases($aliases) + { + $this->aliases = $aliases; + } + public function getAliases() + { + return $this->aliases; + } + public function setDescription($description) + { + $this->description = $description; + } + public function getDescription() + { + return $this->description; + } + public function setDirectMembersCount($directMembersCount) + { + $this->directMembersCount = $directMembersCount; + } + public function getDirectMembersCount() + { + return $this->directMembersCount; + } + public function setEmail($email) + { + $this->email = $email; + } + public function getEmail() + { + return $this->email; + } + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setNonEditableAliases($nonEditableAliases) + { + $this->nonEditableAliases = $nonEditableAliases; + } + public function getNonEditableAliases() + { + return $this->nonEditableAliases; + } +} + +class Google_Service_Directory_Groups extends Google_Collection +{ + protected $collection_key = 'groups'; + protected $internal_gapi_mappings = array( + ); + public $etag; + protected $groupsType = 'Google_Service_Directory_Group'; + protected $groupsDataType = 'array'; + public $kind; + public $nextPageToken; + + + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setGroups($groups) + { + $this->groups = $groups; + } + public function getGroups() + { + return $this->groups; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Directory_Member extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $email; + public $etag; + public $id; + public $kind; + public $role; + public $type; + + + public function setEmail($email) + { + $this->email = $email; + } + public function getEmail() + { + return $this->email; + } + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setRole($role) + { + $this->role = $role; + } + public function getRole() + { + return $this->role; + } + public function setType($type) + { + $this->type = $type; + } + public function getType() + { + return $this->type; + } +} + +class Google_Service_Directory_Members extends Google_Collection +{ + protected $collection_key = 'members'; + protected $internal_gapi_mappings = array( + ); + public $etag; + public $kind; + protected $membersType = 'Google_Service_Directory_Member'; + protected $membersDataType = 'array'; + public $nextPageToken; + + + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setMembers($members) + { + $this->members = $members; + } + public function getMembers() + { + return $this->members; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Directory_MobileDevice extends Google_Collection +{ + protected $collection_key = 'name'; + protected $internal_gapi_mappings = array( + ); + protected $applicationsType = 'Google_Service_Directory_MobileDeviceApplications'; + protected $applicationsDataType = 'array'; + public $basebandVersion; + public $buildNumber; + public $defaultLanguage; + public $deviceCompromisedStatus; + public $deviceId; + public $email; + public $etag; + public $firstSync; + public $hardwareId; + public $imei; + public $kernelVersion; + public $kind; + public $lastSync; + public $managedAccountIsOnOwnerProfile; + public $meid; + public $model; + public $name; + public $networkOperator; + public $os; + public $resourceId; + public $serialNumber; + public $status; + public $type; + public $userAgent; + public $wifiMacAddress; + + + public function setApplications($applications) + { + $this->applications = $applications; + } + public function getApplications() + { + return $this->applications; + } + public function setBasebandVersion($basebandVersion) + { + $this->basebandVersion = $basebandVersion; + } + public function getBasebandVersion() + { + return $this->basebandVersion; + } + public function setBuildNumber($buildNumber) + { + $this->buildNumber = $buildNumber; + } + public function getBuildNumber() + { + return $this->buildNumber; + } + public function setDefaultLanguage($defaultLanguage) + { + $this->defaultLanguage = $defaultLanguage; + } + public function getDefaultLanguage() + { + return $this->defaultLanguage; + } + public function setDeviceCompromisedStatus($deviceCompromisedStatus) + { + $this->deviceCompromisedStatus = $deviceCompromisedStatus; + } + public function getDeviceCompromisedStatus() + { + return $this->deviceCompromisedStatus; + } + public function setDeviceId($deviceId) + { + $this->deviceId = $deviceId; + } + public function getDeviceId() + { + return $this->deviceId; + } + public function setEmail($email) + { + $this->email = $email; + } + public function getEmail() + { + return $this->email; + } + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setFirstSync($firstSync) + { + $this->firstSync = $firstSync; + } + public function getFirstSync() + { + return $this->firstSync; + } + public function setHardwareId($hardwareId) + { + $this->hardwareId = $hardwareId; + } + public function getHardwareId() + { + return $this->hardwareId; + } + public function setImei($imei) + { + $this->imei = $imei; + } + public function getImei() + { + return $this->imei; + } + public function setKernelVersion($kernelVersion) + { + $this->kernelVersion = $kernelVersion; + } + public function getKernelVersion() + { + return $this->kernelVersion; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setLastSync($lastSync) + { + $this->lastSync = $lastSync; + } + public function getLastSync() + { + return $this->lastSync; + } + public function setManagedAccountIsOnOwnerProfile($managedAccountIsOnOwnerProfile) + { + $this->managedAccountIsOnOwnerProfile = $managedAccountIsOnOwnerProfile; + } + public function getManagedAccountIsOnOwnerProfile() + { + return $this->managedAccountIsOnOwnerProfile; + } + public function setMeid($meid) + { + $this->meid = $meid; + } + public function getMeid() + { + return $this->meid; + } + public function setModel($model) + { + $this->model = $model; + } + public function getModel() + { + return $this->model; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setNetworkOperator($networkOperator) + { + $this->networkOperator = $networkOperator; + } + public function getNetworkOperator() + { + return $this->networkOperator; + } + public function setOs($os) + { + $this->os = $os; + } + public function getOs() + { + return $this->os; + } + public function setResourceId($resourceId) + { + $this->resourceId = $resourceId; + } + public function getResourceId() + { + return $this->resourceId; + } + public function setSerialNumber($serialNumber) + { + $this->serialNumber = $serialNumber; + } + public function getSerialNumber() + { + return $this->serialNumber; + } + public function setStatus($status) + { + $this->status = $status; + } + public function getStatus() + { + return $this->status; + } + public function setType($type) + { + $this->type = $type; + } + public function getType() + { + return $this->type; + } + public function setUserAgent($userAgent) + { + $this->userAgent = $userAgent; + } + public function getUserAgent() + { + return $this->userAgent; + } + public function setWifiMacAddress($wifiMacAddress) + { + $this->wifiMacAddress = $wifiMacAddress; + } + public function getWifiMacAddress() + { + return $this->wifiMacAddress; + } +} + +class Google_Service_Directory_MobileDeviceAction extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $action; + + + public function setAction($action) + { + $this->action = $action; + } + public function getAction() + { + return $this->action; + } +} + +class Google_Service_Directory_MobileDeviceApplications extends Google_Collection +{ + protected $collection_key = 'permission'; + protected $internal_gapi_mappings = array( + ); + public $displayName; + public $packageName; + public $permission; + public $versionCode; + public $versionName; + + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + public function getDisplayName() + { + return $this->displayName; + } + public function setPackageName($packageName) + { + $this->packageName = $packageName; + } + public function getPackageName() + { + return $this->packageName; + } + public function setPermission($permission) + { + $this->permission = $permission; + } + public function getPermission() + { + return $this->permission; + } + public function setVersionCode($versionCode) + { + $this->versionCode = $versionCode; + } + public function getVersionCode() + { + return $this->versionCode; + } + public function setVersionName($versionName) + { + $this->versionName = $versionName; + } + public function getVersionName() + { + return $this->versionName; + } +} + +class Google_Service_Directory_MobileDevices extends Google_Collection +{ + protected $collection_key = 'mobiledevices'; + protected $internal_gapi_mappings = array( + ); + public $etag; + public $kind; + protected $mobiledevicesType = 'Google_Service_Directory_MobileDevice'; + protected $mobiledevicesDataType = 'array'; + public $nextPageToken; + + + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setMobiledevices($mobiledevices) + { + $this->mobiledevices = $mobiledevices; + } + public function getMobiledevices() + { + return $this->mobiledevices; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Directory_Notification extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $body; + public $etag; + public $fromAddress; + public $isUnread; + public $kind; + public $notificationId; + public $sendTime; + public $subject; + + + public function setBody($body) + { + $this->body = $body; + } + public function getBody() + { + return $this->body; + } + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setFromAddress($fromAddress) + { + $this->fromAddress = $fromAddress; + } + public function getFromAddress() + { + return $this->fromAddress; + } + public function setIsUnread($isUnread) + { + $this->isUnread = $isUnread; + } + public function getIsUnread() + { + return $this->isUnread; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setNotificationId($notificationId) + { + $this->notificationId = $notificationId; + } + public function getNotificationId() + { + return $this->notificationId; + } + public function setSendTime($sendTime) + { + $this->sendTime = $sendTime; + } + public function getSendTime() + { + return $this->sendTime; + } + public function setSubject($subject) + { + $this->subject = $subject; + } + public function getSubject() + { + return $this->subject; + } +} + +class Google_Service_Directory_Notifications extends Google_Collection +{ + protected $collection_key = 'items'; + protected $internal_gapi_mappings = array( + ); + public $etag; + protected $itemsType = 'Google_Service_Directory_Notification'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $unreadNotificationsCount; + + + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setItems($items) + { + $this->items = $items; + } + public function getItems() + { + return $this->items; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } + public function setUnreadNotificationsCount($unreadNotificationsCount) + { + $this->unreadNotificationsCount = $unreadNotificationsCount; + } + public function getUnreadNotificationsCount() + { + return $this->unreadNotificationsCount; + } +} + +class Google_Service_Directory_OrgUnit extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $blockInheritance; + public $description; + public $etag; + public $kind; + public $name; + public $orgUnitId; + public $orgUnitPath; + public $parentOrgUnitId; + public $parentOrgUnitPath; + + + public function setBlockInheritance($blockInheritance) + { + $this->blockInheritance = $blockInheritance; + } + public function getBlockInheritance() + { + return $this->blockInheritance; + } + public function setDescription($description) + { + $this->description = $description; + } + public function getDescription() + { + return $this->description; + } + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setOrgUnitId($orgUnitId) + { + $this->orgUnitId = $orgUnitId; + } + public function getOrgUnitId() + { + return $this->orgUnitId; + } + public function setOrgUnitPath($orgUnitPath) + { + $this->orgUnitPath = $orgUnitPath; + } + public function getOrgUnitPath() + { + return $this->orgUnitPath; + } + public function setParentOrgUnitId($parentOrgUnitId) + { + $this->parentOrgUnitId = $parentOrgUnitId; + } + public function getParentOrgUnitId() + { + return $this->parentOrgUnitId; + } + public function setParentOrgUnitPath($parentOrgUnitPath) + { + $this->parentOrgUnitPath = $parentOrgUnitPath; + } + public function getParentOrgUnitPath() + { + return $this->parentOrgUnitPath; + } +} + +class Google_Service_Directory_OrgUnits extends Google_Collection +{ + protected $collection_key = 'organizationUnits'; + protected $internal_gapi_mappings = array( + ); + public $etag; + public $kind; + protected $organizationUnitsType = 'Google_Service_Directory_OrgUnit'; + protected $organizationUnitsDataType = 'array'; + + + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setOrganizationUnits($organizationUnits) + { + $this->organizationUnits = $organizationUnits; + } + public function getOrganizationUnits() + { + return $this->organizationUnits; + } +} + +class Google_Service_Directory_Schema extends Google_Collection +{ + protected $collection_key = 'fields'; + protected $internal_gapi_mappings = array( + ); + public $etag; + protected $fieldsType = 'Google_Service_Directory_SchemaFieldSpec'; + protected $fieldsDataType = 'array'; + public $kind; + public $schemaId; + public $schemaName; + + + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setFields($fields) + { + $this->fields = $fields; + } + public function getFields() + { + return $this->fields; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setSchemaId($schemaId) + { + $this->schemaId = $schemaId; + } + public function getSchemaId() + { + return $this->schemaId; + } + public function setSchemaName($schemaName) + { + $this->schemaName = $schemaName; + } + public function getSchemaName() + { + return $this->schemaName; + } +} + +class Google_Service_Directory_SchemaFieldSpec extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $etag; + public $fieldId; + public $fieldName; + public $fieldType; + public $indexed; + public $kind; + public $multiValued; + protected $numericIndexingSpecType = 'Google_Service_Directory_SchemaFieldSpecNumericIndexingSpec'; + protected $numericIndexingSpecDataType = ''; + public $readAccessType; + + + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setFieldId($fieldId) + { + $this->fieldId = $fieldId; + } + public function getFieldId() + { + return $this->fieldId; + } + public function setFieldName($fieldName) + { + $this->fieldName = $fieldName; + } + public function getFieldName() + { + return $this->fieldName; + } + public function setFieldType($fieldType) + { + $this->fieldType = $fieldType; + } + public function getFieldType() + { + return $this->fieldType; + } + public function setIndexed($indexed) + { + $this->indexed = $indexed; + } + public function getIndexed() + { + return $this->indexed; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setMultiValued($multiValued) + { + $this->multiValued = $multiValued; + } + public function getMultiValued() + { + return $this->multiValued; + } + public function setNumericIndexingSpec(Google_Service_Directory_SchemaFieldSpecNumericIndexingSpec $numericIndexingSpec) + { + $this->numericIndexingSpec = $numericIndexingSpec; + } + public function getNumericIndexingSpec() + { + return $this->numericIndexingSpec; + } + public function setReadAccessType($readAccessType) + { + $this->readAccessType = $readAccessType; + } + public function getReadAccessType() + { + return $this->readAccessType; + } +} + +class Google_Service_Directory_SchemaFieldSpecNumericIndexingSpec extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $maxValue; + public $minValue; + + + public function setMaxValue($maxValue) + { + $this->maxValue = $maxValue; + } + public function getMaxValue() + { + return $this->maxValue; + } + public function setMinValue($minValue) + { + $this->minValue = $minValue; + } + public function getMinValue() + { + return $this->minValue; + } +} + +class Google_Service_Directory_Schemas extends Google_Collection +{ + protected $collection_key = 'schemas'; + protected $internal_gapi_mappings = array( + ); + public $etag; + public $kind; + protected $schemasType = 'Google_Service_Directory_Schema'; + protected $schemasDataType = 'array'; + + + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setSchemas($schemas) + { + $this->schemas = $schemas; + } + public function getSchemas() + { + return $this->schemas; + } +} + +class Google_Service_Directory_Token extends Google_Collection +{ + protected $collection_key = 'scopes'; + protected $internal_gapi_mappings = array( + ); + public $anonymous; + public $clientId; + public $displayText; + public $etag; + public $kind; + public $nativeApp; + public $scopes; + public $userKey; + + + public function setAnonymous($anonymous) + { + $this->anonymous = $anonymous; + } + public function getAnonymous() + { + return $this->anonymous; + } + public function setClientId($clientId) + { + $this->clientId = $clientId; + } + public function getClientId() + { + return $this->clientId; + } + public function setDisplayText($displayText) + { + $this->displayText = $displayText; + } + public function getDisplayText() + { + return $this->displayText; + } + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setNativeApp($nativeApp) + { + $this->nativeApp = $nativeApp; + } + public function getNativeApp() + { + return $this->nativeApp; + } + public function setScopes($scopes) + { + $this->scopes = $scopes; + } + public function getScopes() + { + return $this->scopes; + } + public function setUserKey($userKey) + { + $this->userKey = $userKey; + } + public function getUserKey() + { + return $this->userKey; + } +} + +class Google_Service_Directory_Tokens extends Google_Collection +{ + protected $collection_key = 'items'; + protected $internal_gapi_mappings = array( + ); + public $etag; + protected $itemsType = 'Google_Service_Directory_Token'; + protected $itemsDataType = 'array'; + public $kind; + + + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setItems($items) + { + $this->items = $items; + } + public function getItems() + { + return $this->items; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Directory_User extends Google_Collection +{ + protected $collection_key = 'nonEditableAliases'; + protected $internal_gapi_mappings = array( + ); + public $addresses; + public $agreedToTerms; + public $aliases; + public $changePasswordAtNextLogin; + public $creationTime; + public $customSchemas; + public $customerId; + public $deletionTime; + public $emails; + public $etag; + public $externalIds; + public $hashFunction; + public $id; + public $ims; + public $includeInGlobalAddressList; + public $ipWhitelisted; + public $isAdmin; + public $isDelegatedAdmin; + public $isMailboxSetup; + public $kind; + public $lastLoginTime; + protected $nameType = 'Google_Service_Directory_UserName'; + protected $nameDataType = ''; + public $nonEditableAliases; + public $notes; + public $orgUnitPath; + public $organizations; + public $password; + public $phones; + public $primaryEmail; + public $relations; + public $suspended; + public $suspensionReason; + public $thumbnailPhotoUrl; + public $websites; + + + public function setAddresses($addresses) + { + $this->addresses = $addresses; + } + public function getAddresses() + { + return $this->addresses; + } + public function setAgreedToTerms($agreedToTerms) + { + $this->agreedToTerms = $agreedToTerms; + } + public function getAgreedToTerms() + { + return $this->agreedToTerms; + } + public function setAliases($aliases) + { + $this->aliases = $aliases; + } + public function getAliases() + { + return $this->aliases; + } + public function setChangePasswordAtNextLogin($changePasswordAtNextLogin) + { + $this->changePasswordAtNextLogin = $changePasswordAtNextLogin; + } + public function getChangePasswordAtNextLogin() + { + return $this->changePasswordAtNextLogin; + } + public function setCreationTime($creationTime) + { + $this->creationTime = $creationTime; + } + public function getCreationTime() + { + return $this->creationTime; + } + public function setCustomSchemas($customSchemas) + { + $this->customSchemas = $customSchemas; + } + public function getCustomSchemas() + { + return $this->customSchemas; + } + public function setCustomerId($customerId) + { + $this->customerId = $customerId; + } + public function getCustomerId() + { + return $this->customerId; + } + public function setDeletionTime($deletionTime) + { + $this->deletionTime = $deletionTime; + } + public function getDeletionTime() + { + return $this->deletionTime; + } + public function setEmails($emails) + { + $this->emails = $emails; + } + public function getEmails() + { + return $this->emails; + } + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setExternalIds($externalIds) + { + $this->externalIds = $externalIds; + } + public function getExternalIds() + { + return $this->externalIds; + } + public function setHashFunction($hashFunction) + { + $this->hashFunction = $hashFunction; + } + public function getHashFunction() + { + return $this->hashFunction; + } + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setIms($ims) + { + $this->ims = $ims; + } + public function getIms() + { + return $this->ims; + } + public function setIncludeInGlobalAddressList($includeInGlobalAddressList) + { + $this->includeInGlobalAddressList = $includeInGlobalAddressList; + } + public function getIncludeInGlobalAddressList() + { + return $this->includeInGlobalAddressList; + } + public function setIpWhitelisted($ipWhitelisted) + { + $this->ipWhitelisted = $ipWhitelisted; + } + public function getIpWhitelisted() + { + return $this->ipWhitelisted; + } + public function setIsAdmin($isAdmin) + { + $this->isAdmin = $isAdmin; + } + public function getIsAdmin() + { + return $this->isAdmin; + } + public function setIsDelegatedAdmin($isDelegatedAdmin) + { + $this->isDelegatedAdmin = $isDelegatedAdmin; + } + public function getIsDelegatedAdmin() + { + return $this->isDelegatedAdmin; + } + public function setIsMailboxSetup($isMailboxSetup) + { + $this->isMailboxSetup = $isMailboxSetup; + } + public function getIsMailboxSetup() + { + return $this->isMailboxSetup; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setLastLoginTime($lastLoginTime) + { + $this->lastLoginTime = $lastLoginTime; + } + public function getLastLoginTime() + { + return $this->lastLoginTime; + } + public function setName(Google_Service_Directory_UserName $name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setNonEditableAliases($nonEditableAliases) + { + $this->nonEditableAliases = $nonEditableAliases; + } + public function getNonEditableAliases() + { + return $this->nonEditableAliases; + } + public function setNotes($notes) + { + $this->notes = $notes; + } + public function getNotes() + { + return $this->notes; + } + public function setOrgUnitPath($orgUnitPath) + { + $this->orgUnitPath = $orgUnitPath; + } + public function getOrgUnitPath() + { + return $this->orgUnitPath; + } + public function setOrganizations($organizations) + { + $this->organizations = $organizations; + } + public function getOrganizations() + { + return $this->organizations; + } + public function setPassword($password) + { + $this->password = $password; + } + public function getPassword() + { + return $this->password; + } + public function setPhones($phones) + { + $this->phones = $phones; + } + public function getPhones() + { + return $this->phones; + } + public function setPrimaryEmail($primaryEmail) + { + $this->primaryEmail = $primaryEmail; + } + public function getPrimaryEmail() + { + return $this->primaryEmail; + } + public function setRelations($relations) + { + $this->relations = $relations; + } + public function getRelations() + { + return $this->relations; + } + public function setSuspended($suspended) + { + $this->suspended = $suspended; + } + public function getSuspended() + { + return $this->suspended; + } + public function setSuspensionReason($suspensionReason) + { + $this->suspensionReason = $suspensionReason; + } + public function getSuspensionReason() + { + return $this->suspensionReason; + } + public function setThumbnailPhotoUrl($thumbnailPhotoUrl) + { + $this->thumbnailPhotoUrl = $thumbnailPhotoUrl; + } + public function getThumbnailPhotoUrl() + { + return $this->thumbnailPhotoUrl; + } + public function setWebsites($websites) + { + $this->websites = $websites; + } + public function getWebsites() + { + return $this->websites; + } +} + +class Google_Service_Directory_UserAbout extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $contentType; + public $value; + + + public function setContentType($contentType) + { + $this->contentType = $contentType; + } + public function getContentType() + { + return $this->contentType; + } + public function setValue($value) + { + $this->value = $value; + } + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Directory_UserAddress extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $country; + public $countryCode; + public $customType; + public $extendedAddress; + public $formatted; + public $locality; + public $poBox; + public $postalCode; + public $primary; + public $region; + public $sourceIsStructured; + public $streetAddress; + public $type; + + + public function setCountry($country) + { + $this->country = $country; + } + public function getCountry() + { + return $this->country; + } + public function setCountryCode($countryCode) + { + $this->countryCode = $countryCode; + } + public function getCountryCode() + { + return $this->countryCode; + } + public function setCustomType($customType) + { + $this->customType = $customType; + } + public function getCustomType() + { + return $this->customType; + } + public function setExtendedAddress($extendedAddress) + { + $this->extendedAddress = $extendedAddress; + } + public function getExtendedAddress() + { + return $this->extendedAddress; + } + public function setFormatted($formatted) + { + $this->formatted = $formatted; + } + public function getFormatted() + { + return $this->formatted; + } + public function setLocality($locality) + { + $this->locality = $locality; + } + public function getLocality() + { + return $this->locality; + } + public function setPoBox($poBox) + { + $this->poBox = $poBox; + } + public function getPoBox() + { + return $this->poBox; + } + public function setPostalCode($postalCode) + { + $this->postalCode = $postalCode; + } + public function getPostalCode() + { + return $this->postalCode; + } + public function setPrimary($primary) + { + $this->primary = $primary; + } + public function getPrimary() + { + return $this->primary; + } + public function setRegion($region) + { + $this->region = $region; + } + public function getRegion() + { + return $this->region; + } + public function setSourceIsStructured($sourceIsStructured) + { + $this->sourceIsStructured = $sourceIsStructured; + } + public function getSourceIsStructured() + { + return $this->sourceIsStructured; + } + public function setStreetAddress($streetAddress) + { + $this->streetAddress = $streetAddress; + } + public function getStreetAddress() + { + return $this->streetAddress; + } + public function setType($type) + { + $this->type = $type; + } + public function getType() + { + return $this->type; + } +} + +class Google_Service_Directory_UserCustomProperties extends Google_Model +{ +} + +class Google_Service_Directory_UserCustomSchemas extends Google_Model +{ +} + +class Google_Service_Directory_UserEmail extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $address; + public $customType; + public $primary; + public $type; + + + public function setAddress($address) + { + $this->address = $address; + } + public function getAddress() + { + return $this->address; + } + public function setCustomType($customType) + { + $this->customType = $customType; + } + public function getCustomType() + { + return $this->customType; + } + public function setPrimary($primary) + { + $this->primary = $primary; + } + public function getPrimary() + { + return $this->primary; + } + public function setType($type) + { + $this->type = $type; + } + public function getType() + { + return $this->type; + } +} + +class Google_Service_Directory_UserExternalId extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $customType; + public $type; + public $value; + + + public function setCustomType($customType) + { + $this->customType = $customType; + } + public function getCustomType() + { + return $this->customType; + } + public function setType($type) + { + $this->type = $type; + } + public function getType() + { + return $this->type; + } + public function setValue($value) + { + $this->value = $value; + } + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Directory_UserIm extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $customProtocol; + public $customType; + public $im; + public $primary; + public $protocol; + public $type; + + + public function setCustomProtocol($customProtocol) + { + $this->customProtocol = $customProtocol; + } + public function getCustomProtocol() + { + return $this->customProtocol; + } + public function setCustomType($customType) + { + $this->customType = $customType; + } + public function getCustomType() + { + return $this->customType; + } + public function setIm($im) + { + $this->im = $im; + } + public function getIm() + { + return $this->im; + } + public function setPrimary($primary) + { + $this->primary = $primary; + } + public function getPrimary() + { + return $this->primary; + } + public function setProtocol($protocol) + { + $this->protocol = $protocol; + } + public function getProtocol() + { + return $this->protocol; + } + public function setType($type) + { + $this->type = $type; + } + public function getType() + { + return $this->type; + } +} + +class Google_Service_Directory_UserMakeAdmin extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $status; + + + public function setStatus($status) + { + $this->status = $status; + } + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_Directory_UserName extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $familyName; + public $fullName; + public $givenName; + + + public function setFamilyName($familyName) + { + $this->familyName = $familyName; + } + public function getFamilyName() + { + return $this->familyName; + } + public function setFullName($fullName) + { + $this->fullName = $fullName; + } + public function getFullName() + { + return $this->fullName; + } + public function setGivenName($givenName) + { + $this->givenName = $givenName; + } + public function getGivenName() + { + return $this->givenName; + } +} + +class Google_Service_Directory_UserOrganization extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $costCenter; + public $customType; + public $department; + public $description; + public $domain; + public $location; + public $name; + public $primary; + public $symbol; + public $title; + public $type; + + + public function setCostCenter($costCenter) + { + $this->costCenter = $costCenter; + } + public function getCostCenter() + { + return $this->costCenter; + } + public function setCustomType($customType) + { + $this->customType = $customType; + } + public function getCustomType() + { + return $this->customType; + } + public function setDepartment($department) + { + $this->department = $department; + } + public function getDepartment() + { + return $this->department; + } + public function setDescription($description) + { + $this->description = $description; + } + public function getDescription() + { + return $this->description; + } + public function setDomain($domain) + { + $this->domain = $domain; + } + public function getDomain() + { + return $this->domain; + } + public function setLocation($location) + { + $this->location = $location; + } + public function getLocation() + { + return $this->location; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setPrimary($primary) + { + $this->primary = $primary; + } + public function getPrimary() + { + return $this->primary; + } + public function setSymbol($symbol) + { + $this->symbol = $symbol; + } + public function getSymbol() + { + return $this->symbol; + } + public function setTitle($title) + { + $this->title = $title; + } + public function getTitle() + { + return $this->title; + } + public function setType($type) + { + $this->type = $type; + } + public function getType() + { + return $this->type; + } +} + +class Google_Service_Directory_UserPhone extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $customType; + public $primary; + public $type; + public $value; + + + public function setCustomType($customType) + { + $this->customType = $customType; + } + public function getCustomType() + { + return $this->customType; + } + public function setPrimary($primary) + { + $this->primary = $primary; + } + public function getPrimary() + { + return $this->primary; + } + public function setType($type) + { + $this->type = $type; + } + public function getType() + { + return $this->type; + } + public function setValue($value) + { + $this->value = $value; + } + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Directory_UserPhoto extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $etag; + public $height; + public $id; + public $kind; + public $mimeType; + public $photoData; + public $primaryEmail; + public $width; + + + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setHeight($height) + { + $this->height = $height; + } + public function getHeight() + { + return $this->height; + } + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setMimeType($mimeType) + { + $this->mimeType = $mimeType; + } + public function getMimeType() + { + return $this->mimeType; + } + public function setPhotoData($photoData) + { + $this->photoData = $photoData; + } + public function getPhotoData() + { + return $this->photoData; + } + public function setPrimaryEmail($primaryEmail) + { + $this->primaryEmail = $primaryEmail; + } + public function getPrimaryEmail() + { + return $this->primaryEmail; + } + public function setWidth($width) + { + $this->width = $width; + } + public function getWidth() + { + return $this->width; + } +} + +class Google_Service_Directory_UserRelation extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $customType; + public $type; + public $value; + + + public function setCustomType($customType) + { + $this->customType = $customType; + } + public function getCustomType() + { + return $this->customType; + } + public function setType($type) + { + $this->type = $type; + } + public function getType() + { + return $this->type; + } + public function setValue($value) + { + $this->value = $value; + } + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Directory_UserUndelete extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $orgUnitPath; + + + public function setOrgUnitPath($orgUnitPath) + { + $this->orgUnitPath = $orgUnitPath; + } + public function getOrgUnitPath() + { + return $this->orgUnitPath; + } +} + +class Google_Service_Directory_UserWebsite extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $customType; + public $primary; + public $type; + public $value; + + + public function setCustomType($customType) + { + $this->customType = $customType; + } + public function getCustomType() + { + return $this->customType; + } + public function setPrimary($primary) + { + $this->primary = $primary; + } + public function getPrimary() + { + return $this->primary; + } + public function setType($type) + { + $this->type = $type; + } + public function getType() + { + return $this->type; + } + public function setValue($value) + { + $this->value = $value; + } + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Directory_Users extends Google_Collection +{ + protected $collection_key = 'users'; + protected $internal_gapi_mappings = array( + "triggerEvent" => "trigger_event", + ); + public $etag; + public $kind; + public $nextPageToken; + public $triggerEvent; + protected $usersType = 'Google_Service_Directory_User'; + protected $usersDataType = 'array'; + + + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } + public function setTriggerEvent($triggerEvent) + { + $this->triggerEvent = $triggerEvent; + } + public function getTriggerEvent() + { + return $this->triggerEvent; + } + public function setUsers($users) + { + $this->users = $users; + } + public function getUsers() + { + return $this->users; + } +} + +class Google_Service_Directory_VerificationCode extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $etag; + public $kind; + public $userId; + public $verificationCode; + + + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setUserId($userId) + { + $this->userId = $userId; + } + public function getUserId() + { + return $this->userId; + } + public function setVerificationCode($verificationCode) + { + $this->verificationCode = $verificationCode; + } + public function getVerificationCode() + { + return $this->verificationCode; + } +} + +class Google_Service_Directory_VerificationCodes extends Google_Collection +{ + protected $collection_key = 'items'; + protected $internal_gapi_mappings = array( + ); + public $etag; + protected $itemsType = 'Google_Service_Directory_VerificationCode'; + protected $itemsDataType = 'array'; + public $kind; + + + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setItems($items) + { + $this->items = $items; + } + public function getItems() + { + return $this->items; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } +} diff --git a/plugins/updraftplus/includes/Google/Service/Dns.php b/plugins/updraftplus/includes/Google/Service/Dns.php new file mode 100644 index 0000000..209a957 --- /dev/null +++ b/plugins/updraftplus/includes/Google/Service/Dns.php @@ -0,0 +1,916 @@ + + * The Google Cloud DNS API provides services for configuring and serving + * authoritative DNS records.

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Dns extends Google_Service +{ + /** View and manage your data across Google Cloud Platform services. */ + const CLOUD_PLATFORM = + "https://www.googleapis.com/auth/cloud-platform"; + /** View your DNS records hosted by Google Cloud DNS. */ + const NDEV_CLOUDDNS_READONLY = + "https://www.googleapis.com/auth/ndev.clouddns.readonly"; + /** View and manage your DNS records hosted by Google Cloud DNS. */ + const NDEV_CLOUDDNS_READWRITE = + "https://www.googleapis.com/auth/ndev.clouddns.readwrite"; + + public $changes; + public $managedZones; + public $projects; + public $resourceRecordSets; + + + /** + * Constructs the internal representation of the Dns service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'dns/v1/projects/'; + $this->version = 'v1'; + $this->serviceName = 'dns'; + + $this->changes = new Google_Service_Dns_Changes_Resource( + $this, + $this->serviceName, + 'changes', + array( + 'methods' => array( + 'create' => array( + 'path' => '{project}/managedZones/{managedZone}/changes', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'managedZone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{project}/managedZones/{managedZone}/changes/{changeId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'managedZone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'changeId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/managedZones/{managedZone}/changes', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'managedZone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'sortBy' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'sortOrder' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->managedZones = new Google_Service_Dns_ManagedZones_Resource( + $this, + $this->serviceName, + 'managedZones', + array( + 'methods' => array( + 'create' => array( + 'path' => '{project}/managedZones', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'delete' => array( + 'path' => '{project}/managedZones/{managedZone}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'managedZone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{project}/managedZones/{managedZone}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'managedZone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/managedZones', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->projects = new Google_Service_Dns_Projects_Resource( + $this, + $this->serviceName, + 'projects', + array( + 'methods' => array( + 'get' => array( + 'path' => '{project}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->resourceRecordSets = new Google_Service_Dns_ResourceRecordSets_Resource( + $this, + $this->serviceName, + 'resourceRecordSets', + array( + 'methods' => array( + 'list' => array( + 'path' => '{project}/managedZones/{managedZone}/rrsets', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'managedZone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'name' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'type' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "changes" collection of methods. + * Typical usage is: + * + * $dnsService = new Google_Service_Dns(...); + * $changes = $dnsService->changes; + * + */ +class Google_Service_Dns_Changes_Resource extends Google_Service_Resource +{ + + /** + * Atomically update the ResourceRecordSet collection. (changes.create) + * + * @param string $project Identifies the project addressed by this request. + * @param string $managedZone Identifies the managed zone addressed by this + * request. Can be the managed zone name or id. + * @param Google_Change $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Dns_Change + */ + public function create($project, $managedZone, Google_Service_Dns_Change $postBody, $optParams = array()) + { + $params = array('project' => $project, 'managedZone' => $managedZone, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('create', array($params), "Google_Service_Dns_Change"); + } + + /** + * Fetch the representation of an existing Change. (changes.get) + * + * @param string $project Identifies the project addressed by this request. + * @param string $managedZone Identifies the managed zone addressed by this + * request. Can be the managed zone name or id. + * @param string $changeId The identifier of the requested change, from a + * previous ResourceRecordSetsChangeResponse. + * @param array $optParams Optional parameters. + * @return Google_Service_Dns_Change + */ + public function get($project, $managedZone, $changeId, $optParams = array()) + { + $params = array('project' => $project, 'managedZone' => $managedZone, 'changeId' => $changeId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Dns_Change"); + } + + /** + * Enumerate Changes to a ResourceRecordSet collection. (changes.listChanges) + * + * @param string $project Identifies the project addressed by this request. + * @param string $managedZone Identifies the managed zone addressed by this + * request. Can be the managed zone name or id. + * @param array $optParams Optional parameters. + * + * @opt_param int maxResults Optional. Maximum number of results to be returned. + * If unspecified, the server will decide how many results to return. + * @opt_param string pageToken Optional. A tag returned by a previous list + * request that was truncated. Use this parameter to continue a previous list + * request. + * @opt_param string sortBy Sorting criterion. The only supported value is + * change sequence. + * @opt_param string sortOrder Sorting order direction: 'ascending' or + * 'descending'. + * @return Google_Service_Dns_ChangesListResponse + */ + public function listChanges($project, $managedZone, $optParams = array()) + { + $params = array('project' => $project, 'managedZone' => $managedZone); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Dns_ChangesListResponse"); + } +} + +/** + * The "managedZones" collection of methods. + * Typical usage is: + * + * $dnsService = new Google_Service_Dns(...); + * $managedZones = $dnsService->managedZones; + * + */ +class Google_Service_Dns_ManagedZones_Resource extends Google_Service_Resource +{ + + /** + * Create a new ManagedZone. (managedZones.create) + * + * @param string $project Identifies the project addressed by this request. + * @param Google_ManagedZone $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Dns_ManagedZone + */ + public function create($project, Google_Service_Dns_ManagedZone $postBody, $optParams = array()) + { + $params = array('project' => $project, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('create', array($params), "Google_Service_Dns_ManagedZone"); + } + + /** + * Delete a previously created ManagedZone. (managedZones.delete) + * + * @param string $project Identifies the project addressed by this request. + * @param string $managedZone Identifies the managed zone addressed by this + * request. Can be the managed zone name or id. + * @param array $optParams Optional parameters. + */ + public function delete($project, $managedZone, $optParams = array()) + { + $params = array('project' => $project, 'managedZone' => $managedZone); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * Fetch the representation of an existing ManagedZone. (managedZones.get) + * + * @param string $project Identifies the project addressed by this request. + * @param string $managedZone Identifies the managed zone addressed by this + * request. Can be the managed zone name or id. + * @param array $optParams Optional parameters. + * @return Google_Service_Dns_ManagedZone + */ + public function get($project, $managedZone, $optParams = array()) + { + $params = array('project' => $project, 'managedZone' => $managedZone); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Dns_ManagedZone"); + } + + /** + * Enumerate ManagedZones that have been created but not yet deleted. + * (managedZones.listManagedZones) + * + * @param string $project Identifies the project addressed by this request. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Optional. A tag returned by a previous list + * request that was truncated. Use this parameter to continue a previous list + * request. + * @opt_param int maxResults Optional. Maximum number of results to be returned. + * If unspecified, the server will decide how many results to return. + * @return Google_Service_Dns_ManagedZonesListResponse + */ + public function listManagedZones($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Dns_ManagedZonesListResponse"); + } +} + +/** + * The "projects" collection of methods. + * Typical usage is: + * + * $dnsService = new Google_Service_Dns(...); + * $projects = $dnsService->projects; + * + */ +class Google_Service_Dns_Projects_Resource extends Google_Service_Resource +{ + + /** + * Fetch the representation of an existing Project. (projects.get) + * + * @param string $project Identifies the project addressed by this request. + * @param array $optParams Optional parameters. + * @return Google_Service_Dns_Project + */ + public function get($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Dns_Project"); + } +} + +/** + * The "resourceRecordSets" collection of methods. + * Typical usage is: + * + * $dnsService = new Google_Service_Dns(...); + * $resourceRecordSets = $dnsService->resourceRecordSets; + * + */ +class Google_Service_Dns_ResourceRecordSets_Resource extends Google_Service_Resource +{ + + /** + * Enumerate ResourceRecordSets that have been created but not yet deleted. + * (resourceRecordSets.listResourceRecordSets) + * + * @param string $project Identifies the project addressed by this request. + * @param string $managedZone Identifies the managed zone addressed by this + * request. Can be the managed zone name or id. + * @param array $optParams Optional parameters. + * + * @opt_param string name Restricts the list to return only records with this + * fully qualified domain name. + * @opt_param int maxResults Optional. Maximum number of results to be returned. + * If unspecified, the server will decide how many results to return. + * @opt_param string pageToken Optional. A tag returned by a previous list + * request that was truncated. Use this parameter to continue a previous list + * request. + * @opt_param string type Restricts the list to return only records of this + * type. If present, the "name" parameter must also be present. + * @return Google_Service_Dns_ResourceRecordSetsListResponse + */ + public function listResourceRecordSets($project, $managedZone, $optParams = array()) + { + $params = array('project' => $project, 'managedZone' => $managedZone); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Dns_ResourceRecordSetsListResponse"); + } +} + + + + +class Google_Service_Dns_Change extends Google_Collection +{ + protected $collection_key = 'deletions'; + protected $internal_gapi_mappings = array( + ); + protected $additionsType = 'Google_Service_Dns_ResourceRecordSet'; + protected $additionsDataType = 'array'; + protected $deletionsType = 'Google_Service_Dns_ResourceRecordSet'; + protected $deletionsDataType = 'array'; + public $id; + public $kind; + public $startTime; + public $status; + + + public function setAdditions($additions) + { + $this->additions = $additions; + } + public function getAdditions() + { + return $this->additions; + } + public function setDeletions($deletions) + { + $this->deletions = $deletions; + } + public function getDeletions() + { + return $this->deletions; + } + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setStartTime($startTime) + { + $this->startTime = $startTime; + } + public function getStartTime() + { + return $this->startTime; + } + public function setStatus($status) + { + $this->status = $status; + } + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_Dns_ChangesListResponse extends Google_Collection +{ + protected $collection_key = 'changes'; + protected $internal_gapi_mappings = array( + ); + protected $changesType = 'Google_Service_Dns_Change'; + protected $changesDataType = 'array'; + public $kind; + public $nextPageToken; + + + public function setChanges($changes) + { + $this->changes = $changes; + } + public function getChanges() + { + return $this->changes; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Dns_ManagedZone extends Google_Collection +{ + protected $collection_key = 'nameServers'; + protected $internal_gapi_mappings = array( + ); + public $creationTime; + public $description; + public $dnsName; + public $id; + public $kind; + public $name; + public $nameServerSet; + public $nameServers; + + + public function setCreationTime($creationTime) + { + $this->creationTime = $creationTime; + } + public function getCreationTime() + { + return $this->creationTime; + } + public function setDescription($description) + { + $this->description = $description; + } + public function getDescription() + { + return $this->description; + } + public function setDnsName($dnsName) + { + $this->dnsName = $dnsName; + } + public function getDnsName() + { + return $this->dnsName; + } + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setNameServerSet($nameServerSet) + { + $this->nameServerSet = $nameServerSet; + } + public function getNameServerSet() + { + return $this->nameServerSet; + } + public function setNameServers($nameServers) + { + $this->nameServers = $nameServers; + } + public function getNameServers() + { + return $this->nameServers; + } +} + +class Google_Service_Dns_ManagedZonesListResponse extends Google_Collection +{ + protected $collection_key = 'managedZones'; + protected $internal_gapi_mappings = array( + ); + public $kind; + protected $managedZonesType = 'Google_Service_Dns_ManagedZone'; + protected $managedZonesDataType = 'array'; + public $nextPageToken; + + + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setManagedZones($managedZones) + { + $this->managedZones = $managedZones; + } + public function getManagedZones() + { + return $this->managedZones; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Dns_Project extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $id; + public $kind; + public $number; + protected $quotaType = 'Google_Service_Dns_Quota'; + protected $quotaDataType = ''; + + + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setNumber($number) + { + $this->number = $number; + } + public function getNumber() + { + return $this->number; + } + public function setQuota(Google_Service_Dns_Quota $quota) + { + $this->quota = $quota; + } + public function getQuota() + { + return $this->quota; + } +} + +class Google_Service_Dns_Quota extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $kind; + public $managedZones; + public $resourceRecordsPerRrset; + public $rrsetAdditionsPerChange; + public $rrsetDeletionsPerChange; + public $rrsetsPerManagedZone; + public $totalRrdataSizePerChange; + + + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setManagedZones($managedZones) + { + $this->managedZones = $managedZones; + } + public function getManagedZones() + { + return $this->managedZones; + } + public function setResourceRecordsPerRrset($resourceRecordsPerRrset) + { + $this->resourceRecordsPerRrset = $resourceRecordsPerRrset; + } + public function getResourceRecordsPerRrset() + { + return $this->resourceRecordsPerRrset; + } + public function setRrsetAdditionsPerChange($rrsetAdditionsPerChange) + { + $this->rrsetAdditionsPerChange = $rrsetAdditionsPerChange; + } + public function getRrsetAdditionsPerChange() + { + return $this->rrsetAdditionsPerChange; + } + public function setRrsetDeletionsPerChange($rrsetDeletionsPerChange) + { + $this->rrsetDeletionsPerChange = $rrsetDeletionsPerChange; + } + public function getRrsetDeletionsPerChange() + { + return $this->rrsetDeletionsPerChange; + } + public function setRrsetsPerManagedZone($rrsetsPerManagedZone) + { + $this->rrsetsPerManagedZone = $rrsetsPerManagedZone; + } + public function getRrsetsPerManagedZone() + { + return $this->rrsetsPerManagedZone; + } + public function setTotalRrdataSizePerChange($totalRrdataSizePerChange) + { + $this->totalRrdataSizePerChange = $totalRrdataSizePerChange; + } + public function getTotalRrdataSizePerChange() + { + return $this->totalRrdataSizePerChange; + } +} + +class Google_Service_Dns_ResourceRecordSet extends Google_Collection +{ + protected $collection_key = 'rrdatas'; + protected $internal_gapi_mappings = array( + ); + public $kind; + public $name; + public $rrdatas; + public $ttl; + public $type; + + + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setRrdatas($rrdatas) + { + $this->rrdatas = $rrdatas; + } + public function getRrdatas() + { + return $this->rrdatas; + } + public function setTtl($ttl) + { + $this->ttl = $ttl; + } + public function getTtl() + { + return $this->ttl; + } + public function setType($type) + { + $this->type = $type; + } + public function getType() + { + return $this->type; + } +} + +class Google_Service_Dns_ResourceRecordSetsListResponse extends Google_Collection +{ + protected $collection_key = 'rrsets'; + protected $internal_gapi_mappings = array( + ); + public $kind; + public $nextPageToken; + protected $rrsetsType = 'Google_Service_Dns_ResourceRecordSet'; + protected $rrsetsDataType = 'array'; + + + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } + public function setRrsets($rrsets) + { + $this->rrsets = $rrsets; + } + public function getRrsets() + { + return $this->rrsets; + } +} diff --git a/plugins/updraftplus/includes/Google/Service/Drive.php b/plugins/updraftplus/includes/Google/Service/Drive.php new file mode 100644 index 0000000..a6a67b0 --- /dev/null +++ b/plugins/updraftplus/includes/Google/Service/Drive.php @@ -0,0 +1,5603 @@ + + * The API to interact with Drive.

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Drive extends Google_Service +{ + /** View and manage the files in your Google Drive. */ + const DRIVE = + "https://www.googleapis.com/auth/drive"; + /** View and manage its own configuration data in your Google Drive. */ + const DRIVE_APPDATA = + "https://www.googleapis.com/auth/drive.appdata"; + /** View your Google Drive apps. */ + const DRIVE_APPS_READONLY = + "https://www.googleapis.com/auth/drive.apps.readonly"; + /** View and manage Google Drive files that you have opened or created with this app. */ + const DRIVE_FILE = + "https://www.googleapis.com/auth/drive.file"; + /** View and manage metadata of files in your Google Drive. */ + const DRIVE_METADATA = + "https://www.googleapis.com/auth/drive.metadata"; + /** View metadata for files in your Google Drive. */ + const DRIVE_METADATA_READONLY = + "https://www.googleapis.com/auth/drive.metadata.readonly"; + /** View the files in your Google Drive. */ + const DRIVE_READONLY = + "https://www.googleapis.com/auth/drive.readonly"; + /** Modify your Google Apps Script scripts' behavior. */ + const DRIVE_SCRIPTS = + "https://www.googleapis.com/auth/drive.scripts"; + + public $about; + public $apps; + public $changes; + public $channels; + public $children; + public $comments; + public $files; + public $parents; + public $permissions; + public $properties; + public $realtime; + public $replies; + public $revisions; + + + /** + * Constructs the internal representation of the Drive service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'drive/v2/'; + $this->version = 'v2'; + $this->serviceName = 'drive'; + + $this->about = new Google_Service_Drive_About_Resource( + $this, + $this->serviceName, + 'about', + array( + 'methods' => array( + 'get' => array( + 'path' => 'about', + 'httpMethod' => 'GET', + 'parameters' => array( + 'includeSubscribed' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxChangeIdCount' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'startChangeId' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->apps = new Google_Service_Drive_Apps_Resource( + $this, + $this->serviceName, + 'apps', + array( + 'methods' => array( + 'get' => array( + 'path' => 'apps/{appId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'appId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'apps', + 'httpMethod' => 'GET', + 'parameters' => array( + 'languageCode' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'appFilterExtensions' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'appFilterMimeTypes' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->changes = new Google_Service_Drive_Changes_Resource( + $this, + $this->serviceName, + 'changes', + array( + 'methods' => array( + 'get' => array( + 'path' => 'changes/{changeId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'changeId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'changes', + 'httpMethod' => 'GET', + 'parameters' => array( + 'includeSubscribed' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'startChangeId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'includeDeleted' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'watch' => array( + 'path' => 'changes/watch', + 'httpMethod' => 'POST', + 'parameters' => array( + 'includeSubscribed' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'startChangeId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'includeDeleted' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->channels = new Google_Service_Drive_Channels_Resource( + $this, + $this->serviceName, + 'channels', + array( + 'methods' => array( + 'stop' => array( + 'path' => 'channels/stop', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + $this->children = new Google_Service_Drive_Children_Resource( + $this, + $this->serviceName, + 'children', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'files/{folderId}/children/{childId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'folderId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'childId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'files/{folderId}/children/{childId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'folderId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'childId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'files/{folderId}/children', + 'httpMethod' => 'POST', + 'parameters' => array( + 'folderId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'files/{folderId}/children', + 'httpMethod' => 'GET', + 'parameters' => array( + 'folderId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'q' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->comments = new Google_Service_Drive_Comments_Resource( + $this, + $this->serviceName, + 'comments', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'files/{fileId}/comments/{commentId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'files/{fileId}/comments/{commentId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'includeDeleted' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'insert' => array( + 'path' => 'files/{fileId}/comments', + 'httpMethod' => 'POST', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'files/{fileId}/comments', + 'httpMethod' => 'GET', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'updatedMin' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'includeDeleted' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => 'files/{fileId}/comments/{commentId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'files/{fileId}/comments/{commentId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->files = new Google_Service_Drive_Files_Resource( + $this, + $this->serviceName, + 'files', + array( + 'methods' => array( + 'copy' => array( + 'path' => 'files/{fileId}/copy', + 'httpMethod' => 'POST', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'convert' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'ocrLanguage' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'visibility' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pinned' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'ocr' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'timedTextTrackName' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'timedTextLanguage' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'delete' => array( + 'path' => 'files/{fileId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'emptyTrash' => array( + 'path' => 'files/trash', + 'httpMethod' => 'DELETE', + 'parameters' => array(), + ),'get' => array( + 'path' => 'files/{fileId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'acknowledgeAbuse' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'updateViewedDate' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'revisionId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'insert' => array( + 'path' => 'files', + 'httpMethod' => 'POST', + 'parameters' => array( + 'convert' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'useContentAsIndexableText' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'ocrLanguage' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'visibility' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pinned' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'ocr' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'timedTextTrackName' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'timedTextLanguage' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'files', + 'httpMethod' => 'GET', + 'parameters' => array( + 'q' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'corpus' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => 'files/{fileId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'addParents' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'updateViewedDate' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'removeParents' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'setModifiedDate' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'convert' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'useContentAsIndexableText' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'ocrLanguage' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pinned' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'newRevision' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'ocr' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'timedTextLanguage' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'timedTextTrackName' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'touch' => array( + 'path' => 'files/{fileId}/touch', + 'httpMethod' => 'POST', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'trash' => array( + 'path' => 'files/{fileId}/trash', + 'httpMethod' => 'POST', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'untrash' => array( + 'path' => 'files/{fileId}/untrash', + 'httpMethod' => 'POST', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'files/{fileId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'addParents' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'updateViewedDate' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'removeParents' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'setModifiedDate' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'convert' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'useContentAsIndexableText' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'ocrLanguage' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pinned' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'newRevision' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'ocr' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'timedTextLanguage' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'timedTextTrackName' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'watch' => array( + 'path' => 'files/{fileId}/watch', + 'httpMethod' => 'POST', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'acknowledgeAbuse' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'updateViewedDate' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'revisionId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->parents = new Google_Service_Drive_Parents_Resource( + $this, + $this->serviceName, + 'parents', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'files/{fileId}/parents/{parentId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'parentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'files/{fileId}/parents/{parentId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'parentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'files/{fileId}/parents', + 'httpMethod' => 'POST', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'files/{fileId}/parents', + 'httpMethod' => 'GET', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->permissions = new Google_Service_Drive_Permissions_Resource( + $this, + $this->serviceName, + 'permissions', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'files/{fileId}/permissions/{permissionId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'permissionId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'files/{fileId}/permissions/{permissionId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'permissionId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'getIdForEmail' => array( + 'path' => 'permissionIds/{email}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'email' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'files/{fileId}/permissions', + 'httpMethod' => 'POST', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'emailMessage' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'sendNotificationEmails' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'list' => array( + 'path' => 'files/{fileId}/permissions', + 'httpMethod' => 'GET', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => 'files/{fileId}/permissions/{permissionId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'permissionId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'transferOwnership' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'update' => array( + 'path' => 'files/{fileId}/permissions/{permissionId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'permissionId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'transferOwnership' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ), + ) + ) + ); + $this->properties = new Google_Service_Drive_Properties_Resource( + $this, + $this->serviceName, + 'properties', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'files/{fileId}/properties/{propertyKey}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'propertyKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'visibility' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'get' => array( + 'path' => 'files/{fileId}/properties/{propertyKey}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'propertyKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'visibility' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'insert' => array( + 'path' => 'files/{fileId}/properties', + 'httpMethod' => 'POST', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'files/{fileId}/properties', + 'httpMethod' => 'GET', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => 'files/{fileId}/properties/{propertyKey}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'propertyKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'visibility' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'update' => array( + 'path' => 'files/{fileId}/properties/{propertyKey}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'propertyKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'visibility' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->realtime = new Google_Service_Drive_Realtime_Resource( + $this, + $this->serviceName, + 'realtime', + array( + 'methods' => array( + 'get' => array( + 'path' => 'files/{fileId}/realtime', + 'httpMethod' => 'GET', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'revision' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'update' => array( + 'path' => 'files/{fileId}/realtime', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'baseRevision' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->replies = new Google_Service_Drive_Replies_Resource( + $this, + $this->serviceName, + 'replies', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'files/{fileId}/comments/{commentId}/replies/{replyId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'replyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'files/{fileId}/comments/{commentId}/replies/{replyId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'replyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'includeDeleted' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'insert' => array( + 'path' => 'files/{fileId}/comments/{commentId}/replies', + 'httpMethod' => 'POST', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'files/{fileId}/comments/{commentId}/replies', + 'httpMethod' => 'GET', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'includeDeleted' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => 'files/{fileId}/comments/{commentId}/replies/{replyId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'replyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'files/{fileId}/comments/{commentId}/replies/{replyId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'replyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->revisions = new Google_Service_Drive_Revisions_Resource( + $this, + $this->serviceName, + 'revisions', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'files/{fileId}/revisions/{revisionId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'revisionId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'files/{fileId}/revisions/{revisionId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'revisionId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'files/{fileId}/revisions', + 'httpMethod' => 'GET', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => 'files/{fileId}/revisions/{revisionId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'revisionId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'files/{fileId}/revisions/{revisionId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'revisionId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "about" collection of methods. + * Typical usage is: + * + * $driveService = new Google_Service_Drive(...); + * $about = $driveService->about; + * + */ +class Google_Service_Drive_About_Resource extends Google_Service_Resource +{ + + /** + * Gets the information about the current user along with Drive API settings + * (about.get) + * + * @param array $optParams Optional parameters. + * + * @opt_param bool includeSubscribed When calculating the number of remaining + * change IDs, whether to include public files the user has opened and shared + * files. When set to false, this counts only change IDs for owned files and any + * shared or public files that the user has explicitly added to a folder they + * own. + * @opt_param string maxChangeIdCount Maximum number of remaining change IDs to + * count + * @opt_param string startChangeId Change ID to start counting from when + * calculating number of remaining change IDs + * @return Google_Service_Drive_About + */ + public function get($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Drive_About"); + } +} + +/** + * The "apps" collection of methods. + * Typical usage is: + * + * $driveService = new Google_Service_Drive(...); + * $apps = $driveService->apps; + * + */ +class Google_Service_Drive_Apps_Resource extends Google_Service_Resource +{ + + /** + * Gets a specific app. (apps.get) + * + * @param string $appId The ID of the app. + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_App + */ + public function get($appId, $optParams = array()) + { + $params = array('appId' => $appId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Drive_App"); + } + + /** + * Lists a user's installed apps. (apps.listApps) + * + * @param array $optParams Optional parameters. + * + * @opt_param string languageCode A language or locale code, as defined by BCP + * 47, with some extensions from Unicode's LDML format + * (http://www.unicode.org/reports/tr35/). + * @opt_param string appFilterExtensions A comma-separated list of file + * extensions for open with filtering. All apps within the given app query scope + * which can open any of the given file extensions will be included in the + * response. If appFilterMimeTypes are provided as well, the result is a union + * of the two resulting app lists. + * @opt_param string appFilterMimeTypes A comma-separated list of MIME types for + * open with filtering. All apps within the given app query scope which can open + * any of the given MIME types will be included in the response. If + * appFilterExtensions are provided as well, the result is a union of the two + * resulting app lists. + * @return Google_Service_Drive_AppList + */ + public function listApps($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Drive_AppList"); + } +} + +/** + * The "changes" collection of methods. + * Typical usage is: + * + * $driveService = new Google_Service_Drive(...); + * $changes = $driveService->changes; + * + */ +class Google_Service_Drive_Changes_Resource extends Google_Service_Resource +{ + + /** + * Gets a specific change. (changes.get) + * + * @param string $changeId The ID of the change. + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_Change + */ + public function get($changeId, $optParams = array()) + { + $params = array('changeId' => $changeId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Drive_Change"); + } + + /** + * Lists the changes for a user. (changes.listChanges) + * + * @param array $optParams Optional parameters. + * + * @opt_param bool includeSubscribed Whether to include public files the user + * has opened and shared files. When set to false, the list only includes owned + * files plus any shared or public files the user has explicitly added to a + * folder they own. + * @opt_param string startChangeId Change ID to start listing changes from. + * @opt_param bool includeDeleted Whether to include deleted items. + * @opt_param int maxResults Maximum number of changes to return. + * @opt_param string pageToken Page token for changes. + * @return Google_Service_Drive_ChangeList + */ + public function listChanges($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Drive_ChangeList"); + } + + /** + * Subscribe to changes for a user. (changes.watch) + * + * @param Google_Channel $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool includeSubscribed Whether to include public files the user + * has opened and shared files. When set to false, the list only includes owned + * files plus any shared or public files the user has explicitly added to a + * folder they own. + * @opt_param string startChangeId Change ID to start listing changes from. + * @opt_param bool includeDeleted Whether to include deleted items. + * @opt_param int maxResults Maximum number of changes to return. + * @opt_param string pageToken Page token for changes. + * @return Google_Service_Drive_Channel + */ + public function watch(Google_Service_Drive_Channel $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('watch', array($params), "Google_Service_Drive_Channel"); + } +} + +/** + * The "channels" collection of methods. + * Typical usage is: + * + * $driveService = new Google_Service_Drive(...); + * $channels = $driveService->channels; + * + */ +class Google_Service_Drive_Channels_Resource extends Google_Service_Resource +{ + + /** + * Stop watching resources through this channel (channels.stop) + * + * @param Google_Channel $postBody + * @param array $optParams Optional parameters. + */ + public function stop(Google_Service_Drive_Channel $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('stop', array($params)); + } +} + +/** + * The "children" collection of methods. + * Typical usage is: + * + * $driveService = new Google_Service_Drive(...); + * $children = $driveService->children; + * + */ +class Google_Service_Drive_Children_Resource extends Google_Service_Resource +{ + + /** + * Removes a child from a folder. (children.delete) + * + * @param string $folderId The ID of the folder. + * @param string $childId The ID of the child. + * @param array $optParams Optional parameters. + */ + public function delete($folderId, $childId, $optParams = array()) + { + $params = array('folderId' => $folderId, 'childId' => $childId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * Gets a specific child reference. (children.get) + * + * @param string $folderId The ID of the folder. + * @param string $childId The ID of the child. + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_ChildReference + */ + public function get($folderId, $childId, $optParams = array()) + { + $params = array('folderId' => $folderId, 'childId' => $childId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Drive_ChildReference"); + } + + /** + * Inserts a file into a folder. (children.insert) + * + * @param string $folderId The ID of the folder. + * @param Google_ChildReference $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_ChildReference + */ + public function insert($folderId, Google_Service_Drive_ChildReference $postBody, $optParams = array()) + { + $params = array('folderId' => $folderId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Drive_ChildReference"); + } + + /** + * Lists a folder's children. (children.listChildren) + * + * @param string $folderId The ID of the folder. + * @param array $optParams Optional parameters. + * + * @opt_param string q Query string for searching children. + * @opt_param string pageToken Page token for children. + * @opt_param int maxResults Maximum number of children to return. + * @return Google_Service_Drive_ChildList + */ + public function listChildren($folderId, $optParams = array()) + { + $params = array('folderId' => $folderId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Drive_ChildList"); + } +} + +/** + * The "comments" collection of methods. + * Typical usage is: + * + * $driveService = new Google_Service_Drive(...); + * $comments = $driveService->comments; + * + */ +class Google_Service_Drive_Comments_Resource extends Google_Service_Resource +{ + + /** + * Deletes a comment. (comments.delete) + * + * @param string $fileId The ID of the file. + * @param string $commentId The ID of the comment. + * @param array $optParams Optional parameters. + */ + public function delete($fileId, $commentId, $optParams = array()) + { + $params = array('fileId' => $fileId, 'commentId' => $commentId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * Gets a comment by ID. (comments.get) + * + * @param string $fileId The ID of the file. + * @param string $commentId The ID of the comment. + * @param array $optParams Optional parameters. + * + * @opt_param bool includeDeleted If set, this will succeed when retrieving a + * deleted comment, and will include any deleted replies. + * @return Google_Service_Drive_Comment + */ + public function get($fileId, $commentId, $optParams = array()) + { + $params = array('fileId' => $fileId, 'commentId' => $commentId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Drive_Comment"); + } + + /** + * Creates a new comment on the given file. (comments.insert) + * + * @param string $fileId The ID of the file. + * @param Google_Comment $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_Comment + */ + public function insert($fileId, Google_Service_Drive_Comment $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Drive_Comment"); + } + + /** + * Lists a file's comments. (comments.listComments) + * + * @param string $fileId The ID of the file. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken The continuation token, used to page through + * large result sets. To get the next page of results, set this parameter to the + * value of "nextPageToken" from the previous response. + * @opt_param string updatedMin Only discussions that were updated after this + * timestamp will be returned. Formatted as an RFC 3339 timestamp. + * @opt_param bool includeDeleted If set, all comments and replies, including + * deleted comments and replies (with content stripped) will be returned. + * @opt_param int maxResults The maximum number of discussions to include in the + * response, used for paging. + * @return Google_Service_Drive_CommentList + */ + public function listComments($fileId, $optParams = array()) + { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Drive_CommentList"); + } + + /** + * Updates an existing comment. This method supports patch semantics. + * (comments.patch) + * + * @param string $fileId The ID of the file. + * @param string $commentId The ID of the comment. + * @param Google_Comment $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_Comment + */ + public function patch($fileId, $commentId, Google_Service_Drive_Comment $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'commentId' => $commentId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Drive_Comment"); + } + + /** + * Updates an existing comment. (comments.update) + * + * @param string $fileId The ID of the file. + * @param string $commentId The ID of the comment. + * @param Google_Comment $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_Comment + */ + public function update($fileId, $commentId, Google_Service_Drive_Comment $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'commentId' => $commentId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Drive_Comment"); + } +} + +/** + * The "files" collection of methods. + * Typical usage is: + * + * $driveService = new Google_Service_Drive(...); + * $files = $driveService->files; + * + */ +class Google_Service_Drive_Files_Resource extends Google_Service_Resource +{ + + /** + * Creates a copy of the specified file. (files.copy) + * + * @param string $fileId The ID of the file to copy. + * @param Google_DriveFile $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool convert Whether to convert this file to the corresponding + * Google Docs format. + * @opt_param string ocrLanguage If ocr is true, hints at the language to use. + * Valid values are ISO 639-1 codes. + * @opt_param string visibility The visibility of the new file. This parameter + * is only relevant when the source is not a native Google Doc and + * convert=false. + * @opt_param bool pinned Whether to pin the head revision of the new copy. A + * file can have a maximum of 200 pinned revisions. + * @opt_param bool ocr Whether to attempt OCR on .jpg, .png, .gif, or .pdf + * uploads. + * @opt_param string timedTextTrackName The timed text track name. + * @opt_param string timedTextLanguage The language of the timed text. + * @return Google_Service_Drive_DriveFile + */ + public function copy($fileId, Google_Service_Drive_DriveFile $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('copy', array($params), "Google_Service_Drive_DriveFile"); + } + + /** + * Permanently deletes a file by ID. Skips the trash. The currently + * authenticated user must own the file. (files.delete) + * + * @param string $fileId The ID of the file to delete. + * @param array $optParams Optional parameters. + */ + public function delete($fileId, $optParams = array()) + { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * Permanently deletes all of the user's trashed files. (files.emptyTrash) + * + * @param array $optParams Optional parameters. + */ + public function emptyTrash($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('emptyTrash', array($params)); + } + + /** + * Gets a file's metadata by ID. (files.get) + * + * @param string $fileId The ID for the file in question. + * @param array $optParams Optional parameters. + * + * @opt_param bool acknowledgeAbuse Whether the user is acknowledging the risk + * of downloading known malware or other abusive files. + * @opt_param bool updateViewedDate Whether to update the view date after + * successfully retrieving the file. + * @opt_param string revisionId Specifies the Revision ID that should be + * downloaded. Ignored unless alt=media is specified. + * @opt_param string projection This parameter is deprecated and has no + * function. + * @return Google_Service_Drive_DriveFile + */ + public function get($fileId, $optParams = array()) + { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Drive_DriveFile"); + } + + /** + * Insert a new file. (files.insert) + * + * @param Google_DriveFile $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool convert Whether to convert this file to the corresponding + * Google Docs format. + * @opt_param bool useContentAsIndexableText Whether to use the content as + * indexable text. + * @opt_param string ocrLanguage If ocr is true, hints at the language to use. + * Valid values are ISO 639-1 codes. + * @opt_param string visibility The visibility of the new file. This parameter + * is only relevant when convert=false. + * @opt_param bool pinned Whether to pin the head revision of the uploaded file. + * A file can have a maximum of 200 pinned revisions. + * @opt_param bool ocr Whether to attempt OCR on .jpg, .png, .gif, or .pdf + * uploads. + * @opt_param string timedTextTrackName The timed text track name. + * @opt_param string timedTextLanguage The language of the timed text. + * @return Google_Service_Drive_DriveFile + */ + public function insert(Google_Service_Drive_DriveFile $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Drive_DriveFile"); + } + + /** + * Lists the user's files. (files.listFiles) + * + * @param array $optParams Optional parameters. + * + * @opt_param string q Query string for searching files. + * @opt_param string pageToken Page token for files. + * @opt_param string corpus The body of items (files/documents) to which the + * query applies. + * @opt_param string projection This parameter is deprecated and has no + * function. + * @opt_param int maxResults Maximum number of files to return. + * @return Google_Service_Drive_FileList + */ + public function listFiles($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Drive_FileList"); + } + + /** + * Updates file metadata and/or content. This method supports patch semantics. + * (files.patch) + * + * @param string $fileId The ID of the file to update. + * @param Google_DriveFile $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string addParents Comma-separated list of parent IDs to add. + * @opt_param bool updateViewedDate Whether to update the view date after + * successfully updating the file. + * @opt_param string removeParents Comma-separated list of parent IDs to remove. + * @opt_param bool setModifiedDate Whether to set the modified date with the + * supplied modified date. + * @opt_param bool convert Whether to convert this file to the corresponding + * Google Docs format. + * @opt_param bool useContentAsIndexableText Whether to use the content as + * indexable text. + * @opt_param string ocrLanguage If ocr is true, hints at the language to use. + * Valid values are ISO 639-1 codes. + * @opt_param bool pinned Whether to pin the new revision. A file can have a + * maximum of 200 pinned revisions. + * @opt_param bool newRevision Whether a blob upload should create a new + * revision. If false, the blob data in the current head revision is replaced. + * If true or not set, a new blob is created as head revision, and previous + * revisions are preserved (causing increased use of the user's data storage + * quota). + * @opt_param bool ocr Whether to attempt OCR on .jpg, .png, .gif, or .pdf + * uploads. + * @opt_param string timedTextLanguage The language of the timed text. + * @opt_param string timedTextTrackName The timed text track name. + * @return Google_Service_Drive_DriveFile + */ + public function patch($fileId, Google_Service_Drive_DriveFile $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Drive_DriveFile"); + } + + /** + * Set the file's updated time to the current server time. (files.touch) + * + * @param string $fileId The ID of the file to update. + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_DriveFile + */ + public function touch($fileId, $optParams = array()) + { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + return $this->call('touch', array($params), "Google_Service_Drive_DriveFile"); + } + + /** + * Moves a file to the trash. (files.trash) + * + * @param string $fileId The ID of the file to trash. + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_DriveFile + */ + public function trash($fileId, $optParams = array()) + { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + return $this->call('trash', array($params), "Google_Service_Drive_DriveFile"); + } + + /** + * Restores a file from the trash. (files.untrash) + * + * @param string $fileId The ID of the file to untrash. + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_DriveFile + */ + public function untrash($fileId, $optParams = array()) + { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + return $this->call('untrash', array($params), "Google_Service_Drive_DriveFile"); + } + + /** + * Updates file metadata and/or content. (files.update) + * + * @param string $fileId The ID of the file to update. + * @param Google_DriveFile $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string addParents Comma-separated list of parent IDs to add. + * @opt_param bool updateViewedDate Whether to update the view date after + * successfully updating the file. + * @opt_param string removeParents Comma-separated list of parent IDs to remove. + * @opt_param bool setModifiedDate Whether to set the modified date with the + * supplied modified date. + * @opt_param bool convert Whether to convert this file to the corresponding + * Google Docs format. + * @opt_param bool useContentAsIndexableText Whether to use the content as + * indexable text. + * @opt_param string ocrLanguage If ocr is true, hints at the language to use. + * Valid values are ISO 639-1 codes. + * @opt_param bool pinned Whether to pin the new revision. A file can have a + * maximum of 200 pinned revisions. + * @opt_param bool newRevision Whether a blob upload should create a new + * revision. If false, the blob data in the current head revision is replaced. + * If true or not set, a new blob is created as head revision, and previous + * revisions are preserved (causing increased use of the user's data storage + * quota). + * @opt_param bool ocr Whether to attempt OCR on .jpg, .png, .gif, or .pdf + * uploads. + * @opt_param string timedTextLanguage The language of the timed text. + * @opt_param string timedTextTrackName The timed text track name. + * @return Google_Service_Drive_DriveFile + */ + public function update($fileId, Google_Service_Drive_DriveFile $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Drive_DriveFile"); + } + + /** + * Subscribe to changes on a file (files.watch) + * + * @param string $fileId The ID for the file in question. + * @param Google_Channel $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool acknowledgeAbuse Whether the user is acknowledging the risk + * of downloading known malware or other abusive files. + * @opt_param bool updateViewedDate Whether to update the view date after + * successfully retrieving the file. + * @opt_param string revisionId Specifies the Revision ID that should be + * downloaded. Ignored unless alt=media is specified. + * @opt_param string projection This parameter is deprecated and has no + * function. + * @return Google_Service_Drive_Channel + */ + public function watch($fileId, Google_Service_Drive_Channel $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('watch', array($params), "Google_Service_Drive_Channel"); + } +} + +/** + * The "parents" collection of methods. + * Typical usage is: + * + * $driveService = new Google_Service_Drive(...); + * $parents = $driveService->parents; + * + */ +class Google_Service_Drive_Parents_Resource extends Google_Service_Resource +{ + + /** + * Removes a parent from a file. (parents.delete) + * + * @param string $fileId The ID of the file. + * @param string $parentId The ID of the parent. + * @param array $optParams Optional parameters. + */ + public function delete($fileId, $parentId, $optParams = array()) + { + $params = array('fileId' => $fileId, 'parentId' => $parentId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * Gets a specific parent reference. (parents.get) + * + * @param string $fileId The ID of the file. + * @param string $parentId The ID of the parent. + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_ParentReference + */ + public function get($fileId, $parentId, $optParams = array()) + { + $params = array('fileId' => $fileId, 'parentId' => $parentId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Drive_ParentReference"); + } + + /** + * Adds a parent folder for a file. (parents.insert) + * + * @param string $fileId The ID of the file. + * @param Google_ParentReference $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_ParentReference + */ + public function insert($fileId, Google_Service_Drive_ParentReference $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Drive_ParentReference"); + } + + /** + * Lists a file's parents. (parents.listParents) + * + * @param string $fileId The ID of the file. + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_ParentList + */ + public function listParents($fileId, $optParams = array()) + { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Drive_ParentList"); + } +} + +/** + * The "permissions" collection of methods. + * Typical usage is: + * + * $driveService = new Google_Service_Drive(...); + * $permissions = $driveService->permissions; + * + */ +class Google_Service_Drive_Permissions_Resource extends Google_Service_Resource +{ + + /** + * Deletes a permission from a file. (permissions.delete) + * + * @param string $fileId The ID for the file. + * @param string $permissionId The ID for the permission. + * @param array $optParams Optional parameters. + */ + public function delete($fileId, $permissionId, $optParams = array()) + { + $params = array('fileId' => $fileId, 'permissionId' => $permissionId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * Gets a permission by ID. (permissions.get) + * + * @param string $fileId The ID for the file. + * @param string $permissionId The ID for the permission. + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_Permission + */ + public function get($fileId, $permissionId, $optParams = array()) + { + $params = array('fileId' => $fileId, 'permissionId' => $permissionId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Drive_Permission"); + } + + /** + * Returns the permission ID for an email address. (permissions.getIdForEmail) + * + * @param string $email The email address for which to return a permission ID + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_PermissionId + */ + public function getIdForEmail($email, $optParams = array()) + { + $params = array('email' => $email); + $params = array_merge($params, $optParams); + return $this->call('getIdForEmail', array($params), "Google_Service_Drive_PermissionId"); + } + + /** + * Inserts a permission for a file. (permissions.insert) + * + * @param string $fileId The ID for the file. + * @param Google_Permission $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string emailMessage A custom message to include in notification + * emails. + * @opt_param bool sendNotificationEmails Whether to send notification emails + * when sharing to users or groups. This parameter is ignored and an email is + * sent if the role is owner. + * @return Google_Service_Drive_Permission + */ + public function insert($fileId, Google_Service_Drive_Permission $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Drive_Permission"); + } + + /** + * Lists a file's permissions. (permissions.listPermissions) + * + * @param string $fileId The ID for the file. + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_PermissionList + */ + public function listPermissions($fileId, $optParams = array()) + { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Drive_PermissionList"); + } + + /** + * Updates a permission. This method supports patch semantics. + * (permissions.patch) + * + * @param string $fileId The ID for the file. + * @param string $permissionId The ID for the permission. + * @param Google_Permission $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool transferOwnership Whether changing a role to 'owner' + * downgrades the current owners to writers. Does nothing if the specified role + * is not 'owner'. + * @return Google_Service_Drive_Permission + */ + public function patch($fileId, $permissionId, Google_Service_Drive_Permission $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'permissionId' => $permissionId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Drive_Permission"); + } + + /** + * Updates a permission. (permissions.update) + * + * @param string $fileId The ID for the file. + * @param string $permissionId The ID for the permission. + * @param Google_Permission $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool transferOwnership Whether changing a role to 'owner' + * downgrades the current owners to writers. Does nothing if the specified role + * is not 'owner'. + * @return Google_Service_Drive_Permission + */ + public function update($fileId, $permissionId, Google_Service_Drive_Permission $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'permissionId' => $permissionId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Drive_Permission"); + } +} + +/** + * The "properties" collection of methods. + * Typical usage is: + * + * $driveService = new Google_Service_Drive(...); + * $properties = $driveService->properties; + * + */ +class Google_Service_Drive_Properties_Resource extends Google_Service_Resource +{ + + /** + * Deletes a property. (properties.delete) + * + * @param string $fileId The ID of the file. + * @param string $propertyKey The key of the property. + * @param array $optParams Optional parameters. + * + * @opt_param string visibility The visibility of the property. + */ + public function delete($fileId, $propertyKey, $optParams = array()) + { + $params = array('fileId' => $fileId, 'propertyKey' => $propertyKey); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * Gets a property by its key. (properties.get) + * + * @param string $fileId The ID of the file. + * @param string $propertyKey The key of the property. + * @param array $optParams Optional parameters. + * + * @opt_param string visibility The visibility of the property. + * @return Google_Service_Drive_Property + */ + public function get($fileId, $propertyKey, $optParams = array()) + { + $params = array('fileId' => $fileId, 'propertyKey' => $propertyKey); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Drive_Property"); + } + + /** + * Adds a property to a file. (properties.insert) + * + * @param string $fileId The ID of the file. + * @param Google_Property $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_Property + */ + public function insert($fileId, Google_Service_Drive_Property $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Drive_Property"); + } + + /** + * Lists a file's properties. (properties.listProperties) + * + * @param string $fileId The ID of the file. + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_PropertyList + */ + public function listProperties($fileId, $optParams = array()) + { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Drive_PropertyList"); + } + + /** + * Updates a property. This method supports patch semantics. (properties.patch) + * + * @param string $fileId The ID of the file. + * @param string $propertyKey The key of the property. + * @param Google_Property $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string visibility The visibility of the property. + * @return Google_Service_Drive_Property + */ + public function patch($fileId, $propertyKey, Google_Service_Drive_Property $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'propertyKey' => $propertyKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Drive_Property"); + } + + /** + * Updates a property. (properties.update) + * + * @param string $fileId The ID of the file. + * @param string $propertyKey The key of the property. + * @param Google_Property $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string visibility The visibility of the property. + * @return Google_Service_Drive_Property + */ + public function update($fileId, $propertyKey, Google_Service_Drive_Property $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'propertyKey' => $propertyKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Drive_Property"); + } +} + +/** + * The "realtime" collection of methods. + * Typical usage is: + * + * $driveService = new Google_Service_Drive(...); + * $realtime = $driveService->realtime; + * + */ +class Google_Service_Drive_Realtime_Resource extends Google_Service_Resource +{ + + /** + * Exports the contents of the Realtime API data model associated with this file + * as JSON. (realtime.get) + * + * @param string $fileId The ID of the file that the Realtime API data model is + * associated with. + * @param array $optParams Optional parameters. + * + * @opt_param int revision The revision of the Realtime API data model to + * export. Revisions start at 1 (the initial empty data model) and are + * incremented with each change. If this parameter is excluded, the most recent + * data model will be returned. + */ + public function get($fileId, $optParams = array()) + { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params)); + } + + /** + * Overwrites the Realtime API data model associated with this file with the + * provided JSON data model. (realtime.update) + * + * @param string $fileId The ID of the file that the Realtime API data model is + * associated with. + * @param array $optParams Optional parameters. + * + * @opt_param string baseRevision The revision of the model to diff the uploaded + * model against. If set, the uploaded model is diffed against the provided + * revision and those differences are merged with any changes made to the model + * after the provided revision. If not set, the uploaded model replaces the + * current model on the server. + */ + public function update($fileId, $optParams = array()) + { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + return $this->call('update', array($params)); + } +} + +/** + * The "replies" collection of methods. + * Typical usage is: + * + * $driveService = new Google_Service_Drive(...); + * $replies = $driveService->replies; + * + */ +class Google_Service_Drive_Replies_Resource extends Google_Service_Resource +{ + + /** + * Deletes a reply. (replies.delete) + * + * @param string $fileId The ID of the file. + * @param string $commentId The ID of the comment. + * @param string $replyId The ID of the reply. + * @param array $optParams Optional parameters. + */ + public function delete($fileId, $commentId, $replyId, $optParams = array()) + { + $params = array('fileId' => $fileId, 'commentId' => $commentId, 'replyId' => $replyId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * Gets a reply. (replies.get) + * + * @param string $fileId The ID of the file. + * @param string $commentId The ID of the comment. + * @param string $replyId The ID of the reply. + * @param array $optParams Optional parameters. + * + * @opt_param bool includeDeleted If set, this will succeed when retrieving a + * deleted reply. + * @return Google_Service_Drive_CommentReply + */ + public function get($fileId, $commentId, $replyId, $optParams = array()) + { + $params = array('fileId' => $fileId, 'commentId' => $commentId, 'replyId' => $replyId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Drive_CommentReply"); + } + + /** + * Creates a new reply to the given comment. (replies.insert) + * + * @param string $fileId The ID of the file. + * @param string $commentId The ID of the comment. + * @param Google_CommentReply $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_CommentReply + */ + public function insert($fileId, $commentId, Google_Service_Drive_CommentReply $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'commentId' => $commentId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Drive_CommentReply"); + } + + /** + * Lists all of the replies to a comment. (replies.listReplies) + * + * @param string $fileId The ID of the file. + * @param string $commentId The ID of the comment. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken The continuation token, used to page through + * large result sets. To get the next page of results, set this parameter to the + * value of "nextPageToken" from the previous response. + * @opt_param bool includeDeleted If set, all replies, including deleted replies + * (with content stripped) will be returned. + * @opt_param int maxResults The maximum number of replies to include in the + * response, used for paging. + * @return Google_Service_Drive_CommentReplyList + */ + public function listReplies($fileId, $commentId, $optParams = array()) + { + $params = array('fileId' => $fileId, 'commentId' => $commentId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Drive_CommentReplyList"); + } + + /** + * Updates an existing reply. This method supports patch semantics. + * (replies.patch) + * + * @param string $fileId The ID of the file. + * @param string $commentId The ID of the comment. + * @param string $replyId The ID of the reply. + * @param Google_CommentReply $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_CommentReply + */ + public function patch($fileId, $commentId, $replyId, Google_Service_Drive_CommentReply $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'commentId' => $commentId, 'replyId' => $replyId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Drive_CommentReply"); + } + + /** + * Updates an existing reply. (replies.update) + * + * @param string $fileId The ID of the file. + * @param string $commentId The ID of the comment. + * @param string $replyId The ID of the reply. + * @param Google_CommentReply $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_CommentReply + */ + public function update($fileId, $commentId, $replyId, Google_Service_Drive_CommentReply $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'commentId' => $commentId, 'replyId' => $replyId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Drive_CommentReply"); + } +} + +/** + * The "revisions" collection of methods. + * Typical usage is: + * + * $driveService = new Google_Service_Drive(...); + * $revisions = $driveService->revisions; + * + */ +class Google_Service_Drive_Revisions_Resource extends Google_Service_Resource +{ + + /** + * Removes a revision. (revisions.delete) + * + * @param string $fileId The ID of the file. + * @param string $revisionId The ID of the revision. + * @param array $optParams Optional parameters. + */ + public function delete($fileId, $revisionId, $optParams = array()) + { + $params = array('fileId' => $fileId, 'revisionId' => $revisionId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * Gets a specific revision. (revisions.get) + * + * @param string $fileId The ID of the file. + * @param string $revisionId The ID of the revision. + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_Revision + */ + public function get($fileId, $revisionId, $optParams = array()) + { + $params = array('fileId' => $fileId, 'revisionId' => $revisionId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Drive_Revision"); + } + + /** + * Lists a file's revisions. (revisions.listRevisions) + * + * @param string $fileId The ID of the file. + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_RevisionList + */ + public function listRevisions($fileId, $optParams = array()) + { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Drive_RevisionList"); + } + + /** + * Updates a revision. This method supports patch semantics. (revisions.patch) + * + * @param string $fileId The ID for the file. + * @param string $revisionId The ID for the revision. + * @param Google_Revision $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_Revision + */ + public function patch($fileId, $revisionId, Google_Service_Drive_Revision $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'revisionId' => $revisionId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Drive_Revision"); + } + + /** + * Updates a revision. (revisions.update) + * + * @param string $fileId The ID for the file. + * @param string $revisionId The ID for the revision. + * @param Google_Revision $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_Revision + */ + public function update($fileId, $revisionId, Google_Service_Drive_Revision $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'revisionId' => $revisionId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Drive_Revision"); + } +} + + + + +class Google_Service_Drive_About extends Google_Collection +{ + protected $collection_key = 'quotaBytesByService'; + protected $internal_gapi_mappings = array( + ); + protected $additionalRoleInfoType = 'Google_Service_Drive_AboutAdditionalRoleInfo'; + protected $additionalRoleInfoDataType = 'array'; + public $domainSharingPolicy; + public $etag; + protected $exportFormatsType = 'Google_Service_Drive_AboutExportFormats'; + protected $exportFormatsDataType = 'array'; + protected $featuresType = 'Google_Service_Drive_AboutFeatures'; + protected $featuresDataType = 'array'; + public $folderColorPalette; + protected $importFormatsType = 'Google_Service_Drive_AboutImportFormats'; + protected $importFormatsDataType = 'array'; + public $isCurrentAppInstalled; + public $kind; + public $languageCode; + public $largestChangeId; + protected $maxUploadSizesType = 'Google_Service_Drive_AboutMaxUploadSizes'; + protected $maxUploadSizesDataType = 'array'; + public $name; + public $permissionId; + protected $quotaBytesByServiceType = 'Google_Service_Drive_AboutQuotaBytesByService'; + protected $quotaBytesByServiceDataType = 'array'; + public $quotaBytesTotal; + public $quotaBytesUsed; + public $quotaBytesUsedAggregate; + public $quotaBytesUsedInTrash; + public $quotaType; + public $remainingChangeIds; + public $rootFolderId; + public $selfLink; + protected $userType = 'Google_Service_Drive_User'; + protected $userDataType = ''; + + + public function setAdditionalRoleInfo($additionalRoleInfo) + { + $this->additionalRoleInfo = $additionalRoleInfo; + } + public function getAdditionalRoleInfo() + { + return $this->additionalRoleInfo; + } + public function setDomainSharingPolicy($domainSharingPolicy) + { + $this->domainSharingPolicy = $domainSharingPolicy; + } + public function getDomainSharingPolicy() + { + return $this->domainSharingPolicy; + } + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setExportFormats($exportFormats) + { + $this->exportFormats = $exportFormats; + } + public function getExportFormats() + { + return $this->exportFormats; + } + public function setFeatures($features) + { + $this->features = $features; + } + public function getFeatures() + { + return $this->features; + } + public function setFolderColorPalette($folderColorPalette) + { + $this->folderColorPalette = $folderColorPalette; + } + public function getFolderColorPalette() + { + return $this->folderColorPalette; + } + public function setImportFormats($importFormats) + { + $this->importFormats = $importFormats; + } + public function getImportFormats() + { + return $this->importFormats; + } + public function setIsCurrentAppInstalled($isCurrentAppInstalled) + { + $this->isCurrentAppInstalled = $isCurrentAppInstalled; + } + public function getIsCurrentAppInstalled() + { + return $this->isCurrentAppInstalled; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setLanguageCode($languageCode) + { + $this->languageCode = $languageCode; + } + public function getLanguageCode() + { + return $this->languageCode; + } + public function setLargestChangeId($largestChangeId) + { + $this->largestChangeId = $largestChangeId; + } + public function getLargestChangeId() + { + return $this->largestChangeId; + } + public function setMaxUploadSizes($maxUploadSizes) + { + $this->maxUploadSizes = $maxUploadSizes; + } + public function getMaxUploadSizes() + { + return $this->maxUploadSizes; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setPermissionId($permissionId) + { + $this->permissionId = $permissionId; + } + public function getPermissionId() + { + return $this->permissionId; + } + public function setQuotaBytesByService($quotaBytesByService) + { + $this->quotaBytesByService = $quotaBytesByService; + } + public function getQuotaBytesByService() + { + return $this->quotaBytesByService; + } + public function setQuotaBytesTotal($quotaBytesTotal) + { + $this->quotaBytesTotal = $quotaBytesTotal; + } + public function getQuotaBytesTotal() + { + return $this->quotaBytesTotal; + } + public function setQuotaBytesUsed($quotaBytesUsed) + { + $this->quotaBytesUsed = $quotaBytesUsed; + } + public function getQuotaBytesUsed() + { + return $this->quotaBytesUsed; + } + public function setQuotaBytesUsedAggregate($quotaBytesUsedAggregate) + { + $this->quotaBytesUsedAggregate = $quotaBytesUsedAggregate; + } + public function getQuotaBytesUsedAggregate() + { + return $this->quotaBytesUsedAggregate; + } + public function setQuotaBytesUsedInTrash($quotaBytesUsedInTrash) + { + $this->quotaBytesUsedInTrash = $quotaBytesUsedInTrash; + } + public function getQuotaBytesUsedInTrash() + { + return $this->quotaBytesUsedInTrash; + } + public function setQuotaType($quotaType) + { + $this->quotaType = $quotaType; + } + public function getQuotaType() + { + return $this->quotaType; + } + public function setRemainingChangeIds($remainingChangeIds) + { + $this->remainingChangeIds = $remainingChangeIds; + } + public function getRemainingChangeIds() + { + return $this->remainingChangeIds; + } + public function setRootFolderId($rootFolderId) + { + $this->rootFolderId = $rootFolderId; + } + public function getRootFolderId() + { + return $this->rootFolderId; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } + public function setUser(Google_Service_Drive_User $user) + { + $this->user = $user; + } + public function getUser() + { + return $this->user; + } +} + +class Google_Service_Drive_AboutAdditionalRoleInfo extends Google_Collection +{ + protected $collection_key = 'roleSets'; + protected $internal_gapi_mappings = array( + ); + protected $roleSetsType = 'Google_Service_Drive_AboutAdditionalRoleInfoRoleSets'; + protected $roleSetsDataType = 'array'; + public $type; + + + public function setRoleSets($roleSets) + { + $this->roleSets = $roleSets; + } + public function getRoleSets() + { + return $this->roleSets; + } + public function setType($type) + { + $this->type = $type; + } + public function getType() + { + return $this->type; + } +} + +class Google_Service_Drive_AboutAdditionalRoleInfoRoleSets extends Google_Collection +{ + protected $collection_key = 'additionalRoles'; + protected $internal_gapi_mappings = array( + ); + public $additionalRoles; + public $primaryRole; + + + public function setAdditionalRoles($additionalRoles) + { + $this->additionalRoles = $additionalRoles; + } + public function getAdditionalRoles() + { + return $this->additionalRoles; + } + public function setPrimaryRole($primaryRole) + { + $this->primaryRole = $primaryRole; + } + public function getPrimaryRole() + { + return $this->primaryRole; + } +} + +class Google_Service_Drive_AboutExportFormats extends Google_Collection +{ + protected $collection_key = 'targets'; + protected $internal_gapi_mappings = array( + ); + public $source; + public $targets; + + + public function setSource($source) + { + $this->source = $source; + } + public function getSource() + { + return $this->source; + } + public function setTargets($targets) + { + $this->targets = $targets; + } + public function getTargets() + { + return $this->targets; + } +} + +class Google_Service_Drive_AboutFeatures extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $featureName; + public $featureRate; + + + public function setFeatureName($featureName) + { + $this->featureName = $featureName; + } + public function getFeatureName() + { + return $this->featureName; + } + public function setFeatureRate($featureRate) + { + $this->featureRate = $featureRate; + } + public function getFeatureRate() + { + return $this->featureRate; + } +} + +class Google_Service_Drive_AboutImportFormats extends Google_Collection +{ + protected $collection_key = 'targets'; + protected $internal_gapi_mappings = array( + ); + public $source; + public $targets; + + + public function setSource($source) + { + $this->source = $source; + } + public function getSource() + { + return $this->source; + } + public function setTargets($targets) + { + $this->targets = $targets; + } + public function getTargets() + { + return $this->targets; + } +} + +class Google_Service_Drive_AboutMaxUploadSizes extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $size; + public $type; + + + public function setSize($size) + { + $this->size = $size; + } + public function getSize() + { + return $this->size; + } + public function setType($type) + { + $this->type = $type; + } + public function getType() + { + return $this->type; + } +} + +class Google_Service_Drive_AboutQuotaBytesByService extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $bytesUsed; + public $serviceName; + + + public function setBytesUsed($bytesUsed) + { + $this->bytesUsed = $bytesUsed; + } + public function getBytesUsed() + { + return $this->bytesUsed; + } + public function setServiceName($serviceName) + { + $this->serviceName = $serviceName; + } + public function getServiceName() + { + return $this->serviceName; + } +} + +class Google_Service_Drive_App extends Google_Collection +{ + protected $collection_key = 'secondaryMimeTypes'; + protected $internal_gapi_mappings = array( + ); + public $authorized; + public $createInFolderTemplate; + public $createUrl; + public $hasDriveWideScope; + protected $iconsType = 'Google_Service_Drive_AppIcons'; + protected $iconsDataType = 'array'; + public $id; + public $installed; + public $kind; + public $longDescription; + public $name; + public $objectType; + public $openUrlTemplate; + public $primaryFileExtensions; + public $primaryMimeTypes; + public $productId; + public $productUrl; + public $secondaryFileExtensions; + public $secondaryMimeTypes; + public $shortDescription; + public $supportsCreate; + public $supportsImport; + public $supportsMultiOpen; + public $supportsOfflineCreate; + public $useByDefault; + + + public function setAuthorized($authorized) + { + $this->authorized = $authorized; + } + public function getAuthorized() + { + return $this->authorized; + } + public function setCreateInFolderTemplate($createInFolderTemplate) + { + $this->createInFolderTemplate = $createInFolderTemplate; + } + public function getCreateInFolderTemplate() + { + return $this->createInFolderTemplate; + } + public function setCreateUrl($createUrl) + { + $this->createUrl = $createUrl; + } + public function getCreateUrl() + { + return $this->createUrl; + } + public function setHasDriveWideScope($hasDriveWideScope) + { + $this->hasDriveWideScope = $hasDriveWideScope; + } + public function getHasDriveWideScope() + { + return $this->hasDriveWideScope; + } + public function setIcons($icons) + { + $this->icons = $icons; + } + public function getIcons() + { + return $this->icons; + } + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setInstalled($installed) + { + $this->installed = $installed; + } + public function getInstalled() + { + return $this->installed; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setLongDescription($longDescription) + { + $this->longDescription = $longDescription; + } + public function getLongDescription() + { + return $this->longDescription; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setObjectType($objectType) + { + $this->objectType = $objectType; + } + public function getObjectType() + { + return $this->objectType; + } + public function setOpenUrlTemplate($openUrlTemplate) + { + $this->openUrlTemplate = $openUrlTemplate; + } + public function getOpenUrlTemplate() + { + return $this->openUrlTemplate; + } + public function setPrimaryFileExtensions($primaryFileExtensions) + { + $this->primaryFileExtensions = $primaryFileExtensions; + } + public function getPrimaryFileExtensions() + { + return $this->primaryFileExtensions; + } + public function setPrimaryMimeTypes($primaryMimeTypes) + { + $this->primaryMimeTypes = $primaryMimeTypes; + } + public function getPrimaryMimeTypes() + { + return $this->primaryMimeTypes; + } + public function setProductId($productId) + { + $this->productId = $productId; + } + public function getProductId() + { + return $this->productId; + } + public function setProductUrl($productUrl) + { + $this->productUrl = $productUrl; + } + public function getProductUrl() + { + return $this->productUrl; + } + public function setSecondaryFileExtensions($secondaryFileExtensions) + { + $this->secondaryFileExtensions = $secondaryFileExtensions; + } + public function getSecondaryFileExtensions() + { + return $this->secondaryFileExtensions; + } + public function setSecondaryMimeTypes($secondaryMimeTypes) + { + $this->secondaryMimeTypes = $secondaryMimeTypes; + } + public function getSecondaryMimeTypes() + { + return $this->secondaryMimeTypes; + } + public function setShortDescription($shortDescription) + { + $this->shortDescription = $shortDescription; + } + public function getShortDescription() + { + return $this->shortDescription; + } + public function setSupportsCreate($supportsCreate) + { + $this->supportsCreate = $supportsCreate; + } + public function getSupportsCreate() + { + return $this->supportsCreate; + } + public function setSupportsImport($supportsImport) + { + $this->supportsImport = $supportsImport; + } + public function getSupportsImport() + { + return $this->supportsImport; + } + public function setSupportsMultiOpen($supportsMultiOpen) + { + $this->supportsMultiOpen = $supportsMultiOpen; + } + public function getSupportsMultiOpen() + { + return $this->supportsMultiOpen; + } + public function setSupportsOfflineCreate($supportsOfflineCreate) + { + $this->supportsOfflineCreate = $supportsOfflineCreate; + } + public function getSupportsOfflineCreate() + { + return $this->supportsOfflineCreate; + } + public function setUseByDefault($useByDefault) + { + $this->useByDefault = $useByDefault; + } + public function getUseByDefault() + { + return $this->useByDefault; + } +} + +class Google_Service_Drive_AppIcons extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $category; + public $iconUrl; + public $size; + + + public function setCategory($category) + { + $this->category = $category; + } + public function getCategory() + { + return $this->category; + } + public function setIconUrl($iconUrl) + { + $this->iconUrl = $iconUrl; + } + public function getIconUrl() + { + return $this->iconUrl; + } + public function setSize($size) + { + $this->size = $size; + } + public function getSize() + { + return $this->size; + } +} + +class Google_Service_Drive_AppList extends Google_Collection +{ + protected $collection_key = 'items'; + protected $internal_gapi_mappings = array( + ); + public $defaultAppIds; + public $etag; + protected $itemsType = 'Google_Service_Drive_App'; + protected $itemsDataType = 'array'; + public $kind; + public $selfLink; + + + public function setDefaultAppIds($defaultAppIds) + { + $this->defaultAppIds = $defaultAppIds; + } + public function getDefaultAppIds() + { + return $this->defaultAppIds; + } + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setItems($items) + { + $this->items = $items; + } + public function getItems() + { + return $this->items; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Drive_Change extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $deleted; + protected $fileType = 'Google_Service_Drive_DriveFile'; + protected $fileDataType = ''; + public $fileId; + public $id; + public $kind; + public $modificationDate; + public $selfLink; + + + public function setDeleted($deleted) + { + $this->deleted = $deleted; + } + public function getDeleted() + { + return $this->deleted; + } + public function setFile(Google_Service_Drive_DriveFile $file) + { + $this->file = $file; + } + public function getFile() + { + return $this->file; + } + public function setFileId($fileId) + { + $this->fileId = $fileId; + } + public function getFileId() + { + return $this->fileId; + } + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setModificationDate($modificationDate) + { + $this->modificationDate = $modificationDate; + } + public function getModificationDate() + { + return $this->modificationDate; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Drive_ChangeList extends Google_Collection +{ + protected $collection_key = 'items'; + protected $internal_gapi_mappings = array( + ); + public $etag; + protected $itemsType = 'Google_Service_Drive_Change'; + protected $itemsDataType = 'array'; + public $kind; + public $largestChangeId; + public $nextLink; + public $nextPageToken; + public $selfLink; + + + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setItems($items) + { + $this->items = $items; + } + public function getItems() + { + return $this->items; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setLargestChangeId($largestChangeId) + { + $this->largestChangeId = $largestChangeId; + } + public function getLargestChangeId() + { + return $this->largestChangeId; + } + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + public function getNextLink() + { + return $this->nextLink; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Drive_Channel extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $address; + public $expiration; + public $id; + public $kind; + public $params; + public $payload; + public $resourceId; + public $resourceUri; + public $token; + public $type; + + + public function setAddress($address) + { + $this->address = $address; + } + public function getAddress() + { + return $this->address; + } + public function setExpiration($expiration) + { + $this->expiration = $expiration; + } + public function getExpiration() + { + return $this->expiration; + } + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setParams($params) + { + $this->params = $params; + } + public function getParams() + { + return $this->params; + } + public function setPayload($payload) + { + $this->payload = $payload; + } + public function getPayload() + { + return $this->payload; + } + public function setResourceId($resourceId) + { + $this->resourceId = $resourceId; + } + public function getResourceId() + { + return $this->resourceId; + } + public function setResourceUri($resourceUri) + { + $this->resourceUri = $resourceUri; + } + public function getResourceUri() + { + return $this->resourceUri; + } + public function setToken($token) + { + $this->token = $token; + } + public function getToken() + { + return $this->token; + } + public function setType($type) + { + $this->type = $type; + } + public function getType() + { + return $this->type; + } +} + +class Google_Service_Drive_ChannelParams extends Google_Model +{ +} + +class Google_Service_Drive_ChildList extends Google_Collection +{ + protected $collection_key = 'items'; + protected $internal_gapi_mappings = array( + ); + public $etag; + protected $itemsType = 'Google_Service_Drive_ChildReference'; + protected $itemsDataType = 'array'; + public $kind; + public $nextLink; + public $nextPageToken; + public $selfLink; + + + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setItems($items) + { + $this->items = $items; + } + public function getItems() + { + return $this->items; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + public function getNextLink() + { + return $this->nextLink; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Drive_ChildReference extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $childLink; + public $id; + public $kind; + public $selfLink; + + + public function setChildLink($childLink) + { + $this->childLink = $childLink; + } + public function getChildLink() + { + return $this->childLink; + } + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Drive_Comment extends Google_Collection +{ + protected $collection_key = 'replies'; + protected $internal_gapi_mappings = array( + ); + public $anchor; + protected $authorType = 'Google_Service_Drive_User'; + protected $authorDataType = ''; + public $commentId; + public $content; + protected $contextType = 'Google_Service_Drive_CommentContext'; + protected $contextDataType = ''; + public $createdDate; + public $deleted; + public $fileId; + public $fileTitle; + public $htmlContent; + public $kind; + public $modifiedDate; + protected $repliesType = 'Google_Service_Drive_CommentReply'; + protected $repliesDataType = 'array'; + public $selfLink; + public $status; + + + public function setAnchor($anchor) + { + $this->anchor = $anchor; + } + public function getAnchor() + { + return $this->anchor; + } + public function setAuthor(Google_Service_Drive_User $author) + { + $this->author = $author; + } + public function getAuthor() + { + return $this->author; + } + public function setCommentId($commentId) + { + $this->commentId = $commentId; + } + public function getCommentId() + { + return $this->commentId; + } + public function setContent($content) + { + $this->content = $content; + } + public function getContent() + { + return $this->content; + } + public function setContext(Google_Service_Drive_CommentContext $context) + { + $this->context = $context; + } + public function getContext() + { + return $this->context; + } + public function setCreatedDate($createdDate) + { + $this->createdDate = $createdDate; + } + public function getCreatedDate() + { + return $this->createdDate; + } + public function setDeleted($deleted) + { + $this->deleted = $deleted; + } + public function getDeleted() + { + return $this->deleted; + } + public function setFileId($fileId) + { + $this->fileId = $fileId; + } + public function getFileId() + { + return $this->fileId; + } + public function setFileTitle($fileTitle) + { + $this->fileTitle = $fileTitle; + } + public function getFileTitle() + { + return $this->fileTitle; + } + public function setHtmlContent($htmlContent) + { + $this->htmlContent = $htmlContent; + } + public function getHtmlContent() + { + return $this->htmlContent; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setModifiedDate($modifiedDate) + { + $this->modifiedDate = $modifiedDate; + } + public function getModifiedDate() + { + return $this->modifiedDate; + } + public function setReplies($replies) + { + $this->replies = $replies; + } + public function getReplies() + { + return $this->replies; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } + public function setStatus($status) + { + $this->status = $status; + } + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_Drive_CommentContext extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $type; + public $value; + + + public function setType($type) + { + $this->type = $type; + } + public function getType() + { + return $this->type; + } + public function setValue($value) + { + $this->value = $value; + } + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Drive_CommentList extends Google_Collection +{ + protected $collection_key = 'items'; + protected $internal_gapi_mappings = array( + ); + protected $itemsType = 'Google_Service_Drive_Comment'; + protected $itemsDataType = 'array'; + public $kind; + public $nextLink; + public $nextPageToken; + public $selfLink; + + + public function setItems($items) + { + $this->items = $items; + } + public function getItems() + { + return $this->items; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + public function getNextLink() + { + return $this->nextLink; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Drive_CommentReply extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + protected $authorType = 'Google_Service_Drive_User'; + protected $authorDataType = ''; + public $content; + public $createdDate; + public $deleted; + public $htmlContent; + public $kind; + public $modifiedDate; + public $replyId; + public $verb; + + + public function setAuthor(Google_Service_Drive_User $author) + { + $this->author = $author; + } + public function getAuthor() + { + return $this->author; + } + public function setContent($content) + { + $this->content = $content; + } + public function getContent() + { + return $this->content; + } + public function setCreatedDate($createdDate) + { + $this->createdDate = $createdDate; + } + public function getCreatedDate() + { + return $this->createdDate; + } + public function setDeleted($deleted) + { + $this->deleted = $deleted; + } + public function getDeleted() + { + return $this->deleted; + } + public function setHtmlContent($htmlContent) + { + $this->htmlContent = $htmlContent; + } + public function getHtmlContent() + { + return $this->htmlContent; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setModifiedDate($modifiedDate) + { + $this->modifiedDate = $modifiedDate; + } + public function getModifiedDate() + { + return $this->modifiedDate; + } + public function setReplyId($replyId) + { + $this->replyId = $replyId; + } + public function getReplyId() + { + return $this->replyId; + } + public function setVerb($verb) + { + $this->verb = $verb; + } + public function getVerb() + { + return $this->verb; + } +} + +class Google_Service_Drive_CommentReplyList extends Google_Collection +{ + protected $collection_key = 'items'; + protected $internal_gapi_mappings = array( + ); + protected $itemsType = 'Google_Service_Drive_CommentReply'; + protected $itemsDataType = 'array'; + public $kind; + public $nextLink; + public $nextPageToken; + public $selfLink; + + + public function setItems($items) + { + $this->items = $items; + } + public function getItems() + { + return $this->items; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + public function getNextLink() + { + return $this->nextLink; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Drive_DriveFile extends Google_Collection +{ + protected $collection_key = 'properties'; + protected $internal_gapi_mappings = array( + ); + public $alternateLink; + public $appDataContents; + public $copyable; + public $createdDate; + public $defaultOpenWithLink; + public $description; + public $downloadUrl; + public $editable; + public $embedLink; + public $etag; + public $explicitlyTrashed; + public $exportLinks; + public $fileExtension; + public $fileSize; + public $folderColorRgb; + public $headRevisionId; + public $iconLink; + public $id; + protected $imageMediaMetadataType = 'Google_Service_Drive_DriveFileImageMediaMetadata'; + protected $imageMediaMetadataDataType = ''; + protected $indexableTextType = 'Google_Service_Drive_DriveFileIndexableText'; + protected $indexableTextDataType = ''; + public $kind; + protected $labelsType = 'Google_Service_Drive_DriveFileLabels'; + protected $labelsDataType = ''; + protected $lastModifyingUserType = 'Google_Service_Drive_User'; + protected $lastModifyingUserDataType = ''; + public $lastModifyingUserName; + public $lastViewedByMeDate; + public $markedViewedByMeDate; + public $md5Checksum; + public $mimeType; + public $modifiedByMeDate; + public $modifiedDate; + public $openWithLinks; + public $originalFilename; + public $ownerNames; + protected $ownersType = 'Google_Service_Drive_User'; + protected $ownersDataType = 'array'; + protected $parentsType = 'Google_Service_Drive_ParentReference'; + protected $parentsDataType = 'array'; + protected $permissionsType = 'Google_Service_Drive_Permission'; + protected $permissionsDataType = 'array'; + protected $propertiesType = 'Google_Service_Drive_Property'; + protected $propertiesDataType = 'array'; + public $quotaBytesUsed; + public $selfLink; + public $shared; + public $sharedWithMeDate; + protected $sharingUserType = 'Google_Service_Drive_User'; + protected $sharingUserDataType = ''; + protected $thumbnailType = 'Google_Service_Drive_DriveFileThumbnail'; + protected $thumbnailDataType = ''; + public $thumbnailLink; + public $title; + protected $userPermissionType = 'Google_Service_Drive_Permission'; + protected $userPermissionDataType = ''; + public $version; + protected $videoMediaMetadataType = 'Google_Service_Drive_DriveFileVideoMediaMetadata'; + protected $videoMediaMetadataDataType = ''; + public $webContentLink; + public $webViewLink; + public $writersCanShare; + + + public function setAlternateLink($alternateLink) + { + $this->alternateLink = $alternateLink; + } + public function getAlternateLink() + { + return $this->alternateLink; + } + public function setAppDataContents($appDataContents) + { + $this->appDataContents = $appDataContents; + } + public function getAppDataContents() + { + return $this->appDataContents; + } + public function setCopyable($copyable) + { + $this->copyable = $copyable; + } + public function getCopyable() + { + return $this->copyable; + } + public function setCreatedDate($createdDate) + { + $this->createdDate = $createdDate; + } + public function getCreatedDate() + { + return $this->createdDate; + } + public function setDefaultOpenWithLink($defaultOpenWithLink) + { + $this->defaultOpenWithLink = $defaultOpenWithLink; + } + public function getDefaultOpenWithLink() + { + return $this->defaultOpenWithLink; + } + public function setDescription($description) + { + $this->description = $description; + } + public function getDescription() + { + return $this->description; + } + public function setDownloadUrl($downloadUrl) + { + $this->downloadUrl = $downloadUrl; + } + public function getDownloadUrl() + { + return $this->downloadUrl; + } + public function setEditable($editable) + { + $this->editable = $editable; + } + public function getEditable() + { + return $this->editable; + } + public function setEmbedLink($embedLink) + { + $this->embedLink = $embedLink; + } + public function getEmbedLink() + { + return $this->embedLink; + } + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setExplicitlyTrashed($explicitlyTrashed) + { + $this->explicitlyTrashed = $explicitlyTrashed; + } + public function getExplicitlyTrashed() + { + return $this->explicitlyTrashed; + } + public function setExportLinks($exportLinks) + { + $this->exportLinks = $exportLinks; + } + public function getExportLinks() + { + return $this->exportLinks; + } + public function setFileExtension($fileExtension) + { + $this->fileExtension = $fileExtension; + } + public function getFileExtension() + { + return $this->fileExtension; + } + public function setFileSize($fileSize) + { + $this->fileSize = $fileSize; + } + public function getFileSize() + { + return $this->fileSize; + } + public function setFolderColorRgb($folderColorRgb) + { + $this->folderColorRgb = $folderColorRgb; + } + public function getFolderColorRgb() + { + return $this->folderColorRgb; + } + public function setHeadRevisionId($headRevisionId) + { + $this->headRevisionId = $headRevisionId; + } + public function getHeadRevisionId() + { + return $this->headRevisionId; + } + public function setIconLink($iconLink) + { + $this->iconLink = $iconLink; + } + public function getIconLink() + { + return $this->iconLink; + } + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setImageMediaMetadata(Google_Service_Drive_DriveFileImageMediaMetadata $imageMediaMetadata) + { + $this->imageMediaMetadata = $imageMediaMetadata; + } + public function getImageMediaMetadata() + { + return $this->imageMediaMetadata; + } + public function setIndexableText(Google_Service_Drive_DriveFileIndexableText $indexableText) + { + $this->indexableText = $indexableText; + } + public function getIndexableText() + { + return $this->indexableText; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setLabels(Google_Service_Drive_DriveFileLabels $labels) + { + $this->labels = $labels; + } + public function getLabels() + { + return $this->labels; + } + public function setLastModifyingUser(Google_Service_Drive_User $lastModifyingUser) + { + $this->lastModifyingUser = $lastModifyingUser; + } + public function getLastModifyingUser() + { + return $this->lastModifyingUser; + } + public function setLastModifyingUserName($lastModifyingUserName) + { + $this->lastModifyingUserName = $lastModifyingUserName; + } + public function getLastModifyingUserName() + { + return $this->lastModifyingUserName; + } + public function setLastViewedByMeDate($lastViewedByMeDate) + { + $this->lastViewedByMeDate = $lastViewedByMeDate; + } + public function getLastViewedByMeDate() + { + return $this->lastViewedByMeDate; + } + public function setMarkedViewedByMeDate($markedViewedByMeDate) + { + $this->markedViewedByMeDate = $markedViewedByMeDate; + } + public function getMarkedViewedByMeDate() + { + return $this->markedViewedByMeDate; + } + public function setMd5Checksum($md5Checksum) + { + $this->md5Checksum = $md5Checksum; + } + public function getMd5Checksum() + { + return $this->md5Checksum; + } + public function setMimeType($mimeType) + { + $this->mimeType = $mimeType; + } + public function getMimeType() + { + return $this->mimeType; + } + public function setModifiedByMeDate($modifiedByMeDate) + { + $this->modifiedByMeDate = $modifiedByMeDate; + } + public function getModifiedByMeDate() + { + return $this->modifiedByMeDate; + } + public function setModifiedDate($modifiedDate) + { + $this->modifiedDate = $modifiedDate; + } + public function getModifiedDate() + { + return $this->modifiedDate; + } + public function setOpenWithLinks($openWithLinks) + { + $this->openWithLinks = $openWithLinks; + } + public function getOpenWithLinks() + { + return $this->openWithLinks; + } + public function setOriginalFilename($originalFilename) + { + $this->originalFilename = $originalFilename; + } + public function getOriginalFilename() + { + return $this->originalFilename; + } + public function setOwnerNames($ownerNames) + { + $this->ownerNames = $ownerNames; + } + public function getOwnerNames() + { + return $this->ownerNames; + } + public function setOwners($owners) + { + $this->owners = $owners; + } + public function getOwners() + { + return $this->owners; + } + public function setParents($parents) + { + $this->parents = $parents; + } + public function getParents() + { + return $this->parents; + } + public function setPermissions($permissions) + { + $this->permissions = $permissions; + } + public function getPermissions() + { + return $this->permissions; + } + public function setProperties($properties) + { + $this->properties = $properties; + } + public function getProperties() + { + return $this->properties; + } + public function setQuotaBytesUsed($quotaBytesUsed) + { + $this->quotaBytesUsed = $quotaBytesUsed; + } + public function getQuotaBytesUsed() + { + return $this->quotaBytesUsed; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } + public function setShared($shared) + { + $this->shared = $shared; + } + public function getShared() + { + return $this->shared; + } + public function setSharedWithMeDate($sharedWithMeDate) + { + $this->sharedWithMeDate = $sharedWithMeDate; + } + public function getSharedWithMeDate() + { + return $this->sharedWithMeDate; + } + public function setSharingUser(Google_Service_Drive_User $sharingUser) + { + $this->sharingUser = $sharingUser; + } + public function getSharingUser() + { + return $this->sharingUser; + } + public function setThumbnail(Google_Service_Drive_DriveFileThumbnail $thumbnail) + { + $this->thumbnail = $thumbnail; + } + public function getThumbnail() + { + return $this->thumbnail; + } + public function setThumbnailLink($thumbnailLink) + { + $this->thumbnailLink = $thumbnailLink; + } + public function getThumbnailLink() + { + return $this->thumbnailLink; + } + public function setTitle($title) + { + $this->title = $title; + } + public function getTitle() + { + return $this->title; + } + public function setUserPermission(Google_Service_Drive_Permission $userPermission) + { + $this->userPermission = $userPermission; + } + public function getUserPermission() + { + return $this->userPermission; + } + public function setVersion($version) + { + $this->version = $version; + } + public function getVersion() + { + return $this->version; + } + public function setVideoMediaMetadata(Google_Service_Drive_DriveFileVideoMediaMetadata $videoMediaMetadata) + { + $this->videoMediaMetadata = $videoMediaMetadata; + } + public function getVideoMediaMetadata() + { + return $this->videoMediaMetadata; + } + public function setWebContentLink($webContentLink) + { + $this->webContentLink = $webContentLink; + } + public function getWebContentLink() + { + return $this->webContentLink; + } + public function setWebViewLink($webViewLink) + { + $this->webViewLink = $webViewLink; + } + public function getWebViewLink() + { + return $this->webViewLink; + } + public function setWritersCanShare($writersCanShare) + { + $this->writersCanShare = $writersCanShare; + } + public function getWritersCanShare() + { + return $this->writersCanShare; + } +} + +class Google_Service_Drive_DriveFileExportLinks extends Google_Model +{ +} + +class Google_Service_Drive_DriveFileImageMediaMetadata extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $aperture; + public $cameraMake; + public $cameraModel; + public $colorSpace; + public $date; + public $exposureBias; + public $exposureMode; + public $exposureTime; + public $flashUsed; + public $focalLength; + public $height; + public $isoSpeed; + public $lens; + protected $locationType = 'Google_Service_Drive_DriveFileImageMediaMetadataLocation'; + protected $locationDataType = ''; + public $maxApertureValue; + public $meteringMode; + public $rotation; + public $sensor; + public $subjectDistance; + public $whiteBalance; + public $width; + + + public function setAperture($aperture) + { + $this->aperture = $aperture; + } + public function getAperture() + { + return $this->aperture; + } + public function setCameraMake($cameraMake) + { + $this->cameraMake = $cameraMake; + } + public function getCameraMake() + { + return $this->cameraMake; + } + public function setCameraModel($cameraModel) + { + $this->cameraModel = $cameraModel; + } + public function getCameraModel() + { + return $this->cameraModel; + } + public function setColorSpace($colorSpace) + { + $this->colorSpace = $colorSpace; + } + public function getColorSpace() + { + return $this->colorSpace; + } + public function setDate($date) + { + $this->date = $date; + } + public function getDate() + { + return $this->date; + } + public function setExposureBias($exposureBias) + { + $this->exposureBias = $exposureBias; + } + public function getExposureBias() + { + return $this->exposureBias; + } + public function setExposureMode($exposureMode) + { + $this->exposureMode = $exposureMode; + } + public function getExposureMode() + { + return $this->exposureMode; + } + public function setExposureTime($exposureTime) + { + $this->exposureTime = $exposureTime; + } + public function getExposureTime() + { + return $this->exposureTime; + } + public function setFlashUsed($flashUsed) + { + $this->flashUsed = $flashUsed; + } + public function getFlashUsed() + { + return $this->flashUsed; + } + public function setFocalLength($focalLength) + { + $this->focalLength = $focalLength; + } + public function getFocalLength() + { + return $this->focalLength; + } + public function setHeight($height) + { + $this->height = $height; + } + public function getHeight() + { + return $this->height; + } + public function setIsoSpeed($isoSpeed) + { + $this->isoSpeed = $isoSpeed; + } + public function getIsoSpeed() + { + return $this->isoSpeed; + } + public function setLens($lens) + { + $this->lens = $lens; + } + public function getLens() + { + return $this->lens; + } + public function setLocation(Google_Service_Drive_DriveFileImageMediaMetadataLocation $location) + { + $this->location = $location; + } + public function getLocation() + { + return $this->location; + } + public function setMaxApertureValue($maxApertureValue) + { + $this->maxApertureValue = $maxApertureValue; + } + public function getMaxApertureValue() + { + return $this->maxApertureValue; + } + public function setMeteringMode($meteringMode) + { + $this->meteringMode = $meteringMode; + } + public function getMeteringMode() + { + return $this->meteringMode; + } + public function setRotation($rotation) + { + $this->rotation = $rotation; + } + public function getRotation() + { + return $this->rotation; + } + public function setSensor($sensor) + { + $this->sensor = $sensor; + } + public function getSensor() + { + return $this->sensor; + } + public function setSubjectDistance($subjectDistance) + { + $this->subjectDistance = $subjectDistance; + } + public function getSubjectDistance() + { + return $this->subjectDistance; + } + public function setWhiteBalance($whiteBalance) + { + $this->whiteBalance = $whiteBalance; + } + public function getWhiteBalance() + { + return $this->whiteBalance; + } + public function setWidth($width) + { + $this->width = $width; + } + public function getWidth() + { + return $this->width; + } +} + +class Google_Service_Drive_DriveFileImageMediaMetadataLocation extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $altitude; + public $latitude; + public $longitude; + + + public function setAltitude($altitude) + { + $this->altitude = $altitude; + } + public function getAltitude() + { + return $this->altitude; + } + public function setLatitude($latitude) + { + $this->latitude = $latitude; + } + public function getLatitude() + { + return $this->latitude; + } + public function setLongitude($longitude) + { + $this->longitude = $longitude; + } + public function getLongitude() + { + return $this->longitude; + } +} + +class Google_Service_Drive_DriveFileIndexableText extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $text; + + + public function setText($text) + { + $this->text = $text; + } + public function getText() + { + return $this->text; + } +} + +class Google_Service_Drive_DriveFileLabels extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $hidden; + public $restricted; + public $starred; + public $trashed; + public $viewed; + + + public function setHidden($hidden) + { + $this->hidden = $hidden; + } + public function getHidden() + { + return $this->hidden; + } + public function setRestricted($restricted) + { + $this->restricted = $restricted; + } + public function getRestricted() + { + return $this->restricted; + } + public function setStarred($starred) + { + $this->starred = $starred; + } + public function getStarred() + { + return $this->starred; + } + public function setTrashed($trashed) + { + $this->trashed = $trashed; + } + public function getTrashed() + { + return $this->trashed; + } + public function setViewed($viewed) + { + $this->viewed = $viewed; + } + public function getViewed() + { + return $this->viewed; + } +} + +class Google_Service_Drive_DriveFileOpenWithLinks extends Google_Model +{ +} + +class Google_Service_Drive_DriveFileThumbnail extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $image; + public $mimeType; + + + public function setImage($image) + { + $this->image = $image; + } + public function getImage() + { + return $this->image; + } + public function setMimeType($mimeType) + { + $this->mimeType = $mimeType; + } + public function getMimeType() + { + return $this->mimeType; + } +} + +class Google_Service_Drive_DriveFileVideoMediaMetadata extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $durationMillis; + public $height; + public $width; + + + public function setDurationMillis($durationMillis) + { + $this->durationMillis = $durationMillis; + } + public function getDurationMillis() + { + return $this->durationMillis; + } + public function setHeight($height) + { + $this->height = $height; + } + public function getHeight() + { + return $this->height; + } + public function setWidth($width) + { + $this->width = $width; + } + public function getWidth() + { + return $this->width; + } +} + +class Google_Service_Drive_FileList extends Google_Collection +{ + protected $collection_key = 'items'; + protected $internal_gapi_mappings = array( + ); + public $etag; + protected $itemsType = 'Google_Service_Drive_DriveFile'; + protected $itemsDataType = 'array'; + public $kind; + public $nextLink; + public $nextPageToken; + public $selfLink; + + + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setItems($items) + { + $this->items = $items; + } + public function getItems() + { + return $this->items; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + public function getNextLink() + { + return $this->nextLink; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Drive_ParentList extends Google_Collection +{ + protected $collection_key = 'items'; + protected $internal_gapi_mappings = array( + ); + public $etag; + protected $itemsType = 'Google_Service_Drive_ParentReference'; + protected $itemsDataType = 'array'; + public $kind; + public $selfLink; + + + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setItems($items) + { + $this->items = $items; + } + public function getItems() + { + return $this->items; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Drive_ParentReference extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $id; + public $isRoot; + public $kind; + public $parentLink; + public $selfLink; + + + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setIsRoot($isRoot) + { + $this->isRoot = $isRoot; + } + public function getIsRoot() + { + return $this->isRoot; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setParentLink($parentLink) + { + $this->parentLink = $parentLink; + } + public function getParentLink() + { + return $this->parentLink; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Drive_Permission extends Google_Collection +{ + protected $collection_key = 'additionalRoles'; + protected $internal_gapi_mappings = array( + ); + public $additionalRoles; + public $authKey; + public $domain; + public $emailAddress; + public $etag; + public $id; + public $kind; + public $name; + public $photoLink; + public $role; + public $selfLink; + public $type; + public $value; + public $withLink; + + + public function setAdditionalRoles($additionalRoles) + { + $this->additionalRoles = $additionalRoles; + } + public function getAdditionalRoles() + { + return $this->additionalRoles; + } + public function setAuthKey($authKey) + { + $this->authKey = $authKey; + } + public function getAuthKey() + { + return $this->authKey; + } + public function setDomain($domain) + { + $this->domain = $domain; + } + public function getDomain() + { + return $this->domain; + } + public function setEmailAddress($emailAddress) + { + $this->emailAddress = $emailAddress; + } + public function getEmailAddress() + { + return $this->emailAddress; + } + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setPhotoLink($photoLink) + { + $this->photoLink = $photoLink; + } + public function getPhotoLink() + { + return $this->photoLink; + } + public function setRole($role) + { + $this->role = $role; + } + public function getRole() + { + return $this->role; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } + public function setType($type) + { + $this->type = $type; + } + public function getType() + { + return $this->type; + } + public function setValue($value) + { + $this->value = $value; + } + public function getValue() + { + return $this->value; + } + public function setWithLink($withLink) + { + $this->withLink = $withLink; + } + public function getWithLink() + { + return $this->withLink; + } +} + +class Google_Service_Drive_PermissionId extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $id; + public $kind; + + + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Drive_PermissionList extends Google_Collection +{ + protected $collection_key = 'items'; + protected $internal_gapi_mappings = array( + ); + public $etag; + protected $itemsType = 'Google_Service_Drive_Permission'; + protected $itemsDataType = 'array'; + public $kind; + public $selfLink; + + + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setItems($items) + { + $this->items = $items; + } + public function getItems() + { + return $this->items; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Drive_Property extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $etag; + public $key; + public $kind; + public $selfLink; + public $value; + public $visibility; + + + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setKey($key) + { + $this->key = $key; + } + public function getKey() + { + return $this->key; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } + public function setValue($value) + { + $this->value = $value; + } + public function getValue() + { + return $this->value; + } + public function setVisibility($visibility) + { + $this->visibility = $visibility; + } + public function getVisibility() + { + return $this->visibility; + } +} + +class Google_Service_Drive_PropertyList extends Google_Collection +{ + protected $collection_key = 'items'; + protected $internal_gapi_mappings = array( + ); + public $etag; + protected $itemsType = 'Google_Service_Drive_Property'; + protected $itemsDataType = 'array'; + public $kind; + public $selfLink; + + + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setItems($items) + { + $this->items = $items; + } + public function getItems() + { + return $this->items; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Drive_Revision extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $downloadUrl; + public $etag; + public $exportLinks; + public $fileSize; + public $id; + public $kind; + protected $lastModifyingUserType = 'Google_Service_Drive_User'; + protected $lastModifyingUserDataType = ''; + public $lastModifyingUserName; + public $md5Checksum; + public $mimeType; + public $modifiedDate; + public $originalFilename; + public $pinned; + public $publishAuto; + public $published; + public $publishedLink; + public $publishedOutsideDomain; + public $selfLink; + + + public function setDownloadUrl($downloadUrl) + { + $this->downloadUrl = $downloadUrl; + } + public function getDownloadUrl() + { + return $this->downloadUrl; + } + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setExportLinks($exportLinks) + { + $this->exportLinks = $exportLinks; + } + public function getExportLinks() + { + return $this->exportLinks; + } + public function setFileSize($fileSize) + { + $this->fileSize = $fileSize; + } + public function getFileSize() + { + return $this->fileSize; + } + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setLastModifyingUser(Google_Service_Drive_User $lastModifyingUser) + { + $this->lastModifyingUser = $lastModifyingUser; + } + public function getLastModifyingUser() + { + return $this->lastModifyingUser; + } + public function setLastModifyingUserName($lastModifyingUserName) + { + $this->lastModifyingUserName = $lastModifyingUserName; + } + public function getLastModifyingUserName() + { + return $this->lastModifyingUserName; + } + public function setMd5Checksum($md5Checksum) + { + $this->md5Checksum = $md5Checksum; + } + public function getMd5Checksum() + { + return $this->md5Checksum; + } + public function setMimeType($mimeType) + { + $this->mimeType = $mimeType; + } + public function getMimeType() + { + return $this->mimeType; + } + public function setModifiedDate($modifiedDate) + { + $this->modifiedDate = $modifiedDate; + } + public function getModifiedDate() + { + return $this->modifiedDate; + } + public function setOriginalFilename($originalFilename) + { + $this->originalFilename = $originalFilename; + } + public function getOriginalFilename() + { + return $this->originalFilename; + } + public function setPinned($pinned) + { + $this->pinned = $pinned; + } + public function getPinned() + { + return $this->pinned; + } + public function setPublishAuto($publishAuto) + { + $this->publishAuto = $publishAuto; + } + public function getPublishAuto() + { + return $this->publishAuto; + } + public function setPublished($published) + { + $this->published = $published; + } + public function getPublished() + { + return $this->published; + } + public function setPublishedLink($publishedLink) + { + $this->publishedLink = $publishedLink; + } + public function getPublishedLink() + { + return $this->publishedLink; + } + public function setPublishedOutsideDomain($publishedOutsideDomain) + { + $this->publishedOutsideDomain = $publishedOutsideDomain; + } + public function getPublishedOutsideDomain() + { + return $this->publishedOutsideDomain; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Drive_RevisionExportLinks extends Google_Model +{ +} + +class Google_Service_Drive_RevisionList extends Google_Collection +{ + protected $collection_key = 'items'; + protected $internal_gapi_mappings = array( + ); + public $etag; + protected $itemsType = 'Google_Service_Drive_Revision'; + protected $itemsDataType = 'array'; + public $kind; + public $selfLink; + + + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setItems($items) + { + $this->items = $items; + } + public function getItems() + { + return $this->items; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Drive_User extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $displayName; + public $emailAddress; + public $isAuthenticatedUser; + public $kind; + public $permissionId; + protected $pictureType = 'Google_Service_Drive_UserPicture'; + protected $pictureDataType = ''; + + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + public function getDisplayName() + { + return $this->displayName; + } + public function setEmailAddress($emailAddress) + { + $this->emailAddress = $emailAddress; + } + public function getEmailAddress() + { + return $this->emailAddress; + } + public function setIsAuthenticatedUser($isAuthenticatedUser) + { + $this->isAuthenticatedUser = $isAuthenticatedUser; + } + public function getIsAuthenticatedUser() + { + return $this->isAuthenticatedUser; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setPermissionId($permissionId) + { + $this->permissionId = $permissionId; + } + public function getPermissionId() + { + return $this->permissionId; + } + public function setPicture(Google_Service_Drive_UserPicture $picture) + { + $this->picture = $picture; + } + public function getPicture() + { + return $this->picture; + } +} + +class Google_Service_Drive_UserPicture extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $url; + + + public function setUrl($url) + { + $this->url = $url; + } + public function getUrl() + { + return $this->url; + } +} diff --git a/plugins/updraftplus/includes/Google/Service/Exception.php b/plugins/updraftplus/includes/Google/Service/Exception.php new file mode 100644 index 0000000..65c945b --- /dev/null +++ b/plugins/updraftplus/includes/Google/Service/Exception.php @@ -0,0 +1,105 @@ += 0) { + parent::__construct($message, $code, $previous); + } else { + parent::__construct($message, $code); + } + + $this->errors = $errors; + + if (is_array($retryMap)) { + $this->retryMap = $retryMap; + } + } + + /** + * An example of the possible errors returned. + * + * { + * "domain": "global", + * "reason": "authError", + * "message": "Invalid Credentials", + * "locationType": "header", + * "location": "Authorization", + * } + * + * @return [{string, string}] List of errors return in an HTTP response or []. + */ + public function getErrors() + { + return $this->errors; + } + + /** + * Gets the number of times the associated task can be retried. + * + * NOTE: -1 is returned if the task can be retried indefinitely + * + * @return integer + */ + public function allowedRetries() + { + if (isset($this->retryMap[$this->code])) { + return $this->retryMap[$this->code]; + } + + $errors = $this->getErrors(); + + if (!empty($errors) && isset($errors[0]['reason']) && + isset($this->retryMap[$errors[0]['reason']])) { + return $this->retryMap[$errors[0]['reason']]; + } + + return 0; + } +} diff --git a/plugins/updraftplus/includes/Google/Service/GroupsMigration.php b/plugins/updraftplus/includes/Google/Service/GroupsMigration.php new file mode 100644 index 0000000..6aea31c --- /dev/null +++ b/plugins/updraftplus/includes/Google/Service/GroupsMigration.php @@ -0,0 +1,129 @@ + + * Groups Migration Api.

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_GroupsMigration extends Google_Service +{ + /** Manage messages in groups on your domain. */ + const APPS_GROUPS_MIGRATION = + "https://www.googleapis.com/auth/apps.groups.migration"; + + public $archive; + + + /** + * Constructs the internal representation of the GroupsMigration service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'groups/v1/groups/'; + $this->version = 'v1'; + $this->serviceName = 'groupsmigration'; + + $this->archive = new Google_Service_GroupsMigration_Archive_Resource( + $this, + $this->serviceName, + 'archive', + array( + 'methods' => array( + 'insert' => array( + 'path' => '{groupId}/archive', + 'httpMethod' => 'POST', + 'parameters' => array( + 'groupId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "archive" collection of methods. + * Typical usage is: + * + * $groupsmigrationService = new Google_Service_GroupsMigration(...); + * $archive = $groupsmigrationService->archive; + * + */ +class Google_Service_GroupsMigration_Archive_Resource extends Google_Service_Resource +{ + + /** + * Inserts a new mail into the archive of the Google group. (archive.insert) + * + * @param string $groupId The group ID + * @param array $optParams Optional parameters. + * @return Google_Service_GroupsMigration_Groups + */ + public function insert($groupId, $optParams = array()) + { + $params = array('groupId' => $groupId); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_GroupsMigration_Groups"); + } +} + + + + +class Google_Service_GroupsMigration_Groups extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $kind; + public $responseCode; + + + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setResponseCode($responseCode) + { + $this->responseCode = $responseCode; + } + public function getResponseCode() + { + return $this->responseCode; + } +} diff --git a/plugins/updraftplus/includes/Google/Service/Groupssettings.php b/plugins/updraftplus/includes/Google/Service/Groupssettings.php new file mode 100644 index 0000000..c8c3dfe --- /dev/null +++ b/plugins/updraftplus/includes/Google/Service/Groupssettings.php @@ -0,0 +1,414 @@ + + * Lets you manage permission levels and related settings of a group.

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Groupssettings extends Google_Service +{ + /** View and manage the settings of a Google Apps Group. */ + const APPS_GROUPS_SETTINGS = + "https://www.googleapis.com/auth/apps.groups.settings"; + + public $groups; + + + /** + * Constructs the internal representation of the Groupssettings service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'groups/v1/groups/'; + $this->version = 'v1'; + $this->serviceName = 'groupssettings'; + + $this->groups = new Google_Service_Groupssettings_Groups_Resource( + $this, + $this->serviceName, + 'groups', + array( + 'methods' => array( + 'get' => array( + 'path' => '{groupUniqueId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'groupUniqueId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => '{groupUniqueId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'groupUniqueId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => '{groupUniqueId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'groupUniqueId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "groups" collection of methods. + * Typical usage is: + * + * $groupssettingsService = new Google_Service_Groupssettings(...); + * $groups = $groupssettingsService->groups; + * + */ +class Google_Service_Groupssettings_Groups_Resource extends Google_Service_Resource +{ + + /** + * Gets one resource by id. (groups.get) + * + * @param string $groupUniqueId The resource ID + * @param array $optParams Optional parameters. + * @return Google_Service_Groupssettings_Groups + */ + public function get($groupUniqueId, $optParams = array()) + { + $params = array('groupUniqueId' => $groupUniqueId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Groupssettings_Groups"); + } + + /** + * Updates an existing resource. This method supports patch semantics. + * (groups.patch) + * + * @param string $groupUniqueId The resource ID + * @param Google_Groups $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Groupssettings_Groups + */ + public function patch($groupUniqueId, Google_Service_Groupssettings_Groups $postBody, $optParams = array()) + { + $params = array('groupUniqueId' => $groupUniqueId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Groupssettings_Groups"); + } + + /** + * Updates an existing resource. (groups.update) + * + * @param string $groupUniqueId The resource ID + * @param Google_Groups $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Groupssettings_Groups + */ + public function update($groupUniqueId, Google_Service_Groupssettings_Groups $postBody, $optParams = array()) + { + $params = array('groupUniqueId' => $groupUniqueId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Groupssettings_Groups"); + } +} + + + + +class Google_Service_Groupssettings_Groups extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $allowExternalMembers; + public $allowGoogleCommunication; + public $allowWebPosting; + public $archiveOnly; + public $customReplyTo; + public $defaultMessageDenyNotificationText; + public $description; + public $email; + public $includeInGlobalAddressList; + public $isArchived; + public $kind; + public $maxMessageBytes; + public $membersCanPostAsTheGroup; + public $messageDisplayFont; + public $messageModerationLevel; + public $name; + public $primaryLanguage; + public $replyTo; + public $sendMessageDenyNotification; + public $showInGroupDirectory; + public $spamModerationLevel; + public $whoCanContactOwner; + public $whoCanInvite; + public $whoCanJoin; + public $whoCanLeaveGroup; + public $whoCanPostMessage; + public $whoCanViewGroup; + public $whoCanViewMembership; + + + public function setAllowExternalMembers($allowExternalMembers) + { + $this->allowExternalMembers = $allowExternalMembers; + } + public function getAllowExternalMembers() + { + return $this->allowExternalMembers; + } + public function setAllowGoogleCommunication($allowGoogleCommunication) + { + $this->allowGoogleCommunication = $allowGoogleCommunication; + } + public function getAllowGoogleCommunication() + { + return $this->allowGoogleCommunication; + } + public function setAllowWebPosting($allowWebPosting) + { + $this->allowWebPosting = $allowWebPosting; + } + public function getAllowWebPosting() + { + return $this->allowWebPosting; + } + public function setArchiveOnly($archiveOnly) + { + $this->archiveOnly = $archiveOnly; + } + public function getArchiveOnly() + { + return $this->archiveOnly; + } + public function setCustomReplyTo($customReplyTo) + { + $this->customReplyTo = $customReplyTo; + } + public function getCustomReplyTo() + { + return $this->customReplyTo; + } + public function setDefaultMessageDenyNotificationText($defaultMessageDenyNotificationText) + { + $this->defaultMessageDenyNotificationText = $defaultMessageDenyNotificationText; + } + public function getDefaultMessageDenyNotificationText() + { + return $this->defaultMessageDenyNotificationText; + } + public function setDescription($description) + { + $this->description = $description; + } + public function getDescription() + { + return $this->description; + } + public function setEmail($email) + { + $this->email = $email; + } + public function getEmail() + { + return $this->email; + } + public function setIncludeInGlobalAddressList($includeInGlobalAddressList) + { + $this->includeInGlobalAddressList = $includeInGlobalAddressList; + } + public function getIncludeInGlobalAddressList() + { + return $this->includeInGlobalAddressList; + } + public function setIsArchived($isArchived) + { + $this->isArchived = $isArchived; + } + public function getIsArchived() + { + return $this->isArchived; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setMaxMessageBytes($maxMessageBytes) + { + $this->maxMessageBytes = $maxMessageBytes; + } + public function getMaxMessageBytes() + { + return $this->maxMessageBytes; + } + public function setMembersCanPostAsTheGroup($membersCanPostAsTheGroup) + { + $this->membersCanPostAsTheGroup = $membersCanPostAsTheGroup; + } + public function getMembersCanPostAsTheGroup() + { + return $this->membersCanPostAsTheGroup; + } + public function setMessageDisplayFont($messageDisplayFont) + { + $this->messageDisplayFont = $messageDisplayFont; + } + public function getMessageDisplayFont() + { + return $this->messageDisplayFont; + } + public function setMessageModerationLevel($messageModerationLevel) + { + $this->messageModerationLevel = $messageModerationLevel; + } + public function getMessageModerationLevel() + { + return $this->messageModerationLevel; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setPrimaryLanguage($primaryLanguage) + { + $this->primaryLanguage = $primaryLanguage; + } + public function getPrimaryLanguage() + { + return $this->primaryLanguage; + } + public function setReplyTo($replyTo) + { + $this->replyTo = $replyTo; + } + public function getReplyTo() + { + return $this->replyTo; + } + public function setSendMessageDenyNotification($sendMessageDenyNotification) + { + $this->sendMessageDenyNotification = $sendMessageDenyNotification; + } + public function getSendMessageDenyNotification() + { + return $this->sendMessageDenyNotification; + } + public function setShowInGroupDirectory($showInGroupDirectory) + { + $this->showInGroupDirectory = $showInGroupDirectory; + } + public function getShowInGroupDirectory() + { + return $this->showInGroupDirectory; + } + public function setSpamModerationLevel($spamModerationLevel) + { + $this->spamModerationLevel = $spamModerationLevel; + } + public function getSpamModerationLevel() + { + return $this->spamModerationLevel; + } + public function setWhoCanContactOwner($whoCanContactOwner) + { + $this->whoCanContactOwner = $whoCanContactOwner; + } + public function getWhoCanContactOwner() + { + return $this->whoCanContactOwner; + } + public function setWhoCanInvite($whoCanInvite) + { + $this->whoCanInvite = $whoCanInvite; + } + public function getWhoCanInvite() + { + return $this->whoCanInvite; + } + public function setWhoCanJoin($whoCanJoin) + { + $this->whoCanJoin = $whoCanJoin; + } + public function getWhoCanJoin() + { + return $this->whoCanJoin; + } + public function setWhoCanLeaveGroup($whoCanLeaveGroup) + { + $this->whoCanLeaveGroup = $whoCanLeaveGroup; + } + public function getWhoCanLeaveGroup() + { + return $this->whoCanLeaveGroup; + } + public function setWhoCanPostMessage($whoCanPostMessage) + { + $this->whoCanPostMessage = $whoCanPostMessage; + } + public function getWhoCanPostMessage() + { + return $this->whoCanPostMessage; + } + public function setWhoCanViewGroup($whoCanViewGroup) + { + $this->whoCanViewGroup = $whoCanViewGroup; + } + public function getWhoCanViewGroup() + { + return $this->whoCanViewGroup; + } + public function setWhoCanViewMembership($whoCanViewMembership) + { + $this->whoCanViewMembership = $whoCanViewMembership; + } + public function getWhoCanViewMembership() + { + return $this->whoCanViewMembership; + } +} diff --git a/plugins/updraftplus/includes/Google/Service/IdentityToolkit.php b/plugins/updraftplus/includes/Google/Service/IdentityToolkit.php new file mode 100644 index 0000000..7bfb2f9 --- /dev/null +++ b/plugins/updraftplus/includes/Google/Service/IdentityToolkit.php @@ -0,0 +1,1736 @@ + + * Help the third party sites to implement federated login.

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_IdentityToolkit extends Google_Service +{ + + + public $relyingparty; + + + /** + * Constructs the internal representation of the IdentityToolkit service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'identitytoolkit/v3/relyingparty/'; + $this->version = 'v3'; + $this->serviceName = 'identitytoolkit'; + + $this->relyingparty = new Google_Service_IdentityToolkit_Relyingparty_Resource( + $this, + $this->serviceName, + 'relyingparty', + array( + 'methods' => array( + 'createAuthUri' => array( + 'path' => 'createAuthUri', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'deleteAccount' => array( + 'path' => 'deleteAccount', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'downloadAccount' => array( + 'path' => 'downloadAccount', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'getAccountInfo' => array( + 'path' => 'getAccountInfo', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'getOobConfirmationCode' => array( + 'path' => 'getOobConfirmationCode', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'getPublicKeys' => array( + 'path' => 'publicKeys', + 'httpMethod' => 'GET', + 'parameters' => array(), + ),'getRecaptchaParam' => array( + 'path' => 'getRecaptchaParam', + 'httpMethod' => 'GET', + 'parameters' => array(), + ),'resetPassword' => array( + 'path' => 'resetPassword', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'setAccountInfo' => array( + 'path' => 'setAccountInfo', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'uploadAccount' => array( + 'path' => 'uploadAccount', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'verifyAssertion' => array( + 'path' => 'verifyAssertion', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'verifyPassword' => array( + 'path' => 'verifyPassword', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + } +} + + +/** + * The "relyingparty" collection of methods. + * Typical usage is: + * + * $identitytoolkitService = new Google_Service_IdentityToolkit(...); + * $relyingparty = $identitytoolkitService->relyingparty; + * + */ +class Google_Service_IdentityToolkit_Relyingparty_Resource extends Google_Service_Resource +{ + + /** + * Creates the URI used by the IdP to authenticate the user. + * (relyingparty.createAuthUri) + * + * @param Google_IdentitytoolkitRelyingpartyCreateAuthUriRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_IdentityToolkit_CreateAuthUriResponse + */ + public function createAuthUri(Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyCreateAuthUriRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('createAuthUri', array($params), "Google_Service_IdentityToolkit_CreateAuthUriResponse"); + } + + /** + * Delete user account. (relyingparty.deleteAccount) + * + * @param Google_IdentitytoolkitRelyingpartyDeleteAccountRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_IdentityToolkit_DeleteAccountResponse + */ + public function deleteAccount(Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyDeleteAccountRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('deleteAccount', array($params), "Google_Service_IdentityToolkit_DeleteAccountResponse"); + } + + /** + * Batch download user accounts. (relyingparty.downloadAccount) + * + * @param Google_IdentitytoolkitRelyingpartyDownloadAccountRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_IdentityToolkit_DownloadAccountResponse + */ + public function downloadAccount(Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyDownloadAccountRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('downloadAccount', array($params), "Google_Service_IdentityToolkit_DownloadAccountResponse"); + } + + /** + * Returns the account info. (relyingparty.getAccountInfo) + * + * @param Google_IdentitytoolkitRelyingpartyGetAccountInfoRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_IdentityToolkit_GetAccountInfoResponse + */ + public function getAccountInfo(Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyGetAccountInfoRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('getAccountInfo', array($params), "Google_Service_IdentityToolkit_GetAccountInfoResponse"); + } + + /** + * Get a code for user action confirmation. + * (relyingparty.getOobConfirmationCode) + * + * @param Google_Relyingparty $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_IdentityToolkit_GetOobConfirmationCodeResponse + */ + public function getOobConfirmationCode(Google_Service_IdentityToolkit_Relyingparty $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('getOobConfirmationCode', array($params), "Google_Service_IdentityToolkit_GetOobConfirmationCodeResponse"); + } + + /** + * Get token signing public key. (relyingparty.getPublicKeys) + * + * @param array $optParams Optional parameters. + * @return Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyGetPublicKeysResponse + */ + public function getPublicKeys($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('getPublicKeys', array($params), "Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyGetPublicKeysResponse"); + } + + /** + * Get recaptcha secure param. (relyingparty.getRecaptchaParam) + * + * @param array $optParams Optional parameters. + * @return Google_Service_IdentityToolkit_GetRecaptchaParamResponse + */ + public function getRecaptchaParam($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('getRecaptchaParam', array($params), "Google_Service_IdentityToolkit_GetRecaptchaParamResponse"); + } + + /** + * Reset password for a user. (relyingparty.resetPassword) + * + * @param Google_IdentitytoolkitRelyingpartyResetPasswordRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_IdentityToolkit_ResetPasswordResponse + */ + public function resetPassword(Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyResetPasswordRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('resetPassword', array($params), "Google_Service_IdentityToolkit_ResetPasswordResponse"); + } + + /** + * Set account info for a user. (relyingparty.setAccountInfo) + * + * @param Google_IdentitytoolkitRelyingpartySetAccountInfoRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_IdentityToolkit_SetAccountInfoResponse + */ + public function setAccountInfo(Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartySetAccountInfoRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('setAccountInfo', array($params), "Google_Service_IdentityToolkit_SetAccountInfoResponse"); + } + + /** + * Batch upload existing user accounts. (relyingparty.uploadAccount) + * + * @param Google_IdentitytoolkitRelyingpartyUploadAccountRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_IdentityToolkit_UploadAccountResponse + */ + public function uploadAccount(Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyUploadAccountRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('uploadAccount', array($params), "Google_Service_IdentityToolkit_UploadAccountResponse"); + } + + /** + * Verifies the assertion returned by the IdP. (relyingparty.verifyAssertion) + * + * @param Google_IdentitytoolkitRelyingpartyVerifyAssertionRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_IdentityToolkit_VerifyAssertionResponse + */ + public function verifyAssertion(Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyVerifyAssertionRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('verifyAssertion', array($params), "Google_Service_IdentityToolkit_VerifyAssertionResponse"); + } + + /** + * Verifies the user entered password. (relyingparty.verifyPassword) + * + * @param Google_IdentitytoolkitRelyingpartyVerifyPasswordRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_IdentityToolkit_VerifyPasswordResponse + */ + public function verifyPassword(Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyVerifyPasswordRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('verifyPassword', array($params), "Google_Service_IdentityToolkit_VerifyPasswordResponse"); + } +} + + + + +class Google_Service_IdentityToolkit_CreateAuthUriResponse extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $authUri; + public $captchaRequired; + public $forExistingProvider; + public $kind; + public $providerId; + public $registered; + + + public function setAuthUri($authUri) + { + $this->authUri = $authUri; + } + public function getAuthUri() + { + return $this->authUri; + } + public function setCaptchaRequired($captchaRequired) + { + $this->captchaRequired = $captchaRequired; + } + public function getCaptchaRequired() + { + return $this->captchaRequired; + } + public function setForExistingProvider($forExistingProvider) + { + $this->forExistingProvider = $forExistingProvider; + } + public function getForExistingProvider() + { + return $this->forExistingProvider; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setProviderId($providerId) + { + $this->providerId = $providerId; + } + public function getProviderId() + { + return $this->providerId; + } + public function setRegistered($registered) + { + $this->registered = $registered; + } + public function getRegistered() + { + return $this->registered; + } +} + +class Google_Service_IdentityToolkit_DeleteAccountResponse extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $kind; + + + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_IdentityToolkit_DownloadAccountResponse extends Google_Collection +{ + protected $collection_key = 'users'; + protected $internal_gapi_mappings = array( + ); + public $kind; + public $nextPageToken; + protected $usersType = 'Google_Service_IdentityToolkit_UserInfo'; + protected $usersDataType = 'array'; + + + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } + public function setUsers($users) + { + $this->users = $users; + } + public function getUsers() + { + return $this->users; + } +} + +class Google_Service_IdentityToolkit_GetAccountInfoResponse extends Google_Collection +{ + protected $collection_key = 'users'; + protected $internal_gapi_mappings = array( + ); + public $kind; + protected $usersType = 'Google_Service_IdentityToolkit_UserInfo'; + protected $usersDataType = 'array'; + + + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setUsers($users) + { + $this->users = $users; + } + public function getUsers() + { + return $this->users; + } +} + +class Google_Service_IdentityToolkit_GetOobConfirmationCodeResponse extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $kind; + public $oobCode; + + + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setOobCode($oobCode) + { + $this->oobCode = $oobCode; + } + public function getOobCode() + { + return $this->oobCode; + } +} + +class Google_Service_IdentityToolkit_GetRecaptchaParamResponse extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $kind; + public $recaptchaSiteKey; + public $recaptchaStoken; + + + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setRecaptchaSiteKey($recaptchaSiteKey) + { + $this->recaptchaSiteKey = $recaptchaSiteKey; + } + public function getRecaptchaSiteKey() + { + return $this->recaptchaSiteKey; + } + public function setRecaptchaStoken($recaptchaStoken) + { + $this->recaptchaStoken = $recaptchaStoken; + } + public function getRecaptchaStoken() + { + return $this->recaptchaStoken; + } +} + +class Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyCreateAuthUriRequest extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $appId; + public $clientId; + public $context; + public $continueUri; + public $identifier; + public $oauthConsumerKey; + public $oauthScope; + public $openidRealm; + public $otaApp; + public $providerId; + + + public function setAppId($appId) + { + $this->appId = $appId; + } + public function getAppId() + { + return $this->appId; + } + public function setClientId($clientId) + { + $this->clientId = $clientId; + } + public function getClientId() + { + return $this->clientId; + } + public function setContext($context) + { + $this->context = $context; + } + public function getContext() + { + return $this->context; + } + public function setContinueUri($continueUri) + { + $this->continueUri = $continueUri; + } + public function getContinueUri() + { + return $this->continueUri; + } + public function setIdentifier($identifier) + { + $this->identifier = $identifier; + } + public function getIdentifier() + { + return $this->identifier; + } + public function setOauthConsumerKey($oauthConsumerKey) + { + $this->oauthConsumerKey = $oauthConsumerKey; + } + public function getOauthConsumerKey() + { + return $this->oauthConsumerKey; + } + public function setOauthScope($oauthScope) + { + $this->oauthScope = $oauthScope; + } + public function getOauthScope() + { + return $this->oauthScope; + } + public function setOpenidRealm($openidRealm) + { + $this->openidRealm = $openidRealm; + } + public function getOpenidRealm() + { + return $this->openidRealm; + } + public function setOtaApp($otaApp) + { + $this->otaApp = $otaApp; + } + public function getOtaApp() + { + return $this->otaApp; + } + public function setProviderId($providerId) + { + $this->providerId = $providerId; + } + public function getProviderId() + { + return $this->providerId; + } +} + +class Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyDeleteAccountRequest extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $localId; + + + public function setLocalId($localId) + { + $this->localId = $localId; + } + public function getLocalId() + { + return $this->localId; + } +} + +class Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyDownloadAccountRequest extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $maxResults; + public $nextPageToken; + + + public function setMaxResults($maxResults) + { + $this->maxResults = $maxResults; + } + public function getMaxResults() + { + return $this->maxResults; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyGetAccountInfoRequest extends Google_Collection +{ + protected $collection_key = 'localId'; + protected $internal_gapi_mappings = array( + ); + public $email; + public $idToken; + public $localId; + + + public function setEmail($email) + { + $this->email = $email; + } + public function getEmail() + { + return $this->email; + } + public function setIdToken($idToken) + { + $this->idToken = $idToken; + } + public function getIdToken() + { + return $this->idToken; + } + public function setLocalId($localId) + { + $this->localId = $localId; + } + public function getLocalId() + { + return $this->localId; + } +} + +class Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyGetPublicKeysResponse extends Google_Model +{ +} + +class Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyResetPasswordRequest extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $email; + public $newPassword; + public $oldPassword; + public $oobCode; + + + public function setEmail($email) + { + $this->email = $email; + } + public function getEmail() + { + return $this->email; + } + public function setNewPassword($newPassword) + { + $this->newPassword = $newPassword; + } + public function getNewPassword() + { + return $this->newPassword; + } + public function setOldPassword($oldPassword) + { + $this->oldPassword = $oldPassword; + } + public function getOldPassword() + { + return $this->oldPassword; + } + public function setOobCode($oobCode) + { + $this->oobCode = $oobCode; + } + public function getOobCode() + { + return $this->oobCode; + } +} + +class Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartySetAccountInfoRequest extends Google_Collection +{ + protected $collection_key = 'provider'; + protected $internal_gapi_mappings = array( + ); + public $captchaChallenge; + public $captchaResponse; + public $displayName; + public $email; + public $emailVerified; + public $idToken; + public $localId; + public $oobCode; + public $password; + public $provider; + public $upgradeToFederatedLogin; + + + public function setCaptchaChallenge($captchaChallenge) + { + $this->captchaChallenge = $captchaChallenge; + } + public function getCaptchaChallenge() + { + return $this->captchaChallenge; + } + public function setCaptchaResponse($captchaResponse) + { + $this->captchaResponse = $captchaResponse; + } + public function getCaptchaResponse() + { + return $this->captchaResponse; + } + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + public function getDisplayName() + { + return $this->displayName; + } + public function setEmail($email) + { + $this->email = $email; + } + public function getEmail() + { + return $this->email; + } + public function setEmailVerified($emailVerified) + { + $this->emailVerified = $emailVerified; + } + public function getEmailVerified() + { + return $this->emailVerified; + } + public function setIdToken($idToken) + { + $this->idToken = $idToken; + } + public function getIdToken() + { + return $this->idToken; + } + public function setLocalId($localId) + { + $this->localId = $localId; + } + public function getLocalId() + { + return $this->localId; + } + public function setOobCode($oobCode) + { + $this->oobCode = $oobCode; + } + public function getOobCode() + { + return $this->oobCode; + } + public function setPassword($password) + { + $this->password = $password; + } + public function getPassword() + { + return $this->password; + } + public function setProvider($provider) + { + $this->provider = $provider; + } + public function getProvider() + { + return $this->provider; + } + public function setUpgradeToFederatedLogin($upgradeToFederatedLogin) + { + $this->upgradeToFederatedLogin = $upgradeToFederatedLogin; + } + public function getUpgradeToFederatedLogin() + { + return $this->upgradeToFederatedLogin; + } +} + +class Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyUploadAccountRequest extends Google_Collection +{ + protected $collection_key = 'users'; + protected $internal_gapi_mappings = array( + ); + public $hashAlgorithm; + public $memoryCost; + public $rounds; + public $saltSeparator; + public $signerKey; + protected $usersType = 'Google_Service_IdentityToolkit_UserInfo'; + protected $usersDataType = 'array'; + + + public function setHashAlgorithm($hashAlgorithm) + { + $this->hashAlgorithm = $hashAlgorithm; + } + public function getHashAlgorithm() + { + return $this->hashAlgorithm; + } + public function setMemoryCost($memoryCost) + { + $this->memoryCost = $memoryCost; + } + public function getMemoryCost() + { + return $this->memoryCost; + } + public function setRounds($rounds) + { + $this->rounds = $rounds; + } + public function getRounds() + { + return $this->rounds; + } + public function setSaltSeparator($saltSeparator) + { + $this->saltSeparator = $saltSeparator; + } + public function getSaltSeparator() + { + return $this->saltSeparator; + } + public function setSignerKey($signerKey) + { + $this->signerKey = $signerKey; + } + public function getSignerKey() + { + return $this->signerKey; + } + public function setUsers($users) + { + $this->users = $users; + } + public function getUsers() + { + return $this->users; + } +} + +class Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyVerifyAssertionRequest extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $pendingIdToken; + public $postBody; + public $requestUri; + public $returnRefreshToken; + + + public function setPendingIdToken($pendingIdToken) + { + $this->pendingIdToken = $pendingIdToken; + } + public function getPendingIdToken() + { + return $this->pendingIdToken; + } + public function setPostBody($postBody) + { + $this->postBody = $postBody; + } + public function getPostBody() + { + return $this->postBody; + } + public function setRequestUri($requestUri) + { + $this->requestUri = $requestUri; + } + public function getRequestUri() + { + return $this->requestUri; + } + public function setReturnRefreshToken($returnRefreshToken) + { + $this->returnRefreshToken = $returnRefreshToken; + } + public function getReturnRefreshToken() + { + return $this->returnRefreshToken; + } +} + +class Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyVerifyPasswordRequest extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $captchaChallenge; + public $captchaResponse; + public $email; + public $password; + public $pendingIdToken; + + + public function setCaptchaChallenge($captchaChallenge) + { + $this->captchaChallenge = $captchaChallenge; + } + public function getCaptchaChallenge() + { + return $this->captchaChallenge; + } + public function setCaptchaResponse($captchaResponse) + { + $this->captchaResponse = $captchaResponse; + } + public function getCaptchaResponse() + { + return $this->captchaResponse; + } + public function setEmail($email) + { + $this->email = $email; + } + public function getEmail() + { + return $this->email; + } + public function setPassword($password) + { + $this->password = $password; + } + public function getPassword() + { + return $this->password; + } + public function setPendingIdToken($pendingIdToken) + { + $this->pendingIdToken = $pendingIdToken; + } + public function getPendingIdToken() + { + return $this->pendingIdToken; + } +} + +class Google_Service_IdentityToolkit_Relyingparty extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $captchaResp; + public $challenge; + public $email; + public $idToken; + public $kind; + public $newEmail; + public $requestType; + public $userIp; + + + public function setCaptchaResp($captchaResp) + { + $this->captchaResp = $captchaResp; + } + public function getCaptchaResp() + { + return $this->captchaResp; + } + public function setChallenge($challenge) + { + $this->challenge = $challenge; + } + public function getChallenge() + { + return $this->challenge; + } + public function setEmail($email) + { + $this->email = $email; + } + public function getEmail() + { + return $this->email; + } + public function setIdToken($idToken) + { + $this->idToken = $idToken; + } + public function getIdToken() + { + return $this->idToken; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setNewEmail($newEmail) + { + $this->newEmail = $newEmail; + } + public function getNewEmail() + { + return $this->newEmail; + } + public function setRequestType($requestType) + { + $this->requestType = $requestType; + } + public function getRequestType() + { + return $this->requestType; + } + public function setUserIp($userIp) + { + $this->userIp = $userIp; + } + public function getUserIp() + { + return $this->userIp; + } +} + +class Google_Service_IdentityToolkit_ResetPasswordResponse extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $email; + public $kind; + + + public function setEmail($email) + { + $this->email = $email; + } + public function getEmail() + { + return $this->email; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_IdentityToolkit_SetAccountInfoResponse extends Google_Collection +{ + protected $collection_key = 'providerUserInfo'; + protected $internal_gapi_mappings = array( + ); + public $displayName; + public $email; + public $idToken; + public $kind; + protected $providerUserInfoType = 'Google_Service_IdentityToolkit_SetAccountInfoResponseProviderUserInfo'; + protected $providerUserInfoDataType = 'array'; + + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + public function getDisplayName() + { + return $this->displayName; + } + public function setEmail($email) + { + $this->email = $email; + } + public function getEmail() + { + return $this->email; + } + public function setIdToken($idToken) + { + $this->idToken = $idToken; + } + public function getIdToken() + { + return $this->idToken; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setProviderUserInfo($providerUserInfo) + { + $this->providerUserInfo = $providerUserInfo; + } + public function getProviderUserInfo() + { + return $this->providerUserInfo; + } +} + +class Google_Service_IdentityToolkit_SetAccountInfoResponseProviderUserInfo extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $displayName; + public $photoUrl; + public $providerId; + + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + public function getDisplayName() + { + return $this->displayName; + } + public function setPhotoUrl($photoUrl) + { + $this->photoUrl = $photoUrl; + } + public function getPhotoUrl() + { + return $this->photoUrl; + } + public function setProviderId($providerId) + { + $this->providerId = $providerId; + } + public function getProviderId() + { + return $this->providerId; + } +} + +class Google_Service_IdentityToolkit_UploadAccountResponse extends Google_Collection +{ + protected $collection_key = 'error'; + protected $internal_gapi_mappings = array( + ); + protected $errorType = 'Google_Service_IdentityToolkit_UploadAccountResponseError'; + protected $errorDataType = 'array'; + public $kind; + + + public function setError($error) + { + $this->error = $error; + } + public function getError() + { + return $this->error; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_IdentityToolkit_UploadAccountResponseError extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $index; + public $message; + + + public function setIndex($index) + { + $this->index = $index; + } + public function getIndex() + { + return $this->index; + } + public function setMessage($message) + { + $this->message = $message; + } + public function getMessage() + { + return $this->message; + } +} + +class Google_Service_IdentityToolkit_UserInfo extends Google_Collection +{ + protected $collection_key = 'providerUserInfo'; + protected $internal_gapi_mappings = array( + ); + public $displayName; + public $email; + public $emailVerified; + public $localId; + public $passwordHash; + public $passwordUpdatedAt; + public $photoUrl; + protected $providerUserInfoType = 'Google_Service_IdentityToolkit_UserInfoProviderUserInfo'; + protected $providerUserInfoDataType = 'array'; + public $salt; + public $version; + + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + public function getDisplayName() + { + return $this->displayName; + } + public function setEmail($email) + { + $this->email = $email; + } + public function getEmail() + { + return $this->email; + } + public function setEmailVerified($emailVerified) + { + $this->emailVerified = $emailVerified; + } + public function getEmailVerified() + { + return $this->emailVerified; + } + public function setLocalId($localId) + { + $this->localId = $localId; + } + public function getLocalId() + { + return $this->localId; + } + public function setPasswordHash($passwordHash) + { + $this->passwordHash = $passwordHash; + } + public function getPasswordHash() + { + return $this->passwordHash; + } + public function setPasswordUpdatedAt($passwordUpdatedAt) + { + $this->passwordUpdatedAt = $passwordUpdatedAt; + } + public function getPasswordUpdatedAt() + { + return $this->passwordUpdatedAt; + } + public function setPhotoUrl($photoUrl) + { + $this->photoUrl = $photoUrl; + } + public function getPhotoUrl() + { + return $this->photoUrl; + } + public function setProviderUserInfo($providerUserInfo) + { + $this->providerUserInfo = $providerUserInfo; + } + public function getProviderUserInfo() + { + return $this->providerUserInfo; + } + public function setSalt($salt) + { + $this->salt = $salt; + } + public function getSalt() + { + return $this->salt; + } + public function setVersion($version) + { + $this->version = $version; + } + public function getVersion() + { + return $this->version; + } +} + +class Google_Service_IdentityToolkit_UserInfoProviderUserInfo extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $displayName; + public $federatedId; + public $photoUrl; + public $providerId; + + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + public function getDisplayName() + { + return $this->displayName; + } + public function setFederatedId($federatedId) + { + $this->federatedId = $federatedId; + } + public function getFederatedId() + { + return $this->federatedId; + } + public function setPhotoUrl($photoUrl) + { + $this->photoUrl = $photoUrl; + } + public function getPhotoUrl() + { + return $this->photoUrl; + } + public function setProviderId($providerId) + { + $this->providerId = $providerId; + } + public function getProviderId() + { + return $this->providerId; + } +} + +class Google_Service_IdentityToolkit_VerifyAssertionResponse extends Google_Collection +{ + protected $collection_key = 'verifiedProvider'; + protected $internal_gapi_mappings = array( + ); + public $action; + public $appInstallationUrl; + public $appScheme; + public $context; + public $dateOfBirth; + public $displayName; + public $email; + public $emailRecycled; + public $emailVerified; + public $federatedId; + public $firstName; + public $fullName; + public $idToken; + public $inputEmail; + public $kind; + public $language; + public $lastName; + public $localId; + public $needConfirmation; + public $nickName; + public $oauthAccessToken; + public $oauthAuthorizationCode; + public $oauthExpireIn; + public $oauthRequestToken; + public $oauthScope; + public $originalEmail; + public $photoUrl; + public $providerId; + public $timeZone; + public $verifiedProvider; + + + public function setAction($action) + { + $this->action = $action; + } + public function getAction() + { + return $this->action; + } + public function setAppInstallationUrl($appInstallationUrl) + { + $this->appInstallationUrl = $appInstallationUrl; + } + public function getAppInstallationUrl() + { + return $this->appInstallationUrl; + } + public function setAppScheme($appScheme) + { + $this->appScheme = $appScheme; + } + public function getAppScheme() + { + return $this->appScheme; + } + public function setContext($context) + { + $this->context = $context; + } + public function getContext() + { + return $this->context; + } + public function setDateOfBirth($dateOfBirth) + { + $this->dateOfBirth = $dateOfBirth; + } + public function getDateOfBirth() + { + return $this->dateOfBirth; + } + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + public function getDisplayName() + { + return $this->displayName; + } + public function setEmail($email) + { + $this->email = $email; + } + public function getEmail() + { + return $this->email; + } + public function setEmailRecycled($emailRecycled) + { + $this->emailRecycled = $emailRecycled; + } + public function getEmailRecycled() + { + return $this->emailRecycled; + } + public function setEmailVerified($emailVerified) + { + $this->emailVerified = $emailVerified; + } + public function getEmailVerified() + { + return $this->emailVerified; + } + public function setFederatedId($federatedId) + { + $this->federatedId = $federatedId; + } + public function getFederatedId() + { + return $this->federatedId; + } + public function setFirstName($firstName) + { + $this->firstName = $firstName; + } + public function getFirstName() + { + return $this->firstName; + } + public function setFullName($fullName) + { + $this->fullName = $fullName; + } + public function getFullName() + { + return $this->fullName; + } + public function setIdToken($idToken) + { + $this->idToken = $idToken; + } + public function getIdToken() + { + return $this->idToken; + } + public function setInputEmail($inputEmail) + { + $this->inputEmail = $inputEmail; + } + public function getInputEmail() + { + return $this->inputEmail; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setLanguage($language) + { + $this->language = $language; + } + public function getLanguage() + { + return $this->language; + } + public function setLastName($lastName) + { + $this->lastName = $lastName; + } + public function getLastName() + { + return $this->lastName; + } + public function setLocalId($localId) + { + $this->localId = $localId; + } + public function getLocalId() + { + return $this->localId; + } + public function setNeedConfirmation($needConfirmation) + { + $this->needConfirmation = $needConfirmation; + } + public function getNeedConfirmation() + { + return $this->needConfirmation; + } + public function setNickName($nickName) + { + $this->nickName = $nickName; + } + public function getNickName() + { + return $this->nickName; + } + public function setOauthAccessToken($oauthAccessToken) + { + $this->oauthAccessToken = $oauthAccessToken; + } + public function getOauthAccessToken() + { + return $this->oauthAccessToken; + } + public function setOauthAuthorizationCode($oauthAuthorizationCode) + { + $this->oauthAuthorizationCode = $oauthAuthorizationCode; + } + public function getOauthAuthorizationCode() + { + return $this->oauthAuthorizationCode; + } + public function setOauthExpireIn($oauthExpireIn) + { + $this->oauthExpireIn = $oauthExpireIn; + } + public function getOauthExpireIn() + { + return $this->oauthExpireIn; + } + public function setOauthRequestToken($oauthRequestToken) + { + $this->oauthRequestToken = $oauthRequestToken; + } + public function getOauthRequestToken() + { + return $this->oauthRequestToken; + } + public function setOauthScope($oauthScope) + { + $this->oauthScope = $oauthScope; + } + public function getOauthScope() + { + return $this->oauthScope; + } + public function setOriginalEmail($originalEmail) + { + $this->originalEmail = $originalEmail; + } + public function getOriginalEmail() + { + return $this->originalEmail; + } + public function setPhotoUrl($photoUrl) + { + $this->photoUrl = $photoUrl; + } + public function getPhotoUrl() + { + return $this->photoUrl; + } + public function setProviderId($providerId) + { + $this->providerId = $providerId; + } + public function getProviderId() + { + return $this->providerId; + } + public function setTimeZone($timeZone) + { + $this->timeZone = $timeZone; + } + public function getTimeZone() + { + return $this->timeZone; + } + public function setVerifiedProvider($verifiedProvider) + { + $this->verifiedProvider = $verifiedProvider; + } + public function getVerifiedProvider() + { + return $this->verifiedProvider; + } +} + +class Google_Service_IdentityToolkit_VerifyPasswordResponse extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $displayName; + public $email; + public $idToken; + public $kind; + public $localId; + public $photoUrl; + public $registered; + + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + public function getDisplayName() + { + return $this->displayName; + } + public function setEmail($email) + { + $this->email = $email; + } + public function getEmail() + { + return $this->email; + } + public function setIdToken($idToken) + { + $this->idToken = $idToken; + } + public function getIdToken() + { + return $this->idToken; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setLocalId($localId) + { + $this->localId = $localId; + } + public function getLocalId() + { + return $this->localId; + } + public function setPhotoUrl($photoUrl) + { + $this->photoUrl = $photoUrl; + } + public function getPhotoUrl() + { + return $this->photoUrl; + } + public function setRegistered($registered) + { + $this->registered = $registered; + } + public function getRegistered() + { + return $this->registered; + } +} diff --git a/plugins/updraftplus/includes/Google/Service/Licensing.php b/plugins/updraftplus/includes/Google/Service/Licensing.php new file mode 100644 index 0000000..7019672 --- /dev/null +++ b/plugins/updraftplus/includes/Google/Service/Licensing.php @@ -0,0 +1,478 @@ + + * Licensing API to view and manage license for your domain.

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Licensing extends Google_Service +{ + /** View and manage Google Apps licenses for your domain. */ + const APPS_LICENSING = + "https://www.googleapis.com/auth/apps.licensing"; + + public $licenseAssignments; + + + /** + * Constructs the internal representation of the Licensing service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'apps/licensing/v1/product/'; + $this->version = 'v1'; + $this->serviceName = 'licensing'; + + $this->licenseAssignments = new Google_Service_Licensing_LicenseAssignments_Resource( + $this, + $this->serviceName, + 'licenseAssignments', + array( + 'methods' => array( + 'delete' => array( + 'path' => '{productId}/sku/{skuId}/user/{userId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'productId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'skuId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{productId}/sku/{skuId}/user/{userId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'productId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'skuId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{productId}/sku/{skuId}/user', + 'httpMethod' => 'POST', + 'parameters' => array( + 'productId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'skuId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'listForProduct' => array( + 'path' => '{productId}/users', + 'httpMethod' => 'GET', + 'parameters' => array( + 'productId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'customerId' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'listForProductAndSku' => array( + 'path' => '{productId}/sku/{skuId}/users', + 'httpMethod' => 'GET', + 'parameters' => array( + 'productId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'skuId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'customerId' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => '{productId}/sku/{skuId}/user/{userId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'productId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'skuId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => '{productId}/sku/{skuId}/user/{userId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'productId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'skuId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "licenseAssignments" collection of methods. + * Typical usage is: + * + * $licensingService = new Google_Service_Licensing(...); + * $licenseAssignments = $licensingService->licenseAssignments; + * + */ +class Google_Service_Licensing_LicenseAssignments_Resource extends Google_Service_Resource +{ + + /** + * Revoke License. (licenseAssignments.delete) + * + * @param string $productId Name for product + * @param string $skuId Name for sku + * @param string $userId email id or unique Id of the user + * @param array $optParams Optional parameters. + */ + public function delete($productId, $skuId, $userId, $optParams = array()) + { + $params = array('productId' => $productId, 'skuId' => $skuId, 'userId' => $userId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * Get license assignment of a particular product and sku for a user + * (licenseAssignments.get) + * + * @param string $productId Name for product + * @param string $skuId Name for sku + * @param string $userId email id or unique Id of the user + * @param array $optParams Optional parameters. + * @return Google_Service_Licensing_LicenseAssignment + */ + public function get($productId, $skuId, $userId, $optParams = array()) + { + $params = array('productId' => $productId, 'skuId' => $skuId, 'userId' => $userId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Licensing_LicenseAssignment"); + } + + /** + * Assign License. (licenseAssignments.insert) + * + * @param string $productId Name for product + * @param string $skuId Name for sku + * @param Google_LicenseAssignmentInsert $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Licensing_LicenseAssignment + */ + public function insert($productId, $skuId, Google_Service_Licensing_LicenseAssignmentInsert $postBody, $optParams = array()) + { + $params = array('productId' => $productId, 'skuId' => $skuId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Licensing_LicenseAssignment"); + } + + /** + * List license assignments for given product of the customer. + * (licenseAssignments.listForProduct) + * + * @param string $productId Name for product + * @param string $customerId CustomerId represents the customer for whom + * licenseassignments are queried + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Token to fetch the next page.Optional. By default + * server will return first page + * @opt_param string maxResults Maximum number of campaigns to return at one + * time. Must be positive. Optional. Default value is 100. + * @return Google_Service_Licensing_LicenseAssignmentList + */ + public function listForProduct($productId, $customerId, $optParams = array()) + { + $params = array('productId' => $productId, 'customerId' => $customerId); + $params = array_merge($params, $optParams); + return $this->call('listForProduct', array($params), "Google_Service_Licensing_LicenseAssignmentList"); + } + + /** + * List license assignments for given product and sku of the customer. + * (licenseAssignments.listForProductAndSku) + * + * @param string $productId Name for product + * @param string $skuId Name for sku + * @param string $customerId CustomerId represents the customer for whom + * licenseassignments are queried + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Token to fetch the next page.Optional. By default + * server will return first page + * @opt_param string maxResults Maximum number of campaigns to return at one + * time. Must be positive. Optional. Default value is 100. + * @return Google_Service_Licensing_LicenseAssignmentList + */ + public function listForProductAndSku($productId, $skuId, $customerId, $optParams = array()) + { + $params = array('productId' => $productId, 'skuId' => $skuId, 'customerId' => $customerId); + $params = array_merge($params, $optParams); + return $this->call('listForProductAndSku', array($params), "Google_Service_Licensing_LicenseAssignmentList"); + } + + /** + * Assign License. This method supports patch semantics. + * (licenseAssignments.patch) + * + * @param string $productId Name for product + * @param string $skuId Name for sku for which license would be revoked + * @param string $userId email id or unique Id of the user + * @param Google_LicenseAssignment $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Licensing_LicenseAssignment + */ + public function patch($productId, $skuId, $userId, Google_Service_Licensing_LicenseAssignment $postBody, $optParams = array()) + { + $params = array('productId' => $productId, 'skuId' => $skuId, 'userId' => $userId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Licensing_LicenseAssignment"); + } + + /** + * Assign License. (licenseAssignments.update) + * + * @param string $productId Name for product + * @param string $skuId Name for sku for which license would be revoked + * @param string $userId email id or unique Id of the user + * @param Google_LicenseAssignment $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Licensing_LicenseAssignment + */ + public function update($productId, $skuId, $userId, Google_Service_Licensing_LicenseAssignment $postBody, $optParams = array()) + { + $params = array('productId' => $productId, 'skuId' => $skuId, 'userId' => $userId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Licensing_LicenseAssignment"); + } +} + + + + +class Google_Service_Licensing_LicenseAssignment extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $etags; + public $kind; + public $productId; + public $selfLink; + public $skuId; + public $userId; + + + public function setEtags($etags) + { + $this->etags = $etags; + } + public function getEtags() + { + return $this->etags; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setProductId($productId) + { + $this->productId = $productId; + } + public function getProductId() + { + return $this->productId; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } + public function setSkuId($skuId) + { + $this->skuId = $skuId; + } + public function getSkuId() + { + return $this->skuId; + } + public function setUserId($userId) + { + $this->userId = $userId; + } + public function getUserId() + { + return $this->userId; + } +} + +class Google_Service_Licensing_LicenseAssignmentInsert extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $userId; + + + public function setUserId($userId) + { + $this->userId = $userId; + } + public function getUserId() + { + return $this->userId; + } +} + +class Google_Service_Licensing_LicenseAssignmentList extends Google_Collection +{ + protected $collection_key = 'items'; + protected $internal_gapi_mappings = array( + ); + public $etag; + protected $itemsType = 'Google_Service_Licensing_LicenseAssignment'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setItems($items) + { + $this->items = $items; + } + public function getItems() + { + return $this->items; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } +} diff --git a/plugins/updraftplus/includes/Google/Service/Logging.php b/plugins/updraftplus/includes/Google/Service/Logging.php new file mode 100644 index 0000000..8fc2d3e --- /dev/null +++ b/plugins/updraftplus/includes/Google/Service/Logging.php @@ -0,0 +1,1300 @@ + + * Google Cloud Logging API lets you create logs, ingest log entries, and manage + * log sinks.

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Logging extends Google_Service +{ + /** View and manage your data across Google Cloud Platform services. */ + const CLOUD_PLATFORM = + "https://www.googleapis.com/auth/cloud-platform"; + + public $projects_logServices; + public $projects_logServices_indexes; + public $projects_logServices_sinks; + public $projects_logs; + public $projects_logs_entries; + public $projects_logs_sinks; + + + /** + * Constructs the internal representation of the Logging service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = ''; + $this->version = 'v1beta3'; + $this->serviceName = 'logging'; + + $this->projects_logServices = new Google_Service_Logging_ProjectsLogServices_Resource( + $this, + $this->serviceName, + 'logServices', + array( + 'methods' => array( + 'list' => array( + 'path' => 'v1beta3/projects/{projectsId}/logServices', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectsId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'log' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageSize' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->projects_logServices_indexes = new Google_Service_Logging_ProjectsLogServicesIndexes_Resource( + $this, + $this->serviceName, + 'indexes', + array( + 'methods' => array( + 'list' => array( + 'path' => 'v1beta3/projects/{projectsId}/logServices/{logServicesId}/indexes', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectsId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'logServicesId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'log' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageSize' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'depth' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'indexPrefix' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->projects_logServices_sinks = new Google_Service_Logging_ProjectsLogServicesSinks_Resource( + $this, + $this->serviceName, + 'sinks', + array( + 'methods' => array( + 'create' => array( + 'path' => 'v1beta3/projects/{projectsId}/logServices/{logServicesId}/sinks', + 'httpMethod' => 'POST', + 'parameters' => array( + 'projectsId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'logServicesId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'delete' => array( + 'path' => 'v1beta3/projects/{projectsId}/logServices/{logServicesId}/sinks/{sinksId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'projectsId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'logServicesId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'sinksId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'v1beta3/projects/{projectsId}/logServices/{logServicesId}/sinks/{sinksId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectsId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'logServicesId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'sinksId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'v1beta3/projects/{projectsId}/logServices/{logServicesId}/sinks', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectsId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'logServicesId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'v1beta3/projects/{projectsId}/logServices/{logServicesId}/sinks/{sinksId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'projectsId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'logServicesId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'sinksId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->projects_logs = new Google_Service_Logging_ProjectsLogs_Resource( + $this, + $this->serviceName, + 'logs', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'v1beta3/projects/{projectsId}/logs/{logsId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'projectsId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'logsId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'v1beta3/projects/{projectsId}/logs', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectsId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'serviceName' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'serviceIndexPrefix' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageSize' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->projects_logs_entries = new Google_Service_Logging_ProjectsLogsEntries_Resource( + $this, + $this->serviceName, + 'entries', + array( + 'methods' => array( + 'write' => array( + 'path' => 'v1beta3/projects/{projectsId}/logs/{logsId}/entries:write', + 'httpMethod' => 'POST', + 'parameters' => array( + 'projectsId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'logsId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->projects_logs_sinks = new Google_Service_Logging_ProjectsLogsSinks_Resource( + $this, + $this->serviceName, + 'sinks', + array( + 'methods' => array( + 'create' => array( + 'path' => 'v1beta3/projects/{projectsId}/logs/{logsId}/sinks', + 'httpMethod' => 'POST', + 'parameters' => array( + 'projectsId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'logsId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'delete' => array( + 'path' => 'v1beta3/projects/{projectsId}/logs/{logsId}/sinks/{sinksId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'projectsId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'logsId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'sinksId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'v1beta3/projects/{projectsId}/logs/{logsId}/sinks/{sinksId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectsId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'logsId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'sinksId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'v1beta3/projects/{projectsId}/logs/{logsId}/sinks', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectsId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'logsId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'v1beta3/projects/{projectsId}/logs/{logsId}/sinks/{sinksId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'projectsId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'logsId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'sinksId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "projects" collection of methods. + * Typical usage is: + * + * $loggingService = new Google_Service_Logging(...); + * $projects = $loggingService->projects; + * + */ +class Google_Service_Logging_Projects_Resource extends Google_Service_Resource +{ +} + +/** + * The "logServices" collection of methods. + * Typical usage is: + * + * $loggingService = new Google_Service_Logging(...); + * $logServices = $loggingService->logServices; + * + */ +class Google_Service_Logging_ProjectsLogServices_Resource extends Google_Service_Resource +{ + + /** + * Lists log services associated with log entries ingested for a project. + * (logServices.listProjectsLogServices) + * + * @param string $projectsId Part of `projectName`. The project resource whose + * services are to be listed. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken An opaque token, returned as `nextPageToken` by a + * prior `ListLogServices` operation. If `pageToken` is supplied, then the other + * fields of this request are ignored, and instead the previous + * `ListLogServices` operation is continued. + * @opt_param string log The name of the log resource whose services are to be + * listed. log for which to list services. When empty, all services are listed. + * @opt_param int pageSize The maximum number of `LogService` objects to return + * in one operation. + * @return Google_Service_Logging_ListLogServicesResponse + */ + public function listProjectsLogServices($projectsId, $optParams = array()) + { + $params = array('projectsId' => $projectsId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Logging_ListLogServicesResponse"); + } +} + +/** + * The "indexes" collection of methods. + * Typical usage is: + * + * $loggingService = new Google_Service_Logging(...); + * $indexes = $loggingService->indexes; + * + */ +class Google_Service_Logging_ProjectsLogServicesIndexes_Resource extends Google_Service_Resource +{ + + /** + * Lists log service indexes associated with a log service. + * (indexes.listProjectsLogServicesIndexes) + * + * @param string $projectsId Part of `serviceName`. A log service resource of + * the form `/projects/logServices`. The service indexes of the log service are + * returned. Example: `"/projects/myProj/logServices/appengine.googleapis.com"`. + * @param string $logServicesId Part of `serviceName`. See documentation of + * `projectsId`. + * @param array $optParams Optional parameters. + * + * @opt_param string log A log resource like + * `/projects/project_id/logs/log_name`, identifying the log for which to list + * service indexes. + * @opt_param int pageSize The maximum number of log service index resources to + * return in one operation. + * @opt_param string pageToken An opaque token, returned as `nextPageToken` by a + * prior `ListLogServiceIndexes` operation. If `pageToken` is supplied, then the + * other fields of this request are ignored, and instead the previous + * `ListLogServiceIndexes` operation is continued. + * @opt_param int depth A limit to the number of levels of the index hierarchy + * that are expanded. If `depth` is 0, it defaults to the level specified by the + * prefix field (the number of slash separators). The default empty prefix + * implies a `depth` of 1. It is an error for `depth` to be any non-zero value + * less than the number of components in `indexPrefix`. + * @opt_param string indexPrefix Restricts the indexes returned to be those with + * a specified prefix. The prefix has the form `"/label_value/label_value/..."`, + * in order corresponding to the [`LogService + * indexKeys`][google.logging.v1.LogService.index_keys]. Non-empty prefixes must + * begin with `/` . Example prefixes: + `"/myModule/"` retrieves App Engine + * versions associated with `myModule`. The trailing slash terminates the value. + * + `"/myModule"` retrieves App Engine modules with names beginning with + * `myModule`. + `""` retrieves all indexes. + * @return Google_Service_Logging_ListLogServiceIndexesResponse + */ + public function listProjectsLogServicesIndexes($projectsId, $logServicesId, $optParams = array()) + { + $params = array('projectsId' => $projectsId, 'logServicesId' => $logServicesId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Logging_ListLogServiceIndexesResponse"); + } +} +/** + * The "sinks" collection of methods. + * Typical usage is: + * + * $loggingService = new Google_Service_Logging(...); + * $sinks = $loggingService->sinks; + * + */ +class Google_Service_Logging_ProjectsLogServicesSinks_Resource extends Google_Service_Resource +{ + + /** + * Creates the specified log service sink resource. (sinks.create) + * + * @param string $projectsId Part of `serviceName`. The name of the service in + * which to create a sink. + * @param string $logServicesId Part of `serviceName`. See documentation of + * `projectsId`. + * @param Google_LogSink $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Logging_LogSink + */ + public function create($projectsId, $logServicesId, Google_Service_Logging_LogSink $postBody, $optParams = array()) + { + $params = array('projectsId' => $projectsId, 'logServicesId' => $logServicesId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('create', array($params), "Google_Service_Logging_LogSink"); + } + + /** + * Deletes the specified log service sink. (sinks.delete) + * + * @param string $projectsId Part of `sinkName`. The name of the sink to delete. + * @param string $logServicesId Part of `sinkName`. See documentation of + * `projectsId`. + * @param string $sinksId Part of `sinkName`. See documentation of `projectsId`. + * @param array $optParams Optional parameters. + * @return Google_Service_Logging_Empty + */ + public function delete($projectsId, $logServicesId, $sinksId, $optParams = array()) + { + $params = array('projectsId' => $projectsId, 'logServicesId' => $logServicesId, 'sinksId' => $sinksId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_Logging_Empty"); + } + + /** + * Gets the specified log service sink resource. (sinks.get) + * + * @param string $projectsId Part of `sinkName`. The name of the sink to return. + * @param string $logServicesId Part of `sinkName`. See documentation of + * `projectsId`. + * @param string $sinksId Part of `sinkName`. See documentation of `projectsId`. + * @param array $optParams Optional parameters. + * @return Google_Service_Logging_LogSink + */ + public function get($projectsId, $logServicesId, $sinksId, $optParams = array()) + { + $params = array('projectsId' => $projectsId, 'logServicesId' => $logServicesId, 'sinksId' => $sinksId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Logging_LogSink"); + } + + /** + * Lists log service sinks associated with the specified service. + * (sinks.listProjectsLogServicesSinks) + * + * @param string $projectsId Part of `serviceName`. The name of the service for + * which to list sinks. + * @param string $logServicesId Part of `serviceName`. See documentation of + * `projectsId`. + * @param array $optParams Optional parameters. + * @return Google_Service_Logging_ListLogServiceSinksResponse + */ + public function listProjectsLogServicesSinks($projectsId, $logServicesId, $optParams = array()) + { + $params = array('projectsId' => $projectsId, 'logServicesId' => $logServicesId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Logging_ListLogServiceSinksResponse"); + } + + /** + * Creates or update the specified log service sink resource. (sinks.update) + * + * @param string $projectsId Part of `sinkName`. The name of the sink to update. + * @param string $logServicesId Part of `sinkName`. See documentation of + * `projectsId`. + * @param string $sinksId Part of `sinkName`. See documentation of `projectsId`. + * @param Google_LogSink $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Logging_LogSink + */ + public function update($projectsId, $logServicesId, $sinksId, Google_Service_Logging_LogSink $postBody, $optParams = array()) + { + $params = array('projectsId' => $projectsId, 'logServicesId' => $logServicesId, 'sinksId' => $sinksId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Logging_LogSink"); + } +} +/** + * The "logs" collection of methods. + * Typical usage is: + * + * $loggingService = new Google_Service_Logging(...); + * $logs = $loggingService->logs; + * + */ +class Google_Service_Logging_ProjectsLogs_Resource extends Google_Service_Resource +{ + + /** + * Deletes the specified log resource and all log entries contained in it. + * (logs.delete) + * + * @param string $projectsId Part of `logName`. The log resource to delete. + * @param string $logsId Part of `logName`. See documentation of `projectsId`. + * @param array $optParams Optional parameters. + * @return Google_Service_Logging_Empty + */ + public function delete($projectsId, $logsId, $optParams = array()) + { + $params = array('projectsId' => $projectsId, 'logsId' => $logsId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_Logging_Empty"); + } + + /** + * Lists log resources belonging to the specified project. + * (logs.listProjectsLogs) + * + * @param string $projectsId Part of `projectName`. The project name for which + * to list the log resources. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken An opaque token, returned as `nextPageToken` by a + * prior `ListLogs` operation. If `pageToken` is supplied, then the other fields + * of this request are ignored, and instead the previous `ListLogs` operation is + * continued. + * @opt_param string serviceName A service name for which to list logs. Only + * logs containing entries whose metadata includes this service name are + * returned. If `serviceName` and `serviceIndexPrefix` are both empty, then all + * log names are returned. To list all log names, regardless of service, leave + * both the `serviceName` and `serviceIndexPrefix` empty. To list log names + * containing entries with a particular service name (or explicitly empty + * service name) set `serviceName` to the desired value and `serviceIndexPrefix` + * to `"/"`. + * @opt_param string serviceIndexPrefix A log service index prefix for which to + * list logs. Only logs containing entries whose metadata that includes these + * label values (associated with index keys) are returned. The prefix is a slash + * separated list of values, and need not specify all index labels. An empty + * index (or a single slash) matches all log service indexes. + * @opt_param int pageSize The maximum number of results to return. + * @return Google_Service_Logging_ListLogsResponse + */ + public function listProjectsLogs($projectsId, $optParams = array()) + { + $params = array('projectsId' => $projectsId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Logging_ListLogsResponse"); + } +} + +/** + * The "entries" collection of methods. + * Typical usage is: + * + * $loggingService = new Google_Service_Logging(...); + * $entries = $loggingService->entries; + * + */ +class Google_Service_Logging_ProjectsLogsEntries_Resource extends Google_Service_Resource +{ + + /** + * Creates one or more log entries in a log. You must supply a list of + * `LogEntry` objects, named `entries`. Each `LogEntry` object must contain a + * payload object and a `LogEntryMetadata` object that describes the entry. You + * must fill in all the fields of the entry, metadata, and payload. You can also + * supply a map, `commonLabels`, that supplies default (key, value) data for the + * `entries[].metadata.labels` maps, saving you the trouble of creating + * identical copies for each entry. (entries.write) + * + * @param string $projectsId Part of `logName`. The name of the log resource + * into which to insert the log entries. + * @param string $logsId Part of `logName`. See documentation of `projectsId`. + * @param Google_WriteLogEntriesRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Logging_WriteLogEntriesResponse + */ + public function write($projectsId, $logsId, Google_Service_Logging_WriteLogEntriesRequest $postBody, $optParams = array()) + { + $params = array('projectsId' => $projectsId, 'logsId' => $logsId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('write', array($params), "Google_Service_Logging_WriteLogEntriesResponse"); + } +} +/** + * The "sinks" collection of methods. + * Typical usage is: + * + * $loggingService = new Google_Service_Logging(...); + * $sinks = $loggingService->sinks; + * + */ +class Google_Service_Logging_ProjectsLogsSinks_Resource extends Google_Service_Resource +{ + + /** + * Creates the specified log sink resource. (sinks.create) + * + * @param string $projectsId Part of `logName`. The log in which to create a + * sink resource. + * @param string $logsId Part of `logName`. See documentation of `projectsId`. + * @param Google_LogSink $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Logging_LogSink + */ + public function create($projectsId, $logsId, Google_Service_Logging_LogSink $postBody, $optParams = array()) + { + $params = array('projectsId' => $projectsId, 'logsId' => $logsId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('create', array($params), "Google_Service_Logging_LogSink"); + } + + /** + * Deletes the specified log sink resource. (sinks.delete) + * + * @param string $projectsId Part of `sinkName`. The name of the sink to delete. + * @param string $logsId Part of `sinkName`. See documentation of `projectsId`. + * @param string $sinksId Part of `sinkName`. See documentation of `projectsId`. + * @param array $optParams Optional parameters. + * @return Google_Service_Logging_Empty + */ + public function delete($projectsId, $logsId, $sinksId, $optParams = array()) + { + $params = array('projectsId' => $projectsId, 'logsId' => $logsId, 'sinksId' => $sinksId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_Logging_Empty"); + } + + /** + * Gets the specified log sink resource. (sinks.get) + * + * @param string $projectsId Part of `sinkName`. The name of the sink resource + * to return. + * @param string $logsId Part of `sinkName`. See documentation of `projectsId`. + * @param string $sinksId Part of `sinkName`. See documentation of `projectsId`. + * @param array $optParams Optional parameters. + * @return Google_Service_Logging_LogSink + */ + public function get($projectsId, $logsId, $sinksId, $optParams = array()) + { + $params = array('projectsId' => $projectsId, 'logsId' => $logsId, 'sinksId' => $sinksId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Logging_LogSink"); + } + + /** + * Lists log sinks associated with the specified log. + * (sinks.listProjectsLogsSinks) + * + * @param string $projectsId Part of `logName`. The log for which to list sinks. + * @param string $logsId Part of `logName`. See documentation of `projectsId`. + * @param array $optParams Optional parameters. + * @return Google_Service_Logging_ListLogSinksResponse + */ + public function listProjectsLogsSinks($projectsId, $logsId, $optParams = array()) + { + $params = array('projectsId' => $projectsId, 'logsId' => $logsId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Logging_ListLogSinksResponse"); + } + + /** + * Creates or updates the specified log sink resource. (sinks.update) + * + * @param string $projectsId Part of `sinkName`. The name of the sink to update. + * @param string $logsId Part of `sinkName`. See documentation of `projectsId`. + * @param string $sinksId Part of `sinkName`. See documentation of `projectsId`. + * @param Google_LogSink $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Logging_LogSink + */ + public function update($projectsId, $logsId, $sinksId, Google_Service_Logging_LogSink $postBody, $optParams = array()) + { + $params = array('projectsId' => $projectsId, 'logsId' => $logsId, 'sinksId' => $sinksId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Logging_LogSink"); + } +} + + + + +class Google_Service_Logging_Empty extends Google_Model +{ +} + +class Google_Service_Logging_ListLogServiceIndexesResponse extends Google_Collection +{ + protected $collection_key = 'serviceIndexPrefixes'; + protected $internal_gapi_mappings = array( + ); + public $nextPageToken; + public $serviceIndexPrefixes; + + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } + public function setServiceIndexPrefixes($serviceIndexPrefixes) + { + $this->serviceIndexPrefixes = $serviceIndexPrefixes; + } + public function getServiceIndexPrefixes() + { + return $this->serviceIndexPrefixes; + } +} + +class Google_Service_Logging_ListLogServiceSinksResponse extends Google_Collection +{ + protected $collection_key = 'sinks'; + protected $internal_gapi_mappings = array( + ); + protected $sinksType = 'Google_Service_Logging_LogSink'; + protected $sinksDataType = 'array'; + + + public function setSinks($sinks) + { + $this->sinks = $sinks; + } + public function getSinks() + { + return $this->sinks; + } +} + +class Google_Service_Logging_ListLogServicesResponse extends Google_Collection +{ + protected $collection_key = 'logServices'; + protected $internal_gapi_mappings = array( + ); + protected $logServicesType = 'Google_Service_Logging_LogService'; + protected $logServicesDataType = 'array'; + public $nextPageToken; + + + public function setLogServices($logServices) + { + $this->logServices = $logServices; + } + public function getLogServices() + { + return $this->logServices; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Logging_ListLogSinksResponse extends Google_Collection +{ + protected $collection_key = 'sinks'; + protected $internal_gapi_mappings = array( + ); + protected $sinksType = 'Google_Service_Logging_LogSink'; + protected $sinksDataType = 'array'; + + + public function setSinks($sinks) + { + $this->sinks = $sinks; + } + public function getSinks() + { + return $this->sinks; + } +} + +class Google_Service_Logging_ListLogsResponse extends Google_Collection +{ + protected $collection_key = 'logs'; + protected $internal_gapi_mappings = array( + ); + protected $logsType = 'Google_Service_Logging_Log'; + protected $logsDataType = 'array'; + public $nextPageToken; + + + public function setLogs($logs) + { + $this->logs = $logs; + } + public function getLogs() + { + return $this->logs; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Logging_Log extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $displayName; + public $name; + public $payloadType; + + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + public function getDisplayName() + { + return $this->displayName; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setPayloadType($payloadType) + { + $this->payloadType = $payloadType; + } + public function getPayloadType() + { + return $this->payloadType; + } +} + +class Google_Service_Logging_LogEntry extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $insertId; + public $log; + protected $metadataType = 'Google_Service_Logging_LogEntryMetadata'; + protected $metadataDataType = ''; + public $protoPayload; + public $structPayload; + public $textPayload; + + + public function setInsertId($insertId) + { + $this->insertId = $insertId; + } + public function getInsertId() + { + return $this->insertId; + } + public function setLog($log) + { + $this->log = $log; + } + public function getLog() + { + return $this->log; + } + public function setMetadata(Google_Service_Logging_LogEntryMetadata $metadata) + { + $this->metadata = $metadata; + } + public function getMetadata() + { + return $this->metadata; + } + public function setProtoPayload($protoPayload) + { + $this->protoPayload = $protoPayload; + } + public function getProtoPayload() + { + return $this->protoPayload; + } + public function setStructPayload($structPayload) + { + $this->structPayload = $structPayload; + } + public function getStructPayload() + { + return $this->structPayload; + } + public function setTextPayload($textPayload) + { + $this->textPayload = $textPayload; + } + public function getTextPayload() + { + return $this->textPayload; + } +} + +class Google_Service_Logging_LogEntryMetadata extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $labels; + public $projectId; + public $region; + public $serviceName; + public $severity; + public $timestamp; + public $userId; + public $zone; + + + public function setLabels($labels) + { + $this->labels = $labels; + } + public function getLabels() + { + return $this->labels; + } + public function setProjectId($projectId) + { + $this->projectId = $projectId; + } + public function getProjectId() + { + return $this->projectId; + } + public function setRegion($region) + { + $this->region = $region; + } + public function getRegion() + { + return $this->region; + } + public function setServiceName($serviceName) + { + $this->serviceName = $serviceName; + } + public function getServiceName() + { + return $this->serviceName; + } + public function setSeverity($severity) + { + $this->severity = $severity; + } + public function getSeverity() + { + return $this->severity; + } + public function setTimestamp($timestamp) + { + $this->timestamp = $timestamp; + } + public function getTimestamp() + { + return $this->timestamp; + } + public function setUserId($userId) + { + $this->userId = $userId; + } + public function getUserId() + { + return $this->userId; + } + public function setZone($zone) + { + $this->zone = $zone; + } + public function getZone() + { + return $this->zone; + } +} + +class Google_Service_Logging_LogEntryMetadataLabels extends Google_Model +{ +} + +class Google_Service_Logging_LogEntryProtoPayload extends Google_Model +{ +} + +class Google_Service_Logging_LogEntryStructPayload extends Google_Model +{ +} + +class Google_Service_Logging_LogError extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $resource; + protected $statusType = 'Google_Service_Logging_Status'; + protected $statusDataType = ''; + public $timeNanos; + + + public function setResource($resource) + { + $this->resource = $resource; + } + public function getResource() + { + return $this->resource; + } + public function setStatus(Google_Service_Logging_Status $status) + { + $this->status = $status; + } + public function getStatus() + { + return $this->status; + } + public function setTimeNanos($timeNanos) + { + $this->timeNanos = $timeNanos; + } + public function getTimeNanos() + { + return $this->timeNanos; + } +} + +class Google_Service_Logging_LogService extends Google_Collection +{ + protected $collection_key = 'indexKeys'; + protected $internal_gapi_mappings = array( + ); + public $indexKeys; + public $name; + + + public function setIndexKeys($indexKeys) + { + $this->indexKeys = $indexKeys; + } + public function getIndexKeys() + { + return $this->indexKeys; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } +} + +class Google_Service_Logging_LogSink extends Google_Collection +{ + protected $collection_key = 'errors'; + protected $internal_gapi_mappings = array( + ); + public $destination; + protected $errorsType = 'Google_Service_Logging_LogError'; + protected $errorsDataType = 'array'; + public $name; + + + public function setDestination($destination) + { + $this->destination = $destination; + } + public function getDestination() + { + return $this->destination; + } + public function setErrors($errors) + { + $this->errors = $errors; + } + public function getErrors() + { + return $this->errors; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } +} + +class Google_Service_Logging_Status extends Google_Collection +{ + protected $collection_key = 'details'; + protected $internal_gapi_mappings = array( + ); + public $code; + public $details; + public $message; + + + public function setCode($code) + { + $this->code = $code; + } + public function getCode() + { + return $this->code; + } + public function setDetails($details) + { + $this->details = $details; + } + public function getDetails() + { + return $this->details; + } + public function setMessage($message) + { + $this->message = $message; + } + public function getMessage() + { + return $this->message; + } +} + +class Google_Service_Logging_StatusDetails extends Google_Model +{ +} + +class Google_Service_Logging_WriteLogEntriesRequest extends Google_Collection +{ + protected $collection_key = 'entries'; + protected $internal_gapi_mappings = array( + ); + public $commonLabels; + protected $entriesType = 'Google_Service_Logging_LogEntry'; + protected $entriesDataType = 'array'; + + + public function setCommonLabels($commonLabels) + { + $this->commonLabels = $commonLabels; + } + public function getCommonLabels() + { + return $this->commonLabels; + } + public function setEntries($entries) + { + $this->entries = $entries; + } + public function getEntries() + { + return $this->entries; + } +} + +class Google_Service_Logging_WriteLogEntriesRequestCommonLabels extends Google_Model +{ +} + +class Google_Service_Logging_WriteLogEntriesResponse extends Google_Model +{ +} diff --git a/plugins/updraftplus/includes/Google/Service/Oauth2.php b/plugins/updraftplus/includes/Google/Service/Oauth2.php new file mode 100644 index 0000000..6a88dad --- /dev/null +++ b/plugins/updraftplus/includes/Google/Service/Oauth2.php @@ -0,0 +1,502 @@ + + * Lets you access OAuth2 protocol related APIs.

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Oauth2 extends Google_Service +{ + /** Know your basic profile info and list of people in your circles.. */ + const PLUS_LOGIN = + "https://www.googleapis.com/auth/plus.login"; + /** Know who you are on Google. */ + const PLUS_ME = + "https://www.googleapis.com/auth/plus.me"; + /** View your email address. */ + const USERINFO_EMAIL = + "https://www.googleapis.com/auth/userinfo.email"; + /** View your basic profile info. */ + const USERINFO_PROFILE = + "https://www.googleapis.com/auth/userinfo.profile"; + + public $userinfo; + public $userinfo_v2_me; + private $base_methods; + + /** + * Constructs the internal representation of the Oauth2 service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = ''; + $this->version = 'v2'; + $this->serviceName = 'oauth2'; + + $this->userinfo = new Google_Service_Oauth2_Userinfo_Resource( + $this, + $this->serviceName, + 'userinfo', + array( + 'methods' => array( + 'get' => array( + 'path' => 'oauth2/v2/userinfo', + 'httpMethod' => 'GET', + 'parameters' => array(), + ), + ) + ) + ); + $this->userinfo_v2_me = new Google_Service_Oauth2_UserinfoV2Me_Resource( + $this, + $this->serviceName, + 'me', + array( + 'methods' => array( + 'get' => array( + 'path' => 'userinfo/v2/me', + 'httpMethod' => 'GET', + 'parameters' => array(), + ), + ) + ) + ); + $this->base_methods = new Google_Service_Resource( + $this, + $this->serviceName, + '', + array( + 'methods' => array( + 'getCertForOpenIdConnect' => array( + 'path' => 'oauth2/v2/certs', + 'httpMethod' => 'GET', + 'parameters' => array(), + ),'tokeninfo' => array( + 'path' => 'oauth2/v2/tokeninfo', + 'httpMethod' => 'POST', + 'parameters' => array( + 'access_token' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'id_token' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'token_handle' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + } + /** + * (getCertForOpenIdConnect) + * + * @param array $optParams Optional parameters. + * @return Google_Service_Oauth2_Jwk + */ + public function getCertForOpenIdConnect($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->base_methods->call('getCertForOpenIdConnect', array($params), "Google_Service_Oauth2_Jwk"); + } + /** + * (tokeninfo) + * + * @param array $optParams Optional parameters. + * + * @opt_param string access_token + * @opt_param string id_token + * @opt_param string token_handle + * @return Google_Service_Oauth2_Tokeninfo + */ + public function tokeninfo($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->base_methods->call('tokeninfo', array($params), "Google_Service_Oauth2_Tokeninfo"); + } +} + + +/** + * The "userinfo" collection of methods. + * Typical usage is: + * + * $oauth2Service = new Google_Service_Oauth2(...); + * $userinfo = $oauth2Service->userinfo; + * + */ +class Google_Service_Oauth2_Userinfo_Resource extends Google_Service_Resource +{ + + /** + * (userinfo.get) + * + * @param array $optParams Optional parameters. + * @return Google_Service_Oauth2_Userinfoplus + */ + public function get($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Oauth2_Userinfoplus"); + } +} + +/** + * The "v2" collection of methods. + * Typical usage is: + * + * $oauth2Service = new Google_Service_Oauth2(...); + * $v2 = $oauth2Service->v2; + * + */ +class Google_Service_Oauth2_UserinfoV2_Resource extends Google_Service_Resource +{ +} + +/** + * The "me" collection of methods. + * Typical usage is: + * + * $oauth2Service = new Google_Service_Oauth2(...); + * $me = $oauth2Service->me; + * + */ +class Google_Service_Oauth2_UserinfoV2Me_Resource extends Google_Service_Resource +{ + + /** + * (me.get) + * + * @param array $optParams Optional parameters. + * @return Google_Service_Oauth2_Userinfoplus + */ + public function get($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Oauth2_Userinfoplus"); + } +} + + + + +class Google_Service_Oauth2_Jwk extends Google_Collection +{ + protected $collection_key = 'keys'; + protected $internal_gapi_mappings = array( + ); + protected $keysType = 'Google_Service_Oauth2_JwkKeys'; + protected $keysDataType = 'array'; + + + public function setKeys($keys) + { + $this->keys = $keys; + } + public function getKeys() + { + return $this->keys; + } +} + +class Google_Service_Oauth2_JwkKeys extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $alg; + public $e; + public $kid; + public $kty; + public $n; + public $use; + + + public function setAlg($alg) + { + $this->alg = $alg; + } + public function getAlg() + { + return $this->alg; + } + public function setE($e) + { + $this->e = $e; + } + public function getE() + { + return $this->e; + } + public function setKid($kid) + { + $this->kid = $kid; + } + public function getKid() + { + return $this->kid; + } + public function setKty($kty) + { + $this->kty = $kty; + } + public function getKty() + { + return $this->kty; + } + public function setN($n) + { + $this->n = $n; + } + public function getN() + { + return $this->n; + } + public function setUse($use) + { + $this->use = $use; + } + public function getUse() + { + return $this->use; + } +} + +class Google_Service_Oauth2_Tokeninfo extends Google_Model +{ + protected $internal_gapi_mappings = array( + "accessType" => "access_type", + "expiresIn" => "expires_in", + "issuedTo" => "issued_to", + "tokenHandle" => "token_handle", + "userId" => "user_id", + "verifiedEmail" => "verified_email", + ); + public $accessType; + public $audience; + public $email; + public $expiresIn; + public $issuedTo; + public $scope; + public $tokenHandle; + public $userId; + public $verifiedEmail; + + + public function setAccessType($accessType) + { + $this->accessType = $accessType; + } + public function getAccessType() + { + return $this->accessType; + } + public function setAudience($audience) + { + $this->audience = $audience; + } + public function getAudience() + { + return $this->audience; + } + public function setEmail($email) + { + $this->email = $email; + } + public function getEmail() + { + return $this->email; + } + public function setExpiresIn($expiresIn) + { + $this->expiresIn = $expiresIn; + } + public function getExpiresIn() + { + return $this->expiresIn; + } + public function setIssuedTo($issuedTo) + { + $this->issuedTo = $issuedTo; + } + public function getIssuedTo() + { + return $this->issuedTo; + } + public function setScope($scope) + { + $this->scope = $scope; + } + public function getScope() + { + return $this->scope; + } + public function setTokenHandle($tokenHandle) + { + $this->tokenHandle = $tokenHandle; + } + public function getTokenHandle() + { + return $this->tokenHandle; + } + public function setUserId($userId) + { + $this->userId = $userId; + } + public function getUserId() + { + return $this->userId; + } + public function setVerifiedEmail($verifiedEmail) + { + $this->verifiedEmail = $verifiedEmail; + } + public function getVerifiedEmail() + { + return $this->verifiedEmail; + } +} + +class Google_Service_Oauth2_Userinfoplus extends Google_Model +{ + protected $internal_gapi_mappings = array( + "familyName" => "family_name", + "givenName" => "given_name", + "verifiedEmail" => "verified_email", + ); + public $email; + public $familyName; + public $gender; + public $givenName; + public $hd; + public $id; + public $link; + public $locale; + public $name; + public $picture; + public $verifiedEmail; + + + public function setEmail($email) + { + $this->email = $email; + } + public function getEmail() + { + return $this->email; + } + public function setFamilyName($familyName) + { + $this->familyName = $familyName; + } + public function getFamilyName() + { + return $this->familyName; + } + public function setGender($gender) + { + $this->gender = $gender; + } + public function getGender() + { + return $this->gender; + } + public function setGivenName($givenName) + { + $this->givenName = $givenName; + } + public function getGivenName() + { + return $this->givenName; + } + public function setHd($hd) + { + $this->hd = $hd; + } + public function getHd() + { + return $this->hd; + } + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setLink($link) + { + $this->link = $link; + } + public function getLink() + { + return $this->link; + } + public function setLocale($locale) + { + $this->locale = $locale; + } + public function getLocale() + { + return $this->locale; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setPicture($picture) + { + $this->picture = $picture; + } + public function getPicture() + { + return $this->picture; + } + public function setVerifiedEmail($verifiedEmail) + { + $this->verifiedEmail = $verifiedEmail; + } + public function getVerifiedEmail() + { + return $this->verifiedEmail; + } +} diff --git a/plugins/updraftplus/includes/Google/Service/Reports.php b/plugins/updraftplus/includes/Google/Service/Reports.php new file mode 100644 index 0000000..a459861 --- /dev/null +++ b/plugins/updraftplus/includes/Google/Service/Reports.php @@ -0,0 +1,1135 @@ + + * Allows the administrators of Google Apps customers to fetch reports about the + * usage, collaboration, security and risk for their users.

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Reports extends Google_Service +{ + /** View audit reports of Google Apps for your domain. */ + const ADMIN_REPORTS_AUDIT_READONLY = + "https://www.googleapis.com/auth/admin.reports.audit.readonly"; + /** View usage reports of Google Apps for your domain. */ + const ADMIN_REPORTS_USAGE_READONLY = + "https://www.googleapis.com/auth/admin.reports.usage.readonly"; + + public $activities; + public $channels; + public $customerUsageReports; + public $userUsageReport; + + + /** + * Constructs the internal representation of the Reports service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'admin/reports/v1/'; + $this->version = 'reports_v1'; + $this->serviceName = 'admin'; + + $this->activities = new Google_Service_Reports_Activities_Resource( + $this, + $this->serviceName, + 'activities', + array( + 'methods' => array( + 'list' => array( + 'path' => 'activity/users/{userKey}/applications/{applicationName}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'applicationName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'startTime' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'actorIpAddress' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'eventName' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'filters' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'endTime' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'customerId' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'watch' => array( + 'path' => 'activity/users/{userKey}/applications/{applicationName}/watch', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'applicationName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'startTime' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'actorIpAddress' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'eventName' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'filters' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'endTime' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'customerId' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->channels = new Google_Service_Reports_Channels_Resource( + $this, + $this->serviceName, + 'channels', + array( + 'methods' => array( + 'stop' => array( + 'path' => '/admin/reports_v1/channels/stop', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + $this->customerUsageReports = new Google_Service_Reports_CustomerUsageReports_Resource( + $this, + $this->serviceName, + 'customerUsageReports', + array( + 'methods' => array( + 'get' => array( + 'path' => 'usage/dates/{date}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'date' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'customerId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'parameters' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->userUsageReport = new Google_Service_Reports_UserUsageReport_Resource( + $this, + $this->serviceName, + 'userUsageReport', + array( + 'methods' => array( + 'get' => array( + 'path' => 'usage/users/{userKey}/dates/{date}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'date' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'parameters' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'filters' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'customerId' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "activities" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Reports(...); + * $activities = $adminService->activities; + * + */ +class Google_Service_Reports_Activities_Resource extends Google_Service_Resource +{ + + /** + * Retrieves a list of activities for a specific customer and application. + * (activities.listActivities) + * + * @param string $userKey Represents the profile id or the user email for which + * the data should be filtered. When 'all' is specified as the userKey, it + * returns usageReports for all users. + * @param string $applicationName Application name for which the events are to + * be retrieved. + * @param array $optParams Optional parameters. + * + * @opt_param string startTime Return events which occured at or after this + * time. + * @opt_param string actorIpAddress IP Address of host where the event was + * performed. Supports both IPv4 and IPv6 addresses. + * @opt_param int maxResults Number of activity records to be shown in each + * page. + * @opt_param string eventName Name of the event being queried. + * @opt_param string pageToken Token to specify next page. + * @opt_param string filters Event parameters in the form [parameter1 + * name][operator][parameter1 value],[parameter2 name][operator][parameter2 + * value],... + * @opt_param string endTime Return events which occured at or before this time. + * @opt_param string customerId Represents the customer for which the data is to + * be fetched. + * @return Google_Service_Reports_Activities + */ + public function listActivities($userKey, $applicationName, $optParams = array()) + { + $params = array('userKey' => $userKey, 'applicationName' => $applicationName); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Reports_Activities"); + } + + /** + * Push changes to activities (activities.watch) + * + * @param string $userKey Represents the profile id or the user email for which + * the data should be filtered. When 'all' is specified as the userKey, it + * returns usageReports for all users. + * @param string $applicationName Application name for which the events are to + * be retrieved. + * @param Google_Channel $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string startTime Return events which occured at or after this + * time. + * @opt_param string actorIpAddress IP Address of host where the event was + * performed. Supports both IPv4 and IPv6 addresses. + * @opt_param int maxResults Number of activity records to be shown in each + * page. + * @opt_param string eventName Name of the event being queried. + * @opt_param string pageToken Token to specify next page. + * @opt_param string filters Event parameters in the form [parameter1 + * name][operator][parameter1 value],[parameter2 name][operator][parameter2 + * value],... + * @opt_param string endTime Return events which occured at or before this time. + * @opt_param string customerId Represents the customer for which the data is to + * be fetched. + * @return Google_Service_Reports_Channel + */ + public function watch($userKey, $applicationName, Google_Service_Reports_Channel $postBody, $optParams = array()) + { + $params = array('userKey' => $userKey, 'applicationName' => $applicationName, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('watch', array($params), "Google_Service_Reports_Channel"); + } +} + +/** + * The "channels" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Reports(...); + * $channels = $adminService->channels; + * + */ +class Google_Service_Reports_Channels_Resource extends Google_Service_Resource +{ + + /** + * Stop watching resources through this channel (channels.stop) + * + * @param Google_Channel $postBody + * @param array $optParams Optional parameters. + */ + public function stop(Google_Service_Reports_Channel $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('stop', array($params)); + } +} + +/** + * The "customerUsageReports" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Reports(...); + * $customerUsageReports = $adminService->customerUsageReports; + * + */ +class Google_Service_Reports_CustomerUsageReports_Resource extends Google_Service_Resource +{ + + /** + * Retrieves a report which is a collection of properties / statistics for a + * specific customer. (customerUsageReports.get) + * + * @param string $date Represents the date in yyyy-mm-dd format for which the + * data is to be fetched. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Token to specify next page. + * @opt_param string customerId Represents the customer for which the data is to + * be fetched. + * @opt_param string parameters Represents the application name, parameter name + * pairs to fetch in csv as app_name1:param_name1, app_name2:param_name2. + * @return Google_Service_Reports_UsageReports + */ + public function get($date, $optParams = array()) + { + $params = array('date' => $date); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Reports_UsageReports"); + } +} + +/** + * The "userUsageReport" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Reports(...); + * $userUsageReport = $adminService->userUsageReport; + * + */ +class Google_Service_Reports_UserUsageReport_Resource extends Google_Service_Resource +{ + + /** + * Retrieves a report which is a collection of properties / statistics for a set + * of users. (userUsageReport.get) + * + * @param string $userKey Represents the profile id or the user email for which + * the data should be filtered. + * @param string $date Represents the date in yyyy-mm-dd format for which the + * data is to be fetched. + * @param array $optParams Optional parameters. + * + * @opt_param string parameters Represents the application name, parameter name + * pairs to fetch in csv as app_name1:param_name1, app_name2:param_name2. + * @opt_param string maxResults Maximum number of results to return. Maximum + * allowed is 1000 + * @opt_param string pageToken Token to specify next page. + * @opt_param string filters Represents the set of filters including parameter + * operator value. + * @opt_param string customerId Represents the customer for which the data is to + * be fetched. + * @return Google_Service_Reports_UsageReports + */ + public function get($userKey, $date, $optParams = array()) + { + $params = array('userKey' => $userKey, 'date' => $date); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Reports_UsageReports"); + } +} + + + + +class Google_Service_Reports_Activities extends Google_Collection +{ + protected $collection_key = 'items'; + protected $internal_gapi_mappings = array( + ); + public $etag; + protected $itemsType = 'Google_Service_Reports_Activity'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setItems($items) + { + $this->items = $items; + } + public function getItems() + { + return $this->items; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Reports_Activity extends Google_Collection +{ + protected $collection_key = 'events'; + protected $internal_gapi_mappings = array( + ); + protected $actorType = 'Google_Service_Reports_ActivityActor'; + protected $actorDataType = ''; + public $etag; + protected $eventsType = 'Google_Service_Reports_ActivityEvents'; + protected $eventsDataType = 'array'; + protected $idType = 'Google_Service_Reports_ActivityId'; + protected $idDataType = ''; + public $ipAddress; + public $kind; + public $ownerDomain; + + + public function setActor(Google_Service_Reports_ActivityActor $actor) + { + $this->actor = $actor; + } + public function getActor() + { + return $this->actor; + } + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setEvents($events) + { + $this->events = $events; + } + public function getEvents() + { + return $this->events; + } + public function setId(Google_Service_Reports_ActivityId $id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setIpAddress($ipAddress) + { + $this->ipAddress = $ipAddress; + } + public function getIpAddress() + { + return $this->ipAddress; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setOwnerDomain($ownerDomain) + { + $this->ownerDomain = $ownerDomain; + } + public function getOwnerDomain() + { + return $this->ownerDomain; + } +} + +class Google_Service_Reports_ActivityActor extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $callerType; + public $email; + public $key; + public $profileId; + + + public function setCallerType($callerType) + { + $this->callerType = $callerType; + } + public function getCallerType() + { + return $this->callerType; + } + public function setEmail($email) + { + $this->email = $email; + } + public function getEmail() + { + return $this->email; + } + public function setKey($key) + { + $this->key = $key; + } + public function getKey() + { + return $this->key; + } + public function setProfileId($profileId) + { + $this->profileId = $profileId; + } + public function getProfileId() + { + return $this->profileId; + } +} + +class Google_Service_Reports_ActivityEvents extends Google_Collection +{ + protected $collection_key = 'parameters'; + protected $internal_gapi_mappings = array( + ); + public $name; + protected $parametersType = 'Google_Service_Reports_ActivityEventsParameters'; + protected $parametersDataType = 'array'; + public $type; + + + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setParameters($parameters) + { + $this->parameters = $parameters; + } + public function getParameters() + { + return $this->parameters; + } + public function setType($type) + { + $this->type = $type; + } + public function getType() + { + return $this->type; + } +} + +class Google_Service_Reports_ActivityEventsParameters extends Google_Collection +{ + protected $collection_key = 'multiValue'; + protected $internal_gapi_mappings = array( + ); + public $boolValue; + public $intValue; + public $multiIntValue; + public $multiValue; + public $name; + public $value; + + + public function setBoolValue($boolValue) + { + $this->boolValue = $boolValue; + } + public function getBoolValue() + { + return $this->boolValue; + } + public function setIntValue($intValue) + { + $this->intValue = $intValue; + } + public function getIntValue() + { + return $this->intValue; + } + public function setMultiIntValue($multiIntValue) + { + $this->multiIntValue = $multiIntValue; + } + public function getMultiIntValue() + { + return $this->multiIntValue; + } + public function setMultiValue($multiValue) + { + $this->multiValue = $multiValue; + } + public function getMultiValue() + { + return $this->multiValue; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setValue($value) + { + $this->value = $value; + } + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Reports_ActivityId extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $applicationName; + public $customerId; + public $time; + public $uniqueQualifier; + + + public function setApplicationName($applicationName) + { + $this->applicationName = $applicationName; + } + public function getApplicationName() + { + return $this->applicationName; + } + public function setCustomerId($customerId) + { + $this->customerId = $customerId; + } + public function getCustomerId() + { + return $this->customerId; + } + public function setTime($time) + { + $this->time = $time; + } + public function getTime() + { + return $this->time; + } + public function setUniqueQualifier($uniqueQualifier) + { + $this->uniqueQualifier = $uniqueQualifier; + } + public function getUniqueQualifier() + { + return $this->uniqueQualifier; + } +} + +class Google_Service_Reports_Channel extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $address; + public $expiration; + public $id; + public $kind; + public $params; + public $payload; + public $resourceId; + public $resourceUri; + public $token; + public $type; + + + public function setAddress($address) + { + $this->address = $address; + } + public function getAddress() + { + return $this->address; + } + public function setExpiration($expiration) + { + $this->expiration = $expiration; + } + public function getExpiration() + { + return $this->expiration; + } + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setParams($params) + { + $this->params = $params; + } + public function getParams() + { + return $this->params; + } + public function setPayload($payload) + { + $this->payload = $payload; + } + public function getPayload() + { + return $this->payload; + } + public function setResourceId($resourceId) + { + $this->resourceId = $resourceId; + } + public function getResourceId() + { + return $this->resourceId; + } + public function setResourceUri($resourceUri) + { + $this->resourceUri = $resourceUri; + } + public function getResourceUri() + { + return $this->resourceUri; + } + public function setToken($token) + { + $this->token = $token; + } + public function getToken() + { + return $this->token; + } + public function setType($type) + { + $this->type = $type; + } + public function getType() + { + return $this->type; + } +} + +class Google_Service_Reports_ChannelParams extends Google_Model +{ +} + +class Google_Service_Reports_UsageReport extends Google_Collection +{ + protected $collection_key = 'parameters'; + protected $internal_gapi_mappings = array( + ); + public $date; + protected $entityType = 'Google_Service_Reports_UsageReportEntity'; + protected $entityDataType = ''; + public $etag; + public $kind; + protected $parametersType = 'Google_Service_Reports_UsageReportParameters'; + protected $parametersDataType = 'array'; + + + public function setDate($date) + { + $this->date = $date; + } + public function getDate() + { + return $this->date; + } + public function setEntity(Google_Service_Reports_UsageReportEntity $entity) + { + $this->entity = $entity; + } + public function getEntity() + { + return $this->entity; + } + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setParameters($parameters) + { + $this->parameters = $parameters; + } + public function getParameters() + { + return $this->parameters; + } +} + +class Google_Service_Reports_UsageReportEntity extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $customerId; + public $profileId; + public $type; + public $userEmail; + + + public function setCustomerId($customerId) + { + $this->customerId = $customerId; + } + public function getCustomerId() + { + return $this->customerId; + } + public function setProfileId($profileId) + { + $this->profileId = $profileId; + } + public function getProfileId() + { + return $this->profileId; + } + public function setType($type) + { + $this->type = $type; + } + public function getType() + { + return $this->type; + } + public function setUserEmail($userEmail) + { + $this->userEmail = $userEmail; + } + public function getUserEmail() + { + return $this->userEmail; + } +} + +class Google_Service_Reports_UsageReportParameters extends Google_Collection +{ + protected $collection_key = 'msgValue'; + protected $internal_gapi_mappings = array( + ); + public $boolValue; + public $datetimeValue; + public $intValue; + public $msgValue; + public $name; + public $stringValue; + + + public function setBoolValue($boolValue) + { + $this->boolValue = $boolValue; + } + public function getBoolValue() + { + return $this->boolValue; + } + public function setDatetimeValue($datetimeValue) + { + $this->datetimeValue = $datetimeValue; + } + public function getDatetimeValue() + { + return $this->datetimeValue; + } + public function setIntValue($intValue) + { + $this->intValue = $intValue; + } + public function getIntValue() + { + return $this->intValue; + } + public function setMsgValue($msgValue) + { + $this->msgValue = $msgValue; + } + public function getMsgValue() + { + return $this->msgValue; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setStringValue($stringValue) + { + $this->stringValue = $stringValue; + } + public function getStringValue() + { + return $this->stringValue; + } +} + +class Google_Service_Reports_UsageReportParametersMsgValue extends Google_Model +{ +} + +class Google_Service_Reports_UsageReports extends Google_Collection +{ + protected $collection_key = 'warnings'; + protected $internal_gapi_mappings = array( + ); + public $etag; + public $kind; + public $nextPageToken; + protected $usageReportsType = 'Google_Service_Reports_UsageReport'; + protected $usageReportsDataType = 'array'; + protected $warningsType = 'Google_Service_Reports_UsageReportsWarnings'; + protected $warningsDataType = 'array'; + + + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } + public function setUsageReports($usageReports) + { + $this->usageReports = $usageReports; + } + public function getUsageReports() + { + return $this->usageReports; + } + public function setWarnings($warnings) + { + $this->warnings = $warnings; + } + public function getWarnings() + { + return $this->warnings; + } +} + +class Google_Service_Reports_UsageReportsWarnings extends Google_Collection +{ + protected $collection_key = 'data'; + protected $internal_gapi_mappings = array( + ); + public $code; + protected $dataType = 'Google_Service_Reports_UsageReportsWarningsData'; + protected $dataDataType = 'array'; + public $message; + + + public function setCode($code) + { + $this->code = $code; + } + public function getCode() + { + return $this->code; + } + public function setData($data) + { + $this->data = $data; + } + public function getData() + { + return $this->data; + } + public function setMessage($message) + { + $this->message = $message; + } + public function getMessage() + { + return $this->message; + } +} + +class Google_Service_Reports_UsageReportsWarningsData extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $key; + public $value; + + + public function setKey($key) + { + $this->key = $key; + } + public function getKey() + { + return $this->key; + } + public function setValue($value) + { + $this->value = $value; + } + public function getValue() + { + return $this->value; + } +} diff --git a/plugins/updraftplus/includes/Google/Service/Resource.php b/plugins/updraftplus/includes/Google/Service/Resource.php new file mode 100644 index 0000000..537da52 --- /dev/null +++ b/plugins/updraftplus/includes/Google/Service/Resource.php @@ -0,0 +1,252 @@ + array('type' => 'string', 'location' => 'query'), + 'fields' => array('type' => 'string', 'location' => 'query'), + 'trace' => array('type' => 'string', 'location' => 'query'), + 'userIp' => array('type' => 'string', 'location' => 'query'), + 'quotaUser' => array('type' => 'string', 'location' => 'query'), + 'data' => array('type' => 'string', 'location' => 'body'), + 'mimeType' => array('type' => 'string', 'location' => 'header'), + 'uploadType' => array('type' => 'string', 'location' => 'query'), + 'mediaUpload' => array('type' => 'complex', 'location' => 'query'), + 'prettyPrint' => array('type' => 'string', 'location' => 'query'), + ); + + /** @var string $rootUrl */ + private $rootUrl; + + /** @var Google_Client $client */ + private $client; + + /** @var string $serviceName */ + private $serviceName; + + /** @var string $servicePath */ + private $servicePath; + + /** @var string $resourceName */ + private $resourceName; + + /** @var array $methods */ + private $methods; + + public function __construct($service, $serviceName, $resourceName, $resource) + { + $this->rootUrl = $service->rootUrl; + $this->client = $service->getClient(); + $this->servicePath = $service->servicePath; + $this->serviceName = $serviceName; + $this->resourceName = $resourceName; + $this->methods = is_array($resource) && isset($resource['methods']) ? + $resource['methods'] : + array($resourceName => $resource); + } + + /** + * TODO(ianbarber): This function needs simplifying. + * @param $name + * @param $arguments + * @param $expected_class - optional, the expected class name + * @return Google_Http_Request|expected_class + * @throws Google_Exception + */ + public function call($name, $arguments, $expected_class = null) + { + if (! isset($this->methods[$name])) { + $this->client->getLogger()->error( + 'Service method unknown', + array( + 'service' => $this->serviceName, + 'resource' => $this->resourceName, + 'method' => $name + ) + ); + + throw new Google_Exception( + "Unknown function: " . + "{$this->serviceName}->{$this->resourceName}->{$name}()" + ); + } + $method = $this->methods[$name]; + $parameters = $arguments[0]; + + // postBody is a special case since it's not defined in the discovery + // document as parameter, but we abuse the param entry for storing it. + $postBody = null; + if (isset($parameters['postBody'])) { + if ($parameters['postBody'] instanceof Google_Model) { + // In the cases the post body is an existing object, we want + // to use the smart method to create a simple object for + // for JSONification. + $parameters['postBody'] = $parameters['postBody']->toSimpleObject(); + } else if (is_object($parameters['postBody'])) { + // If the post body is another kind of object, we will try and + // wrangle it into a sensible format. + $parameters['postBody'] = + $this->convertToArrayAndStripNulls($parameters['postBody']); + } + $postBody = json_encode($parameters['postBody']); + unset($parameters['postBody']); + } + + // TODO(ianbarber): optParams here probably should have been + // handled already - this may well be redundant code. + if (isset($parameters['optParams'])) { + $optParams = $parameters['optParams']; + unset($parameters['optParams']); + $parameters = array_merge($parameters, $optParams); + } + + if (!isset($method['parameters'])) { + $method['parameters'] = array(); + } + + $method['parameters'] = array_merge( + $method['parameters'], + $this->stackParameters + ); + foreach ($parameters as $key => $val) { + if ($key != 'postBody' && ! isset($method['parameters'][$key])) { + $this->client->getLogger()->error( + 'Service parameter unknown', + array( + 'service' => $this->serviceName, + 'resource' => $this->resourceName, + 'method' => $name, + 'parameter' => $key + ) + ); + throw new Google_Exception("($name) unknown parameter: '$key'"); + } + } + + foreach ($method['parameters'] as $paramName => $paramSpec) { + if (isset($paramSpec['required']) && + $paramSpec['required'] && + ! isset($parameters[$paramName]) + ) { + $this->client->getLogger()->error( + 'Service parameter missing', + array( + 'service' => $this->serviceName, + 'resource' => $this->resourceName, + 'method' => $name, + 'parameter' => $paramName + ) + ); + throw new Google_Exception("($name) missing required param: '$paramName'"); + } + if (isset($parameters[$paramName])) { + $value = $parameters[$paramName]; + $parameters[$paramName] = $paramSpec; + $parameters[$paramName]['value'] = $value; + unset($parameters[$paramName]['required']); + } else { + // Ensure we don't pass nulls. + unset($parameters[$paramName]); + } + } + + $this->client->getLogger()->info( + 'Service Call', + array( + 'service' => $this->serviceName, + 'resource' => $this->resourceName, + 'method' => $name, + 'arguments' => $parameters, + ) + ); + + $url = Google_Http_REST::createRequestUri( + $this->servicePath, + $method['path'], + $parameters + ); + $httpRequest = new Google_Http_Request( + $url, + $method['httpMethod'], + null, + $postBody + ); + + if ($this->rootUrl) { + $httpRequest->setBaseComponent($this->rootUrl); + } else { + $httpRequest->setBaseComponent($this->client->getBasePath()); + } + + if ($postBody) { + $contentTypeHeader = array(); + $contentTypeHeader['content-type'] = 'application/json; charset=UTF-8'; + $httpRequest->setRequestHeaders($contentTypeHeader); + $httpRequest->setPostBody($postBody); + } + + $httpRequest = $this->client->getAuth()->sign($httpRequest); + $httpRequest->setExpectedClass($expected_class); + + if (isset($parameters['data']) && + ($parameters['uploadType']['value'] == 'media' || $parameters['uploadType']['value'] == 'multipart')) { + // If we are doing a simple media upload, trigger that as a convenience. + $mfu = new Google_Http_MediaFileUpload( + $this->client, + $httpRequest, + isset($parameters['mimeType']) ? $parameters['mimeType']['value'] : 'application/octet-stream', + $parameters['data']['value'] + ); + } + + if (isset($parameters['alt']) && $parameters['alt']['value'] == 'media') { + $httpRequest->enableExpectedRaw(); + } + + if ($this->client->shouldDefer()) { + // If we are in batch or upload mode, return the raw request. + return $httpRequest; + } + + return $this->client->execute($httpRequest); + } + + protected function convertToArrayAndStripNulls($o) + { + $o = (array) $o; + foreach ($o as $k => $v) { + if ($v === null) { + unset($o[$k]); + } elseif (is_object($v) || is_array($v)) { + $o[$k] = $this->convertToArrayAndStripNulls($o[$k]); + } + } + return $o; + } +} diff --git a/plugins/updraftplus/includes/Google/Service/Resourceviews.php b/plugins/updraftplus/includes/Google/Service/Resourceviews.php new file mode 100644 index 0000000..10eb4b1 --- /dev/null +++ b/plugins/updraftplus/includes/Google/Service/Resourceviews.php @@ -0,0 +1,1341 @@ + + * The Resource View API allows users to create and manage logical sets of + * Google Compute Engine instances.

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Resourceviews extends Google_Service +{ + /** View and manage your data across Google Cloud Platform services. */ + const CLOUD_PLATFORM = + "https://www.googleapis.com/auth/cloud-platform"; + /** View and manage your Google Compute Engine resources. */ + const COMPUTE = + "https://www.googleapis.com/auth/compute"; + /** View your Google Compute Engine resources. */ + const COMPUTE_READONLY = + "https://www.googleapis.com/auth/compute.readonly"; + /** View and manage your Google Cloud Platform management resources and deployment status information. */ + const NDEV_CLOUDMAN = + "https://www.googleapis.com/auth/ndev.cloudman"; + /** View your Google Cloud Platform management resources and deployment status information. */ + const NDEV_CLOUDMAN_READONLY = + "https://www.googleapis.com/auth/ndev.cloudman.readonly"; + + public $zoneOperations; + public $zoneViews; + + + /** + * Constructs the internal representation of the Resourceviews service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'resourceviews/v1beta2/projects/'; + $this->version = 'v1beta2'; + $this->serviceName = 'resourceviews'; + + $this->zoneOperations = new Google_Service_Resourceviews_ZoneOperations_Resource( + $this, + $this->serviceName, + 'zoneOperations', + array( + 'methods' => array( + 'get' => array( + 'path' => '{project}/zones/{zone}/operations/{operation}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'operation' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/zones/{zone}/operations', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->zoneViews = new Google_Service_Resourceviews_ZoneViews_Resource( + $this, + $this->serviceName, + 'zoneViews', + array( + 'methods' => array( + 'addResources' => array( + 'path' => '{project}/zones/{zone}/resourceViews/{resourceView}/addResources', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'resourceView' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'delete' => array( + 'path' => '{project}/zones/{zone}/resourceViews/{resourceView}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'resourceView' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{project}/zones/{zone}/resourceViews/{resourceView}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'resourceView' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'getService' => array( + 'path' => '{project}/zones/{zone}/resourceViews/{resourceView}/getService', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'resourceView' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'resourceName' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'insert' => array( + 'path' => '{project}/zones/{zone}/resourceViews', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/zones/{zone}/resourceViews', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'listResources' => array( + 'path' => '{project}/zones/{zone}/resourceViews/{resourceView}/resources', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'resourceView' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'listState' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'format' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'serviceName' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'removeResources' => array( + 'path' => '{project}/zones/{zone}/resourceViews/{resourceView}/removeResources', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'resourceView' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'setService' => array( + 'path' => '{project}/zones/{zone}/resourceViews/{resourceView}/setService', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'resourceView' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "zoneOperations" collection of methods. + * Typical usage is: + * + * $resourceviewsService = new Google_Service_Resourceviews(...); + * $zoneOperations = $resourceviewsService->zoneOperations; + * + */ +class Google_Service_Resourceviews_ZoneOperations_Resource extends Google_Service_Resource +{ + + /** + * Retrieves the specified zone-specific operation resource. + * (zoneOperations.get) + * + * @param string $project Name of the project scoping this request. + * @param string $zone Name of the zone scoping this request. + * @param string $operation Name of the operation resource to return. + * @param array $optParams Optional parameters. + * @return Google_Service_Resourceviews_Operation + */ + public function get($project, $zone, $operation, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'operation' => $operation); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Resourceviews_Operation"); + } + + /** + * Retrieves the list of operation resources contained within the specified + * zone. (zoneOperations.listZoneOperations) + * + * @param string $project Name of the project scoping this request. + * @param string $zone Name of the zone scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter Optional. Filter expression for filtering listed + * resources. + * @opt_param string pageToken Optional. Tag returned by a previous list request + * truncated by maxResults. Used to continue a previous list request. + * @opt_param string maxResults Optional. Maximum count of results to be + * returned. Maximum value is 500 and default value is 500. + * @return Google_Service_Resourceviews_OperationList + */ + public function listZoneOperations($project, $zone, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Resourceviews_OperationList"); + } +} + +/** + * The "zoneViews" collection of methods. + * Typical usage is: + * + * $resourceviewsService = new Google_Service_Resourceviews(...); + * $zoneViews = $resourceviewsService->zoneViews; + * + */ +class Google_Service_Resourceviews_ZoneViews_Resource extends Google_Service_Resource +{ + + /** + * Add resources to the view. (zoneViews.addResources) + * + * @param string $project The project name of the resource view. + * @param string $zone The zone name of the resource view. + * @param string $resourceView The name of the resource view. + * @param Google_ZoneViewsAddResourcesRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Resourceviews_Operation + */ + public function addResources($project, $zone, $resourceView, Google_Service_Resourceviews_ZoneViewsAddResourcesRequest $postBody, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'resourceView' => $resourceView, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('addResources', array($params), "Google_Service_Resourceviews_Operation"); + } + + /** + * Delete a resource view. (zoneViews.delete) + * + * @param string $project The project name of the resource view. + * @param string $zone The zone name of the resource view. + * @param string $resourceView The name of the resource view. + * @param array $optParams Optional parameters. + * @return Google_Service_Resourceviews_Operation + */ + public function delete($project, $zone, $resourceView, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'resourceView' => $resourceView); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_Resourceviews_Operation"); + } + + /** + * Get the information of a zonal resource view. (zoneViews.get) + * + * @param string $project The project name of the resource view. + * @param string $zone The zone name of the resource view. + * @param string $resourceView The name of the resource view. + * @param array $optParams Optional parameters. + * @return Google_Service_Resourceviews_ResourceView + */ + public function get($project, $zone, $resourceView, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'resourceView' => $resourceView); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Resourceviews_ResourceView"); + } + + /** + * Get the service information of a resource view or a resource. + * (zoneViews.getService) + * + * @param string $project The project name of the resource view. + * @param string $zone The zone name of the resource view. + * @param string $resourceView The name of the resource view. + * @param array $optParams Optional parameters. + * + * @opt_param string resourceName The name of the resource if user wants to get + * the service information of the resource. + * @return Google_Service_Resourceviews_ZoneViewsGetServiceResponse + */ + public function getService($project, $zone, $resourceView, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'resourceView' => $resourceView); + $params = array_merge($params, $optParams); + return $this->call('getService', array($params), "Google_Service_Resourceviews_ZoneViewsGetServiceResponse"); + } + + /** + * Create a resource view. (zoneViews.insert) + * + * @param string $project The project name of the resource view. + * @param string $zone The zone name of the resource view. + * @param Google_ResourceView $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Resourceviews_Operation + */ + public function insert($project, $zone, Google_Service_Resourceviews_ResourceView $postBody, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Resourceviews_Operation"); + } + + /** + * List resource views. (zoneViews.listZoneViews) + * + * @param string $project The project name of the resource view. + * @param string $zone The zone name of the resource view. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Specifies a nextPageToken returned by a previous + * list request. This token can be used to request the next page of results from + * a previous list request. + * @opt_param int maxResults Maximum count of results to be returned. Acceptable + * values are 0 to 5000, inclusive. (Default: 5000) + * @return Google_Service_Resourceviews_ZoneViewsList + */ + public function listZoneViews($project, $zone, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Resourceviews_ZoneViewsList"); + } + + /** + * List the resources of the resource view. (zoneViews.listResources) + * + * @param string $project The project name of the resource view. + * @param string $zone The zone name of the resource view. + * @param string $resourceView The name of the resource view. + * @param array $optParams Optional parameters. + * + * @opt_param string listState The state of the instance to list. By default, it + * lists all instances. + * @opt_param string format The requested format of the return value. It can be + * URL or URL_PORT. A JSON object will be included in the response based on the + * format. The default format is NONE, which results in no JSON in the response. + * @opt_param int maxResults Maximum count of results to be returned. Acceptable + * values are 0 to 5000, inclusive. (Default: 5000) + * @opt_param string pageToken Specifies a nextPageToken returned by a previous + * list request. This token can be used to request the next page of results from + * a previous list request. + * @opt_param string serviceName The service name to return in the response. It + * is optional and if it is not set, all the service end points will be + * returned. + * @return Google_Service_Resourceviews_ZoneViewsListResourcesResponse + */ + public function listResources($project, $zone, $resourceView, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'resourceView' => $resourceView); + $params = array_merge($params, $optParams); + return $this->call('listResources', array($params), "Google_Service_Resourceviews_ZoneViewsListResourcesResponse"); + } + + /** + * Remove resources from the view. (zoneViews.removeResources) + * + * @param string $project The project name of the resource view. + * @param string $zone The zone name of the resource view. + * @param string $resourceView The name of the resource view. + * @param Google_ZoneViewsRemoveResourcesRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Resourceviews_Operation + */ + public function removeResources($project, $zone, $resourceView, Google_Service_Resourceviews_ZoneViewsRemoveResourcesRequest $postBody, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'resourceView' => $resourceView, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('removeResources', array($params), "Google_Service_Resourceviews_Operation"); + } + + /** + * Update the service information of a resource view or a resource. + * (zoneViews.setService) + * + * @param string $project The project name of the resource view. + * @param string $zone The zone name of the resource view. + * @param string $resourceView The name of the resource view. + * @param Google_ZoneViewsSetServiceRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Resourceviews_Operation + */ + public function setService($project, $zone, $resourceView, Google_Service_Resourceviews_ZoneViewsSetServiceRequest $postBody, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'resourceView' => $resourceView, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('setService', array($params), "Google_Service_Resourceviews_Operation"); + } +} + + + + +class Google_Service_Resourceviews_Label extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $key; + public $value; + + + public function setKey($key) + { + $this->key = $key; + } + public function getKey() + { + return $this->key; + } + public function setValue($value) + { + $this->value = $value; + } + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Resourceviews_ListResourceResponseItem extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $endpoints; + public $resource; + + + public function setEndpoints($endpoints) + { + $this->endpoints = $endpoints; + } + public function getEndpoints() + { + return $this->endpoints; + } + public function setResource($resource) + { + $this->resource = $resource; + } + public function getResource() + { + return $this->resource; + } +} + +class Google_Service_Resourceviews_ListResourceResponseItemEndpoints extends Google_Model +{ +} + +class Google_Service_Resourceviews_Operation extends Google_Collection +{ + protected $collection_key = 'warnings'; + protected $internal_gapi_mappings = array( + ); + public $clientOperationId; + public $creationTimestamp; + public $endTime; + protected $errorType = 'Google_Service_Resourceviews_OperationError'; + protected $errorDataType = ''; + public $httpErrorMessage; + public $httpErrorStatusCode; + public $id; + public $insertTime; + public $kind; + public $name; + public $operationType; + public $progress; + public $region; + public $selfLink; + public $startTime; + public $status; + public $statusMessage; + public $targetId; + public $targetLink; + public $user; + protected $warningsType = 'Google_Service_Resourceviews_OperationWarnings'; + protected $warningsDataType = 'array'; + public $zone; + + + public function setClientOperationId($clientOperationId) + { + $this->clientOperationId = $clientOperationId; + } + public function getClientOperationId() + { + return $this->clientOperationId; + } + public function setCreationTimestamp($creationTimestamp) + { + $this->creationTimestamp = $creationTimestamp; + } + public function getCreationTimestamp() + { + return $this->creationTimestamp; + } + public function setEndTime($endTime) + { + $this->endTime = $endTime; + } + public function getEndTime() + { + return $this->endTime; + } + public function setError(Google_Service_Resourceviews_OperationError $error) + { + $this->error = $error; + } + public function getError() + { + return $this->error; + } + public function setHttpErrorMessage($httpErrorMessage) + { + $this->httpErrorMessage = $httpErrorMessage; + } + public function getHttpErrorMessage() + { + return $this->httpErrorMessage; + } + public function setHttpErrorStatusCode($httpErrorStatusCode) + { + $this->httpErrorStatusCode = $httpErrorStatusCode; + } + public function getHttpErrorStatusCode() + { + return $this->httpErrorStatusCode; + } + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setInsertTime($insertTime) + { + $this->insertTime = $insertTime; + } + public function getInsertTime() + { + return $this->insertTime; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setOperationType($operationType) + { + $this->operationType = $operationType; + } + public function getOperationType() + { + return $this->operationType; + } + public function setProgress($progress) + { + $this->progress = $progress; + } + public function getProgress() + { + return $this->progress; + } + public function setRegion($region) + { + $this->region = $region; + } + public function getRegion() + { + return $this->region; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } + public function setStartTime($startTime) + { + $this->startTime = $startTime; + } + public function getStartTime() + { + return $this->startTime; + } + public function setStatus($status) + { + $this->status = $status; + } + public function getStatus() + { + return $this->status; + } + public function setStatusMessage($statusMessage) + { + $this->statusMessage = $statusMessage; + } + public function getStatusMessage() + { + return $this->statusMessage; + } + public function setTargetId($targetId) + { + $this->targetId = $targetId; + } + public function getTargetId() + { + return $this->targetId; + } + public function setTargetLink($targetLink) + { + $this->targetLink = $targetLink; + } + public function getTargetLink() + { + return $this->targetLink; + } + public function setUser($user) + { + $this->user = $user; + } + public function getUser() + { + return $this->user; + } + public function setWarnings($warnings) + { + $this->warnings = $warnings; + } + public function getWarnings() + { + return $this->warnings; + } + public function setZone($zone) + { + $this->zone = $zone; + } + public function getZone() + { + return $this->zone; + } +} + +class Google_Service_Resourceviews_OperationError extends Google_Collection +{ + protected $collection_key = 'errors'; + protected $internal_gapi_mappings = array( + ); + protected $errorsType = 'Google_Service_Resourceviews_OperationErrorErrors'; + protected $errorsDataType = 'array'; + + + public function setErrors($errors) + { + $this->errors = $errors; + } + public function getErrors() + { + return $this->errors; + } +} + +class Google_Service_Resourceviews_OperationErrorErrors extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $code; + public $location; + public $message; + + + public function setCode($code) + { + $this->code = $code; + } + public function getCode() + { + return $this->code; + } + public function setLocation($location) + { + $this->location = $location; + } + public function getLocation() + { + return $this->location; + } + public function setMessage($message) + { + $this->message = $message; + } + public function getMessage() + { + return $this->message; + } +} + +class Google_Service_Resourceviews_OperationList extends Google_Collection +{ + protected $collection_key = 'items'; + protected $internal_gapi_mappings = array( + ); + public $id; + protected $itemsType = 'Google_Service_Resourceviews_Operation'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $selfLink; + + + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setItems($items) + { + $this->items = $items; + } + public function getItems() + { + return $this->items; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Resourceviews_OperationWarnings extends Google_Collection +{ + protected $collection_key = 'data'; + protected $internal_gapi_mappings = array( + ); + public $code; + protected $dataType = 'Google_Service_Resourceviews_OperationWarningsData'; + protected $dataDataType = 'array'; + public $message; + + + public function setCode($code) + { + $this->code = $code; + } + public function getCode() + { + return $this->code; + } + public function setData($data) + { + $this->data = $data; + } + public function getData() + { + return $this->data; + } + public function setMessage($message) + { + $this->message = $message; + } + public function getMessage() + { + return $this->message; + } +} + +class Google_Service_Resourceviews_OperationWarningsData extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $key; + public $value; + + + public function setKey($key) + { + $this->key = $key; + } + public function getKey() + { + return $this->key; + } + public function setValue($value) + { + $this->value = $value; + } + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Resourceviews_ResourceView extends Google_Collection +{ + protected $collection_key = 'resources'; + protected $internal_gapi_mappings = array( + ); + public $creationTimestamp; + public $description; + protected $endpointsType = 'Google_Service_Resourceviews_ServiceEndpoint'; + protected $endpointsDataType = 'array'; + public $fingerprint; + public $id; + public $kind; + protected $labelsType = 'Google_Service_Resourceviews_Label'; + protected $labelsDataType = 'array'; + public $name; + public $network; + public $resources; + public $selfLink; + public $size; + + + public function setCreationTimestamp($creationTimestamp) + { + $this->creationTimestamp = $creationTimestamp; + } + public function getCreationTimestamp() + { + return $this->creationTimestamp; + } + public function setDescription($description) + { + $this->description = $description; + } + public function getDescription() + { + return $this->description; + } + public function setEndpoints($endpoints) + { + $this->endpoints = $endpoints; + } + public function getEndpoints() + { + return $this->endpoints; + } + public function setFingerprint($fingerprint) + { + $this->fingerprint = $fingerprint; + } + public function getFingerprint() + { + return $this->fingerprint; + } + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setLabels($labels) + { + $this->labels = $labels; + } + public function getLabels() + { + return $this->labels; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setNetwork($network) + { + $this->network = $network; + } + public function getNetwork() + { + return $this->network; + } + public function setResources($resources) + { + $this->resources = $resources; + } + public function getResources() + { + return $this->resources; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } + public function setSize($size) + { + $this->size = $size; + } + public function getSize() + { + return $this->size; + } +} + +class Google_Service_Resourceviews_ServiceEndpoint extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $name; + public $port; + + + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setPort($port) + { + $this->port = $port; + } + public function getPort() + { + return $this->port; + } +} + +class Google_Service_Resourceviews_ZoneViewsAddResourcesRequest extends Google_Collection +{ + protected $collection_key = 'resources'; + protected $internal_gapi_mappings = array( + ); + public $resources; + + + public function setResources($resources) + { + $this->resources = $resources; + } + public function getResources() + { + return $this->resources; + } +} + +class Google_Service_Resourceviews_ZoneViewsGetServiceResponse extends Google_Collection +{ + protected $collection_key = 'endpoints'; + protected $internal_gapi_mappings = array( + ); + protected $endpointsType = 'Google_Service_Resourceviews_ServiceEndpoint'; + protected $endpointsDataType = 'array'; + public $fingerprint; + + + public function setEndpoints($endpoints) + { + $this->endpoints = $endpoints; + } + public function getEndpoints() + { + return $this->endpoints; + } + public function setFingerprint($fingerprint) + { + $this->fingerprint = $fingerprint; + } + public function getFingerprint() + { + return $this->fingerprint; + } +} + +class Google_Service_Resourceviews_ZoneViewsList extends Google_Collection +{ + protected $collection_key = 'items'; + protected $internal_gapi_mappings = array( + ); + protected $itemsType = 'Google_Service_Resourceviews_ResourceView'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $selfLink; + + + public function setItems($items) + { + $this->items = $items; + } + public function getItems() + { + return $this->items; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Resourceviews_ZoneViewsListResourcesResponse extends Google_Collection +{ + protected $collection_key = 'items'; + protected $internal_gapi_mappings = array( + ); + protected $itemsType = 'Google_Service_Resourceviews_ListResourceResponseItem'; + protected $itemsDataType = 'array'; + public $network; + public $nextPageToken; + + + public function setItems($items) + { + $this->items = $items; + } + public function getItems() + { + return $this->items; + } + public function setNetwork($network) + { + $this->network = $network; + } + public function getNetwork() + { + return $this->network; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Resourceviews_ZoneViewsRemoveResourcesRequest extends Google_Collection +{ + protected $collection_key = 'resources'; + protected $internal_gapi_mappings = array( + ); + public $resources; + + + public function setResources($resources) + { + $this->resources = $resources; + } + public function getResources() + { + return $this->resources; + } +} + +class Google_Service_Resourceviews_ZoneViewsSetServiceRequest extends Google_Collection +{ + protected $collection_key = 'endpoints'; + protected $internal_gapi_mappings = array( + ); + protected $endpointsType = 'Google_Service_Resourceviews_ServiceEndpoint'; + protected $endpointsDataType = 'array'; + public $fingerprint; + public $resourceName; + + + public function setEndpoints($endpoints) + { + $this->endpoints = $endpoints; + } + public function getEndpoints() + { + return $this->endpoints; + } + public function setFingerprint($fingerprint) + { + $this->fingerprint = $fingerprint; + } + public function getFingerprint() + { + return $this->fingerprint; + } + public function setResourceName($resourceName) + { + $this->resourceName = $resourceName; + } + public function getResourceName() + { + return $this->resourceName; + } +} diff --git a/plugins/updraftplus/includes/Google/Service/Storage.php b/plugins/updraftplus/includes/Google/Service/Storage.php new file mode 100644 index 0000000..0140ee7 --- /dev/null +++ b/plugins/updraftplus/includes/Google/Service/Storage.php @@ -0,0 +1,3310 @@ + + * Lets you store and retrieve potentially-large, immutable data objects.

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Storage extends Google_Service +{ + /** View and manage your data across Google Cloud Platform services. */ + const CLOUD_PLATFORM = + "https://www.googleapis.com/auth/cloud-platform"; + /** Manage your data and permissions in Google Cloud Storage. */ + const DEVSTORAGE_FULL_CONTROL = + "https://www.googleapis.com/auth/devstorage.full_control"; + /** View your data in Google Cloud Storage. */ + const DEVSTORAGE_READ_ONLY = + "https://www.googleapis.com/auth/devstorage.read_only"; + /** Manage your data in Google Cloud Storage. */ + const DEVSTORAGE_READ_WRITE = + "https://www.googleapis.com/auth/devstorage.read_write"; + + public $bucketAccessControls; + public $buckets; + public $channels; + public $defaultObjectAccessControls; + public $objectAccessControls; + public $objects; + + + /** + * Constructs the internal representation of the Storage service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'storage/v1/'; + $this->version = 'v1'; + $this->serviceName = 'storage'; + + $this->bucketAccessControls = new Google_Service_Storage_BucketAccessControls_Resource( + $this, + $this->serviceName, + 'bucketAccessControls', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'b/{bucket}/acl/{entity}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'entity' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'b/{bucket}/acl/{entity}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'entity' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'b/{bucket}/acl', + 'httpMethod' => 'POST', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'b/{bucket}/acl', + 'httpMethod' => 'GET', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => 'b/{bucket}/acl/{entity}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'entity' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'b/{bucket}/acl/{entity}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'entity' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->buckets = new Google_Service_Storage_Buckets_Resource( + $this, + $this->serviceName, + 'buckets', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'b/{bucket}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'ifMetagenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'get' => array( + 'path' => 'b/{bucket}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'ifMetagenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'insert' => array( + 'path' => 'b', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'predefinedAcl' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'predefinedDefaultObjectAcl' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'b', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'prefix' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => 'b/{bucket}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'predefinedDefaultObjectAcl' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'predefinedAcl' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'update' => array( + 'path' => 'b/{bucket}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'predefinedDefaultObjectAcl' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'predefinedAcl' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->channels = new Google_Service_Storage_Channels_Resource( + $this, + $this->serviceName, + 'channels', + array( + 'methods' => array( + 'stop' => array( + 'path' => 'channels/stop', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + $this->defaultObjectAccessControls = new Google_Service_Storage_DefaultObjectAccessControls_Resource( + $this, + $this->serviceName, + 'defaultObjectAccessControls', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'b/{bucket}/defaultObjectAcl/{entity}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'entity' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'b/{bucket}/defaultObjectAcl/{entity}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'entity' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'b/{bucket}/defaultObjectAcl', + 'httpMethod' => 'POST', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'b/{bucket}/defaultObjectAcl', + 'httpMethod' => 'GET', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'ifMetagenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => 'b/{bucket}/defaultObjectAcl/{entity}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'entity' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'b/{bucket}/defaultObjectAcl/{entity}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'entity' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->objectAccessControls = new Google_Service_Storage_ObjectAccessControls_Resource( + $this, + $this->serviceName, + 'objectAccessControls', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'b/{bucket}/o/{object}/acl/{entity}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'object' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'entity' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'generation' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'get' => array( + 'path' => 'b/{bucket}/o/{object}/acl/{entity}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'object' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'entity' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'generation' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'insert' => array( + 'path' => 'b/{bucket}/o/{object}/acl', + 'httpMethod' => 'POST', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'object' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'generation' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'b/{bucket}/o/{object}/acl', + 'httpMethod' => 'GET', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'object' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'generation' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => 'b/{bucket}/o/{object}/acl/{entity}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'object' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'entity' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'generation' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'update' => array( + 'path' => 'b/{bucket}/o/{object}/acl/{entity}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'object' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'entity' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'generation' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->objects = new Google_Service_Storage_Objects_Resource( + $this, + $this->serviceName, + 'objects', + array( + 'methods' => array( + 'compose' => array( + 'path' => 'b/{destinationBucket}/o/{destinationObject}/compose', + 'httpMethod' => 'POST', + 'parameters' => array( + 'destinationBucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'destinationObject' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'ifGenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'destinationPredefinedAcl' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'copy' => array( + 'path' => 'b/{sourceBucket}/o/{sourceObject}/copyTo/b/{destinationBucket}/o/{destinationObject}', + 'httpMethod' => 'POST', + 'parameters' => array( + 'sourceBucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'sourceObject' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'destinationBucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'destinationObject' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'ifSourceGenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifGenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifSourceMetagenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'sourceGeneration' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'destinationPredefinedAcl' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifSourceGenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifSourceMetagenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifGenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'delete' => array( + 'path' => 'b/{bucket}/o/{object}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'object' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'ifGenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'generation' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifGenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'get' => array( + 'path' => 'b/{bucket}/o/{object}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'object' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'ifGenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'generation' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifGenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'insert' => array( + 'path' => 'b/{bucket}/o', + 'httpMethod' => 'POST', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'predefinedAcl' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifGenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'contentEncoding' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifGenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'name' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'b/{bucket}/o', + 'httpMethod' => 'GET', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'versions' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'prefix' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'delimiter' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => 'b/{bucket}/o/{object}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'object' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'predefinedAcl' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifGenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'generation' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifGenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'rewrite' => array( + 'path' => 'b/{sourceBucket}/o/{sourceObject}/rewriteTo/b/{destinationBucket}/o/{destinationObject}', + 'httpMethod' => 'POST', + 'parameters' => array( + 'sourceBucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'sourceObject' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'destinationBucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'destinationObject' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'ifSourceGenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifGenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'rewriteToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifSourceMetagenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'sourceGeneration' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'destinationPredefinedAcl' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifSourceGenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxBytesRewrittenPerCall' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifSourceMetagenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifGenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'update' => array( + 'path' => 'b/{bucket}/o/{object}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'object' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'predefinedAcl' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifGenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'generation' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifGenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'watchAll' => array( + 'path' => 'b/{bucket}/o/watch', + 'httpMethod' => 'POST', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'versions' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'prefix' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'delimiter' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "bucketAccessControls" collection of methods. + * Typical usage is: + * + * $storageService = new Google_Service_Storage(...); + * $bucketAccessControls = $storageService->bucketAccessControls; + * + */ +class Google_Service_Storage_BucketAccessControls_Resource extends Google_Service_Resource +{ + + /** + * Permanently deletes the ACL entry for the specified entity on the specified + * bucket. (bucketAccessControls.delete) + * + * @param string $bucket Name of a bucket. + * @param string $entity The entity holding the permission. Can be user-userId, + * user-emailAddress, group-groupId, group-emailAddress, allUsers, or + * allAuthenticatedUsers. + * @param array $optParams Optional parameters. + */ + public function delete($bucket, $entity, $optParams = array()) + { + $params = array('bucket' => $bucket, 'entity' => $entity); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * Returns the ACL entry for the specified entity on the specified bucket. + * (bucketAccessControls.get) + * + * @param string $bucket Name of a bucket. + * @param string $entity The entity holding the permission. Can be user-userId, + * user-emailAddress, group-groupId, group-emailAddress, allUsers, or + * allAuthenticatedUsers. + * @param array $optParams Optional parameters. + * @return Google_Service_Storage_BucketAccessControl + */ + public function get($bucket, $entity, $optParams = array()) + { + $params = array('bucket' => $bucket, 'entity' => $entity); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Storage_BucketAccessControl"); + } + + /** + * Creates a new ACL entry on the specified bucket. + * (bucketAccessControls.insert) + * + * @param string $bucket Name of a bucket. + * @param Google_BucketAccessControl $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Storage_BucketAccessControl + */ + public function insert($bucket, Google_Service_Storage_BucketAccessControl $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Storage_BucketAccessControl"); + } + + /** + * Retrieves ACL entries on the specified bucket. + * (bucketAccessControls.listBucketAccessControls) + * + * @param string $bucket Name of a bucket. + * @param array $optParams Optional parameters. + * @return Google_Service_Storage_BucketAccessControls + */ + public function listBucketAccessControls($bucket, $optParams = array()) + { + $params = array('bucket' => $bucket); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Storage_BucketAccessControls"); + } + + /** + * Updates an ACL entry on the specified bucket. This method supports patch + * semantics. (bucketAccessControls.patch) + * + * @param string $bucket Name of a bucket. + * @param string $entity The entity holding the permission. Can be user-userId, + * user-emailAddress, group-groupId, group-emailAddress, allUsers, or + * allAuthenticatedUsers. + * @param Google_BucketAccessControl $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Storage_BucketAccessControl + */ + public function patch($bucket, $entity, Google_Service_Storage_BucketAccessControl $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'entity' => $entity, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Storage_BucketAccessControl"); + } + + /** + * Updates an ACL entry on the specified bucket. (bucketAccessControls.update) + * + * @param string $bucket Name of a bucket. + * @param string $entity The entity holding the permission. Can be user-userId, + * user-emailAddress, group-groupId, group-emailAddress, allUsers, or + * allAuthenticatedUsers. + * @param Google_BucketAccessControl $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Storage_BucketAccessControl + */ + public function update($bucket, $entity, Google_Service_Storage_BucketAccessControl $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'entity' => $entity, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Storage_BucketAccessControl"); + } +} + +/** + * The "buckets" collection of methods. + * Typical usage is: + * + * $storageService = new Google_Service_Storage(...); + * $buckets = $storageService->buckets; + * + */ +class Google_Service_Storage_Buckets_Resource extends Google_Service_Resource +{ + + /** + * Permanently deletes an empty bucket. (buckets.delete) + * + * @param string $bucket Name of a bucket. + * @param array $optParams Optional parameters. + * + * @opt_param string ifMetagenerationMatch If set, only deletes the bucket if + * its metageneration matches this value. + * @opt_param string ifMetagenerationNotMatch If set, only deletes the bucket if + * its metageneration does not match this value. + */ + public function delete($bucket, $optParams = array()) + { + $params = array('bucket' => $bucket); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * Returns metadata for the specified bucket. (buckets.get) + * + * @param string $bucket Name of a bucket. + * @param array $optParams Optional parameters. + * + * @opt_param string ifMetagenerationMatch Makes the return of the bucket + * metadata conditional on whether the bucket's current metageneration matches + * the given value. + * @opt_param string ifMetagenerationNotMatch Makes the return of the bucket + * metadata conditional on whether the bucket's current metageneration does not + * match the given value. + * @opt_param string projection Set of properties to return. Defaults to noAcl. + * @return Google_Service_Storage_Bucket + */ + public function get($bucket, $optParams = array()) + { + $params = array('bucket' => $bucket); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Storage_Bucket"); + } + + /** + * Creates a new bucket. (buckets.insert) + * + * @param string $project A valid API project identifier. + * @param Google_Bucket $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string predefinedAcl Apply a predefined set of access controls to + * this bucket. + * @opt_param string projection Set of properties to return. Defaults to noAcl, + * unless the bucket resource specifies acl or defaultObjectAcl properties, when + * it defaults to full. + * @opt_param string predefinedDefaultObjectAcl Apply a predefined set of + * default object access controls to this bucket. + * @return Google_Service_Storage_Bucket + */ + public function insert($project, Google_Service_Storage_Bucket $postBody, $optParams = array()) + { + $params = array('project' => $project, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Storage_Bucket"); + } + + /** + * Retrieves a list of buckets for a given project. (buckets.listBuckets) + * + * @param string $project A valid API project identifier. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken A previously-returned page token representing + * part of the larger set of results to view. + * @opt_param string prefix Filter results to buckets whose names begin with + * this prefix. + * @opt_param string projection Set of properties to return. Defaults to noAcl. + * @opt_param string maxResults Maximum number of buckets to return. + * @return Google_Service_Storage_Buckets + */ + public function listBuckets($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Storage_Buckets"); + } + + /** + * Updates a bucket. This method supports patch semantics. (buckets.patch) + * + * @param string $bucket Name of a bucket. + * @param Google_Bucket $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string projection Set of properties to return. Defaults to full. + * @opt_param string ifMetagenerationMatch Makes the return of the bucket + * metadata conditional on whether the bucket's current metageneration matches + * the given value. + * @opt_param string predefinedDefaultObjectAcl Apply a predefined set of + * default object access controls to this bucket. + * @opt_param string predefinedAcl Apply a predefined set of access controls to + * this bucket. + * @opt_param string ifMetagenerationNotMatch Makes the return of the bucket + * metadata conditional on whether the bucket's current metageneration does not + * match the given value. + * @return Google_Service_Storage_Bucket + */ + public function patch($bucket, Google_Service_Storage_Bucket $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Storage_Bucket"); + } + + /** + * Updates a bucket. (buckets.update) + * + * @param string $bucket Name of a bucket. + * @param Google_Bucket $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string projection Set of properties to return. Defaults to full. + * @opt_param string ifMetagenerationMatch Makes the return of the bucket + * metadata conditional on whether the bucket's current metageneration matches + * the given value. + * @opt_param string predefinedDefaultObjectAcl Apply a predefined set of + * default object access controls to this bucket. + * @opt_param string predefinedAcl Apply a predefined set of access controls to + * this bucket. + * @opt_param string ifMetagenerationNotMatch Makes the return of the bucket + * metadata conditional on whether the bucket's current metageneration does not + * match the given value. + * @return Google_Service_Storage_Bucket + */ + public function update($bucket, Google_Service_Storage_Bucket $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Storage_Bucket"); + } +} + +/** + * The "channels" collection of methods. + * Typical usage is: + * + * $storageService = new Google_Service_Storage(...); + * $channels = $storageService->channels; + * + */ +class Google_Service_Storage_Channels_Resource extends Google_Service_Resource +{ + + /** + * Stop watching resources through this channel (channels.stop) + * + * @param Google_Channel $postBody + * @param array $optParams Optional parameters. + */ + public function stop(Google_Service_Storage_Channel $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('stop', array($params)); + } +} + +/** + * The "defaultObjectAccessControls" collection of methods. + * Typical usage is: + * + * $storageService = new Google_Service_Storage(...); + * $defaultObjectAccessControls = $storageService->defaultObjectAccessControls; + * + */ +class Google_Service_Storage_DefaultObjectAccessControls_Resource extends Google_Service_Resource +{ + + /** + * Permanently deletes the default object ACL entry for the specified entity on + * the specified bucket. (defaultObjectAccessControls.delete) + * + * @param string $bucket Name of a bucket. + * @param string $entity The entity holding the permission. Can be user-userId, + * user-emailAddress, group-groupId, group-emailAddress, allUsers, or + * allAuthenticatedUsers. + * @param array $optParams Optional parameters. + */ + public function delete($bucket, $entity, $optParams = array()) + { + $params = array('bucket' => $bucket, 'entity' => $entity); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * Returns the default object ACL entry for the specified entity on the + * specified bucket. (defaultObjectAccessControls.get) + * + * @param string $bucket Name of a bucket. + * @param string $entity The entity holding the permission. Can be user-userId, + * user-emailAddress, group-groupId, group-emailAddress, allUsers, or + * allAuthenticatedUsers. + * @param array $optParams Optional parameters. + * @return Google_Service_Storage_ObjectAccessControl + */ + public function get($bucket, $entity, $optParams = array()) + { + $params = array('bucket' => $bucket, 'entity' => $entity); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Storage_ObjectAccessControl"); + } + + /** + * Creates a new default object ACL entry on the specified bucket. + * (defaultObjectAccessControls.insert) + * + * @param string $bucket Name of a bucket. + * @param Google_ObjectAccessControl $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Storage_ObjectAccessControl + */ + public function insert($bucket, Google_Service_Storage_ObjectAccessControl $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Storage_ObjectAccessControl"); + } + + /** + * Retrieves default object ACL entries on the specified bucket. + * (defaultObjectAccessControls.listDefaultObjectAccessControls) + * + * @param string $bucket Name of a bucket. + * @param array $optParams Optional parameters. + * + * @opt_param string ifMetagenerationMatch If present, only return default ACL + * listing if the bucket's current metageneration matches this value. + * @opt_param string ifMetagenerationNotMatch If present, only return default + * ACL listing if the bucket's current metageneration does not match the given + * value. + * @return Google_Service_Storage_ObjectAccessControls + */ + public function listDefaultObjectAccessControls($bucket, $optParams = array()) + { + $params = array('bucket' => $bucket); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Storage_ObjectAccessControls"); + } + + /** + * Updates a default object ACL entry on the specified bucket. This method + * supports patch semantics. (defaultObjectAccessControls.patch) + * + * @param string $bucket Name of a bucket. + * @param string $entity The entity holding the permission. Can be user-userId, + * user-emailAddress, group-groupId, group-emailAddress, allUsers, or + * allAuthenticatedUsers. + * @param Google_ObjectAccessControl $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Storage_ObjectAccessControl + */ + public function patch($bucket, $entity, Google_Service_Storage_ObjectAccessControl $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'entity' => $entity, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Storage_ObjectAccessControl"); + } + + /** + * Updates a default object ACL entry on the specified bucket. + * (defaultObjectAccessControls.update) + * + * @param string $bucket Name of a bucket. + * @param string $entity The entity holding the permission. Can be user-userId, + * user-emailAddress, group-groupId, group-emailAddress, allUsers, or + * allAuthenticatedUsers. + * @param Google_ObjectAccessControl $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Storage_ObjectAccessControl + */ + public function update($bucket, $entity, Google_Service_Storage_ObjectAccessControl $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'entity' => $entity, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Storage_ObjectAccessControl"); + } +} + +/** + * The "objectAccessControls" collection of methods. + * Typical usage is: + * + * $storageService = new Google_Service_Storage(...); + * $objectAccessControls = $storageService->objectAccessControls; + * + */ +class Google_Service_Storage_ObjectAccessControls_Resource extends Google_Service_Resource +{ + + /** + * Permanently deletes the ACL entry for the specified entity on the specified + * object. (objectAccessControls.delete) + * + * @param string $bucket Name of a bucket. + * @param string $object Name of the object. + * @param string $entity The entity holding the permission. Can be user-userId, + * user-emailAddress, group-groupId, group-emailAddress, allUsers, or + * allAuthenticatedUsers. + * @param array $optParams Optional parameters. + * + * @opt_param string generation If present, selects a specific revision of this + * object (as opposed to the latest version, the default). + */ + public function delete($bucket, $object, $entity, $optParams = array()) + { + $params = array('bucket' => $bucket, 'object' => $object, 'entity' => $entity); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * Returns the ACL entry for the specified entity on the specified object. + * (objectAccessControls.get) + * + * @param string $bucket Name of a bucket. + * @param string $object Name of the object. + * @param string $entity The entity holding the permission. Can be user-userId, + * user-emailAddress, group-groupId, group-emailAddress, allUsers, or + * allAuthenticatedUsers. + * @param array $optParams Optional parameters. + * + * @opt_param string generation If present, selects a specific revision of this + * object (as opposed to the latest version, the default). + * @return Google_Service_Storage_ObjectAccessControl + */ + public function get($bucket, $object, $entity, $optParams = array()) + { + $params = array('bucket' => $bucket, 'object' => $object, 'entity' => $entity); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Storage_ObjectAccessControl"); + } + + /** + * Creates a new ACL entry on the specified object. + * (objectAccessControls.insert) + * + * @param string $bucket Name of a bucket. + * @param string $object Name of the object. + * @param Google_ObjectAccessControl $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string generation If present, selects a specific revision of this + * object (as opposed to the latest version, the default). + * @return Google_Service_Storage_ObjectAccessControl + */ + public function insert($bucket, $object, Google_Service_Storage_ObjectAccessControl $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'object' => $object, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Storage_ObjectAccessControl"); + } + + /** + * Retrieves ACL entries on the specified object. + * (objectAccessControls.listObjectAccessControls) + * + * @param string $bucket Name of a bucket. + * @param string $object Name of the object. + * @param array $optParams Optional parameters. + * + * @opt_param string generation If present, selects a specific revision of this + * object (as opposed to the latest version, the default). + * @return Google_Service_Storage_ObjectAccessControls + */ + public function listObjectAccessControls($bucket, $object, $optParams = array()) + { + $params = array('bucket' => $bucket, 'object' => $object); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Storage_ObjectAccessControls"); + } + + /** + * Updates an ACL entry on the specified object. This method supports patch + * semantics. (objectAccessControls.patch) + * + * @param string $bucket Name of a bucket. + * @param string $object Name of the object. + * @param string $entity The entity holding the permission. Can be user-userId, + * user-emailAddress, group-groupId, group-emailAddress, allUsers, or + * allAuthenticatedUsers. + * @param Google_ObjectAccessControl $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string generation If present, selects a specific revision of this + * object (as opposed to the latest version, the default). + * @return Google_Service_Storage_ObjectAccessControl + */ + public function patch($bucket, $object, $entity, Google_Service_Storage_ObjectAccessControl $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'object' => $object, 'entity' => $entity, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Storage_ObjectAccessControl"); + } + + /** + * Updates an ACL entry on the specified object. (objectAccessControls.update) + * + * @param string $bucket Name of a bucket. + * @param string $object Name of the object. + * @param string $entity The entity holding the permission. Can be user-userId, + * user-emailAddress, group-groupId, group-emailAddress, allUsers, or + * allAuthenticatedUsers. + * @param Google_ObjectAccessControl $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string generation If present, selects a specific revision of this + * object (as opposed to the latest version, the default). + * @return Google_Service_Storage_ObjectAccessControl + */ + public function update($bucket, $object, $entity, Google_Service_Storage_ObjectAccessControl $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'object' => $object, 'entity' => $entity, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Storage_ObjectAccessControl"); + } +} + +/** + * The "objects" collection of methods. + * Typical usage is: + * + * $storageService = new Google_Service_Storage(...); + * $objects = $storageService->objects; + * + */ +class Google_Service_Storage_Objects_Resource extends Google_Service_Resource +{ + + /** + * Concatenates a list of existing objects into a new object in the same bucket. + * (objects.compose) + * + * @param string $destinationBucket Name of the bucket in which to store the new + * object. + * @param string $destinationObject Name of the new object. + * @param Google_ComposeRequest $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string ifGenerationMatch Makes the operation conditional on + * whether the object's current generation matches the given value. + * @opt_param string ifMetagenerationMatch Makes the operation conditional on + * whether the object's current metageneration matches the given value. + * @opt_param string destinationPredefinedAcl Apply a predefined set of access + * controls to the destination object. + * @return Google_Service_Storage_StorageObject + */ + public function compose($destinationBucket, $destinationObject, Google_Service_Storage_ComposeRequest $postBody, $optParams = array()) + { + $params = array('destinationBucket' => $destinationBucket, 'destinationObject' => $destinationObject, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('compose', array($params), "Google_Service_Storage_StorageObject"); + } + + /** + * Copies an object to a specified location. Optionally overrides metadata. + * (objects.copy) + * + * @param string $sourceBucket Name of the bucket in which to find the source + * object. + * @param string $sourceObject Name of the source object. + * @param string $destinationBucket Name of the bucket in which to store the new + * object. Overrides the provided object metadata's bucket value, if any. + * @param string $destinationObject Name of the new object. Required when the + * object metadata is not otherwise provided. Overrides the object metadata's + * name value, if any. + * @param Google_StorageObject $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string ifSourceGenerationNotMatch Makes the operation conditional + * on whether the source object's generation does not match the given value. + * @opt_param string ifGenerationNotMatch Makes the operation conditional on + * whether the destination object's current generation does not match the given + * value. + * @opt_param string ifSourceMetagenerationNotMatch Makes the operation + * conditional on whether the source object's current metageneration does not + * match the given value. + * @opt_param string ifMetagenerationMatch Makes the operation conditional on + * whether the destination object's current metageneration matches the given + * value. + * @opt_param string sourceGeneration If present, selects a specific revision of + * the source object (as opposed to the latest version, the default). + * @opt_param string destinationPredefinedAcl Apply a predefined set of access + * controls to the destination object. + * @opt_param string ifSourceGenerationMatch Makes the operation conditional on + * whether the source object's generation matches the given value. + * @opt_param string ifSourceMetagenerationMatch Makes the operation conditional + * on whether the source object's current metageneration matches the given + * value. + * @opt_param string ifGenerationMatch Makes the operation conditional on + * whether the destination object's current generation matches the given value. + * @opt_param string ifMetagenerationNotMatch Makes the operation conditional on + * whether the destination object's current metageneration does not match the + * given value. + * @opt_param string projection Set of properties to return. Defaults to noAcl, + * unless the object resource specifies the acl property, when it defaults to + * full. + * @return Google_Service_Storage_StorageObject + */ + public function copy($sourceBucket, $sourceObject, $destinationBucket, $destinationObject, Google_Service_Storage_StorageObject $postBody, $optParams = array()) + { + $params = array('sourceBucket' => $sourceBucket, 'sourceObject' => $sourceObject, 'destinationBucket' => $destinationBucket, 'destinationObject' => $destinationObject, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('copy', array($params), "Google_Service_Storage_StorageObject"); + } + + /** + * Deletes an object and its metadata. Deletions are permanent if versioning is + * not enabled for the bucket, or if the generation parameter is used. + * (objects.delete) + * + * @param string $bucket Name of the bucket in which the object resides. + * @param string $object Name of the object. + * @param array $optParams Optional parameters. + * + * @opt_param string ifGenerationNotMatch Makes the operation conditional on + * whether the object's current generation does not match the given value. + * @opt_param string generation If present, permanently deletes a specific + * revision of this object (as opposed to the latest version, the default). + * @opt_param string ifMetagenerationMatch Makes the operation conditional on + * whether the object's current metageneration matches the given value. + * @opt_param string ifGenerationMatch Makes the operation conditional on + * whether the object's current generation matches the given value. + * @opt_param string ifMetagenerationNotMatch Makes the operation conditional on + * whether the object's current metageneration does not match the given value. + */ + public function delete($bucket, $object, $optParams = array()) + { + $params = array('bucket' => $bucket, 'object' => $object); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * Retrieves an object or its metadata. (objects.get) + * + * @param string $bucket Name of the bucket in which the object resides. + * @param string $object Name of the object. + * @param array $optParams Optional parameters. + * + * @opt_param string ifGenerationNotMatch Makes the operation conditional on + * whether the object's generation does not match the given value. + * @opt_param string generation If present, selects a specific revision of this + * object (as opposed to the latest version, the default). + * @opt_param string ifMetagenerationMatch Makes the operation conditional on + * whether the object's current metageneration matches the given value. + * @opt_param string ifGenerationMatch Makes the operation conditional on + * whether the object's generation matches the given value. + * @opt_param string ifMetagenerationNotMatch Makes the operation conditional on + * whether the object's current metageneration does not match the given value. + * @opt_param string projection Set of properties to return. Defaults to noAcl. + * @return Google_Service_Storage_StorageObject + */ + public function get($bucket, $object, $optParams = array()) + { + $params = array('bucket' => $bucket, 'object' => $object); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Storage_StorageObject"); + } + + /** + * Stores a new object and metadata. (objects.insert) + * + * @param string $bucket Name of the bucket in which to store the new object. + * Overrides the provided object metadata's bucket value, if any. + * @param Google_StorageObject $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string predefinedAcl Apply a predefined set of access controls to + * this object. + * @opt_param string projection Set of properties to return. Defaults to noAcl, + * unless the object resource specifies the acl property, when it defaults to + * full. + * @opt_param string ifGenerationNotMatch Makes the operation conditional on + * whether the object's current generation does not match the given value. + * @opt_param string ifMetagenerationMatch Makes the operation conditional on + * whether the object's current metageneration matches the given value. + * @opt_param string contentEncoding If set, sets the contentEncoding property + * of the final object to this value. Setting this parameter is equivalent to + * setting the contentEncoding metadata property. This can be useful when + * uploading an object with uploadType=media to indicate the encoding of the + * content being uploaded. + * @opt_param string ifGenerationMatch Makes the operation conditional on + * whether the object's current generation matches the given value. + * @opt_param string ifMetagenerationNotMatch Makes the operation conditional on + * whether the object's current metageneration does not match the given value. + * @opt_param string name Name of the object. Required when the object metadata + * is not otherwise provided. Overrides the object metadata's name value, if + * any. + * @return Google_Service_Storage_StorageObject + */ + public function insert($bucket, Google_Service_Storage_StorageObject $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Storage_StorageObject"); + } + + /** + * Retrieves a list of objects matching the criteria. (objects.listObjects) + * + * @param string $bucket Name of the bucket in which to look for objects. + * @param array $optParams Optional parameters. + * + * @opt_param string projection Set of properties to return. Defaults to noAcl. + * @opt_param bool versions If true, lists all versions of an object as distinct + * results. The default is false. For more information, see Object Versioning. + * @opt_param string prefix Filter results to objects whose names begin with + * this prefix. + * @opt_param string maxResults Maximum number of items plus prefixes to return. + * As duplicate prefixes are omitted, fewer total results may be returned than + * requested. The default value of this parameter is 1,000 items. + * @opt_param string pageToken A previously-returned page token representing + * part of the larger set of results to view. + * @opt_param string delimiter Returns results in a directory-like mode. items + * will contain only objects whose names, aside from the prefix, do not contain + * delimiter. Objects whose names, aside from the prefix, contain delimiter will + * have their name, truncated after the delimiter, returned in prefixes. + * Duplicate prefixes are omitted. + * @return Google_Service_Storage_Objects + */ + public function listObjects($bucket, $optParams = array()) + { + $params = array('bucket' => $bucket); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Storage_Objects"); + } + + /** + * Updates an object's metadata. This method supports patch semantics. + * (objects.patch) + * + * @param string $bucket Name of the bucket in which the object resides. + * @param string $object Name of the object. + * @param Google_StorageObject $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string predefinedAcl Apply a predefined set of access controls to + * this object. + * @opt_param string ifGenerationNotMatch Makes the operation conditional on + * whether the object's current generation does not match the given value. + * @opt_param string generation If present, selects a specific revision of this + * object (as opposed to the latest version, the default). + * @opt_param string ifMetagenerationMatch Makes the operation conditional on + * whether the object's current metageneration matches the given value. + * @opt_param string ifGenerationMatch Makes the operation conditional on + * whether the object's current generation matches the given value. + * @opt_param string ifMetagenerationNotMatch Makes the operation conditional on + * whether the object's current metageneration does not match the given value. + * @opt_param string projection Set of properties to return. Defaults to full. + * @return Google_Service_Storage_StorageObject + */ + public function patch($bucket, $object, Google_Service_Storage_StorageObject $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'object' => $object, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Storage_StorageObject"); + } + + /** + * Rewrites a source object to a destination object. Optionally overrides + * metadata. (objects.rewrite) + * + * @param string $sourceBucket Name of the bucket in which to find the source + * object. + * @param string $sourceObject Name of the source object. + * @param string $destinationBucket Name of the bucket in which to store the new + * object. Overrides the provided object metadata's bucket value, if any. + * @param string $destinationObject Name of the new object. Required when the + * object metadata is not otherwise provided. Overrides the object metadata's + * name value, if any. + * @param Google_StorageObject $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string ifSourceGenerationNotMatch Makes the operation conditional + * on whether the source object's generation does not match the given value. + * @opt_param string ifGenerationNotMatch Makes the operation conditional on + * whether the destination object's current generation does not match the given + * value. + * @opt_param string rewriteToken Include this field (from the previous Rewrite + * response) on each Rewrite request after the first one, until the Rewrite + * response 'done' flag is true. Calls that provide a rewriteToken can omit all + * other request fields, but if included those fields must match the values + * provided in the first rewrite request. + * @opt_param string ifSourceMetagenerationNotMatch Makes the operation + * conditional on whether the source object's current metageneration does not + * match the given value. + * @opt_param string ifMetagenerationMatch Makes the operation conditional on + * whether the destination object's current metageneration matches the given + * value. + * @opt_param string sourceGeneration If present, selects a specific revision of + * the source object (as opposed to the latest version, the default). + * @opt_param string destinationPredefinedAcl Apply a predefined set of access + * controls to the destination object. + * @opt_param string ifSourceGenerationMatch Makes the operation conditional on + * whether the source object's generation matches the given value. + * @opt_param string maxBytesRewrittenPerCall The maximum number of bytes that + * will be rewritten per Rewrite request. Most callers shouldn't need to specify + * this parameter - it is primarily in place to support testing. If specified + * the value must be an integral multiple of 1 MiB (1048576). Also, this only + * applies to requests where the source and destination span locations and/or + * storage classes. Finally, this value must not change across Rewrite calls + * else you'll get an error that the rewrite token is invalid. + * @opt_param string ifSourceMetagenerationMatch Makes the operation conditional + * on whether the source object's current metageneration matches the given + * value. + * @opt_param string ifGenerationMatch Makes the operation conditional on + * whether the destination object's current generation matches the given value. + * @opt_param string ifMetagenerationNotMatch Makes the operation conditional on + * whether the destination object's current metageneration does not match the + * given value. + * @opt_param string projection Set of properties to return. Defaults to noAcl, + * unless the object resource specifies the acl property, when it defaults to + * full. + * @return Google_Service_Storage_RewriteResponse + */ + public function rewrite($sourceBucket, $sourceObject, $destinationBucket, $destinationObject, Google_Service_Storage_StorageObject $postBody, $optParams = array()) + { + $params = array('sourceBucket' => $sourceBucket, 'sourceObject' => $sourceObject, 'destinationBucket' => $destinationBucket, 'destinationObject' => $destinationObject, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('rewrite', array($params), "Google_Service_Storage_RewriteResponse"); + } + + /** + * Updates an object's metadata. (objects.update) + * + * @param string $bucket Name of the bucket in which the object resides. + * @param string $object Name of the object. + * @param Google_StorageObject $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string predefinedAcl Apply a predefined set of access controls to + * this object. + * @opt_param string ifGenerationNotMatch Makes the operation conditional on + * whether the object's current generation does not match the given value. + * @opt_param string generation If present, selects a specific revision of this + * object (as opposed to the latest version, the default). + * @opt_param string ifMetagenerationMatch Makes the operation conditional on + * whether the object's current metageneration matches the given value. + * @opt_param string ifGenerationMatch Makes the operation conditional on + * whether the object's current generation matches the given value. + * @opt_param string ifMetagenerationNotMatch Makes the operation conditional on + * whether the object's current metageneration does not match the given value. + * @opt_param string projection Set of properties to return. Defaults to full. + * @return Google_Service_Storage_StorageObject + */ + public function update($bucket, $object, Google_Service_Storage_StorageObject $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'object' => $object, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Storage_StorageObject"); + } + + /** + * Watch for changes on all objects in a bucket. (objects.watchAll) + * + * @param string $bucket Name of the bucket in which to look for objects. + * @param Google_Channel $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string projection Set of properties to return. Defaults to noAcl. + * @opt_param bool versions If true, lists all versions of an object as distinct + * results. The default is false. For more information, see Object Versioning. + * @opt_param string prefix Filter results to objects whose names begin with + * this prefix. + * @opt_param string maxResults Maximum number of items plus prefixes to return. + * As duplicate prefixes are omitted, fewer total results may be returned than + * requested. The default value of this parameter is 1,000 items. + * @opt_param string pageToken A previously-returned page token representing + * part of the larger set of results to view. + * @opt_param string delimiter Returns results in a directory-like mode. items + * will contain only objects whose names, aside from the prefix, do not contain + * delimiter. Objects whose names, aside from the prefix, contain delimiter will + * have their name, truncated after the delimiter, returned in prefixes. + * Duplicate prefixes are omitted. + * @return Google_Service_Storage_Channel + */ + public function watchAll($bucket, Google_Service_Storage_Channel $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('watchAll', array($params), "Google_Service_Storage_Channel"); + } +} + + + + +class Google_Service_Storage_Bucket extends Google_Collection +{ + protected $collection_key = 'defaultObjectAcl'; + protected $internal_gapi_mappings = array( + ); + protected $aclType = 'Google_Service_Storage_BucketAccessControl'; + protected $aclDataType = 'array'; + protected $corsType = 'Google_Service_Storage_BucketCors'; + protected $corsDataType = 'array'; + protected $defaultObjectAclType = 'Google_Service_Storage_ObjectAccessControl'; + protected $defaultObjectAclDataType = 'array'; + public $etag; + public $id; + public $kind; + protected $lifecycleType = 'Google_Service_Storage_BucketLifecycle'; + protected $lifecycleDataType = ''; + public $location; + protected $loggingType = 'Google_Service_Storage_BucketLogging'; + protected $loggingDataType = ''; + public $metageneration; + public $name; + protected $ownerType = 'Google_Service_Storage_BucketOwner'; + protected $ownerDataType = ''; + public $projectNumber; + public $selfLink; + public $storageClass; + public $timeCreated; + protected $versioningType = 'Google_Service_Storage_BucketVersioning'; + protected $versioningDataType = ''; + protected $websiteType = 'Google_Service_Storage_BucketWebsite'; + protected $websiteDataType = ''; + + + public function setAcl($acl) + { + $this->acl = $acl; + } + public function getAcl() + { + return $this->acl; + } + public function setCors($cors) + { + $this->cors = $cors; + } + public function getCors() + { + return $this->cors; + } + public function setDefaultObjectAcl($defaultObjectAcl) + { + $this->defaultObjectAcl = $defaultObjectAcl; + } + public function getDefaultObjectAcl() + { + return $this->defaultObjectAcl; + } + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setLifecycle(Google_Service_Storage_BucketLifecycle $lifecycle) + { + $this->lifecycle = $lifecycle; + } + public function getLifecycle() + { + return $this->lifecycle; + } + public function setLocation($location) + { + $this->location = $location; + } + public function getLocation() + { + return $this->location; + } + public function setLogging(Google_Service_Storage_BucketLogging $logging) + { + $this->logging = $logging; + } + public function getLogging() + { + return $this->logging; + } + public function setMetageneration($metageneration) + { + $this->metageneration = $metageneration; + } + public function getMetageneration() + { + return $this->metageneration; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setOwner(Google_Service_Storage_BucketOwner $owner) + { + $this->owner = $owner; + } + public function getOwner() + { + return $this->owner; + } + public function setProjectNumber($projectNumber) + { + $this->projectNumber = $projectNumber; + } + public function getProjectNumber() + { + return $this->projectNumber; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } + public function setStorageClass($storageClass) + { + $this->storageClass = $storageClass; + } + public function getStorageClass() + { + return $this->storageClass; + } + public function setTimeCreated($timeCreated) + { + $this->timeCreated = $timeCreated; + } + public function getTimeCreated() + { + return $this->timeCreated; + } + public function setVersioning(Google_Service_Storage_BucketVersioning $versioning) + { + $this->versioning = $versioning; + } + public function getVersioning() + { + return $this->versioning; + } + public function setWebsite(Google_Service_Storage_BucketWebsite $website) + { + $this->website = $website; + } + public function getWebsite() + { + return $this->website; + } +} + +class Google_Service_Storage_BucketAccessControl extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $bucket; + public $domain; + public $email; + public $entity; + public $entityId; + public $etag; + public $id; + public $kind; + protected $projectTeamType = 'Google_Service_Storage_BucketAccessControlProjectTeam'; + protected $projectTeamDataType = ''; + public $role; + public $selfLink; + + + public function setBucket($bucket) + { + $this->bucket = $bucket; + } + public function getBucket() + { + return $this->bucket; + } + public function setDomain($domain) + { + $this->domain = $domain; + } + public function getDomain() + { + return $this->domain; + } + public function setEmail($email) + { + $this->email = $email; + } + public function getEmail() + { + return $this->email; + } + public function setEntity($entity) + { + $this->entity = $entity; + } + public function getEntity() + { + return $this->entity; + } + public function setEntityId($entityId) + { + $this->entityId = $entityId; + } + public function getEntityId() + { + return $this->entityId; + } + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setProjectTeam(Google_Service_Storage_BucketAccessControlProjectTeam $projectTeam) + { + $this->projectTeam = $projectTeam; + } + public function getProjectTeam() + { + return $this->projectTeam; + } + public function setRole($role) + { + $this->role = $role; + } + public function getRole() + { + return $this->role; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Storage_BucketAccessControlProjectTeam extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $projectNumber; + public $team; + + + public function setProjectNumber($projectNumber) + { + $this->projectNumber = $projectNumber; + } + public function getProjectNumber() + { + return $this->projectNumber; + } + public function setTeam($team) + { + $this->team = $team; + } + public function getTeam() + { + return $this->team; + } +} + +class Google_Service_Storage_BucketAccessControls extends Google_Collection +{ + protected $collection_key = 'items'; + protected $internal_gapi_mappings = array( + ); + protected $itemsType = 'Google_Service_Storage_BucketAccessControl'; + protected $itemsDataType = 'array'; + public $kind; + + + public function setItems($items) + { + $this->items = $items; + } + public function getItems() + { + return $this->items; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Storage_BucketCors extends Google_Collection +{ + protected $collection_key = 'responseHeader'; + protected $internal_gapi_mappings = array( + ); + public $maxAgeSeconds; + public $method; + public $origin; + public $responseHeader; + + + public function setMaxAgeSeconds($maxAgeSeconds) + { + $this->maxAgeSeconds = $maxAgeSeconds; + } + public function getMaxAgeSeconds() + { + return $this->maxAgeSeconds; + } + public function setMethod($method) + { + $this->method = $method; + } + public function getMethod() + { + return $this->method; + } + public function setOrigin($origin) + { + $this->origin = $origin; + } + public function getOrigin() + { + return $this->origin; + } + public function setResponseHeader($responseHeader) + { + $this->responseHeader = $responseHeader; + } + public function getResponseHeader() + { + return $this->responseHeader; + } +} + +class Google_Service_Storage_BucketLifecycle extends Google_Collection +{ + protected $collection_key = 'rule'; + protected $internal_gapi_mappings = array( + ); + protected $ruleType = 'Google_Service_Storage_BucketLifecycleRule'; + protected $ruleDataType = 'array'; + + + public function setRule($rule) + { + $this->rule = $rule; + } + public function getRule() + { + return $this->rule; + } +} + +class Google_Service_Storage_BucketLifecycleRule extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + protected $actionType = 'Google_Service_Storage_BucketLifecycleRuleAction'; + protected $actionDataType = ''; + protected $conditionType = 'Google_Service_Storage_BucketLifecycleRuleCondition'; + protected $conditionDataType = ''; + + + public function setAction(Google_Service_Storage_BucketLifecycleRuleAction $action) + { + $this->action = $action; + } + public function getAction() + { + return $this->action; + } + public function setCondition(Google_Service_Storage_BucketLifecycleRuleCondition $condition) + { + $this->condition = $condition; + } + public function getCondition() + { + return $this->condition; + } +} + +class Google_Service_Storage_BucketLifecycleRuleAction extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $type; + + + public function setType($type) + { + $this->type = $type; + } + public function getType() + { + return $this->type; + } +} + +class Google_Service_Storage_BucketLifecycleRuleCondition extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $age; + public $createdBefore; + public $isLive; + public $numNewerVersions; + + + public function setAge($age) + { + $this->age = $age; + } + public function getAge() + { + return $this->age; + } + public function setCreatedBefore($createdBefore) + { + $this->createdBefore = $createdBefore; + } + public function getCreatedBefore() + { + return $this->createdBefore; + } + public function setIsLive($isLive) + { + $this->isLive = $isLive; + } + public function getIsLive() + { + return $this->isLive; + } + public function setNumNewerVersions($numNewerVersions) + { + $this->numNewerVersions = $numNewerVersions; + } + public function getNumNewerVersions() + { + return $this->numNewerVersions; + } +} + +class Google_Service_Storage_BucketLogging extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $logBucket; + public $logObjectPrefix; + + + public function setLogBucket($logBucket) + { + $this->logBucket = $logBucket; + } + public function getLogBucket() + { + return $this->logBucket; + } + public function setLogObjectPrefix($logObjectPrefix) + { + $this->logObjectPrefix = $logObjectPrefix; + } + public function getLogObjectPrefix() + { + return $this->logObjectPrefix; + } +} + +class Google_Service_Storage_BucketOwner extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $entity; + public $entityId; + + + public function setEntity($entity) + { + $this->entity = $entity; + } + public function getEntity() + { + return $this->entity; + } + public function setEntityId($entityId) + { + $this->entityId = $entityId; + } + public function getEntityId() + { + return $this->entityId; + } +} + +class Google_Service_Storage_BucketVersioning extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $enabled; + + + public function setEnabled($enabled) + { + $this->enabled = $enabled; + } + public function getEnabled() + { + return $this->enabled; + } +} + +class Google_Service_Storage_BucketWebsite extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $mainPageSuffix; + public $notFoundPage; + + + public function setMainPageSuffix($mainPageSuffix) + { + $this->mainPageSuffix = $mainPageSuffix; + } + public function getMainPageSuffix() + { + return $this->mainPageSuffix; + } + public function setNotFoundPage($notFoundPage) + { + $this->notFoundPage = $notFoundPage; + } + public function getNotFoundPage() + { + return $this->notFoundPage; + } +} + +class Google_Service_Storage_Buckets extends Google_Collection +{ + protected $collection_key = 'items'; + protected $internal_gapi_mappings = array( + ); + protected $itemsType = 'Google_Service_Storage_Bucket'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + + public function setItems($items) + { + $this->items = $items; + } + public function getItems() + { + return $this->items; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Storage_Channel extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $address; + public $expiration; + public $id; + public $kind; + public $params; + public $payload; + public $resourceId; + public $resourceUri; + public $token; + public $type; + + + public function setAddress($address) + { + $this->address = $address; + } + public function getAddress() + { + return $this->address; + } + public function setExpiration($expiration) + { + $this->expiration = $expiration; + } + public function getExpiration() + { + return $this->expiration; + } + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setParams($params) + { + $this->params = $params; + } + public function getParams() + { + return $this->params; + } + public function setPayload($payload) + { + $this->payload = $payload; + } + public function getPayload() + { + return $this->payload; + } + public function setResourceId($resourceId) + { + $this->resourceId = $resourceId; + } + public function getResourceId() + { + return $this->resourceId; + } + public function setResourceUri($resourceUri) + { + $this->resourceUri = $resourceUri; + } + public function getResourceUri() + { + return $this->resourceUri; + } + public function setToken($token) + { + $this->token = $token; + } + public function getToken() + { + return $this->token; + } + public function setType($type) + { + $this->type = $type; + } + public function getType() + { + return $this->type; + } +} + +class Google_Service_Storage_ChannelParams extends Google_Model +{ +} + +class Google_Service_Storage_ComposeRequest extends Google_Collection +{ + protected $collection_key = 'sourceObjects'; + protected $internal_gapi_mappings = array( + ); + protected $destinationType = 'Google_Service_Storage_StorageObject'; + protected $destinationDataType = ''; + public $kind; + protected $sourceObjectsType = 'Google_Service_Storage_ComposeRequestSourceObjects'; + protected $sourceObjectsDataType = 'array'; + + + public function setDestination(Google_Service_Storage_StorageObject $destination) + { + $this->destination = $destination; + } + public function getDestination() + { + return $this->destination; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setSourceObjects($sourceObjects) + { + $this->sourceObjects = $sourceObjects; + } + public function getSourceObjects() + { + return $this->sourceObjects; + } +} + +class Google_Service_Storage_ComposeRequestSourceObjects extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $generation; + public $name; + protected $objectPreconditionsType = 'Google_Service_Storage_ComposeRequestSourceObjectsObjectPreconditions'; + protected $objectPreconditionsDataType = ''; + + + public function setGeneration($generation) + { + $this->generation = $generation; + } + public function getGeneration() + { + return $this->generation; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setObjectPreconditions(Google_Service_Storage_ComposeRequestSourceObjectsObjectPreconditions $objectPreconditions) + { + $this->objectPreconditions = $objectPreconditions; + } + public function getObjectPreconditions() + { + return $this->objectPreconditions; + } +} + +class Google_Service_Storage_ComposeRequestSourceObjectsObjectPreconditions extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $ifGenerationMatch; + + + public function setIfGenerationMatch($ifGenerationMatch) + { + $this->ifGenerationMatch = $ifGenerationMatch; + } + public function getIfGenerationMatch() + { + return $this->ifGenerationMatch; + } +} + +class Google_Service_Storage_ObjectAccessControl extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $bucket; + public $domain; + public $email; + public $entity; + public $entityId; + public $etag; + public $generation; + public $id; + public $kind; + public $object; + protected $projectTeamType = 'Google_Service_Storage_ObjectAccessControlProjectTeam'; + protected $projectTeamDataType = ''; + public $role; + public $selfLink; + + + public function setBucket($bucket) + { + $this->bucket = $bucket; + } + public function getBucket() + { + return $this->bucket; + } + public function setDomain($domain) + { + $this->domain = $domain; + } + public function getDomain() + { + return $this->domain; + } + public function setEmail($email) + { + $this->email = $email; + } + public function getEmail() + { + return $this->email; + } + public function setEntity($entity) + { + $this->entity = $entity; + } + public function getEntity() + { + return $this->entity; + } + public function setEntityId($entityId) + { + $this->entityId = $entityId; + } + public function getEntityId() + { + return $this->entityId; + } + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setGeneration($generation) + { + $this->generation = $generation; + } + public function getGeneration() + { + return $this->generation; + } + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setObject($object) + { + $this->object = $object; + } + public function getObject() + { + return $this->object; + } + public function setProjectTeam(Google_Service_Storage_ObjectAccessControlProjectTeam $projectTeam) + { + $this->projectTeam = $projectTeam; + } + public function getProjectTeam() + { + return $this->projectTeam; + } + public function setRole($role) + { + $this->role = $role; + } + public function getRole() + { + return $this->role; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Storage_ObjectAccessControlProjectTeam extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $projectNumber; + public $team; + + + public function setProjectNumber($projectNumber) + { + $this->projectNumber = $projectNumber; + } + public function getProjectNumber() + { + return $this->projectNumber; + } + public function setTeam($team) + { + $this->team = $team; + } + public function getTeam() + { + return $this->team; + } +} + +class Google_Service_Storage_ObjectAccessControls extends Google_Collection +{ + protected $collection_key = 'items'; + protected $internal_gapi_mappings = array( + ); + public $items; + public $kind; + + + public function setItems($items) + { + $this->items = $items; + } + public function getItems() + { + return $this->items; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Storage_Objects extends Google_Collection +{ + protected $collection_key = 'prefixes'; + protected $internal_gapi_mappings = array( + ); + protected $itemsType = 'Google_Service_Storage_StorageObject'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $prefixes; + + + public function setItems($items) + { + $this->items = $items; + } + public function getItems() + { + return $this->items; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } + public function setPrefixes($prefixes) + { + $this->prefixes = $prefixes; + } + public function getPrefixes() + { + return $this->prefixes; + } +} + +class Google_Service_Storage_RewriteResponse extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $done; + public $kind; + public $objectSize; + protected $resourceType = 'Google_Service_Storage_StorageObject'; + protected $resourceDataType = ''; + public $rewriteToken; + public $totalBytesRewritten; + + + public function setDone($done) + { + $this->done = $done; + } + public function getDone() + { + return $this->done; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setObjectSize($objectSize) + { + $this->objectSize = $objectSize; + } + public function getObjectSize() + { + return $this->objectSize; + } + public function setResource(Google_Service_Storage_StorageObject $resource) + { + $this->resource = $resource; + } + public function getResource() + { + return $this->resource; + } + public function setRewriteToken($rewriteToken) + { + $this->rewriteToken = $rewriteToken; + } + public function getRewriteToken() + { + return $this->rewriteToken; + } + public function setTotalBytesRewritten($totalBytesRewritten) + { + $this->totalBytesRewritten = $totalBytesRewritten; + } + public function getTotalBytesRewritten() + { + return $this->totalBytesRewritten; + } +} + +class Google_Service_Storage_StorageObject extends Google_Collection +{ + protected $collection_key = 'acl'; + protected $internal_gapi_mappings = array( + ); + protected $aclType = 'Google_Service_Storage_ObjectAccessControl'; + protected $aclDataType = 'array'; + public $bucket; + public $cacheControl; + public $componentCount; + public $contentDisposition; + public $contentEncoding; + public $contentLanguage; + public $contentType; + public $crc32c; + public $etag; + public $generation; + public $id; + public $kind; + public $md5Hash; + public $mediaLink; + public $metadata; + public $metageneration; + public $name; + protected $ownerType = 'Google_Service_Storage_StorageObjectOwner'; + protected $ownerDataType = ''; + public $selfLink; + public $size; + public $storageClass; + public $timeDeleted; + public $updated; + + + public function setAcl($acl) + { + $this->acl = $acl; + } + public function getAcl() + { + return $this->acl; + } + public function setBucket($bucket) + { + $this->bucket = $bucket; + } + public function getBucket() + { + return $this->bucket; + } + public function setCacheControl($cacheControl) + { + $this->cacheControl = $cacheControl; + } + public function getCacheControl() + { + return $this->cacheControl; + } + public function setComponentCount($componentCount) + { + $this->componentCount = $componentCount; + } + public function getComponentCount() + { + return $this->componentCount; + } + public function setContentDisposition($contentDisposition) + { + $this->contentDisposition = $contentDisposition; + } + public function getContentDisposition() + { + return $this->contentDisposition; + } + public function setContentEncoding($contentEncoding) + { + $this->contentEncoding = $contentEncoding; + } + public function getContentEncoding() + { + return $this->contentEncoding; + } + public function setContentLanguage($contentLanguage) + { + $this->contentLanguage = $contentLanguage; + } + public function getContentLanguage() + { + return $this->contentLanguage; + } + public function setContentType($contentType) + { + $this->contentType = $contentType; + } + public function getContentType() + { + return $this->contentType; + } + public function setCrc32c($crc32c) + { + $this->crc32c = $crc32c; + } + public function getCrc32c() + { + return $this->crc32c; + } + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setGeneration($generation) + { + $this->generation = $generation; + } + public function getGeneration() + { + return $this->generation; + } + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setMd5Hash($md5Hash) + { + $this->md5Hash = $md5Hash; + } + public function getMd5Hash() + { + return $this->md5Hash; + } + public function setMediaLink($mediaLink) + { + $this->mediaLink = $mediaLink; + } + public function getMediaLink() + { + return $this->mediaLink; + } + public function setMetadata($metadata) + { + $this->metadata = $metadata; + } + public function getMetadata() + { + return $this->metadata; + } + public function setMetageneration($metageneration) + { + $this->metageneration = $metageneration; + } + public function getMetageneration() + { + return $this->metageneration; + } + public function setName($name) + { + $this->name = $name; + } + public function getName() + { + return $this->name; + } + public function setOwner(Google_Service_Storage_StorageObjectOwner $owner) + { + $this->owner = $owner; + } + public function getOwner() + { + return $this->owner; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } + public function setSize($size) + { + $this->size = $size; + } + public function getSize() + { + return $this->size; + } + public function setStorageClass($storageClass) + { + $this->storageClass = $storageClass; + } + public function getStorageClass() + { + return $this->storageClass; + } + public function setTimeDeleted($timeDeleted) + { + $this->timeDeleted = $timeDeleted; + } + public function getTimeDeleted() + { + return $this->timeDeleted; + } + public function setUpdated($updated) + { + $this->updated = $updated; + } + public function getUpdated() + { + return $this->updated; + } +} + +class Google_Service_Storage_StorageObjectMetadata extends Google_Model +{ +} + +class Google_Service_Storage_StorageObjectOwner extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $entity; + public $entityId; + + + public function setEntity($entity) + { + $this->entity = $entity; + } + public function getEntity() + { + return $this->entity; + } + public function setEntityId($entityId) + { + $this->entityId = $entityId; + } + public function getEntityId() + { + return $this->entityId; + } +} diff --git a/plugins/updraftplus/includes/Google/Service/Tasks.php b/plugins/updraftplus/includes/Google/Service/Tasks.php new file mode 100644 index 0000000..48c04d8 --- /dev/null +++ b/plugins/updraftplus/includes/Google/Service/Tasks.php @@ -0,0 +1,907 @@ + + * Lets you manage your tasks and task lists.

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Tasks extends Google_Service +{ + /** Manage your tasks. */ + const TASKS = + "https://www.googleapis.com/auth/tasks"; + /** View your tasks. */ + const TASKS_READONLY = + "https://www.googleapis.com/auth/tasks.readonly"; + + public $tasklists; + public $tasks; + + + /** + * Constructs the internal representation of the Tasks service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'tasks/v1/'; + $this->version = 'v1'; + $this->serviceName = 'tasks'; + + $this->tasklists = new Google_Service_Tasks_Tasklists_Resource( + $this, + $this->serviceName, + 'tasklists', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'users/@me/lists/{tasklist}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'tasklist' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'users/@me/lists/{tasklist}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'tasklist' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'users/@me/lists', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'list' => array( + 'path' => 'users/@me/lists', + 'httpMethod' => 'GET', + 'parameters' => array( + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => 'users/@me/lists/{tasklist}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'tasklist' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'users/@me/lists/{tasklist}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'tasklist' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->tasks = new Google_Service_Tasks_Tasks_Resource( + $this, + $this->serviceName, + 'tasks', + array( + 'methods' => array( + 'clear' => array( + 'path' => 'lists/{tasklist}/clear', + 'httpMethod' => 'POST', + 'parameters' => array( + 'tasklist' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'delete' => array( + 'path' => 'lists/{tasklist}/tasks/{task}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'tasklist' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'task' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'lists/{tasklist}/tasks/{task}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'tasklist' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'task' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'lists/{tasklist}/tasks', + 'httpMethod' => 'POST', + 'parameters' => array( + 'tasklist' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'parent' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'previous' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'lists/{tasklist}/tasks', + 'httpMethod' => 'GET', + 'parameters' => array( + 'tasklist' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'dueMax' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'showDeleted' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'updatedMin' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'completedMin' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'showCompleted' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'completedMax' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'showHidden' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'dueMin' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'move' => array( + 'path' => 'lists/{tasklist}/tasks/{task}/move', + 'httpMethod' => 'POST', + 'parameters' => array( + 'tasklist' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'task' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'parent' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'previous' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => 'lists/{tasklist}/tasks/{task}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'tasklist' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'task' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'lists/{tasklist}/tasks/{task}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'tasklist' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'task' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "tasklists" collection of methods. + * Typical usage is: + * + * $tasksService = new Google_Service_Tasks(...); + * $tasklists = $tasksService->tasklists; + * + */ +class Google_Service_Tasks_Tasklists_Resource extends Google_Service_Resource +{ + + /** + * Deletes the authenticated user's specified task list. (tasklists.delete) + * + * @param string $tasklist Task list identifier. + * @param array $optParams Optional parameters. + */ + public function delete($tasklist, $optParams = array()) + { + $params = array('tasklist' => $tasklist); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * Returns the authenticated user's specified task list. (tasklists.get) + * + * @param string $tasklist Task list identifier. + * @param array $optParams Optional parameters. + * @return Google_Service_Tasks_TaskList + */ + public function get($tasklist, $optParams = array()) + { + $params = array('tasklist' => $tasklist); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Tasks_TaskList"); + } + + /** + * Creates a new task list and adds it to the authenticated user's task lists. + * (tasklists.insert) + * + * @param Google_TaskList $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Tasks_TaskList + */ + public function insert(Google_Service_Tasks_TaskList $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Tasks_TaskList"); + } + + /** + * Returns all the authenticated user's task lists. (tasklists.listTasklists) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken Token specifying the result page to return. + * Optional. + * @opt_param string maxResults Maximum number of task lists returned on one + * page. Optional. The default is 100. + * @return Google_Service_Tasks_TaskLists + */ + public function listTasklists($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Tasks_TaskLists"); + } + + /** + * Updates the authenticated user's specified task list. This method supports + * patch semantics. (tasklists.patch) + * + * @param string $tasklist Task list identifier. + * @param Google_TaskList $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Tasks_TaskList + */ + public function patch($tasklist, Google_Service_Tasks_TaskList $postBody, $optParams = array()) + { + $params = array('tasklist' => $tasklist, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Tasks_TaskList"); + } + + /** + * Updates the authenticated user's specified task list. (tasklists.update) + * + * @param string $tasklist Task list identifier. + * @param Google_TaskList $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Tasks_TaskList + */ + public function update($tasklist, Google_Service_Tasks_TaskList $postBody, $optParams = array()) + { + $params = array('tasklist' => $tasklist, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Tasks_TaskList"); + } +} + +/** + * The "tasks" collection of methods. + * Typical usage is: + * + * $tasksService = new Google_Service_Tasks(...); + * $tasks = $tasksService->tasks; + * + */ +class Google_Service_Tasks_Tasks_Resource extends Google_Service_Resource +{ + + /** + * Clears all completed tasks from the specified task list. The affected tasks + * will be marked as 'hidden' and no longer be returned by default when + * retrieving all tasks for a task list. (tasks.clear) + * + * @param string $tasklist Task list identifier. + * @param array $optParams Optional parameters. + */ + public function clear($tasklist, $optParams = array()) + { + $params = array('tasklist' => $tasklist); + $params = array_merge($params, $optParams); + return $this->call('clear', array($params)); + } + + /** + * Deletes the specified task from the task list. (tasks.delete) + * + * @param string $tasklist Task list identifier. + * @param string $task Task identifier. + * @param array $optParams Optional parameters. + */ + public function delete($tasklist, $task, $optParams = array()) + { + $params = array('tasklist' => $tasklist, 'task' => $task); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + + /** + * Returns the specified task. (tasks.get) + * + * @param string $tasklist Task list identifier. + * @param string $task Task identifier. + * @param array $optParams Optional parameters. + * @return Google_Service_Tasks_Task + */ + public function get($tasklist, $task, $optParams = array()) + { + $params = array('tasklist' => $tasklist, 'task' => $task); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Tasks_Task"); + } + + /** + * Creates a new task on the specified task list. (tasks.insert) + * + * @param string $tasklist Task list identifier. + * @param Google_Task $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string parent Parent task identifier. If the task is created at + * the top level, this parameter is omitted. Optional. + * @opt_param string previous Previous sibling task identifier. If the task is + * created at the first position among its siblings, this parameter is omitted. + * Optional. + * @return Google_Service_Tasks_Task + */ + public function insert($tasklist, Google_Service_Tasks_Task $postBody, $optParams = array()) + { + $params = array('tasklist' => $tasklist, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Tasks_Task"); + } + + /** + * Returns all tasks in the specified task list. (tasks.listTasks) + * + * @param string $tasklist Task list identifier. + * @param array $optParams Optional parameters. + * + * @opt_param string dueMax Upper bound for a task's due date (as a RFC 3339 + * timestamp) to filter by. Optional. The default is not to filter by due date. + * @opt_param bool showDeleted Flag indicating whether deleted tasks are + * returned in the result. Optional. The default is False. + * @opt_param string updatedMin Lower bound for a task's last modification time + * (as a RFC 3339 timestamp) to filter by. Optional. The default is not to + * filter by last modification time. + * @opt_param string completedMin Lower bound for a task's completion date (as a + * RFC 3339 timestamp) to filter by. Optional. The default is not to filter by + * completion date. + * @opt_param string maxResults Maximum number of task lists returned on one + * page. Optional. The default is 100. + * @opt_param bool showCompleted Flag indicating whether completed tasks are + * returned in the result. Optional. The default is True. + * @opt_param string pageToken Token specifying the result page to return. + * Optional. + * @opt_param string completedMax Upper bound for a task's completion date (as a + * RFC 3339 timestamp) to filter by. Optional. The default is not to filter by + * completion date. + * @opt_param bool showHidden Flag indicating whether hidden tasks are returned + * in the result. Optional. The default is False. + * @opt_param string dueMin Lower bound for a task's due date (as a RFC 3339 + * timestamp) to filter by. Optional. The default is not to filter by due date. + * @return Google_Service_Tasks_Tasks + */ + public function listTasks($tasklist, $optParams = array()) + { + $params = array('tasklist' => $tasklist); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Tasks_Tasks"); + } + + /** + * Moves the specified task to another position in the task list. This can + * include putting it as a child task under a new parent and/or move it to a + * different position among its sibling tasks. (tasks.move) + * + * @param string $tasklist Task list identifier. + * @param string $task Task identifier. + * @param array $optParams Optional parameters. + * + * @opt_param string parent New parent task identifier. If the task is moved to + * the top level, this parameter is omitted. Optional. + * @opt_param string previous New previous sibling task identifier. If the task + * is moved to the first position among its siblings, this parameter is omitted. + * Optional. + * @return Google_Service_Tasks_Task + */ + public function move($tasklist, $task, $optParams = array()) + { + $params = array('tasklist' => $tasklist, 'task' => $task); + $params = array_merge($params, $optParams); + return $this->call('move', array($params), "Google_Service_Tasks_Task"); + } + + /** + * Updates the specified task. This method supports patch semantics. + * (tasks.patch) + * + * @param string $tasklist Task list identifier. + * @param string $task Task identifier. + * @param Google_Task $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Tasks_Task + */ + public function patch($tasklist, $task, Google_Service_Tasks_Task $postBody, $optParams = array()) + { + $params = array('tasklist' => $tasklist, 'task' => $task, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Tasks_Task"); + } + + /** + * Updates the specified task. (tasks.update) + * + * @param string $tasklist Task list identifier. + * @param string $task Task identifier. + * @param Google_Task $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Tasks_Task + */ + public function update($tasklist, $task, Google_Service_Tasks_Task $postBody, $optParams = array()) + { + $params = array('tasklist' => $tasklist, 'task' => $task, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Tasks_Task"); + } +} + + + + +class Google_Service_Tasks_Task extends Google_Collection +{ + protected $collection_key = 'links'; + protected $internal_gapi_mappings = array( + ); + public $completed; + public $deleted; + public $due; + public $etag; + public $hidden; + public $id; + public $kind; + protected $linksType = 'Google_Service_Tasks_TaskLinks'; + protected $linksDataType = 'array'; + public $notes; + public $parent; + public $position; + public $selfLink; + public $status; + public $title; + public $updated; + + + public function setCompleted($completed) + { + $this->completed = $completed; + } + public function getCompleted() + { + return $this->completed; + } + public function setDeleted($deleted) + { + $this->deleted = $deleted; + } + public function getDeleted() + { + return $this->deleted; + } + public function setDue($due) + { + $this->due = $due; + } + public function getDue() + { + return $this->due; + } + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setHidden($hidden) + { + $this->hidden = $hidden; + } + public function getHidden() + { + return $this->hidden; + } + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setLinks($links) + { + $this->links = $links; + } + public function getLinks() + { + return $this->links; + } + public function setNotes($notes) + { + $this->notes = $notes; + } + public function getNotes() + { + return $this->notes; + } + public function setParent($parent) + { + $this->parent = $parent; + } + public function getParent() + { + return $this->parent; + } + public function setPosition($position) + { + $this->position = $position; + } + public function getPosition() + { + return $this->position; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } + public function setStatus($status) + { + $this->status = $status; + } + public function getStatus() + { + return $this->status; + } + public function setTitle($title) + { + $this->title = $title; + } + public function getTitle() + { + return $this->title; + } + public function setUpdated($updated) + { + $this->updated = $updated; + } + public function getUpdated() + { + return $this->updated; + } +} + +class Google_Service_Tasks_TaskLinks extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $description; + public $link; + public $type; + + + public function setDescription($description) + { + $this->description = $description; + } + public function getDescription() + { + return $this->description; + } + public function setLink($link) + { + $this->link = $link; + } + public function getLink() + { + return $this->link; + } + public function setType($type) + { + $this->type = $type; + } + public function getType() + { + return $this->type; + } +} + +class Google_Service_Tasks_TaskList extends Google_Model +{ + protected $internal_gapi_mappings = array( + ); + public $etag; + public $id; + public $kind; + public $selfLink; + public $title; + public $updated; + + + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setId($id) + { + $this->id = $id; + } + public function getId() + { + return $this->id; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + public function getSelfLink() + { + return $this->selfLink; + } + public function setTitle($title) + { + $this->title = $title; + } + public function getTitle() + { + return $this->title; + } + public function setUpdated($updated) + { + $this->updated = $updated; + } + public function getUpdated() + { + return $this->updated; + } +} + +class Google_Service_Tasks_TaskLists extends Google_Collection +{ + protected $collection_key = 'items'; + protected $internal_gapi_mappings = array( + ); + public $etag; + protected $itemsType = 'Google_Service_Tasks_TaskList'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setItems($items) + { + $this->items = $items; + } + public function getItems() + { + return $this->items; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Tasks_Tasks extends Google_Collection +{ + protected $collection_key = 'items'; + protected $internal_gapi_mappings = array( + ); + public $etag; + protected $itemsType = 'Google_Service_Tasks_Task'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + + public function setEtag($etag) + { + $this->etag = $etag; + } + public function getEtag() + { + return $this->etag; + } + public function setItems($items) + { + $this->items = $items; + } + public function getItems() + { + return $this->items; + } + public function setKind($kind) + { + $this->kind = $kind; + } + public function getKind() + { + return $this->kind; + } + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + public function getNextPageToken() + { + return $this->nextPageToken; + } +} diff --git a/plugins/updraftplus/includes/Google/Signer/Abstract.php b/plugins/updraftplus/includes/Google/Signer/Abstract.php new file mode 100644 index 0000000..2501809 --- /dev/null +++ b/plugins/updraftplus/includes/Google/Signer/Abstract.php @@ -0,0 +1,29 @@ + + */ +abstract class Google_Signer_Abstract +{ + /** + * Signs data, returns the signature as binary data. + */ + abstract public function sign($data); +} diff --git a/plugins/updraftplus/includes/Google/Signer/P12.php b/plugins/updraftplus/includes/Google/Signer/P12.php new file mode 100644 index 0000000..7d3c167 --- /dev/null +++ b/plugins/updraftplus/includes/Google/Signer/P12.php @@ -0,0 +1,94 @@ + + */ +class Google_Signer_P12 extends Google_Signer_Abstract +{ + // OpenSSL private key resource + private $privateKey; + + // Creates a new signer from a .p12 file. + public function __construct($p12, $password) + { + if (!function_exists('openssl_x509_read')) { + throw new Google_Exception( + 'The Google PHP API library needs the openssl PHP extension' + ); + } + + // If the private key is provided directly, then this isn't in the p12 + // format. Different versions of openssl support different p12 formats + // and the key from google wasn't being accepted by the version available + // at the time. + if (!$password && strpos($p12, "-----BEGIN RSA PRIVATE KEY-----") !== false) { + $this->privateKey = openssl_pkey_get_private($p12); + } elseif($password === 'notasecret' && strpos($p12, "-----BEGIN PRIVATE KEY-----") !== false) { + $this->privateKey = openssl_pkey_get_private($p12); + } else { + // This throws on error + $certs = array(); + if (!openssl_pkcs12_read($p12, $certs, $password)) { + throw new Google_Auth_Exception( + "Unable to parse the p12 file. " . + "Is this a .p12 file? Is the password correct? OpenSSL error: " . + openssl_error_string() + ); + } + // TODO(beaton): is this part of the contract for the openssl_pkcs12_read + // method? What happens if there are multiple private keys? Do we care? + if (!array_key_exists("pkey", $certs) || !$certs["pkey"]) { + throw new Google_Auth_Exception("No private key found in p12 file."); + } + $this->privateKey = openssl_pkey_get_private($certs['pkey']); + } + + if (!$this->privateKey) { + throw new Google_Auth_Exception("Unable to load private key"); + } + } + + public function __destruct() + { + if ($this->privateKey) { + openssl_pkey_free($this->privateKey); + } + } + + public function sign($data) + { + if (version_compare(PHP_VERSION, '5.3.0') < 0) { + throw new Google_Auth_Exception( + "PHP 5.3.0 or higher is required to use service accounts." + ); + } + $hash = defined("OPENSSL_ALGO_SHA256") ? OPENSSL_ALGO_SHA256 : "sha256"; + if (!openssl_sign($data, $signature, $this->privateKey, $hash)) { + throw new Google_Auth_Exception("Unable to sign data"); + } + return $signature; + } +} diff --git a/plugins/updraftplus/includes/Google/Task/Exception.php b/plugins/updraftplus/includes/Google/Task/Exception.php new file mode 100644 index 0000000..231bf2b --- /dev/null +++ b/plugins/updraftplus/includes/Google/Task/Exception.php @@ -0,0 +1,24 @@ +getClassConfig('Google_Task_Runner'); + + if (isset($config['initial_delay'])) { + if ($config['initial_delay'] < 0) { + throw new Google_Task_Exception( + 'Task configuration `initial_delay` must not be negative.' + ); + } + + $this->delay = $config['initial_delay']; + } + + if (isset($config['max_delay'])) { + if ($config['max_delay'] <= 0) { + throw new Google_Task_Exception( + 'Task configuration `max_delay` must be greater than 0.' + ); + } + + $this->maxDelay = $config['max_delay']; + } + + if (isset($config['factor'])) { + if ($config['factor'] <= 0) { + throw new Google_Task_Exception( + 'Task configuration `factor` must be greater than 0.' + ); + } + + $this->factor = $config['factor']; + } + + if (isset($config['jitter'])) { + if ($config['jitter'] <= 0) { + throw new Google_Task_Exception( + 'Task configuration `jitter` must be greater than 0.' + ); + } + + $this->jitter = $config['jitter']; + } + + if (isset($config['retries'])) { + if ($config['retries'] < 0) { + throw new Google_Task_Exception( + 'Task configuration `retries` must not be negative.' + ); + } + $this->maxAttempts += $config['retries']; + } + + if (!is_callable($action)) { + throw new Google_Task_Exception( + 'Task argument `$action` must be a valid callable.' + ); + } + + $this->name = $name; + $this->client = $client; + $this->action = $action; + $this->arguments = $arguments; + } + + /** + * Checks if a retry can be attempted. + * + * @return boolean + */ + public function canAttmpt() + { + return $this->attempts < $this->maxAttempts; + } + + /** + * Runs the task and (if applicable) automatically retries when errors occur. + * + * @return mixed + * @throws Google_Task_Retryable on failure when no retries are available. + */ + public function run() + { + while ($this->attempt()) { + try { + return call_user_func_array($this->action, $this->arguments); + } catch (Google_Task_Retryable $exception) { + $allowedRetries = $exception->allowedRetries(); + + if (!$this->canAttmpt() || !$allowedRetries) { + throw $exception; + } + + if ($allowedRetries > 0) { + $this->maxAttempts = min( + $this->maxAttempts, + $this->attempts + $allowedRetries + ); + } + } + } + } + + /** + * Runs a task once, if possible. This is useful for bypassing the `run()` + * loop. + * + * NOTE: If this is not the first attempt, this function will sleep in + * accordance to the backoff configurations before running the task. + * + * @return boolean + */ + public function attempt() + { + if (!$this->canAttmpt()) { + return false; + } + + if ($this->attempts > 0) { + $this->backOff(); + } + + $this->attempts++; + return true; + } + + /** + * Sleeps in accordance to the backoff configurations. + */ + private function backOff() + { + $delay = $this->getDelay(); + + $this->client->getLogger()->debug( + 'Retrying task with backoff', + array( + 'request' => $this->name, + 'retry' => $this->attempts, + 'backoff_seconds' => $delay + ) + ); + + usleep($delay * 1000000); + } + + /** + * Gets the delay (in seconds) for the current backoff period. + * + * @return float + */ + private function getDelay() + { + $jitter = $this->getJitter(); + $factor = $this->attempts > 1 ? $this->factor + $jitter : 1 + abs($jitter); + + return $this->delay = min($this->maxDelay, $this->delay * $factor); + } + + /** + * Gets the current jitter (random number between -$this->jitter and + * $this->jitter). + * + * @return float + */ + private function getJitter() + { + return $this->jitter * 2 * mt_rand() / mt_getrandmax() - $this->jitter; + } +} diff --git a/plugins/updraftplus/includes/Google/Utils.php b/plugins/updraftplus/includes/Google/Utils.php new file mode 100644 index 0000000..2803daa --- /dev/null +++ b/plugins/updraftplus/includes/Google/Utils.php @@ -0,0 +1,133 @@ += 0x20) && ($ordinalValue <= 0x7F)): + // characters U-00000000 - U-0000007F (same as ASCII) + $ret ++; + break; + case (($ordinalValue & 0xE0) == 0xC0): + // characters U-00000080 - U-000007FF, mask 110XXXXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $ret += 2; + break; + case (($ordinalValue & 0xF0) == 0xE0): + // characters U-00000800 - U-0000FFFF, mask 1110XXXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $ret += 3; + break; + case (($ordinalValue & 0xF8) == 0xF0): + // characters U-00010000 - U-001FFFFF, mask 11110XXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $ret += 4; + break; + case (($ordinalValue & 0xFC) == 0xF8): + // characters U-00200000 - U-03FFFFFF, mask 111110XX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $ret += 5; + break; + case (($ordinalValue & 0xFE) == 0xFC): + // characters U-04000000 - U-7FFFFFFF, mask 1111110X + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $ret += 6; + break; + default: + $ret ++; + } + } + return $ret; + } + + /** + * Normalize all keys in an array to lower-case. + * @param array $arr + * @return array Normalized array. + */ + public static function normalize($arr) + { + if (!is_array($arr)) { + return array(); + } + + $normalized = array(); + foreach ($arr as $key => $val) { + $normalized[strtolower($key)] = $val; + } + return $normalized; + } + + /** + * Convert a string to camelCase + * @param string $value + * @return string + */ + public static function camelCase($value) + { + $value = ucwords(str_replace(array('-', '_'), ' ', $value)); + $value = str_replace(' ', '', $value); + $value[0] = strtolower($value[0]); + return $value; + } +} diff --git a/plugins/updraftplus/includes/Google/Utils/URITemplate.php b/plugins/updraftplus/includes/Google/Utils/URITemplate.php new file mode 100644 index 0000000..f5ee38b --- /dev/null +++ b/plugins/updraftplus/includes/Google/Utils/URITemplate.php @@ -0,0 +1,333 @@ + "reserved", + "/" => "segments", + "." => "dotprefix", + "#" => "fragment", + ";" => "semicolon", + "?" => "form", + "&" => "continuation" + ); + + /** + * @var reserved array + * These are the characters which should not be URL encoded in reserved + * strings. + */ + private $reserved = array( + "=", ",", "!", "@", "|", ":", "/", "?", "#", + "[", "]",'$', "&", "'", "(", ")", "*", "+", ";" + ); + private $reservedEncoded = array( + "%3D", "%2C", "%21", "%40", "%7C", "%3A", "%2F", "%3F", + "%23", "%5B", "%5D", "%24", "%26", "%27", "%28", "%29", + "%2A", "%2B", "%3B" + ); + + public function parse($string, array $parameters) + { + return $this->resolveNextSection($string, $parameters); + } + + /** + * This function finds the first matching {...} block and + * executes the replacement. It then calls itself to find + * subsequent blocks, if any. + */ + private function resolveNextSection($string, $parameters) + { + $start = strpos($string, "{"); + if ($start === false) { + return $string; + } + $end = strpos($string, "}"); + if ($end === false) { + return $string; + } + $string = $this->replace($string, $start, $end, $parameters); + return $this->resolveNextSection($string, $parameters); + } + + private function replace($string, $start, $end, $parameters) + { + // We know a data block will have {} round it, so we can strip that. + $data = substr($string, $start + 1, $end - $start - 1); + + // If the first character is one of the reserved operators, it effects + // the processing of the stream. + if (isset($this->operators[$data[0]])) { + $op = $this->operators[$data[0]]; + $data = substr($data, 1); + $prefix = ""; + $prefix_on_missing = false; + + switch ($op) { + case "reserved": + // Reserved means certain characters should not be URL encoded + $data = $this->replaceVars($data, $parameters, ",", null, true); + break; + case "fragment": + // Comma separated with fragment prefix. Bare values only. + $prefix = "#"; + $prefix_on_missing = true; + $data = $this->replaceVars($data, $parameters, ",", null, true); + break; + case "segments": + // Slash separated data. Bare values only. + $prefix = "/"; + $data =$this->replaceVars($data, $parameters, "/"); + break; + case "dotprefix": + // Dot separated data. Bare values only. + $prefix = "."; + $prefix_on_missing = true; + $data = $this->replaceVars($data, $parameters, "."); + break; + case "semicolon": + // Semicolon prefixed and separated. Uses the key name + $prefix = ";"; + $data = $this->replaceVars($data, $parameters, ";", "=", false, true, false); + break; + case "form": + // Standard URL format. Uses the key name + $prefix = "?"; + $data = $this->replaceVars($data, $parameters, "&", "="); + break; + case "continuation": + // Standard URL, but with leading ampersand. Uses key name. + $prefix = "&"; + $data = $this->replaceVars($data, $parameters, "&", "="); + break; + } + + // Add the initial prefix character if data is valid. + if ($data || ($data !== false && $prefix_on_missing)) { + $data = $prefix . $data; + } + + } else { + // If no operator we replace with the defaults. + $data = $this->replaceVars($data, $parameters); + } + // This is chops out the {...} and replaces with the new section. + return substr($string, 0, $start) . $data . substr($string, $end + 1); + } + + private function replaceVars( + $section, + $parameters, + $sep = ",", + $combine = null, + $reserved = false, + $tag_empty = false, + $combine_on_empty = true + ) { + if (strpos($section, ",") === false) { + // If we only have a single value, we can immediately process. + return $this->combine( + $section, + $parameters, + $sep, + $combine, + $reserved, + $tag_empty, + $combine_on_empty + ); + } else { + // If we have multiple values, we need to split and loop over them. + // Each is treated individually, then glued together with the + // separator character. + $vars = explode(",", $section); + return $this->combineList( + $vars, + $sep, + $parameters, + $combine, + $reserved, + false, // Never emit empty strings in multi-param replacements + $combine_on_empty + ); + } + } + + public function combine( + $key, + $parameters, + $sep, + $combine, + $reserved, + $tag_empty, + $combine_on_empty + ) { + $length = false; + $explode = false; + $skip_final_combine = false; + $value = false; + + // Check for length restriction. + if (strpos($key, ":") !== false) { + list($key, $length) = explode(":", $key); + } + + // Check for explode parameter. + if ($key[strlen($key) - 1] == "*") { + $explode = true; + $key = substr($key, 0, -1); + $skip_final_combine = true; + } + + // Define the list separator. + $list_sep = $explode ? $sep : ","; + + if (isset($parameters[$key])) { + $data_type = $this->getDataType($parameters[$key]); + switch($data_type) { + case self::TYPE_SCALAR: + $value = $this->getValue($parameters[$key], $length); + break; + case self::TYPE_LIST: + $values = array(); + foreach ($parameters[$key] as $pkey => $pvalue) { + $pvalue = $this->getValue($pvalue, $length); + if ($combine && $explode) { + $values[$pkey] = $key . $combine . $pvalue; + } else { + $values[$pkey] = $pvalue; + } + } + $value = implode($list_sep, $values); + if ($value == '') { + return ''; + } + break; + case self::TYPE_MAP: + $values = array(); + foreach ($parameters[$key] as $pkey => $pvalue) { + $pvalue = $this->getValue($pvalue, $length); + if ($explode) { + $pkey = $this->getValue($pkey, $length); + $values[] = $pkey . "=" . $pvalue; // Explode triggers = combine. + } else { + $values[] = $pkey; + $values[] = $pvalue; + } + } + $value = implode($list_sep, $values); + if ($value == '') { + return false; + } + break; + } + } else if ($tag_empty) { + // If we are just indicating empty values with their key name, return that. + return $key; + } else { + // Otherwise we can skip this variable due to not being defined. + return false; + } + + if ($reserved) { + $value = str_replace($this->reservedEncoded, $this->reserved, $value); + } + + // If we do not need to include the key name, we just return the raw + // value. + if (!$combine || $skip_final_combine) { + return $value; + } + + // Else we combine the key name: foo=bar, if value is not the empty string. + return $key . ($value != '' || $combine_on_empty ? $combine . $value : ''); + } + + /** + * Return the type of a passed in value + */ + private function getDataType($data) + { + if (is_array($data)) { + reset($data); + if (key($data) !== 0) { + return self::TYPE_MAP; + } + return self::TYPE_LIST; + } + return self::TYPE_SCALAR; + } + + /** + * Utility function that merges multiple combine calls + * for multi-key templates. + */ + private function combineList( + $vars, + $sep, + $parameters, + $combine, + $reserved, + $tag_empty, + $combine_on_empty + ) { + $ret = array(); + foreach ($vars as $var) { + $response = $this->combine( + $var, + $parameters, + $sep, + $combine, + $reserved, + $tag_empty, + $combine_on_empty + ); + if ($response === false) { + continue; + } + $ret[] = $response; + } + return implode($sep, $ret); + } + + /** + * Utility function to encode and trim values + */ + private function getValue($value, $length) + { + if ($length) { + $value = substr($value, 0, $length); + } + $value = rawurlencode($value); + return $value; + } +} diff --git a/plugins/updraftplus/includes/Google/Verifier/Abstract.php b/plugins/updraftplus/includes/Google/Verifier/Abstract.php new file mode 100644 index 0000000..e6c9eeb --- /dev/null +++ b/plugins/updraftplus/includes/Google/Verifier/Abstract.php @@ -0,0 +1,30 @@ + + */ +abstract class Google_Verifier_Abstract +{ + /** + * Checks a signature, returns true if the signature is correct, + * false otherwise. + */ + abstract public function verify($data, $signature); +} diff --git a/plugins/updraftplus/includes/Google/Verifier/Pem.php b/plugins/updraftplus/includes/Google/Verifier/Pem.php new file mode 100644 index 0000000..3d6e0fd --- /dev/null +++ b/plugins/updraftplus/includes/Google/Verifier/Pem.php @@ -0,0 +1,75 @@ + + */ +class Google_Verifier_Pem extends Google_Verifier_Abstract +{ + private $publicKey; + + /** + * Constructs a verifier from the supplied PEM-encoded certificate. + * + * $pem: a PEM encoded certificate (not a file). + * @param $pem + * @throws Google_Auth_Exception + * @throws Google_Exception + */ + public function __construct($pem) + { + if (!function_exists('openssl_x509_read')) { + throw new Google_Exception('Google API PHP client needs the openssl PHP extension'); + } + $this->publicKey = openssl_x509_read($pem); + if (!$this->publicKey) { + throw new Google_Auth_Exception("Unable to parse PEM: $pem"); + } + } + + public function __destruct() + { + if ($this->publicKey) { + openssl_x509_free($this->publicKey); + } + } + + /** + * Verifies the signature on data. + * + * Returns true if the signature is valid, false otherwise. + * @param $data + * @param $signature + * @throws Google_Auth_Exception + * @return bool + */ + public function verify($data, $signature) + { + $hash = defined("OPENSSL_ALGO_SHA256") ? OPENSSL_ALGO_SHA256 : "sha256"; + $status = openssl_verify($data, $signature, $this->publicKey, $hash); + if ($status === -1) { + throw new Google_Auth_Exception('Signature verification error: ' . openssl_error_string()); + } + return $status === 1; + } +} diff --git a/plugins/updraftplus/includes/Google/autoload.php b/plugins/updraftplus/includes/Google/autoload.php new file mode 100644 index 0000000..3b97147 --- /dev/null +++ b/plugins/updraftplus/includes/Google/autoload.php @@ -0,0 +1,33 @@ +log('The PHP cURL extension must be installed and enabled to use this remote storage method'); + throw new Exception('The PHP cURL extension must be installed and enabled to use this remote storage method'); + } + + } + + + /** + * Set the service endpoint + * + * @param string $host Hostname + * @return void + */ + public function setEndpoint($host) + { + self::$endpoint = $host; + } + + /** + * Set AWS access key and secret key + * + * @param string $accessKey Access key + * @param string $secretKey Secret key + * @return void + */ + public static function setAuth($accessKey, $secretKey) + { + self::$__accessKey = $accessKey; + self::$__secretKey = $secretKey; + } + + /** + * Check if AWS keys have been set + * + * @return boolean + */ + public static function hasAuth() { + return (self::$__accessKey !== null && self::$__secretKey !== null); + } + + + /** + * Set SSL on or off + * + * @param boolean $enabled SSL enabled + * @param boolean $validate SSL certificate validation + * @return void + */ + public static function setSSL($enabled, $validate = true) + { + self::$useSSL = $enabled; + self::$useSSLValidation = $validate; + } + + public static function getuseSSL() { + return self::$useSSL; + } + + /** + * Set SSL client certificates (experimental) + * + * @param string $sslCert SSL client certificate + * @param string $sslKey SSL client key + * @param string $sslCACert SSL CA cert (only required if you are having problems with your system CA cert) + * @return void + */ + public static function setSSLAuth($sslCert = null, $sslKey = null, $sslCACert = null) + { + self::$sslCert = $sslCert; + self::$sslKey = $sslKey; + self::$sslCACert = $sslCACert; + } + + + /** + * Set proxy information + * + * @param string $host Proxy hostname and port (localhost:1234) + * @param string $user Proxy username + * @param string $pass Proxy password + * @param constant $type CURL proxy type + * @return void + */ + public static function setProxy($host, $user = null, $pass = null, $type = CURLPROXY_SOCKS5, $port = null) + { + self::$proxy = array('host' => $host, 'type' => $type, 'user' => $user, 'pass' => $pass, 'port' => $port); + } + + + /** + * Set the error mode to exceptions + * + * @param boolean $enabled Enable exceptions + * @return void + */ + public static function setExceptions($enabled = true) + { + self::$useExceptions = $enabled; + } + + + /** + * Set signing key + * + * @param string $keyPairId AWS Key Pair ID + * @param string $signingKey Private Key + * @param boolean $isFile Load private key from file, set to false to load string + * @return boolean + */ + public static function setSigningKey($keyPairId, $signingKey, $isFile = true) + { + self::$__signingKeyPairId = $keyPairId; + if ((self::$__signingKeyResource = openssl_pkey_get_private($isFile ? + file_get_contents($signingKey) : $signingKey)) !== false) return true; + self::__triggerError('UpdraftPlus_S3::setSigningKey(): Unable to open load private key: '.$signingKey, __FILE__, __LINE__); + return false; + } + + + /** + * Free signing key from memory, MUST be called if you are using setSigningKey() + * + * @return void + */ + public static function freeSigningKey() + { + if (self::$__signingKeyResource !== false) + openssl_free_key(self::$__signingKeyResource); + } + + + /** + * Internal error handler + * + * @internal Internal error handler + * @param string $message Error message + * @param string $file Filename + * @param integer $line Line number + * @param integer $code Error code + * @return void + */ + private static function __triggerError($message, $file, $line, $code = 0) + { + if (self::$useExceptions) + throw new UpdraftPlus_S3Exception($message, $file, $line, $code); + else { + trigger_error($message, E_USER_WARNING); + } + } + + + /** + * Get a list of buckets + * + * @param boolean $detailed Returns detailed bucket list when true + * @return array | false + */ + public static function listBuckets($detailed = false) + { + $rest = new UpdraftPlus_S3Request('GET', '', '', self::$endpoint, self::$use_dns_bucket_name); + $rest = $rest->getResponse(); + if ($rest->error === false && $rest->code !== 200) + $rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status'); + if ($rest->error !== false) + { + self::__triggerError(sprintf("UpdraftPlus_S3::listBuckets(): [%s] %s", $rest->error['code'], + $rest->error['message']), __FILE__, __LINE__); + return false; + } + $results = array(); + if (!isset($rest->body->Buckets)) return $results; + + if ($detailed) + { + if (isset($rest->body->Owner, $rest->body->Owner->ID, $rest->body->Owner->DisplayName)) + $results['owner'] = array( + 'id' => (string)$rest->body->Owner->ID, 'name' => (string)$rest->body->Owner->ID + ); + $results['buckets'] = array(); + foreach ($rest->body->Buckets->Bucket as $b) + $results['buckets'][] = array( + 'name' => (string)$b->Name, 'time' => strtotime((string)$b->CreationDate) + ); + } else + foreach ($rest->body->Buckets->Bucket as $b) $results[] = (string)$b->Name; + + return $results; + } + + public static function useDNSBucketName($use = true, $bucket = '') { + self::$use_dns_bucket_name = $use; + return true; + } + + /* + * Get contents for a bucket + * + * If maxKeys is null this method will loop through truncated result sets + * + * @param string $bucket Bucket name + * @param string $prefix Prefix + * @param string $marker Marker (last file listed) + * @param string $maxKeys Max keys (maximum number of keys to return) + * @param string $delimiter Delimiter + * @param boolean $returnCommonPrefixes Set to true to return CommonPrefixes + * @return array | false + */ + public static function getBucket($bucket, $prefix = null, $marker = null, $maxKeys = null, $delimiter = null, $returnCommonPrefixes = false) + { + $rest = new UpdraftPlus_S3Request('GET', $bucket, '', self::$endpoint, self::$use_dns_bucket_name); + if ($maxKeys == 0) $maxKeys = null; + if ($prefix !== null && $prefix !== '') $rest->setParameter('prefix', $prefix); + if ($marker !== null && $marker !== '') $rest->setParameter('marker', $marker); + if ($maxKeys !== null && $maxKeys !== '') $rest->setParameter('max-keys', $maxKeys); + if ($delimiter !== null && $delimiter !== '') $rest->setParameter('delimiter', $delimiter); + $response = $rest->getResponse(); + if ($response->error === false && $response->code !== 200) + $response->error = array('code' => $response->code, 'message' => 'Unexpected HTTP status'); + if ($response->error !== false) + { + self::__triggerError(sprintf("UpdraftPlus_S3::getBucket(): [%s] %s", + $response->error['code'], $response->error['message']), __FILE__, __LINE__); + return false; + } + + $results = array(); + + $nextMarker = null; + if (isset($response->body, $response->body->Contents)) + foreach ($response->body->Contents as $c) + { + $results[(string)$c->Key] = array( + 'name' => (string)$c->Key, + 'time' => strtotime((string)$c->LastModified), + 'size' => (int)$c->Size, + 'hash' => substr((string)$c->ETag, 1, -1) + ); + $nextMarker = (string)$c->Key; + } + + if ($returnCommonPrefixes && isset($response->body, $response->body->CommonPrefixes)) + foreach ($response->body->CommonPrefixes as $c) + $results[(string)$c->Prefix] = array('prefix' => (string)$c->Prefix); + + if (isset($response->body, $response->body->IsTruncated) && + (string)$response->body->IsTruncated == 'false') return $results; + + if (isset($response->body, $response->body->NextMarker)) + $nextMarker = (string)$response->body->NextMarker; + + // Loop through truncated results if maxKeys isn't specified + if ($maxKeys == null && $nextMarker !== null && (string)$response->body->IsTruncated == 'true') + do + { + $rest = new UpdraftPlus_S3Request('GET', $bucket, '', self::$endpoint, self::$use_dns_bucket_name); + if ($prefix !== null && $prefix !== '') $rest->setParameter('prefix', $prefix); + $rest->setParameter('marker', $nextMarker); + if ($delimiter !== null && $delimiter !== '') $rest->setParameter('delimiter', $delimiter); + + if (($response = $rest->getResponse()) == false || $response->code !== 200) break; + + if (isset($response->body, $response->body->Contents)) + foreach ($response->body->Contents as $c) + { + $results[(string)$c->Key] = array( + 'name' => (string)$c->Key, + 'time' => strtotime((string)$c->LastModified), + 'size' => (int)$c->Size, + 'hash' => substr((string)$c->ETag, 1, -1) + ); + $nextMarker = (string)$c->Key; + } + + if ($returnCommonPrefixes && isset($response->body, $response->body->CommonPrefixes)) + foreach ($response->body->CommonPrefixes as $c) + $results[(string)$c->Prefix] = array('prefix' => (string)$c->Prefix); + + if (isset($response->body, $response->body->NextMarker)) + $nextMarker = (string)$response->body->NextMarker; + + } while ($response !== false && (string)$response->body->IsTruncated == 'true'); + + return $results; + } + + + /** + * Put a bucket + * + * @param string $bucket Bucket name + * @param constant $acl ACL flag + * @param string $location Set as "EU" to create buckets hosted in Europe + * @return boolean + */ + public static function putBucket($bucket, $acl = self::ACL_PRIVATE, $location = false) + { + $rest = new UpdraftPlus_S3Request('PUT', $bucket, '', self::$endpoint, self::$use_dns_bucket_name); + $rest->setAmzHeader('x-amz-acl', $acl); + + if ($location !== false) + { + $dom = new DOMDocument; + $createBucketConfiguration = $dom->createElement('CreateBucketConfiguration'); + $locationConstraint = $dom->createElement('LocationConstraint', $location); + $createBucketConfiguration->appendChild($locationConstraint); + $dom->appendChild($createBucketConfiguration); + $rest->data = $dom->saveXML(); + $rest->size = strlen($rest->data); + $rest->setHeader('Content-Type', 'application/xml'); + } + $rest = $rest->getResponse(); + + if ($rest->error === false && $rest->code !== 200) + $rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status'); + if ($rest->error !== false) + { + self::__triggerError(sprintf("UpdraftPlus_S3::putBucket({$bucket}, {$acl}, {$location}): [%s] %s", + $rest->error['code'], $rest->error['message']), __FILE__, __LINE__); + return false; + } + return true; + } + + + /** + * Delete an empty bucket + * + * @param string $bucket Bucket name + * @return boolean + */ + public static function deleteBucket($bucket) + { + $rest = new UpdraftPlus_S3Request('DELETE', $bucket, '', self::$endpoint, self::$use_dns_bucket_name); + $rest = $rest->getResponse(); + if ($rest->error === false && $rest->code !== 204) + $rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status'); + if ($rest->error !== false) + { + self::__triggerError(sprintf("UpdraftPlus_S3::deleteBucket({$bucket}): [%s] %s", + $rest->error['code'], $rest->error['message']), __FILE__, __LINE__); + return false; + } + return true; + } + + + /** + * Create input info array for putObject() + * + * @param string $file Input file + * @param mixed $md5sum Use MD5 hash (supply a string if you want to use your own) + * @return array | false + */ + public static function inputFile($file, $md5sum = true) + { + if (!file_exists($file) || !is_file($file) || !is_readable($file)) + { + self::__triggerError('UpdraftPlus_S3::inputFile(): Unable to open input file: '.$file, __FILE__, __LINE__); + return false; + } + return array('file' => $file, 'size' => filesize($file), 'md5sum' => $md5sum !== false ? + (is_string($md5sum) ? $md5sum : base64_encode(md5_file($file, true))) : ''); + } + + + /** + * Create input array info for putObject() with a resource + * + * @param string $resource Input resource to read from + * @param integer $bufferSize Input byte size + * @param string $md5sum MD5 hash to send (optional) + * @return array | false + */ + public static function inputResource(&$resource, $bufferSize, $md5sum = '') + { + if (!is_resource($resource) || $bufferSize < 0) + { + self::__triggerError('UpdraftPlus_S3::inputResource(): Invalid resource or buffer size', __FILE__, __LINE__); + return false; + } + $input = array('size' => $bufferSize, 'md5sum' => $md5sum); + $input['fp'] =& $resource; + return $input; + } + + /** + * Initiate a multi-part upload (http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadInitiate.html) + * + * @param string $bucket Bucket name + * @param string $uri Object URI + * @param constant $acl ACL constant + * @param array $metaHeaders Array of x-amz-meta-* headers + * @param array $requestHeaders Array of request headers or content type as a string + * @param constant $storageClass Storage class constant + * @return string | false + */ + + public static function initiateMultipartUpload ($bucket, $uri, $acl = self::ACL_PRIVATE, $metaHeaders = array(), $requestHeaders = array(), $storageClass = self::STORAGE_CLASS_STANDARD) + { + + $rest = new UpdraftPlus_S3Request('POST', $bucket, $uri, self::$endpoint, self::$use_dns_bucket_name); + $rest->setParameter('uploads',''); + + // Custom request headers (Content-Type, Content-Disposition, Content-Encoding) + if (is_array($requestHeaders)) + foreach ($requestHeaders as $h => $v) $rest->setHeader($h, $v); + + // Set storage class + if ($storageClass !== self::STORAGE_CLASS_STANDARD) // Storage class + $rest->setAmzHeader('x-amz-storage-class', $storageClass); + + // Set ACL headers + $rest->setAmzHeader('x-amz-acl', $acl); + foreach ($metaHeaders as $h => $v) $rest->setAmzHeader('x-amz-meta-'.$h, $v); + + // Carry out the HTTP operation + $rest->getResponse(); + + if ($rest->response->error === false && $rest->response->code !== 200) + $rest->response->error = array('code' => $rest->response->code, 'message' => 'Unexpected HTTP status'); + if ($rest->response->error !== false) + { + self::__triggerError(sprintf("UpdraftPlus_S3::initiateMultipartUpload(): [%s] %s", + $rest->response->error['code'], $rest->response->error['message']), __FILE__, __LINE__); + return false; + } elseif (isset($rest->response->body)) + { + // DreamObjects already returns a SimpleXMLElement here. Not sure how that works. + if (is_a($rest->response->body, 'SimpleXMLElement')) { + $body = $rest->response->body; + } else { + $body = new SimpleXMLElement($rest->response->body); + } + return (string) $body->UploadId; + } + + // It is a programming error if we reach this line + return false; + + } + + /** + /* Upload a part of a multi-part set (http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadUploadPart.html) + * The chunk is read into memory, so make sure that you have enough (or patch this function to work another way!) + * + * @param string $bucket Bucket name + * @param string $uri Object URI + * @param string $uploadId uploadId returned previously from initiateMultipartUpload + * @param integer $partNumber sequential part number to upload + * @param string $filePath file to upload content from + * @param integer $partSize number of bytes in each part (though final part may have fewer) - pass the same value each time (for this particular upload) - default 5Mb (which is Amazon's minimum) + * @return string (ETag) | false + */ + + public static function uploadPart ($bucket, $uri, $uploadId, $filePath, $partNumber, $partSize = 5242880) + { + + $rest = new UpdraftPlus_S3Request('PUT', $bucket, $uri, self::$endpoint, self::$use_dns_bucket_name); + $rest->setParameter('partNumber', $partNumber); + $rest->setParameter('uploadId', $uploadId); + + // Where to begin + $fileOffset = ($partNumber - 1 ) * $partSize; + + // Download the smallest of the remaining bytes and the part size + $fileBytes = min(filesize($filePath) - $fileOffset, $partSize); + if ($fileBytes < 0) $fileBytes = 0; + + $rest->setHeader('Content-Type', 'application/octet-stream'); + $rest->data = ""; + + if ($handle = fopen($filePath, "rb")) { + if ($fileOffset >0) fseek($handle, $fileOffset); + $bytes_read = 0; + while ($fileBytes>0 && $read = fread($handle, max($fileBytes, 131072))) { + $fileBytes = $fileBytes - strlen($read); + $bytes_read += strlen($read); + $rest->data = $rest->data . $read; + } + fclose($handle); + } else { + return false; + } + + $rest->setHeader('Content-MD5', base64_encode(md5($rest->data, true))); + $rest->size = $bytes_read; + + $rest = $rest->getResponse(); + if ($rest->error === false && $rest->code !== 200) + $rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status'); + if ($rest->error !== false) + { + self::__triggerError(sprintf("UpdraftPlus_S3::uploadPart(): [%s] %s", + $rest->error['code'], $rest->error['message']), __FILE__, __LINE__); + return false; + } + return $rest->headers['hash']; + + } + + /** + * Complete a multi-part upload (http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadComplete.html) + * + * @param string $bucket Bucket name + * @param string $uri Object URI + * @param string $uploadId uploadId returned previously from initiateMultipartUpload + * @param array $parts an ordered list of eTags of previously uploaded parts from uploadPart + * @return boolean + */ + + public static function completeMultipartUpload ($bucket, $uri, $uploadId, $parts) + { + $rest = new UpdraftPlus_S3Request('POST', $bucket, $uri, self::$endpoint, self::$use_dns_bucket_name); + $rest->setParameter('uploadId', $uploadId); + + $xml = "\n"; + $partno = 1; + foreach ($parts as $etag) { + $xml .= "$partno$etag\n"; + $partno++; + } + $xml .= ""; + + $rest->data = $xml; + $rest->size = strlen($rest->data); + $rest->setHeader('Content-Type', 'application/xml'); + + $rest = $rest->getResponse(); + if ($rest->error === false && $rest->code !== 200) + $rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status'); + if ($rest->error !== false) + { + self::__triggerError(sprintf("UpdraftPlus_S3::completeMultipartUpload(): [%s] %s", + $rest->error['code'], $rest->error['message']), __FILE__, __LINE__); + return false; + } + return true; + + } + + /** + * Abort a multi-part upload (http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadAbort.html) + * + * @param string $bucket Bucket name + * @param string $uri Object URI + * @param string $uploadId uploadId returned previously from initiateMultipartUpload + * @return boolean + */ + + public static function abortMultipartUpload ($bucket, $uri, $uploadId) + { + $rest = new UpdraftPlus_S3Request('DELETE', $bucket, $uri, self::$endpoint, self::$use_dns_bucket_name); + $rest->setParameter('uploadId', $uploadId); + $rest = $rest->getResponse(); + if ($rest->error === false && $rest->code !== 204) + $rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status'); + if ($rest->error !== false) + { + self::__triggerError(sprintf("UpdraftPlus_S3::abortMultipartUpload(): [%s] %s", + $rest->error['code'], $rest->error['message']), __FILE__, __LINE__); + return false; + } + return true; + } + + /** + * Put an object + * + * @param mixed $input Input data + * @param string $bucket Bucket name + * @param string $uri Object URI + * @param constant $acl ACL constant + * @param array $metaHeaders Array of x-amz-meta-* headers + * @param array $requestHeaders Array of request headers or content type as a string + * @param constant $storageClass Storage class constant + * @return boolean + */ + public static function putObject($input, $bucket, $uri, $acl = self::ACL_PRIVATE, $metaHeaders = array(), $requestHeaders = array(), $storageClass = self::STORAGE_CLASS_STANDARD) + { + if ($input === false) return false; + $rest = new UpdraftPlus_S3Request('PUT', $bucket, $uri, self::$endpoint, self::$use_dns_bucket_name); + + if (!is_array($input)) $input = array( + 'data' => $input, 'size' => strlen($input), + 'md5sum' => base64_encode(md5($input, true)) + ); + + // Data + if (isset($input['fp'])) + $rest->fp =& $input['fp']; + elseif (isset($input['file']) && is_file($input['file'])) + $rest->fp = @fopen($input['file'], 'rb'); + elseif (isset($input['data'])) + $rest->data = $input['data']; + + // Content-Length (required) + if (isset($input['size']) && $input['size'] >= 0) + $rest->size = $input['size']; + else { + if (isset($input['file'])) + $rest->size = filesize($input['file']); + elseif (isset($input['data'])) + $rest->size = strlen($input['data']); + } + + // Custom request headers (Content-Type, Content-Disposition, Content-Encoding) + if (is_array($requestHeaders)) + foreach ($requestHeaders as $h => $v) $rest->setHeader($h, $v); + elseif (is_string($requestHeaders)) // Support for legacy contentType parameter + $input['type'] = $requestHeaders; + + // Content-Type + if (!isset($input['type'])) + { + if (isset($requestHeaders['Content-Type'])) + $input['type'] =& $requestHeaders['Content-Type']; + elseif (isset($input['file'])) + $input['type'] = self::__getMimeType($input['file']); + else + $input['type'] = 'application/octet-stream'; + } + + if ($storageClass !== self::STORAGE_CLASS_STANDARD) // Storage class + $rest->setAmzHeader('x-amz-storage-class', $storageClass); + + // We need to post with Content-Length and Content-Type, MD5 is optional + if ($rest->size >= 0 && ($rest->fp !== false || $rest->data !== false)) + { + $rest->setHeader('Content-Type', $input['type']); + if (isset($input['md5sum'])) $rest->setHeader('Content-MD5', $input['md5sum']); + + $rest->setAmzHeader('x-amz-acl', $acl); + foreach ($metaHeaders as $h => $v) $rest->setAmzHeader('x-amz-meta-'.$h, $v); + $rest->getResponse(); + } else + $rest->response->error = array('code' => 0, 'message' => 'Missing input parameters'); + + if ($rest->response->error === false && $rest->response->code !== 200) + $rest->response->error = array('code' => $rest->response->code, 'message' => 'Unexpected HTTP status'); + if ($rest->response->error !== false) + { + self::__triggerError(sprintf("UpdraftPlus_S3::putObject(): [%s] %s", + $rest->response->error['code'], $rest->response->error['message']), __FILE__, __LINE__); + return false; + } + return true; + } + + + /** + * Put an object from a file (legacy function) + * + * @param string $file Input file path + * @param string $bucket Bucket name + * @param string $uri Object URI + * @param constant $acl ACL constant + * @param array $metaHeaders Array of x-amz-meta-* headers + * @param string $contentType Content type + * @return boolean + */ + public static function putObjectFile($file, $bucket, $uri, $acl = self::ACL_PRIVATE, $metaHeaders = array(), $contentType = null, $storageClass = self::STORAGE_CLASS_STANDARD) + { + return self::putObject(self::inputFile($file), $bucket, $uri, $acl, $metaHeaders, $contentType, $storageClass); + } + + + /** + * Put an object from a string (legacy function) + * + * @param string $string Input data + * @param string $bucket Bucket name + * @param string $uri Object URI + * @param constant $acl ACL constant + * @param array $metaHeaders Array of x-amz-meta-* headers + * @param string $contentType Content type + * @return boolean + */ + public static function putObjectString($string, $bucket, $uri, $acl = self::ACL_PRIVATE, $metaHeaders = array(), $contentType = 'text/plain') + { + return self::putObject($string, $bucket, $uri, $acl, $metaHeaders, $contentType); + } + + + /** + * Get an object + * + * @param string $bucket Bucket name + * @param string $uri Object URI + * @param mixed $saveTo Filename or resource to write to + * @param mixed $resume - if $saveTo is a resource, then this is either false or the value for a Range: header; otherwise, a boolean, indicating whether to resume if possible. + * @return mixed + */ + public static function getObject($bucket, $uri, $saveTo = false, $resume = false) + { + $rest = new UpdraftPlus_S3Request('GET', $bucket, $uri, self::$endpoint, self::$use_dns_bucket_name); + if ($saveTo !== false) + { + if (is_resource($saveTo)) { + $rest->fp = $saveTo; + if (!is_bool($resume)) $rest->setHeader('Range', $resume); + } else { + if ($resume && file_exists($saveTo)) { + if (($rest->fp = @fopen($saveTo, 'ab')) !== false) { + $rest->setHeader('Range', "bytes=".filesize($saveTo).'-'); + $rest->file = realpath($saveTo); + } else { + $rest->response->error = array('code' => 0, 'message' => 'Unable to open save file for writing: '.$saveTo); + } + } else { + if (($rest->fp = @fopen($saveTo, 'wb')) !== false) + $rest->file = realpath($saveTo); + else + $rest->response->error = array('code' => 0, 'message' => 'Unable to open save file for writing: '.$saveTo); + } + } + } + if ($rest->response->error === false) $rest->getResponse(); + + if ($rest->response->error === false && ( !$resume && $rest->response->code != 200) || ( $resume && $rest->response->code != 206 && $rest->response->code != 200)) + $rest->response->error = array('code' => $rest->response->code, 'message' => 'Unexpected HTTP status'); + if ($rest->response->error !== false) + { + self::__triggerError(sprintf("UpdraftPlus_S3::getObject({$bucket}, {$uri}): [%s] %s", + $rest->response->error['code'], $rest->response->error['message']), __FILE__, __LINE__); + return false; + } + return $rest->response; + } + + + /** + * Get object information + * + * @param string $bucket Bucket name + * @param string $uri Object URI + * @param boolean $returnInfo Return response information + * @return mixed | false + */ + public static function getObjectInfo($bucket, $uri, $returnInfo = true) + { + $rest = new UpdraftPlus_S3Request('HEAD', $bucket, $uri, self::$endpoint, self::$use_dns_bucket_name); + $rest = $rest->getResponse(); + if ($rest->error === false && ($rest->code !== 200 && $rest->code !== 404)) + $rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status'); + if ($rest->error !== false) + { + self::__triggerError(sprintf("UpdraftPlus_S3::getObjectInfo({$bucket}, {$uri}): [%s] %s", + $rest->error['code'], $rest->error['message']), __FILE__, __LINE__); + return false; + } + return $rest->code == 200 ? $returnInfo ? $rest->headers : true : false; + } + + + /** + * Copy an object + * + * @param string $bucket Source bucket name + * @param string $uri Source object URI + * @param string $bucket Destination bucket name + * @param string $uri Destination object URI + * @param constant $acl ACL constant + * @param array $metaHeaders Optional array of x-amz-meta-* headers + * @param array $requestHeaders Optional array of request headers (content type, disposition, etc.) + * @param constant $storageClass Storage class constant + * @return mixed | false + */ + public static function copyObject($srcBucket, $srcUri, $bucket, $uri, $acl = self::ACL_PRIVATE, $metaHeaders = array(), $requestHeaders = array(), $storageClass = self::STORAGE_CLASS_STANDARD) + { + $rest = new UpdraftPlus_S3Request('PUT', $bucket, $uri, self::$endpoint, self::$use_dns_bucket_name); + $rest->setHeader('Content-Length', 0); + foreach ($requestHeaders as $h => $v) $rest->setHeader($h, $v); + foreach ($metaHeaders as $h => $v) $rest->setAmzHeader('x-amz-meta-'.$h, $v); + if ($storageClass !== self::STORAGE_CLASS_STANDARD) // Storage class + $rest->setAmzHeader('x-amz-storage-class', $storageClass); + $rest->setAmzHeader('x-amz-acl', $acl); + $rest->setAmzHeader('x-amz-copy-source', sprintf('/%s/%s', $srcBucket, rawurlencode($srcUri))); + if (sizeof($requestHeaders) > 0 || sizeof($metaHeaders) > 0) + $rest->setAmzHeader('x-amz-metadata-directive', 'REPLACE'); + + $rest = $rest->getResponse(); + if ($rest->error === false && $rest->code !== 200) + $rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status'); + if ($rest->error !== false) + { + self::__triggerError(sprintf("UpdraftPlus_S3::copyObject({$srcBucket}, {$srcUri}, {$bucket}, {$uri}): [%s] %s", + $rest->error['code'], $rest->error['message']), __FILE__, __LINE__); + return false; + } + return isset($rest->body->LastModified, $rest->body->ETag) ? array( + 'time' => strtotime((string)$rest->body->LastModified), + 'hash' => substr((string)$rest->body->ETag, 1, -1) + ) : false; + } + + + /** + * Set logging for a bucket + * + * @param string $bucket Bucket name + * @param string $targetBucket Target bucket (where logs are stored) + * @param string $targetPrefix Log prefix (e,g; domain.com-) + * @return boolean + */ + public static function setBucketLogging($bucket, $targetBucket, $targetPrefix = null) + { + // The S3 log delivery group has to be added to the target bucket's ACP + if ($targetBucket !== null && ($acp = self::getAccessControlPolicy($targetBucket, '')) !== false) + { + // Only add permissions to the target bucket when they do not exist + $aclWriteSet = false; + $aclReadSet = false; + foreach ($acp['acl'] as $acl) + if ($acl['type'] == 'Group' && $acl['uri'] == 'http://acs.amazonaws.com/groups/s3/LogDelivery') + { + if ($acl['permission'] == 'WRITE') $aclWriteSet = true; + elseif ($acl['permission'] == 'READ_ACP') $aclReadSet = true; + } + if (!$aclWriteSet) $acp['acl'][] = array( + 'type' => 'Group', 'uri' => 'http://acs.amazonaws.com/groups/s3/LogDelivery', 'permission' => 'WRITE' + ); + if (!$aclReadSet) $acp['acl'][] = array( + 'type' => 'Group', 'uri' => 'http://acs.amazonaws.com/groups/s3/LogDelivery', 'permission' => 'READ_ACP' + ); + if (!$aclReadSet || !$aclWriteSet) self::setAccessControlPolicy($targetBucket, '', $acp); + } + + $dom = new DOMDocument; + $bucketLoggingStatus = $dom->createElement('BucketLoggingStatus'); + $bucketLoggingStatus->setAttribute('xmlns', 'http://s3.amazonaws.com/doc/2006-03-01/'); + if ($targetBucket !== null) + { + if ($targetPrefix == null) $targetPrefix = $bucket . '-'; + $loggingEnabled = $dom->createElement('LoggingEnabled'); + $loggingEnabled->appendChild($dom->createElement('TargetBucket', $targetBucket)); + $loggingEnabled->appendChild($dom->createElement('TargetPrefix', $targetPrefix)); + // TODO: Add TargetGrants? + $bucketLoggingStatus->appendChild($loggingEnabled); + } + $dom->appendChild($bucketLoggingStatus); + + $rest = new UpdraftPlus_S3Request('PUT', $bucket, '', self::$endpoint, self::$use_dns_bucket_name); + $rest->setParameter('logging', null); + $rest->data = $dom->saveXML(); + $rest->size = strlen($rest->data); + $rest->setHeader('Content-Type', 'application/xml'); + $rest = $rest->getResponse(); + if ($rest->error === false && $rest->code !== 200) + $rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status'); + if ($rest->error !== false) + { + self::__triggerError(sprintf("UpdraftPlus_S3::setBucketLogging({$bucket}, {$targetBucket}): [%s] %s", + $rest->error['code'], $rest->error['message']), __FILE__, __LINE__); + return false; + } + return true; + } + + + /** + * Get logging status for a bucket + * + * This will return false if logging is not enabled. + * Note: To enable logging, you also need to grant write access to the log group + * + * @param string $bucket Bucket name + * @return array | false + */ + public static function getBucketLogging($bucket) + { + $rest = new UpdraftPlus_S3Request('GET', $bucket, '', self::$endpoint, self::$use_dns_bucket_name); + $rest->setParameter('logging', null); + $rest = $rest->getResponse(); + if ($rest->error === false && $rest->code !== 200) + $rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status'); + if ($rest->error !== false) + { + self::__triggerError(sprintf("UpdraftPlus_S3::getBucketLogging({$bucket}): [%s] %s", + $rest->error['code'], $rest->error['message']), __FILE__, __LINE__); + return false; + } + if (!isset($rest->body->LoggingEnabled)) return false; // No logging + return array( + 'targetBucket' => (string)$rest->body->LoggingEnabled->TargetBucket, + 'targetPrefix' => (string)$rest->body->LoggingEnabled->TargetPrefix, + ); + } + + + /** + * Disable bucket logging + * + * @param string $bucket Bucket name + * @return boolean + */ + public static function disableBucketLogging($bucket) + { + return self::setBucketLogging($bucket, null); + } + + + /** + * Get a bucket's location + * + * @param string $bucket Bucket name + * @return string | false + */ + public static function getBucketLocation($bucket) + { + + $rest = new UpdraftPlus_S3Request('GET', $bucket, '', self::$endpoint, self::$use_dns_bucket_name); + $rest->setParameter('location', null); + $rest = $rest->getResponse(); + if ($rest->error === false && $rest->code !== 200) + $rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status'); + if ($rest->error !== false) + { + self::__triggerError(sprintf("UpdraftPlus_S3::getBucketLocation({$bucket}): [%s] %s", + $rest->error['code'], $rest->error['message']), __FILE__, __LINE__); + return false; + } + return (isset($rest->body[0]) && (string)$rest->body[0] !== '') ? (string)$rest->body[0] : 'US'; + } + + + /** + * Set object or bucket Access Control Policy + * + * @param string $bucket Bucket name + * @param string $uri Object URI + * @param array $acp Access Control Policy Data (same as the data returned from getAccessControlPolicy) + * @return boolean + */ + public static function setAccessControlPolicy($bucket, $uri = '', $acp = array()) + { + $dom = new DOMDocument; + $dom->formatOutput = true; + $accessControlPolicy = $dom->createElement('AccessControlPolicy'); + $accessControlList = $dom->createElement('AccessControlList'); + + // It seems the owner has to be passed along too + $owner = $dom->createElement('Owner'); + $owner->appendChild($dom->createElement('ID', $acp['owner']['id'])); + $owner->appendChild($dom->createElement('DisplayName', $acp['owner']['name'])); + $accessControlPolicy->appendChild($owner); + + foreach ($acp['acl'] as $g) + { + $grant = $dom->createElement('Grant'); + $grantee = $dom->createElement('Grantee'); + $grantee->setAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance'); + if (isset($g['id'])) + { // CanonicalUser (DisplayName is omitted) + $grantee->setAttribute('xsi:type', 'CanonicalUser'); + $grantee->appendChild($dom->createElement('ID', $g['id'])); + } + elseif (isset($g['email'])) + { // AmazonCustomerByEmail + $grantee->setAttribute('xsi:type', 'AmazonCustomerByEmail'); + $grantee->appendChild($dom->createElement('EmailAddress', $g['email'])); + } + elseif ($g['type'] == 'Group') + { // Group + $grantee->setAttribute('xsi:type', 'Group'); + $grantee->appendChild($dom->createElement('URI', $g['uri'])); + } + $grant->appendChild($grantee); + $grant->appendChild($dom->createElement('Permission', $g['permission'])); + $accessControlList->appendChild($grant); + } + + $accessControlPolicy->appendChild($accessControlList); + $dom->appendChild($accessControlPolicy); + + $rest = new UpdraftPlus_S3Request('PUT', $bucket, $uri, self::$endpoint, self::$use_dns_bucket_name); + $rest->setParameter('acl', null); + $rest->data = $dom->saveXML(); + $rest->size = strlen($rest->data); + $rest->setHeader('Content-Type', 'application/xml'); + $rest = $rest->getResponse(); + if ($rest->error === false && $rest->code !== 200) + $rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status'); + if ($rest->error !== false) + { + self::__triggerError(sprintf("UpdraftPlus_S3::setAccessControlPolicy({$bucket}, {$uri}): [%s] %s", + $rest->error['code'], $rest->error['message']), __FILE__, __LINE__); + return false; + } + return true; + } + + + /** + * Get object or bucket Access Control Policy + * + * @param string $bucket Bucket name + * @param string $uri Object URI + * @return mixed | false + */ + public static function getAccessControlPolicy($bucket, $uri = '') + { + $rest = new UpdraftPlus_S3Request('GET', $bucket, $uri, self::$endpoint, self::$use_dns_bucket_name); + $rest->setParameter('acl', null); + $rest = $rest->getResponse(); + if ($rest->error === false && $rest->code !== 200) + $rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status'); + if ($rest->error !== false) + { + self::__triggerError(sprintf("UpdraftPlus_S3::getAccessControlPolicy({$bucket}, {$uri}): [%s] %s", + $rest->error['code'], $rest->error['message']), __FILE__, __LINE__); + return false; + } + + $acp = array(); + if (isset($rest->body->Owner, $rest->body->Owner->ID, $rest->body->Owner->DisplayName)) + $acp['owner'] = array( + 'id' => (string)$rest->body->Owner->ID, 'name' => (string)$rest->body->Owner->DisplayName + ); + + if (isset($rest->body->AccessControlList)) + { + $acp['acl'] = array(); + foreach ($rest->body->AccessControlList->Grant as $grant) + { + foreach ($grant->Grantee as $grantee) + { + if (isset($grantee->ID, $grantee->DisplayName)) // CanonicalUser + $acp['acl'][] = array( + 'type' => 'CanonicalUser', + 'id' => (string)$grantee->ID, + 'name' => (string)$grantee->DisplayName, + 'permission' => (string)$grant->Permission + ); + elseif (isset($grantee->EmailAddress)) // AmazonCustomerByEmail + $acp['acl'][] = array( + 'type' => 'AmazonCustomerByEmail', + 'email' => (string)$grantee->EmailAddress, + 'permission' => (string)$grant->Permission + ); + elseif (isset($grantee->URI)) // Group + $acp['acl'][] = array( + 'type' => 'Group', + 'uri' => (string)$grantee->URI, + 'permission' => (string)$grant->Permission + ); + else continue; + } + } + } + return $acp; + } + + + /** + * Delete an object + * + * @param string $bucket Bucket name + * @param string $uri Object URI + * @return boolean + */ + public static function deleteObject($bucket, $uri) + { + $rest = new UpdraftPlus_S3Request('DELETE', $bucket, $uri, self::$endpoint, self::$use_dns_bucket_name); + $rest = $rest->getResponse(); + if ($rest->error === false && $rest->code !== 204) + $rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status'); + if ($rest->error !== false) + { + self::__triggerError(sprintf("UpdraftPlus_S3::deleteObject(): [%s] %s", + $rest->error['code'], $rest->error['message']), __FILE__, __LINE__); + return false; + } + return true; + } + + + /** + * Get a query string authenticated URL + * + * @param string $bucket Bucket name + * @param string $uri Object URI + * @param integer $lifetime Lifetime in seconds + * @param boolean $hostBucket Use the bucket name as the hostname + * @param boolean $https Use HTTPS ($hostBucket should be false for SSL verification) + * @return string + */ + public static function getAuthenticatedURL($bucket, $uri, $lifetime, $hostBucket = false, $https = false) + { + $expires = time() + $lifetime; + $uri = str_replace(array('%2F', '%2B'), array('/', '+'), rawurlencode($uri)); + return sprintf(($https ? 'https' : 'http').'://%s/%s?AWSAccessKeyId=%s&Expires=%u&Signature=%s', + // $hostBucket ? $bucket : $bucket.'.s3.amazonaws.com', $uri, self::$__accessKey, $expires, + $hostBucket ? $bucket : 's3.amazonaws.com/'.$bucket, $uri, self::$__accessKey, $expires, + urlencode(self::__getHash("GET\n\n\n{$expires}\n/{$bucket}/{$uri}"))); + } + + + /** + * Get a CloudFront signed policy URL + * + * @param array $policy Policy + * @return string + */ + public static function getSignedPolicyURL($policy) + { + $data = json_encode($policy); + $signature = ''; + if (!openssl_sign($data, $signature, self::$__signingKeyResource)) return false; + + $encoded = str_replace(array('+', '='), array('-', '_', '~'), base64_encode($data)); + $signature = str_replace(array('+', '='), array('-', '_', '~'), base64_encode($signature)); + + $url = $policy['Statement'][0]['Resource'] . '?'; + foreach (array('Policy' => $encoded, 'Signature' => $signature, 'Key-Pair-Id' => self::$__signingKeyPairId) as $k => $v) + $url .= $k.'='.str_replace('%2F', '/', rawurlencode($v)).'&'; + return substr($url, 0, -1); + } + + + /** + * Get a CloudFront canned policy URL + * + * @param string $string URL to sign + * @param integer $lifetime URL lifetime + * @return string + */ + public static function getSignedCannedURL($url, $lifetime) + { + return self::getSignedPolicyURL(array( + 'Statement' => array( + array('Resource' => $url, 'Condition' => array( + 'DateLessThan' => array('AWS:EpochTime' => time() + $lifetime) + )) + ) + )); + } + + + /** + * Get upload POST parameters for form uploads + * + * @param string $bucket Bucket name + * @param string $uriPrefix Object URI prefix + * @param constant $acl ACL constant + * @param integer $lifetime Lifetime in seconds + * @param integer $maxFileSize Maximum filesize in bytes (default 5MB) + * @param string $successRedirect Redirect URL or 200 / 201 status code + * @param array $amzHeaders Array of x-amz-meta-* headers + * @param array $headers Array of request headers or content type as a string + * @param boolean $flashVars Includes additional "Filename" variable posted by Flash + * @return object + */ + public static function getHttpUploadPostParams($bucket, $uriPrefix = '', $acl = self::ACL_PRIVATE, $lifetime = 3600, + $maxFileSize = 5242880, $successRedirect = "201", $amzHeaders = array(), $headers = array(), $flashVars = false) + { + // Create policy object + $policy = new stdClass; + $policy->expiration = gmdate('Y-m-d\TH:i:s\Z', (time() + $lifetime)); + $policy->conditions = array(); + $obj = new stdClass; $obj->bucket = $bucket; array_push($policy->conditions, $obj); + $obj = new stdClass; $obj->acl = $acl; array_push($policy->conditions, $obj); + + $obj = new stdClass; // 200 for non-redirect uploads + if (is_numeric($successRedirect) && in_array((int)$successRedirect, array(200, 201))) + $obj->success_action_status = (string)$successRedirect; + else // URL + $obj->success_action_redirect = $successRedirect; + array_push($policy->conditions, $obj); + + if ($acl !== self::ACL_PUBLIC_READ) + array_push($policy->conditions, array('eq', '$acl', $acl)); + + array_push($policy->conditions, array('starts-with', '$key', $uriPrefix)); + if ($flashVars) array_push($policy->conditions, array('starts-with', '$Filename', '')); + foreach (array_keys($headers) as $headerKey) + array_push($policy->conditions, array('starts-with', '$'.$headerKey, '')); + foreach ($amzHeaders as $headerKey => $headerVal) + { + $obj = new stdClass; + $obj->{$headerKey} = (string)$headerVal; + array_push($policy->conditions, $obj); + } + array_push($policy->conditions, array('content-length-range', 0, $maxFileSize)); + $policy = base64_encode(str_replace('\/', '/', json_encode($policy))); + + // Create parameters + $params = new stdClass; + $params->AWSAccessKeyId = self::$__accessKey; + $params->key = $uriPrefix.'${filename}'; + $params->acl = $acl; + $params->policy = $policy; unset($policy); + $params->signature = self::__getHash($params->policy); + if (is_numeric($successRedirect) && in_array((int)$successRedirect, array(200, 201))) + $params->success_action_status = (string)$successRedirect; + else + $params->success_action_redirect = $successRedirect; + foreach ($headers as $headerKey => $headerVal) $params->{$headerKey} = (string)$headerVal; + foreach ($amzHeaders as $headerKey => $headerVal) $params->{$headerKey} = (string)$headerVal; + return $params; + } + + + /** + * Create a CloudFront distribution + * + * @param string $bucket Bucket name + * @param boolean $enabled Enabled (true/false) + * @param array $cnames Array containing CNAME aliases + * @param string $comment Use the bucket name as the hostname + * @param string $defaultRootObject Default root object + * @param string $originAccessIdentity Origin access identity + * @param array $trustedSigners Array of trusted signers + * @return array | false + */ + public static function createDistribution($bucket, $enabled = true, $cnames = array(), $comment = null, $defaultRootObject = null, $originAccessIdentity = null, $trustedSigners = array()) + { + if (!extension_loaded('openssl')) + { + self::__triggerError(sprintf("UpdraftPlus_S3::createDistribution({$bucket}, ".(int)$enabled.", [], '$comment'): %s", + "CloudFront functionality requires SSL"), __FILE__, __LINE__); + return false; + } + $useSSL = self::$useSSL; + + self::$useSSL = true; // CloudFront requires SSL + $rest = new UpdraftPlus_S3Request('POST', '', '2010-11-01/distribution', 'cloudfront.amazonaws.com'); + $rest->data = self::__getCloudFrontDistributionConfigXML( + $bucket.'.s3.amazonaws.com', + $enabled, + (string)$comment, + (string)microtime(true), + $cnames, + $defaultRootObject, + $originAccessIdentity, + $trustedSigners + ); + + $rest->size = strlen($rest->data); + $rest->setHeader('Content-Type', 'application/xml'); + $rest = self::__getCloudFrontResponse($rest); + + self::$useSSL = $useSSL; + + if ($rest->error === false && $rest->code !== 201) + $rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status'); + if ($rest->error !== false) + { + self::__triggerError(sprintf("UpdraftPlus_S3::createDistribution({$bucket}, ".(int)$enabled.", [], '$comment'): [%s] %s", + $rest->error['code'], $rest->error['message']), __FILE__, __LINE__); + return false; + } elseif ($rest->body instanceof SimpleXMLElement) + return self::__parseCloudFrontDistributionConfig($rest->body); + return false; + } + + + /** + * Get CloudFront distribution info + * + * @param string $distributionId Distribution ID from listDistributions() + * @return array | false + */ + public static function getDistribution($distributionId) + { + if (!extension_loaded('openssl')) + { + self::__triggerError(sprintf("UpdraftPlus_S3::getDistribution($distributionId): %s", + "CloudFront functionality requires SSL"), __FILE__, __LINE__); + return false; + } + $useSSL = self::$useSSL; + + self::$useSSL = true; // CloudFront requires SSL + $rest = new UpdraftPlus_S3Request('GET', '', '2010-11-01/distribution/'.$distributionId, 'cloudfront.amazonaws.com'); + $rest = self::__getCloudFrontResponse($rest); + + self::$useSSL = $useSSL; + + if ($rest->error === false && $rest->code !== 200) + $rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status'); + if ($rest->error !== false) + { + self::__triggerError(sprintf("UpdraftPlus_S3::getDistribution($distributionId): [%s] %s", + $rest->error['code'], $rest->error['message']), __FILE__, __LINE__); + return false; + } + elseif ($rest->body instanceof SimpleXMLElement) + { + $dist = self::__parseCloudFrontDistributionConfig($rest->body); + $dist['hash'] = $rest->headers['hash']; + $dist['id'] = $distributionId; + return $dist; + } + return false; + } + + + /** + * Update a CloudFront distribution + * + * @param array $dist Distribution array info identical to output of getDistribution() + * @return array | false + */ + public static function updateDistribution($dist) + { + if (!extension_loaded('openssl')) + { + self::__triggerError(sprintf("UpdraftPlus_S3::updateDistribution({$dist['id']}): %s", + "CloudFront functionality requires SSL"), __FILE__, __LINE__); + return false; + } + + $useSSL = self::$useSSL; + + self::$useSSL = true; // CloudFront requires SSL + $rest = new UpdraftPlus_S3Request('PUT', '', '2010-11-01/distribution/'.$dist['id'].'/config', 'cloudfront.amazonaws.com'); + $rest->data = self::__getCloudFrontDistributionConfigXML( + $dist['origin'], + $dist['enabled'], + $dist['comment'], + $dist['callerReference'], + $dist['cnames'], + $dist['defaultRootObject'], + $dist['originAccessIdentity'], + $dist['trustedSigners'] + ); + + $rest->size = strlen($rest->data); + $rest->setHeader('If-Match', $dist['hash']); + $rest = self::__getCloudFrontResponse($rest); + + self::$useSSL = $useSSL; + + if ($rest->error === false && $rest->code !== 200) + $rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status'); + if ($rest->error !== false) + { + self::__triggerError(sprintf("UpdraftPlus_S3::updateDistribution({$dist['id']}): [%s] %s", + $rest->error['code'], $rest->error['message']), __FILE__, __LINE__); + return false; + } else { + $dist = self::__parseCloudFrontDistributionConfig($rest->body); + $dist['hash'] = $rest->headers['hash']; + return $dist; + } + return false; + } + + + /** + * Delete a CloudFront distribution + * + * @param array $dist Distribution array info identical to output of getDistribution() + * @return boolean + */ + public static function deleteDistribution($dist) + { + if (!extension_loaded('openssl')) + { + self::__triggerError(sprintf("UpdraftPlus_S3::deleteDistribution({$dist['id']}): %s", + "CloudFront functionality requires SSL"), __FILE__, __LINE__); + return false; + } + + $useSSL = self::$useSSL; + + self::$useSSL = true; // CloudFront requires SSL + $rest = new UpdraftPlus_S3Request('DELETE', '', '2008-06-30/distribution/'.$dist['id'], 'cloudfront.amazonaws.com'); + $rest->setHeader('If-Match', $dist['hash']); + $rest = self::__getCloudFrontResponse($rest); + + self::$useSSL = $useSSL; + + if ($rest->error === false && $rest->code !== 204) + $rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status'); + if ($rest->error !== false) + { + self::__triggerError(sprintf("UpdraftPlus_S3::deleteDistribution({$dist['id']}): [%s] %s", + $rest->error['code'], $rest->error['message']), __FILE__, __LINE__); + return false; + } + return true; + } + + + /** + * Get a list of CloudFront distributions + * + * @return array + */ + public static function listDistributions() + { + if (!extension_loaded('openssl')) + { + self::__triggerError(sprintf("UpdraftPlus_S3::listDistributions(): [%s] %s", + "CloudFront functionality requires SSL"), __FILE__, __LINE__); + return false; + } + + $useSSL = self::$useSSL; + self::$useSSL = true; // CloudFront requires SSL + $rest = new UpdraftPlus_S3Request('GET', '', '2010-11-01/distribution', 'cloudfront.amazonaws.com'); + $rest = self::__getCloudFrontResponse($rest); + self::$useSSL = $useSSL; + + if ($rest->error === false && $rest->code !== 200) + $rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status'); + if ($rest->error !== false) + { + self::__triggerError(sprintf("UpdraftPlus_S3::listDistributions(): [%s] %s", + $rest->error['code'], $rest->error['message']), __FILE__, __LINE__); + return false; + } + elseif ($rest->body instanceof SimpleXMLElement && isset($rest->body->DistributionSummary)) + { + $list = array(); + if (isset($rest->body->Marker, $rest->body->MaxItems, $rest->body->IsTruncated)) + { + //$info['marker'] = (string)$rest->body->Marker; + //$info['maxItems'] = (int)$rest->body->MaxItems; + //$info['isTruncated'] = (string)$rest->body->IsTruncated == 'true' ? true : false; + } + foreach ($rest->body->DistributionSummary as $summary) + $list[(string)$summary->Id] = self::__parseCloudFrontDistributionConfig($summary); + + return $list; + } + return array(); + } + + /** + * List CloudFront Origin Access Identities + * + * @return array + */ + public static function listOriginAccessIdentities() + { + if (!extension_loaded('openssl')) + { + self::__triggerError(sprintf("UpdraftPlus_S3::listOriginAccessIdentities(): [%s] %s", + "CloudFront functionality requires SSL"), __FILE__, __LINE__); + return false; + } + + self::$useSSL = true; // CloudFront requires SSL + $rest = new UpdraftPlus_S3Request('GET', '', '2010-11-01/origin-access-identity/cloudfront', 'cloudfront.amazonaws.com'); + $rest = self::__getCloudFrontResponse($rest); + $useSSL = self::$useSSL; + + if ($rest->error === false && $rest->code !== 200) + $rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status'); + if ($rest->error !== false) + { + trigger_error(sprintf("UpdraftPlus_S3::listOriginAccessIdentities(): [%s] %s", + $rest->error['code'], $rest->error['message']), E_USER_WARNING); + return false; + } + + if (isset($rest->body->CloudFrontOriginAccessIdentitySummary)) + { + $identities = array(); + foreach ($rest->body->CloudFrontOriginAccessIdentitySummary as $identity) + if (isset($identity->S3CanonicalUserId)) + $identities[(string)$identity->Id] = array('id' => (string)$identity->Id, 's3CanonicalUserId' => (string)$identity->S3CanonicalUserId); + return $identities; + } + return false; + } + + + /** + * Invalidate objects in a CloudFront distribution + * + * Thanks to Martin Lindkvist for UpdraftPlus_S3::invalidateDistribution() + * + * @param string $distributionId Distribution ID from listDistributions() + * @param array $paths Array of object paths to invalidate + * @return boolean + */ + public static function invalidateDistribution($distributionId, $paths) + { + if (!extension_loaded('openssl')) + { + self::__triggerError(sprintf("UpdraftPlus_S3::invalidateDistribution(): [%s] %s", + "CloudFront functionality requires SSL"), __FILE__, __LINE__); + return false; + } + + $useSSL = self::$useSSL; + self::$useSSL = true; // CloudFront requires SSL + $rest = new UpdraftPlus_S3Request('POST', '', '2010-08-01/distribution/'.$distributionId.'/invalidation', 'cloudfront.amazonaws.com'); + $rest->data = self::__getCloudFrontInvalidationBatchXML($paths, (string)microtime(true)); + $rest->size = strlen($rest->data); + $rest = self::__getCloudFrontResponse($rest); + self::$useSSL = $useSSL; + + if ($rest->error === false && $rest->code !== 201) + $rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status'); + if ($rest->error !== false) + { + trigger_error(sprintf("UpdraftPlus_S3::invalidate('{$distributionId}',{$paths}): [%s] %s", + $rest->error['code'], $rest->error['message']), E_USER_WARNING); + return false; + } + return true; + } + + + /** + * Get a InvalidationBatch DOMDocument + * + * @internal Used to create XML in invalidateDistribution() + * @param array $paths Paths to objects to invalidateDistribution + * @return string + */ + private static function __getCloudFrontInvalidationBatchXML($paths, $callerReference = '0') { + $dom = new DOMDocument('1.0', 'UTF-8'); + $dom->formatOutput = true; + $invalidationBatch = $dom->createElement('InvalidationBatch'); + foreach ($paths as $path) + $invalidationBatch->appendChild($dom->createElement('Path', $path)); + + $invalidationBatch->appendChild($dom->createElement('CallerReference', $callerReference)); + $dom->appendChild($invalidationBatch); + return $dom->saveXML(); + } + + + /** + * List your invalidation batches for invalidateDistribution() in a CloudFront distribution + * + * http://docs.amazonwebservices.com/AmazonCloudFront/latest/APIReference/ListInvalidation.html + * returned array looks like this: + * Array + * ( + * [I31TWB0CN9V6XD] => InProgress + * [IT3TFE31M0IHZ] => Completed + * [I12HK7MPO1UQDA] => Completed + * [I1IA7R6JKTC3L2] => Completed + * ) + * + * @param string $distributionId Distribution ID from listDistributions() + * @return array + */ + public static function getDistributionInvalidationList($distributionId) + { + if (!extension_loaded('openssl')) + { + self::__triggerError(sprintf("UpdraftPlus_S3::getDistributionInvalidationList(): [%s] %s", + "CloudFront functionality requires SSL"), __FILE__, __LINE__); + return false; + } + + $useSSL = self::$useSSL; + self::$useSSL = true; // CloudFront requires SSL + $rest = new UpdraftPlus_S3Request('GET', '', '2010-11-01/distribution/'.$distributionId.'/invalidation', 'cloudfront.amazonaws.com'); + $rest = self::__getCloudFrontResponse($rest); + self::$useSSL = $useSSL; + + if ($rest->error === false && $rest->code !== 200) + $rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status'); + if ($rest->error !== false) + { + trigger_error(sprintf("UpdraftPlus_S3::getDistributionInvalidationList('{$distributionId}'): [%s]", + $rest->error['code'], $rest->error['message']), E_USER_WARNING); + return false; + } + elseif ($rest->body instanceof SimpleXMLElement && isset($rest->body->InvalidationSummary)) + { + $list = array(); + foreach ($rest->body->InvalidationSummary as $summary) + $list[(string)$summary->Id] = (string)$summary->Status; + + return $list; + } + return array(); + } + + + /** + * Get a DistributionConfig DOMDocument + * + * http://docs.amazonwebservices.com/AmazonCloudFront/latest/APIReference/index.html?PutConfig.html + * + * @internal Used to create XML in createDistribution() and updateDistribution() + * @param string $bucket S3 Origin bucket + * @param boolean $enabled Enabled (true/false) + * @param string $comment Comment to append + * @param string $callerReference Caller reference + * @param array $cnames Array of CNAME aliases + * @param string $defaultRootObject Default root object + * @param string $originAccessIdentity Origin access identity + * @param array $trustedSigners Array of trusted signers + * @return string + */ + private static function __getCloudFrontDistributionConfigXML($bucket, $enabled, $comment, $callerReference = '0', $cnames = array(), $defaultRootObject = null, $originAccessIdentity = null, $trustedSigners = array()) + { + $dom = new DOMDocument('1.0', 'UTF-8'); + $dom->formatOutput = true; + $distributionConfig = $dom->createElement('DistributionConfig'); + $distributionConfig->setAttribute('xmlns', 'http://cloudfront.amazonaws.com/doc/2010-11-01/'); + + $origin = $dom->createElement('S3Origin'); + $origin->appendChild($dom->createElement('DNSName', $bucket)); + if ($originAccessIdentity !== null) $origin->appendChild($dom->createElement('OriginAccessIdentity', $originAccessIdentity)); + $distributionConfig->appendChild($origin); + + if ($defaultRootObject !== null) $distributionConfig->appendChild($dom->createElement('DefaultRootObject', $defaultRootObject)); + + $distributionConfig->appendChild($dom->createElement('CallerReference', $callerReference)); + foreach ($cnames as $cname) + $distributionConfig->appendChild($dom->createElement('CNAME', $cname)); + if ($comment !== '') $distributionConfig->appendChild($dom->createElement('Comment', $comment)); + $distributionConfig->appendChild($dom->createElement('Enabled', $enabled ? 'true' : 'false')); + + $trusted = $dom->createElement('TrustedSigners'); + foreach ($trustedSigners as $id => $type) + $trusted->appendChild($id !== '' ? $dom->createElement($type, $id) : $dom->createElement($type)); + $distributionConfig->appendChild($trusted); + + $dom->appendChild($distributionConfig); + //var_dump($dom->saveXML()); + return $dom->saveXML(); + } + + + /** + * Parse a CloudFront distribution config + * + * See http://docs.amazonwebservices.com/AmazonCloudFront/latest/APIReference/index.html?GetDistribution.html + * + * @internal Used to parse the CloudFront DistributionConfig node to an array + * @param object &$node DOMNode + * @return array + */ + private static function __parseCloudFrontDistributionConfig(&$node) + { + if (isset($node->DistributionConfig)) + return self::__parseCloudFrontDistributionConfig($node->DistributionConfig); + + $dist = array(); + if (isset($node->Id, $node->Status, $node->LastModifiedTime, $node->DomainName)) + { + $dist['id'] = (string)$node->Id; + $dist['status'] = (string)$node->Status; + $dist['time'] = strtotime((string)$node->LastModifiedTime); + $dist['domain'] = (string)$node->DomainName; + } + + if (isset($node->CallerReference)) + $dist['callerReference'] = (string)$node->CallerReference; + + if (isset($node->Enabled)) + $dist['enabled'] = (string)$node->Enabled == 'true' ? true : false; + + if (isset($node->S3Origin)) + { + if (isset($node->S3Origin->DNSName)) + $dist['origin'] = (string)$node->S3Origin->DNSName; + + $dist['originAccessIdentity'] = isset($node->S3Origin->OriginAccessIdentity) ? + (string)$node->S3Origin->OriginAccessIdentity : null; + } + + $dist['defaultRootObject'] = isset($node->DefaultRootObject) ? (string)$node->DefaultRootObject : null; + + $dist['cnames'] = array(); + if (isset($node->CNAME)) + foreach ($node->CNAME as $cname) + $dist['cnames'][(string)$cname] = (string)$cname; + + $dist['trustedSigners'] = array(); + if (isset($node->TrustedSigners)) + foreach ($node->TrustedSigners as $signer) + { + if (isset($signer->Self)) + $dist['trustedSigners'][''] = 'Self'; + elseif (isset($signer->KeyPairId)) + $dist['trustedSigners'][(string)$signer->KeyPairId] = 'KeyPairId'; + elseif (isset($signer->AwsAccountNumber)) + $dist['trustedSigners'][(string)$signer->AwsAccountNumber] = 'AwsAccountNumber'; + } + + $dist['comment'] = isset($node->Comment) ? (string)$node->Comment : null; + return $dist; + } + + + /** + * Grab CloudFront response + * + * @internal Used to parse the CloudFront UpdraftPlus_S3Request::getResponse() output + * @param object &$rest UpdraftPlus_S3Request instance + * @return object + */ + private static function __getCloudFrontResponse(&$rest) + { + $rest->getResponse(); + if ($rest->response->error === false && isset($rest->response->body) && + is_string($rest->response->body) && substr($rest->response->body, 0, 5) == 'response->body = simplexml_load_string($rest->response->body); + // Grab CloudFront errors + if (isset($rest->response->body->Error, $rest->response->body->Error->Code, + $rest->response->body->Error->Message)) + { + $rest->response->error = array( + 'code' => (string)$rest->response->body->Error->Code, + 'message' => (string)$rest->response->body->Error->Message + ); + unset($rest->response->body); + } + } + return $rest->response; + } + + + /** + * Get MIME type for file + * + * @internal Used to get mime types + * @param string &$file File path + * @return string + */ + public static function __getMimeType(&$file) + { + $type = false; + // Fileinfo documentation says fileinfo_open() will use the + // MAGIC env var for the magic file + if (extension_loaded('fileinfo') && isset($_ENV['MAGIC']) && + ($finfo = finfo_open(FILEINFO_MIME, $_ENV['MAGIC'])) !== false) + { + if (($type = finfo_file($finfo, $file)) !== false) + { + // Remove the charset and grab the last content-type + $type = explode(' ', str_replace('; charset=', ';charset=', $type)); + $type = array_pop($type); + $type = explode(';', $type); + $type = trim(array_shift($type)); + } + finfo_close($finfo); + + // If anyone is still using mime_content_type() + } elseif (function_exists('mime_content_type')) + $type = trim(mime_content_type($file)); + + if ($type !== false && strlen($type) > 0) return $type; + + // Otherwise do it the old fashioned way + static $exts = array( + 'jpg' => 'image/jpeg', 'gif' => 'image/gif', 'png' => 'image/png', + 'tif' => 'image/tiff', 'tiff' => 'image/tiff', 'ico' => 'image/x-icon', + 'swf' => 'application/x-shockwave-flash', 'pdf' => 'application/pdf', + 'zip' => 'application/zip', 'gz' => 'application/x-gzip', + 'tar' => 'application/x-tar', 'bz' => 'application/x-bzip', + 'bz2' => 'application/x-bzip2', 'txt' => 'text/plain', + 'asc' => 'text/plain', 'htm' => 'text/html', 'html' => 'text/html', + 'css' => 'text/css', 'js' => 'text/javascript', + 'xml' => 'text/xml', 'xsl' => 'application/xsl+xml', + 'ogg' => 'application/ogg', 'mp3' => 'audio/mpeg', 'wav' => 'audio/x-wav', + 'avi' => 'video/x-msvideo', 'mpg' => 'video/mpeg', 'mpeg' => 'video/mpeg', + 'mov' => 'video/quicktime', 'flv' => 'video/x-flv', 'php' => 'text/x-php' + ); + $ext = strtolower(pathInfo($file, PATHINFO_EXTENSION)); + return isset($exts[$ext]) ? $exts[$ext] : 'application/octet-stream'; + } + + + /** + * Generate the auth string: "AWS AccessKey:Signature" + * + * @internal Used by UpdraftPlus_S3Request::getResponse() + * @param string $string String to sign + * @return string + */ + public static function __getSignature($string) + { + return 'AWS '.self::$__accessKey.':'.self::__getHash($string); + } + + + /** + * Creates a HMAC-SHA1 hash + * + * This uses the hash extension if loaded + * + * @internal Used by __getSignature() + * @param string $string String to sign + * @return string + */ + private static function __getHash($string) + { + return base64_encode(extension_loaded('hash') ? + hash_hmac('sha1', $string, self::$__secretKey, true) : pack('H*', sha1( + (str_pad(self::$__secretKey, 64, chr(0x00)) ^ (str_repeat(chr(0x5c), 64))) . + pack('H*', sha1((str_pad(self::$__secretKey, 64, chr(0x00)) ^ + (str_repeat(chr(0x36), 64))) . $string))))); + } + +} + +final class UpdraftPlus_S3Request +{ + private $endpoint, $verb, $bucket, $uri, $resource = '', $parameters = array(), + $amzHeaders = array(), $headers = array( + 'Host' => '', 'Date' => '', 'Content-MD5' => '', 'Content-Type' => '' + ); + public $fp = false, $size = 0, $data = false, $response; + + + /** + * Constructor + * + * @param string $verb Verb + * @param string $bucket Bucket name + * @param string $uri Object URI + * @return mixed + */ + function __construct($verb, $bucket = '', $uri = '', $endpoint = 's3.amazonaws.com', $use_dns_bucket_name = false) + { + $this->endpoint = $endpoint; + $this->verb = $verb; + $this->bucket = $bucket; + $this->uri = $uri !== '' ? '/'.str_replace('%2F', '/', rawurlencode($uri)) : '/'; + + //if ($this->bucket !== '') + // $this->resource = '/'.$this->bucket.$this->uri; + //else + // $this->resource = $this->uri; + + if ($this->bucket !== '') + { + if ($this->__dnsBucketName($this->bucket) || $use_dns_bucket_name) + { + $this->headers['Host'] = $this->bucket.'.'.$this->endpoint; + $this->resource = '/'.$this->bucket.$this->uri; + } + else + { + $this->headers['Host'] = $this->endpoint; + $this->uri = $this->uri; + if ($this->bucket !== '') $this->uri = '/'.$this->bucket.$this->uri; + $this->bucket = ''; + $this->resource = $this->uri; + } + } + else + { + $this->headers['Host'] = $this->endpoint; + $this->resource = $this->uri; + } + + + $this->headers['Date'] = gmdate('D, d M Y H:i:s T'); + $this->response = new STDClass; + $this->response->error = false; + $this->response->body = null; + } + + + /** + * Set request parameter + * + * @param string $key Key + * @param string $value Value + * @return void + */ + public function setParameter($key, $value) + { + $this->parameters[$key] = $value; + } + + + /** + * Set request header + * + * @param string $key Key + * @param string $value Value + * @return void + */ + public function setHeader($key, $value) + { + $this->headers[$key] = $value; + } + + + /** + * Set x-amz-meta-* header + * + * @param string $key Key + * @param string $value Value + * @return void + */ + public function setAmzHeader($key, $value) + { + $this->amzHeaders[$key] = $value; + } + + + /** + * Get the S3 response + * + * @return object | false + */ + public function getResponse() + { + $query = ''; + if (sizeof($this->parameters) > 0) + { + $query = substr($this->uri, -1) !== '?' ? '?' : '&'; + foreach ($this->parameters as $var => $value) + if ($value == null || $value == '') $query .= $var.'&'; + else $query .= $var.'='.rawurlencode($value).'&'; + $query = substr($query, 0, -1); + $this->uri .= $query; + + if (array_key_exists('acl', $this->parameters) || + array_key_exists('location', $this->parameters) || + array_key_exists('torrent', $this->parameters) || + array_key_exists('logging', $this->parameters) || + array_key_exists('partNumber', $this->parameters) || + array_key_exists('uploads', $this->parameters) || + array_key_exists('uploadId', $this->parameters)) + $this->resource .= $query; + } + $url = (UpdraftPlus_S3::$useSSL ? 'https://' : 'http://') . ($this->headers['Host'] !== '' ? $this->headers['Host'] : $this->endpoint) . $this->uri; + + //var_dump('bucket: ' . $this->bucket, 'uri: ' . $this->uri, 'resource: ' . $this->resource, 'url: ' . $url); + + $curl = curl_init(); + curl_setopt($curl, CURLOPT_USERAGENT, 'S3/php'); + + if (UpdraftPlus_S3::$useSSL) + { + // SSL Validation can now be optional for those with broken OpenSSL installations + curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, UpdraftPlus_S3::$useSSLValidation ? 2 : 0); + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, UpdraftPlus_S3::$useSSLValidation ? 1 : 0); + + if (UpdraftPlus_S3::$sslKey !== null) curl_setopt($curl, CURLOPT_SSLKEY, UpdraftPlus_S3::$sslKey); + if (UpdraftPlus_S3::$sslCert !== null) curl_setopt($curl, CURLOPT_SSLCERT, UpdraftPlus_S3::$sslCert); + if (UpdraftPlus_S3::$sslCACert !== null) curl_setopt($curl, CURLOPT_CAINFO, UpdraftPlus_S3::$sslCACert); + } + + curl_setopt($curl, CURLOPT_URL, $url); + + $wp_proxy = new WP_HTTP_Proxy(); + + if (UpdraftPlus_S3::$proxy != null && isset(UpdraftPlus_S3::$proxy['host']) && $wp_proxy->send_through_proxy($url)) + { + curl_setopt($curl, CURLOPT_PROXY, UpdraftPlus_S3::$proxy['host']); + curl_setopt($curl, CURLOPT_PROXYTYPE, UpdraftPlus_S3::$proxy['type']); + if (!empty(UpdraftPlus_S3::$proxy['port'])) curl_setopt($curl,CURLOPT_PROXYPORT, UpdraftPlus_S3::$proxy['port']); + if (isset(UpdraftPlus_S3::$proxy['user'], UpdraftPlus_S3::$proxy['pass']) && UpdraftPlus_S3::$proxy['user'] != null && UpdraftPlus_S3::$proxy['pass'] != null) { + curl_setopt($curl, CURLOPT_PROXYAUTH, CURLAUTH_ANY); + curl_setopt($curl, CURLOPT_PROXYUSERPWD, sprintf('%s:%s', UpdraftPlus_S3::$proxy['user'], UpdraftPlus_S3::$proxy['pass'])); + } + } + + // Headers + $headers = array(); $amz = array(); + foreach ($this->amzHeaders as $header => $value) + if (strlen($value) > 0) $headers[] = $header.': '.$value; + foreach ($this->headers as $header => $value) + if (strlen($value) > 0) $headers[] = $header.': '.$value; + + // Collect AMZ headers for signature + foreach ($this->amzHeaders as $header => $value) + if (strlen($value) > 0) $amz[] = strtolower($header).':'.$value; + + // AMZ headers must be sorted + if (sizeof($amz) > 0) + { + //sort($amz); + usort($amz, array(&$this, '__sortMetaHeadersCmp')); + $amz = "\n".implode("\n", $amz); + } else $amz = ''; + + if (UpdraftPlus_S3::hasAuth()) + { + // Authorization string (CloudFront stringToSign should only contain a date) + if ($this->headers['Host'] == 'cloudfront.amazonaws.com') + $headers[] = 'Authorization: ' . UpdraftPlus_S3::__getSignature($this->headers['Date']); + else + { + $headers[] = 'Authorization: ' . UpdraftPlus_S3::__getSignature( + $this->verb."\n". + $this->headers['Content-MD5']."\n". + $this->headers['Content-Type']."\n". + $this->headers['Date'].$amz."\n". + $this->resource + ); + } + } + + curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); + curl_setopt($curl, CURLOPT_HEADER, false); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, false); + curl_setopt($curl, CURLOPT_WRITEFUNCTION, array(&$this, '__responseWriteCallback')); + curl_setopt($curl, CURLOPT_HEADERFUNCTION, array(&$this, '__responseHeaderCallback')); + @curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); + + // Request types + switch ($this->verb) + { + case 'GET': break; + case 'PUT': case 'POST': + if ($this->fp !== false) + { + curl_setopt($curl, CURLOPT_PUT, true); + curl_setopt($curl, CURLOPT_INFILE, $this->fp); + if ($this->size >= 0) { + curl_setopt($curl, CURLOPT_INFILESIZE, $this->size); + } + } + elseif ($this->data !== false) + { + curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $this->verb); + curl_setopt($curl, CURLOPT_POSTFIELDS, $this->data); + curl_setopt($curl, CURLOPT_INFILESIZE, strlen($this->data)); + } + else { + curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $this->verb); + } + break; + case 'HEAD': + curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'HEAD'); + curl_setopt($curl, CURLOPT_NOBODY, true); + break; + case 'DELETE': + curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'DELETE'); + break; + default: break; + } + + // Execute, grab errors + if (curl_exec($curl)) + $this->response->code = curl_getinfo($curl, CURLINFO_HTTP_CODE); + else + $this->response->error = array( + 'code' => curl_errno($curl), + 'message' => curl_error($curl), + 'resource' => $this->resource + ); + + @curl_close($curl); + + // Parse body into XML + if ($this->response->error === false && isset($this->response->headers['type']) && + $this->response->headers['type'] == 'application/xml' && isset($this->response->body)) + { + $this->response->body = simplexml_load_string($this->response->body); + + // Grab S3 errors + if (!in_array($this->response->code, array(200, 204, 206)) && + isset($this->response->body->Code, $this->response->body->Message)) + { + $this->response->error = array( + 'code' => (string)$this->response->body->Code, + 'message' => (string)$this->response->body->Message + ); + if (isset($this->response->body->Resource)) + $this->response->error['resource'] = (string)$this->response->body->Resource; + unset($this->response->body); + } + } + + // Clean up file resources + if ($this->fp !== false && is_resource($this->fp)) fclose($this->fp); + + return $this->response; + } + + /** + * Sort compare for meta headers + * + * @internal Used to sort x-amz meta headers + * @param string $a String A + * @param string $b String B + * @return integer + */ + private function __sortMetaHeadersCmp($a, $b) + { + $lenA = strpos($a, ':'); + $lenB = strpos($b, ':'); + $minLen = min($lenA, $lenB); + $ncmp = strncmp($a, $b, $minLen); + if ($lenA == $lenB) return $ncmp; + if (0 == $ncmp) return $lenA < $lenB ? -1 : 1; + return $ncmp; + } + + /** + * CURL write callback + * + * @param resource $curl CURL resource + * @param string $data Data + * @return integer + */ + private function __responseWriteCallback($curl, $data) + { + if (in_array($this->response->code, array(200, 206)) && $this->fp !== false) + return fwrite($this->fp, $data); + else + $this->response->body = (empty($this->response->body)) ? $data : $this->response->body.$data; + return strlen($data); + } + + + /** + * Check DNS conformity + * + * @param string $bucket Bucket name + * @return boolean + */ + private function __dnsBucketName($bucket) + { + # A DNS bucket name cannot have len>63 + # A DNS bucket name must have a character in other than a-z, 0-9, . - + # The purpose of this second check is not clear - is it that there's some limitation somewhere on bucket names that match that pattern that means that the bucket must be accessed by hostname? + if (strlen($bucket) > 63 || !preg_match("/[^a-z0-9\.-]/", $bucket)) return false; + # A DNS bucket name cannot contain -. + if (strstr($bucket, '-.') !== false) return false; + # A DNS bucket name cannot contain .. + if (strstr($bucket, '..') !== false) return false; + # A DNS bucket name must begin with 0-9a-z + if (!preg_match("/^[0-9a-z]/", $bucket)) return false; + # A DNS bucket name must end with 0-9 a-z + if (!preg_match("/[0-9a-z]$/", $bucket)) return false; + return true; + } + + /** + * CURL header callback + * + * @param resource $curl CURL resource + * @param string $data Data + * @return integer + */ + private function __responseHeaderCallback($curl, $data) + { + if (($strlen = strlen($data)) <= 2) return $strlen; + if (substr($data, 0, 4) == 'HTTP') + $this->response->code = (int)substr($data, 9, 3); + else + { + $data = trim($data); + if (strpos($data, ': ') === false) return $strlen; + list($header, $value) = explode(': ', $data, 2); + if (strtolower($header) == 'last-modified') + $this->response->headers['time'] = strtotime($value); + elseif (strtolower($header) == 'content-length') + $this->response->headers['size'] = (int)$value; + elseif (strtolower($header) == 'content-type') + $this->response->headers['type'] = $value; + elseif (strtolower($header) == 'etag') + $this->response->headers['hash'] = $value{0} == '"' ? substr($value, 1, -1) : $value; + elseif (preg_match('/^x-amz-meta-.*$/i', $header)) + $this->response->headers[strtolower($header)] = $value; + } + return $strlen; + } + +} diff --git a/plugins/updraftplus/includes/S3compat.php b/plugins/updraftplus/includes/S3compat.php new file mode 100644 index 0000000..0a5a859 --- /dev/null +++ b/plugins/updraftplus/includes/S3compat.php @@ -0,0 +1,787 @@ + 'https', 'service' => 's3'); + + private $__accessKey = null; // AWS Access key + private $__secretKey = null; // AWS Secret key + private $__sslKey = null; + + public $endpoint = 's3.amazonaws.com'; + public $proxy = null; + private $region = 'us-east-1'; + + // Added to cope with a particular situation where the user had no pernmission to check the bucket location, which necessitated using DNS-based endpoints. + public $use_dns_bucket_name = false; + + public $useSSL = false; + public $useSSLValidation = true; + public $useExceptions = false; + + private $_serverSideEncryption = null; + + // SSL CURL SSL options - only needed if you are experiencing problems with your OpenSSL configuration + public $sslKey = null; + public $sslCert = null; + public $sslCACert = null; + + /** + * Constructor - if you're not using the class statically + * + * @param string $accessKey Access key + * @param string $secretKey Secret key + * @param boolean $useSSL Enable SSL + * @param string|boolean $sslCACert - certificate authority (true = bundled Guzzle version; false = no verify, 'system' = system version; otherwise, path) + * @return void + */ + public function __construct($accessKey = null, $secretKey = null, $useSSL = true, $sslCACert = true, $endpoint = null) + { + if ($accessKey !== null && $secretKey !== null) + $this->setAuth($accessKey, $secretKey); + + $this->useSSL = $useSSL; + $this->sslCACert = $sslCACert; + + $opts = array( + 'key' => $accessKey, + 'secret' => $secretKey, + 'scheme' => ($useSSL) ? 'https' : 'http', + // Using signature v4 requires a region +// 'signature' => 'v4', +// 'region' => $this->region +// 'endpoint' => 'somethingorother.s3.amazonaws.com' + ); + + if ($endpoint) { + // Can't specify signature v4, as that requires stating the region - which we don't necessarily yet know. + $this->endpoint = $endpoint; + $opts['endpoint'] = $endpoint; + } else { + // Using signature v4 requires a region. Also, some regions (EU Central 1, China) require signature v4 - and all support it, so we may as well use it if we can. + $opts['signature'] = 'v4'; + $opts['region'] = $this->region; + } + + if ($useSSL) $opts['ssl.certificate_authority'] = $sslCACert; + + $this->client = Aws\S3\S3Client::factory($opts); + } + + /** + * Set AWS access key and secret key + * + * @param string $accessKey Access key + * @param string $secretKey Secret key + * @return void + */ + public function setAuth($accessKey, $secretKey) + { + $this->__accessKey = $accessKey; + $this->__secretKey = $secretKey; + } + + // Example value: 'AES256'. See: https://docs.aws.amazon.com/AmazonS3/latest/dev/SSEUsingPHPSDK.html + // Or, false to turn off. + public function setServerSideEncryption($value) + { + $this->_serverSideEncryption = $value; + } + + /** + * Set the service region + * + * @param string $region Region + * @return void + */ + public function setRegion($region) + { + $this->region = $region; + if ('eu-central-1' == $region || 'cn-north-1' == $region) { +// $this->config['signature'] = new Aws\S3\S3SignatureV4('s3'); +// $this->client->setConfig($this->config); + } + $this->client->setRegion($region); + } + + /** + * Set the service endpoint + * + * @param string $host Hostname + * @return void + */ + public function setEndpoint($host, $region) + { + $this->endpoint = $host; + $this->region = $region; + $this->config['endpoint_provider'] = $this->return_provider(); + $this->client->setConfig($this->config); + } + + public function return_provider() { + $our_endpoints = array( + 'endpoint' => $this->endpoint + ); + if ($this->region == 'eu-central-1' || $this->region == 'cn-north-1') $our_endpoints['signatureVersion'] = 'v4'; + $endpoints = array( + 'version' => 2, + 'endpoints' => array( + "*/s3" => $our_endpoints + ) + ); + return new Aws\Common\RulesEndpointProvider($endpoints); + } + + /** + * Set SSL on or off + * + * @param boolean $enabled SSL enabled + * @param boolean $validate SSL certificate validation + * @return void + */ + // This code relies upon the particular pattern of SSL options-setting in s3.php in UpdraftPlus + public function setSSL($enabled, $validate = true) + { + $this->useSSL = $enabled; + $this->useSSLValidation = $validate; + // http://guzzle.readthedocs.org/en/latest/clients.html#verify + if ($enabled) { + + // Do nothing - in UpdraftPlus, setSSLAuth will be called later, and we do the calls there + +// $verify_peer = ($validate) ? true : false; +// $verify_host = ($validate) ? 2 : 0; +// +// $this->config['scheme'] = 'https'; +// $this->client->setConfig($this->config); +// +// $this->client->setSslVerification($validate, $verify_peer, $verify_host); + + + } else { + $this->config['scheme'] = 'http'; +// $this->client->setConfig($this->config); + } + $this->client->setConfig($this->config); + } + + public function getuseSSL() + { + return $this->useSSL; + } + + /** + * Set SSL client certificates (experimental) + * + * @param string $sslCert SSL client certificate + * @param string $sslKey SSL client key + * @param string $sslCACert SSL CA cert (only required if you are having problems with your system CA cert) + * @return void + */ + public function setSSLAuth($sslCert = null, $sslKey = null, $sslCACert = null) + { + if (!$this->useSSL) return; + + if (!$this->useSSLValidation) { + $this->client->setSslVerification(false); + } else { + if (!$sslCACert) { + $client = $this->client; + $this->config[$client::SSL_CERT_AUTHORITY] = false; + $this->client->setConfig($this->config); + } else { + $this->client->setSslVerification(realpath($sslCACert), true, 2); + } + } + +// $this->client->setSslVerification($sslCACert, $verify_peer, $verify_host); +// $this->config['ssl.certificate_authority'] = $sslCACert; +// $this->client->setConfig($this->config); + } + + /** + * Set proxy information + * + * @param string $host Proxy hostname and port (localhost:1234) + * @param string $user Proxy username + * @param string $pass Proxy password + * @param constant $type CURL proxy type + * @return void + */ + public function setProxy($host, $user = null, $pass = null, $type = CURLPROXY_SOCKS5, $port = null) + { + + $this->proxy = array('host' => $host, 'type' => $type, 'user' => $user, 'pass' => $pass, 'port' => $port); + + if (!$host) return; + + $wp_proxy = new WP_HTTP_Proxy(); + if ($wp_proxy->send_through_proxy('https://s3.amazonaws.com')) + { + + global $updraftplus; + $updraftplus->log("setProxy: host=$host, user=$user, port=$port"); + + // N.B. Currently (02-Feb-15), only support for HTTP proxies has ever been requested for S3 in UpdraftPlus + $proxy_url = 'http://'; + if ($user) { + $proxy_url .= $user; + if ($pass) $proxy_url .= ":$pass"; + $proxy_url .= "@"; + } + + $proxy_url .= $host; + + if ($port) $proxy_url .= ":$port"; + + $this->client->setDefaultOption('proxy', $proxy_url); + } + + } + + /** + * Set the error mode to exceptions + * + * @param boolean $enabled Enable exceptions + * @return void + */ + public function setExceptions($enabled = true) + { + $this->useExceptions = $enabled; + } + + // A no-op in this compatibility layer (for now - not yet found a use)... + public function useDNSBucketName($use = true, $bucket = '') + { + $this->use_dns_bucket_name = $use; + if ($use && $bucket) { + $this->setEndpoint($bucket.'.s3.amazonaws.com', $this->region); + } + return true; + } + + /* + * Get contents for a bucket + * + * If maxKeys is null this method will loop through truncated result sets + * + * @param string $bucket Bucket name + * @param string $prefix Prefix + * @param string $marker Marker (last file listed) + * @param string $maxKeys Max keys (maximum number of keys to return) + * @param string $delimiter Delimiter + * @param boolean $returnCommonPrefixes Set to true to return CommonPrefixes + * @return array | false + */ + // N.B. UpdraftPlus does not use the $delimiter or $returnCommonPrefixes parameters (nor set $prefix or $marker to anything other than null) + // $returnCommonPrefixes is not implemented below + public function getBucket($bucket, $prefix = null, $marker = null, $maxKeys = null, $delimiter = null, $returnCommonPrefixes = false) + { + try { + if ($maxKeys == 0) $maxKeys = null; + + $vars = array('Bucket' => $bucket); + if ($prefix !== null && $prefix !== '') $vars['Prefix'] = $prefix; + if ($marker !== null && $marker !== '') $vars['Marker'] = $marker; + if ($maxKeys !== null && $maxKeys !== '') $vars['MaxKeys'] = $maxKeys; + if ($delimiter !== null && $delimiter !== '') $vars['Delimiter'] = $delimiter; + $result = $this->client->listObjects($vars); + + if (!is_a($result, 'Guzzle\Service\Resource\Model')) { + return false; + } + + $results = array(); + $nextMarker = null; + // http://docs.aws.amazon.com/AmazonS3/latest/dev/ListingObjectKeysUsingPHP.html + // UpdraftPlus does not use the 'hash' result + if (empty($result['Contents'])) $result['Contents'] = array(); + foreach ($result['Contents'] as $c) + { + $results[(string)$c['Key']] = array( + 'name' => (string)$c['Key'], + 'time' => strtotime((string)$c['LastModified']), + 'size' => (int)$c['Size'], +// 'hash' => trim((string)$c['ETag']) +// 'hash' => substr((string)$c['ETag'], 1, -1) + ); + $nextMarker = (string)$c['Key']; + } + + if (isset($result['IsTruncated']) && empty($result['IsTruncated'])) return $results; + + if (isset($result['NextMarker'])) $nextMarker = (string)$result['NextMarker']; + + // Loop through truncated results if maxKeys isn't specified + if ($maxKeys == null && $nextMarker !== null && !empty($result['IsTruncated'])) + do + { + $vars['Marker'] = $nextMarker; + $result = $this->client->listObjects($vars); + + if (!is_a($result, 'Guzzle\Service\Resource\Model') || empty($result['Contents'])) break; + + foreach ($result['Contents'] as $c) + { + $results[(string)$c['Key']] = array( + 'name' => (string)$c['Key'], + 'time' => strtotime((string)$c['LastModified']), + 'size' => (int)$c['Size'], +// 'hash' => trim((string)$c['ETag']) +// 'hash' => substr((string)$c['ETag'], 1, -1) + ); + $nextMarker = (string)$c['Key']; + } + +// if ($returnCommonPrefixes && isset($response->body, $response->body->CommonPrefixes)) +// foreach ($response->body->CommonPrefixes as $c) +// $results[(string)$c->Prefix] = array('prefix' => (string)$c->Prefix); + + if (isset($response['NextMarker'])) + $nextMarker = (string)$response['NextMarker']; + + } while (is_a($result, 'Guzzle\Service\Resource\Model') && !empty($result['Contents']) && !empty($result['IsTruncated'])); + + return $results; + + } catch (Exception $e) { + if ($this->useExceptions) { + throw $e; + } else { + return $this->trigger_from_exception($e); + } + } + } + + // This is crude - nothing is returned + public function waitForBucket($bucket) { + try { + $this->client->waitUntil('BucketExists', array('Bucket' => $bucket)); + } catch (Exception $e) { + if ($this->useExceptions) { + throw $e; + } else { + return $this->trigger_from_exception($e); + } + } + } + + /** + * Put a bucket + * + * @param string $bucket Bucket name + * @param constant $acl ACL flag + * @param string $location Set as "EU" to create buckets hosted in Europe + * @return boolean + */ + public function putBucket($bucket, $acl = self::ACL_PRIVATE, $location = false) + { + if (!$location) { + $location = $this->region; + } else { + $this->setRegion($location); + } + $bucket_vars = array( + 'Bucket' => $bucket, + 'ACL' => $acl, + ); + // http://docs.aws.amazon.com/aws-sdk-php/latest/class-Aws.S3.S3Client.html#_createBucket + $location_constraint = apply_filters('updraftplus_s3_putbucket_defaultlocation', $location); + if ('us-east-1' != $location_constraint) $bucket_vars['LocationConstraint'] = $location_constraint; + try { + $result = $this->client->createBucket($bucket_vars); + if (is_object($result) && method_exists($result, 'get') && '' != $result->get('RequestId')) { + $this->client->waitUntil('BucketExists', array('Bucket' => $bucket)); + return true; + } + } catch (Exception $e) { + if ($this->useExceptions) { + throw $e; + } else { + return $this->trigger_from_exception($e); + } + } + } + + /** + * Initiate a multi-part upload (http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadInitiate.html) + * + * @param string $bucket Bucket name + * @param string $uri Object URI + * @param constant $acl ACL constant + * @param array $metaHeaders Array of x-amz-meta-* headers + * @param array $requestHeaders Array of request headers or content type as a string + * @param constant $storageClass Storage class constant + * @return string | false + */ + public function initiateMultipartUpload ($bucket, $uri, $acl = self::ACL_PRIVATE, $metaHeaders = array(), $requestHeaders = array(), $storageClass = self::STORAGE_CLASS_STANDARD) + { + $vars = array( + 'ACL' => $acl, + 'Bucket' => $bucket, + 'Key' => $uri, + 'Metadata' => $metaHeaders, + 'StorageClass' => $storageClass + ); + + $vars['ContentType'] = ('.gz' == strtolower(substr($uri, -3, 3))) ? 'application/octet-stream' : 'application/zip'; + + if (!empty($this->_serverSideEncryption)) $vars['ServerSideEncryption'] = $this->_serverSideEncryption; + + try { + $result = $this->client->createMultipartUpload($vars); + if (is_object($result) && method_exists($result, 'get') && '' != $result->get('UploadId')) return $result->get('UploadId'); + } catch (Exception $e) { + if ($this->useExceptions) { + throw $e; + } else { + return $this->trigger_from_exception($e); + } + } + return false; + } + + /** + /* Upload a part of a multi-part set (http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadUploadPart.html) + * The chunk is read into memory, so make sure that you have enough (or patch this function to work another way!) + * + * @param string $bucket Bucket name + * @param string $uri Object URI + * @param string $uploadId uploadId returned previously from initiateMultipartUpload + * @param integer $partNumber sequential part number to upload + * @param string $filePath file to upload content from + * @param integer $partSize number of bytes in each part (though final part may have fewer) - pass the same value each time (for this particular upload) - default 5Mb (which is Amazon's minimum) + * @return string (ETag) | false + */ + public function uploadPart ($bucket, $uri, $uploadId, $filePath, $partNumber, $partSize = 5242880) + { + $vars = array( + 'Bucket' => $bucket, + 'Key' => $uri, + 'PartNumber' => $partNumber, + 'UploadId' => $uploadId + ); + + // Where to begin + $fileOffset = ($partNumber - 1 ) * $partSize; + + // Download the smallest of the remaining bytes and the part size + $fileBytes = min(filesize($filePath) - $fileOffset, $partSize); + if ($fileBytes < 0) $fileBytes = 0; + +// $rest->setHeader('Content-Type', 'application/octet-stream'); + $data = ""; + + if ($handle = fopen($filePath, "rb")) { + if ($fileOffset >0) fseek($handle, $fileOffset); + $bytes_read = 0; + while ($fileBytes>0 && $read = fread($handle, max($fileBytes, 131072))) { + $fileBytes = $fileBytes - strlen($read); + $bytes_read += strlen($read); + $data .= $read; + } + fclose($handle); + } else { + return false; + } + + $vars['Body'] = $data; + + try { + $result = $this->client->uploadPart($vars); + if (is_object($result) && method_exists($result, 'get') && '' != $result->get('ETag')) return $result->get('ETag'); + } catch (Exception $e) { + if ($this->useExceptions) { + throw $e; + } else { + return $this->trigger_from_exception($e); + } + } + return false; + + } + + /** + * Complete a multi-part upload (http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadComplete.html) + * + * @param string $bucket Bucket name + * @param string $uri Object URI + * @param string $uploadId uploadId returned previously from initiateMultipartUpload + * @param array $parts an ordered list of eTags of previously uploaded parts from uploadPart + * @return boolean + */ + public function completeMultipartUpload ($bucket, $uri, $uploadId, $parts) + { + $vars = array( + 'Bucket' => $bucket, + 'Key' => $uri, + 'UploadId' => $uploadId + ); + + $partno = 1; + $send_parts = array(); + foreach ($parts as $etag) { + $send_parts[] = array('ETag' => $etag, 'PartNumber' => $partno); + $partno++; + } + + $vars['Parts'] = $send_parts; + + try { + $result = $this->client->completeMultipartUpload($vars); + if (is_object($result) && method_exists($result, 'get') && '' != $result->get('ETag')) return true; + } catch (Exception $e) { + if ($this->useExceptions) { + throw $e; + } else { + return $this->trigger_from_exception($e); + } + } + return false; + } + + /** + * Put an object from a file (legacy function) + * + * @param string $file Input file path + * @param string $bucket Bucket name + * @param string $uri Object URI + * @param constant $acl ACL constant + * @param array $metaHeaders Array of x-amz-meta-* headers + * @param string $contentType Content type + * @return boolean + */ + public function putObjectFile($file, $bucket, $uri, $acl = self::ACL_PRIVATE, $metaHeaders = array(), $contentType = null, $storageClass = self::STORAGE_CLASS_STANDARD) + { + try { + $options = array( + 'Bucket' => $bucket, + 'Key' => $uri, + 'SourceFile' => $file, + 'StorageClass' => $storageClass, + 'ACL' => $acl + ); + if ($contentType) $options['ContentType'] = $contentType; + if (!empty($this->_serverSideEncryption)) $options['ServerSideEncryption'] = $this->_serverSideEncryption; + if (!empty($metaHeaders)) $options['Metadata'] = $metaHeaders; + $result = $this->client->putObject($options); + if (is_object($result) && method_exists($result, 'get') && '' != $result->get('RequestId')) return true; + } catch (Exception $e) { + if ($this->useExceptions) { + throw $e; + } else { + return $this->trigger_from_exception($e); + } + } + fclose($fh); + } + + + /** + * Put an object from a string (legacy function) + * + * @param string $string Input data + * @param string $bucket Bucket name + * @param string $uri Object URI + * @param constant $acl ACL constant + * @param array $metaHeaders Array of x-amz-meta-* headers + * @param string $contentType Content type + * @return boolean + */ + // Only the first 3 parameters vary in UpdraftPlus + public function putObjectString($string, $bucket, $uri, $acl = self::ACL_PRIVATE, $metaHeaders = array(), $contentType = 'text/plain') + { + try { + $result = $this->client->putObject(array( + 'Bucket' => $bucket, + 'Key' => $uri, + 'Body' => $string, + 'ContentType' => $contentType + )); + if (is_object($result) && method_exists($result, 'get') && '' != $result->get('RequestId')) return true; + } catch (Exception $e) { + if ($this->useExceptions) { + throw $e; + } else { + return $this->trigger_from_exception($e); + } + } + return false; + } + + + /** + * Get an object + * + * @param string $bucket Bucket name + * @param string $uri Object URI + * @param mixed $saveTo Filename or resource to write to + * @param mixed $resume - if $saveTo is a resource, then this is either false or the value for a Range: header; otherwise, a boolean, indicating whether to resume if possible. + * @return mixed + */ + public function getObject($bucket, $uri, $saveTo = false, $resume = false) + { + try { + // SaveAs: "Specify where the contents of the object should be downloaded. Can be the path to a file, a resource returned by fopen, or a Guzzle\Http\EntityBodyInterface object." - http://docs.aws.amazon.com/aws-sdk-php/latest/class-Aws.S3.S3Client.html#_getObject + + $range_header = false; + if (is_resource($saveTo)) { + $fp = $saveTo; + if (!is_bool($resume)) $range_header = $resume; + } elseif (file_exists($saveTo)) { + if ($resume && ($fp = @fopen($saveTo, 'ab')) !== false) { + $range_header = "bytes=".filesize($saveTo).'-'; + } else { + throw new Exception('Unable to open save file for writing: '.$saveTo); + } + } else { + if (($fp = @fopen($saveTo, 'wb')) !== false) { + $range_header = false; + } else { + throw new Exception('Unable to open save file for writing: '.$saveTo); + } + } + + $vars = array( + 'Bucket' => $bucket, + 'Key' => $uri, + 'SaveAs' => $fp + ); + if (!empty($range_header)) $vars['Range'] = $range_header; + + $result = $this->client->getObject($vars); + + if (is_object($result) && method_exists($result, 'get') && '' != $result->get('RequestId')) return true; + } catch (Exception $e) { + if ($this->useExceptions) { + throw $e; + } else { + return $this->trigger_from_exception($e); + } + } + return false; + } + + + /** + * Get a bucket's location + * + * @param string $bucket Bucket name + * @return string | false + */ + public function getBucketLocation($bucket) + { + try { + $result = $this->client->getBucketLocation(array('Bucket' => $bucket)); + $location = $result->get('Location'); + if ($location) return $location; + } catch (Aws\S3\Exception\NoSuchBucketException $e) { + return false; + } catch (Exception $e) { + if ($this->useExceptions) { + throw $e; + } else { + return $this->trigger_from_exception($e); + } + } + } + + private function trigger_from_exception($e) { + trigger_error($e->getMessage().' ('.get_class($e).') (line: '.$e->getLine().', file: '.$e->getFile().')', E_USER_WARNING); + return false; + } + + /** + * Delete an object + * + * @param string $bucket Bucket name + * @param string $uri Object URI + * @return boolean + */ + public function deleteObject($bucket, $uri) + { + try { + $result = $this->client->deleteObject(array( + 'Bucket' => $bucket, + 'Key' => $uri + )); + if (is_object($result) && method_exists($result, 'get') && '' != $result->get('RequestId')) return true; + } catch (Exception $e) { + if ($this->useExceptions) { + throw $e; + } else { + return $this->trigger_from_exception($e); + } + } + return false; + } + + public function setCORS($policy) + { + try { + $cors = $this->client->putBucketCors($policy); + if (is_object($cors) && method_exists($cors, 'get') && '' != $cors->get('RequestId')) return true; + } catch (Exception $e) { + if ($this->useExceptions) { + throw $e; + } else { + return $this->trigger_from_exception($e); + } + } + return false; + + } + +} + diff --git a/plugins/updraftplus/includes/cacert.pem b/plugins/updraftplus/includes/cacert.pem new file mode 100644 index 0000000..a4d152c --- /dev/null +++ b/plugins/updraftplus/includes/cacert.pem @@ -0,0 +1,4129 @@ +## +## ca-bundle.crt -- Bundle of CA Root Certificates +## +## Certificate data from Mozilla as of: Tue Jul 15 08:33:20 2014 +## +## This is a bundle of X.509 certificates of public Certificate Authorities +## (CA). These were automatically extracted from Mozilla's root certificates +## file (certdata.txt). This file can be found in the mozilla source tree: +## http://mxr.mozilla.org/mozilla-release/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1 +## +## It contains the certificates in PEM format and therefore +## can be directly used with curl / libcurl / php_curl, or with +## an Apache+mod_ssl webserver for SSL client authentication. +## Just configure this file as the SSLCACertificateFile. +## + + +GTE CyberTrust Global Root +========================== +-----BEGIN CERTIFICATE----- +MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg +Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG +A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz +MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL +Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0 +IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u +sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql +HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID +AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW +M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF +NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ +-----END CERTIFICATE----- + +Thawte Server CA +================ +-----BEGIN CERTIFICATE----- +MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT +DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs +dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE +AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j +b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV +BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u +c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG +A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0 +ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl +/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7 +1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR +MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J +GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ +GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc= +-----END CERTIFICATE----- + +Thawte Premium Server CA +======================== +-----BEGIN CERTIFICATE----- +MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT +DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs +dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE +AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl +ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT +AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU +VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2 +aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ +cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2 +aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh +Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/ +qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm +SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf +8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t +UCemDaYj+bvLpgcUQg== +-----END CERTIFICATE----- + +Equifax Secure CA +================= +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE +ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 +MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT +B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB +nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR +fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW +8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG +A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE +CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG +A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS +spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB +Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961 +zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB +BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95 +70+sB3c4 +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority +======================================================= +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow +XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz +IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94 +f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol +hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtMEivPLCYA +TxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59Ah +WM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2Omuf +Tqj/ZA1k +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority - G2 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO +FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71 +lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB +MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT +1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD +Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9 +-----END CERTIFICATE----- + +GlobalSign Root CA +================== +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx +GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds +b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV +BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD +VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa +DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc +THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb +Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP +c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX +gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF +AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj +Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG +j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH +hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC +X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== +-----END CERTIFICATE----- + +GlobalSign Root CA - R2 +======================= +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6 +ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp +s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN +S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL +TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C +ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E +FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i +YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN +BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp +9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu +01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7 +9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 +TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== +-----END CERTIFICATE----- + +RSA Root Certificate 1 +====================== +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp +b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh +bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw +MjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0 +d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMg +UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0 +LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td +3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89H +BFx1cQqYJJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs +3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0WuPIqpsHEzXcjF +V9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/APhmcGcwTTYJBtYze4D1gCCAPRX5r +on+jjBXu +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy +dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1 +EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc +cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw +EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj +055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f +j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC +/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0 +xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa +t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== +-----END CERTIFICATE----- + +Verisign Class 4 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy +dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaS +tBO3IFsJ+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM +8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdLMEYH5IBtptiW +Lugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XYufTsgsbSPZUd5cBPhMnZo0QoBmrX +Razwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +j/ola09b5KROJ1WrIhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt +mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm +fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c2NU8Qh0XwRJd +RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG +UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg== +-----END CERTIFICATE----- + +Entrust.net Premium 2048 Secure Server CA +========================================= +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u +ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp +bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV +BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx +NzUwNTFaFw0yOTA3MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3 +d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl +MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u +ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL +Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr +hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW +nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi +VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo0IwQDAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJ +KoZIhvcNAQEFBQADggEBADubj1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPy +T/4xmf3IDExoU8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf +zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5bu/8j72gZyxKT +J1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+bYQLCIt+jerXmCHG8+c8eS9e +nNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/ErfF6adulZkMV8gzURZVE= +-----END CERTIFICATE----- + +Baltimore CyberTrust Root +========================= +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE +ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li +ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC +SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs +dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME +uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB +UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C +G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9 +XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr +l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI +VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB +BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh +cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5 +hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa +Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H +RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp +-----END CERTIFICATE----- + +Equifax Secure Global eBusiness CA +================================== +-----BEGIN CERTIFICATE----- +MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp +bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx +HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds +b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV +PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN +qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn +hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j +BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs +MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN +I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY +NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV +-----END CERTIFICATE----- + +Equifax Secure eBusiness CA 1 +============================= +-----BEGIN CERTIFICATE----- +MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB +LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE +ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz +IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ +1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a +IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk +MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW +Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF +AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5 +lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+ +KpYrtWKmpj29f5JZzVoqgrI3eQ== +-----END CERTIFICATE----- + +AddTrust Low-Value Services Root +================================ +-----BEGIN CERTIFICATE----- +MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU +cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw +CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO +ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6 +54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr +oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1 +Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui +GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w +HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD +AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT +RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw +HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt +ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph +iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY +eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr +mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj +ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk= +-----END CERTIFICATE----- + +AddTrust External Root +====================== +-----BEGIN CERTIFICATE----- +MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD +VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw +NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU +cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg +Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821 ++iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw +Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo +aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy +2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7 +7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P +BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL +VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk +VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB +IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl +j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 +6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355 +e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u +G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= +-----END CERTIFICATE----- + +AddTrust Public Services Root +============================= +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU +cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ +BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l +dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu +nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i +d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG +Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw +HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G +A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux +FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G +A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4 +JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL ++YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao +GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9 +Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H +EufOX1362KqxMy3ZdvJOOjMMK7MtkAY= +-----END CERTIFICATE----- + +AddTrust Qualified Certificates Root +==================================== +-----BEGIN CERTIFICATE----- +MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU +cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx +CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ +IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx +64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3 +KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o +L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR +wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU +MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE +BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y +azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD +ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG +GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X +dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze +RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB +iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE= +-----END CERTIFICATE----- + +Entrust Root Certification Authority +==================================== +-----BEGIN CERTIFICATE----- +MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV +BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw +b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG +A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0 +MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu +MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu +Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v +dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz +A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww +Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68 +j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN +rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1 +MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH +hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA +A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM +Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa +v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS +W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0 +tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8 +-----END CERTIFICATE----- + +RSA Security 2048 v3 +==================== +-----BEGIN CERTIFICATE----- +MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK +ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy +MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb +BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7 +Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb +WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH +KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP ++Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/ +MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E +FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY +v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj +0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj +VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395 +nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA +pKnXwiJPZ9d37CAFYd4= +-----END CERTIFICATE----- + +GeoTrust Global CA +================== +-----BEGIN CERTIFICATE----- +MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK +Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw +MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j +LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo +BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet +8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc +T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU +vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk +DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q +zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4 +d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2 +mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p +XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm +Mw== +-----END CERTIFICATE----- + +GeoTrust Global CA 2 +==================== +-----BEGIN CERTIFICATE----- +MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw +MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j +LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/ +NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k +LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA +Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b +HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH +K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7 +srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh +ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL +OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC +x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF +H4z1Ir+rzoPz4iIprn2DQKi6bA== +-----END CERTIFICATE----- + +GeoTrust Universal CA +===================== +-----BEGIN CERTIFICATE----- +MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1 +MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu +Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t +JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e +RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs +7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d +8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V +qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga +Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB +Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu +KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08 +ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0 +XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB +hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc +aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2 +qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL +oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK +xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF +KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2 +DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK +xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU +p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI +P/rmMuGNG2+k5o7Y+SlIis5z/iw= +-----END CERTIFICATE----- + +GeoTrust Universal CA 2 +======================= +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0 +MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg +SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0 +DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17 +j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q +JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a +QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2 +WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP +20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn +ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC +SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG +8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2 ++/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E +BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z +dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ +4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+ +mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq +A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg +Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP +pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d +FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp +gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm +X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS +-----END CERTIFICATE----- + +Visa eCommerce Root +=================== +-----BEGIN CERTIFICATE----- +MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG +EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug +QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2 +WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm +VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv +bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL +F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b +RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0 +TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI +/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs +GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG +MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc +CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW +YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz +zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu +YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt +398znM/jra6O1I7mT1GvFpLgXPYHDw== +-----END CERTIFICATE----- + +Certum Root CA +============== +-----BEGIN CERTIFICATE----- +MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK +ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla +Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u +by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x +wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL +kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ +89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K +Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P +NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq +hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+ +GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg +GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/ +0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS +qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw== +-----END CERTIFICATE----- + +Comodo AAA Services root +======================== +-----BEGIN CERTIFICATE----- +MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw +MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl +c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV +BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG +C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs +i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW +Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH +Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK +Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f +BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl +cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz +LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm +7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz +Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z +8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C +12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== +-----END CERTIFICATE----- + +Comodo Secure Services root +=========================== +-----BEGIN CERTIFICATE----- +MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw +MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu +Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi +BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP +9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc +rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC +oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V +p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E +FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w +gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj +YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm +aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm +4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj +Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL +DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw +pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H +RR3B7Hzs/Sk= +-----END CERTIFICATE----- + +Comodo Trusted Services root +============================ +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw +MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h +bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw +IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7 +3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y +/9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6 +juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS +ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud +DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp +ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl +cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw +uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32 +pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA +BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l +R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O +9y5Xt5hwXsjEeLBi +-----END CERTIFICATE----- + +QuoVadis Root CA +================ +-----BEGIN CERTIFICATE----- +MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE +ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 +eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz +MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp +cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD +EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk +J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL +F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL +YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen +AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w +PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y +ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7 +MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj +YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs +ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh +Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW +Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu +BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw +FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6 +tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo +fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul +LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x +gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi +5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi +5nrQNiOKSnQ2+Q== +-----END CERTIFICATE----- + +QuoVadis Root CA 2 +================== +-----BEGIN CERTIFICATE----- +MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT +EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx +ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6 +XJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk +lvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB +lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy +lZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt +66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn +wQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh +D7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy +BNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie +J0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud +DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU +a6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT +ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv +Z+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3 +UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm +VjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK ++JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW +IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1 +WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X +f6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II +4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8 +VCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u +-----END CERTIFICATE----- + +QuoVadis Root CA 3 +================== +-----BEGIN CERTIFICATE----- +MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT +EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx +OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg +DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij +KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K +DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv +BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp +p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8 +nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX +MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM +Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz +uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT +BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj +YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 +aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB +BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD +VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4 +ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE +AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV +qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s +hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z +POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2 +Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp +8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC +bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu +g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p +vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr +qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto= +-----END CERTIFICATE----- + +Security Communication Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw +8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM +DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX +5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd +DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2 +JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g +0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a +mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ +s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ +6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi +FL39vmwLAw== +-----END CERTIFICATE----- + +Sonera Class 2 Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG +U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw +NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh +IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3 +/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT +dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG +f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P +tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH +nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT +XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt +0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI +cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph +Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx +EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH +llpwrN9M +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA +============================= +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE +ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g +Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w +HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh +bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt +vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P +jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca +C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth +vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6 +22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV +HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v +dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN +BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR +EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw +MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y +nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR +iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw== +-----END CERTIFICATE----- + +UTN DATACorp SGC Root CA +======================== +-----BEGIN CERTIFICATE----- +MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZ +BgNVBAMTElVUTiAtIERBVEFDb3JwIFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBa +MIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w +HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRy +dXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ys +raP6LnD43m77VkIVni5c7yPeIbkFdicZD0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlo +wHDyUwDAXlCCpVZvNvlK4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA +9P4yPykqlXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulWbfXv +33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQABo4GrMIGoMAsGA1Ud +DwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRTMtGzz3/64PGgXYVOktKeRR20TzA9 +BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dD +LmNybDAqBgNVHSUEIzAhBggrBgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3 +DQEBBQUAA4IBAQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft +Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyjj98C5OBxOvG0 +I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVHKWss5nbZqSl9Mt3JNjy9rjXx +EZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwP +DPafepE39peC4N1xaf92P2BNPM/3mfnGV/TJVTl4uix5yaaIK/QI +-----END CERTIFICATE----- + +UTN USERFirst Hardware Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd +BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx +OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0 +eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz +ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI +wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd +tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8 +i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf +Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw +gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF +lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF +UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF +BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM +//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW +XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2 +lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn +iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67 +nfhmqA== +-----END CERTIFICATE----- + +Camerfirma Chambers of Commerce Root +==================================== +-----BEGIN CERTIFICATE----- +MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe +QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i +ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx +NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp +cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn +MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC +AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU +xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH +NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW +DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV +d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud +EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v +cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P +AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh +bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD +VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz +aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi +fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD +L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN +UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n +ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1 +erfutGWaIZDgqtCYvDi1czyL+Nw= +-----END CERTIFICATE----- + +Camerfirma Global Chambersign Root +================================== +-----BEGIN CERTIFICATE----- +MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe +QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i +ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx +NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt +YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg +MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw +ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J +1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O +by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl +6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c +8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/ +BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j +aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B +Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj +aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y +ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh +bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA +PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y +gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ +PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4 +IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes +t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A== +-----END CERTIFICATE----- + +NetLock Notary (Class A) Root +============================= +-----BEGIN CERTIFICATE----- +MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI +EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6 +dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j +ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX +DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH +EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD +VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz +cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM +D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ +z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC +/tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7 +tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6 +4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG +A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC +Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv +bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu +IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn +LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0 +ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz +IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh +IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu +b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh +bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg +Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp +bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5 +ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP +ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB +CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr +KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM +8CgHrTwXZoi1/baI +-----END CERTIFICATE----- + +XRamp Global CA Root +==================== +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE +BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj +dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx +HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg +U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu +IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx +foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE +zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs +AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry +xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap +oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC +AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc +/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt +qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n +nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz +8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw= +-----END CERTIFICATE----- + +Go Daddy Class 2 CA +=================== +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY +VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG +A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g +RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD +ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv +2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32 +qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j +YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY +vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O +BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o +atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu +MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG +A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim +PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt +I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI +Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b +vZ8= +-----END CERTIFICATE----- + +Starfield Class 2 CA +==================== +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc +U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo +MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG +A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG +SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY +bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ +JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm +epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN +F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF +MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f +hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo +bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g +QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs +afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM +PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl +xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD +KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3 +QBFGmh95DmK/D5fs4C8fF5Q= +-----END CERTIFICATE----- + +StartCom Certification Authority +================================ +-----BEGIN CERTIFICATE----- +MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN +U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu +ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0 +NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk +LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg +U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y +o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/ +Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d +eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt +2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z +6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ +osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/ +untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc +UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT +37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE +FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0 +Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj +YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH +AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw +Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg +U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5 +LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl +cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh +cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT +dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC +AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh +3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm +vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk +fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3 +fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ +EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq +yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl +1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/ +lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro +g14= +-----END CERTIFICATE----- + +Taiwan GRCA +=========== +-----BEGIN CERTIFICATE----- +MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG +EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X +DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv +dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN +w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5 +BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O +1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO +htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov +J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7 +Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t +B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB +O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8 +lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV +HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2 +09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ +TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj +Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2 +Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU +D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz +DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk +Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk +7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ +CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy ++fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS +-----END CERTIFICATE----- + +Swisscom Root CA 1 +================== +-----BEGIN CERTIFICATE----- +MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQG +EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy +dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4 +MTgyMjA2MjBaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln +aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIIC +IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9m2BtRsiM +MW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdihFvkcxC7mlSpnzNApbjyF +NDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/TilftKaNXXsLmREDA/7n29uj/x2lzZAe +AR81sH8A25Bvxn570e56eqeqDFdvpG3FEzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkC +b6dJtDZd0KTeByy2dbcokdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn +7uHbHaBuHYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNFvJbN +cA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo19AOeCMgkckkKmUp +WyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjCL3UcPX7ape8eYIVpQtPM+GP+HkM5 +haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJWbjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNY +MUJDLXT5xp6mig/p/r+D5kNXJLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw +HQYDVR0hBBYwFDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j +BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzcK6FptWfUjNP9 +MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzfky9NfEBWMXrrpA9gzXrzvsMn +jgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7IkVh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQ +MbFamIp1TpBcahQq4FJHgmDmHtqBsfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4H +VtA4oJVwIHaM190e3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtl +vrsRls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ipmXeascCl +OS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HHb6D0jqTsNFFbjCYDcKF3 +1QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksfrK/7DZBaZmBwXarNeNQk7shBoJMBkpxq +nvy5JMWzFYJ+vq6VK+uxwNrjAWALXmmshFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCy +x/yP2FS1k2Kdzs9Z+z0YzirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMW +NY6E0F/6MBr1mmz0DlP5OlvRHA== +-----END CERTIFICATE----- + +DigiCert Assured ID Root CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw +IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx +MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL +ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO +9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy +UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW +/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy +oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf +GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF +66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq +hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc +EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn +SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i +8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe ++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== +-----END CERTIFICATE----- + +DigiCert Global Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw +HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw +MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 +dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn +TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5 +BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H +4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y +7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB +o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm +8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF +BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr +EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt +tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886 +UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk +CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +-----END CERTIFICATE----- + +DigiCert High Assurance EV Root CA +================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw +KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw +MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ +MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu +Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t +Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS +OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3 +MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ +NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe +h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB +Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY +JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ +V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp +myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK +mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe +vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K +-----END CERTIFICATE----- + +Certplus Class 2 Primary CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE +BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN +OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy +dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR +5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ +Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO +YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e +e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME +CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ +YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t +L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD +P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R +TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+ +7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW +//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7 +l7+ijrRU +-----END CERTIFICATE----- + +DST Root CA X3 +============== +-----BEGIN CERTIFICATE----- +MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK +ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X +DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1 +cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT +rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9 +UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy +xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d +utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ +MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug +dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE +GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw +RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS +fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ +-----END CERTIFICATE----- + +DST ACES CA X6 +============== +-----BEGIN CERTIFICATE----- +MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT +MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha +MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE +CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI +DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa +pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow +GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy +MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud +EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu +Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy +dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU +CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2 +5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t +Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq +nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs +vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3 +oKfN5XozNmr6mis= +-----END CERTIFICATE----- + +TURKTRUST Certificate Services Provider Root 2 +============================================== +-----BEGIN CERTIFICATE----- +MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP +MA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg +QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcN +MDUxMTA3MTAwNzU3WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVr +dHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEPMA0G +A1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls +acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqe +LCDe2JAOCtFp0if7qnefJ1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKI +x+XlZEdhR3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJQv2g +QrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGXJHpsmxcPbe9TmJEr +5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1pzpwACPI2/z7woQ8arBT9pmAPAgMB +AAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58SFq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8G +A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/ntt +Rbj2hWyfIvwqECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4 +Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFzgw2lGh1uEpJ+ +hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotHuFEJjOp9zYhys2AzsfAKRO8P +9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LSy3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5 +UrbnBEI= +-----END CERTIFICATE----- + +SwissSign Gold CA - G2 +====================== +-----BEGIN CERTIFICATE----- +MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNIMRUw +EwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2lnbiBHb2xkIENBIC0gRzIwHhcN +MDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBFMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dp +c3NTaWduIEFHMR8wHQYDVQQDExZTd2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUq +t2/876LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+bbqBHH5C +jCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c6bM8K8vzARO/Ws/BtQpg +vd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqEemA8atufK+ze3gE/bk3lUIbLtK/tREDF +ylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR +AiTysybUa9oEVeXBCsdtMDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuend +jIj3o02yMszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69yFGkO +peUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPiaG59je883WX0XaxR +7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi +GqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUWyV7lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64 +OfPAeGZe6Drn8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov +L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm +5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr +44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOf +Mke6UiI0HTJ6CVanfCU2qT1L2sCCbwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6m +Gu6uLftIdxf+u+yvGPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxp +mo/a77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCChdiDyyJk +vC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf +KzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEppLd6leNcG2mqeSz53OiATIgHQv2ieY2Br +NU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj +viOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ +-----END CERTIFICATE----- + +SwissSign Silver CA - G2 +======================== +-----BEGIN CERTIFICATE----- +MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT +BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X +DTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0NlowRzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3 +aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG +9w0BAQEFAAOCAg8AMIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644 +N0MvFz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7brYT7QbNHm ++/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieFnbAVlDLaYQ1HTWBCrpJH +6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH6ATK72oxh9TAtvmUcXtnZLi2kUpCe2Uu +MGoM9ZDulebyzYLs2aFK7PayS+VFheZteJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5h +qAaEuSh6XzjZG6k4sIN/c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5 +FZGkECwJMoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRHHTBs +ROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTfjNFusB3hB48IHpmc +celM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb65i/4z3GcRm25xBWNOHkDRUjvxF3X +CO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB +tjpbO8tFnb0cwpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0 +cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBAHPGgeAn0i0P +4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShpWJHckRE1qTodvBqlYJ7YH39F +kWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L +3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx +/uNncqCxv1yL5PqZIseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFa +DGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP +e97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQRdAtq/gsD/KNVV4n+Ssuu +WxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ +DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub +DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority +======================================== +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx +CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ +cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN +b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9 +nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge +RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt +tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI +hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K +Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN +NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa +Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG +1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= +-----END CERTIFICATE----- + +thawte Primary Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE +BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 +aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3 +MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg +SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv +KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT +FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs +oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ +1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc +q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K +aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p +afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD +VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF +AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE +uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX +xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89 +jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH +z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G5 +============================================================ +-----BEGIN CERTIFICATE----- +MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE +BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO +ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk +IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln +biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh +dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz +j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD +Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/ +Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r +fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/ +BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv +Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy +aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG +SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+ +X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE +KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC +Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE +ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq +-----END CERTIFICATE----- + +SecureTrust CA +============== +-----BEGIN CERTIFICATE----- +MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy +dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe +BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX +OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t +DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH +GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b +01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH +ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj +aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu +SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf +mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ +nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR +3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= +-----END CERTIFICATE----- + +Secure Global CA +================ +-----BEGIN CERTIFICATE----- +MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH +bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg +MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg +Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx +YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ +bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g +8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV +HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi +0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn +oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA +MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+ +OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn +CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5 +3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc +f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW +-----END CERTIFICATE----- + +COMODO Certification Authority +============================== +-----BEGIN CERTIFICATE----- +MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE +BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG +A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb +MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD +T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH ++7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww +xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV +4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA +1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI +rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k +b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC +AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP +OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ +RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc +IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN ++8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ== +-----END CERTIFICATE----- + +Network Solutions Certificate Authority +======================================= +-----BEGIN CERTIFICATE----- +MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG +EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr +IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx +MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu +MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx +jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT +aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT +crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc +/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB +AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv +bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA +A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q +4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/ +GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv +wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD +ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey +-----END CERTIFICATE----- + +WellsSecure Public Root Certificate Authority +============================================= +-----BEGIN CERTIFICATE----- +MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM +F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw +NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN +MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl +bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD +VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1 +iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13 +i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8 +bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB +K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB +AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu +cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm +lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB +i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww +GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg +Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI +K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0 +bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj +qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es +E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ +tylv2G0xffX8oRAHh84vWdw+WNs= +-----END CERTIFICATE----- + +COMODO ECC Certification Authority +================================== +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC +R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE +ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix +GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR +Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo +b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X +4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni +wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG +FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA +U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- + +IGC/A +===== +-----BEGIN CERTIFICATE----- +MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD +VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE +Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy +MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI +EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT +STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB +IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2 +TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW +So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy +HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd +frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ +tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB +egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC +iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK +q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q +MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg +Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI +lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF +0mBWWg== +-----END CERTIFICATE----- + +Security Communication EV RootCA1 +================================= +-----BEGIN CERTIFICATE----- +MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc +U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh +dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE +BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl +Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO +/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX +WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z +ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4 +bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK +9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG +SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm +iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG +Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW +mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW +T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490 +-----END CERTIFICATE----- + +OISTE WISeKey Global Root GA CA +=============================== +-----BEGIN CERTIFICATE----- +MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE +BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG +A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH +bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD +VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw +IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5 +IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9 +Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg +Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD +d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ +/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R +LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm +MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4 ++vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa +hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY +okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0= +-----END CERTIFICATE----- + +Microsec e-Szigno Root CA +========================= +-----BEGIN CERTIFICATE----- +MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE +BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL +EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0 +MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz +dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT +GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG +d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N +oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc +QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ +PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb +MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG +IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD +VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3 +LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A +dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn +AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA +4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg +AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA +egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6 +Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO +PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv +c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h +cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw +IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT +WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV +MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER +MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp +Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal +HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT +nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE +aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a +86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK +yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB +S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU= +-----END CERTIFICATE----- + +Certigna +======== +-----BEGIN CERTIFICATE----- +MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw +EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3 +MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI +Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q +XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH +GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p +ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg +DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf +Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ +tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ +BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J +SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA +hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+ +ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu +PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY +1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw +WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== +-----END CERTIFICATE----- + +Deutsche Telekom Root CA 2 +========================== +-----BEGIN CERTIFICATE----- +MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT +RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG +A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5 +MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G +A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS +b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5 +bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI +KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY +AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK +Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV +jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV +HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr +E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy +zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8 +rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G +dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU +Cm26OWMohpLzGITY+9HPBVZkVw== +-----END CERTIFICATE----- + +ComSign Secured CA +================== +-----BEGIN CERTIFICATE----- +MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAwPDEbMBkGA1UE +AxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0w +NDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwxGzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBD +QTEQMA4GA1UEChMHQ29tU2lnbjELMAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQDGtWhfHZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs +49ohgHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sWv+bznkqH +7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ueMv5WJDmyVIRD9YTC2LxB +kMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d1 +9guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUw +AwEB/zBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29t +U2lnblNlY3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58ADsA +j8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkqhkiG9w0BAQUFAAOC +AQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7piL1DRYHjZiM/EoZNGeQFsOY3wo3a +BijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtCdsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtp +FhpFfTMDZflScZAmlaxMDPWLkz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP +51qJThRv4zdLhfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz +OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw== +-----END CERTIFICATE----- + +Cybertrust Global Root +====================== +-----BEGIN CERTIFICATE----- +MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li +ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4 +MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD +ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA ++Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW +0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL +AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin +89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT +8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2 +MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G +A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO +lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi +5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2 +hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T +X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW +WL1WMRJOEcgh4LMRkWXbtKaIOM5V +-----END CERTIFICATE----- + +ePKI Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG +EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg +Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx +MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq +MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs +IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi +lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv +qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX +12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O +WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+ +ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao +lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/ +vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi +Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi +MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH +ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0 +1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq +KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV +xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP +NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r +GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE +xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx +gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy +sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD +BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw= +-----END CERTIFICATE----- + +T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3 +============================================================================================================================= +-----BEGIN CERTIFICATE----- +MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRSMRgwFgYDVQQH +DA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJpbGltc2VsIHZlIFRla25vbG9q +aWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSwVEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ry +b25payB2ZSBLcmlwdG9sb2ppIEFyYcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNV +BAsMGkthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUg +S8O2ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAeFw0wNzA4 +MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIxGDAWBgNVBAcMD0dlYnpl +IC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmlsaW1zZWwgdmUgVGVrbm9sb2ppayBBcmHF +n3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBUQUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZl +IEtyaXB0b2xvamkgQXJhxZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2Ft +dSBTZXJ0aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7ZrIFNl +cnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4hgb46ezzb8R1Sf1n68yJMlaCQvEhO +Eav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yKO7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1 +xnnRFDDtG1hba+818qEhTsXOfJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR +6Oqeyjh1jmKwlZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL +hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQIDAQABo0IwQDAd +BgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF +MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmPNOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4 +N5EY3ATIZJkrGG2AA1nJrvhY0D7twyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLT +y9LQQfMmNkqblWwM7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYh +LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M +dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI= +-----END CERTIFICATE----- + +Buypass Class 2 CA 1 +==================== +-----BEGIN CERTIFICATE----- +MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMiBDQSAxMB4XDTA2 +MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh +c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7M +cXA0ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLXl18xoS83 +0r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVBHfCuuCkslFJgNJQ72uA4 +0Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/R +uFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0P +AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLPgcIV +1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+DKhQ7SLHrQVMdvvt +7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKuBctN518fV4bVIJwo+28TOPX2EZL2 +fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHsh7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5w +wDX3OaJdZtB7WZ+oRxKaJyOkLY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho +-----END CERTIFICATE----- + +EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 +========================================================================== +-----BEGIN CERTIFICATE----- +MIIF5zCCA8+gAwIBAgIITK9zQhyOdAIwDQYJKoZIhvcNAQEFBQAwgYAxODA2BgNVBAMML0VCRyBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMTcwNQYDVQQKDC5FQkcg +QmlsacWfaW0gVGVrbm9sb2ppbGVyaSB2ZSBIaXptZXRsZXJpIEEuxZ4uMQswCQYDVQQGEwJUUjAe +Fw0wNjA4MTcwMDIxMDlaFw0xNjA4MTQwMDMxMDlaMIGAMTgwNgYDVQQDDC9FQkcgRWxla3Ryb25p +ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTE3MDUGA1UECgwuRUJHIEJpbGnFn2lt +IFRla25vbG9qaWxlcmkgdmUgSGl6bWV0bGVyaSBBLsWeLjELMAkGA1UEBhMCVFIwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQDuoIRh0DpqZhAy2DE4f6en5f2h4fuXd7hxlugTlkaDT7by +X3JWbhNgpQGR4lvFzVcfd2NR/y8927k/qqk153nQ9dAktiHq6yOU/im/+4mRDGSaBUorzAzu8T2b +gmmkTPiab+ci2hC6X5L8GCcKqKpE+i4stPtGmggDg3KriORqcsnlZR9uKg+ds+g75AxuetpX/dfr +eYteIAbTdgtsApWjluTLdlHRKJ2hGvxEok3MenaoDT2/F08iiFD9rrbskFBKW5+VQarKD7JK/oCZ +TqNGFav4c0JqwmZ2sQomFd2TkuzbqV9UIlKRcF0T6kjsbgNs2d1s/OsNA/+mgxKb8amTD8UmTDGy +Y5lhcucqZJnSuOl14nypqZoaqsNW2xCaPINStnuWt6yHd6i58mcLlEOzrz5z+kI2sSXFCjEmN1Zn +uqMLfdb3ic1nobc6HmZP9qBVFCVMLDMNpkGMvQQxahByCp0OLna9XvNRiYuoP1Vzv9s6xiQFlpJI +qkuNKgPlV5EQ9GooFW5Hd4RcUXSfGenmHmMWOeMRFeNYGkS9y8RsZteEBt8w9DeiQyJ50hBs37vm +ExH8nYQKE3vwO9D8owrXieqWfo1IhR5kX9tUoqzVegJ5a9KK8GfaZXINFHDk6Y54jzJ0fFfy1tb0 +Nokb+Clsi7n2l9GkLqq+CxnCRelwXQIDAJ3Zo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB +/wQEAwIBBjAdBgNVHQ4EFgQU587GT/wWZ5b6SqMHwQSny2re2kcwHwYDVR0jBBgwFoAU587GT/wW +Z5b6SqMHwQSny2re2kcwDQYJKoZIhvcNAQEFBQADggIBAJuYml2+8ygjdsZs93/mQJ7ANtyVDR2t +FcU22NU57/IeIl6zgrRdu0waypIN30ckHrMk2pGI6YNw3ZPX6bqz3xZaPt7gyPvT/Wwp+BVGoGgm +zJNSroIBk5DKd8pNSe/iWtkqvTDOTLKBtjDOWU/aWR1qeqRFsIImgYZ29fUQALjuswnoT4cCB64k +XPBfrAowzIpAoHMEwfuJJPaaHFy3PApnNgUIMbOv2AFoKuB4j3TeuFGkjGwgPaL7s9QJ/XvCgKqT +bCmYIai7FvOpEl90tYeY8pUm3zTvilORiF0alKM/fCL414i6poyWqD1SNGKfAB5UVUJnxk1Gj7sU +RT0KlhaOEKGXmdXTMIXM3rRyt7yKPBgpaP3ccQfuJDlq+u2lrDgv+R4QDgZxGhBM/nV+/x5XOULK +1+EVoVZVWRvRo68R2E7DpSvvkL/A7IITW43WciyTTo9qKd+FPNMN4KIYEsxVL0e3p5sC/kH2iExt +2qkBR4NkJ2IQgtYSe14DHzSpyZH+r11thie3I6p1GMog57AP14kOpmciY/SDQSsGS7tY1dHXt7kQ +Y9iJSrSq3RZj9W6+YKH47ejWkE8axsWgKdOnIaj1Wjz3x0miIZpKlVIglnKaZsv30oZDfCK+lvm9 +AahH3eU7QPl1K5srRmSGjR70j/sHd9DqSaIcjVIUpgqT +-----END CERTIFICATE----- + +certSIGN ROOT CA +================ +-----BEGIN CERTIFICATE----- +MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD +VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa +Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE +CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I +JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH +rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2 +ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD +0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943 +AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B +Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB +AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8 +SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0 +x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt +vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz +TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD +-----END CERTIFICATE----- + +CNNIC ROOT +========== +-----BEGIN CERTIFICATE----- +MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE +ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw +OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD +o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz +VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT +VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or +czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK +y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC +wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S +lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5 +Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM +O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8 +BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2 +G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m +mxE= +-----END CERTIFICATE----- + +ApplicationCA - Japanese Government +=================================== +-----BEGIN CERTIFICATE----- +MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEcMBoGA1UEChMT +SmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRpb25DQTAeFw0wNzEyMTIxNTAw +MDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYTAkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zl +cm5tZW50MRYwFAYDVQQLEw1BcHBsaWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAp23gdE6Hj6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4 +fl+Kf5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55IrmTwcrN +wVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cwFO5cjFW6WY2H/CPek9AE +jP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDihtQWEjdnjDuGWk81quzMKq2edY3rZ+nYVu +nyoKb58DKTCXKB28t89UKU5RMfkntigm/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRU +WssmP3HMlEYNllPqa0jQk/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNV +BAYTAkpQMRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOCseOD +vOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADlqRHZ3ODrs +o2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJhyzjVOGjprIIC8CFqMjSnHH2HZ9g +/DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYD +io+nEhEMy/0/ecGc/WLuo89UDNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmW +dupwX3kSa+SjB1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL +rosot4LKGAfmt1t06SAZf7IbiVQ= +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority - G3 +============================================= +-----BEGIN CERTIFICATE----- +MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE +BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0 +IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz +NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo +YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT +LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j +K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE +c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C +IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu +dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr +2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9 +cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE +Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD +AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s +t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt +-----END CERTIFICATE----- + +thawte Primary Root CA - G2 +=========================== +-----BEGIN CERTIFICATE----- +MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC +VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu +IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg +Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV +MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG +b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt +IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS +LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5 +8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU +mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN +G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K +rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== +-----END CERTIFICATE----- + +thawte Primary Root CA - G3 +=========================== +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE +BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 +aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w +ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh +d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD +VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG +A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At +P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC ++BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY +7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW +vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ +KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK +A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu +t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC +8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm +er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A= +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority - G2 +============================================= +-----BEGIN CERTIFICATE----- +MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu +Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1 +OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg +MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl +b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG +BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc +KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD +VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+ +EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m +ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2 +npaqBA+K +-----END CERTIFICATE----- + +VeriSign Universal Root Certification Authority +=============================================== +-----BEGIN CERTIFICATE----- +MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE +BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO +ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk +IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u +IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj +1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP +MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72 +9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I +AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR +tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G +CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O +a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud +DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3 +Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx +Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx +P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P +wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4 +mJO37M2CYfE45k+XmCpajQ== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G4 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC +VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3 +b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz +ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU +cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo +b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8 +Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz +rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw +HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u +Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD +A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx +AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== +-----END CERTIFICATE----- + +NetLock Arany (Class Gold) Főtanúsítvány +============================================ +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G +A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610 +dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB +cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx +MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO +ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6 +c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu +0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw +/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk +H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw +fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1 +neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW +qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta +YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC +bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna +NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu +dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA - G2 +================================== +-----BEGIN CERTIFICATE----- +MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE +CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g +Um9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oXDTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMC +TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l +ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ +5291qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8SpuOUfiUtn +vWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPUZ5uW6M7XxgpT0GtJlvOj +CwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvEpMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiil +e7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCR +OME4HYYEhLoaJXhena/MUGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpI +CT0ugpTNGmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy5V65 +48r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv6q012iDTiIJh8BIi +trzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEKeN5KzlW/HdXZt1bv8Hb/C3m1r737 +qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMB +AAGjgZcwgZQwDwYDVR0TAQH/BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcC +ARYxaHR0cDovL3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV +HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqGSIb3DQEBCwUA +A4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLySCZa59sCrI2AGeYwRTlHSeYAz ++51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwj +f/ST7ZwaUb7dRUG/kSS0H4zpX897IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaN +kqbG9AclVMwWVxJKgnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfk +CpYL+63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxLvJxxcypF +URmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkmbEgeqmiSBeGCc1qb3Adb +CG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvkN1trSt8sV4pAWja63XVECDdCcAz+3F4h +oKOKwJCcaNpQ5kUQR3i2TtJlycM33+FCY7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoV +IPVVYpbtbZNQvOSqeK3Zywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm +66+KAQ== +-----END CERTIFICATE----- + +CA Disig +======== +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMK +QnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwHhcNMDYw +MzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlz +bGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgm +GErENx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnXmjxUizkD +Pw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYDXcDtab86wYqg6I7ZuUUo +hwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhWS8+2rT+MitcE5eN4TPWGqvWP+j1scaMt +ymfraHtuM6kMgiioTGohQBUgDCZbg8KpFhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8w +gfwwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0P +AQH/BAQDAgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cuZGlz +aWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5zay9jYS9jcmwvY2Ff +ZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2svY2EvY3JsL2NhX2Rpc2lnLmNybDAa +BgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEwDQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59t +WDYcPQuBDRIrRhCA/ec8J9B6yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3 +mkkp7M5+cTxqEEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/ +CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeBEicTXxChds6K +ezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFNPGO+I++MzVpQuGhU+QqZMxEA +4Z7CRneC9VkGjCFMhwnN5ag= +-----END CERTIFICATE----- + +Juur-SK +======= +-----BEGIN CERTIFICATE----- +MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lA +c2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAw +DgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMwMVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqG +SIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVy +aW1pc2tlc2t1czEQMA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOBSvZiF3tf +TQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkzABpTpyHhOEvWgxutr2TC ++Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvHLCu3GFH+4Hv2qEivbDtPL+/40UceJlfw +UR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMPPbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDa +Tpxt4brNj3pssAki14sL2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQF +MAMBAf8wggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwICMIHD +HoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDkAGwAagBhAHMAdABh +AHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0AHMAZQBlAHIAaQBtAGkAcwBrAGUA +cwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABr +AGkAbgBuAGkAdABhAG0AaQBzAGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nw +cy8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE +FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcYP2/v6X2+MA4G +A1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOiCfP+JmeaUOTDBS8rNXiRTHyo +ERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+gkcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyL +abVAyJRld/JXIWY7zoVAtjNjGr95HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678 +IIbsSt4beDI3poHSna9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkh +Mp6qqIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0ZTbvGRNs2 +yyqcjg== +-----END CERTIFICATE----- + +Hongkong Post Root CA 1 +======================= +-----BEGIN CERTIFICATE----- +MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT +DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx +NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n +IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1 +ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr +auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh +qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY +V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV +HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i +h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio +l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei +IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps +T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT +c4afU9hDDl3WY4JxHYB0yvbiAmvZWg== +-----END CERTIFICATE----- + +SecureSign RootCA11 +=================== +-----BEGIN CERTIFICATE----- +MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi +SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS +b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw +KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1 +cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL +TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO +wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq +g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP +O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA +bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX +t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh +OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r +bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ +Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01 +y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061 +lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I= +-----END CERTIFICATE----- + +ACEDICOM Root +============= +-----BEGIN CERTIFICATE----- +MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UEAwwNQUNFRElD +T00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMB4XDTA4 +MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEWMBQGA1UEAwwNQUNFRElDT00gUm9vdDEMMAoG +A1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA/5KV4WgGdrQsyFhIyv2AVClVYyT/kGWbEHV7w2rbYgIB8hiGtXxaOLHk +WLn709gtn70yN78sFW2+tfQh0hOR2QetAQXW8713zl9CgQr5auODAKgrLlUTY4HKRxx7XBZXehuD +YAQ6PmXDzQHe3qTWDLqO3tkE7hdWIpuPY/1NFgu3e3eM+SW10W2ZEi5PGrjm6gSSrj0RuVFCPYew +MYWveVqc/udOXpJPQ/yrOq2lEiZmueIM15jO1FillUAKt0SdE3QrwqXrIhWYENiLxQSfHY9g5QYb +m8+5eaA9oiM/Qj9r+hwDezCNzmzAv+YbX79nuIQZ1RXve8uQNjFiybwCq0Zfm/4aaJQ0PZCOrfbk +HQl/Sog4P75n/TSW9R28MHTLOO7VbKvU/PQAtwBbhTIWdjPp2KOZnQUAqhbm84F9b32qhm2tFXTT +xKJxqvQUfecyuB+81fFOvW8XAjnXDpVCOscAPukmYxHqC9FK/xidstd7LzrZlvvoHpKuE1XI2Sf2 +3EgbsCTBheN3nZqk8wwRHQ3ItBTutYJXCb8gWH8vIiPYcMt5bMlL8qkqyPyHK9caUPgn6C9D4zq9 +2Fdx/c6mUlv53U3t5fZvie27k5x2IXXwkkwp9y+cAS7+UEaeZAwUswdbxcJzbPEHXEUkFDWug/Fq +TYl6+rPYLWbwNof1K1MCAwEAAaOBqjCBpzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKaz +4SsrSbbXc6GqlPUB53NlTKxQMA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUprPhKytJttdzoaqU +9QHnc2VMrFAwRAYDVR0gBD0wOzA5BgRVHSAAMDEwLwYIKwYBBQUHAgEWI2h0dHA6Ly9hY2VkaWNv +bS5lZGljb21ncm91cC5jb20vZG9jMA0GCSqGSIb3DQEBBQUAA4ICAQDOLAtSUWImfQwng4/F9tqg +aHtPkl7qpHMyEVNEskTLnewPeUKzEKbHDZ3Ltvo/Onzqv4hTGzz3gvoFNTPhNahXwOf9jU8/kzJP +eGYDdwdY6ZXIfj7QeQCM8htRM5u8lOk6e25SLTKeI6RF+7YuE7CLGLHdztUdp0J/Vb77W7tH1Pwk +zQSulgUV1qzOMPPKC8W64iLgpq0i5ALudBF/TP94HTXa5gI06xgSYXcGCRZj6hitoocf8seACQl1 +ThCojz2GuHURwCRiipZ7SkXp7FnFvmuD5uHorLUwHv4FB4D54SMNUI8FmP8sX+g7tq3PgbUhh8oI +KiMnMCArz+2UW6yyetLHKKGKC5tNSixthT8Jcjxn4tncB7rrZXtaAWPWkFtPF2Y9fwsZo5NjEFIq +nxQWWOLcpfShFosOkYuByptZ+thrkQdlVV9SH686+5DdaaVbnG0OLLb6zqylfDJKZ0DcMDQj3dcE +I2bw/FWAp/tmGYI1Z2JwOV5vx+qQQEQIHriy1tvuWacNGHk0vFQYXlPKNFHtRQrmjseCNj6nOGOp +MCwXEGCSn1WHElkQwg9naRHMTh5+Spqtr0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3o +tkYNbn5XOmeUwssfnHdKZ05phkOTOPu220+DkdRgfks+KzgHVZhepA== +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority +======================================================= +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow +XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz +IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94 +f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol +hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABByUqkFFBky +CEHwxWsKzH4PIRnN5GfcX6kb5sroc50i2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWX +bj9T/UWZYB2oK0z5XqcJ2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/ +D/xwzoiQ +-----END CERTIFICATE----- + +Microsec e-Szigno Root CA 2009 +============================== +-----BEGIN CERTIFICATE----- +MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER +MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv +c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o +dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE +BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt +U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA +fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG +0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA +pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm +1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC +AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf +QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE +FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o +lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX +I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 +tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02 +yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi +LXpUq3DDfSJlgnCW +-----END CERTIFICATE----- + +GlobalSign Root CA - R3 +======================= +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt +iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ +0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3 +rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl +OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2 +xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7 +lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8 +EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E +bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18 +YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r +kpeDMdmztcpHWD9f +-----END CERTIFICATE----- + +Autoridad de Certificacion Firmaprofesional CIF A62634068 +========================================================= +-----BEGIN CERTIFICATE----- +MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA +BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 +MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw +QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB +NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD +Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P +B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY +7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH +ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI +plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX +MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX +LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK +bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU +vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud +EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH +DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp +cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA +bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx +ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx +51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk +R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP +T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f +Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl +osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR +crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR +saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD +KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi +6Et8Vcad+qMUu2WFbm5PEn4KPJ2V +-----END CERTIFICATE----- + +Izenpe.com +========== +-----BEGIN CERTIFICATE----- +MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG +EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz +MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu +QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ +03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK +ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU ++zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC +PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT +OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK +F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK +0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+ +0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB +leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID +AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+ +SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG +NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx +MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O +BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l +Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga +kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q +hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs +g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5 +aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5 +nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC +ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo +Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z +WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== +-----END CERTIFICATE----- + +Chambers of Commerce Root - 2008 +================================ +-----BEGIN CERTIFICATE----- +MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD +MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv +bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu +QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy +Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl +ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF +EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl +cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA +XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj +h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/ +ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk +NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g +D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331 +lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ +0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj +ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2 +EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI +G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ +BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh +bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh +bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC +CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH +AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1 +wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH +3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU +RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6 +M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1 +YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF +9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK +zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG +nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg +OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ +-----END CERTIFICATE----- + +Global Chambersign Root - 2008 +============================== +-----BEGIN CERTIFICATE----- +MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD +MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv +bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu +QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx +NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg +Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ +QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD +aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf +VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf +XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0 +ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB +/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA +TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M +H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe +Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF +HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh +wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB +AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT +BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE +BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm +aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm +aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp +1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0 +dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG +/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6 +ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s +dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg +9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH +foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du +qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr +P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq +c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z +09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B +-----END CERTIFICATE----- + +Go Daddy Root Certificate Authority - G2 +======================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu +MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G +A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq +9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD ++qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd +fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl +NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9 +BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac +vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r +5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV +N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1 +-----END CERTIFICATE----- + +Starfield Root Certificate Authority - G2 +========================================= +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0 +eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw +DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg +VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB +dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv +W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs +bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk +N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf +ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU +JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol +TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx +4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw +F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ +c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- + +Starfield Services Root Certificate Authority - G2 +================================================== +-----BEGIN CERTIFICATE----- +MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl +IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV +BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT +dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg +Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2 +h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa +hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP +LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB +rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG +SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP +E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy +xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd +iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza +YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6 +-----END CERTIFICATE----- + +AffirmTrust Commercial +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw +MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb +DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV +C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6 +BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww +MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV +HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG +hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi +qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv +0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh +sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= +-----END CERTIFICATE----- + +AffirmTrust Networking +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw +MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE +Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI +dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24 +/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb +h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV +HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu +UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6 +12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23 +WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9 +/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= +-----END CERTIFICATE----- + +AffirmTrust Premium +=================== +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy +OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy +dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn +BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV +5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs ++7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd +GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R +p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI +S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04 +6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5 +/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo ++Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv +MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg +Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC +6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S +L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK ++4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV +BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg +IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60 +g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb +zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw== +-----END CERTIFICATE----- + +AffirmTrust Premium ECC +======================= +-----BEGIN CERTIFICATE----- +MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV +BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx +MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U +cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ +N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW +BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK +BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X +57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM +eQ== +-----END CERTIFICATE----- + +Certum Trusted Network CA +========================= +-----BEGIN CERTIFICATE----- +MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK +ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy +MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU +ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC +l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J +J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4 +fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0 +cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB +Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw +DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj +jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1 +mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj +Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI +03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= +-----END CERTIFICATE----- + +Certinomis - Autorité Racine +============================= +-----BEGIN CERTIFICATE----- +MIIFnDCCA4SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJGUjETMBEGA1UEChMK +Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxJjAkBgNVBAMMHUNlcnRpbm9taXMg +LSBBdXRvcml0w6kgUmFjaW5lMB4XDTA4MDkxNzA4Mjg1OVoXDTI4MDkxNzA4Mjg1OVowYzELMAkG +A1UEBhMCRlIxEzARBgNVBAoTCkNlcnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMSYw +JAYDVQQDDB1DZXJ0aW5vbWlzIC0gQXV0b3JpdMOpIFJhY2luZTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAJ2Fn4bT46/HsmtuM+Cet0I0VZ35gb5j2CN2DpdUzZlMGvE5x4jYF1AMnmHa +wE5V3udauHpOd4cN5bjr+p5eex7Ezyh0x5P1FMYiKAT5kcOrJ3NqDi5N8y4oH3DfVS9O7cdxbwly +Lu3VMpfQ8Vh30WC8Tl7bmoT2R2FFK/ZQpn9qcSdIhDWerP5pqZ56XjUl+rSnSTV3lqc2W+HN3yNw +2F1MpQiD8aYkOBOo7C+ooWfHpi2GR+6K/OybDnT0K0kCe5B1jPyZOQE51kqJ5Z52qz6WKDgmi92N +jMD2AR5vpTESOH2VwnHu7XSu5DaiQ3XV8QCb4uTXzEIDS3h65X27uK4uIJPT5GHfceF2Z5c/tt9q +c1pkIuVC28+BA5PY9OMQ4HL2AHCs8MF6DwV/zzRpRbWT5BnbUhYjBYkOjUjkJW+zeL9i9Qf6lSTC +lrLooyPCXQP8w9PlfMl1I9f09bze5N/NgL+RiH2nE7Q5uiy6vdFrzPOlKO1Enn1So2+WLhl+HPNb +xxaOu2B9d2ZHVIIAEWBsMsGoOBvrbpgT1u449fCfDu/+MYHB0iSVL1N6aaLwD4ZFjliCK0wi1F6g +530mJ0jfJUaNSih8hp75mxpZuWW/Bd22Ql095gBIgl4g9xGC3srYn+Y3RyYe63j3YcNBZFgCQfna +4NH4+ej9Uji29YnfAgMBAAGjWzBZMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G +A1UdDgQWBBQNjLZh2kS40RR9w759XkjwzspqsDAXBgNVHSAEEDAOMAwGCiqBegFWAgIAAQEwDQYJ +KoZIhvcNAQEFBQADggIBACQ+YAZ+He86PtvqrxyaLAEL9MW12Ukx9F1BjYkMTv9sov3/4gbIOZ/x +WqndIlgVqIrTseYyCYIDbNc/CMf4uboAbbnW/FIyXaR/pDGUu7ZMOH8oMDX/nyNTt7buFHAAQCva +R6s0fl6nVjBhK4tDrP22iCj1a7Y+YEq6QpA0Z43q619FVDsXrIvkxmUP7tCMXWY5zjKn2BCXwH40 +nJ+U8/aGH88bc62UeYdocMMzpXDn2NU4lG9jeeu/Cg4I58UvD0KgKxRA/yHgBcUn4YQRE7rWhh1B +CxMjidPJC+iKunqjo3M3NYB9Ergzd0A4wPpeMNLytqOx1qKVl4GbUu1pTP+A5FPbVFsDbVRfsbjv +JL1vnxHDx2TCDyhihWZeGnuyt++uNckZM6i4J9szVb9o4XVIRFb7zdNIu0eJOqxp9YDG5ERQL1TE +qkPFMTFYvZbF6nVsmnWxTfj3l/+WFvKXTej28xH5On2KOG4Ey+HTRRWqpdEdnV1j6CTmNhTih60b +WfVEm/vXd3wfAXBioSAaosUaKPQhA+4u2cGA6rnZgtZbdsLLO7XSAPCjDuGtbkD326C00EauFddE +wk01+dIL8hf2rGbVJLJP0RyZwG71fet0BLj5TXcJ17TPBzAJ8bgAVtkXFhYKK4bfjwEZGuW7gmP/ +vgt2Fl43N+bYdJeimUV5 +-----END CERTIFICATE----- + +Root CA Generalitat Valenciana +============================== +-----BEGIN CERTIFICATE----- +MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJFUzEfMB0GA1UE +ChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290 +IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcNMDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3 +WjBoMQswCQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UE +CxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+WmmmO3I2 +F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKjSgbwJ/BXufjpTjJ3Cj9B +ZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGlu6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQ +D0EbtFpKd71ng+CT516nDOeB0/RSrFOyA8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXte +JajCq+TA81yc477OMUxkHl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMB +AAGjggM7MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5n +dmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIICIwYKKwYBBAG/VQIB +ADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBl +AHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIAYQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIA +YQBsAGkAdABhAHQAIABWAGEAbABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQBy +AGEAYwBpAPMAbgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA +aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMAaQBvAG4AYQBt +AGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQAZQAgAEEAdQB0AG8AcgBpAGQA +YQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBu +AHQAcgBhACAAZQBuACAAbABhACAAZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAA +OgAvAC8AdwB3AHcALgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0 +dHA6Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+yeAT8MIGV +BgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQswCQYDVQQGEwJFUzEfMB0G +A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5S +b290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRh +TvW1yEICKrNcda3FbcrnlD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdz +Ckj+IHLtb8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg9J63 +NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XFducTZnV+ZfsBn5OH +iJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmCIoaZM3Fa6hlXPZHNqcCjbgcTpsnt ++GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM= +-----END CERTIFICATE----- + +A-Trust-nQual-03 +================ +-----BEGIN CERTIFICATE----- +MIIDzzCCAregAwIBAgIDAWweMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJBVDFIMEYGA1UE +Cgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy +a2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5RdWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5R +dWFsLTAzMB4XDTA1MDgxNzIyMDAwMFoXDTE1MDgxNzIyMDAwMFowgY0xCzAJBgNVBAYTAkFUMUgw +RgYDVQQKDD9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0 +ZW52ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMMEEEtVHJ1 +c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtPWFuA/OQO8BBC4SA +zewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUjlUC5B3ilJfYKvUWG6Nm9wASOhURh73+n +yfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZznF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPE +SU7l0+m0iKsMrmKS1GWH2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4 +iHQF63n1k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs2e3V +cuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECERqlWdV +eRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAVdRU0VlIXLOThaq/Yy/kgM40 +ozRiPvbY7meIMQQDbwvUB/tOdQ/TLtPAF8fGKOwGDREkDg6lXb+MshOWcdzUzg4NCmgybLlBMRmr +sQd7TZjTXLDR8KdCoLXEjq/+8T/0709GAHbrAvv5ndJAlseIOrifEXnzgGWovR/TeIGgUUw3tKZd +JXDRZslo+S4RFGjxVJgIrCaSD96JntT6s3kr0qN51OyLrIdTaEJMUVF0HhsnLuP1Hyl0Te2v9+GS +mYHovjrHF1D2t8b8m7CKa9aIA5GPBnc6hQLdmNVDeD/GMBWsm2vLV7eJUYs66MmEDNuxUCAKGkq6 +ahq97BvIxYSazQ== +-----END CERTIFICATE----- + +TWCA Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ +VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG +EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB +IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx +QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC +oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP +4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r +y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB +BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG +9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC +mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW +QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY +T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny +Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== +-----END CERTIFICATE----- + +Security Communication RootCA2 +============================== +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc +U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh +dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC +SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy +aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++ ++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R +3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV +spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K +EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8 +QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB +CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj +u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk +3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q +tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29 +mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 +-----END CERTIFICATE----- + +EC-ACC +====== +-----BEGIN CERTIFICATE----- +MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE +BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w +ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD +VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE +CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT +BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7 +MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt +SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl +Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh +cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK +w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT +ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4 +HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a +E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw +0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD +VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0 +Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l +dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ +lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa +Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe +l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2 +E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D +5EI= +-----END CERTIFICATE----- + +Hellenic Academic and Research Institutions RootCA 2011 +======================================================= +-----BEGIN CERTIFICATE----- +MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT +O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y +aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z +IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT +AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z +IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo +IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI +1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa +71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u +8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH +3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/ +MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8 +MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu +b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt +XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8 +TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD +/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N +7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4 +-----END CERTIFICATE----- + +Actalis Authentication Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM +BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE +AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky +MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz +IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 +IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ +wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa +by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6 +zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f +YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2 +oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l +EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7 +hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8 +EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5 +jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY +iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt +ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI +WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0 +JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx +K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+ +Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC +4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo +2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz +lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem +OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9 +vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== +-----END CERTIFICATE----- + +Trustis FPS Root CA +=================== +-----BEGIN CERTIFICATE----- +MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG +EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290 +IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV +BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ +RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk +H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa +cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt +o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA +AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd +BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c +GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC +yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P +8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV +l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl +iB6XzCGcKQENZetX2fNXlrtIzYE= +-----END CERTIFICATE----- + +StartCom Certification Authority +================================ +-----BEGIN CERTIFICATE----- +MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN +U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu +ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0 +NjM3WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk +LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg +U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y +o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/ +Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d +eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt +2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z +6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ +osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/ +untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc +UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT +37uMdBNSSwIDAQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD +VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFulF2mHMMo0aEPQ +Qa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCCATgwLgYIKwYBBQUHAgEWImh0 +dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cu +c3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENv +bW1lcmNpYWwgKFN0YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0 +aGUgc2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0aWZpY2F0 +aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuc3RhcnRzc2wuY29t +L3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBG +cmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5 +fPGFf59Jb2vKXfuM/gTFwWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWm +N3PH/UvSTa0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst0OcN +Org+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNcpRJvkrKTlMeIFw6T +tn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKlCcWw0bdT82AUuoVpaiF8H3VhFyAX +e2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVFP0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA +2MFrLH9ZXF2RsXAiV+uKa0hK1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBs +HvUwyKMQ5bLmKhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE +JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ8dCAWZvLMdib +D4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnmfyWl8kgAwKQB2j8= +-----END CERTIFICATE----- + +StartCom Certification Authority G2 +=================================== +-----BEGIN CERTIFICATE----- +MIIFYzCCA0ugAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMN +U3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +RzIwHhcNMTAwMTAxMDEwMDAxWhcNMzkxMjMxMjM1OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UE +ChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgRzIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8O +o1XJJZlKxdBWQYeQTSFgpBSHO839sj60ZwNq7eEPS8CRhXBF4EKe3ikj1AENoBB5uNsDvfOpL9HG +4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnooD/Uefyf3lLE3PbfHkffi +Aez9lInhzG7TNtYKGXmu1zSCZf98Qru23QumNK9LYP5/Q0kGi4xDuFby2X8hQxfqp0iVAXV16iul +Q5XqFYSdCI0mblWbq9zSOdIxHWDirMxWRST1HFSr7obdljKF+ExP6JV2tgXdNiNnvP8V4so75qbs +O+wmETRIjfaAKxojAuuKHDp2KntWFhxyKrOq42ClAJ8Em+JvHhRYW6Vsi1g8w7pOOlz34ZYrPu8H +vKTlXcxNnw3h3Kq74W4a7I/htkxNeXJdFzULHdfBR9qWJODQcqhaX2YtENwvKhOuJv4KHBnM0D4L +nMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/iUUjXuG+v+E5+M5iS +FGI6dWPPe/regjupuznixL0sAA7IF6wT700ljtizkC+p2il9Ha90OrInwMEePnWjFqmveiJdnxMa +z6eg6+OGCtP95paV1yPIN93EfKo2rJgaErHgTuixO/XWb/Ew1wIDAQABo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUS8W0QGutHLOlHGVuRjaJhwUMDrYwDQYJ +KoZIhvcNAQELBQADggIBAHNXPyzVlTJ+N9uWkusZXn5T50HsEbZH77Xe7XRcxfGOSeD8bpkTzZ+K +2s06Ctg6Wgk/XzTQLwPSZh0avZyQN8gMjgdalEVGKua+etqhqaRpEpKwfTbURIfXUfEpY9Z1zRbk +J4kd+MIySP3bmdCPX1R0zKxnNBFi2QwKN4fRoxdIjtIXHfbX/dtl6/2o1PXWT6RbdejF0mCy2wl+ +JYt7ulKSnj7oxXehPOBKc2thz4bcQ///If4jXSRK9dNtD2IEBVeC2m6kMyV5Sy5UGYvMLD0w6dEG +/+gyRr61M3Z3qAFdlsHB1b6uJcDJHgoJIIihDsnzb02CVAAgp9KP5DlUFy6NHrgbuxu9mk47EDTc +nIhT76IxW1hPkWLIwpqazRVdOKnWvvgTtZ8SafJQYqz7Fzf07rh1Z2AQ+4NQ+US1dZxAF7L+/Xld +blhYXzD8AK6vM8EOTmy6p6ahfzLbOOCxchcKK5HsamMm7YnUeMx0HgX4a/6ManY5Ka5lIxKVCCIc +l85bBu4M4ru8H0ST9tg4RQUh7eStqxK2A6RCLi3ECToDZ2mEmuFZkIoohdVddLHRDiBYmxOlsGOm +7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulrso8uBtjRkcfGEvRM/TAXw8HaOFvjqerm +obp573PYtlNXLfbQ4ddI +-----END CERTIFICATE----- + +Buypass Class 2 Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMiBSb290IENBMB4X +DTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1owTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 +eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1 +g1Lr6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPVL4O2fuPn +9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC911K2GScuVr1QGbNgGE41b +/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHxMlAQTn/0hpPshNOOvEu/XAFOBz3cFIqU +CqTqc/sLUegTBxj6DvEr0VQVfTzh97QZQmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeff +awrbD02TTqigzXsu8lkBarcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgI +zRFo1clrUs3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLiFRhn +Bkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRSP/TizPJhk9H9Z2vX +Uq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN9SG9dKpN6nIDSdvHXx1iY8f93ZHs +M+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxPAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFMmAd+BikoL1RpzzuvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF +AAOCAgEAU18h9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s +A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3tOluwlN5E40EI +osHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo+fsicdl9sz1Gv7SEr5AcD48S +aq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYd +DnkM/crqJIByw5c/8nerQyIKx+u2DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWD +LfJ6v9r9jv6ly0UsH8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0 +oyLQI+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK75t98biGC +wWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h3PFaTWwyI0PurKju7koS +CTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPzY11aWOIv4x3kqdbQCtCev9eBCfHJxyYN +rJgWVqA= +-----END CERTIFICATE----- + +Buypass Class 3 Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMyBSb290IENBMB4X +DTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFowTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 +eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRH +sJ8YZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3EN3coTRiR +5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9tznDDgFHmV0ST9tD+leh +7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX0DJq1l1sDPGzbjniazEuOQAnFN44wOwZ +ZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH +2xc519woe2v1n/MuwU8XKhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV +/afmiSTYzIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvSO1UQ +RwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D34xFMFbG02SrZvPA +Xpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgPK9Dx2hzLabjKSWJtyNBjYt1gD1iq +j6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFEe4zf/lb+74suwvTg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF +AAOCAgEAACAjQTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV +cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXSIGrs/CIBKM+G +uIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2HJLw5QY33KbmkJs4j1xrG0aG +Q0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsaO5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8 +ZORK15FTAaggiG6cX0S5y2CBNOxv033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2 +KSb12tjE8nVhz36udmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz +6MkEkbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg413OEMXbug +UZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvDu79leNKGef9JOxqDDPDe +eOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq4/g7u9xN12TyUb7mqqta6THuBrxzvxNi +Cp/HuZc= +-----END CERTIFICATE----- + +T-TeleSec GlobalRoot Class 3 +============================ +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM +IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU +cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx +MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz +dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD +ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK +9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU +NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF +iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W +0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr +AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb +fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT +ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h +P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml +e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw== +-----END CERTIFICATE----- + +EE Certification Centre Root CA +=============================== +-----BEGIN CERTIFICATE----- +MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG +EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy +dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw +MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB +UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy +ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB +DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM +TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2 +rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw +93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN +P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ +MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF +BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj +xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM +lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u +uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU +3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM +dcGWxZ0= +-----END CERTIFICATE----- + +TURKTRUST Certificate Services Provider Root 2007 +================================================= +-----BEGIN CERTIFICATE----- +MIIEPTCCAyWgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvzE/MD0GA1UEAww2VMOcUktUUlVTVCBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP +MA0GA1UEBwwGQW5rYXJhMV4wXAYDVQQKDFVUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg +QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgQXJhbMSxayAyMDA3MB4X +DTA3MTIyNTE4MzcxOVoXDTE3MTIyMjE4MzcxOVowgb8xPzA9BgNVBAMMNlTDnFJLVFJVU1QgRWxl +a3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTELMAkGA1UEBhMCVFIxDzAN +BgNVBAcMBkFua2FyYTFeMFwGA1UECgxVVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp +bGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4gKGMpIEFyYWzEsWsgMjAwNzCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKu3PgqMyKVYFeaK7yc9SrToJdPNM8Ig3BnuiD9N +YvDdE3ePYakqtdTyuTFYKTsvP2qcb3N2Je40IIDu6rfwxArNK4aUyeNgsURSsloptJGXg9i3phQv +KUmi8wUG+7RP2qFsmmaf8EMJyupyj+sA1zU511YXRxcw9L6/P8JorzZAwan0qafoEGsIiveGHtya +KhUG9qPw9ODHFNRRf8+0222vR5YXm3dx2KdxnSQM9pQ/hTEST7ruToK4uT6PIzdezKKqdfcYbwnT +rqdUKDT74eA7YH2gvnmJhsifLfkKS8RQouf9eRbHegsYz85M733WB2+Y8a+xwXrXgTW4qhe04MsC +AwEAAaNCMEAwHQYDVR0OBBYEFCnFkKslrxHkYb+j/4hhkeYO/pyBMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAQDdr4Ouwo0RSVgrESLFF6QSU2TJ/s +Px+EnWVUXKgWAkD6bho3hO9ynYYKVZ1WKKxmLNA6VpM0ByWtCLCPyA8JWcqdmBzlVPi5RX9ql2+I +aE1KBiY3iAIOtsbWcpnOa3faYjGkVh+uX4132l32iPwa2Z61gfAyuOOI0JzzaqC5mxRZNTZPz/OO +Xl0XrRWV2N2y1RVuAE6zS89mlOTgzbUF2mNXi+WzqtvALhyQRNsaXRik7r4EW5nVcV9VZWRi1aKb +BFmGyGJ353yCRWo9F7/snXUMrqNvWtMvmDb08PUZqxFdyKbjKlhqQgnDvZImZjINXQhVdP+MmNAK +poRq0Tl9 +-----END CERTIFICATE----- + +D-TRUST Root Class 3 CA 2 2009 +============================== +-----BEGIN CERTIFICATE----- +MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQK +DAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTAe +Fw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NThaME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxE +LVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOAD +ER03UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42tSHKXzlA +BF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9RySPocq60vFYJfxLLHLGv +KZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsMlFqVlNpQmvH/pStmMaTJOKDfHR+4CS7z +p+hnUquVH+BGPtikw8paxTGA6Eian5Rp/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUC +AwEAAaOCARowggEWMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ +4PGEMA4GA1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVjdG9y +eS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUyMENBJTIwMiUyMDIw +MDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwQ6BBoD+G +PWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAw +OS5jcmwwDQYJKoZIhvcNAQELBQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm +2H6NMLVwMeniacfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 +o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4KzCUqNQT4YJEV +dT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8PIWmawomDeCTmGCufsYkl4ph +X5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3YJohw1+qRzT65ysCQblrGXnRl11z+o+I= +-----END CERTIFICATE----- + +D-TRUST Root Class 3 CA 2 EV 2009 +================================= +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK +DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw +OTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUwNDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK +DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw +OTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfS +egpnljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM03TP1YtHh +zRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6ZqQTMFexgaDbtCHu39b+T +7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lRp75mpoo6Kr3HGrHhFPC+Oh25z1uxav60 +sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure35 +11H3a6UCAwEAAaOCASQwggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyv +cop9NteaHNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFwOi8v +ZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xhc3MlMjAzJTIwQ0El +MjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRp +b25saXN0MEagRKBChkBodHRwOi8vd3d3LmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xh +c3NfM19jYV8yX2V2XzIwMDkuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+ +PPoeUSbrh/Yp3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 +nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNFCSuGdXzfX2lX +ANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7naxpeG0ILD5EJt/rDiZE4OJudA +NCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqXKVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVv +w9y4AyHqnxbxLFS1 +-----END CERTIFICATE----- + +PSCProcert +========== +-----BEGIN CERTIFICATE----- +MIIJhjCCB26gAwIBAgIBCzANBgkqhkiG9w0BAQsFADCCAR4xPjA8BgNVBAMTNUF1dG9yaWRhZCBk +ZSBDZXJ0aWZpY2FjaW9uIFJhaXogZGVsIEVzdGFkbyBWZW5lem9sYW5vMQswCQYDVQQGEwJWRTEQ +MA4GA1UEBxMHQ2FyYWNhczEZMBcGA1UECBMQRGlzdHJpdG8gQ2FwaXRhbDE2MDQGA1UEChMtU2lz +dGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMUMwQQYDVQQLEzpTdXBl +cmludGVuZGVuY2lhIGRlIFNlcnZpY2lvcyBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMSUw +IwYJKoZIhvcNAQkBFhZhY3JhaXpAc3VzY2VydGUuZ29iLnZlMB4XDTEwMTIyODE2NTEwMFoXDTIw +MTIyNTIzNTk1OVowgdExJjAkBgkqhkiG9w0BCQEWF2NvbnRhY3RvQHByb2NlcnQubmV0LnZlMQ8w +DQYDVQQHEwZDaGFjYW8xEDAOBgNVBAgTB01pcmFuZGExKjAoBgNVBAsTIVByb3ZlZWRvciBkZSBD +ZXJ0aWZpY2Fkb3MgUFJPQ0VSVDE2MDQGA1UEChMtU2lzdGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZp +Y2FjaW9uIEVsZWN0cm9uaWNhMQswCQYDVQQGEwJWRTETMBEGA1UEAxMKUFNDUHJvY2VydDCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANW39KOUM6FGqVVhSQ2oh3NekS1wwQYalNo97BVC +wfWMrmoX8Yqt/ICV6oNEolt6Vc5Pp6XVurgfoCfAUFM+jbnADrgV3NZs+J74BCXfgI8Qhd19L3uA +3VcAZCP4bsm+lU/hdezgfl6VzbHvvnpC2Mks0+saGiKLt38GieU89RLAu9MLmV+QfI4tL3czkkoh +RqipCKzx9hEC2ZUWno0vluYC3XXCFCpa1sl9JcLB/KpnheLsvtF8PPqv1W7/U0HU9TI4seJfxPmO +EO8GqQKJ/+MMbpfg353bIdD0PghpbNjU5Db4g7ayNo+c7zo3Fn2/omnXO1ty0K+qP1xmk6wKImG2 +0qCZyFSTXai20b1dCl53lKItwIKOvMoDKjSuc/HUtQy9vmebVOvh+qBa7Dh+PsHMosdEMXXqP+UH +0quhJZb25uSgXTcYOWEAM11G1ADEtMo88aKjPvM6/2kwLkDd9p+cJsmWN63nOaK/6mnbVSKVUyqU +td+tFjiBdWbjxywbk5yqjKPK2Ww8F22c3HxT4CAnQzb5EuE8XL1mv6JpIzi4mWCZDlZTOpx+FIyw +Bm/xhnaQr/2v/pDGj59/i5IjnOcVdo/Vi5QTcmn7K2FjiO/mpF7moxdqWEfLcU8UC17IAggmosvp +r2uKGcfLFFb14dq12fy/czja+eevbqQ34gcnAgMBAAGjggMXMIIDEzASBgNVHRMBAf8ECDAGAQH/ +AgEBMDcGA1UdEgQwMC6CD3N1c2NlcnRlLmdvYi52ZaAbBgVghl4CAqASDBBSSUYtRy0yMDAwNDAz +Ni0wMB0GA1UdDgQWBBRBDxk4qpl/Qguk1yeYVKIXTC1RVDCCAVAGA1UdIwSCAUcwggFDgBStuyId +xuDSAaj9dlBSk+2YwU2u06GCASakggEiMIIBHjE+MDwGA1UEAxM1QXV0b3JpZGFkIGRlIENlcnRp +ZmljYWNpb24gUmFpeiBkZWwgRXN0YWRvIFZlbmV6b2xhbm8xCzAJBgNVBAYTAlZFMRAwDgYDVQQH +EwdDYXJhY2FzMRkwFwYDVQQIExBEaXN0cml0byBDYXBpdGFsMTYwNAYDVQQKEy1TaXN0ZW1hIE5h +Y2lvbmFsIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExQzBBBgNVBAsTOlN1cGVyaW50ZW5k +ZW5jaWEgZGUgU2VydmljaW9zIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExJTAjBgkqhkiG +9w0BCQEWFmFjcmFpekBzdXNjZXJ0ZS5nb2IudmWCAQowDgYDVR0PAQH/BAQDAgEGME0GA1UdEQRG +MESCDnByb2NlcnQubmV0LnZloBUGBWCGXgIBoAwMClBTQy0wMDAwMDKgGwYFYIZeAgKgEgwQUklG +LUotMzE2MzUzNzMtNzB2BgNVHR8EbzBtMEagRKBChkBodHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52 +ZS9sY3IvQ0VSVElGSUNBRE8tUkFJWi1TSEEzODRDUkxERVIuY3JsMCOgIaAfhh1sZGFwOi8vYWNy +YWl6LnN1c2NlcnRlLmdvYi52ZTA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9v +Y3NwLnN1c2NlcnRlLmdvYi52ZTBBBgNVHSAEOjA4MDYGBmCGXgMBAjAsMCoGCCsGAQUFBwIBFh5o +dHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52ZS9kcGMwDQYJKoZIhvcNAQELBQADggIBACtZ6yKZu4Sq +T96QxtGGcSOeSwORR3C7wJJg7ODU523G0+1ng3dS1fLld6c2suNUvtm7CpsR72H0xpkzmfWvADmN +g7+mvTV+LFwxNG9s2/NkAZiqlCxB3RWGymspThbASfzXg0gTB1GEMVKIu4YXx2sviiCtxQuPcD4q +uxtxj7mkoP3YldmvWb8lK5jpY5MvYB7Eqvh39YtsL+1+LrVPQA3uvFd359m21D+VJzog1eWuq2w1 +n8GhHVnchIHuTQfiSLaeS5UtQbHh6N5+LwUeaO6/u5BlOsju6rEYNxxik6SgMexxbJHmpHmJWhSn +FFAFTKQAVzAswbVhltw+HoSvOULP5dAssSS830DD7X9jSr3hTxJkhpXzsOfIt+FTvZLm8wyWuevo +5pLtp4EJFAv8lXrPj9Y0TzYS3F7RNHXGRoAvlQSMx4bEqCaJqD8Zm4G7UaRKhqsLEQ+xrmNTbSjq +3TNWOByyrYDT13K9mmyZY+gAu0F2BbdbmRiKw7gSXFbPVgx96OLP7bx0R/vu0xdOIk9W/1DzLuY5 +poLWccret9W6aAjtmcz9opLLabid+Qqkpj5PkygqYWwHJgD/ll9ohri4zspV4KuxPX+Y1zMOWj3Y +eMLEYC/HYvBhkdI4sPaeVdtAgAUSM84dkpvRabP/v/GSCmE1P93+hvS84Bpxs2Km +-----END CERTIFICATE----- + +China Internet Network Information Center EV Certificates Root +============================================================== +-----BEGIN CERTIFICATE----- +MIID9zCCAt+gAwIBAgIESJ8AATANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCQ04xMjAwBgNV +BAoMKUNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyMUcwRQYDVQQDDD5D +aGluYSBJbnRlcm5ldCBOZXR3b3JrIEluZm9ybWF0aW9uIENlbnRlciBFViBDZXJ0aWZpY2F0ZXMg +Um9vdDAeFw0xMDA4MzEwNzExMjVaFw0zMDA4MzEwNzExMjVaMIGKMQswCQYDVQQGEwJDTjEyMDAG +A1UECgwpQ2hpbmEgSW50ZXJuZXQgTmV0d29yayBJbmZvcm1hdGlvbiBDZW50ZXIxRzBFBgNVBAMM +PkNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyIEVWIENlcnRpZmljYXRl +cyBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm35z7r07eKpkQ0H1UN+U8i6y +jUqORlTSIRLIOTJCBumD1Z9S7eVnAztUwYyZmczpwA//DdmEEbK40ctb3B75aDFk4Zv6dOtouSCV +98YPjUesWgbdYavi7NifFy2cyjw1l1VxzUOFsUcW9SxTgHbP0wBkvUCZ3czY28Sf1hNfQYOL+Q2H +klY0bBoQCxfVWhyXWIQ8hBouXJE0bhlffxdpxWXvayHG1VA6v2G5BY3vbzQ6sm8UY78WO5upKv23 +KzhmBsUs4qpnHkWnjQRmQvaPK++IIGmPMowUc9orhpFjIpryp9vOiYurXccUwVswah+xt54ugQEC +7c+WXmPbqOY4twIDAQABo2MwYTAfBgNVHSMEGDAWgBR8cks5x8DbYqVPm6oYNJKiyoOCWTAPBgNV +HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUfHJLOcfA22KlT5uqGDSSosqD +glkwDQYJKoZIhvcNAQEFBQADggEBACrDx0M3j92tpLIM7twUbY8opJhJywyA6vPtI2Z1fcXTIWd5 +0XPFtQO3WKwMVC/GVhMPMdoG52U7HW8228gd+f2ABsqjPWYWqJ1MFn3AlUa1UeTiH9fqBk1jjZaM +7+czV0I664zBechNdn3e9rG3geCg+aF4RhcaVpjwTj2rHO3sOdwHSPdj/gauwqRcalsyiMXHM4Ws +ZkJHwlgkmeHlPuV1LI5D1l08eB6olYIpUNHRFrrvwb562bTYzB5MRuF3sTGrvSrIzo9uoV1/A3U0 +5K2JRVRevq4opbs/eHnrc7MKDf2+yfdWrPa37S+bISnHOLaVxATywy39FCqQmbkHzJ8= +-----END CERTIFICATE----- + +Swisscom Root CA 2 +================== +-----BEGIN CERTIFICATE----- +MIIF2TCCA8GgAwIBAgIQHp4o6Ejy5e/DfEoeWhhntjANBgkqhkiG9w0BAQsFADBkMQswCQYDVQQG +EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy +dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMjAeFw0xMTA2MjQwODM4MTRaFw0zMTA2 +MjUwNzM4MTRaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln +aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAyMIIC +IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAlUJOhJ1R5tMJ6HJaI2nbeHCOFvErjw0DzpPM +LgAIe6szjPTpQOYXTKueuEcUMncy3SgM3hhLX3af+Dk7/E6J2HzFZ++r0rk0X2s682Q2zsKwzxNo +ysjL67XiPS4h3+os1OD5cJZM/2pYmLcX5BtS5X4HAB1f2uY+lQS3aYg5oUFgJWFLlTloYhyxCwWJ +wDaCFCE/rtuh/bxvHGCGtlOUSbkrRsVPACu/obvLP+DHVxxX6NZp+MEkUp2IVd3Chy50I9AU/SpH +Wrumnf2U5NGKpV+GY3aFy6//SSj8gO1MedK75MDvAe5QQQg1I3ArqRa0jG6F6bYRzzHdUyYb3y1a +SgJA/MTAtukxGggo5WDDH8SQjhBiYEQN7Aq+VRhxLKX0srwVYv8c474d2h5Xszx+zYIdkeNL6yxS +NLCK/RJOlrDrcH+eOfdmQrGrrFLadkBXeyq96G4DsguAhYidDMfCd7Camlf0uPoTXGiTOmekl9Ab +mbeGMktg2M7v0Ax/lZ9vh0+Hio5fCHyqW/xavqGRn1V9TrALacywlKinh/LTSlDcX3KwFnUey7QY +Ypqwpzmqm59m2I2mbJYV4+by+PGDYmy7Velhk6M99bFXi08jsJvllGov34zflVEpYKELKeRcVVi3 +qPyZ7iVNTA6z00yPhOgpD/0QVAKFyPnlw4vP5w8CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw +HQYDVR0hBBYwFDASBgdghXQBUwIBBgdghXQBUwIBMBIGA1UdEwEB/wQIMAYBAf8CAQcwHQYDVR0O +BBYEFE0mICKJS9PVpAqhb97iEoHF8TwuMB8GA1UdIwQYMBaAFE0mICKJS9PVpAqhb97iEoHF8Twu +MA0GCSqGSIb3DQEBCwUAA4ICAQAyCrKkG8t9voJXiblqf/P0wS4RfbgZPnm3qKhyN2abGu2sEzsO +v2LwnN+ee6FTSA5BesogpxcbtnjsQJHzQq0Qw1zv/2BZf82Fo4s9SBwlAjxnffUy6S8w5X2lejjQ +82YqZh6NM4OKb3xuqFp1mrjX2lhIREeoTPpMSQpKwhI3qEAMw8jh0FcNlzKVxzqfl9NX+Ave5XLz +o9v/tdhZsnPdTSpxsrpJ9csc1fV5yJmz/MFMdOO0vSk3FQQoHt5FRnDsr7p4DooqzgB53MBfGWcs +a0vvaGgLQ+OswWIJ76bdZWGgr4RVSJFSHMYlkSrQwSIjYVmvRRGFHQEkNI/Ps/8XciATwoCqISxx +OQ7Qj1zB09GOInJGTB2Wrk9xseEFKZZZ9LuedT3PDTcNYtsmjGOpI99nBjx8Oto0QuFmtEYE3saW +mA9LSHokMnWRn6z3aOkquVVlzl1h0ydw2Df+n7mvoC5Wt6NlUe07qxS/TFED6F+KBZvuim6c779o ++sjaC+NCydAXFJy3SuCvkychVSa1ZC+N8f+mQAWFBVzKBxlcCxMoTFh/wqXvRdpg065lYZ1Tg3TC +rvJcwhbtkj6EPnNgiLx29CzP0H1907he0ZESEOnN3col49XtmS++dYFLJPlFRpTJKSFTnCZFqhMX +5OfNeOI5wSsSnqaeG8XmDtkx2Q== +-----END CERTIFICATE----- + +Swisscom Root EV CA 2 +===================== +-----BEGIN CERTIFICATE----- +MIIF4DCCA8igAwIBAgIRAPL6ZOJ0Y9ON/RAdBB92ylgwDQYJKoZIhvcNAQELBQAwZzELMAkGA1UE +BhMCY2gxETAPBgNVBAoTCFN3aXNzY29tMSUwIwYDVQQLExxEaWdpdGFsIENlcnRpZmljYXRlIFNl +cnZpY2VzMR4wHAYDVQQDExVTd2lzc2NvbSBSb290IEVWIENBIDIwHhcNMTEwNjI0MDk0NTA4WhcN +MzEwNjI1MDg0NTA4WjBnMQswCQYDVQQGEwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsT +HERpZ2l0YWwgQ2VydGlmaWNhdGUgU2VydmljZXMxHjAcBgNVBAMTFVN3aXNzY29tIFJvb3QgRVYg +Q0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMT3HS9X6lds93BdY7BxUglgRCgz +o3pOCvrY6myLURYaVa5UJsTMRQdBTxB5f3HSek4/OE6zAMaVylvNwSqD1ycfMQ4jFrclyxy0uYAy +Xhqdk/HoPGAsp15XGVhRXrwsVgu42O+LgrQ8uMIkqBPHoCE2G3pXKSinLr9xJZDzRINpUKTk4Rti +GZQJo/PDvO/0vezbE53PnUgJUmfANykRHvvSEaeFGHR55E+FFOtSN+KxRdjMDUN/rhPSays/p8Li +qG12W0OfvrSdsyaGOx9/5fLoZigWJdBLlzin5M8J0TbDC77aO0RYjb7xnglrPvMyxyuHxuxenPaH +Za0zKcQvidm5y8kDnftslFGXEBuGCxobP/YCfnvUxVFkKJ3106yDgYjTdLRZncHrYTNaRdHLOdAG +alNgHa/2+2m8atwBz735j9m9W8E6X47aD0upm50qKGsaCnw8qyIL5XctcfaCNYGu+HuB5ur+rPQa +m3Rc6I8k9l2dRsQs0h4rIWqDJ2dVSqTjyDKXZpBy2uPUZC5f46Fq9mDU5zXNysRojddxyNMkM3Ox +bPlq4SjbX8Y96L5V5jcb7STZDxmPX2MYWFCBUWVv8p9+agTnNCRxunZLWB4ZvRVgRaoMEkABnRDi +xzgHcgplwLa7JSnaFp6LNYth7eVxV4O1PHGf40+/fh6Bn0GXAgMBAAGjgYYwgYMwDgYDVR0PAQH/ +BAQDAgGGMB0GA1UdIQQWMBQwEgYHYIV0AVMCAgYHYIV0AVMCAjASBgNVHRMBAf8ECDAGAQH/AgED +MB0GA1UdDgQWBBRF2aWBbj2ITY1x0kbBbkUe88SAnTAfBgNVHSMEGDAWgBRF2aWBbj2ITY1x0kbB +bkUe88SAnTANBgkqhkiG9w0BAQsFAAOCAgEAlDpzBp9SSzBc1P6xXCX5145v9Ydkn+0UjrgEjihL +j6p7jjm02Vj2e6E1CqGdivdj5eu9OYLU43otb98TPLr+flaYC/NUn81ETm484T4VvwYmneTwkLbU +wp4wLh/vx3rEUMfqe9pQy3omywC0Wqu1kx+AiYQElY2NfwmTv9SoqORjbdlk5LgpWgi/UOGED1V7 +XwgiG/W9mR4U9s70WBCCswo9GcG/W6uqmdjyMb3lOGbcWAXH7WMaLgqXfIeTK7KK4/HsGOV1timH +59yLGn602MnTihdsfSlEvoqq9X46Lmgxk7lq2prg2+kupYTNHAq4Sgj5nPFhJpiTt3tm7JFe3VE/ +23MPrQRYCd0EApUKPtN236YQHoA96M2kZNEzx5LH4k5E4wnJTsJdhw4Snr8PyQUQ3nqjsTzyP6Wq +J3mtMX0f/fwZacXduT98zca0wjAefm6S139hdlqP65VNvBFuIXxZN5nQBrz5Bm0yFqXZaajh3DyA +HmBR3NdUIR7KYndP+tiPsys6DXhyyWhBWkdKwqPrGtcKqzwyVcgKEZzfdNbwQBUdyLmPtTbFr/gi +uMod89a2GQ+fYWVq6nTIfI/DT11lgh/ZDYnadXL77/FHZxOzyNEZiCcmmpl5fx7kLD977vHeTYuW +l8PVP3wbI+2ksx0WckNLIOFZfsLorSa/ovc= +-----END CERTIFICATE----- + +CA Disig Root R1 +================ +-----BEGIN CERTIFICATE----- +MIIFaTCCA1GgAwIBAgIJAMMDmu5QkG4oMA0GCSqGSIb3DQEBBQUAMFIxCzAJBgNVBAYTAlNLMRMw +EQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMuMRkwFwYDVQQDExBDQSBEaXNp +ZyBSb290IFIxMB4XDTEyMDcxOTA5MDY1NloXDTQyMDcxOTA5MDY1NlowUjELMAkGA1UEBhMCU0sx +EzARBgNVBAcTCkJyYXRpc2xhdmExEzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERp +c2lnIFJvb3QgUjEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCqw3j33Jijp1pedxiy +3QRkD2P9m5YJgNXoqqXinCaUOuiZc4yd39ffg/N4T0Dhf9Kn0uXKE5Pn7cZ3Xza1lK/oOI7bm+V8 +u8yN63Vz4STN5qctGS7Y1oprFOsIYgrY3LMATcMjfF9DCCMyEtztDK3AfQ+lekLZWnDZv6fXARz2 +m6uOt0qGeKAeVjGu74IKgEH3G8muqzIm1Cxr7X1r5OJeIgpFy4QxTaz+29FHuvlglzmxZcfe+5nk +CiKxLU3lSCZpq+Kq8/v8kiky6bM+TR8noc2OuRf7JT7JbvN32g0S9l3HuzYQ1VTW8+DiR0jm3hTa +YVKvJrT1cU/J19IG32PK/yHoWQbgCNWEFVP3Q+V8xaCJmGtzxmjOZd69fwX3se72V6FglcXM6pM6 +vpmumwKjrckWtc7dXpl4fho5frLABaTAgqWjR56M6ly2vGfb5ipN0gTco65F97yLnByn1tUD3AjL +LhbKXEAz6GfDLuemROoRRRw1ZS0eRWEkG4IupZ0zXWX4Qfkuy5Q/H6MMMSRE7cderVC6xkGbrPAX +ZcD4XW9boAo0PO7X6oifmPmvTiT6l7Jkdtqr9O3jw2Dv1fkCyC2fg69naQanMVXVz0tv/wQFx1is +XxYb5dKj6zHbHzMVTdDypVP1y+E9Tmgt2BLdqvLmTZtJ5cUoobqwWsagtQIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUiQq0OJMa5qvum5EY+fU8PjXQ +04IwDQYJKoZIhvcNAQEFBQADggIBADKL9p1Kyb4U5YysOMo6CdQbzoaz3evUuii+Eq5FLAR0rBNR +xVgYZk2C2tXck8An4b58n1KeElb21Zyp9HWc+jcSjxyT7Ff+Bw+r1RL3D65hXlaASfX8MPWbTx9B +LxyE04nH4toCdu0Jz2zBuByDHBb6lM19oMgY0sidbvW9adRtPTXoHqJPYNcHKfyyo6SdbhWSVhlM +CrDpfNIZTUJG7L399ldb3Zh+pE3McgODWF3vkzpBemOqfDqo9ayk0d2iLbYq/J8BjuIQscTK5Gfb +VSUZP/3oNn6z4eGBrxEWi1CXYBmCAMBrTXO40RMHPuq2MU/wQppt4hF05ZSsjYSVPCGvxdpHyN85 +YmLLW1AL14FABZyb7bq2ix4Eb5YgOe2kfSnbSM6C3NQCjR0EMVrHS/BsYVLXtFHCgWzN4funodKS +ds+xDzdYpPJScWc/DIh4gInByLUfkmO+p3qKViwaqKactV2zY9ATIKHrkWzQjX2v3wvkF7mGnjix +lAxYjOBVqjtjbZqJYLhkKpLGN/R+Q0O3c+gB53+XD9fyexn9GtePyfqFa3qdnom2piiZk4hA9z7N +UaPK6u95RyG1/jLix8NRb76AdPCkwzryT+lf3xkK8jsTQ6wxpLPn6/wY1gGp8yqPNg7rtLG8t0zJ +a7+h89n07eLw4+1knj0vllJPgFOL +-----END CERTIFICATE----- + +CA Disig Root R2 +================ +-----BEGIN CERTIFICATE----- +MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNVBAYTAlNLMRMw +EQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMuMRkwFwYDVQQDExBDQSBEaXNp +ZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQyMDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sx +EzARBgNVBAcTCkJyYXRpc2xhdmExEzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERp +c2lnIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbC +w3OeNcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNHPWSb6Wia +xswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3Ix2ymrdMxp7zo5eFm1tL7 +A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbeQTg06ov80egEFGEtQX6sx3dOy1FU+16S +GBsEWmjGycT6txOgmLcRK7fWV8x8nhfRyyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqV +g8NTEQxzHQuyRpDRQjrOQG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa +5Beny912H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJQfYE +koopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUDi/ZnWejBBhG93c+A +Ak9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORsnLMOPReisjQS1n6yqEm70XooQL6i +Fh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5u +Qu0wDQYJKoZIhvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM +tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqfGopTpti72TVV +sRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkblvdhuDvEK7Z4bLQjb/D907Je +dR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka+elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W8 +1k/BfDxujRNt+3vrMNDcTa/F1balTFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjx +mHHEt38OFdAlab0inSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01 +utI3gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18DrG5gPcFw0 +sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3OszMOl6W8KjptlwlCFtaOg +UxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8xL4ysEr3vQCj8KWefshNPZiTEUxnpHikV +7+ZtsH8tZ/3zbBt1RqPlShfppNcL +-----END CERTIFICATE----- + +ACCVRAIZ1 +========= +-----BEGIN CERTIFICATE----- +MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UEAwwJQUNDVlJB +SVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQswCQYDVQQGEwJFUzAeFw0xMTA1 +MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQBgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwH +UEtJQUNDVjENMAsGA1UECgwEQUNDVjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQCbqau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gM +jmoYHtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWoG2ioPej0 +RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpAlHPrzg5XPAOBOp0KoVdD +aaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhrIA8wKFSVf+DuzgpmndFALW4ir50awQUZ +0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDG +WuzndN9wrqODJerWx5eHk6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs7 +8yM2x/474KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMOm3WR +5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpacXpkatcnYGMN285J +9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPluUsXQA+xtrn13k/c4LOsOxFwYIRK +Q26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYIKwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRw +Oi8vd3d3LmFjY3YuZXMvZmlsZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEu +Y3J0MB8GCCsGAQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 +VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeTVfZW6oHlNsyM +Hj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIGCCsGAQUFBwICMIIBFB6CARAA +QQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUAcgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBh +AO0AegAgAGQAZQAgAGwAYQAgAEEAQwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUA +YwBuAG8AbABvAGcA7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBj +AHQAcgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAAQwBQAFMA +IABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUAczAwBggrBgEFBQcCARYk +aHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2MuaHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0 +dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRtaW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2 +MV9kZXIuY3JsMA4GA1UdDwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZI +hvcNAQEFBQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdpD70E +R9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gUJyCpZET/LtZ1qmxN +YEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+mAM/EKXMRNt6GGT6d7hmKG9Ww7Y49 +nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepDvV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJ +TS+xJlsndQAJxGJ3KQhfnlmstn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3 +sCPdK6jT2iWH7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h +I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szAh1xA2syVP1Xg +Nce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xFd3+YJ5oyXSrjhO7FmGYvliAd +3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2HpPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3p +EfbRD0tVNEYqi4Y7 +-----END CERTIFICATE----- + +TWCA Global Root CA +=================== +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcxEjAQBgNVBAoT +CVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMTVFdDQSBHbG9iYWwgUm9vdCBD +QTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQK +EwlUQUlXQU4tQ0ExEDAOBgNVBAsTB1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3Qg +Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2C +nJfF10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz0ALfUPZV +r2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfChMBwqoJimFb3u/Rk28OKR +Q4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbHzIh1HrtsBv+baz4X7GGqcXzGHaL3SekV +tTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1W +KKD+u4ZqyPpcC1jcxkt2yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99 +sy2sbZCilaLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYPoA/p +yJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQABDzfuBSO6N+pjWxn +kjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcEqYSjMq+u7msXi7Kx/mzhkIyIqJdI +zshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMC +AQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6g +cFGn90xHNcgL1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn +LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WFH6vPNOw/KP4M +8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNoRI2T9GRwoD2dKAXDOXC4Ynsg +/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlg +lPx4mI88k1HtQJAH32RjJMtOcQWh15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryP +A9gK8kxkRr05YuWW6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3m +i4TWnsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5jwa19hAM8 +EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWzaGHQRiapIVJpLesux+t3 +zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmyKwbQBM0= +-----END CERTIFICATE----- + +TeliaSonera Root CA v1 +====================== +-----BEGIN CERTIFICATE----- +MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAwNzEUMBIGA1UE +CgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJvb3QgQ0EgdjEwHhcNMDcxMDE4 +MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYDVQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwW +VGVsaWFTb25lcmEgUm9vdCBDQSB2MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+ +6yfwIaPzaSZVfp3FVRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA +3GV17CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+XZ75Ljo1k +B1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+/jXh7VB7qTCNGdMJjmhn +Xb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxH +oLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkmdtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3 +F0fUTPHSiXk+TT2YqGHeOh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJ +oWjiUIMusDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4pgd7 +gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fsslESl1MpWtTwEhDc +TwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQarMCpgKIv7NHfirZ1fpoeDVNAgMB +AAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qW +DNXr+nuqF+gTEjANBgkqhkiG9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNm +zqjMDfz1mgbldxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx +0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1TjTQpgcmLNkQfW +pb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBedY2gea+zDTYa4EzAvXUYNR0PV +G6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpc +c41teyWRyu5FrgZLAMzTsVlQ2jqIOylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOT +JsjrDNYmiLbAJM+7vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2 +qReWt88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcnHL/EVlP6 +Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVxSK236thZiNSQvxaz2ems +WWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= +-----END CERTIFICATE----- + +E-Tugra Certification Authority +=============================== +-----BEGIN CERTIFICATE----- +MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNVBAYTAlRSMQ8w +DQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamls +ZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN +ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMw +NTEyMDk0OFoXDTIzMDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmEx +QDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxl +cmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQD +DB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEA4vU/kwVRHoViVF56C/UYB4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vd +hQd2h8y/L5VMzH2nPbxHD5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5K +CKpbknSFQ9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEoq1+g +ElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3Dk14opz8n8Y4e0ypQ +BaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcHfC425lAcP9tDJMW/hkd5s3kc91r0 +E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsutdEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gz +rt48Ue7LE3wBf4QOXVGUnhMMti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAq +jqFGOjGY5RH8zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn +rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUXU8u3Zg5mTPj5 +dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6Jyr+zE7S6E5UMA8GA1UdEwEB +/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEG +MA0GCSqGSIb3DQEBCwUAA4ICAQAFNzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAK +kEh47U6YA5n+KGCRHTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jO +XKqYGwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c77NCR807 +VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3+GbHeJAAFS6LrVE1Uweo +a2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WKvJUawSg5TB9D0pH0clmKuVb8P7Sd2nCc +dlqMQ1DujjByTd//SffGqWfZbawCEeI6FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEV +KV0jq9BgoRJP3vQXzTLlyb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gT +Dx4JnW2PAJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpDy4Q0 +8ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8dNL/+I5c30jn6PQ0G +C7TbO6Orb1wdtn7os4I07QZcJA== +-----END CERTIFICATE----- + +T-TeleSec GlobalRoot Class 2 +============================ +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM +IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU +cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgx +MDAxMTA0MDE0WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz +dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD +ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUdAqSzm1nzHoqvNK38DcLZ +SBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiCFoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/F +vudocP05l03Sx5iRUKrERLMjfTlH6VJi1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx970 +2cu+fjOlbpSD8DT6IavqjnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGV +WOHAD3bZwI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/WSA2AHmgoCJrjNXy +YdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhyNsZt+U2e+iKo4YFWz827n+qrkRk4 +r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPACuvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNf +vNoBYimipidx5joifsFvHZVwIEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR +3p1m0IvVVGb6g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN +9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlPBSeOE6Fuwg== +-----END CERTIFICATE----- + +Atos TrustedRoot 2011 +===================== +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UEAwwVQXRvcyBU +cnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0xMTA3MDcxNDU4 +MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMMFUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsG +A1UECgwEQXRvczELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCV +hTuXbyo7LjvPpvMpNb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr +54rMVD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+SZFhyBH+ +DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ4J7sVaE3IqKHBAUsR320 +HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0Lcp2AMBYHlT8oDv3FdU9T1nSatCQujgKR +z3bFmx5VdJx4IbHwLfELn8LVlhgf8FQieowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7R +l+lwrrw7GWzbITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZ +bNshMBgGA1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB +CwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8jvZfza1zv7v1Apt+h +k6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kPDpFrdRbhIfzYJsdHt6bPWHJxfrrh +TZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pcmaHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a9 +61qn8FYiqTxlVMYVqL2Gns2Dlmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G +3mB/ufNPRJLvKrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed +-----END CERTIFICATE----- + +QuoVadis Root CA 1 G3 +===================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQELBQAwSDELMAkG +A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv +b3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJN +MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEg +RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakE +PBtVwedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWerNrwU8lm +PNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF34168Xfuw6cwI2H44g4hWf6 +Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh4Pw5qlPafX7PGglTvF0FBM+hSo+LdoIN +ofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXpUhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/l +g6AnhF4EwfWQvTA9xO+oabw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV +7qJZjqlc3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/GKubX +9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSthfbZxbGL0eUQMk1f +iyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KOTk0k+17kBL5yG6YnLUlamXrXXAkg +t3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOtzCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZI +hvcNAQELBQADggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC +MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2cDMT/uFPpiN3 +GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUNqXsCHKnQO18LwIE6PWThv6ct +Tr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP ++V04ikkwj+3x6xn0dxoxGE1nVGwvb2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh +3jRJjehZrJ3ydlo28hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fa +wx/kNSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNjZgKAvQU6 +O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhpq1467HxpvMc7hU6eFbm0 +FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFtnh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOV +hMJKzRwuJIczYOXD +-----END CERTIFICATE----- + +QuoVadis Root CA 2 G3 +===================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQELBQAwSDELMAkG +A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv +b3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJN +MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIg +RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFh +ZiFfqq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMWn4rjyduY +NM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ymc5GQYaYDFCDy54ejiK2t +oIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+O7q414AB+6XrW7PFXmAqMaCvN+ggOp+o +MiwMzAkd056OXbxMmO7FGmh77FOm6RQ1o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+l +V0POKa2Mq1W/xPtbAd0jIaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZo +L1NesNKqIcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz8eQQ +sSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43ehvNURG3YBZwjgQQvD +6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l7ZizlWNof/k19N+IxWA1ksB8aRxh +lRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALGcC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZI +hvcNAQELBQADggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66 +AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RCroijQ1h5fq7K +pVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0GaW/ZZGYjeVYg3UQt4XAoeo0L9 +x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4nlv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgz +dWqTHBLmYF5vHX/JHyPLhGGfHoJE+V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6X +U/IyAgkwo1jwDQHVcsaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+Nw +mNtddbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNgKCLjsZWD +zYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeMHVOyToV7BjjHLPj4sHKN +JeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4WSr2Rz0ZiC3oheGe7IUIarFsNMkd7Egr +O3jtZsSOeWmD3n+M +-----END CERTIFICATE----- + +QuoVadis Root CA 3 G3 +===================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQELBQAwSDELMAkG +A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv +b3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJN +MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMg +RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286 +IxSR/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNuFoM7pmRL +Mon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXRU7Ox7sWTaYI+FrUoRqHe +6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+cra1AdHkrAj80//ogaX3T7mH1urPnMNA3 +I4ZyYUUpSFlob3emLoG+B01vr87ERRORFHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3U +VDmrJqMz6nWB2i3ND0/kA9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f7 +5li59wzweyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634RylsSqi +Md5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBpVzgeAVuNVejH38DM +dyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0QA4XN8f+MFrXBsj6IbGB/kE+V9/Yt +rQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZI +hvcNAQELBQADggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px +KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnIFUBhynLWcKzS +t/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5WvvoxXqA/4Ti2Tk08HS6IT7SdEQ +TXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFgu/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9Du +DcpmvJRPpq3t/O5jrFc/ZSXPsoaP0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGib +Ih6BJpsQBJFxwAYf3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmD +hPbl8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+DhcI00iX +0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HNPlopNLk9hM6xZdRZkZFW +dSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ywaZWWDYWGWVjUTR939+J399roD1B0y2 +PpxxVJkES/1Y+Zj0 +-----END CERTIFICATE----- + +DigiCert Assured ID Root G2 +=========================== +-----BEGIN CERTIFICATE----- +MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw +IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgw +MTE1MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL +ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSAn61UQbVH +35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4HteccbiJVMWWXvdMX0h5i89vq +bFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9HpEgjAALAcKxHad3A2m67OeYfcgnDmCXRw +VWmvo2ifv922ebPynXApVfSr/5Vh88lAbx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OP +YLfykqGxvYmJHzDNw6YuYjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+Rn +lTGNAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTO +w0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPIQW5pJ6d1Ee88hjZv +0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I0jJmwYrA8y8678Dj1JGG0VDjA9tz +d29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4GnilmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAW +hsI6yLETcDbYz+70CjTVW0z9B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0M +jomZmWzwPDCvON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo +IhNzbM8m9Yop5w== +-----END CERTIFICATE----- + +DigiCert Assured ID Root G3 +=========================== +-----BEGIN CERTIFICATE----- +MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYD +VQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1 +MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQ +BgcqhkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJfZn4f5dwb +RXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17QRSAPWXYQ1qAk8C3eNvJs +KTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgF +UaFNN6KDec6NHSrkhDAKBggqhkjOPQQDAwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5Fy +YZ5eEJJZVrmDxxDnOOlYJjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy +1vUhZscv6pZjamVFkpUBtA== +-----END CERTIFICATE----- + +DigiCert Global Root G2 +======================= +-----BEGIN CERTIFICATE----- +MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw +HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUx +MjAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 +dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI2/Ou8jqJ +kTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx1x7e/dfgy5SDN67sH0NO +3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQq2EGnI/yuum06ZIya7XzV+hdG82MHauV +BJVJ8zUtluNJbd134/tJS7SsVQepj5WztCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyM +UNGPHgm+F6HmIcr9g+UQvIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQAB +o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV5uNu +5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY1Yl9PMWLSn/pvtsr +F9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4NeF22d+mQrvHRAiGfzZ0JFrabA0U +WTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NGFdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBH +QRFXGU7Aj64GxJUTFy8bJZ918rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/ +iyK5S9kJRaTepLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl +MrY= +-----END CERTIFICATE----- + +DigiCert Global Root G3 +======================= +-----BEGIN CERTIFICATE----- +MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAwHgYD +VQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAw +MDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5k +aWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0C +AQYFK4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FGfp4tn+6O +YwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPOZ9wj/wMco+I+o0IwQDAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNp +Yim8S8YwCgYIKoZIzj0EAwMDaAAwZQIxAK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y +3maTD/HMsQmP3Wyr+mt/oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34 +VOKa5Vt8sycX +-----END CERTIFICATE----- + +DigiCert Trusted Root G4 +======================== +-----BEGIN CERTIFICATE----- +MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBiMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEw +HwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1 +MTIwMDAwWjBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0G +CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3yithZwuEp +pz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1Ifxp4VpX6+n6lXFllVcq9o +k3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDVySAdYyktzuxeTsiT+CFhmzTrBcZe7Fsa +vOvJz82sNEBfsXpm7nfISKhmV1efVFiODCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGY +QJB5w3jHtrHEtWoYOAMQjdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6 +MUSaM0C/CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCiEhtm +mnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADMfRyVw4/3IbKyEbe7 +f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QYuKZ3AeEPlAwhHbJUKSWJbOUOUlFH +dL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXKchYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8 +oR7FwI+isX4KJpn15GkvmB0t9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud +DwEB/wQEAwIBhjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD +ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2SV1EY+CtnJYY +ZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd+SeuMIW59mdNOj6PWTkiU0Tr +yF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWcfFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy +7zBZLq7gcfJW5GqXb5JQbZaNaHqasjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iah +ixTXTBmyUEFxPT9NcCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN +5r5N0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie4u1Ki7wb +/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mIr/OSmbaz5mEP0oUA51Aa +5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tK +G48BtieVU+i2iW1bvGjUI+iLUaJW+fCmgKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP +82Z+ +-----END CERTIFICATE----- + +WoSign +====== +-----BEGIN CERTIFICATE----- +MIIFdjCCA16gAwIBAgIQXmjWEXGUY1BWAGjzPsnFkTANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQG +EwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxKjAoBgNVBAMTIUNlcnRpZmljYXRpb24g +QXV0aG9yaXR5IG9mIFdvU2lnbjAeFw0wOTA4MDgwMTAwMDFaFw0zOTA4MDgwMTAwMDFaMFUxCzAJ +BgNVBAYTAkNOMRowGAYDVQQKExFXb1NpZ24gQ0EgTGltaXRlZDEqMCgGA1UEAxMhQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgb2YgV29TaWduMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA +vcqNrLiRFVaXe2tcesLea9mhsMMQI/qnobLMMfo+2aYpbxY94Gv4uEBf2zmoAHqLoE1UfcIiePyO +CbiohdfMlZdLdNiefvAA5A6JrkkoRBoQmTIPJYhTpA2zDxIIFgsDcSccf+Hb0v1naMQFXQoOXXDX +2JegvFNBmpGN9J42Znp+VsGQX+axaCA2pIwkLCxHC1l2ZjC1vt7tj/id07sBMOby8w7gLJKA84X5 +KIq0VC6a7fd2/BVoFutKbOsuEo/Uz/4Mx1wdC34FMr5esAkqQtXJTpCzWQ27en7N1QhatH/YHGkR ++ScPewavVIMYe+HdVHpRaG53/Ma/UkpmRqGyZxq7o093oL5d//xWC0Nyd5DKnvnyOfUNqfTq1+ez +EC8wQjchzDBwyYaYD8xYTYO7feUapTeNtqwylwA6Y3EkHp43xP901DfA4v6IRmAR3Qg/UDaruHqk +lWJqbrDKaiFaafPz+x1wOZXzp26mgYmhiMU7ccqjUu6Du/2gd/Tkb+dC221KmYo0SLwX3OSACCK2 +8jHAPwQ+658geda4BmRkAjHXqc1S+4RFaQkAKtxVi8QGRkvASh0JWzko/amrzgD5LkhLJuYwTKVY +yrREgk/nkR4zw7CT/xH8gdLKH3Ep3XZPkiWvHYG3Dy+MwwbMLyejSuQOmbp8HkUff6oZRZb9/D0C +AwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFOFmzw7R +8bNLtwYgFP6HEtX2/vs+MA0GCSqGSIb3DQEBBQUAA4ICAQCoy3JAsnbBfnv8rWTjMnvMPLZdRtP1 +LOJwXcgu2AZ9mNELIaCJWSQBnfmvCX0KI4I01fx8cpm5o9dU9OpScA7F9dY74ToJMuYhOZO9sxXq +T2r09Ys/L3yNWC7F4TmgPsc9SnOeQHrAK2GpZ8nzJLmzbVUsWh2eJXLOC62qx1ViC777Y7NhRCOj +y+EaDveaBk3e1CNOIZZbOVtXHS9dCF4Jef98l7VNg64N1uajeeAz0JmWAjCnPv/So0M/BVoG6kQC +2nz4SNAzqfkHx5Xh9T71XXG68pWpdIhhWeO/yloTunK0jF02h+mmxTwTv97QRCbut+wucPrXnbes +5cVAWubXbHssw1abR80LzvobtCHXt2a49CUwi1wNuepnsvRtrtWhnk/Yn+knArAdBtaP4/tIEp9/ +EaEQPkxROpaw0RPxx9gmrjrKkcRpnd8BKWRRb2jaFOwIQZeQjdCygPLPwj2/kWjFgGcexGATVdVh +mVd8upUPYUk6ynW8yQqTP2cOEvIo4jEbwFcW3wh8GcF+Dx+FHgo2fFt+J7x6v+Db9NpSvd4MVHAx +kUOVyLzwPt0JfjBkUO1/AaQzZ01oT74V77D2AhGiGxMlOtzCWfHjXEa7ZywCRuoeSKbmW9m1vFGi +kpbbqsY3Iqb+zCB0oy2pLmvLwIIRIbWTee5Ehr7XHuQe+w== +-----END CERTIFICATE----- + +WoSign China +============ +-----BEGIN CERTIFICATE----- +MIIFWDCCA0CgAwIBAgIQUHBrzdgT/BtOOzNy0hFIjTANBgkqhkiG9w0BAQsFADBGMQswCQYDVQQG +EwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxGzAZBgNVBAMMEkNBIOayg+mAmuagueiv +geS5pjAeFw0wOTA4MDgwMTAwMDFaFw0zOTA4MDgwMTAwMDFaMEYxCzAJBgNVBAYTAkNOMRowGAYD +VQQKExFXb1NpZ24gQ0EgTGltaXRlZDEbMBkGA1UEAwwSQ0Eg5rKD6YCa5qC56K+B5LmmMIICIjAN +BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0EkhHiX8h8EqwqzbdoYGTufQdDTc7WU1/FDWiD+k +8H/rD195L4mx/bxjWDeTmzj4t1up+thxx7S8gJeNbEvxUNUqKaqoGXqW5pWOdO2XCld19AXbbQs5 +uQF/qvbW2mzmBeCkTVL829B0txGMe41P/4eDrv8FAxNXUDf+jJZSEExfv5RxadmWPgxDT74wwJ85 +dE8GRV2j1lY5aAfMh09Qd5Nx2UQIsYo06Yms25tO4dnkUkWMLhQfkWsZHWgpLFbE4h4TV2TwYeO5 +Ed+w4VegG63XX9Gv2ystP9Bojg/qnw+LNVgbExz03jWhCl3W6t8Sb8D7aQdGctyB9gQjF+BNdeFy +b7Ao65vh4YOhn0pdr8yb+gIgthhid5E7o9Vlrdx8kHccREGkSovrlXLp9glk3Kgtn3R46MGiCWOc +76DbT52VqyBPt7D3h1ymoOQ3OMdc4zUPLK2jgKLsLl3Az+2LBcLmc272idX10kaO6m1jGx6KyX2m ++Jzr5dVjhU1zZmkR/sgO9MHHZklTfuQZa/HpelmjbX7FF+Ynxu8b22/8DU0GAbQOXDBGVWCvOGU6 +yke6rCzMRh+yRpY/8+0mBe53oWprfi1tWFxK1I5nuPHa1UaKJ/kR8slC/k7e3x9cxKSGhxYzoacX +GKUN5AXlK8IrC6KVkLn9YDxOiT7nnO4fuwECAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFOBNv9ybQV0T6GTwp+kVpOGBwboxMA0GCSqGSIb3DQEBCwUA +A4ICAQBqinA4WbbaixjIvirTthnVZil6Xc1bL3McJk6jfW+rtylNpumlEYOnOXOvEESS5iVdT2H6 +yAa+Tkvv/vMx/sZ8cApBWNromUuWyXi8mHwCKe0JgOYKOoICKuLJL8hWGSbueBwj/feTZU7n85iY +r83d2Z5AiDEoOqsuC7CsDCT6eiaY8xJhEPRdF/d+4niXVOKM6Cm6jBAyvd0zaziGfjk9DgNyp115 +j0WKWa5bIW4xRtVZjc8VX90xJc/bYNaBRHIpAlf2ltTW/+op2znFuCyKGo3Oy+dCMYYFaA6eFN0A +kLppRQjbbpCBhqcqBT/mhDn4t/lXX0ykeVoQDF7Va/81XwVRHmyjdanPUIPTfPRm94KNPQx96N97 +qA4bLJyuQHCH2u2nFoJavjVsIE4iYdm8UXrNemHcSxH5/mc0zy4EZmFcV5cjjPOGG0jfKq+nwf/Y +jj4Du9gqsPoUJbJRa4ZDhS4HIxaAjUz7tGM7zMN07RujHv41D198HRaG9Q7DlfEvr10lO1Hm13ZB +ONFLAzkopR6RctR9q5czxNM+4Gm2KHmgCY0c0f9BckgG/Jou5yD5m6Leie2uPAmvylezkolwQOQv +T8Jwg0DXJCxr5wkf09XHwQj02w47HAcLQxGEIYbpgNR12KvxAmLBsX5VYc8T1yaw15zLKYs4SgsO +kI26oQ== +-----END CERTIFICATE----- + +USERTrust RSA Certification Authority +===================================== +-----BEGIN CERTIFICATE----- +MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCBiDELMAkGA1UE +BhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQK +ExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UE +BhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQK +ExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCAEmUXNg7D2wiz +0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2j +Y0K2dvKpOyuR+OJv0OwWIJAJPuLodMkYtJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFn +RghRy4YUVD+8M/5+bJz/Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O ++T23LLb2VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT79uq +/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6c0Plfg6lZrEpfDKE +Y1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmTYo61Zs8liM2EuLE/pDkP2QKe6xJM +lXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97lc6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8 +yexDJtC/QV9AqURE9JnnV4eeUB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+ +eLf8ZxXhyVeEHg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd +BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF +MAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPFUp/L+M+ZBn8b2kMVn54CVVeW +FPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KOVWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ +7l8wXEskEVX/JJpuXior7gtNn3/3ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQ +Eg9zKC7F4iRO/Fjs8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM +8WcRiQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYzeSf7dNXGi +FSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZXHlKYC6SQK5MNyosycdi +yA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9c +J2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRBVXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGw +sAvgnEzDHNb842m1R0aBL6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gx +Q+6IHdfGjjxDah2nGN59PRbxYvnKkKj9 +-----END CERTIFICATE----- + +USERTrust ECC Certification Authority +===================================== +-----BEGIN CERTIFICATE----- +MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDELMAkGA1UEBhMC +VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU +aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMC +VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU +aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqfloI+d61SRvU8Za2EurxtW2 +0eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinngo4N+LZfQYcTxmdwlkWOrfzCjtHDix6Ez +nPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0GA1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNV +HQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBB +HU6+4WMBzzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbWRNZu +9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= +-----END CERTIFICATE----- +GlobalSign ECC Root CA - R4 +=========================== +-----BEGIN CERTIFICATE----- +MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEkMCIGA1UECxMb +R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD +EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb +R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD +EwpHbG9iYWxTaWduMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprl +OQcJFspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAwDgYDVR0P +AQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61FuOJAf/sKbvu+M8k8o4TV +MAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGXkPoUVy0D7O48027KqGx2vKLeuwIgJ6iF +JzWbVsaj8kfSt24bAgAXqmemFZHe+pTsewv4n4Q= +-----END CERTIFICATE----- + +GlobalSign ECC Root CA - R5 +=========================== +-----BEGIN CERTIFICATE----- +MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEkMCIGA1UECxMb +R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD +EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb +R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD +EwpHbG9iYWxTaWduMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6 +SFkc8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8kehOvRnkmS +h5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd +BgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYIKoZIzj0EAwMDaAAwZQIxAOVpEslu28Yx +uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7 +yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3 +-----END CERTIFICATE----- + +COMODO RSA Certification Authority +================================== +-----BEGIN CERTIFICATE----- +MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCBhTELMAkGA1UE +BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG +A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwHhcNMTAwMTE5MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMC +R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE +ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR6FSS0gpWsawNJN3Fz0Rn +dJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8Xpz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZ +FGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+ +5eNu/Nio5JIk2kNrYrhV/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pG +x8cgoLEfZd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z+pUX +2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7wqP/0uK3pN/u6uPQL +OvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZahSL0896+1DSJMwBGB7FY79tOi4lu3 +sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVICu9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+C +GCe01a60y1Dma/RMhnEw6abfFobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5 +WdYgGq/yapiqcrxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E +FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w +DQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvlwFTPoCWOAvn9sKIN9SCYPBMt +rFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+ +nq6PK7o9mfjYcwlYRm6mnPTXJ9OV2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSg +tZx8jb8uk2IntznaFxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwW +sRqZCuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiKboHGhfKp +pC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmckejkk9u+UJueBPSZI9FoJA +zMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yLS0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHq +ZJx64SIDqZxubw5lT2yHh17zbqD5daWbQOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk52 +7RH89elWsn2/x20Kk4yl0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7I +LaZRfyHBNVOFBkpdn627G190 +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA - G3 +================================== +-----BEGIN CERTIFICATE----- +MIIFdDCCA1ygAwIBAgIEAJiiOTANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE +CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g +Um9vdCBDQSAtIEczMB4XDTEzMTExNDExMjg0MloXDTI4MTExMzIzMDAwMFowWjELMAkGA1UEBhMC +TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l +ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL4y +olQPcPssXFnrbMSkUeiFKrPMSjTysF/zDsccPVMeiAho2G89rcKezIJnByeHaHE6n3WWIkYFsO2t +x1ueKt6c/DrGlaf1F2cY5y9JCAxcz+bMNO14+1Cx3Gsy8KL+tjzk7FqXxz8ecAgwoNzFs21v0IJy +EavSgWhZghe3eJJg+szeP4TrjTgzkApyI/o1zCZxMdFyKJLZWyNtZrVtB0LrpjPOktvA9mxjeM3K +Tj215VKb8b475lRgsGYeCasH/lSJEULR9yS6YHgamPfJEf0WwTUaVHXvQ9Plrk7O53vDxk5hUUur +mkVLoR9BvUhTFXFkC4az5S6+zqQbwSmEorXLCCN2QyIkHxcE1G6cxvx/K2Ya7Irl1s9N9WMJtxU5 +1nus6+N86U78dULI7ViVDAZCopz35HCz33JvWjdAidiFpNfxC95DGdRKWCyMijmev4SH8RY7Ngzp +07TKbBlBUgmhHbBqv4LvcFEhMtwFdozL92TkA1CvjJFnq8Xy7ljY3r735zHPbMk7ccHViLVlvMDo +FxcHErVc0qsgk7TmgoNwNsXNo42ti+yjwUOH5kPiNL6VizXtBznaqB16nzaeErAMZRKQFWDZJkBE +41ZgpRDUajz9QdwOWke275dhdU/Z/seyHdTtXUmzqWrLZoQT1Vyg3N9udwbRcXXIV2+vD3dbAgMB +AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRUrfrHkleu +yjWcLhL75LpdINyUVzANBgkqhkiG9w0BAQsFAAOCAgEAMJmdBTLIXg47mAE6iqTnB/d6+Oea31BD +U5cqPco8R5gu4RV78ZLzYdqQJRZlwJ9UXQ4DO1t3ApyEtg2YXzTdO2PCwyiBwpwpLiniyMMB8jPq +KqrMCQj3ZWfGzd/TtiunvczRDnBfuCPRy5FOCvTIeuXZYzbB1N/8Ipf3YF3qKS9Ysr1YvY2WTxB1 +v0h7PVGHoTx0IsL8B3+A3MSs/mrBcDCw6Y5p4ixpgZQJut3+TcCDjJRYwEYgr5wfAvg1VUkvRtTA +8KCWAg8zxXHzniN9lLf9OtMJgwYh/WA9rjLA0u6NpvDntIJ8CsxwyXmA+P5M9zWEGYox+wrZ13+b +8KKaa8MFSu1BYBQw0aoRQm7TIwIEC8Zl3d1Sd9qBa7Ko+gE4uZbqKmxnl4mUnrzhVNXkanjvSr0r +mj1AfsbAddJu+2gw7OyLnflJNZoaLNmzlTnVHpL3prllL+U9bTpITAjc5CgSKL59NVzq4BZ+Extq +1z7XnvwtdbLBFNUjA9tbbws+eC8N3jONFrdI54OagQ97wUNNVQQXOEpR1VmiiXTTn74eS9fGbbeI +JG9gkaSChVtWQbzQRKtqE77RLFi3EjNYsjdj3BP1lB0/QFH1T/U67cjF68IeHRaVesd+QnGTbksV +tzDfqu1XhUisHWrdOWnk4Xl4vs4Fv6EM94B7IWcnMFk= +-----END CERTIFICATE----- + +Staat der Nederlanden EV Root CA +================================ +-----BEGIN CERTIFICATE----- +MIIFcDCCA1igAwIBAgIEAJiWjTANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQGEwJOTDEeMBwGA1UE +CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSkwJwYDVQQDDCBTdGFhdCBkZXIgTmVkZXJsYW5kZW4g +RVYgUm9vdCBDQTAeFw0xMDEyMDgxMTE5MjlaFw0yMjEyMDgxMTEwMjhaMFgxCzAJBgNVBAYTAk5M +MR4wHAYDVQQKDBVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xKTAnBgNVBAMMIFN0YWF0IGRlciBOZWRl +cmxhbmRlbiBFViBSb290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA48d+ifkk +SzrSM4M1LGns3Amk41GoJSt5uAg94JG6hIXGhaTK5skuU6TJJB79VWZxXSzFYGgEt9nCUiY4iKTW +O0Cmws0/zZiTs1QUWJZV1VD+hq2kY39ch/aO5ieSZxeSAgMs3NZmdO3dZ//BYY1jTw+bbRcwJu+r +0h8QoPnFfxZpgQNH7R5ojXKhTbImxrpsX23Wr9GxE46prfNeaXUmGD5BKyF/7otdBwadQ8QpCiv8 +Kj6GyzyDOvnJDdrFmeK8eEEzduG/L13lpJhQDBXd4Pqcfzho0LKmeqfRMb1+ilgnQ7O6M5HTp5gV +XJrm0w912fxBmJc+qiXbj5IusHsMX/FjqTf5m3VpTCgmJdrV8hJwRVXj33NeN/UhbJCONVrJ0yPr +08C+eKxCKFhmpUZtcALXEPlLVPxdhkqHz3/KRawRWrUgUY0viEeXOcDPusBCAUCZSCELa6fS/ZbV +0b5GnUngC6agIk440ME8MLxwjyx1zNDFjFE7PZQIZCZhfbnDZY8UnCHQqv0XcgOPvZuM5l5Tnrmd +74K74bzickFbIZTTRTeU0d8JOV3nI6qaHcptqAqGhYqCvkIH1vI4gnPah1vlPNOePqc7nvQDs/nx +fRN0Av+7oeX6AHkcpmZBiFxgV6YuCcS6/ZrPpx9Aw7vMWgpVSzs4dlG4Y4uElBbmVvMCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFP6rAJCYniT8qcwa +ivsnuL8wbqg7MA0GCSqGSIb3DQEBCwUAA4ICAQDPdyxuVr5Os7aEAJSrR8kN0nbHhp8dB9O2tLsI +eK9p0gtJ3jPFrK3CiAJ9Brc1AsFgyb/E6JTe1NOpEyVa/m6irn0F3H3zbPB+po3u2dfOWBfoqSmu +c0iH55vKbimhZF8ZE/euBhD/UcabTVUlT5OZEAFTdfETzsemQUHSv4ilf0X8rLiltTMMgsT7B/Zq +5SWEXwbKwYY5EdtYzXc7LMJMD16a4/CrPmEbUCTCwPTxGfARKbalGAKb12NMcIxHowNDXLldRqAN +b/9Zjr7dn3LDWyvfjFvO5QxGbJKyCqNMVEIYFRIYvdr8unRu/8G2oGTYqV9Vrp9canaW2HNnh/tN +f1zuacpzEPuKqf2evTY4SUmH9A4U8OmHuD+nT3pajnnUk+S7aFKErGzp85hwVXIy+TSrK0m1zSBi +5Dp6Z2Orltxtrpfs/J92VoguZs9btsmksNcFuuEnL5O7Jiqik7Ab846+HUCjuTaPPoIaGl6I6lD4 +WeKDRikL40Rc4ZW2aZCaFG+XroHPaO+Zmr615+F/+PoTRxZMzG0IQOeLeG9QgkRQP2YGiqtDhFZK +DyAthg710tvSeopLzaXoTvFeJiUBWSOgftL2fiFX1ye8FVdMpEbB4IMeDExNH08GGeL5qPQ6gqGy +eUN51q1veieQA6TqJIc/2b3Z6fJfUEkc7uzXLg== +-----END CERTIFICATE----- + +IdenTrust Commercial Root CA 1 +============================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBKMQswCQYDVQQG +EwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBS +b290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQwMTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzES +MBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENB +IDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ld +hNlT3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU+ehcCuz/ +mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gpS0l4PJNgiCL8mdo2yMKi +1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1bVoE/c40yiTcdCMbXTMTEl3EASX2MN0C +XZ/g1Ue9tOsbobtJSdifWwLziuQkkORiT0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl +3ZBWzvurpWCdxJ35UrCLvYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzy +NeVJSQjKVsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZKdHzV +WYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHTc+XvvqDtMwt0viAg +xGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hvl7yTmvmcEpB4eoCHFddydJxVdHix +uuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5NiGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMC +AQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZI +hvcNAQELBQADggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH +6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwtLRvM7Kqas6pg +ghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93nAbowacYXVKV7cndJZ5t+qnt +ozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3+wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmV +YjzlVYA211QC//G5Xc7UI2/YRYRKW2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUX +feu+h1sXIFRRk0pTAwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/ro +kTLql1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG4iZZRHUe +2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZmUlO+KWA2yUPHGNiiskz +Z2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7R +cGzM7vRX+Bi6hG6H +-----END CERTIFICATE----- + +IdenTrust Public Sector Root CA 1 +================================= +-----BEGIN CERTIFICATE----- +MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBNMQswCQYDVQQG +EwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3Rv +ciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcNMzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJV +UzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBS +b290IENBIDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTy +P4o7ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGyRBb06tD6 +Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlSbdsHyo+1W/CD80/HLaXI +rcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF/YTLNiCBWS2ab21ISGHKTN9T0a9SvESf +qy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoS +mJxZZoY+rfGwyj4GD3vwEUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFn +ol57plzy9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9VGxyh +LrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ2fjXctscvG29ZV/v +iDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsVWaFHVCkugyhfHMKiq3IXAAaOReyL +4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gDW/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8B +Af8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMw +DQYJKoZIhvcNAQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj +t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHVDRDtfULAj+7A +mgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9TaDKQGXSc3z1i9kKlT/YPyNt +GtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8GlwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFt +m6/n6J91eEyrRjuazr8FGF1NFTwWmhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMx +NRF4eKLg6TCMf4DfWN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4 +Mhn5+bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJtshquDDI +ajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhAGaQdp/lLQzfcaFpPz+vC +ZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ +3Wl9af0AVqW3rLatt8o+Ae+c +-----END CERTIFICATE----- + +Entrust Root Certification Authority - G2 +========================================= +-----BEGIN CERTIFICATE----- +MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMCVVMxFjAUBgNV +BAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVy +bXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ug +b25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIw +HhcNMDkwNzA3MTcyNTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoT +DUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMx +OTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25s +eTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP +/vaCeb9zYQYKpSfYs1/TRU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXz +HHfV1IWNcCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hWwcKU +s/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1U1+cPvQXLOZprE4y +TGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0jaWvYkxN4FisZDQSA/i2jZRjJKRx +AgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ6 +0B7vfec7aVHUbI2fkBJmqzANBgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5Z +iXMRrEPR9RP/jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ +Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v1fN2D807iDgi +nWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4RnAuknZoh8/CbCzB428Hch0P+ +vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmHVHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xO +e4pIb4tF9g== +-----END CERTIFICATE----- + +Entrust Root Certification Authority - EC1 +========================================== +-----BEGIN CERTIFICATE----- +MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkGA1UEBhMCVVMx +FjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVn +YWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXpl +ZCB1c2Ugb25seTEzMDEGA1UEAxMqRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +IC0gRUMxMB4XDTEyMTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYw +FAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2Fs +LXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQg +dXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt +IEVDMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHy +AsWfoPZb1YsGGYZPUxBtByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef +9eNi1KlHBz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVCR98crlOZF7ZvHH3h +vxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nXhTcGtXsI/esni0qU+eH6p44mCOh8 +kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G +-----END CERTIFICATE----- + +CFCA EV ROOT +============ +-----BEGIN CERTIFICATE----- +MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJDTjEwMC4GA1UE +CgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNB +IEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkxMjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEw +MC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQD +DAxDRkNBIEVWIFJPT1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnV +BU03sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpLTIpTUnrD +7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5/ZOkVIBMUtRSqy5J35DN +uF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp7hZZLDRJGqgG16iI0gNyejLi6mhNbiyW +ZXvKWfry4t3uMCz7zEasxGPrb382KzRzEpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7 +xzbh72fROdOXW3NiGUgthxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9f +py25IGvPa931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqotaK8K +gWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNgTnYGmE69g60dWIol +hdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfVPKPtl8MeNPo4+QgO48BdK4PRVmrJ +tqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hvcWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAf +BgNVHSMEGDAWgBTj/i39KNALtbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB +/wQEAwIBBjAdBgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB +ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObTej/tUxPQ4i9q +ecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdLjOztUmCypAbqTuv0axn96/Ua +4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBSESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sG +E5uPhnEFtC+NiWYzKXZUmhH4J/qyP5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfX +BDrDMlI1Dlb4pd19xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjn +aH9dCi77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN5mydLIhy +PDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe/v5WOaHIz16eGWRGENoX +kbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+ZAAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3C +ekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su +-----END CERTIFICATE----- + +TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5 +========================================================= +-----BEGIN CERTIFICATE----- +MIIEJzCCAw+gAwIBAgIHAI4X/iQggTANBgkqhkiG9w0BAQsFADCBsTELMAkGA1UEBhMCVFIxDzAN +BgNVBAcMBkFua2FyYTFNMEsGA1UECgxEVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp +bGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4xQjBABgNVBAMMOVTDnFJLVFJVU1Qg +RWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSBINTAeFw0xMzA0MzAw +ODA3MDFaFw0yMzA0MjgwODA3MDFaMIGxMQswCQYDVQQGEwJUUjEPMA0GA1UEBwwGQW5rYXJhMU0w +SwYDVQQKDERUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnE +n2kgSGl6bWV0bGVyaSBBLsWeLjFCMEAGA1UEAww5VMOcUktUUlVTVCBFbGVrdHJvbmlrIFNlcnRp +ZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIEg1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEApCUZ4WWe60ghUEoI5RHwWrom/4NZzkQqL/7hzmAD/I0Dpe3/a6i6zDQGn1k19uwsu537 +jVJp45wnEFPzpALFp/kRGml1bsMdi9GYjZOHp3GXDSHHmflS0yxjXVW86B8BSLlg/kJK9siArs1m +ep5Fimh34khon6La8eHBEJ/rPCmBp+EyCNSgBbGM+42WAA4+Jd9ThiI7/PS98wl+d+yG6w8z5UNP +9FR1bSmZLmZaQ9/LXMrI5Tjxfjs1nQ/0xVqhzPMggCTTV+wVunUlm+hkS7M0hO8EuPbJbKoCPrZV +4jI3X/xml1/N1p7HIL9Nxqw/dV8c7TKcfGkAaZHjIxhT6QIDAQABo0IwQDAdBgNVHQ4EFgQUVpkH +HtOsDGlktAxQR95DLL4gwPswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI +hvcNAQELBQADggEBAJ5FdnsXSDLyOIspve6WSk6BGLFRRyDN0GSxDsnZAdkJzsiZ3GglE9Rc8qPo +BP5yCccLqh0lVX6Wmle3usURehnmp349hQ71+S4pL+f5bFgWV1Al9j4uPqrtd3GqqpmWRgqujuwq +URawXs3qZwQcWDD1YIq9pr1N5Za0/EKJAWv2cMhQOQwt1WbZyNKzMrcbGW3LM/nfpeYVhDfwwvJl +lpKQd/Ct9JDpEXjXk4nAPQu6KfTomZ1yju2dL+6SfaHx/126M2CFYv4HAqGEVka+lgqaE9chTLd8 +B59OTj+RdPsnnRHM3eaxynFNExc5JsUpISuTKWqW+qtB4Uu2NQvAmxU= +-----END CERTIFICATE----- + +TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H6 +========================================================= +-----BEGIN CERTIFICATE----- +MIIEJjCCAw6gAwIBAgIGfaHyZeyKMA0GCSqGSIb3DQEBCwUAMIGxMQswCQYDVQQGEwJUUjEPMA0G +A1UEBwwGQW5rYXJhMU0wSwYDVQQKDERUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls +acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjFCMEAGA1UEAww5VMOcUktUUlVTVCBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIEg2MB4XDTEzMTIxODA5 +MDQxMFoXDTIzMTIxNjA5MDQxMFowgbExCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExTTBL +BgNVBAoMRFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBCaWxpxZ9pbSBHw7x2ZW5sacSf +aSBIaXptZXRsZXJpIEEuxZ4uMUIwQAYDVQQDDDlUw5xSS1RSVVNUIEVsZWt0cm9uaWsgU2VydGlm +aWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLEgSDYwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQCdsGjW6L0UlqMACprx9MfMkU1xeHe59yEmFXNRFpQJRwXiM/VomjX/3EsvMsew7eKC5W/a +2uqsxgbPJQ1BgfbBOCK9+bGlprMBvD9QFyv26WZV1DOzXPhDIHiTVRZwGTLmiddk671IUP320EED +wnS3/faAz1vFq6TWlRKb55cTMgPp1KtDWxbtMyJkKbbSk60vbNg9tvYdDjTu0n2pVQ8g9P0pu5Fb +HH3GQjhtQiht1AH7zYiXSX6484P4tZgvsycLSF5W506jM7NE1qXyGJTtHB6plVxiSvgNZ1GpryHV ++DKdeboaX+UEVU0TRv/yz3THGmNtwx8XEsMeED5gCLMxAgMBAAGjQjBAMB0GA1UdDgQWBBTdVRcT +9qzoSCHK77Wv0QAy7Z6MtTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG +9w0BAQsFAAOCAQEAb1gNl0OqFlQ+v6nfkkU/hQu7VtMMUszIv3ZnXuaqs6fvuay0EBQNdH49ba3R +fdCaqaXKGDsCQC4qnFAUi/5XfldcEQlLNkVS9z2sFP1E34uXI9TDwe7UU5X+LEr+DXCqu4svLcsy +o4LyVN/Y8t3XSHLuSqMplsNEzm61kod2pLv0kmzOLBQJZo6NrRa1xxsJYTvjIKIDgI6tflEATseW +hvtDmHd9KMeP2Cpu54Rvl0EpABZeTeIT6lnAY2c6RPuY/ATTMHKm9ocJV612ph1jmv3XZch4gyt1 +O6VbuA1df74jrlZVlFjvH4GMKrLN5ptjnhi85WsGtAuYSyher4hYyw== +-----END CERTIFICATE----- + +Certinomis - Root CA +==================== +-----BEGIN CERTIFICATE----- +MIIFkjCCA3qgAwIBAgIBATANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJGUjETMBEGA1UEChMK +Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxHTAbBgNVBAMTFENlcnRpbm9taXMg +LSBSb290IENBMB4XDTEzMTAyMTA5MTcxOFoXDTMzMTAyMTA5MTcxOFowWjELMAkGA1UEBhMCRlIx +EzARBgNVBAoTCkNlcnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMR0wGwYDVQQDExRD +ZXJ0aW5vbWlzIC0gUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANTMCQos +P5L2fxSeC5yaah1AMGT9qt8OHgZbn1CF6s2Nq0Nn3rD6foCWnoR4kkjW4znuzuRZWJflLieY6pOo +d5tK8O90gC3rMB+12ceAnGInkYjwSond3IjmFPnVAy//ldu9n+ws+hQVWZUKxkd8aRi5pwP5ynap +z8dvtF4F/u7BUrJ1Mofs7SlmO/NKFoL21prbcpjp3vDFTKWrteoB4owuZH9kb/2jJZOLyKIOSY00 +8B/sWEUuNKqEUL3nskoTuLAPrjhdsKkb5nPJWqHZZkCqqU2mNAKthH6yI8H7KsZn9DS2sJVqM09x +RLWtwHkziOC/7aOgFLScCbAK42C++PhmiM1b8XcF4LVzbsF9Ri6OSyemzTUK/eVNfaoqoynHWmgE +6OXWk6RiwsXm9E/G+Z8ajYJJGYrKWUM66A0ywfRMEwNvbqY/kXPLynNvEiCL7sCCeN5LLsJJwx3t +FvYk9CcbXFcx3FXuqB5vbKziRcxXV4p1VxngtViZSTYxPDMBbRZKzbgqg4SGm/lg0h9tkQPTYKbV +PZrdd5A9NaSfD171UkRpucC63M9933zZxKyGIjK8e2uR73r4F2iw4lNVYC2vPsKD2NkJK/DAZNuH +i5HMkesE/Xa0lZrmFAYb1TQdvtj/dBxThZngWVJKYe2InmtJiUZ+IFrZ50rlau7SZRFDAgMBAAGj +YzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTvkUz1pcMw6C8I +6tNxIqSSaHh02TAfBgNVHSMEGDAWgBTvkUz1pcMw6C8I6tNxIqSSaHh02TANBgkqhkiG9w0BAQsF +AAOCAgEAfj1U2iJdGlg+O1QnurrMyOMaauo++RLrVl89UM7g6kgmJs95Vn6RHJk/0KGRHCwPT5iV +WVO90CLYiF2cN/z7ZMF4jIuaYAnq1fohX9B0ZedQxb8uuQsLrbWwF6YSjNRieOpWauwK0kDDPAUw +Pk2Ut59KA9N9J0u2/kTO+hkzGm2kQtHdzMjI1xZSg081lLMSVX3l4kLr5JyTCcBMWwerx20RoFAX +lCOotQqSD7J6wWAsOMwaplv/8gzjqh8c3LigkyfeY+N/IZ865Z764BNqdeuWXGKRlI5nU7aJ+BIJ +y29SWwNyhlCVCNSNh4YVH5Uk2KRvms6knZtt0rJ2BobGVgjF6wnaNsIbW0G+YSrjcOa4pvi2WsS9 +Iff/ql+hbHY5ZtbqTFXhADObE5hjyW/QASAJN1LnDE8+zbz1X5YnpyACleAu6AdBBR8Vbtaw5Bng +DwKTACdyxYvRVB9dSsNAl35VpnzBMwQUAR1JIGkLGZOdblgi90AMRgwjY/M50n92Uaf0yKHxDHYi +I0ZSKS3io0EHVmmY0gUJvGnHWmHNj4FgFU2A3ZDifcRQ8ow7bkrHxuaAKzyBvBGAFhAn1/DNP3nM +cyrDflOR1m749fPH0FFNjkulW+YZFzvWgQncItzujrnEj1PhZ7szuIgVRs/taTX/dQ1G885x4cVr +hkIGuUE= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/plugins/updraftplus/includes/class-partialfileservlet.php b/plugins/updraftplus/includes/class-partialfileservlet.php new file mode 100644 index 0000000..0023b3d --- /dev/null +++ b/plugins/updraftplus/includes/class-partialfileservlet.php @@ -0,0 +1,267 @@ +firstByte = $firstByte === null ? $firstByte : (int)$firstByte; + $this->lastByte = $lastByte === null ? $lastByte : (int)$lastByte; + + if ($this->firstByte === null && $this->lastByte === null) { + throw new UpdraftPlus_InvalidRangeHeaderException( + 'Both start and end position specifiers empty' + ); + } else if ($this->firstByte < 0 || $this->lastByte < 0) { + throw new UpdraftPlus_InvalidRangeHeaderException( + 'Position specifiers cannot be negative' + ); + } else if ($this->lastByte !== null && $this->lastByte < $this->firstByte) { + throw new UpdraftPlus_InvalidRangeHeaderException( + 'Last byte cannot be less than first byte' + ); + } + } + + /** + * Get the start position when this range is applied to a file of the specified size + * + * @param int $fileSize + * @return int + * @throws UpdraftPlus_UnsatisfiableRangeException + */ + public function getStartPosition($fileSize) + { + $size = (int)$fileSize; + + if ($this->firstByte === null) { + return ($size - 1) - $this->lastByte; + } + + if ($size <= $this->firstByte) { + throw new UpdraftPlus_UnsatisfiableRangeException( + 'Start position is after the end of the file' + ); + } + + return $this->firstByte; + } + + /** + * Get the end position when this range is applied to a file of the specified size + * + * @param int $fileSize + * @return int + * @throws UpdraftPlus_UnsatisfiableRangeException + */ + public function getEndPosition($fileSize) + { + $size = (int)$fileSize; + + if ($this->lastByte === null) { + return $size - 1; + } + + if ($size <= $this->lastByte) { + throw new UpdraftPlus_UnsatisfiableRangeException( + 'End position is after the end of the file' + ); + } + + return $this->lastByte; + } + + /** + * Get the length when this range is applied to a file of the specified size + * + * @param int $fileSize + * @return int + * @throws UpdraftPlus_UnsatisfiableRangeException + */ + public function getLength($fileSize) + { + $size = (int)$fileSize; + + return $this->getEndPosition($size) - $this->getStartPosition($size) + 1; + } + + /** + * Get a Content-Range header corresponding to this Range and the specified file + * size + * + * @param int $fileSize + * @return string + */ + public function getContentRangeHeader($fileSize) + { + return 'bytes ' . $this->getStartPosition($fileSize) . '-' + . $this->getEndPosition($fileSize) . '/' . $fileSize; + } +} + +class UpdraftPlus_PartialFileServlet +{ + /** + * The range header on which the data transmission will be based + * + * @var UpdraftPlus_RangeHeader|null + */ + private $range; + + /** + * @param UpdraftPlus_RangeHeader $range Range header on which the transmission will be based + */ + public function __construct($range = null) + { + $this->range = $range; + } + + /** + * Send part of the data in a seekable stream resource to the output buffer + * + * @param resource $fp Stream resource to read data from + * @param int $start Position in the stream to start reading + * @param int $length Number of bytes to read + * @param int $chunkSize Maximum bytes to read from the file in a single operation + */ + private function sendDataRange($fp, $start, $length, $chunkSize = 2097152) + { + if ($start > 0) { + fseek($fp, $start, SEEK_SET); + } + + while ($length) { + $read = ($length > $chunkSize) ? $chunkSize : $length; + $length -= $read; + echo fread($fp, $read); + } + } + + /** + * Send the headers that are included regardless of whether a range was requested + * + * @param string $fileName + * @param int $contentLength + * @param string $contentType + */ + private function sendDownloadHeaders($fileName, $contentLength, $contentType) + { + header('Content-Type: ' . $contentType); + header('Content-Length: ' . $contentLength); + header('Content-Disposition: attachment; filename="' . $fileName . '"'); + header('Accept-Ranges: bytes'); + } + + /** + * Send data from a file based on the current Range header + * + * @param string $path Local file system path to serve + * @param string $contentType MIME type of the data stream + */ + public function sendFile($path, $contentType = 'application/octet-stream') + { + // Make sure the file exists and is a file, otherwise we are wasting our time + $localPath = realpath($path); + if ($localPath === false || !is_file($localPath)) { + throw new UpdraftPlus_NonExistentFileException( + $path . ' does not exist or is not a file' + ); + } + + // Make sure we can open the file for reading + if (!$fp = fopen($localPath, 'r')) { + throw new UpdraftPlus_UnreadableFileException( + 'Failed to open ' . $localPath . ' for reading' + ); + } + + $fileSize = filesize($localPath); + + if ($this->range == null) { + // No range requested, just send the whole file + header('HTTP/1.1 200 OK'); + $this->sendDownloadHeaders(basename($localPath), $fileSize, $contentType); + + fpassthru($fp); + } else { + // Send the request range + header('HTTP/1.1 206 Partial Content'); + header('Content-Range: ' . $this->range->getContentRangeHeader($fileSize)); + $this->sendDownloadHeaders( + basename($localPath), + $this->range->getLength($fileSize), + $contentType + ); + + $this->sendDataRange( + $fp, + $this->range->getStartPosition($fileSize), + $this->range->getLength($fileSize) + ); + } + + fclose($fp); + } +} \ No newline at end of file diff --git a/plugins/updraftplus/includes/class-semaphore.php b/plugins/updraftplus/includes/class-semaphore.php new file mode 100644 index 0000000..b029187 --- /dev/null +++ b/plugins/updraftplus/includes/class-semaphore.php @@ -0,0 +1,184 @@ +query(" + UPDATE $wpdb->options + SET option_name = 'updraftplus_locked_".$this->lock_name."' + WHERE option_name = 'updraftplus_unlocked_".$this->lock_name."' + "); + + if ($affected == '0' and !$this->stuck_check()) { + $updraftplus->log('Semaphore lock ('.$this->lock_name.') failed (line '.__LINE__.')'); + return false; + } + + // Check to see if all processes are complete + $affected = $wpdb->query(" + UPDATE $wpdb->options + SET option_value = CAST(option_value AS UNSIGNED) + 1 + WHERE option_name = 'updraftplus_semaphore_".$this->lock_name."' + AND option_value = '0' + "); + if ($affected != '1') { + if (!$this->stuck_check()) { + $updraftplus->log('Semaphore lock ('.$this->lock_name.') failed (line '.__LINE__.')'); + return false; + } + + // Reset the semaphore to 1 + $wpdb->query(" + UPDATE $wpdb->options + SET option_value = '1' + WHERE option_name = 'updraftplus_semaphore_".$this->lock_name."' + "); + + $updraftplus->log('Semaphore ('.$this->lock_name.') reset to 1'); + } + + // Set the lock time + $wpdb->query($wpdb->prepare(" + UPDATE $wpdb->options + SET option_value = %s + WHERE option_name = 'updraftplus_last_lock_time_".$this->lock_name."' + ", current_time('mysql', 1))); + $updraftplus->log('Set semaphore last lock ('.$this->lock_name.') time to '.current_time('mysql', 1)); + + $updraftplus->log('Semaphore lock ('.$this->lock_name.') complete'); + return true; + } + + /** + * Increment the semaphore. + * + * @param array $filters + * @return Social_Semaphore + */ + public function increment(array $filters = array()) { + global $wpdb; + + if (count($filters)) { + // Loop through all of the filters and increment the semaphore + foreach ($filters as $priority) { + for ($i = 0, $j = count($priority); $i < $j; ++$i) { + $this->increment(); + } + } + } + else { + $wpdb->query(" + UPDATE $wpdb->options + SET option_value = CAST(option_value AS UNSIGNED) + 1 + WHERE option_name = 'updraftplus_semaphore_".$this->lock_name."' + "); + $updraftplus->log('Incremented the semaphore ('.$this->lock_name.') by 1'); + } + + return $this; + } + + /** + * Decrements the semaphore. + * + * @return void + */ + public function decrement() { + global $wpdb, $updraftplus; + + $wpdb->query(" + UPDATE $wpdb->options + SET option_value = CAST(option_value AS UNSIGNED) - 1 + WHERE option_name = 'updraftplus_semaphore_".$this->lock_name."' + AND CAST(option_value AS UNSIGNED) > 0 + "); + $updraftplus->log('Decremented the semaphore ('.$this->lock_name.') by 1'); + } + + /** + * Unlocks the process. + * + * @return bool + */ + public function unlock() { + global $wpdb, $updraftplus; + + // Decrement for the master process. + $this->decrement(); + + $result = $wpdb->query(" + UPDATE $wpdb->options + SET option_name = 'updraftplus_unlocked_".$this->lock_name."' + WHERE option_name = 'updraftplus_locked_".$this->lock_name."' + "); + + if ($result == '1') { + $updraftplus->log('Semaphore ('.$this->lock_name.') unlocked'); + return true; + } + + $updraftplus->log('Semaphore ('.$this->lock_name.') still locked ('.$result.')'); + return false; + } + + /** + * Attempts to jiggle the stuck lock loose. + * + * @return bool + */ + private function stuck_check() { + global $wpdb, $updraftplus; + + // Check to see if we already broke the lock. + if ($this->lock_broke) { + return true; + } + + $current_time = current_time('mysql', 1); + $three_minutes_before = gmdate('Y-m-d H:i:s', time()-(defined('UPDRAFTPLUS_SEMAPHORE_LOCK_WAIT') ? UPDRAFTPLUS_SEMAPHORE_LOCK_WAIT : 180)); + + $affected = $wpdb->query($wpdb->prepare(" + UPDATE $wpdb->options + SET option_value = %s + WHERE option_name = 'updraftplus_last_lock_time_".$this->lock_name."' + AND option_value <= %s + ", $current_time, $three_minutes_before)); + + if ('1' == $affected) { + $updraftplus->log('Semaphore ('.$this->lock_name.') was stuck, set lock time to '.$current_time); + $this->lock_broke = true; + return true; + } + + return false; + } + +} // End UpdraftPlus_Semaphore diff --git a/plugins/updraftplus/includes/class-udrpc.php b/plugins/updraftplus/includes/class-udrpc.php new file mode 100644 index 0000000..eff6016 --- /dev/null +++ b/plugins/updraftplus/includes/class-udrpc.php @@ -0,0 +1,989 @@ +set_key_local($our_private_key); +$ud_rpc->set_key_remote($their_public_key); +$encrypted = $ud_rpc->encrypt_message('blah blah'); + +// Use the saved WP site option +$ud_rpc = new UpdraftPlus_Remote_Communications($name_indicator); // $name_indicator is a key indicator - indicating which key is being used. +$ud_rpc->set_option_name('udrpc_remotekey'); +if (!$ud_rpc->get_key_remote()) throw new Exception('...'); +$encrypted = $ud_rpc->encrypt_message('blah blah'); + +// Generate a new key +$ud_rpc = new UpdraftPlus_Remote_Communications('myindicator.example.com'); +$ud_rpc->set_option_name('udrpc_localkey'); // Save as a WP site option +$new_pair = $ud_rpc->generate_new_keypair(); +if ($new_pair) { + $local_private_key = $ud_rpc->get_key_local(); + $remote_public_key = $ud_rpc->get_key_remote(); + // ... +} else { + throw new Exception('...'); +} + +// Send a message +$ud_rpc->activate_replay_protection(); +$ud_rpc->set_destination_url('https://example.com/path/to/wp'); +$ud_rpc->send_message('ping'); +$ud_rpc->send_message('somecommand', array('param1' => 'data', 'param2' => 'moredata')); + +// N.B. The data sent needs to be something that will pass json_encode(). So, it may be desirable to base64-encode it first. + +// Create a listener for incoming messages + +add_filter('udrpc_command_somecommand', 'my_function', 10, 3); +// function my_function($response, $data, $name_indicator) { ... ; return array('response' => 'my_reply', 'data' => 'any mixed data'); } +// Or: +// add_filter('udrpc_action', 'some_function', 10, 4); // Function must return something other than false to indicate that it handled the specific command. Any returned value will be sent as the reply. +// function some_function($response, $command, $data, $name_indicator) { ...; return array('response' => 'my_reply', 'data' => 'any mixed data'); } +$ud_rpc->set_option_name('udrpc_local_private_key'); +$ud_rpc->activate_replay_protection(); +if ($ud_rpc->get_key_local()) { + // Make sure you call this before the wp_loaded action is fired (e.g. at init) + $ud_rpc->create_listener(); +} + +// Instead of using activate_replay_protection(), you can use activate_sequence_protection() (receiving side) and set_next_send_sequence_id(). They are very similar; but, the sequence number code isn't tested, and is problematic if you may have multiple clients that don't share storage (you can use the current time as a sequence number, but if two clients send at the same millisecond (or whatever granularity you use), you may have problems); whereas the replay protection code relies on database storage on the sending side (not just the receiving). + +*/ + +if (!class_exists('UpdraftPlus_Remote_Communications')): +class UpdraftPlus_Remote_Communications { + // Version numbers relate to versions of this PHP library only (i.e. it's not a protocol support number, and version numbers of other compatible libraries (e.g. JavaScript) are not comparable) + public $version = '1.4.9'; + + private $key_name_indicator; + + private $key_option_name = false; + private $key_remote = false; + private $key_local = false; + + private $can_generate = false; + + private $destination_url = false; + + private $maximum_replay_time_difference = 300; + private $extra_replay_protection = false; + + private $sequence_protection_tolerance; + private $sequence_protection_table; + private $sequence_protection_column; + private $sequence_protection_where_sql; + + // Debug may log confidential data using $this->log() - so only use when you are in a secure environment + private $debug = false; + + private $next_send_sequence_id; + + private $allow_cors_from = array(); + + private $http_transport = null; + + // Default protocol version - this can be over-ridden with set_message_format + // Protocol version 1 (which uses only one RSA key-pair, instead of two) is legacy/deprecated + private $format = 2; + + private $http_credentials = array(); + + private $incoming_message = null; + + private $message_random_number = null; + + public function __construct($key_name_indicator = 'default', $can_generate = false) { + $this->set_key_name_indicator($key_name_indicator); + } + + public function set_key_name_indicator($key_name_indicator) { + $this->key_name_indicator = $key_name_indicator; + } + + public function set_can_generate($can_generate = true) { + $this->can_generate = $can_generate; + } + + // Which sites to allow CORS requests from + public function set_allow_cors_from($allow_cors_from) { + $this->allow_cors_from = $allow_cors_from; + } + + public function set_maximum_replay_time_difference($replay_time_difference) { + $this->maximum_replay_time_difference = (int) $replay_time_difference; + } + + // This will cause more things to be sent to $this->log() + public function set_debug($debug = true) { + $this->debug = (bool) $debug; + } + + // Supported values: a Guzzle object, or, if not, then WP's HTTP API function siwll be used + public function set_http_transport($transport) { + $this->http_transport = $transport; + } + + // Sequence protection and replay protection perform similar functions, and using both is often over-kill; the distinction is that sequence protection can be used without needing to do database writes on the sending side (e.g. use the value of time() as the sequence number). + // The only rule of sequences is that the receiving side will reject any sequence number that is less than the last previously seen one, within the bounds of the tolerance (but it may also reject those if they are repeats). + // The given table/column will record a comma-separated list of recently seen sequences numbers within the tolerance threshold. + public function activate_sequence_protection($table, $column, $where_sql, $tolerance = 5) { + $this->sequence_protection_tolerance = (int) $tolerance; + $this->sequence_protection_table = (string) $table; + $this->sequence_protection_column = (string) $column; + $this->sequence_protection_where_sql = (string) $where_sql; + } + + private function ensure_crypto_loaded() { + if (!class_exists('Crypt_Rijndael') || !class_exists('Crypt_RSA') || !class_exists('Crypt_Hash')) { + global $updraftplus; + // phpseclib 1.x uses deprecated PHP4-style constructors + $this->no_deprecation_warnings_on_php7(); + if (is_a($updraftplus, 'UpdraftPlus')) { + $updraftplus->ensure_phpseclib(array('Crypt_Rijndael', 'Crypt_RSA', 'Crypt_Hash'), array('Crypt/Rijndael', 'Crypt/RSA', 'Crypt/Hash')); + } elseif (defined('UPDRAFTPLUS_DIR') && file_exists(UPDRAFTPLUS_DIR.'/includes/phpseclib')) { + if (false === strpos(get_include_path(), UPDRAFTPLUS_DIR.'/includes/phpseclib')) set_include_path(UPDRAFTPLUS_DIR.'/includes/phpseclib'.PATH_SEPARATOR.get_include_path()); + if (!class_exists('Crypt_Rijndael')) require_once 'Crypt/Rijndael.php'; + if (!class_exists('Crypt_RSA')) require_once 'Crypt/RSA.php'; + if (!class_exists('Crypt_Hash')) require_once 'Crypt/Hash.php'; + } elseif (file_exists(dirname(__DIR__).'/vendor/phpseclib')) { + $pdir = dirname(__DIR__).'/vendor/phpseclib'; + if (false === strpos(get_include_path(), $pdir)) set_include_path($pdir.PATH_SEPARATOR.get_include_path()); + if (!class_exists('Crypt_Rijndael')) require_once 'Crypt/Rijndael.php'; + if (!class_exists('Crypt_RSA')) require_once 'Crypt/RSA.php'; + if (!class_exists('Crypt_Hash')) require_once 'Crypt/Hash.php'; + } elseif (file_exists(dirname(__DIR__).'/composer/vendor/phpseclib/phpseclib/phpseclib')) { + $pdir = dirname(__DIR__).'/composer/vendor/phpseclib/phpseclib/phpseclib'; + if (false === strpos(get_include_path(), $pdir)) set_include_path($pdir.PATH_SEPARATOR.get_include_path()); + if (!class_exists('Crypt_Rijndael')) require_once 'Crypt/Rijndael.php'; + if (!class_exists('Crypt_RSA')) require_once 'Crypt/RSA.php'; + if (!class_exists('Crypt_Hash')) require_once 'Crypt/Hash.php'; + } + } + } + + // Ugly, but necessary to prevent debug output breaking the conversation when the user has debug turned on + private function no_deprecation_warnings_on_php7() { + // PHP_MAJOR_VERSION is defined in PHP 5.2.7+ + // We don't test for PHP > 7 because the specific deprecated element will be removed in PHP 8 - and so no warning should come anyway (and we shouldn't suppress other stuff until we know we need to). + if (defined('PHP_MAJOR_VERSION') && PHP_MAJOR_VERSION == 7) { + $old_level = error_reporting(); + $new_level = $old_level & ~E_DEPRECATED; + if ($old_level != $new_level) error_reporting($new_level); + } + } + + public function set_destination_url($destination_url) { + $this->destination_url = $destination_url; + } + + public function get_destination_url() { + return $this->destination_url; + } + + public function set_option_name($key_option_name) { + $this->key_option_name = $key_option_name; + } + + // Method to get the remote key + public function get_key_remote() { + if (empty($this->key_remote) && $this->can_generate) { + $this->generate_new_keypair(); + } + + return empty($this->key_remote) ? false : $this->key_remote; + } + + // Set the remote key + public function set_key_remote($key_remote) { + $this->key_remote = $key_remote; + } + + // Used for sending - when receiving, the format is part of the message + public function set_message_format($format = 2) { + $this->format = $format; + } + + // Method to get the local key + public function get_key_local() { + if (empty($this->key_local)) { + if ($this->key_option_name) { + $key_local = get_site_option($this->key_option_name); + if ($key_local) { + $this->key_local = $key_local; + } + } + } + if (empty($this->key_local) && $this->can_generate) { + $this->generate_new_keypair(); + } + + return empty($this->key_local) ? false : $this->key_local; + } + + // Tests whether a supplied string (after trimming) is a valid portable bundle + // Valid formats: same as get_portable_bundle() + // Returns: (array)an array (which the consumer is free to use - e.g. convert into internationalised string), with keys 'code' and (perhaps) 'data' + // Error codes: 'invalid_wrong_length'|'invalid_corrupt' + // Success codes: 'success' - then has further keys 'key', 'name_indicator' and 'url' (and anything else that was in the bundle) + public function decode_portable_bundle($bundle, $format = 'raw') { + $bundle = trim($bundle); + if ('base64_with_count' == $format) { + if (strlen($bundle) < 5) return array('code' => 'invalid_wrong_length', 'data' => 'too_short'); + $len = substr($bundle, 0, 4); + $bundle = substr($bundle, 4); + $len = hexdec($len); + if (strlen($bundle) != $len) return array('code' => 'invalid_wrong_length', 'data' => "1,$len,".strlen($bundle)); + if (false === ($bundle = base64_decode($bundle))) return array('code' => 'invalid_corrupt', 'data' => 'not_base64'); + if (null === ($bundle = json_decode($bundle, true))) return array('code' => 'invalid_corrupt', 'data' => 'not_json'); + } + if (empty($bundle['key'])) return array('code' => 'invalid_corrupt', 'data' => 'no_key'); + if (empty($bundle['url'])) return array('code' => 'invalid_corrupt', 'data' => 'no_url'); + if (empty($bundle['name_indicator'])) return array('code' => 'invalid_corrupt', 'data' => 'no_name_indicator'); + + return $bundle; + } + + // Method to get a portable bundle sufficient to contact this site (i.e. remote site - so you need to have generated a key-pair, or stored the remote key somewhere and restored it) + // Supported formats: base64_with_count | (default)raw + // $extra_info needs to be JSON-serialisable, so be careful about what you put into it. + public function get_portable_bundle($format = 'raw', $extra_info = array(), $options = array()) { + + $bundle = array_merge($extra_info, array( + 'key' => empty($options['key']) ? $this->get_key_remote() : $options['key'], + 'name_indicator' => $this->key_name_indicator, + 'url' => trailingslashit(network_site_url()), + 'admin_url' => trailingslashit(admin_url()), + 'network_admin_url' => trailingslashit(network_admin_url()), + )); + + if ('base64_with_count' == $format) { + $bundle = base64_encode(json_encode($bundle)); + + $len = strlen($bundle); // Get the length + $len = dechex($len); // The first bytes of the message are the bundle length + $len = str_pad($len, 4, '0', STR_PAD_LEFT); // Zero pad + + return $len.$bundle; + + } else { + return $bundle; + } + + } + + public function set_key_local($key_local) { + $this->key_local = $key_local; + if ($this->key_option_name) update_site_option($this->key_option_name, $this->key_local); + } + + public function generate_new_keypair($key_size = 2048) { + + $this->ensure_crypto_loaded(); + + $rsa = new Crypt_RSA(); + $keys = $rsa->createKey($key_size); + + if (empty($keys['privatekey'])) { + $this->set_key_local(false); + } else { + $this->set_key_local($keys['privatekey']); + } + + if (empty($keys['publickey'])) { + $this->set_key_remote(false); + } else { + $this->set_key_remote($keys['publickey']); + } + + return empty($keys['publickey']) ? false : true; + } + + // A base-64 encoded RSA hash (PKCS_1) of the message digest + public function signature_for_message($message, $use_key = false) { + + $hash_algorithm = 'sha256'; + + // Sign with the private (local) key + if (!$use_key) { + if (!$this->key_local) throw new Exception('No signing key has been set'); + $use_key = $this->key_local; + } + + $this->ensure_crypto_loaded(); + + $rsa = new Crypt_RSA(); + $rsa->loadKey($use_key); + // This is the older signature mode; phpseclib's default is the preferred CRYPT_RSA_SIGNATURE_PSS; however, Forge JS doesn't yet support this. More info: https://en.wikipedia.org/wiki/PKCS_1 + $rsa->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1); + + // Don't do this: Crypt_RSA::sign() already calculates the digest of the hash +// $hash = new Crypt_Hash($hash_algorithm); +// $hashed = $hash->hash($message); + +// if ($this->debug) $this->log("Message hash (hash=$hash_algorithm) (hex): ".bin2hex($hashed)); + + // phpseclib defaults to SHA1 + $rsa->setHash($hash_algorithm); + $encrypted = $rsa->sign($message); + + if ($this->debug) $this->log('Signed hash (mode='.CRYPT_RSA_SIGNATURE_PKCS1.') (hex): '.bin2hex($encrypted)); + + $signature = base64_encode($encrypted); + + if ($this->debug) $this->log("Message signature (base64): $signature"); + + return $signature; + } + + // $level is not yet used much + private function log($message, $level = 'notice') { + // Allow other plugins to do something with the message + do_action('udrpc_log', $message, $level, $this->key_name_indicator, $this->debug, $this); + if ($level != 'info') error_log('UDRPC ('.$this->key_name_indicator.", $level): $message"); + } + + // Encrypt the message, using the local key (which needs to exist) + public function encrypt_message($plaintext, $use_key = false, $key_length = 32) { + + if (!$use_key) { + if ($this->format == 1) { + if (!$this->key_local) throw new Exception('No encryption key has been set'); + $use_key = $this->key_local; + } else { + if (!$this->key_remote) throw new Exception('No encryption key has been set'); + $use_key = $this->key_remote; + } + } + + $this->ensure_crypto_loaded(); + + $rsa = new Crypt_RSA(); + + if (defined('UDRPC_PHPSECLIB_ENCRYPTION_MODE')) $rsa->setEncryptionMode(UDRPC_PHPSECLIB_ENCRYPTION_MODE); + + $rij = new Crypt_Rijndael(); + + // Generate Random Symmetric Key + $sym_key = crypt_random_string($key_length); + + if ($this->debug) $this->log('Unencrypted symmetric key (hex): '.bin2hex($sym_key)); + + // Encrypt Message with new Symmetric Key + $rij->setKey($sym_key); + $ciphertext = $rij->encrypt($plaintext); + + if ($this->debug) $this->log('Encrypted ciphertext (hex): '.bin2hex($ciphertext)); + + $ciphertext = base64_encode($ciphertext); + + // Encrypt the Symmetric Key with the Asymmetric Key + $rsa->loadKey($use_key); + $sym_key = $rsa->encrypt($sym_key); + + if ($this->debug) $this->log('Encrypted symmetric key (hex): '.bin2hex($sym_key)); + + // Base 64 encode the symmetric key for transport + $sym_key = base64_encode($sym_key); + + if ($this->debug) $this->log('Encrypted symmetric key (b64): '.$sym_key); + + $len = str_pad(dechex(strlen($sym_key)), 3, '0', STR_PAD_LEFT); // Zero pad to be sure. + + // 16 characters of hex is enough for the payload to be to 16 exabytes (giga < tera < peta < exa) of data + $cipherlen = str_pad(dechex(strlen($ciphertext)), 16, '0', STR_PAD_LEFT); + + // Concatenate the length, the encrypted symmetric key, and the message + return $len.$sym_key.$cipherlen.$ciphertext; + + } + + // Decrypt the message, using the local key (which needs to exist) + public function decrypt_message($message) { + + if (!$this->key_local) throw new Exception('No decryption key has been set'); + + $this->ensure_crypto_loaded(); + + $rsa = new Crypt_RSA(); + if (defined('UDRPC_PHPSECLIB_ENCRYPTION_MODE')) $rsa->setEncryptionMode(UDRPC_PHPSECLIB_ENCRYPTION_MODE); + // Defaults to CRYPT_AES_MODE_CBC + $rij = new Crypt_Rijndael(); + + // Extract the Symmetric Key + $len = substr($message, 0, 3); + $len = hexdec($len); + $sym_key = substr($message, 3, $len); + + // Extract the encrypted message + $cipherlen = substr($message, $len + 3, 16); + $cipherlen = hexdec($cipherlen); + + $ciphertext = substr($message, $len + 19, $cipherlen); + $ciphertext = base64_decode($ciphertext); + + // Decrypt the encrypted symmetric key + $rsa->loadKey($this->key_local); + $sym_key = base64_decode($sym_key); + $sym_key = $rsa->decrypt($sym_key); + + // Decrypt the message + $rij->setKey($sym_key); + + return $rij->decrypt($ciphertext); + + } + + // Returns an array - which the caller will then format as required (e.g. use as body in post, or JSON-encode, etc.) + public function create_message($command, $data = null, $is_response = false, $use_key_remote = false, $use_key_local = false) { + + if ($is_response) { + $send_array = array('response' => $command); + } else { + $send_array = array('command' => $command); + } + + $send_array['time'] = time(); + // This goes in the encrypted portion as well to prevent replays with a different unencrypted name indicator + $send_array['key_name'] = $this->key_name_indicator; + + // This random element means that if the site needs to send two identical commands or responses in the same second, then it can, and still use replay protection + // The value of PHP_INT_MAX on a 32-bit platform + $this->message_random_number = rand(1, 2147483647); + $send_array['rand'] = $this->message_random_number; + + if ($this->next_send_sequence_id) { + $send_array['sequence_id'] = $this->next_send_sequence_id; + ++$this->next_send_sequence_id; + } + + if ($is_response && !empty($this->incoming_message) && isset($this->incoming_message['rand'])) { + $send_array['incoming_rand'] = $this->incoming_message['rand']; + } + + if (null !== $data) $send_array['data'] = $data; + $send_data = $this->encrypt_message(json_encode($send_array), $use_key_remote); + + $message = array( + 'format' => $this->format, + 'key_name' => $this->key_name_indicator, + 'udrpc_message' => $send_data, + ); + + if ($this->format >= 2) { + $signature = $this->signature_for_message($send_data, $use_key_local); + $message['signature'] = $signature; + } + + return $message; + + } + + // N.B. There's already some time-based replay protection. This can be turned on to beef it up. + // This is only for listeners. Replays can only be detection if transients are working on the WP site (which by default only means that the option table is working). + public function activate_replay_protection($activate = true) { + $this->extra_replay_protection = (bool) $activate; + } + + public function set_next_send_sequence_id($id) { + $this->next_send_sequence_id = $id; + } + + // $credentials should be an array with entries for 'username' and 'password' + public function set_http_credentials($credentials) { + $this->http_credentials = $credentials; + } + + // This needs only to return an array with keys body and response - where response is also an array, with key 'code' (the HTTP status code) + // The $post_options array support these keys: timeout, body, + // Public, to allow short-circuiting of the library's own encoding/decoding (e.g. for acting as a proxy for a message already encrypted elsewhere) + public function http_post($post_options) { + + @include ABSPATH.WPINC.'/version.php'; + $http_credentials = $this->http_credentials; + + if (is_a($this->http_transport, 'GuzzleHttp\Client')) { + + // https://guzzle.readthedocs.org/en/5.3/clients.html + + $client = $this->http_transport; + + $guzzle_options = array( + 'body' => $post_options['body'], + 'headers' => array( + 'User-Agent' => 'WordPress/'.$wp_version.'; class-udrpc.php-Guzzle/'.$this->version.'; '.get_bloginfo('url'), + ), + 'exceptions' => false, + 'timeout' => $post_options['timeout'], + ); + + if (!class_exists('WP_HTTP_Proxy')) require_once ABSPATH.WPINC.'/class-http.php'; + $proxy = new WP_HTTP_Proxy(); + if ($proxy->is_enabled()) { + $user = $proxy->username(); + $pass = $proxy->password(); + $host = $proxy->host(); + $port = (int) $proxy->port(); + if (empty($port)) $port = 8080; + if (!empty($host) && $proxy->send_through_proxy($this->destination_url)) { + $proxy_auth = ''; + if (!empty($user)) { + $proxy_auth = $user; + if (!empty($pass)) $proxy_auth .= ':'.$pass; + $proxy_auth .= '@'; + } + $guzzle_options['proxy'] = array( + 'http' => "http://${proxy_auth}$host:$port", + 'https' => "http://${proxy_auth}$host:$port", + ); + } + } + + if (defined('UDRPC_GUZZLE_SSL_VERIFY')) { + $verify = UDRPC_GUZZLE_SSL_VERIFY; + } elseif (file_exists(ABSPATH.WPINC.'/certificates/ca-bundle.crt')) { + $verify = ABSPATH.WPINC.'/certificates/ca-bundle.crt'; + } else { + $verify = true; + } + $guzzle_options['verify'] = apply_filters('udrpc_guzzle_verify', $verify); + + if (!empty($http_credentials['username'])) { + + $authentication_method = empty($http_credentials['authentication_method']) ? 'basic' : $http_credentials['authentication_method']; + + $password = empty($http_credentials['password']) ? '' : $http_credentials['password']; + + $guzzle_options['auth'] = array( + $http_credentials['username'], + $password, + $authentication_method, + ); + + } + + $response = $client->post($this->destination_url, apply_filters('udrpc_guzzle_options', $guzzle_options, $this)); + + $formatted_response = array( + 'response' => array( + 'code' => $response->getStatusCode(), + ), + 'body' => $response->getBody(), + ); + + return $formatted_response; + + } else { + + $post_options['user-agent'] = 'WordPress/'.$wp_version.'; class-udrpc.php/'.$this->version.'; '.get_bloginfo('url'); + + if (!empty($http_credentials['username'])) { + + $authentication_type = empty($http_credentials['authentication_type']) ? 'basic' : $http_credentials['authentication_type']; + + if ('basic' != $authentication_type) { + return new WP_Error('unsupported_http_authentication_type', 'Only HTTP basic authentication is supported (for other types, use Guzzle)'); + } + + $password = empty($http_credentials['password']) ? '' : $http_credentials['password']; + $post_options['headers'] = array( + 'Authorization' => 'Basic '.base64_encode($http_credentials['username'].':'.$password), + ); + } + + return wp_remote_post( + $this->destination_url, + $post_options + ); + } + } + + public function send_message($command, $data = null, $timeout = 20) { + + if (empty($this->destination_url)) return new WP_Error('not_initialised', 'RPC error: URL not initialised'); + + $message = $this->create_message($command, $data); + + $post_options = array( + 'timeout' => $timeout, + 'body' => $message, + ); + + $post_options = apply_filters('udrpc_post_options', $post_options, $command, $data, $timeout, $this); + + try { + $post = $this->http_post($post_options); + } catch (Exception $e) { + // Curl can return an error code 0, which causes WP_Error to return early, without recording the message. So, we prefix the code. + return new WP_Error('http_post_'.$e->getCode(), $e->getMessage()); + } + + if (is_wp_error($post)) return $post; + + $response_code = wp_remote_retrieve_response_code($post); + + if (empty($response_code)) return new WP_Error('empty_http_code', 'Unexpected HTTP response code'); + + if ($response_code < 200 || $response_code >= 300) return new WP_Error('unexpected_http_code', 'Unexpected HTTP response code ('.$response_code.')', $post); + + $response_body = wp_remote_retrieve_body($post); + + if (empty($response_body)) return new WP_Error('empty_response', 'Empty response from remote site'); + + $decoded = json_decode($response_body, true); + + if (empty($decoded)) { + + if (false != ($found_at = strpos($response_body, '{"format":'))) { + $new_body = substr($response_body, $found_at); + $decoded = json_decode($new_body, true); + } + + if (empty($decoded)) { + $this->log('response from remote site could not be understood: '.substr($response_body, 0, 100).' ... '); + + return new WP_Error('response_not_understood', 'Response from remote site could not be understood', $response_body); + } + } + + if (!is_array($decoded) || empty($decoded['udrpc_message'])) return new WP_Error('response_not_understood', 'Response from remote site was not in the expected format ('.$post['body'].')', $decoded); + + if ($this->format >= 2) { + if (empty($decoded['signature'])) { + $this->log('No message signature found'); + die; + } + if (!$this->key_remote) { + $this->log('No signature verification key has been set'); + die; + } + if (!$this->verify_signature($decoded['udrpc_message'], $decoded['signature'], $this->key_remote)) { + $this->log('Signature verification failed; discarding'); + die; + } + } + + $decoded = $this->decrypt_message($decoded['udrpc_message']); + + if (!is_string($decoded)) return new WP_Error('not_decrypted', 'Response from remote site was not successfully decrypted', $decoded['udrpc_message']); + + $json_decoded = json_decode($decoded, true); + + if (!is_array($json_decoded) || empty($json_decoded['response']) || empty($json_decoded['time']) || !is_numeric($json_decoded['time'])) return new WP_Error('response_corrupt', 'Response from remote site was not in the expected format', $decoded); + + // Don't do the reply detection until now, because $post['body'] may not be a message that originated from the remote component at all (e.g. an HTTP error) + if ($this->extra_replay_protection) { + $message_hash = $this->calculate_message_hash((string) $post['body']); + if ($this->message_hash_seen($message_hash)) { + return new WP_Error('replay_detected', 'Message refused: replay detected', $message_hash); + } + } + + $time_difference = absint(time() - $json_decoded['time']); + if ($time_difference > $this->maximum_replay_time_difference) return new WP_Error('window_error', 'Message refused: maxium replay time difference exceeded', $time_difference); + + if (isset($json_decoded['incoming_rand']) && !empty($this->message_random_number) && $json_decoded['incoming_rand'] != $this->message_random_number) { + $this->log('UDRPC: Message mismatch (possibly MITM) (sent_rand=' + $this->message_random_number + ', returned_rand='.$json_decoded['incoming_rand'].'): dropping', 'error'); + + return new WP_Error('message_mismatch_error', 'Message refused: message mismatch (possible MITM)'); + + } + + // Should be an array with keys including 'response' and (if relevant) 'data' + return $json_decoded; + + } + + // Returns a boolean indicating whether a listener was created - which depends on whether one was needed (so, false does not necessarily indicate an error condition) + public function create_listener() { + + $http_origin = function_exists('get_http_origin') ? get_http_origin() : (empty($_SERVER['HTTP_ORIGIN']) ? '' : $_SERVER['HTTP_ORIGIN']); + + // Create the WP actions to handle incoming commands, handle built-in commands (e.g. ping, create_keys (authenticate with admin creds)), dispatch them to the right place, and die + if ((!empty($_POST) && !empty($_POST['udrpc_message']) && !empty($_POST['format'])) || (!empty($_SERVER['REQUEST_METHOD']) && 'OPTIONS' == $_SERVER['REQUEST_METHOD'] && $http_origin)) { + add_action('wp_loaded', array($this, 'wp_loaded')); + add_action('wp_loaded', array($this, 'wp_loaded_final'), 10000); + + return true; + } + + return false; + } + + public function wp_loaded_final() { + $message_for = empty($_POST['key_name']) ? '' : (string) $_POST['key_name']; + $this->log("Message was received, but not understood by local site (for: $message_for)"); + die; + } + + public function wp_loaded() { + + /* + // What if something else already set some response headers? + if (function_exists('apache_response_headers')) { + $apache_response_headers = apache_response_headers(); + // Do something... + } + */ + + // CORS: https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS + // get_http_origin() : since WP 3.4 + $http_origin = function_exists('get_http_origin') ? get_http_origin() : (empty($_SERVER['HTTP_ORIGIN']) ? '' : $_SERVER['HTTP_ORIGIN']); + if (!empty($_SERVER['REQUEST_METHOD']) && 'OPTIONS' == $_SERVER['REQUEST_METHOD'] && $http_origin) { + if (in_array($http_origin, $this->allow_cors_from)) { + if (!@constant('UDRPC_DO_NOT_SEND_CORS_HEADERS')) { + header("Access-Control-Allow-Origin: $http_origin"); + header('Access-Control-Allow-Credentials: true'); + if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'])) header('Access-Control-Allow-Methods: POST, OPTIONS'); + if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) header('Access-Control-Allow-Headers: '.$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']); + } + die; + } elseif ($this->debug) { + $this->log('Non-allowed CORS from: '.$http_origin); + } + // Having detected that this is a CORS request, there's nothing more to do. We return, because a different listener might pick it up, even though we didn't. + return; + } + + // Silently return, rather than dying, in case another instance is able to handle this + if (empty($_POST['format']) || (1 != $_POST['format'] && 2 != $_POST['format'])) return; + + $format = $_POST['format']; + + /* + + In format 1 (legacy/obsolete), the one encrypts (the shared AES key) using one half of the key-pair, and decrypts with the other; whereas the other side of the conversation does the reverse when replying (and uses a different shared AES key). Though this is possible in RSA, this is the wrong thing to do - see https://crypto.stackexchange.com/questions/2123/rsa-encryption-with-private-key-and-decryption-with-a-public-key + + In format 2, both sides have their own private and public key. The sender encrypts using the other side's public key, and decrypts using its own private key. Messages are signed (the message digest is SHA-256). + + */ + + // Is this for us? + if (empty($_POST['key_name']) || $_POST['key_name'] != $this->key_name_indicator) { + return; + } + + // wp_unslash() does not exist until after WP 3.5 +// $udrpc_message = function_exists('wp_unslash') ? wp_unslash($_POST['udrpc_message']) : stripslashes_deep($_POST['udrpc_message']); + + // Data should not have any slashes - it is base64-encoded + $udrpc_message = (string) $_POST['udrpc_message']; + + // Check this now, rather than allow the decrypt method to thrown an Exception + + if (empty($this->key_local)) { + $this->log('no local key (format 1): cannot decrypt', 'error'); + die; + } + + if ($format >= 2) { + if (empty($_POST['signature'])) { + $this->log('No message signature found', 'error'); + die; + } + if (!$this->key_remote) { + $this->log('No signature verification key has been set', 'error'); + die; + } + if (!$this->verify_signature($udrpc_message, $_POST['signature'], $this->key_remote)) { + $this->log('Signature verification failed; discarding', 'error'); + die; + } + } + + try { + $udrpc_message = $this->decrypt_message($udrpc_message); + } catch (Exception $e) { + $this->log('Exception ('.get_class($e).'): '.$e->getMessage(), 'error'); + die; + } + + $udrpc_message = json_decode($udrpc_message, true); + + if (empty($udrpc_message) || !is_array($udrpc_message) || empty($udrpc_message['command']) || !is_string($udrpc_message['command'])) { + $this->log('Could not decode JSON on incoming message', 'error'); + die; + } + + if (empty($udrpc_message['time'])) { + $this->log('No time set in incoming message', 'error'); + die; + } + + // Mismatch indicating a replay of the message with a different key name in the unencrypted portion? + if (empty($udrpc_message['key_name']) || $_POST['key_name'] != $udrpc_message['key_name']) { + $this->log('key_name mismatch between encrypted and unencrypted portions', 'error'); + die; + } + + if ($this->extra_replay_protection) { + $message_hash = $this->calculate_message_hash((string) $_POST['udrpc_message']); + if ($this->message_hash_seen($message_hash)) { + $this->log("Message dropped: apparently a replay (hash: $message_hash)", 'error'); + die; + } + } + + // Do this after the extra replay protection, as that checks hashes within the maximum time window - so don't check the maximum time window until afterwards, to avoid a tiny window (race) in between. + $time_difference = absint($udrpc_message['time'] - time()); + if ($time_difference > $this->maximum_replay_time_difference) { + $this->log("Time in incoming message is outside of allowed window ($time_difference > ".$this->maximum_replay_time_difference.')', 'error'); + die; + } + + // The sequence number should always be larger than any previously-sent sequence number + if ($this->sequence_protection_tolerance) { + + if ($this->debug) $this->log('Sequence protection is active; tolerance: '.$this->sequence_protection_tolerance); + + global $wpdb; + + if (!isset($udrpc_message['sequence_id']) || !is_numeric($udrpc_message['sequence_id'])) { + $this->log('a numerical sequence number is required, but none was included in the message - dropping', 'error'); + die; + } + + $message_sequence_id = (int) $udrpc_message['sequence_id']; + $recently_seen_sequences_ids = $wpdb->get_var($wpdb->prepare('SELECT %s FROM %s LIMIT 1 WHERE '.$this->sequence_protection_where_sql, $this->sequence_protection_column, $this->sequence_protection_table)); + + if ('' === $recently_seen_sequences_ids) $recently_seen_sequences_ids = '0'; + + $recently_seen_sequences_ids_as_array = explode($recently_seen_sequences_ids, ','); + sort($recently_seen_sequences_ids_as_array); + + // Seen before? + if (in_array($message_sequence_id, $recently_seen_sequences_ids_as_array)) { + $this->log("message with duplicate sequence number received - dropping (received=$message_sequence_id, seen=$recently_seen_sequences_ids)"); + die; + } + + // Within the tolerance threshold? That means: a) either bigger than the max, or b) no more than lower than the least + if ($message_sequence_id > max($recently_seen_sequences_ids)) { + if ($this->debug) $this->log("Sequence id ($message_sequence_id) is greater than any previous (".max($recently_seen_sequences_ids).') - message is thus OK'); + // All is well + $recently_seen_sequences_ids_as_array[] = $message_sequence_id; + } elseif (max($recently_seen_sequences_ids) - $message_sequence_id <= $this->sequence_protection_tolerance) { + // All is well - was one of those 'missing' in the sequence + if ($this->debug) $this->log("Sequence id ($message_sequence_id) is within tolerance range of previous maximum (".max($recently_seen_sequences_ids).') - message is thus OK'); + $recently_seen_sequences_ids_as_array[] = $message_sequence_id; + } else { + $this->log("message received outside of allowed sequence window - dropping (received=$message_sequence_id, seen=$recently_seen_sequences_ids, tolerance=".$this->sequence_protection_tolerance.')', 'error'); + die; + } + + // Remove out-of-bounds seen IDs + $max_sequence_id_seen = max($recently_seen_sequences_ids_as_array); + foreach ($recently_seen_sequences_ids_as_array as $k => $id) { + if ($max_sequence_id_seen - $id > $this->sequence_protection_tolerance) { + if ($this->debug) $this->log("Removing no-longer-relevant sequence from list of those recently seen: $id"); + unset($recently_seen_sequences_ids_as_array[$k]); + } + } + + // Allow reset + if ($current_sequence_id > PHP_INT_MAX - 10) { + $recently_seen_sequences_ids_as_array = array(0); + } + + // Write them back to the database + $sql = $wpdb->prepare('UPDATE %s SET %s=%s WHERE '.$this->sequence_protection_where_sql, $this->sequence_protection_table, $this->sequence_protection_column, implode(',', $recently_seen_sequences_ids_as_array)); + if ($this->debug) $this->log("SQL to send recent sequence IDs back to the database: $sql"); + $wpdb->query($sql); + + } + + $this->incoming_message = $udrpc_message; + + $command = (string) $udrpc_message['command']; + $data = empty($udrpc_message['data']) ? null : $udrpc_message['data']; + + if ($http_origin && !empty($udrpc_message['cors_headers_wanted']) && !@constant('UDRPC_DO_NOT_SEND_CORS_HEADERS')) { + header("Access-Control-Allow-Origin: $http_origin"); + header('Access-Control-Allow-Credentials: true'); + } + + $this->log('Command received: '.$command, 'info'); + + if ('ping' == $command) { + echo json_encode($this->create_message('pong', null, true)); + } else { + if (has_filter('udrpc_command_'.$command)) { + $command_action_hooked = true; + $response = apply_filters('udrpc_command_'.$command, null, $data, $this->key_name_indicator); + } else { + $response = array('response' => 'rpcerror', 'data' => array('code' => 'unknown_rpc_command', 'data' => $command)); + } + + $response = apply_filters('udrpc_action', $response, $command, $data, $this->key_name_indicator, $this); + + if (is_array($response)) { + + if ($this->debug) { + $this->log('UDRPC response (pre-encoding/encryption): '.serialize($response)); + } + + $data = isset($response['data']) ? $response['data'] : null; + echo json_encode($this->create_message($response['response'], $data, true)); + } + + } + + die; + + } + + // The hash needs to be in a format that phpseclib likes. phpseclib uses lower case. + // Pass in a base64-encoded signature (i.e. just as signature_for_message creates) + // Returns a boolean + public function verify_signature($message, $signature, $key, $hash_algorithm = 'sha256') { + $this->ensure_crypto_loaded(); + $rsa = new Crypt_RSA(); + $rsa->setHash(strtolower($hash_algorithm)); + // This is not the default, but is what we use + $rsa->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1); + $rsa->loadKey($key); + + // Don't hash it - Crypt_RSA::verify() already does that +// $hash = new Crypt_Hash($hash_algorithm); +// $hashed = $hash->hash($message); + + $verified = $rsa->verify($message, base64_decode($signature)); + + if ($this->debug) $this->log('Signature verification result: '.serialize($verified)); + + return $verified; + } + + private function calculate_message_hash($message) { + return hash('sha256', $message); + } + + private function message_hash_seen($message_hash) { + // 39 characters - less than the WP site transient name limit (40). Though, we use a normal transient, as these don't auto-load at all times. + $transient_name = 'udrpch_'.md5($this->key_name_indicator); + $seen_hashes = get_transient($transient_name); + if (!is_array($seen_hashes)) $seen_hashes = array(); + $time_now = time(); +// $any_changes = false; + // Prune the old hashes + foreach ($seen_hashes as $hash => $last_seen) { + if ($last_seen < $time_now - $this->maximum_replay_time_difference) { +// $any_changes = true; + unset($seen_hashes[$hash]); + } + } + if (isset($seen_hashes[$message_hash])) { + return true; + } + $seen_hashes[$message_hash] = $time_now; + set_transient($transient_name, $seen_hashes, $this->maximum_replay_time_difference); + + return false; + } + +} +endif; diff --git a/plugins/updraftplus/includes/cloudfiles/cloudfiles.php b/plugins/updraftplus/includes/cloudfiles/cloudfiles.php new file mode 100644 index 0000000..8e35e7e --- /dev/null +++ b/plugins/updraftplus/includes/cloudfiles/cloudfiles.php @@ -0,0 +1,2632 @@ + + * # Authenticate to Cloud Files. The default is to automatically try + * # to re-authenticate if an authentication token expires. + * # + * # NOTE: Some versions of cURL include an outdated certificate authority (CA) + * # file. This API ships with a newer version obtained directly from + * # cURL's web site (http://curl.haxx.se). To use the newer CA bundle, + * # call the CF_Authentication instance's 'ssl_use_cabundle()' method. + * # + * $auth = new CF_Authentication($username, $api_key); + * # $auth->ssl_use_cabundle(); # bypass cURL's old CA bundle + * $auth->authenticate(); + * + * # Establish a connection to the storage system + * # + * # NOTE: Some versions of cURL include an outdated certificate authority (CA) + * # file. This API ships with a newer version obtained directly from + * # cURL's web site (http://curl.haxx.se). To use the newer CA bundle, + * # call the CF_Connection instance's 'ssl_use_cabundle()' method. + * # + * $conn = new CF_Connection($auth); + * # $conn->ssl_use_cabundle(); # bypass cURL's old CA bundle + * + * # Create a remote Container and storage Object + * # + * $images = $conn->create_container("photos"); + * $bday = $images->create_object("first_birthday.jpg"); + * + * # Upload content from a local file by streaming it. Note that we use + * # a "float" for the file size to overcome PHP's 32-bit integer limit for + * # very large files. + * # + * $fname = "/home/user/photos/birthdays/birthday1.jpg"; # filename to upload + * $size = (float) sprintf("%u", filesize($fname)); + * $fp = open($fname, "r"); + * $bday->write($fp, $size); + * + * # Or... use a convenience function instead + * # + * $bday->load_from_filename("/home/user/photos/birthdays/birthday1.jpg"); + * + * # Now, publish the "photos" container to serve the images by CDN. + * # Use the "$uri" value to put in your web pages or send the link in an + * # email message, etc. + * # + * $uri = $images->make_public(); + * + * # Or... print out the Object's public URI + * # + * print $bday->public_uri(); + * + * + * See the included tests directory for additional sample code. + * + * Requres PHP 5.x (for Exceptions and OO syntax) and PHP's cURL module. + * + * It uses the supporting "cloudfiles_http.php" module for HTTP(s) support and + * allows for connection re-use and streaming of content into/out of Cloud Files + * via PHP's cURL module. + * + * See COPYING for license information. + * + * @author Eric "EJ" Johnson + * @copyright Copyright (c) 2008, Rackspace US, Inc. + * @package php-cloudfiles + */ + +/** + */ +require_once(UPDRAFTPLUS_DIR."/includes/cloudfiles/cloudfiles_exceptions.php"); +require_once(UPDRAFTPLUS_DIR."/includes/cloudfiles/cloudfiles_http.php"); +@define("DEFAULT_CF_API_VERSION", 1); +@define("MAX_CONTAINER_NAME_LEN", 256); +@define("MAX_OBJECT_NAME_LEN", 1024); +@define("MAX_OBJECT_SIZE", 5*1024*1024*1024+1); +@define("US_AUTHURL", "https://auth.api.rackspacecloud.com"); +@define("UK_AUTHURL", "https://lon.auth.api.rackspacecloud.com"); +/** + * Class for handling Cloud Files Authentication, call it's {@link authenticate()} + * method to obtain authorized service urls and an authentication token. + * + * Example: + * + * # Create the authentication instance + * # + * $auth = new CF_Authentication("username", "api_key"); + * + * # NOTE: For UK Customers please specify your AuthURL Manually + * # There is a Predfined constant to use EX: + * # + * # $auth = new CF_Authentication("username, "api_key", NULL, UK_AUTHURL); + * # Using the UK_AUTHURL keyword will force the api to use the UK AuthUrl. + * # rather then the US one. The NULL Is passed for legacy purposes and must + * # be passed to function correctly. + * + * # NOTE: Some versions of cURL include an outdated certificate authority (CA) + * # file. This API ships with a newer version obtained directly from + * # cURL's web site (http://curl.haxx.se). To use the newer CA bundle, + * # call the CF_Authentication instance's 'ssl_use_cabundle()' method. + * # + * # $auth->ssl_use_cabundle(); # bypass cURL's old CA bundle + * + * # Perform authentication request + * # + * $auth->authenticate(); + * + * + * @package php-cloudfiles + */ +class UpdraftPlus_CF_Authentication +{ + public $dbug; + public $username; + public $api_key; + public $auth_host; + public $account; + + /** + * Instance variables that are set after successful authentication + */ + public $storage_url; + public $cdnm_url; + public $auth_token; + + /** + * Class constructor (PHP 5 syntax) + * + * @param string $username Mosso username + * @param string $api_key Mosso API Access Key + * @param string $account Account name + * @param string $auth_host Authentication service URI + */ + function __construct($username=NULL, $api_key=NULL, $account=NULL, $auth_host=US_AUTHURL) + { + + $this->dbug = False; + $this->username = $username; + $this->api_key = $api_key; + $this->account_name = $account; + $this->auth_host = $auth_host; + + $this->storage_url = NULL; + $this->cdnm_url = NULL; + $this->auth_token = NULL; + + $this->cfs_http = new UpdraftPlus_CF_Http(DEFAULT_CF_API_VERSION); + } + + /** + * Use the Certificate Authority bundle included with this API + * + * Most versions of PHP with cURL support include an outdated Certificate + * Authority (CA) bundle (the file that lists all valid certificate + * signing authorities). The SSL certificates used by the Cloud Files + * storage system are perfectly valid but have been created/signed by + * a CA not listed in these outdated cURL distributions. + * + * As a work-around, we've included an updated CA bundle obtained + * directly from cURL's web site (http://curl.haxx.se). You can direct + * the API to use this CA bundle by calling this method prior to making + * any remote calls. The best place to use this method is right after + * the CF_Authentication instance has been instantiated. + * + * You can specify your own CA bundle by passing in the full pathname + * to the bundle. You can use the included CA bundle by leaving the + * argument blank. + * + * @param string $path Specify path to CA bundle (default to included) + */ + function ssl_use_cabundle($path=NULL) + { + $this->cfs_http->ssl_use_cabundle($path); + } + + /** + * Attempt to validate Username/API Access Key + * + * Attempts to validate credentials with the authentication service. It + * either returns True or throws an Exception. Accepts a single + * (optional) argument for the storage system API version. + * + * Example: + * + * # Create the authentication instance + * # + * $auth = new CF_Authentication("username", "api_key"); + * + * # Perform authentication request + * # + * $auth->authenticate(); + * + * + * @param string $version API version for Auth service (optional) + * @return boolean True if successfully authenticated + * @throws AuthenticationException invalid credentials + * @throws InvalidResponseException invalid response + */ + function authenticate($version=DEFAULT_CF_API_VERSION) + { + list($status,$reason,$surl,$curl,$atoken) = + $this->cfs_http->authenticate($this->username, $this->api_key, + $this->account_name, $this->auth_host); + + if ($status == 401) { + throw new AuthenticationException("Invalid username or access key."); + } + if ($status < 200 || $status > 299) { + throw new InvalidResponseException( + "Unexpected response (".$status."): ".$reason); + } + + if (!($surl || $curl) || !$atoken) { + throw new InvalidResponseException( + "Expected headers missing from auth service."); + } + $this->storage_url = $surl; + $this->cdnm_url = $curl; + $this->auth_token = $atoken; + return True; + } + /** + * Use Cached Token and Storage URL's rather then grabbing from the Auth System + * + * Example: + * + * #Create an Auth instance + * $auth = new CF_Authentication(); + * #Pass Cached URL's and Token as Args + * $auth->load_cached_credentials("auth_token", "storage_url", "cdn_management_url"); + * + * + * @param string $auth_token A Cloud Files Auth Token (Required) + * @param string $storage_url The Cloud Files Storage URL (Required) + * @param string $cdnm_url CDN Management URL (Required) + * @return boolean True if successful + * @throws SyntaxException If any of the Required Arguments are missing + */ + function load_cached_credentials($auth_token, $storage_url, $cdnm_url) + { + if(!$storage_url || !$cdnm_url) + { + throw new SyntaxException("Missing Required Interface URL's!"); + return False; + } + if(!$auth_token) + { + throw new SyntaxException("Missing Auth Token!"); + return False; + } + + $this->storage_url = $storage_url; + $this->cdnm_url = $cdnm_url; + $this->auth_token = $auth_token; + return True; + } + /** + * Grab Cloud Files info to be Cached for later use with the load_cached_credentials method. + * + * Example: + * + * #Create an Auth instance + * $auth = new CF_Authentication("UserName","API_Key"); + * $auth->authenticate(); + * $array = $auth->export_credentials(); + * + * + * @return array of url's and an auth token. + */ + function export_credentials() + { + $arr = array(); + $arr['storage_url'] = $this->storage_url; + $arr['cdnm_url'] = $this->cdnm_url; + $arr['auth_token'] = $this->auth_token; + + return $arr; + } + + + /** + * Make sure the CF_Authentication instance has authenticated. + * + * Ensures that the instance variables necessary to communicate with + * Cloud Files have been set from a previous authenticate() call. + * + * @return boolean True if successfully authenticated + */ + function authenticated() + { + if (!($this->storage_url || $this->cdnm_url) || !$this->auth_token) { + return False; + } + return True; + } + + /** + * Toggle debugging - set cURL verbose flag + */ + function setDebug($bool) + { + $this->dbug = $bool; + $this->cfs_http->setDebug($bool); + } +} + +/** + * Class for establishing connections to the Cloud Files storage system. + * Connection instances are used to communicate with the storage system at + * the account level; listing and deleting Containers and returning Container + * instances. + * + * Example: + * + * # Create the authentication instance + * # + * $auth = new CF_Authentication("username", "api_key"); + * + * # Perform authentication request + * # + * $auth->authenticate(); + * + * # Create a connection to the storage/cdn system(s) and pass in the + * # validated CF_Authentication instance. + * # + * $conn = new CF_Connection($auth); + * + * # NOTE: Some versions of cURL include an outdated certificate authority (CA) + * # file. This API ships with a newer version obtained directly from + * # cURL's web site (http://curl.haxx.se). To use the newer CA bundle, + * # call the CF_Authentication instance's 'ssl_use_cabundle()' method. + * # + * # $conn->ssl_use_cabundle(); # bypass cURL's old CA bundle + * + * + * @package php-cloudfiles + */ +class UpdraftPlus_CF_Connection +{ + public $dbug; + public $cfs_http; + public $cfs_auth; + + /** + * Pass in a previously authenticated CF_Authentication instance. + * + * Example: + * + * # Create the authentication instance + * # + * $auth = new CF_Authentication("username", "api_key"); + * + * # Perform authentication request + * # + * $auth->authenticate(); + * + * # Create a connection to the storage/cdn system(s) and pass in the + * # validated CF_Authentication instance. + * # + * $conn = new CF_Connection($auth); + * + * # If you are connecting via Rackspace servers and have access + * # to the servicenet network you can set the $servicenet to True + * # like this. + * + * $conn = new CF_Connection($auth, $servicenet=True); + * + * + * + * If the environement variable RACKSPACE_SERVICENET is defined it will + * force to connect via the servicenet. + * + * @param obj $cfs_auth previously authenticated CF_Authentication instance + * @param boolean $servicenet enable/disable access via Rackspace servicenet. + * @throws AuthenticationException not authenticated + */ + function __construct($cfs_auth, $servicenet=False) + { + if (isset($_ENV['RACKSPACE_SERVICENET'])) + $servicenet=True; + $this->cfs_http = new UpdraftPlus_CF_Http(DEFAULT_CF_API_VERSION); + $this->cfs_auth = $cfs_auth; + if (!$this->cfs_auth->authenticated()) { + $e = "Need to pass in a previously authenticated "; + $e .= "CF_Authentication instance."; + throw new AuthenticationException($e); + } + $this->cfs_http->setCFAuth($this->cfs_auth, $servicenet=$servicenet); + $this->dbug = False; + } + + /** + * Toggle debugging of instance and back-end HTTP module + * + * @param boolean $bool enable/disable cURL debugging + */ + function setDebug($bool) + { + $this->dbug = (boolean) $bool; + $this->cfs_http->setDebug($this->dbug); + } + + /** + * Close a connection + * + * Example: + * + * + * $conn->close(); + * + * + * + * Will close all current cUrl active connections. + * + */ + public function close() + { + $this->cfs_http->close(); + } + + /** + * Cloud Files account information + * + * Return an array of two floats (since PHP only supports 32-bit integers); + * number of containers on the account and total bytes used for the account. + * + * Example: + * + * # ... authentication code excluded (see previous examples) ... + * # + * $conn = new CF_Connection($auth); + * + * list($quantity, $bytes) = $conn->get_info(); + * print "Number of containers: " . $quantity . "\n"; + * print "Bytes stored in container: " . $bytes . "\n"; + * + * + * @return array (number of containers, total bytes stored) + * @throws InvalidResponseException unexpected response + */ + function get_info() + { + list($status, $reason, $container_count, $total_bytes) = + $this->cfs_http->head_account(); + #if ($status == 401 && $this->_re_auth()) { + # return $this->get_info(); + #} + if ($status < 200 || $status > 299) { + throw new InvalidResponseException( + "Invalid response (".$status."): ".$this->cfs_http->get_error()); + } + return array($container_count, $total_bytes); + } + + /** + * Create a Container + * + * Given a Container name, return a Container instance, creating a new + * remote Container if it does not exit. + * + * Example: + * + * # ... authentication code excluded (see previous examples) ... + * # + * $conn = new CF_Connection($auth); + * + * $images = $conn->create_container("my photos"); + * + * + * @param string $container_name container name + * @return CF_Container + * @throws SyntaxException invalid name + * @throws InvalidResponseException unexpected response + */ + function create_container($container_name=NULL) + { + if ($container_name != "0" and !isset($container_name)) + throw new SyntaxException("Container name not set."); + + if (!isset($container_name) or $container_name == "") + throw new SyntaxException("Container name not set."); + + if (strpos($container_name, "/") !== False) { + $r = "Container name '".$container_name; + $r .= "' cannot contain a '/' character."; + throw new SyntaxException($r); + } + if (strlen($container_name) > MAX_CONTAINER_NAME_LEN) { + throw new SyntaxException(sprintf( + "Container name exeeds %d bytes.", + MAX_CONTAINER_NAME_LEN)); + } + + $return_code = $this->cfs_http->create_container($container_name); + if (!$return_code) { + throw new InvalidResponseException("Invalid response (" + . $return_code. "): " . $this->cfs_http->get_error()); + } + #if ($status == 401 && $this->_re_auth()) { + # return $this->create_container($container_name); + #} + if ($return_code != 201 && $return_code != 202) { + throw new InvalidResponseException( + "Invalid response (".$return_code."): " + . $this->cfs_http->get_error()); + } + return new UpdraftPlus_CF_Container($this->cfs_auth, $this->cfs_http, $container_name); + } + + /** + * Delete a Container + * + * Given either a Container instance or name, remove the remote Container. + * The Container must be empty prior to removing it. + * + * Example: + * + * # ... authentication code excluded (see previous examples) ... + * # + * $conn = new CF_Connection($auth); + * + * $conn->delete_container("my photos"); + * + * + * @param string|obj $container container name or instance + * @return boolean True if successfully deleted + * @throws SyntaxException missing proper argument + * @throws InvalidResponseException invalid response + * @throws NonEmptyContainerException container not empty + * @throws NoSuchContainerException remote container does not exist + */ + function delete_container($container=NULL) + { + $container_name = NULL; + + if (is_object($container)) { + if (get_class($container) == "UpdraftPlus_CF_Container") { + $container_name = $container->name; + } + } + if (is_string($container)) { + $container_name = $container; + } + + if ($container_name != "0" and !isset($container_name)) + throw new SyntaxException("Must specify container object or name."); + + $return_code = $this->cfs_http->delete_container($container_name); + + if (!$return_code) { + throw new InvalidResponseException("Failed to obtain http response"); + } + #if ($status == 401 && $this->_re_auth()) { + # return $this->delete_container($container); + #} + if ($return_code == 409) { + throw new NonEmptyContainerException( + "Container must be empty prior to removing it."); + } + if ($return_code == 404) { + throw new NoSuchContainerException( + "Specified container did not exist to delete."); + } + if ($return_code != 204) { + throw new InvalidResponseException( + "Invalid response (".$return_code."): " + . $this->cfs_http->get_error()); + } + return True; + } + + /** + * Return a Container instance + * + * For the given name, return a Container instance if the remote Container + * exists, otherwise throw a Not Found exception. + * + * Example: + * + * # ... authentication code excluded (see previous examples) ... + * # + * $conn = new CF_Connection($auth); + * + * $images = $conn->get_container("my photos"); + * print "Number of Objects: " . $images->count . "\n"; + * print "Bytes stored in container: " . $images->bytes . "\n"; + * + * + * @param string $container_name name of the remote Container + * @return container CF_Container instance + * @throws NoSuchContainerException thrown if no remote Container + * @throws InvalidResponseException unexpected response + */ + function get_container($container_name=NULL) + { + list($status, $reason, $count, $bytes) = + $this->cfs_http->head_container($container_name); + #if ($status == 401 && $this->_re_auth()) { + # return $this->get_container($container_name); + #} + if ($status == 404) { + throw new NoSuchContainerException("Container not found."); + } + if ($status < 200 || $status > 299) { + throw new InvalidResponseException( + "Invalid response: ".$this->cfs_http->get_error()); + } + return new UpdraftPlus_3CF_Container($this->cfs_auth, $this->cfs_http, + $container_name, $count, $bytes); + } + + /** + * Return array of Container instances + * + * Return an array of CF_Container instances on the account. The instances + * will be fully populated with Container attributes (bytes stored and + * Object count) + * + * Example: + * + * # ... authentication code excluded (see previous examples) ... + * # + * $conn = new CF_Connection($auth); + * + * $clist = $conn->get_containers(); + * foreach ($clist as $cont) { + * print "Container name: " . $cont->name . "\n"; + * print "Number of Objects: " . $cont->count . "\n"; + * print "Bytes stored in container: " . $cont->bytes . "\n"; + * } + * + * + * @return array An array of CF_Container instances + * @throws InvalidResponseException unexpected response + */ + function get_containers($limit=0, $marker=NULL) + { + list($status, $reason, $container_info) = + $this->cfs_http->list_containers_info($limit, $marker); + #if ($status == 401 && $this->_re_auth()) { + # return $this->get_containers(); + #} + if ($status < 200 || $status > 299) { + throw new InvalidResponseException( + "Invalid response: ".$this->cfs_http->get_error()); + } + $containers = array(); + foreach ($container_info as $name => $info) { + $containers[] = new UpdraftPlus_CF_Container($this->cfs_auth, $this->cfs_http, + $info['name'], $info["count"], $info["bytes"], False); + } + return $containers; + } + + /** + * Return list of remote Containers + * + * Return an array of strings containing the names of all remote Containers. + * + * Example: + * + * # ... authentication code excluded (see previous examples) ... + * # + * $conn = new CF_Connection($auth); + * + * $container_list = $conn->list_containers(); + * print_r($container_list); + * Array + * ( + * [0] => "my photos", + * [1] => "my docs" + * ) + * + * + * @param integer $limit restrict results to $limit Containers + * @param string $marker return results greater than $marker + * @return array list of remote Containers + * @throws InvalidResponseException unexpected response + */ + function list_containers($limit=0, $marker=NULL) + { + list($status, $reason, $containers) = + $this->cfs_http->list_containers($limit, $marker); + #if ($status == 401 && $this->_re_auth()) { + # return $this->list_containers($limit, $marker); + #} + if ($status < 200 || $status > 299) { + throw new InvalidResponseException( + "Invalid response (".$status."): ".$this->cfs_http->get_error()); + } + return $containers; + } + + /** + * Return array of information about remote Containers + * + * Return a nested array structure of Container info. + * + * Example: + * + * # ... authentication code excluded (see previous examples) ... + * # + * + * $container_info = $conn->list_containers_info(); + * print_r($container_info); + * Array + * ( + * ["my photos"] => + * Array + * ( + * ["bytes"] => 78, + * ["count"] => 2 + * ) + * ["docs"] => + * Array + * ( + * ["bytes"] => 37323, + * ["count"] => 12 + * ) + * ) + * + * + * @param integer $limit restrict results to $limit Containers + * @param string $marker return results greater than $marker + * @return array nested array structure of Container info + * @throws InvalidResponseException unexpected response + */ + function list_containers_info($limit=0, $marker=NULL) + { + list($status, $reason, $container_info) = + $this->cfs_http->list_containers_info($limit, $marker); + #if ($status == 401 && $this->_re_auth()) { + # return $this->list_containers_info($limit, $marker); + #} + if ($status < 200 || $status > 299) { + throw new InvalidResponseException( + "Invalid response (".$status."): ".$this->cfs_http->get_error()); + } + return $container_info; + } + + /** + * Return list of Containers that have been published to the CDN. + * + * Return an array of strings containing the names of published Containers. + * Note that this function returns the list of any Container that has + * ever been CDN-enabled regardless of it's existence in the storage + * system. + * + * Example: + * + * # ... authentication code excluded (see previous examples) ... + * # + * $conn = new CF_Connection($auth); + * + * $public_containers = $conn->list_public_containers(); + * print_r($public_containers); + * Array + * ( + * [0] => "images", + * [1] => "css", + * [2] => "javascript" + * ) + * + * + * @param bool $enabled_only Will list all containers ever CDN enabled if * set to false or only currently enabled CDN containers if set to true. * Defaults to false. + * @return array list of published Container names + * @throws InvalidResponseException unexpected response + */ + function list_public_containers($enabled_only=False) + { + list($status, $reason, $containers) = + $this->cfs_http->list_cdn_containers($enabled_only); + #if ($status == 401 && $this->_re_auth()) { + # return $this->list_public_containers(); + #} + if ($status < 200 || $status > 299) { + throw new InvalidResponseException( + "Invalid response (".$status."): ".$this->cfs_http->get_error()); + } + return $containers; + } + + /** + * Set a user-supplied callback function to report download progress + * + * The callback function is used to report incremental progress of a data + * download functions (e.g. $container->list_objects(), $obj->read(), etc). + * The specified function will be periodically called with the number of + * bytes transferred until the entire download is complete. This callback + * function can be useful for implementing "progress bars" for large + * downloads. + * + * The specified callback function should take a single integer parameter. + * + * + * function read_callback($bytes_transferred) { + * print ">> downloaded " . $bytes_transferred . " bytes.\n"; + * # ... do other things ... + * return; + * } + * + * $conn = new CF_Connection($auth_obj); + * $conn->set_read_progress_function("read_callback"); + * print_r($conn->list_containers()); + * + * # output would look like this: + * # + * >> downloaded 10 bytes. + * >> downloaded 11 bytes. + * Array + * ( + * [0] => fuzzy.txt + * [1] => space name + * ) + * + * + * @param string $func_name the name of the user callback function + */ + function set_read_progress_function($func_name) + { + $this->cfs_http->setReadProgressFunc($func_name); + } + + /** + * Set a user-supplied callback function to report upload progress + * + * The callback function is used to report incremental progress of a data + * upload functions (e.g. $obj->write() call). The specified function will + * be periodically called with the number of bytes transferred until the + * entire upload is complete. This callback function can be useful + * for implementing "progress bars" for large uploads/downloads. + * + * The specified callback function should take a single integer parameter. + * + * + * function write_callback($bytes_transferred) { + * print ">> uploaded " . $bytes_transferred . " bytes.\n"; + * # ... do other things ... + * return; + * } + * + * $conn = new CF_Connection($auth_obj); + * $conn->set_write_progress_function("write_callback"); + * $container = $conn->create_container("stuff"); + * $obj = $container->create_object("foo"); + * $obj->write("The callback function will be called during upload."); + * + * # output would look like this: + * # >> uploaded 51 bytes. + * # + * + * + * @param string $func_name the name of the user callback function + */ + function set_write_progress_function($func_name) + { + $this->cfs_http->setWriteProgressFunc($func_name); + } + + /** + * Use the Certificate Authority bundle included with this API + * + * Most versions of PHP with cURL support include an outdated Certificate + * Authority (CA) bundle (the file that lists all valid certificate + * signing authorities). The SSL certificates used by the Cloud Files + * storage system are perfectly valid but have been created/signed by + * a CA not listed in these outdated cURL distributions. + * + * As a work-around, we've included an updated CA bundle obtained + * directly from cURL's web site (http://curl.haxx.se). You can direct + * the API to use this CA bundle by calling this method prior to making + * any remote calls. The best place to use this method is right after + * the CF_Authentication instance has been instantiated. + * + * You can specify your own CA bundle by passing in the full pathname + * to the bundle. You can use the included CA bundle by leaving the + * argument blank. + * + * @param string $path Specify path to CA bundle (default to included) + */ + function ssl_use_cabundle($path=NULL) + { + $this->cfs_http->ssl_use_cabundle($path); + } + + #private function _re_auth() + #{ + # $new_auth = new CF_Authentication( + # $this->cfs_auth->username, + # $this->cfs_auth->api_key, + # $this->cfs_auth->auth_host, + # $this->cfs_auth->account); + # $new_auth->authenticate(); + # $this->cfs_auth = $new_auth; + # $this->cfs_http->setCFAuth($this->cfs_auth); + # return True; + #} +} + +/** + * Container operations + * + * Containers are storage compartments where you put your data (objects). + * A container is similar to a directory or folder on a conventional filesystem + * with the exception that they exist in a flat namespace, you can not create + * containers inside of containers. + * + * You also have the option of marking a Container as "public" so that the + * Objects stored in the Container are publicly available via the CDN. + * + * @package php-cloudfiles + */ +class UpdraftPlus_CF_Container +{ + public $cfs_auth; + public $cfs_http; + public $name; + public $object_count; + public $bytes_used; + public $metadata; + public $cdn_enabled; + public $cdn_streaming_uri; + public $cdn_ssl_uri; + public $cdn_uri; + public $cdn_ttl; + public $cdn_log_retention; + public $cdn_acl_user_agent; + public $cdn_acl_referrer; + + /** + * Class constructor + * + * Constructor for Container + * + * @param obj $cfs_auth CF_Authentication instance + * @param obj $cfs_http HTTP connection manager + * @param string $name name of Container + * @param int $count number of Objects stored in this Container + * @param int $bytes number of bytes stored in this Container + * @throws SyntaxException invalid Container name + */ + function __construct(&$cfs_auth, &$cfs_http, $name, $count=0, + $bytes=0, $docdn=True) + { + if (strlen($name) > MAX_CONTAINER_NAME_LEN) { + throw new SyntaxException("Container name exceeds " + . "maximum allowed length."); + } + if (strpos($name, "/") !== False) { + throw new SyntaxException( + "Container names cannot contain a '/' character."); + } + $this->cfs_auth = $cfs_auth; + $this->cfs_http = $cfs_http; + $this->name = $name; + $this->object_count = $count; + $this->bytes_used = $bytes; + $this->metadata = array(); + $this->cdn_enabled = NULL; + $this->cdn_uri = NULL; + $this->cdn_ssl_uri = NULL; + $this->cdn_streaming_uri = NULL; + $this->cdn_ttl = NULL; + $this->cdn_log_retention = NULL; + $this->cdn_acl_user_agent = NULL; + $this->cdn_acl_referrer = NULL; + if ($this->cfs_http->getCDNMUrl() != NULL && $docdn) { + $this->_cdn_initialize(); + } + } + + /** + * String representation of Container + * + * Pretty print the Container instance. + * + * @return string Container details + */ + function __toString() + { + $me = sprintf("name: %s, count: %.0f, bytes: %.0f", + $this->name, $this->object_count, $this->bytes_used); + if ($this->cfs_http->getCDNMUrl() != NULL) { + $me .= sprintf(", cdn: %s, cdn uri: %s, cdn ttl: %.0f, logs retention: %s", + $this->is_public() ? "Yes" : "No", + $this->cdn_uri, $this->cdn_ttl, + $this->cdn_log_retention ? "Yes" : "No" + ); + + if ($this->cdn_acl_user_agent != NULL) { + $me .= ", cdn acl user agent: " . $this->cdn_acl_user_agent; + } + + if ($this->cdn_acl_referrer != NULL) { + $me .= ", cdn acl referrer: " . $this->cdn_acl_referrer; + } + + + } + return $me; + } + + /** + * Enable Container content to be served via CDN or modify CDN attributes + * + * Either enable this Container's content to be served via CDN or + * adjust its CDN attributes. This Container will always return the + * same CDN-enabled URI each time it is toggled public/private/public. + * + * Example: + * + * # ... authentication code excluded (see previous examples) ... + * # + * $conn = new CF_Connection($auth); + * + * $public_container = $conn->create_container("public"); + * + * # CDN-enable the container and set it's TTL for a month + * # + * $public_container->make_public(86400/2); # 12 hours (86400 seconds/day) + * + * + * @param int $ttl the time in seconds content will be cached in the CDN + * @returns string the CDN enabled Container's URI + * @throws CDNNotEnabledException CDN functionality not returned during auth + * @throws AuthenticationException if auth token is not valid/expired + * @throws InvalidResponseException unexpected response + */ + function make_public($ttl=86400) + { + if ($this->cfs_http->getCDNMUrl() == NULL) { + throw new CDNNotEnabledException( + "Authentication response did not indicate CDN availability"); + } + if ($this->cdn_uri != NULL) { + # previously published, assume we're setting new attributes + list($status, $reason, $cdn_uri, $cdn_ssl_uri) = + $this->cfs_http->update_cdn_container($this->name,$ttl, + $this->cdn_log_retention, + $this->cdn_acl_user_agent, + $this->cdn_acl_referrer); + #if ($status == 401 && $this->_re_auth()) { + # return $this->make_public($ttl); + #} + if ($status == 404) { + # this instance _thinks_ the container was published, but the + # cdn management system thinks otherwise - try again with a PUT + list($status, $reason, $cdn_uri, $cdn_ssl_uri) = + $this->cfs_http->add_cdn_container($this->name,$ttl); + + } + } else { + # publish it for first time + list($status, $reason, $cdn_uri, $cdn_ssl_uri) = + $this->cfs_http->add_cdn_container($this->name,$ttl); + } + #if ($status == 401 && $this->_re_auth()) { + # return $this->make_public($ttl); + #} + if (!in_array($status, array(201,202))) { + throw new InvalidResponseException( + "Invalid response (".$status."): ".$this->cfs_http->get_error()); + } + $this->cdn_enabled = True; + $this->cdn_ttl = $ttl; + $this->cdn_ssl_uri = $cdn_ssl_uri; + $this->cdn_uri = $cdn_uri; + $this->cdn_log_retention = False; + $this->cdn_acl_user_agent = ""; + $this->cdn_acl_referrer = ""; + return $this->cdn_uri; + } + /** + * Purge Containers objects from CDN Cache. + * Example: + * + * # ... authentication code excluded (see previous examples) ... + * # + * $conn = new CF_Connection($auth); + * $container = $conn->get_container("cdn_enabled"); + * $container->purge_from_cdn("user@domain.com"); + * # or + * $container->purge_from_cdn(); + * # or + * $container->purge_from_cdn("user1@domain.com,user2@domain.com"); + * @returns boolean True if successful + * @throws CDNNotEnabledException if CDN Is not enabled on this connection + * @throws InvalidResponseException if the response expected is not returned + */ + function purge_from_cdn($email=null) + { + if (!$this->cfs_http->getCDNMUrl()) + { + throw new CDNNotEnabledException( + "Authentication response did not indicate CDN availability"); + } + $status = $this->cfs_http->purge_from_cdn($this->name, $email); + if ($status < 199 or $status > 299) { + throw new InvalidResponseException( + "Invalid response (".$status."): ".$this->cfs_http->get_error()); + } + return True; + } + /** + * Enable ACL restriction by User Agent for this container. + * + * Example: + * + * # ... authentication code excluded (see previous examples) ... + * # + * $conn = new CF_Connection($auth); + * + * $public_container = $conn->get_container("public"); + * + * # Enable ACL by Referrer + * $public_container->acl_referrer("Mozilla"); + * + * + * @returns boolean True if successful + * @throws CDNNotEnabledException CDN functionality not returned during auth + * @throws AuthenticationException if auth token is not valid/expired + * @throws InvalidResponseException unexpected response + */ + function acl_user_agent($cdn_acl_user_agent="") { + if ($this->cfs_http->getCDNMUrl() == NULL) { + throw new CDNNotEnabledException( + "Authentication response did not indicate CDN availability"); + } + list($status,$reason) = + $this->cfs_http->update_cdn_container($this->name, + $this->cdn_ttl, + $this->cdn_log_retention, + $cdn_acl_user_agent, + $this->cdn_acl_referrer + ); + if (!in_array($status, array(202,404))) { + throw new InvalidResponseException( + "Invalid response (".$status."): ".$this->cfs_http->get_error()); + } + $this->cdn_acl_user_agent = $cdn_acl_user_agent; + return True; + } + + /** + * Enable ACL restriction by referer for this container. + * + * Example: + * + * # ... authentication code excluded (see previous examples) ... + * # + * $conn = new CF_Connection($auth); + * + * $public_container = $conn->get_container("public"); + * + * # Enable Referrer + * $public_container->acl_referrer("http://www.example.com/gallery.php"); + * + * + * @returns boolean True if successful + * @throws CDNNotEnabledException CDN functionality not returned during auth + * @throws AuthenticationException if auth token is not valid/expired + * @throws InvalidResponseException unexpected response + */ + function acl_referrer($cdn_acl_referrer="") { + if ($this->cfs_http->getCDNMUrl() == NULL) { + throw new CDNNotEnabledException( + "Authentication response did not indicate CDN availability"); + } + list($status,$reason) = + $this->cfs_http->update_cdn_container($this->name, + $this->cdn_ttl, + $this->cdn_log_retention, + $this->cdn_acl_user_agent, + $cdn_acl_referrer + ); + if (!in_array($status, array(202,404))) { + throw new InvalidResponseException( + "Invalid response (".$status."): ".$this->cfs_http->get_error()); + } + $this->cdn_acl_referrer = $cdn_acl_referrer; + return True; + } + + /** + * Enable log retention for this CDN container. + * + * Enable CDN log retention on the container. If enabled logs will + * be periodically (at unpredictable intervals) compressed and + * uploaded to a ".CDN_ACCESS_LOGS" container in the form of + * "container_name.YYYYMMDDHH-XXXX.gz". Requires CDN be enabled on + * the account. + * + * Example: + * + * # ... authentication code excluded (see previous examples) ... + * # + * $conn = new CF_Connection($auth); + * + * $public_container = $conn->get_container("public"); + * + * # Enable logs retention. + * $public_container->log_retention(True); + * + * + * @returns boolean True if successful + * @throws CDNNotEnabledException CDN functionality not returned during auth + * @throws AuthenticationException if auth token is not valid/expired + * @throws InvalidResponseException unexpected response + */ + function log_retention($cdn_log_retention=False) { + if ($this->cfs_http->getCDNMUrl() == NULL) { + throw new CDNNotEnabledException( + "Authentication response did not indicate CDN availability"); + } + list($status,$reason) = + $this->cfs_http->update_cdn_container($this->name, + $this->cdn_ttl, + $cdn_log_retention, + $this->cdn_acl_user_agent, + $this->cdn_acl_referrer + ); + if (!in_array($status, array(202,404))) { + throw new InvalidResponseException( + "Invalid response (".$status."): ".$this->cfs_http->get_error()); + } + $this->cdn_log_retention = $cdn_log_retention; + return True; + } + + /** + * Disable the CDN sharing for this container + * + * Use this method to disallow distribution into the CDN of this Container's + * content. + * + * NOTE: Any content already cached in the CDN will continue to be served + * from its cache until the TTL expiration transpires. The default + * TTL is typically one day, so "privatizing" the Container will take + * up to 24 hours before the content is purged from the CDN cache. + * + * Example: + * + * # ... authentication code excluded (see previous examples) ... + * # + * $conn = new CF_Connection($auth); + * + * $public_container = $conn->get_container("public"); + * + * # Disable CDN accessability + * # ... still cached up to a month based on previous example + * # + * $public_container->make_private(); + * + * + * @returns boolean True if successful + * @throws CDNNotEnabledException CDN functionality not returned during auth + * @throws AuthenticationException if auth token is not valid/expired + * @throws InvalidResponseException unexpected response + */ + function make_private() + { + if ($this->cfs_http->getCDNMUrl() == NULL) { + throw new CDNNotEnabledException( + "Authentication response did not indicate CDN availability"); + } + list($status,$reason) = $this->cfs_http->remove_cdn_container($this->name); + #if ($status == 401 && $this->_re_auth()) { + # return $this->make_private(); + #} + if (!in_array($status, array(202,404))) { + throw new InvalidResponseException( + "Invalid response (".$status."): ".$this->cfs_http->get_error()); + } + $this->cdn_enabled = False; + $this->cdn_ttl = NULL; + $this->cdn_uri = NULL; + $this->cdn_ssl_uri = NULL; + $this->cdn_streaming_uri - NULL; + $this->cdn_log_retention = NULL; + $this->cdn_acl_user_agent = NULL; + $this->cdn_acl_referrer = NULL; + return True; + } + + /** + * Check if this Container is being publicly served via CDN + * + * Use this method to determine if the Container's content is currently + * available through the CDN. + * + * Example: + * + * # ... authentication code excluded (see previous examples) ... + * # + * $conn = new CF_Connection($auth); + * + * $public_container = $conn->get_container("public"); + * + * # Display CDN accessability + * # + * $public_container->is_public() ? print "Yes" : print "No"; + * + * + * @returns boolean True if enabled, False otherwise + */ + function is_public() + { + return $this->cdn_enabled == True ? True : False; + } + + /** + * Create a new remote storage Object + * + * Return a new Object instance. If the remote storage Object exists, + * the instance's attributes are populated. + * + * Example: + * + * # ... authentication code excluded (see previous examples) ... + * # + * $conn = new CF_Connection($auth); + * + * $public_container = $conn->get_container("public"); + * + * # This creates a local instance of a storage object but only creates + * # it in the storage system when the object's write() method is called. + * # + * $pic = $public_container->create_object("baby.jpg"); + * + * + * @param string $obj_name name of storage Object + * @return obj CF_Object instance + */ + function create_object($obj_name=NULL) + { + return new UpdraftPlus_CF_Object($this, $obj_name); + } + + /** + * Return an Object instance for the remote storage Object + * + * Given a name, return a Object instance representing the + * remote storage object. + * + * Example: + * + * # ... authentication code excluded (see previous examples) ... + * # + * $conn = new CF_Connection($auth); + * + * $public_container = $conn->get_container("public"); + * + * # This call only fetches header information and not the content of + * # the storage object. Use the Object's read() or stream() methods + * # to obtain the object's data. + * # + * $pic = $public_container->get_object("baby.jpg"); + * + * + * @param string $obj_name name of storage Object + * @return obj CF_Object instance + */ + function get_object($obj_name=NULL) + { + return new UpdraftPlus_CF_Object($this, $obj_name, True); + } + + /** + * Return a list of Objects + * + * Return an array of strings listing the Object names in this Container. + * + * Example: + * + * # ... authentication code excluded (see previous examples) ... + * # + * $images = $conn->get_container("my photos"); + * + * # Grab the list of all storage objects + * # + * $all_objects = $images->list_objects(); + * + * # Grab subsets of all storage objects + * # + * $first_ten = $images->list_objects(10); + * + * # Note the use of the previous result's last object name being + * # used as the 'marker' parameter to fetch the next 10 objects + * # + * $next_ten = $images->list_objects(10, $first_ten[count($first_ten)-1]); + * + * # Grab images starting with "birthday_party" and default limit/marker + * # to match all photos with that prefix + * # + * $prefixed = $images->list_objects(0, NULL, "birthday"); + * + * # Assuming you have created the appropriate directory marker Objects, + * # you can traverse your pseudo-hierarchical containers + * # with the "path" argument. + * # + * $animals = $images->list_objects(0,NULL,NULL,"pictures/animals"); + * $dogs = $images->list_objects(0,NULL,NULL,"pictures/animals/dogs"); + * + * + * @param int $limit optional only return $limit names + * @param int $marker optional subset of names starting at $marker + * @param string $prefix optional Objects whose names begin with $prefix + * @param string $path optional only return results under "pathname" + * @return array array of strings + * @throws InvalidResponseException unexpected response + */ + function list_objects($limit=0, $marker=NULL, $prefix=NULL, $path=NULL) + { + list($status, $reason, $obj_list) = + $this->cfs_http->list_objects($this->name, $limit, + $marker, $prefix, $path); + #if ($status == 401 && $this->_re_auth()) { + # return $this->list_objects($limit, $marker, $prefix, $path); + #} + if ($status < 200 || $status > 299) { + throw new InvalidResponseException( + "Invalid response (".$status."): ".$this->cfs_http->get_error()); + } + return $obj_list; + } + + /** + * Return an array of Objects + * + * Return an array of Object instances in this Container. + * + * Example: + * + * # ... authentication code excluded (see previous examples) ... + * # + * $images = $conn->get_container("my photos"); + * + * # Grab the list of all storage objects + * # + * $all_objects = $images->get_objects(); + * + * # Grab subsets of all storage objects + * # + * $first_ten = $images->get_objects(10); + * + * # Note the use of the previous result's last object name being + * # used as the 'marker' parameter to fetch the next 10 objects + * # + * $next_ten = $images->list_objects(10, $first_ten[count($first_ten)-1]); + * + * # Grab images starting with "birthday_party" and default limit/marker + * # to match all photos with that prefix + * # + * $prefixed = $images->get_objects(0, NULL, "birthday"); + * + * # Assuming you have created the appropriate directory marker Objects, + * # you can traverse your pseudo-hierarchical containers + * # with the "path" argument. + * # + * $animals = $images->get_objects(0,NULL,NULL,"pictures/animals"); + * $dogs = $images->get_objects(0,NULL,NULL,"pictures/animals/dogs"); + * + * + * @param int $limit optional only return $limit names + * @param int $marker optional subset of names starting at $marker + * @param string $prefix optional Objects whose names begin with $prefix + * @param string $path optional only return results under "pathname" + * @return array array of strings + * @throws InvalidResponseException unexpected response + */ + function get_objects($limit=0, $marker=NULL, $prefix=NULL, $path=NULL, $delimiter=NULL) + { + list($status, $reason, $obj_array) = + $this->cfs_http->get_objects($this->name, $limit, + $marker, $prefix, $path, $delimiter); + #if ($status == 401 && $this->_re_auth()) { + # return $this->get_objects($limit, $marker, $prefix, $path); + #} + if ($status < 200 || $status > 299) { + throw new InvalidResponseException( + "Invalid response (".$status."): ".$this->cfs_http->get_error()); + } + $objects = array(); + foreach ($obj_array as $obj) { + if(!isset($obj['subdir'])) { + $tmp = new UpdraftPlus_CF_Object($this, $obj["name"], False, False); + $tmp->content_type = $obj["content_type"]; + $tmp->content_length = (float) $obj["bytes"]; + $tmp->set_etag($obj["hash"]); + $tmp->last_modified = $obj["last_modified"]; + $objects[] = $tmp; + } + } + return $objects; + } + + /** + * Copy a remote storage Object to a target Container + * + * Given an Object instance or name and a target Container instance or name, copy copies the remote Object + * and all associated metadata. + * + * Example: + * + * # ... authentication code excluded (see previous examples) ... + * # + * $conn = new CF_Connection($auth); + * + * $images = $conn->get_container("my photos"); + * + * # Copy specific object + * # + * $images->copy_object_to("disco_dancing.jpg","container_target"); + * + * + * @param obj $obj name or instance of Object to copy + * @param obj $container_target name or instance of target Container + * @param string $dest_obj_name name of target object (optional - uses source name if omitted) + * @param array $metadata metadata array for new object (optional) + * @param array $headers header fields array for the new object (optional) + * @return boolean true if successfully copied + * @throws SyntaxException invalid Object/Container name + * @throws NoSuchObjectException remote Object does not exist + * @throws InvalidResponseException unexpected response + */ + function copy_object_to($obj,$container_target,$dest_obj_name=NULL,$metadata=NULL,$headers=NULL) + { + $obj_name = NULL; + if (is_object($obj)) { + if (get_class($obj) == "UpdraftPlus_CF_Object") { + $obj_name = $obj->name; + } + } + if (is_string($obj)) { + $obj_name = $obj; + } + if (!$obj_name) { + throw new SyntaxException("Object name not set."); + } + + if ($dest_obj_name === NULL) { + $dest_obj_name = $obj_name; + } + + $container_name_target = NULL; + if (is_object($container_target)) { + if (get_class($container_target) == "UpdraftPlus_CF_Container") { + $container_name_target = $container_target->name; + } + } + if (is_string($container_target)) { + $container_name_target = $container_target; + } + if (!$container_name_target) { + throw new SyntaxException("Container name target not set."); + } + + $status = $this->cfs_http->copy_object($obj_name,$dest_obj_name,$this->name,$container_name_target,$metadata,$headers); + if ($status == 404) { + $m = "Specified object '".$this->name."/".$obj_name; + $m.= "' did not exist as source to copy from or '".$container_name_target."' did not exist as target to copy to."; + throw new NoSuchObjectException($m); + } + if ($status < 200 || $status > 299) { + throw new InvalidResponseException( + "Invalid response (".$status."): ".$this->cfs_http->get_error()); + } + return true; + } + + /** + * Copy a remote storage Object from a source Container + * + * Given an Object instance or name and a source Container instance or name, copy copies the remote Object + * and all associated metadata. + * + * Example: + * + * # ... authentication code excluded (see previous examples) ... + * # + * $conn = new CF_Connection($auth); + * + * $images = $conn->get_container("my photos"); + * + * # Copy specific object + * # + * $images->copy_object_from("disco_dancing.jpg","container_source"); + * + * + * @param obj $obj name or instance of Object to copy + * @param obj $container_source name or instance of source Container + * @param string $dest_obj_name name of target object (optional - uses source name if omitted) + * @param array $metadata metadata array for new object (optional) + * @param array $headers header fields array for the new object (optional) + * @return boolean true if successfully copied + * @throws SyntaxException invalid Object/Container name + * @throws NoSuchObjectException remote Object does not exist + * @throws InvalidResponseException unexpected response + */ + function copy_object_from($obj,$container_source,$dest_obj_name=NULL,$metadata=NULL,$headers=NULL) + { + $obj_name = NULL; + if (is_object($obj)) { + if (get_class($obj) == "UpdraftPlus_CF_Object") { + $obj_name = $obj->name; + } + } + if (is_string($obj)) { + $obj_name = $obj; + } + if (!$obj_name) { + throw new SyntaxException("Object name not set."); + } + + if ($dest_obj_name === NULL) { + $dest_obj_name = $obj_name; + } + + $container_name_source = NULL; + if (is_object($container_source)) { + if (get_class($container_source) == "UpdraftPlus_CF_Container") { + $container_name_source = $container_source->name; + } + } + if (is_string($container_source)) { + $container_name_source = $container_source; + } + if (!$container_name_source) { + throw new SyntaxException("Container name source not set."); + } + + $status = $this->cfs_http->copy_object($obj_name,$dest_obj_name,$container_name_source,$this->name,$metadata,$headers); + if ($status == 404) { + $m = "Specified object '".$container_name_source."/".$obj_name; + $m.= "' did not exist as source to copy from or '".$this->name."/".$obj_name."' did not exist as target to copy to."; + throw new NoSuchObjectException($m); + } + if ($status < 200 || $status > 299) { + throw new InvalidResponseException( + "Invalid response (".$status."): ".$this->cfs_http->get_error()); + } + + return true; + } + + /** + * Move a remote storage Object to a target Container + * + * Given an Object instance or name and a target Container instance or name, move copies the remote Object + * and all associated metadata and deletes the source Object afterwards + * + * Example: + * + * # ... authentication code excluded (see previous examples) ... + * # + * $conn = new CF_Connection($auth); + * + * $images = $conn->get_container("my photos"); + * + * # Move specific object + * # + * $images->move_object_to("disco_dancing.jpg","container_target"); + * + * + * @param obj $obj name or instance of Object to move + * @param obj $container_target name or instance of target Container + * @param string $dest_obj_name name of target object (optional - uses source name if omitted) + * @param array $metadata metadata array for new object (optional) + * @param array $headers header fields array for the new object (optional) + * @return boolean true if successfully moved + * @throws SyntaxException invalid Object/Container name + * @throws NoSuchObjectException remote Object does not exist + * @throws InvalidResponseException unexpected response + */ + function move_object_to($obj,$container_target,$dest_obj_name=NULL,$metadata=NULL,$headers=NULL) + { + $retVal = false; + + if(self::copy_object_to($obj,$container_target,$dest_obj_name,$metadata,$headers)) { + $retVal = self::delete_object($obj,$this->name); + } + + return $retVal; + } + + /** + * Move a remote storage Object from a source Container + * + * Given an Object instance or name and a source Container instance or name, move copies the remote Object + * and all associated metadata and deletes the source Object afterwards + * + * Example: + * + * # ... authentication code excluded (see previous examples) ... + * # + * $conn = new CF_Connection($auth); + * + * $images = $conn->get_container("my photos"); + * + * # Move specific object + * # + * $images->move_object_from("disco_dancing.jpg","container_target"); + * + * + * @param obj $obj name or instance of Object to move + * @param obj $container_source name or instance of target Container + * @param string $dest_obj_name name of target object (optional - uses source name if omitted) + * @param array $metadata metadata array for new object (optional) + * @param array $headers header fields array for the new object (optional) + * @return boolean true if successfully moved + * @throws SyntaxException invalid Object/Container name + * @throws NoSuchObjectException remote Object does not exist + * @throws InvalidResponseException unexpected response + */ + function move_object_from($obj,$container_source,$dest_obj_name=NULL,$metadata=NULL,$headers=NULL) + { + $retVal = false; + + if(self::copy_object_from($obj,$container_source,$dest_obj_name,$metadata,$headers)) { + $retVal = self::delete_object($obj,$container_source); + } + + return $retVal; + } + + /** + * Delete a remote storage Object + * + * Given an Object instance or name, permanently remove the remote Object + * and all associated metadata. + * + * Example: + * + * # ... authentication code excluded (see previous examples) ... + * # + * $conn = new CF_Connection($auth); + * + * $images = $conn->get_container("my photos"); + * + * # Delete specific object + * # + * $images->delete_object("disco_dancing.jpg"); + * + * + * @param obj $obj name or instance of Object to delete + * @param obj $container name or instance of Container in which the object resides (optional) + * @return boolean True if successfully removed + * @throws SyntaxException invalid Object name + * @throws NoSuchObjectException remote Object does not exist + * @throws InvalidResponseException unexpected response + */ + function delete_object($obj,$container=NULL) + { + $obj_name = NULL; + if (is_object($obj)) { + if (get_class($obj) == "UpdraftPlus_CF_Object") { + $obj_name = $obj->name; + } + } + if (is_string($obj)) { + $obj_name = $obj; + } + if (!$obj_name) { + throw new SyntaxException("Object name not set."); + } + + $container_name = NULL; + + if($container === NULL) { + $container_name = $this->name; + } + else { + if (is_object($container)) { + if (get_class($container) == "UpdraftPlus_CF_Container") { + $container_name = $container->name; + } + } + if (is_string($container)) { + $container_name = $container; + } + if (!$container_name) { + throw new SyntaxException("Container name source not set."); + } + } + + $status = $this->cfs_http->delete_object($container_name, $obj_name); + #if ($status == 401 && $this->_re_auth()) { + # return $this->delete_object($obj); + #} + if ($status == 404) { + $m = "Specified object '".$container_name."/".$obj_name; + $m.= "' did not exist to delete."; + throw new NoSuchObjectException($m); + } + if ($status != 204) { + throw new InvalidResponseException( + "Invalid response (".$status."): ".$this->cfs_http->get_error()); + } + return True; + } + + /** + * Helper function to create "path" elements for a given Object name + * + * Given an Object whos name contains '/' path separators, this function + * will create the "directory marker" Objects of one byte with the + * Content-Type of "application/directory". + * + * It assumes the last element of the full path is the "real" Object + * and does NOT create a remote storage Object for that last element. + */ + function create_paths($path_name) + { + if ($path_name[0] == '/') { + $path_name = mb_substr($path_name, 0, 1); + } + $elements = explode('/', $path_name, -1); + $build_path = ""; + foreach ($elements as $idx => $val) { + if (!$build_path) { + $build_path = $val; + } else { + $build_path .= "/" . $val; + } + $obj = new UpdraftPlus_CF_Object($this, $build_path); + $obj->content_type = "application/directory"; + $obj->write(".", 1); + } + } + + /** + * Internal method to grab CDN/Container info if appropriate to do so + * + * @throws InvalidResponseException unexpected response + */ + private function _cdn_initialize() + { + list($status, $reason, $cdn_enabled, $cdn_ssl_uri, $cdn_streaming_uri, $cdn_uri, $cdn_ttl, + $cdn_log_retention, $cdn_acl_user_agent, $cdn_acl_referrer) = + $this->cfs_http->head_cdn_container($this->name); + #if ($status == 401 && $this->_re_auth()) { + # return $this->_cdn_initialize(); + #} + if (!in_array($status, array(204,404))) { + throw new InvalidResponseException( + "Invalid response (".$status."): ".$this->cfs_http->get_error()); + } + $this->cdn_enabled = $cdn_enabled; + $this->cdn_streaming_uri = $cdn_streaming_uri; + $this->cdn_ssl_uri = $cdn_ssl_uri; + $this->cdn_uri = $cdn_uri; + $this->cdn_ttl = $cdn_ttl; + $this->cdn_log_retention = $cdn_log_retention; + $this->cdn_acl_user_agent = $cdn_acl_user_agent; + $this->cdn_acl_referrer = $cdn_acl_referrer; + } + + #private function _re_auth() + #{ + # $new_auth = new CF_Authentication( + # $this->cfs_auth->username, + # $this->cfs_auth->api_key, + # $this->cfs_auth->auth_host, + # $this->cfs_auth->account); + # $new_auth->authenticate(); + # $this->cfs_auth = $new_auth; + # $this->cfs_http->setCFAuth($this->cfs_auth); + # return True; + #} +} + + +/** + * Object operations + * + * An Object is analogous to a file on a conventional filesystem. You can + * read data from, or write data to your Objects. You can also associate + * arbitrary metadata with them. + * + * @package php-cloudfiles + */ +class UpdraftPlus_CF_Object +{ + public $container; + public $name; + public $last_modified; + public $content_type; + public $content_length; + public $metadata; + public $headers; + public $manifest; + private $etag; + + /** + * Class constructor + * + * @param obj $container CF_Container instance + * @param string $name name of Object + * @param boolean $force_exists if set, throw an error if Object doesn't exist + */ + function __construct(&$container, $name, $force_exists=False, $dohead=True) + { + if ($name[0] == "/") { + $r = "Object name '".$name; + $r .= "' cannot contain begin with a '/' character."; + throw new SyntaxException($r); + } + if (strlen($name) > MAX_OBJECT_NAME_LEN) { + throw new SyntaxException("Object name exceeds " + . "maximum allowed length."); + } + $this->container = $container; + $this->name = $name; + $this->etag = NULL; + $this->_etag_override = False; + $this->last_modified = NULL; + $this->content_type = NULL; + $this->content_length = 0; + $this->metadata = array(); + $this->headers = array(); + $this->manifest = NULL; + if ($dohead) { + if (!$this->_initialize() && $force_exists) { + throw new NoSuchObjectException("No such object '".$name."'"); + } + } + } + + /** + * String representation of Object + * + * Pretty print the Object's location and name + * + * @return string Object information + */ + function __toString() + { + return $this->container->name . "/" . $this->name; + } + + /** + * Internal check to get the proper mimetype. + * + * This function would go over the available PHP methods to get + * the MIME type. + * + * By default it will try to use the PHP fileinfo library which is + * available from PHP 5.3 or as an PECL extension + * (http://pecl.php.net/package/Fileinfo). + * + * It will get the magic file by default from the system wide file + * which is usually available in /usr/share/magic on Unix or try + * to use the file specified in the source directory of the API + * (share directory). + * + * if fileinfo is not available it will try to use the internal + * mime_content_type function. + * + * @param string $handle name of file or buffer to guess the type from + * @return boolean True if successful + * @throws BadContentTypeException + */ + function _guess_content_type($handle) { + if ($this->content_type) + return; + + if (function_exists("finfo_open")) { + $local_magic = dirname(__FILE__) . "/share/magic"; + $finfo = @finfo_open(FILEINFO_MIME, $local_magic); + + if (!$finfo) + $finfo = @finfo_open(FILEINFO_MIME); + + if ($finfo) { + + if (is_file((string)$handle)) + $ct = @finfo_file($finfo, $handle); + else + $ct = @finfo_buffer($finfo, $handle); + + /* PHP 5.3 fileinfo display extra information like + charset so we remove everything after the ; since + we are not into that stuff */ + if ($ct) { + $extra_content_type_info = strpos($ct, "; "); + if ($extra_content_type_info) + $ct = substr($ct, 0, $extra_content_type_info); + } + + if ($ct && $ct != 'application/octet-stream') + $this->content_type = $ct; + + @finfo_close($finfo); + } + } + + if (!$this->content_type && (string)is_file($handle) && function_exists("mime_content_type")) { + $this->content_type = @mime_content_type($handle); + } + + if (!$this->content_type) { + throw new BadContentTypeException("Required Content-Type not set"); + } + return True; + } + + /** + * String representation of the Object's public URI + * + * A string representing the Object's public URI assuming that it's + * parent Container is CDN-enabled. + * + * Example: + * + * # ... authentication/connection/container code excluded + * # ... see previous examples + * + * # Print out the Object's CDN URI (if it has one) in an HTML img-tag + * # + * print "\n"; + * + * + * @return string Object's public URI or NULL + */ + function public_uri() + { + if ($this->container->cdn_enabled) { + return $this->container->cdn_uri . "/" . $this->name; + } + return NULL; + } + + /** + * String representation of the Object's public SSL URI + * + * A string representing the Object's public SSL URI assuming that it's + * parent Container is CDN-enabled. + * + * Example: + * + * # ... authentication/connection/container code excluded + * # ... see previous examples + * + * # Print out the Object's CDN SSL URI (if it has one) in an HTML img-tag + * # + * print "\n"; + * + * + * @return string Object's public SSL URI or NULL + */ + function public_ssl_uri() + { + if ($this->container->cdn_enabled) { + return $this->container->cdn_ssl_uri . "/" . $this->name; + } + return NULL; + } + /** + * String representation of the Object's public Streaming URI + * + * A string representing the Object's public Streaming URI assuming that it's + * parent Container is CDN-enabled. + * + * Example: + * + * # ... authentication/connection/container code excluded + * # ... see previous examples + * + * # Print out the Object's CDN Streaming URI (if it has one) in an HTML img-tag + * # + * print "\n"; + * + * + * @return string Object's public Streaming URI or NULL + */ + function public_streaming_uri() + { + if ($this->container->cdn_enabled) { + return $this->container->cdn_streaming_uri . "/" . $this->name; + } + return NULL; + } + + /** + * Read the remote Object's data + * + * Returns the Object's data. This is useful for smaller Objects such + * as images or office documents. Object's with larger content should use + * the stream() method below. + * + * Pass in $hdrs array to set specific custom HTTP headers such as + * If-Match, If-None-Match, If-Modified-Since, Range, etc. + * + * Example: + * + * # ... authentication/connection/container code excluded + * # ... see previous examples + * + * $my_docs = $conn->get_container("documents"); + * $doc = $my_docs->get_object("README"); + * $data = $doc->read(); # read image content into a string variable + * print $data; + * + * # Or see stream() below for a different example. + * # + * + * + * @param array $hdrs user-defined headers (Range, If-Match, etc.) + * @return string Object's data + * @throws InvalidResponseException unexpected response + */ + function read($hdrs=array()) + { + list($status, $reason, $data) = + $this->container->cfs_http->get_object_to_string($this, $hdrs); + #if ($status == 401 && $this->_re_auth()) { + # return $this->read($hdrs); + #} + if (($status < 200) || ($status > 299 + && $status != 412 && $status != 304)) { + throw new InvalidResponseException("Invalid response (".$status."): " + . $this->container->cfs_http->get_error()); + } + return $data; + } + + /** + * Streaming read of Object's data + * + * Given an open PHP resource (see PHP's fopen() method), fetch the Object's + * data and write it to the open resource handle. This is useful for + * streaming an Object's content to the browser (videos, images) or for + * fetching content to a local file. + * + * Pass in $hdrs array to set specific custom HTTP headers such as + * If-Match, If-None-Match, If-Modified-Since, Range, etc. + * + * Example: + * + * # ... authentication/connection/container code excluded + * # ... see previous examples + * + * # Assuming this is a web script to display the README to the + * # user's browser: + * # + * get_container("documents"); + * $doc = $my_docs->get_object("README"); + * + * // Hand it back to user's browser with appropriate content-type + * // + * header("Content-Type: " . $doc->content_type); + * $output = fopen("php://output", "w"); + * $doc->stream($output); # stream object content to PHP's output buffer + * fclose($output); + * ?> + * + * # See read() above for a more simple example. + * # + * + * + * @param resource $fp open resource for writing data to + * @param array $hdrs user-defined headers (Range, If-Match, etc.) + * @return string Object's data + * @throws InvalidResponseException unexpected response + */ + function stream(&$fp, $hdrs=array()) + { + list($status, $reason) = + $this->container->cfs_http->get_object_to_stream($this,$fp,$hdrs); + #if ($status == 401 && $this->_re_auth()) { + # return $this->stream($fp, $hdrs); + #} + if (($status < 200) || ($status > 299 + && $status != 412 && $status != 304)) { + throw new InvalidResponseException("Invalid response (".$status."): " + .$reason); + } + return True; + } + + /** + * Store new Object metadata + * + * Write's an Object's metadata to the remote Object. This will overwrite + * an prior Object metadata. + * + * Example: + * + * # ... authentication/connection/container code excluded + * # ... see previous examples + * + * $my_docs = $conn->get_container("documents"); + * $doc = $my_docs->get_object("README"); + * + * # Define new metadata for the object + * # + * $doc->metadata = array( + * "Author" => "EJ", + * "Subject" => "How to use the PHP tests", + * "Version" => "1.2.2" + * ); + * + * # Define additional headers for the object + * # + * $doc->headers = array( + * "Content-Disposition" => "attachment", + * ); + * + * # Push the new metadata up to the storage system + * # + * $doc->sync_metadata(); + * + * + * @return boolean True if successful, False otherwise + * @throws InvalidResponseException unexpected response + */ + function sync_metadata() + { + if (!empty($this->metadata) || !empty($this->headers) || $this->manifest) { + $status = $this->container->cfs_http->update_object($this); + #if ($status == 401 && $this->_re_auth()) { + # return $this->sync_metadata(); + #} + if ($status != 202) { + throw new InvalidResponseException("Invalid response (" + .$status."): ".$this->container->cfs_http->get_error()); + } + return True; + } + return False; + } + /** + * Store new Object manifest + * + * Write's an Object's manifest to the remote Object. This will overwrite + * an prior Object manifest. + * + * Example: + * + * # ... authentication/connection/container code excluded + * # ... see previous examples + * + * $my_docs = $conn->get_container("documents"); + * $doc = $my_docs->get_object("README"); + * + * # Define new manifest for the object + * # + * $doc->manifest = "container/prefix"; + * + * # Push the new manifest up to the storage system + * # + * $doc->sync_manifest(); + * + * + * @return boolean True if successful, False otherwise + * @throws InvalidResponseException unexpected response + */ + + function sync_manifest() + { + return $this->sync_metadata(); + } + /** + * Upload Object's data to Cloud Files + * + * Write data to the remote Object. The $data argument can either be a + * PHP resource open for reading (see PHP's fopen() method) or an in-memory + * variable. If passing in a PHP resource, you must also include the $bytes + * parameter. + * + * Example: + * + * # ... authentication/connection/container code excluded + * # ... see previous examples + * + * $my_docs = $conn->get_container("documents"); + * $doc = $my_docs->get_object("README"); + * + * # Upload placeholder text in my README + * # + * $doc->write("This is just placeholder text for now..."); + * + * + * @param string|resource $data string or open resource + * @param float $bytes amount of data to upload (required for resources) + * @param boolean $verify generate, send, and compare MD5 checksums + * @return boolean True when data uploaded successfully + * @throws SyntaxException missing required parameters + * @throws BadContentTypeException if no Content-Type was/could be set + * @throws MisMatchedChecksumException $verify is set and checksums unequal + * @throws InvalidResponseException unexpected response + */ + function write($data=NULL, $bytes=0, $verify=True) + { + if (!$data && !is_string($data)) { + throw new SyntaxException("Missing data source."); + } + if ($bytes > MAX_OBJECT_SIZE) { + throw new SyntaxException("Bytes exceeds maximum object size."); + } + if ($verify) { + if (!$this->_etag_override) { + $this->etag = $this->compute_md5sum($data); + } + } else { + $this->etag = NULL; + } + + $close_fh = False; + if (!is_resource($data)) { + # A hack to treat string data as a file handle. php://memory feels + # like a better option, but it seems to break on Windows so use + # a temporary file instead. + # + $fp = fopen("php://temp", "wb+"); + #$fp = fopen("php://memory", "wb+"); + fwrite($fp, $data, strlen($data)); + rewind($fp); + $close_fh = True; + $this->content_length = (float) strlen($data); + if ($this->content_length > MAX_OBJECT_SIZE) { + throw new SyntaxException("Data exceeds maximum object size"); + } + $ct_data = substr($data, 0, 64); + } else { + // The original Rackspace library used rewind() instead of ftell/fseek here - which meant fseek(0), which was sometimes wrong + $fpos = ftell($data); + $this->content_length = $bytes; + $fp = $data; + $ct_data = fread($data, 64); + fseek($data, $fpos); + } + + $this->_guess_content_type($ct_data); + + list($status, $reason, $etag) = + $this->container->cfs_http->put_object($this, $fp); + #if ($status == 401 && $this->_re_auth()) { + # return $this->write($data, $bytes, $verify); + #} + if ($status == 412) { + if ($close_fh) { fclose($fp); } + throw new SyntaxException("Missing Content-Type header"); + } + if ($status == 422) { + if ($close_fh) { fclose($fp); } + throw new MisMatchedChecksumException( + "Supplied and computed checksums do not match."); + } + if ($status != 201) { + if ($close_fh) { fclose($fp); } + throw new InvalidResponseException("Invalid response (".$status."): " + . $this->container->cfs_http->get_error()); + } + if (!$verify) { + $this->etag = $etag; + } + if ($close_fh) { fclose($fp); } + return True; + } + + /** + * Upload Object data from local filename + * + * This is a convenience function to upload the data from a local file. A + * True value for $verify will cause the method to compute the Object's MD5 + * checksum prior to uploading. + * + * Example: + * + * # ... authentication/connection/container code excluded + * # ... see previous examples + * + * $my_docs = $conn->get_container("documents"); + * $doc = $my_docs->get_object("README"); + * + * # Upload my local README's content + * # + * $doc->load_from_filename("/home/ej/cloudfiles/readme"); + * + * + * @param string $filename full path to local file + * @param boolean $verify enable local/remote MD5 checksum validation + * @return boolean True if data uploaded successfully + * @throws SyntaxException missing required parameters + * @throws BadContentTypeException if no Content-Type was/could be set + * @throws MisMatchedChecksumException $verify is set and checksums unequal + * @throws InvalidResponseException unexpected response + * @throws IOException error opening file + */ + function load_from_filename($filename, $verify=True) + { + $fp = @fopen($filename, "r"); + if (!$fp) { + throw new IOException("Could not open file for reading: ".$filename); + } + + clearstatcache(); + + $size = (float) sprintf("%u", filesize($filename)); + if ($size > MAX_OBJECT_SIZE) { + throw new SyntaxException("File size exceeds maximum object size."); + } + + $this->_guess_content_type($filename); + + $this->write($fp, $size, $verify); + fclose($fp); + return True; + } + + /** + * Save Object's data to local filename + * + * Given a local filename, the Object's data will be written to the newly + * created file. + * + * Example: + * + * # ... authentication/connection/container code excluded + * # ... see previous examples + * + * # Whoops! I deleted my local README, let me download/save it + * # + * $my_docs = $conn->get_container("documents"); + * $doc = $my_docs->get_object("README"); + * + * $doc->save_to_filename("/home/ej/cloudfiles/readme.restored"); + * + * + * @param string $filename name of local file to write data to + * @return boolean True if successful + * @throws IOException error opening file + * @throws InvalidResponseException unexpected response + */ + function save_to_filename($filename) + { + $fp = @fopen($filename, "wb"); + if (!$fp) { + throw new IOException("Could not open file for writing: ".$filename); + } + $result = $this->stream($fp); + fclose($fp); + return $result; + } + /** + * Purge this Object from CDN Cache. + * Example: + * + * # ... authentication code excluded (see previous examples) ... + * # + * $conn = new CF_Connection($auth); + * $container = $conn->get_container("cdn_enabled"); + * $obj = $container->get_object("object"); + * $obj->purge_from_cdn("user@domain.com"); + * # or + * $obj->purge_from_cdn(); + * # or + * $obj->purge_from_cdn("user1@domain.com,user2@domain.com"); + * + * @returns boolean True if successful + * @throws CDNNotEnabledException if CDN Is not enabled on this connection + * @throws InvalidResponseException if the response expected is not returned + */ + function purge_from_cdn($email=null) + { + if (!$this->container->cfs_http->getCDNMUrl()) + { + throw new CDNNotEnabledException( + "Authentication response did not indicate CDN availability"); + } + $status = $this->container->cfs_http->purge_from_cdn($this->container->name . "/" . $this->name, $email); + if ($status < 199 or $status > 299) { + throw new InvalidResponseException( + "Invalid response (".$status."): ".$this->container->cfs_http->get_error()); + } + return True; + } + + /** + * Set Object's MD5 checksum + * + * Manually set the Object's ETag. Including the ETag is mandatory for + * Cloud Files to perform end-to-end verification. Omitting the ETag forces + * the user to handle any data integrity checks. + * + * @param string $etag MD5 checksum hexidecimal string + */ + function set_etag($etag) + { + $this->etag = $etag; + $this->_etag_override = True; + } + + /** + * Object's MD5 checksum + * + * Accessor method for reading Object's private ETag attribute. + * + * @return string MD5 checksum hexidecimal string + */ + function getETag() + { + return $this->etag; + } + + /** + * Compute the MD5 checksum + * + * Calculate the MD5 checksum on either a PHP resource or data. The argument + * may either be a local filename, open resource for reading, or a string. + * + * WARNING: if you are uploading a big file over a stream + * it could get very slow to compute the md5 you probably want to + * set the $verify parameter to False in the write() method and + * compute yourself the md5 before if you have it. + * + * @param filename|obj|string $data filename, open resource, or string + * @return string MD5 checksum hexidecimal string + */ + function compute_md5sum(&$data) + { + + if (function_exists("hash_init") && is_resource($data)) { + $ctx = hash_init('md5'); + $fpos = ftell($data); + while (!feof($data)) { + $buffer = fgets($data, 65536); + hash_update($ctx, $buffer); + } + $md5 = hash_final($ctx, false); + fseek($data, $fpos); + } elseif ((string)is_file($data)) { + $md5 = md5_file($data); + } else { + $md5 = md5($data); + } + return $md5; + } + + /** + * PRIVATE: fetch information about the remote Object if it exists + */ + private function _initialize() + { + list($status, $reason, $etag, $last_modified, $content_type, + $content_length, $metadata, $manifest, $headers) = + $this->container->cfs_http->head_object($this); + #if ($status == 401 && $this->_re_auth()) { + # return $this->_initialize(); + #} + if ($status == 404) { + return False; + } + if ($status < 200 || $status > 299) { + throw new InvalidResponseException("Invalid response (".$status."): " + . $this->container->cfs_http->get_error()); + } + $this->etag = $etag; + $this->last_modified = $last_modified; + $this->content_type = $content_type; + $this->content_length = $content_length; + $this->metadata = $metadata; + $this->headers = $headers; + $this->manifest = $manifest; + return True; + } + /** + * Generate a Temp Url for a object + * Example: + * + * # ... authentication code excluded (see previous examples) ... + * $conn = new CF_Connection($auth); + * $container = $conn->get_container("foo"); + * $obj = $container->get_object("foo"); + * $tempurl = $obj->get_temp_url("shared_secret", "expire_time_in_seconds", "{HTTP_METHOD}"); (note: replace {HTTP_METHOD} with the request method: GET, POST, PUT, DELETE, etc. + * + * @returns The temp url + */ + public function get_temp_url($key, $expires, $method) + { + + $expires += time(); + $url = $this->container->cfs_http->getStorageUrl() . '/' . $this->container->name . '/' . $this->name; + return $url . '?temp_url_sig=' . hash_hmac('sha1', strtoupper($method) . + "\n" . $expires . "\n" . parse_url($url, PHP_URL_PATH), $key) . + '&temp_url_expires=' . $expires; + } + /** + * Generate hidden input for form post. + * @returns array Returns an associative array with form post input. + */ + public function get_form_post_input($key, $expires, $redirect, $max_file_size=5368709120, $max_file_count=1) + { + + $expires += time(); + $url = $this->container->cfs_http->getStorageUrl() . '/' . $this->container->name . '/' . $this->name; + $form_post = array('action' => $url, 'redirect' => $redirect, 'max_file_size' => $max_file_size, 'expires' => $expires, 'file' => $this->name); + $form_post['signature'] = hash_hmac('sha1', parse_url($url, PHP_URL_PATH) . "\n" . $redirect . "\n" . $max_file_size . "\n" . $max_file_count . "\n" . $expires, $key ); + return $form_post; + } + #private function _re_auth() + #{ + # $new_auth = new CF_Authentication( + # $this->cfs_auth->username, + # $this->cfs_auth->api_key, + # $this->cfs_auth->auth_host, + # $this->cfs_auth->account); + # $new_auth->authenticate(); + # $this->container->cfs_auth = $new_auth; + # $this->container->cfs_http->setCFAuth($this->cfs_auth); + # return True; + #} +} + +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * c-hanging-comment-ender-p: nil + * End: + */ +?> diff --git a/plugins/updraftplus/includes/cloudfiles/cloudfiles_exceptions.php b/plugins/updraftplus/includes/cloudfiles/cloudfiles_exceptions.php new file mode 100644 index 0000000..ed8ace6 --- /dev/null +++ b/plugins/updraftplus/includes/cloudfiles/cloudfiles_exceptions.php @@ -0,0 +1,79 @@ + + * @copyright Copyright (c) 2008, Rackspace US, Inc. + * @package php-cloudfiles-exceptions + */ + +/** + * Custom Exceptions for the CloudFiles API + * @package php-cloudfiles-exceptions + */ +if (!class_exists('SyntaxException')) { +class SyntaxException extends Exception { } +} + +if (!class_exists('AuthenticationException')) { +class AuthenticationException extends Exception { } +} + +if (!class_exists('InvalidResponseException')) { +class InvalidResponseException extends Exception { } +} + +if (!class_exists('NonEmptyContainerException')) { +class NonEmptyContainerException extends Exception { } +} + +if (!class_exists('NoSuchObjectException')) { +class NoSuchObjectException extends Exception { } +} + +if (!class_exists('NoSuchContainerException')) { +class NoSuchContainerException extends Exception { } +} + +if (!class_exists('NoSuchAccountException')) { +class NoSuchAccountException extends Exception { } +} + +if (!class_exists('MisMatchedChecksumException')) { +class MisMatchedChecksumException extends Exception { } +} + +if (!class_exists('IOException')) { +class IOException extends Exception { } +} + +if (!class_exists('CDNNotEnabledException')) { +class CDNNotEnabledException extends Exception { } +} + +if (!class_exists('BadContentTypeException')) { +class BadContentTypeException extends Exception { } +} + +if (!class_exists('InvalidUTF8Exception')) { +class InvalidUTF8Exception extends Exception { } +} + +if (!class_exists('ConnectionNotOpenException')) { +class ConnectionNotOpenException extends Exception { } +} + +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * c-hanging-comment-ender-p: nil + * End: + */ +?> diff --git a/plugins/updraftplus/includes/cloudfiles/cloudfiles_http.php b/plugins/updraftplus/includes/cloudfiles/cloudfiles_http.php new file mode 100644 index 0000000..b933805 --- /dev/null +++ b/plugins/updraftplus/includes/cloudfiles/cloudfiles_http.php @@ -0,0 +1,1582 @@ + + * @copyright Copyright (c) 2008, Rackspace US, Inc. + * @package php-cloudfiles-http + */ + +/** + */ +require_once("cloudfiles_exceptions.php"); + +@define("PHP_CF_VERSION", "1.7.11"); +@define("USER_AGENT", sprintf("PHP-CloudFiles/%s", PHP_CF_VERSION)); +@define("MAX_HEADER_NAME_LEN", 128); +@define("MAX_HEADER_VALUE_LEN", 256); +@define("ACCOUNT_CONTAINER_COUNT", "X-Account-Container-Count"); +@define("ACCOUNT_BYTES_USED", "X-Account-Bytes-Used"); +@define("ACCOUNT_KEY", "X-Account-Meta-Key"); +@define("ACCOUNT_METADATA_HEADER_PREFIX", "X-Account-Meta-"); +@define("CONTAINER_OBJ_COUNT", "X-Container-Object-Count"); +@define("CONTAINER_BYTES_USED", "X-Container-Bytes-Used"); +@define("CONTAINER_METADATA_HEADER_PREFIX", "X-Container-Meta-"); +@define("DELETE_AFTER", "X-Delete-After"); +@define("DELETE_AT", "X-Delete-At"); +@define("MANIFEST_HEADER", "X-Object-Manifest"); +@define("METADATA_HEADER_PREFIX", "X-Object-Meta-"); +@define("CONTENT_HEADER_PREFIX", "Content-"); +@define("ACCESS_CONTROL_HEADER_PREFIX", "Access-Control-"); +@define("ORIGIN_HEADER", "Origin"); +@define("CDN_URI", "X-CDN-URI"); +@define("CDN_SSL_URI", "X-CDN-SSL-URI"); +@define("CDN_STREAMING_URI", "X-CDN-Streaming-URI"); +@define("CDN_ENABLED", "X-CDN-Enabled"); +@define("CDN_LOG_RETENTION", "X-Log-Retention"); +@define("CDN_ACL_USER_AGENT", "X-User-Agent-ACL"); +@define("CDN_ACL_REFERRER", "X-Referrer-ACL"); +@define("CDN_TTL", "X-TTL"); +@define("CDNM_URL", "X-CDN-Management-Url"); +@define("STORAGE_URL", "X-Storage-Url"); +@define("AUTH_TOKEN", "X-Auth-Token"); +@define("AUTH_USER_HEADER", "X-Auth-User"); +@define("AUTH_KEY_HEADER", "X-Auth-Key"); +@define("AUTH_USER_HEADER_LEGACY", "X-Storage-User"); +@define("AUTH_KEY_HEADER_LEGACY", "X-Storage-Pass"); +@define("AUTH_TOKEN_LEGACY", "X-Storage-Token"); +@define("CDN_EMAIL", "X-Purge-Email"); +@define("DESTINATION", "Destination"); +@define("ETAG_HEADER", "ETag"); +@define("LAST_MODIFIED_HEADER", "Last-Modified"); +@define("CONTENT_TYPE_HEADER", "Content-Type"); +@define("CONTENT_LENGTH_HEADER", "Content-Length"); +@define("USER_AGENT_HEADER", "User-Agent"); + +/** + * HTTP/cURL wrapper for Cloud Files + * + * This class should not be used directly. It's only purpose is to abstract + * out the HTTP communication from the main API. + * + * @package php-cloudfiles-http + */ +class UpdraftPlus_CF_Http +{ + private $error_str; + private $dbug; + private $cabundle_path; + private $api_version; + # Authentication instance variables + # + private $storage_url; + private $cdnm_url; + private $auth_token; + + # Request/response variables + # + private $response_status; + private $response_reason; + private $connections; + + # Variables used for content/header callbacks + # + private $_user_read_progress_callback_func; + private $_user_write_progress_callback_func; + private $_write_callback_type; + private $_text_list; + private $_account_metadata; + private $_account_container_count; + private $_account_bytes_used; + private $_account_key; + private $_container_metadata; + private $_container_object_count; + private $_container_bytes_used; + private $_obj_delete_after; + private $_obj_delete_at; + private $_obj_etag; + private $_obj_last_modified; + private $_obj_content_type; + private $_obj_content_length; + private $_obj_metadata; + private $_obj_headers; + private $_obj_manifest; + private $_obj_write_resource; + private $_obj_write_string; + private $_cdn_enabled; + private $_cdn_ssl_uri; + private $_cdn_streaming_uri; + private $_cdn_uri; + private $_cdn_ttl; + private $_cdn_log_retention; + private $_cdn_acl_user_agent; + private $_cdn_acl_referrer; + + function __construct($api_version) + { + $this->dbug = False; + $this->cabundle_path = NULL; + $this->api_version = $api_version; + $this->error_str = NULL; + + $this->storage_url = NULL; + $this->cdnm_url = NULL; + $this->auth_token = NULL; + + $this->response_status = NULL; + $this->response_reason = NULL; + + # Curl connections array - since there is no way to "re-set" the + # connection paramaters for a cURL handle, we keep an array of + # the unique use-cases and funnel all of those same type + # requests through the appropriate curl connection. + # + $this->connections = array( + "GET_CALL" => NULL, # GET objects/containers/lists + "PUT_OBJ" => NULL, # PUT object + "HEAD" => NULL, # HEAD requests + "PUT_CONT" => NULL, # PUT container + "DEL_POST" => NULL, # DELETE containers/objects, POST objects + "COPY" => null, # COPY objects + ); + + $this->_user_read_progress_callback_func = NULL; + $this->_user_write_progress_callback_func = NULL; + $this->_write_callback_type = NULL; + $this->_text_list = array(); + $this->_return_list = NULL; + $this->_account_metadata = array(); + $this->_account_key = NULL; + $this->_account_container_count = 0; + $this->_account_bytes_used = 0; + $this->_container_metadata = array(); + $this->_container_object_count = 0; + $this->_container_bytes_used = 0; + $this->_obj_delete_after = NULL; + $this->_obj_delete_at = NULL; + $this->_obj_write_resource = NULL; + $this->_obj_write_string = ""; + $this->_obj_etag = NULL; + $this->_obj_last_modified = NULL; + $this->_obj_content_type = NULL; + $this->_obj_content_length = NULL; + $this->_obj_metadata = array(); + $this->_obj_manifest = NULL; + $this->_obj_headers = NULL; + $this->_cdn_enabled = NULL; + $this->_cdn_ssl_uri = NULL; + $this->_cdn_streaming_uri = NULL; + $this->_cdn_uri = NULL; + $this->_cdn_ttl = NULL; + $this->_cdn_log_retention = NULL; + $this->_cdn_acl_user_agent = NULL; + $this->_cdn_acl_referrer = NULL; + + # The OS list with a PHP without an updated CA File for CURL to + # connect to SSL Websites. It is the first 3 letters of the PHP_OS + # variable. + $OS_CAFILE_NONUPDATED=array( + "win","dar" + ); + +// We don't want this happening automatically - since the UpdraftPlus default is to use our own certificate already +// if (in_array((strtolower (substr(PHP_OS, 0,3))), $OS_CAFILE_NONUPDATED)) +// $this->ssl_use_cabundle(); + + } + + function ssl_use_cabundle($path=NULL) + { + if ($path) { + $this->cabundle_path = $path; + } else { + $this->cabundle_path = UPDRAFTPLUS_DIR.'/includes/cacert.pem'; + } + if (!file_exists($this->cabundle_path)) { + throw new IOException("Could not use CA bundle: " + . $this->cabundle_path); + } + return; + } + + # Uses separate cURL connection to authenticate + # + function authenticate($user, $pass, $acct=NULL, $host=NULL) + { + $path = array(); + if (isset($acct)){ + $headers = array( + sprintf("%s: %s", AUTH_USER_HEADER_LEGACY, $user), + sprintf("%s: %s", AUTH_KEY_HEADER_LEGACY, $pass), + ); + $path[] = $host; + $path[] = rawurlencode(sprintf("v%d",$this->api_version)); + $path[] = rawurlencode($acct); + } else { + $headers = array( + sprintf("%s: %s", AUTH_USER_HEADER, $user), + sprintf("%s: %s", AUTH_KEY_HEADER, $pass), + ); + $path[] = $host; + } + $path[] = "v1.0"; + $url = implode("/", $path); + + $curl_ch = curl_init(); + if (!is_null($this->cabundle_path)) { + curl_setopt($curl_ch, CURLOPT_CAINFO, $this->cabundle_path); + } + if (defined('UPDRAFTPLUS_SSL_DISABLEVERIFY')) { + curl_setopt($curl_ch, CURLOPT_SSL_VERIFYPEER, UPDRAFTPLUS_SSL_DISABLEVERIFY); + } elseif (UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify')) { + curl_setopt($curl_ch, CURLOPT_SSL_VERIFYPEER, false); + } else { + curl_setopt($curl_ch, CURLOPT_SSL_VERIFYPEER, true); + } + + curl_setopt($curl_ch, CURLOPT_VERBOSE, $this->dbug); + curl_setopt($curl_ch, CURLOPT_FOLLOWLOCATION, 1); + curl_setopt($curl_ch, CURLOPT_MAXREDIRS, 4); + curl_setopt($curl_ch, CURLOPT_HEADER, 0); + curl_setopt($curl_ch, CURLOPT_HTTPHEADER, $headers); + curl_setopt($curl_ch, CURLOPT_USERAGENT, USER_AGENT); + curl_setopt($curl_ch, CURLOPT_RETURNTRANSFER, TRUE); + curl_setopt($curl_ch, CURLOPT_HEADERFUNCTION,array(&$this,'_auth_hdr_cb')); + curl_setopt($curl_ch, CURLOPT_CONNECTTIMEOUT, 10); + curl_setopt($curl_ch, CURLOPT_URL, $url); + curl_exec($curl_ch); + curl_close($curl_ch); + + return array($this->response_status, $this->response_reason, + $this->storage_url, $this->cdnm_url, $this->auth_token); + } + + # (CDN) GET /v1/Account + # + function list_cdn_containers($enabled_only) + { + $conn_type = "GET_CALL"; + $url_path = $this->_make_path("CDN"); + + $this->_write_callback_type = "TEXT_LIST"; + if ($enabled_only) + { + $return_code = $this->_send_request($conn_type, $url_path . + '/?enabled_only=true'); + } + else + { + $return_code = $this->_send_request($conn_type, $url_path); + } + if (!$return_code) { + $this->error_str .= ": Failed to obtain valid HTTP response."; + return array(0,$this->error_str,array()); + } + if ($return_code == 401) { + return array($return_code,"Unauthorized",array()); + } + if ($return_code == 404) { + return array($return_code,"Account not found.",array()); + } + if ($return_code == 204) { + return array($return_code,"Account has no CDN enabled Containers.", + array()); + } + if ($return_code == 200) { + $this->create_array(); + return array($return_code,$this->response_reason,$this->_text_list); + } + $this->error_str = "Unexpected HTTP response: ".$this->response_reason; + return array($return_code,$this->error_str,array()); + } + + # (CDN) DELETE /v1/Account/Container or /v1/Account/Container/Object + # + function purge_from_cdn($path, $email=null) + { + if(!$path) + throw new SyntaxException("Path not set"); + $url_path = $this->_make_path("CDN", NULL, $path); + if($email) + { + $hdrs = array(CDN_EMAIL => $email); + $return_code = $this->_send_request("DEL_POST",$url_path,$hdrs,"DELETE"); + } + else + $return_code = $this->_send_request("DEL_POST",$url_path,null,"DELETE"); + return $return_code; + } + + # (CDN) POST /v1/Account/Container + function update_cdn_container($container_name, $ttl=86400, $cdn_log_retention=False, + $cdn_acl_user_agent="", $cdn_acl_referrer) + { + if ($container_name == "") + throw new SyntaxException("Container name not set."); + + if ($container_name != "0" and !isset($container_name)) + throw new SyntaxException("Container name not set."); + + $url_path = $this->_make_path("CDN", $container_name); + $hdrs = array( + CDN_ENABLED => "True", + CDN_TTL => $ttl, + CDN_LOG_RETENTION => $cdn_log_retention ? "True" : "False", + CDN_ACL_USER_AGENT => $cdn_acl_user_agent, + CDN_ACL_REFERRER => $cdn_acl_referrer, + ); + $return_code = $this->_send_request("DEL_POST",$url_path,$hdrs,"POST"); + if ($return_code == 401) { + $this->error_str = "Unauthorized"; + return array($return_code, $this->error_str, NULL); + } + if ($return_code == 404) { + $this->error_str = "Container not found."; + return array($return_code, $this->error_str, NULL); + } + if ($return_code != 202) { + $this->error_str="Unexpected HTTP response: ".$this->response_reason; + return array($return_code, $this->error_str, NULL); + } + return array($return_code, "Accepted", $this->_cdn_uri, $this->_cdn_ssl_uri); + + } + + # (CDN) PUT /v1/Account/Container + # + function add_cdn_container($container_name, $ttl=86400) + { + if ($container_name == "") + throw new SyntaxException("Container name not set."); + + if ($container_name != "0" and !isset($container_name)) + throw new SyntaxException("Container name not set."); + + $url_path = $this->_make_path("CDN", $container_name); + $hdrs = array( + CDN_ENABLED => "True", + CDN_TTL => $ttl, + ); + $return_code = $this->_send_request("PUT_CONT", $url_path, $hdrs); + if ($return_code == 401) { + $this->error_str = "Unauthorized"; + return array($return_code,$this->response_reason,False); + } + if (!in_array($return_code, array(201,202))) { + $this->error_str="Unexpected HTTP response: ".$this->response_reason; + return array($return_code,$this->response_reason,False); + } + return array($return_code,$this->response_reason,$this->_cdn_uri, + $this->_cdn_ssl_uri); + } + + # (CDN) POST /v1/Account/Container + # + function remove_cdn_container($container_name) + { + if ($container_name == "") + throw new SyntaxException("Container name not set."); + + if ($container_name != "0" and !isset($container_name)) + throw new SyntaxException("Container name not set."); + + $url_path = $this->_make_path("CDN", $container_name); + $hdrs = array(CDN_ENABLED => "False"); + $return_code = $this->_send_request("DEL_POST",$url_path,$hdrs,"POST"); + if ($return_code == 401) { + $this->error_str = "Unauthorized"; + return array($return_code, $this->error_str); + } + if ($return_code == 404) { + $this->error_str = "Container not found."; + return array($return_code, $this->error_str); + } + if ($return_code != 202) { + $this->error_str="Unexpected HTTP response: ".$this->response_reason; + return array($return_code, $this->error_str); + } + return array($return_code, "Accepted"); + } + + # (CDN) HEAD /v1/Account + # + function head_cdn_container($container_name) + { + if ($container_name == "") + throw new SyntaxException("Container name not set."); + + if ($container_name != "0" and !isset($container_name)) + throw new SyntaxException("Container name not set."); + + $conn_type = "HEAD"; + $url_path = $this->_make_path("CDN", $container_name); + $return_code = $this->_send_request($conn_type, $url_path, NULL, "GET", True); + + if (!$return_code) { + $this->error_str .= ": Failed to obtain valid HTTP response."; + return array(0,$this->error_str,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); + } + if ($return_code == 401) { + return array($return_code,"Unauthorized",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); + } + if ($return_code == 404) { + return array($return_code,"Account not found.",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); + } + if ($return_code == 204) { + return array($return_code,$this->response_reason, + $this->_cdn_enabled, $this->_cdn_ssl_uri, + $this->_cdn_streaming_uri, + $this->_cdn_uri, $this->_cdn_ttl, + $this->_cdn_log_retention, + $this->_cdn_acl_user_agent, + $this->_cdn_acl_referrer + ); + } + return array($return_code,$this->response_reason, + NULL,NULL,NULL,NULL, + $this->_cdn_log_retention, + $this->_cdn_acl_user_agent, + $this->_cdn_acl_referrer, + NULL + ); + } + + # GET /v1/Account + # + function list_containers($limit=0, $marker=NULL) + { + $conn_type = "GET_CALL"; + $url_path = $this->_make_path(); + + $limit = intval($limit); + $params = array(); + if ($limit > 0) { + $params[] = "limit=$limit"; + } + if ($marker) { + $params[] = "marker=".rawurlencode($marker); + } + if (!empty($params)) { + $url_path .= "?" . implode("&", $params); + } + + $this->_write_callback_type = "TEXT_LIST"; + $return_code = $this->_send_request($conn_type, $url_path); + + if (!$return_code) { + $this->error_str .= ": Failed to obtain valid HTTP response."; + return array(0,$this->error_str,array()); + } + if ($return_code == 204) { + return array($return_code, "Account has no containers.", array()); + } + if ($return_code == 404) { + $this->error_str = "Invalid account name for authentication token."; + return array($return_code,$this->error_str,array()); + } + if ($return_code == 200) { + $this->create_array(); + return array($return_code, $this->response_reason, $this->_text_list); + } + $this->error_str = "Unexpected HTTP response: ".$this->response_reason; + return array($return_code,$this->error_str,array()); + } + + # GET /v1/Account?format=json + # + function list_containers_info($limit=0, $marker=NULL) + { + $conn_type = "GET_CALL"; + $url_path = $this->_make_path() . "?format=json"; + + $limit = intval($limit); + $params = array(); + if ($limit > 0) { + $params[] = "limit=$limit"; + } + if ($marker) { + $params[] = "marker=".rawurlencode($marker); + } + if (!empty($params)) { + $url_path .= "&" . implode("&", $params); + } + + $this->_write_callback_type = "OBJECT_STRING"; + $return_code = $this->_send_request($conn_type, $url_path); + + if (!$return_code) { + $this->error_str .= ": Failed to obtain valid HTTP response."; + return array(0,$this->error_str,array()); + } + if ($return_code == 204) { + return array($return_code, "Account has no containers.", array()); + } + if ($return_code == 404) { + $this->error_str = "Invalid account name for authentication token."; + return array($return_code,$this->error_str,array()); + } + if ($return_code == 200) { + $json_body = json_decode($this->_obj_write_string, True); + return array($return_code, $this->response_reason, $json_body); + } + $this->error_str = "Unexpected HTTP response: ".$this->response_reason; + return array($return_code,$this->error_str,array()); + } + + # HEAD /v1/Account + # + function head_account() + { + $conn_type = "HEAD"; + + $url_path = $this->_make_path(); + $return_code = $this->_send_request($conn_type,$url_path); + + if (!$return_code) { + $this->error_str .= ": Failed to obtain valid HTTP response."; + return array(0,$this->error_str,0,0, NULL, array()); + } + if ($return_code == 404) { + return array($return_code,"Account not found.",0,0, NULL, array()); + } + if ($return_code == 204) { + return array($return_code,$this->response_reason, + $this->_account_container_count, $this->_account_bytes_used, + $this->_account_key, $this->account_metadata); + } + return array($return_code,$this->response_reason,0,0, NULL, array()); + } + + # PUT /v1/Account/Container + # + function create_container($container_name) + { + if ($container_name == "") + throw new SyntaxException("Container name not set."); + + if ($container_name != "0" and !isset($container_name)) + throw new SyntaxException("Container name not set."); + + $url_path = $this->_make_path("STORAGE", $container_name); + $return_code = $this->_send_request("PUT_CONT",$url_path); + + if (!$return_code) { + $this->error_str .= ": Failed to obtain valid HTTP response."; + return False; + } + return $return_code; + } + + # DELETE /v1/Account/Container + # + function delete_container($container_name) + { + if ($container_name == "") + throw new SyntaxException("Container name not set."); + + if ($container_name != "0" and !isset($container_name)) + throw new SyntaxException("Container name not set."); + + $url_path = $this->_make_path("STORAGE", $container_name); + $return_code = $this->_send_request("DEL_POST",$url_path,array(),"DELETE"); + + switch ($return_code) { + case 204: + break; + case 0: + $this->error_str .= ": Failed to obtain valid HTTP response.";; + break; + case 409: + $this->error_str = "Container must be empty prior to removing it."; + break; + case 404: + $this->error_str = "Specified container did not exist to delete."; + break; + default: + $this->error_str = "Unexpected HTTP return code: $return_code."; + } + return $return_code; + } + + # GET /v1/Account/Container + # + function list_objects($cname,$limit=0,$marker=NULL,$prefix=NULL,$path=NULL) + { + if (!$cname) { + $this->error_str = "Container name not set."; + return array(0, $this->error_str, array()); + } + + $url_path = $this->_make_path("STORAGE", $cname); + + $limit = intval($limit); + $params = array(); + if ($limit > 0) { + $params[] = "limit=$limit"; + } + if ($marker) { + $params[] = "marker=".rawurlencode($marker); + } + if ($prefix) { + $params[] = "prefix=".rawurlencode($prefix); + } + if ($path) { + $params[] = "path=".rawurlencode($path); + } + if (!empty($params)) { + $url_path .= "?" . implode("&", $params); + } + + $conn_type = "GET_CALL"; + $this->_write_callback_type = "TEXT_LIST"; + $return_code = $this->_send_request($conn_type,$url_path); + + if (!$return_code) { + $this->error_str .= ": Failed to obtain valid HTTP response."; + return array(0,$this->error_str,array()); + } + if ($return_code == 204) { + $this->error_str = "Container has no Objects."; + return array($return_code,$this->error_str,array()); + } + if ($return_code == 404) { + $this->error_str = "Container has no Objects."; + return array($return_code,$this->error_str,array()); + } + if ($return_code == 200) { + $this->create_array(); + return array($return_code,$this->response_reason, $this->_text_list); + } + $this->error_str = "Unexpected HTTP response code: $return_code"; + return array(0,$this->error_str,array()); + } + + # GET /v1/Account/Container?format=json + # + function get_objects($cname,$limit=0,$marker=NULL,$prefix=NULL,$path=NULL,$delimiter=NULL) + { + if (strlen($cname) == 0) { + $this->error_str = "Container name not set."; + return array(0, $this->error_str, array()); + } + $url_path = $this->_make_path("STORAGE", $cname); + + $limit = intval($limit); + $params = array(); + $params[] = "format=json"; + if ($limit > 0) { + $params[] = "limit=$limit"; + } + if ($marker) { + $params[] = "marker=".rawurlencode($marker); + } + if ($prefix) { + $params[] = "prefix=".rawurlencode($prefix); + } + if ($path) { + $params[] = "path=".rawurlencode($path); + } + if ($delimiter) { + $params[] = "delimiter=".rawurlencode($delimiter); + } + if (!empty($params)) { + $url_path .= "?" . implode("&", $params); + } + + $conn_type = "GET_CALL"; + $this->_write_callback_type = "OBJECT_STRING"; + $return_code = $this->_send_request($conn_type,$url_path); + + if (!$return_code) { + $this->error_str .= ": Failed to obtain valid HTTP response."; + return array(0,$this->error_str,array()); + } + if ($return_code == 204) { + $this->error_str = "Container has no Objects."; + return array($return_code,$this->error_str,array()); + } + if ($return_code == 404) { + $this->error_str = "Container has no Objects."; + return array($return_code,$this->error_str,array()); + } + if ($return_code == 200) { + $json_body = json_decode($this->_obj_write_string, True); + return array($return_code,$this->response_reason, $json_body); + } + $this->error_str = "Unexpected HTTP response code: $return_code"; + return array(0,$this->error_str,array()); + } + + + # HEAD /v1/Account/Container + # + function head_container($container_name) + { + + if ($container_name == "") { + $this->error_str = "Container name not set."; + return False; + } + + if ($container_name != "0" and !isset($container_name)) { + $this->error_str = "Container name not set."; + return False; + } + + $conn_type = "HEAD"; + + $url_path = $this->_make_path("STORAGE", $container_name); + $return_code = $this->_send_request($conn_type,$url_path); + + if (!$return_code) { + $this->error_str .= ": Failed to obtain valid HTTP response."; + return array(0,$this->error_str,0,0, array()); + } + if ($return_code == 404) { + return array($return_code,"Container not found.",0,0, array()); + } + if ($return_code == 204 || $return_code == 200) { + return array($return_code,$this->response_reason, + $this->_container_object_count, $this->_container_bytes_used, + $this->_container_metadata); + } + return array($return_code,$this->response_reason,0,0, array()); + } + + # GET /v1/Account/Container/Object + # + function get_object_to_string(&$obj, $hdrs=array()) + { + if (!is_object($obj) || get_class($obj) != "UpdraftPlus_CF_Object") { + throw new SyntaxException( + "Method argument is not a valid CF_Object."); + } + + $conn_type = "GET_CALL"; + + $url_path = $this->_make_path("STORAGE", $obj->container->name,$obj->name); + $this->_write_callback_type = "OBJECT_STRING"; + $return_code = $this->_send_request($conn_type,$url_path,$hdrs); + + if (!$return_code) { + $this->error_str .= ": Failed to obtain valid HTTP response."; + return array($return_code0,$this->error_str,NULL); + } + if ($return_code == 404) { + $this->error_str = "Object not found."; + return array($return_code0,$this->error_str,NULL); + } + if (($return_code < 200) || ($return_code > 299 + && $return_code != 412 && $return_code != 304)) { + $this->error_str = "Unexpected HTTP return code: $return_code"; + return array($return_code,$this->error_str,NULL); + } + return array($return_code,$this->response_reason, $this->_obj_write_string); + } + + # GET /v1/Account/Container/Object + # + function get_object_to_stream(&$obj, &$resource=NULL, $hdrs=array()) + { + if (!is_object($obj) || get_class($obj) != "UpdraftPlus_CF_Object") { + throw new SyntaxException( + "Method argument is not a valid CF_Object."); + } + if (!is_resource($resource)) { + throw new SyntaxException( + "Resource argument not a valid PHP resource."); + } + + $conn_type = "GET_CALL"; + + $url_path = $this->_make_path("STORAGE", $obj->container->name,$obj->name); + $this->_obj_write_resource = $resource; + $this->_write_callback_type = "OBJECT_STREAM"; + $return_code = $this->_send_request($conn_type,$url_path,$hdrs); + + if (!$return_code) { + $this->error_str .= ": Failed to obtain valid HTTP response."; + return array($return_code,$this->error_str); + } + if ($return_code == 404) { + $this->error_str = "Object not found."; + return array($return_code,$this->error_str); + } + if (($return_code < 200) || ($return_code > 299 + && $return_code != 412 && $return_code != 304)) { + $this->error_str = "Unexpected HTTP return code: $return_code"; + return array($return_code,$this->error_str); + } + return array($return_code,$this->response_reason); + } + + # PUT /v1/Account/Container/Object + # + function put_object(&$obj, &$fp) + { + if (!is_object($obj) || get_class($obj) != "UpdraftPlus_CF_Object") { + throw new SyntaxException( + "Method argument is not a valid CF_Object."); + } + if (!is_resource($fp)) { + throw new SyntaxException( + "File pointer argument is not a valid resource."); + } + + $conn_type = "PUT_OBJ"; + $url_path = $this->_make_path("STORAGE", $obj->container->name,$obj->name); + $hdrs = $this->_headers($obj); + + $etag = $obj->getETag(); + if (isset($etag)) { + $hdrs[] = "ETag: " . $etag; + } + if (!$obj->content_type) { + $hdrs[] = "Content-Type: application/octet-stream"; + } else { + $hdrs[] = "Content-Type: " . $obj->content_type; + } + + $this->_init($conn_type); + curl_setopt($this->connections[$conn_type], + CURLOPT_INFILE, $fp); + if (!$obj->content_length) { + # We don''t know the Content-Length, so assumed "chunked" PUT + # + curl_setopt($this->connections[$conn_type], CURLOPT_UPLOAD, True); + $hdrs[] = 'Transfer-Encoding: chunked'; + } else { + # We know the Content-Length, so use regular transfer + # + curl_setopt($this->connections[$conn_type], + CURLOPT_INFILESIZE, $obj->content_length); + } + $return_code = $this->_send_request($conn_type,$url_path,$hdrs); + + if (!$return_code) { + $this->error_str .= ": Failed to obtain valid HTTP response."; + return array(0,$this->error_str,NULL); + } + if ($return_code == 412) { + $this->error_str = "Missing Content-Type header"; + return array($return_code,$this->error_str,NULL); + } + if ($return_code == 422) { + $this->error_str = "Derived and computed checksums do not match."; + return array($return_code,$this->error_str,NULL); + } + if ($return_code != 201) { + $this->error_str = "Unexpected HTTP return code: $return_code"; + return array($return_code,$this->error_str,NULL); + } + return array($return_code,$this->response_reason,$this->_obj_etag); + } + function post_account(&$conn) + { + if (!is_object($conn) || get_class($conn) != "UpdraftPlus_CF_Connection") { + throw new SyntaxException( + "Method argument is not a valid CF_Connection object."); + } + if (!is_array($conn->metadata)) { + throw new SyntaxException("Metadata array is empty"); + } + $return_code = $this->_send_request("DEL_POST", $this->_make_path("STORAGE"), $conn->metadata, "POST"); + switch ($return_code) { + case 202: + case 201: + break; + case 0: + $this->error_str .= ": Failed to obtain valid HTTP response."; + $return_code = 0; + break; + case 404: + $this->error_str = "Account, Container, or Object not found."; + break; + default: + $this->error_str = "Unexpected HTTP return code: $return_code"; + break; + } + return $return_code; + } + function post_container(&$cont) + { + if (!is_object($cont) || get_class($cont) != "UpdraftPlus_CF_Container") { + throw new SyntaxException( + "Method argument is not a valid CF_Container object."); + } + if (!is_array($cont->metadata)) { + throw new SyntaxException("Metadata array is empty"); + } + $return_code = $this->_send_request("DEL_POST", $this->_make_path("STORAGE", $cont->name), $cont->metadata, "POST"); + switch ($return_code) { + case 201: + case 202: + break; + case 0: + $this->error_str .= ": Failed to obtain valid HTTP response."; + $return_code = 0; + break; + case 404: + $this->error_str = "Account, Container, or Object not found."; + break; + default: + $this->error_str = "Unexpected HTTP return code: $return_code"; + break; + } + return $return_code; + } + + # POST /v1/Account/Container/Object + # + function update_object(&$obj) + { + if (!is_object($obj) || get_class($obj) != "UpdraftPlus_CF_Object") { + throw new SyntaxException( + "Method argument is not a valid CF_Object."); + } + + # TODO: The is_array check isn't in sync with the error message + if (!$obj->manifest && !(is_array($obj->metadata) || is_array($obj->headers))) { + $this->error_str = "Metadata and headers arrays are empty."; + return 0; + } + + $url_path = $this->_make_path("STORAGE", $obj->container->name,$obj->name); + + $hdrs = $this->_headers($obj); + $return_code = $this->_send_request("DEL_POST",$url_path,$hdrs,"POST"); + switch ($return_code) { + case 202: + break; + case 0: + $this->error_str .= ": Failed to obtain valid HTTP response."; + $return_code = 0; + break; + case 404: + $this->error_str = "Account, Container, or Object not found."; + break; + default: + $this->error_str = "Unexpected HTTP return code: $return_code"; + break; + } + return $return_code; + } + + # HEAD /v1/Account/Container/Object + # + function head_object(&$obj) + { + if (!is_object($obj) || get_class($obj) != "UpdraftPlus_CF_Object") { + throw new SyntaxException( + "Method argument is not a valid CF_Object."); + } + + $conn_type = "HEAD"; + + $url_path = $this->_make_path("STORAGE", $obj->container->name,$obj->name); + $return_code = $this->_send_request($conn_type,$url_path); + + if (!$return_code) { + $this->error_str .= ": Failed to obtain valid HTTP response."; + return array(0, $this->error_str." ".$this->response_reason, + NULL, NULL, NULL, NULL, array(), NULL, NULL, NULL, array()); + } + + if ($return_code == 404) { + return array($return_code, $this->response_reason, + NULL, NULL, NULL, NULL, array(), NULL, NULL, NULL, array()); + } + if ($return_code == 204 || $return_code == 200) { + return array($return_code,$this->response_reason, + $this->_obj_etag, + $this->_obj_last_modified, + $this->_obj_content_type, + $this->_obj_content_length, + $this->_obj_metadata, + $this->_obj_manifest, + $this->_obj_delete_at, + $this->_obj_delete_after, + $this->_obj_headers); + } + $this->error_str = "Unexpected HTTP return code: $return_code"; + return array($return_code, $this->error_str." ".$this->response_reason, + NULL, NULL, NULL, NULL, array(), NULL, NULL, NULL, array()); + } + + # COPY /v1/Account/Container/Object + # + function copy_object($src_obj_name, $dest_obj_name, $container_name_source, $container_name_target, $metadata=NULL, $headers=NULL) + { + if (!$src_obj_name) { + $this->error_str = "Object name not set."; + return 0; + } + + if ($container_name_source == "") { + $this->error_str = "Container name source not set."; + return 0; + } + + if ($container_name_source != "0" and !isset($container_name_source)) { + $this->error_str = "Container name source not set."; + return 0; + } + + if ($container_name_target == "") { + $this->error_str = "Container name target not set."; + return 0; + } + + if ($container_name_target != "0" and !isset($container_name_target)) { + $this->error_str = "Container name target not set."; + return 0; + } + + $conn_type = "COPY"; + + $url_path = $this->_make_path("STORAGE", $container_name_source, rawurlencode($src_obj_name)); + $destination = rawurlencode($container_name_target."/".$dest_obj_name); + + $hdrs = self::_process_headers($metadata, $headers); + $hdrs[DESTINATION] = $destination; + + $return_code = $this->_send_request($conn_type,$url_path,$hdrs,"COPY"); + switch ($return_code) { + case 201: + break; + case 0: + $this->error_str .= ": Failed to obtain valid HTTP response."; + $return_code = 0; + break; + case 404: + $this->error_str = "Specified container/object did not exist."; + break; + default: + $this->error_str = "Unexpected HTTP return code: $return_code."; + } + return $return_code; + } + + # DELETE /v1/Account/Container/Object + # + function delete_object($container_name, $object_name) + { + if ($container_name == "") { + $this->error_str = "Container name not set."; + return 0; + } + + if ($container_name != "0" and !isset($container_name)) { + $this->error_str = "Container name not set."; + return 0; + } + + if (!$object_name) { + $this->error_str = "Object name not set."; + return 0; + } + + $url_path = $this->_make_path("STORAGE", $container_name,$object_name); + $return_code = $this->_send_request("DEL_POST",$url_path,NULL,"DELETE"); + switch ($return_code) { + case 204: + break; + case 0: + $this->error_str .= ": Failed to obtain valid HTTP response."; + $return_code = 0; + break; + case 404: + $this->error_str = "Specified container did not exist to delete."; + break; + default: + $this->error_str = "Unexpected HTTP return code: $return_code."; + } + return $return_code; + } + + function get_error() + { + return $this->error_str; + } + + function setDebug($bool) + { + $this->dbug = $bool; + foreach ($this->connections as $k => $v) { + if (!is_null($v)) { + curl_setopt($this->connections[$k], CURLOPT_VERBOSE, $this->dbug); + } + } + } + + function getCDNMUrl() + { + return $this->cdnm_url; + } + + function getStorageUrl() + { + return $this->storage_url; + } + + function getAuthToken() + { + return $this->auth_token; + } + + function setCFAuth($cfs_auth, $servicenet=False) + { + if ($servicenet) { + $this->storage_url = "https://snet-" . substr($cfs_auth->storage_url, 8); + } else { + $this->storage_url = $cfs_auth->storage_url; + } + $this->auth_token = $cfs_auth->auth_token; + $this->cdnm_url = $cfs_auth->cdnm_url; + } + + function setReadProgressFunc($func_name) + { + $this->_user_read_progress_callback_func = $func_name; + } + + function setWriteProgressFunc($func_name) + { + $this->_user_write_progress_callback_func = $func_name; + } + private function _header_cb($ch, $header) + { + $header_len = strlen($header); + + if (preg_match("/^(HTTP\/1\.[01]) (\d{3}) (.*)/", $header, $matches)) { + $this->response_status = $matches[2]; + $this->response_reason = $matches[3]; + return $header_len; + } + + if (strpos($header, ":") === False) + return $header_len; + list($name, $value) = explode(":", $header, 2); + $value = trim($value); + + switch (strtolower($name)) { + case strtolower(CDN_ENABLED): + $this->_cdn_enabled = strtolower($value) == "true"; + break; + case strtolower(CDN_URI): + $this->_cdn_uri = $value; + break; + case strtolower(CDN_SSL_URI): + $this->_cdn_ssl_uri = $value; + break; + case strtolower(CDN_STREAMING_URI): + $this->_cdn_streaming_uri = $value; + break; + case strtolower(CDN_TTL): + $this->_cdn_ttl = $value; + break; + case strtolower(MANIFEST_HEADER): + $this->_obj_manifest = $value; + break; + case strtolower(CDN_LOG_RETENTION): + $this->_cdn_log_retention = strtolower($value) == "true"; + break; + case strtolower(CDN_ACL_USER_AGENT): + $this->_cdn_acl_user_agent = $value; + break; + case strtolower(CDN_ACL_REFERRER): + $this->_cdn_acl_referrer = $value; + break; + case strtolower(ACCOUNT_CONTAINER_COUNT): + $this->_account_container_count = (float)$value+0; + break; + case strtolower(ACCOUNT_BYTES_USED): + $this->_account_bytes_used = (float)$value+0; + break; + case strtolower(CONTAINER_OBJ_COUNT): + $this->_container_object_count = (float)$value+0; + break; + case strtolower(CONTAINER_BYTES_USED): + $this->_container_bytes_used = (float)$value+0; + break; + case strtolower(ETAG_HEADER): + $this->_obj_etag = $value; + break; + case strtolower(LAST_MODIFIED_HEADER): + $this->_obj_last_modified = $value; + break; + case strtolower(CONTENT_TYPE_HEADER): + $this->_obj_content_type = $value; + break; + case strtolower(CONTENT_LENGTH_HEADER): + $this->_obj_content_length = (float)$value+0; + break; + case strtolower(ORIGIN_HEADER): + $this->_obj_headers[ORIGIN_HEADER] = $value; + break; + case strtolower(ACCOUNT_KEY): + $this->_account_key = $value; + break; + default: + if (strncasecmp($name, METADATA_HEADER_PREFIX, strlen(METADATA_HEADER_PREFIX)) == 0) { + $name = substr($name, strlen(METADATA_HEADER_PREFIX)); + $this->_obj_metadata[$name] = $value; + } + elseif ((strncasecmp($name, CONTENT_HEADER_PREFIX, strlen(CONTENT_HEADER_PREFIX)) == 0) || + (strncasecmp($name, ACCESS_CONTROL_HEADER_PREFIX, strlen(ACCESS_CONTROL_HEADER_PREFIX)) == 0)) { + $this->_obj_headers[$name] = $value; + } + elseif (strncasecmp($name, ACCOUNT_METADATA_HEADER_PREFIX, strlen(ACCOUNT_METADATA_HEADER_PREFIX)) == 0) { + $this->_account_metadata[$name] = $value; + } + elseif (strncasecmp($name, CONTAINER_METADATA_HEADER_PREFIX, strlen(CONTAINER_METADATA_HEADER_PREFIX)) == 0) { + $this->_container_metadata[$name] = $value; + } + } + return $header_len; + } + + private function _read_cb($ch, $fd, $length) + { + $data = fread($fd, $length); + $len = strlen($data); + if (isset($this->_user_write_progress_callback_func)) { + call_user_func($this->_user_write_progress_callback_func, $len); + } + return $data; + } + + private function _write_cb($ch, $data) + { + $dlen = strlen($data); + switch ($this->_write_callback_type) { + case "TEXT_LIST": + $this->_return_list = $this->_return_list . $data; + //= explode("\n",$data); # keep tab,space + //his->_text_list[] = rtrim($data,"\n\r\x0B"); # keep tab,space + break; + case "OBJECT_STREAM": + fwrite($this->_obj_write_resource, $data, $dlen); + break; + case "OBJECT_STRING": + $this->_obj_write_string .= $data; + break; + } + if (isset($this->_user_read_progress_callback_func)) { + call_user_func($this->_user_read_progress_callback_func, $dlen); + } + return $dlen; + } + + private function _auth_hdr_cb($ch, $header) + { + preg_match("/^HTTP\/1\.[01] (\d{3}) (.*)/", $header, $matches); + if (isset($matches[1])) { + $this->response_status = $matches[1]; + } + if (isset($matches[2])) { + $this->response_reason = $matches[2]; + } + if (stripos($header, STORAGE_URL) === 0) { + $this->storage_url = trim(substr($header, strlen(STORAGE_URL)+1)); + } + if (stripos($header, CDNM_URL) === 0) { + $this->cdnm_url = trim(substr($header, strlen(CDNM_URL)+1)); + } + if (stripos($header, AUTH_TOKEN) === 0) { + $this->auth_token = trim(substr($header, strlen(AUTH_TOKEN)+1)); + } + if (stripos($header, AUTH_TOKEN_LEGACY) === 0) { + $this->auth_token = trim(substr($header,strlen(AUTH_TOKEN_LEGACY)+1)); + } + return strlen($header); + } + + private function _make_headers($hdrs=NULL) + { + $new_headers = array(); + $has_stoken = False; + $has_uagent = False; + if (is_array($hdrs)) { + foreach ($hdrs as $h => $v) { + if (is_int($h)) { + list($h, $v) = explode(":", $v, 2); + } + + if (strncasecmp($h, AUTH_TOKEN, strlen(AUTH_TOKEN)) === 0) { + $has_stoken = True; + } + if (strncasecmp($h, USER_AGENT_HEADER, strlen(USER_AGENT_HEADER)) === 0) { + $has_uagent = True; + } + $new_headers[] = $h . ": " . trim($v); + } + } + if (!$has_stoken) { + $new_headers[] = AUTH_TOKEN . ": " . $this->auth_token; + } + if (!$has_uagent) { + $new_headers[] = USER_AGENT_HEADER . ": " . USER_AGENT; + } + return $new_headers; + } + + private function _init($conn_type, $force_new=False) + { + if (!array_key_exists($conn_type, $this->connections)) { + $this->error_str = "Invalid CURL_XXX connection type"; + return False; + } + + if (is_null($this->connections[$conn_type]) || $force_new) { + $ch = curl_init(); + } else { + return; + } + + if ($this->dbug) { curl_setopt($ch, CURLOPT_VERBOSE, 1); } + + if (!is_null($this->cabundle_path)) { + curl_setopt($ch, CURLOPT_CAINFO, $this->cabundle_path); + } + if (UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify')) { + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + } else { + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); + } + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); + curl_setopt($ch, CURLOPT_MAXREDIRS, 4); + curl_setopt($ch, CURLOPT_HEADER, 0); + curl_setopt($ch, CURLOPT_HEADERFUNCTION, array(&$this, '_header_cb')); + + if ($conn_type == "GET_CALL") { + curl_setopt($ch, CURLOPT_WRITEFUNCTION, array(&$this, '_write_cb')); + } + + if ($conn_type == "PUT_OBJ") { + curl_setopt($ch, CURLOPT_PUT, 1); + curl_setopt($ch, CURLOPT_READFUNCTION, array(&$this, '_read_cb')); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + } + if ($conn_type == "HEAD") { + curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "HEAD"); + curl_setopt($ch, CURLOPT_NOBODY, 1); + } + if ($conn_type == "PUT_CONT") { + curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); + curl_setopt($ch, CURLOPT_INFILESIZE, 0); + curl_setopt($ch, CURLOPT_NOBODY, 1); + } + if ($conn_type == "DEL_POST") { + curl_setopt($ch, CURLOPT_NOBODY, 1); + } + if ($conn_type == "COPY") { + curl_setopt($ch, CURLOPT_NOBODY, 1); + } + $this->connections[$conn_type] = $ch; + return; + } + + private function _reset_callback_vars() + { + $this->_text_list = array(); + $this->_return_list = NULL; + $this->_account_metadata = array(); + $this->_account_key = NULL; + $this->_account_container_count = 0; + $this->_account_bytes_used = 0; + $this->_container_metadata = array(); + $this->_container_object_count = 0; + $this->_container_bytes_used = 0; + $this->_obj_delete_at = NULL; + $this->_obj_delete_after = NULL; + $this->_obj_etag = NULL; + $this->_obj_last_modified = NULL; + $this->_obj_content_type = NULL; + $this->_obj_content_length = NULL; + $this->_obj_metadata = array(); + $this->_obj_manifest = NULL; + $this->_obj_headers = NULL; + $this->_obj_write_string = ""; + $this->_cdn_streaming_uri = NULL; + $this->_cdn_enabled = NULL; + $this->_cdn_ssl_uri = NULL; + $this->_cdn_uri = NULL; + $this->_cdn_ttl = NULL; + $this->response_status = 0; + $this->response_reason = ""; + } + + private function _make_path($t="STORAGE",$c=NULL,$o=NULL) + { + $path = array(); + switch ($t) { + case "STORAGE": + $path[] = $this->storage_url; break; + case "CDN": + $path[] = $this->cdnm_url; break; + } + if ($c != "") { + $path[] = rawurlencode($c); + } + if ($o) { + # mimic Python''s urllib.quote() feature of a "safe" '/' character + # + $path[] = str_replace("%2F","/",rawurlencode($o)); + } + return implode("/",$path); + } + + private function _headers(&$obj) + { + $hdrs = self::_process_headers($obj->metadata, $obj->headers); + if ($obj->manifest) + $hdrs[MANIFEST_HEADER] = $obj->manifest; + + return $hdrs; + } + + private function _process_headers($metadata=null, $headers=null) + { + $rules = array( + array( + 'prefix' => METADATA_HEADER_PREFIX, + ), + array( + 'prefix' => '', + 'filter' => array( # key order is important, first match decides + CONTENT_TYPE_HEADER => false, + CONTENT_LENGTH_HEADER => false, + CONTENT_HEADER_PREFIX => true, + ACCESS_CONTROL_HEADER_PREFIX => true, + ORIGIN_HEADER => true, + ), + ), + ); + + $hdrs = array(); + $argc = func_num_args(); + $argv = func_get_args(); + for ($argi = 0; $argi < $argc; $argi++) { + if(!is_array($argv[$argi])) continue; + + $rule = $rules[$argi]; + foreach ($argv[$argi] as $k => $v) { + $k = trim($k); + $v = trim($v); + if (strpos($k, ":") !== False) throw new SyntaxException( + "Header names cannot contain a ':' character."); + + if (array_key_exists('filter', $rule)) { + $result = null; + foreach ($rule['filter'] as $p => $f) { + if (strncasecmp($k, $p, strlen($p)) == 0) { + $result = $f; + break; + } + } + if (!$result) throw new SyntaxException(sprintf( + "Header name %s is not allowed", $k)); + } + + $k = $rule['prefix'] . $k; + if (strlen($k) > MAX_HEADER_NAME_LEN || strlen($v) > MAX_HEADER_VALUE_LEN) + throw new SyntaxException(sprintf( + "Header %s exceeds maximum length: %d/%d", + $k, strlen($k), strlen($v))); + + $hdrs[$k] = $v; + } + } + + return $hdrs; + } + + private function _send_request($conn_type, $url_path, $hdrs=NULL, $method="GET", $force_new=False) + { + $this->_init($conn_type, $force_new); + $this->_reset_callback_vars(); + $headers = $this->_make_headers($hdrs); + + if (gettype($this->connections[$conn_type]) == "unknown type") + throw new ConnectionNotOpenException ( + "Connection is not open." + ); + + switch ($method) { + case "COPY": + curl_setopt($this->connections[$conn_type], + CURLOPT_CUSTOMREQUEST, "COPY"); + break; + case "DELETE": + curl_setopt($this->connections[$conn_type], + CURLOPT_CUSTOMREQUEST, "DELETE"); + break; + case "POST": + curl_setopt($this->connections[$conn_type], + CURLOPT_CUSTOMREQUEST, "POST"); + default: + break; + } + + curl_setopt($this->connections[$conn_type], + CURLOPT_HTTPHEADER, $headers); + + curl_setopt($this->connections[$conn_type], + CURLOPT_URL, $url_path); + + if (!curl_exec($this->connections[$conn_type]) && curl_errno($this->connections[$conn_type]) !== 0) { + $this->error_str = "(curl error: " + . curl_errno($this->connections[$conn_type]) . ") "; + $this->error_str .= curl_error($this->connections[$conn_type]); + return False; + } + return curl_getinfo($this->connections[$conn_type], CURLINFO_HTTP_CODE); + } + + function close() + { + foreach ($this->connections as $cnx) { + if (isset($cnx)) { + curl_close($cnx); + $this->connections[$cnx] = NULL; + } + } + } + private function create_array() + { + $this->_text_list = explode("\n",rtrim($this->_return_list,"\n\x0B")); + return True; + } + +} + +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * c-hanging-comment-ender-p: nil + * End: + */ +?> diff --git a/plugins/updraftplus/includes/ftp.class.php b/plugins/updraftplus/includes/ftp.class.php new file mode 100644 index 0000000..4241432 --- /dev/null +++ b/plugins/updraftplus/includes/ftp.class.php @@ -0,0 +1,231 @@ +host = $host; + $this->username = $username; + $this->password = $password; + $this->port = $port; + } + + public function connect() { + + $time_start = time(); + $this->conn_id = ftp_connect($this->host, $this->port, 20); + + if ($this->conn_id) $result = ftp_login($this->conn_id, $this->username, $this->password); + + if (!empty($result)) { + ftp_set_option($this->conn_id, FTP_TIMEOUT_SEC, $this->timeout); + ftp_pasv($this->conn_id, $this->passive); + $this->system_type = ftp_systype($this->conn_id); + return true; + } + + if (time() - $time_start > 19) { + global $updraftplus_admin; + if (isset($updraftplus_admin->logged) && is_array($updraftplus_admin->logged)) { + $updraftplus_admin->logged[] = sprintf(__('The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company.', 'updraftplus'), 'FTP'); + } else { + global $updraftplus; + $updraftplus->log(sprintf(__('The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company.', 'updraftplus'), 'FTP'), 'error'); + } + } + + return false; + } + + public function put($local_file_path, $remote_file_path, $mode = FTP_BINARY, $resume = false, $updraftplus = false) { + + $file_size = filesize($local_file_path); + + $existing_size = 0; + if ($resume) { + $existing_size = ftp_size($this->conn_id, $remote_file_path); + if ($existing_size <=0) { + $resume = false; $existing_size = 0; + } else { + if (is_a($updraftplus, 'UpdraftPlus')) $updraftplus->log("File already exists at remote site: size $existing_size. Will attempt resumption."); + if ($existing_size >= $file_size) { + if (is_a($updraftplus, 'UpdraftPlus')) $updraftplus->log("File is apparently already completely uploaded"); + return true; + } + } + } + + // From here on, $file_size is only used for logging calculations. We want to avoid divsion by zero. + $file_size = max($file_size, 1); + + if (!$fh = fopen($local_file_path, 'rb')) return false; + if ($existing_size) fseek($fh, $existing_size); + + $ret = ftp_nb_fput($this->conn_id, $remote_file_path, $fh, FTP_BINARY, $existing_size); + + // $existing_size can now be re-purposed + + while ($ret == FTP_MOREDATA) { + if (is_a($updraftplus, 'UpdraftPlus')) { + $new_size = ftell($fh); + $record_after = 524288; + if ($existing_size > 2097152) { + $record_after = ($existing_size > 4194304) ? 2097152 : 1048576; + } + if ($new_size - $existing_size > $record_after) { + $existing_size = $new_size; + $percent = round(100*$new_size/$file_size,1); + $updraftplus->record_uploaded_chunk($percent, '', $local_file_path); + } + } + // Continue upload + $ret = ftp_nb_continue($this->conn_id); + } + + fclose($fh); + + if ($ret != FTP_FINISHED) { + if (is_a($updraftplus, 'UpdraftPlus')) $updraftplus->log("FTP upload: error ($ret)"); + return false; + } + + return true; + + } + + public function get($local_file_path, $remote_file_path, $mode = FTP_BINARY, $resume = false, $updraftplus = false) { + + $file_last_size = 0; + + if ($resume) { + if (!$fh = fopen($local_file_path, 'ab')) return false; + clearstatcache($local_file_path); + $file_last_size = filesize($local_file_path); + } else { + if (!$fh = fopen($local_file_path, 'wb')) return false; + } + + $ret = ftp_nb_fget($this->conn_id, $fh, $remote_file_path, $mode, $file_last_size); + + if (false == $ret) return false; + + while ($ret == FTP_MOREDATA) { + + if ($updraftplus) { + $file_now_size = filesize($local_file_path); + if ($file_now_size - $file_last_size > 524288) { + $updraftplus->log("FTP fetch: file size is now: ".sprintf("%0.2f",filesize($local_file_path)/1048576)." Mb"); + $file_last_size = $file_now_size; + } + clearstatcache($local_file_path); + } + + $ret = ftp_nb_continue($this->conn_id); + } + + fclose($fh); + + if ($ret == FTP_FINISHED) { + if ($updraftplus) $updraftplus->log("FTP fetch: fetch complete"); + return true; + } else { + if ($updraftplus) $updraftplus->log("FTP fetch: fetch failed"); + return false; + } + + } + + public function chmod($permissions, $remote_filename) { + if ($this->is_octal($permissions)) { + $result = ftp_chmod($this->conn_id, $permissions, $remote_filename); + if ($result) { + return true; + } else { + return false; + } + } else { + throw new Exception('$permissions must be an octal number'); + } + } + + public function chdir($directory) { + ftp_chdir($this->conn_id, $directory); + } + + public function delete($remote_file_path) { + if (ftp_delete($this->conn_id, $remote_file_path)) { + return true; + } else { + return false; + } + } + + public function make_dir($directory) { + if (ftp_mkdir($this->conn_id, $directory)) { + return true; + } else { + return false; + } + } + + public function rename($old_name, $new_name) { + if (ftp_rename($this->conn_id, $old_name, $new_name)) + { + return true; + } + else + { + return false; + } + } + + public function remove_dir($directory) { + if (ftp_rmdir($this->conn_id, $directory)) + { + return true; + } + else + { + return false; + } + } + + public function dir_list($directory) { + return ftp_nlist($this->conn_id, $directory); + } + + public function cdup() { + ftp_cdup($this->conn_id); + } + + public function size($f) { + return ftp_size($this->conn_id, $f); + } + + public function current_dir() { + return ftp_pwd($this->conn_id); + } + + private function is_octal($i) { + return decoct(octdec($i)) == $i; + } + + public function __destruct() { + if ($this->conn_id) ftp_close($this->conn_id); + } +} +?> diff --git a/plugins/updraftplus/includes/get-cpanel-quota-usage.pl b/plugins/updraftplus/includes/get-cpanel-quota-usage.pl new file mode 100644 index 0000000..7e679dd --- /dev/null +++ b/plugins/updraftplus/includes/get-cpanel-quota-usage.pl @@ -0,0 +1,13 @@ +#!/usr/local/bin/perl + +use strict; +use Env qw(UPDRAFTPLUSKEY); + +if ($UPDRAFTPLUSKEY ne 'updraftplus') { die('Error'); } +BEGIN { unshift @INC, '/usr/local/cpanel'; } + +use Cpanel::Quota (); + +# Used, limit, remain, files used, files limit, files remain +my @homesize = ( Cpanel::Quota::displayquota( { 'bytes' => 1, 'include_sqldbs' => 1, 'include_mailman' => 1, })); +print 'RESULT: '.join(" ", @homesize)."\n"; diff --git a/plugins/updraftplus/includes/google-extensions.php b/plugins/updraftplus/includes/google-extensions.php new file mode 100644 index 0000000..9ed3e5a --- /dev/null +++ b/plugins/updraftplus/includes/google-extensions.php @@ -0,0 +1,323 @@ +resumeUri = $resumeUri; } + public function updraftplus_setProgress($progress) { $this->progress = $progress; } + // N.B. a public method getResumeUri already exists - and does something completely different + public function updraftplus_getResumeUri() { return empty($this->resumeUri) ? '' : $this->resumeUri; } +} +*/ + +/** + * Copyright 2012 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +if (!class_exists('Google_Client')) { + require_once dirname(__FILE__) . '/Google/autoload.php'; +} + +/** + * Manage large file uploads, which may be media but can be any type + * of sizable data. + */ +class UpdraftPlus_Google_Http_MediaFileUpload +{ + +public function updraftplus_setResumeUri($resumeUri) { $this->resumeUri = $resumeUri; } +public function updraftplus_setProgress($progress) { $this->progress = $progress; } +//N.B. a public method getResumeUri already exists - and does something completely different +public function updraftplus_getResumeUri() { return $this->resumeUri; } + + const UPLOAD_MEDIA_TYPE = 'media'; + const UPLOAD_MULTIPART_TYPE = 'multipart'; + const UPLOAD_RESUMABLE_TYPE = 'resumable'; + + /** @var string $mimeType */ + private $mimeType; + + /** @var string $data */ + private $data; + + /** @var bool $resumable */ + private $resumable; + + /** @var int $chunkSize */ + private $chunkSize; + + /** @var int $size */ + private $size; + + /** @var string $resumeUri */ + private $resumeUri; + + /** @var int $progress */ + private $progress; + + /** @var Google_Client */ + private $client; + + /** @var Google_Http_Request */ + private $request; + + /** @var string */ + private $boundary; + + /** + * Result code from last HTTP call + * @var int + */ + private $httpResultCode; + + /** + * @param $mimeType string + * @param $data string The bytes you want to upload. + * @param $resumable bool + * @param bool $chunkSize File will be uploaded in chunks of this many bytes. + * only used if resumable=True + */ + public function __construct( + Google_Client $client, + Google_Http_Request $request, + $mimeType, + $data, + $resumable = false, + $chunkSize = false, + $boundary = false + ) { + $this->client = $client; + $this->request = $request; + $this->mimeType = $mimeType; + $this->data = $data; + $this->size = strlen($this->data); + $this->resumable = $resumable; + if (!$chunkSize) { + $chunkSize = 256 * 1024; + } + $this->chunkSize = $chunkSize; + $this->progress = 0; + $this->boundary = $boundary; + + // Process Media Request + $this->process(); + } + + /** + * Set the size of the file that is being uploaded. + * @param $size - int file size in bytes + */ + public function setFileSize($size) + { + $this->size = $size; + } + + /** + * Return the progress on the upload + * @return int progress in bytes uploaded. + */ + public function getProgress() + { + return $this->progress; + } + + /** + * Return the HTTP result code from the last call made. + * @return int code + */ + public function getHttpResultCode() + { + return $this->httpResultCode; + } + + /** + * Send the next part of the file to upload. + * @param [$chunk] the next set of bytes to send. If false will used $data passed + * at construct time. + */ + public function nextChunk($chunk = false) + { + if (false == $this->resumeUri) { + $this->resumeUri = $this->getResumeUri(); + } + + if (false == $chunk) { + $chunk = substr($this->data, $this->progress, $this->chunkSize); + } + + $lastBytePos = $this->progress + strlen($chunk) - 1; + $headers = array( + 'content-range' => "bytes $this->progress-$lastBytePos/$this->size", + 'content-type' => $this->request->getRequestHeader('content-type'), + 'content-length' => $this->chunkSize, + 'expect' => '', + ); + + $httpRequest = new Google_Http_Request( + $this->resumeUri, + 'PUT', + $headers, + $chunk + ); + + if ($this->client->getClassConfig("Google_Http_Request", "enable_gzip_for_uploads")) { + $httpRequest->enableGzip(); + } else { + $httpRequest->disableGzip(); + } + + $response = $this->client->getIo()->makeRequest($httpRequest); + $response->setExpectedClass($this->request->getExpectedClass()); + $code = $response->getResponseHttpCode(); + $this->httpResultCode = $code; + + if (308 == $code) { + // Track the amount uploaded. + $range = explode('-', $response->getResponseHeader('range')); + $this->progress = $range[1] + 1; + + // Allow for changing upload URLs. + $location = $response->getResponseHeader('location'); + if ($location) { + $this->resumeUri = $location; + } + + // No problems, but upload not complete. + return false; + } else { + return Google_Http_REST::decodeHttpResponse($response, $this->client); + } + } + + /** + * @param $meta + * @param $params + * @return array|bool + * @visible for testing + */ + private function process() + { + $postBody = false; + $contentType = false; + + $meta = $this->request->getPostBody(); + $meta = is_string($meta) ? json_decode($meta, true) : $meta; + + $uploadType = $this->getUploadType($meta); + $this->request->setQueryParam('uploadType', $uploadType); + $this->transformToUploadUrl(); + $mimeType = $this->mimeType ? + $this->mimeType : + $this->request->getRequestHeader('content-type'); + + if (self::UPLOAD_RESUMABLE_TYPE == $uploadType) { + $contentType = $mimeType; + $postBody = is_string($meta) ? $meta : json_encode($meta); + } else if (self::UPLOAD_MEDIA_TYPE == $uploadType) { + $contentType = $mimeType; + $postBody = $this->data; + } else if (self::UPLOAD_MULTIPART_TYPE == $uploadType) { + // This is a multipart/related upload. + $boundary = $this->boundary ? $this->boundary : mt_rand(); + $boundary = str_replace('"', '', $boundary); + $contentType = 'multipart/related; boundary=' . $boundary; + $related = "--$boundary\r\n"; + $related .= "Content-Type: application/json; charset=UTF-8\r\n"; + $related .= "\r\n" . json_encode($meta) . "\r\n"; + $related .= "--$boundary\r\n"; + $related .= "Content-Type: $mimeType\r\n"; + $related .= "Content-Transfer-Encoding: base64\r\n"; + $related .= "\r\n" . base64_encode($this->data) . "\r\n"; + $related .= "--$boundary--"; + $postBody = $related; + } + + $this->request->setPostBody($postBody); + + if (isset($contentType) && $contentType) { + $contentTypeHeader['content-type'] = $contentType; + $this->request->setRequestHeaders($contentTypeHeader); + } + } + + private function transformToUploadUrl() + { + $base = $this->request->getBaseComponent(); + $this->request->setBaseComponent($base . '/upload'); + } + + /** + * Valid upload types: + * - resumable (UPLOAD_RESUMABLE_TYPE) + * - media (UPLOAD_MEDIA_TYPE) + * - multipart (UPLOAD_MULTIPART_TYPE) + * @param $meta + * @return string + * @visible for testing + */ + public function getUploadType($meta) + { + if ($this->resumable) { + return self::UPLOAD_RESUMABLE_TYPE; + } + + if (false == $meta && $this->data) { + return self::UPLOAD_MEDIA_TYPE; + } + + return self::UPLOAD_MULTIPART_TYPE; + } + + private function getResumeUri() + { + $result = null; + $body = $this->request->getPostBody(); + if ($body) { + $headers = array( + 'content-type' => 'application/json; charset=UTF-8', + 'content-length' => Google_Utils::getStrLen($body), + 'x-upload-content-type' => $this->mimeType, + 'x-upload-content-length' => $this->size, + 'expect' => '', + ); + $this->request->setRequestHeaders($headers); + } + + $response = $this->client->getIo()->makeRequest($this->request); + $location = $response->getResponseHeader('location'); + $code = $response->getResponseHttpCode(); + + if (200 == $code && true == $location) { + return $location; + } + $message = $code; + $body = @json_decode($response->getResponseBody()); + if (!empty( $body->error->errors ) ) { + $message .= ': '; + foreach ($body->error->errors as $error) { + $message .= "{$error->domain}, {$error->message};"; + } + $message = rtrim($message, ';'); + } + + $error = "Failed to start the resumable upload (HTTP {$message})"; + $this->client->getLogger()->error($error); + throw new Google_Exception($error); + } +} diff --git a/plugins/updraftplus/includes/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/plugins/updraftplus/includes/images/ui-bg_diagonals-thick_18_b81900_40x40.png new file mode 100644 index 0000000..0274417 Binary files /dev/null and b/plugins/updraftplus/includes/images/ui-bg_diagonals-thick_18_b81900_40x40.png differ diff --git a/plugins/updraftplus/includes/images/ui-bg_diagonals-thick_20_666666_40x40.png b/plugins/updraftplus/includes/images/ui-bg_diagonals-thick_20_666666_40x40.png new file mode 100644 index 0000000..39adb80 Binary files /dev/null and b/plugins/updraftplus/includes/images/ui-bg_diagonals-thick_20_666666_40x40.png differ diff --git a/plugins/updraftplus/includes/images/ui-bg_flat_10_000000_40x100.png b/plugins/updraftplus/includes/images/ui-bg_flat_10_000000_40x100.png new file mode 100644 index 0000000..b10f59c Binary files /dev/null and b/plugins/updraftplus/includes/images/ui-bg_flat_10_000000_40x100.png differ diff --git a/plugins/updraftplus/includes/images/ui-bg_glass_100_f6f6f6_1x400.png b/plugins/updraftplus/includes/images/ui-bg_glass_100_f6f6f6_1x400.png new file mode 100644 index 0000000..c43f78a Binary files /dev/null and b/plugins/updraftplus/includes/images/ui-bg_glass_100_f6f6f6_1x400.png differ diff --git a/plugins/updraftplus/includes/images/ui-bg_glass_100_fdf5ce_1x400.png b/plugins/updraftplus/includes/images/ui-bg_glass_100_fdf5ce_1x400.png new file mode 100644 index 0000000..73bef6e Binary files /dev/null and b/plugins/updraftplus/includes/images/ui-bg_glass_100_fdf5ce_1x400.png differ diff --git a/plugins/updraftplus/includes/images/ui-bg_glass_65_ffffff_1x400.png b/plugins/updraftplus/includes/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100644 index 0000000..daaccef Binary files /dev/null and b/plugins/updraftplus/includes/images/ui-bg_glass_65_ffffff_1x400.png differ diff --git a/plugins/updraftplus/includes/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/plugins/updraftplus/includes/images/ui-bg_gloss-wave_35_f6a828_500x100.png new file mode 100644 index 0000000..d69feec Binary files /dev/null and b/plugins/updraftplus/includes/images/ui-bg_gloss-wave_35_f6a828_500x100.png differ diff --git a/plugins/updraftplus/includes/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/plugins/updraftplus/includes/images/ui-bg_highlight-soft_100_eeeeee_1x100.png new file mode 100644 index 0000000..6ccc665 Binary files /dev/null and b/plugins/updraftplus/includes/images/ui-bg_highlight-soft_100_eeeeee_1x100.png differ diff --git a/plugins/updraftplus/includes/images/ui-bg_highlight-soft_75_ffe45c_1x100.png b/plugins/updraftplus/includes/images/ui-bg_highlight-soft_75_ffe45c_1x100.png new file mode 100644 index 0000000..942b14c Binary files /dev/null and b/plugins/updraftplus/includes/images/ui-bg_highlight-soft_75_ffe45c_1x100.png differ diff --git a/plugins/updraftplus/includes/images/ui-icons_222222_256x240.png b/plugins/updraftplus/includes/images/ui-icons_222222_256x240.png new file mode 100644 index 0000000..42e11ed Binary files /dev/null and b/plugins/updraftplus/includes/images/ui-icons_222222_256x240.png differ diff --git a/plugins/updraftplus/includes/images/ui-icons_228ef1_256x240.png b/plugins/updraftplus/includes/images/ui-icons_228ef1_256x240.png new file mode 100644 index 0000000..b031289 Binary files /dev/null and b/plugins/updraftplus/includes/images/ui-icons_228ef1_256x240.png differ diff --git a/plugins/updraftplus/includes/images/ui-icons_ef8c08_256x240.png b/plugins/updraftplus/includes/images/ui-icons_ef8c08_256x240.png new file mode 100644 index 0000000..85f514b Binary files /dev/null and b/plugins/updraftplus/includes/images/ui-icons_ef8c08_256x240.png differ diff --git a/plugins/updraftplus/includes/images/ui-icons_ffd27a_256x240.png b/plugins/updraftplus/includes/images/ui-icons_ffd27a_256x240.png new file mode 100644 index 0000000..4b52c3d Binary files /dev/null and b/plugins/updraftplus/includes/images/ui-icons_ffd27a_256x240.png differ diff --git a/plugins/updraftplus/includes/images/ui-icons_ffffff_256x240.png b/plugins/updraftplus/includes/images/ui-icons_ffffff_256x240.png new file mode 100644 index 0000000..f9f5e56 Binary files /dev/null and b/plugins/updraftplus/includes/images/ui-icons_ffffff_256x240.png differ diff --git a/plugins/updraftplus/includes/jquery-ui.custom.css b/plugins/updraftplus/includes/jquery-ui.custom.css new file mode 100644 index 0000000..405f965 --- /dev/null +++ b/plugins/updraftplus/includes/jquery-ui.custom.css @@ -0,0 +1,1225 @@ +/*! jQuery UI - v1.11.4 - 2015-12-05 +* http://jqueryui.com +* Includes: core.css, draggable.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, menu.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css, theme.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=gloss_wave&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=highlight_soft&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=glass&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=diagonals_thick&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=flat&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px +* Copyright jQuery Foundation and other contributors; Licensed MIT */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { + display: none; +} +.ui-helper-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} +.ui-helper-reset { + margin: 0; + padding: 0; + border: 0; + outline: 0; + line-height: 1.3; + text-decoration: none; + font-size: 100%; + list-style: none; +} +.ui-helper-clearfix:before, +.ui-helper-clearfix:after { + content: ""; + display: table; + border-collapse: collapse; +} +.ui-helper-clearfix:after { + clear: both; +} +.ui-helper-clearfix { + min-height: 0; /* support: IE7 */ +} +.ui-helper-zfix { + width: 100%; + height: 100%; + top: 0; + left: 0; + position: absolute; + opacity: 0; + filter:Alpha(Opacity=0); /* support: IE8 */ +} + +.ui-front { + z-index: 100; +} + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { + cursor: default !important; +} + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; +} + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.ui-draggable-handle { + -ms-touch-action: none; + touch-action: none; +} +.ui-resizable { + position: relative; +} +.ui-resizable-handle { + position: absolute; + font-size: 0.1px; + display: block; + -ms-touch-action: none; + touch-action: none; +} +.ui-resizable-disabled .ui-resizable-handle, +.ui-resizable-autohide .ui-resizable-handle { + display: none; +} +.ui-resizable-n { + cursor: n-resize; + height: 7px; + width: 100%; + top: -5px; + left: 0; +} +.ui-resizable-s { + cursor: s-resize; + height: 7px; + width: 100%; + bottom: -5px; + left: 0; +} +.ui-resizable-e { + cursor: e-resize; + width: 7px; + right: -5px; + top: 0; + height: 100%; +} +.ui-resizable-w { + cursor: w-resize; + width: 7px; + left: -5px; + top: 0; + height: 100%; +} +.ui-resizable-se { + cursor: se-resize; + width: 12px; + height: 12px; + right: 1px; + bottom: 1px; +} +.ui-resizable-sw { + cursor: sw-resize; + width: 9px; + height: 9px; + left: -5px; + bottom: -5px; +} +.ui-resizable-nw { + cursor: nw-resize; + width: 9px; + height: 9px; + left: -5px; + top: -5px; +} +.ui-resizable-ne { + cursor: ne-resize; + width: 9px; + height: 9px; + right: -5px; + top: -5px; +} +.ui-selectable { + -ms-touch-action: none; + touch-action: none; +} +.ui-selectable-helper { + position: absolute; + z-index: 100; + border: 1px dotted black; +} +.ui-sortable-handle { + -ms-touch-action: none; + touch-action: none; +} +.ui-accordion .ui-accordion-header { + display: block; + cursor: pointer; + position: relative; + margin: 2px 0 0 0; + padding: .5em .5em .5em .7em; + min-height: 0; /* support: IE7 */ + font-size: 100%; +} +.ui-accordion .ui-accordion-icons { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-icons .ui-accordion-icons { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-header .ui-accordion-header-icon { + position: absolute; + left: .5em; + top: 50%; + margin-top: -8px; +} +.ui-accordion .ui-accordion-content { + padding: 1em 2.2em; + border-top: 0; + overflow: auto; +} +.ui-autocomplete { + position: absolute; + top: 0; + left: 0; + cursor: default; +} +.ui-button { + display: inline-block; + position: relative; + padding: 0; + line-height: normal; + margin-right: .1em; + cursor: pointer; + vertical-align: middle; + text-align: center; + overflow: visible; /* removes extra width in IE */ +} +.ui-button, +.ui-button:link, +.ui-button:visited, +.ui-button:hover, +.ui-button:active { + text-decoration: none; +} +/* to make room for the icon, a width needs to be set here */ +.ui-button-icon-only { + width: 2.2em; +} +/* button elements seem to need a little more width */ +button.ui-button-icon-only { + width: 2.4em; +} +.ui-button-icons-only { + width: 3.4em; +} +button.ui-button-icons-only { + width: 3.7em; +} + +/* button text element */ +.ui-button .ui-button-text { + display: block; + line-height: normal; +} +.ui-button-text-only .ui-button-text { + padding: .4em 1em; +} +.ui-button-icon-only .ui-button-text, +.ui-button-icons-only .ui-button-text { + padding: .4em; + text-indent: -9999999px; +} +.ui-button-text-icon-primary .ui-button-text, +.ui-button-text-icons .ui-button-text { + padding: .4em 1em .4em 2.1em; +} +.ui-button-text-icon-secondary .ui-button-text, +.ui-button-text-icons .ui-button-text { + padding: .4em 2.1em .4em 1em; +} +.ui-button-text-icons .ui-button-text { + padding-left: 2.1em; + padding-right: 2.1em; +} +/* no icon support for input elements, provide padding by default */ +input.ui-button { + padding: .4em 1em; +} + +/* button icon element(s) */ +.ui-button-icon-only .ui-icon, +.ui-button-text-icon-primary .ui-icon, +.ui-button-text-icon-secondary .ui-icon, +.ui-button-text-icons .ui-icon, +.ui-button-icons-only .ui-icon { + position: absolute; + top: 50%; + margin-top: -8px; +} +.ui-button-icon-only .ui-icon { + left: 50%; + margin-left: -8px; +} +.ui-button-text-icon-primary .ui-button-icon-primary, +.ui-button-text-icons .ui-button-icon-primary, +.ui-button-icons-only .ui-button-icon-primary { + left: .5em; +} +.ui-button-text-icon-secondary .ui-button-icon-secondary, +.ui-button-text-icons .ui-button-icon-secondary, +.ui-button-icons-only .ui-button-icon-secondary { + right: .5em; +} + +/* button sets */ +.ui-buttonset { + margin-right: 7px; +} +.ui-buttonset .ui-button { + margin-left: 0; + margin-right: -.3em; +} + +/* workarounds */ +/* reset extra padding in Firefox, see h5bp.com/l */ +input.ui-button::-moz-focus-inner, +button.ui-button::-moz-focus-inner { + border: 0; + padding: 0; +} +.ui-datepicker { + width: 17em; + padding: .2em .2em 0; + display: none; +} +.ui-datepicker .ui-datepicker-header { + position: relative; + padding: .2em 0; +} +.ui-datepicker .ui-datepicker-prev, +.ui-datepicker .ui-datepicker-next { + position: absolute; + top: 2px; + width: 1.8em; + height: 1.8em; +} +.ui-datepicker .ui-datepicker-prev-hover, +.ui-datepicker .ui-datepicker-next-hover { + top: 1px; +} +.ui-datepicker .ui-datepicker-prev { + left: 2px; +} +.ui-datepicker .ui-datepicker-next { + right: 2px; +} +.ui-datepicker .ui-datepicker-prev-hover { + left: 1px; +} +.ui-datepicker .ui-datepicker-next-hover { + right: 1px; +} +.ui-datepicker .ui-datepicker-prev span, +.ui-datepicker .ui-datepicker-next span { + display: block; + position: absolute; + left: 50%; + margin-left: -8px; + top: 50%; + margin-top: -8px; +} +.ui-datepicker .ui-datepicker-title { + margin: 0 2.3em; + line-height: 1.8em; + text-align: center; +} +.ui-datepicker .ui-datepicker-title select { + font-size: 1em; + margin: 1px 0; +} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { + width: 45%; +} +.ui-datepicker table { + width: 100%; + font-size: .9em; + border-collapse: collapse; + margin: 0 0 .4em; +} +.ui-datepicker th { + padding: .7em .3em; + text-align: center; + font-weight: bold; + border: 0; +} +.ui-datepicker td { + border: 0; + padding: 1px; +} +.ui-datepicker td span, +.ui-datepicker td a { + display: block; + padding: .2em; + text-align: right; + text-decoration: none; +} +.ui-datepicker .ui-datepicker-buttonpane { + background-image: none; + margin: .7em 0 0 0; + padding: 0 .2em; + border-left: 0; + border-right: 0; + border-bottom: 0; +} +.ui-datepicker .ui-datepicker-buttonpane button { + float: right; + margin: .5em .2em .4em; + cursor: pointer; + padding: .2em .6em .3em .6em; + width: auto; + overflow: visible; +} +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { + float: left; +} + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { + width: auto; +} +.ui-datepicker-multi .ui-datepicker-group { + float: left; +} +.ui-datepicker-multi .ui-datepicker-group table { + width: 95%; + margin: 0 auto .4em; +} +.ui-datepicker-multi-2 .ui-datepicker-group { + width: 50%; +} +.ui-datepicker-multi-3 .ui-datepicker-group { + width: 33.3%; +} +.ui-datepicker-multi-4 .ui-datepicker-group { + width: 25%; +} +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { + border-left-width: 0; +} +.ui-datepicker-multi .ui-datepicker-buttonpane { + clear: left; +} +.ui-datepicker-row-break { + clear: both; + width: 100%; + font-size: 0; +} + +/* RTL support */ +.ui-datepicker-rtl { + direction: rtl; +} +.ui-datepicker-rtl .ui-datepicker-prev { + right: 2px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next { + left: 2px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-prev:hover { + right: 1px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next:hover { + left: 1px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane { + clear: right; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button { + float: left; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, +.ui-datepicker-rtl .ui-datepicker-group { + float: right; +} +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { + border-right-width: 0; + border-left-width: 1px; +} +.ui-dialog { + overflow: hidden; + position: absolute; + top: 0; + left: 0; + padding: .2em; + outline: 0; +} +.ui-dialog .ui-dialog-titlebar { + padding: .4em 1em; + position: relative; +} +.ui-dialog .ui-dialog-title { + float: left; + margin: .1em 0; + white-space: nowrap; + width: 90%; + overflow: hidden; + text-overflow: ellipsis; +} +.ui-dialog .ui-dialog-titlebar-close { + position: absolute; + right: .3em; + top: 50%; + width: 20px; + margin: -10px 0 0 0; + padding: 1px; + height: 20px; +} +.ui-dialog .ui-dialog-content { + position: relative; + border: 0; + padding: .5em 1em; + background: none; + overflow: auto; +} +.ui-dialog .ui-dialog-buttonpane { + text-align: left; + border-width: 1px 0 0 0; + background-image: none; + margin-top: .5em; + padding: .3em 1em .5em .4em; +} +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { + float: right; +} +.ui-dialog .ui-dialog-buttonpane button { + margin: .5em .4em .5em 0; + cursor: pointer; +} +.ui-dialog .ui-resizable-se { + width: 12px; + height: 12px; + right: -5px; + bottom: -5px; + background-position: 16px 16px; +} +.ui-draggable .ui-dialog-titlebar { + cursor: move; +} +.ui-menu { + list-style: none; + padding: 0; + margin: 0; + display: block; + outline: none; +} +.ui-menu .ui-menu { + position: absolute; +} +.ui-menu .ui-menu-item { + position: relative; + margin: 0; + padding: 3px 1em 3px .4em; + cursor: pointer; + min-height: 0; /* support: IE7 */ + /* support: IE10, see #8844 */ + list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"); +} +.ui-menu .ui-menu-divider { + margin: 5px 0; + height: 0; + font-size: 0; + line-height: 0; + border-width: 1px 0 0 0; +} +.ui-menu .ui-state-focus, +.ui-menu .ui-state-active { + margin: -1px; +} + +/* icon support */ +.ui-menu-icons { + position: relative; +} +.ui-menu-icons .ui-menu-item { + padding-left: 2em; +} + +/* left-aligned */ +.ui-menu .ui-icon { + position: absolute; + top: 0; + bottom: 0; + left: .2em; + margin: auto 0; +} + +/* right-aligned */ +.ui-menu .ui-menu-icon { + left: auto; + right: 0; +} +.ui-progressbar { + height: 2em; + text-align: left; + overflow: hidden; +} +.ui-progressbar .ui-progressbar-value { + margin: -1px; + height: 100%; +} +.ui-progressbar .ui-progressbar-overlay { + background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw=="); + height: 100%; + filter: alpha(opacity=25); /* support: IE8 */ + opacity: 0.25; +} +.ui-progressbar-indeterminate .ui-progressbar-value { + background-image: none; +} +.ui-selectmenu-menu { + padding: 0; + margin: 0; + position: absolute; + top: 0; + left: 0; + display: none; +} +.ui-selectmenu-menu .ui-menu { + overflow: auto; + /* Support: IE7 */ + overflow-x: hidden; + padding-bottom: 1px; +} +.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup { + font-size: 1em; + font-weight: bold; + line-height: 1.5; + padding: 2px 0.4em; + margin: 0.5em 0 0 0; + height: auto; + border: 0; +} +.ui-selectmenu-open { + display: block; +} +.ui-selectmenu-button { + display: inline-block; + overflow: hidden; + position: relative; + text-decoration: none; + cursor: pointer; +} +.ui-selectmenu-button span.ui-icon { + right: 0.5em; + left: auto; + margin-top: -8px; + position: absolute; + top: 50%; +} +.ui-selectmenu-button span.ui-selectmenu-text { + text-align: left; + padding: 0.4em 2.1em 0.4em 1em; + display: block; + line-height: 1.4; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.ui-slider { + position: relative; + text-align: left; +} +.ui-slider .ui-slider-handle { + position: absolute; + z-index: 2; + width: 1.2em; + height: 1.2em; + cursor: default; + -ms-touch-action: none; + touch-action: none; +} +.ui-slider .ui-slider-range { + position: absolute; + z-index: 1; + font-size: .7em; + display: block; + border: 0; + background-position: 0 0; +} + +/* support: IE8 - See #6727 */ +.ui-slider.ui-state-disabled .ui-slider-handle, +.ui-slider.ui-state-disabled .ui-slider-range { + filter: inherit; +} + +.ui-slider-horizontal { + height: .8em; +} +.ui-slider-horizontal .ui-slider-handle { + top: -.3em; + margin-left: -.6em; +} +.ui-slider-horizontal .ui-slider-range { + top: 0; + height: 100%; +} +.ui-slider-horizontal .ui-slider-range-min { + left: 0; +} +.ui-slider-horizontal .ui-slider-range-max { + right: 0; +} + +.ui-slider-vertical { + width: .8em; + height: 100px; +} +.ui-slider-vertical .ui-slider-handle { + left: -.3em; + margin-left: 0; + margin-bottom: -.6em; +} +.ui-slider-vertical .ui-slider-range { + left: 0; + width: 100%; +} +.ui-slider-vertical .ui-slider-range-min { + bottom: 0; +} +.ui-slider-vertical .ui-slider-range-max { + top: 0; +} +.ui-spinner { + position: relative; + display: inline-block; + overflow: hidden; + padding: 0; + vertical-align: middle; +} +.ui-spinner-input { + border: none; + background: none; + color: inherit; + padding: 0; + margin: .2em 0; + vertical-align: middle; + margin-left: .4em; + margin-right: 22px; +} +.ui-spinner-button { + width: 16px; + height: 50%; + font-size: .5em; + padding: 0; + margin: 0; + text-align: center; + position: absolute; + cursor: default; + display: block; + overflow: hidden; + right: 0; +} +/* more specificity required here to override default borders */ +.ui-spinner a.ui-spinner-button { + border-top: none; + border-bottom: none; + border-right: none; +} +/* vertically center icon */ +.ui-spinner .ui-icon { + position: absolute; + margin-top: -8px; + top: 50%; + left: 0; +} +.ui-spinner-up { + top: 0; +} +.ui-spinner-down { + bottom: 0; +} + +/* TR overrides */ +.ui-spinner .ui-icon-triangle-1-s { + /* need to fix icons sprite */ + background-position: -65px -16px; +} +.ui-tabs { + position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ + padding: .2em; +} +.ui-tabs .ui-tabs-nav { + margin: 0; + padding: .2em .2em 0; +} +.ui-tabs .ui-tabs-nav li { + list-style: none; + float: left; + position: relative; + top: 0; + margin: 1px .2em 0 0; + border-bottom-width: 0; + padding: 0; + white-space: nowrap; +} +.ui-tabs .ui-tabs-nav .ui-tabs-anchor { + float: left; + padding: .5em 1em; + text-decoration: none; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active { + margin-bottom: -1px; + padding-bottom: 1px; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor, +.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor, +.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor { + cursor: text; +} +.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor { + cursor: pointer; +} +.ui-tabs .ui-tabs-panel { + display: block; + border-width: 0; + padding: 1em 1.4em; + background: none; +} +.ui-tooltip { + padding: 8px; + position: absolute; + z-index: 9999; + max-width: 300px; + -webkit-box-shadow: 0 0 5px #aaa; + box-shadow: 0 0 5px #aaa; +} +body .ui-tooltip { + border-width: 2px; +} + +/* Component containers +----------------------------------*/ +.ui-widget { + font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif; + font-size: 1.1em; +} +.ui-widget .ui-widget { + font-size: 1em; +} +.ui-widget input, +.ui-widget select, +.ui-widget textarea, +.ui-widget button { + font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif; + font-size: 1em; +} +.ui-widget-content { + border: 1px solid #dddddd; + background: #eeeeee url("images/ui-bg_highlight-soft_100_eeeeee_1x100.png") 50% top repeat-x; + color: #333333; +} +.ui-widget-content a { + color: #333333; +} +.ui-widget-header { + border: 1px solid #e78f08; + background: #f6a828 url("images/ui-bg_gloss-wave_35_f6a828_500x100.png") 50% 50% repeat-x; + color: #ffffff; + font-weight: bold; +} +.ui-widget-header a { + color: #ffffff; +} + +/* Interaction states +----------------------------------*/ +.ui-state-default, +.ui-widget-content .ui-state-default, +.ui-widget-header .ui-state-default { + border: 1px solid #cccccc; + background: #f6f6f6 url("images/ui-bg_glass_100_f6f6f6_1x400.png") 50% 50% repeat-x; + font-weight: bold; + color: #1c94c4; +} +.ui-state-default a, +.ui-state-default a:link, +.ui-state-default a:visited { + color: #1c94c4; + text-decoration: none; +} +.ui-state-hover, +.ui-widget-content .ui-state-hover, +.ui-widget-header .ui-state-hover, +.ui-state-focus, +.ui-widget-content .ui-state-focus, +.ui-widget-header .ui-state-focus { + border: 1px solid #fbcb09; + background: #fdf5ce url("images/ui-bg_glass_100_fdf5ce_1x400.png") 50% 50% repeat-x; + font-weight: bold; + color: #c77405; +} +.ui-state-hover a, +.ui-state-hover a:hover, +.ui-state-hover a:link, +.ui-state-hover a:visited, +.ui-state-focus a, +.ui-state-focus a:hover, +.ui-state-focus a:link, +.ui-state-focus a:visited { + color: #c77405; + text-decoration: none; +} +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active { + border: 1px solid #fbd850; + background: #ffffff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x; + font-weight: bold; + color: #eb8f00; +} +.ui-state-active a, +.ui-state-active a:link, +.ui-state-active a:visited { + color: #eb8f00; + text-decoration: none; +} + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, +.ui-widget-content .ui-state-highlight, +.ui-widget-header .ui-state-highlight { + border: 1px solid #fed22f; + background: #ffe45c url("images/ui-bg_highlight-soft_75_ffe45c_1x100.png") 50% top repeat-x; + color: #363636; +} +.ui-state-highlight a, +.ui-widget-content .ui-state-highlight a, +.ui-widget-header .ui-state-highlight a { + color: #363636; +} +.ui-state-error, +.ui-widget-content .ui-state-error, +.ui-widget-header .ui-state-error { + border: 1px solid #cd0a0a; + background: #b81900 url("images/ui-bg_diagonals-thick_18_b81900_40x40.png") 50% 50% repeat; + color: #ffffff; +} +.ui-state-error a, +.ui-widget-content .ui-state-error a, +.ui-widget-header .ui-state-error a { + color: #ffffff; +} +.ui-state-error-text, +.ui-widget-content .ui-state-error-text, +.ui-widget-header .ui-state-error-text { + color: #ffffff; +} +.ui-priority-primary, +.ui-widget-content .ui-priority-primary, +.ui-widget-header .ui-priority-primary { + font-weight: bold; +} +.ui-priority-secondary, +.ui-widget-content .ui-priority-secondary, +.ui-widget-header .ui-priority-secondary { + opacity: .7; + filter:Alpha(Opacity=70); /* support: IE8 */ + font-weight: normal; +} +.ui-state-disabled, +.ui-widget-content .ui-state-disabled, +.ui-widget-header .ui-state-disabled { + opacity: .35; + filter:Alpha(Opacity=35); /* support: IE8 */ + background-image: none; +} +.ui-state-disabled .ui-icon { + filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */ +} + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + width: 16px; + height: 16px; +} +.ui-icon, +.ui-widget-content .ui-icon { + background-image: url("images/ui-icons_222222_256x240.png"); +} +.ui-widget-header .ui-icon { + background-image: url("images/ui-icons_ffffff_256x240.png"); +} +.ui-state-default .ui-icon { + background-image: url("images/ui-icons_ef8c08_256x240.png"); +} +.ui-state-hover .ui-icon, +.ui-state-focus .ui-icon { + background-image: url("images/ui-icons_ef8c08_256x240.png"); +} +.ui-state-active .ui-icon { + background-image: url("images/ui-icons_ef8c08_256x240.png"); +} +.ui-state-highlight .ui-icon { + background-image: url("images/ui-icons_228ef1_256x240.png"); +} +.ui-state-error .ui-icon, +.ui-state-error-text .ui-icon { + background-image: url("images/ui-icons_ffd27a_256x240.png"); +} + +/* positioning */ +.ui-icon-blank { background-position: 16px 16px; } +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-on { background-position: -96px -144px; } +.ui-icon-radio-off { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, +.ui-corner-top, +.ui-corner-left, +.ui-corner-tl { + border-top-left-radius: 4px; +} +.ui-corner-all, +.ui-corner-top, +.ui-corner-right, +.ui-corner-tr { + border-top-right-radius: 4px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-left, +.ui-corner-bl { + border-bottom-left-radius: 4px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-br { + border-bottom-right-radius: 4px; +} + +/* Overlays */ +.ui-widget-overlay { + background: #666666 url("images/ui-bg_diagonals-thick_20_666666_40x40.png") 50% 50% repeat; + opacity: .5; + filter: Alpha(Opacity=50); /* support: IE8 */ +} +.ui-widget-shadow { + margin: -5px 0 0 -5px; + padding: 5px; + background: #000000; + opacity: .2; + filter: Alpha(Opacity=20); /* support: IE8 */ + border-radius: 5px; +} diff --git a/plugins/updraftplus/includes/jquery.blockUI.js b/plugins/updraftplus/includes/jquery.blockUI.js new file mode 100644 index 0000000..064ed34 --- /dev/null +++ b/plugins/updraftplus/includes/jquery.blockUI.js @@ -0,0 +1,619 @@ +/*! + * jQuery blockUI plugin + * Version 2.70.0-2014.11.23 + * Requires jQuery v1.7 or later + * + * Examples at: http://malsup.com/jquery/block/ + * Copyright (c) 2007-2013 M. Alsup + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * Thanks to Amir-Hossein Sobhi for some excellent contributions! + */ +;(function() { +/*jshint eqeqeq:false curly:false latedef:false */ +"use strict"; + + function setup($) { + $.fn._fadeIn = $.fn.fadeIn; + + var noOp = $.noop || function() {}; + + // this bit is to ensure we don't call setExpression when we shouldn't (with extra muscle to handle + // confusing userAgent strings on Vista) + var msie = /MSIE/.test(navigator.userAgent); + var ie6 = /MSIE 6.0/.test(navigator.userAgent) && ! /MSIE 8.0/.test(navigator.userAgent); + var mode = document.documentMode || 0; + var setExpr = $.isFunction( document.createElement('div').style.setExpression ); + + // global $ methods for blocking/unblocking the entire page + $.blockUI = function(opts) { install(window, opts); }; + $.unblockUI = function(opts) { remove(window, opts); }; + + // convenience method for quick growl-like notifications (http://www.google.com/search?q=growl) + $.growlUI = function(title, message, timeout, onClose) { + var $m = $('
        '); + if (title) $m.append('

        '+title+'

        '); + if (message) $m.append('

        '+message+'

        '); + if (timeout === undefined) timeout = 3000; + + // Added by konapun: Set timeout to 30 seconds if this growl is moused over, like normal toast notifications + var callBlock = function(opts) { + opts = opts || {}; + + $.blockUI({ + message: $m, + fadeIn : typeof opts.fadeIn !== 'undefined' ? opts.fadeIn : 700, + fadeOut: typeof opts.fadeOut !== 'undefined' ? opts.fadeOut : 1000, + timeout: typeof opts.timeout !== 'undefined' ? opts.timeout : timeout, + centerY: false, + showOverlay: false, + onUnblock: onClose, + css: $.blockUI.defaults.growlCSS + }); + }; + + callBlock(); + var nonmousedOpacity = $m.css('opacity'); + $m.mouseover(function() { + callBlock({ + fadeIn: 0, + timeout: 30000 + }); + + var displayBlock = $('.blockMsg'); + displayBlock.stop(); // cancel fadeout if it has started + displayBlock.fadeTo(300, 1); // make it easier to read the message by removing transparency + }).mouseout(function() { + $('.blockMsg').fadeOut(1000); + }); + // End konapun additions + }; + + // plugin method for blocking element content + $.fn.block = function(opts) { + if ( this[0] === window ) { + $.blockUI( opts ); + return this; + } + var fullOpts = $.extend({}, $.blockUI.defaults, opts || {}); + this.each(function() { + var $el = $(this); + if (fullOpts.ignoreIfBlocked && $el.data('blockUI.isBlocked')) + return; + $el.unblock({ fadeOut: 0 }); + }); + + return this.each(function() { + if ($.css(this,'position') == 'static') { + this.style.position = 'relative'; + $(this).data('blockUI.static', true); + } + this.style.zoom = 1; // force 'hasLayout' in ie + install(this, opts); + }); + }; + + // plugin method for unblocking element content + $.fn.unblock = function(opts) { + if ( this[0] === window ) { + $.unblockUI( opts ); + return this; + } + return this.each(function() { + remove(this, opts); + }); + }; + + $.blockUI.version = 2.70; // 2nd generation blocking at no extra cost! + + // override these in your code to change the default behavior and style + $.blockUI.defaults = { + // message displayed when blocking (use null for no message) + message: '

        Please wait...

        ', + + title: null, // title string; only used when theme == true + draggable: true, // only used when theme == true (requires jquery-ui.js to be loaded) + + theme: false, // set to true to use with jQuery UI themes + + // styles for the message when blocking; if you wish to disable + // these and use an external stylesheet then do this in your code: + // $.blockUI.defaults.css = {}; + css: { + padding: 0, + margin: 0, + width: '30%', + top: '40%', + left: '35%', + textAlign: 'center', + color: '#000', + border: '3px solid #aaa', + backgroundColor:'#fff', + cursor: 'wait' + }, + + // minimal style set used when themes are used + themedCSS: { + width: '30%', + top: '40%', + left: '35%' + }, + + // styles for the overlay + overlayCSS: { + backgroundColor: '#000', + opacity: 0.6, + cursor: 'wait' + }, + + // style to replace wait cursor before unblocking to correct issue + // of lingering wait cursor + cursorReset: 'default', + + // styles applied when using $.growlUI + growlCSS: { + width: '350px', + top: '10px', + left: '', + right: '10px', + border: 'none', + padding: '5px', + opacity: 0.6, + cursor: 'default', + color: '#fff', + backgroundColor: '#000', + '-webkit-border-radius':'10px', + '-moz-border-radius': '10px', + 'border-radius': '10px' + }, + + // IE issues: 'about:blank' fails on HTTPS and javascript:false is s-l-o-w + // (hat tip to Jorge H. N. de Vasconcelos) + /*jshint scripturl:true */ + iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank', + + // force usage of iframe in non-IE browsers (handy for blocking applets) + forceIframe: false, + + // z-index for the blocking overlay + baseZ: 1000, + + // set these to true to have the message automatically centered + centerX: true, // <-- only effects element blocking (page block controlled via css above) + centerY: true, + + // allow body element to be stetched in ie6; this makes blocking look better + // on "short" pages. disable if you wish to prevent changes to the body height + allowBodyStretch: true, + + // enable if you want key and mouse events to be disabled for content that is blocked + bindEvents: true, + + // be default blockUI will supress tab navigation from leaving blocking content + // (if bindEvents is true) + constrainTabKey: true, + + // fadeIn time in millis; set to 0 to disable fadeIn on block + fadeIn: 200, + + // fadeOut time in millis; set to 0 to disable fadeOut on unblock + fadeOut: 400, + + // time in millis to wait before auto-unblocking; set to 0 to disable auto-unblock + timeout: 0, + + // disable if you don't want to show the overlay + showOverlay: true, + + // if true, focus will be placed in the first available input field when + // page blocking + focusInput: true, + + // elements that can receive focus + focusableElements: ':input:enabled:visible', + + // suppresses the use of overlay styles on FF/Linux (due to performance issues with opacity) + // no longer needed in 2012 + // applyPlatformOpacityRules: true, + + // callback method invoked when fadeIn has completed and blocking message is visible + onBlock: null, + + // callback method invoked when unblocking has completed; the callback is + // passed the element that has been unblocked (which is the window object for page + // blocks) and the options that were passed to the unblock call: + // onUnblock(element, options) + onUnblock: null, + + // callback method invoked when the overlay area is clicked. + // setting this will turn the cursor to a pointer, otherwise cursor defined in overlayCss will be used. + onOverlayClick: null, + + // don't ask; if you really must know: http://groups.google.com/group/jquery-en/browse_thread/thread/36640a8730503595/2f6a79a77a78e493#2f6a79a77a78e493 + quirksmodeOffsetHack: 4, + + // class name of the message block + blockMsgClass: 'blockMsg', + + // if it is already blocked, then ignore it (don't unblock and reblock) + ignoreIfBlocked: false + }; + + // private data and functions follow... + + var pageBlock = null; + var pageBlockEls = []; + + function install(el, opts) { + var css, themedCSS; + var full = (el == window); + var msg = (opts && opts.message !== undefined ? opts.message : undefined); + opts = $.extend({}, $.blockUI.defaults, opts || {}); + + if (opts.ignoreIfBlocked && $(el).data('blockUI.isBlocked')) + return; + + opts.overlayCSS = $.extend({}, $.blockUI.defaults.overlayCSS, opts.overlayCSS || {}); + css = $.extend({}, $.blockUI.defaults.css, opts.css || {}); + if (opts.onOverlayClick) + opts.overlayCSS.cursor = 'pointer'; + + themedCSS = $.extend({}, $.blockUI.defaults.themedCSS, opts.themedCSS || {}); + msg = msg === undefined ? opts.message : msg; + + // remove the current block (if there is one) + if (full && pageBlock) + remove(window, {fadeOut:0}); + + // if an existing element is being used as the blocking content then we capture + // its current place in the DOM (and current display style) so we can restore + // it when we unblock + if (msg && typeof msg != 'string' && (msg.parentNode || msg.jquery)) { + var node = msg.jquery ? msg[0] : msg; + var data = {}; + $(el).data('blockUI.history', data); + data.el = node; + data.parent = node.parentNode; + data.display = node.style.display; + data.position = node.style.position; + if (data.parent) + data.parent.removeChild(node); + } + + $(el).data('blockUI.onUnblock', opts.onUnblock); + var z = opts.baseZ; + + // blockUI uses 3 layers for blocking, for simplicity they are all used on every platform; + // layer1 is the iframe layer which is used to supress bleed through of underlying content + // layer2 is the overlay layer which has opacity and a wait cursor (by default) + // layer3 is the message content that is displayed while blocking + var lyr1, lyr2, lyr3, s; + if (msie || opts.forceIframe) + lyr1 = $(''); + else + lyr1 = $(''); + + if (opts.theme) + lyr2 = $(''); + else + lyr2 = $(''); + + if (opts.theme && full) { + s = ''; + } + else if (opts.theme) { + s = ''; + } + else if (full) { + s = ''; + } + else { + s = ''; + } + lyr3 = $(s); + + // if we have a message, style it + if (msg) { + if (opts.theme) { + lyr3.css(themedCSS); + lyr3.addClass('ui-widget-content'); + } + else + lyr3.css(css); + } + + // style the overlay + if (!opts.theme /*&& (!opts.applyPlatformOpacityRules)*/) + lyr2.css(opts.overlayCSS); + lyr2.css('position', full ? 'fixed' : 'absolute'); + + // make iframe layer transparent in IE + if (msie || opts.forceIframe) + lyr1.css('opacity',0.0); + + //$([lyr1[0],lyr2[0],lyr3[0]]).appendTo(full ? 'body' : el); + var layers = [lyr1,lyr2,lyr3], $par = full ? $('body') : $(el); + $.each(layers, function() { + this.appendTo($par); + }); + + if (opts.theme && opts.draggable && $.fn.draggable) { + lyr3.draggable({ + handle: '.ui-dialog-titlebar', + cancel: 'li' + }); + } + + // ie7 must use absolute positioning in quirks mode and to account for activex issues (when scrolling) + var expr = setExpr && (!$.support.boxModel || $('object,embed', full ? null : el).length > 0); + if (ie6 || expr) { + // give body 100% height + if (full && opts.allowBodyStretch && $.support.boxModel) + $('html,body').css('height','100%'); + + // fix ie6 issue when blocked element has a border width + if ((ie6 || !$.support.boxModel) && !full) { + var t = sz(el,'borderTopWidth'), l = sz(el,'borderLeftWidth'); + var fixT = t ? '(0 - '+t+')' : 0; + var fixL = l ? '(0 - '+l+')' : 0; + } + + // simulate fixed position + $.each(layers, function(i,o) { + var s = o[0].style; + s.position = 'absolute'; + if (i < 2) { + if (full) + s.setExpression('height','Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.support.boxModel?0:'+opts.quirksmodeOffsetHack+') + "px"'); + else + s.setExpression('height','this.parentNode.offsetHeight + "px"'); + if (full) + s.setExpression('width','jQuery.support.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"'); + else + s.setExpression('width','this.parentNode.offsetWidth + "px"'); + if (fixL) s.setExpression('left', fixL); + if (fixT) s.setExpression('top', fixT); + } + else if (opts.centerY) { + if (full) s.setExpression('top','(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"'); + s.marginTop = 0; + } + else if (!opts.centerY && full) { + var top = (opts.css && opts.css.top) ? parseInt(opts.css.top, 10) : 0; + var expression = '((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + '+top+') + "px"'; + s.setExpression('top',expression); + } + }); + } + + // show the message + if (msg) { + if (opts.theme) + lyr3.find('.ui-widget-content').append(msg); + else + lyr3.append(msg); + if (msg.jquery || msg.nodeType) + $(msg).show(); + } + + if ((msie || opts.forceIframe) && opts.showOverlay) + lyr1.show(); // opacity is zero + if (opts.fadeIn) { + var cb = opts.onBlock ? opts.onBlock : noOp; + var cb1 = (opts.showOverlay && !msg) ? cb : noOp; + var cb2 = msg ? cb : noOp; + if (opts.showOverlay) + lyr2._fadeIn(opts.fadeIn, cb1); + if (msg) + lyr3._fadeIn(opts.fadeIn, cb2); + } + else { + if (opts.showOverlay) + lyr2.show(); + if (msg) + lyr3.show(); + if (opts.onBlock) + opts.onBlock.bind(lyr3)(); + } + + // bind key and mouse events + bind(1, el, opts); + + if (full) { + pageBlock = lyr3[0]; + pageBlockEls = $(opts.focusableElements,pageBlock); + if (opts.focusInput) + setTimeout(focus, 20); + } + else + center(lyr3[0], opts.centerX, opts.centerY); + + if (opts.timeout) { + // auto-unblock + var to = setTimeout(function() { + if (full) + $.unblockUI(opts); + else + $(el).unblock(opts); + }, opts.timeout); + $(el).data('blockUI.timeout', to); + } + } + + // remove the block + function remove(el, opts) { + var count; + var full = (el == window); + var $el = $(el); + var data = $el.data('blockUI.history'); + var to = $el.data('blockUI.timeout'); + if (to) { + clearTimeout(to); + $el.removeData('blockUI.timeout'); + } + opts = $.extend({}, $.blockUI.defaults, opts || {}); + bind(0, el, opts); // unbind events + + if (opts.onUnblock === null) { + opts.onUnblock = $el.data('blockUI.onUnblock'); + $el.removeData('blockUI.onUnblock'); + } + + var els; + if (full) // crazy selector to handle odd field errors in ie6/7 + els = $('body').children().filter('.blockUI').add('body > .blockUI'); + else + els = $el.find('>.blockUI'); + + // fix cursor issue + if ( opts.cursorReset ) { + if ( els.length > 1 ) + els[1].style.cursor = opts.cursorReset; + if ( els.length > 2 ) + els[2].style.cursor = opts.cursorReset; + } + + if (full) + pageBlock = pageBlockEls = null; + + if (opts.fadeOut) { + count = els.length; + els.stop().fadeOut(opts.fadeOut, function() { + if ( --count === 0) + reset(els,data,opts,el); + }); + } + else + reset(els, data, opts, el); + } + + // move blocking element back into the DOM where it started + function reset(els,data,opts,el) { + var $el = $(el); + if ( $el.data('blockUI.isBlocked') ) + return; + + els.each(function(i,o) { + // remove via DOM calls so we don't lose event handlers + if (this.parentNode) + this.parentNode.removeChild(this); + }); + + if (data && data.el) { + data.el.style.display = data.display; + data.el.style.position = data.position; + data.el.style.cursor = 'default'; // #59 + if (data.parent) + data.parent.appendChild(data.el); + $el.removeData('blockUI.history'); + } + + if ($el.data('blockUI.static')) { + $el.css('position', 'static'); // #22 + } + + if (typeof opts.onUnblock == 'function') + opts.onUnblock(el,opts); + + // fix issue in Safari 6 where block artifacts remain until reflow + var body = $(document.body), w = body.width(), cssW = body[0].style.width; + body.width(w-1).width(w); + body[0].style.width = cssW; + } + + // bind/unbind the handler + function bind(b, el, opts) { + var full = el == window, $el = $(el); + + // don't bother unbinding if there is nothing to unbind + if (!b && (full && !pageBlock || !full && !$el.data('blockUI.isBlocked'))) + return; + + $el.data('blockUI.isBlocked', b); + + // don't bind events when overlay is not in use or if bindEvents is false + if (!full || !opts.bindEvents || (b && !opts.showOverlay)) + return; + + // bind anchors and inputs for mouse and key events + var events = 'mousedown mouseup keydown keypress keyup touchstart touchend touchmove'; + if (b) + $(document).bind(events, opts, handler); + else + $(document).unbind(events, handler); + + // former impl... + // var $e = $('a,:input'); + // b ? $e.bind(events, opts, handler) : $e.unbind(events, handler); + } + + // event handler to suppress keyboard/mouse events when blocking + function handler(e) { + // allow tab navigation (conditionally) + if (e.type === 'keydown' && e.keyCode && e.keyCode == 9) { + if (pageBlock && e.data.constrainTabKey) { + var els = pageBlockEls; + var fwd = !e.shiftKey && e.target === els[els.length-1]; + var back = e.shiftKey && e.target === els[0]; + if (fwd || back) { + setTimeout(function(){focus(back);},10); + return false; + } + } + } + var opts = e.data; + var target = $(e.target); + if (target.hasClass('blockOverlay') && opts.onOverlayClick) + opts.onOverlayClick(e); + + // allow events within the message content + if (target.parents('div.' + opts.blockMsgClass).length > 0) + return true; + + // allow events for content that is not being blocked + return target.parents().children().filter('div.blockUI').length === 0; + } + + function focus(back) { + if (!pageBlockEls) + return; + var e = pageBlockEls[back===true ? pageBlockEls.length-1 : 0]; + if (e) + e.focus(); + } + + function center(el, x, y) { + var p = el.parentNode, s = el.style; + var l = ((p.offsetWidth - el.offsetWidth)/2) - sz(p,'borderLeftWidth'); + var t = ((p.offsetHeight - el.offsetHeight)/2) - sz(p,'borderTopWidth'); + if (x) s.left = l > 0 ? (l+'px') : '0'; + if (y) s.top = t > 0 ? (t+'px') : '0'; + } + + function sz(el, p) { + return parseInt($.css(el,p),10)||0; + } + + } + + + /*global define:true */ + if (typeof define === 'function' && define.amd && define.amd.jQuery) { + define(['jquery'], setup); + } else { + setup(jQuery); + } + +})(); \ No newline at end of file diff --git a/plugins/updraftplus/includes/labelauty/LICENSE b/plugins/updraftplus/includes/labelauty/LICENSE new file mode 100644 index 0000000..a05107c --- /dev/null +++ b/plugins/updraftplus/includes/labelauty/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2013 Francisco Neves + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/plugins/updraftplus/includes/labelauty/images/input-checked.png b/plugins/updraftplus/includes/labelauty/images/input-checked.png new file mode 100644 index 0000000..b0ba858 Binary files /dev/null and b/plugins/updraftplus/includes/labelauty/images/input-checked.png differ diff --git a/plugins/updraftplus/includes/labelauty/images/input-unchecked.png b/plugins/updraftplus/includes/labelauty/images/input-unchecked.png new file mode 100644 index 0000000..110ddb6 Binary files /dev/null and b/plugins/updraftplus/includes/labelauty/images/input-unchecked.png differ diff --git a/plugins/updraftplus/includes/labelauty/jquery-labelauty.css b/plugins/updraftplus/includes/labelauty/jquery-labelauty.css new file mode 100644 index 0000000..7da723b --- /dev/null +++ b/plugins/updraftplus/includes/labelauty/jquery-labelauty.css @@ -0,0 +1,235 @@ +/*! + * LABELAUTY jQuery Plugin Styles + * + * @file: jquery-labelauty.css + * @author: Francisco Neves (@fntneves) + * @site: www.francisconeves.com + * @license: MIT License + */ + +/* Prevent text and blocks selection */ +input.labelauty + label ::selection { background-color: rgba(255, 255, 255, 0); } +input.labelauty + label ::-moz-selection { background-color: rgba(255, 255, 255, 0); } + +/* Hide original checkboxes. They are ugly! */ +input.labelauty { display: none !important; } + +/* + * Let's style the input + * Feel free to work with it as you wish! + */ +input.labelauty + label +{ + display: inline-block; + font-size: 13px; + padding: 3px; + background-color: #efefef; + color: black; + cursor: pointer; + margin-top: 10px; + margin-right: 10px; + width: 96%; + + border-radius: 3px 3px 3px 3px; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + + + transition: background-color 0.25s; + -moz-transition: background-color 0.25s; + -webkit-transition: background-color 0.25s; + -o-transition: background-color 0.25s; + + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; +} + +/* Stylish text inside label */ + +input.labelauty + label > span.labelauty-unchecked, +input.labelauty + label > span.labelauty-checked +{ + display: inline-block; + line-height: 12px; + margin-bottom: 10px; + /* vertical-align: bottom; */ +} + +/* Stylish icons inside label */ + +input.labelauty + label > span.labelauty-unchecked-image, +input.labelauty + label > span.labelauty-checked-image +{ + display: inline-block; + width: 40px; + height: 40px; + vertical-align: bottom; + background-repeat: no-repeat; + background-position: left center; + + transition: background-image 0.5s linear; + -moz-transition: background-image 0.5s linear; + -webkit-transition: background-image 0.5s linear; + -o-transition: background-image 0.5s linear; +} + +/* When there's a label, add a little margin to the left */ +input.labelauty + label > span.labelauty-unchecked-image + span.labelauty-unchecked, +input.labelauty + label > span.labelauty-checked-image + span.labelauty-checked +{ + margin-left: 7px; +} + +/* When not Checked */ +input.labelauty:not(:checked):not([disabled]) + label:hover +{ + background-color: #eaeaea; + color: #a7a7a7; +} +input.labelauty:not(:checked) + label > span.labelauty-checked-image +{ + display: none; +} + +input.labelauty:not(:checked) + label > span.labelauty-checked +{ + display: none; +} + +/* When Checked */ +input.labelauty:checked + label +{ + background-color: #3498db; + color: #ffffff; +} + +input.labelauty:checked:not([disabled]) + label:hover +{ + background-color: #72c5fd; +} +input.labelauty:checked + label > span.labelauty-unchecked-image +{ + display: none; +} + +input.labelauty:checked + label > span.labelauty-unchecked +{ + display: none; +} + +input.labelauty:checked + label > span.labelauty-checked +{ + display: inline-block; +} + +input.labelauty.no-label:checked + label > span.labelauty-checked +{ + display: block; +} + +/* When Disabled */ +input.labelauty[disabled] + label +{ + opacity: 0.5; +} + +/* Add a background to (un)checked images */ +input.labelauty + label > span.labelauty-unchecked-image +{ + background-image: url( images/icons/folder.png ); +} + +input.labelauty + label > span.labelauty-checked-image +{ + background-image: url( images/icons/folder.png ); +} + +input.labelauty.email + label > span.labelauty-checked-image, +input.labelauty.email + label > span.labelauty-unchecked-image { + background-image: url( ../../images/icons/email.png ); +} + +input.labelauty.cloudfiles + label > span.labelauty-checked-image, +input.labelauty.cloudfiles + label > span.labelauty-unchecked-image { + background-image: url( ../../images/icons/cloudfiles.png ); +} + +input.labelauty.copycom + label > span.labelauty-checked-image, +input.labelauty.copycom + label > span.labelauty-unchecked-image { + background-image: url( ../../images/icons/copycom.png ); +} + +input.labelauty.dreamobjects + label > span.labelauty-checked-image, +input.labelauty.dreamobjects + label > span.labelauty-unchecked-image { + background-image: url( ../../images/icons/dreamobjects.png ); +} + +input.labelauty.dropbox + label > span.labelauty-checked-image, +input.labelauty.dropbox + label > span.labelauty-unchecked-image { + background-image: url( ../../images/icons/dropbox.png ); +} + +input.labelauty.ftp + label > span.labelauty-checked-image, +input.labelauty.ftp + label > span.labelauty-unchecked-image { + background-image: url( ../../images/icons/folder.png ); +} + +input.labelauty.sftp + label > span.labelauty-checked-image, +input.labelauty.sftp + label > span.labelauty-unchecked-image { + background-image: url( ../../images/icons/folder.png ); +} + +input.labelauty.googledrive + label > span.labelauty-checked-image, +input.labelauty.googledrive + label > span.labelauty-unchecked-image { + background-image: url( ../../images/icons/googledrive.png ); +} + +input.labelauty.s3generic + label > span.labelauty-checked-image, +input.labelauty.s3generic + label > span.labelauty-unchecked-image { + background-image: url( ../../images/icons/folder.png ); +} + +input.labelauty.onedrive + label > span.labelauty-checked-image, +input.labelauty.onedrive + label > span.labelauty-unchecked-image { + background-image: url( ../../images/icons/onedrive.png ); +} + +input.labelauty.azure + label > span.labelauty-checked-image, +input.labelauty.azure + label > span.labelauty-unchecked-image { + background-image: url( ../../images/icons/azure.png ); +} + +input.labelauty.openstack + label > span.labelauty-checked-image, +input.labelauty.openstack + label > span.labelauty-unchecked-image { + background-image: url( ../../images/icons/openstack.png ); +} + +input.labelauty.s3 + label > span.labelauty-checked-image, +input.labelauty.s3 + label > span.labelauty-unchecked-image { + background-image: url( ../../images/icons/s3.png ); +} + +input.labelauty.updraftvault + label > span.labelauty-checked-image, +input.labelauty.updraftvault + label > span.labelauty-unchecked-image { + background-image: url( ../../images/icons/updraftvault.png ); +} + +input.labelauty.webdav + label > span.labelauty-checked-image, +input.labelauty.webdav + label > span.labelauty-unchecked-image { + background-image: url( ../../images/icons/webdav.png ); +} + +input.labelauty.googlecloud + label > span.labelauty-checked-image, +input.labelauty.googlecloud + label > span.labelauty-unchecked-image { + background-image: url( ../../images/icons/googlecloud.png ); +} + +#remote-storage-container { + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + height: auto; + width: auto; +} diff --git a/plugins/updraftplus/includes/labelauty/jquery-labelauty.js b/plugins/updraftplus/includes/labelauty/jquery-labelauty.js new file mode 100644 index 0000000..56a7d66 --- /dev/null +++ b/plugins/updraftplus/includes/labelauty/jquery-labelauty.js @@ -0,0 +1,278 @@ +/*! + * LABELAUTY jQuery Plugin + * + * @file: jquery-labelauty.js + * @author: Francisco Neves (@fntneves) + * @site: www.francisconeves.com + * @license: MIT License + */ + +(function( $ ){ + + $.fn.labelauty = function( options ) + { + /* + * Our default settings + * Hope you don't need to change anything, with these settings + */ + var settings = $.extend( + { + // Development Mode + // This will activate console debug messages + development: false, + + // Trigger Class + // This class will be used to apply styles + class: "labelauty", + + // Use text label ? + // If false, then only an icon represents the input + label: true, + + // Separator between labels' messages + // If you use this separator for anything, choose a new one + separator: "|", + + // Default Checked Message + // This message will be visible when input is checked + checked_label: "Checked", + + // Default UnChecked Message + // This message will be visible when input is unchecked + unchecked_label: "Unchecked", + + // Force random ID's + // Replace original ID's with random ID's, + force_random_id: false, + + // Minimum Label Width + // This value will be used to apply a minimum width to the text labels + minimum_width: false, + + // Use the greatest width between two text labels ? + // If this has a true value, then label width will be the greatest between labels + same_width: true + }, options); + + /* + * Let's create the core function + * It will try to cover all settings and mistakes of using + */ + return this.each(function() + { + var $object = $( this ); + var selected = $object.is(':checked'); + var type = $object.attr('type'); + var use_labels = true; + var labels; + var labels_object; + var input_id; + + //Get the aria label from the input element + var aria_label = $object.attr( "aria-label" ); + + // Hide the object form screen readers + $object.attr( "aria-hidden", true ); + + // Test if object is a check input + // Don't mess me up, come on + if( $object.is( ":checkbox" ) === false && $object.is( ":radio" ) === false ) + return this; + + // Add "labelauty" class to all checkboxes + // So you can apply some custom styles + $object.addClass( settings.class ); + + // Get the value of "data-labelauty" attribute + // Then, we have the labels for each case (or not, as we will see) + labels = $object.attr( "data-labelauty" ); + + use_labels = settings.label; + + // It's time to check if it's going to the right way + // Null values, more labels than expected or no labels will be handled here + if( use_labels === true ) + { + if( labels == null || labels.length === 0 ) + { + // If attribute has no label and we want to use, then use the default labels + labels_object = new Array(); + labels_object[0] = settings.unchecked_label; + labels_object[1] = settings.checked_label; + } + else + { + // Ok, ok, it's time to split Checked and Unchecked labels + // We split, by the "settings.separator" option + labels_object = labels.split( settings.separator ); + + // Now, let's check if exist _only_ two labels + // If there's more than two, then we do not use labels :( + // Else, do some additional tests + if( labels_object.length > 2 ) + { + use_labels = false; + debug( settings.development, "There's more than two labels. LABELAUTY will not use labels." ); + } + else + { + // If there's just one label (no split by "settings.separator"), it will be used for both cases + // Here, we have the possibility of use the same label for both cases + if( labels_object.length === 1 ) + debug( settings.development, "There's just one label. LABELAUTY will use this one for both cases." ); + } + } + } + + /* + * Let's begin the beauty + */ + + // Start hiding ugly checkboxes + // Obviously, we don't need native checkboxes :O + $object.css({ display : "none" }); + + // We don't need more data-labelauty attributes! + // Ok, ok, it's just for beauty improvement + $object.removeAttr( "data-labelauty" ); + + // Now, grab checkbox ID Attribute for "label" tag use + // If there's no ID Attribute, then generate a new one + input_id = $object.attr( "id" ); + + if( settings.force_random_id || input_id == null || input_id.trim() === "") + { + var input_id_number = 1 + Math.floor( Math.random() * 1024000 ); + input_id = "labelauty-" + input_id_number; + + // Is there any element with this random ID ? + // If exists, then increment until get an unused ID + while( $( input_id ).length !== 0 ) + { + input_id_number++; + input_id = "labelauty-" + input_id_number; + debug( settings.development, "Holy crap, between 1024 thousand numbers, one raised a conflict. Trying again." ); + } + + $object.attr( "id", input_id ); + } + + // Now, add necessary tags to make this work + // Here, we're going to test some control variables and act properly + + var element = jQuery(create( input_id, aria_label, selected, type, labels_object, use_labels )) + + element.click(function(){ + if($object.is(':checked')){ + $(element).attr('aria-checked', false); + }else{ + $(element).attr('aria-checked', true); + } + }); + + element.keypress(function(event){ + event.preventDefault(); + if(event.keyCode === 32 || event.keyCode === 13){ + if($object.is(':checked')){ + $object.prop('checked', false); + $(element).attr('aria-checked',false); + }else{ + $object.prop('checked', true); + $(element).attr('aria-checked', true); + } + } + }) + + $object.after(element); + + // Now, add "min-width" to label + // Let's say the truth, a fixed width is more beautiful than a variable width + if( settings.minimum_width !== false ) + $object.next( "label[for=" + input_id + "]" ).css({ "min-width": settings.minimum_width }); + + // Now, add "min-width" to label + // Let's say the truth, a fixed width is more beautiful than a variable width + if( settings.same_width != false && settings.label == true ) + { + var label_object = $object.next( "label[for=" + input_id + "]" ); + var unchecked_width = getRealWidth(label_object.find( "span.labelauty-unchecked" )); + var checked_width = getRealWidth(label_object.find( "span.labelauty-checked" )); + + if( unchecked_width > checked_width ) + label_object.find( "span.labelauty-checked" ).width( unchecked_width ); + else + label_object.find( "span.labelauty-unchecked" ).width( checked_width ); + } + }); + }; + + /* + * Tricky code to work with hidden elements, like tabs. + * Note: This code is based on jquery.actual plugin. + * https://github.com/dreamerslab/jquery.actual + */ + function getRealWidth( element ) + { + var width = 0; + var $target = element; + var style = 'position: absolute !important; top: -1000 !important; '; + + $target = $target.clone().attr('style', style).appendTo('body'); + width = $target.width(true); + $target.remove(); + + return width; + } + + function debug( debug, message ) + { + if( debug && window.console && window.console.log ) + window.console.log( "jQuery-LABELAUTY: " + message ); + }; + + function create( input_id, aria_label, selected, type, messages_object, label ) + { + var block; + var unchecked_message; + var checked_message; + var aria = ""; + + if( messages_object == null ) + unchecked_message = checked_message = ""; + else + { + unchecked_message = messages_object[0]; + + // If checked message is null, then put the same text of unchecked message + if( messages_object[1] == null ) + checked_message = unchecked_message; + else + checked_message = messages_object[1]; + } + + if(aria_label == null) + aria = ""; + else + aria = 'tabindex="0" role="' + type + '" aria-checked="' + selected + '" aria-label="' + aria_label + '"'; + + if( label == true ) + { + block = ''; + } + else + { + block = ''; + } + + return block; + }; + +}( jQuery )); \ No newline at end of file diff --git a/plugins/updraftplus/includes/phpseclib/Crypt/AES.php b/plugins/updraftplus/includes/phpseclib/Crypt/AES.php new file mode 100644 index 0000000..594011e --- /dev/null +++ b/plugins/updraftplus/includes/phpseclib/Crypt/AES.php @@ -0,0 +1,197 @@ + + * setKey('abcdefghijklmnop'); + * + * $size = 10 * 1024; + * $plaintext = ''; + * for ($i = 0; $i < $size; $i++) { + * $plaintext.= 'a'; + * } + * + * echo $aes->decrypt($aes->encrypt($plaintext)); + * ?> + *
        + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_AES + * @author Jim Wigginton + * @copyright 2008 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/** + * Include Crypt_Rijndael + */ +if (!class_exists('Crypt_Rijndael')) { + include_once 'Rijndael.php'; +} + +/**#@+ + * @access public + * @see self::encrypt() + * @see self::decrypt() + */ +/** + * Encrypt / decrypt using the Counter mode. + * + * Set to -1 since that's what Crypt/Random.php uses to index the CTR mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Counter_.28CTR.29 + */ +define('CRYPT_AES_MODE_CTR', CRYPT_MODE_CTR); +/** + * Encrypt / decrypt using the Electronic Code Book mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29 + */ +define('CRYPT_AES_MODE_ECB', CRYPT_MODE_ECB); +/** + * Encrypt / decrypt using the Code Book Chaining mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29 + */ +define('CRYPT_AES_MODE_CBC', CRYPT_MODE_CBC); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher_feedback_.28CFB.29 + */ +define('CRYPT_AES_MODE_CFB', CRYPT_MODE_CFB); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Output_feedback_.28OFB.29 + */ +define('CRYPT_AES_MODE_OFB', CRYPT_MODE_OFB); +/**#@-*/ + +/** + * Pure-PHP implementation of AES. + * + * @package Crypt_AES + * @author Jim Wigginton + * @access public + */ +class Crypt_AES extends Crypt_Rijndael +{ + /** + * The namespace used by the cipher for its constants. + * + * @see Crypt_Base::const_namespace + * @var string + * @access private + */ + var $const_namespace = 'AES'; + + /** + * Dummy function + * + * Since Crypt_AES extends Crypt_Rijndael, this function is, technically, available, but it doesn't do anything. + * + * @see Crypt_Rijndael::setBlockLength() + * @access public + * @param int $length + */ + function setBlockLength($length) + { + return; + } + + /** + * Sets the key length + * + * Valid key lengths are 128, 192, and 256. If the length is less than 128, it will be rounded up to + * 128. If the length is greater than 128 and invalid, it will be rounded down to the closest valid amount. + * + * @see Crypt_Rijndael:setKeyLength() + * @access public + * @param int $length + */ + function setKeyLength($length) + { + switch ($length) { + case 160: + $length = 192; + break; + case 224: + $length = 256; + } + parent::setKeyLength($length); + } + + /** + * Sets the key. + * + * Rijndael supports five different key lengths, AES only supports three. + * + * @see Crypt_Rijndael:setKey() + * @see setKeyLength() + * @access public + * @param string $key + */ + function setKey($key) + { + parent::setKey($key); + + if (!$this->explicit_key_length) { + $length = strlen($key); + switch (true) { + case $length <= 16: + $this->key_length = 16; + break; + case $length <= 24: + $this->key_length = 24; + break; + default: + $this->key_length = 32; + } + $this->_setEngine(); + } + } +} diff --git a/plugins/updraftplus/includes/phpseclib/Crypt/Base.php b/plugins/updraftplus/includes/phpseclib/Crypt/Base.php new file mode 100644 index 0000000..91ebe59 --- /dev/null +++ b/plugins/updraftplus/includes/phpseclib/Crypt/Base.php @@ -0,0 +1,2611 @@ + + * @author Hans-Juergen Petrich + * @copyright 2007 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/**#@+ + * @access public + * @see self::encrypt() + * @see self::decrypt() + */ +/** + * Encrypt / decrypt using the Counter mode. + * + * Set to -1 since that's what Crypt/Random.php uses to index the CTR mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Counter_.28CTR.29 + */ +define('CRYPT_MODE_CTR', -1); +/** + * Encrypt / decrypt using the Electronic Code Book mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29 + */ +define('CRYPT_MODE_ECB', 1); +/** + * Encrypt / decrypt using the Code Book Chaining mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29 + */ +define('CRYPT_MODE_CBC', 2); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher_feedback_.28CFB.29 + */ +define('CRYPT_MODE_CFB', 3); +/** + * Encrypt / decrypt using the Output Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Output_feedback_.28OFB.29 + */ +define('CRYPT_MODE_OFB', 4); +/** + * Encrypt / decrypt using streaming mode. + */ +define('CRYPT_MODE_STREAM', 5); +/**#@-*/ + +/**#@+ + * @access private + * @see self::Crypt_Base() + * @internal These constants are for internal use only + */ +/** + * Base value for the internal implementation $engine switch + */ +define('CRYPT_ENGINE_INTERNAL', 1); +/** + * Base value for the mcrypt implementation $engine switch + */ +define('CRYPT_ENGINE_MCRYPT', 2); +/** + * Base value for the OpenSSL implementation $engine switch + */ +define('CRYPT_ENGINE_OPENSSL', 3); +/**#@-*/ + +/** + * Base Class for all Crypt_* cipher classes + * + * @package Crypt_Base + * @author Jim Wigginton + * @author Hans-Juergen Petrich + * @access public + */ +class Crypt_Base +{ + /** + * The Encryption Mode + * + * @see self::Crypt_Base() + * @var int + * @access private + */ + var $mode; + + /** + * The Block Length of the block cipher + * + * @var int + * @access private + */ + var $block_size = 16; + + /** + * The Key + * + * @see self::setKey() + * @var string + * @access private + */ + var $key = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; + + /** + * The Initialization Vector + * + * @see self::setIV() + * @var string + * @access private + */ + var $iv; + + /** + * A "sliding" Initialization Vector + * + * @see self::enableContinuousBuffer() + * @see self::_clearBuffers() + * @var string + * @access private + */ + var $encryptIV; + + /** + * A "sliding" Initialization Vector + * + * @see self::enableContinuousBuffer() + * @see self::_clearBuffers() + * @var string + * @access private + */ + var $decryptIV; + + /** + * Continuous Buffer status + * + * @see self::enableContinuousBuffer() + * @var bool + * @access private + */ + var $continuousBuffer = false; + + /** + * Encryption buffer for CTR, OFB and CFB modes + * + * @see self::encrypt() + * @see self::_clearBuffers() + * @var array + * @access private + */ + var $enbuffer; + + /** + * Decryption buffer for CTR, OFB and CFB modes + * + * @see self::decrypt() + * @see self::_clearBuffers() + * @var array + * @access private + */ + var $debuffer; + + /** + * mcrypt resource for encryption + * + * The mcrypt resource can be recreated every time something needs to be created or it can be created just once. + * Since mcrypt operates in continuous mode, by default, it'll need to be recreated when in non-continuous mode. + * + * @see self::encrypt() + * @var resource + * @access private + */ + var $enmcrypt; + + /** + * mcrypt resource for decryption + * + * The mcrypt resource can be recreated every time something needs to be created or it can be created just once. + * Since mcrypt operates in continuous mode, by default, it'll need to be recreated when in non-continuous mode. + * + * @see self::decrypt() + * @var resource + * @access private + */ + var $demcrypt; + + /** + * Does the enmcrypt resource need to be (re)initialized? + * + * @see Crypt_Twofish::setKey() + * @see Crypt_Twofish::setIV() + * @var bool + * @access private + */ + var $enchanged = true; + + /** + * Does the demcrypt resource need to be (re)initialized? + * + * @see Crypt_Twofish::setKey() + * @see Crypt_Twofish::setIV() + * @var bool + * @access private + */ + var $dechanged = true; + + /** + * mcrypt resource for CFB mode + * + * mcrypt's CFB mode, in (and only in) buffered context, + * is broken, so phpseclib implements the CFB mode by it self, + * even when the mcrypt php extension is available. + * + * In order to do the CFB-mode work (fast) phpseclib + * use a separate ECB-mode mcrypt resource. + * + * @link http://phpseclib.sourceforge.net/cfb-demo.phps + * @see self::encrypt() + * @see self::decrypt() + * @see self::_setupMcrypt() + * @var resource + * @access private + */ + var $ecb; + + /** + * Optimizing value while CFB-encrypting + * + * Only relevant if $continuousBuffer enabled + * and $engine == CRYPT_ENGINE_MCRYPT + * + * It's faster to re-init $enmcrypt if + * $buffer bytes > $cfb_init_len than + * using the $ecb resource furthermore. + * + * This value depends of the chosen cipher + * and the time it would be needed for it's + * initialization [by mcrypt_generic_init()] + * which, typically, depends on the complexity + * on its internaly Key-expanding algorithm. + * + * @see self::encrypt() + * @var int + * @access private + */ + var $cfb_init_len = 600; + + /** + * Does internal cipher state need to be (re)initialized? + * + * @see self::setKey() + * @see self::setIV() + * @see self::disableContinuousBuffer() + * @var bool + * @access private + */ + var $changed = true; + + /** + * Padding status + * + * @see self::enablePadding() + * @var bool + * @access private + */ + var $padding = true; + + /** + * Is the mode one that is paddable? + * + * @see self::Crypt_Base() + * @var bool + * @access private + */ + var $paddable = false; + + /** + * Holds which crypt engine internaly should be use, + * which will be determined automatically on __construct() + * + * Currently available $engines are: + * - CRYPT_ENGINE_OPENSSL (very fast, php-extension: openssl, extension_loaded('openssl') required) + * - CRYPT_ENGINE_MCRYPT (fast, php-extension: mcrypt, extension_loaded('mcrypt') required) + * - CRYPT_ENGINE_INTERNAL (slower, pure php-engine, no php-extension required) + * + * @see self::_setEngine() + * @see self::encrypt() + * @see self::decrypt() + * @var int + * @access private + */ + var $engine; + + /** + * Holds the preferred crypt engine + * + * @see self::_setEngine() + * @see self::setPreferredEngine() + * @var int + * @access private + */ + var $preferredEngine; + + /** + * The mcrypt specific name of the cipher + * + * Only used if $engine == CRYPT_ENGINE_MCRYPT + * + * @link http://www.php.net/mcrypt_module_open + * @link http://www.php.net/mcrypt_list_algorithms + * @see self::_setupMcrypt() + * @var string + * @access private + */ + var $cipher_name_mcrypt; + + /** + * The openssl specific name of the cipher + * + * Only used if $engine == CRYPT_ENGINE_OPENSSL + * + * @link http://www.php.net/openssl-get-cipher-methods + * @var string + * @access private + */ + var $cipher_name_openssl; + + /** + * The openssl specific name of the cipher in ECB mode + * + * If OpenSSL does not support the mode we're trying to use (CTR) + * it can still be emulated with ECB mode. + * + * @link http://www.php.net/openssl-get-cipher-methods + * @var string + * @access private + */ + var $cipher_name_openssl_ecb; + + /** + * The default salt used by setPassword() + * + * @see self::setPassword() + * @var string + * @access private + */ + var $password_default_salt = 'phpseclib/salt'; + + /** + * The namespace used by the cipher for its constants. + * + * ie: AES.php is using CRYPT_AES_MODE_* for its constants + * so $const_namespace is AES + * + * DES.php is using CRYPT_DES_MODE_* for its constants + * so $const_namespace is DES... and so on + * + * All CRYPT_<$const_namespace>_MODE_* are aliases of + * the generic CRYPT_MODE_* constants, so both could be used + * for each cipher. + * + * Example: + * $aes = new Crypt_AES(CRYPT_AES_MODE_CFB); // $aes will operate in cfb mode + * $aes = new Crypt_AES(CRYPT_MODE_CFB); // identical + * + * @see self::Crypt_Base() + * @var string + * @access private + */ + var $const_namespace; + + /** + * The name of the performance-optimized callback function + * + * Used by encrypt() / decrypt() + * only if $engine == CRYPT_ENGINE_INTERNAL + * + * @see self::encrypt() + * @see self::decrypt() + * @see self::_setupInlineCrypt() + * @see self::$use_inline_crypt + * @var Callback + * @access private + */ + var $inline_crypt; + + /** + * Holds whether performance-optimized $inline_crypt() can/should be used. + * + * @see self::encrypt() + * @see self::decrypt() + * @see self::inline_crypt + * @var mixed + * @access private + */ + var $use_inline_crypt; + + /** + * If OpenSSL can be used in ECB but not in CTR we can emulate CTR + * + * @see self::_openssl_ctr_process() + * @var bool + * @access private + */ + var $openssl_emulate_ctr = false; + + /** + * Determines what options are passed to openssl_encrypt/decrypt + * + * @see self::isValidEngine() + * @var mixed + * @access private + */ + var $openssl_options; + + /** + * Has the key length explicitly been set or should it be derived from the key, itself? + * + * @see self::setKeyLength() + * @var bool + * @access private + */ + var $explicit_key_length = false; + + /** + * Don't truncate / null pad key + * + * @see self::_clearBuffers() + * @var bool + * @access private + */ + var $skip_key_adjustment = false; + + /** + * Default Constructor. + * + * Determines whether or not the mcrypt extension should be used. + * + * $mode could be: + * + * - CRYPT_MODE_ECB + * + * - CRYPT_MODE_CBC + * + * - CRYPT_MODE_CTR + * + * - CRYPT_MODE_CFB + * + * - CRYPT_MODE_OFB + * + * (or the alias constants of the chosen cipher, for example for AES: CRYPT_AES_MODE_ECB or CRYPT_AES_MODE_CBC ...) + * + * If not explicitly set, CRYPT_MODE_CBC will be used. + * + * @param int $mode + * @access public + */ + function __construct($mode = CRYPT_MODE_CBC) + { + // $mode dependent settings + switch ($mode) { + case CRYPT_MODE_ECB: + $this->paddable = true; + $this->mode = CRYPT_MODE_ECB; + break; + case CRYPT_MODE_CTR: + case CRYPT_MODE_CFB: + case CRYPT_MODE_OFB: + case CRYPT_MODE_STREAM: + $this->mode = $mode; + break; + case CRYPT_MODE_CBC: + default: + $this->paddable = true; + $this->mode = CRYPT_MODE_CBC; + } + + $this->_setEngine(); + + // Determining whether inline crypting can be used by the cipher + if ($this->use_inline_crypt !== false && function_exists('create_function')) { + $this->use_inline_crypt = true; + } + } + + /** + * PHP4 compatible Default Constructor. + * + * @see self::__construct() + * @param int $mode + * @access public + */ + function Crypt_Base($mode = CRYPT_MODE_CBC) + { + $this->__construct($mode); + } + + /** + * Sets the initialization vector. (optional) + * + * SetIV is not required when CRYPT_MODE_ECB (or ie for AES: CRYPT_AES_MODE_ECB) is being used. If not explicitly set, it'll be assumed + * to be all zero's. + * + * @access public + * @param string $iv + * @internal Can be overwritten by a sub class, but does not have to be + */ + function setIV($iv) + { + if ($this->mode == CRYPT_MODE_ECB) { + return; + } + + $this->iv = $iv; + $this->changed = true; + } + + /** + * Sets the key length. + * + * Keys with explicitly set lengths need to be treated accordingly + * + * @access public + * @param int $length + */ + function setKeyLength($length) + { + $this->explicit_key_length = true; + $this->changed = true; + $this->_setEngine(); + } + + /** + * Returns the current key length in bits + * + * @access public + * @return int + */ + function getKeyLength() + { + return $this->key_length << 3; + } + + /** + * Returns the current block length in bits + * + * @access public + * @return int + */ + function getBlockLength() + { + return $this->block_size << 3; + } + + /** + * Sets the key. + * + * The min/max length(s) of the key depends on the cipher which is used. + * If the key not fits the length(s) of the cipher it will paded with null bytes + * up to the closest valid key length. If the key is more than max length, + * we trim the excess bits. + * + * If the key is not explicitly set, it'll be assumed to be all null bytes. + * + * @access public + * @param string $key + * @internal Could, but not must, extend by the child Crypt_* class + */ + function setKey($key) + { + if (!$this->explicit_key_length) { + $this->setKeyLength(strlen($key) << 3); + $this->explicit_key_length = false; + } + + $this->key = $key; + $this->changed = true; + $this->_setEngine(); + } + + /** + * Sets the password. + * + * Depending on what $method is set to, setPassword()'s (optional) parameters are as follows: + * {@link http://en.wikipedia.org/wiki/PBKDF2 pbkdf2} or pbkdf1: + * $hash, $salt, $count, $dkLen + * + * Where $hash (default = sha1) currently supports the following hashes: see: Crypt/Hash.php + * + * @see Crypt/Hash.php + * @param string $password + * @param string $method + * @return bool + * @access public + * @internal Could, but not must, extend by the child Crypt_* class + */ + function setPassword($password, $method = 'pbkdf2') + { + $key = ''; + + switch ($method) { + default: // 'pbkdf2' or 'pbkdf1' + $func_args = func_get_args(); + + // Hash function + $hash = isset($func_args[2]) ? $func_args[2] : 'sha1'; + + // WPA and WPA2 use the SSID as the salt + $salt = isset($func_args[3]) ? $func_args[3] : $this->password_default_salt; + + // RFC2898#section-4.2 uses 1,000 iterations by default + // WPA and WPA2 use 4,096. + $count = isset($func_args[4]) ? $func_args[4] : 1000; + + // Keylength + if (isset($func_args[5])) { + $dkLen = $func_args[5]; + } else { + $dkLen = $method == 'pbkdf1' ? 2 * $this->key_length : $this->key_length; + } + + switch (true) { + case $method == 'pbkdf1': + if (!class_exists('Crypt_Hash')) { + include_once 'Crypt/Hash.php'; + } + $hashObj = new Crypt_Hash(); + $hashObj->setHash($hash); + if ($dkLen > $hashObj->getLength()) { + user_error('Derived key too long'); + return false; + } + $t = $password . $salt; + for ($i = 0; $i < $count; ++$i) { + $t = $hashObj->hash($t); + } + $key = substr($t, 0, $dkLen); + + $this->setKey(substr($key, 0, $dkLen >> 1)); + $this->setIV(substr($key, $dkLen >> 1)); + + return true; + // Determining if php[>=5.5.0]'s hash_pbkdf2() function avail- and useable + case !function_exists('hash_pbkdf2'): + case !function_exists('hash_algos'): + case !in_array($hash, hash_algos()): + if (!class_exists('Crypt_Hash')) { + include_once 'Crypt/Hash.php'; + } + $i = 1; + while (strlen($key) < $dkLen) { + $hmac = new Crypt_Hash(); + $hmac->setHash($hash); + $hmac->setKey($password); + $f = $u = $hmac->hash($salt . pack('N', $i++)); + for ($j = 2; $j <= $count; ++$j) { + $u = $hmac->hash($u); + $f^= $u; + } + $key.= $f; + } + $key = substr($key, 0, $dkLen); + break; + default: + $key = hash_pbkdf2($hash, $password, $salt, $count, $dkLen, true); + } + } + + $this->setKey($key); + + return true; + } + + /** + * Encrypts a message. + * + * $plaintext will be padded with additional bytes such that it's length is a multiple of the block size. Other cipher + * implementations may or may not pad in the same manner. Other common approaches to padding and the reasons why it's + * necessary are discussed in the following + * URL: + * + * {@link http://www.di-mgt.com.au/cryptopad.html http://www.di-mgt.com.au/cryptopad.html} + * + * An alternative to padding is to, separately, send the length of the file. This is what SSH, in fact, does. + * strlen($plaintext) will still need to be a multiple of the block size, however, arbitrary values can be added to make it that + * length. + * + * @see self::decrypt() + * @access public + * @param string $plaintext + * @return string $ciphertext + * @internal Could, but not must, extend by the child Crypt_* class + */ + function encrypt($plaintext) + { + if ($this->paddable) { + $plaintext = $this->_pad($plaintext); + } + + if ($this->engine === CRYPT_ENGINE_OPENSSL) { + if ($this->changed) { + $this->_clearBuffers(); + $this->changed = false; + } + switch ($this->mode) { + case CRYPT_MODE_STREAM: + return openssl_encrypt($plaintext, $this->cipher_name_openssl, $this->key, $this->openssl_options); + case CRYPT_MODE_ECB: + $result = openssl_encrypt($plaintext, $this->cipher_name_openssl, $this->key, $this->openssl_options); + return !defined('OPENSSL_RAW_DATA') ? substr($result, 0, -$this->block_size) : $result; + case CRYPT_MODE_CBC: + $result = openssl_encrypt($plaintext, $this->cipher_name_openssl, $this->key, $this->openssl_options, $this->encryptIV); + if (!defined('OPENSSL_RAW_DATA')) { + $result = substr($result, 0, -$this->block_size); + } + if ($this->continuousBuffer) { + $this->encryptIV = substr($result, -$this->block_size); + } + return $result; + case CRYPT_MODE_CTR: + return $this->_openssl_ctr_process($plaintext, $this->encryptIV, $this->enbuffer); + case CRYPT_MODE_CFB: + // cfb loosely routines inspired by openssl's: + // {@link http://cvs.openssl.org/fileview?f=openssl/crypto/modes/cfb128.c&v=1.3.2.2.2.1} + $ciphertext = ''; + if ($this->continuousBuffer) { + $iv = &$this->encryptIV; + $pos = &$this->enbuffer['pos']; + } else { + $iv = $this->encryptIV; + $pos = 0; + } + $len = strlen($plaintext); + $i = 0; + if ($pos) { + $orig_pos = $pos; + $max = $this->block_size - $pos; + if ($len >= $max) { + $i = $max; + $len-= $max; + $pos = 0; + } else { + $i = $len; + $pos+= $len; + $len = 0; + } + // ie. $i = min($max, $len), $len-= $i, $pos+= $i, $pos%= $blocksize + $ciphertext = substr($iv, $orig_pos) ^ $plaintext; + $iv = substr_replace($iv, $ciphertext, $orig_pos, $i); + $plaintext = substr($plaintext, $i); + } + + $overflow = $len % $this->block_size; + + if ($overflow) { + $ciphertext.= openssl_encrypt(substr($plaintext, 0, -$overflow) . str_repeat("\0", $this->block_size), $this->cipher_name_openssl, $this->key, $this->openssl_options, $iv); + $iv = $this->_string_pop($ciphertext, $this->block_size); + + $size = $len - $overflow; + $block = $iv ^ substr($plaintext, -$overflow); + $iv = substr_replace($iv, $block, 0, $overflow); + $ciphertext.= $block; + $pos = $overflow; + } elseif ($len) { + $ciphertext = openssl_encrypt($plaintext, $this->cipher_name_openssl, $this->key, $this->openssl_options, $iv); + $iv = substr($ciphertext, -$this->block_size); + } + + return $ciphertext; + case CRYPT_MODE_OFB: + return $this->_openssl_ofb_process($plaintext, $this->encryptIV, $this->enbuffer); + } + } + + if ($this->engine === CRYPT_ENGINE_MCRYPT) { + if ($this->changed) { + $this->_setupMcrypt(); + $this->changed = false; + } + if ($this->enchanged) { + @mcrypt_generic_init($this->enmcrypt, $this->key, $this->encryptIV); + $this->enchanged = false; + } + + // re: {@link http://phpseclib.sourceforge.net/cfb-demo.phps} + // using mcrypt's default handing of CFB the above would output two different things. using phpseclib's + // rewritten CFB implementation the above outputs the same thing twice. + if ($this->mode == CRYPT_MODE_CFB && $this->continuousBuffer) { + $block_size = $this->block_size; + $iv = &$this->encryptIV; + $pos = &$this->enbuffer['pos']; + $len = strlen($plaintext); + $ciphertext = ''; + $i = 0; + if ($pos) { + $orig_pos = $pos; + $max = $block_size - $pos; + if ($len >= $max) { + $i = $max; + $len-= $max; + $pos = 0; + } else { + $i = $len; + $pos+= $len; + $len = 0; + } + $ciphertext = substr($iv, $orig_pos) ^ $plaintext; + $iv = substr_replace($iv, $ciphertext, $orig_pos, $i); + $this->enbuffer['enmcrypt_init'] = true; + } + if ($len >= $block_size) { + if ($this->enbuffer['enmcrypt_init'] === false || $len > $this->cfb_init_len) { + if ($this->enbuffer['enmcrypt_init'] === true) { + @mcrypt_generic_init($this->enmcrypt, $this->key, $iv); + $this->enbuffer['enmcrypt_init'] = false; + } + $ciphertext.= @mcrypt_generic($this->enmcrypt, substr($plaintext, $i, $len - $len % $block_size)); + $iv = substr($ciphertext, -$block_size); + $len%= $block_size; + } else { + while ($len >= $block_size) { + $iv = @mcrypt_generic($this->ecb, $iv) ^ substr($plaintext, $i, $block_size); + $ciphertext.= $iv; + $len-= $block_size; + $i+= $block_size; + } + } + } + + if ($len) { + $iv = @mcrypt_generic($this->ecb, $iv); + $block = $iv ^ substr($plaintext, -$len); + $iv = substr_replace($iv, $block, 0, $len); + $ciphertext.= $block; + $pos = $len; + } + + return $ciphertext; + } + + $ciphertext = @mcrypt_generic($this->enmcrypt, $plaintext); + + if (!$this->continuousBuffer) { + @mcrypt_generic_init($this->enmcrypt, $this->key, $this->encryptIV); + } + + return $ciphertext; + } + + if ($this->changed) { + $this->_setup(); + $this->changed = false; + } + if ($this->use_inline_crypt) { + $inline = $this->inline_crypt; + return $inline('encrypt', $this, $plaintext); + } + + $buffer = &$this->enbuffer; + $block_size = $this->block_size; + $ciphertext = ''; + switch ($this->mode) { + case CRYPT_MODE_ECB: + for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { + $ciphertext.= $this->_encryptBlock(substr($plaintext, $i, $block_size)); + } + break; + case CRYPT_MODE_CBC: + $xor = $this->encryptIV; + for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { + $block = substr($plaintext, $i, $block_size); + $block = $this->_encryptBlock($block ^ $xor); + $xor = $block; + $ciphertext.= $block; + } + if ($this->continuousBuffer) { + $this->encryptIV = $xor; + } + break; + case CRYPT_MODE_CTR: + $xor = $this->encryptIV; + if (strlen($buffer['ciphertext'])) { + for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { + $block = substr($plaintext, $i, $block_size); + if (strlen($block) > strlen($buffer['ciphertext'])) { + $buffer['ciphertext'].= $this->_encryptBlock($xor); + } + $this->_increment_str($xor); + $key = $this->_string_shift($buffer['ciphertext'], $block_size); + $ciphertext.= $block ^ $key; + } + } else { + for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { + $block = substr($plaintext, $i, $block_size); + $key = $this->_encryptBlock($xor); + $this->_increment_str($xor); + $ciphertext.= $block ^ $key; + } + } + if ($this->continuousBuffer) { + $this->encryptIV = $xor; + if ($start = strlen($plaintext) % $block_size) { + $buffer['ciphertext'] = substr($key, $start) . $buffer['ciphertext']; + } + } + break; + case CRYPT_MODE_CFB: + // cfb loosely routines inspired by openssl's: + // {@link http://cvs.openssl.org/fileview?f=openssl/crypto/modes/cfb128.c&v=1.3.2.2.2.1} + if ($this->continuousBuffer) { + $iv = &$this->encryptIV; + $pos = &$buffer['pos']; + } else { + $iv = $this->encryptIV; + $pos = 0; + } + $len = strlen($plaintext); + $i = 0; + if ($pos) { + $orig_pos = $pos; + $max = $block_size - $pos; + if ($len >= $max) { + $i = $max; + $len-= $max; + $pos = 0; + } else { + $i = $len; + $pos+= $len; + $len = 0; + } + // ie. $i = min($max, $len), $len-= $i, $pos+= $i, $pos%= $blocksize + $ciphertext = substr($iv, $orig_pos) ^ $plaintext; + $iv = substr_replace($iv, $ciphertext, $orig_pos, $i); + } + while ($len >= $block_size) { + $iv = $this->_encryptBlock($iv) ^ substr($plaintext, $i, $block_size); + $ciphertext.= $iv; + $len-= $block_size; + $i+= $block_size; + } + if ($len) { + $iv = $this->_encryptBlock($iv); + $block = $iv ^ substr($plaintext, $i); + $iv = substr_replace($iv, $block, 0, $len); + $ciphertext.= $block; + $pos = $len; + } + break; + case CRYPT_MODE_OFB: + $xor = $this->encryptIV; + if (strlen($buffer['xor'])) { + for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { + $block = substr($plaintext, $i, $block_size); + if (strlen($block) > strlen($buffer['xor'])) { + $xor = $this->_encryptBlock($xor); + $buffer['xor'].= $xor; + } + $key = $this->_string_shift($buffer['xor'], $block_size); + $ciphertext.= $block ^ $key; + } + } else { + for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { + $xor = $this->_encryptBlock($xor); + $ciphertext.= substr($plaintext, $i, $block_size) ^ $xor; + } + $key = $xor; + } + if ($this->continuousBuffer) { + $this->encryptIV = $xor; + if ($start = strlen($plaintext) % $block_size) { + $buffer['xor'] = substr($key, $start) . $buffer['xor']; + } + } + break; + case CRYPT_MODE_STREAM: + $ciphertext = $this->_encryptBlock($plaintext); + break; + } + + return $ciphertext; + } + + /** + * Decrypts a message. + * + * If strlen($ciphertext) is not a multiple of the block size, null bytes will be added to the end of the string until + * it is. + * + * @see self::encrypt() + * @access public + * @param string $ciphertext + * @return string $plaintext + * @internal Could, but not must, extend by the child Crypt_* class + */ + function decrypt($ciphertext) + { + if ($this->paddable) { + // we pad with chr(0) since that's what mcrypt_generic does. to quote from {@link http://www.php.net/function.mcrypt-generic}: + // "The data is padded with "\0" to make sure the length of the data is n * blocksize." + $ciphertext = str_pad($ciphertext, strlen($ciphertext) + ($this->block_size - strlen($ciphertext) % $this->block_size) % $this->block_size, chr(0)); + } + + if ($this->engine === CRYPT_ENGINE_OPENSSL) { + if ($this->changed) { + $this->_clearBuffers(); + $this->changed = false; + } + switch ($this->mode) { + case CRYPT_MODE_STREAM: + $plaintext = openssl_decrypt($ciphertext, $this->cipher_name_openssl, $this->key, $this->openssl_options); + break; + case CRYPT_MODE_ECB: + if (!defined('OPENSSL_RAW_DATA')) { + $ciphertext.= openssl_encrypt('', $this->cipher_name_openssl_ecb, $this->key, true); + } + $plaintext = openssl_decrypt($ciphertext, $this->cipher_name_openssl, $this->key, $this->openssl_options); + break; + case CRYPT_MODE_CBC: + if (!defined('OPENSSL_RAW_DATA')) { + $padding = str_repeat(chr($this->block_size), $this->block_size) ^ substr($ciphertext, -$this->block_size); + $ciphertext.= substr(openssl_encrypt($padding, $this->cipher_name_openssl_ecb, $this->key, true), 0, $this->block_size); + $offset = 2 * $this->block_size; + } else { + $offset = $this->block_size; + } + $plaintext = openssl_decrypt($ciphertext, $this->cipher_name_openssl, $this->key, $this->openssl_options, $this->decryptIV); + if ($this->continuousBuffer) { + $this->decryptIV = substr($ciphertext, -$offset, $this->block_size); + } + break; + case CRYPT_MODE_CTR: + $plaintext = $this->_openssl_ctr_process($ciphertext, $this->decryptIV, $this->debuffer); + break; + case CRYPT_MODE_CFB: + // cfb loosely routines inspired by openssl's: + // {@link http://cvs.openssl.org/fileview?f=openssl/crypto/modes/cfb128.c&v=1.3.2.2.2.1} + $plaintext = ''; + if ($this->continuousBuffer) { + $iv = &$this->decryptIV; + $pos = &$this->buffer['pos']; + } else { + $iv = $this->decryptIV; + $pos = 0; + } + $len = strlen($ciphertext); + $i = 0; + if ($pos) { + $orig_pos = $pos; + $max = $this->block_size - $pos; + if ($len >= $max) { + $i = $max; + $len-= $max; + $pos = 0; + } else { + $i = $len; + $pos+= $len; + $len = 0; + } + // ie. $i = min($max, $len), $len-= $i, $pos+= $i, $pos%= $this->blocksize + $plaintext = substr($iv, $orig_pos) ^ $ciphertext; + $iv = substr_replace($iv, substr($ciphertext, 0, $i), $orig_pos, $i); + $ciphertext = substr($ciphertext, $i); + } + $overflow = $len % $this->block_size; + if ($overflow) { + $plaintext.= openssl_decrypt(substr($ciphertext, 0, -$overflow), $this->cipher_name_openssl, $this->key, $this->openssl_options, $iv); + if ($len - $overflow) { + $iv = substr($ciphertext, -$overflow - $this->block_size, -$overflow); + } + $iv = openssl_encrypt(str_repeat("\0", $this->block_size), $this->cipher_name_openssl, $this->key, $this->openssl_options, $iv); + $plaintext.= $iv ^ substr($ciphertext, -$overflow); + $iv = substr_replace($iv, substr($ciphertext, -$overflow), 0, $overflow); + $pos = $overflow; + } elseif ($len) { + $plaintext.= openssl_decrypt($ciphertext, $this->cipher_name_openssl, $this->key, $this->openssl_options, $iv); + $iv = substr($ciphertext, -$this->block_size); + } + break; + case CRYPT_MODE_OFB: + $plaintext = $this->_openssl_ofb_process($ciphertext, $this->decryptIV, $this->debuffer); + } + + return $this->paddable ? $this->_unpad($plaintext) : $plaintext; + } + + if ($this->engine === CRYPT_ENGINE_MCRYPT) { + $block_size = $this->block_size; + if ($this->changed) { + $this->_setupMcrypt(); + $this->changed = false; + } + if ($this->dechanged) { + @mcrypt_generic_init($this->demcrypt, $this->key, $this->decryptIV); + $this->dechanged = false; + } + + if ($this->mode == CRYPT_MODE_CFB && $this->continuousBuffer) { + $iv = &$this->decryptIV; + $pos = &$this->debuffer['pos']; + $len = strlen($ciphertext); + $plaintext = ''; + $i = 0; + if ($pos) { + $orig_pos = $pos; + $max = $block_size - $pos; + if ($len >= $max) { + $i = $max; + $len-= $max; + $pos = 0; + } else { + $i = $len; + $pos+= $len; + $len = 0; + } + // ie. $i = min($max, $len), $len-= $i, $pos+= $i, $pos%= $blocksize + $plaintext = substr($iv, $orig_pos) ^ $ciphertext; + $iv = substr_replace($iv, substr($ciphertext, 0, $i), $orig_pos, $i); + } + if ($len >= $block_size) { + $cb = substr($ciphertext, $i, $len - $len % $block_size); + $plaintext.= @mcrypt_generic($this->ecb, $iv . $cb) ^ $cb; + $iv = substr($cb, -$block_size); + $len%= $block_size; + } + if ($len) { + $iv = @mcrypt_generic($this->ecb, $iv); + $plaintext.= $iv ^ substr($ciphertext, -$len); + $iv = substr_replace($iv, substr($ciphertext, -$len), 0, $len); + $pos = $len; + } + + return $plaintext; + } + + $plaintext = @mdecrypt_generic($this->demcrypt, $ciphertext); + + if (!$this->continuousBuffer) { + @mcrypt_generic_init($this->demcrypt, $this->key, $this->decryptIV); + } + + return $this->paddable ? $this->_unpad($plaintext) : $plaintext; + } + + if ($this->changed) { + $this->_setup(); + $this->changed = false; + } + if ($this->use_inline_crypt) { + $inline = $this->inline_crypt; + return $inline('decrypt', $this, $ciphertext); + } + + $block_size = $this->block_size; + + $buffer = &$this->debuffer; + $plaintext = ''; + switch ($this->mode) { + case CRYPT_MODE_ECB: + for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) { + $plaintext.= $this->_decryptBlock(substr($ciphertext, $i, $block_size)); + } + break; + case CRYPT_MODE_CBC: + $xor = $this->decryptIV; + for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) { + $block = substr($ciphertext, $i, $block_size); + $plaintext.= $this->_decryptBlock($block) ^ $xor; + $xor = $block; + } + if ($this->continuousBuffer) { + $this->decryptIV = $xor; + } + break; + case CRYPT_MODE_CTR: + $xor = $this->decryptIV; + if (strlen($buffer['ciphertext'])) { + for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) { + $block = substr($ciphertext, $i, $block_size); + if (strlen($block) > strlen($buffer['ciphertext'])) { + $buffer['ciphertext'].= $this->_encryptBlock($xor); + $this->_increment_str($xor); + } + $key = $this->_string_shift($buffer['ciphertext'], $block_size); + $plaintext.= $block ^ $key; + } + } else { + for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) { + $block = substr($ciphertext, $i, $block_size); + $key = $this->_encryptBlock($xor); + $this->_increment_str($xor); + $plaintext.= $block ^ $key; + } + } + if ($this->continuousBuffer) { + $this->decryptIV = $xor; + if ($start = strlen($ciphertext) % $block_size) { + $buffer['ciphertext'] = substr($key, $start) . $buffer['ciphertext']; + } + } + break; + case CRYPT_MODE_CFB: + if ($this->continuousBuffer) { + $iv = &$this->decryptIV; + $pos = &$buffer['pos']; + } else { + $iv = $this->decryptIV; + $pos = 0; + } + $len = strlen($ciphertext); + $i = 0; + if ($pos) { + $orig_pos = $pos; + $max = $block_size - $pos; + if ($len >= $max) { + $i = $max; + $len-= $max; + $pos = 0; + } else { + $i = $len; + $pos+= $len; + $len = 0; + } + // ie. $i = min($max, $len), $len-= $i, $pos+= $i, $pos%= $blocksize + $plaintext = substr($iv, $orig_pos) ^ $ciphertext; + $iv = substr_replace($iv, substr($ciphertext, 0, $i), $orig_pos, $i); + } + while ($len >= $block_size) { + $iv = $this->_encryptBlock($iv); + $cb = substr($ciphertext, $i, $block_size); + $plaintext.= $iv ^ $cb; + $iv = $cb; + $len-= $block_size; + $i+= $block_size; + } + if ($len) { + $iv = $this->_encryptBlock($iv); + $plaintext.= $iv ^ substr($ciphertext, $i); + $iv = substr_replace($iv, substr($ciphertext, $i), 0, $len); + $pos = $len; + } + break; + case CRYPT_MODE_OFB: + $xor = $this->decryptIV; + if (strlen($buffer['xor'])) { + for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) { + $block = substr($ciphertext, $i, $block_size); + if (strlen($block) > strlen($buffer['xor'])) { + $xor = $this->_encryptBlock($xor); + $buffer['xor'].= $xor; + } + $key = $this->_string_shift($buffer['xor'], $block_size); + $plaintext.= $block ^ $key; + } + } else { + for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) { + $xor = $this->_encryptBlock($xor); + $plaintext.= substr($ciphertext, $i, $block_size) ^ $xor; + } + $key = $xor; + } + if ($this->continuousBuffer) { + $this->decryptIV = $xor; + if ($start = strlen($ciphertext) % $block_size) { + $buffer['xor'] = substr($key, $start) . $buffer['xor']; + } + } + break; + case CRYPT_MODE_STREAM: + $plaintext = $this->_decryptBlock($ciphertext); + break; + } + return $this->paddable ? $this->_unpad($plaintext) : $plaintext; + } + + /** + * OpenSSL CTR Processor + * + * PHP's OpenSSL bindings do not operate in continuous mode so we'll wrap around it. Since the keystream + * for CTR is the same for both encrypting and decrypting this function is re-used by both Crypt_Base::encrypt() + * and Crypt_Base::decrypt(). Also, OpenSSL doesn't implement CTR for all of it's symmetric ciphers so this + * function will emulate CTR with ECB when necessary. + * + * @see self::encrypt() + * @see self::decrypt() + * @param string $plaintext + * @param string $encryptIV + * @param array $buffer + * @return string + * @access private + */ + function _openssl_ctr_process($plaintext, &$encryptIV, &$buffer) + { + $ciphertext = ''; + + $block_size = $this->block_size; + $key = $this->key; + + if ($this->openssl_emulate_ctr) { + $xor = $encryptIV; + if (strlen($buffer['ciphertext'])) { + for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { + $block = substr($plaintext, $i, $block_size); + if (strlen($block) > strlen($buffer['ciphertext'])) { + $result = openssl_encrypt($xor, $this->cipher_name_openssl_ecb, $key, $this->openssl_options); + $result = !defined('OPENSSL_RAW_DATA') ? substr($result, 0, -$this->block_size) : $result; + $buffer['ciphertext'].= $result; + } + $this->_increment_str($xor); + $otp = $this->_string_shift($buffer['ciphertext'], $block_size); + $ciphertext.= $block ^ $otp; + } + } else { + for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { + $block = substr($plaintext, $i, $block_size); + $otp = openssl_encrypt($xor, $this->cipher_name_openssl_ecb, $key, $this->openssl_options); + $otp = !defined('OPENSSL_RAW_DATA') ? substr($otp, 0, -$this->block_size) : $otp; + $this->_increment_str($xor); + $ciphertext.= $block ^ $otp; + } + } + if ($this->continuousBuffer) { + $encryptIV = $xor; + if ($start = strlen($plaintext) % $block_size) { + $buffer['ciphertext'] = substr($key, $start) . $buffer['ciphertext']; + } + } + + return $ciphertext; + } + + if (strlen($buffer['ciphertext'])) { + $ciphertext = $plaintext ^ $this->_string_shift($buffer['ciphertext'], strlen($plaintext)); + $plaintext = substr($plaintext, strlen($ciphertext)); + + if (!strlen($plaintext)) { + return $ciphertext; + } + } + + $overflow = strlen($plaintext) % $block_size; + if ($overflow) { + $plaintext2 = $this->_string_pop($plaintext, $overflow); // ie. trim $plaintext to a multiple of $block_size and put rest of $plaintext in $plaintext2 + $encrypted = openssl_encrypt($plaintext . str_repeat("\0", $block_size), $this->cipher_name_openssl, $key, $this->openssl_options, $encryptIV); + $temp = $this->_string_pop($encrypted, $block_size); + $ciphertext.= $encrypted . ($plaintext2 ^ $temp); + if ($this->continuousBuffer) { + $buffer['ciphertext'] = substr($temp, $overflow); + $encryptIV = $temp; + } + } elseif (!strlen($buffer['ciphertext'])) { + $ciphertext.= openssl_encrypt($plaintext . str_repeat("\0", $block_size), $this->cipher_name_openssl, $key, $this->openssl_options, $encryptIV); + $temp = $this->_string_pop($ciphertext, $block_size); + if ($this->continuousBuffer) { + $encryptIV = $temp; + } + } + if ($this->continuousBuffer) { + if (!defined('OPENSSL_RAW_DATA')) { + $encryptIV.= openssl_encrypt('', $this->cipher_name_openssl_ecb, $key, $this->openssl_options); + } + $encryptIV = openssl_decrypt($encryptIV, $this->cipher_name_openssl_ecb, $key, $this->openssl_options); + if ($overflow) { + $this->_increment_str($encryptIV); + } + } + + return $ciphertext; + } + + /** + * OpenSSL OFB Processor + * + * PHP's OpenSSL bindings do not operate in continuous mode so we'll wrap around it. Since the keystream + * for OFB is the same for both encrypting and decrypting this function is re-used by both Crypt_Base::encrypt() + * and Crypt_Base::decrypt(). + * + * @see self::encrypt() + * @see self::decrypt() + * @param string $plaintext + * @param string $encryptIV + * @param array $buffer + * @return string + * @access private + */ + function _openssl_ofb_process($plaintext, &$encryptIV, &$buffer) + { + if (strlen($buffer['xor'])) { + $ciphertext = $plaintext ^ $buffer['xor']; + $buffer['xor'] = substr($buffer['xor'], strlen($ciphertext)); + $plaintext = substr($plaintext, strlen($ciphertext)); + } else { + $ciphertext = ''; + } + + $block_size = $this->block_size; + + $len = strlen($plaintext); + $key = $this->key; + $overflow = $len % $block_size; + + if (strlen($plaintext)) { + if ($overflow) { + $ciphertext.= openssl_encrypt(substr($plaintext, 0, -$overflow) . str_repeat("\0", $block_size), $this->cipher_name_openssl, $key, $this->openssl_options, $encryptIV); + $xor = $this->_string_pop($ciphertext, $block_size); + if ($this->continuousBuffer) { + $encryptIV = $xor; + } + $ciphertext.= $this->_string_shift($xor, $overflow) ^ substr($plaintext, -$overflow); + if ($this->continuousBuffer) { + $buffer['xor'] = $xor; + } + } else { + $ciphertext = openssl_encrypt($plaintext, $this->cipher_name_openssl, $key, $this->openssl_options, $encryptIV); + if ($this->continuousBuffer) { + $encryptIV = substr($ciphertext, -$block_size) ^ substr($plaintext, -$block_size); + } + } + } + + return $ciphertext; + } + + /** + * phpseclib <-> OpenSSL Mode Mapper + * + * May need to be overwritten by classes extending this one in some cases + * + * @return int + * @access private + */ + function _openssl_translate_mode() + { + switch ($this->mode) { + case CRYPT_MODE_ECB: + return 'ecb'; + case CRYPT_MODE_CBC: + return 'cbc'; + case CRYPT_MODE_CTR: + return 'ctr'; + case CRYPT_MODE_CFB: + return 'cfb'; + case CRYPT_MODE_OFB: + return 'ofb'; + } + } + + /** + * Pad "packets". + * + * Block ciphers working by encrypting between their specified [$this->]block_size at a time + * If you ever need to encrypt or decrypt something that isn't of the proper length, it becomes necessary to + * pad the input so that it is of the proper length. + * + * Padding is enabled by default. Sometimes, however, it is undesirable to pad strings. Such is the case in SSH, + * where "packets" are padded with random bytes before being encrypted. Unpad these packets and you risk stripping + * away characters that shouldn't be stripped away. (SSH knows how many bytes are added because the length is + * transmitted separately) + * + * @see self::disablePadding() + * @access public + */ + function enablePadding() + { + $this->padding = true; + } + + /** + * Do not pad packets. + * + * @see self::enablePadding() + * @access public + */ + function disablePadding() + { + $this->padding = false; + } + + /** + * Treat consecutive "packets" as if they are a continuous buffer. + * + * Say you have a 32-byte plaintext $plaintext. Using the default behavior, the two following code snippets + * will yield different outputs: + * + * + * echo $rijndael->encrypt(substr($plaintext, 0, 16)); + * echo $rijndael->encrypt(substr($plaintext, 16, 16)); + * + * + * echo $rijndael->encrypt($plaintext); + * + * + * The solution is to enable the continuous buffer. Although this will resolve the above discrepancy, it creates + * another, as demonstrated with the following: + * + * + * $rijndael->encrypt(substr($plaintext, 0, 16)); + * echo $rijndael->decrypt($rijndael->encrypt(substr($plaintext, 16, 16))); + * + * + * echo $rijndael->decrypt($rijndael->encrypt(substr($plaintext, 16, 16))); + * + * + * With the continuous buffer disabled, these would yield the same output. With it enabled, they yield different + * outputs. The reason is due to the fact that the initialization vector's change after every encryption / + * decryption round when the continuous buffer is enabled. When it's disabled, they remain constant. + * + * Put another way, when the continuous buffer is enabled, the state of the Crypt_*() object changes after each + * encryption / decryption round, whereas otherwise, it'd remain constant. For this reason, it's recommended that + * continuous buffers not be used. They do offer better security and are, in fact, sometimes required (SSH uses them), + * however, they are also less intuitive and more likely to cause you problems. + * + * @see self::disableContinuousBuffer() + * @access public + * @internal Could, but not must, extend by the child Crypt_* class + */ + function enableContinuousBuffer() + { + if ($this->mode == CRYPT_MODE_ECB) { + return; + } + + $this->continuousBuffer = true; + + $this->_setEngine(); + } + + /** + * Treat consecutive packets as if they are a discontinuous buffer. + * + * The default behavior. + * + * @see self::enableContinuousBuffer() + * @access public + * @internal Could, but not must, extend by the child Crypt_* class + */ + function disableContinuousBuffer() + { + if ($this->mode == CRYPT_MODE_ECB) { + return; + } + if (!$this->continuousBuffer) { + return; + } + + $this->continuousBuffer = false; + $this->changed = true; + + $this->_setEngine(); + } + + /** + * Test for engine validity + * + * @see self::Crypt_Base() + * @param int $engine + * @access public + * @return bool + */ + function isValidEngine($engine) + { + switch ($engine) { + case CRYPT_ENGINE_OPENSSL: + if ($this->mode == CRYPT_MODE_STREAM && $this->continuousBuffer) { + return false; + } + $this->openssl_emulate_ctr = false; + $result = $this->cipher_name_openssl && + extension_loaded('openssl') && + // PHP 5.3.0 - 5.3.2 did not let you set IV's + version_compare(PHP_VERSION, '5.3.3', '>='); + if (!$result) { + return false; + } + + // prior to PHP 5.4.0 OPENSSL_RAW_DATA and OPENSSL_ZERO_PADDING were not defined. instead of expecting an integer + // $options openssl_encrypt expected a boolean $raw_data. + if (!defined('OPENSSL_RAW_DATA')) { + $this->openssl_options = true; + } else { + $this->openssl_options = OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING; + } + + $methods = openssl_get_cipher_methods(); + if (in_array($this->cipher_name_openssl, $methods)) { + return true; + } + // not all of openssl's symmetric cipher's support ctr. for those + // that don't we'll emulate it + switch ($this->mode) { + case CRYPT_MODE_CTR: + if (in_array($this->cipher_name_openssl_ecb, $methods)) { + $this->openssl_emulate_ctr = true; + return true; + } + } + return false; + case CRYPT_ENGINE_MCRYPT: + return $this->cipher_name_mcrypt && + extension_loaded('mcrypt') && + in_array($this->cipher_name_mcrypt, @mcrypt_list_algorithms()); + case CRYPT_ENGINE_INTERNAL: + return true; + } + + return false; + } + + /** + * Sets the preferred crypt engine + * + * Currently, $engine could be: + * + * - CRYPT_ENGINE_OPENSSL [very fast] + * + * - CRYPT_ENGINE_MCRYPT [fast] + * + * - CRYPT_ENGINE_INTERNAL [slow] + * + * If the preferred crypt engine is not available the fastest available one will be used + * + * @see self::Crypt_Base() + * @param int $engine + * @access public + */ + function setPreferredEngine($engine) + { + switch ($engine) { + //case CRYPT_ENGINE_OPENSSL: + case CRYPT_ENGINE_MCRYPT: + case CRYPT_ENGINE_INTERNAL: + $this->preferredEngine = $engine; + break; + default: + $this->preferredEngine = CRYPT_ENGINE_OPENSSL; + } + + $this->_setEngine(); + } + + /** + * Returns the engine currently being utilized + * + * @see self::_setEngine() + * @access public + */ + function getEngine() + { + return $this->engine; + } + + /** + * Sets the engine as appropriate + * + * @see self::Crypt_Base() + * @access private + */ + function _setEngine() + { + $this->engine = null; + + $candidateEngines = array( + $this->preferredEngine, + CRYPT_ENGINE_OPENSSL, + CRYPT_ENGINE_MCRYPT + ); + foreach ($candidateEngines as $engine) { + if ($this->isValidEngine($engine)) { + $this->engine = $engine; + break; + } + } + if (!$this->engine) { + $this->engine = CRYPT_ENGINE_INTERNAL; + } + + if ($this->engine != CRYPT_ENGINE_MCRYPT && $this->enmcrypt) { + // Closing the current mcrypt resource(s). _mcryptSetup() will, if needed, + // (re)open them with the module named in $this->cipher_name_mcrypt + @mcrypt_module_close($this->enmcrypt); + @mcrypt_module_close($this->demcrypt); + $this->enmcrypt = null; + $this->demcrypt = null; + + if ($this->ecb) { + @mcrypt_module_close($this->ecb); + $this->ecb = null; + } + } + + $this->changed = true; + } + + /** + * Encrypts a block + * + * @access private + * @param string $in + * @return string + * @internal Must be extended by the child Crypt_* class + */ + function _encryptBlock($in) + { + user_error((version_compare(PHP_VERSION, '5.0.0', '>=') ? __METHOD__ : __FUNCTION__) . '() must extend by class ' . get_class($this), E_USER_ERROR); + } + + /** + * Decrypts a block + * + * @access private + * @param string $in + * @return string + * @internal Must be extended by the child Crypt_* class + */ + function _decryptBlock($in) + { + user_error((version_compare(PHP_VERSION, '5.0.0', '>=') ? __METHOD__ : __FUNCTION__) . '() must extend by class ' . get_class($this), E_USER_ERROR); + } + + /** + * Setup the key (expansion) + * + * Only used if $engine == CRYPT_ENGINE_INTERNAL + * + * @see self::_setup() + * @access private + * @internal Must be extended by the child Crypt_* class + */ + function _setupKey() + { + user_error((version_compare(PHP_VERSION, '5.0.0', '>=') ? __METHOD__ : __FUNCTION__) . '() must extend by class ' . get_class($this), E_USER_ERROR); + } + + /** + * Setup the CRYPT_ENGINE_INTERNAL $engine + * + * (re)init, if necessary, the internal cipher $engine and flush all $buffers + * Used (only) if $engine == CRYPT_ENGINE_INTERNAL + * + * _setup() will be called each time if $changed === true + * typically this happens when using one or more of following public methods: + * + * - setKey() + * + * - setIV() + * + * - disableContinuousBuffer() + * + * - First run of encrypt() / decrypt() with no init-settings + * + * @see self::setKey() + * @see self::setIV() + * @see self::disableContinuousBuffer() + * @access private + * @internal _setup() is always called before en/decryption. + * @internal Could, but not must, extend by the child Crypt_* class + */ + function _setup() + { + $this->_clearBuffers(); + $this->_setupKey(); + + if ($this->use_inline_crypt) { + $this->_setupInlineCrypt(); + } + } + + /** + * Setup the CRYPT_ENGINE_MCRYPT $engine + * + * (re)init, if necessary, the (ext)mcrypt resources and flush all $buffers + * Used (only) if $engine = CRYPT_ENGINE_MCRYPT + * + * _setupMcrypt() will be called each time if $changed === true + * typically this happens when using one or more of following public methods: + * + * - setKey() + * + * - setIV() + * + * - disableContinuousBuffer() + * + * - First run of encrypt() / decrypt() + * + * @see self::setKey() + * @see self::setIV() + * @see self::disableContinuousBuffer() + * @access private + * @internal Could, but not must, extend by the child Crypt_* class + */ + function _setupMcrypt() + { + $this->_clearBuffers(); + $this->enchanged = $this->dechanged = true; + + if (!isset($this->enmcrypt)) { + static $mcrypt_modes = array( + CRYPT_MODE_CTR => 'ctr', + CRYPT_MODE_ECB => MCRYPT_MODE_ECB, + CRYPT_MODE_CBC => MCRYPT_MODE_CBC, + CRYPT_MODE_CFB => 'ncfb', + CRYPT_MODE_OFB => MCRYPT_MODE_NOFB, + CRYPT_MODE_STREAM => MCRYPT_MODE_STREAM, + ); + + $this->demcrypt = @mcrypt_module_open($this->cipher_name_mcrypt, '', $mcrypt_modes[$this->mode], ''); + $this->enmcrypt = @mcrypt_module_open($this->cipher_name_mcrypt, '', $mcrypt_modes[$this->mode], ''); + + // we need the $ecb mcrypt resource (only) in MODE_CFB with enableContinuousBuffer() + // to workaround mcrypt's broken ncfb implementation in buffered mode + // see: {@link http://phpseclib.sourceforge.net/cfb-demo.phps} + if ($this->mode == CRYPT_MODE_CFB) { + $this->ecb = @mcrypt_module_open($this->cipher_name_mcrypt, '', MCRYPT_MODE_ECB, ''); + } + } // else should mcrypt_generic_deinit be called? + + if ($this->mode == CRYPT_MODE_CFB) { + @mcrypt_generic_init($this->ecb, $this->key, str_repeat("\0", $this->block_size)); + } + } + + /** + * Pads a string + * + * Pads a string using the RSA PKCS padding standards so that its length is a multiple of the blocksize. + * $this->block_size - (strlen($text) % $this->block_size) bytes are added, each of which is equal to + * chr($this->block_size - (strlen($text) % $this->block_size) + * + * If padding is disabled and $text is not a multiple of the blocksize, the string will be padded regardless + * and padding will, hence forth, be enabled. + * + * @see self::_unpad() + * @param string $text + * @access private + * @return string + */ + function _pad($text) + { + $length = strlen($text); + + if (!$this->padding) { + if ($length % $this->block_size == 0) { + return $text; + } else { + user_error("The plaintext's length ($length) is not a multiple of the block size ({$this->block_size})"); + $this->padding = true; + } + } + + $pad = $this->block_size - ($length % $this->block_size); + + return str_pad($text, $length + $pad, chr($pad)); + } + + /** + * Unpads a string. + * + * If padding is enabled and the reported padding length is invalid the encryption key will be assumed to be wrong + * and false will be returned. + * + * @see self::_pad() + * @param string $text + * @access private + * @return string + */ + function _unpad($text) + { + if (!$this->padding) { + return $text; + } + + $length = ord($text[strlen($text) - 1]); + + if (!$length || $length > $this->block_size) { + return false; + } + + return substr($text, 0, -$length); + } + + /** + * Clears internal buffers + * + * Clearing/resetting the internal buffers is done everytime + * after disableContinuousBuffer() or on cipher $engine (re)init + * ie after setKey() or setIV() + * + * @access public + * @internal Could, but not must, extend by the child Crypt_* class + */ + function _clearBuffers() + { + $this->enbuffer = $this->debuffer = array('ciphertext' => '', 'xor' => '', 'pos' => 0, 'enmcrypt_init' => true); + + // mcrypt's handling of invalid's $iv: + // $this->encryptIV = $this->decryptIV = strlen($this->iv) == $this->block_size ? $this->iv : str_repeat("\0", $this->block_size); + $this->encryptIV = $this->decryptIV = str_pad(substr($this->iv, 0, $this->block_size), $this->block_size, "\0"); + + if (!$this->skip_key_adjustment) { + $this->key = str_pad(substr($this->key, 0, $this->key_length), $this->key_length, "\0"); + } + } + + /** + * String Shift + * + * Inspired by array_shift + * + * @param string $string + * @param int $index + * @access private + * @return string + */ + function _string_shift(&$string, $index = 1) + { + $substr = substr($string, 0, $index); + $string = substr($string, $index); + return $substr; + } + + /** + * String Pop + * + * Inspired by array_pop + * + * @param string $string + * @param int $index + * @access private + * @return string + */ + function _string_pop(&$string, $index = 1) + { + $substr = substr($string, -$index); + $string = substr($string, 0, -$index); + return $substr; + } + + /** + * Increment the current string + * + * @see self::decrypt() + * @see self::encrypt() + * @param string $var + * @access private + */ + function _increment_str(&$var) + { + for ($i = 4; $i <= strlen($var); $i+= 4) { + $temp = substr($var, -$i, 4); + switch ($temp) { + case "\xFF\xFF\xFF\xFF": + $var = substr_replace($var, "\x00\x00\x00\x00", -$i, 4); + break; + case "\x7F\xFF\xFF\xFF": + $var = substr_replace($var, "\x80\x00\x00\x00", -$i, 4); + return; + default: + $temp = unpack('Nnum', $temp); + $var = substr_replace($var, pack('N', $temp['num'] + 1), -$i, 4); + return; + } + } + + $remainder = strlen($var) % 4; + + if ($remainder == 0) { + return; + } + + $temp = unpack('Nnum', str_pad(substr($var, 0, $remainder), 4, "\0", STR_PAD_LEFT)); + $temp = substr(pack('N', $temp['num'] + 1), -$remainder); + $var = substr_replace($var, $temp, 0, $remainder); + } + + /** + * Setup the performance-optimized function for de/encrypt() + * + * Stores the created (or existing) callback function-name + * in $this->inline_crypt + * + * Internally for phpseclib developers: + * + * _setupInlineCrypt() would be called only if: + * + * - $engine == CRYPT_ENGINE_INTERNAL and + * + * - $use_inline_crypt === true + * + * - each time on _setup(), after(!) _setupKey() + * + * + * This ensures that _setupInlineCrypt() has always a + * full ready2go initializated internal cipher $engine state + * where, for example, the keys allready expanded, + * keys/block_size calculated and such. + * + * It is, each time if called, the responsibility of _setupInlineCrypt(): + * + * - to set $this->inline_crypt to a valid and fully working callback function + * as a (faster) replacement for encrypt() / decrypt() + * + * - NOT to create unlimited callback functions (for memory reasons!) + * no matter how often _setupInlineCrypt() would be called. At some + * point of amount they must be generic re-useable. + * + * - the code of _setupInlineCrypt() it self, + * and the generated callback code, + * must be, in following order: + * - 100% safe + * - 100% compatible to encrypt()/decrypt() + * - using only php5+ features/lang-constructs/php-extensions if + * compatibility (down to php4) or fallback is provided + * - readable/maintainable/understandable/commented and... not-cryptic-styled-code :-) + * - >= 10% faster than encrypt()/decrypt() [which is, by the way, + * the reason for the existence of _setupInlineCrypt() :-)] + * - memory-nice + * - short (as good as possible) + * + * Note: - _setupInlineCrypt() is using _createInlineCryptFunction() to create the full callback function code. + * - In case of using inline crypting, _setupInlineCrypt() must extend by the child Crypt_* class. + * - The following variable names are reserved: + * - $_* (all variable names prefixed with an underscore) + * - $self (object reference to it self. Do not use $this, but $self instead) + * - $in (the content of $in has to en/decrypt by the generated code) + * - The callback function should not use the 'return' statement, but en/decrypt'ing the content of $in only + * + * + * @see self::_setup() + * @see self::_createInlineCryptFunction() + * @see self::encrypt() + * @see self::decrypt() + * @access private + * @internal If a Crypt_* class providing inline crypting it must extend _setupInlineCrypt() + */ + function _setupInlineCrypt() + { + // If, for any reason, an extending Crypt_Base() Crypt_* class + // not using inline crypting then it must be ensured that: $this->use_inline_crypt = false + // ie in the class var declaration of $use_inline_crypt in general for the Crypt_* class, + // in the constructor at object instance-time + // or, if it's runtime-specific, at runtime + + $this->use_inline_crypt = false; + } + + /** + * Creates the performance-optimized function for en/decrypt() + * + * Internally for phpseclib developers: + * + * _createInlineCryptFunction(): + * + * - merge the $cipher_code [setup'ed by _setupInlineCrypt()] + * with the current [$this->]mode of operation code + * + * - create the $inline function, which called by encrypt() / decrypt() + * as its replacement to speed up the en/decryption operations. + * + * - return the name of the created $inline callback function + * + * - used to speed up en/decryption + * + * + * + * The main reason why can speed up things [up to 50%] this way are: + * + * - using variables more effective then regular. + * (ie no use of expensive arrays but integers $k_0, $k_1 ... + * or even, for example, the pure $key[] values hardcoded) + * + * - avoiding 1000's of function calls of ie _encryptBlock() + * but inlining the crypt operations. + * in the mode of operation for() loop. + * + * - full loop unroll the (sometimes key-dependent) rounds + * avoiding this way ++$i counters and runtime-if's etc... + * + * The basic code architectur of the generated $inline en/decrypt() + * lambda function, in pseudo php, is: + * + * + * +----------------------------------------------------------------------------------------------+ + * | callback $inline = create_function: | + * | lambda_function_0001_crypt_ECB($action, $text) | + * | { | + * | INSERT PHP CODE OF: | + * | $cipher_code['init_crypt']; // general init code. | + * | // ie: $sbox'es declarations used for | + * | // encrypt and decrypt'ing. | + * | | + * | switch ($action) { | + * | case 'encrypt': | + * | INSERT PHP CODE OF: | + * | $cipher_code['init_encrypt']; // encrypt sepcific init code. | + * | ie: specified $key or $box | + * | declarations for encrypt'ing. | + * | | + * | foreach ($ciphertext) { | + * | $in = $block_size of $ciphertext; | + * | | + * | INSERT PHP CODE OF: | + * | $cipher_code['encrypt_block']; // encrypt's (string) $in, which is always: | + * | // strlen($in) == $this->block_size | + * | // here comes the cipher algorithm in action | + * | // for encryption. | + * | // $cipher_code['encrypt_block'] has to | + * | // encrypt the content of the $in variable | + * | | + * | $plaintext .= $in; | + * | } | + * | return $plaintext; | + * | | + * | case 'decrypt': | + * | INSERT PHP CODE OF: | + * | $cipher_code['init_decrypt']; // decrypt sepcific init code | + * | ie: specified $key or $box | + * | declarations for decrypt'ing. | + * | foreach ($plaintext) { | + * | $in = $block_size of $plaintext; | + * | | + * | INSERT PHP CODE OF: | + * | $cipher_code['decrypt_block']; // decrypt's (string) $in, which is always | + * | // strlen($in) == $this->block_size | + * | // here comes the cipher algorithm in action | + * | // for decryption. | + * | // $cipher_code['decrypt_block'] has to | + * | // decrypt the content of the $in variable | + * | $ciphertext .= $in; | + * | } | + * | return $ciphertext; | + * | } | + * | } | + * +----------------------------------------------------------------------------------------------+ + * + * + * See also the Crypt_*::_setupInlineCrypt()'s for + * productive inline $cipher_code's how they works. + * + * Structure of: + * + * $cipher_code = array( + * 'init_crypt' => (string) '', // optional + * 'init_encrypt' => (string) '', // optional + * 'init_decrypt' => (string) '', // optional + * 'encrypt_block' => (string) '', // required + * 'decrypt_block' => (string) '' // required + * ); + * + * + * @see self::_setupInlineCrypt() + * @see self::encrypt() + * @see self::decrypt() + * @param array $cipher_code + * @access private + * @return string (the name of the created callback function) + */ + function _createInlineCryptFunction($cipher_code) + { + $block_size = $this->block_size; + + // optional + $init_crypt = isset($cipher_code['init_crypt']) ? $cipher_code['init_crypt'] : ''; + $init_encrypt = isset($cipher_code['init_encrypt']) ? $cipher_code['init_encrypt'] : ''; + $init_decrypt = isset($cipher_code['init_decrypt']) ? $cipher_code['init_decrypt'] : ''; + // required + $encrypt_block = $cipher_code['encrypt_block']; + $decrypt_block = $cipher_code['decrypt_block']; + + // Generating mode of operation inline code, + // merged with the $cipher_code algorithm + // for encrypt- and decryption. + switch ($this->mode) { + case CRYPT_MODE_ECB: + $encrypt = $init_encrypt . ' + $_ciphertext = ""; + $_plaintext_len = strlen($_text); + + for ($_i = 0; $_i < $_plaintext_len; $_i+= '.$block_size.') { + $in = substr($_text, $_i, '.$block_size.'); + '.$encrypt_block.' + $_ciphertext.= $in; + } + + return $_ciphertext; + '; + + $decrypt = $init_decrypt . ' + $_plaintext = ""; + $_text = str_pad($_text, strlen($_text) + ('.$block_size.' - strlen($_text) % '.$block_size.') % '.$block_size.', chr(0)); + $_ciphertext_len = strlen($_text); + + for ($_i = 0; $_i < $_ciphertext_len; $_i+= '.$block_size.') { + $in = substr($_text, $_i, '.$block_size.'); + '.$decrypt_block.' + $_plaintext.= $in; + } + + return $self->_unpad($_plaintext); + '; + break; + case CRYPT_MODE_CTR: + $encrypt = $init_encrypt . ' + $_ciphertext = ""; + $_plaintext_len = strlen($_text); + $_xor = $self->encryptIV; + $_buffer = &$self->enbuffer; + if (strlen($_buffer["ciphertext"])) { + for ($_i = 0; $_i < $_plaintext_len; $_i+= '.$block_size.') { + $_block = substr($_text, $_i, '.$block_size.'); + if (strlen($_block) > strlen($_buffer["ciphertext"])) { + $in = $_xor; + '.$encrypt_block.' + $self->_increment_str($_xor); + $_buffer["ciphertext"].= $in; + } + $_key = $self->_string_shift($_buffer["ciphertext"], '.$block_size.'); + $_ciphertext.= $_block ^ $_key; + } + } else { + for ($_i = 0; $_i < $_plaintext_len; $_i+= '.$block_size.') { + $_block = substr($_text, $_i, '.$block_size.'); + $in = $_xor; + '.$encrypt_block.' + $self->_increment_str($_xor); + $_key = $in; + $_ciphertext.= $_block ^ $_key; + } + } + if ($self->continuousBuffer) { + $self->encryptIV = $_xor; + if ($_start = $_plaintext_len % '.$block_size.') { + $_buffer["ciphertext"] = substr($_key, $_start) . $_buffer["ciphertext"]; + } + } + + return $_ciphertext; + '; + + $decrypt = $init_encrypt . ' + $_plaintext = ""; + $_ciphertext_len = strlen($_text); + $_xor = $self->decryptIV; + $_buffer = &$self->debuffer; + + if (strlen($_buffer["ciphertext"])) { + for ($_i = 0; $_i < $_ciphertext_len; $_i+= '.$block_size.') { + $_block = substr($_text, $_i, '.$block_size.'); + if (strlen($_block) > strlen($_buffer["ciphertext"])) { + $in = $_xor; + '.$encrypt_block.' + $self->_increment_str($_xor); + $_buffer["ciphertext"].= $in; + } + $_key = $self->_string_shift($_buffer["ciphertext"], '.$block_size.'); + $_plaintext.= $_block ^ $_key; + } + } else { + for ($_i = 0; $_i < $_ciphertext_len; $_i+= '.$block_size.') { + $_block = substr($_text, $_i, '.$block_size.'); + $in = $_xor; + '.$encrypt_block.' + $self->_increment_str($_xor); + $_key = $in; + $_plaintext.= $_block ^ $_key; + } + } + if ($self->continuousBuffer) { + $self->decryptIV = $_xor; + if ($_start = $_ciphertext_len % '.$block_size.') { + $_buffer["ciphertext"] = substr($_key, $_start) . $_buffer["ciphertext"]; + } + } + + return $_plaintext; + '; + break; + case CRYPT_MODE_CFB: + $encrypt = $init_encrypt . ' + $_ciphertext = ""; + $_buffer = &$self->enbuffer; + + if ($self->continuousBuffer) { + $_iv = &$self->encryptIV; + $_pos = &$_buffer["pos"]; + } else { + $_iv = $self->encryptIV; + $_pos = 0; + } + $_len = strlen($_text); + $_i = 0; + if ($_pos) { + $_orig_pos = $_pos; + $_max = '.$block_size.' - $_pos; + if ($_len >= $_max) { + $_i = $_max; + $_len-= $_max; + $_pos = 0; + } else { + $_i = $_len; + $_pos+= $_len; + $_len = 0; + } + $_ciphertext = substr($_iv, $_orig_pos) ^ $_text; + $_iv = substr_replace($_iv, $_ciphertext, $_orig_pos, $_i); + } + while ($_len >= '.$block_size.') { + $in = $_iv; + '.$encrypt_block.'; + $_iv = $in ^ substr($_text, $_i, '.$block_size.'); + $_ciphertext.= $_iv; + $_len-= '.$block_size.'; + $_i+= '.$block_size.'; + } + if ($_len) { + $in = $_iv; + '.$encrypt_block.' + $_iv = $in; + $_block = $_iv ^ substr($_text, $_i); + $_iv = substr_replace($_iv, $_block, 0, $_len); + $_ciphertext.= $_block; + $_pos = $_len; + } + return $_ciphertext; + '; + + $decrypt = $init_encrypt . ' + $_plaintext = ""; + $_buffer = &$self->debuffer; + + if ($self->continuousBuffer) { + $_iv = &$self->decryptIV; + $_pos = &$_buffer["pos"]; + } else { + $_iv = $self->decryptIV; + $_pos = 0; + } + $_len = strlen($_text); + $_i = 0; + if ($_pos) { + $_orig_pos = $_pos; + $_max = '.$block_size.' - $_pos; + if ($_len >= $_max) { + $_i = $_max; + $_len-= $_max; + $_pos = 0; + } else { + $_i = $_len; + $_pos+= $_len; + $_len = 0; + } + $_plaintext = substr($_iv, $_orig_pos) ^ $_text; + $_iv = substr_replace($_iv, substr($_text, 0, $_i), $_orig_pos, $_i); + } + while ($_len >= '.$block_size.') { + $in = $_iv; + '.$encrypt_block.' + $_iv = $in; + $cb = substr($_text, $_i, '.$block_size.'); + $_plaintext.= $_iv ^ $cb; + $_iv = $cb; + $_len-= '.$block_size.'; + $_i+= '.$block_size.'; + } + if ($_len) { + $in = $_iv; + '.$encrypt_block.' + $_iv = $in; + $_plaintext.= $_iv ^ substr($_text, $_i); + $_iv = substr_replace($_iv, substr($_text, $_i), 0, $_len); + $_pos = $_len; + } + + return $_plaintext; + '; + break; + case CRYPT_MODE_OFB: + $encrypt = $init_encrypt . ' + $_ciphertext = ""; + $_plaintext_len = strlen($_text); + $_xor = $self->encryptIV; + $_buffer = &$self->enbuffer; + + if (strlen($_buffer["xor"])) { + for ($_i = 0; $_i < $_plaintext_len; $_i+= '.$block_size.') { + $_block = substr($_text, $_i, '.$block_size.'); + if (strlen($_block) > strlen($_buffer["xor"])) { + $in = $_xor; + '.$encrypt_block.' + $_xor = $in; + $_buffer["xor"].= $_xor; + } + $_key = $self->_string_shift($_buffer["xor"], '.$block_size.'); + $_ciphertext.= $_block ^ $_key; + } + } else { + for ($_i = 0; $_i < $_plaintext_len; $_i+= '.$block_size.') { + $in = $_xor; + '.$encrypt_block.' + $_xor = $in; + $_ciphertext.= substr($_text, $_i, '.$block_size.') ^ $_xor; + } + $_key = $_xor; + } + if ($self->continuousBuffer) { + $self->encryptIV = $_xor; + if ($_start = $_plaintext_len % '.$block_size.') { + $_buffer["xor"] = substr($_key, $_start) . $_buffer["xor"]; + } + } + return $_ciphertext; + '; + + $decrypt = $init_encrypt . ' + $_plaintext = ""; + $_ciphertext_len = strlen($_text); + $_xor = $self->decryptIV; + $_buffer = &$self->debuffer; + + if (strlen($_buffer["xor"])) { + for ($_i = 0; $_i < $_ciphertext_len; $_i+= '.$block_size.') { + $_block = substr($_text, $_i, '.$block_size.'); + if (strlen($_block) > strlen($_buffer["xor"])) { + $in = $_xor; + '.$encrypt_block.' + $_xor = $in; + $_buffer["xor"].= $_xor; + } + $_key = $self->_string_shift($_buffer["xor"], '.$block_size.'); + $_plaintext.= $_block ^ $_key; + } + } else { + for ($_i = 0; $_i < $_ciphertext_len; $_i+= '.$block_size.') { + $in = $_xor; + '.$encrypt_block.' + $_xor = $in; + $_plaintext.= substr($_text, $_i, '.$block_size.') ^ $_xor; + } + $_key = $_xor; + } + if ($self->continuousBuffer) { + $self->decryptIV = $_xor; + if ($_start = $_ciphertext_len % '.$block_size.') { + $_buffer["xor"] = substr($_key, $_start) . $_buffer["xor"]; + } + } + return $_plaintext; + '; + break; + case CRYPT_MODE_STREAM: + $encrypt = $init_encrypt . ' + $_ciphertext = ""; + '.$encrypt_block.' + return $_ciphertext; + '; + $decrypt = $init_decrypt . ' + $_plaintext = ""; + '.$decrypt_block.' + return $_plaintext; + '; + break; + // case CRYPT_MODE_CBC: + default: + $encrypt = $init_encrypt . ' + $_ciphertext = ""; + $_plaintext_len = strlen($_text); + + $in = $self->encryptIV; + + for ($_i = 0; $_i < $_plaintext_len; $_i+= '.$block_size.') { + $in = substr($_text, $_i, '.$block_size.') ^ $in; + '.$encrypt_block.' + $_ciphertext.= $in; + } + + if ($self->continuousBuffer) { + $self->encryptIV = $in; + } + + return $_ciphertext; + '; + + $decrypt = $init_decrypt . ' + $_plaintext = ""; + $_text = str_pad($_text, strlen($_text) + ('.$block_size.' - strlen($_text) % '.$block_size.') % '.$block_size.', chr(0)); + $_ciphertext_len = strlen($_text); + + $_iv = $self->decryptIV; + + for ($_i = 0; $_i < $_ciphertext_len; $_i+= '.$block_size.') { + $in = $_block = substr($_text, $_i, '.$block_size.'); + '.$decrypt_block.' + $_plaintext.= $in ^ $_iv; + $_iv = $_block; + } + + if ($self->continuousBuffer) { + $self->decryptIV = $_iv; + } + + return $self->_unpad($_plaintext); + '; + break; + } + + // Create the $inline function and return its name as string. Ready to run! + return create_function('$_action, &$self, $_text', $init_crypt . 'if ($_action == "encrypt") { ' . $encrypt . ' } else { ' . $decrypt . ' }'); + } + + /** + * Holds the lambda_functions table (classwide) + * + * Each name of the lambda function, created from + * _setupInlineCrypt() && _createInlineCryptFunction() + * is stored, classwide (!), here for reusing. + * + * The string-based index of $function is a classwide + * unique value representing, at least, the $mode of + * operation (or more... depends of the optimizing level) + * for which $mode the lambda function was created. + * + * @access private + * @return array &$functions + */ + function &_getLambdaFunctions() + { + static $functions = array(); + return $functions; + } + + /** + * Generates a digest from $bytes + * + * @see self::_setupInlineCrypt() + * @access private + * @param $bytes + * @return string + */ + function _hashInlineCryptFunction($bytes) + { + if (!defined('CRYPT_BASE_WHIRLPOOL_AVAILABLE')) { + define('CRYPT_BASE_WHIRLPOOL_AVAILABLE', (bool)(extension_loaded('hash') && in_array('whirlpool', hash_algos()))); + } + + $result = ''; + $hash = $bytes; + + switch (true) { + case CRYPT_BASE_WHIRLPOOL_AVAILABLE: + foreach (str_split($bytes, 64) as $t) { + $hash = hash('whirlpool', $hash, true); + $result .= $t ^ $hash; + } + return $result . hash('whirlpool', $hash, true); + default: + $len = strlen($bytes); + for ($i = 0; $i < $len; $i+=20) { + $t = substr($bytes, $i, 20); + $hash = pack('H*', sha1($hash)); + $result .= $t ^ $hash; + } + return $result . pack('H*', sha1($hash)); + } + } +} diff --git a/plugins/updraftplus/includes/phpseclib/Crypt/Blowfish.php b/plugins/updraftplus/includes/phpseclib/Crypt/Blowfish.php new file mode 100644 index 0000000..e610209 --- /dev/null +++ b/plugins/updraftplus/includes/phpseclib/Crypt/Blowfish.php @@ -0,0 +1,671 @@ + + * setKey('12345678901234567890123456789012'); + * + * $plaintext = str_repeat('a', 1024); + * + * echo $blowfish->decrypt($blowfish->encrypt($plaintext)); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_Blowfish + * @author Jim Wigginton + * @author Hans-Juergen Petrich + * @copyright 2007 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/** + * Include Crypt_Base + * + * Base cipher class + */ +if (!class_exists('Crypt_Base')) { + include_once 'Base.php'; +} + +/**#@+ + * @access public + * @see self::encrypt() + * @see self::decrypt() + */ +/** + * Encrypt / decrypt using the Counter mode. + * + * Set to -1 since that's what Crypt/Random.php uses to index the CTR mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Counter_.28CTR.29 + */ +define('CRYPT_BLOWFISH_MODE_CTR', CRYPT_MODE_CTR); +/** + * Encrypt / decrypt using the Electronic Code Book mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29 + */ +define('CRYPT_BLOWFISH_MODE_ECB', CRYPT_MODE_ECB); +/** + * Encrypt / decrypt using the Code Book Chaining mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29 + */ +define('CRYPT_BLOWFISH_MODE_CBC', CRYPT_MODE_CBC); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher_feedback_.28CFB.29 + */ +define('CRYPT_BLOWFISH_MODE_CFB', CRYPT_MODE_CFB); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Output_feedback_.28OFB.29 + */ +define('CRYPT_BLOWFISH_MODE_OFB', CRYPT_MODE_OFB); +/**#@-*/ + +/** + * Pure-PHP implementation of Blowfish. + * + * @package Crypt_Blowfish + * @author Jim Wigginton + * @author Hans-Juergen Petrich + * @access public + */ +class Crypt_Blowfish extends Crypt_Base +{ + /** + * Block Length of the cipher + * + * @see Crypt_Base::block_size + * @var int + * @access private + */ + var $block_size = 8; + + /** + * The namespace used by the cipher for its constants. + * + * @see Crypt_Base::const_namespace + * @var string + * @access private + */ + var $const_namespace = 'BLOWFISH'; + + /** + * The mcrypt specific name of the cipher + * + * @see Crypt_Base::cipher_name_mcrypt + * @var string + * @access private + */ + var $cipher_name_mcrypt = 'blowfish'; + + /** + * Optimizing value while CFB-encrypting + * + * @see Crypt_Base::cfb_init_len + * @var int + * @access private + */ + var $cfb_init_len = 500; + + /** + * The fixed subkeys boxes ($sbox0 - $sbox3) with 256 entries each + * + * S-Box 0 + * + * @access private + * @var array + */ + var $sbox0 = array( + 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99, + 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, + 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, + 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e, + 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, + 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, + 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677, + 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, + 0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, + 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0, + 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, + 0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, + 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d, + 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, + 0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, + 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09, + 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, + 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, + 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82, + 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, + 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, + 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8, + 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, + 0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, + 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1, + 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, + 0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, + 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af, + 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, + 0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, + 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915, + 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a + ); + + /** + * S-Box 1 + * + * @access private + * @var array + */ + var $sbox1 = array( + 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266, + 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, + 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, + 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1, + 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, + 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff, 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, + 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7, + 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, + 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf, 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, + 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87, + 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, + 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, + 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509, + 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, + 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, + 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960, + 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, + 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, + 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf, + 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, + 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50, 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, + 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281, + 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, + 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128, 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, + 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0, + 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, + 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, + 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061, + 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, + 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, + 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340, + 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7 + ); + + /** + * S-Box 2 + * + * @access private + * @var array + */ + var $sbox2 = array( + 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068, + 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, + 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, + 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, + 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, + 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, + 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb, + 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, + 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, + 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc, + 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, + 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, + 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728, + 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, + 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, + 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b, + 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, + 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, + 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, + 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, + 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, + 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61, + 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, + 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, + 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633, + 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, + 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, + 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62, + 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, + 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, + 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c, + 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0 + ); + + /** + * S-Box 3 + * + * @access private + * @var array + */ + var $sbox3 = array( + 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe, + 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, + 0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, + 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22, + 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, + 0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, + 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51, + 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, + 0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, + 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd, + 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, + 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, + 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32, + 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, + 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, + 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47, + 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, + 0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, + 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd, + 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, + 0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, + 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525, + 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, + 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, + 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d, + 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, + 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, + 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a, + 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, + 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, + 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9, + 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6 + ); + + /** + * P-Array consists of 18 32-bit subkeys + * + * @var array + * @access private + */ + var $parray = array( + 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0, + 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, + 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, 0x9216d5d9, 0x8979fb1b + ); + + /** + * The BCTX-working Array + * + * Holds the expanded key [p] and the key-depended s-boxes [sb] + * + * @var array + * @access private + */ + var $bctx; + + /** + * Holds the last used key + * + * @var array + * @access private + */ + var $kl; + + /** + * The Key Length (in bytes) + * + * @see Crypt_Base::setKeyLength() + * @var int + * @access private + * @internal The max value is 256 / 8 = 32, the min value is 128 / 8 = 16. Exists in conjunction with $Nk + * because the encryption / decryption / key schedule creation requires this number and not $key_length. We could + * derive this from $key_length or vice versa, but that'd mean we'd have to do multiple shift operations, so in lieu + * of that, we'll just precompute it once. + */ + var $key_length = 16; + + /** + * Sets the key length. + * + * Key lengths can be between 32 and 448 bits. + * + * @access public + * @param int $length + */ + function setKeyLength($length) + { + if ($length < 32) { + $this->key_length = 7; + } elseif ($length > 448) { + $this->key_length = 56; + } else { + $this->key_length = $length >> 3; + } + + parent::setKeyLength($length); + } + + /** + * Test for engine validity + * + * This is mainly just a wrapper to set things up for Crypt_Base::isValidEngine() + * + * @see Crypt_Base::isValidEngine() + * @param int $engine + * @access public + * @return bool + */ + function isValidEngine($engine) + { + if ($engine == CRYPT_ENGINE_OPENSSL) { + if ($this->key_length != 16) { + return false; + } + $this->cipher_name_openssl_ecb = 'bf-ecb'; + $this->cipher_name_openssl = 'bf-' . $this->_openssl_translate_mode(); + } + + return parent::isValidEngine($engine); + } + + /** + * Setup the key (expansion) + * + * @see Crypt_Base::_setupKey() + * @access private + */ + function _setupKey() + { + if (isset($this->kl['key']) && $this->key === $this->kl['key']) { + // already expanded + return; + } + $this->kl = array('key' => $this->key); + + /* key-expanding p[] and S-Box building sb[] */ + $this->bctx = array( + 'p' => array(), + 'sb' => array( + $this->sbox0, + $this->sbox1, + $this->sbox2, + $this->sbox3 + ) + ); + + // unpack binary string in unsigned chars + $key = array_values(unpack('C*', $this->key)); + $keyl = count($key); + for ($j = 0, $i = 0; $i < 18; ++$i) { + // xor P1 with the first 32-bits of the key, xor P2 with the second 32-bits ... + for ($data = 0, $k = 0; $k < 4; ++$k) { + $data = ($data << 8) | $key[$j]; + if (++$j >= $keyl) { + $j = 0; + } + } + $this->bctx['p'][] = $this->parray[$i] ^ $data; + } + + // encrypt the zero-string, replace P1 and P2 with the encrypted data, + // encrypt P3 and P4 with the new P1 and P2, do it with all P-array and subkeys + $data = "\0\0\0\0\0\0\0\0"; + for ($i = 0; $i < 18; $i += 2) { + list($l, $r) = array_values(unpack('N*', $data = $this->_encryptBlock($data))); + $this->bctx['p'][$i ] = $l; + $this->bctx['p'][$i + 1] = $r; + } + for ($i = 0; $i < 4; ++$i) { + for ($j = 0; $j < 256; $j += 2) { + list($l, $r) = array_values(unpack('N*', $data = $this->_encryptBlock($data))); + $this->bctx['sb'][$i][$j ] = $l; + $this->bctx['sb'][$i][$j + 1] = $r; + } + } + } + + /** + * Encrypts a block + * + * @access private + * @param string $in + * @return string + */ + function _encryptBlock($in) + { + $p = $this->bctx["p"]; + // extract($this->bctx["sb"], EXTR_PREFIX_ALL, "sb"); // slower + $sb_0 = $this->bctx["sb"][0]; + $sb_1 = $this->bctx["sb"][1]; + $sb_2 = $this->bctx["sb"][2]; + $sb_3 = $this->bctx["sb"][3]; + + $in = unpack("N*", $in); + $l = $in[1]; + $r = $in[2]; + + for ($i = 0; $i < 16; $i+= 2) { + $l^= $p[$i]; + $r^= $this->safe_intval(($this->safe_intval($sb_0[$l >> 24 & 0xff] + $sb_1[$l >> 16 & 0xff]) ^ + $sb_2[$l >> 8 & 0xff]) + + $sb_3[$l & 0xff]); + + $r^= $p[$i + 1]; + $l^= $this->safe_intval(($this->safe_intval($sb_0[$r >> 24 & 0xff] + $sb_1[$r >> 16 & 0xff]) ^ + $sb_2[$r >> 8 & 0xff]) + + $sb_3[$r & 0xff]); + } + return pack("N*", $r ^ $p[17], $l ^ $p[16]); + } + + /** + * Decrypts a block + * + * @access private + * @param string $in + * @return string + */ + function _decryptBlock($in) + { + $p = $this->bctx["p"]; + $sb_0 = $this->bctx["sb"][0]; + $sb_1 = $this->bctx["sb"][1]; + $sb_2 = $this->bctx["sb"][2]; + $sb_3 = $this->bctx["sb"][3]; + + $in = unpack("N*", $in); + $l = $in[1]; + $r = $in[2]; + + for ($i = 17; $i > 2; $i-= 2) { + $l^= $p[$i]; + $r^= $this->safe_intval(($this->safe_intval($sb_0[$l >> 24 & 0xff] + $sb_1[$l >> 16 & 0xff]) ^ + $sb_2[$l >> 8 & 0xff]) + + $sb_3[$l & 0xff]); + + $r^= $p[$i - 1]; + $l^= $this->safe_intval(($this->safe_intval($sb_0[$r >> 24 & 0xff] + $sb_1[$r >> 16 & 0xff]) ^ + $sb_2[$r >> 8 & 0xff]) + + $sb_3[$r & 0xff]); + } + return pack("N*", $r ^ $p[0], $l ^ $p[1]); + } + + /** + * Setup the performance-optimized function for de/encrypt() + * + * @see Crypt_Base::_setupInlineCrypt() + * @access private + */ + function _setupInlineCrypt() + { + $lambda_functions =& Crypt_Blowfish::_getLambdaFunctions(); + + // We create max. 10 hi-optimized code for memory reason. Means: For each $key one ultra fast inline-crypt function. + // (Currently, for Crypt_Blowfish, one generated $lambda_function cost on php5.5@32bit ~100kb unfreeable mem and ~180kb on php5.5@64bit) + // After that, we'll still create very fast optimized code but not the hi-ultimative code, for each $mode one. + $gen_hi_opt_code = (bool)(count($lambda_functions) < 10); + + // Generation of a unique hash for our generated code + $code_hash = "Crypt_Blowfish, {$this->mode}"; + if ($gen_hi_opt_code) { + $code_hash = str_pad($code_hash, 32) . $this->_hashInlineCryptFunction($this->key); + } + + // on 32-bit linux systems with PHP < 5.3 float to integer conversion is bad + switch (true) { + case defined('PHP_INT_SIZE') && PHP_INT_SIZE == 8: + case version_compare(PHP_VERSION, '5.3.0') >= 0: + case (PHP_OS & "\xDF\xDF\xDF") === 'WIN': + $safeint = '%s'; + break; + default: + $safeint = '(is_int($temp = %s) ? $temp : (fmod($temp, 0x80000000) & 0x7FFFFFFF) | '; + $safeint.= '((fmod(floor($temp / 0x80000000), 2) & 1) << 31))'; + } + + if (!isset($lambda_functions[$code_hash])) { + switch (true) { + case $gen_hi_opt_code: + $p = $this->bctx['p']; + $init_crypt = ' + static $sb_0, $sb_1, $sb_2, $sb_3; + if (!$sb_0) { + $sb_0 = $self->bctx["sb"][0]; + $sb_1 = $self->bctx["sb"][1]; + $sb_2 = $self->bctx["sb"][2]; + $sb_3 = $self->bctx["sb"][3]; + } + '; + break; + default: + $p = array(); + for ($i = 0; $i < 18; ++$i) { + $p[] = '$p_' . $i; + } + $init_crypt = ' + list($sb_0, $sb_1, $sb_2, $sb_3) = $self->bctx["sb"]; + list(' . implode(',', $p) . ') = $self->bctx["p"]; + + '; + } + + // Generating encrypt code: + $encrypt_block = ' + $in = unpack("N*", $in); + $l = $in[1]; + $r = $in[2]; + '; + for ($i = 0; $i < 16; $i+= 2) { + $encrypt_block.= ' + $l^= ' . $p[$i] . '; + $r^= ' . sprintf($safeint, '(' . sprintf($safeint, '$sb_0[$l >> 24 & 0xff] + $sb_1[$l >> 16 & 0xff]') . ' ^ + $sb_2[$l >> 8 & 0xff]) + + $sb_3[$l & 0xff]') . '; + + $r^= ' . $p[$i + 1] . '; + $l^= ' . sprintf($safeint, '(' . sprintf($safeint, '$sb_0[$r >> 24 & 0xff] + $sb_1[$r >> 16 & 0xff]') . ' ^ + $sb_2[$r >> 8 & 0xff]) + + $sb_3[$r & 0xff]') . '; + '; + } + $encrypt_block.= ' + $in = pack("N*", + $r ^ ' . $p[17] . ', + $l ^ ' . $p[16] . ' + ); + '; + + // Generating decrypt code: + $decrypt_block = ' + $in = unpack("N*", $in); + $l = $in[1]; + $r = $in[2]; + '; + + for ($i = 17; $i > 2; $i-= 2) { + $decrypt_block.= ' + $l^= ' . $p[$i] . '; + $r^= ' . sprintf($safeint, '(' . sprintf($safeint, '$sb_0[$l >> 24 & 0xff] + $sb_1[$l >> 16 & 0xff]') . ' ^ + $sb_2[$l >> 8 & 0xff]) + + $sb_3[$l & 0xff]') . '; + + $r^= ' . $p[$i - 1] . '; + $l^= ' . sprintf($safeint, '(' . sprintf($safeint, '$sb_0[$r >> 24 & 0xff] + $sb_1[$r >> 16 & 0xff]') . ' ^ + $sb_2[$r >> 8 & 0xff]) + + $sb_3[$r & 0xff]') . '; + '; + } + + $decrypt_block.= ' + $in = pack("N*", + $r ^ ' . $p[0] . ', + $l ^ ' . $p[1] . ' + ); + '; + + $lambda_functions[$code_hash] = $this->_createInlineCryptFunction( + array( + 'init_crypt' => $init_crypt, + 'init_encrypt' => '', + 'init_decrypt' => '', + 'encrypt_block' => $encrypt_block, + 'decrypt_block' => $decrypt_block + ) + ); + } + $this->inline_crypt = $lambda_functions[$code_hash]; + } + + /** + * Convert float to int + * + * On 32-bit Linux installs running PHP < 5.3 converting floats to ints doesn't always work + * + * @access private + * @param string $x + * @return int + */ + function safe_intval($x) + { + // PHP 5.3, per http://php.net/releases/5_3_0.php, introduced "more consistent float rounding" + // PHP_OS & "\xDF\xDF\xDF" == strtoupper(substr(PHP_OS, 0, 3)), but a lot faster + if (is_int($x) || version_compare(PHP_VERSION, '5.3.0') >= 0 || (PHP_OS & "\xDF\xDF\xDF") === 'WIN') { + return $x; + } + return (fmod($x, 0x80000000) & 0x7FFFFFFF) | + ((fmod(floor($x / 0x80000000), 2) & 1) << 31); + } +} diff --git a/plugins/updraftplus/includes/phpseclib/Crypt/DES.php b/plugins/updraftplus/includes/phpseclib/Crypt/DES.php new file mode 100644 index 0000000..4c57401 --- /dev/null +++ b/plugins/updraftplus/includes/phpseclib/Crypt/DES.php @@ -0,0 +1,1516 @@ + + * setKey('abcdefgh'); + * + * $size = 10 * 1024; + * $plaintext = ''; + * for ($i = 0; $i < $size; $i++) { + * $plaintext.= 'a'; + * } + * + * echo $des->decrypt($des->encrypt($plaintext)); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_DES + * @author Jim Wigginton + * @copyright 2007 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/** + * Include Crypt_Base + * + * Base cipher class + */ +if (!class_exists('Crypt_Base')) { + include_once 'Base.php'; +} + +/**#@+ + * @access private + * @see self::_setupKey() + * @see self::_processBlock() + */ +/** + * Contains $keys[CRYPT_DES_ENCRYPT] + */ +define('CRYPT_DES_ENCRYPT', 0); +/** + * Contains $keys[CRYPT_DES_DECRYPT] + */ +define('CRYPT_DES_DECRYPT', 1); +/**#@-*/ + +/**#@+ + * @access public + * @see self::encrypt() + * @see self::decrypt() + */ +/** + * Encrypt / decrypt using the Counter mode. + * + * Set to -1 since that's what Crypt/Random.php uses to index the CTR mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Counter_.28CTR.29 + */ +define('CRYPT_DES_MODE_CTR', CRYPT_MODE_CTR); +/** + * Encrypt / decrypt using the Electronic Code Book mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29 + */ +define('CRYPT_DES_MODE_ECB', CRYPT_MODE_ECB); +/** + * Encrypt / decrypt using the Code Book Chaining mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29 + */ +define('CRYPT_DES_MODE_CBC', CRYPT_MODE_CBC); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher_feedback_.28CFB.29 + */ +define('CRYPT_DES_MODE_CFB', CRYPT_MODE_CFB); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Output_feedback_.28OFB.29 + */ +define('CRYPT_DES_MODE_OFB', CRYPT_MODE_OFB); +/**#@-*/ + +/** + * Pure-PHP implementation of DES. + * + * @package Crypt_DES + * @author Jim Wigginton + * @access public + */ +class Crypt_DES extends Crypt_Base +{ + /** + * Block Length of the cipher + * + * @see Crypt_Base::block_size + * @var int + * @access private + */ + var $block_size = 8; + + /** + * Key Length (in bytes) + * + * @see Crypt_Base::setKeyLength() + * @var int + * @access private + */ + var $key_length = 8; + + /** + * The namespace used by the cipher for its constants. + * + * @see Crypt_Base::const_namespace + * @var string + * @access private + */ + var $const_namespace = 'DES'; + + /** + * The mcrypt specific name of the cipher + * + * @see Crypt_Base::cipher_name_mcrypt + * @var string + * @access private + */ + var $cipher_name_mcrypt = 'des'; + + /** + * The OpenSSL names of the cipher / modes + * + * @see Crypt_Base::openssl_mode_names + * @var array + * @access private + */ + var $openssl_mode_names = array( + CRYPT_MODE_ECB => 'des-ecb', + CRYPT_MODE_CBC => 'des-cbc', + CRYPT_MODE_CFB => 'des-cfb', + CRYPT_MODE_OFB => 'des-ofb' + // CRYPT_MODE_CTR is undefined for DES + ); + + /** + * Optimizing value while CFB-encrypting + * + * @see Crypt_Base::cfb_init_len + * @var int + * @access private + */ + var $cfb_init_len = 500; + + /** + * Switch for DES/3DES encryption + * + * Used only if $engine == CRYPT_DES_MODE_INTERNAL + * + * @see self::_setupKey() + * @see self::_processBlock() + * @var int + * @access private + */ + var $des_rounds = 1; + + /** + * max possible size of $key + * + * @see self::setKey() + * @var string + * @access private + */ + var $key_length_max = 8; + + /** + * The Key Schedule + * + * @see self::_setupKey() + * @var array + * @access private + */ + var $keys; + + /** + * Shuffle table. + * + * For each byte value index, the entry holds an 8-byte string + * with each byte containing all bits in the same state as the + * corresponding bit in the index value. + * + * @see self::_processBlock() + * @see self::_setupKey() + * @var array + * @access private + */ + var $shuffle = array( + "\x00\x00\x00\x00\x00\x00\x00\x00", "\x00\x00\x00\x00\x00\x00\x00\xFF", + "\x00\x00\x00\x00\x00\x00\xFF\x00", "\x00\x00\x00\x00\x00\x00\xFF\xFF", + "\x00\x00\x00\x00\x00\xFF\x00\x00", "\x00\x00\x00\x00\x00\xFF\x00\xFF", + "\x00\x00\x00\x00\x00\xFF\xFF\x00", "\x00\x00\x00\x00\x00\xFF\xFF\xFF", + "\x00\x00\x00\x00\xFF\x00\x00\x00", "\x00\x00\x00\x00\xFF\x00\x00\xFF", + "\x00\x00\x00\x00\xFF\x00\xFF\x00", "\x00\x00\x00\x00\xFF\x00\xFF\xFF", + "\x00\x00\x00\x00\xFF\xFF\x00\x00", "\x00\x00\x00\x00\xFF\xFF\x00\xFF", + "\x00\x00\x00\x00\xFF\xFF\xFF\x00", "\x00\x00\x00\x00\xFF\xFF\xFF\xFF", + "\x00\x00\x00\xFF\x00\x00\x00\x00", "\x00\x00\x00\xFF\x00\x00\x00\xFF", + "\x00\x00\x00\xFF\x00\x00\xFF\x00", "\x00\x00\x00\xFF\x00\x00\xFF\xFF", + "\x00\x00\x00\xFF\x00\xFF\x00\x00", "\x00\x00\x00\xFF\x00\xFF\x00\xFF", + "\x00\x00\x00\xFF\x00\xFF\xFF\x00", "\x00\x00\x00\xFF\x00\xFF\xFF\xFF", + "\x00\x00\x00\xFF\xFF\x00\x00\x00", "\x00\x00\x00\xFF\xFF\x00\x00\xFF", + "\x00\x00\x00\xFF\xFF\x00\xFF\x00", "\x00\x00\x00\xFF\xFF\x00\xFF\xFF", + "\x00\x00\x00\xFF\xFF\xFF\x00\x00", "\x00\x00\x00\xFF\xFF\xFF\x00\xFF", + "\x00\x00\x00\xFF\xFF\xFF\xFF\x00", "\x00\x00\x00\xFF\xFF\xFF\xFF\xFF", + "\x00\x00\xFF\x00\x00\x00\x00\x00", "\x00\x00\xFF\x00\x00\x00\x00\xFF", + "\x00\x00\xFF\x00\x00\x00\xFF\x00", "\x00\x00\xFF\x00\x00\x00\xFF\xFF", + "\x00\x00\xFF\x00\x00\xFF\x00\x00", "\x00\x00\xFF\x00\x00\xFF\x00\xFF", + "\x00\x00\xFF\x00\x00\xFF\xFF\x00", "\x00\x00\xFF\x00\x00\xFF\xFF\xFF", + "\x00\x00\xFF\x00\xFF\x00\x00\x00", "\x00\x00\xFF\x00\xFF\x00\x00\xFF", + "\x00\x00\xFF\x00\xFF\x00\xFF\x00", "\x00\x00\xFF\x00\xFF\x00\xFF\xFF", + "\x00\x00\xFF\x00\xFF\xFF\x00\x00", "\x00\x00\xFF\x00\xFF\xFF\x00\xFF", + "\x00\x00\xFF\x00\xFF\xFF\xFF\x00", "\x00\x00\xFF\x00\xFF\xFF\xFF\xFF", + "\x00\x00\xFF\xFF\x00\x00\x00\x00", "\x00\x00\xFF\xFF\x00\x00\x00\xFF", + "\x00\x00\xFF\xFF\x00\x00\xFF\x00", "\x00\x00\xFF\xFF\x00\x00\xFF\xFF", + "\x00\x00\xFF\xFF\x00\xFF\x00\x00", "\x00\x00\xFF\xFF\x00\xFF\x00\xFF", + "\x00\x00\xFF\xFF\x00\xFF\xFF\x00", "\x00\x00\xFF\xFF\x00\xFF\xFF\xFF", + "\x00\x00\xFF\xFF\xFF\x00\x00\x00", "\x00\x00\xFF\xFF\xFF\x00\x00\xFF", + "\x00\x00\xFF\xFF\xFF\x00\xFF\x00", "\x00\x00\xFF\xFF\xFF\x00\xFF\xFF", + "\x00\x00\xFF\xFF\xFF\xFF\x00\x00", "\x00\x00\xFF\xFF\xFF\xFF\x00\xFF", + "\x00\x00\xFF\xFF\xFF\xFF\xFF\x00", "\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF", + "\x00\xFF\x00\x00\x00\x00\x00\x00", "\x00\xFF\x00\x00\x00\x00\x00\xFF", + "\x00\xFF\x00\x00\x00\x00\xFF\x00", "\x00\xFF\x00\x00\x00\x00\xFF\xFF", + "\x00\xFF\x00\x00\x00\xFF\x00\x00", "\x00\xFF\x00\x00\x00\xFF\x00\xFF", + "\x00\xFF\x00\x00\x00\xFF\xFF\x00", "\x00\xFF\x00\x00\x00\xFF\xFF\xFF", + "\x00\xFF\x00\x00\xFF\x00\x00\x00", "\x00\xFF\x00\x00\xFF\x00\x00\xFF", + "\x00\xFF\x00\x00\xFF\x00\xFF\x00", "\x00\xFF\x00\x00\xFF\x00\xFF\xFF", + "\x00\xFF\x00\x00\xFF\xFF\x00\x00", "\x00\xFF\x00\x00\xFF\xFF\x00\xFF", + "\x00\xFF\x00\x00\xFF\xFF\xFF\x00", "\x00\xFF\x00\x00\xFF\xFF\xFF\xFF", + "\x00\xFF\x00\xFF\x00\x00\x00\x00", "\x00\xFF\x00\xFF\x00\x00\x00\xFF", + "\x00\xFF\x00\xFF\x00\x00\xFF\x00", "\x00\xFF\x00\xFF\x00\x00\xFF\xFF", + "\x00\xFF\x00\xFF\x00\xFF\x00\x00", "\x00\xFF\x00\xFF\x00\xFF\x00\xFF", + "\x00\xFF\x00\xFF\x00\xFF\xFF\x00", "\x00\xFF\x00\xFF\x00\xFF\xFF\xFF", + "\x00\xFF\x00\xFF\xFF\x00\x00\x00", "\x00\xFF\x00\xFF\xFF\x00\x00\xFF", + "\x00\xFF\x00\xFF\xFF\x00\xFF\x00", "\x00\xFF\x00\xFF\xFF\x00\xFF\xFF", + "\x00\xFF\x00\xFF\xFF\xFF\x00\x00", "\x00\xFF\x00\xFF\xFF\xFF\x00\xFF", + "\x00\xFF\x00\xFF\xFF\xFF\xFF\x00", "\x00\xFF\x00\xFF\xFF\xFF\xFF\xFF", + "\x00\xFF\xFF\x00\x00\x00\x00\x00", "\x00\xFF\xFF\x00\x00\x00\x00\xFF", + "\x00\xFF\xFF\x00\x00\x00\xFF\x00", "\x00\xFF\xFF\x00\x00\x00\xFF\xFF", + "\x00\xFF\xFF\x00\x00\xFF\x00\x00", "\x00\xFF\xFF\x00\x00\xFF\x00\xFF", + "\x00\xFF\xFF\x00\x00\xFF\xFF\x00", "\x00\xFF\xFF\x00\x00\xFF\xFF\xFF", + "\x00\xFF\xFF\x00\xFF\x00\x00\x00", "\x00\xFF\xFF\x00\xFF\x00\x00\xFF", + "\x00\xFF\xFF\x00\xFF\x00\xFF\x00", "\x00\xFF\xFF\x00\xFF\x00\xFF\xFF", + "\x00\xFF\xFF\x00\xFF\xFF\x00\x00", "\x00\xFF\xFF\x00\xFF\xFF\x00\xFF", + "\x00\xFF\xFF\x00\xFF\xFF\xFF\x00", "\x00\xFF\xFF\x00\xFF\xFF\xFF\xFF", + "\x00\xFF\xFF\xFF\x00\x00\x00\x00", "\x00\xFF\xFF\xFF\x00\x00\x00\xFF", + "\x00\xFF\xFF\xFF\x00\x00\xFF\x00", "\x00\xFF\xFF\xFF\x00\x00\xFF\xFF", + "\x00\xFF\xFF\xFF\x00\xFF\x00\x00", "\x00\xFF\xFF\xFF\x00\xFF\x00\xFF", + "\x00\xFF\xFF\xFF\x00\xFF\xFF\x00", "\x00\xFF\xFF\xFF\x00\xFF\xFF\xFF", + "\x00\xFF\xFF\xFF\xFF\x00\x00\x00", "\x00\xFF\xFF\xFF\xFF\x00\x00\xFF", + "\x00\xFF\xFF\xFF\xFF\x00\xFF\x00", "\x00\xFF\xFF\xFF\xFF\x00\xFF\xFF", + "\x00\xFF\xFF\xFF\xFF\xFF\x00\x00", "\x00\xFF\xFF\xFF\xFF\xFF\x00\xFF", + "\x00\xFF\xFF\xFF\xFF\xFF\xFF\x00", "\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF", + "\xFF\x00\x00\x00\x00\x00\x00\x00", "\xFF\x00\x00\x00\x00\x00\x00\xFF", + "\xFF\x00\x00\x00\x00\x00\xFF\x00", "\xFF\x00\x00\x00\x00\x00\xFF\xFF", + "\xFF\x00\x00\x00\x00\xFF\x00\x00", "\xFF\x00\x00\x00\x00\xFF\x00\xFF", + "\xFF\x00\x00\x00\x00\xFF\xFF\x00", "\xFF\x00\x00\x00\x00\xFF\xFF\xFF", + "\xFF\x00\x00\x00\xFF\x00\x00\x00", "\xFF\x00\x00\x00\xFF\x00\x00\xFF", + "\xFF\x00\x00\x00\xFF\x00\xFF\x00", "\xFF\x00\x00\x00\xFF\x00\xFF\xFF", + "\xFF\x00\x00\x00\xFF\xFF\x00\x00", "\xFF\x00\x00\x00\xFF\xFF\x00\xFF", + "\xFF\x00\x00\x00\xFF\xFF\xFF\x00", "\xFF\x00\x00\x00\xFF\xFF\xFF\xFF", + "\xFF\x00\x00\xFF\x00\x00\x00\x00", "\xFF\x00\x00\xFF\x00\x00\x00\xFF", + "\xFF\x00\x00\xFF\x00\x00\xFF\x00", "\xFF\x00\x00\xFF\x00\x00\xFF\xFF", + "\xFF\x00\x00\xFF\x00\xFF\x00\x00", "\xFF\x00\x00\xFF\x00\xFF\x00\xFF", + "\xFF\x00\x00\xFF\x00\xFF\xFF\x00", "\xFF\x00\x00\xFF\x00\xFF\xFF\xFF", + "\xFF\x00\x00\xFF\xFF\x00\x00\x00", "\xFF\x00\x00\xFF\xFF\x00\x00\xFF", + "\xFF\x00\x00\xFF\xFF\x00\xFF\x00", "\xFF\x00\x00\xFF\xFF\x00\xFF\xFF", + "\xFF\x00\x00\xFF\xFF\xFF\x00\x00", "\xFF\x00\x00\xFF\xFF\xFF\x00\xFF", + "\xFF\x00\x00\xFF\xFF\xFF\xFF\x00", "\xFF\x00\x00\xFF\xFF\xFF\xFF\xFF", + "\xFF\x00\xFF\x00\x00\x00\x00\x00", "\xFF\x00\xFF\x00\x00\x00\x00\xFF", + "\xFF\x00\xFF\x00\x00\x00\xFF\x00", "\xFF\x00\xFF\x00\x00\x00\xFF\xFF", + "\xFF\x00\xFF\x00\x00\xFF\x00\x00", "\xFF\x00\xFF\x00\x00\xFF\x00\xFF", + "\xFF\x00\xFF\x00\x00\xFF\xFF\x00", "\xFF\x00\xFF\x00\x00\xFF\xFF\xFF", + "\xFF\x00\xFF\x00\xFF\x00\x00\x00", "\xFF\x00\xFF\x00\xFF\x00\x00\xFF", + "\xFF\x00\xFF\x00\xFF\x00\xFF\x00", "\xFF\x00\xFF\x00\xFF\x00\xFF\xFF", + "\xFF\x00\xFF\x00\xFF\xFF\x00\x00", "\xFF\x00\xFF\x00\xFF\xFF\x00\xFF", + "\xFF\x00\xFF\x00\xFF\xFF\xFF\x00", "\xFF\x00\xFF\x00\xFF\xFF\xFF\xFF", + "\xFF\x00\xFF\xFF\x00\x00\x00\x00", "\xFF\x00\xFF\xFF\x00\x00\x00\xFF", + "\xFF\x00\xFF\xFF\x00\x00\xFF\x00", "\xFF\x00\xFF\xFF\x00\x00\xFF\xFF", + "\xFF\x00\xFF\xFF\x00\xFF\x00\x00", "\xFF\x00\xFF\xFF\x00\xFF\x00\xFF", + "\xFF\x00\xFF\xFF\x00\xFF\xFF\x00", "\xFF\x00\xFF\xFF\x00\xFF\xFF\xFF", + "\xFF\x00\xFF\xFF\xFF\x00\x00\x00", "\xFF\x00\xFF\xFF\xFF\x00\x00\xFF", + "\xFF\x00\xFF\xFF\xFF\x00\xFF\x00", "\xFF\x00\xFF\xFF\xFF\x00\xFF\xFF", + "\xFF\x00\xFF\xFF\xFF\xFF\x00\x00", "\xFF\x00\xFF\xFF\xFF\xFF\x00\xFF", + "\xFF\x00\xFF\xFF\xFF\xFF\xFF\x00", "\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF", + "\xFF\xFF\x00\x00\x00\x00\x00\x00", "\xFF\xFF\x00\x00\x00\x00\x00\xFF", + "\xFF\xFF\x00\x00\x00\x00\xFF\x00", "\xFF\xFF\x00\x00\x00\x00\xFF\xFF", + "\xFF\xFF\x00\x00\x00\xFF\x00\x00", "\xFF\xFF\x00\x00\x00\xFF\x00\xFF", + "\xFF\xFF\x00\x00\x00\xFF\xFF\x00", "\xFF\xFF\x00\x00\x00\xFF\xFF\xFF", + "\xFF\xFF\x00\x00\xFF\x00\x00\x00", "\xFF\xFF\x00\x00\xFF\x00\x00\xFF", + "\xFF\xFF\x00\x00\xFF\x00\xFF\x00", "\xFF\xFF\x00\x00\xFF\x00\xFF\xFF", + "\xFF\xFF\x00\x00\xFF\xFF\x00\x00", "\xFF\xFF\x00\x00\xFF\xFF\x00\xFF", + "\xFF\xFF\x00\x00\xFF\xFF\xFF\x00", "\xFF\xFF\x00\x00\xFF\xFF\xFF\xFF", + "\xFF\xFF\x00\xFF\x00\x00\x00\x00", "\xFF\xFF\x00\xFF\x00\x00\x00\xFF", + "\xFF\xFF\x00\xFF\x00\x00\xFF\x00", "\xFF\xFF\x00\xFF\x00\x00\xFF\xFF", + "\xFF\xFF\x00\xFF\x00\xFF\x00\x00", "\xFF\xFF\x00\xFF\x00\xFF\x00\xFF", + "\xFF\xFF\x00\xFF\x00\xFF\xFF\x00", "\xFF\xFF\x00\xFF\x00\xFF\xFF\xFF", + "\xFF\xFF\x00\xFF\xFF\x00\x00\x00", "\xFF\xFF\x00\xFF\xFF\x00\x00\xFF", + "\xFF\xFF\x00\xFF\xFF\x00\xFF\x00", "\xFF\xFF\x00\xFF\xFF\x00\xFF\xFF", + "\xFF\xFF\x00\xFF\xFF\xFF\x00\x00", "\xFF\xFF\x00\xFF\xFF\xFF\x00\xFF", + "\xFF\xFF\x00\xFF\xFF\xFF\xFF\x00", "\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF", + "\xFF\xFF\xFF\x00\x00\x00\x00\x00", "\xFF\xFF\xFF\x00\x00\x00\x00\xFF", + "\xFF\xFF\xFF\x00\x00\x00\xFF\x00", "\xFF\xFF\xFF\x00\x00\x00\xFF\xFF", + "\xFF\xFF\xFF\x00\x00\xFF\x00\x00", "\xFF\xFF\xFF\x00\x00\xFF\x00\xFF", + "\xFF\xFF\xFF\x00\x00\xFF\xFF\x00", "\xFF\xFF\xFF\x00\x00\xFF\xFF\xFF", + "\xFF\xFF\xFF\x00\xFF\x00\x00\x00", "\xFF\xFF\xFF\x00\xFF\x00\x00\xFF", + "\xFF\xFF\xFF\x00\xFF\x00\xFF\x00", "\xFF\xFF\xFF\x00\xFF\x00\xFF\xFF", + "\xFF\xFF\xFF\x00\xFF\xFF\x00\x00", "\xFF\xFF\xFF\x00\xFF\xFF\x00\xFF", + "\xFF\xFF\xFF\x00\xFF\xFF\xFF\x00", "\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF", + "\xFF\xFF\xFF\xFF\x00\x00\x00\x00", "\xFF\xFF\xFF\xFF\x00\x00\x00\xFF", + "\xFF\xFF\xFF\xFF\x00\x00\xFF\x00", "\xFF\xFF\xFF\xFF\x00\x00\xFF\xFF", + "\xFF\xFF\xFF\xFF\x00\xFF\x00\x00", "\xFF\xFF\xFF\xFF\x00\xFF\x00\xFF", + "\xFF\xFF\xFF\xFF\x00\xFF\xFF\x00", "\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF", + "\xFF\xFF\xFF\xFF\xFF\x00\x00\x00", "\xFF\xFF\xFF\xFF\xFF\x00\x00\xFF", + "\xFF\xFF\xFF\xFF\xFF\x00\xFF\x00", "\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF", + "\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00", "\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF", + "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00", "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" + ); + + /** + * IP mapping helper table. + * + * Indexing this table with each source byte performs the initial bit permutation. + * + * @var array + * @access private + */ + var $ipmap = array( + 0x00, 0x10, 0x01, 0x11, 0x20, 0x30, 0x21, 0x31, + 0x02, 0x12, 0x03, 0x13, 0x22, 0x32, 0x23, 0x33, + 0x40, 0x50, 0x41, 0x51, 0x60, 0x70, 0x61, 0x71, + 0x42, 0x52, 0x43, 0x53, 0x62, 0x72, 0x63, 0x73, + 0x04, 0x14, 0x05, 0x15, 0x24, 0x34, 0x25, 0x35, + 0x06, 0x16, 0x07, 0x17, 0x26, 0x36, 0x27, 0x37, + 0x44, 0x54, 0x45, 0x55, 0x64, 0x74, 0x65, 0x75, + 0x46, 0x56, 0x47, 0x57, 0x66, 0x76, 0x67, 0x77, + 0x80, 0x90, 0x81, 0x91, 0xA0, 0xB0, 0xA1, 0xB1, + 0x82, 0x92, 0x83, 0x93, 0xA2, 0xB2, 0xA3, 0xB3, + 0xC0, 0xD0, 0xC1, 0xD1, 0xE0, 0xF0, 0xE1, 0xF1, + 0xC2, 0xD2, 0xC3, 0xD3, 0xE2, 0xF2, 0xE3, 0xF3, + 0x84, 0x94, 0x85, 0x95, 0xA4, 0xB4, 0xA5, 0xB5, + 0x86, 0x96, 0x87, 0x97, 0xA6, 0xB6, 0xA7, 0xB7, + 0xC4, 0xD4, 0xC5, 0xD5, 0xE4, 0xF4, 0xE5, 0xF5, + 0xC6, 0xD6, 0xC7, 0xD7, 0xE6, 0xF6, 0xE7, 0xF7, + 0x08, 0x18, 0x09, 0x19, 0x28, 0x38, 0x29, 0x39, + 0x0A, 0x1A, 0x0B, 0x1B, 0x2A, 0x3A, 0x2B, 0x3B, + 0x48, 0x58, 0x49, 0x59, 0x68, 0x78, 0x69, 0x79, + 0x4A, 0x5A, 0x4B, 0x5B, 0x6A, 0x7A, 0x6B, 0x7B, + 0x0C, 0x1C, 0x0D, 0x1D, 0x2C, 0x3C, 0x2D, 0x3D, + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4C, 0x5C, 0x4D, 0x5D, 0x6C, 0x7C, 0x6D, 0x7D, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x88, 0x98, 0x89, 0x99, 0xA8, 0xB8, 0xA9, 0xB9, + 0x8A, 0x9A, 0x8B, 0x9B, 0xAA, 0xBA, 0xAB, 0xBB, + 0xC8, 0xD8, 0xC9, 0xD9, 0xE8, 0xF8, 0xE9, 0xF9, + 0xCA, 0xDA, 0xCB, 0xDB, 0xEA, 0xFA, 0xEB, 0xFB, + 0x8C, 0x9C, 0x8D, 0x9D, 0xAC, 0xBC, 0xAD, 0xBD, + 0x8E, 0x9E, 0x8F, 0x9F, 0xAE, 0xBE, 0xAF, 0xBF, + 0xCC, 0xDC, 0xCD, 0xDD, 0xEC, 0xFC, 0xED, 0xFD, + 0xCE, 0xDE, 0xCF, 0xDF, 0xEE, 0xFE, 0xEF, 0xFF + ); + + /** + * Inverse IP mapping helper table. + * Indexing this table with a byte value reverses the bit order. + * + * @var array + * @access private + */ + var $invipmap = array( + 0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0, + 0x10, 0x90, 0x50, 0xD0, 0x30, 0xB0, 0x70, 0xF0, + 0x08, 0x88, 0x48, 0xC8, 0x28, 0xA8, 0x68, 0xE8, + 0x18, 0x98, 0x58, 0xD8, 0x38, 0xB8, 0x78, 0xF8, + 0x04, 0x84, 0x44, 0xC4, 0x24, 0xA4, 0x64, 0xE4, + 0x14, 0x94, 0x54, 0xD4, 0x34, 0xB4, 0x74, 0xF4, + 0x0C, 0x8C, 0x4C, 0xCC, 0x2C, 0xAC, 0x6C, 0xEC, + 0x1C, 0x9C, 0x5C, 0xDC, 0x3C, 0xBC, 0x7C, 0xFC, + 0x02, 0x82, 0x42, 0xC2, 0x22, 0xA2, 0x62, 0xE2, + 0x12, 0x92, 0x52, 0xD2, 0x32, 0xB2, 0x72, 0xF2, + 0x0A, 0x8A, 0x4A, 0xCA, 0x2A, 0xAA, 0x6A, 0xEA, + 0x1A, 0x9A, 0x5A, 0xDA, 0x3A, 0xBA, 0x7A, 0xFA, + 0x06, 0x86, 0x46, 0xC6, 0x26, 0xA6, 0x66, 0xE6, + 0x16, 0x96, 0x56, 0xD6, 0x36, 0xB6, 0x76, 0xF6, + 0x0E, 0x8E, 0x4E, 0xCE, 0x2E, 0xAE, 0x6E, 0xEE, + 0x1E, 0x9E, 0x5E, 0xDE, 0x3E, 0xBE, 0x7E, 0xFE, + 0x01, 0x81, 0x41, 0xC1, 0x21, 0xA1, 0x61, 0xE1, + 0x11, 0x91, 0x51, 0xD1, 0x31, 0xB1, 0x71, 0xF1, + 0x09, 0x89, 0x49, 0xC9, 0x29, 0xA9, 0x69, 0xE9, + 0x19, 0x99, 0x59, 0xD9, 0x39, 0xB9, 0x79, 0xF9, + 0x05, 0x85, 0x45, 0xC5, 0x25, 0xA5, 0x65, 0xE5, + 0x15, 0x95, 0x55, 0xD5, 0x35, 0xB5, 0x75, 0xF5, + 0x0D, 0x8D, 0x4D, 0xCD, 0x2D, 0xAD, 0x6D, 0xED, + 0x1D, 0x9D, 0x5D, 0xDD, 0x3D, 0xBD, 0x7D, 0xFD, + 0x03, 0x83, 0x43, 0xC3, 0x23, 0xA3, 0x63, 0xE3, + 0x13, 0x93, 0x53, 0xD3, 0x33, 0xB3, 0x73, 0xF3, + 0x0B, 0x8B, 0x4B, 0xCB, 0x2B, 0xAB, 0x6B, 0xEB, + 0x1B, 0x9B, 0x5B, 0xDB, 0x3B, 0xBB, 0x7B, 0xFB, + 0x07, 0x87, 0x47, 0xC7, 0x27, 0xA7, 0x67, 0xE7, + 0x17, 0x97, 0x57, 0xD7, 0x37, 0xB7, 0x77, 0xF7, + 0x0F, 0x8F, 0x4F, 0xCF, 0x2F, 0xAF, 0x6F, 0xEF, + 0x1F, 0x9F, 0x5F, 0xDF, 0x3F, 0xBF, 0x7F, 0xFF + ); + + /** + * Pre-permuted S-box1 + * + * Each box ($sbox1-$sbox8) has been vectorized, then each value pre-permuted using the + * P table: concatenation can then be replaced by exclusive ORs. + * + * @var array + * @access private + */ + var $sbox1 = array( + 0x00808200, 0x00000000, 0x00008000, 0x00808202, + 0x00808002, 0x00008202, 0x00000002, 0x00008000, + 0x00000200, 0x00808200, 0x00808202, 0x00000200, + 0x00800202, 0x00808002, 0x00800000, 0x00000002, + 0x00000202, 0x00800200, 0x00800200, 0x00008200, + 0x00008200, 0x00808000, 0x00808000, 0x00800202, + 0x00008002, 0x00800002, 0x00800002, 0x00008002, + 0x00000000, 0x00000202, 0x00008202, 0x00800000, + 0x00008000, 0x00808202, 0x00000002, 0x00808000, + 0x00808200, 0x00800000, 0x00800000, 0x00000200, + 0x00808002, 0x00008000, 0x00008200, 0x00800002, + 0x00000200, 0x00000002, 0x00800202, 0x00008202, + 0x00808202, 0x00008002, 0x00808000, 0x00800202, + 0x00800002, 0x00000202, 0x00008202, 0x00808200, + 0x00000202, 0x00800200, 0x00800200, 0x00000000, + 0x00008002, 0x00008200, 0x00000000, 0x00808002 + ); + + /** + * Pre-permuted S-box2 + * + * @var array + * @access private + */ + var $sbox2 = array( + 0x40084010, 0x40004000, 0x00004000, 0x00084010, + 0x00080000, 0x00000010, 0x40080010, 0x40004010, + 0x40000010, 0x40084010, 0x40084000, 0x40000000, + 0x40004000, 0x00080000, 0x00000010, 0x40080010, + 0x00084000, 0x00080010, 0x40004010, 0x00000000, + 0x40000000, 0x00004000, 0x00084010, 0x40080000, + 0x00080010, 0x40000010, 0x00000000, 0x00084000, + 0x00004010, 0x40084000, 0x40080000, 0x00004010, + 0x00000000, 0x00084010, 0x40080010, 0x00080000, + 0x40004010, 0x40080000, 0x40084000, 0x00004000, + 0x40080000, 0x40004000, 0x00000010, 0x40084010, + 0x00084010, 0x00000010, 0x00004000, 0x40000000, + 0x00004010, 0x40084000, 0x00080000, 0x40000010, + 0x00080010, 0x40004010, 0x40000010, 0x00080010, + 0x00084000, 0x00000000, 0x40004000, 0x00004010, + 0x40000000, 0x40080010, 0x40084010, 0x00084000 + ); + + /** + * Pre-permuted S-box3 + * + * @var array + * @access private + */ + var $sbox3 = array( + 0x00000104, 0x04010100, 0x00000000, 0x04010004, + 0x04000100, 0x00000000, 0x00010104, 0x04000100, + 0x00010004, 0x04000004, 0x04000004, 0x00010000, + 0x04010104, 0x00010004, 0x04010000, 0x00000104, + 0x04000000, 0x00000004, 0x04010100, 0x00000100, + 0x00010100, 0x04010000, 0x04010004, 0x00010104, + 0x04000104, 0x00010100, 0x00010000, 0x04000104, + 0x00000004, 0x04010104, 0x00000100, 0x04000000, + 0x04010100, 0x04000000, 0x00010004, 0x00000104, + 0x00010000, 0x04010100, 0x04000100, 0x00000000, + 0x00000100, 0x00010004, 0x04010104, 0x04000100, + 0x04000004, 0x00000100, 0x00000000, 0x04010004, + 0x04000104, 0x00010000, 0x04000000, 0x04010104, + 0x00000004, 0x00010104, 0x00010100, 0x04000004, + 0x04010000, 0x04000104, 0x00000104, 0x04010000, + 0x00010104, 0x00000004, 0x04010004, 0x00010100 + ); + + /** + * Pre-permuted S-box4 + * + * @var array + * @access private + */ + var $sbox4 = array( + 0x80401000, 0x80001040, 0x80001040, 0x00000040, + 0x00401040, 0x80400040, 0x80400000, 0x80001000, + 0x00000000, 0x00401000, 0x00401000, 0x80401040, + 0x80000040, 0x00000000, 0x00400040, 0x80400000, + 0x80000000, 0x00001000, 0x00400000, 0x80401000, + 0x00000040, 0x00400000, 0x80001000, 0x00001040, + 0x80400040, 0x80000000, 0x00001040, 0x00400040, + 0x00001000, 0x00401040, 0x80401040, 0x80000040, + 0x00400040, 0x80400000, 0x00401000, 0x80401040, + 0x80000040, 0x00000000, 0x00000000, 0x00401000, + 0x00001040, 0x00400040, 0x80400040, 0x80000000, + 0x80401000, 0x80001040, 0x80001040, 0x00000040, + 0x80401040, 0x80000040, 0x80000000, 0x00001000, + 0x80400000, 0x80001000, 0x00401040, 0x80400040, + 0x80001000, 0x00001040, 0x00400000, 0x80401000, + 0x00000040, 0x00400000, 0x00001000, 0x00401040 + ); + + /** + * Pre-permuted S-box5 + * + * @var array + * @access private + */ + var $sbox5 = array( + 0x00000080, 0x01040080, 0x01040000, 0x21000080, + 0x00040000, 0x00000080, 0x20000000, 0x01040000, + 0x20040080, 0x00040000, 0x01000080, 0x20040080, + 0x21000080, 0x21040000, 0x00040080, 0x20000000, + 0x01000000, 0x20040000, 0x20040000, 0x00000000, + 0x20000080, 0x21040080, 0x21040080, 0x01000080, + 0x21040000, 0x20000080, 0x00000000, 0x21000000, + 0x01040080, 0x01000000, 0x21000000, 0x00040080, + 0x00040000, 0x21000080, 0x00000080, 0x01000000, + 0x20000000, 0x01040000, 0x21000080, 0x20040080, + 0x01000080, 0x20000000, 0x21040000, 0x01040080, + 0x20040080, 0x00000080, 0x01000000, 0x21040000, + 0x21040080, 0x00040080, 0x21000000, 0x21040080, + 0x01040000, 0x00000000, 0x20040000, 0x21000000, + 0x00040080, 0x01000080, 0x20000080, 0x00040000, + 0x00000000, 0x20040000, 0x01040080, 0x20000080 + ); + + /** + * Pre-permuted S-box6 + * + * @var array + * @access private + */ + var $sbox6 = array( + 0x10000008, 0x10200000, 0x00002000, 0x10202008, + 0x10200000, 0x00000008, 0x10202008, 0x00200000, + 0x10002000, 0x00202008, 0x00200000, 0x10000008, + 0x00200008, 0x10002000, 0x10000000, 0x00002008, + 0x00000000, 0x00200008, 0x10002008, 0x00002000, + 0x00202000, 0x10002008, 0x00000008, 0x10200008, + 0x10200008, 0x00000000, 0x00202008, 0x10202000, + 0x00002008, 0x00202000, 0x10202000, 0x10000000, + 0x10002000, 0x00000008, 0x10200008, 0x00202000, + 0x10202008, 0x00200000, 0x00002008, 0x10000008, + 0x00200000, 0x10002000, 0x10000000, 0x00002008, + 0x10000008, 0x10202008, 0x00202000, 0x10200000, + 0x00202008, 0x10202000, 0x00000000, 0x10200008, + 0x00000008, 0x00002000, 0x10200000, 0x00202008, + 0x00002000, 0x00200008, 0x10002008, 0x00000000, + 0x10202000, 0x10000000, 0x00200008, 0x10002008 + ); + + /** + * Pre-permuted S-box7 + * + * @var array + * @access private + */ + var $sbox7 = array( + 0x00100000, 0x02100001, 0x02000401, 0x00000000, + 0x00000400, 0x02000401, 0x00100401, 0x02100400, + 0x02100401, 0x00100000, 0x00000000, 0x02000001, + 0x00000001, 0x02000000, 0x02100001, 0x00000401, + 0x02000400, 0x00100401, 0x00100001, 0x02000400, + 0x02000001, 0x02100000, 0x02100400, 0x00100001, + 0x02100000, 0x00000400, 0x00000401, 0x02100401, + 0x00100400, 0x00000001, 0x02000000, 0x00100400, + 0x02000000, 0x00100400, 0x00100000, 0x02000401, + 0x02000401, 0x02100001, 0x02100001, 0x00000001, + 0x00100001, 0x02000000, 0x02000400, 0x00100000, + 0x02100400, 0x00000401, 0x00100401, 0x02100400, + 0x00000401, 0x02000001, 0x02100401, 0x02100000, + 0x00100400, 0x00000000, 0x00000001, 0x02100401, + 0x00000000, 0x00100401, 0x02100000, 0x00000400, + 0x02000001, 0x02000400, 0x00000400, 0x00100001 + ); + + /** + * Pre-permuted S-box8 + * + * @var array + * @access private + */ + var $sbox8 = array( + 0x08000820, 0x00000800, 0x00020000, 0x08020820, + 0x08000000, 0x08000820, 0x00000020, 0x08000000, + 0x00020020, 0x08020000, 0x08020820, 0x00020800, + 0x08020800, 0x00020820, 0x00000800, 0x00000020, + 0x08020000, 0x08000020, 0x08000800, 0x00000820, + 0x00020800, 0x00020020, 0x08020020, 0x08020800, + 0x00000820, 0x00000000, 0x00000000, 0x08020020, + 0x08000020, 0x08000800, 0x00020820, 0x00020000, + 0x00020820, 0x00020000, 0x08020800, 0x00000800, + 0x00000020, 0x08020020, 0x00000800, 0x00020820, + 0x08000800, 0x00000020, 0x08000020, 0x08020000, + 0x08020020, 0x08000000, 0x00020000, 0x08000820, + 0x00000000, 0x08020820, 0x00020020, 0x08000020, + 0x08020000, 0x08000800, 0x08000820, 0x00000000, + 0x08020820, 0x00020800, 0x00020800, 0x00000820, + 0x00000820, 0x00020020, 0x08000000, 0x08020800 + ); + + /** + * Test for engine validity + * + * This is mainly just a wrapper to set things up for Crypt_Base::isValidEngine() + * + * @see Crypt_Base::isValidEngine() + * @param int $engine + * @access public + * @return bool + */ + function isValidEngine($engine) + { + if ($this->key_length_max == 8) { + if ($engine == CRYPT_ENGINE_OPENSSL) { + $this->cipher_name_openssl_ecb = 'des-ecb'; + $this->cipher_name_openssl = 'des-' . $this->_openssl_translate_mode(); + } + } + + return parent::isValidEngine($engine); + } + + /** + * Sets the key. + * + * Keys can be of any length. DES, itself, uses 64-bit keys (eg. strlen($key) == 8), however, we + * only use the first eight, if $key has more then eight characters in it, and pad $key with the + * null byte if it is less then eight characters long. + * + * DES also requires that every eighth bit be a parity bit, however, we'll ignore that. + * + * If the key is not explicitly set, it'll be assumed to be all zero's. + * + * @see Crypt_Base::setKey() + * @access public + * @param string $key + */ + function setKey($key) + { + // We check/cut here only up to max length of the key. + // Key padding to the proper length will be done in _setupKey() + if (strlen($key) > $this->key_length_max) { + $key = substr($key, 0, $this->key_length_max); + } + + // Sets the key + parent::setKey($key); + } + + /** + * Encrypts a block + * + * @see Crypt_Base::_encryptBlock() + * @see Crypt_Base::encrypt() + * @see self::encrypt() + * @access private + * @param string $in + * @return string + */ + function _encryptBlock($in) + { + return $this->_processBlock($in, CRYPT_DES_ENCRYPT); + } + + /** + * Decrypts a block + * + * @see Crypt_Base::_decryptBlock() + * @see Crypt_Base::decrypt() + * @see self::decrypt() + * @access private + * @param string $in + * @return string + */ + function _decryptBlock($in) + { + return $this->_processBlock($in, CRYPT_DES_DECRYPT); + } + + /** + * Encrypts or decrypts a 64-bit block + * + * $mode should be either CRYPT_DES_ENCRYPT or CRYPT_DES_DECRYPT. See + * {@link http://en.wikipedia.org/wiki/Image:Feistel.png Feistel.png} to get a general + * idea of what this function does. + * + * @see self::_encryptBlock() + * @see self::_decryptBlock() + * @access private + * @param string $block + * @param int $mode + * @return string + */ + function _processBlock($block, $mode) + { + static $sbox1, $sbox2, $sbox3, $sbox4, $sbox5, $sbox6, $sbox7, $sbox8, $shuffleip, $shuffleinvip; + if (!$sbox1) { + $sbox1 = array_map("intval", $this->sbox1); + $sbox2 = array_map("intval", $this->sbox2); + $sbox3 = array_map("intval", $this->sbox3); + $sbox4 = array_map("intval", $this->sbox4); + $sbox5 = array_map("intval", $this->sbox5); + $sbox6 = array_map("intval", $this->sbox6); + $sbox7 = array_map("intval", $this->sbox7); + $sbox8 = array_map("intval", $this->sbox8); + /* Merge $shuffle with $[inv]ipmap */ + for ($i = 0; $i < 256; ++$i) { + $shuffleip[] = $this->shuffle[$this->ipmap[$i]]; + $shuffleinvip[] = $this->shuffle[$this->invipmap[$i]]; + } + } + + $keys = $this->keys[$mode]; + $ki = -1; + + // Do the initial IP permutation. + $t = unpack('Nl/Nr', $block); + list($l, $r) = array($t['l'], $t['r']); + $block = ($shuffleip[ $r & 0xFF] & "\x80\x80\x80\x80\x80\x80\x80\x80") | + ($shuffleip[($r >> 8) & 0xFF] & "\x40\x40\x40\x40\x40\x40\x40\x40") | + ($shuffleip[($r >> 16) & 0xFF] & "\x20\x20\x20\x20\x20\x20\x20\x20") | + ($shuffleip[($r >> 24) & 0xFF] & "\x10\x10\x10\x10\x10\x10\x10\x10") | + ($shuffleip[ $l & 0xFF] & "\x08\x08\x08\x08\x08\x08\x08\x08") | + ($shuffleip[($l >> 8) & 0xFF] & "\x04\x04\x04\x04\x04\x04\x04\x04") | + ($shuffleip[($l >> 16) & 0xFF] & "\x02\x02\x02\x02\x02\x02\x02\x02") | + ($shuffleip[($l >> 24) & 0xFF] & "\x01\x01\x01\x01\x01\x01\x01\x01"); + + // Extract L0 and R0. + $t = unpack('Nl/Nr', $block); + list($l, $r) = array($t['l'], $t['r']); + + for ($des_round = 0; $des_round < $this->des_rounds; ++$des_round) { + // Perform the 16 steps. + for ($i = 0; $i < 16; $i++) { + // start of "the Feistel (F) function" - see the following URL: + // http://en.wikipedia.org/wiki/Image:Data_Encryption_Standard_InfoBox_Diagram.png + // Merge key schedule. + $b1 = (($r >> 3) & 0x1FFFFFFF) ^ ($r << 29) ^ $keys[++$ki]; + $b2 = (($r >> 31) & 0x00000001) ^ ($r << 1) ^ $keys[++$ki]; + + // S-box indexing. + $t = $sbox1[($b1 >> 24) & 0x3F] ^ $sbox2[($b2 >> 24) & 0x3F] ^ + $sbox3[($b1 >> 16) & 0x3F] ^ $sbox4[($b2 >> 16) & 0x3F] ^ + $sbox5[($b1 >> 8) & 0x3F] ^ $sbox6[($b2 >> 8) & 0x3F] ^ + $sbox7[ $b1 & 0x3F] ^ $sbox8[ $b2 & 0x3F] ^ $l; + // end of "the Feistel (F) function" + + $l = $r; + $r = $t; + } + + // Last step should not permute L & R. + $t = $l; + $l = $r; + $r = $t; + } + + // Perform the inverse IP permutation. + return ($shuffleinvip[($r >> 24) & 0xFF] & "\x80\x80\x80\x80\x80\x80\x80\x80") | + ($shuffleinvip[($l >> 24) & 0xFF] & "\x40\x40\x40\x40\x40\x40\x40\x40") | + ($shuffleinvip[($r >> 16) & 0xFF] & "\x20\x20\x20\x20\x20\x20\x20\x20") | + ($shuffleinvip[($l >> 16) & 0xFF] & "\x10\x10\x10\x10\x10\x10\x10\x10") | + ($shuffleinvip[($r >> 8) & 0xFF] & "\x08\x08\x08\x08\x08\x08\x08\x08") | + ($shuffleinvip[($l >> 8) & 0xFF] & "\x04\x04\x04\x04\x04\x04\x04\x04") | + ($shuffleinvip[ $r & 0xFF] & "\x02\x02\x02\x02\x02\x02\x02\x02") | + ($shuffleinvip[ $l & 0xFF] & "\x01\x01\x01\x01\x01\x01\x01\x01"); + } + + /** + * Creates the key schedule + * + * @see Crypt_Base::_setupKey() + * @access private + */ + function _setupKey() + { + if (isset($this->kl['key']) && $this->key === $this->kl['key'] && $this->des_rounds === $this->kl['des_rounds']) { + // already expanded + return; + } + $this->kl = array('key' => $this->key, 'des_rounds' => $this->des_rounds); + + static $shifts = array( // number of key bits shifted per round + 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1 + ); + + static $pc1map = array( + 0x00, 0x00, 0x08, 0x08, 0x04, 0x04, 0x0C, 0x0C, + 0x02, 0x02, 0x0A, 0x0A, 0x06, 0x06, 0x0E, 0x0E, + 0x10, 0x10, 0x18, 0x18, 0x14, 0x14, 0x1C, 0x1C, + 0x12, 0x12, 0x1A, 0x1A, 0x16, 0x16, 0x1E, 0x1E, + 0x20, 0x20, 0x28, 0x28, 0x24, 0x24, 0x2C, 0x2C, + 0x22, 0x22, 0x2A, 0x2A, 0x26, 0x26, 0x2E, 0x2E, + 0x30, 0x30, 0x38, 0x38, 0x34, 0x34, 0x3C, 0x3C, + 0x32, 0x32, 0x3A, 0x3A, 0x36, 0x36, 0x3E, 0x3E, + 0x40, 0x40, 0x48, 0x48, 0x44, 0x44, 0x4C, 0x4C, + 0x42, 0x42, 0x4A, 0x4A, 0x46, 0x46, 0x4E, 0x4E, + 0x50, 0x50, 0x58, 0x58, 0x54, 0x54, 0x5C, 0x5C, + 0x52, 0x52, 0x5A, 0x5A, 0x56, 0x56, 0x5E, 0x5E, + 0x60, 0x60, 0x68, 0x68, 0x64, 0x64, 0x6C, 0x6C, + 0x62, 0x62, 0x6A, 0x6A, 0x66, 0x66, 0x6E, 0x6E, + 0x70, 0x70, 0x78, 0x78, 0x74, 0x74, 0x7C, 0x7C, + 0x72, 0x72, 0x7A, 0x7A, 0x76, 0x76, 0x7E, 0x7E, + 0x80, 0x80, 0x88, 0x88, 0x84, 0x84, 0x8C, 0x8C, + 0x82, 0x82, 0x8A, 0x8A, 0x86, 0x86, 0x8E, 0x8E, + 0x90, 0x90, 0x98, 0x98, 0x94, 0x94, 0x9C, 0x9C, + 0x92, 0x92, 0x9A, 0x9A, 0x96, 0x96, 0x9E, 0x9E, + 0xA0, 0xA0, 0xA8, 0xA8, 0xA4, 0xA4, 0xAC, 0xAC, + 0xA2, 0xA2, 0xAA, 0xAA, 0xA6, 0xA6, 0xAE, 0xAE, + 0xB0, 0xB0, 0xB8, 0xB8, 0xB4, 0xB4, 0xBC, 0xBC, + 0xB2, 0xB2, 0xBA, 0xBA, 0xB6, 0xB6, 0xBE, 0xBE, + 0xC0, 0xC0, 0xC8, 0xC8, 0xC4, 0xC4, 0xCC, 0xCC, + 0xC2, 0xC2, 0xCA, 0xCA, 0xC6, 0xC6, 0xCE, 0xCE, + 0xD0, 0xD0, 0xD8, 0xD8, 0xD4, 0xD4, 0xDC, 0xDC, + 0xD2, 0xD2, 0xDA, 0xDA, 0xD6, 0xD6, 0xDE, 0xDE, + 0xE0, 0xE0, 0xE8, 0xE8, 0xE4, 0xE4, 0xEC, 0xEC, + 0xE2, 0xE2, 0xEA, 0xEA, 0xE6, 0xE6, 0xEE, 0xEE, + 0xF0, 0xF0, 0xF8, 0xF8, 0xF4, 0xF4, 0xFC, 0xFC, + 0xF2, 0xF2, 0xFA, 0xFA, 0xF6, 0xF6, 0xFE, 0xFE + ); + + // Mapping tables for the PC-2 transformation. + static $pc2mapc1 = array( + 0x00000000, 0x00000400, 0x00200000, 0x00200400, + 0x00000001, 0x00000401, 0x00200001, 0x00200401, + 0x02000000, 0x02000400, 0x02200000, 0x02200400, + 0x02000001, 0x02000401, 0x02200001, 0x02200401 + ); + static $pc2mapc2 = array( + 0x00000000, 0x00000800, 0x08000000, 0x08000800, + 0x00010000, 0x00010800, 0x08010000, 0x08010800, + 0x00000000, 0x00000800, 0x08000000, 0x08000800, + 0x00010000, 0x00010800, 0x08010000, 0x08010800, + 0x00000100, 0x00000900, 0x08000100, 0x08000900, + 0x00010100, 0x00010900, 0x08010100, 0x08010900, + 0x00000100, 0x00000900, 0x08000100, 0x08000900, + 0x00010100, 0x00010900, 0x08010100, 0x08010900, + 0x00000010, 0x00000810, 0x08000010, 0x08000810, + 0x00010010, 0x00010810, 0x08010010, 0x08010810, + 0x00000010, 0x00000810, 0x08000010, 0x08000810, + 0x00010010, 0x00010810, 0x08010010, 0x08010810, + 0x00000110, 0x00000910, 0x08000110, 0x08000910, + 0x00010110, 0x00010910, 0x08010110, 0x08010910, + 0x00000110, 0x00000910, 0x08000110, 0x08000910, + 0x00010110, 0x00010910, 0x08010110, 0x08010910, + 0x00040000, 0x00040800, 0x08040000, 0x08040800, + 0x00050000, 0x00050800, 0x08050000, 0x08050800, + 0x00040000, 0x00040800, 0x08040000, 0x08040800, + 0x00050000, 0x00050800, 0x08050000, 0x08050800, + 0x00040100, 0x00040900, 0x08040100, 0x08040900, + 0x00050100, 0x00050900, 0x08050100, 0x08050900, + 0x00040100, 0x00040900, 0x08040100, 0x08040900, + 0x00050100, 0x00050900, 0x08050100, 0x08050900, + 0x00040010, 0x00040810, 0x08040010, 0x08040810, + 0x00050010, 0x00050810, 0x08050010, 0x08050810, + 0x00040010, 0x00040810, 0x08040010, 0x08040810, + 0x00050010, 0x00050810, 0x08050010, 0x08050810, + 0x00040110, 0x00040910, 0x08040110, 0x08040910, + 0x00050110, 0x00050910, 0x08050110, 0x08050910, + 0x00040110, 0x00040910, 0x08040110, 0x08040910, + 0x00050110, 0x00050910, 0x08050110, 0x08050910, + 0x01000000, 0x01000800, 0x09000000, 0x09000800, + 0x01010000, 0x01010800, 0x09010000, 0x09010800, + 0x01000000, 0x01000800, 0x09000000, 0x09000800, + 0x01010000, 0x01010800, 0x09010000, 0x09010800, + 0x01000100, 0x01000900, 0x09000100, 0x09000900, + 0x01010100, 0x01010900, 0x09010100, 0x09010900, + 0x01000100, 0x01000900, 0x09000100, 0x09000900, + 0x01010100, 0x01010900, 0x09010100, 0x09010900, + 0x01000010, 0x01000810, 0x09000010, 0x09000810, + 0x01010010, 0x01010810, 0x09010010, 0x09010810, + 0x01000010, 0x01000810, 0x09000010, 0x09000810, + 0x01010010, 0x01010810, 0x09010010, 0x09010810, + 0x01000110, 0x01000910, 0x09000110, 0x09000910, + 0x01010110, 0x01010910, 0x09010110, 0x09010910, + 0x01000110, 0x01000910, 0x09000110, 0x09000910, + 0x01010110, 0x01010910, 0x09010110, 0x09010910, + 0x01040000, 0x01040800, 0x09040000, 0x09040800, + 0x01050000, 0x01050800, 0x09050000, 0x09050800, + 0x01040000, 0x01040800, 0x09040000, 0x09040800, + 0x01050000, 0x01050800, 0x09050000, 0x09050800, + 0x01040100, 0x01040900, 0x09040100, 0x09040900, + 0x01050100, 0x01050900, 0x09050100, 0x09050900, + 0x01040100, 0x01040900, 0x09040100, 0x09040900, + 0x01050100, 0x01050900, 0x09050100, 0x09050900, + 0x01040010, 0x01040810, 0x09040010, 0x09040810, + 0x01050010, 0x01050810, 0x09050010, 0x09050810, + 0x01040010, 0x01040810, 0x09040010, 0x09040810, + 0x01050010, 0x01050810, 0x09050010, 0x09050810, + 0x01040110, 0x01040910, 0x09040110, 0x09040910, + 0x01050110, 0x01050910, 0x09050110, 0x09050910, + 0x01040110, 0x01040910, 0x09040110, 0x09040910, + 0x01050110, 0x01050910, 0x09050110, 0x09050910 + ); + static $pc2mapc3 = array( + 0x00000000, 0x00000004, 0x00001000, 0x00001004, + 0x00000000, 0x00000004, 0x00001000, 0x00001004, + 0x10000000, 0x10000004, 0x10001000, 0x10001004, + 0x10000000, 0x10000004, 0x10001000, 0x10001004, + 0x00000020, 0x00000024, 0x00001020, 0x00001024, + 0x00000020, 0x00000024, 0x00001020, 0x00001024, + 0x10000020, 0x10000024, 0x10001020, 0x10001024, + 0x10000020, 0x10000024, 0x10001020, 0x10001024, + 0x00080000, 0x00080004, 0x00081000, 0x00081004, + 0x00080000, 0x00080004, 0x00081000, 0x00081004, + 0x10080000, 0x10080004, 0x10081000, 0x10081004, + 0x10080000, 0x10080004, 0x10081000, 0x10081004, + 0x00080020, 0x00080024, 0x00081020, 0x00081024, + 0x00080020, 0x00080024, 0x00081020, 0x00081024, + 0x10080020, 0x10080024, 0x10081020, 0x10081024, + 0x10080020, 0x10080024, 0x10081020, 0x10081024, + 0x20000000, 0x20000004, 0x20001000, 0x20001004, + 0x20000000, 0x20000004, 0x20001000, 0x20001004, + 0x30000000, 0x30000004, 0x30001000, 0x30001004, + 0x30000000, 0x30000004, 0x30001000, 0x30001004, + 0x20000020, 0x20000024, 0x20001020, 0x20001024, + 0x20000020, 0x20000024, 0x20001020, 0x20001024, + 0x30000020, 0x30000024, 0x30001020, 0x30001024, + 0x30000020, 0x30000024, 0x30001020, 0x30001024, + 0x20080000, 0x20080004, 0x20081000, 0x20081004, + 0x20080000, 0x20080004, 0x20081000, 0x20081004, + 0x30080000, 0x30080004, 0x30081000, 0x30081004, + 0x30080000, 0x30080004, 0x30081000, 0x30081004, + 0x20080020, 0x20080024, 0x20081020, 0x20081024, + 0x20080020, 0x20080024, 0x20081020, 0x20081024, + 0x30080020, 0x30080024, 0x30081020, 0x30081024, + 0x30080020, 0x30080024, 0x30081020, 0x30081024, + 0x00000002, 0x00000006, 0x00001002, 0x00001006, + 0x00000002, 0x00000006, 0x00001002, 0x00001006, + 0x10000002, 0x10000006, 0x10001002, 0x10001006, + 0x10000002, 0x10000006, 0x10001002, 0x10001006, + 0x00000022, 0x00000026, 0x00001022, 0x00001026, + 0x00000022, 0x00000026, 0x00001022, 0x00001026, + 0x10000022, 0x10000026, 0x10001022, 0x10001026, + 0x10000022, 0x10000026, 0x10001022, 0x10001026, + 0x00080002, 0x00080006, 0x00081002, 0x00081006, + 0x00080002, 0x00080006, 0x00081002, 0x00081006, + 0x10080002, 0x10080006, 0x10081002, 0x10081006, + 0x10080002, 0x10080006, 0x10081002, 0x10081006, + 0x00080022, 0x00080026, 0x00081022, 0x00081026, + 0x00080022, 0x00080026, 0x00081022, 0x00081026, + 0x10080022, 0x10080026, 0x10081022, 0x10081026, + 0x10080022, 0x10080026, 0x10081022, 0x10081026, + 0x20000002, 0x20000006, 0x20001002, 0x20001006, + 0x20000002, 0x20000006, 0x20001002, 0x20001006, + 0x30000002, 0x30000006, 0x30001002, 0x30001006, + 0x30000002, 0x30000006, 0x30001002, 0x30001006, + 0x20000022, 0x20000026, 0x20001022, 0x20001026, + 0x20000022, 0x20000026, 0x20001022, 0x20001026, + 0x30000022, 0x30000026, 0x30001022, 0x30001026, + 0x30000022, 0x30000026, 0x30001022, 0x30001026, + 0x20080002, 0x20080006, 0x20081002, 0x20081006, + 0x20080002, 0x20080006, 0x20081002, 0x20081006, + 0x30080002, 0x30080006, 0x30081002, 0x30081006, + 0x30080002, 0x30080006, 0x30081002, 0x30081006, + 0x20080022, 0x20080026, 0x20081022, 0x20081026, + 0x20080022, 0x20080026, 0x20081022, 0x20081026, + 0x30080022, 0x30080026, 0x30081022, 0x30081026, + 0x30080022, 0x30080026, 0x30081022, 0x30081026 + ); + static $pc2mapc4 = array( + 0x00000000, 0x00100000, 0x00000008, 0x00100008, + 0x00000200, 0x00100200, 0x00000208, 0x00100208, + 0x00000000, 0x00100000, 0x00000008, 0x00100008, + 0x00000200, 0x00100200, 0x00000208, 0x00100208, + 0x04000000, 0x04100000, 0x04000008, 0x04100008, + 0x04000200, 0x04100200, 0x04000208, 0x04100208, + 0x04000000, 0x04100000, 0x04000008, 0x04100008, + 0x04000200, 0x04100200, 0x04000208, 0x04100208, + 0x00002000, 0x00102000, 0x00002008, 0x00102008, + 0x00002200, 0x00102200, 0x00002208, 0x00102208, + 0x00002000, 0x00102000, 0x00002008, 0x00102008, + 0x00002200, 0x00102200, 0x00002208, 0x00102208, + 0x04002000, 0x04102000, 0x04002008, 0x04102008, + 0x04002200, 0x04102200, 0x04002208, 0x04102208, + 0x04002000, 0x04102000, 0x04002008, 0x04102008, + 0x04002200, 0x04102200, 0x04002208, 0x04102208, + 0x00000000, 0x00100000, 0x00000008, 0x00100008, + 0x00000200, 0x00100200, 0x00000208, 0x00100208, + 0x00000000, 0x00100000, 0x00000008, 0x00100008, + 0x00000200, 0x00100200, 0x00000208, 0x00100208, + 0x04000000, 0x04100000, 0x04000008, 0x04100008, + 0x04000200, 0x04100200, 0x04000208, 0x04100208, + 0x04000000, 0x04100000, 0x04000008, 0x04100008, + 0x04000200, 0x04100200, 0x04000208, 0x04100208, + 0x00002000, 0x00102000, 0x00002008, 0x00102008, + 0x00002200, 0x00102200, 0x00002208, 0x00102208, + 0x00002000, 0x00102000, 0x00002008, 0x00102008, + 0x00002200, 0x00102200, 0x00002208, 0x00102208, + 0x04002000, 0x04102000, 0x04002008, 0x04102008, + 0x04002200, 0x04102200, 0x04002208, 0x04102208, + 0x04002000, 0x04102000, 0x04002008, 0x04102008, + 0x04002200, 0x04102200, 0x04002208, 0x04102208, + 0x00020000, 0x00120000, 0x00020008, 0x00120008, + 0x00020200, 0x00120200, 0x00020208, 0x00120208, + 0x00020000, 0x00120000, 0x00020008, 0x00120008, + 0x00020200, 0x00120200, 0x00020208, 0x00120208, + 0x04020000, 0x04120000, 0x04020008, 0x04120008, + 0x04020200, 0x04120200, 0x04020208, 0x04120208, + 0x04020000, 0x04120000, 0x04020008, 0x04120008, + 0x04020200, 0x04120200, 0x04020208, 0x04120208, + 0x00022000, 0x00122000, 0x00022008, 0x00122008, + 0x00022200, 0x00122200, 0x00022208, 0x00122208, + 0x00022000, 0x00122000, 0x00022008, 0x00122008, + 0x00022200, 0x00122200, 0x00022208, 0x00122208, + 0x04022000, 0x04122000, 0x04022008, 0x04122008, + 0x04022200, 0x04122200, 0x04022208, 0x04122208, + 0x04022000, 0x04122000, 0x04022008, 0x04122008, + 0x04022200, 0x04122200, 0x04022208, 0x04122208, + 0x00020000, 0x00120000, 0x00020008, 0x00120008, + 0x00020200, 0x00120200, 0x00020208, 0x00120208, + 0x00020000, 0x00120000, 0x00020008, 0x00120008, + 0x00020200, 0x00120200, 0x00020208, 0x00120208, + 0x04020000, 0x04120000, 0x04020008, 0x04120008, + 0x04020200, 0x04120200, 0x04020208, 0x04120208, + 0x04020000, 0x04120000, 0x04020008, 0x04120008, + 0x04020200, 0x04120200, 0x04020208, 0x04120208, + 0x00022000, 0x00122000, 0x00022008, 0x00122008, + 0x00022200, 0x00122200, 0x00022208, 0x00122208, + 0x00022000, 0x00122000, 0x00022008, 0x00122008, + 0x00022200, 0x00122200, 0x00022208, 0x00122208, + 0x04022000, 0x04122000, 0x04022008, 0x04122008, + 0x04022200, 0x04122200, 0x04022208, 0x04122208, + 0x04022000, 0x04122000, 0x04022008, 0x04122008, + 0x04022200, 0x04122200, 0x04022208, 0x04122208 + ); + static $pc2mapd1 = array( + 0x00000000, 0x00000001, 0x08000000, 0x08000001, + 0x00200000, 0x00200001, 0x08200000, 0x08200001, + 0x00000002, 0x00000003, 0x08000002, 0x08000003, + 0x00200002, 0x00200003, 0x08200002, 0x08200003 + ); + static $pc2mapd2 = array( + 0x00000000, 0x00100000, 0x00000800, 0x00100800, + 0x00000000, 0x00100000, 0x00000800, 0x00100800, + 0x04000000, 0x04100000, 0x04000800, 0x04100800, + 0x04000000, 0x04100000, 0x04000800, 0x04100800, + 0x00000004, 0x00100004, 0x00000804, 0x00100804, + 0x00000004, 0x00100004, 0x00000804, 0x00100804, + 0x04000004, 0x04100004, 0x04000804, 0x04100804, + 0x04000004, 0x04100004, 0x04000804, 0x04100804, + 0x00000000, 0x00100000, 0x00000800, 0x00100800, + 0x00000000, 0x00100000, 0x00000800, 0x00100800, + 0x04000000, 0x04100000, 0x04000800, 0x04100800, + 0x04000000, 0x04100000, 0x04000800, 0x04100800, + 0x00000004, 0x00100004, 0x00000804, 0x00100804, + 0x00000004, 0x00100004, 0x00000804, 0x00100804, + 0x04000004, 0x04100004, 0x04000804, 0x04100804, + 0x04000004, 0x04100004, 0x04000804, 0x04100804, + 0x00000200, 0x00100200, 0x00000A00, 0x00100A00, + 0x00000200, 0x00100200, 0x00000A00, 0x00100A00, + 0x04000200, 0x04100200, 0x04000A00, 0x04100A00, + 0x04000200, 0x04100200, 0x04000A00, 0x04100A00, + 0x00000204, 0x00100204, 0x00000A04, 0x00100A04, + 0x00000204, 0x00100204, 0x00000A04, 0x00100A04, + 0x04000204, 0x04100204, 0x04000A04, 0x04100A04, + 0x04000204, 0x04100204, 0x04000A04, 0x04100A04, + 0x00000200, 0x00100200, 0x00000A00, 0x00100A00, + 0x00000200, 0x00100200, 0x00000A00, 0x00100A00, + 0x04000200, 0x04100200, 0x04000A00, 0x04100A00, + 0x04000200, 0x04100200, 0x04000A00, 0x04100A00, + 0x00000204, 0x00100204, 0x00000A04, 0x00100A04, + 0x00000204, 0x00100204, 0x00000A04, 0x00100A04, + 0x04000204, 0x04100204, 0x04000A04, 0x04100A04, + 0x04000204, 0x04100204, 0x04000A04, 0x04100A04, + 0x00020000, 0x00120000, 0x00020800, 0x00120800, + 0x00020000, 0x00120000, 0x00020800, 0x00120800, + 0x04020000, 0x04120000, 0x04020800, 0x04120800, + 0x04020000, 0x04120000, 0x04020800, 0x04120800, + 0x00020004, 0x00120004, 0x00020804, 0x00120804, + 0x00020004, 0x00120004, 0x00020804, 0x00120804, + 0x04020004, 0x04120004, 0x04020804, 0x04120804, + 0x04020004, 0x04120004, 0x04020804, 0x04120804, + 0x00020000, 0x00120000, 0x00020800, 0x00120800, + 0x00020000, 0x00120000, 0x00020800, 0x00120800, + 0x04020000, 0x04120000, 0x04020800, 0x04120800, + 0x04020000, 0x04120000, 0x04020800, 0x04120800, + 0x00020004, 0x00120004, 0x00020804, 0x00120804, + 0x00020004, 0x00120004, 0x00020804, 0x00120804, + 0x04020004, 0x04120004, 0x04020804, 0x04120804, + 0x04020004, 0x04120004, 0x04020804, 0x04120804, + 0x00020200, 0x00120200, 0x00020A00, 0x00120A00, + 0x00020200, 0x00120200, 0x00020A00, 0x00120A00, + 0x04020200, 0x04120200, 0x04020A00, 0x04120A00, + 0x04020200, 0x04120200, 0x04020A00, 0x04120A00, + 0x00020204, 0x00120204, 0x00020A04, 0x00120A04, + 0x00020204, 0x00120204, 0x00020A04, 0x00120A04, + 0x04020204, 0x04120204, 0x04020A04, 0x04120A04, + 0x04020204, 0x04120204, 0x04020A04, 0x04120A04, + 0x00020200, 0x00120200, 0x00020A00, 0x00120A00, + 0x00020200, 0x00120200, 0x00020A00, 0x00120A00, + 0x04020200, 0x04120200, 0x04020A00, 0x04120A00, + 0x04020200, 0x04120200, 0x04020A00, 0x04120A00, + 0x00020204, 0x00120204, 0x00020A04, 0x00120A04, + 0x00020204, 0x00120204, 0x00020A04, 0x00120A04, + 0x04020204, 0x04120204, 0x04020A04, 0x04120A04, + 0x04020204, 0x04120204, 0x04020A04, 0x04120A04 + ); + static $pc2mapd3 = array( + 0x00000000, 0x00010000, 0x02000000, 0x02010000, + 0x00000020, 0x00010020, 0x02000020, 0x02010020, + 0x00040000, 0x00050000, 0x02040000, 0x02050000, + 0x00040020, 0x00050020, 0x02040020, 0x02050020, + 0x00002000, 0x00012000, 0x02002000, 0x02012000, + 0x00002020, 0x00012020, 0x02002020, 0x02012020, + 0x00042000, 0x00052000, 0x02042000, 0x02052000, + 0x00042020, 0x00052020, 0x02042020, 0x02052020, + 0x00000000, 0x00010000, 0x02000000, 0x02010000, + 0x00000020, 0x00010020, 0x02000020, 0x02010020, + 0x00040000, 0x00050000, 0x02040000, 0x02050000, + 0x00040020, 0x00050020, 0x02040020, 0x02050020, + 0x00002000, 0x00012000, 0x02002000, 0x02012000, + 0x00002020, 0x00012020, 0x02002020, 0x02012020, + 0x00042000, 0x00052000, 0x02042000, 0x02052000, + 0x00042020, 0x00052020, 0x02042020, 0x02052020, + 0x00000010, 0x00010010, 0x02000010, 0x02010010, + 0x00000030, 0x00010030, 0x02000030, 0x02010030, + 0x00040010, 0x00050010, 0x02040010, 0x02050010, + 0x00040030, 0x00050030, 0x02040030, 0x02050030, + 0x00002010, 0x00012010, 0x02002010, 0x02012010, + 0x00002030, 0x00012030, 0x02002030, 0x02012030, + 0x00042010, 0x00052010, 0x02042010, 0x02052010, + 0x00042030, 0x00052030, 0x02042030, 0x02052030, + 0x00000010, 0x00010010, 0x02000010, 0x02010010, + 0x00000030, 0x00010030, 0x02000030, 0x02010030, + 0x00040010, 0x00050010, 0x02040010, 0x02050010, + 0x00040030, 0x00050030, 0x02040030, 0x02050030, + 0x00002010, 0x00012010, 0x02002010, 0x02012010, + 0x00002030, 0x00012030, 0x02002030, 0x02012030, + 0x00042010, 0x00052010, 0x02042010, 0x02052010, + 0x00042030, 0x00052030, 0x02042030, 0x02052030, + 0x20000000, 0x20010000, 0x22000000, 0x22010000, + 0x20000020, 0x20010020, 0x22000020, 0x22010020, + 0x20040000, 0x20050000, 0x22040000, 0x22050000, + 0x20040020, 0x20050020, 0x22040020, 0x22050020, + 0x20002000, 0x20012000, 0x22002000, 0x22012000, + 0x20002020, 0x20012020, 0x22002020, 0x22012020, + 0x20042000, 0x20052000, 0x22042000, 0x22052000, + 0x20042020, 0x20052020, 0x22042020, 0x22052020, + 0x20000000, 0x20010000, 0x22000000, 0x22010000, + 0x20000020, 0x20010020, 0x22000020, 0x22010020, + 0x20040000, 0x20050000, 0x22040000, 0x22050000, + 0x20040020, 0x20050020, 0x22040020, 0x22050020, + 0x20002000, 0x20012000, 0x22002000, 0x22012000, + 0x20002020, 0x20012020, 0x22002020, 0x22012020, + 0x20042000, 0x20052000, 0x22042000, 0x22052000, + 0x20042020, 0x20052020, 0x22042020, 0x22052020, + 0x20000010, 0x20010010, 0x22000010, 0x22010010, + 0x20000030, 0x20010030, 0x22000030, 0x22010030, + 0x20040010, 0x20050010, 0x22040010, 0x22050010, + 0x20040030, 0x20050030, 0x22040030, 0x22050030, + 0x20002010, 0x20012010, 0x22002010, 0x22012010, + 0x20002030, 0x20012030, 0x22002030, 0x22012030, + 0x20042010, 0x20052010, 0x22042010, 0x22052010, + 0x20042030, 0x20052030, 0x22042030, 0x22052030, + 0x20000010, 0x20010010, 0x22000010, 0x22010010, + 0x20000030, 0x20010030, 0x22000030, 0x22010030, + 0x20040010, 0x20050010, 0x22040010, 0x22050010, + 0x20040030, 0x20050030, 0x22040030, 0x22050030, + 0x20002010, 0x20012010, 0x22002010, 0x22012010, + 0x20002030, 0x20012030, 0x22002030, 0x22012030, + 0x20042010, 0x20052010, 0x22042010, 0x22052010, + 0x20042030, 0x20052030, 0x22042030, 0x22052030 + ); + static $pc2mapd4 = array( + 0x00000000, 0x00000400, 0x01000000, 0x01000400, + 0x00000000, 0x00000400, 0x01000000, 0x01000400, + 0x00000100, 0x00000500, 0x01000100, 0x01000500, + 0x00000100, 0x00000500, 0x01000100, 0x01000500, + 0x10000000, 0x10000400, 0x11000000, 0x11000400, + 0x10000000, 0x10000400, 0x11000000, 0x11000400, + 0x10000100, 0x10000500, 0x11000100, 0x11000500, + 0x10000100, 0x10000500, 0x11000100, 0x11000500, + 0x00080000, 0x00080400, 0x01080000, 0x01080400, + 0x00080000, 0x00080400, 0x01080000, 0x01080400, + 0x00080100, 0x00080500, 0x01080100, 0x01080500, + 0x00080100, 0x00080500, 0x01080100, 0x01080500, + 0x10080000, 0x10080400, 0x11080000, 0x11080400, + 0x10080000, 0x10080400, 0x11080000, 0x11080400, + 0x10080100, 0x10080500, 0x11080100, 0x11080500, + 0x10080100, 0x10080500, 0x11080100, 0x11080500, + 0x00000008, 0x00000408, 0x01000008, 0x01000408, + 0x00000008, 0x00000408, 0x01000008, 0x01000408, + 0x00000108, 0x00000508, 0x01000108, 0x01000508, + 0x00000108, 0x00000508, 0x01000108, 0x01000508, + 0x10000008, 0x10000408, 0x11000008, 0x11000408, + 0x10000008, 0x10000408, 0x11000008, 0x11000408, + 0x10000108, 0x10000508, 0x11000108, 0x11000508, + 0x10000108, 0x10000508, 0x11000108, 0x11000508, + 0x00080008, 0x00080408, 0x01080008, 0x01080408, + 0x00080008, 0x00080408, 0x01080008, 0x01080408, + 0x00080108, 0x00080508, 0x01080108, 0x01080508, + 0x00080108, 0x00080508, 0x01080108, 0x01080508, + 0x10080008, 0x10080408, 0x11080008, 0x11080408, + 0x10080008, 0x10080408, 0x11080008, 0x11080408, + 0x10080108, 0x10080508, 0x11080108, 0x11080508, + 0x10080108, 0x10080508, 0x11080108, 0x11080508, + 0x00001000, 0x00001400, 0x01001000, 0x01001400, + 0x00001000, 0x00001400, 0x01001000, 0x01001400, + 0x00001100, 0x00001500, 0x01001100, 0x01001500, + 0x00001100, 0x00001500, 0x01001100, 0x01001500, + 0x10001000, 0x10001400, 0x11001000, 0x11001400, + 0x10001000, 0x10001400, 0x11001000, 0x11001400, + 0x10001100, 0x10001500, 0x11001100, 0x11001500, + 0x10001100, 0x10001500, 0x11001100, 0x11001500, + 0x00081000, 0x00081400, 0x01081000, 0x01081400, + 0x00081000, 0x00081400, 0x01081000, 0x01081400, + 0x00081100, 0x00081500, 0x01081100, 0x01081500, + 0x00081100, 0x00081500, 0x01081100, 0x01081500, + 0x10081000, 0x10081400, 0x11081000, 0x11081400, + 0x10081000, 0x10081400, 0x11081000, 0x11081400, + 0x10081100, 0x10081500, 0x11081100, 0x11081500, + 0x10081100, 0x10081500, 0x11081100, 0x11081500, + 0x00001008, 0x00001408, 0x01001008, 0x01001408, + 0x00001008, 0x00001408, 0x01001008, 0x01001408, + 0x00001108, 0x00001508, 0x01001108, 0x01001508, + 0x00001108, 0x00001508, 0x01001108, 0x01001508, + 0x10001008, 0x10001408, 0x11001008, 0x11001408, + 0x10001008, 0x10001408, 0x11001008, 0x11001408, + 0x10001108, 0x10001508, 0x11001108, 0x11001508, + 0x10001108, 0x10001508, 0x11001108, 0x11001508, + 0x00081008, 0x00081408, 0x01081008, 0x01081408, + 0x00081008, 0x00081408, 0x01081008, 0x01081408, + 0x00081108, 0x00081508, 0x01081108, 0x01081508, + 0x00081108, 0x00081508, 0x01081108, 0x01081508, + 0x10081008, 0x10081408, 0x11081008, 0x11081408, + 0x10081008, 0x10081408, 0x11081008, 0x11081408, + 0x10081108, 0x10081508, 0x11081108, 0x11081508, + 0x10081108, 0x10081508, 0x11081108, 0x11081508 + ); + + $keys = array(); + for ($des_round = 0; $des_round < $this->des_rounds; ++$des_round) { + // pad the key and remove extra characters as appropriate. + $key = str_pad(substr($this->key, $des_round * 8, 8), 8, "\0"); + + // Perform the PC/1 transformation and compute C and D. + $t = unpack('Nl/Nr', $key); + list($l, $r) = array($t['l'], $t['r']); + $key = ($this->shuffle[$pc1map[ $r & 0xFF]] & "\x80\x80\x80\x80\x80\x80\x80\x00") | + ($this->shuffle[$pc1map[($r >> 8) & 0xFF]] & "\x40\x40\x40\x40\x40\x40\x40\x00") | + ($this->shuffle[$pc1map[($r >> 16) & 0xFF]] & "\x20\x20\x20\x20\x20\x20\x20\x00") | + ($this->shuffle[$pc1map[($r >> 24) & 0xFF]] & "\x10\x10\x10\x10\x10\x10\x10\x00") | + ($this->shuffle[$pc1map[ $l & 0xFF]] & "\x08\x08\x08\x08\x08\x08\x08\x00") | + ($this->shuffle[$pc1map[($l >> 8) & 0xFF]] & "\x04\x04\x04\x04\x04\x04\x04\x00") | + ($this->shuffle[$pc1map[($l >> 16) & 0xFF]] & "\x02\x02\x02\x02\x02\x02\x02\x00") | + ($this->shuffle[$pc1map[($l >> 24) & 0xFF]] & "\x01\x01\x01\x01\x01\x01\x01\x00"); + $key = unpack('Nc/Nd', $key); + $c = ( $key['c'] >> 4) & 0x0FFFFFFF; + $d = (($key['d'] >> 4) & 0x0FFFFFF0) | ($key['c'] & 0x0F); + + $keys[$des_round] = array( + CRYPT_DES_ENCRYPT => array(), + CRYPT_DES_DECRYPT => array_fill(0, 32, 0) + ); + for ($i = 0, $ki = 31; $i < 16; ++$i, $ki-= 2) { + $c <<= $shifts[$i]; + $c = ($c | ($c >> 28)) & 0x0FFFFFFF; + $d <<= $shifts[$i]; + $d = ($d | ($d >> 28)) & 0x0FFFFFFF; + + // Perform the PC-2 transformation. + $cp = $pc2mapc1[ $c >> 24 ] | $pc2mapc2[($c >> 16) & 0xFF] | + $pc2mapc3[($c >> 8) & 0xFF] | $pc2mapc4[ $c & 0xFF]; + $dp = $pc2mapd1[ $d >> 24 ] | $pc2mapd2[($d >> 16) & 0xFF] | + $pc2mapd3[($d >> 8) & 0xFF] | $pc2mapd4[ $d & 0xFF]; + + // Reorder: odd bytes/even bytes. Push the result in key schedule. + $val1 = ( $cp & 0xFF000000) | (($cp << 8) & 0x00FF0000) | + (($dp >> 16) & 0x0000FF00) | (($dp >> 8) & 0x000000FF); + $val2 = (($cp << 8) & 0xFF000000) | (($cp << 16) & 0x00FF0000) | + (($dp >> 8) & 0x0000FF00) | ( $dp & 0x000000FF); + $keys[$des_round][CRYPT_DES_ENCRYPT][ ] = $val1; + $keys[$des_round][CRYPT_DES_DECRYPT][$ki - 1] = $val1; + $keys[$des_round][CRYPT_DES_ENCRYPT][ ] = $val2; + $keys[$des_round][CRYPT_DES_DECRYPT][$ki ] = $val2; + } + } + + switch ($this->des_rounds) { + case 3: // 3DES keys + $this->keys = array( + CRYPT_DES_ENCRYPT => array_merge( + $keys[0][CRYPT_DES_ENCRYPT], + $keys[1][CRYPT_DES_DECRYPT], + $keys[2][CRYPT_DES_ENCRYPT] + ), + CRYPT_DES_DECRYPT => array_merge( + $keys[2][CRYPT_DES_DECRYPT], + $keys[1][CRYPT_DES_ENCRYPT], + $keys[0][CRYPT_DES_DECRYPT] + ) + ); + break; + // case 1: // DES keys + default: + $this->keys = array( + CRYPT_DES_ENCRYPT => $keys[0][CRYPT_DES_ENCRYPT], + CRYPT_DES_DECRYPT => $keys[0][CRYPT_DES_DECRYPT] + ); + } + } + + /** + * Setup the performance-optimized function for de/encrypt() + * + * @see Crypt_Base::_setupInlineCrypt() + * @access private + */ + function _setupInlineCrypt() + { + $lambda_functions =& Crypt_DES::_getLambdaFunctions(); + + // Engine configuration for: + // - DES ($des_rounds == 1) or + // - 3DES ($des_rounds == 3) + $des_rounds = $this->des_rounds; + + // We create max. 10 hi-optimized code for memory reason. Means: For each $key one ultra fast inline-crypt function. + // (Currently, for Crypt_DES, one generated $lambda_function cost on php5.5@32bit ~135kb unfreeable mem and ~230kb on php5.5@64bit) + // (Currently, for Crypt_TripleDES, one generated $lambda_function cost on php5.5@32bit ~240kb unfreeable mem and ~340kb on php5.5@64bit) + // After that, we'll still create very fast optimized code but not the hi-ultimative code, for each $mode one + $gen_hi_opt_code = (bool)( count($lambda_functions) < 10 ); + + // Generation of a unique hash for our generated code + $code_hash = "Crypt_DES, $des_rounds, {$this->mode}"; + if ($gen_hi_opt_code) { + // For hi-optimized code, we create for each combination of + // $mode, $des_rounds and $this->key its own encrypt/decrypt function. + // After max 10 hi-optimized functions, we create generic + // (still very fast.. but not ultra) functions for each $mode/$des_rounds + // Currently 2 * 5 generic functions will be then max. possible. + $code_hash = str_pad($code_hash, 32) . $this->_hashInlineCryptFunction($this->key); + } + + // Is there a re-usable $lambda_functions in there? If not, we have to create it. + if (!isset($lambda_functions[$code_hash])) { + // Init code for both, encrypt and decrypt. + $init_crypt = 'static $sbox1, $sbox2, $sbox3, $sbox4, $sbox5, $sbox6, $sbox7, $sbox8, $shuffleip, $shuffleinvip; + if (!$sbox1) { + $sbox1 = array_map("intval", $self->sbox1); + $sbox2 = array_map("intval", $self->sbox2); + $sbox3 = array_map("intval", $self->sbox3); + $sbox4 = array_map("intval", $self->sbox4); + $sbox5 = array_map("intval", $self->sbox5); + $sbox6 = array_map("intval", $self->sbox6); + $sbox7 = array_map("intval", $self->sbox7); + $sbox8 = array_map("intval", $self->sbox8);' + /* Merge $shuffle with $[inv]ipmap */ . ' + for ($i = 0; $i < 256; ++$i) { + $shuffleip[] = $self->shuffle[$self->ipmap[$i]]; + $shuffleinvip[] = $self->shuffle[$self->invipmap[$i]]; + } + } + '; + + switch (true) { + case $gen_hi_opt_code: + // In Hi-optimized code mode, we use our [3]DES key schedule as hardcoded integers. + // No futher initialisation of the $keys schedule is necessary. + // That is the extra performance boost. + $k = array( + CRYPT_DES_ENCRYPT => $this->keys[CRYPT_DES_ENCRYPT], + CRYPT_DES_DECRYPT => $this->keys[CRYPT_DES_DECRYPT] + ); + $init_encrypt = ''; + $init_decrypt = ''; + break; + default: + // In generic optimized code mode, we have to use, as the best compromise [currently], + // our key schedule as $ke/$kd arrays. (with hardcoded indexes...) + $k = array( + CRYPT_DES_ENCRYPT => array(), + CRYPT_DES_DECRYPT => array() + ); + for ($i = 0, $c = count($this->keys[CRYPT_DES_ENCRYPT]); $i < $c; ++$i) { + $k[CRYPT_DES_ENCRYPT][$i] = '$ke[' . $i . ']'; + $k[CRYPT_DES_DECRYPT][$i] = '$kd[' . $i . ']'; + } + $init_encrypt = '$ke = $self->keys[CRYPT_DES_ENCRYPT];'; + $init_decrypt = '$kd = $self->keys[CRYPT_DES_DECRYPT];'; + break; + } + + // Creating code for en- and decryption. + $crypt_block = array(); + foreach (array(CRYPT_DES_ENCRYPT, CRYPT_DES_DECRYPT) as $c) { + /* Do the initial IP permutation. */ + $crypt_block[$c] = ' + $in = unpack("N*", $in); + $l = $in[1]; + $r = $in[2]; + $in = unpack("N*", + ($shuffleip[ $r & 0xFF] & "\x80\x80\x80\x80\x80\x80\x80\x80") | + ($shuffleip[($r >> 8) & 0xFF] & "\x40\x40\x40\x40\x40\x40\x40\x40") | + ($shuffleip[($r >> 16) & 0xFF] & "\x20\x20\x20\x20\x20\x20\x20\x20") | + ($shuffleip[($r >> 24) & 0xFF] & "\x10\x10\x10\x10\x10\x10\x10\x10") | + ($shuffleip[ $l & 0xFF] & "\x08\x08\x08\x08\x08\x08\x08\x08") | + ($shuffleip[($l >> 8) & 0xFF] & "\x04\x04\x04\x04\x04\x04\x04\x04") | + ($shuffleip[($l >> 16) & 0xFF] & "\x02\x02\x02\x02\x02\x02\x02\x02") | + ($shuffleip[($l >> 24) & 0xFF] & "\x01\x01\x01\x01\x01\x01\x01\x01") + ); + ' . /* Extract L0 and R0 */ ' + $l = $in[1]; + $r = $in[2]; + '; + + $l = '$l'; + $r = '$r'; + + // Perform DES or 3DES. + for ($ki = -1, $des_round = 0; $des_round < $des_rounds; ++$des_round) { + // Perform the 16 steps. + for ($i = 0; $i < 16; ++$i) { + // start of "the Feistel (F) function" - see the following URL: + // http://en.wikipedia.org/wiki/Image:Data_Encryption_Standard_InfoBox_Diagram.png + // Merge key schedule. + $crypt_block[$c].= ' + $b1 = ((' . $r . ' >> 3) & 0x1FFFFFFF) ^ (' . $r . ' << 29) ^ ' . $k[$c][++$ki] . '; + $b2 = ((' . $r . ' >> 31) & 0x00000001) ^ (' . $r . ' << 1) ^ ' . $k[$c][++$ki] . ';' . + /* S-box indexing. */ + $l . ' = $sbox1[($b1 >> 24) & 0x3F] ^ $sbox2[($b2 >> 24) & 0x3F] ^ + $sbox3[($b1 >> 16) & 0x3F] ^ $sbox4[($b2 >> 16) & 0x3F] ^ + $sbox5[($b1 >> 8) & 0x3F] ^ $sbox6[($b2 >> 8) & 0x3F] ^ + $sbox7[ $b1 & 0x3F] ^ $sbox8[ $b2 & 0x3F] ^ ' . $l . '; + '; + // end of "the Feistel (F) function" + + // swap L & R + list($l, $r) = array($r, $l); + } + list($l, $r) = array($r, $l); + } + + // Perform the inverse IP permutation. + $crypt_block[$c].= '$in = + ($shuffleinvip[($l >> 24) & 0xFF] & "\x80\x80\x80\x80\x80\x80\x80\x80") | + ($shuffleinvip[($r >> 24) & 0xFF] & "\x40\x40\x40\x40\x40\x40\x40\x40") | + ($shuffleinvip[($l >> 16) & 0xFF] & "\x20\x20\x20\x20\x20\x20\x20\x20") | + ($shuffleinvip[($r >> 16) & 0xFF] & "\x10\x10\x10\x10\x10\x10\x10\x10") | + ($shuffleinvip[($l >> 8) & 0xFF] & "\x08\x08\x08\x08\x08\x08\x08\x08") | + ($shuffleinvip[($r >> 8) & 0xFF] & "\x04\x04\x04\x04\x04\x04\x04\x04") | + ($shuffleinvip[ $l & 0xFF] & "\x02\x02\x02\x02\x02\x02\x02\x02") | + ($shuffleinvip[ $r & 0xFF] & "\x01\x01\x01\x01\x01\x01\x01\x01"); + '; + } + + // Creates the inline-crypt function + $lambda_functions[$code_hash] = $this->_createInlineCryptFunction( + array( + 'init_crypt' => $init_crypt, + 'init_encrypt' => $init_encrypt, + 'init_decrypt' => $init_decrypt, + 'encrypt_block' => $crypt_block[CRYPT_DES_ENCRYPT], + 'decrypt_block' => $crypt_block[CRYPT_DES_DECRYPT] + ) + ); + } + + // Set the inline-crypt function as callback in: $this->inline_crypt + $this->inline_crypt = $lambda_functions[$code_hash]; + } +} diff --git a/plugins/updraftplus/includes/phpseclib/Crypt/Hash.php b/plugins/updraftplus/includes/phpseclib/Crypt/Hash.php new file mode 100644 index 0000000..ca421ac --- /dev/null +++ b/plugins/updraftplus/includes/phpseclib/Crypt/Hash.php @@ -0,0 +1,861 @@ + + * setKey('abcdefg'); + * + * echo base64_encode($hash->hash('abcdefg')); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_Hash + * @author Jim Wigginton + * @copyright 2007 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/**#@+ + * @access private + * @see self::Crypt_Hash() + */ +/** + * Toggles the internal implementation + */ +define('CRYPT_HASH_MODE_INTERNAL', 1); +/** + * Toggles the mhash() implementation, which has been deprecated on PHP 5.3.0+. + */ +define('CRYPT_HASH_MODE_MHASH', 2); +/** + * Toggles the hash() implementation, which works on PHP 5.1.2+. + */ +define('CRYPT_HASH_MODE_HASH', 3); +/**#@-*/ + +/** + * Pure-PHP implementations of keyed-hash message authentication codes (HMACs) and various cryptographic hashing functions. + * + * @package Crypt_Hash + * @author Jim Wigginton + * @access public + */ +class Crypt_Hash +{ + /** + * Hash Parameter + * + * @see self::setHash() + * @var int + * @access private + */ + var $hashParam; + + /** + * Byte-length of compression blocks / key (Internal HMAC) + * + * @see self::setAlgorithm() + * @var int + * @access private + */ + var $b; + + /** + * Byte-length of hash output (Internal HMAC) + * + * @see self::setHash() + * @var int + * @access private + */ + var $l = false; + + /** + * Hash Algorithm + * + * @see self::setHash() + * @var string + * @access private + */ + var $hash; + + /** + * Key + * + * @see self::setKey() + * @var string + * @access private + */ + var $key = false; + + /** + * Outer XOR (Internal HMAC) + * + * @see self::setKey() + * @var string + * @access private + */ + var $opad; + + /** + * Inner XOR (Internal HMAC) + * + * @see self::setKey() + * @var string + * @access private + */ + var $ipad; + + /** + * Default Constructor. + * + * @param string $hash + * @return Crypt_Hash + * @access public + */ + function __construct($hash = 'sha1') + { + if (!defined('CRYPT_HASH_MODE')) { + switch (true) { + case extension_loaded('hash'): + define('CRYPT_HASH_MODE', CRYPT_HASH_MODE_HASH); + break; + case extension_loaded('mhash'): + define('CRYPT_HASH_MODE', CRYPT_HASH_MODE_MHASH); + break; + default: + define('CRYPT_HASH_MODE', CRYPT_HASH_MODE_INTERNAL); + } + } + + $this->setHash($hash); + } + + /** + * PHP4 compatible Default Constructor. + * + * @see self::__construct() + * @param int $mode + * @access public + */ + function Crypt_Hash($hash = 'sha1') + { + $this->__construct($mode); + } + + /** + * Sets the key for HMACs + * + * Keys can be of any length. + * + * @access public + * @param string $key + */ + function setKey($key = false) + { + $this->key = $key; + } + + /** + * Gets the hash function. + * + * As set by the constructor or by the setHash() method. + * + * @access public + * @return string + */ + function getHash() + { + return $this->hashParam; + } + + /** + * Sets the hash function. + * + * @access public + * @param string $hash + */ + function setHash($hash) + { + $this->hashParam = $hash = strtolower($hash); + switch ($hash) { + case 'md5-96': + case 'sha1-96': + case 'sha256-96': + case 'sha512-96': + $hash = substr($hash, 0, -3); + $this->l = 12; // 96 / 8 = 12 + break; + case 'md2': + case 'md5': + $this->l = 16; + break; + case 'sha1': + $this->l = 20; + break; + case 'sha256': + $this->l = 32; + break; + case 'sha384': + $this->l = 48; + break; + case 'sha512': + $this->l = 64; + } + + switch ($hash) { + case 'md2': + $mode = CRYPT_HASH_MODE == CRYPT_HASH_MODE_HASH && in_array('md2', hash_algos()) ? + CRYPT_HASH_MODE_HASH : CRYPT_HASH_MODE_INTERNAL; + break; + case 'sha384': + case 'sha512': + $mode = CRYPT_HASH_MODE == CRYPT_HASH_MODE_MHASH ? CRYPT_HASH_MODE_INTERNAL : CRYPT_HASH_MODE; + break; + default: + $mode = CRYPT_HASH_MODE; + } + + switch ($mode) { + case CRYPT_HASH_MODE_MHASH: + switch ($hash) { + case 'md5': + $this->hash = MHASH_MD5; + break; + case 'sha256': + $this->hash = MHASH_SHA256; + break; + case 'sha1': + default: + $this->hash = MHASH_SHA1; + } + return; + case CRYPT_HASH_MODE_HASH: + switch ($hash) { + case 'md5': + $this->hash = 'md5'; + return; + case 'md2': + case 'sha256': + case 'sha384': + case 'sha512': + $this->hash = $hash; + return; + case 'sha1': + default: + $this->hash = 'sha1'; + } + return; + } + + switch ($hash) { + case 'md2': + $this->b = 16; + $this->hash = array($this, '_md2'); + break; + case 'md5': + $this->b = 64; + $this->hash = array($this, '_md5'); + break; + case 'sha256': + $this->b = 64; + $this->hash = array($this, '_sha256'); + break; + case 'sha384': + case 'sha512': + $this->b = 128; + $this->hash = array($this, '_sha512'); + break; + case 'sha1': + default: + $this->b = 64; + $this->hash = array($this, '_sha1'); + } + + $this->ipad = str_repeat(chr(0x36), $this->b); + $this->opad = str_repeat(chr(0x5C), $this->b); + } + + /** + * Compute the HMAC. + * + * @access public + * @param string $text + * @return string + */ + function hash($text) + { + $mode = is_array($this->hash) ? CRYPT_HASH_MODE_INTERNAL : CRYPT_HASH_MODE; + + if (!empty($this->key) || is_string($this->key)) { + switch ($mode) { + case CRYPT_HASH_MODE_MHASH: + $output = mhash($this->hash, $text, $this->key); + break; + case CRYPT_HASH_MODE_HASH: + $output = hash_hmac($this->hash, $text, $this->key, true); + break; + case CRYPT_HASH_MODE_INTERNAL: + /* "Applications that use keys longer than B bytes will first hash the key using H and then use the + resultant L byte string as the actual key to HMAC." + + -- http://tools.ietf.org/html/rfc2104#section-2 */ + $key = strlen($this->key) > $this->b ? call_user_func($this->hash, $this->key) : $this->key; + + $key = str_pad($key, $this->b, chr(0)); // step 1 + $temp = $this->ipad ^ $key; // step 2 + $temp .= $text; // step 3 + $temp = call_user_func($this->hash, $temp); // step 4 + $output = $this->opad ^ $key; // step 5 + $output.= $temp; // step 6 + $output = call_user_func($this->hash, $output); // step 7 + } + } else { + switch ($mode) { + case CRYPT_HASH_MODE_MHASH: + $output = mhash($this->hash, $text); + break; + case CRYPT_HASH_MODE_HASH: + $output = hash($this->hash, $text, true); + break; + case CRYPT_HASH_MODE_INTERNAL: + $output = call_user_func($this->hash, $text); + } + } + + return substr($output, 0, $this->l); + } + + /** + * Returns the hash length (in bytes) + * + * @access public + * @return int + */ + function getLength() + { + return $this->l; + } + + /** + * Wrapper for MD5 + * + * @access private + * @param string $m + */ + function _md5($m) + { + return pack('H*', md5($m)); + } + + /** + * Wrapper for SHA1 + * + * @access private + * @param string $m + */ + function _sha1($m) + { + return pack('H*', sha1($m)); + } + + /** + * Pure-PHP implementation of MD2 + * + * See {@link http://tools.ietf.org/html/rfc1319 RFC1319}. + * + * @access private + * @param string $m + */ + function _md2($m) + { + static $s = array( + 41, 46, 67, 201, 162, 216, 124, 1, 61, 54, 84, 161, 236, 240, 6, + 19, 98, 167, 5, 243, 192, 199, 115, 140, 152, 147, 43, 217, 188, + 76, 130, 202, 30, 155, 87, 60, 253, 212, 224, 22, 103, 66, 111, 24, + 138, 23, 229, 18, 190, 78, 196, 214, 218, 158, 222, 73, 160, 251, + 245, 142, 187, 47, 238, 122, 169, 104, 121, 145, 21, 178, 7, 63, + 148, 194, 16, 137, 11, 34, 95, 33, 128, 127, 93, 154, 90, 144, 50, + 39, 53, 62, 204, 231, 191, 247, 151, 3, 255, 25, 48, 179, 72, 165, + 181, 209, 215, 94, 146, 42, 172, 86, 170, 198, 79, 184, 56, 210, + 150, 164, 125, 182, 118, 252, 107, 226, 156, 116, 4, 241, 69, 157, + 112, 89, 100, 113, 135, 32, 134, 91, 207, 101, 230, 45, 168, 2, 27, + 96, 37, 173, 174, 176, 185, 246, 28, 70, 97, 105, 52, 64, 126, 15, + 85, 71, 163, 35, 221, 81, 175, 58, 195, 92, 249, 206, 186, 197, + 234, 38, 44, 83, 13, 110, 133, 40, 132, 9, 211, 223, 205, 244, 65, + 129, 77, 82, 106, 220, 55, 200, 108, 193, 171, 250, 36, 225, 123, + 8, 12, 189, 177, 74, 120, 136, 149, 139, 227, 99, 232, 109, 233, + 203, 213, 254, 59, 0, 29, 57, 242, 239, 183, 14, 102, 88, 208, 228, + 166, 119, 114, 248, 235, 117, 75, 10, 49, 68, 80, 180, 143, 237, + 31, 26, 219, 153, 141, 51, 159, 17, 131, 20 + ); + + // Step 1. Append Padding Bytes + $pad = 16 - (strlen($m) & 0xF); + $m.= str_repeat(chr($pad), $pad); + + $length = strlen($m); + + // Step 2. Append Checksum + $c = str_repeat(chr(0), 16); + $l = chr(0); + for ($i = 0; $i < $length; $i+= 16) { + for ($j = 0; $j < 16; $j++) { + // RFC1319 incorrectly states that C[j] should be set to S[c xor L] + //$c[$j] = chr($s[ord($m[$i + $j] ^ $l)]); + // per , however, C[j] should be set to S[c xor L] xor C[j] + $c[$j] = chr($s[ord($m[$i + $j] ^ $l)] ^ ord($c[$j])); + $l = $c[$j]; + } + } + $m.= $c; + + $length+= 16; + + // Step 3. Initialize MD Buffer + $x = str_repeat(chr(0), 48); + + // Step 4. Process Message in 16-Byte Blocks + for ($i = 0; $i < $length; $i+= 16) { + for ($j = 0; $j < 16; $j++) { + $x[$j + 16] = $m[$i + $j]; + $x[$j + 32] = $x[$j + 16] ^ $x[$j]; + } + $t = chr(0); + for ($j = 0; $j < 18; $j++) { + for ($k = 0; $k < 48; $k++) { + $x[$k] = $t = $x[$k] ^ chr($s[ord($t)]); + //$t = $x[$k] = $x[$k] ^ chr($s[ord($t)]); + } + $t = chr(ord($t) + $j); + } + } + + // Step 5. Output + return substr($x, 0, 16); + } + + /** + * Pure-PHP implementation of SHA256 + * + * See {@link http://en.wikipedia.org/wiki/SHA_hash_functions#SHA-256_.28a_SHA-2_variant.29_pseudocode SHA-256 (a SHA-2 variant) pseudocode - Wikipedia}. + * + * @access private + * @param string $m + */ + function _sha256($m) + { + if (extension_loaded('suhosin')) { + return pack('H*', sha256($m)); + } + + // Initialize variables + $hash = array( + 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 + ); + // Initialize table of round constants + // (first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311) + static $k = array( + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 + ); + + // Pre-processing + $length = strlen($m); + // to round to nearest 56 mod 64, we'll add 64 - (length + (64 - 56)) % 64 + $m.= str_repeat(chr(0), 64 - (($length + 8) & 0x3F)); + $m[$length] = chr(0x80); + // we don't support hashing strings 512MB long + $m.= pack('N2', 0, $length << 3); + + // Process the message in successive 512-bit chunks + $chunks = str_split($m, 64); + foreach ($chunks as $chunk) { + $w = array(); + for ($i = 0; $i < 16; $i++) { + extract(unpack('Ntemp', $this->_string_shift($chunk, 4))); + $w[] = $temp; + } + + // Extend the sixteen 32-bit words into sixty-four 32-bit words + for ($i = 16; $i < 64; $i++) { + // @codingStandardsIgnoreStart + $s0 = $this->_rightRotate($w[$i - 15], 7) ^ + $this->_rightRotate($w[$i - 15], 18) ^ + $this->_rightShift( $w[$i - 15], 3); + $s1 = $this->_rightRotate($w[$i - 2], 17) ^ + $this->_rightRotate($w[$i - 2], 19) ^ + $this->_rightShift( $w[$i - 2], 10); + // @codingStandardsIgnoreEnd + $w[$i] = $this->_add($w[$i - 16], $s0, $w[$i - 7], $s1); + } + + // Initialize hash value for this chunk + list($a, $b, $c, $d, $e, $f, $g, $h) = $hash; + + // Main loop + for ($i = 0; $i < 64; $i++) { + $s0 = $this->_rightRotate($a, 2) ^ + $this->_rightRotate($a, 13) ^ + $this->_rightRotate($a, 22); + $maj = ($a & $b) ^ + ($a & $c) ^ + ($b & $c); + $t2 = $this->_add($s0, $maj); + + $s1 = $this->_rightRotate($e, 6) ^ + $this->_rightRotate($e, 11) ^ + $this->_rightRotate($e, 25); + $ch = ($e & $f) ^ + ($this->_not($e) & $g); + $t1 = $this->_add($h, $s1, $ch, $k[$i], $w[$i]); + + $h = $g; + $g = $f; + $f = $e; + $e = $this->_add($d, $t1); + $d = $c; + $c = $b; + $b = $a; + $a = $this->_add($t1, $t2); + } + + // Add this chunk's hash to result so far + $hash = array( + $this->_add($hash[0], $a), + $this->_add($hash[1], $b), + $this->_add($hash[2], $c), + $this->_add($hash[3], $d), + $this->_add($hash[4], $e), + $this->_add($hash[5], $f), + $this->_add($hash[6], $g), + $this->_add($hash[7], $h) + ); + } + + // Produce the final hash value (big-endian) + return pack('N8', $hash[0], $hash[1], $hash[2], $hash[3], $hash[4], $hash[5], $hash[6], $hash[7]); + } + + /** + * Pure-PHP implementation of SHA384 and SHA512 + * + * @access private + * @param string $m + */ + function _sha512($m) + { + if (!class_exists('Math_BigInteger')) { + include_once 'Math/BigInteger.php'; + } + + static $init384, $init512, $k; + + if (!isset($k)) { + // Initialize variables + $init384 = array( // initial values for SHA384 + 'cbbb9d5dc1059ed8', '629a292a367cd507', '9159015a3070dd17', '152fecd8f70e5939', + '67332667ffc00b31', '8eb44a8768581511', 'db0c2e0d64f98fa7', '47b5481dbefa4fa4' + ); + $init512 = array( // initial values for SHA512 + '6a09e667f3bcc908', 'bb67ae8584caa73b', '3c6ef372fe94f82b', 'a54ff53a5f1d36f1', + '510e527fade682d1', '9b05688c2b3e6c1f', '1f83d9abfb41bd6b', '5be0cd19137e2179' + ); + + for ($i = 0; $i < 8; $i++) { + $init384[$i] = new Math_BigInteger($init384[$i], 16); + $init384[$i]->setPrecision(64); + $init512[$i] = new Math_BigInteger($init512[$i], 16); + $init512[$i]->setPrecision(64); + } + + // Initialize table of round constants + // (first 64 bits of the fractional parts of the cube roots of the first 80 primes 2..409) + $k = array( + '428a2f98d728ae22', '7137449123ef65cd', 'b5c0fbcfec4d3b2f', 'e9b5dba58189dbbc', + '3956c25bf348b538', '59f111f1b605d019', '923f82a4af194f9b', 'ab1c5ed5da6d8118', + 'd807aa98a3030242', '12835b0145706fbe', '243185be4ee4b28c', '550c7dc3d5ffb4e2', + '72be5d74f27b896f', '80deb1fe3b1696b1', '9bdc06a725c71235', 'c19bf174cf692694', + 'e49b69c19ef14ad2', 'efbe4786384f25e3', '0fc19dc68b8cd5b5', '240ca1cc77ac9c65', + '2de92c6f592b0275', '4a7484aa6ea6e483', '5cb0a9dcbd41fbd4', '76f988da831153b5', + '983e5152ee66dfab', 'a831c66d2db43210', 'b00327c898fb213f', 'bf597fc7beef0ee4', + 'c6e00bf33da88fc2', 'd5a79147930aa725', '06ca6351e003826f', '142929670a0e6e70', + '27b70a8546d22ffc', '2e1b21385c26c926', '4d2c6dfc5ac42aed', '53380d139d95b3df', + '650a73548baf63de', '766a0abb3c77b2a8', '81c2c92e47edaee6', '92722c851482353b', + 'a2bfe8a14cf10364', 'a81a664bbc423001', 'c24b8b70d0f89791', 'c76c51a30654be30', + 'd192e819d6ef5218', 'd69906245565a910', 'f40e35855771202a', '106aa07032bbd1b8', + '19a4c116b8d2d0c8', '1e376c085141ab53', '2748774cdf8eeb99', '34b0bcb5e19b48a8', + '391c0cb3c5c95a63', '4ed8aa4ae3418acb', '5b9cca4f7763e373', '682e6ff3d6b2b8a3', + '748f82ee5defb2fc', '78a5636f43172f60', '84c87814a1f0ab72', '8cc702081a6439ec', + '90befffa23631e28', 'a4506cebde82bde9', 'bef9a3f7b2c67915', 'c67178f2e372532b', + 'ca273eceea26619c', 'd186b8c721c0c207', 'eada7dd6cde0eb1e', 'f57d4f7fee6ed178', + '06f067aa72176fba', '0a637dc5a2c898a6', '113f9804bef90dae', '1b710b35131c471b', + '28db77f523047d84', '32caab7b40c72493', '3c9ebe0a15c9bebc', '431d67c49c100d4c', + '4cc5d4becb3e42b6', '597f299cfc657e2a', '5fcb6fab3ad6faec', '6c44198c4a475817' + ); + + for ($i = 0; $i < 80; $i++) { + $k[$i] = new Math_BigInteger($k[$i], 16); + } + } + + $hash = $this->l == 48 ? $init384 : $init512; + + // Pre-processing + $length = strlen($m); + // to round to nearest 112 mod 128, we'll add 128 - (length + (128 - 112)) % 128 + $m.= str_repeat(chr(0), 128 - (($length + 16) & 0x7F)); + $m[$length] = chr(0x80); + // we don't support hashing strings 512MB long + $m.= pack('N4', 0, 0, 0, $length << 3); + + // Process the message in successive 1024-bit chunks + $chunks = str_split($m, 128); + foreach ($chunks as $chunk) { + $w = array(); + for ($i = 0; $i < 16; $i++) { + $temp = new Math_BigInteger($this->_string_shift($chunk, 8), 256); + $temp->setPrecision(64); + $w[] = $temp; + } + + // Extend the sixteen 32-bit words into eighty 32-bit words + for ($i = 16; $i < 80; $i++) { + $temp = array( + $w[$i - 15]->bitwise_rightRotate(1), + $w[$i - 15]->bitwise_rightRotate(8), + $w[$i - 15]->bitwise_rightShift(7) + ); + $s0 = $temp[0]->bitwise_xor($temp[1]); + $s0 = $s0->bitwise_xor($temp[2]); + $temp = array( + $w[$i - 2]->bitwise_rightRotate(19), + $w[$i - 2]->bitwise_rightRotate(61), + $w[$i - 2]->bitwise_rightShift(6) + ); + $s1 = $temp[0]->bitwise_xor($temp[1]); + $s1 = $s1->bitwise_xor($temp[2]); + $w[$i] = $w[$i - 16]->copy(); + $w[$i] = $w[$i]->add($s0); + $w[$i] = $w[$i]->add($w[$i - 7]); + $w[$i] = $w[$i]->add($s1); + } + + // Initialize hash value for this chunk + $a = $hash[0]->copy(); + $b = $hash[1]->copy(); + $c = $hash[2]->copy(); + $d = $hash[3]->copy(); + $e = $hash[4]->copy(); + $f = $hash[5]->copy(); + $g = $hash[6]->copy(); + $h = $hash[7]->copy(); + + // Main loop + for ($i = 0; $i < 80; $i++) { + $temp = array( + $a->bitwise_rightRotate(28), + $a->bitwise_rightRotate(34), + $a->bitwise_rightRotate(39) + ); + $s0 = $temp[0]->bitwise_xor($temp[1]); + $s0 = $s0->bitwise_xor($temp[2]); + $temp = array( + $a->bitwise_and($b), + $a->bitwise_and($c), + $b->bitwise_and($c) + ); + $maj = $temp[0]->bitwise_xor($temp[1]); + $maj = $maj->bitwise_xor($temp[2]); + $t2 = $s0->add($maj); + + $temp = array( + $e->bitwise_rightRotate(14), + $e->bitwise_rightRotate(18), + $e->bitwise_rightRotate(41) + ); + $s1 = $temp[0]->bitwise_xor($temp[1]); + $s1 = $s1->bitwise_xor($temp[2]); + $temp = array( + $e->bitwise_and($f), + $g->bitwise_and($e->bitwise_not()) + ); + $ch = $temp[0]->bitwise_xor($temp[1]); + $t1 = $h->add($s1); + $t1 = $t1->add($ch); + $t1 = $t1->add($k[$i]); + $t1 = $t1->add($w[$i]); + + $h = $g->copy(); + $g = $f->copy(); + $f = $e->copy(); + $e = $d->add($t1); + $d = $c->copy(); + $c = $b->copy(); + $b = $a->copy(); + $a = $t1->add($t2); + } + + // Add this chunk's hash to result so far + $hash = array( + $hash[0]->add($a), + $hash[1]->add($b), + $hash[2]->add($c), + $hash[3]->add($d), + $hash[4]->add($e), + $hash[5]->add($f), + $hash[6]->add($g), + $hash[7]->add($h) + ); + } + + // Produce the final hash value (big-endian) + // (Crypt_Hash::hash() trims the output for hashes but not for HMACs. as such, we trim the output here) + $temp = $hash[0]->toBytes() . $hash[1]->toBytes() . $hash[2]->toBytes() . $hash[3]->toBytes() . + $hash[4]->toBytes() . $hash[5]->toBytes(); + if ($this->l != 48) { + $temp.= $hash[6]->toBytes() . $hash[7]->toBytes(); + } + + return $temp; + } + + /** + * Right Rotate + * + * @access private + * @param int $int + * @param int $amt + * @see self::_sha256() + * @return int + */ + function _rightRotate($int, $amt) + { + $invamt = 32 - $amt; + $mask = (1 << $invamt) - 1; + return (($int << $invamt) & 0xFFFFFFFF) | (($int >> $amt) & $mask); + } + + /** + * Right Shift + * + * @access private + * @param int $int + * @param int $amt + * @see self::_sha256() + * @return int + */ + function _rightShift($int, $amt) + { + $mask = (1 << (32 - $amt)) - 1; + return ($int >> $amt) & $mask; + } + + /** + * Not + * + * @access private + * @param int $int + * @see self::_sha256() + * @return int + */ + function _not($int) + { + return ~$int & 0xFFFFFFFF; + } + + /** + * Add + * + * _sha256() adds multiple unsigned 32-bit integers. Since PHP doesn't support unsigned integers and since the + * possibility of overflow exists, care has to be taken. Math_BigInteger() could be used but this should be faster. + * + * @param int $... + * @return int + * @see self::_sha256() + * @access private + */ + function _add() + { + static $mod; + if (!isset($mod)) { + $mod = pow(2, 32); + } + + $result = 0; + $arguments = func_get_args(); + foreach ($arguments as $argument) { + $result+= $argument < 0 ? ($argument & 0x7FFFFFFF) + 0x80000000 : $argument; + } + + // PHP 5.3, per http://php.net/releases/5_3_0.php, introduced "more consistent float rounding" + // PHP_OS & "\xDF\xDF\xDF" == strtoupper(substr(PHP_OS, 0, 3)), but a lot faster + if (is_int($result) || version_compare(PHP_VERSION, '5.3.0') >= 0 || (PHP_OS & "\xDF\xDF\xDF") === 'WIN') { + return fmod($result, $mod); + } + + return (fmod($result, 0x80000000) & 0x7FFFFFFF) | + ((fmod(floor($result / 0x80000000), 2) & 1) << 31); + } + + /** + * String Shift + * + * Inspired by array_shift + * + * @param string $string + * @param int $index + * @return string + * @access private + */ + function _string_shift(&$string, $index = 1) + { + $substr = substr($string, 0, $index); + $string = substr($string, $index); + return $substr; + } +} diff --git a/plugins/updraftplus/includes/phpseclib/Crypt/RC2.php b/plugins/updraftplus/includes/phpseclib/Crypt/RC2.php new file mode 100644 index 0000000..97b4550 --- /dev/null +++ b/plugins/updraftplus/includes/phpseclib/Crypt/RC2.php @@ -0,0 +1,761 @@ + + * setKey('abcdefgh'); + * + * $plaintext = str_repeat('a', 1024); + * + * echo $rc2->decrypt($rc2->encrypt($plaintext)); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_RC2 + * @author Patrick Monnerat + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/** + * Include Crypt_Base + * + * Base cipher class + */ +if (!class_exists('Crypt_Base')) { + include_once 'Base.php'; +} + +/**#@+ + * @access public + * @see self::encrypt() + * @see self::decrypt() + */ +/** + * Encrypt / decrypt using the Counter mode. + * + * Set to -1 since that's what Crypt/Random.php uses to index the CTR mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Counter_.28CTR.29 + */ +define('CRYPT_RC2_MODE_CTR', CRYPT_MODE_CTR); +/** + * Encrypt / decrypt using the Electronic Code Book mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29 + */ +define('CRYPT_RC2_MODE_ECB', CRYPT_MODE_ECB); +/** + * Encrypt / decrypt using the Code Book Chaining mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29 + */ +define('CRYPT_RC2_MODE_CBC', CRYPT_MODE_CBC); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher_feedback_.28CFB.29 + */ +define('CRYPT_RC2_MODE_CFB', CRYPT_MODE_CFB); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Output_feedback_.28OFB.29 + */ +define('CRYPT_RC2_MODE_OFB', CRYPT_MODE_OFB); +/**#@-*/ + +/** + * Pure-PHP implementation of RC2. + * + * @package Crypt_RC2 + * @access public + */ +class Crypt_RC2 extends Crypt_Base +{ + /** + * Block Length of the cipher + * + * @see Crypt_Base::block_size + * @var int + * @access private + */ + var $block_size = 8; + + /** + * The Key + * + * @see Crypt_Base::key + * @see self::setKey() + * @var string + * @access private + */ + var $key; + + /** + * The Original (unpadded) Key + * + * @see Crypt_Base::key + * @see self::setKey() + * @see self::encrypt() + * @see self::decrypt() + * @var string + * @access private + */ + var $orig_key; + + /** + * Don't truncate / null pad key + * + * @see Crypt_Base::_clearBuffers() + * @var bool + * @access private + */ + var $skip_key_adjustment = true; + + /** + * Key Length (in bytes) + * + * @see Crypt_RC2::setKeyLength() + * @var int + * @access private + */ + var $key_length = 16; // = 128 bits + + /** + * The namespace used by the cipher for its constants. + * + * @see Crypt_Base::const_namespace + * @var string + * @access private + */ + var $const_namespace = 'RC2'; + + /** + * The mcrypt specific name of the cipher + * + * @see Crypt_Base::cipher_name_mcrypt + * @var string + * @access private + */ + var $cipher_name_mcrypt = 'rc2'; + + /** + * Optimizing value while CFB-encrypting + * + * @see Crypt_Base::cfb_init_len + * @var int + * @access private + */ + var $cfb_init_len = 500; + + /** + * The key length in bits. + * + * @see self::setKeyLength() + * @see self::setKey() + * @var int + * @access private + * @internal Should be in range [1..1024]. + * @internal Changing this value after setting the key has no effect. + */ + var $default_key_length = 1024; + + /** + * The key length in bits. + * + * @see self::isValidEnine() + * @see self::setKey() + * @var int + * @access private + * @internal Should be in range [1..1024]. + */ + var $current_key_length; + + /** + * The Key Schedule + * + * @see self::_setupKey() + * @var array + * @access private + */ + var $keys; + + /** + * Key expansion randomization table. + * Twice the same 256-value sequence to save a modulus in key expansion. + * + * @see self::setKey() + * @var array + * @access private + */ + var $pitable = array( + 0xD9, 0x78, 0xF9, 0xC4, 0x19, 0xDD, 0xB5, 0xED, + 0x28, 0xE9, 0xFD, 0x79, 0x4A, 0xA0, 0xD8, 0x9D, + 0xC6, 0x7E, 0x37, 0x83, 0x2B, 0x76, 0x53, 0x8E, + 0x62, 0x4C, 0x64, 0x88, 0x44, 0x8B, 0xFB, 0xA2, + 0x17, 0x9A, 0x59, 0xF5, 0x87, 0xB3, 0x4F, 0x13, + 0x61, 0x45, 0x6D, 0x8D, 0x09, 0x81, 0x7D, 0x32, + 0xBD, 0x8F, 0x40, 0xEB, 0x86, 0xB7, 0x7B, 0x0B, + 0xF0, 0x95, 0x21, 0x22, 0x5C, 0x6B, 0x4E, 0x82, + 0x54, 0xD6, 0x65, 0x93, 0xCE, 0x60, 0xB2, 0x1C, + 0x73, 0x56, 0xC0, 0x14, 0xA7, 0x8C, 0xF1, 0xDC, + 0x12, 0x75, 0xCA, 0x1F, 0x3B, 0xBE, 0xE4, 0xD1, + 0x42, 0x3D, 0xD4, 0x30, 0xA3, 0x3C, 0xB6, 0x26, + 0x6F, 0xBF, 0x0E, 0xDA, 0x46, 0x69, 0x07, 0x57, + 0x27, 0xF2, 0x1D, 0x9B, 0xBC, 0x94, 0x43, 0x03, + 0xF8, 0x11, 0xC7, 0xF6, 0x90, 0xEF, 0x3E, 0xE7, + 0x06, 0xC3, 0xD5, 0x2F, 0xC8, 0x66, 0x1E, 0xD7, + 0x08, 0xE8, 0xEA, 0xDE, 0x80, 0x52, 0xEE, 0xF7, + 0x84, 0xAA, 0x72, 0xAC, 0x35, 0x4D, 0x6A, 0x2A, + 0x96, 0x1A, 0xD2, 0x71, 0x5A, 0x15, 0x49, 0x74, + 0x4B, 0x9F, 0xD0, 0x5E, 0x04, 0x18, 0xA4, 0xEC, + 0xC2, 0xE0, 0x41, 0x6E, 0x0F, 0x51, 0xCB, 0xCC, + 0x24, 0x91, 0xAF, 0x50, 0xA1, 0xF4, 0x70, 0x39, + 0x99, 0x7C, 0x3A, 0x85, 0x23, 0xB8, 0xB4, 0x7A, + 0xFC, 0x02, 0x36, 0x5B, 0x25, 0x55, 0x97, 0x31, + 0x2D, 0x5D, 0xFA, 0x98, 0xE3, 0x8A, 0x92, 0xAE, + 0x05, 0xDF, 0x29, 0x10, 0x67, 0x6C, 0xBA, 0xC9, + 0xD3, 0x00, 0xE6, 0xCF, 0xE1, 0x9E, 0xA8, 0x2C, + 0x63, 0x16, 0x01, 0x3F, 0x58, 0xE2, 0x89, 0xA9, + 0x0D, 0x38, 0x34, 0x1B, 0xAB, 0x33, 0xFF, 0xB0, + 0xBB, 0x48, 0x0C, 0x5F, 0xB9, 0xB1, 0xCD, 0x2E, + 0xC5, 0xF3, 0xDB, 0x47, 0xE5, 0xA5, 0x9C, 0x77, + 0x0A, 0xA6, 0x20, 0x68, 0xFE, 0x7F, 0xC1, 0xAD, + 0xD9, 0x78, 0xF9, 0xC4, 0x19, 0xDD, 0xB5, 0xED, + 0x28, 0xE9, 0xFD, 0x79, 0x4A, 0xA0, 0xD8, 0x9D, + 0xC6, 0x7E, 0x37, 0x83, 0x2B, 0x76, 0x53, 0x8E, + 0x62, 0x4C, 0x64, 0x88, 0x44, 0x8B, 0xFB, 0xA2, + 0x17, 0x9A, 0x59, 0xF5, 0x87, 0xB3, 0x4F, 0x13, + 0x61, 0x45, 0x6D, 0x8D, 0x09, 0x81, 0x7D, 0x32, + 0xBD, 0x8F, 0x40, 0xEB, 0x86, 0xB7, 0x7B, 0x0B, + 0xF0, 0x95, 0x21, 0x22, 0x5C, 0x6B, 0x4E, 0x82, + 0x54, 0xD6, 0x65, 0x93, 0xCE, 0x60, 0xB2, 0x1C, + 0x73, 0x56, 0xC0, 0x14, 0xA7, 0x8C, 0xF1, 0xDC, + 0x12, 0x75, 0xCA, 0x1F, 0x3B, 0xBE, 0xE4, 0xD1, + 0x42, 0x3D, 0xD4, 0x30, 0xA3, 0x3C, 0xB6, 0x26, + 0x6F, 0xBF, 0x0E, 0xDA, 0x46, 0x69, 0x07, 0x57, + 0x27, 0xF2, 0x1D, 0x9B, 0xBC, 0x94, 0x43, 0x03, + 0xF8, 0x11, 0xC7, 0xF6, 0x90, 0xEF, 0x3E, 0xE7, + 0x06, 0xC3, 0xD5, 0x2F, 0xC8, 0x66, 0x1E, 0xD7, + 0x08, 0xE8, 0xEA, 0xDE, 0x80, 0x52, 0xEE, 0xF7, + 0x84, 0xAA, 0x72, 0xAC, 0x35, 0x4D, 0x6A, 0x2A, + 0x96, 0x1A, 0xD2, 0x71, 0x5A, 0x15, 0x49, 0x74, + 0x4B, 0x9F, 0xD0, 0x5E, 0x04, 0x18, 0xA4, 0xEC, + 0xC2, 0xE0, 0x41, 0x6E, 0x0F, 0x51, 0xCB, 0xCC, + 0x24, 0x91, 0xAF, 0x50, 0xA1, 0xF4, 0x70, 0x39, + 0x99, 0x7C, 0x3A, 0x85, 0x23, 0xB8, 0xB4, 0x7A, + 0xFC, 0x02, 0x36, 0x5B, 0x25, 0x55, 0x97, 0x31, + 0x2D, 0x5D, 0xFA, 0x98, 0xE3, 0x8A, 0x92, 0xAE, + 0x05, 0xDF, 0x29, 0x10, 0x67, 0x6C, 0xBA, 0xC9, + 0xD3, 0x00, 0xE6, 0xCF, 0xE1, 0x9E, 0xA8, 0x2C, + 0x63, 0x16, 0x01, 0x3F, 0x58, 0xE2, 0x89, 0xA9, + 0x0D, 0x38, 0x34, 0x1B, 0xAB, 0x33, 0xFF, 0xB0, + 0xBB, 0x48, 0x0C, 0x5F, 0xB9, 0xB1, 0xCD, 0x2E, + 0xC5, 0xF3, 0xDB, 0x47, 0xE5, 0xA5, 0x9C, 0x77, + 0x0A, 0xA6, 0x20, 0x68, 0xFE, 0x7F, 0xC1, 0xAD + ); + + /** + * Inverse key expansion randomization table. + * + * @see self::setKey() + * @var array + * @access private + */ + var $invpitable = array( + 0xD1, 0xDA, 0xB9, 0x6F, 0x9C, 0xC8, 0x78, 0x66, + 0x80, 0x2C, 0xF8, 0x37, 0xEA, 0xE0, 0x62, 0xA4, + 0xCB, 0x71, 0x50, 0x27, 0x4B, 0x95, 0xD9, 0x20, + 0x9D, 0x04, 0x91, 0xE3, 0x47, 0x6A, 0x7E, 0x53, + 0xFA, 0x3A, 0x3B, 0xB4, 0xA8, 0xBC, 0x5F, 0x68, + 0x08, 0xCA, 0x8F, 0x14, 0xD7, 0xC0, 0xEF, 0x7B, + 0x5B, 0xBF, 0x2F, 0xE5, 0xE2, 0x8C, 0xBA, 0x12, + 0xE1, 0xAF, 0xB2, 0x54, 0x5D, 0x59, 0x76, 0xDB, + 0x32, 0xA2, 0x58, 0x6E, 0x1C, 0x29, 0x64, 0xF3, + 0xE9, 0x96, 0x0C, 0x98, 0x19, 0x8D, 0x3E, 0x26, + 0xAB, 0xA5, 0x85, 0x16, 0x40, 0xBD, 0x49, 0x67, + 0xDC, 0x22, 0x94, 0xBB, 0x3C, 0xC1, 0x9B, 0xEB, + 0x45, 0x28, 0x18, 0xD8, 0x1A, 0x42, 0x7D, 0xCC, + 0xFB, 0x65, 0x8E, 0x3D, 0xCD, 0x2A, 0xA3, 0x60, + 0xAE, 0x93, 0x8A, 0x48, 0x97, 0x51, 0x15, 0xF7, + 0x01, 0x0B, 0xB7, 0x36, 0xB1, 0x2E, 0x11, 0xFD, + 0x84, 0x2D, 0x3F, 0x13, 0x88, 0xB3, 0x34, 0x24, + 0x1B, 0xDE, 0xC5, 0x1D, 0x4D, 0x2B, 0x17, 0x31, + 0x74, 0xA9, 0xC6, 0x43, 0x6D, 0x39, 0x90, 0xBE, + 0xC3, 0xB0, 0x21, 0x6B, 0xF6, 0x0F, 0xD5, 0x99, + 0x0D, 0xAC, 0x1F, 0x5C, 0x9E, 0xF5, 0xF9, 0x4C, + 0xD6, 0xDF, 0x89, 0xE4, 0x8B, 0xFF, 0xC7, 0xAA, + 0xE7, 0xED, 0x46, 0x25, 0xB6, 0x06, 0x5E, 0x35, + 0xB5, 0xEC, 0xCE, 0xE8, 0x6C, 0x30, 0x55, 0x61, + 0x4A, 0xFE, 0xA0, 0x79, 0x03, 0xF0, 0x10, 0x72, + 0x7C, 0xCF, 0x52, 0xA6, 0xA7, 0xEE, 0x44, 0xD3, + 0x9A, 0x57, 0x92, 0xD0, 0x5A, 0x7A, 0x41, 0x7F, + 0x0E, 0x00, 0x63, 0xF2, 0x4F, 0x05, 0x83, 0xC9, + 0xA1, 0xD4, 0xDD, 0xC4, 0x56, 0xF4, 0xD2, 0x77, + 0x81, 0x09, 0x82, 0x33, 0x9F, 0x07, 0x86, 0x75, + 0x38, 0x4E, 0x69, 0xF1, 0xAD, 0x23, 0x73, 0x87, + 0x70, 0x02, 0xC2, 0x1E, 0xB8, 0x0A, 0xFC, 0xE6 + ); + + /** + * Test for engine validity + * + * This is mainly just a wrapper to set things up for Crypt_Base::isValidEngine() + * + * @see Crypt_Base::Crypt_Base() + * @param int $engine + * @access public + * @return bool + */ + function isValidEngine($engine) + { + switch ($engine) { + case CRYPT_ENGINE_OPENSSL: + if ($this->current_key_length != 128 || strlen($this->orig_key) < 16) { + return false; + } + $this->cipher_name_openssl_ecb = 'rc2-ecb'; + $this->cipher_name_openssl = 'rc2-' . $this->_openssl_translate_mode(); + } + + return parent::isValidEngine($engine); + } + + /** + * Sets the key length. + * + * Valid key lengths are 8 to 1024. + * Calling this function after setting the key has no effect until the next + * Crypt_RC2::setKey() call. + * + * @access public + * @param int $length in bits + */ + function setKeyLength($length) + { + if ($length < 8) { + $this->default_key_length = 8; + } elseif ($length > 1024) { + $this->default_key_length = 128; + } else { + $this->default_key_length = $length; + } + $this->current_key_length = $this->default_key_length; + + parent::setKeyLength($length); + } + + /** + * Returns the current key length + * + * @access public + * @return int + */ + function getKeyLength() + { + return $this->current_key_length; + } + + /** + * Sets the key. + * + * Keys can be of any length. RC2, itself, uses 8 to 1024 bit keys (eg. + * strlen($key) <= 128), however, we only use the first 128 bytes if $key + * has more then 128 bytes in it, and set $key to a single null byte if + * it is empty. + * + * If the key is not explicitly set, it'll be assumed to be a single + * null byte. + * + * @see Crypt_Base::setKey() + * @access public + * @param string $key + * @param int $t1 optional Effective key length in bits. + */ + function setKey($key, $t1 = 0) + { + $this->orig_key = $key; + + if ($t1 <= 0) { + $t1 = $this->default_key_length; + } elseif ($t1 > 1024) { + $t1 = 1024; + } + $this->current_key_length = $t1; + // Key byte count should be 1..128. + $key = strlen($key) ? substr($key, 0, 128) : "\x00"; + $t = strlen($key); + + // The mcrypt RC2 implementation only supports effective key length + // of 1024 bits. It is however possible to handle effective key + // lengths in range 1..1024 by expanding the key and applying + // inverse pitable mapping to the first byte before submitting it + // to mcrypt. + + // Key expansion. + $l = array_values(unpack('C*', $key)); + $t8 = ($t1 + 7) >> 3; + $tm = 0xFF >> (8 * $t8 - $t1); + + // Expand key. + $pitable = $this->pitable; + for ($i = $t; $i < 128; $i++) { + $l[$i] = $pitable[$l[$i - 1] + $l[$i - $t]]; + } + $i = 128 - $t8; + $l[$i] = $pitable[$l[$i] & $tm]; + while ($i--) { + $l[$i] = $pitable[$l[$i + 1] ^ $l[$i + $t8]]; + } + + // Prepare the key for mcrypt. + $l[0] = $this->invpitable[$l[0]]; + array_unshift($l, 'C*'); + + parent::setKey(call_user_func_array('pack', $l)); + } + + /** + * Encrypts a message. + * + * Mostly a wrapper for Crypt_Base::encrypt, with some additional OpenSSL handling code + * + * @see self::decrypt() + * @access public + * @param string $plaintext + * @return string $ciphertext + */ + function encrypt($plaintext) + { + if ($this->engine == CRYPT_ENGINE_OPENSSL) { + $temp = $this->key; + $this->key = $this->orig_key; + $result = parent::encrypt($plaintext); + $this->key = $temp; + return $result; + } + + return parent::encrypt($plaintext); + } + + /** + * Decrypts a message. + * + * Mostly a wrapper for Crypt_Base::decrypt, with some additional OpenSSL handling code + * + * @see self::encrypt() + * @access public + * @param string $ciphertext + * @return string $plaintext + */ + function decrypt($ciphertext) + { + if ($this->engine == CRYPT_ENGINE_OPENSSL) { + $temp = $this->key; + $this->key = $this->orig_key; + $result = parent::decrypt($ciphertext); + $this->key = $temp; + return $result; + } + + return parent::decrypt($ciphertext); + } + + /** + * Encrypts a block + * + * @see Crypt_Base::_encryptBlock() + * @see Crypt_Base::encrypt() + * @access private + * @param string $in + * @return string + */ + function _encryptBlock($in) + { + list($r0, $r1, $r2, $r3) = array_values(unpack('v*', $in)); + $keys = $this->keys; + $limit = 20; + $actions = array($limit => 44, 44 => 64); + $j = 0; + + for (;;) { + // Mixing round. + $r0 = (($r0 + $keys[$j++] + ((($r1 ^ $r2) & $r3) ^ $r1)) & 0xFFFF) << 1; + $r0 |= $r0 >> 16; + $r1 = (($r1 + $keys[$j++] + ((($r2 ^ $r3) & $r0) ^ $r2)) & 0xFFFF) << 2; + $r1 |= $r1 >> 16; + $r2 = (($r2 + $keys[$j++] + ((($r3 ^ $r0) & $r1) ^ $r3)) & 0xFFFF) << 3; + $r2 |= $r2 >> 16; + $r3 = (($r3 + $keys[$j++] + ((($r0 ^ $r1) & $r2) ^ $r0)) & 0xFFFF) << 5; + $r3 |= $r3 >> 16; + + if ($j === $limit) { + if ($limit === 64) { + break; + } + + // Mashing round. + $r0 += $keys[$r3 & 0x3F]; + $r1 += $keys[$r0 & 0x3F]; + $r2 += $keys[$r1 & 0x3F]; + $r3 += $keys[$r2 & 0x3F]; + $limit = $actions[$limit]; + } + } + + return pack('vvvv', $r0, $r1, $r2, $r3); + } + + /** + * Decrypts a block + * + * @see Crypt_Base::_decryptBlock() + * @see Crypt_Base::decrypt() + * @access private + * @param string $in + * @return string + */ + function _decryptBlock($in) + { + list($r0, $r1, $r2, $r3) = array_values(unpack('v*', $in)); + $keys = $this->keys; + $limit = 44; + $actions = array($limit => 20, 20 => 0); + $j = 64; + + for (;;) { + // R-mixing round. + $r3 = ($r3 | ($r3 << 16)) >> 5; + $r3 = ($r3 - $keys[--$j] - ((($r0 ^ $r1) & $r2) ^ $r0)) & 0xFFFF; + $r2 = ($r2 | ($r2 << 16)) >> 3; + $r2 = ($r2 - $keys[--$j] - ((($r3 ^ $r0) & $r1) ^ $r3)) & 0xFFFF; + $r1 = ($r1 | ($r1 << 16)) >> 2; + $r1 = ($r1 - $keys[--$j] - ((($r2 ^ $r3) & $r0) ^ $r2)) & 0xFFFF; + $r0 = ($r0 | ($r0 << 16)) >> 1; + $r0 = ($r0 - $keys[--$j] - ((($r1 ^ $r2) & $r3) ^ $r1)) & 0xFFFF; + + if ($j === $limit) { + if ($limit === 0) { + break; + } + + // R-mashing round. + $r3 = ($r3 - $keys[$r2 & 0x3F]) & 0xFFFF; + $r2 = ($r2 - $keys[$r1 & 0x3F]) & 0xFFFF; + $r1 = ($r1 - $keys[$r0 & 0x3F]) & 0xFFFF; + $r0 = ($r0 - $keys[$r3 & 0x3F]) & 0xFFFF; + $limit = $actions[$limit]; + } + } + + return pack('vvvv', $r0, $r1, $r2, $r3); + } + + /** + * Setup the CRYPT_ENGINE_MCRYPT $engine + * + * @see Crypt_Base::_setupMcrypt() + * @access private + */ + function _setupMcrypt() + { + if (!isset($this->key)) { + $this->setKey(''); + } + + parent::_setupMcrypt(); + } + + /** + * Creates the key schedule + * + * @see Crypt_Base::_setupKey() + * @access private + */ + function _setupKey() + { + if (!isset($this->key)) { + $this->setKey(''); + } + + // Key has already been expanded in Crypt_RC2::setKey(): + // Only the first value must be altered. + $l = unpack('Ca/Cb/v*', $this->key); + array_unshift($l, $this->pitable[$l['a']] | ($l['b'] << 8)); + unset($l['a']); + unset($l['b']); + $this->keys = $l; + } + + /** + * Setup the performance-optimized function for de/encrypt() + * + * @see Crypt_Base::_setupInlineCrypt() + * @access private + */ + function _setupInlineCrypt() + { + $lambda_functions = &Crypt_RC2::_getLambdaFunctions(); + + // The first 10 generated $lambda_functions will use the $keys hardcoded as integers + // for the mixing rounds, for better inline crypt performance [~20% faster]. + // But for memory reason we have to limit those ultra-optimized $lambda_functions to an amount of 10. + // (Currently, for Crypt_RC2, one generated $lambda_function cost on php5.5@32bit ~60kb unfreeable mem and ~100kb on php5.5@64bit) + $gen_hi_opt_code = (bool)(count($lambda_functions) < 10); + + // Generation of a unique hash for our generated code + $code_hash = "Crypt_RC2, {$this->mode}"; + if ($gen_hi_opt_code) { + $code_hash = str_pad($code_hash, 32) . $this->_hashInlineCryptFunction($this->key); + } + + // Is there a re-usable $lambda_functions in there? + // If not, we have to create it. + if (!isset($lambda_functions[$code_hash])) { + // Init code for both, encrypt and decrypt. + $init_crypt = '$keys = $self->keys;'; + + switch (true) { + case $gen_hi_opt_code: + $keys = $this->keys; + default: + $keys = array(); + foreach ($this->keys as $k => $v) { + $keys[$k] = '$keys[' . $k . ']'; + } + } + + // $in is the current 8 bytes block which has to be en/decrypt + $encrypt_block = $decrypt_block = ' + $in = unpack("v4", $in); + $r0 = $in[1]; + $r1 = $in[2]; + $r2 = $in[3]; + $r3 = $in[4]; + '; + + // Create code for encryption. + $limit = 20; + $actions = array($limit => 44, 44 => 64); + $j = 0; + + for (;;) { + // Mixing round. + $encrypt_block .= ' + $r0 = (($r0 + ' . $keys[$j++] . ' + + ((($r1 ^ $r2) & $r3) ^ $r1)) & 0xFFFF) << 1; + $r0 |= $r0 >> 16; + $r1 = (($r1 + ' . $keys[$j++] . ' + + ((($r2 ^ $r3) & $r0) ^ $r2)) & 0xFFFF) << 2; + $r1 |= $r1 >> 16; + $r2 = (($r2 + ' . $keys[$j++] . ' + + ((($r3 ^ $r0) & $r1) ^ $r3)) & 0xFFFF) << 3; + $r2 |= $r2 >> 16; + $r3 = (($r3 + ' . $keys[$j++] . ' + + ((($r0 ^ $r1) & $r2) ^ $r0)) & 0xFFFF) << 5; + $r3 |= $r3 >> 16;'; + + if ($j === $limit) { + if ($limit === 64) { + break; + } + + // Mashing round. + $encrypt_block .= ' + $r0 += $keys[$r3 & 0x3F]; + $r1 += $keys[$r0 & 0x3F]; + $r2 += $keys[$r1 & 0x3F]; + $r3 += $keys[$r2 & 0x3F];'; + $limit = $actions[$limit]; + } + } + + $encrypt_block .= '$in = pack("v4", $r0, $r1, $r2, $r3);'; + + // Create code for decryption. + $limit = 44; + $actions = array($limit => 20, 20 => 0); + $j = 64; + + for (;;) { + // R-mixing round. + $decrypt_block .= ' + $r3 = ($r3 | ($r3 << 16)) >> 5; + $r3 = ($r3 - ' . $keys[--$j] . ' - + ((($r0 ^ $r1) & $r2) ^ $r0)) & 0xFFFF; + $r2 = ($r2 | ($r2 << 16)) >> 3; + $r2 = ($r2 - ' . $keys[--$j] . ' - + ((($r3 ^ $r0) & $r1) ^ $r3)) & 0xFFFF; + $r1 = ($r1 | ($r1 << 16)) >> 2; + $r1 = ($r1 - ' . $keys[--$j] . ' - + ((($r2 ^ $r3) & $r0) ^ $r2)) & 0xFFFF; + $r0 = ($r0 | ($r0 << 16)) >> 1; + $r0 = ($r0 - ' . $keys[--$j] . ' - + ((($r1 ^ $r2) & $r3) ^ $r1)) & 0xFFFF;'; + + if ($j === $limit) { + if ($limit === 0) { + break; + } + + // R-mashing round. + $decrypt_block .= ' + $r3 = ($r3 - $keys[$r2 & 0x3F]) & 0xFFFF; + $r2 = ($r2 - $keys[$r1 & 0x3F]) & 0xFFFF; + $r1 = ($r1 - $keys[$r0 & 0x3F]) & 0xFFFF; + $r0 = ($r0 - $keys[$r3 & 0x3F]) & 0xFFFF;'; + $limit = $actions[$limit]; + } + } + + $decrypt_block .= '$in = pack("v4", $r0, $r1, $r2, $r3);'; + + // Creates the inline-crypt function + $lambda_functions[$code_hash] = $this->_createInlineCryptFunction( + array( + 'init_crypt' => $init_crypt, + 'encrypt_block' => $encrypt_block, + 'decrypt_block' => $decrypt_block + ) + ); + } + + // Set the inline-crypt function as callback in: $this->inline_crypt + $this->inline_crypt = $lambda_functions[$code_hash]; + } +} diff --git a/plugins/updraftplus/includes/phpseclib/Crypt/RC4.php b/plugins/updraftplus/includes/phpseclib/Crypt/RC4.php new file mode 100644 index 0000000..ce29e6a --- /dev/null +++ b/plugins/updraftplus/includes/phpseclib/Crypt/RC4.php @@ -0,0 +1,363 @@ + + * setKey('abcdefgh'); + * + * $size = 10 * 1024; + * $plaintext = ''; + * for ($i = 0; $i < $size; $i++) { + * $plaintext.= 'a'; + * } + * + * echo $rc4->decrypt($rc4->encrypt($plaintext)); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_RC4 + * @author Jim Wigginton + * @copyright 2007 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/** + * Include Crypt_Base + * + * Base cipher class + */ +if (!class_exists('Crypt_Base')) { + include_once 'Base.php'; +} + +/**#@+ + * @access private + * @see self::_crypt() + */ +define('CRYPT_RC4_ENCRYPT', 0); +define('CRYPT_RC4_DECRYPT', 1); +/**#@-*/ + +/** + * Pure-PHP implementation of RC4. + * + * @package Crypt_RC4 + * @author Jim Wigginton + * @access public + */ +class Crypt_RC4 extends Crypt_Base +{ + /** + * Block Length of the cipher + * + * RC4 is a stream cipher + * so we the block_size to 0 + * + * @see Crypt_Base::block_size + * @var int + * @access private + */ + var $block_size = 0; + + /** + * Key Length (in bytes) + * + * @see Crypt_RC4::setKeyLength() + * @var int + * @access private + */ + var $key_length = 128; // = 1024 bits + + /** + * The namespace used by the cipher for its constants. + * + * @see Crypt_Base::const_namespace + * @var string + * @access private + */ + var $const_namespace = 'RC4'; + + /** + * The mcrypt specific name of the cipher + * + * @see Crypt_Base::cipher_name_mcrypt + * @var string + * @access private + */ + var $cipher_name_mcrypt = 'arcfour'; + + /** + * Holds whether performance-optimized $inline_crypt() can/should be used. + * + * @see Crypt_Base::inline_crypt + * @var mixed + * @access private + */ + var $use_inline_crypt = false; // currently not available + + /** + * The Key + * + * @see self::setKey() + * @var string + * @access private + */ + var $key = "\0"; + + /** + * The Key Stream for decryption and encryption + * + * @see self::setKey() + * @var array + * @access private + */ + var $stream; + + /** + * Default Constructor. + * + * Determines whether or not the mcrypt extension should be used. + * + * @see Crypt_Base::Crypt_Base() + * @return Crypt_RC4 + * @access public + */ + function __construct() + { + parent::__construct(CRYPT_MODE_STREAM); + } + + /** + * PHP4 compatible Default Constructor. + * + * @see self::__construct() + * @access public + */ + function Crypt_RC4() + { + $this->__construct(); + } + + /** + * Test for engine validity + * + * This is mainly just a wrapper to set things up for Crypt_Base::isValidEngine() + * + * @see Crypt_Base::Crypt_Base() + * @param int $engine + * @access public + * @return bool + */ + function isValidEngine($engine) + { + switch ($engine) { + case CRYPT_ENGINE_OPENSSL: + switch (strlen($this->key)) { + case 5: + $this->cipher_name_openssl = 'rc4-40'; + break; + case 8: + $this->cipher_name_openssl = 'rc4-64'; + break; + case 16: + $this->cipher_name_openssl = 'rc4'; + break; + default: + return false; + } + } + + return parent::isValidEngine($engine); + } + + /** + * Dummy function. + * + * Some protocols, such as WEP, prepend an "initialization vector" to the key, effectively creating a new key [1]. + * If you need to use an initialization vector in this manner, feel free to prepend it to the key, yourself, before + * calling setKey(). + * + * [1] WEP's initialization vectors (IV's) are used in a somewhat insecure way. Since, in that protocol, + * the IV's are relatively easy to predict, an attack described by + * {@link http://www.drizzle.com/~aboba/IEEE/rc4_ksaproc.pdf Scott Fluhrer, Itsik Mantin, and Adi Shamir} + * can be used to quickly guess at the rest of the key. The following links elaborate: + * + * {@link http://www.rsa.com/rsalabs/node.asp?id=2009 http://www.rsa.com/rsalabs/node.asp?id=2009} + * {@link http://en.wikipedia.org/wiki/Related_key_attack http://en.wikipedia.org/wiki/Related_key_attack} + * + * @param string $iv + * @see self::setKey() + * @access public + */ + function setIV($iv) + { + } + + /** + * Sets the key length + * + * Keys can be between 1 and 256 bytes long. + * + * @access public + * @param int $length + */ + function setKeyLength($length) + { + if ($length < 8) { + $this->key_length = 1; + } elseif ($length > 2048) { + $this->key_length = 256; + } else { + $this->key_length = $length >> 3; + } + + parent::setKeyLength($length); + } + + /** + * Encrypts a message. + * + * @see Crypt_Base::decrypt() + * @see self::_crypt() + * @access public + * @param string $plaintext + * @return string $ciphertext + */ + function encrypt($plaintext) + { + if ($this->engine != CRYPT_ENGINE_INTERNAL) { + return parent::encrypt($plaintext); + } + return $this->_crypt($plaintext, CRYPT_RC4_ENCRYPT); + } + + /** + * Decrypts a message. + * + * $this->decrypt($this->encrypt($plaintext)) == $this->encrypt($this->encrypt($plaintext)). + * At least if the continuous buffer is disabled. + * + * @see Crypt_Base::encrypt() + * @see self::_crypt() + * @access public + * @param string $ciphertext + * @return string $plaintext + */ + function decrypt($ciphertext) + { + if ($this->engine != CRYPT_ENGINE_INTERNAL) { + return parent::decrypt($ciphertext); + } + return $this->_crypt($ciphertext, CRYPT_RC4_DECRYPT); + } + + + /** + * Setup the key (expansion) + * + * @see Crypt_Base::_setupKey() + * @access private + */ + function _setupKey() + { + $key = $this->key; + $keyLength = strlen($key); + $keyStream = range(0, 255); + $j = 0; + for ($i = 0; $i < 256; $i++) { + $j = ($j + $keyStream[$i] + ord($key[$i % $keyLength])) & 255; + $temp = $keyStream[$i]; + $keyStream[$i] = $keyStream[$j]; + $keyStream[$j] = $temp; + } + + $this->stream = array(); + $this->stream[CRYPT_RC4_DECRYPT] = $this->stream[CRYPT_RC4_ENCRYPT] = array( + 0, // index $i + 0, // index $j + $keyStream + ); + } + + /** + * Encrypts or decrypts a message. + * + * @see self::encrypt() + * @see self::decrypt() + * @access private + * @param string $text + * @param int $mode + * @return string $text + */ + function _crypt($text, $mode) + { + if ($this->changed) { + $this->_setup(); + $this->changed = false; + } + + $stream = &$this->stream[$mode]; + if ($this->continuousBuffer) { + $i = &$stream[0]; + $j = &$stream[1]; + $keyStream = &$stream[2]; + } else { + $i = $stream[0]; + $j = $stream[1]; + $keyStream = $stream[2]; + } + + $len = strlen($text); + for ($k = 0; $k < $len; ++$k) { + $i = ($i + 1) & 255; + $ksi = $keyStream[$i]; + $j = ($j + $ksi) & 255; + $ksj = $keyStream[$j]; + + $keyStream[$i] = $ksj; + $keyStream[$j] = $ksi; + $text[$k] = $text[$k] ^ chr($keyStream[($ksj + $ksi) & 255]); + } + + return $text; + } +} diff --git a/plugins/updraftplus/includes/phpseclib/Crypt/RSA.php b/plugins/updraftplus/includes/phpseclib/Crypt/RSA.php new file mode 100644 index 0000000..3eacfe1 --- /dev/null +++ b/plugins/updraftplus/includes/phpseclib/Crypt/RSA.php @@ -0,0 +1,3133 @@ + + * createKey()); + * + * $plaintext = 'terrafrost'; + * + * $rsa->loadKey($privatekey); + * $ciphertext = $rsa->encrypt($plaintext); + * + * $rsa->loadKey($publickey); + * echo $rsa->decrypt($ciphertext); + * ?> + * + * + * Here's an example of how to create signatures and verify signatures with this library: + * + * createKey()); + * + * $plaintext = 'terrafrost'; + * + * $rsa->loadKey($privatekey); + * $signature = $rsa->sign($plaintext); + * + * $rsa->loadKey($publickey); + * echo $rsa->verify($plaintext, $signature) ? 'verified' : 'unverified'; + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_RSA + * @author Jim Wigginton + * @copyright 2009 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/** + * Include Crypt_Random + */ +// the class_exists() will only be called if the crypt_random_string function hasn't been defined and +// will trigger a call to __autoload() if you're wanting to auto-load classes +// call function_exists() a second time to stop the include_once from being called outside +// of the auto loader +if (!function_exists('crypt_random_string')) { + include_once 'Random.php'; +} + +/** + * Include Crypt_Hash + */ +if (!class_exists('Crypt_Hash')) { + include_once 'Hash.php'; +} + +/**#@+ + * @access public + * @see self::encrypt() + * @see self::decrypt() + */ +/** + * Use {@link http://en.wikipedia.org/wiki/Optimal_Asymmetric_Encryption_Padding Optimal Asymmetric Encryption Padding} + * (OAEP) for encryption / decryption. + * + * Uses sha1 by default. + * + * @see self::setHash() + * @see self::setMGFHash() + */ +define('CRYPT_RSA_ENCRYPTION_OAEP', 1); +/** + * Use PKCS#1 padding. + * + * Although CRYPT_RSA_ENCRYPTION_OAEP offers more security, including PKCS#1 padding is necessary for purposes of backwards + * compatibility with protocols (like SSH-1) written before OAEP's introduction. + */ +define('CRYPT_RSA_ENCRYPTION_PKCS1', 2); +/** + * Do not use any padding + * + * Although this method is not recommended it can none-the-less sometimes be useful if you're trying to decrypt some legacy + * stuff, if you're trying to diagnose why an encrypted message isn't decrypting, etc. + */ +define('CRYPT_RSA_ENCRYPTION_NONE', 3); +/**#@-*/ + +/**#@+ + * @access public + * @see self::sign() + * @see self::verify() + * @see self::setHash() + */ +/** + * Use the Probabilistic Signature Scheme for signing + * + * Uses sha1 by default. + * + * @see self::setSaltLength() + * @see self::setMGFHash() + */ +define('CRYPT_RSA_SIGNATURE_PSS', 1); +/** + * Use the PKCS#1 scheme by default. + * + * Although CRYPT_RSA_SIGNATURE_PSS offers more security, including PKCS#1 signing is necessary for purposes of backwards + * compatibility with protocols (like SSH-2) written before PSS's introduction. + */ +define('CRYPT_RSA_SIGNATURE_PKCS1', 2); +/**#@-*/ + +/**#@+ + * @access private + * @see self::createKey() + */ +/** + * ASN1 Integer + */ +define('CRYPT_RSA_ASN1_INTEGER', 2); +/** + * ASN1 Bit String + */ +define('CRYPT_RSA_ASN1_BITSTRING', 3); +/** + * ASN1 Octet String + */ +define('CRYPT_RSA_ASN1_OCTETSTRING', 4); +/** + * ASN1 Object Identifier + */ +define('CRYPT_RSA_ASN1_OBJECT', 6); +/** + * ASN1 Sequence (with the constucted bit set) + */ +define('CRYPT_RSA_ASN1_SEQUENCE', 48); +/**#@-*/ + +/**#@+ + * @access private + * @see self::Crypt_RSA() + */ +/** + * To use the pure-PHP implementation + */ +define('CRYPT_RSA_MODE_INTERNAL', 1); +/** + * To use the OpenSSL library + * + * (if enabled; otherwise, the internal implementation will be used) + */ +define('CRYPT_RSA_MODE_OPENSSL', 2); +/**#@-*/ + +/** + * Default openSSL configuration file. + */ +define('CRYPT_RSA_OPENSSL_CONFIG', dirname(__FILE__) . '/../openssl.cnf'); + +/**#@+ + * @access public + * @see self::createKey() + * @see self::setPrivateKeyFormat() + */ +/** + * PKCS#1 formatted private key + * + * Used by OpenSSH + */ +define('CRYPT_RSA_PRIVATE_FORMAT_PKCS1', 0); +/** + * PuTTY formatted private key + */ +define('CRYPT_RSA_PRIVATE_FORMAT_PUTTY', 1); +/** + * XML formatted private key + */ +define('CRYPT_RSA_PRIVATE_FORMAT_XML', 2); +/** + * PKCS#8 formatted private key + */ +define('CRYPT_RSA_PRIVATE_FORMAT_PKCS8', 8); +/**#@-*/ + +/**#@+ + * @access public + * @see self::createKey() + * @see self::setPublicKeyFormat() + */ +/** + * Raw public key + * + * An array containing two Math_BigInteger objects. + * + * The exponent can be indexed with any of the following: + * + * 0, e, exponent, publicExponent + * + * The modulus can be indexed with any of the following: + * + * 1, n, modulo, modulus + */ +define('CRYPT_RSA_PUBLIC_FORMAT_RAW', 3); +/** + * PKCS#1 formatted public key (raw) + * + * Used by File/X509.php + * + * Has the following header: + * + * -----BEGIN RSA PUBLIC KEY----- + * + * Analogous to ssh-keygen's pem format (as specified by -m) + */ +define('CRYPT_RSA_PUBLIC_FORMAT_PKCS1', 4); +define('CRYPT_RSA_PUBLIC_FORMAT_PKCS1_RAW', 4); +/** + * XML formatted public key + */ +define('CRYPT_RSA_PUBLIC_FORMAT_XML', 5); +/** + * OpenSSH formatted public key + * + * Place in $HOME/.ssh/authorized_keys + */ +define('CRYPT_RSA_PUBLIC_FORMAT_OPENSSH', 6); +/** + * PKCS#1 formatted public key (encapsulated) + * + * Used by PHP's openssl_public_encrypt() and openssl's rsautl (when -pubin is set) + * + * Has the following header: + * + * -----BEGIN PUBLIC KEY----- + * + * Analogous to ssh-keygen's pkcs8 format (as specified by -m). Although PKCS8 + * is specific to private keys it's basically creating a DER-encoded wrapper + * for keys. This just extends that same concept to public keys (much like ssh-keygen) + */ +define('CRYPT_RSA_PUBLIC_FORMAT_PKCS8', 7); +/**#@-*/ + +/** + * Pure-PHP PKCS#1 compliant implementation of RSA. + * + * @package Crypt_RSA + * @author Jim Wigginton + * @access public + */ +class Crypt_RSA +{ + /** + * Precomputed Zero + * + * @var Math_BigInteger + * @access private + */ + var $zero; + + /** + * Precomputed One + * + * @var Math_BigInteger + * @access private + */ + var $one; + + /** + * Private Key Format + * + * @var int + * @access private + */ + var $privateKeyFormat = CRYPT_RSA_PRIVATE_FORMAT_PKCS1; + + /** + * Public Key Format + * + * @var int + * @access public + */ + var $publicKeyFormat = CRYPT_RSA_PUBLIC_FORMAT_PKCS8; + + /** + * Modulus (ie. n) + * + * @var Math_BigInteger + * @access private + */ + var $modulus; + + /** + * Modulus length + * + * @var Math_BigInteger + * @access private + */ + var $k; + + /** + * Exponent (ie. e or d) + * + * @var Math_BigInteger + * @access private + */ + var $exponent; + + /** + * Primes for Chinese Remainder Theorem (ie. p and q) + * + * @var array + * @access private + */ + var $primes; + + /** + * Exponents for Chinese Remainder Theorem (ie. dP and dQ) + * + * @var array + * @access private + */ + var $exponents; + + /** + * Coefficients for Chinese Remainder Theorem (ie. qInv) + * + * @var array + * @access private + */ + var $coefficients; + + /** + * Hash name + * + * @var string + * @access private + */ + var $hashName; + + /** + * Hash function + * + * @var Crypt_Hash + * @access private + */ + var $hash; + + /** + * Length of hash function output + * + * @var int + * @access private + */ + var $hLen; + + /** + * Length of salt + * + * @var int + * @access private + */ + var $sLen; + + /** + * Hash function for the Mask Generation Function + * + * @var Crypt_Hash + * @access private + */ + var $mgfHash; + + /** + * Length of MGF hash function output + * + * @var int + * @access private + */ + var $mgfHLen; + + /** + * Encryption mode + * + * @var int + * @access private + */ + var $encryptionMode = CRYPT_RSA_ENCRYPTION_OAEP; + + /** + * Signature mode + * + * @var int + * @access private + */ + var $signatureMode = CRYPT_RSA_SIGNATURE_PSS; + + /** + * Public Exponent + * + * @var mixed + * @access private + */ + var $publicExponent = false; + + /** + * Password + * + * @var string + * @access private + */ + var $password = false; + + /** + * Components + * + * For use with parsing XML formatted keys. PHP's XML Parser functions use utilized - instead of PHP's DOM functions - + * because PHP's XML Parser functions work on PHP4 whereas PHP's DOM functions - although surperior - don't. + * + * @see self::_start_element_handler() + * @var array + * @access private + */ + var $components = array(); + + /** + * Current String + * + * For use with parsing XML formatted keys. + * + * @see self::_character_handler() + * @see self::_stop_element_handler() + * @var mixed + * @access private + */ + var $current; + + /** + * OpenSSL configuration file name. + * + * Set to null to use system configuration file. + * @see self::createKey() + * @var mixed + * @Access public + */ + var $configFile; + + /** + * Public key comment field. + * + * @var string + * @access private + */ + var $comment = 'phpseclib-generated-key'; + + /** + * The constructor + * + * If you want to make use of the openssl extension, you'll need to set the mode manually, yourself. The reason + * Crypt_RSA doesn't do it is because OpenSSL doesn't fail gracefully. openssl_pkey_new(), in particular, requires + * openssl.cnf be present somewhere and, unfortunately, the only real way to find out is too late. + * + * @return Crypt_RSA + * @access public + */ + function __construct() + { + if (!class_exists('Math_BigInteger')) { + include_once 'Math/BigInteger.php'; + } + + $this->configFile = CRYPT_RSA_OPENSSL_CONFIG; + + if (!defined('CRYPT_RSA_MODE')) { + switch (true) { + // Math/BigInteger's openssl requirements are a little less stringent than Crypt/RSA's. in particular, + // Math/BigInteger doesn't require an openssl.cfg file whereas Crypt/RSA does. so if Math/BigInteger + // can't use OpenSSL it can be pretty trivially assumed, then, that Crypt/RSA can't either. + case defined('MATH_BIGINTEGER_OPENSSL_DISABLE'): + define('CRYPT_RSA_MODE', CRYPT_RSA_MODE_INTERNAL); + break; + // openssl_pkey_get_details - which is used in the only place Crypt/RSA.php uses OpenSSL - was introduced in PHP 5.2.0 + case !function_exists('openssl_pkey_get_details'): + define('CRYPT_RSA_MODE', CRYPT_RSA_MODE_INTERNAL); + break; + case extension_loaded('openssl') && version_compare(PHP_VERSION, '4.2.0', '>=') && file_exists($this->configFile): + // some versions of XAMPP have mismatched versions of OpenSSL which causes it not to work + ob_start(); + @phpinfo(); + $content = ob_get_contents(); + ob_end_clean(); + + preg_match_all('#OpenSSL (Header|Library) Version(.*)#im', $content, $matches); + + $versions = array(); + if (!empty($matches[1])) { + for ($i = 0; $i < count($matches[1]); $i++) { + $fullVersion = trim(str_replace('=>', '', strip_tags($matches[2][$i]))); + + // Remove letter part in OpenSSL version + if (!preg_match('/(\d+\.\d+\.\d+)/i', $fullVersion, $m)) { + $versions[$matches[1][$i]] = $fullVersion; + } else { + $versions[$matches[1][$i]] = $m[0]; + } + } + } + + // it doesn't appear that OpenSSL versions were reported upon until PHP 5.3+ + switch (true) { + case !isset($versions['Header']): + case !isset($versions['Library']): + case $versions['Header'] == $versions['Library']: + case version_compare($versions['Header'], '1.0.0') >= 0 && version_compare($versions['Library'], '1.0.0') >= 0: + define('CRYPT_RSA_MODE', CRYPT_RSA_MODE_OPENSSL); + break; + default: + define('CRYPT_RSA_MODE', CRYPT_RSA_MODE_INTERNAL); + define('MATH_BIGINTEGER_OPENSSL_DISABLE', true); + } + break; + default: + define('CRYPT_RSA_MODE', CRYPT_RSA_MODE_INTERNAL); + } + } + + $this->zero = new Math_BigInteger(); + $this->one = new Math_BigInteger(1); + + $this->hash = new Crypt_Hash('sha1'); + $this->hLen = $this->hash->getLength(); + $this->hashName = 'sha1'; + $this->mgfHash = new Crypt_Hash('sha1'); + $this->mgfHLen = $this->mgfHash->getLength(); + } + + /** + * PHP4 compatible Default Constructor. + * + * @see self::__construct() + * @access public + */ + function Crypt_RSA() + { + $this->__construct(); + } + + /** + * Create public / private key pair + * + * Returns an array with the following three elements: + * - 'privatekey': The private key. + * - 'publickey': The public key. + * - 'partialkey': A partially computed key (if the execution time exceeded $timeout). + * Will need to be passed back to Crypt_RSA::createKey() as the third parameter for further processing. + * + * @access public + * @param int $bits + * @param int $timeout + * @param Math_BigInteger $p + */ + function createKey($bits = 1024, $timeout = false, $partial = array()) + { + if (!defined('CRYPT_RSA_EXPONENT')) { + // http://en.wikipedia.org/wiki/65537_%28number%29 + define('CRYPT_RSA_EXPONENT', '65537'); + } + // per , this number ought not result in primes smaller + // than 256 bits. as a consequence if the key you're trying to create is 1024 bits and you've set CRYPT_RSA_SMALLEST_PRIME + // to 384 bits then you're going to get a 384 bit prime and a 640 bit prime (384 + 1024 % 384). at least if + // CRYPT_RSA_MODE is set to CRYPT_RSA_MODE_INTERNAL. if CRYPT_RSA_MODE is set to CRYPT_RSA_MODE_OPENSSL then + // CRYPT_RSA_SMALLEST_PRIME is ignored (ie. multi-prime RSA support is more intended as a way to speed up RSA key + // generation when there's a chance neither gmp nor OpenSSL are installed) + if (!defined('CRYPT_RSA_SMALLEST_PRIME')) { + define('CRYPT_RSA_SMALLEST_PRIME', 4096); + } + + // OpenSSL uses 65537 as the exponent and requires RSA keys be 384 bits minimum + if (CRYPT_RSA_MODE == CRYPT_RSA_MODE_OPENSSL && $bits >= 384 && CRYPT_RSA_EXPONENT == 65537) { + $config = array(); + if (isset($this->configFile)) { + $config['config'] = $this->configFile; + } + $rsa = openssl_pkey_new(array('private_key_bits' => $bits) + $config); + openssl_pkey_export($rsa, $privatekey, null, $config); + $publickey = openssl_pkey_get_details($rsa); + $publickey = $publickey['key']; + + $privatekey = call_user_func_array(array($this, '_convertPrivateKey'), array_values($this->_parseKey($privatekey, CRYPT_RSA_PRIVATE_FORMAT_PKCS1))); + $publickey = call_user_func_array(array($this, '_convertPublicKey'), array_values($this->_parseKey($publickey, CRYPT_RSA_PUBLIC_FORMAT_PKCS1))); + + // clear the buffer of error strings stemming from a minimalistic openssl.cnf + while (openssl_error_string() !== false) { + } + + return array( + 'privatekey' => $privatekey, + 'publickey' => $publickey, + 'partialkey' => false + ); + } + + static $e; + if (!isset($e)) { + $e = new Math_BigInteger(CRYPT_RSA_EXPONENT); + } + + extract($this->_generateMinMax($bits)); + $absoluteMin = $min; + $temp = $bits >> 1; // divide by two to see how many bits P and Q would be + if ($temp > CRYPT_RSA_SMALLEST_PRIME) { + $num_primes = floor($bits / CRYPT_RSA_SMALLEST_PRIME); + $temp = CRYPT_RSA_SMALLEST_PRIME; + } else { + $num_primes = 2; + } + extract($this->_generateMinMax($temp + $bits % $temp)); + $finalMax = $max; + extract($this->_generateMinMax($temp)); + + $generator = new Math_BigInteger(); + + $n = $this->one->copy(); + if (!empty($partial)) { + extract(unserialize($partial)); + } else { + $exponents = $coefficients = $primes = array(); + $lcm = array( + 'top' => $this->one->copy(), + 'bottom' => false + ); + } + + $start = time(); + $i0 = count($primes) + 1; + + do { + for ($i = $i0; $i <= $num_primes; $i++) { + if ($timeout !== false) { + $timeout-= time() - $start; + $start = time(); + if ($timeout <= 0) { + return array( + 'privatekey' => '', + 'publickey' => '', + 'partialkey' => serialize(array( + 'primes' => $primes, + 'coefficients' => $coefficients, + 'lcm' => $lcm, + 'exponents' => $exponents + )) + ); + } + } + + if ($i == $num_primes) { + list($min, $temp) = $absoluteMin->divide($n); + if (!$temp->equals($this->zero)) { + $min = $min->add($this->one); // ie. ceil() + } + $primes[$i] = $generator->randomPrime($min, $finalMax, $timeout); + } else { + $primes[$i] = $generator->randomPrime($min, $max, $timeout); + } + + if ($primes[$i] === false) { // if we've reached the timeout + if (count($primes) > 1) { + $partialkey = ''; + } else { + array_pop($primes); + $partialkey = serialize(array( + 'primes' => $primes, + 'coefficients' => $coefficients, + 'lcm' => $lcm, + 'exponents' => $exponents + )); + } + + return array( + 'privatekey' => '', + 'publickey' => '', + 'partialkey' => $partialkey + ); + } + + // the first coefficient is calculated differently from the rest + // ie. instead of being $primes[1]->modInverse($primes[2]), it's $primes[2]->modInverse($primes[1]) + if ($i > 2) { + $coefficients[$i] = $n->modInverse($primes[$i]); + } + + $n = $n->multiply($primes[$i]); + + $temp = $primes[$i]->subtract($this->one); + + // textbook RSA implementations use Euler's totient function instead of the least common multiple. + // see http://en.wikipedia.org/wiki/Euler%27s_totient_function + $lcm['top'] = $lcm['top']->multiply($temp); + $lcm['bottom'] = $lcm['bottom'] === false ? $temp : $lcm['bottom']->gcd($temp); + + $exponents[$i] = $e->modInverse($temp); + } + + list($temp) = $lcm['top']->divide($lcm['bottom']); + $gcd = $temp->gcd($e); + $i0 = 1; + } while (!$gcd->equals($this->one)); + + $d = $e->modInverse($temp); + + $coefficients[2] = $primes[2]->modInverse($primes[1]); + + // from : + // RSAPrivateKey ::= SEQUENCE { + // version Version, + // modulus INTEGER, -- n + // publicExponent INTEGER, -- e + // privateExponent INTEGER, -- d + // prime1 INTEGER, -- p + // prime2 INTEGER, -- q + // exponent1 INTEGER, -- d mod (p-1) + // exponent2 INTEGER, -- d mod (q-1) + // coefficient INTEGER, -- (inverse of q) mod p + // otherPrimeInfos OtherPrimeInfos OPTIONAL + // } + + return array( + 'privatekey' => $this->_convertPrivateKey($n, $e, $d, $primes, $exponents, $coefficients), + 'publickey' => $this->_convertPublicKey($n, $e), + 'partialkey' => false + ); + } + + /** + * Convert a private key to the appropriate format. + * + * @access private + * @see self::setPrivateKeyFormat() + * @param string $RSAPrivateKey + * @return string + */ + function _convertPrivateKey($n, $e, $d, $primes, $exponents, $coefficients) + { + $signed = $this->privateKeyFormat != CRYPT_RSA_PRIVATE_FORMAT_XML; + $num_primes = count($primes); + $raw = array( + 'version' => $num_primes == 2 ? chr(0) : chr(1), // two-prime vs. multi + 'modulus' => $n->toBytes($signed), + 'publicExponent' => $e->toBytes($signed), + 'privateExponent' => $d->toBytes($signed), + 'prime1' => $primes[1]->toBytes($signed), + 'prime2' => $primes[2]->toBytes($signed), + 'exponent1' => $exponents[1]->toBytes($signed), + 'exponent2' => $exponents[2]->toBytes($signed), + 'coefficient' => $coefficients[2]->toBytes($signed) + ); + + // if the format in question does not support multi-prime rsa and multi-prime rsa was used, + // call _convertPublicKey() instead. + switch ($this->privateKeyFormat) { + case CRYPT_RSA_PRIVATE_FORMAT_XML: + if ($num_primes != 2) { + return false; + } + return "\r\n" . + ' ' . base64_encode($raw['modulus']) . "\r\n" . + ' ' . base64_encode($raw['publicExponent']) . "\r\n" . + '

        ' . base64_encode($raw['prime1']) . "

        \r\n" . + ' ' . base64_encode($raw['prime2']) . "\r\n" . + ' ' . base64_encode($raw['exponent1']) . "\r\n" . + ' ' . base64_encode($raw['exponent2']) . "\r\n" . + ' ' . base64_encode($raw['coefficient']) . "\r\n" . + ' ' . base64_encode($raw['privateExponent']) . "\r\n" . + '
        '; + break; + case CRYPT_RSA_PRIVATE_FORMAT_PUTTY: + if ($num_primes != 2) { + return false; + } + $key = "PuTTY-User-Key-File-2: ssh-rsa\r\nEncryption: "; + $encryption = (!empty($this->password) || is_string($this->password)) ? 'aes256-cbc' : 'none'; + $key.= $encryption; + $key.= "\r\nComment: " . $this->comment . "\r\n"; + $public = pack( + 'Na*Na*Na*', + strlen('ssh-rsa'), + 'ssh-rsa', + strlen($raw['publicExponent']), + $raw['publicExponent'], + strlen($raw['modulus']), + $raw['modulus'] + ); + $source = pack( + 'Na*Na*Na*Na*', + strlen('ssh-rsa'), + 'ssh-rsa', + strlen($encryption), + $encryption, + strlen($this->comment), + $this->comment, + strlen($public), + $public + ); + $public = base64_encode($public); + $key.= "Public-Lines: " . ((strlen($public) + 63) >> 6) . "\r\n"; + $key.= chunk_split($public, 64); + $private = pack( + 'Na*Na*Na*Na*', + strlen($raw['privateExponent']), + $raw['privateExponent'], + strlen($raw['prime1']), + $raw['prime1'], + strlen($raw['prime2']), + $raw['prime2'], + strlen($raw['coefficient']), + $raw['coefficient'] + ); + if (empty($this->password) && !is_string($this->password)) { + $source.= pack('Na*', strlen($private), $private); + $hashkey = 'putty-private-key-file-mac-key'; + } else { + $private.= crypt_random_string(16 - (strlen($private) & 15)); + $source.= pack('Na*', strlen($private), $private); + if (!class_exists('Crypt_AES')) { + include_once 'Crypt/AES.php'; + } + $sequence = 0; + $symkey = ''; + while (strlen($symkey) < 32) { + $temp = pack('Na*', $sequence++, $this->password); + $symkey.= pack('H*', sha1($temp)); + } + $symkey = substr($symkey, 0, 32); + $crypto = new Crypt_AES(); + + $crypto->setKey($symkey); + $crypto->disablePadding(); + $private = $crypto->encrypt($private); + $hashkey = 'putty-private-key-file-mac-key' . $this->password; + } + + $private = base64_encode($private); + $key.= 'Private-Lines: ' . ((strlen($private) + 63) >> 6) . "\r\n"; + $key.= chunk_split($private, 64); + if (!class_exists('Crypt_Hash')) { + include_once 'Crypt/Hash.php'; + } + $hash = new Crypt_Hash('sha1'); + $hash->setKey(pack('H*', sha1($hashkey))); + $key.= 'Private-MAC: ' . bin2hex($hash->hash($source)) . "\r\n"; + + return $key; + default: // eg. CRYPT_RSA_PRIVATE_FORMAT_PKCS1 + $components = array(); + foreach ($raw as $name => $value) { + $components[$name] = pack('Ca*a*', CRYPT_RSA_ASN1_INTEGER, $this->_encodeLength(strlen($value)), $value); + } + + $RSAPrivateKey = implode('', $components); + + if ($num_primes > 2) { + $OtherPrimeInfos = ''; + for ($i = 3; $i <= $num_primes; $i++) { + // OtherPrimeInfos ::= SEQUENCE SIZE(1..MAX) OF OtherPrimeInfo + // + // OtherPrimeInfo ::= SEQUENCE { + // prime INTEGER, -- ri + // exponent INTEGER, -- di + // coefficient INTEGER -- ti + // } + $OtherPrimeInfo = pack('Ca*a*', CRYPT_RSA_ASN1_INTEGER, $this->_encodeLength(strlen($primes[$i]->toBytes(true))), $primes[$i]->toBytes(true)); + $OtherPrimeInfo.= pack('Ca*a*', CRYPT_RSA_ASN1_INTEGER, $this->_encodeLength(strlen($exponents[$i]->toBytes(true))), $exponents[$i]->toBytes(true)); + $OtherPrimeInfo.= pack('Ca*a*', CRYPT_RSA_ASN1_INTEGER, $this->_encodeLength(strlen($coefficients[$i]->toBytes(true))), $coefficients[$i]->toBytes(true)); + $OtherPrimeInfos.= pack('Ca*a*', CRYPT_RSA_ASN1_SEQUENCE, $this->_encodeLength(strlen($OtherPrimeInfo)), $OtherPrimeInfo); + } + $RSAPrivateKey.= pack('Ca*a*', CRYPT_RSA_ASN1_SEQUENCE, $this->_encodeLength(strlen($OtherPrimeInfos)), $OtherPrimeInfos); + } + + $RSAPrivateKey = pack('Ca*a*', CRYPT_RSA_ASN1_SEQUENCE, $this->_encodeLength(strlen($RSAPrivateKey)), $RSAPrivateKey); + + if ($this->privateKeyFormat == CRYPT_RSA_PRIVATE_FORMAT_PKCS8) { + $rsaOID = pack('H*', '300d06092a864886f70d0101010500'); // hex version of MA0GCSqGSIb3DQEBAQUA + $RSAPrivateKey = pack( + 'Ca*a*Ca*a*', + CRYPT_RSA_ASN1_INTEGER, + "\01\00", + $rsaOID, + 4, + $this->_encodeLength(strlen($RSAPrivateKey)), + $RSAPrivateKey + ); + $RSAPrivateKey = pack('Ca*a*', CRYPT_RSA_ASN1_SEQUENCE, $this->_encodeLength(strlen($RSAPrivateKey)), $RSAPrivateKey); + if (!empty($this->password) || is_string($this->password)) { + $salt = crypt_random_string(8); + $iterationCount = 2048; + + if (!class_exists('Crypt_DES')) { + include_once 'Crypt/DES.php'; + } + $crypto = new Crypt_DES(); + $crypto->setPassword($this->password, 'pbkdf1', 'md5', $salt, $iterationCount); + $RSAPrivateKey = $crypto->encrypt($RSAPrivateKey); + + $parameters = pack( + 'Ca*a*Ca*N', + CRYPT_RSA_ASN1_OCTETSTRING, + $this->_encodeLength(strlen($salt)), + $salt, + CRYPT_RSA_ASN1_INTEGER, + $this->_encodeLength(4), + $iterationCount + ); + $pbeWithMD5AndDES_CBC = "\x2a\x86\x48\x86\xf7\x0d\x01\x05\x03"; + + $encryptionAlgorithm = pack( + 'Ca*a*Ca*a*', + CRYPT_RSA_ASN1_OBJECT, + $this->_encodeLength(strlen($pbeWithMD5AndDES_CBC)), + $pbeWithMD5AndDES_CBC, + CRYPT_RSA_ASN1_SEQUENCE, + $this->_encodeLength(strlen($parameters)), + $parameters + ); + + $RSAPrivateKey = pack( + 'Ca*a*Ca*a*', + CRYPT_RSA_ASN1_SEQUENCE, + $this->_encodeLength(strlen($encryptionAlgorithm)), + $encryptionAlgorithm, + CRYPT_RSA_ASN1_OCTETSTRING, + $this->_encodeLength(strlen($RSAPrivateKey)), + $RSAPrivateKey + ); + + $RSAPrivateKey = pack('Ca*a*', CRYPT_RSA_ASN1_SEQUENCE, $this->_encodeLength(strlen($RSAPrivateKey)), $RSAPrivateKey); + + $RSAPrivateKey = "-----BEGIN ENCRYPTED PRIVATE KEY-----\r\n" . + chunk_split(base64_encode($RSAPrivateKey), 64) . + '-----END ENCRYPTED PRIVATE KEY-----'; + } else { + $RSAPrivateKey = "-----BEGIN PRIVATE KEY-----\r\n" . + chunk_split(base64_encode($RSAPrivateKey), 64) . + '-----END PRIVATE KEY-----'; + } + return $RSAPrivateKey; + } + + if (!empty($this->password) || is_string($this->password)) { + $iv = crypt_random_string(8); + $symkey = pack('H*', md5($this->password . $iv)); // symkey is short for symmetric key + $symkey.= substr(pack('H*', md5($symkey . $this->password . $iv)), 0, 8); + if (!class_exists('Crypt_TripleDES')) { + include_once 'Crypt/TripleDES.php'; + } + $des = new Crypt_TripleDES(); + $des->setKey($symkey); + $des->setIV($iv); + $iv = strtoupper(bin2hex($iv)); + $RSAPrivateKey = "-----BEGIN RSA PRIVATE KEY-----\r\n" . + "Proc-Type: 4,ENCRYPTED\r\n" . + "DEK-Info: DES-EDE3-CBC,$iv\r\n" . + "\r\n" . + chunk_split(base64_encode($des->encrypt($RSAPrivateKey)), 64) . + '-----END RSA PRIVATE KEY-----'; + } else { + $RSAPrivateKey = "-----BEGIN RSA PRIVATE KEY-----\r\n" . + chunk_split(base64_encode($RSAPrivateKey), 64) . + '-----END RSA PRIVATE KEY-----'; + } + + return $RSAPrivateKey; + } + } + + /** + * Convert a public key to the appropriate format + * + * @access private + * @see self::setPublicKeyFormat() + * @param string $RSAPrivateKey + * @return string + */ + function _convertPublicKey($n, $e) + { + $signed = $this->publicKeyFormat != CRYPT_RSA_PUBLIC_FORMAT_XML; + + $modulus = $n->toBytes($signed); + $publicExponent = $e->toBytes($signed); + + switch ($this->publicKeyFormat) { + case CRYPT_RSA_PUBLIC_FORMAT_RAW: + return array('e' => $e->copy(), 'n' => $n->copy()); + case CRYPT_RSA_PUBLIC_FORMAT_XML: + return "\r\n" . + ' ' . base64_encode($modulus) . "\r\n" . + ' ' . base64_encode($publicExponent) . "\r\n" . + ''; + break; + case CRYPT_RSA_PUBLIC_FORMAT_OPENSSH: + // from : + // string "ssh-rsa" + // mpint e + // mpint n + $RSAPublicKey = pack('Na*Na*Na*', strlen('ssh-rsa'), 'ssh-rsa', strlen($publicExponent), $publicExponent, strlen($modulus), $modulus); + $RSAPublicKey = 'ssh-rsa ' . base64_encode($RSAPublicKey) . ' ' . $this->comment; + + return $RSAPublicKey; + default: // eg. CRYPT_RSA_PUBLIC_FORMAT_PKCS1_RAW or CRYPT_RSA_PUBLIC_FORMAT_PKCS1 + // from : + // RSAPublicKey ::= SEQUENCE { + // modulus INTEGER, -- n + // publicExponent INTEGER -- e + // } + $components = array( + 'modulus' => pack('Ca*a*', CRYPT_RSA_ASN1_INTEGER, $this->_encodeLength(strlen($modulus)), $modulus), + 'publicExponent' => pack('Ca*a*', CRYPT_RSA_ASN1_INTEGER, $this->_encodeLength(strlen($publicExponent)), $publicExponent) + ); + + $RSAPublicKey = pack( + 'Ca*a*a*', + CRYPT_RSA_ASN1_SEQUENCE, + $this->_encodeLength(strlen($components['modulus']) + strlen($components['publicExponent'])), + $components['modulus'], + $components['publicExponent'] + ); + + if ($this->publicKeyFormat == CRYPT_RSA_PUBLIC_FORMAT_PKCS1_RAW) { + $RSAPublicKey = "-----BEGIN RSA PUBLIC KEY-----\r\n" . + chunk_split(base64_encode($RSAPublicKey), 64) . + '-----END RSA PUBLIC KEY-----'; + } else { + // sequence(oid(1.2.840.113549.1.1.1), null)) = rsaEncryption. + $rsaOID = pack('H*', '300d06092a864886f70d0101010500'); // hex version of MA0GCSqGSIb3DQEBAQUA + $RSAPublicKey = chr(0) . $RSAPublicKey; + $RSAPublicKey = chr(3) . $this->_encodeLength(strlen($RSAPublicKey)) . $RSAPublicKey; + + $RSAPublicKey = pack( + 'Ca*a*', + CRYPT_RSA_ASN1_SEQUENCE, + $this->_encodeLength(strlen($rsaOID . $RSAPublicKey)), + $rsaOID . $RSAPublicKey + ); + + $RSAPublicKey = "-----BEGIN PUBLIC KEY-----\r\n" . + chunk_split(base64_encode($RSAPublicKey), 64) . + '-----END PUBLIC KEY-----'; + } + + return $RSAPublicKey; + } + } + + /** + * Break a public or private key down into its constituant components + * + * @access private + * @see self::_convertPublicKey() + * @see self::_convertPrivateKey() + * @param string $key + * @param int $type + * @return array + */ + function _parseKey($key, $type) + { + if ($type != CRYPT_RSA_PUBLIC_FORMAT_RAW && !is_string($key)) { + return false; + } + + switch ($type) { + case CRYPT_RSA_PUBLIC_FORMAT_RAW: + if (!is_array($key)) { + return false; + } + $components = array(); + switch (true) { + case isset($key['e']): + $components['publicExponent'] = $key['e']->copy(); + break; + case isset($key['exponent']): + $components['publicExponent'] = $key['exponent']->copy(); + break; + case isset($key['publicExponent']): + $components['publicExponent'] = $key['publicExponent']->copy(); + break; + case isset($key[0]): + $components['publicExponent'] = $key[0]->copy(); + } + switch (true) { + case isset($key['n']): + $components['modulus'] = $key['n']->copy(); + break; + case isset($key['modulo']): + $components['modulus'] = $key['modulo']->copy(); + break; + case isset($key['modulus']): + $components['modulus'] = $key['modulus']->copy(); + break; + case isset($key[1]): + $components['modulus'] = $key[1]->copy(); + } + return isset($components['modulus']) && isset($components['publicExponent']) ? $components : false; + case CRYPT_RSA_PRIVATE_FORMAT_PKCS1: + case CRYPT_RSA_PRIVATE_FORMAT_PKCS8: + case CRYPT_RSA_PUBLIC_FORMAT_PKCS1: + /* Although PKCS#1 proposes a format that public and private keys can use, encrypting them is + "outside the scope" of PKCS#1. PKCS#1 then refers you to PKCS#12 and PKCS#15 if you're wanting to + protect private keys, however, that's not what OpenSSL* does. OpenSSL protects private keys by adding + two new "fields" to the key - DEK-Info and Proc-Type. These fields are discussed here: + + http://tools.ietf.org/html/rfc1421#section-4.6.1.1 + http://tools.ietf.org/html/rfc1421#section-4.6.1.3 + + DES-EDE3-CBC as an algorithm, however, is not discussed anywhere, near as I can tell. + DES-CBC and DES-EDE are discussed in RFC1423, however, DES-EDE3-CBC isn't, nor is its key derivation + function. As is, the definitive authority on this encoding scheme isn't the IETF but rather OpenSSL's + own implementation. ie. the implementation *is* the standard and any bugs that may exist in that + implementation are part of the standard, as well. + + * OpenSSL is the de facto standard. It's utilized by OpenSSH and other projects */ + if (preg_match('#DEK-Info: (.+),(.+)#', $key, $matches)) { + $iv = pack('H*', trim($matches[2])); + $symkey = pack('H*', md5($this->password . substr($iv, 0, 8))); // symkey is short for symmetric key + $symkey.= pack('H*', md5($symkey . $this->password . substr($iv, 0, 8))); + // remove the Proc-Type / DEK-Info sections as they're no longer needed + $key = preg_replace('#^(?:Proc-Type|DEK-Info): .*#m', '', $key); + $ciphertext = $this->_extractBER($key); + if ($ciphertext === false) { + $ciphertext = $key; + } + switch ($matches[1]) { + case 'AES-256-CBC': + if (!class_exists('Crypt_AES')) { + include_once 'Crypt/AES.php'; + } + $crypto = new Crypt_AES(); + break; + case 'AES-128-CBC': + if (!class_exists('Crypt_AES')) { + include_once 'Crypt/AES.php'; + } + $symkey = substr($symkey, 0, 16); + $crypto = new Crypt_AES(); + break; + case 'DES-EDE3-CFB': + if (!class_exists('Crypt_TripleDES')) { + include_once 'Crypt/TripleDES.php'; + } + $crypto = new Crypt_TripleDES(CRYPT_DES_MODE_CFB); + break; + case 'DES-EDE3-CBC': + if (!class_exists('Crypt_TripleDES')) { + include_once 'Crypt/TripleDES.php'; + } + $symkey = substr($symkey, 0, 24); + $crypto = new Crypt_TripleDES(); + break; + case 'DES-CBC': + if (!class_exists('Crypt_DES')) { + include_once 'Crypt/DES.php'; + } + $crypto = new Crypt_DES(); + break; + default: + return false; + } + $crypto->setKey($symkey); + $crypto->setIV($iv); + $decoded = $crypto->decrypt($ciphertext); + } else { + $decoded = $this->_extractBER($key); + } + + if ($decoded !== false) { + $key = $decoded; + } + + $components = array(); + + if (ord($this->_string_shift($key)) != CRYPT_RSA_ASN1_SEQUENCE) { + return false; + } + if ($this->_decodeLength($key) != strlen($key)) { + return false; + } + + $tag = ord($this->_string_shift($key)); + /* intended for keys for which OpenSSL's asn1parse returns the following: + + 0:d=0 hl=4 l= 631 cons: SEQUENCE + 4:d=1 hl=2 l= 1 prim: INTEGER :00 + 7:d=1 hl=2 l= 13 cons: SEQUENCE + 9:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption + 20:d=2 hl=2 l= 0 prim: NULL + 22:d=1 hl=4 l= 609 prim: OCTET STRING + + ie. PKCS8 keys*/ + + if ($tag == CRYPT_RSA_ASN1_INTEGER && substr($key, 0, 3) == "\x01\x00\x30") { + $this->_string_shift($key, 3); + $tag = CRYPT_RSA_ASN1_SEQUENCE; + } + + if ($tag == CRYPT_RSA_ASN1_SEQUENCE) { + $temp = $this->_string_shift($key, $this->_decodeLength($key)); + if (ord($this->_string_shift($temp)) != CRYPT_RSA_ASN1_OBJECT) { + return false; + } + $length = $this->_decodeLength($temp); + switch ($this->_string_shift($temp, $length)) { + case "\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01": // rsaEncryption + break; + case "\x2a\x86\x48\x86\xf7\x0d\x01\x05\x03": // pbeWithMD5AndDES-CBC + /* + PBEParameter ::= SEQUENCE { + salt OCTET STRING (SIZE(8)), + iterationCount INTEGER } + */ + if (ord($this->_string_shift($temp)) != CRYPT_RSA_ASN1_SEQUENCE) { + return false; + } + if ($this->_decodeLength($temp) != strlen($temp)) { + return false; + } + $this->_string_shift($temp); // assume it's an octet string + $salt = $this->_string_shift($temp, $this->_decodeLength($temp)); + if (ord($this->_string_shift($temp)) != CRYPT_RSA_ASN1_INTEGER) { + return false; + } + $this->_decodeLength($temp); + list(, $iterationCount) = unpack('N', str_pad($temp, 4, chr(0), STR_PAD_LEFT)); + $this->_string_shift($key); // assume it's an octet string + $length = $this->_decodeLength($key); + if (strlen($key) != $length) { + return false; + } + + if (!class_exists('Crypt_DES')) { + include_once 'Crypt/DES.php'; + } + $crypto = new Crypt_DES(); + $crypto->setPassword($this->password, 'pbkdf1', 'md5', $salt, $iterationCount); + $key = $crypto->decrypt($key); + if ($key === false) { + return false; + } + return $this->_parseKey($key, CRYPT_RSA_PRIVATE_FORMAT_PKCS1); + default: + return false; + } + /* intended for keys for which OpenSSL's asn1parse returns the following: + + 0:d=0 hl=4 l= 290 cons: SEQUENCE + 4:d=1 hl=2 l= 13 cons: SEQUENCE + 6:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption + 17:d=2 hl=2 l= 0 prim: NULL + 19:d=1 hl=4 l= 271 prim: BIT STRING */ + $tag = ord($this->_string_shift($key)); // skip over the BIT STRING / OCTET STRING tag + $this->_decodeLength($key); // skip over the BIT STRING / OCTET STRING length + // "The initial octet shall encode, as an unsigned binary integer wtih bit 1 as the least significant bit, the number of + // unused bits in the final subsequent octet. The number shall be in the range zero to seven." + // -- http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf (section 8.6.2.2) + if ($tag == CRYPT_RSA_ASN1_BITSTRING) { + $this->_string_shift($key); + } + if (ord($this->_string_shift($key)) != CRYPT_RSA_ASN1_SEQUENCE) { + return false; + } + if ($this->_decodeLength($key) != strlen($key)) { + return false; + } + $tag = ord($this->_string_shift($key)); + } + if ($tag != CRYPT_RSA_ASN1_INTEGER) { + return false; + } + + $length = $this->_decodeLength($key); + $temp = $this->_string_shift($key, $length); + if (strlen($temp) != 1 || ord($temp) > 2) { + $components['modulus'] = new Math_BigInteger($temp, 256); + $this->_string_shift($key); // skip over CRYPT_RSA_ASN1_INTEGER + $length = $this->_decodeLength($key); + $components[$type == CRYPT_RSA_PUBLIC_FORMAT_PKCS1 ? 'publicExponent' : 'privateExponent'] = new Math_BigInteger($this->_string_shift($key, $length), 256); + + return $components; + } + if (ord($this->_string_shift($key)) != CRYPT_RSA_ASN1_INTEGER) { + return false; + } + $length = $this->_decodeLength($key); + $components['modulus'] = new Math_BigInteger($this->_string_shift($key, $length), 256); + $this->_string_shift($key); + $length = $this->_decodeLength($key); + $components['publicExponent'] = new Math_BigInteger($this->_string_shift($key, $length), 256); + $this->_string_shift($key); + $length = $this->_decodeLength($key); + $components['privateExponent'] = new Math_BigInteger($this->_string_shift($key, $length), 256); + $this->_string_shift($key); + $length = $this->_decodeLength($key); + $components['primes'] = array(1 => new Math_BigInteger($this->_string_shift($key, $length), 256)); + $this->_string_shift($key); + $length = $this->_decodeLength($key); + $components['primes'][] = new Math_BigInteger($this->_string_shift($key, $length), 256); + $this->_string_shift($key); + $length = $this->_decodeLength($key); + $components['exponents'] = array(1 => new Math_BigInteger($this->_string_shift($key, $length), 256)); + $this->_string_shift($key); + $length = $this->_decodeLength($key); + $components['exponents'][] = new Math_BigInteger($this->_string_shift($key, $length), 256); + $this->_string_shift($key); + $length = $this->_decodeLength($key); + $components['coefficients'] = array(2 => new Math_BigInteger($this->_string_shift($key, $length), 256)); + + if (!empty($key)) { + if (ord($this->_string_shift($key)) != CRYPT_RSA_ASN1_SEQUENCE) { + return false; + } + $this->_decodeLength($key); + while (!empty($key)) { + if (ord($this->_string_shift($key)) != CRYPT_RSA_ASN1_SEQUENCE) { + return false; + } + $this->_decodeLength($key); + $key = substr($key, 1); + $length = $this->_decodeLength($key); + $components['primes'][] = new Math_BigInteger($this->_string_shift($key, $length), 256); + $this->_string_shift($key); + $length = $this->_decodeLength($key); + $components['exponents'][] = new Math_BigInteger($this->_string_shift($key, $length), 256); + $this->_string_shift($key); + $length = $this->_decodeLength($key); + $components['coefficients'][] = new Math_BigInteger($this->_string_shift($key, $length), 256); + } + } + + return $components; + case CRYPT_RSA_PUBLIC_FORMAT_OPENSSH: + $parts = explode(' ', $key, 3); + + $key = isset($parts[1]) ? base64_decode($parts[1]) : false; + if ($key === false) { + return false; + } + + $comment = isset($parts[2]) ? $parts[2] : false; + + $cleanup = substr($key, 0, 11) == "\0\0\0\7ssh-rsa"; + + if (strlen($key) <= 4) { + return false; + } + extract(unpack('Nlength', $this->_string_shift($key, 4))); + $publicExponent = new Math_BigInteger($this->_string_shift($key, $length), -256); + if (strlen($key) <= 4) { + return false; + } + extract(unpack('Nlength', $this->_string_shift($key, 4))); + $modulus = new Math_BigInteger($this->_string_shift($key, $length), -256); + + if ($cleanup && strlen($key)) { + if (strlen($key) <= 4) { + return false; + } + extract(unpack('Nlength', $this->_string_shift($key, 4))); + $realModulus = new Math_BigInteger($this->_string_shift($key, $length), -256); + return strlen($key) ? false : array( + 'modulus' => $realModulus, + 'publicExponent' => $modulus, + 'comment' => $comment + ); + } else { + return strlen($key) ? false : array( + 'modulus' => $modulus, + 'publicExponent' => $publicExponent, + 'comment' => $comment + ); + } + // http://www.w3.org/TR/xmldsig-core/#sec-RSAKeyValue + // http://en.wikipedia.org/wiki/XML_Signature + case CRYPT_RSA_PRIVATE_FORMAT_XML: + case CRYPT_RSA_PUBLIC_FORMAT_XML: + $this->components = array(); + + $xml = xml_parser_create('UTF-8'); + xml_set_object($xml, $this); + xml_set_element_handler($xml, '_start_element_handler', '_stop_element_handler'); + xml_set_character_data_handler($xml, '_data_handler'); + // add to account for "dangling" tags like ... that are sometimes added + if (!xml_parse($xml, '' . $key . '')) { + return false; + } + + return isset($this->components['modulus']) && isset($this->components['publicExponent']) ? $this->components : false; + // from PuTTY's SSHPUBK.C + case CRYPT_RSA_PRIVATE_FORMAT_PUTTY: + $components = array(); + $key = preg_split('#\r\n|\r|\n#', $key); + $type = trim(preg_replace('#PuTTY-User-Key-File-2: (.+)#', '$1', $key[0])); + if ($type != 'ssh-rsa') { + return false; + } + $encryption = trim(preg_replace('#Encryption: (.+)#', '$1', $key[1])); + $comment = trim(preg_replace('#Comment: (.+)#', '$1', $key[2])); + + $publicLength = trim(preg_replace('#Public-Lines: (\d+)#', '$1', $key[3])); + $public = base64_decode(implode('', array_map('trim', array_slice($key, 4, $publicLength)))); + $public = substr($public, 11); + extract(unpack('Nlength', $this->_string_shift($public, 4))); + $components['publicExponent'] = new Math_BigInteger($this->_string_shift($public, $length), -256); + extract(unpack('Nlength', $this->_string_shift($public, 4))); + $components['modulus'] = new Math_BigInteger($this->_string_shift($public, $length), -256); + + $privateLength = trim(preg_replace('#Private-Lines: (\d+)#', '$1', $key[$publicLength + 4])); + $private = base64_decode(implode('', array_map('trim', array_slice($key, $publicLength + 5, $privateLength)))); + + switch ($encryption) { + case 'aes256-cbc': + if (!class_exists('Crypt_AES')) { + include_once 'Crypt/AES.php'; + } + $symkey = ''; + $sequence = 0; + while (strlen($symkey) < 32) { + $temp = pack('Na*', $sequence++, $this->password); + $symkey.= pack('H*', sha1($temp)); + } + $symkey = substr($symkey, 0, 32); + $crypto = new Crypt_AES(); + } + + if ($encryption != 'none') { + $crypto->setKey($symkey); + $crypto->disablePadding(); + $private = $crypto->decrypt($private); + if ($private === false) { + return false; + } + } + + extract(unpack('Nlength', $this->_string_shift($private, 4))); + if (strlen($private) < $length) { + return false; + } + $components['privateExponent'] = new Math_BigInteger($this->_string_shift($private, $length), -256); + extract(unpack('Nlength', $this->_string_shift($private, 4))); + if (strlen($private) < $length) { + return false; + } + $components['primes'] = array(1 => new Math_BigInteger($this->_string_shift($private, $length), -256)); + extract(unpack('Nlength', $this->_string_shift($private, 4))); + if (strlen($private) < $length) { + return false; + } + $components['primes'][] = new Math_BigInteger($this->_string_shift($private, $length), -256); + + $temp = $components['primes'][1]->subtract($this->one); + $components['exponents'] = array(1 => $components['publicExponent']->modInverse($temp)); + $temp = $components['primes'][2]->subtract($this->one); + $components['exponents'][] = $components['publicExponent']->modInverse($temp); + + extract(unpack('Nlength', $this->_string_shift($private, 4))); + if (strlen($private) < $length) { + return false; + } + $components['coefficients'] = array(2 => new Math_BigInteger($this->_string_shift($private, $length), -256)); + + return $components; + } + } + + /** + * Returns the key size + * + * More specifically, this returns the size of the modulo in bits. + * + * @access public + * @return int + */ + function getSize() + { + return !isset($this->modulus) ? 0 : strlen($this->modulus->toBits()); + } + + /** + * Start Element Handler + * + * Called by xml_set_element_handler() + * + * @access private + * @param resource $parser + * @param string $name + * @param array $attribs + */ + function _start_element_handler($parser, $name, $attribs) + { + //$name = strtoupper($name); + switch ($name) { + case 'MODULUS': + $this->current = &$this->components['modulus']; + break; + case 'EXPONENT': + $this->current = &$this->components['publicExponent']; + break; + case 'P': + $this->current = &$this->components['primes'][1]; + break; + case 'Q': + $this->current = &$this->components['primes'][2]; + break; + case 'DP': + $this->current = &$this->components['exponents'][1]; + break; + case 'DQ': + $this->current = &$this->components['exponents'][2]; + break; + case 'INVERSEQ': + $this->current = &$this->components['coefficients'][2]; + break; + case 'D': + $this->current = &$this->components['privateExponent']; + } + $this->current = ''; + } + + /** + * Stop Element Handler + * + * Called by xml_set_element_handler() + * + * @access private + * @param resource $parser + * @param string $name + */ + function _stop_element_handler($parser, $name) + { + if (isset($this->current)) { + $this->current = new Math_BigInteger(base64_decode($this->current), 256); + unset($this->current); + } + } + + /** + * Data Handler + * + * Called by xml_set_character_data_handler() + * + * @access private + * @param resource $parser + * @param string $data + */ + function _data_handler($parser, $data) + { + if (!isset($this->current) || is_object($this->current)) { + return; + } + $this->current.= trim($data); + } + + /** + * Loads a public or private key + * + * Returns true on success and false on failure (ie. an incorrect password was provided or the key was malformed) + * + * @access public + * @param string $key + * @param int $type optional + */ + function loadKey($key, $type = false) + { + if (is_object($key) && strtolower(get_class($key)) == 'crypt_rsa') { + $this->privateKeyFormat = $key->privateKeyFormat; + $this->publicKeyFormat = $key->publicKeyFormat; + $this->k = $key->k; + $this->hLen = $key->hLen; + $this->sLen = $key->sLen; + $this->mgfHLen = $key->mgfHLen; + $this->encryptionMode = $key->encryptionMode; + $this->signatureMode = $key->signatureMode; + $this->password = $key->password; + $this->configFile = $key->configFile; + $this->comment = $key->comment; + + if (is_object($key->hash)) { + $this->hash = new Crypt_Hash($key->hash->getHash()); + } + if (is_object($key->mgfHash)) { + $this->mgfHash = new Crypt_Hash($key->mgfHash->getHash()); + } + + if (is_object($key->modulus)) { + $this->modulus = $key->modulus->copy(); + } + if (is_object($key->exponent)) { + $this->exponent = $key->exponent->copy(); + } + if (is_object($key->publicExponent)) { + $this->publicExponent = $key->publicExponent->copy(); + } + + $this->primes = array(); + $this->exponents = array(); + $this->coefficients = array(); + + foreach ($this->primes as $prime) { + $this->primes[] = $prime->copy(); + } + foreach ($this->exponents as $exponent) { + $this->exponents[] = $exponent->copy(); + } + foreach ($this->coefficients as $coefficient) { + $this->coefficients[] = $coefficient->copy(); + } + + return true; + } + + if ($type === false) { + $types = array( + CRYPT_RSA_PUBLIC_FORMAT_RAW, + CRYPT_RSA_PRIVATE_FORMAT_PKCS1, + CRYPT_RSA_PRIVATE_FORMAT_XML, + CRYPT_RSA_PRIVATE_FORMAT_PUTTY, + CRYPT_RSA_PUBLIC_FORMAT_OPENSSH + ); + foreach ($types as $type) { + $components = $this->_parseKey($key, $type); + if ($components !== false) { + break; + } + } + } else { + $components = $this->_parseKey($key, $type); + } + + if ($components === false) { + return false; + } + + if (isset($components['comment']) && $components['comment'] !== false) { + $this->comment = $components['comment']; + } + $this->modulus = $components['modulus']; + $this->k = strlen($this->modulus->toBytes()); + $this->exponent = isset($components['privateExponent']) ? $components['privateExponent'] : $components['publicExponent']; + if (isset($components['primes'])) { + $this->primes = $components['primes']; + $this->exponents = $components['exponents']; + $this->coefficients = $components['coefficients']; + $this->publicExponent = $components['publicExponent']; + } else { + $this->primes = array(); + $this->exponents = array(); + $this->coefficients = array(); + $this->publicExponent = false; + } + + switch ($type) { + case CRYPT_RSA_PUBLIC_FORMAT_OPENSSH: + case CRYPT_RSA_PUBLIC_FORMAT_RAW: + $this->setPublicKey(); + break; + case CRYPT_RSA_PRIVATE_FORMAT_PKCS1: + switch (true) { + case strpos($key, '-BEGIN PUBLIC KEY-') !== false: + case strpos($key, '-BEGIN RSA PUBLIC KEY-') !== false: + $this->setPublicKey(); + } + } + + return true; + } + + /** + * Sets the password + * + * Private keys can be encrypted with a password. To unset the password, pass in the empty string or false. + * Or rather, pass in $password such that empty($password) && !is_string($password) is true. + * + * @see self::createKey() + * @see self::loadKey() + * @access public + * @param string $password + */ + function setPassword($password = false) + { + $this->password = $password; + } + + /** + * Defines the public key + * + * Some private key formats define the public exponent and some don't. Those that don't define it are problematic when + * used in certain contexts. For example, in SSH-2, RSA authentication works by sending the public key along with a + * message signed by the private key to the server. The SSH-2 server looks the public key up in an index of public keys + * and if it's present then proceeds to verify the signature. Problem is, if your private key doesn't include the public + * exponent this won't work unless you manually add the public exponent. phpseclib tries to guess if the key being used + * is the public key but in the event that it guesses incorrectly you might still want to explicitly set the key as being + * public. + * + * Do note that when a new key is loaded the index will be cleared. + * + * Returns true on success, false on failure + * + * @see self::getPublicKey() + * @access public + * @param string $key optional + * @param int $type optional + * @return bool + */ + function setPublicKey($key = false, $type = false) + { + // if a public key has already been loaded return false + if (!empty($this->publicExponent)) { + return false; + } + + if ($key === false && !empty($this->modulus)) { + $this->publicExponent = $this->exponent; + return true; + } + + if ($type === false) { + $types = array( + CRYPT_RSA_PUBLIC_FORMAT_RAW, + CRYPT_RSA_PUBLIC_FORMAT_PKCS1, + CRYPT_RSA_PUBLIC_FORMAT_XML, + CRYPT_RSA_PUBLIC_FORMAT_OPENSSH + ); + foreach ($types as $type) { + $components = $this->_parseKey($key, $type); + if ($components !== false) { + break; + } + } + } else { + $components = $this->_parseKey($key, $type); + } + + if ($components === false) { + return false; + } + + if (empty($this->modulus) || !$this->modulus->equals($components['modulus'])) { + $this->modulus = $components['modulus']; + $this->exponent = $this->publicExponent = $components['publicExponent']; + return true; + } + + $this->publicExponent = $components['publicExponent']; + + return true; + } + + /** + * Defines the private key + * + * If phpseclib guessed a private key was a public key and loaded it as such it might be desirable to force + * phpseclib to treat the key as a private key. This function will do that. + * + * Do note that when a new key is loaded the index will be cleared. + * + * Returns true on success, false on failure + * + * @see self::getPublicKey() + * @access public + * @param string $key optional + * @param int $type optional + * @return bool + */ + function setPrivateKey($key = false, $type = false) + { + if ($key === false && !empty($this->publicExponent)) { + $this->publicExponent = false; + return true; + } + + $rsa = new Crypt_RSA(); + if (!$rsa->loadKey($key, $type)) { + return false; + } + $rsa->publicExponent = false; + + // don't overwrite the old key if the new key is invalid + $this->loadKey($rsa); + return true; + } + + /** + * Returns the public key + * + * The public key is only returned under two circumstances - if the private key had the public key embedded within it + * or if the public key was set via setPublicKey(). If the currently loaded key is supposed to be the public key this + * function won't return it since this library, for the most part, doesn't distinguish between public and private keys. + * + * @see self::getPublicKey() + * @access public + * @param string $key + * @param int $type optional + */ + function getPublicKey($type = CRYPT_RSA_PUBLIC_FORMAT_PKCS8) + { + if (empty($this->modulus) || empty($this->publicExponent)) { + return false; + } + + $oldFormat = $this->publicKeyFormat; + $this->publicKeyFormat = $type; + $temp = $this->_convertPublicKey($this->modulus, $this->publicExponent); + $this->publicKeyFormat = $oldFormat; + return $temp; + } + + /** + * Returns the public key's fingerprint + * + * The public key's fingerprint is returned, which is equivalent to running `ssh-keygen -lf rsa.pub`. If there is + * no public key currently loaded, false is returned. + * Example output (md5): "c1:b1:30:29:d7:b8:de:6c:97:77:10:d7:46:41:63:87" (as specified by RFC 4716) + * + * @access public + * @param string $algorithm The hashing algorithm to be used. Valid options are 'md5' and 'sha256'. False is returned + * for invalid values. + * @return mixed + */ + function getPublicKeyFingerprint($algorithm = 'md5') + { + if (empty($this->modulus) || empty($this->publicExponent)) { + return false; + } + + $modulus = $this->modulus->toBytes(true); + $publicExponent = $this->publicExponent->toBytes(true); + + $RSAPublicKey = pack('Na*Na*Na*', strlen('ssh-rsa'), 'ssh-rsa', strlen($publicExponent), $publicExponent, strlen($modulus), $modulus); + + switch ($algorithm) { + case 'sha256': + $hash = new Crypt_Hash('sha256'); + $base = base64_encode($hash->hash($RSAPublicKey)); + return substr($base, 0, strlen($base) - 1); + case 'md5': + return substr(chunk_split(md5($RSAPublicKey), 2, ':'), 0, -1); + default: + return false; + } + } + + /** + * Returns the private key + * + * The private key is only returned if the currently loaded key contains the constituent prime numbers. + * + * @see self::getPublicKey() + * @access public + * @param string $key + * @param int $type optional + * @return mixed + */ + function getPrivateKey($type = CRYPT_RSA_PUBLIC_FORMAT_PKCS1) + { + if (empty($this->primes)) { + return false; + } + + $oldFormat = $this->privateKeyFormat; + $this->privateKeyFormat = $type; + $temp = $this->_convertPrivateKey($this->modulus, $this->publicExponent, $this->exponent, $this->primes, $this->exponents, $this->coefficients); + $this->privateKeyFormat = $oldFormat; + return $temp; + } + + /** + * Returns a minimalistic private key + * + * Returns the private key without the prime number constituants. Structurally identical to a public key that + * hasn't been set as the public key + * + * @see self::getPrivateKey() + * @access private + * @param string $key + * @param int $type optional + */ + function _getPrivatePublicKey($mode = CRYPT_RSA_PUBLIC_FORMAT_PKCS8) + { + if (empty($this->modulus) || empty($this->exponent)) { + return false; + } + + $oldFormat = $this->publicKeyFormat; + $this->publicKeyFormat = $mode; + $temp = $this->_convertPublicKey($this->modulus, $this->exponent); + $this->publicKeyFormat = $oldFormat; + return $temp; + } + + /** + * __toString() magic method + * + * @access public + * @return string + */ + function __toString() + { + $key = $this->getPrivateKey($this->privateKeyFormat); + if ($key !== false) { + return $key; + } + $key = $this->_getPrivatePublicKey($this->publicKeyFormat); + return $key !== false ? $key : ''; + } + + /** + * __clone() magic method + * + * @access public + * @return Crypt_RSA + */ + function __clone() + { + $key = new Crypt_RSA(); + $key->loadKey($this); + return $key; + } + + /** + * Generates the smallest and largest numbers requiring $bits bits + * + * @access private + * @param int $bits + * @return array + */ + function _generateMinMax($bits) + { + $bytes = $bits >> 3; + $min = str_repeat(chr(0), $bytes); + $max = str_repeat(chr(0xFF), $bytes); + $msb = $bits & 7; + if ($msb) { + $min = chr(1 << ($msb - 1)) . $min; + $max = chr((1 << $msb) - 1) . $max; + } else { + $min[0] = chr(0x80); + } + + return array( + 'min' => new Math_BigInteger($min, 256), + 'max' => new Math_BigInteger($max, 256) + ); + } + + /** + * DER-decode the length + * + * DER supports lengths up to (2**8)**127, however, we'll only support lengths up to (2**8)**4. See + * {@link http://itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf#p=13 X.690 paragraph 8.1.3} for more information. + * + * @access private + * @param string $string + * @return int + */ + function _decodeLength(&$string) + { + $length = ord($this->_string_shift($string)); + if ($length & 0x80) { // definite length, long form + $length&= 0x7F; + $temp = $this->_string_shift($string, $length); + list(, $length) = unpack('N', substr(str_pad($temp, 4, chr(0), STR_PAD_LEFT), -4)); + } + return $length; + } + + /** + * DER-encode the length + * + * DER supports lengths up to (2**8)**127, however, we'll only support lengths up to (2**8)**4. See + * {@link http://itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf#p=13 X.690 paragraph 8.1.3} for more information. + * + * @access private + * @param int $length + * @return string + */ + function _encodeLength($length) + { + if ($length <= 0x7F) { + return chr($length); + } + + $temp = ltrim(pack('N', $length), chr(0)); + return pack('Ca*', 0x80 | strlen($temp), $temp); + } + + /** + * String Shift + * + * Inspired by array_shift + * + * @param string $string + * @param int $index + * @return string + * @access private + */ + function _string_shift(&$string, $index = 1) + { + $substr = substr($string, 0, $index); + $string = substr($string, $index); + return $substr; + } + + /** + * Determines the private key format + * + * @see self::createKey() + * @access public + * @param int $format + */ + function setPrivateKeyFormat($format) + { + $this->privateKeyFormat = $format; + } + + /** + * Determines the public key format + * + * @see self::createKey() + * @access public + * @param int $format + */ + function setPublicKeyFormat($format) + { + $this->publicKeyFormat = $format; + } + + /** + * Determines which hashing function should be used + * + * Used with signature production / verification and (if the encryption mode is CRYPT_RSA_ENCRYPTION_OAEP) encryption and + * decryption. If $hash isn't supported, sha1 is used. + * + * @access public + * @param string $hash + */ + function setHash($hash) + { + // Crypt_Hash supports algorithms that PKCS#1 doesn't support. md5-96 and sha1-96, for example. + switch ($hash) { + case 'md2': + case 'md5': + case 'sha1': + case 'sha256': + case 'sha384': + case 'sha512': + $this->hash = new Crypt_Hash($hash); + $this->hashName = $hash; + break; + default: + $this->hash = new Crypt_Hash('sha1'); + $this->hashName = 'sha1'; + } + $this->hLen = $this->hash->getLength(); + } + + /** + * Determines which hashing function should be used for the mask generation function + * + * The mask generation function is used by CRYPT_RSA_ENCRYPTION_OAEP and CRYPT_RSA_SIGNATURE_PSS and although it's + * best if Hash and MGFHash are set to the same thing this is not a requirement. + * + * @access public + * @param string $hash + */ + function setMGFHash($hash) + { + // Crypt_Hash supports algorithms that PKCS#1 doesn't support. md5-96 and sha1-96, for example. + switch ($hash) { + case 'md2': + case 'md5': + case 'sha1': + case 'sha256': + case 'sha384': + case 'sha512': + $this->mgfHash = new Crypt_Hash($hash); + break; + default: + $this->mgfHash = new Crypt_Hash('sha1'); + } + $this->mgfHLen = $this->mgfHash->getLength(); + } + + /** + * Determines the salt length + * + * To quote from {@link http://tools.ietf.org/html/rfc3447#page-38 RFC3447#page-38}: + * + * Typical salt lengths in octets are hLen (the length of the output + * of the hash function Hash) and 0. + * + * @access public + * @param int $format + */ + function setSaltLength($sLen) + { + $this->sLen = $sLen; + } + + /** + * Integer-to-Octet-String primitive + * + * See {@link http://tools.ietf.org/html/rfc3447#section-4.1 RFC3447#section-4.1}. + * + * @access private + * @param Math_BigInteger $x + * @param int $xLen + * @return string + */ + function _i2osp($x, $xLen) + { + $x = $x->toBytes(); + if (strlen($x) > $xLen) { + user_error('Integer too large'); + return false; + } + return str_pad($x, $xLen, chr(0), STR_PAD_LEFT); + } + + /** + * Octet-String-to-Integer primitive + * + * See {@link http://tools.ietf.org/html/rfc3447#section-4.2 RFC3447#section-4.2}. + * + * @access private + * @param string $x + * @return Math_BigInteger + */ + function _os2ip($x) + { + return new Math_BigInteger($x, 256); + } + + /** + * Exponentiate with or without Chinese Remainder Theorem + * + * See {@link http://tools.ietf.org/html/rfc3447#section-5.1.1 RFC3447#section-5.1.2}. + * + * @access private + * @param Math_BigInteger $x + * @return Math_BigInteger + */ + function _exponentiate($x) + { + switch (true) { + case empty($this->primes): + case $this->primes[1]->equals($this->zero): + case empty($this->coefficients): + case $this->coefficients[2]->equals($this->zero): + case empty($this->exponents): + case $this->exponents[1]->equals($this->zero): + return $x->modPow($this->exponent, $this->modulus); + } + + $num_primes = count($this->primes); + + if (defined('CRYPT_RSA_DISABLE_BLINDING')) { + $m_i = array( + 1 => $x->modPow($this->exponents[1], $this->primes[1]), + 2 => $x->modPow($this->exponents[2], $this->primes[2]) + ); + $h = $m_i[1]->subtract($m_i[2]); + $h = $h->multiply($this->coefficients[2]); + list(, $h) = $h->divide($this->primes[1]); + $m = $m_i[2]->add($h->multiply($this->primes[2])); + + $r = $this->primes[1]; + for ($i = 3; $i <= $num_primes; $i++) { + $m_i = $x->modPow($this->exponents[$i], $this->primes[$i]); + + $r = $r->multiply($this->primes[$i - 1]); + + $h = $m_i->subtract($m); + $h = $h->multiply($this->coefficients[$i]); + list(, $h) = $h->divide($this->primes[$i]); + + $m = $m->add($r->multiply($h)); + } + } else { + $smallest = $this->primes[1]; + for ($i = 2; $i <= $num_primes; $i++) { + if ($smallest->compare($this->primes[$i]) > 0) { + $smallest = $this->primes[$i]; + } + } + + $one = new Math_BigInteger(1); + + $r = $one->random($one, $smallest->subtract($one)); + + $m_i = array( + 1 => $this->_blind($x, $r, 1), + 2 => $this->_blind($x, $r, 2) + ); + $h = $m_i[1]->subtract($m_i[2]); + $h = $h->multiply($this->coefficients[2]); + list(, $h) = $h->divide($this->primes[1]); + $m = $m_i[2]->add($h->multiply($this->primes[2])); + + $r = $this->primes[1]; + for ($i = 3; $i <= $num_primes; $i++) { + $m_i = $this->_blind($x, $r, $i); + + $r = $r->multiply($this->primes[$i - 1]); + + $h = $m_i->subtract($m); + $h = $h->multiply($this->coefficients[$i]); + list(, $h) = $h->divide($this->primes[$i]); + + $m = $m->add($r->multiply($h)); + } + } + + return $m; + } + + /** + * Performs RSA Blinding + * + * Protects against timing attacks by employing RSA Blinding. + * Returns $x->modPow($this->exponents[$i], $this->primes[$i]) + * + * @access private + * @param Math_BigInteger $x + * @param Math_BigInteger $r + * @param int $i + * @return Math_BigInteger + */ + function _blind($x, $r, $i) + { + $x = $x->multiply($r->modPow($this->publicExponent, $this->primes[$i])); + $x = $x->modPow($this->exponents[$i], $this->primes[$i]); + + $r = $r->modInverse($this->primes[$i]); + $x = $x->multiply($r); + list(, $x) = $x->divide($this->primes[$i]); + + return $x; + } + + /** + * Performs blinded RSA equality testing + * + * Protects against a particular type of timing attack described. + * + * See {@link http://codahale.com/a-lesson-in-timing-attacks/ A Lesson In Timing Attacks (or, Don't use MessageDigest.isEquals)} + * + * Thanks for the heads up singpolyma! + * + * @access private + * @param string $x + * @param string $y + * @return bool + */ + function _equals($x, $y) + { + if (strlen($x) != strlen($y)) { + return false; + } + + $result = 0; + for ($i = 0; $i < strlen($x); $i++) { + $result |= ord($x[$i]) ^ ord($y[$i]); + } + + return $result == 0; + } + + /** + * RSAEP + * + * See {@link http://tools.ietf.org/html/rfc3447#section-5.1.1 RFC3447#section-5.1.1}. + * + * @access private + * @param Math_BigInteger $m + * @return Math_BigInteger + */ + function _rsaep($m) + { + if ($m->compare($this->zero) < 0 || $m->compare($this->modulus) > 0) { + user_error('Message representative out of range'); + return false; + } + return $this->_exponentiate($m); + } + + /** + * RSADP + * + * See {@link http://tools.ietf.org/html/rfc3447#section-5.1.2 RFC3447#section-5.1.2}. + * + * @access private + * @param Math_BigInteger $c + * @return Math_BigInteger + */ + function _rsadp($c) + { + if ($c->compare($this->zero) < 0 || $c->compare($this->modulus) > 0) { + user_error('Ciphertext representative out of range'); + return false; + } + return $this->_exponentiate($c); + } + + /** + * RSASP1 + * + * See {@link http://tools.ietf.org/html/rfc3447#section-5.2.1 RFC3447#section-5.2.1}. + * + * @access private + * @param Math_BigInteger $m + * @return Math_BigInteger + */ + function _rsasp1($m) + { + if ($m->compare($this->zero) < 0 || $m->compare($this->modulus) > 0) { + user_error('Message representative out of range'); + return false; + } + return $this->_exponentiate($m); + } + + /** + * RSAVP1 + * + * See {@link http://tools.ietf.org/html/rfc3447#section-5.2.2 RFC3447#section-5.2.2}. + * + * @access private + * @param Math_BigInteger $s + * @return Math_BigInteger + */ + function _rsavp1($s) + { + if ($s->compare($this->zero) < 0 || $s->compare($this->modulus) > 0) { + user_error('Signature representative out of range'); + return false; + } + return $this->_exponentiate($s); + } + + /** + * MGF1 + * + * See {@link http://tools.ietf.org/html/rfc3447#appendix-B.2.1 RFC3447#appendix-B.2.1}. + * + * @access private + * @param string $mgfSeed + * @param int $mgfLen + * @return string + */ + function _mgf1($mgfSeed, $maskLen) + { + // if $maskLen would yield strings larger than 4GB, PKCS#1 suggests a "Mask too long" error be output. + + $t = ''; + $count = ceil($maskLen / $this->mgfHLen); + for ($i = 0; $i < $count; $i++) { + $c = pack('N', $i); + $t.= $this->mgfHash->hash($mgfSeed . $c); + } + + return substr($t, 0, $maskLen); + } + + /** + * RSAES-OAEP-ENCRYPT + * + * See {@link http://tools.ietf.org/html/rfc3447#section-7.1.1 RFC3447#section-7.1.1} and + * {http://en.wikipedia.org/wiki/Optimal_Asymmetric_Encryption_Padding OAES}. + * + * @access private + * @param string $m + * @param string $l + * @return string + */ + function _rsaes_oaep_encrypt($m, $l = '') + { + $mLen = strlen($m); + + // Length checking + + // if $l is larger than two million terrabytes and you're using sha1, PKCS#1 suggests a "Label too long" error + // be output. + + if ($mLen > $this->k - 2 * $this->hLen - 2) { + user_error('Message too long'); + return false; + } + + // EME-OAEP encoding + + $lHash = $this->hash->hash($l); + $ps = str_repeat(chr(0), $this->k - $mLen - 2 * $this->hLen - 2); + $db = $lHash . $ps . chr(1) . $m; + $seed = crypt_random_string($this->hLen); + $dbMask = $this->_mgf1($seed, $this->k - $this->hLen - 1); + $maskedDB = $db ^ $dbMask; + $seedMask = $this->_mgf1($maskedDB, $this->hLen); + $maskedSeed = $seed ^ $seedMask; + $em = chr(0) . $maskedSeed . $maskedDB; + + // RSA encryption + + $m = $this->_os2ip($em); + $c = $this->_rsaep($m); + $c = $this->_i2osp($c, $this->k); + + // Output the ciphertext C + + return $c; + } + + /** + * RSAES-OAEP-DECRYPT + * + * See {@link http://tools.ietf.org/html/rfc3447#section-7.1.2 RFC3447#section-7.1.2}. The fact that the error + * messages aren't distinguishable from one another hinders debugging, but, to quote from RFC3447#section-7.1.2: + * + * Note. Care must be taken to ensure that an opponent cannot + * distinguish the different error conditions in Step 3.g, whether by + * error message or timing, or, more generally, learn partial + * information about the encoded message EM. Otherwise an opponent may + * be able to obtain useful information about the decryption of the + * ciphertext C, leading to a chosen-ciphertext attack such as the one + * observed by Manger [36]. + * + * As for $l... to quote from {@link http://tools.ietf.org/html/rfc3447#page-17 RFC3447#page-17}: + * + * Both the encryption and the decryption operations of RSAES-OAEP take + * the value of a label L as input. In this version of PKCS #1, L is + * the empty string; other uses of the label are outside the scope of + * this document. + * + * @access private + * @param string $c + * @param string $l + * @return string + */ + function _rsaes_oaep_decrypt($c, $l = '') + { + // Length checking + + // if $l is larger than two million terrabytes and you're using sha1, PKCS#1 suggests a "Label too long" error + // be output. + + if (strlen($c) != $this->k || $this->k < 2 * $this->hLen + 2) { + user_error('Decryption error'); + return false; + } + + // RSA decryption + + $c = $this->_os2ip($c); + $m = $this->_rsadp($c); + if ($m === false) { + user_error('Decryption error'); + return false; + } + $em = $this->_i2osp($m, $this->k); + + // EME-OAEP decoding + + $lHash = $this->hash->hash($l); + $y = ord($em[0]); + $maskedSeed = substr($em, 1, $this->hLen); + $maskedDB = substr($em, $this->hLen + 1); + $seedMask = $this->_mgf1($maskedDB, $this->hLen); + $seed = $maskedSeed ^ $seedMask; + $dbMask = $this->_mgf1($seed, $this->k - $this->hLen - 1); + $db = $maskedDB ^ $dbMask; + $lHash2 = substr($db, 0, $this->hLen); + $m = substr($db, $this->hLen); + if ($lHash != $lHash2) { + user_error('Decryption error'); + return false; + } + $m = ltrim($m, chr(0)); + if (ord($m[0]) != 1) { + user_error('Decryption error'); + return false; + } + + // Output the message M + + return substr($m, 1); + } + + /** + * Raw Encryption / Decryption + * + * Doesn't use padding and is not recommended. + * + * @access private + * @param string $m + * @return string + */ + function _raw_encrypt($m) + { + $temp = $this->_os2ip($m); + $temp = $this->_rsaep($temp); + return $this->_i2osp($temp, $this->k); + } + + /** + * RSAES-PKCS1-V1_5-ENCRYPT + * + * See {@link http://tools.ietf.org/html/rfc3447#section-7.2.1 RFC3447#section-7.2.1}. + * + * @access private + * @param string $m + * @return string + */ + function _rsaes_pkcs1_v1_5_encrypt($m) + { + $mLen = strlen($m); + + // Length checking + + if ($mLen > $this->k - 11) { + user_error('Message too long'); + return false; + } + + // EME-PKCS1-v1_5 encoding + + $psLen = $this->k - $mLen - 3; + $ps = ''; + while (strlen($ps) != $psLen) { + $temp = crypt_random_string($psLen - strlen($ps)); + $temp = str_replace("\x00", '', $temp); + $ps.= $temp; + } + $type = 2; + // see the comments of _rsaes_pkcs1_v1_5_decrypt() to understand why this is being done + if (defined('CRYPT_RSA_PKCS15_COMPAT') && (!isset($this->publicExponent) || $this->exponent !== $this->publicExponent)) { + $type = 1; + // "The padding string PS shall consist of k-3-||D|| octets. ... for block type 01, they shall have value FF" + $ps = str_repeat("\xFF", $psLen); + } + $em = chr(0) . chr($type) . $ps . chr(0) . $m; + + // RSA encryption + $m = $this->_os2ip($em); + $c = $this->_rsaep($m); + $c = $this->_i2osp($c, $this->k); + + // Output the ciphertext C + + return $c; + } + + /** + * RSAES-PKCS1-V1_5-DECRYPT + * + * See {@link http://tools.ietf.org/html/rfc3447#section-7.2.2 RFC3447#section-7.2.2}. + * + * For compatibility purposes, this function departs slightly from the description given in RFC3447. + * The reason being that RFC2313#section-8.1 (PKCS#1 v1.5) states that ciphertext's encrypted by the + * private key should have the second byte set to either 0 or 1 and that ciphertext's encrypted by the + * public key should have the second byte set to 2. In RFC3447 (PKCS#1 v2.1), the second byte is supposed + * to be 2 regardless of which key is used. For compatibility purposes, we'll just check to make sure the + * second byte is 2 or less. If it is, we'll accept the decrypted string as valid. + * + * As a consequence of this, a private key encrypted ciphertext produced with Crypt_RSA may not decrypt + * with a strictly PKCS#1 v1.5 compliant RSA implementation. Public key encrypted ciphertext's should but + * not private key encrypted ciphertext's. + * + * @access private + * @param string $c + * @return string + */ + function _rsaes_pkcs1_v1_5_decrypt($c) + { + // Length checking + + if (strlen($c) != $this->k) { // or if k < 11 + user_error('Decryption error'); + return false; + } + + // RSA decryption + + $c = $this->_os2ip($c); + $m = $this->_rsadp($c); + + if ($m === false) { + user_error('Decryption error'); + return false; + } + $em = $this->_i2osp($m, $this->k); + + // EME-PKCS1-v1_5 decoding + + if (ord($em[0]) != 0 || ord($em[1]) > 2) { + user_error('Decryption error'); + return false; + } + + $ps = substr($em, 2, strpos($em, chr(0), 2) - 2); + $m = substr($em, strlen($ps) + 3); + + if (strlen($ps) < 8) { + user_error('Decryption error'); + return false; + } + + // Output M + + return $m; + } + + /** + * EMSA-PSS-ENCODE + * + * See {@link http://tools.ietf.org/html/rfc3447#section-9.1.1 RFC3447#section-9.1.1}. + * + * @access private + * @param string $m + * @param int $emBits + */ + function _emsa_pss_encode($m, $emBits) + { + // if $m is larger than two million terrabytes and you're using sha1, PKCS#1 suggests a "Label too long" error + // be output. + + $emLen = ($emBits + 1) >> 3; // ie. ceil($emBits / 8) + $sLen = $this->sLen !== null ? $this->sLen : $this->hLen; + + $mHash = $this->hash->hash($m); + if ($emLen < $this->hLen + $sLen + 2) { + user_error('Encoding error'); + return false; + } + + $salt = crypt_random_string($sLen); + $m2 = "\0\0\0\0\0\0\0\0" . $mHash . $salt; + $h = $this->hash->hash($m2); + $ps = str_repeat(chr(0), $emLen - $sLen - $this->hLen - 2); + $db = $ps . chr(1) . $salt; + $dbMask = $this->_mgf1($h, $emLen - $this->hLen - 1); + $maskedDB = $db ^ $dbMask; + $maskedDB[0] = ~chr(0xFF << ($emBits & 7)) & $maskedDB[0]; + $em = $maskedDB . $h . chr(0xBC); + + return $em; + } + + /** + * EMSA-PSS-VERIFY + * + * See {@link http://tools.ietf.org/html/rfc3447#section-9.1.2 RFC3447#section-9.1.2}. + * + * @access private + * @param string $m + * @param string $em + * @param int $emBits + * @return string + */ + function _emsa_pss_verify($m, $em, $emBits) + { + // if $m is larger than two million terrabytes and you're using sha1, PKCS#1 suggests a "Label too long" error + // be output. + + $emLen = ($emBits + 1) >> 3; // ie. ceil($emBits / 8); + $sLen = $this->sLen !== null ? $this->sLen : $this->hLen; + + $mHash = $this->hash->hash($m); + if ($emLen < $this->hLen + $sLen + 2) { + return false; + } + + if ($em[strlen($em) - 1] != chr(0xBC)) { + return false; + } + + $maskedDB = substr($em, 0, -$this->hLen - 1); + $h = substr($em, -$this->hLen - 1, $this->hLen); + $temp = chr(0xFF << ($emBits & 7)); + if ((~$maskedDB[0] & $temp) != $temp) { + return false; + } + $dbMask = $this->_mgf1($h, $emLen - $this->hLen - 1); + $db = $maskedDB ^ $dbMask; + $db[0] = ~chr(0xFF << ($emBits & 7)) & $db[0]; + $temp = $emLen - $this->hLen - $sLen - 2; + if (substr($db, 0, $temp) != str_repeat(chr(0), $temp) || ord($db[$temp]) != 1) { + return false; + } + $salt = substr($db, $temp + 1); // should be $sLen long + $m2 = "\0\0\0\0\0\0\0\0" . $mHash . $salt; + $h2 = $this->hash->hash($m2); + return $this->_equals($h, $h2); + } + + /** + * RSASSA-PSS-SIGN + * + * See {@link http://tools.ietf.org/html/rfc3447#section-8.1.1 RFC3447#section-8.1.1}. + * + * @access private + * @param string $m + * @return string + */ + function _rsassa_pss_sign($m) + { + // EMSA-PSS encoding + + $em = $this->_emsa_pss_encode($m, 8 * $this->k - 1); + + // RSA signature + + $m = $this->_os2ip($em); + $s = $this->_rsasp1($m); + $s = $this->_i2osp($s, $this->k); + + // Output the signature S + + return $s; + } + + /** + * RSASSA-PSS-VERIFY + * + * See {@link http://tools.ietf.org/html/rfc3447#section-8.1.2 RFC3447#section-8.1.2}. + * + * @access private + * @param string $m + * @param string $s + * @return string + */ + function _rsassa_pss_verify($m, $s) + { + // Length checking + + if (strlen($s) != $this->k) { + user_error('Invalid signature'); + return false; + } + + // RSA verification + + $modBits = 8 * $this->k; + + $s2 = $this->_os2ip($s); + $m2 = $this->_rsavp1($s2); + if ($m2 === false) { + user_error('Invalid signature'); + return false; + } + $em = $this->_i2osp($m2, $modBits >> 3); + if ($em === false) { + user_error('Invalid signature'); + return false; + } + + // EMSA-PSS verification + + return $this->_emsa_pss_verify($m, $em, $modBits - 1); + } + + /** + * EMSA-PKCS1-V1_5-ENCODE + * + * See {@link http://tools.ietf.org/html/rfc3447#section-9.2 RFC3447#section-9.2}. + * + * @access private + * @param string $m + * @param int $emLen + * @return string + */ + function _emsa_pkcs1_v1_5_encode($m, $emLen) + { + $h = $this->hash->hash($m); + if ($h === false) { + return false; + } + + // see http://tools.ietf.org/html/rfc3447#page-43 + switch ($this->hashName) { + case 'md2': + $t = pack('H*', '3020300c06082a864886f70d020205000410'); + break; + case 'md5': + $t = pack('H*', '3020300c06082a864886f70d020505000410'); + break; + case 'sha1': + $t = pack('H*', '3021300906052b0e03021a05000414'); + break; + case 'sha256': + $t = pack('H*', '3031300d060960864801650304020105000420'); + break; + case 'sha384': + $t = pack('H*', '3041300d060960864801650304020205000430'); + break; + case 'sha512': + $t = pack('H*', '3051300d060960864801650304020305000440'); + } + $t.= $h; + $tLen = strlen($t); + + if ($emLen < $tLen + 11) { + user_error('Intended encoded message length too short'); + return false; + } + + $ps = str_repeat(chr(0xFF), $emLen - $tLen - 3); + + $em = "\0\1$ps\0$t"; + + return $em; + } + + /** + * RSASSA-PKCS1-V1_5-SIGN + * + * See {@link http://tools.ietf.org/html/rfc3447#section-8.2.1 RFC3447#section-8.2.1}. + * + * @access private + * @param string $m + * @return string + */ + function _rsassa_pkcs1_v1_5_sign($m) + { + // EMSA-PKCS1-v1_5 encoding + + $em = $this->_emsa_pkcs1_v1_5_encode($m, $this->k); + if ($em === false) { + user_error('RSA modulus too short'); + return false; + } + + // RSA signature + + $m = $this->_os2ip($em); + $s = $this->_rsasp1($m); + $s = $this->_i2osp($s, $this->k); + + // Output the signature S + + return $s; + } + + /** + * RSASSA-PKCS1-V1_5-VERIFY + * + * See {@link http://tools.ietf.org/html/rfc3447#section-8.2.2 RFC3447#section-8.2.2}. + * + * @access private + * @param string $m + * @return string + */ + function _rsassa_pkcs1_v1_5_verify($m, $s) + { + // Length checking + + if (strlen($s) != $this->k) { + user_error('Invalid signature'); + return false; + } + + // RSA verification + + $s = $this->_os2ip($s); + $m2 = $this->_rsavp1($s); + if ($m2 === false) { + user_error('Invalid signature'); + return false; + } + $em = $this->_i2osp($m2, $this->k); + if ($em === false) { + user_error('Invalid signature'); + return false; + } + + // EMSA-PKCS1-v1_5 encoding + + $em2 = $this->_emsa_pkcs1_v1_5_encode($m, $this->k); + if ($em2 === false) { + user_error('RSA modulus too short'); + return false; + } + + // Compare + return $this->_equals($em, $em2); + } + + /** + * Set Encryption Mode + * + * Valid values include CRYPT_RSA_ENCRYPTION_OAEP and CRYPT_RSA_ENCRYPTION_PKCS1. + * + * @access public + * @param int $mode + */ + function setEncryptionMode($mode) + { + $this->encryptionMode = $mode; + } + + /** + * Set Signature Mode + * + * Valid values include CRYPT_RSA_SIGNATURE_PSS and CRYPT_RSA_SIGNATURE_PKCS1 + * + * @access public + * @param int $mode + */ + function setSignatureMode($mode) + { + $this->signatureMode = $mode; + } + + /** + * Set public key comment. + * + * @access public + * @param string $comment + */ + function setComment($comment) + { + $this->comment = $comment; + } + + /** + * Get public key comment. + * + * @access public + * @return string + */ + function getComment() + { + return $this->comment; + } + + /** + * Encryption + * + * Both CRYPT_RSA_ENCRYPTION_OAEP and CRYPT_RSA_ENCRYPTION_PKCS1 both place limits on how long $plaintext can be. + * If $plaintext exceeds those limits it will be broken up so that it does and the resultant ciphertext's will + * be concatenated together. + * + * @see self::decrypt() + * @access public + * @param string $plaintext + * @return string + */ + function encrypt($plaintext) + { + switch ($this->encryptionMode) { + case CRYPT_RSA_ENCRYPTION_NONE: + $plaintext = str_split($plaintext, $this->k); + $ciphertext = ''; + foreach ($plaintext as $m) { + $ciphertext.= $this->_raw_encrypt($m); + } + return $ciphertext; + case CRYPT_RSA_ENCRYPTION_PKCS1: + $length = $this->k - 11; + if ($length <= 0) { + return false; + } + + $plaintext = str_split($plaintext, $length); + $ciphertext = ''; + foreach ($plaintext as $m) { + $ciphertext.= $this->_rsaes_pkcs1_v1_5_encrypt($m); + } + return $ciphertext; + //case CRYPT_RSA_ENCRYPTION_OAEP: + default: + $length = $this->k - 2 * $this->hLen - 2; + if ($length <= 0) { + return false; + } + + $plaintext = str_split($plaintext, $length); + $ciphertext = ''; + foreach ($plaintext as $m) { + $ciphertext.= $this->_rsaes_oaep_encrypt($m); + } + return $ciphertext; + } + } + + /** + * Decryption + * + * @see self::encrypt() + * @access public + * @param string $plaintext + * @return string + */ + function decrypt($ciphertext) + { + if ($this->k <= 0) { + return false; + } + + $ciphertext = str_split($ciphertext, $this->k); + $ciphertext[count($ciphertext) - 1] = str_pad($ciphertext[count($ciphertext) - 1], $this->k, chr(0), STR_PAD_LEFT); + + $plaintext = ''; + + switch ($this->encryptionMode) { + case CRYPT_RSA_ENCRYPTION_NONE: + $decrypt = '_raw_encrypt'; + break; + case CRYPT_RSA_ENCRYPTION_PKCS1: + $decrypt = '_rsaes_pkcs1_v1_5_decrypt'; + break; + //case CRYPT_RSA_ENCRYPTION_OAEP: + default: + $decrypt = '_rsaes_oaep_decrypt'; + } + + foreach ($ciphertext as $c) { + $temp = $this->$decrypt($c); + if ($temp === false) { + return false; + } + $plaintext.= $temp; + } + + return $plaintext; + } + + /** + * Create a signature + * + * @see self::verify() + * @access public + * @param string $message + * @return string + */ + function sign($message) + { + if (empty($this->modulus) || empty($this->exponent)) { + return false; + } + + switch ($this->signatureMode) { + case CRYPT_RSA_SIGNATURE_PKCS1: + return $this->_rsassa_pkcs1_v1_5_sign($message); + //case CRYPT_RSA_SIGNATURE_PSS: + default: + return $this->_rsassa_pss_sign($message); + } + } + + /** + * Verifies a signature + * + * @see self::sign() + * @access public + * @param string $message + * @param string $signature + * @return bool + */ + function verify($message, $signature) + { + if (empty($this->modulus) || empty($this->exponent)) { + return false; + } + + switch ($this->signatureMode) { + case CRYPT_RSA_SIGNATURE_PKCS1: + return $this->_rsassa_pkcs1_v1_5_verify($message, $signature); + //case CRYPT_RSA_SIGNATURE_PSS: + default: + return $this->_rsassa_pss_verify($message, $signature); + } + } + + /** + * Extract raw BER from Base64 encoding + * + * @access private + * @param string $str + * @return string + */ + function _extractBER($str) + { + /* X.509 certs are assumed to be base64 encoded but sometimes they'll have additional things in them + * above and beyond the ceritificate. + * ie. some may have the following preceding the -----BEGIN CERTIFICATE----- line: + * + * Bag Attributes + * localKeyID: 01 00 00 00 + * subject=/O=organization/OU=org unit/CN=common name + * issuer=/O=organization/CN=common name + */ + $temp = preg_replace('#.*?^-+[^-]+-+[\r\n ]*$#ms', '', $str, 1); + // remove the -----BEGIN CERTIFICATE----- and -----END CERTIFICATE----- stuff + $temp = preg_replace('#-+[^-]+-+#', '', $temp); + // remove new lines + $temp = str_replace(array("\r", "\n", ' '), '', $temp); + $temp = preg_match('#^[a-zA-Z\d/+]*={0,2}$#', $temp) ? base64_decode($temp) : false; + return $temp != false ? $temp : $str; + } +} diff --git a/plugins/updraftplus/includes/phpseclib/Crypt/Random.php b/plugins/updraftplus/includes/phpseclib/Crypt/Random.php new file mode 100644 index 0000000..472d47c --- /dev/null +++ b/plugins/updraftplus/includes/phpseclib/Crypt/Random.php @@ -0,0 +1,334 @@ + + * + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_Random + * @author Jim Wigginton + * @copyright 2007 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +// laravel is a PHP framework that utilizes phpseclib. laravel workbenches may, independently, +// have phpseclib as a requirement as well. if you're developing such a program you may encounter +// a "Cannot redeclare crypt_random_string()" error. +if (!function_exists('crypt_random_string')) { + /** + * "Is Windows" test + * + * @access private + */ + define('CRYPT_RANDOM_IS_WINDOWS', strtoupper(substr(PHP_OS, 0, 3)) === 'WIN'); + + /** + * Generate a random string. + * + * Although microoptimizations are generally discouraged as they impair readability this function is ripe with + * microoptimizations because this function has the potential of being called a huge number of times. + * eg. for RSA key generation. + * + * @param int $length + * @return string + * @access public + */ + function crypt_random_string($length) + { + if (CRYPT_RANDOM_IS_WINDOWS) { + // method 1. prior to PHP 5.3, mcrypt_create_iv() would call rand() on windows + if (extension_loaded('mcrypt') && version_compare(PHP_VERSION, '5.3.0', '>=')) { + return mcrypt_create_iv($length); + } + // method 2. openssl_random_pseudo_bytes was introduced in PHP 5.3.0 but prior to PHP 5.3.4 there was, + // to quote , "possible blocking behavior". as of 5.3.4 + // openssl_random_pseudo_bytes and mcrypt_create_iv do the exact same thing on Windows. ie. they both + // call php_win32_get_random_bytes(): + // + // https://github.com/php/php-src/blob/7014a0eb6d1611151a286c0ff4f2238f92c120d6/ext/openssl/openssl.c#L5008 + // https://github.com/php/php-src/blob/7014a0eb6d1611151a286c0ff4f2238f92c120d6/ext/mcrypt/mcrypt.c#L1392 + // + // php_win32_get_random_bytes() is defined thusly: + // + // https://github.com/php/php-src/blob/7014a0eb6d1611151a286c0ff4f2238f92c120d6/win32/winutil.c#L80 + // + // we're calling it, all the same, in the off chance that the mcrypt extension is not available + if (extension_loaded('openssl') && version_compare(PHP_VERSION, '5.3.4', '>=')) { + return openssl_random_pseudo_bytes($length); + } + } else { + // method 1. the fastest + if (extension_loaded('openssl') && version_compare(PHP_VERSION, '5.3.0', '>=')) { + return openssl_random_pseudo_bytes($length); + } + // method 2 + static $fp = true; + if ($fp === true) { + // warning's will be output unles the error suppression operator is used. errors such as + // "open_basedir restriction in effect", "Permission denied", "No such file or directory", etc. + $fp = @fopen('/dev/urandom', 'rb'); + } + if ($fp !== true && $fp !== false) { // surprisingly faster than !is_bool() or is_resource() + return fread($fp, $length); + } + // method 3. pretty much does the same thing as method 2 per the following url: + // https://github.com/php/php-src/blob/7014a0eb6d1611151a286c0ff4f2238f92c120d6/ext/mcrypt/mcrypt.c#L1391 + // surprisingly slower than method 2. maybe that's because mcrypt_create_iv does a bunch of error checking that we're + // not doing. regardless, this'll only be called if this PHP script couldn't open /dev/urandom due to open_basedir + // restrictions or some such + if (extension_loaded('mcrypt')) { + return mcrypt_create_iv($length, MCRYPT_DEV_URANDOM); + } + } + // at this point we have no choice but to use a pure-PHP CSPRNG + + // cascade entropy across multiple PHP instances by fixing the session and collecting all + // environmental variables, including the previous session data and the current session + // data. + // + // mt_rand seeds itself by looking at the PID and the time, both of which are (relatively) + // easy to guess at. linux uses mouse clicks, keyboard timings, etc, as entropy sources, but + // PHP isn't low level to be able to use those as sources and on a web server there's not likely + // going to be a ton of keyboard or mouse action. web servers do have one thing that we can use + // however, a ton of people visiting the website. obviously you don't want to base your seeding + // soley on parameters a potential attacker sends but (1) not everything in $_SERVER is controlled + // by the user and (2) this isn't just looking at the data sent by the current user - it's based + // on the data sent by all users. one user requests the page and a hash of their info is saved. + // another user visits the page and the serialization of their data is utilized along with the + // server envirnment stuff and a hash of the previous http request data (which itself utilizes + // a hash of the session data before that). certainly an attacker should be assumed to have + // full control over his own http requests. he, however, is not going to have control over + // everyone's http requests. + static $crypto = false, $v; + if ($crypto === false) { + // save old session data + $old_session_id = session_id(); + $old_use_cookies = ini_get('session.use_cookies'); + $old_session_cache_limiter = session_cache_limiter(); + $_OLD_SESSION = isset($_SESSION) ? $_SESSION : false; + if ($old_session_id != '') { + session_write_close(); + } + + session_id(1); + ini_set('session.use_cookies', 0); + session_cache_limiter(''); + session_start(); + + $v = $seed = $_SESSION['seed'] = pack('H*', sha1( + (isset($_SERVER) ? phpseclib_safe_serialize($_SERVER) : '') . + (isset($_POST) ? phpseclib_safe_serialize($_POST) : '') . + (isset($_GET) ? phpseclib_safe_serialize($_GET) : '') . + (isset($_COOKIE) ? phpseclib_safe_serialize($_COOKIE) : '') . + phpseclib_safe_serialize($GLOBALS) . + phpseclib_safe_serialize($_SESSION) . + phpseclib_safe_serialize($_OLD_SESSION) + )); + if (!isset($_SESSION['count'])) { + $_SESSION['count'] = 0; + } + $_SESSION['count']++; + + session_write_close(); + + // restore old session data + if ($old_session_id != '') { + session_id($old_session_id); + session_start(); + ini_set('session.use_cookies', $old_use_cookies); + session_cache_limiter($old_session_cache_limiter); + } else { + if ($_OLD_SESSION !== false) { + $_SESSION = $_OLD_SESSION; + unset($_OLD_SESSION); + } else { + unset($_SESSION); + } + } + + // in SSH2 a shared secret and an exchange hash are generated through the key exchange process. + // the IV client to server is the hash of that "nonce" with the letter A and for the encryption key it's the letter C. + // if the hash doesn't produce enough a key or an IV that's long enough concat successive hashes of the + // original hash and the current hash. we'll be emulating that. for more info see the following URL: + // + // http://tools.ietf.org/html/rfc4253#section-7.2 + // + // see the is_string($crypto) part for an example of how to expand the keys + $key = pack('H*', sha1($seed . 'A')); + $iv = pack('H*', sha1($seed . 'C')); + + // ciphers are used as per the nist.gov link below. also, see this link: + // + // http://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator#Designs_based_on_cryptographic_primitives + switch (true) { + case phpseclib_resolve_include_path('Crypt/AES.php'): + if (!class_exists('Crypt_AES')) { + include_once 'AES.php'; + } + $crypto = new Crypt_AES(CRYPT_AES_MODE_CTR); + break; + case phpseclib_resolve_include_path('Crypt/Twofish.php'): + if (!class_exists('Crypt_Twofish')) { + include_once 'Twofish.php'; + } + $crypto = new Crypt_Twofish(CRYPT_TWOFISH_MODE_CTR); + break; + case phpseclib_resolve_include_path('Crypt/Blowfish.php'): + if (!class_exists('Crypt_Blowfish')) { + include_once 'Blowfish.php'; + } + $crypto = new Crypt_Blowfish(CRYPT_BLOWFISH_MODE_CTR); + break; + case phpseclib_resolve_include_path('Crypt/TripleDES.php'): + if (!class_exists('Crypt_TripleDES')) { + include_once 'TripleDES.php'; + } + $crypto = new Crypt_TripleDES(CRYPT_DES_MODE_CTR); + break; + case phpseclib_resolve_include_path('Crypt/DES.php'): + if (!class_exists('Crypt_DES')) { + include_once 'DES.php'; + } + $crypto = new Crypt_DES(CRYPT_DES_MODE_CTR); + break; + case phpseclib_resolve_include_path('Crypt/RC4.php'): + if (!class_exists('Crypt_RC4')) { + include_once 'RC4.php'; + } + $crypto = new Crypt_RC4(); + break; + default: + user_error('crypt_random_string requires at least one symmetric cipher be loaded'); + return false; + } + + $crypto->setKey($key); + $crypto->setIV($iv); + $crypto->enableContinuousBuffer(); + } + + //return $crypto->encrypt(str_repeat("\0", $length)); + + // the following is based off of ANSI X9.31: + // + // http://csrc.nist.gov/groups/STM/cavp/documents/rng/931rngext.pdf + // + // OpenSSL uses that same standard for it's random numbers: + // + // http://www.opensource.apple.com/source/OpenSSL/OpenSSL-38/openssl/fips-1.0/rand/fips_rand.c + // (do a search for "ANS X9.31 A.2.4") + $result = ''; + while (strlen($result) < $length) { + $i = $crypto->encrypt(microtime()); // strlen(microtime()) == 21 + $r = $crypto->encrypt($i ^ $v); // strlen($v) == 20 + $v = $crypto->encrypt($r ^ $i); // strlen($r) == 20 + $result.= $r; + } + return substr($result, 0, $length); + } +} + +if (!function_exists('phpseclib_safe_serialize')) { + /** + * Safely serialize variables + * + * If a class has a private __sleep() method it'll give a fatal error on PHP 5.2 and earlier. + * PHP 5.3 will emit a warning. + * + * @param mixed $arr + * @access public + */ + function phpseclib_safe_serialize(&$arr) + { + if (is_object($arr)) { + return ''; + } + if (!is_array($arr)) { + return serialize($arr); + } + // prevent circular array recursion + if (isset($arr['__phpseclib_marker'])) { + return ''; + } + $safearr = array(); + $arr['__phpseclib_marker'] = true; + foreach (array_keys($arr) as $key) { + // do not recurse on the '__phpseclib_marker' key itself, for smaller memory usage + if ($key !== '__phpseclib_marker') { + $safearr[$key] = phpseclib_safe_serialize($arr[$key]); + } + } + unset($arr['__phpseclib_marker']); + return serialize($safearr); + } +} + +if (!function_exists('phpseclib_resolve_include_path')) { + /** + * Resolve filename against the include path. + * + * Wrapper around stream_resolve_include_path() (which was introduced in + * PHP 5.3.2) with fallback implementation for earlier PHP versions. + * + * @param string $filename + * @return string|false + * @access public + */ + function phpseclib_resolve_include_path($filename) + { + if (function_exists('stream_resolve_include_path')) { + return stream_resolve_include_path($filename); + } + + // handle non-relative paths + if (file_exists($filename)) { + return realpath($filename); + } + + $paths = PATH_SEPARATOR == ':' ? + preg_split('#(? + * setKey('abcdefghijklmnop'); + * + * $size = 10 * 1024; + * $plaintext = ''; + * for ($i = 0; $i < $size; $i++) { + * $plaintext.= 'a'; + * } + * + * echo $rijndael->decrypt($rijndael->encrypt($plaintext)); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_Rijndael + * @author Jim Wigginton + * @copyright 2008 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/** + * Include Crypt_Base + * + * Base cipher class + */ +if (!class_exists('Crypt_Base')) { + include_once 'Base.php'; +} + +/**#@+ + * @access public + * @see self::encrypt() + * @see self::decrypt() + */ +/** + * Encrypt / decrypt using the Counter mode. + * + * Set to -1 since that's what Crypt/Random.php uses to index the CTR mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Counter_.28CTR.29 + */ +define('CRYPT_RIJNDAEL_MODE_CTR', CRYPT_MODE_CTR); +/** + * Encrypt / decrypt using the Electronic Code Book mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29 + */ +define('CRYPT_RIJNDAEL_MODE_ECB', CRYPT_MODE_ECB); +/** + * Encrypt / decrypt using the Code Book Chaining mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29 + */ +define('CRYPT_RIJNDAEL_MODE_CBC', CRYPT_MODE_CBC); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher_feedback_.28CFB.29 + */ +define('CRYPT_RIJNDAEL_MODE_CFB', CRYPT_MODE_CFB); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Output_feedback_.28OFB.29 + */ +define('CRYPT_RIJNDAEL_MODE_OFB', CRYPT_MODE_OFB); +/**#@-*/ + +/** + * Pure-PHP implementation of Rijndael. + * + * @package Crypt_Rijndael + * @author Jim Wigginton + * @access public + */ +class Crypt_Rijndael extends Crypt_Base +{ + /** + * The namespace used by the cipher for its constants. + * + * @see Crypt_Base::const_namespace + * @var string + * @access private + */ + var $const_namespace = 'RIJNDAEL'; + + /** + * The mcrypt specific name of the cipher + * + * Mcrypt is useable for 128/192/256-bit $block_size/$key_length. For 160/224 not. + * Crypt_Rijndael determines automatically whether mcrypt is useable + * or not for the current $block_size/$key_length. + * In case of, $cipher_name_mcrypt will be set dynamically at run time accordingly. + * + * @see Crypt_Base::cipher_name_mcrypt + * @see Crypt_Base::engine + * @see self::isValidEngine() + * @var string + * @access private + */ + var $cipher_name_mcrypt = 'rijndael-128'; + + /** + * The default salt used by setPassword() + * + * @see Crypt_Base::password_default_salt + * @see Crypt_Base::setPassword() + * @var string + * @access private + */ + var $password_default_salt = 'phpseclib'; + + /** + * The Key Schedule + * + * @see self::_setup() + * @var array + * @access private + */ + var $w; + + /** + * The Inverse Key Schedule + * + * @see self::_setup() + * @var array + * @access private + */ + var $dw; + + /** + * The Block Length divided by 32 + * + * @see self::setBlockLength() + * @var int + * @access private + * @internal The max value is 256 / 32 = 8, the min value is 128 / 32 = 4. Exists in conjunction with $block_size + * because the encryption / decryption / key schedule creation requires this number and not $block_size. We could + * derive this from $block_size or vice versa, but that'd mean we'd have to do multiple shift operations, so in lieu + * of that, we'll just precompute it once. + */ + var $Nb = 4; + + /** + * The Key Length (in bytes) + * + * @see self::setKeyLength() + * @var int + * @access private + * @internal The max value is 256 / 8 = 32, the min value is 128 / 8 = 16. Exists in conjunction with $Nk + * because the encryption / decryption / key schedule creation requires this number and not $key_length. We could + * derive this from $key_length or vice versa, but that'd mean we'd have to do multiple shift operations, so in lieu + * of that, we'll just precompute it once. + */ + var $key_length = 16; + + /** + * The Key Length divided by 32 + * + * @see self::setKeyLength() + * @var int + * @access private + * @internal The max value is 256 / 32 = 8, the min value is 128 / 32 = 4 + */ + var $Nk = 4; + + /** + * The Number of Rounds + * + * @var int + * @access private + * @internal The max value is 14, the min value is 10. + */ + var $Nr; + + /** + * Shift offsets + * + * @var array + * @access private + */ + var $c; + + /** + * Holds the last used key- and block_size information + * + * @var array + * @access private + */ + var $kl; + + /** + * Sets the key. + * + * Keys can be of any length. Rijndael, itself, requires the use of a key that's between 128-bits and 256-bits long and + * whose length is a multiple of 32. If the key is less than 256-bits and the key length isn't set, we round the length + * up to the closest valid key length, padding $key with null bytes. If the key is more than 256-bits, we trim the + * excess bits. + * + * If the key is not explicitly set, it'll be assumed to be all null bytes. + * + * Note: 160/224-bit keys must explicitly set by setKeyLength(), otherwise they will be round/pad up to 192/256 bits. + * + * @see Crypt_Base:setKey() + * @see self::setKeyLength() + * @access public + * @param string $key + */ + function setKey($key) + { + if (!$this->explicit_key_length) { + $length = strlen($key); + switch (true) { + case $length <= 16: + $this->key_size = 16; + break; + case $length <= 20: + $this->key_size = 20; + break; + case $length <= 24: + $this->key_size = 24; + break; + case $length <= 28: + $this->key_size = 28; + break; + default: + $this->key_size = 32; + } + } + parent::setKey($key); + } + + /** + * Sets the key length + * + * Valid key lengths are 128, 160, 192, 224, and 256. If the length is less than 128, it will be rounded up to + * 128. If the length is greater than 128 and invalid, it will be rounded down to the closest valid amount. + * + * Note: phpseclib extends Rijndael (and AES) for using 160- and 224-bit keys but they are officially not defined + * and the most (if not all) implementations are not able using 160/224-bit keys but round/pad them up to + * 192/256 bits as, for example, mcrypt will do. + * + * That said, if you want be compatible with other Rijndael and AES implementations, + * you should not setKeyLength(160) or setKeyLength(224). + * + * Additional: In case of 160- and 224-bit keys, phpseclib will/can, for that reason, not use + * the mcrypt php extension, even if available. + * This results then in slower encryption. + * + * @access public + * @param int $length + */ + function setKeyLength($length) + { + switch (true) { + case $length <= 128: + $this->key_length = 16; + break; + case $length <= 160: + $this->key_length = 20; + break; + case $length <= 192: + $this->key_length = 24; + break; + case $length <= 224: + $this->key_length = 28; + break; + default: + $this->key_length = 32; + } + + parent::setKeyLength($length); + } + + /** + * Sets the block length + * + * Valid block lengths are 128, 160, 192, 224, and 256. If the length is less than 128, it will be rounded up to + * 128. If the length is greater than 128 and invalid, it will be rounded down to the closest valid amount. + * + * @access public + * @param int $length + */ + function setBlockLength($length) + { + $length >>= 5; + if ($length > 8) { + $length = 8; + } elseif ($length < 4) { + $length = 4; + } + $this->Nb = $length; + $this->block_size = $length << 2; + $this->changed = true; + $this->_setEngine(); + } + + /** + * Test for engine validity + * + * This is mainly just a wrapper to set things up for Crypt_Base::isValidEngine() + * + * @see Crypt_Base::Crypt_Base() + * @param int $engine + * @access public + * @return bool + */ + function isValidEngine($engine) + { + switch ($engine) { + case CRYPT_ENGINE_OPENSSL: + if ($this->block_size != 16) { + return false; + } + $this->cipher_name_openssl_ecb = 'aes-' . ($this->key_length << 3) . '-ecb'; + $this->cipher_name_openssl = 'aes-' . ($this->key_length << 3) . '-' . $this->_openssl_translate_mode(); + break; + case CRYPT_ENGINE_MCRYPT: + $this->cipher_name_mcrypt = 'rijndael-' . ($this->block_size << 3); + if ($this->key_length % 8) { // is it a 160/224-bit key? + // mcrypt is not usable for them, only for 128/192/256-bit keys + return false; + } + } + + return parent::isValidEngine($engine); + } + + /** + * Encrypts a block + * + * @access private + * @param string $in + * @return string + */ + function _encryptBlock($in) + { + static $tables; + if (empty($tables)) { + $tables = &$this->_getTables(); + } + $t0 = $tables[0]; + $t1 = $tables[1]; + $t2 = $tables[2]; + $t3 = $tables[3]; + $sbox = $tables[4]; + + $state = array(); + $words = unpack('N*', $in); + + $c = $this->c; + $w = $this->w; + $Nb = $this->Nb; + $Nr = $this->Nr; + + // addRoundKey + $wc = $Nb - 1; + foreach ($words as $word) { + $state[] = $word ^ $w[++$wc]; + } + + // fips-197.pdf#page=19, "Figure 5. Pseudo Code for the Cipher", states that this loop has four components - + // subBytes, shiftRows, mixColumns, and addRoundKey. fips-197.pdf#page=30, "Implementation Suggestions Regarding + // Various Platforms" suggests that performs enhanced implementations are described in Rijndael-ammended.pdf. + // Rijndael-ammended.pdf#page=20, "Implementation aspects / 32-bit processor", discusses such an optimization. + // Unfortunately, the description given there is not quite correct. Per aes.spec.v316.pdf#page=19 [1], + // equation (7.4.7) is supposed to use addition instead of subtraction, so we'll do that here, as well. + + // [1] http://fp.gladman.plus.com/cryptography_technology/rijndael/aes.spec.v316.pdf + $temp = array(); + for ($round = 1; $round < $Nr; ++$round) { + $i = 0; // $c[0] == 0 + $j = $c[1]; + $k = $c[2]; + $l = $c[3]; + + while ($i < $Nb) { + $temp[$i] = $t0[$state[$i] >> 24 & 0x000000FF] ^ + $t1[$state[$j] >> 16 & 0x000000FF] ^ + $t2[$state[$k] >> 8 & 0x000000FF] ^ + $t3[$state[$l] & 0x000000FF] ^ + $w[++$wc]; + ++$i; + $j = ($j + 1) % $Nb; + $k = ($k + 1) % $Nb; + $l = ($l + 1) % $Nb; + } + $state = $temp; + } + + // subWord + for ($i = 0; $i < $Nb; ++$i) { + $state[$i] = $sbox[$state[$i] & 0x000000FF] | + ($sbox[$state[$i] >> 8 & 0x000000FF] << 8) | + ($sbox[$state[$i] >> 16 & 0x000000FF] << 16) | + ($sbox[$state[$i] >> 24 & 0x000000FF] << 24); + } + + // shiftRows + addRoundKey + $i = 0; // $c[0] == 0 + $j = $c[1]; + $k = $c[2]; + $l = $c[3]; + while ($i < $Nb) { + $temp[$i] = ($state[$i] & 0xFF000000) ^ + ($state[$j] & 0x00FF0000) ^ + ($state[$k] & 0x0000FF00) ^ + ($state[$l] & 0x000000FF) ^ + $w[$i]; + ++$i; + $j = ($j + 1) % $Nb; + $k = ($k + 1) % $Nb; + $l = ($l + 1) % $Nb; + } + + switch ($Nb) { + case 8: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4], $temp[5], $temp[6], $temp[7]); + case 7: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4], $temp[5], $temp[6]); + case 6: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4], $temp[5]); + case 5: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4]); + default: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3]); + } + } + + /** + * Decrypts a block + * + * @access private + * @param string $in + * @return string + */ + function _decryptBlock($in) + { + static $invtables; + if (empty($invtables)) { + $invtables = &$this->_getInvTables(); + } + $dt0 = $invtables[0]; + $dt1 = $invtables[1]; + $dt2 = $invtables[2]; + $dt3 = $invtables[3]; + $isbox = $invtables[4]; + + $state = array(); + $words = unpack('N*', $in); + + $c = $this->c; + $dw = $this->dw; + $Nb = $this->Nb; + $Nr = $this->Nr; + + // addRoundKey + $wc = $Nb - 1; + foreach ($words as $word) { + $state[] = $word ^ $dw[++$wc]; + } + + $temp = array(); + for ($round = $Nr - 1; $round > 0; --$round) { + $i = 0; // $c[0] == 0 + $j = $Nb - $c[1]; + $k = $Nb - $c[2]; + $l = $Nb - $c[3]; + + while ($i < $Nb) { + $temp[$i] = $dt0[$state[$i] >> 24 & 0x000000FF] ^ + $dt1[$state[$j] >> 16 & 0x000000FF] ^ + $dt2[$state[$k] >> 8 & 0x000000FF] ^ + $dt3[$state[$l] & 0x000000FF] ^ + $dw[++$wc]; + ++$i; + $j = ($j + 1) % $Nb; + $k = ($k + 1) % $Nb; + $l = ($l + 1) % $Nb; + } + $state = $temp; + } + + // invShiftRows + invSubWord + addRoundKey + $i = 0; // $c[0] == 0 + $j = $Nb - $c[1]; + $k = $Nb - $c[2]; + $l = $Nb - $c[3]; + + while ($i < $Nb) { + $word = ($state[$i] & 0xFF000000) | + ($state[$j] & 0x00FF0000) | + ($state[$k] & 0x0000FF00) | + ($state[$l] & 0x000000FF); + + $temp[$i] = $dw[$i] ^ ($isbox[$word & 0x000000FF] | + ($isbox[$word >> 8 & 0x000000FF] << 8) | + ($isbox[$word >> 16 & 0x000000FF] << 16) | + ($isbox[$word >> 24 & 0x000000FF] << 24)); + ++$i; + $j = ($j + 1) % $Nb; + $k = ($k + 1) % $Nb; + $l = ($l + 1) % $Nb; + } + + switch ($Nb) { + case 8: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4], $temp[5], $temp[6], $temp[7]); + case 7: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4], $temp[5], $temp[6]); + case 6: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4], $temp[5]); + case 5: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4]); + default: + return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3]); + } + } + + /** + * Setup the key (expansion) + * + * @see Crypt_Base::_setupKey() + * @access private + */ + function _setupKey() + { + // Each number in $rcon is equal to the previous number multiplied by two in Rijndael's finite field. + // See http://en.wikipedia.org/wiki/Finite_field_arithmetic#Multiplicative_inverse + static $rcon = array(0, + 0x01000000, 0x02000000, 0x04000000, 0x08000000, 0x10000000, + 0x20000000, 0x40000000, 0x80000000, 0x1B000000, 0x36000000, + 0x6C000000, 0xD8000000, 0xAB000000, 0x4D000000, 0x9A000000, + 0x2F000000, 0x5E000000, 0xBC000000, 0x63000000, 0xC6000000, + 0x97000000, 0x35000000, 0x6A000000, 0xD4000000, 0xB3000000, + 0x7D000000, 0xFA000000, 0xEF000000, 0xC5000000, 0x91000000 + ); + + if (isset($this->kl['key']) && $this->key === $this->kl['key'] && $this->key_length === $this->kl['key_length'] && $this->block_size === $this->kl['block_size']) { + // already expanded + return; + } + $this->kl = array('key' => $this->key, 'key_length' => $this->key_length, 'block_size' => $this->block_size); + + $this->Nk = $this->key_length >> 2; + // see Rijndael-ammended.pdf#page=44 + $this->Nr = max($this->Nk, $this->Nb) + 6; + + // shift offsets for Nb = 5, 7 are defined in Rijndael-ammended.pdf#page=44, + // "Table 8: Shift offsets in Shiftrow for the alternative block lengths" + // shift offsets for Nb = 4, 6, 8 are defined in Rijndael-ammended.pdf#page=14, + // "Table 2: Shift offsets for different block lengths" + switch ($this->Nb) { + case 4: + case 5: + case 6: + $this->c = array(0, 1, 2, 3); + break; + case 7: + $this->c = array(0, 1, 2, 4); + break; + case 8: + $this->c = array(0, 1, 3, 4); + } + + $w = array_values(unpack('N*words', $this->key)); + + $length = $this->Nb * ($this->Nr + 1); + for ($i = $this->Nk; $i < $length; $i++) { + $temp = $w[$i - 1]; + if ($i % $this->Nk == 0) { + // according to , "the size of an integer is platform-dependent". + // on a 32-bit machine, it's 32-bits, and on a 64-bit machine, it's 64-bits. on a 32-bit machine, + // 0xFFFFFFFF << 8 == 0xFFFFFF00, but on a 64-bit machine, it equals 0xFFFFFFFF00. as such, doing 'and' + // with 0xFFFFFFFF (or 0xFFFFFF00) on a 32-bit machine is unnecessary, but on a 64-bit machine, it is. + $temp = (($temp << 8) & 0xFFFFFF00) | (($temp >> 24) & 0x000000FF); // rotWord + $temp = $this->_subWord($temp) ^ $rcon[$i / $this->Nk]; + } elseif ($this->Nk > 6 && $i % $this->Nk == 4) { + $temp = $this->_subWord($temp); + } + $w[$i] = $w[$i - $this->Nk] ^ $temp; + } + + // convert the key schedule from a vector of $Nb * ($Nr + 1) length to a matrix with $Nr + 1 rows and $Nb columns + // and generate the inverse key schedule. more specifically, + // according to (section 5.3.3), + // "The key expansion for the Inverse Cipher is defined as follows: + // 1. Apply the Key Expansion. + // 2. Apply InvMixColumn to all Round Keys except the first and the last one." + // also, see fips-197.pdf#page=27, "5.3.5 Equivalent Inverse Cipher" + list($dt0, $dt1, $dt2, $dt3) = $this->_getInvTables(); + $temp = $this->w = $this->dw = array(); + for ($i = $row = $col = 0; $i < $length; $i++, $col++) { + if ($col == $this->Nb) { + if ($row == 0) { + $this->dw[0] = $this->w[0]; + } else { + // subWord + invMixColumn + invSubWord = invMixColumn + $j = 0; + while ($j < $this->Nb) { + $dw = $this->_subWord($this->w[$row][$j]); + $temp[$j] = $dt0[$dw >> 24 & 0x000000FF] ^ + $dt1[$dw >> 16 & 0x000000FF] ^ + $dt2[$dw >> 8 & 0x000000FF] ^ + $dt3[$dw & 0x000000FF]; + $j++; + } + $this->dw[$row] = $temp; + } + + $col = 0; + $row++; + } + $this->w[$row][$col] = $w[$i]; + } + + $this->dw[$row] = $this->w[$row]; + + // Converting to 1-dim key arrays (both ascending) + $this->dw = array_reverse($this->dw); + $w = array_pop($this->w); + $dw = array_pop($this->dw); + foreach ($this->w as $r => $wr) { + foreach ($wr as $c => $wc) { + $w[] = $wc; + $dw[] = $this->dw[$r][$c]; + } + } + $this->w = $w; + $this->dw = $dw; + } + + /** + * Performs S-Box substitutions + * + * @access private + * @param int $word + */ + function _subWord($word) + { + static $sbox; + if (empty($sbox)) { + list(, , , , $sbox) = $this->_getTables(); + } + + return $sbox[$word & 0x000000FF] | + ($sbox[$word >> 8 & 0x000000FF] << 8) | + ($sbox[$word >> 16 & 0x000000FF] << 16) | + ($sbox[$word >> 24 & 0x000000FF] << 24); + } + + /** + * Provides the mixColumns and sboxes tables + * + * @see Crypt_Rijndael:_encryptBlock() + * @see Crypt_Rijndael:_setupInlineCrypt() + * @see Crypt_Rijndael:_subWord() + * @access private + * @return array &$tables + */ + function &_getTables() + { + static $tables; + if (empty($tables)) { + // according to (section 5.2.1), + // precomputed tables can be used in the mixColumns phase. in that example, they're assigned t0...t3, so + // those are the names we'll use. + $t3 = array_map('intval', array( + // with array_map('intval', ...) we ensure we have only int's and not + // some slower floats converted by php automatically on high values + 0x6363A5C6, 0x7C7C84F8, 0x777799EE, 0x7B7B8DF6, 0xF2F20DFF, 0x6B6BBDD6, 0x6F6FB1DE, 0xC5C55491, + 0x30305060, 0x01010302, 0x6767A9CE, 0x2B2B7D56, 0xFEFE19E7, 0xD7D762B5, 0xABABE64D, 0x76769AEC, + 0xCACA458F, 0x82829D1F, 0xC9C94089, 0x7D7D87FA, 0xFAFA15EF, 0x5959EBB2, 0x4747C98E, 0xF0F00BFB, + 0xADADEC41, 0xD4D467B3, 0xA2A2FD5F, 0xAFAFEA45, 0x9C9CBF23, 0xA4A4F753, 0x727296E4, 0xC0C05B9B, + 0xB7B7C275, 0xFDFD1CE1, 0x9393AE3D, 0x26266A4C, 0x36365A6C, 0x3F3F417E, 0xF7F702F5, 0xCCCC4F83, + 0x34345C68, 0xA5A5F451, 0xE5E534D1, 0xF1F108F9, 0x717193E2, 0xD8D873AB, 0x31315362, 0x15153F2A, + 0x04040C08, 0xC7C75295, 0x23236546, 0xC3C35E9D, 0x18182830, 0x9696A137, 0x05050F0A, 0x9A9AB52F, + 0x0707090E, 0x12123624, 0x80809B1B, 0xE2E23DDF, 0xEBEB26CD, 0x2727694E, 0xB2B2CD7F, 0x75759FEA, + 0x09091B12, 0x83839E1D, 0x2C2C7458, 0x1A1A2E34, 0x1B1B2D36, 0x6E6EB2DC, 0x5A5AEEB4, 0xA0A0FB5B, + 0x5252F6A4, 0x3B3B4D76, 0xD6D661B7, 0xB3B3CE7D, 0x29297B52, 0xE3E33EDD, 0x2F2F715E, 0x84849713, + 0x5353F5A6, 0xD1D168B9, 0x00000000, 0xEDED2CC1, 0x20206040, 0xFCFC1FE3, 0xB1B1C879, 0x5B5BEDB6, + 0x6A6ABED4, 0xCBCB468D, 0xBEBED967, 0x39394B72, 0x4A4ADE94, 0x4C4CD498, 0x5858E8B0, 0xCFCF4A85, + 0xD0D06BBB, 0xEFEF2AC5, 0xAAAAE54F, 0xFBFB16ED, 0x4343C586, 0x4D4DD79A, 0x33335566, 0x85859411, + 0x4545CF8A, 0xF9F910E9, 0x02020604, 0x7F7F81FE, 0x5050F0A0, 0x3C3C4478, 0x9F9FBA25, 0xA8A8E34B, + 0x5151F3A2, 0xA3A3FE5D, 0x4040C080, 0x8F8F8A05, 0x9292AD3F, 0x9D9DBC21, 0x38384870, 0xF5F504F1, + 0xBCBCDF63, 0xB6B6C177, 0xDADA75AF, 0x21216342, 0x10103020, 0xFFFF1AE5, 0xF3F30EFD, 0xD2D26DBF, + 0xCDCD4C81, 0x0C0C1418, 0x13133526, 0xECEC2FC3, 0x5F5FE1BE, 0x9797A235, 0x4444CC88, 0x1717392E, + 0xC4C45793, 0xA7A7F255, 0x7E7E82FC, 0x3D3D477A, 0x6464ACC8, 0x5D5DE7BA, 0x19192B32, 0x737395E6, + 0x6060A0C0, 0x81819819, 0x4F4FD19E, 0xDCDC7FA3, 0x22226644, 0x2A2A7E54, 0x9090AB3B, 0x8888830B, + 0x4646CA8C, 0xEEEE29C7, 0xB8B8D36B, 0x14143C28, 0xDEDE79A7, 0x5E5EE2BC, 0x0B0B1D16, 0xDBDB76AD, + 0xE0E03BDB, 0x32325664, 0x3A3A4E74, 0x0A0A1E14, 0x4949DB92, 0x06060A0C, 0x24246C48, 0x5C5CE4B8, + 0xC2C25D9F, 0xD3D36EBD, 0xACACEF43, 0x6262A6C4, 0x9191A839, 0x9595A431, 0xE4E437D3, 0x79798BF2, + 0xE7E732D5, 0xC8C8438B, 0x3737596E, 0x6D6DB7DA, 0x8D8D8C01, 0xD5D564B1, 0x4E4ED29C, 0xA9A9E049, + 0x6C6CB4D8, 0x5656FAAC, 0xF4F407F3, 0xEAEA25CF, 0x6565AFCA, 0x7A7A8EF4, 0xAEAEE947, 0x08081810, + 0xBABAD56F, 0x787888F0, 0x25256F4A, 0x2E2E725C, 0x1C1C2438, 0xA6A6F157, 0xB4B4C773, 0xC6C65197, + 0xE8E823CB, 0xDDDD7CA1, 0x74749CE8, 0x1F1F213E, 0x4B4BDD96, 0xBDBDDC61, 0x8B8B860D, 0x8A8A850F, + 0x707090E0, 0x3E3E427C, 0xB5B5C471, 0x6666AACC, 0x4848D890, 0x03030506, 0xF6F601F7, 0x0E0E121C, + 0x6161A3C2, 0x35355F6A, 0x5757F9AE, 0xB9B9D069, 0x86869117, 0xC1C15899, 0x1D1D273A, 0x9E9EB927, + 0xE1E138D9, 0xF8F813EB, 0x9898B32B, 0x11113322, 0x6969BBD2, 0xD9D970A9, 0x8E8E8907, 0x9494A733, + 0x9B9BB62D, 0x1E1E223C, 0x87879215, 0xE9E920C9, 0xCECE4987, 0x5555FFAA, 0x28287850, 0xDFDF7AA5, + 0x8C8C8F03, 0xA1A1F859, 0x89898009, 0x0D0D171A, 0xBFBFDA65, 0xE6E631D7, 0x4242C684, 0x6868B8D0, + 0x4141C382, 0x9999B029, 0x2D2D775A, 0x0F0F111E, 0xB0B0CB7B, 0x5454FCA8, 0xBBBBD66D, 0x16163A2C + )); + + foreach ($t3 as $t3i) { + $t0[] = (($t3i << 24) & 0xFF000000) | (($t3i >> 8) & 0x00FFFFFF); + $t1[] = (($t3i << 16) & 0xFFFF0000) | (($t3i >> 16) & 0x0000FFFF); + $t2[] = (($t3i << 8) & 0xFFFFFF00) | (($t3i >> 24) & 0x000000FF); + } + + $tables = array( + // The Precomputed mixColumns tables t0 - t3 + $t0, + $t1, + $t2, + $t3, + // The SubByte S-Box + array( + 0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, 0xFE, 0xD7, 0xAB, 0x76, + 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0, + 0xB7, 0xFD, 0x93, 0x26, 0x36, 0x3F, 0xF7, 0xCC, 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15, + 0x04, 0xC7, 0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A, 0x07, 0x12, 0x80, 0xE2, 0xEB, 0x27, 0xB2, 0x75, + 0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84, + 0x53, 0xD1, 0x00, 0xED, 0x20, 0xFC, 0xB1, 0x5B, 0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF, + 0xD0, 0xEF, 0xAA, 0xFB, 0x43, 0x4D, 0x33, 0x85, 0x45, 0xF9, 0x02, 0x7F, 0x50, 0x3C, 0x9F, 0xA8, + 0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5, 0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2, + 0xCD, 0x0C, 0x13, 0xEC, 0x5F, 0x97, 0x44, 0x17, 0xC4, 0xA7, 0x7E, 0x3D, 0x64, 0x5D, 0x19, 0x73, + 0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88, 0x46, 0xEE, 0xB8, 0x14, 0xDE, 0x5E, 0x0B, 0xDB, + 0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, 0xC2, 0xD3, 0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79, + 0xE7, 0xC8, 0x37, 0x6D, 0x8D, 0xD5, 0x4E, 0xA9, 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08, + 0xBA, 0x78, 0x25, 0x2E, 0x1C, 0xA6, 0xB4, 0xC6, 0xE8, 0xDD, 0x74, 0x1F, 0x4B, 0xBD, 0x8B, 0x8A, + 0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, 0x61, 0x35, 0x57, 0xB9, 0x86, 0xC1, 0x1D, 0x9E, + 0xE1, 0xF8, 0x98, 0x11, 0x69, 0xD9, 0x8E, 0x94, 0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF, + 0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, 0x68, 0x41, 0x99, 0x2D, 0x0F, 0xB0, 0x54, 0xBB, 0x16 + ) + ); + } + return $tables; + } + + /** + * Provides the inverse mixColumns and inverse sboxes tables + * + * @see Crypt_Rijndael:_decryptBlock() + * @see Crypt_Rijndael:_setupInlineCrypt() + * @see Crypt_Rijndael:_setupKey() + * @access private + * @return array &$tables + */ + function &_getInvTables() + { + static $tables; + if (empty($tables)) { + $dt3 = array_map('intval', array( + 0xF4A75051, 0x4165537E, 0x17A4C31A, 0x275E963A, 0xAB6BCB3B, 0x9D45F11F, 0xFA58ABAC, 0xE303934B, + 0x30FA5520, 0x766DF6AD, 0xCC769188, 0x024C25F5, 0xE5D7FC4F, 0x2ACBD7C5, 0x35448026, 0x62A38FB5, + 0xB15A49DE, 0xBA1B6725, 0xEA0E9845, 0xFEC0E15D, 0x2F7502C3, 0x4CF01281, 0x4697A38D, 0xD3F9C66B, + 0x8F5FE703, 0x929C9515, 0x6D7AEBBF, 0x5259DA95, 0xBE832DD4, 0x7421D358, 0xE0692949, 0xC9C8448E, + 0xC2896A75, 0x8E7978F4, 0x583E6B99, 0xB971DD27, 0xE14FB6BE, 0x88AD17F0, 0x20AC66C9, 0xCE3AB47D, + 0xDF4A1863, 0x1A3182E5, 0x51336097, 0x537F4562, 0x6477E0B1, 0x6BAE84BB, 0x81A01CFE, 0x082B94F9, + 0x48685870, 0x45FD198F, 0xDE6C8794, 0x7BF8B752, 0x73D323AB, 0x4B02E272, 0x1F8F57E3, 0x55AB2A66, + 0xEB2807B2, 0xB5C2032F, 0xC57B9A86, 0x3708A5D3, 0x2887F230, 0xBFA5B223, 0x036ABA02, 0x16825CED, + 0xCF1C2B8A, 0x79B492A7, 0x07F2F0F3, 0x69E2A14E, 0xDAF4CD65, 0x05BED506, 0x34621FD1, 0xA6FE8AC4, + 0x2E539D34, 0xF355A0A2, 0x8AE13205, 0xF6EB75A4, 0x83EC390B, 0x60EFAA40, 0x719F065E, 0x6E1051BD, + 0x218AF93E, 0xDD063D96, 0x3E05AEDD, 0xE6BD464D, 0x548DB591, 0xC45D0571, 0x06D46F04, 0x5015FF60, + 0x98FB2419, 0xBDE997D6, 0x4043CC89, 0xD99E7767, 0xE842BDB0, 0x898B8807, 0x195B38E7, 0xC8EEDB79, + 0x7C0A47A1, 0x420FE97C, 0x841EC9F8, 0x00000000, 0x80868309, 0x2BED4832, 0x1170AC1E, 0x5A724E6C, + 0x0EFFFBFD, 0x8538560F, 0xAED51E3D, 0x2D392736, 0x0FD9640A, 0x5CA62168, 0x5B54D19B, 0x362E3A24, + 0x0A67B10C, 0x57E70F93, 0xEE96D2B4, 0x9B919E1B, 0xC0C54F80, 0xDC20A261, 0x774B695A, 0x121A161C, + 0x93BA0AE2, 0xA02AE5C0, 0x22E0433C, 0x1B171D12, 0x090D0B0E, 0x8BC7ADF2, 0xB6A8B92D, 0x1EA9C814, + 0xF1198557, 0x75074CAF, 0x99DDBBEE, 0x7F60FDA3, 0x01269FF7, 0x72F5BC5C, 0x663BC544, 0xFB7E345B, + 0x4329768B, 0x23C6DCCB, 0xEDFC68B6, 0xE4F163B8, 0x31DCCAD7, 0x63851042, 0x97224013, 0xC6112084, + 0x4A247D85, 0xBB3DF8D2, 0xF93211AE, 0x29A16DC7, 0x9E2F4B1D, 0xB230F3DC, 0x8652EC0D, 0xC1E3D077, + 0xB3166C2B, 0x70B999A9, 0x9448FA11, 0xE9642247, 0xFC8CC4A8, 0xF03F1AA0, 0x7D2CD856, 0x3390EF22, + 0x494EC787, 0x38D1C1D9, 0xCAA2FE8C, 0xD40B3698, 0xF581CFA6, 0x7ADE28A5, 0xB78E26DA, 0xADBFA43F, + 0x3A9DE42C, 0x78920D50, 0x5FCC9B6A, 0x7E466254, 0x8D13C2F6, 0xD8B8E890, 0x39F75E2E, 0xC3AFF582, + 0x5D80BE9F, 0xD0937C69, 0xD52DA96F, 0x2512B3CF, 0xAC993BC8, 0x187DA710, 0x9C636EE8, 0x3BBB7BDB, + 0x267809CD, 0x5918F46E, 0x9AB701EC, 0x4F9AA883, 0x956E65E6, 0xFFE67EAA, 0xBCCF0821, 0x15E8E6EF, + 0xE79BD9BA, 0x6F36CE4A, 0x9F09D4EA, 0xB07CD629, 0xA4B2AF31, 0x3F23312A, 0xA59430C6, 0xA266C035, + 0x4EBC3774, 0x82CAA6FC, 0x90D0B0E0, 0xA7D81533, 0x04984AF1, 0xECDAF741, 0xCD500E7F, 0x91F62F17, + 0x4DD68D76, 0xEFB04D43, 0xAA4D54CC, 0x9604DFE4, 0xD1B5E39E, 0x6A881B4C, 0x2C1FB8C1, 0x65517F46, + 0x5EEA049D, 0x8C355D01, 0x877473FA, 0x0B412EFB, 0x671D5AB3, 0xDBD25292, 0x105633E9, 0xD647136D, + 0xD7618C9A, 0xA10C7A37, 0xF8148E59, 0x133C89EB, 0xA927EECE, 0x61C935B7, 0x1CE5EDE1, 0x47B13C7A, + 0xD2DF599C, 0xF2733F55, 0x14CE7918, 0xC737BF73, 0xF7CDEA53, 0xFDAA5B5F, 0x3D6F14DF, 0x44DB8678, + 0xAFF381CA, 0x68C43EB9, 0x24342C38, 0xA3405FC2, 0x1DC37216, 0xE2250CBC, 0x3C498B28, 0x0D9541FF, + 0xA8017139, 0x0CB3DE08, 0xB4E49CD8, 0x56C19064, 0xCB84617B, 0x32B670D5, 0x6C5C7448, 0xB85742D0 + )); + + foreach ($dt3 as $dt3i) { + $dt0[] = (($dt3i << 24) & 0xFF000000) | (($dt3i >> 8) & 0x00FFFFFF); + $dt1[] = (($dt3i << 16) & 0xFFFF0000) | (($dt3i >> 16) & 0x0000FFFF); + $dt2[] = (($dt3i << 8) & 0xFFFFFF00) | (($dt3i >> 24) & 0x000000FF); + }; + + $tables = array( + // The Precomputed inverse mixColumns tables dt0 - dt3 + $dt0, + $dt1, + $dt2, + $dt3, + // The inverse SubByte S-Box + array( + 0x52, 0x09, 0x6A, 0xD5, 0x30, 0x36, 0xA5, 0x38, 0xBF, 0x40, 0xA3, 0x9E, 0x81, 0xF3, 0xD7, 0xFB, + 0x7C, 0xE3, 0x39, 0x82, 0x9B, 0x2F, 0xFF, 0x87, 0x34, 0x8E, 0x43, 0x44, 0xC4, 0xDE, 0xE9, 0xCB, + 0x54, 0x7B, 0x94, 0x32, 0xA6, 0xC2, 0x23, 0x3D, 0xEE, 0x4C, 0x95, 0x0B, 0x42, 0xFA, 0xC3, 0x4E, + 0x08, 0x2E, 0xA1, 0x66, 0x28, 0xD9, 0x24, 0xB2, 0x76, 0x5B, 0xA2, 0x49, 0x6D, 0x8B, 0xD1, 0x25, + 0x72, 0xF8, 0xF6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xD4, 0xA4, 0x5C, 0xCC, 0x5D, 0x65, 0xB6, 0x92, + 0x6C, 0x70, 0x48, 0x50, 0xFD, 0xED, 0xB9, 0xDA, 0x5E, 0x15, 0x46, 0x57, 0xA7, 0x8D, 0x9D, 0x84, + 0x90, 0xD8, 0xAB, 0x00, 0x8C, 0xBC, 0xD3, 0x0A, 0xF7, 0xE4, 0x58, 0x05, 0xB8, 0xB3, 0x45, 0x06, + 0xD0, 0x2C, 0x1E, 0x8F, 0xCA, 0x3F, 0x0F, 0x02, 0xC1, 0xAF, 0xBD, 0x03, 0x01, 0x13, 0x8A, 0x6B, + 0x3A, 0x91, 0x11, 0x41, 0x4F, 0x67, 0xDC, 0xEA, 0x97, 0xF2, 0xCF, 0xCE, 0xF0, 0xB4, 0xE6, 0x73, + 0x96, 0xAC, 0x74, 0x22, 0xE7, 0xAD, 0x35, 0x85, 0xE2, 0xF9, 0x37, 0xE8, 0x1C, 0x75, 0xDF, 0x6E, + 0x47, 0xF1, 0x1A, 0x71, 0x1D, 0x29, 0xC5, 0x89, 0x6F, 0xB7, 0x62, 0x0E, 0xAA, 0x18, 0xBE, 0x1B, + 0xFC, 0x56, 0x3E, 0x4B, 0xC6, 0xD2, 0x79, 0x20, 0x9A, 0xDB, 0xC0, 0xFE, 0x78, 0xCD, 0x5A, 0xF4, + 0x1F, 0xDD, 0xA8, 0x33, 0x88, 0x07, 0xC7, 0x31, 0xB1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xEC, 0x5F, + 0x60, 0x51, 0x7F, 0xA9, 0x19, 0xB5, 0x4A, 0x0D, 0x2D, 0xE5, 0x7A, 0x9F, 0x93, 0xC9, 0x9C, 0xEF, + 0xA0, 0xE0, 0x3B, 0x4D, 0xAE, 0x2A, 0xF5, 0xB0, 0xC8, 0xEB, 0xBB, 0x3C, 0x83, 0x53, 0x99, 0x61, + 0x17, 0x2B, 0x04, 0x7E, 0xBA, 0x77, 0xD6, 0x26, 0xE1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0C, 0x7D + ) + ); + } + return $tables; + } + + /** + * Setup the performance-optimized function for de/encrypt() + * + * @see Crypt_Base::_setupInlineCrypt() + * @access private + */ + function _setupInlineCrypt() + { + // Note: _setupInlineCrypt() will be called only if $this->changed === true + // So here we are'nt under the same heavy timing-stress as we are in _de/encryptBlock() or de/encrypt(). + // However...the here generated function- $code, stored as php callback in $this->inline_crypt, must work as fast as even possible. + + $lambda_functions =& Crypt_Rijndael::_getLambdaFunctions(); + + // We create max. 10 hi-optimized code for memory reason. Means: For each $key one ultra fast inline-crypt function. + // (Currently, for Crypt_Rijndael/AES, one generated $lambda_function cost on php5.5@32bit ~80kb unfreeable mem and ~130kb on php5.5@64bit) + // After that, we'll still create very fast optimized code but not the hi-ultimative code, for each $mode one. + $gen_hi_opt_code = (bool)(count($lambda_functions) < 10); + + // Generation of a uniqe hash for our generated code + $code_hash = "Crypt_Rijndael, {$this->mode}, {$this->Nr}, {$this->Nb}"; + if ($gen_hi_opt_code) { + $code_hash = str_pad($code_hash, 32) . $this->_hashInlineCryptFunction($this->key); + } + + if (!isset($lambda_functions[$code_hash])) { + switch (true) { + case $gen_hi_opt_code: + // The hi-optimized $lambda_functions will use the key-words hardcoded for better performance. + $w = $this->w; + $dw = $this->dw; + $init_encrypt = ''; + $init_decrypt = ''; + break; + default: + for ($i = 0, $cw = count($this->w); $i < $cw; ++$i) { + $w[] = '$w[' . $i . ']'; + $dw[] = '$dw[' . $i . ']'; + } + $init_encrypt = '$w = $self->w;'; + $init_decrypt = '$dw = $self->dw;'; + } + + $Nr = $this->Nr; + $Nb = $this->Nb; + $c = $this->c; + + // Generating encrypt code: + $init_encrypt.= ' + static $tables; + if (empty($tables)) { + $tables = &$self->_getTables(); + } + $t0 = $tables[0]; + $t1 = $tables[1]; + $t2 = $tables[2]; + $t3 = $tables[3]; + $sbox = $tables[4]; + '; + + $s = 'e'; + $e = 's'; + $wc = $Nb - 1; + + // Preround: addRoundKey + $encrypt_block = '$in = unpack("N*", $in);'."\n"; + for ($i = 0; $i < $Nb; ++$i) { + $encrypt_block .= '$s'.$i.' = $in['.($i + 1).'] ^ '.$w[++$wc].";\n"; + } + + // Mainrounds: shiftRows + subWord + mixColumns + addRoundKey + for ($round = 1; $round < $Nr; ++$round) { + list($s, $e) = array($e, $s); + for ($i = 0; $i < $Nb; ++$i) { + $encrypt_block.= + '$'.$e.$i.' = + $t0[($'.$s.$i .' >> 24) & 0xff] ^ + $t1[($'.$s.(($i + $c[1]) % $Nb).' >> 16) & 0xff] ^ + $t2[($'.$s.(($i + $c[2]) % $Nb).' >> 8) & 0xff] ^ + $t3[ $'.$s.(($i + $c[3]) % $Nb).' & 0xff] ^ + '.$w[++$wc].";\n"; + } + } + + // Finalround: subWord + shiftRows + addRoundKey + for ($i = 0; $i < $Nb; ++$i) { + $encrypt_block.= + '$'.$e.$i.' = + $sbox[ $'.$e.$i.' & 0xff] | + ($sbox[($'.$e.$i.' >> 8) & 0xff] << 8) | + ($sbox[($'.$e.$i.' >> 16) & 0xff] << 16) | + ($sbox[($'.$e.$i.' >> 24) & 0xff] << 24);'."\n"; + } + $encrypt_block .= '$in = pack("N*"'."\n"; + for ($i = 0; $i < $Nb; ++$i) { + $encrypt_block.= ', + ($'.$e.$i .' & '.((int)0xFF000000).') ^ + ($'.$e.(($i + $c[1]) % $Nb).' & 0x00FF0000 ) ^ + ($'.$e.(($i + $c[2]) % $Nb).' & 0x0000FF00 ) ^ + ($'.$e.(($i + $c[3]) % $Nb).' & 0x000000FF ) ^ + '.$w[$i]."\n"; + } + $encrypt_block .= ');'; + + // Generating decrypt code: + $init_decrypt.= ' + static $invtables; + if (empty($invtables)) { + $invtables = &$self->_getInvTables(); + } + $dt0 = $invtables[0]; + $dt1 = $invtables[1]; + $dt2 = $invtables[2]; + $dt3 = $invtables[3]; + $isbox = $invtables[4]; + '; + + $s = 'e'; + $e = 's'; + $wc = $Nb - 1; + + // Preround: addRoundKey + $decrypt_block = '$in = unpack("N*", $in);'."\n"; + for ($i = 0; $i < $Nb; ++$i) { + $decrypt_block .= '$s'.$i.' = $in['.($i + 1).'] ^ '.$dw[++$wc].';'."\n"; + } + + // Mainrounds: shiftRows + subWord + mixColumns + addRoundKey + for ($round = 1; $round < $Nr; ++$round) { + list($s, $e) = array($e, $s); + for ($i = 0; $i < $Nb; ++$i) { + $decrypt_block.= + '$'.$e.$i.' = + $dt0[($'.$s.$i .' >> 24) & 0xff] ^ + $dt1[($'.$s.(($Nb + $i - $c[1]) % $Nb).' >> 16) & 0xff] ^ + $dt2[($'.$s.(($Nb + $i - $c[2]) % $Nb).' >> 8) & 0xff] ^ + $dt3[ $'.$s.(($Nb + $i - $c[3]) % $Nb).' & 0xff] ^ + '.$dw[++$wc].";\n"; + } + } + + // Finalround: subWord + shiftRows + addRoundKey + for ($i = 0; $i < $Nb; ++$i) { + $decrypt_block.= + '$'.$e.$i.' = + $isbox[ $'.$e.$i.' & 0xff] | + ($isbox[($'.$e.$i.' >> 8) & 0xff] << 8) | + ($isbox[($'.$e.$i.' >> 16) & 0xff] << 16) | + ($isbox[($'.$e.$i.' >> 24) & 0xff] << 24);'."\n"; + } + $decrypt_block .= '$in = pack("N*"'."\n"; + for ($i = 0; $i < $Nb; ++$i) { + $decrypt_block.= ', + ($'.$e.$i. ' & '.((int)0xFF000000).') ^ + ($'.$e.(($Nb + $i - $c[1]) % $Nb).' & 0x00FF0000 ) ^ + ($'.$e.(($Nb + $i - $c[2]) % $Nb).' & 0x0000FF00 ) ^ + ($'.$e.(($Nb + $i - $c[3]) % $Nb).' & 0x000000FF ) ^ + '.$dw[$i]."\n"; + } + $decrypt_block .= ');'; + + $lambda_functions[$code_hash] = $this->_createInlineCryptFunction( + array( + 'init_crypt' => '', + 'init_encrypt' => $init_encrypt, + 'init_decrypt' => $init_decrypt, + 'encrypt_block' => $encrypt_block, + 'decrypt_block' => $decrypt_block + ) + ); + } + $this->inline_crypt = $lambda_functions[$code_hash]; + } +} diff --git a/plugins/updraftplus/includes/phpseclib/Crypt/TripleDES.php b/plugins/updraftplus/includes/phpseclib/Crypt/TripleDES.php new file mode 100644 index 0000000..4c0b677 --- /dev/null +++ b/plugins/updraftplus/includes/phpseclib/Crypt/TripleDES.php @@ -0,0 +1,517 @@ + + * setKey('abcdefghijklmnopqrstuvwx'); + * + * $size = 10 * 1024; + * $plaintext = ''; + * for ($i = 0; $i < $size; $i++) { + * $plaintext.= 'a'; + * } + * + * echo $des->decrypt($des->encrypt($plaintext)); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_TripleDES + * @author Jim Wigginton + * @copyright 2007 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/** + * Include Crypt_DES + */ +if (!class_exists('Crypt_DES')) { + include_once 'DES.php'; +} + +/**#@+ + * @access public + * @see self::Crypt_TripleDES() + */ +/** + * Encrypt / decrypt using inner chaining + * + * Inner chaining is used by SSH-1 and is generally considered to be less secure then outer chaining (CRYPT_DES_MODE_CBC3). + */ +define('CRYPT_MODE_3CBC', -2); +/** + * BC version of the above. + */ +define('CRYPT_DES_MODE_3CBC', -2); +/** + * Encrypt / decrypt using outer chaining + * + * Outer chaining is used by SSH-2 and when the mode is set to CRYPT_DES_MODE_CBC. + */ +define('CRYPT_MODE_CBC3', CRYPT_MODE_CBC); +/** + * BC version of the above. + */ +define('CRYPT_DES_MODE_CBC3', CRYPT_MODE_CBC3); +/**#@-*/ + +/** + * Pure-PHP implementation of Triple DES. + * + * @package Crypt_TripleDES + * @author Jim Wigginton + * @access public + */ +class Crypt_TripleDES extends Crypt_DES +{ + /** + * Key Length (in bytes) + * + * @see Crypt_TripleDES::setKeyLength() + * @var int + * @access private + */ + var $key_length = 24; + + /** + * The default salt used by setPassword() + * + * @see Crypt_Base::password_default_salt + * @see Crypt_Base::setPassword() + * @var string + * @access private + */ + var $password_default_salt = 'phpseclib'; + + /** + * The namespace used by the cipher for its constants. + * + * @see Crypt_DES::const_namespace + * @see Crypt_Base::const_namespace + * @var string + * @access private + */ + var $const_namespace = 'DES'; + + /** + * The mcrypt specific name of the cipher + * + * @see Crypt_DES::cipher_name_mcrypt + * @see Crypt_Base::cipher_name_mcrypt + * @var string + * @access private + */ + var $cipher_name_mcrypt = 'tripledes'; + + /** + * Optimizing value while CFB-encrypting + * + * @see Crypt_Base::cfb_init_len + * @var int + * @access private + */ + var $cfb_init_len = 750; + + /** + * max possible size of $key + * + * @see self::setKey() + * @see Crypt_DES::setKey() + * @var string + * @access private + */ + var $key_length_max = 24; + + /** + * Internal flag whether using CRYPT_DES_MODE_3CBC or not + * + * @var bool + * @access private + */ + var $mode_3cbc; + + /** + * The Crypt_DES objects + * + * Used only if $mode_3cbc === true + * + * @var array + * @access private + */ + var $des; + + /** + * Default Constructor. + * + * Determines whether or not the mcrypt extension should be used. + * + * $mode could be: + * + * - CRYPT_DES_MODE_ECB + * + * - CRYPT_DES_MODE_CBC + * + * - CRYPT_DES_MODE_CTR + * + * - CRYPT_DES_MODE_CFB + * + * - CRYPT_DES_MODE_OFB + * + * - CRYPT_DES_MODE_3CBC + * + * If not explicitly set, CRYPT_DES_MODE_CBC will be used. + * + * @see Crypt_DES::Crypt_DES() + * @see Crypt_Base::Crypt_Base() + * @param int $mode + * @access public + */ + function __construct($mode = CRYPT_MODE_CBC) + { + switch ($mode) { + // In case of CRYPT_DES_MODE_3CBC, we init as CRYPT_DES_MODE_CBC + // and additional flag us internally as 3CBC + case CRYPT_DES_MODE_3CBC: + parent::Crypt_Base(CRYPT_MODE_CBC); + $this->mode_3cbc = true; + + // This three $des'es will do the 3CBC work (if $key > 64bits) + $this->des = array( + new Crypt_DES(CRYPT_MODE_CBC), + new Crypt_DES(CRYPT_MODE_CBC), + new Crypt_DES(CRYPT_MODE_CBC), + ); + + // we're going to be doing the padding, ourselves, so disable it in the Crypt_DES objects + $this->des[0]->disablePadding(); + $this->des[1]->disablePadding(); + $this->des[2]->disablePadding(); + break; + // If not 3CBC, we init as usual + default: + parent::__construct($mode); + } + } + + /** + * PHP4 compatible Default Constructor. + * + * @see self::__construct() + * @param int $mode + * @access public + */ + function Crypt_TripleDES($mode = CRYPT_MODE_CBC) + { + $this->__construct($mode); + } + + /** + * Test for engine validity + * + * This is mainly just a wrapper to set things up for Crypt_Base::isValidEngine() + * + * @see Crypt_Base::Crypt_Base() + * @param int $engine + * @access public + * @return bool + */ + function isValidEngine($engine) + { + if ($engine == CRYPT_ENGINE_OPENSSL) { + $this->cipher_name_openssl_ecb = 'des-ede3'; + $mode = $this->_openssl_translate_mode(); + $this->cipher_name_openssl = $mode == 'ecb' ? 'des-ede3' : 'des-ede3-' . $mode; + } + + return parent::isValidEngine($engine); + } + + /** + * Sets the initialization vector. (optional) + * + * SetIV is not required when CRYPT_DES_MODE_ECB is being used. If not explicitly set, it'll be assumed + * to be all zero's. + * + * @see Crypt_Base::setIV() + * @access public + * @param string $iv + */ + function setIV($iv) + { + parent::setIV($iv); + if ($this->mode_3cbc) { + $this->des[0]->setIV($iv); + $this->des[1]->setIV($iv); + $this->des[2]->setIV($iv); + } + } + + /** + * Sets the key length. + * + * Valid key lengths are 64, 128 and 192 + * + * @see Crypt_Base:setKeyLength() + * @access public + * @param int $length + */ + function setKeyLength($length) + { + $length >>= 3; + switch (true) { + case $length <= 8: + $this->key_length = 8; + break; + case $length <= 16: + $this->key_length = 16; + break; + default: + $this->key_length = 24; + } + + parent::setKeyLength($length); + } + + /** + * Sets the key. + * + * Keys can be of any length. Triple DES, itself, can use 128-bit (eg. strlen($key) == 16) or + * 192-bit (eg. strlen($key) == 24) keys. This function pads and truncates $key as appropriate. + * + * DES also requires that every eighth bit be a parity bit, however, we'll ignore that. + * + * If the key is not explicitly set, it'll be assumed to be all null bytes. + * + * @access public + * @see Crypt_DES::setKey() + * @see Crypt_Base::setKey() + * @param string $key + */ + function setKey($key) + { + $length = $this->explicit_key_length ? $this->key_length : strlen($key); + if ($length > 8) { + $key = str_pad(substr($key, 0, 24), 24, chr(0)); + // if $key is between 64 and 128-bits, use the first 64-bits as the last, per this: + // http://php.net/function.mcrypt-encrypt#47973 + $key = $length <= 16 ? substr_replace($key, substr($key, 0, 8), 16) : substr($key, 0, 24); + } else { + $key = str_pad($key, 8, chr(0)); + } + parent::setKey($key); + + // And in case of CRYPT_DES_MODE_3CBC: + // if key <= 64bits we not need the 3 $des to work, + // because we will then act as regular DES-CBC with just a <= 64bit key. + // So only if the key > 64bits (> 8 bytes) we will call setKey() for the 3 $des. + if ($this->mode_3cbc && $length > 8) { + $this->des[0]->setKey(substr($key, 0, 8)); + $this->des[1]->setKey(substr($key, 8, 8)); + $this->des[2]->setKey(substr($key, 16, 8)); + } + } + + /** + * Encrypts a message. + * + * @see Crypt_Base::encrypt() + * @access public + * @param string $plaintext + * @return string $cipertext + */ + function encrypt($plaintext) + { + // parent::en/decrypt() is able to do all the work for all modes and keylengths, + // except for: CRYPT_MODE_3CBC (inner chaining CBC) with a key > 64bits + + // if the key is smaller then 8, do what we'd normally do + if ($this->mode_3cbc && strlen($this->key) > 8) { + return $this->des[2]->encrypt( + $this->des[1]->decrypt( + $this->des[0]->encrypt( + $this->_pad($plaintext) + ) + ) + ); + } + + return parent::encrypt($plaintext); + } + + /** + * Decrypts a message. + * + * @see Crypt_Base::decrypt() + * @access public + * @param string $ciphertext + * @return string $plaintext + */ + function decrypt($ciphertext) + { + if ($this->mode_3cbc && strlen($this->key) > 8) { + return $this->_unpad( + $this->des[0]->decrypt( + $this->des[1]->encrypt( + $this->des[2]->decrypt( + str_pad($ciphertext, (strlen($ciphertext) + 7) & 0xFFFFFFF8, "\0") + ) + ) + ) + ); + } + + return parent::decrypt($ciphertext); + } + + /** + * Treat consecutive "packets" as if they are a continuous buffer. + * + * Say you have a 16-byte plaintext $plaintext. Using the default behavior, the two following code snippets + * will yield different outputs: + * + * + * echo $des->encrypt(substr($plaintext, 0, 8)); + * echo $des->encrypt(substr($plaintext, 8, 8)); + * + * + * echo $des->encrypt($plaintext); + * + * + * The solution is to enable the continuous buffer. Although this will resolve the above discrepancy, it creates + * another, as demonstrated with the following: + * + * + * $des->encrypt(substr($plaintext, 0, 8)); + * echo $des->decrypt($des->encrypt(substr($plaintext, 8, 8))); + * + * + * echo $des->decrypt($des->encrypt(substr($plaintext, 8, 8))); + * + * + * With the continuous buffer disabled, these would yield the same output. With it enabled, they yield different + * outputs. The reason is due to the fact that the initialization vector's change after every encryption / + * decryption round when the continuous buffer is enabled. When it's disabled, they remain constant. + * + * Put another way, when the continuous buffer is enabled, the state of the Crypt_DES() object changes after each + * encryption / decryption round, whereas otherwise, it'd remain constant. For this reason, it's recommended that + * continuous buffers not be used. They do offer better security and are, in fact, sometimes required (SSH uses them), + * however, they are also less intuitive and more likely to cause you problems. + * + * @see Crypt_Base::enableContinuousBuffer() + * @see self::disableContinuousBuffer() + * @access public + */ + function enableContinuousBuffer() + { + parent::enableContinuousBuffer(); + if ($this->mode_3cbc) { + $this->des[0]->enableContinuousBuffer(); + $this->des[1]->enableContinuousBuffer(); + $this->des[2]->enableContinuousBuffer(); + } + } + + /** + * Treat consecutive packets as if they are a discontinuous buffer. + * + * The default behavior. + * + * @see Crypt_Base::disableContinuousBuffer() + * @see self::enableContinuousBuffer() + * @access public + */ + function disableContinuousBuffer() + { + parent::disableContinuousBuffer(); + if ($this->mode_3cbc) { + $this->des[0]->disableContinuousBuffer(); + $this->des[1]->disableContinuousBuffer(); + $this->des[2]->disableContinuousBuffer(); + } + } + + /** + * Creates the key schedule + * + * @see Crypt_DES::_setupKey() + * @see Crypt_Base::_setupKey() + * @access private + */ + function _setupKey() + { + switch (true) { + // if $key <= 64bits we configure our internal pure-php cipher engine + // to act as regular [1]DES, not as 3DES. mcrypt.so::tripledes does the same. + case strlen($this->key) <= 8: + $this->des_rounds = 1; + break; + + // otherwise, if $key > 64bits, we configure our engine to work as 3DES. + default: + $this->des_rounds = 3; + + // (only) if 3CBC is used we have, of course, to setup the $des[0-2] keys also separately. + if ($this->mode_3cbc) { + $this->des[0]->_setupKey(); + $this->des[1]->_setupKey(); + $this->des[2]->_setupKey(); + + // because $des[0-2] will, now, do all the work we can return here + // not need unnecessary stress parent::_setupKey() with our, now unused, $key. + return; + } + } + // setup our key + parent::_setupKey(); + } + + /** + * Sets the internal crypt engine + * + * @see Crypt_Base::Crypt_Base() + * @see Crypt_Base::setPreferredEngine() + * @param int $engine + * @access public + * @return int + */ + function setPreferredEngine($engine) + { + if ($this->mode_3cbc) { + $this->des[0]->setPreferredEngine($engine); + $this->des[1]->setPreferredEngine($engine); + $this->des[2]->setPreferredEngine($engine); + } + + return parent::setPreferredEngine($engine); + } +} diff --git a/plugins/updraftplus/includes/phpseclib/Crypt/Twofish.php b/plugins/updraftplus/includes/phpseclib/Crypt/Twofish.php new file mode 100644 index 0000000..7125f6a --- /dev/null +++ b/plugins/updraftplus/includes/phpseclib/Crypt/Twofish.php @@ -0,0 +1,881 @@ + + * setKey('12345678901234567890123456789012'); + * + * $plaintext = str_repeat('a', 1024); + * + * echo $twofish->decrypt($twofish->encrypt($plaintext)); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Crypt + * @package Crypt_Twofish + * @author Jim Wigginton + * @author Hans-Juergen Petrich + * @copyright 2007 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/** + * Include Crypt_Base + * + * Base cipher class + */ +if (!class_exists('Crypt_Base')) { + include_once 'Base.php'; +} + +/**#@+ + * @access public + * @see self::encrypt() + * @see self::decrypt() + */ +/** + * Encrypt / decrypt using the Counter mode. + * + * Set to -1 since that's what Crypt/Random.php uses to index the CTR mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Counter_.28CTR.29 + */ +define('CRYPT_TWOFISH_MODE_CTR', CRYPT_MODE_CTR); +/** + * Encrypt / decrypt using the Electronic Code Book mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29 + */ +define('CRYPT_TWOFISH_MODE_ECB', CRYPT_MODE_ECB); +/** + * Encrypt / decrypt using the Code Book Chaining mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29 + */ +define('CRYPT_TWOFISH_MODE_CBC', CRYPT_MODE_CBC); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher_feedback_.28CFB.29 + */ +define('CRYPT_TWOFISH_MODE_CFB', CRYPT_MODE_CFB); +/** + * Encrypt / decrypt using the Cipher Feedback mode. + * + * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Output_feedback_.28OFB.29 + */ +define('CRYPT_TWOFISH_MODE_OFB', CRYPT_MODE_OFB); +/**#@-*/ + +/** + * Pure-PHP implementation of Twofish. + * + * @package Crypt_Twofish + * @author Jim Wigginton + * @author Hans-Juergen Petrich + * @access public + */ +class Crypt_Twofish extends Crypt_Base +{ + /** + * The namespace used by the cipher for its constants. + * + * @see Crypt_Base::const_namespace + * @var string + * @access private + */ + var $const_namespace = 'TWOFISH'; + + /** + * The mcrypt specific name of the cipher + * + * @see Crypt_Base::cipher_name_mcrypt + * @var string + * @access private + */ + var $cipher_name_mcrypt = 'twofish'; + + /** + * Optimizing value while CFB-encrypting + * + * @see Crypt_Base::cfb_init_len + * @var int + * @access private + */ + var $cfb_init_len = 800; + + /** + * Q-Table + * + * @var array + * @access private + */ + var $q0 = array( + 0xA9, 0x67, 0xB3, 0xE8, 0x04, 0xFD, 0xA3, 0x76, + 0x9A, 0x92, 0x80, 0x78, 0xE4, 0xDD, 0xD1, 0x38, + 0x0D, 0xC6, 0x35, 0x98, 0x18, 0xF7, 0xEC, 0x6C, + 0x43, 0x75, 0x37, 0x26, 0xFA, 0x13, 0x94, 0x48, + 0xF2, 0xD0, 0x8B, 0x30, 0x84, 0x54, 0xDF, 0x23, + 0x19, 0x5B, 0x3D, 0x59, 0xF3, 0xAE, 0xA2, 0x82, + 0x63, 0x01, 0x83, 0x2E, 0xD9, 0x51, 0x9B, 0x7C, + 0xA6, 0xEB, 0xA5, 0xBE, 0x16, 0x0C, 0xE3, 0x61, + 0xC0, 0x8C, 0x3A, 0xF5, 0x73, 0x2C, 0x25, 0x0B, + 0xBB, 0x4E, 0x89, 0x6B, 0x53, 0x6A, 0xB4, 0xF1, + 0xE1, 0xE6, 0xBD, 0x45, 0xE2, 0xF4, 0xB6, 0x66, + 0xCC, 0x95, 0x03, 0x56, 0xD4, 0x1C, 0x1E, 0xD7, + 0xFB, 0xC3, 0x8E, 0xB5, 0xE9, 0xCF, 0xBF, 0xBA, + 0xEA, 0x77, 0x39, 0xAF, 0x33, 0xC9, 0x62, 0x71, + 0x81, 0x79, 0x09, 0xAD, 0x24, 0xCD, 0xF9, 0xD8, + 0xE5, 0xC5, 0xB9, 0x4D, 0x44, 0x08, 0x86, 0xE7, + 0xA1, 0x1D, 0xAA, 0xED, 0x06, 0x70, 0xB2, 0xD2, + 0x41, 0x7B, 0xA0, 0x11, 0x31, 0xC2, 0x27, 0x90, + 0x20, 0xF6, 0x60, 0xFF, 0x96, 0x5C, 0xB1, 0xAB, + 0x9E, 0x9C, 0x52, 0x1B, 0x5F, 0x93, 0x0A, 0xEF, + 0x91, 0x85, 0x49, 0xEE, 0x2D, 0x4F, 0x8F, 0x3B, + 0x47, 0x87, 0x6D, 0x46, 0xD6, 0x3E, 0x69, 0x64, + 0x2A, 0xCE, 0xCB, 0x2F, 0xFC, 0x97, 0x05, 0x7A, + 0xAC, 0x7F, 0xD5, 0x1A, 0x4B, 0x0E, 0xA7, 0x5A, + 0x28, 0x14, 0x3F, 0x29, 0x88, 0x3C, 0x4C, 0x02, + 0xB8, 0xDA, 0xB0, 0x17, 0x55, 0x1F, 0x8A, 0x7D, + 0x57, 0xC7, 0x8D, 0x74, 0xB7, 0xC4, 0x9F, 0x72, + 0x7E, 0x15, 0x22, 0x12, 0x58, 0x07, 0x99, 0x34, + 0x6E, 0x50, 0xDE, 0x68, 0x65, 0xBC, 0xDB, 0xF8, + 0xC8, 0xA8, 0x2B, 0x40, 0xDC, 0xFE, 0x32, 0xA4, + 0xCA, 0x10, 0x21, 0xF0, 0xD3, 0x5D, 0x0F, 0x00, + 0x6F, 0x9D, 0x36, 0x42, 0x4A, 0x5E, 0xC1, 0xE0 + ); + + /** + * Q-Table + * + * @var array + * @access private + */ + var $q1 = array( + 0x75, 0xF3, 0xC6, 0xF4, 0xDB, 0x7B, 0xFB, 0xC8, + 0x4A, 0xD3, 0xE6, 0x6B, 0x45, 0x7D, 0xE8, 0x4B, + 0xD6, 0x32, 0xD8, 0xFD, 0x37, 0x71, 0xF1, 0xE1, + 0x30, 0x0F, 0xF8, 0x1B, 0x87, 0xFA, 0x06, 0x3F, + 0x5E, 0xBA, 0xAE, 0x5B, 0x8A, 0x00, 0xBC, 0x9D, + 0x6D, 0xC1, 0xB1, 0x0E, 0x80, 0x5D, 0xD2, 0xD5, + 0xA0, 0x84, 0x07, 0x14, 0xB5, 0x90, 0x2C, 0xA3, + 0xB2, 0x73, 0x4C, 0x54, 0x92, 0x74, 0x36, 0x51, + 0x38, 0xB0, 0xBD, 0x5A, 0xFC, 0x60, 0x62, 0x96, + 0x6C, 0x42, 0xF7, 0x10, 0x7C, 0x28, 0x27, 0x8C, + 0x13, 0x95, 0x9C, 0xC7, 0x24, 0x46, 0x3B, 0x70, + 0xCA, 0xE3, 0x85, 0xCB, 0x11, 0xD0, 0x93, 0xB8, + 0xA6, 0x83, 0x20, 0xFF, 0x9F, 0x77, 0xC3, 0xCC, + 0x03, 0x6F, 0x08, 0xBF, 0x40, 0xE7, 0x2B, 0xE2, + 0x79, 0x0C, 0xAA, 0x82, 0x41, 0x3A, 0xEA, 0xB9, + 0xE4, 0x9A, 0xA4, 0x97, 0x7E, 0xDA, 0x7A, 0x17, + 0x66, 0x94, 0xA1, 0x1D, 0x3D, 0xF0, 0xDE, 0xB3, + 0x0B, 0x72, 0xA7, 0x1C, 0xEF, 0xD1, 0x53, 0x3E, + 0x8F, 0x33, 0x26, 0x5F, 0xEC, 0x76, 0x2A, 0x49, + 0x81, 0x88, 0xEE, 0x21, 0xC4, 0x1A, 0xEB, 0xD9, + 0xC5, 0x39, 0x99, 0xCD, 0xAD, 0x31, 0x8B, 0x01, + 0x18, 0x23, 0xDD, 0x1F, 0x4E, 0x2D, 0xF9, 0x48, + 0x4F, 0xF2, 0x65, 0x8E, 0x78, 0x5C, 0x58, 0x19, + 0x8D, 0xE5, 0x98, 0x57, 0x67, 0x7F, 0x05, 0x64, + 0xAF, 0x63, 0xB6, 0xFE, 0xF5, 0xB7, 0x3C, 0xA5, + 0xCE, 0xE9, 0x68, 0x44, 0xE0, 0x4D, 0x43, 0x69, + 0x29, 0x2E, 0xAC, 0x15, 0x59, 0xA8, 0x0A, 0x9E, + 0x6E, 0x47, 0xDF, 0x34, 0x35, 0x6A, 0xCF, 0xDC, + 0x22, 0xC9, 0xC0, 0x9B, 0x89, 0xD4, 0xED, 0xAB, + 0x12, 0xA2, 0x0D, 0x52, 0xBB, 0x02, 0x2F, 0xA9, + 0xD7, 0x61, 0x1E, 0xB4, 0x50, 0x04, 0xF6, 0xC2, + 0x16, 0x25, 0x86, 0x56, 0x55, 0x09, 0xBE, 0x91 + ); + + /** + * M-Table + * + * @var array + * @access private + */ + var $m0 = array( + 0xBCBC3275, 0xECEC21F3, 0x202043C6, 0xB3B3C9F4, 0xDADA03DB, 0x02028B7B, 0xE2E22BFB, 0x9E9EFAC8, + 0xC9C9EC4A, 0xD4D409D3, 0x18186BE6, 0x1E1E9F6B, 0x98980E45, 0xB2B2387D, 0xA6A6D2E8, 0x2626B74B, + 0x3C3C57D6, 0x93938A32, 0x8282EED8, 0x525298FD, 0x7B7BD437, 0xBBBB3771, 0x5B5B97F1, 0x474783E1, + 0x24243C30, 0x5151E20F, 0xBABAC6F8, 0x4A4AF31B, 0xBFBF4887, 0x0D0D70FA, 0xB0B0B306, 0x7575DE3F, + 0xD2D2FD5E, 0x7D7D20BA, 0x666631AE, 0x3A3AA35B, 0x59591C8A, 0x00000000, 0xCDCD93BC, 0x1A1AE09D, + 0xAEAE2C6D, 0x7F7FABC1, 0x2B2BC7B1, 0xBEBEB90E, 0xE0E0A080, 0x8A8A105D, 0x3B3B52D2, 0x6464BAD5, + 0xD8D888A0, 0xE7E7A584, 0x5F5FE807, 0x1B1B1114, 0x2C2CC2B5, 0xFCFCB490, 0x3131272C, 0x808065A3, + 0x73732AB2, 0x0C0C8173, 0x79795F4C, 0x6B6B4154, 0x4B4B0292, 0x53536974, 0x94948F36, 0x83831F51, + 0x2A2A3638, 0xC4C49CB0, 0x2222C8BD, 0xD5D5F85A, 0xBDBDC3FC, 0x48487860, 0xFFFFCE62, 0x4C4C0796, + 0x4141776C, 0xC7C7E642, 0xEBEB24F7, 0x1C1C1410, 0x5D5D637C, 0x36362228, 0x6767C027, 0xE9E9AF8C, + 0x4444F913, 0x1414EA95, 0xF5F5BB9C, 0xCFCF18C7, 0x3F3F2D24, 0xC0C0E346, 0x7272DB3B, 0x54546C70, + 0x29294CCA, 0xF0F035E3, 0x0808FE85, 0xC6C617CB, 0xF3F34F11, 0x8C8CE4D0, 0xA4A45993, 0xCACA96B8, + 0x68683BA6, 0xB8B84D83, 0x38382820, 0xE5E52EFF, 0xADAD569F, 0x0B0B8477, 0xC8C81DC3, 0x9999FFCC, + 0x5858ED03, 0x19199A6F, 0x0E0E0A08, 0x95957EBF, 0x70705040, 0xF7F730E7, 0x6E6ECF2B, 0x1F1F6EE2, + 0xB5B53D79, 0x09090F0C, 0x616134AA, 0x57571682, 0x9F9F0B41, 0x9D9D803A, 0x111164EA, 0x2525CDB9, + 0xAFAFDDE4, 0x4545089A, 0xDFDF8DA4, 0xA3A35C97, 0xEAEAD57E, 0x353558DA, 0xEDEDD07A, 0x4343FC17, + 0xF8F8CB66, 0xFBFBB194, 0x3737D3A1, 0xFAFA401D, 0xC2C2683D, 0xB4B4CCF0, 0x32325DDE, 0x9C9C71B3, + 0x5656E70B, 0xE3E3DA72, 0x878760A7, 0x15151B1C, 0xF9F93AEF, 0x6363BFD1, 0x3434A953, 0x9A9A853E, + 0xB1B1428F, 0x7C7CD133, 0x88889B26, 0x3D3DA65F, 0xA1A1D7EC, 0xE4E4DF76, 0x8181942A, 0x91910149, + 0x0F0FFB81, 0xEEEEAA88, 0x161661EE, 0xD7D77321, 0x9797F5C4, 0xA5A5A81A, 0xFEFE3FEB, 0x6D6DB5D9, + 0x7878AEC5, 0xC5C56D39, 0x1D1DE599, 0x7676A4CD, 0x3E3EDCAD, 0xCBCB6731, 0xB6B6478B, 0xEFEF5B01, + 0x12121E18, 0x6060C523, 0x6A6AB0DD, 0x4D4DF61F, 0xCECEE94E, 0xDEDE7C2D, 0x55559DF9, 0x7E7E5A48, + 0x2121B24F, 0x03037AF2, 0xA0A02665, 0x5E5E198E, 0x5A5A6678, 0x65654B5C, 0x62624E58, 0xFDFD4519, + 0x0606F48D, 0x404086E5, 0xF2F2BE98, 0x3333AC57, 0x17179067, 0x05058E7F, 0xE8E85E05, 0x4F4F7D64, + 0x89896AAF, 0x10109563, 0x74742FB6, 0x0A0A75FE, 0x5C5C92F5, 0x9B9B74B7, 0x2D2D333C, 0x3030D6A5, + 0x2E2E49CE, 0x494989E9, 0x46467268, 0x77775544, 0xA8A8D8E0, 0x9696044D, 0x2828BD43, 0xA9A92969, + 0xD9D97929, 0x8686912E, 0xD1D187AC, 0xF4F44A15, 0x8D8D1559, 0xD6D682A8, 0xB9B9BC0A, 0x42420D9E, + 0xF6F6C16E, 0x2F2FB847, 0xDDDD06DF, 0x23233934, 0xCCCC6235, 0xF1F1C46A, 0xC1C112CF, 0x8585EBDC, + 0x8F8F9E22, 0x7171A1C9, 0x9090F0C0, 0xAAAA539B, 0x0101F189, 0x8B8BE1D4, 0x4E4E8CED, 0x8E8E6FAB, + 0xABABA212, 0x6F6F3EA2, 0xE6E6540D, 0xDBDBF252, 0x92927BBB, 0xB7B7B602, 0x6969CA2F, 0x3939D9A9, + 0xD3D30CD7, 0xA7A72361, 0xA2A2AD1E, 0xC3C399B4, 0x6C6C4450, 0x07070504, 0x04047FF6, 0x272746C2, + 0xACACA716, 0xD0D07625, 0x50501386, 0xDCDCF756, 0x84841A55, 0xE1E15109, 0x7A7A25BE, 0x1313EF91 + ); + + /** + * M-Table + * + * @var array + * @access private + */ + var $m1 = array( + 0xA9D93939, 0x67901717, 0xB3719C9C, 0xE8D2A6A6, 0x04050707, 0xFD985252, 0xA3658080, 0x76DFE4E4, + 0x9A084545, 0x92024B4B, 0x80A0E0E0, 0x78665A5A, 0xE4DDAFAF, 0xDDB06A6A, 0xD1BF6363, 0x38362A2A, + 0x0D54E6E6, 0xC6432020, 0x3562CCCC, 0x98BEF2F2, 0x181E1212, 0xF724EBEB, 0xECD7A1A1, 0x6C774141, + 0x43BD2828, 0x7532BCBC, 0x37D47B7B, 0x269B8888, 0xFA700D0D, 0x13F94444, 0x94B1FBFB, 0x485A7E7E, + 0xF27A0303, 0xD0E48C8C, 0x8B47B6B6, 0x303C2424, 0x84A5E7E7, 0x54416B6B, 0xDF06DDDD, 0x23C56060, + 0x1945FDFD, 0x5BA33A3A, 0x3D68C2C2, 0x59158D8D, 0xF321ECEC, 0xAE316666, 0xA23E6F6F, 0x82165757, + 0x63951010, 0x015BEFEF, 0x834DB8B8, 0x2E918686, 0xD9B56D6D, 0x511F8383, 0x9B53AAAA, 0x7C635D5D, + 0xA63B6868, 0xEB3FFEFE, 0xA5D63030, 0xBE257A7A, 0x16A7ACAC, 0x0C0F0909, 0xE335F0F0, 0x6123A7A7, + 0xC0F09090, 0x8CAFE9E9, 0x3A809D9D, 0xF5925C5C, 0x73810C0C, 0x2C273131, 0x2576D0D0, 0x0BE75656, + 0xBB7B9292, 0x4EE9CECE, 0x89F10101, 0x6B9F1E1E, 0x53A93434, 0x6AC4F1F1, 0xB499C3C3, 0xF1975B5B, + 0xE1834747, 0xE66B1818, 0xBDC82222, 0x450E9898, 0xE26E1F1F, 0xF4C9B3B3, 0xB62F7474, 0x66CBF8F8, + 0xCCFF9999, 0x95EA1414, 0x03ED5858, 0x56F7DCDC, 0xD4E18B8B, 0x1C1B1515, 0x1EADA2A2, 0xD70CD3D3, + 0xFB2BE2E2, 0xC31DC8C8, 0x8E195E5E, 0xB5C22C2C, 0xE9894949, 0xCF12C1C1, 0xBF7E9595, 0xBA207D7D, + 0xEA641111, 0x77840B0B, 0x396DC5C5, 0xAF6A8989, 0x33D17C7C, 0xC9A17171, 0x62CEFFFF, 0x7137BBBB, + 0x81FB0F0F, 0x793DB5B5, 0x0951E1E1, 0xADDC3E3E, 0x242D3F3F, 0xCDA47676, 0xF99D5555, 0xD8EE8282, + 0xE5864040, 0xC5AE7878, 0xB9CD2525, 0x4D049696, 0x44557777, 0x080A0E0E, 0x86135050, 0xE730F7F7, + 0xA1D33737, 0x1D40FAFA, 0xAA346161, 0xED8C4E4E, 0x06B3B0B0, 0x706C5454, 0xB22A7373, 0xD2523B3B, + 0x410B9F9F, 0x7B8B0202, 0xA088D8D8, 0x114FF3F3, 0x3167CBCB, 0xC2462727, 0x27C06767, 0x90B4FCFC, + 0x20283838, 0xF67F0404, 0x60784848, 0xFF2EE5E5, 0x96074C4C, 0x5C4B6565, 0xB1C72B2B, 0xAB6F8E8E, + 0x9E0D4242, 0x9CBBF5F5, 0x52F2DBDB, 0x1BF34A4A, 0x5FA63D3D, 0x9359A4A4, 0x0ABCB9B9, 0xEF3AF9F9, + 0x91EF1313, 0x85FE0808, 0x49019191, 0xEE611616, 0x2D7CDEDE, 0x4FB22121, 0x8F42B1B1, 0x3BDB7272, + 0x47B82F2F, 0x8748BFBF, 0x6D2CAEAE, 0x46E3C0C0, 0xD6573C3C, 0x3E859A9A, 0x6929A9A9, 0x647D4F4F, + 0x2A948181, 0xCE492E2E, 0xCB17C6C6, 0x2FCA6969, 0xFCC3BDBD, 0x975CA3A3, 0x055EE8E8, 0x7AD0EDED, + 0xAC87D1D1, 0x7F8E0505, 0xD5BA6464, 0x1AA8A5A5, 0x4BB72626, 0x0EB9BEBE, 0xA7608787, 0x5AF8D5D5, + 0x28223636, 0x14111B1B, 0x3FDE7575, 0x2979D9D9, 0x88AAEEEE, 0x3C332D2D, 0x4C5F7979, 0x02B6B7B7, + 0xB896CACA, 0xDA583535, 0xB09CC4C4, 0x17FC4343, 0x551A8484, 0x1FF64D4D, 0x8A1C5959, 0x7D38B2B2, + 0x57AC3333, 0xC718CFCF, 0x8DF40606, 0x74695353, 0xB7749B9B, 0xC4F59797, 0x9F56ADAD, 0x72DAE3E3, + 0x7ED5EAEA, 0x154AF4F4, 0x229E8F8F, 0x12A2ABAB, 0x584E6262, 0x07E85F5F, 0x99E51D1D, 0x34392323, + 0x6EC1F6F6, 0x50446C6C, 0xDE5D3232, 0x68724646, 0x6526A0A0, 0xBC93CDCD, 0xDB03DADA, 0xF8C6BABA, + 0xC8FA9E9E, 0xA882D6D6, 0x2BCF6E6E, 0x40507070, 0xDCEB8585, 0xFE750A0A, 0x328A9393, 0xA48DDFDF, + 0xCA4C2929, 0x10141C1C, 0x2173D7D7, 0xF0CCB4B4, 0xD309D4D4, 0x5D108A8A, 0x0FE25151, 0x00000000, + 0x6F9A1919, 0x9DE01A1A, 0x368F9494, 0x42E6C7C7, 0x4AECC9C9, 0x5EFDD2D2, 0xC1AB7F7F, 0xE0D8A8A8 + ); + + /** + * M-Table + * + * @var array + * @access private + */ + var $m2 = array( + 0xBC75BC32, 0xECF3EC21, 0x20C62043, 0xB3F4B3C9, 0xDADBDA03, 0x027B028B, 0xE2FBE22B, 0x9EC89EFA, + 0xC94AC9EC, 0xD4D3D409, 0x18E6186B, 0x1E6B1E9F, 0x9845980E, 0xB27DB238, 0xA6E8A6D2, 0x264B26B7, + 0x3CD63C57, 0x9332938A, 0x82D882EE, 0x52FD5298, 0x7B377BD4, 0xBB71BB37, 0x5BF15B97, 0x47E14783, + 0x2430243C, 0x510F51E2, 0xBAF8BAC6, 0x4A1B4AF3, 0xBF87BF48, 0x0DFA0D70, 0xB006B0B3, 0x753F75DE, + 0xD25ED2FD, 0x7DBA7D20, 0x66AE6631, 0x3A5B3AA3, 0x598A591C, 0x00000000, 0xCDBCCD93, 0x1A9D1AE0, + 0xAE6DAE2C, 0x7FC17FAB, 0x2BB12BC7, 0xBE0EBEB9, 0xE080E0A0, 0x8A5D8A10, 0x3BD23B52, 0x64D564BA, + 0xD8A0D888, 0xE784E7A5, 0x5F075FE8, 0x1B141B11, 0x2CB52CC2, 0xFC90FCB4, 0x312C3127, 0x80A38065, + 0x73B2732A, 0x0C730C81, 0x794C795F, 0x6B546B41, 0x4B924B02, 0x53745369, 0x9436948F, 0x8351831F, + 0x2A382A36, 0xC4B0C49C, 0x22BD22C8, 0xD55AD5F8, 0xBDFCBDC3, 0x48604878, 0xFF62FFCE, 0x4C964C07, + 0x416C4177, 0xC742C7E6, 0xEBF7EB24, 0x1C101C14, 0x5D7C5D63, 0x36283622, 0x672767C0, 0xE98CE9AF, + 0x441344F9, 0x149514EA, 0xF59CF5BB, 0xCFC7CF18, 0x3F243F2D, 0xC046C0E3, 0x723B72DB, 0x5470546C, + 0x29CA294C, 0xF0E3F035, 0x088508FE, 0xC6CBC617, 0xF311F34F, 0x8CD08CE4, 0xA493A459, 0xCAB8CA96, + 0x68A6683B, 0xB883B84D, 0x38203828, 0xE5FFE52E, 0xAD9FAD56, 0x0B770B84, 0xC8C3C81D, 0x99CC99FF, + 0x580358ED, 0x196F199A, 0x0E080E0A, 0x95BF957E, 0x70407050, 0xF7E7F730, 0x6E2B6ECF, 0x1FE21F6E, + 0xB579B53D, 0x090C090F, 0x61AA6134, 0x57825716, 0x9F419F0B, 0x9D3A9D80, 0x11EA1164, 0x25B925CD, + 0xAFE4AFDD, 0x459A4508, 0xDFA4DF8D, 0xA397A35C, 0xEA7EEAD5, 0x35DA3558, 0xED7AEDD0, 0x431743FC, + 0xF866F8CB, 0xFB94FBB1, 0x37A137D3, 0xFA1DFA40, 0xC23DC268, 0xB4F0B4CC, 0x32DE325D, 0x9CB39C71, + 0x560B56E7, 0xE372E3DA, 0x87A78760, 0x151C151B, 0xF9EFF93A, 0x63D163BF, 0x345334A9, 0x9A3E9A85, + 0xB18FB142, 0x7C337CD1, 0x8826889B, 0x3D5F3DA6, 0xA1ECA1D7, 0xE476E4DF, 0x812A8194, 0x91499101, + 0x0F810FFB, 0xEE88EEAA, 0x16EE1661, 0xD721D773, 0x97C497F5, 0xA51AA5A8, 0xFEEBFE3F, 0x6DD96DB5, + 0x78C578AE, 0xC539C56D, 0x1D991DE5, 0x76CD76A4, 0x3EAD3EDC, 0xCB31CB67, 0xB68BB647, 0xEF01EF5B, + 0x1218121E, 0x602360C5, 0x6ADD6AB0, 0x4D1F4DF6, 0xCE4ECEE9, 0xDE2DDE7C, 0x55F9559D, 0x7E487E5A, + 0x214F21B2, 0x03F2037A, 0xA065A026, 0x5E8E5E19, 0x5A785A66, 0x655C654B, 0x6258624E, 0xFD19FD45, + 0x068D06F4, 0x40E54086, 0xF298F2BE, 0x335733AC, 0x17671790, 0x057F058E, 0xE805E85E, 0x4F644F7D, + 0x89AF896A, 0x10631095, 0x74B6742F, 0x0AFE0A75, 0x5CF55C92, 0x9BB79B74, 0x2D3C2D33, 0x30A530D6, + 0x2ECE2E49, 0x49E94989, 0x46684672, 0x77447755, 0xA8E0A8D8, 0x964D9604, 0x284328BD, 0xA969A929, + 0xD929D979, 0x862E8691, 0xD1ACD187, 0xF415F44A, 0x8D598D15, 0xD6A8D682, 0xB90AB9BC, 0x429E420D, + 0xF66EF6C1, 0x2F472FB8, 0xDDDFDD06, 0x23342339, 0xCC35CC62, 0xF16AF1C4, 0xC1CFC112, 0x85DC85EB, + 0x8F228F9E, 0x71C971A1, 0x90C090F0, 0xAA9BAA53, 0x018901F1, 0x8BD48BE1, 0x4EED4E8C, 0x8EAB8E6F, + 0xAB12ABA2, 0x6FA26F3E, 0xE60DE654, 0xDB52DBF2, 0x92BB927B, 0xB702B7B6, 0x692F69CA, 0x39A939D9, + 0xD3D7D30C, 0xA761A723, 0xA21EA2AD, 0xC3B4C399, 0x6C506C44, 0x07040705, 0x04F6047F, 0x27C22746, + 0xAC16ACA7, 0xD025D076, 0x50865013, 0xDC56DCF7, 0x8455841A, 0xE109E151, 0x7ABE7A25, 0x139113EF + ); + + /** + * M-Table + * + * @var array + * @access private + */ + var $m3 = array( + 0xD939A9D9, 0x90176790, 0x719CB371, 0xD2A6E8D2, 0x05070405, 0x9852FD98, 0x6580A365, 0xDFE476DF, + 0x08459A08, 0x024B9202, 0xA0E080A0, 0x665A7866, 0xDDAFE4DD, 0xB06ADDB0, 0xBF63D1BF, 0x362A3836, + 0x54E60D54, 0x4320C643, 0x62CC3562, 0xBEF298BE, 0x1E12181E, 0x24EBF724, 0xD7A1ECD7, 0x77416C77, + 0xBD2843BD, 0x32BC7532, 0xD47B37D4, 0x9B88269B, 0x700DFA70, 0xF94413F9, 0xB1FB94B1, 0x5A7E485A, + 0x7A03F27A, 0xE48CD0E4, 0x47B68B47, 0x3C24303C, 0xA5E784A5, 0x416B5441, 0x06DDDF06, 0xC56023C5, + 0x45FD1945, 0xA33A5BA3, 0x68C23D68, 0x158D5915, 0x21ECF321, 0x3166AE31, 0x3E6FA23E, 0x16578216, + 0x95106395, 0x5BEF015B, 0x4DB8834D, 0x91862E91, 0xB56DD9B5, 0x1F83511F, 0x53AA9B53, 0x635D7C63, + 0x3B68A63B, 0x3FFEEB3F, 0xD630A5D6, 0x257ABE25, 0xA7AC16A7, 0x0F090C0F, 0x35F0E335, 0x23A76123, + 0xF090C0F0, 0xAFE98CAF, 0x809D3A80, 0x925CF592, 0x810C7381, 0x27312C27, 0x76D02576, 0xE7560BE7, + 0x7B92BB7B, 0xE9CE4EE9, 0xF10189F1, 0x9F1E6B9F, 0xA93453A9, 0xC4F16AC4, 0x99C3B499, 0x975BF197, + 0x8347E183, 0x6B18E66B, 0xC822BDC8, 0x0E98450E, 0x6E1FE26E, 0xC9B3F4C9, 0x2F74B62F, 0xCBF866CB, + 0xFF99CCFF, 0xEA1495EA, 0xED5803ED, 0xF7DC56F7, 0xE18BD4E1, 0x1B151C1B, 0xADA21EAD, 0x0CD3D70C, + 0x2BE2FB2B, 0x1DC8C31D, 0x195E8E19, 0xC22CB5C2, 0x8949E989, 0x12C1CF12, 0x7E95BF7E, 0x207DBA20, + 0x6411EA64, 0x840B7784, 0x6DC5396D, 0x6A89AF6A, 0xD17C33D1, 0xA171C9A1, 0xCEFF62CE, 0x37BB7137, + 0xFB0F81FB, 0x3DB5793D, 0x51E10951, 0xDC3EADDC, 0x2D3F242D, 0xA476CDA4, 0x9D55F99D, 0xEE82D8EE, + 0x8640E586, 0xAE78C5AE, 0xCD25B9CD, 0x04964D04, 0x55774455, 0x0A0E080A, 0x13508613, 0x30F7E730, + 0xD337A1D3, 0x40FA1D40, 0x3461AA34, 0x8C4EED8C, 0xB3B006B3, 0x6C54706C, 0x2A73B22A, 0x523BD252, + 0x0B9F410B, 0x8B027B8B, 0x88D8A088, 0x4FF3114F, 0x67CB3167, 0x4627C246, 0xC06727C0, 0xB4FC90B4, + 0x28382028, 0x7F04F67F, 0x78486078, 0x2EE5FF2E, 0x074C9607, 0x4B655C4B, 0xC72BB1C7, 0x6F8EAB6F, + 0x0D429E0D, 0xBBF59CBB, 0xF2DB52F2, 0xF34A1BF3, 0xA63D5FA6, 0x59A49359, 0xBCB90ABC, 0x3AF9EF3A, + 0xEF1391EF, 0xFE0885FE, 0x01914901, 0x6116EE61, 0x7CDE2D7C, 0xB2214FB2, 0x42B18F42, 0xDB723BDB, + 0xB82F47B8, 0x48BF8748, 0x2CAE6D2C, 0xE3C046E3, 0x573CD657, 0x859A3E85, 0x29A96929, 0x7D4F647D, + 0x94812A94, 0x492ECE49, 0x17C6CB17, 0xCA692FCA, 0xC3BDFCC3, 0x5CA3975C, 0x5EE8055E, 0xD0ED7AD0, + 0x87D1AC87, 0x8E057F8E, 0xBA64D5BA, 0xA8A51AA8, 0xB7264BB7, 0xB9BE0EB9, 0x6087A760, 0xF8D55AF8, + 0x22362822, 0x111B1411, 0xDE753FDE, 0x79D92979, 0xAAEE88AA, 0x332D3C33, 0x5F794C5F, 0xB6B702B6, + 0x96CAB896, 0x5835DA58, 0x9CC4B09C, 0xFC4317FC, 0x1A84551A, 0xF64D1FF6, 0x1C598A1C, 0x38B27D38, + 0xAC3357AC, 0x18CFC718, 0xF4068DF4, 0x69537469, 0x749BB774, 0xF597C4F5, 0x56AD9F56, 0xDAE372DA, + 0xD5EA7ED5, 0x4AF4154A, 0x9E8F229E, 0xA2AB12A2, 0x4E62584E, 0xE85F07E8, 0xE51D99E5, 0x39233439, + 0xC1F66EC1, 0x446C5044, 0x5D32DE5D, 0x72466872, 0x26A06526, 0x93CDBC93, 0x03DADB03, 0xC6BAF8C6, + 0xFA9EC8FA, 0x82D6A882, 0xCF6E2BCF, 0x50704050, 0xEB85DCEB, 0x750AFE75, 0x8A93328A, 0x8DDFA48D, + 0x4C29CA4C, 0x141C1014, 0x73D72173, 0xCCB4F0CC, 0x09D4D309, 0x108A5D10, 0xE2510FE2, 0x00000000, + 0x9A196F9A, 0xE01A9DE0, 0x8F94368F, 0xE6C742E6, 0xECC94AEC, 0xFDD25EFD, 0xAB7FC1AB, 0xD8A8E0D8 + ); + + /** + * The Key Schedule Array + * + * @var array + * @access private + */ + var $K = array(); + + /** + * The Key depended S-Table 0 + * + * @var array + * @access private + */ + var $S0 = array(); + + /** + * The Key depended S-Table 1 + * + * @var array + * @access private + */ + var $S1 = array(); + + /** + * The Key depended S-Table 2 + * + * @var array + * @access private + */ + var $S2 = array(); + + /** + * The Key depended S-Table 3 + * + * @var array + * @access private + */ + var $S3 = array(); + + /** + * Holds the last used key + * + * @var array + * @access private + */ + var $kl; + + /** + * The Key Length (in bytes) + * + * @see Crypt_Twofish::setKeyLength() + * @var int + * @access private + */ + var $key_length = 16; + + /** + * Sets the key length. + * + * Valid key lengths are 128, 192 or 256 bits + * + * @access public + * @param int $length + */ + function setKeyLength($length) + { + switch (true) { + case $length <= 128: + $this->key_length = 16; + break; + case $length <= 192: + $this->key_length = 24; + break; + default: + $this->key_length = 32; + } + + parent::setKeyLength($length); + } + + /** + * Setup the key (expansion) + * + * @see Crypt_Base::_setupKey() + * @access private + */ + function _setupKey() + { + if (isset($this->kl['key']) && $this->key === $this->kl['key']) { + // already expanded + return; + } + $this->kl = array('key' => $this->key); + + /* Key expanding and generating the key-depended s-boxes */ + $le_longs = unpack('V*', $this->key); + $key = unpack('C*', $this->key); + $m0 = $this->m0; + $m1 = $this->m1; + $m2 = $this->m2; + $m3 = $this->m3; + $q0 = $this->q0; + $q1 = $this->q1; + + $K = $S0 = $S1 = $S2 = $S3 = array(); + + switch (strlen($this->key)) { + case 16: + list($s7, $s6, $s5, $s4) = $this->_mdsrem($le_longs[1], $le_longs[2]); + list($s3, $s2, $s1, $s0) = $this->_mdsrem($le_longs[3], $le_longs[4]); + for ($i = 0, $j = 1; $i < 40; $i+= 2, $j+= 2) { + $A = $m0[$q0[$q0[$i] ^ $key[ 9]] ^ $key[1]] ^ + $m1[$q0[$q1[$i] ^ $key[10]] ^ $key[2]] ^ + $m2[$q1[$q0[$i] ^ $key[11]] ^ $key[3]] ^ + $m3[$q1[$q1[$i] ^ $key[12]] ^ $key[4]]; + $B = $m0[$q0[$q0[$j] ^ $key[13]] ^ $key[5]] ^ + $m1[$q0[$q1[$j] ^ $key[14]] ^ $key[6]] ^ + $m2[$q1[$q0[$j] ^ $key[15]] ^ $key[7]] ^ + $m3[$q1[$q1[$j] ^ $key[16]] ^ $key[8]]; + $B = ($B << 8) | ($B >> 24 & 0xff); + $K[] = $A+= $B; + $K[] = (($A+= $B) << 9 | $A >> 23 & 0x1ff); + } + for ($i = 0; $i < 256; ++$i) { + $S0[$i] = $m0[$q0[$q0[$i] ^ $s4] ^ $s0]; + $S1[$i] = $m1[$q0[$q1[$i] ^ $s5] ^ $s1]; + $S2[$i] = $m2[$q1[$q0[$i] ^ $s6] ^ $s2]; + $S3[$i] = $m3[$q1[$q1[$i] ^ $s7] ^ $s3]; + } + break; + case 24: + list($sb, $sa, $s9, $s8) = $this->_mdsrem($le_longs[1], $le_longs[2]); + list($s7, $s6, $s5, $s4) = $this->_mdsrem($le_longs[3], $le_longs[4]); + list($s3, $s2, $s1, $s0) = $this->_mdsrem($le_longs[5], $le_longs[6]); + for ($i = 0, $j = 1; $i < 40; $i+= 2, $j+= 2) { + $A = $m0[$q0[$q0[$q1[$i] ^ $key[17]] ^ $key[ 9]] ^ $key[1]] ^ + $m1[$q0[$q1[$q1[$i] ^ $key[18]] ^ $key[10]] ^ $key[2]] ^ + $m2[$q1[$q0[$q0[$i] ^ $key[19]] ^ $key[11]] ^ $key[3]] ^ + $m3[$q1[$q1[$q0[$i] ^ $key[20]] ^ $key[12]] ^ $key[4]]; + $B = $m0[$q0[$q0[$q1[$j] ^ $key[21]] ^ $key[13]] ^ $key[5]] ^ + $m1[$q0[$q1[$q1[$j] ^ $key[22]] ^ $key[14]] ^ $key[6]] ^ + $m2[$q1[$q0[$q0[$j] ^ $key[23]] ^ $key[15]] ^ $key[7]] ^ + $m3[$q1[$q1[$q0[$j] ^ $key[24]] ^ $key[16]] ^ $key[8]]; + $B = ($B << 8) | ($B >> 24 & 0xff); + $K[] = $A+= $B; + $K[] = (($A+= $B) << 9 | $A >> 23 & 0x1ff); + } + for ($i = 0; $i < 256; ++$i) { + $S0[$i] = $m0[$q0[$q0[$q1[$i] ^ $s8] ^ $s4] ^ $s0]; + $S1[$i] = $m1[$q0[$q1[$q1[$i] ^ $s9] ^ $s5] ^ $s1]; + $S2[$i] = $m2[$q1[$q0[$q0[$i] ^ $sa] ^ $s6] ^ $s2]; + $S3[$i] = $m3[$q1[$q1[$q0[$i] ^ $sb] ^ $s7] ^ $s3]; + } + break; + default: // 32 + list($sf, $se, $sd, $sc) = $this->_mdsrem($le_longs[1], $le_longs[2]); + list($sb, $sa, $s9, $s8) = $this->_mdsrem($le_longs[3], $le_longs[4]); + list($s7, $s6, $s5, $s4) = $this->_mdsrem($le_longs[5], $le_longs[6]); + list($s3, $s2, $s1, $s0) = $this->_mdsrem($le_longs[7], $le_longs[8]); + for ($i = 0, $j = 1; $i < 40; $i+= 2, $j+= 2) { + $A = $m0[$q0[$q0[$q1[$q1[$i] ^ $key[25]] ^ $key[17]] ^ $key[ 9]] ^ $key[1]] ^ + $m1[$q0[$q1[$q1[$q0[$i] ^ $key[26]] ^ $key[18]] ^ $key[10]] ^ $key[2]] ^ + $m2[$q1[$q0[$q0[$q0[$i] ^ $key[27]] ^ $key[19]] ^ $key[11]] ^ $key[3]] ^ + $m3[$q1[$q1[$q0[$q1[$i] ^ $key[28]] ^ $key[20]] ^ $key[12]] ^ $key[4]]; + $B = $m0[$q0[$q0[$q1[$q1[$j] ^ $key[29]] ^ $key[21]] ^ $key[13]] ^ $key[5]] ^ + $m1[$q0[$q1[$q1[$q0[$j] ^ $key[30]] ^ $key[22]] ^ $key[14]] ^ $key[6]] ^ + $m2[$q1[$q0[$q0[$q0[$j] ^ $key[31]] ^ $key[23]] ^ $key[15]] ^ $key[7]] ^ + $m3[$q1[$q1[$q0[$q1[$j] ^ $key[32]] ^ $key[24]] ^ $key[16]] ^ $key[8]]; + $B = ($B << 8) | ($B >> 24 & 0xff); + $K[] = $A+= $B; + $K[] = (($A+= $B) << 9 | $A >> 23 & 0x1ff); + } + for ($i = 0; $i < 256; ++$i) { + $S0[$i] = $m0[$q0[$q0[$q1[$q1[$i] ^ $sc] ^ $s8] ^ $s4] ^ $s0]; + $S1[$i] = $m1[$q0[$q1[$q1[$q0[$i] ^ $sd] ^ $s9] ^ $s5] ^ $s1]; + $S2[$i] = $m2[$q1[$q0[$q0[$q0[$i] ^ $se] ^ $sa] ^ $s6] ^ $s2]; + $S3[$i] = $m3[$q1[$q1[$q0[$q1[$i] ^ $sf] ^ $sb] ^ $s7] ^ $s3]; + } + } + + $this->K = $K; + $this->S0 = $S0; + $this->S1 = $S1; + $this->S2 = $S2; + $this->S3 = $S3; + } + + /** + * _mdsrem function using by the twofish cipher algorithm + * + * @access private + * @param string $A + * @param string $B + * @return array + */ + function _mdsrem($A, $B) + { + // No gain by unrolling this loop. + for ($i = 0; $i < 8; ++$i) { + // Get most significant coefficient. + $t = 0xff & ($B >> 24); + + // Shift the others up. + $B = ($B << 8) | (0xff & ($A >> 24)); + $A<<= 8; + + $u = $t << 1; + + // Subtract the modular polynomial on overflow. + if ($t & 0x80) { + $u^= 0x14d; + } + + // Remove t * (a * x^2 + 1). + $B ^= $t ^ ($u << 16); + + // Form u = a*t + t/a = t*(a + 1/a). + $u^= 0x7fffffff & ($t >> 1); + + // Add the modular polynomial on underflow. + if ($t & 0x01) { + $u^= 0xa6 ; + } + + // Remove t * (a + 1/a) * (x^3 + x). + $B^= ($u << 24) | ($u << 8); + } + + return array( + 0xff & $B >> 24, + 0xff & $B >> 16, + 0xff & $B >> 8, + 0xff & $B); + } + + /** + * Encrypts a block + * + * @access private + * @param string $in + * @return string + */ + function _encryptBlock($in) + { + $S0 = $this->S0; + $S1 = $this->S1; + $S2 = $this->S2; + $S3 = $this->S3; + $K = $this->K; + + $in = unpack("V4", $in); + $R0 = $K[0] ^ $in[1]; + $R1 = $K[1] ^ $in[2]; + $R2 = $K[2] ^ $in[3]; + $R3 = $K[3] ^ $in[4]; + + $ki = 7; + while ($ki < 39) { + $t0 = $S0[ $R0 & 0xff] ^ + $S1[($R0 >> 8) & 0xff] ^ + $S2[($R0 >> 16) & 0xff] ^ + $S3[($R0 >> 24) & 0xff]; + $t1 = $S0[($R1 >> 24) & 0xff] ^ + $S1[ $R1 & 0xff] ^ + $S2[($R1 >> 8) & 0xff] ^ + $S3[($R1 >> 16) & 0xff]; + $R2^= $t0 + $t1 + $K[++$ki]; + $R2 = ($R2 >> 1 & 0x7fffffff) | ($R2 << 31); + $R3 = ((($R3 >> 31) & 1) | ($R3 << 1)) ^ ($t0 + ($t1 << 1) + $K[++$ki]); + + $t0 = $S0[ $R2 & 0xff] ^ + $S1[($R2 >> 8) & 0xff] ^ + $S2[($R2 >> 16) & 0xff] ^ + $S3[($R2 >> 24) & 0xff]; + $t1 = $S0[($R3 >> 24) & 0xff] ^ + $S1[ $R3 & 0xff] ^ + $S2[($R3 >> 8) & 0xff] ^ + $S3[($R3 >> 16) & 0xff]; + $R0^= ($t0 + $t1 + $K[++$ki]); + $R0 = ($R0 >> 1 & 0x7fffffff) | ($R0 << 31); + $R1 = ((($R1 >> 31) & 1) | ($R1 << 1)) ^ ($t0 + ($t1 << 1) + $K[++$ki]); + } + + // @codingStandardsIgnoreStart + return pack("V4", $K[4] ^ $R2, + $K[5] ^ $R3, + $K[6] ^ $R0, + $K[7] ^ $R1); + // @codingStandardsIgnoreEnd + } + + /** + * Decrypts a block + * + * @access private + * @param string $in + * @return string + */ + function _decryptBlock($in) + { + $S0 = $this->S0; + $S1 = $this->S1; + $S2 = $this->S2; + $S3 = $this->S3; + $K = $this->K; + + $in = unpack("V4", $in); + $R0 = $K[4] ^ $in[1]; + $R1 = $K[5] ^ $in[2]; + $R2 = $K[6] ^ $in[3]; + $R3 = $K[7] ^ $in[4]; + + $ki = 40; + while ($ki > 8) { + $t0 = $S0[$R0 & 0xff] ^ + $S1[$R0 >> 8 & 0xff] ^ + $S2[$R0 >> 16 & 0xff] ^ + $S3[$R0 >> 24 & 0xff]; + $t1 = $S0[$R1 >> 24 & 0xff] ^ + $S1[$R1 & 0xff] ^ + $S2[$R1 >> 8 & 0xff] ^ + $S3[$R1 >> 16 & 0xff]; + $R3^= $t0 + ($t1 << 1) + $K[--$ki]; + $R3 = $R3 >> 1 & 0x7fffffff | $R3 << 31; + $R2 = ($R2 >> 31 & 0x1 | $R2 << 1) ^ ($t0 + $t1 + $K[--$ki]); + + $t0 = $S0[$R2 & 0xff] ^ + $S1[$R2 >> 8 & 0xff] ^ + $S2[$R2 >> 16 & 0xff] ^ + $S3[$R2 >> 24 & 0xff]; + $t1 = $S0[$R3 >> 24 & 0xff] ^ + $S1[$R3 & 0xff] ^ + $S2[$R3 >> 8 & 0xff] ^ + $S3[$R3 >> 16 & 0xff]; + $R1^= $t0 + ($t1 << 1) + $K[--$ki]; + $R1 = $R1 >> 1 & 0x7fffffff | $R1 << 31; + $R0 = ($R0 >> 31 & 0x1 | $R0 << 1) ^ ($t0 + $t1 + $K[--$ki]); + } + + // @codingStandardsIgnoreStart + return pack("V4", $K[0] ^ $R2, + $K[1] ^ $R3, + $K[2] ^ $R0, + $K[3] ^ $R1); + // @codingStandardsIgnoreEnd + } + + /** + * Setup the performance-optimized function for de/encrypt() + * + * @see Crypt_Base::_setupInlineCrypt() + * @access private + */ + function _setupInlineCrypt() + { + $lambda_functions =& Crypt_Twofish::_getLambdaFunctions(); + + // Max. 10 Ultra-Hi-optimized inline-crypt functions. After that, we'll (still) create very fast code, but not the ultimate fast one. + // (Currently, for Crypt_Twofish, one generated $lambda_function cost on php5.5@32bit ~140kb unfreeable mem and ~240kb on php5.5@64bit) + $gen_hi_opt_code = (bool)(count($lambda_functions) < 10); + + // Generation of a unique hash for our generated code + $code_hash = "Crypt_Twofish, {$this->mode}"; + if ($gen_hi_opt_code) { + $code_hash = str_pad($code_hash, 32) . $this->_hashInlineCryptFunction($this->key); + } + + if (!isset($lambda_functions[$code_hash])) { + switch (true) { + case $gen_hi_opt_code: + $K = $this->K; + $init_crypt = ' + static $S0, $S1, $S2, $S3; + if (!$S0) { + for ($i = 0; $i < 256; ++$i) { + $S0[] = (int)$self->S0[$i]; + $S1[] = (int)$self->S1[$i]; + $S2[] = (int)$self->S2[$i]; + $S3[] = (int)$self->S3[$i]; + } + } + '; + break; + default: + $K = array(); + for ($i = 0; $i < 40; ++$i) { + $K[] = '$K_' . $i; + } + $init_crypt = ' + $S0 = $self->S0; + $S1 = $self->S1; + $S2 = $self->S2; + $S3 = $self->S3; + list(' . implode(',', $K) . ') = $self->K; + '; + } + + // Generating encrypt code: + $encrypt_block = ' + $in = unpack("V4", $in); + $R0 = '.$K[0].' ^ $in[1]; + $R1 = '.$K[1].' ^ $in[2]; + $R2 = '.$K[2].' ^ $in[3]; + $R3 = '.$K[3].' ^ $in[4]; + '; + for ($ki = 7, $i = 0; $i < 8; ++$i) { + $encrypt_block.= ' + $t0 = $S0[ $R0 & 0xff] ^ + $S1[($R0 >> 8) & 0xff] ^ + $S2[($R0 >> 16) & 0xff] ^ + $S3[($R0 >> 24) & 0xff]; + $t1 = $S0[($R1 >> 24) & 0xff] ^ + $S1[ $R1 & 0xff] ^ + $S2[($R1 >> 8) & 0xff] ^ + $S3[($R1 >> 16) & 0xff]; + $R2^= ($t0 + $t1 + '.$K[++$ki].'); + $R2 = ($R2 >> 1 & 0x7fffffff) | ($R2 << 31); + $R3 = ((($R3 >> 31) & 1) | ($R3 << 1)) ^ ($t0 + ($t1 << 1) + '.$K[++$ki].'); + + $t0 = $S0[ $R2 & 0xff] ^ + $S1[($R2 >> 8) & 0xff] ^ + $S2[($R2 >> 16) & 0xff] ^ + $S3[($R2 >> 24) & 0xff]; + $t1 = $S0[($R3 >> 24) & 0xff] ^ + $S1[ $R3 & 0xff] ^ + $S2[($R3 >> 8) & 0xff] ^ + $S3[($R3 >> 16) & 0xff]; + $R0^= ($t0 + $t1 + '.$K[++$ki].'); + $R0 = ($R0 >> 1 & 0x7fffffff) | ($R0 << 31); + $R1 = ((($R1 >> 31) & 1) | ($R1 << 1)) ^ ($t0 + ($t1 << 1) + '.$K[++$ki].'); + '; + } + $encrypt_block.= ' + $in = pack("V4", '.$K[4].' ^ $R2, + '.$K[5].' ^ $R3, + '.$K[6].' ^ $R0, + '.$K[7].' ^ $R1); + '; + + // Generating decrypt code: + $decrypt_block = ' + $in = unpack("V4", $in); + $R0 = '.$K[4].' ^ $in[1]; + $R1 = '.$K[5].' ^ $in[2]; + $R2 = '.$K[6].' ^ $in[3]; + $R3 = '.$K[7].' ^ $in[4]; + '; + for ($ki = 40, $i = 0; $i < 8; ++$i) { + $decrypt_block.= ' + $t0 = $S0[$R0 & 0xff] ^ + $S1[$R0 >> 8 & 0xff] ^ + $S2[$R0 >> 16 & 0xff] ^ + $S3[$R0 >> 24 & 0xff]; + $t1 = $S0[$R1 >> 24 & 0xff] ^ + $S1[$R1 & 0xff] ^ + $S2[$R1 >> 8 & 0xff] ^ + $S3[$R1 >> 16 & 0xff]; + $R3^= $t0 + ($t1 << 1) + '.$K[--$ki].'; + $R3 = $R3 >> 1 & 0x7fffffff | $R3 << 31; + $R2 = ($R2 >> 31 & 0x1 | $R2 << 1) ^ ($t0 + $t1 + '.$K[--$ki].'); + + $t0 = $S0[$R2 & 0xff] ^ + $S1[$R2 >> 8 & 0xff] ^ + $S2[$R2 >> 16 & 0xff] ^ + $S3[$R2 >> 24 & 0xff]; + $t1 = $S0[$R3 >> 24 & 0xff] ^ + $S1[$R3 & 0xff] ^ + $S2[$R3 >> 8 & 0xff] ^ + $S3[$R3 >> 16 & 0xff]; + $R1^= $t0 + ($t1 << 1) + '.$K[--$ki].'; + $R1 = $R1 >> 1 & 0x7fffffff | $R1 << 31; + $R0 = ($R0 >> 31 & 0x1 | $R0 << 1) ^ ($t0 + $t1 + '.$K[--$ki].'); + '; + } + $decrypt_block.= ' + $in = pack("V4", '.$K[0].' ^ $R2, + '.$K[1].' ^ $R3, + '.$K[2].' ^ $R0, + '.$K[3].' ^ $R1); + '; + + $lambda_functions[$code_hash] = $this->_createInlineCryptFunction( + array( + 'init_crypt' => $init_crypt, + 'init_encrypt' => '', + 'init_decrypt' => '', + 'encrypt_block' => $encrypt_block, + 'decrypt_block' => $decrypt_block + ) + ); + } + $this->inline_crypt = $lambda_functions[$code_hash]; + } +} diff --git a/plugins/updraftplus/includes/phpseclib/File/ANSI.php b/plugins/updraftplus/includes/phpseclib/File/ANSI.php new file mode 100644 index 0000000..989537b --- /dev/null +++ b/plugins/updraftplus/includes/phpseclib/File/ANSI.php @@ -0,0 +1,601 @@ + + * @copyright 2012 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/** + * Pure-PHP ANSI Decoder + * + * @package File_ANSI + * @author Jim Wigginton + * @access public + */ +class File_ANSI +{ + /** + * Max Width + * + * @var int + * @access private + */ + var $max_x; + + /** + * Max Height + * + * @var int + * @access private + */ + var $max_y; + + /** + * Max History + * + * @var int + * @access private + */ + var $max_history; + + /** + * History + * + * @var array + * @access private + */ + var $history; + + /** + * History Attributes + * + * @var array + * @access private + */ + var $history_attrs; + + /** + * Current Column + * + * @var int + * @access private + */ + var $x; + + /** + * Current Row + * + * @var int + * @access private + */ + var $y; + + /** + * Old Column + * + * @var int + * @access private + */ + var $old_x; + + /** + * Old Row + * + * @var int + * @access private + */ + var $old_y; + + /** + * An empty attribute cell + * + * @var object + * @access private + */ + var $base_attr_cell; + + /** + * The current attribute cell + * + * @var object + * @access private + */ + var $attr_cell; + + /** + * An empty attribute row + * + * @var array + * @access private + */ + var $attr_row; + + /** + * The current screen text + * + * @var array + * @access private + */ + var $screen; + + /** + * The current screen attributes + * + * @var array + * @access private + */ + var $attrs; + + /** + * Current ANSI code + * + * @var string + * @access private + */ + var $ansi; + + /** + * Tokenization + * + * @var array + * @access private + */ + var $tokenization; + + /** + * Default Constructor. + * + * @return File_ANSI + * @access public + */ + function __construct() + { + $attr_cell = new stdClass(); + $attr_cell->bold = false; + $attr_cell->underline = false; + $attr_cell->blink = false; + $attr_cell->background = 'black'; + $attr_cell->foreground = 'white'; + $attr_cell->reverse = false; + $this->base_attr_cell = clone($attr_cell); + $this->attr_cell = clone($attr_cell); + + $this->setHistory(200); + $this->setDimensions(80, 24); + } + + /** + * PHP4 compatible Default Constructor. + * + * @see self::__construct() + * @access public + */ + function File_ANSI() + { + $this->__construct($mode); + } + + /** + * Set terminal width and height + * + * Resets the screen as well + * + * @param int $x + * @param int $y + * @access public + */ + function setDimensions($x, $y) + { + $this->max_x = $x - 1; + $this->max_y = $y - 1; + $this->x = $this->y = 0; + $this->history = $this->history_attrs = array(); + $this->attr_row = array_fill(0, $this->max_x + 2, $this->base_attr_cell); + $this->screen = array_fill(0, $this->max_y + 1, ''); + $this->attrs = array_fill(0, $this->max_y + 1, $this->attr_row); + $this->ansi = ''; + } + + /** + * Set the number of lines that should be logged past the terminal height + * + * @param int $x + * @param int $y + * @access public + */ + function setHistory($history) + { + $this->max_history = $history; + } + + /** + * Load a string + * + * @param string $source + * @access public + */ + function loadString($source) + { + $this->setDimensions($this->max_x + 1, $this->max_y + 1); + $this->appendString($source); + } + + /** + * Appdend a string + * + * @param string $source + * @access public + */ + function appendString($source) + { + $this->tokenization = array(''); + for ($i = 0; $i < strlen($source); $i++) { + if (strlen($this->ansi)) { + $this->ansi.= $source[$i]; + $chr = ord($source[$i]); + // http://en.wikipedia.org/wiki/ANSI_escape_code#Sequence_elements + // single character CSI's not currently supported + switch (true) { + case $this->ansi == "\x1B=": + $this->ansi = ''; + continue 2; + case strlen($this->ansi) == 2 && $chr >= 64 && $chr <= 95 && $chr != ord('['): + case strlen($this->ansi) > 2 && $chr >= 64 && $chr <= 126: + break; + default: + continue 2; + } + $this->tokenization[] = $this->ansi; + $this->tokenization[] = ''; + // http://ascii-table.com/ansi-escape-sequences-vt-100.php + switch ($this->ansi) { + case "\x1B[H": // Move cursor to upper left corner + $this->old_x = $this->x; + $this->old_y = $this->y; + $this->x = $this->y = 0; + break; + case "\x1B[J": // Clear screen from cursor down + $this->history = array_merge($this->history, array_slice(array_splice($this->screen, $this->y + 1), 0, $this->old_y)); + $this->screen = array_merge($this->screen, array_fill($this->y, $this->max_y, '')); + + $this->history_attrs = array_merge($this->history_attrs, array_slice(array_splice($this->attrs, $this->y + 1), 0, $this->old_y)); + $this->attrs = array_merge($this->attrs, array_fill($this->y, $this->max_y, $this->attr_row)); + + if (count($this->history) == $this->max_history) { + array_shift($this->history); + array_shift($this->history_attrs); + } + case "\x1B[K": // Clear screen from cursor right + $this->screen[$this->y] = substr($this->screen[$this->y], 0, $this->x); + + array_splice($this->attrs[$this->y], $this->x + 1, $this->max_x - $this->x, array_fill($this->x, $this->max_x - $this->x - 1, $this->base_attr_cell)); + break; + case "\x1B[2K": // Clear entire line + $this->screen[$this->y] = str_repeat(' ', $this->x); + $this->attrs[$this->y] = $this->attr_row; + break; + case "\x1B[?1h": // set cursor key to application + case "\x1B[?25h": // show the cursor + case "\x1B(B": // set united states g0 character set + break; + case "\x1BE": // Move to next line + $this->_newLine(); + $this->x = 0; + break; + default: + switch (true) { + case preg_match('#\x1B\[(\d+)B#', $this->ansi, $match): // Move cursor down n lines + $this->old_y = $this->y; + $this->y+= $match[1]; + break; + case preg_match('#\x1B\[(\d+);(\d+)H#', $this->ansi, $match): // Move cursor to screen location v,h + $this->old_x = $this->x; + $this->old_y = $this->y; + $this->x = $match[2] - 1; + $this->y = $match[1] - 1; + break; + case preg_match('#\x1B\[(\d+)C#', $this->ansi, $match): // Move cursor right n lines + $this->old_x = $this->x; + $this->x+= $match[1]; + break; + case preg_match('#\x1B\[(\d+)D#', $this->ansi, $match): // Move cursor left n lines + $this->old_x = $this->x; + $this->x-= $match[1]; + break; + case preg_match('#\x1B\[(\d+);(\d+)r#', $this->ansi, $match): // Set top and bottom lines of a window + break; + case preg_match('#\x1B\[(\d*(?:;\d*)*)m#', $this->ansi, $match): // character attributes + $attr_cell = &$this->attr_cell; + $mods = explode(';', $match[1]); + foreach ($mods as $mod) { + switch ($mod) { + case 0: // Turn off character attributes + $attr_cell = clone($this->base_attr_cell); + break; + case 1: // Turn bold mode on + $attr_cell->bold = true; + break; + case 4: // Turn underline mode on + $attr_cell->underline = true; + break; + case 5: // Turn blinking mode on + $attr_cell->blink = true; + break; + case 7: // Turn reverse video on + $attr_cell->reverse = !$attr_cell->reverse; + $temp = $attr_cell->background; + $attr_cell->background = $attr_cell->foreground; + $attr_cell->foreground = $temp; + break; + default: // set colors + //$front = $attr_cell->reverse ? &$attr_cell->background : &$attr_cell->foreground; + $front = &$attr_cell->{ $attr_cell->reverse ? 'background' : 'foreground' }; + //$back = $attr_cell->reverse ? &$attr_cell->foreground : &$attr_cell->background; + $back = &$attr_cell->{ $attr_cell->reverse ? 'foreground' : 'background' }; + switch ($mod) { + // @codingStandardsIgnoreStart + case 30: $front = 'black'; break; + case 31: $front = 'red'; break; + case 32: $front = 'green'; break; + case 33: $front = 'yellow'; break; + case 34: $front = 'blue'; break; + case 35: $front = 'magenta'; break; + case 36: $front = 'cyan'; break; + case 37: $front = 'white'; break; + + case 40: $back = 'black'; break; + case 41: $back = 'red'; break; + case 42: $back = 'green'; break; + case 43: $back = 'yellow'; break; + case 44: $back = 'blue'; break; + case 45: $back = 'magenta'; break; + case 46: $back = 'cyan'; break; + case 47: $back = 'white'; break; + // @codingStandardsIgnoreEnd + + default: + //user_error('Unsupported attribute: ' . $mod); + $this->ansi = ''; + break 2; + } + } + } + break; + default: + //user_error("{$this->ansi} is unsupported\r\n"); + } + } + $this->ansi = ''; + continue; + } + + $this->tokenization[count($this->tokenization) - 1].= $source[$i]; + switch ($source[$i]) { + case "\r": + $this->x = 0; + break; + case "\n": + $this->_newLine(); + break; + case "\x08": // backspace + if ($this->x) { + $this->x--; + $this->attrs[$this->y][$this->x] = clone($this->base_attr_cell); + $this->screen[$this->y] = substr_replace( + $this->screen[$this->y], + $source[$i], + $this->x, + 1 + ); + } + break; + case "\x0F": // shift + break; + case "\x1B": // start ANSI escape code + $this->tokenization[count($this->tokenization) - 1] = substr($this->tokenization[count($this->tokenization) - 1], 0, -1); + //if (!strlen($this->tokenization[count($this->tokenization) - 1])) { + // array_pop($this->tokenization); + //} + $this->ansi.= "\x1B"; + break; + default: + $this->attrs[$this->y][$this->x] = clone($this->attr_cell); + if ($this->x > strlen($this->screen[$this->y])) { + $this->screen[$this->y] = str_repeat(' ', $this->x); + } + $this->screen[$this->y] = substr_replace( + $this->screen[$this->y], + $source[$i], + $this->x, + 1 + ); + + if ($this->x > $this->max_x) { + $this->x = 0; + $this->y++; + } else { + $this->x++; + } + } + } + } + + /** + * Add a new line + * + * Also update the $this->screen and $this->history buffers + * + * @access private + */ + function _newLine() + { + //if ($this->y < $this->max_y) { + // $this->y++; + //} + + while ($this->y >= $this->max_y) { + $this->history = array_merge($this->history, array(array_shift($this->screen))); + $this->screen[] = ''; + + $this->history_attrs = array_merge($this->history_attrs, array(array_shift($this->attrs))); + $this->attrs[] = $this->attr_row; + + if (count($this->history) >= $this->max_history) { + array_shift($this->history); + array_shift($this->history_attrs); + } + + $this->y--; + } + $this->y++; + } + + /** + * Returns the current coordinate without preformating + * + * @access private + * @return string + */ + function _processCoordinate($last_attr, $cur_attr, $char) + { + $output = ''; + + if ($last_attr != $cur_attr) { + $close = $open = ''; + if ($last_attr->foreground != $cur_attr->foreground) { + if ($cur_attr->foreground != 'white') { + $open.= ''; + } + if ($last_attr->foreground != 'white') { + $close = '' . $close; + } + } + if ($last_attr->background != $cur_attr->background) { + if ($cur_attr->background != 'black') { + $open.= ''; + } + if ($last_attr->background != 'black') { + $close = '' . $close; + } + } + if ($last_attr->bold != $cur_attr->bold) { + if ($cur_attr->bold) { + $open.= ''; + } else { + $close = '' . $close; + } + } + if ($last_attr->underline != $cur_attr->underline) { + if ($cur_attr->underline) { + $open.= ''; + } else { + $close = '' . $close; + } + } + if ($last_attr->blink != $cur_attr->blink) { + if ($cur_attr->blink) { + $open.= ''; + } else { + $close = '' . $close; + } + } + $output.= $close . $open; + } + + $output.= htmlspecialchars($char); + + return $output; + } + + /** + * Returns the current screen without preformating + * + * @access private + * @return string + */ + function _getScreen() + { + $output = ''; + $last_attr = $this->base_attr_cell; + for ($i = 0; $i <= $this->max_y; $i++) { + for ($j = 0; $j <= $this->max_x; $j++) { + $cur_attr = $this->attrs[$i][$j]; + $output.= $this->_processCoordinate($last_attr, $cur_attr, isset($this->screen[$i][$j]) ? $this->screen[$i][$j] : ''); + $last_attr = $this->attrs[$i][$j]; + } + $output.= "\r\n"; + } + $output = substr($output, 0, -2); + // close any remaining open tags + $output.= $this->_processCoordinate($last_attr, $this->base_attr_cell, ''); + return rtrim($output); + } + + /** + * Returns the current screen + * + * @access public + * @return string + */ + function getScreen() + { + return '
        ' . $this->_getScreen() . '
        '; + } + + /** + * Returns the current screen and the x previous lines + * + * @access public + * @return string + */ + function getHistory() + { + $scrollback = ''; + $last_attr = $this->base_attr_cell; + for ($i = 0; $i < count($this->history); $i++) { + for ($j = 0; $j <= $this->max_x + 1; $j++) { + $cur_attr = $this->history_attrs[$i][$j]; + $scrollback.= $this->_processCoordinate($last_attr, $cur_attr, isset($this->history[$i][$j]) ? $this->history[$i][$j] : ''); + $last_attr = $this->history_attrs[$i][$j]; + } + $scrollback.= "\r\n"; + } + $base_attr_cell = $this->base_attr_cell; + $this->base_attr_cell = $last_attr; + $scrollback.= $this->_getScreen(); + $this->base_attr_cell = $base_attr_cell; + + return '
        ' . $scrollback . '
        '; + } +} diff --git a/plugins/updraftplus/includes/phpseclib/File/ASN1.php b/plugins/updraftplus/includes/phpseclib/File/ASN1.php new file mode 100644 index 0000000..2fd2339 --- /dev/null +++ b/plugins/updraftplus/includes/phpseclib/File/ASN1.php @@ -0,0 +1,1407 @@ + + * @copyright 2012 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/**#@+ + * Tag Classes + * + * @access private + * @link http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf#page=12 + */ +define('FILE_ASN1_CLASS_UNIVERSAL', 0); +define('FILE_ASN1_CLASS_APPLICATION', 1); +define('FILE_ASN1_CLASS_CONTEXT_SPECIFIC', 2); +define('FILE_ASN1_CLASS_PRIVATE', 3); +/**#@-*/ + +/**#@+ + * Tag Classes + * + * @access private + * @link http://www.obj-sys.com/asn1tutorial/node124.html + */ +define('FILE_ASN1_TYPE_BOOLEAN', 1); +define('FILE_ASN1_TYPE_INTEGER', 2); +define('FILE_ASN1_TYPE_BIT_STRING', 3); +define('FILE_ASN1_TYPE_OCTET_STRING', 4); +define('FILE_ASN1_TYPE_NULL', 5); +define('FILE_ASN1_TYPE_OBJECT_IDENTIFIER', 6); +//define('FILE_ASN1_TYPE_OBJECT_DESCRIPTOR', 7); +//define('FILE_ASN1_TYPE_INSTANCE_OF', 8); // EXTERNAL +define('FILE_ASN1_TYPE_REAL', 9); +define('FILE_ASN1_TYPE_ENUMERATED', 10); +//define('FILE_ASN1_TYPE_EMBEDDED', 11); +define('FILE_ASN1_TYPE_UTF8_STRING', 12); +//define('FILE_ASN1_TYPE_RELATIVE_OID', 13); +define('FILE_ASN1_TYPE_SEQUENCE', 16); // SEQUENCE OF +define('FILE_ASN1_TYPE_SET', 17); // SET OF +/**#@-*/ +/**#@+ + * More Tag Classes + * + * @access private + * @link http://www.obj-sys.com/asn1tutorial/node10.html + */ +define('FILE_ASN1_TYPE_NUMERIC_STRING', 18); +define('FILE_ASN1_TYPE_PRINTABLE_STRING', 19); +define('FILE_ASN1_TYPE_TELETEX_STRING', 20); // T61String +define('FILE_ASN1_TYPE_VIDEOTEX_STRING', 21); +define('FILE_ASN1_TYPE_IA5_STRING', 22); +define('FILE_ASN1_TYPE_UTC_TIME', 23); +define('FILE_ASN1_TYPE_GENERALIZED_TIME', 24); +define('FILE_ASN1_TYPE_GRAPHIC_STRING', 25); +define('FILE_ASN1_TYPE_VISIBLE_STRING', 26); // ISO646String +define('FILE_ASN1_TYPE_GENERAL_STRING', 27); +define('FILE_ASN1_TYPE_UNIVERSAL_STRING', 28); +//define('FILE_ASN1_TYPE_CHARACTER_STRING', 29); +define('FILE_ASN1_TYPE_BMP_STRING', 30); +/**#@-*/ + +/**#@+ + * Tag Aliases + * + * These tags are kinda place holders for other tags. + * + * @access private + */ +define('FILE_ASN1_TYPE_CHOICE', -1); +define('FILE_ASN1_TYPE_ANY', -2); +/**#@-*/ + +/** + * ASN.1 Element + * + * Bypass normal encoding rules in File_ASN1::encodeDER() + * + * @package File_ASN1 + * @author Jim Wigginton + * @access public + */ +class File_ASN1_Element +{ + /** + * Raw element value + * + * @var string + * @access private + */ + var $element; + + /** + * Constructor + * + * @param string $encoded + * @return File_ASN1_Element + * @access public + */ + function __construct($encoded) + { + $this->element = $encoded; + } + + /** + * PHP4 compatible Default Constructor. + * + * @see self::__construct() + * @param int $mode + * @access public + */ + function File_ASN1_Element($encoded) + { + $this->__construct($encoded); + } +} + +/** + * Pure-PHP ASN.1 Parser + * + * @package File_ASN1 + * @author Jim Wigginton + * @access public + */ +class File_ASN1 +{ + /** + * ASN.1 object identifier + * + * @var array + * @access private + * @link http://en.wikipedia.org/wiki/Object_identifier + */ + var $oids = array(); + + /** + * Default date format + * + * @var string + * @access private + * @link http://php.net/class.datetime + */ + var $format = 'D, d M Y H:i:s O'; + + /** + * Default date format + * + * @var array + * @access private + * @see self::setTimeFormat() + * @see self::asn1map() + * @link http://php.net/class.datetime + */ + var $encoded; + + /** + * Filters + * + * If the mapping type is FILE_ASN1_TYPE_ANY what do we actually encode it as? + * + * @var array + * @access private + * @see self::_encode_der() + */ + var $filters; + + /** + * Type mapping table for the ANY type. + * + * Structured or unknown types are mapped to a FILE_ASN1_Element. + * Unambiguous types get the direct mapping (int/real/bool). + * Others are mapped as a choice, with an extra indexing level. + * + * @var array + * @access public + */ + var $ANYmap = array( + FILE_ASN1_TYPE_BOOLEAN => true, + FILE_ASN1_TYPE_INTEGER => true, + FILE_ASN1_TYPE_BIT_STRING => 'bitString', + FILE_ASN1_TYPE_OCTET_STRING => 'octetString', + FILE_ASN1_TYPE_NULL => 'null', + FILE_ASN1_TYPE_OBJECT_IDENTIFIER => 'objectIdentifier', + FILE_ASN1_TYPE_REAL => true, + FILE_ASN1_TYPE_ENUMERATED => 'enumerated', + FILE_ASN1_TYPE_UTF8_STRING => 'utf8String', + FILE_ASN1_TYPE_NUMERIC_STRING => 'numericString', + FILE_ASN1_TYPE_PRINTABLE_STRING => 'printableString', + FILE_ASN1_TYPE_TELETEX_STRING => 'teletexString', + FILE_ASN1_TYPE_VIDEOTEX_STRING => 'videotexString', + FILE_ASN1_TYPE_IA5_STRING => 'ia5String', + FILE_ASN1_TYPE_UTC_TIME => 'utcTime', + FILE_ASN1_TYPE_GENERALIZED_TIME => 'generalTime', + FILE_ASN1_TYPE_GRAPHIC_STRING => 'graphicString', + FILE_ASN1_TYPE_VISIBLE_STRING => 'visibleString', + FILE_ASN1_TYPE_GENERAL_STRING => 'generalString', + FILE_ASN1_TYPE_UNIVERSAL_STRING => 'universalString', + //FILE_ASN1_TYPE_CHARACTER_STRING => 'characterString', + FILE_ASN1_TYPE_BMP_STRING => 'bmpString' + ); + + /** + * String type to character size mapping table. + * + * Non-convertable types are absent from this table. + * size == 0 indicates variable length encoding. + * + * @var array + * @access public + */ + var $stringTypeSize = array( + FILE_ASN1_TYPE_UTF8_STRING => 0, + FILE_ASN1_TYPE_BMP_STRING => 2, + FILE_ASN1_TYPE_UNIVERSAL_STRING => 4, + FILE_ASN1_TYPE_PRINTABLE_STRING => 1, + FILE_ASN1_TYPE_TELETEX_STRING => 1, + FILE_ASN1_TYPE_IA5_STRING => 1, + FILE_ASN1_TYPE_VISIBLE_STRING => 1, + ); + + /** + * Default Constructor. + * + * @access public + */ + function __construct() + { + static $static_init = null; + if (!$static_init) { + $static_init = true; + if (!class_exists('Math_BigInteger')) { + include_once 'Math/BigInteger.php'; + } + } + } + + /** + * PHP4 compatible Default Constructor. + * + * @see self::__construct() + * @access public + */ + function File_ASN1() + { + $this->__construct($mode); + } + + /** + * Parse BER-encoding + * + * Serves a similar purpose to openssl's asn1parse + * + * @param string $encoded + * @return array + * @access public + */ + function decodeBER($encoded) + { + if (is_object($encoded) && strtolower(get_class($encoded)) == 'file_asn1_element') { + $encoded = $encoded->element; + } + + $this->encoded = $encoded; + // encapsulate in an array for BC with the old decodeBER + return array($this->_decode_ber($encoded)); + } + + /** + * Parse BER-encoding (Helper function) + * + * Sometimes we want to get the BER encoding of a particular tag. $start lets us do that without having to reencode. + * $encoded is passed by reference for the recursive calls done for FILE_ASN1_TYPE_BIT_STRING and + * FILE_ASN1_TYPE_OCTET_STRING. In those cases, the indefinite length is used. + * + * @param string $encoded + * @param int $start + * @param int $encoded_pos + * @return array + * @access private + */ + function _decode_ber($encoded, $start = 0, $encoded_pos = 0) + { + $current = array('start' => $start); + + $type = ord($encoded[$encoded_pos++]); + $start++; + + $constructed = ($type >> 5) & 1; + + $tag = $type & 0x1F; + if ($tag == 0x1F) { + $tag = 0; + // process septets (since the eighth bit is ignored, it's not an octet) + do { + $loop = ord($encoded[0]) >> 7; + $tag <<= 7; + $tag |= ord($encoded[$encoded_pos++]) & 0x7F; + $start++; + } while ($loop); + } + + // Length, as discussed in paragraph 8.1.3 of X.690-0207.pdf#page=13 + $length = ord($encoded[$encoded_pos++]); + $start++; + if ($length == 0x80) { // indefinite length + // "[A sender shall] use the indefinite form (see 8.1.3.6) if the encoding is constructed and is not all + // immediately available." -- paragraph 8.1.3.2.c + $length = strlen($encoded) - $encoded_pos; + } elseif ($length & 0x80) { // definite length, long form + // technically, the long form of the length can be represented by up to 126 octets (bytes), but we'll only + // support it up to four. + $length&= 0x7F; + $temp = substr($encoded, $encoded_pos, $length); + $encoded_pos += $length; + // tags of indefinte length don't really have a header length; this length includes the tag + $current+= array('headerlength' => $length + 2); + $start+= $length; + extract(unpack('Nlength', substr(str_pad($temp, 4, chr(0), STR_PAD_LEFT), -4))); + } else { + $current+= array('headerlength' => 2); + } + + if ($length > (strlen($encoded) - $encoded_pos)) { + return false; + } + + $content = substr($encoded, $encoded_pos, $length); + $content_pos = 0; + + // at this point $length can be overwritten. it's only accurate for definite length things as is + + /* Class is UNIVERSAL, APPLICATION, PRIVATE, or CONTEXT-SPECIFIC. The UNIVERSAL class is restricted to the ASN.1 + built-in types. It defines an application-independent data type that must be distinguishable from all other + data types. The other three classes are user defined. The APPLICATION class distinguishes data types that + have a wide, scattered use within a particular presentation context. PRIVATE distinguishes data types within + a particular organization or country. CONTEXT-SPECIFIC distinguishes members of a sequence or set, the + alternatives of a CHOICE, or universally tagged set members. Only the class number appears in braces for this + data type; the term CONTEXT-SPECIFIC does not appear. + + -- http://www.obj-sys.com/asn1tutorial/node12.html */ + $class = ($type >> 6) & 3; + switch ($class) { + case FILE_ASN1_CLASS_APPLICATION: + case FILE_ASN1_CLASS_PRIVATE: + case FILE_ASN1_CLASS_CONTEXT_SPECIFIC: + if (!$constructed) { + return array( + 'type' => $class, + 'constant' => $tag, + 'content' => $content, + 'length' => $length + $start - $current['start'] + ); + } + + $newcontent = array(); + $remainingLength = $length; + while ($remainingLength > 0) { + $temp = $this->_decode_ber($content, $start, $content_pos); + $length = $temp['length']; + // end-of-content octets - see paragraph 8.1.5 + if (substr($content, $content_pos + $length, 2) == "\0\0") { + $length+= 2; + $start+= $length; + $newcontent[] = $temp; + break; + } + $start+= $length; + $remainingLength-= $length; + $newcontent[] = $temp; + $content_pos += $length; + } + + return array( + 'type' => $class, + 'constant' => $tag, + // the array encapsulation is for BC with the old format + 'content' => $newcontent, + // the only time when $content['headerlength'] isn't defined is when the length is indefinite. + // the absence of $content['headerlength'] is how we know if something is indefinite or not. + // technically, it could be defined to be 2 and then another indicator could be used but whatever. + 'length' => $start - $current['start'] + ) + $current; + } + + $current+= array('type' => $tag); + + // decode UNIVERSAL tags + switch ($tag) { + case FILE_ASN1_TYPE_BOOLEAN: + // "The contents octets shall consist of a single octet." -- paragraph 8.2.1 + //if (strlen($content) != 1) { + // return false; + //} + $current['content'] = (bool) ord($content[$content_pos]); + break; + case FILE_ASN1_TYPE_INTEGER: + case FILE_ASN1_TYPE_ENUMERATED: + $current['content'] = new Math_BigInteger(substr($content, $content_pos), -256); + break; + case FILE_ASN1_TYPE_REAL: // not currently supported + return false; + case FILE_ASN1_TYPE_BIT_STRING: + // The initial octet shall encode, as an unsigned binary integer with bit 1 as the least significant bit, + // the number of unused bits in the final subsequent octet. The number shall be in the range zero to + // seven. + if (!$constructed) { + $current['content'] = substr($content, $content_pos); + } else { + $temp = $this->_decode_ber($content, $start, $content_pos); + $length-= (strlen($content) - $content_pos); + $last = count($temp) - 1; + for ($i = 0; $i < $last; $i++) { + // all subtags should be bit strings + //if ($temp[$i]['type'] != FILE_ASN1_TYPE_BIT_STRING) { + // return false; + //} + $current['content'].= substr($temp[$i]['content'], 1); + } + // all subtags should be bit strings + //if ($temp[$last]['type'] != FILE_ASN1_TYPE_BIT_STRING) { + // return false; + //} + $current['content'] = $temp[$last]['content'][0] . $current['content'] . substr($temp[$i]['content'], 1); + } + break; + case FILE_ASN1_TYPE_OCTET_STRING: + if (!$constructed) { + $current['content'] = substr($content, $content_pos); + } else { + $current['content'] = ''; + $length = 0; + while (substr($content, $content_pos, 2) != "\0\0") { + $temp = $this->_decode_ber($content, $length + $start, $content_pos); + $content_pos += $temp['length']; + // all subtags should be octet strings + //if ($temp['type'] != FILE_ASN1_TYPE_OCTET_STRING) { + // return false; + //} + $current['content'].= $temp['content']; + $length+= $temp['length']; + } + if (substr($content, $content_pos, 2) == "\0\0") { + $length+= 2; // +2 for the EOC + } + } + break; + case FILE_ASN1_TYPE_NULL: + // "The contents octets shall not contain any octets." -- paragraph 8.8.2 + //if (strlen($content)) { + // return false; + //} + break; + case FILE_ASN1_TYPE_SEQUENCE: + case FILE_ASN1_TYPE_SET: + $offset = 0; + $current['content'] = array(); + $content_len = strlen($content); + while ($content_pos < $content_len) { + // if indefinite length construction was used and we have an end-of-content string next + // see paragraphs 8.1.1.3, 8.1.3.2, 8.1.3.6, 8.1.5, and (for an example) 8.6.4.2 + if (!isset($current['headerlength']) && substr($content, $content_pos, 2) == "\0\0") { + $length = $offset + 2; // +2 for the EOC + break 2; + } + $temp = $this->_decode_ber($content, $start + $offset, $content_pos); + $content_pos += $temp['length']; + $current['content'][] = $temp; + $offset+= $temp['length']; + } + break; + case FILE_ASN1_TYPE_OBJECT_IDENTIFIER: + $temp = ord($content[$content_pos++]); + $current['content'] = sprintf('%d.%d', floor($temp / 40), $temp % 40); + $valuen = 0; + // process septets + $content_len = strlen($content); + while ($content_pos < $content_len) { + $temp = ord($content[$content_pos++]); + $valuen <<= 7; + $valuen |= $temp & 0x7F; + if (~$temp & 0x80) { + $current['content'].= ".$valuen"; + $valuen = 0; + } + } + // the eighth bit of the last byte should not be 1 + //if ($temp >> 7) { + // return false; + //} + break; + /* Each character string type shall be encoded as if it had been declared: + [UNIVERSAL x] IMPLICIT OCTET STRING + + -- X.690-0207.pdf#page=23 (paragraph 8.21.3) + + Per that, we're not going to do any validation. If there are any illegal characters in the string, + we don't really care */ + case FILE_ASN1_TYPE_NUMERIC_STRING: + // 0,1,2,3,4,5,6,7,8,9, and space + case FILE_ASN1_TYPE_PRINTABLE_STRING: + // Upper and lower case letters, digits, space, apostrophe, left/right parenthesis, plus sign, comma, + // hyphen, full stop, solidus, colon, equal sign, question mark + case FILE_ASN1_TYPE_TELETEX_STRING: + // The Teletex character set in CCITT's T61, space, and delete + // see http://en.wikipedia.org/wiki/Teletex#Character_sets + case FILE_ASN1_TYPE_VIDEOTEX_STRING: + // The Videotex character set in CCITT's T.100 and T.101, space, and delete + case FILE_ASN1_TYPE_VISIBLE_STRING: + // Printing character sets of international ASCII, and space + case FILE_ASN1_TYPE_IA5_STRING: + // International Alphabet 5 (International ASCII) + case FILE_ASN1_TYPE_GRAPHIC_STRING: + // All registered G sets, and space + case FILE_ASN1_TYPE_GENERAL_STRING: + // All registered C and G sets, space and delete + case FILE_ASN1_TYPE_UTF8_STRING: + // ???? + case FILE_ASN1_TYPE_BMP_STRING: + $current['content'] = substr($content, $content_pos); + break; + case FILE_ASN1_TYPE_UTC_TIME: + case FILE_ASN1_TYPE_GENERALIZED_TIME: + $current['content'] = $this->_decodeTime(substr($content, $content_pos), $tag); + default: + } + + $start+= $length; + + // ie. length is the length of the full TLV encoding - it's not just the length of the value + return $current + array('length' => $start - $current['start']); + } + + /** + * ASN.1 Map + * + * Provides an ASN.1 semantic mapping ($mapping) from a parsed BER-encoding to a human readable format. + * + * "Special" mappings may be applied on a per tag-name basis via $special. + * + * @param array $decoded + * @param array $mapping + * @param array $special + * @return array + * @access public + */ + function asn1map($decoded, $mapping, $special = array()) + { + if (isset($mapping['explicit']) && is_array($decoded['content'])) { + $decoded = $decoded['content'][0]; + } + + switch (true) { + case $mapping['type'] == FILE_ASN1_TYPE_ANY: + $intype = $decoded['type']; + if (isset($decoded['constant']) || !isset($this->ANYmap[$intype]) || (ord($this->encoded[$decoded['start']]) & 0x20)) { + return new File_ASN1_Element(substr($this->encoded, $decoded['start'], $decoded['length'])); + } + $inmap = $this->ANYmap[$intype]; + if (is_string($inmap)) { + return array($inmap => $this->asn1map($decoded, array('type' => $intype) + $mapping, $special)); + } + break; + case $mapping['type'] == FILE_ASN1_TYPE_CHOICE: + foreach ($mapping['children'] as $key => $option) { + switch (true) { + case isset($option['constant']) && $option['constant'] == $decoded['constant']: + case !isset($option['constant']) && $option['type'] == $decoded['type']: + $value = $this->asn1map($decoded, $option, $special); + break; + case !isset($option['constant']) && $option['type'] == FILE_ASN1_TYPE_CHOICE: + $v = $this->asn1map($decoded, $option, $special); + if (isset($v)) { + $value = $v; + } + } + if (isset($value)) { + if (isset($special[$key])) { + $value = call_user_func($special[$key], $value); + } + return array($key => $value); + } + } + return null; + case isset($mapping['implicit']): + case isset($mapping['explicit']): + case $decoded['type'] == $mapping['type']: + break; + default: + // if $decoded['type'] and $mapping['type'] are both strings, but different types of strings, + // let it through + switch (true) { + case $decoded['type'] < 18: // FILE_ASN1_TYPE_NUMERIC_STRING == 18 + case $decoded['type'] > 30: // FILE_ASN1_TYPE_BMP_STRING == 30 + case $mapping['type'] < 18: + case $mapping['type'] > 30: + return null; + } + } + + if (isset($mapping['implicit'])) { + $decoded['type'] = $mapping['type']; + } + + switch ($decoded['type']) { + case FILE_ASN1_TYPE_SEQUENCE: + $map = array(); + + // ignore the min and max + if (isset($mapping['min']) && isset($mapping['max'])) { + $child = $mapping['children']; + foreach ($decoded['content'] as $content) { + if (($map[] = $this->asn1map($content, $child, $special)) === null) { + return null; + } + } + + return $map; + } + + $n = count($decoded['content']); + $i = 0; + + foreach ($mapping['children'] as $key => $child) { + $maymatch = $i < $n; // Match only existing input. + if ($maymatch) { + $temp = $decoded['content'][$i]; + + if ($child['type'] != FILE_ASN1_TYPE_CHOICE) { + // Get the mapping and input class & constant. + $childClass = $tempClass = FILE_ASN1_CLASS_UNIVERSAL; + $constant = null; + if (isset($temp['constant'])) { + $tempClass = isset($temp['class']) ? $temp['class'] : FILE_ASN1_CLASS_CONTEXT_SPECIFIC; + } + if (isset($child['class'])) { + $childClass = $child['class']; + $constant = $child['cast']; + } elseif (isset($child['constant'])) { + $childClass = FILE_ASN1_CLASS_CONTEXT_SPECIFIC; + $constant = $child['constant']; + } + + if (isset($constant) && isset($temp['constant'])) { + // Can only match if constants and class match. + $maymatch = $constant == $temp['constant'] && $childClass == $tempClass; + } else { + // Can only match if no constant expected and type matches or is generic. + $maymatch = !isset($child['constant']) && array_search($child['type'], array($temp['type'], FILE_ASN1_TYPE_ANY, FILE_ASN1_TYPE_CHOICE)) !== false; + } + } + } + + if ($maymatch) { + // Attempt submapping. + $candidate = $this->asn1map($temp, $child, $special); + $maymatch = $candidate !== null; + } + + if ($maymatch) { + // Got the match: use it. + if (isset($special[$key])) { + $candidate = call_user_func($special[$key], $candidate); + } + $map[$key] = $candidate; + $i++; + } elseif (isset($child['default'])) { + $map[$key] = $child['default']; // Use default. + } elseif (!isset($child['optional'])) { + return null; // Syntax error. + } + } + + // Fail mapping if all input items have not been consumed. + return $i < $n ? null: $map; + + // the main diff between sets and sequences is the encapsulation of the foreach in another for loop + case FILE_ASN1_TYPE_SET: + $map = array(); + + // ignore the min and max + if (isset($mapping['min']) && isset($mapping['max'])) { + $child = $mapping['children']; + foreach ($decoded['content'] as $content) { + if (($map[] = $this->asn1map($content, $child, $special)) === null) { + return null; + } + } + + return $map; + } + + for ($i = 0; $i < count($decoded['content']); $i++) { + $temp = $decoded['content'][$i]; + $tempClass = FILE_ASN1_CLASS_UNIVERSAL; + if (isset($temp['constant'])) { + $tempClass = isset($temp['class']) ? $temp['class'] : FILE_ASN1_CLASS_CONTEXT_SPECIFIC; + } + + foreach ($mapping['children'] as $key => $child) { + if (isset($map[$key])) { + continue; + } + $maymatch = true; + if ($child['type'] != FILE_ASN1_TYPE_CHOICE) { + $childClass = FILE_ASN1_CLASS_UNIVERSAL; + $constant = null; + if (isset($child['class'])) { + $childClass = $child['class']; + $constant = $child['cast']; + } elseif (isset($child['constant'])) { + $childClass = FILE_ASN1_CLASS_CONTEXT_SPECIFIC; + $constant = $child['constant']; + } + + if (isset($constant) && isset($temp['constant'])) { + // Can only match if constants and class match. + $maymatch = $constant == $temp['constant'] && $childClass == $tempClass; + } else { + // Can only match if no constant expected and type matches or is generic. + $maymatch = !isset($child['constant']) && array_search($child['type'], array($temp['type'], FILE_ASN1_TYPE_ANY, FILE_ASN1_TYPE_CHOICE)) !== false; + } + } + + if ($maymatch) { + // Attempt submapping. + $candidate = $this->asn1map($temp, $child, $special); + $maymatch = $candidate !== null; + } + + if (!$maymatch) { + break; + } + + // Got the match: use it. + if (isset($special[$key])) { + $candidate = call_user_func($special[$key], $candidate); + } + $map[$key] = $candidate; + break; + } + } + + foreach ($mapping['children'] as $key => $child) { + if (!isset($map[$key])) { + if (isset($child['default'])) { + $map[$key] = $child['default']; + } elseif (!isset($child['optional'])) { + return null; + } + } + } + return $map; + case FILE_ASN1_TYPE_OBJECT_IDENTIFIER: + return isset($this->oids[$decoded['content']]) ? $this->oids[$decoded['content']] : $decoded['content']; + case FILE_ASN1_TYPE_UTC_TIME: + case FILE_ASN1_TYPE_GENERALIZED_TIME: + if (isset($mapping['implicit'])) { + $decoded['content'] = $this->_decodeTime($decoded['content'], $decoded['type']); + } + return @date($this->format, $decoded['content']); + case FILE_ASN1_TYPE_BIT_STRING: + if (isset($mapping['mapping'])) { + $offset = ord($decoded['content'][0]); + $size = (strlen($decoded['content']) - 1) * 8 - $offset; + /* + From X.680-0207.pdf#page=46 (21.7): + + "When a "NamedBitList" is used in defining a bitstring type ASN.1 encoding rules are free to add (or remove) + arbitrarily any trailing 0 bits to (or from) values that are being encoded or decoded. Application designers should + therefore ensure that different semantics are not associated with such values which differ only in the number of trailing + 0 bits." + */ + $bits = count($mapping['mapping']) == $size ? array() : array_fill(0, count($mapping['mapping']) - $size, false); + for ($i = strlen($decoded['content']) - 1; $i > 0; $i--) { + $current = ord($decoded['content'][$i]); + for ($j = $offset; $j < 8; $j++) { + $bits[] = (bool) ($current & (1 << $j)); + } + $offset = 0; + } + $values = array(); + $map = array_reverse($mapping['mapping']); + foreach ($map as $i => $value) { + if ($bits[$i]) { + $values[] = $value; + } + } + return $values; + } + case FILE_ASN1_TYPE_OCTET_STRING: + return base64_encode($decoded['content']); + case FILE_ASN1_TYPE_NULL: + return ''; + case FILE_ASN1_TYPE_BOOLEAN: + return $decoded['content']; + case FILE_ASN1_TYPE_NUMERIC_STRING: + case FILE_ASN1_TYPE_PRINTABLE_STRING: + case FILE_ASN1_TYPE_TELETEX_STRING: + case FILE_ASN1_TYPE_VIDEOTEX_STRING: + case FILE_ASN1_TYPE_IA5_STRING: + case FILE_ASN1_TYPE_GRAPHIC_STRING: + case FILE_ASN1_TYPE_VISIBLE_STRING: + case FILE_ASN1_TYPE_GENERAL_STRING: + case FILE_ASN1_TYPE_UNIVERSAL_STRING: + case FILE_ASN1_TYPE_UTF8_STRING: + case FILE_ASN1_TYPE_BMP_STRING: + return $decoded['content']; + case FILE_ASN1_TYPE_INTEGER: + case FILE_ASN1_TYPE_ENUMERATED: + $temp = $decoded['content']; + if (isset($mapping['implicit'])) { + $temp = new Math_BigInteger($decoded['content'], -256); + } + if (isset($mapping['mapping'])) { + $temp = (int) $temp->toString(); + return isset($mapping['mapping'][$temp]) ? + $mapping['mapping'][$temp] : + false; + } + return $temp; + } + } + + /** + * ASN.1 Encode + * + * DER-encodes an ASN.1 semantic mapping ($mapping). Some libraries would probably call this function + * an ASN.1 compiler. + * + * "Special" mappings can be applied via $special. + * + * @param string $source + * @param string $mapping + * @param int $idx + * @return string + * @access public + */ + function encodeDER($source, $mapping, $special = array()) + { + $this->location = array(); + return $this->_encode_der($source, $mapping, null, $special); + } + + /** + * ASN.1 Encode (Helper function) + * + * @param string $source + * @param string $mapping + * @param int $idx + * @return string + * @access private + */ + function _encode_der($source, $mapping, $idx = null, $special = array()) + { + if (is_object($source) && strtolower(get_class($source)) == 'file_asn1_element') { + return $source->element; + } + + // do not encode (implicitly optional) fields with value set to default + if (isset($mapping['default']) && $source === $mapping['default']) { + return ''; + } + + if (isset($idx)) { + if (isset($special[$idx])) { + $source = call_user_func($special[$idx], $source); + } + $this->location[] = $idx; + } + + $tag = $mapping['type']; + + switch ($tag) { + case FILE_ASN1_TYPE_SET: // Children order is not important, thus process in sequence. + case FILE_ASN1_TYPE_SEQUENCE: + $tag|= 0x20; // set the constructed bit + + // ignore the min and max + if (isset($mapping['min']) && isset($mapping['max'])) { + $value = array(); + $child = $mapping['children']; + + foreach ($source as $content) { + $temp = $this->_encode_der($content, $child, null, $special); + if ($temp === false) { + return false; + } + $value[]= $temp; + } + /* "The encodings of the component values of a set-of value shall appear in ascending order, the encodings being compared + as octet strings with the shorter components being padded at their trailing end with 0-octets. + NOTE - The padding octets are for comparison purposes only and do not appear in the encodings." + + -- sec 11.6 of http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf */ + if ($mapping['type'] == FILE_ASN1_TYPE_SET) { + sort($value); + } + $value = implode($value, ''); + break; + } + + $value = ''; + foreach ($mapping['children'] as $key => $child) { + if (!array_key_exists($key, $source)) { + if (!isset($child['optional'])) { + return false; + } + continue; + } + + $temp = $this->_encode_der($source[$key], $child, $key, $special); + if ($temp === false) { + return false; + } + + // An empty child encoding means it has been optimized out. + // Else we should have at least one tag byte. + if ($temp === '') { + continue; + } + + // if isset($child['constant']) is true then isset($child['optional']) should be true as well + if (isset($child['constant'])) { + /* + From X.680-0207.pdf#page=58 (30.6): + + "The tagging construction specifies explicit tagging if any of the following holds: + ... + c) the "Tag Type" alternative is used and the value of "TagDefault" for the module is IMPLICIT TAGS or + AUTOMATIC TAGS, but the type defined by "Type" is an untagged choice type, an untagged open type, or + an untagged "DummyReference" (see ITU-T Rec. X.683 | ISO/IEC 8824-4, 8.3)." + */ + if (isset($child['explicit']) || $child['type'] == FILE_ASN1_TYPE_CHOICE) { + $subtag = chr((FILE_ASN1_CLASS_CONTEXT_SPECIFIC << 6) | 0x20 | $child['constant']); + $temp = $subtag . $this->_encodeLength(strlen($temp)) . $temp; + } else { + $subtag = chr((FILE_ASN1_CLASS_CONTEXT_SPECIFIC << 6) | (ord($temp[0]) & 0x20) | $child['constant']); + $temp = $subtag . substr($temp, 1); + } + } + $value.= $temp; + } + break; + case FILE_ASN1_TYPE_CHOICE: + $temp = false; + + foreach ($mapping['children'] as $key => $child) { + if (!isset($source[$key])) { + continue; + } + + $temp = $this->_encode_der($source[$key], $child, $key, $special); + if ($temp === false) { + return false; + } + + // An empty child encoding means it has been optimized out. + // Else we should have at least one tag byte. + if ($temp === '') { + continue; + } + + $tag = ord($temp[0]); + + // if isset($child['constant']) is true then isset($child['optional']) should be true as well + if (isset($child['constant'])) { + if (isset($child['explicit']) || $child['type'] == FILE_ASN1_TYPE_CHOICE) { + $subtag = chr((FILE_ASN1_CLASS_CONTEXT_SPECIFIC << 6) | 0x20 | $child['constant']); + $temp = $subtag . $this->_encodeLength(strlen($temp)) . $temp; + } else { + $subtag = chr((FILE_ASN1_CLASS_CONTEXT_SPECIFIC << 6) | (ord($temp[0]) & 0x20) | $child['constant']); + $temp = $subtag . substr($temp, 1); + } + } + } + + if (isset($idx)) { + array_pop($this->location); + } + + if ($temp && isset($mapping['cast'])) { + $temp[0] = chr(($mapping['class'] << 6) | ($tag & 0x20) | $mapping['cast']); + } + + return $temp; + case FILE_ASN1_TYPE_INTEGER: + case FILE_ASN1_TYPE_ENUMERATED: + if (!isset($mapping['mapping'])) { + if (is_numeric($source)) { + $source = new Math_BigInteger($source); + } + $value = $source->toBytes(true); + } else { + $value = array_search($source, $mapping['mapping']); + if ($value === false) { + return false; + } + $value = new Math_BigInteger($value); + $value = $value->toBytes(true); + } + if (!strlen($value)) { + $value = chr(0); + } + break; + case FILE_ASN1_TYPE_UTC_TIME: + case FILE_ASN1_TYPE_GENERALIZED_TIME: + $format = $mapping['type'] == FILE_ASN1_TYPE_UTC_TIME ? 'y' : 'Y'; + $format.= 'mdHis'; + $value = @gmdate($format, strtotime($source)) . 'Z'; + break; + case FILE_ASN1_TYPE_BIT_STRING: + if (isset($mapping['mapping'])) { + $bits = array_fill(0, count($mapping['mapping']), 0); + $size = 0; + for ($i = 0; $i < count($mapping['mapping']); $i++) { + if (in_array($mapping['mapping'][$i], $source)) { + $bits[$i] = 1; + $size = $i; + } + } + + if (isset($mapping['min']) && $mapping['min'] >= 1 && $size < $mapping['min']) { + $size = $mapping['min'] - 1; + } + + $offset = 8 - (($size + 1) & 7); + $offset = $offset !== 8 ? $offset : 0; + + $value = chr($offset); + + for ($i = $size + 1; $i < count($mapping['mapping']); $i++) { + unset($bits[$i]); + } + + $bits = implode('', array_pad($bits, $size + $offset + 1, 0)); + $bytes = explode(' ', rtrim(chunk_split($bits, 8, ' '))); + foreach ($bytes as $byte) { + $value.= chr(bindec($byte)); + } + + break; + } + case FILE_ASN1_TYPE_OCTET_STRING: + /* The initial octet shall encode, as an unsigned binary integer with bit 1 as the least significant bit, + the number of unused bits in the final subsequent octet. The number shall be in the range zero to seven. + + -- http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf#page=16 */ + $value = base64_decode($source); + break; + case FILE_ASN1_TYPE_OBJECT_IDENTIFIER: + $oid = preg_match('#(?:\d+\.)+#', $source) ? $source : array_search($source, $this->oids); + if ($oid === false) { + user_error('Invalid OID'); + return false; + } + $value = ''; + $parts = explode('.', $oid); + $value = chr(40 * $parts[0] + $parts[1]); + for ($i = 2; $i < count($parts); $i++) { + $temp = ''; + if (!$parts[$i]) { + $temp = "\0"; + } else { + while ($parts[$i]) { + $temp = chr(0x80 | ($parts[$i] & 0x7F)) . $temp; + $parts[$i] >>= 7; + } + $temp[strlen($temp) - 1] = $temp[strlen($temp) - 1] & chr(0x7F); + } + $value.= $temp; + } + break; + case FILE_ASN1_TYPE_ANY: + $loc = $this->location; + if (isset($idx)) { + array_pop($this->location); + } + + switch (true) { + case !isset($source): + return $this->_encode_der(null, array('type' => FILE_ASN1_TYPE_NULL) + $mapping, null, $special); + case is_int($source): + case is_object($source) && strtolower(get_class($source)) == 'math_biginteger': + return $this->_encode_der($source, array('type' => FILE_ASN1_TYPE_INTEGER) + $mapping, null, $special); + case is_float($source): + return $this->_encode_der($source, array('type' => FILE_ASN1_TYPE_REAL) + $mapping, null, $special); + case is_bool($source): + return $this->_encode_der($source, array('type' => FILE_ASN1_TYPE_BOOLEAN) + $mapping, null, $special); + case is_array($source) && count($source) == 1: + $typename = implode('', array_keys($source)); + $outtype = array_search($typename, $this->ANYmap, true); + if ($outtype !== false) { + return $this->_encode_der($source[$typename], array('type' => $outtype) + $mapping, null, $special); + } + } + + $filters = $this->filters; + foreach ($loc as $part) { + if (!isset($filters[$part])) { + $filters = false; + break; + } + $filters = $filters[$part]; + } + if ($filters === false) { + user_error('No filters defined for ' . implode('/', $loc)); + return false; + } + return $this->_encode_der($source, $filters + $mapping, null, $special); + case FILE_ASN1_TYPE_NULL: + $value = ''; + break; + case FILE_ASN1_TYPE_NUMERIC_STRING: + case FILE_ASN1_TYPE_TELETEX_STRING: + case FILE_ASN1_TYPE_PRINTABLE_STRING: + case FILE_ASN1_TYPE_UNIVERSAL_STRING: + case FILE_ASN1_TYPE_UTF8_STRING: + case FILE_ASN1_TYPE_BMP_STRING: + case FILE_ASN1_TYPE_IA5_STRING: + case FILE_ASN1_TYPE_VISIBLE_STRING: + case FILE_ASN1_TYPE_VIDEOTEX_STRING: + case FILE_ASN1_TYPE_GRAPHIC_STRING: + case FILE_ASN1_TYPE_GENERAL_STRING: + $value = $source; + break; + case FILE_ASN1_TYPE_BOOLEAN: + $value = $source ? "\xFF" : "\x00"; + break; + default: + user_error('Mapping provides no type definition for ' . implode('/', $this->location)); + return false; + } + + if (isset($idx)) { + array_pop($this->location); + } + + if (isset($mapping['cast'])) { + if (isset($mapping['explicit']) || $mapping['type'] == FILE_ASN1_TYPE_CHOICE) { + $value = chr($tag) . $this->_encodeLength(strlen($value)) . $value; + $tag = ($mapping['class'] << 6) | 0x20 | $mapping['cast']; + } else { + $tag = ($mapping['class'] << 6) | (ord($temp[0]) & 0x20) | $mapping['cast']; + } + } + + return chr($tag) . $this->_encodeLength(strlen($value)) . $value; + } + + /** + * DER-encode the length + * + * DER supports lengths up to (2**8)**127, however, we'll only support lengths up to (2**8)**4. See + * {@link http://itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf#p=13 X.690 paragraph 8.1.3} for more information. + * + * @access private + * @param int $length + * @return string + */ + function _encodeLength($length) + { + if ($length <= 0x7F) { + return chr($length); + } + + $temp = ltrim(pack('N', $length), chr(0)); + return pack('Ca*', 0x80 | strlen($temp), $temp); + } + + /** + * BER-decode the time + * + * Called by _decode_ber() and in the case of implicit tags asn1map(). + * + * @access private + * @param string $content + * @param int $tag + * @return string + */ + function _decodeTime($content, $tag) + { + /* UTCTime: + http://tools.ietf.org/html/rfc5280#section-4.1.2.5.1 + http://www.obj-sys.com/asn1tutorial/node15.html + + GeneralizedTime: + http://tools.ietf.org/html/rfc5280#section-4.1.2.5.2 + http://www.obj-sys.com/asn1tutorial/node14.html */ + + $pattern = $tag == FILE_ASN1_TYPE_UTC_TIME ? + '#(..)(..)(..)(..)(..)(..)(.*)#' : + '#(....)(..)(..)(..)(..)(..).*([Z+-].*)$#'; + + preg_match($pattern, $content, $matches); + + list(, $year, $month, $day, $hour, $minute, $second, $timezone) = $matches; + + if ($tag == FILE_ASN1_TYPE_UTC_TIME) { + $year = $year >= 50 ? "19$year" : "20$year"; + } + + if ($timezone == 'Z') { + $mktime = 'gmmktime'; + $timezone = 0; + } elseif (preg_match('#([+-])(\d\d)(\d\d)#', $timezone, $matches)) { + $mktime = 'gmmktime'; + $timezone = 60 * $matches[3] + 3600 * $matches[2]; + if ($matches[1] == '-') { + $timezone = -$timezone; + } + } else { + $mktime = 'mktime'; + $timezone = 0; + } + + return @$mktime($hour, $minute, $second, $month, $day, $year) + $timezone; + } + + /** + * Set the time format + * + * Sets the time / date format for asn1map(). + * + * @access public + * @param string $format + */ + function setTimeFormat($format) + { + $this->format = $format; + } + + /** + * Load OIDs + * + * Load the relevant OIDs for a particular ASN.1 semantic mapping. + * + * @access public + * @param array $oids + */ + function loadOIDs($oids) + { + $this->oids = $oids; + } + + /** + * Load filters + * + * See File_X509, etc, for an example. + * + * @access public + * @param array $filters + */ + function loadFilters($filters) + { + $this->filters = $filters; + } + + /** + * String Shift + * + * Inspired by array_shift + * + * @param string $string + * @param int $index + * @return string + * @access private + */ + function _string_shift(&$string, $index = 1) + { + $substr = substr($string, 0, $index); + $string = substr($string, $index); + return $substr; + } + + /** + * String type conversion + * + * This is a lazy conversion, dealing only with character size. + * No real conversion table is used. + * + * @param string $in + * @param int $from + * @param int $to + * @return string + * @access public + */ + function convert($in, $from = FILE_ASN1_TYPE_UTF8_STRING, $to = FILE_ASN1_TYPE_UTF8_STRING) + { + if (!isset($this->stringTypeSize[$from]) || !isset($this->stringTypeSize[$to])) { + return false; + } + $insize = $this->stringTypeSize[$from]; + $outsize = $this->stringTypeSize[$to]; + $inlength = strlen($in); + $out = ''; + + for ($i = 0; $i < $inlength;) { + if ($inlength - $i < $insize) { + return false; + } + + // Get an input character as a 32-bit value. + $c = ord($in[$i++]); + switch (true) { + case $insize == 4: + $c = ($c << 8) | ord($in[$i++]); + $c = ($c << 8) | ord($in[$i++]); + case $insize == 2: + $c = ($c << 8) | ord($in[$i++]); + case $insize == 1: + break; + case ($c & 0x80) == 0x00: + break; + case ($c & 0x40) == 0x00: + return false; + default: + $bit = 6; + do { + if ($bit > 25 || $i >= $inlength || (ord($in[$i]) & 0xC0) != 0x80) { + return false; + } + $c = ($c << 6) | (ord($in[$i++]) & 0x3F); + $bit += 5; + $mask = 1 << $bit; + } while ($c & $bit); + $c &= $mask - 1; + break; + } + + // Convert and append the character to output string. + $v = ''; + switch (true) { + case $outsize == 4: + $v .= chr($c & 0xFF); + $c >>= 8; + $v .= chr($c & 0xFF); + $c >>= 8; + case $outsize == 2: + $v .= chr($c & 0xFF); + $c >>= 8; + case $outsize == 1: + $v .= chr($c & 0xFF); + $c >>= 8; + if ($c) { + return false; + } + break; + case ($c & 0x80000000) != 0: + return false; + case $c >= 0x04000000: + $v .= chr(0x80 | ($c & 0x3F)); + $c = ($c >> 6) | 0x04000000; + case $c >= 0x00200000: + $v .= chr(0x80 | ($c & 0x3F)); + $c = ($c >> 6) | 0x00200000; + case $c >= 0x00010000: + $v .= chr(0x80 | ($c & 0x3F)); + $c = ($c >> 6) | 0x00010000; + case $c >= 0x00000800: + $v .= chr(0x80 | ($c & 0x3F)); + $c = ($c >> 6) | 0x00000800; + case $c >= 0x00000080: + $v .= chr(0x80 | ($c & 0x3F)); + $c = ($c >> 6) | 0x000000C0; + default: + $v .= chr($c); + break; + } + $out .= strrev($v); + } + return $out; + } +} diff --git a/plugins/updraftplus/includes/phpseclib/File/X509.php b/plugins/updraftplus/includes/phpseclib/File/X509.php new file mode 100644 index 0000000..040551f --- /dev/null +++ b/plugins/updraftplus/includes/phpseclib/File/X509.php @@ -0,0 +1,4884 @@ + + * @copyright 2012 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/** + * Include File_ASN1 + */ +if (!class_exists('File_ASN1')) { + include_once 'ASN1.php'; +} + +/** + * Flag to only accept signatures signed by certificate authorities + * + * Not really used anymore but retained all the same to suppress E_NOTICEs from old installs + * + * @access public + */ +define('FILE_X509_VALIDATE_SIGNATURE_BY_CA', 1); + +/**#@+ + * @access public + * @see self::getDN() + */ +/** + * Return internal array representation + */ +define('FILE_X509_DN_ARRAY', 0); +/** + * Return string + */ +define('FILE_X509_DN_STRING', 1); +/** + * Return ASN.1 name string + */ +define('FILE_X509_DN_ASN1', 2); +/** + * Return OpenSSL compatible array + */ +define('FILE_X509_DN_OPENSSL', 3); +/** + * Return canonical ASN.1 RDNs string + */ +define('FILE_X509_DN_CANON', 4); +/** + * Return name hash for file indexing + */ +define('FILE_X509_DN_HASH', 5); +/**#@-*/ + +/**#@+ + * @access public + * @see self::saveX509() + * @see self::saveCSR() + * @see self::saveCRL() + */ +/** + * Save as PEM + * + * ie. a base64-encoded PEM with a header and a footer + */ +define('FILE_X509_FORMAT_PEM', 0); +/** + * Save as DER + */ +define('FILE_X509_FORMAT_DER', 1); +/** + * Save as a SPKAC + * + * Only works on CSRs. Not currently supported. + */ +define('FILE_X509_FORMAT_SPKAC', 2); +/** + * Auto-detect the format + * + * Used only by the load*() functions + */ +define('FILE_X509_FORMAT_AUTO_DETECT', 3); +/**#@-*/ + +/** + * Attribute value disposition. + * If disposition is >= 0, this is the index of the target value. + */ +define('FILE_X509_ATTR_ALL', -1); // All attribute values (array). +define('FILE_X509_ATTR_APPEND', -2); // Add a value. +define('FILE_X509_ATTR_REPLACE', -3); // Clear first, then add a value. + +/** + * Pure-PHP X.509 Parser + * + * @package File_X509 + * @author Jim Wigginton + * @access public + */ +class File_X509 +{ + /** + * ASN.1 syntax for X.509 certificates + * + * @var array + * @access private + */ + var $Certificate; + + /**#@+ + * ASN.1 syntax for various extensions + * + * @access private + */ + var $DirectoryString; + var $PKCS9String; + var $AttributeValue; + var $Extensions; + var $KeyUsage; + var $ExtKeyUsageSyntax; + var $BasicConstraints; + var $KeyIdentifier; + var $CRLDistributionPoints; + var $AuthorityKeyIdentifier; + var $CertificatePolicies; + var $AuthorityInfoAccessSyntax; + var $SubjectAltName; + var $SubjectDirectoryAttributes; + var $PrivateKeyUsagePeriod; + var $IssuerAltName; + var $PolicyMappings; + var $NameConstraints; + + var $CPSuri; + var $UserNotice; + + var $netscape_cert_type; + var $netscape_comment; + var $netscape_ca_policy_url; + + var $Name; + var $RelativeDistinguishedName; + var $CRLNumber; + var $CRLReason; + var $IssuingDistributionPoint; + var $InvalidityDate; + var $CertificateIssuer; + var $HoldInstructionCode; + var $SignedPublicKeyAndChallenge; + /**#@-*/ + + /**#@+ + * ASN.1 syntax for various DN attributes + * + * @access private + */ + var $PostalAddress; + /**#@-*/ + + /** + * ASN.1 syntax for Certificate Signing Requests (RFC2986) + * + * @var array + * @access private + */ + var $CertificationRequest; + + /** + * ASN.1 syntax for Certificate Revocation Lists (RFC5280) + * + * @var array + * @access private + */ + var $CertificateList; + + /** + * Distinguished Name + * + * @var array + * @access private + */ + var $dn; + + /** + * Public key + * + * @var string + * @access private + */ + var $publicKey; + + /** + * Private key + * + * @var string + * @access private + */ + var $privateKey; + + /** + * Object identifiers for X.509 certificates + * + * @var array + * @access private + * @link http://en.wikipedia.org/wiki/Object_identifier + */ + var $oids; + + /** + * The certificate authorities + * + * @var array + * @access private + */ + var $CAs; + + /** + * The currently loaded certificate + * + * @var array + * @access private + */ + var $currentCert; + + /** + * The signature subject + * + * There's no guarantee File_X509 is going to re-encode an X.509 cert in the same way it was originally + * encoded so we take save the portion of the original cert that the signature would have made for. + * + * @var string + * @access private + */ + var $signatureSubject; + + /** + * Certificate Start Date + * + * @var string + * @access private + */ + var $startDate; + + /** + * Certificate End Date + * + * @var string + * @access private + */ + var $endDate; + + /** + * Serial Number + * + * @var string + * @access private + */ + var $serialNumber; + + /** + * Key Identifier + * + * See {@link http://tools.ietf.org/html/rfc5280#section-4.2.1.1 RFC5280#section-4.2.1.1} and + * {@link http://tools.ietf.org/html/rfc5280#section-4.2.1.2 RFC5280#section-4.2.1.2}. + * + * @var string + * @access private + */ + var $currentKeyIdentifier; + + /** + * CA Flag + * + * @var bool + * @access private + */ + var $caFlag = false; + + /** + * SPKAC Challenge + * + * @var string + * @access private + */ + var $challenge; + + /** + * Default Constructor. + * + * @return File_X509 + * @access public + */ + function __construct() + { + if (!class_exists('Math_BigInteger')) { + include_once 'Math/BigInteger.php'; + } + + // Explicitly Tagged Module, 1988 Syntax + // http://tools.ietf.org/html/rfc5280#appendix-A.1 + + $this->DirectoryString = array( + 'type' => FILE_ASN1_TYPE_CHOICE, + 'children' => array( + 'teletexString' => array('type' => FILE_ASN1_TYPE_TELETEX_STRING), + 'printableString' => array('type' => FILE_ASN1_TYPE_PRINTABLE_STRING), + 'universalString' => array('type' => FILE_ASN1_TYPE_UNIVERSAL_STRING), + 'utf8String' => array('type' => FILE_ASN1_TYPE_UTF8_STRING), + 'bmpString' => array('type' => FILE_ASN1_TYPE_BMP_STRING) + ) + ); + + $this->PKCS9String = array( + 'type' => FILE_ASN1_TYPE_CHOICE, + 'children' => array( + 'ia5String' => array('type' => FILE_ASN1_TYPE_IA5_STRING), + 'directoryString' => $this->DirectoryString + ) + ); + + $this->AttributeValue = array('type' => FILE_ASN1_TYPE_ANY); + + $AttributeType = array('type' => FILE_ASN1_TYPE_OBJECT_IDENTIFIER); + + $AttributeTypeAndValue = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'type' => $AttributeType, + 'value'=> $this->AttributeValue + ) + ); + + /* + In practice, RDNs containing multiple name-value pairs (called "multivalued RDNs") are rare, + but they can be useful at times when either there is no unique attribute in the entry or you + want to ensure that the entry's DN contains some useful identifying information. + + - https://www.opends.org/wiki/page/DefinitionRelativeDistinguishedName + */ + $this->RelativeDistinguishedName = array( + 'type' => FILE_ASN1_TYPE_SET, + 'min' => 1, + 'max' => -1, + 'children' => $AttributeTypeAndValue + ); + + // http://tools.ietf.org/html/rfc5280#section-4.1.2.4 + $RDNSequence = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + // RDNSequence does not define a min or a max, which means it doesn't have one + 'min' => 0, + 'max' => -1, + 'children' => $this->RelativeDistinguishedName + ); + + $this->Name = array( + 'type' => FILE_ASN1_TYPE_CHOICE, + 'children' => array( + 'rdnSequence' => $RDNSequence + ) + ); + + // http://tools.ietf.org/html/rfc5280#section-4.1.1.2 + $AlgorithmIdentifier = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'algorithm' => array('type' => FILE_ASN1_TYPE_OBJECT_IDENTIFIER), + 'parameters' => array( + 'type' => FILE_ASN1_TYPE_ANY, + 'optional' => true + ) + ) + ); + + /* + A certificate using system MUST reject the certificate if it encounters + a critical extension it does not recognize; however, a non-critical + extension may be ignored if it is not recognized. + + http://tools.ietf.org/html/rfc5280#section-4.2 + */ + $Extension = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'extnId' => array('type' => FILE_ASN1_TYPE_OBJECT_IDENTIFIER), + 'critical' => array( + 'type' => FILE_ASN1_TYPE_BOOLEAN, + 'optional' => true, + 'default' => false + ), + 'extnValue' => array('type' => FILE_ASN1_TYPE_OCTET_STRING) + ) + ); + + $this->Extensions = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'min' => 1, + // technically, it's MAX, but we'll assume anything < 0 is MAX + 'max' => -1, + // if 'children' isn't an array then 'min' and 'max' must be defined + 'children' => $Extension + ); + + $SubjectPublicKeyInfo = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'algorithm' => $AlgorithmIdentifier, + 'subjectPublicKey' => array('type' => FILE_ASN1_TYPE_BIT_STRING) + ) + ); + + $UniqueIdentifier = array('type' => FILE_ASN1_TYPE_BIT_STRING); + + $Time = array( + 'type' => FILE_ASN1_TYPE_CHOICE, + 'children' => array( + 'utcTime' => array('type' => FILE_ASN1_TYPE_UTC_TIME), + 'generalTime' => array('type' => FILE_ASN1_TYPE_GENERALIZED_TIME) + ) + ); + + // http://tools.ietf.org/html/rfc5280#section-4.1.2.5 + $Validity = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'notBefore' => $Time, + 'notAfter' => $Time + ) + ); + + $CertificateSerialNumber = array('type' => FILE_ASN1_TYPE_INTEGER); + + $Version = array( + 'type' => FILE_ASN1_TYPE_INTEGER, + 'mapping' => array('v1', 'v2', 'v3') + ); + + // assert($TBSCertificate['children']['signature'] == $Certificate['children']['signatureAlgorithm']) + $TBSCertificate = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + // technically, default implies optional, but we'll define it as being optional, none-the-less, just to + // reenforce that fact + 'version' => array( + 'constant' => 0, + 'optional' => true, + 'explicit' => true, + 'default' => 'v1' + ) + $Version, + 'serialNumber' => $CertificateSerialNumber, + 'signature' => $AlgorithmIdentifier, + 'issuer' => $this->Name, + 'validity' => $Validity, + 'subject' => $this->Name, + 'subjectPublicKeyInfo' => $SubjectPublicKeyInfo, + // implicit means that the T in the TLV structure is to be rewritten, regardless of the type + 'issuerUniqueID' => array( + 'constant' => 1, + 'optional' => true, + 'implicit' => true + ) + $UniqueIdentifier, + 'subjectUniqueID' => array( + 'constant' => 2, + 'optional' => true, + 'implicit' => true + ) + $UniqueIdentifier, + // doesn't use the EXPLICIT keyword but if + // it's not IMPLICIT, it's EXPLICIT + 'extensions' => array( + 'constant' => 3, + 'optional' => true, + 'explicit' => true + ) + $this->Extensions + ) + ); + + $this->Certificate = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'tbsCertificate' => $TBSCertificate, + 'signatureAlgorithm' => $AlgorithmIdentifier, + 'signature' => array('type' => FILE_ASN1_TYPE_BIT_STRING) + ) + ); + + $this->KeyUsage = array( + 'type' => FILE_ASN1_TYPE_BIT_STRING, + 'mapping' => array( + 'digitalSignature', + 'nonRepudiation', + 'keyEncipherment', + 'dataEncipherment', + 'keyAgreement', + 'keyCertSign', + 'cRLSign', + 'encipherOnly', + 'decipherOnly' + ) + ); + + $this->BasicConstraints = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'cA' => array( + 'type' => FILE_ASN1_TYPE_BOOLEAN, + 'optional' => true, + 'default' => false + ), + 'pathLenConstraint' => array( + 'type' => FILE_ASN1_TYPE_INTEGER, + 'optional' => true + ) + ) + ); + + $this->KeyIdentifier = array('type' => FILE_ASN1_TYPE_OCTET_STRING); + + $OrganizationalUnitNames = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'min' => 1, + 'max' => 4, // ub-organizational-units + 'children' => array('type' => FILE_ASN1_TYPE_PRINTABLE_STRING) + ); + + $PersonalName = array( + 'type' => FILE_ASN1_TYPE_SET, + 'children' => array( + 'surname' => array( + 'type' => FILE_ASN1_TYPE_PRINTABLE_STRING, + 'constant' => 0, + 'optional' => true, + 'implicit' => true + ), + 'given-name' => array( + 'type' => FILE_ASN1_TYPE_PRINTABLE_STRING, + 'constant' => 1, + 'optional' => true, + 'implicit' => true + ), + 'initials' => array( + 'type' => FILE_ASN1_TYPE_PRINTABLE_STRING, + 'constant' => 2, + 'optional' => true, + 'implicit' => true + ), + 'generation-qualifier' => array( + 'type' => FILE_ASN1_TYPE_PRINTABLE_STRING, + 'constant' => 3, + 'optional' => true, + 'implicit' => true + ) + ) + ); + + $NumericUserIdentifier = array('type' => FILE_ASN1_TYPE_NUMERIC_STRING); + + $OrganizationName = array('type' => FILE_ASN1_TYPE_PRINTABLE_STRING); + + $PrivateDomainName = array( + 'type' => FILE_ASN1_TYPE_CHOICE, + 'children' => array( + 'numeric' => array('type' => FILE_ASN1_TYPE_NUMERIC_STRING), + 'printable' => array('type' => FILE_ASN1_TYPE_PRINTABLE_STRING) + ) + ); + + $TerminalIdentifier = array('type' => FILE_ASN1_TYPE_PRINTABLE_STRING); + + $NetworkAddress = array('type' => FILE_ASN1_TYPE_NUMERIC_STRING); + + $AdministrationDomainName = array( + 'type' => FILE_ASN1_TYPE_CHOICE, + // if class isn't present it's assumed to be FILE_ASN1_CLASS_UNIVERSAL or + // (if constant is present) FILE_ASN1_CLASS_CONTEXT_SPECIFIC + 'class' => FILE_ASN1_CLASS_APPLICATION, + 'cast' => 2, + 'children' => array( + 'numeric' => array('type' => FILE_ASN1_TYPE_NUMERIC_STRING), + 'printable' => array('type' => FILE_ASN1_TYPE_PRINTABLE_STRING) + ) + ); + + $CountryName = array( + 'type' => FILE_ASN1_TYPE_CHOICE, + // if class isn't present it's assumed to be FILE_ASN1_CLASS_UNIVERSAL or + // (if constant is present) FILE_ASN1_CLASS_CONTEXT_SPECIFIC + 'class' => FILE_ASN1_CLASS_APPLICATION, + 'cast' => 1, + 'children' => array( + 'x121-dcc-code' => array('type' => FILE_ASN1_TYPE_NUMERIC_STRING), + 'iso-3166-alpha2-code' => array('type' => FILE_ASN1_TYPE_PRINTABLE_STRING) + ) + ); + + $AnotherName = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'type-id' => array('type' => FILE_ASN1_TYPE_OBJECT_IDENTIFIER), + 'value' => array( + 'type' => FILE_ASN1_TYPE_ANY, + 'constant' => 0, + 'optional' => true, + 'explicit' => true + ) + ) + ); + + $ExtensionAttribute = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'extension-attribute-type' => array( + 'type' => FILE_ASN1_TYPE_PRINTABLE_STRING, + 'constant' => 0, + 'optional' => true, + 'implicit' => true + ), + 'extension-attribute-value' => array( + 'type' => FILE_ASN1_TYPE_ANY, + 'constant' => 1, + 'optional' => true, + 'explicit' => true + ) + ) + ); + + $ExtensionAttributes = array( + 'type' => FILE_ASN1_TYPE_SET, + 'min' => 1, + 'max' => 256, // ub-extension-attributes + 'children' => $ExtensionAttribute + ); + + $BuiltInDomainDefinedAttribute = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'type' => array('type' => FILE_ASN1_TYPE_PRINTABLE_STRING), + 'value' => array('type' => FILE_ASN1_TYPE_PRINTABLE_STRING) + ) + ); + + $BuiltInDomainDefinedAttributes = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'min' => 1, + 'max' => 4, // ub-domain-defined-attributes + 'children' => $BuiltInDomainDefinedAttribute + ); + + $BuiltInStandardAttributes = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'country-name' => array('optional' => true) + $CountryName, + 'administration-domain-name' => array('optional' => true) + $AdministrationDomainName, + 'network-address' => array( + 'constant' => 0, + 'optional' => true, + 'implicit' => true + ) + $NetworkAddress, + 'terminal-identifier' => array( + 'constant' => 1, + 'optional' => true, + 'implicit' => true + ) + $TerminalIdentifier, + 'private-domain-name' => array( + 'constant' => 2, + 'optional' => true, + 'explicit' => true + ) + $PrivateDomainName, + 'organization-name' => array( + 'constant' => 3, + 'optional' => true, + 'implicit' => true + ) + $OrganizationName, + 'numeric-user-identifier' => array( + 'constant' => 4, + 'optional' => true, + 'implicit' => true + ) + $NumericUserIdentifier, + 'personal-name' => array( + 'constant' => 5, + 'optional' => true, + 'implicit' => true + ) + $PersonalName, + 'organizational-unit-names' => array( + 'constant' => 6, + 'optional' => true, + 'implicit' => true + ) + $OrganizationalUnitNames + ) + ); + + $ORAddress = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'built-in-standard-attributes' => $BuiltInStandardAttributes, + 'built-in-domain-defined-attributes' => array('optional' => true) + $BuiltInDomainDefinedAttributes, + 'extension-attributes' => array('optional' => true) + $ExtensionAttributes + ) + ); + + $EDIPartyName = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'nameAssigner' => array( + 'constant' => 0, + 'optional' => true, + 'implicit' => true + ) + $this->DirectoryString, + // partyName is technically required but File_ASN1 doesn't currently support non-optional constants and + // setting it to optional gets the job done in any event. + 'partyName' => array( + 'constant' => 1, + 'optional' => true, + 'implicit' => true + ) + $this->DirectoryString + ) + ); + + $GeneralName = array( + 'type' => FILE_ASN1_TYPE_CHOICE, + 'children' => array( + 'otherName' => array( + 'constant' => 0, + 'optional' => true, + 'implicit' => true + ) + $AnotherName, + 'rfc822Name' => array( + 'type' => FILE_ASN1_TYPE_IA5_STRING, + 'constant' => 1, + 'optional' => true, + 'implicit' => true + ), + 'dNSName' => array( + 'type' => FILE_ASN1_TYPE_IA5_STRING, + 'constant' => 2, + 'optional' => true, + 'implicit' => true + ), + 'x400Address' => array( + 'constant' => 3, + 'optional' => true, + 'implicit' => true + ) + $ORAddress, + 'directoryName' => array( + 'constant' => 4, + 'optional' => true, + 'explicit' => true + ) + $this->Name, + 'ediPartyName' => array( + 'constant' => 5, + 'optional' => true, + 'implicit' => true + ) + $EDIPartyName, + 'uniformResourceIdentifier' => array( + 'type' => FILE_ASN1_TYPE_IA5_STRING, + 'constant' => 6, + 'optional' => true, + 'implicit' => true + ), + 'iPAddress' => array( + 'type' => FILE_ASN1_TYPE_OCTET_STRING, + 'constant' => 7, + 'optional' => true, + 'implicit' => true + ), + 'registeredID' => array( + 'type' => FILE_ASN1_TYPE_OBJECT_IDENTIFIER, + 'constant' => 8, + 'optional' => true, + 'implicit' => true + ) + ) + ); + + $GeneralNames = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'min' => 1, + 'max' => -1, + 'children' => $GeneralName + ); + + $this->IssuerAltName = $GeneralNames; + + $ReasonFlags = array( + 'type' => FILE_ASN1_TYPE_BIT_STRING, + 'mapping' => array( + 'unused', + 'keyCompromise', + 'cACompromise', + 'affiliationChanged', + 'superseded', + 'cessationOfOperation', + 'certificateHold', + 'privilegeWithdrawn', + 'aACompromise' + ) + ); + + $DistributionPointName = array( + 'type' => FILE_ASN1_TYPE_CHOICE, + 'children' => array( + 'fullName' => array( + 'constant' => 0, + 'optional' => true, + 'implicit' => true + ) + $GeneralNames, + 'nameRelativeToCRLIssuer' => array( + 'constant' => 1, + 'optional' => true, + 'implicit' => true + ) + $this->RelativeDistinguishedName + ) + ); + + $DistributionPoint = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'distributionPoint' => array( + 'constant' => 0, + 'optional' => true, + 'explicit' => true + ) + $DistributionPointName, + 'reasons' => array( + 'constant' => 1, + 'optional' => true, + 'implicit' => true + ) + $ReasonFlags, + 'cRLIssuer' => array( + 'constant' => 2, + 'optional' => true, + 'implicit' => true + ) + $GeneralNames + ) + ); + + $this->CRLDistributionPoints = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'min' => 1, + 'max' => -1, + 'children' => $DistributionPoint + ); + + $this->AuthorityKeyIdentifier = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'keyIdentifier' => array( + 'constant' => 0, + 'optional' => true, + 'implicit' => true + ) + $this->KeyIdentifier, + 'authorityCertIssuer' => array( + 'constant' => 1, + 'optional' => true, + 'implicit' => true + ) + $GeneralNames, + 'authorityCertSerialNumber' => array( + 'constant' => 2, + 'optional' => true, + 'implicit' => true + ) + $CertificateSerialNumber + ) + ); + + $PolicyQualifierId = array('type' => FILE_ASN1_TYPE_OBJECT_IDENTIFIER); + + $PolicyQualifierInfo = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'policyQualifierId' => $PolicyQualifierId, + 'qualifier' => array('type' => FILE_ASN1_TYPE_ANY) + ) + ); + + $CertPolicyId = array('type' => FILE_ASN1_TYPE_OBJECT_IDENTIFIER); + + $PolicyInformation = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'policyIdentifier' => $CertPolicyId, + 'policyQualifiers' => array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'min' => 0, + 'max' => -1, + 'optional' => true, + 'children' => $PolicyQualifierInfo + ) + ) + ); + + $this->CertificatePolicies = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'min' => 1, + 'max' => -1, + 'children' => $PolicyInformation + ); + + $this->PolicyMappings = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'min' => 1, + 'max' => -1, + 'children' => array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'issuerDomainPolicy' => $CertPolicyId, + 'subjectDomainPolicy' => $CertPolicyId + ) + ) + ); + + $KeyPurposeId = array('type' => FILE_ASN1_TYPE_OBJECT_IDENTIFIER); + + $this->ExtKeyUsageSyntax = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'min' => 1, + 'max' => -1, + 'children' => $KeyPurposeId + ); + + $AccessDescription = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'accessMethod' => array('type' => FILE_ASN1_TYPE_OBJECT_IDENTIFIER), + 'accessLocation' => $GeneralName + ) + ); + + $this->AuthorityInfoAccessSyntax = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'min' => 1, + 'max' => -1, + 'children' => $AccessDescription + ); + + $this->SubjectAltName = $GeneralNames; + + $this->PrivateKeyUsagePeriod = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'notBefore' => array( + 'constant' => 0, + 'optional' => true, + 'implicit' => true, + 'type' => FILE_ASN1_TYPE_GENERALIZED_TIME), + 'notAfter' => array( + 'constant' => 1, + 'optional' => true, + 'implicit' => true, + 'type' => FILE_ASN1_TYPE_GENERALIZED_TIME) + ) + ); + + $BaseDistance = array('type' => FILE_ASN1_TYPE_INTEGER); + + $GeneralSubtree = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'base' => $GeneralName, + 'minimum' => array( + 'constant' => 0, + 'optional' => true, + 'implicit' => true, + 'default' => new Math_BigInteger(0) + ) + $BaseDistance, + 'maximum' => array( + 'constant' => 1, + 'optional' => true, + 'implicit' => true, + ) + $BaseDistance + ) + ); + + $GeneralSubtrees = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'min' => 1, + 'max' => -1, + 'children' => $GeneralSubtree + ); + + $this->NameConstraints = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'permittedSubtrees' => array( + 'constant' => 0, + 'optional' => true, + 'implicit' => true + ) + $GeneralSubtrees, + 'excludedSubtrees' => array( + 'constant' => 1, + 'optional' => true, + 'implicit' => true + ) + $GeneralSubtrees + ) + ); + + $this->CPSuri = array('type' => FILE_ASN1_TYPE_IA5_STRING); + + $DisplayText = array( + 'type' => FILE_ASN1_TYPE_CHOICE, + 'children' => array( + 'ia5String' => array('type' => FILE_ASN1_TYPE_IA5_STRING), + 'visibleString' => array('type' => FILE_ASN1_TYPE_VISIBLE_STRING), + 'bmpString' => array('type' => FILE_ASN1_TYPE_BMP_STRING), + 'utf8String' => array('type' => FILE_ASN1_TYPE_UTF8_STRING) + ) + ); + + $NoticeReference = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'organization' => $DisplayText, + 'noticeNumbers' => array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'min' => 1, + 'max' => 200, + 'children' => array('type' => FILE_ASN1_TYPE_INTEGER) + ) + ) + ); + + $this->UserNotice = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'noticeRef' => array( + 'optional' => true, + 'implicit' => true + ) + $NoticeReference, + 'explicitText' => array( + 'optional' => true, + 'implicit' => true + ) + $DisplayText + ) + ); + + // mapping is from + $this->netscape_cert_type = array( + 'type' => FILE_ASN1_TYPE_BIT_STRING, + 'mapping' => array( + 'SSLClient', + 'SSLServer', + 'Email', + 'ObjectSigning', + 'Reserved', + 'SSLCA', + 'EmailCA', + 'ObjectSigningCA' + ) + ); + + $this->netscape_comment = array('type' => FILE_ASN1_TYPE_IA5_STRING); + $this->netscape_ca_policy_url = array('type' => FILE_ASN1_TYPE_IA5_STRING); + + // attribute is used in RFC2986 but we're using the RFC5280 definition + + $Attribute = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'type' => $AttributeType, + 'value'=> array( + 'type' => FILE_ASN1_TYPE_SET, + 'min' => 1, + 'max' => -1, + 'children' => $this->AttributeValue + ) + ) + ); + + $this->SubjectDirectoryAttributes = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'min' => 1, + 'max' => -1, + 'children' => $Attribute + ); + + // adapted from + + $Attributes = array( + 'type' => FILE_ASN1_TYPE_SET, + 'min' => 1, + 'max' => -1, + 'children' => $Attribute + ); + + $CertificationRequestInfo = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'version' => array( + 'type' => FILE_ASN1_TYPE_INTEGER, + 'mapping' => array('v1') + ), + 'subject' => $this->Name, + 'subjectPKInfo' => $SubjectPublicKeyInfo, + 'attributes' => array( + 'constant' => 0, + 'optional' => true, + 'implicit' => true + ) + $Attributes, + ) + ); + + $this->CertificationRequest = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'certificationRequestInfo' => $CertificationRequestInfo, + 'signatureAlgorithm' => $AlgorithmIdentifier, + 'signature' => array('type' => FILE_ASN1_TYPE_BIT_STRING) + ) + ); + + $RevokedCertificate = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'userCertificate' => $CertificateSerialNumber, + 'revocationDate' => $Time, + 'crlEntryExtensions' => array( + 'optional' => true + ) + $this->Extensions + ) + ); + + $TBSCertList = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'version' => array( + 'optional' => true, + 'default' => 'v1' + ) + $Version, + 'signature' => $AlgorithmIdentifier, + 'issuer' => $this->Name, + 'thisUpdate' => $Time, + 'nextUpdate' => array( + 'optional' => true + ) + $Time, + 'revokedCertificates' => array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'optional' => true, + 'min' => 0, + 'max' => -1, + 'children' => $RevokedCertificate + ), + 'crlExtensions' => array( + 'constant' => 0, + 'optional' => true, + 'explicit' => true + ) + $this->Extensions + ) + ); + + $this->CertificateList = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'tbsCertList' => $TBSCertList, + 'signatureAlgorithm' => $AlgorithmIdentifier, + 'signature' => array('type' => FILE_ASN1_TYPE_BIT_STRING) + ) + ); + + $this->CRLNumber = array('type' => FILE_ASN1_TYPE_INTEGER); + + $this->CRLReason = array('type' => FILE_ASN1_TYPE_ENUMERATED, + 'mapping' => array( + 'unspecified', + 'keyCompromise', + 'cACompromise', + 'affiliationChanged', + 'superseded', + 'cessationOfOperation', + 'certificateHold', + // Value 7 is not used. + 8 => 'removeFromCRL', + 'privilegeWithdrawn', + 'aACompromise' + ) + ); + + $this->IssuingDistributionPoint = array('type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'distributionPoint' => array( + 'constant' => 0, + 'optional' => true, + 'explicit' => true + ) + $DistributionPointName, + 'onlyContainsUserCerts' => array( + 'type' => FILE_ASN1_TYPE_BOOLEAN, + 'constant' => 1, + 'optional' => true, + 'default' => false, + 'implicit' => true + ), + 'onlyContainsCACerts' => array( + 'type' => FILE_ASN1_TYPE_BOOLEAN, + 'constant' => 2, + 'optional' => true, + 'default' => false, + 'implicit' => true + ), + 'onlySomeReasons' => array( + 'constant' => 3, + 'optional' => true, + 'implicit' => true + ) + $ReasonFlags, + 'indirectCRL' => array( + 'type' => FILE_ASN1_TYPE_BOOLEAN, + 'constant' => 4, + 'optional' => true, + 'default' => false, + 'implicit' => true + ), + 'onlyContainsAttributeCerts' => array( + 'type' => FILE_ASN1_TYPE_BOOLEAN, + 'constant' => 5, + 'optional' => true, + 'default' => false, + 'implicit' => true + ) + ) + ); + + $this->InvalidityDate = array('type' => FILE_ASN1_TYPE_GENERALIZED_TIME); + + $this->CertificateIssuer = $GeneralNames; + + $this->HoldInstructionCode = array('type' => FILE_ASN1_TYPE_OBJECT_IDENTIFIER); + + $PublicKeyAndChallenge = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'spki' => $SubjectPublicKeyInfo, + 'challenge' => array('type' => FILE_ASN1_TYPE_IA5_STRING) + ) + ); + + $this->SignedPublicKeyAndChallenge = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'children' => array( + 'publicKeyAndChallenge' => $PublicKeyAndChallenge, + 'signatureAlgorithm' => $AlgorithmIdentifier, + 'signature' => array('type' => FILE_ASN1_TYPE_BIT_STRING) + ) + ); + + $this->PostalAddress = array( + 'type' => FILE_ASN1_TYPE_SEQUENCE, + 'optional' => true, + 'min' => 1, + 'max' => -1, + 'children' => $this->DirectoryString + ); + + // OIDs from RFC5280 and those RFCs mentioned in RFC5280#section-4.1.1.2 + $this->oids = array( + '1.3.6.1.5.5.7' => 'id-pkix', + '1.3.6.1.5.5.7.1' => 'id-pe', + '1.3.6.1.5.5.7.2' => 'id-qt', + '1.3.6.1.5.5.7.3' => 'id-kp', + '1.3.6.1.5.5.7.48' => 'id-ad', + '1.3.6.1.5.5.7.2.1' => 'id-qt-cps', + '1.3.6.1.5.5.7.2.2' => 'id-qt-unotice', + '1.3.6.1.5.5.7.48.1' =>'id-ad-ocsp', + '1.3.6.1.5.5.7.48.2' => 'id-ad-caIssuers', + '1.3.6.1.5.5.7.48.3' => 'id-ad-timeStamping', + '1.3.6.1.5.5.7.48.5' => 'id-ad-caRepository', + '2.5.4' => 'id-at', + '2.5.4.41' => 'id-at-name', + '2.5.4.4' => 'id-at-surname', + '2.5.4.42' => 'id-at-givenName', + '2.5.4.43' => 'id-at-initials', + '2.5.4.44' => 'id-at-generationQualifier', + '2.5.4.3' => 'id-at-commonName', + '2.5.4.7' => 'id-at-localityName', + '2.5.4.8' => 'id-at-stateOrProvinceName', + '2.5.4.10' => 'id-at-organizationName', + '2.5.4.11' => 'id-at-organizationalUnitName', + '2.5.4.12' => 'id-at-title', + '2.5.4.13' => 'id-at-description', + '2.5.4.46' => 'id-at-dnQualifier', + '2.5.4.6' => 'id-at-countryName', + '2.5.4.5' => 'id-at-serialNumber', + '2.5.4.65' => 'id-at-pseudonym', + '2.5.4.17' => 'id-at-postalCode', + '2.5.4.9' => 'id-at-streetAddress', + '2.5.4.45' => 'id-at-uniqueIdentifier', + '2.5.4.72' => 'id-at-role', + '2.5.4.16' => 'id-at-postalAddress', + + '0.9.2342.19200300.100.1.25' => 'id-domainComponent', + '1.2.840.113549.1.9' => 'pkcs-9', + '1.2.840.113549.1.9.1' => 'pkcs-9-at-emailAddress', + '2.5.29' => 'id-ce', + '2.5.29.35' => 'id-ce-authorityKeyIdentifier', + '2.5.29.14' => 'id-ce-subjectKeyIdentifier', + '2.5.29.15' => 'id-ce-keyUsage', + '2.5.29.16' => 'id-ce-privateKeyUsagePeriod', + '2.5.29.32' => 'id-ce-certificatePolicies', + '2.5.29.32.0' => 'anyPolicy', + + '2.5.29.33' => 'id-ce-policyMappings', + '2.5.29.17' => 'id-ce-subjectAltName', + '2.5.29.18' => 'id-ce-issuerAltName', + '2.5.29.9' => 'id-ce-subjectDirectoryAttributes', + '2.5.29.19' => 'id-ce-basicConstraints', + '2.5.29.30' => 'id-ce-nameConstraints', + '2.5.29.36' => 'id-ce-policyConstraints', + '2.5.29.31' => 'id-ce-cRLDistributionPoints', + '2.5.29.37' => 'id-ce-extKeyUsage', + '2.5.29.37.0' => 'anyExtendedKeyUsage', + '1.3.6.1.5.5.7.3.1' => 'id-kp-serverAuth', + '1.3.6.1.5.5.7.3.2' => 'id-kp-clientAuth', + '1.3.6.1.5.5.7.3.3' => 'id-kp-codeSigning', + '1.3.6.1.5.5.7.3.4' => 'id-kp-emailProtection', + '1.3.6.1.5.5.7.3.8' => 'id-kp-timeStamping', + '1.3.6.1.5.5.7.3.9' => 'id-kp-OCSPSigning', + '2.5.29.54' => 'id-ce-inhibitAnyPolicy', + '2.5.29.46' => 'id-ce-freshestCRL', + '1.3.6.1.5.5.7.1.1' => 'id-pe-authorityInfoAccess', + '1.3.6.1.5.5.7.1.11' => 'id-pe-subjectInfoAccess', + '2.5.29.20' => 'id-ce-cRLNumber', + '2.5.29.28' => 'id-ce-issuingDistributionPoint', + '2.5.29.27' => 'id-ce-deltaCRLIndicator', + '2.5.29.21' => 'id-ce-cRLReasons', + '2.5.29.29' => 'id-ce-certificateIssuer', + '2.5.29.23' => 'id-ce-holdInstructionCode', + '1.2.840.10040.2' => 'holdInstruction', + '1.2.840.10040.2.1' => 'id-holdinstruction-none', + '1.2.840.10040.2.2' => 'id-holdinstruction-callissuer', + '1.2.840.10040.2.3' => 'id-holdinstruction-reject', + '2.5.29.24' => 'id-ce-invalidityDate', + + '1.2.840.113549.2.2' => 'md2', + '1.2.840.113549.2.5' => 'md5', + '1.3.14.3.2.26' => 'id-sha1', + '1.2.840.10040.4.1' => 'id-dsa', + '1.2.840.10040.4.3' => 'id-dsa-with-sha1', + '1.2.840.113549.1.1' => 'pkcs-1', + '1.2.840.113549.1.1.1' => 'rsaEncryption', + '1.2.840.113549.1.1.2' => 'md2WithRSAEncryption', + '1.2.840.113549.1.1.4' => 'md5WithRSAEncryption', + '1.2.840.113549.1.1.5' => 'sha1WithRSAEncryption', + '1.2.840.10046.2.1' => 'dhpublicnumber', + '2.16.840.1.101.2.1.1.22' => 'id-keyExchangeAlgorithm', + '1.2.840.10045' => 'ansi-X9-62', + '1.2.840.10045.4' => 'id-ecSigType', + '1.2.840.10045.4.1' => 'ecdsa-with-SHA1', + '1.2.840.10045.1' => 'id-fieldType', + '1.2.840.10045.1.1' => 'prime-field', + '1.2.840.10045.1.2' => 'characteristic-two-field', + '1.2.840.10045.1.2.3' => 'id-characteristic-two-basis', + '1.2.840.10045.1.2.3.1' => 'gnBasis', + '1.2.840.10045.1.2.3.2' => 'tpBasis', + '1.2.840.10045.1.2.3.3' => 'ppBasis', + '1.2.840.10045.2' => 'id-publicKeyType', + '1.2.840.10045.2.1' => 'id-ecPublicKey', + '1.2.840.10045.3' => 'ellipticCurve', + '1.2.840.10045.3.0' => 'c-TwoCurve', + '1.2.840.10045.3.0.1' => 'c2pnb163v1', + '1.2.840.10045.3.0.2' => 'c2pnb163v2', + '1.2.840.10045.3.0.3' => 'c2pnb163v3', + '1.2.840.10045.3.0.4' => 'c2pnb176w1', + '1.2.840.10045.3.0.5' => 'c2pnb191v1', + '1.2.840.10045.3.0.6' => 'c2pnb191v2', + '1.2.840.10045.3.0.7' => 'c2pnb191v3', + '1.2.840.10045.3.0.8' => 'c2pnb191v4', + '1.2.840.10045.3.0.9' => 'c2pnb191v5', + '1.2.840.10045.3.0.10' => 'c2pnb208w1', + '1.2.840.10045.3.0.11' => 'c2pnb239v1', + '1.2.840.10045.3.0.12' => 'c2pnb239v2', + '1.2.840.10045.3.0.13' => 'c2pnb239v3', + '1.2.840.10045.3.0.14' => 'c2pnb239v4', + '1.2.840.10045.3.0.15' => 'c2pnb239v5', + '1.2.840.10045.3.0.16' => 'c2pnb272w1', + '1.2.840.10045.3.0.17' => 'c2pnb304w1', + '1.2.840.10045.3.0.18' => 'c2pnb359v1', + '1.2.840.10045.3.0.19' => 'c2pnb368w1', + '1.2.840.10045.3.0.20' => 'c2pnb431r1', + '1.2.840.10045.3.1' => 'primeCurve', + '1.2.840.10045.3.1.1' => 'prime192v1', + '1.2.840.10045.3.1.2' => 'prime192v2', + '1.2.840.10045.3.1.3' => 'prime192v3', + '1.2.840.10045.3.1.4' => 'prime239v1', + '1.2.840.10045.3.1.5' => 'prime239v2', + '1.2.840.10045.3.1.6' => 'prime239v3', + '1.2.840.10045.3.1.7' => 'prime256v1', + '1.2.840.113549.1.1.7' => 'id-RSAES-OAEP', + '1.2.840.113549.1.1.9' => 'id-pSpecified', + '1.2.840.113549.1.1.10' => 'id-RSASSA-PSS', + '1.2.840.113549.1.1.8' => 'id-mgf1', + '1.2.840.113549.1.1.14' => 'sha224WithRSAEncryption', + '1.2.840.113549.1.1.11' => 'sha256WithRSAEncryption', + '1.2.840.113549.1.1.12' => 'sha384WithRSAEncryption', + '1.2.840.113549.1.1.13' => 'sha512WithRSAEncryption', + '2.16.840.1.101.3.4.2.4' => 'id-sha224', + '2.16.840.1.101.3.4.2.1' => 'id-sha256', + '2.16.840.1.101.3.4.2.2' => 'id-sha384', + '2.16.840.1.101.3.4.2.3' => 'id-sha512', + '1.2.643.2.2.4' => 'id-GostR3411-94-with-GostR3410-94', + '1.2.643.2.2.3' => 'id-GostR3411-94-with-GostR3410-2001', + '1.2.643.2.2.20' => 'id-GostR3410-2001', + '1.2.643.2.2.19' => 'id-GostR3410-94', + // Netscape Object Identifiers from "Netscape Certificate Extensions" + '2.16.840.1.113730' => 'netscape', + '2.16.840.1.113730.1' => 'netscape-cert-extension', + '2.16.840.1.113730.1.1' => 'netscape-cert-type', + '2.16.840.1.113730.1.13' => 'netscape-comment', + '2.16.840.1.113730.1.8' => 'netscape-ca-policy-url', + // the following are X.509 extensions not supported by phpseclib + '1.3.6.1.5.5.7.1.12' => 'id-pe-logotype', + '1.2.840.113533.7.65.0' => 'entrustVersInfo', + '2.16.840.1.113733.1.6.9' => 'verisignPrivate', + // for Certificate Signing Requests + // see http://tools.ietf.org/html/rfc2985 + '1.2.840.113549.1.9.2' => 'pkcs-9-at-unstructuredName', // PKCS #9 unstructured name + '1.2.840.113549.1.9.7' => 'pkcs-9-at-challengePassword', // Challenge password for certificate revocations + '1.2.840.113549.1.9.14' => 'pkcs-9-at-extensionRequest' // Certificate extension request + ); + } + + /** + * PHP4 compatible Default Constructor. + * + * @see self::__construct() + * @access public + */ + function File_X509() + { + $this->__construct(); + } + + /** + * Load X.509 certificate + * + * Returns an associative array describing the X.509 cert or a false if the cert failed to load + * + * @param string $cert + * @param int $mode + * @access public + * @return mixed + */ + function loadX509($cert, $mode = FILE_X509_FORMAT_AUTO_DETECT) + { + if (is_array($cert) && isset($cert['tbsCertificate'])) { + unset($this->currentCert); + unset($this->currentKeyIdentifier); + $this->dn = $cert['tbsCertificate']['subject']; + if (!isset($this->dn)) { + return false; + } + $this->currentCert = $cert; + + $currentKeyIdentifier = $this->getExtension('id-ce-subjectKeyIdentifier'); + $this->currentKeyIdentifier = is_string($currentKeyIdentifier) ? $currentKeyIdentifier : null; + + unset($this->signatureSubject); + + return $cert; + } + + $asn1 = new File_ASN1(); + + if ($mode != FILE_X509_FORMAT_DER) { + $newcert = $this->_extractBER($cert); + if ($mode == FILE_X509_FORMAT_PEM && $cert == $newcert) { + return false; + } + $cert = $newcert; + } + + if ($cert === false) { + $this->currentCert = false; + return false; + } + + $asn1->loadOIDs($this->oids); + $decoded = $asn1->decodeBER($cert); + + if (!empty($decoded)) { + $x509 = $asn1->asn1map($decoded[0], $this->Certificate); + } + if (!isset($x509) || $x509 === false) { + $this->currentCert = false; + return false; + } + + $this->signatureSubject = substr($cert, $decoded[0]['content'][0]['start'], $decoded[0]['content'][0]['length']); + + if ($this->_isSubArrayValid($x509, 'tbsCertificate/extensions')) { + $this->_mapInExtensions($x509, 'tbsCertificate/extensions', $asn1); + } + $this->_mapInDNs($x509, 'tbsCertificate/issuer/rdnSequence', $asn1); + $this->_mapInDNs($x509, 'tbsCertificate/subject/rdnSequence', $asn1); + + $key = &$x509['tbsCertificate']['subjectPublicKeyInfo']['subjectPublicKey']; + $key = $this->_reformatKey($x509['tbsCertificate']['subjectPublicKeyInfo']['algorithm']['algorithm'], $key); + + $this->currentCert = $x509; + $this->dn = $x509['tbsCertificate']['subject']; + + $currentKeyIdentifier = $this->getExtension('id-ce-subjectKeyIdentifier'); + $this->currentKeyIdentifier = is_string($currentKeyIdentifier) ? $currentKeyIdentifier : null; + + return $x509; + } + + /** + * Save X.509 certificate + * + * @param array $cert + * @param int $format optional + * @access public + * @return string + */ + function saveX509($cert, $format = FILE_X509_FORMAT_PEM) + { + if (!is_array($cert) || !isset($cert['tbsCertificate'])) { + return false; + } + + switch (true) { + // "case !$a: case !$b: break; default: whatever();" is the same thing as "if ($a && $b) whatever()" + case !($algorithm = $this->_subArray($cert, 'tbsCertificate/subjectPublicKeyInfo/algorithm/algorithm')): + case is_object($cert['tbsCertificate']['subjectPublicKeyInfo']['subjectPublicKey']): + break; + default: + switch ($algorithm) { + case 'rsaEncryption': + $cert['tbsCertificate']['subjectPublicKeyInfo']['subjectPublicKey'] + = base64_encode("\0" . base64_decode(preg_replace('#-.+-|[\r\n]#', '', $cert['tbsCertificate']['subjectPublicKeyInfo']['subjectPublicKey']))); + /* "[For RSA keys] the parameters field MUST have ASN.1 type NULL for this algorithm identifier." + -- https://tools.ietf.org/html/rfc3279#section-2.3.1 + + given that and the fact that RSA keys appear ot be the only key type for which the parameters field can be blank, + it seems like perhaps the ASN.1 description ought not say the parameters field is OPTIONAL, but whatever. + */ + $cert['tbsCertificate']['subjectPublicKeyInfo']['algorithm']['parameters'] = null; + // https://tools.ietf.org/html/rfc3279#section-2.2.1 + $cert['signatureAlgorithm']['parameters'] = null; + $cert['tbsCertificate']['signature']['parameters'] = null; + } + } + + $asn1 = new File_ASN1(); + $asn1->loadOIDs($this->oids); + + $filters = array(); + $type_utf8_string = array('type' => FILE_ASN1_TYPE_UTF8_STRING); + $filters['tbsCertificate']['signature']['parameters'] = $type_utf8_string; + $filters['tbsCertificate']['signature']['issuer']['rdnSequence']['value'] = $type_utf8_string; + $filters['tbsCertificate']['issuer']['rdnSequence']['value'] = $type_utf8_string; + $filters['tbsCertificate']['subject']['rdnSequence']['value'] = $type_utf8_string; + $filters['tbsCertificate']['subjectPublicKeyInfo']['algorithm']['parameters'] = $type_utf8_string; + $filters['signatureAlgorithm']['parameters'] = $type_utf8_string; + $filters['authorityCertIssuer']['directoryName']['rdnSequence']['value'] = $type_utf8_string; + //$filters['policyQualifiers']['qualifier'] = $type_utf8_string; + $filters['distributionPoint']['fullName']['directoryName']['rdnSequence']['value'] = $type_utf8_string; + $filters['directoryName']['rdnSequence']['value'] = $type_utf8_string; + + /* in the case of policyQualifiers/qualifier, the type has to be FILE_ASN1_TYPE_IA5_STRING. + FILE_ASN1_TYPE_PRINTABLE_STRING will cause OpenSSL's X.509 parser to spit out random + characters. + */ + $filters['policyQualifiers']['qualifier'] + = array('type' => FILE_ASN1_TYPE_IA5_STRING); + + $asn1->loadFilters($filters); + + $this->_mapOutExtensions($cert, 'tbsCertificate/extensions', $asn1); + $this->_mapOutDNs($cert, 'tbsCertificate/issuer/rdnSequence', $asn1); + $this->_mapOutDNs($cert, 'tbsCertificate/subject/rdnSequence', $asn1); + + $cert = $asn1->encodeDER($cert, $this->Certificate); + + switch ($format) { + case FILE_X509_FORMAT_DER: + return $cert; + // case FILE_X509_FORMAT_PEM: + default: + return "-----BEGIN CERTIFICATE-----\r\n" . chunk_split(base64_encode($cert), 64) . '-----END CERTIFICATE-----'; + } + } + + /** + * Map extension values from octet string to extension-specific internal + * format. + * + * @param array ref $root + * @param string $path + * @param object $asn1 + * @access private + */ + function _mapInExtensions(&$root, $path, $asn1) + { + $extensions = &$this->_subArrayUnchecked($root, $path); + + if ($extensions) { + for ($i = 0; $i < count($extensions); $i++) { + $id = $extensions[$i]['extnId']; + $value = &$extensions[$i]['extnValue']; + $value = base64_decode($value); + $decoded = $asn1->decodeBER($value); + /* [extnValue] contains the DER encoding of an ASN.1 value + corresponding to the extension type identified by extnID */ + $map = $this->_getMapping($id); + if (!is_bool($map)) { + $mapped = $asn1->asn1map($decoded[0], $map, array('iPAddress' => array($this, '_decodeIP'))); + $value = $mapped === false ? $decoded[0] : $mapped; + + if ($id == 'id-ce-certificatePolicies') { + for ($j = 0; $j < count($value); $j++) { + if (!isset($value[$j]['policyQualifiers'])) { + continue; + } + for ($k = 0; $k < count($value[$j]['policyQualifiers']); $k++) { + $subid = $value[$j]['policyQualifiers'][$k]['policyQualifierId']; + $map = $this->_getMapping($subid); + $subvalue = &$value[$j]['policyQualifiers'][$k]['qualifier']; + if ($map !== false) { + $decoded = $asn1->decodeBER($subvalue); + $mapped = $asn1->asn1map($decoded[0], $map); + $subvalue = $mapped === false ? $decoded[0] : $mapped; + } + } + } + } + } else { + $value = base64_encode($value); + } + } + } + } + + /** + * Map extension values from extension-specific internal format to + * octet string. + * + * @param array ref $root + * @param string $path + * @param object $asn1 + * @access private + */ + function _mapOutExtensions(&$root, $path, $asn1) + { + $extensions = &$this->_subArray($root, $path); + + if (is_array($extensions)) { + $size = count($extensions); + for ($i = 0; $i < $size; $i++) { + if (is_object($extensions[$i]) && strtolower(get_class($extensions[$i])) == 'file_asn1_element') { + continue; + } + + $id = $extensions[$i]['extnId']; + $value = &$extensions[$i]['extnValue']; + + switch ($id) { + case 'id-ce-certificatePolicies': + for ($j = 0; $j < count($value); $j++) { + if (!isset($value[$j]['policyQualifiers'])) { + continue; + } + for ($k = 0; $k < count($value[$j]['policyQualifiers']); $k++) { + $subid = $value[$j]['policyQualifiers'][$k]['policyQualifierId']; + $map = $this->_getMapping($subid); + $subvalue = &$value[$j]['policyQualifiers'][$k]['qualifier']; + if ($map !== false) { + // by default File_ASN1 will try to render qualifier as a FILE_ASN1_TYPE_IA5_STRING since it's + // actual type is FILE_ASN1_TYPE_ANY + $subvalue = new File_ASN1_Element($asn1->encodeDER($subvalue, $map)); + } + } + } + break; + case 'id-ce-authorityKeyIdentifier': // use 00 as the serial number instead of an empty string + if (isset($value['authorityCertSerialNumber'])) { + if ($value['authorityCertSerialNumber']->toBytes() == '') { + $temp = chr((FILE_ASN1_CLASS_CONTEXT_SPECIFIC << 6) | 2) . "\1\0"; + $value['authorityCertSerialNumber'] = new File_ASN1_Element($temp); + } + } + } + + /* [extnValue] contains the DER encoding of an ASN.1 value + corresponding to the extension type identified by extnID */ + $map = $this->_getMapping($id); + if (is_bool($map)) { + if (!$map) { + user_error($id . ' is not a currently supported extension'); + unset($extensions[$i]); + } + } else { + $temp = $asn1->encodeDER($value, $map, array('iPAddress' => array($this, '_encodeIP'))); + $value = base64_encode($temp); + } + } + } + } + + /** + * Map attribute values from ANY type to attribute-specific internal + * format. + * + * @param array ref $root + * @param string $path + * @param object $asn1 + * @access private + */ + function _mapInAttributes(&$root, $path, $asn1) + { + $attributes = &$this->_subArray($root, $path); + + if (is_array($attributes)) { + for ($i = 0; $i < count($attributes); $i++) { + $id = $attributes[$i]['type']; + /* $value contains the DER encoding of an ASN.1 value + corresponding to the attribute type identified by type */ + $map = $this->_getMapping($id); + if (is_array($attributes[$i]['value'])) { + $values = &$attributes[$i]['value']; + for ($j = 0; $j < count($values); $j++) { + $value = $asn1->encodeDER($values[$j], $this->AttributeValue); + $decoded = $asn1->decodeBER($value); + if (!is_bool($map)) { + $mapped = $asn1->asn1map($decoded[0], $map); + if ($mapped !== false) { + $values[$j] = $mapped; + } + if ($id == 'pkcs-9-at-extensionRequest' && $this->_isSubArrayValid($values, $j)) { + $this->_mapInExtensions($values, $j, $asn1); + } + } elseif ($map) { + $values[$j] = base64_encode($value); + } + } + } + } + } + } + + /** + * Map attribute values from attribute-specific internal format to + * ANY type. + * + * @param array ref $root + * @param string $path + * @param object $asn1 + * @access private + */ + function _mapOutAttributes(&$root, $path, $asn1) + { + $attributes = &$this->_subArray($root, $path); + + if (is_array($attributes)) { + $size = count($attributes); + for ($i = 0; $i < $size; $i++) { + /* [value] contains the DER encoding of an ASN.1 value + corresponding to the attribute type identified by type */ + $id = $attributes[$i]['type']; + $map = $this->_getMapping($id); + if ($map === false) { + user_error($id . ' is not a currently supported attribute', E_USER_NOTICE); + unset($attributes[$i]); + } elseif (is_array($attributes[$i]['value'])) { + $values = &$attributes[$i]['value']; + for ($j = 0; $j < count($values); $j++) { + switch ($id) { + case 'pkcs-9-at-extensionRequest': + $this->_mapOutExtensions($values, $j, $asn1); + break; + } + + if (!is_bool($map)) { + $temp = $asn1->encodeDER($values[$j], $map); + $decoded = $asn1->decodeBER($temp); + $values[$j] = $asn1->asn1map($decoded[0], $this->AttributeValue); + } + } + } + } + } + } + + /** + * Map DN values from ANY type to DN-specific internal + * format. + * + * @param array ref $root + * @param string $path + * @param object $asn1 + * @access private + */ + function _mapInDNs(&$root, $path, $asn1) + { + $dns = &$this->_subArray($root, $path); + + if (is_array($dns)) { + for ($i = 0; $i < count($dns); $i++) { + for ($j = 0; $j < count($dns[$i]); $j++) { + $type = $dns[$i][$j]['type']; + $value = &$dns[$i][$j]['value']; + if (is_object($value) && strtolower(get_class($value)) == 'file_asn1_element') { + $map = $this->_getMapping($type); + if (!is_bool($map)) { + $decoded = $asn1->decodeBER($value); + $value = $asn1->asn1map($decoded[0], $map); + } + } + } + } + } + } + + /** + * Map DN values from DN-specific internal format to + * ANY type. + * + * @param array ref $root + * @param string $path + * @param object $asn1 + * @access private + */ + function _mapOutDNs(&$root, $path, $asn1) + { + $dns = &$this->_subArray($root, $path); + + if (is_array($dns)) { + $size = count($dns); + for ($i = 0; $i < $size; $i++) { + for ($j = 0; $j < count($dns[$i]); $j++) { + $type = $dns[$i][$j]['type']; + $value = &$dns[$i][$j]['value']; + if (is_object($value) && strtolower(get_class($value)) == 'file_asn1_element') { + continue; + } + + $map = $this->_getMapping($type); + if (!is_bool($map)) { + $value = new File_ASN1_Element($asn1->encodeDER($value, $map)); + } + } + } + } + } + + /** + * Associate an extension ID to an extension mapping + * + * @param string $extnId + * @access private + * @return mixed + */ + function _getMapping($extnId) + { + if (!is_string($extnId)) { // eg. if it's a File_ASN1_Element object + return true; + } + + switch ($extnId) { + case 'id-ce-keyUsage': + return $this->KeyUsage; + case 'id-ce-basicConstraints': + return $this->BasicConstraints; + case 'id-ce-subjectKeyIdentifier': + return $this->KeyIdentifier; + case 'id-ce-cRLDistributionPoints': + return $this->CRLDistributionPoints; + case 'id-ce-authorityKeyIdentifier': + return $this->AuthorityKeyIdentifier; + case 'id-ce-certificatePolicies': + return $this->CertificatePolicies; + case 'id-ce-extKeyUsage': + return $this->ExtKeyUsageSyntax; + case 'id-pe-authorityInfoAccess': + return $this->AuthorityInfoAccessSyntax; + case 'id-ce-subjectAltName': + return $this->SubjectAltName; + case 'id-ce-subjectDirectoryAttributes': + return $this->SubjectDirectoryAttributes; + case 'id-ce-privateKeyUsagePeriod': + return $this->PrivateKeyUsagePeriod; + case 'id-ce-issuerAltName': + return $this->IssuerAltName; + case 'id-ce-policyMappings': + return $this->PolicyMappings; + case 'id-ce-nameConstraints': + return $this->NameConstraints; + + case 'netscape-cert-type': + return $this->netscape_cert_type; + case 'netscape-comment': + return $this->netscape_comment; + case 'netscape-ca-policy-url': + return $this->netscape_ca_policy_url; + + // since id-qt-cps isn't a constructed type it will have already been decoded as a string by the time it gets + // back around to asn1map() and we don't want it decoded again. + //case 'id-qt-cps': + // return $this->CPSuri; + case 'id-qt-unotice': + return $this->UserNotice; + + // the following OIDs are unsupported but we don't want them to give notices when calling saveX509(). + case 'id-pe-logotype': // http://www.ietf.org/rfc/rfc3709.txt + case 'entrustVersInfo': + // http://support.microsoft.com/kb/287547 + case '1.3.6.1.4.1.311.20.2': // szOID_ENROLL_CERTTYPE_EXTENSION + case '1.3.6.1.4.1.311.21.1': // szOID_CERTSRV_CA_VERSION + // "SET Secure Electronic Transaction Specification" + // http://www.maithean.com/docs/set_bk3.pdf + case '2.23.42.7.0': // id-set-hashedRootKey + return true; + + // CSR attributes + case 'pkcs-9-at-unstructuredName': + return $this->PKCS9String; + case 'pkcs-9-at-challengePassword': + return $this->DirectoryString; + case 'pkcs-9-at-extensionRequest': + return $this->Extensions; + + // CRL extensions. + case 'id-ce-cRLNumber': + return $this->CRLNumber; + case 'id-ce-deltaCRLIndicator': + return $this->CRLNumber; + case 'id-ce-issuingDistributionPoint': + return $this->IssuingDistributionPoint; + case 'id-ce-freshestCRL': + return $this->CRLDistributionPoints; + case 'id-ce-cRLReasons': + return $this->CRLReason; + case 'id-ce-invalidityDate': + return $this->InvalidityDate; + case 'id-ce-certificateIssuer': + return $this->CertificateIssuer; + case 'id-ce-holdInstructionCode': + return $this->HoldInstructionCode; + case 'id-at-postalAddress': + return $this->PostalAddress; + } + + return false; + } + + /** + * Load an X.509 certificate as a certificate authority + * + * @param string $cert + * @access public + * @return bool + */ + function loadCA($cert) + { + $olddn = $this->dn; + $oldcert = $this->currentCert; + $oldsigsubj = $this->signatureSubject; + $oldkeyid = $this->currentKeyIdentifier; + + $cert = $this->loadX509($cert); + if (!$cert) { + $this->dn = $olddn; + $this->currentCert = $oldcert; + $this->signatureSubject = $oldsigsubj; + $this->currentKeyIdentifier = $oldkeyid; + + return false; + } + + /* From RFC5280 "PKIX Certificate and CRL Profile": + + If the keyUsage extension is present, then the subject public key + MUST NOT be used to verify signatures on certificates or CRLs unless + the corresponding keyCertSign or cRLSign bit is set. */ + //$keyUsage = $this->getExtension('id-ce-keyUsage'); + //if ($keyUsage && !in_array('keyCertSign', $keyUsage)) { + // return false; + //} + + /* From RFC5280 "PKIX Certificate and CRL Profile": + + The cA boolean indicates whether the certified public key may be used + to verify certificate signatures. If the cA boolean is not asserted, + then the keyCertSign bit in the key usage extension MUST NOT be + asserted. If the basic constraints extension is not present in a + version 3 certificate, or the extension is present but the cA boolean + is not asserted, then the certified public key MUST NOT be used to + verify certificate signatures. */ + //$basicConstraints = $this->getExtension('id-ce-basicConstraints'); + //if (!$basicConstraints || !$basicConstraints['cA']) { + // return false; + //} + + $this->CAs[] = $cert; + + $this->dn = $olddn; + $this->currentCert = $oldcert; + $this->signatureSubject = $oldsigsubj; + + return true; + } + + /** + * Validate an X.509 certificate against a URL + * + * From RFC2818 "HTTP over TLS": + * + * Matching is performed using the matching rules specified by + * [RFC2459]. If more than one identity of a given type is present in + * the certificate (e.g., more than one dNSName name, a match in any one + * of the set is considered acceptable.) Names may contain the wildcard + * character * which is considered to match any single domain name + * component or component fragment. E.g., *.a.com matches foo.a.com but + * not bar.foo.a.com. f*.com matches foo.com but not bar.com. + * + * @param string $url + * @access public + * @return bool + */ + function validateURL($url) + { + if (!is_array($this->currentCert) || !isset($this->currentCert['tbsCertificate'])) { + return false; + } + + $components = parse_url($url); + if (!isset($components['host'])) { + return false; + } + + if ($names = $this->getExtension('id-ce-subjectAltName')) { + foreach ($names as $key => $value) { + $value = str_replace(array('.', '*'), array('\.', '[^.]*'), $value); + switch ($key) { + case 'dNSName': + /* From RFC2818 "HTTP over TLS": + + If a subjectAltName extension of type dNSName is present, that MUST + be used as the identity. Otherwise, the (most specific) Common Name + field in the Subject field of the certificate MUST be used. Although + the use of the Common Name is existing practice, it is deprecated and + Certification Authorities are encouraged to use the dNSName instead. */ + if (preg_match('#^' . $value . '$#', $components['host'])) { + return true; + } + break; + case 'iPAddress': + /* From RFC2818 "HTTP over TLS": + + In some cases, the URI is specified as an IP address rather than a + hostname. In this case, the iPAddress subjectAltName must be present + in the certificate and must exactly match the IP in the URI. */ + if (preg_match('#(?:\d{1-3}\.){4}#', $components['host'] . '.') && preg_match('#^' . $value . '$#', $components['host'])) { + return true; + } + } + } + return false; + } + + if ($value = $this->getDNProp('id-at-commonName')) { + $value = str_replace(array('.', '*'), array('\.', '[^.]*'), $value[0]); + return preg_match('#^' . $value . '$#', $components['host']); + } + + return false; + } + + /** + * Validate a date + * + * If $date isn't defined it is assumed to be the current date. + * + * @param int $date optional + * @access public + */ + function validateDate($date = null) + { + if (!is_array($this->currentCert) || !isset($this->currentCert['tbsCertificate'])) { + return false; + } + + if (!isset($date)) { + $date = time(); + } + + $notBefore = $this->currentCert['tbsCertificate']['validity']['notBefore']; + $notBefore = isset($notBefore['generalTime']) ? $notBefore['generalTime'] : $notBefore['utcTime']; + + $notAfter = $this->currentCert['tbsCertificate']['validity']['notAfter']; + $notAfter = isset($notAfter['generalTime']) ? $notAfter['generalTime'] : $notAfter['utcTime']; + + switch (true) { + case $date < @strtotime($notBefore): + case $date > @strtotime($notAfter): + return false; + } + + return true; + } + + /** + * Validate a signature + * + * Works on X.509 certs, CSR's and CRL's. + * Returns true if the signature is verified, false if it is not correct or null on error + * + * By default returns false for self-signed certs. Call validateSignature(false) to make this support + * self-signed. + * + * The behavior of this function is inspired by {@link http://php.net/openssl-verify openssl_verify}. + * + * @param bool $caonly optional + * @access public + * @return mixed + */ + function validateSignature($caonly = true) + { + if (!is_array($this->currentCert) || !isset($this->signatureSubject)) { + return null; + } + + /* TODO: + "emailAddress attribute values are not case-sensitive (e.g., "subscriber@example.com" is the same as "SUBSCRIBER@EXAMPLE.COM")." + -- http://tools.ietf.org/html/rfc5280#section-4.1.2.6 + + implement pathLenConstraint in the id-ce-basicConstraints extension */ + + switch (true) { + case isset($this->currentCert['tbsCertificate']): + // self-signed cert + switch (true) { + case !defined('FILE_X509_IGNORE_TYPE') && $this->currentCert['tbsCertificate']['issuer'] === $this->currentCert['tbsCertificate']['subject']: + case defined('FILE_X509_IGNORE_TYPE') && $this->getIssuerDN(FILE_X509_DN_STRING) === $this->getDN(FILE_X509_DN_STRING): + $authorityKey = $this->getExtension('id-ce-authorityKeyIdentifier'); + $subjectKeyID = $this->getExtension('id-ce-subjectKeyIdentifier'); + switch (true) { + case !is_array($authorityKey): + case is_array($authorityKey) && isset($authorityKey['keyIdentifier']) && $authorityKey['keyIdentifier'] === $subjectKeyID: + $signingCert = $this->currentCert; // working cert + } + } + + if (!empty($this->CAs)) { + for ($i = 0; $i < count($this->CAs); $i++) { + // even if the cert is a self-signed one we still want to see if it's a CA; + // if not, we'll conditionally return an error + $ca = $this->CAs[$i]; + switch (true) { + case !defined('FILE_X509_IGNORE_TYPE') && $this->currentCert['tbsCertificate']['issuer'] === $ca['tbsCertificate']['subject']: + case defined('FILE_X509_IGNORE_TYPE') && $this->getDN(FILE_X509_DN_STRING, $this->currentCert['tbsCertificate']['issuer']) === $this->getDN(FILE_X509_DN_STRING, $ca['tbsCertificate']['subject']): + $authorityKey = $this->getExtension('id-ce-authorityKeyIdentifier'); + $subjectKeyID = $this->getExtension('id-ce-subjectKeyIdentifier', $ca); + switch (true) { + case !is_array($authorityKey): + case is_array($authorityKey) && isset($authorityKey['keyIdentifier']) && $authorityKey['keyIdentifier'] === $subjectKeyID: + $signingCert = $ca; // working cert + break 3; + } + } + } + if (count($this->CAs) == $i && $caonly) { + return false; + } + } elseif (!isset($signingCert) || $caonly) { + return false; + } + return $this->_validateSignature( + $signingCert['tbsCertificate']['subjectPublicKeyInfo']['algorithm']['algorithm'], + $signingCert['tbsCertificate']['subjectPublicKeyInfo']['subjectPublicKey'], + $this->currentCert['signatureAlgorithm']['algorithm'], + substr(base64_decode($this->currentCert['signature']), 1), + $this->signatureSubject + ); + case isset($this->currentCert['certificationRequestInfo']): + return $this->_validateSignature( + $this->currentCert['certificationRequestInfo']['subjectPKInfo']['algorithm']['algorithm'], + $this->currentCert['certificationRequestInfo']['subjectPKInfo']['subjectPublicKey'], + $this->currentCert['signatureAlgorithm']['algorithm'], + substr(base64_decode($this->currentCert['signature']), 1), + $this->signatureSubject + ); + case isset($this->currentCert['publicKeyAndChallenge']): + return $this->_validateSignature( + $this->currentCert['publicKeyAndChallenge']['spki']['algorithm']['algorithm'], + $this->currentCert['publicKeyAndChallenge']['spki']['subjectPublicKey'], + $this->currentCert['signatureAlgorithm']['algorithm'], + substr(base64_decode($this->currentCert['signature']), 1), + $this->signatureSubject + ); + case isset($this->currentCert['tbsCertList']): + if (!empty($this->CAs)) { + for ($i = 0; $i < count($this->CAs); $i++) { + $ca = $this->CAs[$i]; + switch (true) { + case !defined('FILE_X509_IGNORE_TYPE') && $this->currentCert['tbsCertList']['issuer'] === $ca['tbsCertificate']['subject']: + case defined('FILE_X509_IGNORE_TYPE') && $this->getDN(FILE_X509_DN_STRING, $this->currentCert['tbsCertList']['issuer']) === $this->getDN(FILE_X509_DN_STRING, $ca['tbsCertificate']['subject']): + $authorityKey = $this->getExtension('id-ce-authorityKeyIdentifier'); + $subjectKeyID = $this->getExtension('id-ce-subjectKeyIdentifier', $ca); + switch (true) { + case !is_array($authorityKey): + case is_array($authorityKey) && isset($authorityKey['keyIdentifier']) && $authorityKey['keyIdentifier'] === $subjectKeyID: + $signingCert = $ca; // working cert + break 3; + } + } + } + } + if (!isset($signingCert)) { + return false; + } + return $this->_validateSignature( + $signingCert['tbsCertificate']['subjectPublicKeyInfo']['algorithm']['algorithm'], + $signingCert['tbsCertificate']['subjectPublicKeyInfo']['subjectPublicKey'], + $this->currentCert['signatureAlgorithm']['algorithm'], + substr(base64_decode($this->currentCert['signature']), 1), + $this->signatureSubject + ); + default: + return false; + } + } + + /** + * Validates a signature + * + * Returns true if the signature is verified, false if it is not correct or null on error + * + * @param string $publicKeyAlgorithm + * @param string $publicKey + * @param string $signatureAlgorithm + * @param string $signature + * @param string $signatureSubject + * @access private + * @return int + */ + function _validateSignature($publicKeyAlgorithm, $publicKey, $signatureAlgorithm, $signature, $signatureSubject) + { + switch ($publicKeyAlgorithm) { + case 'rsaEncryption': + if (!class_exists('Crypt_RSA')) { + include_once 'Crypt/RSA.php'; + } + $rsa = new Crypt_RSA(); + $rsa->loadKey($publicKey); + + switch ($signatureAlgorithm) { + case 'md2WithRSAEncryption': + case 'md5WithRSAEncryption': + case 'sha1WithRSAEncryption': + case 'sha224WithRSAEncryption': + case 'sha256WithRSAEncryption': + case 'sha384WithRSAEncryption': + case 'sha512WithRSAEncryption': + $rsa->setHash(preg_replace('#WithRSAEncryption$#', '', $signatureAlgorithm)); + $rsa->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1); + if (!@$rsa->verify($signatureSubject, $signature)) { + return false; + } + break; + default: + return null; + } + break; + default: + return null; + } + + return true; + } + + /** + * Reformat public keys + * + * Reformats a public key to a format supported by phpseclib (if applicable) + * + * @param string $algorithm + * @param string $key + * @access private + * @return string + */ + function _reformatKey($algorithm, $key) + { + switch ($algorithm) { + case 'rsaEncryption': + return + "-----BEGIN RSA PUBLIC KEY-----\r\n" . + // subjectPublicKey is stored as a bit string in X.509 certs. the first byte of a bit string represents how many bits + // in the last byte should be ignored. the following only supports non-zero stuff but as none of the X.509 certs Firefox + // uses as a cert authority actually use a non-zero bit I think it's safe to assume that none do. + chunk_split(base64_encode(substr(base64_decode($key), 1)), 64) . + '-----END RSA PUBLIC KEY-----'; + default: + return $key; + } + } + + /** + * Decodes an IP address + * + * Takes in a base64 encoded "blob" and returns a human readable IP address + * + * @param string $ip + * @access private + * @return string + */ + function _decodeIP($ip) + { + $ip = base64_decode($ip); + list(, $ip) = unpack('N', $ip); + return long2ip($ip); + } + + /** + * Encodes an IP address + * + * Takes a human readable IP address into a base64-encoded "blob" + * + * @param string $ip + * @access private + * @return string + */ + function _encodeIP($ip) + { + return base64_encode(pack('N', ip2long($ip))); + } + + /** + * "Normalizes" a Distinguished Name property + * + * @param string $propName + * @access private + * @return mixed + */ + function _translateDNProp($propName) + { + switch (strtolower($propName)) { + case 'id-at-countryname': + case 'countryname': + case 'c': + return 'id-at-countryName'; + case 'id-at-organizationname': + case 'organizationname': + case 'o': + return 'id-at-organizationName'; + case 'id-at-dnqualifier': + case 'dnqualifier': + return 'id-at-dnQualifier'; + case 'id-at-commonname': + case 'commonname': + case 'cn': + return 'id-at-commonName'; + case 'id-at-stateorprovincename': + case 'stateorprovincename': + case 'state': + case 'province': + case 'provincename': + case 'st': + return 'id-at-stateOrProvinceName'; + case 'id-at-localityname': + case 'localityname': + case 'l': + return 'id-at-localityName'; + case 'id-emailaddress': + case 'emailaddress': + return 'pkcs-9-at-emailAddress'; + case 'id-at-serialnumber': + case 'serialnumber': + return 'id-at-serialNumber'; + case 'id-at-postalcode': + case 'postalcode': + return 'id-at-postalCode'; + case 'id-at-streetaddress': + case 'streetaddress': + return 'id-at-streetAddress'; + case 'id-at-name': + case 'name': + return 'id-at-name'; + case 'id-at-givenname': + case 'givenname': + return 'id-at-givenName'; + case 'id-at-surname': + case 'surname': + case 'sn': + return 'id-at-surname'; + case 'id-at-initials': + case 'initials': + return 'id-at-initials'; + case 'id-at-generationqualifier': + case 'generationqualifier': + return 'id-at-generationQualifier'; + case 'id-at-organizationalunitname': + case 'organizationalunitname': + case 'ou': + return 'id-at-organizationalUnitName'; + case 'id-at-pseudonym': + case 'pseudonym': + return 'id-at-pseudonym'; + case 'id-at-title': + case 'title': + return 'id-at-title'; + case 'id-at-description': + case 'description': + return 'id-at-description'; + case 'id-at-role': + case 'role': + return 'id-at-role'; + case 'id-at-uniqueidentifier': + case 'uniqueidentifier': + case 'x500uniqueidentifier': + return 'id-at-uniqueIdentifier'; + case 'postaladdress': + case 'id-at-postaladdress': + return 'id-at-postalAddress'; + default: + return false; + } + } + + /** + * Set a Distinguished Name property + * + * @param string $propName + * @param mixed $propValue + * @param string $type optional + * @access public + * @return bool + */ + function setDNProp($propName, $propValue, $type = 'utf8String') + { + if (empty($this->dn)) { + $this->dn = array('rdnSequence' => array()); + } + + if (($propName = $this->_translateDNProp($propName)) === false) { + return false; + } + + foreach ((array) $propValue as $v) { + if (!is_array($v) && isset($type)) { + $v = array($type => $v); + } + $this->dn['rdnSequence'][] = array( + array( + 'type' => $propName, + 'value'=> $v + ) + ); + } + + return true; + } + + /** + * Remove Distinguished Name properties + * + * @param string $propName + * @access public + */ + function removeDNProp($propName) + { + if (empty($this->dn)) { + return; + } + + if (($propName = $this->_translateDNProp($propName)) === false) { + return; + } + + $dn = &$this->dn['rdnSequence']; + $size = count($dn); + for ($i = 0; $i < $size; $i++) { + if ($dn[$i][0]['type'] == $propName) { + unset($dn[$i]); + } + } + + $dn = array_values($dn); + } + + /** + * Get Distinguished Name properties + * + * @param string $propName + * @param array $dn optional + * @param bool $withType optional + * @return mixed + * @access public + */ + function getDNProp($propName, $dn = null, $withType = false) + { + if (!isset($dn)) { + $dn = $this->dn; + } + + if (empty($dn)) { + return false; + } + + if (($propName = $this->_translateDNProp($propName)) === false) { + return false; + } + + $asn1 = new File_ASN1(); + $asn1->loadOIDs($this->oids); + $filters = array(); + $filters['value'] = array('type' => FILE_ASN1_TYPE_UTF8_STRING); + $asn1->loadFilters($filters); + $this->_mapOutDNs($dn, 'rdnSequence', $asn1); + $dn = $dn['rdnSequence']; + $result = array(); + for ($i = 0; $i < count($dn); $i++) { + if ($dn[$i][0]['type'] == $propName) { + $v = $dn[$i][0]['value']; + if (!$withType) { + if (is_array($v)) { + foreach ($v as $type => $s) { + $type = array_search($type, $asn1->ANYmap, true); + if ($type !== false && isset($asn1->stringTypeSize[$type])) { + $s = $asn1->convert($s, $type); + if ($s !== false) { + $v = $s; + break; + } + } + } + if (is_array($v)) { + $v = array_pop($v); // Always strip data type. + } + } elseif (is_object($v) && strtolower(get_class($v)) == 'file_asn1_element') { + $map = $this->_getMapping($propName); + if (!is_bool($map)) { + $decoded = $asn1->decodeBER($v); + $v = $asn1->asn1map($decoded[0], $map); + } + } + } + $result[] = $v; + } + } + + return $result; + } + + /** + * Set a Distinguished Name + * + * @param mixed $dn + * @param bool $merge optional + * @param string $type optional + * @access public + * @return bool + */ + function setDN($dn, $merge = false, $type = 'utf8String') + { + if (!$merge) { + $this->dn = null; + } + + if (is_array($dn)) { + if (isset($dn['rdnSequence'])) { + $this->dn = $dn; // No merge here. + return true; + } + + // handles stuff generated by openssl_x509_parse() + foreach ($dn as $prop => $value) { + if (!$this->setDNProp($prop, $value, $type)) { + return false; + } + } + return true; + } + + // handles everything else + $results = preg_split('#((?:^|, *|/)(?:C=|O=|OU=|CN=|L=|ST=|SN=|postalCode=|streetAddress=|emailAddress=|serialNumber=|organizationalUnitName=|title=|description=|role=|x500UniqueIdentifier=|postalAddress=))#', $dn, -1, PREG_SPLIT_DELIM_CAPTURE); + for ($i = 1; $i < count($results); $i+=2) { + $prop = trim($results[$i], ', =/'); + $value = $results[$i + 1]; + if (!$this->setDNProp($prop, $value, $type)) { + return false; + } + } + + return true; + } + + /** + * Get the Distinguished Name for a certificates subject + * + * @param mixed $format optional + * @param array $dn optional + * @access public + * @return bool + */ + function getDN($format = FILE_X509_DN_ARRAY, $dn = null) + { + if (!isset($dn)) { + $dn = isset($this->currentCert['tbsCertList']) ? $this->currentCert['tbsCertList']['issuer'] : $this->dn; + } + + switch ((int) $format) { + case FILE_X509_DN_ARRAY: + return $dn; + case FILE_X509_DN_ASN1: + $asn1 = new File_ASN1(); + $asn1->loadOIDs($this->oids); + $filters = array(); + $filters['rdnSequence']['value'] = array('type' => FILE_ASN1_TYPE_UTF8_STRING); + $asn1->loadFilters($filters); + $this->_mapOutDNs($dn, 'rdnSequence', $asn1); + return $asn1->encodeDER($dn, $this->Name); + case FILE_X509_DN_CANON: + // No SEQUENCE around RDNs and all string values normalized as + // trimmed lowercase UTF-8 with all spacing as one blank. + // constructed RDNs will not be canonicalized + $asn1 = new File_ASN1(); + $asn1->loadOIDs($this->oids); + $filters = array(); + $filters['value'] = array('type' => FILE_ASN1_TYPE_UTF8_STRING); + $asn1->loadFilters($filters); + $result = ''; + $this->_mapOutDNs($dn, 'rdnSequence', $asn1); + foreach ($dn['rdnSequence'] as $rdn) { + foreach ($rdn as $i => $attr) { + $attr = &$rdn[$i]; + if (is_array($attr['value'])) { + foreach ($attr['value'] as $type => $v) { + $type = array_search($type, $asn1->ANYmap, true); + if ($type !== false && isset($asn1->stringTypeSize[$type])) { + $v = $asn1->convert($v, $type); + if ($v !== false) { + $v = preg_replace('/\s+/', ' ', $v); + $attr['value'] = strtolower(trim($v)); + break; + } + } + } + } + } + $result .= $asn1->encodeDER($rdn, $this->RelativeDistinguishedName); + } + return $result; + case FILE_X509_DN_HASH: + $dn = $this->getDN(FILE_X509_DN_CANON, $dn); + if (!class_exists('Crypt_Hash')) { + include_once 'Crypt/Hash.php'; + } + $hash = new Crypt_Hash('sha1'); + $hash = $hash->hash($dn); + extract(unpack('Vhash', $hash)); + return strtolower(bin2hex(pack('N', $hash))); + } + + // Default is to return a string. + $start = true; + $output = ''; + $result = array(); + $asn1 = new File_ASN1(); + $asn1->loadOIDs($this->oids); + $filters = array(); + $filters['rdnSequence']['value'] = array('type' => FILE_ASN1_TYPE_UTF8_STRING); + $asn1->loadFilters($filters); + $this->_mapOutDNs($dn, 'rdnSequence', $asn1); + foreach ($dn['rdnSequence'] as $field) { + $prop = $field[0]['type']; + $value = $field[0]['value']; + + $delim = ', '; + switch ($prop) { + case 'id-at-countryName': + $desc = 'C'; + break; + case 'id-at-stateOrProvinceName': + $desc = 'ST'; + break; + case 'id-at-organizationName': + $desc = 'O'; + break; + case 'id-at-organizationalUnitName': + $desc = 'OU'; + break; + case 'id-at-commonName': + $desc = 'CN'; + break; + case 'id-at-localityName': + $desc = 'L'; + break; + case 'id-at-surname': + $desc = 'SN'; + break; + case 'id-at-uniqueIdentifier': + $delim = '/'; + $desc = 'x500UniqueIdentifier'; + break; + case 'id-at-postalAddress': + $delim = '/'; + $desc = 'postalAddress'; + break; + default: + $delim = '/'; + $desc = preg_replace('#.+-([^-]+)$#', '$1', $prop); + } + + if (!$start) { + $output.= $delim; + } + if (is_array($value)) { + foreach ($value as $type => $v) { + $type = array_search($type, $asn1->ANYmap, true); + if ($type !== false && isset($asn1->stringTypeSize[$type])) { + $v = $asn1->convert($v, $type); + if ($v !== false) { + $value = $v; + break; + } + } + } + if (is_array($value)) { + $value = array_pop($value); // Always strip data type. + } + } elseif (is_object($value) && strtolower(get_class($value)) == 'file_asn1_element') { + $callback = create_function('$x', 'return "\x" . bin2hex($x[0]);'); + $value = strtoupper(preg_replace_callback('#[^\x20-\x7E]#', $callback, $value->element)); + } + $output.= $desc . '=' . $value; + $result[$desc] = isset($result[$desc]) ? + array_merge((array) $dn[$prop], array($value)) : + $value; + $start = false; + } + + return $format == FILE_X509_DN_OPENSSL ? $result : $output; + } + + /** + * Get the Distinguished Name for a certificate/crl issuer + * + * @param int $format optional + * @access public + * @return mixed + */ + function getIssuerDN($format = FILE_X509_DN_ARRAY) + { + switch (true) { + case !isset($this->currentCert) || !is_array($this->currentCert): + break; + case isset($this->currentCert['tbsCertificate']): + return $this->getDN($format, $this->currentCert['tbsCertificate']['issuer']); + case isset($this->currentCert['tbsCertList']): + return $this->getDN($format, $this->currentCert['tbsCertList']['issuer']); + } + + return false; + } + + /** + * Get the Distinguished Name for a certificate/csr subject + * Alias of getDN() + * + * @param int $format optional + * @access public + * @return mixed + */ + function getSubjectDN($format = FILE_X509_DN_ARRAY) + { + switch (true) { + case !empty($this->dn): + return $this->getDN($format); + case !isset($this->currentCert) || !is_array($this->currentCert): + break; + case isset($this->currentCert['tbsCertificate']): + return $this->getDN($format, $this->currentCert['tbsCertificate']['subject']); + case isset($this->currentCert['certificationRequestInfo']): + return $this->getDN($format, $this->currentCert['certificationRequestInfo']['subject']); + } + + return false; + } + + /** + * Get an individual Distinguished Name property for a certificate/crl issuer + * + * @param string $propName + * @param bool $withType optional + * @access public + * @return mixed + */ + function getIssuerDNProp($propName, $withType = false) + { + switch (true) { + case !isset($this->currentCert) || !is_array($this->currentCert): + break; + case isset($this->currentCert['tbsCertificate']): + return $this->getDNProp($propName, $this->currentCert['tbsCertificate']['issuer'], $withType); + case isset($this->currentCert['tbsCertList']): + return $this->getDNProp($propName, $this->currentCert['tbsCertList']['issuer'], $withType); + } + + return false; + } + + /** + * Get an individual Distinguished Name property for a certificate/csr subject + * + * @param string $propName + * @param bool $withType optional + * @access public + * @return mixed + */ + function getSubjectDNProp($propName, $withType = false) + { + switch (true) { + case !empty($this->dn): + return $this->getDNProp($propName, null, $withType); + case !isset($this->currentCert) || !is_array($this->currentCert): + break; + case isset($this->currentCert['tbsCertificate']): + return $this->getDNProp($propName, $this->currentCert['tbsCertificate']['subject'], $withType); + case isset($this->currentCert['certificationRequestInfo']): + return $this->getDNProp($propName, $this->currentCert['certificationRequestInfo']['subject'], $withType); + } + + return false; + } + + /** + * Get the certificate chain for the current cert + * + * @access public + * @return mixed + */ + function getChain() + { + $chain = array($this->currentCert); + + if (!is_array($this->currentCert) || !isset($this->currentCert['tbsCertificate'])) { + return false; + } + if (empty($this->CAs)) { + return $chain; + } + while (true) { + $currentCert = $chain[count($chain) - 1]; + for ($i = 0; $i < count($this->CAs); $i++) { + $ca = $this->CAs[$i]; + if ($currentCert['tbsCertificate']['issuer'] === $ca['tbsCertificate']['subject']) { + $authorityKey = $this->getExtension('id-ce-authorityKeyIdentifier', $currentCert); + $subjectKeyID = $this->getExtension('id-ce-subjectKeyIdentifier', $ca); + switch (true) { + case !is_array($authorityKey): + case is_array($authorityKey) && isset($authorityKey['keyIdentifier']) && $authorityKey['keyIdentifier'] === $subjectKeyID: + if ($currentCert === $ca) { + break 3; + } + $chain[] = $ca; + break 2; + } + } + } + if ($i == count($this->CAs)) { + break; + } + } + foreach ($chain as $key => $value) { + $chain[$key] = new File_X509(); + $chain[$key]->loadX509($value); + } + return $chain; + } + + /** + * Set public key + * + * Key needs to be a Crypt_RSA object + * + * @param object $key + * @access public + * @return bool + */ + function setPublicKey($key) + { + $key->setPublicKey(); + $this->publicKey = $key; + } + + /** + * Set private key + * + * Key needs to be a Crypt_RSA object + * + * @param object $key + * @access public + */ + function setPrivateKey($key) + { + $this->privateKey = $key; + } + + /** + * Set challenge + * + * Used for SPKAC CSR's + * + * @param string $challenge + * @access public + */ + function setChallenge($challenge) + { + $this->challenge = $challenge; + } + + /** + * Gets the public key + * + * Returns a Crypt_RSA object or a false. + * + * @access public + * @return mixed + */ + function getPublicKey() + { + if (isset($this->publicKey)) { + return $this->publicKey; + } + + if (isset($this->currentCert) && is_array($this->currentCert)) { + foreach (array('tbsCertificate/subjectPublicKeyInfo', 'certificationRequestInfo/subjectPKInfo') as $path) { + $keyinfo = $this->_subArray($this->currentCert, $path); + if (!empty($keyinfo)) { + break; + } + } + } + if (empty($keyinfo)) { + return false; + } + + $key = $keyinfo['subjectPublicKey']; + + switch ($keyinfo['algorithm']['algorithm']) { + case 'rsaEncryption': + if (!class_exists('Crypt_RSA')) { + include_once 'Crypt/RSA.php'; + } + $publicKey = new Crypt_RSA(); + $publicKey->loadKey($key); + $publicKey->setPublicKey(); + break; + default: + return false; + } + + return $publicKey; + } + + /** + * Load a Certificate Signing Request + * + * @param string $csr + * @access public + * @return mixed + */ + function loadCSR($csr, $mode = FILE_X509_FORMAT_AUTO_DETECT) + { + if (is_array($csr) && isset($csr['certificationRequestInfo'])) { + unset($this->currentCert); + unset($this->currentKeyIdentifier); + unset($this->signatureSubject); + $this->dn = $csr['certificationRequestInfo']['subject']; + if (!isset($this->dn)) { + return false; + } + + $this->currentCert = $csr; + return $csr; + } + + // see http://tools.ietf.org/html/rfc2986 + + $asn1 = new File_ASN1(); + + if ($mode != FILE_X509_FORMAT_DER) { + $newcsr = $this->_extractBER($csr); + if ($mode == FILE_X509_FORMAT_PEM && $csr == $newcsr) { + return false; + } + $csr = $newcsr; + } + $orig = $csr; + + if ($csr === false) { + $this->currentCert = false; + return false; + } + + $asn1->loadOIDs($this->oids); + $decoded = $asn1->decodeBER($csr); + + if (empty($decoded)) { + $this->currentCert = false; + return false; + } + + $csr = $asn1->asn1map($decoded[0], $this->CertificationRequest); + if (!isset($csr) || $csr === false) { + $this->currentCert = false; + return false; + } + + $this->_mapInAttributes($csr, 'certificationRequestInfo/attributes', $asn1); + $this->_mapInDNs($csr, 'certificationRequestInfo/subject/rdnSequence', $asn1); + + $this->dn = $csr['certificationRequestInfo']['subject']; + + $this->signatureSubject = substr($orig, $decoded[0]['content'][0]['start'], $decoded[0]['content'][0]['length']); + + $algorithm = &$csr['certificationRequestInfo']['subjectPKInfo']['algorithm']['algorithm']; + $key = &$csr['certificationRequestInfo']['subjectPKInfo']['subjectPublicKey']; + $key = $this->_reformatKey($algorithm, $key); + + switch ($algorithm) { + case 'rsaEncryption': + if (!class_exists('Crypt_RSA')) { + include_once 'Crypt/RSA.php'; + } + $this->publicKey = new Crypt_RSA(); + $this->publicKey->loadKey($key); + $this->publicKey->setPublicKey(); + break; + default: + $this->publicKey = null; + } + + $this->currentKeyIdentifier = null; + $this->currentCert = $csr; + + return $csr; + } + + /** + * Save CSR request + * + * @param array $csr + * @param int $format optional + * @access public + * @return string + */ + function saveCSR($csr, $format = FILE_X509_FORMAT_PEM) + { + if (!is_array($csr) || !isset($csr['certificationRequestInfo'])) { + return false; + } + + switch (true) { + case !($algorithm = $this->_subArray($csr, 'certificationRequestInfo/subjectPKInfo/algorithm/algorithm')): + case is_object($csr['certificationRequestInfo']['subjectPKInfo']['subjectPublicKey']): + break; + default: + switch ($algorithm) { + case 'rsaEncryption': + $csr['certificationRequestInfo']['subjectPKInfo']['subjectPublicKey'] + = base64_encode("\0" . base64_decode(preg_replace('#-.+-|[\r\n]#', '', $csr['certificationRequestInfo']['subjectPKInfo']['subjectPublicKey']))); + $csr['certificationRequestInfo']['subjectPKInfo']['algorithm']['parameters'] = null; + $csr['signatureAlgorithm']['parameters'] = null; + $csr['certificationRequestInfo']['signature']['parameters'] = null; + } + } + + $asn1 = new File_ASN1(); + + $asn1->loadOIDs($this->oids); + + $filters = array(); + $filters['certificationRequestInfo']['subject']['rdnSequence']['value'] + = array('type' => FILE_ASN1_TYPE_UTF8_STRING); + + $asn1->loadFilters($filters); + + $this->_mapOutDNs($csr, 'certificationRequestInfo/subject/rdnSequence', $asn1); + $this->_mapOutAttributes($csr, 'certificationRequestInfo/attributes', $asn1); + $csr = $asn1->encodeDER($csr, $this->CertificationRequest); + + switch ($format) { + case FILE_X509_FORMAT_DER: + return $csr; + // case FILE_X509_FORMAT_PEM: + default: + return "-----BEGIN CERTIFICATE REQUEST-----\r\n" . chunk_split(base64_encode($csr), 64) . '-----END CERTIFICATE REQUEST-----'; + } + } + + /** + * Load a SPKAC CSR + * + * SPKAC's are produced by the HTML5 keygen element: + * + * https://developer.mozilla.org/en-US/docs/HTML/Element/keygen + * + * @param string $csr + * @access public + * @return mixed + */ + function loadSPKAC($spkac) + { + if (is_array($spkac) && isset($spkac['publicKeyAndChallenge'])) { + unset($this->currentCert); + unset($this->currentKeyIdentifier); + unset($this->signatureSubject); + $this->currentCert = $spkac; + return $spkac; + } + + // see http://www.w3.org/html/wg/drafts/html/master/forms.html#signedpublickeyandchallenge + + $asn1 = new File_ASN1(); + + // OpenSSL produces SPKAC's that are preceded by the string SPKAC= + $temp = preg_replace('#(?:SPKAC=)|[ \r\n\\\]#', '', $spkac); + $temp = preg_match('#^[a-zA-Z\d/+]*={0,2}$#', $temp) ? base64_decode($temp) : false; + if ($temp != false) { + $spkac = $temp; + } + $orig = $spkac; + + if ($spkac === false) { + $this->currentCert = false; + return false; + } + + $asn1->loadOIDs($this->oids); + $decoded = $asn1->decodeBER($spkac); + + if (empty($decoded)) { + $this->currentCert = false; + return false; + } + + $spkac = $asn1->asn1map($decoded[0], $this->SignedPublicKeyAndChallenge); + + if (!isset($spkac) || $spkac === false) { + $this->currentCert = false; + return false; + } + + $this->signatureSubject = substr($orig, $decoded[0]['content'][0]['start'], $decoded[0]['content'][0]['length']); + + $algorithm = &$spkac['publicKeyAndChallenge']['spki']['algorithm']['algorithm']; + $key = &$spkac['publicKeyAndChallenge']['spki']['subjectPublicKey']; + $key = $this->_reformatKey($algorithm, $key); + + switch ($algorithm) { + case 'rsaEncryption': + if (!class_exists('Crypt_RSA')) { + include_once 'Crypt/RSA.php'; + } + $this->publicKey = new Crypt_RSA(); + $this->publicKey->loadKey($key); + $this->publicKey->setPublicKey(); + break; + default: + $this->publicKey = null; + } + + $this->currentKeyIdentifier = null; + $this->currentCert = $spkac; + + return $spkac; + } + + /** + * Save a SPKAC CSR request + * + * @param array $csr + * @param int $format optional + * @access public + * @return string + */ + function saveSPKAC($spkac, $format = FILE_X509_FORMAT_PEM) + { + if (!is_array($spkac) || !isset($spkac['publicKeyAndChallenge'])) { + return false; + } + + $algorithm = $this->_subArray($spkac, 'publicKeyAndChallenge/spki/algorithm/algorithm'); + switch (true) { + case !$algorithm: + case is_object($spkac['publicKeyAndChallenge']['spki']['subjectPublicKey']): + break; + default: + switch ($algorithm) { + case 'rsaEncryption': + $spkac['publicKeyAndChallenge']['spki']['subjectPublicKey'] + = base64_encode("\0" . base64_decode(preg_replace('#-.+-|[\r\n]#', '', $spkac['publicKeyAndChallenge']['spki']['subjectPublicKey']))); + } + } + + $asn1 = new File_ASN1(); + + $asn1->loadOIDs($this->oids); + $spkac = $asn1->encodeDER($spkac, $this->SignedPublicKeyAndChallenge); + + switch ($format) { + case FILE_X509_FORMAT_DER: + return $spkac; + // case FILE_X509_FORMAT_PEM: + default: + // OpenSSL's implementation of SPKAC requires the SPKAC be preceded by SPKAC= and since there are pretty much + // no other SPKAC decoders phpseclib will use that same format + return 'SPKAC=' . base64_encode($spkac); + } + } + + /** + * Load a Certificate Revocation List + * + * @param string $crl + * @access public + * @return mixed + */ + function loadCRL($crl, $mode = FILE_X509_FORMAT_AUTO_DETECT) + { + if (is_array($crl) && isset($crl['tbsCertList'])) { + $this->currentCert = $crl; + unset($this->signatureSubject); + return $crl; + } + + $asn1 = new File_ASN1(); + + if ($mode != FILE_X509_FORMAT_DER) { + $newcrl = $this->_extractBER($crl); + if ($mode == FILE_X509_FORMAT_PEM && $crl == $newcrl) { + return false; + } + $crl = $newcrl; + } + $orig = $crl; + + if ($crl === false) { + $this->currentCert = false; + return false; + } + + $asn1->loadOIDs($this->oids); + $decoded = $asn1->decodeBER($crl); + + if (empty($decoded)) { + $this->currentCert = false; + return false; + } + + $crl = $asn1->asn1map($decoded[0], $this->CertificateList); + if (!isset($crl) || $crl === false) { + $this->currentCert = false; + return false; + } + + $this->signatureSubject = substr($orig, $decoded[0]['content'][0]['start'], $decoded[0]['content'][0]['length']); + + $this->_mapInDNs($crl, 'tbsCertList/issuer/rdnSequence', $asn1); + if ($this->_isSubArrayValid($crl, 'tbsCertList/crlExtensions')) { + $this->_mapInExtensions($crl, 'tbsCertList/crlExtensions', $asn1); + } + if ($this->_isSubArrayValid($crl, 'tbsCertList/revokedCertificates')) { + $rclist_ref = &$this->_subArrayUnchecked($crl, 'tbsCertList/revokedCertificates'); + if ($rclist_ref) { + $rclist = $crl['tbsCertList']['revokedCertificates']; + foreach ($rclist as $i => $extension) { + if ($this->_isSubArrayValid($rclist, "$i/crlEntryExtensions", $asn1)) { + $this->_mapInExtensions($rclist_ref, "$i/crlEntryExtensions", $asn1); + } + } + } + } + + $this->currentKeyIdentifier = null; + $this->currentCert = $crl; + + return $crl; + } + + /** + * Save Certificate Revocation List. + * + * @param array $crl + * @param int $format optional + * @access public + * @return string + */ + function saveCRL($crl, $format = FILE_X509_FORMAT_PEM) + { + if (!is_array($crl) || !isset($crl['tbsCertList'])) { + return false; + } + + $asn1 = new File_ASN1(); + + $asn1->loadOIDs($this->oids); + + $filters = array(); + $filters['tbsCertList']['issuer']['rdnSequence']['value'] + = array('type' => FILE_ASN1_TYPE_UTF8_STRING); + $filters['tbsCertList']['signature']['parameters'] + = array('type' => FILE_ASN1_TYPE_UTF8_STRING); + $filters['signatureAlgorithm']['parameters'] + = array('type' => FILE_ASN1_TYPE_UTF8_STRING); + + if (empty($crl['tbsCertList']['signature']['parameters'])) { + $filters['tbsCertList']['signature']['parameters'] + = array('type' => FILE_ASN1_TYPE_NULL); + } + + if (empty($crl['signatureAlgorithm']['parameters'])) { + $filters['signatureAlgorithm']['parameters'] + = array('type' => FILE_ASN1_TYPE_NULL); + } + + $asn1->loadFilters($filters); + + $this->_mapOutDNs($crl, 'tbsCertList/issuer/rdnSequence', $asn1); + $this->_mapOutExtensions($crl, 'tbsCertList/crlExtensions', $asn1); + $rclist = &$this->_subArray($crl, 'tbsCertList/revokedCertificates'); + if (is_array($rclist)) { + foreach ($rclist as $i => $extension) { + $this->_mapOutExtensions($rclist, "$i/crlEntryExtensions", $asn1); + } + } + + $crl = $asn1->encodeDER($crl, $this->CertificateList); + + switch ($format) { + case FILE_X509_FORMAT_DER: + return $crl; + // case FILE_X509_FORMAT_PEM: + default: + return "-----BEGIN X509 CRL-----\r\n" . chunk_split(base64_encode($crl), 64) . '-----END X509 CRL-----'; + } + } + + /** + * Helper function to build a time field according to RFC 3280 section + * - 4.1.2.5 Validity + * - 5.1.2.4 This Update + * - 5.1.2.5 Next Update + * - 5.1.2.6 Revoked Certificates + * by choosing utcTime iff year of date given is before 2050 and generalTime else. + * + * @param string $date in format date('D, d M Y H:i:s O') + * @access private + * @return array + */ + function _timeField($date) + { + $year = @gmdate("Y", @strtotime($date)); // the same way ASN1.php parses this + if ($year < 2050) { + return array('utcTime' => $date); + } else { + return array('generalTime' => $date); + } + } + + /** + * Sign an X.509 certificate + * + * $issuer's private key needs to be loaded. + * $subject can be either an existing X.509 cert (if you want to resign it), + * a CSR or something with the DN and public key explicitly set. + * + * @param File_X509 $issuer + * @param File_X509 $subject + * @param string $signatureAlgorithm optional + * @access public + * @return mixed + */ + function sign($issuer, $subject, $signatureAlgorithm = 'sha1WithRSAEncryption') + { + if (!is_object($issuer->privateKey) || empty($issuer->dn)) { + return false; + } + + if (isset($subject->publicKey) && !($subjectPublicKey = $subject->_formatSubjectPublicKey())) { + return false; + } + + $currentCert = isset($this->currentCert) ? $this->currentCert : null; + $signatureSubject = isset($this->signatureSubject) ? $this->signatureSubject: null; + + if (isset($subject->currentCert) && is_array($subject->currentCert) && isset($subject->currentCert['tbsCertificate'])) { + $this->currentCert = $subject->currentCert; + $this->currentCert['tbsCertificate']['signature']['algorithm'] = $signatureAlgorithm; + $this->currentCert['signatureAlgorithm']['algorithm'] = $signatureAlgorithm; + + if (!empty($this->startDate)) { + $this->currentCert['tbsCertificate']['validity']['notBefore'] = $this->_timeField($this->startDate); + } + if (!empty($this->endDate)) { + $this->currentCert['tbsCertificate']['validity']['notAfter'] = $this->_timeField($this->endDate); + } + if (!empty($this->serialNumber)) { + $this->currentCert['tbsCertificate']['serialNumber'] = $this->serialNumber; + } + if (!empty($subject->dn)) { + $this->currentCert['tbsCertificate']['subject'] = $subject->dn; + } + if (!empty($subject->publicKey)) { + $this->currentCert['tbsCertificate']['subjectPublicKeyInfo'] = $subjectPublicKey; + } + $this->removeExtension('id-ce-authorityKeyIdentifier'); + if (isset($subject->domains)) { + $this->removeExtension('id-ce-subjectAltName'); + } + } elseif (isset($subject->currentCert) && is_array($subject->currentCert) && isset($subject->currentCert['tbsCertList'])) { + return false; + } else { + if (!isset($subject->publicKey)) { + return false; + } + + $startDate = !empty($this->startDate) ? $this->startDate : @date('D, d M Y H:i:s O'); + $endDate = !empty($this->endDate) ? $this->endDate : @date('D, d M Y H:i:s O', strtotime('+1 year')); + if (!empty($this->serialNumber)) { + $serialNumber = $this->serialNumber; + } else { + if (!function_exists('crypt_random_string')) { + include_once 'Crypt/Random.php'; + } + /* "The serial number MUST be a positive integer" + "Conforming CAs MUST NOT use serialNumber values longer than 20 octets." + -- https://tools.ietf.org/html/rfc5280#section-4.1.2.2 + + for the integer to be positive the leading bit needs to be 0 hence the + application of a bitmap + */ + $serialNumber = new Math_BigInteger(crypt_random_string(20) & ("\x7F" . str_repeat("\xFF", 19)), 256); + } + + $this->currentCert = array( + 'tbsCertificate' => + array( + 'version' => 'v3', + 'serialNumber' => $serialNumber, // $this->setserialNumber() + 'signature' => array('algorithm' => $signatureAlgorithm), + 'issuer' => false, // this is going to be overwritten later + 'validity' => array( + 'notBefore' => $this->_timeField($startDate), // $this->setStartDate() + 'notAfter' => $this->_timeField($endDate) // $this->setEndDate() + ), + 'subject' => $subject->dn, + 'subjectPublicKeyInfo' => $subjectPublicKey + ), + 'signatureAlgorithm' => array('algorithm' => $signatureAlgorithm), + 'signature' => false // this is going to be overwritten later + ); + + // Copy extensions from CSR. + $csrexts = $subject->getAttribute('pkcs-9-at-extensionRequest', 0); + + if (!empty($csrexts)) { + $this->currentCert['tbsCertificate']['extensions'] = $csrexts; + } + } + + $this->currentCert['tbsCertificate']['issuer'] = $issuer->dn; + + if (isset($issuer->currentKeyIdentifier)) { + $this->setExtension('id-ce-authorityKeyIdentifier', array( + //'authorityCertIssuer' => array( + // array( + // 'directoryName' => $issuer->dn + // ) + //), + 'keyIdentifier' => $issuer->currentKeyIdentifier + )); + //$extensions = &$this->currentCert['tbsCertificate']['extensions']; + //if (isset($issuer->serialNumber)) { + // $extensions[count($extensions) - 1]['authorityCertSerialNumber'] = $issuer->serialNumber; + //} + //unset($extensions); + } + + if (isset($subject->currentKeyIdentifier)) { + $this->setExtension('id-ce-subjectKeyIdentifier', $subject->currentKeyIdentifier); + } + + $altName = array(); + + if (isset($subject->domains) && count($subject->domains) > 1) { + $altName = array_map(array('File_X509', '_dnsName'), $subject->domains); + } + + if (isset($subject->ipAddresses) && count($subject->ipAddresses)) { + // should an IP address appear as the CN if no domain name is specified? idk + //$ips = count($subject->domains) ? $subject->ipAddresses : array_slice($subject->ipAddresses, 1); + $ipAddresses = array(); + foreach ($subject->ipAddresses as $ipAddress) { + $encoded = $subject->_ipAddress($ipAddress); + if ($encoded !== false) { + $ipAddresses[] = $encoded; + } + } + if (count($ipAddresses)) { + $altName = array_merge($altName, $ipAddresses); + } + } + + if (!empty($altName)) { + $this->setExtension('id-ce-subjectAltName', $altName); + } + + if ($this->caFlag) { + $keyUsage = $this->getExtension('id-ce-keyUsage'); + if (!$keyUsage) { + $keyUsage = array(); + } + + $this->setExtension( + 'id-ce-keyUsage', + array_values(array_unique(array_merge($keyUsage, array('cRLSign', 'keyCertSign')))) + ); + + $basicConstraints = $this->getExtension('id-ce-basicConstraints'); + if (!$basicConstraints) { + $basicConstraints = array(); + } + + $this->setExtension( + 'id-ce-basicConstraints', + array_unique(array_merge(array('cA' => true), $basicConstraints)), + true + ); + + if (!isset($subject->currentKeyIdentifier)) { + $this->setExtension('id-ce-subjectKeyIdentifier', base64_encode($this->computeKeyIdentifier($this->currentCert)), false, false); + } + } + + // resync $this->signatureSubject + // save $tbsCertificate in case there are any File_ASN1_Element objects in it + $tbsCertificate = $this->currentCert['tbsCertificate']; + $this->loadX509($this->saveX509($this->currentCert)); + + $result = $this->_sign($issuer->privateKey, $signatureAlgorithm); + $result['tbsCertificate'] = $tbsCertificate; + + $this->currentCert = $currentCert; + $this->signatureSubject = $signatureSubject; + + return $result; + } + + /** + * Sign a CSR + * + * @access public + * @return mixed + */ + function signCSR($signatureAlgorithm = 'sha1WithRSAEncryption') + { + if (!is_object($this->privateKey) || empty($this->dn)) { + return false; + } + + $origPublicKey = $this->publicKey; + $class = get_class($this->privateKey); + $this->publicKey = new $class(); + $this->publicKey->loadKey($this->privateKey->getPublicKey()); + $this->publicKey->setPublicKey(); + if (!($publicKey = $this->_formatSubjectPublicKey())) { + return false; + } + $this->publicKey = $origPublicKey; + + $currentCert = isset($this->currentCert) ? $this->currentCert : null; + $signatureSubject = isset($this->signatureSubject) ? $this->signatureSubject: null; + + if (isset($this->currentCert) && is_array($this->currentCert) && isset($this->currentCert['certificationRequestInfo'])) { + $this->currentCert['signatureAlgorithm']['algorithm'] = $signatureAlgorithm; + if (!empty($this->dn)) { + $this->currentCert['certificationRequestInfo']['subject'] = $this->dn; + } + $this->currentCert['certificationRequestInfo']['subjectPKInfo'] = $publicKey; + } else { + $this->currentCert = array( + 'certificationRequestInfo' => + array( + 'version' => 'v1', + 'subject' => $this->dn, + 'subjectPKInfo' => $publicKey + ), + 'signatureAlgorithm' => array('algorithm' => $signatureAlgorithm), + 'signature' => false // this is going to be overwritten later + ); + } + + // resync $this->signatureSubject + // save $certificationRequestInfo in case there are any File_ASN1_Element objects in it + $certificationRequestInfo = $this->currentCert['certificationRequestInfo']; + $this->loadCSR($this->saveCSR($this->currentCert)); + + $result = $this->_sign($this->privateKey, $signatureAlgorithm); + $result['certificationRequestInfo'] = $certificationRequestInfo; + + $this->currentCert = $currentCert; + $this->signatureSubject = $signatureSubject; + + return $result; + } + + /** + * Sign a SPKAC + * + * @access public + * @return mixed + */ + function signSPKAC($signatureAlgorithm = 'sha1WithRSAEncryption') + { + if (!is_object($this->privateKey)) { + return false; + } + + $origPublicKey = $this->publicKey; + $class = get_class($this->privateKey); + $this->publicKey = new $class(); + $this->publicKey->loadKey($this->privateKey->getPublicKey()); + $this->publicKey->setPublicKey(); + $publicKey = $this->_formatSubjectPublicKey(); + if (!$publicKey) { + return false; + } + $this->publicKey = $origPublicKey; + + $currentCert = isset($this->currentCert) ? $this->currentCert : null; + $signatureSubject = isset($this->signatureSubject) ? $this->signatureSubject: null; + + // re-signing a SPKAC seems silly but since everything else supports re-signing why not? + if (isset($this->currentCert) && is_array($this->currentCert) && isset($this->currentCert['publicKeyAndChallenge'])) { + $this->currentCert['signatureAlgorithm']['algorithm'] = $signatureAlgorithm; + $this->currentCert['publicKeyAndChallenge']['spki'] = $publicKey; + if (!empty($this->challenge)) { + // the bitwise AND ensures that the output is a valid IA5String + $this->currentCert['publicKeyAndChallenge']['challenge'] = $this->challenge & str_repeat("\x7F", strlen($this->challenge)); + } + } else { + $this->currentCert = array( + 'publicKeyAndChallenge' => + array( + 'spki' => $publicKey, + // quoting , + // "A challenge string that is submitted along with the public key. Defaults to an empty string if not specified." + // both Firefox and OpenSSL ("openssl spkac -key private.key") behave this way + // we could alternatively do this instead if we ignored the specs: + // crypt_random_string(8) & str_repeat("\x7F", 8) + 'challenge' => !empty($this->challenge) ? $this->challenge : '' + ), + 'signatureAlgorithm' => array('algorithm' => $signatureAlgorithm), + 'signature' => false // this is going to be overwritten later + ); + } + + // resync $this->signatureSubject + // save $publicKeyAndChallenge in case there are any File_ASN1_Element objects in it + $publicKeyAndChallenge = $this->currentCert['publicKeyAndChallenge']; + $this->loadSPKAC($this->saveSPKAC($this->currentCert)); + + $result = $this->_sign($this->privateKey, $signatureAlgorithm); + $result['publicKeyAndChallenge'] = $publicKeyAndChallenge; + + $this->currentCert = $currentCert; + $this->signatureSubject = $signatureSubject; + + return $result; + } + + /** + * Sign a CRL + * + * $issuer's private key needs to be loaded. + * + * @param File_X509 $issuer + * @param File_X509 $crl + * @param string $signatureAlgorithm optional + * @access public + * @return mixed + */ + function signCRL($issuer, $crl, $signatureAlgorithm = 'sha1WithRSAEncryption') + { + if (!is_object($issuer->privateKey) || empty($issuer->dn)) { + return false; + } + + $currentCert = isset($this->currentCert) ? $this->currentCert : null; + $signatureSubject = isset($this->signatureSubject) ? $this->signatureSubject : null; + $thisUpdate = !empty($this->startDate) ? $this->startDate : @date('D, d M Y H:i:s O'); + + if (isset($crl->currentCert) && is_array($crl->currentCert) && isset($crl->currentCert['tbsCertList'])) { + $this->currentCert = $crl->currentCert; + $this->currentCert['tbsCertList']['signature']['algorithm'] = $signatureAlgorithm; + $this->currentCert['signatureAlgorithm']['algorithm'] = $signatureAlgorithm; + } else { + $this->currentCert = array( + 'tbsCertList' => + array( + 'version' => 'v2', + 'signature' => array('algorithm' => $signatureAlgorithm), + 'issuer' => false, // this is going to be overwritten later + 'thisUpdate' => $this->_timeField($thisUpdate) // $this->setStartDate() + ), + 'signatureAlgorithm' => array('algorithm' => $signatureAlgorithm), + 'signature' => false // this is going to be overwritten later + ); + } + + $tbsCertList = &$this->currentCert['tbsCertList']; + $tbsCertList['issuer'] = $issuer->dn; + $tbsCertList['thisUpdate'] = $this->_timeField($thisUpdate); + + if (!empty($this->endDate)) { + $tbsCertList['nextUpdate'] = $this->_timeField($this->endDate); // $this->setEndDate() + } else { + unset($tbsCertList['nextUpdate']); + } + + if (!empty($this->serialNumber)) { + $crlNumber = $this->serialNumber; + } else { + $crlNumber = $this->getExtension('id-ce-cRLNumber'); + // "The CRL number is a non-critical CRL extension that conveys a + // monotonically increasing sequence number for a given CRL scope and + // CRL issuer. This extension allows users to easily determine when a + // particular CRL supersedes another CRL." + // -- https://tools.ietf.org/html/rfc5280#section-5.2.3 + $crlNumber = $crlNumber !== false ? $crlNumber->add(new Math_BigInteger(1)) : null; + } + + $this->removeExtension('id-ce-authorityKeyIdentifier'); + $this->removeExtension('id-ce-issuerAltName'); + + // Be sure version >= v2 if some extension found. + $version = isset($tbsCertList['version']) ? $tbsCertList['version'] : 0; + if (!$version) { + if (!empty($tbsCertList['crlExtensions'])) { + $version = 1; // v2. + } elseif (!empty($tbsCertList['revokedCertificates'])) { + foreach ($tbsCertList['revokedCertificates'] as $cert) { + if (!empty($cert['crlEntryExtensions'])) { + $version = 1; // v2. + } + } + } + + if ($version) { + $tbsCertList['version'] = $version; + } + } + + // Store additional extensions. + if (!empty($tbsCertList['version'])) { // At least v2. + if (!empty($crlNumber)) { + $this->setExtension('id-ce-cRLNumber', $crlNumber); + } + + if (isset($issuer->currentKeyIdentifier)) { + $this->setExtension('id-ce-authorityKeyIdentifier', array( + //'authorityCertIssuer' => array( + // array( + // 'directoryName' => $issuer->dn + // ) + //), + 'keyIdentifier' => $issuer->currentKeyIdentifier + )); + //$extensions = &$tbsCertList['crlExtensions']; + //if (isset($issuer->serialNumber)) { + // $extensions[count($extensions) - 1]['authorityCertSerialNumber'] = $issuer->serialNumber; + //} + //unset($extensions); + } + + $issuerAltName = $this->getExtension('id-ce-subjectAltName', $issuer->currentCert); + + if ($issuerAltName !== false) { + $this->setExtension('id-ce-issuerAltName', $issuerAltName); + } + } + + if (empty($tbsCertList['revokedCertificates'])) { + unset($tbsCertList['revokedCertificates']); + } + + unset($tbsCertList); + + // resync $this->signatureSubject + // save $tbsCertList in case there are any File_ASN1_Element objects in it + $tbsCertList = $this->currentCert['tbsCertList']; + $this->loadCRL($this->saveCRL($this->currentCert)); + + $result = $this->_sign($issuer->privateKey, $signatureAlgorithm); + $result['tbsCertList'] = $tbsCertList; + + $this->currentCert = $currentCert; + $this->signatureSubject = $signatureSubject; + + return $result; + } + + /** + * X.509 certificate signing helper function. + * + * @param object $key + * @param File_X509 $subject + * @param string $signatureAlgorithm + * @access public + * @return mixed + */ + function _sign($key, $signatureAlgorithm) + { + switch (strtolower(get_class($key))) { + case 'crypt_rsa': + switch ($signatureAlgorithm) { + case 'md2WithRSAEncryption': + case 'md5WithRSAEncryption': + case 'sha1WithRSAEncryption': + case 'sha224WithRSAEncryption': + case 'sha256WithRSAEncryption': + case 'sha384WithRSAEncryption': + case 'sha512WithRSAEncryption': + $key->setHash(preg_replace('#WithRSAEncryption$#', '', $signatureAlgorithm)); + $key->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1); + + $this->currentCert['signature'] = base64_encode("\0" . $key->sign($this->signatureSubject)); + return $this->currentCert; + } + default: + return false; + } + } + + /** + * Set certificate start date + * + * @param string $date + * @access public + */ + function setStartDate($date) + { + $this->startDate = @date('D, d M Y H:i:s O', @strtotime($date)); + } + + /** + * Set certificate end date + * + * @param string $date + * @access public + */ + function setEndDate($date) + { + /* + To indicate that a certificate has no well-defined expiration date, + the notAfter SHOULD be assigned the GeneralizedTime value of + 99991231235959Z. + + -- http://tools.ietf.org/html/rfc5280#section-4.1.2.5 + */ + if (strtolower($date) == 'lifetime') { + $temp = '99991231235959Z'; + $asn1 = new File_ASN1(); + $temp = chr(FILE_ASN1_TYPE_GENERALIZED_TIME) . $asn1->_encodeLength(strlen($temp)) . $temp; + $this->endDate = new File_ASN1_Element($temp); + } else { + $this->endDate = @date('D, d M Y H:i:s O', @strtotime($date)); + } + } + + /** + * Set Serial Number + * + * @param string $serial + * @param $base optional + * @access public + */ + function setSerialNumber($serial, $base = -256) + { + $this->serialNumber = new Math_BigInteger($serial, $base); + } + + /** + * Turns the certificate into a certificate authority + * + * @access public + */ + function makeCA() + { + $this->caFlag = true; + } + + /** + * Check for validity of subarray + * + * This is intended for use in conjunction with _subArrayUnchecked(), + * implementing the checks included in _subArray() but without copying + * a potentially large array by passing its reference by-value to is_array(). + * + * @param array $root + * @param string $path + * @return boolean + * @access private + */ + function _isSubArrayValid($root, $path) + { + if (!is_array($root)) { + return false; + } + + foreach (explode('/', $path) as $i) { + if (!is_array($root)) { + return false; + } + + if (!isset($root[$i])) { + return true; + } + + $root = $root[$i]; + } + + return true; + } + + /** + * Get a reference to a subarray + * + * This variant of _subArray() does no is_array() checking, + * so $root should be checked with _isSubArrayValid() first. + * + * This is here for performance reasons: + * Passing a reference (i.e. $root) by-value (i.e. to is_array()) + * creates a copy. If $root is an especially large array, this is expensive. + * + * @param array $root + * @param string $path absolute path with / as component separator + * @param bool $create optional + * @access private + * @return array|false + */ + function &_subArrayUnchecked(&$root, $path, $create = false) + { + $false = false; + + foreach (explode('/', $path) as $i) { + if (!isset($root[$i])) { + if (!$create) { + return $false; + } + + $root[$i] = array(); + } + + $root = &$root[$i]; + } + + return $root; + } + + /** + * Get a reference to a subarray + * + * @param array $root + * @param string $path absolute path with / as component separator + * @param bool $create optional + * @access private + * @return array|false + */ + function &_subArray(&$root, $path, $create = false) + { + $false = false; + + if (!is_array($root)) { + return $false; + } + + foreach (explode('/', $path) as $i) { + if (!is_array($root)) { + return $false; + } + + if (!isset($root[$i])) { + if (!$create) { + return $false; + } + + $root[$i] = array(); + } + + $root = &$root[$i]; + } + + return $root; + } + + /** + * Get a reference to an extension subarray + * + * @param array $root + * @param string $path optional absolute path with / as component separator + * @param bool $create optional + * @access private + * @return array|false + */ + function &_extensions(&$root, $path = null, $create = false) + { + if (!isset($root)) { + $root = $this->currentCert; + } + + switch (true) { + case !empty($path): + case !is_array($root): + break; + case isset($root['tbsCertificate']): + $path = 'tbsCertificate/extensions'; + break; + case isset($root['tbsCertList']): + $path = 'tbsCertList/crlExtensions'; + break; + case isset($root['certificationRequestInfo']): + $pth = 'certificationRequestInfo/attributes'; + $attributes = &$this->_subArray($root, $pth, $create); + + if (is_array($attributes)) { + foreach ($attributes as $key => $value) { + if ($value['type'] == 'pkcs-9-at-extensionRequest') { + $path = "$pth/$key/value/0"; + break 2; + } + } + if ($create) { + $key = count($attributes); + $attributes[] = array('type' => 'pkcs-9-at-extensionRequest', 'value' => array()); + $path = "$pth/$key/value/0"; + } + } + break; + } + + $extensions = &$this->_subArray($root, $path, $create); + + if (!is_array($extensions)) { + $false = false; + return $false; + } + + return $extensions; + } + + /** + * Remove an Extension + * + * @param string $id + * @param string $path optional + * @access private + * @return bool + */ + function _removeExtension($id, $path = null) + { + $extensions = &$this->_extensions($this->currentCert, $path); + + if (!is_array($extensions)) { + return false; + } + + $result = false; + foreach ($extensions as $key => $value) { + if ($value['extnId'] == $id) { + unset($extensions[$key]); + $result = true; + } + } + + $extensions = array_values($extensions); + return $result; + } + + /** + * Get an Extension + * + * Returns the extension if it exists and false if not + * + * @param string $id + * @param array $cert optional + * @param string $path optional + * @access private + * @return mixed + */ + function _getExtension($id, $cert = null, $path = null) + { + $extensions = $this->_extensions($cert, $path); + + if (!is_array($extensions)) { + return false; + } + + foreach ($extensions as $key => $value) { + if ($value['extnId'] == $id) { + return $value['extnValue']; + } + } + + return false; + } + + /** + * Returns a list of all extensions in use + * + * @param array $cert optional + * @param string $path optional + * @access private + * @return array + */ + function _getExtensions($cert = null, $path = null) + { + $exts = $this->_extensions($cert, $path); + $extensions = array(); + + if (is_array($exts)) { + foreach ($exts as $extension) { + $extensions[] = $extension['extnId']; + } + } + + return $extensions; + } + + /** + * Set an Extension + * + * @param string $id + * @param mixed $value + * @param bool $critical optional + * @param bool $replace optional + * @param string $path optional + * @access private + * @return bool + */ + function _setExtension($id, $value, $critical = false, $replace = true, $path = null) + { + $extensions = &$this->_extensions($this->currentCert, $path, true); + + if (!is_array($extensions)) { + return false; + } + + $newext = array('extnId' => $id, 'critical' => $critical, 'extnValue' => $value); + + foreach ($extensions as $key => $value) { + if ($value['extnId'] == $id) { + if (!$replace) { + return false; + } + + $extensions[$key] = $newext; + return true; + } + } + + $extensions[] = $newext; + return true; + } + + /** + * Remove a certificate, CSR or CRL Extension + * + * @param string $id + * @access public + * @return bool + */ + function removeExtension($id) + { + return $this->_removeExtension($id); + } + + /** + * Get a certificate, CSR or CRL Extension + * + * Returns the extension if it exists and false if not + * + * @param string $id + * @param array $cert optional + * @access public + * @return mixed + */ + function getExtension($id, $cert = null) + { + return $this->_getExtension($id, $cert); + } + + /** + * Returns a list of all extensions in use in certificate, CSR or CRL + * + * @param array $cert optional + * @access public + * @return array + */ + function getExtensions($cert = null) + { + return $this->_getExtensions($cert); + } + + /** + * Set a certificate, CSR or CRL Extension + * + * @param string $id + * @param mixed $value + * @param bool $critical optional + * @param bool $replace optional + * @access public + * @return bool + */ + function setExtension($id, $value, $critical = false, $replace = true) + { + return $this->_setExtension($id, $value, $critical, $replace); + } + + /** + * Remove a CSR attribute. + * + * @param string $id + * @param int $disposition optional + * @access public + * @return bool + */ + function removeAttribute($id, $disposition = FILE_X509_ATTR_ALL) + { + $attributes = &$this->_subArray($this->currentCert, 'certificationRequestInfo/attributes'); + + if (!is_array($attributes)) { + return false; + } + + $result = false; + foreach ($attributes as $key => $attribute) { + if ($attribute['type'] == $id) { + $n = count($attribute['value']); + switch (true) { + case $disposition == FILE_X509_ATTR_APPEND: + case $disposition == FILE_X509_ATTR_REPLACE: + return false; + case $disposition >= $n: + $disposition -= $n; + break; + case $disposition == FILE_X509_ATTR_ALL: + case $n == 1: + unset($attributes[$key]); + $result = true; + break; + default: + unset($attributes[$key]['value'][$disposition]); + $attributes[$key]['value'] = array_values($attributes[$key]['value']); + $result = true; + break; + } + if ($result && $disposition != FILE_X509_ATTR_ALL) { + break; + } + } + } + + $attributes = array_values($attributes); + return $result; + } + + /** + * Get a CSR attribute + * + * Returns the attribute if it exists and false if not + * + * @param string $id + * @param int $disposition optional + * @param array $csr optional + * @access public + * @return mixed + */ + function getAttribute($id, $disposition = FILE_X509_ATTR_ALL, $csr = null) + { + if (empty($csr)) { + $csr = $this->currentCert; + } + + $attributes = $this->_subArray($csr, 'certificationRequestInfo/attributes'); + + if (!is_array($attributes)) { + return false; + } + + foreach ($attributes as $key => $attribute) { + if ($attribute['type'] == $id) { + $n = count($attribute['value']); + switch (true) { + case $disposition == FILE_X509_ATTR_APPEND: + case $disposition == FILE_X509_ATTR_REPLACE: + return false; + case $disposition == FILE_X509_ATTR_ALL: + return $attribute['value']; + case $disposition >= $n: + $disposition -= $n; + break; + default: + return $attribute['value'][$disposition]; + } + } + } + + return false; + } + + /** + * Returns a list of all CSR attributes in use + * + * @param array $csr optional + * @access public + * @return array + */ + function getAttributes($csr = null) + { + if (empty($csr)) { + $csr = $this->currentCert; + } + + $attributes = $this->_subArray($csr, 'certificationRequestInfo/attributes'); + $attrs = array(); + + if (is_array($attributes)) { + foreach ($attributes as $attribute) { + $attrs[] = $attribute['type']; + } + } + + return $attrs; + } + + /** + * Set a CSR attribute + * + * @param string $id + * @param mixed $value + * @param bool $disposition optional + * @access public + * @return bool + */ + function setAttribute($id, $value, $disposition = FILE_X509_ATTR_ALL) + { + $attributes = &$this->_subArray($this->currentCert, 'certificationRequestInfo/attributes', true); + + if (!is_array($attributes)) { + return false; + } + + switch ($disposition) { + case FILE_X509_ATTR_REPLACE: + $disposition = FILE_X509_ATTR_APPEND; + case FILE_X509_ATTR_ALL: + $this->removeAttribute($id); + break; + } + + foreach ($attributes as $key => $attribute) { + if ($attribute['type'] == $id) { + $n = count($attribute['value']); + switch (true) { + case $disposition == FILE_X509_ATTR_APPEND: + $last = $key; + break; + case $disposition >= $n: + $disposition -= $n; + break; + default: + $attributes[$key]['value'][$disposition] = $value; + return true; + } + } + } + + switch (true) { + case $disposition >= 0: + return false; + case isset($last): + $attributes[$last]['value'][] = $value; + break; + default: + $attributes[] = array('type' => $id, 'value' => $disposition == FILE_X509_ATTR_ALL ? $value: array($value)); + break; + } + + return true; + } + + /** + * Sets the subject key identifier + * + * This is used by the id-ce-authorityKeyIdentifier and the id-ce-subjectKeyIdentifier extensions. + * + * @param string $value + * @access public + */ + function setKeyIdentifier($value) + { + if (empty($value)) { + unset($this->currentKeyIdentifier); + } else { + $this->currentKeyIdentifier = base64_encode($value); + } + } + + /** + * Compute a public key identifier. + * + * Although key identifiers may be set to any unique value, this function + * computes key identifiers from public key according to the two + * recommended methods (4.2.1.2 RFC 3280). + * Highly polymorphic: try to accept all possible forms of key: + * - Key object + * - File_X509 object with public or private key defined + * - Certificate or CSR array + * - File_ASN1_Element object + * - PEM or DER string + * + * @param mixed $key optional + * @param int $method optional + * @access public + * @return string binary key identifier + */ + function computeKeyIdentifier($key = null, $method = 1) + { + if (is_null($key)) { + $key = $this; + } + + switch (true) { + case is_string($key): + break; + case is_array($key) && isset($key['tbsCertificate']['subjectPublicKeyInfo']['subjectPublicKey']): + return $this->computeKeyIdentifier($key['tbsCertificate']['subjectPublicKeyInfo']['subjectPublicKey'], $method); + case is_array($key) && isset($key['certificationRequestInfo']['subjectPKInfo']['subjectPublicKey']): + return $this->computeKeyIdentifier($key['certificationRequestInfo']['subjectPKInfo']['subjectPublicKey'], $method); + case !is_object($key): + return false; + case strtolower(get_class($key)) == 'file_asn1_element': + // Assume the element is a bitstring-packed key. + $asn1 = new File_ASN1(); + $decoded = $asn1->decodeBER($key->element); + if (empty($decoded)) { + return false; + } + $raw = $asn1->asn1map($decoded[0], array('type' => FILE_ASN1_TYPE_BIT_STRING)); + if (empty($raw)) { + return false; + } + $raw = base64_decode($raw); + // If the key is private, compute identifier from its corresponding public key. + if (!class_exists('Crypt_RSA')) { + include_once 'Crypt/RSA.php'; + } + $key = new Crypt_RSA(); + if (!$key->loadKey($raw)) { + return false; // Not an unencrypted RSA key. + } + if ($key->getPrivateKey() !== false) { // If private. + return $this->computeKeyIdentifier($key, $method); + } + $key = $raw; // Is a public key. + break; + case strtolower(get_class($key)) == 'file_x509': + if (isset($key->publicKey)) { + return $this->computeKeyIdentifier($key->publicKey, $method); + } + if (isset($key->privateKey)) { + return $this->computeKeyIdentifier($key->privateKey, $method); + } + if (isset($key->currentCert['tbsCertificate']) || isset($key->currentCert['certificationRequestInfo'])) { + return $this->computeKeyIdentifier($key->currentCert, $method); + } + return false; + default: // Should be a key object (i.e.: Crypt_RSA). + $key = $key->getPublicKey(CRYPT_RSA_PUBLIC_FORMAT_PKCS1); + break; + } + + // If in PEM format, convert to binary. + $key = $this->_extractBER($key); + + // Now we have the key string: compute its sha-1 sum. + if (!class_exists('Crypt_Hash')) { + include_once 'Crypt/Hash.php'; + } + $hash = new Crypt_Hash('sha1'); + $hash = $hash->hash($key); + + if ($method == 2) { + $hash = substr($hash, -8); + $hash[0] = chr((ord($hash[0]) & 0x0F) | 0x40); + } + + return $hash; + } + + /** + * Format a public key as appropriate + * + * @access private + * @return array + */ + function _formatSubjectPublicKey() + { + if (!isset($this->publicKey) || !is_object($this->publicKey)) { + return false; + } + + switch (strtolower(get_class($this->publicKey))) { + case 'crypt_rsa': + // the following two return statements do the same thing. i dunno.. i just prefer the later for some reason. + // the former is a good example of how to do fuzzing on the public key + //return new File_ASN1_Element(base64_decode(preg_replace('#-.+-|[\r\n]#', '', $this->publicKey->getPublicKey()))); + return array( + 'algorithm' => array('algorithm' => 'rsaEncryption'), + 'subjectPublicKey' => $this->publicKey->getPublicKey(CRYPT_RSA_PUBLIC_FORMAT_PKCS1) + ); + default: + return false; + } + } + + /** + * Set the domain name's which the cert is to be valid for + * + * @access public + * @return array + */ + function setDomain() + { + $this->domains = func_get_args(); + $this->removeDNProp('id-at-commonName'); + $this->setDNProp('id-at-commonName', $this->domains[0]); + } + + /** + * Set the IP Addresses's which the cert is to be valid for + * + * @access public + * @param string $ipAddress optional + */ + function setIPAddress() + { + $this->ipAddresses = func_get_args(); + /* + if (!isset($this->domains)) { + $this->removeDNProp('id-at-commonName'); + $this->setDNProp('id-at-commonName', $this->ipAddresses[0]); + } + */ + } + + /** + * Helper function to build domain array + * + * @access private + * @param string $domain + * @return array + */ + function _dnsName($domain) + { + return array('dNSName' => $domain); + } + + /** + * Helper function to build IP Address array + * + * (IPv6 is not currently supported) + * + * @access private + * @param string $address + * @return array + */ + function _iPAddress($address) + { + return array('iPAddress' => $address); + } + + /** + * Get the index of a revoked certificate. + * + * @param array $rclist + * @param string $serial + * @param bool $create optional + * @access private + * @return int|false + */ + function _revokedCertificate(&$rclist, $serial, $create = false) + { + $serial = new Math_BigInteger($serial); + + foreach ($rclist as $i => $rc) { + if (!($serial->compare($rc['userCertificate']))) { + return $i; + } + } + + if (!$create) { + return false; + } + + $i = count($rclist); + $rclist[] = array('userCertificate' => $serial, + 'revocationDate' => $this->_timeField(@date('D, d M Y H:i:s O'))); + return $i; + } + + /** + * Revoke a certificate. + * + * @param string $serial + * @param string $date optional + * @access public + * @return bool + */ + function revoke($serial, $date = null) + { + if (isset($this->currentCert['tbsCertList'])) { + if (is_array($rclist = &$this->_subArray($this->currentCert, 'tbsCertList/revokedCertificates', true))) { + if ($this->_revokedCertificate($rclist, $serial) === false) { // If not yet revoked + if (($i = $this->_revokedCertificate($rclist, $serial, true)) !== false) { + if (!empty($date)) { + $rclist[$i]['revocationDate'] = $this->_timeField($date); + } + + return true; + } + } + } + } + + return false; + } + + /** + * Unrevoke a certificate. + * + * @param string $serial + * @access public + * @return bool + */ + function unrevoke($serial) + { + if (is_array($rclist = &$this->_subArray($this->currentCert, 'tbsCertList/revokedCertificates'))) { + if (($i = $this->_revokedCertificate($rclist, $serial)) !== false) { + unset($rclist[$i]); + $rclist = array_values($rclist); + return true; + } + } + + return false; + } + + /** + * Get a revoked certificate. + * + * @param string $serial + * @access public + * @return mixed + */ + function getRevoked($serial) + { + if (is_array($rclist = $this->_subArray($this->currentCert, 'tbsCertList/revokedCertificates'))) { + if (($i = $this->_revokedCertificate($rclist, $serial)) !== false) { + return $rclist[$i]; + } + } + + return false; + } + + /** + * List revoked certificates + * + * @param array $crl optional + * @access public + * @return array + */ + function listRevoked($crl = null) + { + if (!isset($crl)) { + $crl = $this->currentCert; + } + + if (!isset($crl['tbsCertList'])) { + return false; + } + + $result = array(); + + if (is_array($rclist = $this->_subArray($crl, 'tbsCertList/revokedCertificates'))) { + foreach ($rclist as $rc) { + $result[] = $rc['userCertificate']->toString(); + } + } + + return $result; + } + + /** + * Remove a Revoked Certificate Extension + * + * @param string $serial + * @param string $id + * @access public + * @return bool + */ + function removeRevokedCertificateExtension($serial, $id) + { + if (is_array($rclist = &$this->_subArray($this->currentCert, 'tbsCertList/revokedCertificates'))) { + if (($i = $this->_revokedCertificate($rclist, $serial)) !== false) { + return $this->_removeExtension($id, "tbsCertList/revokedCertificates/$i/crlEntryExtensions"); + } + } + + return false; + } + + /** + * Get a Revoked Certificate Extension + * + * Returns the extension if it exists and false if not + * + * @param string $serial + * @param string $id + * @param array $crl optional + * @access public + * @return mixed + */ + function getRevokedCertificateExtension($serial, $id, $crl = null) + { + if (!isset($crl)) { + $crl = $this->currentCert; + } + + if (is_array($rclist = $this->_subArray($crl, 'tbsCertList/revokedCertificates'))) { + if (($i = $this->_revokedCertificate($rclist, $serial)) !== false) { + return $this->_getExtension($id, $crl, "tbsCertList/revokedCertificates/$i/crlEntryExtensions"); + } + } + + return false; + } + + /** + * Returns a list of all extensions in use for a given revoked certificate + * + * @param string $serial + * @param array $crl optional + * @access public + * @return array + */ + function getRevokedCertificateExtensions($serial, $crl = null) + { + if (!isset($crl)) { + $crl = $this->currentCert; + } + + if (is_array($rclist = $this->_subArray($crl, 'tbsCertList/revokedCertificates'))) { + if (($i = $this->_revokedCertificate($rclist, $serial)) !== false) { + return $this->_getExtensions($crl, "tbsCertList/revokedCertificates/$i/crlEntryExtensions"); + } + } + + return false; + } + + /** + * Set a Revoked Certificate Extension + * + * @param string $serial + * @param string $id + * @param mixed $value + * @param bool $critical optional + * @param bool $replace optional + * @access public + * @return bool + */ + function setRevokedCertificateExtension($serial, $id, $value, $critical = false, $replace = true) + { + if (isset($this->currentCert['tbsCertList'])) { + if (is_array($rclist = &$this->_subArray($this->currentCert, 'tbsCertList/revokedCertificates', true))) { + if (($i = $this->_revokedCertificate($rclist, $serial, true)) !== false) { + return $this->_setExtension($id, $value, $critical, $replace, "tbsCertList/revokedCertificates/$i/crlEntryExtensions"); + } + } + } + + return false; + } + + /** + * Extract raw BER from Base64 encoding + * + * @access private + * @param string $str + * @return string + */ + function _extractBER($str) + { + /* X.509 certs are assumed to be base64 encoded but sometimes they'll have additional things in them + * above and beyond the ceritificate. + * ie. some may have the following preceding the -----BEGIN CERTIFICATE----- line: + * + * Bag Attributes + * localKeyID: 01 00 00 00 + * subject=/O=organization/OU=org unit/CN=common name + * issuer=/O=organization/CN=common name + */ + $temp = preg_replace('#.*?^-+[^-]+-+[\r\n ]*$#ms', '', $str, 1); + // remove the -----BEGIN CERTIFICATE----- and -----END CERTIFICATE----- stuff + $temp = preg_replace('#-+[^-]+-+#', '', $temp); + // remove new lines + $temp = str_replace(array("\r", "\n", ' '), '', $temp); + $temp = preg_match('#^[a-zA-Z\d/+]*={0,2}$#', $temp) ? base64_decode($temp) : false; + return $temp != false ? $temp : $str; + } + + /** + * Returns the OID corresponding to a name + * + * What's returned in the associative array returned by loadX509() (or load*()) is either a name or an OID if + * no OID to name mapping is available. The problem with this is that what may be an unmapped OID in one version + * of phpseclib may not be unmapped in the next version, so apps that are looking at this OID may not be able + * to work from version to version. + * + * This method will return the OID if a name is passed to it and if no mapping is avialable it'll assume that + * what's being passed to it already is an OID and return that instead. A few examples. + * + * getOID('2.16.840.1.101.3.4.2.1') == '2.16.840.1.101.3.4.2.1' + * getOID('id-sha256') == '2.16.840.1.101.3.4.2.1' + * getOID('zzz') == 'zzz' + * + * @access public + * @return string + */ + function getOID($name) + { + static $reverseMap; + if (!isset($reverseMap)) { + $reverseMap = array_flip($this->oids); + } + return isset($reverseMap[$name]) ? $reverseMap[$name] : $name; + } +} diff --git a/plugins/updraftplus/includes/phpseclib/Math/BigInteger.php b/plugins/updraftplus/includes/phpseclib/Math/BigInteger.php new file mode 100644 index 0000000..192ce82 --- /dev/null +++ b/plugins/updraftplus/includes/phpseclib/Math/BigInteger.php @@ -0,0 +1,3804 @@ +> and << cannot be used, nor can the modulo operator %, + * which only supports integers. Although this fact will slow this library down, the fact that such a high + * base is being used should more than compensate. + * + * Numbers are stored in {@link http://en.wikipedia.org/wiki/Endianness little endian} format. ie. + * (new Math_BigInteger(pow(2, 26)))->value = array(0, 1) + * + * Useful resources are as follows: + * + * - {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf Handbook of Applied Cryptography (HAC)} + * - {@link http://math.libtomcrypt.com/files/tommath.pdf Multi-Precision Math (MPM)} + * - Java's BigInteger classes. See /j2se/src/share/classes/java/math in jdk-1_5_0-src-jrl.zip + * + * Here's an example of how to use this library: + * + * add($b); + * + * echo $c->toString(); // outputs 5 + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Math + * @package Math_BigInteger + * @author Jim Wigginton + * @copyright 2006 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://pear.php.net/package/Math_BigInteger + */ + +/**#@+ + * Reduction constants + * + * @access private + * @see self::_reduce() + */ +/** + * @see self::_montgomery() + * @see self::_prepMontgomery() + */ +define('MATH_BIGINTEGER_MONTGOMERY', 0); +/** + * @see self::_barrett() + */ +define('MATH_BIGINTEGER_BARRETT', 1); +/** + * @see self::_mod2() + */ +define('MATH_BIGINTEGER_POWEROF2', 2); +/** + * @see self::_remainder() + */ +define('MATH_BIGINTEGER_CLASSIC', 3); +/** + * @see self::__clone() + */ +define('MATH_BIGINTEGER_NONE', 4); +/**#@-*/ + +/**#@+ + * Array constants + * + * Rather than create a thousands and thousands of new Math_BigInteger objects in repeated function calls to add() and + * multiply() or whatever, we'll just work directly on arrays, taking them in as parameters and returning them. + * + * @access private + */ +/** + * $result[MATH_BIGINTEGER_VALUE] contains the value. + */ +define('MATH_BIGINTEGER_VALUE', 0); +/** + * $result[MATH_BIGINTEGER_SIGN] contains the sign. + */ +define('MATH_BIGINTEGER_SIGN', 1); +/**#@-*/ + +/**#@+ + * @access private + * @see self::_montgomery() + * @see self::_barrett() + */ +/** + * Cache constants + * + * $cache[MATH_BIGINTEGER_VARIABLE] tells us whether or not the cached data is still valid. + */ +define('MATH_BIGINTEGER_VARIABLE', 0); +/** + * $cache[MATH_BIGINTEGER_DATA] contains the cached data. + */ +define('MATH_BIGINTEGER_DATA', 1); +/**#@-*/ + +/**#@+ + * Mode constants. + * + * @access private + * @see self::Math_BigInteger() + */ +/** + * To use the pure-PHP implementation + */ +define('MATH_BIGINTEGER_MODE_INTERNAL', 1); +/** + * To use the BCMath library + * + * (if enabled; otherwise, the internal implementation will be used) + */ +define('MATH_BIGINTEGER_MODE_BCMATH', 2); +/** + * To use the GMP library + * + * (if present; otherwise, either the BCMath or the internal implementation will be used) + */ +define('MATH_BIGINTEGER_MODE_GMP', 3); +/**#@-*/ + +/** + * Karatsuba Cutoff + * + * At what point do we switch between Karatsuba multiplication and schoolbook long multiplication? + * + * @access private + */ +define('MATH_BIGINTEGER_KARATSUBA_CUTOFF', 25); + +/** + * Pure-PHP arbitrary precision integer arithmetic library. Supports base-2, base-10, base-16, and base-256 + * numbers. + * + * @package Math_BigInteger + * @author Jim Wigginton + * @access public + */ +class Math_BigInteger +{ + /** + * Holds the BigInteger's value. + * + * @var array + * @access private + */ + var $value; + + /** + * Holds the BigInteger's magnitude. + * + * @var bool + * @access private + */ + var $is_negative = false; + + /** + * Precision + * + * @see self::setPrecision() + * @access private + */ + var $precision = -1; + + /** + * Precision Bitmask + * + * @see self::setPrecision() + * @access private + */ + var $bitmask = false; + + /** + * Mode independent value used for serialization. + * + * If the bcmath or gmp extensions are installed $this->value will be a non-serializable resource, hence the need for + * a variable that'll be serializable regardless of whether or not extensions are being used. Unlike $this->value, + * however, $this->hex is only calculated when $this->__sleep() is called. + * + * @see self::__sleep() + * @see self::__wakeup() + * @var string + * @access private + */ + var $hex; + + /** + * Converts base-2, base-10, base-16, and binary strings (base-256) to BigIntegers. + * + * If the second parameter - $base - is negative, then it will be assumed that the number's are encoded using + * two's compliment. The sole exception to this is -10, which is treated the same as 10 is. + * + * Here's an example: + * + * toString(); // outputs 50 + * ?> + * + * + * @param $x base-10 number or base-$base number if $base set. + * @param int $base + * @return Math_BigInteger + * @access public + */ + function __construct($x = 0, $base = 10) + { + if (!defined('MATH_BIGINTEGER_MODE')) { + switch (true) { + case extension_loaded('gmp'): + define('MATH_BIGINTEGER_MODE', MATH_BIGINTEGER_MODE_GMP); + break; + case extension_loaded('bcmath'): + define('MATH_BIGINTEGER_MODE', MATH_BIGINTEGER_MODE_BCMATH); + break; + default: + define('MATH_BIGINTEGER_MODE', MATH_BIGINTEGER_MODE_INTERNAL); + } + } + + if (extension_loaded('openssl') && !defined('MATH_BIGINTEGER_OPENSSL_DISABLE') && !defined('MATH_BIGINTEGER_OPENSSL_ENABLED')) { + // some versions of XAMPP have mismatched versions of OpenSSL which causes it not to work + ob_start(); + @phpinfo(); + $content = ob_get_contents(); + ob_end_clean(); + + preg_match_all('#OpenSSL (Header|Library) Version(.*)#im', $content, $matches); + + $versions = array(); + if (!empty($matches[1])) { + for ($i = 0; $i < count($matches[1]); $i++) { + $fullVersion = trim(str_replace('=>', '', strip_tags($matches[2][$i]))); + + // Remove letter part in OpenSSL version + if (!preg_match('/(\d+\.\d+\.\d+)/i', $fullVersion, $m)) { + $versions[$matches[1][$i]] = $fullVersion; + } else { + $versions[$matches[1][$i]] = $m[0]; + } + } + } + + // it doesn't appear that OpenSSL versions were reported upon until PHP 5.3+ + switch (true) { + case !isset($versions['Header']): + case !isset($versions['Library']): + case $versions['Header'] == $versions['Library']: + case version_compare($versions['Header'], '1.0.0') >= 0 && version_compare($versions['Library'], '1.0.0') >= 0: + define('MATH_BIGINTEGER_OPENSSL_ENABLED', true); + break; + default: + define('MATH_BIGINTEGER_OPENSSL_DISABLE', true); + } + } + + if (!defined('PHP_INT_SIZE')) { + define('PHP_INT_SIZE', 4); + } + + if (!defined('MATH_BIGINTEGER_BASE') && MATH_BIGINTEGER_MODE == MATH_BIGINTEGER_MODE_INTERNAL) { + switch (PHP_INT_SIZE) { + case 8: // use 64-bit integers if int size is 8 bytes + define('MATH_BIGINTEGER_BASE', 31); + define('MATH_BIGINTEGER_BASE_FULL', 0x80000000); + define('MATH_BIGINTEGER_MAX_DIGIT', 0x7FFFFFFF); + define('MATH_BIGINTEGER_MSB', 0x40000000); + // 10**9 is the closest we can get to 2**31 without passing it + define('MATH_BIGINTEGER_MAX10', 1000000000); + define('MATH_BIGINTEGER_MAX10_LEN', 9); + // the largest digit that may be used in addition / subtraction + define('MATH_BIGINTEGER_MAX_DIGIT2', pow(2, 62)); + break; + //case 4: // use 64-bit floats if int size is 4 bytes + default: + define('MATH_BIGINTEGER_BASE', 26); + define('MATH_BIGINTEGER_BASE_FULL', 0x4000000); + define('MATH_BIGINTEGER_MAX_DIGIT', 0x3FFFFFF); + define('MATH_BIGINTEGER_MSB', 0x2000000); + // 10**7 is the closest to 2**26 without passing it + define('MATH_BIGINTEGER_MAX10', 10000000); + define('MATH_BIGINTEGER_MAX10_LEN', 7); + // the largest digit that may be used in addition / subtraction + // we do pow(2, 52) instead of using 4503599627370496 directly because some + // PHP installations will truncate 4503599627370496. + define('MATH_BIGINTEGER_MAX_DIGIT2', pow(2, 52)); + } + } + + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + switch (true) { + case is_resource($x) && get_resource_type($x) == 'GMP integer': + // PHP 5.6 switched GMP from using resources to objects + case is_object($x) && get_class($x) == 'GMP': + $this->value = $x; + return; + } + $this->value = gmp_init(0); + break; + case MATH_BIGINTEGER_MODE_BCMATH: + $this->value = '0'; + break; + default: + $this->value = array(); + } + + // '0' counts as empty() but when the base is 256 '0' is equal to ord('0') or 48 + // '0' is the only value like this per http://php.net/empty + if (empty($x) && (abs($base) != 256 || $x !== '0')) { + return; + } + + switch ($base) { + case -256: + if (ord($x[0]) & 0x80) { + $x = ~$x; + $this->is_negative = true; + } + case 256: + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + $sign = $this->is_negative ? '-' : ''; + $this->value = gmp_init($sign . '0x' . bin2hex($x)); + break; + case MATH_BIGINTEGER_MODE_BCMATH: + // round $len to the nearest 4 (thanks, DavidMJ!) + $len = (strlen($x) + 3) & 0xFFFFFFFC; + + $x = str_pad($x, $len, chr(0), STR_PAD_LEFT); + + for ($i = 0; $i < $len; $i+= 4) { + $this->value = bcmul($this->value, '4294967296', 0); // 4294967296 == 2**32 + $this->value = bcadd($this->value, 0x1000000 * ord($x[$i]) + ((ord($x[$i + 1]) << 16) | (ord($x[$i + 2]) << 8) | ord($x[$i + 3])), 0); + } + + if ($this->is_negative) { + $this->value = '-' . $this->value; + } + + break; + // converts a base-2**8 (big endian / msb) number to base-2**26 (little endian / lsb) + default: + while (strlen($x)) { + $this->value[] = $this->_bytes2int($this->_base256_rshift($x, MATH_BIGINTEGER_BASE)); + } + } + + if ($this->is_negative) { + if (MATH_BIGINTEGER_MODE != MATH_BIGINTEGER_MODE_INTERNAL) { + $this->is_negative = false; + } + $temp = $this->add(new Math_BigInteger('-1')); + $this->value = $temp->value; + } + break; + case 16: + case -16: + if ($base > 0 && $x[0] == '-') { + $this->is_negative = true; + $x = substr($x, 1); + } + + $x = preg_replace('#^(?:0x)?([A-Fa-f0-9]*).*#', '$1', $x); + + $is_negative = false; + if ($base < 0 && hexdec($x[0]) >= 8) { + $this->is_negative = $is_negative = true; + $x = bin2hex(~pack('H*', $x)); + } + + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + $temp = $this->is_negative ? '-0x' . $x : '0x' . $x; + $this->value = gmp_init($temp); + $this->is_negative = false; + break; + case MATH_BIGINTEGER_MODE_BCMATH: + $x = (strlen($x) & 1) ? '0' . $x : $x; + $temp = new Math_BigInteger(pack('H*', $x), 256); + $this->value = $this->is_negative ? '-' . $temp->value : $temp->value; + $this->is_negative = false; + break; + default: + $x = (strlen($x) & 1) ? '0' . $x : $x; + $temp = new Math_BigInteger(pack('H*', $x), 256); + $this->value = $temp->value; + } + + if ($is_negative) { + $temp = $this->add(new Math_BigInteger('-1')); + $this->value = $temp->value; + } + break; + case 10: + case -10: + // (?value = gmp_init($x); + break; + case MATH_BIGINTEGER_MODE_BCMATH: + // explicitly casting $x to a string is necessary, here, since doing $x[0] on -1 yields different + // results then doing it on '-1' does (modInverse does $x[0]) + $this->value = $x === '-' ? '0' : (string) $x; + break; + default: + $temp = new Math_BigInteger(); + + $multiplier = new Math_BigInteger(); + $multiplier->value = array(MATH_BIGINTEGER_MAX10); + + if ($x[0] == '-') { + $this->is_negative = true; + $x = substr($x, 1); + } + + $x = str_pad($x, strlen($x) + ((MATH_BIGINTEGER_MAX10_LEN - 1) * strlen($x)) % MATH_BIGINTEGER_MAX10_LEN, 0, STR_PAD_LEFT); + while (strlen($x)) { + $temp = $temp->multiply($multiplier); + $temp = $temp->add(new Math_BigInteger($this->_int2bytes(substr($x, 0, MATH_BIGINTEGER_MAX10_LEN)), 256)); + $x = substr($x, MATH_BIGINTEGER_MAX10_LEN); + } + + $this->value = $temp->value; + } + break; + case 2: // base-2 support originally implemented by Lluis Pamies - thanks! + case -2: + if ($base > 0 && $x[0] == '-') { + $this->is_negative = true; + $x = substr($x, 1); + } + + $x = preg_replace('#^([01]*).*#', '$1', $x); + $x = str_pad($x, strlen($x) + (3 * strlen($x)) % 4, 0, STR_PAD_LEFT); + + $str = '0x'; + while (strlen($x)) { + $part = substr($x, 0, 4); + $str.= dechex(bindec($part)); + $x = substr($x, 4); + } + + if ($this->is_negative) { + $str = '-' . $str; + } + + $temp = new Math_BigInteger($str, 8 * $base); // ie. either -16 or +16 + $this->value = $temp->value; + $this->is_negative = $temp->is_negative; + + break; + default: + // base not supported, so we'll let $this == 0 + } + } + + /** + * PHP4 compatible Default Constructor. + * + * @see self::__construct() + * @param $x base-10 number or base-$base number if $base set. + * @param int $base + * @access public + */ + function Math_BigInteger($x = 0, $base = 10) + { + $this->__construct($x, $base); + } + + /** + * Converts a BigInteger to a byte string (eg. base-256). + * + * Negative numbers are saved as positive numbers, unless $twos_compliment is set to true, at which point, they're + * saved as two's compliment. + * + * Here's an example: + * + * toBytes(); // outputs chr(65) + * ?> + * + * + * @param bool $twos_compliment + * @return string + * @access public + * @internal Converts a base-2**26 number to base-2**8 + */ + function toBytes($twos_compliment = false) + { + if ($twos_compliment) { + $comparison = $this->compare(new Math_BigInteger()); + if ($comparison == 0) { + return $this->precision > 0 ? str_repeat(chr(0), ($this->precision + 1) >> 3) : ''; + } + + $temp = $comparison < 0 ? $this->add(new Math_BigInteger(1)) : $this->copy(); + $bytes = $temp->toBytes(); + + if (empty($bytes)) { // eg. if the number we're trying to convert is -1 + $bytes = chr(0); + } + + if (ord($bytes[0]) & 0x80) { + $bytes = chr(0) . $bytes; + } + + return $comparison < 0 ? ~$bytes : $bytes; + } + + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + if (gmp_cmp($this->value, gmp_init(0)) == 0) { + return $this->precision > 0 ? str_repeat(chr(0), ($this->precision + 1) >> 3) : ''; + } + + $temp = gmp_strval(gmp_abs($this->value), 16); + $temp = (strlen($temp) & 1) ? '0' . $temp : $temp; + $temp = pack('H*', $temp); + + return $this->precision > 0 ? + substr(str_pad($temp, $this->precision >> 3, chr(0), STR_PAD_LEFT), -($this->precision >> 3)) : + ltrim($temp, chr(0)); + case MATH_BIGINTEGER_MODE_BCMATH: + if ($this->value === '0') { + return $this->precision > 0 ? str_repeat(chr(0), ($this->precision + 1) >> 3) : ''; + } + + $value = ''; + $current = $this->value; + + if ($current[0] == '-') { + $current = substr($current, 1); + } + + while (bccomp($current, '0', 0) > 0) { + $temp = bcmod($current, '16777216'); + $value = chr($temp >> 16) . chr($temp >> 8) . chr($temp) . $value; + $current = bcdiv($current, '16777216', 0); + } + + return $this->precision > 0 ? + substr(str_pad($value, $this->precision >> 3, chr(0), STR_PAD_LEFT), -($this->precision >> 3)) : + ltrim($value, chr(0)); + } + + if (!count($this->value)) { + return $this->precision > 0 ? str_repeat(chr(0), ($this->precision + 1) >> 3) : ''; + } + $result = $this->_int2bytes($this->value[count($this->value) - 1]); + + $temp = $this->copy(); + + for ($i = count($temp->value) - 2; $i >= 0; --$i) { + $temp->_base256_lshift($result, MATH_BIGINTEGER_BASE); + $result = $result | str_pad($temp->_int2bytes($temp->value[$i]), strlen($result), chr(0), STR_PAD_LEFT); + } + + return $this->precision > 0 ? + str_pad(substr($result, -(($this->precision + 7) >> 3)), ($this->precision + 7) >> 3, chr(0), STR_PAD_LEFT) : + $result; + } + + /** + * Converts a BigInteger to a hex string (eg. base-16)). + * + * Negative numbers are saved as positive numbers, unless $twos_compliment is set to true, at which point, they're + * saved as two's compliment. + * + * Here's an example: + * + * toHex(); // outputs '41' + * ?> + * + * + * @param bool $twos_compliment + * @return string + * @access public + * @internal Converts a base-2**26 number to base-2**8 + */ + function toHex($twos_compliment = false) + { + return bin2hex($this->toBytes($twos_compliment)); + } + + /** + * Converts a BigInteger to a bit string (eg. base-2). + * + * Negative numbers are saved as positive numbers, unless $twos_compliment is set to true, at which point, they're + * saved as two's compliment. + * + * Here's an example: + * + * toBits(); // outputs '1000001' + * ?> + * + * + * @param bool $twos_compliment + * @return string + * @access public + * @internal Converts a base-2**26 number to base-2**2 + */ + function toBits($twos_compliment = false) + { + $hex = $this->toHex($twos_compliment); + $bits = ''; + for ($i = strlen($hex) - 8, $start = strlen($hex) & 7; $i >= $start; $i-=8) { + $bits = str_pad(decbin(hexdec(substr($hex, $i, 8))), 32, '0', STR_PAD_LEFT) . $bits; + } + if ($start) { // hexdec('') == 0 + $bits = str_pad(decbin(hexdec(substr($hex, 0, $start))), 8, '0', STR_PAD_LEFT) . $bits; + } + $result = $this->precision > 0 ? substr($bits, -$this->precision) : ltrim($bits, '0'); + + if ($twos_compliment && $this->compare(new Math_BigInteger()) > 0 && $this->precision <= 0) { + return '0' . $result; + } + + return $result; + } + + /** + * Converts a BigInteger to a base-10 number. + * + * Here's an example: + * + * toString(); // outputs 50 + * ?> + * + * + * @return string + * @access public + * @internal Converts a base-2**26 number to base-10**7 (which is pretty much base-10) + */ + function toString() + { + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + return gmp_strval($this->value); + case MATH_BIGINTEGER_MODE_BCMATH: + if ($this->value === '0') { + return '0'; + } + + return ltrim($this->value, '0'); + } + + if (!count($this->value)) { + return '0'; + } + + $temp = $this->copy(); + $temp->is_negative = false; + + $divisor = new Math_BigInteger(); + $divisor->value = array(MATH_BIGINTEGER_MAX10); + $result = ''; + while (count($temp->value)) { + list($temp, $mod) = $temp->divide($divisor); + $result = str_pad(isset($mod->value[0]) ? $mod->value[0] : '', MATH_BIGINTEGER_MAX10_LEN, '0', STR_PAD_LEFT) . $result; + } + $result = ltrim($result, '0'); + if (empty($result)) { + $result = '0'; + } + + if ($this->is_negative) { + $result = '-' . $result; + } + + return $result; + } + + /** + * Copy an object + * + * PHP5 passes objects by reference while PHP4 passes by value. As such, we need a function to guarantee + * that all objects are passed by value, when appropriate. More information can be found here: + * + * {@link http://php.net/language.oop5.basic#51624} + * + * @access public + * @see self::__clone() + * @return Math_BigInteger + */ + function copy() + { + $temp = new Math_BigInteger(); + $temp->value = $this->value; + $temp->is_negative = $this->is_negative; + $temp->precision = $this->precision; + $temp->bitmask = $this->bitmask; + return $temp; + } + + /** + * __toString() magic method + * + * Will be called, automatically, if you're supporting just PHP5. If you're supporting PHP4, you'll need to call + * toString(). + * + * @access public + * @internal Implemented per a suggestion by Techie-Michael - thanks! + */ + function __toString() + { + return $this->toString(); + } + + /** + * __clone() magic method + * + * Although you can call Math_BigInteger::__toString() directly in PHP5, you cannot call Math_BigInteger::__clone() + * directly in PHP5. You can in PHP4 since it's not a magic method, but in PHP5, you have to call it by using the PHP5 + * only syntax of $y = clone $x. As such, if you're trying to write an application that works on both PHP4 and PHP5, + * call Math_BigInteger::copy(), instead. + * + * @access public + * @see self::copy() + * @return Math_BigInteger + */ + function __clone() + { + return $this->copy(); + } + + /** + * __sleep() magic method + * + * Will be called, automatically, when serialize() is called on a Math_BigInteger object. + * + * @see self::__wakeup() + * @access public + */ + function __sleep() + { + $this->hex = $this->toHex(true); + $vars = array('hex'); + if ($this->precision > 0) { + $vars[] = 'precision'; + } + return $vars; + } + + /** + * __wakeup() magic method + * + * Will be called, automatically, when unserialize() is called on a Math_BigInteger object. + * + * @see self::__sleep() + * @access public + */ + function __wakeup() + { + $temp = new Math_BigInteger($this->hex, -16); + $this->value = $temp->value; + $this->is_negative = $temp->is_negative; + if ($this->precision > 0) { + // recalculate $this->bitmask + $this->setPrecision($this->precision); + } + } + + /** + * __debugInfo() magic method + * + * Will be called, automatically, when print_r() or var_dump() are called + * + * @access public + */ + function __debugInfo() + { + $opts = array(); + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + $engine = 'gmp'; + break; + case MATH_BIGINTEGER_MODE_BCMATH: + $engine = 'bcmath'; + break; + case MATH_BIGINTEGER_MODE_INTERNAL: + $engine = 'internal'; + $opts[] = PHP_INT_SIZE == 8 ? '64-bit' : '32-bit'; + } + if (MATH_BIGINTEGER_MODE != MATH_BIGINTEGER_MODE_GMP && defined('MATH_BIGINTEGER_OPENSSL_ENABLED')) { + $opts[] = 'OpenSSL'; + } + if (!empty($opts)) { + $engine.= ' (' . implode($opts, ', ') . ')'; + } + return array( + 'value' => '0x' . $this->toHex(true), + 'engine' => $engine + ); + } + + /** + * Adds two BigIntegers. + * + * Here's an example: + * + * add($b); + * + * echo $c->toString(); // outputs 30 + * ?> + * + * + * @param Math_BigInteger $y + * @return Math_BigInteger + * @access public + * @internal Performs base-2**52 addition + */ + function add($y) + { + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + $temp = new Math_BigInteger(); + $temp->value = gmp_add($this->value, $y->value); + + return $this->_normalize($temp); + case MATH_BIGINTEGER_MODE_BCMATH: + $temp = new Math_BigInteger(); + $temp->value = bcadd($this->value, $y->value, 0); + + return $this->_normalize($temp); + } + + $temp = $this->_add($this->value, $this->is_negative, $y->value, $y->is_negative); + + $result = new Math_BigInteger(); + $result->value = $temp[MATH_BIGINTEGER_VALUE]; + $result->is_negative = $temp[MATH_BIGINTEGER_SIGN]; + + return $this->_normalize($result); + } + + /** + * Performs addition. + * + * @param array $x_value + * @param bool $x_negative + * @param array $y_value + * @param bool $y_negative + * @return array + * @access private + */ + function _add($x_value, $x_negative, $y_value, $y_negative) + { + $x_size = count($x_value); + $y_size = count($y_value); + + if ($x_size == 0) { + return array( + MATH_BIGINTEGER_VALUE => $y_value, + MATH_BIGINTEGER_SIGN => $y_negative + ); + } elseif ($y_size == 0) { + return array( + MATH_BIGINTEGER_VALUE => $x_value, + MATH_BIGINTEGER_SIGN => $x_negative + ); + } + + // subtract, if appropriate + if ($x_negative != $y_negative) { + if ($x_value == $y_value) { + return array( + MATH_BIGINTEGER_VALUE => array(), + MATH_BIGINTEGER_SIGN => false + ); + } + + $temp = $this->_subtract($x_value, false, $y_value, false); + $temp[MATH_BIGINTEGER_SIGN] = $this->_compare($x_value, false, $y_value, false) > 0 ? + $x_negative : $y_negative; + + return $temp; + } + + if ($x_size < $y_size) { + $size = $x_size; + $value = $y_value; + } else { + $size = $y_size; + $value = $x_value; + } + + $value[count($value)] = 0; // just in case the carry adds an extra digit + + $carry = 0; + for ($i = 0, $j = 1; $j < $size; $i+=2, $j+=2) { + $sum = $x_value[$j] * MATH_BIGINTEGER_BASE_FULL + $x_value[$i] + $y_value[$j] * MATH_BIGINTEGER_BASE_FULL + $y_value[$i] + $carry; + $carry = $sum >= MATH_BIGINTEGER_MAX_DIGIT2; // eg. floor($sum / 2**52); only possible values (in any base) are 0 and 1 + $sum = $carry ? $sum - MATH_BIGINTEGER_MAX_DIGIT2 : $sum; + + $temp = MATH_BIGINTEGER_BASE === 26 ? intval($sum / 0x4000000) : ($sum >> 31); + + $value[$i] = (int) ($sum - MATH_BIGINTEGER_BASE_FULL * $temp); // eg. a faster alternative to fmod($sum, 0x4000000) + $value[$j] = $temp; + } + + if ($j == $size) { // ie. if $y_size is odd + $sum = $x_value[$i] + $y_value[$i] + $carry; + $carry = $sum >= MATH_BIGINTEGER_BASE_FULL; + $value[$i] = $carry ? $sum - MATH_BIGINTEGER_BASE_FULL : $sum; + ++$i; // ie. let $i = $j since we've just done $value[$i] + } + + if ($carry) { + for (; $value[$i] == MATH_BIGINTEGER_MAX_DIGIT; ++$i) { + $value[$i] = 0; + } + ++$value[$i]; + } + + return array( + MATH_BIGINTEGER_VALUE => $this->_trim($value), + MATH_BIGINTEGER_SIGN => $x_negative + ); + } + + /** + * Subtracts two BigIntegers. + * + * Here's an example: + * + * subtract($b); + * + * echo $c->toString(); // outputs -10 + * ?> + * + * + * @param Math_BigInteger $y + * @return Math_BigInteger + * @access public + * @internal Performs base-2**52 subtraction + */ + function subtract($y) + { + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + $temp = new Math_BigInteger(); + $temp->value = gmp_sub($this->value, $y->value); + + return $this->_normalize($temp); + case MATH_BIGINTEGER_MODE_BCMATH: + $temp = new Math_BigInteger(); + $temp->value = bcsub($this->value, $y->value, 0); + + return $this->_normalize($temp); + } + + $temp = $this->_subtract($this->value, $this->is_negative, $y->value, $y->is_negative); + + $result = new Math_BigInteger(); + $result->value = $temp[MATH_BIGINTEGER_VALUE]; + $result->is_negative = $temp[MATH_BIGINTEGER_SIGN]; + + return $this->_normalize($result); + } + + /** + * Performs subtraction. + * + * @param array $x_value + * @param bool $x_negative + * @param array $y_value + * @param bool $y_negative + * @return array + * @access private + */ + function _subtract($x_value, $x_negative, $y_value, $y_negative) + { + $x_size = count($x_value); + $y_size = count($y_value); + + if ($x_size == 0) { + return array( + MATH_BIGINTEGER_VALUE => $y_value, + MATH_BIGINTEGER_SIGN => !$y_negative + ); + } elseif ($y_size == 0) { + return array( + MATH_BIGINTEGER_VALUE => $x_value, + MATH_BIGINTEGER_SIGN => $x_negative + ); + } + + // add, if appropriate (ie. -$x - +$y or +$x - -$y) + if ($x_negative != $y_negative) { + $temp = $this->_add($x_value, false, $y_value, false); + $temp[MATH_BIGINTEGER_SIGN] = $x_negative; + + return $temp; + } + + $diff = $this->_compare($x_value, $x_negative, $y_value, $y_negative); + + if (!$diff) { + return array( + MATH_BIGINTEGER_VALUE => array(), + MATH_BIGINTEGER_SIGN => false + ); + } + + // switch $x and $y around, if appropriate. + if ((!$x_negative && $diff < 0) || ($x_negative && $diff > 0)) { + $temp = $x_value; + $x_value = $y_value; + $y_value = $temp; + + $x_negative = !$x_negative; + + $x_size = count($x_value); + $y_size = count($y_value); + } + + // at this point, $x_value should be at least as big as - if not bigger than - $y_value + + $carry = 0; + for ($i = 0, $j = 1; $j < $y_size; $i+=2, $j+=2) { + $sum = $x_value[$j] * MATH_BIGINTEGER_BASE_FULL + $x_value[$i] - $y_value[$j] * MATH_BIGINTEGER_BASE_FULL - $y_value[$i] - $carry; + $carry = $sum < 0; // eg. floor($sum / 2**52); only possible values (in any base) are 0 and 1 + $sum = $carry ? $sum + MATH_BIGINTEGER_MAX_DIGIT2 : $sum; + + $temp = MATH_BIGINTEGER_BASE === 26 ? intval($sum / 0x4000000) : ($sum >> 31); + + $x_value[$i] = (int) ($sum - MATH_BIGINTEGER_BASE_FULL * $temp); + $x_value[$j] = $temp; + } + + if ($j == $y_size) { // ie. if $y_size is odd + $sum = $x_value[$i] - $y_value[$i] - $carry; + $carry = $sum < 0; + $x_value[$i] = $carry ? $sum + MATH_BIGINTEGER_BASE_FULL : $sum; + ++$i; + } + + if ($carry) { + for (; !$x_value[$i]; ++$i) { + $x_value[$i] = MATH_BIGINTEGER_MAX_DIGIT; + } + --$x_value[$i]; + } + + return array( + MATH_BIGINTEGER_VALUE => $this->_trim($x_value), + MATH_BIGINTEGER_SIGN => $x_negative + ); + } + + /** + * Multiplies two BigIntegers + * + * Here's an example: + * + * multiply($b); + * + * echo $c->toString(); // outputs 200 + * ?> + * + * + * @param Math_BigInteger $x + * @return Math_BigInteger + * @access public + */ + function multiply($x) + { + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + $temp = new Math_BigInteger(); + $temp->value = gmp_mul($this->value, $x->value); + + return $this->_normalize($temp); + case MATH_BIGINTEGER_MODE_BCMATH: + $temp = new Math_BigInteger(); + $temp->value = bcmul($this->value, $x->value, 0); + + return $this->_normalize($temp); + } + + $temp = $this->_multiply($this->value, $this->is_negative, $x->value, $x->is_negative); + + $product = new Math_BigInteger(); + $product->value = $temp[MATH_BIGINTEGER_VALUE]; + $product->is_negative = $temp[MATH_BIGINTEGER_SIGN]; + + return $this->_normalize($product); + } + + /** + * Performs multiplication. + * + * @param array $x_value + * @param bool $x_negative + * @param array $y_value + * @param bool $y_negative + * @return array + * @access private + */ + function _multiply($x_value, $x_negative, $y_value, $y_negative) + { + //if ( $x_value == $y_value ) { + // return array( + // MATH_BIGINTEGER_VALUE => $this->_square($x_value), + // MATH_BIGINTEGER_SIGN => $x_sign != $y_value + // ); + //} + + $x_length = count($x_value); + $y_length = count($y_value); + + if (!$x_length || !$y_length) { // a 0 is being multiplied + return array( + MATH_BIGINTEGER_VALUE => array(), + MATH_BIGINTEGER_SIGN => false + ); + } + + return array( + MATH_BIGINTEGER_VALUE => min($x_length, $y_length) < 2 * MATH_BIGINTEGER_KARATSUBA_CUTOFF ? + $this->_trim($this->_regularMultiply($x_value, $y_value)) : + $this->_trim($this->_karatsuba($x_value, $y_value)), + MATH_BIGINTEGER_SIGN => $x_negative != $y_negative + ); + } + + /** + * Performs long multiplication on two BigIntegers + * + * Modeled after 'multiply' in MutableBigInteger.java. + * + * @param array $x_value + * @param array $y_value + * @return array + * @access private + */ + function _regularMultiply($x_value, $y_value) + { + $x_length = count($x_value); + $y_length = count($y_value); + + if (!$x_length || !$y_length) { // a 0 is being multiplied + return array(); + } + + if ($x_length < $y_length) { + $temp = $x_value; + $x_value = $y_value; + $y_value = $temp; + + $x_length = count($x_value); + $y_length = count($y_value); + } + + $product_value = $this->_array_repeat(0, $x_length + $y_length); + + // the following for loop could be removed if the for loop following it + // (the one with nested for loops) initially set $i to 0, but + // doing so would also make the result in one set of unnecessary adds, + // since on the outermost loops first pass, $product->value[$k] is going + // to always be 0 + + $carry = 0; + + for ($j = 0; $j < $x_length; ++$j) { // ie. $i = 0 + $temp = $x_value[$j] * $y_value[0] + $carry; // $product_value[$k] == 0 + $carry = MATH_BIGINTEGER_BASE === 26 ? intval($temp / 0x4000000) : ($temp >> 31); + $product_value[$j] = (int) ($temp - MATH_BIGINTEGER_BASE_FULL * $carry); + } + + $product_value[$j] = $carry; + + // the above for loop is what the previous comment was talking about. the + // following for loop is the "one with nested for loops" + for ($i = 1; $i < $y_length; ++$i) { + $carry = 0; + + for ($j = 0, $k = $i; $j < $x_length; ++$j, ++$k) { + $temp = $product_value[$k] + $x_value[$j] * $y_value[$i] + $carry; + $carry = MATH_BIGINTEGER_BASE === 26 ? intval($temp / 0x4000000) : ($temp >> 31); + $product_value[$k] = (int) ($temp - MATH_BIGINTEGER_BASE_FULL * $carry); + } + + $product_value[$k] = $carry; + } + + return $product_value; + } + + /** + * Performs Karatsuba multiplication on two BigIntegers + * + * See {@link http://en.wikipedia.org/wiki/Karatsuba_algorithm Karatsuba algorithm} and + * {@link http://math.libtomcrypt.com/files/tommath.pdf#page=120 MPM 5.2.3}. + * + * @param array $x_value + * @param array $y_value + * @return array + * @access private + */ + function _karatsuba($x_value, $y_value) + { + $m = min(count($x_value) >> 1, count($y_value) >> 1); + + if ($m < MATH_BIGINTEGER_KARATSUBA_CUTOFF) { + return $this->_regularMultiply($x_value, $y_value); + } + + $x1 = array_slice($x_value, $m); + $x0 = array_slice($x_value, 0, $m); + $y1 = array_slice($y_value, $m); + $y0 = array_slice($y_value, 0, $m); + + $z2 = $this->_karatsuba($x1, $y1); + $z0 = $this->_karatsuba($x0, $y0); + + $z1 = $this->_add($x1, false, $x0, false); + $temp = $this->_add($y1, false, $y0, false); + $z1 = $this->_karatsuba($z1[MATH_BIGINTEGER_VALUE], $temp[MATH_BIGINTEGER_VALUE]); + $temp = $this->_add($z2, false, $z0, false); + $z1 = $this->_subtract($z1, false, $temp[MATH_BIGINTEGER_VALUE], false); + + $z2 = array_merge(array_fill(0, 2 * $m, 0), $z2); + $z1[MATH_BIGINTEGER_VALUE] = array_merge(array_fill(0, $m, 0), $z1[MATH_BIGINTEGER_VALUE]); + + $xy = $this->_add($z2, false, $z1[MATH_BIGINTEGER_VALUE], $z1[MATH_BIGINTEGER_SIGN]); + $xy = $this->_add($xy[MATH_BIGINTEGER_VALUE], $xy[MATH_BIGINTEGER_SIGN], $z0, false); + + return $xy[MATH_BIGINTEGER_VALUE]; + } + + /** + * Performs squaring + * + * @param array $x + * @return array + * @access private + */ + function _square($x = false) + { + return count($x) < 2 * MATH_BIGINTEGER_KARATSUBA_CUTOFF ? + $this->_trim($this->_baseSquare($x)) : + $this->_trim($this->_karatsubaSquare($x)); + } + + /** + * Performs traditional squaring on two BigIntegers + * + * Squaring can be done faster than multiplying a number by itself can be. See + * {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf#page=7 HAC 14.2.4} / + * {@link http://math.libtomcrypt.com/files/tommath.pdf#page=141 MPM 5.3} for more information. + * + * @param array $value + * @return array + * @access private + */ + function _baseSquare($value) + { + if (empty($value)) { + return array(); + } + $square_value = $this->_array_repeat(0, 2 * count($value)); + + for ($i = 0, $max_index = count($value) - 1; $i <= $max_index; ++$i) { + $i2 = $i << 1; + + $temp = $square_value[$i2] + $value[$i] * $value[$i]; + $carry = MATH_BIGINTEGER_BASE === 26 ? intval($temp / 0x4000000) : ($temp >> 31); + $square_value[$i2] = (int) ($temp - MATH_BIGINTEGER_BASE_FULL * $carry); + + // note how we start from $i+1 instead of 0 as we do in multiplication. + for ($j = $i + 1, $k = $i2 + 1; $j <= $max_index; ++$j, ++$k) { + $temp = $square_value[$k] + 2 * $value[$j] * $value[$i] + $carry; + $carry = MATH_BIGINTEGER_BASE === 26 ? intval($temp / 0x4000000) : ($temp >> 31); + $square_value[$k] = (int) ($temp - MATH_BIGINTEGER_BASE_FULL * $carry); + } + + // the following line can yield values larger 2**15. at this point, PHP should switch + // over to floats. + $square_value[$i + $max_index + 1] = $carry; + } + + return $square_value; + } + + /** + * Performs Karatsuba "squaring" on two BigIntegers + * + * See {@link http://en.wikipedia.org/wiki/Karatsuba_algorithm Karatsuba algorithm} and + * {@link http://math.libtomcrypt.com/files/tommath.pdf#page=151 MPM 5.3.4}. + * + * @param array $value + * @return array + * @access private + */ + function _karatsubaSquare($value) + { + $m = count($value) >> 1; + + if ($m < MATH_BIGINTEGER_KARATSUBA_CUTOFF) { + return $this->_baseSquare($value); + } + + $x1 = array_slice($value, $m); + $x0 = array_slice($value, 0, $m); + + $z2 = $this->_karatsubaSquare($x1); + $z0 = $this->_karatsubaSquare($x0); + + $z1 = $this->_add($x1, false, $x0, false); + $z1 = $this->_karatsubaSquare($z1[MATH_BIGINTEGER_VALUE]); + $temp = $this->_add($z2, false, $z0, false); + $z1 = $this->_subtract($z1, false, $temp[MATH_BIGINTEGER_VALUE], false); + + $z2 = array_merge(array_fill(0, 2 * $m, 0), $z2); + $z1[MATH_BIGINTEGER_VALUE] = array_merge(array_fill(0, $m, 0), $z1[MATH_BIGINTEGER_VALUE]); + + $xx = $this->_add($z2, false, $z1[MATH_BIGINTEGER_VALUE], $z1[MATH_BIGINTEGER_SIGN]); + $xx = $this->_add($xx[MATH_BIGINTEGER_VALUE], $xx[MATH_BIGINTEGER_SIGN], $z0, false); + + return $xx[MATH_BIGINTEGER_VALUE]; + } + + /** + * Divides two BigIntegers. + * + * Returns an array whose first element contains the quotient and whose second element contains the + * "common residue". If the remainder would be positive, the "common residue" and the remainder are the + * same. If the remainder would be negative, the "common residue" is equal to the sum of the remainder + * and the divisor (basically, the "common residue" is the first positive modulo). + * + * Here's an example: + * + * divide($b); + * + * echo $quotient->toString(); // outputs 0 + * echo "\r\n"; + * echo $remainder->toString(); // outputs 10 + * ?> + * + * + * @param Math_BigInteger $y + * @return array + * @access public + * @internal This function is based off of {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf#page=9 HAC 14.20}. + */ + function divide($y) + { + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + $quotient = new Math_BigInteger(); + $remainder = new Math_BigInteger(); + + list($quotient->value, $remainder->value) = gmp_div_qr($this->value, $y->value); + + if (gmp_sign($remainder->value) < 0) { + $remainder->value = gmp_add($remainder->value, gmp_abs($y->value)); + } + + return array($this->_normalize($quotient), $this->_normalize($remainder)); + case MATH_BIGINTEGER_MODE_BCMATH: + $quotient = new Math_BigInteger(); + $remainder = new Math_BigInteger(); + + $quotient->value = bcdiv($this->value, $y->value, 0); + $remainder->value = bcmod($this->value, $y->value); + + if ($remainder->value[0] == '-') { + $remainder->value = bcadd($remainder->value, $y->value[0] == '-' ? substr($y->value, 1) : $y->value, 0); + } + + return array($this->_normalize($quotient), $this->_normalize($remainder)); + } + + if (count($y->value) == 1) { + list($q, $r) = $this->_divide_digit($this->value, $y->value[0]); + $quotient = new Math_BigInteger(); + $remainder = new Math_BigInteger(); + $quotient->value = $q; + $remainder->value = array($r); + $quotient->is_negative = $this->is_negative != $y->is_negative; + return array($this->_normalize($quotient), $this->_normalize($remainder)); + } + + static $zero; + if (!isset($zero)) { + $zero = new Math_BigInteger(); + } + + $x = $this->copy(); + $y = $y->copy(); + + $x_sign = $x->is_negative; + $y_sign = $y->is_negative; + + $x->is_negative = $y->is_negative = false; + + $diff = $x->compare($y); + + if (!$diff) { + $temp = new Math_BigInteger(); + $temp->value = array(1); + $temp->is_negative = $x_sign != $y_sign; + return array($this->_normalize($temp), $this->_normalize(new Math_BigInteger())); + } + + if ($diff < 0) { + // if $x is negative, "add" $y. + if ($x_sign) { + $x = $y->subtract($x); + } + return array($this->_normalize(new Math_BigInteger()), $this->_normalize($x)); + } + + // normalize $x and $y as described in HAC 14.23 / 14.24 + $msb = $y->value[count($y->value) - 1]; + for ($shift = 0; !($msb & MATH_BIGINTEGER_MSB); ++$shift) { + $msb <<= 1; + } + $x->_lshift($shift); + $y->_lshift($shift); + $y_value = &$y->value; + + $x_max = count($x->value) - 1; + $y_max = count($y->value) - 1; + + $quotient = new Math_BigInteger(); + $quotient_value = &$quotient->value; + $quotient_value = $this->_array_repeat(0, $x_max - $y_max + 1); + + static $temp, $lhs, $rhs; + if (!isset($temp)) { + $temp = new Math_BigInteger(); + $lhs = new Math_BigInteger(); + $rhs = new Math_BigInteger(); + } + $temp_value = &$temp->value; + $rhs_value = &$rhs->value; + + // $temp = $y << ($x_max - $y_max-1) in base 2**26 + $temp_value = array_merge($this->_array_repeat(0, $x_max - $y_max), $y_value); + + while ($x->compare($temp) >= 0) { + // calculate the "common residue" + ++$quotient_value[$x_max - $y_max]; + $x = $x->subtract($temp); + $x_max = count($x->value) - 1; + } + + for ($i = $x_max; $i >= $y_max + 1; --$i) { + $x_value = &$x->value; + $x_window = array( + isset($x_value[$i]) ? $x_value[$i] : 0, + isset($x_value[$i - 1]) ? $x_value[$i - 1] : 0, + isset($x_value[$i - 2]) ? $x_value[$i - 2] : 0 + ); + $y_window = array( + $y_value[$y_max], + ($y_max > 0) ? $y_value[$y_max - 1] : 0 + ); + + $q_index = $i - $y_max - 1; + if ($x_window[0] == $y_window[0]) { + $quotient_value[$q_index] = MATH_BIGINTEGER_MAX_DIGIT; + } else { + $quotient_value[$q_index] = $this->_safe_divide( + $x_window[0] * MATH_BIGINTEGER_BASE_FULL + $x_window[1], + $y_window[0] + ); + } + + $temp_value = array($y_window[1], $y_window[0]); + + $lhs->value = array($quotient_value[$q_index]); + $lhs = $lhs->multiply($temp); + + $rhs_value = array($x_window[2], $x_window[1], $x_window[0]); + + while ($lhs->compare($rhs) > 0) { + --$quotient_value[$q_index]; + + $lhs->value = array($quotient_value[$q_index]); + $lhs = $lhs->multiply($temp); + } + + $adjust = $this->_array_repeat(0, $q_index); + $temp_value = array($quotient_value[$q_index]); + $temp = $temp->multiply($y); + $temp_value = &$temp->value; + $temp_value = array_merge($adjust, $temp_value); + + $x = $x->subtract($temp); + + if ($x->compare($zero) < 0) { + $temp_value = array_merge($adjust, $y_value); + $x = $x->add($temp); + + --$quotient_value[$q_index]; + } + + $x_max = count($x_value) - 1; + } + + // unnormalize the remainder + $x->_rshift($shift); + + $quotient->is_negative = $x_sign != $y_sign; + + // calculate the "common residue", if appropriate + if ($x_sign) { + $y->_rshift($shift); + $x = $y->subtract($x); + } + + return array($this->_normalize($quotient), $this->_normalize($x)); + } + + /** + * Divides a BigInteger by a regular integer + * + * abc / x = a00 / x + b0 / x + c / x + * + * @param array $dividend + * @param array $divisor + * @return array + * @access private + */ + function _divide_digit($dividend, $divisor) + { + $carry = 0; + $result = array(); + + for ($i = count($dividend) - 1; $i >= 0; --$i) { + $temp = MATH_BIGINTEGER_BASE_FULL * $carry + $dividend[$i]; + $result[$i] = $this->_safe_divide($temp, $divisor); + $carry = (int) ($temp - $divisor * $result[$i]); + } + + return array($result, $carry); + } + + /** + * Performs modular exponentiation. + * + * Here's an example: + * + * modPow($b, $c); + * + * echo $c->toString(); // outputs 10 + * ?> + * + * + * @param Math_BigInteger $e + * @param Math_BigInteger $n + * @return Math_BigInteger + * @access public + * @internal The most naive approach to modular exponentiation has very unreasonable requirements, and + * and although the approach involving repeated squaring does vastly better, it, too, is impractical + * for our purposes. The reason being that division - by far the most complicated and time-consuming + * of the basic operations (eg. +,-,*,/) - occurs multiple times within it. + * + * Modular reductions resolve this issue. Although an individual modular reduction takes more time + * then an individual division, when performed in succession (with the same modulo), they're a lot faster. + * + * The two most commonly used modular reductions are Barrett and Montgomery reduction. Montgomery reduction, + * although faster, only works when the gcd of the modulo and of the base being used is 1. In RSA, when the + * base is a power of two, the modulo - a product of two primes - is always going to have a gcd of 1 (because + * the product of two odd numbers is odd), but what about when RSA isn't used? + * + * In contrast, Barrett reduction has no such constraint. As such, some bigint implementations perform a + * Barrett reduction after every operation in the modpow function. Others perform Barrett reductions when the + * modulo is even and Montgomery reductions when the modulo is odd. BigInteger.java's modPow method, however, + * uses a trick involving the Chinese Remainder Theorem to factor the even modulo into two numbers - one odd and + * the other, a power of two - and recombine them, later. This is the method that this modPow function uses. + * {@link http://islab.oregonstate.edu/papers/j34monex.pdf Montgomery Reduction with Even Modulus} elaborates. + */ + function modPow($e, $n) + { + $n = $this->bitmask !== false && $this->bitmask->compare($n) < 0 ? $this->bitmask : $n->abs(); + + if ($e->compare(new Math_BigInteger()) < 0) { + $e = $e->abs(); + + $temp = $this->modInverse($n); + if ($temp === false) { + return false; + } + + return $this->_normalize($temp->modPow($e, $n)); + } + + if (MATH_BIGINTEGER_MODE == MATH_BIGINTEGER_MODE_GMP) { + $temp = new Math_BigInteger(); + $temp->value = gmp_powm($this->value, $e->value, $n->value); + + return $this->_normalize($temp); + } + + if ($this->compare(new Math_BigInteger()) < 0 || $this->compare($n) > 0) { + list(, $temp) = $this->divide($n); + return $temp->modPow($e, $n); + } + + if (defined('MATH_BIGINTEGER_OPENSSL_ENABLED')) { + $components = array( + 'modulus' => $n->toBytes(true), + 'publicExponent' => $e->toBytes(true) + ); + + $components = array( + 'modulus' => pack('Ca*a*', 2, $this->_encodeASN1Length(strlen($components['modulus'])), $components['modulus']), + 'publicExponent' => pack('Ca*a*', 2, $this->_encodeASN1Length(strlen($components['publicExponent'])), $components['publicExponent']) + ); + + $RSAPublicKey = pack( + 'Ca*a*a*', + 48, + $this->_encodeASN1Length(strlen($components['modulus']) + strlen($components['publicExponent'])), + $components['modulus'], + $components['publicExponent'] + ); + + $rsaOID = pack('H*', '300d06092a864886f70d0101010500'); // hex version of MA0GCSqGSIb3DQEBAQUA + $RSAPublicKey = chr(0) . $RSAPublicKey; + $RSAPublicKey = chr(3) . $this->_encodeASN1Length(strlen($RSAPublicKey)) . $RSAPublicKey; + + $encapsulated = pack( + 'Ca*a*', + 48, + $this->_encodeASN1Length(strlen($rsaOID . $RSAPublicKey)), + $rsaOID . $RSAPublicKey + ); + + $RSAPublicKey = "-----BEGIN PUBLIC KEY-----\r\n" . + chunk_split(base64_encode($encapsulated)) . + '-----END PUBLIC KEY-----'; + + $plaintext = str_pad($this->toBytes(), strlen($n->toBytes(true)) - 1, "\0", STR_PAD_LEFT); + + if (openssl_public_encrypt($plaintext, $result, $RSAPublicKey, OPENSSL_NO_PADDING)) { + return new Math_BigInteger($result, 256); + } + } + + if (MATH_BIGINTEGER_MODE == MATH_BIGINTEGER_MODE_BCMATH) { + $temp = new Math_BigInteger(); + $temp->value = bcpowmod($this->value, $e->value, $n->value, 0); + + return $this->_normalize($temp); + } + + if (empty($e->value)) { + $temp = new Math_BigInteger(); + $temp->value = array(1); + return $this->_normalize($temp); + } + + if ($e->value == array(1)) { + list(, $temp) = $this->divide($n); + return $this->_normalize($temp); + } + + if ($e->value == array(2)) { + $temp = new Math_BigInteger(); + $temp->value = $this->_square($this->value); + list(, $temp) = $temp->divide($n); + return $this->_normalize($temp); + } + + return $this->_normalize($this->_slidingWindow($e, $n, MATH_BIGINTEGER_BARRETT)); + + // the following code, although not callable, can be run independently of the above code + // although the above code performed better in my benchmarks the following could might + // perform better under different circumstances. in lieu of deleting it it's just been + // made uncallable + + // is the modulo odd? + if ($n->value[0] & 1) { + return $this->_normalize($this->_slidingWindow($e, $n, MATH_BIGINTEGER_MONTGOMERY)); + } + // if it's not, it's even + + // find the lowest set bit (eg. the max pow of 2 that divides $n) + for ($i = 0; $i < count($n->value); ++$i) { + if ($n->value[$i]) { + $temp = decbin($n->value[$i]); + $j = strlen($temp) - strrpos($temp, '1') - 1; + $j+= 26 * $i; + break; + } + } + // at this point, 2^$j * $n/(2^$j) == $n + + $mod1 = $n->copy(); + $mod1->_rshift($j); + $mod2 = new Math_BigInteger(); + $mod2->value = array(1); + $mod2->_lshift($j); + + $part1 = ($mod1->value != array(1)) ? $this->_slidingWindow($e, $mod1, MATH_BIGINTEGER_MONTGOMERY) : new Math_BigInteger(); + $part2 = $this->_slidingWindow($e, $mod2, MATH_BIGINTEGER_POWEROF2); + + $y1 = $mod2->modInverse($mod1); + $y2 = $mod1->modInverse($mod2); + + $result = $part1->multiply($mod2); + $result = $result->multiply($y1); + + $temp = $part2->multiply($mod1); + $temp = $temp->multiply($y2); + + $result = $result->add($temp); + list(, $result) = $result->divide($n); + + return $this->_normalize($result); + } + + /** + * Performs modular exponentiation. + * + * Alias for Math_BigInteger::modPow() + * + * @param Math_BigInteger $e + * @param Math_BigInteger $n + * @return Math_BigInteger + * @access public + */ + function powMod($e, $n) + { + return $this->modPow($e, $n); + } + + /** + * Sliding Window k-ary Modular Exponentiation + * + * Based on {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf#page=27 HAC 14.85} / + * {@link http://math.libtomcrypt.com/files/tommath.pdf#page=210 MPM 7.7}. In a departure from those algorithims, + * however, this function performs a modular reduction after every multiplication and squaring operation. + * As such, this function has the same preconditions that the reductions being used do. + * + * @param Math_BigInteger $e + * @param Math_BigInteger $n + * @param int $mode + * @return Math_BigInteger + * @access private + */ + function _slidingWindow($e, $n, $mode) + { + static $window_ranges = array(7, 25, 81, 241, 673, 1793); // from BigInteger.java's oddModPow function + //static $window_ranges = array(0, 7, 36, 140, 450, 1303, 3529); // from MPM 7.3.1 + + $e_value = $e->value; + $e_length = count($e_value) - 1; + $e_bits = decbin($e_value[$e_length]); + for ($i = $e_length - 1; $i >= 0; --$i) { + $e_bits.= str_pad(decbin($e_value[$i]), MATH_BIGINTEGER_BASE, '0', STR_PAD_LEFT); + } + + $e_length = strlen($e_bits); + + // calculate the appropriate window size. + // $window_size == 3 if $window_ranges is between 25 and 81, for example. + for ($i = 0, $window_size = 1; $i < count($window_ranges) && $e_length > $window_ranges[$i]; ++$window_size, ++$i) { + } + + $n_value = $n->value; + + // precompute $this^0 through $this^$window_size + $powers = array(); + $powers[1] = $this->_prepareReduce($this->value, $n_value, $mode); + $powers[2] = $this->_squareReduce($powers[1], $n_value, $mode); + + // we do every other number since substr($e_bits, $i, $j+1) (see below) is supposed to end + // in a 1. ie. it's supposed to be odd. + $temp = 1 << ($window_size - 1); + for ($i = 1; $i < $temp; ++$i) { + $i2 = $i << 1; + $powers[$i2 + 1] = $this->_multiplyReduce($powers[$i2 - 1], $powers[2], $n_value, $mode); + } + + $result = array(1); + $result = $this->_prepareReduce($result, $n_value, $mode); + + for ($i = 0; $i < $e_length;) { + if (!$e_bits[$i]) { + $result = $this->_squareReduce($result, $n_value, $mode); + ++$i; + } else { + for ($j = $window_size - 1; $j > 0; --$j) { + if (!empty($e_bits[$i + $j])) { + break; + } + } + + // eg. the length of substr($e_bits, $i, $j + 1) + for ($k = 0; $k <= $j; ++$k) { + $result = $this->_squareReduce($result, $n_value, $mode); + } + + $result = $this->_multiplyReduce($result, $powers[bindec(substr($e_bits, $i, $j + 1))], $n_value, $mode); + + $i += $j + 1; + } + } + + $temp = new Math_BigInteger(); + $temp->value = $this->_reduce($result, $n_value, $mode); + + return $temp; + } + + /** + * Modular reduction + * + * For most $modes this will return the remainder. + * + * @see self::_slidingWindow() + * @access private + * @param array $x + * @param array $n + * @param int $mode + * @return array + */ + function _reduce($x, $n, $mode) + { + switch ($mode) { + case MATH_BIGINTEGER_MONTGOMERY: + return $this->_montgomery($x, $n); + case MATH_BIGINTEGER_BARRETT: + return $this->_barrett($x, $n); + case MATH_BIGINTEGER_POWEROF2: + $lhs = new Math_BigInteger(); + $lhs->value = $x; + $rhs = new Math_BigInteger(); + $rhs->value = $n; + return $x->_mod2($n); + case MATH_BIGINTEGER_CLASSIC: + $lhs = new Math_BigInteger(); + $lhs->value = $x; + $rhs = new Math_BigInteger(); + $rhs->value = $n; + list(, $temp) = $lhs->divide($rhs); + return $temp->value; + case MATH_BIGINTEGER_NONE: + return $x; + default: + // an invalid $mode was provided + } + } + + /** + * Modular reduction preperation + * + * @see self::_slidingWindow() + * @access private + * @param array $x + * @param array $n + * @param int $mode + * @return array + */ + function _prepareReduce($x, $n, $mode) + { + if ($mode == MATH_BIGINTEGER_MONTGOMERY) { + return $this->_prepMontgomery($x, $n); + } + return $this->_reduce($x, $n, $mode); + } + + /** + * Modular multiply + * + * @see self::_slidingWindow() + * @access private + * @param array $x + * @param array $y + * @param array $n + * @param int $mode + * @return array + */ + function _multiplyReduce($x, $y, $n, $mode) + { + if ($mode == MATH_BIGINTEGER_MONTGOMERY) { + return $this->_montgomeryMultiply($x, $y, $n); + } + $temp = $this->_multiply($x, false, $y, false); + return $this->_reduce($temp[MATH_BIGINTEGER_VALUE], $n, $mode); + } + + /** + * Modular square + * + * @see self::_slidingWindow() + * @access private + * @param array $x + * @param array $n + * @param int $mode + * @return array + */ + function _squareReduce($x, $n, $mode) + { + if ($mode == MATH_BIGINTEGER_MONTGOMERY) { + return $this->_montgomeryMultiply($x, $x, $n); + } + return $this->_reduce($this->_square($x), $n, $mode); + } + + /** + * Modulos for Powers of Two + * + * Calculates $x%$n, where $n = 2**$e, for some $e. Since this is basically the same as doing $x & ($n-1), + * we'll just use this function as a wrapper for doing that. + * + * @see self::_slidingWindow() + * @access private + * @param Math_BigInteger + * @return Math_BigInteger + */ + function _mod2($n) + { + $temp = new Math_BigInteger(); + $temp->value = array(1); + return $this->bitwise_and($n->subtract($temp)); + } + + /** + * Barrett Modular Reduction + * + * See {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf#page=14 HAC 14.3.3} / + * {@link http://math.libtomcrypt.com/files/tommath.pdf#page=165 MPM 6.2.5} for more information. Modified slightly, + * so as not to require negative numbers (initially, this script didn't support negative numbers). + * + * Employs "folding", as described at + * {@link http://www.cosic.esat.kuleuven.be/publications/thesis-149.pdf#page=66 thesis-149.pdf#page=66}. To quote from + * it, "the idea [behind folding] is to find a value x' such that x (mod m) = x' (mod m), with x' being smaller than x." + * + * Unfortunately, the "Barrett Reduction with Folding" algorithm described in thesis-149.pdf is not, as written, all that + * usable on account of (1) its not using reasonable radix points as discussed in + * {@link http://math.libtomcrypt.com/files/tommath.pdf#page=162 MPM 6.2.2} and (2) the fact that, even with reasonable + * radix points, it only works when there are an even number of digits in the denominator. The reason for (2) is that + * (x >> 1) + (x >> 1) != x / 2 + x / 2. If x is even, they're the same, but if x is odd, they're not. See the in-line + * comments for details. + * + * @see self::_slidingWindow() + * @access private + * @param array $n + * @param array $m + * @return array + */ + function _barrett($n, $m) + { + static $cache = array( + MATH_BIGINTEGER_VARIABLE => array(), + MATH_BIGINTEGER_DATA => array() + ); + + $m_length = count($m); + + // if ($this->_compare($n, $this->_square($m)) >= 0) { + if (count($n) > 2 * $m_length) { + $lhs = new Math_BigInteger(); + $rhs = new Math_BigInteger(); + $lhs->value = $n; + $rhs->value = $m; + list(, $temp) = $lhs->divide($rhs); + return $temp->value; + } + + // if (m.length >> 1) + 2 <= m.length then m is too small and n can't be reduced + if ($m_length < 5) { + return $this->_regularBarrett($n, $m); + } + + // n = 2 * m.length + + if (($key = array_search($m, $cache[MATH_BIGINTEGER_VARIABLE])) === false) { + $key = count($cache[MATH_BIGINTEGER_VARIABLE]); + $cache[MATH_BIGINTEGER_VARIABLE][] = $m; + + $lhs = new Math_BigInteger(); + $lhs_value = &$lhs->value; + $lhs_value = $this->_array_repeat(0, $m_length + ($m_length >> 1)); + $lhs_value[] = 1; + $rhs = new Math_BigInteger(); + $rhs->value = $m; + + list($u, $m1) = $lhs->divide($rhs); + $u = $u->value; + $m1 = $m1->value; + + $cache[MATH_BIGINTEGER_DATA][] = array( + 'u' => $u, // m.length >> 1 (technically (m.length >> 1) + 1) + 'm1'=> $m1 // m.length + ); + } else { + extract($cache[MATH_BIGINTEGER_DATA][$key]); + } + + $cutoff = $m_length + ($m_length >> 1); + $lsd = array_slice($n, 0, $cutoff); // m.length + (m.length >> 1) + $msd = array_slice($n, $cutoff); // m.length >> 1 + $lsd = $this->_trim($lsd); + $temp = $this->_multiply($msd, false, $m1, false); + $n = $this->_add($lsd, false, $temp[MATH_BIGINTEGER_VALUE], false); // m.length + (m.length >> 1) + 1 + + if ($m_length & 1) { + return $this->_regularBarrett($n[MATH_BIGINTEGER_VALUE], $m); + } + + // (m.length + (m.length >> 1) + 1) - (m.length - 1) == (m.length >> 1) + 2 + $temp = array_slice($n[MATH_BIGINTEGER_VALUE], $m_length - 1); + // if even: ((m.length >> 1) + 2) + (m.length >> 1) == m.length + 2 + // if odd: ((m.length >> 1) + 2) + (m.length >> 1) == (m.length - 1) + 2 == m.length + 1 + $temp = $this->_multiply($temp, false, $u, false); + // if even: (m.length + 2) - ((m.length >> 1) + 1) = m.length - (m.length >> 1) + 1 + // if odd: (m.length + 1) - ((m.length >> 1) + 1) = m.length - (m.length >> 1) + $temp = array_slice($temp[MATH_BIGINTEGER_VALUE], ($m_length >> 1) + 1); + // if even: (m.length - (m.length >> 1) + 1) + m.length = 2 * m.length - (m.length >> 1) + 1 + // if odd: (m.length - (m.length >> 1)) + m.length = 2 * m.length - (m.length >> 1) + $temp = $this->_multiply($temp, false, $m, false); + + // at this point, if m had an odd number of digits, we'd be subtracting a 2 * m.length - (m.length >> 1) digit + // number from a m.length + (m.length >> 1) + 1 digit number. ie. there'd be an extra digit and the while loop + // following this comment would loop a lot (hence our calling _regularBarrett() in that situation). + + $result = $this->_subtract($n[MATH_BIGINTEGER_VALUE], false, $temp[MATH_BIGINTEGER_VALUE], false); + + while ($this->_compare($result[MATH_BIGINTEGER_VALUE], $result[MATH_BIGINTEGER_SIGN], $m, false) >= 0) { + $result = $this->_subtract($result[MATH_BIGINTEGER_VALUE], $result[MATH_BIGINTEGER_SIGN], $m, false); + } + + return $result[MATH_BIGINTEGER_VALUE]; + } + + /** + * (Regular) Barrett Modular Reduction + * + * For numbers with more than four digits Math_BigInteger::_barrett() is faster. The difference between that and this + * is that this function does not fold the denominator into a smaller form. + * + * @see self::_slidingWindow() + * @access private + * @param array $x + * @param array $n + * @return array + */ + function _regularBarrett($x, $n) + { + static $cache = array( + MATH_BIGINTEGER_VARIABLE => array(), + MATH_BIGINTEGER_DATA => array() + ); + + $n_length = count($n); + + if (count($x) > 2 * $n_length) { + $lhs = new Math_BigInteger(); + $rhs = new Math_BigInteger(); + $lhs->value = $x; + $rhs->value = $n; + list(, $temp) = $lhs->divide($rhs); + return $temp->value; + } + + if (($key = array_search($n, $cache[MATH_BIGINTEGER_VARIABLE])) === false) { + $key = count($cache[MATH_BIGINTEGER_VARIABLE]); + $cache[MATH_BIGINTEGER_VARIABLE][] = $n; + $lhs = new Math_BigInteger(); + $lhs_value = &$lhs->value; + $lhs_value = $this->_array_repeat(0, 2 * $n_length); + $lhs_value[] = 1; + $rhs = new Math_BigInteger(); + $rhs->value = $n; + list($temp, ) = $lhs->divide($rhs); // m.length + $cache[MATH_BIGINTEGER_DATA][] = $temp->value; + } + + // 2 * m.length - (m.length - 1) = m.length + 1 + $temp = array_slice($x, $n_length - 1); + // (m.length + 1) + m.length = 2 * m.length + 1 + $temp = $this->_multiply($temp, false, $cache[MATH_BIGINTEGER_DATA][$key], false); + // (2 * m.length + 1) - (m.length - 1) = m.length + 2 + $temp = array_slice($temp[MATH_BIGINTEGER_VALUE], $n_length + 1); + + // m.length + 1 + $result = array_slice($x, 0, $n_length + 1); + // m.length + 1 + $temp = $this->_multiplyLower($temp, false, $n, false, $n_length + 1); + // $temp == array_slice($temp->_multiply($temp, false, $n, false)->value, 0, $n_length + 1) + + if ($this->_compare($result, false, $temp[MATH_BIGINTEGER_VALUE], $temp[MATH_BIGINTEGER_SIGN]) < 0) { + $corrector_value = $this->_array_repeat(0, $n_length + 1); + $corrector_value[count($corrector_value)] = 1; + $result = $this->_add($result, false, $corrector_value, false); + $result = $result[MATH_BIGINTEGER_VALUE]; + } + + // at this point, we're subtracting a number with m.length + 1 digits from another number with m.length + 1 digits + $result = $this->_subtract($result, false, $temp[MATH_BIGINTEGER_VALUE], $temp[MATH_BIGINTEGER_SIGN]); + while ($this->_compare($result[MATH_BIGINTEGER_VALUE], $result[MATH_BIGINTEGER_SIGN], $n, false) > 0) { + $result = $this->_subtract($result[MATH_BIGINTEGER_VALUE], $result[MATH_BIGINTEGER_SIGN], $n, false); + } + + return $result[MATH_BIGINTEGER_VALUE]; + } + + /** + * Performs long multiplication up to $stop digits + * + * If you're going to be doing array_slice($product->value, 0, $stop), some cycles can be saved. + * + * @see self::_regularBarrett() + * @param array $x_value + * @param bool $x_negative + * @param array $y_value + * @param bool $y_negative + * @param int $stop + * @return array + * @access private + */ + function _multiplyLower($x_value, $x_negative, $y_value, $y_negative, $stop) + { + $x_length = count($x_value); + $y_length = count($y_value); + + if (!$x_length || !$y_length) { // a 0 is being multiplied + return array( + MATH_BIGINTEGER_VALUE => array(), + MATH_BIGINTEGER_SIGN => false + ); + } + + if ($x_length < $y_length) { + $temp = $x_value; + $x_value = $y_value; + $y_value = $temp; + + $x_length = count($x_value); + $y_length = count($y_value); + } + + $product_value = $this->_array_repeat(0, $x_length + $y_length); + + // the following for loop could be removed if the for loop following it + // (the one with nested for loops) initially set $i to 0, but + // doing so would also make the result in one set of unnecessary adds, + // since on the outermost loops first pass, $product->value[$k] is going + // to always be 0 + + $carry = 0; + + for ($j = 0; $j < $x_length; ++$j) { // ie. $i = 0, $k = $i + $temp = $x_value[$j] * $y_value[0] + $carry; // $product_value[$k] == 0 + $carry = MATH_BIGINTEGER_BASE === 26 ? intval($temp / 0x4000000) : ($temp >> 31); + $product_value[$j] = (int) ($temp - MATH_BIGINTEGER_BASE_FULL * $carry); + } + + if ($j < $stop) { + $product_value[$j] = $carry; + } + + // the above for loop is what the previous comment was talking about. the + // following for loop is the "one with nested for loops" + + for ($i = 1; $i < $y_length; ++$i) { + $carry = 0; + + for ($j = 0, $k = $i; $j < $x_length && $k < $stop; ++$j, ++$k) { + $temp = $product_value[$k] + $x_value[$j] * $y_value[$i] + $carry; + $carry = MATH_BIGINTEGER_BASE === 26 ? intval($temp / 0x4000000) : ($temp >> 31); + $product_value[$k] = (int) ($temp - MATH_BIGINTEGER_BASE_FULL * $carry); + } + + if ($k < $stop) { + $product_value[$k] = $carry; + } + } + + return array( + MATH_BIGINTEGER_VALUE => $this->_trim($product_value), + MATH_BIGINTEGER_SIGN => $x_negative != $y_negative + ); + } + + /** + * Montgomery Modular Reduction + * + * ($x->_prepMontgomery($n))->_montgomery($n) yields $x % $n. + * {@link http://math.libtomcrypt.com/files/tommath.pdf#page=170 MPM 6.3} provides insights on how this can be + * improved upon (basically, by using the comba method). gcd($n, 2) must be equal to one for this function + * to work correctly. + * + * @see self::_prepMontgomery() + * @see self::_slidingWindow() + * @access private + * @param array $x + * @param array $n + * @return array + */ + function _montgomery($x, $n) + { + static $cache = array( + MATH_BIGINTEGER_VARIABLE => array(), + MATH_BIGINTEGER_DATA => array() + ); + + if (($key = array_search($n, $cache[MATH_BIGINTEGER_VARIABLE])) === false) { + $key = count($cache[MATH_BIGINTEGER_VARIABLE]); + $cache[MATH_BIGINTEGER_VARIABLE][] = $x; + $cache[MATH_BIGINTEGER_DATA][] = $this->_modInverse67108864($n); + } + + $k = count($n); + + $result = array(MATH_BIGINTEGER_VALUE => $x); + + for ($i = 0; $i < $k; ++$i) { + $temp = $result[MATH_BIGINTEGER_VALUE][$i] * $cache[MATH_BIGINTEGER_DATA][$key]; + $temp = $temp - MATH_BIGINTEGER_BASE_FULL * (MATH_BIGINTEGER_BASE === 26 ? intval($temp / 0x4000000) : ($temp >> 31)); + $temp = $this->_regularMultiply(array($temp), $n); + $temp = array_merge($this->_array_repeat(0, $i), $temp); + $result = $this->_add($result[MATH_BIGINTEGER_VALUE], false, $temp, false); + } + + $result[MATH_BIGINTEGER_VALUE] = array_slice($result[MATH_BIGINTEGER_VALUE], $k); + + if ($this->_compare($result, false, $n, false) >= 0) { + $result = $this->_subtract($result[MATH_BIGINTEGER_VALUE], false, $n, false); + } + + return $result[MATH_BIGINTEGER_VALUE]; + } + + /** + * Montgomery Multiply + * + * Interleaves the montgomery reduction and long multiplication algorithms together as described in + * {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf#page=13 HAC 14.36} + * + * @see self::_prepMontgomery() + * @see self::_montgomery() + * @access private + * @param array $x + * @param array $y + * @param array $m + * @return array + */ + function _montgomeryMultiply($x, $y, $m) + { + $temp = $this->_multiply($x, false, $y, false); + return $this->_montgomery($temp[MATH_BIGINTEGER_VALUE], $m); + + // the following code, although not callable, can be run independently of the above code + // although the above code performed better in my benchmarks the following could might + // perform better under different circumstances. in lieu of deleting it it's just been + // made uncallable + + static $cache = array( + MATH_BIGINTEGER_VARIABLE => array(), + MATH_BIGINTEGER_DATA => array() + ); + + if (($key = array_search($m, $cache[MATH_BIGINTEGER_VARIABLE])) === false) { + $key = count($cache[MATH_BIGINTEGER_VARIABLE]); + $cache[MATH_BIGINTEGER_VARIABLE][] = $m; + $cache[MATH_BIGINTEGER_DATA][] = $this->_modInverse67108864($m); + } + + $n = max(count($x), count($y), count($m)); + $x = array_pad($x, $n, 0); + $y = array_pad($y, $n, 0); + $m = array_pad($m, $n, 0); + $a = array(MATH_BIGINTEGER_VALUE => $this->_array_repeat(0, $n + 1)); + for ($i = 0; $i < $n; ++$i) { + $temp = $a[MATH_BIGINTEGER_VALUE][0] + $x[$i] * $y[0]; + $temp = $temp - MATH_BIGINTEGER_BASE_FULL * (MATH_BIGINTEGER_BASE === 26 ? intval($temp / 0x4000000) : ($temp >> 31)); + $temp = $temp * $cache[MATH_BIGINTEGER_DATA][$key]; + $temp = $temp - MATH_BIGINTEGER_BASE_FULL * (MATH_BIGINTEGER_BASE === 26 ? intval($temp / 0x4000000) : ($temp >> 31)); + $temp = $this->_add($this->_regularMultiply(array($x[$i]), $y), false, $this->_regularMultiply(array($temp), $m), false); + $a = $this->_add($a[MATH_BIGINTEGER_VALUE], false, $temp[MATH_BIGINTEGER_VALUE], false); + $a[MATH_BIGINTEGER_VALUE] = array_slice($a[MATH_BIGINTEGER_VALUE], 1); + } + if ($this->_compare($a[MATH_BIGINTEGER_VALUE], false, $m, false) >= 0) { + $a = $this->_subtract($a[MATH_BIGINTEGER_VALUE], false, $m, false); + } + return $a[MATH_BIGINTEGER_VALUE]; + } + + /** + * Prepare a number for use in Montgomery Modular Reductions + * + * @see self::_montgomery() + * @see self::_slidingWindow() + * @access private + * @param array $x + * @param array $n + * @return array + */ + function _prepMontgomery($x, $n) + { + $lhs = new Math_BigInteger(); + $lhs->value = array_merge($this->_array_repeat(0, count($n)), $x); + $rhs = new Math_BigInteger(); + $rhs->value = $n; + + list(, $temp) = $lhs->divide($rhs); + return $temp->value; + } + + /** + * Modular Inverse of a number mod 2**26 (eg. 67108864) + * + * Based off of the bnpInvDigit function implemented and justified in the following URL: + * + * {@link http://www-cs-students.stanford.edu/~tjw/jsbn/jsbn.js} + * + * The following URL provides more info: + * + * {@link http://groups.google.com/group/sci.crypt/msg/7a137205c1be7d85} + * + * As for why we do all the bitmasking... strange things can happen when converting from floats to ints. For + * instance, on some computers, var_dump((int) -4294967297) yields int(-1) and on others, it yields + * int(-2147483648). To avoid problems stemming from this, we use bitmasks to guarantee that ints aren't + * auto-converted to floats. The outermost bitmask is present because without it, there's no guarantee that + * the "residue" returned would be the so-called "common residue". We use fmod, in the last step, because the + * maximum possible $x is 26 bits and the maximum $result is 16 bits. Thus, we have to be able to handle up to + * 40 bits, which only 64-bit floating points will support. + * + * Thanks to Pedro Gimeno Fortea for input! + * + * @see self::_montgomery() + * @access private + * @param array $x + * @return int + */ + function _modInverse67108864($x) // 2**26 == 67,108,864 + { + $x = -$x[0]; + $result = $x & 0x3; // x**-1 mod 2**2 + $result = ($result * (2 - $x * $result)) & 0xF; // x**-1 mod 2**4 + $result = ($result * (2 - ($x & 0xFF) * $result)) & 0xFF; // x**-1 mod 2**8 + $result = ($result * ((2 - ($x & 0xFFFF) * $result) & 0xFFFF)) & 0xFFFF; // x**-1 mod 2**16 + $result = fmod($result * (2 - fmod($x * $result, MATH_BIGINTEGER_BASE_FULL)), MATH_BIGINTEGER_BASE_FULL); // x**-1 mod 2**26 + return $result & MATH_BIGINTEGER_MAX_DIGIT; + } + + /** + * Calculates modular inverses. + * + * Say you have (30 mod 17 * x mod 17) mod 17 == 1. x can be found using modular inverses. + * + * Here's an example: + * + * modInverse($b); + * echo $c->toString(); // outputs 4 + * + * echo "\r\n"; + * + * $d = $a->multiply($c); + * list(, $d) = $d->divide($b); + * echo $d; // outputs 1 (as per the definition of modular inverse) + * ?> + * + * + * @param Math_BigInteger $n + * @return Math_BigInteger|false + * @access public + * @internal See {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf#page=21 HAC 14.64} for more information. + */ + function modInverse($n) + { + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + $temp = new Math_BigInteger(); + $temp->value = gmp_invert($this->value, $n->value); + + return ($temp->value === false) ? false : $this->_normalize($temp); + } + + static $zero, $one; + if (!isset($zero)) { + $zero = new Math_BigInteger(); + $one = new Math_BigInteger(1); + } + + // $x mod -$n == $x mod $n. + $n = $n->abs(); + + if ($this->compare($zero) < 0) { + $temp = $this->abs(); + $temp = $temp->modInverse($n); + return $this->_normalize($n->subtract($temp)); + } + + extract($this->extendedGCD($n)); + + if (!$gcd->equals($one)) { + return false; + } + + $x = $x->compare($zero) < 0 ? $x->add($n) : $x; + + return $this->compare($zero) < 0 ? $this->_normalize($n->subtract($x)) : $this->_normalize($x); + } + + /** + * Calculates the greatest common divisor and Bezout's identity. + * + * Say you have 693 and 609. The GCD is 21. Bezout's identity states that there exist integers x and y such that + * 693*x + 609*y == 21. In point of fact, there are actually an infinite number of x and y combinations and which + * combination is returned is dependent upon which mode is in use. See + * {@link http://en.wikipedia.org/wiki/B%C3%A9zout%27s_identity Bezout's identity - Wikipedia} for more information. + * + * Here's an example: + * + * extendedGCD($b)); + * + * echo $gcd->toString() . "\r\n"; // outputs 21 + * echo $a->toString() * $x->toString() + $b->toString() * $y->toString(); // outputs 21 + * ?> + * + * + * @param Math_BigInteger $n + * @return Math_BigInteger + * @access public + * @internal Calculates the GCD using the binary xGCD algorithim described in + * {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf#page=19 HAC 14.61}. As the text above 14.61 notes, + * the more traditional algorithim requires "relatively costly multiple-precision divisions". + */ + function extendedGCD($n) + { + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + extract(gmp_gcdext($this->value, $n->value)); + + return array( + 'gcd' => $this->_normalize(new Math_BigInteger($g)), + 'x' => $this->_normalize(new Math_BigInteger($s)), + 'y' => $this->_normalize(new Math_BigInteger($t)) + ); + case MATH_BIGINTEGER_MODE_BCMATH: + // it might be faster to use the binary xGCD algorithim here, as well, but (1) that algorithim works + // best when the base is a power of 2 and (2) i don't think it'd make much difference, anyway. as is, + // the basic extended euclidean algorithim is what we're using. + + $u = $this->value; + $v = $n->value; + + $a = '1'; + $b = '0'; + $c = '0'; + $d = '1'; + + while (bccomp($v, '0', 0) != 0) { + $q = bcdiv($u, $v, 0); + + $temp = $u; + $u = $v; + $v = bcsub($temp, bcmul($v, $q, 0), 0); + + $temp = $a; + $a = $c; + $c = bcsub($temp, bcmul($a, $q, 0), 0); + + $temp = $b; + $b = $d; + $d = bcsub($temp, bcmul($b, $q, 0), 0); + } + + return array( + 'gcd' => $this->_normalize(new Math_BigInteger($u)), + 'x' => $this->_normalize(new Math_BigInteger($a)), + 'y' => $this->_normalize(new Math_BigInteger($b)) + ); + } + + $y = $n->copy(); + $x = $this->copy(); + $g = new Math_BigInteger(); + $g->value = array(1); + + while (!(($x->value[0] & 1)|| ($y->value[0] & 1))) { + $x->_rshift(1); + $y->_rshift(1); + $g->_lshift(1); + } + + $u = $x->copy(); + $v = $y->copy(); + + $a = new Math_BigInteger(); + $b = new Math_BigInteger(); + $c = new Math_BigInteger(); + $d = new Math_BigInteger(); + + $a->value = $d->value = $g->value = array(1); + $b->value = $c->value = array(); + + while (!empty($u->value)) { + while (!($u->value[0] & 1)) { + $u->_rshift(1); + if ((!empty($a->value) && ($a->value[0] & 1)) || (!empty($b->value) && ($b->value[0] & 1))) { + $a = $a->add($y); + $b = $b->subtract($x); + } + $a->_rshift(1); + $b->_rshift(1); + } + + while (!($v->value[0] & 1)) { + $v->_rshift(1); + if ((!empty($d->value) && ($d->value[0] & 1)) || (!empty($c->value) && ($c->value[0] & 1))) { + $c = $c->add($y); + $d = $d->subtract($x); + } + $c->_rshift(1); + $d->_rshift(1); + } + + if ($u->compare($v) >= 0) { + $u = $u->subtract($v); + $a = $a->subtract($c); + $b = $b->subtract($d); + } else { + $v = $v->subtract($u); + $c = $c->subtract($a); + $d = $d->subtract($b); + } + } + + return array( + 'gcd' => $this->_normalize($g->multiply($v)), + 'x' => $this->_normalize($c), + 'y' => $this->_normalize($d) + ); + } + + /** + * Calculates the greatest common divisor + * + * Say you have 693 and 609. The GCD is 21. + * + * Here's an example: + * + * extendedGCD($b); + * + * echo $gcd->toString() . "\r\n"; // outputs 21 + * ?> + * + * + * @param Math_BigInteger $n + * @return Math_BigInteger + * @access public + */ + function gcd($n) + { + extract($this->extendedGCD($n)); + return $gcd; + } + + /** + * Absolute value. + * + * @return Math_BigInteger + * @access public + */ + function abs() + { + $temp = new Math_BigInteger(); + + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + $temp->value = gmp_abs($this->value); + break; + case MATH_BIGINTEGER_MODE_BCMATH: + $temp->value = (bccomp($this->value, '0', 0) < 0) ? substr($this->value, 1) : $this->value; + break; + default: + $temp->value = $this->value; + } + + return $temp; + } + + /** + * Compares two numbers. + * + * Although one might think !$x->compare($y) means $x != $y, it, in fact, means the opposite. The reason for this is + * demonstrated thusly: + * + * $x > $y: $x->compare($y) > 0 + * $x < $y: $x->compare($y) < 0 + * $x == $y: $x->compare($y) == 0 + * + * Note how the same comparison operator is used. If you want to test for equality, use $x->equals($y). + * + * @param Math_BigInteger $y + * @return int < 0 if $this is less than $y; > 0 if $this is greater than $y, and 0 if they are equal. + * @access public + * @see self::equals() + * @internal Could return $this->subtract($x), but that's not as fast as what we do do. + */ + function compare($y) + { + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + return gmp_cmp($this->value, $y->value); + case MATH_BIGINTEGER_MODE_BCMATH: + return bccomp($this->value, $y->value, 0); + } + + return $this->_compare($this->value, $this->is_negative, $y->value, $y->is_negative); + } + + /** + * Compares two numbers. + * + * @param array $x_value + * @param bool $x_negative + * @param array $y_value + * @param bool $y_negative + * @return int + * @see self::compare() + * @access private + */ + function _compare($x_value, $x_negative, $y_value, $y_negative) + { + if ($x_negative != $y_negative) { + return (!$x_negative && $y_negative) ? 1 : -1; + } + + $result = $x_negative ? -1 : 1; + + if (count($x_value) != count($y_value)) { + return (count($x_value) > count($y_value)) ? $result : -$result; + } + $size = max(count($x_value), count($y_value)); + + $x_value = array_pad($x_value, $size, 0); + $y_value = array_pad($y_value, $size, 0); + + for ($i = count($x_value) - 1; $i >= 0; --$i) { + if ($x_value[$i] != $y_value[$i]) { + return ($x_value[$i] > $y_value[$i]) ? $result : -$result; + } + } + + return 0; + } + + /** + * Tests the equality of two numbers. + * + * If you need to see if one number is greater than or less than another number, use Math_BigInteger::compare() + * + * @param Math_BigInteger $x + * @return bool + * @access public + * @see self::compare() + */ + function equals($x) + { + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + return gmp_cmp($this->value, $x->value) == 0; + default: + return $this->value === $x->value && $this->is_negative == $x->is_negative; + } + } + + /** + * Set Precision + * + * Some bitwise operations give different results depending on the precision being used. Examples include left + * shift, not, and rotates. + * + * @param int $bits + * @access public + */ + function setPrecision($bits) + { + $this->precision = $bits; + if (MATH_BIGINTEGER_MODE != MATH_BIGINTEGER_MODE_BCMATH) { + $this->bitmask = new Math_BigInteger(chr((1 << ($bits & 0x7)) - 1) . str_repeat(chr(0xFF), $bits >> 3), 256); + } else { + $this->bitmask = new Math_BigInteger(bcpow('2', $bits, 0)); + } + + $temp = $this->_normalize($this); + $this->value = $temp->value; + } + + /** + * Logical And + * + * @param Math_BigInteger $x + * @access public + * @internal Implemented per a request by Lluis Pamies i Juarez + * @return Math_BigInteger + */ + function bitwise_and($x) + { + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + $temp = new Math_BigInteger(); + $temp->value = gmp_and($this->value, $x->value); + + return $this->_normalize($temp); + case MATH_BIGINTEGER_MODE_BCMATH: + $left = $this->toBytes(); + $right = $x->toBytes(); + + $length = max(strlen($left), strlen($right)); + + $left = str_pad($left, $length, chr(0), STR_PAD_LEFT); + $right = str_pad($right, $length, chr(0), STR_PAD_LEFT); + + return $this->_normalize(new Math_BigInteger($left & $right, 256)); + } + + $result = $this->copy(); + + $length = min(count($x->value), count($this->value)); + + $result->value = array_slice($result->value, 0, $length); + + for ($i = 0; $i < $length; ++$i) { + $result->value[$i]&= $x->value[$i]; + } + + return $this->_normalize($result); + } + + /** + * Logical Or + * + * @param Math_BigInteger $x + * @access public + * @internal Implemented per a request by Lluis Pamies i Juarez + * @return Math_BigInteger + */ + function bitwise_or($x) + { + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + $temp = new Math_BigInteger(); + $temp->value = gmp_or($this->value, $x->value); + + return $this->_normalize($temp); + case MATH_BIGINTEGER_MODE_BCMATH: + $left = $this->toBytes(); + $right = $x->toBytes(); + + $length = max(strlen($left), strlen($right)); + + $left = str_pad($left, $length, chr(0), STR_PAD_LEFT); + $right = str_pad($right, $length, chr(0), STR_PAD_LEFT); + + return $this->_normalize(new Math_BigInteger($left | $right, 256)); + } + + $length = max(count($this->value), count($x->value)); + $result = $this->copy(); + $result->value = array_pad($result->value, $length, 0); + $x->value = array_pad($x->value, $length, 0); + + for ($i = 0; $i < $length; ++$i) { + $result->value[$i]|= $x->value[$i]; + } + + return $this->_normalize($result); + } + + /** + * Logical Exclusive-Or + * + * @param Math_BigInteger $x + * @access public + * @internal Implemented per a request by Lluis Pamies i Juarez + * @return Math_BigInteger + */ + function bitwise_xor($x) + { + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + $temp = new Math_BigInteger(); + $temp->value = gmp_xor($this->value, $x->value); + + return $this->_normalize($temp); + case MATH_BIGINTEGER_MODE_BCMATH: + $left = $this->toBytes(); + $right = $x->toBytes(); + + $length = max(strlen($left), strlen($right)); + + $left = str_pad($left, $length, chr(0), STR_PAD_LEFT); + $right = str_pad($right, $length, chr(0), STR_PAD_LEFT); + + return $this->_normalize(new Math_BigInteger($left ^ $right, 256)); + } + + $length = max(count($this->value), count($x->value)); + $result = $this->copy(); + $result->value = array_pad($result->value, $length, 0); + $x->value = array_pad($x->value, $length, 0); + + for ($i = 0; $i < $length; ++$i) { + $result->value[$i]^= $x->value[$i]; + } + + return $this->_normalize($result); + } + + /** + * Logical Not + * + * @access public + * @internal Implemented per a request by Lluis Pamies i Juarez + * @return Math_BigInteger + */ + function bitwise_not() + { + // calculuate "not" without regard to $this->precision + // (will always result in a smaller number. ie. ~1 isn't 1111 1110 - it's 0) + $temp = $this->toBytes(); + if ($temp == '') { + return ''; + } + $pre_msb = decbin(ord($temp[0])); + $temp = ~$temp; + $msb = decbin(ord($temp[0])); + if (strlen($msb) == 8) { + $msb = substr($msb, strpos($msb, '0')); + } + $temp[0] = chr(bindec($msb)); + + // see if we need to add extra leading 1's + $current_bits = strlen($pre_msb) + 8 * strlen($temp) - 8; + $new_bits = $this->precision - $current_bits; + if ($new_bits <= 0) { + return $this->_normalize(new Math_BigInteger($temp, 256)); + } + + // generate as many leading 1's as we need to. + $leading_ones = chr((1 << ($new_bits & 0x7)) - 1) . str_repeat(chr(0xFF), $new_bits >> 3); + $this->_base256_lshift($leading_ones, $current_bits); + + $temp = str_pad($temp, strlen($leading_ones), chr(0), STR_PAD_LEFT); + + return $this->_normalize(new Math_BigInteger($leading_ones | $temp, 256)); + } + + /** + * Logical Right Shift + * + * Shifts BigInteger's by $shift bits, effectively dividing by 2**$shift. + * + * @param int $shift + * @return Math_BigInteger + * @access public + * @internal The only version that yields any speed increases is the internal version. + */ + function bitwise_rightShift($shift) + { + $temp = new Math_BigInteger(); + + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + static $two; + + if (!isset($two)) { + $two = gmp_init('2'); + } + + $temp->value = gmp_div_q($this->value, gmp_pow($two, $shift)); + + break; + case MATH_BIGINTEGER_MODE_BCMATH: + $temp->value = bcdiv($this->value, bcpow('2', $shift, 0), 0); + + break; + default: // could just replace _lshift with this, but then all _lshift() calls would need to be rewritten + // and I don't want to do that... + $temp->value = $this->value; + $temp->_rshift($shift); + } + + return $this->_normalize($temp); + } + + /** + * Logical Left Shift + * + * Shifts BigInteger's by $shift bits, effectively multiplying by 2**$shift. + * + * @param int $shift + * @return Math_BigInteger + * @access public + * @internal The only version that yields any speed increases is the internal version. + */ + function bitwise_leftShift($shift) + { + $temp = new Math_BigInteger(); + + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + static $two; + + if (!isset($two)) { + $two = gmp_init('2'); + } + + $temp->value = gmp_mul($this->value, gmp_pow($two, $shift)); + + break; + case MATH_BIGINTEGER_MODE_BCMATH: + $temp->value = bcmul($this->value, bcpow('2', $shift, 0), 0); + + break; + default: // could just replace _rshift with this, but then all _lshift() calls would need to be rewritten + // and I don't want to do that... + $temp->value = $this->value; + $temp->_lshift($shift); + } + + return $this->_normalize($temp); + } + + /** + * Logical Left Rotate + * + * Instead of the top x bits being dropped they're appended to the shifted bit string. + * + * @param int $shift + * @return Math_BigInteger + * @access public + */ + function bitwise_leftRotate($shift) + { + $bits = $this->toBytes(); + + if ($this->precision > 0) { + $precision = $this->precision; + if (MATH_BIGINTEGER_MODE == MATH_BIGINTEGER_MODE_BCMATH) { + $mask = $this->bitmask->subtract(new Math_BigInteger(1)); + $mask = $mask->toBytes(); + } else { + $mask = $this->bitmask->toBytes(); + } + } else { + $temp = ord($bits[0]); + for ($i = 0; $temp >> $i; ++$i) { + } + $precision = 8 * strlen($bits) - 8 + $i; + $mask = chr((1 << ($precision & 0x7)) - 1) . str_repeat(chr(0xFF), $precision >> 3); + } + + if ($shift < 0) { + $shift+= $precision; + } + $shift%= $precision; + + if (!$shift) { + return $this->copy(); + } + + $left = $this->bitwise_leftShift($shift); + $left = $left->bitwise_and(new Math_BigInteger($mask, 256)); + $right = $this->bitwise_rightShift($precision - $shift); + $result = MATH_BIGINTEGER_MODE != MATH_BIGINTEGER_MODE_BCMATH ? $left->bitwise_or($right) : $left->add($right); + return $this->_normalize($result); + } + + /** + * Logical Right Rotate + * + * Instead of the bottom x bits being dropped they're prepended to the shifted bit string. + * + * @param int $shift + * @return Math_BigInteger + * @access public + */ + function bitwise_rightRotate($shift) + { + return $this->bitwise_leftRotate(-$shift); + } + + /** + * Set random number generator function + * + * This function is deprecated. + * + * @param string $generator + * @access public + */ + function setRandomGenerator($generator) + { + } + + /** + * Generates a random BigInteger + * + * Byte length is equal to $length. Uses crypt_random if it's loaded and mt_rand if it's not. + * + * @param int $length + * @return Math_BigInteger + * @access private + */ + function _random_number_helper($size) + { + if (function_exists('crypt_random_string')) { + $random = crypt_random_string($size); + } else { + $random = ''; + + if ($size & 1) { + $random.= chr(mt_rand(0, 255)); + } + + $blocks = $size >> 1; + for ($i = 0; $i < $blocks; ++$i) { + // mt_rand(-2147483648, 0x7FFFFFFF) always produces -2147483648 on some systems + $random.= pack('n', mt_rand(0, 0xFFFF)); + } + } + + return new Math_BigInteger($random, 256); + } + + /** + * Generate a random number + * + * Returns a random number between $min and $max where $min and $max + * can be defined using one of the two methods: + * + * $min->random($max) + * $max->random($min) + * + * @param Math_BigInteger $arg1 + * @param Math_BigInteger $arg2 + * @return Math_BigInteger + * @access public + * @internal The API for creating random numbers used to be $a->random($min, $max), where $a was a Math_BigInteger object. + * That method is still supported for BC purposes. + */ + function random($arg1, $arg2 = false) + { + if ($arg1 === false) { + return false; + } + + if ($arg2 === false) { + $max = $arg1; + $min = $this; + } else { + $min = $arg1; + $max = $arg2; + } + + $compare = $max->compare($min); + + if (!$compare) { + return $this->_normalize($min); + } elseif ($compare < 0) { + // if $min is bigger then $max, swap $min and $max + $temp = $max; + $max = $min; + $min = $temp; + } + + static $one; + if (!isset($one)) { + $one = new Math_BigInteger(1); + } + + $max = $max->subtract($min->subtract($one)); + $size = strlen(ltrim($max->toBytes(), chr(0))); + + /* + doing $random % $max doesn't work because some numbers will be more likely to occur than others. + eg. if $max is 140 and $random's max is 255 then that'd mean both $random = 5 and $random = 145 + would produce 5 whereas the only value of random that could produce 139 would be 139. ie. + not all numbers would be equally likely. some would be more likely than others. + + creating a whole new random number until you find one that is within the range doesn't work + because, for sufficiently small ranges, the likelihood that you'd get a number within that range + would be pretty small. eg. with $random's max being 255 and if your $max being 1 the probability + would be pretty high that $random would be greater than $max. + + phpseclib works around this using the technique described here: + + http://crypto.stackexchange.com/questions/5708/creating-a-small-number-from-a-cryptographically-secure-random-string + */ + $random_max = new Math_BigInteger(chr(1) . str_repeat("\0", $size), 256); + $random = $this->_random_number_helper($size); + + list($max_multiple) = $random_max->divide($max); + $max_multiple = $max_multiple->multiply($max); + + while ($random->compare($max_multiple) >= 0) { + $random = $random->subtract($max_multiple); + $random_max = $random_max->subtract($max_multiple); + $random = $random->bitwise_leftShift(8); + $random = $random->add($this->_random_number_helper(1)); + $random_max = $random_max->bitwise_leftShift(8); + list($max_multiple) = $random_max->divide($max); + $max_multiple = $max_multiple->multiply($max); + } + list(, $random) = $random->divide($max); + + return $this->_normalize($random->add($min)); + } + + /** + * Generate a random prime number. + * + * If there's not a prime within the given range, false will be returned. + * If more than $timeout seconds have elapsed, give up and return false. + * + * @param Math_BigInteger $arg1 + * @param Math_BigInteger $arg2 + * @param int $timeout + * @return Math_BigInteger|false + * @access public + * @internal See {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap4.pdf#page=15 HAC 4.44}. + */ + function randomPrime($arg1, $arg2 = false, $timeout = false) + { + if ($arg1 === false) { + return false; + } + + if ($arg2 === false) { + $max = $arg1; + $min = $this; + } else { + $min = $arg1; + $max = $arg2; + } + + $compare = $max->compare($min); + + if (!$compare) { + return $min->isPrime() ? $min : false; + } elseif ($compare < 0) { + // if $min is bigger then $max, swap $min and $max + $temp = $max; + $max = $min; + $min = $temp; + } + + static $one, $two; + if (!isset($one)) { + $one = new Math_BigInteger(1); + $two = new Math_BigInteger(2); + } + + $start = time(); + + $x = $this->random($min, $max); + + // gmp_nextprime() requires PHP 5 >= 5.2.0 per . + if (MATH_BIGINTEGER_MODE == MATH_BIGINTEGER_MODE_GMP && extension_loaded('gmp') && version_compare(PHP_VERSION, '5.2.0', '>=')) { + $p = new Math_BigInteger(); + $p->value = gmp_nextprime($x->value); + + if ($p->compare($max) <= 0) { + return $p; + } + + if (!$min->equals($x)) { + $x = $x->subtract($one); + } + + return $x->randomPrime($min, $x); + } + + if ($x->equals($two)) { + return $x; + } + + $x->_make_odd(); + if ($x->compare($max) > 0) { + // if $x > $max then $max is even and if $min == $max then no prime number exists between the specified range + if ($min->equals($max)) { + return false; + } + $x = $min->copy(); + $x->_make_odd(); + } + + $initial_x = $x->copy(); + + while (true) { + if ($timeout !== false && time() - $start > $timeout) { + return false; + } + + if ($x->isPrime()) { + return $x; + } + + $x = $x->add($two); + + if ($x->compare($max) > 0) { + $x = $min->copy(); + if ($x->equals($two)) { + return $x; + } + $x->_make_odd(); + } + + if ($x->equals($initial_x)) { + return false; + } + } + } + + /** + * Make the current number odd + * + * If the current number is odd it'll be unchanged. If it's even, one will be added to it. + * + * @see self::randomPrime() + * @access private + */ + function _make_odd() + { + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + gmp_setbit($this->value, 0); + break; + case MATH_BIGINTEGER_MODE_BCMATH: + if ($this->value[strlen($this->value) - 1] % 2 == 0) { + $this->value = bcadd($this->value, '1'); + } + break; + default: + $this->value[0] |= 1; + } + } + + /** + * Checks a numer to see if it's prime + * + * Assuming the $t parameter is not set, this function has an error rate of 2**-80. The main motivation for the + * $t parameter is distributability. Math_BigInteger::randomPrime() can be distributed across multiple pageloads + * on a website instead of just one. + * + * @param Math_BigInteger $t + * @return bool + * @access public + * @internal Uses the + * {@link http://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test Miller-Rabin primality test}. See + * {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap4.pdf#page=8 HAC 4.24}. + */ + function isPrime($t = false) + { + $length = strlen($this->toBytes()); + + if (!$t) { + // see HAC 4.49 "Note (controlling the error probability)" + // @codingStandardsIgnoreStart + if ($length >= 163) { $t = 2; } // floor(1300 / 8) + else if ($length >= 106) { $t = 3; } // floor( 850 / 8) + else if ($length >= 81 ) { $t = 4; } // floor( 650 / 8) + else if ($length >= 68 ) { $t = 5; } // floor( 550 / 8) + else if ($length >= 56 ) { $t = 6; } // floor( 450 / 8) + else if ($length >= 50 ) { $t = 7; } // floor( 400 / 8) + else if ($length >= 43 ) { $t = 8; } // floor( 350 / 8) + else if ($length >= 37 ) { $t = 9; } // floor( 300 / 8) + else if ($length >= 31 ) { $t = 12; } // floor( 250 / 8) + else if ($length >= 25 ) { $t = 15; } // floor( 200 / 8) + else if ($length >= 18 ) { $t = 18; } // floor( 150 / 8) + else { $t = 27; } + // @codingStandardsIgnoreEnd + } + + // ie. gmp_testbit($this, 0) + // ie. isEven() or !isOdd() + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + return gmp_prob_prime($this->value, $t) != 0; + case MATH_BIGINTEGER_MODE_BCMATH: + if ($this->value === '2') { + return true; + } + if ($this->value[strlen($this->value) - 1] % 2 == 0) { + return false; + } + break; + default: + if ($this->value == array(2)) { + return true; + } + if (~$this->value[0] & 1) { + return false; + } + } + + static $primes, $zero, $one, $two; + + if (!isset($primes)) { + $primes = array( + 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, + 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, + 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, + 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, + 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, + 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, + 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, + 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, + 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, + 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, + 953, 967, 971, 977, 983, 991, 997 + ); + + if (MATH_BIGINTEGER_MODE != MATH_BIGINTEGER_MODE_INTERNAL) { + for ($i = 0; $i < count($primes); ++$i) { + $primes[$i] = new Math_BigInteger($primes[$i]); + } + } + + $zero = new Math_BigInteger(); + $one = new Math_BigInteger(1); + $two = new Math_BigInteger(2); + } + + if ($this->equals($one)) { + return false; + } + + // see HAC 4.4.1 "Random search for probable primes" + if (MATH_BIGINTEGER_MODE != MATH_BIGINTEGER_MODE_INTERNAL) { + foreach ($primes as $prime) { + list(, $r) = $this->divide($prime); + if ($r->equals($zero)) { + return $this->equals($prime); + } + } + } else { + $value = $this->value; + foreach ($primes as $prime) { + list(, $r) = $this->_divide_digit($value, $prime); + if (!$r) { + return count($value) == 1 && $value[0] == $prime; + } + } + } + + $n = $this->copy(); + $n_1 = $n->subtract($one); + $n_2 = $n->subtract($two); + + $r = $n_1->copy(); + $r_value = $r->value; + // ie. $s = gmp_scan1($n, 0) and $r = gmp_div_q($n, gmp_pow(gmp_init('2'), $s)); + if (MATH_BIGINTEGER_MODE == MATH_BIGINTEGER_MODE_BCMATH) { + $s = 0; + // if $n was 1, $r would be 0 and this would be an infinite loop, hence our $this->equals($one) check earlier + while ($r->value[strlen($r->value) - 1] % 2 == 0) { + $r->value = bcdiv($r->value, '2', 0); + ++$s; + } + } else { + for ($i = 0, $r_length = count($r_value); $i < $r_length; ++$i) { + $temp = ~$r_value[$i] & 0xFFFFFF; + for ($j = 1; ($temp >> $j) & 1; ++$j) { + } + if ($j != 25) { + break; + } + } + $s = 26 * $i + $j - 1; + $r->_rshift($s); + } + + for ($i = 0; $i < $t; ++$i) { + $a = $this->random($two, $n_2); + $y = $a->modPow($r, $n); + + if (!$y->equals($one) && !$y->equals($n_1)) { + for ($j = 1; $j < $s && !$y->equals($n_1); ++$j) { + $y = $y->modPow($two, $n); + if ($y->equals($one)) { + return false; + } + } + + if (!$y->equals($n_1)) { + return false; + } + } + } + return true; + } + + /** + * Logical Left Shift + * + * Shifts BigInteger's by $shift bits. + * + * @param int $shift + * @access private + */ + function _lshift($shift) + { + if ($shift == 0) { + return; + } + + $num_digits = (int) ($shift / MATH_BIGINTEGER_BASE); + $shift %= MATH_BIGINTEGER_BASE; + $shift = 1 << $shift; + + $carry = 0; + + for ($i = 0; $i < count($this->value); ++$i) { + $temp = $this->value[$i] * $shift + $carry; + $carry = MATH_BIGINTEGER_BASE === 26 ? intval($temp / 0x4000000) : ($temp >> 31); + $this->value[$i] = (int) ($temp - $carry * MATH_BIGINTEGER_BASE_FULL); + } + + if ($carry) { + $this->value[count($this->value)] = $carry; + } + + while ($num_digits--) { + array_unshift($this->value, 0); + } + } + + /** + * Logical Right Shift + * + * Shifts BigInteger's by $shift bits. + * + * @param int $shift + * @access private + */ + function _rshift($shift) + { + if ($shift == 0) { + return; + } + + $num_digits = (int) ($shift / MATH_BIGINTEGER_BASE); + $shift %= MATH_BIGINTEGER_BASE; + $carry_shift = MATH_BIGINTEGER_BASE - $shift; + $carry_mask = (1 << $shift) - 1; + + if ($num_digits) { + $this->value = array_slice($this->value, $num_digits); + } + + $carry = 0; + + for ($i = count($this->value) - 1; $i >= 0; --$i) { + $temp = $this->value[$i] >> $shift | $carry; + $carry = ($this->value[$i] & $carry_mask) << $carry_shift; + $this->value[$i] = $temp; + } + + $this->value = $this->_trim($this->value); + } + + /** + * Normalize + * + * Removes leading zeros and truncates (if necessary) to maintain the appropriate precision + * + * @param Math_BigInteger + * @return Math_BigInteger + * @see self::_trim() + * @access private + */ + function _normalize($result) + { + $result->precision = $this->precision; + $result->bitmask = $this->bitmask; + + switch (MATH_BIGINTEGER_MODE) { + case MATH_BIGINTEGER_MODE_GMP: + if ($this->bitmask !== false) { + $result->value = gmp_and($result->value, $result->bitmask->value); + } + + return $result; + case MATH_BIGINTEGER_MODE_BCMATH: + if (!empty($result->bitmask->value)) { + $result->value = bcmod($result->value, $result->bitmask->value); + } + + return $result; + } + + $value = &$result->value; + + if (!count($value)) { + return $result; + } + + $value = $this->_trim($value); + + if (!empty($result->bitmask->value)) { + $length = min(count($value), count($this->bitmask->value)); + $value = array_slice($value, 0, $length); + + for ($i = 0; $i < $length; ++$i) { + $value[$i] = $value[$i] & $this->bitmask->value[$i]; + } + } + + return $result; + } + + /** + * Trim + * + * Removes leading zeros + * + * @param array $value + * @return Math_BigInteger + * @access private + */ + function _trim($value) + { + for ($i = count($value) - 1; $i >= 0; --$i) { + if ($value[$i]) { + break; + } + unset($value[$i]); + } + + return $value; + } + + /** + * Array Repeat + * + * @param $input Array + * @param $multiplier mixed + * @return array + * @access private + */ + function _array_repeat($input, $multiplier) + { + return ($multiplier) ? array_fill(0, $multiplier, $input) : array(); + } + + /** + * Logical Left Shift + * + * Shifts binary strings $shift bits, essentially multiplying by 2**$shift. + * + * @param $x String + * @param $shift Integer + * @return string + * @access private + */ + function _base256_lshift(&$x, $shift) + { + if ($shift == 0) { + return; + } + + $num_bytes = $shift >> 3; // eg. floor($shift/8) + $shift &= 7; // eg. $shift % 8 + + $carry = 0; + for ($i = strlen($x) - 1; $i >= 0; --$i) { + $temp = ord($x[$i]) << $shift | $carry; + $x[$i] = chr($temp); + $carry = $temp >> 8; + } + $carry = ($carry != 0) ? chr($carry) : ''; + $x = $carry . $x . str_repeat(chr(0), $num_bytes); + } + + /** + * Logical Right Shift + * + * Shifts binary strings $shift bits, essentially dividing by 2**$shift and returning the remainder. + * + * @param $x String + * @param $shift Integer + * @return string + * @access private + */ + function _base256_rshift(&$x, $shift) + { + if ($shift == 0) { + $x = ltrim($x, chr(0)); + return ''; + } + + $num_bytes = $shift >> 3; // eg. floor($shift/8) + $shift &= 7; // eg. $shift % 8 + + $remainder = ''; + if ($num_bytes) { + $start = $num_bytes > strlen($x) ? -strlen($x) : -$num_bytes; + $remainder = substr($x, $start); + $x = substr($x, 0, -$num_bytes); + } + + $carry = 0; + $carry_shift = 8 - $shift; + for ($i = 0; $i < strlen($x); ++$i) { + $temp = (ord($x[$i]) >> $shift) | $carry; + $carry = (ord($x[$i]) << $carry_shift) & 0xFF; + $x[$i] = chr($temp); + } + $x = ltrim($x, chr(0)); + + $remainder = chr($carry >> $carry_shift) . $remainder; + + return ltrim($remainder, chr(0)); + } + + // one quirk about how the following functions are implemented is that PHP defines N to be an unsigned long + // at 32-bits, while java's longs are 64-bits. + + /** + * Converts 32-bit integers to bytes. + * + * @param int $x + * @return string + * @access private + */ + function _int2bytes($x) + { + return ltrim(pack('N', $x), chr(0)); + } + + /** + * Converts bytes to 32-bit integers + * + * @param string $x + * @return int + * @access private + */ + function _bytes2int($x) + { + $temp = unpack('Nint', str_pad($x, 4, chr(0), STR_PAD_LEFT)); + return $temp['int']; + } + + /** + * DER-encode an integer + * + * The ability to DER-encode integers is needed to create RSA public keys for use with OpenSSL + * + * @see self::modPow() + * @access private + * @param int $length + * @return string + */ + function _encodeASN1Length($length) + { + if ($length <= 0x7F) { + return chr($length); + } + + $temp = ltrim(pack('N', $length), chr(0)); + return pack('Ca*', 0x80 | strlen($temp), $temp); + } + + /** + * Single digit division + * + * Even if int64 is being used the division operator will return a float64 value + * if the dividend is not evenly divisible by the divisor. Since a float64 doesn't + * have the precision of int64 this is a problem so, when int64 is being used, + * we'll guarantee that the dividend is divisible by first subtracting the remainder. + * + * @access private + * @param int $x + * @param int $y + * @return int + */ + function _safe_divide($x, $y) + { + if (MATH_BIGINTEGER_BASE === 26) { + return (int) ($x / $y); + } + + // MATH_BIGINTEGER_BASE === 31 + return ($x - ($x % $y)) / $y; + } +} diff --git a/plugins/updraftplus/includes/phpseclib/Net/SCP.php b/plugins/updraftplus/includes/phpseclib/Net/SCP.php new file mode 100644 index 0000000..83ae5cc --- /dev/null +++ b/plugins/updraftplus/includes/phpseclib/Net/SCP.php @@ -0,0 +1,370 @@ + + * login('username', 'password')) { + * exit('bad login'); + * } + * + * $scp = new Net_SCP($ssh); + * $scp->put('abcd', str_repeat('x', 1024*1024)); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Net + * @package Net_SCP + * @author Jim Wigginton + * @copyright 2010 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/**#@+ + * @access public + * @see self::put() + */ +/** + * Reads data from a local file. + */ +define('NET_SCP_LOCAL_FILE', 1); +/** + * Reads data from a string. + */ +define('NET_SCP_STRING', 2); +/**#@-*/ + +/**#@+ + * @access private + * @see self::_send() + * @see self::_receive() + */ +/** + * SSH1 is being used. + */ +define('NET_SCP_SSH1', 1); +/** + * SSH2 is being used. + */ +define('NET_SCP_SSH2', 2); +/**#@-*/ + +/** + * Pure-PHP implementations of SCP. + * + * @package Net_SCP + * @author Jim Wigginton + * @access public + */ +class Net_SCP +{ + /** + * SSH Object + * + * @var object + * @access private + */ + var $ssh; + + /** + * Packet Size + * + * @var int + * @access private + */ + var $packet_size; + + /** + * Mode + * + * @var int + * @access private + */ + var $mode; + + /** + * Default Constructor. + * + * Connects to an SSH server + * + * @param Net_SSH1|Net_SSH2 $ssh + * @return Net_SCP + * @access public + */ + function __construct($ssh) + { + if (!is_object($ssh)) { + return; + } + + switch (strtolower(get_class($ssh))) { + case 'net_ssh2': + $this->mode = NET_SCP_SSH2; + break; + case 'net_ssh1': + $this->packet_size = 50000; + $this->mode = NET_SCP_SSH1; + break; + default: + return; + } + + $this->ssh = $ssh; + } + + /** + * PHP4 compatible Default Constructor. + * + * @see self::__construct() + * @param Net_SSH1|Net_SSH2 $ssh + * @access public + */ + function Net_SCP($ssh) + { + $this->__construct($ssh); + } + + /** + * Uploads a file to the SCP server. + * + * By default, Net_SCP::put() does not read from the local filesystem. $data is dumped directly into $remote_file. + * So, for example, if you set $data to 'filename.ext' and then do Net_SCP::get(), you will get a file, twelve bytes + * long, containing 'filename.ext' as its contents. + * + * Setting $mode to NET_SCP_LOCAL_FILE will change the above behavior. With NET_SCP_LOCAL_FILE, $remote_file will + * contain as many bytes as filename.ext does on your local filesystem. If your filename.ext is 1MB then that is how + * large $remote_file will be, as well. + * + * Currently, only binary mode is supported. As such, if the line endings need to be adjusted, you will need to take + * care of that, yourself. + * + * @param string $remote_file + * @param string $data + * @param int $mode + * @param callable $callback + * @return bool + * @access public + */ + function put($remote_file, $data, $mode = NET_SCP_STRING, $callback = null) + { + if (!isset($this->ssh)) { + return false; + } + + if (!$this->ssh->exec('scp -t ' . escapeshellarg($remote_file), false)) { // -t = to + return false; + } + + $temp = $this->_receive(); + if ($temp !== chr(0)) { + return false; + } + + if ($this->mode == NET_SCP_SSH2) { + $this->packet_size = $this->ssh->packet_size_client_to_server[NET_SSH2_CHANNEL_EXEC] - 4; + } + + $remote_file = basename($remote_file); + + if ($mode == NET_SCP_STRING) { + $size = strlen($data); + } else { + if (!is_file($data)) { + user_error("$data is not a valid file", E_USER_NOTICE); + return false; + } + + $fp = @fopen($data, 'rb'); + if (!$fp) { + return false; + } + $size = filesize($data); + } + + $this->_send('C0644 ' . $size . ' ' . $remote_file . "\n"); + + $temp = $this->_receive(); + if ($temp !== chr(0)) { + return false; + } + + $sent = 0; + while ($sent < $size) { + $temp = $mode & NET_SCP_STRING ? substr($data, $sent, $this->packet_size) : fread($fp, $this->packet_size); + $this->_send($temp); + $sent+= strlen($temp); + + if (is_callable($callback)) { + call_user_func($callback, $sent); + } + } + $this->_close(); + + if ($mode != NET_SCP_STRING) { + fclose($fp); + } + + return true; + } + + /** + * Downloads a file from the SCP server. + * + * Returns a string containing the contents of $remote_file if $local_file is left undefined or a boolean false if + * the operation was unsuccessful. If $local_file is defined, returns true or false depending on the success of the + * operation + * + * @param string $remote_file + * @param string $local_file + * @return mixed + * @access public + */ + function get($remote_file, $local_file = false) + { + if (!isset($this->ssh)) { + return false; + } + + if (!$this->ssh->exec('scp -f ' . escapeshellarg($remote_file), false)) { // -f = from + return false; + } + + $this->_send("\0"); + + if (!preg_match('#(?[^ ]+) (?\d+) (?.+)#', rtrim($this->_receive()), $info)) { + return false; + } + + $this->_send("\0"); + + $size = 0; + + if ($local_file !== false) { + $fp = @fopen($local_file, 'wb'); + if (!$fp) { + return false; + } + } + + $content = ''; + while ($size < $info['size']) { + $data = $this->_receive(); + // SCP usually seems to split stuff out into 16k chunks + $size+= strlen($data); + + if ($local_file === false) { + $content.= $data; + } else { + fputs($fp, $data); + } + } + + $this->_close(); + + if ($local_file !== false) { + fclose($fp); + return true; + } + + return $content; + } + + /** + * Sends a packet to an SSH server + * + * @param string $data + * @access private + */ + function _send($data) + { + switch ($this->mode) { + case NET_SCP_SSH2: + $this->ssh->_send_channel_packet(NET_SSH2_CHANNEL_EXEC, $data); + break; + case NET_SCP_SSH1: + $data = pack('CNa*', NET_SSH1_CMSG_STDIN_DATA, strlen($data), $data); + $this->ssh->_send_binary_packet($data); + } + } + + /** + * Receives a packet from an SSH server + * + * @return string + * @access private + */ + function _receive() + { + switch ($this->mode) { + case NET_SCP_SSH2: + return $this->ssh->_get_channel_packet(NET_SSH2_CHANNEL_EXEC, true); + case NET_SCP_SSH1: + if (!$this->ssh->bitmap) { + return false; + } + while (true) { + $response = $this->ssh->_get_binary_packet(); + switch ($response[NET_SSH1_RESPONSE_TYPE]) { + case NET_SSH1_SMSG_STDOUT_DATA: + extract(unpack('Nlength', $response[NET_SSH1_RESPONSE_DATA])); + return $this->ssh->_string_shift($response[NET_SSH1_RESPONSE_DATA], $length); + case NET_SSH1_SMSG_STDERR_DATA: + break; + case NET_SSH1_SMSG_EXITSTATUS: + $this->ssh->_send_binary_packet(chr(NET_SSH1_CMSG_EXIT_CONFIRMATION)); + fclose($this->ssh->fsock); + $this->ssh->bitmap = 0; + return false; + default: + user_error('Unknown packet received', E_USER_NOTICE); + return false; + } + } + } + } + + /** + * Closes the connection to an SSH server + * + * @access private + */ + function _close() + { + switch ($this->mode) { + case NET_SCP_SSH2: + $this->ssh->_close_channel(NET_SSH2_CHANNEL_EXEC, true); + break; + case NET_SCP_SSH1: + $this->ssh->disconnect(); + } + } +} diff --git a/plugins/updraftplus/includes/phpseclib/Net/SFTP.php b/plugins/updraftplus/includes/phpseclib/Net/SFTP.php new file mode 100644 index 0000000..a279bdf --- /dev/null +++ b/plugins/updraftplus/includes/phpseclib/Net/SFTP.php @@ -0,0 +1,3016 @@ + + * login('username', 'password')) { + * exit('Login Failed'); + * } + * + * echo $sftp->pwd() . "\r\n"; + * $sftp->put('filename.ext', 'hello, world!'); + * print_r($sftp->nlist()); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Net + * @package Net_SFTP + * @author Jim Wigginton + * @copyright 2009 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/** + * Include Net_SSH2 + */ +if (!class_exists('Net_SSH2')) { + include_once 'SSH2.php'; +} + +/**#@+ + * @access public + * @see self::getLog() + */ +/** + * Returns the message numbers + */ +define('NET_SFTP_LOG_SIMPLE', NET_SSH2_LOG_SIMPLE); +/** + * Returns the message content + */ +define('NET_SFTP_LOG_COMPLEX', NET_SSH2_LOG_COMPLEX); +/** + * Outputs the message content in real-time. + */ +define('NET_SFTP_LOG_REALTIME', 3); +/**#@-*/ + +/** + * SFTP channel constant + * + * Net_SSH2::exec() uses 0 and Net_SSH2::read() / Net_SSH2::write() use 1. + * + * @see Net_SSH2::_send_channel_packet() + * @see Net_SSH2::_get_channel_packet() + * @access private + */ +define('NET_SFTP_CHANNEL', 0x100); + +/**#@+ + * @access public + * @see self::put() + */ +/** + * Reads data from a local file. + */ +define('NET_SFTP_LOCAL_FILE', 1); +/** + * Reads data from a string. + */ +// this value isn't really used anymore but i'm keeping it reserved for historical reasons +define('NET_SFTP_STRING', 2); +/** + * Reads data from callback: + * function callback($length) returns string to proceed, null for EOF + */ +define('NET_SFTP_CALLBACK', 16); +/** + * Resumes an upload + */ +define('NET_SFTP_RESUME', 4); +/** + * Append a local file to an already existing remote file + */ +define('NET_SFTP_RESUME_START', 8); +/**#@-*/ + +/** + * Pure-PHP implementations of SFTP. + * + * @package Net_SFTP + * @author Jim Wigginton + * @access public + */ +class Net_SFTP extends Net_SSH2 +{ + /** + * Packet Types + * + * @see self::Net_SFTP() + * @var array + * @access private + */ + var $packet_types = array(); + + /** + * Status Codes + * + * @see self::Net_SFTP() + * @var array + * @access private + */ + var $status_codes = array(); + + /** + * The Request ID + * + * The request ID exists in the off chance that a packet is sent out-of-order. Of course, this library doesn't support + * concurrent actions, so it's somewhat academic, here. + * + * @var int + * @see self::_send_sftp_packet() + * @access private + */ + var $request_id = false; + + /** + * The Packet Type + * + * The request ID exists in the off chance that a packet is sent out-of-order. Of course, this library doesn't support + * concurrent actions, so it's somewhat academic, here. + * + * @var int + * @see self::_get_sftp_packet() + * @access private + */ + var $packet_type = -1; + + /** + * Packet Buffer + * + * @var string + * @see self::_get_sftp_packet() + * @access private + */ + var $packet_buffer = ''; + + /** + * Extensions supported by the server + * + * @var array + * @see self::_initChannel() + * @access private + */ + var $extensions = array(); + + /** + * Server SFTP version + * + * @var int + * @see self::_initChannel() + * @access private + */ + var $version; + + /** + * Current working directory + * + * @var string + * @see self::_realpath() + * @see self::chdir() + * @access private + */ + var $pwd = false; + + /** + * Packet Type Log + * + * @see self::getLog() + * @var array + * @access private + */ + var $packet_type_log = array(); + + /** + * Packet Log + * + * @see self::getLog() + * @var array + * @access private + */ + var $packet_log = array(); + + /** + * Error information + * + * @see self::getSFTPErrors() + * @see self::getLastSFTPError() + * @var string + * @access private + */ + var $sftp_errors = array(); + + /** + * Stat Cache + * + * Rather than always having to open a directory and close it immediately there after to see if a file is a directory + * we'll cache the results. + * + * @see self::_update_stat_cache() + * @see self::_remove_from_stat_cache() + * @see self::_query_stat_cache() + * @var array + * @access private + */ + var $stat_cache = array(); + + /** + * Max SFTP Packet Size + * + * @see self::Net_SFTP() + * @see self::get() + * @var array + * @access private + */ + var $max_sftp_packet; + + /** + * Stat Cache Flag + * + * @see self::disableStatCache() + * @see self::enableStatCache() + * @var bool + * @access private + */ + var $use_stat_cache = true; + + /** + * Sort Options + * + * @see self::_comparator() + * @see self::setListOrder() + * @var array + * @access private + */ + var $sortOptions = array(); + + /** + * Default Constructor. + * + * Connects to an SFTP server + * + * @param string $host + * @param int $port + * @param int $timeout + * @return Net_SFTP + * @access public + */ + function __construct($host, $port = 22, $timeout = 10) + { + parent::__construct($host, $port, $timeout); + + $this->max_sftp_packet = 1 << 15; + + $this->packet_types = array( + 1 => 'NET_SFTP_INIT', + 2 => 'NET_SFTP_VERSION', + /* the format of SSH_FXP_OPEN changed between SFTPv4 and SFTPv5+: + SFTPv5+: http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.1.1 + pre-SFTPv5 : http://tools.ietf.org/html/draft-ietf-secsh-filexfer-04#section-6.3 */ + 3 => 'NET_SFTP_OPEN', + 4 => 'NET_SFTP_CLOSE', + 5 => 'NET_SFTP_READ', + 6 => 'NET_SFTP_WRITE', + 7 => 'NET_SFTP_LSTAT', + 9 => 'NET_SFTP_SETSTAT', + 11 => 'NET_SFTP_OPENDIR', + 12 => 'NET_SFTP_READDIR', + 13 => 'NET_SFTP_REMOVE', + 14 => 'NET_SFTP_MKDIR', + 15 => 'NET_SFTP_RMDIR', + 16 => 'NET_SFTP_REALPATH', + 17 => 'NET_SFTP_STAT', + /* the format of SSH_FXP_RENAME changed between SFTPv4 and SFTPv5+: + SFTPv5+: http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.3 + pre-SFTPv5 : http://tools.ietf.org/html/draft-ietf-secsh-filexfer-04#section-6.5 */ + 18 => 'NET_SFTP_RENAME', + 19 => 'NET_SFTP_READLINK', + 20 => 'NET_SFTP_SYMLINK', + + 101=> 'NET_SFTP_STATUS', + 102=> 'NET_SFTP_HANDLE', + /* the format of SSH_FXP_NAME changed between SFTPv3 and SFTPv4+: + SFTPv4+: http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-9.4 + pre-SFTPv4 : http://tools.ietf.org/html/draft-ietf-secsh-filexfer-02#section-7 */ + 103=> 'NET_SFTP_DATA', + 104=> 'NET_SFTP_NAME', + 105=> 'NET_SFTP_ATTRS', + + 200=> 'NET_SFTP_EXTENDED' + ); + $this->status_codes = array( + 0 => 'NET_SFTP_STATUS_OK', + 1 => 'NET_SFTP_STATUS_EOF', + 2 => 'NET_SFTP_STATUS_NO_SUCH_FILE', + 3 => 'NET_SFTP_STATUS_PERMISSION_DENIED', + 4 => 'NET_SFTP_STATUS_FAILURE', + 5 => 'NET_SFTP_STATUS_BAD_MESSAGE', + 6 => 'NET_SFTP_STATUS_NO_CONNECTION', + 7 => 'NET_SFTP_STATUS_CONNECTION_LOST', + 8 => 'NET_SFTP_STATUS_OP_UNSUPPORTED', + 9 => 'NET_SFTP_STATUS_INVALID_HANDLE', + 10 => 'NET_SFTP_STATUS_NO_SUCH_PATH', + 11 => 'NET_SFTP_STATUS_FILE_ALREADY_EXISTS', + 12 => 'NET_SFTP_STATUS_WRITE_PROTECT', + 13 => 'NET_SFTP_STATUS_NO_MEDIA', + 14 => 'NET_SFTP_STATUS_NO_SPACE_ON_FILESYSTEM', + 15 => 'NET_SFTP_STATUS_QUOTA_EXCEEDED', + 16 => 'NET_SFTP_STATUS_UNKNOWN_PRINCIPAL', + 17 => 'NET_SFTP_STATUS_LOCK_CONFLICT', + 18 => 'NET_SFTP_STATUS_DIR_NOT_EMPTY', + 19 => 'NET_SFTP_STATUS_NOT_A_DIRECTORY', + 20 => 'NET_SFTP_STATUS_INVALID_FILENAME', + 21 => 'NET_SFTP_STATUS_LINK_LOOP', + 22 => 'NET_SFTP_STATUS_CANNOT_DELETE', + 23 => 'NET_SFTP_STATUS_INVALID_PARAMETER', + 24 => 'NET_SFTP_STATUS_FILE_IS_A_DIRECTORY', + 25 => 'NET_SFTP_STATUS_BYTE_RANGE_LOCK_CONFLICT', + 26 => 'NET_SFTP_STATUS_BYTE_RANGE_LOCK_REFUSED', + 27 => 'NET_SFTP_STATUS_DELETE_PENDING', + 28 => 'NET_SFTP_STATUS_FILE_CORRUPT', + 29 => 'NET_SFTP_STATUS_OWNER_INVALID', + 30 => 'NET_SFTP_STATUS_GROUP_INVALID', + 31 => 'NET_SFTP_STATUS_NO_MATCHING_BYTE_RANGE_LOCK' + ); + // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-7.1 + // the order, in this case, matters quite a lot - see Net_SFTP::_parseAttributes() to understand why + $this->attributes = array( + 0x00000001 => 'NET_SFTP_ATTR_SIZE', + 0x00000002 => 'NET_SFTP_ATTR_UIDGID', // defined in SFTPv3, removed in SFTPv4+ + 0x00000004 => 'NET_SFTP_ATTR_PERMISSIONS', + 0x00000008 => 'NET_SFTP_ATTR_ACCESSTIME', + // 0x80000000 will yield a floating point on 32-bit systems and converting floating points to integers + // yields inconsistent behavior depending on how php is compiled. so we left shift -1 (which, in + // two's compliment, consists of all 1 bits) by 31. on 64-bit systems this'll yield 0xFFFFFFFF80000000. + // that's not a problem, however, and 'anded' and a 32-bit number, as all the leading 1 bits are ignored. + -1 << 31 => 'NET_SFTP_ATTR_EXTENDED' + ); + // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-04#section-6.3 + // the flag definitions change somewhat in SFTPv5+. if SFTPv5+ support is added to this library, maybe name + // the array for that $this->open5_flags and similarly alter the constant names. + $this->open_flags = array( + 0x00000001 => 'NET_SFTP_OPEN_READ', + 0x00000002 => 'NET_SFTP_OPEN_WRITE', + 0x00000004 => 'NET_SFTP_OPEN_APPEND', + 0x00000008 => 'NET_SFTP_OPEN_CREATE', + 0x00000010 => 'NET_SFTP_OPEN_TRUNCATE', + 0x00000020 => 'NET_SFTP_OPEN_EXCL' + ); + // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-04#section-5.2 + // see Net_SFTP::_parseLongname() for an explanation + $this->file_types = array( + 1 => 'NET_SFTP_TYPE_REGULAR', + 2 => 'NET_SFTP_TYPE_DIRECTORY', + 3 => 'NET_SFTP_TYPE_SYMLINK', + 4 => 'NET_SFTP_TYPE_SPECIAL', + 5 => 'NET_SFTP_TYPE_UNKNOWN', + // the followin types were first defined for use in SFTPv5+ + // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-05#section-5.2 + 6 => 'NET_SFTP_TYPE_SOCKET', + 7 => 'NET_SFTP_TYPE_CHAR_DEVICE', + 8 => 'NET_SFTP_TYPE_BLOCK_DEVICE', + 9 => 'NET_SFTP_TYPE_FIFO' + ); + $this->_define_array( + $this->packet_types, + $this->status_codes, + $this->attributes, + $this->open_flags, + $this->file_types + ); + + if (!defined('NET_SFTP_QUEUE_SIZE')) { + define('NET_SFTP_QUEUE_SIZE', 50); + } + } + + /** + * PHP4 compatible Default Constructor. + * + * @see self::__construct() + * @param string $host + * @param int $port + * @param int $timeout + * @access public + */ + function Net_SFTP($host, $port = 22, $timeout = 10) + { + $this->__construct($host, $port, $timeout); + } + + /** + * Login + * + * @param string $username + * @param string $password + * @return bool + * @access public + */ + function login($username) + { + $args = func_get_args(); + if (!call_user_func_array(array(&$this, '_login'), $args)) { + return false; + } + + $this->window_size_server_to_client[NET_SFTP_CHANNEL] = $this->window_size; + + $packet = pack( + 'CNa*N3', + NET_SSH2_MSG_CHANNEL_OPEN, + strlen('session'), + 'session', + NET_SFTP_CHANNEL, + $this->window_size, + 0x4000 + ); + + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $this->channel_status[NET_SFTP_CHANNEL] = NET_SSH2_MSG_CHANNEL_OPEN; + + $response = $this->_get_channel_packet(NET_SFTP_CHANNEL); + if ($response === false) { + return false; + } + + $packet = pack( + 'CNNa*CNa*', + NET_SSH2_MSG_CHANNEL_REQUEST, + $this->server_channels[NET_SFTP_CHANNEL], + strlen('subsystem'), + 'subsystem', + 1, + strlen('sftp'), + 'sftp' + ); + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $this->channel_status[NET_SFTP_CHANNEL] = NET_SSH2_MSG_CHANNEL_REQUEST; + + $response = $this->_get_channel_packet(NET_SFTP_CHANNEL); + if ($response === false) { + // from PuTTY's psftp.exe + $command = "test -x /usr/lib/sftp-server && exec /usr/lib/sftp-server\n" . + "test -x /usr/local/lib/sftp-server && exec /usr/local/lib/sftp-server\n" . + "exec sftp-server"; + // we don't do $this->exec($command, false) because exec() operates on a different channel and plus the SSH_MSG_CHANNEL_OPEN that exec() does + // is redundant + $packet = pack( + 'CNNa*CNa*', + NET_SSH2_MSG_CHANNEL_REQUEST, + $this->server_channels[NET_SFTP_CHANNEL], + strlen('exec'), + 'exec', + 1, + strlen($command), + $command + ); + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $this->channel_status[NET_SFTP_CHANNEL] = NET_SSH2_MSG_CHANNEL_REQUEST; + + $response = $this->_get_channel_packet(NET_SFTP_CHANNEL); + if ($response === false) { + return false; + } + } + + $this->channel_status[NET_SFTP_CHANNEL] = NET_SSH2_MSG_CHANNEL_DATA; + + if (!$this->_send_sftp_packet(NET_SFTP_INIT, "\0\0\0\3")) { + return false; + } + + $response = $this->_get_sftp_packet(); + if ($this->packet_type != NET_SFTP_VERSION) { + user_error('Expected SSH_FXP_VERSION'); + return false; + } + + extract(unpack('Nversion', $this->_string_shift($response, 4))); + $this->version = $version; + while (!empty($response)) { + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $key = $this->_string_shift($response, $length); + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $value = $this->_string_shift($response, $length); + $this->extensions[$key] = $value; + } + + /* + SFTPv4+ defines a 'newline' extension. SFTPv3 seems to have unofficial support for it via 'newline@vandyke.com', + however, I'm not sure what 'newline@vandyke.com' is supposed to do (the fact that it's unofficial means that it's + not in the official SFTPv3 specs) and 'newline@vandyke.com' / 'newline' are likely not drop-in substitutes for + one another due to the fact that 'newline' comes with a SSH_FXF_TEXT bitmask whereas it seems unlikely that + 'newline@vandyke.com' would. + */ + /* + if (isset($this->extensions['newline@vandyke.com'])) { + $this->extensions['newline'] = $this->extensions['newline@vandyke.com']; + unset($this->extensions['newline@vandyke.com']); + } + */ + + $this->request_id = 1; + + /* + A Note on SFTPv4/5/6 support: + states the following: + + "If the client wishes to interoperate with servers that support noncontiguous version + numbers it SHOULD send '3'" + + Given that the server only sends its version number after the client has already done so, the above + seems to be suggesting that v3 should be the default version. This makes sense given that v3 is the + most popular. + + states the following; + + "If the server did not send the "versions" extension, or the version-from-list was not included, the + server MAY send a status response describing the failure, but MUST then close the channel without + processing any further requests." + + So what do you do if you have a client whose initial SSH_FXP_INIT packet says it implements v3 and + a server whose initial SSH_FXP_VERSION reply says it implements v4 and only v4? If it only implements + v4, the "versions" extension is likely not going to have been sent so version re-negotiation as discussed + in draft-ietf-secsh-filexfer-13 would be quite impossible. As such, what Net_SFTP would do is close the + channel and reopen it with a new and updated SSH_FXP_INIT packet. + */ + switch ($this->version) { + case 2: + case 3: + break; + default: + return false; + } + + $this->pwd = $this->_realpath('.'); + + $this->_update_stat_cache($this->pwd, array()); + + return true; + } + + /** + * Disable the stat cache + * + * @access public + */ + function disableStatCache() + { + $this->use_stat_cache = false; + } + + /** + * Enable the stat cache + * + * @access public + */ + function enableStatCache() + { + $this->use_stat_cache = true; + } + + /** + * Clear the stat cache + * + * @access public + */ + function clearStatCache() + { + $this->stat_cache = array(); + } + + /** + * Returns the current directory name + * + * @return mixed + * @access public + */ + function pwd() + { + return $this->pwd; + } + + /** + * Logs errors + * + * @param string $response + * @param int $status + * @access public + */ + function _logError($response, $status = -1) + { + if ($status == -1) { + extract(unpack('Nstatus', $this->_string_shift($response, 4))); + } + + $error = $this->status_codes[$status]; + + if ($this->version > 2) { + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $this->sftp_errors[] = $error . ': ' . $this->_string_shift($response, $length); + } else { + $this->sftp_errors[] = $error; + } + } + + /** + * Returns canonicalized absolute pathname + * + * realpath() expands all symbolic links and resolves references to '/./', '/../' and extra '/' characters in the input + * path and returns the canonicalized absolute pathname. + * + * @param string $path + * @return mixed + * @access public + */ + function realpath($path) + { + return $this->_realpath($path); + } + + /** + * Canonicalize the Server-Side Path Name + * + * SFTP doesn't provide a mechanism by which the current working directory can be changed, so we'll emulate it. Returns + * the absolute (canonicalized) path. + * + * @see self::chdir() + * @param string $path + * @return mixed + * @access private + */ + function _realpath($path) + { + if ($this->pwd === false) { + // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.9 + if (!$this->_send_sftp_packet(NET_SFTP_REALPATH, pack('Na*', strlen($path), $path))) { + return false; + } + + $response = $this->_get_sftp_packet(); + switch ($this->packet_type) { + case NET_SFTP_NAME: + // although SSH_FXP_NAME is implemented differently in SFTPv3 than it is in SFTPv4+, the following + // should work on all SFTP versions since the only part of the SSH_FXP_NAME packet the following looks + // at is the first part and that part is defined the same in SFTP versions 3 through 6. + $this->_string_shift($response, 4); // skip over the count - it should be 1, anyway + extract(unpack('Nlength', $this->_string_shift($response, 4))); + return $this->_string_shift($response, $length); + case NET_SFTP_STATUS: + $this->_logError($response); + return false; + default: + user_error('Expected SSH_FXP_NAME or SSH_FXP_STATUS'); + return false; + } + } + + if ($path[0] != '/') { + $path = $this->pwd . '/' . $path; + } + + $path = explode('/', $path); + $new = array(); + foreach ($path as $dir) { + if (!strlen($dir)) { + continue; + } + switch ($dir) { + case '..': + array_pop($new); + case '.': + break; + default: + $new[] = $dir; + } + } + + return '/' . implode('/', $new); + } + + /** + * Changes the current directory + * + * @param string $dir + * @return bool + * @access public + */ + function chdir($dir) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + // assume current dir if $dir is empty + if ($dir === '') { + $dir = './'; + // suffix a slash if needed + } elseif ($dir[strlen($dir) - 1] != '/') { + $dir.= '/'; + } + + $dir = $this->_realpath($dir); + + // confirm that $dir is, in fact, a valid directory + if ($this->use_stat_cache && is_array($this->_query_stat_cache($dir))) { + $this->pwd = $dir; + return true; + } + + // we could do a stat on the alleged $dir to see if it's a directory but that doesn't tell us + // the currently logged in user has the appropriate permissions or not. maybe you could see if + // the file's uid / gid match the currently logged in user's uid / gid but how there's no easy + // way to get those with SFTP + + if (!$this->_send_sftp_packet(NET_SFTP_OPENDIR, pack('Na*', strlen($dir), $dir))) { + return false; + } + + // see Net_SFTP::nlist() for a more thorough explanation of the following + $response = $this->_get_sftp_packet(); + switch ($this->packet_type) { + case NET_SFTP_HANDLE: + $handle = substr($response, 4); + break; + case NET_SFTP_STATUS: + $this->_logError($response); + return false; + default: + user_error('Expected SSH_FXP_HANDLE or SSH_FXP_STATUS'); + return false; + } + + if (!$this->_close_handle($handle)) { + return false; + } + + $this->_update_stat_cache($dir, array()); + + $this->pwd = $dir; + return true; + } + + /** + * Returns a list of files in the given directory + * + * @param string $dir + * @param bool $recursive + * @return mixed + * @access public + */ + function nlist($dir = '.', $recursive = false) + { + return $this->_nlist_helper($dir, $recursive, ''); + } + + /** + * Helper method for nlist + * + * @param string $dir + * @param bool $recursive + * @param string $relativeDir + * @return mixed + * @access private + */ + function _nlist_helper($dir, $recursive, $relativeDir) + { + $files = $this->_list($dir, false); + + if (!$recursive || $files === false) { + return $files; + } + + $result = array(); + foreach ($files as $value) { + if ($value == '.' || $value == '..') { + if ($relativeDir == '') { + $result[] = $value; + } + continue; + } + if (is_array($this->_query_stat_cache($this->_realpath($dir . '/' . $value)))) { + $temp = $this->_nlist_helper($dir . '/' . $value, true, $relativeDir . $value . '/'); + $result = array_merge($result, $temp); + } else { + $result[] = $relativeDir . $value; + } + } + + return $result; + } + + /** + * Returns a detailed list of files in the given directory + * + * @param string $dir + * @param bool $recursive + * @return mixed + * @access public + */ + function rawlist($dir = '.', $recursive = false) + { + $files = $this->_list($dir, true); + if (!$recursive || $files === false) { + return $files; + } + + static $depth = 0; + + foreach ($files as $key => $value) { + if ($depth != 0 && $key == '..') { + unset($files[$key]); + continue; + } + if ($key != '.' && $key != '..' && is_array($this->_query_stat_cache($this->_realpath($dir . '/' . $key)))) { + $depth++; + $files[$key] = $this->rawlist($dir . '/' . $key, true); + $depth--; + } else { + $files[$key] = (object) $value; + } + } + + return $files; + } + + /** + * Reads a list, be it detailed or not, of files in the given directory + * + * @param string $dir + * @param bool $raw + * @return mixed + * @access private + */ + function _list($dir, $raw = true) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + $dir = $this->_realpath($dir . '/'); + if ($dir === false) { + return false; + } + + // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.1.2 + if (!$this->_send_sftp_packet(NET_SFTP_OPENDIR, pack('Na*', strlen($dir), $dir))) { + return false; + } + + $response = $this->_get_sftp_packet(); + switch ($this->packet_type) { + case NET_SFTP_HANDLE: + // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-9.2 + // since 'handle' is the last field in the SSH_FXP_HANDLE packet, we'll just remove the first four bytes that + // represent the length of the string and leave it at that + $handle = substr($response, 4); + break; + case NET_SFTP_STATUS: + // presumably SSH_FX_NO_SUCH_FILE or SSH_FX_PERMISSION_DENIED + $this->_logError($response); + return false; + default: + user_error('Expected SSH_FXP_HANDLE or SSH_FXP_STATUS'); + return false; + } + + $this->_update_stat_cache($dir, array()); + + $contents = array(); + while (true) { + // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.2.2 + // why multiple SSH_FXP_READDIR packets would be sent when the response to a single one can span arbitrarily many + // SSH_MSG_CHANNEL_DATA messages is not known to me. + if (!$this->_send_sftp_packet(NET_SFTP_READDIR, pack('Na*', strlen($handle), $handle))) { + return false; + } + + $response = $this->_get_sftp_packet(); + switch ($this->packet_type) { + case NET_SFTP_NAME: + extract(unpack('Ncount', $this->_string_shift($response, 4))); + for ($i = 0; $i < $count; $i++) { + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $shortname = $this->_string_shift($response, $length); + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $longname = $this->_string_shift($response, $length); + $attributes = $this->_parseAttributes($response); + if (!isset($attributes['type'])) { + $fileType = $this->_parseLongname($longname); + if ($fileType) { + $attributes['type'] = $fileType; + } + } + $contents[$shortname] = $attributes + array('filename' => $shortname); + + if (isset($attributes['type']) && $attributes['type'] == NET_SFTP_TYPE_DIRECTORY && ($shortname != '.' && $shortname != '..')) { + $this->_update_stat_cache($dir . '/' . $shortname, array()); + } else { + if ($shortname == '..') { + $temp = $this->_realpath($dir . '/..') . '/.'; + } else { + $temp = $dir . '/' . $shortname; + } + $this->_update_stat_cache($temp, (object) array('lstat' => $attributes)); + } + // SFTPv6 has an optional boolean end-of-list field, but we'll ignore that, since the + // final SSH_FXP_STATUS packet should tell us that, already. + } + break; + case NET_SFTP_STATUS: + extract(unpack('Nstatus', $this->_string_shift($response, 4))); + if ($status != NET_SFTP_STATUS_EOF) { + $this->_logError($response, $status); + return false; + } + break 2; + default: + user_error('Expected SSH_FXP_NAME or SSH_FXP_STATUS'); + return false; + } + } + + if (!$this->_close_handle($handle)) { + return false; + } + + if (count($this->sortOptions)) { + uasort($contents, array(&$this, '_comparator')); + } + + return $raw ? $contents : array_keys($contents); + } + + /** + * Compares two rawlist entries using parameters set by setListOrder() + * + * Intended for use with uasort() + * + * @param array $a + * @param array $b + * @return int + * @access private + */ + function _comparator($a, $b) + { + switch (true) { + case $a['filename'] === '.' || $b['filename'] === '.': + if ($a['filename'] === $b['filename']) { + return 0; + } + return $a['filename'] === '.' ? -1 : 1; + case $a['filename'] === '..' || $b['filename'] === '..': + if ($a['filename'] === $b['filename']) { + return 0; + } + return $a['filename'] === '..' ? -1 : 1; + case isset($a['type']) && $a['type'] === NET_SFTP_TYPE_DIRECTORY: + if (!isset($b['type'])) { + return 1; + } + if ($b['type'] !== $a['type']) { + return -1; + } + break; + case isset($b['type']) && $b['type'] === NET_SFTP_TYPE_DIRECTORY: + return 1; + } + foreach ($this->sortOptions as $sort => $order) { + if (!isset($a[$sort]) || !isset($b[$sort])) { + if (isset($a[$sort])) { + return -1; + } + if (isset($b[$sort])) { + return 1; + } + return 0; + } + switch ($sort) { + case 'filename': + $result = strcasecmp($a['filename'], $b['filename']); + if ($result) { + return $order === SORT_DESC ? -$result : $result; + } + break; + case 'permissions': + case 'mode': + $a[$sort]&= 07777; + $b[$sort]&= 07777; + default: + if ($a[$sort] === $b[$sort]) { + break; + } + return $order === SORT_ASC ? $a[$sort] - $b[$sort] : $b[$sort] - $a[$sort]; + } + } + } + + /** + * Defines how nlist() and rawlist() will be sorted - if at all. + * + * If sorting is enabled directories and files will be sorted independently with + * directories appearing before files in the resultant array that is returned. + * + * Any parameter returned by stat is a valid sort parameter for this function. + * Filename comparisons are case insensitive. + * + * Examples: + * + * $sftp->setListOrder('filename', SORT_ASC); + * $sftp->setListOrder('size', SORT_DESC, 'filename', SORT_ASC); + * $sftp->setListOrder(true); + * Separates directories from files but doesn't do any sorting beyond that + * $sftp->setListOrder(); + * Don't do any sort of sorting + * + * @access public + */ + function setListOrder() + { + $this->sortOptions = array(); + $args = func_get_args(); + if (empty($args)) { + return; + } + $len = count($args) & 0x7FFFFFFE; + for ($i = 0; $i < $len; $i+=2) { + $this->sortOptions[$args[$i]] = $args[$i + 1]; + } + if (!count($this->sortOptions)) { + $this->sortOptions = array('bogus' => true); + } + } + + /** + * Returns the file size, in bytes, or false, on failure + * + * Files larger than 4GB will show up as being exactly 4GB. + * + * @param string $filename + * @return mixed + * @access public + */ + function size($filename) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + $result = $this->stat($filename); + if ($result === false) { + return false; + } + return isset($result['size']) ? $result['size'] : -1; + } + + /** + * Save files / directories to cache + * + * @param string $path + * @param mixed $value + * @access private + */ + function _update_stat_cache($path, $value) + { + if ($this->use_stat_cache === false) { + return; + } + + // preg_replace('#^/|/(?=/)|/$#', '', $dir) == str_replace('//', '/', trim($path, '/')) + $dirs = explode('/', preg_replace('#^/|/(?=/)|/$#', '', $path)); + + $temp = &$this->stat_cache; + $max = count($dirs) - 1; + foreach ($dirs as $i => $dir) { + // if $temp is an object that means one of two things. + // 1. a file was deleted and changed to a directory behind phpseclib's back + // 2. it's a symlink. when lstat is done it's unclear what it's a symlink to + if (is_object($temp)) { + $temp = array(); + } + if (!isset($temp[$dir])) { + $temp[$dir] = array(); + } + if ($i === $max) { + if (is_object($temp[$dir])) { + if (!isset($value->stat) && isset($temp[$dir]->stat)) { + $value->stat = $temp[$dir]->stat; + } + if (!isset($value->lstat) && isset($temp[$dir]->lstat)) { + $value->lstat = $temp[$dir]->lstat; + } + } + $temp[$dir] = $value; + break; + } + $temp = &$temp[$dir]; + } + } + + /** + * Remove files / directories from cache + * + * @param string $path + * @return bool + * @access private + */ + function _remove_from_stat_cache($path) + { + $dirs = explode('/', preg_replace('#^/|/(?=/)|/$#', '', $path)); + + $temp = &$this->stat_cache; + $max = count($dirs) - 1; + foreach ($dirs as $i => $dir) { + if ($i === $max) { + unset($temp[$dir]); + return true; + } + if (!isset($temp[$dir])) { + return false; + } + $temp = &$temp[$dir]; + } + } + + /** + * Checks cache for path + * + * Mainly used by file_exists + * + * @param string $dir + * @return mixed + * @access private + */ + function _query_stat_cache($path) + { + $dirs = explode('/', preg_replace('#^/|/(?=/)|/$#', '', $path)); + + $temp = &$this->stat_cache; + foreach ($dirs as $dir) { + if (!isset($temp[$dir])) { + return null; + } + $temp = &$temp[$dir]; + } + return $temp; + } + + /** + * Returns general information about a file. + * + * Returns an array on success and false otherwise. + * + * @param string $filename + * @return mixed + * @access public + */ + function stat($filename) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + $filename = $this->_realpath($filename); + if ($filename === false) { + return false; + } + + if ($this->use_stat_cache) { + $result = $this->_query_stat_cache($filename); + if (is_array($result) && isset($result['.']) && isset($result['.']->stat)) { + return $result['.']->stat; + } + if (is_object($result) && isset($result->stat)) { + return $result->stat; + } + } + + $stat = $this->_stat($filename, NET_SFTP_STAT); + if ($stat === false) { + $this->_remove_from_stat_cache($filename); + return false; + } + if (isset($stat['type'])) { + if ($stat['type'] == NET_SFTP_TYPE_DIRECTORY) { + $filename.= '/.'; + } + $this->_update_stat_cache($filename, (object) array('stat' => $stat)); + return $stat; + } + + $pwd = $this->pwd; + $stat['type'] = $this->chdir($filename) ? + NET_SFTP_TYPE_DIRECTORY : + NET_SFTP_TYPE_REGULAR; + $this->pwd = $pwd; + + if ($stat['type'] == NET_SFTP_TYPE_DIRECTORY) { + $filename.= '/.'; + } + $this->_update_stat_cache($filename, (object) array('stat' => $stat)); + + return $stat; + } + + /** + * Returns general information about a file or symbolic link. + * + * Returns an array on success and false otherwise. + * + * @param string $filename + * @return mixed + * @access public + */ + function lstat($filename) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + $filename = $this->_realpath($filename); + if ($filename === false) { + return false; + } + + if ($this->use_stat_cache) { + $result = $this->_query_stat_cache($filename); + if (is_array($result) && isset($result['.']) && isset($result['.']->lstat)) { + return $result['.']->lstat; + } + if (is_object($result) && isset($result->lstat)) { + return $result->lstat; + } + } + + $lstat = $this->_stat($filename, NET_SFTP_LSTAT); + if ($lstat === false) { + $this->_remove_from_stat_cache($filename); + return false; + } + if (isset($lstat['type'])) { + if ($lstat['type'] == NET_SFTP_TYPE_DIRECTORY) { + $filename.= '/.'; + } + $this->_update_stat_cache($filename, (object) array('lstat' => $lstat)); + return $lstat; + } + + $stat = $this->_stat($filename, NET_SFTP_STAT); + + if ($lstat != $stat) { + $lstat = array_merge($lstat, array('type' => NET_SFTP_TYPE_SYMLINK)); + $this->_update_stat_cache($filename, (object) array('lstat' => $lstat)); + return $stat; + } + + $pwd = $this->pwd; + $lstat['type'] = $this->chdir($filename) ? + NET_SFTP_TYPE_DIRECTORY : + NET_SFTP_TYPE_REGULAR; + $this->pwd = $pwd; + + if ($lstat['type'] == NET_SFTP_TYPE_DIRECTORY) { + $filename.= '/.'; + } + $this->_update_stat_cache($filename, (object) array('lstat' => $lstat)); + + return $lstat; + } + + /** + * Returns general information about a file or symbolic link + * + * Determines information without calling Net_SFTP::_realpath(). + * The second parameter can be either NET_SFTP_STAT or NET_SFTP_LSTAT. + * + * @param string $filename + * @param int $type + * @return mixed + * @access private + */ + function _stat($filename, $type) + { + // SFTPv4+ adds an additional 32-bit integer field - flags - to the following: + $packet = pack('Na*', strlen($filename), $filename); + if (!$this->_send_sftp_packet($type, $packet)) { + return false; + } + + $response = $this->_get_sftp_packet(); + switch ($this->packet_type) { + case NET_SFTP_ATTRS: + return $this->_parseAttributes($response); + case NET_SFTP_STATUS: + $this->_logError($response); + return false; + } + + user_error('Expected SSH_FXP_ATTRS or SSH_FXP_STATUS'); + return false; + } + + /** + * Truncates a file to a given length + * + * @param string $filename + * @param int $new_size + * @return bool + * @access public + */ + function truncate($filename, $new_size) + { + $attr = pack('N3', NET_SFTP_ATTR_SIZE, $new_size / 4294967296, $new_size); // 4294967296 == 0x100000000 == 1<<32 + + return $this->_setstat($filename, $attr, false); + } + + /** + * Sets access and modification time of file. + * + * If the file does not exist, it will be created. + * + * @param string $filename + * @param int $time + * @param int $atime + * @return bool + * @access public + */ + function touch($filename, $time = null, $atime = null) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + $filename = $this->_realpath($filename); + if ($filename === false) { + return false; + } + + if (!isset($time)) { + $time = time(); + } + if (!isset($atime)) { + $atime = $time; + } + + $flags = NET_SFTP_OPEN_WRITE | NET_SFTP_OPEN_CREATE | NET_SFTP_OPEN_EXCL; + $attr = pack('N3', NET_SFTP_ATTR_ACCESSTIME, $time, $atime); + $packet = pack('Na*Na*', strlen($filename), $filename, $flags, $attr); + if (!$this->_send_sftp_packet(NET_SFTP_OPEN, $packet)) { + return false; + } + + $response = $this->_get_sftp_packet(); + switch ($this->packet_type) { + case NET_SFTP_HANDLE: + return $this->_close_handle(substr($response, 4)); + case NET_SFTP_STATUS: + $this->_logError($response); + break; + default: + user_error('Expected SSH_FXP_HANDLE or SSH_FXP_STATUS'); + return false; + } + + return $this->_setstat($filename, $attr, false); + } + + /** + * Changes file or directory owner + * + * Returns true on success or false on error. + * + * @param string $filename + * @param int $uid + * @param bool $recursive + * @return bool + * @access public + */ + function chown($filename, $uid, $recursive = false) + { + // quoting from , + // "if the owner or group is specified as -1, then that ID is not changed" + $attr = pack('N3', NET_SFTP_ATTR_UIDGID, $uid, -1); + + return $this->_setstat($filename, $attr, $recursive); + } + + /** + * Changes file or directory group + * + * Returns true on success or false on error. + * + * @param string $filename + * @param int $gid + * @param bool $recursive + * @return bool + * @access public + */ + function chgrp($filename, $gid, $recursive = false) + { + $attr = pack('N3', NET_SFTP_ATTR_UIDGID, -1, $gid); + + return $this->_setstat($filename, $attr, $recursive); + } + + /** + * Set permissions on a file. + * + * Returns the new file permissions on success or false on error. + * If $recursive is true than this just returns true or false. + * + * @param int $mode + * @param string $filename + * @param bool $recursive + * @return mixed + * @access public + */ + function chmod($mode, $filename, $recursive = false) + { + if (is_string($mode) && is_int($filename)) { + $temp = $mode; + $mode = $filename; + $filename = $temp; + } + + $attr = pack('N2', NET_SFTP_ATTR_PERMISSIONS, $mode & 07777); + if (!$this->_setstat($filename, $attr, $recursive)) { + return false; + } + if ($recursive) { + return true; + } + + $filename = $this->_realPath($filename); + // rather than return what the permissions *should* be, we'll return what they actually are. this will also + // tell us if the file actually exists. + // incidentally, SFTPv4+ adds an additional 32-bit integer field - flags - to the following: + $packet = pack('Na*', strlen($filename), $filename); + if (!$this->_send_sftp_packet(NET_SFTP_STAT, $packet)) { + return false; + } + + $response = $this->_get_sftp_packet(); + switch ($this->packet_type) { + case NET_SFTP_ATTRS: + $attrs = $this->_parseAttributes($response); + return $attrs['permissions']; + case NET_SFTP_STATUS: + $this->_logError($response); + return false; + } + + user_error('Expected SSH_FXP_ATTRS or SSH_FXP_STATUS'); + return false; + } + + /** + * Sets information about a file + * + * @param string $filename + * @param string $attr + * @param bool $recursive + * @return bool + * @access private + */ + function _setstat($filename, $attr, $recursive) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + $filename = $this->_realpath($filename); + if ($filename === false) { + return false; + } + + $this->_remove_from_stat_cache($filename); + + if ($recursive) { + $i = 0; + $result = $this->_setstat_recursive($filename, $attr, $i); + $this->_read_put_responses($i); + return $result; + } + + // SFTPv4+ has an additional byte field - type - that would need to be sent, as well. setting it to + // SSH_FILEXFER_TYPE_UNKNOWN might work. if not, we'd have to do an SSH_FXP_STAT before doing an SSH_FXP_SETSTAT. + if (!$this->_send_sftp_packet(NET_SFTP_SETSTAT, pack('Na*a*', strlen($filename), $filename, $attr))) { + return false; + } + + /* + "Because some systems must use separate system calls to set various attributes, it is possible that a failure + response will be returned, but yet some of the attributes may be have been successfully modified. If possible, + servers SHOULD avoid this situation; however, clients MUST be aware that this is possible." + + -- http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.6 + */ + $response = $this->_get_sftp_packet(); + if ($this->packet_type != NET_SFTP_STATUS) { + user_error('Expected SSH_FXP_STATUS'); + return false; + } + + extract(unpack('Nstatus', $this->_string_shift($response, 4))); + if ($status != NET_SFTP_STATUS_OK) { + $this->_logError($response, $status); + return false; + } + + return true; + } + + /** + * Recursively sets information on directories on the SFTP server + * + * Minimizes directory lookups and SSH_FXP_STATUS requests for speed. + * + * @param string $path + * @param string $attr + * @param int $i + * @return bool + * @access private + */ + function _setstat_recursive($path, $attr, &$i) + { + if (!$this->_read_put_responses($i)) { + return false; + } + $i = 0; + $entries = $this->_list($path, true); + + if ($entries === false) { + return $this->_setstat($path, $attr, false); + } + + // normally $entries would have at least . and .. but it might not if the directories + // permissions didn't allow reading + if (empty($entries)) { + return false; + } + + unset($entries['.'], $entries['..']); + foreach ($entries as $filename => $props) { + if (!isset($props['type'])) { + return false; + } + + $temp = $path . '/' . $filename; + if ($props['type'] == NET_SFTP_TYPE_DIRECTORY) { + if (!$this->_setstat_recursive($temp, $attr, $i)) { + return false; + } + } else { + if (!$this->_send_sftp_packet(NET_SFTP_SETSTAT, pack('Na*a*', strlen($temp), $temp, $attr))) { + return false; + } + + $i++; + + if ($i >= NET_SFTP_QUEUE_SIZE) { + if (!$this->_read_put_responses($i)) { + return false; + } + $i = 0; + } + } + } + + if (!$this->_send_sftp_packet(NET_SFTP_SETSTAT, pack('Na*a*', strlen($path), $path, $attr))) { + return false; + } + + $i++; + + if ($i >= NET_SFTP_QUEUE_SIZE) { + if (!$this->_read_put_responses($i)) { + return false; + } + $i = 0; + } + + return true; + } + + /** + * Return the target of a symbolic link + * + * @param string $link + * @return mixed + * @access public + */ + function readlink($link) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + $link = $this->_realpath($link); + + if (!$this->_send_sftp_packet(NET_SFTP_READLINK, pack('Na*', strlen($link), $link))) { + return false; + } + + $response = $this->_get_sftp_packet(); + switch ($this->packet_type) { + case NET_SFTP_NAME: + break; + case NET_SFTP_STATUS: + $this->_logError($response); + return false; + default: + user_error('Expected SSH_FXP_NAME or SSH_FXP_STATUS'); + return false; + } + + extract(unpack('Ncount', $this->_string_shift($response, 4))); + // the file isn't a symlink + if (!$count) { + return false; + } + + extract(unpack('Nlength', $this->_string_shift($response, 4))); + return $this->_string_shift($response, $length); + } + + /** + * Create a symlink + * + * symlink() creates a symbolic link to the existing target with the specified name link. + * + * @param string $target + * @param string $link + * @return bool + * @access public + */ + function symlink($target, $link) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + //$target = $this->_realpath($target); + $link = $this->_realpath($link); + + $packet = pack('Na*Na*', strlen($target), $target, strlen($link), $link); + if (!$this->_send_sftp_packet(NET_SFTP_SYMLINK, $packet)) { + return false; + } + + $response = $this->_get_sftp_packet(); + if ($this->packet_type != NET_SFTP_STATUS) { + user_error('Expected SSH_FXP_STATUS'); + return false; + } + + extract(unpack('Nstatus', $this->_string_shift($response, 4))); + if ($status != NET_SFTP_STATUS_OK) { + $this->_logError($response, $status); + return false; + } + + return true; + } + + /** + * Creates a directory. + * + * @param string $dir + * @return bool + * @access public + */ + function mkdir($dir, $mode = -1, $recursive = false) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + $dir = $this->_realpath($dir); + // by not providing any permissions, hopefully the server will use the logged in users umask - their + // default permissions. + $attr = $mode == -1 ? "\0\0\0\0" : pack('N2', NET_SFTP_ATTR_PERMISSIONS, $mode & 07777); + + if ($recursive) { + $dirs = explode('/', preg_replace('#/(?=/)|/$#', '', $dir)); + if (empty($dirs[0])) { + array_shift($dirs); + $dirs[0] = '/' . $dirs[0]; + } + for ($i = 0; $i < count($dirs); $i++) { + $temp = array_slice($dirs, 0, $i + 1); + $temp = implode('/', $temp); + $result = $this->_mkdir_helper($temp, $attr); + } + return $result; + } + + return $this->_mkdir_helper($dir, $attr); + } + + /** + * Helper function for directory creation + * + * @param string $dir + * @return bool + * @access private + */ + function _mkdir_helper($dir, $attr) + { + if (!$this->_send_sftp_packet(NET_SFTP_MKDIR, pack('Na*a*', strlen($dir), $dir, $attr))) { + return false; + } + + $response = $this->_get_sftp_packet(); + if ($this->packet_type != NET_SFTP_STATUS) { + user_error('Expected SSH_FXP_STATUS'); + return false; + } + + extract(unpack('Nstatus', $this->_string_shift($response, 4))); + if ($status != NET_SFTP_STATUS_OK) { + $this->_logError($response, $status); + return false; + } + + return true; + } + + /** + * Removes a directory. + * + * @param string $dir + * @return bool + * @access public + */ + function rmdir($dir) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + $dir = $this->_realpath($dir); + if ($dir === false) { + return false; + } + + if (!$this->_send_sftp_packet(NET_SFTP_RMDIR, pack('Na*', strlen($dir), $dir))) { + return false; + } + + $response = $this->_get_sftp_packet(); + if ($this->packet_type != NET_SFTP_STATUS) { + user_error('Expected SSH_FXP_STATUS'); + return false; + } + + extract(unpack('Nstatus', $this->_string_shift($response, 4))); + if ($status != NET_SFTP_STATUS_OK) { + // presumably SSH_FX_NO_SUCH_FILE or SSH_FX_PERMISSION_DENIED? + $this->_logError($response, $status); + return false; + } + + $this->_remove_from_stat_cache($dir); + // the following will do a soft delete, which would be useful if you deleted a file + // and then tried to do a stat on the deleted file. the above, in contrast, does + // a hard delete + //$this->_update_stat_cache($dir, false); + + return true; + } + + /** + * Uploads a file to the SFTP server. + * + * By default, Net_SFTP::put() does not read from the local filesystem. $data is dumped directly into $remote_file. + * So, for example, if you set $data to 'filename.ext' and then do Net_SFTP::get(), you will get a file, twelve bytes + * long, containing 'filename.ext' as its contents. + * + * Setting $mode to NET_SFTP_LOCAL_FILE will change the above behavior. With NET_SFTP_LOCAL_FILE, $remote_file will + * contain as many bytes as filename.ext does on your local filesystem. If your filename.ext is 1MB then that is how + * large $remote_file will be, as well. + * + * If $data is a resource then it'll be used as a resource instead. + * + * + * Setting $mode to NET_SFTP_CALLBACK will use $data as callback function, which gets only one parameter -- number + * of bytes to return, and returns a string if there is some data or null if there is no more data + * + * Currently, only binary mode is supported. As such, if the line endings need to be adjusted, you will need to take + * care of that, yourself. + * + * $mode can take an additional two parameters - NET_SFTP_RESUME and NET_SFTP_RESUME_START. These are bitwise AND'd with + * $mode. So if you want to resume upload of a 300mb file on the local file system you'd set $mode to the following: + * + * NET_SFTP_LOCAL_FILE | NET_SFTP_RESUME + * + * If you wanted to simply append the full contents of a local file to the full contents of a remote file you'd replace + * NET_SFTP_RESUME with NET_SFTP_RESUME_START. + * + * If $mode & (NET_SFTP_RESUME | NET_SFTP_RESUME_START) then NET_SFTP_RESUME_START will be assumed. + * + * $start and $local_start give you more fine grained control over this process and take precident over NET_SFTP_RESUME + * when they're non-negative. ie. $start could let you write at the end of a file (like NET_SFTP_RESUME) or in the middle + * of one. $local_start could let you start your reading from the end of a file (like NET_SFTP_RESUME_START) or in the + * middle of one. + * + * Setting $local_start to > 0 or $mode | NET_SFTP_RESUME_START doesn't do anything unless $mode | NET_SFTP_LOCAL_FILE. + * + * @param string $remote_file + * @param string|resource $data + * @param int $mode + * @param int $start + * @param int $local_start + * @param callable|null $progressCallback + * @return bool + * @access public + * @internal ASCII mode for SFTPv4/5/6 can be supported by adding a new function - Net_SFTP::setMode(). + */ + function put($remote_file, $data, $mode = NET_SFTP_STRING, $start = -1, $local_start = -1, $progressCallback = null) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + $remote_file = $this->_realpath($remote_file); + if ($remote_file === false) { + return false; + } + + $this->_remove_from_stat_cache($remote_file); + + $flags = NET_SFTP_OPEN_WRITE | NET_SFTP_OPEN_CREATE; + // according to the SFTP specs, NET_SFTP_OPEN_APPEND should "force all writes to append data at the end of the file." + // in practice, it doesn't seem to do that. + //$flags|= ($mode & NET_SFTP_RESUME) ? NET_SFTP_OPEN_APPEND : NET_SFTP_OPEN_TRUNCATE; + + if ($start >= 0) { + $offset = $start; + } elseif ($mode & NET_SFTP_RESUME) { + // if NET_SFTP_OPEN_APPEND worked as it should _size() wouldn't need to be called + $size = $this->size($remote_file); + $offset = $size !== false ? $size : 0; + } else { + $offset = 0; + $flags|= NET_SFTP_OPEN_TRUNCATE; + } + + $packet = pack('Na*N2', strlen($remote_file), $remote_file, $flags, 0); + if (!$this->_send_sftp_packet(NET_SFTP_OPEN, $packet)) { + return false; + } + + $response = $this->_get_sftp_packet(); + switch ($this->packet_type) { + case NET_SFTP_HANDLE: + $handle = substr($response, 4); + break; + case NET_SFTP_STATUS: + $this->_logError($response); + return false; + default: + user_error('Expected SSH_FXP_HANDLE or SSH_FXP_STATUS'); + return false; + } + + // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.2.3 + $dataCallback = false; + switch (true) { + case $mode & NET_SFTP_CALLBACK: + if (!is_callable($data)) { + user_error("\$data should be is_callable if you set NET_SFTP_CALLBACK flag"); + } + $dataCallback = $data; + // do nothing + break; + case is_resource($data): + $mode = $mode & ~NET_SFTP_LOCAL_FILE; + $fp = $data; + break; + case $mode & NET_SFTP_LOCAL_FILE: + if (!is_file($data)) { + user_error("$data is not a valid file"); + return false; + } + $fp = @fopen($data, 'rb'); + if (!$fp) { + return false; + } + } + + if (isset($fp)) { + $stat = fstat($fp); + $size = $stat['size']; + + if ($local_start >= 0) { + fseek($fp, $local_start); + $size-= $local_start; + } + } elseif ($dataCallback) { + $size = 0; + } else { + $size = strlen($data); + } + + $sent = 0; + $size = $size < 0 ? ($size & 0x7FFFFFFF) + 0x80000000 : $size; + + $sftp_packet_size = 4096; // PuTTY uses 4096 + // make the SFTP packet be exactly 4096 bytes by including the bytes in the NET_SFTP_WRITE packets "header" + $sftp_packet_size-= strlen($handle) + 25; + $i = 0; + while ($dataCallback || ($size === 0 || $sent < $size)) { + if ($dataCallback) { + $temp = call_user_func($dataCallback, $sftp_packet_size); + if (is_null($temp)) { + break; + } + } else { + $temp = isset($fp) ? fread($fp, $sftp_packet_size) : substr($data, $sent, $sftp_packet_size); + if ($temp === false || $temp === '') { + break; + } + } + + $subtemp = $offset + $sent; + $packet = pack('Na*N3a*', strlen($handle), $handle, $subtemp / 4294967296, $subtemp, strlen($temp), $temp); + if (!$this->_send_sftp_packet(NET_SFTP_WRITE, $packet)) { + if ($mode & NET_SFTP_LOCAL_FILE) { + fclose($fp); + } + return false; + } + $sent+= strlen($temp); + if (is_callable($progressCallback)) { + call_user_func($progressCallback, $sent); + } + + $i++; + + if ($i == NET_SFTP_QUEUE_SIZE) { + if (!$this->_read_put_responses($i)) { + $i = 0; + break; + } + $i = 0; + } + } + + if (!$this->_read_put_responses($i)) { + if ($mode & NET_SFTP_LOCAL_FILE) { + fclose($fp); + } + $this->_close_handle($handle); + return false; + } + + if ($mode & NET_SFTP_LOCAL_FILE) { + fclose($fp); + } + + return $this->_close_handle($handle); + } + + /** + * Reads multiple successive SSH_FXP_WRITE responses + * + * Sending an SSH_FXP_WRITE packet and immediately reading its response isn't as efficient as blindly sending out $i + * SSH_FXP_WRITEs, in succession, and then reading $i responses. + * + * @param int $i + * @return bool + * @access private + */ + function _read_put_responses($i) + { + while ($i--) { + $response = $this->_get_sftp_packet(); + if ($this->packet_type != NET_SFTP_STATUS) { + user_error('Expected SSH_FXP_STATUS'); + return false; + } + + extract(unpack('Nstatus', $this->_string_shift($response, 4))); + if ($status != NET_SFTP_STATUS_OK) { + $this->_logError($response, $status); + break; + } + } + + return $i < 0; + } + + /** + * Close handle + * + * @param string $handle + * @return bool + * @access private + */ + function _close_handle($handle) + { + if (!$this->_send_sftp_packet(NET_SFTP_CLOSE, pack('Na*', strlen($handle), $handle))) { + return false; + } + + // "The client MUST release all resources associated with the handle regardless of the status." + // -- http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.1.3 + $response = $this->_get_sftp_packet(); + if ($this->packet_type != NET_SFTP_STATUS) { + user_error('Expected SSH_FXP_STATUS'); + return false; + } + + extract(unpack('Nstatus', $this->_string_shift($response, 4))); + if ($status != NET_SFTP_STATUS_OK) { + $this->_logError($response, $status); + return false; + } + + return true; + } + + /** + * Downloads a file from the SFTP server. + * + * Returns a string containing the contents of $remote_file if $local_file is left undefined or a boolean false if + * the operation was unsuccessful. If $local_file is defined, returns true or false depending on the success of the + * operation. + * + * $offset and $length can be used to download files in chunks. + * + * @param string $remote_file + * @param string $local_file + * @param int $offset + * @param int $length + * @return mixed + * @access public + */ + function get($remote_file, $local_file = false, $offset = 0, $length = -1) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + $remote_file = $this->_realpath($remote_file); + if ($remote_file === false) { + return false; + } + + $packet = pack('Na*N2', strlen($remote_file), $remote_file, NET_SFTP_OPEN_READ, 0); + if (!$this->_send_sftp_packet(NET_SFTP_OPEN, $packet)) { + return false; + } + + $response = $this->_get_sftp_packet(); + switch ($this->packet_type) { + case NET_SFTP_HANDLE: + $handle = substr($response, 4); + break; + case NET_SFTP_STATUS: // presumably SSH_FX_NO_SUCH_FILE or SSH_FX_PERMISSION_DENIED + $this->_logError($response); + return false; + default: + user_error('Expected SSH_FXP_HANDLE or SSH_FXP_STATUS'); + return false; + } + + if (is_resource($local_file)) { + $fp = $local_file; + $stat = fstat($fp); + $res_offset = $stat['size']; + } else { + $res_offset = 0; + if ($local_file !== false) { + $fp = fopen($local_file, 'wb'); + if (!$fp) { + return false; + } + } else { + $content = ''; + } + } + + $fclose_check = $local_file !== false && !is_resource($local_file); + + $start = $offset; + $read = 0; + while (true) { + $i = 0; + + while ($i < NET_SFTP_QUEUE_SIZE && ($length < 0 || $read < $length)) { + $tempoffset = $start + $read; + + $packet_size = $length > 0 ? min($this->max_sftp_packet, $length - $read) : $this->max_sftp_packet; + + $packet = pack('Na*N3', strlen($handle), $handle, $tempoffset / 4294967296, $tempoffset, $packet_size); + if (!$this->_send_sftp_packet(NET_SFTP_READ, $packet)) { + if ($fclose_check) { + fclose($fp); + } + return false; + } + $packet = null; + $read+= $packet_size; + $i++; + } + + if (!$i) { + break; + } + + $clear_responses = false; + while ($i > 0) { + $i--; + + if ($clear_responses) { + $this->_get_sftp_packet(); + continue; + } else { + $response = $this->_get_sftp_packet(); + } + + switch ($this->packet_type) { + case NET_SFTP_DATA: + $temp = substr($response, 4); + $offset+= strlen($temp); + if ($local_file === false) { + $content.= $temp; + } else { + fputs($fp, $temp); + } + $temp = null; + break; + case NET_SFTP_STATUS: + // could, in theory, return false if !strlen($content) but we'll hold off for the time being + $this->_logError($response); + $clear_responses = true; // don't break out of the loop yet, so we can read the remaining responses + break; + default: + if ($fclose_check) { + fclose($fp); + } + user_error('Expected SSH_FX_DATA or SSH_FXP_STATUS'); + } + $response = null; + } + + if ($clear_responses) { + break; + } + } + + if ($length > 0 && $length <= $offset - $start) { + if ($local_file === false) { + $content = substr($content, 0, $length); + } else { + ftruncate($fp, $length + $res_offset); + } + } + + if ($fclose_check) { + fclose($fp); + } + + if (!$this->_close_handle($handle)) { + return false; + } + + // if $content isn't set that means a file was written to + return isset($content) ? $content : true; + } + + /** + * Deletes a file on the SFTP server. + * + * @param string $path + * @param bool $recursive + * @return bool + * @access public + */ + function delete($path, $recursive = true) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + $path = $this->_realpath($path); + if ($path === false) { + return false; + } + + // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.3 + if (!$this->_send_sftp_packet(NET_SFTP_REMOVE, pack('Na*', strlen($path), $path))) { + return false; + } + + $response = $this->_get_sftp_packet(); + if ($this->packet_type != NET_SFTP_STATUS) { + user_error('Expected SSH_FXP_STATUS'); + return false; + } + + // if $status isn't SSH_FX_OK it's probably SSH_FX_NO_SUCH_FILE or SSH_FX_PERMISSION_DENIED + extract(unpack('Nstatus', $this->_string_shift($response, 4))); + if ($status != NET_SFTP_STATUS_OK) { + $this->_logError($response, $status); + if (!$recursive) { + return false; + } + $i = 0; + $result = $this->_delete_recursive($path, $i); + $this->_read_put_responses($i); + return $result; + } + + $this->_remove_from_stat_cache($path); + + return true; + } + + /** + * Recursively deletes directories on the SFTP server + * + * Minimizes directory lookups and SSH_FXP_STATUS requests for speed. + * + * @param string $path + * @param int $i + * @return bool + * @access private + */ + function _delete_recursive($path, &$i) + { + if (!$this->_read_put_responses($i)) { + return false; + } + $i = 0; + $entries = $this->_list($path, true); + + // normally $entries would have at least . and .. but it might not if the directories + // permissions didn't allow reading + if (empty($entries)) { + return false; + } + + unset($entries['.'], $entries['..']); + foreach ($entries as $filename => $props) { + if (!isset($props['type'])) { + return false; + } + + $temp = $path . '/' . $filename; + if ($props['type'] == NET_SFTP_TYPE_DIRECTORY) { + if (!$this->_delete_recursive($temp, $i)) { + return false; + } + } else { + if (!$this->_send_sftp_packet(NET_SFTP_REMOVE, pack('Na*', strlen($temp), $temp))) { + return false; + } + $this->_remove_from_stat_cache($temp); + + $i++; + + if ($i >= NET_SFTP_QUEUE_SIZE) { + if (!$this->_read_put_responses($i)) { + return false; + } + $i = 0; + } + } + } + + if (!$this->_send_sftp_packet(NET_SFTP_RMDIR, pack('Na*', strlen($path), $path))) { + return false; + } + $this->_remove_from_stat_cache($path); + + $i++; + + if ($i >= NET_SFTP_QUEUE_SIZE) { + if (!$this->_read_put_responses($i)) { + return false; + } + $i = 0; + } + + return true; + } + + /** + * Checks whether a file or directory exists + * + * @param string $path + * @return bool + * @access public + */ + function file_exists($path) + { + if ($this->use_stat_cache) { + $path = $this->_realpath($path); + + $result = $this->_query_stat_cache($path); + + if (isset($result)) { + // return true if $result is an array or if it's an stdClass object + return $result !== false; + } + } + + return $this->stat($path) !== false; + } + + /** + * Tells whether the filename is a directory + * + * @param string $path + * @return bool + * @access public + */ + function is_dir($path) + { + $result = $this->_get_stat_cache_prop($path, 'type'); + if ($result === false) { + return false; + } + return $result === NET_SFTP_TYPE_DIRECTORY; + } + + /** + * Tells whether the filename is a regular file + * + * @param string $path + * @return bool + * @access public + */ + function is_file($path) + { + $result = $this->_get_stat_cache_prop($path, 'type'); + if ($result === false) { + return false; + } + return $result === NET_SFTP_TYPE_REGULAR; + } + + /** + * Tells whether the filename is a symbolic link + * + * @param string $path + * @return bool + * @access public + */ + function is_link($path) + { + $result = $this->_get_lstat_cache_prop($path, 'type'); + if ($result === false) { + return false; + } + return $result === NET_SFTP_TYPE_SYMLINK; + } + + /** + * Tells whether a file exists and is readable + * + * @param string $path + * @return bool + * @access public + */ + function is_readable($path) + { + $path = $this->_realpath($path); + + $packet = pack('Na*N2', strlen($path), $path, NET_SFTP_OPEN_READ, 0); + if (!$this->_send_sftp_packet(NET_SFTP_OPEN, $packet)) { + return false; + } + + $response = $this->_get_sftp_packet(); + switch ($this->packet_type) { + case NET_SFTP_HANDLE: + return true; + case NET_SFTP_STATUS: // presumably SSH_FX_NO_SUCH_FILE or SSH_FX_PERMISSION_DENIED + return false; + default: + user_error('Expected SSH_FXP_HANDLE or SSH_FXP_STATUS'); + return false; + } + } + + /** + * Tells whether the filename is writable + * + * @param string $path + * @return bool + * @access public + */ + function is_writable($path) + { + $path = $this->_realpath($path); + + $packet = pack('Na*N2', strlen($path), $path, NET_SFTP_OPEN_WRITE, 0); + if (!$this->_send_sftp_packet(NET_SFTP_OPEN, $packet)) { + return false; + } + + $response = $this->_get_sftp_packet(); + switch ($this->packet_type) { + case NET_SFTP_HANDLE: + return true; + case NET_SFTP_STATUS: // presumably SSH_FX_NO_SUCH_FILE or SSH_FX_PERMISSION_DENIED + return false; + default: + user_error('Expected SSH_FXP_HANDLE or SSH_FXP_STATUS'); + return false; + } + } + + /** + * Tells whether the filename is writeable + * + * Alias of is_writable + * + * @param string $path + * @return bool + * @access public + */ + function is_writeable($path) + { + return $this->is_writable($path); + } + + /** + * Gets last access time of file + * + * @param string $path + * @return mixed + * @access public + */ + function fileatime($path) + { + return $this->_get_stat_cache_prop($path, 'atime'); + } + + /** + * Gets file modification time + * + * @param string $path + * @return mixed + * @access public + */ + function filemtime($path) + { + return $this->_get_stat_cache_prop($path, 'mtime'); + } + + /** + * Gets file permissions + * + * @param string $path + * @return mixed + * @access public + */ + function fileperms($path) + { + return $this->_get_stat_cache_prop($path, 'permissions'); + } + + /** + * Gets file owner + * + * @param string $path + * @return mixed + * @access public + */ + function fileowner($path) + { + return $this->_get_stat_cache_prop($path, 'uid'); + } + + /** + * Gets file group + * + * @param string $path + * @return mixed + * @access public + */ + function filegroup($path) + { + return $this->_get_stat_cache_prop($path, 'gid'); + } + + /** + * Gets file size + * + * @param string $path + * @return mixed + * @access public + */ + function filesize($path) + { + return $this->_get_stat_cache_prop($path, 'size'); + } + + /** + * Gets file type + * + * @param string $path + * @return mixed + * @access public + */ + function filetype($path) + { + $type = $this->_get_stat_cache_prop($path, 'type'); + if ($type === false) { + return false; + } + + switch ($type) { + case NET_SFTP_TYPE_BLOCK_DEVICE: + return 'block'; + case NET_SFTP_TYPE_CHAR_DEVICE: + return 'char'; + case NET_SFTP_TYPE_DIRECTORY: + return 'dir'; + case NET_SFTP_TYPE_FIFO: + return 'fifo'; + case NET_SFTP_TYPE_REGULAR: + return 'file'; + case NET_SFTP_TYPE_SYMLINK: + return 'link'; + default: + return false; + } + } + + /** + * Return a stat properity + * + * Uses cache if appropriate. + * + * @param string $path + * @param string $prop + * @return mixed + * @access private + */ + function _get_stat_cache_prop($path, $prop) + { + return $this->_get_xstat_cache_prop($path, $prop, 'stat'); + } + + /** + * Return an lstat properity + * + * Uses cache if appropriate. + * + * @param string $path + * @param string $prop + * @return mixed + * @access private + */ + function _get_lstat_cache_prop($path, $prop) + { + return $this->_get_xstat_cache_prop($path, $prop, 'lstat'); + } + + /** + * Return a stat or lstat properity + * + * Uses cache if appropriate. + * + * @param string $path + * @param string $prop + * @return mixed + * @access private + */ + function _get_xstat_cache_prop($path, $prop, $type) + { + if ($this->use_stat_cache) { + $path = $this->_realpath($path); + + $result = $this->_query_stat_cache($path); + + if (is_object($result) && isset($result->$type)) { + return $result->{$type}[$prop]; + } + } + + $result = $this->$type($path); + + if ($result === false || !isset($result[$prop])) { + return false; + } + + return $result[$prop]; + } + + /** + * Renames a file or a directory on the SFTP server + * + * @param string $oldname + * @param string $newname + * @return bool + * @access public + */ + function rename($oldname, $newname) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + $oldname = $this->_realpath($oldname); + $newname = $this->_realpath($newname); + if ($oldname === false || $newname === false) { + return false; + } + + // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.3 + $packet = pack('Na*Na*', strlen($oldname), $oldname, strlen($newname), $newname); + if (!$this->_send_sftp_packet(NET_SFTP_RENAME, $packet)) { + return false; + } + + $response = $this->_get_sftp_packet(); + if ($this->packet_type != NET_SFTP_STATUS) { + user_error('Expected SSH_FXP_STATUS'); + return false; + } + + // if $status isn't SSH_FX_OK it's probably SSH_FX_NO_SUCH_FILE or SSH_FX_PERMISSION_DENIED + extract(unpack('Nstatus', $this->_string_shift($response, 4))); + if ($status != NET_SFTP_STATUS_OK) { + $this->_logError($response, $status); + return false; + } + + // don't move the stat cache entry over since this operation could very well change the + // atime and mtime attributes + //$this->_update_stat_cache($newname, $this->_query_stat_cache($oldname)); + $this->_remove_from_stat_cache($oldname); + $this->_remove_from_stat_cache($newname); + + return true; + } + + /** + * Parse Attributes + * + * See '7. File Attributes' of draft-ietf-secsh-filexfer-13 for more info. + * + * @param string $response + * @return array + * @access private + */ + function _parseAttributes(&$response) + { + $attr = array(); + extract(unpack('Nflags', $this->_string_shift($response, 4))); + // SFTPv4+ have a type field (a byte) that follows the above flag field + foreach ($this->attributes as $key => $value) { + switch ($flags & $key) { + case NET_SFTP_ATTR_SIZE: // 0x00000001 + // The size attribute is defined as an unsigned 64-bit integer. + // The following will use floats on 32-bit platforms, if necessary. + // As can be seen in the BigInteger class, floats are generally + // IEEE 754 binary64 "double precision" on such platforms and + // as such can represent integers of at least 2^50 without loss + // of precision. Interpreted in filesize, 2^50 bytes = 1024 TiB. + $attr['size'] = hexdec(bin2hex($this->_string_shift($response, 8))); + break; + case NET_SFTP_ATTR_UIDGID: // 0x00000002 (SFTPv3 only) + $attr+= unpack('Nuid/Ngid', $this->_string_shift($response, 8)); + break; + case NET_SFTP_ATTR_PERMISSIONS: // 0x00000004 + $attr+= unpack('Npermissions', $this->_string_shift($response, 4)); + // mode == permissions; permissions was the original array key and is retained for bc purposes. + // mode was added because that's the more industry standard terminology + $attr+= array('mode' => $attr['permissions']); + $fileType = $this->_parseMode($attr['permissions']); + if ($fileType !== false) { + $attr+= array('type' => $fileType); + } + break; + case NET_SFTP_ATTR_ACCESSTIME: // 0x00000008 + $attr+= unpack('Natime/Nmtime', $this->_string_shift($response, 8)); + break; + case NET_SFTP_ATTR_EXTENDED: // 0x80000000 + extract(unpack('Ncount', $this->_string_shift($response, 4))); + for ($i = 0; $i < $count; $i++) { + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $key = $this->_string_shift($response, $length); + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $attr[$key] = $this->_string_shift($response, $length); + } + } + } + return $attr; + } + + /** + * Attempt to identify the file type + * + * Quoting the SFTP RFC, "Implementations MUST NOT send bits that are not defined" but they seem to anyway + * + * @param int $mode + * @return int + * @access private + */ + function _parseMode($mode) + { + // values come from http://lxr.free-electrons.com/source/include/uapi/linux/stat.h#L12 + // see, also, http://linux.die.net/man/2/stat + switch ($mode & 0170000) {// ie. 1111 0000 0000 0000 + case 0000000: // no file type specified - figure out the file type using alternative means + return false; + case 0040000: + return NET_SFTP_TYPE_DIRECTORY; + case 0100000: + return NET_SFTP_TYPE_REGULAR; + case 0120000: + return NET_SFTP_TYPE_SYMLINK; + // new types introduced in SFTPv5+ + // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-05#section-5.2 + case 0010000: // named pipe (fifo) + return NET_SFTP_TYPE_FIFO; + case 0020000: // character special + return NET_SFTP_TYPE_CHAR_DEVICE; + case 0060000: // block special + return NET_SFTP_TYPE_BLOCK_DEVICE; + case 0140000: // socket + return NET_SFTP_TYPE_SOCKET; + case 0160000: // whiteout + // "SPECIAL should be used for files that are of + // a known type which cannot be expressed in the protocol" + return NET_SFTP_TYPE_SPECIAL; + default: + return NET_SFTP_TYPE_UNKNOWN; + } + } + + /** + * Parse Longname + * + * SFTPv3 doesn't provide any easy way of identifying a file type. You could try to open + * a file as a directory and see if an error is returned or you could try to parse the + * SFTPv3-specific longname field of the SSH_FXP_NAME packet. That's what this function does. + * The result is returned using the + * {@link http://tools.ietf.org/html/draft-ietf-secsh-filexfer-04#section-5.2 SFTPv4 type constants}. + * + * If the longname is in an unrecognized format bool(false) is returned. + * + * @param string $longname + * @return mixed + * @access private + */ + function _parseLongname($longname) + { + // http://en.wikipedia.org/wiki/Unix_file_types + // http://en.wikipedia.org/wiki/Filesystem_permissions#Notation_of_traditional_Unix_permissions + if (preg_match('#^[^/]([r-][w-][xstST-]){3}#', $longname)) { + switch ($longname[0]) { + case '-': + return NET_SFTP_TYPE_REGULAR; + case 'd': + return NET_SFTP_TYPE_DIRECTORY; + case 'l': + return NET_SFTP_TYPE_SYMLINK; + default: + return NET_SFTP_TYPE_SPECIAL; + } + } + + return false; + } + + /** + * Sends SFTP Packets + * + * See '6. General Packet Format' of draft-ietf-secsh-filexfer-13 for more info. + * + * @param int $type + * @param string $data + * @see self::_get_sftp_packet() + * @see Net_SSH2::_send_channel_packet() + * @return bool + * @access private + */ + function _send_sftp_packet($type, $data) + { + $packet = $this->request_id !== false ? + pack('NCNa*', strlen($data) + 5, $type, $this->request_id, $data) : + pack('NCa*', strlen($data) + 1, $type, $data); + + $start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838 + $result = $this->_send_channel_packet(NET_SFTP_CHANNEL, $packet); + $stop = strtok(microtime(), ' ') + strtok(''); + + if (defined('NET_SFTP_LOGGING')) { + $packet_type = '-> ' . $this->packet_types[$type] . + ' (' . round($stop - $start, 4) . 's)'; + if (NET_SFTP_LOGGING == NET_SFTP_LOG_REALTIME) { + echo "
        \r\n" . $this->_format_log(array($data), array($packet_type)) . "\r\n
        \r\n"; + flush(); + ob_flush(); + } else { + $this->packet_type_log[] = $packet_type; + if (NET_SFTP_LOGGING == NET_SFTP_LOG_COMPLEX) { + $this->packet_log[] = $data; + } + } + } + + return $result; + } + + /** + * Receives SFTP Packets + * + * See '6. General Packet Format' of draft-ietf-secsh-filexfer-13 for more info. + * + * Incidentally, the number of SSH_MSG_CHANNEL_DATA messages has no bearing on the number of SFTP packets present. + * There can be one SSH_MSG_CHANNEL_DATA messages containing two SFTP packets or there can be two SSH_MSG_CHANNEL_DATA + * messages containing one SFTP packet. + * + * @see self::_send_sftp_packet() + * @return string + * @access private + */ + function _get_sftp_packet() + { + $this->curTimeout = false; + + $start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838 + + // SFTP packet length + while (strlen($this->packet_buffer) < 4) { + $temp = $this->_get_channel_packet(NET_SFTP_CHANNEL); + if (is_bool($temp)) { + $this->packet_type = false; + $this->packet_buffer = ''; + return false; + } + $this->packet_buffer.= $temp; + } + extract(unpack('Nlength', $this->_string_shift($this->packet_buffer, 4))); + $tempLength = $length; + $tempLength-= strlen($this->packet_buffer); + + // SFTP packet type and data payload + while ($tempLength > 0) { + $temp = $this->_get_channel_packet(NET_SFTP_CHANNEL); + if (is_bool($temp)) { + $this->packet_type = false; + $this->packet_buffer = ''; + return false; + } + $this->packet_buffer.= $temp; + $tempLength-= strlen($temp); + } + + $stop = strtok(microtime(), ' ') + strtok(''); + + $this->packet_type = ord($this->_string_shift($this->packet_buffer)); + + if ($this->request_id !== false) { + $this->_string_shift($this->packet_buffer, 4); // remove the request id + $length-= 5; // account for the request id and the packet type + } else { + $length-= 1; // account for the packet type + } + + $packet = $this->_string_shift($this->packet_buffer, $length); + + if (defined('NET_SFTP_LOGGING')) { + $packet_type = '<- ' . $this->packet_types[$this->packet_type] . + ' (' . round($stop - $start, 4) . 's)'; + if (NET_SFTP_LOGGING == NET_SFTP_LOG_REALTIME) { + echo "
        \r\n" . $this->_format_log(array($packet), array($packet_type)) . "\r\n
        \r\n"; + flush(); + ob_flush(); + } else { + $this->packet_type_log[] = $packet_type; + if (NET_SFTP_LOGGING == NET_SFTP_LOG_COMPLEX) { + $this->packet_log[] = $packet; + } + } + } + + return $packet; + } + + /** + * Returns a log of the packets that have been sent and received. + * + * Returns a string if NET_SFTP_LOGGING == NET_SFTP_LOG_COMPLEX, an array if NET_SFTP_LOGGING == NET_SFTP_LOG_SIMPLE and false if !defined('NET_SFTP_LOGGING') + * + * @access public + * @return string or Array + */ + function getSFTPLog() + { + if (!defined('NET_SFTP_LOGGING')) { + return false; + } + + switch (NET_SFTP_LOGGING) { + case NET_SFTP_LOG_COMPLEX: + return $this->_format_log($this->packet_log, $this->packet_type_log); + break; + //case NET_SFTP_LOG_SIMPLE: + default: + return $this->packet_type_log; + } + } + + /** + * Returns all errors + * + * @return string + * @access public + */ + function getSFTPErrors() + { + return $this->sftp_errors; + } + + /** + * Returns the last error + * + * @return string + * @access public + */ + function getLastSFTPError() + { + return count($this->sftp_errors) ? $this->sftp_errors[count($this->sftp_errors) - 1] : ''; + } + + /** + * Get supported SFTP versions + * + * @return array + * @access public + */ + function getSupportedVersions() + { + $temp = array('version' => $this->version); + if (isset($this->extensions['versions'])) { + $temp['extensions'] = $this->extensions['versions']; + } + return $temp; + } + + /** + * Disconnect + * + * @param int $reason + * @return bool + * @access private + */ + function _disconnect($reason) + { + $this->pwd = false; + parent::_disconnect($reason); + } +} diff --git a/plugins/updraftplus/includes/phpseclib/Net/SFTP/Stream.php b/plugins/updraftplus/includes/phpseclib/Net/SFTP/Stream.php new file mode 100644 index 0000000..a944d7f --- /dev/null +++ b/plugins/updraftplus/includes/phpseclib/Net/SFTP/Stream.php @@ -0,0 +1,815 @@ + + * @copyright 2013 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/** + * SFTP Stream Wrapper + * + * @package Net_SFTP_Stream + * @author Jim Wigginton + * @access public + */ +class Net_SFTP_Stream +{ + /** + * SFTP instances + * + * Rather than re-create the connection we re-use instances if possible + * + * @var array + */ + static $instances; + + /** + * SFTP instance + * + * @var object + * @access private + */ + var $sftp; + + /** + * Path + * + * @var string + * @access private + */ + var $path; + + /** + * Mode + * + * @var string + * @access private + */ + var $mode; + + /** + * Position + * + * @var int + * @access private + */ + var $pos; + + /** + * Size + * + * @var int + * @access private + */ + var $size; + + /** + * Directory entries + * + * @var array + * @access private + */ + var $entries; + + /** + * EOF flag + * + * @var bool + * @access private + */ + var $eof; + + /** + * Context resource + * + * Technically this needs to be publically accessible so PHP can set it directly + * + * @var resource + * @access public + */ + var $context; + + /** + * Notification callback function + * + * @var callable + * @access public + */ + var $notification; + + /** + * Registers this class as a URL wrapper. + * + * @param string $protocol The wrapper name to be registered. + * @return bool True on success, false otherwise. + * @access public + */ + static function register($protocol = 'sftp') + { + if (in_array($protocol, stream_get_wrappers(), true)) { + return false; + } + $class = function_exists('get_called_class') ? get_called_class() : __CLASS__; + return stream_wrapper_register($protocol, $class); + } + + /** + * The Constructor + * + * @access public + */ + function __construct() + { + if (defined('NET_SFTP_STREAM_LOGGING')) { + echo "__construct()\r\n"; + } + + if (!class_exists('Net_SFTP')) { + include_once 'Net/SFTP.php'; + } + } + + /** + * Path Parser + * + * Extract a path from a URI and actually connect to an SSH server if appropriate + * + * If "notification" is set as a context parameter the message code for successful login is + * NET_SSH2_MSG_USERAUTH_SUCCESS. For a failed login it's NET_SSH2_MSG_USERAUTH_FAILURE. + * + * @param string $path + * @return string + * @access private + */ + function _parse_path($path) + { + $orig = $path; + extract(parse_url($path) + array('port' => 22)); + if (isset($query)) { + $path.= '?' . $query; + } elseif (preg_match('/(\?|\?#)$/', $orig)) { + $path.= '?'; + } + if (isset($fragment)) { + $path.= '#' . $fragment; + } elseif ($orig[strlen($orig) - 1] == '#') { + $path.= '#'; + } + + if (!isset($host)) { + return false; + } + + if (isset($this->context)) { + $context = stream_context_get_params($this->context); + if (isset($context['notification'])) { + $this->notification = $context['notification']; + } + } + + if ($host[0] == '$') { + $host = substr($host, 1); + global $$host; + if (!is_object($$host) || get_class($$host) != 'Net_SFTP') { + return false; + } + $this->sftp = $$host; + } else { + if (isset($this->context)) { + $context = stream_context_get_options($this->context); + } + if (isset($context[$scheme]['session'])) { + $sftp = $context[$scheme]['session']; + } + if (isset($context[$scheme]['sftp'])) { + $sftp = $context[$scheme]['sftp']; + } + if (isset($sftp) && is_object($sftp) && get_class($sftp) == 'Net_SFTP') { + $this->sftp = $sftp; + return $path; + } + if (isset($context[$scheme]['username'])) { + $user = $context[$scheme]['username']; + } + if (isset($context[$scheme]['password'])) { + $pass = $context[$scheme]['password']; + } + if (isset($context[$scheme]['privkey']) && is_object($context[$scheme]['privkey']) && get_Class($context[$scheme]['privkey']) == 'Crypt_RSA') { + $pass = $context[$scheme]['privkey']; + } + + if (!isset($user) || !isset($pass)) { + return false; + } + + // casting $pass to a string is necessary in the event that it's a Crypt_RSA object + if (isset(self::$instances[$host][$port][$user][(string) $pass])) { + $this->sftp = self::$instances[$host][$port][$user][(string) $pass]; + } else { + $this->sftp = new Net_SFTP($host, $port); + $this->sftp->disableStatCache(); + if (isset($this->notification) && is_callable($this->notification)) { + /* if !is_callable($this->notification) we could do this: + + user_error('fopen(): failed to call user notifier', E_USER_WARNING); + + the ftp wrapper gives errors like that when the notifier isn't callable. + i've opted not to do that, however, since the ftp wrapper gives the line + on which the fopen occurred as the line number - not the line that the + user_error is on. + */ + call_user_func($this->notification, STREAM_NOTIFY_CONNECT, STREAM_NOTIFY_SEVERITY_INFO, '', 0, 0, 0); + call_user_func($this->notification, STREAM_NOTIFY_AUTH_REQUIRED, STREAM_NOTIFY_SEVERITY_INFO, '', 0, 0, 0); + if (!$this->sftp->login($user, $pass)) { + call_user_func($this->notification, STREAM_NOTIFY_AUTH_RESULT, STREAM_NOTIFY_SEVERITY_ERR, 'Login Failure', NET_SSH2_MSG_USERAUTH_FAILURE, 0, 0); + return false; + } + call_user_func($this->notification, STREAM_NOTIFY_AUTH_RESULT, STREAM_NOTIFY_SEVERITY_INFO, 'Login Success', NET_SSH2_MSG_USERAUTH_SUCCESS, 0, 0); + } else { + if (!$this->sftp->login($user, $pass)) { + return false; + } + } + self::$instances[$host][$port][$user][(string) $pass] = $this->sftp; + } + } + + return $path; + } + + /** + * Opens file or URL + * + * @param string $path + * @param string $mode + * @param int $options + * @param string $opened_path + * @return bool + * @access public + */ + function _stream_open($path, $mode, $options, &$opened_path) + { + $path = $this->_parse_path($path); + + if ($path === false) { + return false; + } + $this->path = $path; + + $this->size = $this->sftp->size($path); + $this->mode = preg_replace('#[bt]$#', '', $mode); + $this->eof = false; + + if ($this->size === false) { + if ($this->mode[0] == 'r') { + return false; + } else { + $this->sftp->touch($path); + $this->size = 0; + } + } else { + switch ($this->mode[0]) { + case 'x': + return false; + case 'w': + $this->sftp->truncate($path, 0); + $this->size = 0; + } + } + + $this->pos = $this->mode[0] != 'a' ? 0 : $this->size; + + return true; + } + + /** + * Read from stream + * + * @param int $count + * @return mixed + * @access public + */ + function _stream_read($count) + { + switch ($this->mode) { + case 'w': + case 'a': + case 'x': + case 'c': + return false; + } + + // commented out because some files - eg. /dev/urandom - will say their size is 0 when in fact it's kinda infinite + //if ($this->pos >= $this->size) { + // $this->eof = true; + // return false; + //} + + $result = $this->sftp->get($this->path, false, $this->pos, $count); + if (isset($this->notification) && is_callable($this->notification)) { + if ($result === false) { + call_user_func($this->notification, STREAM_NOTIFY_FAILURE, STREAM_NOTIFY_SEVERITY_ERR, $this->sftp->getLastSFTPError(), NET_SFTP_OPEN, 0, 0); + return 0; + } + // seems that PHP calls stream_read in 8k chunks + call_user_func($this->notification, STREAM_NOTIFY_PROGRESS, STREAM_NOTIFY_SEVERITY_INFO, '', 0, strlen($result), $this->size); + } + + if (empty($result)) { // ie. false or empty string + $this->eof = true; + return false; + } + $this->pos+= strlen($result); + + return $result; + } + + /** + * Write to stream + * + * @param string $data + * @return mixed + * @access public + */ + function _stream_write($data) + { + switch ($this->mode) { + case 'r': + return false; + } + + $result = $this->sftp->put($this->path, $data, NET_SFTP_STRING, $this->pos); + if (isset($this->notification) && is_callable($this->notification)) { + if (!$result) { + call_user_func($this->notification, STREAM_NOTIFY_FAILURE, STREAM_NOTIFY_SEVERITY_ERR, $this->sftp->getLastSFTPError(), NET_SFTP_OPEN, 0, 0); + return 0; + } + // seems that PHP splits up strings into 8k blocks before calling stream_write + call_user_func($this->notification, STREAM_NOTIFY_PROGRESS, STREAM_NOTIFY_SEVERITY_INFO, '', 0, strlen($data), strlen($data)); + } + + if ($result === false) { + return false; + } + $this->pos+= strlen($data); + if ($this->pos > $this->size) { + $this->size = $this->pos; + } + $this->eof = false; + return strlen($data); + } + + /** + * Retrieve the current position of a stream + * + * @return int + * @access public + */ + function _stream_tell() + { + return $this->pos; + } + + /** + * Tests for end-of-file on a file pointer + * + * In my testing there are four classes functions that normally effect the pointer: + * fseek, fputs / fwrite, fgets / fread and ftruncate. + * + * Only fgets / fread, however, results in feof() returning true. do fputs($fp, 'aaa') on a blank file and feof() + * will return false. do fread($fp, 1) and feof() will then return true. do fseek($fp, 10) on ablank file and feof() + * will return false. do fread($fp, 1) and feof() will then return true. + * + * @return bool + * @access public + */ + function _stream_eof() + { + return $this->eof; + } + + /** + * Seeks to specific location in a stream + * + * @param int $offset + * @param int $whence + * @return bool + * @access public + */ + function _stream_seek($offset, $whence) + { + switch ($whence) { + case SEEK_SET: + if ($offset >= $this->size || $offset < 0) { + return false; + } + break; + case SEEK_CUR: + $offset+= $this->pos; + break; + case SEEK_END: + $offset+= $this->size; + } + + $this->pos = $offset; + $this->eof = false; + return true; + } + + /** + * Change stream options + * + * @param string $path + * @param int $option + * @param mixed $var + * @return bool + * @access public + */ + function _stream_metadata($path, $option, $var) + { + $path = $this->_parse_path($path); + if ($path === false) { + return false; + } + + // stream_metadata was introduced in PHP 5.4.0 but as of 5.4.11 the constants haven't been defined + // see http://www.php.net/streamwrapper.stream-metadata and https://bugs.php.net/64246 + // and https://github.com/php/php-src/blob/master/main/php_streams.h#L592 + switch ($option) { + case 1: // PHP_STREAM_META_TOUCH + return $this->sftp->touch($path, $var[0], $var[1]); + case 2: // PHP_STREAM_OWNER_NAME + case 3: // PHP_STREAM_GROUP_NAME + return false; + case 4: // PHP_STREAM_META_OWNER + return $this->sftp->chown($path, $var); + case 5: // PHP_STREAM_META_GROUP + return $this->sftp->chgrp($path, $var); + case 6: // PHP_STREAM_META_ACCESS + return $this->sftp->chmod($path, $var) !== false; + } + } + + /** + * Retrieve the underlaying resource + * + * @param int $cast_as + * @return resource + * @access public + */ + function _stream_cast($cast_as) + { + return $this->sftp->fsock; + } + + /** + * Advisory file locking + * + * @param int $operation + * @return bool + * @access public + */ + function _stream_lock($operation) + { + return false; + } + + /** + * Renames a file or directory + * + * Attempts to rename oldname to newname, moving it between directories if necessary. + * If newname exists, it will be overwritten. This is a departure from what Net_SFTP + * does. + * + * @param string $path_from + * @param string $path_to + * @return bool + * @access public + */ + function _rename($path_from, $path_to) + { + $path1 = parse_url($path_from); + $path2 = parse_url($path_to); + unset($path1['path'], $path2['path']); + if ($path1 != $path2) { + return false; + } + + $path_from = $this->_parse_path($path_from); + $path_to = parse_url($path_to); + if ($path_from === false) { + return false; + } + + $path_to = $path_to['path']; // the $component part of parse_url() was added in PHP 5.1.2 + // "It is an error if there already exists a file with the name specified by newpath." + // -- http://tools.ietf.org/html/draft-ietf-secsh-filexfer-02#section-6.5 + if (!$this->sftp->rename($path_from, $path_to)) { + if ($this->sftp->stat($path_to)) { + return $this->sftp->delete($path_to, true) && $this->sftp->rename($path_from, $path_to); + } + return false; + } + + return true; + } + + /** + * Open directory handle + * + * The only $options is "whether or not to enforce safe_mode (0x04)". Since safe mode was deprecated in 5.3 and + * removed in 5.4 I'm just going to ignore it. + * + * Also, nlist() is the best that this function is realistically going to be able to do. When an SFTP client + * sends a SSH_FXP_READDIR packet you don't generally get info on just one file but on multiple files. Quoting + * the SFTP specs: + * + * The SSH_FXP_NAME response has the following format: + * + * uint32 id + * uint32 count + * repeats count times: + * string filename + * string longname + * ATTRS attrs + * + * @param string $path + * @param int $options + * @return bool + * @access public + */ + function _dir_opendir($path, $options) + { + $path = $this->_parse_path($path); + if ($path === false) { + return false; + } + $this->pos = 0; + $this->entries = $this->sftp->nlist($path); + return $this->entries !== false; + } + + /** + * Read entry from directory handle + * + * @return mixed + * @access public + */ + function _dir_readdir() + { + if (isset($this->entries[$this->pos])) { + return $this->entries[$this->pos++]; + } + return false; + } + + /** + * Rewind directory handle + * + * @return bool + * @access public + */ + function _dir_rewinddir() + { + $this->pos = 0; + return true; + } + + /** + * Close directory handle + * + * @return bool + * @access public + */ + function _dir_closedir() + { + return true; + } + + /** + * Create a directory + * + * Only valid $options is STREAM_MKDIR_RECURSIVE + * + * @param string $path + * @param int $mode + * @param int $options + * @return bool + * @access public + */ + function _mkdir($path, $mode, $options) + { + $path = $this->_parse_path($path); + if ($path === false) { + return false; + } + + return $this->sftp->mkdir($path, $mode, $options & STREAM_MKDIR_RECURSIVE); + } + + /** + * Removes a directory + * + * Only valid $options is STREAM_MKDIR_RECURSIVE per , however, + * does not have a $recursive parameter as mkdir() does so I don't know how + * STREAM_MKDIR_RECURSIVE is supposed to be set. Also, when I try it out with rmdir() I get 8 as + * $options. What does 8 correspond to? + * + * @param string $path + * @param int $mode + * @param int $options + * @return bool + * @access public + */ + function _rmdir($path, $options) + { + $path = $this->_parse_path($path); + if ($path === false) { + return false; + } + + return $this->sftp->rmdir($path); + } + + /** + * Flushes the output + * + * See . Always returns true because Net_SFTP doesn't cache stuff before writing + * + * @return bool + * @access public + */ + function _stream_flush() + { + return true; + } + + /** + * Retrieve information about a file resource + * + * @return mixed + * @access public + */ + function _stream_stat() + { + $results = $this->sftp->stat($this->path); + if ($results === false) { + return false; + } + return $results; + } + + /** + * Delete a file + * + * @param string $path + * @return bool + * @access public + */ + function _unlink($path) + { + $path = $this->_parse_path($path); + if ($path === false) { + return false; + } + + return $this->sftp->delete($path, false); + } + + /** + * Retrieve information about a file + * + * Ignores the STREAM_URL_STAT_QUIET flag because the entirety of Net_SFTP_Stream is quiet by default + * might be worthwhile to reconstruct bits 12-16 (ie. the file type) if mode doesn't have them but we'll + * cross that bridge when and if it's reached + * + * @param string $path + * @param int $flags + * @return mixed + * @access public + */ + function _url_stat($path, $flags) + { + $path = $this->_parse_path($path); + if ($path === false) { + return false; + } + + $results = $flags & STREAM_URL_STAT_LINK ? $this->sftp->lstat($path) : $this->sftp->stat($path); + if ($results === false) { + return false; + } + + return $results; + } + + /** + * Truncate stream + * + * @param int $new_size + * @return bool + * @access public + */ + function _stream_truncate($new_size) + { + if (!$this->sftp->truncate($this->path, $new_size)) { + return false; + } + + $this->eof = false; + $this->size = $new_size; + + return true; + } + + /** + * Change stream options + * + * STREAM_OPTION_WRITE_BUFFER isn't supported for the same reason stream_flush isn't. + * The other two aren't supported because of limitations in Net_SFTP. + * + * @param int $option + * @param int $arg1 + * @param int $arg2 + * @return bool + * @access public + */ + function _stream_set_option($option, $arg1, $arg2) + { + return false; + } + + /** + * Close an resource + * + * @access public + */ + function _stream_close() + { + } + + /** + * __call Magic Method + * + * When you're utilizing an SFTP stream you're not calling the methods in this class directly - PHP is calling them for you. + * Which kinda begs the question... what methods is PHP calling and what parameters is it passing to them? This function + * lets you figure that out. + * + * If NET_SFTP_STREAM_LOGGING is defined all calls will be output on the screen and then (regardless of whether or not + * NET_SFTP_STREAM_LOGGING is enabled) the parameters will be passed through to the appropriate method. + * + * @param string + * @param array + * @return mixed + * @access public + */ + function __call($name, $arguments) + { + if (defined('NET_SFTP_STREAM_LOGGING')) { + echo $name . '('; + $last = count($arguments) - 1; + foreach ($arguments as $i => $argument) { + var_export($argument); + if ($i != $last) { + echo ','; + } + } + echo ")\r\n"; + } + $name = '_' . $name; + if (!method_exists($this, $name)) { + return false; + } + return call_user_func_array(array($this, $name), $arguments); + } +} + +Net_SFTP_Stream::register(); diff --git a/plugins/updraftplus/includes/phpseclib/Net/SSH1.php b/plugins/updraftplus/includes/phpseclib/Net/SSH1.php new file mode 100644 index 0000000..fb23daa --- /dev/null +++ b/plugins/updraftplus/includes/phpseclib/Net/SSH1.php @@ -0,0 +1,1666 @@ + + * login('username', 'password')) { + * exit('Login Failed'); + * } + * + * echo $ssh->exec('ls -la'); + * ?> + * + * + * Here's another short example: + * + * login('username', 'password')) { + * exit('Login Failed'); + * } + * + * echo $ssh->read('username@username:~$'); + * $ssh->write("ls -la\n"); + * echo $ssh->read('username@username:~$'); + * ?> + * + * + * More information on the SSHv1 specification can be found by reading + * {@link http://www.snailbook.com/docs/protocol-1.5.txt protocol-1.5.txt}. + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Net + * @package Net_SSH1 + * @author Jim Wigginton + * @copyright 2007 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/**#@+ + * Encryption Methods + * + * @see self::getSupportedCiphers() + * @access public + */ +/** + * No encryption + * + * Not supported. + */ +define('NET_SSH1_CIPHER_NONE', 0); +/** + * IDEA in CFB mode + * + * Not supported. + */ +define('NET_SSH1_CIPHER_IDEA', 1); +/** + * DES in CBC mode + */ +define('NET_SSH1_CIPHER_DES', 2); +/** + * Triple-DES in CBC mode + * + * All implementations are required to support this + */ +define('NET_SSH1_CIPHER_3DES', 3); +/** + * TRI's Simple Stream encryption CBC + * + * Not supported nor is it defined in the official SSH1 specs. OpenSSH, however, does define it (see cipher.h), + * although it doesn't use it (see cipher.c) + */ +define('NET_SSH1_CIPHER_BROKEN_TSS', 4); +/** + * RC4 + * + * Not supported. + * + * @internal According to the SSH1 specs: + * + * "The first 16 bytes of the session key are used as the key for + * the server to client direction. The remaining 16 bytes are used + * as the key for the client to server direction. This gives + * independent 128-bit keys for each direction." + * + * This library currently only supports encryption when the same key is being used for both directions. This is + * because there's only one $crypto object. Two could be added ($encrypt and $decrypt, perhaps). + */ +define('NET_SSH1_CIPHER_RC4', 5); +/** + * Blowfish + * + * Not supported nor is it defined in the official SSH1 specs. OpenSSH, however, defines it (see cipher.h) and + * uses it (see cipher.c) + */ +define('NET_SSH1_CIPHER_BLOWFISH', 6); +/**#@-*/ + +/**#@+ + * Authentication Methods + * + * @see self::getSupportedAuthentications() + * @access public + */ +/** + * .rhosts or /etc/hosts.equiv + */ +define('NET_SSH1_AUTH_RHOSTS', 1); +/** + * pure RSA authentication + */ +define('NET_SSH1_AUTH_RSA', 2); +/** + * password authentication + * + * This is the only method that is supported by this library. + */ +define('NET_SSH1_AUTH_PASSWORD', 3); +/** + * .rhosts with RSA host authentication + */ +define('NET_SSH1_AUTH_RHOSTS_RSA', 4); +/**#@-*/ + +/**#@+ + * Terminal Modes + * + * @link http://3sp.com/content/developer/maverick-net/docs/Maverick.SSH.PseudoTerminalModesMembers.html + * @access private + */ +define('NET_SSH1_TTY_OP_END', 0); +/**#@-*/ + +/** + * The Response Type + * + * @see self::_get_binary_packet() + * @access private + */ +define('NET_SSH1_RESPONSE_TYPE', 1); + +/** + * The Response Data + * + * @see self::_get_binary_packet() + * @access private + */ +define('NET_SSH1_RESPONSE_DATA', 2); + +/**#@+ + * Execution Bitmap Masks + * + * @see self::bitmap + * @access private + */ +define('NET_SSH1_MASK_CONSTRUCTOR', 0x00000001); +define('NET_SSH1_MASK_CONNECTED', 0x00000002); +define('NET_SSH1_MASK_LOGIN', 0x00000004); +define('NET_SSH1_MASK_SHELL', 0x00000008); +/**#@-*/ + +/**#@+ + * @access public + * @see self::getLog() + */ +/** + * Returns the message numbers + */ +define('NET_SSH1_LOG_SIMPLE', 1); +/** + * Returns the message content + */ +define('NET_SSH1_LOG_COMPLEX', 2); +/** + * Outputs the content real-time + */ +define('NET_SSH1_LOG_REALTIME', 3); +/** + * Dumps the content real-time to a file + */ +define('NET_SSH1_LOG_REALTIME_FILE', 4); +/**#@-*/ + +/**#@+ + * @access public + * @see self::read() + */ +/** + * Returns when a string matching $expect exactly is found + */ +define('NET_SSH1_READ_SIMPLE', 1); +/** + * Returns when a string matching the regular expression $expect is found + */ +define('NET_SSH1_READ_REGEX', 2); +/**#@-*/ + +/** + * Pure-PHP implementation of SSHv1. + * + * @package Net_SSH1 + * @author Jim Wigginton + * @access public + */ +class Net_SSH1 +{ + /** + * The SSH identifier + * + * @var string + * @access private + */ + var $identifier = 'SSH-1.5-phpseclib'; + + /** + * The Socket Object + * + * @var object + * @access private + */ + var $fsock; + + /** + * The cryptography object + * + * @var object + * @access private + */ + var $crypto = false; + + /** + * Execution Bitmap + * + * The bits that are set represent functions that have been called already. This is used to determine + * if a requisite function has been successfully executed. If not, an error should be thrown. + * + * @var int + * @access private + */ + var $bitmap = 0; + + /** + * The Server Key Public Exponent + * + * Logged for debug purposes + * + * @see self::getServerKeyPublicExponent() + * @var string + * @access private + */ + var $server_key_public_exponent; + + /** + * The Server Key Public Modulus + * + * Logged for debug purposes + * + * @see self::getServerKeyPublicModulus() + * @var string + * @access private + */ + var $server_key_public_modulus; + + /** + * The Host Key Public Exponent + * + * Logged for debug purposes + * + * @see self::getHostKeyPublicExponent() + * @var string + * @access private + */ + var $host_key_public_exponent; + + /** + * The Host Key Public Modulus + * + * Logged for debug purposes + * + * @see self::getHostKeyPublicModulus() + * @var string + * @access private + */ + var $host_key_public_modulus; + + /** + * Supported Ciphers + * + * Logged for debug purposes + * + * @see self::getSupportedCiphers() + * @var array + * @access private + */ + var $supported_ciphers = array( + NET_SSH1_CIPHER_NONE => 'No encryption', + NET_SSH1_CIPHER_IDEA => 'IDEA in CFB mode', + NET_SSH1_CIPHER_DES => 'DES in CBC mode', + NET_SSH1_CIPHER_3DES => 'Triple-DES in CBC mode', + NET_SSH1_CIPHER_BROKEN_TSS => 'TRI\'s Simple Stream encryption CBC', + NET_SSH1_CIPHER_RC4 => 'RC4', + NET_SSH1_CIPHER_BLOWFISH => 'Blowfish' + ); + + /** + * Supported Authentications + * + * Logged for debug purposes + * + * @see self::getSupportedAuthentications() + * @var array + * @access private + */ + var $supported_authentications = array( + NET_SSH1_AUTH_RHOSTS => '.rhosts or /etc/hosts.equiv', + NET_SSH1_AUTH_RSA => 'pure RSA authentication', + NET_SSH1_AUTH_PASSWORD => 'password authentication', + NET_SSH1_AUTH_RHOSTS_RSA => '.rhosts with RSA host authentication' + ); + + /** + * Server Identification + * + * @see self::getServerIdentification() + * @var string + * @access private + */ + var $server_identification = ''; + + /** + * Protocol Flags + * + * @see self::Net_SSH1() + * @var array + * @access private + */ + var $protocol_flags = array(); + + /** + * Protocol Flag Log + * + * @see self::getLog() + * @var array + * @access private + */ + var $protocol_flag_log = array(); + + /** + * Message Log + * + * @see self::getLog() + * @var array + * @access private + */ + var $message_log = array(); + + /** + * Real-time log file pointer + * + * @see self::_append_log() + * @var resource + * @access private + */ + var $realtime_log_file; + + /** + * Real-time log file size + * + * @see self::_append_log() + * @var int + * @access private + */ + var $realtime_log_size; + + /** + * Real-time log file wrap boolean + * + * @see self::_append_log() + * @var bool + * @access private + */ + var $realtime_log_wrap; + + /** + * Interactive Buffer + * + * @see self::read() + * @var array + * @access private + */ + var $interactiveBuffer = ''; + + /** + * Timeout + * + * @see self::setTimeout() + * @access private + */ + var $timeout; + + /** + * Current Timeout + * + * @see self::_get_channel_packet() + * @access private + */ + var $curTimeout; + + /** + * Log Boundary + * + * @see self::_format_log() + * @access private + */ + var $log_boundary = ':'; + + /** + * Log Long Width + * + * @see self::_format_log() + * @access private + */ + var $log_long_width = 65; + + /** + * Log Short Width + * + * @see self::_format_log() + * @access private + */ + var $log_short_width = 16; + + /** + * Hostname + * + * @see self::Net_SSH1() + * @see self::_connect() + * @var string + * @access private + */ + var $host; + + /** + * Port Number + * + * @see self::Net_SSH1() + * @see self::_connect() + * @var int + * @access private + */ + var $port; + + /** + * Timeout for initial connection + * + * Set by the constructor call. Calling setTimeout() is optional. If it's not called functions like + * exec() won't timeout unless some PHP setting forces it too. The timeout specified in the constructor, + * however, is non-optional. There will be a timeout, whether or not you set it. If you don't it'll be + * 10 seconds. It is used by fsockopen() in that function. + * + * @see self::Net_SSH1() + * @see self::_connect() + * @var int + * @access private + */ + var $connectionTimeout; + + /** + * Default cipher + * + * @see self::Net_SSH1() + * @see self::_connect() + * @var int + * @access private + */ + var $cipher; + + /** + * Default Constructor. + * + * Connects to an SSHv1 server + * + * @param string $host + * @param int $port + * @param int $timeout + * @param int $cipher + * @return Net_SSH1 + * @access public + */ + function __construct($host, $port = 22, $timeout = 10, $cipher = NET_SSH1_CIPHER_3DES) + { + if (!class_exists('Math_BigInteger')) { + include_once 'Math/BigInteger.php'; + } + + // Include Crypt_Random + // the class_exists() will only be called if the crypt_random_string function hasn't been defined and + // will trigger a call to __autoload() if you're wanting to auto-load classes + // call function_exists() a second time to stop the include_once from being called outside + // of the auto loader + if (!function_exists('crypt_random_string') && !class_exists('Crypt_Random') && !function_exists('crypt_random_string')) { + include_once 'Crypt/Random.php'; + } + + $this->protocol_flags = array( + 1 => 'NET_SSH1_MSG_DISCONNECT', + 2 => 'NET_SSH1_SMSG_PUBLIC_KEY', + 3 => 'NET_SSH1_CMSG_SESSION_KEY', + 4 => 'NET_SSH1_CMSG_USER', + 9 => 'NET_SSH1_CMSG_AUTH_PASSWORD', + 10 => 'NET_SSH1_CMSG_REQUEST_PTY', + 12 => 'NET_SSH1_CMSG_EXEC_SHELL', + 13 => 'NET_SSH1_CMSG_EXEC_CMD', + 14 => 'NET_SSH1_SMSG_SUCCESS', + 15 => 'NET_SSH1_SMSG_FAILURE', + 16 => 'NET_SSH1_CMSG_STDIN_DATA', + 17 => 'NET_SSH1_SMSG_STDOUT_DATA', + 18 => 'NET_SSH1_SMSG_STDERR_DATA', + 19 => 'NET_SSH1_CMSG_EOF', + 20 => 'NET_SSH1_SMSG_EXITSTATUS', + 33 => 'NET_SSH1_CMSG_EXIT_CONFIRMATION' + ); + + $this->_define_array($this->protocol_flags); + + $this->host = $host; + $this->port = $port; + $this->connectionTimeout = $timeout; + $this->cipher = $cipher; + } + + /** + * PHP4 compatible Default Constructor. + * + * @see self::__construct() + * @param string $host + * @param int $port + * @param int $timeout + * @param int $cipher + * @access public + */ + function Net_SSH1($host, $port = 22, $timeout = 10, $cipher = NET_SSH1_CIPHER_3DES) + { + $this->__construct($host, $port, $timeout, $cipher); + } + + /** + * Connect to an SSHv1 server + * + * @return bool + * @access private + */ + function _connect() + { + $this->fsock = @fsockopen($this->host, $this->port, $errno, $errstr, $this->connectionTimeout); + if (!$this->fsock) { + user_error(rtrim("Cannot connect to {$this->host}:{$this->port}. Error $errno. $errstr")); + return false; + } + + $this->server_identification = $init_line = fgets($this->fsock, 255); + + if (defined('NET_SSH1_LOGGING')) { + $this->_append_log('<-', $this->server_identification); + $this->_append_log('->', $this->identifier . "\r\n"); + } + + if (!preg_match('#SSH-([0-9\.]+)-(.+)#', $init_line, $parts)) { + user_error('Can only connect to SSH servers'); + return false; + } + if ($parts[1][0] != 1) { + user_error("Cannot connect to SSH $parts[1] servers"); + return false; + } + + fputs($this->fsock, $this->identifier."\r\n"); + + $response = $this->_get_binary_packet(); + if ($response[NET_SSH1_RESPONSE_TYPE] != NET_SSH1_SMSG_PUBLIC_KEY) { + user_error('Expected SSH_SMSG_PUBLIC_KEY'); + return false; + } + + $anti_spoofing_cookie = $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 8); + + $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 4); + + $temp = unpack('nlen', $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 2)); + $server_key_public_exponent = new Math_BigInteger($this->_string_shift($response[NET_SSH1_RESPONSE_DATA], ceil($temp['len'] / 8)), 256); + $this->server_key_public_exponent = $server_key_public_exponent; + + $temp = unpack('nlen', $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 2)); + $server_key_public_modulus = new Math_BigInteger($this->_string_shift($response[NET_SSH1_RESPONSE_DATA], ceil($temp['len'] / 8)), 256); + $this->server_key_public_modulus = $server_key_public_modulus; + + $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 4); + + $temp = unpack('nlen', $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 2)); + $host_key_public_exponent = new Math_BigInteger($this->_string_shift($response[NET_SSH1_RESPONSE_DATA], ceil($temp['len'] / 8)), 256); + $this->host_key_public_exponent = $host_key_public_exponent; + + $temp = unpack('nlen', $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 2)); + $host_key_public_modulus = new Math_BigInteger($this->_string_shift($response[NET_SSH1_RESPONSE_DATA], ceil($temp['len'] / 8)), 256); + $this->host_key_public_modulus = $host_key_public_modulus; + + $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 4); + + // get a list of the supported ciphers + extract(unpack('Nsupported_ciphers_mask', $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 4))); + foreach ($this->supported_ciphers as $mask => $name) { + if (($supported_ciphers_mask & (1 << $mask)) == 0) { + unset($this->supported_ciphers[$mask]); + } + } + + // get a list of the supported authentications + extract(unpack('Nsupported_authentications_mask', $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 4))); + foreach ($this->supported_authentications as $mask => $name) { + if (($supported_authentications_mask & (1 << $mask)) == 0) { + unset($this->supported_authentications[$mask]); + } + } + + $session_id = pack('H*', md5($host_key_public_modulus->toBytes() . $server_key_public_modulus->toBytes() . $anti_spoofing_cookie)); + + $session_key = crypt_random_string(32); + $double_encrypted_session_key = $session_key ^ str_pad($session_id, 32, chr(0)); + + if ($server_key_public_modulus->compare($host_key_public_modulus) < 0) { + $double_encrypted_session_key = $this->_rsa_crypt( + $double_encrypted_session_key, + array( + $server_key_public_exponent, + $server_key_public_modulus + ) + ); + $double_encrypted_session_key = $this->_rsa_crypt( + $double_encrypted_session_key, + array( + $host_key_public_exponent, + $host_key_public_modulus + ) + ); + } else { + $double_encrypted_session_key = $this->_rsa_crypt( + $double_encrypted_session_key, + array( + $host_key_public_exponent, + $host_key_public_modulus + ) + ); + $double_encrypted_session_key = $this->_rsa_crypt( + $double_encrypted_session_key, + array( + $server_key_public_exponent, + $server_key_public_modulus + ) + ); + } + + $cipher = isset($this->supported_ciphers[$this->cipher]) ? $this->cipher : NET_SSH1_CIPHER_3DES; + $data = pack('C2a*na*N', NET_SSH1_CMSG_SESSION_KEY, $cipher, $anti_spoofing_cookie, 8 * strlen($double_encrypted_session_key), $double_encrypted_session_key, 0); + + if (!$this->_send_binary_packet($data)) { + user_error('Error sending SSH_CMSG_SESSION_KEY'); + return false; + } + + switch ($cipher) { + //case NET_SSH1_CIPHER_NONE: + // $this->crypto = new Crypt_Null(); + // break; + case NET_SSH1_CIPHER_DES: + if (!class_exists('Crypt_DES')) { + include_once 'Crypt/DES.php'; + } + $this->crypto = new Crypt_DES(); + $this->crypto->disablePadding(); + $this->crypto->enableContinuousBuffer(); + $this->crypto->setKey(substr($session_key, 0, 8)); + break; + case NET_SSH1_CIPHER_3DES: + if (!class_exists('Crypt_TripleDES')) { + include_once 'Crypt/TripleDES.php'; + } + $this->crypto = new Crypt_TripleDES(CRYPT_DES_MODE_3CBC); + $this->crypto->disablePadding(); + $this->crypto->enableContinuousBuffer(); + $this->crypto->setKey(substr($session_key, 0, 24)); + break; + //case NET_SSH1_CIPHER_RC4: + // if (!class_exists('Crypt_RC4')) { + // include_once 'Crypt/RC4.php'; + // } + // $this->crypto = new Crypt_RC4(); + // $this->crypto->enableContinuousBuffer(); + // $this->crypto->setKey(substr($session_key, 0, 16)); + // break; + } + + $response = $this->_get_binary_packet(); + + if ($response[NET_SSH1_RESPONSE_TYPE] != NET_SSH1_SMSG_SUCCESS) { + user_error('Expected SSH_SMSG_SUCCESS'); + return false; + } + + $this->bitmap = NET_SSH1_MASK_CONNECTED; + + return true; + } + + /** + * Login + * + * @param string $username + * @param string $password + * @return bool + * @access public + */ + function login($username, $password = '') + { + if (!($this->bitmap & NET_SSH1_MASK_CONSTRUCTOR)) { + $this->bitmap |= NET_SSH1_MASK_CONSTRUCTOR; + if (!$this->_connect()) { + return false; + } + } + + if (!($this->bitmap & NET_SSH1_MASK_CONNECTED)) { + return false; + } + + $data = pack('CNa*', NET_SSH1_CMSG_USER, strlen($username), $username); + + if (!$this->_send_binary_packet($data)) { + user_error('Error sending SSH_CMSG_USER'); + return false; + } + + $response = $this->_get_binary_packet(); + + if ($response === true) { + return false; + } + if ($response[NET_SSH1_RESPONSE_TYPE] == NET_SSH1_SMSG_SUCCESS) { + $this->bitmap |= NET_SSH1_MASK_LOGIN; + return true; + } elseif ($response[NET_SSH1_RESPONSE_TYPE] != NET_SSH1_SMSG_FAILURE) { + user_error('Expected SSH_SMSG_SUCCESS or SSH_SMSG_FAILURE'); + return false; + } + + $data = pack('CNa*', NET_SSH1_CMSG_AUTH_PASSWORD, strlen($password), $password); + + if (!$this->_send_binary_packet($data)) { + user_error('Error sending SSH_CMSG_AUTH_PASSWORD'); + return false; + } + + // remove the username and password from the last logged packet + if (defined('NET_SSH1_LOGGING') && NET_SSH1_LOGGING == NET_SSH1_LOG_COMPLEX) { + $data = pack('CNa*', NET_SSH1_CMSG_AUTH_PASSWORD, strlen('password'), 'password'); + $this->message_log[count($this->message_log) - 1] = $data; + } + + $response = $this->_get_binary_packet(); + + if ($response === true) { + return false; + } + if ($response[NET_SSH1_RESPONSE_TYPE] == NET_SSH1_SMSG_SUCCESS) { + $this->bitmap |= NET_SSH1_MASK_LOGIN; + return true; + } elseif ($response[NET_SSH1_RESPONSE_TYPE] == NET_SSH1_SMSG_FAILURE) { + return false; + } else { + user_error('Expected SSH_SMSG_SUCCESS or SSH_SMSG_FAILURE'); + return false; + } + } + + /** + * Set Timeout + * + * $ssh->exec('ping 127.0.0.1'); on a Linux host will never return and will run indefinitely. setTimeout() makes it so it'll timeout. + * Setting $timeout to false or 0 will mean there is no timeout. + * + * @param mixed $timeout + */ + function setTimeout($timeout) + { + $this->timeout = $this->curTimeout = $timeout; + } + + /** + * Executes a command on a non-interactive shell, returns the output, and quits. + * + * An SSH1 server will close the connection after a command has been executed on a non-interactive shell. SSH2 + * servers don't, however, this isn't an SSH2 client. The way this works, on the server, is by initiating a + * shell with the -s option, as discussed in the following links: + * + * {@link http://www.faqs.org/docs/bashman/bashref_65.html http://www.faqs.org/docs/bashman/bashref_65.html} + * {@link http://www.faqs.org/docs/bashman/bashref_62.html http://www.faqs.org/docs/bashman/bashref_62.html} + * + * To execute further commands, a new Net_SSH1 object will need to be created. + * + * Returns false on failure and the output, otherwise. + * + * @see self::interactiveRead() + * @see self::interactiveWrite() + * @param string $cmd + * @return mixed + * @access public + */ + function exec($cmd, $block = true) + { + if (!($this->bitmap & NET_SSH1_MASK_LOGIN)) { + user_error('Operation disallowed prior to login()'); + return false; + } + + $data = pack('CNa*', NET_SSH1_CMSG_EXEC_CMD, strlen($cmd), $cmd); + + if (!$this->_send_binary_packet($data)) { + user_error('Error sending SSH_CMSG_EXEC_CMD'); + return false; + } + + if (!$block) { + return true; + } + + $output = ''; + $response = $this->_get_binary_packet(); + + if ($response !== false) { + do { + $output.= substr($response[NET_SSH1_RESPONSE_DATA], 4); + $response = $this->_get_binary_packet(); + } while (is_array($response) && $response[NET_SSH1_RESPONSE_TYPE] != NET_SSH1_SMSG_EXITSTATUS); + } + + $data = pack('C', NET_SSH1_CMSG_EXIT_CONFIRMATION); + + // i don't think it's really all that important if this packet gets sent or not. + $this->_send_binary_packet($data); + + fclose($this->fsock); + + // reset the execution bitmap - a new Net_SSH1 object needs to be created. + $this->bitmap = 0; + + return $output; + } + + /** + * Creates an interactive shell + * + * @see self::interactiveRead() + * @see self::interactiveWrite() + * @return bool + * @access private + */ + function _initShell() + { + // connect using the sample parameters in protocol-1.5.txt. + // according to wikipedia.org's entry on text terminals, "the fundamental type of application running on a text + // terminal is a command line interpreter or shell". thus, opening a terminal session to run the shell. + $data = pack('CNa*N4C', NET_SSH1_CMSG_REQUEST_PTY, strlen('vt100'), 'vt100', 24, 80, 0, 0, NET_SSH1_TTY_OP_END); + + if (!$this->_send_binary_packet($data)) { + user_error('Error sending SSH_CMSG_REQUEST_PTY'); + return false; + } + + $response = $this->_get_binary_packet(); + + if ($response === true) { + return false; + } + if ($response[NET_SSH1_RESPONSE_TYPE] != NET_SSH1_SMSG_SUCCESS) { + user_error('Expected SSH_SMSG_SUCCESS'); + return false; + } + + $data = pack('C', NET_SSH1_CMSG_EXEC_SHELL); + + if (!$this->_send_binary_packet($data)) { + user_error('Error sending SSH_CMSG_EXEC_SHELL'); + return false; + } + + $this->bitmap |= NET_SSH1_MASK_SHELL; + + //stream_set_blocking($this->fsock, 0); + + return true; + } + + /** + * Inputs a command into an interactive shell. + * + * @see self::interactiveWrite() + * @param string $cmd + * @return bool + * @access public + */ + function write($cmd) + { + return $this->interactiveWrite($cmd); + } + + /** + * Returns the output of an interactive shell when there's a match for $expect + * + * $expect can take the form of a string literal or, if $mode == NET_SSH1_READ_REGEX, + * a regular expression. + * + * @see self::write() + * @param string $expect + * @param int $mode + * @return bool + * @access public + */ + function read($expect, $mode = NET_SSH1_READ_SIMPLE) + { + if (!($this->bitmap & NET_SSH1_MASK_LOGIN)) { + user_error('Operation disallowed prior to login()'); + return false; + } + + if (!($this->bitmap & NET_SSH1_MASK_SHELL) && !$this->_initShell()) { + user_error('Unable to initiate an interactive shell session'); + return false; + } + + $match = $expect; + while (true) { + if ($mode == NET_SSH1_READ_REGEX) { + preg_match($expect, $this->interactiveBuffer, $matches); + $match = isset($matches[0]) ? $matches[0] : ''; + } + $pos = strlen($match) ? strpos($this->interactiveBuffer, $match) : false; + if ($pos !== false) { + return $this->_string_shift($this->interactiveBuffer, $pos + strlen($match)); + } + $response = $this->_get_binary_packet(); + + if ($response === true) { + return $this->_string_shift($this->interactiveBuffer, strlen($this->interactiveBuffer)); + } + $this->interactiveBuffer.= substr($response[NET_SSH1_RESPONSE_DATA], 4); + } + } + + /** + * Inputs a command into an interactive shell. + * + * @see self::interactiveRead() + * @param string $cmd + * @return bool + * @access public + */ + function interactiveWrite($cmd) + { + if (!($this->bitmap & NET_SSH1_MASK_LOGIN)) { + user_error('Operation disallowed prior to login()'); + return false; + } + + if (!($this->bitmap & NET_SSH1_MASK_SHELL) && !$this->_initShell()) { + user_error('Unable to initiate an interactive shell session'); + return false; + } + + $data = pack('CNa*', NET_SSH1_CMSG_STDIN_DATA, strlen($cmd), $cmd); + + if (!$this->_send_binary_packet($data)) { + user_error('Error sending SSH_CMSG_STDIN'); + return false; + } + + return true; + } + + /** + * Returns the output of an interactive shell when no more output is available. + * + * Requires PHP 4.3.0 or later due to the use of the stream_select() function. If you see stuff like + * "^[[00m", you're seeing ANSI escape codes. According to + * {@link http://support.microsoft.com/kb/101875 How to Enable ANSI.SYS in a Command Window}, "Windows NT + * does not support ANSI escape sequences in Win32 Console applications", so if you're a Windows user, + * there's not going to be much recourse. + * + * @see self::interactiveRead() + * @return string + * @access public + */ + function interactiveRead() + { + if (!($this->bitmap & NET_SSH1_MASK_LOGIN)) { + user_error('Operation disallowed prior to login()'); + return false; + } + + if (!($this->bitmap & NET_SSH1_MASK_SHELL) && !$this->_initShell()) { + user_error('Unable to initiate an interactive shell session'); + return false; + } + + $read = array($this->fsock); + $write = $except = null; + if (stream_select($read, $write, $except, 0)) { + $response = $this->_get_binary_packet(); + return substr($response[NET_SSH1_RESPONSE_DATA], 4); + } else { + return ''; + } + } + + /** + * Disconnect + * + * @access public + */ + function disconnect() + { + $this->_disconnect(); + } + + /** + * Destructor. + * + * Will be called, automatically, if you're supporting just PHP5. If you're supporting PHP4, you'll need to call + * disconnect(). + * + * @access public + */ + function __destruct() + { + $this->_disconnect(); + } + + /** + * Disconnect + * + * @param string $msg + * @access private + */ + function _disconnect($msg = 'Client Quit') + { + if ($this->bitmap) { + $data = pack('C', NET_SSH1_CMSG_EOF); + $this->_send_binary_packet($data); + /* + $response = $this->_get_binary_packet(); + if ($response === true) { + $response = array(NET_SSH1_RESPONSE_TYPE => -1); + } + switch ($response[NET_SSH1_RESPONSE_TYPE]) { + case NET_SSH1_SMSG_EXITSTATUS: + $data = pack('C', NET_SSH1_CMSG_EXIT_CONFIRMATION); + break; + default: + $data = pack('CNa*', NET_SSH1_MSG_DISCONNECT, strlen($msg), $msg); + } + */ + $data = pack('CNa*', NET_SSH1_MSG_DISCONNECT, strlen($msg), $msg); + + $this->_send_binary_packet($data); + fclose($this->fsock); + $this->bitmap = 0; + } + } + + /** + * Gets Binary Packets + * + * See 'The Binary Packet Protocol' of protocol-1.5.txt for more info. + * + * Also, this function could be improved upon by adding detection for the following exploit: + * http://www.securiteam.com/securitynews/5LP042K3FY.html + * + * @see self::_send_binary_packet() + * @return array + * @access private + */ + function _get_binary_packet() + { + if (feof($this->fsock)) { + //user_error('connection closed prematurely'); + return false; + } + + if ($this->curTimeout) { + $read = array($this->fsock); + $write = $except = null; + + $start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838 + $sec = floor($this->curTimeout); + $usec = 1000000 * ($this->curTimeout - $sec); + // on windows this returns a "Warning: Invalid CRT parameters detected" error + if (!@stream_select($read, $write, $except, $sec, $usec) && !count($read)) { + //$this->_disconnect('Timeout'); + return true; + } + $elapsed = strtok(microtime(), ' ') + strtok('') - $start; + $this->curTimeout-= $elapsed; + } + + $start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838 + $temp = unpack('Nlength', fread($this->fsock, 4)); + + $padding_length = 8 - ($temp['length'] & 7); + $length = $temp['length'] + $padding_length; + $raw = ''; + + while ($length > 0) { + $temp = fread($this->fsock, $length); + $raw.= $temp; + $length-= strlen($temp); + } + $stop = strtok(microtime(), ' ') + strtok(''); + + if (strlen($raw) && $this->crypto !== false) { + $raw = $this->crypto->decrypt($raw); + } + + $padding = substr($raw, 0, $padding_length); + $type = $raw[$padding_length]; + $data = substr($raw, $padding_length + 1, -4); + + $temp = unpack('Ncrc', substr($raw, -4)); + + //if ( $temp['crc'] != $this->_crc($padding . $type . $data) ) { + // user_error('Bad CRC in packet from server'); + // return false; + //} + + $type = ord($type); + + if (defined('NET_SSH1_LOGGING')) { + $temp = isset($this->protocol_flags[$type]) ? $this->protocol_flags[$type] : 'UNKNOWN'; + $temp = '<- ' . $temp . + ' (' . round($stop - $start, 4) . 's)'; + $this->_append_log($temp, $data); + } + + return array( + NET_SSH1_RESPONSE_TYPE => $type, + NET_SSH1_RESPONSE_DATA => $data + ); + } + + /** + * Sends Binary Packets + * + * Returns true on success, false on failure. + * + * @see self::_get_binary_packet() + * @param string $data + * @return bool + * @access private + */ + function _send_binary_packet($data) + { + if (feof($this->fsock)) { + //user_error('connection closed prematurely'); + return false; + } + + $length = strlen($data) + 4; + + $padding = crypt_random_string(8 - ($length & 7)); + + $orig = $data; + $data = $padding . $data; + $data.= pack('N', $this->_crc($data)); + + if ($this->crypto !== false) { + $data = $this->crypto->encrypt($data); + } + + $packet = pack('Na*', $length, $data); + + $start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838 + $result = strlen($packet) == fputs($this->fsock, $packet); + $stop = strtok(microtime(), ' ') + strtok(''); + + if (defined('NET_SSH1_LOGGING')) { + $temp = isset($this->protocol_flags[ord($orig[0])]) ? $this->protocol_flags[ord($orig[0])] : 'UNKNOWN'; + $temp = '-> ' . $temp . + ' (' . round($stop - $start, 4) . 's)'; + $this->_append_log($temp, $orig); + } + + return $result; + } + + /** + * Cyclic Redundancy Check (CRC) + * + * PHP's crc32 function is implemented slightly differently than the one that SSH v1 uses, so + * we've reimplemented it. A more detailed discussion of the differences can be found after + * $crc_lookup_table's initialization. + * + * @see self::_get_binary_packet() + * @see self::_send_binary_packet() + * @param string $data + * @return int + * @access private + */ + function _crc($data) + { + static $crc_lookup_table = array( + 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, + 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, + 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, + 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, + 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, + 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, + 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, + 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, + 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, + 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, + 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, + 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, + 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, + 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, + 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, + 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, + 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, + 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, + 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, + 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, + 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, + 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, + 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, + 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, + 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, + 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, + 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, + 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, + 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, + 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, + 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, + 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, + 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, + 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, + 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, + 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, + 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, + 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, + 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, + 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, + 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, + 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, + 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, + 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, + 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, + 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, + 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, + 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, + 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, + 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, + 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, + 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, + 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, + 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, + 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, + 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, + 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, + 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, + 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, + 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, + 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, + 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, + 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, + 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D + ); + + // For this function to yield the same output as PHP's crc32 function, $crc would have to be + // set to 0xFFFFFFFF, initially - not 0x00000000 as it currently is. + $crc = 0x00000000; + $length = strlen($data); + + for ($i=0; $i<$length; $i++) { + // We AND $crc >> 8 with 0x00FFFFFF because we want the eight newly added bits to all + // be zero. PHP, unfortunately, doesn't always do this. 0x80000000 >> 8, as an example, + // yields 0xFF800000 - not 0x00800000. The following link elaborates: + // http://www.php.net/manual/en/language.operators.bitwise.php#57281 + $crc = (($crc >> 8) & 0x00FFFFFF) ^ $crc_lookup_table[($crc & 0xFF) ^ ord($data[$i])]; + } + + // In addition to having to set $crc to 0xFFFFFFFF, initially, the return value must be XOR'd with + // 0xFFFFFFFF for this function to return the same thing that PHP's crc32 function would. + return $crc; + } + + /** + * String Shift + * + * Inspired by array_shift + * + * @param string $string + * @param int $index + * @return string + * @access private + */ + function _string_shift(&$string, $index = 1) + { + $substr = substr($string, 0, $index); + $string = substr($string, $index); + return $substr; + } + + /** + * RSA Encrypt + * + * Returns mod(pow($m, $e), $n), where $n should be the product of two (large) primes $p and $q and where $e + * should be a number with the property that gcd($e, ($p - 1) * ($q - 1)) == 1. Could just make anything that + * calls this call modexp, instead, but I think this makes things clearer, maybe... + * + * @see self::Net_SSH1() + * @param Math_BigInteger $m + * @param array $key + * @return Math_BigInteger + * @access private + */ + function _rsa_crypt($m, $key) + { + /* + if (!class_exists('Crypt_RSA')) { + include_once 'Crypt/RSA.php'; + } + + $rsa = new Crypt_RSA(); + $rsa->loadKey($key, CRYPT_RSA_PUBLIC_FORMAT_RAW); + $rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1); + return $rsa->encrypt($m); + */ + + // To quote from protocol-1.5.txt: + // The most significant byte (which is only partial as the value must be + // less than the public modulus, which is never a power of two) is zero. + // + // The next byte contains the value 2 (which stands for public-key + // encrypted data in the PKCS standard [PKCS#1]). Then, there are non- + // zero random bytes to fill any unused space, a zero byte, and the data + // to be encrypted in the least significant bytes, the last byte of the + // data in the least significant byte. + + // Presumably the part of PKCS#1 they're refering to is "Section 7.2.1 Encryption Operation", + // under "7.2 RSAES-PKCS1-v1.5" and "7 Encryption schemes" of the following URL: + // ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-1/pkcs-1v2-1.pdf + $modulus = $key[1]->toBytes(); + $length = strlen($modulus) - strlen($m) - 3; + $random = ''; + while (strlen($random) != $length) { + $block = crypt_random_string($length - strlen($random)); + $block = str_replace("\x00", '', $block); + $random.= $block; + } + $temp = chr(0) . chr(2) . $random . chr(0) . $m; + + $m = new Math_BigInteger($temp, 256); + $m = $m->modPow($key[0], $key[1]); + + return $m->toBytes(); + } + + /** + * Define Array + * + * Takes any number of arrays whose indices are integers and whose values are strings and defines a bunch of + * named constants from it, using the value as the name of the constant and the index as the value of the constant. + * If any of the constants that would be defined already exists, none of the constants will be defined. + * + * @param array $array + * @access private + */ + function _define_array() + { + $args = func_get_args(); + foreach ($args as $arg) { + foreach ($arg as $key => $value) { + if (!defined($value)) { + define($value, $key); + } else { + break 2; + } + } + } + } + + /** + * Returns a log of the packets that have been sent and received. + * + * Returns a string if NET_SSH1_LOGGING == NET_SSH1_LOG_COMPLEX, an array if NET_SSH1_LOGGING == NET_SSH1_LOG_SIMPLE and false if !defined('NET_SSH1_LOGGING') + * + * @access public + * @return array|false|string + */ + function getLog() + { + if (!defined('NET_SSH1_LOGGING')) { + return false; + } + + switch (NET_SSH1_LOGGING) { + case NET_SSH1_LOG_SIMPLE: + return $this->message_number_log; + break; + case NET_SSH1_LOG_COMPLEX: + return $this->_format_log($this->message_log, $this->protocol_flags_log); + break; + default: + return false; + } + } + + /** + * Formats a log for printing + * + * @param array $message_log + * @param array $message_number_log + * @access private + * @return string + */ + function _format_log($message_log, $message_number_log) + { + $output = ''; + for ($i = 0; $i < count($message_log); $i++) { + $output.= $message_number_log[$i] . "\r\n"; + $current_log = $message_log[$i]; + $j = 0; + do { + if (strlen($current_log)) { + $output.= str_pad(dechex($j), 7, '0', STR_PAD_LEFT) . '0 '; + } + $fragment = $this->_string_shift($current_log, $this->log_short_width); + $hex = substr(preg_replace_callback('#.#s', array($this, '_format_log_helper'), $fragment), strlen($this->log_boundary)); + // replace non ASCII printable characters with dots + // http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters + // also replace < with a . since < messes up the output on web browsers + $raw = preg_replace('#[^\x20-\x7E]|<#', '.', $fragment); + $output.= str_pad($hex, $this->log_long_width - $this->log_short_width, ' ') . $raw . "\r\n"; + $j++; + } while (strlen($current_log)); + $output.= "\r\n"; + } + + return $output; + } + + /** + * Helper function for _format_log + * + * For use with preg_replace_callback() + * + * @param array $matches + * @access private + * @return string + */ + function _format_log_helper($matches) + { + return $this->log_boundary . str_pad(dechex(ord($matches[0])), 2, '0', STR_PAD_LEFT); + } + + /** + * Return the server key public exponent + * + * Returns, by default, the base-10 representation. If $raw_output is set to true, returns, instead, + * the raw bytes. This behavior is similar to PHP's md5() function. + * + * @param bool $raw_output + * @return string + * @access public + */ + function getServerKeyPublicExponent($raw_output = false) + { + return $raw_output ? $this->server_key_public_exponent->toBytes() : $this->server_key_public_exponent->toString(); + } + + /** + * Return the server key public modulus + * + * Returns, by default, the base-10 representation. If $raw_output is set to true, returns, instead, + * the raw bytes. This behavior is similar to PHP's md5() function. + * + * @param bool $raw_output + * @return string + * @access public + */ + function getServerKeyPublicModulus($raw_output = false) + { + return $raw_output ? $this->server_key_public_modulus->toBytes() : $this->server_key_public_modulus->toString(); + } + + /** + * Return the host key public exponent + * + * Returns, by default, the base-10 representation. If $raw_output is set to true, returns, instead, + * the raw bytes. This behavior is similar to PHP's md5() function. + * + * @param bool $raw_output + * @return string + * @access public + */ + function getHostKeyPublicExponent($raw_output = false) + { + return $raw_output ? $this->host_key_public_exponent->toBytes() : $this->host_key_public_exponent->toString(); + } + + /** + * Return the host key public modulus + * + * Returns, by default, the base-10 representation. If $raw_output is set to true, returns, instead, + * the raw bytes. This behavior is similar to PHP's md5() function. + * + * @param bool $raw_output + * @return string + * @access public + */ + function getHostKeyPublicModulus($raw_output = false) + { + return $raw_output ? $this->host_key_public_modulus->toBytes() : $this->host_key_public_modulus->toString(); + } + + /** + * Return a list of ciphers supported by SSH1 server. + * + * Just because a cipher is supported by an SSH1 server doesn't mean it's supported by this library. If $raw_output + * is set to true, returns, instead, an array of constants. ie. instead of array('Triple-DES in CBC mode'), you'll + * get array(NET_SSH1_CIPHER_3DES). + * + * @param bool $raw_output + * @return array + * @access public + */ + function getSupportedCiphers($raw_output = false) + { + return $raw_output ? array_keys($this->supported_ciphers) : array_values($this->supported_ciphers); + } + + /** + * Return a list of authentications supported by SSH1 server. + * + * Just because a cipher is supported by an SSH1 server doesn't mean it's supported by this library. If $raw_output + * is set to true, returns, instead, an array of constants. ie. instead of array('password authentication'), you'll + * get array(NET_SSH1_AUTH_PASSWORD). + * + * @param bool $raw_output + * @return array + * @access public + */ + function getSupportedAuthentications($raw_output = false) + { + return $raw_output ? array_keys($this->supported_authentications) : array_values($this->supported_authentications); + } + + /** + * Return the server identification. + * + * @return string + * @access public + */ + function getServerIdentification() + { + return rtrim($this->server_identification); + } + + /** + * Logs data packets + * + * Makes sure that only the last 1MB worth of packets will be logged + * + * @param string $data + * @access private + */ + function _append_log($protocol_flags, $message) + { + switch (NET_SSH1_LOGGING) { + // useful for benchmarks + case NET_SSH1_LOG_SIMPLE: + $this->protocol_flags_log[] = $protocol_flags; + break; + // the most useful log for SSH1 + case NET_SSH1_LOG_COMPLEX: + $this->protocol_flags_log[] = $protocol_flags; + $this->_string_shift($message); + $this->log_size+= strlen($message); + $this->message_log[] = $message; + while ($this->log_size > NET_SSH1_LOG_MAX_SIZE) { + $this->log_size-= strlen(array_shift($this->message_log)); + array_shift($this->protocol_flags_log); + } + break; + // dump the output out realtime; packets may be interspersed with non packets, + // passwords won't be filtered out and select other packets may not be correctly + // identified + case NET_SSH1_LOG_REALTIME: + echo "
        \r\n" . $this->_format_log(array($message), array($protocol_flags)) . "\r\n
        \r\n"; + @flush(); + @ob_flush(); + break; + // basically the same thing as NET_SSH1_LOG_REALTIME with the caveat that NET_SSH1_LOG_REALTIME_FILE + // needs to be defined and that the resultant log file will be capped out at NET_SSH1_LOG_MAX_SIZE. + // the earliest part of the log file is denoted by the first <<< START >>> and is not going to necessarily + // at the beginning of the file + case NET_SSH1_LOG_REALTIME_FILE: + if (!isset($this->realtime_log_file)) { + // PHP doesn't seem to like using constants in fopen() + $filename = NET_SSH1_LOG_REALTIME_FILE; + $fp = fopen($filename, 'w'); + $this->realtime_log_file = $fp; + } + if (!is_resource($this->realtime_log_file)) { + break; + } + $entry = $this->_format_log(array($message), array($protocol_flags)); + if ($this->realtime_log_wrap) { + $temp = "<<< START >>>\r\n"; + $entry.= $temp; + fseek($this->realtime_log_file, ftell($this->realtime_log_file) - strlen($temp)); + } + $this->realtime_log_size+= strlen($entry); + if ($this->realtime_log_size > NET_SSH1_LOG_MAX_SIZE) { + fseek($this->realtime_log_file, 0); + $this->realtime_log_size = strlen($entry); + $this->realtime_log_wrap = true; + } + fputs($this->realtime_log_file, $entry); + } + } +} diff --git a/plugins/updraftplus/includes/phpseclib/Net/SSH2.php b/plugins/updraftplus/includes/phpseclib/Net/SSH2.php new file mode 100644 index 0000000..8281e73 --- /dev/null +++ b/plugins/updraftplus/includes/phpseclib/Net/SSH2.php @@ -0,0 +1,4292 @@ + + * login('username', 'password')) { + * exit('Login Failed'); + * } + * + * echo $ssh->exec('pwd'); + * echo $ssh->exec('ls -la'); + * ?> + * + * + * + * setPassword('whatever'); + * $key->loadKey(file_get_contents('privatekey')); + * + * $ssh = new Net_SSH2('www.domain.tld'); + * if (!$ssh->login('username', $key)) { + * exit('Login Failed'); + * } + * + * echo $ssh->read('username@username:~$'); + * $ssh->write("ls -la\n"); + * echo $ssh->read('username@username:~$'); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category Net + * @package Net_SSH2 + * @author Jim Wigginton + * @copyright 2007 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + */ + +/**#@+ + * Execution Bitmap Masks + * + * @see self::bitmap + * @access private + */ +define('NET_SSH2_MASK_CONSTRUCTOR', 0x00000001); +define('NET_SSH2_MASK_CONNECTED', 0x00000002); +define('NET_SSH2_MASK_LOGIN_REQ', 0x00000004); +define('NET_SSH2_MASK_LOGIN', 0x00000008); +define('NET_SSH2_MASK_SHELL', 0x00000010); +define('NET_SSH2_MASK_WINDOW_ADJUST', 0x00000020); +/**#@-*/ + +/**#@+ + * Channel constants + * + * RFC4254 refers not to client and server channels but rather to sender and recipient channels. we don't refer + * to them in that way because RFC4254 toggles the meaning. the client sends a SSH_MSG_CHANNEL_OPEN message with + * a sender channel and the server sends a SSH_MSG_CHANNEL_OPEN_CONFIRMATION in response, with a sender and a + * recepient channel. at first glance, you might conclude that SSH_MSG_CHANNEL_OPEN_CONFIRMATION's sender channel + * would be the same thing as SSH_MSG_CHANNEL_OPEN's sender channel, but it's not, per this snipet: + * The 'recipient channel' is the channel number given in the original + * open request, and 'sender channel' is the channel number allocated by + * the other side. + * + * @see self::_send_channel_packet() + * @see self::_get_channel_packet() + * @access private + */ +define('NET_SSH2_CHANNEL_EXEC', 0); // PuTTy uses 0x100 +define('NET_SSH2_CHANNEL_SHELL', 1); +define('NET_SSH2_CHANNEL_SUBSYSTEM', 2); +define('NET_SSH2_CHANNEL_AGENT_FORWARD', 3); +/**#@-*/ + +/**#@+ + * @access public + * @see self::getLog() + */ +/** + * Returns the message numbers + */ +define('NET_SSH2_LOG_SIMPLE', 1); +/** + * Returns the message content + */ +define('NET_SSH2_LOG_COMPLEX', 2); +/** + * Outputs the content real-time + */ +define('NET_SSH2_LOG_REALTIME', 3); +/** + * Dumps the content real-time to a file + */ +define('NET_SSH2_LOG_REALTIME_FILE', 4); +/**#@-*/ + +/**#@+ + * @access public + * @see self::read() + */ +/** + * Returns when a string matching $expect exactly is found + */ +define('NET_SSH2_READ_SIMPLE', 1); +/** + * Returns when a string matching the regular expression $expect is found + */ +define('NET_SSH2_READ_REGEX', 2); +/** + * Make sure that the log never gets larger than this + */ +define('NET_SSH2_LOG_MAX_SIZE', 1024 * 1024); +/**#@-*/ + +/** + * Pure-PHP implementation of SSHv2. + * + * @package Net_SSH2 + * @author Jim Wigginton + * @access public + */ +class Net_SSH2 +{ + /** + * The SSH identifier + * + * @var string + * @access private + */ + var $identifier; + + /** + * The Socket Object + * + * @var object + * @access private + */ + var $fsock; + + /** + * Execution Bitmap + * + * The bits that are set represent functions that have been called already. This is used to determine + * if a requisite function has been successfully executed. If not, an error should be thrown. + * + * @var int + * @access private + */ + var $bitmap = 0; + + /** + * Error information + * + * @see self::getErrors() + * @see self::getLastError() + * @var string + * @access private + */ + var $errors = array(); + + /** + * Server Identifier + * + * @see self::getServerIdentification() + * @var array|false + * @access private + */ + var $server_identifier = false; + + /** + * Key Exchange Algorithms + * + * @see self::getKexAlgorithims() + * @var array|false + * @access private + */ + var $kex_algorithms = false; + + /** + * Minimum Diffie-Hellman Group Bit Size in RFC 4419 Key Exchange Methods + * + * @see self::_key_exchange() + * @var int + * @access private + */ + var $kex_dh_group_size_min = 1536; + + /** + * Preferred Diffie-Hellman Group Bit Size in RFC 4419 Key Exchange Methods + * + * @see self::_key_exchange() + * @var int + * @access private + */ + var $kex_dh_group_size_preferred = 2048; + + /** + * Maximum Diffie-Hellman Group Bit Size in RFC 4419 Key Exchange Methods + * + * @see self::_key_exchange() + * @var int + * @access private + */ + var $kex_dh_group_size_max = 4096; + + /** + * Server Host Key Algorithms + * + * @see self::getServerHostKeyAlgorithms() + * @var array|false + * @access private + */ + var $server_host_key_algorithms = false; + + /** + * Encryption Algorithms: Client to Server + * + * @see self::getEncryptionAlgorithmsClient2Server() + * @var array|false + * @access private + */ + var $encryption_algorithms_client_to_server = false; + + /** + * Encryption Algorithms: Server to Client + * + * @see self::getEncryptionAlgorithmsServer2Client() + * @var array|false + * @access private + */ + var $encryption_algorithms_server_to_client = false; + + /** + * MAC Algorithms: Client to Server + * + * @see self::getMACAlgorithmsClient2Server() + * @var array|false + * @access private + */ + var $mac_algorithms_client_to_server = false; + + /** + * MAC Algorithms: Server to Client + * + * @see self::getMACAlgorithmsServer2Client() + * @var array|false + * @access private + */ + var $mac_algorithms_server_to_client = false; + + /** + * Compression Algorithms: Client to Server + * + * @see self::getCompressionAlgorithmsClient2Server() + * @var array|false + * @access private + */ + var $compression_algorithms_client_to_server = false; + + /** + * Compression Algorithms: Server to Client + * + * @see self::getCompressionAlgorithmsServer2Client() + * @var array|false + * @access private + */ + var $compression_algorithms_server_to_client = false; + + /** + * Languages: Server to Client + * + * @see self::getLanguagesServer2Client() + * @var array|false + * @access private + */ + var $languages_server_to_client = false; + + /** + * Languages: Client to Server + * + * @see self::getLanguagesClient2Server() + * @var array|false + * @access private + */ + var $languages_client_to_server = false; + + /** + * Block Size for Server to Client Encryption + * + * "Note that the length of the concatenation of 'packet_length', + * 'padding_length', 'payload', and 'random padding' MUST be a multiple + * of the cipher block size or 8, whichever is larger. This constraint + * MUST be enforced, even when using stream ciphers." + * + * -- http://tools.ietf.org/html/rfc4253#section-6 + * + * @see self::Net_SSH2() + * @see self::_send_binary_packet() + * @var int + * @access private + */ + var $encrypt_block_size = 8; + + /** + * Block Size for Client to Server Encryption + * + * @see self::Net_SSH2() + * @see self::_get_binary_packet() + * @var int + * @access private + */ + var $decrypt_block_size = 8; + + /** + * Server to Client Encryption Object + * + * @see self::_get_binary_packet() + * @var object + * @access private + */ + var $decrypt = false; + + /** + * Client to Server Encryption Object + * + * @see self::_send_binary_packet() + * @var object + * @access private + */ + var $encrypt = false; + + /** + * Client to Server HMAC Object + * + * @see self::_send_binary_packet() + * @var object + * @access private + */ + var $hmac_create = false; + + /** + * Server to Client HMAC Object + * + * @see self::_get_binary_packet() + * @var object + * @access private + */ + var $hmac_check = false; + + /** + * Size of server to client HMAC + * + * We need to know how big the HMAC will be for the server to client direction so that we know how many bytes to read. + * For the client to server side, the HMAC object will make the HMAC as long as it needs to be. All we need to do is + * append it. + * + * @see self::_get_binary_packet() + * @var int + * @access private + */ + var $hmac_size = false; + + /** + * Server Public Host Key + * + * @see self::getServerPublicHostKey() + * @var string + * @access private + */ + var $server_public_host_key; + + /** + * Session identifier + * + * "The exchange hash H from the first key exchange is additionally + * used as the session identifier, which is a unique identifier for + * this connection." + * + * -- http://tools.ietf.org/html/rfc4253#section-7.2 + * + * @see self::_key_exchange() + * @var string + * @access private + */ + var $session_id = false; + + /** + * Exchange hash + * + * The current exchange hash + * + * @see self::_key_exchange() + * @var string + * @access private + */ + var $exchange_hash = false; + + /** + * Message Numbers + * + * @see self::Net_SSH2() + * @var array + * @access private + */ + var $message_numbers = array(); + + /** + * Disconnection Message 'reason codes' defined in RFC4253 + * + * @see self::Net_SSH2() + * @var array + * @access private + */ + var $disconnect_reasons = array(); + + /** + * SSH_MSG_CHANNEL_OPEN_FAILURE 'reason codes', defined in RFC4254 + * + * @see self::Net_SSH2() + * @var array + * @access private + */ + var $channel_open_failure_reasons = array(); + + /** + * Terminal Modes + * + * @link http://tools.ietf.org/html/rfc4254#section-8 + * @see self::Net_SSH2() + * @var array + * @access private + */ + var $terminal_modes = array(); + + /** + * SSH_MSG_CHANNEL_EXTENDED_DATA's data_type_codes + * + * @link http://tools.ietf.org/html/rfc4254#section-5.2 + * @see self::Net_SSH2() + * @var array + * @access private + */ + var $channel_extended_data_type_codes = array(); + + /** + * Send Sequence Number + * + * See 'Section 6.4. Data Integrity' of rfc4253 for more info. + * + * @see self::_send_binary_packet() + * @var int + * @access private + */ + var $send_seq_no = 0; + + /** + * Get Sequence Number + * + * See 'Section 6.4. Data Integrity' of rfc4253 for more info. + * + * @see self::_get_binary_packet() + * @var int + * @access private + */ + var $get_seq_no = 0; + + /** + * Server Channels + * + * Maps client channels to server channels + * + * @see self::_get_channel_packet() + * @see self::exec() + * @var array + * @access private + */ + var $server_channels = array(); + + /** + * Channel Buffers + * + * If a client requests a packet from one channel but receives two packets from another those packets should + * be placed in a buffer + * + * @see self::_get_channel_packet() + * @see self::exec() + * @var array + * @access private + */ + var $channel_buffers = array(); + + /** + * Channel Status + * + * Contains the type of the last sent message + * + * @see self::_get_channel_packet() + * @var array + * @access private + */ + var $channel_status = array(); + + /** + * Packet Size + * + * Maximum packet size indexed by channel + * + * @see self::_send_channel_packet() + * @var array + * @access private + */ + var $packet_size_client_to_server = array(); + + /** + * Message Number Log + * + * @see self::getLog() + * @var array + * @access private + */ + var $message_number_log = array(); + + /** + * Message Log + * + * @see self::getLog() + * @var array + * @access private + */ + var $message_log = array(); + + /** + * The Window Size + * + * Bytes the other party can send before it must wait for the window to be adjusted (0x7FFFFFFF = 2GB) + * + * @var int + * @see self::_send_channel_packet() + * @see self::exec() + * @access private + */ + var $window_size = 0x7FFFFFFF; + + /** + * Window size, server to client + * + * Window size indexed by channel + * + * @see self::_send_channel_packet() + * @var array + * @access private + */ + var $window_size_server_to_client = array(); + + /** + * Window size, client to server + * + * Window size indexed by channel + * + * @see self::_get_channel_packet() + * @var array + * @access private + */ + var $window_size_client_to_server = array(); + + /** + * Server signature + * + * Verified against $this->session_id + * + * @see self::getServerPublicHostKey() + * @var string + * @access private + */ + var $signature = ''; + + /** + * Server signature format + * + * ssh-rsa or ssh-dss. + * + * @see self::getServerPublicHostKey() + * @var string + * @access private + */ + var $signature_format = ''; + + /** + * Interactive Buffer + * + * @see self::read() + * @var array + * @access private + */ + var $interactiveBuffer = ''; + + /** + * Current log size + * + * Should never exceed NET_SSH2_LOG_MAX_SIZE + * + * @see self::_send_binary_packet() + * @see self::_get_binary_packet() + * @var int + * @access private + */ + var $log_size; + + /** + * Timeout + * + * @see self::setTimeout() + * @access private + */ + var $timeout; + + /** + * Current Timeout + * + * @see self::_get_channel_packet() + * @access private + */ + var $curTimeout; + + /** + * Real-time log file pointer + * + * @see self::_append_log() + * @var resource + * @access private + */ + var $realtime_log_file; + + /** + * Real-time log file size + * + * @see self::_append_log() + * @var int + * @access private + */ + var $realtime_log_size; + + /** + * Has the signature been validated? + * + * @see self::getServerPublicHostKey() + * @var bool + * @access private + */ + var $signature_validated = false; + + /** + * Real-time log file wrap boolean + * + * @see self::_append_log() + * @access private + */ + var $realtime_log_wrap; + + /** + * Flag to suppress stderr from output + * + * @see self::enableQuietMode() + * @access private + */ + var $quiet_mode = false; + + /** + * Time of first network activity + * + * @var int + * @access private + */ + var $last_packet; + + /** + * Exit status returned from ssh if any + * + * @var int + * @access private + */ + var $exit_status; + + /** + * Flag to request a PTY when using exec() + * + * @var bool + * @see self::enablePTY() + * @access private + */ + var $request_pty = false; + + /** + * Flag set while exec() is running when using enablePTY() + * + * @var bool + * @access private + */ + var $in_request_pty_exec = false; + + /** + * Flag set after startSubsystem() is called + * + * @var bool + * @access private + */ + var $in_subsystem; + + /** + * Contents of stdError + * + * @var string + * @access private + */ + var $stdErrorLog; + + /** + * The Last Interactive Response + * + * @see self::_keyboard_interactive_process() + * @var string + * @access private + */ + var $last_interactive_response = ''; + + /** + * Keyboard Interactive Request / Responses + * + * @see self::_keyboard_interactive_process() + * @var array + * @access private + */ + var $keyboard_requests_responses = array(); + + /** + * Banner Message + * + * Quoting from the RFC, "in some jurisdictions, sending a warning message before + * authentication may be relevant for getting legal protection." + * + * @see self::_filter() + * @see self::getBannerMessage() + * @var string + * @access private + */ + var $banner_message = ''; + + /** + * Did read() timeout or return normally? + * + * @see self::isTimeout() + * @var bool + * @access private + */ + var $is_timeout = false; + + /** + * Log Boundary + * + * @see self::_format_log() + * @var string + * @access private + */ + var $log_boundary = ':'; + + /** + * Log Long Width + * + * @see self::_format_log() + * @var int + * @access private + */ + var $log_long_width = 65; + + /** + * Log Short Width + * + * @see self::_format_log() + * @var int + * @access private + */ + var $log_short_width = 16; + + /** + * Hostname + * + * @see self::Net_SSH2() + * @see self::_connect() + * @var string + * @access private + */ + var $host; + + /** + * Port Number + * + * @see self::Net_SSH2() + * @see self::_connect() + * @var int + * @access private + */ + var $port; + + /** + * Number of columns for terminal window size + * + * @see self::getWindowColumns() + * @see self::setWindowColumns() + * @see self::setWindowSize() + * @var int + * @access private + */ + var $windowColumns = 80; + + /** + * Number of columns for terminal window size + * + * @see self::getWindowRows() + * @see self::setWindowRows() + * @see self::setWindowSize() + * @var int + * @access private + */ + var $windowRows = 24; + + /** + * Crypto Engine + * + * @see self::setCryptoEngine() + * @see self::_key_exchange() + * @var int + * @access private + */ + var $crypto_engine = false; + + /** + * A System_SSH_Agent for use in the SSH2 Agent Forwarding scenario + * + * @var System_SSH_Agent + * @access private + */ + var $agent; + + /** + * Default Constructor. + * + * $host can either be a string, representing the host, or a stream resource. + * + * @param mixed $host + * @param int $port + * @param int $timeout + * @see self::login() + * @return Net_SSH2 + * @access public + */ + function __construct($host, $port = 22, $timeout = 10) + { + // Include Math_BigInteger + // Used to do Diffie-Hellman key exchange and DSA/RSA signature verification. + if (!class_exists('Math_BigInteger')) { + include_once 'Math/BigInteger.php'; + } + + if (!function_exists('crypt_random_string')) { + include_once 'Crypt/Random.php'; + } + + if (!class_exists('Crypt_Hash')) { + include_once 'Crypt/Hash.php'; + } + + // include Crypt_Base so constants can be defined for setCryptoEngine() + if (!class_exists('Crypt_Base')) { + include_once 'Crypt/Base.php'; + } + + $this->message_numbers = array( + 1 => 'NET_SSH2_MSG_DISCONNECT', + 2 => 'NET_SSH2_MSG_IGNORE', + 3 => 'NET_SSH2_MSG_UNIMPLEMENTED', + 4 => 'NET_SSH2_MSG_DEBUG', + 5 => 'NET_SSH2_MSG_SERVICE_REQUEST', + 6 => 'NET_SSH2_MSG_SERVICE_ACCEPT', + 20 => 'NET_SSH2_MSG_KEXINIT', + 21 => 'NET_SSH2_MSG_NEWKEYS', + 30 => 'NET_SSH2_MSG_KEXDH_INIT', + 31 => 'NET_SSH2_MSG_KEXDH_REPLY', + 50 => 'NET_SSH2_MSG_USERAUTH_REQUEST', + 51 => 'NET_SSH2_MSG_USERAUTH_FAILURE', + 52 => 'NET_SSH2_MSG_USERAUTH_SUCCESS', + 53 => 'NET_SSH2_MSG_USERAUTH_BANNER', + + 80 => 'NET_SSH2_MSG_GLOBAL_REQUEST', + 81 => 'NET_SSH2_MSG_REQUEST_SUCCESS', + 82 => 'NET_SSH2_MSG_REQUEST_FAILURE', + 90 => 'NET_SSH2_MSG_CHANNEL_OPEN', + 91 => 'NET_SSH2_MSG_CHANNEL_OPEN_CONFIRMATION', + 92 => 'NET_SSH2_MSG_CHANNEL_OPEN_FAILURE', + 93 => 'NET_SSH2_MSG_CHANNEL_WINDOW_ADJUST', + 94 => 'NET_SSH2_MSG_CHANNEL_DATA', + 95 => 'NET_SSH2_MSG_CHANNEL_EXTENDED_DATA', + 96 => 'NET_SSH2_MSG_CHANNEL_EOF', + 97 => 'NET_SSH2_MSG_CHANNEL_CLOSE', + 98 => 'NET_SSH2_MSG_CHANNEL_REQUEST', + 99 => 'NET_SSH2_MSG_CHANNEL_SUCCESS', + 100 => 'NET_SSH2_MSG_CHANNEL_FAILURE' + ); + $this->disconnect_reasons = array( + 1 => 'NET_SSH2_DISCONNECT_HOST_NOT_ALLOWED_TO_CONNECT', + 2 => 'NET_SSH2_DISCONNECT_PROTOCOL_ERROR', + 3 => 'NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED', + 4 => 'NET_SSH2_DISCONNECT_RESERVED', + 5 => 'NET_SSH2_DISCONNECT_MAC_ERROR', + 6 => 'NET_SSH2_DISCONNECT_COMPRESSION_ERROR', + 7 => 'NET_SSH2_DISCONNECT_SERVICE_NOT_AVAILABLE', + 8 => 'NET_SSH2_DISCONNECT_PROTOCOL_VERSION_NOT_SUPPORTED', + 9 => 'NET_SSH2_DISCONNECT_HOST_KEY_NOT_VERIFIABLE', + 10 => 'NET_SSH2_DISCONNECT_CONNECTION_LOST', + 11 => 'NET_SSH2_DISCONNECT_BY_APPLICATION', + 12 => 'NET_SSH2_DISCONNECT_TOO_MANY_CONNECTIONS', + 13 => 'NET_SSH2_DISCONNECT_AUTH_CANCELLED_BY_USER', + 14 => 'NET_SSH2_DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE', + 15 => 'NET_SSH2_DISCONNECT_ILLEGAL_USER_NAME' + ); + $this->channel_open_failure_reasons = array( + 1 => 'NET_SSH2_OPEN_ADMINISTRATIVELY_PROHIBITED' + ); + $this->terminal_modes = array( + 0 => 'NET_SSH2_TTY_OP_END' + ); + $this->channel_extended_data_type_codes = array( + 1 => 'NET_SSH2_EXTENDED_DATA_STDERR' + ); + + $this->_define_array( + $this->message_numbers, + $this->disconnect_reasons, + $this->channel_open_failure_reasons, + $this->terminal_modes, + $this->channel_extended_data_type_codes, + array(60 => 'NET_SSH2_MSG_USERAUTH_PASSWD_CHANGEREQ'), + array(60 => 'NET_SSH2_MSG_USERAUTH_PK_OK'), + array(60 => 'NET_SSH2_MSG_USERAUTH_INFO_REQUEST', + 61 => 'NET_SSH2_MSG_USERAUTH_INFO_RESPONSE'), + // RFC 4419 - diffie-hellman-group-exchange-sha{1,256} + array(30 => 'NET_SSH2_MSG_KEXDH_GEX_REQUEST_OLD', + 31 => 'NET_SSH2_MSG_KEXDH_GEX_GROUP', + 32 => 'NET_SSH2_MSG_KEXDH_GEX_INIT', + 33 => 'NET_SSH2_MSG_KEXDH_GEX_REPLY', + 34 => 'NET_SSH2_MSG_KEXDH_GEX_REQUEST') + ); + + if (is_resource($host)) { + $this->fsock = $host; + return; + } + + if (is_string($host)) { + $this->host = $host; + $this->port = $port; + $this->timeout = $timeout; + } + } + + /** + * PHP4 compatible Default Constructor. + * + * @see self::__construct() + * @param mixed $host + * @param int $port + * @param int $timeout + * @access public + */ + function Net_SSH2($host, $port = 22, $timeout = 10) + { + $this->__construct($host, $port, $timeout); + } + + /** + * Set Crypto Engine Mode + * + * Possible $engine values: + * CRYPT_MODE_INTERNAL, CRYPT_MODE_MCRYPT + * + * @param int $engine + * @access private + */ + function setCryptoEngine($engine) + { + $this->crypto_engine = $engine; + } + + /** + * Connect to an SSHv2 server + * + * @return bool + * @access private + */ + function _connect() + { + if ($this->bitmap & NET_SSH2_MASK_CONSTRUCTOR) { + return false; + } + + $this->bitmap |= NET_SSH2_MASK_CONSTRUCTOR; + + $this->curTimeout = $this->timeout; + + $this->last_packet = strtok(microtime(), ' ') + strtok(''); // == microtime(true) in PHP5 + + if (!is_resource($this->fsock)) { + $start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838 + $this->fsock = @fsockopen($this->host, $this->port, $errno, $errstr, $this->curTimeout); + if (!$this->fsock) { + $host = $this->host . ':' . $this->port; + user_error(rtrim("Cannot connect to $host. Error $errno. $errstr")); + return false; + } + $elapsed = strtok(microtime(), ' ') + strtok('') - $start; + + $this->curTimeout-= $elapsed; + + if ($this->curTimeout <= 0) { + $this->is_timeout = true; + return false; + } + } + + /* According to the SSH2 specs, + + "The server MAY send other lines of data before sending the version + string. Each line SHOULD be terminated by a Carriage Return and Line + Feed. Such lines MUST NOT begin with "SSH-", and SHOULD be encoded + in ISO-10646 UTF-8 [RFC3629] (language is not specified). Clients + MUST be able to process such lines." */ + $temp = ''; + $extra = ''; + while (!feof($this->fsock) && !preg_match('#^SSH-(\d\.\d+)#', $temp, $matches)) { + if (substr($temp, -2) == "\r\n") { + $extra.= $temp; + $temp = ''; + } + + if ($this->curTimeout) { + if ($this->curTimeout < 0) { + $this->is_timeout = true; + return false; + } + $read = array($this->fsock); + $write = $except = null; + $start = strtok(microtime(), ' ') + strtok(''); + $sec = floor($this->curTimeout); + $usec = 1000000 * ($this->curTimeout - $sec); + // on windows this returns a "Warning: Invalid CRT parameters detected" error + // the !count() is done as a workaround for + if (!@stream_select($read, $write, $except, $sec, $usec) && !count($read)) { + $this->is_timeout = true; + return false; + } + $elapsed = strtok(microtime(), ' ') + strtok('') - $start; + $this->curTimeout-= $elapsed; + } + + $temp.= fgets($this->fsock, 255); + } + + if (feof($this->fsock)) { + user_error('Connection closed by server'); + return false; + } + + $this->identifier = $this->_generate_identifier(); + + if (defined('NET_SSH2_LOGGING')) { + $this->_append_log('<-', $extra . $temp); + $this->_append_log('->', $this->identifier . "\r\n"); + } + + $this->server_identifier = trim($temp, "\r\n"); + if (strlen($extra)) { + $this->errors[] = utf8_decode($extra); + } + + if ($matches[1] != '1.99' && $matches[1] != '2.0') { + user_error("Cannot connect to SSH $matches[1] servers"); + return false; + } + + fputs($this->fsock, $this->identifier . "\r\n"); + + $response = $this->_get_binary_packet(); + if ($response === false) { + user_error('Connection closed by server'); + return false; + } + + if (ord($response[0]) != NET_SSH2_MSG_KEXINIT) { + user_error('Expected SSH_MSG_KEXINIT'); + return false; + } + + if (!$this->_key_exchange($response)) { + return false; + } + + $this->bitmap|= NET_SSH2_MASK_CONNECTED; + + return true; + } + + /** + * Generates the SSH identifier + * + * You should overwrite this method in your own class if you want to use another identifier + * + * @access protected + * @return string + */ + function _generate_identifier() + { + $identifier = 'SSH-2.0-phpseclib_1.0'; + + $ext = array(); + if (extension_loaded('openssl')) { + $ext[] = 'openssl'; + } elseif (extension_loaded('mcrypt')) { + $ext[] = 'mcrypt'; + } + + if (extension_loaded('gmp')) { + $ext[] = 'gmp'; + } elseif (extension_loaded('bcmath')) { + $ext[] = 'bcmath'; + } + + if (!empty($ext)) { + $identifier .= ' (' . implode(', ', $ext) . ')'; + } + + return $identifier; + } + + /** + * Key Exchange + * + * @param string $kexinit_payload_server + * @access private + */ + function _key_exchange($kexinit_payload_server) + { + static $kex_algorithms = array( + 'diffie-hellman-group1-sha1', // REQUIRED + 'diffie-hellman-group14-sha1', // REQUIRED + 'diffie-hellman-group-exchange-sha1', // RFC 4419 + 'diffie-hellman-group-exchange-sha256', // RFC 4419 + ); + + static $server_host_key_algorithms = array( + 'ssh-rsa', // RECOMMENDED sign Raw RSA Key + 'ssh-dss' // REQUIRED sign Raw DSS Key + ); + + static $encryption_algorithms = false; + if ($encryption_algorithms === false) { + $encryption_algorithms = array( + // from : + 'arcfour256', + 'arcfour128', + + //'arcfour', // OPTIONAL the ARCFOUR stream cipher with a 128-bit key + + // CTR modes from : + 'aes128-ctr', // RECOMMENDED AES (Rijndael) in SDCTR mode, with 128-bit key + 'aes192-ctr', // RECOMMENDED AES with 192-bit key + 'aes256-ctr', // RECOMMENDED AES with 256-bit key + + 'twofish128-ctr', // OPTIONAL Twofish in SDCTR mode, with 128-bit key + 'twofish192-ctr', // OPTIONAL Twofish with 192-bit key + 'twofish256-ctr', // OPTIONAL Twofish with 256-bit key + + 'aes128-cbc', // RECOMMENDED AES with a 128-bit key + 'aes192-cbc', // OPTIONAL AES with a 192-bit key + 'aes256-cbc', // OPTIONAL AES in CBC mode, with a 256-bit key + + 'twofish128-cbc', // OPTIONAL Twofish with a 128-bit key + 'twofish192-cbc', // OPTIONAL Twofish with a 192-bit key + 'twofish256-cbc', + 'twofish-cbc', // OPTIONAL alias for "twofish256-cbc" + // (this is being retained for historical reasons) + + 'blowfish-ctr', // OPTIONAL Blowfish in SDCTR mode + + 'blowfish-cbc', // OPTIONAL Blowfish in CBC mode + + '3des-ctr', // RECOMMENDED Three-key 3DES in SDCTR mode + + '3des-cbc', // REQUIRED three-key 3DES in CBC mode + //'none' // OPTIONAL no encryption; NOT RECOMMENDED + ); + + if (extension_loaded('openssl') && !extension_loaded('mcrypt')) { + // OpenSSL does not support arcfour256 in any capacity and arcfour128 / arcfour support is limited to + // instances that do not use continuous buffers + $encryption_algorithms = array_diff( + $encryption_algorithms, + array('arcfour256', 'arcfour128', 'arcfour') + ); + } + + if (phpseclib_resolve_include_path('Crypt/RC4.php') === false) { + $encryption_algorithms = array_diff( + $encryption_algorithms, + array('arcfour256', 'arcfour128', 'arcfour') + ); + } + if (phpseclib_resolve_include_path('Crypt/Rijndael.php') === false) { + $encryption_algorithms = array_diff( + $encryption_algorithms, + array('aes128-ctr', 'aes192-ctr', 'aes256-ctr', 'aes128-cbc', 'aes192-cbc', 'aes256-cbc') + ); + } + if (phpseclib_resolve_include_path('Crypt/Twofish.php') === false) { + $encryption_algorithms = array_diff( + $encryption_algorithms, + array('twofish128-ctr', 'twofish192-ctr', 'twofish256-ctr', 'twofish128-cbc', 'twofish192-cbc', 'twofish256-cbc', 'twofish-cbc') + ); + } + if (phpseclib_resolve_include_path('Crypt/Blowfish.php') === false) { + $encryption_algorithms = array_diff( + $encryption_algorithms, + array('blowfish-ctr', 'blowfish-cbc') + ); + } + if (phpseclib_resolve_include_path('Crypt/TripleDES.php') === false) { + $encryption_algorithms = array_diff( + $encryption_algorithms, + array('3des-ctr', '3des-cbc') + ); + } + $encryption_algorithms = array_values($encryption_algorithms); + } + + $mac_algorithms = array( + // from : + 'hmac-sha2-256',// RECOMMENDED HMAC-SHA256 (digest length = key length = 32) + + 'hmac-sha1-96', // RECOMMENDED first 96 bits of HMAC-SHA1 (digest length = 12, key length = 20) + 'hmac-sha1', // REQUIRED HMAC-SHA1 (digest length = key length = 20) + 'hmac-md5-96', // OPTIONAL first 96 bits of HMAC-MD5 (digest length = 12, key length = 16) + 'hmac-md5', // OPTIONAL HMAC-MD5 (digest length = key length = 16) + //'none' // OPTIONAL no MAC; NOT RECOMMENDED + ); + + static $compression_algorithms = array( + 'none' // REQUIRED no compression + //'zlib' // OPTIONAL ZLIB (LZ77) compression + ); + + // some SSH servers have buggy implementations of some of the above algorithms + switch ($this->server_identifier) { + case 'SSH-2.0-SSHD': + $mac_algorithms = array_values(array_diff( + $mac_algorithms, + array('hmac-sha1-96', 'hmac-md5-96') + )); + } + + static $str_kex_algorithms, $str_server_host_key_algorithms, + $encryption_algorithms_server_to_client, $mac_algorithms_server_to_client, $compression_algorithms_server_to_client, + $encryption_algorithms_client_to_server, $mac_algorithms_client_to_server, $compression_algorithms_client_to_server; + + if (empty($str_kex_algorithms)) { + $str_kex_algorithms = implode(',', $kex_algorithms); + $str_server_host_key_algorithms = implode(',', $server_host_key_algorithms); + $encryption_algorithms_server_to_client = $encryption_algorithms_client_to_server = implode(',', $encryption_algorithms); + $mac_algorithms_server_to_client = $mac_algorithms_client_to_server = implode(',', $mac_algorithms); + $compression_algorithms_server_to_client = $compression_algorithms_client_to_server = implode(',', $compression_algorithms); + } + + $client_cookie = crypt_random_string(16); + + $response = $kexinit_payload_server; + $this->_string_shift($response, 1); // skip past the message number (it should be SSH_MSG_KEXINIT) + $server_cookie = $this->_string_shift($response, 16); + + $temp = unpack('Nlength', $this->_string_shift($response, 4)); + $this->kex_algorithms = explode(',', $this->_string_shift($response, $temp['length'])); + + $temp = unpack('Nlength', $this->_string_shift($response, 4)); + $this->server_host_key_algorithms = explode(',', $this->_string_shift($response, $temp['length'])); + + $temp = unpack('Nlength', $this->_string_shift($response, 4)); + $this->encryption_algorithms_client_to_server = explode(',', $this->_string_shift($response, $temp['length'])); + + $temp = unpack('Nlength', $this->_string_shift($response, 4)); + $this->encryption_algorithms_server_to_client = explode(',', $this->_string_shift($response, $temp['length'])); + + $temp = unpack('Nlength', $this->_string_shift($response, 4)); + $this->mac_algorithms_client_to_server = explode(',', $this->_string_shift($response, $temp['length'])); + + $temp = unpack('Nlength', $this->_string_shift($response, 4)); + $this->mac_algorithms_server_to_client = explode(',', $this->_string_shift($response, $temp['length'])); + + $temp = unpack('Nlength', $this->_string_shift($response, 4)); + $this->compression_algorithms_client_to_server = explode(',', $this->_string_shift($response, $temp['length'])); + + $temp = unpack('Nlength', $this->_string_shift($response, 4)); + $this->compression_algorithms_server_to_client = explode(',', $this->_string_shift($response, $temp['length'])); + + $temp = unpack('Nlength', $this->_string_shift($response, 4)); + $this->languages_client_to_server = explode(',', $this->_string_shift($response, $temp['length'])); + + $temp = unpack('Nlength', $this->_string_shift($response, 4)); + $this->languages_server_to_client = explode(',', $this->_string_shift($response, $temp['length'])); + + extract(unpack('Cfirst_kex_packet_follows', $this->_string_shift($response, 1))); + $first_kex_packet_follows = $first_kex_packet_follows != 0; + + // the sending of SSH2_MSG_KEXINIT could go in one of two places. this is the second place. + $kexinit_payload_client = pack( + 'Ca*Na*Na*Na*Na*Na*Na*Na*Na*Na*Na*CN', + NET_SSH2_MSG_KEXINIT, + $client_cookie, + strlen($str_kex_algorithms), + $str_kex_algorithms, + strlen($str_server_host_key_algorithms), + $str_server_host_key_algorithms, + strlen($encryption_algorithms_client_to_server), + $encryption_algorithms_client_to_server, + strlen($encryption_algorithms_server_to_client), + $encryption_algorithms_server_to_client, + strlen($mac_algorithms_client_to_server), + $mac_algorithms_client_to_server, + strlen($mac_algorithms_server_to_client), + $mac_algorithms_server_to_client, + strlen($compression_algorithms_client_to_server), + $compression_algorithms_client_to_server, + strlen($compression_algorithms_server_to_client), + $compression_algorithms_server_to_client, + 0, + '', + 0, + '', + 0, + 0 + ); + + if (!$this->_send_binary_packet($kexinit_payload_client)) { + return false; + } + // here ends the second place. + + // we need to decide upon the symmetric encryption algorithms before we do the diffie-hellman key exchange + // we don't initialize any crypto-objects, yet - we do that, later. for now, we need the lengths to make the + // diffie-hellman key exchange as fast as possible + $decrypt = $this->_array_intersect_first($encryption_algorithms, $this->encryption_algorithms_server_to_client); + $decryptKeyLength = $this->_encryption_algorithm_to_key_size($decrypt); + if ($decryptKeyLength === null) { + user_error('No compatible server to client encryption algorithms found'); + return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED); + } + + $encrypt = $this->_array_intersect_first($encryption_algorithms, $this->encryption_algorithms_client_to_server); + $encryptKeyLength = $this->_encryption_algorithm_to_key_size($encrypt); + if ($encryptKeyLength === null) { + user_error('No compatible client to server encryption algorithms found'); + return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED); + } + + $keyLength = $decryptKeyLength > $encryptKeyLength ? $decryptKeyLength : $encryptKeyLength; + + // through diffie-hellman key exchange a symmetric key is obtained + $kex_algorithm = $this->_array_intersect_first($kex_algorithms, $this->kex_algorithms); + if ($kex_algorithm === false) { + user_error('No compatible key exchange algorithms found'); + return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED); + } + if (strpos($kex_algorithm, 'diffie-hellman-group-exchange') === 0) { + $dh_group_sizes_packed = pack( + 'NNN', + $this->kex_dh_group_size_min, + $this->kex_dh_group_size_preferred, + $this->kex_dh_group_size_max + ); + $packet = pack( + 'Ca*', + NET_SSH2_MSG_KEXDH_GEX_REQUEST, + $dh_group_sizes_packed + ); + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $response = $this->_get_binary_packet(); + if ($response === false) { + user_error('Connection closed by server'); + return false; + } + extract(unpack('Ctype', $this->_string_shift($response, 1))); + if ($type != NET_SSH2_MSG_KEXDH_GEX_GROUP) { + user_error('Expected SSH_MSG_KEX_DH_GEX_GROUP'); + return false; + } + + extract(unpack('NprimeLength', $this->_string_shift($response, 4))); + $primeBytes = $this->_string_shift($response, $primeLength); + $prime = new Math_BigInteger($primeBytes, -256); + + extract(unpack('NgLength', $this->_string_shift($response, 4))); + $gBytes = $this->_string_shift($response, $gLength); + $g = new Math_BigInteger($gBytes, -256); + + $exchange_hash_rfc4419 = pack( + 'a*Na*Na*', + $dh_group_sizes_packed, + $primeLength, + $primeBytes, + $gLength, + $gBytes + ); + + $clientKexInitMessage = NET_SSH2_MSG_KEXDH_GEX_INIT; + $serverKexReplyMessage = NET_SSH2_MSG_KEXDH_GEX_REPLY; + } else { + switch ($kex_algorithm) { + // see http://tools.ietf.org/html/rfc2409#section-6.2 and + // http://tools.ietf.org/html/rfc2412, appendex E + case 'diffie-hellman-group1-sha1': + $prime = 'FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74' . + '020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F1437' . + '4FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED' . + 'EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381FFFFFFFFFFFFFFFF'; + break; + // see http://tools.ietf.org/html/rfc3526#section-3 + case 'diffie-hellman-group14-sha1': + $prime = 'FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74' . + '020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F1437' . + '4FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED' . + 'EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF05' . + '98DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB' . + '9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B' . + 'E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF695581718' . + '3995497CEA956AE515D2261898FA051015728E5A8AACAA68FFFFFFFFFFFFFFFF'; + break; + } + // For both diffie-hellman-group1-sha1 and diffie-hellman-group14-sha1 + // the generator field element is 2 (decimal) and the hash function is sha1. + $g = new Math_BigInteger(2); + $prime = new Math_BigInteger($prime, 16); + $exchange_hash_rfc4419 = ''; + $clientKexInitMessage = NET_SSH2_MSG_KEXDH_INIT; + $serverKexReplyMessage = NET_SSH2_MSG_KEXDH_REPLY; + } + + switch ($kex_algorithm) { + case 'diffie-hellman-group-exchange-sha256': + $kexHash = new Crypt_Hash('sha256'); + break; + default: + $kexHash = new Crypt_Hash('sha1'); + } + + /* To increase the speed of the key exchange, both client and server may + reduce the size of their private exponents. It should be at least + twice as long as the key material that is generated from the shared + secret. For more details, see the paper by van Oorschot and Wiener + [VAN-OORSCHOT]. + + -- http://tools.ietf.org/html/rfc4419#section-6.2 */ + $one = new Math_BigInteger(1); + $keyLength = min($keyLength, $kexHash->getLength()); + $max = $one->bitwise_leftShift(16 * $keyLength); // 2 * 8 * $keyLength + $max = $max->subtract($one); + + $x = $one->random($one, $max); + $e = $g->modPow($x, $prime); + + $eBytes = $e->toBytes(true); + $data = pack('CNa*', $clientKexInitMessage, strlen($eBytes), $eBytes); + + if (!$this->_send_binary_packet($data)) { + user_error('Connection closed by server'); + return false; + } + + $response = $this->_get_binary_packet(); + if ($response === false) { + user_error('Connection closed by server'); + return false; + } + extract(unpack('Ctype', $this->_string_shift($response, 1))); + + if ($type != $serverKexReplyMessage) { + user_error('Expected SSH_MSG_KEXDH_REPLY'); + return false; + } + + $temp = unpack('Nlength', $this->_string_shift($response, 4)); + $this->server_public_host_key = $server_public_host_key = $this->_string_shift($response, $temp['length']); + + $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4)); + $public_key_format = $this->_string_shift($server_public_host_key, $temp['length']); + + $temp = unpack('Nlength', $this->_string_shift($response, 4)); + $fBytes = $this->_string_shift($response, $temp['length']); + $f = new Math_BigInteger($fBytes, -256); + + $temp = unpack('Nlength', $this->_string_shift($response, 4)); + $this->signature = $this->_string_shift($response, $temp['length']); + + $temp = unpack('Nlength', $this->_string_shift($this->signature, 4)); + $this->signature_format = $this->_string_shift($this->signature, $temp['length']); + + $key = $f->modPow($x, $prime); + $keyBytes = $key->toBytes(true); + + $this->exchange_hash = pack( + 'Na*Na*Na*Na*Na*a*Na*Na*Na*', + strlen($this->identifier), + $this->identifier, + strlen($this->server_identifier), + $this->server_identifier, + strlen($kexinit_payload_client), + $kexinit_payload_client, + strlen($kexinit_payload_server), + $kexinit_payload_server, + strlen($this->server_public_host_key), + $this->server_public_host_key, + $exchange_hash_rfc4419, + strlen($eBytes), + $eBytes, + strlen($fBytes), + $fBytes, + strlen($keyBytes), + $keyBytes + ); + + $this->exchange_hash = $kexHash->hash($this->exchange_hash); + + if ($this->session_id === false) { + $this->session_id = $this->exchange_hash; + } + + $server_host_key_algorithm = $this->_array_intersect_first($server_host_key_algorithms, $this->server_host_key_algorithms); + if ($server_host_key_algorithm === false) { + user_error('No compatible server host key algorithms found'); + return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED); + } + + if ($public_key_format != $server_host_key_algorithm || $this->signature_format != $server_host_key_algorithm) { + user_error('Server Host Key Algorithm Mismatch'); + return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED); + } + + $packet = pack( + 'C', + NET_SSH2_MSG_NEWKEYS + ); + + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $response = $this->_get_binary_packet(); + + if ($response === false) { + user_error('Connection closed by server'); + return false; + } + + extract(unpack('Ctype', $this->_string_shift($response, 1))); + + if ($type != NET_SSH2_MSG_NEWKEYS) { + user_error('Expected SSH_MSG_NEWKEYS'); + return false; + } + + switch ($encrypt) { + case '3des-cbc': + if (!class_exists('Crypt_TripleDES')) { + include_once 'Crypt/TripleDES.php'; + } + $this->encrypt = new Crypt_TripleDES(); + // $this->encrypt_block_size = 64 / 8 == the default + break; + case '3des-ctr': + if (!class_exists('Crypt_TripleDES')) { + include_once 'Crypt/TripleDES.php'; + } + $this->encrypt = new Crypt_TripleDES(CRYPT_DES_MODE_CTR); + // $this->encrypt_block_size = 64 / 8 == the default + break; + case 'aes256-cbc': + case 'aes192-cbc': + case 'aes128-cbc': + if (!class_exists('Crypt_Rijndael')) { + include_once 'Crypt/Rijndael.php'; + } + $this->encrypt = new Crypt_Rijndael(); + $this->encrypt_block_size = 16; // eg. 128 / 8 + break; + case 'aes256-ctr': + case 'aes192-ctr': + case 'aes128-ctr': + if (!class_exists('Crypt_Rijndael')) { + include_once 'Crypt/Rijndael.php'; + } + $this->encrypt = new Crypt_Rijndael(CRYPT_RIJNDAEL_MODE_CTR); + $this->encrypt_block_size = 16; // eg. 128 / 8 + break; + case 'blowfish-cbc': + if (!class_exists('Crypt_Blowfish')) { + include_once 'Crypt/Blowfish.php'; + } + $this->encrypt = new Crypt_Blowfish(); + $this->encrypt_block_size = 8; + break; + case 'blowfish-ctr': + if (!class_exists('Crypt_Blowfish')) { + include_once 'Crypt/Blowfish.php'; + } + $this->encrypt = new Crypt_Blowfish(CRYPT_BLOWFISH_MODE_CTR); + $this->encrypt_block_size = 8; + break; + case 'twofish128-cbc': + case 'twofish192-cbc': + case 'twofish256-cbc': + case 'twofish-cbc': + if (!class_exists('Crypt_Twofish')) { + include_once 'Crypt/Twofish.php'; + } + $this->encrypt = new Crypt_Twofish(); + $this->encrypt_block_size = 16; + break; + case 'twofish128-ctr': + case 'twofish192-ctr': + case 'twofish256-ctr': + if (!class_exists('Crypt_Twofish')) { + include_once 'Crypt/Twofish.php'; + } + $this->encrypt = new Crypt_Twofish(CRYPT_TWOFISH_MODE_CTR); + $this->encrypt_block_size = 16; + break; + case 'arcfour': + case 'arcfour128': + case 'arcfour256': + if (!class_exists('Crypt_RC4')) { + include_once 'Crypt/RC4.php'; + } + $this->encrypt = new Crypt_RC4(); + break; + case 'none': + //$this->encrypt = new Crypt_Null(); + } + + switch ($decrypt) { + case '3des-cbc': + if (!class_exists('Crypt_TripleDES')) { + include_once 'Crypt/TripleDES.php'; + } + $this->decrypt = new Crypt_TripleDES(); + break; + case '3des-ctr': + if (!class_exists('Crypt_TripleDES')) { + include_once 'Crypt/TripleDES.php'; + } + $this->decrypt = new Crypt_TripleDES(CRYPT_DES_MODE_CTR); + break; + case 'aes256-cbc': + case 'aes192-cbc': + case 'aes128-cbc': + if (!class_exists('Crypt_Rijndael')) { + include_once 'Crypt/Rijndael.php'; + } + $this->decrypt = new Crypt_Rijndael(); + $this->decrypt_block_size = 16; + break; + case 'aes256-ctr': + case 'aes192-ctr': + case 'aes128-ctr': + if (!class_exists('Crypt_Rijndael')) { + include_once 'Crypt/Rijndael.php'; + } + $this->decrypt = new Crypt_Rijndael(CRYPT_RIJNDAEL_MODE_CTR); + $this->decrypt_block_size = 16; + break; + case 'blowfish-cbc': + if (!class_exists('Crypt_Blowfish')) { + include_once 'Crypt/Blowfish.php'; + } + $this->decrypt = new Crypt_Blowfish(); + $this->decrypt_block_size = 8; + break; + case 'blowfish-ctr': + if (!class_exists('Crypt_Blowfish')) { + include_once 'Crypt/Blowfish.php'; + } + $this->decrypt = new Crypt_Blowfish(CRYPT_BLOWFISH_MODE_CTR); + $this->decrypt_block_size = 8; + break; + case 'twofish128-cbc': + case 'twofish192-cbc': + case 'twofish256-cbc': + case 'twofish-cbc': + if (!class_exists('Crypt_Twofish')) { + include_once 'Crypt/Twofish.php'; + } + $this->decrypt = new Crypt_Twofish(); + $this->decrypt_block_size = 16; + break; + case 'twofish128-ctr': + case 'twofish192-ctr': + case 'twofish256-ctr': + if (!class_exists('Crypt_Twofish')) { + include_once 'Crypt/Twofish.php'; + } + $this->decrypt = new Crypt_Twofish(CRYPT_TWOFISH_MODE_CTR); + $this->decrypt_block_size = 16; + break; + case 'arcfour': + case 'arcfour128': + case 'arcfour256': + if (!class_exists('Crypt_RC4')) { + include_once 'Crypt/RC4.php'; + } + $this->decrypt = new Crypt_RC4(); + break; + case 'none': + //$this->decrypt = new Crypt_Null(); + } + + $keyBytes = pack('Na*', strlen($keyBytes), $keyBytes); + + if ($this->encrypt) { + if ($this->crypto_engine) { + $this->encrypt->setEngine($this->crypto_engine); + } + $this->encrypt->enableContinuousBuffer(); + $this->encrypt->disablePadding(); + + $iv = $kexHash->hash($keyBytes . $this->exchange_hash . 'A' . $this->session_id); + while ($this->encrypt_block_size > strlen($iv)) { + $iv.= $kexHash->hash($keyBytes . $this->exchange_hash . $iv); + } + $this->encrypt->setIV(substr($iv, 0, $this->encrypt_block_size)); + + $key = $kexHash->hash($keyBytes . $this->exchange_hash . 'C' . $this->session_id); + while ($encryptKeyLength > strlen($key)) { + $key.= $kexHash->hash($keyBytes . $this->exchange_hash . $key); + } + $this->encrypt->setKey(substr($key, 0, $encryptKeyLength)); + } + + if ($this->decrypt) { + if ($this->crypto_engine) { + $this->decrypt->setEngine($this->crypto_engine); + } + $this->decrypt->enableContinuousBuffer(); + $this->decrypt->disablePadding(); + + $iv = $kexHash->hash($keyBytes . $this->exchange_hash . 'B' . $this->session_id); + while ($this->decrypt_block_size > strlen($iv)) { + $iv.= $kexHash->hash($keyBytes . $this->exchange_hash . $iv); + } + $this->decrypt->setIV(substr($iv, 0, $this->decrypt_block_size)); + + $key = $kexHash->hash($keyBytes . $this->exchange_hash . 'D' . $this->session_id); + while ($decryptKeyLength > strlen($key)) { + $key.= $kexHash->hash($keyBytes . $this->exchange_hash . $key); + } + $this->decrypt->setKey(substr($key, 0, $decryptKeyLength)); + } + + /* The "arcfour128" algorithm is the RC4 cipher, as described in + [SCHNEIER], using a 128-bit key. The first 1536 bytes of keystream + generated by the cipher MUST be discarded, and the first byte of the + first encrypted packet MUST be encrypted using the 1537th byte of + keystream. + + -- http://tools.ietf.org/html/rfc4345#section-4 */ + if ($encrypt == 'arcfour128' || $encrypt == 'arcfour256') { + $this->encrypt->encrypt(str_repeat("\0", 1536)); + } + if ($decrypt == 'arcfour128' || $decrypt == 'arcfour256') { + $this->decrypt->decrypt(str_repeat("\0", 1536)); + } + + $mac_algorithm = $this->_array_intersect_first($mac_algorithms, $this->mac_algorithms_client_to_server); + if ($mac_algorithm === false) { + user_error('No compatible client to server message authentication algorithms found'); + return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED); + } + + $createKeyLength = 0; // ie. $mac_algorithm == 'none' + switch ($mac_algorithm) { + case 'hmac-sha2-256': + $this->hmac_create = new Crypt_Hash('sha256'); + $createKeyLength = 32; + break; + case 'hmac-sha1': + $this->hmac_create = new Crypt_Hash('sha1'); + $createKeyLength = 20; + break; + case 'hmac-sha1-96': + $this->hmac_create = new Crypt_Hash('sha1-96'); + $createKeyLength = 20; + break; + case 'hmac-md5': + $this->hmac_create = new Crypt_Hash('md5'); + $createKeyLength = 16; + break; + case 'hmac-md5-96': + $this->hmac_create = new Crypt_Hash('md5-96'); + $createKeyLength = 16; + } + + $mac_algorithm = $this->_array_intersect_first($mac_algorithms, $this->mac_algorithms_server_to_client); + if ($mac_algorithm === false) { + user_error('No compatible server to client message authentication algorithms found'); + return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED); + } + + $checkKeyLength = 0; + $this->hmac_size = 0; + switch ($mac_algorithm) { + case 'hmac-sha2-256': + $this->hmac_check = new Crypt_Hash('sha256'); + $checkKeyLength = 32; + $this->hmac_size = 32; + break; + case 'hmac-sha1': + $this->hmac_check = new Crypt_Hash('sha1'); + $checkKeyLength = 20; + $this->hmac_size = 20; + break; + case 'hmac-sha1-96': + $this->hmac_check = new Crypt_Hash('sha1-96'); + $checkKeyLength = 20; + $this->hmac_size = 12; + break; + case 'hmac-md5': + $this->hmac_check = new Crypt_Hash('md5'); + $checkKeyLength = 16; + $this->hmac_size = 16; + break; + case 'hmac-md5-96': + $this->hmac_check = new Crypt_Hash('md5-96'); + $checkKeyLength = 16; + $this->hmac_size = 12; + } + + $key = $kexHash->hash($keyBytes . $this->exchange_hash . 'E' . $this->session_id); + while ($createKeyLength > strlen($key)) { + $key.= $kexHash->hash($keyBytes . $this->exchange_hash . $key); + } + $this->hmac_create->setKey(substr($key, 0, $createKeyLength)); + + $key = $kexHash->hash($keyBytes . $this->exchange_hash . 'F' . $this->session_id); + while ($checkKeyLength > strlen($key)) { + $key.= $kexHash->hash($keyBytes . $this->exchange_hash . $key); + } + $this->hmac_check->setKey(substr($key, 0, $checkKeyLength)); + + $compression_algorithm = $this->_array_intersect_first($compression_algorithms, $this->compression_algorithms_server_to_client); + if ($compression_algorithm === false) { + user_error('No compatible server to client compression algorithms found'); + return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED); + } + $this->decompress = $compression_algorithm == 'zlib'; + + $compression_algorithm = $this->_array_intersect_first($compression_algorithms, $this->compression_algorithms_client_to_server); + if ($compression_algorithm === false) { + user_error('No compatible client to server compression algorithms found'); + return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED); + } + $this->compress = $compression_algorithm == 'zlib'; + + return true; + } + + /** + * Maps an encryption algorithm name to the number of key bytes. + * + * @param string $algorithm Name of the encryption algorithm + * @return int|null Number of bytes as an integer or null for unknown + * @access private + */ + function _encryption_algorithm_to_key_size($algorithm) + { + switch ($algorithm) { + case 'none': + return 0; + case 'aes128-cbc': + case 'aes128-ctr': + case 'arcfour': + case 'arcfour128': + case 'blowfish-cbc': + case 'blowfish-ctr': + case 'twofish128-cbc': + case 'twofish128-ctr': + return 16; + case '3des-cbc': + case '3des-ctr': + case 'aes192-cbc': + case 'aes192-ctr': + case 'twofish192-cbc': + case 'twofish192-ctr': + return 24; + case 'aes256-cbc': + case 'aes256-ctr': + case 'arcfour256': + case 'twofish-cbc': + case 'twofish256-cbc': + case 'twofish256-ctr': + return 32; + } + return null; + } + + /** + * Login + * + * The $password parameter can be a plaintext password, a Crypt_RSA object or an array + * + * @param string $username + * @param mixed $password + * @param mixed $... + * @return bool + * @see self::_login() + * @access public + */ + function login($username) + { + $args = func_get_args(); + return call_user_func_array(array(&$this, '_login'), $args); + } + + /** + * Login Helper + * + * @param string $username + * @param mixed $password + * @param mixed $... + * @return bool + * @see self::_login_helper() + * @access private + */ + function _login($username) + { + if (!($this->bitmap & NET_SSH2_MASK_CONSTRUCTOR)) { + if (!$this->_connect()) { + return false; + } + } + + $args = array_slice(func_get_args(), 1); + if (empty($args)) { + return $this->_login_helper($username); + } + + foreach ($args as $arg) { + if ($this->_login_helper($username, $arg)) { + return true; + } + } + return false; + } + + /** + * Login Helper + * + * @param string $username + * @param string $password + * @return bool + * @access private + * @internal It might be worthwhile, at some point, to protect against {@link http://tools.ietf.org/html/rfc4251#section-9.3.9 traffic analysis} + * by sending dummy SSH_MSG_IGNORE messages. + */ + function _login_helper($username, $password = null) + { + if (!($this->bitmap & NET_SSH2_MASK_CONNECTED)) { + return false; + } + + if (!($this->bitmap & NET_SSH2_MASK_LOGIN_REQ)) { + $packet = pack( + 'CNa*', + NET_SSH2_MSG_SERVICE_REQUEST, + strlen('ssh-userauth'), + 'ssh-userauth' + ); + + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $response = $this->_get_binary_packet(); + if ($response === false) { + user_error('Connection closed by server'); + return false; + } + + extract(unpack('Ctype', $this->_string_shift($response, 1))); + + if ($type != NET_SSH2_MSG_SERVICE_ACCEPT) { + user_error('Expected SSH_MSG_SERVICE_ACCEPT'); + return false; + } + $this->bitmap |= NET_SSH2_MASK_LOGIN_REQ; + } + + if (strlen($this->last_interactive_response)) { + return !is_string($password) && !is_array($password) ? false : $this->_keyboard_interactive_process($password); + } + + // although PHP5's get_class() preserves the case, PHP4's does not + if (is_object($password)) { + switch (strtolower(get_class($password))) { + case 'crypt_rsa': + return $this->_privatekey_login($username, $password); + case 'system_ssh_agent': + return $this->_ssh_agent_login($username, $password); + } + } + + if (is_array($password)) { + if ($this->_keyboard_interactive_login($username, $password)) { + $this->bitmap |= NET_SSH2_MASK_LOGIN; + return true; + } + return false; + } + + if (!isset($password)) { + $packet = pack( + 'CNa*Na*Na*', + NET_SSH2_MSG_USERAUTH_REQUEST, + strlen($username), + $username, + strlen('ssh-connection'), + 'ssh-connection', + strlen('none'), + 'none' + ); + + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $response = $this->_get_binary_packet(); + if ($response === false) { + user_error('Connection closed by server'); + return false; + } + + extract(unpack('Ctype', $this->_string_shift($response, 1))); + + switch ($type) { + case NET_SSH2_MSG_USERAUTH_SUCCESS: + $this->bitmap |= NET_SSH2_MASK_LOGIN; + return true; + //case NET_SSH2_MSG_USERAUTH_FAILURE: + default: + return false; + } + } + + $packet = pack( + 'CNa*Na*Na*CNa*', + NET_SSH2_MSG_USERAUTH_REQUEST, + strlen($username), + $username, + strlen('ssh-connection'), + 'ssh-connection', + strlen('password'), + 'password', + 0, + strlen($password), + $password + ); + + // remove the username and password from the logged packet + if (!defined('NET_SSH2_LOGGING')) { + $logged = null; + } else { + $logged = pack( + 'CNa*Na*Na*CNa*', + NET_SSH2_MSG_USERAUTH_REQUEST, + strlen('username'), + 'username', + strlen('ssh-connection'), + 'ssh-connection', + strlen('password'), + 'password', + 0, + strlen('password'), + 'password' + ); + } + + if (!$this->_send_binary_packet($packet, $logged)) { + return false; + } + + $response = $this->_get_binary_packet(); + if ($response === false) { + user_error('Connection closed by server'); + return false; + } + + extract(unpack('Ctype', $this->_string_shift($response, 1))); + + switch ($type) { + case NET_SSH2_MSG_USERAUTH_PASSWD_CHANGEREQ: // in theory, the password can be changed + if (defined('NET_SSH2_LOGGING')) { + $this->message_number_log[count($this->message_number_log) - 1] = 'NET_SSH2_MSG_USERAUTH_PASSWD_CHANGEREQ'; + } + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $this->errors[] = 'SSH_MSG_USERAUTH_PASSWD_CHANGEREQ: ' . utf8_decode($this->_string_shift($response, $length)); + return $this->_disconnect(NET_SSH2_DISCONNECT_AUTH_CANCELLED_BY_USER); + case NET_SSH2_MSG_USERAUTH_FAILURE: + // can we use keyboard-interactive authentication? if not then either the login is bad or the server employees + // multi-factor authentication + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $auth_methods = explode(',', $this->_string_shift($response, $length)); + extract(unpack('Cpartial_success', $this->_string_shift($response, 1))); + $partial_success = $partial_success != 0; + + if (!$partial_success && in_array('keyboard-interactive', $auth_methods)) { + if ($this->_keyboard_interactive_login($username, $password)) { + $this->bitmap |= NET_SSH2_MASK_LOGIN; + return true; + } + return false; + } + return false; + case NET_SSH2_MSG_USERAUTH_SUCCESS: + $this->bitmap |= NET_SSH2_MASK_LOGIN; + return true; + } + + return false; + } + + /** + * Login via keyboard-interactive authentication + * + * See {@link http://tools.ietf.org/html/rfc4256 RFC4256} for details. This is not a full-featured keyboard-interactive authenticator. + * + * @param string $username + * @param string $password + * @return bool + * @access private + */ + function _keyboard_interactive_login($username, $password) + { + $packet = pack( + 'CNa*Na*Na*Na*Na*', + NET_SSH2_MSG_USERAUTH_REQUEST, + strlen($username), + $username, + strlen('ssh-connection'), + 'ssh-connection', + strlen('keyboard-interactive'), + 'keyboard-interactive', + 0, + '', + 0, + '' + ); + + if (!$this->_send_binary_packet($packet)) { + return false; + } + + return $this->_keyboard_interactive_process($password); + } + + /** + * Handle the keyboard-interactive requests / responses. + * + * @param string $responses... + * @return bool + * @access private + */ + function _keyboard_interactive_process() + { + $responses = func_get_args(); + + if (strlen($this->last_interactive_response)) { + $response = $this->last_interactive_response; + } else { + $orig = $response = $this->_get_binary_packet(); + if ($response === false) { + user_error('Connection closed by server'); + return false; + } + } + + extract(unpack('Ctype', $this->_string_shift($response, 1))); + + switch ($type) { + case NET_SSH2_MSG_USERAUTH_INFO_REQUEST: + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $this->_string_shift($response, $length); // name; may be empty + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $this->_string_shift($response, $length); // instruction; may be empty + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $this->_string_shift($response, $length); // language tag; may be empty + extract(unpack('Nnum_prompts', $this->_string_shift($response, 4))); + + for ($i = 0; $i < count($responses); $i++) { + if (is_array($responses[$i])) { + foreach ($responses[$i] as $key => $value) { + $this->keyboard_requests_responses[$key] = $value; + } + unset($responses[$i]); + } + } + $responses = array_values($responses); + + if (isset($this->keyboard_requests_responses)) { + for ($i = 0; $i < $num_prompts; $i++) { + extract(unpack('Nlength', $this->_string_shift($response, 4))); + // prompt - ie. "Password: "; must not be empty + $prompt = $this->_string_shift($response, $length); + //$echo = $this->_string_shift($response) != chr(0); + foreach ($this->keyboard_requests_responses as $key => $value) { + if (substr($prompt, 0, strlen($key)) == $key) { + $responses[] = $value; + break; + } + } + } + } + + // see http://tools.ietf.org/html/rfc4256#section-3.2 + if (strlen($this->last_interactive_response)) { + $this->last_interactive_response = ''; + } elseif (defined('NET_SSH2_LOGGING')) { + $this->message_number_log[count($this->message_number_log) - 1] = str_replace( + 'UNKNOWN', + 'NET_SSH2_MSG_USERAUTH_INFO_REQUEST', + $this->message_number_log[count($this->message_number_log) - 1] + ); + } + + if (!count($responses) && $num_prompts) { + $this->last_interactive_response = $orig; + return false; + } + + /* + After obtaining the requested information from the user, the client + MUST respond with an SSH_MSG_USERAUTH_INFO_RESPONSE message. + */ + // see http://tools.ietf.org/html/rfc4256#section-3.4 + $packet = $logged = pack('CN', NET_SSH2_MSG_USERAUTH_INFO_RESPONSE, count($responses)); + for ($i = 0; $i < count($responses); $i++) { + $packet.= pack('Na*', strlen($responses[$i]), $responses[$i]); + $logged.= pack('Na*', strlen('dummy-answer'), 'dummy-answer'); + } + + if (!$this->_send_binary_packet($packet, $logged)) { + return false; + } + + if (defined('NET_SSH2_LOGGING') && NET_SSH2_LOGGING == NET_SSH2_LOG_COMPLEX) { + $this->message_number_log[count($this->message_number_log) - 1] = str_replace( + 'UNKNOWN', + 'NET_SSH2_MSG_USERAUTH_INFO_RESPONSE', + $this->message_number_log[count($this->message_number_log) - 1] + ); + } + + /* + After receiving the response, the server MUST send either an + SSH_MSG_USERAUTH_SUCCESS, SSH_MSG_USERAUTH_FAILURE, or another + SSH_MSG_USERAUTH_INFO_REQUEST message. + */ + // maybe phpseclib should force close the connection after x request / responses? unless something like that is done + // there could be an infinite loop of request / responses. + return $this->_keyboard_interactive_process(); + case NET_SSH2_MSG_USERAUTH_SUCCESS: + return true; + case NET_SSH2_MSG_USERAUTH_FAILURE: + return false; + } + + return false; + } + + /** + * Login with an ssh-agent provided key + * + * @param string $username + * @param System_SSH_Agent $agent + * @return bool + * @access private + */ + function _ssh_agent_login($username, $agent) + { + $this->agent = $agent; + $keys = $agent->requestIdentities(); + foreach ($keys as $key) { + if ($this->_privatekey_login($username, $key)) { + return true; + } + } + + return false; + } + + /** + * Login with an RSA private key + * + * @param string $username + * @param Crypt_RSA $password + * @return bool + * @access private + * @internal It might be worthwhile, at some point, to protect against {@link http://tools.ietf.org/html/rfc4251#section-9.3.9 traffic analysis} + * by sending dummy SSH_MSG_IGNORE messages. + */ + function _privatekey_login($username, $privatekey) + { + // see http://tools.ietf.org/html/rfc4253#page-15 + $publickey = $privatekey->getPublicKey(CRYPT_RSA_PUBLIC_FORMAT_RAW); + if ($publickey === false) { + return false; + } + + $publickey = array( + 'e' => $publickey['e']->toBytes(true), + 'n' => $publickey['n']->toBytes(true) + ); + $publickey = pack( + 'Na*Na*Na*', + strlen('ssh-rsa'), + 'ssh-rsa', + strlen($publickey['e']), + $publickey['e'], + strlen($publickey['n']), + $publickey['n'] + ); + + $part1 = pack( + 'CNa*Na*Na*', + NET_SSH2_MSG_USERAUTH_REQUEST, + strlen($username), + $username, + strlen('ssh-connection'), + 'ssh-connection', + strlen('publickey'), + 'publickey' + ); + $part2 = pack('Na*Na*', strlen('ssh-rsa'), 'ssh-rsa', strlen($publickey), $publickey); + + $packet = $part1 . chr(0) . $part2; + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $response = $this->_get_binary_packet(); + if ($response === false) { + user_error('Connection closed by server'); + return false; + } + + extract(unpack('Ctype', $this->_string_shift($response, 1))); + + switch ($type) { + case NET_SSH2_MSG_USERAUTH_FAILURE: + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $this->errors[] = 'SSH_MSG_USERAUTH_FAILURE: ' . $this->_string_shift($response, $length); + return false; + case NET_SSH2_MSG_USERAUTH_PK_OK: + // we'll just take it on faith that the public key blob and the public key algorithm name are as + // they should be + if (defined('NET_SSH2_LOGGING') && NET_SSH2_LOGGING == NET_SSH2_LOG_COMPLEX) { + $this->message_number_log[count($this->message_number_log) - 1] = str_replace( + 'UNKNOWN', + 'NET_SSH2_MSG_USERAUTH_PK_OK', + $this->message_number_log[count($this->message_number_log) - 1] + ); + } + } + + $packet = $part1 . chr(1) . $part2; + $privatekey->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1); + $signature = $privatekey->sign(pack('Na*a*', strlen($this->session_id), $this->session_id, $packet)); + $signature = pack('Na*Na*', strlen('ssh-rsa'), 'ssh-rsa', strlen($signature), $signature); + $packet.= pack('Na*', strlen($signature), $signature); + + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $response = $this->_get_binary_packet(); + if ($response === false) { + user_error('Connection closed by server'); + return false; + } + + extract(unpack('Ctype', $this->_string_shift($response, 1))); + + switch ($type) { + case NET_SSH2_MSG_USERAUTH_FAILURE: + // either the login is bad or the server employs multi-factor authentication + return false; + case NET_SSH2_MSG_USERAUTH_SUCCESS: + $this->bitmap |= NET_SSH2_MASK_LOGIN; + return true; + } + + return false; + } + + /** + * Set Timeout + * + * $ssh->exec('ping 127.0.0.1'); on a Linux host will never return and will run indefinitely. setTimeout() makes it so it'll timeout. + * Setting $timeout to false or 0 will mean there is no timeout. + * + * @param mixed $timeout + * @access public + */ + function setTimeout($timeout) + { + $this->timeout = $this->curTimeout = $timeout; + } + + /** + * Get the output from stdError + * + * @access public + */ + function getStdError() + { + return $this->stdErrorLog; + } + + /** + * Execute Command + * + * If $callback is set to false then Net_SSH2::_get_channel_packet(NET_SSH2_CHANNEL_EXEC) will need to be called manually. + * In all likelihood, this is not a feature you want to be taking advantage of. + * + * @param string $command + * @param Callback $callback + * @return string + * @access public + */ + function exec($command, $callback = null) + { + $this->curTimeout = $this->timeout; + $this->is_timeout = false; + $this->stdErrorLog = ''; + + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + return false; + } + + // RFC4254 defines the (client) window size as "bytes the other party can send before it must wait for the window to + // be adjusted". 0x7FFFFFFF is, at 2GB, the max size. technically, it should probably be decremented, but, + // honestly, if you're transferring more than 2GB, you probably shouldn't be using phpseclib, anyway. + // see http://tools.ietf.org/html/rfc4254#section-5.2 for more info + $this->window_size_server_to_client[NET_SSH2_CHANNEL_EXEC] = $this->window_size; + // 0x8000 is the maximum max packet size, per http://tools.ietf.org/html/rfc4253#section-6.1, although since PuTTy + // uses 0x4000, that's what will be used here, as well. + $packet_size = 0x4000; + + $packet = pack( + 'CNa*N3', + NET_SSH2_MSG_CHANNEL_OPEN, + strlen('session'), + 'session', + NET_SSH2_CHANNEL_EXEC, + $this->window_size_server_to_client[NET_SSH2_CHANNEL_EXEC], + $packet_size + ); + + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $this->channel_status[NET_SSH2_CHANNEL_EXEC] = NET_SSH2_MSG_CHANNEL_OPEN; + + $response = $this->_get_channel_packet(NET_SSH2_CHANNEL_EXEC); + if ($response === false) { + return false; + } + + if ($this->request_pty === true) { + $terminal_modes = pack('C', NET_SSH2_TTY_OP_END); + $packet = pack( + 'CNNa*CNa*N5a*', + NET_SSH2_MSG_CHANNEL_REQUEST, + $this->server_channels[NET_SSH2_CHANNEL_EXEC], + strlen('pty-req'), + 'pty-req', + 1, + strlen('vt100'), + 'vt100', + $this->windowColumns, + $this->windowRows, + 0, + 0, + strlen($terminal_modes), + $terminal_modes + ); + + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $response = $this->_get_binary_packet(); + if ($response === false) { + user_error('Connection closed by server'); + return false; + } + + list(, $type) = unpack('C', $this->_string_shift($response, 1)); + + switch ($type) { + case NET_SSH2_MSG_CHANNEL_SUCCESS: + break; + case NET_SSH2_MSG_CHANNEL_FAILURE: + default: + user_error('Unable to request pseudo-terminal'); + return $this->_disconnect(NET_SSH2_DISCONNECT_BY_APPLICATION); + } + $this->in_request_pty_exec = true; + } + + // sending a pty-req SSH_MSG_CHANNEL_REQUEST message is unnecessary and, in fact, in most cases, slows things + // down. the one place where it might be desirable is if you're doing something like Net_SSH2::exec('ping localhost &'). + // with a pty-req SSH_MSG_CHANNEL_REQUEST, exec() will return immediately and the ping process will then + // then immediately terminate. without such a request exec() will loop indefinitely. the ping process won't end but + // neither will your script. + + // although, in theory, the size of SSH_MSG_CHANNEL_REQUEST could exceed the maximum packet size established by + // SSH_MSG_CHANNEL_OPEN_CONFIRMATION, RFC4254#section-5.1 states that the "maximum packet size" refers to the + // "maximum size of an individual data packet". ie. SSH_MSG_CHANNEL_DATA. RFC4254#section-5.2 corroborates. + $packet = pack( + 'CNNa*CNa*', + NET_SSH2_MSG_CHANNEL_REQUEST, + $this->server_channels[NET_SSH2_CHANNEL_EXEC], + strlen('exec'), + 'exec', + 1, + strlen($command), + $command + ); + + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $this->channel_status[NET_SSH2_CHANNEL_EXEC] = NET_SSH2_MSG_CHANNEL_REQUEST; + + $response = $this->_get_channel_packet(NET_SSH2_CHANNEL_EXEC); + if ($response === false) { + return false; + } + + $this->channel_status[NET_SSH2_CHANNEL_EXEC] = NET_SSH2_MSG_CHANNEL_DATA; + + if ($callback === false || $this->in_request_pty_exec) { + return true; + } + + $output = ''; + while (true) { + $temp = $this->_get_channel_packet(NET_SSH2_CHANNEL_EXEC); + switch (true) { + case $temp === true: + return is_callable($callback) ? true : $output; + case $temp === false: + return false; + default: + if (is_callable($callback)) { + if (call_user_func($callback, $temp) === true) { + $this->_close_channel(NET_SSH2_CHANNEL_EXEC); + return true; + } + } else { + $output.= $temp; + } + } + } + } + + /** + * Creates an interactive shell + * + * @see self::read() + * @see self::write() + * @return bool + * @access private + */ + function _initShell() + { + if ($this->in_request_pty_exec === true) { + return true; + } + + $this->window_size_server_to_client[NET_SSH2_CHANNEL_SHELL] = $this->window_size; + $packet_size = 0x4000; + + $packet = pack( + 'CNa*N3', + NET_SSH2_MSG_CHANNEL_OPEN, + strlen('session'), + 'session', + NET_SSH2_CHANNEL_SHELL, + $this->window_size_server_to_client[NET_SSH2_CHANNEL_SHELL], + $packet_size + ); + + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $this->channel_status[NET_SSH2_CHANNEL_SHELL] = NET_SSH2_MSG_CHANNEL_OPEN; + + $response = $this->_get_channel_packet(NET_SSH2_CHANNEL_SHELL); + if ($response === false) { + return false; + } + + $terminal_modes = pack('C', NET_SSH2_TTY_OP_END); + $packet = pack( + 'CNNa*CNa*N5a*', + NET_SSH2_MSG_CHANNEL_REQUEST, + $this->server_channels[NET_SSH2_CHANNEL_SHELL], + strlen('pty-req'), + 'pty-req', + 1, + strlen('vt100'), + 'vt100', + $this->windowColumns, + $this->windowRows, + 0, + 0, + strlen($terminal_modes), + $terminal_modes + ); + + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $response = $this->_get_binary_packet(); + if ($response === false) { + user_error('Connection closed by server'); + return false; + } + + list(, $type) = unpack('C', $this->_string_shift($response, 1)); + + switch ($type) { + case NET_SSH2_MSG_CHANNEL_SUCCESS: + // if a pty can't be opened maybe commands can still be executed + case NET_SSH2_MSG_CHANNEL_FAILURE: + break; + default: + user_error('Unable to request pseudo-terminal'); + return $this->_disconnect(NET_SSH2_DISCONNECT_BY_APPLICATION); + } + + $packet = pack( + 'CNNa*C', + NET_SSH2_MSG_CHANNEL_REQUEST, + $this->server_channels[NET_SSH2_CHANNEL_SHELL], + strlen('shell'), + 'shell', + 1 + ); + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $this->channel_status[NET_SSH2_CHANNEL_SHELL] = NET_SSH2_MSG_CHANNEL_REQUEST; + + $response = $this->_get_channel_packet(NET_SSH2_CHANNEL_SHELL); + if ($response === false) { + return false; + } + + $this->channel_status[NET_SSH2_CHANNEL_SHELL] = NET_SSH2_MSG_CHANNEL_DATA; + + $this->bitmap |= NET_SSH2_MASK_SHELL; + + return true; + } + + /** + * Return the channel to be used with read() / write() + * + * @see self::read() + * @see self::write() + * @return int + * @access public + */ + function _get_interactive_channel() + { + switch (true) { + case $this->in_subsystem: + return NET_SSH2_CHANNEL_SUBSYSTEM; + case $this->in_request_pty_exec: + return NET_SSH2_CHANNEL_EXEC; + default: + return NET_SSH2_CHANNEL_SHELL; + } + } + + /** + * Return an available open channel + * + * @return int + * @access public + */ + function _get_open_channel() + { + $channel = NET_SSH2_CHANNEL_EXEC; + do { + if (isset($this->channel_status[$channel]) && $this->channel_status[$channel] == NET_SSH2_MSG_CHANNEL_OPEN) { + return $channel; + } + } while ($channel++ < NET_SSH2_CHANNEL_SUBSYSTEM); + + return false; + } + + /** + * Returns the output of an interactive shell + * + * Returns when there's a match for $expect, which can take the form of a string literal or, + * if $mode == NET_SSH2_READ_REGEX, a regular expression. + * + * @see self::write() + * @param string $expect + * @param int $mode + * @return string + * @access public + */ + function read($expect = '', $mode = NET_SSH2_READ_SIMPLE) + { + $this->curTimeout = $this->timeout; + $this->is_timeout = false; + + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + user_error('Operation disallowed prior to login()'); + return false; + } + + if (!($this->bitmap & NET_SSH2_MASK_SHELL) && !$this->_initShell()) { + user_error('Unable to initiate an interactive shell session'); + return false; + } + + $channel = $this->_get_interactive_channel(); + + $match = $expect; + while (true) { + if ($mode == NET_SSH2_READ_REGEX) { + preg_match($expect, substr($this->interactiveBuffer, -1024), $matches); + $match = isset($matches[0]) ? $matches[0] : ''; + } + $pos = strlen($match) ? strpos($this->interactiveBuffer, $match) : false; + if ($pos !== false) { + return $this->_string_shift($this->interactiveBuffer, $pos + strlen($match)); + } + $response = $this->_get_channel_packet($channel); + if (is_bool($response)) { + $this->in_request_pty_exec = false; + return $response ? $this->_string_shift($this->interactiveBuffer, strlen($this->interactiveBuffer)) : false; + } + + $this->interactiveBuffer.= $response; + } + } + + /** + * Inputs a command into an interactive shell. + * + * @see self::read() + * @param string $cmd + * @return bool + * @access public + */ + function write($cmd) + { + if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { + user_error('Operation disallowed prior to login()'); + return false; + } + + if (!($this->bitmap & NET_SSH2_MASK_SHELL) && !$this->_initShell()) { + user_error('Unable to initiate an interactive shell session'); + return false; + } + + return $this->_send_channel_packet($this->_get_interactive_channel(), $cmd); + } + + /** + * Start a subsystem. + * + * Right now only one subsystem at a time is supported. To support multiple subsystem's stopSubsystem() could accept + * a string that contained the name of the subsystem, but at that point, only one subsystem of each type could be opened. + * To support multiple subsystem's of the same name maybe it'd be best if startSubsystem() generated a new channel id and + * returns that and then that that was passed into stopSubsystem() but that'll be saved for a future date and implemented + * if there's sufficient demand for such a feature. + * + * @see self::stopSubsystem() + * @param string $subsystem + * @return bool + * @access public + */ + function startSubsystem($subsystem) + { + $this->window_size_server_to_client[NET_SSH2_CHANNEL_SUBSYSTEM] = $this->window_size; + + $packet = pack( + 'CNa*N3', + NET_SSH2_MSG_CHANNEL_OPEN, + strlen('session'), + 'session', + NET_SSH2_CHANNEL_SUBSYSTEM, + $this->window_size, + 0x4000 + ); + + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $this->channel_status[NET_SSH2_CHANNEL_SUBSYSTEM] = NET_SSH2_MSG_CHANNEL_OPEN; + + $response = $this->_get_channel_packet(NET_SSH2_CHANNEL_SUBSYSTEM); + if ($response === false) { + return false; + } + + $packet = pack( + 'CNNa*CNa*', + NET_SSH2_MSG_CHANNEL_REQUEST, + $this->server_channels[NET_SSH2_CHANNEL_SUBSYSTEM], + strlen('subsystem'), + 'subsystem', + 1, + strlen($subsystem), + $subsystem + ); + if (!$this->_send_binary_packet($packet)) { + return false; + } + + $this->channel_status[NET_SSH2_CHANNEL_SUBSYSTEM] = NET_SSH2_MSG_CHANNEL_REQUEST; + + $response = $this->_get_channel_packet(NET_SSH2_CHANNEL_SUBSYSTEM); + + if ($response === false) { + return false; + } + + $this->channel_status[NET_SSH2_CHANNEL_SUBSYSTEM] = NET_SSH2_MSG_CHANNEL_DATA; + + $this->bitmap |= NET_SSH2_MASK_SHELL; + $this->in_subsystem = true; + + return true; + } + + /** + * Stops a subsystem. + * + * @see self::startSubsystem() + * @return bool + * @access public + */ + function stopSubsystem() + { + $this->in_subsystem = false; + $this->_close_channel(NET_SSH2_CHANNEL_SUBSYSTEM); + return true; + } + + /** + * Closes a channel + * + * If read() timed out you might want to just close the channel and have it auto-restart on the next read() call + * + * @access public + */ + function reset() + { + $this->_close_channel($this->_get_interactive_channel()); + } + + /** + * Is timeout? + * + * Did exec() or read() return because they timed out or because they encountered the end? + * + * @access public + */ + function isTimeout() + { + return $this->is_timeout; + } + + /** + * Disconnect + * + * @access public + */ + function disconnect() + { + $this->_disconnect(NET_SSH2_DISCONNECT_BY_APPLICATION); + if (isset($this->realtime_log_file) && is_resource($this->realtime_log_file)) { + fclose($this->realtime_log_file); + } + } + + /** + * Destructor. + * + * Will be called, automatically, if you're supporting just PHP5. If you're supporting PHP4, you'll need to call + * disconnect(). + * + * @access public + */ + function __destruct() + { + $this->disconnect(); + } + + /** + * Is the connection still active? + * + * @return bool + * @access public + */ + function isConnected() + { + return (bool) ($this->bitmap & NET_SSH2_MASK_CONNECTED); + } + + /** + * Have you successfully been logged in? + * + * @return bool + * @access public + */ + function isAuthenticated() + { + return (bool) ($this->bitmap & NET_SSH2_MASK_LOGIN); + } + + /** + * Gets Binary Packets + * + * See '6. Binary Packet Protocol' of rfc4253 for more info. + * + * @see self::_send_binary_packet() + * @return string + * @access private + */ + function _get_binary_packet() + { + if (!is_resource($this->fsock) || feof($this->fsock)) { + user_error('Connection closed prematurely'); + $this->bitmap = 0; + return false; + } + + $start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838 + $raw = fread($this->fsock, $this->decrypt_block_size); + + if (!strlen($raw)) { + return ''; + } + + if ($this->decrypt !== false) { + $raw = $this->decrypt->decrypt($raw); + } + if ($raw === false) { + user_error('Unable to decrypt content'); + return false; + } + + extract(unpack('Npacket_length/Cpadding_length', $this->_string_shift($raw, 5))); + + $remaining_length = $packet_length + 4 - $this->decrypt_block_size; + + // quoting , + // "implementations SHOULD check that the packet length is reasonable" + // PuTTY uses 0x9000 as the actual max packet size and so to shall we + if ($remaining_length < -$this->decrypt_block_size || $remaining_length > 0x9000 || $remaining_length % $this->decrypt_block_size != 0) { + user_error('Invalid size'); + return false; + } + + $buffer = ''; + while ($remaining_length > 0) { + $temp = fread($this->fsock, $remaining_length); + if ($temp === false || feof($this->fsock)) { + user_error('Error reading from socket'); + $this->bitmap = 0; + return false; + } + $buffer.= $temp; + $remaining_length-= strlen($temp); + } + $stop = strtok(microtime(), ' ') + strtok(''); + if (strlen($buffer)) { + $raw.= $this->decrypt !== false ? $this->decrypt->decrypt($buffer) : $buffer; + } + + $payload = $this->_string_shift($raw, $packet_length - $padding_length - 1); + $padding = $this->_string_shift($raw, $padding_length); // should leave $raw empty + + if ($this->hmac_check !== false) { + $hmac = fread($this->fsock, $this->hmac_size); + if ($hmac === false || strlen($hmac) != $this->hmac_size) { + user_error('Error reading socket'); + $this->bitmap = 0; + return false; + } elseif ($hmac != $this->hmac_check->hash(pack('NNCa*', $this->get_seq_no, $packet_length, $padding_length, $payload . $padding))) { + user_error('Invalid HMAC'); + return false; + } + } + + //if ($this->decompress) { + // $payload = gzinflate(substr($payload, 2)); + //} + + $this->get_seq_no++; + + if (defined('NET_SSH2_LOGGING')) { + $current = strtok(microtime(), ' ') + strtok(''); + $message_number = isset($this->message_numbers[ord($payload[0])]) ? $this->message_numbers[ord($payload[0])] : 'UNKNOWN (' . ord($payload[0]) . ')'; + $message_number = '<- ' . $message_number . + ' (since last: ' . round($current - $this->last_packet, 4) . ', network: ' . round($stop - $start, 4) . 's)'; + $this->_append_log($message_number, $payload); + $this->last_packet = $current; + } + + return $this->_filter($payload); + } + + /** + * Filter Binary Packets + * + * Because some binary packets need to be ignored... + * + * @see self::_get_binary_packet() + * @return string + * @access private + */ + function _filter($payload) + { + switch (ord($payload[0])) { + case NET_SSH2_MSG_DISCONNECT: + $this->_string_shift($payload, 1); + extract(unpack('Nreason_code/Nlength', $this->_string_shift($payload, 8))); + $this->errors[] = 'SSH_MSG_DISCONNECT: ' . $this->disconnect_reasons[$reason_code] . "\r\n" . utf8_decode($this->_string_shift($payload, $length)); + $this->bitmap = 0; + return false; + case NET_SSH2_MSG_IGNORE: + $payload = $this->_get_binary_packet(); + break; + case NET_SSH2_MSG_DEBUG: + $this->_string_shift($payload, 2); + extract(unpack('Nlength', $this->_string_shift($payload, 4))); + $this->errors[] = 'SSH_MSG_DEBUG: ' . utf8_decode($this->_string_shift($payload, $length)); + $payload = $this->_get_binary_packet(); + break; + case NET_SSH2_MSG_UNIMPLEMENTED: + return false; + case NET_SSH2_MSG_KEXINIT: + if ($this->session_id !== false) { + if (!$this->_key_exchange($payload)) { + $this->bitmap = 0; + return false; + } + $payload = $this->_get_binary_packet(); + } + } + + // see http://tools.ietf.org/html/rfc4252#section-5.4; only called when the encryption has been activated and when we haven't already logged in + if (($this->bitmap & NET_SSH2_MASK_CONNECTED) && !($this->bitmap & NET_SSH2_MASK_LOGIN) && ord($payload[0]) == NET_SSH2_MSG_USERAUTH_BANNER) { + $this->_string_shift($payload, 1); + extract(unpack('Nlength', $this->_string_shift($payload, 4))); + $this->banner_message = utf8_decode($this->_string_shift($payload, $length)); + $payload = $this->_get_binary_packet(); + } + + // only called when we've already logged in + if (($this->bitmap & NET_SSH2_MASK_CONNECTED) && ($this->bitmap & NET_SSH2_MASK_LOGIN)) { + switch (ord($payload[0])) { + case NET_SSH2_MSG_GLOBAL_REQUEST: // see http://tools.ietf.org/html/rfc4254#section-4 + extract(unpack('Nlength', $this->_string_shift($payload, 4))); + $this->errors[] = 'SSH_MSG_GLOBAL_REQUEST: ' . $this->_string_shift($payload, $length); + + if (!$this->_send_binary_packet(pack('C', NET_SSH2_MSG_REQUEST_FAILURE))) { + return $this->_disconnect(NET_SSH2_DISCONNECT_BY_APPLICATION); + } + + $payload = $this->_get_binary_packet(); + break; + case NET_SSH2_MSG_CHANNEL_OPEN: // see http://tools.ietf.org/html/rfc4254#section-5.1 + $this->_string_shift($payload, 1); + extract(unpack('Nlength', $this->_string_shift($payload, 4))); + $data = $this->_string_shift($payload, $length); + extract(unpack('Nserver_channel', $this->_string_shift($payload, 4))); + switch ($data) { + case 'auth-agent': + case 'auth-agent@openssh.com': + if (isset($this->agent)) { + $new_channel = NET_SSH2_CHANNEL_AGENT_FORWARD; + + extract(unpack('Nremote_window_size', $this->_string_shift($payload, 4))); + extract(unpack('Nremote_maximum_packet_size', $this->_string_shift($payload, 4))); + + $this->packet_size_client_to_server[$new_channel] = $remote_window_size; + $this->window_size_server_to_client[$new_channel] = $remote_maximum_packet_size; + $this->window_size_client_to_server[$new_channel] = $this->window_size; + + $packet_size = 0x4000; + + $packet = pack( + 'CN4', + NET_SSH2_MSG_CHANNEL_OPEN_CONFIRMATION, + $server_channel, + $new_channel, + $packet_size, + $packet_size + ); + + $this->server_channels[$new_channel] = $server_channel; + $this->channel_status[$new_channel] = NET_SSH2_MSG_CHANNEL_OPEN_CONFIRMATION; + if (!$this->_send_binary_packet($packet)) { + return false; + } + } + break; + default: + $packet = pack( + 'CN3a*Na*', + NET_SSH2_MSG_REQUEST_FAILURE, + $server_channel, + NET_SSH2_OPEN_ADMINISTRATIVELY_PROHIBITED, + 0, + '', + 0, + '' + ); + + if (!$this->_send_binary_packet($packet)) { + return $this->_disconnect(NET_SSH2_DISCONNECT_BY_APPLICATION); + } + } + $payload = $this->_get_binary_packet(); + break; + case NET_SSH2_MSG_CHANNEL_WINDOW_ADJUST: + $this->_string_shift($payload, 1); + extract(unpack('Nchannel', $this->_string_shift($payload, 4))); + extract(unpack('Nwindow_size', $this->_string_shift($payload, 4))); + $this->window_size_client_to_server[$channel]+= $window_size; + + $payload = ($this->bitmap & NET_SSH2_MASK_WINDOW_ADJUST) ? true : $this->_get_binary_packet(); + } + } + + return $payload; + } + + /** + * Enable Quiet Mode + * + * Suppress stderr from output + * + * @access public + */ + function enableQuietMode() + { + $this->quiet_mode = true; + } + + /** + * Disable Quiet Mode + * + * Show stderr in output + * + * @access public + */ + function disableQuietMode() + { + $this->quiet_mode = false; + } + + /** + * Returns whether Quiet Mode is enabled or not + * + * @see self::enableQuietMode() + * @see self::disableQuietMode() + * + * @access public + * @return bool + */ + function isQuietModeEnabled() + { + return $this->quiet_mode; + } + + /** + * Enable request-pty when using exec() + * + * @access public + */ + function enablePTY() + { + $this->request_pty = true; + } + + /** + * Disable request-pty when using exec() + * + * @access public + */ + function disablePTY() + { + $this->request_pty = false; + } + + /** + * Returns whether request-pty is enabled or not + * + * @see self::enablePTY() + * @see self::disablePTY() + * + * @access public + * @return bool + */ + function isPTYEnabled() + { + return $this->request_pty; + } + + /** + * Gets channel data + * + * Returns the data as a string if it's available and false if not. + * + * @param $client_channel + * @return mixed + * @access private + */ + function _get_channel_packet($client_channel, $skip_extended = false) + { + if (!empty($this->channel_buffers[$client_channel])) { + return array_shift($this->channel_buffers[$client_channel]); + } + + while (true) { + if ($this->curTimeout) { + if ($this->curTimeout < 0) { + $this->is_timeout = true; + return true; + } + + $read = array($this->fsock); + $write = $except = null; + + $start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838 + $sec = floor($this->curTimeout); + $usec = 1000000 * ($this->curTimeout - $sec); + // on windows this returns a "Warning: Invalid CRT parameters detected" error + if (!@stream_select($read, $write, $except, $sec, $usec) && !count($read)) { + $this->is_timeout = true; + return true; + } + $elapsed = strtok(microtime(), ' ') + strtok('') - $start; + $this->curTimeout-= $elapsed; + } + + $response = $this->_get_binary_packet(); + if ($response === false) { + user_error('Connection closed by server'); + return false; + } + if ($client_channel == -1 && $response === true) { + return true; + } + if (!strlen($response)) { + return ''; + } + + extract(unpack('Ctype', $this->_string_shift($response, 1))); + + if ($type == NET_SSH2_MSG_CHANNEL_OPEN) { + extract(unpack('Nlength', $this->_string_shift($response, 4))); + } else { + extract(unpack('Nchannel', $this->_string_shift($response, 4))); + } + + // will not be setup yet on incoming channel open request + if (isset($channel) && isset($this->channel_status[$channel]) && isset($this->window_size_server_to_client[$channel])) { + $this->window_size_server_to_client[$channel]-= strlen($response); + + // resize the window, if appropriate + if ($this->window_size_server_to_client[$channel] < 0) { + $packet = pack('CNN', NET_SSH2_MSG_CHANNEL_WINDOW_ADJUST, $this->server_channels[$channel], $this->window_size); + if (!$this->_send_binary_packet($packet)) { + return false; + } + $this->window_size_server_to_client[$channel]+= $this->window_size; + } + + switch ($this->channel_status[$channel]) { + case NET_SSH2_MSG_CHANNEL_OPEN: + switch ($type) { + case NET_SSH2_MSG_CHANNEL_OPEN_CONFIRMATION: + extract(unpack('Nserver_channel', $this->_string_shift($response, 4))); + $this->server_channels[$channel] = $server_channel; + extract(unpack('Nwindow_size', $this->_string_shift($response, 4))); + if ($window_size < 0) { + $window_size&= 0x7FFFFFFF; + $window_size+= 0x80000000; + } + $this->window_size_client_to_server[$channel] = $window_size; + $temp = unpack('Npacket_size_client_to_server', $this->_string_shift($response, 4)); + $this->packet_size_client_to_server[$channel] = $temp['packet_size_client_to_server']; + $result = $client_channel == $channel ? true : $this->_get_channel_packet($client_channel, $skip_extended); + $this->_on_channel_open(); + return $result; + //case NET_SSH2_MSG_CHANNEL_OPEN_FAILURE: + default: + user_error('Unable to open channel'); + return $this->_disconnect(NET_SSH2_DISCONNECT_BY_APPLICATION); + } + break; + case NET_SSH2_MSG_CHANNEL_REQUEST: + switch ($type) { + case NET_SSH2_MSG_CHANNEL_SUCCESS: + return true; + case NET_SSH2_MSG_CHANNEL_FAILURE: + return false; + default: + user_error('Unable to fulfill channel request'); + return $this->_disconnect(NET_SSH2_DISCONNECT_BY_APPLICATION); + } + case NET_SSH2_MSG_CHANNEL_CLOSE: + return $type == NET_SSH2_MSG_CHANNEL_CLOSE ? true : $this->_get_channel_packet($client_channel, $skip_extended); + } + } + + // ie. $this->channel_status[$channel] == NET_SSH2_MSG_CHANNEL_DATA + + switch ($type) { + case NET_SSH2_MSG_CHANNEL_DATA: + /* + if ($channel == NET_SSH2_CHANNEL_EXEC) { + // SCP requires null packets, such as this, be sent. further, in the case of the ssh.com SSH server + // this actually seems to make things twice as fast. more to the point, the message right after + // SSH_MSG_CHANNEL_DATA (usually SSH_MSG_IGNORE) won't block for as long as it would have otherwise. + // in OpenSSH it slows things down but only by a couple thousandths of a second. + $this->_send_channel_packet($channel, chr(0)); + } + */ + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $data = $this->_string_shift($response, $length); + + if ($channel == NET_SSH2_CHANNEL_AGENT_FORWARD) { + $agent_response = $this->agent->_forward_data($data); + if (!is_bool($agent_response)) { + $this->_send_channel_packet($channel, $agent_response); + } + break; + } + + if ($client_channel == $channel) { + return $data; + } + if (!isset($this->channel_buffers[$channel])) { + $this->channel_buffers[$channel] = array(); + } + $this->channel_buffers[$channel][] = $data; + break; + case NET_SSH2_MSG_CHANNEL_EXTENDED_DATA: + /* + if ($client_channel == NET_SSH2_CHANNEL_EXEC) { + $this->_send_channel_packet($client_channel, chr(0)); + } + */ + // currently, there's only one possible value for $data_type_code: NET_SSH2_EXTENDED_DATA_STDERR + extract(unpack('Ndata_type_code/Nlength', $this->_string_shift($response, 8))); + $data = $this->_string_shift($response, $length); + $this->stdErrorLog.= $data; + if ($skip_extended || $this->quiet_mode) { + break; + } + if ($client_channel == $channel) { + return $data; + } + if (!isset($this->channel_buffers[$channel])) { + $this->channel_buffers[$channel] = array(); + } + $this->channel_buffers[$channel][] = $data; + break; + case NET_SSH2_MSG_CHANNEL_REQUEST: + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $value = $this->_string_shift($response, $length); + switch ($value) { + case 'exit-signal': + $this->_string_shift($response, 1); + extract(unpack('Nlength', $this->_string_shift($response, 4))); + $this->errors[] = 'SSH_MSG_CHANNEL_REQUEST (exit-signal): ' . $this->_string_shift($response, $length); + $this->_string_shift($response, 1); + extract(unpack('Nlength', $this->_string_shift($response, 4))); + if ($length) { + $this->errors[count($this->errors)].= "\r\n" . $this->_string_shift($response, $length); + } + + $this->_send_binary_packet(pack('CN', NET_SSH2_MSG_CHANNEL_EOF, $this->server_channels[$client_channel])); + $this->_send_binary_packet(pack('CN', NET_SSH2_MSG_CHANNEL_CLOSE, $this->server_channels[$channel])); + + $this->channel_status[$channel] = NET_SSH2_MSG_CHANNEL_EOF; + + break; + case 'exit-status': + extract(unpack('Cfalse/Nexit_status', $this->_string_shift($response, 5))); + $this->exit_status = $exit_status; + + // "The client MAY ignore these messages." + // -- http://tools.ietf.org/html/rfc4254#section-6.10 + + break; + default: + // "Some systems may not implement signals, in which case they SHOULD ignore this message." + // -- http://tools.ietf.org/html/rfc4254#section-6.9 + break; + } + break; + case NET_SSH2_MSG_CHANNEL_CLOSE: + $this->curTimeout = 0; + + if ($this->bitmap & NET_SSH2_MASK_SHELL) { + $this->bitmap&= ~NET_SSH2_MASK_SHELL; + } + if ($this->channel_status[$channel] != NET_SSH2_MSG_CHANNEL_EOF) { + $this->_send_binary_packet(pack('CN', NET_SSH2_MSG_CHANNEL_CLOSE, $this->server_channels[$channel])); + } + + $this->channel_status[$channel] = NET_SSH2_MSG_CHANNEL_CLOSE; + if ($client_channel == $channel) { + return true; + } + case NET_SSH2_MSG_CHANNEL_EOF: + break; + default: + user_error('Error reading channel data'); + return $this->_disconnect(NET_SSH2_DISCONNECT_BY_APPLICATION); + } + } + } + + /** + * Sends Binary Packets + * + * See '6. Binary Packet Protocol' of rfc4253 for more info. + * + * @param string $data + * @param string $logged + * @see self::_get_binary_packet() + * @return bool + * @access private + */ + function _send_binary_packet($data, $logged = null) + { + if (!is_resource($this->fsock) || feof($this->fsock)) { + user_error('Connection closed prematurely'); + $this->bitmap = 0; + return false; + } + + //if ($this->compress) { + // // the -4 removes the checksum: + // // http://php.net/function.gzcompress#57710 + // $data = substr(gzcompress($data), 0, -4); + //} + + // 4 (packet length) + 1 (padding length) + 4 (minimal padding amount) == 9 + $packet_length = strlen($data) + 9; + // round up to the nearest $this->encrypt_block_size + $packet_length+= (($this->encrypt_block_size - 1) * $packet_length) % $this->encrypt_block_size; + // subtracting strlen($data) is obvious - subtracting 5 is necessary because of packet_length and padding_length + $padding_length = $packet_length - strlen($data) - 5; + $padding = crypt_random_string($padding_length); + + // we subtract 4 from packet_length because the packet_length field isn't supposed to include itself + $packet = pack('NCa*', $packet_length - 4, $padding_length, $data . $padding); + + $hmac = $this->hmac_create !== false ? $this->hmac_create->hash(pack('Na*', $this->send_seq_no, $packet)) : ''; + $this->send_seq_no++; + + if ($this->encrypt !== false) { + $packet = $this->encrypt->encrypt($packet); + } + + $packet.= $hmac; + + $start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838 + $result = strlen($packet) == fputs($this->fsock, $packet); + $stop = strtok(microtime(), ' ') + strtok(''); + + if (defined('NET_SSH2_LOGGING')) { + $current = strtok(microtime(), ' ') + strtok(''); + $message_number = isset($this->message_numbers[ord($data[0])]) ? $this->message_numbers[ord($data[0])] : 'UNKNOWN (' . ord($data[0]) . ')'; + $message_number = '-> ' . $message_number . + ' (since last: ' . round($current - $this->last_packet, 4) . ', network: ' . round($stop - $start, 4) . 's)'; + $this->_append_log($message_number, isset($logged) ? $logged : $data); + $this->last_packet = $current; + } + + return $result; + } + + /** + * Logs data packets + * + * Makes sure that only the last 1MB worth of packets will be logged + * + * @param string $data + * @access private + */ + function _append_log($message_number, $message) + { + // remove the byte identifying the message type from all but the first two messages (ie. the identification strings) + if (strlen($message_number) > 2) { + $this->_string_shift($message); + } + + switch (NET_SSH2_LOGGING) { + // useful for benchmarks + case NET_SSH2_LOG_SIMPLE: + $this->message_number_log[] = $message_number; + break; + // the most useful log for SSH2 + case NET_SSH2_LOG_COMPLEX: + $this->message_number_log[] = $message_number; + $this->log_size+= strlen($message); + $this->message_log[] = $message; + while ($this->log_size > NET_SSH2_LOG_MAX_SIZE) { + $this->log_size-= strlen(array_shift($this->message_log)); + array_shift($this->message_number_log); + } + break; + // dump the output out realtime; packets may be interspersed with non packets, + // passwords won't be filtered out and select other packets may not be correctly + // identified + case NET_SSH2_LOG_REALTIME: + switch (PHP_SAPI) { + case 'cli': + $start = $stop = "\r\n"; + break; + default: + $start = '
        ';
        +                        $stop = '
        '; + } + echo $start . $this->_format_log(array($message), array($message_number)) . $stop; + @flush(); + @ob_flush(); + break; + // basically the same thing as NET_SSH2_LOG_REALTIME with the caveat that NET_SSH2_LOG_REALTIME_FILE + // needs to be defined and that the resultant log file will be capped out at NET_SSH2_LOG_MAX_SIZE. + // the earliest part of the log file is denoted by the first <<< START >>> and is not going to necessarily + // at the beginning of the file + case NET_SSH2_LOG_REALTIME_FILE: + if (!isset($this->realtime_log_file)) { + // PHP doesn't seem to like using constants in fopen() + $filename = NET_SSH2_LOG_REALTIME_FILENAME; + $fp = fopen($filename, 'w'); + $this->realtime_log_file = $fp; + } + if (!is_resource($this->realtime_log_file)) { + break; + } + $entry = $this->_format_log(array($message), array($message_number)); + if ($this->realtime_log_wrap) { + $temp = "<<< START >>>\r\n"; + $entry.= $temp; + fseek($this->realtime_log_file, ftell($this->realtime_log_file) - strlen($temp)); + } + $this->realtime_log_size+= strlen($entry); + if ($this->realtime_log_size > NET_SSH2_LOG_MAX_SIZE) { + fseek($this->realtime_log_file, 0); + $this->realtime_log_size = strlen($entry); + $this->realtime_log_wrap = true; + } + fputs($this->realtime_log_file, $entry); + } + } + + /** + * Sends channel data + * + * Spans multiple SSH_MSG_CHANNEL_DATAs if appropriate + * + * @param int $client_channel + * @param string $data + * @return bool + * @access private + */ + function _send_channel_packet($client_channel, $data) + { + while (strlen($data)) { + if (!$this->window_size_client_to_server[$client_channel]) { + $this->bitmap^= NET_SSH2_MASK_WINDOW_ADJUST; + // using an invalid channel will let the buffers be built up for the valid channels + $this->_get_channel_packet(-1); + $this->bitmap^= NET_SSH2_MASK_WINDOW_ADJUST; + } + + /* The maximum amount of data allowed is determined by the maximum + packet size for the channel, and the current window size, whichever + is smaller. + -- http://tools.ietf.org/html/rfc4254#section-5.2 */ + $max_size = min( + $this->packet_size_client_to_server[$client_channel], + $this->window_size_client_to_server[$client_channel] + ); + + $temp = $this->_string_shift($data, $max_size); + $packet = pack( + 'CN2a*', + NET_SSH2_MSG_CHANNEL_DATA, + $this->server_channels[$client_channel], + strlen($temp), + $temp + ); + $this->window_size_client_to_server[$client_channel]-= strlen($temp); + if (!$this->_send_binary_packet($packet)) { + return false; + } + } + + return true; + } + + /** + * Closes and flushes a channel + * + * Net_SSH2 doesn't properly close most channels. For exec() channels are normally closed by the server + * and for SFTP channels are presumably closed when the client disconnects. This functions is intended + * for SCP more than anything. + * + * @param int $client_channel + * @param bool $want_reply + * @return bool + * @access private + */ + function _close_channel($client_channel, $want_reply = false) + { + // see http://tools.ietf.org/html/rfc4254#section-5.3 + + $this->_send_binary_packet(pack('CN', NET_SSH2_MSG_CHANNEL_EOF, $this->server_channels[$client_channel])); + + if (!$want_reply) { + $this->_send_binary_packet(pack('CN', NET_SSH2_MSG_CHANNEL_CLOSE, $this->server_channels[$client_channel])); + } + + $this->channel_status[$client_channel] = NET_SSH2_MSG_CHANNEL_CLOSE; + + $this->curTimeout = 0; + + while (!is_bool($this->_get_channel_packet($client_channel))) { + } + + if ($want_reply) { + $this->_send_binary_packet(pack('CN', NET_SSH2_MSG_CHANNEL_CLOSE, $this->server_channels[$client_channel])); + } + + if ($this->bitmap & NET_SSH2_MASK_SHELL) { + $this->bitmap&= ~NET_SSH2_MASK_SHELL; + } + } + + /** + * Disconnect + * + * @param int $reason + * @return bool + * @access private + */ + function _disconnect($reason) + { + if ($this->bitmap & NET_SSH2_MASK_CONNECTED) { + $data = pack('CNNa*Na*', NET_SSH2_MSG_DISCONNECT, $reason, 0, '', 0, ''); + $this->_send_binary_packet($data); + $this->bitmap = 0; + fclose($this->fsock); + return false; + } + } + + /** + * String Shift + * + * Inspired by array_shift + * + * @param string $string + * @param int $index + * @return string + * @access private + */ + function _string_shift(&$string, $index = 1) + { + $substr = substr($string, 0, $index); + $string = substr($string, $index); + return $substr; + } + + /** + * Define Array + * + * Takes any number of arrays whose indices are integers and whose values are strings and defines a bunch of + * named constants from it, using the value as the name of the constant and the index as the value of the constant. + * If any of the constants that would be defined already exists, none of the constants will be defined. + * + * @param array $array + * @access private + */ + function _define_array() + { + $args = func_get_args(); + foreach ($args as $arg) { + foreach ($arg as $key => $value) { + if (!defined($value)) { + define($value, $key); + } else { + break 2; + } + } + } + } + + /** + * Returns a log of the packets that have been sent and received. + * + * Returns a string if NET_SSH2_LOGGING == NET_SSH2_LOG_COMPLEX, an array if NET_SSH2_LOGGING == NET_SSH2_LOG_SIMPLE and false if !defined('NET_SSH2_LOGGING') + * + * @access public + * @return array|false|string + */ + function getLog() + { + if (!defined('NET_SSH2_LOGGING')) { + return false; + } + + switch (NET_SSH2_LOGGING) { + case NET_SSH2_LOG_SIMPLE: + return $this->message_number_log; + break; + case NET_SSH2_LOG_COMPLEX: + return $this->_format_log($this->message_log, $this->message_number_log); + break; + default: + return false; + } + } + + /** + * Formats a log for printing + * + * @param array $message_log + * @param array $message_number_log + * @access private + * @return string + */ + function _format_log($message_log, $message_number_log) + { + $output = ''; + for ($i = 0; $i < count($message_log); $i++) { + $output.= $message_number_log[$i] . "\r\n"; + $current_log = $message_log[$i]; + $j = 0; + do { + if (strlen($current_log)) { + $output.= str_pad(dechex($j), 7, '0', STR_PAD_LEFT) . '0 '; + } + $fragment = $this->_string_shift($current_log, $this->log_short_width); + $hex = substr(preg_replace_callback('#.#s', array($this, '_format_log_helper'), $fragment), strlen($this->log_boundary)); + // replace non ASCII printable characters with dots + // http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters + // also replace < with a . since < messes up the output on web browsers + $raw = preg_replace('#[^\x20-\x7E]|<#', '.', $fragment); + $output.= str_pad($hex, $this->log_long_width - $this->log_short_width, ' ') . $raw . "\r\n"; + $j++; + } while (strlen($current_log)); + $output.= "\r\n"; + } + + return $output; + } + + /** + * Helper function for _format_log + * + * For use with preg_replace_callback() + * + * @param array $matches + * @access private + * @return string + */ + function _format_log_helper($matches) + { + return $this->log_boundary . str_pad(dechex(ord($matches[0])), 2, '0', STR_PAD_LEFT); + } + + /** + * Helper function for agent->_on_channel_open() + * + * Used when channels are created to inform agent + * of said channel opening. Must be called after + * channel open confirmation received + * + * @access private + */ + function _on_channel_open() + { + if (isset($this->agent)) { + $this->agent->_on_channel_open($this); + } + } + + /** + * Returns the first value of the intersection of two arrays or false if + * the intersection is empty. The order is defined by the first parameter. + * + * @param array $array1 + * @param array $array2 + * @return mixed False if intersection is empty, else intersected value. + * @access private + */ + function _array_intersect_first($array1, $array2) + { + foreach ($array1 as $value) { + if (in_array($value, $array2)) { + return $value; + } + } + return false; + } + + /** + * Returns all errors + * + * @return string[] + * @access public + */ + function getErrors() + { + return $this->errors; + } + + /** + * Returns the last error + * + * @return string + * @access public + */ + function getLastError() + { + $count = count($this->errors); + + if ($count > 0) { + return $this->errors[$count - 1]; + } + } + + /** + * Return the server identification. + * + * @return string + * @access public + */ + function getServerIdentification() + { + $this->_connect(); + + return $this->server_identifier; + } + + /** + * Return a list of the key exchange algorithms the server supports. + * + * @return array + * @access public + */ + function getKexAlgorithms() + { + $this->_connect(); + + return $this->kex_algorithms; + } + + /** + * Return a list of the host key (public key) algorithms the server supports. + * + * @return array + * @access public + */ + function getServerHostKeyAlgorithms() + { + $this->_connect(); + + return $this->server_host_key_algorithms; + } + + /** + * Return a list of the (symmetric key) encryption algorithms the server supports, when receiving stuff from the client. + * + * @return array + * @access public + */ + function getEncryptionAlgorithmsClient2Server() + { + $this->_connect(); + + return $this->encryption_algorithms_client_to_server; + } + + /** + * Return a list of the (symmetric key) encryption algorithms the server supports, when sending stuff to the client. + * + * @return array + * @access public + */ + function getEncryptionAlgorithmsServer2Client() + { + $this->_connect(); + + return $this->encryption_algorithms_server_to_client; + } + + /** + * Return a list of the MAC algorithms the server supports, when receiving stuff from the client. + * + * @return array + * @access public + */ + function getMACAlgorithmsClient2Server() + { + $this->_connect(); + + return $this->mac_algorithms_client_to_server; + } + + /** + * Return a list of the MAC algorithms the server supports, when sending stuff to the client. + * + * @return array + * @access public + */ + function getMACAlgorithmsServer2Client() + { + $this->_connect(); + + return $this->mac_algorithms_server_to_client; + } + + /** + * Return a list of the compression algorithms the server supports, when receiving stuff from the client. + * + * @return array + * @access public + */ + function getCompressionAlgorithmsClient2Server() + { + $this->_connect(); + + return $this->compression_algorithms_client_to_server; + } + + /** + * Return a list of the compression algorithms the server supports, when sending stuff to the client. + * + * @return array + * @access public + */ + function getCompressionAlgorithmsServer2Client() + { + $this->_connect(); + + return $this->compression_algorithms_server_to_client; + } + + /** + * Return a list of the languages the server supports, when sending stuff to the client. + * + * @return array + * @access public + */ + function getLanguagesServer2Client() + { + $this->_connect(); + + return $this->languages_server_to_client; + } + + /** + * Return a list of the languages the server supports, when receiving stuff from the client. + * + * @return array + * @access public + */ + function getLanguagesClient2Server() + { + $this->_connect(); + + return $this->languages_client_to_server; + } + + /** + * Returns the banner message. + * + * Quoting from the RFC, "in some jurisdictions, sending a warning message before + * authentication may be relevant for getting legal protection." + * + * @return string + * @access public + */ + function getBannerMessage() + { + return $this->banner_message; + } + + /** + * Returns the server public host key. + * + * Caching this the first time you connect to a server and checking the result on subsequent connections + * is recommended. Returns false if the server signature is not signed correctly with the public host key. + * + * @return mixed + * @access public + */ + function getServerPublicHostKey() + { + if (!($this->bitmap & NET_SSH2_MASK_CONSTRUCTOR)) { + if (!$this->_connect()) { + return false; + } + } + + $signature = $this->signature; + $server_public_host_key = $this->server_public_host_key; + + extract(unpack('Nlength', $this->_string_shift($server_public_host_key, 4))); + $this->_string_shift($server_public_host_key, $length); + + if ($this->signature_validated) { + return $this->bitmap ? + $this->signature_format . ' ' . base64_encode($this->server_public_host_key) : + false; + } + + $this->signature_validated = true; + + switch ($this->signature_format) { + case 'ssh-dss': + $zero = new Math_BigInteger(); + + $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4)); + $p = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256); + + $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4)); + $q = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256); + + $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4)); + $g = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256); + + $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4)); + $y = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256); + + /* The value for 'dss_signature_blob' is encoded as a string containing + r, followed by s (which are 160-bit integers, without lengths or + padding, unsigned, and in network byte order). */ + $temp = unpack('Nlength', $this->_string_shift($signature, 4)); + if ($temp['length'] != 40) { + user_error('Invalid signature'); + return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED); + } + + $r = new Math_BigInteger($this->_string_shift($signature, 20), 256); + $s = new Math_BigInteger($this->_string_shift($signature, 20), 256); + + switch (true) { + case $r->equals($zero): + case $r->compare($q) >= 0: + case $s->equals($zero): + case $s->compare($q) >= 0: + user_error('Invalid signature'); + return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED); + } + + $w = $s->modInverse($q); + + $u1 = $w->multiply(new Math_BigInteger(sha1($this->exchange_hash), 16)); + list(, $u1) = $u1->divide($q); + + $u2 = $w->multiply($r); + list(, $u2) = $u2->divide($q); + + $g = $g->modPow($u1, $p); + $y = $y->modPow($u2, $p); + + $v = $g->multiply($y); + list(, $v) = $v->divide($p); + list(, $v) = $v->divide($q); + + if (!$v->equals($r)) { + user_error('Bad server signature'); + return $this->_disconnect(NET_SSH2_DISCONNECT_HOST_KEY_NOT_VERIFIABLE); + } + + break; + case 'ssh-rsa': + $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4)); + $e = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256); + + $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4)); + $rawN = $this->_string_shift($server_public_host_key, $temp['length']); + $n = new Math_BigInteger($rawN, -256); + $nLength = strlen(ltrim($rawN, "\0")); + + /* + $temp = unpack('Nlength', $this->_string_shift($signature, 4)); + $signature = $this->_string_shift($signature, $temp['length']); + + if (!class_exists('Crypt_RSA')) { + include_once 'Crypt/RSA.php'; + } + + $rsa = new Crypt_RSA(); + $rsa->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1); + $rsa->loadKey(array('e' => $e, 'n' => $n), CRYPT_RSA_PUBLIC_FORMAT_RAW); + if (!$rsa->verify($this->exchange_hash, $signature)) { + user_error('Bad server signature'); + return $this->_disconnect(NET_SSH2_DISCONNECT_HOST_KEY_NOT_VERIFIABLE); + } + */ + + $temp = unpack('Nlength', $this->_string_shift($signature, 4)); + $s = new Math_BigInteger($this->_string_shift($signature, $temp['length']), 256); + + // validate an RSA signature per "8.2 RSASSA-PKCS1-v1_5", "5.2.2 RSAVP1", and "9.1 EMSA-PSS" in the + // following URL: + // ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-1/pkcs-1v2-1.pdf + + // also, see SSHRSA.c (rsa2_verifysig) in PuTTy's source. + + if ($s->compare(new Math_BigInteger()) < 0 || $s->compare($n->subtract(new Math_BigInteger(1))) > 0) { + user_error('Invalid signature'); + return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED); + } + + $s = $s->modPow($e, $n); + $s = $s->toBytes(); + + $h = pack('N4H*', 0x00302130, 0x0906052B, 0x0E03021A, 0x05000414, sha1($this->exchange_hash)); + $h = chr(0x01) . str_repeat(chr(0xFF), $nLength - 2 - strlen($h)) . $h; + + if ($s != $h) { + user_error('Bad server signature'); + return $this->_disconnect(NET_SSH2_DISCONNECT_HOST_KEY_NOT_VERIFIABLE); + } + break; + default: + user_error('Unsupported signature format'); + return $this->_disconnect(NET_SSH2_DISCONNECT_HOST_KEY_NOT_VERIFIABLE); + } + + return $this->signature_format . ' ' . base64_encode($this->server_public_host_key); + } + + /** + * Returns the exit status of an SSH command or false. + * + * @return false|int + * @access public + */ + function getExitStatus() + { + if (is_null($this->exit_status)) { + return false; + } + return $this->exit_status; + } + + /** + * Returns the number of columns for the terminal window size. + * + * @return int + * @access public + */ + function getWindowColumns() + { + return $this->windowColumns; + } + + /** + * Returns the number of rows for the terminal window size. + * + * @return int + * @access public + */ + function getWindowRows() + { + return $this->windowRows; + } + + /** + * Sets the number of columns for the terminal window size. + * + * @param int $value + * @access public + */ + function setWindowColumns($value) + { + $this->windowColumns = $value; + } + + /** + * Sets the number of rows for the terminal window size. + * + * @param int $value + * @access public + */ + function setWindowRows($value) + { + $this->windowRows = $value; + } + + /** + * Sets the number of columns and rows for the terminal window size. + * + * @param int $columns + * @param int $rows + * @access public + */ + function setWindowSize($columns = 80, $rows = 24) + { + $this->windowColumns = $columns; + $this->windowRows = $rows; + } +} diff --git a/plugins/updraftplus/includes/phpseclib/System/SSH/Agent.php b/plugins/updraftplus/includes/phpseclib/System/SSH/Agent.php new file mode 100644 index 0000000..7388cb4 --- /dev/null +++ b/plugins/updraftplus/includes/phpseclib/System/SSH/Agent.php @@ -0,0 +1,486 @@ + + * login('username', $agent)) { + * exit('Login Failed'); + * } + * + * echo $ssh->exec('pwd'); + * echo $ssh->exec('ls -la'); + * ?> + * + * + * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @category System + * @package System_SSH_Agent + * @author Jim Wigginton + * @copyright 2014 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + * @internal See http://api.libssh.org/rfc/PROTOCOL.agent + */ + +/**#@+ + * Message numbers + * + * @access private + */ +// to request SSH1 keys you have to use SSH_AGENTC_REQUEST_RSA_IDENTITIES (1) +define('SYSTEM_SSH_AGENTC_REQUEST_IDENTITIES', 11); +// this is the SSH2 response; the SSH1 response is SSH_AGENT_RSA_IDENTITIES_ANSWER (2). +define('SYSTEM_SSH_AGENT_IDENTITIES_ANSWER', 12); +define('SYSTEM_SSH_AGENT_FAILURE', 5); +// the SSH1 request is SSH_AGENTC_RSA_CHALLENGE (3) +define('SYSTEM_SSH_AGENTC_SIGN_REQUEST', 13); +// the SSH1 response is SSH_AGENT_RSA_RESPONSE (4) +define('SYSTEM_SSH_AGENT_SIGN_RESPONSE', 14); + + +/**@+ + * Agent forwarding status + * + * @access private + */ +// no forwarding requested and not active +define('SYSTEM_SSH_AGENT_FORWARD_NONE', 0); +// request agent forwarding when opportune +define('SYSTEM_SSH_AGENT_FORWARD_REQUEST', 1); +// forwarding has been request and is active +define('SYSTEM_SSH_AGENT_FORWARD_ACTIVE', 2); + +/**#@-*/ + +/** + * Pure-PHP ssh-agent client identity object + * + * Instantiation should only be performed by System_SSH_Agent class. + * This could be thought of as implementing an interface that Crypt_RSA + * implements. ie. maybe a Net_SSH_Auth_PublicKey interface or something. + * The methods in this interface would be getPublicKey, setSignatureMode + * and sign since those are the methods phpseclib looks for to perform + * public key authentication. + * + * @package System_SSH_Agent + * @author Jim Wigginton + * @access internal + */ +class System_SSH_Agent_Identity +{ + /** + * Key Object + * + * @var Crypt_RSA + * @access private + * @see self::getPublicKey() + */ + var $key; + + /** + * Key Blob + * + * @var string + * @access private + * @see self::sign() + */ + var $key_blob; + + /** + * Socket Resource + * + * @var resource + * @access private + * @see self::sign() + */ + var $fsock; + + /** + * Default Constructor. + * + * @param resource $fsock + * @return System_SSH_Agent_Identity + * @access private + */ + function __construct($fsock) + { + $this->fsock = $fsock; + } + + /** + * PHP4 compatible Default Constructor. + * + * @see self::__construct() + * @param resource $fsock + * @access public + */ + function System_SSH_Agent_Identity($fsock) + { + $this->__construct($fsock); + } + + /** + * Set Public Key + * + * Called by System_SSH_Agent::requestIdentities() + * + * @param Crypt_RSA $key + * @access private + */ + function setPublicKey($key) + { + $this->key = $key; + $this->key->setPublicKey(); + } + + /** + * Set Public Key + * + * Called by System_SSH_Agent::requestIdentities(). The key blob could be extracted from $this->key + * but this saves a small amount of computation. + * + * @param string $key_blob + * @access private + */ + function setPublicKeyBlob($key_blob) + { + $this->key_blob = $key_blob; + } + + /** + * Get Public Key + * + * Wrapper for $this->key->getPublicKey() + * + * @param int $format optional + * @return mixed + * @access public + */ + function getPublicKey($format = null) + { + return !isset($format) ? $this->key->getPublicKey() : $this->key->getPublicKey($format); + } + + /** + * Set Signature Mode + * + * Doesn't do anything as ssh-agent doesn't let you pick and choose the signature mode. ie. + * ssh-agent's only supported mode is CRYPT_RSA_SIGNATURE_PKCS1 + * + * @param int $mode + * @access public + */ + function setSignatureMode($mode) + { + } + + /** + * Create a signature + * + * See "2.6.2 Protocol 2 private key signature request" + * + * @param string $message + * @return string + * @access public + */ + function sign($message) + { + // the last parameter (currently 0) is for flags and ssh-agent only defines one flag (for ssh-dss): SSH_AGENT_OLD_SIGNATURE + $packet = pack('CNa*Na*N', SYSTEM_SSH_AGENTC_SIGN_REQUEST, strlen($this->key_blob), $this->key_blob, strlen($message), $message, 0); + $packet = pack('Na*', strlen($packet), $packet); + if (strlen($packet) != fputs($this->fsock, $packet)) { + user_error('Connection closed during signing'); + } + + $length = current(unpack('N', fread($this->fsock, 4))); + $type = ord(fread($this->fsock, 1)); + if ($type != SYSTEM_SSH_AGENT_SIGN_RESPONSE) { + user_error('Unable to retreive signature'); + } + + $signature_blob = fread($this->fsock, $length - 1); + // the only other signature format defined - ssh-dss - is the same length as ssh-rsa + // the + 12 is for the other various SSH added length fields + return substr($signature_blob, strlen('ssh-rsa') + 12); + } +} + +/** + * Pure-PHP ssh-agent client identity factory + * + * requestIdentities() method pumps out System_SSH_Agent_Identity objects + * + * @package System_SSH_Agent + * @author Jim Wigginton + * @access internal + */ +class System_SSH_Agent +{ + /** + * Socket Resource + * + * @var resource + * @access private + */ + var $fsock; + + /** + * Agent forwarding status + * + * @access private + */ + var $forward_status = SYSTEM_SSH_AGENT_FORWARD_NONE; + + /** + * Buffer for accumulating forwarded authentication + * agent data arriving on SSH data channel destined + * for agent unix socket + * + * @access private + */ + var $socket_buffer = ''; + + /** + * Tracking the number of bytes we are expecting + * to arrive for the agent socket on the SSH data + * channel + */ + var $expected_bytes = 0; + + /** + * Default Constructor + * + * @return System_SSH_Agent + * @access public + */ + function __construct() + { + switch (true) { + case isset($_SERVER['SSH_AUTH_SOCK']): + $address = $_SERVER['SSH_AUTH_SOCK']; + break; + case isset($_ENV['SSH_AUTH_SOCK']): + $address = $_ENV['SSH_AUTH_SOCK']; + break; + default: + user_error('SSH_AUTH_SOCK not found'); + return false; + } + + $this->fsock = fsockopen('unix://' . $address, 0, $errno, $errstr); + if (!$this->fsock) { + user_error("Unable to connect to ssh-agent (Error $errno: $errstr)"); + } + } + + /** + * PHP4 compatible Default Constructor. + * + * @see self::__construct() + * @access public + */ + function System_SSH_Agent() + { + $this->__construct(); + } + + /** + * Request Identities + * + * See "2.5.2 Requesting a list of protocol 2 keys" + * Returns an array containing zero or more System_SSH_Agent_Identity objects + * + * @return array + * @access public + */ + function requestIdentities() + { + if (!$this->fsock) { + return array(); + } + + $packet = pack('NC', 1, SYSTEM_SSH_AGENTC_REQUEST_IDENTITIES); + if (strlen($packet) != fputs($this->fsock, $packet)) { + user_error('Connection closed while requesting identities'); + } + + $length = current(unpack('N', fread($this->fsock, 4))); + $type = ord(fread($this->fsock, 1)); + if ($type != SYSTEM_SSH_AGENT_IDENTITIES_ANSWER) { + user_error('Unable to request identities'); + } + + $identities = array(); + $keyCount = current(unpack('N', fread($this->fsock, 4))); + for ($i = 0; $i < $keyCount; $i++) { + $length = current(unpack('N', fread($this->fsock, 4))); + $key_blob = fread($this->fsock, $length); + $key_str = 'ssh-rsa ' . base64_encode($key_blob); + $length = current(unpack('N', fread($this->fsock, 4))); + if ($length) { + $key_str.= ' ' . fread($this->fsock, $length); + } + $length = current(unpack('N', substr($key_blob, 0, 4))); + $key_type = substr($key_blob, 4, $length); + switch ($key_type) { + case 'ssh-rsa': + if (!class_exists('Crypt_RSA')) { + include_once 'Crypt/RSA.php'; + } + $key = new Crypt_RSA(); + $key->loadKey($key_str); + break; + case 'ssh-dss': + // not currently supported + break; + } + // resources are passed by reference by default + if (isset($key)) { + $identity = new System_SSH_Agent_Identity($this->fsock); + $identity->setPublicKey($key); + $identity->setPublicKeyBlob($key_blob); + $identities[] = $identity; + unset($key); + } + } + + return $identities; + } + + /** + * Signal that agent forwarding should + * be requested when a channel is opened + * + * @param Net_SSH2 $ssh + * @return bool + * @access public + */ + function startSSHForwarding($ssh) + { + if ($this->forward_status == SYSTEM_SSH_AGENT_FORWARD_NONE) { + $this->forward_status = SYSTEM_SSH_AGENT_FORWARD_REQUEST; + } + } + + /** + * Request agent forwarding of remote server + * + * @param Net_SSH2 $ssh + * @return bool + * @access private + */ + function _request_forwarding($ssh) + { + $request_channel = $ssh->_get_open_channel(); + if ($request_channel === false) { + return false; + } + + $packet = pack( + 'CNNa*C', + NET_SSH2_MSG_CHANNEL_REQUEST, + $ssh->server_channels[$request_channel], + strlen('auth-agent-req@openssh.com'), + 'auth-agent-req@openssh.com', + 1 + ); + + $ssh->channel_status[$request_channel] = NET_SSH2_MSG_CHANNEL_REQUEST; + + if (!$ssh->_send_binary_packet($packet)) { + return false; + } + + $response = $ssh->_get_channel_packet($request_channel); + if ($response === false) { + return false; + } + + $ssh->channel_status[$request_channel] = NET_SSH2_MSG_CHANNEL_OPEN; + $this->forward_status = SYSTEM_SSH_AGENT_FORWARD_ACTIVE; + + return true; + } + + /** + * On successful channel open + * + * This method is called upon successful channel + * open to give the SSH Agent an opportunity + * to take further action. i.e. request agent forwarding + * + * @param Net_SSH2 $ssh + * @access private + */ + function _on_channel_open($ssh) + { + if ($this->forward_status == SYSTEM_SSH_AGENT_FORWARD_REQUEST) { + $this->_request_forwarding($ssh); + } + } + + /** + * Forward data to SSH Agent and return data reply + * + * @param string $data + * @return data from SSH Agent + * @access private + */ + function _forward_data($data) + { + if ($this->expected_bytes > 0) { + $this->socket_buffer.= $data; + $this->expected_bytes -= strlen($data); + } else { + $agent_data_bytes = current(unpack('N', $data)); + $current_data_bytes = strlen($data); + $this->socket_buffer = $data; + if ($current_data_bytes != $agent_data_bytes + 4) { + $this->expected_bytes = ($agent_data_bytes + 4) - $current_data_bytes; + return false; + } + } + + if (strlen($this->socket_buffer) != fwrite($this->fsock, $this->socket_buffer)) { + user_error('Connection closed attempting to forward data to SSH agent'); + } + + $this->socket_buffer = ''; + $this->expected_bytes = 0; + + $agent_reply_bytes = current(unpack('N', fread($this->fsock, 4))); + + $agent_reply_data = fread($this->fsock, $agent_reply_bytes); + $agent_reply_data = current(unpack('a*', $agent_reply_data)); + + return pack('Na*', $agent_reply_bytes, $agent_reply_data); + } +} diff --git a/plugins/updraftplus/includes/phpseclib/System/SSH_Agent.php b/plugins/updraftplus/includes/phpseclib/System/SSH_Agent.php new file mode 100644 index 0000000..ea434b9 --- /dev/null +++ b/plugins/updraftplus/includes/phpseclib/System/SSH_Agent.php @@ -0,0 +1,39 @@ + + * @copyright 2014 Jim Wigginton + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://phpseclib.sourceforge.net + * @internal See http://api.libssh.org/rfc/PROTOCOL.agent + */ + +require_once 'SSH/Agent.php'; diff --git a/plugins/updraftplus/includes/phpseclib/bootstrap.php b/plugins/updraftplus/includes/phpseclib/bootstrap.php new file mode 100644 index 0000000..0da0999 --- /dev/null +++ b/plugins/updraftplus/includes/phpseclib/bootstrap.php @@ -0,0 +1,16 @@ + -1) { + jQuery('#updraft_delete_question_singular').hide(); + jQuery('#updraft_delete_question_plural').show(); + } else { + jQuery('#updraft_delete_question_plural').hide(); + jQuery('#updraft_delete_question_singular').show(); + } + jQuery('#updraft-delete-modal').dialog('open'); +} + +function updraft_remote_storage_tab_activation(the_method){ + jQuery('.updraftplusmethod').hide(); + jQuery('.remote-tab').data('active', false); + jQuery('.remote-tab').removeClass('nav-tab-active'); + jQuery('.updraftplusmethod.'+the_method).show(); + jQuery('.remote-tab-'+the_method).data('active', true); + jQuery('.remote-tab-'+the_method).addClass('nav-tab-active'); +} + +function updraft_remote_storage_tabs_setup() { + + var anychecked = 0; + var set = jQuery('.updraft_servicecheckbox:checked'); + + jQuery(set).each(function(ind, obj) { + var ser = jQuery(obj).val(); + + if(jQuery(obj).attr('id') != 'updraft_servicecheckbox_none') { + anychecked++; + } + + jQuery('.remote-tab-'+ser).show(); + if(ind == jQuery(set).length-1){ + updraft_remote_storage_tab_activation(ser); + } + }); + if (anychecked > 0) { + jQuery('.updraftplusmethod.none').hide(); + } + + /*To allow labelauty remote storage buttons to be used with keyboard*/ + jQuery(document).keyup(function(event) { + if(event.keyCode === 32 || event.keyCode === 13) { + if(jQuery(document.activeElement).is("input.labelauty + label")) { + var for_box = jQuery(document.activeElement).attr("for"); + if(for_box) { + jQuery("#"+for_box).change(); + } + } + } + }); + + jQuery('.updraft_servicecheckbox').change(function() { + var sclass = jQuery(this).attr('id'); + if ('updraft_servicecheckbox_' == sclass.substring(0,24)) { + var serv = sclass.substring(24); + if (null != serv && '' != serv) { + if (jQuery(this).is(':checked')) { + anychecked++; + jQuery('.remote-tab-'+serv).fadeIn(); + updraft_remote_storage_tab_activation(serv); + } else { + anychecked--; + jQuery('.remote-tab-'+serv).hide(); + //Check if this was the active tab, if yes, switch to another + if(jQuery('.remote-tab-'+serv).data('active') == true){ + updraft_remote_storage_tab_activation(jQuery('.remote-tab:visible').last().attr('name')); + } + } + } + } + + if (anychecked <= 0) { + jQuery('.updraftplusmethod.none').fadeIn(); + } else { + jQuery('.updraftplusmethod.none').hide(); + } + }); + + //Add stuff for free version + jQuery('.updraft_servicecheckbox:not(.multi)').change(function(){ + var svalue = jQuery(this).attr('value'); + + if (jQuery(this).is(':not(:checked)')) { + jQuery('.updraftplusmethod.'+svalue).hide(); + jQuery('.updraftplusmethod.none').fadeIn(); + } else { + jQuery('.updraft_servicecheckbox').not(this).prop('checked', false); + } + }); + + var servicecheckbox = jQuery('.updraft_servicecheckbox'); + if (typeof servicecheckbox.labelauty === 'function') { servicecheckbox.labelauty(); } + +} + +function updraft_remote_storage_test(method, result_callback) { + + var method_label = jQuery('#updraft-'+method+'-test').data('method_label'); + + jQuery('#updraft-'+method+'-test').html(updraftlion.testing_settings.replace('%s', method_label)); + + var data = { + action: 'updraft_ajax', + subaction: 'credentials_test', + method: method, + nonce: updraft_credentialtest_nonce + }; + + // Add the other items to the data object. The expert mode settings are for the generic SSL options. + jQuery('#updraft-navtab-settings-content .updraftplusmethod.'+method+' input[data-updraft_settings_test], #updraft-navtab-settings-content .expertmode input[data-updraft_settings_test]').each(function(index, item) { + var item_key = jQuery(item).data('updraft_settings_test'); + var input_type = jQuery(item).attr('type'); + if (!item_key) { return; } + if (!input_type) { + console.log("UpdraftPlus: settings test input item with no type found"); + console.log(item); + // A default + input_type = 'text'; + } + var value = null; + if ('checkbox' == input_type) { + value = jQuery(item).is(':checked') ? 1 : 0; + } else if ('text' == input_type || 'password' == input_type) { + value = jQuery(item).val(); + } else { + console.log("UpdraftPlus: settings test input item with unrecognised type ("+input_type+") found"); + console.log(item); + } + data[item_key] = value; + }); + // Data from any text areas or select drop-downs + jQuery('#updraft-navtab-settings-content .updraftplusmethod.'+method+' textarea[data-updraft_settings_test], #updraft-navtab-settings-content .updraftplusmethod.'+method+' select[data-updraft_settings_test]').each(function(index, item) { + var item_key = jQuery(item).data('updraft_settings_test'); + data[item_key] = jQuery(item).val(); + }); + + jQuery.post(ajaxurl, data, function(response, status) { + jQuery('#updraft-'+method+'-test').html(updraftlion.test_settings.replace('%s', method_label)); + if ('undefined' !== typeof result_callback && false != result_callback) { + result_callback = result_callback.call(this, response, status, data); + } + if ('undefined' !== typeof result_callback && false === result_callback) { + alert(updraftlion.settings_test_result.replace('%s', method_label)+' '+response); + } + }); +} + +function backupnow_whichfiles_checked(onlythesefileentities){ + jQuery('#backupnow_includefiles_moreoptions input[type="checkbox"]').each(function(index) { + if (!jQuery(this).is(':checked')) { return; } + var name = jQuery(this).attr('name'); + if (name.substring(0, 16) != 'updraft_include_') { return; } + var entity = name.substring(16); + if (onlythesefileentities != '') { onlythesefileentities += ','; } + onlythesefileentities += entity; + }); +// console.log(onlythesefileentities); + return onlythesefileentities; +} + +function updraft_deleteallselected() { + var howmany = 0; + var remote_exists = 0; + var key_all = ''; + var nonce_all = ''; + var remote_all = ''; + jQuery('#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected').each(function(index) { + howmany++; + var nonce = jQuery(this).data('nonce'); + if (nonce_all) { nonce_all += ','; } + nonce_all += nonce; + var key = jQuery(this).data('key'); + if (key_all) { key_all += ','; } + key_all += key; + var has_remote = jQuery(this).find('.updraftplus-remove').data('hasremote'); + if (remote_all) { remote_all += ','; } + remote_all += has_remote; + }); + updraft_delete(key_all, nonce_all, remote_all); +} + +function updraft_openrestorepanel(toggly) { + //jQuery('.download-backups').slideDown(); updraft_historytimertoggle(1); jQuery('html,body').animate({scrollTop: jQuery('#updraft_lastlogcontainer').offset().top},'slow'); + updraft_console_focussed_tab = 2; + updraft_historytimertoggle(toggly); + jQuery('#updraft-navtab-status-content').hide(); + jQuery('#updraft-navtab-expert-content').hide(); + jQuery('#updraft-navtab-settings-content').hide(); + jQuery('#updraft-navtab-addons-content').hide(); + jQuery('#updraft-navtab-backups-content').show(); + jQuery('#updraft-navtab-backups').addClass('nav-tab-active'); + jQuery('#updraft-navtab-expert').removeClass('nav-tab-active'); + jQuery('#updraft-navtab-settings').removeClass('nav-tab-active'); + jQuery('#updraft-navtab-status').removeClass('nav-tab-active'); + jQuery('#updraft-navtab-addons').removeClass('nav-tab-active'); +} + +function updraft_delete_old_dirs() { + //jQuery('#updraft_delete_old_dirs_pagediv').slideUp().remove(); + //updraft_iframe_modal('delete_old_dirs', updraftlion.delete_old_dirs); + return true; +} + +function updraft_initiate_restore(whichset) { + jQuery('#updraft-migrate-modal').dialog('close'); + jQuery('#updraft-navtab-backups-content .updraft_existing_backups button[data-backup_timestamp="'+whichset+'"]').click(); +} + +function updraft_restore_setoptions(entities) { + var howmany = 0; + jQuery('input[name="updraft_restore[]"]').each(function(x,y){ + var entity = jQuery(y).val(); + var epat = entity+'=([0-9,]+)'; + var eregex = new RegExp(epat); + var ematch = entities.match(eregex); + if (ematch) { + jQuery(y).removeAttr('disabled').data('howmany', ematch[1]).parent().show(); + howmany++; + if ('db' == entity) { howmany += 4.5;} + if (jQuery(y).is(':checked')) { + // This element may or may not exist. The purpose of explicitly calling show() is that Firefox, when reloading (including via forwards/backwards navigation) will remember checkbox states, but not which DOM elements were showing/hidden - which can result in some being hidden when they should be shown, and the user not seeing the options that are/are not checked. + jQuery('#updraft_restorer_'+entity+'options').show(); + } + } else { + jQuery(y).attr('disabled','disabled').parent().hide(); + } + }); + var cryptmatch = entities.match(/dbcrypted=1/); + if (cryptmatch) { + jQuery('.updraft_restore_crypteddb').show(); + } else { + jQuery('.updraft_restore_crypteddb').hide(); + } + var dmatch = entities.match(/meta_foreign=([12])/); + if (dmatch) { + jQuery('#updraft_restore_meta_foreign').val(dmatch[1]); + } else { + jQuery('#updraft_restore_meta_foreign').val('0'); + } + var height = 336+howmany*20; + jQuery('#updraft-restore-modal').dialog("option", "height", height); +} + +function updraft_backup_dialog_open() { + jQuery('#backupnow_includefiles_moreoptions').hide(); + if (updraft_settings_form_changed){ + if (window.confirm(updraftlion.unsavedsettingsbackup)){ + jQuery('#backupnow_label').val(''); + jQuery('#updraft-backupnow-modal').dialog('open'); + } + } else { + jQuery('#backupnow_label').val(''); + jQuery('#updraft-backupnow-modal').dialog('open'); + } +} + +var onlythesefileentities = backupnow_whichfiles_checked(''); +if ('' == onlythesefileentities) { + jQuery("#backupnow_includefiles_moreoptions").show(); +} else { + jQuery("#backupnow_includefiles_moreoptions").hide(); +} + +function updraft_migrate_dialog_open() { + jQuery('#updraft_migrate_modal_alt').hide(); + updraft_migrate_modal_default_buttons = {}; + updraft_migrate_modal_default_buttons[updraftlion.close] = function() { jQuery(this).dialog("close"); }; + jQuery("#updraft-migrate-modal").dialog("option", "buttons", updraft_migrate_modal_default_buttons); + jQuery('#updraft-migrate-modal').dialog('open'); + jQuery('#updraft_migrate_modal_main').show(); +} + +var updraft_restore_stage = 1; +var lastlog_lastmessage = ""; +var lastlog_lastdata = ""; +var lastlog_jobs = ""; +// var lastlog_sdata = { action: 'updraft_ajax', subaction: 'lastlog' }; +var updraft_activejobs_nextupdate = (new Date).getTime() + 1000; +// Bits: main tab displayed (1); restore dialog open (uses downloader) (2); tab not visible (4) +var updraft_page_is_visible = 1; +var updraft_console_focussed_tab = 1; + +var updraft_settings_form_changed = false; +window.onbeforeunload = function(e) { + if (updraft_settings_form_changed) return updraftlion.unsavedsettings; +} + +// N.B. This function works on both the UD settings page and elsewhere +function updraft_check_page_visibility(firstload) { + if ('hidden' == document["visibilityState"]) { + updraft_page_is_visible = 0; + } else { + updraft_page_is_visible = 1; + if (1 !== firstload) { updraft_activejobs_update(true); } + }; +} + +// See http://caniuse.com/#feat=pagevisibility for compatibility (we don't bother with prefixes) +if (typeof document.hidden !== "undefined") { + document.addEventListener('visibilitychange', function() {updraft_check_page_visibility(0);}, false); +} + +updraft_check_page_visibility(1); + +var updraft_poplog_log_nonce; +var updraft_poplog_log_pointer = 0; +var updraft_poplog_lastscroll = -1; +var updraft_last_forced_jobid = -1; +var updraft_last_forced_resumption = -1; +var updraft_last_forced_when = -1; + +var updraft_backupnow_nonce = ''; +var updraft_activejobslist_backupnownonce_only = 0; +var updraft_inpage_hasbegun = 0; + +function updraft_backupnow_inpage_go(success_callback, onlythisfileentity, extradata) { + // N.B. This function should never be called on the UpdraftPlus settings page - it is assumed we are elsewhere. So, it is safe to fake the console-focussing parameter. + updraft_console_focussed_tab = 1; + updraft_inpage_success_callback = success_callback; + var updraft_inpage_modal_buttons = {}; + jQuery('#updraft-backupnow-inpage-modal').dialog('option', 'buttons', updraft_inpage_modal_buttons); + jQuery('#updraft_inpage_prebackup').hide(); + jQuery('#updraft-backupnow-inpage-modal').dialog('open'); + jQuery('#updraft_inpage_backup').show(); + updraft_activejobslist_backupnownonce_only = 1; + updraft_inpage_hasbegun = 0; + updraft_backupnow_go(0, 0, 0, onlythisfileentity, extradata, updraftlion.automaticbackupbeforeupdate); +} + +function updraft_activejobs_update(force) { + var timenow = (new Date).getTime(); + if (false == force && timenow < updraft_activejobs_nextupdate) { return; } + updraft_activejobs_nextupdate = timenow + 5500; + var downloaders = ''; + jQuery('.ud_downloadstatus .updraftplus_downloader, #ud_downloadstatus2 .updraftplus_downloader').each(function(x,y){ + var dat = jQuery(y).data('downloaderfor'); + if (typeof dat == 'object') { + if (downloaders != '') { downloaders = downloaders + ':'; } + downloaders = downloaders + dat.base + ',' + dat.nonce + ',' + dat.what + ',' + dat.index; + } + }); + + var gdata = { + action: 'updraft_ajax', + subaction: 'activejobs_list', + nonce: updraft_credentialtest_nonce, + downloaders: downloaders + } + + try { + if (jQuery("#updraft-poplog").dialog("isOpen")) { + gdata.log_fetch = 1; + gdata.log_nonce = updraft_poplog_log_nonce; + gdata.log_pointer = updraft_poplog_log_pointer + } + } catch (err) { + console.log(err); + } + + if (updraft_activejobslist_backupnownonce_only && typeof updraft_backupnow_nonce !== 'undefined' && updraft_backupnow_nonce != '') { + gdata.thisjobonly = updraft_backupnow_nonce; + } + + jQuery.get(ajaxurl, gdata, function(response) { + try { + resp = jQuery.parseJSON(response); + + //if (repeat) { setTimeout(function(){updraft_activejobs_update(true);}, nexttimer);} + if (resp.hasOwnProperty('l')) { + if (resp.l) { + jQuery('#updraft_lastlogmessagerow').show(); + jQuery('#updraft_lastlogcontainer').html(resp.l); + } else { + jQuery('#updraft_lastlogmessagerow').hide(); + jQuery('#updraft_lastlogcontainer').html('('+updraftlion.nothing_yet_logged+')'); + } + } + + var lastactivity = -1; + + jQuery('#updraft_activejobs').html(resp.j); + jQuery('#updraft_activejobs .updraft_jobtimings').each(function(ind, element) { + var $el = jQuery(element); + // lastactivity, nextresumption, nextresumptionafter + if ($el.data('lastactivity') && $el.data('jobid')) { + var jobid = $el.data('jobid'); + var new_lastactivity = $el.data('lastactivity'); + if (lastactivity == -1 || new_lastactivity < lastactivity) { lastactivity = new_lastactivity; } + var nextresumptionafter = $el.data('nextresumptionafter'); + var nextresumption = $el.data('nextresumption'); +// console.log("Job ID: "+jobid+", Next resumption: "+nextresumption+", Next resumption after: "+nextresumptionafter+", Last activity: "+new_lastactivity); + // Milliseconds + timenow = (new Date).getTime(); + if (new_lastactivity > 50 && nextresumption >0 && nextresumptionafter < -30 && timenow > updraft_last_forced_when+100000 && (updraft_last_forced_jobid != jobid || nextresumption != updraft_last_forced_resumption)) { + updraft_last_forced_resumption = nextresumption; + updraft_last_forced_jobid = jobid; + updraft_last_forced_when = timenow; + console.log('UpdraftPlus: force resumption: job_id='+jobid+', resumption='+nextresumption); + jQuery.post(ajaxurl, { + action: 'updraft_ajax', + subaction: 'forcescheduledresumption', + nonce: updraft_credentialtest_nonce, + resumption: nextresumption, + job_id: jobid + }, function(response) { + console.log(response); + }); + } + } + }); + + timenow = (new Date).getTime(); + updraft_activejobs_nextupdate = timenow + 180000; + // More rapid updates needed if a) we are on the main console, or b) a downloader is open (which can only happen on the restore console) + if (updraft_page_is_visible == 1 && (1 == updraft_console_focussed_tab || (2 == updraft_console_focussed_tab && downloaders != ''))) { + if (lastactivity > -1) { + if (lastactivity < 5) { + updraft_activejobs_nextupdate = timenow + 1300; + } else { + updraft_activejobs_nextupdate = timenow + 4500; + } + } else if (lastlog_lastdata == response) { + // This condition is pretty hard to hit + updraft_activejobs_nextupdate = timenow + 4500; + } else { + updraft_activejobs_nextupdate = timenow + 1300; + } + } + + lastlog_lastdata = response; + + if (resp.j != null && resp.j != '') { + jQuery('#updraft_activejobsrow').show(); + + if (gdata.hasOwnProperty('thisjobonly') && !updraft_inpage_hasbegun && jQuery('#updraft-jobid-'+gdata.thisjobonly).length) { + updraft_inpage_hasbegun = 1; + console.log('UpdraftPlus: the start of the requested backup job has been detected'); + } else if (!updraft_inpage_hasbegun && updraft_activejobslist_backupnownonce_only && jQuery('.updraft_jobtimings.isautobackup').length) { + autobackup_nonce = jQuery('.updraft_jobtimings.isautobackup').first().data('jobid'); + if (autobackup_nonce) { + updraft_inpage_hasbegun = 1; + updraft_backupnow_nonce = autobackup_nonce; + gdata.thisjobonly = autobackup_nonce; + console.log('UpdraftPlus: the start of the requested backup job has been detected; id: '+autobackup_nonce); + } + } else if (updraft_inpage_hasbegun == 1 && jQuery('#updraft-jobid-'+gdata.thisjobonly+'.updraft_finished').length) { + // This block used to be a straightforward 'if'... switching to 'else if' ensures that it cannot fire on the same run. (If the backup hasn't started, it may be detected as finished before to it began, on an overloaded server if there's a race). + // Don't reset to 0 - this will cause the 'began' event to be detected again + updraft_inpage_hasbegun = 2; +// var updraft_inpage_modal_buttons = {}; +// updraft_inpage_modal_buttons[updraftlion.close] = function() { +// jQuery(this).dialog("close"); +// }; +// jQuery('#updraft-backupnow-inpage-modal').dialog('option', 'buttons', updraft_inpage_modal_buttons); + console.log('UpdraftPlus: the end of the requested backup job has been detected'); + if (typeof updraft_inpage_success_callback !== 'undefined' && updraft_inpage_success_callback != '') { + // Move on to next page + updraft_inpage_success_callback.call(false); + } else { + jQuery('#updraft-backupnow-inpage-modal').dialog('close'); + } + } + if ('' == lastlog_jobs) { + setTimeout(function(){jQuery('#updraft_backup_started').slideUp();}, 3500); + } + } else { + if (!jQuery('#updraft_activejobsrow').is(':hidden')) { + // Backup has now apparently finished - hide the row. If using this for detecting a finished job, be aware that it may never have shown in the first place - so you'll need more than this. + if (typeof lastbackup_laststatus != 'undefined') { updraft_showlastbackup(); } + jQuery('#updraft_activejobsrow').hide(); + } + } + lastlog_jobs = resp.j; + + // Download status + if (resp.ds != null && resp.ds != '') { + jQuery(resp.ds).each(function(x, dstatus){ + if (dstatus.base != '') { + updraft_downloader_status_update(dstatus.base, dstatus.timestamp, dstatus.what, dstatus.findex, dstatus, response); + } + }); + } + + if (resp.u != null && resp.u != '' && jQuery("#updraft-poplog").dialog("isOpen")) { + var log_append_array = resp.u; + if (log_append_array.nonce == updraft_poplog_log_nonce) { + updraft_poplog_log_pointer = log_append_array.pointer; + if (log_append_array.html != null && log_append_array.html != '') { + var oldscroll = jQuery('#updraft-poplog').scrollTop(); + jQuery('#updraft-poplog-content').append(log_append_array.html); + if (updraft_poplog_lastscroll == oldscroll || updraft_poplog_lastscroll == -1) { + jQuery('#updraft-poplog').scrollTop(jQuery('#updraft-poplog-content').prop("scrollHeight")); + updraft_poplog_lastscroll = jQuery('#updraft-poplog').scrollTop(); + } + } + } + } + + } catch(err) { + console.log(updraftlion.unexpectedresponse+' '+response); + console.log(err); + } + }); +} + +function updraft_popuplog(backup_nonce) { + + popuplog_sdata = { + action: 'updraft_ajax', + subaction: 'poplog', + nonce: updraft_credentialtest_nonce, + backup_nonce: backup_nonce + }; + + jQuery('#updraft-poplog').dialog("option", "title", 'log.'+backup_nonce+'.txt'); + jQuery('#updraft-poplog-content').html('log.'+backup_nonce+'.txt ...'); + jQuery('#updraft-poplog').dialog("open"); + + jQuery.get(ajaxurl, popuplog_sdata, function(response){ + + var resp = jQuery.parseJSON(response); + + updraft_poplog_log_pointer = resp.pointer; + updraft_poplog_log_nonce = resp.nonce; + + var download_url = '?page=updraftplus&action=downloadlog&force_download=1&updraftplus_backup_nonce='+resp.nonce; + + jQuery('#updraft-poplog-content').html(resp.html); + + var log_popup_buttons = {}; + log_popup_buttons[updraftlion.downloadlogfile] = function() { window.location.href = download_url; }; + log_popup_buttons[updraftlion.close] = function() { jQuery(this).dialog("close"); }; + + //Set the dialog buttons: Download log, Close log + jQuery('#updraft-poplog').dialog("option", "buttons", log_popup_buttons); + //[ + //{ text: "Download", click: function() { window.location.href = download_url } }, + //{ text: "Close", click: function(){ jQuery( this ).dialog("close");} } + //] + jQuery('#updraft-poplog').dialog("option", "title", 'log.'+resp.nonce+'.txt'); + + updraft_poplog_lastscroll = -1; + + }); +} + +// function updraft_showlastlog(repeat){ +// lastlog_sdata.nonce = updraft_credentialtest_nonce; +// jQuery.get(ajaxurl, lastlog_sdata, function(response) { +// nexttimer = 1500; +// if (lastlog_lastmessage == response) { nexttimer = 4500; } +// if (repeat) { setTimeout(function(){updraft_showlastlog(true);}, nexttimer);} +// jQuery('#updraft_lastlogcontainer').html(response); +// lastlog_lastmessage = response; +// }); +// } + +var lastbackup_sdata = { + action: 'updraft_ajax', + subaction: 'lastbackup', +}; + +function updraft_showlastbackup(){ + lastbackup_sdata.nonce = updraft_credentialtest_nonce; + + jQuery.get(ajaxurl, lastbackup_sdata, function(response) { + if (lastbackup_laststatus == response) { + setTimeout(function(){updraft_showlastbackup();}, 7000); + } else { + jQuery('#updraft_last_backup').html(response); + } + lastbackup_laststatus = response; + }); +} + +var updraft_historytimer = 0; +var calculated_diskspace = 0; +var updraft_historytimer_notbefore = 0; +var updraft_history_lastchecksum = false; + +function updraft_historytimertoggle(forceon) { + if (!updraft_historytimer || forceon == 1) { + updraft_updatehistory(0, 0); + updraft_historytimer = setInterval(function(){updraft_updatehistory(0, 0);}, 30000); + if (!calculated_diskspace) { + updraftplus_diskspace(); + calculated_diskspace=1; + } + } else { + clearTimeout(updraft_historytimer); + updraft_historytimer = 0; + } +} + +function updraft_updatehistory(rescan, remotescan) { + + var unixtime = Math.round(new Date().getTime() / 1000); + + if (1 == rescan || 1 == remotescan) { + updraft_historytimer_notbefore = unixtime + 30; + } else { + if (unixtime < updraft_historytimer_notbefore) { + console.log("Update history skipped: "+unixtime.toString()+" < "+updraft_historytimer_notbefore.toString()); + return; + } + } + + if (rescan == 1) { + if (remotescan == 1) { + updraft_history_lastchecksum = false; + jQuery('#updraft-navtab-backups-content .updraft_existing_backups').html('

        '+updraftlion.rescanningremote+'

        '); + } else { + updraft_history_lastchecksum = false; + jQuery('#updraft-navtab-backups-content .updraft_existing_backups').html('

        '+updraftlion.rescanning+'

        '); + } + } + + jQuery.get(ajaxurl, { action: 'updraft_ajax', subaction: 'historystatus', nonce: updraft_credentialtest_nonce, rescan: rescan, remotescan: remotescan }, function(response) { + try { + resp = jQuery.parseJSON(response); + + if (resp.hasOwnProperty('logs_exist') && resp.logs_exist) { + // Show the "most recently modified log" link, in case it was previously hidden (if there were no logs until now) + jQuery('#updraft_lastlogmessagerow .updraft-log-link').show(); + } + + if (resp.hasOwnProperty('migrate_modal') && resp.migrate_modal) { + jQuery('#updraft_migrate_modal_main').replaceWith(resp.migrate_modal); + } + + if (resp.n != null) { jQuery('#updraft-navtab-backups').html(resp.n); } + if (resp.t != null) { + if (resp.cksum != null) { + if (resp.cksum == updraft_history_lastchecksum) { + // Avoid unnecessarily refreshing the HTML if the data is the same. This helps avoid resetting the DOM (annoying when debugging), and keeps user row selections. + return; + } + updraft_history_lastchecksum = resp.cksum; + } + jQuery('#updraft-navtab-backups-content .updraft_existing_backups').html(resp.t); + if (resp.data) { + console.log(resp.data); + } + } + } catch(err) { + console.log(updraftlion.unexpectedresponse+' '+response); + console.log(err); + } + }); +} + +var updraft_interval_week_val = false; +var updraft_interval_month_val = false; + +function updraft_intervals_monthly_or_not(selector_id, now_showing) { + var selector = '#updraft-navtab-settings-content #'+selector_id; + var current_length = jQuery(selector+' option').length; + var is_monthly = ('monthly' == now_showing) ? true : false; + var existing_is_monthly = false; + if (current_length > 10) { existing_is_monthly = true; } + if (!is_monthly && !existing_is_monthly) { + return; + } + if (is_monthly && existing_is_monthly) { + if ('monthly' == now_showing) { + // existing_is_monthly does not mean the same as now_showing=='monthly'. existing_is_monthly refers to the drop-down, not whether the drop-down is being displayed. We may need to add these words back. + jQuery('.updraft_monthly_extra_words_'+selector_id).remove(); + jQuery(selector).before(''+updraftlion.day+' ').after(' '+updraftlion.inthemonth+' '); + } + return; + } + jQuery('.updraft_monthly_extra_words_'+selector_id).remove(); + if (is_monthly) { + // Save the old value + updraft_interval_week_val = jQuery(selector+' option:selected').val(); + jQuery(selector).html(updraftlion.mdayselector).before(''+updraftlion.day+' ').after(' '+updraftlion.inthemonth+' '); + var select_mday = (updraft_interval_month_val === false) ? 1 : updraft_interval_month_val; + // Convert from day of the month (ordinal) to option index (starts at 0) + select_mday = select_mday - 1; + jQuery(selector+" option:eq("+select_mday+")").prop('selected', true); + } else { + // Save the old value + updraft_interval_month_val = jQuery(selector+' option:selected').val(); + jQuery(selector).html(updraftlion.dayselector); + var select_day = (updraft_interval_week_val === false) ? 1 : updraft_interval_week_val; + jQuery(selector+" option:eq("+select_day+")").prop('selected', true); + } +} + +function updraft_check_same_times() { + var dbmanual = 0; + var file_interval = jQuery('#updraft-navtab-settings-content .updraft_interval').val(); + if (file_interval == 'manual') { +// jQuery('#updraft_files_timings').css('opacity', '0.25'); + jQuery('#updraft-navtab-settings-content .updraft_files_timings').hide(); + } else { +// jQuery('#updraft_files_timings').css('opacity', 1); + jQuery('#updraft-navtab-settings-content .updraft_files_timings').show(); + } + + if ('weekly' == file_interval || 'fortnightly' == file_interval || 'monthly' == file_interval) { + updraft_intervals_monthly_or_not('updraft_startday_files', file_interval); + jQuery('#updraft-navtab-settings-content #updraft_startday_files').show(); + } else { + jQuery('.updraft_monthly_extra_words_updraft_startday_files').remove(); + jQuery('#updraft-navtab-settings-content #updraft_startday_files').hide(); + } + + var db_interval = jQuery('#updraft-navtab-settings-content .updraft_interval_database').val(); + if (db_interval == 'manual') { + dbmanual = 1; +// jQuery('#updraft_db_timings').css('opacity', '0.25'); + jQuery('#updraft-navtab-settings-content .updraft_db_timings').hide(); + } + + if ('weekly' == db_interval || 'fortnightly' == db_interval || 'monthly' == db_interval) { + updraft_intervals_monthly_or_not('updraft_startday_db', db_interval); + jQuery('#updraft-navtab-settings-content #updraft_startday_db').show(); + } else { + jQuery('.updraft_monthly_extra_words_updraft_startday_db').remove(); + jQuery('#updraft-navtab-settings-content #updraft_startday_db').hide(); + } + + if (db_interval == file_interval) { +// jQuery('#updraft_db_timings').css('opacity','0.25'); + jQuery('#updraft-navtab-settings-content .updraft_db_timings').hide(); +// jQuery('#updraft_same_schedules_message').show(); + if (0 == dbmanual) { + jQuery('#updraft-navtab-settings-content .updraft_same_schedules_message').show(); + } else { + jQuery('#updraft-navtab-settings-content .updraft_same_schedules_message').hide(); + } + } else { + jQuery('#updraft-navtab-settings-content .updraft_same_schedules_message').hide(); + if (0 == dbmanual) { +// jQuery('#updraft_db_timings').css('opacity', '1'); + jQuery('#updraft-navtab-settings-content .updraft_db_timings').show(); + } + } +} + +// Visit the site in the background every 3.5 minutes - ensures that backups can progress if you've got the UD settings page open +setInterval(function() {jQuery.get(updraft_siteurl+'/wp-cron.php');}, 210000); + +function updraft_activejobs_delete(jobid) { + jQuery.get(ajaxurl, { action: 'updraft_ajax', subaction: 'activejobs_delete', jobid: jobid, nonce: updraft_credentialtest_nonce }, function(response) { + try { + var resp = jQuery.parseJSON(response); + if (resp.ok == 'Y') { + jQuery('#updraft-jobid-'+jobid).html(resp.m).fadeOut('slow').remove(); + } else if (resp.ok == 'N') { + alert(resp.m); + } else { + alert(updraftlion.unexpectedresponse+' '+response); + } + } catch(err) { + console.log(err); + alert(updraftlion.unexpectedresponse+' '+response); + } + }); +} + +function updraftplus_diskspace_entity(key) { + jQuery('#updraft_diskspaceused_'+key).html(''+updraftlion.calculating+''); + jQuery.get(ajaxurl, { action: 'updraft_ajax', subaction: 'diskspaceused', entity: key, nonce: updraft_credentialtest_nonce }, function(response) { + jQuery('#updraft_diskspaceused_'+key).html(response); + }); +} + +function updraft_iframe_modal(getwhat, title) { + var width=780; + var height=500; + jQuery('#updraft-iframe-modal-innards').html(''); + jQuery('#updraft-iframe-modal').dialog('option', 'title', title).dialog('option', 'width', width).dialog('option', 'height', height).dialog('open'); +} + +function updraft_html_modal(showwhat, title, width, height) { + jQuery('#updraft-iframe-modal-innards').html(showwhat); + var updraft_html_modal_buttons = {}; + if (width < 450) { + updraft_html_modal_buttons[updraftlion.close] = function() { jQuery(this).dialog("close"); }; + } + jQuery('#updraft-iframe-modal').dialog('option', 'title', title).dialog('option', 'width', width).dialog('option', 'height', height).dialog('option', 'buttons', updraft_html_modal_buttons).dialog('open'); +} + +function updraftplus_diskspace() { + jQuery('#updraft-navtab-backups-content .updraft_diskspaceused').html(''+updraftlion.calculating+''); + jQuery.get(ajaxurl, { action: 'updraft_ajax', entity: 'updraft', subaction: 'diskspaceused', nonce: updraft_credentialtest_nonce }, function(response) { + jQuery('#updraft-navtab-backups-content .updraft_diskspaceused').html(response); + }); +} +var lastlog_lastmessage = ""; +function updraftplus_deletefromserver(timestamp, type, findex) { + if (!findex) findex=0; + var pdata = { + action: 'updraft_download_backup', + stage: 'delete', + timestamp: timestamp, + type: type, + findex: findex, + _wpnonce: updraft_download_nonce + }; + jQuery.post(ajaxurl, pdata, function(response) { + // Legacy - a simple string (since 1.11.24 - Feb 2016) + if (response != 'deleted') { + try { + var resp = jQuery.parseJSON(response); + if (!resp.hasOwnProperty('result') || resp.result != 'deleted') { + alert(updraftlion.delete_response_not_understood+' : '+response); + console.log(response); + } + } catch (e) { + alert(updraftlion.delete_response_not_understood+' : '+response); + console.log(e); + console.log(response); + } + } + }); +} +function updraftplus_downloadstage2(timestamp, type, findex) { + location.href=ajaxurl+'?_wpnonce='+updraft_download_nonce+'×tamp='+timestamp+'&type='+type+'&stage=2&findex='+findex+'&action=updraft_download_backup'; +} + +function updraft_downloader(base, backup_timestamp, what, whicharea, set_contents, prettydate, async) { + + if (typeof set_contents !== "string") set_contents = set_contents.toString(); + + var set_contents = set_contents.split(','); + + for (var i=0; i'+updraftlion.download+' '+what+itext+' ('+prdate+'):
        '+updraftlion.begunlooking+'

        '); + jQuery(stid_selector).data('downloaderfor', { base: base, nonce: backup_timestamp, what: what, index: i }); + setTimeout(function() {updraft_activejobs_update(true);}, 1500); + } + jQuery(stid_selector).data('lasttimebegan', (new Date).getTime()); + + // Now send the actual request to kick it all off + async = async ? true : false; + + // Old-style, from when it was a form + // var data = jQuery('#updraft-navtab-backups-content .uddownloadform_'+what+'_'+backup_timestamp+'_'+set_contents[i]).serialize(); + + var data = { + _wpnonce: jQuery('#updraft-navtab-backups-content .uddownloadform_'+what+'_'+backup_timestamp+'_'+set_contents[i]).data('wp_nonce').toString(), + action: 'updraft_download_backup', + type: what, + timestamp: backup_timestamp, + findex: set_contents[i] + }; + + jQuery.ajax({ + url: ajaxurl, + timeout: 10000, + type: 'POST', + async: async, + data: data, + }); + } + // We don't want the form to submit as that replaces the document + return false; +} + +// Catch HTTP errors if the download status check returns them +jQuery(document).ajaxError(function( event, jqxhr, settings, exception ) { + if (exception == null || exception == '') return; + if (jqxhr.responseText == null || jqxhr.responseText == '') return; + console.log("Error caught by UpdraftPlus ajaxError handler (follows) for "+settings.url); + console.log(exception); + if (settings.url.search(ajaxurl) == 0) { + // TODO subaction=downloadstatus is no longer used. This should be adjusted to the current set-up. + if (settings.url.search('subaction=downloadstatus') >= 0) { + var timestamp = settings.url.match(/timestamp=\d+/); + var type = settings.url.match(/type=[a-z]+/); + var findex = settings.url.match(/findex=\d+/); + var base = settings.url.match(/base=[a-z_]+/); + findex = (findex instanceof Array) ? parseInt(findex[0].substr(7)) : 0; + type = (type instanceof Array) ? type[0].substr(5) : ''; + base = (base instanceof Array) ? base[0].substr(5) : ''; + timestamp = (timestamp instanceof Array) ? parseInt(timestamp[0].substr(10)) : 0; + if ('' != base && '' != type && timestamp >0) { + var stid = base+timestamp+'_'+type+'_'+findex; + jQuery('.'+stid+' .raw').html(''+updraftlion.error+' '+updraftlion.servererrorcode); + } + } else if (settings.url.search('subaction=restore_alldownloaded') >= 0) { + //var timestamp = settings.url.match(/timestamp=\d+/); + jQuery('#updraft-restore-modal-stage2a').append('
        '+updraftlion.error+' '+updraftlion.servererrorcode+': '+exception); + } + } +}); + +function updraft_restorer_checkstage2(doalert) { + // How many left? + var stilldownloading = jQuery('#ud_downloadstatus2 .file').length; + if (stilldownloading > 0) { + if (doalert) { alert(updraftlion.stilldownloading); } + return; + } + // Allow pressing 'Restore' to proceed + jQuery('#updraft-restore-modal-stage2a').html(updraftlion.processing); + jQuery.post(ajaxurl+'?action=updraft_ajax&subaction=restore_alldownloaded', { + nonce: updraft_credentialtest_nonce, + timestamp: jQuery('#updraft_restore_timestamp').val(), + restoreopts: jQuery('#updraft_restore_form').serialize() + }, function(data) { + var info = null; + jQuery('#updraft_restorer_restore_options').val(''); + try { + var resp = jQuery.parseJSON(data); + if (null == resp) { + jQuery('#updraft-restore-modal-stage2a').html(updraftlion.emptyresponse); + return; + } + var report = resp.m; + if (resp.w != '') { + report = report + "

        " + updraftlion.warnings +'
        ' + resp.w + "

        "; + } + if (resp.e != '') { + report = report + "

        " + updraftlion.errors+'
        ' + resp.e + "

        "; + } else { + updraft_restore_stage = 3; + } + if (resp.hasOwnProperty('i')) { + // Store the information passed back from the backup scan + try { + info = jQuery.parseJSON(resp.i); +// if (info.hasOwnProperty('multisite') && info.multisite && info.hasOwnProperty('same_url') && info.same_url) { + if (info.hasOwnProperty('addui')) { + console.log("Further UI options are being displayed"); + var addui = info.addui; + report += '
        '+addui+'
        '; + if (typeof JSON == 'object' && typeof JSON.stringify == 'function') { + // If possible, remove from the stored info, to prevent passing back potentially large amounts of unwanted data + delete info.addui; + resp.i = JSON.stringify(info); + } + } + } catch(err) { + console.log(err); + console.log(resp); + } + jQuery('#updraft_restorer_backup_info').val(resp.i); + } else { + jQuery('#updraft_restorer_backup_info').val(); + } + jQuery('#updraft-restore-modal-stage2a').html(report); + if (jQuery('#updraft-restore-modal-stage2a .updraft_select2').length > 0) { + jQuery('#updraft-restore-modal-stage2a .updraft_select2').select2(); + } + } catch(err) { + console.log(data); + console.log(err); + jQuery('#updraft-restore-modal-stage2a').text(updraftlion.jsonnotunderstood+' '+updraftlion.errordata+": "+data).html(); + } + }); +} +// var dlstatus_sdata = { +// action: 'updraft_ajax', +// subaction: 'downloadstatus', +// }; +// dlstatus_lastlog = ''; +function updraft_downloader_status(base, nonce, what, findex) { +// Short-circuit +return; +// Old code +// if (findex == null || findex == 0 || findex == '') { findex='0'; } +// // Get the DOM id of the status div (add _st for the id of the file itself) +// var stid = base+nonce+'_'+what+'_'+findex; +// if (!jQuery('#'+stid).length) { return; } +// dlstatus_sdata.nonce=updraft_credentialtest_nonce; +// dlstatus_sdata.timestamp = nonce; +// dlstatus_sdata.type = what; +// dlstatus_sdata.findex = findex; +// // This goes in because we want to read it back on any ajaxError event +// dlstatus_sdata.base = base; +// jQuery.get(ajaxurl, dlstatus_sdata, function(response) { +// nexttimer = 1250; +// if (dlstatus_lastlog == response) { nexttimer = 3000; } +// try { +// var resp = jQuery.parseJSON(response); +// var cancel_repeat = updraft_downloader_status_update(base, nonce, what, findex, resp, response); +// if (cancel_repeat == 0) { +// (function(base, nonce, what, findex) { +// setTimeout(function(){updraft_downloader_status(base, nonce, what, findex)}, nexttimer); +// })(base, nonce, what, findex); +// } +// } catch(err) { +// alert(updraftlion.notunderstood+' '+updraftlion.error+' '+err); +// } +// }); +} + +function updraft_downloader_status_update(base, backup_timestamp, what, findex, resp, response) { + var stid = base+backup_timestamp+'_'+what+'_'+findex; + var stid_selector = '.'+stid; + var cancel_repeat = 0; + if (resp.e != null) { + jQuery(stid_selector+' .raw').html(''+updraftlion.error+' '+resp.e); + console.log(resp); + } else if (resp.p != null) { + jQuery(stid_selector+'_st .dlfileprogress').width(resp.p+'%'); + //jQuery(stid_selector+'_st .dlsofar').html(Math.round(resp.s/1024)); + //jQuery(stid_selector+'_st .dlsize').html(Math.round(resp.t/1024)); + + // Is a restart appropriate? + // resp.a, if set, indicates that a) the download is incomplete and b) the value is the number of seconds since the file was last modified... + if (resp.a != null && resp.a > 0) { + var timenow = (new Date).getTime(); + var lasttimebegan = jQuery(stid_selector).data('lasttimebegan'); + // Remember that this is in milliseconds + var sincelastrestart = timenow - lasttimebegan; + if (resp.a > 90 && sincelastrestart > 60000) { + console.log(backup_timestamp+" "+what+" "+findex+": restarting download: file_age="+resp.a+", sincelastrestart_ms="+sincelastrestart); + jQuery(stid_selector).data('lasttimebegan', (new Date).getTime()); + + var $original_button = jQuery('#updraft-navtab-backups-content .uddownloadform_'+what+'_'+backup_timestamp+'_'+findex); + + var data = { + _wpnonce: $original_button.data('wp_nonce').toString(), + action: 'updraft_download_backup', + type: what, + timestamp: backup_timestamp, + findex: findex + }; + + jQuery.ajax({ + url: ajaxurl, + timeout: 10000, + type: 'POST', + data: data +// data: jQuery('#updraft-navtab-backups-content .uddownloadform_'+what+'_'+backup_timestamp+'_'+findex).serialize() + }); + jQuery(stid_selector).data('lasttimebegan', (new Date).getTime()); + } + } + + if (resp.m != null) { + if (resp.p >=100 && base == 'udrestoredlstatus_') { + jQuery(stid_selector+' .raw').html(resp.m); + jQuery(stid_selector).fadeOut('slow', function() { jQuery(this).remove(); updraft_restorer_checkstage2(0);}); + } else if (resp.p < 100 || base != 'uddlstatus_') { + jQuery(stid_selector+' .raw').html(resp.m); + } else { + jQuery(stid_selector+' .raw').html(updraftlion.fileready+' '+ updraftlion.youshould+' '+updraftlion.andthen+' '); + } + } +// dlstatus_lastlog = response; + } else if (resp.m != null) { + jQuery(stid_selector+' .raw').html(resp.m); + } else { + jQuery(stid_selector+' .raw').html(updraftlion.jsonnotunderstood+' ('+response+')'); + cancel_repeat = 1; + } + return cancel_repeat; +} + +function updraft_backupnow_go(backupnow_nodb, backupnow_nofiles, backupnow_nocloud, onlythesefileentities, extradata, label) { + + jQuery('#updraft_backup_started').html(''+updraftlion.requeststart+'').slideDown(''); + setTimeout(function() {jQuery('#updraft_backup_started').fadeOut('slow');}, 75000); + + var params = { + action: 'updraft_ajax', + subaction: 'backupnow', + nonce: updraft_credentialtest_nonce, + backupnow_nodb: backupnow_nodb, + backupnow_nofiles: backupnow_nofiles, + backupnow_nocloud: backupnow_nocloud, + backupnow_label: label, + extradata: extradata + }; + + if ('' != onlythesefileentities) { + params.onlythisfileentity = onlythesefileentities; + } + + jQuery.post(ajaxurl, params, function(response) { + try { + resp = jQuery.parseJSON(response); + jQuery('#updraft_backup_started').html(resp.m); + if (resp.hasOwnProperty('nonce')) { + // Can't return it from this context + updraft_backupnow_nonce = resp.nonce; + console.log("UpdraftPlus: ID of started job: "+updraft_backupnow_nonce); + } + setTimeout(function() {updraft_activejobs_update(true);}, 500); + } catch (err) { + console.log(err); + console.log(response); + } + }); +} + +jQuery(document).ready(function($){ + + //Advanced settings new menu button listeners + $('.expertmode .advanced_settings_container .advanced_tools_button').click(function() { + advanced_tool_hide($(this).attr("id")); + }); + + function advanced_tool_hide(show_tool) { + + $('.expertmode .advanced_settings_container .advanced_tools:not(".'+show_tool+'")').hide(); + $('.expertmode .advanced_settings_container .advanced_tools.'+show_tool).fadeIn('slow'); + + $('.expertmode .advanced_settings_container .advanced_tools_button:not(#'+show_tool+')').removeClass('active'); + $('.expertmode .advanced_settings_container .advanced_tools_button#'+show_tool).addClass('active'); + + } + // https://github.com/select2/select2/issues/1246#issuecomment-71710835 + if (jQuery.ui && jQuery.ui.dialog && jQuery.ui.dialog.prototype._allowInteraction) { + var ui_dialog_interaction = jQuery.ui.dialog.prototype._allowInteraction; + jQuery.ui.dialog.prototype._allowInteraction = function(e) { + if (jQuery(e.target).closest('.select2-dropdown').length) return true; + return ui_dialog_interaction.apply(this, arguments); + }; + } + + $('#updraftcentral_keycreate_altmethod_moreinfo_get').click(function(e) { + e.preventDefault(); + $(this).remove(); + $('#updraftcentral_keycreate_altmethod_moreinfo').slideDown(); + }); + + // Update WebDAV URL as user edits + $(".updraft_webdav_settings").on("change keyup paste", function(){ + + var updraft_webdav_settings = []; + $('.updraft_webdav_settings').each(function(index, item) { + + var id = $(item).attr('id'); + + if (id && 'updraft_webdav_settings_' == id.substring(0, 24)) { + var which_one = id.substring(24); + updraft_webdav_settings[which_one] = this.value; + } + }); + + var updraft_webdav_url = ""; + var host = "@"; + var slash = "/"; + var colon = ":"; + var colon_port = ":"; + + if (updraft_webdav_settings['host'].indexOf("@") >= 0 || updraft_webdav_settings['host'] === "" ) { + host = ""; + } + if (updraft_webdav_settings['host'].indexOf("/") >= 0 ) { + $('#updraft_webdav_host_error').show(); + } else { + $('#updraft_webdav_host_error').hide(); + } + + if (updraft_webdav_settings['path'].indexOf("/") == 0 || updraft_webdav_settings['path'] === "" ) { + slash = ""; + } + + if (updraft_webdav_settings['user'] === "" || updraft_webdav_settings['pass'] === "" ) { + colon = ""; + } + + if (updraft_webdav_settings['host'] === "" || updraft_webdav_settings['port'] === "") { + colon_port = ""; + } + + updraft_webdav_url = updraft_webdav_settings['webdav'] + updraft_webdav_settings['user'] + colon + updraft_webdav_settings['pass'] + host +encodeURIComponent(updraft_webdav_settings['host']) + colon_port + updraft_webdav_settings['port'] + slash + updraft_webdav_settings['path']; + + $('#updraft_webdav_settings_url').val(updraft_webdav_url); + }); + + $('#updraft-navtab-backups-content').on('click', '.updraft_existing_backups .updraft_existing_backups_row', function(e) { + if (! e.ctrlKey && ! e.metaKey) return; + $(this).toggleClass('backuprowselected'); + if ($('#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected').length >0) { + $('#ud_massactions').show(); + } else { + $('#ud_massactions').hide(); + } + }); + + jQuery('#updraft-navtab-settings-content .updraftplusmethod').on('click', 'button.updraft-test-button', function() { + var method = jQuery(this).data('method'); + updraft_remote_storage_test(method, function(response, status, data) { + + if ('sftp' != method) { return false; } + + if (data.hasOwnProperty('scp') && data.scp) { + alert(updraftlion.settings_test_result.replace('%s', 'SCP')+' '+response); + } else { + alert(updraftlion.settings_test_result.replace('%s', 'SFTP')+' '+response); + } + + return true; + + }); + }); + + $('#updraft-navtab-settings-content select.updraft_interval, #updraft-navtab-settings-content select.updraft_interval_database').change(function() { + updraft_check_same_times(); + }); + + $('#backupnow_includefiles_showmoreoptions').click(function(e) { + e.preventDefault(); + $('#backupnow_includefiles_moreoptions').toggle(); + }); + + $('#updraft-navtab-backups-content a.updraft_diskspaceused_update').click(function(e) { + e.preventDefault(); + updraftplus_diskspace(); + }); + + $('#updraft-navtab-backups-content a.updraft_uploader_toggle').click(function(e) { + e.preventDefault(); + $('#updraft-plupload-modal').slideToggle(); + }); + + $('#updraft-navtab-backups-content a.updraft_rescan_local').click(function(e) { + e.preventDefault(); + updraft_updatehistory(1, 0); + }); + + $('#updraft-navtab-backups-content a.updraft_rescan_remote').click(function(e) { + e.preventDefault(); + updraft_updatehistory(1, 1); + }); + + function updraftcentral_keys_setupform(on_page_load) { + var is_other = jQuery('#updraftcentral_mothership_other').is(':checked') ? true : false; + if (is_other) { + jQuery('#updraftcentral_keycreate_mothership').prop('disabled', false); + if (on_page_load) { + jQuery('#updraftcentral_keycreate_mothership_firewalled_container').show(); + } else { + jQuery('#updraftcentral_keycreate_mothership_firewalled_container').slideDown(); + jQuery('#updraftcentral_keycreate_mothership').focus(); + } + } else { + jQuery('#updraftcentral_keycreate_mothership').prop('disabled', true); + } + } + + jQuery('#updraftcentral_keys').on('change', 'input[type="radio"]', function() { + updraftcentral_keys_setupform(false); + }); + // Initial setup (for browsers, e.g. Firefox, that remember form selection state but not DOM state, which can leave an inconsistent state) + updraftcentral_keys_setupform(true); + + jQuery('#updraftcentral_keys').on('click', '#updraftcentral_view_log', function(e) { + e.preventDefault(); + jQuery('#updraftcentral_view_log_container').block({ message: '

        '+updraftlion.fetching+'
        '}); + try { + jQuery.post(ajaxurl, { + action: 'updraft_ajax', + subaction: 'updraftcentral_get_log', + nonce: updraft_credentialtest_nonce + }, function(response) { + jQuery('#updraftcentral_view_log_container').unblock(); + try { + resp = jQuery.parseJSON(response); + if (resp.hasOwnProperty('log_contents')) { + jQuery('#updraftcentral_view_log_contents').html('
        '+resp.log_contents+'
        '); + } else { + console.log(resp); + } + } catch (err) { + alert(updraftlion.unexpectedresponse+' '+response); + console.log(err); + } + }); + } catch (err) { + jQuery('#updraft_central_key').html(); + console.log(err); + } + }); + + // UpdraftCentral + jQuery('#updraftcentral_keys').on('click', '#updraftcentral_keycreate_go', function(e) { + e.preventDefault(); + + var is_other = jQuery('#updraftcentral_mothership_other').is(':checked') ? true : false; + + var key_description = jQuery('#updraftcentral_keycreate_description').val(); + var key_size = jQuery('#updraftcentral_keycreate_keysize').val(); + + var where_send = '__updraftpluscom'; + + data = { + action: 'updraft_ajax', + subaction: 'updraftcentral_create_key', + key_description: key_description, + key_size: key_size, + nonce: updraft_credentialtest_nonce + }; + + if (is_other) { + where_send = jQuery('#updraftcentral_keycreate_mothership').val(); + if (where_send.substring(0, 4) != 'http') { + alert(updraftlion.enter_mothership_url); + return; + } + } + + data.mothership_firewalled = jQuery('#updraftcentral_keycreate_mothership_firewalled').is(':checked') ? 1 : 0; + data.where_send = where_send; + + jQuery('#updraftcentral_keys').block({ message: '

        '+updraftlion.creating_please_allow+'
        '}); + + try { + jQuery.post(ajaxurl, data, function(response) { + jQuery('#updraftcentral_keys').unblock(); + try { + resp = jQuery.parseJSON(response); + if (resp.hasOwnProperty('error')) { + alert(resp.error); + console.log(resp); + return; + } + alert(resp.r); + if (resp.hasOwnProperty('keys_table')) { + jQuery('#updraftcentral_keys_content').html(resp.keys_table); + } + if (resp.hasOwnProperty('bundle')) { + jQuery('#updraftcentral_keys_content').append(resp.r+'
        '); + } else { + console.log(resp); + } + } catch (err) { + alert(updraftlion.unexpectedresponse+' '+response); + console.log(err); + } + }); + } catch (err) { + jQuery('#updraft_central_key').html(); + console.log(err); + } + }); + + jQuery('#updraftcentral_keys').on('click', '.updraftcentral_key_delete', function(e) { + e.preventDefault(); + var key_id = jQuery(this).data('key_id'); + if ('undefined' == typeof key_id) { + console.log("UpdraftPlus: .updraftcentral_key_delete clicked, but no key ID found"); + return; + } + + jQuery('#updraftcentral_keys').block({ message: '

        '+updraftlion.deleting+'
        '}); + + jQuery.post(ajaxurl, { + action: 'updraft_ajax', + subaction: 'updraftcentral_delete_key', + nonce: updraft_credentialtest_nonce, + key_id: key_id + }, function(response) { + jQuery('#updraftcentral_keys').unblock(); + try { + resp = jQuery.parseJSON(response); + if (resp.hasOwnProperty('keys_table')) { + jQuery('#updraftcentral_keys_content').html(resp.keys_table); + } + } catch (err) { + alert(updraftlion.unexpectedresponse+' '+response); + console.log(err); + } + }); + }); + + + jQuery('#updraft_reset_sid').click(function(e) { + e.preventDefault(); + jQuery.post(ajaxurl, { + action: 'updraft_ajax', + subaction: 'sid_reset', + nonce: updraft_credentialtest_nonce + }, function(response) { + try { + resp = jQuery.parseJSON(response); + if (resp.hasOwnProperty('newsid')) { + jQuery('#updraft_show_sid').html(resp.newsid); + } + } catch (err) { + alert(updraftlion.unexpectedresponse+' '+response); + console.log(err); + } + }); + }); + + jQuery("#updraft-navtab-settings-content form input:not('.udignorechange'), #updraft-navtab-settings-content form select").change(function(e){ + updraft_settings_form_changed = true; + }); + jQuery("#updraft-navtab-settings-content form input[type='submit']").click(function (e) { + updraft_settings_form_changed = false; + }); + + var bigbutton_width = 180; + jQuery('.updraft-bigbutton').each(function(x,y){ + var bwid = jQuery(y).width(); + if (bwid > bigbutton_width) bigbutton_width = bwid; + }); + if (bigbutton_width > 180) jQuery('.updraft-bigbutton').width(bigbutton_width); + + //setTimeout(function(){updraft_showlastlog(true);}, 1200); + setInterval(function() {updraft_activejobs_update(false);}, 1250); + + // Prevent profusion of notices + setTimeout(function(){jQuery('#setting-error-settings_updated').slideUp();}, 5000); + + jQuery('.updraftplusmethod').hide(); + + jQuery('#updraft_restore_db').change(function(){ + if (jQuery('#updraft_restore_db').is(':checked')) { + jQuery('#updraft_restorer_dboptions').slideDown(); + } else { + jQuery('#updraft_restorer_dboptions').slideUp(); + } + }); + + updraft_check_same_times(); + + var updraft_message_modal_buttons = {}; + updraft_message_modal_buttons[updraftlion.close] = function() { jQuery(this).dialog("close"); }; + jQuery( "#updraft-message-modal").dialog({ + autoOpen: false, height: 350, width: 520, modal: true, + buttons: updraft_message_modal_buttons + }); + + var updraft_delete_modal_buttons = {}; + updraft_delete_modal_buttons[updraftlion.deletebutton] = function() { updraft_remove_backup_sets(0,0,0,0); }; + + + function updraft_remove_backup_sets(deleted_counter, backup_local, backup_remote, backup_sets) { + jQuery('#updraft-delete-waitwarning').slideDown(); + var deleted_files_counter = deleted_counter; + var local_deleted = backup_local; + var remote_deleted = backup_remote; + var sets_deleted = backup_sets; + var timestamps = jQuery('#updraft_delete_timestamp').val().split(','); + jQuery.post(ajaxurl, jQuery('#updraft_delete_form').serialize() + '&remote_delete_limit=' + updraftlion.remote_delete_limit, function(response) { + var resp; + try { + resp = jQuery.parseJSON(response); + } catch(err) { + alert(updraftlion.unexpectedresponse+' '+response); + } + if (resp.result != null) { + if (resp.result == 'error') { + alert(updraftlion.error+' '+resp.message); + } else if (resp.result == 'continue') { + deleted_files_counter = deleted_files_counter + resp.backup_local + resp.backup_remote; + local_deleted = local_deleted + resp.backup_local; + remote_deleted = remote_deleted + resp.backup_remote; + sets_deleted = sets_deleted + resp.backup_sets; + jQuery('#updraft-deleted-files-total').text(deleted_files_counter + ' ' + updraftlion.remote_files_deleted); + updraft_remove_backup_sets(deleted_files_counter, local_deleted, remote_deleted, sets_deleted); + } else if (resp.result == 'success') { + jQuery('#updraft-deleted-files-total').text(''); + jQuery('#updraft-delete-waitwarning').slideUp(); + //jQuery('#updraft_showbackups').load(ajaxurl+'?action=updraft_ajax&subaction=countbackups&nonce='+updraft_credentialtest_nonce); + jQuery('#updraft-navtab-backups').load(ajaxurl+'?action=updraft_ajax&subaction=countbackups&nonce='+updraft_credentialtest_nonce); + for (var i = 0; i < timestamps.length; i++) { + var timestamp = timestamps[i]; + jQuery('#updraft-navtab-backups-content .updraft_existing_backups_row_'+timestamp).slideUp().remove(); + } + if (jQuery('#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected').length < 1) { + jQuery('#ud_massactions').hide(); + } + updraft_history_lastchecksum = false; + jQuery("#updraft-delete-modal").dialog('close'); + + local_deleted = local_deleted + resp.backup_local; + remote_deleted = remote_deleted + resp.backup_remote; + sets_deleted = sets_deleted + resp.backup_sets; + + alert(resp.set_message + " " + sets_deleted + "\n" + resp.local_message + " " + local_deleted + "\n" + resp.remote_message + " " + remote_deleted); + } + } + }); + }; + + updraft_delete_modal_buttons[updraftlion.cancel] = function() { jQuery(this).dialog("close"); }; + jQuery( "#updraft-delete-modal").dialog({ + autoOpen: false, height: 262, width: 430, modal: true, + buttons: updraft_delete_modal_buttons + }); + + var updraft_restore_modal_buttons = {}; + updraft_restore_modal_buttons[updraftlion.restore] = function() { + var anyselected = 0; + var whichselected = []; + // Make a list of what files we want + var already_added_wpcore = 0; + var meta_foreign = jQuery('#updraft_restore_meta_foreign').val(); + jQuery('input[name="updraft_restore[]"]').each(function(x, y){ + if (jQuery(y).is(':checked') && !jQuery(y).is(':disabled')) { + anyselected = 1; + var howmany = jQuery(y).data('howmany'); + var type = jQuery(y).val(); + if (1 == meta_foreign || (2 == meta_foreign && 'db' != type)) { + if ('wpcore' != type) { + howmany = jQuery('#updraft_restore_form #updraft_restore_wpcore').data('howmany'); + } + type = 'wpcore'; + } + if ('wpcore' != type || already_added_wpcore == 0) { + var restobj = [ type, howmany ]; + whichselected.push(restobj); + //alert(jQuery(y).val()); + if ('wpcore' == type) { already_added_wpcore = 1; } + } + } + }); + if (anyselected == 1) { + // Work out what to download + if (updraft_restore_stage == 1) { + // meta_foreign == 1 : All-in-one format: the only thing to download, always, is wpcore +// if ('1' == meta_foreign) { +// whichselected = []; +// whichselected.push([ 'wpcore', 0 ]); +// } else if ('2' == meta_foreign) { +// jQuery(whichselected).each(function(x,y) { +// restobj = whichselected[x]; +// }); +// whichselected = []; +// whichselected.push([ 'wpcore', 0 ]); +// } + jQuery('#updraft-restore-modal-stage1').slideUp('slow'); + jQuery('#updraft-restore-modal-stage2').show(); + updraft_restore_stage = 2; + var pretty_date = jQuery('.updraft_restore_date').first().text(); + // Create the downloader active widgets + + // See if we some are already known to be downloaded - in which case, skip creating the download widget. (That saves on HTTP round-trips, as each widget creates a new POST request. Of course, this is at the expense of one extra one here). + var which_to_download = whichselected; + var backup_timestamp = jQuery('#updraft_restore_timestamp').val(); + + try { + jQuery.post(ajaxurl, { + action: 'updraft_ajax', + subaction: 'whichdownloadsneeded', + nonce: updraft_credentialtest_nonce, + downloads: whichselected, + timestamp: backup_timestamp + }, function(response) { + try { + resp = jQuery.parseJSON(response); + if (resp.hasOwnProperty('downloads')) { + console.log('UpdraftPlus: items which still require downloading follow'); + which_to_download = resp.downloads; + console.log(which_to_download); + } + } catch (err) { + console.log("UpdraftPlus: error (follows) when parsing response on items needing downloading"); + console.log(err); + } + + // Download time. + // The check on what's already downloaded may have returned the result that everything is + if (which_to_download.length == 0) { + updraft_restorer_checkstage2(0); + } else { + for (var i=0; i=0) { + jQuery('#updraft-navtab-backups-content .ud-whitespace-warning').show(); + console.log("UpdraftPlus: Extra output warning: response (which should be just (string)'pong') follows."); + console.log(data); + } + }); + + // Section: Plupload + try { + if (typeof updraft_plupload_config !== 'undefined') { + plupload_init(); + } + } catch (err) { + console.log(err); + } + + function plupload_init() { + + // create the uploader and pass the config from above + var uploader = new plupload.Uploader(updraft_plupload_config); + + // checks if browser supports drag and drop upload, makes some css adjustments if necessary + uploader.bind('Init', function(up){ + var uploaddiv = jQuery('#plupload-upload-ui'); + + if (up.features.dragdrop){ + uploaddiv.addClass('drag-drop'); + jQuery('#drag-drop-area') + .bind('dragover.wp-uploader', function(){ uploaddiv.addClass('drag-over'); }) + .bind('dragleave.wp-uploader, drop.wp-uploader', function(){ uploaddiv.removeClass('drag-over'); }); + + } else { + uploaddiv.removeClass('drag-drop'); + jQuery('#drag-drop-area').unbind('.wp-uploader'); + } + }); + + uploader.init(); + + // a file was added in the queue + uploader.bind('FilesAdded', function(up, files){ + // var hundredmb = 100 * 1024 * 1024, max = parseInt(up.settings.max_file_size, 10); + + plupload.each(files, function(file){ + + if (! /^backup_([\-0-9]{15})_.*_([0-9a-f]{12})-[\-a-z]+([0-9]+?)?(\.(zip|gz|gz\.crypt))?$/i.test(file.name) && ! /^log\.([0-9a-f]{12})\.txt$/.test(file.name)) { + var accepted_file = false; + for (var i = 0; i'+file.name+"

        "+updraftlion.notarchive2); + jQuery('#updraft-message-modal').dialog('open'); + } else { + alert(file.name+": "+updraftlion.notarchive); + } + uploader.removeFile(file); + return; + } + } + + // a file was added, you may want to update your DOM here... + jQuery('#filelist').append( + '
        ' + + file.name + ' (' + plupload.formatSize(0) + '/' + plupload.formatSize(file.size) + ') ' + + '
        '); + }); + + up.refresh(); + up.start(); + }); + + uploader.bind('UploadProgress', function(up, file) { + jQuery('#' + file.id + " .fileprogress").width(file.percent + "%"); + jQuery('#' + file.id + " span").html(plupload.formatSize(parseInt(file.size * file.percent / 100))); + + if(file.size == file.loaded){ + jQuery('#' + file.id).html('
        ' + + file.name + ' (' + plupload.formatSize(parseInt(file.size * file.percent / 100)) + '/' + plupload.formatSize(file.size) + ') - ' + updraftlion.complete + + '
        '); // Removed
        (just before closing
        ) to make clearer it's complete. + jQuery('#' + file.id + " .fileprogress").width(file.percent + "%"); + } + }); + + uploader.bind('Error', function(up, error) { + alert(updraftlion.uploaderr+' (code '+error.code+') : '+error.message+' '+updraftlion.makesure); + }); + + // a file was uploaded + uploader.bind('FileUploaded', function(up, file, response) { + + if (response.status == '200') { + // this is your ajax response, update the DOM with it or something... + try { + resp = jQuery.parseJSON(response.response); + if (resp.e) { + alert(updraftlion.uploaderror+" "+resp.e); + } else if (resp.dm) { + alert(resp.dm); + updraft_updatehistory(1, 0); + } else if (resp.m) { + updraft_updatehistory(1, 0); + } else { + alert('Unknown server response: '+response.response); + } + + } catch(err) { + console.log(response); + alert(updraftlion.jsonnotunderstood); + } + + } else { + alert('Unknown server response status: '+response.code); + console.log(response); + } + + }); + } + + // Functions in the debugging console + jQuery('#updraftplus_httpget_go').click(function(e) { + e.preventDefault(); + updraftplus_httpget_go(0); + }); + + jQuery('#updraftplus_httpget_gocurl').click(function(e) { + e.preventDefault(); + updraftplus_httpget_go(1); + }); + + jQuery('#updraftplus_callwpaction_go').click(function(e) { + e.preventDefault(); + params = { action: 'updraft_ajax', subaction: 'callwpaction', nonce: updraft_credentialtest_nonce, wpaction: jQuery('#updraftplus_callwpaction').val() }; + jQuery.get(ajaxurl, params, function(response) { + try { + resp = jQuery.parseJSON(response); + if (resp.e) { + alert(resp.e); + } else if (resp.s) { + // Silence + } else if (resp.r) { + jQuery('#updraftplus_callwpaction_results').html(resp.r); + } else { + console.log(response); + alert(updraftlion.jsonnotunderstood); + } + + } catch(err) { + console.log(response); + alert(updraftlion.jsonnotunderstood); + } + }); + }); + + function updraftplus_httpget_go(curl) { + params = { action: 'updraft_ajax', subaction: 'httpget', nonce: updraft_credentialtest_nonce, uri: jQuery('#updraftplus_httpget_uri').val() }; + params.curl = curl; + jQuery.get(ajaxurl, params, function(response) { + try { + resp = jQuery.parseJSON(response); + if (resp.e) { + alert(resp.e); + } + if (resp.r) { + jQuery('#updraftplus_httpget_results').html('
        '+resp.r+'
        '); + } else { + console.log(response); + //alert(updraftlion.jsonnotunderstood); + } + + } catch(err) { + console.log(err); + console.log(response); + alert(updraftlion.jsonnotunderstood); + } + }); + } + + jQuery('#updraft_activejobs_table').on('click', '.updraft_jobinfo_delete', function(e) { + e.preventDefault(); + var job_id = jQuery(this).data('jobid'); + if (job_id) { + updraft_activejobs_delete(job_id); + } else { + console.log("UpdraftPlus: A stop job link was clicked, but the Job ID could not be found"); + } + }); + + jQuery('#updraft_activejobs_table, #updraft-navtab-backups-content .updraft_existing_backups, #updraft-backupnow-inpage-modal').on('click', '.updraft-log-link', function(e) { + e.preventDefault(); + var job_id = jQuery(this).data('jobid'); + if (job_id) { + updraft_popuplog(job_id); + } else { + console.log("UpdraftPlus: A log link was clicked, but the Job ID could not be found"); + } + }); + + function updraft_restore_setup(entities, key, show_data) { + updraft_restore_setoptions(entities); + jQuery('#updraft_restore_timestamp').val(key); + jQuery('.updraft_restore_date').html(show_data); + + updraft_restore_stage = 1; + + jQuery('#updraft-migrate-modal').dialog('close'); + jQuery('#updraft-restore-modal').dialog('open'); + jQuery('#updraft-restore-modal-stage1').show(); + jQuery('#updraft-restore-modal-stage2').hide(); + jQuery('#updraft-restore-modal-stage2a').html(''); + + updraft_activejobs_update(true); + } + + jQuery('#updraft-navtab-backups-content .updraft_existing_backups').on('click', 'button.choose-components-button', function(e) { + var entities = jQuery(this).data('entities'); + var backup_timestamp = jQuery(this).data('backup_timestamp'); + var show_data = jQuery(this).data('showdata'); + updraft_restore_setup(entities, backup_timestamp, show_data); + }); + + /** + * Get the value of a named URL parameter - https://stackoverflow.com/questions/4548487/jquery-read-query-string + * + * @param {string} name - URL parameter to return the value of + * @returns {string} + */ + function get_parameter_by_name(name) { + name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); + var regexS = "[\\?&]"+name+"=([^&#]*)"; + var regex = new RegExp( regexS ); + var results = regex.exec( window.location.href ); + if( results == null ) { + return ""; + } else { + return decodeURIComponent(results[1].replace(/\+/g, " ")); + } + } + + if (get_parameter_by_name('udaction') == 'initiate_restore') { + var entities = get_parameter_by_name('entities'); + var backup_timestamp = get_parameter_by_name('backup_timestamp'); + var show_data = get_parameter_by_name('showdata'); + updraft_restore_setup(entities, backup_timestamp, show_data); + } + + jQuery('#updraft-navtab-backups-content .updraft_existing_backups').on('click', '.updraft-delete-link', function(e) { + e.preventDefault(); + var hasremote = jQuery(this).data('hasremote').toString(); + var nonce = jQuery(this).data('nonce').toString(); + var key = jQuery(this).data('key').toString(); + if (nonce) { + updraft_delete(key, nonce, hasremote); + } else { + console.log("UpdraftPlus: A delete link was clicked, but the Job ID could not be found"); + } + }); + + jQuery('#updraft-navtab-backups-content .updraft_existing_backups').on('click', 'button.updraft_download_button', function(e) { + e.preventDefault(); + var base = 'uddlstatus_'; + var backup_timestamp = jQuery(this).data('backup_timestamp'); + var what = jQuery(this).data('what'); + var whicharea = '.ud_downloadstatus'; + var set_contents = jQuery(this).data('set_contents'); + var prettydate = jQuery(this).data('prettydate'); + var async = true; + updraft_downloader(base, backup_timestamp, what, whicharea, set_contents, prettydate, async); + }); + + jQuery('#updraft-navtab-backups-content .updraft_existing_backups').on('tripleclick', '.updraft_existingbackup_date', { threshold: 500 }, function(e) { + e.preventDefault(); + var data = jQuery(this).data('rawbackup'); + if (data != null && data != '') { + updraft_html_modal(data, updraftlion.raw, 780, 500); + } + }); + +}); + +// UpdraftPlus Vault +jQuery(document).ready(function($){ + + var settings_css_prefix = '#updraft-navtab-settings-content '; + + $(settings_css_prefix+'#updraftvault_settings_cell').on('click', '.updraftvault_backtostart', function(e) { + e.preventDefault(); + $(settings_css_prefix+'#updraftvault_settings_showoptions').slideUp(); + $(settings_css_prefix+'#updraftvault_settings_connect').slideUp(); + $(settings_css_prefix+'#updraftvault_settings_connected').slideUp(); + $(settings_css_prefix+'#updraftvault_settings_default').slideDown(); + }); + + // Prevent default event when pressing return in the form + $(settings_css_prefix+'#updraftvault_settings_connect input').keypress(function(e) { + if (e.which == 13) { + $(settings_css_prefix+'#updraftvault_connect_go').click(); + return false; + } + }); + + $(settings_css_prefix+'#updraftvault_settings_cell').on('click', '#updraftvault_recountquota', function(e) { + e.preventDefault(); + $(settings_css_prefix+'#updraftvault_recountquota').html(updraftlion.counting); + try { + $.post(ajaxurl, { + action: 'updraft_ajax', + subaction: 'vault_recountquota', + nonce: updraft_credentialtest_nonce + }, function(response) { + $(settings_css_prefix+'#updraftvault_recountquota').html(updraftlion.updatequotacount); + try { + resp = $.parseJSON(response); + if (resp.hasOwnProperty('html')) { + $(settings_css_prefix+'#updraftvault_settings_connected').html(resp.html); + if (resp.hasOwnProperty('connected')) { + if (resp.connected) { + $(settings_css_prefix+'#updraftvault_settings_default').hide(); + $(settings_css_prefix+'#updraftvault_settings_connected').show(); + } else { + $(settings_css_prefix+'#updraftvault_settings_connected').hide(); + $(settings_css_prefix+'#updraftvault_settings_default').show(); + } + } + } + } catch (err) { + alert(updraftlion.unexpectedresponse+' '+response); + console.log(err); + } + }); + } catch (err) { + $(settings_css_prefix+'#updraftvault_recountquota').html(updraftlion.updatequotacount); + console.log(err); + } + }); + + $(settings_css_prefix+'#updraftvault_settings_cell').on('click', '#updraftvault_disconnect', function(e) { + e.preventDefault(); + $(settings_css_prefix+'#updraftvault_disconnect').html(updraftlion.disconnecting); + try { + $.post(ajaxurl, { + action: 'updraft_ajax', + subaction: 'vault_disconnect', + nonce: updraft_credentialtest_nonce + }, function(response) { + $(settings_css_prefix+'#updraftvault_disconnect').html(updraftlion.disconnect); + try { + resp = $.parseJSON(response); + if (resp.hasOwnProperty('html')) { + $(settings_css_prefix+'#updraftvault_settings_connected').html(resp.html).slideUp(); + $(settings_css_prefix+'#updraftvault_settings_default').slideDown(); + } + } catch (err) { + alert(updraftlion.unexpectedresponse+' '+response); + console.log(response); + console.log(err); + } + }); + } catch (err) { + $(settings_css_prefix+'#updraftvault_disconnect').html(updraftlion.disconnect); + console.log(err); + } + }); + + $(settings_css_prefix+'#updraftvault_connect').click(function(e) { + e.preventDefault(); + $(settings_css_prefix+'#updraftvault_settings_default').slideUp(); + $(settings_css_prefix+'#updraftvault_settings_connect').slideDown(); + }); + + $(settings_css_prefix+'#updraftvault_showoptions').click(function(e) { + e.preventDefault(); + $(settings_css_prefix+'#updraftvault_settings_default').slideUp(); + $(settings_css_prefix+'#updraftvault_settings_showoptions').slideDown(); + }); + + $(settings_css_prefix+'#updraftvault_connect_go').click(function(e) { + $(settings_css_prefix+'#updraftvault_connect_go').html(updraftlion.connecting); + $.post(ajaxurl, { + action: 'updraft_ajax', + subaction: 'vault_connect', + nonce: updraft_credentialtest_nonce, + email: $('#updraftvault_email').val(), + pass: $('#updraftvault_pass').val(), + }, function(response) { + $(settings_css_prefix+'#updraftvault_connect_go').html(updraftlion.connect); + try { + resp = $.parseJSON(response); + } catch(err) { + console.log(err); + console.log(response); + alert(updraftlion.unexpectedresponse+' '+response); + return; + } + if (resp.hasOwnProperty('e')) { + updraft_html_modal('

        '+updraftlion.errornocolon+'

        '+resp.e+'

        ', updraftlion.disconnect, 400, 250); + if (resp.hasOwnProperty('code') && resp.code == 'no_quota') { + $(settings_css_prefix+'#updraftvault_settings_connect').slideUp(); + $(settings_css_prefix+'#updraftvault_settings_default').slideDown(); + } + } else if (resp.hasOwnProperty('connected') && resp.connected && resp.hasOwnProperty('html')) { + $(settings_css_prefix+'#updraftvault_settings_connect').slideUp(); + $(settings_css_prefix+'#updraftvault_settings_connected').html(resp.html).slideDown(); + } else { + console.log(response); + console.log(resp); + alert(updraftlion.unexpectedresponse+' '+response); + } + + }); + return false; + }); +}); + +// Next: the encrypted database pluploader +jQuery(document).ready(function($){ + + try { + if (typeof updraft_plupload_config2 !== 'undefined') { + plupload_init(); + } + } catch (err) { + console.log(err); + } + + function plupload_init() { + // create the uploader and pass the config from above + var uploader = new plupload.Uploader(updraft_plupload_config2); + + // checks if browser supports drag and drop upload, makes some css adjustments if necessary + uploader.bind('Init', function(up){ + var uploaddiv = jQuery('#plupload-upload-ui2'); + + if (up.features.dragdrop){ + uploaddiv.addClass('drag-drop'); + jQuery('#drag-drop-area2') + .bind('dragover.wp-uploader', function(){ uploaddiv.addClass('drag-over'); }) + .bind('dragleave.wp-uploader, drop.wp-uploader', function(){ uploaddiv.removeClass('drag-over'); }); + } else { + uploaddiv.removeClass('drag-drop'); + jQuery('#drag-drop-area2').unbind('.wp-uploader'); + } + }); + + uploader.init(); + + // a file was added in the queue + uploader.bind('FilesAdded', function(up, files){ + // var hundredmb = 100 * 1024 * 1024, max = parseInt(up.settings.max_file_size, 10); + + plupload.each(files, function(file){ + + if (! /^backup_([\-0-9]{15})_.*_([0-9a-f]{12})-db([0-9]+)?\.(gz\.crypt)$/i.test(file.name)) { + alert(file.name+': '+updraftlion.notdba); + uploader.removeFile(file); + return; + } + + // a file was added, you may want to update your DOM here... + jQuery('#filelist2').append( + '
        ' + + file.name + ' (' + plupload.formatSize(0) + '/' + plupload.formatSize(file.size) + ') ' + + '
        '); + }); + + up.refresh(); + up.start(); + }); + + uploader.bind('UploadProgress', function(up, file) { + jQuery('#' + file.id + " .fileprogress").width(file.percent + "%"); + jQuery('#' + file.id + " span").html(plupload.formatSize(parseInt(file.size * file.percent / 100))); + }); + + uploader.bind('Error', function(up, error) { + alert(updraftlion.uploaderr+' (code '+error.code+") : "+error.message+" "+updraftlion.makesure); + }); + + // a file was uploaded + uploader.bind('FileUploaded', function(up, file, response) { + + if (response.status == '200') { + // this is your ajax response, update the DOM with it or something... + if (response.response.substring(0,6) == 'ERROR:') { + alert(updraftlion.uploaderror+" "+response.response.substring(6)); + } else if (response.response.substring(0,3) == 'OK:') { + bkey = response.response.substring(3); + jQuery('#' + file.id + " .fileprogress").hide(); + jQuery('#' + file.id).append(updraftlion.uploaded+' '+updraftlion.followlink+' '+updraftlion.thiskey+' '+jQuery('#updraftplus_db_decrypt').val().replace(/&/g, "&").replace(//g, ">")); + } else { + alert(updraftlion.unknownresp+' '+response.response); + } + } else { + alert(updraftlion.ukrespstatus+' '+response.code); + } + + }); + } + + jQuery('#updraft-hidethis').remove(); + + updraft_remote_storage_tabs_setup(); + +}); + +// Save/Export/Import settings via AJAX +jQuery(document).ready(function($){ + // Pre-load the image so that it doesn't jerk when first used + var my_image = new Image(); + my_image.src = updraftlion.ud_url+'/images/udlogo-rotating.gif'; + + // When inclusion options for file entities in the settings tab, reflect that in the "Backup Now" dialog, to prevent unexpected surprises + $('#updraft-navtab-settings-content input.updraft_include_entity').change(function(e) { + var event_target = $(this).attr('id'); + var checked = $(this).is(':checked'); + var backup_target = '#backupnow_files_'+event_target; + $(backup_target).prop('checked', checked); + }); + + $('#updraftplus-settings-save').click(function(e) { + e.preventDefault(); + $.blockUI({ message: '

        '+updraftlion.saving+'
        '}); + + var form_data = gather_updraft_settings(); + // POST the settings back to the AJAX handler + $.post(ajaxurl, { + action: 'updraft_savesettings', + subaction: 'savesettings', + settings: form_data, + nonce: updraftplus_settings_nonce + }, function(response) { + // Add page updates etc based on response + updraft_handle_page_updates(response); + + $('#updraft-wrap .fade').delay(6000).fadeOut(2000); + + $('html, body').animate({ + scrollTop: $("#updraft-wrap").offset().top + }, 1000, function() { + check_cloud_authentication() + }); + + $.unblockUI(); + }); + }); + + $('#updraftplus-settings-export').click(function() { + if (updraft_settings_form_changed) { + alert(updraftlion.unsaved_settings_export); + } + export_settings(); + }); + + $('#updraftplus-settings-import').click(function() { + $.blockUI({ message: '

        '+updraftlion.importing+'
        '}); + var updraft_import_file_input = document.getElementById('import_settings'); + if (updraft_import_file_input.files.length == 0) { + alert(updraftlion.import_select_file); + $.unblockUI(); + return; + } + var updraft_import_file_file = updraft_import_file_input.files[0]; + var updraft_import_file_reader = new FileReader(); + updraft_import_file_reader.onload = function() { + import_settings(this.result); + }; + updraft_import_file_reader.readAsText(updraft_import_file_file); + }); + + function export_settings() { + var form_data = gather_updraft_settings().split('&'); + var input = {}; + + //Function to convert serialized settings to the correct format ready for json encoding + $.each(form_data, function(key, value) { + var data = value.split('='); + + var name = decodeURIComponent(data[0]); + if (name.indexOf("option_page") >= 0 || name.indexOf("_wpnonce") >= 0 || name.indexOf("_wp_http_referer") >= 0){ + return true; + } + + if (name.indexOf("[") >= 0){ + var extract = name.match(/\[(.*)\]/).pop(); + name = name.substring(0, name.indexOf('[')); + //some options either have a blank or 0 as their nested array key and need to be delt with differently + if (!extract || extract === '0'){ + if(typeof input[name] === "undefined") input[name] = []; + input[name].push(decodeURIComponent(data[1])); + }else{ + if(typeof input[name] === "undefined") input[name] = {}; + input[name][extract] = decodeURIComponent(data[1]); + } + } else { + input[name] = decodeURIComponent(data[1]); + } + }); + + var date_now = new Date(); + + form_data = JSON.stringify({ + // Indicate the last time the format changed - i.e. do not update this unless there is a format change + version: '1.12.19', + epoch_date: date_now.getTime(), + local_date: date_now.toLocaleString(), + network_site_url: updraftlion.network_site_url, + data: input + }); + + //Attach this data to an anchor on page + var link = document.body.appendChild(document.createElement('a')); + link.setAttribute('download', 'updraftplus-settings.json'); + link.setAttribute('style', "display:none;"); + link.setAttribute('href', 'data:text/json' + ';charset=UTF-8,' + encodeURIComponent(form_data)); + link.click(); + } + + function import_settings(updraft_file_result) { + + var data = decodeURIComponent(updraft_file_result); + + data = JSON.parse(data); + + if (window.confirm(updraftlion.importing_data_from + ' ' + data['network_site_url'] + "\n" + updraftlion.exported_on + ' ' + data['local_date'] + "\n" + updraftlion.continue_import)) { + // GET the settings back to the AJAX handler + data = JSON.stringify(data['data']); + $.post(ajaxurl, { + action: 'updraft_importsettings', + subaction: 'importsettings', + settings: data, + nonce: updraftplus_settings_nonce + }, function(response) { + updraft_handle_page_updates(response); + // Prevent the user being told they have unsaved settings + updraft_settings_form_changed = false; + // Add page updates etc based on response + location.replace(updraftlion.updraft_settings_url); + }); + } else { + $.unblockUI(); + } + } + + function gather_updraft_settings() { + // Excluding the unnecessary 'action' input avoids triggering a very mis-conceived mod_security rule seen on one user's site + var form_data = $("#updraft-navtab-settings-content form input[name!='action'], #updraft-navtab-settings-content form textarea, #updraft-navtab-settings-content form select").serialize(); + + //include unchecked checkboxes. user filter to only include unchecked boxes. + $.each($('#updraft-navtab-settings-content form input[type=checkbox]') + .filter(function(idx){ + return $(this).prop('checked') == false + }), + function(idx, el){ + //attach matched element names to the form_data with chosen value. + var empty_val = '0'; + form_data += '&' + $(el).attr('name') + '=' + empty_val; + } + ); + + return form_data; + } + + function updraft_handle_page_updates(response) { + + try { + var resp = jQuery.parseJSON(response); + + var messages = resp.messages; + //var debug = resp.changed.updraft_debug_mode; + + // If backup dir is not writable, change the text, and grey out the 'Backup Now' button + var backup_dir_writable = resp.backup_dir.writable; + var backup_dir_message = resp.backup_dir.message; + var backup_button_title = resp.backup_dir.button_title; + } catch (e) { + console.log(e); + console.log(response); + alert(updraftlion.jsonnotunderstood); + $.unblockUI(); + return; + } + + if (resp.hasOwnProperty('changed')) { + console.log("UpdraftPlus: savesettings: some values were changed after being filtered"); + console.log(resp.changed); + for(prop in resp.changed){ + if(typeof resp.changed[prop] === 'object'){ + for(innerprop in resp.changed[prop]){ + if(!$("[name='"+innerprop+"']").is(':checkbox')){ + $("[name='"+prop+"["+innerprop+"]']").val(resp.changed[prop][innerprop]); + } + } + } else { + if(!$("[name='"+prop+"']").is(':checkbox')){ + $("[name='"+prop+"']").val(resp.changed[prop]); + } + } + } + } + + $('#updraft_writable_mess').html(backup_dir_message); + + if (backup_dir_writable == false){ + $('#updraft-backupnow-button').attr('disabled', 'disabled'); + $('#updraft-backupnow-button').attr('title', backup_button_title); + $('.backupdirrow').css('display', 'table-row'); + } else { + $('#updraft-backupnow-button').removeAttr('disabled'); + $('#updraft-backupnow-button').removeAttr('title'); + //$('.backupdirrow').hide(); + } + + if (resp.hasOwnProperty('backup_now_message')) { $('#backupnow_remote_container').html(resp.backup_now_message); } + + // Move from 2 to 1 + $('.updraftmessage').remove(); + + $('#updraft_backup_started').before(resp.messages); + + $('#next-backup-table-inner').html(resp.scheduled); + + } + + //this function has the workings for checking if any cloud storage needs authentication + //If so, these are amended to the HTML and the popup is shown to the users. + function check_cloud_authentication(){ + var show_auth_modal = false; + jQuery('#updraft-authenticate-modal-innards').html(''); + + jQuery("div[class*=updraft_authenticate_] a.updraft_authlink").each(function () { + jQuery("#updraft-authenticate-modal-innards").append('

        '+jQuery(this).html()+'

        '); + show_auth_modal = true; + }); + + + if(show_auth_modal){ + var updraft_authenticate_modal_buttons = {}; + updraft_authenticate_modal_buttons[updraftlion.cancel] = function() { jQuery(this).dialog("close"); }; + + jQuery('#updraft-authenticate-modal').dialog({autoOpen: true, + modal: true, + resizable: false, + draggable: false, + buttons: updraft_authenticate_modal_buttons, + width:'auto'}).dialog('open'); + } + } + + +}); + +// https://github.com/richadams/jquery-tripleclick/ +// @author Rich Adams +// Implements a triple-click event. Click (or touch) three times within 1s on the element to trigger. + +;(function($) +{ + // Default options + var defaults = { + threshold: 1000, // ms + } + + function tripleHandler(event) + { + var $elem = jQuery(this); + + // Merge the defaults and any user defined settings. + settings = jQuery.extend({}, defaults, event.data); + + // Get current values, or 0 if they don't yet exist. + var clicks = $elem.data("triclick_clicks") || 0; + var start = $elem.data("triclick_start") || 0; + + // If first click, register start time. + if (clicks === 0) { start = event.timeStamp; } + + // If we have a start time, check it's within limit + if (start != 0 + && event.timeStamp > start + settings.threshold) + { + // Tri-click failed, took too long. + clicks = 0; + start = event.timeStamp; + } + + // Increment counter, and do finish action. + clicks += 1; + if (clicks === 3) + { + clicks = 0; + start = 0; + event.type = "tripleclick"; + + // Let jQuery handle the triggering of "tripleclick" event handlers + if (jQuery.event.handle === undefined) { + jQuery.event.dispatch.apply(this, arguments); + } + else { + // for jQuery before 1.9 + jQuery.event.handle.apply(this, arguments); + } + } + + // Update object data + $elem.data("triclick_clicks", clicks); + $elem.data("triclick_start", start); + } + + var tripleclick = $.event.special.tripleclick = + { + setup: function(data, namespaces) + { + $(this).bind("touchstart click.triple", data, tripleHandler); + }, + teardown: function(namespaces) + { + $(this).unbind("touchstart click.triple", tripleHandler); + } + }; +})(jQuery); diff --git a/plugins/updraftplus/includes/updraftplus-notices.php b/plugins/updraftplus/includes/updraftplus-notices.php new file mode 100644 index 0000000..2651b74 --- /dev/null +++ b/plugins/updraftplus/includes/updraftplus-notices.php @@ -0,0 +1,385 @@ + array( + 'prefix' => __('UpdraftPlus Premium:', 'updraftplus'), + 'title' => __('support', 'updraftplus'), + 'text' => __('Enjoy professional, fast, and friendly help whenever you need it.', 'updraftplus'), + 'image' => 'notices/support.png', + 'button_link' => 'https://updraftplus.com/landing/updraftplus-premium', + 'button_meta' => 'updraftplus', + 'dismiss_time' => 'dismiss_notice', + 'supported_positions' => $dashboard_top_or_report, + ), + 2 => array( + 'prefix' => __('UpdraftPlus Premium:', 'updraftplus'), + 'title' => __('UpdraftVault storage', 'updraftplus'), + 'text' => __('The ultimately secure and convenient place to store your backups.', 'updraftplus'), + 'image' => 'notices/updraft_logo.png', + 'button_link' => 'https://updraftplus.com/landing/vault', + 'button_meta' => 'updraftplus', + 'dismiss_time' => 'dismiss_notice', + 'supported_positions' => $dashboard_top_or_report, + ), + 3 => array( + 'prefix' => __('UpdraftPlus Premium:', 'updraftplus'), + 'title' => __('enhanced remote storage options', 'updraftplus'), + 'text' => __('Enhanced storage options for Dropbox, Google Drive and S3. Plus many more options.', 'updraftplus'), + 'image' => 'notices/multiplestorage_destinations.png', + 'button_link' => 'https://updraftplus.com/landing/updraftplus-premium', + 'button_meta' => 'updraftplus', + 'dismiss_time' => 'dismiss_notice', + 'supported_positions' => $dashboard_top_or_report, + ), + 4 => array( + 'prefix' => __('UpdraftPlus Premium:', 'updraftplus'), + 'title' => __('advanced options', 'updraftplus'), + 'text' => __('Secure multisite installation, advanced reporting and much more.', 'updraftplus'), + 'image' => 'notices/reporting.png', + 'button_link' => 'https://updraftplus.com/landing/updraftplus-premium', + 'button_meta' => 'updraftplus', + 'dismiss_time' => 'dismiss_notice', + 'supported_positions' => $dashboard_top_or_report, + ), + 5 => array( + 'prefix' => __('UpdraftPlus Premium:', 'updraftplus'), + 'title' => __('secure your backups', 'updraftplus'), + 'text' => __('Add SFTP to send your data securely, lock settings and encrypt your database backups for extra security.', 'updraftplus'), + 'image' => 'notices/locksettings.png', + 'button_link' => 'https://updraftplus.com/landing/updraftplus-premium', + 'button_meta' => 'updraftplus', + 'dismiss_time' => 'dismiss_notice', + 'supported_positions' => $dashboard_top_or_report, + ), + 6 => array( + 'prefix' => __('UpdraftPlus Premium:', 'updraftplus'), + 'title' => __('easily migrate or clone your site in minutes', 'updraftplus'), + 'text' => __('Copy your site to another domain directly. Includes find-and-replace tool for database references.', 'updraftplus'), + 'image' => 'notices/migrator.png', + 'button_link' => 'https://updraftplus.com/landing/updraftplus-premium', + 'button_meta' => 'updraftplus', + 'dismiss_time' => 'dismiss_notice', + 'supported_positions' => $anywhere, + ), + 7 => array( + 'prefix' => '', + 'title' => __('Introducing UpdraftCentral', 'updraftplus'), + 'text' => __('UpdraftCentral is a highly efficient way to manage, update and backup multiple websites from one place.', 'updraftplus'), + 'image' => 'notices/updraft_logo.png', + 'button_link' => 'https://updraftcentral.com', + 'button_meta' => 'updraftcentral', + 'dismiss_time' => 'dismiss_notice', + 'supported_positions' => $dashboard_top_or_report, + ), + 8 => array( + 'prefix' => '', + 'title' => __('Like UpdraftPlus and can spare one minute?', 'updraftplus'), + 'text' => __('Please help UpdraftPlus by giving a positive review at wordpress.org.', 'updraftplus'), + 'image' => 'notices/updraft_logo.png', + 'button_link' => 'https://wordpress.org/support/plugin/updraftplus/reviews/?rate=5#new-post', + 'button_meta' => 'review', + 'dismiss_time' => 'dismiss_notice', + 'supported_positions' => $anywhere, + ), + 9 => array( + 'prefix' => '', + 'title' => __('Do you use UpdraftPlus on multiple sites?', 'updraftplus'), + 'text' => __('Control all your WordPress installations from one place using UpdraftCentral remote site management!', 'updraftplus'), + 'image' => 'notices/updraft_logo.png', + 'button_link' => 'https://updraftcentral.com', + 'button_meta' => 'updraftcentral', + 'dismiss_time' => 'dismiss_notice', + 'supported_positions' => $anywhere, + ), + 'translation_needed' => array( + 'prefix' => '', + 'title' => 'Can you translate? Want to improve UpdraftPlus for speakers of your language?', + 'text' => self::url_start(true,'updraftplus.com/translate/')."Please go here for instructions - it is easy.".self::url_end(true,'updraftplus.com/translate/'), + 'text_plain' => self::url_start(false,'updraftplus.com/translate/')."Please go here for instructions - it is easy.".self::url_end(false,'updraftplus.com/translate/'), + 'image' => 'notices/updraft_logo.png', + 'button_link' => false, + 'dismiss_time' => false, + 'supported_positions' => $anywhere, + 'validity_function' => 'translation_needed', + ), + 'social_media' => array( + 'prefix' => '', + 'title' => __('UpdraftPlus is on social media - check us out!', 'updraftplus'), + 'text' => self::url_start(true,'twitter.com/updraftplus', true).__('Twitter', 'updraftplus').self::url_end(true,'twitter.com/updraftplus', true).' - '.self::url_start(true,'facebook.com/updraftplus', true).__('Facebook', 'updraftplus').self::url_end(true,'facebook.com/updraftplus', true).' - '.self::url_start(true,'plus.google.com/u/0/b/112313994681166369508/112313994681166369508/about', true).__('Google+', 'updraftplus').self::url_end(true,'plus.google.com/u/0/b/112313994681166369508/112313994681166369508/about', true).' - '.self::url_start(true,'www.linkedin.com/company/updraftplus', true).__('LinkedIn', 'updraftplus').self::url_end(true,'www.linkedin.com/company/updraftplus', true), + 'text_plain' => self::url_start(false,'twitter.com/updraftplus', true).__('Twitter', 'updraftplus').self::url_end(false,'twitter.com/updraftplus', true).' - '.self::url_start(false,'facebook.com/updraftplus', true).__('Facebook', 'updraftplus').self::url_end(false,'facebook.com/updraftplus', true).' - '.self::url_start(false,'plus.google.com/u/0/b/112313994681166369508/112313994681166369508/about', true).__('Google+', 'updraftplus').self::url_end(false,'plus.google.com/u/0/b/112313994681166369508/112313994681166369508/about', true).' - '.self::url_start(false,'www.linkedin.com/company/updraftplus', true).__('LinkedIn', 'updraftplus').self::url_end(false,'www.linkedin.com/company/updraftplus', true), + 'image' => 'notices/updraft_logo.png', + 'dismiss_time' => false, + 'supported_positions' => $anywhere, + ), + 'newsletter' => array( + 'prefix' => '', + 'title' => __('UpdraftPlus Newsletter', 'updraftplus'), + 'text' => __("Follow this link to sign up for the UpdraftPlus newsletter.", 'updraftplus'), + 'image' => 'notices/updraft_logo.png', + 'button_link' => 'https://updraftplus.com/newsletter-signup', + 'button_meta' => 'signup', + 'supported_positions' => $anywhere, + 'dismiss_time' => false + ), + 'subscribe_blog' => array( + 'prefix' => '', + 'title' => __('UpdraftPlus Blog - get up-to-date news and offers', 'updraftplus'), + 'text' => self::url_start(true,'updraftplus.com/news/').__("Blog link",'updraftplus').self::url_end(true,'updraftplus.com/news/').' - '.self::url_start(true,'feeds.feedburner.com/UpdraftPlus').__("RSS link",'updraftplus').self::url_end(true,'feeds.feedburner.com/UpdraftPlus'), + 'text_plain' => self::url_start(false,'updraftplus.com/news/').__("Blog link",'updraftplus').self::url_end(false,'updraftplus.com/news/').' - '.self::url_start(false,'feeds.feedburner.com/UpdraftPlus').__("RSS link",'updraftplus').self::url_end(false,'feeds.feedburner.com/UpdraftPlus'), + 'image' => 'notices/updraft_logo.png', + 'button_link' => false, + 'supported_positions' => $anywhere, + 'dismiss_time' => false + ), + 'check_out_updraftplus_com' => array( + 'prefix' => '', + 'title' => __('UpdraftPlus Blog - get up-to-date news and offers', 'updraftplus'), + 'text' => self::url_start(true,'updraftplus.com/news/').__("Blog link",'updraftplus').self::url_end(true,'updraftplus.com/news/').' - '.self::url_start(true,'feeds.feedburner.com/UpdraftPlus').__("RSS link",'updraftplus').self::url_end(true,'feeds.feedburner.com/UpdraftPlus'), + 'text_plain' => self::url_start(false,'updraftplus.com/news/').__("Blog link",'updraftplus').self::url_end(false,'updraftplus.com/news/').' - '.self::url_start(false,'feeds.feedburner.com/UpdraftPlus').__("RSS link",'updraftplus').self::url_end(false,'feeds.feedburner.com/UpdraftPlus'), + 'image' => 'notices/updraft_logo.png', + 'button_link' => false, + 'supported_positions' => $dashboard_bottom_or_report, + 'dismiss_time' => false + ), + 'autobackup' => array( + 'prefix' => '', + 'title' => __('Be safe with an automatic backup', 'updraftplus'), + 'text' => __('UpdraftPlus Premium can automatically backup your plugins/themes/database before you update, without you needing to remember.', 'updraftplus'), + 'image' => 'automaticbackup.png', + 'button_link' => 'https://updraftplus.com/landing/updraftplus-premium', + 'button_meta' => 'updraftplus', + 'dismiss_time' => 'dismissautobackup', + 'supported_positions' => $autobackup_bottom_or_report, + ), + + //The sale adverts content starts here + 'blackfriday' => array( + 'prefix' => '', + 'title' => __('Black Friday - 20% off UpdraftPlus Premium until November 30th', 'updraftplus'), + 'text' => __('To benefit, use this discount code:', 'updraftplus').' ', + 'image' => 'notices/black_friday.png', + 'button_link' => 'https://updraftplus.com/landing/updraftplus-premium', + 'button_meta' => 'updraftplus', + 'dismiss_time' => 'dismiss_season', + 'discount_code' => 'blackfridaysale2016', + 'valid_from' => '2016-11-23 00:00:00', + 'valid_to' => '2016-11-30 23:59:59', + 'supported_positions' => $dashboard_top_or_report, + ), + 'christmas' => array( + 'prefix' => '', + 'title' => __('Christmas sale - 20% off UpdraftPlus Premium until December 25th', 'updraftplus'), + 'text' => __('To benefit, use this discount code:', 'updraftplus').' ', + 'image' => 'notices/christmas.png', + 'button_link' => 'https://updraftplus.com/landing/updraftplus-premium', + 'button_meta' => 'updraftplus', + 'dismiss_time' => 'dismiss_season', + 'discount_code' => 'christmassale2016', + 'valid_from' => '2016-12-01 00:00:00', + 'valid_to' => '2016-12-25 23:59:59', + 'supported_positions' => $dashboard_top_or_report, + ), + 'newyear' => array( + 'prefix' => '', + 'title' => __('Happy New Year - 20% off UpdraftPlus Premium until January 1st', 'updraftplus'), + 'text' => __('To benefit, use this discount code:', 'updraftplus').' ', + 'image' => 'notices/new_year.png', + 'button_link' => 'https://updraftplus.com/landing/updraftplus-premium', + 'button_meta' => 'updraftplus', + 'dismiss_time' => 'dismiss_season', + 'discount_code' => 'newyearsale2017', + 'valid_from' => '2016-12-26 00:00:00', + 'valid_to' => '2017-01-01 23:59:59', + 'supported_positions' => $dashboard_top_or_report, + ), + 'spring' => array( + 'prefix' => '', + 'title' => __('Spring sale - 20% off UpdraftPlus Premium until April 31st', 'updraftplus'), + 'text' => __('To benefit, use this discount code:', 'updraftplus').' ', + 'image' => 'notices/spring.png', + 'button_link' => 'https://updraftplus.com/landing/updraftplus-premium', + 'button_meta' => 'updraftplus', + 'dismiss_time' => 'dismiss_season', + 'discount_code' => 'springsale2017', + 'valid_from' => '2017-04-01 00:00:00', + 'valid_to' => '2017-04-30 23:59:59', + 'supported_positions' => $dashboard_top_or_report, + ), + 'summer' => array( + 'prefix' => '', + 'title' => __('Summer sale 20% off UpdraftPlus Premium until July 31st', 'updraftplus'), + 'text' => __('To benefit, use this discount code:', 'updraftplus').' ', + 'image' => 'notices/summer.png', + 'button_link' => 'https://updraftplus.com/landing/updraftplus-premium', + 'button_meta' => 'updraftplus', + 'dismiss_time' => 'dismiss_season', + 'discount_code' => 'summersale2017', + 'valid_from' => '2017-07-01 00:00:00', + 'valid_to' => '2017-07-31 23:59:59', + 'supported_positions' => $dashboard_top_or_report, + ), + ); + } + + // Call this method to setup the notices + public static function notices_init() { + if (self::$initialized) return; + self::$initialized = true; + self::$notices_content = (defined('UPDRAFTPLUS_NOADS_B') && UPDRAFTPLUS_NOADS_B) ? array() : self::populate_notices_content(); + global $updraftplus; + $our_version = @constant('SCRIPT_DEBUG') ? $updraftplus->version.'.'.time() : $updraftplus->version; + wp_enqueue_style('updraftplus-notices-css', UPDRAFTPLUS_URL.'/css/updraftplus-notices.css', array(), $our_version); + } + + private static function translation_needed() { + $wplang = get_locale(); + if (strlen($wplang) < 1 || $wplang == 'en_US' || $wplang == 'en_GB') return false; + if (defined('WP_LANG_DIR') && is_file(WP_LANG_DIR.'/plugins/updraftplus-'.$wplang.'.mo')) return false; + if (is_file(UPDRAFTPLUS_DIR.'/languages/updraftplus-'.$wplang.'.mo')) return false; + return true; + } + + private static function url_start($html_allowed = false, $url, $https = false) { + $proto = ($https) ? 'https' : 'http'; + if (strpos($url, 'updraftplus.com') !== false){ + return $html_allowed ? "" : ""; + }else{ + return $html_allowed ? "" : ""; + } + } + + private static function url_end($html_allowed, $url, $https = false) { + $proto = ($https) ? 'https' : 'http'; + return $html_allowed ? '' : " ($proto://$url)"; + } + + public static function do_notice($notice = false, $position = 'top', $return_instead_of_echo = false) { + + self::notices_init(); + + if (false === $notice) $notice = defined('UPDRAFTPLUS_NOTICES_FORCE_ID') ? UPDRAFTPLUS_NOTICES_FORCE_ID : $notice; + + $notice_content = self::get_notice_data($notice, $position); + + if (false != $notice_content) { + return self::render_specified_notice($notice_content, $return_instead_of_echo, $position); + } + } + + /* + This method will return a notice ready for display. + */ + private static function get_notice_data($notice = false, $position = 'top') { + + /* + We need to check the database to see if any notices have been dismissed and if they have check if the time they have been dismissed for has passed, otherwise we shouldn't display the notices + */ + + $time_now = defined('UPDRAFTPLUS_NOTICES_FORCE_TIME') ? UPDRAFTPLUS_NOTICES_FORCE_TIME : time(); + + $notice_dismiss = ($time_now < UpdraftPlus_Options::get_updraft_option('dismissed_general_notices_until', 0)); + $seasonal_dismiss = ($time_now < UpdraftPlus_Options::get_updraft_option('dismissed_season_notices_until', 0)); + $autobackup_dismiss = ($time_now < UpdraftPlus_Options::get_updraft_option('updraftplus_dismissedautobackup', 0)); + + // If a specific notice has been passed to this method then return that notice. + if ($notice) { + if (!isset(self::$notices_content[$notice])) return false; + + // Does the notice support the position specified? + if (isset(self::$notices_content[$notice]['supported_positions']) && !in_array($position, self::$notices_content[$notice]['supported_positions'])) return false; + + /* + first check if the advert passed can be displayed and hasn't been dismissed, we do this by checking what dismissed value we should be checking. + */ + $dismiss_time = self::$notices_content[$notice]['dismiss_time']; + + if ('dismiss_notice' == $dismiss_time) $dismiss = $notice_dismiss; + if ('dismiss_season' == $dismiss_time) $dismiss = $seasonal_dismiss; + if ('dismissautobackup' == $dismiss_time) $dismiss = $autobackup_dismiss; + + if (!empty($dismiss)) return false; + + return self::$notices_content[$notice]; + } + + //create an array to add non-seasonal adverts to so that if a seasonal advert can't be returned we can choose a random advert from this array. + $available_notices = array(); + + //If Advert wasn't passed then next we should check to see if a seasonal advert can be returned. + foreach (self::$notices_content as $notice_id => $notice_data) { + // Does the notice support the position specified? + if (isset(self::$notices_content[$notice_id]['supported_positions']) && !in_array($position, self::$notices_content[$notice_id]['supported_positions'])) continue; + + // If the advert has a validity function, then require the advert to be valid + if (!empty($notice_data['validity_function']) && !call_user_func(array('UpdraftPlus_Notices', $notice_data['validity_function']))) continue; + + global $updraftplus; + + if (isset($notice_data['valid_from']) && isset($notice_data['valid_to'])) { + // Do not show seasonal notices to people with an updraftplus.com version and no-addons yet + if (!file_exists(UPDRAFTPLUS_DIR.'/udaddons') || $updraftplus->have_addons) { + $valid_from = strtotime($notice_data['valid_from']); + $valid_to = strtotime($notice_data['valid_to']); + if (($time_now >= $valid_from && $time_now <= $valid_to) && !$seasonal_dismiss) { + return $notice_data; + } + } + } else { + + $dismiss = false; + $dismiss_time = self::$notices_content[$notice_id]['dismiss_time']; + if ('dismiss_notice' == $dismiss_time) $dismiss = $notice_dismiss; + if ('dismiss_season' == $dismiss_time) $dismiss = $seasonal_dismiss; + if ('dismissautobackup' == $dismiss_time) $dismiss = $autobackup_dismiss; + + if (!$dismiss) $available_notices[$notice_id] = $notice_data; + } + } + + if (empty($available_notices)) return false; + + //If a seasonal advert can't be returned then we will return a random advert + + /* + Using shuffle here as something like rand which produces a random number and uses that as the array index fails, this is because in future an advert may not be numbered and could have a string as its key which will then cause errors. + */ + shuffle($available_notices); + return $available_notices[0]; + + } + + private static function render_specified_notice($advert_information, $return_instead_of_echo = false, $position = 'top') { + + if ('bottom' == $position) { + $template_file = 'bottom-notice.php'; + } elseif ('report' == $position) { + $template_file = 'report.php'; + } elseif ('report-plain' == $position) { + $template_file = 'report-plain.php'; + } else { + $template_file = 'horizontal-notice.php'; + } + + require_once(UPDRAFTPLUS_DIR.'/admin.php'); + global $updraftplus_admin; + return $updraftplus_admin->include_template('wp-admin/notices/'.$template_file, $return_instead_of_echo, $advert_information); + } +} diff --git a/plugins/updraftplus/index.html b/plugins/updraftplus/index.html new file mode 100644 index 0000000..a91e9df --- /dev/null +++ b/plugins/updraftplus/index.html @@ -0,0 +1,67 @@ + + + + +UpdraftPlus backup/restore/clone/migrate for WordPress + + + +

        UpdraftPlus Backup / Restore / Clone / Migrate plugin for WordPress

        + +

        UpdraftPlus, a backup/restore/clone/migration plugin for WordPress simplifies backups (and restoration). Backup into the cloud (Amazon S3, Dropbox, Google Drive, Rackspace Cloud, DreamObjects, FTP, SFTP, WebDAV and email) and restore with a single click. Backups of files and database can have separate schedules.

        + +
          +
        • Thousands of users: widely tested and reliable (over 140,000 downloads). Ranks in the top 1% on rankwp.com (228 out of 25,000 plugins).
        • +
        • Top-quality: ranks 45th out of 25,000 plugins for quality on rankwp.com (top 0.25% - last checked 23rd May 2013).
        • +
        • Supports backups to Amazon S3, Dropbox, Rackspace Cloud Files, Google Drive, DreamHost DreamObjects, FTP and email. Also (via an add-on) FTP over SSL, SFTP and WebDAV. (Note: Microsoft forbid SkyDrive to be used by backup software).
        • +
        • Quick restore (both file and database backups)
        • +
        • Backup automatically on a repeating schedule
        • +
        • Site duplicator/migrator: can copy sites, and (with add-on) move them to new locations
        • +
        • Files and databases can have separate schedules
        • +
        • Failed uploads are automatically resumed/retried
        • +
        • Select which files to backup (plugins, themes, content, other)
        • +
        • Select which components of a backup to restore
        • +
        • Download backup archives direct from your WordPress dashboard
        • +
        • Database backups can be encrypted for security
        • +
        • Debug mode that gives full logging of the backup
        • +
        • Internationalised (translations very welcome - see below)
        • +
        • Premium version and support available - https://updraftplus.com
        • +
        • Tested and supported on all current PHP versions (5.2, 5.3, 5.4)
        • +
        + +

        Don't Risk Anything Less

        + +

        Your backups are worth the same as your entire investment in your website. The day may come when you get hacked, or your hosting company does, or they go bust - without good backups, you lose everything. Do you really want to entrust all your work to plugins with only a few thousand downloads, or that has no professional backup or support? Believe us - writing a reliable backup plugin that works consistently across the huge range of WordPress deployments is hard.

        + +

        UpdraftPlus Addons And Premium

        + +

        UpdraftPlus is not crippled in any way - it is fully functional, with no annoying omissions. What we do have is various extra features, and guaranteed support, available from our website, updraftplus.com.

        + +

        If you need WordPress multisite compatibility (you'll know if you do), then you need UpdraftPlus Premium.

        + +

        Professional / Enterprise support agreements available

        + +

        UpdraftPlus is written by professional WordPress developers. If your site needs guaranteed support, then we are available. Just go to our shop.

        + +

        Are you multi-lingual? Can you translate?

        + +

        Are you able to translate UpdraftPlus into another language? Are you ready to help speakers of your language? UpdraftPlus itself is ready and waiting - the only work needed is the translating. The translation process is easy, and web-based - go here for instructions: https://updraftplus.com/translate/. (Or if you're an expert WordPress translator already, then just pick out the .pot file from the wp-content/plugins/updraftplus/languages/ directory).

        + +

        Many thanks to the existing translators:

        + + + +

        Other support

        + +

        We hang out in the support forum for this plugin - http://wordpress.org/support/plugin/updraftplus - however, to save our time so that we can spend it on development, please read the plugin's Frequently Asked Questions - https://updraftplus.com/support/frequently-asked-questions/ - before going there, and ensure that you have updated to the latest released version of UpdraftPlus.

        + +
        + + + \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-ar.mo b/plugins/updraftplus/languages/updraftplus-ar.mo new file mode 100644 index 0000000..12f85c6 Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-ar.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-ar.po b/plugins/updraftplus/languages/updraftplus-ar.po new file mode 100644 index 0000000..7b8c833 --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-ar.po @@ -0,0 +1,6109 @@ +# Translation of UpdraftPlus in Arabic +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2015-10-27 10:37:08+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: ar\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "" + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "" + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "" + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "" + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "" + +#: addons/webdav.php:91 +msgid "Path" +msgstr "" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "" + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "" + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "" + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "" + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "" + +#: admin.php:2310 +msgid "FAQs" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "" + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "" + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "" + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "" + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "" + +#: methods/ftp.php:355 +msgid "login" +msgstr "" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "" + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "" + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "" + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "" + +#: admin.php:2604 +msgid "Now" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "" + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "" + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "" + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "" + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "" + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "" + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "" + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "" + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "" + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "" + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "" + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "" + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "" + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "" + +#: admin.php:3420 +msgid "stop" +msgstr "" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "" + +#: admin.php:3092 +msgid "this backup set" +msgstr "" + +#: admin.php:3020 +msgid "calculate" +msgstr "" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "" + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "" + +#: admin.php:601 +msgid "Saving..." +msgstr "" + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:557 +msgid "Fetching..." +msgstr "" + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "" + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "" + +#: admin.php:2884 +msgid "Dismiss" +msgstr "" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "" + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "" + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "" + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "" + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "" + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "" + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "" + +#: admin.php:3860 +msgid "File Options" +msgstr "" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "" + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "" + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "" + +#: admin.php:5157 +msgid "settings" +msgstr "" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "" + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "" + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "" + +#: admin.php:442 +msgid "Extensions" +msgstr "" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "" + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "" + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "" + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "" + +#: addons/azure.php:524 +msgid "container" +msgstr "" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "" + +#: addons/azure.php:523 +msgid "optional" +msgstr "" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "" + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "" + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "" + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "" + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "" + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "" + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "" + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "" + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "" + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "" + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "" + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "" + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "" + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "" + +#: restorer.php:767 +msgid "Deferring..." +msgstr "" + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "" + +#: admin.php:3081 +msgid "Deselect" +msgstr "" + +#: admin.php:3080 +msgid "Select all" +msgstr "" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "" + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "" + +#: admin.php:634 +msgid "For backups older than" +msgstr "" + +#: admin.php:633 +msgid "week(s)" +msgstr "" + +#: admin.php:632 +msgid "hour(s)" +msgstr "" + +#: admin.php:631 +msgid "day(s)" +msgstr "" + +#: admin.php:630 +msgid "in the month" +msgstr "" + +#: admin.php:629 +msgid "day" +msgstr "" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "" + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "" + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "" + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "" + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "" + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "" + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "" + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "" + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "" + +#: admin.php:607 +msgid "Update quota count" +msgstr "" + +#: admin.php:606 +msgid "Counting..." +msgstr "" + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "" + +#: admin.php:603 +msgid "Connecting..." +msgstr "" + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "" + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "" + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "" + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "" + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "" + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "" + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "" + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "" + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "" + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "" + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "" + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "" + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "" + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "" + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "" + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "" + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "" + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "" + +#: admin.php:4423 +msgid "Site" +msgstr "" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "" + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "" + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "" + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "" + +#: admin.php:617 +msgid "Deleting..." +msgstr "" + +#: admin.php:616 +msgid "key name" +msgstr "" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "" + +#: admin.php:611 +msgid "Creating..." +msgstr "" + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "" + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "" + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "" + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "" + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "" + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "" + +#: addons/migrator.php:1861 +msgid "key" +msgstr "" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "" + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "" + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "" + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "" + +#: admin.php:608 +msgid "Adding..." +msgstr "" + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "" + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "" + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "" + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "" + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "" + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "" + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "" + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "" + +#: methods/email.php:73 +msgid "configure it here" +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "" + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "" + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "" + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "" + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "" + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "" + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "" + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "" + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "" + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "" + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "" + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "" + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "" + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "" + +#: admin.php:2831 +msgid "Personal support" +msgstr "" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "قم بعمل نسخ احطياتية من الملفات و قواعد البيانات." + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "دروب بوكس, جوجل درايف, بروتوكول اف تي بي, راك سبيس, البريد الإلكتروني" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "استرجع من نسخة احطياتية" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "مترجم لاكثر منs% لغة" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "اشتري الان" + +#: admin.php:2718 +msgid "Get it from" +msgstr "احصل علية من" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "" + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "" + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "" + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "" + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "" + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "" + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "" + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "" + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "" + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "" + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "" + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "" + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "" + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "" + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "" + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "" + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "" + +#: admin.php:4368 +msgid "Backup date" +msgstr "" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "" + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "" + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "" + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "" + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "" + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "" + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "" + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "" + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "" + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "" + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "" + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "" + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "" + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "" + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "" + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "" + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "" + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "" + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "" + +#: backup.php:829 +msgid "Incremental" +msgstr "" + +#: backup.php:829 +msgid "Full backup" +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "" + +#: backup.php:895 +msgid "read more at %s" +msgstr "" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "" + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "" + +#: admin.php:3872 +msgid "Database Options" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "" + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "" + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "" + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "" + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "" + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "" + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "" + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "" + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "" + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "" + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "" + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "" + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "" + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "" + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "" + +#: admin.php:4499 +msgid "External database" +msgstr "" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "" + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "" + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "" + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "" + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "" + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "" + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "" + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "" + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "" + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "" + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "" + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "" + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "" + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "" + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "" + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "" + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "" + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "" + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "" + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "" + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "" + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "" + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "" + +#: addons/sftp.php:425 +msgid "password/key" +msgstr " الرقم السري/المفتاح" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "مفتاح" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "للدخول يجب ادخال إما الرقم السري أو المفتاح، وليس كلاهما." + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "المفتاح الذي أدخلته غير صالح، أو أنه فاسد." + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "الرقم السري/المفتاح الخاص بـ SCP/SFTP" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "ملفات النسخة الإحتياطية (ولدت من طرف: %s.) " + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "الملفات وقاعدة البيانات للووردبريس بالنسخة الإحتياطية (ولدت من طرف: %s.)" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "ولدت النسخة الإحتياطية من طرف: %s." + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "قاعدة بيانات (ولدت من طرف: %s.) " + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "مصدر غير معروف" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "إعادة فحص الإستضافة الإستضافة السحابية" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "رفع ملفات النسخة الإحتياطية" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "تم خلق النسخة الإحتياطية من طرف %s, ويمكن استيرادها." + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "إقرأ هذه الصفحة لمعرفة المزيد وإمكانية الإصلاح." + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "ووردبريس يملك عدد (%d) من المهام المتأخرة. ما لم يكن هذا الموقع خاص بالتطوير، فهذا يعني أن خاصية المهام بالووردبريس غير شغالة." + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "إن كانت هذه النسخة الإحتياطية خلقت بإستخدام تطبيق آخر، يمكن لإضافة UpdraftPlus Premium مساعدتك في حل المشكلة." + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "مع ذلك، ملفات UpdraftPlus المضغوطة هي ملفات zip/SQL عادية - فإن كنت تعتقد أن الملف هو على الصيغة الصحيحة، المرجو إعادة تسميته بالإسم الموصى به." + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "هذا الملف لا نعتقد أنه نسخة احتياطية من UpdraftPlus ( كالملفات المضغوطة بصيغتي .zip أو . gz التي لها أسماء مثل: backup_(time)_(site name)_(code)_(type).(zip|gz))." + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "النسخة الإحتياطية خلقت من جهة غير معروفة (%s)، لا يمكن استيرادها." + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "مجلد (wp-content) غير موجود البثة بهذا الملف المضغوط." + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "هذه النسخة من UpdraftPlus لا تستطيع التعامل مع نوع النسخ الإحتياطية هذا." + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "أبدى %s إجابة HTTP غير متوقعة: %s" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "وحدة UpdraftPlus لطريقة الوصول للملف (%s) غير مدعومة من قبل الملفات المسرودة" + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "لم يتم العثور على الإعدادات" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "تمت إضافة واحدة أو أكثر من النسخ الإحتياطية التي وجدناها بالإستضافة السحابية، لاحظ أن هذه النسخ لن تتم مسحها أوتوماتيكيا من الإعادادات الإفتراضية، لو أو متى شئت حذفها يجب عليك حذفها يدويا." + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "جاري فحص الإستضافة السحابية والمساحة التخزينية المحلية بحثا عن نسخ احتياطية..." + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "(قراءة المزيد)" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "ضبط المسارات المتعددة" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "تسجيل كافة الرسائل بسجل الرسائل (من المحتمل أنه فقط مديري الخادم من سيغب في هذه العملية)" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "اضافة أخرى..." + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "حذف" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "الأسئلة الشائعة %s الأخرى." + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "تحقق من هذا الخيار لتتمكن من تلقي المزيد من المعلومات بر الإيميل لعمليات النسخ الإحتياطي - مفيدة جدا ان كان هناك مشاكل بالعملية." + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "في حال إدخال ملفات/مجلدات متعددة، عندها قم بالتفرقة بينها باستخدام الفاصلة. للكيانات بالمستوى العلوي، قم باستخدام * في بداية أو نهاية المدخلات لتحل محل البدائل." + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "تم الكشف عن بيانات لإضافة إدارة نوع المحتوى: تنضيف الخيارات" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "شركة الإستضافة لموقعك يجب أن تُفعل هذه الوضائف %s قبل أن نتمكن من العمل" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "نسخة PHP المنصبة تحمل هذه الوظائف الغير مفعلة: %s" + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "خادم FTP مشفر (تشفير واضح)" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "خادم FTP مشفر (تشفير غير واضح)" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "خادم FTP غير مشفر اعتيادي" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "نسخة احتياطية أنشأها:" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "متوفر للطلب من هذا الموقع" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "للحفاظ على ولوجك للدعم الفني، من فضلك جدد اشتراكك." + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "وصولك المدفوع للدعم الفني الخاص بـ UpdraftPlus اقتربت نهاية صلاحيته." + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "لاستعادة الوصول الخاصة بك، يرجى تجديد اشتراكك." + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "وصولك المدفوع للدعم الفني بـ UpdraftPlus انتهت صلاحيته." + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "وصولك المدفوع لتحديثات UpdraftPlus بهذا الموقع اقتربت نهاية صلاحيته." + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "للحفاظ على ولوجك لخدماتنا المدفوعة (من ضمنها التحديثات المستقبلية والتوافق مع نسخ ووردبريس المستقبلية) والدعم الفني، من فضلك جدد اشتراكك." + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "وصولك المدفوع لتحديثات UpdraftPlus على %s إضافة بهذا الموقع اقتربت نهاية صلاحيته." + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "وصولك المدفوع لتحديثات UpdraftPlus على %s إضافة بهذا الموقع انتهت صلاحيته." + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "للحفاظ على ولوجك للتحديثات (من ضمنها التحديثات المستقبلية والتوافق مع نسخ ووردبريس المستقبلية) والدعم الفني، من فضلك جدد اشتراكك. " + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "وصولك المدفوع لتحديثات UpdraftPlus بهذا الموقع اقتربت نهاية صلاحيته. لن تصلك أي تحديثات جديدة لـ UpdraftPlus." + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "استبعاد من لوحة التحكم (لمدة %s أسبوع)" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "نجاح محاولة التراجع من الضغط المزدوج" + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "فشل محاولة التراجع من الضغط المزدوج" + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "يبدو أن ملف قاعدة البيانات قد تم ضغطه مرتين - نعتقد أن الموقع الذي قمتم بتحميل الملف منه يحمل خادم سيرفر غير مهيء بشكل جيد" + +#: admin.php:1528 +msgid "Constants" +msgstr "ثوابت" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "فشل في فتح ملف قاعدة البيانات للقراءة:" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "لم نجد أي جداول لقاعدة البيانات" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "فضلا انتظر محاولة إعادة الجدولة" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "لاحظ أن رسائل التحذير استشارية - عملية النسخ الاحتياطي لا تتوقف بالنسبة لهم. بدلا من ذلك، ستوفر لك معلومات قد تجدها مفيدة، أو قد تشير إلى مصدر المشكلة إذا لم تنجح عملية النسخ الاحتياطي." + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "تمت معالجة %d من استعلامات قاعدة البيانات في مدة %.2f ثانية" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "جاري البحث واستبدال الصفوف: %d" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "تخطي هذا الجدول: بيانات هذا الجدول (%s) يجب الا تكون بحث / استبدال" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "حساب ممتلئ: حسابك %s يحمل فقط %d بايت متبقية، لكن الملف الذي نقوم برفعه حجمه %d بايت متبقية (الحجم الكلي: %d بايت)" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "أخطاء حدثت:" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "لتحميل ملف السجل لهذه العملية تابع هذا الرابط (ستحتاج هذا الملف في أي عملية طلب للدعم)" + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "تابع هذه التعليمات أيضا." + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "ان لم تختر أي خدمة للتخزين عن بعد، فكل ملفات النسخ الإحتياطية ستبقى مخزنة بسيرفرك. هذه العملية غير موصى بها (في حالة عدم تحميل هذه الملفات بجهازك الخاص)، لأنك بفقدان سيرفرك ستخسر معه ملفات النسخ الإحتياطية والموقع معا." + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "استرجاع (إذا لزم الأمر) وإعداد ملفات النسخ الاحتياطي ..." + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "اعدادات PHP بالسيرفر تسمح بتشغيل PHP لمدة %s ثانية فقط، ولا تسمح لوصول لهذا الحد. إن لم تتمكن من استرداد حجم كبير من البيانات بسبب هذا الحد، يمكنك الإتصال بشرك الإستضافة الخاصة بك (أو محاولة الإسترداد قطعة-قطعة)" + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "وجود مجلدات غير محذوفة من النسخة السابقة (من فضلك استخدم خيار \"مسح المجلدات القديمة\" لمسحها قبل المحاولة مرة أخرى) : %s" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "مقدار الوقت المسموح به لإضافات وورد بالتشغيل منخفض جدا (%s ثانية) - يجب زيادته لتجنب فشل النسخ الاحتياطي (استشر خدمة الزبناء الخاصة بشركة الإستضافة الخاص بك لمزيد من المساعدة - إعدادات max_execution_time PHP، و القيمة الموصى بها هي %s ثانية أو أكثر)" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "استبدال جداول من مدونات/موقع: من: %s إلى:%s" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "%s: تخطي ملف ذاكرة التخزين المؤقت (غير موجود مسبقا)" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "تم تعطيل هذه الإضافة: %s: يمكك اعادة تفعيلها عندما تكون مستعد." + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "انتهى توقيت الإتصال %s، إذا كنت دخلت الملقم بشكل صحيح، إذا فهذا الخطأ عادة ما يكون سببه جدار حماية قد حظر الاتصال - يجب أن تحقق من المشكلة مع شركة استضافة المواقع الخاصة بك." + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "لم يتم العثور على تصميم موقعكم الحالي، لمنع توقف تحميل الموقع، تم استرجاع التصميم الإفتراضي." + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "فشل في الإستعادة..." + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "رسائل:" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "تم العثور على خط SQL أكبر من الحد الأقصى لحجم الحزمة ولا يمكن تقسيمها، هذا الخط لن نتمكن من معالجته، وسنقوم بإبعاده: %s" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "المجلد غير متوفر" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "عنوان بريد إلكتروني جديد للعضو" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "اسم مستخدم جديد" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "مفتاح API الخاص بالمدير" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "اسم المستخدم للمدير" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "حساب الولايات المتحدة أو بريطانيا راك سبيس" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "قم بإدخال أسم/مفتاح API الخاص بك لخدمة Rackspace (بحيث يمكن مصادقة Rackspace لإنشاء مستخدمين جدد)، وأدخل اسم كستخدم جديد (فريد) وعنوان بريد إلكتروني للمستخدم الجديد واسم الحاوية." + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "خلق مستخدم وحاوية جديدة لمفتاح API " + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "مفتاح API: %s" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "كلمة السر: %s" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "اسم المستخدم: %s" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "فشل عملية رفع الملفات للخدمة السحابية (%s)" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "خطأ: اسم المستخدم أو البريد الإلكتروني مسجل مسبقا" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "تحتاج إلى إدخال عنوان بريد إلكتروني صالح جديد" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "تحتاج إلى إدخال حاوية" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "تحتاج إلى إدخال اسم مستخدم جديد" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "تحتاج إلى إدخال مفتاح API المشرف" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "تحتاج إلى إدخال اسم مستخدم مشرف" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "إنشاء مستخدم API جديدة مع الوصول إلى هذه الحاوية فقط (بدلا من حسابك بالكامل)" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "اضافة قدرات محسنة لخدمة Rackspace " + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "تم تعزيز ملفات المستضافة بخدمة Rackspace " + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "حاوية الملفات السحابية" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "مفتاح API للملفات السحابية" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "لإنشاء مستخدم فرعي ومفتاح API جديد لديه صلاحيات الوصول فقط إلى هذه الحاوية، قم بإستخدام هذه الإضافة." + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "اسم المستخدم للخدمة السحابية" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "لندن (LON)" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "هونغ كونغ (HKG)" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "ولاية فرجينيا الشمالية (IAD)" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "شيكاغو (ORD)" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "سيدني (SYD)" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "دالاس (DFW) (الافتراضي)" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "منطقة الملفات السحابة" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "الحسابات المنشأة بموقع rackspacecloud.com هي حسابات أمريكية، الحسابات المنشأة بموقع rackspace.co.uk هي حسابات بريطانية" + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "حساب Rackspace بالولايات المتحدة أو المملكة المتحدة" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "الحسابات المنشأة بموقع rackspacecloud.com هي حسابات أمريكية، الحسابات المنشأة بموقع rackspace.co.uk هي حسابات بريطانية " + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "فشل التفويض (راجع معلوماتك)" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "حدث خطأ غير معروف عند محاولة الاتصال بـ UpdraftPlus.Com" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "خلق" + +#: admin.php:556 +msgid "Trying..." +msgstr "اعادة المحاولة..." + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "كلمة المرور الخاصة بمستخدم RackSpace هي (هذا لن يظهر مرة أخرى):" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "(عندما تكون مفكوكة)" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "خطأ بالبيانات:" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "النسخة الإحتياطية لا توجد بتاريخ النسخ" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "تثبيت ووردبريس الخاص بك به مجلدات قديمة قبل حالة الإستعادة/الدمج ( معلومات تقنية: بها بادئة -old). يجب أن تضغط على هذا الزر لحذفها بمجرد التحقق من عمل الإستعادة." + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "تقسيم الخط لتفاذي الحجم الأقصى للحزم" + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "المستخدم لا يمتلك صلاحيات لتحريك الجداول. سنحاول الإستعادة عن طريق إفراغ الجداول، يمكن لهذه العملية النجاح طالما أننا نستعيد من نسخة ووردبريس مع نفس بنية قاعدة البيانات (%s)" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "بادئة جدول جديدة: %s" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "بذلا من الإحتفاظ أو نقل الملفات القديمة سيتم حذفها لأن الملفات لا تسمح بذلك" + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "%s: هذا المجلد موجود مسبقا، سيتم استبداله" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "لا يمكن نقل الملفات من مكانها. تحقق من أذونات الملف." + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "لا يمكن نقل الملفات من مكانها. تحقق من المجلد wp-content/upgrade. " + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "لا يمكن نقل البيانات بعيدا." + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "نقل البيانات القديمة بعيدا ..." + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "إضافة عنوان آخر ..." + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "أدخل عناوين بريد الكتروني هنا لإرسال تقرير لها عند انتهاء مهمة النسخ الاحتياطي." + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "تقارير البريد الإلكتروني" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "%s الاختباري:%s" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "ملفات:%s" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "استخدام قسم \"التقارير\" لتكوين عناوين البريد الإلكتروني ليتم استخدامها." + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr "(مع وجود تحذيرات (%s))" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr "(مع وجود أخطاء (%s))" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "معلومات التصحيح" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "تحميلها على:" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "الوقت المستغرق:" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "تحذيرات" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "أخطاء" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "أخطاء / تحذيرات:" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "يحتوي على:" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "بدأ النسخ الاحتياطي:" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "تقرير النسخ الاحتياطي" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "%d ساعة،%d دقيقة، %d ثانية" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "%d الأخطاء، %d تحذيرات" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "%s مصادقة" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "%s خطأ: %s" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "%s الشعار" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "%s لم ترسل الاستجابة المتوقعة - تحقق من ملف السجل الخاص بك لمزيد من التفاصيل" + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "وحدة PHP %s غير منصبة - من فضلك قم بمراسلة شركة الإستضافة لتمكينها" + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "لمزيد من الخيارات، استخدام الإضافة \"%s\"." + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "سيتم استخدام عنوان البريد الإلكتروني الخاص بالمشرف (%s)." + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "الإتصال" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "لمزيد من ميزات التقارير، استخدام اضافات التقارير." + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "(الإصدار: %s)" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "تحقق من حجم الملفات المسموح به بخدمة الإيميل، تقريبا %s ميجا، أي نسخ احتياطية أكبر من هذا الحجم لن تصلك أبدا." + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "عندما يتم تمكين طريقة تخزين البريد الإلكتروني، قم أيضا بإرسال النسخ الاحتياطي كاملة" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "آخر التحديثات:" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "تحتوي النسخة الإحتياطية على:" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "نسخ احتياطي: %s" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "تم إرفاق ملف السجل بهذا البريد الإلكتروني." + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "خطأ غير معروف / غير متوقع - يرجى رفع طلب دعم" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr " قاعدة البيانات فقط (لن يتم خلق نسخ احتياطية للملفات)" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "قاعدة بيانات (لم يتم إكمال نسخ الملفات احتياطيا)" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "الملفات فقط (لن يتم خلق نسخ احتياطية لقاعدة البيانات)" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "ملفات (لم يتم إكمال نسخ قاعدة بيانات احتياطيا)" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "ملفات وقواعد البيانات" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "(هذا ينطبق على جميع الإضافات للنسخ الاحتياطي لووردبريس ما لم تكن برمجة من أجل التوافق مع تعدد المواقع)." + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "عند عدم الترقية، سيقوم UpdraftPlus بالسماح لكل مدير بالمدونة بالتعديل على خيارات الإضافة للخسن الإحتياطي (وبالتالي الوصول للبيانات، بما في ذلك كلمات السر) وإستعادة (مع امكانية التعديل، مثال: كلمات السر) الشبكة بالكامل." + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "دعم مواقع ووردبريس متعددة، مع امتيازات اضافية، على حساب UpdraftPlus المميز، أو بإضافة المواقع المتعددة." + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "نسخة الووردبريس هذه تخدم مواقع عديدة (شبكة a.k.a.)." + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "تحذير UpdraftPlus :" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "(أو قم بالاتصال باستخدام النموذج على هذه الصفحة إذا كنت قد اشتريته بالفعل)" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "يرجى اتباع هذا الرابط لتحديث البرنامج المساعد من أجل تفعيله" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "يرجى اتباع هذا الرابط لتحديث البرنامج المساعد من أجل الحصول عليه" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "آخر" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "الإصدار: %s" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "كنت قد حصلت عليه" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "دعم UpdraftPlus" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "تحديث يحتوي على الإضافة الخاص بك متاح لـ UpdraftPlus - يرجى اتباع هذا الرابط للحصول عليه." + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "اضافات UpdraftPlus" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "يتوفر تحديث لUpdraftPlus - يرجى اتباع هذا الرابط للحصول عليه." + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "رد UpdraftPlus.Com، ولكننا لم نفهم الإستجابة " + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "لم يتم التعرف على عنوان البريد الإلكتروني وكلمة المرور عن طريق UpdraftPlus.Com" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "لا يمكن فهم إستجابة الموقع UpdraftPlus.Com (البيانات: %s)" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "رد UpdraftPlus.Com، ولكننا لم نفهم الإستجابة" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "فشلنا في الاتصال بنجاح إلى UpdraftPlus.Com" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "التقارير" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "خيارات (الخام)" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "إرسال تقرير فقط عندما تكون هناك تحذيرات / أخطاء" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "رابط المحتوى:" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "انظر أيضا \"ملفات إضافية\" الإضافة من متجرنا." + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "المساحة الحرة فى حساب الاستضافة الخاص بك قليلة جدا - فقط متبقى %s ميجا بايت" + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "كمية مقدار الذاكرة (RAM) المسموحة ل PHP قليلة جدا (%s ميجابايت) - يجب عليك زيادتها لتفادى مشاكل قلة الذاكرة (تحدث مع الاستضافة الخاصة بك لمزيد من المساعدة)" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "ادارة الأضافات" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "شراء" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "الحصول علية من متجر UpdraftPlus.Com" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "تنشيطة على هذا الموقع" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "لديك شراء غير فعال" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "تعيين إلى هذا الموقع" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "متاح لهذا الموقع (عن طريق الأضافات المشتراة)" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "(على ما يبدو انة اصدار قبل الاصدار الرسمى او اصدار مسحوب)" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "اذهب هنا" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "هل انت بحاجة للحصول على الدعم؟" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "حدث خطأ عند محاولة استرداد الأضافات الخاصة بك." + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "تم تلقى رد غير معروف. الرد هو:" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "المطالبة لم تمنح - بيانات تسجيل الدخول لحسابك خاطئة" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "الرجاء الأنتظار بينما نقوم بمراجعة المطالبة..." + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "حدث خطأ عند محاولة الأتصال ب UpdraftPlus.Com:" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "أنك حاليا غير متصل بحسابك فى UpdraftPlus.Com." + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "اذا كنت قد قمت بشراء اضافة جديدة, ثم اتبع هذا الرابط لتحديث اتصالك" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "انت حاليا متصل بحسابك فى UpdraftPlus.Com." + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "هل ترغب فى معرفة المزيد عن تأمين كلمة السر فى UpdraftPlus.Com؟ اقرأ عنها هنا." + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "هل نسيت التفاصيل الخاصة بك؟" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "لم تملك حساب بعد (انة مجانى)؟ احصل علية من هنا!" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "ربط مع حساب UpdraftPlus.Com الخاص بك" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "إصدار خادم الويب الخاص بك من PHP قديم جدا (" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "على ما يبدو انة لديك المكون الأضافى Updraft مثبت - ربما تم تثبيتة بطريقة خاطئة؟" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "اذهب هنا لبدء تثبيته." + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "لم يتم تثبيت UpdraftPlus حتى الآن." + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "اذهب هنا لتنشيطه." + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "UpdraftPlus لم يتم تنشيطة حتى الأن." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "اذهب هنا للاتصال." + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "حتى الأن انت غير متصل بحسابك فى UpdraftPlus.Com, لتتمكن من استخدام الأضافات اللتى قمت بشرائها." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "بدون ذلك, التشفير سيكون ابطأ بكثير." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "خادم الويب الخاص بك ليس بة الوحدة %s مثبتة." + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "(على ما يبدو انة تمت المصادقة , على الرغم من ذلك يمكنك المصادقة مرة اخرى لتحديث وصولك اذا كانت هناك مشكلة)." + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "اسقاط ملفات النسخ الاحتياطى هنا" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "إدارة ورد بريس من سطر الأوامر - لتوفير وقت كبير" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "تحقق من WordShell" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "تريد المزيد من المميزات المدفوعة, مضمونة الدعم؟ قم بمراجعة UpdraftPlus.Com" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "اعاد خادم الويب برمز خطأ (حاول مجددا, او قم بالتحقق من سجلات خادم الويب الخاص بك)" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "بدأت عملية الأستعادة. لا تضغط إيقاف أو إغلاق المتصفح حتى اعطائك التقرير بأنة تم انتهاء العملية." + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "إذا قمت باستبعاد كل من قاعدة البيانات والملفات, فقد قمت بأستبعاد كل شئ !" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "الصفحة الرئيسية للموقع:" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "خيارات التخزين البعيد" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "(السجلات يمكن العثور عليها فى صفحة اعدادات UpdraftPlus كالمعتاد)..." + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "تذكر هذا الاختيار في المرة القادمة (لايزال لديك الفرصة لتغييرة)" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "فشل التحميل" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "يمكنك أن ترسل نسخة احتياطية لأكثر من جهة واحدة مع الإضافة." + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "ملاحظة: يستند شريط التقدم أدناه على مراحل، وليس الوقت. لا توقف عملية النسخ الأحتياطى لمجرد أنه يبدو أنه قد بقي في نفس المكان لفترة من الوقت - - وهذا طبيعي." + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "(%s%%, ملف %s من%s)" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "قراءة المزيد عن كيفية عمل ذلك ..." + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "فشل:تمكنا من تسجيل الدخول، لكنه فشل في إنشاء ملف في ذلك الموقع بنجاح." + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "فشل:لقد تمكنا من تسجيل الدخول والانتقال إلى الدليل المشار إليه،لكنه فشل في إنشاء ملف في ذلك الموقع بنجاح." + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "استخدام SCP بدلا من SFTP" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "اعداد مستخدم SCP/SFTP" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "اعداد استضافة SCP/SFTP" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "محاولة ارسال النسخ الأحتياطى عن طريق البريد الألكترونى فشلت (من المحتمل ان يكون ملف النسخ الاحتياطى اكبر من المساحة المسموح بها فى البريد)" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "النسخ الأحتياطى من: %s" + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "اعدادات نتيجة اختبار %s" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "(غير منتهي)" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "اذا كنت ترى اكثر من نسخة احتياطية, ومن ثم انة من المحتمل ان هذا بسبب اعدادات حذف ملفات النسخ الاحتياطى القديمة لم يتم حذفها حتى اكتمال نسخة احتياطية جديدة." + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "لا تقم بوضعه داخل الإضافات أو دليل الإضافات، لأن ذلك سوف يسبب الإعادة (نسخة احتياطية من نسخة احتياطية من نسخة احتياطية من......)." + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "هذا هو المكان الذى UpdraftPlus يقوم بأنشاء ملفات zip. يجب ان يكون هذا الدليل قابل للكتابة من قبل خادم الويب الخاص بك. انة نسبة الى دليل محتوى موقعك (والتي افتراضيا يسمى wp-content)." + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "رقم الوظيفة: %s" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "آخر نشاط: منذ %ss" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "الاستئناف التالي: %d (بعد %ss)" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "غير معروف" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "الانتهاء من النسخ الاحتياطي" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "برجاء الأنتظار حتى الوقت المحدد لأعادة المحاولة بسبب الأخطاء" + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "تلقيم مجموعات النسخ الاحتياطي القديم" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "تحميل الملفات للمخزن البعيد" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "قاعدة بيانات مشفرة" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "تشفير قاعدة البيانات" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "تم انشاء النسخ الاحتياطى لقاعدة البيانات" + +#: admin.php:3359 +msgid "table: %s" +msgstr "الجدول: %s" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "انشاء النسخ الاحتياطى لقاعدة البيانات" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "تم انشاء ملف النسخ الاحتياطى zips" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "انشاء ملف النسخ الاحتياطى zips" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "بدأ النسخ الاحتياطى" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "تقدم النسخ الأحتياطى:" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "تم تعطيل الجدولة فى تثبيت وورد بريس الخاصة بك. عبر اعداد DISABLE_WP_CRON. لا يمكن تشغيل النسخ الاحتياطى (حتى \"النسخ الاحتياطي الآن\") الا اذا قمت بأعداد مرفق لأستدعاء الجدولة يدويا, او حتى تفعيلها." + +#: restorer.php:646 +msgid "file" +msgstr "ملف" + +#: restorer.php:639 +msgid "folder" +msgstr "مجلد" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "UpdraftPlus يحتاج لأنشاء %s فى دليل محتوى موقعك, لكنة فشل - من فضلك قم بالتحقق من الصلاحيات وقم بتفعيلها (%s)" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "لم ينتهي النسخ الاحتياطي؛ وتم جدولة الأستئناف" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "زوار موقع الويب الخاص بك و UpdraftPlus فى كثير من الأحيان لا يحصلون على الموارد التى يأملونها; من فضلك اقرأ هذة الصفحة:" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "المصادقة %s تعذر الأستمرار,لأن شيئا آخر على موقع الويب الخاص بك كسرها. حاول تعطيل الإضافات الأخرى الخاصة بك والتحويل إلى الثيم الأفتراضى. (على وجه التحديد، ابحث عن المكون الذي يرسل الإخراج (على الأرجح فى تحذيرات PHP / أخطاء) قبل بداية الصفحة. ايقاف اى اعدادات تصحيح قد تساعد ايضا)." + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "حد الذاكرة الخاص بك php (الذى وضعتة شركة الأستضافة الخاصة بك) منخفض جدا. UpdraftPlus حاول زيادتة لكنة لم ينجح. هذا البرنامج المساعد قد يواجه صعوبة مع حد الذاكرة أقل من 64 ميجا بايت - خصوصا اذا كنت تملك ملفات كبيرة مرفوعة (من ناحية اخرى,العديد من المواقع تنجح ب 32 ميجا بايت - لكن تجربتك قد تكون مختلفة)." + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "المضي قدما مع التحديث" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "لا تقم بالخروج بعد الضغط على زر البدأ - انتظر حتى انتهاء النسخ الاحتياطى" + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "UpdraftPlus النسخ الأحتياطى التلقائى" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "حدثت الأخطاء:" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "إنشاء النسخ الاحتياطي مع UpdraftPlus ..." + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "النسخ الاحتياطي التلقائي" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "انشاء النسخ الاحتياطى لقاعدة البيانات مع UpdraftPlus..." + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "ليس لديك الصلاحيات الكافية لتحديث هذا الموقع." + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "الثيمات" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "الإضافات" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "بدء النسخ الاحتياطي التلقائي ..." + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "انشاء %s وقاعدة البيانات الاحتياطية عن طريق UpdraftPlus..." + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "النسخ الاحتياطي تلقائيا (حسب الحاجة) للملحقات, الثيمات و قاعدة بيانات وردبريس مع UpdraftPlus قبل التحديث" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "اذا لم تكن متأكدا يجب عليك التوقف; والأ من المحتمل تدمير نسخة الورد بريس الخاصة بك" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "هذة تبدو كأنها نسخة احتياطية اساسية صالحة للوردبريس - الملف %s كان مفقود." + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "غير قادر على فتح ملف مضغوط (%s) - لا يمكن القيام بالفحص للتحقق من سلامتة." + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "غير قادر على قراءة الملف المضغوط (%s) - لم يمكن فحصه للتأكد من سلامتة." + +#: admin.php:2310 +msgid "More plugins" +msgstr "مزيد من الملحقات" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "الدعم" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "UpdraftPlus غير قادر على العثور على بادئة الجدول عند فحص النسخة الاحتياطية لقاعدة البيانات." + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "هذة النسخة الاحتياطية لقاعدة البيانات تفتقد جداول رئيسية: %s" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "انت تقوم بالأستيراد من اصدار احدث من الورد بريس (%s) فى نسخة اقدم (%s). لا يوجد ضمانات ان ورد بريس يمكنة التعامل مع هذا." + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "حجم قاعدة البيانات صغير جدا بالنسبة لقاعدة بيانات ورد بريس صالحة (الحجم: %s ك بايت)." + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "تحديث الثيم" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "تحديث المكون الإضافي" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "كن أمنا مع النسخ الاحتياطي التلقائي" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "رفض ( ل %s اسابيع)" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "مسار الرفع (%s) غير موجود - إعادة ضبط (%s)" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "إذا كنت لا تزال ترى هذه الكلمات بعد انتهاء صفحة التحميل، ف انة يوجد مشكلة فى الجافا سكريب او jQuery فى الموقع." + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "تم رفع الملف." + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "استجابة الخادم غير معروفة:" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "استجابة الملقم غير معروف:" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "سيتم محاولة فتح مفتاح التشفير:" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "اتبع هذا الرابط لمحاولة فك التشفير وتحميل ملف قاعدة البيانات على جهازك." + +#: admin.php:584 +msgid "Upload error" +msgstr "خطأ فى الرفع" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "هذا الملف لا يبدو انة ملف UpdraftPlus مضغوط مشفر لقاعدة البيانات (هذة الملفات .gz.crypt التى لديها اسم مثل: backup_(time)_(site name)_(code)_db.crypt.gz)." + +#: admin.php:582 +msgid "Upload error:" +msgstr "خطأ التحميل:" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "(تأكد من انك كنت تحاول رفع ملف مضغوط تم إنشاؤه مسبقا من قبل UpdraftPlus)" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "وبعد ذلك، إذا كنت ترغب في ذلك،" + +#: admin.php:572 +msgid "Download to your computer" +msgstr "تحميل الى جهاز الكمبيوتر الخاص بك" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "حذف من خادم الويب الخاص بك" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "امثلة من مقدمى التخزين المتوافق-s3:" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "لن يتم حذف اى ارشيف بعد فك الضغط عنة, بسبب عدم وجود سحابة التخزين لهذه النسخة الاحتياطية" + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "يبدو انة مفقود واحد او اكثر من هذة الأرشيفات من مجموعة الأرشيف المتعددة." + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "(%d الأرشيف(s) in set)." + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "تقسيم كل ارشيف:" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "الخطأ: الخادم ارسل لنا استجابة (JSON) اللتى لم نتمكن من فهمها." + +#: admin.php:563 +msgid "Warnings:" +msgstr "تحذيرات:" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "خطأ: ارسل خادم السيرفر استجابة فارغة." + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "هذا يبدو كأنة ملف تم انشائة بواسطة UpdraftPlus, ولكن هذا التثبيت لا يعرف هذا النوع من المواضيع: %s. ربما تحتاج الى تثبيت اضافة ما؟" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "تمت معالجة ملفات الأرشيف الأحتياطية بنجاح, لكن مع بعض الأخطاء. سوف تحتاج الى الألغاء وتصحيح اى مشاكل قبل اعادة المحاولة." + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "تمت معالجة ملفات الأرشيف الأحتياطية بنجاح, ولكن مع بعض التحذيرات. اذا كان كل شئ على مايرام, اضغط على استعادة مرة اخرى للأستمرار. غير ذلك, قم بالألغاء وتصحيح اى مشاكل اولا." + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "تمت معالجة ملفات الأرشيف الأحتياطية بنجاح. الأن اضغط استعادة مرة اخرى للأستمرار." + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "مجموعة النسخ الأحتياطى متعددة الأرشيف لديها هذة الأرشيفات مفقودة: %s" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "تم العثور على الملف %s, لكن لدية حجم مختلف (%s) عن الذى توقعناة (%s) - قد يكون تالفا." + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "تم العثور على الملف, لكن حجمة صفر ( تحتاج الى رفعة): %s" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "الملف غير موجود (تحتاج الى رفعة): %s" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "هذا الدليل لا يوجد بة اى مجموعات نسخ احتياطى" + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "لم يتم العثور على ارشيف النسخ الأحتياطى لهذا الملف. استخدام طريقة التخزين البعيد (%s) لا يسمح لنا بأسترداد الملفات. لأجراء اى اعادة استخدم UpdraftPlus, سوف تحتاج الى الحصول على نسخة من هذا الملف ووضعها داخل مجلد العمل ل UpdraftPlus" + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "فشل فى تحريك الدليل (تحقق من صلاحيات الملف ومساحة القرص): %s" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "فشل فى نقل الملف (تحقق من صلاحيات الملف و مساحة القرص): %s" + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "نقل النسخ الأحتياطى الذى تم فك حزمة الى المكان..." + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "فشل فى فتح ملف مضغوط (%s) - %s" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "مسار جذر الوردبريس فى الخادم: %s" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "نقطة النهاية %s " + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "... وغيرها الكثير!" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "S3 (متوافق)" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "الملف غير موجود - يحتاج الى استراجعة من التخزين البعيد" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "ابحث عن الأرشيف %s : اسم الملف: %s" + +#: admin.php:4836 +msgid "Final checks" +msgstr "الفحوصات النهائية" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "حدد هذا المربع لحذف اى ملفات النسخ الأحتياطى الزائدة من السيرفر الخاص بك بعد انتهاء عملية النسخ الأحتياطى (أي بمعنى. اذا لم تقم بالتحديد, فأنة سوف تظل ايضا الملفات اللتى ارسللت عن بعد على السيرفر محلياً, وان الملفات اللتى يتم الأحتفاظ بها محليا لن تكون خاضعة لحدود الأبقاء)." + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "اسقاط ملف قاعدة البيانات المشفرة (ملفات db.gz.crypt) هنا لتحميلها لفك التشفير" + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "المسار الخاص بمحتوى wp-content على السيرفر هو: %s" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "تاريخ النسخ الاحتياطي الخام" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "مشاهدة النسخ الاحتياطي الخام وقائمة الملفات" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "تجهيز الملفات - يرجى الأنتظار..." + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "يرجى الرجوع الى الأسئلة الشائعة للحصول على المساعدة بشأن ما ينبغى القيام بة حيال ذلك." + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "تركيب وردبريس الخاص بك بة مشكلة اخراج مسافة بيضاء اضافية. قد يفسد هذا النسخ الأحتياطية التى قمت بتحميلها من هنا." + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "فشل فى فتح ملف قاعدة البيانات." + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "فشل فى كتابة قاعدة البيانات المشفرة الى ملفات النظام." + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "النسخ الأحتياطى المعروفة (الخام)" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "غير قادر على وجود اى ملفات فى هذا الدليل." + +#: restorer.php:939 +msgid "Files found:" +msgstr "العثور على ملفات:" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "استخدام الدليل من النسخة الأحتياطية: %s" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "محرك الجدول المطلوب (%s) غير موجود - تغيير لMYISAM." + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "هذة تبدو كأنها ترحيل (النسخة الأحتياطة من موقع عنوان الرابط الخاص بة مختلف), لكنك لم تقم بالأشارة على خيار البحث واستبدال قاعدة البيانات. عادة ما يكون خطأ." + +#: admin.php:4908 +msgid "file is size:" +msgstr "حجم الملف:" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "اذهب هنا لمزيد من المعلومات." + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "بعض الملفات لاتزال يتم تحميلها او اعدادها - من فضلك انتظر." + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "هذة النسخة الأحتياطية من موقع مختلف - هذة ليست استعادة, لكن ترحيل. انت تحتاج الى البرنامج المساعد Migrator لتسطيع اتمام هذا العمل." + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "المنطقة الزمنية المستخدمة هى من اعدادات الورد بريس الخاصة بك, في إعدادات -> عام." + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "ادخل فى صيغة HH:MM (مثل 14:22)." + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "فشل ارسال الملف %s" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "فشل تسجيل الدخول %s" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "لا يبدو انة تمت المصادقة مع: %s" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "فشل الوصول الى %s عند الحذف (تحقق من ملف السجل لمزيد من المعلومات)" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "لا يبدو انة لديك التصريح ل %s (لحين الحذف)" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "خطأ فى الأسقاط: %s (تحقق من السجل لمزيد من المعلومات)" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "خطأ - فشل فى تحميل الملف من %s" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "خطأ - لا يوجد مثل هذا الملف فى %s" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "خطأ %s" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "خطأ %s - فشل فى ارسال الملف" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "خطأ %s - فشل فى اعادة تجميع الأجزاء" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "المصادقة فشلت %s" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "خطأ: %s" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "دليل النسخ الأحتياطى المحدد موجود, لكنة غير قابل للكتابة." + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "دليل النسخ الأحتياطى المحدد غير موجود." + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "تحذير: %s" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "اخر تشغيل لوظيفة النسخ الأحتياطى:" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "مصادفة ملف كبير جدا: %s (الحجم: %s ميجابايت)" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "%s: الملف غير قابل للقراءة - لا يمكن ان يتم اجراء النسخ الأحتياطى" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "الجدول %s بة عدد كبير من الصفوف (%s) - نأمل ان شركة الأستضافة الخاصة بك تعطيك ما يكفى من الموارد لتفريغ هذا الجدول من النسخة الأحتياطة." + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "حدث خطأ اثناء اغلاق ملف قاعدة البيانات النهائي." + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "مصادفة تحذيرات:" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "على ما يبدو ان النسخ الأحتياطى تم بنجاح (مع تحذيرات) وانة انتهى الأن" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "المساحة الحرة على القرص الخاص بك منخفضة جدا - فقط متبقى %s ميجابايت" + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "الموقع الجديد:" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "خطأ: رابط الموقع موجود مسبقاً." + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "المواقع المدمجة (من UpdraftPlus)" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "ادخل تفاصيل عن مكان هذا الموقع الجديد ضمن المواقع المتعددة الخاصة بك:" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "المعلومات اللازمة للأستمرار:" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "تفعيل ثيم الشبكة:" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "المكون الأضافى:" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "تحقق من اذونات الملفات الخاصة بك: تعذر الدخول او انشاء الدليل:" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "بعض خوادم FTP المشفرة اعلن انها متوفرة, ولكن بعدذلك انتهى الوقت (بعد وقت طويل) عند محاولتك استخدامة. اذا وجدت هذا يحدث, قم بالذهاب الى \" الخيارات المتقدمة\" (أدناة) وايقاف SSL هناك." + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "خادم الويب الخاص بك لا يشمل تركيب وحدة نمطية مطلوبة من PHP (%s). يرجى الأتصال بمزود خدمة الأستضافة الخاصة بك وطلب منهم تفعيلها." + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "يرجى التحقق من وصول بيانات الأعتماد." + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "الخطأ الذى تم التبليغ عنة من %s هو:" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "يرجى تقديم المعلومات المطلوبة, ومن ثم الاستمرار." + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "لا يمكن اسقاط الجدوال, بدلا من ذلك احذفها (%s)" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "لا يمكن إنشاء جداول جديدة، حتى تخطى هذا الأمر (%s)" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "معلومات عن الموقع:" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "مستخدم قاعدة البيانات الخاصة بك ليس لدية تصاريح لأنشاء الجدوال. نحن سوف نقوم بمحاولة الأستعادة عن طريق افراغ الجداول; هذا يجب ان يعمل طالما تستعيدها من اصدار وردبريس بة نفس بنية قاعدة البيانات, وقاعدة البيانات المستوردة لا تحتوى على اى جداول التى ليست موجودة على موقع المستورد." + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "تحذير:" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "انت تعمل على وردبريس متعدد المواقع - لكن النسخة الأحتياطية الخاص بك ليست لموقع متعدد المواقع." + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "تخطى استعادة وردبريس الأساسية عند استيراد موقع واحد فى الثبيت متعدد المواقع. اذا كان لديك اى شئ ضرورى فى دليل وردبريس الخاص بك فأنك سوف تحتاج الى اعادة اضافتة يدوياً من ملف مضغوط." + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "لا تشمل php خادم السيرفر الخاص بك المطلوبة (الى %s) الوحدة (%s). يرجى الأتصال بخدمة دعم استضافة الويب واطلب منهم تفعيل الوحدة." + +#: admin.php:596 +msgid "Close" +msgstr "اغلق" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "استجابة غير متوقعة:" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "لأرسال الى اكثر من عنوان واحد, قم بوضع فاصلة بين كل عنوان." + +#: admin.php:576 +msgid "PHP information" +msgstr "معلومات PHP" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "وجد ملف مضغوط قابل للتنفيذ:" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "اظهار معلومات PHP التالى (phpinfo)" + +#: admin.php:2627 +msgid "Get it here." +msgstr "احصل عليه من هنا." + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "اذا, قم بتجربة البرنامج الأضافى \"Migrator\". بعد استخدامة لمرة واحدة. سوف تجد انك قمت بتوفير سعر شراء الادوات الاخرى و ايضا الوقت الذى يتم استخدامة لنقل الموقع يدوياً." + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "هل تريد ترحيل او استنساخ / تكرار الموقع؟" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr " اقرأ هذة المقالة لمعرفة كيف يتم ذلك خطوة بخطوة." + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "تصدير الموقع" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "جارى الحذف...يرجى اتاحة الوقت لأكمال الأتصال مع التخزين البعيد." + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "حذف ايضاً من التخزين البعيد" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "اخر اخبار UpdraftPlus.com:" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "استنساخ/ترحيل" + +#: admin.php:2304 +msgid "Premium" +msgstr "مميز" + +#: admin.php:2305 +msgid "News" +msgstr "اخبار" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "لم يتم العثور على مجموعة النسخ الأحتياطى" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "%s - لا يمكن دعم هذا الكيان; دليل المقابلة غير موجود (%s)" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "رابط RSS" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "رابط المدونة" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "اشترك فى مدونة UpdraftPlus للحصول على احدث الأخبار والعروض" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "اختبار اعدادات %s ..." + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "او, يمكنك وضعها يدويا فى مسار UpdraftPlus الخاص بك (عادة wp-content/updraft)، على سبيل المثال عبر FTP، ومن ثم استخدام الرابط \"إعادة الفحص\" أعلاه." + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "UpdraftPlus على وضع تصحيح الأخطاء. قد تشاهد ملاحظات التصحيح على هذة الصفحة وليس فقط على UpdraftPlus، ولكن من اى برنامج اضافى اخر مثبت. يرجى محاولة التأكد من ان الملاحظات التى تراها هى من UpdraftPlus قبل طلب الدعم." + +#: admin.php:880 +msgid "Notice" +msgstr "لاحظ" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "مصادفة اخطاء:" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "اعادة الفحص (يبحث عن النسخ الاحتياطية التي قمت برفعها يدويا في مسار النسخ الاحتياطي الداخلي)..." + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "بدأ البحث عن هذا الكيان" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "المتجر فى" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "\"%s\" لا يوجد لدية مفتاح اساسى, تحتاج الى تغيرها يدويا فى الصف %s." + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "الصفوف: %d" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "الوقت المستغرق (ثانية):" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "الأخطاء:" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "تشغيل اوامر تحديث SQL:" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "التغييرات التي تم إجراؤها:" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "فحص الصفوف:" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "فحص الجداول:" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "لا يمكن الحصول على قائمة الجداول" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "البحث والأستبدال فى قاعدة البيانات: استبدل %s فى تفريغ النسخ الأحتياطى مع %s" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "تحذير: رابط موقع قواعد البيانات (%s) يختلف عن ما كنا نتوقعة (%s)" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "لا شئ لعملة: رابط الموقع بالفعل: %s" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "خطأ: معلمة فارغة غير متوقعة (%s, %s)" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "لم يتم تحديد هذا الخيار." + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "قاعدة البيانات: بحث واستبدال عنوان الموقع" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "فشل: لم نستطع فهم نتيجة العملية بواسطة %s ." + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "فشل: العملية %s لم تكن قادرة على البدأ." + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "(مزيد من المعلومات)" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "بحث واستبدال قاعدة البيانات فى الموقع (ترحيل)" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "سيتم استبدال كافة المراجع الى الموقع فى قاعدة البيانات مع رابط الموقع الحالى, الذى هو: %s" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "مدونة الملفات المرفوعة" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "لابد من استخدام الأضافات" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "ليس لديك الصلاحيات لدخول هذة الصفحة." + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "ليس لديك الصلاحيات الكافية لدخول هذة الصفحة." + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "تثبيت الموقع المتعدد" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "ابتداء من المرة القادمة انها" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "فشل: المنفذ يجب ان يكون عدد صحيح." + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "كلمة السر" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "اسم المستخدم" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "اسم المضيف" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "حيث لتغير الدليل الى بعد تسجيل الدخول - غالبا ما يكون هذا هو نسبة الى الدليل الرئيسى الخاص بك." + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "مسار الدليل" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "كلمة السر" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "المنفذ" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "الاستضافة" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "خطأ %s: فشل التحميل" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "تحقق من أذونات الملف الخاص بك: تعذر الإنشاء والدخول بنجاح :" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "لم يتم العثور على %s " + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "يتم استخدام التشفير الصريح بشكل افتراضي. لإجبار التشفير الضمني (منفذ 990)، قم بإضافة :990 لخادم بروتوكول نقل الملفات الخاصة بك أدناه." + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "FTP مشفرة متاح، وسيجرب أولا تلقائيا (قبل أن نتراجع إلى النسخة الغيرمشفرة إذا لم ننجح)، إلا إذا كنت تعطيله باستخدام خيارات المتقدمة. زر 'اختبار دخول FTP ' سيخبركم بنوع الإتصال المستخدم." + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "لا توجد نسخ احتياطية من المجلدات %s : لم نجد أي شيء لنعمل له نسخة احتياطية" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "كن حذرا مما تدخل - إذا قمت بالدخول / عندها سيقوم بعمل نسخة مضغوطة من كامل سيرفرك الخاص." + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "إذا استخدمته، أدخل مسار مطلق (هذا ليس متعلقا بتنصيب الووردبريس)." + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "إذا لم تكن متأكدا ما هو هذا الخيار، إذا انت حتما لا ترغب فيه، ويجب عليك إيقاف تشغيله." + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "أدخل الدليل:" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "ملفات أخرى" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "أساسيات ووردبريس (بما في ذلك أية إضافات لدليل ووردبريس الخاص بك)" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "الملفات بالأعلى تشمل جميع ملفات تنصيب الووردبريس" + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "إعادة كتابة wp-config.php" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "لب الووردبريس" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "فشل: لم نكن قادرين على وضع ملف في هذا الدليل - يرجى مراجعة بيانات الاعتماد الخاصة بك." + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "فشل" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "رابط WEBDAV" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "فشلت الكتابة المحلية: فشل تحميل" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "خطأ في فتح الملف : فشل في التحميل" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "قطعة %s: حدث خطأ %s" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "تم العثور على أية إعدادات %s" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "فشل: نجحنا في تسجيل الدخول، لكن لا يمكننا إنشاء ملف في الدليل المعطى." + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "نجاح: نجحنا في تسجيل الدخول، وتأكيد قدرتنا على إنشاء ملف في الدليل المعطى (نوع تسجيل الدخول:" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "خطأ: لم نتمكن من تسجيل الدخول بنجاح." + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "خطأ: ولم تعط أية تفاصيل خادم." + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "يحتاج إلى وجود بالفعل" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "إذا كنت تريد تشفير (على سبيل المثال كنت تخزن بيانات الأعمال الحساسة)، فهناك اضافة متاحة لهذا الغرض." + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "UpdraftPlus تدعم فقط حسابات FTP الغير مشفرة" + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "اسم الحساب %s الخاص بك: %s" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "على الرغم من أن جزء من المعلومات الذي عاد لم يكن كما هو متوقع - الأميال الخاص بك قد تختلف" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "تم المصادقة على %s حسابك" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "هناك اضافة لذلك." + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "اذا كنت تستخدم النسخ الأحتياطى لعدة مواقع فى نفس الدروب بوكس وتريد ان تقوم بتنظيمها مع المجلدات الفرعية, اذا" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "يتم حفظ النسخ الأحتياطية فى" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "هل تحتاج الى استخدام المجلدات الفرعية؟" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "خطأ: فشل فى رفع الملف الى %s (انظر السجل لمزيد من التفاصيل)" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "لا يبدو ان المصادقة مع Dropbox" + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "التواصل مع %s كان غير مشفر." + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "التواصل مع %s كان مشفر." + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "نحن وصلنا الى الباكت, وتمكنا من انشاء الملفات داخلها." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "تم الوصول بنجاح الى الباكت. ولكن محاولة انشاء الملف فشلت." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "فشل" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "فشل: لم نستطع بنجاح الدخول او انشاء باكت. من فضلك تحقق من اذون الصلاحية, واذا كانت صحيحة اذا حاول اسم باكت اخر (كمستخدم اخر %s استخدم الأسم بالفعل)." + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "المنطقة" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "فشل: لم ترد تفاصيل الباكت." + +#: methods/s3.php:961 +msgid "API secret" +msgstr "API السرية" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "ادخال فقط اى اسم الدلو او مسار الدلو. امثلة: mybucket, mybucket/mypath" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "المكان %s" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "المفتاح السرى %s" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "مفتاح الوصول %s" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "إذا كنت ترى أخطاء حول شهادات SSL، يرجى الدخول هنا للمساعدة." + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "احصل على مفتاح وصولك و كلمتك السرية من %s آلتك، ثم اختر اسم مستخدم (أحرف وأرقام) (فريد - كل %s المستخدمين) (ومسار اختياريا) لإستخدامه للتخزين. هذا الدلو سيتم خلقه لك ان لم يكن موجود أصلا." + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "خطأ %s : فشل في الوصول إلى الدلو %s. تحقق من الأذونات واعتماداتك. " + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "%s خطأ: فشل في تحميل %s. تحقق من الأذونات واعتماداتك." + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "%s خطأ في إعادة التجميع (%s): (انظر السجل لمزيد من التفاصيل) " + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "%s الرفع (%s): إعادة تجميع الملفات التي فشل رفعها (انظر السجل لمزيد من التفاصيل)" + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "%s قطعة %s : فشل الرفع" + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "%s خطأ: تم اختصار الملف %s بشكل غير متوقع" + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "%s الرفع: فشل الحصول على uploadID للتحميل المتعدد- راجع ملف السجل لمزيد من التفاصيل" + +#: methods/email.php:69 +msgid "Note:" +msgstr "ملاحظة:" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "نسخ ووردريس احتياطيا" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "تم الوصول إلى الحاوية، ويمكننا إنشاء ملف داخلها " + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "خطأ بملفات السحابة - تم الوصول إلى الحاوية، لكننا فشلنا في إنشاء ملف داخلها" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "خطأ: ولم تعط أية تفاصيل عن الحاوية." + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "اسم المستخدم" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "مفتاح API" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "فضل: لم تعطى أية %s." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "وحدة UpdraftPlus %s تتطلب %s من فضلك لا تقم بتقديم أي طلبات دعم، فليس هناك أي بديل." + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "سحابة الملفات الحاوية" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "سحابة ملفات مفاتيح API " + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "سحابة ملفات المستخدم" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "المملكة المتحدة" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "الولايات المتحدة (افتراضى)" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "سحابة الولايات المتحدة او المملكة المتحدة" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "أيضا، يجب عليك قراءة هذا التعليمات الهامة." + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "احصل على مفتاح API من خدمة Rackspace Cloud (يمكن قراءة التعليمات هنا)، ثم قم باختيار اسم حاوية لإستخدام مساحة التخزين. سيتم خلق هذه الحاوية ان لم تكن موجودو مسبقا." + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "اختبار %s الإعدادات" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "خطأ في تحميل الملف بالخدمة السحابية: فشل في تحميل (" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "خطأ في فتح ملف محلي: فشل التحميل" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "خطأ بملفات سحابة - فشل في رفع الملف" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "%s خطأ: فشل في تحميل" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "%s خطأ: فشل في فتح ملف محلي" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "خطأ ملفات السحابة - فشل في إنشاء والوصول إلى الحاوية" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "فشل المصادقة بملفات سحابة" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "بعد حفظ خياراتك (بالضغط على زر 'حفظ التغيرات' أدناه)، قم بالرجوع مرة أخرى هنا وقم بزيارة الرابط لإكمال عملية المصادقة مه جوجل." + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "المصادقة مع جوجل" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "سر العميل" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "اذا أظهر لك جوجل في وقت لاحق لك رسالة \"invalid_client\"، إذا فأنت لم تقم بإدخال معرف عميل صالح هنا." + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "معرف العميل" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "يجب إضافة ما يلي كأذن لإعادة توجيه URI (تحت \"خيارات أخرى\") عندما تسأل" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "اختر 'تطبيق ويب \"كنوع التطبيق." + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "للحصول على مساعدة لفترة أطول، بما في ذلك لقطات، اتبع هذا الرابط. وصف أدناه ما يكفي لعدد أكبر من المستخدمين الخبراء." + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "%s هو خيار صائب، لأن UpdraftPlus يدعم الرفع المقسم - لا يهمنا كم حجم موقعكم، لأن UpdraftPlus يستطيع تقسيم ورفع الأجزاء المقسمة، ولن يحبط من كثرة المهلات." + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "حساب غير مخول." + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "فشل في تحميل إلى %s" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "حساب مكتمل: حساب %s الخاص بك يتوفر فقك على %d بايت متبقية، ولكن الملف حجمه %d بايت" + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "لم تتمكن بعد من الحصول على رمز من جوجل - يتوجب عليك أن تصادق أو تعيد المصادقة مع خدمة جوجل درايف." + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "لديك حساب %s مصادق عليه." + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "نجاح" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "نسبة %s تدفق البيانات المخصص لك: %s %% مستخدمة، %s متوفرة" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "فشل التخويل" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "لم نتمكن من الحصول على أي رمز من جوجل. يعني هذا غالبا أنكم قمتم بإدخال رقمكم السري خاطئ، أو أنكم لم تتمكنوا من إعادة مصادقة الخدمة (أسفله) بعد تصحيحها. تأكد منها، ثم قم بمتابعة الرابط أسفله لإعادة المصادقة مع الخدمة مرة أخرى. أخيرا، إن لم تعمل الإضافة، قم باستعمال خيار الخبراء لإعادة مسح كل خياراتكم، أنشئ معرف عميل جوجل جديد وابدأ من الصفر." + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "اتبع هذا الرابط للحصول عليه" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "دعم %s متوفر على شكل إضافة " + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "لا تمتلك إضافة UpdraftPlus %s - نوصيك بتحميلها من %s" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "تحتاج إلى إعادة المصادقة مع %s، معلومات الاعتماد الموجودة لديك لا تعمل." + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "حسنا" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "لقد تغير بادئة الجدول: تغيير %s حقل / حقول الجدول وفقا لذلك:" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "الانتهاء: خطوط تمت معالجتها: %d في %.2f ثانية" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "ادارة استعلام قاعدة البيانات كانت في:" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "إستعادة على النحو التالي:" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "بادئة الجدول القديمة:" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "نسخة احتياطية لـ:" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "وصول لقاعدة البيانات: الوصول المباشر لـ MySQL غير متوفر، لذا لم نتمكن من الرجوع لـ wpdb (هذا سيكون أبطأ بكثير)" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "فشل في فتح ملف قاعدة البيانات" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "فشل في العثور على ملف قاعدة البيانات" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "تحذير: PHP safe_mode نشط بخادمكم. سنكون عرضة لحالة المهلات بكثرة. ان حدث هذا المشكل بالفعل، ستكون مضطر للإسترجاع الملف من phpMyAdmin أو بطريقة أخرى." + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "wp-config.php من النسخ الإحتياطية: إستعادة (بناءا على طلب السمتخدم)" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "wp-config.php من النسخ الاحتياطي: سيتم إستعادته كمسمى wp-config-backup.php" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "فشل في كتابة قاعدة البيانات مفككت التشفير لنظام الملفات" + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "فشل في إنشاء دليل مؤقت" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "فشل في حذف دليل العمل بعد الإستعادة." + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "لا يمكن حذف الدليل القديم." + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "تنظيف القمامة ..." + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "استرجاع قاعدة البيانات (بالمواقع الكبيرة ستأخد هذه العملية وقت طويل - ان واجهت مشكل انقضاء المهلة (سببه نقص في استخدام موارد السيرفر للإستضافة) يمكنك استخدام طريقة أخرى، كـ phpMyAdmin)" + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "تم فك تشفير قاعدة البيانات بنجاح." + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "فك تشفير قاعدة البيانات (يمكن أن يستغرق بعض الوقت) ..." + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "تفريغ النسخ الاحتياطي ..." + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "فشل نسخ هذا الكيان." + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "ملف النسخ الاحتياطي غير متوفر." + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "UpdraftPlus لا يمكنه استرجاع هذا النوع بشكل مباشر. يمكنك استرجاعه بشكل يدوي." + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "لا يمكن العثور على واحد من الملفات لاستعادته" + +#: admin.php:5009 +msgid "Error message" +msgstr "رسالة الخطأ" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "سجلات النسخ الاحتياطي لا تحتوي على معلومات عن الحجم الحقيقي لهذا الملف." + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "من المتوقع أن يكون حجم الأرشيف:" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "ان كنت تريد طلب دعم فني، فضلا قم باستخدام هذه المعلومات:" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "الغاء: لم نتمكن من إيجاد معلومات عن الكيانات التي تريد استعادتها." + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "استرجاع UpdraftPlus: تقدم" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "هذه النسخة الإحتياطية غير متوفرة بسجل التاريخ - الغاء عملية الإستعادة. الطابع الزمني:" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "بعد الضغط على هذا الزر، ستتمكن من اختيار المكونات التي تريد استرجاعها" + +#: admin.php:4572 +msgid "Press here to download" +msgstr "إضغط هنا لتحميل" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "حذف هذه المجموعة من النسخ الاحتياطية" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "أخباؤ سارة: اتصالات موقعكم الآن مع %s يمكن تشفيرها. إن كنت ترى أي أخطاء بخدة التشفير، يمكنك مراجعة خيارات الخبراء للمزيد من المعلومات." + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "نسخة PHP/Curl المنصبة بسيرفرك لا تدعم اتصال https. لا يمكن الوصول لـ %s دونها. من فضلك قم بالإتصال بخدمة الإسضافة الخاصة بك. %s تتطلب Curl+https. من فضلك لا تقم بمراسلة خدمة الدعم لأنه لا يوجد أي حل آخر." + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "نعلمكم أن نسخة PHP/Curl المنصبة لخادمكم لا تدعم وصول https. التواصل مع %s سيكون غير مشفر. من فضلك قم بمراسلة خدمة الإستضافة لتنصيب Curl/SSL لدعم خدمة التشفير (باستخدام إضافة)." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "نعلمكم أن نسخة PHP المنصبة بخادمكم لا توفر هذا الموديل (%s). فضل قم بمراسلة خدمة استضافتكم." + +#: admin.php:4062 +msgid "Save Changes" +msgstr "حفظ التغييرات" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "اختيار هذا الخيار قد يضعف من الآمان بإيقاف UpdraftPlus من استخدام SSL للمصادقة و تشفير العمليات، إن أمكن الأمر. لاحظ أن بعض الدمات السحابية لا تقبل هذه العملية (مثال: Dropbox)، مع هذا الخيار لن تتمكن من حفظ النسخ بهذه الخدمات." + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "قم بتعطيل SSL تماما حيثما أمكن" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "لاحظ أنه ليست كل أساليب النسخ الإحتياطي بالسحابة بالضرورة تستخدم المصادقة عن طريق SSL." + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "اختيار هذا الخيار يمكن أن يضعف من حمايتك بمنع UpdraftPlus من التحقق من هوية المواقع التي يتصل بها ( مثال: Dropbox, Google Drive). هذا يعني أن UpdraftPlus سيستخدم SSL لتشفير حركة مرور البيانات، ولن يستخدم التقنية لتشفير المصادقة مع المواقع." + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "لا تحقق من شهادات SSL" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "افتراضيا UpdraftPlus يستخدم خدماته الخاصة من SSL للحقق من هوية المواقع (للتأكد من أن الموقع الآخر هو فعلا الموقع المقصود وليس موقع مقرصن). نقوم بتحديثها آليا. إن قابلك خطأ SSL، حينها قم باختيار هذا الخيار (الذي يفرض على UpdraftPlus استخدام ملفات SSL الخاصة بسيرفرك بدلا من الخاص به) يمكن أن يساعدك." + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "استخدام شهادات SSL للملقم" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "إن لم يكن هذا ممكنا قم بالتأكد من الأذونات بسيرفرك الخاص أو غيره لمجلد جديد قابل للكتابة من قبل خادمك." + +#: admin.php:3697 +msgid "click here" +msgstr "انقر هنا" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "أو، لإعادة هذا الخيار" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "دليل النسخ الاحتياطي المحدد قابل للكتابة، وهو أمر جيد." + +#: admin.php:4009 +msgid "Backup directory" +msgstr "دليل النسخ الاحتياطي" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "حذف النسخة الاحتياطية المحلية" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "اضغط هنا لتتمكن من مشاهدة خيارات اضافية، لا ترعج نفسك بهذه الخيارات إلا إذا واجهت مشاكل." + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "إظهار الإعدادات المتقدمة" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "إعدادات متقدمة" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "وضع التصحيح" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "متقدمة / تصحيح الإعدادات " + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "مطالبة البدء بالنسخ الاحتياطي ..." + +#: admin.php:591 +msgid "Cancel" +msgstr "إلغاء" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "لا شيء" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "اختر خدمت التخزين السحابي" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "فك تشفير ملف النسخ الاحتياطي لقاعدة البيانات يدويا" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "عبارة تشفير قاعدة البيانات" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "البريد الإلكتروني" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "المجلدات أعلاه هي كل شيء، باستثناء مجلدات ووردبريس التي يمكن تحميلها من جديد من WordPress.org." + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "استبعاد هذه:" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "أي الدلائل الأخرى الموجودة داخل wp-content" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "متضمن في ملفات النسخ الاحتياطي" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "على سبيل المثال إذا كان الملقم مشغول في اليوم وتريد تشغيله فجأة" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "لإصلاح الوقت الذي ينبغي أن تأخذ نسخة احتياطية،" + +#: admin.php:3683 +msgid "Monthly" +msgstr "شهريا" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "نصف شهري" + +#: admin.php:3681 +msgid "Weekly" +msgstr "أسبوعيا" + +#: admin.php:3680 +msgid "Daily" +msgstr "يوميا" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "تحميل ملف السجل" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "المجلد موجود مسبقا، لكن خادمك لا يملك صلاحية الكتابة عليه." + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "تم خلق المجلد، لكن يتوجب علينا تغيير أذوناته لـ 777 (قابل للكتابة) لنتمكن من الكتابة عليه. يجب عليك التحقق من قابلية هذه العملية مع خدمة الإستضافة الخاصة بك." + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "فشل الطلب إلى نظام الملفات لإنشاء الدليل." + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "حذف" + +#: admin.php:3418 +msgid "show log" +msgstr "عرض السجل" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "سيؤدي هذا إلى حذف كافة الإعدادات الخاصة بك UpdraftPlus - هل أنت متأكد أنك تريد المتابعة؟" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "عد" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "ملاحظة: هذا العدد يستند على ما كان عليه، او ما لم يكن عليه، مستبعدين آخر مرة قمت بحفظ الخيارات." + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "الإجمالي (غير مضغوط) على قرص البيانات:" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "لا" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "نعم" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "%s النسخة:" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "استخدام الذاكرة الحالية" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "استخدام الذاكرة الذروة" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "خادم الويب:" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "يرجى مراجعة اشتراك UpdraftPlus الممتاز، أو اضافة المواقع المتعددة." + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "هل تحتاج إلى دعم ووردبريس متعدد المواقع؟" + +#: admin.php:2654 +msgid "Multisite" +msgstr "مواقع متعددة" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "إجراء نسخة احتياطية لمرة واحدة" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "قم بقراءة هذا المقال المليئ بالأشياء المفيدة لتعلمها قبل الإستعادة." + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "يمكنك البحث واستبدال قاعدة البيانات (لدمج موقع مع رابط رابط أو دومين جديد) باستخدام إضافة الدمج - اتبع هذا الرابط لمزيد من المعلومات." + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "%s خيارات الإستعادة:" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "سوف تحتاج إلى استعادته يدويا." + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "لا يمكن استعادة الكيان التالي تلقائيا: \"%s\"." + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "خادمك يحمل خدمة safe_mode للـ PHP مفعلة." + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "اختيار المكونات للاستعادة" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "عملية الإستعادة ستغير كل من التصاميم، الإضافات، الملفات المرفوعة، قاعدة البيانات أو أي ملفات أخرى (وفقا لما تحمله النسخة الإحتياطية من ملفات، وما قمت باختياره)" + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "استعادة النسخة الاحتياطية من" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "استعادة النسخة الاحتياطية" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "حذف مجموعة النسخ الاحتياطية" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "خطأ بالتحميل : بعث لنا الخادم استجابة لم نفهمها." + +#: admin.php:570 +msgid "You should:" +msgstr "يجب عليك:" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "خطأ:" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "حساب ..." + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "UpdraftPlus - تحميل ملفات النسخ الاحتياطي" + +#: admin.php:3020 +msgid "refresh" +msgstr "تحديث" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "مساحة القرص لخادم الويب قيد الاستخدام من قبل UpdraftPlus" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "جوجل درايف" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "إذا كنت تستخدم هذا، ازل الوضع Turbo/Road" + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "متصفح الويب أوبرا " + +#: admin.php:3023 +msgid "More tasks:" +msgstr "المزيد من المهام:" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "تحميل ملف السجل المعدل مؤخرا" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "(لا شيء حتى الآن تم تسجيله)" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "رسالة السجل الأخيرة" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "الإستعادة" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "النسخ الاحتياطي الآن" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "قاعدة بيانات" + +#: admin.php:229 +msgid "Files" +msgstr "ملفات" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "النسخ الاحتياطي المجدولة القادمة" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "في نفس الوقت الذي نقوم فيه بالنسخ الاحتياطي للملفات" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "لا شيء مقرر حاليا" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "واجهة المشرف هذه تستخدم الجافا سكريبت بشكل كبير. ستحتاج تفعيلها داخل المتصفح الخاص بك، أو استخدام متصفح يدعم الجافا سكريبت." + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "تحذير جافا سكريبت" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "حذف الدلائل القديمة" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "الحد الحالي هو:" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "تمت استعادة النسخ الاحتياطي." + +#: admin.php:2310 +msgid "Version" +msgstr "الإصدار" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "الولوج لموقع المطور" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "تم القضاء على الإعدادات الخاصة بك." + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "تم إنشاء دليل النسخ الاحتياطي بنجاح." + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "لا يمكن إنشاء دليل النسخ الاحتياطي" + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "النسخ السابقة من المجلدات لم تحذف بشكل جيد لسبب ما. يمكنك حذفها بشكل يدوي." + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "تم إزالة الدلائل القديمة بنجاح." + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "إزالة الدلائل القديمة" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "العودة إلى اعدادات UpdraftPlus" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "الإجراءات" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "استعادة ناجحة!" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "إسم ملف خاطئ - نعقد أننا لم نكن المسؤولين في تشفير هذا الملف" + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "إسم ملف خاطئ - نعتقد أننا لم نكن المسؤولين بخلق هذا الملف" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "لا نسخة محلية متوفرة." + +#: admin.php:2072 +msgid "Download in progress" +msgstr "التحميل في تقدم" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "ملف جاهز." + +#: admin.php:2043 +msgid "Download failed" +msgstr "فشل تحميل" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "خطأ" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "لا يمكن العثور على هذا الوظيفة - ربما كان قد أنهى بالفعل؟" + +#: admin.php:1854 +msgid "Job deleted" +msgstr "وظيفة حذفت" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "أوكي، ستتمكن قريبا من مشاهدة النشاطات بحقل \"سجل آخر الرسائل\" أسفله" + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "لا شيء حتى الآن تم تسجيله" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "يرجى الرجوع إلى الأسئلة الشائعة إذا كنت تواجه مشاكل بالنسخ الاحتياطي." + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "موقعك يستخدم %s من خادم الويب." + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "UpdraftPlus لا يدعم النسخ أقل من %s من نظام ووردبريس. يمكن أن يعمل لك، لكن إن لم يعمل، كن على يقين أنه لن نتمكن من مساعدة في حل المشاكل إلا بعد أن تقوم بترقية اصدار الووردبريس." + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "تملك مساحة تخزين حرة أقل من %s بالهارد درايف الذي يستخدمه UpdraftPlus لحفظ النسخ الإحتياطية. UpdraftPlus لن يتمكن من حفظ النسخ. من فشلك قم بمراسلة خدمة الإستضافة لحل هذا المشكل." + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "تحذير" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "إضافات / الدعم المدفوع" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "إعدادات" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "ملفات مسموحة" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "لم نتمكن من خلق الملف المضغوط %s. تحقق من السجل لمزيد من المعلومات." + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "عودية لا نهائية: تحقق من السجل لمزيد من المعلومات" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "تحقق من UpdraftPlus.Com للمساعدة، إضافات والدعم" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "تحتاج المزيد من الميزات والدعم؟ تحقق من UpdraftPlus بريميوم" + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "الرجاء المساعدة UpdraftPlus من خلال إعطاء وجهة نظر ايجابية في wordpress.org" + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "هل أحببت UpdraftPlus وتريد المساعدة في نشره؟" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "يمكنك ترجمة؟ ترغب في تحسين UpdraftPlus للمتحدثين بلغتك؟" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "لم يتم العثور على ملف" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "مفتاح فك التشفير المستخدم:" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "فشل التشفير. غالبا سيكون السبب هو عدم استخدام المفتاح الخطأ." + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "فشل التشفير. ملف قاعدة البيانات مفر، ولكن لم تقم بإدخال أي مفتاح للتشفير." + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "لا يمكن فتح ملف النسخ الاحتياطي للكتابة" + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "لم نتمكن من حفظ تاريخ النسخ الإحتياطية بسبب عدم ترتيب النسخ. النسخ الإحتياطي ربما قد فشل." + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "لا يمكن قراءة الدليل" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "دليل (%s) النسخ الإحتياطي ليس قابل للكتابة، أو غير موجود." + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "اكتمال عملية النسخ الإحتياطي للووردبريس" + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "محاولة النسخ الإحتياطية تمت، لكن يبدو أنها فشلت." + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "يبدو أن عملية النسح الإحتياطي قد نجحت وهاهي الآن قد اكتملت" + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "حدث خطأ في عملية التشفير لقاعدة البيانات. تم ايقاف العملية." + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "لم نتمكن من خلق الملفات بمجلد النسخ الإحتياطية. تجاهل النسخ - تحقق من خيارات UpdraftPlus." + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "أخرى" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "الملفات المرفوعة" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "تصاميم" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "الإضافات" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "لا توجد ملفات السجل." + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "لا يمكن قراءة ملف السجل." + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "إشعار UpdraftPlus :" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "نسخ الإحتياطية UpdraftPlus" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-bn_BD.mo b/plugins/updraftplus/languages/updraftplus-bn_BD.mo new file mode 100644 index 0000000..ddd6d01 Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-bn_BD.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-bn_BD.po b/plugins/updraftplus/languages/updraftplus-bn_BD.po new file mode 100644 index 0000000..3664396 --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-bn_BD.po @@ -0,0 +1,6109 @@ +# Translation of UpdraftPlus in Bengali +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-09-22 16:09:47+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: bn\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "আপনার আইপি অ্যাড্রেসঃ" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "কোন ব্লক সরাতে এখানে যান।" + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "%s অ্যাড-অন পাওয়া যায়নি" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "অথবা ম্যানুয়ালি পুনরুদ্ধার করতে" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "এভাবে \"টাইম-আউট\" হতে পারে। আপনাকে safe_mode বন্ধ করার অথবা একসাথে শুধুমাত্র একটা জিনিস পুনরুদ্ধার করার পরামর্শ দেয়া হচ্ছে" + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "এই সমস্যা সমাধান করতে এখানে যান।" + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "অপটিমাইজপ্রেস ২.০ এর কন্টেন্টসমূহ সঙ্কেতাক্ষরে লিখে রাখে, তাই সার্চ/প্রতিস্থাপন কাজ করে না।" + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "আপনার পিএইচপি ইনস্টলের ওপেন এসএসএল (SSL) মডিউল নেই, যার ফলে এটা বেশ কয়েক মিনিট সময় নিতে পারে। তারপরও যদি কিছু না ঘটে, তবে অপেক্ষাকৃত ছোট \"key size\" ব্যাবহার করুন। অথবা আপনার হোস্টিং কোম্পানিকে জিজ্ঞাস করুন কিভাবে পিএইচপি ইনস্টলের ওপেন এসএসএল (SSL) মডিউল চালু করতে হয়।" + +#: addons/webdav.php:91 +msgid "Path" +msgstr "রাস্তা (Path)" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "ডিফল্ট ভ্যালু ব্যাবহার করতে এটা ফাকা রাখুন (webdav এর জন্য 80, webdavs এর জন্য 443)" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "এই স্থানে যেকোন রাস্তা (Path) প্রবেশ করান।" + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "\"host name\" এর ক্ষত্রে স্ল্যাশ ব্যাবহার করা যাবে না।" + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "প্রোটোকল (SSL অথবা SSL না)" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "এই WebDAV URL নিচের অপশনসমূহ পূরণ করার মাধ্যমে সৃষ্ট। আপনি যদি বিস্তারিত না জানেন, তাহলে আপনার WebDAV প্রোভাইডারকে জিজ্ঞেস করুন।" + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "কোন রেসপন্স ডাটা পাওয়া যায়নি। এটা সাধারণত এই সাইট এবং UpdraftPlus.com এর মধ্যে নেটওয়ার্ক সংযোগ সমস্যা নির্দেশ করে (যেমনঃ আউটগোয়িং ফায়ারওয়াল অথবা ওভারলোডেড নেটওয়ার্ক)।" + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "এই AWS access key মনে হয় ভূল (সঠিক %s access keys \"AK\" দিয়ে শুরু হয়)" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "কোন সেটিং পাওয়া যায়নি - দয়া করে সেটিং ট্যাবে গিয়ে আপনার সেটিং যাচাই করুন।" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr " %s ব্যাবহার করে ব্যাকআপ?" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "পূর্ণ প্রিমিয়াম প্লাগিন" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "শুধুমাত্র এই অ্যাড-অন" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "এশিয়া প্যাসিফিক (মুম্বাই)" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "কম আতিশয্য " + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "স্ট্যান্ডার্ড (কদাচিৎ অ্যাকসেস)" + +#: admin.php:2310 +msgid "FAQs" +msgstr "বার বার জিজ্ঞাসিত প্রশ্নসমূহ" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "অজানা হালনাগাদ পরীক্ষার অবস্থা \"%s\"" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "এই প্লাগিনটির একটি নতুন সংস্করণ পাওয়া যাচ্ছে।" + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "আপনি এই প্লাগিনটির সর্বশেষ সংস্করণ ব্যবহার করছেন।" + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "নতুন সংস্করণ খুজুন" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "পরিবর্তনের কোন তালিকা পাওয়া যায় নি।" + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "এই পদ্ধতিটি সহায়ক যদি ড্যাশবোর্ডের ওয়েবসার্ভার এই ওয়েবসাইটের আগমনি ভিজিটর এর সাথে যোগাযোগ স্থাপন করতে না পারে ( উদাহরণসরুপ, যদি এই ওয়েবসাইটটি পাবলিক ইন্টারনেট এ হোস্টিং করা থাকে কিন্তু আপড্রাফ্‌ট সেন্ট্রাল ড্যাশবোর্ড লোকালহোস্টিং এ, ইন্ট্রানেট এ অথবা এই ওয়েব সাইটের একটি বহির্গামী ফায়ারওয়াল থাকে),অথবা এই ড্যাশ বোর্ড ওয়েব সাইটের কোন SSL সার্টিফিকেট না থাকে।" + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "আরও তথ্য..." + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "ড্যাশবোর্ডের সাথে যুক্ত হতে বিকল্প পদ্ধতিটি ব্যবহার করুন।" + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "ড্যাশবোর্ড টি এখানে" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "কি সাইজ: %d বিটস" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "পাবলিক কি টি পাঠানো হয়েছিল:" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "ডিরেক্টরি খুলতে ব্যর্থ (ফাইলের মালিকানা ও পাঠের অনুমতি পরীক্ষা করুন): %s" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "%s: অপাঠযোগ্য ফাইল - ব্যাকআপ নেওয়া সম্ভব নয় (ফাইলের মালিকানা ও পাঠের অনুমতি পরীক্ষা করুন)" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "পিন তৈরি করুন" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "ধীরতর, সবচেয়ে বেশি শক্তিশালী" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "নির্দেশিত" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "%s বাইটস" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "দ্রুততর (ধীর পি এইচ পি ইন্সটল এর ক্ষেত্রে)" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "ভাঙতে সহজ, দ্রুততম সময়ে" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "%s বিটস" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "এনক্রিপশন পিনের সাইজঃ" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "পূর্বেই ঠিক করা নামটি লিখুন" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "একটি পিন তৈরি করুনঃ এই পিনটির একটি অনন্য নাম দিন (উদাহরণস্বরূপ, এই সাইট টি কিসের জন্য তা উল্লেখ করতে পারেন), তারপর \"পিন তৈরি করুন\" এ ক্লিক করুনঃ" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "আপলোড সফল হবে নাঃ যেকোন একটি ফাইলের %s লিমিট হচ্ছে %s, যেখনে এই ফাইলের সাইজ হচ্ছে %s GB (%d bytes)" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "এটা কোন কোন সময় ফায়ারওয়ালের কারনে ঘটে থাকে - expert সেটিং থেকে SSL বন্ধ করে আবার চেস্টা করে দেখুন।" + +#: methods/ftp.php:355 +msgid "login" +msgstr "লগিন" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "" + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "" + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "সাইজঃ %s MB" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "যদি আপনার সেখানে একটি একাউণ্ট (পরিচিতি) থাকে" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "" + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "UpdraftPlus ভল্টের জন্য ১জিবি ফ্রি" + +#: admin.php:2604 +msgid "Now" +msgstr "এখন" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "(সিলেক্ট অথবা আনসিলেক্ট করার জন্য আইকনের উপর টিপ দিন)" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "প্রতি বৎসর %s" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "অথবা (বাৎসরিক মূল্যছাড়)" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "এই সাইটের জন্য কোন ভল্ট কানেকশন পাওয়া যায়নি (এটা কি স্থানান্তর করা হয়েছে?), দয়া করে ডিসকানেক্ট করে আবার কানেক্ট করুন।" + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "প্রদত্ত ফাইল পাওয়া যায়নি অথবা পড়া সম্ভব হয়নি।" + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "UpdraftCentral (দূরনিয়ন্ত্রণ)" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "আনা..." + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "বর্ণনা" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "নতুন চাবি (key) তৈরি করুন" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "ডিলিট..." + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "তৈরিকৃতঃ" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "এই ইউজার হিসেবে এই সাইট অ্যাকসেস করুনঃ" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "" + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "বিস্তারিত" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "" + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "" + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "" + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "" + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "" + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "" + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "" + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "আপনার সেটিংস সংরক্ষণ করা হয়েছে। " + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "" + +#: admin.php:3420 +msgid "stop" +msgstr "" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "রিসেট" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "এই ব্যাকআপ সেটসমূহ" + +#: admin.php:3092 +msgid "this backup set" +msgstr "এই ব্যাকআপ সেট" + +#: admin.php:3020 +msgid "calculate" +msgstr "গণনা করুন" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "" + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "দয়া করে সঠিক URL প্রবেশ করান" + +#: admin.php:601 +msgid "Saving..." +msgstr "সংরক্ষণ হচ্ছে..." + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:557 +msgid "Fetching..." +msgstr "আনা হচ্ছে..." + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "" + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "" + +#: admin.php:2884 +msgid "Dismiss" +msgstr "খারিজ" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "" + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "আরও পড়ুন..." + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "" + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "" + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "" + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "" + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "" + +#: admin.php:3860 +msgid "File Options" +msgstr "" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "" + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "" + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "" + +#: admin.php:5157 +msgid "settings" +msgstr "সেটিংস" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "" + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "" + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "" + +#: admin.php:442 +msgid "Extensions" +msgstr "" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "" + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "" + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "" + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "" + +#: addons/azure.php:524 +msgid "container" +msgstr "" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "" + +#: addons/azure.php:523 +msgid "optional" +msgstr "" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "" + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "" + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "" + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "" + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "" + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "" + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "" + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "" + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "" + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "" + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "" + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "" + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "" + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "" + +#: restorer.php:767 +msgid "Deferring..." +msgstr "" + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "" + +#: admin.php:3081 +msgid "Deselect" +msgstr "" + +#: admin.php:3080 +msgid "Select all" +msgstr "" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "" + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "" + +#: admin.php:634 +msgid "For backups older than" +msgstr "" + +#: admin.php:633 +msgid "week(s)" +msgstr "" + +#: admin.php:632 +msgid "hour(s)" +msgstr "" + +#: admin.php:631 +msgid "day(s)" +msgstr "" + +#: admin.php:630 +msgid "in the month" +msgstr "" + +#: admin.php:629 +msgid "day" +msgstr "" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "" + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "" + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "" + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "" + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "" + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "আপনার ইমেল ঠিকানা জানা নেই, নাকি আপনার পাসওয়ার্ড ভুলে গিয়েছেন?" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "এখানে প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী পড়ুন।" + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "আমাজনের সার্ভার সাইড এনক্রিপশন ব্যবহার করতে এই বক্সটি টিক দিন" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "সার্ভার সাইড এনক্রিপশন" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "" + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "" + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "পেমেন্ট ইউএস ডলার, ইউরো বা GB pounds sterling এর মাধ্যমে কার্ড বা পেপ্যাল এর দ্বারা করতে হবে।" + +#: admin.php:607 +msgid "Update quota count" +msgstr " প্রাপ্য সংখ্যা হালনাগাদ" + +#: admin.php:606 +msgid "Counting..." +msgstr "গণনা করা হচ্ছে..." + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "সংযোগ বিচ্ছিন্ন করা হচ্ছে..." + +#: admin.php:603 +msgid "Connecting..." +msgstr "সংযোগ করা হচ্ছে..." + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "বর্তমান অবস্থা পুনঃবিবেচনা করুন" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "আরও প্রাপ্য নিন" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "বর্তমান ব্যাবহার:" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "আপনি এখান থেকে আরও প্রাপ্য পেতে পারেন" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "%s ইরোর: আপনার যথেষ্ট প্রাপ্য(%s) নেই আর্কাইভটি(%s) আপলোড করার জন্য।" + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "সংযোগ বিচ্ছিন্ন করুন" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "প্রাপ্য:" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "ভল্টের মালিক" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "চমৎকার - এখন আর আপনাকে কিছুই করতে হবে না।" + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "এই সাইটটি UpdraftPlus Vault এ সংযুক্ত।" + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "আপনি UpdraftPlus Vault এসংযুক্ত নন।" + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "সাহায্যের জন্য এখানে যান" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "ই-মেইল" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "ফিরে চলুন..." + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "সাবস্ক্রিপশন যেকোনো সময় বাতিল করা সম্ভব" + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "%s প্রতি তিন মাসে" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "এইটি সম্পর্কে আরও পড়ুন এখানে।" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "UpdraftPlus Vault অ্যামাজনের বিশ্বসেরা ডাটা সেন্টারে তৈরী। এছাড়া অতিরিক্ত ডাটার স্টোরেজের মাধ্যমে আছে ৯৯.৯৯৯৯৯৯৯৯৯% বিশ্বাসযোগ্যতা" + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "জায়গা আগে থেকে কিনেছেন?" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "অপশন দেখান" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "প্রথম বার ব্যাবহারকারি?" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "কাজ শুরু করতে যেকোনো একটি বোতাম চাপুন।" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "UpdraftPlus Vault আপনাকে স্টোরেজের সুবিধা দেয় যেটি বিশ্বাসযোগ্য, সহজে ব্যাবহারযোগ্য এবং চমৎকার দামে।" + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "" + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "আপনার UpdraftPlus Vault এর পেমেন্ট নির্দিষ্ট সময় অতিক্রম করে ফেলেছে। এবং আপনার এ্যাকাউন্ট কিছু দিনের মাঝে বন্ধ করে দেয়া হবে, এবং আপনি আপনার প্রাপ্য এবং এর সকল তথ্য হারাবেন। দয়া করে তাড়াতাড়ি রিনিউ করুন!" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "আপনার UpdraftPlus Premium কেনার এক বছর অতিক্রান্ত হয়ে গিয়েছে। আপনার এখনি তা নবিনীকরন করা উচিত আপনার ১২ মাসের বিনামূল্যের স্টোরেজ এর সুবিধা রক্ষার্থে যা আপনি UpdraftPlus Premium কাস্টমার হওয়ার জন্য পেয়ে থাকেন।" + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "ভল্ট আপডেট করুন" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "ডিলিট ব্যর্থ:" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "Zip engine টি এই বার্তা নিয়ে এসেছে: %s।" + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "" + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "ডিলিট করার অনুমতি দিন" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "এই অনুমতি ছাড়া আপনি সরাসরি UpdraftPlus ব্যাবহার করে ডাউনলোড বা রিস্টোর করতে পারবেন না, বরং আপনাকে AWS ওয়েবসাইটটি ভিজিট করতে হবে।" + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "ডাউনলোড এর অনুমতি দিন" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "" + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "" + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "" + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "আপনার নতুন চাবি:" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "চাবি সফলভাবে তৈরি করা হয়েছে।" + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "" + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "" + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "সাইট খুঁজে পাওয়া যায় নি" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "ব্যাক তথ্য পাঠানো হবে:" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "" + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "ব্যাকআপ তৈরি করেছেন %s" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "এই স্টোরেজ পদ্ধতি ডাউনলোড করার অনুমতি দেয় না" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "(ব্যাকআপ সেট দূরবর্তী অবস্থান থেকে আমদানি করা হয়েছে)" + +#: admin.php:4423 +msgid "Site" +msgstr "সাইট" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "ব্যাকআপ রিমোট সাইটের পাঠানো হয়েছে - ডাউনলোডের জন্য উপলব্ধ না" + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "" + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "" + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "কানেকশন পরীক্ষা করা হচ্ছে..." + +#: admin.php:617 +msgid "Deleting..." +msgstr "মুছে ফেলা হচ্ছে..." + +#: admin.php:616 +msgid "key name" +msgstr "চাবির(কি) নাম" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "এই চাবিকাঠির একটি নাম দিন (e.g. indicate the site it is for):" + +#: admin.php:611 +msgid "Creating..." +msgstr "তৈরি করা হচ্ছে..." + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "অথবা, অন্য একটি সাইট থেকে ব্যাকআপ গ্রহণ করুন" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "চাবি এখানে পেস্ট করুন" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "" + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "অথবা, ব্যাকআপ অন্য একটি সাইটে পাঠান" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "পাঠান" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "কোন প্রাপ্তির সাইট এখনো যোগ হয়নি" + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "" + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "" + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "" + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "" + +#: addons/migrator.php:1861 +msgid "key" +msgstr "চাবি" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "" + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "FTP পাসওয়ার্ড" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "FTP লগইন" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "FTP সার্ভার" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "" + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "" + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "সাইট যুক্ত করুন" + +#: admin.php:608 +msgid "Adding..." +msgstr "যুক্ত করা হচ্ছে..." + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "আপনার updraftplus.com এর পাসওয়ার্ডটি পরিবর্তন করতে এখানে যান।" + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "আপনি যদি আপনার পাসওয়ার্ডটি ভুলে গিয়ে থাকেন" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "এখানে যান আপনার পাসওয়ার্ডটি পুনরাই দিতে।" + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "" + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "" + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "" + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "" + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "" + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "" + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "OneDrive" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "" + +#: methods/email.php:73 +msgid "configure it here" +msgstr "এটিকে এইখানে কনফিগার করুন" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "ব্লক সরাতে, এখানে যান।" + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "আপনার নির্বাচিত বৈশিষ্ট্যগুলি সংরক্ষণ করতে ভুলবেন না।" + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "" + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "S3 bucket" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "চায়না (বেইজিং) (সীমাবদ্ধ)" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "দক্ষিণ আমেরিকা (সাও পাওলো)" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "এশিয়া প্যাসিফিক (টোকিও)" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "এশিয়া প্যাসিফিক (সিডনি)" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "এশিয়া প্যাসিফিক (সিঙ্গাপুর)" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "EU (Frankfurt)" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "EU (আয়ারল্যান্ড)" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "US Government West (সীমাবদ্ধ)" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "US West (N. California)" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "US West (Oregon)" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "US Standard (default)" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "S3 storage region" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "" + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "গোপন চাবি: %s" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "অ্যাক্সেস চাবি: %s" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "" + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "" + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "" + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "" + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "" + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "আপনার ওয়েব সার্ভার এর আইপি ঠিকানা (%s) ব্লক করা হয়ছে বলে মনে হচ্ছে।" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "UpdraftPlus.com 'অ্যাকসেস অস্বীকার' প্রতিক্রিয়া পাঠিয়েছে।" + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "প্রিমিয়াম WooCommerce প্লাগিনসমূহ" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "দোকানে যান।" + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "" + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "বিনামূল্যে নিউজলেটার" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "" + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "" + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "" + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "নিউজলেটার সাইন আপ" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "" + +#: admin.php:2831 +msgid "Personal support" +msgstr "ব্যক্তিগত সহায়তা" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "নেটওয়ার্ক/মাল্টিসাইট সমর্থন" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "ব্যাকআপ করার সময় ঠিক করুন" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "নির্ধারিত সময়ে ব্যাকআপসমূহ" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "অন্যান্য প্লাগিন দিয়ে তৈরি করা ব্যাকআপ পুনঃস্থাপন করুন" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "ডাটাবেস এনক্রিপশন" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "একাধিক রিমোট গন্তব্যস্থানে ব্যাকআপসমূহ পাঠান" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "ড্রপবক্স, গুগোল ড্রাইভ, FTP, S3, Rackspace, ইমেইল" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "দূরবর্তী সংগ্রহস্থলে ব্যাকআপ করুন" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "ব্যাকআপ থেকে পুনরুদ্ধার করুন" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "%s এর বেশি ভাষায় অনুদিত" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "ওয়ার্ডপ্রেস ফাইল এবং ডাটাবেস এর ব্যাকআপ নিন" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "এখনি কিনুন!" + +#: admin.php:2718 +msgid "Get it from" +msgstr "" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "একটি প্রাক বিক্রয় প্রশ্ন জিজ্ঞাসা করুন" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "প্রাক বিক্রয় প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "সম্পূর্ণ বৈশিষ্ট্যের তালিকা" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "UpdraftPlus এর প্রিমিয়াম সেবা নিন" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "আপনি বর্তমানে wordpress.org থেকে প্রাপ্ত UpdraftPlus এর মুক্ত সংস্করণ ব্যবহার করছেন।" + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "" + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "%s ত্রুটি: ইনিশিয়ালাইজ করতে ব্যর্থ" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "অথবা" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "অথবা" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "" + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "" + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "" + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "" + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "লক সেটিং পরিবর্তন করুন" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "" + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "" + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "ডাটাবেস ডিক্রিপশন শব্দগুচ্ছ" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "আপডেট করার আগে স্বয়ংক্রিয় ব্যাকআপ" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "ওয়ার্ডপ্রেস কোর (শুধুমাত্র)" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "" + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "" + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "ভুল পাসওয়ার্ড" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "আনলক" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "সহায়তা URL" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "পাসওয়ার্ড আবার পরে দরকার" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "%s সপ্তাহ" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "১ সপ্তাহ" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "%s ঘন্টা" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "১ ঘন্টা" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "" + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "সেটিংস সংরক্ষিত।" + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "" + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "" + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "" + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "" + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "" + +#: admin.php:4368 +msgid "Backup date" +msgstr "" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "" + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "" + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "" + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "" + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "" + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "" + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "" + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "" + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "" + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "" + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "" + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "আমি কেন এটি দেখছি?" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "" + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "" + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "ব্যাকআপ শুরু করুন" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "" + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "" + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "" + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "ফাইলটি আপলোড করা সম্ভব হয় নি" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "" + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "" + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "" + +#: backup.php:829 +msgid "Incremental" +msgstr "" + +#: backup.php:829 +msgid "Full backup" +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "" + +#: backup.php:895 +msgid "read more at %s" +msgstr "" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "" + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "" + +#: admin.php:3872 +msgid "Database Options" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "" + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "" + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "" + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "" + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "" + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "" + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "" + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "" + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "" + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "" + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "" + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "" + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "" + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "" + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "" + +#: admin.php:4499 +msgid "External database" +msgstr "" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "" + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "" + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "" + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "" + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "" + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "" + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "" + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "" + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "" + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "" + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "" + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "" + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "" + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "" + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "" + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "" + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "" + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "" + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "" + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "" + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "" + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "" + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "" + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "" + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "" + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "" + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "" + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "" + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "" + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "" + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "" + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "" + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "" + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "" + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "" + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "" + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "" + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "" + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "" + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "" + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "" + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "" + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "" + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "" + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "" + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "" + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "" + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "" + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "" + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "" + +#: admin.php:1528 +msgid "Constants" +msgstr "" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "" + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "" + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "" + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "" + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "" + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "" + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "" + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "" + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "" + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "" + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "" + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "" + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "" + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "" + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "" + +#: admin.php:556 +msgid "Trying..." +msgstr "" + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "" + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "" + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "" + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "" + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "" + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "" + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "" + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "" + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "" + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "" + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr "" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr "" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "" + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "" + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "" + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "" + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "" + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "" + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "" + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "" + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "" + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "" + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "" + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "" + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "" + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "" + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "" + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "" + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "" + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "" + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "" + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "" + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "" + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "" + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "" + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "" + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "" + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "" + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "" + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "" + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "" + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "" + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "" + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "" + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "" + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "" + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "" + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "" + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "" + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "" + +#: admin.php:3359 +msgid "table: %s" +msgstr "" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "" + +#: restorer.php:646 +msgid "file" +msgstr "" + +#: restorer.php:639 +msgid "folder" +msgstr "" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "" + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "" + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "" + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "" + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "" + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "" + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "" + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "" + +#: admin.php:2310 +msgid "More plugins" +msgstr "" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "সহায়তা" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "" + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "" + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "" + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "" + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "" + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "" + +#: admin.php:584 +msgid "Upload error" +msgstr "" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "" + +#: admin.php:582 +msgid "Upload error:" +msgstr "" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "" + +#: admin.php:572 +msgid "Download to your computer" +msgstr "" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "" + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "" + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "" + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "" + +#: admin.php:563 +msgid "Warnings:" +msgstr "" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "" + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "" + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "" + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "" + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "" + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "" + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "" + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "" + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "" + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "" + +#: admin.php:4836 +msgid "Final checks" +msgstr "" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "" + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "" + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "" + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "" + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "" + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "" + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "" + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "" + +#: restorer.php:939 +msgid "Files found:" +msgstr "" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "" + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "" + +#: admin.php:4908 +msgid "file is size:" +msgstr "" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "" + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "" + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "" + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "" + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "" + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "" + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "" + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "" + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "" + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "" + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "" + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "" + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "" + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "" + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "" + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "" + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "" + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "" + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "" + +#: admin.php:596 +msgid "Close" +msgstr "" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "" + +#: admin.php:576 +msgid "PHP information" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "" + +#: admin.php:2627 +msgid "Get it here." +msgstr "" + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "" + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "" + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "" + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "" + +#: admin.php:2304 +msgid "Premium" +msgstr "" + +#: admin.php:2305 +msgid "News" +msgstr "" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "" + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "" + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "" + +#: admin.php:880 +msgid "Notice" +msgstr "" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "" + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "" + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "" + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "" + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "" + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "" + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "" + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "" + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "" + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "" + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "" + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "" + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "" + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "" + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "" + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "" + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "" + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "" + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "" + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "" + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "" + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "" + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "" + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "" + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "" + +#: methods/s3.php:961 +msgid "API secret" +msgstr "" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "" + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "" + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "" + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "" + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "" + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "" + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "" + +#: methods/email.php:69 +msgid "Note:" +msgstr "" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "" + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "" + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "ব্যবহারকারী নাম" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "" + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "" + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "" + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "" + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "" + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "" + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "" + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "" + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "" + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "" + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "অনুমোদন ব্যর্থ" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "" + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "এটি পেতে এই লিঙ্কটি অনুসরণ করুন" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "" + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "ঠিক আছে" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "" + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "" + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "" + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "" + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "" + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "" + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "" + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "" + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "" + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "" + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "" + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "" + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "" + +#: admin.php:5009 +msgid "Error message" +msgstr "" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "" + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "" + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "" + +#: admin.php:4572 +msgid "Press here to download" +msgstr "" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "" + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "" + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "" + +#: admin.php:4062 +msgid "Save Changes" +msgstr "" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "" + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "" + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "" + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "" + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "" + +#: admin.php:3697 +msgid "click here" +msgstr "এখানে ক্লিক করুন" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "" + +#: admin.php:4009 +msgid "Backup directory" +msgstr "ব্যাকআপ ডিরেক্টরি" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "স্থানীয় ব্যাকআপ মুছুন" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "" + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "বিশেষজ্ঞ সেটিংস দেখান" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "বিশেষজ্ঞদের সেটিংস" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "" + +#: admin.php:591 +msgid "Cancel" +msgstr "বাতিল" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "কোনটিই না" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "" + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "" + +#: admin.php:3683 +msgid "Monthly" +msgstr "মাসিক" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "পাক্ষিক" + +#: admin.php:3681 +msgid "Weekly" +msgstr "সাপ্তাহিক" + +#: admin.php:3680 +msgid "Daily" +msgstr "" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "লগ ফাইল ডাউনলোড করুন" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "" + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "" + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "" + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "মুছুন" + +#: admin.php:3418 +msgid "show log" +msgstr "লগ দেখান" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "না" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "হ্যাঁ" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "%s সংস্করণ:" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "বর্তমান মেমরির ব্যবহার" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "ওয়েব সার্ভার:" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "" + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "আপনার কি ওয়ার্ডপ্রস মাল্টিসাইট সাপোর্ট লাগবে?" + +#: admin.php:2654 +msgid "Multisite" +msgstr "মাল্টিসাইট" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "" + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "" + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "" + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "" + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "" + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "" + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:570 +msgid "You should:" +msgstr "" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "" + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "" + +#: admin.php:3020 +msgid "refresh" +msgstr "রিফ্রেশ" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "গুগোল ড্রাইভ" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "" + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "অপেরা ওযেব ব্রাউজার" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "আরও টাস্ক:" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "পুনঃস্থাপন" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "" + +#: admin.php:229 +msgid "Files" +msgstr "" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "" + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "" + +#: admin.php:2310 +msgid "Version" +msgstr "" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "প্রধান ডেভেলপার এর হোমপেজে" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "" + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "" + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "" + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "" + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "" + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "" + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "" + +#: admin.php:2072 +msgid "Download in progress" +msgstr "ডাউনলোড হচ্ছে" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "ফাইল তৈরি।" + +#: admin.php:2043 +msgid "Download failed" +msgstr "" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "" + +#: admin.php:1854 +msgid "Job deleted" +msgstr "" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "" + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "" + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "" + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "" + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "" + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "সতর্কতা" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "অ্যাড অন / প্রো সাপোর্ট" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "সেটিংস" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "" + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "" + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "" + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "ফাইলটি খুঁজে পাওয়া যায় নি" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "" + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "" + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "" + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "" + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "ডিরেক্টরিটি পড়া যায়নি" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "" + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "ওয়ার্ডপ্রেস ব্যাক-আপ সমাপ্ত" + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "" + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "" + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "" + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "ব্যাকআপ ডিরেক্টরিতে ফাইল তৈরি করা সম্ভব হয় নি। ব্যাকআপ বন্ধ হয়ে গিয়্যেছে - আপনার UpdraftPlus সেটিংস দেখুন।" + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "অন্যান্য" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "আপলোডসমূহ" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "থিমসমূহ" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "প্লাগইন" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "কোনও লগ ফাইল খুঁজে পাওয়া যায় নি।" + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "লগ ফাইলটি পড়া সম্ভব হয় নি।" + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "UpdraftPlus নোটিশ:" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "UpdraftPlus ব্যাকআপসমূহ" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-ca.mo b/plugins/updraftplus/languages/updraftplus-ca.mo new file mode 100644 index 0000000..d84d1b2 Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-ca.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-ca.po b/plugins/updraftplus/languages/updraftplus-ca.po new file mode 100644 index 0000000..e259fe5 --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-ca.po @@ -0,0 +1,6109 @@ +# Translation of UpdraftPlus in Catalan +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2014-09-08 16:59:11+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: ca\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "" + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "" + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "" + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "" + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "" + +#: addons/webdav.php:91 +msgid "Path" +msgstr "" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "" + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "" + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "" + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "" + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "" + +#: admin.php:2310 +msgid "FAQs" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "" + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "" + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "" + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "" + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "" + +#: methods/ftp.php:355 +msgid "login" +msgstr "" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "" + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "" + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "" + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "" + +#: admin.php:2604 +msgid "Now" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "" + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "" + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "" + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "" + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "" + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "" + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "" + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "" + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "" + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "" + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "" + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "" + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "" + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "" + +#: admin.php:3420 +msgid "stop" +msgstr "" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "" + +#: admin.php:3092 +msgid "this backup set" +msgstr "" + +#: admin.php:3020 +msgid "calculate" +msgstr "" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "" + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "" + +#: admin.php:601 +msgid "Saving..." +msgstr "" + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:557 +msgid "Fetching..." +msgstr "" + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "" + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "" + +#: admin.php:2884 +msgid "Dismiss" +msgstr "" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "" + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "" + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "" + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "" + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "" + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "" + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "" + +#: admin.php:3860 +msgid "File Options" +msgstr "" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "" + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "" + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "" + +#: admin.php:5157 +msgid "settings" +msgstr "" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "" + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "" + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "" + +#: admin.php:442 +msgid "Extensions" +msgstr "" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "" + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "" + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "" + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "" + +#: addons/azure.php:524 +msgid "container" +msgstr "" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "" + +#: addons/azure.php:523 +msgid "optional" +msgstr "" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "" + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "" + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "" + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "" + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "" + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "" + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "" + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "" + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "" + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "" + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "" + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "" + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "" + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "" + +#: restorer.php:767 +msgid "Deferring..." +msgstr "" + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "" + +#: admin.php:3081 +msgid "Deselect" +msgstr "" + +#: admin.php:3080 +msgid "Select all" +msgstr "" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "" + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "" + +#: admin.php:634 +msgid "For backups older than" +msgstr "" + +#: admin.php:633 +msgid "week(s)" +msgstr "" + +#: admin.php:632 +msgid "hour(s)" +msgstr "" + +#: admin.php:631 +msgid "day(s)" +msgstr "" + +#: admin.php:630 +msgid "in the month" +msgstr "" + +#: admin.php:629 +msgid "day" +msgstr "" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "" + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "" + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "" + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "" + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "" + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "" + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "" + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "" + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "" + +#: admin.php:607 +msgid "Update quota count" +msgstr "" + +#: admin.php:606 +msgid "Counting..." +msgstr "" + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "" + +#: admin.php:603 +msgid "Connecting..." +msgstr "" + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "" + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "" + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "" + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "" + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "" + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "" + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "" + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "" + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "" + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "" + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "" + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "" + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "" + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "" + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "" + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "" + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "" + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "" + +#: admin.php:4423 +msgid "Site" +msgstr "" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "" + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "" + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "" + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "" + +#: admin.php:617 +msgid "Deleting..." +msgstr "" + +#: admin.php:616 +msgid "key name" +msgstr "" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "" + +#: admin.php:611 +msgid "Creating..." +msgstr "" + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "" + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "" + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "" + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "" + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "" + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "" + +#: addons/migrator.php:1861 +msgid "key" +msgstr "" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "" + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "" + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "" + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "" + +#: admin.php:608 +msgid "Adding..." +msgstr "" + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "" + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "" + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "" + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "" + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "" + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "" + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "" + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "" + +#: methods/email.php:73 +msgid "configure it here" +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "" + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "" + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "" + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "" + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "" + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "" + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "" + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "" + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "" + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "" + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "" + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "" + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "" + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "" + +#: admin.php:2831 +msgid "Personal support" +msgstr "" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "" + +#: admin.php:2718 +msgid "Get it from" +msgstr "" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "" + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "" + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "" + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "" + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "" + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "" + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "" + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "" + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "" + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "" + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "" + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "" + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "" + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "" + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "" + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "" + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "" + +#: admin.php:4368 +msgid "Backup date" +msgstr "" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "" + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "" + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "" + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "" + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "" + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "" + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "" + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "" + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "" + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "" + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "" + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "Per què estic veient això ?" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "La ubicació d'aquest directori es troba en la configuració d'experts, a la pestanya Configuració." + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "Prem aquí per cercar nous conjunts de còpies de seguretat que s'han pujat al directori UpdraftPlus (dins l'espai del seu servidor web)." + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "Iniciar còpia de seguretat" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "S'està utilitzant el servidor web %s però no sembla tenir el mòdul %s carregat." + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "Consultar amb el proveïdor d'allotjament web com establir permisos d'escriptura dins del directori per un plugin de WordPress. " + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "Llevat que tinguis un problema, pots ignorar completament tot el que apareix aquí." + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "No s'ha pogut carregar aquest fitxer" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "Més informació sobre això en la secció Configuració." + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "Complements de còpia de seguretat suportats: %s." + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "" + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "Explica'm més coses sobre les còpies de seguretat incrementals." + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "Límit de memòria" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "Restauració" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "Taula d'elements exclosos implicitament: %s." + +#: backup.php:829 +msgid "Incremental" +msgstr "Incremental" + +#: backup.php:829 +msgid "Full backup" +msgstr "Còpia de seguretat completa" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "Actualitzant ..." + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "(veure registre ...)" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "Còpia de seguretat executada correctament" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "Cada %s hores" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "cercar i substituir" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "Endavant" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "Una cerca/substitució no es pot desfer - Estàs segur que vols fer això?" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "Això pot destruir el teu lloc web fàcilment; utilitza-ho amb compte!" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "Substituir per" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "Cercar" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "Cercar / substituir base de dades" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "terme de cerca" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "Hi han hagut masses errors amb la base de dades - abortant" + +#: backup.php:895 +msgid "read more at %s" +msgstr "Llegir més a %s" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "" + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "" + +#: admin.php:3872 +msgid "Database Options" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "" + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "" + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "" + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "" + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "" + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "" + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "" + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "" + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "" + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "" + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "" + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "" + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "" + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "" + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "" + +#: admin.php:4499 +msgid "External database" +msgstr "" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "" + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "" + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "" + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "" + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "" + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "" + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "" + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "" + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "" + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "" + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "" + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "" + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "" + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "" + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "" + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "" + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "" + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "" + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "" + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "" + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "" + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "" + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "" + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "" + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "" + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "" + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "" + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "" + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "" + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "" + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "" + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "" + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "" + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "" + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "" + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "" + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "" + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "" + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "" + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "" + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "" + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "" + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "" + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "" + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "" + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "" + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "" + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "" + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "" + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "" + +#: admin.php:1528 +msgid "Constants" +msgstr "" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "" + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "" + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "" + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "" + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "" + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "" + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "" + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "" + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "" + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "" + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "" + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "" + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "" + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "" + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "" + +#: admin.php:556 +msgid "Trying..." +msgstr "" + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "" + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "" + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "" + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "" + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "" + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "" + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "" + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "" + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "" + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "" + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr "" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr "" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "" + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "" + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "" + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "" + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "" + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "" + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "" + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "" + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "" + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "" + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "" + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "" + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "" + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "" + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "" + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "" + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "" + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "" + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "" + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "" + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "" + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "" + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "" + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "" + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "" + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "" + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "" + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "" + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "" + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "" + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "" + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "" + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "" + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "" + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "" + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "" + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "" + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "" + +#: admin.php:3359 +msgid "table: %s" +msgstr "" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "" + +#: restorer.php:646 +msgid "file" +msgstr "" + +#: restorer.php:639 +msgid "folder" +msgstr "" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "" + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "" + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "" + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "" + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "" + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "" + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "" + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "" + +#: admin.php:2310 +msgid "More plugins" +msgstr "" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "" + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "" + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "" + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "" + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "" + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "" + +#: admin.php:584 +msgid "Upload error" +msgstr "" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "" + +#: admin.php:582 +msgid "Upload error:" +msgstr "" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "" + +#: admin.php:572 +msgid "Download to your computer" +msgstr "" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "" + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "" + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "" + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "" + +#: admin.php:563 +msgid "Warnings:" +msgstr "" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "" + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "" + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "" + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "" + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "" + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "" + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "" + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "" + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "" + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "" + +#: admin.php:4836 +msgid "Final checks" +msgstr "" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "" + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "" + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "" + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "" + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "" + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "" + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "" + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "" + +#: restorer.php:939 +msgid "Files found:" +msgstr "" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "" + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "" + +#: admin.php:4908 +msgid "file is size:" +msgstr "" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "" + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "" + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "" + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "" + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "" + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "" + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "" + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "" + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "" + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "" + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "" + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "" + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "" + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "" + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "" + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "" + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "" + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "" + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "" + +#: admin.php:596 +msgid "Close" +msgstr "" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "" + +#: admin.php:576 +msgid "PHP information" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "" + +#: admin.php:2627 +msgid "Get it here." +msgstr "" + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "" + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "" + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "" + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "" + +#: admin.php:2304 +msgid "Premium" +msgstr "" + +#: admin.php:2305 +msgid "News" +msgstr "" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "" + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "" + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "" + +#: admin.php:880 +msgid "Notice" +msgstr "" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "" + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "" + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "" + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "" + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "" + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "" + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "" + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "" + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "" + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "" + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "" + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "" + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "" + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "" + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "" + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "" + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "" + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "" + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "" + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "" + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "" + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "" + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "" + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "" + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "" + +#: methods/s3.php:961 +msgid "API secret" +msgstr "" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "" + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "" + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "" + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "" + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "" + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "" + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "" + +#: methods/email.php:69 +msgid "Note:" +msgstr "" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "" + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "" + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "" + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "" + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "" + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "" + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "" + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "" + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "" + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "" + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "" + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "" + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "" + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "" + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "" + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "" + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "" + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "" + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "" + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "" + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "" + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "" + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "" + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "" + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "" + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "" + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "" + +#: admin.php:5009 +msgid "Error message" +msgstr "" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "" + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "" + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "" + +#: admin.php:4572 +msgid "Press here to download" +msgstr "" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "" + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "" + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "" + +#: admin.php:4062 +msgid "Save Changes" +msgstr "" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "" + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "" + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "" + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "" + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "" + +#: admin.php:3697 +msgid "click here" +msgstr "" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "" + +#: admin.php:4009 +msgid "Backup directory" +msgstr "" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "" + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "" + +#: admin.php:591 +msgid "Cancel" +msgstr "" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "" + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "" + +#: admin.php:3683 +msgid "Monthly" +msgstr "" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "" + +#: admin.php:3681 +msgid "Weekly" +msgstr "" + +#: admin.php:3680 +msgid "Daily" +msgstr "" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "" + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "" + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "" + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "" + +#: admin.php:3418 +msgid "show log" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "" + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "" + +#: admin.php:2654 +msgid "Multisite" +msgstr "" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "" + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "" + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "" + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "" + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "" + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "" + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:570 +msgid "You should:" +msgstr "" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "" + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "" + +#: admin.php:3020 +msgid "refresh" +msgstr "" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "" + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "" + +#: admin.php:229 +msgid "Files" +msgstr "" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "" + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "" + +#: admin.php:2310 +msgid "Version" +msgstr "" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "" + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "" + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "" + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "" + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "" + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "" + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "" + +#: admin.php:2072 +msgid "Download in progress" +msgstr "" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "" + +#: admin.php:2043 +msgid "Download failed" +msgstr "" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "" + +#: admin.php:1854 +msgid "Job deleted" +msgstr "" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "" + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "" + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "" + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "" + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "" + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "" + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "" + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "" + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "" + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "" + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "" + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "" + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "" + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "" + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "" + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "" + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "" + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "" + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "" + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-ca_ES.mo b/plugins/updraftplus/languages/updraftplus-ca_ES.mo new file mode 100644 index 0000000..e69de29 diff --git a/plugins/updraftplus/languages/updraftplus-ca_ES.po b/plugins/updraftplus/languages/updraftplus-ca_ES.po new file mode 100644 index 0000000..e69de29 diff --git a/plugins/updraftplus/languages/updraftplus-cs_CZ.mo b/plugins/updraftplus/languages/updraftplus-cs_CZ.mo new file mode 100644 index 0000000..80dd951 Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-cs_CZ.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-cs_CZ.po b/plugins/updraftplus/languages/updraftplus-cs_CZ.po new file mode 100644 index 0000000..271cdc4 --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-cs_CZ.po @@ -0,0 +1,6109 @@ +# Translation of UpdraftPlus in Czech +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2015-11-22 13:44:35+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: cs_CZ\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "" + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "" + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "" + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "" + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "" + +#: addons/webdav.php:91 +msgid "Path" +msgstr "" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "" + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "" + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "" + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "" + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "" + +#: admin.php:2310 +msgid "FAQs" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "" + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "" + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "" + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "" + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "" + +#: methods/ftp.php:355 +msgid "login" +msgstr "" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "" + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "" + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "" + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "" + +#: admin.php:2604 +msgid "Now" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "" + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "" + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "" + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "" + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "" + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "" + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "" + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "" + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "" + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "" + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "" + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "" + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "" + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "" + +#: admin.php:3420 +msgid "stop" +msgstr "" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "" + +#: admin.php:3092 +msgid "this backup set" +msgstr "" + +#: admin.php:3020 +msgid "calculate" +msgstr "" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "" + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "" + +#: admin.php:601 +msgid "Saving..." +msgstr "" + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:557 +msgid "Fetching..." +msgstr "" + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "" + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "" + +#: admin.php:2884 +msgid "Dismiss" +msgstr "" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "" + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "" + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "" + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "" + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "" + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "" + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "Přeskakuji: tento archiv již byl obnoven." + +#: admin.php:3860 +msgid "File Options" +msgstr "Možnosti souboru" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "Odeslání zálohy na vzdálené úložiště" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "Plán zálohy databáze" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "Plán přírůstkové zálohy souborů" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "Plán zálohy souborů" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "Budete poté muset zadat veškeré nastavení znovu. Pokud chcete, můžete tuto operaci provést i před deaktivací/odinstalováním UpdraftPlus." + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "Toto tlačítko smaže veškeré UpdraftPlus nastavení a zprávy o průběhu právě běžící zálohy (ale ne žádné existující zálohy v cloudu)." + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "Odeslat tuto zálohu na vzdálené úložiště" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "Vyzkoušejte UpdraftPlus Trezor." + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "Nemáte žádné vzdálené úložiště?" + +#: admin.php:5157 +msgid "settings" +msgstr "nastavení" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "Záloha nebude poslána na žádné vzdálené úložiště - žádné nebylo uloženo v %s" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "Zahrnout do zálohy některé soubory" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "Zahrnout do zálohy databázi" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "Pokračovat v obnově" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "Máte nedokončenou obnovu, která začala před %s." + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "Nedokončená obnova" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "%s minut, %s sekund" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "Obsah zálohy a plány" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "Premium / Rozšíření" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "O právě běžící obnově nebyly nalezeny dostatečné informace." + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "Stahuji" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "Vybrali jste zálohování souborů, ale nevybrali jste žádné souborové entity" + +#: admin.php:442 +msgid "Extensions" +msgstr "Rozšíření" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "Pokročilé nástroje" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "Bucket umístění" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "Mějte na paměti, že Google nepodporuje všechny třídy úložiště ve všech oblastech - o aktuální dostupnosti byste si měli přečíst v jejich dokumentaci." + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "toto nastavení se aplikuje pouze v případě, že je vytvářen nový bucket." + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "Musíte požít bucket jméno, které je unikátní pro všechny uživatele %s." + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "Nezaměňujte %s a %s - jde o různé věci." + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "K tomuto bucketu nemáte přístup" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "Západní Evropa" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "Východní Asie-Pacifik" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "Západní Spojené Státy" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "Východní Spojené Státy" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "Východní Spojené Státy" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "Střední Spojené Státy" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "Evropské unie" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "Asie Pacifik" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "více-regionové umístění" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "Spojené Státy" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "Nearline" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "Durable Reduced Availability (DRA)" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "Standard" + +#: addons/azure.php:524 +msgid "container" +msgstr "kontejner" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "Můžete zde použít adresu k jakékoliv %s virtuální složce, kterou chcete použít." + +#: addons/azure.php:523 +msgid "optional" +msgstr "volitelné" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "Předpona" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "Na této adrese se podívejte na návod pojmenovávání kontejnerů od Microsoftu." + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "Pokud %s ještě neexistuje, bude vytvořen." + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "Vložte sem cestu k %s, co chcete použít." + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "Toto není vaše Azure přihlašovací jméno - pokud potřebujete poradit, podívejte se do návodu." + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "Jméno účtu" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "Azure" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "Ve vývojářské konzoli Azure si vytvořte Azure přístupové údaje." + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "Nelze vytvořit kontejner" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "Nelze získat přístup ke kontejneru" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "Pro dokončení migrace/klonu, se teď přihlašte ke vzdálené stránce a obnovte zálohu." + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "tabulka možností nebyla nalezena" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "žádné možnosti, ani sitemeta tabulka, nebyly nalezeny" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "Zdá se, že se záloha databáze nepovedla" + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "Do složky pro zápis se nedá zapisovat (nebo je plná) - záloha databáze se zřejmě nepovede." + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "vyžadováno některými poskytovateli vzdálených úložišť" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "Nenainstalováno" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "Třída úložiště" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "Podívejte se na doporučení pro pojmenovávání bucketů od Google." + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "Jméno bucketu musí být globálně unikátní, pokud takový název ještě neexistuje, bude vytvořen." + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "Vložte jméno pro %s bucket, který chcete použít." + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "Bucket" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "Jinak to můžete nechat prázdné." + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "Poznámka: Tot je potřeba pouze v případě, že ještě nemáte vytvořený bucket a chcete, aby ho pro vás vytvořil UpdraftPlus." + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "Vložte sem ID %s projektu, který chcete použít." + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "Následující adresa vás přesměruje na Google API konzoli, kde aktivujte Storage API a v přístupu k API vytvořte klientské ID." + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "Abyste mohli vytvořit nový bucket, musíte zadat ID projektu." + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "ID projektu" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "Před testem nastavení musíte vše uložit a autentizovat spojení." + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "Zatím jste neobdržel přístupový klíč od Googlu - musíte (znovu) autorizovat své spojení s Google Cloud." + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "Do tohoto bucketu nemáte přístup." + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "Google Cloud" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "%s výjimka služby." + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "UpdraftPlus nemáte zcela nainstalovaný - odinstalujte ho a poté ho znovu nainstalujte. Došlo pravděpodobně k chybě WordPressu při kopírování souborů pluginu." + +#: restorer.php:767 +msgid "Deferring..." +msgstr "Odkládám..." + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "nebo nastavit komplexnější plány" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "Jste si jisti, že chcete z UpdraftPlus smazat %s?" + +#: admin.php:3081 +msgid "Deselect" +msgstr "Zrušit výběr" + +#: admin.php:3080 +msgid "Select all" +msgstr "Vybrat vše" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "Akce s vybranými zálohami" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "Pro zobrazení metod vzdálených úložišť pro jakoukoliv existující zálohu (z jakékoliv stránky, pokud jsou ve stejné složce) klikněte sem." + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "Zpracovávám..." + +#: admin.php:634 +msgid "For backups older than" +msgstr "Pro zálohy starší, než" + +#: admin.php:633 +msgid "week(s)" +msgstr "týden(týdny)" + +#: admin.php:632 +msgid "hour(s)" +msgstr "hodina(y)" + +#: admin.php:631 +msgid "day(s)" +msgstr "den(dny)" + +#: admin.php:630 +msgid "in the month" +msgstr "v měsíci" + +#: admin.php:629 +msgid "day" +msgstr "den" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "(tolik, kolik chcete)" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "Přidejte pravidlo zachování..." + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "Tato databáze musí být použita s MySQL verze %s, nebo novější." + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "Tento problém je způsoben pokusem o obnovu databáze s velmi starou verzí MySQL, která je nekompatibilní se zdrojovou databází." + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "V současnosti nemáte žádnou kvótu pro UpdraftPlus Trezor" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "K použití této zálohy databáze musíte aktualizovat svou verzi MySQL." + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "Záloha databáze používá MySQL funkce, které nejsou dostupné ve staré MySQL verzi (%s), kterou používají tyto stránky." + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "Bez reklam na stránce s nastavením UpdraftPlus" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "Složka UpdraftPlus v umístění wp-content/plugins obsahuje netisknutelný znak; WordPress má s takovými názvy občas problém. Pro jistotu byste měli přejmenovat složku na wp-content/plugins/updraftplus." + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "Nevíte svůj email, nebo jste zapomněli heslo?" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "Pro spojení sem vložte svůj UpdraftPlus.Com email / heslo:" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "Zde si můžete přečíst FAQ." + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "Zaškrtněte tuto možnost pro šifrování na straně Amazon serveru" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "Šifrování na straně serveru" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "Pokud jste zapomněli heslo, pak pro změnu hesla na updraftplus.com jděte sem." + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "Pro připojení jděte do nastavení vzdáleného úložiště." + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "Pro vzdálené úložiště byl vybrán %s, ale v současnosti nejste připojeni." + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "Platba může být provedena v amerických dolarech, eurech, nebo britských librách pomocí karty, nebo přes PayPal." + +#: admin.php:607 +msgid "Update quota count" +msgstr "Aktualizovat kvótu." + +#: admin.php:606 +msgid "Counting..." +msgstr "Počítám..." + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "Odpojuji..." + +#: admin.php:603 +msgid "Connecting..." +msgstr "Připojuji..." + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "Obnovit současný stav" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "Získat větší kvótu" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "V současnosti využito:" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "Větší kvótu můžete získat zde" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "%s Chyba: nemáte k dispozici dostatečnou kvótu (%s) k nahrání tohoto archivu (%s)." + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "Odpojit" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "Kvóta:" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "Majitel Trezoru" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "Gratulujeme - nic dalšího není třeba nastavit." + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "Tato stránka je připojena k UpdraftPlus Trezoru." + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "Nejste připojeni k UpdraftPlus Trezoru." + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "Jděte sem pro pomoc" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "E-mail" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "Zpět..." + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "Předplatné může být kdykoliv zrušeno." + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "%s za čtvrtletí" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "Více informací najdete zde." + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "UpdraftPlus Trezor je postaven na světově nejlepších datacentrech od Amazonu se zálohovanými úložišti tak, aby bylo dosaženo 99.999999999% spolehlivosti." + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "Máte již zakoupené místo?" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "Zobrazit možnosti" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "Jste tu poprvé?" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "Začnete kliknutím na tlačítko." + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "UpdraftPlus Trezor přináší úložiště, které je spolehlivé, snadno použitelné a za skvělou cenu." + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "Vaše předplatné pro UpdraftPlus Trezor vypršelo. Během několika dní budou vaše data trvale odstraněna. Pokud nechcete, aby se to stalo, měli byste si předplatné obnovit co nejdříve." + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "Vaše platba za předplatné UpdraftPlus Trezor má zpoždění. Nacházíte se v několikadenním období, po kterém bude Váš přístup ke službě zrušen a ztratíte veškerá uložená data v ní. Obnovte si prosím předplatné co nejdříve!" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "Vaše licence UpdraftPlus Premium je již více, než rok stará. Měli byste si ji okamžitě obnovit, jinak ztratíte 12 měsíců úložiště zdarma, které jste získali díky tomu, že jste se stali uživateli UpdraftPlus Premium." + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "Updraft Trezor" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "Mazání selhalo:" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "Zip engine vrátil zprávu: %s." + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "Bez tohoto povolení nemůže UpdraftPlus mazat zálohy - zároveň byste měli nastavit své \"ponechávací\" nastavení velmi vysoko, aby se vám nezobrazovali chyby při pokusech o mazání." + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "Povolit mazání" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "Bez tohoto povolení nemůžete přímo stahovat, nebo obnovovat pomocí UpdraftPlus. Místo toho musíte navštívit stránky AWS." + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "Povolit download" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "Pokud nefunguje přímé posílání ze stránek na stránky, jsou k dispozici další tři způsoby - zkuste prosím místo toho některý z nich." + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "Měli byste zkontrolovat, že je vzdálená stránka online, není za firewallem, nemá bezpečnostní moduly, které by mohli bránit přístupu, má aktivní UpdraftPlus verzi %s, nebo novější a že byli správně vloženy klíče." + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "Existující klíče" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "Zatím nebyl vytvořený žádný klíč pomocí kterého by se mohla připojit vzdálená stránka." + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "Váš nový klíč je:" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "K tomu, aby mohla jiná stránka posílat zálohy na tuto stránku, vytvořte klíče a pak klikněte na tlačítko \"Migrovat\" na stránce, z které chcete zálohu odeslat a zkopírujte tam klíč." + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "Takže pro získání klíče pro vzdálenou stránku otevřete na dané stránce okno \"Migrovat\", sjeďte dolů a tam můžete klíč vytvořit." + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "Klíče pro tuto stránku jsou vytvořeny pod aktuální sekcí." + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "Tento klíč si musíte nyní zkopírovat - nemůže být znovu zobrazen." + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "Klíč úspěšně vytvořen." + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "Klíč s tímto názvem již existuje; musíte použít unikátní jméno." + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "Poslat tuto zálohu také na aktivní vzdálená úložiště" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "URL stránky, kam chcete odesílat (%s) vypadá jako lokální vývojová stránka. Pokud odesíláte data z vnější sítě, je pravděpodobné, že budete zablokováni firewallem." + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "stránka nenalezena" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "Data zálohy budou poslána:" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "Obnovit existující zálohu na této stránce" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "Tato stránka zatím nemá žádné zálohy k obnovení." + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "Záloha vytvořena %s" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "Tato zálohovací metoda nedovoluje stahování" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "(záloha importována ze vzdáleného umístění)" + +#: admin.php:4423 +msgid "Site" +msgstr "Stránka" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "Záloha poslaná na vzdálenou stránku - není dostupná ke stažení." + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "Než provedete obnovu, měli byste se ujistit, že je tato záloha opravdu určena pro tuto stránku a ne pro nějakou jinou." + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "U této zálohy se UpdraftPlus domnívá, že nebyla vytvořena současnou WordPress instalací, ale že byla buď nalezena na vzdáleném úložišti, nebo poslána z vzdálené stránky." + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "Testování spojení..." + +#: admin.php:617 +msgid "Deleting..." +msgstr "Mazání..." + +#: admin.php:616 +msgid "key name" +msgstr "jméno klíče" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "dejte tomuto klíči prosím jméno (např. indikující pro jakou je stránku):" + +#: admin.php:611 +msgid "Creating..." +msgstr "Vytvářím..." + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "Nebo získejte zálohu z jiné stránky" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "Zkopírujte klíč sem" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "Jak získám klíč stránky?" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "K přidání stránky jako cíle pro poslání zálohy vložte níže klíč dané stránky." + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "Nebo poslat zálohu na jinou stráku" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "Poslat" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "Poslat na stránku:" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "Zatím nebyla přidána žádná přijímající stránka." + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "Je pro posílání záloh na následující stránku:" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "Klíč byl úspěšně přidán." + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "Vložený klíč nepatří vzdálené stránce (patří této stránce)." + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "Vložený klíč je poškozený - zkuste to prosím znovu." + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "Vložený klíč má špatnou délku - zkuste to prosím znovu." + +#: addons/migrator.php:1861 +msgid "key" +msgstr "klíč" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "Téměř všechny FTP servery vyžadují pasivní mód, ale pokud potřebujete aktivní mód, pak tuto možnost zrušte." + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "Pasivní mód" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "Vzdálená cesta" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "FTP heslo" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "FTP přihlašovací jméno" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "FTP server" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "UpdraftPlus Migrator patřičně upraví proces obnovy, aby obnovované data odpovídala nové stránce." + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "\"Migrace\" je to samé jako obnova, ale používáte při ní zálohu vytvořenou na jiné stránce." + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "Přidat stránku" + +#: admin.php:608 +msgid "Adding..." +msgstr "Přidávám..." + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "Nárok nebyl udělen - možná jste tuto objednávku již použili někde jinde, nebo vaše předplatné pro stahování z updraftplus.com vypršelo?" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "K použití této zálohy musí váš databázový server podporovat %s znakovou sadu." + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "jděte sem ke změně hesla na updraftplus.com" + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "Pokud jste zapomněli heslo" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "Pro znovu zadání hesla běžte sem." + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "Po stisknutí tohoto tlačítka si budete moci zvolit, které komponenty budete chtít migrovat" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "K importování zálohy jděte na záložku \"Existující zálohy\"" + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "Provedli jste změny v nastavení, ale neuložili jste ho." + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "Poznámka: %s není citlivý na velikost písmen." + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "Pokud vám OneDrive později ukáže zprávu \"unauthorized_client\", pak jste sem nevložili platné klientské ID." + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "Pro delší nápovědu, včetně snímků obrazovky, následujte tento odkaz." + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "Ve vývojářské konzoli OneDrive si vytvořte přihlašovací údaje k OneDrive." + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "Pokud o to budete požádání, musíte toto vložit jako autorizovanou URI přesměrování ve vaší konzoli OneDrive (k nalezení pod \"Nastavení API\")" + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "%s autorizace selhala:" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "OneDrive" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "Prosím znovu autorizujte připojení ke svému %s účtu." + +#: methods/email.php:73 +msgid "configure it here" +msgstr "konfigurujte zde" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "K odstranění bloku jděte prosím sem." + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "Nezapomeňte uložit své nastavení." + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "K přístupu ke svému bucketu nyní používáte uživatelský účet IAM." + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "S3 bucket" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "Čína (Peking) (omezeně)" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "Jižní Amerika (Sao Paulo)" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "Asijský Pacifik (Tokio)" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "Asijský Pacifik (Sydney)" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "Asijský Pacifik (Singapur)" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "EU (Frankfurt)" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "EU (Irsko)" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "US Government West (omezeně)" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "US Západ (Severní Kalifornie)" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "US západ (Oregon)" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "US standart (výchozí)" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "oblast S3 úložiště" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "Nové IAM uživatelské jméno" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "Administrátorský tajný klíč" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "Administrátorský přístupový klíč" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "Poté lze použít k přístupu tyto údaje, místo zadávání administrátorských." + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "Toto bude použito pro vytvoření nového uživatele a páru klíčů s IAM nastavením, které umožní přístup pouze do daného bucketu." + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "Vložte svůj administrátorský/tajný klíč k Amazon S3 (musí se jednat o pár klíčů, který má dostatek oprávnění k vytvoření uživatelů a bucketů) a nové (unikátní) uživatelské jméno pro nového uživatele a jméno bucketu." + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "Vytvořit nového IAM uživatele a S3 bucket" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "Tajný klíč: %s" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "Přístupový kód: %s" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "Nepodařilo se aplikovat uživatelské nastavení" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "Operace tvorby uživatelského Přístupového klíče selhala" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "Nepodařilo se vytvořit uživatelský Přístupový klíč" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "IAM operace selhala (%s)" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "Konflikt: takový uživatel již existuje" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "Selhání: K danému bucketu se nepodařilo přistoupit, nebo ho vytvořit. Prosím, zkontrolujte své přístupové údaje a pokud jsou správné, zkuste jiný název bucketu (protože jiný AWS uživatel již mohl tento název použít)." + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "AWS autentifikace selhala" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "Nelze vytvořit nového AWS uživatele, jelikož je použitý starý AWS toolkit." + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "Musíte vložit bucket" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "Musíte vložit nové IAM uživatelské jméno" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "Musíte vložit administrátorský tajný klíč" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "Musíte vložit administrátorský přístupový klíč" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "Pokud máte administrátorský účet AWS, můžete použít tohoto průvodce k rychlému vytvoření nového AWS (IAM) uživatele s přístupem pouze k tomuto bucketu (spíše, než k vašemu celému účtu)" + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "Pro vytvoření nového IAM pod-uživatele a přístupového klíče, který bude mít přístup pouze k tomuto bucketu, použijte tento add-on." + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "Pro osobní podporu, schopnost kopírovat celé stránky, více cílových úložišť, bezpečnostní šifrované zálohy, více cílů záloh, lepší reportování, žádné reklamy a mnohem více, podívejte se na prémiovou verzi UpdraftPlus - světově nejoblíbenějšího zálohovacího pluginu." + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "UpdraftPlus novinky, vysoce kvalitní výukové materiály pro WordPress vývojáře a majitele stránek a obecné WordPress novinky. Kdykoliv se můžete odhlásit." + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "cesta uploadů (%s) se během migrace změnila - resetuji (na: %s)" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "S největší pravděpodobností to znamená, že sdílíte webový server s hacknutými stránkami, které byly použity při předchozích útocích." + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "Vypadá to, že IP adresa vašeho webového serveru (%s) je zablokovaná." + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "OpdraftPlus.com odpověděl 'Přístup odepřen'." + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "Prémiové WooCommerce pluginy" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "Dvou-úrovňový bezpečnostní plugin zdarma" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "Více kvalitních pluginů" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "Přejít do obchodu." + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "Porovnání s verzí zdarma" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "UpdraftPlus Premium" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "Pro registraci následujte tento odkaz." + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "Novinky zdarma" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "Děkujeme, že zálohujete s UpdraftPlus!" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "Schovat (na %s měsíců)" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "(ve stejný čas, jako záloha souborů)" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "Žádná záloha nebyla dokončena" + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "První krok je odinstalování verze zdarma." + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "Pokud jste provedli objednávku z UpdraftPlus.Com, následujte tento odkaz nainstalování toho, co jste si zakoupili." + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "Přihlášení k newsletterům" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "Pro přihlášení k UpdraftPlus newsletteru klikněte na tento odkaz." + +#: admin.php:2831 +msgid "Personal support" +msgstr "Osobní podpora" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "Zamknout přístup k nastavení" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "Síťová/Multistránková podpora" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "Opravit čas zálohování" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "Naplánované zálohy" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "Obnovit zálohu z ostatních pluginů" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "Šifrování databáze" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "Poslat zálohu na více vzdálených uložišť" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "Automaticky zálohovat při aktualizaci WordPressu/pluginů/témat" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "Pokročilé reportovací možnosti" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "Základní email report" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "Migrovat / klonovat (kopírovat) stránky" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "Zálohovat extra soubory a databáze" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "WebDAV, Copy.Com, SFTP/SCP, šifrované FTP" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "Dropbox, Google Drive, FTP, S3, Rackspace, Email" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "Zálohovat na vzdálené uložiště" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "Obnovit ze zálohy" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "Přeloženo do více než %s jazyků" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "Zálohovat soubory a databázi WordPressu" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "Koupit nyní!" + +#: admin.php:2718 +msgid "Get it from" +msgstr "Získejte z" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "Položit otázku předprodeje" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "Časté otázky přeprodeje" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "Seznam všech vlastností" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "Získat UpdraftPlus Premium" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "Aktuálně používáte neplacenou verzi UpdraftPlus z wordpress.org." + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Před nahráním zálohovat s UpdraftPlus (kde je opodstatnění) pluginy, témata a WordPress databázi" + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "Chyba %s: Chyba inicializace" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "nebo" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "nebo" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "Nevybrali jste nic k obnovení. Vyberte alespoň jednu věc a zkuste to znovu." + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "Jsou akceptovány PKCS1 (PEM hlavička: BEGIN RSA PRIVATE KEY), XML a PuTTY formáty klíčů." + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "Pokračování částečného nahrávání je podporování SFTP, ale ne SCP. Pokud tedy používáte SCP, je potřeba se ujistit, že váš webserver podporuje tak dlouhý běh PHP procesu, aby se nahrál i největší soubor zálohy." + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "tenant" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "Musí být v2 (Keystone) autentifikační URI; v1 (Swauth) není podporováno." + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "adresa administrátora vašich stránek" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "Pokud chcete zaslat základní report, zaškrtněte toto políčko" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "Ručně" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "Nastalo %s chyb:" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "Změnit nastavení zámku" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "Jakýkoliv další soubor/složka na serveru, které si přejete zálohovat" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "pro ještě více schopností a osobní podpory se podívejte na" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "Tvorba tabulky selhala - pravděpodobně proto, že tabulka již existuje a není oprávnění pro její smazání; pokračuji" + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "Mazání stránek z cache (%s)..." + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "dešifrovací fráze pro databázi" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "Automatická záloha před aktualizací" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "Jádro WordPressu (pouze)" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "Pro podporu odemčení kontaktujte osobu, která pro vás spravuje UpdraftPlus." + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "Pro zpřístupnění nastavení UpdraftPlus prosím zadejte heslo pro odemknutí" + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "Špatné heslo" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "Odemčeno" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "Jinak bude zobrazen výchozí odkaz." + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "Každému, kdo uvidí uzamykací stránku, se zobrazí tato URL pro podporu - vložte adresu stránky, nebo emailovou adresu." + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "URL podpory" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "Požadovat heslo opět po" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "%s týdnů" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "1 týden" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "%s hodin" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "1 hodina" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "Ujistěte se prosím, že jste si poznamenali heslo!" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "Zabezpečený přístup ke stránce s UpdraftPlus nastavením" + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "Nastavení uloženo." + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "Heslo admina bylo změněno." + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "Heslo admina bylo nastaveno." + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "Heslo admina bylo odstraněno." + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "(dozvědět se víc o této významné možnosti)" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "Po získání add-onů můžete z nastavení níže odstranit své heslo (ale ne email) bez toho, aniž byste ovlivnili přístup stránky k aktualizacím." + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "Zobrazit log" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "Data zálohy (klikněte pro stažení)" + +#: admin.php:4368 +msgid "Backup date" +msgstr "Datum zálohy" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "a uchovat tolik naplánovaných záloh" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "kumulativní záloha; základní záloha: %s" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "Pro možnost zamčení nastavení UpdraftPlus heslem přejděte na UpdraftPlus Premium." + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "Nahrát soubory do UpdraftPlus." + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "Tlačítko \"Zálohovat nyní\" není aktivní, protože do složky se zálohami nelze zapisovat (jděte do záložky \"Nastavení\" a najděte odpovídající možnost)." + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "Štítek zálohy:" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "Chyba: čtení neočekávaného souboru" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "pro více informací zkontrolujte log." + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "váš web hostingový účet se zdá být plný; prosím podívejte se: %s" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "Objevila se chyba zip" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "Váš štítek pro tuto zálohu (nepovinné)" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "%s nepovoluje autorizaci stránek hostovaných na IP adrese. Nejprve musíte změnit adresu stránky (%s), abyste mohli použít %s pro ukládání." + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "Vložili jste emailovou adresu, která nebyla UpdraftPlus.Com rozpoznána." + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "Váše emailová adresa byla správná, ale heslo nebylo UpdraftPlus.Com rozpoznáno." + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "Musíte poskytnout jak email, tak heslo" + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "Pro pokračování stiskněte 'Zálohovat nyní'. Pak sledujte, zda se mění 'Poslední zpráva logu'." + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "Pokud chcete obnovit multisite zálohu, měli byste nejdřív nastavit svůj WordPress jako multisite." + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "Vaše záloha je z Wordpress multisite instalace, ale tato stránka ne. Budou k dispozici pouze první stránky." + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "již hotovo" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "přeskočeno (není v seznamu)" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "Hledání a nahrazování tabulky:" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "Vložte seznam oddělený čárkami; pro všechny tabulky nechte prázdné." + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "Pouze tyto tabulky" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "Řádků na dávku" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "Zatím nejste spojeni se svým UpdraftPlus.Com účtem." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "Pro budoucí aktualizace se musíte spojit s UpdraftPlus." + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "Jakákoliv žádost o podporu týkající se %s, by měla být řešena s vaším poskytovatelem hostingu." + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "Měli byste pokračovat pouze pokud neaktualizujete současný server a jste si jisti (nebo ochotni riskovat), že vyše pluginy / témata / atd. jsou kompatibilní se starší verzí %s." + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "Což je velký rozdíl oproti verzi, na kterou chcete zálohu obnovit (verze %s)." + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "Stránka z této zálohy běžela na webserveru s verzí %s z %s." + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "LinkedIn" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "Google+" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "Facebook" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "Twitter" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "UpdraftPlus je na sociálních sítích - podívejte se na nás tady:" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "Proč tohle vidím?" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "Umístění složky je uloženo v pokročilém nastavení, na záložce Nastavení." + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "Pro podívání se po nových zálohách, které jste nahráli do složky UpdraftPlus (na vašem hostingu) klikněte zde." + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "Zahájit zálohu" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "Používáte %s webserver, ale vypadá to, že nemáte načtený %s modul." + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "Pro konzultaci, jak povolit WordPress pluginu zapisovat do složky, budete potřebovat kontaktovat vašeho poskytovatele." + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "Pokud nemáte žádný problém, můžete ignorovat všechno, co tu je." + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "Tento soubor nemůže být nahrán" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "Více informací o tom najdete v sekci Nastavení." + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "Podporované zálohovací pluginy: %s" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "Je toto záloha provedená jiným zálohovacím pluginem? Pokud ano, budete ho možná nejdříve muset přejmenovat, aby mohla být rozpoznána - prosím následujte odkaz." + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "Řekněte mi víc o přírůstkových zálohách" + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "Limit paměti" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "obnovení" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "Tabulka, která bude implicitně smazána: %s" + +#: backup.php:829 +msgid "Incremental" +msgstr "Přírůstková" + +#: backup.php:829 +msgid "Full backup" +msgstr "Plná záloha" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "nyní pokračovat s aktualizacemi..." + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "(zobrazit log...)" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "Záloha úspěšná" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "Každých %s hodin" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "najít a nahradit" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "Začni" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "Najít/nahradit nemůže být vráceno zpět - jste si jisti, že to chcete udělat?" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "Toto může snad zničit vaši stránku, takže to používejte opatrně!" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "Nahradit s" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "Hledat" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "Najít/nahradit databázi" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "hledaný výraz" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "Vyskytlo se příliš mnoho chyb databáze - přerušuji" + +#: backup.php:895 +msgid "read more at %s" +msgstr "čtete více na %s" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "Emailové reporty vytvořené pomocí UpdraftPlus (verze zdarma) vám přináší UpdraftPlus.com novinky" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "Poznámka: Pokud nainstalujete UpdraftPlus na několika WordPress stránkách, nemůžete použít jeden projekt pro všechny. Pro každou stránku musíte v Google API konzoli vytvořit nový." + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "Zatím jste nevytvořili žádnou zálohu." + +#: admin.php:3872 +msgid "Database Options" +msgstr "Možnosti databáze" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "Pluginy pro debugování:" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "%s (%s použito)" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "Volné místo na disku pro účet:" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "Toto tlačítko je zakázané, protože se do vaší složky pro zálohy nedá zapisovat (podívejte se do nastavení)." + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "Existující zálohy" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "Současný stav" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "Ke změně výchozího nastavení toho, co se zálohuje, k nastavení naplánovaných záloh, k odeslání záloh na vzdálené uložiště (doporučujeme) a mnoho dalšího, jděte na záložku nastavení." + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "K vytvoření zálohy prostě stiskněte tlačítko Zálohovat nyní." + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "Vítejte v UpdraftPlus!" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "Pokud sem vložíte text, bude použit k šifrování zálohy databáze (Rijndael). Zaznamenejte si ho a neztraťte ho, nebo budou vaše zálohy k ničemu. Je to zároveň klíč k dešifrování záloh z tohoto admin prostředí (takže pokud ho změníte, nebude automatické dešifrování fungovat, dokud ho nezměníte zpět)." + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "Testuji..." + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "Test spojení..." + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "Prefix tabulky" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "Zálohovat externí databázi" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "Přidat externí databázi do zálohy..." + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "Pokud vaše databáze obsahuje extra tabulky, které nejsou součástí této WordPress instalace (měli byste vědět, jestli tomu tak je), pak aktivujte tuto možnost, abyste je také zazálohovaly." + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "Záloha ne-WordPressových tabulek obsažených ve stejné databázi, jako WordPress" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "Tato možnost způsobí, že budou zazálohovány i tabulky v MySQL databázi, které nepatří k WordPressu (identifikace je provedena pomocí chybějícího WordPress prefixu %s)." + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "Spojení se nezdařilo." + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "Spojení úspěšné." + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "%s tabulek nalezeno celkem; %s s daným prefixem." + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "Tabulek nalezeno: %s." + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "selhal pokus o připojení k databázi" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "jméno databáze" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "host" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "uživatel" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "Externí databáze (%s)" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "Následujte tento odkaz do vaší Google API konzole a aktivujte tam Drive API a vytvořte Client ID v sekci API Access." + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "nepodařilo se přistoupit k nadřazené složce" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "Nicméně následné pokusy o připojení selhaly:" + +#: admin.php:4499 +msgid "External database" +msgstr "Externí databáze" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "Způsobí to, že se zde zobrazí i debug výstup ostatních pluginů - nebuďte proto překvapeni, že tomu tak je." + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "Zálohovat více databází" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "Nejprve vložte dešifrovací klíč" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "Zde můžete ručně dešifrovat šifrovanou databázi." + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "Dokáže také zálohovat externí databáze." + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "Nechcete být špehování? UpdraftPlus Premium dokáže zálohu databáze šifrovat." + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "použít UpdraftPlus Premium" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "Dešifrování selhalo. Soubor databáze je šifrován." + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "Obnovena může být pouze WordPress databáze; s externí databází si budete muset poradit ručně." + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "Při prvním %s příkazu nastala chyba - ruším běh" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "Připojení selhalo: zkontrolujte přístupové údaje, jestli server s databází běží a zda nebrání síťovému běhu firewall." + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "pokus o připojení k databázi selhal." + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "Varování: domovská URL databáze (%s) je jiná, než jsme očekávali (%s)" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "V %s u cesty záleží na velikosti písmen." + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "Pokud ji necháte prázdnou, bude záloha uložena do kořene vaší %s" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "např. %s" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "Pokud složka neexistuje, bude vytvořena." + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "Vložte cestu k %s složce, kterou zde chcete použít." + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "Kontejner" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "Pro zvolení výchozího nechte prázdné." + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "Nájemník" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "Pro více informací následujte tento odkaz" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "ověřovací URI" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "Získejte přihlašovací údaje od svého poskytovatele OpenStack Swift a pak vyberte jméno kontejneru, který chcete použít jako uložiště. Pokud daný kontejner neexistuje, bude pro vás vytvořen." + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "Stahování %s se nezdařilo" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "Stahování se nezdařilo" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "nepodařilo se získat seznam souborů" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "Nahrání %s se nezdařilo" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "Úspěch:" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "Poté co uložíte nastavení (kliknutím na \"Uložit změny\" níže), vraťte se sem a klikněte na tento odkaz pro dokončení ověření s %s." + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "(Vypadá to, že již jste ověřeni)." + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "Dropbox" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "Ověření s %s" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "Chyba při stahování vzdáleného souboru: Nepodařilo se ho stáhnout" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "Oblast: %s" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "%s chyba - přistoupili jsme ke kontejneru, ale nepodařilo se nám v něm vytvořit soubor" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "Objekt %s nebyl nalezen" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "Nepodařilo se přistoupit ke kontejneru %s" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "%s chyba - nepodařilo se přistoupit ke kontejneru" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "Jméno držitele účtu: %s." + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "Pokud chcete moct nastavit vlastní název složky, použijte UpdraftPlus Premium." + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "Je to vnitřní ID Google Disku" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "Toto NENÍ název složky." + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "Složka" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "%s stahování: selhalo: soubor nenalezen" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "Jméno: %s." + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "Seznam souborů Google Disku: nelze přistoupit k rodičovské složce" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "Vaše %s verze: %s." + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "Budete muset požádat svého poskytovatele o aktualizaci." + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "Toto vzdálené uložiště (%s) vyžaduje PHP %s, nebo novější." + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "Složka tématu (%s) nebyla nalezena, ale existuje její verze s malými písmeny; patřičně upravuji možnost databáze" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "Zavolat" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "Přinést" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "Tato vlastnost vyžaduje %s verzi %s, nebo novější" + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "Detekován Elegant themes theme builder plugin: resetuji dočasnou složku" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "%s souborů bylo rozbaleno" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "Nepodařilo se rozbalit archiv" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "Chyba - nepodařilo se stáhnout soubor" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "Vyhledat nové zálohy v lokální složce" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "Pro zajištění kompatibility byste měli aktualizovat UpdraftPlus." + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "Byla testována do verze %s." + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "Nainstalovaná verze UpdraftPlus Backup/Restore nebyla testována na vaší verzi WordPressu (%s)." + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "heslo/klíč" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "Klíč" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "Vaše přihlášení může být založeno pouze na heslu, nebo klíči - vložte pouze jedno, ne oboje." + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "Vložený klíč není ve správném formátu, nebo je poškozen." + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "SCP/SFTP heslo/klíč" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "Záloha souborů (vytvořil %s)" + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "Záloha souborů a databáze WordPressu (vytvořil %s)" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "Zálohu vytvořil: %s." + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "Databáze (vytvořil %s)" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "neznámý zdroj" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "Znovu prohledat vzdálené uložiště" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "Nahrát soubory zálohy" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "Tuto zálohu vytvořil %s a může být importována." + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "Na této stránce je návod s možnými příčinami a opravami." + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "WordPress má {%d} zpožděných naplánovaných úkolů. Pokud není tato stránka vývojářská, je pravděpodobné, že plánovač ve vašem WordPressu nefunguje." + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "Pokud je toto záloha vytvořená jiným pluginem pro zálohu, pak by vám mohl pomoci UpdraftPlus Premium." + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "Nicméně archivy UpdraftPlus jsou běžné zip/SQL soubory - takže pokud si jste jisti, že má váš soubor správný formát, můžete ho přejmenovat, aby odpovídal danému vzoru." + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "Tento soubor nevypadá jako archiv se zálohou UpdraftPlus (takové soubory jsou .zip, nebo .gz soubory, které mají jméno ve tvaru: backup_(čas)_(název stránky)_(kód)_(typ).(zip|gz))." + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "Záloha vytvořena neznámým zdrojem (%s) - nemůže být obnovena." + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "Složka WordPressu s obsahem (wp-content) nebyla v tomto zip souboru nalezena." + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "Tato verze UpdraftPlus neví, jak zpracovat tento typ cizí zálohy" + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "%s vrátil neočekávanou HTTP odpověď: %s" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "UpdraftPlus modul pro tento typ přístupu k souborům (%s) nepodporuje výpis souborů" + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "Nebylo nalezeno žádné nastavení" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "Jedna nebo více záloh byla přidána z prohledání vzdáleného uložiště; Upozorňujeme, že tyto zálohy nebudou automaticky smazány skrze \"ponechat\" nastavení; Pokud je budete chtít smazat, musíte to udělat ručně." + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "Prohledávám vzdálená a lokální uložiště kvůli zálohám..." + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "(Číst více)" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "Nastavování vícestránkových (WPMU) cest" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "Logovat veškeré zprávy do syslogu (nastavení pouze pro správce serveru)" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "Přidat další..." + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "Odstranit" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "Ostatní frekventované otázky ohledně %s." + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "Zaškrtněte, pokud chcete dostávat více informací a mailů o procesu záloh - užitečné pokud se něco pokazí." + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "Při vkládání více souborů/složek, je oddělujte čárkou. Pro objekty vrchní úrovně můžete na začátku, nebo na konci použít zástupný znak *." + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "Detekován plugin pro režii vlastního obsahu: mažu možnost cache" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "Dokud váš provozovatel hostingu nepovolí tyto funkce, nebude %s pracovat." + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "Instalace PHP na serveru má zakázány následující funkce: %s." + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "šifrované FTP (explicitní šifrování)" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "šifrované FTP (implicitní šifrování)" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "běžné nešifrované FTP" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "Zálohu vytvořil:" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "Dostupné pro tuto stránku" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "Pro udržení přístupu k podpoře, ho prosím obnovte." + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "Placený přístup k UpdraftPlus podpoře brzy vyprší." + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "K obnovení přístupu, ho prosím obnovte." + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "Váš placený přístup k podpoře UpdraftPlus vypršel." + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "Placený přístup k aktualizacím UpdraftPlus na těchto stránkách brzy vyprší." + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "K zachování přístupu a udržení přístupu k aktualizacím (včetně budoucích novinek a kompatibility s budoucími vydáními WordPressu) a podpoře, ho prosím obnovte." + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "Váš placený přístup k UpdraftPlus aktualizacím pro %s z %s add-onů na této stránce brzy vyprší." + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "Váš placený přístup k aktualizacím UpdraftPlus add-onů %s na této stránce vypršel." + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "Pro obnovení přístupu k aktualizacím (včetně budoucích novinek a kompatibility s budoucími vydáními WordPressu) a podpoře, ho prosím obnovte." + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "Placený přístup k UpdraftPlus aktualizacím pro tuto stránku vypršel. Nadále nebudete dostávat aktualizace pro UpdraftPlus." + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "Odstranit z hlavní nástěnky (na %s týdnů)" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "Pokus o dvojitou dekompresi byl úspěšný." + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "Pokus o dvojitou dekompresi selhal." + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "Databázový soubor se zdá být dvakrát komprimovaný - stránka z které jste ho stáhli měl pravděpodobně špatně nastavený webserver." + +#: admin.php:1528 +msgid "Constants" +msgstr "Konstanty" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "Otevření souboru pro čtení selhalo:" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "V databázi nebyla nalezena žádná tabulka." + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "prosím počkejte na přeložený pokus" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "Berte na vědomí, že varovné zprávy jsou doporučené - proces zálohy se kvůli nim nezastaví. Místo toho poskytnou informace, které pro vás mohou být užitečné, nebo mohou poskytnout původce problému, pokud se záloha nezdaří." + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "Zpracováno databázových dotazů: %d během %.2f vteřin" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "Hledání a nahrazení dosáhlo řádek: %d" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "Přeskakuji tuto tabulku: data v této tabulce (%s) by neměly být vyhledány/změněny" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "Plný účet: na Vašem %s účtu zbývá pouze %d bytů prostoru, nahrávanému souboru zbývá %d bytů k úplnému nahrání (celková velikost: %d bytů)" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "Objevily se chyby:" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "Pro stažení log souboru tohoto obnovení pokračujte zde (je třeba pro jakýkoliv požadavek podpory)." + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "Podívejte se i na tyto často kladené otázky." + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "Pokud si nezvolíte žádné vzdálené uložiště, zůstanou zálohy na tomto webserveru. To se nedoporučuje (pokud je ovšem nemáte v plánu ručně stáhnout do počítače), protože ztráta/zničení webserveru by znamenala ztracení jak webu, tak i záloh najednou." + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "Získávám (pokud je potřeba) a připravuji soubory k zálohování..." + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "PHP nastavení na tomto webserveru umožňuje, aby PHP běželo pouze %s sekund a nedovoluje, aby byl limit zvýšen. Pokud budete importovat velké množství dat a čas pro operaci obnovy vyprší, pak budete muset požádat svého poskytovatele hostingu o způsob, jak navýšit tento limit (nebo se pokusíte o obnovení kousek po kousku)." + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "Existují nesmazané složky z předchozí obnovy (Než to zkusíte znovu, zmáčkněte prosím tlačítko \"Smazat staré složky\"): %s" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "Čas, po který mohou pluginy WordPressu běžet je velmi malý (%s sekund) - měli byste zvýšit limit, abyste se vyhnuli chybám při zálohách způsobených nedostatkem času (pomoc konzultujte s vaším poskytovatelem hostingu - jde o nastavení PHP max_execution_time; doporučená hodnota je minimálně %s sekund)" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "Nahrazení v tabulce blogu/stránky: z: %s na: %s" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "%s: Přeskočen cache soubor (ještě neexistuje)" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "Deaktivován plugin: %s: až budete připraveni, plugin opět ručně aktivujte." + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "Připojení %s vypršel čas; pokud jste server zadali správně, pak je tato chyba běžně způsobena blokací firewallu - doporučujeme konzultaci s poskytovatelem hostingu." + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "Aktuální téma nebylo nalezeno; aby nedošlo k zastavení načítání stránky, bylo vaše téma vráceno zpět na původní" + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "Obnova selhala..." + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "Zprávy:" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "Byl nalezen řádek SQL, který nemůže být rozdělen a je větší, než maximální velikost paketu; tento řádek nebude proveden, ale bude vypuštěn: %s" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "Složka neexistuje" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "E-mailová adresa nového uživatele" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "Přihlašovací jméno nového uživatele" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "API klíč administrátora" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "Uživatelské jméno administrátora" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "Účet na US nebo UK Rackspace" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "Vložte Rackspace administrátorské jméno/API klíč (takže Rackspace může ověřit vaše právo vytváření nových uživatelů) a vložte nové (jedinečné) uživatelské jméno a mailovou adresu pro nového uživatele a název kontejneru." + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "Vytvořit nového API uživatele a kontejner" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "API klíč: %s" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "Heslo: %s" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "Uživatelské jméno: %s" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "Neúspěšná operace s Cloud Files (%s)" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "Konflikt: tento uživatel nebo e-mailová adresa již existuje" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "Musíte zadat správnou e-mailovou adresu" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "Musíte zadat kontejner" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "Musíte zadat nové uživatelské jméno" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "Je potřeba zadat administrátorský API klíč" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "Je potřeba zadat uživatelské jméno administrátora" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "Vytvořte nového API uživatele s přístupem pouze k tomuto kontejneru (spíš, než váš celý účet)" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "Přidejte vylepšené možnosti pro Rackspace Cloud Files uživatele" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "Rackspace Cloud Files, vylepšeno" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "Kontejner Cloud Files" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "API klíč Cloud Files" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "K vytvoření nového Rackspace API pod-uživatele a API klíče, který má přístup pouze k tomuto Rackspace kontejneru, použijte tento add-on." + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "Uživatelské jméno ke Cloud Files" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "Londýn (LON)" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "Hong Kong (HKG)" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "Severní Virginia (IAD)" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "Chicago (ORD)" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "Sydney (SYD)" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "Dallas (DFW) (výchozí)" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "Region Cloud Files úložiště" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "Účty vytvořené na rackspacecloud.com jsou US účty; účty vytvořené na rackspace.co.uk jsou UK účty" + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "US nebo UK účet Rackspace" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "Účty vytvořené na rackspacecloud.com jsou US účty; účty vytvořené na rackspace.co.uk jsou UK účty" + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "Ověření selhalo (zkontrolujte Vaše údaje)" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "Vyskytla se neznámá chyba při pokusu o připojení k UpdraftPlus.Com" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "Vytvořit" + +#: admin.php:556 +msgid "Trying..." +msgstr "Zkouším..." + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "Konzolové heslo (již nebude znovu zobrazeno) nového uživatele RackSpace:" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "(po dešifrování)" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "Chybová data:" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "Záloha neexistuje v historii záloh" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "Vaše WordPress instalace obsahuje staré složky ze stavu před obnovením/migrací (technická informace: tyto jsou označeny příponou -old). Jakmile ověříte, že obnova proběhla správně, měli byste je vymazat zmáčknutím tohoto tlačítka." + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "Abyste se vyhnuli překročení limitu pro velikost paketu, rozdělte řádek" + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "Váš uživatel databáze nemá oprávnění k mazání složek (příkaz DROP). Pokusíme se o obnovu jejich pouhým vyprázdněním; to by se mělo podařit, pokud obnovujete WordPress se stejnou databázovou strukturou (%s)" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "Předpona nové tabulky: %s" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "Oprávnění souborů nedovoluje, aby byla stará data přesunuta a zachována; místo toho budou smazána." + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "%s: Tato složka již existuje a bude nahrazena" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "Nemohu přesunout soubory na místo. Zkontrolujte oprávnění souborů." + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "Nemohu přesunout nová data na místo. Zkontrolujte vaši složku wp-content/upgrade." + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "Nemohu přesunout stará data z cesty." + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "Přesouvám stará data z cesty..." + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "Přidat další adresu..." + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "Pokud chcete poslat report zálohy po jejím skončení, vložte adresy." + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "Reporty pro mail" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "%s kontrolní součet: %s" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "souborů: %s" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "V sekci \"Reportování\" můžete nastavit mailové adresy, které se mají použít." + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr "(s varováními (%s))" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr "(s chybami (%s))" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "Debug informace" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "Nahráno do:" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "Potřebný čas:" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "Varování" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "Chyby" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "Chyby/varování:" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "Obsahuje:" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "Začátek zálohování:" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "Zpráva o záloze" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "%d hodin, %d minut, %d vteřin" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "%d chyb, %d varování" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "%s ověření" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "%s chyby: %s" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "%s logo" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "%s nevrátil požadovanou odpověď - pro více informací zkontrolujte log soubor" + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "Požadovaný %s modul PHP není nainstalován - požádejte svého poskytovatele hostingu, aby ho povolil" + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "Pro více možností použijte \"%s\" add-on." + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "Bude použit mail administrátora vašich stránek (%s)." + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "Připojit" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "Pro více reportovacích možností použijte Reporting add-on." + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "(verze: %s)" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "Mějte na vědomí, že mailové servery mívají limity pro velikost příloh; typicky okolo %s Mb; zálohy větší, než jakýkoliv limit pravděpodobně nedorazí." + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "Pokud je povoleno uložiště přes mail, poslat zároveň celou zálohu" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "Poslední stav:" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "Záloha obsahuje:" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "Zálohováno: %s" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "K tomuto mailu byl připojen log soubor." + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "Neznámá/nečekaná chyba - prosím kontaktujte podporu" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "Pouze databáze (tento plán neobsahoval zálohu souborů)" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "Databáze (záloha souboru nebyla dokončena)" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "Pouze soubory (tento plán neobsahoval zálohu databáze)" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "Soubory (záloha databáze nebyla dokončena)" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "Soubory a databáze" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "(Toto se vztahuje na všechny pluginy WordPressu, pokud nebyly speciálně naprogramovány s WPMU podporou.)" + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "Bez upgradu dovoluje UpdraftPlus každému administrátorovi blogu, který může upravovat nastavení pluginu, zálohovat (a nakládat s daty, včetně hesel) a obnovovat (zahrnuje vlastní úpravy, třeba změnu hesel) celou síť." + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "WPMU je podporováno s extra funkcemi prostřednictvím UpdraftPlus Premium, nebo Multisite add-onem." + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "Toto je WPMU (síťová) instalace." + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "Varování UpdraftPlus:" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "(nebo se připojte pomocí formuláře na této stránce, pokud jste se již zakoupili)" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "Pokud chcete aktivovat aktualizaci pluginu, následujte tento odkaz" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "Pokud chcete získat aktualizaci pluginu, následujte tento odkaz" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "nedávné" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "Vaše verze: %s" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "Máte to" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "Podpora UpdraftPlus" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "Je k dispozici aktualizace pro UpdraftPlus addony, které používáte - pro získání následujte odkaz." + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "UpdraftPlus Addony" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "Je k dospozici aktualizace UpdraftPlus - pro získání následujte tento odkaz." + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "UpdraftPlus.Com vrátil odpověď, které nerozumíme" + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "UpdraftPlus.Com nerozpoznal vaši mailovou adresu a heslo" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "UpdraftPlus.Com vrátil odpověď, které nerozumíme (data: %s)" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "UpdraftPlus.Com odpověděl, ale odpovědi jsme nerozuměli" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "Nepodařilo se nám připojit k UpdraftPlus.Com" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "Reportování" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "Možnosti (holé)" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "Poslat report pouze pokud nastanou varování/chyby" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "URL obsahu:" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "Podívejte se také na \"More Files\" add-on z našeho obchodu." + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "Máte velmi málo volného místa na vašem hostingovém účtu - zbývá pouze %s Mb" + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "Množství paměti (RAM) povolené pro PHP je velmi malé (%s Mb) - pokud se chcete vyhnout chybám způsobeným nedostatečnou pamětí, zvyšte ji (pro více pomoci kontaktujte vašeho správce hostingu)" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "Spravovat addony" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "Koupit" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "Získat z obchodu UpdraftPlus.Com" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "aktivujte ji na této stránce" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "Máte neaktivní objednávku" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "Přiděleno této stránce" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "Povolit pro tuto stránku (skrze vaši objednávku add-onů)" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "(zřejmě před-verze, nebo uzavřená verze)" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "Jděte sem" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "Potřebujete podporu?" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "Při obnově vašich add-onů došlo k chybě." + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "Byla přijata neznámá odpověď. Odpověď byla:" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "Povolení nebylo uděleno - vaše přihlašovací údaje nebyly správné" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "Vytváříme požadavek, prosím čekejte..." + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "Při snaza o připojení k UpdraftPlus.Com nastaly tyto chyby:" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "Právě nejste připojeni ke svému UpDraftPlus.Com účtu." + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "Pokud jste si koupili nové add-ony, následujte tento odkaz k obnově vašeho připojení" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "Právě jste připojeni ke svému UpDraftPlus.Com účtu." + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "Chcete vědět o bezpečí vašeho hesla u UpdraftPlus.Com? Čtěte zde." + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "Zapomněli jste své údaje?" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "Stále ještě nemáte účet (je zdarma)? Získejte ho!" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "Spojit s vaším UpdraftPlus.Com účtem" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "Verze PHP na vašem webserveru je příliš stará (" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "Zdá se, že máte nainstalovaný zastaralý Updraft plugin - možná zmatení?" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "Chcete-li začít instalaci, jděte sem." + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "UpdraftPlus ještě není nainstalován." + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "Pro aktivaci jděte sem." + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "UpdraftPlus stále není aktivován." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "Pro připojení jděte sem." + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "K tomu abyste mohli procházet zakoupené add-ony se musíte přihlásit vaším UpdraftPlus.Com účtem." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "Bez něho bude šifrování mnohem pomalejší." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "Váš webserver nemá nainstalovaný %s modul." + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "(Zdá se, že jste již byli ověřeni, ale můžete být ověřeni znovu k obnově vašeho přístupu, pokud máte problém.)" + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "Sem přesuňte soubory zálohy" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "správa WordPressu přes příkazový řádek - velký spořič času" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "Podívejte se na WordShell" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "Chcete více funkcí, nebo placenou garantovanou podporu? Pak jděte na UpdraftPlus.Com" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "Webserver vrátil chybový kód (zkuste to znovu, nebo zkontrolujte logy webserveru)" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "Proces obnovy začal. Nemačkejte stop, ani nezavírejte prohlížeč, dokud se proces neoznačí za dokončený." + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "Pokud ze zálohy vyjmete databázi i soubory, pak jste vyjmuli všechno!" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "Úvodní stránka:" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "Možnosti vzdáleného uložiště" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "(logy jsou k dispozici v stránce nastavení UpdraftPlus jako normálně)..." + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "Zapamatovat tuto volbu pro příště (stále budete mít možnost ji změnit)" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "Nahrávání selhalo" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "S add-onem můžete zálohu odeslat na více, než jedno místo." + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "Poznámka: ukazatel postupu je založen na fázích, NE čase. Nezastavujte zálohu jen proto, že to vypadá, že se nic neděje - to je normální." + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "(%s%%, soubor %s z %s)" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "Jak toto funguje? Čtěte více..." + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "Chyba: Byli jsme schopni se přihlásit, ale nemohli jsme vytvořit soubor." + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "Chyba: Byli jsme schopni se přihlásit a přesunout se do dané složky, ale nemohli jsme vytvořit soubor." + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "Použijte SCP místo SFTP" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "SCP/SFTP nastavení uživatele" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "SCP/SFTP nastavení hosta" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "Pokus o odeslání zálohy mailem selhal (pravděpodobně byla záloha pro tuto metodu příliš velká)" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "Záloha je z: %s." + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "%s nastavení testovací výsledek:" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "(Neskončeno)" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "Pokud vidíte více záloh, než byste chtěli, je to pravděpodobně proto, že se staré zálohy nesmažou, dokud není nová hotová." + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "Neumisťujte ji do složky uploads, nebo plugins, protože by to způsobilo rekurzi (záloha zálohy zálohy zálohy...)" + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "Sem bude UpdraftPlus ukládat zip soubory, které bude vytvářet. Do složky musí být povolený zápis. Umístění je relativní vzhledem ke složce obsahu (v základu ke složce wp-content)." + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "ID operace: %s" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "poslední aktivita: před %ss" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "další pokračování: %d (po %ss)" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "Neznámý" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "Záloha dokončena" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "Došlo k chybám, s dalším pokusem čekám na naplánovaný čas" + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "Odstraňuji staré zálohy" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "Nahrávám soubory do vzdáleného uložiště" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "Databáze zašifrována" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "Šifrování databáze" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "Záloha databáze vytvořena" + +#: admin.php:3359 +msgid "table: %s" +msgstr "tabulka: %s" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "Vytvářím zálohu databáze" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "Zálohové zip soubory vytvořeny" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "Vytvářím zálohové zip soubory" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "Záloha začala" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "Průběh zálohy:" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "Ve vaší instalaci WordPressu je pomocí DISABLE_WP_CRON zakázán plánovač. Nemůže být provedena žádná záloha (dokonce ani "Zálohovat nyní"), pokud nespouštíte plánovač ručně, nebo dokud ho nepovolíte." + +#: restorer.php:646 +msgid "file" +msgstr "soubor" + +#: restorer.php:639 +msgid "folder" +msgstr "složka" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "UpdraftPlus potřebuje vytvořit ve složce obsahu %s, ale selhal - zkontrolujte prosím oprávnění souborů a povolte přístup (%s)" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "Záloha nebyla dokončena; pokračování je naplánováno" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "Vaše stránka je navštěvována nepravidelně a UpdraftPlus nezískal výsledek v jaký doufal; prosím přečtěte si tuto stránku:" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "%s autentifikace nemohla proběhnout, protože ji přerušilo něco na vaší stránce. Zkuste zakázat ostatní pluginy a přepnout na základní téma. (Zaměřte se hlavně na komponenty, které vyvolávají výstup (nejspíše PHP varování/chyby) před začátkem stránky. Vypnutí veškerých nastavení debugu může také pomoct.)" + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "Limit paměti pro PHP (nastavený poskytovatelem hostingu) je velmi nízký. UpdraftPlus se ho pokusil zvýšit, ale neuspěl. Tento plugin může mít problémy, pokud je limit nastavený na hodnotu menší, než 64 Mb - obzvláště, pokud nahráváte velké soubory (na druhou stranu stačí mnoha webům pouze 32 Mb - záleží na konkrétním případu)." + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "Pokračovat s aktualizací" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "Po stisku tlačítka Pokračovat počkejte na dokončení zálohy a nepřerušujte ji." + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "Automatické zálohy UpdraftPlus" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "Objevily se chyby:" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "Vytvářím zálohu pomocí UpdraftPlus..." + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "Automatická záloha" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "Vytvářím zálohu databáze pomocí UpdraftPlus..." + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "K aktualizaci této stránky nemáte dostatečná oprávnění." + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "témata" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "pluginy" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "Zahajuji automatickou zálohu..." + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "Vytvářím %s a zálohu databáze pomocí UpdraftPlus..." + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Před aktualizací automaticky zálohovat (kde je to relevantní) pluginy, témata a databázi WordPressu pomocí UpdraftPlus" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "Pokud si nejste jisti, měli byste přestat, jinak si můžete zničit vaši WordPress instalaci." + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "Toto nevypadá jako správná záloha jádra WordPressu - soubor %s chybí." + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "Nepodařilo se otevřít zip soubor (%s) - nepodařilo se provést před-sken pro zkontrolování integrity." + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "Nepodařilo se přečíst zip soubor (%s) - nepodařilo se provést před-sken pro zkontrolování integrity." + +#: admin.php:2310 +msgid "More plugins" +msgstr "Víc pluginů" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "Podpora" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "UpdraftPlus nedokázal při skenu zálohy databáze najít prefix tabulek." + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "V této záloze databáze chybí základní WordPress tabulky: %s" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "Importujete z novější verze WordPressu (%s) na starší (%s). Není žádná záruka, že to WordPress zvládne." + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "Databáze je příliš malá na to, aby se mohlo jednat o správnou WordPress databázi (velikost: %s Kb)." + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "Aktualizace tématu" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "Aktualizace pluginu" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "Buďte v bezpečí s automatickou zálohou" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "Zrušit (na %s týdnů)" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "Cesta nahrávání (%s) neexistuje - resetuji (%s)" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "Pokud můžete přečíst tato slova i poté, co se stránka načte, je na stránce problém s JavaScriptem, nebo JQuery." + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "Soubor byl nahrán." + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "Neznámý status odpovědi serveru:" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "Neznámá odpověď serveru:" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "Bude použit tento dešifrovací klíč:" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "Chcete-li zkusit dešifrovat a stáhnout databázi do počítače, klikněte sem." + +#: admin.php:584 +msgid "Upload error" +msgstr "Chyba nahrávání" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "Tento soubor zřejmě není databáze šifrovaná UpdraftPlus (takové soubory jsou .gz.crypt s jménem podle vzoru: backup_(čas)_(název stránky)_(kód)_db.crypt.gz)." + +#: admin.php:582 +msgid "Upload error:" +msgstr "Chyba nahrávání:" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "(ujistěte se, že se pokoušíte nahrát zip soubor, který byl vytvořen UpdraftPlus)" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "A pak, až skončíte," + +#: admin.php:572 +msgid "Download to your computer" +msgstr "Stáhnout do počítače" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "Smazat z webserveru" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "Příklady S3-kompatibilních poskytovatelů uložišť:" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "Pro tuto zálohu nebylo vybráno žádné vzdálené uložiště a proto nebudou archivy po rozbalení smazány" + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "Zdá se, že v této více archivní záloze chybí jeden, nebo více archivů." + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "(%d archiv(ů) v záloze)" + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "Rozdělit archivy každých:" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "Chyba: server zaslal odpověď (JSON) které systém nerozumí." + +#: admin.php:563 +msgid "Warnings:" +msgstr "Varování:" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "Chyba: server poslal prázdnou odpověď." + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "Zdá se, že jde o soubor vytvořený UpdraftPlus, ale instalace nezná tento typ objektu: %s. Možná potřebujete nainstalovat nějaký add-on?" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "Archivy zálohy byly zpracovány s chybami. Před pokračováním musíte zrušit operaci a opravit veškeré problémy." + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "Archivy zálohy byly zpracovány s varováními. Pokud je vše v pořádku, klikněte znovu na Obnovit pro pokračování. Jinak operaci zrušte a opravte problémy." + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "Archivy zálohy byly úspěšně zpracovány. Klikněte znovu na Obnovit pro pokračování." + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "Zdá se, že v této záloze s více archivy nejsou následující archivy: %s" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "Soubor (%s) byl nalezen, ale má jinou velikost (%s), než byla předpokládána (%s) - zřejmě je poškozen." + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "Soubor byl nalezen, ale má nulovou velikost (musíte ho nahrát znovu): %s" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "Soubor nenalezen (musíte ho nahrát): %s" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "Žádná taková záloha neexistuje" + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "Archiv zálohy pro tento soubor nebyl nalezen. Vzdáleného uložiště (%s) nám nedovoluje získat soubory. K provedení obnovy pomocí UpdraftPlus budete potřebovat zkopírovat tento soubor do pracovní složky UpdraftPlus" + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "Nelze přesunout složku (zkontrolujte oprávnění souboru a kvótu disku): %s" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "Nelze přesunout soubor (zkontrolujte oprávnění souboru a kvótu disku): %s" + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "Přesouvání rozbalené zálohy na místo..." + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "Nelze otevřít soubor zip (%s) - %s" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "serverová cesta ke kořenové složce WordPressu: %s" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "%s koncový bod" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "... a mnoho dalšího!" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "S3 (Kompatibilní)" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "Soubor není lokálně dostupný - musí být obnoven ze vzdáleného uložiště" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "Hledám archiv %s: jméno souboru: %s" + +#: admin.php:4836 +msgid "Final checks" +msgstr "Závěrečná kontrola" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "Zaškrtněte, pokud chcete po dokončení zálohy smazat všechny nadbytečné zálohy (tj. pokud odškrtnete, pak veškeré soubory, které budou odeslány na vzdálené uložiště zůstanou i lokálně a lokální soubory nejsou zahrnuty do limitu počtu záloh)." + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "přesuňte sem šifrované databázové soubory (db.gz.crypt soubory) k jejich nahrání a dešifrování" + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "Serverová cesta k vaší složce wp-content: %s" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "Prostá historie zálohování" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "Zobrazit prostou zálohu a seznam souborů" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "Zpracovávám soubory - prosím čekejte..." + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "Kontaktujte prosím často kladené otázky pro pomoc s tímto problémem." + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "Vaše instalace WordPressu má problém s výstupem mezer navíc. To může poškodit zálohy, které odsud stáhnete." + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "Nepodařilo se otevřít soubor databáze." + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "Chyba při zápisu dešifrované databáze do systému souborů." + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "Známé zálohy (prosté)" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "Ze zadané složky nelze vyčíst soubory." + +#: restorer.php:939 +msgid "Files found:" +msgstr "Nalezené soubory:" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "Použít složku ze zálohy: %s" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "Požadovaný engine tabulky (%s) není přítomen - měním na MyISAM." + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "Zdá se, že jde o migraci (záloha je ze stránek s jinou adresou/URL), ale nezaškrtli jste možnost najít a nahradit databázi. To je obvykle chyba." + +#: admin.php:4908 +msgid "file is size:" +msgstr "velikost souboru je:" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "Pro více informací jděte sem." + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "Některé soubory jsou stále stahovány, nebo zpracovávány - prosím čekejte." + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "Tato záloha pochází z jiné stránky - nejde o obnovu, ale migraci. K pokračování potřebujete Migrator add-on." + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "Časová zóna je převzatá z nastavení WordPressu, Nastavení -> Obecné." + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "Vložte ve formátu HH:MM (například 14:22)." + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "%s nahrávání selhalo" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "%s přihlášení selhalo" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "Zdá se, že nejste ověřeni s %s" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "Při mazání se nepodařilo získat přístup k %s (pro více informací se podívejte do log souboru)" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "Zdá se, že nejste ověřeni s %s (při mazání)" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "Chyba Dropboxu: %s (pro více informací se podívejte do logu)" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "Chyba - selhalo stažení souboru z %s" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "Chyba - v %s takový soubor neexistuje" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "%s Chyba" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "%s chyba - nepovedlo se nahrát soubor" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "%s chyba - nepodařilo se složit kousky dohromady" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "%s ověření selhalo" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "Chyba: %s" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "Složka pro zálohy existuje, ale nelze do ní zapisovat." + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "Složka pro zálohy neexistuje." + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "Varování: %s" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "Poslední záloha proběhla:" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "Byl zaznamenán velmi velký soubor: %s (velikost: %s Mb)" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "%s: nečitelný soubor - nemůže být zálohován" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "Tabulka %s má velmi mnoho řádků (%s) - doufáme, že vám poskytovatel hostingu dal dostatek prostředků záloze této tabulky" + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "Při zavírání posledního souboru databáze se vyskytla chyba" + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "Vzniklá varování:" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "Záloha by zřejmě vytvořena (s varováními)" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "Na disku je velmi málo volného místa - zbývá pouze %s Mb" + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "Nový web:" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "CHYBA: URL adresa je již zabraná." + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "Migrovaná stránka (z UpdraftPlus)" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "Vložte podrobnosti kde ve vaší multisite instalaci tato stránka leží:" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "Pro pokračování jsou potřeba informace:" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "Aktivační téma pro síť:" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "Zpracováván plugin:" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "Zkontrolujte práva souborů: Nepodařilo se vytvořit složku a vstoupit do ní:" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "Některé servery doporučují šifrované FTP, ale poté nastává time-out (po dlouhém čase), když se ho pokoušíte použít. Pokud se vám to stane, jděte do \"Nastavení pro experty\" (níže) a vypněte tam SSL." + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "Vaše instalace PHP neobsahuje požadovaný modul (%s). Zkontaktujte prosím svého poskytovatele hostingu a požádejte ho o povolení tohoto modulu." + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "Zkontrolujte si prosím své přístupové údaje." + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "Chyba ohlášená %s byla:" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "Prosím vložte požadované informace a pokračujte." + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "Nelze smazat tabulky, takže je vymazávám (%s)" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "Nelze vytvořit nové tabulky, takže tento příkaz přeskakuji (%s)" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "Informace o stránce:" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "Váš uživatel databáze nemá povolení k tvorbě tabulek. Pokusíme se je obnovit pomocí jejich vyprázdnění; to by mělo fungovat pokud a) obnovujete WordPress se stejnou tabulkovou strukturou a b) vaše importovaná databáze neobsahuje žádné tabulky, které by už nebyly vytvořeny." + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "Varování:" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "Používáte WordPress multisite, ale vaše záloha není záloha multisite stránky." + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "Přeskakuji obnovu jádra WordPressu při importu jednotlivé stránky do multisite instalace. Pokud máte ve složce s WordPressem něco důležitého, pak to musíte obnovit ze zip souboru ručně." + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "Vaše instalace PHP neobsahuje požadovaný (pro %s) modul (%s). Prosím kontaktujte svého poskytovatele hostingu a požádejte ho o povolení tohoto modulu." + +#: admin.php:596 +msgid "Close" +msgstr "Zavřít" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "Neočekávaná odpověď:" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "K odeslání na více než jednu adresu, oddělte adresy čárkou." + +#: admin.php:576 +msgid "PHP information" +msgstr "PHP informace" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "nalezen spustitelný zip:" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "Ukázat PHP informace (phpinfo)" + +#: admin.php:2627 +msgid "Get it here." +msgstr "Získejte ho zde." + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "Pak zkuste náš \"Migrator\" add-on. Po prvním použití se vám, v porovnání s časem potřebným pro ruční kopírování, jeho cena vyplatí." + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "Chcete migrovat, nebo klonovat/duplikovat stránku?" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "V tomto článku se dočtete, jak je to uděláno krok po kroku." + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "Migrovaná stránka" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "Mažu... prosím nechte nějaký čas pro dokončení komunikace se vzdáleným uložištěm." + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "Smazat i ze vzdáleného uložiště" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "Poslední novinky z UpdraftPlus.com:" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "Klonovat/Migrovat" + +#: admin.php:2304 +msgid "Premium" +msgstr "Premium" + +#: admin.php:2305 +msgid "News" +msgstr "Novinky" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "Soubory zálohy nebyly nalezeny" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "%s - nelze zazálohovat tuto entitu; odpovídající složka neexistuje (%s)" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "Odkaz RSS" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "Odkaz blogu" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "Na UpdraftPlus blogu se přihlašte k odběru novinek a nabídek" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "Testování %s nastavení..." + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "Nebo můžete vložit ručně do UpdraftPlus složky (obvykle wp-content/updraft), například přes FTP, a pak kliknout na odkaz \"skenovat znovu\"." + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "Debug mód UpdraftPlus je zapnutý. Na této stránce můžete vidět debug zprávy nejen z UpdraftPlus, ale i z jakéhokoliv jiného nainstalovaného pluginu. Než požádáte o podporu, tak se prosím přesvědčte, že zprávy patří UpdraftPlus." + +#: admin.php:880 +msgid "Notice" +msgstr "Oznámení" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "Narazili jsme na problémy:" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "Skenuji znovu (dívám se po zálohách ručně nahraných do uložiště záloh)..." + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "Začal jsem hledat tuto entitu" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "Uložit na" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "\"%s\" nemá primární klíč, je vyžadována ruční změna na řádku %s." + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "řádků: %d" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "Čas běhu (sekundy):" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "Chyby:" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "Běh SQL příkazu update:" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "Provedeno změn:" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "Prozkoumané řádky:" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "Prozkoumané tabulky:" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "Nemohu získat seznam tabulek" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "Hledání a nahrazení databáze: nahrazení %s ve výpisu zálohy za %s" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "Varování: URL databáze stránky (%s) je jiná, než jsme očekávali (%s)" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "Není co udělat: URL stránky již je: %s" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "Chyba: neočekávaný prázdný parametr (%s, %s)" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "Tato možnost nebyla vybrána." + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "Databáze: najít a nahradit URL stránky" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "Chyba: nerozumíme výsledku, který vrátila %s operace." + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "Chyba: %s operace nemohla začít." + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "(dozvědět se více)" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "Hledat a nahradit umístění stránky v databázi (migrace)" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "Všechny odkaz na umístění stránky v databázi byly změněny na vaši současnou URL adresu, což je: %s" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "Nahrávání blogu" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "Musíte vyzkoušet pluginy" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "K přístupu na tuto stránku nemáte oprávnění." + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "K přístupu na tuto stránku nemáte dostatečná oprávnění." + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "Multisite instalace" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "počínaje od příště je to" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "Chyba: Port musí být celé číslo." + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "heslo" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "přihlašovací jméno" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "Jméno hosta" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "Kde změnit adresář po přihlášení - často jde o relativní cestu k domovské složce." + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "Cesta složky" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "Heslo" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "Port" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "Host" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "%s Chyba: Stahování se nepodařilo" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "Zkontrolujte oprávnění pro soubory: Nepovedlo se úspěšně vytvořit a vstoupit:" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "%s nenalezeno" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "V základu je použito explicitní šifrování. Pro vnucení implicitního šifrování (port 990), přidejte :990 k vašemu FTP serveru níže." + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "Šifrované FTP je dostupné a bude automaticky vyzkoušeno jako první (před přepnutím zpět na nešifrované při neúspěchu), pokud ho v nastavení pro experty nevypnete. Tlačítko \"Test FTP přihlášení\" vám řekne, jakou verzi připojení používáte." + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "Žádná záloha %s složek: nebylo zde nalezeno nic k zálohování" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "Dávejte pozor co vkládáte - pokud vložíte / pak se vážně pokusíme vytvořit zip soubor obsahující váš celý webserver." + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "Pokud ji použijete, vložte absolutní adresu (nejde o relativní cestu k vaší instalaci WordPressu)." + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "Pokud nevíte k čemu tato možnost slouží, tak ji nechcete a měla by být vypnuta." + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "Vložte složku:" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "Více souborů" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "Jádro WordPressu (včetně všech přídavků v kořenové složce WordPressu)" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "Soubory výše obsahují celou WordPress instalaci." + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "Přepsání wp-config.php" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "Jádro WordPressu" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "Selhání: Do dané složky se nám nepodařilo umístit soubor - zkontrolujte prosím přihlašovací údaje." + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "Selhání" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "WebDAV URL" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "Chyba lokálního zápisu: Stahování se nezdařilo" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "Chyba při otevření vzdáleného souboru: Soubor nelze stáhnout" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "Část %s: Nastala chyba %s" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "Nebylo nalezeno žádné %s nastavení" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "Chyba: úspěšně jsme se přihlásili, ale nepodařilo se nám vytvořit soubor v dané složce." + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "Úspěch: úspěšně jsme se přihlásili a potvrdili naši schopnost vytvořit soubor v dané složce (typ připojení:" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "Chyba: s těmito přihlašovacími údaji se nám nepodařilo připojit." + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "Chyba: Nebyly vloženy detaily o serveru." + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "Je třeba, aby již existoval" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "Pokud chcete šifrování (například ukládáte citlivá obchodní data), pak je pro vás k dispozici add-on." + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "základní UpdraftPlus podporuje pouze nešifrované FTP." + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "Vaše %s jméno účtu: %s" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "přesto, že část vrácených informací nebyla taková, jak bylo očekáváno - může to záviset na vaší vzdálenosti" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "účet %s je ověřený" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "je tu k tomu add-on." + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "Pokud chcete zálohovat několik stránek do jednoho Dropboxu a chcete je organizovat do podsložek, pak" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "Zálohy jsou uloženy v" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "Potřebujete vytvořit podsložky?" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "chyba: nepodařilo se nahrát soubor do %s (pro podrobnosti se podívejte do logu)" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "Zdá se, že nejste ověřeni Dropboxem" + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "Komunikace s %s nebyla šifrována." + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "Komunikace s %s byla šifrována." + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "Podařilo se nám přistoupit k bucketu a vytvořit v něm soubory." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "Podařilo se nám přistoupit k bucketu, ale nepodařilo se nám v něm vytvořit soubor." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "Selhání" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "Selhání: Nepodařilo se nám přistoupit k takovému bucketu, nebo ho vytvořit. Zkontrolujte prosím přihlašovací údaje a pokud jsou správné, zkuste jiné jméno bucketu (protože některý jiný %s uživatel již mohl toto jméno použít)." + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "Oblast" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "Selhání: nejsou k dispozici žádné detaily o bucketu." + +#: methods/s3.php:961 +msgid "API secret" +msgstr "tajné API" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "Vložte pouze jméno bucketu, nebo bucket a cestu. Příklad: můjbucket, můjbucket/mojecesta" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "%s umístění" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "%s tajný klíč" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "%s přístupový klíč" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "Pokud uvidíte chybu ohledně SSL certifikátů, pak klikněte sem pro pomoc." + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "Získejte přístupový klíč a tajný klíč z vaší %s konzole, pak vyberte (zcela unikátní - pro všechny %s uživatele) jméno bucketu (písmena a čísla) (a volitelně i cestu) k použití uložiště. Pokud tento bucket ještě neexistuje, bude pro vás vytvořen." + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "Chyba %s: Nelze přistoupit k bucketu %s. Zkontrolujte oprávnění a přihlašovací údaje." + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "Chyba %s:Nepodařilo se stáhnout %s. Zkontrolujte vaše přihlašovací údaje a oprávnění." + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "%s chyba znovu sestavení (%s): (podívejte se do logu pro více informací)" + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "%s nahrávání (%s): znovu sestavení selhalo (pro bližší informace se podívejte do logu)" + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "%s kus %s: selhalo nahrávání" + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "%s chyba: soubor %s byl neočekávaně zkrácen" + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "%s nahrávání: selhalo získání uploadID pro nahrání více částí - pro bližší informace se podívejte do logu" + +#: methods/email.php:69 +msgid "Note:" +msgstr "Poznámka:" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "Záloha WordPressu" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "Přistoupili jsme ke kontejneru a podařilo se nám v něm vytvořit soubory." + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "Cloud Files chyba - přistoupili jsme ke kontejneru, ale nepodařilo se nám v něm vytvořit soubor" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "Selhání: Nebyly dány žádné detaily kontejneru." + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "Uživatelské jméno" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "API klíč" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "Selhání: Nebylo dáno %s." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "%s modul UpdraftPlus vyžaduje %s. Prosím nezakládejte požadavky na podporu; není žádná jiná možnost." + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "Cloud Files kontejner" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "Cloud Files API klíč" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "Cloud Files uživatelské jméno" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "UK" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "US (výchozí)" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "US, nebo UK Cloud" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "Také byste si měli přečíst tyto často kladené otázky." + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "Získejte API klíč z vaší Rackspace Cloud konzole (přečtěte si instrukce zde), pak vyberte název kontejneru pro uložiště. Pokud takový kontejner ještě neexistuje, bude vytvořen." + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "Test %s nastavení" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "Chyba při stahování vzdáleného souboru: Stahování se nezdařilo (" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "Chyba při otevírání lokálního souboru: Nepodařilo se ho stáhnout" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "Cloud Files chyba - nepodařilo se nahrát soubor" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "%s Chyba: Nahrávání se nezdařilo" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "%s Chyba: Nepodařilo se otevřít lokální soubor" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "Chyba Cloud Files - nepodařilo se vytvořit kontejner a přistoupit k němu" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "Ověření Cloud Files selhalo" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "Poté co uložíte nastavení (kliknutím na \"Uložit změny\" níže), vraťte se sem a klikněte na odkaz k dokončení ověření s Googlem." + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "Autorizováno s Googlem" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "Tajemství klienta" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "Pokud vám Google později ukáže zprávu \"invalid_client\", pak jste sem vložili špatné klientské ID." + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "Klientské ID" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "Pokud budete dotázáni, musíte přidat následující do autorizovaných přesměrovacích URI (pod \"Více možností\")" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "Vyberte \"Webová aplikace\" jako typ aplikace." + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "Pro delší podporu, včetně snímků obrazovky, následujte tento odkaz. Popis níže je dostatečný pro zkušenější uživatele." + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "%s je skvělá volba, protože UpdraftPlus podporuje rozkouskované nahrávání - bez ohledu na to, jak jsou vaše stránky velké, UpdraftPlus dokáže nahrávat pomalu v čase bez hrozby přerušení kvůli vypršení času." + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "Účet není ověřen." + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "Chyba při nahrávání do %s" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "Účet je plný: váš %s účet má pouze %d bytů volného místa, ale soubor k nahrání má %d bytů" + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "Neobdrželi jsme přístupový token od Googlu - musíte autorizovat, nebo re-autorizovat vaše připojení ke Google Disku." + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "Ověřili jste svůj %s účet." + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "Úspěch" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "Vaše %s kvóta používání: %s %% použito, %s dostupné" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "Ověření selhalo" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "Od Googlu nebyl přijat žádný obnovovací token. Často to znamená, že jste špatně vložili klientovo tajemství, nebo že jste neprovedli nové ověření (níže) po jeho opravení. Překontrolujte ho a pak klikněte na odkaz k novému ověření. Pokud to nepomůže, použijte expert mód k vymazání všech vašich nastavení, založte nové Google klient ID/tajemství a začněte znovu." + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "pro získání následujte tento odkaz" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "%s podpora je dostupná ve formě add-onu" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "Nemáte nainstalovaný UpdraftPlus %s add-on - získejte ho z %s" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "Jelikož vaše současné přihlašovací údaje nefungují, potřebujete nové ověření s %s." + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "OK" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "Prefix tabulek se změnil: Měním patřičně pole %s tabulky:" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "Skončeno: zpracováno řádků: %d v %.2f sekundách" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "byl spuštěn databázový dotaz:" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "se obnoví jako:" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "Starý prefix tabulky:" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "Záloha:" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "Přístup k databázi: Přímý přístup k MySQL není k dispozici, takže jsme se vrátili do wpdb (což bude výrazně pomalejší)" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "Nepodařilo se otevřít soubor databáze" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "Nepodařilo se najít soubor databáze" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "Varování: PHP safe_mode je na vašem serveru aktivní. Vypršení času je mnohem pravděpodobnější. Pokud se to stane, budete muset ručně obnovit soubor přes phpMyAdmin nebo jinou metodou." + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "wp-config.php ze zálohy: obnovuji (dle přání uživatele)" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "wp-config.php ze zálohy: bude obnoven jako wp-config-backup.php" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "Nepovedlo se zapsat dešifrovanou databázi do systému souborů" + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "Nelze založit dočasnou složku" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "Nelze smazat pracovní složku po obnově." + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "Nelze smazat starou složku." + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "Uklízím smetí..." + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "Obnovování databáze (na větší stránce to může trvat dlouho - pokud čas vyprší (což může nastat, pokud vám váš poskytovatel hostingu omezil zdroje) pak byste měli použít jinou metodu, jako například phpMyAdmina)..." + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "Databáze úspěšně dešifrována." + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "Dešifrování databáze (může chvíli trvat)..." + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "Rozbalování zálohy..." + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "Kopírování této entity selhalo." + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "Soubor se zálohou není dostupný." + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "UpdraftPlus nedokáže přímo obnovit tento druh entity. Musí být obnovena ručně." + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "Nelze najít jeden ze souborů k obnově" + +#: admin.php:5009 +msgid "Error message" +msgstr "Chybová zpráva" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "Záznamy zálohy neobsahují informaci o správné velikosti tohoto souboru." + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "Předpokládaná velikost archivu:" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "Pokud budete žádat o pomoc podporu, vložte prosím tuto informaci:" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "ZRUŠENO: Nenalezena informace o tom, které entity obnovit." + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "UpdraftPlus obnova: Průběh" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "tato záloha neexistuje v historii záloh - obnova zrušena. Časová značka:" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "Po stisku tohoto tlačítka dostane možnost vybrat si komponenty, které chcete obnovit" + +#: admin.php:4572 +msgid "Press here to download" +msgstr "Klikněte sem pro stažení" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "Smazat tuto zálohu" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "Dobré zprávy: Komunikace vašich stránek s %s může být šifrovaná. Pokud uvidíte nějakou chybu týkající se šifrování, podívejte se do \"Pokročilého nastavení\"." + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "Vaše instalace PHP/Curl nepodporuje https přístup. Bez této podpory nemůžeme přistoupit k %s. Kontaktujte prosím svého poskytovatele webu. %s vyžaduje Curl + https. Prosím nekontaktujte naši podporu; neexistuje jiná alternativa." + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "Vaše instalace PHP/Curl nepodporuje https přístup. Komunikace s %s bude nešifrovaná. Požádejte svého poskytovatele web, aby nainstaloval Curl/SSL, abyste mohli získat možnost pro šifrování (pomocí add-onu)." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "Instalace PHP na vašem serveru nemá požadovaný modul (%s). Kontaktujte prosím svého poskytovatele webu." + +#: admin.php:4062 +msgid "Save Changes" +msgstr "Uložit změny" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "Vybráním této možnosti snížíte zabezpečení tím, že úplně zakážete UpdraftPlus používat SSL pro ověření a šifrovaný přenos, kde by možný.Uvědomte si, že někteří poskytovatelé cloudových uložišť toto nedovolují (například Dropbox), takže s těmito poskytovateli nebude mít tato možnost žádný efekt." + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "Pokud je to možné, zakázat SSL úplně" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "Uvědomte si, že ne všechny metody zálohy do cloudu musí nutně vyžadovat SSL ověření." + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "Vybráním této možnosti snížíte zabezpečení, protože zastavíte UpdraftPlus v používání šifrování při připojování na stránky (jako je Dropbox, nebo Google Disk). To znamená, že bude UpdraftPlus používat SSL pouze pro šifrování přenosu data a ne pro přihlášení." + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "Neověřovat SSL certifikáty" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "V základu požívá UpdraftPlus svůj vlastní seznam SSL certifikátů k ověření identity vzdálených stránek (například k ověření, že se připojuje ke skutečnému Dropboxu, Amazon S3, atd. a ne k útočníkovi). Tento seznam udržujeme aktualizovaný. Nicméně pokud dostanete SSl chybu, pak vybrání této možnosti (která způsobí, že místo toho UpdraftPlus použije seznam vašeho webserveru) může pomoci." + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "Použít SSL certifikáty serveru" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "Pokud se akce nezdařila, zkontrolujte oprávnění na serveru, nebo nastavení změňte na složku do které může zapisovat proces webserveru." + +#: admin.php:3697 +msgid "click here" +msgstr "klikněte sem" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "nebo pro reset možnosti" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "Do složka zálohy lze zapisovat, což je dobře." + +#: admin.php:4009 +msgid "Backup directory" +msgstr "Složka zálohy" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "Smazat místní zálohu" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "klikněte sem pro zobrazení dalších možností; nezatěžujte se s nimi, pokud nemáte problém, nebo nejste zvědaví." + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "Ukázat pokročilé nastavení" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "Pokročilé nastavení" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "Debug mód" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "Pokročilé / Debug nastavení" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "Požaduji začátek zálohy..." + +#: admin.php:591 +msgid "Cancel" +msgstr "Zrušit" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "Žádné" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "Vybrat vaše vzdálené uložiště" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "Ručně dešifrovat soubor databáze" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "Fráze pro šifrování databáze" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "Email" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "Složky výše jsou všechno, kromě jádra WordPressu, které můžete kdykoliv stáhnout aktuální z WordPress.org." + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "Kromě těchto:" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "Jakoukoliv další složku nalezenou ve wp-content" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "Zahrnout do souborů zálohy" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "například pokud je váš server zatížen přes den a chcete aby záloha běžela přes noc" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "K opravě času, kdy se má záloha provést," + +#: admin.php:3683 +msgid "Monthly" +msgstr "Měsíčně" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "Dvoutýdně" + +#: admin.php:3681 +msgid "Weekly" +msgstr "Týdně" + +#: admin.php:3680 +msgid "Daily" +msgstr "Denně" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "Stáhnout log soubor" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "Složka existuje, ale váš webserver nemá oprávnění, aby do ní mohl zapisovat." + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "Složka byla vytvořena, ale museli jsme změnit její oprávnění na 777 (všemi zapisovatelné), abychom do ní mohli zapsat. Měli byste si u poskytovatele hostingu ověřit, že to nezpůsobí žádný problém" + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "Žádost souborovému systému o vytvoření složky selhal." + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "Smazat" + +#: admin.php:3418 +msgid "show log" +msgstr "ukázat log" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "Toto smaže vaše veškeré nastavení UpdraftPlus - jste si jisti, že chcete pokračovat?" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "počet" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "Pozn. Tento počet je založen na tom, co bylo, nebo nebylo vyjmuto, když jste naposledy ukládali možnosti." + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "Celkem (nezabalených) dat na disku:" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "Ne" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "Ano" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "%s verze:" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "Současné použití paměti" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "Špičkové použití paměti" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "Web server:" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "Podívejte se prosím na UpdraftPlus Premium, nebo samostatný Multisite add-on." + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "Potřebujete WodPress Multisite podporu?" + +#: admin.php:2654 +msgid "Multisite" +msgstr "Multisite" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "Provést jednorázovou zálohu" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "Před obnovou si přečtěte tento článek plný užitečných věcí." + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "Pro databázi můžete použít najít a nahradit (pro migraci stránek na nové umístění/URL) pomocí Migrator add-onu - následujte odkaz pro více informací" + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "%s možnosti obnovy:" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "Budete ji muset obnovit ručně." + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "Tato entita nemůže být automaticky obnovena: \"%s\"." + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "Váš webserver má aktivní takzvaný PHP safe_mode." + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "Vybrat komponenty k obnově" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "Obnova nahradí na této stránce témata, pluginy, nahrané soubory, databázi a/nebo ostatní obsah složek (podle toho, co je obsaženo v záloze a co zvolíte)." + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "Obnovit zálohu z" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "Obnovit zálohu" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "Smazat zálohu" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "Chyba stahování: server nám zaslal odpověď, které nerozumíme." + +#: admin.php:570 +msgid "You should:" +msgstr "Měli byste:" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "Chyba:" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "počítám..." + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "UpdraftPlus - nahrávám soubory zálohy" + +#: admin.php:3020 +msgid "refresh" +msgstr "obnovit" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "UpdraftPlusem využité místo na webserverovém disku" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "Google Disk" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "Pokud ho používáte, vypněte režim Turbo/Na cestách." + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "Prohlížeč Opera" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "Více úkolů:" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "Stáhnout naposledy upravený log soubor" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "(Zatím nebylo nic logováno)" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "Poslední log zpráva" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "Obnovit" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "Zálohovat nyní" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "Databáze" + +#: admin.php:229 +msgid "Files" +msgstr "Soubory" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "Další naplánované zálohy" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "Ve stejné době, jako záloha souborů" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "V současnosti není nic naplánováno" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "Toto administrátorské prostředí využívá JavaScript. Buď ho ve svém prohlížeči musíte povolit, nebo použít prohlížeč, který podporuje JavaScript." + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "JavaScript varování" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "Smazat staré složky" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "Současný limit je:" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "Vaše záloha byla obnovena." + +#: admin.php:2310 +msgid "Version" +msgstr "Verze" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "Domácí stránka vedoucího vývojáře" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "Vaše nastavení bylo vymazáno." + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "Složka pro zálohu byla úspěšně vytvořena." + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "Složka pro zálohu nemohla být vytvořena." + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "Z nějakého důvodu se nepodařilo odstranit staré složky. Budete to muset udělat ručně." + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "Staré složky byly úspěšně smazány." + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "Smazat staré složky" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "Vracím se do konfigurace UpdraftPlus" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "Akce" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "Obnova byla úspěšná!" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "Špatný formát názvu souboru - nezdá se, že jde o šifrovaný databázový soubor vytvořený UpdraftPlus" + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "Špatný formát názvu souboru - nezdá se, že jde o soubor vytvořený UpdraftPlus" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "Není dostupná lokální kopie." + +#: admin.php:2072 +msgid "Download in progress" +msgstr "Probíhá stahování" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "Soubor je připraven." + +#: admin.php:2043 +msgid "Download failed" +msgstr "Stahování selhalo" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "Chyba" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "Nemohu najít danou práci - možná už je skončená?" + +#: admin.php:1854 +msgid "Job deleted" +msgstr "Práce smazána" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "Dobře. Brzy byste měli vidět aktivitu v poli \"Poslední log zpráva\" níže." + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "Zatím nebylo nic zalogováno" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "Pokud máte problém se zálohováním, pročtěte si tyto často kladené otázky." + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "Vaše stránky jsou hostovány pomocí %s webserveru." + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "UpdraftPlus oficiálně nepodporuje WordPress verze nižší, než %s. Vše může fungovat, ale nebude vám poskytnuta žádná podpora, než si aktualizujete WordPress." + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "Na disku, který máte nastavený pro zálohy UpdraftPlus máte méně než %s volného místa. Mohlo by se stát, že UpdraftPlus zaplní zbytek volného místa. Pro vyřešení tohoto problému kontaktujte svého poskytovatele hostingu." + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "Varování" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "Add-ony / Pro podpora" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "Nastavení" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "Povolené soubory" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "%s zip soubor nelze vytvořit. Pro více informací se podívejte do logu." + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "Nekonečná rekurze: pro více informací se podívejte do logu" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "Pro pomoc, add-ony a podporu běžte na UpdraftPlus.Com" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "Potřebujete ještě více funkcí a podpory? Zkuste UpdraftPlus Premium" + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "Prosím pomozte UpdraftPlus tím, že mu dáte pozitivní hodnocení na wordpress.org" + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "Líbí se vám UpdraftPlus a můžete postrádat minutku?" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "Umíte překládat? Chcete vylepšit UpdraftPlus pro lidi mluvící vaším jazykem?" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "Soubor nenalezen" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "Použitý dešifrovací klíč:" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "Dešifrování selhalo. Nejpravděpodobněji jste zadali špatný klíč." + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "Dešifrování selhalo. Soubor databáze je šifrovaný, ale nevložili jste žádný šifrovací klíč." + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "Soubor zálohy nelze otevřít pro zápis" + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "Jelikož nemám pole zálohy, nelze uložit historii záloh. Záloha pravděpodobně selhala." + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "Nelze přečíst složku" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "Do složky zálohy (%s) nelze zapisovat, nebo neexistuje." + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "Záloha WordPressu provedena" + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "Pokus zálohu skončil, zřejmě neúspěchem" + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "Záloha se zřejmě podařila a je hotová" + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "Nastala chyba šifrování při šifrování databáze. Šifrování zrušeno." + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "Ve složce pro zálohy nelze vytvořit soubory zálohy. Záloha zrušena - zkontrolujte UpdraftPlus nastavení." + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "Ostatní" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "Nahrané soubory" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "Témata" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "Pluginy" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "Nebyl nalezen žádný log soubor." + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "Nelze přečíst soubor logu." + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "UpdraftPlus poznámka:" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "UpdraftPlus zálohy" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-da_DK.mo b/plugins/updraftplus/languages/updraftplus-da_DK.mo new file mode 100644 index 0000000..16aa234 Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-da_DK.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-da_DK.po b/plugins/updraftplus/languages/updraftplus-da_DK.po new file mode 100644 index 0000000..afe45a5 --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-da_DK.po @@ -0,0 +1,6109 @@ +# Translation of UpdraftPlus in Danish +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-08-23 19:52:45+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: da_DK\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "Din IP-adresse:" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "Fjern enhver blok her." + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "%s add-on blev ikke fundet" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "eller at gendanne manuelt" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "Dette gør time-outs langt mere sandsynligt. Det anbefales at slå safe mode fra, eller kun at gendanne én enhed ad gangen" + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "Løs dette problem her." + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "OptimizePress 2.0 koder dens indhold, så søg/erstat virker ikke." + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "din PHP installation mangler open-ssl modulet. Som et resultat, kan dette tage minutter. Hvis intet er sket inden da, så skal du enten prøve en mindre størrelse nøgle, eller spørge din webudbyder, hvordan du aktiverer dette PHP modul i din opsætning." + +#: addons/webdav.php:91 +msgid "Path" +msgstr "Sti" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "Lad dette være tomt for at bruge standard (80 for webdav, 443 for webdavs)" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "Indtast en sti i feltet nedenfor." + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "Et værtsnavn kan ikke indeholde skråstreg." + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "Protokol (SSL eller ikke)" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "Denne WebDAV URL genereres ved at udfylde nedenstående muligheder. Hvis du ikke kender detaljerne, bliver du nødt til at spørge din WebDAV udbyder." + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "Ingen respons data blev modtaget. Dette indikerer normalt et netværksforbindelseproblem (fx en udgående firewall eller et overbelastet netværk) mellem dette websted og UpdraftPlus.com." + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "AWS adgangskoden er tilsyneladende forkert (gyldige %s adgangskoder begynder med \"AK\")" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "Indstillinger blev ikke fundet - Gå venligst til Indstillinger knappen og kontroller dine indstillinger" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "Bakcup ved hjælp af %s?" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "Full Premium plugin" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "Kun dette add-on" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "Asia Pacific (Mumbai)" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "Reduceret fyld-information" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "Standard (sjælden adgang)" + +#: admin.php:2310 +msgid "FAQs" +msgstr "FAQs" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "Ukendt opdatering - Tjekker status \"%s\"" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "Der er en ny version af dette plugin til rådighed." + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "Dette plugin er opdateret." + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "Tjek efter opdateringer" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "Der er ingen ændrings-log til rådighed." + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "Dette er nyttigt, hvis kontrolpanelets webserver ikke kan kontaktes med indgående trafik af denne hjemmeside (dette er f.eks. tilfældet, hvis denne hjemmeside er hostet på det offentlige internet, men UpdraftCentral kontrolpanelet er på localhost eller på et intranet, eller hvis denne hjemmeside har en udgående firewall), eller hvis kontrolpanelets hjemmeside ikke har et SSL-certifikat." + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "Mere information..." + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "Benyt den alternative måde for at skabe forbindelse med kontrolpanelet." + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "Kontrolpanelet på" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "Størrelse på nøgle: %d bits" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "Offentlig nøgle blev sendt til:" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "Kunne ikke åbne bibliotek (tjek fil-tilladelser og -ejerskab): %s" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "%s: Ulæselig fil - kunne ikke sikkerhedskopieres (check fil-tilladelser og -ejerskab)" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "Opret nøgle" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "langsomere, stærkest" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "anbefalet" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "%s bytes" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "hurtigere (mulighed for langsomme PHP installationer)" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "let at bryde, hurtigst" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "%s bits" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "Krypterings-nøglens størrelse:" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "Indtast dit valgte navn" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "Opret en nøgle: Giv denne nøgle et unikt navn (som f.eks antyder det site, den er til), og tryk derefter på \"Opret Nøgle\":" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "Upload forventes at svigte: %s grænsen for en enkelt fil er %s, mens denne fil er %s GB (%d bytes)" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "Dette er undertiden forårsaget af en firewall - prøv at fravælge SSL i ekspert indstillingerne, og teste igen." + +#: methods/ftp.php:355 +msgid "login" +msgstr "login" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "Vær opmærksom på at mailservere ofte har størrelsesbegrænsninger; typisk omkring %s MB; backups større end eventuelle grænser vil sandsynligvis ikke blive modtaget." + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "Størrelsen på dette backup-arkiv er %s MB - forsøge på at sende det via e-mail er tilbøjelige til at mislykkes (få email-servere tillader vedhæftede filer af denne størrelse). Hvis det er tilfældet, bør du skifte til at bruge en anden fjernlager metode." + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "Størrelse: %s MB" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "Andet (angiv det site, hvor du har installeret et updraft Central kontrolpanel)" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "det vil sige, at du har en konto dér" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "UpdraftPlus vil opdele backup arkiver, når de overskrider denne filstørrelse. Standardværdien er %s megabyte. Vær omhyggelig med at friholde lidt plads, hvis din web-server har en lidt vanskelig maksimal begrænsning (fx 2 GB / 2048 MB grænse på nogle 32-bit servere / filsystemer)." + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "1 GB gratis UpdraftPlus Vault" + +#: admin.php:2604 +msgid "Now" +msgstr "Nu" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "Du bør frigøre %s for at pæne permalinks (f.eks. %s) kan virke" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "(klik på et ikon for at vælge eller fravælge)" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "%s pr. år" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "eller (årlig rabat)" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "Ingen Vault forbindelse blev fundet for dette websted (er det flyttet?); venligst afbryd og tilslut igen." + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "Den pågældende fil blev ikke fundet eller kunne ikke læses." + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "UpdraftCentral (Fjernbetjent)" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "hent..." + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "Se de seneste updraftCentral log-hændelser" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "Moderskibets URL" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "Angiv enhver beskrivelse" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "Beskrivelse" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "Opret ny nøgle" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "Slet..." + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "Oprettet:" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "Adgang til dette site som bruger:" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "Der er endnu ikke oprettet en nøgle." + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "Detaljer" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "Nøgle-beskrivelse" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "En nøgle blev oprettet, men forsøget på at registrere den med %s mislykkedes - prøv igen senere." + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "Ugyldig URL blev indtastet" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "Luk..." + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "Denne tilslutning tilsyneladende allerede er foretaget." + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "Du skal besøge dette link i samme browser og login-session, som du oprettede nøglen i." + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "Du skal besøge denne URL i samme browser og login-session, som du oprettede nøglen i." + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "Du er ikke logget på dette WordPress site i din browser." + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "Nøglen der refereres til er ukendt." + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "Der er ikke blevet oprettet en UpdraftCentral forbindelse." + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "En UpdraftCentral forbindelse blev oprettet med succes." + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "UpdraftCentral Connection" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "Backup'en blev afbrudt af brugeren" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "Dine indstillinger er blevet gemt." + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "Total backup-størrelse:" + +#: admin.php:3420 +msgid "stop" +msgstr "stop" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "Denne backup er færdig" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "Wipe-indstillinger" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "reset" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "disse backup sæt" + +#: admin.php:3092 +msgid "this backup set" +msgstr "dette backup sæt" + +#: admin.php:3020 +msgid "calculate" +msgstr "beregn" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "Du bør gemme dine ændringer for at sikre, at de bliver anvendt til din backup." + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "Vi anmodede om at slette filen, men kunne ikke forstå serverens svar" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "Venligst indtast en gyldig URL" + +#: admin.php:601 +msgid "Saving..." +msgstr "Gemmer..." + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "Fejl: Serveren sendte et uforståeligt svar." + +#: admin.php:557 +msgid "Fetching..." +msgstr "Henter..." + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "Asia Pacific (Seoul)" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "Barracuda har lukket Copy.Com 1. maj 2016. Se:" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "Uploads URL:" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "Uventet fejl: Ingen klasse '%s' blev fundet (der er sandsynligvis fejl på din UpdraftPlus installation - prøv at geninstallere)" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "Det nødvendige %s PHP modul er ikke installeret - bed din webudbyder om at aktivere det." + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "Dropper tabel %s: Denne tabel vil ikke blive gendannet." + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "For at importere et almindeligt WordPress site til en multisite installation kræves %s." + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "Venligst læs dette link for vigtig information om processen." + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "Vil blive importeret som et nyt site." + +#: admin.php:2884 +msgid "Dismiss" +msgstr "Afvis" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "Venligst udfyld den nødvendige information." + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "Læs mere..." + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "N. B. Denne indstilling påvirker kun gendannelse af databasen og uploads - andre filer (såsom plugins) i WordPress deles af hele netværket." + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "kan indeholde nogle data for hele sitet" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "Allle sider" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "Hvilket site at gendanne" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "Gendanner kun stedet med id =%s: Fjerner andre data (hvis nogen) fra den udpakkede backup" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "ERROR: problem med at oprette indhold på sitet." + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "Der opsted fejl oprettelse af nyt site på din valgte adresse:" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "Der blev ikke givet nødvendige oplysninger for at kunne genskabe denne sikkerhedskopi (%s)" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "Egenskabs importeret indhold til bruger" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "Du skal bruge små bogstaver eller tal i websitets sti." + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "Denne funktion er ikke kompatibel med %s" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "Importerer et single site til en multisite installation" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "andet indhold end wp-indhold" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "WordPress core" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "Du valgte at %s skal indgå i gendannelsen - det kan ikke / bør ikke ske ved import af et enkelt site til et netværk." + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "Udfør WordPress handling:" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "Dine gemte indstillinger påvirker også, hvad der oprettes back up af - f.eks. udelukkes filer." + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "Stopper: Dette arkiv er allerede genskabt." + +#: admin.php:3860 +msgid "File Options" +msgstr "Fil-muligheder" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "Sender din backup til fjernlager" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "Database backup tidsplan" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "Detaljeret tidsplan for backup af filer" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "Tidsplan for backup af filer" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "Du skal derefter indtaste alle dine indstillinger igen. Du kan også gøre dette inden deaktivering / afinstallation af UpdraftPlus, hvis du ønsker det." + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "Denne knap vil slette alle UpdraftPlus indstillinger og information om igangværende sikkerhedskopier (men ikke slette eksisterende sikkerhedskopier i din sky)." + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "Send denne backup til fjernlager" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "Se UpdraftPlus Vault" + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "Har du ikke et fjernlager?" + +#: admin.php:5157 +msgid "settings" +msgstr "indstillinger" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "Backup vil ikke blive sendt til noget lager - Intet er blevet gemt i %s" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "Medtag alle filer i backup'en" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "Medtag databasen i backup'en" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "Fortsæt gendannelse" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "Du har en ufærdig gendannelses-operation, påbegyndt for %s siden." + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "Ufærdig gendannelse" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "%s minutter, %s sekunder" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "Backup Indhold og Tidspland" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "Premium / Udvidelser" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "Tilstrækkelige informationer om den igangværende genskabelse kunne ikke findes." + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "Download" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "Du har valgt at tage backup, men har ikke valgt nogle filer" + +#: admin.php:442 +msgid "Extensions" +msgstr "Udvidelser" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "Advancerede værktøjer" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "Gruppe lokation" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "Bemærk, at Google ikke understøtter alle lagringsklasser på enhver placering - Du bør læse deres dokumentation for at lære om aktuel tilgængelighed." + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "Denne indstilling gælder kun, når en ny gruppe bliver skabt." + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "Du skal bruge et gruppenavn, der er unikt for alle %s brugere." + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "%s of %s må ikke forveksles - De er forskellige" + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "Du har ikke adgang til denne gruppe" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "Vesteuropa" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "Østlige Asia-Pacific" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "Vestlige United States" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "Østlige United States" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "Østlige United States" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "Central United States" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "Europæsik Union" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "Asia Pacific" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "multi-regional lokation" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "United States" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "Nearline" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "Vedværende begrænset tilgængelighed" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "Standard" + +#: addons/azure.php:524 +msgid "container" +msgstr "mappe" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "Du kan indtaste stien til enhver %s virtuel mappe, du ønsker at bruge her." + +#: addons/azure.php:523 +msgid "optional" +msgstr "valgfri" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "Præfiks" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "Se Microsofts retningslinjer for mappe-navngivning ved at følge dette link." + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "Hvis %s ikke allerede eksisterer, vil det blive oprettet." + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "Indtast stien til den %s, du ønsker at bruge her." + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "Dette er ikke din Azure login - se anvisninger, hvis du har brug for mere vejledning." + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "Kontonavn" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "Azure" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "Opret Azure legitimationsoplysninger i din Azure udviklerkonsol." + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "Kunne ikke oprette beholderen" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "Kunne ikke tilgå mappe" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "For at fuldføre din migrering/kloning, bør du nu logge ind på det eksterne site og genoprette backup sættet." + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "tabellen med muligheder blev ikke fundet" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "der blev ikke fundet hverken valgmuligheder eller site-meta" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "Backup af databasen er tilsyneladende mislykkedes." + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "Backup-mappen er ikke skrivbar (eller diskplads er fuld) - Database-backup'en forventes snart at mislykkes." + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "krævet af nogle lager-udbydere" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "Ikke installeret" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "Lager niveau" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "Se Google's vejledning vedrørende navngivning af grupper ved at følge dette link." + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "Gruppenavne skal være globalt unikke. Hvis gruppen ikke allerede eksisterer, vil den blive oprettet." + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "Indtast navnet på den %s gruppe, du vil bruge her." + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "Gruppe" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "Ellers kan du lade det være tomt." + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "N. B. Dette er kun nødvendigt, hvis du ikke allerede har oprettet gruppen, og du ønsker at UpdraftPlus opretter det for dig." + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "Indtast ID''et til det %s projekt du ønsker at benytte her." + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "Følg dette link til din Google API Console og aktivér Lager API'en og opret et klient ID i API-adgang sektionen." + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "Du skal indtaste et projekt ID for at kunne oprette en nu gruppe." + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "Projekt ID" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "Du skal gemme og godkende, før du kan teste dine indstillinger." + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "Har endnu ikke fået en adgang token fra Google - du har brug for at tillade eller re-autorisere din forbindelse til Google Cloud." + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "Du har ikke adgang til denne gruppe" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "Google Cloud" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "%s Service undtagelse" + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "Du behøver ikke UpdraftPlus fuldt installeret - venligst af-installér og installér det igen. WordPress fejlede muligvis ved kopiering af plugin-filer." + +#: restorer.php:767 +msgid "Deferring..." +msgstr "Udskydelse..." + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "eller at konfigurere mere komplekse skemaer" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "Er du sikker på, at du ønsker at fjerne %s fra UpdraftPlus?" + +#: admin.php:3081 +msgid "Deselect" +msgstr "Fravælg" + +#: admin.php:3080 +msgid "Select all" +msgstr "Vælg alle" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "Handlinger for udvalgte backups" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "Tryk her for at se dit fjernlagers muligheder ved eventuelle eksisterende backup sæt (fra ethvert websted, hvis de opbevares i samme mappe)." + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "Behandler..." + +#: admin.php:634 +msgid "For backups older than" +msgstr "For backup ældre end" + +#: admin.php:633 +msgid "week(s)" +msgstr "uge(r)" + +#: admin.php:632 +msgid "hour(s)" +msgstr "time(r)" + +#: admin.php:631 +msgid "day(s)" +msgstr "dag(e)" + +#: admin.php:630 +msgid "in the month" +msgstr "i måneden" + +#: admin.php:629 +msgid "day" +msgstr "dag" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "(som mange af jer synes om)" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "Tilføj en ekstra tilføjelsesregel..." + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "Denne database skal indsættes på MySQL version %s eller nyere." + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "Dette problem er forårsaget af forsøg på genskabelse af en database på en meget gammel MySQL version, der er uforenelig med kildedatabasen." + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "Du har ikke på nuværende tidspunkt nogen UpdraftPlus Vault kvote" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "Du skal opgradere MySQL for at kunne bruge denne database." + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "Database-backup'en bruger MySQL funktioner, som ikke findes i den gamle MySQL version (%s), dette websted kører på." + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "Ingen reklamelinks på UpdraftPlus indstillings-siden" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "UpdraftPlus-mappen i wp-content/plugins indeholder white-space (tom plads / mellemrum); WordPress kan ikke lide dette. Du bør omdøbe mappen til wp-content/plugins/updraftplus for at løse dette problem." + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "Kender du ikke din email-adresse, eller har du glemt dit password?" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "Indtast dit UpdraftPlus.Com email/password her for at forbinde:" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "Læs FAQ her." + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "Sæt kryds i denne boks for at bruge Amazon's server-side kryptering" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "Server-side kryptering" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "Hvis du har glemt dit password, så klik her for at ændre det på udraftsplus.com " + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "Gå til fjernlager-indstillinger for at skabe forbindelse." + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "%s er blevet valgt til fjernlager, men du er ikke tilsluttet i øjeblikket." + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "Betaling kan foretages i amerikanske dollars, euro eller GB pounds sterling, via kort eller PayPal." + +#: admin.php:607 +msgid "Update quota count" +msgstr "Opdatér kvotetæller" + +#: admin.php:606 +msgid "Counting..." +msgstr "Tæller..." + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "Afbryder..." + +#: admin.php:603 +msgid "Connecting..." +msgstr "Tilslutter..." + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "Opdatér nuværende status" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "Få større kvote" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "Nuværende brug:" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "Du kan få større kvote her" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "%s Fejl: Du har utilstrækkelig lagerkvote tilgængelig (%s) til at kunne uploade dette arkiv (%s)." + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "Afbrudt" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "Kvote:" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "Vault ejer" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "Godt gået - Der behøves ikke mere for setup." + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "Dette site er tilsluttet til UpdraftPlus Vault." + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "Du er ikke tilsluttet til UpdraftPlus Vault." + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "Klik her for hjælp" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "E-mail" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "Tilbage..." + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "Abonnement kan til enhver tid opsiges." + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "%s per kvartal" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "Læs mere her." + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "UpdraftPlus Vault er bygget over Amazons verdensførende data-centre, med masser af datalagring for at opnå 99,999999999% pålidelighed." + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "Har du allerede købt plads?" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "Vis mulighederne" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "Ny bruger?" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "Tryk på en knap for at starte." + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "UpdraftPlus Vault giver dig lagringsplads, der er pålidelige og nemme at bruge, til en god pris." + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "Du har et UpdraftPlus Vault abonnement, der ikke er blevet fornyet, og den betalte periode er udløbet. Om et par dage vil dine gemte data blive fjernet permanent. Hvis du ikke ønsker, at dette sker, skal du forny så hurtigt som muligt." + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "Du har et UpdraftPlus Vault abonnement med overskredet betalingsfrist. Du er inden for de få dages periode, før det vil blive suspenderet, og du vil miste din kvote og adgang til data, der er lagret i den. Venligst forny så hurtigt som muligt!" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "Din UpdraftPlus Premium er købt for over et år siden. Du bør forny straks for at undgå at miste de 12 måneders gratis lagerplads, du får for at være en nuværende UpdraftPlus Premium kunde." + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "Updraft Vault" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "Sletning mislykkedes:" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "Zip returnerede denne besked: %s." + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "Uden denne tilladelse, kan UpdraftPlus ikke slette backups - Du skal også sætte din 'behold' indstillinger meget høj for at forhindre at se sletningsfejl." + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "Tillad sletning" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "Uden denne tilladelse, kan du ikke downloade eller gendanne direkte ved hjælp UpdraftPlus, og vil i stedet være nødt til at besøge AWS's hjemmeside." + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "Tillad download" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "Hvis muligheden for at sende direkte fra site til site ikke virker for dig, så er der tre andre metoder - prøv en af disse i stedet." + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "Du bør kontrollere, at den eksterne site er online, ikke er bag en firewall, ikke har sikkerhedsmoduler, der kan blokere adgangen, har UpdraftPlus version %s eller nyere aktiv, og at nøglerne er blevet indtastet korrekt." + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "Eksisterende nøgler" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "Der er endnu ikke oprettet nøgler, der kan tillade eksterne sites at skabe forbindelse." + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "Din nye nøgle:" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "For at tillade en anden hjemmeside til at sende en backup til denne hjemmeside, skal du oprette en nøgle, og derefter klikke på \"Overfør\"-knappen på det afsendende site, og kopiere og indsætte nøglen der." + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "Så for at få nøglen til det eksterne site, skal du åbne 'Overfør' vinduet på det eksterne websted, scrolle ned, og så oprette en der." + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "Nøgler til dette site er skabt i afsnittet nedenfor den, du netop har indtastet ind." + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "Du skal kopiere og indsætte denne nøgle nu - den kan ikke vises igen." + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "Nøgle blev skabt med succes." + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "En nøgle med dette navn eksisterer allerede; du skal bruge et unikt navn." + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "Send også denne backup til de aktive eksterne lagringslokationer" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "Den webadresse, du sender til (%s) ligner en lokal udviklings-hjemmeside. Hvis du sender fra et eksternt netværk, er det sandsynligt, at en firewall vil blokere dette." + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "site ikke fundet" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "Backup data vil blive sendt til:" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "Genskab et eksisterende backup sæt til dette site" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "Dette site har ingeb backups at genskabe fra endnu." + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "Backup skabt af %s" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "Denne lagringsmetode tillader ikke download" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "(backup sæt importeret fra ekstern lokation)" + +#: admin.php:4423 +msgid "Site" +msgstr "Site" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "Backup sendt til eksternt site - ikke tilgængelig til download." + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "Du bør sørge for, at dette virkelig er et backup sæt beregnet til brug på denne hjemmeside, før du gendanner (snarere end et backup sæt fra en urelateret hjemmeside)." + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "Dette backup sæt blev ikke genkendt af UpdraftPlus som værende skabt af den nuværende WordPress installation, men blev enten fundet i fjernlager, eller blev sendt fra et eksternt site." + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "Tester forbindelse..." + +#: admin.php:617 +msgid "Deleting..." +msgstr "Sletter..." + +#: admin.php:616 +msgid "key name" +msgstr "nøgle navn" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "Giv denne nøgle et navn (angiv f.eks. sitet den er til):" + +#: admin.php:611 +msgid "Creating..." +msgstr "Opretter..." + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "Eller, modtag en backup fra det andet site" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "Indsæt nøglen her" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "Hvordan får jeg et sites nøgle?" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "For at tilføje en hjemmeside som en destination til at sende til, skal du indtaste dette websteds nøgle nedenfor." + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "Eller, send en backup til et andet site" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "Send" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "Send til site:" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "Ingen modtagerside er blevet tilføjet." + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "Det er til brug ved afsendelse af backup til følgende side:" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "Nøglen blev tilføjet med succes." + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "Den angivne nøgle tilhører ikke en fjern-side (den tilhører denne side)." + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "Den angivne nøgle var i stykker - prøv venligst igen." + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "Den angivne nøgle havde forkert længde - prøv venligst igen." + +#: addons/migrator.php:1861 +msgid "key" +msgstr "nøgle" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "Næsten alle FTP-servere benytter passiv tilstand; men hvis du behøver aktiv tilstand, skal du fjerne afkrydsning af dette felt." + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "Passiv tilstand" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "Fjern-sti" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "FTP password" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "FTP login" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "FTP server" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "UpdraftPlus Migrator modificerer restaurering processen korrekt, så det passer til backup data på det nye websted." + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "En \"flytning\" er i sidste ende det samme som en restaurering - men benytter backup arkiver, som du importerer fra et andet site." + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "Tilføj site" + +#: admin.php:608 +msgid "Adding..." +msgstr "Tilføjer..." + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "Adgang nægtet - Måske har du allerede brugt dette køb et andet sted, eller din betalte periode til at downloade fra updraftplus.com er udløbet?" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "For at bruge denne backup, skal din database server understøtte %s tegnsæt." + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "klik her for at ændre dit password på updraftplus.com" + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "Hvis du har glemt dit password" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "Klik her for at indtaste dit password igen." + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "Når du trykker på denne knap, vil du få mulighed for at vælge, hvilke komponenter du ønsker at migrere" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "Gå til \"Eksisterende backups\" for at importere et backup-sæt." + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "Du har ændret dine indstillinger, men har ikke gemt." + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "N.B. %s skelner ikke mellem store og små bogstaver." + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "Hvis OneDrive senere viser meddelelsen \"unauthorized_client\", så har du ikke indtastet en gyldig klient-id her." + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "Følg dette link for mere uddybende hjælp, der blandt andet indkluderer skærmbilleder." + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "Opret OneDrive legimitation i din OneDrive udviklerkonsol." + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "Du skal tilføje følgende som den autoriserede redirect URI i din OneDrive konsol (under \"API Indstillinger\"), når du bliver spurgt" + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "%s godkendelse mislykkedes:" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "OneDrive" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "Godkend igen forbindelsen til din %s konto." + +#: methods/email.php:73 +msgid "configure it here" +msgstr "konfigurer her" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "Klik her for at fjerne block'en." + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "Husk at gemme dine indstillinger." + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "Du benytter nu en IAM brugerkonto for adgang til din bucket." + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "S3 Bucket" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "Kina (Beijing) (begrænset)" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "Syd Amerika (Sao Paulo)" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "Asien (Tokyo)" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "Asien (Sydney)" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "Asien (Singapore)" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "EU (Frankfurt)" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "EU (Irland)" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "US Government West (begrænset)" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "US West (N. California)" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "US West (Oregon)" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "US Standard (default)" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "S3 storage region" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "Nyt IAM brugernavn" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "Admin hemmelig nøgle" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "Admin adgangs nøgle" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "Derefter kan disse lavere-drevne adgang legitimationsoplysninger bruges, i stedet for at gemme dine administrative nøgler." + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "Disse vil blive brugt til at oprette en ny bruger og nøglepar med et IAM politik vedhæftet, som kun vil gøre det muligt af få adgang til den angivne spand." + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "Indtast dit Amazon S3 adgang / hemmelige nøgler (dette skal være et nøglepar med nok rettigheder til at oprette nye brugere og spande), og et nyt (unikt) brugernavn til den nye bruger og en spand navn." + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "Opret ny IAM bruger og S3 bucket" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "Fortrolig nøgle: %s" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "Adgangs-nøgle: %s" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "Det lykkedes ikke at anvende User Policy" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "Kunne ikke oprette bruger adgangsnøgle" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "Kunne ikke oprette bruger adgangskode" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "IAM operation mislykkedes (%s)" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "Konflikt: Denne bruger findes allerede" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "Fejl: Vi kunne ikke med held få adgang til, eller oprette sådan en spand. Kontroller dine adgang adgangsoplysninger. Hvis de er korrekte, så prøv et andet bucket-navn (da en anden AWS bruger måske allerede bruger dit navn)." + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "AWS godkendelse mislykkedes" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "Kan ikke oprette ny AWS bruger, da det gamle AWS toolkit bliver brugt." + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "Du skal angive en bucket" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "Du skal indtaste et nyt IAM brugernavn" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "Du skal indtaste en hemmelig admin adgangsnøgle" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "Du skal indtaste en admin adgangsnøgle" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "Hvis du har en AWS admin brugerkonto, kan du bruge denne guide til hurtigt at oprette en ny AWS (IAM) bruger med adgang til kun denne spand (i stedet for hele din konto)" + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "Brug denne tilføjelse for at oprette en ny IAM sub-bruger og adgangsnøgle, der kun har adgang til denne spand." + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "For personlig support, muligheden for at kopiere sider, flere lagerdestinationer, krypterede sikkerhedskopier, flere backup destinationer, bedre rapportering, ingen reklamer og meget mere, bør du tage et kig på den premium-versionen af UpdraftPlus - verdens mest populære backup plugin." + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "UpdraftPlus nyheder, høj kvalitet undervisningsmaterialer til WordPress udviklere og site-ejere, og generelle WordPress nyheder. Du kan afmelde abonnement på hvilket som helst tidspunkt." + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "Upload-stien (%s) har ændret sig i løbet af en migrering - nulstilling (til: %s)" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "Dette sker ofte, hvis du deler server med en hacked webside som har været brugt i et tidligere angreb." + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "Det ser ud til at din web server's IP addresse (%s) er blokeret." + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "UpdraftPlus.com har svaret med 'Adgang nægtet'." + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "Premium WooCommerce plugins" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "Gratis to-faktor sikkerhedsplugin" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "Flere kvalitets plugin" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "Gå til shoppen." + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "Sammenlign med den gratis version" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "UpdraftPlus Premium" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "Følg dette link for at abonnere." + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "Gratis nyhedsbrev" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "Tak for at du laver backup med UpdraftPlus!" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "Udskyd (i %s måneder)" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "(samtidigt, som der tages backup af filerne)" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "Ingen backup er fuldført." + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "Det første skridt er at afinstallere den gratis version." + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "Hvis du har foretaget et køb fra UpdraftPlus.Com, så følg dette linke til instruktionerne for at installere dit køb." + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "Tilmelding til nyhedsbrev" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "Følg dette link for at tilmelde dig UpdraftPlus nyhedsbrev." + +#: admin.php:2831 +msgid "Personal support" +msgstr "Personlig support" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "Lås adgang til indstillinger" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "Netværk/Multisite support" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "Fast backup tid" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "Planlæg backup" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "Gendan backup fra andre plugins" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "Database beskyttelse" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "Send backup til flere fjerne destinationer" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "Automatisk backup når der opdateres WP/plugins/themes" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "Avanceret rapport indstillinger" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "Basis email rapport" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "Flyt / klon / kopier webside" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "Backup ekstra filer og databaser" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "Dropbox, Google Drive, FTP, S3, Rackspace, Email" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "Backup til fjerne server" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "Gendan fra backup" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "Oversat til over %s sprog" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "Backup WordPress filer og database" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "Køb det nu!" + +#: admin.php:2718 +msgid "Get it from" +msgstr "Få det fra" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "Stil et spørgsmål før køb" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "Før du køber FAQ's" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "Komplet liste over funktioner" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "Køb UpdraftPlus Premium" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "Du bruger i øjeblikket den gratis version af UpdraftPlus fra wordpress.org." + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Lav backup (hvis relevant) af plugins, temaer og WordPress database med UpdraftPlus før du opdaterer" + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "%s Fejl: Kunne ikke initialiseres" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "eller" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "eller" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "Du valgte ikke nogen komponenter til genoprettelse. Vælg mindst én, og prøv derefter igen." + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "PKCS1 (PEM header: BEGIN RSA-nøgle), XML og PuTTY format nøgler accepteret." + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "Genoptagelse af delvise uploads understøttes for SFTP, men ikke for SCP. Så hvis du bruger SCP, bliver du nødt til at sikre, at din webserver tillader PHP processer at køre længe nok til at uploade din største backup-fil." + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "lejer" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "Det skal være en v2 (Keystone) godkendelse URI; v1 (Swauth) understøttes ikke." + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "dit websteds admin adresse" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "Markér dette felt for at få en grundlæggende rapport sendt til" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "Manual" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "En fejl (%s) opstod:" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "Skift låse-indstillinger" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "Enhver anden fil/mappe på din server, som du ønsker at sikkerhedskopiere" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "For endnu flere funktioner og personlig support, tjek" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "Oprettelse af tabel mislykkedes - sandsynligvis fordi der ikke er nogen tilladelse til at droppe tabeller og at tabellen allerede findes. Vil fortsætte." + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "Renser cachede siger (%s)..." + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "Database dekryptering sætning" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "Automatisk backup inden opdatering" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "WordPress kerne (kun)" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "For oplåsning support, venligst kontakt den, der administrerer UpdraftPlus for dig." + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "For at få adgang til UpdraftPlus' indstillinger, skal du indtaste din adgangskode" + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "Forkert password" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "Lås op" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "Ellers vil standard-linket blive vist." + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "Enhver der ser låseskærmen vil se denne URL til support - Angiv en website adresse eller en e-mail adresse." + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "Support URL" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "Kræv adgangskode igen efter" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "%s uger" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "1 uge" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "%s timer" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "1 time" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "Sørg for, at du har lavet et notat af kodeordet!" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "Lås adgang til UpdraftPlus' indstillings-side." + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "Indstillinger er gemt." + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "Administrator adgangskoden er blevet ændret." + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "En administrator adgangskode er blevet angivet." + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "Administrator adgangskoden er nu blevet fjernet." + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "(lær mere om denne betydelige mulighed)" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "Bemærk, at efter du har modtaget dine tilføjelser, kan du fjerne dit password (men ikke e-mail-adresse) fra indstillingerne nedenfor, uden at påvirke dette sites adgang til opdateringer." + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "Se loggen" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "Backup data (klik for at downloade)" + +#: admin.php:4368 +msgid "Backup date" +msgstr "Backup dato" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "og fastholde så mange planlagte backups" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "trinvis sikkerhedskopi; basis backup: %s" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "For evnen til at låse adgangen til UpdraftPlus-indstillingerne med en adgangskode, skal du opgradere til UpdraftPlus Premium." + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "Upload filer til UpdraftPlus." + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "\"Backup Nu\"-knappen er deaktiveret, da din backup mappe er ikke skrivbar (gå til fanen \"Indstillinger\", og find den relevante mulighed)." + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "Backup etiket:" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "Fejl: Uventet fejl ved læsning af fil" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "tjek din log for flere detaljer." + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "din web-udbyder konto ser ud til at være fyldt; venligst se: %s" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "En zip fejl opstod" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "Din label til denne backup (valgfrit)" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "%s tillader ikke godkendelse af sider hostet direkte på IP-adresser. Du bliver nødt til at ændre din webstedsadresse (%s), før du kan bruge %s til lagring." + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "Du har indtastet en e-mail adresse som ikke blev genkendt af UpdraftPlus.Com" + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "Din e-mailadresse var gyldig, men din adgangskode blev ikke genkendt af UpdraftPlus.Com." + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "Du er nødt til at bruge både en e-mail adresse og en adgangskode" + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "For at fortsætte, så tryk på 'Backup Nu' og derefter se 'Sidste Log Besked' feltet for aktivitet." + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "Hvis du ønsker at genskabe en multisite backup, så skal du først sætte din WordPress op som en multisite installation." + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "Din backup er fra en WordPress multisite installation; men det er denne side ikke. Det er kun den første side som vil være tilgængelig." + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "Allerede færdig" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "Sprang over (ikke på listen)" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "Søg og erstat tabel:" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "Indtast en kommasepareret liste; ellers efterlad tom for alle felter." + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "Kun disse tabeller" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "Rækker pr. kørsel" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "Du har endnu ikke forbundet din UpdraftPlus.Com konto." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "Du er nødt til at modtage fremtidige opdateringer UpdraftPlus." + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "Eventuelle support anmodninger som har med %s at gøre bør løses med dit web-hosting firma." + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "Du bør kun fortsætte, hvis du ikke kan opdatere den aktuelle server og er overbeviste om (eller villig til at forsøge om), at dine plugins/temaer/osv. er kompatible med den ældre %s version." + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "Denne er markant nyere end den serverversion, som du nu ønsker at gendanne på (version %s)." + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "Siden i denne backup blev lavet på en webserver med version %s af %s." + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "LinkedIn" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "Google+" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "Facebook" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "Twitter" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "UpdraftPlus er på de sociale medier - tjek os ud her:" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "Hvorfor ser jeg dette?" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "Placeringen af denne mappe er angivet i ekspertindstillingerne i fanen Indstillinger." + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "Klik her for at se i din UpdraftPlus mappe (på dit webhotel) efter nye backups som du har uploadet." + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "Start backup" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "Du bruger %s webserver, men den lader ikke til at have %s modulet indlæst." + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "Du er nødt til at kontakte din hostingudbyder for at finde ud af, hvordan du skal angive tilladelser for et WordPress plugin for at det kan skrive til mappen." + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "Med mindre du har problemmer, kan du bare ignorere alt her." + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "Denne fil kunne ikke blive uploadet" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "Du kan finde mere information om dette i afsnittet Indstillinger." + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "Understøttede backup plugins: %s" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "Var denne backup oprettet af et andet backup plugin? Hvis ja, så skal du først omdøbe den, så den kan genkendes - se dette link." + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "Fortæl mig mere om trinvis sikkerhedskopiering" + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "hukommelsesgrænse" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "genoprettelse" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "Tabel, der skal implicit droppes: %s" + +#: backup.php:829 +msgid "Incremental" +msgstr "Trinvis" + +#: backup.php:829 +msgid "Full backup" +msgstr "Fuld backup" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "fortsætter nu med opdateringerne..." + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "(se log...)" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "Backup lykkedes" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "Hver %s time" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "søger og erstatter" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "Start" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "En søg/erstat kan ikke gøres om - er du sikker på, at du vil gøre dette?" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "Dette kan let ødelægge din side; så anvend det med forsigtighed!" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "Erstat med" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "Søg efter" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "Søg / erstat database" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "søgefrase" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "Der har været for mange database fejl - stopper" + +#: backup.php:895 +msgid "read more at %s" +msgstr "læs mere på %s" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "E-mail rapporter skabt af UpdraftPlus (gratis) giver dig de seneste UpdraftPlus.com nyheder" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "P.S. Hvis du installerer UpdraftPlus på flere WordPress-sider, kan du ikke genbruge dine projekter; du må oprette et ny ud fra din Google API konsol for hver side." + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "Du har endnu ikke oprettet nogle backups." + +#: admin.php:3872 +msgid "Database Options" +msgstr "Database muligheder" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "Plugins til debugging:" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "%s (%s brugt)" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "Ledig diskplads på konto:" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "Denne knap er deaktiveret fordi dit backup-arkiv ikke er skrivbart (se indstillingerne)." + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "Eksisterende backups" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "Nuværende status" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "For at ændre standardinstillingerne for, hvad der skal tages backup af - for at indstille planlagte backups - for at sende dine backups til fjernlager (anbefales) - og mere - Gå til indstillingsfanen." + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "Klik på Backup Nu knappen for at skabe en backup." + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "Velkommen til UpdraftPlus!" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "Hvis du skriver tekst her, vil den blive brugt til at kryptere database backups (Rijndael). Lave en særskilt kopi af teksten og mist den ikke, for ellers vil ingen af dine backups kunne bruges. Denne er også nøglen til at dekryptere backups fra denne admin brugerflade (så hvis du ændrer den vil automatisk dekryptering ikke fungere, før du ændrer den tilbage igen)." + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "Tester..." + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "Test forbindelse..." + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "Tabel præfiks" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "Lav backup af ekstern database" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "Tilføj en ekstern database til backup..." + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "Hvis din database indeholder ekstra tabeller, som ikke er en del af en WordPress side (du ved, når det er tilfældet), så aktivér denne mulighed for også at lave backup af disse." + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "Lav backup af ikke-WordPress tabeller, der er placeret i samme database som WordPress" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "Denne instilling vil muliggøre at tabeller lagres i MySQL-databasen, som ikke hører til WordPress (genkendt ved deres mangel på konfigureret WordPress præfiks, %s). " + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "Forbindelse mislykkedes." + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "Forbindelse lykkedes." + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "%s total tabeller fundet; %s med det angivne præfiks." + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "%s tabeller fundet." + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "forbindelse til database mislykkedes" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "databasenavn" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "vært" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "bruger" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "Ekstern database (%s)" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "Følg linket til din Google API konsol og aktivér der Drive API og skab en Client ID i API Access sektionen." + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "adgang til den overliggende mappe mislykkedes" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "Dog mislykkede adgangsforsøget efterfølgende:" + +#: admin.php:4499 +msgid "External database" +msgstr "Ekstern database" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "Dette vil også medføre fejlsøgningsudskrift fra alle plugins som vil blive vist på denne skærm - du skal ikke blive overrasket over at se disse." + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "Backup flere databaser" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "Indtast først dekrypteringsnøglen" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "Du kan manuelt dekryptere en krypteret database her." + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "Det kan også sikkerhedskopier eksterne databaser." + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "Har du ikke lyst til at blive udspioneret? UpdraftPlus Premium kan krypterer din database backup." + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "brug UpdraftPlus Premium" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "Dekryptering mislykkedes. Databasefilen er krypteret." + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "Kun WordPress databasen kan gendannes; du bliver nødt til at behandle den eksterne database manuelt." + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "Der opstod en fejl med den første %s kommando - afbryder kørelse" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "Forbindelsesfejl: kontrollere dine adgangsoplysninger, at database serveren er oppe og at netværksforbindelsen ikke er bag en firewall." + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "database forbindelse mislykkedes." + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "Advarsel: Databasens URL (%s) er forskellig fra, hvad vi forventede (%s)" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "Sti-navne i %s understøtter kun små bogstaver." + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "Hvis feltet står tomt, vil backup'en placeres i roden af din %s" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "f.eks. %s" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "Hvis mappen ikke allerede eksisterer, vil den blive oprettet." + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "Her angives stien til %s mappen du ønsker at bruge." + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "Container" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "Lad dette stå tomt, og der vælges en standard." + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "Lejer" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "Klik på linket for mere information." + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "bekræftelses URI" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "Få dine adgangsoplysninger fra din OpenStack Swift udbyder og vælg herefter et containernavn til brug for lagerplads. Denne container vil blive oprettet for dig, hvis den ikke allerede eksisterer." + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "Download %s mislykkedes" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "Kunne ikke downloade" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "filerne kunne ikke vises" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "Upload %s mislykkedes" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "Udført:" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "Efter du har gemt dine indstillinger (ved at klikke på 'Gem ændringer' nedenfor), skal du vende tilbage hertil og klikke på dette link for at færdiggøre godkendelse med %s." + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "(Du er allerede godkendt)." + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "Dropbox" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "Godkend med %s" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "Fejl ved download af fil: Download mislykkedes" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "Region: %s" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "%s fejl - Vi kunne tilgå containeren, men kunne ikke oprette en fil i den" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "%s emnet blev ikke fundet" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "Kunne ikke tilgå %s container" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "%s fejl - Adgang til containeren mislykkedes" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "Kontoindehavers navn: %s." + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "For at kunne oprette et standard mappe-navn skal du bruge UpdraftPlus Premium." + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "Det er et internt Google Drive ID-nummer" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "Dette er IKKE et mappenavn." + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "Mappe" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "%s download: Mislykkedes: Filen blev ikke fundet" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "Navn: %s." + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "Google Drive fil-liste: Kunne ikke få adgang til hovedmappen" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "Din %s version: %s." + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "Venligst bed din web hosting leverandør om at opgradere." + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "Denne fjern-lagerplads metode (%s) kræver PHP %s eller nyere." + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "Temaoversigt (%s) blev ikke fundet, men anden version eksisterer; opdatér derfor databasen" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "Opkald" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "Fetch" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "Denne funktion kræver %s version %s eller nyere" + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "Data fra Elegant Themes builder plugin blev registreret: Nulstiller midlertidig mappe" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "%s filerne er pakket ud" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "Kunne ikke udpakke arkivet." + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "Fejl - Kunne ikke downloade filen" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "Gentag scanning af lokal mappe for nye sæt." + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "Du bør opdatere UpdraftPlus for at være sikker på at have en kompatibel version." + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "Der er testet op til version %s." + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "Den indstallerede version af UpdraftPlus Backup/Restore er ikke blevet testet mod din version af WordPress (%s)." + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "password/nøgle" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "Nøgle" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "Dit login skal være enten password- eller nøgle-basseret - Du skal kun indtaste én af dem, ikke begge." + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "Nøglen var enten ikke i et godkendt format eller var ikke korrekt." + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "SCP/SFTP password/nøgle" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "Fil-backup (lavet af %s)" + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "Filer og database WordPress backup (lavet af %s)" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "Backup lavet af: %s." + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "Database (oprettet af %s)" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "ukendt kilde" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "Gentag scanning af fjernlager" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "Upload backup filer" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "Denne backup blev lavet af %s og kan importeres." + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "Læs denne side for en guide til mulige årsager og løsningsforslag." + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "WordPress har et antal (%d) planlagte opgaver, som skulle have være udført. Med mindre dette er et udviklingssite, tyder det på, at planlægningsdelen i din WordPress installation ikke fungerer korrekt." + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "Hvis dette er en backup skabt af en anden backup plugin, kan UpdraftPlus Premium muligvis hjælpe dig." + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "Men, UpdraftPlus arkiver er standard zip/SQL filer - så hvis du er sikker på, at filen har det rette format, kan du omdøbe dem, så de matcher dette mønster." + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "Denne fil er tilsyneladende ikke et UpdraftPlus backup arkiv (som skal være .zip eller .gz filer med et navn som: backup_(tidspunkt)_(site navn)_(kode)_(type).(zip/gz))." + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "Backup skabt af ukendt kilde (%s) - Kan ikke genskabes." + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "WordPress indholdsmappe (wp-content) blev ikke fundet i denne zip fil." + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "Denne version af UpdraftPlus kan ikke håndtere denne type af fremmed backup" + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "%s returnerede et uventet HTTP svar: %s" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "UpdraftPlus modulet til denne fil-adgangsmetode (%s) understøtter ikke lister af filer." + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "Indstillinger blev ikke fundet" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "Én eller flere backups er blevet tilføjet efter scanning af fjernlager; bemærk at disse backups ikke automatisk vil blive slettet gennem \"behold\"-instillingerne. Når/hvis du ønsker at slette dem, må dette gøres manuelt." + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "Scanner igen både fjern- og lokal-lager for backup-sæt..." + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "(Læs mere)" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "Justering af multisite stier" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "Log alle beskeder til syslog (ønskes sansynligvis kun udført af server-administratorer)" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "Ingen backup af lokation: Der blev ikke fundet noget at tage backup af" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "Tilføj en til..." + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "Fjern" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "Andre %s FAQ's." + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "Se her for mere information og e-mails om backup-processen - Nyttigt, hvis noget går galt." + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "Ved angivelse af flere filer/arkiver skal de adskilles med kommaer. Ved enheder på top niveau kan du bruge et * før eller efter det indtastede. " + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "Custom content type manager plugin data fundet: Sletter midlertidigt lager" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "Din hosting udbyder skal slå disse funktioner til inden %s kan virke." + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "Din webservers PHP installation har slået disse funktioner fra: %s." + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "krypteret FTP (explicit kryptering)" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "krypteret FTP (implicit kryptering)" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "almindelig ikke-krypteret FTP" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "Backup udført af:" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "Klar til at hente fra denne side." + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "Venligst forny for fortsat adgang til support." + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "Din betalte adgang til UpdraftPlus support udløber snart." + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "Venligst forny for igen at få adgang." + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "Din betalte adgang til UpdraftPlus support er udløbet." + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "Din betalte adgang til UpdraftPlus opdateringer til denne side vil snart udløbe." + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "For at beholde adgang til opdateringer (inklusiv fremtidige funktioner og kompabilitet til WordPress versioner) samt support, bedes du forny din licens." + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "Din betalte adgang til UpdraftPlus opdateringer for %s af %s add-ons på denne side udløber snart." + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "Din betalte adgang til UpdraftPlus opdateringer til %s add-ons på denne side er udløbet." + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "Venligst forny for igen at få adgang til opdateringer (inklusive fremtidige funktioner og kompabilitet med kommende udgaver af WordPress) samt support." + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "Din betalte adgang til UpdraftPlus opdateringer til denne side er udløbet. Du vil ikke længere modtage opdateringer til UpdraftPlus." + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "Afvis fra hovedoversigten (i %s uger)" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "Forsøg på at rette dobbelt-kompresionen lykkedes." + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "Forsøg på at rette dobbelt-kompresionen mislykkedes." + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "Det ser ud til, at filerne i databasen er blevet komprimeret to gange - Måske har siden, du har downloaded dem fra, en forkert konfigureret webserver." + +#: admin.php:1528 +msgid "Constants" +msgstr "Kontinuerlige" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "Det mislykkedes af åbne og læse database-filen:" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "Ingen database-tabeller fundet" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "Venligst vent på det planlagte forsøg" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "Bemærk at advarslerne er vejledende - Backup processen stopper ikke p.g.a. dem. De giver information, som du kan finde brugbar, eller de kan indikere kilden til et problem, hvis backup'en ikke lykkedes." + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "Søgning i databasen har kørt i: %d in %.2f sekunder" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "Søgning og erstatning er nået til række: %d" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "Denne tabel springes over: Data i denne tabel (%s) skal ikke søges i eller erstattes" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "Kontoen er brugt op: Din %s konto har kun %d bytes tilbage, men filen, der skal oploades har %d bytes tilbage (total størrelse: %d bytes)" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "Fejl opstod:" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "Følg dette link for at downloade log-filen for denne genoprettelse (nødvendig for enhver henvendelse til support)." + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "Se også denne FAQ." + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "Hvis du fravælger fjernlager, vil backup placeres på web-serveren. Dette kan ikke anbefales (med mindre du manuelt vil kopiere dem til din computer), da eventuelt tab af web-serveren vil medføre, at du mister både din hjemmeside og dine backup's." + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "Henter (hvis nødvendigt) og forbereder backup-filer..." + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "Opsætningen af PHP på denne web-server tillader kun at PHP kører i %s sekunder, og dette tidsinterval kan ikke øges. Hvis du har en stor mængde data, og hvis tiden for genskabelsen udløber, bør du bede din web-udbyder om mulighed for at hæve tidsgrænsen (eller forsøge at genskabe i mindre dele ad gangen)." + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "Der findes ikke slettede mapper fra en tidligere genskabelse (venligst anvend \"Slet gamle arkiver\" knappen for at slette dem inden næste forsøg): %s" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "Grænsen for kørsel af WordPress plugins er meget lav (%s sekunder) - Du bør hæve grænsen for at undgå backup-fejl på grund af time-outs (rådfør dig med din web-udbyder for mere hjælp angående max_execution_time PHP indstillingen. Den anbefalede værdig er %s sekunder eller mere)" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "Erstat i blogs/side tabellen: from: %s to: %s" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "%s: Springer over cache filen (eksisterer ikke)" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "Dette plugin er disabled: %s genaktivér det manuelt, når du er klar." + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "%s forbindelsen udløb. Hvis du angav serveren korrekt, skyldes dette normalt at en firewall blokerer forbindelsen. Du bør tjekke dette med din web-udbyder." + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "Det nuværende tema blev ikke fundet. For at undgå at siden ikke kan loades, er dit tema erstattet med standard temaet." + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "Genskabelse mislykkedes..." + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "Beskeder:" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "En SQL linje, som er større end den maksimale pakkestørrelse og som ikke kan deles op, blev fundet. Denne linje vil ikke blive udført, men blive sprunget over: %s" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "Arkivet eksisterer ikke" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "Ny brugers e-mail adresse" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "Ny brugers brugernavn" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "Admin API Key" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "Admin Brugernavn" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "US eller UK Rackspace konto" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "Indtast dit Rackspace admin username/API key (så Rackspace kan godkende din tilladelse til at oprette nye brugere), og indtast et nyt (unikt) brugernavn og e-mail adresse for den nye bruger samt et container-navn." + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "Opret ny API bruger og container" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "API Key: %s" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "Password: %s" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "Brugernavn: %s" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "Cloud Files kørslen fejlede /%s)" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "Konflikt: Denne bruger eller e-mail adresse eksisterer allerede" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "Du skal angive en gyldig ny e-mail adresse" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "Du skal angive en container" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "Du skal angive et nyt brugernavn" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "Du skal angive en admin API nøgle" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "Du skal angive et admin brugernavn" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "Opret en ny API bruger med adgang kun til denne container (og ikke til hele din konto)" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "Tilføjer forbedrede muligheder for Rackspace Cloud Files brugere" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "Rackspace Cloud Files, forbedret" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "Cloud Files container" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "Cloud Files API nøgle" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "Brug dette add-on for at oprette en ny Rackspace API sub-user og en API nøgle, der kun har adgang til denne Rackspace container." + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "Cloud Files brugernavn" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "London (LON)" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "Hong Kong (HKG)" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "Northern Virginia (IAD)" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "Chicago (ORD)" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "Sydney (SYD)" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "Dallas (DFW) (standard)" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "Cloud Files Storage Region" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "Konti oprettet på rackspacecloud.com er US-konti; konti oprettet på rackspace.co.uk er UK-konti" + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "US eller UK baseret Rackspace konto" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "Konti oprettet på rackspacecloud.com er US konti; konti oprettet på rackspace.co.uk er UK konti." + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "Autorisation mislykkedes (tjek dine personlige oplysninger)" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "En ukendt fejl opstod ved forsøg på forbindelse til UpdraftPlus.com" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "Opret" + +#: admin.php:556 +msgid "Trying..." +msgstr "Forsøger..." + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "Den nye brugers RackSpace konsol password er (dette vil ikke blive vist igen):" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "(når krypteret)" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "Fejldata:" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "Backup eksisterer ikke i backup-historie" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "Din WordPres installation har gamle arkiver fra tiden inden du genoprettede/flyttede (teknisk information: disse filer slutter med -old). Du bør klikke på denne knap, når du er sikker på at din tidligere handling virker." + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "Delt linje for at ungå overskridelse af maksimal pakkestørrelse" + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "Din database-bruger har ikke tilladelse til at slette tabeller. Vi vil forsøge at genskabe ved blot at tømme tabellerne; dette burde virke så længe du genskaber fra en WordPress version med den samme database-struktur (%s)" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "Nye tabel-indstillinger: %s" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "Filindstillinger tillader ikke at gammel data flyttes og gemmes; det vil i stedet blive slettet." + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "%s: Dette arkiv eksisterer allerede, og vil blive overskrevet" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "Filerne kunne ikke flyttes. Tjek dine adgangsinstillinger." + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "Kunne ikke placere filerne korrekt. Tjek din wp-content/upgrade folder" + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "Kunne ikke flytte gamle filer af vejen" + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "Fjerner gammel data af vejen" + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "Tilføj en anden adresse..." + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "Indtast de ønskede adresser her, som skal modtage en rapport når backup-jobbet er afsluttet." + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "E-mail rapporter" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "%s checksum: %s" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "filer: %s" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "Brug \"Reporting\"-sektionen til at konfigurere den e-mail, du ønsker at benytte" + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr "(med advarsler (%s))" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr "(med fejl (%s))" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "Information om rens af filer" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "Uploaded til:" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "Tid brugt:" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "Advarsler" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "Fejl" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "Fejl / advarsler:" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "Indeholder:" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "Backup startede:" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "Backup rapport" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "%d timer, %d minutter, %d sekunder" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "%d fejl, %d advarsler" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "%s godkendelse" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "%s fejl: %s" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "%s logo" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "%s returnerede ikke det forventede svar - tjek din logfil for flere detaljer" + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "Det nødvendige %s PHP modul er ikke installeret - ret henvendelse til dit hostingfirma for at få dette aktiveret" + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "Brug \"%s\" add-on for flere muligheder. " + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "Din sides admin e-mail adresse (%s) vil blive brugt." + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "Tilslut" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "For udvidede muligheder for fejlrapportering, brug da Reporting add-on, " + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "(version: %s)" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "Vær opmærksom på at mailservere ofte har en størrelsesbegrænsning; typisk omkring %s Mb; backup større end disse grænser vil sandsynligvis ikke blive modtaget." + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "Når backup via e-mail er tilføjet, send da også den samlede backup" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "Seneste status:" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "Backup indeholder:" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "Backed up: %s" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "Log-filen er vedhæftet denne e-mail. " + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "Ukendt/ uforventet fejl - Henvend dig venligst til supporten" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "Kun database (filer var ikke en del af denne planlagte kørsel)" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "Database (backup af filer er ikke færdig)" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "Kun filer (databasen var ikke end del af denne planlagte kørsel)" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "Arkiverer (backup af databasen er ikke færdig)" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "Filer og database" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "(Dette gælder alle WordPress backup plugins, undtagen hvis de er specielt kodet til multisite mulighed)." + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "Uden at opgradere tillader UpdraftPlus enhver blog administrator, som kan tilpasse plugin-indstillingerne (og dermed tilgå data, inklusiv passwords, fra) og genskabe (ud over tilpassede instillinger, f.eks. ændrede passwords) hele nætværket." + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "WordPress Multisite er understøtte med ekstra funktioner af UpdraftPlus Premium, eller Multisite tilføjelsen." + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "Dette er en WordPress multi-site (også kaldet netværk) installation." + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "UpdraftPlus advarsel:" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "(eller skab forbindelse ved at bruge formularen på denne side, hvis du købt adgang til den)" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "venligst aktiver dette plugin ved at opdatere det via dette link" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "For at få dette plugin, bedes du følge dette opdaterings-link" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "seneste" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "Din version: %s" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "Værsgo" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "UpdraftPlus support" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "En UpdraftPlus opdatering indeholdende dine tilføjelser er tilgængelig - følg dette link for at få den." + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "UpdraftPlus addons" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "En opdatering er tilgængelig til UpdraftPlus - venligst klik på dette link for at få den." + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "UpdraftPlus.Com returnerede et svar, men vi kunne ikke forstå det" + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "Din e-mail adresse go password blev ikke genkendt af UpdraftPlus.Com" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "UpdraftPlus.Com gav et svar, som vi ikke kunne forstå (data: %s)" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "UpdraftPlus.Com svarede, men vi forstod ikke svaret" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "Det lykkedes ikke at skabe forbindelse til UpdraftPlus.Com" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "Rapportering" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "Muligheder (raw)" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "Send kun en rapport når der er advarsler/fejl" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "Indholds-URL:" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "Du bedes tjekke filejerskab og -tilladelser i din WordPress installation" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "Se også \"Flere filer\"-tilføjelsen i vores shop." + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "Din ledige plads på din hosting-konto er meget lille - kun %s Mb tilbage" + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "Mængden af hukommelse (RAM) tilladt til PHP er meget lav (%s Mb) - Du bør udvide hukommelsen p.g.a. for lidt hukommelse (kontakt din webhosting-udbyder for mere hjælp)" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "Håndtér tilføjelser" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "Køb" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "Få den i UpdraftPlus.COM Store" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "aktivier den på denne side" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "Du har et inaktivt køb" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "Tildelt til denne side" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "Tilgængelig for denne side (via dit tilføjelses fuldpakke køb)" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "(tilsyneladende en tidligere- eller tilbagetrykket udgivelse)" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "Klik her" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "Behov for support?" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "En fejl opstod ved forsøg på modtagelse af dine tilføjelser." + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "Et ukendt svar blev modtaget. Svaret var:" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "Anmodning ikke godkendt - Dine login detaljer til kontoen er forkerte" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "Vent venligst mens vi udfører fordringen..." + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "Der opstod fejl ved forsøg på at forbinde til UpdraftPlus.Com:" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "Du er i øjeblikket ikke forbundet til en UpdraftPlus.Com konto." + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "Hvis du har købt nye tilføjelser, bedes du følge dette link for at opdatere din forbindelse" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "Du er i øjeblikket forbundet til en UpdraftPlus.Com konto." + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "Interesseret i at vide mere om UpdraftPlus.Com password sikkerhed? Læs mere her." + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "Har du glemt dine oplysninger?" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "Har du endnu ikke en konto (det er gratis)? Få en her!" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "Forbind til din UpdraftPlus.Com konto" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "Din webservers version af PHP er for gammel (" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "Det ser ud til, at din installerede Updraft er forældet - Måske har du taget fejl af dem? " + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "Klik her for at starte installation." + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "UpdraftPlus er endnu ikke installeret." + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "Klik her for at aktivere det." + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "UpdraftPlus er endnu ikke aktiveret." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "Klik her for at skabe forbindelse." + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "Du har endnu ikke skabt forbindelse til din UpdraftPlus.Com konto, hvor du har mulighed for at se dine købte tilføjelses-funktioner." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "Uden denne vil kryptering foregå langsommere." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "Din web-server har ikke %s modulet installeret." + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "(Det ser ud til, at du allerede er godkendt,, men du kan gennemgå godkendelse igen for at genskabe forbindelse, hvis du har oplevet et problem)." + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "Drop backup-filer her" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "Styr WordPress for kommandolinjen - Det sparer meget tid" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "Tjek WordShell" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "Vil du have flere funktioner eller købe garanteret support? Tjek på UpdraftPlus.Com" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "Web-serveren returnerede en fejlkode (prøv igen, eller tjek din web-servers logs)" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "Genskabelsen er startet. Tryk ikke på stop, og luk ikke browseren før der meldes om, at processen er færdig." + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "Hvis du fravælger både databasen og filerne, har du fravalgt alt!" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "Sidens forside:" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "Fjernlager muligheder" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "(logs kan findes i UpdraftPlus indstillinger som normalt)..." + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "Husk dette valg til næste gang (du vil stadig have mulighed for at ændre det)" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "Upload mislykkedes" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "Du kan sende en backup til mere end én destination ved hjælp af et tilføjelsesprogram." + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "Note: Tidslinjen nedenfor er baseret på stadier, IKKE tid. Stop ikke backup'en kun på grund af, at den tilsyneladende har stået på det samme sted i et stykke tid - dette er normalt." + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "(%s%%, file %s of %s)" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "Læs mere om, hvordan dette virker..." + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "Fejl: Vi kunne logge ind, men mislykkedes i at skabe en fil på denne lokation." + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "Fejl: Vi kunne logge ind og flytte det valgte arkiv, men mislykkedes i at skabe en fil på denne lokation." + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "Brug SCP i stedet for SFTP" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "SCP/SFTP bruger-indstillinger" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "SCP/SFTP host indstillinger" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "Forsøget på at sende backup'en via e-mail mislykkedes (backup'en var muligvis for stor til denne metode)" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "Backup er: %s." + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "%s indstillinger test resultat:" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "(Ikke færdig)" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "Hvis du ser flere backup's, end du havde forventet, er det sikkert på grund af, at sletning af gamle backup sæt ikke sker, før en ny backup er færdig." + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "Venligst ikke plaver det i dine uploads eller plugins arkiv, da det vil skabe gentagelse på gentagelse (backup af backup af backup af...)." + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "Dette er, hvor UpdraftPlus vil skrive zip-filerne indledningsvis. Dette arkiv må være skrivbare for din web-server. Dette relaterer til dit indholdsarkiv (der som standard kaldes wp-content)." + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "Job ID: %s" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "Seneste aktivitet: for %ss siden" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "Gentages næste gang: %d (after %ss)" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "Ukendt" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "Backup er færdig" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "Afventer planlagt kørsel før næste forsøg pga. fejl" + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "Nedbringer antal gamle backup-sæt" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "Uploader filer til fjernlager" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "Krypteret database" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "Krypterer database" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "Oprettet database backup" + +#: admin.php:3359 +msgid "table: %s" +msgstr "tabel: %s" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "Opretter database backup" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "Oprettede fil backup zips" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "Opretter fil backup zips" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "Backup er startet" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "Igangværende backups:" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "Planlæggeren er disabled i dine WordPress indstillinger via DISABLE_WP_CRON. Ingen backup's kan køre (selv "Backup Now"), medmindre du manuelt har indstillet muligheden for at kontakte planlæggeren, eller indtil det er slået fra." + +#: restorer.php:646 +msgid "file" +msgstr "fil" + +#: restorer.php:639 +msgid "folder" +msgstr "mappe" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "UpdraftPlus havde behov for at oprette en %s i dit indholdsarkiv, men mislykkedes - Venligst tjek dine rettigheder og giv adgang (%s)" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "Backup'en er ikke færdig; en genoptagelse er planlagt" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "Dit website besøges kun sjældent og UpdraftPlus modtager ikke de forventede ressourcer. Læs venligst denne side:" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "%s godkendelsen kunne ikke fuldføres, fordi noget andet på dit site ødelægger den. Prøv at sætte plugins til passiv og skift til et standard tema. (Det, du leder efter, er de komponenter, der sender output (sandsynligvis PHP advarsler/fejl) inden siden starter op. At slå antivirus-indstillinger fra kan også hjælpe)." + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "Din PHP hukommelsesgrænse (bestemt af din web hosting udbyder) er meget lav. UpdraftPlus forsøgte uden held at øge denne grænse. Dette plugin har problemer med grænser mindre end 64 Mb - specielt hvis du har upload'et meget store filer (selv om mange sider vil fungere med en 32Mb grænse)." + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "Fortsæt med opdateringen" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "Afbryd ikke efter klik på Fortsæt nedenfor - Vent på at backup'en er færdig." + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "UpdraftPlus Automatisk Backup's" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "Der er opstået fejl:" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "Opretter backup med UpdraftPlus..." + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "Automatisk Backup" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "Opret database backup med UpdraftPlus..." + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "Du har ikke tilstrækkelig tilladelse til at opdatere denne side." + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "temaer" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "plugins" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "Starter automatisk backup..." + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "Skaber %s og database backup med UpdraftPlus..." + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Lav automatisk backup (hvis relevant) af plugins, temaer og WordPress databasen ved hjælp af UpdraftPlus inden opdatering" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "Hvis ikke du er sikker, bør du stoppe; ellers kan du ødelægge denne WordPress installation." + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "Dette ser ikke ud til at være en godkendt WordPress backup - Filen %s manglede." + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "Kunne ikke åbne zip-fil (%s) - Kunne ikke scanne og tjekke for sikkerheden." + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "Kunne ikke læse zip-fil (%s) - Kunne ikke scanne og tjekke for sikkerheden." + +#: admin.php:2310 +msgid "More plugins" +msgstr "Flere plugins" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "Support" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "UpdraftPlus kunne ikke finde indstillinger for tabeller ved scanning af database backup'en." + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "Denne database backup mangler WordPress tabeller: %s" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "Du importerer fra en nyere version af WordPress (%s) til en ældre version (%s). Det kan ikke garanteres, at WordPress kan håndtere dette." + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "Databasen er for lille til at være en godkendt WordPress database (størrelse: %s Kb)." + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "Opdatér Temaer" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "Opdatér Plugin" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "Føl dig sikker hver gang, uden at skulle huske på noget - Følg dette link for at lære mere." + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "UpdraftPlus Premium kan automatisk tage backup af dine plugins, temaer og databaser, inden du opdaterer." + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "Vær på den sikre side med en automatisk backup" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "Afvis (for %s uger)" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "Opload sti (%s) eksisterer ikke - nulstiller (%s)" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "Hvis du stadig kan læse denne tekst, efter siden er færdig med at loade, så er der et problem med JavaScrips eller jQuery på siden." + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "Filen blev uploaded." + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "Ukendt server-svar status:" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "Ukendt server-svar:" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "Denne dekrypteringsnøgle vil forsøges anvendt:" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "Følg dette link for at forsøge dekryptering eller download database-filen til din computer." + +#: admin.php:584 +msgid "Upload error" +msgstr "Fejl ved upload" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "Denne fil er tilsyneladende ikke et krypteret UpdraftPlus database arkiv (sådanne filer er .gz.crypt filer, der har et navn som: backup_(tid)_(sidenavn)_(kode)_db.crypt.gz)." + +#: admin.php:582 +msgid "Upload error:" +msgstr "Upload fejl:" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "(vær sikker på, at du prøvede på at uploade en zip-fil, der tidligere er skabt af UpdraftPlus)" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "og derefter, hvis du ønsker det," + +#: admin.php:572 +msgid "Download to your computer" +msgstr "Download til din computer" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "Slet fra din webserver" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "Eksempler på S3-kompatible lagerleverandører:" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "Vil ikke slette arkiver efter udpakning, da der ikke er nogen cloud lagerplads til denne backup" + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "Du mangler tilsyneladende et eller flere arkiver fra dette multi-arkiv sæt." + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "%d arkiv(er) i sæt)." + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "Opdel arkiver hver:" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "Fejl: Serveren sendte os et svar (JSON), som vi ikke forstod." + +#: admin.php:563 +msgid "Warnings:" +msgstr "Advarsler:" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "Fejl: Serveren sendte et tomt svar. " + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "Dette ligner en fil skabt af UpdraftPlus, men denne installation kender ikke til denne type objekt: %s. Måske skal du installere en add-on?" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "Backup-arkivfilerne er oprettet, men med nogle fejl. Du må afbryde og rette problemerne, inden du prøver igen." + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "Backup-arkivfilerne er oprettede, men med nogle advarsler. Hvis alt er i orden, så klik igen på Genskab for at fortsætte. Ellers afbryd og ret problemerne først." + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "Backup-filerne er korrekt oprettet. Klik nu på Genskab igen for at fortsætte." + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "Multi-arkiv backup'en ser ud til at mangle følgende arkiver: %s" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "Filen (%s) blev fundet, men har en anden størrelse (%s) end forventet (%s) - Filen kan være beskadiget." + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "Filen blev fundet, men er uden indhold (du må uploade den igen): %s" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "Filen blev ikke fundet (du skal uploade den): %s" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "En sådan backup findes ikke" + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "Backup-arkivet for denne fil kunne ikke findes. Den anvendte fjernlagermetode (%s) tillader os ikke at hente filerne. For at genskabe via UpdraftPlus, må du hente en kopi af denne fil og placere den i UpdraftPlus's arbejdsmappe." + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "Kunne ikke flytte arkivet (tjek dine fil-tilladelser og disk-andel): %s" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "Kunne ikke flytte filen (tjek dine fil-tilladelser og disk-andel): %s" + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "Flytter upakket backup på plads..." + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "Kunne ikke åbne zip-filen (%s) - %s" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "Server-sti til WordPress rodmappen: %s" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "%s end-point" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "... og mange flere!" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "S3 (Kompatibel)" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "Filen findes i øjeblikket ikke lokalt - Den skal hentes fra fjernlageret" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "Leder efter %s arkiv: filnavn: %s" + +#: admin.php:4836 +msgid "Final checks" +msgstr "Afsluttende kontrol" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "Vælg denne funktion for at slette enhver unødvendige backup-filer fra din server, efter backup-kørslen er færdiggjort. Hvis du fravælger funktionen, vil alle filer sendt til fjernlager også forblive på den lokale enhed)." + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "Placér krypterede database-filer (db.gz.crypt filer) her for at uploade dem til afkryptering" + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "Din wp-content arkivserver sti: %s" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "Komplet backup-historie" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "Vis komplet backup og fil-liste" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "Behandler filer - vent venligst..." + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "Venligst se denne FAQ for hjælp til en løsning." + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "Din WordPress installation har et problem med at udlæse ekstra whitespace. Dette kan ødelægge backup's, som downloades herfra." + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "Kunne ikke åbne database filen." + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "Kunne ikke skrive den krypterede database til filsystemet." + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "Kendte backups (komplette)" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "Kan ikke optælle filer i dette arkiv." + +#: restorer.php:939 +msgid "Files found:" +msgstr "Fundne filer:" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "Anvender arkiv fra backup: %s" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "Den ønskede table engine (%s) er ikke tilgængelig - Skifter til MylSAM." + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "Dette ser ud til at være en flytning (backup'en er fra en side med en anden adresse/URL), men du valgte ikke muligheden for at søge-og-erstatte databasen. Dette er normalt en fejl." + +#: admin.php:4908 +msgid "file is size:" +msgstr "Filstørrelse:" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "Find mere information her." + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "Nogle filer er stadig ved at downloade eller blive bearbejdet - Vent venligst." + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "Denne backup-pakke er fra en anden side - Dette er ikke en genskabelse, men en flytning. Du behøver Migrator add-on for at få dette til at fungere." + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "Den anvendte tidszone er den samme som i dine WordPress-indstillinger." + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "Skriv i formatet TT:MM (f.eks. 14:22)." + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "%s upload mislykkedes" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "%s login-fejl" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "Du har ikke tilladelse til %s" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "Adgang til %s mislykkedes under sletning (se yderligere i log-filen)" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "Du har ikke tilladelse til %s (angående sletning)." + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "Dropbox fejl: %s (se log for detaljer)" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "Fejl - Kunne ikke downloade filen fra %s" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "Fejl - Denne fil eksisterer ikke på %s" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "%s Fejl" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "%s fejl - Kunne ikke uploade filen" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "%s fejl - kunne ikke genskabe stykkerne" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "%s tilladelse fejlede" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "Fejl: %s" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "Dette backup-arkiv eksisterer, men er ikke skrivbart." + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "Dette backup-arkiv eksisterer ikke." + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "Advarsel: %s" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "Sidste backup-job kørsel:" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "En meget stor fil blev fundet: %s (størrelse: %s Mb)" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "%s: Ikke læsbar fil - Kunne ikke blive backed up" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "%s tabellen har et stort antal rækker (%s) - Vi håber at din web-hosting udbyder giver dig nok ressourcer til at inkludere denne tabel i backup'en" + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "En fejl opstod ved lukning af den sidste database-fil" + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "Fundne advarsler:" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "Backup'en ser ud til at være succesfuld (med advarsler) og er nu færdig" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "Din ledige diskplads er meget lille - Der er kun %s Mb tilbage" + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "Ny side:" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "FEJL: Side URL er optaget." + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "Overflyttet side (far UpdraftPlus)" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "Angiv detaljer for, hvor denne nye site skal være i din multisite installation:" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "Nødvendig information for at fortsætte:" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "Aktiveret tema på netværk:" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "Anvendt plugin:" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "Undersøg dine fil-tilladelser: Kunne ikke skabe og tilføje arkivet:" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "Nogle servere angiver at krypteret FTP er mulig, men går så i time-out (efter lang tid), når du forsøger at anvende det. Hvis du oplever dette, skal du gå til \"Ekspert Muligheder\" (nedenfor) og slå SSL fra." + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "Din web-servers PHP installation indeholder ikke et nødvendigt modul (%s). Venligst kontakt din web hosting udbyders support og bed dem om at tilføje modulet." + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "Venligst tjek dine adgangsindstillinger." + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "Fejlen meddelt af %s var:" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "Venligst angiv den anmodede information og fortsæt derefter." + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "Kan ikke droppe tabeller, så sletter i stedet (%s)" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "Kan ikke oprette nye tabeller, så denne kommando (%s) springes over" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "Site information:" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "Din database bruger har ikke tilladelse til at oprette tabeller. Vi vil forsøge at genskabe ved simpelthen af tømme tabellerne, hvilket skulle virke, hvis a) du genskaber fra en WordPress version med samme database struktur, og b) dine importerede databaser ikke indeholder tabeller, der ikke allerede findes på det importerede site." + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "Advarsel:" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "Du arbejder via en WordPress multisite - men din backup er ikke af et multisite site." + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "Springer genskabelse af WordPress kerneværdier over, når der importeres et single site til en multisite installation. Hvis du havde noget vigtigt i dit WordPress arkiv, må du tilføje det manuelt fra zip-filen." + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "Din web-servers PHP installation inkluderede ikke en nødvendig (for %s) modul (%s). Venligst kontakt din webhosting-udbyders support og bed dem om at muliggøre dette." + +#: admin.php:596 +msgid "Close" +msgstr "Luk" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "Uventet respons:" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "Adskil hver adresse med et komma, for at sende til flere adresser." + +#: admin.php:576 +msgid "PHP information" +msgstr "PHP information" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "anvendelige zip fundet:" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "vis PHP information (phpinfo)" + +#: admin.php:2627 +msgid "Get it here." +msgstr "Køb det her." + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "Så prøv vores \"Migrator\" add-on. Efter at have anvendt det bare én gang, vil du have tjent købsprisen ind, sammenlignet med den nødvendige tid det vil tage at kopiere et site selv." + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "Ønsker du at flytte eller klone/kopiere et site?" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "Læs denne artikel for en trin-for-trin vejledning i, hvordan det gøres." + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "Migrate Site" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "Sletter... Vent venligst på, at kommunikationen med fjernlageret er fuldført." + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "Slet også fra fjernlageret" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "Seneste UpdraftPlus.com nyheder:" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "Klon/Flyt" + +#: admin.php:2304 +msgid "Premium" +msgstr "Premium" + +#: admin.php:2305 +msgid "News" +msgstr "Nyheder" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "Bakup sæt ikke fundet" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "%s - Kunne ikke lave backup af denne enhed; det tilsvarende arkiv eksisterer ikke (%s)" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "RSS link" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "Blog link" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "Abonnér på UpdraftPlus bloggen for at få seneste nyheder og tilbud" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "Tester %s indstillinger..." + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "Eller, du kan placere dem manuelt i dit UpdraftPlus arkiv (normalt wp-indhold/updraft), f.eks. via FTP, og benyt så \"rescan\"-linket ovenfor." + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "UpdraftPlus's debug mode er slået til. Du vil muligvis få debugging beskeder på denne side, ikke kun fra UpdraftPlus, men fra alle andre plugins, der er installeret. Vær sikker på, at den viste besked er fra UpdraftPlus, inden du kontakter support." + +#: admin.php:880 +msgid "Notice" +msgstr "Meddelelse" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "Fundne fejl:" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "Scanner igen (søger efter backup's, du manuelt har uploaded til det interne backup lager)..." + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "Søgning efter denne enhed er startet" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "Gem på" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "\"%s\" har ingen primær nøgle - Manuelle ændringer er nødvendige på rækken %s." + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "rækker: %d" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "Anvendt tid (sekunder):" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "Fejl:" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "SQL update-kommandoer kører:" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "Rettelser lavet:" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "Undersøgte rækker:" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "Undersøgte tabeller:" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "Kunne ikke få liste over tabeller" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "Database søgning og -erstatning: Erstat %s i backup dump med %s" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "Advarsel: Databasens URL (%s) er forskellig fra, hvad vi forventede (%)" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "Kan ikke ændre noget: URL'en %s eksisterer allerede." + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "Fejl: Uventet tomt parameter (%s, %s)" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "Denne mulighed blev ikke valgt." + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "Database: Søg og erstat sitets URL" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "Mislykkedes: Vi forstod ikke resultatet der blev returneret af %s operationen." + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "Mislykkedes: %s operationen kunne ikke starte." + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "(lær mere)" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "Søg og erstat site-placering i databasen (migrere)" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "Alle referenver til dette site lokation i databasen, vil blive erstattet med dit nuværende site-URL, som er: %s" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "Blog uploads" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "Must-use plugins" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "Du har ikke tilladelse til at tilgå denne side." + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "Du har ikke tilstrækkelige tilladelse til at få adgang til denne side." + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "Multisite installation" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "begyndende fra næste gang er det" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "Fejl: Port skal angives i hele tal." + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "password" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "brugernavn" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "værtsnavn" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "Hvor at skifte mappe til efter log in - Denne er ofte det samme som dit hjemme-bibliotek." + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "Sti til arkiv" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "Password" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "Port" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "Vært" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "%s Fejl: Kunne ikke downloade" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "Tjek dine fil-tilladelser: Kunne ikke oprette og skrive:" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "Ingen %s fundet" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "Eksplicit kryptering bruges som standard. For at tvinge til implicit kryptering (port 990), tilføj :990 til din FTP-server nedenfor." + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "Krypteret FTP er tilgængelig og vil automatisk blive prøvet først (før den falder tilbage til ikke-krypteret, hvis det ikke lykkes), medmindre du deaktiverer den ved hjælp af ekspert mulighederne. 'Test FTP-login' knappen vil fortælle dig, hvilken type forbindelse, der er i brug." + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "Ingen backup af %s mapper: Der blev intet fundet at sikkerhedskopiere" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "Vær forsigtig med, hvad du skriver - Hvis du indtaster noget, så vil der blive forsøgt skabt en zip-fil indeholdende hele din webserver." + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "Hvis du bruger det, skal du indtaste en absolut sti (det er ikke i forhold til din WordPress installation)." + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "Hvis du ikke ved, hvad denne mulighed går ud på, vil du sikkert ikke have den og bør derfor vælge den fra." + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "Angiv mappen:" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "Flere filer" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "WordPress kerne (herunder eventuelle tilføjelser til din WordPress rodmappe)" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "Ovenstående filer omfatter alt i en WordPress installation." + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "Overskriv wp-config.php" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "WordPress Core" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "Fejl: Vi kunne ikke indsætte en fil i denne mappe - Venligst tjek dine tilladelser." + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "Mislykket" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "WebDAV URL" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "Lokal skrivning mislykkedes: Kunne ikke downloade" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "Fejl ved åbning af fjern-fil: Download mislykkedes" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "Chunk %s: Der opstpd en %s fejl" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "Der blev ikke fundet %s indstillinger" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "Fejl: Vi er logget ind, men var ikke i stand til at oprette en fil i den givne mappe." + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "Succes: Vi loggede ind, og bekræftede vores evne til at skabe en fil i den givne mappe (login-type:" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "Fejl: Vi kunne ikke logge på med disse oplysninger." + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "Fejl: Der blev ikke angivet server-detaljer." + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "Skal allerede eksistere" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "Hvis du vil have kryptering (f.eks. ved lagring af følsomme data), er der en add-on er til rådighed." + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "Kun ikke-krypterede FTP understøttes af almindelig UpdraftPlus." + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "Dit %s konto navn: %s" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "da en del af de returnerede oplysninger ikke var som forventet - kan dit resultat variere" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "du har autentificeret din %s konto" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "der findes en add-on for dette." + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "Hvis du laver backup af adskillige sites i den samme Dropbox og vil organisere den i sub-foldere, så" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "Backup bliver gemt i" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "Behov for sub-foldere?" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "fejl: Kunne ikke oploade filer i %s (se log file for yderligere information)" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "Det lader ikke til, at du har adgang til Dropbox" + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "Kommunikationen med %s var ikke krypteret." + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "Kommunikationen med %s var krypteret." + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "Vi har fået adgang til gruppen, og vi kunne oprette filer i den." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "Vi har fået adgang til gruppen, men forsøget på at oprette en fil i den mislykkedes." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "Fejl" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "Fejl: Vi kunne ikke få adgang til eller oprette sådan en gruppe. Tjek venligst dine adgangsoplysninger, og hvis de er korrekt, så prøv et andet gruppenavn (da en anden %s bruger måske allerede har taget dit navn)." + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "Region" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "Fejl: Ingen gruppedetaljer blev oplyst." + +#: methods/s3.php:961 +msgid "API secret" +msgstr "API hemmelighed" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "Indtast kun et gruppenavn eller en gruppe og sti. Eksempler: mingruppe, mingruppe/minsti" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "%s lokation" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "%s sikkerhedsnøgle" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "%s adgangsnøgle" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "Hvis du ser fejl vedrørende SSL-certifikater, kan du få hjælp her." + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "Få din adgangs- og sikkerhedsnøgle fra din %s konsol, og vælg derefter et (globalt unikt - alle %s brugere) gruppe navn (bogstaver og tal) (og eventuelt en sti ) til brug for opbevaring. Der vil blive oprettet denne samling for dig, hvis den ikke allerede findes." + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "%s Fejl: Kunne ikke få adgang til samling %s. Tjek dine tilladelser og legitimationsoplysninger." + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "%s Fejl: Kunne ikke downloade %s. Tjek dine tilladelser og person-oplysninger." + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "%s genskabelses-fejl (%s): (Se logfilen for mere info)" + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "%s upload (%s): Genskabelse mislykkedes (se log for flere detaljer)." + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "%s del %s: Upload mislykkedes." + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "%s fejl: Filen %s blev forkortet uventet." + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "%s upload: Det mislykkedes af få upload-ID til multi upload - Se logfilen for flere detaljer." + +#: methods/email.php:69 +msgid "Note:" +msgstr "Note:" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "WordPress Backup" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "Vi fik adgang til mappen, og var i stand til at oprette filer i den." + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "Cloud Files fejl - vi fik adgang til mappen, men undlod at oprette en fil i den." + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "Fejl: Der blev ikke oplyst detaljer om mappe." + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "Brugernavn" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "API-nøgle" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "Fejl: Der blev ikke angivet et %s" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "UpdraftPlus's %s modul kræver %s. Vær venlig ikke at kontakte support; der er intet alternativ." + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "Cloud-filer mappe" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "Cloud-filer API nøgle" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "Cloud-filer brugernavn" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "UK" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "US (standard)" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "US eller UK Cloud" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "Du bør også læse denne vigtige FAQ." + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "Få din API nøgle fra din Rackspace Cloud konsol(læs vejledningen her), og vælg herefter et mappenavn til brug for opbevaring. Mappen vil blive oprettet for dig, hvis den ikke allerede findes." + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "Test %s indstillinger" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "Fejl ved download af fjern-fil: Kunne ikke downloade (" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "Fejl ved åbning af lokal fil: Kunne ikke downloade." + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "Cloud Files fejl - Upload af fil mislykkedes." + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "%s Fejl: Upload mislykkedes." + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "%s Fejl: Kunne ikke åbne den lokale fil." + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "Cloud Files fejl - undlod at oprette og skabe adgang til containeren" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "Cloud filer godkendelse mislykkedes" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "Efter du har gemt dine indstillinger (ved at klikke på 'Gem ændringer' nedenfor), så kom tilbage her en gang, og klik på dette link for at fuldføre autentificering med Google." + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "Godkend med Google." + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "Klient hemmelighed" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "Hvis Google senere viser dig beskeden \"Invalid_klient\", har du ikke angivet en gældende klient ID her." + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "Klient ID" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "Du skal tilføje følgende som gældende URI (under \"Flere indstillinger\") når du bliver spurgt." + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "Vælg 'Web Application\" som program-type." + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "Ved yderligere hjælp, inklusiv skærmbilleder, kan du følge dette link. Nedenstående beskrivelse er tilstrækkelig til mere erfarne brugere." + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "%s er et godt valg, fordi UpdraftPlus understøtter chunked uploads - Uanset hvor stor din hjemmeside er, kan UpdraftPlus uploade den lidt ad gangen uden at blive udsat for time-outs." + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "Kontoen er ikke godkendt." + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "Upload til %s mislykkedes" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "Konto fuld: Din %s konto har kun %d bytes tilbage, men filen, der skal uploades, er %d bytes" + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "Har endnu ikke har modtaget en adgangs-token fra Google - Du skal godkende din forbindelse til Google Drev." + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "du har autentificeret din %s konto." + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "Succes" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "Din %s forbrugskvote: %s %% brugt, %s tilgængelig" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "Godkendelse mislykkedes" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "Ingen refresh token blev modtaget fra Google. Det betyder ofte, at du har indtastet din klient hemmelighed fejlagtigt, eller at du endnu ikke har godkendt (se nedenfor), siden du har rettet det. Tjek det igen og følg så linket for at godkende det igen. Hvis dette ikke virker, så brug ekspert tilstand til at fjerne alle dine indstillinger, opret en ny Google-klient-id/hemmelig, og start igen." + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "følg dette link for at få det" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "%s support er tilgængelig som et add-on" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "Du har ikke dette UpdraftPlus %s add-on installeret - Få det fra %s" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "Det er nødvendigt at re-autentificere med %s, da dine eksisterende legitimationsoplysninger ikke fungerer." + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "OK" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "Tabel præfiks har ændret sig: Skiftende %s tabel-felt(er) i overensstemmelse hermed:" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "Færdig: Linjer behandlet: %d på %.2f sekunder" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "databaseforespørgslen der blev kørt var:" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "vil genskabes som:" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "Gammel tabel præfiks:" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "Backup af:" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "Database adgang: Direkte MySQL-adgang er ikke tilgængelig, så vi falder tilbage til wpdb (dette vil være betydeligt langsommere)" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "Kunne ikke åbne database-filen" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "Kunne ikke finde database-filen" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "Advarsel: PHP safe_mode er aktiv på din server. Timeout's er langt mere sandsynlige. Hvis dette sker, bliver du nødt til manuelt at gendanne filen via phpMyAdmin eller en anden metode." + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "wp-config.php fra sikkerhedskopi: Genopretter (efter brugers anmodning)" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "wp-config.php fra backuppen: vil blive genskabt som wp-config-backup.php" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "Kunne ikke skrive det dekrypterede database til filsystemet" + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "Kunne ikke oprette en midlertidig mappe" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "Det lykkedes ikke at slette arbejdsmappe efter gendannelse." + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "Kunne ikke slette gammelt bibliotek." + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "Rydder op i affald..." + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "Gendannelse af databasen. På et stort websted kan dette tage lang tid, hvilket kan ske, hvis din webudbyder har konfigureret din hosting at begrænse ressourcerne. I så fald skal du bruge en anden metode, såsom phpMyAdmin..." + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "Det lykkedes af dekryptere databasen." + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "Dekrypterer database (dette kan tage et stykke tid) ..." + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "Udpakker backup..." + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "Kopiering af denne enhed mislykkedes." + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "Backup-fil er ikke tilgængelig." + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "UpdraftPlus er ikke i stand til direkte at genskabe denne type. Den skal genoprettes manuelt." + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "Kunne ikke finde en af filerne til genoprettelse" + +#: admin.php:5009 +msgid "Error message" +msgstr "Fejlmeddelelse" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "Backup optegnelser indeholder ikke information om den korrekte størrelse af denne fil." + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "Arkivets forventede størrelse:" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "Hvis du opretter en anmodning om support, skal du medtage denne information:" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "AFBRUDT: Kunne ikke finde oplysninger om, hvilke enheder som skulle gendannes." + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "UpdraftPlus Genoprettelse: Status" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "Denne backup findes ikke i backup historik - genopretningen afbrudt. Tidsstempel:" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "Når du har trykket på denne knap, vil du få mulighed for at vælge, hvilke komponenter du ønsker at gendanne" + +#: admin.php:4572 +msgid "Press here to download" +msgstr "Klik her for at downloade" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "Slet dette backup sæt" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "Gode nyheder: Dit websteds kommunikation med %s kan krypteres. Hvis du ser nogen fejl som har med kryptering at gøre, så kig under \"Avancerede indstillinger\" for mere hjælp." + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "Din webservers PHP/Curl-installation understøtter ikke HTTPS-adgang. Vi kan ikke få adgang til %s uden denne mulighed. Kontakt venligst din hosts support. %s kræver Curl + https. Undlad venligst at lave en supportadmodning til os; der er ikke noget alternativ." + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "Din webservers PHP/Curl-installation understøtter ikke HTTPS-adgang. Kommunikation med %s vil være ukrypteret. Snak med din webhost for at høre om muligheden for installation af Curl/SSL for at få mulighed for kryptering (via en add-on)." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "Dit websteds PHP-installation bruger ikke et nødvendigt modul (%s). Kontakt venligst din hostingudbyder's support." + +#: admin.php:4062 +msgid "Save Changes" +msgstr "Gem ændringer" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "Vælger du denne indstilling sænkes dit sikkerhedsniveau idet at UpdraftPlus stopper med at bruge SSL til autentificering og krypteret forbindelse, hvor det er muligt. Bemærk, at nogle cloud lagerplads udbydere ikke tillader dette (f.eks Dropbox), så ved disse udbydere har denne indstilling ikke nogen effekt." + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "Deaktiver SSL helt, hvor det er muligt" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "Bemærk, at ikke alle cloud backup metoder nødvendigvis bruger SSL-godkendelse." + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "Vælger du denne indstilling sænkes dit sikkerhedsniveau idet at UpdraftPlus stopper med at kontrollere identiteten af krypterede sider, som den forbinder til (f.eks Dropbox, Google Drev). Det betyder, at UpdraftPlus vil bruge SSL kun til kryptering af trafik, og ikke til godkendelse." + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "Undlad at validere SSL-certifikater" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "Som standard bruger UpdraftPlus sin egne SSL-certifikater til at kontrollere identiteten af andre tjenester (dvs. for at sikre, at det taler til den rigtige Dropbox, Amazon S3, etc., og ikke en hacker). Vi holder disse ajour. Men hvis du får en SSL fejl, så vælger denne indstilling (der forårsager at UpdraftPlus bruger din webservers SSL i stedet for), hvilket måske kan løse problemet." + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "Brug denne servers SSL-certifikater" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "Hvis dette mislykkes, så tjek tilladelserne på din server eller ændre den til en anden mappe, der er skrivbare for din webserver." + +#: admin.php:3697 +msgid "click here" +msgstr "klik her" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "eller for at nulstille denne indstilling" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "Den definerede Backup mappe er skrivbar, hvilket er godt." + +#: admin.php:4009 +msgid "Backup directory" +msgstr "Backup mappe" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "Slet lokal backup" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "klik på denne for at vise nogle yderligere indstillinger; gør ikke dette, medmindre du har et problem eller er nysgerrig." + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "Vis Ekspert indstillinger" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "Ekspert indstillinger" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "Fejlsøgningstilstand" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "Avancerede / Fejlsøgningsindstillinger" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "Anmoder om start af backup..." + +#: admin.php:591 +msgid "Cancel" +msgstr "Annuller" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "Ingen" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "Vælg dit fjernlager" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "Manuel dekryptere en database backup fil" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "Databasekryptering sætning" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "Email" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "Ovenstående mapper er alting, undtagen selve WordPress kernen, som du kan downloade på ny fra WordPress.org." + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "Undlad disse:" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "Alle andre mapper fundet inde i wp-content" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "Medtag i fil backup" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "fx hvis din server er optaget om dagen, og du vil køre det om natten" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "For at rette det tidspunkt, hvor en backup bør finde sted," + +#: admin.php:3683 +msgid "Monthly" +msgstr "Månedlig" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "Hver fjortende dag" + +#: admin.php:3681 +msgid "Weekly" +msgstr "Ugentlig" + +#: admin.php:3680 +msgid "Daily" +msgstr "Daglig" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "Download log fil" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "Mappen eksisterer, men din webserver har ikke tilladelse til at skrive til den." + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "Mappen blev oprettet, men vi var nødt til at ændre dens filrettigheder til 777 (skrivbare for alle) for at kunne skrive til den. Du bør tjekke med din udbyder at dette ikke vil medføre nogen problemer" + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "Anmodningen til filsystemet om at oprette mappen mislykkedes." + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "Slet" + +#: admin.php:3418 +msgid "show log" +msgstr "vis log" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "Dette vil slette alle dine UpdraftPlus indstillinger - er du sikker på at du vil gøre dette?" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "tæller" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "N.B. Denne optælling er baseret på, hvad der var, eller ikke var udelukket sidste gang du gemte indstillinger." + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "Total (ukomprimeret) på disk data:" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "Nej" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "Ja" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "%s version:" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "Aktuelt hukommelsesforbrug" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "Max hukommelsesforbrug" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "Web server:" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "Tjek venligst UpdraftPlus Premium eller stand-alone multisite add-on." + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "Har du brug for WordPress Multisite support?" + +#: admin.php:2654 +msgid "Multisite" +msgstr "Multisite" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "Udfør en engangsbackup" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "Læs denne artikel af nyttige viden inden du gendanner." + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "Du kan søge og erstatte din database (for at migrere en hjemmeside til en ny placering / URL) med Migrator add-on - følg dette link for mere information" + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "%s genopretningsmuligheder:" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "Du bliver nødt til at gendanne det manuelt." + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "Følgende enhed kan ikke gendannes automatisk: \"%s\"." + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "Din web server har PHP's såkaldte safe_mode slået til." + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "Vælge komponenterne som skal gendannes" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "Gendannelse vil erstatte denne hjemmesides temaer, plugins, uploads, database og/eller andre indholdsmapper (alt efter dit valg og hvad backup sættet indeholder)." + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "Genskab backup fra" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "Genskab backup" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "Slet backup sæt" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "Download fejl: serveren sendte os et svar, som vi ikke forstod." + +#: admin.php:570 +msgid "You should:" +msgstr "Du skal:" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "Fejl:" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "beregner..." + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "UpdraftPlus - Upload backup filer" + +#: admin.php:3020 +msgid "refresh" +msgstr "opdater" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "Web-server diskplads i brug af UpdraftPlus" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "Google Drive" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "Hvis du bruger dette, så slå Turbo/Road mode fra." + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "Opera web browser" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "Flere opgaver:" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "Hent senest ændret logfil" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "(Der er ikke logget noget endnu)" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "Sidste Log Besked" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "Gendan" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "Backup Nu" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "Database" + +#: admin.php:229 +msgid "Files" +msgstr "Filer" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "Næste planlagte backup" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "På samme tid som fil-backuppen " + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "Intet planlagt i øjeblikket" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "Dette admin interface bruger meget JavaScript. Du er nødt til at aktivere det i din browser, eller at bruge en JavaScript-kompatibel browser." + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "JavaScript advarsel" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "Slet gamle mapper" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "Nuværende grænse er:" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "Din backup er blevet gendannet." + +#: admin.php:2310 +msgid "Version" +msgstr "Version" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "Udviklerens egen hjemmeside" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "Dine indstillinger er blevet slettet." + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "Backup mappe blev oprettet." + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "Backup mappe kunne ikke oprettes" + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "Fjernelse af gamle mapper mislykkedes af en eller anden grund. Du kan være nødt til at gøre manuelt." + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "Gamle mapper blev fjernet." + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "Fjern gamle mapper" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "Vend tilbage til konfiguration af UpdraftPlus" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "Handlinger" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "Gendannelse lykkes!" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "Forkert filnavn format - det ligner ikke en krypteret database fil oprettet af UpdraftPlus" + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "Forkert filnavn format - det ligner ikke en fil oprettet af UpdraftPlus" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "Ingen lokal kopi" + +#: admin.php:2072 +msgid "Download in progress" +msgstr "Downloading igang" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "Fil klar." + +#: admin.php:2043 +msgid "Download failed" +msgstr "Download mislykkede" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "Fejl" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "Kunne ikke finde det job - måske er det allerede færdig?" + +#: admin.php:1854 +msgid "Job deleted" +msgstr "Job slettet" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "OK. Du bør snart se aktivitet i \"Sidste Log Besked\" feltet nedenfor." + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "Der er ikke logget noget endnu" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "Se venligst denne FAQ, hvis du har problemer med sikkerhedskopiering." + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "Dit website er hostet ved hjælp af %s webserver." + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "UpdraftPlus understøtter ikke officielt versioner af WordPress før %s. Det kan virke for dig, men hvis det ikke gør, så skal du være opmærksom på, at der ikke er support, før du opgraderer WordPress." + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "Du har mindre end %s ledig plads på disken, som UpdraftPlus er konfigureret til at bruge til at oprette backups på. UpdraftPlus kunne godt løbe tør for plads. Kontakt din udbyder af din server (f.eks din webudbyder) for at løse dette problem." + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "Advarsel" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "Add-Ons / Pro Support" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "Indstillinger" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "Tilladte filer" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "Kunne ikke oprette %s zip. se logfilen for mere information." + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "Uendelig rekursion: se din log for mere information" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "Tjek UpdraftPlus.Com for hjælp, add-ons og support" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "Brug for endnu flere funktioner og support? Tjek UpdraftPlus Premium" + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "Hjælp UpdraftPlus ved at give en positiv anmeldelse på wordpress.org" + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "Kan du lide UpdraftPlus og kan undvære et minut?" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "Kan du oversætte? Ønsker du at forbedre UpdraftPlus ved at oversætte til dit sprog?" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "Fil ikke fundet" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "Dekrypteringsnøglen som blev anvendt:" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "Dekryptering mislykkedes. Den mest sandsynlige årsag er, at du har brugt den forkerte nøgle." + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "Dekryptering mislykkedes. Database-filen er krypteret, men du har ingen krypteringsnøgle indtastet." + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "Kunne ikke åbne backup filen for skrivning" + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "Kunne ikke gemme backup historikken, fordi vi ikke har nogen backup array. Sikkerhedskopiering mislykkedes sandsynligvis." + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "Kunne ikke læse mappen" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "Backup mappen (%s) er ikke skrivbar, eller findes ikke." + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "WordPress backup er fuldført" + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "Sikkerhedskopieringen forsøgte at blive færdig, men uden held" + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "Sikkerhedskopieringen lykkedes og er nu færdig" + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "Krypteringsfejl ved kryptering af databasen. Kryptering afbrudt." + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "Kunne ikke oprette filer i backup mappen. Backup afbrudt - kontroller dine UpdraftPlus indstillinger." + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "Andre" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "Uploads" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "Temaer" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "Plugins" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "Ingen logfiler blev fundet." + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "Logfilen kunne ikke læses." + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "UpdraftPlus meddelelse:" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "UpdraftPlus Backups" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-el.mo b/plugins/updraftplus/languages/updraftplus-el.mo new file mode 100644 index 0000000..1ae5ec3 Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-el.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-el.po b/plugins/updraftplus/languages/updraftplus-el.po new file mode 100644 index 0000000..a13b777 --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-el.po @@ -0,0 +1,6109 @@ +# Translation of UpdraftPlus in Greek +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-09-23 16:12:06+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: el_GR\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "Η διεύθυνση IP σας:" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "Για να αρθούν όλα τα εμπόδια, παρακαλώ πηγαίνετε εδώ." + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "το πρόσθετο %s δε βρέθηκε" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "ή για να το αποκαταστήσετε χειροκίνητα" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "Το γεγονός αυτό καθιστά την πιθανότητα να εμφανιστεί τάιμ-άουτ πολύ πιο πιθανή. Συνιστάται να απενεργοποιήσετε την ασφαλή λειτουργία, ή να επαναφέρετε μόνο ένα πράγμα κάθε φορά." + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "Για να διορθώσετε αυτό το πρόβλημα πηγαίνετε εδώ." + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "Το OptimizePress 2.0 κωδικοποιεί τα περιεχόμενό της, έτσι η αναζήτηση/αντικατάσταση δεν λειτουργεί." + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "Από την εγκατάσταση της PHP λείπει η ενότητα OpenSSL ως εκ τούτου, αυτό μπορεί να πάρει μερικά λεπτά, αν δε γίνει τίποτα μέχρι τότε, τότε θα πρέπει είτε να δοκιμάσετε ένα μικρότερο μέγεθος κλειδιού, ή να ρωτήσετε την εταιρεία που έχετε το web hosting σας πώς να ενεργοποιήσετε αυτήν την ενότητα PHP στην εγκατάστασή σας." + +#: addons/webdav.php:91 +msgid "Path" +msgstr "Διαδρομή" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "Αφήστε το κενό για να χρησιμοποιήσετε το προεπιλεγμένο (80 για το WebDAV, 443 για webdavs)" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "Εισάγετε μια διαδρομή στο παρακάτω πεδίο." + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "Ένα όνομα κεντρικού υπολογιστή δεν μπορεί να περιέχει κάθετο (slash)." + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "Πρωτόκολλο (SSL ή όχι)" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "Αυτή η διεύθυνση URL του WebDAV δημιουργείται συμπληρώνοντας τις παρακάτω επιλογές. Αν δεν ξέρετε τις λεπτομέρειες, τότε θα πρέπει να ρωτήσετε τον παροχέα του WebDAV σας." + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "Ελήφθη ως απάντηση πως δεν υπάρχουν δεδομένα. Αυτό φανερώνει συνήθως ένα πρόβλημα σύνδεσης δικτύου (π.χ. ένα εξωτερικό τείχος προστασίας ή ένα υπερφορτωμένο δίκτυο) μεταξύ αυτής της ιστοσελίδας και του UpdraftPlus.com." + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "Το κλειδί πρόσβασης AWS φαίνεται να είναι λάθος (τα έγκυρα κλειδιά πρόσβασης %s αρχίζουν με \"AK\")" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "Δε βρέθηκαν ρυθμίσεις - παρακαλούμε πηγαίνετε στην καρτέλα Ρυθμίσεις και ελέγξτε τις ρυθμίσεις σας" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "Λήψη αντιγράφου ασφαλείας χρησιμοποιώντας %s;" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "Όλο το πρόσθετο Premium" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "Μόνο αυτό το πρόσθετο" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "Ασίας Ειρηνικού (Βομβάη)" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "Μειωμένος πλεονασμός" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "Κανονικό (σπάνια πρόσβαση)" + +#: admin.php:2310 +msgid "FAQs" +msgstr "Συχνές ερωτήσεις" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "Άγνωστη ενημέρωση της κατάστασης \"%s\"" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "Μια νέα έκδοση από αυτό το πρόσθετο είναι διαθέσιμη." + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "Το πρόσθετο είναι ενημερωμένο." + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "Έλεγχος για ενημερώσεις" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "Δεν υπάρχει διαθέσιμη αρχείο καταγραφής." + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "Αυτό είναι χρήσιμο εάν ο πίνακας ελέγχου του διακομιστή δεν μπορεί να έρθει σε επαφή με την εισερχόμενη κίνηση από την παρούσα ιστοσελίδα (όπως για παράδειγμα στην περίπτωση που αυτή η ιστοσελίδα φιλοξενείται στο δημόσιο Internet, αλλά ο πίνακας ελέγχου του UpdraftCentral είναι σε localhost, ή σε Intranet, ή εάν αυτή η ιστοσελίδα έχει firewall), ή εάν ο πίνακας ελέγχου της ιστοσελίδας δεν έχει πιστοποιητικό SSL." + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "Περισσότερες πληροφορίες..." + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "Χρησιμοποιήστε την εναλλακτική μέθοδο για την πραγματοποίηση μιας σύνδεσης με τον πίνακα ελέγχου." + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "Πίνακας ελέγχου στο" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "Μέγεθος κλειδιού: %d bits" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "Το δημόσιο κλειδί εστάλη στο: " + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "Απoτυχία ανοίγματος του καταλόγου (ελέγξτε τα δικαιώματα αρχείων και την ιδιοκτησία): %s" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "%s: μη αναγνώσιμο αρχείο - δεν μπορεί να συμπεριληφθεί στο αντίγραφο ασφαλείας (ελέγξτε τα δικαιώματα αρχείων και την ιδιοκτησία)" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "Δημιουργία κλειδιού" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "πιο αργό, δυνατότερο" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "προτεινόμενο" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "%s bytes" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "γρηγορότερο (δυνατότητα λειτουργίας σε εγκαταστάσεις με αργό PHP)" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "εύκολο να σπάσει, πολύ γρήγορο" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "%s bits" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "Μέγεθος κλειδιού κρυπτογράφησης:" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "Εισάγετε το όνομα που έχετε επιλέξει" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "Δημιουργήστε ένα κλειδί: δώστε σε αυτό το κλειδί ένα μοναδικό όνομα (π.χ. κάτι που να σχετίζεται πως είναι γι' αυτή την ιστοσελίδα) και στη συνέχεια πατήστε το κουμπί \"Δημιουργία κλειδιού\":" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "Η μεταφόρτωση αναμένεται να αποτύχει: το όριο του %s για κάθε μεμονωμένο αρχείο είναι %s, ενώ αυτό το αρχείο είναι %s GB (%d bytes)" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "Αυτό μερικές φορές προκαλείται από ένα τείχος προστασίας - δοκιμάστε να απενεργοποιήσετε το SSL στις ρυθμίσεις για προχωρημένους, και προσπαθήστε ξανά." + +#: methods/ftp.php:355 +msgid "login" +msgstr "σύνδεση" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "Θα πρέπει να γνωρίζετε ότι οι διακομιστές ταχυδρομείου τείνουν να έχουν τα όρια μεγέθους, συνήθως γύρω στα %s MB, αντίγραφα ασφαλείας με μέγεθος μεγαλύτερο από αυτά τα όρια πιθανότατα δεν θα φτάσει." + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "Αυτό το αρχείο αντιγράφων ασφαλείας έχει μέγεθος %s MB - η προσπάθεια να το στείλετε αυτό μέσω ηλεκτρονικού ταχυδρομείου είναι πιθανό να αποτύχει (ελάχιστοι e-mail servers επιτρέπουν συνημμένα αρχεία αυτού του μεγέθους). Αν ναι, θα πρέπει να σκεφτείτε να κάνετε χρήση μιας διαφορετικής μεθόδου απομακρυσμένης αποθήκευσης." + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "Μέγεθος: %s MB" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "Άλλο (παρακαλούμε διευκρινίστε - δηλαδή τη σελίδα όπου έχετε εγκαταστήσει έναν πίνακα ελέγχου του UpdraftCentral)" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "δηλαδή αν έχετε ένα λογαριασμό εκεί" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "Το UpdraftPlus θα χωρίσει τα αντίγραφα ασφαλείας των αρχείων όταν υπερβαίνουν αυτό το μέγεθος. Η προεπιλεγμένη τιμή είναι %s megabytes. Να είστε προσεκτικοί για να αφήσετε κάποιο περιθώριο, αν ο web-server σας έχει αποκλειστικό όριο μέγεθος (π.χ. τα 2 GB / 2048 MB όριο σε κάποιους εξυπηρετητές/συστήματα αρχείων 32-bit)." + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "Δωρεάν 1GB στο UpdraftPlus Vault" + +#: admin.php:2604 +msgid "Now" +msgstr "Τώρα" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "Θα πρέπει να ενεργοποιήσετε το %s για να κάνετε τα permalinks (π.χ. %s) να δουλεύουν" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "(πατήστε στα εικονίδια για να επιλέξετε ή να αποεπιλέξετε)" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "%s ανά έτος" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "ή (ετήσια έκπτωση)" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "Δεν βρέθηκε σύνδεση στο Vault για αυτή τη σελίδα (μήπως έχει μετακινηθεί;). Αποσυνδεθείτε και και συνδεθείτε." + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "Το συγκεκριμένο αρχείο δεν βρέθηκε ή δεν μπορεί να διαβάσει." + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "UpdraftCentral (Απομακρυσμένη Διαχείριση)" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "δημιουργία..." + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "Δείτε τα πρόσφατα αρχεία καταγραφής του UpdraftCentral" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "URL της μητρικής σελίδας" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "Εισάγετε μια περιγραφή" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "Περιγραφή" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "Δημιουργία νέου κλειδιού" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "Διαγραφή..." + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "Δημιουργήθηκε:" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "Πρόσβαση αυτής της σελίδας ως χρήστης:" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "Δεν έχουν δημιουργηθεί κλειδιά ακόμα." + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "Λεπτομέρειες" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "Περιγραφή κλειδιού" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "Ένα κλειδί δημιουργήθηκε, αλλά η προσπάθεια για να το καταχωρήσετε με %s απέτυχε - παρακαλώ δοκιμάστε ξανά αργότερα." + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "Έχει καταχωρηθεί μια μη έγκυρη διεύθυνση URL " + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "Κλείσιμο..." + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "Αυτή η σύνδεση φαίνεται πως έχει ήδη γίνει." + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "Θα πρέπει να επισκεφτείτε αυτό το λινκ στο ίδιο πρόγραμμα περιήγησης και στην ίδια συνεδρία, όπως όταν δημιουργήσατε το κλειδί. " + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "Θα πρέπει να επισκεφτείτε αυτό το URL στο ίδιο πρόγραμμα περιήγησης και στην ίδια συνεδρία, όπως όταν δημιουργήσατε το κλειδί." + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "Δεν είστε συνδεδεμένοι σε αυτή την ιστοσελίδα του WordPress στον φυλλομετρητή σας." + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "Το κλειδί στο οποίο αναφέρεται ήταν άγνωστο." + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "Η σύνδεση με το UpdraftCentral δεν πραγματοποιήθηκε. " + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "Η σύνδεση με το UpdraftCentral έγινε επιτυχώς." + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "Σύνδεση στο UpdraftCentral " + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "Η δημιουργία αντιγράφων ασφαλείας ματαιώθηκε από τον χρήστη" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "Οι ρυθμίσεις σας έχουν αποθηκευτεί." + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "Συνολικό μέγεθος αντιγράφου ασφαλείας:" + +#: admin.php:3420 +msgid "stop" +msgstr "στοπ" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "Η δημιουργία αντιγράφων ασφαλείας έχει ολοκληρωθεί" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "Ρυθμίσεις διαγραφής" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "επαναφορά" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "αυτά τα σετ αντιγράφων ασφαλείας" + +#: admin.php:3092 +msgid "this backup set" +msgstr "αυτό το σετ αντιγράφων ασφαλείας" + +#: admin.php:3020 +msgid "calculate" +msgstr "υπολογισμός" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "Θα πρέπει να αποθηκεύσετε τις αλλαγές σας για να διασφαλιστεί ότι χρησιμοποιούνται για τη δημιουργία των αντιγράφων ασφαλείας σας." + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "Ζητήσαμε να διαγραφεί το αρχείο, αλλά δεν μπορέσαμε να καταλάβουμε την απάντηση του server" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "Παρακαλώ εισάγετε μια έγκυρη διεύθυνση URL" + +#: admin.php:601 +msgid "Saving..." +msgstr "Αποθήκευση..." + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "Σφάλμα: ο server μας έστειλε μια απάντηση που δεν μπορούμε να καταλάβουμε." + +#: admin.php:557 +msgid "Fetching..." +msgstr "Δημιουργία..." + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "Ασίας Ειρηνικού (Σεούλ)" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "URL μεταφορτώσεων:" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "Μη αναμενόμενο σφάλμα: καμία κατηγορία '%s' δε βρέθηκε (η εγκατάσταση του UpdraftPlus φαίνεται πως είναι κατεστραμμένη - προσπαθήστε να κάνετε εγκατάσταση ξανά)" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "Το απαραίτητο PHP module %s δεν είναι εγκατεστημένο - επικοινωνήστε με την εταιρεία παροχής web hosting σας για να το ενεργοποιήσετε." + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "Παράκαμψη πίνακα %s: αυτός ο πίνακας δε θα αποκατασταθεί" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "Για να εισαγάγετε μια συνηθισμένη ιστοσελίδα του WordPress σε περισσότερους από έναν τόπους απαιτεί την εγκατάσταση %s." + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "Παρακαλώ διαβάστε αυτό το σύνδεσμο για σημαντικές πληροφορίες σχετικά με αυτή τη διαδικασία." + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "Θα εισαχθεί σαν να είναι μια καινούρια ιστοσελίδα." + +#: admin.php:2884 +msgid "Dismiss" +msgstr "Απόρριψη" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "Παρακαλούμε συμπληρώστε τις απαιτούμενες πληροφορίες." + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "Διαβάστε περισσότερα..." + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "Σημείωση: Αυτή η επιλογή επηρεάζει μόνο την αποκατάσταση της βάσης δεδομένων και τις μεταφορτώσεις - τα άλλα στοιχεία του αρχείου (όπως τα πρόσθετα) της WordPress μοιράζονται στο σύνολο του δικτύου." + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "μπορεί να περιλαμβάνονται ορισμένα στοιχεία σε όλη την ιστοσελίδα" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "Όλες τις σελίδες" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "Ποια ιστοσελίδα να επαναφέρουμε" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "Επαναφορά μόνο της ιστοσελίδας με id=%s: ενώ θα γίνει αφαίρεση άλλων στοιχείων (εφόσον υπάρχουν) από το αποσυμπιεσμένο αντίγραφο ασφαλείας" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "ΣΦΑΛΜΑ: παρουσιάστηκε πρόβλημα κατά τη δημιουργίας της σελίδας." + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "Σφάλμα κατά τη δημιουργία νέας σελίδας στην επιλεγμένη διεύθυνση σας:" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "Απαραίτητα στοιχεία για την αποκατάσταση αυτού του αντιγράφου ασφαλείας δεν δόθηκαν (%s)" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "Χαρακτηριστικό εισαγόμενο περιεχόμενο στον χρήστη" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "Θα πρέπει να χρησιμοποιήσετε πεζά γράμματα ή αριθμούς για την τοποθεσία της σελίδας, μόνο." + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "Η λειτουργία αυτή δεν είναι συμβατή με %s" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "Εισαγωγή μιας ιστοσελίδας σε μια εγκατάσταση multisite" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "άλλα περιεχόμενα από το wp-content" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "Πυρήνας της WordPress" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "Επιλέξατε το %s να συμπεριληφθεί στην αποκατάσταση - αυτό δεν μπορεί / δεν πρέπει να γίνεται κατά την εισαγωγή μιας σελίδας σε ένα δίκτυο." + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "Καλέστε τη δράση της WordPress:" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "Οι αποθηκευμένες ρυθμίσεις σας επηρεάζουν και τι θα συμπεριληφθεί στο αντίγραφο ασφαλείας - π.χ. αρχεία που αποκλείονται." + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "Παράκαμψη: Το αρχείο έχει ήδη αποκατασταθεί." + +#: admin.php:3860 +msgid "File Options" +msgstr "Επιλογές Αρχείου" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "Αποστολή του Αντιγράφου Ασφαλείας σας στο Χώρο Απομακρυσμένης Αποθήκευσης" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "Χρονοδιάγραμμα αντιγράφου ασφαλείας βάσης δεδομένων" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "Χρονοδιάγραμμα αντιγράφου ασφαλείας κερματισμένων αρχείων " + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "Χρονοδιάγραμμα αντιγράφου ασφαλείας αρχείων" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "Στη συνέχεια, θα πρέπει να εισάγετε ξανά όλες τις ρυθμίσεις σας. Μπορείτε επίσης να το κάνετε αυτό πριν από την απενεργοποίηση/απεγκατάσταση του UpdraftPlus αν το επιθυμείτε." + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "Αυτό το κουμπί θα διαγράψει όλες τις ρυθμίσεις του UpdraftPlus καθώς και τις πληροφορίες προόδου για την δημιουργία αντιγράφων ασφαλείας που βρίσκεται σε εξέλιξη (αλλά όχι οποιοδήποτε από τα υπάρχοντα αντίγραφα ασφαλείας σας από το σημείο αποθήκευσής σας)." + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "Αποστολή αυτού του αντιγράφου ασφαλείας στο σημείο απομακρυσμένης αποθήκευσης" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "Δείτε το UpdraftPlus Vault." + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "Δεν έχετε ακόμα κανένα λογαριασμό σε σημείο απομακρυσμένης αποθήκευσης;" + +#: admin.php:5157 +msgid "settings" +msgstr "ρυθμίσεις" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "Το αντίγραφο ασφαλείας δεν θα αποσταλεί σε κάθε απομακρυσμένη αποθήκευση - καμία δεν έχει αποθηκευτεί στο %s" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "Συμπερίληψη αρχείων στο αντίγραφο ασφαλείας" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "Συμπερίληψη της βάσης δεδομένων στο αντίγραφο ασφαλείας" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "Συνέχιση αποκατάστασης" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "Έχετε μια ημιτελή διαδικασία αποκατάστασης η οποία άρχισε πριν από %s." + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "Ημιτελής αποκατάσταση" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "%s λεπτά, %s δευτερόλεπτα" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "Δημιουργία αντιγράφων ασφαλείας του Περιεχόμενου και Χρονοδιάγραμμα" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "Premium / Επεκτάσεις" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "Δεν βρέθηκαν επαρκείς πληροφορίες σχετικά με τη λειτουργία αποκατάστασης που βρίσκεται σε εξέλιξη." + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "Λήψη" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "Επιλέξατε να δημιουργήσετε αντίγραφο ασφαλείας αρχείων, αλλά δεν έχουν επιλεγεί αρχεία για το σκοπό αυτό" + +#: admin.php:442 +msgid "Extensions" +msgstr "Επεκτάσεις" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "Προηγμένα εργαλεία" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "Τοποθεσία φακέλου" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "Σημειώστε ότι η Google δεν υποστηρίζει κάθε κατηγορίας αποθήκευσης σε κάθε θέση - θα πρέπει να διαβάσετε την τεκμηρίωσή τους για να ενημερωθείτε για τις τρέχουσες διαθεσιμότητες." + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "Αυτή η ρύθμιση ισχύει μόνο όταν ένας καινούριος φάκελος δημιουργείται." + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "Θα πρέπει να χρησιμοποιήσετε ένα όνομα φακέλου που να είναι μοναδικό, για όλους τους %s χρήστες." + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "Μη συγχέετε το %s με το %s - είναι διαφορετικά πράγματα." + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "Δεν έχετε πρόσβαση σε αυτό το φάκελο" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "Δυτική Ευρώπη" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "Ανατολική Ασία - Ειρηνικός" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "Δυτικές Ηνωμένες Πολιτείες" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "Ανατολικές Ηνωμένες Πολιτείες" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "Ανατολικές Ηνωμένες Πολιτείες" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "Κεντρικές Ηνωμένες Πολιτείες" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "Ευρωπαϊκή Ένωση" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "Ασία Ειρηνικός" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "τοποθεσία πολυ-περιοχής" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "Ηνωμένες Πολιτείες" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "Nearline" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "Ανθεκτικό μειωμένης διαθεσιμότητας" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "Κανονικό" + +#: addons/azure.php:524 +msgid "container" +msgstr "φάκελος" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "Μπορείτε να εισαγάγετε τη διαδρομή του οποιουδήποτε %s εικονικού φακέλου που θέλετε να χρησιμοποιήσετε εδώ." + +#: addons/azure.php:523 +msgid "optional" +msgstr "προαιρετικό" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "Πρόθεμα" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "Δείτε τις οδηγίες της Microsoft σχετικά με την ονομασία του φακέλου ακολουθώντας αυτό το σύνδεσμο." + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "Αν το %s δεν υπάρχει ήδη, τότε θα δημιουργηθεί." + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "Εισάγετε τη διαδρομή του %s που θέλετε να χρησιμοποιήσετε εδώ." + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "Αυτή δεν είναι η σύνδεσή σας στο Azure σας - δείτε τις οδηγίες αν χρειάζεστε περισσότερες πληροφορίες." + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "Όνομα Λογαριασμού" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "Azure" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "Δημιουργία διαπιστευτήριων Azure στην κονσόλα προγραμματιστή του Azure σας." + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "Αδυναμία δημιουργίας του φακέλου" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "Αδυναμία πρόσβασης στο φάκελο" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "Για να ολοκληρωθεί η μετανάστευση/κλωνοποίηση, θα πρέπει τώρα να συνδεθείτε με την απομακρυσμένη τοποθεσία και να αποκαταστήσετε το σύνολο αντιγράφων ασφαλείας." + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "ο πίνακας με τις επιλογές δεν βρέθηκε" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "δεν βρέθηκαν επιλογές ή πίνακας με sitemeta" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "Η δημιουργία του αντιγράφου ασφαλείας της βάσης δεδομένων φαίνεται πως έχει αποτύχει." + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "Ο κατάλογος αποθήκευσης του αντιγράφου ασφαλείας δεν είναι εγγράψιμος (ή ο χώρος του δίσκου είναι πλήρης) - η δημιουργία αντιγράφου ασφαλείας της βάσης δεδομένων αναμένεται να αποτύχει σύντομα." + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "είναι απαραίτητο για μερικούς πάροχους απομακρυσμένης αποθήκευσης" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "Δεν έχει εγκατασταθεί" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "Κατηγορία αποθήκευσης" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "Δείτε τις οδηγίες της Google σχετικά με την ονοματοθεσία των φακέλων ακολουθώντας αυτό το σύνδεσμο." + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "Τα ονόματα των φακέλοων θα πρέπει να είναι μοναδικό σε επίπεδο εφαρμογής. Αν ο φάκελος δεν υπάρχει ήδη, τότε θα δημιουργηθεί." + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "Εισάγετε το όνομα του φακέλου %s επιθυμείτε να χρησιμοποιήσετε εδώ." + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "Φάκελος" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "Αλλιώς, μπορείτε να το αφήσετε κενό." + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "Σημείωση: Αυτό είναι απαραίτητο μόνο αν δεν έχετε ήδη δημιουργήσει το φάκελο και θέλετε το UpdraftPlus να το δημιουργήσει για εσάς." + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "Εισάγετε την ταυτότητα του σχεδίου %s που επιθυμείτε να χρησιμοποιήσετε εδώ." + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "Ακολουθήστε αυτό το σύνδεσμο για την Google API Console σας, και εκεί ενεργοποιήστε το API της αποθήκευσης και δημιουργήσετε ένα Αναγνωριστικό Πελάτη στο Τμήμα Πρόσβασης API." + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "Θα πρέπει να εισάγετε την Ταυτότητα Σχεδίου για να μπορέσετε να δημιουργήσετε ένα νέο φάκελο." + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "Ταυτότητα Σχεδίου" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "Θα πρέπει να αποθηκεύσετε και να επικυρώσετε τις ρυθμίσεις σας πριν μπορέσετε να τις ελέγξετε." + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "Δεν έχετε αποκτήσει ακόμη τεκμήριο πρόσβασης από το Google - θα πρέπει να επιτρέψετε ή να επιτρέψετε εκ νέου τη σύνδεσή σας στο Google Cloud." + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "Δεν έχετε πρόσβαση σε αυτόν το φάκελο." + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "Google Cloud" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "%s Εξαίρεση Υπηρεσίας." + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "Το UpdraftPlus δεν έχει εγκατασταθεί πλήρως - παρακαλώ απεγκαταστήσετε και εγκαταστήσετε το ξανά. Το πιο πιθανό είναι πως κάποια δυσλειτουργία συνέβη στη WordPress κατά την αντιγραφή των αρχείων του πρόσθετου." + +#: restorer.php:767 +msgid "Deferring..." +msgstr "Αναβολή..." + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "ή να ρυθμίσετε πιο πολύπλοκα προγράμματα" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "Είστε σίγουροι πως επιθυμείτε να διαγράψετε το/τα %s από το UpdraftPlus;" + +#: admin.php:3081 +msgid "Deselect" +msgstr "Αποεπιλογή" + +#: admin.php:3080 +msgid "Select all" +msgstr "Επιλογή όλων" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "Ενέργειες σχετικά με τα επιλεγμένα αντιγράφα ασφαλείας" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "Πατήστε εδώ για να αναζητήσετε στα σημεία απομακρυσμένης αποθήκευσης σας για οποιαδήποτε υπάρχοντα σύνολα αντιγράφων ασφαλείας (από οποιαδήποτε ιστοσελίδα, εάν είναι αποθηκευμένα στον ίδιο φάκελο)." + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "Επεξεργασία..." + +#: admin.php:634 +msgid "For backups older than" +msgstr "Για αντίγραφα ασφαλείας παλαιότερα από" + +#: admin.php:633 +msgid "week(s)" +msgstr "εβδομάδα(ες)" + +#: admin.php:632 +msgid "hour(s)" +msgstr "ώρα(ες)" + +#: admin.php:631 +msgid "day(s)" +msgstr "ημέρα(ες)" + +#: admin.php:630 +msgid "in the month" +msgstr "μέσα στο μήνα" + +#: admin.php:629 +msgid "day" +msgstr "ημέρα" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "(τόσο όσα επιθυμείτε)" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "Προσθέστε ένα πρόσθετο κανόνα διατήρησης..." + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "Αυτή η βάση δεδομένων θα πρέπει να αναπτυχθεί σε μια έκδοση %s της MySQL ή μεταγενέστερη." + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "Αυτό το πρόβλημα προκαλείται από την προσπάθεια να αποκατασταθεί μια βάση δεδομένων σε μια πολύ παλιά έκδοση της MySQL η οποία είναι ασύμβατη με τη βάση δεδομένων προέλευσης." + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "Δεν έχετε επί του παρόντος κανένα ποσοστό χώρου στο UpdraftPlus Vault" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "Θα πρέπει να αναβαθμίσετε τη MySQL να είναι σε θέση να χρησιμοποιήσετε αυτή τη βάση δεδομένων." + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "Η βάση δεδομένων των αντιγράφων ασφαλείας χρησιμοποιεί χαρακτηριστικά της MySQL που δεν είναι διαθέσιμα στην παλιά έκδοση της MySQL (%s) πάνω στην οποία τρέχει αυτή η σελίδα." + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "Δεν υπάρχουν διαφημιστικοί σύνδεσμοι στη σελίδα ρυθμίσεων του UpdraftPlus" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "Ο κατάλογος του UpdraftPlus στο wp-content/plugins έχει κενά διαστήματα; Αυτό δεν αρέσει στη WordPress. Θα πρέπει να μετονομάσετε το φάκελο σε wp-content/plugins/updraftplus για να διορθώσετε αυτό το πρόβλημα." + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "Δεν ξέρετε τη διεύθυνση ηλεκτρονικού ταχυδρομείου σας ή έχετε ξεχάσει τον κωδικό σας;" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "Βάλτε το email και τον κωδικό σας εδώ για να συνδεθείτε με το UpdraftPlus.Com:" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "Διαβάστε τις Συχνές Ερωτήσεις εδώ." + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "Κάντε κλικ σ' αυτό το κουτάκι για να χρησιμοποιήσετε την κρυπτογράφηση του εξυπηρετητή της Amazon" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "Κρυπτογράφηση από τον εξυπηρετητή" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "Αν έχετε ξεχάσει τον κωδικό σας τότε πηγαίνετε εδώ για να τον αλλάξετε στο updraftplus.com." + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "Πηγαίνετε στις ρυθμίσεις της τοποθεσίας απομακρυσμένης αποθήκευσης για να συνδεθείτε." + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "%s έχει επιλεγεί για απομακρυσμένη αποθήκευση, αλλά δεν είστε προς το παρόν συνδεδεμένοι." + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "Οι πληρωμές μπορούν να γίνουν σε δολάρια, ευρώ ή λίρες στερλίνες, μέσω πιστωτικής κάρτας ή του PayPal." + +#: admin.php:607 +msgid "Update quota count" +msgstr "Ενημέρωση καταμέτρησης των ποσοστώσεων" + +#: admin.php:606 +msgid "Counting..." +msgstr "Αρίθμηση..." + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "Αποσύνδεση..." + +#: admin.php:603 +msgid "Connecting..." +msgstr "Σύνδεση..." + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "Ανανέωση τρέχουσας κατάστασης" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "Αποκτήστε περισσότερο χώρο" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "Τρέχουσα χρήση:" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "Μπορείτε να αποκτήσετε περισσότερο χώρο εδώ" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "%s Σφάλμα: Δεν έχετε επαρκή χώρο διαθέσιμο (%s) για να ανεβάσετε αυτό το αρχείο (%s)." + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "Αποσύνδεση" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "Ποσοστό:" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "Ιδιοκτήτης του Vault" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "Εξαιρετικά! Δεν υπάρχει κάτι άλλο που πρέπει να ρυθμίσετε." + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "Αυτή η σελίδα είναι συνδεδεμένη στο UpdraftPlus Vault." + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "Δεν είστε συνδεδεμένοι στο UpdraftPlus Vault." + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "Πηγαίνετε εδώ για βοήθεια" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "E-mail" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "Πίσω..." + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "Οι συνδρομές μπορούν να ακυρωθούν ανά πάσα στιγμή." + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "%s ανά τέταρτο" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "Διαβάστε περισσότερα γι' αυτό εδώ." + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "Το UpdraftPlus Vault είναι χτισμένο στα κορυφαία στον κόσμο από άποψη υποδομής κέντρα δεδομένων της Amazon, με αποθήκευση δεδομένων που πετυχαίνει 99,999999999% αξιοπιστία." + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "Έχετε ήδη αγοράσει χώρο;" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "Εμφάνιση επιλογών" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "Κάνετε χρήση για πρώτη φορά;" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "Πατήστε το κουμπί για να ξεκινήσετε." + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "Το UpdraftPlus Vault κάνει την αποθήκευση να είναι αξιόπιστη, εύκολη στη χρήση και με εξαιρετική τιμή." + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "Έχετε μια συνδρομή για το UpdraftPlus Vault που δεν έχει ανανεωθεί και η περίοδος χάριτος έχει λήξει. Σε λίγες ημέρες, τα αποθηκευμένα δεδομένα σας θα διαγραφούν μόνιμα. Εάν δεν θέλετε να συμβεί αυτό, τότε θα πρέπει να ανανεώσετε το συντομότερο δυνατόν τη συνδρομή σας." + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "Έχετε μια εκπρόθεσμη συνδρομή για το UpdraftPlus Vault. Προς το παρόν έχετε λίγες ημέρες περιόδου χάριτος πριν την αναστολή της υπηρεσίας αυτής, και θα χάσετε τον υπολειπόμενο χρόνο καθώς και την πρόσβασή σας σε δεδομένα που είναι αποθηκευμένα μέσα σε αυτό. Παρακαλούμε να κάντε ανανέωση της συνδρομής σας το συντομότερο δυνατόν!" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "Η αγορά που κάνατε για το UpdraftPlus Premium έγινε πάνω από ένα χρόνο πριν. Θα πρέπει να ανανεώσετε την αγορά σας άμεσα για να αποφευχθεί η απώλεια 12 μήνων του ελεύθερου χώρου αποθήκευσης που διαθέτει κάθε υφιστάμενος πελάτης του UpdraftPlus Premium." + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "Updraft Vault" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "Η διαγραφή απέτυχε:" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "Η ρουτίνα zip επέστρεψε αυτό το μήνυμα: %s." + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "Χωρίς αυτή την άδεια, το UpdraftPlus δεν μπορεί να διαγράψει τα αντίγραφα ασφαλείας - θα πρέπει επίσης να ρυθμίσετε τη «διατήρηση» πολύ ψηλά για την πρόληψη λαθών διαγραφής." + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "Επιτρέψτε τη διαγραφή" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "Χωρίς αυτή την άδεια, δεν μπορείτε να κατεβάσετε άμεσα ή να κάνετε αποκατάσταση χρησιμοποιώντας το UpdraftPlus, και αντ 'αυτού θα πρέπει να επισκεφθείτε την ιστοσελίδα της AWS." + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "Επιτρέψτε τη μεταφόρτωση" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "Αν η αποστολή απευθείας από ιστοσελίδα σε ιστοσελίδα δεν λειτουργεί για σας, τότε υπάρχουν άλλες τρεις μέθοδοι - δοκιμάστε μια από αυτές τα αντ' αυτού." + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "Θα πρέπει να ελέγξετε ότι η απομακρυσμένη τοποθεσία είναι online, δεν υπάρχει τείχος προστασίας, δεν έχει ενεργοποιημένες τυχόν μονάδες ασφαλείας που μπορεί να εμποδίζουν την πρόσβαση, έχει την έκδοση %s του UpdraftPlus ή μεταγενέστερη ενεργή και ότι τα στοιχεία έχουν εισαχθεί σωστά." + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "Υπάρχοντα κλειδιά" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "Δεν έχουν δημιουργηθεί ακόμα κλειδιά για να επιτρέψουν σε απομακρυσμένες σελίδες να συνδεθούν." + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "Το νέο σας κλειδί:" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "Για να επιτραπεί σε μια άλλη σελίδα να στείλει ένα αντίγραφο ασφαλείας σε αυτή τη σελίδα, δημιουργήστε ένα κλειδί, και στη συνέχεια πατήστε το κουμπί «Μετεγκατάσταση» στην περιοχή αποστολής, και αντιγράψετε και να επικολλήσετε το κλειδί εκεί." + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "Έτσι, για να πάρετε το κλειδί για την απομακρυσμένη τοποθεσία, ανοίξτε το παράθυρο «Μετεγκατάσταση» σε εκείνη την τοποθεσία, μετακινηθείτε προς τα κάτω, και μπορείτε να δημιουργήσετε ακόμα ένα εκεί." + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "Τα κλειδιά για αυτή τη σελίδα δημιουργήθηκαν στο παρακάτω τμήμα, αυτό που μόλις κάνατε κλικ." + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "Θα πρέπει να κάνετε αντιγραφή κι επικόλληση την καταχώρηση τώρα - δεν είναι δυνατή η εμφάνισή της ποτέ ξανά." + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "Η καταχώρηση δημιουργήθηκε επιτυχώς." + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "Μια καταχώρηση με αυτό το όνομα υπάρχει ήδη, θα πρέπει να χρησιμοποιήσετε ένα μοναδικό όνομα." + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "Επίσης στείλετε αυτό το αντίγραφο ασφαλείας στις ενεργές τοποθεσίες απομακρυσμένης αποθήκευσης" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "Η διεύθυνση της ιστοσελίδας που κάνετε αποστολή (%s) μοιάζει με μια τοπική ιστοσελίδα ανάπτυξης. Εάν θέλετε να κάνετε αποστολή από ένα εξωτερικό δίκτυο, είναι πιθανό ότι ένα τείχος προστασίας θα μπλοκάρει αυτή τη διαδικασία." + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "η ιστοσελίδα δεν βρέθηκε" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "Τα δεδομένα του αντιγράφου ασφαλείας θα σταλούν στο:" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "Επαναφορά ενός υπάρχοντος συνόλου αντιγράφων ασφαλείας σε αυτόν τον ιστότοπο" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "Αυτός ο δικτυακός τόπος δεν έχει δημιουργήσει ποτέ αντίγραφα ασφαλείας για επαναφορά." + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "Η λήψη αντιγράφων ασφαλείας γίνεται από %s" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "Αυτή η μέθοδος αποθήκευσης δεν επιτρέπει τη λήψη" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "(τα αρχεία αντιγράφων ασφαλείας έχουν εισαχθεί από την απομακρυσμένη τοποθεσία)" + +#: admin.php:4423 +msgid "Site" +msgstr "Ιστοσελίδα" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "Το σύνολο των αντιγράφων ασφαλείας έχει αποσταλεί στο χώρο απομακρυσμένης αποθήκευσης - δεν είναι διαθέσιμο για download." + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "Θα πρέπει να βεβαιωθείτε ότι αυτό είναι πραγματικά ένα σύνολο αντιγράφων ασφαλείας που προορίζεται για χρήση σε αυτή την ιστοσελίδα, πριν να κάνετε την επαναφορά (εξετάστε προσεκτικά το ενδεχόμενο μήπως είναι ένα σύνολο αντιγράφων ασφαλείας μιας άσχετης ιστοσελίδας)." + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "Αυτό το σύνολο αντιγράφων ασφαλείας δε θεωρείται από το UpdraftPlus πως έχει δημιουργηθεί από την τρέχουσα εγκατάσταση WordPress, αλλά είτε βρέθηκε στην τοποθεσία της απομακρυσμένης αποθήκευσης ή στάλθηκε από μια απομακρυσμένη τοποθεσία." + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "Δοκιμή σύνδεσης..." + +#: admin.php:617 +msgid "Deleting..." +msgstr "Διαγραφή..." + +#: admin.php:616 +msgid "key name" +msgstr "όνομα μεταβλητής" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "Παρακαλώ δώστε σ' αυτή τη μεταβλητή ένα όνομα (π.χ. αναφέρεται πως η σελίδα είναι είναι για):" + +#: admin.php:611 +msgid "Creating..." +msgstr "Δημιουργία..." + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "Ή κατεβάστε ένα αντίγραφο ασφαλείας από την τοποθεσία απομακρυσμένης αποθήκευσης" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "Κάντε επικόλληση το κλειδί εδώ" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "Πώς μπορώ να πάρω το κλειδί μιας σελίδας;" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "Για να προσθέσετε μια τοποθεσία ως προορισμό για την αποστολή των αντιγράφων ασφαλείας, εισάγετε το κλειδί αυτής της τοποθεσίας πιο κάτω." + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "Ή στείλτε ένα αντίγραφο ασφαλείας σε μια άλλη σελίδα" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "Αποστολή" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "Αποστολή στη σελίδα:" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "Δεν έχουν ακόμη προστεθεί σελίδες λήψεως." + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "Είναι για την αποστολή αντιγράφων ασφαλείας στην ακόλουθη ιστοσελίδα: " + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "Το κλειδί προστέθηκε επιτυχώς." + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "Το κλειδί που καταχωρήθηκε δεν ανήκει σε μια απομακρυσμένη τοποθεσία (ανήκει σε αυτή εδώ)." + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "Το κλειδί που καταχωρήθηκε ήταν κατεστραμμένο - παρακαλώ δοκιμάστε ξανά. " + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "Το κλειδί που καταχωρήθηκε έχει λανθασμένο μήκος - παρακαλώ δοκιμάστε ξανά." + +#: addons/migrator.php:1861 +msgid "key" +msgstr "κλειδί" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "Σχεδόν όλοι οι διακομιστές FTP θέλουν παθητική λειτουργία (passive mode) αλλά αν χρειάζεστε ενεργητική λειτουργία (active mode) τότε καταργήστε την επιλογή αυτή." + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "Παθητική λειτουργία" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "Απομακρυσμένη διαδρομή" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "FTP password" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "FTP login" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "FTP server" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "Το Migrator του UpdraftPlus τροποποιεί τη λειτουργία αποκατάστασης κατάλληλα, για να τοποθετήσει τα δεδομένα αντιγράφων ασφαλείας στη νέα σελίδα." + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "Μια διαδικασία «μετανάστευσης» είναι τελικά η ίδια με μια αποκατάσταση - αλλά με τη χρήση αντιγράφων ασφαλείας αρχείων που εισάγετε από άλλη σελίδα." + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "Προσθήκη σελίδας" + +#: admin.php:608 +msgid "Adding..." +msgstr "Προσθήκη..." + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "Το αίτημά σας δεν μπορεί να ικανοποιηθεί. Μήπως έχετε ήδη χρησιμοποιήσει αυτή την αγορά κάπου αλλού ή η περίοδος για την οποία έχετε πληρώσει για λήψη από updraftplus.com έχει λήξει;" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "Για να χρησιμοποιήσετε αυτό το αντίγραφο ασφαλείας, ο διακομιστής της βάσης δεδομένων πρέπει να υποστηρίζει το σύνολο χαρακτήρων %s." + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "πηγαίνετε εδώ για να αλλάξετε τον κωδικό πρόσβασής σας στο updraftplus.com." + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "Εάν έχετε ξεχάσει τον κωδικό σας" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "Πηγαίνετε εδώ για να εισάγετε εκ νέου τον κωδικό πρόσβασής σας." + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "Αφού πατήσετε αυτό το κουμπί, θα σας δοθεί η δυνατότητα να επιλέξετε ποια στοιχεία θέλετε να χρησιμοποιηθούν για τη μετανάστευση" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "Για να εισαγάγετε ένα σύνολο αντιγράφων ασφαλείας, μεταβείτε στην καρτέλα \"υπαρχόντων αντιγράφων ασφαλείας\"" + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "Έχετε κάνει αλλαγές στις ρυθμίσεις σας και δεν τις έχετε αποθηκεύσει." + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "N.B. %s δεν είναι case-sensitive." + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "Αν OneDrive σας δείχνει αργότερα το μήνυμα \"unauthorized_client\", τότε δεν έχετε εισάγετε ένα έγκυρο αναγνωριστικό πελάτη εδώ." + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "Για μεγαλύτερη βοήθεια, καθώς και στιγμιότυπα οθόνης, ακολουθήστε αυτό το σύνδεσμο." + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "Δημιουργήστε διαπιστευτήρια στο OneDrive στην κονσόλα προγραμματιστή του OneDrive σας." + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "Θα πρέπει να προσθέσετε το ακόλουθο ως εξουσιοδοτημένη ανακατεύθυνση URI στην κονσόλα του OneDrive σας (στις \"Ρυθμίσεις API») όταν ρωτηθείτε" + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "%s η αυθεντικοποίηση απέτυχε:" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "OneDrive" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "Παρακαλούμε κάντε εκ νέου σύνδεση με το λογαριασμό σας %s." + +#: methods/email.php:73 +msgid "configure it here" +msgstr "κάντε διαμόρφωση εδώ" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "Για να διαγράψετε αυτό το μπλοκ, παρακαλούμε πηγαίνετε εδώ." + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "Θυμηθείτε να αποθηκεύσετε τις ρυθμίσεις σας." + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "Τώρα χρησιμοποιείτε ένα λογαριασμό χρήστη ΙΑΜ για να αποκτήσετε πρόσβαση το bucket σας." + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "S3 bucket" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "Κίνα (Πεκίνο) (περιορισμένη)" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "Βόρεια Αμερική (Σάο Πάολο)" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "Ασία - Ειρηνικός (Τόκιο)" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "Ασία - Ειρηνικός (Σίδνεϊ)" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "Ασία - Ειρηνικός (Σιγκαπούρη)" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "ΕΕ (Φρανκφούρτη)" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "ΕΕ (Ιρλανδία)" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "US Government West (restricted)" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "US West (N. California)" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "US West (Oregon)" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "US Standard (default)" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "περιοχή αποθήκευσης S3" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "Νέο IAM όνομα χρήστη" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "Μυστικό κλειδί διαχειριστή" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "Κλειδί πρόσβασης διαχειριστή" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "Στη συνέχεια, αυτά τα χαμηλότερων δυνατοτήτων διαπιστευτήρια πρόσβασης μπορεί να χρησιμοποιηθούν, αντί για την αποθήκευση των κλειδιών που χρησιμοποιείτε ως διαχειριστής." + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "Αυτά θα χρησιμοποιηθούν για να δημιουργήσετε ένα νέο χρήστη και ένα ζεύγος κλειδιών με χρήση της πολιτικής ΙΑΜ το οποίο θα επιτρέπει μόνο να αποκτήσετε πρόσβαση στο υποδεικνυόμενο bucket." + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "Εισάγετε τη το κωδικό διαχειριστή/μυστικά κλειδιά για την πρόσβασή σας στο Amazon S3 (αυτό πρέπει να είναι ένα ζεύγος κλειδιών με δικαιώματα για τη δημιουργία νέων χρηστών και buckets), και ένα νέο (μοναδικό) όνομα για το νέο χρήστη και ένα όνομα buckets." + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "Δημιουργία νέου ΙΑΜ χρήστη και S3 bucket" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "Κρυφό Κλειδί: %s" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "Κλειδί Πρόσβασης: %s" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "Απέτυχε εφαρμογής της Πολιτικής Χρήστη" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "Η λειτουργία δημιουργίας Κλειδιού Πρόσβασης για το χρήστη απέτυχε" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "Αποτυχία δημιουργίας Κλειδιού Πρόσβασης για το χρήστη" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "Η λειτουργία ΙΑΜ απέτυχε (%s)" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "Σύγκρουση: αυτός ο χρήστης υπάρχει ήδη" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "Αποτυχία: Δεν μπορέσαμε με επιτυχία να αποκτήσουμε πρόσβαση ή να δημιουργήσουμε ένα τέτοιο bucket. Παρακαλούμε ελέγξτε τα διαπιστευτήρια πρόσβασης σας και αν αυτά είναι σωστα τότε δοκιμάστε ένα άλλο όνομα bucket (μπορεί ένας άλλος χρήστης AWS να έχει ήδη χρησιμοποιήσει το όνομά σας)." + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "Η επαλήθευση ταυτότητας AWS απέτυχε" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "Δεν μπορείτε να δημιουργήσετε νέο χρήστη AWS, δεδομένου ότι η παλιά εργαλειοθήκη AWS είναι σε χρήση." + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "Θα πρέπει να εισάγετε ένα bucket" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "Θα πρέπει να εισάγετε ένα νέο όνομα χρήστη ΙΑΜ" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "Θα πρέπει να εισάγετε το μυστικό κλειδί ενός διαχειριστή " + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "Θα πρέπει να εισάγετε ένα κλειδί πρόσβασης διαχειριστή" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "Εάν έχετε ένα διαχειριστή AWS, τότε μπορείτε να χρησιμοποιήσετε αυτόν τον οδηγό για να δημιουργήσετε γρήγορα έναν νέο AWS (ΙΑΜ) χρήστη με πρόσβαση μόνο σε αυτόν το bucket (και όχι ολόκληρο το λογαριασμό σας)" + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "Για να δημιουργήσετε ένα νέο ΙΑΜ υπο-χρήστη και κλειδί πρόσβασης που έχει πρόσβαση μόνο σε αυτόν το bucket, χρησιμοποιήστε αυτό το πρόσθετο." + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "Για προσωπική υποστήριξη, τη δυνατότητα να αντιγράψετε ιστοσελίδες, περισσότερους προορισμούς αποθήκευσης, κρυπτογραφημένα αντίγραφα ασφαλείας για ασφάλεια, πολλαπλούς προορισμούς δημιουργίας αντιγράφων ασφαλείας, καλύτερες αναφορές, χωρίς διαφημίσεις και πολλά περισσότερα, ρίξτε μια ματιά στην έκδοση premium της UpdraftPlus - το πιο δημοφιλές πρόσθετο λήψης αντιγράφων ασφαλείας στον κόσμο." + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "Ειδήσεις του UpdraftPlus, υψηλής ποιότητας εκπαιδευτικό υλικό για προγραμματιστές του WordPress και ιδιοκτήτες ιστοσελίδων, και γενικά ειδήσεις για το WordPress. Μπορείτε να απο-εγγραφείτε οποιαδήποτε χρονική στιγμή." + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "Η διαδρομή της μεταφόρτωσης (%s) έχει αλλάξει κατά τη διάρκεια της μετανάστευσης - επαναφορά (στο: %s)" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "Αυτό πιθανότατα σημαίνει ότι μοιράζεστε ένα διακομιστή με μια παραβιασμένη από χάκερς ιστοσελίδα η οποία έχει χρησιμοποιηθεί σε προηγούμενες επιθέσεις." + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "Φαίνεται ότι η διεύθυνση IP του web server σας (%s) είναι μπλοκαρισμένη." + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "Το UpdraftPlus.com απάντησε με \"Δεν επιτρέπεται η πρόσβαση\"." + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "Premium πρόσθετα WooCommerce" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "Δωρεάν πρόσθετο ασφαλείας δύο παραγόντων" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "Περισσότερα Ποιοτικά Πρόσθετα" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "Πηγαίνετε στο κατάστημα." + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "Συγκρίνετε με την δωρεάν έκδοση" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "UpdraftPlus Premium" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "Ακολουθήστε αυτό το σύνδεσμο για να εγγραφείτε." + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "Δωρεάν Newsletter" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "Σας ευχαριστούμε που δημιουργείτε αντίγραφα ασφαλείας με το UpdraftPlus!" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "Να απορριφθεί (για %s μήνες)" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "(στον ίδιο χρόνο όπως και τα αντίγραφα ασφαλείας των αρχείων)" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "Δεν έχει ολοκληρωθεί καμία διαδικασία λήψης αντιγράφου ασφαλείας" + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "Το πρώτο βήμα είναι να απεγκαταστήσετε τη δωρεάν έκδοση." + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "Αν έχετε κάνει μια αγορά από UpdraftPlus.Com, ακολουθήστε αυτό το σύνδεσμο για τις οδηγίες για να εγκαταστήσετε την αγορά σας." + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "Εγγραφή στο newsletter" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "Ακολουθήστε αυτό το σύνδεσμο για να εγγραφείτε στο newsletter του UpdraftPlus." + +#: admin.php:2831 +msgid "Personal support" +msgstr "Προσωπική υποστήριξη" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "Κλείδωμα πρόσβασης ρυθμίσεων" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "Υποστήριξη Network/Multisite" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "Καθορισμός χρόνου λήψης αντιγράφου ασφαλείας" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "Προγραμματισμένη λήψη αντιγράφων ασφαλείας" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "Επαναφορά αντιγράφων ασφαλείας από άλλα πρόσθετα" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "Κρυπτογράφηση βάσης δεδομένων" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "Αποστολή αντιγράφων ασφαλείας σε πολλούς απομακρυσμένους προορισμούς" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "Αυτόματη δημιουργία αντιγράφων ασφαλείας κατά την ενημέρωση της WP/πρόσθετων/ θεμάτων" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "Προηγμένες λειτουργίες αναφοράς" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "Βασική αναφορά με email" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "Μετεγκατάσταση / κλωνοποίηση (δηλαδή αντίγραφο) ιστοσελίδων" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "Κρατήστε αντίγραφο ασφαλείας έξτρα αρχείων και βάσεων δεδομένων" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "WebDAV, Copy.Com, SFTP/SCP, FTP με δυνατότητα κρυπτογράφησης" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "Dropbox, Google Drive, FTP, S3, Rackspace, Email" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "Δημιουργία αντιγράφου ασφαλείας σε απομακρυσμένο χώρο αποθήκευσης" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "Επαναφορά από αντίγραφο ασφαλείας" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "Έχει μεταφραστεί σε πάνω από %s γλώσσες" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "Δημιουργία αντιγράφων ασφαλείας των αρχείων και βάσεων δεδομένων της WordPress" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "Αγοράστε το τώρα!" + +#: admin.php:2718 +msgid "Get it from" +msgstr "Προμηθευτείτε το από" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "Κάντε μια ερώτηση πριν αγοράσετε" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "Χρήσιμες ερωτήσεις πριν την αγορά" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "Πλήρης κατάλογος χαρακτηριστικών" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "Προμηθευτείτε το UpdraftPlus Premium" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "Αυτήν τη στιγμή, χρησιμοποιείτε τη δωρεάν έκδοση του UpdraftPlus από το wordpress.org." + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Δημιουργία αντιγράφων ασφαλείας (κατά περίπτωση) πρόσθετων, θεμάτων και της βάσης δεδομένων της WordPress με το UpdraftPlus πριν από την ενημέρωση" + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "%s Σφάλμα: Αποτυχία στην εκκίνηση" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "ή" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "ή" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "Δεν έχετε επιλέξει κάποια συστατικά για την αποκατάσταση. Παρακαλώ επιλέξτε τουλάχιστον ένα και στη συνέχεια προσπαθήστε ξανά." + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "Είναι αποδεκτά τα κλειδιά PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY." + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "Υποστηρίζεται η συνέχιση ανεβάσματος σε συνέχειες για το SFTP, αλλά όχι για το SCP. Έτσι, αν χρησιμοποιείτε SCP τότε θα πρέπει να εξασφαλίσει ότι ο διακομιστής σας επιτρέπει διαδικασίες PHP ώστε να τρέξει αρκετή ώρα προκειμένου να ανεβάσετε ένα μεγάλο αρχείο αντιγράφου ασφαλείας σας." + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "ομάδα χρηστών" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "Αυτό πρέπει να είναι ένα v2 (Keystone) πιστοποιητικό URI, το v1 (Swauth) δεν υποστηρίζεται." + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "η διεύθυνση διαχειριστή του δικτυακού σας τόπου" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "Επιλέξτε αυτό το πλαίσιο για να σας αποστέλλεται μια βασική έκθεση στο" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "Χειροκίνητα" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "Ένα σφάλμα (%s) συνέβη:" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "Αλλαγή Ρυθμίσεων Κλειδώματος" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "Οποιοδήποτε άλλο αρχείο/κατάλογος στο διακομιστή σας που θέλετε να δημιουργήσετε αντίγραφο ασφαλείας" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "Για ακόμη περισσότερες δυνατότητες και προσωπική υποστήριξη, ελέγξτε" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "Η δημιουργία του πίνακα απέτυχε - ίσως επειδή δεν υπάρχει άδεια να γράφονται πίνακες και ο πίνακας ήδη υπάρχει, θα συνεχίσει" + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "Εκκαθάριση προσωρινής αποθήκευσης σελίδων (%s)..." + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "Φράση αποκρυπτογράφησης Βάσης Δεδομένων" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "Αυτόματη δημιουργία αντιγράφων ασφαλείας πριν από την ενημέρωση" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "πυρήνας του WordPress (μόνο)" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "Για υποστήριξη των υπηρεσιών ξεκλειδώματος, παρακαλούμε επικοινωνήστε με το πρόσωπο το οποίο διαχειρίζεται το UpdraftPlus για εσάς." + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "Για να αποκτήσετε πρόσβαση στις ρυθμίσεις του UpdraftPlus, παρακαλούμε εισάγετε τον κωδικό ξεκλειδώματος" + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "Λανθασμένος κωδικός πρόσβασης" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "Ξεκλείδωμα" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "Σε αντίθετη περίπτωση, θα εμφανίζεται ο προεπιλεγμένος σύνδεσμος." + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "Όποιος βλέπει την οθόνη κλειδώματος θα εμφανίζεται αυτό το URL για υποστήριξη - εισάγετε μια διεύθυνση ιστοσελίδας ή μια διεύθυνση ηλεκτρονικού ταχυδρομείου." + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "URL υποστήριξης" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "Απαίτηση κωδικού πρόσβασης και πάλι μετά" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "%s εβδομάδες" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "1 εβδομάδα" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "%s ώρες" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "1 ώρα" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "Παρακαλούμε σιγουρέψτε το γεγονός πως έχετε σημειώσει κάπου τον κωδικό πρόσβασης!" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "Κλείδωμα πρόσβασης στη σελίδα ρυθμίσεων του UpdraftPlus" + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "Οι ρυθμίσεις αποθηκεύτηκαν." + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "Ο κωδικός πρόσβασης του διαχειριστή έχει αλλάξει. " + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "Ο κωδικός πρόσβασης του διαχειριστή έχει οριστεί. " + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "Ο κωδικός πρόσβασης του διαχειριστή έχει αφαιρεθεί." + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "(μάθετε περισσότερα για αυτή τη σημαντική επιλογή)" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "Σημειώστε ότι αφού έχετε απαιτήσει τα πρόσθετά σας, μπορείτε να καταργήσετε τον κωδικό πρόσβασης σας (αλλά όχι η διεύθυνση ηλεκτρονικού ταχυδρομείου) από τις παρακάτω ρυθμίσεις, χωρίς να επηρεάζεται η πρόσβαση αυτού του δικτυακού τόπου για ενημερώσεις." + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "Δείτε το Αρχείο Καταγραφής" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "Δημιουργία αντιγράφων ασφαλείας δεδομένων (κάντε κλικ για να κατεβάσετε)" + +#: admin.php:4368 +msgid "Backup date" +msgstr "Ημερομηνία λήψης αντιγράφου ασφαλείας" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "και να διατηρηθούν τόσα προγραμματισμένα αντιγράφα ασφαλείας" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "οριακό αντίγραφο ασφαλείας; βασικό αντίγραφο ασφαλείας: %s" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "Για την ικανότητα να κλειδώσετε την πρόσβαση στις ρυθμίσεις UpdraftPlus με έναν κωδικό πρόσβασης, αναβαθμίστε το λογαριασμός σας σε UpdraftPlus Premium." + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "Ανεβάστε τα αρχεία στο UpdraftPlus." + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "Το κουμπί «Δημιουργία Αντιγράφων ασφαλείας\" είναι απενεργοποιημένο διότι ο κατάλογος αποθήκευσης των αντιγράφων ασφαλείας σας δεν είναι εγγράψιμος (πηγαίνετε στην καρτέλα «Ρυθμίσεις» όπου θα βρείτε τη σχετική επιλογή)." + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "Ετικέτα αντιγράφων ασφαλείας:" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "Σφάλμα: απροσδόκητο αποτυχία ανάγνωσης αρχείων" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "ελέγξτε το αρχείο καταγραφής σας για περισσότερες λεπτομέρειες." + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "ο web hosting λογαριασμός σας μοιάζει να είναι πλήρης: παρακαλούμε δείτε: %s" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "Συνέβη ένα σφάλμα κατά τη συμπίεση zip" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "Η ετικέτα σας για αυτό το αντίγραφο ασφαλείας (προαιρετικό)" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "%s δεν επιτρέπει την έγκριση σε σελίδες που φιλοξενούνται σε απευθείας διευθύνσεις IP. Θα πρέπει να αλλάξετε τη διεύθυνση του δικτυακού σας τόπου (%s) για να μπορέσετε να χρησιμοποιήσετε το %s για την αποθήκευση." + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "Το email που έχετε εισάγει δεν αναγνωρίζεται από το UpdraftPlus.Com" + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "Το email σας είναι έγκυρο, αλλά ο κωδικός σας δεν αναγνωρίζεται από το UpdraftPlus.Com." + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "Πρέπει να εισάγετε και email και κωδικό" + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "Για να συνεχίσετε, πατήστε το πλήκτρο «Δημιουργία αντιγράφων ασφαλείας τώρα». Στη συνέχεια, παρακολουθήστε το πεδίο «Τελευταίο Μήνυμα Καταγραφής» για να δείτε την εξέλιξη." + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "Εάν θέλετε να επαναφέρετε ένα multisite αντίγραφο ασφαλείας, θα πρέπει πρώτα να ρυθμίσετε αντίστοιχα και την εγκατάσταση του WordPress σας ως multisite." + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "Το αντίγραφο ασφαλείας σας είναι από μια multisite εγκατάσταση του WordPress, αλλά αυτό το site δεν είναι. Μόνο η πρώτη σελίδα του δικτύου θα είναι προσβάσιμη." + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "έχει ήδη γίνει" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "παραλείπεται (δεν υπάρχει στη λίστα)" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "Αναζήτηση και αντικατάσταση πίνακα:" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "Πληκτρολογήστε μια λίστα διαχωρισμένη με κόμματα, αλλιώς, αφήστε κενό για όλους τους πίνακες." + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "Αυτοί οι πίνακες μόνο" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "Γραμμές ανά δέσμη" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "Δεν έχετε ακόμη συνδεθεί με το λογαριασμό σας του UpdraftPlus.Com." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "Θα πρέπει να συνδεθείτε για να λαμβάνετε τις μελλοντικές ενημερώσεις για το UpdraftPlus." + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "Όλες οι αιτήσεις υποστήριξης που έχουν να κάνουν με το %s πρέπει να γίνουν προς την εταιρεία web hosting σας." + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "Θα πρέπει να συνεχίσετε μόνο αν δεν μπορείτε να ενημερώσετε τον τρέχοντα server και είστε βέβαιοι (ή διατεθειμένοι να διακινδυνεύσετε) ότι τα πρόσθετα/θέματα/κλπ. είναι συμβατά με την παλαιότερη %s έκδοση." + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "Αυτός είναι πολύ νεότερος από τον server στον οποίο τώρα κάνετε αποκατάσταση (έκδοση %s)." + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "Η ιστοσελίδα σε αυτό το αντίγραφο ασφαλείας έτρεχε σε ένα διακομιστή με έκδοση %s of %s. " + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "LinkedIn" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "Google+" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "Facebook" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "Twitter" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "Το UpdraftPlus είναι στα κοινωνικά δίκτυα - δείτε μας εδώ:" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "Γιατί το βλέπω αυτό;" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "Η θέση αυτού του καταλόγου έχει οριστεί στις ρυθμίσεις για προχωρημένους, στην καρτέλα Ρυθμίσεις." + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "Πατήστε εδώ για να κοιτάξετε μέσα στον κατάλογο του UpdraftPlus σας (στο χώρο φιλοξενίας της ιστοσελίδας σας) για νέα σετ αντιγράφων ασφαλείας που έχετε ανεβάσει." + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "Έναρξη λήψης αντιγράφου ασφαλείας" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "Χρησιμοποιείτε το διακομιστή %s, αλλά δεν φαίνεται να έχει φορτωθεί η μονάδα %s." + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "Θα πρέπει να συμβουλευτείτε τον πάροχο φιλοξενίας των ιστοσελίδων σας για να μάθετε πως να ρυθμίσετε τα δικαιώματα για ένα πρόσθετο του WordPress ώστε να έχει δικαιώματα εγγραφής και να γράψει στον κατάλογο." + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "Μπορείτε να αγνοήσετε τελείως τα πάντα εδώ, εκτός αν έχετε κάποιο πρόβλημα." + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "Αυτό το αρχείο δεν μπορεί να μεταφορτωθεί" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "Μπορείτε να βρείτε περισσότερες λεπτομέρειες γι' αυτό στις Ρυθμίσεις." + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "Υποστηριζόμενα πρόσθετα λήψης αντιγράφων ασφαλείας: %s" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "Ήταν αυτό ένα αντίγραφο ασφαλείας που δημιουργήθηκε από ένα διαφορετικό πρόσθετο για λήψη αντιγράφων ασφαλείας; Αν ναι, τότε ίσως να πρέπει πρώτα να το μετονομάσετε, έτσι ώστε να μπορεί να αναγνωριστεί - παρακαλώ ακολουθήστε τον παρακάτω σύνδεσμο." + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "Πες μου περισσότερα για δημιουργία αντιγράφων ασφαλείας βήμα - βήμα" + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "Περιορισμός μνήμης" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "αποκατάσταση" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "Πίνακας που θα εκπέσει εμμέσως: %s" + +#: backup.php:829 +msgid "Incremental" +msgstr "Βήμα - βήμα" + +#: backup.php:829 +msgid "Full backup" +msgstr "Πλήρης λήψη αντιγράφου ασφαλείας" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "τώρα προχωρούμε με τις ενημερώσεις..." + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "(δείτε το αρχείο καταγραφής...)" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "Η λήψη του αντιγράφου ασφαλείας έγινε επιτυχώς" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "Κάθε %s ώρες" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "εύρεση και αντικατάσταση" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "Πήγαινε" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "Σε μια εύρεση/αντικατάσταση δεν μπορεί να γίνει αναίρεση - είστε σίγουρος πως θέλετε να το κάνετε αυτό;" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "Αυτό μπορεί εύκολα να σας καταστρέψει τη σελίδα, οπότε χρησιμοποιήστε το πολύ προσεκτικά!" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "Αντικατάσταση με" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "Αναζήτηση για" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "Εύρεση / αντικατάσταση βάσης δεδομένων" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "όρος αναζήτησης" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "Βρέθηκαν πολλά λάθη στη βάση δεδομένων - γίνεται ματαίωση" + +#: backup.php:895 +msgid "read more at %s" +msgstr "διαβάστε περισσότερα στο %s" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "Οι αναφορές μέσω ηλεκτρονικού ταχυδρομείου που δημιουργήθηκε από το UpdraftPlus (δωρεάν έκδοση) σας κάνει γνωστές τα τελευταία νέα του UpdraftPlus.com" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "Σημείωση. Εάν εγκαταστήσετε το UpdraftPlus σε διάφορες ιστοσελίδες του WordPress, τότε δεν θα μπορείτε να χρησιμοποιήσετε ξανά το έργο σας αλλά θα πρέπει να δημιουργήσετε ένα νέο από την κονσόλα του Google API σας για κάθε ιστοσελίδα." + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "Δεν έχετε προβεί στη λήψη αντιγράφου ασφαλείας ακόμα." + +#: admin.php:3872 +msgid "Database Options" +msgstr "Επιλογές Βάσης Δεδομένων" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "Πρόσθετα για αποσφαλμάτωση:" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "%s (%s χρησιμοποιημένος)" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "Ελεύθερος χώρος στο δίσκο για το λογαριασμό:" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "Αυτό το κουμπί είναι απενεργοποιημένο, επειδή ο κατάλογος για την αποθήκευση του αντιγράφου ασφαλείας σας δεν είναι εγγράψιμος (δείτε τις ρυθμίσεις)." + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "Υφιστάμενα Αρχεία Αντιγράφων Ασφαλείας" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "Τρέχουσα Κατάσταση" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "Για να αλλάξετε κάποια από τις προεπιλεγμένες ρυθμίσεις, για να προγραμματίσετε τη δημιουργία αντιγράφων ασφαλείας, για να αποστείλετε τα αντίγραφα ασφαλείας σας στο χώρο απομακρυσμένης αποθήκευσης (συνιστάται), και πολλά περισσότερα, μεταβείτε στην καρτέλα Ρυθμίσεις." + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "Για να δημιουργήσετε ένα αντίγραφο ασφαλείας, απλώς πατήστε το κουμπί Λήψη Αντιγράφου Ασφαλείας." + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "Καλωσορίσατε στο UpdraftPlus!" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "Εάν πληκτρολογήσετε ένα κείμενο εδώ, θα χρησιμοποιηθεί για την κρυπτογράφηση των αντιγράφων ασφαλείας της βάσης δεδομένων (Rijndael). Κάντε ένα ξεχωριστό αρχείο με αυτό και μην θα το χάσετε αλλιώς όλα τα αντίγραφα ασφαλείας σαςθα είναι άχρηστα. Αυτό είναι το κλειδί το οποίο θα χρησιμοποιείται για την αποκρυπτογράφηση των αντιγράφων ασφαλείας από αυτό το interface του διαχειριστή (έτσι αν το αλλάξετε, τότε η αυτόματη αποκρυπτογράφηση δεν θα λειτουργήσει μέχρι να το επαναφέρετε στο αρχικό)." + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "Δοκιμή..." + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "Δοκιμή σύνδεσης..." + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "Πρόθεμα πίνακα" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "Λήψη αντιγράφου ασφαλείας εξωτερικής βάσης δεδομένων" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "Προσθήκη εξωτερικής βάσης δεδομένων στο αντίγραφο ασφαλείας..." + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "Εάν η βάση δεδομένων σας περιλαμβάνει επιπλέον πίνακες που δεν αποτελούν μέρος αυτής της σελίδας του WordPress (εσείς γνωρίζετε αν συντρέχει αυτή η περίπτωση), τότε ενεργοποιήστε αυτή την επιλογή για να τους συμπεριλάβετε στο αντίγραφο ασφαλείας." + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "Αντίγραφα ασφαλείας των πινάκων που δεν είναι πίνακες του WordPress περιέχονται στην ίδια βάση δεδομένων, όπως αυτοί του WordPress" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "Αυτή η επιλογή θα έχει ως αποτέλεσμα οι πίνακες που αποθηκεύονται στη βάση δεδομένων MySQL που δεν ανήκουν στο WordPress (και οι οποίοι προσδιορίζονται από το γεγονός πως τους λείπει το WordPress πρόθεμα τους, %s) να συμπεριληφθούν επίσης στο αντίγραφο ασφαλείας." + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "Ανεπιτυχής σύνδεση." + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "Επιτυχής σύνδεση." + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "%s πίνακας(ες) βρέθηκε(αν); %s με το υποδεικνυόμενο πρόθεμα." + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "%s πίνακας(ες) βρέθηκε(αν)." + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "η προσπάθεια σύνδεσης στη βάση δεδομένων απέτυχε" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "όνομα βάσης δεδομένων" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "πάροχος" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "χρήστης" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "Εξωτερική βάση δεδομένων (%s)" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "Ακολουθήστε αυτό το σύνδεσμο για την κονσόλα του Google API σας, κι εκεί ενεργοποιήσετε το Drive API και δημιουργήστε ένα αναγνωριστικό πελάτη (Client ID) στο τμήμα API Access." + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "αδυναμία πρόσβασης στο γονικό φάκελο" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "Ωστόσο, οι επόμενες προσπάθειες πρόσβασης απέτυχαν:" + +#: admin.php:4499 +msgid "External database" +msgstr "Εξωτερική βάση δεδομένων" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "Αυτό θα προκαλέσει επίσης αποσφαλμάτωση όλων των πρόσθετων που αναγράφονται σε αυτήν την οθόνη - παρακαλώ μην εκπλαγείτε επειδή τα βλέπετε αυτά." + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "Λήψη αντιγράφου ασφαλείας περισσότερων βάσεων δεδομένων" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "Πρώτα, εισάγετε το κλειδί της κρυπτογράφησης" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "Μπορείτε να αποκρυπτογραφήσετε χειροκίνητα μια κρυπτογραφημένη βάση δεδομένων εδώ." + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "Μπορεί επίσης να κρατήσει αντίγραφα ασφαλείας εξωτερικών βάσεων δεδομένων." + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "Δεν θέλετε να κατασκοπεύουν; Το UpdraftPlus Premium μπορεί να κρυπτογραφήσει τα αντιγράφα ασφαλείας της βάσης δεδομένων σας." + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "χρησιμοποιήστε το UpdraftPlus Premium" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "Η αποκρυπτογράφηση απέτυχε. Η βάση δεδομένων είναι κρυπτογραφημένη." + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "Μόνο η βάση δεδομένων του WordPress μπορεί να αποκατασταθεί, θα πρέπει να ασχοληθείτε με την εξωτερική βάση δεδομένων με μη αυτόματο τρόπο." + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "Παρουσιάστηκε σφάλμα στην πρώτης %s εντολή - ματαίωση εκτέλεσης" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "Η σύνδεση απέτυχε: ελέγξτε τα στοιχεία πρόσβασης σας, ότι ο database server σας είναι σε λειτουργία και δεν είναι πεσμένος, και ότι η σύνδεση δικτύου δεν προστατεύεται από κάποιο τοίχος προστασίας που μπλοκάρει την πρόσβαση." + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "η απόπειρα σύνδεσης με τη βάση δεδομένων απέτυχε." + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "Προσοχή: η διεύθυνση URL της βάσης δεδομένων (%s) είναι διαφορετική από το αναμενόμενο (%s)" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "Στο %s, και στα ονόματα διαδρομής γίνεται διάκριση πεζών - κεφαλαίων." + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "Αν το αφήσετε κενό, τότε το αντίγραφο ασφαλείας θα τοποθετηθεί στο ριζικό φάκελο του %s σας" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "π.χ. %s" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "Εάν ο φάκελος δεν υπάρχει ήδη, τότε θα δημιουργηθεί." + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "Εισάγετε τη διαδρομή του φακέλου %s που θέλετε να χρησιμοποιήσετε εδώ." + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "Φάκελος" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "Αφήστε αυτό το αυτό κενό, και θα τεθεί η προεπιλεγμένη τιμή." + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "Ένοικος" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "Ακολουθήστε αυτό το σύνδεσμο για περισσότερες πληροφορίες" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "ταυτοποίηση URI" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "Πάρτε τα διαπιστευτήρια πρόσβασης από τον παροχέα OpenStack Swift, και στη συνέχεια επιλέξτε ένα όνομα φακέλου που θα χρησιμοποιηθεί για την αποθήκευση. Αυτός ο φάκελος θα δημιουργηθεί για σας, αν δεν υπάρχει ήδη." + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "Αποτυχία μεταφόρτωσης του %s" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "Αποτυχία μεταφόρτωσης" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "αποτυχία δημιουργίας της λίστας αρχείων" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "Αποτυχία ανεβάσματος του %s" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "Επιτυχία:" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "Αφού έχετε αποθηκεύσει τις ρυθμίσεις σας (κάνοντας κλικ στο \"Αποθήκευση αλλαγών\" παρακάτω), μετά επιστρέψτε εδώ μια φορά και κάντε κλικ σε αυτό το σύνδεσμο για να ολοκληρώσετε τον έλεγχο ταυτότητας με το %s." + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "(Φαίνεται πως έχετε ήδη ταυτοποιηθεί)." + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "Dropbox" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "Ταυτοποίηση με το %s" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "Σφάλμα κατά τη λήψη του απομακρυσμένου αρχείου: Αποτυχία μεταφόρτωσης" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "Περιοχή: %s" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "%s σφάλμα - αποκτήθηκε πρόσβαση στο φάκελο αλλά υπήρξε αποτυχία κατά τη δημιουργία ενός αρχείου μέσα σε αυτόν" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "Το αντικείμενο %s δεν βρέθηκε" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "Αποτυχία πρόσβασης στο φάκελο %s" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "%s σφάλμα- αποτυχία πρόσβασης στο φάκελο" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "Όνομα κατόχου λογαριασμού: %s." + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "Για να έχετε τη δυνατότητα να ορίσετε ένα προσαρμοσμένο όνομα φάκελου, χρησιμοποιήστε το UpdraftPlus Premium." + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "Πρόκειται για έναν αναγνωριστικό αριθμό ID εσωτερικά στο Google Drive" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "Αυτό ΔΕΝ είναι ένα όνομα φακέλου." + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "Φάκελος" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "%s μεταφόρτωσης: σφάλμα: το αρχείο δεν βρέθηκε" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "Όνομα: %s." + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "Αρχεία καταλόγου του Google Drive : αποτυχία πρόσβασης στο γονικό φάκελο" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "Η έκδοσή σας %s: %s." + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "Απαιτείτε να επικοινωνήσετε με τον παροχέα του web hosting σας για να προχωρήσει σε αναβάθμιση." + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "Αυτή η μέθοδος απομακρυσμένης αποθήκευσης (%s) απαιτεί PHP %s ή νεότερη." + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "Ο κατάλογος του θέματος (%s) δεν βρέθηκε, αλλά υπάρχει μια έκδοση με μικρά γράμματα, η ενημέρωση της βάσης δεδομένων θα γίνει αναλόγως με αυτή την επιλογή" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "Κλήση" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "Απόκτηση" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "Αυτή η λειτουργία απαιτεί την έκδοση %s %s ή νεότερη " + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "Ανιχνεύθηκε το πρόσθετο Elegant themes theme builder: γίνεται επαναφορά του προσωρινού φάκελου" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "%s αρχεία έχουν εξαχθεί " + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "Αποτυχία αποσυμπίεσης του αρχείου" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "Σφάλμα - αδυναμία μεταφόρτωσης του αρχείου" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "Επανάληψη σάρωσης του τοπικού φακέλου για εύρεση νέων σετ αντιγράφων ασφαλείας" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "Θα πρέπει να ενημερώσετε το UpdraftPlus για να είστε βέβαιοι ότι έχετε μια έκδοση που έχει ελεγχθεί για συμβατότητα." + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "Έχει δοκιμαστεί μέχρι την έκδοση %s." + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "Η εγκατεστημένη έκδοση του UpdraftPlus Backup/Restore δεν έχει δοκιμαστεί στην έκδοση του WordPress που έχετε (%s)." + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "κωδικός/κλειδί" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "Κλειδί" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "Η σύνδεσή σας μπορεί να γίνει είτε τον κωδικό ή με κλειδί - χρειάζεται να εισάγετε ένα από τα δύο, όχι και τα δύο." + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "Το κλειδί που δώσατε δεν ήταν σε έγκυρη μορφή, ή ήταν κατεστραμμένο." + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "κωδικός/κλειδί SCP/SFTP" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "Αντίγραφο ασφαλείας αρχείων (δημιουργήθηκε από %s) " + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "Αντίγραφο ασφαλείας αρχείων και βάσης δεδομένων του WordPress (δημιουργήθηκε από %s)" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "Το αντίγραφο ασφαλείας δημιουργήθηκε από: %s." + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "Βάσης δεδομένων (δημιουργήθηκε από %s) " + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "άγνωστη πηγή" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "Επανασάρωση της απομακρυσμένης θέσης αποθήκευσης" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "Ανέβασμα αρχείων αντιγράφου ασφαλείας" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "Αυτό το αντίγραφο ασφαλείας δημιουργήθηκε από %s, και μπορεί να εισαχθεί." + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "Διαβάστε αυτή τη σελίδα για δείτε έναν οδηγό για τις πιθανές αιτίες και πώς μπορεί να διορθωθεί." + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "Το WordPress έχει έναν αριθμό (%d) των προγραμματισμένων εργασιών που έχουν καθυστερήσει. Αυτό σημαίνει κατά πάσα πιθανότητα ότι το χρονοδιάγραμμα στην εγκατάσταση σας του WordPress δεν λειτουργεί, εκτός κι αν αυτή είναι μια σελίδα εξέλιξης " + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "Εάν αυτό είναι ένα αντίγραφο ασφαλείας που δημιουργήθηκε από ένα διαφορετικό πρόσθετο λήψης αντιγράφων ασφαλείας, τότε το UpdraftPlus Premium μπορεί να είναι σε θέση να σας βοηθήσει." + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "Ωστόσο, τα αρχεία του UpdraftPlus είναι σύμφωνα με το πρότυπο αρχείων zip/SQL - οπότε αν είστε βέβαιοι ότι το αρχείο σας έχει τη σωστή μορφή, τότε μπορείτε να το μετονομάσετε για να ταιριάζει με αυτό το μοτίβο." + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "Αυτό το αρχείο δε μοιάζει να είναι ένα αρχείο αντιγράφων ασφαλείας του UpdraftPlus (τέτοια είναι τα .zip or .gz αρχεία που μπορεί να έχουν ένα όνομα του τύπου: backup_(time)_(site name)_(code)_(type).(zip|gz))." + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "Το αντίγραφο ασφαλείας δημιουργήθηκε από άγνωστη πηγή (%s) - δεν μπορεί να αποκατασταθεί." + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "Ο φάκελος περιεχομένων του WordPress (wp-content) δε βρέθηκε σ' αυτό το αρχείο zip." + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "Αυτή η έκδοση του UpdraftPlus δεν μπορεί να διαχειριστεί αυτό το είδος των ξένων αντιγράφων ασφαλείας" + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "%s επέστρεψε μη αναμενόμενη απάντηση HTTP: %s" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "Η μονάδα του UpdraftPlus γι' αυτή τη μέθοδο πρόσβασης στο αρχείο (%s) δεν υποστηρίζει την καταχώριση αρχείων" + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "Δε βρέθηκαν ρυθμίσεις" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "Ένα ή περισσότερα αντίγραφα ασφαλείας έχουν προστεθεί από τη σάρωση του σημείου απομακρυσμένης αποθήκευσης. Σημειώστε ότι αυτά τα αντίγραφα ασφαλείας δεν θα διαγράφονται αυτόματα μέσω των ρυθμίσεων \"διατήρησης\". Αν ή όταν θέλετε να τα διαγράψετε θα πρέπει να το κάνετε χειροκίνητα." + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "Σάρωση ξανά της απομακρυσμένης και τοπικής θέσης αποθήκευσης για εύρεση σετ αντιγράφων ασφαλείας σετ ..." + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "(Διαβάστε περισσότερα)" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "Ρύθμιση διαδρομών φακέλων σε multisite" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "Συνδέστε όλα τα μηνύματα στο syslog (μόνο οι διαχειριστές των server είναι πιθανό να το θέλουν αυτό)" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "Προσθέστε ένα ακόμα..." + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "Αφαίρεση" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "Άλλες %s ερωτήσεις." + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "Επιλέξτε αυτό για να λαμβάνετε περισσότερες πληροφορίες και μηνύματα ηλεκτρονικού ταχυδρομείου σχετικά με τη διαδικασία δημιουργίας αντιγράφων ασφαλείας - είναι χρήσιμο αν κάτι πάει στραβά." + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "Εάν εισαγάγετε πολλαπλά αρχεία/καταλόγους, στη συνέχεια χωρίστε τα με κόμμα. Για τις οντότητες σε ανώτερο επίπεδο, μπορείτε να χρησιμοποιήσετε ένα * στην αρχή ή στο τέλος της καταχώρησης ως μπαλαντέρ." + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "Ανιχνεύθηκε πρόσθετο για προσαρμοσμένο τύπο περιεχομένου: εκκαθάριση επιλογής cache" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "Η εταιρεία που φιλοξενεί την ιστοσελίδα σας πρέπει να ενεργοποιήσει αυτές τις λειτουργίες πριν το %s να μπορεί να λειτουργήσει." + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "Η εγκατάσταση της PHP στον web server σας έχει απενεργοποιημένες αυτές τις λειτουργίες: %s." + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "κρυπτογραφημένο FTP (ρητή κρυπτογράφηση)" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "κρυπτογραφημένo FTP (σιωπηρή κρυπτογράφηση)" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "απλό μη κρυπτογραφημένο FTP" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "Το αντίγραφο ασφαλείας δημιουργήθηκε από:" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "Διαθέσιμο προς αξίωση σε αυτό το site" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "Για να διατηρήσετε την πρόσβασή σας στην υποστήριξη, παρακαλούμε κάντε ανανέωση." + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "Η επί πληρωμή πρόσβασή σας για υποστήριξη στο UpdraftPlus πρόκειται σύντομα να λήξει. " + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "Για να αποκτήσετε ξανά πρόσβαση, παρακαλούμε κάντε ανανέωση." + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "Η επί πληρωμή πρόσβασή σας στο UpdraftPlus για αυτή την ιστοσελίδα πρόκειται έχει λήξει." + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "Η επί πληρωμή πρόσβασή σας στο UpdraftPlus για αυτή την ιστοσελίδα πρόκειται σύντομα να λήξει." + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "Για να διατηρήσετε την πρόσβασή σας αλλά και να εξακολουθήσετε να έχετε πρόσβαση σε ενημερώσεις (συμπεριλαμβανομένων των μελλοντικών χαρακτηριστικών και της συμβατότητας με μελλοντικές κυκλοφορίες της πλατφόρμας WordPress) και υποστήριξη, παρακαλούμε κάντε ανανέωση." + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "Η επί πληρωμή πρόσβασή σας στις ενημερώσεις του UpdraftPlus για το %s των πρόσθετων %s σε αυτή την ιστοσελίδα πρόκειται σύντομα να λήξει. " + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "Η επί πληρωμή πρόσβασή σας στις ενημερώσεις του UpdraftPlus για πρόσθετα %s σε αυτή την ιστοσελίδα έχει λήξει." + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "Για να αποκτήσετε ξανά πρόσβαση στις ενημερώσεις (συμπεριλαμβανομένων των μελλοντικών χαρακτηριστικών και της συμβατότητας με μελλοντικές κυκλοφορίες της πλατφόρμας WordPress) και υποστήριξη, παρακαλούμε κάντε ανανέωση. " + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "Η επί πληρωμή πρόσβασή σας στις ενημερώσεις του UpdraftPlus για αυτή την ιστοσελίδα έχει λήξει. Δε θα λαμβάνετε πλέον αναβαθμίσεις για το UpdraftPlus." + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "Αδυναμία πρόσβασης από το κεντρικό ταμπλό (για %s εβδομάδες)" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "Η προσπάθεια αναίρεσης της διπλής συμπίεσης έγινε επιτυχώς." + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "Η προσπάθεια αναίρεσης της διπλής συμπίεσης απέτυχε." + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "Το αρχείο της βάσης δεδομένων φαίνεται πως έχει συμπιεσθεί δύο φορές - κατά πάσα πιθανότητα η ιστοσελίδα από την οποία το μεταφορτώσατε είχε λανθασμένες ρυθμίσεις στον webserver της." + +#: admin.php:1528 +msgid "Constants" +msgstr "Σταθερές" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "Αδυναμία ανοίγματος της βάσης δεδομένων για ανάγνωση:" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "Δεν βρέθηκαν πίνακες στη βάση δεδομένων" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "παρακαλούμε περιμένετε για την επαναπρογραμματισμένη προσπάθεια" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "Λάβετε υπόψη σας ότι τα προειδοποιητικά μηνύματα είναι συμβουλευτικά - η διαδικασία δημιουργίας αντιγράφων ασφαλείας δεν σταματά εξαιτίας τους. Αντιθέτως, παρέχουν πληροφορίες που θα σας φανούν χρήσιμες, ή που μπορεί να αναφέρουν την πηγή ενός προβλήματος εάν η λήψη του αντιγράφου ασφαλείας δεν ολοκληρώθηκε επιτυχώς." + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "Επεξεργασία ερωτημάτων βάσης δεδομένων: %d σε %.2f δευτερόλεπτα" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "Η αναζήτηση και αντικατάσταση έχει φτάσει στη σειρά: %d" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "Η παράλειψη αυτού του πίνακα: τα δεδομένα σε αυτόν τον πίνακα (%s) δεν πρέπει να αναζητηθούν/αντικατασταθούν" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "Λογαριασμός πλήρης: ο λογαριασμός %s έχει μόνο %d bytes ελεύθερα, αλλά απομένουν από το αρχείο για να φορτωθούν %d bytes υπόλοιπα (συνολικό μέγεθος :%d bytes)" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "Προέκυψαν σφάλματα:" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "Ακολουθήστε αυτό το σύνδεσμο για να κατεβάσετε το αρχείο καταγραφής για αυτή την αποκατάσταση (απαιτείται για τυχόν αιτήματα υποστήριξης)." + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "Δείτε επίσης αυτές τις συχνές ερωτήσεις - απαντήσεις." + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "Εάν επιλέξετε να μην υπάρχει απομακρυσμένη αποθήκευση, τότε τα αντίγραφα ασφαλείας θα παραμένουν στο web-server. Αυτό δεν συνιστάται (εκτός αν σκοπεύετε να τα αντιγράψετε με μη αυτόματο τρόπο στον υπολογιστή σας), διότι μια ενδεχόμενη απώλεια του web server, θα σήμαινε την απώλεια τόσο της ιστοσελίδας σας όσο και των αντιγράφων ασφαλείας ταυτόχρονα." + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "Ανάκτηση (αν χρειάζεται) και προετοιμασία των αρχείων αντιγράφων ασφαλείας..." + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "Η εγκατάσταση PHP σε αυτό το διακομιστή επιτρέπει μόνο %s δευτερόλεπτα για να τρέξει η PHP, και δεν επιτρέπει το όριο αυτό να αυξηθεί. Εάν έχετε πολλά δεδομένα για να εισάγετε, κι αν η λειτουργία αποκατάστασης τερματιστεί, τότε θα πρέπει να ζητήσει από την εταιρία του web hosting σας με κάποιο τρόπο να αυξήσουν το όριο αυτό (ή να επιχειρήσετε την αποκατάσταση κομμάτι-κομμάτι)." + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "Υπάρχουν μη διαγραμμένοι κατάλογοι από μια προηγούμενη επαναφορά εδώ (παρακαλούμε χρησιμοποιήστε το κουμπί \"Διαγραφή Παλαιών Καταλογών\" για να τους διαγράψετε πριν προσπαθήσετε ξανά): %s" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "Το χρονικό διάστημα που επιτρέπεται στα πρόσθετα του WordPress για να τρέξουν είναι πολύ λίγο (%s δευτερόλεπτα) - θα πρέπει να το αυξήσετε για την αποφυγή αποτυχιών κατά τη δημιουργία του αντιγράφου ασφαλείας λόγω time-outs (συμβουλευτείτε την web hosting εταιρεία σας για περισσότερη βοήθεια - είναι η ρύθμιση max_execution_time PHP. Η συνιστώμενη τιμή είναι %s δευτερόλεπτα ή περισσότερο)" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "Αντικατάσταση στον πίνακα του blog/σελίδας: από: %s σε: %s" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "%s: Παράκαμψη του αρχείου cache (δεν υπάρχει ήδη)" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "Απενεργοποιήστε αυτό το πρόσθετο: %s: επανενεργοποιήστε το χειροκίνητα όταν είστε έτοιμοι." + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "Η διασύνδεση του %s έληξε λόγω time out. Αν έχετε εισάγει σωστά το διακομιστή, τότε αυτό συνήθως προκαλείται από ένα τείχος προστασίας που εμποδίζει τη σύνδεση - θα πρέπει να το ελέγξετε αυτό με την εταιρεία του web hosting σας." + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "Το τρέχον θέμα δεν βρέθηκε. Για να αποτραπεί η διακοπή της φόρτωσης της σελίδας, το θέμα σας έχει επανέλθει στο προεπιλεγμένο θέμα" + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "Η επαναφορά απέτυχε..." + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "Μηνύματα:" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "Βρέθηκε μια γραμμή SQL που είναι μεγαλύτερη από το μέγιστο μέγεθος πακέτου και δεν μπορεί να κατατμηθεί. η γραμμή αυτή δεν θα υποβληθεί σε επεξεργασία, αλλά θα αφεθεί ως έχει: %s" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "Ο φάκελος δεν υπάρχει" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "Νέα Διεύθυνση Ηλεκτρονικού Ταχυδρομείου του Χρήστη " + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "Νέο Όνομα Χρήστη του Χρήστη" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "Admin API Key" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "Όνομα χρήστη Admin" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "Λογαριασμός US or UK Rackspace" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "Εισάγετε το admin username/API key σας για το Rackspace (έτσι ώστε το Rackspace να επικυρώσει τη δυνατότητά σας για να δημιουργήσετε νέους χρήστες) και εισάγετε ένα νέο (μοναδικό) όνομα και τη διεύθυνση ηλεκτρονικού ταχυδρομείου για το νέο χρήστη και ένα όνομα φακέλου." + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "Δημιουργήστε ένα νέο χρήστη και φάκελο API" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "API Key: %s" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "Κωδικός: %s" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "Όνομα χρήστη: %s" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "Η διαδικασία Cloud Files απέτυχε (%s)" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "Προσοχή: ο χρήστης ή διεύθυνση ηλεκτρονικού ταχυδρομείου υπάρχει ήδη" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "Πρέπει να εισάγετε μια νέα ισχύουσα διεύθυνση ηλεκτρονικού ταχυδρομείου" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "Πρέπει να εισάγετε ένα φάκελο" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "Πρέπει να εισάγετε ένα νέο όνομα χρήστη" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "Πρέπει να εισάγετε το API του admin " + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "Πρέπει να εισάγετε το όνομα χρήστη του admin" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "Δημιουργήστε ένα νέο χρήστη API με πρόσβαση μόνο σε αυτό το φάκελο (όχι ολόκληρου του λογαριασμού σας)" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "Προσθέτει ενισχυμένες δυνατότητες για τους χρήστες του Rackspace Cloud Files" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "Rackspace Cloud Files, ενισχυμένο" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "Φάκελος στο Cloud Files" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "Κλειδί API για το Cloud Files " + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "Για να δημιουργήσετε ένα νέο υπο-χρήστη API κι ένα νέο κλειδί API για το Rackspace που έχει πρόσβαση μόνο σε αυτό το φάκελο του Rackspace, χρησιμοποιήστε αυτό το πρόσθετο." + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "Όνομα χρήστη του Cloud Files" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "Λονδίνο (LON)" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "Χονγκ Κονγκ (HKG)" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "Βόρεια Βιρτζίνια (IAD)" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "Σικάγο (ORD)" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "Σίδνεϊ (SYD)" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "Ντάλλας (DFW) (προεπιλογή)" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "Περιφέρεια Αποθήκευσης του Cloud Files " + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "Λογαριασμοί που δημιουργούνται στο rackspacecloud.com είναι λογαριασμοί με έδρα της ΗΠΑ. Λογαριασμοί που δημιουργούνται στο rackspace.co.uk είναι λογαριασμοί με έδρα το Ηνωμένο Βασίλειο" + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "Λογαριασμός στο Rackspace US ή UK-based " + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "Λογαριασμοί που δημιουργούνται στο rackspacecloud.com είναι λογαριασμοί με έδρα της ΗΠΑ. Λογαριασμοί που δημιουργούνται στο rackspace.co.uk είναι λογαριασμοί με έδρα το Ηνωμένο Βασίλειο." + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "Η ταυτοποίηση απέτυχε (ελέγξτε τα διαπιστευτήριά σας)" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "Προέκυψε ένα άγνωστο σφάλμα κατά τη διάρκεια σύνδεσης με το UpdraftPlus.Com" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "Δημιουργία" + +#: admin.php:556 +msgid "Trying..." +msgstr "Προσπάθεια..." + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "Ο νέος κωδικός χρήστη για την κονσόλα του Rackspace είναι (αυτό δεν θα εμφανιστεί ποτέ ξανά):" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "(όταν αποκρυπτογραφηθεί)" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "Σφάλμα δεδομένων:" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "Δεν υπάρχει αντίγραφο ασφαλείας στο ιστορικό λήψης αντιγράφων ασφαλαείας" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "Η εγκατάσταση σας του WordPress έχει παλιούς καταλόγους από την κατάσταση πριν να γίνει αποκατάσταση/μετανάστευση (τεχνικές πληροφορίες: αυτά επισημαίνονται με το πρόθεμα -old). Θα πρέπει να πατήσετε αυτό το κουμπί για να τα διαγράψετε μόλις διαπιστώσετε ότι η αποκατάσταση έγινε με επιτυχία." + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "Διαιρέστε τη γραμμή για την αποφυγή της υπέρβασης του μεγίστου μεγέθους πακέτου" + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "Ο χρήστης της βάσης δεδομένων σας δεν έχει άδεια να διαγράψει τους πίνακες. Εμείς θα προσπαθήσουμε να κάνουμε την αποκατάσταση απλώς αδειάζοντας τους πίνακες. Αυτό θα πρέπει να δουλέψει σωστά αν κάνετε αποκατάσταση από μια έκδοση WordPress με την ίδια δομή της βάσης δεδομένων (%s)" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "Νέα πρόθεμα πίνακα: %s" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "Τα δικαιώματα αρχείου δεν επιτρέπουν τα παλαιά δεδομένα να μετακινηθούν και θα διατηρηθούν. Αντί αυτού, θα διαγραφούν." + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "%s: Αυτός ο φάκελος υπάρχει ήδη και θα αντικατασταθεί" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "Αδυναμία μετακίνησης των αρχείων στη θέση τους. Ελέγξτε τα δικαιώματα των αρχείων σας." + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "Αδυναμία μετακίνησης των αρχείων στη θέση τους. Ελέγξτε τα δικαιώματα του φακέλου wp-content/upgrade. " + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "Αδυναμία διαγραφής των παλιών δεδομένων." + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "Διαγραφή των παλιών δεδομένων..." + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "Προσθήκη νέας διεύθυνσης..." + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "Εισάγετε τις διευθύνσεις εδώ για να σας αποσταλεί μια αναφορά προς αυτές όταν μια εργασία δημιουργίας αντιγράφων ασφαλείας τελειώνει." + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "Αναφορές Email" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "%s άθροισμα ελέγχου: %s" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "αρχεία: %s" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "Χρησιμοποιήστε την ενότητα \"Αναφορές\" για να ρυθμίσετε τις διευθύνσεις ηλεκτρονικού ταχυδρομείου που θέλετε να χρησιμοποιούνται." + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr " (με προειδοποιήσεις (%s))" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr " (με λάθη (%s))" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "Πληροφορίες αποσφαλμάτωσης" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "Μεταφορτώθηκε στο:" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "Χρόνος που απαιτήθηκε:" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "Προειδοποιήσεις" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "Σφάλματα" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "Σφάλματα / προειδοποιήσεις:" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "Περιεχόμενα:" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "Η λήψη του αντιγράφου ασφαλείας ξεκίνησε: " + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "Αναφορά Αντιγράφου Ασφαλείας" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "%d ώρες, %d λεπτά, %d δευτερόλεπτα" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "%d σφάλματα, %d προειδοποιήσεις" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "%s ταυτοποίηση" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "%s σφάλμα: %s" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "%s logo" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "%s δεν επέστρεψε την αναμενόμενη απάντηση - ελέγξτε το αρχείο καταγραφής σας για περισσότερες λεπτομέρειες" + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "Η απαιτούμενη μονάδα PHP %s δεν είναι εγκατεστημένη - ζητήστε από την εταιρεία web hosting σας να την ενεργοποιήσει" + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "Για περισσότερες επιλογές, χρησιμοποιήστε το πρόσθετο \"%s\"." + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "Θα χρησιμοποιηθεί η διεύθυνση email του διαχειριστή της σελίδας (%s)." + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "Σύνδεση" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "Για περισσότερες δυνατότητες αναφοράς, χρησιμοποιήστε το πρόσθετο Reporting." + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "(έκδοση: %s)" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "Θα πρέπει να γνωρίζετε ότι οι διακομιστές ηλεκτρονικού ταχυδρομείου τείνουν να έχουν όρια μεγέθους, συνήθως γύρω στα %s Mb. Τα αντίγραφα ασφαλείας έχουν συνήθως μεγαλύτερο μέγεθος από οποιοδήποτε όριο και πιθανότατα το email δεν θα αποσταλεί." + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "Όταν είναι ενεργοποιημένη η μέθοδος αποθήκευσης με Email, στείλτε επίσης το σύνολο των αντιγράφων ασφαλείας" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "Τελευταία κατάσταση:" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "Το αντίγραφο ασφαλείας περιέχει:" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "Ποσοστό λήψης αντιγράφου ασφαλείας: %s" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "Το αρχείο καταγραφής έχει επισυναφθεί στο email." + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "Άγνωστο/απρόσμενο λάθος - παρακαλούμε ζητήστε βοήθεια από την υποστήριξη" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "Βάση δεδομένων (για τα αρχεία δεν είχε προγραμματιστεί για να συμπεριληφθούν στο αντίγραφο ασφαλείας) " + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "Βάση δεδομένων (η λήψη αντιγράφου ασφαλείας για τα αρχεία δεν έχει ολοκληρωθεί)" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "Αρχεία μόνο (η βάση δεδομένων δεν είχε προγραμματιστεί για να συμπεριληφθεί στο αντίγραφο ασφαλείας)" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "Αρχεία (η λήψη αντιγράφου ασφαλείας για τη βάση δεδομένων δεν έχει ολοκληρωθεί)" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "Αρχεία και βάση δεδομένων" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "(Αυτό ισχύει για όλα τα πρόσθετα του WordPress που δημιουργούν αντίγραφα ασφαλείας, εκτός αν έχουν δημιουργηθεί αυστηρά για συμβατότητα σε multisite)." + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "Χωρίς την αναβάθμιση, το UpdraftPlus επιτρέπει κάθε διαχειριστή του ιστολογίου σας που μπορεί να τροποποιήσει τις ρυθμίσεις του πρόσθετου για να δημιουργήσει αντίγραφα ασφαλείας (και ως εκ τούτου να έχει πρόσβαση στα δεδομένα, συμπεριλαμβανομένων και των κωδικών πρόσβασης) και να κάνει επαναφορά (μεταξύ άλλων και με προσαρμοσμένες τροποποιήσεις, π.χ. να αλλάξει τους κωδικούς πρόσβασης) στο σύνολο του δικτύου ." + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "Υποστηρίζεται το WordPress Multisite, με επιπλέον χαρακτηριστικά, από το UpdraftPlus Premium, ή το πρόσθετο Multisite." + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "Αυτή είναι μια εγκατάσταση multi-site του WordPress multi-site (επίσης γνωστή ως network)." + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "Προειδοποίηση UpdraftPlus:" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "(ή συνδεθείτε χρησιμοποιώντας τη φόρμα σε αυτή τη σελίδα, εάν το έχετε ήδη αγοράσει)" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "παρακαλούμε ακολουθήστε τον παρακάτω σύνδεσμο για να ενημερώσετε το πρόσθετο με σκοπό να το ενεργοποιήσετε" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "παρακαλούμε ακολουθήστε τον παρακάτω σύνδεσμο για να ενημερώσετε το πρόσθετο με σκοπό να το αποκτήσετε" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "τελευταία" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "Η έκδοσή σας: %s" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "Το έχετε" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "Υποστήριξη του UpdraftPlus" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "Μια αναβάθμιση που περιέχει τα πρόσθετά σας είναι διαθέσιμη για το UpdraftPlus - παρακαλούμε ακολουθήστε αυτόν τον σύνδεσμο για να το αποκτήσετε." + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "Πρόσθετα του UpdraftPlus" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "Μια αναβάθμιση είναι διαθέσιμη για το UpdraftPlus - παρακαλούμε ακολουθήστε αυτόν τον σύνδεσμο για να το αποκτήσετε. " + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "Το UpdraftPlus.Com επέστρεψε μια απάντηση, αλλά δεν μπορούμε να την κατανοήσουμε" + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "Η διεύθυνση του email σας και ο κωδικός σας δεν αναγνωρίσθηκαν από το UpdraftPlus.Com" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "Το UpdraftPlus.Com απάντησε, αλλά δεν μπορούμε να κατανοήσουμε την απάντηση (δεδομένα: %s)" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "Το UpdraftPlus.Com απάντησε, αλλά δεν μπορούμε να κατανοήσουμε την απάντηση" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "Αποτυχία σύνδεσης με το UpdraftPlus.Com" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "Υποβολή έκθεσης" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "Επιλογές (χωρίς επεξεργασία)" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "Αποστολή αναφοράς μόνο όταν υπάρχουν προειδοποιήσεις/λάθη" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "URL περιεχομένου:" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "Δείτε επίσης το πρόσθετο \"More Files\" στο κατάστημά μας." + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "Ο ελεύθερος χώρος στο λογαριασμό σας είναι πολύ λίγος - μόνο %s Mb απομένουν" + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "Το επιτρεπόμενο ποσό της μνήμης (RAM) για την PHP είναι πολύ μικρό (%s Mb) - θα πρέπει να το αυξήσετε για να αποφευχθούν δυσλειτουργίες εξαιτίας της ανεπαρκούς μνήμης (συμβουλευτείτε την εταιρεία που σας παρέχει τον διακομιστή σας για περισσότερη βοήθεια)" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "Διαχείριση πρόσθετων" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "Αγορά" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "Αγοράστε το από το UpdraftPlus.Com Store" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "ενεργοποιήστε τη σ' αυτή τη σελίδα" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "Έχετε μια ανενεργή αγορά." + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "Έχει εκχωρηθεί για αυτή την ιστοσελίδα" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "Διαθέσιμο για αυτή την ιστοσελίδα (μέσω της αγοράς σας όλων των πρόσθετων)" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "(προφανώς μια προ-έκδοση ή μια έκδοση που αποσύρθηκε)" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "Πηγαίνετε εδώ" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "Χρειάζεστε υποστήριξη;" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "Παρουσιάστηκε σφάλμα κατά την προσπάθεια ανάκτησης των πρόσθετών σας." + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "Μια άγνωστη απάντηση ελήφθη. Η απάντηση ήταν:" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "Η αξίωση δεν έγινε αποδεκτή - τα στοιχεία σύνδεσής σας ήταν λανθασμένα" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "Παρακαλώ περιμένετε ενώ κάνουμε την επαλήθευση..." + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "Προέκυψαν σφάλματα κατά την προσπάθεια σύνδεσης με το UpdraftPlus.Com:" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "Δεν είστε προς το παρόν συνδεδεμένος με κάποιον λογαριασμό στο UpdraftPlus.Com. " + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "Εάν έχετε αγοράσει νέα πρόσθετα, ακολουθήστε αυτόν τον σύνδεσμο για να ανανεώσετε τη σύνδεσή σας" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "Είστε προς το παρόν συνδεδεμένος με έναν λογαριασμό στο UpdraftPlus.Com." + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "Ενδιαφέρεστε να μάθετε για την ασφάλεια του κωδικού σας στο UpdraftPlus.Com; Διαβάστε σχετικά εδώ." + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "Ξεχάσατε τις λεπτομέρειές σας;" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "Δεν έχετε ακόμα λογαριασμό (είναι δωρεάν); Δημιουργήστε έναν!" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "Συνδεθείτε με τον UpdraftPlus.Com λογαριασμό σας" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "Η έκδοση PHP του web server σας είναι πολύ παλιά (" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "Φαίνεται πως έχετε ένα παλιό και ξεπερασμένο Updraft πρόσθετο εγκαταστημένο - μήπως τα έχετε μπερδέψει;" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "Πηγαίνετε εδώ για να ξεκινήσετε τη διαδικασία εγκατάστασης." + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "Το UpdraftPlus δεν έχει ακόμα εγκατασταθεί. " + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "Πηγαίνετε εδώ για να το ενεργοποιήσετε." + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "Το UpdraftPlus δεν έχει ακόμα ενεργοποιηθεί." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "Πηγαίνετε εδώ για να συνδεθείτε." + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "Δεν έχετε ακόμα συνδεθεί με το λογαριασμό σας στο UpdraftPlus.Com, για να σας δοθεί η δυνατότητα να κάνετε λίστα με τα αγορασμένα πρόσθετα." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "Χωρίς αυτό, η κρυπτογράφηση θα είναι πολύ πιο αργή." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "Ο εξυπηρετητής σας δεν έχει εγκατεστημένο το πρόσθετο %s." + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr " (Φαίνεται να έχετε ήδη πιστοποιηθεί, αν και μπορείτε να πιστοποιηθείτε και πάλι για να ανανεώσετε την πρόσβασή σας, αν αντιμετωπίσατε κάποιο πρόβλημα)." + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "Αφήστε τα αρχεία αντιγράφων ασφαλείας εδώ" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "διαχειριστείτε το WordPress από την γραμμή εντολών - γλιτώνετε πολύ χρόνο" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "Δείτε το WordShell" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "Θέλετε περισσότερες δυνατότητες ή επί πληρωμή, εγγυημένη υποστήριξη; Δείτε πως στο UpdraftPlus.Com" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "Ο εξυπηρετητής επέστρεψε έναν κωδικό σφάλματος (προσπαθήστε ξανά, ή ελέγξετε το αρχείο καταγραφής του διακομιστή)" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "Η διαδικασία επαναφοράς έχει αρχίσει. Μην πατήσετε το κουμπί διακοπής ή κλείσετε το φυλλομετρητή σας μέχρι να δείτε την αναφορά ολοκλήρωσης της διαδικασίας." + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "Εάν εξαιρέσετε τόσο την βάση δεδομένων και τα αρχεία, τότε έχετε εξαιρέσει τα πάντα!" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "Αρχική σελίδα:" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "Επιλογές Απομακρυσμένης Αποθήκευσης" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "(τα αρχεία καταγραφής μπορείτε να τα βρείτε στη σελίδα ρυθμίσεων του UpdraftPlus ως συνήθως)..." + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "Να αποθηκευτεί αυτή η επιλογή για την επόμενη φορά (θα εξακολουθήσετε να έχετε τη δυνατότητα να το αλλάξετε)" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "Το ανέβασμα των αρχείων απέτυχε" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "Μπορείτε να αποθηκεύσετε το αντίγραφο ασφαλείας σε περισσότερα από ένα σημεία με ένα πρόσθετο." + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "Σημείωση: η γραμμή προόδου πιο κάτω βασίζεται σε στάδια, ΟΧΙ στο χρόνο. Μην σταματήσετε τη δημιουργία αντιγράφου ασφαλείας μόνο και μόνο επειδή φαίνεται να έχει παραμείνει στην ίδια θέση για λίγο - αυτό είναι φυσιολογικό." + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "(%s%%, αρχείο %s από %s)" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "Διαβάστε περισσότερα για το πως λειτουργεί αυτό..." + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "Αποτυχία: Ήμασταν σε θέση να συνδεθούμε, αλλά αποτύχαμε να δημιουργήσουμε με επιτυχία ένα αρχείο σε αυτή τη θέση. " + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "Αποτυχία: Ήμασταν σε θέση να συνδεθούμε και να βρεθούμε στον ενδεικνυόμενο κατάλογο, αλλά αποτύχαμε να δημιουργήσουμε με επιτυχία ένα αρχείο σε αυτή τη θέση." + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "Χρησιμοποιήστε SCP αντί του SFTP" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "Ρυθμίσεις χρήστη SCP/SFTP" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "Ρυθμίσεις SCP/SFTP host" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "Η προσπάθεια για να σταλεί το αντίγραφο ασφαλείας μέσω email απέτυχε (ίσως το αντίγραφο ασφαλείας ήταν πολύ μεγάλο για αυτή τη μέθοδο)" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "Η δημιουργία αντιγράφων ασφαλείας είναι:%s." + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "αποτέλεσμα δοκιμής για τις ρυθμίσεις %s:" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "(Δεν έχει ολοκληρωθεί)" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "Αν βλέπετε περισσότερα αντίγραφα ασφαλείας από ό,τι θα περιμένατε, είναι πιθανώς επειδή η διαγραφή των παλαιών αντιγράφων ασφαλείας δεν έχει συμβεί έως ότου ολοκληρωθεί η διαδικασία λήψης του νέου αντιγράφου ασφαλείας." + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr " Μην το τοποθετείτε μέσα στο φάκελο με τις προσθήκες ή τα πρόσθετα, καθώς αυτό θα προκαλέσει αναδρομή (αντίγραφα ασφαλείας των αντιγράφων ασφαλείας των αντιγράφων ασφαλείας των...)." + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "Αυτό είναι το σημείο όπου το UpdraftPlus θα αποθηκεύσει τα αρχεία zip που δημιουργεί αρχικά. Αυτός ο κατάλογος πρέπει να είναι εγγράψιμος από τον εξυπηρετητή σας. Έχει άμεση σχέση με τον κατάλογο του περιεχομένου σας (ο οποίος από προεπιλογή ονομάζεται wp-content)." + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "Ταυτότητα εργασίας: %s" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "τελευταία δραστηριότητα πριν: %ss" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "επόμενη επανάληψη:%d (μετά από %ss)" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "Άγνωστο" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "Η λήψη αντιγράφων ασφαλείας ολοκληρώθηκε" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "Αναμονή λόγω σφαλμάτων μέχρι την προγραμματισμένη ώρα της επανέναρξης " + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "Διαγραφή παλαιών αντιγράφων ασφαλείας" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "Μεταφορά αρχείων στο απομακρυσμένο σημείο αποθήκευσης" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "Κρυπτογραφήθηκε η βάση δεδομένων" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "Κρυπτογράφηση βάσης δεδομένων" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "Δημιουργήθηκε το αντίγραφο ασφαλείας της βάσης δεδομένων" + +#: admin.php:3359 +msgid "table: %s" +msgstr "πίνακας: %s" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "Δημιουργία αρχείων ασφαλείας της βάσης δεδομένων" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "Δημιουργήθηκαν τα συμπιεσμένα αντίγραφα ασφαλείας αρχείων " + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "Δημιουργία συμπιεσμένων αντιγράφων ασφαλείας αρχείων " + +#: admin.php:3287 +msgid "Backup begun" +msgstr "Η δημιουργία αρχείων ασφαλείας ξεκίνησε" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "Η δημιουργία αρχείων ασφαλείας βρίσκεται σε εξέλιξη:" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "Ο προγραμματιστής είναι απενεργοποιημένος στην εγκατάσταση του WordPress, μέσω της ρύθμισης DISABLE_WP_CRON. Δεν μπορεί να εκτελεστεί καμία διαδικασία εκτέλεσης δημιουργίας αντιγράφων ασφαλείας (even "Backup Now") εκτός εάν είτε έχετε εγκαταστήσει μια λειτουργία για να λάβετε αντίγραφο ασφαλείας χειροκίνητα, ή μέχρι να ενεργοποιηθεί." + +#: restorer.php:646 +msgid "file" +msgstr "αρχείο" + +#: restorer.php:639 +msgid "folder" +msgstr "κατάλογος" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "Το UpdraftPlus χρειάζεται να δημιουργήσει ένα %s στον κατάλογο περιεχομένων σας, αλλά απέτυχε - παρακαλώ ελέγξτε τα δικαιώματα αρχείων σας και επιτρέψτε την πρόσβαση (%s)" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "Η δημιουργία αντιγράφων ασφαλείας δεν έχει τελειώσει, έχει προγραμματιστεί επανάληψη της διαδικασίας" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "Η ιστοσελίδα σας δεν έχει μεγάλη επισκεψιμότητα και το UpdraftPlus δεν μπορεί να πάρει τους πόρους που έλπιζε, παρακαλούμε διαβάστε αυτή τη σελίδα:" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "Η αυθεντικοποίηση του%s δεν μπορεί να προχωρήσει, γιατί κάτι άλλο στην ιστοσελίδας σας δημιουργεί πρόβλημα. Δοκιμάστε να απενεργοποιήσετε άλλα πρόσθετα που έχετε εγκατεστημένα κι ενεργοποιήστε ένα προεπιλεγμένο θέμα. (Συγκεκριμένα, ψάχνετε για το στοιχείο που στέλνει (πιθανότατα προειδοποιήσεις/σφάλματα της PHP) πριν αρχίσει η σελίδα. Απενεργοποίηση των ρυθμίσεων εντοπισμού σφαλμάτων μπορεί επίσης να βοηθήσει)." + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "Το όριο μνήμης της PHP (το οποίο ορίζεται από την εταιρία φιλοξενίας της ιστοσελίδας) είναι πολύ χαμηλό. Το UpdraftPlus προσπάθησε να το ανεβάσει ανεπιτυχώς. Αυτό το πρόσθετο ενδέχεται να μην μπορεί να αποδώσει σωστά με όριο μνήμης μικρότερο των 64 Mb, ειδικά αν έχετε ανεβάσει πολύ μεγάλα αρχεία (αν και από την άλλη, αρκετές ιστοσελίδες μπορούν να δουλέψουν επιτυχώς και με όριο τα 32Mb. Η εμπειρία σας μπορεί να διαφέρει)." + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "Προχωρήστε στην ενημέρωση" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "Αφού πατήσετε το κουμπί \"Προχώρησε\" πιο κάτω, μην ακυρώσετε την διαδικασία - περιμένετε να ολοκληρωθεί η διαδικασία λήψης του αντιγράφου ασφαλείας." + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "Αυτόματα αντίγραφα ασφαλείας του UpdraftPlus" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "Παρουσιάστηκαν σφάλματα:" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "Δημιουργία αντιγράφου ασφαλείας με το UpdraftPlus..." + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "Αυτόματη λήψη αντιγράφων ασφαλείας" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "Δημιουργία αντιγράφου ασφαλείας της βάσης δεδομένων με το UpdraftPlus..." + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "Δεν διαθέτετε επαρκή δικαιώματα για να ενημερώσετε αυτή τη σελίδα." + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "θέματα" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "πρόσθετα" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "Εκκίνηση διαδικασίας αυτόματης λήψης αντιγράφου ασφαλείας..." + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "Δημιουργία αντιγράφων ασφαλείας για τα %s και τη βάση δεδομένων με το UpdraftPlus..." + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Αυτόματη δημιουργία αντιγράφων ασφαλείας (κατά περίπτωση) πρόσθετων, θεμάτων και βάσης δεδομένων του WordPress με το UpdraftPlus πριν από αναβάθμιση" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "Αν δεν είστε σίγουρος τότε πρέπει να σταματήσετε αλλιώς ενδέχεται να καταστρέψετε αυτή την εγκατάσταση του WordPress." + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "Αυτό δεν φαίνεται να είναι έγκυρο αντίγραφο ασφαλείας του πυρήνα του WordPress - το αρχείο %s λείπει." + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "Αδυναμία ανοίγματος του αρχείου zip (%s) - δεν ήταν δυνατός ο έλεγχος για την ακεραιότητα του αρχείου. " + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "Αδυναμία ανάγνωσης του αρχείου zip (%s) - δεν ήταν δυνατός ο έλεγχος για την ακεραιότητα του αρχείου." + +#: admin.php:2310 +msgid "More plugins" +msgstr "Περισσότερα πρόσθετα" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "Υποστήριξη" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "Το UpdraftPlus δεν μπόρεσε να βρει το πρόθεμα πίνακα κατά τη σάρωση του αρχείου ασφαλείας της βάσης δεδομένων." + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "Από αυτό το αρχείο ασφαλείας της βάσης δεδομένων λείπουν πίνακες του πυρήνα του Wordpress: %s" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "Κάνετε εισαγωγή από μια νεότερη έκδοση του WordPress (%s) σε μια παλαιότερη (%s). Δεν υπάρχουν εγγυήσεις ότι το WordPress μπορεί να το διαχειριστεί αυτό." + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "Η βάση δεδομένων είναι πολύ μικρή για να είναι έγκυρη βάση δεδομένων WordPress (μέγεθος: %s Kb)." + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "Ενημέρωση Θέματος" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "Ενημέρωση Πρόσθετου" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "Μείνετε ασφαλής με την αυτόματη λήψη αντιγράφων ασφαλείας" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "Απενεργοποίηση (για %s εβδομάδες)" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "Η διαδρομή του φακέλου για τη μεταφορά των αρχείων (%s) δεν υπάρχει - γίνεται επαναφορά (%s)" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "Αν μπορείτε ακόμα να διαβάζετε αυτές τις λέξεις αφότου η σελίδα τελειώσει την φόρτωση της, τότε υπάρχει κάποιο πρόβλημα με τη JavaScript ή το jQuery στην ιστοσελίδα." + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "Το αρχείο μεταφορτώθηκε." + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "Άγνωστη κατάσταση απάντησης διακομιστή:" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "Άγνωστη απάντηση διακομιστή:" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "Θα δοκιμαστεί αυτό το κλειδί αποκρυπτογράφησης:" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "Ακολουθήστε αυτόν τον σύνδεσμο για να δοκιμάσετε να γίνει αποκρυπτογράφηση και κατέβασμα του αρχείου της βάσης δεδομένων στον υπολογιστή σας." + +#: admin.php:584 +msgid "Upload error" +msgstr "Σφάλμα μεταφόρτωσης" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "Το αρχείο φαίνεται να μην είναι άρχειο κρυπτογραφημένης βάσης δεδομένων του UpdraftPlus (τέτοια αρχεία είναι τα αρχεία .gz.crypt που έχουν όνομα όπως: backup_(ώρα)_(όνομα ιστοσελίδας)_(κωδικός)_db.crypt.gz)." + +#: admin.php:582 +msgid "Upload error:" +msgstr "Σφάλμα μεταφόρτωσης:" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "(σιγουρευτείτε ότι προσπαθείτε να ανεβάσετε ένα αρχείο zip το όποιο έχει κατασκευαστεί με το UpdraftPlus)" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "κι ύστερα, αν το επιθυμείτε," + +#: admin.php:572 +msgid "Download to your computer" +msgstr "Αποθήκευση στον υπολογιστή σας" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "Διαγραφή από τον διακομιστή σας" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "Παραδείγματα για S3-συμβατούς παροχείς αποθήκευσης:" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "Δεν θα διαγράψει οποιαδήποτε αρχεία μετά την αποσυσκευασία τους, επειδή δεν υπήρχε χώρος αποθήκευσης στο σύννεφο για αυτό το αντίγραφο ασφαλείας" + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "Φαίνεται ότι σας λείπει ένα ή περισσότερα αρχεία από αυτό το σύνολο πολλαπλών αρχείων." + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "(%d αρχείο(α) στο σετ)." + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "Διαχώρισε τα αρχεία κάθε:" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "Σφάλμα: ο διακομιστής μας έστειλε μια απάντηση (JSON) την οποία δεν μπορούμε να καταλάβουμε." + +#: admin.php:563 +msgid "Warnings:" +msgstr "Προειδοποιήσεις:" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "Σφάλμα: ο διακομιστής έστειλε κενή απάντηση." + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "Αυτό μοιάζει να είναι αρχείο που δημιουργήθηκε με το UpdraftPlus, αλλά αυτή η εγκατάσταση δεν μπορεί να αποφανθεί για αυτό το είδος του αντικειμένου:%s. Μήπως θα πρέπει να εγκαταστήσετε κάποιο πρόσθετο;" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "Τα αρχεία αντιγράφων ασφαλείας έχουν υποστεί επεξεργασία, αλλά υπάρχουν κάποια λάθη. Θα πρέπει να ακυρώσετε τη διαδικασία και να διορθώσετε τυχόν προβλήματα πριν προσπαθήσετε ξανά." + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "Τα αρχεία αντιγράφων ασφαλείας έχουν υποστεί επεξεργασία, αλλά υπάρχουν κάποιες προειδοποιήσεις. Αν όλα είναι εντάξει, πατήστε ξανά Επαναφορά για να συνεχίσετε. Σε αντίθετη περίπτωση, ακυρώστε τη διαδικασία και διορθώστε τυχόν προβλήματα πρώτα." + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "Έχει γίνει επεξεργασία των αρχείων των αντιγράφων ασφαλείας επιτυχώς. Τώρα πατήστε ξανά Επαναφορά για να συνεχίσετε." + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "Φαίνεται ότι λείπουν τα παρακάτω αρχεία από το αντίγραφο ασφαλείας πολλαπλών αρχείων: %s" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "Το αρχείο (%s) βρέθηκε αλλά έχει διαφορετικό μέγεθος (%s) απ' ό,τι αναμενόταν (%s) - ενδέχεται να είναι κατεστραμμένο." + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "Το αρχείο βρέθηκε αλλά το μέγεθός του είναι μηδενικό (πρέπει να το μεταφορτώσετε ξανά): %s" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "Το αρχείο δεν βρέθηκε (πρέπει να το μεταφορτώσετε): %s" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "Δεν υπάρχει τέτοιο αντίγραφο ασφαλείας." + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "Το αρχείο αντιγράφου ασφαλείας για αυτό το αρχείο δεν μπορεί να βρεθεί. Η απομακρυσμένη τοποθεσία αποθήκευσης που χρησιμοποιείτε (%s) δεν μας επιτρέπει να ανακτήσουμε τα αρχεία. Για να εκτελέσετε οποιαδήποτε επαναφορά με τη χρήση του UpdraftPlus, θα πρέπει να αποκτήσετε ένα αντίγραφο αυτού του αρχείου και να το τοποθετήστε το μέσα στον ενεργό φάκελο του UpdraftPlus" + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "Απέτυχε η μετακίνηση του φακέλου (ελέγξτε τα δικαιώματα των αρχείων σας και τον ελεύθερο χώρο στο δίσκο): %s" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "Απέτυχε η μετακίνηση του αρχείου (ελέγξτε τα δικαιώματα των αρχείων σας και τον ελεύθερο χώρο στο δίσκο): %s " + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "Μετακίνηση του πακεταρισμένου αντιγράφου ασφαλείας στη θέση του..." + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "Αποτυχία ανοίγματος του αρχείου zip (%s) - %s" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "Η ριζική διαδρομή του Wordpress στον εξυπηρετητή είναι: %s" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "%s τελικό σημείο " + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "... και πολλά περισσότερα!" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "S3 (Συμβατό)" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "Το αρχείο δεν είναι αποθηκευμένο τοπικά - πρέπει να ανακτηθεί από την απομακρυσμένη τοποθεσία αποθήκευσης" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "Αναζήτηση για %s αρχείο: όνομα αρχείου: %s" + +#: admin.php:4836 +msgid "Final checks" +msgstr "Τελευταίοι έλεγχοι" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "Επιλέξτε αυτό για να διαγράψετε όλα τα περιττά αρχεία αντιγράφων ασφαλείας από το διακομιστή σας μετά το τέλος της δημιουργίας αντιγράφων (δηλαδή αν καταργήσετε την επιλογή αυτή, τότε όλα τα αρχεία που αποστέλλονται από απόσταση θα παραμείνουν και σε τοπικό επίπεδο και τυχόν αρχεία που φυλάσσονται σε τοπικό επίπεδο δεν θα είναι εντός των ορίων διατήρησης)." + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "Αφήστε τα κρυπτογραφημένα αρχεία της βάσης δεδομένων (db.gz.crypt αρχεία) εδώ για να ανεβάσετε για αποκρυπτογράφηση" + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "Η διαδρομή του φακέλου wp-content στον εξυπηρετητή σας είναι: %s" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "Ανεπεξέργαστο ιστορικό αντιγράφων ασφαλείας" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "Προβολή ανεπεξέργαστου ιστορικού αντιγράφων ασφαλείας και λίστας αρχείων" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "Επεξεργασία αρχείων - παρακαλώ περιμένετε..." + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "Παρακαλούμε συμβουλευτείτε τις Συχνές Ερωτήσεις για βοήθεια σχετικά με το τι πρέπει να γίνει με αυτό." + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "Η εγκατάσταση σας του WordPress έχει ένα πρόβλημα με την έξοδο κενού περιεχομένου. Αυτό μπορεί να καταστρέψει τα αντίγραφα ασφαλείας που θα κατεβάσετε από εδώ." + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "Αποτυχία ανοίγματος του αρχείου της βάσης δεδομένων." + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "Αποτυχία εγγραφής της αποκρυπτογραφημένης βάσης δεδομένων στο σύστημα αρχείων. " + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "Γνωστά αντίγραφα ασφαλείας (ανεπεξέργαστα)" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "Αδυναμία απαρίθμησης των αρχείων σε αυτόν τον κατάλογο." + +#: restorer.php:939 +msgid "Files found:" +msgstr "Αρχεία που βρέθηκαν:" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "Χρήση καταλόγου από αντίγραφα ασφαλείας: %s" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "Η ζητηθείσα μηχανή του πίνακα (%s) δεν είναι παρούσα - αλλαγή σε MyISAM." + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "Αυτό μοιάζει με μια μετανάστευση σελίδας (η δημιουργία αντιγράφων ασφαλείας έγινε από μια ιστοσελίδα με μια διαφορετική διεύθυνση/URL), αλλά δεν επιλέξατε τη δυνατότητα να αναζητήσετε και να αντικαταστήσετε τη βάση δεδομένων. Αυτό είναι συνήθως ένα λάθος." + +#: admin.php:4908 +msgid "file is size:" +msgstr "μέγεθος αρχείου:" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "Πηγαίνετε εδώ για περισσότερες πληροφορίες." + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "Κάποια αρχεία ακόμα κατεβαίνουν ή υπόκεινται σε επεξεργασία - παρακαλώ περιμένετε." + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "Αυτό το σετ αντιγράφων ασφαλείας είναι από διαφορετικό ιστοσελίδα - αυτή δεν είναι μια διαδικασία επαναφοράς αλλά είναι διαδικασία μετανάστευσης. Χρειάζεται και το πρόσθετο Migrator για να γίνει αυτή η λειτουργία." + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "Η ζώνη ώρας είναι αυτή που χρησιμοποιείται από το Wordpress, στις Ρυθμίσεις -> Γενικά." + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "Εισάγετε με τη μορφή ΩΩ:ΛΛ (πχ. 14:22)." + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "%s αποτυχία ανεβάσματος αρχείων" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "%s αποτυχία εισόδου" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "Δεν φαίνεται να έχετε πιστοποιηθεί με το %s" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "Αδυναμία πρόσβασης στο %s κατά τη διαγραφή (δείτε το αρχείο καταγραφής για περισσότερες λεπτομέρειες)" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "Δεν φαίνεται να έχετε πιστοποιηθεί με το %s (παράλληλα γίνεται διαγραφή)" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "Λάθος του Dropbox: %s (δείτε το αρχείο καταγραφής για περισσότερες λεπτομέρειες)" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "Λάθος - αποτυχία κατεβάσματος του αρχείου από %s " + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "Λάθος - δεν υπάρχει αυτό το αρχείο στο %s" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "%s Λάθος" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "%s λάθος - αποτυχία ανεβάσματος του αρχείου" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "%s λάθος - αποτυχία επαναδημιουργίας των κομματιών" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "%s αποτυχία πιστοποίησης" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "Λάθος: %s" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "Ο φάκελος που υπεδείχθη για την αποθήκευση των αντιγράφων ασφαλείας υπάρχει αλλά δεν είναι εγγράψιμος." + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "Ο φάκελος που υπεδείχθη για την αποθήκευση των αντιγράφων ασφαλείας δεν υπάρχει. " + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "Προειδοποίηση: %s" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "Η τελευταία δημιουργία αντιγράφων ασφαλείας έγινε:" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "Βρέθηκε ένα πολύ μεγάλο αρχείο: %s (μέγεθος: %s Mb)" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "%s: το αρχείο είναι μη αναγνώσιμο - δεν μπορεί να δημιουργηθεί αντίγραφο ασφαλείας γι' αυτό" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "Ο πίνακας %s έχει πάρα πολλές γραμμές (%s) - ελπίζουμε ότι η εταιρεία που παρέχει τον εξυπηρετητή για τη φιλοξενία της σελίδας σας να παρέχει επαρκείς πόρους για να συμπεριλάβουμε τον πίνακα αυτό στο αντίγραφο ασφαλείας" + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "Συνέβη ένα λάθος κλείνοντας το τελευταίο αρχείο της βάσης δεδομένων" + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "Προειδοποιήσεις που απαντήθηκαν:" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "Η δημιουργία αντιγράφων ασφαλείας τελικώς πέτυχε (με προειδοποιήσεις) και είναι πλέον πλήρης" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "ο ελεύθερος χώρος στο δίσκο σας είναι πολύ λίγος - παραμένουν μόνο %s Mb " + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "Νέα ιστοσελίδα:" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr " ΣΦΑΛΜΑ : Το URL της ιστοσελίδας υπάρχει ήδη." + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "Ιστοσελίδα που έχει μεταναστεύσει (από το UpdraftPlus)" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "Εισάγετε τα στοιχεία για το πού αυτή η νέα ιστοσελίδα θα υπάρχει μέσα στην με πολλές ιστοσελίδες εγκατάστασή σας:" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "Απαιτούνται πληροφορίες για να συνεχιστεί η διαδικασία:" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "Ενεργοποίηση θέματος από το δίκτυο:" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "Επεξεργασία πρόσθετου:" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "Ελέγξτε τα δικαιώματα των αρχείων σας: Αδυναμία επιτυχούς δημιουργίας φακέλου και εισόδου σ' αυτόν:" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "Ορισμένοι διακομιστές διαφημίζουν ως διαθέσιμη το κρυπτογραφημένο FTP αλλά συμβαίνει στη συνέχεια time-out (μετά από αρκετή ώρα) όταν επιχειρείτε να το χρησιμοποιήσετε. Αν συμβαίνει αυτό σε σας πηγαίνετε στο \"Επιλογές για Προχωρημένους\" (παρακάτω) και απενεργοποιήσετε το SSL από εκεί." + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "Η εγκατάσταση PHP του εξυπηρετητή σας δεν περιελάμβανε μια απαραίτητη μονάδα (%s). Παρακαλούμε επικοινωνήστε με την υποστήριξη του παρόχου του εξυπηρετητή σας και ζητήστε να το ενεργοποιήσουν." + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "Παρακαλούμε ελέγξτε τα διαπιστευτήρια πρόσβασης σας." + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "Το λάθος που αναφέρθηκε από το %s ήταν:" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "Παρακαλούμε δώστε τις ζητηθείσες πληροφορίες και μετά συνεχίστε." + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "Αδυναμία ενσωμάτωσης των πινάκων, αντί αυτού γίνεται διαγραφή (%s)" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "Αδυναμία δημιουργίας νέων πινάκων κατά συνέπεια παραλείπεται αυτή τη εντολή (%s)" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "Πληροφορίες ιστοσελίδας:" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "Ο χρήστης της βάσης δεδομένων σας δεν έχει άδεια για τη δημιουργία πινάκων. Θα γίνει προσπάθεια επαναφοράς απλώς αδειάζοντας τους πίνακες. Αυτό θα πρέπει να λειτουργήσει για την περίπτωση που α) κάνετε επαναφορά από μια έκδοση του WordPress με την ίδια τη δομή της βάσης δεδομένων και β) η εισαγόμενη βάση δεδομένων σας δεν περιέχει πίνακες που δεν είναι ήδη υπάρχοντες στην ιστοσελίδα εισαγωγής." + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "Προειδοποίηση:" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "Γίνεται εκτέλεση της διαδικασίας σε μια εγκατάσταση πολλαπλών ιστοσελίδων του Wordpress αλλά το αντίγραφο ασφαλείας σας δεν είναι από μια τέτοια εγκατάσταση. " + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "Παράκαμψη στην επαναφορά του πυρήνα του WordPress κατά την εισαγωγή μιας ιστοσελίδας σε μια εγκατάσταση πολλαπλών ιστοσελίδων. Αν είχατε κάποια αναγκαία αρχεία στο φάκελο του WordPress, τότε θα πρέπει να τα προσθέσετε χειροκίνητα ξανά από το αρχείο zip." + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "Η εγκατάσταση PHP του εξυπηρετητή σας δεν περιελαμβάνει μιααπαραίτητη (για %s) μονάδα (%s). Παρακαλούμε επικοινωνήστε με την υποστήριξη του παρόχου του εξυπηρετητή σας και ζητήστε να το ενεργοποιήσουν." + +#: admin.php:596 +msgid "Close" +msgstr "Έξοδος" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "Απροσδόκητη απάντηση:" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "Για να γίνει αποστολή σε περισσότερες από μία διευθύνσεις παρακαλούμε χωρίστε κάθε διεύθυνση με κόμμα." + +#: admin.php:576 +msgid "PHP information" +msgstr "πληροφορίες PHP" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "βρέθηκε εκτελέσιμο αρχείο zip:" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "εμφάνιση πληροφοριών PHP (phpinfo)" + +#: admin.php:2627 +msgid "Get it here." +msgstr "Πάρτε το εδώ." + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "Τότε δοκιμάστε το πρόσθετο \"Migrator\". Μετά από την πρώτη κιόλας χρήση θα έχετε κερδίσει την τιμή αγοράς σε σχέση με το χρόνο που απαιτείται για να αντιγράψετε την ιστοσελίδα με το χέρι." + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "Θέλετε να μεταναστεύσετε ή να κλωνοποιήσετε/αντιγράψετε μια ιστοσελίδα;" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "Διαβάστε αυτό το άρθρο για να δείτε βήμα-βήμα πως γίνεται η διαδικασία." + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "Μετανάστευση Ιστοσελίδας" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "Διαγραφή... παρακαλώ περιμένετε όσο χρόνο απαιτείται για να ολοκληρωθεί η επικοινωνία με το χώρο απομακρυσμένης αποθήκευσης." + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "Διαγραφή επίσης και από το χώρο απομακρυσμένης αποθήκευσης. " + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "Τελευταία νέα του UpdraftPlus.com:" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "Κλωνοποίηση/Μετανάστευση" + +#: admin.php:2304 +msgid "Premium" +msgstr "Premium" + +#: admin.php:2305 +msgid "News" +msgstr "Νέα" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "Το σετ αντιγράφων ασφαλείας δε βρέθηκε" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "%s - δεν μπορεί να δημιουργηθεί αντίγραφο ασφαλείας αυτής της οντότητας, ο αντίστοιχος φάκελος δεν υπάρχει (%s)" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "Δεσμός RSS" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "Δεσμός ιστολογίου" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "Εγγραφείτε στο ιστολόγιο του UpdraftPlus για να λαμβάνετε ενημερωμένες ειδήσεις και προσφορές" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "Δοκιμή %s Ρυθμίσεων..." + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "Ή, μπορείτε να τα τοποθετήσετε με το χέρι στο φάκελο του UpdraftPlus (συνήθως wp-content/updraft), π.χ. μέσω FTP, και στη συνέχεια να χρησιμοποιήστε το σύνδεσμο \"επανεξέταση\" πιο πάνω." + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "Η λειτουργία αποσφαλμάτωσης του UpdraftPlus είναι σε λειτουργία. Μπορείτε να δείτε πληροφορίες αποσφαλμάτωσης σε αυτή τη σελίδα όχι μόνο για το UpdraftPlus αλλά και για οποιοδήποτε άλλο πρόσθετο έχετε εγκαταστήσει. Παρακαλούμε βεβαιωθείτε ότι η ειδοποίηση που βλέπετε είναι από το UpdraftPlus προτού θέσετε κάποιο αίτημα υποστήριξης." + +#: admin.php:880 +msgid "Notice" +msgstr "Ειδοποίηση" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "Λάθη που προέκυψαν:" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "Γίνεται νέα ανίχνευση (γίνεται έρευνα για αντίγραφα ασφαλείας που έχετε ανεβάσει το χέρι στο εσωτερικό σημείο αποθήκευσης αντιγράφων ασφαλείας)..." + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "Έχει γίνει έναρξη αναζήτησης αυτής της οντότητας" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "Αποθήκευση σε" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "\"%s\" δεν έχει πρωτεύον κλειδί, γίνεται χειροκίνητη αλλαγή που απαιτείται για τη γραμμή %s." + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "γραμμές: %d" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "Χρόνος που χρειάστηκε (δευτερόλεπτα):" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "Λάθη:" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "Εκτέλεση εντολών αναβάθμισης SQL:" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "Αλλαγές που έγιναν:" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "Γραμμές που εξετάστηκαν:" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "Πίνακες που εξετάστηκαν:" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "Δεν μπόρεσε να ανακτηθεί η λίστα των πινάκων" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "Αναζήτηση και αντικατάσταση στη βάση δεδομένων: αντικατάσταση του %s στο αντίγραφο ασφαλείας με το %s" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "Προσοχή: το URL της βάσης δεδομένων της σελίδας (%s) είναι διαφορετικό από αυτό που αναμενόταν (%s)" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "Δεν υπάρχει κάτι για να γίνει: το URL της ιστοσελίδας είναι ήδη: %s" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "Σφάλμα: απρόσμενη κενή παράμετρος (%s, %s)" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "Αυτή η επιλογή δεν επελέγη." + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "Βάση δεδομένων: αναζήτηση και αντικατάσταση του URL της ιστοσελίδας" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "Αποτυχία: δεν έγινε κατανοητό το αποτέλεσμα που επέστρεψε η η λειτουργία %s." + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "Αποτυχία: η λειτουργία %s δεν μπόρεσε να ξεκινήσει." + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "(μάθετε περισσότερα)" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "Αναζήτηση και αντικατάσταση θέσης της τοποθεσίας στη βάση δεδομένων (μετανάστευση)" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "Όλες οι αναφορές για τη θέση της ιστοσελίδας στη βάση δεδομένων θα αντικατασταθούν με το τρέχον URL της ιστοσελίδας σας, το οποίο είναι: %s" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "Ανέβασμα ιστολογίου" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "Πρόσθετα που πρέπει να χρησιμοποιείτε" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "Δεν έχετε δικαιώματα για να αποκτήσετε πρόσβαση σε αυτήν τη σελίδα." + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "Δεν έχετε επαρκή δικαιώματα για να αποκτήσετε πρόσβαση σε αυτήν τη σελίδα." + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "Εγκατάσταση πολλαπλών ιστοσελίδων" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "αρχής γενομένης από την επόμενη φορά στις" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "Αποτυχία: Η τιμή για τη θύρα πρέπει να είναι ακέραιος αριθμός." + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "κωδικός" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "όνομα χρήστη" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "όνομα host" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "Πού να αλλάξει το φάκελο μετά την σύνδεση - συχνά αυτό είναι σχετικό με τον αρχικό σας ριζικό φάκελο." + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "Διαδρομή φακέλου" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "Κωδικός" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "Θύρα" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "Host" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "%s Λάθος: Αδυναμία κατεβάσματος" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "Ελέγξτε τα δικαιώματα αρχείου σας: αδυναμία επιτυχούς να δημιουργίας και εισαγωγής:" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "Κανένα %s δε βρέθηκε" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "Ρητή κρυπτογράφηση χρησιμοποιείται από προεπιλογή. Για να επιβάλετε σιωπηρή κρυπτογράφησης (θύρα 990), προσθέστε: 990 στον FTP server σας παρακάτω." + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "Είναι διαθέσιμο FTP με κρυπτογράφηση και αυτόματα θα δοκιμαστεί πρώτο (πριν γυρίσει και πάλι σε μη κρυπτογραφημένο, αν δεν είναι επιτυχής η διαδικασία), εκτός και αν το απενεργοποιήσετε χρησιμοποιώντας τις επιλογές για προχωρημένους. Το κουμπί 'Δοκιμή Σύνδεσης FTP' θα σας εμφανίσει ποιο είδος σύνδεσης είναι σε χρήση." + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "Δεν δημιουργήθηκε αντίγραφο ασφαλείας για τους φακέλους %s: δε βρέθηκε τίποτα για να γίνει αντίγραφο ασφαλείας" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "Προσέξτε τι εισάγετε - εάν εισάγετε / τότε πραγματικά θα γίνει προσπάθεια να δημιουργηθεί ένα αρχείο zip που περιέχει ολόκληρο το διακομιστή σας." + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "Αν το χρησιμοποιείτε, πληκτρολογήστε μια απόλυτη διαδρομή (δεν είναι σχετική με την εγκατάστασή σας του WordPress)." + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "Εάν δεν είστε σίγουροι τι κάνει αυτή η επιλογή τότε πιθανόν να μην τη χρειάζεστε και καλό θα ήταν να την απενεργοποιήσετε." + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "Εισάγετε το φάκελο:" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "Περισσότερα Αρχεία" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "Πυρήνας του WordPress (συμπεριλαμβανομένων τυχόν προσθηκών στο ριζικό φάκελο του WordPress)" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "Τα παραπάνω αρχεία περιλαμβάνουν τα πάντα σε μια εγκατάσταση του WordPress." + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "Αντικατάσταση του wp-config.php" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "Πυρήνας WordPress " + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "Αποτυχία: Δεν μπορέσαμε να τοποθετήσουμε ένα αρχείο σε αυτόν το φάκελο - παρακαλώ ελέγξτε τα διαπιστευτήριά σας." + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "Αποτυχία" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "WebDAV URL" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "Σφάλμα κατά τη διαδικασία εγγραφής τοπικά: Αποτυχία κατεβάσματος " + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "Σφάλμα κατά το άνοιγμα απομακρυσμένου αρχείου: Αποτυχία κατεβάσματος" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "Κομμάτι %s: Συνέβη λάθος %s " + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "Δε βρέθηκαν ρυθμίσεις για το %s" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "Αποτυχία: συνδεθήκαμε επιτυχώς αλλά δεν μπορέσαμε να δημιουργήσουμε ένα αρχείο στο συγκεκριμένο φάκελο." + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "Επιτυχία: συνδεθήκαμε επιτυχώς και επιβεβαιώσαμε τη δυνατότητα να δημιουργήσουμε ένα αρχείο στο συγκεκριμένο φάκελο (είσοδος τύπου:" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "Αποτυχία:αδυναμία σύνδεσης με επιτυχία με αυτά τα διαπιστευτήρια." + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "Αποτυχία: Δεν δόθηκαν λεπτομέρειες για τον εξυπηρετητή." + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "Πρέπει να υπάρχει ήδη" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "Αν θέλετε κρυπτογράφηση (π.χ. έχετε αποθηκευμένα ευαίσθητα επιχειρηματικά δεδομένα), τότε υπάρχει διαθέσιμο ένα πρόσθετο." + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "Μόνο μη κρυπτογραφημένο FTP υποστηρίζεται από το απλό UpdraftPlus." + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "Το %s όνομα του λογαριασμού σας: %s" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "αν και μέρος των πληροφοριών που επεστράφησαν δεν ήταν τα αναμενόμενα - η χρέωσή σας μπορεί να ποικίλει" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "έχετε πιστοποιηθεί για το λογαριασμό %s" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "υπάρχει ένα πρόσθετο για αυτό το σκοπό." + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "Εάν κάνετε αντίγραφα ασφαλείας για πολλές ιστοσελίδες στο ίδιο Dropbox και χρειάζεται να τα οργανώσετε σε υπο-φακέλους, τότε " + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "Τα αρχεία ασφαλείας αποθηκεύτηκαν στο " + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "Χρειάζεται να χρησιμοποιήσετε υπο-φακέλους;" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "σφάλμα: αποτυχία ανεβάσματος του αρχείου στο %s (δείτε το αρχείο καταγραφής για περισσότερες πληροφορίες)" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "Δε φαίνεται να είστε πιστοποιημένος στο Dropbox" + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "Η επικοινωνία με το %s δεν κρυπτογραφήθηκε. " + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "Η επικοινωνία με το %s κρυπτογραφήθηκε." + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "Αποκτήσαμε πρόσβαση με επιτυχία στον κάδο και δημιουργήσαμε επιτυχώς αρχεία μέσα σε αυτόν. " + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "Αποκτήσαμε πρόσβαση με επιτυχία στον κάδο, αλλά η προσπάθεια να δημιουργηθεί ένα αρχείο σε αυτόν απέτυχε." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "Αποτυχία" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "Αποτυχία: Δεν μπορέσαμε επιτυχώς να έχουμε πρόσβαση ή να δημιουργήσεουμε ένα τέτοιο κάδο. Παρακαλούμε ελέγξτε τα διαπιστευτήρια πρόσβασης σας, και εάν αυτά είναι σωστά τότε δοκιμάστε με ένα άλλο όνομα κάδου (ενδεχομένως κάποιος άλλος χρήστης %s μπορεί να έχει ήδη πάρει το όνομά σας)." + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "Περιοχή" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "Αποτυχία: Δε δόθηκαν στοιχεία για τον κάδο." + +#: methods/s3.php:961 +msgid "API secret" +msgstr "μυστικό API" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "Εισάγετε μόνο ένα όνομα κάδου ή έναν κάδο και τη διαδρομή. Παραδείγματα: mybucket, mybucket/mypath" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "%s τοποθεσία" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "%s μυστικό κλειδί" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "%s κλειδί πρόσβασης" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "Εάν δείτε λάθη σχετικά με τα πιστοποιητικά SSL τότε πηγαίνετε εδώ για βοήθεια." + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "Λάβετε το κλειδί πρόσβασης σας και το μυστικό κλειδί από την κονσόλα σας %s , στη συνέχεια επιλέξτε ένα (μοναδικό παγκοσμίως - όλοι οι %s χρήστες) όνομα κάδου (γράμματα και αριθμοί) (και προαιρετικά μια διαδρομή) που θα χρησιμοποιηθεί για την αποθήκευση. Η κάδος θα δημιουργηθεί για σας εάν δεν υπάρχει ήδη." + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "Σφάλμα %s: Αποτυχία πρόσβασης στον κάδο %s. Ελέγξτε τα δικαιώματα και τα διαπιστευτήριά σας." + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "Σφάλμα %s: Απέτυχε η λήψη του %s. Ελέγξτε τα δικαιώματα και τα διαπιστευτήριά σας." + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "%s λάθος επανασυναρμολόγησης (%s): (δείτε το αρχείο καταγραφής για περισσότερες λεπτομέρειες)" + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "%s μεταφόρτωσης (%s): η επανασυναρμολόγηση απέτυχε (δείτε το αρχείο καταγραφής για περισσότερες λεπτομέρειες)" + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "σφάλμα %s: Το αρχείο %s ήταν απροσδόκητα μικρότερο " + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "σφάλμα %s: Το αρχείο %s έγινε απροσδόκητα μικρότερο " + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "αποστολή %s: η λήψη uploadID για μεταφόρτωση πολλαπλών αρχείων απέτυχε - δείτε το αρχείο καταγραφής για περισσότερες λεπτομέρειες" + +#: methods/email.php:69 +msgid "Note:" +msgstr "Σημείωση:" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "Αντίγραφο ασφαλείας του Wordpress" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "Αποκτήθηκε πρόσβαση στο σημείο αποθήκευσης και δημιουργήθηκαν αρχεία μέσα σε αυτό." + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "Λάθος των Αρχείων στο Σύννεφο - αποκτήθηκε πρόσβαση στο σημείο αποθήκευσης αλλά δεν ήταν δυνατή η δημιουργία ενός αρχείου μέσα σε αυτό" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "Αποτυχία: Δε δόθηκαν λεπτομέρειες για το σημείο αποθήκευσης." + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "Όνομα χρήστη" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "Κλειδί API" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "Αποτυχία: Δε δόθηκε κανένα %s." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "Η μονάδα του UpdraftPlus %s απαιτεί %s. Παρακαλώ μην υποβάλετε οποιαδήποτε αιτήματα υποστήριξης, δεν υπάρχει εναλλακτική λύση." + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "Σημείο αποθήκευσης των Αρχείων στο Σύννεφο" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "Κλειδί API των Αρχείων στο Σύννεφο" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "Όνομα χρήστη των Αρχείων στο Σύννεφο" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "UK" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "US (προεπιλογή)" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "US ή UK Σύννεφο" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "Επίσης, θα πρέπει να διαβάσετε αυτές τις σημαντικές Συχνές Ερωτήσεις." + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "Αποκτήστε ένα κλειδί API από την κονσόλα σας του Rackspace Cloud (διαβάστε τις οδηγίες εδώ), στη συνέχεια επιλέξτε ένα όνομα χώρου αποθήκευσης που θα χρησιμοποιηθεί για την αποθήκευση. Αυτός ο χώρος αποθήκευσης θα δημιουργηθεί για σας εάν δεν υπάρχει ήδη." + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "Γίνεται έλεγχος %s Ρυθμίσεων" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "Λάθος κατεβάσματος απομακρυσμένου αρχείου: Αποτυχία κατεβάσματος (" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "Λάθος κατά το άνοιγμα του τοπικού αρχείου: Αποτυχία κατεβάσματος" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "Λάθος των Αρχείων στο Σύννεφο - Αποτυχία ανεβάσματος αρχείου" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "Σφάλμα %s: Αποτυχία ανεβάσματος" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "Σφάλμα%s: Απέτυχε το άνοιγμα του τοπικού αρχείου" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "Λάθος των Αρχείων στο Σύννεφο , αποτυχία δημιουργίας και προσπέλασης του χώρου αποθήκευσης" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "Αποτυχία πιστοποίησης των Αρχείων στο Σύννεφο" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "Αφού έχετε αποθηκεύσει τις ρυθμίσεις σας (κάνοντας κλικ στο \"Αποθήκευση Αλλαγών\" παρακάτω), επιστρέψτε εδώ μια φορά και κάντε κλικ σε αυτό το σύνδεσμο για να ολοκληρωθεί η πιστοποίηση με το Google." + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "Έλεγχος ταυτότητας με το Google" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "Μυστικό του Client" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "Εάν η Google σας εμφανίσει αργότερα το μήνυμα \"invalid_client\", σημαίνει ότι δεν εισαγάγετε ένα έγκυρο client ID εδώ." + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "Client ID" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "Πρέπει να προσθέσετε το ακόλουθο ως εξουσιοδοτημένη ανακατεύθυνση URI (κάτω από το \"Περισσότερες Επιλογές\"), όταν σας ζητηθεί " + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "Επιλέξτε 'Εφαρμογή διαδικτύου' ως τον τύπο εφαρμογής." + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "Για περισσότερη βοήθεια, η οποία περιλαμβάνει εικόνες οθόνης, ακολουθήστε αυτό το σύνδεσμο. Η περιγραφή πιο κάτω είναι επαρκής για τους πιο έμπειρους χρήστες." + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "Το %s είναι μια εξαιρετική επιλογή, διότι το UpdraftPlus υποστηρίζει κατατμημένες μεταφορτώσεις - δεν έχει σημασία πόσο μεγάλη είναι η ιστοσελίδα σας, το UpdraftPlus μπορεί να την ανεβάσει σε λίγο χρόνο χωρίς να εξουδετερώνεται από χρονικά όρια." + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "Ο λογαριασμός δεν είναι πιστοποιημένος." + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "Αποτυχία μεταφόρτωσης στο %s" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "Ο λογαριασμός σας είναι πλήρης: Ο λογαριασμός σας %s σας έχει μόνο %d bytes ελεύθερα, αλλά το αρχείο που πρέπει να μεταφορτωθεί έχει μέγεθος %d bytes" + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "Δεν έχετε αποκτήσει ακόμη ένα διακριτικό πρόσβασης από το Google - θα πρέπει να πιστοποιήσετε ή να πιστοποιήσετε εκ νέου τη σύνδεσή σας στο Google Drive." + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "έχετε πιστοποιήσει το λογαριασμό σας %s." + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "Επιτυχία" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "Χρήση του μεριδίου σας %s: %s %% χρησιμοποιείται,%s διαθέσιμο" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "Η εξουσιοδότηση απέτυχε" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "Δεν ελήφθη καμία ένδειξη ανανέωσης από το Google. Αυτό συχνά σημαίνει ότι έχετε εισάγει μυστικό πελάτη σας λανθασμένα ή ότι δεν έχουν ακόμη πιστοποιηθεί εκ νέου (πιο κάτω) από τη στιγμή που έγινε διόρθωσή τους. Ελέγξτε το ξανά, και στη συνέχεια ακολουθήστε το σύνδεσμο για την επικύρωση του και πάλι. Τέλος, αν αυτό δεν λειτουργήσει, τότε χρησιμοποιήστε τη λειτουργία για έμπειρους χρήστες για να διαγράψετε όλες τις ρυθμίσεις σας, να δημιουργήσετε ένα νέο clientID/μυστικό στο Google, και κάντε τη διαδικασία ξανά." + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "ακολουθήστε αυτό το σύνδεσμο για να το πάρετε" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "η υποστήριξη του %s είναι διαθέσιμη ως προσθετο" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "Δεν έχετε εγκατεστημένο το πρόσθετο %s του UpdraftPlus - πάρτε το από %s" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "Θα πρέπει να επαναλάβει την πιστοποίηση με το%s, καθώς τα υφιστάμενα διαπιστευτήρια σας δεν λειτουργούν." + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "Εντάξει" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "Το πρόθεμα του πίνακα έχει αλλάξει: γίνεται αλλαγή του-των πεδίου-ων %s του πίνακα αναλόγως:" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "Ολοκληρώθηκε: γραμμές της βάσης δεδομένων που έγινε: %d σε %.2f δευτερόλεπτα " + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "το ερώτημα που τρέχει στη βάση δεδομένων ήταν:" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "θα γίνει επαναφορά ως:" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "Παλιό πρόθεμα πίνακα:" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "Αντίγραφο ασφαλείας του:" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "Πρόσβαση στη βάση δεδομένων: Η άμεση πρόσβαση στη MySQL δεν είναι διαθέσιμη, έτσι χρησιμοποιείται η wpdb (αυτή θα είναι σημαντικά πιο αργή διαδικασία)" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "Αποτυχία ανοίγματος του αρχείου της βάσης δεδομένων " + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "Αποτυχία εύρεσης του αρχείου της βάσης δεδομένων" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "Προειδοποίηση: Είναι ενεργή η ασφαλής λειτουργία της PHP στον εξυπηρετητή σας. Είναι πολύ πιθανόν να έχουν τεθεί χρονικά όρια. Αν συμβαίνει αυτό, τότε θα χρειαστεί να επαναφέρετε το χέρι το αρχείο μέσω phpMyAdmin ή άλλης μεθόδου." + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "wp-config.php από το αντίγραφο ασφαλείας: επαναφορά (σύμφωνα με το αίτημα του χρήστη)" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "wp-config.php από το αντίγραφο ασφαλείας: θα γίνει επαναφορά ως wp-config-backup.php" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "Αδυναμία εγγραφής της αποκρυπτογραφημένης βάσης δεδομένων στο σύστημα αρχείων" + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "Αδυναμία δημιουργίας προσωρινού φακέλου." + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "Αδυναμία διαγραφής του ενεργού φακέλου μετά την επαναφορά." + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "Αδυναμία διαγραφής παλιού φακέλου." + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "Γίνεται εκκαθάριση των περιττών..." + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "Επαναφορά της βάσης δεδομένων (για μια μεγάλη ιστοσελίδα η διαδικασία μπορεί να πάρει πολύ χρόνο - εάν παρουσιαστεί πρόβλημα λήξης χρόνου -timeout- (το οποίο μπορεί να συμβεί εάν ο πάροχος του εξυπηρετητή σας έχει ρυθμίσει τη φιλοξενία σας με περιορισμό των πόρων), τότε θα πρέπει να χρησιμοποιήσετε μια διαφορετική μέθοδο, όπως το phpMyAdmin)..." + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "Η βάση δεδομένων αποκρυπτογραφήθηκε επιτυχώς." + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "Αποκρυπτογραφείται η βάση δεδομένων (μπορεί να διαρκέσει λίγο χρόνο)..." + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "Αποσυσκευάζεται το αντίγραφο ασφαλείας..." + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "Η αντιγραφή αυτής της οντότητας απέτυχε." + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "Δεν είναι διαθέσιμο αντίγραφο ασφαλείας γι' αυτό το αρχείο." + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "Το UpdraftPlus δεν μπορεί να επαναφέρει απευθείας αυτού του είδους την οντότητα. Πρέπει να γίνει επαναφορά με το χέρι." + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "Δεν μπόρεσε να βρεθεί ένα από τα αρχεία για την επαναφορά" + +#: admin.php:5009 +msgid "Error message" +msgstr "Μήνυμα λάθους" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "Τα στοιχεία μητρώου του αντιγράφου ασφαλείας δεν περιέχουν πληροφορίες σχετικά με το κατάλληλο μέγεθος για αυτό το αρχείο." + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "Το αρχείο αναμένεται να έχει μέγεθος:" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "Αν κάνετε ένα αίτημα υποστήριξης, παρακαλούμε να συμπεριλάβετε αυτές τις πληροφορίες:" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "ΑΚΥΡΩΣΗ: Δε βρέθηκαν οι πληροφορίες για το ποιες οντότητες να επαναφερθούν." + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "Επαναφορά του UpdraftPlus: Πρόοδος " + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "Αυτό το αντίγραφο ασφαλείας δεν υπάρχει στο ιστορικό των αντιγράφων ασφαλείας - η επαναφορά ακυρώθηκε. Σφραγίδα χρόνου:" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "Αφού πατήσετε αυτό το κουμπί, θα σας δοθεί η δυνατότητα να επιλέξετε ποια μέρη θέλετε να επαναφέρετε " + +#: admin.php:4572 +msgid "Press here to download" +msgstr "Πατήστε εδώ για να μεταφορτώσετε" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "Διαγραφή αυτού του συνόλου αντιγράφων ασφαλείας" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "Καλά νέα: Η επικοινωνία με το %s μπορεί να κρυπτογραφηθεί. Εάν δείτε λάθη που έχουν να κάνουν με την κρυπτογράφηση παρακαλούμε ανατρέξτε στις 'Ρυθμίσεις για προχωρημένους' για περισσότερη βοήθεια." + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "Η εγκατάσταση της PHP/Curl στον εξυπηρετητή σας δεν υποστηρίζει πρόσβαση https. Υπάρχει αδυναμία πρόσβασης του %s χωρίς αυτό. Παρακαλούμε επικοινωνήστε με το τμήμα υποστήριξης του παρόχου του εξυπηρετητή σας. %s απαιτεί Curl+https. Παρακαλούμε μην υποβάλετε οποιαδήποτε αιτήματα υποστήριξης, δεν υπάρχει εναλλακτική λύση." + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "Η εγκατάσταση της PHP/Curl στον εξυπηρετητή σας δεν υποστηρίζει πρόσβαση https. Η επικοινωνίες με το %s δε θα είναι κρυπτογραφημένες. Ζητήστε από τον πάροχο σας να εγκαταστήσει το Curl/SSL για να έχετε τη δυνατότητα κρυπτογράφησης (με χρήση ενός πρόσθετου). " + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "Η εγκατάσταση της PHP στον εξυπηρετητή σας δεν συμπεριλαμβάνει μια απαραίτητη μονάδα %s). Παρακαλούμε επικοινωνήστε με το τμήμα υποστήριξης του παρόχου του εξυπηρετητή σας." + +#: admin.php:4062 +msgid "Save Changes" +msgstr "Αποθήκευση Αλλαγών" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "Κάνοντας αυτή την επιλογή μειώνετε το επίπεδο ασφάλειας εμποδίζοντας το UpdraftPlus από το να χρησιμοποιήσει τεχνολογία SSL για την πιστοποίηση και την κρυπτογραφημένη μεταφορά, όπου αυτό είναι δυνατό. Σημειώστε πως κάποιοι πάροχοι συστημάτων απομακρυσμένης αποθήκευσης στο σύννεφο δεν το επιτρέπουν αυτό (π.χ. το Dropbox), κατά συνέπεια με παρόχους αυτού του είδους αυτή η ρύθμιση δε θα έχει καμία επίδραση." + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "Πλήρης απενεργοποίηση του SSL όπου αυτό είναι δυνατό" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "Σημειώστε πως δε χρησιμοποιούν κατ' ανάγκη όλες οι μέθοδοι αποθήκευσης στο σύννεφο πιστοποίηση SSL." + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "Κάνοντας αυτή την επιλογή μειώνετε το επίπεδο ασφάλειας εμποδίζοντας το UpdraftPlus από το να επιβεβαιώσει την ταυτότητα των ιστοσελίδων στις οποίες συνδέεται (π.χ. Dropbox, Google Drive). Αυτό σημαίνει πως το UpdraftPlus θα χρησιμοποιεί SSL μόνο για την κρυπτογράφηση της κυκλοφορίας και όχι για την πιστοποίηση." + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "Να μην επαληθευτούν τα πιστοποιητικά SSL " + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "Από προεπιλογή το UpdraftPlus χρησιμοποιεί δικό της αρχείο των SSL πιστοποιητικών για να επιβεβαιώσει την ταυτότητα των απομακρυσμένων τοποθεσιών (π.χ. για να βεβαιωθεί ότι συνδιαλέγεται με το πραγματικό Dropbox, Amazon S3, κλπ., και όχι με κάποιον εισβολέα). Κρατάμε το αρχείο μας αυτό διαρκώς ενημερωμένο. Ωστόσο, αν λαμβάνετε ένα μήνυμα λάθους για το SSL, διαλέγοντας αυτή την επιλογή (η οποία επιβάλλει στο UpdraftPlus να χρησιμοποιήσει αντ' αυτού τη συλλογή πιστοποιητικών του εξυπηρετητή σας) μπορεί να βοηθήσει." + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "Χρήση των πιστοποιητικών SSL του εξυπηρετητή σας" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "Εάν αυτό έγινε ανεπιτυχώς ελέγξτε τα δικαιώματα στον εξυπηρετητή σας ή αλλάξτε το σε έναν άλλο φάκελο που να είναι εγγράψιμος στον εξυπηρετητή σας από τη διεργασία." + +#: admin.php:3697 +msgid "click here" +msgstr "κάντε κλικ εδώ" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "ή, για να επαναφέρετε αυτή την επιλογή" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "Ο φάκελος που υπεδείχθη για τα αντίγραφα ασφαλείας είναι εγγράψιμος, πράγμα που είναι καλό. " + +#: admin.php:4009 +msgid "Backup directory" +msgstr "Φάκελος αντιγράφων ασφαλείας" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "Διαγραφή τοπικού αντιγράφου ασφαλείας" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "κάντε κλικ εδώ για να δείτε μερικές ακόμα επιλογές, μην ασχοληθείτε με αυτό εκτός αν έχετε κάποιο πρόβλημα ή αν είστε περίεργος." + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "Προβολή ρυθμίσεων για προχωρημένους" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "Ρυθμίσεις για προχωρημένους" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "Λειτουργία αποσφαλμάτωσης " + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "Σύνθετες ρυθμίσεις / Ρυθμίσεις αποσφαλμάτωσης " + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "Ζητώντας την έναρξη της δημιουργίας αντιγράφων ασφαλείας..." + +#: admin.php:591 +msgid "Cancel" +msgstr "Άκυρο" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "Κανένα" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "Επιλέξτε το χώρο απομακρυσμένης αποθήκευσης" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "Χειροκίνητη αποκρυπτογράφηση αντιγράφου ασφαλείας της βάσης δεδομένων" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "Φράση κρυπτογράφησης της βάσης δεδομένων" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "Ηλεκτρονικό ταχυδρομείο" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "Τα παραπάνω είναι όλα όσα μπορούν να συμπεριληφθούν στο αντίγραφο ασφαλείας, εκτός από τον τον ίδιο τον πυρήνα του WordPress τον οποίο μπορείτε να κατεβάσετε εκ νέου από το WordPress.org." + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "Να εξαιρεθούν αυτά:" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "Όλοι οι άλλοι φάκελοι που βρίσκονται μέσα στο wp-content" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "Να συμπεριλαμβάνονται στα αρχεία του αντιγράφου ασφαλείας" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "π.χ. εάν ο εξυπηρετητής σας είναι απασχολημένος τη μέρα και θέλετε να ληφθεί το αντίγραφο ασφαλείας τη νύχτα" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "Για να ρυθμίσετε την ώρα που θα λαμβάνεται το αντίγραφο ασφαλείας," + +#: admin.php:3683 +msgid "Monthly" +msgstr "Μηνιαία" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "Δεκαπενθήμερα" + +#: admin.php:3681 +msgid "Weekly" +msgstr "Εβδομαδιαία" + +#: admin.php:3680 +msgid "Daily" +msgstr "Ημερήσια" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "Μεταφόρτωση αρχείου καταγραφής" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "Ο φάκελος υπάρχει, αλλά ο διακομιστής σας δεν έχει άδεια για να γράψει σε αυτό." + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "Ο φάκελος δημιουργήθηκε, αλλά έπρεπε να αλλάξουμε τα δικαιώματα του αρχείου σε 777 (world-writable) για να είμαστε σε θέση να γράψουμε σε αυτό. Θα πρέπει να ελέγξετε με τον πάροχο φιλοξενίας σας ότι αυτό δεν θα προκαλέσει κανένα πρόβλημα" + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "Η αίτηση στο σύστημα αρχείων για τη δημιουργία του φακέλου απέτυχε." + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "Διαγραφή" + +#: admin.php:3418 +msgid "show log" +msgstr "προβολή αρχείου καταγραφής" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "Αυτό το κουμπί θα διαγράψει όλες τις ρυθμίσεις του UpdraftPlus - είστε σίγουροι ότι θέλετε να το κάνετε αυτό;" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "μέτρηση" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "Σημειώστε καλά: Η μέτρηση βασίζεται σε αυτό που ήταν, ή δεν ήταν, εξαιρουμένης της τελευταίας φοράς που αποθηκεύσατε τις επιλογές." + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "Συνολικά (μη συμπιεσμένα) δεδομένα στο δίσκο:" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "Όχι" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "Ναι" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "%s έκδοση:" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "Τρέχουσα χρήση μνήμης" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "Μέγιστη χρήση μνήμης" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "Εξυπηρετητής: " + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "Παρακαλούμε δείτε το UpdraftPlus Premium ή το αυτόνομο πρόσθετο Multisite." + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "Χρειάζεστε υποστήριξη για το WordPress πολλαπλών ιστοσελίδων;" + +#: admin.php:2654 +msgid "Multisite" +msgstr "Πολλαπλές ιστοσελίδες" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "Εκτέλεση δημιουργίας αντιγράφου ασφαλείας μια φορά" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "Διαβάστε αυτό το άρθρο το οποίο θα σας βοηθήσει να μάθετε χρήσιμα πράγματα πριν κάνετε επαναφορά. " + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "Μπορείτε να αναζητήσετε και να αντικαταστήσετε τη βάση δεδομένων σας (για τη μετάβαση ενός δικτυακού τόπου σε μια νέα τοποθεσία/διεύθυνση URL) με το πρόσθετο Migrator - ακολουθήστε αυτό το σύνδεσμο για περισσότερες πληροφορίες" + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "%s επιλογές επαναφοράς:" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "Θα πρέπει να το επαναφέρετε χειροκίνητα." + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "Η επόμενη οντότητα δεν μπορεί να επαναφερθεί αυτόματα: \"%s\"." + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "Ο εξυπηρετητής σας έχει ενεργοποιημένη τη λεγόμενη ασφαλή_λειτουργία του PHP." + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "Επιλέξτε τα στοιχεία που θα επαναφερθούν" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "Η επαναφορά θα αντικαταστήσει τα θέματα, τα πρόσθετα, τις προσθήκες, τη βάση δεδομένων και/ή άλλους φακέλους περιεχομένου αυτής της ιστοσελίδας (σύμφωνα με όσα περιέχονται στο σετ αντιγράφου ασφαλείας, και την επιλογή σας)." + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "Επαναφορά αντιγράφου ασφαλείας από" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "Επαναφορά αντιγράφου ασφαλείας" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "Διαγραφή σετ αντιγράφων ασφαλείας" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "Λάθος μεταφόρτωσης: ο εξυπηρετητής έστειλε μια απάντηση την οποία δεν μπορούμε να καταλάβουμε." + +#: admin.php:570 +msgid "You should:" +msgstr "Θα πρέπει:" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "Λάθος:" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "υπολογισμός..." + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "UpdraftPlus - Ανέβασμα αρχείων αντιγράφων ασφαλείας" + +#: admin.php:3020 +msgid "refresh" +msgstr "ανανέωση" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "Χώρος αποθήκευσης σε χρήση στο διακομιστή από το UpdraftPlus" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "Google Drive" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "Εάν χρησιμοποιείτε αυτόν τον φυλλομετρητή τότε απενεργοποιήστε το Turbo/Road mode." + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "Φυλλομετρητής Opera" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "Περισσότερες εργασίες:" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "Κατεβάστε το πιο πρόσφατα τροποποιημένο αρχείο καταγραφής" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "(Τίποτα δεν έχει ακόμη συνδεθεί)" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "Τελευταίο μήνυμα αρχείου καταγραφής" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "Επαναφορά" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "Λήψη αντιγράφου ασφαλείας" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "Βάση δεδομένων" + +#: admin.php:229 +msgid "Files" +msgstr "Αρχεία" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "Επόμενη προγραμματισμένη λήψη αντιγράφων ασφαλείας " + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "Στον ίδιο χρόνο όπως και τα αρχεία των αντιγράφων ασφαλείας" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "Δεν έχει επί του παρόντος προγραμματιστεί τίποτα " + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "Η διεπαφή του διαχειριστή χρησιμοποιεί τη JavaScript σε μεγάλο βαθμό. Θα πρέπει είτε να την ενεργοποιήσετε στο πρόγραμμα περιήγησής σας είτε να χρησιμοποιήσετε ένα πρόγραμμα περιήγησης που υποστηρίζει τη JavaScript." + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "προειδοποίηση JavaScript " + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "Διαγραφή Παλαιών Φακέλων" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "Το τρέχων όριο είναι:" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "Έγινε επαναφορά από το αντίγραφο ασφαλείας σας" + +#: admin.php:2310 +msgid "Version" +msgstr "Έκδοση" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "Ιστοσελίδα του αρχι-προγραμματιστή" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "Οι ρυθμίσεις σας διεγράφησαν." + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "Η δημιουργία φακέλου των αντιγράφων ασφαλείας έγινε επιτυχώς." + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "Αποτυχία δημιουργίας φακέλου των αντιγράφων ασφαλείας" + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "Η διαγραφή των παλαιών φακέλων απέτυχε για κάποιο λόγο. Ίσως χρειαστεί να το κάνετε χειροκίνητα." + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "Οι παλαιοί φάκελοι διεγράφησαν επιτυχώς." + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "Διαγραφή παλαιών φακέλων " + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "Επιστροφή στις Ρυθμίσεις του UpdraftPlus " + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "Ενέργειες" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "Επιτυχής επαναφορά!" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "Λανθασμένη μορφή αρχείου - αυτό δε μοιάζει με κρυπτογραφημένο αρχείο βάσης δεδομένων που έχει δημιουργηθεί από το UpdraftPlus " + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "Λανθασμένη μορφή αρχείου - αυτό δε μοιάζει με αρχείο που έχει δημιουργηθεί από το UpdraftPlus" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "Δεν υπάρχει τοπικό αντίγραφο." + +#: admin.php:2072 +msgid "Download in progress" +msgstr "Μεταφόρτωση σε εξέλιξη" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "Το αρχείο είναι έτοιμο." + +#: admin.php:2043 +msgid "Download failed" +msgstr "Αποτυχία μεταφόρτωσης " + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "Λάθος" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "Δεν μπόρεσε να βρεθεί αυτή η εργασία - μήπως έχει ήδη τελειώσει;" + +#: admin.php:1854 +msgid "Job deleted" +msgstr "Η εργασία διεγράφη. " + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "Εντάξει. Θα πρέπει σύντομα να δείτε δραστηριότητα στο πεδίο \"Τελευταίο μήνυμα αρχείου καταγραφής\" πιο κάτω." + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "Τίποτα δεν έχει ακόμη συνδεθεί" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "Παρακαλούμε συμβουλευτείτε τις Συχνές Ερωτήσεις αν έχετε προβλήματα κατά τη λήψη των αντιγράφων ασφαλείας." + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "Η ιστοσελίδα σας φιλοξενείτε χρησιμοποιώντας τον %s εξυπηρετητή." + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "Το UpdraftPlus δεν υποστηρίζει επίσημα εκδόσεις του WordPress πριν από την %s. Μπορεί να λειτουργήσει για εσάς αλλά αν όχι, παρακαλούμε να γνωρίζετε πως δε θα υπάρξει διαθέσιμη υποστήριξη μέχρι να αναβαθμίσετε το WordPress." + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "Έχετε λιγότερο από %s ελεύθερο χώρο στο δίσκο που το UpdraftPlus έχει ρυθμιστεί να χρησιμοποιήσει για να δημιουργήσει αντίγραφα ασφαλείας. Το UpdraftPlus είναι πιθανό να ξεμείνει από διαθέσιμο χώρο. Επικοινωνήστε με το λειτουργό του διακομιστή σας (π.χ. την εταιρεία του εξυπηρετητή σας) για να επιλύσετε αυτό το ζήτημα." + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "Προειδοποίηση" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "Πρόσθετα / Πρόσθετη Υποστήριξη " + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "Ρυθμίσεις" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "Επιτρεπόμενα Αρχεία" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "Αδυναμία δημιουργίας του αρχείου zip %s. συμβουλευτείτε το αρχείο καταγραφής για περισσότερες πληροφορίες." + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "Άπειρη αναδρομή: συμβουλευτείτε το αρχείο καταγραφής σας για περισσότερες πληροφορίες" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "Δείτε το UpdraftPlus.Com για βοήθεια, πρόσθετα και υποστήριξη" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "Θέλετε ακόμα περισσότερα χαρακτηριστικά και βοήθεια; Δείτε το UpdraftPlus Premium" + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "Παρακαλούμε βοηθήστε το UpdraftPlus κάνοντας θετική κριτική στο wordpress.org" + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "Σας αρέσει το UpdraftPlus και μπορείτε να αφιερώσετε ένα λεπτό;" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "Μπορείτε να μεταφράσετε; Θέλετε να βελτιώσετε το UpdraftPlus για ομιλούντες την δική σας γλώσσα;" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "Το αρχείο δεν βρέθηκε" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "Το κλειδί αποκρυπτογράφησης που χρησιμοποιήθηκε είναι το:" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "Η αποκρυπτογράφηση απέτυχε. Η πιο πιθανή αιτία είναι ότι χρησιμοποιήσατε λάθος κλειδί." + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "Η αποκρυπτογράφηση απέτυχε. Το αρχείο της βάσης δεδομένων είναι κρυπτογραφημένο αλλά δεν έχει εισαχθεί κανένα κλειδί κρυπτογράφησης." + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "Αδυναμία ανοίγματος του αρχείου του αντιγράφου ασφαλείας για εγγραφή" + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "Δεν ήταν δυνατή η αποθήκευση του ιστορικού των αντιγράφων ασφαλείας επειδή δεν υπάρχει πίνακας αντιγράφων ασφαλείας. Η δημιουργία αντιγράφων ασφαλείας πιθανώς απέτυχε." + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "Αδυναμία ανάγνωσης του φακέλου" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "Ο φάκελος (%s) των αντιγράφων ασφαλείας δεν είναι εγγράψιμος ή δεν υπάρχει." + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "Η λήψη αντιγράφων ασφαλείας του WordPress ολοκληρώθηκε" + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "Η προσπάθεια για τη λήψη αντιγράφων ασφαλείας τελείωσε, προφανώς όμως ανεπιτυχώς" + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "Η διαδικασία λήψης αντιγράφων ασφαλείας ξεκίνησε και ολοκληρώθηκε επιτυχώς" + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "Παρουσιάστηκε σφάλμα κρυπτογράφησης κατά την κρυπτογράφηση της βάσης δεδομένων. Η κρυπτογράφηση ματαιώθηκε." + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "Αδυναμία δημιουργίας αρχείων στο φάκελο των αντιγράφων ασφαλείας. Η δημιουργία αντιγράφων ασφαλείας ματαιώθηκε - ελέγξτε τις ρυθμίσεις του UpdraftPlus." + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "Άλλα" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "Μεταφορτώσεις" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "Θέματα" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "Πρόσθετα" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "Δεν βρέθηκε κανένα αρχείο καταγραφής." + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "Το αρχείο καταγραφής δεν μπορεί να διαβαστεί." + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "Σημείωση του UpdraftPlus:" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "Αντίγραφα ασφαλείας του UpdraftPlus " \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-es_CO.mo b/plugins/updraftplus/languages/updraftplus-es_CO.mo new file mode 100644 index 0000000..4f4f16a Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-es_CO.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-es_CO.po b/plugins/updraftplus/languages/updraftplus-es_CO.po new file mode 100644 index 0000000..8f8135f --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-es_CO.po @@ -0,0 +1,6109 @@ +# Translation of UpdraftPlus in Spanish (Colombia) +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2015-04-24 02:15:50+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: es_CO\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "" + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "" + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "" + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "" + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "" + +#: addons/webdav.php:91 +msgid "Path" +msgstr "" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "" + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "" + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "" + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "" + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "" + +#: admin.php:2310 +msgid "FAQs" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "" + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "" + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "" + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "" + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "" + +#: methods/ftp.php:355 +msgid "login" +msgstr "" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "" + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "" + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "" + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "" + +#: admin.php:2604 +msgid "Now" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "" + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "" + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "" + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "" + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "" + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "" + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "" + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "" + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "" + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "" + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "" + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "" + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "" + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "" + +#: admin.php:3420 +msgid "stop" +msgstr "" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "" + +#: admin.php:3092 +msgid "this backup set" +msgstr "" + +#: admin.php:3020 +msgid "calculate" +msgstr "" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "" + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "" + +#: admin.php:601 +msgid "Saving..." +msgstr "" + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:557 +msgid "Fetching..." +msgstr "" + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "" + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "" + +#: admin.php:2884 +msgid "Dismiss" +msgstr "" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "" + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "" + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "" + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "" + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "" + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "" + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "" + +#: admin.php:3860 +msgid "File Options" +msgstr "" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "" + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "" + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "" + +#: admin.php:5157 +msgid "settings" +msgstr "" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "" + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "" + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "" + +#: admin.php:442 +msgid "Extensions" +msgstr "" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "" + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "" + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "" + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "" + +#: addons/azure.php:524 +msgid "container" +msgstr "" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "" + +#: addons/azure.php:523 +msgid "optional" +msgstr "" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "" + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "" + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "" + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "" + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "" + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "" + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "" + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "" + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "" + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "" + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "" + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "" + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "" + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "" + +#: restorer.php:767 +msgid "Deferring..." +msgstr "" + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "" + +#: admin.php:3081 +msgid "Deselect" +msgstr "" + +#: admin.php:3080 +msgid "Select all" +msgstr "" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "" + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "" + +#: admin.php:634 +msgid "For backups older than" +msgstr "" + +#: admin.php:633 +msgid "week(s)" +msgstr "" + +#: admin.php:632 +msgid "hour(s)" +msgstr "" + +#: admin.php:631 +msgid "day(s)" +msgstr "" + +#: admin.php:630 +msgid "in the month" +msgstr "" + +#: admin.php:629 +msgid "day" +msgstr "" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "" + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "" + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "" + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "" + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "" + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "" + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "" + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "" + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "" + +#: admin.php:607 +msgid "Update quota count" +msgstr "" + +#: admin.php:606 +msgid "Counting..." +msgstr "" + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "" + +#: admin.php:603 +msgid "Connecting..." +msgstr "" + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "" + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "" + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "" + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "" + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "" + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "" + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "" + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "" + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "" + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "" + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "" + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "" + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "" + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "" + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "" + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "" + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "" + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "" + +#: admin.php:4423 +msgid "Site" +msgstr "" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "" + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "" + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "" + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "" + +#: admin.php:617 +msgid "Deleting..." +msgstr "" + +#: admin.php:616 +msgid "key name" +msgstr "" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "" + +#: admin.php:611 +msgid "Creating..." +msgstr "" + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "" + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "" + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "" + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "" + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "" + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "" + +#: addons/migrator.php:1861 +msgid "key" +msgstr "" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "" + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "" + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "" + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "" + +#: admin.php:608 +msgid "Adding..." +msgstr "" + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "" + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "" + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "" + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "" + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "" + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "" + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "" + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "" + +#: methods/email.php:73 +msgid "configure it here" +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "Recuerda guardar tus ajustes." + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "Estás usando ahora una cuenta de usuario IAM para acceder a tu bucket" + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "S3 bucket" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "China (Beijing) (restringido)" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "América del Sur (São Paulo)" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "Asia Pacífíco (Tokio)" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "Asia Pacífico (Sídney)" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "Asia Pacífico (Singapur)" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "UE (Frankfurt)" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "UE (Irlanda)" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "Occidente EEUU - Gubernamental (restringido)" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "Occidente EEUU (California N.)" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "Occidente EEUU (Oregon)" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "Estándar EEUU (predeterminada)" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "Región de almacenamiento S3" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "Nuevo nombre de usuario IAM" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "Llave secreta de administrador" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "Llave de acceso de administrador" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "Entonces, estas credenciales de acceso de bajo poder pueden ser usadas, en lugar de guardar sus llaves administrativas." + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "Estos serán usados para crear un nuevo usuario y par de llaves con una política IAM adjunta que sólo le permitirá acceder al bucket indicado." + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "Ingresa tus llaves de acceso/secretas administrativas de Amazon S3 (estas deben se un par con los permisos suficientes para crear nuevos usuarios y buckets), y un nuevo usuario (único) para el nuevo usuario y un nombre de bucket." + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "Crear un nuevo usuario IAM y un bucket S3" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "Llave Secreta: %s" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "Llave de Acceso: %s" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "Error al aplicar la Política del Usuario" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "La operación para crear la Llave de Acceso del usuario falló." + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "Fallo al crear la Llave de Acceso del usuario" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "Operación IAM falló (%s)" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "Conflicto: ese usuario existe" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "Falla: No logramos acceder correctamente o crear ese bucket. Por favor verifica tus credenciales de acceso, y si son correctas entonces trata con un nuevo nombre de bucket (puede que otro usuario AWS tenga ese nombre)" + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "Falló la autenticación AWS " + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "No se puede crear un nuevo usuario AWS, ya que el antiguo conjunto de herramientas AWS está siendo utilizado." + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "Necesitas ingresar un bucket" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "Necesitas ingresar un nuevo usuario IAM" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "Necesitas ingresar una llave descreta de administrador" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "Necesitas ingresar una clave de acceso de administrador" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "Si tienes un usuario administrador AWS, entonces puedes usar este asistente para crear rápidamente un nuevo usuario AWS (IAM) con acceso a sólo este bucket (en lugar de tu cuenta entera)" + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "Para crear un nuevo sub-usuario IAM y la llave de acceso que sólo tiene acceso a este bucket, use este complemento." + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "Para soporte personal, la posibilidad de copiar sitios, mas destinos de almacenamiento, respaldos encriptados para seguridad, varios destinos de respaldo, mejores reportes, sin anuncios y mucho más, verifique las versión premium de UpdraftPlus - el plugin más popular del mundo para respaldos." + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "Noticias UpdraftPlus, material de entrenamiento de alta calidad para desarrolladores de Wordpress y propietarios de sitios, y noticias generales de Wordpress. Puedes cancelar la suscripción en cualquier momento." + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "Ruta de subidas (%s) ha cambiado durante la migration - restableciendose (a: %s)" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "Este mayormente significa que compartes un servidor web con un sitio hhacekado que ha sido utilizado en ataques previos." + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "Parece que la dirección IP de tu servidor web (%s) está bloqueada." + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "UpdraftPlus.com ha contestado con \"Acceso Denegado\"" + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "" + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "" + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "Boletín de noticias gratis" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "Gracias por respaldar con UpdraftPlus!" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "Descartar (por %s meses)" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "" + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "" + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "" + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "" + +#: admin.php:2831 +msgid "Personal support" +msgstr "" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "" + +#: admin.php:2718 +msgid "Get it from" +msgstr "" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "" + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "" + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "" + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "" + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "" + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "" + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "" + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "" + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "" + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "" + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "" + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "" + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "" + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "" + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "" + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "" + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "" + +#: admin.php:4368 +msgid "Backup date" +msgstr "" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "" + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "" + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "" + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "" + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "" + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "" + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "" + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "" + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "" + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "" + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "" + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "" + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "" + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "" + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "" + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "" + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "" + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "" + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "" + +#: backup.php:829 +msgid "Incremental" +msgstr "" + +#: backup.php:829 +msgid "Full backup" +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "" + +#: backup.php:895 +msgid "read more at %s" +msgstr "" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "" + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "" + +#: admin.php:3872 +msgid "Database Options" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "" + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "" + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "" + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "" + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "" + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "" + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "" + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "" + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "" + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "" + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "" + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "" + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "" + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "" + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "" + +#: admin.php:4499 +msgid "External database" +msgstr "" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "" + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "" + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "" + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "" + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "" + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "" + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "" + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "" + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "" + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "" + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "" + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "" + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "" + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "" + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "" + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "" + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "" + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "" + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "" + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "" + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "" + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "" + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "" + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "" + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "" + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "" + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "" + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "" + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "" + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "" + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "" + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "" + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "" + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "" + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "" + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "" + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "" + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "" + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "" + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "" + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "" + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "" + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "" + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "" + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "" + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "" + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "" + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "" + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "" + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "" + +#: admin.php:1528 +msgid "Constants" +msgstr "" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "" + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "" + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "" + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "" + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "" + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "" + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "" + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "" + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "" + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "" + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "" + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "" + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "" + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "" + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "" + +#: admin.php:556 +msgid "Trying..." +msgstr "" + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "" + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "" + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "" + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "" + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "" + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "" + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "" + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "" + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "" + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "" + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr "" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr "" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "" + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "" + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "" + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "" + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "" + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "" + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "" + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "" + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "" + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "" + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "" + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "" + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "" + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "" + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "" + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "" + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "" + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "" + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "" + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "" + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "" + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "" + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "" + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "" + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "" + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "" + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "" + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "" + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "" + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "" + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "" + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "" + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "" + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "" + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "" + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "" + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "" + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "" + +#: admin.php:3359 +msgid "table: %s" +msgstr "" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "" + +#: restorer.php:646 +msgid "file" +msgstr "" + +#: restorer.php:639 +msgid "folder" +msgstr "" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "" + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "" + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "" + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "" + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "" + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "" + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "" + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "" + +#: admin.php:2310 +msgid "More plugins" +msgstr "" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "" + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "" + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "" + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "" + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "" + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "" + +#: admin.php:584 +msgid "Upload error" +msgstr "" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "" + +#: admin.php:582 +msgid "Upload error:" +msgstr "" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "" + +#: admin.php:572 +msgid "Download to your computer" +msgstr "" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "" + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "" + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "" + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "" + +#: admin.php:563 +msgid "Warnings:" +msgstr "" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "" + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "" + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "" + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "" + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "" + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "" + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "" + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "" + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "" + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "" + +#: admin.php:4836 +msgid "Final checks" +msgstr "" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "" + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "" + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "" + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "" + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "" + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "" + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "" + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "" + +#: restorer.php:939 +msgid "Files found:" +msgstr "" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "" + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "" + +#: admin.php:4908 +msgid "file is size:" +msgstr "" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "" + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "" + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "" + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "" + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "" + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "" + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "" + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "" + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "" + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "" + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "" + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "" + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "" + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "" + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "" + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "" + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "" + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "" + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "" + +#: admin.php:596 +msgid "Close" +msgstr "" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "" + +#: admin.php:576 +msgid "PHP information" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "" + +#: admin.php:2627 +msgid "Get it here." +msgstr "" + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "" + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "" + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "" + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "" + +#: admin.php:2304 +msgid "Premium" +msgstr "" + +#: admin.php:2305 +msgid "News" +msgstr "" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "" + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "" + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "" + +#: admin.php:880 +msgid "Notice" +msgstr "" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "" + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "" + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "" + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "" + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "" + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "" + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "" + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "" + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "" + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "" + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "" + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "" + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "" + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "" + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "" + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "" + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "" + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "" + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "" + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "" + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "" + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "" + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "" + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "" + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "" + +#: methods/s3.php:961 +msgid "API secret" +msgstr "" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "" + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "" + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "" + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "" + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "" + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "" + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "" + +#: methods/email.php:69 +msgid "Note:" +msgstr "" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "" + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "" + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "" + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "" + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "" + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "" + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "" + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "" + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "" + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "" + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "" + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "" + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "" + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "" + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "" + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "" + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "" + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "" + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "" + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "" + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "" + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "" + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "" + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "" + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "" + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "" + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "" + +#: admin.php:5009 +msgid "Error message" +msgstr "" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "" + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "" + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "" + +#: admin.php:4572 +msgid "Press here to download" +msgstr "" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "" + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "" + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "" + +#: admin.php:4062 +msgid "Save Changes" +msgstr "" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "" + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "" + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "" + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "" + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "" + +#: admin.php:3697 +msgid "click here" +msgstr "" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "" + +#: admin.php:4009 +msgid "Backup directory" +msgstr "" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "" + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "" + +#: admin.php:591 +msgid "Cancel" +msgstr "" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "" + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "" + +#: admin.php:3683 +msgid "Monthly" +msgstr "" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "" + +#: admin.php:3681 +msgid "Weekly" +msgstr "" + +#: admin.php:3680 +msgid "Daily" +msgstr "" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "" + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "" + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "" + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "" + +#: admin.php:3418 +msgid "show log" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "" + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "" + +#: admin.php:2654 +msgid "Multisite" +msgstr "" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "" + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "" + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "" + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "" + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "" + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "" + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:570 +msgid "You should:" +msgstr "" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "" + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "" + +#: admin.php:3020 +msgid "refresh" +msgstr "" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "" + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "" + +#: admin.php:229 +msgid "Files" +msgstr "" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "" + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "" + +#: admin.php:2310 +msgid "Version" +msgstr "" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "" + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "" + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "" + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "" + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "" + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "" + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "" + +#: admin.php:2072 +msgid "Download in progress" +msgstr "" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "" + +#: admin.php:2043 +msgid "Download failed" +msgstr "" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "" + +#: admin.php:1854 +msgid "Job deleted" +msgstr "" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "" + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "" + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "" + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "" + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "" + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "" + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "" + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "" + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "" + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "" + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "" + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "" + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "" + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "" + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "" + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "" + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "" + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "" + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "" + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-es_ES.mo b/plugins/updraftplus/languages/updraftplus-es_ES.mo new file mode 100644 index 0000000..3310501 Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-es_ES.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-es_ES.po b/plugins/updraftplus/languages/updraftplus-es_ES.po new file mode 100644 index 0000000..616dc76 --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-es_ES.po @@ -0,0 +1,6109 @@ +# Translation of UpdraftPlus in Spanish (Spain) +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-06-12 12:07:28+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: es\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "" + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "" + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "" + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "" + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "" + +#: addons/webdav.php:91 +msgid "Path" +msgstr "" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "" + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "" + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "" + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "" + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "" + +#: admin.php:2310 +msgid "FAQs" +msgstr "FAQs" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "Hay una versión nueva de éste producto. " + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "Este Plugin está al día" + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "Verifique si hay actualizaciones" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "No está disponible un registro (Log) de cambios." + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "Copia del original" + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "Más información..." + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "Use un metodo alterno de conexion diferente co la barra de tareas (Dashboard)" + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "barra de tareas (Dashboard) en" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "Tamaño de clave (Key size): %d bits" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "clave pública (Public key) se envió a:" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "No se pudo abrir el directorio (revise los permisos y su propiedad) %s " + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "%s: archivo ilegible- no se pudo respaldar (revise los permisos y su propiedad) " + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "crear la clave" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "más lento, más fuerte" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "recomendado" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "%s bytes" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "fácil de romper, más rápido" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "%s bits" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "Tamaño de la clave de encriptación" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "Introduzca tu nombre elegido" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "¡La subida ha fallado: el límite de %s para cualquier fichero es %s, mientras que este archivo es de %s GB (%d bytes)" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "Esto a veces es causado por un cortafuegos - Prueba a desactivar SSL en la configuración avanzada, y prueba de nuevo." + +#: methods/ftp.php:355 +msgid "login" +msgstr "Iniciar sesión" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "Tenga en cuenta que los servidores de correo tienden a tener límites de tamaño; normalmente alrededor de %s MB; Las copias de seguridad más grande que ese límite probablemente no llegarán." + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "El tamaño del fichero de backup es %s - - es probable que falle (algunos servidores de correo electrónico no permiten a los anexos de este tamaño) el intento de enviar este correo electrónico. Si es así, usted debe cambiar el uso de un método de almacenamiento remoto diferente." + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "Tamaño %s MB" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "Otros (especificar - es decir, el sitio donde se ha instalado un panel de control UpdraftCentral)" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "es decir, usted tiene una cuenta allí" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "UpdraftPlus dividirá los archivos de copia de seguridad cuando superan este tamaño del archivo. El valor por defecto es %s megabytes. Tenga en cuenta dejar un poco de margen si su servidor web tiene un límite de tamaño de disco (por ejemplo, el / 2.048 MB límite de 2 GB en algunos servidores de 32 bits / sistemas de archivos)." + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "Libere 1Gb para UpdraftPlus" + +#: admin.php:2604 +msgid "Now" +msgstr "Ahora" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "Debe habilitar %s para hacer que los enlaces permanentes (por ejemplo,%s) funcionen" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "(Toque en un icono para seleccionar o anular la selección)" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "" + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "" + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "" + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "" + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "" + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "" + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "" + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "" + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "" + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "La clave a la que se refiere es desconocida." + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "Una conexión de UpdraftCentral no se ha realizado con éxito." + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "Una conexión de UpdraftCentral se ha realizado con éxito." + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "Conexión UpdraftCentral" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "La copia de seguridad se ha cancelado por el usuario" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "" + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "" + +#: admin.php:3420 +msgid "stop" +msgstr "" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "" + +#: admin.php:3092 +msgid "this backup set" +msgstr "" + +#: admin.php:3020 +msgid "calculate" +msgstr "" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "" + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "" + +#: admin.php:601 +msgid "Saving..." +msgstr "" + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:557 +msgid "Fetching..." +msgstr "" + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "" + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "" + +#: admin.php:2884 +msgid "Dismiss" +msgstr "" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "" + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "" + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "" + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "" + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "" + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "" + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "" + +#: admin.php:3860 +msgid "File Options" +msgstr "" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "" + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "" + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "" + +#: admin.php:5157 +msgid "settings" +msgstr "" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "" + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "" + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "" + +#: admin.php:442 +msgid "Extensions" +msgstr "" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "" + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "" + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "" + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "" + +#: addons/azure.php:524 +msgid "container" +msgstr "" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "" + +#: addons/azure.php:523 +msgid "optional" +msgstr "" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "" + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "" + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "" + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "" + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "" + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "Para completar su migración/clonación, debe registrarse en su sitio web remoto y realizar el respaldo" + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "La tabla de opciones no se encontro" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "no se encontraron opciones o site meta table" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "El respaldo de la base de datos pareciera haber fallado" + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "En el directorio de respaldo no se puede escribir (o el disco está lleno) - se espera que el respaldo de la base de datos falle pronto. " + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "requerido por algunos proveedores de almacenamiento" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "No instalado" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "Storage class" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "Siga las guías de Google para los nombres del sector de almacenamiento (bucket) siguiendo este enlace." + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "El nombre del sector de almacenamiento (bucket) debe ser unico. Si no existe, entonces sera creado." + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "Ingrese el nombre del sector de almacenamiento (bucket) %s que desee usar" + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "Almacenamiento (Bucket)" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "Si no, puede dejarlo sin llenar." + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "N.B. Esto solo es necesario si no ha creado un sector de almacenamiento (bucket), y desea que UpdraftPlus crea una para usted." + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "Ingrese el ID del proyecto %s que desee usar aquí. " + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "Siga este enlace en la consola API de Google, ahí active el API de almacenaje (Storage API) y crea un Client ID en la sección de acceso de API (API Access section). " + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "Debe de ingresar el ID de Proyecto (Project ID) para lograr crear un nuevo sector de almacenamiento (bucket)" + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "ID del Proyecto (Project ID)" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "Debe guardar y autenticar antes de probar su configuración. " + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "No ha obtenido un access token de Google - necesita autorizar o re-autorizar su conexión con Google Cloud.." + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "Usted no tiene acceso a este sector de almacenamiento (bucket)." + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "Google Cloud" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "Excepción del Servicio %s." + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "" + +#: restorer.php:767 +msgid "Deferring..." +msgstr "" + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "" + +#: admin.php:3081 +msgid "Deselect" +msgstr "" + +#: admin.php:3080 +msgid "Select all" +msgstr "" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "" + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "Procesando... " + +#: admin.php:634 +msgid "For backups older than" +msgstr "Para respaldos antes de " + +#: admin.php:633 +msgid "week(s)" +msgstr "semana(s)" + +#: admin.php:632 +msgid "hour(s)" +msgstr "hora(s)" + +#: admin.php:631 +msgid "day(s)" +msgstr "día(s)" + +#: admin.php:630 +msgid "in the month" +msgstr "en el mes " + +#: admin.php:629 +msgid "day" +msgstr "día " + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "" + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "" + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "" + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "" + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "" + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "" + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "" + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "" + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "" + +#: admin.php:607 +msgid "Update quota count" +msgstr "" + +#: admin.php:606 +msgid "Counting..." +msgstr "" + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "" + +#: admin.php:603 +msgid "Connecting..." +msgstr "" + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "" + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "" + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "" + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "" + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "" + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "" + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "" + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "" + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "" + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "" + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "" + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "" + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "" + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "" + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "" + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "" + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "" + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "" + +#: admin.php:4423 +msgid "Site" +msgstr "" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "" + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "" + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "" + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "" + +#: admin.php:617 +msgid "Deleting..." +msgstr "" + +#: admin.php:616 +msgid "key name" +msgstr "" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "" + +#: admin.php:611 +msgid "Creating..." +msgstr "" + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "" + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "" + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "" + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "" + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "" + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "" + +#: addons/migrator.php:1861 +msgid "key" +msgstr "" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "" + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "" + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "" + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "" + +#: admin.php:608 +msgid "Adding..." +msgstr "" + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "" + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "" + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "" + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "N.B. %s no distingue entre mayúsculas y minúsculas. " + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "Si OneDrive le indica mensaje \"unauthorized_client\", entonces usted no introdujo un ID de cliente (client ID) valido aquí. " + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "Para ayuda adicional, incluyendo imágenes de pantallas (screenshots), siga este enlace." + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "Crea las credenciales de OneDrive en la consola para desarrolladores. " + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "Usted debe agregar esto como el URI de re-dirección autorizado \"authorised redirect URI\" en su consola de OneDrive cuando lo exiga. " + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "autorización de %s fallo:" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "OneDrive" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "Por favor re-autorizar la conexión a su cuenta %s." + +#: methods/email.php:73 +msgid "configure it here" +msgstr "configurar aquí" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "Para remover este bloque, por favor ir aquí." + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "Recuerde guardar su configuración." + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "Usted esta usando ahora a cuenta de usuario IAN para asesar su bucket." + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "S3 bucket" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "China (Beijing) (restringido)" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "Sur América (Sao Paulo)" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "Asia Pacifico (Tokyo)" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "Asia Pacifico (Sydney)" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "Asia Pacifico (Singapur)" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "EU (Frankfurt)" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "EU (Irlanda)" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "US Oeste gubernamental (restringido)" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "US Oeste (N. California)" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "" + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "" + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "" + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "" + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "" + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "" + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "La ruta de subida de (%s) a cambiado durante una migración - reseteando (a: %s)" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "Lo mas probable es que esto quiera decir que está compartiendo un servidor con un website jaqueado y a sido usada en ataques previos." + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "Pareciera que la Dirección IP (%s) esta bloqueada en su navegador. " + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "UpdraftPlus.com a respondido con \"Acceso Denegado\"." + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "Plugin de Woocommerce Primium" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "Plugin de dos factores de seguridad gratis" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "Mas Plugins de calidad" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "Siga a la tienda." + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "Compare con la versión gratis" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "UpdraftPlus Premium" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "Seguir este enlace para suscribirse." + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "Boletín informativo gratis" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "Gracias por respaldar con UpdraftPlus!" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "Descartado (por %s meses)" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "(al mismo tiempo del respaldo de archivos)" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "Ningún respaldo ha sido completado" + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "El primer paso para desinstalar la versión gratis." + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "Si usted a realizado compras de UpdraftPlus.com, entonces siga este enlace para las instrucciones para instalar su compra. " + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "Suscripción al Boletín Informativo (Newsletter) " + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "Siga este enlace para suscribirse al boletín informativo, Gratis." + +#: admin.php:2831 +msgid "Personal support" +msgstr "Soporte personal" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "Bloquear los ajustes de acceso" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "Soporte de Redes/Multisite " + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "Arregle la hora del respaldo" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "Respaldos programados" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "Restaurar respaldos desde otros plugins" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "cifrado de base de datos" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "Envié respaldos a destinos múltiples " + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "Respaldos automáticos actualizando WP/plugins/Temas" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "Reportes avanzados" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "Reportes básicos de emails" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "Migrar / Clonar (i.e Copiar) sitios webs" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "Respaldo de archivos extra y base de datos" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "Dropbox, Google Drive, FTP, S3, Rackspace, Email" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "Respaldar a un almacenamiento remoto" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "Restaurar desde el respaldo" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "Traducido a %s idiomas" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "Respalde archivos y base de datos de WordPress" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "Compre ahora!" + +#: admin.php:2718 +msgid "Get it from" +msgstr "Obtengalo de" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "Haga preguntas de pre-ventas" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "Preguntas (FAQ) de preventa" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "Lista completa de caracteristicas" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "Obtenga la versión UpdraftPlus Premium" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "Esta usando una versión gratis de UpdraftPlus de wordpress.org." + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Respaldar Plugins (donde sea relavante), Temas (Themes) y la base de datos de WordPress con UpdraftPlus antes de actualizar" + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "%s Error: No puede Iniciar" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "o" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "o" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "Usted no ha seleccionado ningún componente para restaurar. Por favor seleccionar aunque sea uno, y pruebe de nuevo." + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), formatos de llaves (Keys) XML y PuTTY son aceptados." + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "reinicio de subidas parciales está soportado por SFTP, pero no para SCP. Entonses, si usa SCP debe de asegurarse que su servidor de Web permita procesos PHP corran con suficiente tiempo para subir su archivo de respaldo de gran tamaño. " + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "inquilino (tenant) " + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "Necesita ser autenticado URI con v2 (Keystone); v1 (Swauth) no está soportado." + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "Su dirección administrativa de su Sitio Web (site) " + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "Seleccione este cuadro para enviar un reporte basico a" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "Manual" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "(%s) errores ocurridos;" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "Cambiar ajustes de Seguridad" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "Cualquier otro archivo/directorio de su servidor que desea respaldar" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "Por ver mas características y soporte personal, vea " + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "Fallo la creación de tabla - probablemente por no tener permiso para quitar tablas y la tabla ya existe; continuaremos" + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "Borrando paginas cache (%s)..." + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "Frase del cifrado para la base de datos" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "Respaldo automático antes de actualizar" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "WordPress core (solamente)" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "Para el soporte de desbloqueo, por favor contactar a la persona que maneje UpdraftPlus para usted." + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "Para asesar la configuración de UpdraftPlus, por favor introduzca su clave" + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "Clave incorrecta" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "Desbloquear " + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "De otra forma, el enlace por defecto sera presentado." + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "Cualquiera viendo la pantalla bloqueada mostrara este URL para soporte - introduzca la dirección de su sitio Web (Website) o una dirección de correo (email)." + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "URL soportado" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "Requiere clave otra vez después " + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "%s semanas" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "1 semana" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "%s horas" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "1 hora" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "Asegúrese de haber tomado nota de su clave!" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "Cerrar el acceso a la pagina de configuración de UpdraftPlus " + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "Configuración guardada." + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "La clave de admin a sido cambiada." + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "Clave de admin a sido efectuada." + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "La clave del admin ha sido removida." + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "(aprenda más sobre esta significante opción)" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "Notar que ya ha reclamado sus complementos (Add-ons), a removido su clave (pero no su direccion de correo (email)) de la configuración, sin afectar el acceso a actualizaciones de su sitio (Website)." + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "Vea el registro (log)" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "Contenido de Respaldo (clic para bajar)" + +#: admin.php:4368 +msgid "Backup date" +msgstr "Fecha del Respaldo" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "y retenga esta cantidad de respaldos programados" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "Respaldo incremental; respaldo base: %s" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "Para la habilidad de bloquear el acceso a la configuración de UpdraftPlus, compre el UpdraftPlus Premium " + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "Suba (Upload) los archivos a UpdraftPlus." + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "El botón de 'Respaldar ahora' esta deshabilitado porque en el directorio de respaldo no se puede escribir (ir a tab de 'Configuraciones' y encontrar la opción relevante)." + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "Etiqueta de respaldo:" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "Error: inesperada falla en lectura de archivo" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "Chequee su log (registro) para mas detalles." + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "Su cuenta de hospedaje pareciera llena; por favor vea: %s" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "Ocurrió un error de compresión zip" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "Su etiqueta para este respaldo (opcional)" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "%s no permite autorizaciones de sitios hospedados en direcciones de IP derectas. Debe cambiar su direccion del sitio (%s) antes de poder usar %s para el almacenaje. " + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "Usted introdujo una dirección de email que no fue reconocida por UpdraftPlus.Com" + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "Su dirección de email fue valida, pero su clave no fue reconocida por UpdraftPlus.Com." + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "Usted debe de suministrar una dirección de email y una clave " + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "Para proceder, precios 'Respaldar Ahora'. Luego, observe el 'Ultimo Mensaje del Log' para su actividad." + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "Si desea restaurar un sitio de múltiples respaldos, usted debe primero configurar su instalación de WordPress como de sitios múltiples." + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "Su respaldo es de sitios múltiples de WordPress; pero este sitio no lo és. Solo el primer sitio de la red sera accesible. " + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "ya realizado" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "saltado (no en la lista)" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "Buscar y reemplazar la tabla:" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "Entre una lista con formato de comas CSV; de otra forma deje en blanco para todas las tablas." + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "Estas tablas solamente " + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "filas por lotes (batch)" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "Usted todavía no se a conectado con su cuenta de UpdraftPlus." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "Usted debe de conectarse para recibir actualizaciones futuras de UpdraftPlus." + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "Cualquier soporte requerido para %s debe ser consultado con su proveedor de hospedaje." + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "Usted solo debe proceder si no puede actualizar el servidor actual y esta confiado (o desea arriesgarse) que su plugins/temas/etc. son compatibles con la versión mas vieja %s." + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "Este es significativamente mas nuevo que el servidor en donde usted está restaurando en este momento (versión %s)." + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "El sitio en este respaldo estaba corriendo un servidor de web con versión %s de %s." + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "LinkedIn" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "Google+" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "Facebook" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "Twitter" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "UpdraftPlus esta en los medios sociales - visítenos aquí:" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "Porque veo esto?" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "La ubicación de este directorio está fijado de los \"Ajuste Para Expertos\", en el tab de ajustes. " + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "Hage clic aqui para ver su directorio de UpdraftPlus (en su espacio del hospedaje) por cualquier nuevo set de respaldo que usted a subido." + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "Iniciar el respaldo" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "Usted está usando el servidor %s, pero no parece tener el módulo %s cargado. " + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "Usted deberá consultar con su proveedor de hospedaje para saber como establecer permisos para los plugin de WordPress y escribir en el directorio." + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "A menos que tenga un problema, puede ignorar completamente todo aquí. " + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "Este archivo no podrá ser subido" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "Usted encontrara mas información sobre esto en la sección de ajustes." + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "Plugins de respaldos soportados: %s" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "Este respaldo fue creado por un plugin diferente? Si es así, entonces usted primero debe re-nombrarlo para poder ser reconocido - por favor siga ente enlace. " + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "Quiero saber mas sobre respaldos incrementales " + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "Limite de Memoria" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "restauración" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "Tabla para ser caída implícitamente: %s" + +#: backup.php:829 +msgid "Incremental" +msgstr "Incremental" + +#: backup.php:829 +msgid "Full backup" +msgstr "Respaldo completo" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "ahora procediendo con las actualizaciones..." + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "(ver log...)" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "Respaldo realizado con exito" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "Cada %s horas" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "buscar y reemplazar" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "Empieza " + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "Una búsqueda/reemplazo no puede ser regresada - usted esta seguro que quiere hacer esto?" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "Esto puede destrozar fácilmente su sitio web, use con cuidado!" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "Reemplazar con" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "Buscar por" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "Buscar / reemplazar base de datos" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "buscar termino" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "Demasiados errores en la base de datos han ocurrido - abortando" + +#: backup.php:895 +msgid "read more at %s" +msgstr "lea mas en %s" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "Correos (email) de reportes por UpdraftPlus (edición gratis) trae las ultimas noticias de UpdraftPlus.com" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "N.B. Si usted instala UpdraftPlus en varios sitios de Wordpress, entonces usted no puede reusar su proyecto; debe iniciar uno nuevo desde la consola de Google API para cada sitio web." + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "Usted no a realizado ningún respaldo." + +#: admin.php:3872 +msgid "Database Options" +msgstr "Opciones de Base de Datos" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "Plugins para depuración:" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "%s (%s usado)" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "Espacio de disco disponible gratis:" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "Este botón esta desabilitado porque en su directorio de respaldo no se puede escribir (vea los ajustes)." + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "Respaldos Existentes" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "Estado actual" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "Para cambiar cualquier ajuste por defecto de lo respaldado, para configurar la programación de respaldos, para enviar su respaldos a almacenamientos remotos (recomendado), y mas, diríjase a la pestaña de ajustes. " + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "Para realizar un respaldo, solo presione el botón de respaldo ahora." + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "Bienvenido a UpdraftPlus!" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "Si introduce un texto aquí, es para cifrar la base de datos (Rijndael).Por favor guarde este texto aparte o todos sus respaldos serán will INUTILIZABLE. Esta también sera usada para descifrar los respaldos desde esta interface administrativa (Esto implica que si la cambia, entonces el descifrar automático no va a funcionar hasta que la vuelva a cambiarla)." + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "Probando..." + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "Pruebe la Conexión... " + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "Prefijo de Tabla" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "Respalda base de dato externa" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "Agrega una base de datos externa para el respaldo..." + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "Si su base de datos incluye tablas adicionales que no son parte de este WordPress (usted sabrá si este es el caso), entonces active esta opción para respaldar estas tablas." + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "Respalda tabla que no sea de WordPress contenidas en dentro de la base de datos como WordPress " + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "Esta opción causa que las tablas guardadas en MySQL que no sean de WordPress (identificada por su falta del prefijo no configurado de WordPress, %s) serán también respaldadas." + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "La conexión no fue lograda." + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "Conexion lograda." + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "%s total de tablas encontradas; %s con el prefijo indicado. " + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "Tabla %s encontrada." + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "conexión a la base de datos fallo" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "nombre de la base de datos " + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "host (hospedaje)" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "Usuario " + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "Base de dato externa (%s)" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "Siga ente enlace para ir a la consola de Google API, y ahí activar el disco API y crear un ID de cliente en la sección de API Access (acceso)." + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "Fallo el acceso al directorio principal" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "Sin embargo, accesos subsecuentes también fallaron:" + +#: admin.php:4499 +msgid "External database" +msgstr "Base de datos externas" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "Esto también causara salida de depuración de todos los plugins que aparecerán en esta pantalla - por favor no se sorprenda al ver estos." + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "Respalde base de datos adicionales " + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "Primero, entre su frase de cifrado" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "Usted puede descifrar manualmente una base de datos cifrada." + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "También puede respaldar base de datos externas." + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "No quiere que lo espíen? UpdraftPlus Premium puede cifrar su base de datos." + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "use UpdraftPlus Premium" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "El descifrado fallo. La base de datos esta cifrada." + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "Solo la base de datos de WordPress pudo respaldarse; necesita respaldar la base de datos externa manualmente." + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "Un error ocurrió en el primer comando %s - abortando" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "Conexión falló: Chequee los detalles de su acceso, rectifique que su servidor de datos este activo, y que su conexión de la red no esta bloqueada por el firewall." + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "conexión de la base de datos fallo. " + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "Cuidado: el URL de la casa de la base de datos (%s) es diferente de lo esperado en (%s)" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "En %s, los nombres son sensibles a mayúscula y minúscula." + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "Si lo deja en blanco, entonces el respaldo sera pueato en la raiz de %s" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "Ej. %s" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "Si la carpeta no existe, sera creada." + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "Entre la ruta de la carpeta %s que usted desee usar." + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "Contenedor" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "Déjelo en blanco y asumirá la configuración por defecto." + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "Entorno " + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "Seguir este enlace para mayor información" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "autenticando el URI" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "Obtenga su credencial de acceso de su proveedor OpenStack, luego tome un nombre del contenedor para uso del almacenaje. Este contenedor sera creado para usted si no existe actualmente. " + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "Fallo el download (bajada) de %s" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "Fallo el download (bajada)" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "No pudo listar los archivos" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "Fallo el upload (subida) %s" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "Exitoso: " + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "Luego de que guarde su configuración (haciendo clic a 'Guardar Cambios' abajo), regrese aquí otra vez y dele clic a este link para completar la autenticación con %s." + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "(Usted parece estar autenticado ya)." + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "Dropbox" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "Autenticación con %s" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "Error bajando (downloading) el archivo remoto: Fallo el download" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "Región: %s" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "error %s - accesamos el contenedor, pero fallo la creación del archivo dentro de el" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "El objeto %s no se encontro" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "No se pudo acceder al contenedor %s" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "error %s - fallo el acceso al contenedor" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "Nombre de la persona de la cuenta: %s" + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "Para poder cambiar el nombre de la carpeta, necesita UpdraftPlus Premium." + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "Es un numero del ID interno de Google Drive" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "Este NO es un nombre de carpeta." + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "Carpeta" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "%s download (bajada): falló: archivo no encontrado" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "Nombre: %s." + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "Lista de archivo de Google Drive: fallo al acceder la carpeta principal " + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "Su versión %s : %s." + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "Necesitara pedirle a su hospedaje que lo actualicen. " + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "Este método de almacenaje remoto (%s) requiere PHP %s o posterior." + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "El Direcxtorio de sus temas (Theme) (%s) no se encontro, pero una version en letra-minuscula existe; actualizando la base da datos de esa forma" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "Llamar" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "Ir a buscar (Fetch)" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "Esta característica requiere %s versión %s o posterior " + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "Se detecto data del fabricante del tema Elegant Theme plugin : recetando una carpeta temporal" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "%s archivos fueron extraidos" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "No se pudo descomprimir el archivo" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "Error - fallo el download (bajada) del archivo" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "Re- escanear carpeta local para los nuevos sets de respaldos" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "Debe actualizar UpodraftPlus para asegurarse que obtenga la ultima versión con probada compatibilidad." + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "Ha sido comprobado hasta la versión %s." + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "La versión instalada de UpdraftPlus Respaldos/Restauraciones no ha sido probada en esta versión de WordPress (%s)." + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "clave/Key(llave)" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "Key (llave)" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "Su ingreso podrá ser con clave o por Key-based (llave) - usted solo necesita una, no las dos." + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "La Key(llave) introducida no esta en un formato valido, o esta corrupto." + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "SCP/SFTP clave/Key(llave)" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "Archivos del respaldo (creado por %s)" + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "Respaldo de archivos y base de datos (creado por %s) " + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "Respaldo creado por: %s." + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "Base de datos (creada por %s)" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "fuente desconocida " + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "Re-escaneando almacenamiento remoto" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "Subir (upload) archivos del respaldo" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "Este respaldo fue creado por %s y pueden ser importados." + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "Lea esta guía para probables causas y como arreglarlas." + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "WordPress tiene (%d) de tareas programadas sin ejecutar. A menos que este sea un sitio en desarrollo, esto probablemente quiere decir que su programador en WordPress no esta funcionando." + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "Si este respaldo fue creado por un plugin diferente, entonces UpdraftPlus Premium podrá ayudarlo. " + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "Sin embargo, los archivos de UpdraftPlus son archivos zip/SQL - así que si esta seguro que son del el formato correcto podrá re-nombrarlos para igualar nuestro patrón de formato." + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "Este archivo no parece ser de un archivo de respaldo de UpdraftPlus (estos son archivos .zip or .gz y tienen nombres como: backup_(time)_(site name)_(code)_(type).(zip|gz))." + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "Respaldo creado por una fuente desconocida (%s) - y no podrá ser restaurada. " + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "La carpeta (wp-content) de WordPress no se encontró en este archivo zip." + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "Esta versión de UpdraftPlus no sabe como manejar esta versión de respaldo foráneo" + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "%s devolvió una respuesta HTTP inesperada: %s" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "El módulo UpdraftPlus para este método de acceso a ficheros (%s) no soporta listar ficheros" + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "No se encontraron ajustes" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "Uno o más respaldos han sido añadidos desde el escaneo del alojamiento externo; tenga en cuenta que estos respaldo no serán borrados automáticamente mediante los ajustes de \"mantener\"; cuando desee eliminarlos, tendrá que hacerlo manualmente." + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "Re-escaneando el almacenamiento externo y local en busca de paquetes de respaldo..." + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "(Leer más)" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "Ajuste de rutas de multisitio" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "Registrar todos los mensajes en el archivo de registro del sistema (syslog) (sólo los administradores suelen querer esto)" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "Añadir otro..." + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "Eliminar" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "Otras %s preguntas frecuentes (FAQs)." + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "Marque esta casilla para recibir más información y correos electrónicos en el proceso de respaldo - útil si cualquier cosa va mal." + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "Si introduce varios ficheros/directorios, entonces sepárelos con comas. Para las entidades en el nivel superior, se puede utilizar un * al comienzo o al final de la entrada como un comodín." + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "Detectados datos de plugin de gestión de tipo de contenido personalizado: limpiando caché de option" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "Su proveedor de alojamiento tiene que habilitar estas funciones antes de que %s pueda funcionar." + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "Su instalación PHP del servidor web tiene estas funciones deshabilitadas: %s." + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "FTP cifrado (cifrado explícito)" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "FTP cifrado (cifrado implícito)" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "FTP normal sin cifrar" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "Respaldo creado por:" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "Disponible para reclamar en este sitio" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "Para mantener su acceso al soporte, por favor renueve." + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "Su acceso pagado al soporte de UpdraftPlus caducará pronto." + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "Para recuperar su acceso, por favor renueve." + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "Su acceso pagado al soporte de UpdraftPlus ha caducado." + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "Su acceso pagado a las actualizaciones de UpdraftPlus para este sitio caducará pronto." + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "Para conservar el acceso al usuario y mantener el acceso a las actualizaciones (incluidas las futuras características y la compatibilidad con futuras versiones de WordPress) y soporte, por favor renueve." + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "Su acceso pagado a las actualizaciones de UpdraftPlus para %s de los %s complementos en este sitio caducará pronto." + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "Su acceso pagado a las actualizaciones de UpdraftPlus para los complementos %s en este sitio ha caducado." + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "Para volver a tener acceso a las actualizaciones (incluidas las futuras características y la compatibilidad con futuras versiones de WordPress) y soporte, por favor renueve." + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "Su acceso pagado a las actualizaciones de UpdraftPlus para este sitio ha caducado. No recibirá más actualizaciones de UpdraftPlus." + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "Descartar de su escritorio principal (por %s semanas)" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "El intento de deshacer la doble compresión tuvo éxito." + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "El intento de deshacer la doble compresión falló." + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "El fichero de la base de datos parece haber sido comprimido dos veces - probablemente el sitio web descargado tenía un servidor web mal configurado." + +#: admin.php:1528 +msgid "Constants" +msgstr "Constantes" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "Fallo al abrir el fichero de la base de datos para su lectura:" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "No se encontraron tablas en la base de datos" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "por favor, espere el intento de reprogramado" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "Tenga en cuenta que los mensajes de advertencia son de asesoramiento - el proceso de respaldo no se detiene por ellos. En su lugar, ofrecen información que le puede resultar útil, o que pueden indicar el origen de un problema, si el respaldo no se realizó correctamente." + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "Consultas a la base de datos procesadas: %d en %.2f segundos" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "Búsqueda y reemplazo alcanzado en la fila: %d" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "Omitiendo esta tabla: los datos de esta tabla (%s) no serán reemplazados" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "Cuenta llena: su cuenta %s tiene sólo %d restantes, y el fichero a ser subido tiene %d bytes más (tamaño total: %d bytes)" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "Ocurrieron errores:" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "Siga este enlace para descargar el fichero del archivo de registro para esta restauración (necesario para cualquier solicitud de soporte)." + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "Vea también estas preguntas frecuentes (FAQ)." + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "Si no elige un almacenamiento externo, entonces los respaldos se quedarán en el servidor web. Esto no es recomendable (a menos que tenga planificado copiarlos manualmente a su equipo), pues perder el servidor web podría significar perder tanto su sitio web como sus respaldos en un incidente." + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "Recuperando (si es necesario) y preparando los ficheros de respaldo..." + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "La configuración PHP en este servidor web permite sólo %s segundos de ejecución, y no permite que este límite sea elevado. Si tiene muchos datos que importar, y si la operación de restauración excede este tiempo, entonces tendrá que preguntar a su proveedor de alojamiento sobre la posibilidad de elevar este límite (o intente la restauración pieza a pieza)." + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "Hay carpetas sin borrar de una restauración previa (por favor, usa el botón \"Eliminar directorios antiguos\" para eliminarlos antes de probar de nuevo): %s" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "La cantidad de tiempo permitido para ejecuciones de plugins de WordPress es muy baja (%s segundos) - debería incrementarla para evitar fallos de respaldo por exceso de tiempo de ejecución de comandos (consulte a su proveedor de alojamiento web para obtener ayuda - se trata del ajuste PHP max_execution_time; el valor recomendado es %s segundos o más)" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "Reemplazando en la tabla del sitio: de %s a %s" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "%s: Omitiendo fichero de caché (aún no existe)" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "Plugin desactivado: %s (vuélvalo a activar manualmente cuando pueda)." + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "La conexión %s excedió el tiempo de ejecución; si introdujo el servidor correctamente, entonces probablemente esté causado porque un cortafuegos está bloqueando la conexión - debería revisarlo con su proveedor de alojamiento web." + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "El tema actual no fue encontrado; para prevenir que esto detenga la carga del sitio, se ha reestablecido el tema por defecto." + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "Restauración fallida..." + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "Mensajes:" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "Se encontró una línea de SQL que es mayor que el tamaño máximo de paquete y no se puede dividir; esta línea no será procesada, sino será dada de baja: %s" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "El directorio no existe" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "Nueva dirección de correo del usuario" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "Nuevo nombre de usuario" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "Clave API del administrador" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "Nombre de usuario del administrador" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "Cuenta Rackspace de EEUU o Reino Unido" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "Introduzca su nombre de usuario/clave API de administrador de Rackspace (de modo que Rackspace pueda autenticar sus permisos para crear nuevos usuario), e introduzca un nuevo (único) nombre de usuario y la dirección de correo para el nuevo usuario y un nombre de contenedor." + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "Crear nueva API de usuario y contenedor" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "Clave API: %s" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "Contraseña: %s" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "Nombre de usuario: %s" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "Falló la operación de Cloud Files (%s)" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "Conflicto: este usuario o dirección de correo ya existe" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "Tiene que introducir una dirección de correo electrónico válida" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "Tiene que introducir un contenedor" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "Tiene que introducir un nuevo nombre de usuario" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "Tiene que introducir una clave API de administrador" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "Tiene que introducir un nombre de usuario de administrador" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "Crear una neva API de usuario con acceso sólo a este contenedor (en lugar de a toda su cuenta)" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "Añade capacidades mejoradas para los usuarios de Rackspace Cloud Files" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "Rackspace Cloud Files, mejorado" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "Contenedor de Cloud Files" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "Clave API de Cloud Files" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "Para crear una nueva API sub-usuario y una clave API de Rackspace que sólo tenga acceso a este contenedor, use este complemento." + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "Nombre de usuario de Cloud Files" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "London (LON)" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "Hong Kong (HKG)" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "Northern Virginia (IAD)" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "Chicago (ORD)" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "Sydney (SYD)" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "Dallas (DFW) (por defecto)" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "Región de almacenamiento de Cloud Files" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "Las cuentas creadas en rackspacecloud.com son las de los EEUU de Norteamérica; las cuentas creadas en rackspace.co.uk son las de Reino Unido" + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "Cuenta Rackspace albergada en EEUU o Reino Unido" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "Las cuentas creadas en rackspacecloud.com son las cuentas de los Estados Unidos de Norteamérica; las cuentas creadas en rackspace.co.uk son las cuentas del Reino Unido." + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "Fallo de autorización (revise sus credenciales)" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "Ocurrió un error desconocido cuando se intentaba conectar a UpdraftPlus.Com" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "Crear" + +#: admin.php:556 +msgid "Trying..." +msgstr "Probando..." + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "La nueva contraseña de la consola de usuario de RackSpace es (no será mostrada de nuevo):" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "(cuando se descifró)" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "Datos del error:" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "El respaldo no existe en el historial de respaldo" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "Su instalación WordPress tiene directorios antiguos del estado anterior al restaurado/migrado (información técnica: son los que tienen el sufijo -old). Debería presionar este botón para eliminarlos tan pronto como haya verificado que la restauración funcionó." + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "Dividir línea para evitar sobrepasar el tamaño máximo de fichero." + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "Su usuario de la base de datos no tiene permiso para crear tablas. Haremos lo posible para restaurar simplemente vaciando las tablas, lo que debería funcionar, siempre y cuando esté restaurando a partir de una versión de WordPress con la misma estructura de la base de datos (%s)" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "Nuevo prefijo de la tabla: %s" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "Los permisos del fichero no permiten que los datos antiguos sean movidos; en vez de ello, serán eliminados." + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "%s: Este directorio ya existe, y será reemplazado" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "No se pudieron mover los ficheros a su lugar. Revise los permisos." + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "No se pudieron mover los ficheros nuevos a su lugar. Revise su carpeta wp-content/upgrade." + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "No se pudieron mover los ficheros antiguos." + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "Quitando de en medio los datos antiguos..." + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "Añadir otra dirección..." + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "Introduzca la dirección aquí para que le sea enviado un informe cuando un trabajo de respaldo termine." + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "Informes por correo" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "Suma de comprobación %s: %s" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "ficheros: %s" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "Configure la dirección de correo a ser usada en la sección de informes." + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr "(con advertencias (%s))" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr "(con errores (%s))" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "Información de depuración" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "Subido a:" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "Tiempo utilizado:" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "Advertencias" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "Errores" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "Errores / advertencias:" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "Contiene:" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "Respaldo iniciado:" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "Informe del respaldo:" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "%d horas, %d minutos, %d segundos" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "%d errores, %d advertencias" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "Autenticación %s" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "Error %s: %s" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "Logo de %s" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "%s no devolvió la respuesta esperada - revise su fichero de archivo de registro para más detalles" + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "El módulo PHP requerido (%s) no está instalado - pregunte a su proveedor de alojamiento web sobre su habilitación" + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "Para más opciones, use el complemento \"%s\"." + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "La dirección de correo electrónico del administrador de su sitio (%s) será usada." + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "Conectar" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "Para más características de reporte, utilice el complemento Reporting." + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "(versión: %s)" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "Tenga en cuenta que los servidores de correo suelen tener límites de tamaño, por lo general alrededor de %s MB; los respaldos más grandes que los límites probablemente no lleguen." + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "Cuando el método de almacenamiento en correo electrónico está habilitado, también se envía todo el respaldo" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "Último estado:" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "El respaldo contiene:" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "Respaldado: %s" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "El fichero del archivo de registro (log) ha sido adjuntado a este correo electrónico." + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "Error desconocido/inesperado - por favor, envíe una solicitud de soporte" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "Sólo base de datos (los ficheros no formaban parte de este respaldo)" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "Base de datos (el respaldo de los ficheros no se ha completado)" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "Ficheros sólo (la base de datos no formaba parte de este respaldo)" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "Ficheros (el respaldo de la base de datos no se ha completado)" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "Ficheros y base de datos" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "(Esto se aplica a todos los plugins de respaldo de WordPress a menos que hayan sido codificados explícitamente para su compatibilidad con multisitio)." + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "Sin la actualización, UpdraftPlus permite a todos los administradores de blog que puedan modificar los ajustes del plugin para respaldar (y por tanto acceder a los datos, incluidas las contraseñas) y restaurar (incluido con modificaciones personalizadas, por ejemplo, cambiar las contraseñas) toda la red." + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "WordPress Multisitio está soportado, con características extra, por UpdraftPlus Premium, o el complemento Multisitio." + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "Esta es una instalación Multisitio de WordPress." + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "Advertencia de UpdraftPlus:" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "(o conectar usando el formulario en esta página si ya lo ha comprado)" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "por favor, siga este enlace para actualizar el plugin para poder activarlo" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "por favor, siga este enlace para actualizar el plugin para poder conseguirlo" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "último" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "Su versión: %s" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "Lo tiene" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "Soporte de UpdraftPlus" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "Está disponible una actualización para UpdraftPlus conteniendo sus complementos - por favor, siga este enlace para conseguirla." + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "Complementos de UpdraftPlus" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "Una actualización está disponible para UpdraftPlus - por favor, siga este enlace para conseguirla." + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "UpdraftPlus.Com devolvió una respuesta, pero no se comprendió" + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "Su dirección de correo y contraseña no fueron reconocidas por UpdraftPlus.Com" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "UpdraftPlus.Com devolvió una respuesta que no pudimos entender (dato: %s)" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "UpdraftPlus.Com respondió, pero no se entendió la respuesta" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "Falló la conexión a UpdraftPlus.Com" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "Reportando" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "Opciones (en bruto)" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "Enviar un reporte sólo cuando hay advertencias/errores" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "URL del contenido:" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "Vea también el complento \"More Files\" de nuestra tienda." + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "Su espacio libre en su cuenta de alojamiento es muy bajo - sólo quedan %s MB " + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "La cantidad de memoria (RAM) permitida por PHP es muy baja (%s MB) - debería incrementarla para evitar fallos por insuficiencia de memoria (consulte a su proveedor de alojamiento para más información)" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "Gestionar complementos" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "Comprarlo" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "Consígalo en la tienda de UpdraftPlus.Com" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "activarlo en este sitio" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "Tiene una compra inactiva" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "Asignado a este sitio" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "Disponible para su sitio (mediante todos sus complementos comprados)" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "(parece una versión pre-lanzada o retirada)" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "Vaya aquí" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "¿Necesita soporte?" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "Ocurrió un error al intentar recuperar sus complementos." + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "Fue recibida una respuesta desconocida. La respuesta fue:" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "Reclamación no concedida - sus dados de inicio de sesión eran erróneos" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "Por favor, espere mientras se hace la reclamación..." + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "Ocurrieron errores cuando se intentaba conectar a UpdraftPlus.Com:" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "Actualmente no está conectado a una cuenta UpdraftPlus.Com." + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "Si compró nuevos complementos, entonces siga este enlace para actualizar su conexión" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "Actualmente está conectado a una cuenta UpdraftPlus.Com." + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "¿Le interesa saber sobre la seguridad de su contraseña UpdraftPlus.Com? Lea sobre ello aquí." + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "¿Ha olvidado sus datos?" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "¿Aún no tiene una cuenta? ¡Consiga una (es gratis)!" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "Conectar con su cuenta UpdraftPlus.Com" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "Su versión de PHP del servidor web es demasiado antigua (" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "Parece tener el plugin UpdraftPlus instalado obsoleto - ¿Tal vez lo obtuvo por error?" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "Vaya aquí para comenzar la instalación." + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "UpdraftPlus no está instalado aún." + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "Vaya aquí para activarlo." + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "UpdraftPlus no está activado aún." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "Vaya aquí para conectar." + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "Aún no tiene conectada su cuenta UpdraftPlus.Com, para permitirle la lista de sus complementos adquiridos." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "Sin esto, el cifrado será mucho más lento." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "Su servidor web no tiene instalado el módulo %s." + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "(Parece estar autenticado ya, aunque puede autenticarse de nuevo para recargar su acceso si ha tenido un problema)." + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "Soltar ficheros de respaldo aquí" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "administrar WordPress desde la línea de comandos - gran ahorro de tiempo" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "Revisar WordShell" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "¿Quiere más características o pagar el apoyo garantizado? Eche un vistazo a UpdraftPlus.Com" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "El servidor web devolvió un código de error (pruebe de nuevo, o revise los archivos de registro de su servidor web)" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "La operación de restauración ha empezado. No presiones parar o cierre el navegador hasta que indique que ha finalizado." + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "Si excluye tanto la base de datos como los ficheros, ¡entonces ha excluido todo!" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "Inicio del sitio:" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "Opciones de almacenamiento externo" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "(los archivos de registro se pueden encontrar en la página de ajustes de UpdraftPlus normalmente)..." + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "Recordar esta elección para la próxima vez (aún tendrá la opción de cambiarlo)" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "Falló la subida" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "Puede enviar un respaldo a más de un destino con un complemento." + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "Nota: la barra de progreso de abajo está basada en las etapas, no en el tiempo. No detenga el respaldo simplemente porque parezca haber permanecido en el mismo lugar por un tiempo - esto es normal." + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "(%s%%, fichero %s de %s)" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "Leer más sobre cómo funciona esto..." + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "Fallo: Pudimos identificarnos, pero no pudimos crear con éxito un fichero en esta localización." + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "Fallo: Fue posible identificarse e ir al directorio indicado, pero falló la creación del fichero en esa ubicación." + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "Utilice SCP en lugar de SFTP" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "Ajuste del usuario SCP/SFTP" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "Ajuste del alojamiento (host) SCP/SFTP" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "El intento de enviar el respaldo mediante correo electrónico falló (probablemente el respaldo fue demasiado grande para este método)" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "El respaldo es de: %s." + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "Resultados del test de los ajustes %s:" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "(No finalizado)" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "Si está viendo más respaldos de los que esperaba, probablemente sea porque la eliminación de paquetes de respaldo antiguos no se hará hasta que se complete un respaldo más reciente." + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "No lo coloque en su directorio de subidas (uploads) o de plugins, pues esto causará que se hagan respaldos de los respaldos." + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "Esto es donde UpdraftPlus escribirá los ficheros zip que crea inicialmente. Este directorio tiene que poder ser escrito por su servidor web. Está relacionado con su directorio de contenidos (el cuál se llama por defecto wp-content)." + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "ID del trabajo: %s" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "última actividad: hace %ss" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "siguiente reanudación: %d (tras %ss)" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "Desconocido" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "Respaldo finalizado" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "Esperando hasta la hora programada para reintentar por errores" + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "Eliminando paquetes de respaldo antiguos" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "Subiendo ficheros al alojamiento externo" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "Base de datos cifrada" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "Cifrando base de datos" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "Respaldo de la base de datos creado" + +#: admin.php:3359 +msgid "table: %s" +msgstr "tabla: %s" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "Creando respaldo de la base de datos" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "Ficheros zip de respaldo creados" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "Creando ficheros zip de respaldo" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "Respaldo iniciado" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "Respaldo en progreso:" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "El programador está deshabilitado en su instalación de WordPress, mediante el ajuste DISABLE_WP_CRON. No se pueden ejecutar respaldos (incluido "Respaldar ahora") a menos que tenga una configuración apropiada para llamar manualmente al programador, o que sea habilitado." + +#: restorer.php:646 +msgid "file" +msgstr "fichero" + +#: restorer.php:639 +msgid "folder" +msgstr "carpeta" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "UpdraftPlus necesitaba crear un %s en tu directorio de contenidos, pero falló - por favor, revisa los permisos y habilita el acceso (%s)" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "El respaldo no ha terminado; una reanudación está programada" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "Su sitio web es visitado con poca frecuencia y UpdraftPlus no está recibiendo los recursos que se espera, por favor lea esta página:" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "La autenticación de %s no pudo seguir adelante, porque algo en su sitio lo impide. Pruebe a desactivar sus otros plugins y el cambio a un tema predeterminado. (En concreto, se busca el componente que envía la salida (con mayor probabilidad advertencias/errores PHP) antes de que comience la página. La desactivación de la configuración de depuración también puede ayudar)." + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "Su límite de memoria PHP (establecido por su proveedor de alojamiento web) es muy bajo. UpdraftPlus intentó incrementarlo pero no tuvo éxito. Este plugin puede luchar con un límite de memoria inferior a 64 MB - especialmente si tiene ficheros muy grandes subidos (aunque, por otro lado, muchos sitios tienen éxito con un límite de 32 MB - aunque su experiencia puede variar)." + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "Proceder con la actualización" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "No abortar después de pulsar Continuar abajo - espere a que el respaldo se complete." + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "Respaldos automáticos de UpdraftPlus" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "Han ocurrido errores:" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "Creando respaldo con UpdraftPlus..." + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "Respaldo automático" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "Creando respaldo de la base de datos con UpdraftPlus..." + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "No tiene suficientes permisos para actualizar este sitio." + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "themes" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "plugins" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "Comenzando respaldo automático..." + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "Creando respaldo de %s y de la base de datos con UpdraftPlus..." + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Automáticamente respalda (si procede) plugins, temas y la base de datos de WordPress con UpdraftPlus antes de actualizar" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "Si no está seguro, debería parar; podría destruir su instalación de WordPress." + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "Este no parece un respaldo del núcleo de WordPress válido - el fichero %s no fue encontrado." + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "Imposible abrir el fichero zip (%s) - no se pudo pre-escanear para comprobar su integridad." + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "Imposible leer el fichero zip (%s) - no se pudo pre-escanear para comprobar su integridad." + +#: admin.php:2310 +msgid "More plugins" +msgstr "Más plugins" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "Soporte" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "UpdraftPlus no pudo encontrar el prefijo de tabla cuando escaneó el respaldo de la base de datos." + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "Este respaldo de la base de datos no tiene las tablas del núcleo de WordPress: %s" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "Está importando desde una versión más reciente de WordPress (%s) a una anterior (%s). No hay garantías de que WordPress puede gestionar esto." + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "La base de datos es demasiado pequeña para ser una base de datos válida de WordPerss (tamaño: %s KB)." + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "Actualizar tema" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "Actualizar plugin" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "Esté seguro con un respaldo automático" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "Descartar (por %s semanas)" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "La ruta de los ficheros subidos (%s) no existe - reajustando (%s)" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "Si aún puede leer estas palabras después de que la página termine de cargarse, entonces hay un problema en el sitio con JavaScript o jQuery." + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "El fichero fue subido." + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "Respuesta de estado del servidor desconocida:" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "Respuesta del servidor desconocida:" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "Esta clave de descifrado será usada:" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "Siga este enlace para intentar descifrar y descargar en su equipo el fichero de la base de datos." + +#: admin.php:584 +msgid "Upload error" +msgstr "Error de subida" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "Este fichero no parece ser un archivo de base de datos cifrado por UpdraftPlus (estos ficheros son .gz.crypt y tienen un nombre como: backup_(time)_(site name)_(code)_db.crypt.gz)." + +#: admin.php:582 +msgid "Upload error:" +msgstr "Error de subida:" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "(asegúrese de que estuvo intentando subir un fichero zip creado previamente por UpdraftPlus)" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "y entonces, si lo desea," + +#: admin.php:572 +msgid "Download to your computer" +msgstr "Descargar a tu equipo" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "Eliminar de tu servidor web" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "Ejemplos de proveedores de almacenamiento compatibles con S3:" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "No se eliminará ningún archivo tras desempaquetarlo, porque no había espacio en el almacenamiento en la nube para este respaldo." + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "Parece que no encuentra uno o más archivos de este paquete multi-archivo." + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "(%d archivo(s) en el paquete)." + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "Dividir archivos cada:" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "Error: el servidor nos envió una respuesta (JSON) que no entendimos." + +#: admin.php:563 +msgid "Warnings:" +msgstr "Advertencias:" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "Error: el servidor envió una respuesta vacía." + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "Parece un fichero creado por UpdraftPlus, pero esta instalación no conoce este tipo de objeto: %s. ¿Quizás tenga que instalar un complemento?" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "Los ficheros de archivo de respaldo han sido procesados, pero con algunos errores. Tendrá que cancelar y corregir cualquier problema antes de reintentar." + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "Los ficheros de archivo de respaldo han sido procesados, pero con algunas advertencias. Si todo está bien, entonces presione de nuevo Restaurar para proceder. En otro caso, cancele y corrija los problemas primero." + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "Los ficheros de archivo del respaldo han sido procesados con éxito. Ahora presione Restaurar otra vez para proceder." + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "Este paquete de respaldo multi-archivo parece tener los siguientes archivos perdidos: %s" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "El fichero (%s) fue encontrado, pero tiene un tamaño (%s) diferente al que era esperado (%s) - puede estar corrupto." + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "El fichero fue encontrado, pero con peso 0 (tiene que volverlo a subir): %s" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "Fichero no encontrado (tiene que subirlo): %s" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "No existe tal paquete de respaldo" + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "El archivo de respaldo para este fichero no pudo ser encontrado. El método de alojamiento remoto en uso (%s) no nos permite recuperar los ficheros. Para realizar cualquier restauración usando UpdraftPlus, necesitará obtener una copia de este fichero y colocarlo en la carpeta de trabajo de UpdraftPlus." + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "Fallo al mover directorio (revise sus permisos de fichero y su cuota de disco): %s" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "Fallo al mover fichero (revise sus permisos de fichero y su cuota de disco): %s" + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "Moviendo el respaldo desempaquetado a su lugar..." + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "Fallo al abrir el fichero zip (%s) - %s" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "Ruta de acceso del directorio raíz de WordPress en el servidor: %s" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "%s punto final" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "... ¡y mucho más!" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "S3 (Compatible)" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "El fichero no está en el alojamiento local - es necesario recuperarlo del alojamiento externo" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "Buscando archivo (%s), nombre del fichero: %s" + +#: admin.php:4836 +msgid "Final checks" +msgstr "Comprobaciones finales" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "Active esta opción para eliminar todos los ficheros de respaldo superfluos desde el servidor una vez finalizada la ejecución de este respaldo (es decir, si la desactiva, entonces los ficheros expedidos también se mantendrán a nivel local)." + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "Suelte los ficheros cifrados de base de datos (ficheros db.gz.crypt) aquí para subirlos y descifrarlos" + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "Su ruta del directorio wp-content en el servidor: %s" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "Historial de respaldo en bruto" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "Mostrar el historial de respaldo en bruto y la lista de ficheros" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "Procesando ficheros - por favor, espere..." + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "Por favor consulte las preguntas frequentes (FAQ) para obtener ayuda sobre qué hacer." + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "Su instalación WordPress tiene un problema con la salida al espacio en blanco extra. Esto puede corromper los respaldos que se generen." + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "Fallo al abrir el fichero de la base de datos." + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "Fallo al escribir la base de datos descifrada al sistema de archivos." + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "Respaldos conocidos (en bruto)" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "No es posible enumerar los ficheros en ese directorio." + +#: restorer.php:939 +msgid "Files found:" +msgstr "Ficheros encontrados:" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "Directorio usado por los respaldos: %s" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "El motor de tablas solicitado (%s) no está presente - cambiando a MyISAM." + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "Esto parece una migración (el respaldo es de un sitio con una dirección/URL diferente), pero no ha marcado la opción buscar y reemplazar en la base de datos. Esto normalmente es un error del usuario." + +#: admin.php:4908 +msgid "file is size:" +msgstr "Tamaño del fichero:" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "Más información aquí." + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "Algunos ficheros se estan descargando aún o están siendo procesados - espere por favor." + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "Este paquete de respaldo es de un sitio diferente - esto no es una restauración, sino una migración. Necesita el complemento Migrator para hacer este trabajo." + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "La zona horaria usada es la establecida en sus ajustes de WordPress, en Ajustes -> General." + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "Introduzca en el formato HH:MM (por ejemplo 14:22)." + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "Falló la subida de %s" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "Fallo en el inicio de sesión de %s" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "No parece estar autenticado con %s" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "Fallo al acceder a %s cuando se eliminaba (vea el fichero del archivo de registro para saber más)" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "No parece estar autenticado con %s (mientras la eliminación)" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "Error de Dropbox: %s (vea el fichero del archivo de registro para saber más)" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "Error - fallo al descargar el fichero desde %s" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "Error - no existe tal fichero en %s" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "Error %s" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "Error %s - fallo al subir fichero" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "Error %s - fallo al re-ensamblar las partes" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "Falló la autenticación %s" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "Error: %s" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "El directorio de respaldo especificado existe, pero no> se puede escribir." + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "El directorio de respaldo especificado no> existe." + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "Aviso: %s" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "Último respaldo realizado:" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "Se ha encontrado un fichero muy grande: %s (tamaño: %s MB)" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "%s: fichero no legible - no se pudo respaldar" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "La tabla %s tiene muchas filas (%s) - esperamos que su proveedor de alojamiento web le proporcione los recursos suficientes para volcar esa tabla en el respaldo" + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "Ocurrió un error mientras se cerraba el fichero final de la base de datos" + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "Advertencias encontradas:" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "El respaldo al parecer tuvo éxito (con advertencias) y se ha completado" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "Tu espacio libre en disco es muy bajo - sólo quedan %s MB" + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "Nuevo sitio:" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "Error: URL del sitio utilizada actualmente." + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "Sitio migrado (desde UpdraftPlus)" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "Introduzca los detalles de dónde debe estar este nuevo sitio dentro de su instalación multisitio:" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "Información necesaria para continuar:" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "Activación del tema de la red:" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "Plugin procesado:" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "Revise sus permisos de fichero: No se pudo crear e introducir el directorio:" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "Algunos servidores anuncian como disponible el FTP cifrado, pero luego dan errores de exceso de tiempo de ejecución cuando intentas usarlos. Si encuentra que esto está ocurriendo, vaya a los \"Ajustes para expertos\" (abajo) y apague ahí el SSL." + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "Su instalación PHP del servidor no incluye un módulo requerido (%s). Por favor, contacte con el soporte de su proveedor de alojamiento web y pregunte sobre el mismo para habilitarlo." + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "Por favor, revise sus credenciales de acceso." + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "El error reportado por %s fue:" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "Por favor, facilite la información solicitada y luego continúe." + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "No se puede eliminar tablas, por lo que en lugar de eliminar (%s)" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "No se pueden crear nuevas tablas, por lo que se está omitiendo este comando (%s)" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "Información del sitio:" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "Su usuario de la base de datos no tiene permiso para crear tablas. Haremos lo posible para restaurar simplemente vaciando las tablas, lo que debería funcionar, siempre y cuando a) esté restaurando a partir de una versión de WordPress con la misma estructura de la base de datos, y b) su base de datos importada no contenga ninguna tabla que no esté ya presente en el sitio donde se está importando." + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "Advertencia:" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "Está ejecutando sobre una instalación multisitio de WordPress - pero su respaldo no es de un sitio multisitio." + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "Omitiendo la restauración del núcleo de WordPress al importar un solo sitio en una instalación multisitio. Si tenía cualquier cosa necesaria en su directorio WordPress, tendrá que volverla a añadir manualmente desde el fichero zip." + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "La instalación PHP de su servidor web no incluye un módulo necesario para %s (%s). Por favor, contacto con el soporte de su proveedor de alojamiento web y solicite la activación del módulo." + +#: admin.php:596 +msgid "Close" +msgstr "Cerrar" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "Respuesta inesperada:" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "Para enviar a más de una dirección, sepárelas con comas." + +#: admin.php:576 +msgid "PHP information" +msgstr "Información PHP" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "encontrado zip ejecutable:" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "mostrar información PHP (phpinfo)" + +#: admin.php:2627 +msgid "Get it here." +msgstr "Consígalo aquí." + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "Entonces, prueba nuestro complemento \"Migrator\". Tras usarlo una vez, habrá amortizado el precio de compra en comparación con el tiempo necesario para copiar un sitio a mano." + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "¿Quiere migrar o clonar/duplicar un sitio?" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "Lea este artículo para ver cómo se hace paso a paso." + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "Migrar sitio" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "Eliminando... por favor, espere." + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "Eliminar también del almacenamiento externo" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "Últimas noticias de UpdraftPlus.com:" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "Clonar/Migrar" + +#: admin.php:2304 +msgid "Premium" +msgstr "Premium" + +#: admin.php:2305 +msgid "News" +msgstr "Noticias" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "Paquete de respaldo no encontrado" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "%s - no se puede respaldar esta entidad; el directorio correspondiente no existe (%s)" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "Enlace al RSS" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "Enlace al sitio" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "Suscríbase al blog de UpdraftPlus para estar al día en noticias y ofertas" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "Probando los ajustes %s..." + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "O bien, puede colocarlo manualmente en el directorio de UpdraftPlus (normalmente wp-content/updraft), por ejemplo mediante FTP, y luego usa el enlace \"re-escanear\" anterior." + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "El modo de depuración de UpdraftPlus está activado. Puede ver avisos de depuración en esta página no sólo de UpdraftPlus, sino de cualquier otro plugin instalado. Por favor, asegúrese de que el aviso que está viendo es de UpdraftPlus antes de elevar una solicitud de soporte." + +#: admin.php:880 +msgid "Notice" +msgstr "Aviso" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "Errores encontrados:" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "Re-escaneando (buscando respaldos subidos manualmente al alojamiento interno de respaldos)..." + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "Comenzando a buscar esta entidad" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "Almacenar en" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "\"%s\" no tiene clave primaria, se necesita un cambio manual en la fila %s." + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "filas: %d" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "Tiempo usado (segundos):" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "Errores:" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "Ejecutando comandos de actualización SQL:" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "Cambios hechos:" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "Filas examinadas:" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "Tablas examinadas:" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "No se pudo obtener el listado de tablas" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "Buscar y reemplazar en la base de datos: reemplazar %s en la base de datos con %s" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "Advertencia: la URL del sitio (%s) en la base de datos es diferente a la que era esperada (%s)" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "Nada que hacer: la URL del sitio ya es: %s" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "Error: parámetro vacío inesperado (%s, %s)" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "Esta opción no fue seleccionada." + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "Base de datos: buscar y reemplazar URL del sitio" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "Fallo: no se entienden los resultados devueltos por la operación %s." + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "Fallo: no fue posible empezar la operación %s." + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "(aprenda más)" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "Buscar y reemplazar ubicación del sitio en la base de datos (migrar)" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "Todas las referencias a la ubicación del sitio en la base de datos serán reemplazadas con su URL de sitio actual, que es: %s" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "Ficheros subidos del sitio" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "Plugins que tiene que usar" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "No tiene permiso para acceder a esta página." + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "No tiene suficientes permisos para acceder a esta página." + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "Instalar Multisitio" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "a partir de la próxima vez es" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "Fallo: El puerto tiene que ser un número entero." + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "contraseña" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "Nombre de usuario" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "nombre del alojamiento (hostname)" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "Cuando cambie de directorio después de acceder - a menudo esto es relativo a su directorio personal." + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "Ruta de acceso del directorio" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "Contraseña" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "Puerto" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "Alojamiento (host)" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "Error %s: Fallo al descargar" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "Revise sus permisos de fichero: No se pudo crear e introducir con éxito:" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "%s no encontrado" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "El cifrado explícito es usado por defecto. Para forzar el cifrado implícito (puerto 990), añada :990 a su servidor FTP abajo." + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "El FTP cifrado está disponible, y será probado en primer lugar automáticamente (después se volverá al no cifrado si no tiene éxito), a menos que que lo inhabilite usando las opciones para expertos. El botón 'Test FTP Login' le dirá qué tipo de conexión está in uso." + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "No se respaldaron %s directorios: no fue encontrado nada para respaldar" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "Tenga cuidado con lo que introduce - si introduce \"/\" entonces se intentará crear un zip con todo lo que hay en su servidor web." + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "Si lo usa, introduzca una ruta absoluta (no relativa a su instalación de WordPress)." + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "Si no sabe para qué es esta opción, entonces no la necesita, y debería apagarla." + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "Introduzca el directorio:" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "Más ficheros" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "Núcleo de WordPress (incluyendo cualquier adición a su directorio raíz de WordPress)" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "Los ficheros anteriores abarcan todo en una instalación de WordPress." + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "Sobre-escribir wp-confir.php" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "Núcleo de WordPress" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "Fallo: no se pudo colocar un fichero en este directorio - por favor, revise sus credenciales." + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "Fallo" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "URL de WebDAV" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "Error de escritura local: Fallo al descargar" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "Error abriendo fichero externo: Fallo al descargar" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "Trozo %s: Ocurrió un error %s" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "No se encontraron los ajustes %s" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "Fallo: la identificación tuvo éxito, pero no hemos podido crear un fichero en el directorio indicado." + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "Éxito: hemos iniciado sesión con éxito, y hemos confirmado la posibilidad de crear un fichero en el directorio indicado (tipo de ingreso:" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "Fallo: no tuvo éxito el inicio de sesión con esas credenciales." + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "Fallo: Los detalles del servidor no fueron dados." + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "Tiene que existir ya" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "Si desea cifrar (por ejemplo, está almacenando datos sensibles de su empresa), un complemento está disponible." + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "Sólo la versión estándar de UpdraftPlus sólo soporta FTP sin cifrar." + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "Su nombre de cuenta %s: %s" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "aunque parte de la información devuelta no era esperada - su experiencia puede variar" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "tiene autenticada su cuenta %s" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "hay un complemento para esto." + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "Si respalda varios sitios en el mismo Dropbox y desea organizarlos con subcarpetas, entonces " + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "Los respaldos están guardados en" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "¿Necesita usar subcarpetas?" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "Error: fallo al subir el fichero a %s (vea el fichero del archivo de registro para saber más)" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "No parece estar autenticado con Dropbox" + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "La comunicación con %s no fue cifrada." + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "La comunicación con %s fue cifrada." + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "Accedimos con éxito al bucket, y hemos podido crear ficheros en él." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "Accedimos con éxito al bucket, pero el intento de crear un fichero en él falló." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "Fallo" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "Fallo: No pudimos acceder o crear un bucket con éxito. Por favor, revise sus credenciales de acceso, y si estas son correctas encontes pruebe con otro nombre de bucket (quizás otro usuario de %s pueda tener ya uno con su nombre)." + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "Región" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "Fallo: No se dieron los del bucket." + +#: methods/s3.php:961 +msgid "API secret" +msgstr "API secret" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "Introduzca sólo un nombre de bucket o un bucket y ruta. Ejemplos: mybucket, mybucket/mypath" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "Ubicación de %s" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "Clave secreta de %s" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "clave de acceso %s" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "Si ve errores sobre certificados SSL, vaya aquí para obtener ayuda." + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "Consiga su clave de acceso y su clave secreta desde su consola de %s, luego elija un (normalmente único - para todos los usuarios de %s) nombre de bucket (letras y números) (y opcionalmente una ruta) a usar para almacenamiento. Este bucket será creado si no existe ya." + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "Error de %s: Fallo al acceder al bucket %s. Revise sus permisos y credenciales." + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "Error de %s: Fallo al descargar %s. Revise sus permisos y credenciales." + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "Error de %s al re-ensamblar (%s): (vea el fichero del archivo de registro para saber más)" + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "%s subida (%s): fallo re-ensamblando (vea el archivo de registro para más detalles)" + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "%s trozo de %s: falló la subida" + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "Error de %s: el fichero %s fue reducido inesperadamente" + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "%s subida: falló la obtención de una ID de subida para la subida multiparte - vea el fichero del archivo de registro para más detalles" + +#: methods/email.php:69 +msgid "Note:" +msgstr "Nota:" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "Respaldo de WordPress" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "Accedimos al contenedor, y pudimos crear ficheros en él." + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "Error Cloud Files - accedimos al contenedor, pero falló la creación de un fichero en él" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "Fallo: Lo detalles del contenedor no fueron dados." + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "Nombre de usuario" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "Clave API" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "Fallo: %s no fue dado." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "El módulo %s de UpdraftPlus requiere %s. Por favor, no solicite soporte; no hay alternativa." + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "Contenedor de Cloud Files" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "Clave API de Cloud Files" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "Nombre de usuario de Cloud Files" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "Reino Unido (UK)" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "EEUU de Norteamérica (US)" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "Nube de EEUU o Reino Unido" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "También, debería leer esta pregunta frecuente (FAQ) importante." + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "Consigue tu clave API desde tu consola Rackspace Cloud (lea las instrucciones aquí), entonces elija un nombre de contenedor a usar para el almacenamiento. Este contenedor será creado si no existe aún." + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "Probar ajustes %s" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "Error descargando fichero externo: Falló la descarga (" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "Error abriendo fichero local: Fallo al descargar" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "Error de Cloud Files - fallo al subir fichero" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "Error %s: Fallo al subir" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "Error %s: Fallo al abrir el fichero local" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "Error de Cloud Files - fallo al crear y acceder al contenedor" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "Falló la autenticación de Cloud Files" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "Después de guardar los ajustes (haciendo clic en 'Guardar cambios' más abajo), vuelva aquí y haga clic en este enlace para completar la autenticación con Google." + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "Autenticar con Google" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "Client Secret" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "Si Google le muestra luego el mensaje \"invalid_client\", entonces no introdujo un Client ID válido aquí." + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "Client ID" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "Tiene que añadir lo siguiente la URI de redirección autorizada (bajo \"More Options\") cuando se le pida" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "Seleccione 'Web Application' como el tipo de aplicación." + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "Para una ayuda más exhaustiva, incluyendo capturas de pantalla, siga este enlace. La descripción de abajo es suficiente para los usuarios más experimentados." + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "%s es una buena opción, porque UpdraftPlus soporta la subidas fragmentadas - no importa cuán grande sea su sitio, UpdraftPlus puede subirlo poco a poco, y no será frustrado por excesos de tiempo de ejecución (timeouts)." + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "La cuenta no está autorizada." + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "Fallo al subir a %s" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "Cuenta llena: su cuenta %s tiene sólo %d bytes más, y el fichero a ser subido es de %d bytes" + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "Aún no se ha obtenido una señal de acceso desde Google - tiene que autorizar o re-autorizar su conexión a Google Drive." + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "has autenticado tu cuenta %s." + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "Éxito" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "Su cuota usada de %s: %s %% usado, %s disponible" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "Falló la autorización" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "No se recibió señal de Google. A menudo, esto significa que ha introducido el Client Secret equivocado, o que todavía no ha re-autenticado (abajo) tras corregirlo. Vuelva a comprobarlo, a continuación, siga el enlace para autenticarse de nuevo. Por último, si eso no funciona, utilice el modo experto para limpiar todos los ajustes, cree un nuevo Client ID/Client Secret de Google, y empiece de nuevo." + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "siga este enlace para conseguirlo" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "Soporte para %s está disponible como un complemento" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "No tienes instalado el complemento %s de UpdraftPlus - consígalo de %s" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "Usted tiene que volver a autenticarse con %s, ya que sus credenciales actuales no están funcionando." + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "Ok" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "El prefijo de la tabla ha cambiado: cambiando %s campo(s) de la tabla en consecuencia:" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "Terminado. Líneas procesadas: %d en %.2f segundos" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "la consulta a la base de datos que se ejecutaba fue:" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "se restaurará como:" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "Antiguo prefijo de la tabla:" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "Respaldo de:" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "Acceso a la base de datos: el acceso directo a MySQL no está disponible, estamos regresando al uso de wpdb (este método será mucho más lento)" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "Fallo al abrir la base de datos" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "Fallo en encontrar la base de datos" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "Precaución: El modo seguro (safe_mode) está activado en su servidor. Errores de exceso de tiempo de ejecución de comandos (timeouts) pueden suceder. Si esto pasa, usted tendrá que restaurar manualmente el fichero mediante phpMyAdmin u otro método." + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "wp-config.php desde el respaldo: restaurando (según la petición del usuario)" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "wp-config.php desde el respaldo: se restaurará como wp-config-backup.php" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "Fallo al escribir la base de datos descifrada al sistema de archivos" + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "Fallo al crear un directorio temporal" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "No se borró el directorio de trabajo después de restaurar." + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "No se pudo borrar el directorio viejo." + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "Limpiando basura..." + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "Restaurando la base de datos... (en sitios grandes podría tardar mucho tiempo - si obtiene errores de exceso de tiempo de ejecución de comandos (timeout), lo que puede pasar si su proveedor de alojamiento (hosting) tiene configurado su alojamiento con recursos limitados, entonces debe usar un método diferente como phpMyAdmin)" + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "La base de datos fue descifrada con éxito." + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "Descifrando base de daros (puede tardar)..." + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "Descomprimiendo el respaldo..." + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "Falló el respaldo de esta entidad." + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "Fichero de respaldo no disponible." + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "UpdraftPlus no puede restaurar este tipo de entidad directamente. Tiene que restaurarla manualmente." + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "No se pudo encontrar uno de los ficheros a restaurar" + +#: admin.php:5009 +msgid "Error message" +msgstr "Mensaje de error" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "Los datos del respaldo no contienen información sobre el tamaño adecuado de este fichero." + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "Tamaño esperado del archivo:" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "Si haces una solicitud de soporte, por favor incluye esta información:" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "ABORTADO: No se puede conseguir la información de qué entidades restaurar." + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "Restauración de UpdraftPlus: Progreso" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "Este respaldo no existe en el historial de respaldos - restauración abortada. Fecha y hora:" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "Tras marcar este botón, tendrá la opción de seleccionar qué componentes desea restaurar" + +#: admin.php:4572 +msgid "Press here to download" +msgstr "Haga clic aqui para descargar" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "Eliminar este paquete de respaldo" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "Buenas noticias: La comunicación de su servidor con %s puede ser cifrada. Si obtiene algún error por problemas de cifrado, entonces vaya a 'Ajustes para expertos' para obtener más ayuda." + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "Las instalaciones PHP/Curl en su servidor de web no soportan acceso https. No podemos acceder a %s sin este soporte. Consulte al soporte de su proveedor de alojamiento (hosting). %s requiere Curl+https. Por favor, no contacte nuestro soporte; no puede ofrecerle alternativas." + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "Las instalaciones PHP/Curl en su servidor de web no soportan acceso https. Las comunicaciones con %s estarán sin cifrar. Solicite a su proveedor de alojamiento (hosting) que instale Curl/SSL para poder obtener la habilidad de cifrar (mediante un complemento)." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "Su instalación de servidor web PHP no incluye un módulo requerido (%s). Por favor, contacte con el soporte de su proveedor de alojamiento web." + +#: admin.php:4062 +msgid "Save Changes" +msgstr "Guardar cambios" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "Elegir esta opción baja su seguridad parando UpdraftPlus de usar SSL para la autentificación y cifrar el transporte completamente, donde sea posible. Tenga en cuenta que algunos proveedores de almacenamiento en la nube no permiten esto (ej. Dropbox), por lo tanto con estos proveedores este ajuste no tendrá ningún efecto." + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "Deshabilitar SSL donde sea posible" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "Tenga en cuenta que no todos los métodos de respaldo en la nube usan necesariamente autentificación SSL." + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "Elegir esta opción baja la seguridad, ya que UpdraftPlus deja de verificar la identidad de los sitios cifrados conectados (ej. Dropbox, Google Drive). Es decir, UpdraftPlus sólo usará SSL para el cifrado del tráfico, y no para autentificación." + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "No verificar los certificados SSL" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "Por defecto UpdraftPlus utiliza sus propios certificados SSL para verificar la identidad de los sitios remotos (es decir, para asegurarse de que se está comunicando con los verdaderos Dropbox, Amazon S3, etc., y no atacantes). Mantenemos estos hasta la fecha. Sin embargo, si se produce un error de SSL, a continuación, elegir esta opción (que hace que UpdraftPlus use en su lugar la colección de su servidor web) puede ayudar." + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "Usar el certificado SSL del servidor" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "Si no se logra, verifique los permisos en su servidor o cambie a otro directorio que se pueda escribir." + +#: admin.php:3697 +msgid "click here" +msgstr "Clic aquí" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "o, para resetear la opción" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "El directorio de respaldo especificado se puede escribir. Esto es bueno." + +#: admin.php:4009 +msgid "Backup directory" +msgstr "Directorio de respaldo" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "Borrar respaldos locales" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "haga clic aquí para mostrar otras opciones; no lo utilice a menos que tenga un problema o sea curioso." + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "Mostrar ajustes para expertos" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "Ajustes para expertos" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "Modo de depuración" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "Avanzado / Ajustes de depuración" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "Solicitando empezar el respaldo..." + +#: admin.php:591 +msgid "Cancel" +msgstr "Cancelar" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "Ninguno" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "Seleccione su almacenamiento externo" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "Descifrar manualmente un respaldo de la base de datos" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "Frase de cifrado de la base de datos" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "Correo electrónico" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "Los directorios de arriba tienen todo, excepto por el núcleo de WordPress que puede ser descargado completo desde WordPress.org." + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "Excluir estos:" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "Cualquier otro directorio que se encuentre en wp-content" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "Incluir en los ficheros de respaldo" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "ej. si su servidor está ocupado de día y desea respaldar en la noche" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "Para fijar el horario cuando el respaldo deba iniciar," + +#: admin.php:3683 +msgid "Monthly" +msgstr "Mensual" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "Quincenal" + +#: admin.php:3681 +msgid "Weekly" +msgstr "Semanal" + +#: admin.php:3680 +msgid "Daily" +msgstr "Diario" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "Descargar el archivo de registro (log)" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "La carpeta existe, pero su servidor web no tiene permisos para escribir en ella." + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "La carpeta fue creada, pero hay que cambiar sus permisos de fichero a 777 (editable por todo el mundo) para hacer posible escribir en ella. Debería consultar con su proveedor de alojamiento que esto no vaya a causar ningún problema." + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "Falló la solicitud al sistema de archivos de crear el directorio." + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "Borrar" + +#: admin.php:3418 +msgid "show log" +msgstr "mostrar archivo de registro (log)" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "Esto borrara todos los ajustes de UpdraftPlus. Está seguro de realizar esta operación?" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "calcular peso" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "Nótese: Este recuento está basado en lo que fue, o no fue, excluido la última vez que guardó las opciones." + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "Datos totales (descomprimidos) en disco:" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "No" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "Sí" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "Versión de %s:" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "Uso de memoria actual" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "Tope de uso de memoria" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "Servidor web:" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "Por favor revise UltradraftPlus Premium, o el complemento autónomo para Multisitio." + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "¿Necesita soporte de Multisitio de WordPress?" + +#: admin.php:2654 +msgid "Multisite" +msgstr "Multisitio" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "Realice un respaldo de una sola vez" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "Lea este artículo para saber cosas útiles antes de la restauración." + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "Puede buscar y reemplazar en su base de datos (para la migración de un sitio web a una nueva localización/URL) con el complemento Migrator - siga este enlace para más información" + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "%s opciones de restauración:" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "Tendrá que restaurarla manualmente." + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "La siguiente entidad no puede ser restaurada automáticamente: \"%s\"." + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "Su servidor web tiene activo el modo seguro (safe_mode) de PHP." + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "Seleccione los componentes a restaurar" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "La restauración reemplazará la base de datos, los directorios themes, plugins, uploads, y/o otros directorios de wp-content (según lo que contenga este paquete de respaldo, y su selección)." + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "Restaurar respaldo desde" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "Restaurar respaldo" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "Eliminar paquete de respaldo" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "Error descargando: el servidor envió una respuesta que no entendimos." + +#: admin.php:570 +msgid "You should:" +msgstr "Usted debe:" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "Error:" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "calculando..." + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "UpdraftPlus - Subir fichero de respaldo" + +#: admin.php:3020 +msgid "refresh" +msgstr "actualizar" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "Espacio de disco en su servidor de web en uso por UpdraftPlus" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "Google Drive" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "Si está usando esto, estonces apague el modo Turbo/Road." + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "Navegador Opera" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "Más tareas:" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "Descargar el archivo de registro (log) más reciente" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "(Ningún registro aún)" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "Último mensaje del archivo de registro (log)" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "Restaurar" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "Respaldar ahora" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "Base de datos" + +#: admin.php:229 +msgid "Files" +msgstr "Ficheros" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "Próximos respaldos programados" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "Al mismo tiempo que sus ficheros de respaldo" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "Nada programado actualmente" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "Esta interfaz administrativa usa JavaScript frecuentemente. Usted debe activarlo en su navegador o utilice un navegador que tenga JavaScript habilitado." + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "Advertencia de JavaScrip" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "Borrar directorios antiguos" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "Límite actual:" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "Su respaldo ha sido restaurado." + +#: admin.php:2310 +msgid "Version" +msgstr "Versión" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "Página web del desarrollador principal" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "Sus ajustes han sido vaciados." + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "Directorio de respaldo creado con éxito." + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "El directorio de respaldo no pudo ser creado" + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "La eliminación de directorios antiguos falló por varios motivos. Puede que desee hacerlo manualmente." + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "Directorios antiguos eliminados con éxito." + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "Eliminar directorios antiguos" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "Volver a la configuración de UpdraftPlus" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "Acciones" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "¡La restauración tuvo éxito!" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "Formato de nombre de fichero inapropiado - no parece un fichero de base de datos cifrado por UpdraftPlus" + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "Formato de nombre de fichero inapropiado - no parece un fichero creado por UpdraftPlus" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "No hay presente una copia local." + +#: admin.php:2072 +msgid "Download in progress" +msgstr "Descarga en progreso" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "Fichero preparado" + +#: admin.php:2043 +msgid "Download failed" +msgstr "La descarga falló" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "Error" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "No se pudo encontrar este trabajo - ¿quizás haya finalizado?" + +#: admin.php:1854 +msgid "Job deleted" +msgstr "Trabajo eliminado" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "OK. Debería ver la actividad pronto en el campo de abajo (\"Último mensaje del archivo de registro\")." + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "Todavía no hay nada conectado" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "Por favor, consulte estas preguntas frecuentes (FAQ) si tiene problemas con los respaldos." + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "Su sitio web está alojado usando el servidor web %s." + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "UpdraftPlus no da soporte oficial a versiones de WordPress anteriores a %s. Puede que funcione, pero si no, por favor, tenga en cuenta que no podremos ofrecerle soporte hasta que actualice WordPress." + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "Tiene menos del %s de espacio libre en el disco en el que UpdraftPlus está configurado para crear respaldos. UpdraftPlus podría quedarse sin espacio. Póngase en contacto con el operador de su servidor (quizás su proveedor de alojamiento web) para resolver este problema." + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "Advertencia" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "Complementos / Soporte profesional" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "Ajustes" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "Ficheros permitidos" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "No se pudo crear el zip %s. Consulte el fichero de archivo de registro para más información." + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "Bucle infinito: consulte su archivo de registro para más información" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "Revise UpdraftPlus.Com para ayuda, complementos y soporte" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "¿Necesita más características y soporte? Revise UpdraftPlus Premium" + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "Por favor, ayude a UpdraftPlus dando una reseña positiva en WordPress.org" + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "¿Le gusta UpdraftPlus y puede escatimar un minuto?" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "¿Puede usted traducir? ¿Quiere mejorar UpdraftPlus para quienes hablan su lengua?" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "Fichero no encontrado" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "La clave de descifrado usada:" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "El descifrado falló. La causa más común es usar la clave incorrecta." + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "El descifrado falló. El fichero de la base de datos está cifrado, pero usted no ha introducido ninguna clave." + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "No se pudo abrir el fichero de respaldo para escribir" + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "No se pudo guardar el historial del respaldo. El respaldo probablemente falló." + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "No se pudo leer el directorio" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "El directorio de respaldo (%s) no se puede escribir, o no existe." + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "El respaldo de WordPress esta completo" + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "El intento de respaldo ha terminado, al parecer sin éxito" + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "El respaldo parece haber tenido éxito y ahora está completado" + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "Ocurrió un error de cifrado cuando se cifraba la base de datos. Cifrado abortado." + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "No se pudieron crear ficheros en el directorio de respaldo. El respaldo se abortó - revise sus ajustes de UpdraftPlus." + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "Otros" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "Ficheros subidos (/uploads)" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "Temas (/themes)" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "Plugins (/plugins)" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "No se encontraron ficheros de archivo de registro (log)." + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "El fichero del archivo de registro (log) no pudo ser leído." + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "Aviso de UpdraftPlus:" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "Respaldos UpdraftPlus" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-es_MX.mo b/plugins/updraftplus/languages/updraftplus-es_MX.mo new file mode 100644 index 0000000..c215a15 Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-es_MX.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-es_MX.po b/plugins/updraftplus/languages/updraftplus-es_MX.po new file mode 100644 index 0000000..822eb61 --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-es_MX.po @@ -0,0 +1,6109 @@ +# Translation of UpdraftPlus in Spanish (Mexico) +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2015-10-14 21:49:30+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: es_MX\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "" + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "" + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "" + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "" + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "" + +#: addons/webdav.php:91 +msgid "Path" +msgstr "" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "" + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "" + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "" + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "" + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "" + +#: admin.php:2310 +msgid "FAQs" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "" + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "" + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "" + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "" + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "" + +#: methods/ftp.php:355 +msgid "login" +msgstr "" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "" + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "" + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "" + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "" + +#: admin.php:2604 +msgid "Now" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "" + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "" + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "" + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "" + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "" + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "" + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "" + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "" + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "" + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "" + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "" + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "" + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "" + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "" + +#: admin.php:3420 +msgid "stop" +msgstr "" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "" + +#: admin.php:3092 +msgid "this backup set" +msgstr "" + +#: admin.php:3020 +msgid "calculate" +msgstr "" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "" + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "" + +#: admin.php:601 +msgid "Saving..." +msgstr "" + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:557 +msgid "Fetching..." +msgstr "" + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "" + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "" + +#: admin.php:2884 +msgid "Dismiss" +msgstr "" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "" + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "" + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "" + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "" + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "" + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "" + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "" + +#: admin.php:3860 +msgid "File Options" +msgstr "" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "" + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "" + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "" + +#: admin.php:5157 +msgid "settings" +msgstr "" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "" + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "" + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "" + +#: admin.php:442 +msgid "Extensions" +msgstr "" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "" + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "" + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "" + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "" + +#: addons/azure.php:524 +msgid "container" +msgstr "" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "" + +#: addons/azure.php:523 +msgid "optional" +msgstr "" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "" + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "" + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "" + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "" + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "" + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "" + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "" + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "" + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "" + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "" + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "" + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "" + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "" + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "Usted no cuenta con UpdraftPlus completamente instalado - favor de instalar de nuevo. Lo mas probable sea que haya habido un mal funcionamiento de WordPress cuando se copiaban los archivos de plugins." + +#: restorer.php:767 +msgid "Deferring..." +msgstr "Difiriendo..." + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "o para configurar planeaciones más complejas" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "Esta seguro que desea remover %s de UpdraftPlus?" + +#: admin.php:3081 +msgid "Deselect" +msgstr "Deseleccionar" + +#: admin.php:3080 +msgid "Select all" +msgstr "Seleccionar todo" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "Acciones a realizar para respaldos seleccionados" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "Presiona aqui para buscar conjuntos de respaldo dentro de sus metodos de almacenamiento remotos (de cualqueir sitio, si estan almacenados en el mismo directorio)." + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "Procesando..." + +#: admin.php:634 +msgid "For backups older than" +msgstr "Para respaldos anteriores a" + +#: admin.php:633 +msgid "week(s)" +msgstr "semana(s)" + +#: admin.php:632 +msgid "hour(s)" +msgstr "hora(s)" + +#: admin.php:631 +msgid "day(s)" +msgstr "día(s)" + +#: admin.php:630 +msgid "in the month" +msgstr "en el mes" + +#: admin.php:629 +msgid "day" +msgstr "día" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "(tantos como guste)" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "Añadir una regla de retención adicional..." + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "Esta base de datos necesita ser desplegada en MySQL versión %s o posterior." + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "Este problema es causado por intentar restaurar una base de datos en una version muy antigua de MySQL la cual es incompatible con la base de datos original." + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "Usted por el momento carece de una cuota en la bóveda de UpdraftPlus" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "Debe actualizar MySQL para poder usar esta base de datos." + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "El respaldo de la base de datos usa características de MySQL no disponibles en la version antigua (%s) que se encuentra actualmente corriendo para el sitio." + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "Ningun link de publicidad en la página de ajustedes de Updraft" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "El directorio de UpdraftPlus en wp-content/plugins/ tiene espacios en blanco en el; ha WordPress no le agrada esto, Deberia reneombrar el directorio a wp-content/plugins/updraftplus para solucionar el problema" + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "No recuerda su email u olvidó su contraseña?" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "Introduzca su email de UpdraftPlus.Com/ contraseña aquí para conectarse:" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "Lea las preguntas frecuentes aquí." + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "Marque esta casilla para utilizar el encriptado por servidor de Amazon" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "Encriptado por servidor" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "Si ha olvidado su contraseña, vaya aquí para cambiarla en updraftplus.com." + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "Entre a los ajustes de almacenamiento remoto para conectarse." + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "%s ha sido elegido para almacenamiento remoto, pero no se encuentra actualmente conectado." + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "Pagos pueden ser hechos en dólares, euros, o libras esterlinas, via tarjeta de crédito o PayPal." + +#: admin.php:607 +msgid "Update quota count" +msgstr "Actualizar cuota de la bóveda" + +#: admin.php:606 +msgid "Counting..." +msgstr "Contando..." + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "Desconectando..." + +#: admin.php:603 +msgid "Connecting..." +msgstr "Conectando..." + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "" + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "" + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "" + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "La bóveda de UpdraftPlus esta construida encima de los centros de datos de nivel mundial de Amazon, con almacenamiento de datos redundantes para lograr 99.999999% de confianza." + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "Ya compro espacio?" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "Mostrar opciones" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "Usuario primerizo?" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "Presiona un botón para iniciar" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "La bóveda de UpdraftPlus le brinda almacenamiento confiable, facil de usar y a un gran precio" + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "Tiene una subscripción a la bóveda de UpdraftPlus la cual no ha sido renovada, y el periodo de gracia ha expirado. En unos días su información almacenada será permanentemente removida. Si desea que esto no suceda, debería renovar a la brevedad." + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "Usted tiene una subscripción a la bóveda de UpdraftPlus con pagos atrasados. Actualmente se encuentra en un periodo de gracia previo a ser suspendido, puede perder su cuota y acceso a información almacenada. Favor de renovar tan pronto sea posible!" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "Su compra Premium de UpdraftPlus tiene mas de un año. Deberia de renovarla para evitar perder los 12 meses de almacenamiento gratis con el que cuenta por ser un cliente deUpdraftPlus Premium." + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "Bóveda de Updraft" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "" + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "" + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "" + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "" + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "" + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "" + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "" + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "" + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "" + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "" + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "" + +#: admin.php:4423 +msgid "Site" +msgstr "" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "" + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "" + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "" + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "" + +#: admin.php:617 +msgid "Deleting..." +msgstr "" + +#: admin.php:616 +msgid "key name" +msgstr "" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "" + +#: admin.php:611 +msgid "Creating..." +msgstr "" + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "" + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "" + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "" + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "" + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "" + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "" + +#: addons/migrator.php:1861 +msgid "key" +msgstr "" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "" + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "" + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "" + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "" + +#: admin.php:608 +msgid "Adding..." +msgstr "" + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "" + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "" + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "" + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "" + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "" + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "" + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "" + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "" + +#: methods/email.php:73 +msgid "configure it here" +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "" + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "" + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "" + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "" + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "" + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "" + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "" + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "" + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "" + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "" + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "" + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "" + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "" + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "" + +#: admin.php:2831 +msgid "Personal support" +msgstr "" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "" + +#: admin.php:2718 +msgid "Get it from" +msgstr "" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "" + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "" + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "" + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "" + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "" + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "" + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "" + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "" + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "" + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "" + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "" + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "" + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "" + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "" + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "" + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "" + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "" + +#: admin.php:4368 +msgid "Backup date" +msgstr "" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "" + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "" + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "" + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "" + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "" + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "" + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "" + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "" + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "" + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "" + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "" + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "" + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "" + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "" + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "" + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "" + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "" + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "" + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "" + +#: backup.php:829 +msgid "Incremental" +msgstr "" + +#: backup.php:829 +msgid "Full backup" +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "" + +#: backup.php:895 +msgid "read more at %s" +msgstr "" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "" + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "" + +#: admin.php:3872 +msgid "Database Options" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "" + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "" + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "" + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "" + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "" + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "" + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "" + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "" + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "" + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "" + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "" + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "" + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "" + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "" + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "" + +#: admin.php:4499 +msgid "External database" +msgstr "" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "" + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "" + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "" + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "" + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "" + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "" + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "" + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "" + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "" + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "" + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "" + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "" + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "" + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "" + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "" + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "" + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "" + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "" + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "" + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "" + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "" + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "" + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "" + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "" + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "" + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "" + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "" + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "" + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "" + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "" + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "" + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "" + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "" + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "" + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "" + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "" + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "" + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "" + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "" + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "" + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "" + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "" + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "" + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "" + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "" + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "" + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "" + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "" + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "" + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "" + +#: admin.php:1528 +msgid "Constants" +msgstr "" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "" + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "" + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "" + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "" + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "" + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "" + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "" + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "" + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "" + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "" + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "" + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "" + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "" + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "" + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "" + +#: admin.php:556 +msgid "Trying..." +msgstr "" + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "" + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "" + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "" + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "" + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "" + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "" + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "" + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "" + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "" + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "" + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr "" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr "" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "" + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "" + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "" + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "" + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "" + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "" + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "" + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "" + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "" + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "" + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "" + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "" + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "" + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "" + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "" + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "" + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "" + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "" + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "" + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "" + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "" + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "" + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "" + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "" + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "" + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "" + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "" + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "" + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "" + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "" + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "" + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "" + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "" + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "" + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "" + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "" + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "" + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "" + +#: admin.php:3359 +msgid "table: %s" +msgstr "" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "" + +#: restorer.php:646 +msgid "file" +msgstr "" + +#: restorer.php:639 +msgid "folder" +msgstr "" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "" + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "" + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "" + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "" + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "" + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "" + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "" + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "" + +#: admin.php:2310 +msgid "More plugins" +msgstr "" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "" + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "" + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "" + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "" + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "" + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "" + +#: admin.php:584 +msgid "Upload error" +msgstr "" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "" + +#: admin.php:582 +msgid "Upload error:" +msgstr "" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "" + +#: admin.php:572 +msgid "Download to your computer" +msgstr "" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "" + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "" + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "" + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "" + +#: admin.php:563 +msgid "Warnings:" +msgstr "" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "" + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "" + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "" + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "" + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "" + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "" + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "" + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "" + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "" + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "" + +#: admin.php:4836 +msgid "Final checks" +msgstr "" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "" + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "" + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "" + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "" + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "" + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "" + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "" + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "" + +#: restorer.php:939 +msgid "Files found:" +msgstr "" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "" + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "" + +#: admin.php:4908 +msgid "file is size:" +msgstr "" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "" + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "" + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "" + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "" + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "" + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "" + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "" + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "" + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "" + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "" + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "" + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "" + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "" + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "" + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "" + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "" + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "" + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "" + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "" + +#: admin.php:596 +msgid "Close" +msgstr "" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "" + +#: admin.php:576 +msgid "PHP information" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "" + +#: admin.php:2627 +msgid "Get it here." +msgstr "" + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "" + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "" + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "" + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "" + +#: admin.php:2304 +msgid "Premium" +msgstr "" + +#: admin.php:2305 +msgid "News" +msgstr "" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "" + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "" + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "" + +#: admin.php:880 +msgid "Notice" +msgstr "" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "" + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "" + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "" + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "" + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "" + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "" + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "" + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "" + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "" + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "" + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "" + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "" + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "" + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "" + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "" + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "" + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "" + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "" + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "" + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "" + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "" + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "" + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "" + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "" + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "" + +#: methods/s3.php:961 +msgid "API secret" +msgstr "" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "" + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "" + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "" + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "" + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "" + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "" + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "" + +#: methods/email.php:69 +msgid "Note:" +msgstr "" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "" + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "" + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "" + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "" + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "" + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "" + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "" + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "" + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "" + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "" + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "" + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "" + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "" + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "" + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "" + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "" + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "" + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "" + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "" + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "" + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "" + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "" + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "" + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "" + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "" + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "" + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "" + +#: admin.php:5009 +msgid "Error message" +msgstr "" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "" + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "" + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "" + +#: admin.php:4572 +msgid "Press here to download" +msgstr "" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "" + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "" + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "" + +#: admin.php:4062 +msgid "Save Changes" +msgstr "" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "" + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "" + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "" + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "" + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "" + +#: admin.php:3697 +msgid "click here" +msgstr "" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "" + +#: admin.php:4009 +msgid "Backup directory" +msgstr "" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "" + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "" + +#: admin.php:591 +msgid "Cancel" +msgstr "" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "" + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "" + +#: admin.php:3683 +msgid "Monthly" +msgstr "" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "" + +#: admin.php:3681 +msgid "Weekly" +msgstr "" + +#: admin.php:3680 +msgid "Daily" +msgstr "" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "" + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "" + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "" + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "" + +#: admin.php:3418 +msgid "show log" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "" + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "" + +#: admin.php:2654 +msgid "Multisite" +msgstr "" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "" + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "" + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "" + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "" + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "" + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "" + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:570 +msgid "You should:" +msgstr "" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "" + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "" + +#: admin.php:3020 +msgid "refresh" +msgstr "" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "" + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "" + +#: admin.php:229 +msgid "Files" +msgstr "" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "" + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "" + +#: admin.php:2310 +msgid "Version" +msgstr "" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "" + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "" + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "" + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "" + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "" + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "" + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "" + +#: admin.php:2072 +msgid "Download in progress" +msgstr "" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "" + +#: admin.php:2043 +msgid "Download failed" +msgstr "" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "" + +#: admin.php:1854 +msgid "Job deleted" +msgstr "" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "" + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "" + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "" + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "" + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "" + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "" + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "" + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "" + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "" + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "" + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "" + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "" + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "" + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "" + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "" + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "" + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "" + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "" + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "" + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-fa_IR.mo b/plugins/updraftplus/languages/updraftplus-fa_IR.mo new file mode 100644 index 0000000..814d4f3 Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-fa_IR.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-fa_IR.po b/plugins/updraftplus/languages/updraftplus-fa_IR.po new file mode 100644 index 0000000..526ba0c --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-fa_IR.po @@ -0,0 +1,6109 @@ +# Translation of UpdraftPlus in Persian +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2015-11-27 14:14:26+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: fa\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "" + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "" + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "" + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "" + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "" + +#: addons/webdav.php:91 +msgid "Path" +msgstr "" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "" + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "" + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "" + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "" + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "" + +#: admin.php:2310 +msgid "FAQs" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "" + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "" + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "" + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "" + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "" + +#: methods/ftp.php:355 +msgid "login" +msgstr "" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "" + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "" + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "" + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "" + +#: admin.php:2604 +msgid "Now" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "" + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "" + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "" + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "" + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "" + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "" + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "" + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "" + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "" + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "" + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "" + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "" + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "" + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "" + +#: admin.php:3420 +msgid "stop" +msgstr "" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "" + +#: admin.php:3092 +msgid "this backup set" +msgstr "" + +#: admin.php:3020 +msgid "calculate" +msgstr "" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "" + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "" + +#: admin.php:601 +msgid "Saving..." +msgstr "" + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:557 +msgid "Fetching..." +msgstr "" + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "" + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "" + +#: admin.php:2884 +msgid "Dismiss" +msgstr "" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "" + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "" + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "" + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "" + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "" + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "" + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "" + +#: admin.php:3860 +msgid "File Options" +msgstr "" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "" + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "" + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "" + +#: admin.php:5157 +msgid "settings" +msgstr "" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "" + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "" + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "" + +#: admin.php:442 +msgid "Extensions" +msgstr "" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "ابزارهای پیشرفته" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "" + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "" + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "" + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "" + +#: addons/azure.php:524 +msgid "container" +msgstr "" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "" + +#: addons/azure.php:523 +msgid "optional" +msgstr "" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "" + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "" + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "" + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "" + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "" + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "" + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "" + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "" + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "" + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "" + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "" + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "" + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "" + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "" + +#: restorer.php:767 +msgid "Deferring..." +msgstr "" + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "" + +#: admin.php:3081 +msgid "Deselect" +msgstr "" + +#: admin.php:3080 +msgid "Select all" +msgstr "" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "" + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "" + +#: admin.php:634 +msgid "For backups older than" +msgstr "" + +#: admin.php:633 +msgid "week(s)" +msgstr "" + +#: admin.php:632 +msgid "hour(s)" +msgstr "" + +#: admin.php:631 +msgid "day(s)" +msgstr "" + +#: admin.php:630 +msgid "in the month" +msgstr "" + +#: admin.php:629 +msgid "day" +msgstr "" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "" + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "" + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "" + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "" + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "" + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "" + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "" + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "" + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "" + +#: admin.php:607 +msgid "Update quota count" +msgstr "" + +#: admin.php:606 +msgid "Counting..." +msgstr "" + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "" + +#: admin.php:603 +msgid "Connecting..." +msgstr "" + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "" + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "" + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "" + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "" + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "" + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "" + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "" + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "" + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "" + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "" + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "" + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "" + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "" + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "" + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "" + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "" + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "" + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "" + +#: admin.php:4423 +msgid "Site" +msgstr "" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "" + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "" + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "" + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "" + +#: admin.php:617 +msgid "Deleting..." +msgstr "" + +#: admin.php:616 +msgid "key name" +msgstr "" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "" + +#: admin.php:611 +msgid "Creating..." +msgstr "" + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "" + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "" + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "" + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "" + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "" + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "" + +#: addons/migrator.php:1861 +msgid "key" +msgstr "" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "" + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "" + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "" + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "" + +#: admin.php:608 +msgid "Adding..." +msgstr "" + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "" + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "" + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "" + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "" + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "" + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "" + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "" + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "" + +#: methods/email.php:73 +msgid "configure it here" +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "" + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "" + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "" + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "" + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "" + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "" + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "" + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "این به احتمال زیاد بدان معنی است که شما یک وب سرور با یک وب سایت هک شده که در حملات قبلی استفاده میشده به اشتراک گذاشته اید." + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "به نظر میرسد که آی پی وب سرور شما (%s) بلوک شده است." + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "UpdraftPlus.com \" عدم دسترسی \" را پاسخ داده." + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "افزونه ی تجاری WooCommerce" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "دو افزونه ی رایگان امنیتی" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "افزونه ای با کیفیت تر بیشتر" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "رفتن به سبد خرید" + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "درمقایسه با نسخه ی رایگان" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "نسخه ی تجاری UpdraftPlus" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "برای ثبت نام لینک زیر را دنبال کنید" + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "خبررسان رایگان" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "ممنونیم که از UpdraftPlus برای پشتیبان گیری استفاده کردید" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "بست ( برای %s ماه)" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "(در همان زمانی که از فایل ها پشتیبان تهیه میشود )" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "هیچ پشیبانی هنوز کامل نشده" + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "(اولین قدم پاک کردن نسخه ی رایگان)" + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "اگر شما خریدی از UpdraftPlus.Com انجام داده اید لینک زیر را به منظور آموزش نصب خرید خود دنبال کنید." + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "ثبت نام در خبرنامه" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "برای عضویت در خبرنامه UpdraftPlus لینک زیر را دنبال کنید" + +#: admin.php:2831 +msgid "Personal support" +msgstr "پشتیبانی شخصی" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "قفل کردن تنظیمات دسترسی" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "پشتیبانی از شبکه / مولتی سایت" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "رفع مشکل زمان پشتیبان گیری" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "زمان بدنی پشتیبان گیری" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "بازگردانی پشتیبان ها از سایر افزونه ها" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "رمزگذاری دیتابیس" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "ارسال پشتیبان ها به مقصد های مختلف خارج از سرور" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "بک آپ گیری خودکار هنگام بروز رسانی وردپری / افزونه ها / قالب ها" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "امکانات گزارش گیری پیشرفته" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "ایمیل اصلی گزارش گیری" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "Migrate / clone (i.e. copy) websites " + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "پشایبان گیری از فایل ها و دیتابیس های اضافه" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "Dropbox, Google Drive, FTP, S3, Rackspace, Email" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "پشتیبان گیری در فضای خارج از سرور" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "بازیابی از پشتیبان" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "%s ترجمه شده به سایر زبان ها" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "پشتیبان گیری از فایل های وردپرس به همراه دیتابیس" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "اینو الان بخرید !" + +#: admin.php:2718 +msgid "Get it from" +msgstr "اینو بگیر از" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "سوال قبل از سفارش" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "لیست کلیه ی امکانات" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "لیست کامل امکانات" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "دریافت نسخه ی تجاری UpdraftPlus" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "شما در حال حاضر در حال استفاده از نسخه ی رایگان UpdraftPlus از wordpress.org هستید." + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "پشتیبان گیری از پلاگین ها ,قالب ها ها و پایگاه داده وردپرس با UpdraftPlus قبل از به روز رسانی" + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "%s خطا: مقدار دهی اولیه با شکست روبرور شد" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "یا" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "یا" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "شما هیچ مورد را برای بازیابی انتخاب نکردید . لطفا حداقل یکی را انتخاب کنید و دوباره تلاش کنید." + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "" + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "" + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "این یک آدرس احراز هویت از نسخه ی 2 (Keystone) دارد ; از نسخه 1 پشتیبانی نمیشود (Swauth) ." + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "آدرس مدیریت سایت شما" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "برای ارسال گزارش به شما این گزینه را انتخاب کنید" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "دستی " + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "یک خظا رخ داد (%s) :" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "تغییر تنظیمات قفل" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "پوشه ها یا دایکتوری های دیگری که در سرور شما وجود دارد و شما میخواهید از انها پشتیبان تهیه بشود." + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "برای ویژگی های بیشتر و پشتیبانی شخصی , انتخاب شود " + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "ایجاد جدول با شکست روبرو شد - احتمالا به این علت میباشد که اجازه ی دسترسی برای حذف جدول ها وجود ندارد یا این جدول از قبل موجود است ." + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "پاک کردن صفحات کش (%s)..." + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "عبارت مورد نیاز برای رمزگذاری پایگاه داده" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "پشتیبان گیری خودکار قبل از بروز رسانی" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "هسته ی وردپرس ( فقط)" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "" + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "برای دسترسی به تنظیمات UpdraftPlus لطفا پسورد را وارد کنید" + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "پسورد اشتباهه" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "بازکردن قفل" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "در غیر این صورت لینک اولیه نشان داده خواهد شد." + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "آدرس پشتیان" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "درخواست پسورد دوباره بعد از" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "%s هفته" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "1 هفته" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "%s ساعت" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "1 ساعت" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "لطفا مطمئن شوید که شما یک یاداوری برای پسوردتان در نظر گرفته اید!" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "قفل کردن دسترسی به صفحه ی تنظیمات UpdraftPlus" + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "تنظیمات ذخیره شد." + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "پسورد مدیریت تغییر کرد ." + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "یک پسورد برای مدیریت هم اکنون قرار داده شد." + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "پسورد مدیریت همکنون پاک شد" + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "(اطلاعات بیشتر در مورد این گزینه)" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "" + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "دیدن گزارس" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "اطلاعات پشتیبان ( برای دانلود کلیک کنید )" + +#: admin.php:4368 +msgid "Backup date" +msgstr "تاریخ پشتیبان" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "" + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "آپلود فایل ها به UpdraftPlus ." + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "" + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "عنوان پشتیبان :" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "چک کردن گزارش شما برای دیدن جزئیات." + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "خطای از نوع ZIP رخ داده" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "لیبل شما برای این فایل پشتیبان (اختیاری)" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "" + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "آدرس ایمیل شما توسط UpdraftPlus.Com قابل تشخیص نمی باشد" + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "آدرس ایمیل شما معتبر است، ولی رمز عبور شما توسط UpdraftPlus.Com شناسایی نمی شود." + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "باید آدرس ایمیل و رمز عبور را تامین نمائید." + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "برای ادامه کار بر روی 'پشتیبان گیری' کلیک کنید. سپس فیلد 'آخرین سوابق' را مشاهده نمائید." + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "اگر می خواهید پشتیبان multisite را بازیابی کنید، اول نیاز دارید که وردپرس را به صورت multisite تنظیم نمائید." + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "" + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "انجام شد" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "پرش (در لیست نمی باشد)" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "جستجو و جایگزینی جدول" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "یک لیست csv وارد نمائید. در غیر اینصورت برای همه جداول خالی بگذارید." + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "فقط این جداول" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "ردیف در دسته" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "شما هنوز به اکانت UpdraftPlus.Com متصل نشده اید." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "برای دریافت بروزرسانی ها در آینده نیاز به اتصال به UpdraftPlus دارید." + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "هر درخواست پشتیبانی با %s باید از ظریق شرکت هاستینگ سایت مطرح گردد." + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "اگر نمی توانید سرور موجود را بروزرسانی کنید، باید ادامه دهید و مطمئن باشید که plugins/themes/etc. با ورژن قدیمی %s سازگاری دارد." + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "این جدیدتر از سروری است که در حال بازسازی درون آن هستید (نسخه %s)" + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "سایت این پشتیبان در حال اجرا بر روی وب سرور با نسخه %s از %s است." + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "لینکداین" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "گوگل پلاس" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "فیسبوک" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "توییتر" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "UpdraftPlus در رسانه های اجتماعی - از اینجا ما را ببینید:" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "چرا من این را می بینم؟" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "محل این دایرکتوری در تنظیمات پیشرفته در تب تنظیمات قابل تنظیم است." + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "اینجا را فشار دهید تا درون دایرکتوری UpdraftPlus (بر روی فضای میزبانی خود) را برای هر پشتیبان جدیدی که آپلود کرده اید، مشاهده نمائید." + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "شروع پشتیبان گیری" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "شما در حال استفاده از وب سرور %s هستید، ولی به نظر می رسد که ماژول %s بارگذاری نگردیده است." + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "شما باید با ارائه دهنده سرویس هاست وب سایت خود تماس گرفته و در مورد چگونگی ایجاد دسترسی نوشتن یک افزونه وردپرس به دایرکتوری کمک بخواهید." + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "تا زمانی که شما دچار مشکل شده اید، می توانید هرچیزی که در اینجا وجود دارد را نادیده بگیرید." + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "فایل نمی تواند آپلود شود." + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "شما می توانید اطلاعات بیشتری از این قسمت را در بخش تنظیمات پیدا کنید." + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "افزونه های پشتیبان گیری قابل پشتیبانی: %s" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "آیا این فایل پشتیبان توسط یک افزونه پشتیبان گیری دیگر ایجاد شده است؟ اگر بله، اول باید آن را تغییر نام دهید تا قابل شناسایی گردد - لطفاً لینک زیر را مشاهده نمائید." + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "درباره پشتیبان گیری افزایشی بیشتر توضیح بده." + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "محدودیت حافظه" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "بازسازی" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "جدول به طور ضمنی کاهش یافته است: %s" + +#: backup.php:829 +msgid "Incremental" +msgstr "افزایشی" + +#: backup.php:829 +msgid "Full backup" +msgstr "پشتیبان گیری کامل" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "درحال اقدام برای بروزرسانی ..." + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "(مشاهده گزارش ...)" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "پشتیبان گیری با موفقیت به اتمام رسید" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "هر %s ساعت" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "جستجو و جایگزین کردن" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "برو" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "یک فرایند جستجو/جایگزین کردن نمی‌تواند بازگردانده شود - آیا مطمئن هستید که می‌خواهید این کار را انجام دهید؟" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "این مورد می‌تواند به راحتی سایت شما را تخریب کند؛ بنابراین با دقت استفاده کنید!" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "جایگزین کن با" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "جستجو کن برای" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "جستجو / جایگزین کردن دیتابیس" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "شرایط جستجو" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "خطاهای بسیار زیادی مربوط به دیتابیس بوجود آمد - درحال خاتمه دادن" + +#: backup.php:895 +msgid "read more at %s" +msgstr "در %s بیشتر بخوانید" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "گزارش‌های ایمیلی ایجاد شده توسط نسخه رایگان UpdraftPlus آخرین اخبار وبسایت UpdraftPlus.com را برایتان ارائه می‌کند" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "اگر UpdraftPlus را بر روی چندین سایت مختلف وردپرسی نصب کنید، نمی‌توانید پروژه تان را دوباره استفاده کنید؛ باید برای هر یک از سایت‌ها، باید مورد جدیدی از کنسول API گوگل خود ایجاد کنید." + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "شما تا کنون پشتیبان‌ای نساخته اید." + +#: admin.php:3872 +msgid "Database Options" +msgstr "تنظیمات دیتابیس" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "افزونه‌ها برای اشکال زدایی:" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "%s (%s استفاده شده)" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "فضای دیسک خالی موجود در این اکانت:" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "این کلید غیرفعال است چون پوشه پشتیبان گیری شما غیر قابل نوشتن است (تنظیمات را مشاهده کنید)." + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "پشتیبان‌های موجود" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "وضعیت کنونی" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "برای تغییر هرگونه تنظیمی از تنظیمات پیشفرض چیزهایی که پشتیبان گرفته شده اند، برای پیکربندی پشتیبان گیریهای زمان بندی شده، برای ارسال پشتیبان های شما به مخزن ذخیره سازی از راه دور (توصیه میشود)، و بیشتر، به بخش تنظیمات بروید." + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "برای ایجاد پشتیبان، بر روی کلید {همین حالا پشتیبان بگیر} کلیک کنید." + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "به UpdraftPlus خوش آمدید!" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "هر متنی که در اینجا نوشته شود به عنوان رمزگذاری فایل دیتابیس استفاده خواهد شد. حتما این متن را در یک مکان امن جداگانه ذخیره و نگهداری کنید وگرنه فایل های پشتیبان ایجاد شده بلا استفاده خواهند بود و شما نمیتوانید در آینده از آنها استفاده کنید. این کد به عنوان کلید رمزگشایی فایل های پشتیبان شما در پنل ادمین استفاده خواهد شد .(در صورت تغییر آن رمزگشایی خودکار انجام نخواهد شد مگر قبل از رمزگشایی کلید قبلی را وارد نمایید.)" + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "درحال تست ..." + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "تست ارتباط ..." + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "پیشوند جدول" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "پشتیبان گیری از دیتابیس خارجی" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "افزودن یک دیتابیس خارجی به پشتیبان گیری ..." + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "اگر دیتابیس شما شمایل تیبل هایی هست که بخشی از وردپرس نیستند این گزینه را علامت بزنید تا از انها نیز پشتیبان تهیه شود ." + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "پشتیبان های تیبل های غیر وردپرس نیز به طور یکجا در دیتابیس وردپرس قرار گرفت" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "این گزینه باعث می شود که از تیبل هایی که متعلق به وردپرس نیستند نیز پشتیبان تهیه شود .(تعریف شده توسط پیشوند , %s )" + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "ارتباط برقرار نشد." + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "ارتباط با موفقیت برقرار شد." + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "%s جدول یافته شد. %s با پیشوند یافته شد." + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "%s جدول (ها) یافته شد." + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "تلاش برای ارتباط با دیتابیس با مشکل مواجه شد." + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "نام دیتابیس" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "میزبان" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "کاربر" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "دیتابیس خارجی (%s)" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "این لینک را برای دسترسی به کنسول API گوگل دنبال کنید و دیسک API را فعال و یک آی دی کاربری در قسمت دسترسی API ایجاد نمایید." + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "دسترسی به پوشه ی مادر با مشکل مواجه شد" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "اما , تلاش برای دسترسی بعدی با مشکل مواجه شد." + +#: admin.php:4499 +msgid "External database" +msgstr "دیتابیس خارجی" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "این گزینه یک خروجی دیباگ شده برای تمام پلاگین های شما ایجاد خواهد نمود - لطفا از دیدن ان شگفت زده نشید ." + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "پشتیبان گیری بیشتر از دیتابیس ها" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "ابتدا, کلید رمزگشایی را وارد کنید" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr " در اینجا شما می توانید به صورت دستی از دیتابیس های رمزگذاری شده رمزگشایی کنید ." + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "اون میتواند از دیتابییس خارجی پشتیبانگیری کند." + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "نمیخواید جاسوسی کنید ؟ UpdraftPlus پرمیوم میتواند دیتابیس شما را رمزگذاری کند ." + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "استفاده از UpdraftPlus تجاری" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "رمزگشایی با شکست مواجه شد . فایل دیتابیس رمزگذاری شده است." + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "تنها دیتابیس های وردپرس قایل بازیابی هست. برای دیتابیس های خارجی باید دستی عمل کنید ." + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "در اولین %s دستور یک مشکل رخ داد - در حال لغو." + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "ارتباط با مشکل مواجه شد : جزئیات دسترسی را چک کنید , که سرور دیتابیس آنلاین باشد و شبکه ی ارتباطی توسط فایروال محدود نشده باشد." + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "تلاش برای ارتباط با دیتابیس با مشکل مواجه شد." + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "اخطار: آدرس صفحه ی اصلی دیتابیس (%s) متفاوت از آن چیزی است که ما انتظار داریم (%s)" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "در %s، نام آدرس به حروف کوچک و بزرگ حساس است." + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "در صورتیکه خالی بگذارید، فایل پشتیبان در شاخه اصلی %s شما درج خواهد شد." + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "مثال %s" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "در صورتیکه فولدر هم اکنون وجود نداشته باشد، ساخته خواهد شد." + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "مسیر فولدر %s که مایلید استفاده کنید را اینجا وارد کنید." + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "کانتینر" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "اگر خالی بماند، یک پیشفرض برایش انتخاب خواهد شد." + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "مستاجر" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "برای اطلاعات بیشتر این لینک را دنبال کنید" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "احراز هویت URI" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "اعتبار دسترسی خود را از فراهم کننده ی \"اوپن استک سویفت\" خود دریافت کنید و سپس برای استفاده از فضا، یک نام برای کانتینر برگزینید. این کانتینر ایجاد خواهد شد در صورتیکه هم اکنون وجود نداشته باشد." + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "ناموفق در دانلود نمودن %s" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "ناموفق در دانلود" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "ناموفق در لیست نمودن فایل ها" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "ناموفق در آپلود %s" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "موفق:" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "پس از اینکه تنظیمات را ذخیره کردید (با کلیک بر روی 'Save Changes' )، دوباره به اینجا برگردید و برای اتمام احراز هویت با %s روی این لینک کلیک کنید." + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "(به نظر میرسد شما قبلا احراز هویت شده اید)." + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "دراپ باکس" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "احراز هویت با %s" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "خطا در دانلود فایل ریموت: دانلود ناموفق" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "منطقه: %s" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "خطای %s - ما به کانتینر دسترسی پیدا کردیم، اما نتوانستیم فایلی درون آن ایجاد کنیم" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "موضوع %s یافت نشد" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "نمی توان به کانتینر %s دسترسی پیدا کرد" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "خطای %s - ناموفق در دسترسی به کانتینر" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "نام صاحب حساب: %s" + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "اگر می خواهید توانایی انتخاب نام فولدر دلخواه خود را داشته باشید، از آپ درفت پلاس پریمیوم استفاده کنید." + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "این یک شماره شناسه ی داخلی برای گوگل درایو می باشد" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "این نام فولدر نیست." + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "فولدر" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "دانلود %s: ناموفق: فایل یافت نشد" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "نام: %s" + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "لیست فایل های Google Drive : دسترسی به پوشه ی مادر با شکست مواجه شد." + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "نسخه ی %s شما: %s." + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "شما نیاز خواهید داشت با شرکت هاستینگ خود برای ارتقا تماس بگیرید." + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "این روش ذخیره سازی دستی (%s) نیازمند PHP %s یا جدیدتر می باشد." + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "پوشه ی پوسته ها (%s) یافت نشد اما نسخه ی پایین تر موجود است. بر این اساس تنظیمات دیتابیس را بروز رسانی کنید" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "تماس" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "بازخوانی" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "این امکانات نیازمند %s نسخه %s یا جدیدتر میباشد." + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "داده های افزونه Elegant themes theme builder شناسایی شد: فولدر موقت در حال بازنشانی" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "%s فایل استخراج شد" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "ناموفق در بازگشایی آرشیو" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "خطا - ناموفق در دانلود فایل" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "جستجوی مجدد فولدر جهت ایجاد بکاپ" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "شما باید UpdraftPlus را به روز رسانی کنید تا مطمئن شوید که نسخه شما تست سازگاری شده است." + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "تا نسخه ی %s تست شده است." + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr " نسخه پشتیبان / بازیابی UpdraftPlus هنوز روی نسخه ی وردپرس (%s) شما تست نشده است." + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "رمز/کلید" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "کلید" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "برای ورود تنها نیاز بهیک پسورد یا کلید میباشد نه هر دو." + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "فرمت کلید ارائه شده صحیح نیست یا اینکه خراب است." + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "رمز/ کلید SCP/SFTP" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "فایل پشتیبان ایجاد شد ( توسط %s) " + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "فایل ها و دیتابیس وردپرس پشتیبان گیری شد .( توسط %s)" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "بوسیله ی %s پشتیبان ایجاد شد. " + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "دیتابیس ( ایجاد شده توسط %s)" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "منبع نامشخص" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "اسکن دوباره فضا" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "آپلود فایل های پشتیبان" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "این پشتیبان ایجاد شده توسط %s و میتواند بارگزای شود ." + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "برای راهنمایی این صفحه را مطالعه کنید تا از نکات امکان پذیر برای حل مشکل اطلاع پیدا کنید." + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "وردپرس تعدادی (%d) وظیفه ی زمانمند که زمان انها سر رسیده دارد . مگر اینکه سایت شما تحت توسعه میباشد یعنی فعالیت های زمان مند در وردپرس غیرفعال میباشد ." + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "اگر این فایل پشتیبان توسط پلاگین های دیگری ایجاد شده ممکن است نسخه ی تجاری UpdraftPlus به شما کمک کند ." + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "اگر چه , فایل فایل های آرشیو UpdraftPlus از فرمت های استاندارد zip/SQL هستند اگر شما مطمئن هستید که فرمت های شما صحیح میباشند شما میتوانید آنها را به الگوی صحیح تغییر نام دهید ." + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "این فایل به نظر میرسد از فایل های پشتیبان UpdraftPlus نمیباشد ( فایل هایی با فرمت هایی مثل : zip یا gz با نام هایی مثل : backup_(time)_(site name)_(code)_(type).(zip|gz) )" + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "فایل پشتیبان توسط منبع نامشخصی ایجاد شده (%s) است و نمیتواند بازیابی شود ." + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "پوشه ی محتویات وردپرس (wp-content) در این فایل زیپ یافت نشد." + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "این نسخه از UpdraftPlus توانایی پشتیبانی از این نوع فایل پشتیبان بیگانه را ندارد " + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "%s پاسخ HTTP ناخواسته ای بازگشت داده شد :%s" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "روش دسترسی (%s) به فایل توسط ماژول UpdraftPlus در لیست فایل ها پشتیبانی نمیشود ." + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "هیچ تنظیماتی یافت نشد" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "یک یا چندین پشتیبان از طریق اسکن کردن فضای ذخیره سازی ریموت، افزوده شدند. توجه کنید که این پشتیبان ها به صورت خودکار طبق تنظیمات \"حفظ پشتیبان ها\" حذف نخواهند شد. اگر/وقتی که شما تصمیم به حذف کردن آن دارید، باید این کار را به صورت دستی انجام دهید." + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "جستوجوی دوباره مکان های ذخیره سازی برای مجموعه فایل های پشتیبانی..." + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "(ادامه مطلب)" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "تنظیمات مسیر های سایت های چندگانه ( مولتی سایت ها )" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "گزارش تمام پیام ها در گزارش سیستم ( تنها ادمین سرور ها اینو میخواهند )" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "اضافه کردن دیگری ..." + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "حذف" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr " %s سوالات متداول دیگر" + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "این گزینه را برای دریافت اطلاعات و ایمیل های فرآیند پشتیبان گیری انتخاب کنید - برای زمانی که فرایند با مشکل مواجه می شوند مفید هست ." + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "اگر چندین فایل یا مسیر را وارد کردید آنها را با کاما از یک دیگر جدا کنید . برای دسترسی به سطوح بالاتر شما میتوانید با قرار دادن * در شروع یا انتها, آنها را تعریف کنید ." + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "شررکت هاست شما باید ایت تابع را فعال کنید قبل از اینکه %s بتواند کار کند ." + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "تنظیمات نصب وب سرور PHP شما این تابع را غیر فعال کرده است : %s ." + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "FTP رمزگذاری شده ( رمزگذاری صریح)" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "FTP رمزگذاری شده ( رمزگذاری ضمنی)" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "FTP غیر رمزگداری شده ی معمولی" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "پشتیبانی ایجاد شده بوسیله ی :" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "در این سایت امکان پذیره" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "برای باقی ماند دسترسی به پشتیبانی , لطفا تجدید کنید ." + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "دسترسی تجاری شما برای پشتیبانی UpdraftPlus به زودی به اتمام خواهد رسید." + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "برای دسترسی دوباره، لطفا تجدید کنید." + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "دسترسی تجاری شما به پشتیبانی UpdraftPlus به اتمام رسیده است." + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "دسترسی تجاری شما برای بروزرسانی های UpdraftPlus برای این سایت به زودی به اتمام خواهد رسید." + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "برای حفظ دسترسیتان و ادامه استفاده از بروزرسانی ها (که شامل قابلیت های جدید و سازگاری با نسخه های جدید وردپرس است) و برای پشتیبانی، لطفا تجدید کنید." + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "دسترسی تجاری شما به بروزرسانی های UpdraftPlus برای %s از %s افزونه های روی این سایت به زودی به اتمام خواهد رسید." + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "دسترسی تجاری شما به آپدیت های UpdraftPlus برای افزونه های %s روی این سایت منقضی شده است." + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "برای دسترسی دوباره به بروزرسانی ها (که شامل قابلیت های جدید و سازگاری با نسخه های جدید وردپرس است) و پشتیبانی، لطفا تجدید کنید." + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "دسترسی تجاری شما برای بروزرسانی های UpdraftPlus برای این سایت به اتمام رسیده است. شما دیگر بروزرسانی برای UpdraftPlus دریافت نخواهید کرد." + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "نادیده گرفتن از داشبورد اصلی (برای %s هفته)" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "تلاش برای خنثی کردن فشردگی دولایی موفقیت آمیز بود." + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "تلاش برای خنثی کردن فشردگی دولایی با شکست مواجه شد." + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "فایل دیتابیس به نظر میرسد که دوبار فشرده سازی شده است - ممکن است وبسایتی که از آن دانلود کرده این دارای اشکال در پیکربندی وب سرور باشد." + +#: admin.php:1528 +msgid "Constants" +msgstr "ثابت ها" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "بازکردن فایل دستابیس با شکست مواجه شد برای خواندن:" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "هیچ تیبلی در دیتابیس پیدا نشد" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "لطفا برای تلاش های برنامه ریزی شده منتظر بمانید" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "توجه کنید که پیغام های هشدا جنبه مشاوره ای دارند - فرایند پشتیبان گیری به خاطر آن ها متوقف نمیشود. در عوض، آن ها اطلاعاتی را ارائه میدهند که ممکن است کاربردی باشند یا ممکن است دلیل و منبعی که باعث عدم موفقیت فرایند پشتیبان گیری شده است را نشان دهند." + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "زمان انجام کوئری بر روی پایگاه داده: %d در %.2f ثانیه" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "تعداد ردیف های جستجو و جایگزین شده: %d" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "از این جدول بگذر: داده های این جدول (%s) نباید در جستجو/جایگزینی باشد" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "حساب کاربری پر شده است: حساب کاربری %s شما فقط %d بایت دیگر دارد، ولی فایلی که در حال بارگزاری آن هستید %d بایت دیگر باقی مانده است (حجم کل: %d بایت)" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "خطایی رخ داده است:" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "از طریق این لینک می توانید فایل سوابق بازیابی را دانلود نمائید (برای درخواست های پشتیبانی نیاز دارید)." + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "این FAQ را هم ملاحظه نمائید." + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "" + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "" + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "تنظیمات PHP بر روی این سرور فقط اجازه می دهد که %s ثانیه PHP اجرا شود. اگر شما داده های زیادی برای ورود دارید و اگر عملیات بازیابی زمان زیادی می برد، نیاز دارید از شرکت هاست خود تقاضای افزایش این زمان را بکنید (و یا به صورت تکه تکه اقدام به بازیابی نمائید)." + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "مقدار زمانی که برای اجرای افزونه های وردپرس اجازه داده شده است (%s ثانیه) خیلی کم است - شما برای اجتناب از رخ دادن خطا در پشتیبان گیری باید آن را افزایش دهید (با شرکت هاست خود صحبت کنید تا به شما کمک کنند - تنظیمات PHP در max_execution_time است؛ پیشنهاد می شود آن را به %s ثانیه و یا بیشتر تغییر دهید)" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "جایگزینی در جداول وبلاگ/سایت: از: %s به: %s" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "%s: از فایل های کش صرف نظر شد (وجود ندارند)" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "این افزونه غیر فعال گردید: %s: هر زمان که آماده بودید، برای فعالسازی مجدد آن به صورت دستی اقدام نمائید." + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "زمان اتصال %s منقضی شد؛ اگر سرور را درست وارد کرده اید، ممکن است به خاطر بلوکه کردن توسط فایروال اتفاق افتاده باشد- باید با شرکت هاست خود کنترل نمائید." + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "پوسته فعلی یافت نشد: برای جلوگیری از عدم بارگزاری سایت، پوسته شما به حالت پیش فرض تغییر یافت" + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "بازسازی ناموفق..." + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "پیغام:" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "دایرکتوری موجود نمی باشد" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "ایمیل کاربر جدید" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "نام کاربری کاربر جدید" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "کلید API ادمین" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "نام کاربری ادمین" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "حساب کاربری US یا UK Rackspace" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "" + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "ساخت کاربر API و کانتینر جدید" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "کلید API: %s" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "رمز عبور: %s" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "نام کاربری: %s" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "عدم موفقیت در عملیات فایل های ابری (%s)" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "تداخل: این کاربر و یا ایمیل وجود دارد" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "یک ایمیل معتبر وارد نمائید" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "یک container وارد نمائید" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "یک نام کاربری جدید وارد نمائید" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "نیاز به وارد کردن کلید API دارید" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "باید نام کاربری ادمین را وارد نمایید" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "ساخت کاربر API جدید با دسترسی به این کانتینر (به غیر از کل کاربر شما)" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "کانتینر فایل های ابری" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "کلید API فایل های ابری" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "" + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "نام کاربری فضای ابری" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "لندن (LON)" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "هنگ کنگ (HKG)" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "Northern Virginia (IAD)" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "Chicago (ORD)" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "Sydney (SYD)" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "Dallas (DFW) (default)" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "ناحیه ذخیره فضای ابری" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "حساب های کاربری ساخته شده در rackspacecloud.com حساب های آمریکا هستند؛ حساب های کاربری ساخته شده در rackspace.co.uk حساب های انگلیس محور هستند." + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "حساب کاربری US یا UK-based Rackspace" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "حساب های کاربری ساخته شده در rackspacecloud.com حساب های آمریکا هستند؛ حساب های کاربری ساخته شده در rackspace.co.uk حساب های انگلیس هستند." + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "عدم تایید مجوز (اعتبار خود را بررسی نمائید)" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "خطای ناشناخته در هنگام اتصال به UpdraftPlus.Com رخ داده است." + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "ایجاد" + +#: admin.php:556 +msgid "Trying..." +msgstr "در حال تلاش..." + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "رمز عبور کاربر جدید کنسول RackSpace این است (دوباره نمایش داده نخواهد شد):" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "(زمانی که رمزگشایی شد)" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "داده خطا:" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "پشتیبان در تاریخچه پشتیبان وجود ندارد" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "" + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "" + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "پیشوند جداول جدید: %s" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "" + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "%s: این دایرکتوری موجود است، و جایگزین خواهد شد" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "نمی توان فایل ها را منتقل کرد. مجوز فایل خود را چک کنید." + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "نمی توان فایل های جدید را منتقل کرد. فولدر wp-content/upgrade را چک کنید." + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "نمی توان فایل های قدیمی را حذف کرد." + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "برداشتن دیتا قدیمی از سر راه..." + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "آدرس دیگری اضافه نمائید..." + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "آدرس ها را در این قسمت وارد کن تا زمانی که عملیات پشتیبان گیری به پایان رسید، گزارش به آن ارسال شود." + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "گزارش های ایمیل" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "کنترلی %s: %s" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "فایل: %s" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "از بخش \"گزارشگیری\" برای تنظیم آدرس ایمیل مورد استفاده، استفاده نمائید." + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr "(با هشدارهای (%s))" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr "(با خطاهای (%s))" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "اطلاعات مشکل زدایی" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "آپلود شده در:" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "زمان سپری شده:" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "اخطارها" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "خطاها" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "خطاها/اخطارها:" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "شامل:" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "پشتیبان گیری شروع شده از:" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "گزارش پشتیبان گیری" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "%d ساعت، %d دقیقه، %d ثانیه" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "%d خطا، %d هشدار" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "احراز هویت %s" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "خطای %s: %s" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "لوگو %s" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "%s پاسخ لازم را بر نگرداند - فایل سوابق را برای دریافت اطلاعات بیشتر مشاهده نمائید" + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "ماژول PHP %s لازم نصب نشده است - از شرکت هاست خود برای فعالسازی آن درخواست کنید." + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "برای گزینه های بیشتر از افزونه \"%s\" استفاده نمائید." + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "آدرس ایمیل ادمین شما (%s) استفاده خواهد شد." + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "اتصال" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "برای امکانات بیشتر گزارشگیری، از افزونه گزارشگیری استفاده نمائید." + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "(نسخه: %s)" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "آگاه باشید که سرورهای ایمیل معمولاً محدودیت حجم دارند؛ معمولاً %s مگابایت؛ پشتیبان های بزرگتر از این مقدار نخواهند رسید." + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "زمانی که روش ذخیره ایمیل فعال باشد، کل پشتیبان ارسال می شود" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "آخرین وضعیت:" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "محتویات پشتیبان:" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "پشتیان گیری شده: %s" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "فایل سوابق به این ایمیل الصاق شده است." + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "خطای ناشناخته - لطفاً درخواست پشتیبانی ثبت نمائید" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "فقط پایگاه داده (فایل ها شامل این زمانبندی خاص نمی شود)" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "پایگاه داده (پشتیبان گیری از فایل ها کامل نشده است)" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "فایل (پشتیبان گیری از پایگاه داده کامل نشده است)" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "فایل ها و پایگاه داده" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "" + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "" + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "UpdraftPlus Premium (و یا Multisite add-on) وردپرس Multisite و ویژگی های بیشتری را پشتیبانی می کند." + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "این یک وردپرس multisite است." + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "اخطار UpdraftPlus:" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "(یا با استفاده از فرم درون این صفحه در صورتی که آن را خریده اید، متصل شوید)" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "این لینک ها را دنبال کن تا بتونی پلاگین را فعال کنی " + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "این لینک ها رو دنبال کن تا بتونی پلاگین رو آپدیت کنی" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "آخرین " + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "مدل نسخه شما %s" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "آفرین تمام شد " + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "پشتیبانی UpdraftPlus" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "یک بروز رسانی برای تعلقات در دسترس است از لینک زیر به دنبال آن بروید " + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "تعلقات UpdraftPlus" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "یک بروز رسانی برای UpdraftPlus است لینک زیر را دنیال کنید " + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "سایت UpdraftPlus.Com پاسخ داده است اما ما که چیزی نفهمیدیم " + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "ایمیل و آدرس شما را سایت UpdraftPlus.Com شناسایی نمی کند " + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "سایت UpdraftPlus.Com پاسخ داده است اما ما دقیقا این قسمت رو متوجه نشدیم (اطلاعات :%s )" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "سایت UpdraftPlus.Com پاسخ داده است اما ما که چیزی نفهمیدیم " + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr " ما نتوانستیم به سایت UpdraftPlus.Com متصل شویم :((" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "گزارش " + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "گزینه ها (خام)" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "وقتی گزارش بفرست که خظا یا هشداری وجود دارد " + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "لینک محتویات " + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "همچینی می توانید از افزودنی \"More Files\" در فروشگاه ما دیدن کنید " + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "میزان فضای خالی در حساب هاست شما اندک است فقط %s مگابایت باقی مانده " + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "مقدار حافظه (RAM) برای پی اچ پی بسیار کم است (%s مگابایت) - شما باید آن را برای جلوگیری از خرابی افزایش دهید (از اونی که ازش هاست خریدی کمک بگیر )" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "مدیریت افزونی ها " + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "اقدام به خرید" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "از فروشگاه UpdraftPlus.com آن را خریداری نمایید" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "آن را در این سایت فعال نمایید" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "شما یک خرید غیرفعال دارید" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "اختصاص داده شده به این سایت" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "موجود برای این سایت (از طریق خرید همه افزونه های شما)" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "(ظاهرا یک نسخه ی قبل از انتشار یا انتشاری صرف نظر شده است)" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "به اینجا بروید" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "به پشتیبانی نیاز دارید؟" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "در هنگام تلاش برای بازیابی افزونه های شما یک خطا رخ داد." + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "پاسخی ناشناخته دریافت شد. پاسخ این بود:" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "ادعا اعطا نشد - مشخصات ورود شما به حساب اشتباه بود" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "لطفا صبر کنید در حالی که ما این ادعا را ثبت می کنیم..." + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "در هنگام تلاش برای ارتباط با سرور خطایی رخ داد:" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "شما در حال حاضر متصل نیستید به اکانتی در UpdraftPlus.com" + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "اگر شما افزونه های جدیدی خریداری نموده اید، پس برای رفرش نمودن کانکشن خود این لینک را دنبال کنید" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "شما هم اینک متصل شدید به یک اکانت UpdraftPlus.com . ارتباط موفق" + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "مشتاقید درباره ی امنیت پسورد خود در UpdraftPlus.com بیشتر بدانید؟ اینجا پیرامون آن بخوانید." + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "جزئیات خود را فراموش کرده اید؟" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "هنوز اکانت ندارید (رایگان است)؟ یکی برای خود ثبت کنید!" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "در حال اتصال به اکانت UpdraftPlus.com شما" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "ورژن PHP وب سرور شما بسیار قدیمی می باشد (" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "به نظر میرسد شما این افزونه را نصب شده دارید - شاید افزونه را گیج نموده اید؟" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "برای شروع نصب افزونه به اینجا بروید." + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "افزونه هنوز نصب نشده است." + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "برای فعالسازی افزونه به اینجا بروید." + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "افزونه هنوز فعال نشده است." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "برای اتصال به اینجا بروید." + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "شما هنوز به اکانت خود در UpdraftPlus.com متصل نیستید که پیش نیاز لیست کردن افزونه های خریداری شده شماست." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "بدون آن، کد نمودن بسیار آهسته تر خواهد شد." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "ماژول %s بر روی وب سرور شما نصب نیست." + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "(به نظر میرسد شما احراز هویت شده اید، گرچه اگر مشکلی دارید می توانید برای رفرش نمودن دسترسی خود دوباره لاگین کنید)." + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "فایل های پشتیبان را به اینجا بکشید" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "مدیریت وردپرس از طریق خط دستور - زمان-سرور خیلی بزرگ" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "بررسی WordShell" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "خواهان قابلیت های بیشتر یا پشتیبانی تضمین شده هستید؟ سایت UpdraftPlus.com را چک کنید" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "وب سرور کد خطا برگرداند (دوباره تلاش کنید، یا فایل رخدادهای وب سرور خود را بررسی نمایید)" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "فرایند بازنشانی شروع شد. پیش از آنکه پیام اتمام کار را دریافت کنید اقدام به متوقف کردن یا بستن مرورگر خود نفرمایید." + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "اگر شما هم پشتیبان دیتابیس و هم پشتیبان فایل ها را استثنا کنید، در واقع همه چیز را مستثنی نموده اید!" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "صفحه اول سایت:" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "گزینه های حافظه ی خارجی" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "(ثبت رخدادها بطور پیشفرض در صفحه ی تنظیمات افزونه قرار دارند)..." + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "این انتخاب را برای دفعه ی بعد به خاطر بسپار (شما کماکان این شانس را خواهید داشت که آن را در آینده تغییر دهید)" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "آپلود ناموفق بود" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "شما با کمک پلاگین می توانید فایل بک آپ خود را به بیش از یک مکان بفرستید." + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "توجه: خط پروسه زیر بر مبنای مرحله است، نه بر مبنای زمان. بک آپ را تنها به این دلیل که به نظر میرسد برای مدتی در یک جا ثابت ایستاده است متوقف نکنید. این کاملا عادی است." + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "(%s%%، فایل %s از %s)" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "پیرامون نحوه کار برنامه بیشتر بدانید..." + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "انجام نشد: ما قادر به وارد شدن بودیم، اما متاسفانه ایجاد فایل در آن مکان با موفقیت انجام نشد." + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "انجام نشد: ما قادر به ورود و منتقل کردن به مسیر مشخص شده بودیم، اما متاسفانه ایجاد فایل در آن مکان با موفقیت انجام نشد" + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "به جای SFTP از SCP استفاده کن" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "تنظیمات کاربر SCP/SFTP" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "تنظیمات هاست SCP/SFTP" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "تلاش برای ارسال بک آپ توسط ایمیل ناموفق بود (احتمالا حجم فایل بک آپ برای استفاده از این شیوه خیلی زیاد است)" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "پشتیبان گیری از: %s." + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "نتیجه آزمایش %s تنظیمات:" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "(تمام نشده است)" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "اگر شما بک آپ هایی بیش از حد انتظار می بینید، این احتمالا به این دلیل است که پاک کردن بک آپ های قدیمی پس از تکمیل یک بک آپ جدید در تنظیمات غیر فعال است." + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "این را درون مسیر آپلودها یا پلاگین ها قرار ندهید، زیرا ممکن است موجب تکرار شود (بک آپ از بک آپ از بک آپ از ...)." + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "این مکانی است که افزونه فایل های فشرده ای که در ابتدا ساخته است را در آن خواهد نوشت. این مسیر باید توسط وب سرور شما قابل نوشتن باشد. این مکان با مسیر محتوای شما در ارتباط است (به صورت پیش فرض wp-content نام دارد)." + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "شناسه کار: %s" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "آخرین فعالیت: %ss قبل" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "از سرگیری بعدی: %d (پس از %ss)" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "ناشناخته" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "بک آپ به پایان رسید" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "بدلیل بروز خطا تا موعد زمانبندی شده منتظر بمانید" + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "در حال هرس کردن بک آپ های قدیمی" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "در حال آپلود فایل ها در حافظه ی خارجی" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "دیتابیس رمزگذاری شده" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "رمزگذاری دیتابیس" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "دیتابیس بک آپ ساخته شده" + +#: admin.php:3359 +msgid "table: %s" +msgstr "جدول: %s" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "در حال ساخت بک آپ دیتابیس" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "فایل های زیپ بک آپ ساخته شد" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "در حال ساخت فایل های زیپ بک آپ" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "بک آپ شروع شد" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "در حال بک آپ گیری" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "در هنگام نصب وردپرس شما زمانبند توسط تنظیمات DISABLE_WP_CRON غیرفعال شده است. هیچ بک آپی نمی تواند اجرا شود (حتی "اکنون بک آپ بگیر") مادامی که شما امکانی برای فراخواندن زمانبند به صورت دستی تنظیم کنید، یا تا زمانی که زمانبند فعال گردد." + +#: restorer.php:646 +msgid "file" +msgstr "فایل" + +#: restorer.php:639 +msgid "folder" +msgstr "فولدر" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "افزونه در صدد ساخت یک %s در پوشه ی محتوای شما بود، اما موفق نشد - لطفا مجوزهای فایل خود را چک کنید و به آن اجازه ی دسترسی دهید. (%s)" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "بک آپ به پایان نرسید، از سرگیری زمانبندی شد" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "وب سایت شما به ندرت بازدید می شود و این افزونه منابعی که به آن امیدوار بود دریافت نمی کند، لطفا این صفحه را بخوانید:" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "معتبرسازی %s نمی تواند انجام شود، زیرا چیز دیگر در سایت شما مانع آن می شود. سعی کنید افزونه های دیگر را غیرفعال کنید و پوسته ی خود را به حالت پیش فرض برگردانید. (به طور مشخص، شما به دنبال مولفه ای هستید که خروجی ارسال می کند (مانند ارور/خطاهای PHP) قبل از اینکه صفحه لود شود. خاموش کردن تنظیمات دیباگ میتواند ثمربخش باشد)." + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "محدودیت حافظه ی PHP شما (که توسط شرکت ارائه کننده هاست تنظیم شده) بسیار کم است. این افزونه تلاش نمود آن را افزایش دهد اما موفق نشد. این افزونه ممکن است با محدودیت حافظه کمتر از 64 مگابایت به مشکل بر بخورد - مخصوصا هنگامی که شما فایل های آپلود شده ی بسیار حجیمی دارید (از طرف دیگر، خیلی از سایت ها با محدودیت 32 مگابایت موفق می شوند - تجربه شما ممکن است متفاوت باشد)." + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "ادامه همراه با بروز رسانی" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "پس از کلیک بر روی لینک زیر دیگر آن را متوقف نکنید - منتظر شوید تا بک آپ تکمیل شود." + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "بک آپ خودکار آپ درفت پلاس" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "مشکلاتی رخ داده است:" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "در حال بک آپ گیری با افزونه ی \"آپ درفت پلاس\"" + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "بک آپ خودکار" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "در حال بک آپ گیری از دیتابیس با افزونه ی \"آپ درفت پلاس\"" + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "شما مجوز کافی برای بروز رسانی این سایت را ندارید" + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "پوسته ها" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "افزونه ها" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "شروع بک آپ خودکار..." + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "در حال ساخت %s و بک آپ گیری از دیتابیس با افزونه ی آپ درفت پلاس" + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "قبل از بروزرسانی بصورت خودکار از افزونه ها، پوسته ها و دیتابیس وردپرس توسط افزونه ی آپ درفت پلاس بک آپ بگیرید" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "اگر مطمئن نیستید پس متوقف شوید، در غیر اینصورت ممکن است نصب وردپرس را ویران کنید." + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "این شبیه به یک بک آپ ارزشمند از هسته ی وردپرس نمی باشد - فایل %s گم شده است." + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "ناتوان از گشودن فایل زیپ (%s) - نمی توانیم آن را اسکن کنیم تا یکپارچگی آن چک شود." + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "ناتوان از خواندن فایل زیپ (%s) - نمی توانیم آن را اسکن کنیم تا یکپارچگی آن چک شود." + +#: admin.php:2310 +msgid "More plugins" +msgstr "افزونه های بیشتر" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "پشتیبانی" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "افزونه هنگامی که بک آپ دیتابیس را اسکن می کرد قادر به یافتن پیشوند جدول نبود." + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "این بک آپ از دیتابیس فاقد جدول های هسته ی وردپرس است: %s" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "شما از نسخه ی جدیدتر وردپرس %s به نسخه ی قدیمی تر آن %s ایمپورت (درون ریزی) می کنید. تضمینی وجود ندارد که وردپرس بتواند این کار را انجام بدهد." + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "حجم دیتابیس بسیار کمتر از آنست که یک دیتابیس وردپرسی معتبر باشد (سایز: %s کیلوبایت)." + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "پوسته را بروز کن" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "افزونه را بروز کن" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "با پشتیبان گیری خودکار امن باشید" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "لغو کن (برای %s هفته)" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "مسیر آپلود (%s) وجود ندارد - تنظیم مجدد (%s)" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "اگر پس از کامل لود شدن صفحه شما کماکان می توانید این جمله را بخوانید، پس یک مشکل جاوا اسکریپت یا جی کوئری در سایت وجود دارد." + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "فایل آپلود شد." + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "وضعیت پاسخ ناشناخته ی سرور:" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "پاسخی ناشناخته از سرور:" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "این کلید آشکارسازی مورد بهره قرار خواهد گرفت:" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "برای در آوردن از حالت رمزنگاری شده (آشکارسازی) و دانلود فایل دیتابیس به کامپیوتر خود این لینک را دنبال کنید." + +#: admin.php:584 +msgid "Upload error" +msgstr "خطا در آپلود" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "این فایل به نظر نمی رسد که آرشیوی رمزگذاری شده از دیتابیس توسط این افزونه باشد (فایل هایی که بصورت .gz.crypt هستند و نامی شبیه به این دارند: backup_(time)_(site name)_(code)_db.crypt.gz)." + +#: admin.php:582 +msgid "Upload error:" +msgstr "خطای بروز رسانی:" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "(مطمئن شوید که فایل زیپی را آپلود می کنید که قبلا توسط این افزونه ایجاد شده است)" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "و سپس، اگر دوست دارید،" + +#: admin.php:572 +msgid "Download to your computer" +msgstr "به کامپیوتر خود دانلود کنید" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "از وب سرور خود حذف کنید" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "مثال هایی از ارائه دهندگان حافظه ی سازگار با S3 " + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "هیچ آرشیوی پس از گشودن فایل فشرده حذف نخواهد شد، زیرا ابر حافظه ای برای این بک آپ وجود نداشت" + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "به نظر می رسد شما یک یا چند آرشیو از این مجموعه ی چند آرشیوی را در اختیار ندارید." + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "(%d آرشیو در مجموعه)." + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "فایل ها را خرد کن هر:" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "خطا: سرور پاسخی برای ما ارسال کرد (JSON) که ما قادر به درک آن نیستیم." + +#: admin.php:563 +msgid "Warnings:" +msgstr "اخطارها:" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "خطا: سرور پاسخی خالی ارسال کرد." + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "به نظر میرسد که این فایل توسط این افزونه ایجاد شده است، اما این افزونه ی نصب شده این نوع از فایل را نمی شناسد: %s . شاید شما نیاز به نصب پلاگین دارید." + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "فایل پشتیبان پردازش شد، اما همراه با تعدادی خطا. پیش از تلاش مجدد باید کار را کنسل کرده و ابتدا مشکلات را برطرف کنید." + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "فایل پشتیبان پردازش شد، اما با چند اخطار. اگر همه چیز روبراه است، پس برای ادامه دوباره بر روی بازنشانی کلیک کنید. در غیر این صورت متوقف شده و ابتدا ایرادها را برطرف کنید." + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "فایل های پشتیبان با موفقیت پردازش شدند. حالا برای ادامه ی کار دوباره بر روی بازنشانی کلیک کنید." + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "این مجموعه چند بک آپی به نظر میرسد فاقد آرشیوهای زیر است: %s" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "فایل (%s) پیدا شد، اما حجمی متفاوت (%s) از آنچه انتظار میرفت (%s) دارد - ممکن است خراب باشد." + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "فایل یافت شد، اما حجم آن صفر است (نیاز است که دوباره آن را آپلود کنید): %s" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "فایل یافت نشد (می بایست آن را آپلود کنید): %s" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "چنین مجموعه بک آپی وجود ندارد" + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "آرشیو بک آب برای این فایل یافت نمی شود. نوع حافظه ی بیرونی انتخابی شما (%s) اجازه ی بازیابی فایل ها را به ما نمی دهد. برای اجرای هرگونه بازنشانی توسط این افزونه، شما نیاز به قرار دادن یک کپی از این فایل در داخل پوشه ی کاری این افزونه دارید." + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "ناموفق در انتقال مسیر (اجازه دسترسی فایل و فضای دیسک را بررسی کنید): %s" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "ناموفق در انتقال فایل (اجازه دسترسی فایل و فضای دیسک را بررسی کنید): %s" + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "انتقال بک آپ غیر فشرده به محل..." + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "ناموفق در گشودن فایل فشرده شده (%s) - %s" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "مسیر سرور پوشه ی روت وردپرس: %s" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "%s نقطه پایان" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "... و بسیار فراتر از اینها" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "S3 (سازگاری)" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "فایل بصورت لوکال حضور ندارد - نیاز به بازیابی از حافظه ی خارجی" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "در جستجوی %s آرشیو: نام فایل: %s" + +#: admin.php:4836 +msgid "Final checks" +msgstr "بررسی نهایی" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "پس از اتمام پشتیبان گیری، برای حذف فایل های پشتیبان زائد از سرور خود این گزینه را انتخاب کنید (در صورت عدم گزینش، همه ی فایلهای ارسال شده به صورت لوکال باقی خواهند ماند و این همه فایل های لوکال باقی مانده برای محافظت از محدودیت حافظه مناسب نیست)." + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "فایل های کد شده ی دیتابیس (فایل های db.gz.crypt) را برای آپلود و رمزگشایی به اینجا بکشید." + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "مسیر پوشه ی wp-content شما: %s" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "تاریخچه ی پشتیبان گیری های ناقص" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "نمایش لیست پشتیبان گیری و فایل های ناقص" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "در حال پردازش فایل ها - لطفا منتظر بمانید..." + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "لطفا جهت راهنمایی پیرامون اینکه در این رابطه چه باید کرد، این پرسش و پاسخ را مشاهده فرمایید." + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "وردپرس نصب شده ی شما مشکلی با خروجی فضای خالی دارد. این مسئله می تواند باعث شکسته شدن بک آپ هایی که از اینجا دانلود می کنید شود." + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "ناموفق در گشودن فایل دیتابیس." + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "ناموفق در نوشتن و درج کردن دیتابیس رمزگشایی شده در فایل سیستم." + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "بک آپ های شناخته شده (ناقص)" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "ناتوان از شمارش فایل های موجود در این مسیر." + +#: restorer.php:939 +msgid "Files found:" +msgstr "فایل های یافت شده:" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "مسیر استفاده شده از بک آپ: %s" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "موتور جدول درخواست شده (%s) موجود نیست - تغییر به MyISAM." + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "این یک مهاجرت به نظر میرسد (فایل پشتیبان از سایتی با آدرس متفاوت می باشد)، اما شما گزینه ی جستجو-و-جایگزینی را انتخاب نکرده اید. این معمولا یک اشتباه است." + +#: admin.php:4908 +msgid "file is size:" +msgstr "حجم فایل:" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "برای اطلاعات بیشتر به اینجا بروید." + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "چندین فایل کماکان در حال دانلود یا پردازش می باشند - لطفا منتظر باشید." + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "این مجموعه بک آپ از سایت دیگری می باشد - این یک مهاجرت است، نه یک بازنشانی. شما برای انجام این کار به افزونه ی مهاجرت کننده نیاز دارید." + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "از بازه زمانی استفاده شده در تنظیمات وردپرس شما استفاده خواهد شد. در تنظیمات -> همگانی " + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "به این فرمت وارد کنید HH:MM (مثال: 14:22)." + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "%s آپلود ناموفق بود" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "%s ورود ناموفق" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "به نظر نمی رسد که شما احراز هویت شده باشید با %s" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "ناموفق در دسترسی به %s در هنگام حذف کردن (برای اطلاعات بیشتر فایل رخدادها را ببینید)" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "به نظر میرسد شما احراز هویت نشده اید با %s (درحالیکه حذف می کنید)" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "خطای دراپ باکس: %s (برای آگاهی بیشتر فایل رخدادها را ببینید)" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "خطا - ناموفق در دانلود فایل از %s" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "خطا - چنین فایلی در %s وجود ندارد" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "%s خطا" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "%s خطا - ناموفق در آپلود فایل" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "%s خطا - ناموفق در دوباره بهم متصل کردن تکه ها" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "%s ناموفق در احراز هویت" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "خطا: %s" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "مسیر مشخص شده برای بک آپ وجود دارد، اما قابل نوشتن نیست." + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "مسیر مشخص شده برای بک آپ وجود ندارد." + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "اخطار: %s" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "آخرین بک آپ گیری: " + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "مواجهه با فایل بسیار حجیم: %s (سایز: %s مگابایت)" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "%s: فایل غیر قابل خواندن - نمی توان از آن بک آپ گرفت" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "جدول %s ردیف های بسیاری دارد (%s) - امیدواریم شرکت هاستینگ شما منابع کافی برای تخلیه کردن آن جدول در فایل پشتیبان را در اختیار شما بگذارد" + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "خطایی رخ داد در حالیکه آخرین فایل دیتابیس بسته میشد" + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "مواجهه با اخطار:" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "پشتیبان گیری ظاهرا موفقیت آمیز بود (با اخطارهایی) و هم اکنون به پایان رسید" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "فضای خالی دیسک شما بسیار کم است - فقط %s مگابایت باقی مانده" + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "سایت جدید:" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "خطا: آدرس سایت در حال حاضر گرفته شده است." + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "سایت مهاجرت داده شده (از UpdraftPlus)" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "جزئیات را مشخص کنید که این سایت جدید در کجای وردپرس چند سایتی نصب شده ی شما می خواهد قرار بگیرد:" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "اطلاعات مورد نیاز برای ادامه:" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "فعالسازی پوسته ی شبکه:" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "پلاگین پردازش شده:" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "اجازه دسترسی فایل خود را بررسی کنید: نمی توان با موفقیت مسیر را ساخت و به آن وارد شد:" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "برخی سرورها ادعا می کنند که FTP کدگذاری شده را دارا می باشند، اما سپس تایم-اوت می شوند (پس از زمان طولانی) وقتی که شما تصمیم می گیرید از آن استفاده کنید. اگر شما با این قضیه روبرو شدید به قسمت \"تنظیمات تخصصی\" (پایین) بروید و در آنجا SSL را خاموش کنید." + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "ماژول مورد نیاز در PHP نصب شده در وب سرور شما وجود ندارد (%s). لطفا با پشتیبانی شرکت هاستینگ خود تماس بگیرید و از آنها بخواهید که آن را فعال کنند." + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "لطفا اختیارات دسترسی خود را بررسی کنید." + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "خطای گزارش شده با %s:" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "لطفا اطلاعات خواسته شده را ارائه کنید و سپس ادامه دهید." + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "نمی توان جداول را رها کرد، پس بجای آن حذف می شوند (%s)" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "نمی توان جدول جدیدی ساخت، در حال چشم پوشی از این دستور (%s)" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "اطلاعات سایت:" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "کاربر دیتابیس شما مجوز لازم برای ایجاد جداول را ندارد. ما برای بازگردانی تلاش خواهیم کرد تا جداول را خالی کنیم; این کار مشکل گشا خواهد بود مادامی که الف) شما بازگردانی کنید از یک نسخه ی وردپرس با ساختار مشابه دیتابیس و ب) دیتابیس درون ریزی شده ی شما شامل جداولی که هم اینک در سایت درون ریزی شده است نباشد." + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "اخطارها:" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "شما در حال اجرا بر روی وردپرس چند سایته (مولتی سایت) هستید - اما پشتیبان شما برای مولتی سایت نیست." + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "نادیده گرفتن بازگردانی هسته وردپرس در زمان درون ریزی از تک سایت به مولتی سایت. اگر چیزی ضروری در پوشه ی وردپرس خود دارید پس باید بصورت دستی آنها را از فایل زیپ دوباره اضافه کنید." + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "نصب PHP وب سرور شما شامل ماژول ضروری (برای %s) نمی باشد (%s). لطفا با شرکت هاستینگ خود تماس گرفته و از آنها بخواهید آن را فعال کنند." + +#: admin.php:596 +msgid "Close" +msgstr "بستن" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "پاسخ غیرمنتظره:" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "برای ارسال به بیش از یک آدرس، هر آدرس را با کاما جدا کنید." + +#: admin.php:576 +msgid "PHP information" +msgstr "اطلاعات PHP " + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "فایل زیپ قابل اجرا یافت شد:" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "نمایش اطلاعات PHP (phpinfo)" + +#: admin.php:2627 +msgid "Get it here." +msgstr "از اینجا بگیرید." + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "" + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "این مقاله را بخوانید تا روش کار را یاد بگیرید " + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "مهاجرت سایت" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "" + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "همچنین از روی حافظه جانبی حذف گردد" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "آخرین اخبار UpdraftPlus.com:" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "تکثیر/مهاجرت کردن" + +#: admin.php:2304 +msgid "Premium" +msgstr "پریمیوم" + +#: admin.php:2305 +msgid "News" +msgstr "اخبار" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "مجموعه پشتیبان ها پیدا نشد." + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "لینک RSS" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "لینک وبلاگ" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "در خبرنامه وبلاگ UpdraftPlus ثبت نام کنید تا از آخرین بروزرسانی ها و پیشنهادات با خبر گردید." + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "در حال تست تنظیمات %s..." + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "یا می توانید آن را در دایرکتوری UpdraftPlus به صورت دستی قرار دهید (از طریق wp-content/updraft) توسط FTP و پس از آن بر روی لینک \"اسکن مجدد\" بالا کلیک کنید." + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "حالت رفع عیب UpdraftPlus فعال است. ممکن است شاهد اعلان هایی در این صفحه باشید که از طرف UpdraftPlus نباشند و از طرف افزونه های دیگر باشند. لطفاً سعی کنید قبل از اینکه ددرخواست پشتیبانی ثبت نمائید، مطمئن شوید این اعلان ها از طرف UpdraftPlus هستند." + +#: admin.php:880 +msgid "Notice" +msgstr "توجه" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "خطاهایی رخ داده است:" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "اسکن مجدد (در حال جستجوی پشتیبان هایی که به صورت دستی بارگذاری شده اند)..." + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "ذخیره شده در" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "\"%s\" کلید اولیه ندارد. در ردیف %s تنظیمات دستی مورد نیاز است." + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "ردیف ها: %d" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "زمان سپری شده (ثانیه):" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "خطاها:" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "دستورات بروزرسانی SQL در حال اجرا:" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "تغییرات ایجاد شده:" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "ردیف های امتحان شده:" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "جداول امتحان شده:" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "نمی توان لیست جداول را دریافت کرد" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "اخطار: URL پایگاه داده سایت (%s) با چیزی که انتظار می رفت (%s) متفاوت است" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "چیزی برای انجام وجود ندارد: URL سایت همچنان: %s" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "خطا: پارامترهای خالی (%s, %s)" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "این گزینه انتخاب نشده است." + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "پایگاه داده: جستجو و جایگزینی URL سایت" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "ناموفق: نتایج برگردانده شده از عملیات %s را متوجه نشدیم." + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "ناموفق: عملیات %s قادر به انجام نیست." + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "(اطلاعات بیشتر)" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "جستجو و جایگزینی مکان سایت در پایگاه داده (عزیمت)" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "آپلودهای بلاگ" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "افزونه هایی که باید استفاده گردد." + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "شما دسترسی به این صفحه ندارید." + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "شما مجوز کافی برای دسترسی به این صفحه را ندارید." + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "نصب چندین سایت" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "شروع از دفعه بعد خواهد بود" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "شکست: درگاه باید یه عدد صحیح باشد." + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "رمز عبور" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "نام کاربری" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "نام میزبان" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "" + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "مسیر دایرکتوری" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "رمز عبور" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "درگاه" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "میزبان" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "خطای %s: دانلود ناموفق" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "دسترسی فایل خود را بررسی نمائید: نمی توان ایجاد کرد و وارد گردید:" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "هیچ %s یافت نشد" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "" + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "" + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "هیچ پشتیبان گیری از دایرکتوری %s: هیچ چیزی برای پشتیبان گیری یافت نشد" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "" + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "اگر از این استفاده می کنید، یک مسیر ثابت وارد کنید (به مسیر وردپرس شما وابسته نمی باشد)" + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "اگر شما نمی دانید که این گزینه برای چیست، پس نیازی به آن ندارید و بگذارید خاموش باشد." + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "یک دایرکتوری وارد نماید:" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "فایل های بیشتر" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "" + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "نوشتن و بازنشانی wp-config.php" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "هسته وردپرس" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "ناموفق: قادر به قرار دادن فایل در دایرکتوری نمی باشیم - لطفاً دسترسی خود را بررسی نمائید." + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "ناموفق" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "WebDAV URL" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "نوشتن محلی ناموفق: ناموفق در دانلود" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "خطا در باز کردن فایل ریموت: ناموفق در دانلود" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "تکه %s: یک خطای %s رخ داده است" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "هیچ تنظیمات %s پیدا نشد." + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "" + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "" + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "شکست: هیچ جزئیاتی از سرور داده نشده است." + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "اگر نیاز به رمزگذاری داده های دارید (به طور مثال داده های حساس کسب و کار را ذخیره کرده اید) افزونه ای برای این کار در دسترس می باشد." + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "فقط FTP رمزگذاری نشده توسط UpdraftPlus معمولی پشتیبانی می گردد." + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "نام حساب کاربری %s: %s" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "به نظر بخشی از اطلاعات برگردانده شده آن چیزی نبوده که انتظار آن می رفته" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "شما حساب کاربری %s خود را احراز هویت نموده اید" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "یک افزونه برای آن وجود دارد." + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "اگر شما م یخواهید از چندین سایت در یک دراپ باکس پشتیبان تهیه نمائید و می خواهید که با زیر فولدرها آنها را مدیریت نمائید، پس" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "پشتیبان ها ذخیره شده اند" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "آیا می خواهید از زیر فولدر استفاده کنید؟" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "خطا: عدم موفقیت در بارگزاری فایل در %s (مشاهده فایل سوابق برای اطلاعات بیشتر)" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "به نظر تایید اعتبار توسط دراپ باکس صورت نپذیرفته است" + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "ارتباطات با %s رمگذاری نشده است." + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "ارتباطات با %s رمگذاری شده است." + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "شکست" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "ناحیه" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "" + +#: methods/s3.php:961 +msgid "API secret" +msgstr "رمز API" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "مکان %s" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "کلید مخفی %s" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "کلید دسترسی %s" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "اگر شما خطاهای مرتبط با گواهینامه SSL مشاهده نموده اید، لطفاً برای کمک به این قسمت بروید." + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "" + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "خطای %s: دانلود %s ناموفق. دسترسی خود را بررسی نمائید." + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "" + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "" + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "%s تکه %s: آپلود ناموفق" + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "" + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "" + +#: methods/email.php:69 +msgid "Note:" +msgstr "توجه:" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "بک آپ وردپرس" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "" + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "خطا: هیچ جزئیاتی در مورد کانتینر داده نشد." + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "نام کاربری" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "کلید API" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "شکست: هیچ %s داده نشده است." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "" + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "کانتینر فایل های ابری" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "کلید API فایل های ابری" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "نام کاربری فضای ابری" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "UK" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "US (پیشفرض)" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "US یا UK Cloud" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "همچنین باید این FAQ مهم را بخوانید." + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "" + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "تست تنظیمات %s" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "خطا در دانلود فایل ریموت: ناموفق در دانلود (" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "خطا در باز کردن فایل محلی: ناموفق در دانلود" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "خطای فایل های ابری - ناموفق در بارگزاری فایل" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "خطای %s: آپلود ناموفق" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "خطای %s: باز کردن فایل لوکال ناموفق" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "خطای فایل های ابری - ناموفق در ایجاد و دسترسی کانتینر" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "احراز هویت ناموفق فایل های ابری" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "" + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "تایید هویت توسط گوگل" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "رمز مشتری" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "اگر گوگل به شما پیغام \"invalid_client\" را نشان داد، یعنی شما ID مشتری معتبری در این قسمت وارد ننموده اید." + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "ID مشتری" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "'Web Application' را به عنوان نوع کاربرد انتخاب نمائید." + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "برای کمک بیشتر به صورت تصویری این لینک را دنبال کنید. توضیحات زیر برای کاربران حرفه ای کافی می باشد." + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "" + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "حساب کاربری احراز هویت نشده است." + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "ناموفق در آپلود در %s" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "حساب کاربری پر شده است: حساب کاربری %s شما فقط %d بایت دیگر دارد در حالی که فایل مورد نظر شما برای آپلود %d بایت است" + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "هنوز اجازه دسترسی به گوگل را دریافت نکرده ایم - شما باید مجدداً به گوگل درایو متصل شوید." + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "شما موفق به احراز هویت حساب کاربری %s شدید." + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "موفق" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "ترافیک مصرفی %s شما: %s %% استفاده شده، %s در دسترس می باشد" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "عدم موفقیت در احراز هویت" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "" + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "از این لینک دریافت کنید." + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "شما افزونه %s UpdraftPlus را نصب نکرده اید - از %s بگیرید" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "شما نیاز به احراز هویت مجدد %s دارید چون هویت فعلی شما کار نمی کند." + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "OK" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "پایان یافت: تعداد خطوط: %d در %.2f ثانیه" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "بازنشانی خواهد شد به عنوان:" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "پیشوند جداول قدیم:" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "پشتیبان از:" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "ناموفق در بازکردن فایل پایگاه داده" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "ناموفق در یافتن فایل پایگاه داده" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "" + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "wp-config.php از پشتیبان: در حال بازیابی (به درخواست کاربر)" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "" + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "ناموفق در ساخت دایرکتوری موقت" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "عدم موفقیت در پاک کردن دایرکتوری در حال کار بعد از بازیابی." + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "نمی توان دایرکتوری قدیمی را حذف کرد." + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "تمیز کردن زباله..." + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "" + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "پایگاه داده با موفقیت رمزگشایی گردید." + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "" + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "باز کردن بسته پشتیبان..." + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "ناموفق در کپی کردن این موجودیت" + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "فایل پشتیبان در دسترس نمی باشد" + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "UpdraftPlus قادر به بازسازی مستقیم این نوع از موجودیت نمی باشد. باید به صورت دستی بازسازی گردد." + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "برای بازسازی، یکی از فایل ها را پیدا نمی کند" + +#: admin.php:5009 +msgid "Error message" +msgstr "متن خطا" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "" + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "سایز مورد انتظار آرشیو:" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "اگر درخواست پشتیبانی دارید، لطفاً این اطلاعات را تامین کنید:" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "" + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "بازسازی UpdraftPlus : در حال انجام" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "بعد از فشردن این دکمه، شما می توانید انتخاب کنید که کدام کامپوننت را می خواهید بازسازی کنید" + +#: admin.php:4572 +msgid "Press here to download" +msgstr "برای دانلود اینجا کلیک کنید" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "حذف این مجموعه پشتیبان" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "" + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "" + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "" + +#: admin.php:4062 +msgid "Save Changes" +msgstr "ذخیره تغییرات" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "" + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "SSL را در هر جای ممکن غیر فعال کن." + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "" + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "" + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "گواهینامه SSL را تائید ننمائید" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "" + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "از سروری با گواهینامه های SSL استفاده نمائید." + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "" + +#: admin.php:3697 +msgid "click here" +msgstr "اینجا کلیک کنید" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "یا برای ریست کردن این گزینه" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "دایرکتوری مشخص شده برای پشتیبان گیری قابل نوشتن است." + +#: admin.php:4009 +msgid "Backup directory" +msgstr "پوشه فایل های پشتیبان" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "فایل محلی را پاک کن" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "" + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "نمایش تنظیمات حرفه ای" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "تنظیمات حرفه ای" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "حالت رفع عیب" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "تنظیمات پیشرفته/رفع عیب" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "" + +#: admin.php:591 +msgid "Cancel" +msgstr "لغو" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "هیچکدام" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "حافظه ریموت خود را انتخاب کنید" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "رمزگشایی فایل پشتیبان پایگاه داده به صورت دستی" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "عبارت رمزگذاری پایگاه داده" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "ایمیل" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "" + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "شامل این موارد نمی شود:" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "یک پوشه ی دیگر در مسیر wp-content یافت شد" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "قرار گرفتن در فایل های پشتیبان" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "به طور مثال اگر سرور شما در طول روز شلوغ بوده و شما می خواهید در شب آن را اجرا کنید" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "به منظور اصلاح زمانی که پشتیبان گیری باید اجرا شود ," + +#: admin.php:3683 +msgid "Monthly" +msgstr "ماهانه" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "هر دو هفته یکبار" + +#: admin.php:3681 +msgid "Weekly" +msgstr "هفتگی" + +#: admin.php:3680 +msgid "Daily" +msgstr "روزانه" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "دانلود فایل سوابق" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "فولدر وجود دارد، ولی وب سرور دسترسی نوشتن در آن را ندارد." + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "پوشه ایجاد شد اما ما برای نوشن در آن نیاز مندیم که سطح دسترسی آن را به 777 تغییر دهیم . شما باید این مورد رابا اائه دهنده ی میزبان خود درمیان بزارید تا از بروز مشکل جلوگیری کنید . " + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "درخواست دسترسی به فایل های سیستمی به منظور ایجاد پوشه با شکست روبرو شد ." + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "حذف" + +#: admin.php:3418 +msgid "show log" +msgstr "نمایش فایل سوابق" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "این کار باعث حذف کلیه تنظمیات UpdraftPlus خواهد شد. آیا مطمئن هستید؟" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "شمارش" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "کل اطلاعات (غیر فشرده) روی دیسک." + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "خیر" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "بله" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "%s نسخه :" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "حافظه ی موجود استفاده شده" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "پیک مصرف مموری" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "وب سرور:" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "لطفاً UpdraftPlus پریمیوم و یا افزونه stand-alone Multisite را بررسی نمائید." + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "آیا شما به پشتیبانی چند سایته وردپرس نیاز دارید؟" + +#: admin.php:2654 +msgid "Multisite" +msgstr "چند سایتی" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "ترجیها یک مرتبه پشتیبان گیری" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "آیا مطالعه ی این راهنما قبل از بازیابی برای شما مفید بود ." + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "" + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "%s تنظیمات بازیابی:" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "شما نیاز خواهید داشت که به صورت دستی بازیابی انجام دهید." + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "این موجودیت نمی تواند به طور اتوماتیک بازسازی گردد: %s." + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "وبسرور شما دارای php میباشد که safe_mode در آن فعال است ." + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "انتخاب اجزا برای بازیابی" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "با بازیابی قالب سایت ها , افزونه ها , پوشه ی آپلود , دیتابیس و سایر محتوای پوشه ها جایگزین میشوند.( بر اساس آنچه که در فایل پشتیبان موجود میباشد )" + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "بازیابی پشتیبان از" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "بازیابی پشتیبان" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "حذف تنظیمات پشتیبان" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "خطای دانلود: سرور پاسخی برای ما ارسال نموده است که متوجه نشده ایم." + +#: admin.php:570 +msgid "You should:" +msgstr "شما باید:" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "خطا :" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "درحال پردازش ..." + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "UpdraftPlus - آپلود فایل های پشتیبان" + +#: admin.php:3020 +msgid "refresh" +msgstr "رفرش" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "فضای دیسک وب سرور تحت استفاده توسط UpdraftPlus" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "گوگل درایو" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "اگر شما از این استفاده می کنید، حالت Turbo/Road را خاموش کنید." + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "مرورگر اینترنتی اپرا" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "وظایف بیشتر:" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "دانلود فایل گزارش آخرین تغییرات" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "(هیچ گزارشی هنوز ثبت نشده)" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "آخرین پیام ثبت شده" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "بازنشانی" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "تهیه ی پشتیبان" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "دیتابیس" + +#: admin.php:229 +msgid "Files" +msgstr "فایل ها" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "پشتیبان گیری زمانبندی شده ی بعدی" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "در یک زمان به عنوان فایل های پشتیبانی" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "چیزی برنامه ریزی نشده است" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "رابط مدیر از جاوااسکریپت بصورت سنگین استفاده میکند. شما باید آن را در مرورگرتان فعال کنید یا از یک مرورگر سازگار با جاوااسکریپت استفاده کنید." + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "اخطار جاوا اسکریپت" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "حذف پوشه های قدیمی" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "محدودیت کنونی:" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "پشتیبان شما بازنشانی شد." + +#: admin.php:2310 +msgid "Version" +msgstr "نسخه" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "رفتن به صفحه توسعه دهنده" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "تنظیمات شما پاک شد." + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "فایل پشتیبان با موفقیت ایجاد شد ." + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "فایل پشتیان نمیتواند ایجاد شود ." + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "پوشه های قدیمی به دلایلی حذف نشدند . شما باید دستی عمل کنید." + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "پوشه های قدیمی باموفقیت حذف شدند." + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "حذف پوشه های قدیمی" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "بازگشت به تنظیمات UpdraftPlus ." + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "فعالیت ها" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "بازنشانی موفقیت آمیز!" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "فرمت نام فایل مناسب نیست . رمز نگاری فایل دیتابیس ایجاد شده توسط UpdraftPlus مناسب نیست." + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "فرمت نام مناسب نیست - به نظر نمی رسد این فایل توسط UpdraftPlus ایجاد شده باشد" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "هیچ کپی محلیی وجود ندارد ." + +#: admin.php:2072 +msgid "Download in progress" +msgstr "در حال دانلود نمودن" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "فایل آماده است." + +#: admin.php:2043 +msgid "Download failed" +msgstr "دانلود ناموفق" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "خطا" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "هیچ کاری یافت نشد - احتمالا آن تمام شده ؟" + +#: admin.php:1854 +msgid "Job deleted" +msgstr "عملیات پاک شد" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "بسیار خوب . شما به زودی فعالیت هایی را در \" آخرین گزارش ها \" در فیلد زیر خواهید دید." + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "هیچ گزارشی هنوز ثبت نشده" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "اگر مشکلی با پشتیبان گیری داشتید، لطفا این سوالات رایج را بررسی کنید." + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "وب سایت شما توسط وب سرور %s میزبانی می شود." + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "UpdraftPlus هیچ پشتیبانی رسمی از وردپرس با ورژن های پایین تر از %s انجام نمیدهد . البته ممکن است برای شما کار کند اما توجه داشته باشید اگر کار نکرد هیچ پشتیبانی تا زمانی که وردپرس خود را بروز نکنید داده نمیشود." + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "شما کمتر از %s فضای خالی دارید تا UpdraftPlus برای ایجاد فایل پشتیبان اسفاده کند . UpdraftPlus برای اجرا به فضای بیشتری نیاز دارد . برای حل مشکل با اپراتور یا پشتیبانی سرور یا شرکت میزبانی خود تماس بگیرید ." + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "اخطار" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "افزونه ها / پشتیبانی حرفه ای" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "تنظیمات" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "فایل های مجاز" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "%s فایل زیپ ایجاد نشده . برای دریافت اطلاعات بیشتر به فایل گزارش مراجعه کنید." + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "حلقه ی تکرار بینهایت . برای دریافت اطلاعات بیشتر به فایل گزارش مراجعه کنید" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "برای دریافت راهنمایی , افزونه ها و پشتیبانی به سایت UpdraftPlus.Com مراجعه کنید." + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "اگر امکانات و پشتیبانی بیشتری نیاز دارید ؟ از خدمات پولی UpdraftPlus استفاده کنید ." + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "با دادن رای مثبت در تب (review) در صفحه ی UpdraftPlus در سایت wordpress.org از ما حمایت کنید." + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "آیا UpdraftPlus را دوست دارید و می توانید یک دقیقه زمان صرف کنید ؟" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "آیا شما میتوانید ترجمه کنید ؟ دوست دارید به بهبود ترجمه ی UpdraftPlus در زبان مادری خود کمک کنید؟" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "فایل یافت نشد" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "کلید رمزگشایی استفاده شده :" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "رمزگشایی با مشکل مواجه شد . دلیل معمول اشتباه وارد کردن کلید رمزگذاری میباشد . " + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "رمزگشایی با مشکل مواجه شد . فایل دیتابیس رمزگذاری شد اما شما هیچ کلید رمزگذاریی وارد نکردید ." + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "نمیتوان فایل پشتیبان برای نگارش باز کرد ." + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "به دلیل نبود هیچ آرایه ای از فایل پشتیبان تاریخچه ای از پشتیبان گیری ذخیره نشده . احتمالا پشتیبان گیری با مشکل مواجه شده است ." + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "ناتوان از خواندن مسیر" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "پوشه ی پشتیبان گیری (%s) غیر قابل نوشتن می باشد یا موجود نیست . " + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "ایجاد پشتیبان از وردپرس انجام شد" + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "تلاش برای ایجاد پشتیبان گیری انجام شد , اما ظاهرا نا موفق بوده ." + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "پشتیبان گیری ظاهرا با موفقیت انجام و کامل شد ." + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "هنگام رمزگذاری دیتابیس مشکل رمزگذاری رخ داد . رمزگذاری لغو شد ." + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "فایل در پوشه ی پشتیبان گیری نمیتواند ساخته شود . پشتیبان گیری لغو شد - تنظیمات پلاگین را چک کنید." + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "سایرین" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "آپلودها" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "پوسته ها" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "افزونه ها" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "فایل رخداد یافت نشد." + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "فایل رخداد قابل خواندن نمی باشد." + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "توجه UpdraftPlus:" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "پشتیبان های UpdraftPlus" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-fi.mo b/plugins/updraftplus/languages/updraftplus-fi.mo new file mode 100644 index 0000000..b77f00b Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-fi.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-fi.po b/plugins/updraftplus/languages/updraftplus-fi.po new file mode 100644 index 0000000..e72d478 --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-fi.po @@ -0,0 +1,6109 @@ +# Translation of UpdraftPlus in Finnish +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2015-09-28 10:58:33+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: fi\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "" + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "" + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "" + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "" + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "" + +#: addons/webdav.php:91 +msgid "Path" +msgstr "" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "" + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "" + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "" + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "" + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "" + +#: admin.php:2310 +msgid "FAQs" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "" + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "" + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "" + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "" + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "" + +#: methods/ftp.php:355 +msgid "login" +msgstr "" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "" + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "" + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "" + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "" + +#: admin.php:2604 +msgid "Now" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "" + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "" + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "" + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "" + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "" + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "" + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "" + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "" + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "" + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "" + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "" + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "" + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "" + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "" + +#: admin.php:3420 +msgid "stop" +msgstr "" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "" + +#: admin.php:3092 +msgid "this backup set" +msgstr "" + +#: admin.php:3020 +msgid "calculate" +msgstr "" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "" + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "" + +#: admin.php:601 +msgid "Saving..." +msgstr "" + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:557 +msgid "Fetching..." +msgstr "" + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "" + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "" + +#: admin.php:2884 +msgid "Dismiss" +msgstr "" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "" + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "" + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "" + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "" + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "" + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "" + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "" + +#: admin.php:3860 +msgid "File Options" +msgstr "" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "" + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "" + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "" + +#: admin.php:5157 +msgid "settings" +msgstr "" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "" + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "" + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "" + +#: admin.php:442 +msgid "Extensions" +msgstr "" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "" + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "" + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "" + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "" + +#: addons/azure.php:524 +msgid "container" +msgstr "" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "" + +#: addons/azure.php:523 +msgid "optional" +msgstr "" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "" + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "" + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "" + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "" + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "" + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "" + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "" + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "" + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "" + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "" + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "" + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "" + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "" + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "" + +#: restorer.php:767 +msgid "Deferring..." +msgstr "" + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "" + +#: admin.php:3081 +msgid "Deselect" +msgstr "" + +#: admin.php:3080 +msgid "Select all" +msgstr "" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "" + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "" + +#: admin.php:634 +msgid "For backups older than" +msgstr "" + +#: admin.php:633 +msgid "week(s)" +msgstr "" + +#: admin.php:632 +msgid "hour(s)" +msgstr "" + +#: admin.php:631 +msgid "day(s)" +msgstr "" + +#: admin.php:630 +msgid "in the month" +msgstr "" + +#: admin.php:629 +msgid "day" +msgstr "" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "" + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "" + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "" + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "" + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "" + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "" + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "" + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "" + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "" + +#: admin.php:607 +msgid "Update quota count" +msgstr "" + +#: admin.php:606 +msgid "Counting..." +msgstr "" + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "" + +#: admin.php:603 +msgid "Connecting..." +msgstr "" + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "" + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "" + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "" + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "" + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "" + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "" + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "" + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "" + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "" + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "" + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "" + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "" + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "" + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "" + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "" + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "" + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "" + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "" + +#: admin.php:4423 +msgid "Site" +msgstr "" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "" + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "" + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "" + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "" + +#: admin.php:617 +msgid "Deleting..." +msgstr "" + +#: admin.php:616 +msgid "key name" +msgstr "" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "" + +#: admin.php:611 +msgid "Creating..." +msgstr "" + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "" + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "" + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "" + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "" + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "" + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "" + +#: addons/migrator.php:1861 +msgid "key" +msgstr "" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "" + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "" + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "" + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "" + +#: admin.php:608 +msgid "Adding..." +msgstr "" + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "" + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "" + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "" + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "" + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "" + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "" + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "" + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "" + +#: methods/email.php:73 +msgid "configure it here" +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "" + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "" + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "" + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "" + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "" + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "" + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "" + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "" + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "" + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "" + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "Yhtään varmuuskopiota ei ole vielä tehty" + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "" + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "" + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "" + +#: admin.php:2831 +msgid "Personal support" +msgstr "" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "" + +#: admin.php:2718 +msgid "Get it from" +msgstr "" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "" + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "" + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "" + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "" + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "" + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "" + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "sivustosi ylläpitäjän osoitteeseen" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "Ruksaa ruutu ja saat perusraportin sähköpostitse" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "Käsin" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "Muut tiedostot/hakemistot palvelimella, jotka haluat varmuuskopioida" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "" + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "" + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "Automaattinen varmuuskopiointi ennen päivitystä" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "" + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "" + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "" + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "" + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "" + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "" + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "" + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "" + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "Näytä loki" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "Varmuuskopioitu tieto (klikkaa ladataksesi)" + +#: admin.php:4368 +msgid "Backup date" +msgstr "Päiväys" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "ja säilytä ajastettuja varmuuskopioita (kpl)" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "" + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "" + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "" + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "" + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "Tunnisteesi tälle varmuuskopiolle (valinnainen)" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "%s ei salli tunnistautumista sivustoille, jotka ovat isännöitynä suoran IP-osoitteen alaisuudessa. Sinun täytyy vaihtaa sivustosi osoite (%s) ennen kuin voit käyttää %s tallentamiseen." + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "Syötit sähköpostiosoitteen, jota UpdraftPlus.com ei tunnista." + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "Sähköpostiosoitteesi oli oikea, mutta UpdraftPlus.Com ei tunnistanut salasanaasi." + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "Sinun tulee antaa sekä sähköpostiosoite että salasana" + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "Jatkaaksesi valitse 'Varmuuskopioi nyt'. Sitten, tarkastele 'Viimeisin lokiviesti' -kenttää." + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "Jos haluat palauttaa multisite-varmuuskopion, sinun tulisi ensin asettaa tämä WordPress-asennus multisite-verkostoksi." + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "Varmuuskopiosi on WordPress multisite -asennuksesta, mutta tämä sivusto ei. Vain ensimmäinen verkoston sivustoista tulee olemaan käytettävissä." + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "jo tehty" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "hypätty yli (ei listassa)" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "Etsi ja korvaa taulu:" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "Syötä lista pilkuilla erotettuna; muussa tapauksessa jätä tyhjäksi (kaikki taulut)." + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "Vain nämä taulut" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "Riviä per erä" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "Et ole vielä yhdistänyt UpdraftPlus.com-tiliisi." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "Sinun täytyy yhdistää saadaksesi käyttöön uudet UpdraftPlus-päivitykset." + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "Tukipyynnöt, jotka liittyvät %s tulisi lähettää verkkosivustoasi isännöivälle taholle." + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "Jatka vain, ellet voi päivittää nykyistä palvelinta ja olet varma (tai halukas ottamaan riskin) että lisäosat/teemat/jne. ovat yhteensopivia vanhemman version %s kanssa." + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "Tämä on merkittävästi tuoreempi kuin palvelin johon yrität palauttaa (versio %s)." + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "Tämä varmuuskopioitu sivusto on ollut käytössä palvelimella, jossa versio %s (%s)." + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "LinkedIn" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "Google+" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "Facebook" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "Twitter" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "UpdraftPlus löytyy myös sosiaalisesta mediasta - löydät meidät täältä:" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "Miksi näen tämän?" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "Tämän hakemiston sijainnin voi asettaa edistyneissä asetuksissa, Asetukset-välilehdellä." + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "Valitse tämä tarkistaaksesi UpdraftPlus-hakemiston (kotisivutilassasi) mahdollisten uusien, ladattujen varmuuskopioiden varalta." + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "Aloita varmuuskopiointi" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "Käytät palvelinta %s, mutta näyttää siltä, ettei moduuli %s ole ladattuna." + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "Tarkista verkkosivustoasi isännöivältä taholta, miten asetat WordPressin lisäosalle kirjoitusoikeudet hakemistoon." + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "Ellei sinulla ole ongelmaa, voit jättää kaiken tässä mainutun huomiotta." + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "Tätä tiedostoa ei voitu ladata palvelimelle" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "Löydät lisätietoja Asetukset-osiosta." + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "Tuetut varmuuskopiointilisäosat: %s" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "Onko tämä varmuuskopio luotu toisella varmuuskopiointilisäosalla? Jos kyllä, sinun tulee mahdollisesti nimetä se uudelleen sen tunnistamiseksi - seuraa tätä linkkiä." + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "Lisätietoja inkrementaalisesta varmuuskopioinnista" + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "Muistirajoitus" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "palautus" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "Tuhottava taulu: %s" + +#: backup.php:829 +msgid "Incremental" +msgstr "Inkrementaalinen" + +#: backup.php:829 +msgid "Full backup" +msgstr "Täysi varmuuskopiointi" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "jatketaan päivitysten suorittamista..." + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "(näytä loki...)" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "Varmuuskopiointi onnistui" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "Joka %s. tunti" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "etsi ja korvaa" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "Suorita" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "Etsi/korvaa -toimintoa ei voi kumota. Haluatko jatkaa?" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "Tämä saattaa tuhota sivustosi. Käytä varoen!" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "Korvaa:" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "Hae:" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "etsi / korvaa tietokanta" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "hakusana" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "Liian monta tietokantavirhettä - keskeytetään" + +#: backup.php:895 +msgid "read more at %s" +msgstr "lue lisää: %s" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "Ilmaisella UpdraftPlus-lisäosalla luodut sähköpostiraportit sisältävät viimeisimmät UpdraftPlus.com -uutiset." + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "" + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "Et ole vielä tehnyt yhtään varmuuskopiota." + +#: admin.php:3872 +msgid "Database Options" +msgstr "Tietokannan varmuuskopiointi" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "" + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "Varmuuskopiot" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "Nykytila" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "Valitaksesi mitä varmuuskopioidaan, ajastaaksesi varmuuskopioinnin, varmuuskopioidaksesi etäsijaintiin tai pilvipalveluun (suositellaan) ja muut asetukset löydät \"Asetukset\"-välilehdeltä." + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "Luodaksesi varmuuskopion, valitse \"Varmuuskopioi nyt\"." + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "Tervetuloa UpdraftPlussaan!" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "Jos syötät tähän tekstiä, sitä käytetään tietokantavarmuuskopion salaamiseen (Rijndael). Kirjoita tämä ylös äläkä hukkaa sitä, tai varmuuskopiosi ovat käyttökelvottomia. Tätä käytetään myös purkamaan salaus tämän ohjausnäkymän kautta; jos vaihdat sen, automaattinen salauksen purku ei toimi kunnes vaihdat sen takaisin." + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "" + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "" + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "Varmuuskopioi ulkopuolinen tietokanta..." + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "Jos tietokanta sisältää muita tauluja, jotka eivät liity WordPress-sivustoon, aktivoi tämä varmuuskopioidaksesi ne." + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "Varmuuskopioi WordPressiin liittymättömiä tauluja samassa tietokannassa kuin WordPress" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "" + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "" + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "" + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "" + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "" + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "" + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "" + +#: admin.php:4499 +msgid "External database" +msgstr "" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "" + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "Varmuuskopioi muita tietokantoja" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "Voit purkaa tietokantavarmuuskopion salauksen käsin täällä." + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "Sillä voit myös varmuuskopioida ulkoisia tietokantoja." + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "Ethän halua sinua vakoiltavan? UpdraftPlus Premium voi salata tietokantasi varmuuskopion." + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "käytä UpdraftPlus Premiumia" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "" + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "" + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "" + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "" + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "" + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "" + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "" + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "" + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "Onnistui:" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "Kun olet tallentanut asetukset (valitsemalla 'Tallenna muutokset' alla), palaa sen jälkeen tähän kohtaan ja klikkaa tätä linkkiä viimeistelläksesi tunnistautumisen palveluun %s." + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "(Näyttää siltä, että olet jo tunnistautunut.)" + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "Tunnistaudu - %s" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "Tilinomistajan nimi: %s" + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "" + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "" + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "" + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "" + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "" + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "" + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "" + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "Etsi varmuuskopioita paikallisesta kansiosta" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "Asennettua UpdraftPlussan versiota ei ole testattu WordPress-versiosi (%s) kanssa." + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "" + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "" + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "" + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "" + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "Etsi varmuuskopioita etäsäilöstä" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "Siirrä varmuuskopiotiedostoja palvelimelle" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "" + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "" + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "" + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "" + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "" + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "" + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "" + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "" + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "" + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "" + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "" + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "" + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "Kirjaa kaikki viestit syslogiin (vain palvelimen ylläpitäjä saattaa haluta tämän tiedon)" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "Lisää toinen..." + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "" + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "" + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "" + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "" + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "" + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "" + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "" + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "" + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "" + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "" + +#: admin.php:1528 +msgid "Constants" +msgstr "" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "" + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "" + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "" + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "" + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "" + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "" + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "" + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "" + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "" + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "" + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "" + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "" + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "" + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "" + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "" + +#: admin.php:556 +msgid "Trying..." +msgstr "" + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "" + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "" + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "" + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "" + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "" + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "" + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "" + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "Lisää toinen osoite..." + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "Syötä sähköpostiosoitteet, joihin raportti lähetetään varmuuskopioinnin valmistuttua." + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "Sähköpostiraportit" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "" + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr "" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr "" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "" + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "" + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "" + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "" + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "Halutessasi lisää raportointiominaisuuksia, käytä Reporting-lisäosaa." + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "" + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "Kun säilöksi on valittu \"Sähköposti\", lähetä koko varmuuskopio" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "" + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "" + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "" + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "" + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "" + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "Lisäosat sisältävä päivitys on saatavilla UpdraftPlussaan - napsauta tätä linkkiä hakeaksesi sen." + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "Päivitys on saatavilla UpdraftPlussaan - napsauta tätä linkkiä hakeaksesi sen." + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "" + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "Raportointi" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "Lähetä raportti vain, jos ilmeni varoituksia/virheitä" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "" + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "" + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "Hallitse lisäosia" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "" + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "" + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "" + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "" + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "" + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "" + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "Mene tänne yhdistääksesi." + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "" + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "" + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "" + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "Etäsäilön asetukset" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "" + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "Muista tämä valinta seuraavalla kerralla (sinulla säilyy edelleen mahdollisuus muuttaa sitä)" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "Voit lähettää varmuuskopion useampaan kuin yhteen etäsäilöön käyttämällä lisäosaa." + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "" + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "(%s%%, tiedosto %s/%s)" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "Lue lisää siitä, miten tämä toimii..." + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "" + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "" + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "" + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "" + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "" + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "" + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "viimeisin aktiviteetti: %ss sitten" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "" + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "Lähetetään tiedostoja etäsäilöön" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "" + +#: admin.php:3359 +msgid "table: %s" +msgstr "taulu: %s" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "Luodaan tietokannan varmuuskopiota" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "Luodaan tiedostojen varmuuskopioita (zip)" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "Varmuuskopiointi aloitettu" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "Varmuuskopiointi käynnissä:" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "" + +#: restorer.php:646 +msgid "file" +msgstr "tiedosto" + +#: restorer.php:639 +msgid "folder" +msgstr "" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "" + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "" + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "" + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "" + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "" + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Varmuuskopioi lisäosat, teemat ja WordPressin tietokanta automaattisesti (tarpeellisilta osin) UpdraftPlussan avulla ennen päivittämistä" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "" + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "" + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "" + +#: admin.php:2310 +msgid "More plugins" +msgstr "Lisää liitännäisiä" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "Tuki" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "" + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "" + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "" + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "Automaattinen varmuuskopiointi tuo turvaa" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "" + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "" + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "" + +#: admin.php:584 +msgid "Upload error" +msgstr "" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "" + +#: admin.php:582 +msgid "Upload error:" +msgstr "" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "" + +#: admin.php:572 +msgid "Download to your computer" +msgstr "" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "" + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "" + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "" + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "" + +#: admin.php:563 +msgid "Warnings:" +msgstr "" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "" + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "" + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "" + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "" + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "" + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "" + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "" + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "" + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "" + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "" + +#: admin.php:4836 +msgid "Final checks" +msgstr "" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "" + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "" + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "" + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "" + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "" + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "" + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "" + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "" + +#: restorer.php:939 +msgid "Files found:" +msgstr "" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "" + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "" + +#: admin.php:4908 +msgid "file is size:" +msgstr "" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "" + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "" + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "" + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "" + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "" + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "" + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "" + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "Viimeisin varmuuskopiointi:" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "" + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "" + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "" + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "" + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "" + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "" + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "" + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "" + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "" + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "" + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "" + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "" + +#: admin.php:596 +msgid "Close" +msgstr "" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "" + +#: admin.php:576 +msgid "PHP information" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "" + +#: admin.php:2627 +msgid "Get it here." +msgstr "" + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "" + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "" + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "" + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "Kloonaa/Siirrä" + +#: admin.php:2304 +msgid "Premium" +msgstr "" + +#: admin.php:2305 +msgid "News" +msgstr "Uutiset" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "" + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "" + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "" + +#: admin.php:880 +msgid "Notice" +msgstr "" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "" + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "Polku" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "" + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "" + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "" + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "" + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "" + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "" + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "seuraavan kerran" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "" + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "" + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "" + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "" + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "Ole huolellinen - jos syötät \"/\", yritetään luoda varmuuskopio koko palvelimestasi." + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "Jos käytät tätä, anna absoluuttinen hakemistopolku (ei suhteellinen WordPress-asennukseen nähden)." + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "Ellet ole varma mihin tätä käytetään, sinun ei kannata kytkeä tätä päälle." + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "Anna hakemisto:" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "WordPressin ydin (sisältäen mitkä tahansa lisäykset WordPressin juurihakemistoon)" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "Yllämainitut tiedostot kattavat koko WordPress-asennuksen." + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "" + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "" + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "" + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "" + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "" + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "" + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "%s -tilisi nimi: %s" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "olet tunnistautunut %s -tilillesi" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "" + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "" + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "" + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "" + +#: methods/s3.php:961 +msgid "API secret" +msgstr "" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "" + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "" + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "" + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "" + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "" + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "" + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "" + +#: methods/email.php:69 +msgid "Note:" +msgstr "" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "" + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "" + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "" + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "Tutustu lisäksi tähän tärkeään FAQ-osioon." + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "" + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "Testaa %s -asetukset" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "Virhe ladattaessa etätiedostoa: lataaminen epäonnistui (" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "Virhe avattaessa paikallista tiedostoa: lataus epäonnistui" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "Pilvipalveluvirhe - lataaminen palvelimelle epäonnistui" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "Virhe %s: lataaminen palvelimelle epäonnistui" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "Virhe %s: paikallisen tiedoston avaaminen epäonnistui" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "Pilvipalveluvirhe - säilön luominen ja pääsy epäonnistui" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "Kun olet tallentanut asetukset (valitsemalla 'Tallenna muutokset' alla), palaa sen jälkeen tähän kohtaan ja klikkaa tätä linkkiä viimeistelläksesi tunnistautumisen Googlen palveluun. " + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "" + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "" + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "%s on hyvä valinta, sillä UpdraftPlus tukee lataamista lohkoissa - sivuston koolla ei ole merkitystä, UpdraftPlus voi ladata sen palveluun lohko kerrallaan, eivätkä aikakatkaisut keskeytä prosessia." + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "Tiliin pääsy estetty." + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "Kohteeseen %s lataaminen epäonnistui" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "Tili täynnä: tililläsi %s on enää %d tavua vapaana, vaikka sonne ladattavan tiedoston koko on %d tavua" + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "Et ole vielä saanut pääsyyn tarvittavaa tunnussanomaa Googlelta - sinun täytyy (uudelleen)auktorisoida yhteytesi Google Driveen." + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "olet tunnistautunut %s -tilillesi." + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "Onnistui" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "%s -kiintiön käyttö: %s %% käytetty, %s vapaana" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "Auktorisointi epäonnistui" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "" + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "seuraa tätä linkkiä" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "%s -tuki on saatavilla lisäosana" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "UpdraftPlus-lisäosaa %s ei ole asennettu - saat sen täältä: %s" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "Sinun täytyy tunnistautua uudelleen palveluun %s, olemassaolevat tunnistautumistiedot eivät toimi." + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "OK" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "Taulun etuliite on vaihtunut: vaihdetaan taulun %s kentät sen mukaisesti:" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "Valmis: prosessoituja rivejä: %d kpl %.2f sekunnissa" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "suoritettava tietokantakysely:" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "palautetaan:" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "Vanha taulun etuliite:" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "Varmuuskopio kohteesta:" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "Pääsy tietokantaan: suora pääsy MySQL-kantaan ei ole käytettävissä, sen sijaan käytetään wpdb:tä (huomattavasti hitaampi)" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "Tietokantatiedostoa ei voitu avata" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "Tietokantatiedostoa ei löytynyt" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "Varoitus: PHP:n \"safe_mode\" on aktiivisena palvelimellasi. Aikakatkaisut ovat todennäköisiä. Näiden tapahtuessa sinun täytyy palauttaa tiedosto käsi phpMyAdminin kautta tai muilla keinoin." + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "wp-config.php varmuuskopiosta: palautetaan (käyttäjän pyynnöstä)" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "wp-config.php varmuuskopiosta: palautetaan nimellä wp-config-backup.php" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "Tietokannan (salaus purettu) kirjoittaminen tiedostojärjestelmään epäonnistui " + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "Tilapäisen hakemiston luonti epäonnistui" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "Työhakemiston poistaminen palauttamisen jälkeen epäonnistui." + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "Vanhaa hakemistoa ei voitu poistaa." + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "Siivotaan roskaa..." + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "Palautetaan tietokantaa (suurien sivustojen kohdalla tämä saatta kestää kauan. Mikäli aikakatkaisu ilmenee - etenkin jos verkkosivustoasi isännöivä taho on rajoittanut käytössäsi olevia resursseja - tulisi käyttää muita menetelmiä kuten phpMyAdmin)..." + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "Tietokannan salaus purettiin onnistuneesti." + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "Puretaan tietokannan salausta (saattaa kestää hetken)..." + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "Puretaan varmuuskopiota..." + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "Tämän kokonaisuuden kopiointi epäonnistui." + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "Varmuuskopiotiedosto ei ole saatavilla." + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "UpdraftPlus ei voi palauttaa tämäntyyppistä kokonaisuutta. Se täytyy palauttaa käsin." + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "Erästä palautettavaa tiedostoa ei löytynyt" + +#: admin.php:5009 +msgid "Error message" +msgstr "Virheilmoitus" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "Varmuuskopion tietoihin ei sisälly tämän tiedoston oikeaa kokoa. " + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "Arkiston ennakoitu koko:" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "Jos luot tukipynnön, sisällytä tämä tieto:" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "Keskeytys: Ei tietoa, mitkä osiot tulisi palauttaa." + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "UpdraftPlus-palautus: edistyminen" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "Tätä varmuuskopiota ei löydy varmuuskopiointihistoriasta - palautus peruutettu. Aikaleima:" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "Painettuasi tätä voit valita, mitkä komponentit haluat palauttaa" + +#: admin.php:4572 +msgid "Press here to download" +msgstr "Paina ladataksesi" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "Poista tämä varmuuskopio" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "Hyviä uutisia: liikennöinti kohteeseen %s voidaan salata. Jos näet salaukseen liittyviä virheitä, tarkista lisätiedot kohdasta \"Edistyneet asetukset\"." + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "Palvelimesi PHP/Curl -asennus ei tue https-pyyntöjä. Kohteeseen %s ei voida liikennöidä ilman tätä. Ota yhteys verkkopalvelujasi isännöivän tahon tukeen. %s vaatii Curl+https. Ole hyvä äläkä luo tukipyyntöjä tähän liittyen, tälle ei ole olemassa vaihtoehtoja. " + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "Palvelimesi PHP/Curl -asennus ei tue https-pyyntöjä. Kommunikointia %s kanssa ei salata. Pyydä verkkopalvelujasi isännöivää tahoa asentamaa Curl/SSL mahdollistaaksesi salaus (vaatii lisäosan)." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "Palvelimesi PHP-asennus ei sisällä vaadittavaa moduulia (%s). Ota yhteys verkkopalvelujasi isännöivän tahon tukeen." + +#: admin.php:4062 +msgid "Save Changes" +msgstr "Tallenna muutokset" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "Tämän valitseminen heikentää tietoturvaa, sillä UpdraftPlus ei käytä SSL:ää tunnistautumiseen ja salattuun liikennöintiin, jos mahdollista. Huomaa, että jotkin pilvipalveluntarjojat eivät salli tätä (esim. Dropbox) ja näissä tapauksissa tällä valinnalla ei ole vaikutusta." + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "Poista SSL käytöstä kokonaan, missä mahdollista" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "Huomaa, etteivät kaikki pilvipalveluun perustuvat varmuuskopiointimenetelmät välttämättä käytä SSL-tunnistautumista." + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "Tämän valitseminen heikentää tietoturvaa, sillä UpdraftPlus ei varmista niiden salattujen sivustojen identiteettiä, joihin se on yhdistää (esim. Dropbox, Google Drive). Tämä tarkoittaa sitä, että UpdraftPlus käyttää SSL:ää vain liikenteen salaamiseen, ei tunnistautumiseen." + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "Älä varmista SSL-sertifikaatteja" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "Oletusarvoisesti UpdraftPlus käyttää omaa SSL-sertifikaattien säilöään varmistaakseen etäpalvelinten identiteetin (ollakseen varma että toisessa päässä todellakin on aito Dropbox tai Amazon S3 eikä hyökkääjä). Pidämme nämä ajan tasalla. Jos törmäät SSL-virheeseen, tämän valitseminen (UpdraftPlus käyttää palvelimesi säilöä omansa sijaan) saattaa auttaa." + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "Käytä palvelimen SSL-sertifikaatteja" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "Jos toimenpide epäonnistuu, tarkista oikeudet palvelimella tai vaihda hakemistoon, jonne palvelimen prosessilla on oikeudet kirjoittaa." + +#: admin.php:3697 +msgid "click here" +msgstr "klikkaa tätä" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "tai palauta valinta oletuksiin" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "Määritettyyn varmuuskopiohakemistoon voidaan kirjoittaa. Hyvä." + +#: admin.php:4009 +msgid "Backup directory" +msgstr "Varmuuskopiohakemisto" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "Poista paikallinen varmuuskopio" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "klikkaa tätä nähdäksesi lisäasetuksia; ei mitään kiinnostavaa, ellei sinulla ole ongelmia tai ellet ole utelias." + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "Näytä edistyneet asetukset" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "Edistyneet asetukset" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "Vianselvitystila" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "Edistyneet asetukset / vianselvitysasetukset" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "Aloitetaan varmuuskopiointi..." + +#: admin.php:591 +msgid "Cancel" +msgstr "Kumoa" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "Ei mitään" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "Valitse etäsäilö" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "Pura tietokantavarmuuskopion salaus käsin" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "Tietokannan salauslauseke" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "Sähköposti" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "Ylläolevat hakemistot sisältävät kaiken, poislukien WordPressin ydin, jonka voit ladata WordPress.org -sivustolta. " + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "Älä sisällytä näitä:" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "Muut hakemistot wp-content -hakemiston alla" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "Sisällytä tiedostovarmuuskopioon" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "esim. mikäli palvelin on kuormitettuna päivällä ja haluat suorittaa yöaikaan" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "Asettaaksesi ajan, milloin varmuuskopiointi suoritetaan," + +#: admin.php:3683 +msgid "Monthly" +msgstr "Kuukausittain" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "Joka toinen viikko" + +#: admin.php:3681 +msgid "Weekly" +msgstr "Viikottain" + +#: admin.php:3680 +msgid "Daily" +msgstr "Päivittäin" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "Lataa lokitiedosto" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "Hakemisto on olemassa, mutta palvelimella ei ole oikeuksia kirjoittaa sinne." + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "Hakemisto luotiin, mutta sen oikeudet on muutettu muotoon 777 (kaikki voivat kirjoittaa) jotta sinne voidaan kirjoittaa. Tarkista verkkosivustoasi isännöivältä taholta, ettei tämä aiheuta ongelmia." + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "Pyyntö luoda hakemisto epäonnistui." + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "Poista" + +#: admin.php:3418 +msgid "show log" +msgstr "näytä loki" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "Kaikki UpdraftPlus-asetukset tyhjennetään - oletko varma?" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "Tiedostojen viemä (pakkaamaton) levytila yhteensä:" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "Ei" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "Kyllä" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "%s versio:" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "Nykyinen muistinkulutus" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "Muistinkulutuksen huippu" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "Palvelin:" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "Tutustu UpdraftPlus Premiumiin tai itsenäiseen Multisite-lisäosaan." + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "Tarvitsetko WordPress Multisite -tukea?" + +#: admin.php:2654 +msgid "Multisite" +msgstr "Multisite (Verkosto)" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "Suorita kertaluonteinen varmuuskopiointi" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "Tutustu tähän artikkeliin asioista, jotka on hyödyllistä tietää ennen palauttamista." + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "Voit suorittaa etsi/korvaa -toiminnon tietokannalle (siirtääksesi verkkosivuston uuteen sijaintiin/URL-osoitteeseen) hyödyntämällä Migrator-lisäosaa - linkin takaa löydät lisää tietoa" + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "%s palauttamisvalinnat:" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "Se täytyy palauttaa käsin." + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "Tätä osaa ei voida paluttaa automaattisesti: \"%s\"." + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "Palvelimellasi on PHP:n niinkutsuttu \"safe_mode\" aktiivisena." + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "Valitse palautettavat komponentit" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "Palauttaminen korvaa tämän sivuston teemat, lisäosat, ladatut tiedostot, tietokannan ja/tai muun sisällön (riippuen valinnoistasi ja siitä, mitä varmuuskopio sisältää)." + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "Palauta varmuuskopio" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "Palauta varmuuskopio" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "Poista varmuuskopio" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "Latausvirhe: palvelin lähetti vasteen jota ei voitu ymmärtää." + +#: admin.php:570 +msgid "You should:" +msgstr "Sinun tulisi:" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "Virhe:" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "lasketaan..." + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "UpdraftPlus - lataa varmuuskopiotiedostoja palvelimelle" + +#: admin.php:3020 +msgid "refresh" +msgstr "päivitä" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "UpdraftPlussan käyttämä levytila palvelimella" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "Google Drive" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "Jos käytät tätä, kytke Turbo/Road -tila pois päältä." + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "Opera-selain" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "Lisää toimintoja:" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "Lataa viimeisin lokitiedosto" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "(Ei vielä mitään lokissa)" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "Viimeisin lokiviesti" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "Palauta" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "Varmuuskopioi nyt" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "Tietokanta" + +#: admin.php:229 +msgid "Files" +msgstr "Tiedostot" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "Seuraavaksi ajastetut varmuuskopiot" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "Samaan aikaan tiedostojen varmuuskopioinnin kanssa" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "Ei ajastuksia tällä hetkellä" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "Ylläpitäjälle tarkoitettu käyttöliittymä hyödyntää JavaScriptiä. Sinun tulee kytkeä se päälle selaimessasi tai käyttää JavaScriptiä tukevaa selainta. " + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "JavaScript-varoitus" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "Poista vanhat hakemistot" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "Nykyinen rajoitus on:" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "Varmuuskopio on palautettu." + +#: admin.php:2310 +msgid "Version" +msgstr "Versio" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "Johtavan kehittäjän kotisivu" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "Asetukset on poistettu." + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "Varmuuskopiohakemisto luotu." + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "Varmuuskopiohakemistoa ei voitu luoda" + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "Vanhojen hakemistojen poistaminen epäonnistui. Voit tehdä poistamisen käsin." + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "Vanhat hakemistot poistettu." + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "Poista vanhat hakemistot" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "Palaa UpdraftPlus-asetuksiin" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "Toiminnot" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "Palautus onnistui!" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "Epäkelpo tiedostonimi - tämä ei vaikuta UpdraftPlus-lisäosalla luodulta, salatulta tietokannalta" + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "Epäkelpo tiedostonimi - tämä ei vaikuta UpdraftPlus-lisäosalla luodulta tiedostolta" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "Ei paikallista kopiota." + +#: admin.php:2072 +msgid "Download in progress" +msgstr "Lataaminen käynnissä" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "Tiedosto valmis." + +#: admin.php:2043 +msgid "Download failed" +msgstr "Lataaminen epäonnistui" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "Virhe" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "Tehtävää ei löydy - se on mahdollisesti jo valmis?" + +#: admin.php:1854 +msgid "Job deleted" +msgstr "Tehtävä poistettu" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "OK. Sinun tulisi pian nähdä viesti \"Viimeisin lokiviesti\" -kohdassa alapuolella." + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "Ei vielä mitään lokissa" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "Tutustu tähän FAQ-osioon, mikäli sinulla on ongelmia varmuuskopioinnin kanssa." + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "Sivustosi on isännöitynä %s palvelimella." + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "UpdraftPlus ei virallisesti tue WordPressin versioita, jotka ovat vanhempia kuin %s. Se saattaa toimia, mutta ota huomioon ettei tukea ole saatavilla ennenkuin päivität WordPressin." + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "Levytilaa on vapaana vähemmän kuin %s. UpdraftPlus ei välttämättä pysty toimimaan levytilan loppumisen vuoksi. Ota yhteyttä palvelimen ylläpitoon ratkaistaksesi asian." + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "Varoitus" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "Lisäosat / Pro-tuki" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "Asetukset" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "Sallitut tiedostot" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "Ei voitu luoda zip-tiedostoa %s. Tarkista loki." + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "Päättymätön rekursio: tarkista logi" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "Tuen ja lisäosat löydät UpdraftPlus.Comista" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "Tarvitsetko lisää ominaisuuksia ja tukea? Tutustu UpdraftPlus Premiumiin" + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "Auta UpdraftPlussaa jättämällä positiivinen arvostelu wordpress.org-sivustolla" + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "Tykkäätkö UpdraftPlussasta ja voit antaa minuutin ajastasi?" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "Pystytkö kääntämään kieliä? Haluatko parantaa UpdraftPlussaa omalle kielellesi?" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "Tiedostoa ei löydy" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "Käytetty salauksenpurkuavain:" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "Salauksen purkaminen epäonnistui. Todennäköisin syy on väärä salauksenpurkuavain." + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "Salauksen purkaminen epäonnistui. Tietokantatiedosto on salattu, mutta salauksenpurkuavainta ei annettu." + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "Ei voitu avata varmuuskopioita kirjoittamista varten" + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "Ei voitu tallentaa varmuuskopiohistoriaa, sillä varmuuskopiotaulukkoa ei ole. Varmuuskopiointi todennäköisesti epäonnistui. " + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "Ei voitu lukea hakemistosta" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "Varmuuskopiohakemistoon (%s) ei voi kirjoittaa tai sitä ei ole " + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "WordPressin varmuuskopiointi on valmis" + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "Varmuuskopiointiyritys päättyi, ilmeisesti epäonnistuneesti" + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "Varmuuskopiointi ilmeisesti onnistui ja on valmis" + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "Salausvirhe tietokantaa salattaessa. Salaus keskeytetty." + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "Ei voitu luoda tiedostoja varmuuskopiointihakemistoon. Varmuuskopiointi keskeytetty - tarkista asetukset." + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "Muut" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "Ladatut tiedostot" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "Teemat" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "Lisäosat" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "Lokitiedostoja ei löytynyt." + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "Lokitiedostoa ei voitu lukea." + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "UpdraftPlus-huomautus:" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "UpdraftPlus-varmuuskopiot" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-he_IL.mo b/plugins/updraftplus/languages/updraftplus-he_IL.mo new file mode 100644 index 0000000..04fc881 Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-he_IL.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-he_IL.po b/plugins/updraftplus/languages/updraftplus-he_IL.po new file mode 100644 index 0000000..181a446 --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-he_IL.po @@ -0,0 +1,6111 @@ +# Translation of UpdraftPlus in Hebrew +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2014-05-31 22:41:00+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: he_IL\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "" + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "" + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "" + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "" + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "" + +#: addons/webdav.php:91 +msgid "Path" +msgstr "" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "" + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "" + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "" + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "" + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "" + +#: admin.php:2310 +msgid "FAQs" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "" + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "" + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "" + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "" + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "" + +#: methods/ftp.php:355 +msgid "login" +msgstr "" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "" + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "" + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "" + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "" + +#: admin.php:2604 +msgid "Now" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "" + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "" + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "" + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "" + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "" + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "" + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "" + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "" + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "" + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "" + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "" + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "" + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "" + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "" + +#: admin.php:3420 +msgid "stop" +msgstr "" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "" + +#: admin.php:3092 +msgid "this backup set" +msgstr "" + +#: admin.php:3020 +msgid "calculate" +msgstr "" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "" + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "" + +#: admin.php:601 +msgid "Saving..." +msgstr "" + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:557 +msgid "Fetching..." +msgstr "" + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "" + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "" + +#: admin.php:2884 +msgid "Dismiss" +msgstr "" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "" + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "" + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "" + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "" + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "" + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "" + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "" + +#: admin.php:3860 +msgid "File Options" +msgstr "" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "" + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "" + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "" + +#: admin.php:5157 +msgid "settings" +msgstr "" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "" + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "" + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "" + +#: admin.php:442 +msgid "Extensions" +msgstr "" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "" + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "" + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "" + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "" + +#: addons/azure.php:524 +msgid "container" +msgstr "" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "" + +#: addons/azure.php:523 +msgid "optional" +msgstr "" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "" + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "" + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "" + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "" + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "" + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "" + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "" + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "" + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "" + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "" + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "" + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "" + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "" + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "" + +#: restorer.php:767 +msgid "Deferring..." +msgstr "" + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "" + +#: admin.php:3081 +msgid "Deselect" +msgstr "" + +#: admin.php:3080 +msgid "Select all" +msgstr "" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "" + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "" + +#: admin.php:634 +msgid "For backups older than" +msgstr "" + +#: admin.php:633 +msgid "week(s)" +msgstr "" + +#: admin.php:632 +msgid "hour(s)" +msgstr "" + +#: admin.php:631 +msgid "day(s)" +msgstr "" + +#: admin.php:630 +msgid "in the month" +msgstr "" + +#: admin.php:629 +msgid "day" +msgstr "" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "" + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "" + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "" + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "" + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "" + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "" + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "" + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "" + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "" + +#: admin.php:607 +msgid "Update quota count" +msgstr "" + +#: admin.php:606 +msgid "Counting..." +msgstr "" + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "" + +#: admin.php:603 +msgid "Connecting..." +msgstr "" + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "" + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "" + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "" + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "" + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "" + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "" + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "" + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "" + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "" + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "" + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "" + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "" + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "" + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "" + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "" + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "" + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "" + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "" + +#: admin.php:4423 +msgid "Site" +msgstr "" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "" + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "" + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "" + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "" + +#: admin.php:617 +msgid "Deleting..." +msgstr "" + +#: admin.php:616 +msgid "key name" +msgstr "" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "" + +#: admin.php:611 +msgid "Creating..." +msgstr "" + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "" + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "" + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "" + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "" + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "" + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "" + +#: addons/migrator.php:1861 +msgid "key" +msgstr "" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "" + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "" + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "" + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "" + +#: admin.php:608 +msgid "Adding..." +msgstr "" + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "" + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "" + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "" + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "" + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "" + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "" + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "" + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "" + +#: methods/email.php:73 +msgid "configure it here" +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "" + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "" + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "" + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "" + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "" + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "" + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "" + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "" + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "" + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "" + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "" + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "" + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "" + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "" + +#: admin.php:2831 +msgid "Personal support" +msgstr "" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "" + +#: admin.php:2718 +msgid "Get it from" +msgstr "" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "" + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "" + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "" + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "" + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "" + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "" + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "" + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "" + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "" + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "" + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "" + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "" + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "" + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "" + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "" + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "" + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "" + +#: admin.php:4368 +msgid "Backup date" +msgstr "" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "" + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "" + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "" + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "" + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "" + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "" + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "" + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "" + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "" + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "" + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "" + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "" + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "" + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "" + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "" + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "" + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "" + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "" + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "" + +#: backup.php:829 +msgid "Incremental" +msgstr "" + +#: backup.php:829 +msgid "Full backup" +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "חיפוש והחלפה" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "בצע" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "פעולת ההחלפה אינה ניתנת לביטול. האם אתה בטוח?" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "פעולה זו עלולה להרוס את האתר שלך. נהג בזהירות!" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "החלף עם" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "חפש את" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "חפש / החלף בסיס נתונים" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "ביטוי חיפוש" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "יותר מדי טעויות בסיס נתונים התרחשו - מבטל פעולה." + +#: backup.php:895 +msgid "read more at %s" +msgstr "קרא עוד ב%s" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "" + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "" + +#: admin.php:3872 +msgid "Database Options" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "" + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "" + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "" + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "" + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "" + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "" + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "" + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "" + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "" + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "" + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "" + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "" + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "" + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "" + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "" + +#: admin.php:4499 +msgid "External database" +msgstr "" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "" + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "" + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "" + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "" + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "" + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "" + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "" + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "" + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "" + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "" + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "" + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "" + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "" + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "" + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "" + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "" + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "" + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "" + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "" + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "" + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "" + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "" + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "" + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "" + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "" + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "" + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "" + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "" + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "" + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "" + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "" + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "" + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "" + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "" + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "" + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "" + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "" + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "" + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "" + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "" + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "" + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "" + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "" + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "" + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "" + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "" + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "" + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "" + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "" + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "" + +#: admin.php:1528 +msgid "Constants" +msgstr "" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "" + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "" + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "" + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "" + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "" + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "" + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "" + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "" + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "" + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "" + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "" + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "" + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "" + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "" + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "" + +#: admin.php:556 +msgid "Trying..." +msgstr "" + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "" + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "" + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "" + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "" + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "" + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "" + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "" + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "" + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "" + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "" + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr "" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr "" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "" + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "" + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "" + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "" + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "" + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "" + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "" + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "" + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "" + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "" + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "" + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "" + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "" + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "" + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "ראה גם את ההרחבה \"קבצים נוספים\" מהחנות שלנו." + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "השטח הפנוי בחשבון האירוח שלך הוא נמוך מאוד - רק Mb%s נשאר" + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "כמות הזיכרון (RAM) המותר עבור PHP הוא נמוך מאוד (%s Mb) - הנך צריך להגדיל את כמות הזיכרון כדי למנוע כשלים בגלל חוסר זיכרון (התייעץ עם חברת האירוח שלך לקבלת עזרה נוספת)" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "נהל הרחבות" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "רכוש את זה" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "קבל את זה בחנות UpdraftPlus.Com" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "הפעל אותה באתר זה" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "יש לך רכישה לא פעילה" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "מוקצה לאתר זה" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "זמין עבור אתר זה (דרך רכישת כל ההרחבות שלך)" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "(ככל הנראה קדם הפצה או שחרור נסוג)" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "עבור לכאן" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "צריך תמיכה ?" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "אירעה שגיאה בעת ניסיון לאחזר את ההרחבות שלך." + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "תגובה לא ידועה התקבלה. התגובה שהתקבלה:" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "טענה לא אושרה - פרטי הכניסה לחשבון שלך היו שגויים" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "אנא המתן בזמן שאנחנו מעבירים את הטענה..." + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "אירעו שגיאות בעת ניסיון להתחבר ל UpdraftPlus.Com :" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "אתה לא מחובר לחשבון UpdraftPlus.Com ." + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "אם רכשת הרחבות חדשות, הכנס לקישור זה כדי לרענן את החיבור שלך" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "אתה מחובר לחשבון UpdraftPlus.Com ." + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "מעוניין לדעת על אבטחת הסיסמא שלך ב UpdraftPlus.Com ? קרא על זה כאן." + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "שכחת את הפרטים שלך?" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "עדיין אין לך חשבון (זה בחינם) ? צור חשבון !" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "התחבר עם חשבון UpdraftPlus.Com" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "גרסתו של PHP בשרת האינטרנט שלך הינו ישן מדי (" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "" + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "UpdraftPlus עדיין לא הותקן." + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "לחץ כאן כדי להפעיל אותו." + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "UpdraftPlus עדיין לא הופעל." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "לחץ כאן כדי להתחבר." + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "אתה עדיין לא מחובר עם חשבון UpdraftPlus.Com שלך, כדי לאפשר את רשימת התוספות שרכשת." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "" + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "" + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "" + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "אופציה אחסון מרחוק" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "(הלוג נמצא בעמוד ההגדרות של UpdraftPlus כנורמל)" + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "זכור אפשרות זו בפעם הבאה (עדיין תהיה לך האפשרות לשנות אותה)" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "העלאה נכשלה" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "ניתן לשלוח את הגיבוי ליותר מיעד אחד בעזרת הרחבה (תוסף). " + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "הערה: מד ההתקדמות להלן מבוססת על שלבים, לא זמן. אל תפסיקו את הגיבוי כי זה נראה שנשאר באותו המקום במשך זמן מה - זה נורמלי." + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "(%s%%, קובץ %s של %s)" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "קרא עוד על איך זה עובד ..." + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "שגיאה: הצלחנו להתחבר, אך לא הצלחנו ליצור קובץ במיקום המבוקש בהצלחה." + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "שגיאה: נכנסנו בהצלחה לספרייה המבוקשת, אך לא הצלחנו ליצור קובץ במיקום המבוקש בהצלחה." + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "השתמש ב SCP במקום ב SFTP" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "הגדרות משתמש SCP / SFTP" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "הגדרות מארח SCP / SFTP" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "הניסיון לשלוח את הגיבוי באמצעות דואר אלקטרוני נכשל (כנראה הגיבוי היה גדול מדי לשיטה זו)" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "הגיבוי עומד על: %s. " + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "%s בדיקת הגדרות:" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "(לא הסתיים)" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "אם הנך רואה יותר גיבויים (גיבויים ישנים) משציפית, זה כנראה בגלל שעדיין לא בוצע גיבוי עדכני מלא." + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "אל תניח אותו בתוך ספריית הקבצים שלך או ספריית התוספים, כי זה גורם לרקורסיה (גיבויים של גיבויים של גיבויים של ...)." + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "זה המקום שבו UpdraftPlus יכתוב את קבצי הארכיון בתחילה. ספרייה זו חייבת להיות ניתנת לכתיבה על ידי שרת האינטרנט שלך. זה ביחס לספריית התוכן שלך (אשר כברירת מחדל נקרא wp-content)." + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "מזהה משימה: %s" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "הפעילות האחרונה: לפני %ss" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "החידוש הבא: %d (לאחר %ss)" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "לא ידוע" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "הגיבוי הסתיים" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "מחכה עד המועד המתוזמן כדי לנסות שנית עקב שגיאות" + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "דילול גיבויים ישנים" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "מעלה קבצים לאחסון מרוחק" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "מסד הנתונים המוצפן" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "הצפנת מסד הנתונים" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "גיבוי מסד הנתונים נוצר" + +#: admin.php:3359 +msgid "table: %s" +msgstr "טבלה: %s" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "יוצר גיבוי למסד הנתונים" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "גיבוי קבצים שנוצרו" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "יוצר את קבצי הארכיון לגיבוי" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "הגיבוי החל" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "הגיבוי מתבצע" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "" +"המתזמן מבוטל בהתקנת הוורדפרס שלך, דרך הגדרות DISABLE_WP_CRON. \n" +"הגיבויים אינם יכולים לרוץ (גם \"גיבוי כעת\") אלא אם כן הגדרת תהליך המפעיל את התיזמון באופן ידני, או עד שהוא מופעל." + +#: restorer.php:646 +msgid "file" +msgstr "קובץ" + +#: restorer.php:639 +msgid "folder" +msgstr "תיקייה" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "UpdraftPlus ניסתה ליצור %s בספרייה התוכן שלך, אך נכשלה - נא לבדוק את הרשאות הקובץ ולאפשר גישה (%s)" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "הגיבוי לא הסתיים; חידוש מתוזמן" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "אתר האינטרנט שלך מבקר לעתים רחוקות לכן UpdraftPlus אינו מקבל את המשאבים שהוא קיווה, אנא קרא את הדף הבא:" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "אימות ה %s לא יכול להמשיך, כי משהו אחר באתר שלך מונע זאת. נסה להשבית את התוספים האחרים שלך ועבור לערכת הנושא שהיא ברירת מחדל. (באופן ספציפי, אתה מחפש את הרכיב ששולח את הפלט (כמו אזהרות / שגיאות של PHP) לפני שהעמוד מתחיל. ביטול מצב איתור באגים עשוי גם לסייע)." + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "מגבלת זיכרון ה PHP ​​שלך (שנקבע על ידי חברת אירוח האתרים שלך) היא נמוכה מאוד. UpdraftPlus ניסה לשנות זאת אך ללא הצלחה. תוסף זה יכול להיאבק עם מגבלת זיכרון של פחות מ 64 MB - במיוחד אם הנך מעלה קבצים גדולים (למרות שמצד שני, אתרים רבים יהיו מוצלחים עם מגבלת 32Mb - החוויה שלך עשויה להשתנות)." + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "ממשיך עם העדכון" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "לא לבטל לאחר לחיצת המשך להלן - המתן עד שהגיבוי יושלם." + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "UpdraftPlus גיבויים אוטומטיים" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "שגיאות התרחשו:" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "יצירת גיבוי עם UpdraftPlus ..." + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "גיבוי אוטומטי" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "יצירת גיבוי מסד הנתונים עם UpdraftPlus ..." + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "אין לך הרשאות מתאימות לעדכון אתר זה." + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "ערכות נושא" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "תוספים" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "מתחיל גיבוי אוטומטי ..." + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "%s יצירת גיבוי מסד הנתונים עם UpdraftPlus ..." + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "גיבוי תוספים, ערכות נושא ומסדי הנתונים של וורדפרס באופן אוטומטי (במידת צורך) עם UpdraftPlus לפני העדכון" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "אם אתה לא בטוח, אז אתם צריכים להפסיק, אחרת אתה עלול להרוס את התקנת וורדפרס ." + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "זה לא נראה כמו גיבוי תקין של וורדפרס - קובץ %s היה חסר." + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "אין אפשרות לפתוח את קובץ הארכיון (%s) - אין אפשרות לבצע סריקה מקדימה כדי לבדוק את תקינותו. " + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "אין אפשרות לקרוא את קובץ הארכיון (%s) - אין אפשרות לבצע סריקה מקדימה כדי לבדוק את תקינותו." + +#: admin.php:2310 +msgid "More plugins" +msgstr "עוד תוספים" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "תמיכה" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "UpdraftPlus לא היה אפשרות לאתר את הקידומת טבלה בעת סריקת מסד הנתונים של הגיבוי." + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "לגיבוי מסד נתונים זה חסר טבלאות ליבה של וורדפרס: %s" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "אתה מייבא מגירסה חדשה יותר של וורדפרס (%s) לגירסה ישנה יותר(%s). אין ערבויות שורדפרס יכול להתמודד עם זה." + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "מסד הנתונים הוא קטן מדי כדי להיות אתר וורדפרס תקף (גודל: %s KB)." + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "עדכון ערכת נושא" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "עדכון תוסף" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "להיות בטוח עם גיבוי אוטומטי" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "בטל (במשך שבועות %s)" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "נתיב העלאת הקבצים (%s) אינו קיים - הגדר מחדש (%s)" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "אם אתה עדיין יכול לקרוא את המילים האלה אחרי שמסתיים טעינת הדף, אז ישנה בעיה עם JavaScript או jQuery באתר." + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "הקובץ הועלה." + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "סטטוס תגובת שרת אינה ידועה:" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "תגובת שרת לא ידועה:" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "במפתח פענוח זה יתבצע ניסיון:" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "בקישור זה תוכלו להוריד ולנסות לפענח את קובץ מסד הנתונים למחשב." + +#: admin.php:584 +msgid "Upload error" +msgstr "שגיאת העלאה" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "" + +#: admin.php:582 +msgid "Upload error:" +msgstr "שגיאת העלאה:" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "(בדוק שאתה מנסה לעלות קובץ זיפ שנוצר בעבר ע\"י UpdraftPlus)" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "לאחר מכן, אם אתה רוצה," + +#: admin.php:572 +msgid "Download to your computer" +msgstr "הורדה למחשב שלך" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "מחק מהשרת שלך" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "דוגמא של S3-ספקי אחסון תואמים" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "לא ימחוק ארכיב לאחר פתיחתם, בגלל אין אחסון ענן לגיבוי זה" + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "נראה שחסר ארכיב אחד או יותר ממערכת רב-ארכיון" + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "(%d ארכיב מוגדר)." + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "פיצול ארכיון כל:" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "שגיאה: השרת שלח תשובה (JSON) שלא יכולנו לפענח." + +#: admin.php:563 +msgid "Warnings:" +msgstr "אזהרה:" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "שיאה: השרת שלח תשובה ריקה." + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "נראה שהקובץ נוצר ע\"י UpdraftPlus, אבל ההתקנה לא מכירה בסוג האובייקט: %s. אולי אתה צריך להתקין תוסף?" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "קובץ גיבוי ההארכיון עובד בהצלחה. אבל עם מספר שגיאות. אתה צריך לבטל ולתקן כל בעיה לפני נסיון נוסף." + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "קובץ גיבוי ההארכיון עובד. אבל עם מספר אזהרות. אם הכל תקים, אז כעת לחץ שחזור שוב להמשיך. אחרת, בטל ותקן את הבעיות קודם." + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "קובץ גיבוי ההארכיון עובד בהצלחה. כעת לחץ שחזור שוב להמשיך." + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "ארכיון גיבוי מרובה זה מראה על חוסר של הארכיונים הבאים: %s" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "הקובץ (%s) נמצא, אבל גודלו שונה (%s) ממה שהיה צפוי (%s) - זה עשוי להיות פגום." + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "הקובץ נמצא, אך גודל הקובץ הינו 0 (עליך להעלות אותו מחדש):%s" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "קובץ לא נמצא (צריך להעלות אותו): %s" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "לא קיימת סדקת גיבוי כזו " + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "קובץ הארכיון לקובץ זה לא ניתן להמצא. שיטת האחסון מרחוק שמשתמשים בה (%s) לא מאפשרת לנו להחזיר קבצים. על מנת לבצע שחזור באמצעות UpdraftPlus, אתה צריך להשיג עותק של קובץ זה ולמקם אותו בתוך ספרית העבודה של UpdraftPlus." + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "נכשל הניסיון להעביר את הספרייה (לבדוק את הרשאות הקובץ ומכסת דיסק):%s" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "נכשל הניסיון להעביר את הקובץ (לבדוק את הרשאות הקובץ ומכסת דיסק):%s " + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "העברת קבצי הגיבוי (לא מכווצים) למקומם..." + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "נכשל בפתיחת קובץ הארכיון (%s) - %s" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "" + +#: admin.php:4836 +msgid "Final checks" +msgstr "" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "" + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "" + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "" + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "" + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "" + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "" + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "" + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "" + +#: restorer.php:939 +msgid "Files found:" +msgstr "" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "" + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "זה נראה כמו קובץ ייצוא (הגיבוי נעשה באתר עם כתובת URL שונה), אך נראה לא שלא סימנת את האופציה של חפש-כדי-לשנות את בסיס הנתונים. זאת הייתה טעות." + +#: admin.php:4908 +msgid "file is size:" +msgstr "גודל הקובץ: " + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "לחץ כאן לקבלת מידע נוסף." + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "ישנם קבצים שנמצאים עדיין בטעינה או המתנה - אנא המתן..." + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "גיבוי זה הוא מאתר עם דומיין אחר - זהו לא שחזור, אלא ייצוא. הינך צריך את תוסף ייצוא (Migrator) כדי שזה יעבוד." + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "אזור הזמן בשימוש הוא על פי ההגדרות של וורדפרס, לשינוי כנס ל-הגדרות -> כללי." + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "הכנס בפורמט HH:MM (לדוגמא: 14:22)." + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "%s העלאה נכשלה" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "%s כניסה נכשלה" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "אתה לא מופיע כמשתמש מאומת עם %s" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "נכשל ניסיון לגשת %s בעת המחיקה (ראה קובץ יומן ליותר)" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "אתה לא מופיע כמשתמש מאומת עם %s (תוך מחיקה)" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "שגיאה בדרופבוקס: %s (צפה בפרטים בלוג)" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "שגיאה - נכשל בהורדת הקובץ מאת %s" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "שגיאה - לא קיים קובץ כזה ב-%s" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "שגיאת %s" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "שגיאת %s - נכשל בהעלאת הקובץ" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "שגיאת אימות %s" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "שגיאה: %s" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "תקיית הגיבוי קיימת, אך היא לא ניתנת לכתיבה." + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "תקיית גיבוי מתאימה אינה קיימת." + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "התראה: %s" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "תהליך גיבוי אחרון:" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "נמצא קובץ גדול מאוד: %s (גודל: %s מ''ב)" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "%s קובץ לא קריא - לא ניתן לגיבוי" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "לטבלה %s יש יותר מדי שורות (%s) - אנו מקווים שחברת האחסון שלך נותנת לך משאבים מספיקים כדי לכתוב את הטבלה הזאת מהגיבוי" + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "שגיאה ארעה בזמן סגירת קובץ בסיס הנתונים הסופי" + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "התראות נמצאו:" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "ככל הנראה הגיבוי הצליח (עם התראות) והוא עכשיו הושלם" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "נפח הדיסק הפנוי שלך מאוד קטן - רק %s מ''ג נותרו פנויים" + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "אתר חדש:" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "שגיאה: כתובת האתר כבר בשימוש." + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "הזן את הפרטים של האתר החדש בתוך התקנת ה-multisite שלך:" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "מידע דרוש כדי להמשיך:" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "תוסף מעובד:" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "בדוק את הרשאות הכתיבה שלך: לא הצלחנו ליצור ולהכס לתקייה בהצלחה:" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "" + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "מנוע הPHP של האחסון שלך אינו מכיל מודול דרוש (%s). אנא פנה לתמיכה הטכנית של חברת האחסון שלך ובקש מהם להפעיל אותו." + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "אנא בדוק את הרשאות הכניסה שלך." + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "השגיאה שדווחה על ידי %s הייתה:" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "אנא ספק את המידע הדרוש, ורק אז המשך." + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "מידע על האתר:" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "" + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "" + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "" + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "" + +#: admin.php:596 +msgid "Close" +msgstr "" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "" + +#: admin.php:576 +msgid "PHP information" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "" + +#: admin.php:2627 +msgid "Get it here." +msgstr "" + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "" + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "" + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "" + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "" + +#: admin.php:2304 +msgid "Premium" +msgstr "" + +#: admin.php:2305 +msgid "News" +msgstr "" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "" + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "" + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "" + +#: admin.php:880 +msgid "Notice" +msgstr "" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "" + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "" + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "" + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "" + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "" + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "" + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "" + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "" + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "" + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "" + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "" + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "" + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "" + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "" + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "" + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "" + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "" + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "" + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "" + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "" + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "" + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "" + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "" + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "התקשורת עם %s הייתה מוצפנת." + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "" + +#: methods/s3.php:961 +msgid "API secret" +msgstr "" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "" + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "" + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "" + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "" + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "" + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "" + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "" + +#: methods/email.php:69 +msgid "Note:" +msgstr "" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "" + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "" + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "" + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "" + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "" + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "" + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "" + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "" + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "" + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "" + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "" + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "" + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "" + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "" + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "קידומת הטבלה הישנה:" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "" + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "" + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "" + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "" + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "" + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "" + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "" + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "" + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "" + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "" + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "" + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "" + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "" + +#: admin.php:5009 +msgid "Error message" +msgstr "" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "" + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "" + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "" + +#: admin.php:4572 +msgid "Press here to download" +msgstr "" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "" + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "" + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "" + +#: admin.php:4062 +msgid "Save Changes" +msgstr "" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "" + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "" + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "" + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "" + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "" + +#: admin.php:3697 +msgid "click here" +msgstr "" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "" + +#: admin.php:4009 +msgid "Backup directory" +msgstr "" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "" + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "" + +#: admin.php:591 +msgid "Cancel" +msgstr "" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "" + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "לא לכלול את אלה:" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "לכלול בגיבוי הקבצים" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "" + +#: admin.php:3683 +msgid "Monthly" +msgstr "" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "" + +#: admin.php:3681 +msgid "Weekly" +msgstr "" + +#: admin.php:3680 +msgid "Daily" +msgstr "" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "" + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "" + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "" + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "" + +#: admin.php:3418 +msgid "show log" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "" + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "" + +#: admin.php:2654 +msgid "Multisite" +msgstr "" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "" + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "" + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "" + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "" + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "" + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "" + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:570 +msgid "You should:" +msgstr "" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "" + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "" + +#: admin.php:3020 +msgid "refresh" +msgstr "" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "" + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "" + +#: admin.php:229 +msgid "Files" +msgstr "" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "" + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "" + +#: admin.php:2310 +msgid "Version" +msgstr "" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "" + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "" + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "" + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "" + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "" + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "" + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "" + +#: admin.php:2072 +msgid "Download in progress" +msgstr "" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "" + +#: admin.php:2043 +msgid "Download failed" +msgstr "" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "" + +#: admin.php:1854 +msgid "Job deleted" +msgstr "" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "" + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "" + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "" + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "" + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "" + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "" + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "" + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "" + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "" + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "" + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "" + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "" + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "" + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "" + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "" + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "" + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "" + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "" + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "" + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-hu_HU.mo b/plugins/updraftplus/languages/updraftplus-hu_HU.mo new file mode 100644 index 0000000..0d17a11 Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-hu_HU.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-hu_HU.po b/plugins/updraftplus/languages/updraftplus-hu_HU.po new file mode 100644 index 0000000..a946ede --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-hu_HU.po @@ -0,0 +1,6109 @@ +# Translation of UpdraftPlus in Hungarian +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2014-07-28 09:07:28+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: hu\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "" + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "" + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "" + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "" + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "" + +#: addons/webdav.php:91 +msgid "Path" +msgstr "" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "" + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "" + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "" + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "" + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "" + +#: admin.php:2310 +msgid "FAQs" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "" + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "" + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "" + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "" + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "" + +#: methods/ftp.php:355 +msgid "login" +msgstr "" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "" + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "" + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "" + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "" + +#: admin.php:2604 +msgid "Now" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "" + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "" + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "" + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "" + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "" + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "" + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "" + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "" + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "" + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "" + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "" + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "" + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "" + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "" + +#: admin.php:3420 +msgid "stop" +msgstr "" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "" + +#: admin.php:3092 +msgid "this backup set" +msgstr "" + +#: admin.php:3020 +msgid "calculate" +msgstr "" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "" + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "" + +#: admin.php:601 +msgid "Saving..." +msgstr "" + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:557 +msgid "Fetching..." +msgstr "" + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "" + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "" + +#: admin.php:2884 +msgid "Dismiss" +msgstr "" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "" + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "" + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "" + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "" + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "" + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "" + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "" + +#: admin.php:3860 +msgid "File Options" +msgstr "" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "" + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "" + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "" + +#: admin.php:5157 +msgid "settings" +msgstr "" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "" + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "" + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "" + +#: admin.php:442 +msgid "Extensions" +msgstr "" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "" + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "" + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "" + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "" + +#: addons/azure.php:524 +msgid "container" +msgstr "" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "" + +#: addons/azure.php:523 +msgid "optional" +msgstr "" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "" + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "" + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "" + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "" + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "" + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "" + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "" + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "" + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "" + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "" + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "" + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "" + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "" + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "" + +#: restorer.php:767 +msgid "Deferring..." +msgstr "" + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "" + +#: admin.php:3081 +msgid "Deselect" +msgstr "" + +#: admin.php:3080 +msgid "Select all" +msgstr "" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "" + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "" + +#: admin.php:634 +msgid "For backups older than" +msgstr "" + +#: admin.php:633 +msgid "week(s)" +msgstr "" + +#: admin.php:632 +msgid "hour(s)" +msgstr "" + +#: admin.php:631 +msgid "day(s)" +msgstr "" + +#: admin.php:630 +msgid "in the month" +msgstr "" + +#: admin.php:629 +msgid "day" +msgstr "" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "" + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "" + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "" + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "" + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "" + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "" + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "" + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "" + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "" + +#: admin.php:607 +msgid "Update quota count" +msgstr "" + +#: admin.php:606 +msgid "Counting..." +msgstr "" + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "" + +#: admin.php:603 +msgid "Connecting..." +msgstr "" + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "" + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "" + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "" + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "" + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "" + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "" + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "" + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "" + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "" + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "" + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "" + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "" + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "" + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "" + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "" + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "" + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "" + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "" + +#: admin.php:4423 +msgid "Site" +msgstr "" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "" + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "" + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "" + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "" + +#: admin.php:617 +msgid "Deleting..." +msgstr "" + +#: admin.php:616 +msgid "key name" +msgstr "" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "" + +#: admin.php:611 +msgid "Creating..." +msgstr "" + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "" + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "" + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "" + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "" + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "" + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "" + +#: addons/migrator.php:1861 +msgid "key" +msgstr "" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "" + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "" + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "" + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "" + +#: admin.php:608 +msgid "Adding..." +msgstr "" + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "" + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "" + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "" + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "" + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "" + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "" + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "" + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "" + +#: methods/email.php:73 +msgid "configure it here" +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "" + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "" + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "" + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "" + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "" + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "" + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "" + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "" + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "" + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "" + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "" + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "" + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "" + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "" + +#: admin.php:2831 +msgid "Personal support" +msgstr "" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "" + +#: admin.php:2718 +msgid "Get it from" +msgstr "" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "" + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "" + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "" + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "" + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "" + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "" + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "" + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "" + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "" + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "" + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "" + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "" + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "" + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "" + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "" + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "" + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "" + +#: admin.php:4368 +msgid "Backup date" +msgstr "" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "" + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "" + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "" + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "" + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "" + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "" + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "" + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "" + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "" + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "" + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "" + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "" + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "" + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "" + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "" + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "" + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "Ezt a fájlt nem tudtuk feltölteni" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "" + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "Támogatott biztonsági mentés bővítmények: %s" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "Ezt a biztonsági mentést egy másik bővítmény készítette? Ha igen, előszőr át kellene nevezned, hogy felismerhető legyen - kérjük kövesd ezt a linket." + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "Tudj meg többet az inkrementális biztonsági mentésekről" + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "Memória határ" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "újjáépítés" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "Implicit módon csökkentett táblázat: %s" + +#: backup.php:829 +msgid "Incremental" +msgstr "Inkrementál" + +#: backup.php:829 +msgid "Full backup" +msgstr "Teljes biztonsági mentés" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "most a frissítésekkel folytatjuk..." + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "(napló részletek...)" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "Sikeres biztonsági mentés" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "Minden %s órában" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "keresés és csere" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "Gyerünk!" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "A keresés/kicserélés nem vonható vissza - biztos vagy benne, hogy ezt akarod tenni?" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "Ez könnyen tönkreteheti a weboldaladat, tehát használd óvatosan!" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "Kicserélés ezzel:" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "Keresés erre:" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "Adatbázis keresése / kicserélése" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "keresési kifejezés" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "Túl sok adatbázis hiba történt - megszakítás" + +#: backup.php:895 +msgid "read more at %s" +msgstr "olvass többet itt: %s" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "Az UpdraftPlus (ingyenes verzió) által létrehozott email jelentések elhozzák neked a legújabb UpdraftPlus.com híreket" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "Megj.: Ha több WordPress oldalon is feltelepíted az UpdraftPlust, akkor nem használhatod újra a projektet; egy újat kell létrehoznod a Google API konzolban minden egyes oldalnak." + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "Még nem készítettél biztonsági mentést." + +#: admin.php:3872 +msgid "Database Options" +msgstr "Adatbázis Opciók" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "Hibakereső bővítmények:" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "%s (%s használt)" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "Üres tárhely a fiókban:" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "Ez a gomb le van tiltva, mert a biztonsági mentés könyvtár nem írható (lásd a beállításokat)." + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "Létező Biztonsági Mentések" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "Aktuális Állapot" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "Hogy megváltoztasd az alapértelmezett beállításokat, hogy beállítsd az ütemezett mentéseket, hogy a biztonsági mentéseket egy külső tárhelyre küldd át (ajánlott), és egyebek, menj a Beállítások fülre." + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "Nyomd meg a Mentés Most gombot, hogy létrehozz egy biztonsági mentést." + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "Üdvözöl az UpdraftPlus!" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "Ha ide beírsz valamit, az adatbázisok biztonsági mentésének a titkosításához lesz használva. Készíts belőle egy külön feljegyzést és ne veszítsd el, különben az összes biztonsági mentésed használhatatlan lesz. Ez az a kulcs is amivel dekódolhatod a biztonsági mentéseket az adminisztrációs felületen (tehát ha megváltoztatod, akkor az automatikus dekódolás nem fog működni addig, amíg vissza nem állítod)." + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "Tesztelés..." + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "Kapcsolat tesztelése..." + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "Tábla előtag" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "Külső adatbázis biztonsági mentése" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "Külső adatbázis hozzáadása a biztonsági mentéshez..." + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "Ha az adatbázisod extra táblákat tartalmaz, amelyek nem részei ennek a WordPress oldalnak (tudni fogod, ha ez a helyzet áll fenn), akkor aktiváld ezt az opciót, hogy azok is el legyenek mentve." + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "Nem WordPress táblák biztonsági mentése a WordPress adatbázisában" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "Ez az opció lehetővé teszi azon táblák biztonsági mentését a MySQL adatbázisból, amelyek nem tartoznak a WordPress-hez (a rendszer úgy ismeri fel őket, hogy nem tartalmazzák a beállított WordPress előtagot, %s)" + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "Sikertelen kapcsolódás." + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "Sikeres kapcsolódás." + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "%s táblát találtunk; ebből %s a megadott előtaggal." + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "%s táblát találtunk." + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "sikertelen adatbázis kapcsolódási kísérlet" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "adatbázis név" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "kiszolgáló" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "felhasználó" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "Külső adatbázis (%s)" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "Kövesd ezt a linket a Google API Console-hoz és ott aktiváld a Drive API-t, valamint hozz létre egy Client ID-t az API Access résznél." + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "nem sikerült elérni a szülő mappát" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "Azonban további hozzáférési kísérletek sem sikerültek:" + +#: admin.php:4499 +msgid "External database" +msgstr "Külső adatbázis" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "Ez minden bővítmény hibakeresési kimenetét meg fogja jeleníteni ezen a képernyőn - kérünk ne lepődj meg mikor látod ezeket." + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "Több adatbázis biztonsági mentése" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "Előszőr is, írd be a dekódoló kulcsot" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "Itt manuálisan dekódolhatsz egy titkosított adatbázist." + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "Külső adatbázisok biztonsági mentésére is alkalmas." + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "Nem akarod, hogy sikeresen kémkedjenek utánad? Az UpdraftPlus Premium titkosíthatja adatbázisod biztonsági mentését." + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "használd az UpdraftPlus Premium-t" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "A dekódolás nem sikerült. Az adatbázis fájl titkosítva van." + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "Csak a WordPress adatbázist lehet visszaállítani; a külső adatbázist manuálisan kell kezelned." + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "Egy hiba történt az első %s parancsnál - megszakítás folyamatban" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "Sikertelen kapcsolódás: ellenőrizd le a hozzáférési adatokat, azt, hogy az adatbázis szerver működik, valamint hogy a hálózati kapcsolat nem tűzfal mögötti-e." + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "sikertelen adatbázis kapcsolódási kísérlet." + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "Figyelem: az adatbázis home URL-je (%s) különböző attól, mint amire számítottunk (%s)" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "Az útvonal nevek kis- és nagybetű érzékenyek itt: %s." + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "Ha üresen hagyod, akkor a biztonsági mentés a te %s gyökérbe lesz helyezve" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "pl. %s" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "Ha a könyvtár még nem létezik, akkor létre lesz hozva." + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "Add meg az útvonalat a(z) %s könyvtárhoz, melyet itt szeretnél használni." + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "Konténer" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "Hagyd ezt üresen és az alapértelmezett lesz kiválasztva." + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "Bérlő" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "Kövesd ezt a linket a még több információért" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "hitelesítés URI" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "Szerezd meg a hozzáférési adatokat az OpenStack Swift szolgáltatódtól és utána válassz egy konténer nevet, amit a tároláshoz használsz majd. Ez a konténer létre lesz hozva, ha esetleg még nem létezik." + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "Nem sikerült a(z) %s letöltése" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "Nem sikerül a letöltés" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "nem sikerült a fájlok listázása" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "Nem sikerült feltölteni: %s" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "Siker:" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "Miután elmentetted a beállításaidat (megnyomva a 'Változtatások Mentése' gombot), gyere vissza ide és klikkelj erre a linkre, hogy teljes legyen a hitelesítés a(z) %s rendszerével." + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "(Úgy tűnik már hitelesített vagy)." + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "Dropbox" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "HItelesítés ezzel: %s" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "Hiba a távoli fájl letöltésénél: Nem sikerült a letöltés" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "Régió: %s" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "%s hiba - elértük a konténert, de nem sikerült létrehozni egy fájlt benne" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "A(z) %s objektum nem található" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "Nem lehet megnyitni a(z) %s konténert" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "%s hiba - nem sikerült elérni a konténert" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "Fiók tulajdonos neve: %s." + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "Ahhoz, hogy egy tetszőleges mappa nevet állíthass be, az UpdraftPlus Premium-t kell használnod." + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "Ez egy belső Google Drive ID (azonosító) szám " + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "Ez NEM egy mappa név." + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "Mappa" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "%s letöltés: nem sikerült - nem találtuk a fájlt" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "Név: %s." + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "Google Drive fájl listázás: nem sikerült elérni a szülőmappát" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "A te %s verziód: %s." + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "Meg kell majd kérned a web tárhely szolgáltatódat, hogy frissítsen." + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "Ez a távoli tárolási módszer (%s) PHP %s-t vagy újabbat igényel." + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "A téma könyvtárt (%s) nem találtuk, de egy kis-betűs verzió létezik; ennek megfelelő adatbázis frissítési opció" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "Hívás" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "Fetch" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "Ehhez a funkcióhoz %s verzió %s vagy újabb szükséges" + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "Elegant Themes téma építő bővítmény adatokat észleltünk: ideiglenes mappa visszaállítása" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "%s fájlok ki lettek csomagolva" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "Nem sikerült az archívumot kicsomagolni" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "Hiba - nem sikerült letölteni a fájlt" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "Lokális mappa újraszkennelése új biztonsági mentési szettek után" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "Frissítened kellene az UpdraftPlus-t, hogy biztosan egy olyan verziód legyen, amelyik tesztelve volt kompatibilitás szempontjából." + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "Tesztelve volt egészen a %s verzióig." + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "A feltelepített UpdraftPlus Backup/Restore verzió nem volt tesztelve ezen a WordPress változaton (%s)." + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "jelszó/kulcs" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "Kulcs" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "A te bejelentkezésed vagy jelszó-, vagy kulcs alapú - csak az egyiket kell beírnod, nem mindkettőt." + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "A megadott kulcs nem volt megfelelő formátumú, vagy korrupt volt." + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "SCP/SFTP jelszó/kulcs" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "Fájl biztonsági mentés (létrehozva %s által)" + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "Fájl és adatbázis WordPress biztonsági mentés (létrehozva %s által)" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "Biztonsági mentés létrehozva %s által." + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "Adatbázis (létrehozva %s által)" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "ismeretlen forrás" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "Távoli tárhely újraszkennelése" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "Biztonsági mentés fájlok feltöltése" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "Ez a biztonsági mentés %s által lett készítve és be lehet importálni." + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "Olvasd el ezt az oldalt - találsz rajta egy útmutatót a lehetséges okokról és javítási módokról." + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "A WordPressnek több (%d) lejárt ütemezett feladata van. Hacsak ez nem egy fejlesztési oldal, ez valószínüleg azt jelenti, hogy a WordPress telepítésed ütemezője nem működik." + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "Ha ezt a biztonsági mentést egy másik biztonsági mentés bővítmény készítette, akkor az UpdraftPlus Premium segíthet neked." + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "Habár, az UpdraftPlus archívumok standard zip/SQL fájlok - tehát ha biztos vagy benne, hogy a fájlodnak helyes formátuma van, átnevezheted úgy, hogy megfeleljen a mintának." + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "Ez a fájl nem úgy tűnik, hogy egy UpdraftPlus biztonsági mentés archívum lenne (azok a fájlok .zip vagy .gz formátumuak és olyan neveik vannak, mint: backup_(idő)_(oldal név)_(kód)_(típus).(zip|gz))." + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "Ezt a biztonsági mentést egy ismeretlen forrás készítette (%s) - nem lehet visszaállítani." + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "Nem találtuk a WordPress tartalom mappát (wp-content) ebben a zip fájlban" + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "Az UpdraftPlus ezen verziója nem tudja hogyan kezelje ezt a típusú külső biztonsági mentést" + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "%s visszaadott egy nem várt HTTP választ: %s" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "Az ehhez a fájl hozzáférési metódushoz használt UpdraftPlus modul (%s) nem támogatja a fájlok listázását" + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "Nem találtunk beállításokat" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "Hozzáadódott egy vagy több biztonságos mentés a külső tárhely átszkennelése után; vedd figyelembe, hogy ezek nem lesznek automatikusan törölve a \"megőrzés\" beállítások által; ha/amikor ki szeretnéd törölni őket, ezt manuálisan kell majd megtedd." + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "Külső- és lokális tárhelyek újraszkennelése biztonsági mentés csomagok után..." + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "(Bővebben)" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "Multisite útvonalak beállítása" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "Naplózzon le minden üzenetet a syslog-ba (valószínű csak szerver adminisztrátorok akarják ezt)" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "Újabb hozzáadása..." + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "Eltávolítás" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "Más %s GYIK." + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "Jelöld be ezt, ha szeretnél több információt és e-mailt kapni a biztonsági mentési folyamatról - hasznos ha valami nem úgy történik, ahogy kellene." + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "Ha több fájlt/könyvtárt írsz be, akkor válaszd el őket egy vesszővel. Legfelsőbb szintű entitások esetében helyettesítőként használhatsz egy * -t a bejegyzés elején vagy a végén." + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "Egyedi tartalom típus kezelő bővítmény adat találtatott: opciós gyorsítótár kiürítése" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "A tárhely szolgáltatódnak először engedélyeznie kell ezeket a funkciókat, mielőtt %s működhetne." + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "A webszervered PHP telepítésének következő funkciói le vannak tiltva: %s." + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "titkosított FTP (explicit titkosítás)" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "titkosított FTP (implicit titkosítás)" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "normál nem-titkosított FTP" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "A biztonsági mentést létrehozta:" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "Ezen az oldalon lehet igényelni" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "Hogy fenntartsd a hozzáférést a támogatáshoz, kérünk hosszabbíts." + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "Hamarosan le fog járni a fizetett hozzáférésed az UpdraftPlus támogatáshoz." + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "Hogy visszaszerezd, kérünk újítsd meg az előfizetést." + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "Lejárt a fizetett hozzáférésed az UpdraftPlus támogatáshoz." + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "Hamarosan le fog járni a fizetett hozzáférésed az UpdraftPlus-hoz ezen a weboldalon." + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "Hogy megtartsd a hozzáférésed a frissítésekhez (inkluszív jövőbeli funkciók és kompatibilitás a jövőbeli WordPress verziókkal) valamint a támogatáshoz, kérünk hosszabíts." + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "Hamarosan le fog járni a fizetett hozzáférésed az UpdraftPlus firssítésekhez a(z) %s a(z) %s kiegészítőkhöz ezen a weboldalon." + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "Lejárt a fizetett hozzáférésed az UpdraftPlus frissítésekhez a(z) %s kiegészítőkhöz ezen a weboldalon." + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "Hogy visszaszerezd a frissítésekhez való hozzáférést (inkl. jövőbeli fejlesztések és kompatibilitás a jövőbeli WordPress verziókkal), kérünk, hogy újítsd meg az előfizetésed." + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "Lejárt a fizetett hozzáférésed az UpdraftPlus frissítésekhez ezen a weboldalon. Többé nem fogsz frissítéseket kapni az UpdraftPlus-hoz." + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "Eltüntetés a fő műszerfalról (%s hétig)" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "Sikeres volt a kétszeres tömörítés visszavonására tett kísérlet." + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "Sikertelen volt a kétszeres tömörítés visszavonására tett kísérlet." + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "Úgy tűnik, hogy az adatbázis fájl kétszeresen lett tömörítve - valószínű a weboldal, ahonnan letöltötted, egy nem jól konfigurált webszerveren található." + +#: admin.php:1528 +msgid "Constants" +msgstr "Állandók" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "Nem sikerült kinyitni az adatbázis fájlt az olvasáshoz:" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "Nem találtunk adatbázis táblát" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "kérünk várdd meg a programált kísérletet" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "" + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "" + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "" + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "" + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "" + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "" + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "" + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "" + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "" + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "" + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "" + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "" + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "" + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "" + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "" + +#: admin.php:556 +msgid "Trying..." +msgstr "" + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "" + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "" + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "" + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "" + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "" + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "" + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "" + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "" + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "" + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "" + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr "" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr "" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "" + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "" + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "" + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "" + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "" + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "" + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "" + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "" + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "" + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "" + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "" + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "" + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "" + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "" + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "" + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "" + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "" + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "" + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "" + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "" + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "" + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "" + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "" + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "" + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "" + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "" + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "" + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "" + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "" + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "" + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "" + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "" + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "" + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "" + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "" + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "" + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "" + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "" + +#: admin.php:3359 +msgid "table: %s" +msgstr "" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "" + +#: restorer.php:646 +msgid "file" +msgstr "" + +#: restorer.php:639 +msgid "folder" +msgstr "" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "" + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "" + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "" + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "" + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "" + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "" + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "" + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "" + +#: admin.php:2310 +msgid "More plugins" +msgstr "" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "" + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "" + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "" + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "" + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "" + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "" + +#: admin.php:584 +msgid "Upload error" +msgstr "" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "" + +#: admin.php:582 +msgid "Upload error:" +msgstr "" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "" + +#: admin.php:572 +msgid "Download to your computer" +msgstr "" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "" + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "" + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "" + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "" + +#: admin.php:563 +msgid "Warnings:" +msgstr "" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "" + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "" + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "" + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "" + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "" + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "" + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "" + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "" + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "" + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "" + +#: admin.php:4836 +msgid "Final checks" +msgstr "" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "" + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "" + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "" + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "" + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "" + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "" + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "" + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "" + +#: restorer.php:939 +msgid "Files found:" +msgstr "" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "" + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "" + +#: admin.php:4908 +msgid "file is size:" +msgstr "" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "" + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "" + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "" + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "" + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "" + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "" + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "" + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "" + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "" + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "" + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "" + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "" + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "" + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "" + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "" + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "" + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "" + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "" + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "" + +#: admin.php:596 +msgid "Close" +msgstr "" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "" + +#: admin.php:576 +msgid "PHP information" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "" + +#: admin.php:2627 +msgid "Get it here." +msgstr "" + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "" + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "" + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "" + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "" + +#: admin.php:2304 +msgid "Premium" +msgstr "" + +#: admin.php:2305 +msgid "News" +msgstr "" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "" + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "" + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "" + +#: admin.php:880 +msgid "Notice" +msgstr "" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "" + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "Tárolás itt:" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "" + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "" + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "" + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "" + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "Blog feltöltések" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "Kötelező bővítmények" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "Nincs joga ehhez az oldalhoz való hozzáféréshez." + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "Nincs elegendő joga, hogy hozzáférjen ehhez az oldalhoz." + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "Multisite installáció" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "a következő alkalomtól kezdve:" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "hiba: a port számnak egésznek kell legyen" + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "jelszó" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "felhasználónév" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "szerver név" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "Melyik könyvtárba váltsunk belépés után - ez gyakran relatív a kezdő könyvtárjához" + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "Könyvtár elérési út" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "Jelszó" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "Port" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "Szerver" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "%s hiba: Nem sikerült a letöltés" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "Ellenőrizze hozzáférési jogait a fájlokhoz: Nem sikerült létrehozni és belépni:" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "%s nem található" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "" + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "" + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "" + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "" + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "" + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "" + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "Hiba: Nem sikerült fájl létrehozni abban a könyvtárban - kérem ellenőrizze a hitelesítési információit" + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "Nem sikerült" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "WebDAV URL" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "Helyi fájl írási hiba: Nem sikerült a letöltés" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "Hiba a távoli fájl megnyitásánál: Nem sikerült a letöltés" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "Darab %s: %s hiba történt" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "Nem található ilyen beállítás: %s" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "Hiba: Bár sikerült belépni, de nem sikerült fájlt létrehozni a megadott könyvtárban." + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "Siker: Sikerült belépni, és megerősítést nyert, hogy létre tudunk hozni fájlt a megadott könyvtárban (hozzáférés típusa:" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "Hiba: Nem sikerült belépni a megadott hitelesítési információkkal." + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "Hiba: Nem adta meg a szerver adatokat." + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "Szükséges, hogy már létezzen" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "Ha titkosítást kíván alkalmazni (pl. érzékeny üzleti adatokat tárol), elérhető egy kiterjesztés." + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "Csak a nem titkosított FTP-t támogatja az UpdraftPlus." + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "bár a visszakapott információ egy része nem a vártnak megfelelő - sokmindentől függ" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "sikeresen hitelesítette %s fiókját" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "van rá kiterjesztés." + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "Ha több WordPress honlapot mentene ugyanabba a Dropbox-ba, és almappákba kívánja szervezni azokat," + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "A mentések ide kerültek:" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "Almappákat kíván használni?" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "hiba: nem sikerült feltölteni a fájlt ide: %s (nézze meg a naplót a továbbiakért)" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "Úgy tűnik, nem hitelesített a Dropbox-szal." + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "" + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "" + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "Sikerült hozzáférni a bucket-hez (csoporthoz), és létrehozni fájlokat benne." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "Sikerült hozzáférni a bucket-hez (csoporthoz), de a fájl létrehozási kísérlet meghiúsult." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "Hiba" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "Hiba: Nem adott meg bucket (csoport) részleteket" + +#: methods/s3.php:961 +msgid "API secret" +msgstr "API titkos kulcs (secret)" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "" + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "" + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "" + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "" + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "" + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "" + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "" + +#: methods/email.php:69 +msgid "Note:" +msgstr "Jegyzet:" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "WordPress mentés" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "" + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "" + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "Felhasználónév" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "API kulcs" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "Hiba: Nincs %s megadva" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "" + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "" + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "Próba beállítás %s" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "Hiba a helyi fájl megnyitásánál: Nem sikerült a letöltés" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "%s hiba: Nem sikerült feltölteni" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "Miután elmentette a beállításokat (a 'Változások mentése'-re való kattintással), jöjjön vissza ide, és kattintson a hivatkozásra a Google-lel való hitelesítéshez." + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "Hitelesítés a Google-lel" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "kliens titkos kulcs" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "Ha a Google az üzeni, hogy \"invalid_client\", akkor helytelen kliens ID-t adott meg itt." + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "kliens ID" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "A következő webcímet adja meg mint hitelesített átirányítási URI-t, amikor (a \"More Options\" résznél) kérik." + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "Válassza azt, hogy 'Web Application' mint alkalmazás típus." + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "Bővebb segítségért képernyőképeket beleértve kattintson erre a hivatkozásra. Az alább található leírás elegendő a haladó felhasználóknak." + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "" + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "A fiók nincs hitelesítve." + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "Nem sikerült a feltöltés ide: %s" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "" + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "Még nem szerzett be hozzáférési token-t (vezérlőjelet) a Google-től - hitelesítenie vagy újra hitelesítenie kell a kapcsolatát a Google Drive-val." + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "" + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "Siker" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "Hitelesítési hiba" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "Nem jött frissítő token (vezérjel) a Google-től. Ez gyakran azt jelenti, hogy kliens titkos kulcsot helytelenül írta be, vagy még nem hitelesítette újra (alul) mióta helyesbítette. Ellenőrizze újra, aztán kattintson a hivatkozásra az újra hitelesítéshez. Végül, ha az nem múködik, a Haladó mód bekapcsolása után kattintson a Minden beállítás kitörlése gombra, és kérjen egy úgy Google kliens ID-t, titkos kulcsot." + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "kattintson erre a hivatkozásra a beszerzéshez" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "%s támogatás elérhető mint kiterjesztés" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "Nincs installálva az UpdraftPlus %s kiterjesztés - szerezze be innen: %s" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "" + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "" + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "" + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "Nem sikerült a munkakönyvtárat kitörölni visszaállítás után." + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "" + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "Szemét eltakarítása..." + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "" + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "" + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "" + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "Mentés kicsomagolása..." + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "" + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "A mentési fájl nem elérhető" + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "" + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "A visszaállításhoz szükséges egyik fájl nem található" + +#: admin.php:5009 +msgid "Error message" +msgstr "Hiba üzenet" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "A mentési bejegyzés nem tartalmaz információt ennek a fájlnak az eredeti méretéről." + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "Az archívum várható mérete:" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "FÉLBE SZAKADT: Nem található információ, melyik elemet állítsuk vissza." + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "UpdraftPlus visszaállítás: Folyamatban" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "Ez a mentés nincs a mentési előzményekben - a visszaállítás félbe szakadt. Időbélyeg:" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "Miután rákattintott erre a gombra, választhat, hogy melyik összetevőt állítja vissza" + +#: admin.php:4572 +msgid "Press here to download" +msgstr "Kattintson ide letöltéshez" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "" + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "" + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "" + +#: admin.php:4062 +msgid "Save Changes" +msgstr "Változások mentése" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "" + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "" + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "" + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "" + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "Ha ez sikertelen, ellenőrizze a webszerveren a hozzáférési jogokat, vagy adjon meg másik könyvtárat, ami írható a webkiszolgáló folyamat által." + +#: admin.php:3697 +msgid "click here" +msgstr "kattintson ide" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "vagy ezt a beállítást alaphelyzetbe állítsuk" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "A megadott mentési könyvtár írható, ami helyes." + +#: admin.php:4009 +msgid "Backup directory" +msgstr "Mentési könyvtár" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "Törölje a helyi mentéseket" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "ha ide kattint, további beállításokat jeleníthet meg; ne bajlódjon ezzel, hacsak nincs valami probléma, vagy kiváncsi." + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "Mutassa a haladó beállításokat" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "Haladó beállítások" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "Hibakereső mód" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "Haladó / Hibakereső beállítások" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "" + +#: admin.php:591 +msgid "Cancel" +msgstr "Mégsem" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "Egyik sem" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "Válasszon távoli tárhelyet" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "Adatbázis titkosítási kulcs" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "E-mail" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "" + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "pl. ha a webszervere nappal terhelt és éjjel kívája a mentést futtatni" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "Hogy beállítsa, milyen időpontban kerül sor a mentésre," + +#: admin.php:3683 +msgid "Monthly" +msgstr "Havonta" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "Kéthetente" + +#: admin.php:3681 +msgid "Weekly" +msgstr "Hetente" + +#: admin.php:3680 +msgid "Daily" +msgstr "Naponta" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "Napló fájl letöltése" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "" + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "" + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "" + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "Törlés" + +#: admin.php:3418 +msgid "show log" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "Ez minden UpdraftPlus beállítást kitöröl - biztos benne?" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "Pillanatnyi memória használat" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "Memória használati csúcsérték" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "Kérem nézze meg az UpdraftPlus Premium-ot, vagy a Multisite kiterjesztést." + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "Szüksége van WordPress Multisite támogatásra?" + +#: admin.php:2654 +msgid "Multisite" +msgstr "Multisite" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "" + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "" + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "" + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "" + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "" + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "Válassza ki a visszaálítandó összetevőket" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "" + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "Mentés visszaállítása innen:" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "Mentés visszaállítása" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:570 +msgid "You should:" +msgstr "" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "számítás..." + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "UpdraftPlus - Mentések feltöltése" + +#: admin.php:3020 +msgid "refresh" +msgstr "frissítés" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "Az UpdraftPlus által használt webszerver lemezterület." + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "Google Drive" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "Ha ezt használja, kapcsolja ki a Turbo/Road módot." + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "Opera böngésző" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "Több feladat:" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "(Még semmit sem került naplózásra)" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "Utolsó log sor" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "Visszaállítás" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "Mentés most" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "Adatbázis" + +#: admin.php:229 +msgid "Files" +msgstr "Fájlok" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "Következő ütemezett mentések" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "A fájl mentésekkel egyidőben" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "Nincs semmi ütemezve" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "Ez a felület Javascript-et használ. Vagy kapcsolja be a böngészőjében a Javascript futtatását, vagy használjon Javascript-et futtatni képes böngészőt." + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "Javascript figyelmeztetés" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "Régi könyvtárak törlése" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "Az aktuális limit:" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "A mentése visszaállításre került." + +#: admin.php:2310 +msgid "Version" +msgstr "Verzió" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "A vezető fejlesztő honlapja" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "A beállításai kitörlésre kerültek." + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "A Backup könyvtárat sikerült létrehozni." + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "A Backup könyvtárat nem sikerült létrehozni" + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "A régi könyvtárak eltávolítása valamilyen ok miatt nem sikerült. Kézzel eltávolíthatja." + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "A régi könyvtárakat sikerült eltávolítani." + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "Régi könyvtárak eltávolítása" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "Vissza az UpdraftPlus beállításához" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "Akciók" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "A visszaállítás sikerült!" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "" + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "Helytelen fájlnév - ez a fájl nem UpdraftPlus fájlnak néz ki" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "Nem létezik helyi másolat." + +#: admin.php:2072 +msgid "Download in progress" +msgstr "" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "" + +#: admin.php:2043 +msgid "Download failed" +msgstr "" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "Hiba" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "" + +#: admin.php:1854 +msgid "Job deleted" +msgstr "" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "" + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "Még semmit sem került naplózásra" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "" + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "" + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "UpdraftPlus nem támogatja a %s előtti WordPress verziókat. Talán működni fog, de ha nem, akkor kérjük vegye figyelembe, hogy nem kaphat támogatást, amíg nem frissíti a WordPress-t." + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "Kevesebb, mint %s szabad terület áll rendelkezésre a lemezen, ahol az UpdraftPlus be van állítva, hogy mentéseket készítsen. UpdraftPlus kifuthat az üres területből. Lépjen kapcsolatba a webszerver rendszergazdájával (pl. a tárhely szolgáltatójával), hogy megoldják ezt a problémát." + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "Figyelmeztetés" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "Kiterjesztések / Pro támogatás" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "Beállítások" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "Engedélyezett fájlok" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "Nem sikerült létrehozni a %s zip-et. Tekintse meg a log fájlt további információkért." + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "Végtelen rekurzió: nézze meg a naplót további információért" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "Nézze meg az UpdraftPlus.Com webhelyet segítségért, kiterjesztésekért és támogatásért" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "Még több funkcióra van szüksége és támogatásra? Nézze meg az UpdraftPlus Premium-ot" + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "Kérem segítsen az UpdraftPlus-nak egy pozitív hangú ismertető írásával a wordpress.org-on" + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "Kedveli az UpdraftPlus-t és van egy perce?" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "Nincs meg a fájl" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "" + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "" + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "Nem sikerült írásra megnyitni a mentés fájlt" + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "Nem sikerült menteni a mentés előzményeket mert nincs mentés tömb. A mentés minden bizonnyal nem sikerült." + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "A backup könyvtár (%s) nem írható vagy nem létezik." + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "A WordPress mentés teljesen elkészült" + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "A mentési kísérlet befejeződött, látszólag sikertelenül." + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "Úgy látszik, a mentés teljesen sikerült." + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "Titkosítási hiba történt az adatbázis titkosítása közben. A titkosítás félbe szakadt." + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "Nem sikerült fájl létrehozni a backup könyvtárban. A mentés félbe szakadt - ellenőrizze az UpdraftPlus beállításokat." + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "Egyéb" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "Feltöltések" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "Témák" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "Bővítmények" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "" + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "A log fájlt nem lehet olvasni." + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "UpdraftPlus értesítés:" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "UpdraftPlus Backups" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-id_ID.mo b/plugins/updraftplus/languages/updraftplus-id_ID.mo new file mode 100644 index 0000000..910c382 Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-id_ID.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-id_ID.po b/plugins/updraftplus/languages/updraftplus-id_ID.po new file mode 100644 index 0000000..6d82e09 --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-id_ID.po @@ -0,0 +1,6109 @@ +# Translation of UpdraftPlus in Indonesian +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-09-20 03:39:05+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: id\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "" + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "" + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "" + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "" + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "" + +#: addons/webdav.php:91 +msgid "Path" +msgstr "" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "" + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "" + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "" + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "" + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "" + +#: admin.php:2310 +msgid "FAQs" +msgstr "Pertanyaan Umum" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "" + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "" + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "" + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "" + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "Pengunggahan kemungkinan gagal: Batas %s untuk satu berkas adalah %s, dan berkas ini berukuran %s GB (%d bytes)" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "Ini biasanya dikarenakan oleh firewall - coba nonaktifkan SSL dalam pengaturan lanjutan, dan coba lagi." + +#: methods/ftp.php:355 +msgid "login" +msgstr "masuk" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "Ketahui bahwa server mail terkadang memiliki batas ukuran; biasanya sekitar %s MB; cadangan lebih besar dari batas kemungkinan tidak akan terkirim." + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "Arsip cadangan ini berukuran %s MB - pengiriman melalui email mungkin gagal (beberapa server email mengijinkan ukuran lampiran ini). Jika terjadi, anda harus mengganti menggunakan metode penyimpanan lain." + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "Ukuran: %s MB" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "Lainnya (mohon tentukan - yaitu. situs yang Anda pasangkan dasbor UpdraftCental" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "yaitu. anda sudah memiliki akun disana" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "UpdraftPlus akan memecah arsip cadangan jika melebihi ukuran berkas ini. Nilai default adalah %s megabytes. Ingat untuk menyisakan kapasitas fija web-server memiliki batas ukuran harddisk (misal. batas 2 GB / 2048 MB pada beberapa server/file system 32-bit)." + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "Gratis 1GB untuk UpdraftPlus Vault" + +#: admin.php:2604 +msgid "Now" +msgstr "Sekarang" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "Anda harus mengaktifkan %s untuk membuat pranala (misal. %s) bekerja" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "(sentuh di icon untuk memilih atau membatalkan pilihan)" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "%s per tahun" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "atau (diskon tahunan)" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "Tidak ditemukan sambungan Vault untuk situs ini (apakah sudah dipindahkan?); mohon putuskan dan sambungkan ulang." + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "Berkas tersebut tidak ditemukan, atau tidak dapat dibaca." + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "UpdraftCentral (Remote Control)" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "mengambil..." + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "Lihat log events UpdraftCentral terbaru" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "URL mothership" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "Masukkan deskripsi" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "Deskripsi" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "Buat kunci baru" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "Hapus..." + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "Dibuat:" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "Akses situs ini sebagai user:" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "Belum ada kunci yang dibuat." + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "Detail" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "Deskripsi kunci" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "Kunci dibuat, tetapi tidak berhasil mendaftarkannya dengan %s - mohon coba lagi nanti." + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "URL yang dimasukan tidak sah" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "Tutup" + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "Sambungan tampaknya sudah dilakukan." + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "Anda harus mengunjungi tautan ini dalam peramban dan sesi yang sama dengan saat anda membuat kunci." + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "Anda harus mengunjungi URL ini dalam peramban dan sesi yang sama dengan saat anda membuat kunci." + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "Anda belum masuk ke situs WordPress ini di peramban web anda." + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "Kunci acuan tidak diketahui." + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "Sambungan UpdraftCentral belum dilakukan." + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "Sambungan UpdraftCentral berhasil dilakukan." + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "Sambungan UpdraftCentral" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "Pencadangan dibatalkan oleh user" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "" + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "" + +#: admin.php:3420 +msgid "stop" +msgstr "" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "" + +#: admin.php:3092 +msgid "this backup set" +msgstr "" + +#: admin.php:3020 +msgid "calculate" +msgstr "" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "" + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "" + +#: admin.php:601 +msgid "Saving..." +msgstr "Menyimpan..." + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "Galat: server mengirimkan respon yang tidak dapat dimengerti." + +#: admin.php:557 +msgid "Fetching..." +msgstr "Mengambil..." + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "Asia Pacific (Seoul)" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "Barracuda telah menutup Copy.Com per 1 Mei 2016. Lihat:" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "" + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "" + +#: admin.php:2884 +msgid "Dismiss" +msgstr "" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "" + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "" + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "" + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "" + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "" + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "" + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "" + +#: admin.php:3860 +msgid "File Options" +msgstr "" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "" + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "" + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "" + +#: admin.php:5157 +msgid "settings" +msgstr "" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "" + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "" + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "" + +#: admin.php:442 +msgid "Extensions" +msgstr "" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "" + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "" + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "" + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "Anda tidak memiliki akses bucket ini" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "Eropa Barat" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "Asia Pasifik Barat" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "Amerika Serikat Barat" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "Amerika Serikat Timur" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "Amerika Serikat Timur" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "Amerika Serikat Tengah" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "Uni Eropa" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "Asia Pasifik" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "lokasi multi-region" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "Amerika Serikat" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "Nearline" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "Ketersedian yang kurang tahan lama" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "Standard" + +#: addons/azure.php:524 +msgid "container" +msgstr "container" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "Anda dapat memasukan path dari folder virtual %s apapun yang Anda ingin gunakan disini." + +#: addons/azure.php:523 +msgid "optional" +msgstr "opsional" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "Prefix" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "Lihat panduan Microsoft tentang penamaan container dengan mengikuti tautan berikut." + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "Jika %s belum ada, maka akan dibuat." + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "Masukan path dari %s yang Anda ingin gunakan disini." + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "Ini bukan akun Azure anda - lihat instruksi jika memerlukan bantuan lebih lanjut." + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "Nama Akun" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "Azure" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "Buat kredensial Azure di console pengembang Azure Anda." + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "Tidak dapat membuat container" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "Tidak dapat mengakses container" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "" + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "" + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "" + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "" + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "" + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "" + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "Anda harus menyimpan dan mengautentikasi sebelum dapat mencoba pengaturan Anda." + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "Anda belum mendapatkan access token dari Google - Anda harus mengautorisasi atau mengulang autorisasi sambungan Anda ke Google Cloud." + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "Anda tidak memiliki akses bucket ini." + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "Google Cloud" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "Kesalahan Service %s." + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "" + +#: restorer.php:767 +msgid "Deferring..." +msgstr "" + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "" + +#: admin.php:3081 +msgid "Deselect" +msgstr "" + +#: admin.php:3080 +msgid "Select all" +msgstr "" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "" + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "" + +#: admin.php:634 +msgid "For backups older than" +msgstr "" + +#: admin.php:633 +msgid "week(s)" +msgstr "" + +#: admin.php:632 +msgid "hour(s)" +msgstr "" + +#: admin.php:631 +msgid "day(s)" +msgstr "" + +#: admin.php:630 +msgid "in the month" +msgstr "" + +#: admin.php:629 +msgid "day" +msgstr "" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "Tambahkan aturan penyimpanan..." + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "" + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "" + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "" + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "" + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "" + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "" + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "" + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "" + +#: admin.php:607 +msgid "Update quota count" +msgstr "" + +#: admin.php:606 +msgid "Counting..." +msgstr "" + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "" + +#: admin.php:603 +msgid "Connecting..." +msgstr "" + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "" + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "" + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "" + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "" + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "" + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "" + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "" + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "Gagal menghapus:" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "" + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "" + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "" + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "" + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "" + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "" + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "" + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "" + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "" + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "" + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "" + +#: admin.php:4423 +msgid "Site" +msgstr "" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "" + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "" + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "" + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "" + +#: admin.php:617 +msgid "Deleting..." +msgstr "" + +#: admin.php:616 +msgid "key name" +msgstr "" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "" + +#: admin.php:611 +msgid "Creating..." +msgstr "" + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "" + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "" + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "" + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "" + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "" + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "" + +#: addons/migrator.php:1861 +msgid "key" +msgstr "" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "" + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "" + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "" + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "" + +#: admin.php:608 +msgid "Adding..." +msgstr "" + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "" + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "" + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "" + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "" + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "Untuk bantuan lebih lanjut, termasuk screenshot, ikuti tautan berikut." + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "" + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "" + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "" + +#: methods/email.php:73 +msgid "configure it here" +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "" + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "" + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "" + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "" + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "" + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "" + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "" + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "" + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "" + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "" + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "(bersamaan dengan pencadangan berkas)" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "" + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "" + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "" + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "" + +#: admin.php:2831 +msgid "Personal support" +msgstr "" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "" + +#: admin.php:2718 +msgid "Get it from" +msgstr "" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "" + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Cadangkan (yang berlaku) plugin, tema dan database Wordpress dengan UpdraftPlus sebelum memperbarui" + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "" + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "" + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "" + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "" + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "" + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "" + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "Pencadangan otomatis sebelum pembaruan" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "WordPress core (saja)" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "" + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "" + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "" + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "" + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "" + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "" + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "" + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "" + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "" + +#: admin.php:4368 +msgid "Backup date" +msgstr "" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "" + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "" + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "" + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "" + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "" + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "" + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "" + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "" + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "" + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "" + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "" + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "" + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "" + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "" + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "" + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "" + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "" + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "" + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "" + +#: backup.php:829 +msgid "Incremental" +msgstr "" + +#: backup.php:829 +msgid "Full backup" +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "sedang memproses pembaruan..." + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "(lihat log...)" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "Pencadangan berhasil" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "" + +#: backup.php:895 +msgid "read more at %s" +msgstr "" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "" + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "" + +#: admin.php:3872 +msgid "Database Options" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "" + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "" + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "" + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "" + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "" + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "" + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "" + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "" + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "" + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "" + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "" + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "" + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "" + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "" + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "Namun, upaya akses selanjutnya gagal:" + +#: admin.php:4499 +msgid "External database" +msgstr "" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "" + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "" + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "" + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "" + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "" + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "" + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "" + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "" + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "Dalam %s, nama path case sensitive." + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "Jika Anda mengosongkannya, maka cadangan akan ditempatkan di root %s Anda" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "misal. %s" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "Jika folder belum ada, maka akan dibuat." + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "Masukan path folder %s yang Anda ingin gunakan disini." + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "Container" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "" + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "" + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "Berhasil:" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "Setelah anda menyimpan pengaturan Anda (dengan mengklik 'Simpan Perubahan' di bawah), kembalilah kesini dan klik tautan berikut untuk menyelesaikan autentikasi dengan %s" + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "(Anda sudah terautentikasi)" + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "Autentikasi dengan %s" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "Objek %s tidak ditemukan" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "Nama pemegang akun: %s" + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "" + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "" + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "Folder" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "Pengunduhan %s: gagal: berkas tidak ditemukan" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "NamA: %s." + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "" + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "" + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "" + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "" + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "" + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "Kunci" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "" + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "" + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "" + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "" + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "" + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "" + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "" + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "" + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "" + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "" + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "" + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "" + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "" + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "" + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "" + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "" + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "" + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "" + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "" + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "" + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "" + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "" + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "" + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "" + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "" + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "" + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "" + +#: admin.php:1528 +msgid "Constants" +msgstr "" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "" + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "Akun penuh: akun %s anda hanya memiliki sisa %d bytes, tapi file yang akan diunggah memiliki sisa %d bytes (total ukuran: %d bytes)" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "" + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "" + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "" + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "" + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "" + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "" + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "" + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "" + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "" + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "Alamat Email User Baru" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "Username User Baru" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "Kunci API Admin" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "Username Admin" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "Akun Rackspace AS atau UK" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "Masukan username/kunci API admin Rackspace Anda (agar Rackspace dapat mengautentikasikan ijin Anda untuk membuat user baru), dan masukan username (unik) dan alamat email baru untuk user baru dan nama container." + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "Buat user dan container API baru" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "Kunci API: %s" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "Password: %s" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "Username: %s" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "Opearasi Cloud Files gagal (%s)" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "Konflik: user atau alamat email sudah ada" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "Anda harus memasukan alamat email baru yang sah" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "Anda harus memasukan container" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "Anda harus memasukan username baru" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "Anda harus memasukan kunci API admin" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "Anda harus memasukan username admin" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "Buat user API baru dengan akses hanya ke container ini (tidak ke seluruh akun Anda)" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "Tambahkan kapabilitas lebih untuk user Rackspace Cloud Files" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "Rackspace Cloud Files, ditingkatkan" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "Container Cloud Files" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "" + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "Hong Kong (HKG)" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "Northern Virginia (IAD)" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "Chicago (ORD)" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "Sydney (SYD)" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "Dallas (DFW) (default)" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "Wilayah Penyimpanan Cloud Files" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "" + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "Akun yang dibuat di rackspacecloud.com adalah akun AS; akun yang dibuat di rackspacecloud.co.uk adalah akun UK." + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "Autorisasi gagal (periksa kredensial Anda)" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "" + +#: admin.php:556 +msgid "Trying..." +msgstr "" + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "" + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "" + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "" + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "" + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "" + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "" + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "" + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "" + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "" + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "" + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr "" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr "" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "Autentikasi %s" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "Galat %s: %s" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "" + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "" + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "" + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "" + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "" + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "" + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "" + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "" + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "" + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "" + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "" + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "" + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "" + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "" + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "" + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "" + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "" + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "" + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "" + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "" + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "" + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "" + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "" + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "" + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "" + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "" + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "(log dapat dilihat di halaman pengaturan UpdraftPlus dengan normal)..." + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "Ingat pilihan ini untuk berikutnya (Anda masih bisa mengubahnya)" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "Gagal mengunggah" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "" + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "" + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "Baca lebih lanjut tentang bagaimana cara kerjanya..." + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "" + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "" + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "" + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "" + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "" + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "" + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "" + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "" + +#: admin.php:3359 +msgid "table: %s" +msgstr "" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "" + +#: restorer.php:646 +msgid "file" +msgstr "" + +#: restorer.php:639 +msgid "folder" +msgstr "" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "Autentikasi %s tidak dapat dilanjutkan, karena sesuatu dalam situs Anda menghentikannya. Coba nonaktifkan plugin Anda yang lain dan gunakan tema default. (Khususnya, jika anda mencari komponen yang mengirim output (kemungkinan peringatan/galat PHP) sebelum halaman dimulai. Menonaktifkan pengaturan debugging juga mungkin membantu)." + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "" + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "Lanjutkan pembaruan" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "Jangan membatalkan setelah menekan Lanjutkan di bawah - tunggu sampai pencadangan selesai." + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "Pencadangan Otomatis UpdraftPlus" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "Terjadi kesalahan:" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "Membuat cadangan dengan UpdraftPlus..." + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "Pencadangan Otomatis" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "Membuat cadangan database dengan UpdraftPlus..." + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "Anda tidak memiliki ijin untuk memperbarui situs ini." + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "tema" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "plugin" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "Memulai pencadangan otomatis." + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "Membuat %s dan cadangan database dengan UpdraftPlus..." + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Cadangkan otomatis (yang berlaku) plugin, tema dan database Wordpress dengan UpdraftPlus sebelum memperbarui" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "" + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "" + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "" + +#: admin.php:2310 +msgid "More plugins" +msgstr "" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "" + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "" + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "" + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "Perbarui Tema" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "Perbarui Plugin" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "Aman dengan pencadangan otomatis" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "" + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "" + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "" + +#: admin.php:584 +msgid "Upload error" +msgstr "" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "" + +#: admin.php:582 +msgid "Upload error:" +msgstr "" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "" + +#: admin.php:572 +msgid "Download to your computer" +msgstr "" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "" + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "" + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "" + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "" + +#: admin.php:563 +msgid "Warnings:" +msgstr "" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "" + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "" + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "" + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "" + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "" + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "" + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "" + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "" + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "" + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "" + +#: admin.php:4836 +msgid "Final checks" +msgstr "" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "" + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "" + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "" + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "" + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "" + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "" + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "" + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "" + +#: restorer.php:939 +msgid "Files found:" +msgstr "" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "" + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "" + +#: admin.php:4908 +msgid "file is size:" +msgstr "" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "" + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "" + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "" + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "Zona waktu yang digunakan dari pengaturan WordPress Anda, di Pengaturan -> Umum." + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "Masukan dalam format JJ:MM (misal. 14:22)." + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "Anda tidak terautentikasi dengan %s" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "Galat %s" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "Galat: %s" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "" + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "" + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "" + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "" + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "" + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "" + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "" + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "" + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "" + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "" + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "" + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "" + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "" + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "" + +#: admin.php:596 +msgid "Close" +msgstr "" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "Respon salah:" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "" + +#: admin.php:576 +msgid "PHP information" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "" + +#: admin.php:2627 +msgid "Get it here." +msgstr "" + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "" + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "" + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "" + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "" + +#: admin.php:2304 +msgid "Premium" +msgstr "" + +#: admin.php:2305 +msgid "News" +msgstr "" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "" + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "" + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "" + +#: admin.php:880 +msgid "Notice" +msgstr "" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "" + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "Simpan di" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "" + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "" + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "" + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "" + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "" + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "" + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "dimulai dari selanjutnya" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "" + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "" + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "" + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "" + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "" + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "" + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "" + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "" + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "" + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "Gagal" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "Tidak ditemukan pengaturan %s" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "" + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "" + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "" + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "" + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "" + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "Nama akun %s anda: %s" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "karena bagian dari informasi yang didapat tidak seperti yang diperkirakan - jarak tempuh anda dapat bervariasi" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "anda telah mengautentikasikan akun %s Anda" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "" + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "" + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "" + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "Kegagalan" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "Gagal: Tidak ada detail bucket." + +#: methods/s3.php:961 +msgid "API secret" +msgstr "" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "" + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "" + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "" + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "" + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "" + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "" + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "" + +#: methods/email.php:69 +msgid "Note:" +msgstr "" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "" + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "" + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "" + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "UK" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "AS (default)" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "" + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "Galat %s: Gagal membuka berkas lokal" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "Autentikasi Cloud Files gagal" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "" + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "" + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "" + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "" + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "Akun tidak terautorisasi." + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "" + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "" + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "Anda telah mengautentikasi akun %s Anda." + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "Berhasil" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "Penggunaan quota %s Anda: %s %% digunakan, %s tersisa" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "Autorisasi gagal" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "Tidak ada refresh token yang diterima dari Google. Ini biasanya berarti anda memasukan client secret yang salah, atau anda belum mengautentikasi ulang (di bawah) sejak mengkoreksinya. Periksa lagi, kemudian ikuti tautan untuk mengautentikasi lagi. Terakhir, jika tidak berhasil, gunakan mode lanjutan untuk menghapus semua pengaturan Anda, buat client ID/secret Google yang baru, dan mulai lagi." + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "" + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "OK" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "Prefix tabel telah diubah: mengubah %s field tabel dengan penyesuaian:" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "Selesai: baris diproses: %d dalam %.2f detik" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "query database yang dijalankan adalah:" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "akan dipulihkan sebagai:" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "Prefix tabel lama:" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "Cadangan dari:" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "Akses database: Akses langsung MySQL tidak tersedia, maka kami kembali ke wpdb (ini akan menjadi lebih lama)" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "Gagal membuka berkas database" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "Gagal menemukan berkas database" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "Peringatan: PHP safe_mode aktif pada server Anda. Timeout mungkin terjadi. Jika terjadi, maka Anda harus memulihkan berkas secara manual melalui phpMyAdmin atau metode lain." + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "wp-config.php dari cadangan: memulihkan (sesuai permintaan user)" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "wp-config.php dari cadangan: akan dipulihkan sebagai wp-config-backup.php" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "Gagal menulis database yang didekrip ke filesystem" + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "Gagal membuat direktori sementara" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "Gagal menghapus direktori kerja setelah pemulihan." + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "Tidak dapat menghapus direktori lama." + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "Membersihkan sampah..." + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "Memulihkan database (pada situs besar akan membutuhkan waktu lama - jika waktu habis (mungkin terjadi jika penyedia hosting web Anda memberlakukan batas resource) maka Anda harus menggunakan metode lain, misalnya phpMyAdmin)..." + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "Database berhasil didekrip." + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "Mendekrip database (mungkin membutuhkan waktu lama)..." + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "Membuka cadangan..." + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "Gagal menyalin entitas ini." + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "Berkas cadangan tidak tersedia." + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "UpdraftPlus tidak dapat memulihkan entitas ini secara langsung. Pemulihan harus dilakukan secara manual." + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "Tidak dapat menemukan salah satu berkas untuk pemulihan" + +#: admin.php:5009 +msgid "Error message" +msgstr "Pesan galat" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "Catatan pencadangan tidak memuat informasi tentang ukuran berkas yang tepat." + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "Arsip diperkirakan berukuran:" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "Jika anda menyampaikan permintaan bantuan, mohon sertakan informasi berikut:" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "BATAL: Tidak dapat menemukan informasi entitas yang akan dipulihkan." + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "Pemulihan UpdraftPlus: Proses" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "Cadangan ini tidak ada di riwayat pencadangan - pemulihan dibatalkan. Waktu:" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "Setelah mengklik tombol ini, Anda akan diberi pilihan untuk menentukan komponen yang ingin Anda pulihkan." + +#: admin.php:4572 +msgid "Press here to download" +msgstr "Klik disini untuk mengunduh" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "Hapus set cadangan ini" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "Bagus: Komunikasi situs Anda dengan %s dapat dienkripsi. Jika Anda menemukan kesalahan yang berhubungan dengan Enkripsi, kunjungi 'Pengaturan Lanjutan' untuk bantuan lebih lanjut." + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "Instalasi PHP/Curl pada server web Anda tidak mendukung akses https. Kami tidak dapat mengakses %s tanpa dukundan ini. Mohon hubungi bagian bantuan pada penyedia hosting web Anda. %s memerlukan Curl+https. Mohon untuk tidak menyampaikan permintaan bantuan; tidak ada alternatif." + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "Instalasi PHP/Curl pada server web Anda tidak mendukung akses https. Komunikasi dengan %s tidak akan terenkripsi. mohon pada host web Anda untuk memasang Curl/SSL untuk dapat melakukan enkripsi (melalui add-on)." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "Instalasi PHP pada server web Anda tidak memiliki modul yang diperlukan (%s). Mohon hubungi bagian bantuan pada penyedia hosting web Anda." + +#: admin.php:4062 +msgid "Save Changes" +msgstr "Simpan Perubahan" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "Memilih opsi ini menurunkan tingkat keamanan karena menghentikan UpdraftPlus untuk menggunakan SSL untuk autentikasi dan transport terenkrip sepenuhnya, jika memungkinkan. Ingat bahwa beberapa penyedia penyimpanan cloud tidak mengijinkan ini (misal. Dropbox), maka pengaturan ini tidak akan berlaku pada penyedia tersebut." + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "Nonaktifkan SSL sepenuhnya jika memungkinkan" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "Ingat bahwa tidak semua metode pencadangan cloud perlu menggunakan autentikasi SSL." + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "Memilih opsi ini menurunkan tingkat keamanan karena menghentikan UpdraftPlus untuk memverifikasi identitas situs terenkripsi yang dihubungi (misal. Dropbox, Google Drive). Berarti UpdraftPlus hanya menggunakan SSL untuk enkripsi trafik, tidak untuk autentikasi." + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "Jangan verifikasi sertifikat SSL" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "Secara default UpdraftPlus menggunakan penyimpanan sertifikat SSL sendiri untuk memverifikasi identitas situs (misal. memastikan hubungan dengan Dropbox, AmazonS3, dll. yang asli, dan bukan penyerang). Kami terus memperbaruinya. Namun, jika terjadi galat SSL, memilih opsi ini (yang akan membuat UpdraftPlus menggunakan berkas dari server web Anda) mungkin dapat membantu." + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "Gunakan sertifikat SSL server" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "Jika itu tidak berhasil perika ijin pada server Anda atau ubah ke direktori lain yang dapat ditulis oleh proses server web Anda." + +#: admin.php:3697 +msgid "click here" +msgstr "klik disini" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "atak, untuk mengatur ulang opsi ini" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "Direktori pencadangan yang ditentukan dapat ditulis, bagus." + +#: admin.php:4009 +msgid "Backup directory" +msgstr "Direktory pencadangan" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "Hapus cadangan lokal" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "klik disini untuk menampilkan pengaturan lebih jauh; abaikan ini kecuali Anda memiliki masalah atau merasa penasaran." + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "Tampilkan pengaturan lanjutan" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "Pengaturan lanjutan" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "Mode debug" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "Pengaturan Lanjutan / Debugging" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "Meminta permulaan pencadangan..." + +#: admin.php:591 +msgid "Cancel" +msgstr "Batal" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "Tidak ada" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "Pilih penyimpanan Anda" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "Dekrip berkas cadangan database secara manual" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "Frasa enkripsi Database" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "Email" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "Direktori diatas adalah seluruhnya, kecuali WordPress core yang dapat anda unduh dari WordPress.org." + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "Terkecuali:" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "Direktori lainnya di dalam wp-content" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "Termasuk di berkas cadangan" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "misal. jika server Anda sibuk saat pagi dan anda ingin menjalankannya semalaman" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "Untuk menentukan waktu pencadangan dilakukan," + +#: admin.php:3683 +msgid "Monthly" +msgstr "Setiap bulan" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "Setiap 2 minggu" + +#: admin.php:3681 +msgid "Weekly" +msgstr "Setiap minggu" + +#: admin.php:3680 +msgid "Daily" +msgstr "Setiap hari" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "Unduh berkas log" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "Folder ada, tetapi server web Anda tidak memiliki ijin untuk menulisnya." + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "Folder dibuat, tetapi ijin-berkas diubah menjadi 777 (world-writable) untuk dapat menulisnya. Anda harus memeriksa penyedia hosting Anda untuk meyakinkan hal ini tidak akan menyebabkan masalah" + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "Gagal meminta filesystem untuk membuat direktori." + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "Hapus" + +#: admin.php:3418 +msgid "show log" +msgstr "tampilkan log" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "Ini akan menghapus semua setelan UpdraftPlus Anda - yakin ingin melakukannya?" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "penghitungan" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "N.B. Penghitungan ini berdasarkan yang dikecualikan, atau tidak dikecualikan, saat terakhir Anda menyimpan opsi tersebut." + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "Total (tidak dikompres) data on-disk" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "Tidak" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "Ya" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "Versi %s:" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "Penggunaan memory saat ini" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "Penggunaan memory tertinggi" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "Server web:" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "Silahkan periksa UpdraftPlus Premium, atau add-on Multi-situs stand-alone" + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "Anda membutuhkan dukungan Multi-situs WordPress?" + +#: admin.php:2654 +msgid "Multisite" +msgstr "Multi-situs" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "Lakukan pencadangan satu kali" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "Baca artikel berikut tentang hal yang perlu diketahui sebelum memulihkan." + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "Anda dapat mencari dan mengganti database (untuk memindahkan situs web ke lokasi/URL baru) dengan add-on Migrator - ikuti tautan berikut untuk informasi lebih lanjut" + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "Opsi pemulihan %s:" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "Anda harus memulihkannya secara manual." + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "Tidak dapat memulihkan entitas berikut secara otomatis: \"%s\"." + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "Server web Anda mengaktifkan mode yang disebut safe_mode pada PHP" + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "Pilih komponen untuk dipulihkan" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "Pemulihan akan menggantikan tema, plugin, unggah, database dan/atau direktori konten lainnya pada website (tergantung pada yang terdapat dalam set cadangan, dan pilihan Anda)" + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "Pulihkan cadangan dari" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "Pulihkan cadangan" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "Hapus set cadangan" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "Galat pengunduhan: server mengirimkan respon yang tidak dapat dimengerti." + +#: admin.php:570 +msgid "You should:" +msgstr "Anda harus:" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "Galat:" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "menghitung..." + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "UpdraftPlus - Unggah berkas cadangan" + +#: admin.php:3020 +msgid "refresh" +msgstr "segarkan" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "Ruang disk web-server yang digunakan oleh UpdraftPlus" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "Google Drive" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "Jika anda menggunakan ini, nonaktifkan mode Tubro/Road" + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "Peramban web Opera" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "Tugas lain:" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "Unduh berkas log yang baru dimodifikasi" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "(Belum ada log)" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "Pesan log terakhir" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "Pulihkan" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "Cadangkan Sekarang" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "Database" + +#: admin.php:229 +msgid "Files" +msgstr "Berkas" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "Pencadangan terjadwal selanjutnya" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "Di saat yang sama dengan pencadangan berkas" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "Tidak ada penjadwalan" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "Antarmuka admin ini menggunakan JavaScript. Anda harus mengaktifkannya di peramban Anda, atau gunakan peramban yang mendukung JavaScript." + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "Peringatan JavaScript" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "Hapus Direktori Lama" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "Batas saat ini:" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "Cadangan anda telah dipulihkan." + +#: admin.php:2310 +msgid "Version" +msgstr "Versi" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "Homepage pemimpin pengembangan" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "Setelan Anda telah dihapus." + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "Direktori pencadangan berhasil dibuat." + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "Direktori pencadangan tidak dapat dibuat" + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "Penghapusan direktori lama gagal karena suatu alasan. Anda mungkin harus melakukannya secara manual." + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "Direktori lama berhasil dihapus." + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "Hapus direktori lama" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "Kembali ke Konfigurasi UpdraftPlus" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "Tindakan" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "Pemulihan berhasil!" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "Format nama berkas salah - tampaknya ini bukan berkas database terenkripsi yang dibuat dengan UpdraftPlus" + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "Format nama berkas salah - tampaknya ini bukan berkas yang dibuat dengan UpdraftPlus" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "Tidak ada salinan lokal." + +#: admin.php:2072 +msgid "Download in progress" +msgstr "Pengunduhan sedang berlangsung" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "Berkas siap." + +#: admin.php:2043 +msgid "Download failed" +msgstr "Gagal mengunduh" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "Galat" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "Tidak dapat menemukan pekerjaan - mungkin sudah selesai?" + +#: admin.php:1854 +msgid "Job deleted" +msgstr "Pekerjaan dihapus" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "OK. Anda akan segera melihat aktifitas di bagian \"Pesan log terakhir\" di bawah." + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "Belum ada log" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "Silahkan periksa FAQ berikut jika Anda memiliki masalah dalam pencadangan." + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "Web situs anda dihost menggunakan server web %s." + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "UpdraftPlus tidak resmi mendukung versi WordPress sebelum %s. Mungkin akan bekerja, tetapi jika tidak, mohon ingat tidak ada dukungan yang tersedia sampai Anda memperbarui WordPress." + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "Anda memiliki kurang dari %s sisa disk pada disk yang diatur untuk digunakan oleh UpdraftPlus untuk membuat pencadangan. UpdraftPlus dapat kehabisan ruang. Kontak operator server anda (misal. perusahan web hosting) untuk memecahkan masalah ini." + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "Peringatan" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "Add-On / Dukungan Pro" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "Pengaturan" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "Berkas yang diijinkan" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "Tidak dapat membuat %s zip. Lihat berkas log untuk informasi lebih lanjut." + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "Pengulangan tanpa henti: lihat log Anda untuk informasi lebih lanjut" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "Kunjungi UpdraftPlus.Com untuk bantuan, add-on dan dukungan" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "Butuh lebih banyak fitur dan dukungan? Coba UpdraftPlus Premium" + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "Bantulah UpdraftPlus dengan memberi ulasan positif di wordpress.org" + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "Suka dengan UpdraftPlus dan bisa meluangkan waktu?" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "Anda bisa menerjemah? Ingin membuat UpdraftPlus lebih baik untuk penutur bahasa Anda?" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "Berkas tidak ditemukan" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "Kunci dekripsi yang digunakan:" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "Dekripsi gagal. Kemungkinan karena Anda menggunakan kunci yang salah." + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "Dekripsi gagal. Database dienkripsi, tetapi Anda tidak memasukan kunci enkripsi." + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "Tidak dapat membuka berkas cadangan untuk ditulis" + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "Tidak dapat menyimpan riwayat pencadangan karena tidak ada array pencadangan. Pencadangan mungkin gagal." + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "Tidak dapat membaca direktori" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "Direktori pencadangan (%s) tidak dapat ditulis, atau tidak ada." + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "Pencadangan WordPress selesai" + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "Upaya pencadangan selesai, tetapi tidak berhasil." + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "Pencadangan berhasil dan telah selesai." + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "Terjadi galat enkripsi saat mengenkripsi database. Enkripsi dibatalkan." + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "Tidak dapat membuat berkas dalam direktory pencadangan. Pencadagan dibatalkan - cek pengaturan UpdraftPlus Anda." + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "Lainnya" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "Pengunggahan" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "Tema" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "Plugin" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "Tidak ada berkas log." + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "Berkas log tidak dapat dibaca." + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "Pemberitahuan UpdraftPlus" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "UpdraftPlus Backups" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-it_IT.mo b/plugins/updraftplus/languages/updraftplus-it_IT.mo new file mode 100644 index 0000000..15345fd Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-it_IT.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-it_IT.po b/plugins/updraftplus/languages/updraftplus-it_IT.po new file mode 100644 index 0000000..572464f --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-it_IT.po @@ -0,0 +1,6111 @@ +# Translation of UpdraftPlus in Italian +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2015-06-11 13:57:37+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: it\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "" + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "" + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "" + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "" + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "" + +#: addons/webdav.php:91 +msgid "Path" +msgstr "" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "" + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "" + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "" + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "" + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "" + +#: admin.php:2310 +msgid "FAQs" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "" + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "" + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "" + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "" + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "" + +#: methods/ftp.php:355 +msgid "login" +msgstr "" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "" + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "" + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "" + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "" + +#: admin.php:2604 +msgid "Now" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "" + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "" + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "" + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "" + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "" + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "" + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "" + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "" + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "" + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "" + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "" + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "" + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "" + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "" + +#: admin.php:3420 +msgid "stop" +msgstr "" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "" + +#: admin.php:3092 +msgid "this backup set" +msgstr "" + +#: admin.php:3020 +msgid "calculate" +msgstr "" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "" + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "" + +#: admin.php:601 +msgid "Saving..." +msgstr "" + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:557 +msgid "Fetching..." +msgstr "" + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "" + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "" + +#: admin.php:2884 +msgid "Dismiss" +msgstr "" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "" + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "" + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "" + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "" + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "" + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "" + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "" + +#: admin.php:3860 +msgid "File Options" +msgstr "" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "" + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "" + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "" + +#: admin.php:5157 +msgid "settings" +msgstr "" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "" + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "" + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "" + +#: admin.php:442 +msgid "Extensions" +msgstr "" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "" + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "" + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "" + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "" + +#: addons/azure.php:524 +msgid "container" +msgstr "" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "" + +#: addons/azure.php:523 +msgid "optional" +msgstr "" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "" + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "" + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "" + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "" + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "" + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "" + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "" + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "" + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "" + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "" + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "" + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "" + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "" + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "" + +#: restorer.php:767 +msgid "Deferring..." +msgstr "" + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "" + +#: admin.php:3081 +msgid "Deselect" +msgstr "" + +#: admin.php:3080 +msgid "Select all" +msgstr "" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "" + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "" + +#: admin.php:634 +msgid "For backups older than" +msgstr "" + +#: admin.php:633 +msgid "week(s)" +msgstr "" + +#: admin.php:632 +msgid "hour(s)" +msgstr "" + +#: admin.php:631 +msgid "day(s)" +msgstr "" + +#: admin.php:630 +msgid "in the month" +msgstr "" + +#: admin.php:629 +msgid "day" +msgstr "" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "" + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "" + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "" + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "" + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "" + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "" + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "" + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "" + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "" + +#: admin.php:607 +msgid "Update quota count" +msgstr "" + +#: admin.php:606 +msgid "Counting..." +msgstr "" + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "" + +#: admin.php:603 +msgid "Connecting..." +msgstr "" + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "" + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "" + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "" + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "" + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "" + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "" + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "" + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "" + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "" + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "" + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "" + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "" + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "Chiavi esistenti" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "Non è stata ancora creata nessuna chiave per permettere l'accesso remoto ai siti." + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "La tua nuova chiave: " + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "Per consentire a un altro sito di inviare una copia di backup a questo sito, creare una chiave, e quindi premere il pulsante 'Migrate' sul sito di invio, e copiare-e-incollare la chiave lì." + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "Quindi, per ottenere la chiave per il sito remoto, aprire la finestra 'Migrazione' su quel sito, scorrere verso il basso, e crearne una lì." + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "Le chiavi per questo sito sono create nella sezione sottostante quella appena premuta." + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "E' necessario copiare ed incollare questa chiave adesso - non verrà più mostrata in seguito." + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "Chiave creata con successo." + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "Una chiave con questo nome esiste già; è necessario utilizzare un nome univoco." + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "Inviare questo backup anche alle posizioni di archiviazione remote attive" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "L' URL del sito a cui si sta inviando (%s) sembra quello di un sito web di sviluppo locale. Se si sta inviando da una rete esterna, è probabile che un firewall bloccherà l'invio." + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "sito non trovato" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "I dati di backup verranno inviati a:" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "Ripristina un set di backup esistente su questo sito" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "Questo sito non ha ancora backup da ripristinare." + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "Backup fatto da %s" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "Questo metodo di memorizzazione non consente il download" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "(set di backup importato da posizione remota)" + +#: admin.php:4423 +msgid "Site" +msgstr "Sito" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "Backup inviato al sito remoto - non disponibile per il download." + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "" + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "Questo set di backup non è stato riconosciuto da UpdraftPlus per essere creato dalla installazione corrente di WordPress, ma è stato trovato in uno storage remoto, o è stato inviato da un sito remoto." + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "Test della connessione..." + +#: admin.php:617 +msgid "Deleting..." +msgstr "Cancellazione..." + +#: admin.php:616 +msgid "key name" +msgstr "Nome della chiave" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "Si prega di dare un nome a questa chiave (ad esempio, indicare il sito per la quale è stata creata):" + +#: admin.php:611 +msgid "Creating..." +msgstr "Creazione..." + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "Incolla la chiave qui" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "Come posso avere la chiave di un sito?" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "Per aggiungere un sito come destinazione per l'invio, inserire la chiave del sito sotto." + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "Oppure, invia un backup a un altro sito" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "Invia" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "Invia al sito:" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "Non è ancora stato aggiunto nessun sito ricevente." + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "E' per l'invio dei backup ai seguenti siti:" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "La chiave è stata inserita correttamente." + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "La chiave immessa non appartiene a un sito remoto (appartiene a questo)" + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "La chiave immessa è corrotta - si prega di riprovare." + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "La chiave immessa ha lunghezza errata - si prega di riprovare." + +#: addons/migrator.php:1861 +msgid "key" +msgstr "chiave" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "Quasi tutti i server FTP utilizzano il passive mode, ma se è necessario l'active mode, si prega di deselezionare questa opzione." + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "Passive mode" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "Percorso remoto" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "FTP password" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "FTP login" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "FTP server" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "" + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "" + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "" + +#: admin.php:608 +msgid "Adding..." +msgstr "" + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "" + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "" + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "" + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "N.B. %s non è case-sensitive." + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "" + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "" + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "" + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "OneDrive" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "" + +#: methods/email.php:73 +msgid "configure it here" +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "" + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "Sud America (San Paolo)" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "EU (Francoforte)" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "EU (Irlanda)" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "US West (N. California)" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "" + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "Chiave d'accesso: %s" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "Conflitto: l'utente esiste già." + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "" + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "E' necessario inserire una chiave di accesso di admin" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "" + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "" + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "" + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "" + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "" + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "Altri Plugin di Qualità" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "Vai allo shop." + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "Compara con la versione gratuita" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "UpdraftPlus Premium" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "Segui questo link per la registrazione." + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "Newsletter Gratuita" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "Grazie per avere effettuato il backup con UpdraftPlus!" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "" + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "" + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "" + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "" + +#: admin.php:2831 +msgid "Personal support" +msgstr "" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "Criptaggio del database" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "Dropbox, Google Drive, FTP, S3, Rackspace, Email" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "" + +#: admin.php:2718 +msgid "Get it from" +msgstr "" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "" + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "" + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "Errore %s: Impossibile inizializzare" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "" + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "" + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "" + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "" + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "" + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "" + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "Fase di decriptaggio del database" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "Backup automatico prima dell'aggiornamento" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "WordPress core (solo)" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "Per sbloccare il supporto, si prega di contattare chi gestisce UpdraftPlus per voi." + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "Per accedere alle impostazioni di UpdraftPlus, inserisci la password di sblocco" + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "Password errata" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "Sblocca" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "In caso contrario, verrà visualizzato il link di default." + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "L'URL per il supporto sarà visibile a tutti dalla schermata di blocco - inserire un indirizzo web o un indirizzo email." + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "URL supporto" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "Richiedi password dopo" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "%s settimane" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "1 settimana" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "%s ore" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "1 ora" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "Assicurati di aver preso nota della password!" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "Blocca l'accesso alla pagina delle impostazioni di UpdraftPlus" + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "Settaggi salvati!" + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "La password di amministrazione è stata cambiata." + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "Una password di amministrazione è stata settata." + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "La password di amministrazione è stata rimossa." + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "(per saperne di più riguardo questa importante opzione)" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "" + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "Vedi il Log" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "Dati di backup (clicca per scaricare)" + +#: admin.php:4368 +msgid "Backup date" +msgstr "Data Backup " + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "backup incrementale; backup di base: %s" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "Per bloccare l'accesso alle impostazioni di UpdraftPlus con una password, aggiorna a UpdraftPlus Premium." + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "Carica i file in UpdraftPlus." + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "" + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "Etichetta Backup:" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "Errore: di lettura del file" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "controllare il log per maggiori dettagli." + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "il vostro account di web hosting sembra essere pieno; vedi %s" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "E' avvenuto un errore dello zip." + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "Dai un nome a questo backup (opzionale)" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "%s non permette l'autorizzazione di siti residenti su indirizzi IP diretti. Dovrai cambiare l'indirizzo IP del tuo sito (%s) prima di poter utilizzare %s per la memorizzazione dei dati." + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "Hai inserito un indirizzo email non riconosciuto da UpdraftPlus.Com" + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "Il tuo indirizzo email risulta valido, ma la password non è stata riconosciuta da UpdraftPlus.Com." + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "Dovrai fornire un indirizzo email e una password." + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "Per procedere premi \"Esegui Backup\". Poi, consulta il campo 'Ultimo messaggio di Log' per verificarne l'attività." + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "Se vuoi ripristinare il backup di un multisito, dovresti per prima cosa settare la tua istallazione Wordpress come multisito." + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "Il backup riguarda un'installazione multisito di Wordpress; non questo sito. Avrai accesso solo al primo sito della rete." + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "già fatto" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "saltato (non in lista)" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "Ricerca e sostituzione tabella:" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "Immettere un elenco separato da virgole; in caso contrario, lasciare vuoto per tutte le tabelle." + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "Solo queste tabelle" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "Righe per batch" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "Non ti sei ancora collegato con il tuo account UpdraftPlus.Com." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "È necessario connettersi per ricevere gli aggiornamenti futuri di UpdraftPlus." + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "Eventuali richieste di supporto da fare con %s devono essere sollevate con la vostra società di web hosting." + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "Si dovrebbe procedere solo se non è possibile aggiornare il server corrente e si è fiduciosi (o disposti a rischiare) che i vostri plugin / temi / etc. siano compatibili con la versione %s più vecchia." + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "Questo è significativamente più recente del server sul quale si sta ora eseguendo il ripristino (versione %s)." + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "Il sito in questo backup è stato eseguito su un server web con la versione %s di %s." + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "LinkedIn" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "Google+" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "Facebook" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "Twitter" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "UpdraftPlus è sui social media - dai un'occhiata qui:" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "Perché vedo questo?" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "E' possibile modificare la posizione di questa cartella nelle impostazioni avanzate, nella scheda Impostazioni." + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "Premi qui per guardare dentro la cartella di UpdraftPlus (nel tuo spazio web hosting) per ogni nuovo set di backup caricato." + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "Inizio backup" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "Stai utilizzando il webserver %s, ma sembra che il modulo %s non sia caricato." + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "È necessario consultare il fornitore di web hosting per sapere come impostare le autorizzazioni per un plugin per WordPress per scrivere nella directory." + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "A meno che non si verifichi un problem, è possibile ignorare completamente questo." + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "Questo file non può essere caricato" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "Puoi trovare ulteriori informazioni nella sezione Impostazioni." + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "Plugin di backup supportati: %s" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "Questo era un backup creato da un diverso plugin di backup? Se è così, allora potrebbe essere necessario rinominarlo in modo che possa essere riconosciuto - segui questo link." + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "Per saperne di più riguardo i backup incrementali" + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "Limite di Memoria" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "ripristino" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "Tabelle cancellate implicitamente: %s" + +#: backup.php:829 +msgid "Incremental" +msgstr "Incrementale" + +#: backup.php:829 +msgid "Full backup" +msgstr "Backup completo" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "ora si procede con gli aggiornamenti..." + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "(vedi log...)" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "Backup riuscito" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "Ogni %s ore" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "trova e sostituisci" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "Vai" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "La ricerca/sostituzione non può essere annullata - si è sicuri di voler continuare?" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "Questo potrebbe distruggere il vostro sito, quindi usare con cautela!" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "Sostituisci con" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "cerca" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "Ricerca / sostituzione del database" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "termine di ricerca" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "Si sono verificati troppi errori di database - interruzione" + +#: backup.php:895 +msgid "read more at %s" +msgstr "Per saperne di più su %s" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "I report e-mail creati da UpdraftPlus (edizione gratuita) contengono le ultime notizie di UpdraftPlus.com" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "N.B. Se si installa UpdraftPlus su diversi siti WordPress, allora non è possibile riutilizzare il progetto; è necessario crearne un nuovo per ogni sito dalla vostra console di Google API." + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "Non hai ancora fatto nessun backup." + +#: admin.php:3872 +msgid "Database Options" +msgstr "Opzioni Database" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "Plugin per il debug:" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "%s (%s usata)" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "Spazio libero su disco per l'account:" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "Questo pulsante è disabilitato perché la directory di backup non è scrivibile (vedere le impostazioni)." + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "Backup Esistenti" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "Stato Attuale" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "Per modificare le impostazioni predefinite di ciò che si vuole backuppare, per configurare i backup pianificati, per inviare i backup all'archiviazione remota (consigliato), e per altro ancora, andare alla scheda delle Impostazioni." + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "Per fare un backup, è sufficiente premere il pulsante Backup Now." + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "Benvenuto in UpdraftPlus!" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "Se inserisci qui del testo, verrà usato per crittare i backup del database (Rijndael). Prendi nota del testo e non perderlo, o tutti i tuoi futuri backup saranno inutili. Questa è inoltre la chiave usata per decrittare i backup da questo pannello di controllo (quindi se la cambi, la decrittazione automatica non funzionerà più finché non inserirai di nuovo il testo originale)." + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "Test in corso..." + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "Prova la connessione..." + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "Prefisso della tabella" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "Backup di un database esterno" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "Aggiungo un database esterno al backup..." + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "Se il tuo database contiene tabelle extra che non fanno parte di questo sito (se questo è il caso ne sarai sicuramente al corrente), allora attiva questa opzione per salvare anche queste tabelle." + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "Backup di tabelle non Wordpress contenute nello stesso Database di Wordpress" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "Questa opzione farà in modo che tabelle memorizzate nel database MySQL, che non appartengono a WordPress (identificate dalla mancanza del prefisso WordPress, %s) saranno backuppate." + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "Connessione fallita." + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "Connessione avvenuta con successo." + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "%s tabella(e) trovata(e) in totale; %s con il prefisso indicato." + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "%s tabella(e) trovata(e)." + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "tentativo di connessione al database fallito" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "nome del database" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "host" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "utente" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "Database esterno (%s)" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "Segui questo link alla Console della tua API Google, attiva l'API Drive e crea un ID client nella sezione API Access." + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "impossibile accedere alla cartella superiore" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "Ad ogni modo, ecco i tentativi di accesso falliti:" + +#: admin.php:4499 +msgid "External database" +msgstr "Database esterno" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "Questo causerà inoltre la stampa a schermo del debugging di tutti i plugin - pertanto non meravigliatevi se verranno visualizzati." + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "Backup di più di un database" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "Per prima cosa, inserisci la chiave di crittazione" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "Qui puoi crittare e decrittare i database manualmente." + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "Può anche eseguire il backup di database esterni." + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "Vuoi proteggere i tuoi dati? UpdraftPlus Premium può crittare il backup del tuo database." + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "usa UpdraftPlus Premium" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "Dectrittazione fallita. Il file del database è crittato." + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "Può essere memorizzato solo il database d Wordpress; dovrai provvedere al database esterno manualmente." + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "Si è verificato un errore nel primo comando %s - esecuzione terminata" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "Connessione fallita: controlla i dati del tuo accesso, che il tuo server di database sia acceso e che la connessione alla rete non sia bloccata da un firewall." + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "Tentativo di connessione al database fallito." + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "Attenzione: l'URL del database (%s) è differente da quello previsto (%s)" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "In %s, i nomi di percorso sono case sensitive." + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "Se si lascia vuoto, il backup verrà posizionato nella root di %s" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "esempio %s" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "Se la cartella non esiste, verrà creata." + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "Immettere il percorso della cartella %s che si desidera utilizzare." + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "Contenitore" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "Lasciare vuoto, e verrà utilizzato quello di default." + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "Tenant" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "Segui questo link per maggiori informazioni" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "URI di autenticazione" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "Ottieni le credenziali di accesso dal tuo provider OpenStack Swift, quindi scegli un nome di un contenitore da usare per la memorizzazione. Il contenitore, se non esistente, verrà appositamente creato." + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "Impossibile scaricare %s" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "Impossibile scaricare" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "impossibile ottenere la lista dei file" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "Impossibile scaricare %s" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "Successo" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "Dopo aver salvato le impostazioni (cliccando su 'Salva modifiche' sotto), tornare qui una volta e cliccare su questo link per completare l'autenticazione con %s." + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "(sembra tu sia già autenticato)" + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "Dropbox" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "Autenticarsi con %s" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "Errore durante il download del file remoto: Impossibile scaricare" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "Regione: %s" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "Errore %s - si accede al contenitore, ma non è possibile creare un file al suo interno" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "L'oggetto %s non è stato trovato" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "Impossibile accedere al contenitore %s" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "Errore %s - impossibile accedere al contenitore" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "Proprietario dell'Account: %s" + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "Per poter impostare un nome di cartella personalizzata, utilizzare UpdraftPlus Premium." + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "Si tratta di un numero ID interno di Google Drive" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "Questo NON è un nome di cartella." + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "Cartella" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "download %s fallito: file non trovato." + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "Nome: %s" + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "Lista dei file di Google Drive: impossibile accedere alla cartella principale" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "La tua versione %s: %s." + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "E' necessario chiedere alla compagnia di web hosting di aggiornare." + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "Questo metodo di archiviazione remota (%s) richiede una versione di PHP %s o successiva" + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "La cartella dei Temi (%s) non è stata trovata, ma esiste una versione a caratteri minuscoli; aggiornamento opzione di database" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "Richiama" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "Recupera" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "Questa funzionalità richiede %s versione %s o successiva" + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "Rilevato il creatore di temi Elegant themes: reset della cartella temporanea" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "%s file sono stati estratti" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "Impossibile scompattare l'archivio" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "Errore - impossibile scaricare il file" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "Ripetere la scansione cartella locale per i nuovi set di backup" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "Si consiglia di aggiornare UpdraftPlus per disporre di una versione la cui compatibilità sia stata testata." + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "E 'stato testato fino alla versione %s." + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "La versione installata di UpdraftPlus Backup/Restore non è stata testata sulla tua versione di WordPress (%s)." + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "password/chiave" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "Chiave" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "Il tuo login potrebbe essere basato su una password e una chiave - inserirne una delle due, non è necessario inserirle entrambi." + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "La chiave fornita non è in un formato valido, o è corrotta." + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "SCP/SFTP password/key" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "File di backup (creati da %s)" + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "Backup dei files e database Wordpress (creati da %s)" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "Backup creato da: %s" + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "Database (creato da %s)" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "sorgente sconosciuta" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "Scansione storage remoto" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "Carica i file di backup" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "Questo backup è stato creato da %s, e può essere importato." + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "Leggi questa pagina per una guida alle possibili cause e come risolvere il problema." + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "WordPress ha un numero di operazioni pianificate (%d) che sono in ritardo. A meno che questo non sia un sito di sviluppo, ciò significa probabilmente che lo scheduler della vostra installazione WordPress non funziona." + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "Se questo è un backup creato da un diverso plugin di backup, allora UpdraftPlus Premium potrebbe essere in grado di aiutarvi." + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "Tuttavia, gli archivi UpdraftPlus sono file zip / SQL standard - quindi se si è sicuri che il file ha il formato giusto, allora è possibile rinominarla in modo che corrisponda." + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "Questo file non sembra essere un archivio UpdraftPlus backup (questi file sono zip o gz che hanno un nome tipo: backup_(time)_(site name)_(code)_(type).(zip|gz))." + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "Backup creato da fonte sconosciuta (%s) - non può essere ripristinato." + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "La cartella dei contenuti di WordPress (wp-content), non è stata trovata in questo file zip." + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "Questa versione di UpdraftPlus non sa come gestire questo tipo di backup." + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "%s ha ritornato una risposta HTTP inattesa: %s" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "Il modulo UpdraftPlus per il seguente metodo di accesso ai files (%s) non supporta il file listing" + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "Settaggi non trovati" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "Uno o più backup sono stati aggiunti dalla scansione dell'unità di memorizzazione remota; Notare che questi backup non saranno cancellati automaticamente attraverso i settaggi di \"conservazione\"; se o quando si desidera cancellarli è necessario farlo manualmente." + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "Ricerca di set di backup nello storage remoto e locale..." + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "(Per saperne di più)" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "Settaggio per i percorsi multisito" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "Crea un log di tutti i messaggi a syslog (per amministratori di server)" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "Aggiungi un altro..." + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "Rimuovi" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "Altre %s FAQ." + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "Controlla qui per ricevere maggiori informazioni e messaggi di posta elettronica sul processo di backup - utile se qualcosa sta andando storto." + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "Se si immettono più file o directory, separarli con una virgola. Per entità a livello superiore, è possibile utilizzare un * all'inizio o alla fine della voce come wildcard." + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "rilevati dati del plugin Custom content type manager: sto cancellando la cache delle opzioni" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "Il fornitore di servizi di hosting deve abilitare queste funzioni prima che %s possa funzionare." + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "L'installazione PHP nel tuo server ha queste funzioni disabilitate: %s." + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "FTP cifrato (crittografia esplicita)" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "FTP crittato (crittazione implicita)" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "FTP non criptato (regolare)" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "Backup creato da:" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "Available to claim on this site" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "Per mantenere l'accesso al supporto, si prega rinnovare." + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "L'accesso al supporto a pagamento di UpdraftPlus scadrà a breve." + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "Per riottenere l'accesso, si prega di rinnovare." + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "L'accesso al supporto a pagamento di UpdraftPlus è scaduto." + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "Il vostro accesso a pagamento agli aggiornamenti di UpdraftPlus per questo sito scadrà presto." + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "Per mantenere l'accesso, ed usufruire degli aggiornamenti (comprese future funzionalità e la compatibilità con le future versioni di WordPress) e il supporto, si prega di rinnovare." + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "Il vostro accesso a pagamento agli aggiornamenti di UpdraftPlus per %s dell'add-on %s su questo sito scadrà presto." + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "Il vostro accesso a pagamento agli aggiornamenti di UpdraftPlus per l'add-on %s su questo sito è scaduto." + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "Per riottenere l'accesso agli aggiornamenti (compreso nuove funzioni e la compatibilità con le future versioni di WordPress) e il supporto, si prega di rinnovare." + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "L'accesso a pagamento agli aggiornamenti di UpdraftPlus per questo sito è scaduto. Non sarà più possibile ricevere gli aggiornamenti di UpdraftPlus." + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "Respinto dalla bacheca principale (per %s settimane)" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "Il tentativo di annullare la doppia compressione è riuscito." + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "Il tentativo di annullare la doppia compressione è fallito." + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "Il file di database sembra essere stato compresso due volte - probabilmente il sito dal quale è stato scaricato ha il webserver configurato male." + +#: admin.php:1528 +msgid "Constants" +msgstr "Costanti" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "Impossibile aprire il database per la lettura:" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "Nessuna tabella trovata nel database" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "attendere il tentativo rischedulato" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "Si noti che i messaggi di avviso sono solo notifiche - il processo di backup non si ferma per loro. Invece, essi forniscono informazioni che potreste trovare utili, o che possono indicare la fonte di un problema se il backup non è riuscito." + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "Query di database processate: %d in %.2f secondi" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "Ricerca e sostituzione della riga raggiunta: %d" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "Questa tabella verrà saltata: i dati nella tabella (%s) non potranno essere cercati o sostituiti." + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "Account pieno: il tuo account %s ha liberi solamente %d byte, ma il file da caricare ha %d byte rimanenti (dimensione totale: %d byte)" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "Si sono verificati errori:" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "Segui questo link per scaricare il file di log per questo ripristino (necessario per eventuali richieste di supporto)." + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "Vedi anche questa FAQ." + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "Se si sceglie di non utilizzare l'archiviazione remota, i backup rimarranno sul web-server. Questo non è raccomandato (a meno che non si abbia intenzione di copiarli manualmente sul computer), perdere il web-server significherebbe perdere sia il vostro sito web che i backup in un unico evento." + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "Recupero (se necessario) e preparazione dei file di backup ..." + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "La configurazione di PHP su questo webserver consente solo %s secondi a PHP per funzionare, e non consente di alzare questo limite. Se hai molti dati da importare, e se il ripristino del backup ritorna timeout, allora sarà necessario chiedere alla società di web hosting di aumentare questo limite (o tentare il ripristino pezzo per pezzo)." + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "Esistono cartelle non rimossi dopo un precedente ripristino (si prega di utilizzare il pulsante \"Elimina vecchie Cartelle\" per eliminarle prima di provare di nuovo): %s" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "Il tempo allocato per l'esecuzione dei plugin di WordPress è molto basso (%s secondi) - bisognerebbe aumentarlo per evitare errori di backup dovuti al time-out (consultare la società di web hosting per più aiuto - verificare l'impostazione max_execution_time nei settaggi PHP; il valore raccomandato è di almeno %s seconds)" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "Sostituzione tabella blog/sito: da: %s a: %s" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "%s: Ignora il file di cache (non dovrebbe esistere)" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "E' stato disabilitato questo plugin:%s: ri-attivare manualmente quando si è pronti." + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "La connessione %s è scaduta (timeout); se hai inserito il server correttamente, allora probabilmente questo è causato da un firewall che blocca la connessione - si prega di verificare con la società di web hosting." + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "il tema corrente non è stato trovato; per evitare che questo interrompa il caricamento del sito, il tema è stato ripristinato al tema di default." + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "Ripristino fallito..." + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "Messaggi:" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "È stata trovata una linea SQL che è maggiore della dimensione massima del pacchetto e non può essere frazionata; questa linea non verrà elaborata, ma verrà abbandonata: %s" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "La directory non esiste" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "Indirizzo Email Nuovo Utente" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "Nuovo Nome Utente" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "API Key Amministratore" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "Nome Utente Amministratore" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "Account Racketspace americano (US) o inglese (UK)" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "Inserisci il tuo nome utente / chiave API di Rackspace (in modo che Rackspace possa autenticare il tuo permesso di creare nuovi utenti), e immettere un nuovo nome utente unico e indirizzo email per il nuovo utente e nome del contenitore." + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "Crea nuovo utente API e container" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "Chiave API: %s" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "Password: %s" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "Nome utente: %s" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "Operazione Cloud Files fallita (%s)" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "Conflitto: questo utente o l'indirizzo email sono già utilizzati" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "E' necessario inserire un nuovo indirizzo email valido" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "E' necessario inserire un contenitore" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "È necessario inserire un nuovo nome utente" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "E' necessario inserire l'API key Amministratore" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "E' necessario inserire il nome utente ammistratore" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "Creare un nuovo utente API con accesso solo a questo contenitore (invece che l'intero account)" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "Aggiunge funzionalità avanzate per gli utenti Rackspace Cloud Files" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "Rackspace Cloud Files, avanzato" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "Cloud Files Container" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "Cloud Files API Key" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "Usa questo add-on per creare un nuovo API sub-user Rackspace e una API key che abbia accesso solo a questo container Rackspace." + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "User Cloud Files" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "Londra (LON)" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "Hong Kong (HKG)" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "Virginia del Nord (IAD)" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "Chicago (ORD)" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "Sidney (SYD)" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "Dallas (DFW) (default)" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "Cloud Files Storage Region" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "Gli account creati in rackspacecloud.com sono account degli Stati Uniti; gli account creati in rackspace.co.uk sono account del Regno Unito." + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "Account Rackspace degli Stati Uniti o del Regno Unito" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "Gli account creati in rackspacecloud.com sono account degli Stati Uniti; gli account creati in rackspace.co.uk sono account del Regno Unito." + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "Autorizzazione non riuscita (verificare le credenziali)" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "Si è verificato un errore sconosciuto durante il tentativo di connessione a UpdraftPlus.Com" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "Crea" + +#: admin.php:556 +msgid "Trying..." +msgstr "Prova..." + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "La nuova password utente della console Rackspace è (non verrà mostrata in futuro):" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "(quando decifrato)" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "Errore dato:" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "Il backup non esiste nella cronologia dei backup" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "La vostra installazione di WordPress ha vecchie cartelle dallo stato precedente il ripristino o la migrazione (informazione tecnica: queste hanno suffisso -old). È necessario premere questo pulsante per eliminarle non appena il riprostino è terminato." + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "Linea divisa per evitare di superare la dimensione massima del pacchetto." + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "Il tuo utente del database non dispone dell'autorizzazione per eliminare le tabelle. Cercheremo di ripristinare semplicemente svuotando le tabelle; questo dovrebbe funzionare fino a che si esegue il ripristino da una versione di WordPress con la stessa struttura del database (%s)" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "Nuovo prefisso di tabella: %s" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "I permessi dei file non consentono di spostare e mantenere i vecchi dati; verranno eliminati." + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "%s: Questa directory esiste già, e sarà sostituita." + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "Impossibile spostare il file. Controllare le autorizzazioni." + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "Impossibile spostare i nuovi file in posizione. Controlla la cartella wp-content / upgrade." + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "Impossibile rimuovere i vecchi files." + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "Rimozione dei dati vecchi..." + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "Aggiungi un altro indirizzo..." + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "Inserire gli indirizzi per avere l'invio del rapporto quando termina il processo di backup." + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "Rapporti email" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "%s checksum: %s" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "file: %s" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "Utilizzare la sezione \"Reporting\" per configurare gli indirizzi email da utilizzare." + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr "(con avvisi (%s))" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr "(con errori (%s))" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "Informazioni di debug" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "Caricato a:" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "Tempo impiegato:" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "Avvertenze" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "Errori" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "Errori / avvertenze:" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "Contiene:" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "Backup iniziato:" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "Rapporto Backup" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "%d ore, %d minuti, %d secondi" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "errori %d, avvertenze %d" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "autenticazione %s" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "%s errore: %s" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "logo %s" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "%s non ha prodotto la risposta attesa - controllare il file di log per ulteriori dettagli" + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "Il modulo PHP %s richiesto non è installato - chiedere alla società di web hosting per abilitarlo" + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "Per ulteriori opzioni, usare l'add-on \"%s\"." + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "Verrà utilizzato l'indirizzo email dell'amministratore del tuo sito (%s)." + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "Connesso" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "Per ulteriori funzionalità di report, utilizzare Reporting add-on." + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "(versione: %s)" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "Prestare attenzione al fatto che i server di posta tendono ad avere limiti di dimensione; in genere circa %s Mb; I backup di dimensioni superiore potrebbero non arrivare." + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "Quando è attivata la modalità di archiviazione e-mail, viene inviato anche l'intero backup" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "Ultimo status:" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "Il Backup contiene:" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "Backup: %s" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "Il file di log è stato allegato a questa email." + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "Errore sconosciuto o imprevisto - si prega di inoltrare una richiesta di assistenza" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "Solo il Database (i file non facevano parte di questo backup)" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "Database (backup dei file non completato)" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "Solo i file (il database non faceva parte di questa schedulazione)" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "File (il backup del database non è stato completato)" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "File e database" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "(Questo vale per tutti i plugin di backup di WordPress a meno che non siano stati espressamente codificati per la compatibilità multisito)." + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "Senza l'aggiornamento, UpdraftPlus permette ad ogni amministratore del blog che possa modificare le impostazioni del plugin di eseguire il backup (e quindi accedere ai dati, comprese le password) e di ripristinare (anche con modifiche personalizzate, ad esempio, cambiando le password) l'intera rete ." + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "I multisito Wordpress cono supportati, con funzionalità extra, da UpdraftPlus Premium o dal Multisite add-on." + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "Questa è una installazione WordPress multisito (anche detta \"di rete\")." + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "Avvisi UpdraftPlus" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "(o connettersi utilizzando il modulo in questa pagina se già acquistato)" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "segui questo link per aggiornare il plugin, al fine di attivarlo" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "segui questo link per aggiornare il plugin, al fine di ottenerlo" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "ultimo" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "La tua versione: %s" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "You've got it" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "Supporto UpdraftPlus" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "E' disponibile un aggiornamento per UpdraftPlus che contiene i tuoi add-on - segui questo link per averlo." + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "UpdraftPlus Addons" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "E' disponibile un aggiornamento di UpdraftPlus - seguire questo link per aggiornare" + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "UpdraftPlus.Com ha restituito una risposta, ma non si è in grado di capirla." + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "Il tuo indirizzo e-mail e la password non sono state riconosciute dal UpdraftPlus.Com" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "UpdraftPlus.Com ha ritornato una risposta che non è possibile capire (dato: %s)" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "UpdraftPlus.Com ha risposto, ma non abbiamo capito la risposta" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "Non è possibile connettersi a UpdraftPlus.Com" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "Reporting" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "Opzioni" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "Invia un rapporto solo quando ci sono avvisi / errori" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "Contenuto URL:" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "Vedi anche l'add-on \"More File\" dal nostro negozio." + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "Lo spazio libero nel tuo account di hosting è molto poco - rimangono solo %s Mb" + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "La memoria RAM riservata per PHP è decisamente poca (%s Mb) - si prega di aumentarla per evitare malfunzionamenti (consultare la compagnia di web hosting per maggiore supporto)" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "Gestisci gli Addon" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "Compralo" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "Ottienilo dallo store di Updraft.COM" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "attivarlo su questo sito" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "Hai un acquisto inattivo" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "Assegnato a questo sito" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "Disponibile per questo sito (attraverso l'acquisto di all-addons)" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "(a quanto pare una pre-release o rilascio ritirato)" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "Vai qui" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "Bisogno di supporto?" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "Si è verificato un errore durante il tentativo di recuperare i componenti aggiuntivi." + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "E' stata ricevuta una risposta sconosciuta. La risposta era:" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "Accesso negato - i dati del login sono sbagliati" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "Si prega di attendere durante la richiesta ..." + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "Si sono verificati errori durante la connessione a UpdraftPlus.Com:" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "Attualmente non sei connesso a un account UpdraftPlus.Com." + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "Se avete acquistato nuovi add-ons, allora segui questo link per aggiornare la tua connessione" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "Attualmente sei connesso al''account UpdraftPlus.Com." + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "Interessati riguardo la sicurezza delle password di UpdraftPlus.Com? Leggi qui." + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "Ha dimenticato i tuoi dati?" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "Non hai ancora un account (è gratis)? Ottienilo subito!" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "Connettiti con il tuo account UpdraftPlus.Com" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "La versione del server web di PHP è troppo vecchia (" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "Sembra che tu abbia installato una versione obsoleta del plugin Updraft - forse li hai confusi?" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "Vai qui per iniziare l'installazione." + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "UpdraftPlus non è ancora installato." + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "Vai qui per attivarlo." + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "UpdraftPlus non è ancora attivo." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "Vai qui per la connessione." + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "Non ti sei ancora connesso al tuo account Updraft.Com per abilitare la lista degli add-ons acquistati." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "Senza di esso, la crittografia sarà molto più lenta." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "Il tuo webserver non ha installato il modulo %s." + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "(Sembra che tu sia già autenticato, se hai un problema puoi comunque autenticarti di nuovo e aggiornare il tuo accesso)." + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "Trascina i file di backup qui" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "Gestisci WordPress da linea di comando - enorme risparmio di tempo" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "Scopri WordShell" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "Vuoi altre funzionalità, o supporto garantito a pagamento? Scopri come su UpdraftPlus.Com" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "Il web server ha restituito un codice di errore (riprova, o controlla i log del server web)" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "L'operazione di ripristino è iniziata. Non premere stop e non chiudere il browser fino a quando non viene segnalato la fine." + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "Se si esclude sia il database che i files, allora si è escluso tutto!" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "Sito home:" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "Opzioni di Archiviazione Remota" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "(i logs possono essere ritrovati nella pagine dei settaggi di UpdraftPlus)" + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "Ricorda questa scelta per la prossima volta (si potrà cambiare anche in seguito)" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "Caricamento fallito" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "È possibile inviare una copia di backup a più di una destinazione con un add-on." + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "Nota: la barra di avanzamento che segue si basa sulle fasi, non sul tempo. Non interrompere il backup solo perché sembra essere rimasto nello stesso posto per un po '- che è normale." + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "(%s%%, file %s di %s)" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "Per saperne di più su come funziona..." + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "Errore: Si è in grado di accedere, ma non è possibile creare con successo un file in quella posizione." + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "Errore: Si è in grado di accedere e passare alla directory indicata, ma non è possibile creare con successo un file in quella posizione." + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "Utilizza SCP invece che SFTP" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "Settaggio utente SCP/SFTP" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "Settaggio host SCP/SFTP" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "Il tentativo di inviare il backup tramite e-mail non è riuscita (probabilmente il backup era troppo grande per questo metodo)" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "Il backup è di: %s." + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "%s impostazioni del risultato del test:" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "(Non finito)" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "Se si vedono più backup di quello che ci si aspetta, probabilmente è perché la cancellazione dei vecchi set di backup non avviene fino a quando non si completa un backup nuovo." + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "Non inserirlo dentro i tuoi upload o nella directory dei plugins, perché causerà ricorsione (backup di backup di backup di ...)." + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "Questo è dove UpdraftPlus scriverà i file zip che crea inizialmente. Questa directory deve essere scrivibile dal server web. Esso è relativo alla directory di contenuto (che di default è chiamato wp-content)." + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "Job ID: %s" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "Ultima attività: %ss fa" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "successiva ripresa: %d (dopo %ss)" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "Sconosciuto" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "Backup finito" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "Aspettare il tempo previsto per riprovare a causa di errori." + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "Potatura vecchi set di backup" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "Caricamento dei files nell'archiviazione remota" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "database crittografato" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "Crittografia del database" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "Backup del database creato" + +#: admin.php:3359 +msgid "table: %s" +msgstr "tabella: %s" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "Creazione di backup del database" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "Creato zip di backup dei file" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "Creazione di file di backup zip" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "Backup avviato" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "Backup in corso:" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "Lo scheduler è disabilitato nella tua installazione di WordPress tramite l'impostazione DISABLE_WP_CRON. Nessun backup può essere eseguito (anche "Backup Now"), a meno che non sia impostata una funzione per chiamare lo scheduler manualmente, o fino a quando non viene abilitato." + +#: restorer.php:646 +msgid "file" +msgstr "file" + +#: restorer.php:639 +msgid "folder" +msgstr "Cartella" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "UpdraftPlus ha bisogno di creare %s nella directory di contenuti, ma non è riuscito nella creazione - si prega di controllare i permessi dei file e consentire l'accesso (%s)" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "Il backup non è ultimato; è stata rischedulata una ripresa." + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "Il tuo sito web è visitato raramente e UpdraftPlus non sta ottenendo le risorse sperate, ti consigliamo di leggere questa pagina:" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "L'autenticazione %s non può andare avanti, perché qualcos'altro sul tuo sito l'ha interrotta. Prova a disabilitare gli altri plugin e a fare il passaggio a un tema predefinito. (In particolare, si sta cercando il componente che invia l'output (molto probabilmente avvertimenti e/o errori PHP) prima dell'inizio della pagina. Spegnere le impostazioni di debug può anche aiutare)." + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "Il tuo limite di memoria PHP (fissato dalla società di web hosting) è molto basso. UpdraftPlus ha tentato di sollevarlo, ma senza successo. Questo plugin può lavorare con un limite di memoria di almeno di 64 Mb - soprattutto se si sono caricati file di grandi dimensioni (anche se d'altra parte, molti siti avranno successo con un limite di 32Mb - la vostra esperienza può variare)." + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "Procedere con l'aggiornamento" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "Non abortire dopo aver premuto Procedi sotto - attendere il backup completo." + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "UpdraftPlus Backup automatico" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "Si sono verificati errori:" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "Creazione del backup con UpdraftPlus..." + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "Backup Automatico" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "Creazione del backup del database con UpdraftPlus in corso..." + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "Non si dispone di autorizzazioni sufficienti per aggiornare questo sito." + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "temi" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "plugin" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "Avvio backup automatico..." + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "Creazione di %s e backup del database con UpdraftPlus..." + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Backup Automatico (se rilevante) di plugin, temi e il database di WordPress con UpdraftPlus prima di aggiornare" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "Se non si è sicuri, è consigliabile di non procedere: si potrebbe distruggere questa installazione di WordPress." + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "Questo non sembra un backup valido del core di WordPress - il file %s è mancante." + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "Impossibile aprire il file .zip (%s) - impossibile pre-analizzare il file per controllarne l'integrità." + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "Impossibile leggere il file .zip (%s) - impossibile pre-processare il file per verificarne l'integrità." + +#: admin.php:2310 +msgid "More plugins" +msgstr "Altri plugin" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "Supporto" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "UpdraftPlus non è riuscito a trovare il prefisso della tabella durante la scansione dell backup del database." + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "In questo backup del database mancano le tabelle del core di WordPress: %s" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "Si sta importando da una nuova versione di WordPress (%s) ad una più vecchia (%s). Non ci sono garanzie che WordPress sia in grado di gestire questo." + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "Il database è troppo piccolo per essere un database di WordPress valido (dimensione: %s Kb)." + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "Aggiornamento Tema" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "Aggiornamento Plugin" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "Al sicuro con un backup automatico" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "Respingere (per %s settimane)" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "Il percorso di caricamento (%s) non esiste - reset (%s)" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "Se è ancora possibile leggere queste parole dopo che il caricamento della pagina è terminato, allora c'è un problema JavaScript o jQuery nel sito." + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "Il fil eè stato caricato." + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "Stato di risposta del server sconosciuto:" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "Risposta del server sconosciuta:" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "Questa chiave di decifratura verrà tentata:" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "Segui questo link per tentare la decrittazione e scaricare il file di database sul tuo computer." + +#: admin.php:584 +msgid "Upload error" +msgstr "Errore caricamento" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "Questo file non sembra essere un archivio database crittografato da UpdraftPlus (questi file sono file gz.crypt che hanno un nome come:. Backup_(data)_(nome del sito)_(codice)_db.crypt.gz)." + +#: admin.php:582 +msgid "Upload error:" +msgstr "Errore di caricamento:" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "(assicurarsi che si stava tentando di caricare un file zip precedentemente creato da UpdraftPlus)" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "e poi, se vuoi," + +#: admin.php:572 +msgid "Download to your computer" +msgstr "Scarica sul tuo computer" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "Cancella dal tuo web server" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "Esempi di provider di storage S3-compatibili:" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "Non verrà cancellato nessun archivio dopo averlo scompattato, perché non c'è un cloud storage per questo backup" + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "Sembra che uno o più archivi di questo set multi-archivio sia mancante." + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "(%d archivi nel set)." + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "Dividi gli archivi ogni:" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "Errore: il server ha inviato una risposta sconosciuta (JSON)." + +#: admin.php:563 +msgid "Warnings:" +msgstr "Attenzione:" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "Errore: il server ha inviato una risposta vuota." + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "Questo sembra un file creato da UpdraftPlus, ma questa installazione non riconosce questo tipo di oggetto:%s. Forse è necessario installare un add-on?" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "I file di archivio di backup sono stati elaborati, ma con alcuni errori. Avrete bisogno di cancellare e correggere gli eventuali problemi prima di riprovare." + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "I file di archivio di backup sono stati elaborati, ma con alcune avvertenze. Se tutto va bene, premere nuovamente Ripristina per procedere. Altrimenti, annullare e correggere eventuali problemi." + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "L'archivio di backup è stato processato correttamente. Ora premi ancora Ripristina per procedere." + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "Questo set di backup multiarchivio sembra che non comprenda il seguente archivio: %s" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "il file (%s) è stato trovato, ma ha una dimensione differente da quella prevista (%s invece che %s) - potrebbe essere corrotto." + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "Il file è stato trovato, ma ha dimensione nulla (è necessario ri-caricare il file): %s" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "File non trovato (è necessario caricarlo): %s" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "Nessun set di backup esistente" + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "L'archivio di backup di questo file non è stato trovato. Il metodo di archiviazione remota in uso (%s) non ci permette di recuperare il file. Per eseguire qualsiasi ripristino con UpdraftPlus, è necessario ottenere una copia di questo file e posizionarlo all'interno della cartella di lavoro di UpdraftPlus" + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "Impossibile spostare la directory (controllare i permessi e le quote del disco): %s" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "Impossibile spostare il file (controllare i permessi e le quote del disco): %s" + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "Spostamento del backup scompattato in posizione..." + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "Impossibile aprire il file .zip (%s) - %s" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "Percorso cartella di root di WordPress sul server: %s" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "end-point %s" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "... e molti altri!" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "S3 (Compatibile)" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "Il file non è presente in locale - è necessario il recupero dallo storage remoto" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "Ricerca archivio %s: nome file:%s" + +#: admin.php:4836 +msgid "Final checks" +msgstr "Controlli Finali" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "Selezionare questa opzione per eliminare tutti i file di backup superflui dal server al termine del backup stesso (ad esempio, se si deseleziona, tutti i file spediti in remoto rimarranno anche in locale, e tutti i file in locale non saranno soggetti ai limiti di ritenzione)." + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "Trascinare qui i file di database crittografati (file db.gz.crypt) per caricarli per la decrittazione" + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "Il vostro percorso della cartella wp-content sul server: %s" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "Cronologia di backup raw" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "Mostra backup raw e lista file" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "Elaborazione file - attendere prego...." + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "Si prega di consultare questa FAQ per un aiuto su che cosa fare a riguardo." + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "La tua installazione di WordPress ha un problema con l'output in più spazi bianchi. Questo può corrompere i backup che si scaricano da qui." + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "Impossibile aprire il file di database." + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "Impossibile scrivere il database decodificato sul filesystem." + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "Backup noti (raw)" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "Impossibile enumerare i file nella directory." + +#: restorer.php:939 +msgid "Files found:" +msgstr "File trovati:" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "Utilizzo directory dal backup: %s" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "Il motore tabella richiesto (%s) non è presente - cambio a MyISAM." + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "Questo appare come una migrazione (il backup è da un sito con un indirizzo / URL diverso), ma non è stata selezionata l'opzione di ricerca e sostituzione del database. Questo è di solito un errore." + +#: admin.php:4908 +msgid "file is size:" +msgstr "il file ha dimensioni:" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "Vai qui per maggiori informazioni." + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "Alcuni file sono ancora in download o in fase di elaborazione - attendere prego." + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "Questo set di backup è di un sito diverso - non si tratta di un ripristino, ma di una migrazione. È necessario il Migrator add-on per eseguire questo compito." + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "Il fuso orario utilizzato è quello specificato nelle impostazioni generali di Wordpress, in Impostazioni -> Generali." + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "Inserisci nel formato HH:MM (es. 14:22)" + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "caricamento con %s fallito" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "%s login fallito" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "Non risulti autenticato con %s" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "Accesso %s fallito durante l'eliminazione (vedi il file di log per ulteriori informazioni)" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "Non risulti autenticato con %s (in fase di eliminazione)" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "Errore di Dropbox: %s (vedi il file di log per ulteriori informazioni)" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "Errore - download da %s fallito" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "Errore - non esiste nessun file in %s" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "Errore %s" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "Errore %s - caricamento del file fallito" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "Errore %s - riassemblaggio delle porzioni di file fallito" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "Autenticazione %s fallita" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "Errore %s" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "La cartella di backup specificata esiste, ma non è scrivibile." + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "La cartella di backup specificata non esiste." + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "Attenzione: %s" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "Esecuzione ultimo backup:" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "Il file è di dimensioni molto grandi: %s (dimensione: %s Mb)" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "%s: file illeggibile - impossibile eseguirne il backup" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "La tabella %s ha un numero di campi elevato (%s) - ci auguriamo che il vostro hosting vi permetta sufficienti risorse per riversare questa tabella nel backup" + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "Errore durante la chiusura del file di database finale" + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "Riscontrati avvisi:" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "Backup avvenuto e completato apparentemente con successo (riscontrati avvisi)" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "Il tuo spazio disco disponibile si sta esaurendo - solo %s Mb rimanenti" + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "Nuovo Sito:" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "ERRORE: URL del sito già preso." + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "Sito migrato (da UpdraftPlus)" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "Inserire i dettagli per il nuovo sito all'interno di una installazione multi-sito:" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "Informazioni necessarie per continuare:" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "Attivazione del tema da rete: " + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "Plugin processato:" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "Controlla i tuoi permessi di accesso al file: non è possibile creare ed accedere alla cartella:" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "Alcuni server pubblicizzano che l'FTP criptato è disponibile, ma poi ritornano un errore di time-out (dopo un lungo periodo di tempo) quando si prova ad utilizzarlo. Se questo dovesse succedere, vai in \"Opzioni Avanzate\" (sotto) e disabilitare SSL." + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "L'installazione di PHP sul tuo server non include un modulo necessario (%s). Contattare il supporto del provider di web hosting, e chiedere di abilitarlo." + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "Si prega di verificare i propri dati di accesso." + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "L'errore riportato da %s è:" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "Si prega di fornire le informazioni richieste, e quindi di continuare." + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "Impossibile eliminare le tabelle dal database, la cancellazione avverrà tramite comando DELETE (%s)" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "Impossibile creare nuove tabelle, il comando è tralasciato (%s)" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "Informazioni sul sito:" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "Il tuo utente per l'accesso al database non ha i diritti per creare tabelle. Cercheremo di ripristinare semplicemente svuotando le tabelle; questo dovrebbe funzionare fino a quando a) si esegue il ripristino di una versione di WordPress con la stessa struttura di database, e b) Il database importato non contiene le tabelle che non sono già presenti sul sito sul quale importare." + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "Attenzione:" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "Esecuzione su un sito WordPress multi-sito - ma il tuo backup non è per un sito multi-sito. " + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "Esclusione del ripristino del core WordPress quando si importa un singolo sito in una installazione multi-sito. Se c'è qualcosa di necessario nella tua cartella WordPress allora sarà necessario ri-aggiungerlo manualmente dal file .zip." + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "L'installazione PHP del tuo server web non ha incluso un modulo necessario (per %s - nome modulo %s). Contattare il supporto del provider di web hosting e chiedere di abilitarlo." + +#: admin.php:596 +msgid "Close" +msgstr "Chiudi" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "Risposta sconosciuta:" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "Per inviare a più di un indirizzo, separate ognuno da una virgola." + +#: admin.php:576 +msgid "PHP information" +msgstr "Informazioni PHP" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "zip eseguibile trovato:" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "Mostra informazioni PHP (phpinfo)" + +#: admin.php:2627 +msgid "Get it here." +msgstr "Lo trovi qui." + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "Prova il nostro \"Migrator\" add-on. Dopo averlo usato una volta, avrete ammortizzato il costo di acquisto rispetto al tempo necessario per copiare un sito a mano." + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "Vuoi migrare o clonare/duplicare un sito?" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "Leggi questo articolo per vedere passo-passo com'è fatto." + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "Migrare sito" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "Eliminazione ... Si prega di lasciare il tempo per le comunicazioni con l'archiviazione remota per completare" + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "Cancellazione anche dall'archiviazione remota" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "Ultime notizie da UpdraftPlus.com:" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "Clona/Migra" + +#: admin.php:2304 +msgid "Premium" +msgstr "Premium" + +#: admin.php:2305 +msgid "News" +msgstr "Notizie" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "Set di backup non trovato" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "%s - impossibile eseguire il backup di questo; la cartella corrispondente non esiste (%s) " + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "Collegamento RSS" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "Collegamento al Blog" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "Iscriviti al blog di UpdraftPlus per avere le ultime notizie e le offerte" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "Analisi impostazioni di %s..." + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "In alternativa, è possibile inserire manualmente nella cartella UpdraftPlus (solitamente wp-content/updraft), ad esempio via FTP, e quindi utilizzare il link \"nuova scansione\" di cui sopra." + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "Modalità di debug di UpdraftPlus attivata. E' possibile visualizzare avvisi di debug in questa pagina non solamente di UpdraftPlus, ma di qualsiasi altro plug-in installato. Si prega verificare che l'avviso che state vedendo sia generato da UpdraftPlus prima di inviare una richiesta di supporto." + +#: admin.php:880 +msgid "Notice" +msgstr "Nota" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "Errori riscontrati:" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "Rescan in corsco (ricerca di backup uploadati manualmente nello spazio interno di archiviazione).." + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "Inizio ricerca di questo termine" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "Archivia in" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "\"%s\" non ha una chiave primaria, necessaria modifica manuale sulla linea %s." + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "linee: %d" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "Tempo necessario (secondi):" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "Errori:" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "Comandi di aggiornamento SQL eseguiti:" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "Cambiamenti fatti:" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "Righe esaminate:" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "Tabelle esaminate:" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "Impossibile caricare la lista delle tabelle" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "Ricerca e sostituzione del database: sostituisci %s nel backup con %s" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "Attenzione: l'URL del database del sito (%s) è differente dalla posizione originale (%s)" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "Nessuna modifica: l'URL del sito è già: %s" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "Errore: parametro vuoto inatteso (%s, %s)" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "Questa opzione non è stata selezionata." + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "Database: ricerca e sostituzione dell'URL del sito" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "Errore: Codice di ritorno dell'operazione %s non conosciuto." + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "Errore: Non è stato possibile avviare l'operazione %s" + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "(ulteriori informazioni)" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "Ricerca e sostituzione della posizione del sito nel database (migrazione)" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "Tutti i riferimenti alla posizione del sito nel database saranno sostituiti con l'URL del sito attuale, che è:%s" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "Caricamenti dal blog" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "Plugin essenziali" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "Non hai il permesso di accedere a questa pagina." + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "Non si dispone di autorizzazioni sufficienti per accedere a questa pagina." + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "Installazione Multi-sito" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "Inizio prossima volta è " + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "Errore: la porta deve essere un numero intero." + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "Password" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "Nome Utente" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "Nome Host" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "Dove cambiare cartella dopo il login - spesso questo è relativo alla vostra cartella di home." + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "Percorso cartella" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "Password" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "Porta" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "Host" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "Errore %s: download fallito" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "Controllare le autorizzazioni file: Impossibile creare ed entrare con successo:" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "%s non trovato" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "La crittografia esplicita viene utilizzato come impostazione predefinita. Per forzare la crittografia implicita (porta 990), aggiungere: 990 al vostro server FTP sotto." + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "E' disponibile l' FTP crittografato, e sarà utilizzato automaticamente come prima scelta (per poi passare al non criptato, se non dovesse andare a buon fine), a meno che non si disattivi utilizzando le opzioni avanzate. Il pulsante 'Test FTP Login' vi dirà che tipo di connessione è in uso." + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "Nessun backup della cartella %s: non si è trovato nulla da backuppare" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "Fare attenzione a ciò che si inserisce: se si inserisce / allora verrà creato un file .zip contenente il tuo intero webserver" + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "Se utilizzato, inserire un percorso assoluto (non è relativo alla vostra installazione di WordPress)." + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "Se non si è sicuri di cosa serva questa opzione, si consiglia di disattivarla." + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "Inserire la catrella" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "Altri files" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "WordPress core (comprese le eventuali aggiunte alla cartella principale di WordPress)" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "I file sopra comprendono tutto in una installazione di WordPress" + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "Sovrascrittura wp-config.php" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "Core WordPerss" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "Errore: impossibile copiare un file in quella directory - controlla le tue autorizzazioni" + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "Errore" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "URL WebDAV" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "Scrittura locale non riuscita: impossibile eseguire il download" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "Errore nell'apertura di file remoto: impossibile eseguire il download" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "Parte %s: rilevato errore %s " + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "Non sono state trovate impostazioni di %s" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "Errore: Log-in eseguito correttamente, ma non siamo riusciti a creare un file nella directory data." + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "Abbiamo effettuato correttamente il login, e confermato la nostra capacità di creare un file nella directory data (tipo di accesso:" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "Errore: Non è possibile eseguire il log-in con queste credenziali" + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "Errore: Nessun dettaglio sul server è stato fornito." + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "Deve essere esistente" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "Se si desidera la crittografia (ad esempio per memorizzare dati aziendali sensibili), è disponibile un add-on." + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "UpdraftPlus regolare supporta solo FTP non cifrato." + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "Nome del tuo account %s: %s" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "anche se parte delle informazioni restituite non era come previsto - la situazione potrebbe essere diversa" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "Hai autenticato il tuo account %s" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "c'è un add-on per questo." + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "Se si esegue il backup di più siti nello stesso Dropbox e si vuole organizzare con sottocartelle, allora" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "I backup vengono salvati in" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "Si vuole utilizzare le sotto-cartelle?" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "Errore: Impossibile caricare il file %s (vedi il file di log per maggiori informazioni)" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "Sembra che non si sia autenticati con Dropbox" + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "La comunicazione con %s non era cifrata." + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "La comunicazione con %s era cifrata" + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "Accesso al bucket ottenuto, ed è stato possibile creare files al suo interno." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "Accesso al bucket ottenuto, ma il tentativo di creare un file in esso è fallito." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "Errore" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "Errore: Impossibile accedere o creare il bucket con successo. Si prega di verificare le credenziali di accesso, e se queste sono corrette si consiglia di provare un altro nome del bucket (un altro utente %s potrebbe già aver preso il suo nome)." + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "regione" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "Errore: Nessun dettaglio del bucket è stato inserito." + +#: methods/s3.php:961 +msgid "API secret" +msgstr "API segreto" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "Inserire solo il nome del bucket oppure il bucket e il percorso. Esempi: mybucket, mybucket/mypath" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "posizione %s" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "Chiave segreta %s" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "Chiave di accesso %s" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "Se si trovano errori sui certificati SSL, allora vai qui per un aiuto." + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "Ottieni la tua chiave di accesso e la chiave segreta dalla console %s, quindi scegli un nome bucket (Globally Unique - tutti gli utenti %s) (lettere e numeri) (e facoltativamente un percorso) da utilizzare per lo storage. Il bucket verrà creato, se non esiste già." + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "Errore %s: Impossibile accedere al bucket %s. Controllare le autorizzazioni e le credenziali." + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "Errore %s: Impossibile eseguire il download di %s. Controllare le autorizzazioni e le credenziali." + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "%s re-assembly error (%s): (guarda il file di log per più informazioni)" + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "Caricamento di %s (%s) riassemblaggio fallito (vedere il log per maggiori dettagli)" + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "%s parte %s: caricamento fallito" + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "Errore %s: il file %s è stato accorciato in modo imprevisto" + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "upload di %s: impossibile ottenere l'uploadID per il caricamento multiparte - vedere il file di log per maggiori dettagli" + +#: methods/email.php:69 +msgid "Note:" +msgstr "Nota:" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "Backup di WordPress" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "Si può accedere al contenitore, ed è possibile creare files al suo interno." + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "Errore File remoto - abbiamo accede al contenitore, ma è impossiile creare un file all'interno di esso" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "Errore: nessun dettaglio sul contenitore è stato dato." + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "Username" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "Chiave API" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "Errore: %s non è stato fornito." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "il modulo %s di UpdraftPlus richiede %s. Si prega di non presentare alcuna richiesta di supporto, non ci sono alternative." + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "Contenitore di files remoti" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "Chiave API Cloud Files" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "Nome utente per file Cloud" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "UK" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "USA (default)" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "Cloud USA oppure UK" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "Inoltre, si dovrebbe leggere questa importante FAQ." + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "Ottieni la tua chiave API dalla console cloud di Rackspace (leggi le istruzioni qui), quindi scegliere il nome del contenitore da utilizzare per lo storage. Il contenitore verrà creato, se non esiste già." + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "Test dei settaggi %s" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "Errore durante il download del file remoto: Impossibile scaricare (" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "Errore durante l'apertura del file locale: Impossibile fare il download" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "Errore File remoti - impossibile caricare il file" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "Errore %s: Impossibile caricare il file." + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "Errore %s: Impossibile aprire il file locale" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "Errore Files remoti - impossibile creare ed accedere al contenitore" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "Autenticazione dei file remoti fallita" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "Dopo aver salvato le impostazioni (facendo clic su 'Salva modifiche' sotto), fare clic su questo collegamento per completare l'autenticazione con Google." + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "Autentica con Google" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "Segreto del Client" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "Se Google in seguito visualizzerà il messaggio \"invalid_client\", allora non si è inserito un ID cliente valido." + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "ID Cliente" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "È necessario aggiungere quanto segue come reindirizzamento autorizzato URI (alla voce \"Altre opzioni\") quando richiesto" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "Selezionare 'Applicazione Web' come il tipo di applicazione." + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "Per informazioni più esaustive, compresi screenshot, segui questo collegamento. La descrizione che segue è sufficiente per gli utenti più esperti." + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "%s è una buona scelta, perché UpdraftPlus supporta i caricamenti frammentati - non importa quanto sia grande il vostro sito, UpdraftPlus può caricare un po 'alla volta, senza avere problemi con il timeout." + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "Account non autorizzato." + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "Impossibile caricare su %s" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "Account pieno: il tuo account %s ha solamente %d bytes liberi, ma il file da caricare è di %d bytes" + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "Non si è ancora ottenuto un token di accesso da parte di Google - è necessario autorizzare o ri-autorizzare la connessione a Google Drive." + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "hai autenticato il tuo account %s." + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "Success" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "Quota di utilizzo %s: %s %% utilizzata, %s disponibile" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "Autorizzazione fallita" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "Nessun token di aggiornamento è stato ricevuto da Google. Questo spesso significa che si è inserito il \"Segreto Client\" in modo errato, o che non si è stati ancora ri-autenticati (sotto) in quanto correzione. Si prega di ricontrollare, e di seguire il link per autenticarsi nuovamente. Infine, se questo non dovesse funzionare, utilizzare la modalità expert per cancellare tutte le impostazioni, creare un nuovo nuovo ID cliente di Google / segreto, e iniziare nuovamente." + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "Clicca su questo collegamento per averlo." + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "Il supporto a %s è disponibile con un add-on" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "L'add-on %s di UpdraftPlus non è installato - ottenerlo da %s" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "È necessario autenticare nuovamente con %s, le credenziali esistenti non funzionano." + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "OK" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "Il prefisso di tabella è cambiato: cambio in accordo i campo(i) della tabella %s:" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "Finito: linee processate: %d in %.2f secondi" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "la query di database in corso di esecuzione è:" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "sarà ripristinato come:" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "Vecchio prefisso di tabella" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "Backup di:" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "Accesso al database: l'accesso diretto a MySQL non è disponibile, quindi si utilizzerà wpdb (sarà notevolmente più lento)" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "Impossibile aprire il file del database" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "Impossibile trovare il file del database" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "Attenzione: PHP safe_mode è attivo sul tuo server. Questo può facilmente portare a Timeout. Nel caso dovesse verificarsene uno è necessario ripristinare manualmente il file tramite phpMyAdmin o simili." + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "wp-config.php da backup: ripristino (come da richiesta dell'utente)" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "wp-config.php dal backup: verrà ripristinato come wp-config-backup.php" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "Impossibile scrivere il database decodificato sul filesystem" + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "Impossibile creare una cartella temporanea" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "Impossibile cancellare la catrella di lavoro dopo il rispristino." + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "Impossibile cancellare le vecchie cartelle." + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "Pulizia del sistema..." + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "Ripristino del database (su un sito di grandi dimensioni questa operazione potrebbe richiedere molto tempo - se si verifica un timeout (che può accadere se la vostra società di web hosting ha configurato il vostro hosting per limitare le risorse) è necessario utilizzare un metodo diverso, come ad esempio phpMyAdmin) ..." + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "Il database decriptato con successo." + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "Decriptaggio database (potrebbe richiedere un po' di tempo)..." + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "Scompattamento del backup..." + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "Copia di questa entità non è riuscita." + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "File di backup non disponibile." + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "UpdraftPlus non è in grado di ripristinare direttamente questo tipo di entità. Il ripristino deve essere fatto manualmente." + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "Impossibile trovare uno dei file per il ripristino" + +#: admin.php:5009 +msgid "Error message" +msgstr "Messaggio d'errore" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "I registri di backup non contengono informazioni valide sulle dimensioni di questo file." + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "Dimensione stimata dell'archivio:" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "Se si fa la richiesta di assistenza, si prega di includere le seguenti informazioni:" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "ANNULLATO: Impossibile trovare le informazioni sulle entità da ripristinare." + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "UpdraftPlus Ripristino: avanzamento" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "Questo backup non esiste nella Cronologia Backup - ripristino interrotto. Timestamp:" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "Dopo aver premuto questo pulsante, si potrà scegliere quali componenti si desidera ripristinare" + +#: admin.php:4572 +msgid "Press here to download" +msgstr "Premi qui per il download" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "Cancella questo set di backup" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "Buona notizie: la comunicazione del tuo sito con %s può essere cifrata. Se si notano errori dovuti alla crittografia, cercare in \"Impostazioni Avanzate\" per ulteriori informazioni." + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "" +"L'installazione del web server PHP/Curl non supporta l'accesso tramite HTTPS.\n" +"E' impossibile accedere a %s senza questo supporto. Si prega di contattare il supporto del provider di web hosting. %s richiede Curl + https. Si prega di non presentare alcuna richiesta a sostegno, non ci sono alternative." + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "L'installazione PHP/Curl sul server web non supporta l'accesso tramite HTTPS. Le comunicazioni con %s saranno crittografate. chiedete al vostro host web di installare Curl/SSL al fine di poter utilizzare la cifratura (tramite un add-on)." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "L'installazione di PHP sull tuo server web non ha incluso un modulo necessario (%s). Contattare il supporto del provider di web hosting." + +#: admin.php:4062 +msgid "Save Changes" +msgstr "Salva i cambiamenti" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "Scegliendo questa opzione si riduce la sicurezza, impedendo a UpdraftPlus di utilizzare SSL per l'autenticazione e il trasporto criptato, dove possibile. Si noti che alcuni provider di cloud storage non consentono questo (ad esempio Dropbox), così con quei fornitori questa impostazione non avrà alcun effetto." + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "Disattivare SSL del tutto, se possibile" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "Ricorda che non tutti i metodi di backup su Cloud utilizzano obbligatoriamente un autenticazione SSL." + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "La scelta di questa opzione riduce la sicurezza impedendo a UpdraftPlus di verificare l'identità dei siti cifrati a cui si collega (ad esempio Dropbox, Google Drive). Ciò significa che UpdraftPlus userà SSL solo per la crittografia del traffico, e non per l'autenticazione." + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "Non verificare i certificati SSL" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "Per impostazione predefinita UpdraftPlus utilizza il proprio archivio di certificati SSL per verificare l'identità dei siti remoti (cioè per assicurarsi che sta parlando con il vero Dropbox, Amazon S3, ecc, e non un attaccante). Teniamo questi certificati aggiornati. Tuttavia, se si verificasse un errore SSL, allora la scelta di questa opzione può aiutare ( Scegliendo questa opzione, si permette a UpdraftPlus di utilizzare la collezione di certificati del vostro web server) ." + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "Utilizza i certificati SSL del server" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "Se questo è infruttuoso controllare i permessi sul vostro server o cambiarlo in un'altra cartella che sia scrivibile dal tuo web server." + +#: admin.php:3697 +msgid "click here" +msgstr "Clicca qui" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "o, per resettare questa opzione" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "La cartella di backup specificata è scrivibile, che è buona cosa." + +#: admin.php:4009 +msgid "Backup directory" +msgstr "Cartella di Backup" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "Cancella backup locale" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "fare clic su questo elemento per mostrare ulteriori opzioni, non perdete tempo a meno che non hai un problema o sei curioso." + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "Mostra impostazioni avanzate" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "Impostazioni avanzate" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "Debug mode" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "Impostazioni Avanzate e di Debug" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "Inizio del backup richiesto..." + +#: admin.php:591 +msgid "Cancel" +msgstr "Annulla" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "Nessuno" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "Scegli il tuo Storage Remoto" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "Decifra manualmente un file di backup del database" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "Frase di crittografia del database" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "E-mail" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "Le cartelle sopra contengono tutto, tranne il core di WordPress che può essere scaricato da WordPress.org." + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "Escludi questi:" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "Eventuali altre directory trovati dentro wp-content" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "Includere nei files di backup" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "ad esempio, se il server è occupato di giorno si può eseguirlo durante la notte" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "Fissare il momento in cui un backup deve avvenire," + +#: admin.php:3683 +msgid "Monthly" +msgstr "Mensile" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "Quindicinale" + +#: admin.php:3681 +msgid "Weekly" +msgstr "Settimanale" + +#: admin.php:3680 +msgid "Daily" +msgstr "Giornaliero" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "Scarica il file di log" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "La cartella esiste, ma il server web non ha il permesso di scrivere." + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "La cartella è stata creata, ma abbiamo dovuto cambiare i permessi dei file a 777 (tutto scrivibile) per essere in grado di scrivere. Si consiglia di verificare con il fornitore di hosting che questo non causerà alcun problema" + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "La richiesta di creazione della cartella al file system è fallita." + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "Cancella" + +#: admin.php:3418 +msgid "show log" +msgstr "Mostra log" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "Questa operazione eliminerà tutte le impostazioni di UpdraftPlus - si è sicuri di volerlo fare?" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "conteggio" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "N.B. Questo conteggio si basa su quello che era, o non era, escluso l'ultima volta che sono state salvate le opzioni." + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "Totale (non compresso) dati su disco:" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "No" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "Si" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "Versione %s" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "Utilizzo di memoria attuale" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "Utilizzo di memoria (picco)" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "Web server:" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "Si prega di verificare UpdraftPlus Premium, oppure l'add-on stand-alone multi-sito." + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "Hai bisogno di supporto per WordPress multi-sito?" + +#: admin.php:2654 +msgid "Multisite" +msgstr "Multi-sito" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "Eseguire un backup singolo" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "Si prega di leggere questo articolo esplicativo di cose utili da sapere prima di ripristinare." + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "È possibile cercare e sostituire il database (per la migrazione di un sito web verso una nuova posizione/URL) con il Migrator add-on - segui questo collegamento per maggiori informazioni" + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "Opzione di ripristino %s:" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "Sarà necessario fare il ripristino manualmente." + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "Le seguenti entità non può essere ripristinata automaticamente: \"%s\"." + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "Il tuo server web ha il safe_mode PHP attivo." + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "Scegli i componenti da ripristinare" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "Il ripristino sostituirà i temi di questo sito, i plugin, gli upload, e i database e / o altre cartelle di contenuti (in base a ciò che è contenuto nel set di backup, e alla selezione)." + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "Ripristina backup da" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "Ripristina backup" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "Cancellazione del set di backup" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "Errore di Download: il server ha inviato una risposta non conosciuta." + +#: admin.php:570 +msgid "You should:" +msgstr "Dovresti:" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "Errore:" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "sto calcolando..." + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "UpdraftPlus - Carica file di backup" + +#: admin.php:3020 +msgid "refresh" +msgstr "aggiorna" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "Spazio sul server web in uso da UpdraftPlus" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "Google Drive" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "Se stai utilizzando questo, allora imposta Turbo/Road Mode su off" + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "Browser web Opera" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "Altre attività: " + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "Scarica il file di log più recente" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "(Niente è stato loggato)" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "Ultimo messaggio di Log" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "Ripristino" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "Esegui Backup" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "Database" + +#: admin.php:229 +msgid "Files" +msgstr "Files" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "Prossimo Backup programmato" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "Contemporaneamente al backup dei file" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "Nessuna schedulazione." + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "Questa interfaccia di amministrazione utilizza JavaScript. È necessario attivarne la gestione all'interno del tuo browser, oppure utilizzare un browser che supporti JavaScript." + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "Notifiche JavaScript" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "Elimina Vecchie Cartelle" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "Il limite corrente è:" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "Il backup è stato ripristinato." + +#: admin.php:2310 +msgid "Version" +msgstr "Versione" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "Vai alla homepage dello sviluppatore" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "Le tue impostazioni sono state cancellate." + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "Cartella di backup creata con successo." + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "Impossibile creare la cartella di backup" + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "Problemi nella rimozione della vecchia cartella, prova a cancellarla manualmente." + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "Vecchie cartelle rimosse con successo." + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "Rimuove vecchie cartelle" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "Ritorno a Configurazione di UpdraftPlus" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "Azioni" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "Ripristino avvenuto con successo!" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "Errore nel formato del nome del file - questo file non sembra un file di database crittografato e creato da UpdraftPlus" + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "Errore nel formato del nome del file - questo file sembra non sia stato creato da UpdraftPlus" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "Nessuna copia locale presente." + +#: admin.php:2072 +msgid "Download in progress" +msgstr "Download in corso" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "File pronto." + +#: admin.php:2043 +msgid "Download failed" +msgstr "Download fallito" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "Errore" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "Impossibile trovare il processo - forse è già stata completata." + +#: admin.php:1854 +msgid "Job deleted" +msgstr "Processo cancellato" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "OK. A breve si dovrebbe vedere l'attività nel campo \"Ultimo Messaggio di log\" di seguito." + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "Niente ancora loggato" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "Si prega di consultare questa FAQ se hai problemi di backup." + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "Il tuo sito web è ospitato utilizzando il web server %s." + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "UpdraftPlus non supporta ufficialmente le versioni di WordPress prima di %s. Potrebbe essere funzionante, ma se non lo fosse, si avvisa del fatto che nessun supporto è disponibile fino a quando non si esegue l'aggiornamento di WordPress." + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "Hai meno di %s di spazio libero su disco che UpdraftPlus può utilizzare per creare copie di backup. UpdraftPlus potrebbero ben esaurire lo spazio disponibile. Contattare il gestore del server (ad esempio, la vostra società di web hosting) per risolvere questo problema." + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "Attenzione" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "Add-Ons / Supporto Versione Pro" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "Settaggi" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "File consentiti" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "Impossibile creare il file zip %s. Consultare il file di registro per ulteriori informazioni." + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "Ricursione infinita: consultare il log per maggiori informazioni" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "Scopri UpdraftPlus.Com per aiuto, add-on e supporto" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "Hai bisogno di ancora più funzionalità e supporto? Scopri UpdraftPlus Premium" + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "Si prega di aiutare UpdraftPlus dando un giudizio positivo su wordpress.org" + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "Ti piace UpdraftPlus e puoi dedicarci un minuto?" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "Puoi tradurre? Vuoi migliorare UpdraftPlus per chi parla della tua lingua?" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "File non trovato" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "La chiave di decriptaggio utilizzata è:" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "Decriptaggio fallito: La causa più probabile è che sia stata utilizzata una chiave errata." + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "Decifratura fallita. Il file di database è criptato, ma non è immesso nessuna chiave di crittografia." + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "Impossibile aprire il file di backup per la scrittura" + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "Impossibile salvare la cronologia di backup perché non c'è un backup array. Backup probabilmente fallito." + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "Impossibile leggere la cartella." + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "La cartella di backup (%s) non è scrivibile o non esiste." + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "WordPress backup è completo" + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "Il tentativo di backup è terminato, a quanto pare senza successo" + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "Il backup apparentemente è riuscito ed ora è completo" + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "Errore di crittografia durante la crittografia del database. Crittografia interrotta." + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "Impossibile creare files nella cartella di backup. Il backup è annullato - controlla i settaggi di UpdraftPlus" + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "Altri" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "Uploads" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "Temi" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "Plugins" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "Nessun file di log trovato." + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "Il file di log non può essere letto." + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "Note di UpdraftPlus:" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "UpdraftPlus Backups" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-ja.mo b/plugins/updraftplus/languages/updraftplus-ja.mo new file mode 100644 index 0000000..c5041a9 Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-ja.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-ja.po b/plugins/updraftplus/languages/updraftplus-ja.po new file mode 100644 index 0000000..7371949 --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-ja.po @@ -0,0 +1,6125 @@ +# Translation of UpdraftPlus in Japanese +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-04-26 00:55:14+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: ja_JP\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "" + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "" + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "" + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "" + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "" + +#: addons/webdav.php:91 +msgid "Path" +msgstr "" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "" + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "" + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "" + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "" + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "" + +#: admin.php:2310 +msgid "FAQs" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "このプラグインの新しいバージョンが利用可能です。" + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "このプラグインは最新のものです。" + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "" + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "" + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "" + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "" + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "" + +#: methods/ftp.php:355 +msgid "login" +msgstr "" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "" + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "" + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "" + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "" + +#: admin.php:2604 +msgid "Now" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "" + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "" + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "" + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "" + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "" + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "" + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "" + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "" + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "" + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "" + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "" + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "" + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "" + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "" + +#: admin.php:3420 +msgid "stop" +msgstr "" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "" + +#: admin.php:3092 +msgid "this backup set" +msgstr "" + +#: admin.php:3020 +msgid "calculate" +msgstr "" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "" + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "" + +#: admin.php:601 +msgid "Saving..." +msgstr "" + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:557 +msgid "Fetching..." +msgstr "" + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "アップロード先URL:" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "予期しないエラー:クラス'%sが'が見つかりません。(あなたのUpdraftPlusのインストールが壊れているようです。 - 再インストールしてみてください)" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "必要な%sのPHPモジュールがインストールされていない - それを有効にするには、Webホスティング会社に問い合わせてください。" + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "テーブル %s スキップ:この表は復元されません" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "マルチサイトインストールに通常のWordPressのサイトをインポートするには%sが必要です。" + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "このプロセスの重要な情報については、このリンクをお読みください。" + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "新しいサイトとしてインポートします。" + +#: admin.php:2884 +msgid "Dismiss" +msgstr "取り下げ" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "必要な情報を入力してください。" + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "続きを読む..." + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "注意:このオプションは、データベースとアップロードの回復に影響を与える - WordPressで(例えばプラグインのような)他のファイルの実体は、ネットワーク全体で共有されます。" + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "いくつかのサイト全体のデータを含んでもよいです。" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "全てのサイト" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "どのサイトを復元しますか" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "アンパックバックアップから(もしあれば)他のデータを削除します。id=%s専用サイトを復元します" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "エラー:問題サイトのエントリを作成します。" + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "選択したアドレスに新しいサイトを作成する際にエラー:" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "このバックアップを復元するために必要な情報が与えられていなかった(%s)" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "ユーザーにインポートされたコンテンツの属性" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "サイトのパスに小文字の文字や数字を使用する必要があります。" + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "この機能は、%sと互換性がありません" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "マルチサイトに単一のサイトをインポートし、インストール" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "WP-コンテンツから他のコンテンツ" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "WordPress コア" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "あなた選択%sは復元に含まれる - ネットワークに単一のサイトをインポートする場合、これは/で行うことはできません。" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "WordPressのアクションを呼び出します。" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "保存した設定もバックアップされているものに影響 - 例えばファイルは除外します。" + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "スキップ中:このアーカイブは既にリストア済みです。" + +#: admin.php:3860 +msgid "File Options" +msgstr "ファイル オプション" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "リモートストレージにバックアップの送信" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "データベースバックアップスケジュール" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "増分ファイルバックアップスケジュール" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "ファイルバックアップスケジュール" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "再び、すべての設定を入力する必要があります。もしあなたが望むなら、UpdraftPlusアンインストールが/無効化する前に、これを行うことができます。" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "このボタンは、進行中のバックアップにすべてUpdraftPlus設定や進捗情報を削除します。(あなたのクラウドストレージにあるバックアップではありません)" + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "リモートストレージにこのバックアップを送信します。" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "UpdraftPlus Vaultをご確認ください。" + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "任意のリモートストレージを持っていませんか?" + +#: admin.php:5157 +msgid "settings" +msgstr "設定中" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "バックアップは、任意のリモートストレージに送信されません - %s の中のどこにも保存されていません" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "バックアップ内のすべてのファイルを含めます" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "バックアップでデータベースを含めます" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "復元中" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "あなたは復元操作が終了しておりません、 %s の前に始まっています。" + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "復元未終了" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "%s 分 %s 秒" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "バックアップの内容とスケジュール" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "プレミアム/拡張機能" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "進行中の復元操作に関する十分な情報が見つかりませんでした。" + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "ダウンロード" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "あなたは、バックアップファイルに選択しましたが、何のファイル名が選択されていません" + +#: admin.php:442 +msgid "Extensions" +msgstr "拡張機能" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "アドバンス ツール" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "バケットロケーション" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "Googleはすべての場所ですべてのストレージクラスをサポートしていないことに注意してください - あなたは現在の可用性について学ぶためにGoogleの文書をお読みください。" + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "この設定は、新しいバケットを作成している場合にのみ適用されます。" + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "あなたはすべての%sのユーザーのために、ユニークであるバケット名を使用する必要があります" + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "%sの%sの混同しないでください - 彼らは独立したものです。" + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "あなたはこのバケットにアクセス権を持たない" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "西ヨーロッパ" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "東アジア太平洋" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "アメリカ西部" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "アメリカ東部" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "アメリカ東部" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "中央アメリカ" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "欧州連合" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "アジア太平洋地域" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "マルチリージョン 対応" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "アメリカ合衆国" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "ニアライン" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "耐久性が可用性を減少した" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "基本" + +#: addons/azure.php:524 +msgid "container" +msgstr "コンテナ" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "あなたがここで使用したい任意の%sの仮想フォルダのパスを入力することができます。" + +#: addons/azure.php:523 +msgid "optional" +msgstr "オプション" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "プリフィックス" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "このリンクを追跡することによって、コンテナの命名上のMicrosoftのガイドラインを参照してください。" + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "%s は存在しない場合、それが作成されます。" + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "ここで使用する%sのパスを入力します。" + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "これはあなたのAzureのログインできない - より多くの支援を必要とする場合、説明書を参照してください。" + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "アカウント名" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "Azure" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "あなたのAzureのデベロッパーコンソールでAzureの資格情報を作成します。" + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "コンテナを作成出来ない" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "コンテナにアクセス出来ない" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "移行/クローンを完了するには、あなたが今、リモートサイトにログインして、バックアップセットを復元する必要があります。" + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "オプションのテーブルは見つけられなかった" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "何もオプションまたはサイトメタ テーブルが見つかりませんでした" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "データベースのバックアップが失敗したと表示されます。" + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "バックアップディレクトリが書き込み可能ではありません(またはディスク容量がいっぱいになっている) - データベースのバックアップはすぐに失敗すると予想されます。" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "いくつかのリモート・ストレージ・プロバイダーのために必要" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "インストールされていません" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "ストレージクラス" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "このリンク先にあるバケット命名上のGoogleのガイドラインを参照してください。" + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "バケット名はグローバルに一意である必要があります。バケットが存在しない場合、それが作成されます。" + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "ここで使用する%sのバケットの名前を入力します。" + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "バケット名" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "そうしないと、あなたはそれが空白のままにすることができます。" + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "備考 まだバケットを作成していない場合、あなたが希望するなら、UpdraftPlusはあなたのためにバケットを作成したいです。" + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "ここで使用する%sのプロジェクトのIDを入力します。" + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "あなたのGoogle APIコンソールには、このリンクをたどって、そのストレージAPIを活性化し、APIアクセスセクションのクライアントIDを作成します。" + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "新しいバケットを作成できるようにするために、プロジェクトIDを入力する必要があります。" + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "プロジェクトID" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "あなたが保存して、あなたの設定をテストする前に認証を受ける必要があります。" + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "まだGoogleからのアクセストークンを取得していない - あなたは、承認またはGoogleクラウドへの接続を再承認する必要があります。" + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "あなたはこのバケットにアクセス権を持たない" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "Googleクラウド" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "%s サービス例外" + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "UpdraftPlus がきちんとインストールされませんでした。WordPress がプラグインファイルをコピーする際に失敗した可能性があります。一旦アンインストールして、再度インストールしてください。" + +#: restorer.php:767 +msgid "Deferring..." +msgstr "変更中…" + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "もしくは、より複雑なスケジュールを設定する" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "本当に UpdraftPlus から%s を削除しますか?" + +#: admin.php:3081 +msgid "Deselect" +msgstr "選択を解除する" + +#: admin.php:3080 +msgid "Select all" +msgstr "全て選択" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "選択したバックアップへのアクション" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "ここを押して、既存のバックアップセットのためのあなたのリモートストレージ内検索します。(これらは同じフォルダに格納されている場合、任意のサイトから)" + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "処理中です…" + +#: admin.php:634 +msgid "For backups older than" +msgstr "より古いバックアップ" + +#: admin.php:633 +msgid "week(s)" +msgstr "週" + +#: admin.php:632 +msgid "hour(s)" +msgstr "時間" + +#: admin.php:631 +msgid "day(s)" +msgstr "日" + +#: admin.php:630 +msgid "in the month" +msgstr "月に" + +#: admin.php:629 +msgid "day" +msgstr "日" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "(お好きなだけ)" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "付加的な保持ルールを追加しました" + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "このデータベースは、それ以降のMySQLのバージョン%sまたは以上のバージョンにする必要があります。" + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "ソースとなるデータベースに対応していない、とても古いバージョンのMySQLにあるデータベースを修復しようとしたため問題が起こりました。" + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "あなたは現在どのUpdraftPlus Vaultの割当を持っていません" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "このデータベースを使うためには MySQL をアップグレードする必要があります。" + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "データベースのバックアップは、このサイトが実行されている旧MySQLバージョン( %s)にはないMYSQLの機能が使用されます。" + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "UpdraftPlus 設定ページには広告リンクが表示されません" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "wp-content/plugins 内にある UpdraftPlus ディレクトリ名に空白が含まれています。ディレクトリ名を wp-content/plugins/updraftplus に変更してください。" + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "メールアドレス、またはパスワードを紛失しましたか?" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "UpdraftPlus.Com に登録したメールアドレスおよびパスワードを入力してください。" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "よくある質問はここをご覧ください。" + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "Amazonのサーバー側の暗号化を使用するには、このチェックボックスをオンにします" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "サーバー側の暗号化" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "もしあなたがパスワードを忘れたなら、updraftplus.com.でパスワードを変更する場合、ここにいきます。" + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "接続するために、リモートストレージの設定に移動します。" + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "%s には、リモートストレージを選択しましたが、あなたは、現在接続されていません。" + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "お支払いは、カードまたはPayPal経由で、米ドル、ユーロまたは英ポンドで行うことができます" + +#: admin.php:607 +msgid "Update quota count" +msgstr "アップデート割当数" + +#: admin.php:606 +msgid "Counting..." +msgstr "継続中・・・" + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "切断中…" + +#: admin.php:603 +msgid "Connecting..." +msgstr "接続中…" + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "現ステータスをリフレッシュします" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "ディスク容量を増やす場合はこちら" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "現在の使用量:" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "ディスク容量を増やす場合はこちら" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "%s エラー:このアーカイブ(%s)をアップロードするにはディスク容量が不足しています(%s)。" + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "切断" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "ディスク容量:" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "Vault の所有者" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "お疲れ様でした。セットアップが完了しました。" + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "サイトは UpdraftPlus Vault に接続しています。" + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "UpdraftPlus Vault に接続していません。" + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "ヘルプ" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "Eメール" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "戻る…" + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "購読はいつでもキャンセル可能です。" + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "四半期ごとの%s" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "更に詳しく" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "UpdraftPlus Vaultは99.999999999%の信頼性を達成するために、冗長データストレージと、Amazonの世界最先端のデータセンターの上に構築されています。" + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "スペースを購入済みですか?" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "オプションを表示する" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "使うのは初めてですか?" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "ボタンを押して開始します。" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "UpdraftPlus Vault なら 使いやすく安定したストレージをお得な価格で手に入れることができます。" + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "あなたが更新されていないUpdraftPlus Vaultのサブスクリプションを持っており、猶予期間の期限が切れています。数日の時間では、あなたの記憶されたデータは永久に削除されます。削除を希望されない場合は、できるだけ早く更新する必要があります" + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "更新されていないUpdraftPlus Vaultのサブスクリプションを持っており、猶予期間の期限が切れています。数日では、あなたの記憶されたデータは完全に削除されます。削除を希望しない場合は、できるだけ早く更新する必要があります。" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "あなたUpdraftPlusプレミアム購入は一年以上前です。あなたが現在UpdraftPlusプレミアム顧客に与えられる12ヶ月無料ストレージ権利を失わないようにすぐに更新する必要があります。" + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "Updraft Vault" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "削除に失敗しました:" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "圧縮の際に以下のエラーが発生しました:%s 。" + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "許可しない場合、UpdraftPlus はバックアップを削除することができません。また、削除の際に表示されるエラーを表示させないようにするには「データ保持」の設定を「最高」にしてください。" + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "削除を許可する" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "許可しない場合、UpdraftPlus で直接ダウンロードしたり修復したりすることはできず、代わりに AWS ウェブサイトで実行しなくてはなりません。" + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "ダウンロード可能" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "サイトからサイトへの直接送信ができない場合は、3つの解決法があります。そのうちの一つを試してみてください。" + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "" +"以下の点について、リモートサイトの状態をチェックしてください。\n" +"・ オンラインになっている\n" +"・ ファイアーウォールでブロックされていない\n" +"・ アクセスをブロックするようなセキュリティーモジュールが入っていない\n" +"・ UpdraftPlus のバージョンが %s 以上である\n" +"・ 正しくキーが入力されている" + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "現在あるキー" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "キーは、リモートサイトがまだ作成されている接続することを許可していない。" + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "新しいキー:" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "このサイトへのバックアップを送信後、キーを作成し、送信先のサイトで「移行」ボタンを押して、そこにキーをコピーアンドペーストするために別のサイトを可能にします。" + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "また、稼働しているリモートストレージの場所にこのバックアップを送信" + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "今押したばかりのセクション内に、このサイトのキーが作成されました。" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "このキーをコピーして、どこかに貼り付けて保存しておいてください。キーは今後2度と表示されません。" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "キーが作成されました。" + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "同じ名前のキーが既に存在しています。別の名前をつけてください。" + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "このバックアップを有効なリモートストレージにも送信する" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "あなたは(%sの)に送信しているサイトのURLは、ローカル開発のウェブサイトのように見えます。外部ネットワークから送信された場合には、ファイアウォールがこれを阻止される可能性があります。" + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "サイトは見つからなかった。" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "バックアップデータが送信されます。" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "このサイトに既存のバックアップセットを復元" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "このサイトはまだから復元するバックアップがありません。" + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "バックアップは、%sで作られました" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "この格納方法は、ダウンロードを許可しません" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "(バックアップ·セットをリモートロケーションからインポート)" + +#: admin.php:4423 +msgid "Site" +msgstr "サイト" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "バックアップは、リモートサイトに送信します。- ダウンロードすることができません " + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "これは本当にあなたが復元する前に、このウェブサイト上で使用することを目的としたバックアップセット(無関係なWebサイトのバックアップセットでない)であることをご確認ください。" + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "このバックアップ·セットは、現在のWordPressのインストール時にUpdraftPlusによって作成されなかったが、いずれかのリモートストレージに発見された、またはリモートサイトから送信されました。" + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "接続テスト..." + +#: admin.php:617 +msgid "Deleting..." +msgstr "削除中..." + +#: admin.php:616 +msgid "key name" +msgstr "キーの名前" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "どのサイトのものかわかるよう、このキーに名前をつけてください" + +#: admin.php:611 +msgid "Creating..." +msgstr "作成中..." + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "またはリモートサイトからバックアップを受信する" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "キーをここに貼り付ける" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "サイトのキーはどうやって入手するのですか?" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "送信先としてサイトを追加する場合は、そのサイトのキーを下に入力してください。" + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "または別のサイトにバックアップを送信する" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "送信" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "サイトへの送信:" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "受信サイトはまだ追加されていません。" + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "それは以下のサイトへのバックアップを送信するためのものです:" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "キーが追加されました。" + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "入力されたキーは、リモートサイト(それはこの1つに属している)に属していません。" + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "入力したキーが壊れています。もう一度入力してください。" + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "入力したキーの文字数が正しくありません。もう一度入力してください。" + +#: addons/migrator.php:1861 +msgid "key" +msgstr "キー" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "ほとんどすべてのFTPサーバは、パッシブモードをお勧めします。あなたがアクティブ・モードが必要な場合は、このチェックボックスをオフにします。" + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "パッシブモード" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "リモートパス" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "FTP パスワード" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "FTP ログイン" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "FTP サーバー" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "UpdraftPlus Migratorが新しいサイトにバックアップデータに合わせて、適切に復元操作を変更します。" + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "「移転」は「修復」とほぼ同じだといえますが、バックアップアーカイブを使って、別のサイトのコンテンツをインポートすることを指します。" + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "サイトを追加する" + +#: admin.php:608 +msgid "Adding..." +msgstr "追加中…" + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "付与されていないと主張? - おそらくあなたは既にどこかにこの購入を使用している、またはupdraftplus.comからダウンロードして、あなたの支払った期間が満了している " + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "このバックアップを使う場合、ご利用のデータベースサーバーが %s の文字セットをサポートしている必要があります。" + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "updraftplus.com にてパスワードを変更する" + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "パスワードをわすれた場合" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "パスワード再入力はこちら" + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "このボタンを押した後、どのコンポーネントを移転させたいか選択できます" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "「保存されているバックアップ」にてバックアップをインポートすることができます。" + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "設定を変更しましたが、保存されませんでした。" + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "注意:%s は大文字・小文字を識別しません。" + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "OneDriveが後であなたのメッセージ「unauthorized_client」を示している場合は、ここで有効なクライアントIDを入力していませんでした。" + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "スクリーンショットを含む長いヘルプについては、このリンクに従ってください。" + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "あなたのOneDriveデベロッパーコンソールでOneDrive資格情報を作成します。" + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "尋ねられたときあなたは(「APIの設定」の下で)自分のOneDriveコンソールの許可リダイレクトURIとして以下を追加する必要があります" + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "%s の再認証に失敗しました:" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "OneDrive" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "%s アカウントとの接続を再認証してください。" + +#: methods/email.php:73 +msgid "configure it here" +msgstr "設定はこちら" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "ブロックを削除するにはこちら" + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "必ず設定を保存してください。" + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "現在、バケットへのアクセスには IAM ユーザーアカウントが使用されています。" + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "S3 バケット" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "中国(北京)(制限あり)" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "南アメリカ(サンパウロ)" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "アジア太平洋(東京)" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "アジア太平洋(シドニー)" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "アジア太平洋(シンガポール)" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "ヨーロッパ連合(フランクフルト)" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "ヨーロッパ連合(アイルランド)" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "米国政府西部(制限付き)" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "アメリカ西部(北カリフォルニア)" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "アメリカ西部(オレゴン)" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "アメリカ標準(デフォルト)" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "S3 ストレージの地域" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "新しい IAM ユーザー名" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "管理者秘密キー" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "管理者アクセスキー" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "次に、これらの低レベルのアクセス証明書ではなく、管理者の鍵を格納する、使用することができます。" + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "これらは、唯一それが示されたバケットにアクセスすることができます添付IAMポリシーを持つ新しいユーザーと鍵のペアを作成するために使用されます。" + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "管理者のAmazon S3アクセス/秘密鍵(これは新しいユーザーやバケットを作成するのに十分な権限を持つキーのペアにする必要がある)、および新しいユーザーとバケット名の新しい(一意の)ユーザー名を入力します。" + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "IAM ユーザーと S3 バケットを新規作成する" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "秘密キー:%s" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "アクセスキー:%s" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "ユーザーポリシーを適用できませんでした。" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "ユーザーアクセスキーの作成に失敗しました。" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "ユーザーアクセスキーの作成に失敗しました。" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "IAM の操作に失敗しました(%s)" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "競合:ユーザーがすでに存在しています。" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "失敗:我々が正常にアクセスしたり、そのようなバケットを作成できませんでした。お使いのアクセス資格情報をチェックし、それらが正しいならば、(他のAWSユーザーとして既にあなたの名前をとっている場合があります)、別のバケット名をお試しください。" + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "AWS 認証に失敗しました。" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "古い AWS ツールキットを使用しているため、AWS ユーザーを新規に作成できませんでした。" + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "バケットを入力してください。" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "新しい IAM のユーザー名を入力してください。" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "管理者秘密キーを入力してください。" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "管理者アクセスキーを入力してください。" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "あなたは、AWSの管理者ユーザを持っている場合は、すぐに(というよりも、アカウント全体)にのみ、このバケットにアクセスして新しいAWS(IAM)のユーザーを作成するには、このウィザードを使用することができます" + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "これだけのバケットへのアクセス権を持つ新しいIAMサブユーザとアクセスキーを作成するには、このアドオンを使用しています。" + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "個人サポートやサイトのコピー方法、他の保存先の指定、バックアップの暗号化、複数のバックアップ先の指定、より良いレポート、広告表示無し、などなどに関しては、最も有名なバックアッププラグイン UpdraftPlus のプレミアムバージョンについて御覧ください。" + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "UpdraftPlus ニュースでは、WordPress デベロッパーやサイト所有者に高品質なトレーニングやWordPress の一般的なニュースをお知らせします。購読解除はいつでも可能です。" + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "アップロードパス (%s) が移転中に変更されました - 変更後のパス (%s)" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "過去にハッキング元として使用されたウェブサイトとサーバーをシェアしている可能性があります。" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "あなたのウェブサーバーの IP アドレス(%s)がブロックされていることがわかりました。" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "UpdraftPlus.com へのアクセスが拒否されました。" + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "プレミアム WooCommerce プラグイン" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "無料の2段階セキュリティープラグイン" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "もっと質の良いプラグイン" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "オンラインショップへ" + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "無料版との比較" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "UpdraftPlus プレミアム" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "申し込みはここをクリックしてください。" + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "無料のニュースレター" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "バックアップに UpdraftPlus をご利用いただき、ありがとうございます!" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "表示させない(%s ヶ月間)" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "(ファイルをバックアップすると同時に)" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "完了したバックアップはありません。" + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "まず、無料版をアンインストールしてください。" + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "以前 UpdraftPlus.com で購入したことがある場合は、インストール方法をこちらで御覧ください。" + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "ニュースレターの購読申し込み" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "UpdraftPlus ニュースレターの購読申し込みはこちら" + +#: admin.php:2831 +msgid "Personal support" +msgstr "個人サポート" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "設定へのアクセスをロックする" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "ネットワーク/複数サイトのサポート" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "バックアップ修復にかかる時間" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "予定されているバックアップ" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "別のプラグインで作成したバックアップの修復" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "データベースの暗号化" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "複数のリモート先にバックアップを送信する" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "WP本体/プラグイン/テーマの更新時に自動でバックアップ" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "詳細レポート機能" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "概要レポートメール" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "サイトを移転、もしくはサイトのクローン(コピー)を作成する" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "更にファイルとデータベースのバックアップを取る" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "Dropbox、Google ドライブ、FTP、S3、Rackspace、E メール" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "リモートストレージにバックアップを保存する" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "バックアップから修復する" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "%s 以上の言語に翻訳されています。" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "WordPress ファイルとデータベースのバックアップを取る" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "今すぐ購入!" + +#: admin.php:2718 +msgid "Get it from" +msgstr "から入手する" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "購入前に質問をする" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "購入前によくある質問" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "全ての機能のリスト" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "UpdraftPlus プレミアムにアップグレード" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "wordpress.org からダウンロードされた UpdraftPlus の無料版をご利用中です。" + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "バックアップ(関連)のプラグイン、テーマ、更新前のUpdraftPlusとWordPressのデータベース" + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "%s エラー:初期化に失敗しました" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "または" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "または" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "修復するコンポーネントが選択されていません。少なくとも1つ選択して、もう一度実行してください。" + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "PKCS1 (PEM ヘッダー: BEGIN RSA PRIVATE KEY), XML と PuTTY フォーマットキーが受け入れられました。" + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "部分的なアップロードを再開することはSFTPのためではなく、SCPのためにサポートされています。 SCPを使用している場合はこのように、あなたはあなたのウェブサーバがPHPプロセスが十分な長さあなたの最大のバックアップファイルをアップロードするために実行することができますことを確認する必要があります。" + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "テナント" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "これはV2(Keystone)認証URIである必要があります。 V1(Swauth)がサポートされていません。" + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "サイトの管理者アドレス" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "基本的なレポートを送信するために、このチェックボックスをオンにします" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "手動" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "エラー(%s)が発生しました:" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "ロック設定を変更する" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "バックアップを取りたいサーバー上の、他のファイル/ディレクトリ" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "更に多くの機能や個人サポートをご希望の場合はこちら" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "テーブルの作成に失敗しました - そこにテーブルを削除する権限がありませんではありません、テーブルが既に存在しています。続行します" + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "ページ(%s)のキャッシュを削除しています…" + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "データベース復号フレーズ" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "更新前の自動バックアップ" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "WordPress コア(のみ)" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "サポートのロックを解除するために、あなたのためにUpdraftPlusを管理し、誰でもお問い合わせください。" + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "UpdraftPlus設定にアクセスするには、ロック解除パスワードを入力してください" + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "パスワードが正しくありません。" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "解除" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "それ以外の場合は、デフォルトのリンクが表示されます。" + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "ウェブサイトのアドレスまたはメールアドレスを入力します - ロック画面を見て誰もが支援のためにこのURLを表示されます。" + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "支援のためのURL" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "パスワードを再度後を要求" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "%s 週間" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "1週間" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "%s 時間" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "1時間" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "パスワードのメモをしたことを確認してください!" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "UpdraftPlus の設定ページへのアクセスをロックする" + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "設定が保存されました。" + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "管理者パスワードが変更されました。" + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "管理者パスワードが設定されました。" + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "管理者パスワードが削除されました。" + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "(重要オプションについてもっと知る)" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "あなたのアドオンを設定した後、あなたはアップデートに、このサイトのアクセスに影響を与えずに、以下の設定からパスワード(ただし、電子メールアドレス除く)を削除することもできます。" + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "ログ参照" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "バックアップデータ(クリックしてダウンロード)" + +#: admin.php:4368 +msgid "Backup date" +msgstr "バックアップ日付" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "この多くのスケジュールされたバックアップを保持" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "増分バックアップ。ベースバックアップ:%s" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "パスワードでUpdraftPlus設定へのアクセスをロックする機能については、UpdraftPlusプレミアムにアップグレードしてください。" + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "UpdraftPlusにファイルをアップロードします。" + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "「今すぐバックアップ」ボタンは、バックアップディレクトリとして無効になっては書き込みできません(「設定」タブに移動し、関連するオプションを見つけます。)。" + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "バックアップラベル:" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "エラー:予期しないファイルの読み込みが失敗します" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "詳細については、ログを確認してください。" + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "あなたのWebホスティングアカウントは完全であるように思われます。参照してください:%s" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "ZIPエラーが発生しました" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "このバックアップ用のラベル(オプション)" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "%s IPアドレスでの接続がサイトのホストで許可されていません。あなたは (%s) のストレージを使用する前にサイトのアドレスを変更する必要があります。" + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "あなたはUpdraftPlus.Comで認識されませんでした電子メールアドレスを入力しました" + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "あなたのメールアドレスは有効であったが、あなたのパスワードがUpdraftPlus.Comによって認識されませんでした。" + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "あなたは、電子メールアドレスとパスワードの両方を指定する必要があります" + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "続けるには '今すぐバックアップ' をクリックしてください。 次に、動作しているか'最後のログ'よりご確認ください。" + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "マルチサイトのバックアップを復元したい場合、まずはあなたのWordPressをマルチサイトにしてください。" + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "あなたのバックアップはインストールされたマルチサイトワードプレスです。しかし、このサイトではありません。唯一のネットワークの最初のサイトにアクセスすることができます。" + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "既に完了" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "スキップ(リストにありません)" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "検索とテーブルを交換します:" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "カンマ区切りのリストを入力します。それ以外の場合は、すべてのテーブルの空白のままにします。" + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "これらのテーブルのみ" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "バッチあたりの行数" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "あなたはまだあなたのUpdraftPlus.Comアカウントで接続していません。" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "あなたはUpdraftPlusに将来の更新を受信するために接続する必要があります。" + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "%sを行うためのサポートリクエストは、Webホスティング会社に提起する必要があります。" + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "あなたは現在のサーバーを更新し、自信を持って(またはリスクに喜んで)していることができない場合にのみ、そのあなたのプラグイン/テーマの/ etc進めるべき。古い%sのバージョンと互換性があります。" + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "これは、あなたが今(バージョン%s)に復元しているサーバーよりもかなり新しいです。" + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "このバックアップでは、サイトには、%sのバージョン%sのウェブサーバー上で実行されていました。" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "リンクトイン" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "グーグルプラス" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "フェイスブック" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "ツイッター" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "UpdraftPlus ソーシャルメディアをぜひチェックしてみてください:" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "なぜ私はこれを見ていますか?" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "このディレクトリの場所は、[設定]タブ→「エキスパート設定:」で設定されています。" + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "あなたがアップロードしたすべての新しいバックアップ·セットの(スペースをウェブホスティングに)あなたのUpdraftPlusディレクトリの中を見るためにここを押します" + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "バックアップを開始" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "%s のウェブサーバを使用していますが、%s のモジュールが読み込まれていないようです。" + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "ディレクトリへの書き込みできるようにワードプレスプラグインの権限を設定する方法を見つけるためにはウェブホスティングプロバイダに相談する必要があります。" + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "あなたは問題が無ければ、完全にここでのすべてを無視することができます。" + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "このファイルはアップロードできませんでした。" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "詳細は「設定」より参照ください。" + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "サポートされているバックアッププラグイン: %s" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "これは、別のバックアッププラグインによって作成されたバックアップしましたか?このリンクに従ってください - もしそうなら、あなたは最初にそれを認識することができるように名前を変更する必要があるかもしれません。" + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "増分バックアップについて、私よりに知らせます" + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "メモリの制限" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "復元" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "表は自動的にドロップする:%s" + +#: backup.php:829 +msgid "Incremental" +msgstr "増分" + +#: backup.php:829 +msgid "Full backup" +msgstr "フルバックアップ" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "今アップデートを続行..." + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "(ログを見る...)" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "成功したバックアップ" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "%s 時間ごと" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "検索と置換" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "実行" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "検索/置換は元に戻す事ができません - 本当に実行してもよろしいですか?" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "これは、簡単にあなたのサイトを破壊することができます。だから、注意して使用します!" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "と置換する" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "検索" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "検索 / 置換 データベース" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "検索用語" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "多くのデータベースエラーが発生しました - 強制終了" + +#: backup.php:895 +msgid "read more at %s" +msgstr "%s の続きを読む" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "UpdraftPlus(無料版)で作成されたメールレポートは、UpdraftPlus.com の最新ニュースをお届けします。" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "注意:あなたはいくつかのWordPressのサイトにUpdraftPlusをインストールする場合は、プロジェクトを再使用することはできません。各サイトのGoogle APIコンソールから新しいものを作成する必要があります。" + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "あなたはまだバックアップを行っていません。" + +#: admin.php:3872 +msgid "Database Options" +msgstr "データベースオプション" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "デバッグのためのプラグイン:" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "%s (%s 使用)" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "アカウント内の空き容量:" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "バックアップディレクトリが書き込み不可のため、このボタンは無効です。(設定をご覧ください)" + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "バックアップ済み" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "現在の状態" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "バックアップされているもののデフォルト設定を変更、リモート・ストレージ(推奨)にバックアップを送信、スケジュールされたバックアップを構成などをするために[設定]タブに移動します。" + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "バックを作成するには「今すぐバックアップ」をクリックしてください。" + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "UpdraftPlusへようこそ!" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "" +"あなたがここにテキストを入力した場合、それは、(ラインダール)のデータベースのバックアップを暗号化するために使用されます。それの独立したレコードを作るのですか、それを失うことはありませんか、すべてのバックアップが役に立たないだろうこれはまた、この管理インターフェースからバックアップを解読するために使用されるキーであります\n" +"(そうですあなたがそれを変更した場合、あなたはそれを戻すまで、自動復号化が動作しません。)" + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "テスト中..." + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "テスト接続..." + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "テーブル プリフィックス" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "バックアップ外部データベース" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "バックアップする外部データベースを追加..." + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "データベースがこのWordPressのサイトの一部ではないテーブルが含まれている場合(このような場合には、あなたが知っているだろう)、また、それらをバックアップするには、このオプションを有効化します。" + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "WordPressと同じデータベースに含まれているWordPress以外のテーブルをバックアップする" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "このオプションは、バックアップする(自分が設定WordPressの接頭辞、%sを欠いていることで識別される)のWordPressとは関係ないMySQLのデータベースに格納されている表の原因となります。" + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "接続に失敗しました。" + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "接続に成功しました。" + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "%sの総テーブル見つかった。 %sの指定された接頭辞。" + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "%s のテーブルが見つかりました。" + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "データベースへの接続に失敗しました" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "データベース名" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "サーバー" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "ユーザー" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "外部データベース (%s)" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "あなたのGoogle APIコンソールには、このリンクをたどって、そのドライブのAPIを有効にし、APIアクセスセクションのクライアントIDを作成します。" + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "親フォルダへのアクセスに失敗しました" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "しかし、その後のアクセスの試みは失敗しました:" + +#: admin.php:4499 +msgid "External database" +msgstr "外部データベース" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "これはまた、すべてのプラグインからのデバッグ出力をこの画面上に表示されます - これらを見ても驚かないでください。" + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "複数のデータベースをバックアップします" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "まずは、復号化キーを入力" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "ここで手動にて暗号化されたデータベースの暗号化を解除することができます。" + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "外部のデータベースにもバックアップできます。" + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "監視されたくないですか? UpdraftPlusプレミアムは、データベースのバックアップを暗号化することができます。" + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "UpdraftPlus プレミアムを使用する" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "復号化に失敗しました。 データベースファイルは暗号化済みです。" + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "唯一のWordPressのデータベースを復元することができます。手動で外部データベースに対処する必要があります。" + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "エラーは最初の%sのコマンドでが発生しました - 実行を中止します" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "接続に失敗しました: アクセス詳細、データベースの稼働状態、ファイヤーウォールのネットワーク接続をご確認ください。" + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "データベースへの接続に失敗しました。" + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "警告:データベースのホームURL(%s)我々が期待したものとは異なる(%s)" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "%sでは、パス名は大文字と小文字が区別されます。" + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "空白にした場合、%s のルートにバックアップは配置します" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "例えば %s" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "フォルダが存在しない場合、作成されます。" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "ここで使用する%sフォルダのパスを入力します。" + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "コンテナー" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "空白にするとデフォルトが選択されます。" + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "テナント" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "以下より詳細をお読みください" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "認証 URI" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "あなたのOpenStackのスウィフトプロバイダからのアクセス資格情報を取得してから、保存に使用するコンテナの名前を選択します。それはまだ存在しない場合、このコンテナはあなたのために作成されます。" + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "%s のダウンロードに失敗しました" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "ダウンロードに失敗しました" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "ファイルの一覧表示に失敗" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "%s のアップロードに失敗しました" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "成功:" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "あなたは(下の[変更を保存]をクリックして)、設定を保存した後に、一度ここに戻って来て、%sの認証を完了するには、このリンクをクリックしてください。" + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "(すでに認証されて表示されます)。" + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "ドロップボックス" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "%s で認証" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "リモートファイルのダウンロードエラー: ダウンロードに失敗しました" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "リージョン:%s" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "%s のエラー - containerへの接続はできましたが、 ファイルを作成することができませんでした。" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "%sのオブジェクトが見つかりませんでした" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "%sのコンテナにアクセスできませんでした。" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "%s のエラー - containerへのアクセスに失敗しました" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "アカウントフォルダー名:%s" + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "UpdraftPlusプレミアムを使用し、カスタムフォルダ名を設定できる。" + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "それは、Googleドライブ内部のID番号です" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "これはフォルダ名ではありません。" + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "フォルダ" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "%s のダウンロード: 失敗しました: ファイルが見つかりません。" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "名前: %s." + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "Googleドライブのリストファイル:親フォルダへのアクセスに失敗しました" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "あなたの%sのバージョン:%s" + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "あなたはアップグレードするには、ウェブホスティング会社に依頼する必要があります。" + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "このリモートストレージメソッド(%s)は、後にPHPの%sの以上が必要です。" + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "テーマディレクトリ(%s)が見つかりません。ただし、小文字のバージョンが存在します。それに応じてデータベースオプションを更新中" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "呼び出し" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "取り込み" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "この機能は、%s バージョン %s 以降が必要です" + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "エレガントなテーマテーマビルダープラグインのデータが検出されました:一時フォルダをリセットします" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "%sのファイルが抽出されています" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "アーカイブを解凍できませんでした" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "エラー - ファイルのダウンロードに失敗しました。" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "新しいバックアップの為にローカルフォルダの再スキャン" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "あなたは互換性のためにテストされていたバージョンを確認するためにUpdraftPlusを更新する必要があります。" + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "バージョン %s までテスト済みです。" + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "UpdraftPlusバックアップのインストールされているバージョンは、ワードプレス(%s)のバージョンでテストされていない復元します。" + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "パスワード/キー" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "Key" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "あなたのログインパスワードまたはいずれかのキーをベースとすることができます。 - あなたが両方ではなく片方を入力する必要があります" + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "提供されたキーは、有効な形式ではありませんでした、または破損しました。" + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "SCP/SFTP パスワード/キー" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "ファイルのバックアップ(%sにより作成)" + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "ファイルとデータベースのWordPressのバックアップ(%sで作成されました)" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "%s:によりバックアップが作成されました。" + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "データベース(%sで作成されました)" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "未知のソース" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "リモートストレージを再スキャン" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "バックアップファイルをアップロード" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "このバックアップは、%sで作成し、インポートすることができます。" + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "考えられる原因とどのようにそれを修正するためのガイドのために、このページをお読みください。" + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "WordPressは延滞しているスケジュールされたタスクの数(%d)持っています。これは開発サイトでない限り、これはおそらく、あなたのワードプレスのインストール先で、スケジューラが動作していないことを意味します。" + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "これは別のバックアッププラグインによって作成されたバックアップの場合、UpdraftPlusプレミアムはあなたを助けることができるかもしれません。" + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "しかし、UpdraftPlusアーカイブは標準のzip/ SQLファイルです - ので、あなたはあなたのファイルが適切なフォーマットを持っていることを確認している場合は、ファイルのフォーマットのパターンに一致する名前を変更することができます。" + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "このファイルには、UpdraftPlusバックアップアーカイブを(そのようなファイルは次のように名前を持っている.zipファイルまたは.gzのファイルであることを表示されません:backup_(time)_(site name)_(code)_(type).(zip|gz))." + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "未知のソース(%s)によって作成されたバックアップ - 復元することはできません。" + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "WordPressのコンテンツフォルダ(WP-content)にこのzipファイルを見つけられませんでした。" + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "UpdraftPlusのこのバージョンは、このタイプの不明なバックアップを処理する方法を知りません" + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "%sが予期しないHTTP応答が返されました:%s" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "このファイルへのアクセス方法(%s)のためのUpdraftPlusモジュールは、ファイルのリストをサポートしていません" + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "何の設定も見つかりませんでした" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "一つ以上のバックアップは、リモートストレージをスキャンから追加されました。これらのバックアップは、自動的に「保持」設定を使用して削除されないことに注意してください。あなたがそれらを削除したいとき/場合は、手動で行う必要があります。" + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "バックアップ・セットのリモートおよびローカルストレージの再スキャン..." + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "(続きを読む)" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "マルチサイトのパスを調整中" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "syslogにすべてのメッセージをログに記録します(サーバーのみの管理者は、これをしたいと思われます)" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "別のものを追加..." + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "削除" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "他の%s FAQs" + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "何かが間違って起こっている便利な場合 - バックアッププロセスの詳細やメールを受信するために、これを確認してください。" + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "複数のファイル/ディレクトリを入力する場合は、カンマで区切ります。トップレベルのエンティティでは、ワイルドカードとしてエントリの先頭または末尾に*を使用することができます。" + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "Custom content type manager プラグインのデータが見つかりました: オプションのキャッシュをクリア" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "%sが動作させる前に、あなたのホスティング会社はこれらの機能を有効にする必要があります。" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "WebサーバーのPHPのインストールが機能無効になっています。:%s" + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "暗号化されたFTP(明示的な暗号化)" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "encrypted FTP (implicit encryption)" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "通常の非暗号化FTP" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "バックアップ作成者:" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "このサイトで請求する利用できます" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "サポートへのアクセスを維持するために、更新してください。" + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "UpdraftPlusサポートにあなたの支払ったアクセス権がもうすぐに期限切れになります。" + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "あなたのアクセスを回復するには、更新してください。" + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "UpdraftPlusサポートにあなたの支払ったアクセス権の有効期限が切れています。" + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "このサイトのUpdraftPlusのアップデートをあなたの支払ったアクセス権がすぐに期限切れになります。" + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "サポート(将来の機能や将来のWordPressのリリースとの互換性を含む)のアップデートを保持し、維持するためには、更新してください。" + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "このサイト上の%s の%s アドオンのUpdraftPlusのアップデートをあなたのアクセス権がすぐに期限切れになります。" + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "このサイトに%sのアドオンのUpdraftPlusのアップデートのアクセス権の有効期限が切れています。" + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "更新プログラム権とサポート権を回復するには、更新してください。(将来の機能や将来のWordPressのリリースとの互換性を含む)" + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "このサイトのUpdraftPlusのアップデートのために支払ったアクセス権の有効期限が切れています。あなたは、もはやUpdraftPlusの更新を受信しません。" + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "メインダッシュボードから却下(%sの週間)" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "二重圧縮を元に戻すのに成功しました。" + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "二重圧縮を元に戻すのに失敗しました。" + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "あなたがからそれをダウンロードし、おそらくWebサイトが設定ミスをしていた - データベースファイルが二度圧縮されているように見えます。" + +#: admin.php:1528 +msgid "Constants" +msgstr "定数" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "読み込みのためにデータベースファイルを開くことができませんでした:" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "データベースのテーブルが見つかりません。" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "スケジュール変更の試みをお待ちください" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "警告メッセージがアドバイスであることに注意してください- バックアッププロセスがそれらのために停止しません。その代わりに、それらはあなたが有用見つけるかもしれない情報を提供します。もしくはバックアップが成功しなかった場合には、問題の原因を示す可能性があります。" + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "データベースクエリを処理:%.2f秒で %d" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "到達した行を検索し、置き換える:%d" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "この表をスキップ:このテーブル(%s)のデータは検索/置換しないでください" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "完全アカウント:あなたの%sアカウントに%dバイトのみが残ってましたが、アップロードするファイルは残り%dバイトを持っている(合計サイズ:%dバイト)" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "発生したエラー:" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "(任意のサポート要求のために必要)この復元のためのログファイルをダウンロードするには、このリンクに従ってください。" + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "このFAQも参照してください。" + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "あなたは、リモート記憶域を選択しない場合、バックアップは、Webサーバー上に残っています。あなたのウェブサイトとのイベントでのバックアップの両方を失うことを意味するWebサーバを失うとして、(手動でコンピュータにコピーする予定がない限り)これは推奨されません。" + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "取得(必要な場合)とバックアップファイルの準備..." + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "このWebサーバ上のPHPの設定は、PHPが実行するための唯一の%s秒を可能にし、この制限が発生することはできません。あなたは、インポートするデータがたくさんあるし、操作がタイムアウトを復元する場合は、方法は、この制限を上げることについては、Webホスティング会社に依頼する必要があります。(または修復少しずつを試みる)" + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "前の復元が未削除フォルダを存在(再試行する前にそれらを削除するには、「古いディレクトリを削除」ボタンを使用してください):%s" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "実行するには、WordPressのプラグインのために許容される時間の量は、(%s秒)は非常に低いです - あなたは(タイムアウトによるバックアップの失敗を避けるために、それを高める詳細なヘルプについては、Webホスティング会社に相談してください - それはmax_execution_timeにPHPの設定で、推奨値ある%s秒以上)" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "ブログ/サイトテーブルに置き換える: :%s から:%s へ" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "%s: キャッシュファイルをスキップ (まだ存在していません)" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "このプラグインを無効にします。%s : 準備ができたらそれを手動でアクティブ化します。" + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "%s の接続がタイムアウトしました。あなたが正しく、サーバーを入力した場合、これは通常の接続をブロックするファイアウォールによって引き起こされる - あなたのWebホスティング会社に確認してください。" + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "現在のテーマが見つかりませんでした。読み込みからこの停止サイトを防ぐために、あなたのテーマがデフォルトテーマに戻されました" + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "復元エラー..." + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "メッセージ:" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "SQL行が最大パケットサイズよりも大きいと判明し、分割することができない、この行は処理されませんが、削除されます:%s" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "そのディレクトリは存在しない" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "新規ユーザのメールアドレス" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "新規ユーザ名" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "アドミン API キー" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "管理者ユーザ名" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "米国 または、英国のRackspace のアカウント" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "(Rackspaceは、新しいユーザーを作成するにはあなたの許可が認証できるように)、新しいユーザーとコンテナ名のための新しい(ユニークな)ユーザ名とメールアドレスを入力して、あなたのRackspaceの管理ユーザー名/ APIキーを入力してください。" + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "新しいAPIのユーザーとコンテナを作成します。" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "API キー: %s" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "パスワード: %s" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "ユーザ名: %s" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "クラウド ファイル 操作は失敗しました(%s)" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "競合: ユーザー又はメールアドレスは存在しています" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "あなたは正しい新しいメールアドレスを入力必要です。" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "あなたはコンテナー名を入力必要です" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "あなたは新しいユーザ名を入力必要です。" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "あなたは管理者APIキーを入力する必要があります。" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "あなたは管理者名を入力する必要があります。" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "このコンテナのみへのアクセス権を持つ新しいAPIのユーザーを作成します(むしろ自分のアカウント全体より)" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "Rackspaceのクラウドファイルユーザーのための拡張機能を追加します。" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "Rackspace クラウドファイルが強化されました" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "クラウドファイルコンテナー" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "クラウドファイルAPIキー" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "これだけRackspaceのコンテナへのアクセス権を持つ新しいRackspaceのAPIサブユーザーとAPIキーを作成するには、このアドオンを使用しています。" + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "クラウドファイル名" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "ロンドン(LON)" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "香港(HKG)" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "バージニア州北部(IAD)" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "シカゴ(ORD)" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "シドニー(SYD)" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "ダラス(DFW)(デフォルト)" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "クラウド ファイル ストレージ リージョン" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "rackspacecloud.comで作成したアカウントは、米国アカウントです。 rackspace.co.ukで作成したアカウントは、英国ベースです" + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "米国や英国のRackspaceのアカウント" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "rackspacecloud.comで作成したアカウントは、米国が占めています。 rackspace.co.ukで作成したアカウントは、英国のアカウントです。" + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "認証に失敗しました (認証情報 credentials をご確認ください)" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "UpdraftPlus.com への接続中にエラーが発生しました。" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "作成" + +#: admin.php:556 +msgid "Trying..." +msgstr "トライ中..." + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "新しいユーザーのRackSpaceのコンソールのパスワード(これは再び表示されません)です。" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "(復号化された時)" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "エラーのデータ:" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "バックアップ履歴にバックアップが存在しません" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "移行後/復元後の前にあなたのWordPressのインストールはその状態から、古いディレクトリがあります(技術情報:これらは-old接尾辞されています)。すぐに復元が働いていることを確認するやいなや、それらを削除するこのボタンを押す必要があります。" + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "分割ラインは、最大パケットサイズを超えないようにします" + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "あなたのデータベースユーザがテーブルを削除する権限がありません。私たちは、単にテーブルを空にすることによって復元しようとします。あなたが同じデータベース構造でWordPressのバージョンから復元している限り動作するはずです(%s)" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "新しいテーブルの接頭辞:%s" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "ファイルのパーミッションは、古いデータを移動して保持することはできません。代わりに、それは削除されます。" + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "%s: このディレクトリは既に存在しており、置き換える事ができます。" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "所定の場所にファイルを移動できませんでした。権限をご確認ください。" + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "所定の場所に新しいファイルを移動できませんでした。あなたの wp-content/upgradeフォルダを確認してください。" + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "邪魔にならないように古いファイルを移動できませんでした。" + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "古いデータを移動..." + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "別のアドレスを追加..." + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "バックアップジョブが終了したときにそれらに送信されたレポートを持っているためにここにアドレスを入力してください。" + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "E-メールレポート" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "%s チェックサム: %s" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "ファイル: %s" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "使用するメールアドレスを設定するには、「レポート作成」セクションを使用します。" + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr "(注意 (%s))" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr "(エラー (%s))" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "デバッグ情報" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "アップロード:" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "時間が取られる:" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "警告" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "エラー" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "エラー / 注意 :" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "内包:" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "バックアップを開始しました:" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "バックアップ レポート" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "%d 時, %d 分, %d 秒" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "%d エラー, %d 注意" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "%s 認証" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "%s エラー: %s" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "%sのロゴ" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "%s の応答がありませんでした - ログファイルから詳細をご確認ください" + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "必要な%sのPHPモジュールがインストールされていない - それを有効にするには、Webホスティング会社に依頼" + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "より多くのオプションは \"%s\" add-onをご使用ください。" + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "あなたのサイトの管理者のメールアドレス(%s)が使用されます。" + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "接続" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "より多くのレポート機能を使用するには Reporting add-on を使用してください。" + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "(バージョン: %s)" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "メールサーバは、サイズ制限を持っている傾向があることに注意してください。通常、%sのMbの周り。任意の制限よりも大きいバックアップはおそらく到着しません。" + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "メールの保存方法が有効になっている場合、また、全体のバックアップを送信" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "最新の状態:" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "バックアップが含まれる:" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "バックアップしました: %s" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "ログファイルは、このメールに添付されています。" + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "不明/予期しないエラー - サポート要求を上げてください" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "データベースのみ(ファイルは、この特定のスケジュールの一部ではありませんでした)" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "データベース (完了していないファイルのバックアップ)" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "ファイルのみ(データベースは、この特定のスケジュールの一部ではなかったです)" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "ファイル (データベースのバックアップが完了していません)" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "ファイルとデータベース" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "(明示的にマルチサイトの互換性のためにコードされていない限り、これは、すべてのワードプレスのバックアップのプラグインに適用されます)。" + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "アップグレードせず、すべてのブログ管理者のネットワーク全体を(例えば、パスワードを変更し、カスタマイズされた変更を含む)バックアップ(したがって、パスワードなどのデータ、アクセスから)、および復元するために、プラグインの設定を変更することをUpdraftPlusができます。。" + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "UpdraftPlusプレミアム、またはマルチサイトアドオンにより、追加機能も一緒にWordPressのマルチサイトはサポートされています。" + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "これはWordPressのマルチサイト(別名ネットワーク)インストールです。" + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "UpdraftPlus 警告:" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "(あなたはすでにそれを購入している場合は、このページのフォームを使用して接続)" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "それをアクティブにするためにプラグインを更新するには、このリンクに従ってください" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "それを得るために、プラグインを更新するには、このリンクに従ってください" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "最新" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "あなたのバージョン:%s" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "あなたは、それを持っています" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "UpdraftPlus サポート" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "あなたのアドオンを含む更新はUpdraftPlusで利用可能である。 - それを得るために、このリンクに従ってください。" + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "UpdraftPlus アドオン" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "UpdraftPlus でアップデートが可能です - 以下のリンクより取得してください。" + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "UpdraftPlus.Comは応答を返しますが、我々はそれを理解できませんでした" + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "あなたのメールアドレスとパスワードはUpdraftPlus.Comによって認識されませんでした" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "UpdraftPlus.Comは、私たちが理解できなかった応答を返した(データ:%s)" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "UpdraftPlus.Comは答えたが、私たちは応答を理解していませんでした" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "我々は成功しUpdraftPlus.Comへの接続に失敗しました" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "レポート中" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "オプション(raw)" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "警告/エラーのレポートのみを送信" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "コンテンツ URL" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "また、当店から「その他のファイル」アドオンを参照してください" + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "あなたのホスティングアカウントで自分の空き容量が非常に低い - %s MBのみが残ります" + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "PHPに許可されたメモリ(RAM)の量は、(%s MB)が非常に低いです - あなたはメモリ不足のため失敗を避けるために、それを増やす(詳細なヘルプについては、Webホスティング会社にお問い合わせください)必要があります" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "アドオンを管理" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "購入" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "UpdraftPlus.Com Store から入手する" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "サイトでそれをアクティブにする" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "あなたは、非アクティブの購入を持っています" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "このサイトに割り当てました" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "(あなたのすべてのアドオンの購入を経由して)このサイトで利用可能" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "(どうやらプレリリースまたは撤回リリース)" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "ここに行こう" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "サポートが必要ですか?" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "アドオンを取得しようとした時にエラーが発生しました。" + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "不明な応答が受信されました。応答がありました:" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "付与されていないと主張 - アカウントのログイン情報が間違っていました" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "我々が請求するまでお待ちください..." + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "UpdraftPlus.Com への接続でエラーが発生しました:" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "あなたが現在UpdraftPlus.Comアカウントに接続されていない 。" + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "新しいアドオンを購入した場合は、あなたの接続をリフレッシュするには、このリンクに従ってください" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "あなたが現在あるUpdraftPlus.Comアカウントに接続した。" + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "UpdraftPlus.Com のパスワードセキュリティに興味がありますか?詳しくはこちら。" + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "詳細を忘れましたか?" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "まだアカウントを持っていない(これは無料ですか)?いずれかを取りに行きます!" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "あなたの UpdraftPlus.Com アカウントで接続" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "あなたのWebサーバのPHPバージョンは非常に古い(" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "おそらく、あなたが混乱し、それらを持って - あなたは時代遅れのUpdraftのインストールプラグインを持っているように見えるのですか?" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "インストールを開始するにはこちら。" + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "UpdraftPlusはまだインストールされていません。" + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "有効にするにはこちら。" + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "UpdraftPlus はまだアクティベートされていません。" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "接続はこちら。" + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "あなたはまだあなたが購入したアドオンの一覧を表示できるように、あなたのUpdraftPlus.Comアカウントで接続していません。" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "それがなければ、暗号化はたくさん遅くなります。" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "あなたのウェブサーバには、%sのモジュールがインストールされていません。" + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "(あなたはすでに認証されるようですの問題を持っていた場合、あなたのアクセスをリフレッシュするために、再度認証を受けることができます)" + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "バックアップファイルをドロップ" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "コマンドラインからWordPressを管理 - 時間の節約" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "WordShell をチェック" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "より多くの機能(有料)やサポート保証をご希望ですか?UpdraftPlus.Com をチェック" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "Webサーバがエラーコードを返した(再試行するか、Webサーバーのログを確認してください)" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "復元操作が始まりました。ストップを押すか、それが終わったと報告があるまで、ブラウザを閉じないでください。" + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "データベースとファイルの両方を除外した場合は、すべてのものを除外する必要があります!" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "サイトホーム" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "リモートストレージオプション" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "(ログは通常通りUpdraftPlusの設定ページで見つけることができます)..." + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "次回のためこの選択を覚えておいてください(あなたはまだそれを変更する機会を持つことになります)" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "アップロード失敗" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "あなたはアドオンで複数の宛先にバックアップを送信することができます。" + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "注意:以下のプログレスバーは時間ではなくステージに基づいています。それはしばらくの間、同じ場所に残っているようですので、簡単にバックアップを停止しないでください - それは正常です。" + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "%s%%, ファイル %s の %s)" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "これがどのように機能するかについての詳細を読みます..." + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "失敗しました:私たちは、ログインすることができましたが、成功したその場所にファイルを作成できませんでした。" + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "失敗しました: ログイン及び指定のディレクトリに移動はできましたが、その場所にファイルを作成することができませんでした。" + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "SCPの代わりにSFTPを使用してください" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "SCP/SFTP ユーザセッティング" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "SCP/SFTP ホストセッティング" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "電子メールを介してバックアップを送信しようとしたが、失敗しました(おそらくバックアップは、この方法には大きすぎました)" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "バックアップがあります。:%s" + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "%s のテスト設定結果" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "(完了していません)" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "あなたが予想よりもあなたがより多くのバックアップを見ている場合は、新鮮なバックアップが完了するまで、古いバックアップセットの削除は行われませんので、それはおそらく古いバックアップセットです。" + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "" +"それは再帰の原因となりますので、あなたのアップロードやプラグインディレクトリの中に置いたりしないでください\n" +"(バックアップのバックアップのバックアップ...)。" + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "UpdraftPlusが最初に作成したzipファイルを書き込む場所です。このディレクトリには、Webサーバーによって書き込み可能でなければなりません。それは、(デフォルトではWP-contentと呼ばれている)あなたのコンテンツディレクトリに対する相対パスです。" + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "ジョブID:%s" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "最後のアクティビティ:%ss前" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "次の再開: %d (%ss 後)" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "未知" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "完了したバックアップ" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "スケジュールされた時間まで待機して、エラーのために再試行します" + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "古いバックアップセットを剪定" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "リモートストレージにファイルをアップロード" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "暗号化されたデータベース" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "データベースを暗号化中" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "作成したデータベースのバックアップ" + +#: admin.php:3359 +msgid "table: %s" +msgstr "テーブル:%s" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "データベースのバックアップを作成中" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "作成したバックアップzipファイル" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "バックアップのzipファイルを作成中" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "バックアップは開始されました" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "バックアップの進行状態:" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "DISABLE_WP_CRONの設定により、WordPressのインストール時にスケジューラは無効になっています。手動でスケジューラを呼び出すための施設を設定しているいずれかの場合を除き、またはそれが有効になるまで(今バックアップしても)がバックアップが実行できません。" + +#: restorer.php:646 +msgid "file" +msgstr "ファイル" + +#: restorer.php:639 +msgid "folder" +msgstr "フォルダ" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "UpdraftPlusは、コンテンツディレクトリ内の%sを作成するために必要ですが、失敗しました - あなたのファイルのパーミッションを確認し、アクセス(%s)を有効にしてください" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "バックアップが完了していません。再開が予定されています" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "あなたのウェブサイトは頻繁に訪問され、UpdraftPlusは、それが望んでリソースを取得していません。このページをお読みください:" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "あなたのサイト上で何か他のものがそれを破壊しているため %s の認証は、先に行くことができませんでした。あなたの他のプラグインを無効にし、デフォルトのテーマに切り替えてみてください。 (具体的には、ページが始まる前に。オフにすると、デバッグの設定も助けることができる出力を送信するコンポーネント(最も可能性の高いPHPの警告/エラー)を探しています)。" + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "(ウェブホスティング会社が設定した)あなたのPHPのメモリ制限は非常に低いです。 UpdraftPlusはそれを高めるために試みたが成功しませんでした。あなたが(一方、多くのサイトが32MBの限界と成功します。 - あなたの経験は変更になる場合があります。)アップロードした非常に大きなファイルを持っている場合は特に - このプラグインは、64 MB未満のメモリ制限に苦労します。" + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "アップデートを続行" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "下記を押した後は中止しないでください - バックアップが完了するまで待ちます。" + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "UpdraftPlus 自動バックアップ" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "発生中のエラー:" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "UpdraftPlus がバックアップを作成中..." + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "自動バックアップ" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "UpdraftPlus がデータベースのバックアップを作成中..." + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "このサイトを更新するための十分な権限がありません。" + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "テーマ" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "プラグイン" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "自動バックアップ開始中..." + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "UpdraftPlus が %s とデータベースのバックアップを作成中..." + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "プラグイン、テーマ、更新前のUpdraftPlusとWordPressのデータベース(関連)を自動的にバックアップする" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "あなたがわからない場合、あなたは停止する必要があります。そうでなければ、このWordPressのインストールを破壊するかもしれません。" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "これは有効なWordPressのコアのバックアップのようには見えません - ファイル%sが欠落していました。" + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "zipファイル(%s)を開けません。 - それは、その整合性をチェックするためにプリスキャンができませんでした" + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "zipファイル(%s)を読み取ることができません。 - それは、その整合性をチェックするためにプリスキャンができませんでした " + +#: admin.php:2310 +msgid "More plugins" +msgstr "他のプラグイン" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "サポート" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "UpdraftPlusは、データベースのバックアップをスキャンするときにテーブル接頭辞を見つけることができませんでした。" + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "このデータベースのバックアップは、コアのWordPressのテーブルが欠落しています。:%s" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "あなたは、古いバージョン(%s)にWordPress(%s)の新しいバージョンからインポートされます。WordPressはこれを扱うことができるという保証はありません。" + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "データベースは、有効なワードプレスのデータベース(%s KBサイズ)であるには余りにも小さいです。" + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "アップデートテーマ" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "アップデートプラグイン" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "自動バックアップで安全です" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "非表示(%s 週間)" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "アップロードパス (%s) は存在しません - 再設定 (%s)" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "ページのロードが完了した後、あなたはまだこれらの言葉を読むことができる場合は、そのサイト内のJavaScriptやjQueryの問題があります。" + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "ファイルはアップロードされました。" + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "不明なサーバ応答ステータス:" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "不明なサーバ応答:" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "この復号鍵が試行されます。" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "復号化を試み、コンピュータにデータベースファイルをダウンロードするには、このリンクに従ってください。" + +#: admin.php:584 +msgid "Upload error" +msgstr "アップロードエラー" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "このファイルには、UpdraftPlus暗号化されたデータベースのアーカイブではないようにみえる。:(このようなファイルは次のような名前を持つ.gz.cryptファイルです:BACKUP_(time)_(site name)_(code)_db.crypt.gz))。" + +#: admin.php:582 +msgid "Upload error:" +msgstr "アップロードエラー:" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "(以前UpdraftPlusによって作成されたzipファイルをアップロードしようとしていたことを確認してください)" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "それと、ご希望であれば、" + +#: admin.php:572 +msgid "Download to your computer" +msgstr "お使いのコンピュータにダウンロード" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "あなたのWebサーバから削除" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "S3 互換性ストレージプロバーダーの例:" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "このバックアップには、クラウドストレージがなかったので、それらを解凍した後、すべてのアーカイブは削除されません" + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "このマルチアーカイブセットから1つまたは複数のアーカイブを欠落しているように見えます。" + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "(セット内の%d個のアーカイブ(複数可))。" + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "アーカイブ毎に分ける:" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "エラー: サーバは理解できない応答 (JSON) を送信しました。" + +#: admin.php:563 +msgid "Warnings:" +msgstr "警告:" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "エラー:サーバが空の応答を送信しました。" + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "これはUpdraftPlusによって作成されたファイルのように見えますが、これのインストールはこの種類のオブジェクトについて知らない:%s。おそらくあなたは、アドオンをインストールする必要がありますか?" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "バックアップアーカイブファイルには、いくつかのエラーが発生して、処理されています。あなたはキャンセルし、再試行する前にすべての問題を修正する必要があります。" + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "バックアップアーカイブファイルには、いくつかの警告が、処理されています。すべてが順調であれば、今進行し、再び復元押します。そうでない場合は、キャンセルして最初の問題があれば修正します。" + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "バックアップアーカイブファイルは正常に処理されました。今すぐ復元を押して進んでください。" + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "このマルチアーカイブ・バックアップ・セットには、不足している次のアーカイブを持っているように見えます:%s" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "(%s)のファイルは見つかりましたが、(%s)とは異なるファイルサイズ(%s) - もしかしたら壊れているかもしません。" + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "ファイルはありましたが、0サイズでした(ファイルを再アップロードしてください): %s" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "ファイルが見つかりません(ファイルをアップロードしてください): %s" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "そのようなバックアップは存在しません。" + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "このファイルのバックアップアーカイブが見つかりませんでした。使用(%s)リモートストレージのメソッドは、私たちはファイルを取得することはできません。 UpdraftPlusを使用して復元を実行するには、このファイルのコピーを入手し、UpdraftPlus作業フォルダ内に配置する必要があります。" + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "ディレクトリを移動出来ませんでした (ファイルのパーミッションとディスククオータを確認してください): %s" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "ファイルを移動出来ませんでした (ファイルのパーミッションとディスククオータを確認してください): %s" + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "解凍したバックアップファイルを設置" + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "zipファイル (%s) オープンに失敗しました - %s" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "WordPress ルートディレクトリサーバパス: %s" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "%s エンドポイント" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "... 他にも多数!" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "S3(互換)" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "ファイルがローカルに存在しない - リモートストレージから取得する必要" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "%sのアーカイブを探して:ファイル名:%s" + +#: admin.php:4836 +msgid "Final checks" +msgstr "最終チェック" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "これは、バックアップの実行が終了した後、サーバーから任意の余分なバックアップファイルを削除するには、チェックします(例.チェックを外した場合、すなわち、遠隔に配信された任意のファイルもローカルの保存し、ローカルに保存されている任意のファイルは保存期間の制限の対象となりません)。" + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "ここでドロップ暗号化されたデータベースファイル(db.gz.cryptファイル)は、暗号解読のためにそれらをアップロードします" + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "あなたの wp-content ディレクトリサーバパス: %s" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "RAWバックアップ履歴" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "RAW のバックアップとファイルリストを表示" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "ファイルを処理中 - お待ちください..." + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "それについて何をすべきかについてのヘルプは、このFAQを参照してください。" + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "あなたのWordPressのインストールには、余分な空白を出力する問題があります。これは、ここからダウンロードしたバックアップが壊れる。" + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "データベースファイルオープンに失敗しました。" + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "ファイルシステムに暗号化されたデータベースを書き出すことができませんでした。" + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "既知のバックアップ (raw)" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "そのディレクトリ内のファイルを列挙することができません。" + +#: restorer.php:939 +msgid "Files found:" +msgstr "見つかったファイル:" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "使用中のバックアップディレクトリ: %s" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "要求されたテーブルエンジン (%s) がありません - MyISAM に変更する。" + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "これは、移行(バックアップを別のアドレス/ URLを持つサイトからのものである)のように見えますが、あなたは、データベースを置換するオプションをチェックしませんでした。それは通常、間違いです。" + +#: admin.php:4908 +msgid "file is size:" +msgstr "ファイルのサイズ:" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "詳細はこちら。" + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "いくつかのファイルはまだダウンロード中か処理中です - お待ち下さい。" + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "このバックアップ・セットは、別のサイトからのものです。 - これは修復ではなく、移行です。この作業を行うためにあなたは、移行のアドオンを必要です。" + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "使用中の時間設定はWordPressの設定から、 設定 -> 一般。" + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "HH:MM(例えば14:22)形式に入力します。" + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "%s へのアップロードに失敗しました" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "%s へのログインに失敗しました" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "あなたは%sで認証されません。" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "削除中に %s のアクセスエラーとなりました(詳細はログを参照ください)" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "(削除しながら)あなたは%sを認証されるように表示されません。" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "Dropboxのエラー:%s(詳細については、ログファイルをご参照しください)" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "エラー - %s からのファイルダウンロードに失敗しました" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "エラー - %s のファイルは存在しません" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "%s のエラー" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "%s エラー - ファイルがアップロード出来ませんでした" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "%s エラー - チャンクの再組み立てに失敗しました" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "%s 認証の失敗" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "エラー: %s" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "指定したバックアップディレクトリは存在しますが、書き込み可能ではありませんでした。" + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "指定のバックアップディレクトリは存在しませんでした。" + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "警告: %s" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "最後に行ったバックアップ:" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "非常に大きなファイルが検出されました: %s (size: %s Mb)" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "%s: ファイルが読み込みできません - バックアップすることが出来ませんでした" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "テーブル%sは非常に多くの行(%s)を持っている - あなたのウェブホスティング会社がバックアップにそのテーブルをダンプするための領域をあなたに提供するようにお願いします。" + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "エラーは、最終的なデータベースファイルを閉じながら発生しました" + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "発生した警告:" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "バックアップは確実に成功(注意有り)し完了しました。" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "あなたの空き容量が非常に少ない - %s Mb のみ" + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "新しいサイト:" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "エラー: サイトURLは既に使用されています。" + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "移行サイト (from UpdraftPlus)" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "あなたのマルチサイト内に設定したこの新しいサイトがどこにあるかの詳細を入力します:" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "続ける為に必要な情報:" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "ネットワーク有効化中テーマ:" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "処理されたプラグイン:" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "ファイルパーミッションを確認してください: 入力したディレクトリを作成する事が出来ませんでした:" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "一部のサーバーは、暗号化されたFTPを宣伝しますが、あなたがそれを使用しようとすると、(久しぶり)タイムアウト。あなたがハプニングを見つけた場合は、「エキスパートオプション」の(下)にあるSSLをオフにします。" + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "WebサーバーのPHPのインストールが必要なモジュール(%s)を含めていません。あなたのWebホスティングプロバイダのサポートに連絡し、それを有効にするにできるかをお問い合わせください。" + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "お使いのアクセス資格情報を確認してください。" + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "%s で発生したエラー:" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "要求された情報を提供し、その後継続してください。" + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "削除、テーブルを削除だけでなく、データの削除もできません(%s)" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "新しいテーブルを作成することができません、 よってこのコマンド (%s) はスキップしました。" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "サイト情報:" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "あなたのデータベースユーザがテーブルを作成する権限がありません。私たちは、単にテーブルを空にすることによって復元しようとします。これは、a)あなたは同じデータベース構造でWordPressのバージョンから復元しているのように動作する必要があり、およびb)あなたのインポートされたデータベースは、すでにインポートサイトに存在しない任意のテーブルが含まれていません。" + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "警告:" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "あなたはWordPressのマルチサイト上で実行している - しかし、バックアップはマルチサイト用ではありません。" + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "マルチサイトインストールに単一のサイトをインポートするときにWordPressのコアの復元をスキップします。あなたはWordPressのディレクトリに必要なものを持っていたなら、あなたはzipファイルから手動で再度追加する必要があります。" + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "WebサーバのPHPをインストールするには、必要とする(%s)モジュール(%s)を含めていません。あなたのWebホスティングプロバイダのサポートに連絡し、それを有効にするには、お問い合わせください。" + +#: admin.php:596 +msgid "Close" +msgstr "閉じる" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "予期しない応答:" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "複数のアドレスに送信するには、カンマで各アドレスを区切ります。" + +#: admin.php:576 +msgid "PHP information" +msgstr "PHPインフォメーション" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "見つかった実行可能なzipファイル:" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "PHPの情報を表示 (phpinfo)" + +#: admin.php:2627 +msgid "Get it here." +msgstr "こちらから入手できます。" + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "私たちの\"Migrator (移行)\" アドオンを試してください。一度使うと、手動でサイトをコピーするのに必要な時間と購入価格を比べ、便利と感じるはずです。" + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "サイトの移行または複製をしますか?" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "ステップバイステップどのように行うのかこの記事を読んで" + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "サイトの移行" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "削除中...完了するために、リモートストレージとの通信のための時間を許可してください。" + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "リモートストレージからも削除" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "UpdraftPlus.com の最新ニュース:" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "複製/移行" + +#: admin.php:2304 +msgid "Premium" +msgstr "プレミアム" + +#: admin.php:2305 +msgid "News" +msgstr "ニュース" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "バックアップ設定セットが見つかりません" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "%s - バックアップが出来ませんでした; 対応するディレクトリが存在しません (%s)" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "RSS" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "ブログリンク" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "UpdraftPlus ブログから最新情報やお得な情報を購読" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "%s の設定テスト中..." + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "あるいは、あなたのUpdraftPlusディレクトリ(通常のwp-content/updraft)、例えばに手動で配置することができますFTP経由で、その後、上記の「再スキャン」リンクを使用しています。" + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "UpdraftPlus・デバッグ・モードがオンになっています。あなただけではなくUpdraftPlusからこのページのデバッグ通知を参照するが、インストールされている他のプラグインからの場合があります。あなたがサポート要求を上げる前に、あなたが見ている通知がUpdraftPlusからのものであることを確認してみてください。" + +#: admin.php:880 +msgid "Notice" +msgstr "注意" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "発生したエラー:" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "再スキャン中(手動でアップロードしたバックアップを検索しています)..." + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "検索中" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "格納先:" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "\"%s\" は主キーがありません。 %s 行 にて手動で変更する必要があります。" + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "行: %d" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "要した時間(秒):" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "エラー:" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "SQL更新コマンドを実行します。" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "変更が行われた" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "行を検査した" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "テーブルを検査した" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "テーブルのリストを取得出来ませんでした" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "データベースの検索と置換:バックアップダンプ%sに%sを置き換えます" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "警告:データベース・サイトのURL(%s)は、我々は(%s)期待したものとは異なっています" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "何も行いません:サイトのURLは既にある:%s" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "エラー: 予期しない空のパラメータ (%s, %s)" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "オプションは選択されていません。" + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "データベース: サイトURLの検索と置換" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "失敗しました: %sのオペレーションによって返された結果を理解出来ませんでした。" + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "失敗しました: %s のオペレーションを開始することが出来ませんでした。" + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "(詳細)" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "データベースからサイトの場所を検索と置換 (移行)" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "データベース内のサイトの場所へのすべての参照は、現在のサイトのURLに置き換えます:%s" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "ブログアップロード" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "必要なプラグイン" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "このページにアクセスする権限がありません。" + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "このページにアクセスする十分な権限がありません。" + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "マルチサイトインストール" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "次回開始予定" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "失敗しました: ポートは整数値でなければなりません。" + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "パスワード" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "ユーザ名" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "ホスト名" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "ログイン後にディレクトリを変更する場合は - 多くの場合、これはあなたのホームディレクトリに対する相対パスです。" + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "ディレクトリパス" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "パスワード" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "ポート" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "ホスト" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "%s エラー: ダウンロードに失敗しました" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "あなたのファイルのアクセス権を確認します:正常に作成し、入力しませんでした:" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "%s は見つかりません" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "Explicit encryptionがデフォルトで使用されます。implicit encryption(ポート990)を強制するには、追加する。:ポート990のあなたのFTPサーバ。" + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "暗号化されたFTPが利用可能で、あなたがエキスパートオプションを使用してそれを無効にしない限り、自動的に、(それが成功しない場合、非暗号化にフォールバックする前に)最初に試行されます。 「テストFTPのログイン」ボタンは使用されている接続の種類を教えてくれます。" + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "%sのディレクトリのバックアップなし:何もありませんでしたが、バックアップするものが見つけられません。" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "あなたが入力した内容に注意してください - あなたが入力して、あなたの全体のウェブサーバを含むzipを本当に作成しようとします。" + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "使用する場合、絶対パスを入力してください (WordPressを設置している所からのパスではありません)。" + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "このオプションが何の為にあるか分からない場合、あなたにはおそらく必要ありません、オフにしてください。" + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "ディレクトリを入力:" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "その他のファイル" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "WordPress core(WordPressのルートディレクトリへの追加を含む)" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "上記のファイルは、WordPressのインストールですべてのものを含みます。" + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "wp-config.php を上書き" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "WordPress Core" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "失敗:私たちは、そのディレクトリにファイルを配置することができませんでした - あなたの資格情報を確認してください。" + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "失敗しました" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "WebDAV URL" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "ローカル書き込みが失敗しました:ダウンロードに失敗しました" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "リモートファイルオープンエラー:ダウンロードに失敗しました" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "%sのチャンク(データ):A %sのエラーが発生しました" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "%sの設定が検出されませんでした" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "失敗:私たちは正常にログインしましたが、指定されたディレクトリ内のファイルを作成することができませんでした。" + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "成功:我々は正常にログインし、指定されたディレクトリ内のファイル(ログインタイプ)を作成する機能を確認しました:" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "失敗:我々は成功し、これらの資格情報でログインしていませんでした。" + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "失敗:サーバーの詳細が与えられませんでした。" + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "既に存在している必要があります" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "あなたは暗号化したい場合(例えば重要なビジネスデータ)、次のアドオンで可能になります。" + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "暗号化されないFTPは通常の UpdraftPlus でサポートされています。" + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "あなたの%sのアカウント名:%s" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "返された情報の一部は予想されなかった - あなたのマイレージは異なる場合があります" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "あなたの %s のアカウントの認証中" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "そのためのアドオンがあります。" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "あなたは、同じDropboxの中にいくつかのサイトをバックアップしているなら、そして、サブフォルダに整理したい場合" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "バックアップは保存されています" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "サブフォルダを使用する必要がありますか?" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "エラー: %s のファイルアップロードに失敗しました (詳細はログファイルを参照)" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "あなたはDropboxで認証されません。" + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "%sの通信は暗号化されませんでした。" + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "%sの通信が暗号化されています。" + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "私たちはバケットにアクセスし、その中にファイルを作成することができました。" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "我々はバケットにアクセス成功したが、ファイルを作成しようとして失敗しました。" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "失敗" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "失敗:我々が正常にアクセスしたり、そのようなバケットを作成できませんでした。お使いのアクセス資格情報をチェックし、それらが正しいならば、(別の%sのユーザーとして既にあなたの名前をとっている場合があります)、別のバケット名をお試しください。" + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "リージョン" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "失敗:いいえバケットの詳細は与えられませんでした。" + +#: methods/s3.php:961 +msgid "API secret" +msgstr "APIの秘密" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "バケット名だけまたはバケットとパスを入力します。例:mybucket、mybucket/ mypath" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "%s の場所" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "%s 秘密鍵" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "%s アクセスキー" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "SSL 証明書に関するエラーが表示された場合、こちらのヘルプをご覧ください。" + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "ストレージに使用するバケット名(文字と数字)(および必要に応じてパス) -  お使いのアクセスキーと%sのコンソールから秘密鍵を取得し、その後、(すべての%sのユーザーがグローバルに一意)を選びます。それはまだ存在しない場合は、このバケットが作成されます。" + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "%sエラー:バケット %s にアクセス失敗しました。あなたの権限と資格情報を確認してください。" + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "" +"%s Error: Failed to download %s. Check your permissions and credentials.\n" +"%s エラー: ダウンロードに失敗しました %s。 権限と認証情報をご確認ください。" + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "%sの再構築エラー(%s):(詳細は、ログ・ファイルをご参照)" + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "%sのアップロード(%s):再構築に失敗しました(詳細については、ログをご参照)" + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "%s チャンク %s :失敗したアップロード" + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "%sのエラー:ファイル %sが予期せずに短縮されました" + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "%sのアップロード:マルチパートアップロードのため、アップロードIDを得ることができませんでした- 詳細については、ログファイルを参照してください。" + +#: methods/email.php:69 +msgid "Note:" +msgstr "注意:" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "WordPress バックアップ" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "私たちは、コンテナにアクセスし、その中にファイルを作成することができました。" + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "クラウドファイルエラー - 私たちは、コンテナにアクセスしますが、その中のファイルの作成に失敗しました" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "失敗:コンテナの詳細は与えられませんでした。" + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "ユーザ名:" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "API key" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "失敗:%sが与えられませんでした。" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "UpdraftPlusの%sのモジュールのの%sは必要とします。いずれのサポート要求を提出しないでください。何の代替手段はありません。" + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "クラウドファイルコンテナ" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "クラウドファイルAPIキー" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "クラウドファイル名" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "イギリス" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "アメリカ(デフォルト)" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "米国または英国クラウド" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "または、あなたはこの重要なFAQをお読みください。" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr " あなたのRackspaceのCloudコンソールここで指示を読んで)から、あなたのAPIキーを取得し、ストレージに使用するコンテナの名前を選択します。それはまだ存在しない場合、このコンテナはあなたのために作成されます。" + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "%s 設定テスト" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "リモートファイルのダウンロードエラー: ダウンロードに失敗しました (" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "ローカルファイルのオープンエラー: ダウンロードに失敗しました" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "Cloud ファイルエラー - ファイルがアップロード出来ませんでした" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "%s エラー: ファイルのアップロードに失敗" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "%s エラー: ローカルファイルを開くことが出来ませんでした" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "クラウドファイルエラー - コンテナを生成とアクセスに失敗しました。" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "クラウドファイル認証に失敗しました" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "あなたは(下の[変更を保存]をクリックして)、設定を保存した、一度戻ってここに来るとGoogleを使用して認証を完了するには、このリンクをクリックしてください。" + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "Google で認証" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "クライアント シークレット" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "Googleは、後であなたにメッセージ「invalid_client」を示している場合は、ここで有効なクライアントIDを入力していませんでした。" + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "クライアントID" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "尋ねられたときあなたは、(「詳細オプション」の下で)許可、リダイレクトURIとして以下を追加する必要があります" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "アプリケーションの種類として「Webアプリケーション」を選択します。" + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "スクリーンショットを含む長いヘルプについては、このリンクに従ってください。以下の説明は、より多くの専門家のユーザーのために十分です。" + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "どんなにあなたのサイトがどのように大きくても、UpdraftPlusは一時的にそれを少しアップロードすることはできますし、タイムアウトによって阻止されません。 - UpdraftPlusがアップロードをチャンクサポートしているため、%sが素晴らしい選択です。" + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "アカウントは許可されていません。" + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "%s へのアップロードに失敗しました" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "アカウント フル:あなたの%sのアカウントには%dバイトが残っていましたが、ファイルをアップロードするには、%dバイト必要です。" + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "まだGoogleからのアクセストークンを取得していない- あなたは、Googleドライブへの接続を承認または再承認する必要があります。" + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "あなたは%sのアカウントを認証しました。" + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "成功" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "あなたの%sのクォータの使用率:%sの%%使用、%sの利用可能" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "認証に失敗しました" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "" +"いいえリフレッシュトークンは、Googleからの受信されませんでした。これは多くの場合、あなたがクライアントシークレットを誤入力するか、またはあなたはまだそれを修正するため、(下記)を再認証されていないことことを意味します。\n" +"再確認し、それを、再度認証するリンクをたどってください。それが動作しないときには、エキスパートモードを使用し、すべての設定を消去し、Googleの新しいクライアントID/シークレットを作成し、再度設定してください。" + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "こちらから取得してください。" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "%s のサポートはアドオンで利用可能になります" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "あなたはUpdraftPlus %s のアドオンをインストールしていません。 - %sそれを提供する。" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "既存の認証情報を機能しないようにして、%sの再認証する必要があります。" + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "OK" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "テーブル接頭辞が変更されました:テーブル接頭辞に応じて%sのテーブルフィールド(複数可)を変更します:" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "終了:行が処理された:秒.2f%dを%" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "データベースクエリが実行されていた" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "復元されます:" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "古いテーブル prefix:" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "バックアップ:" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "データベースアクセス:直接MySQLのアクセスは利用できないので、(これはかなり遅くなります)wpdbにフォールバックされます" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "データベースファイルを開く事が出来ませんでした" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "データベースファイルが見つかりませんでした" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "警告:PHPのセーフモードがサーバー上でアクティブです。タイムアウトは、はるかに可能性があります。これらが発生した場合は、手動にてphpMyAdminまたは別の方法でファイルを復元する必要があります。" + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "バックアップからのwp-config.php:復元中(ユーザの要求に応じて)" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "バックアップからWP-config.phpを戻す:WP-CONFIG-backup.phpとして復元されます" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "ファイルシステムへの復号化されたデータベースを書き込みに失敗しました" + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "一時ディレクトリの作成に失敗しました。" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "復元直後に作業用ディレクトリの削除に失敗しました。" + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "古いディレクトリを削除出来ませんでした。" + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "クリーニング" + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "データベースを復元する(大規模なサイトでは、この長い時間がかかります - あなたのウェブホスティング会社は、あなたのリソースを制限するために、ホスティング設定している場合、それがタイムアウトする(起こりうる場合)、あなたは、phpMyAdminのように異なる方法を使用してください)..." + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "データベースは正常に復号化しました。" + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "データベース復号化中 (しばらく時間がかかります)..." + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "バックアップ解凍中..." + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "このエンティティのコピーは、失敗した" + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "バックアップファイルは利用できません。" + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "UpdraftPlus はこの種類は直接復元することが出来ません。手動で復元する必要があります。" + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "復元する為のファイルを見つけることが出来ませんでした" + +#: admin.php:5009 +msgid "Error message" +msgstr "エラーメッセージ" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "バックアップのレコードは、このファイルの適切なサイズに関する情報が含まれていません。" + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "アーカイブのサイズであることが期待されます。" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "サポートが必要な場合、この情報をお知らせください:" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "失敗:復元するためにどのエンティティに関する情報を見つけることができませんでした。" + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "UpdraftPlus復元:進捗状況" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "このバックアップは、バックアップ履歴には存在しない - 復元が中止されました。タイムスタンプ:" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "このボタンを押した後、あなたが復元したいコンポーネントを選択するオプションが与えられます" + +#: admin.php:4572 +msgid "Press here to download" +msgstr "ここからダウンロードしてください" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "このバックアップ設定セットを削除" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "グッドニュース:%sのサイトの通信を暗号化することができます。あなたはすべてのエラーは、暗号化をどうする表示された場合、より多くの助けを「エキスパート設定」に見えます。" + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "WebサーバーのPHP/Curlのインストールは、HTTPSアクセスをサポートしていません。我々は、このサポートなしの%sにアクセスできません。あなたのウェブは、プロバイダのサポートをホストに連絡してください。 %sのCurl+ HTTPSを必要とします。いずれのサポート要求を提出しないでください。何の代替手段はありません。" + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "WebサーバーのPHP/curl·インストールは、HTTPSアクセスをサポートしていません。 %sの通信は暗号化されません。 (アドオンで)暗号化のための能力を獲得するために、curl/ SSLをインストールするには、Webホストを依頼してください。" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "サーバのPHPに必要なモジュール(%s) がありません。サーバのサポートにご連絡ください。" + +#: admin.php:4062 +msgid "Save Changes" +msgstr "変更を保存" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "このオプションを選択すると、すべてで、可能な場合は、UpdraftPlusで認証と暗号化されたトラフィックのためにSSLを使用を停止することにより、セキュリティを低下させます。この設定は効果がありません。これらのプロバイダーとなるいくつかのクラウド·ストレージ·プロバイダー(例えばDropbox)は、設定しないことに注意してください。" + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "SSLを無効に完全に可能な場合" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "すべてのクラウドバックアップ方法は必ずしもSSL認証を使用しているわけではないことに注意してください。" + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "このオプションを選択すると、接続された暗号化サイトの身元(例えばDropboxの、Googleドライブ)を確認するUpdraftPlusで停止することにより、セキュリティを低下させます。それはUpdraftPlusが認証のためだけでなく、トラフィックの暗号化にSSLを使用しないことを意味します。" + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "SSL証明書を確認しない" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "デフォルトUpdraftPlusは、リモートサイトの身元を確認するためにSSL証明書の独自のストアを使用することによって(すなわち、それは本当のDropbox、Amazon S3などで、攻撃者ではないを確認します)。我々は、最新のこれらを保ちます。あなたは、SSLエラーが発生した場合は、その後(UpdraftPlusではなくWebサーバーのコレクションを使用するようになり)、このオプションを選択することに役立つことがあります。" + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "サーバのSSL証明書を使用" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "失敗した場合、サーバー上の権限を確認するか、Webサーバのプロセスから書き込み可能である別のディレクトリに変更します。" + +#: admin.php:3697 +msgid "click here" +msgstr "こちらをクリック" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "または、このオプションをリセット" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "バックアップディレクトリは書き込み可能です、 いいですね。" + +#: admin.php:4009 +msgid "Backup directory" +msgstr "バックアップディレクトリ" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "ローカルバックアップを削除" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "設定の必要はありませんが、問題がある場合又はあなたの好奇心が強い場合はさらにいくつかのオプションを表示する為にクリックしてください" + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "エキスパート設定を表示" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "エキスパート設定" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "Debug モード" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "アドバンス / デバッグ設定" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "バックアップを開始しています..." + +#: admin.php:591 +msgid "Cancel" +msgstr "キャンセル" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "なし" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "保存先を選択" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "手動でデータベースバックアップファイルを解読" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "データベース暗号化フレーズ" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "Eメール" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "上記のディレクトリは、あなたがWordPress.orgから新たにダウンロードすることができますWordPressのコア自体を除いて、すべてです。" + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "これらは除外:" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "wp-content の中に含まれる他のディレクトリ" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "バックアップするファイル" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "例えば昼間はサーバが混雑していて夜間に実行したい場合" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "バックアップが実行される時間を変更するには" + +#: admin.php:3683 +msgid "Monthly" +msgstr "1 ヶ月ごと" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "2 週間ごと" + +#: admin.php:3681 +msgid "Weekly" +msgstr "1 週間ごと" + +#: admin.php:3680 +msgid "Daily" +msgstr "1 日ごと" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "ログファイルをダウンロード" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "フォルダは存在していますが、ウェブサーバはそれへの書き込み権限を持っていません。" + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "" +"フォルダは作成されましたが、ファイルに書き込めるようパーミッションを777(誰でも書き込み可能)に変更しました。\n" +"問題が無いかどうかあなたのホスティングプロバイダにて確認する必要があります。" + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "ディレクトリを作成する時にファイルシステムへの処理が失敗しました。" + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "削除" + +#: admin.php:3418 +msgid "show log" +msgstr "ログを見る" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "全ての UpdraftPlus の設定を削除します - 本当に実行してもよろしいですか?" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "計算する" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "注意 このカウントはオプションを保存した最後の時間を除外し、した、しないに関わらず、基づいています。" + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "ディスク上の合計データ (非圧縮):" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "いいえ" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "はい" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "%s バージョン:" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "現在のメモリ使用量" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "最大メモリ使用量" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "ウェブサーバー:" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "UpdraftPlus プレミアム又はスタンドアロンのマルチサイトアドオンを確認してください。" + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "WordPress マルチサイトのサポートを必要としますか?" + +#: admin.php:2654 +msgid "Multisite" +msgstr "マルチサイト" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "一度だけバックアップを実行" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "復元前に知っておくと便利な情報を得るにはこの記事をお読みください。" + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "移行ツールのアドオンで、あなたは(新しい場所/ URLにWebサイトを移行するための)データベースを置き換えることができます。- 詳細については、このリンクに従ってください。" + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "%s の復元オプション:" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "手動で復元する必要があります。" + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "このデータは自動で復元することが出来ません: \"%s\"。" + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "あなたのサーバはPHPの safe_mode がアクティブです。" + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "復元する構成を選択" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "復元中はこのサイトのテーマ、プラグイン、アップロード、データベース、および/または他のコンテンツのディレクトリ(バックアップセット、そしてあなたの選択に含まれているもの)を置き換えます。" + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "バックアップの復元" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "バックアップを復元" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "バックアップ設定セットの削除" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "ダウンロードエラー:サーバーは異常な返答をしました。" + +#: admin.php:570 +msgid "You should:" +msgstr "あなたはする必要があります:" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "エラー:" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "計算中..." + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "UpdraftPlus - バックアップファイルをアップロード" + +#: admin.php:3020 +msgid "refresh" +msgstr "更新" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "UpdraftPlus が使用しているウェブサーバの容量" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "Google Drive" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "あなたはこれを使用している場合、ターボ/ロードモードをオフにしてください。" + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "Opera ウェブブラウザについて" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "他のタスク:" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "最近のログファイルをダウンロード" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "(まだ何もありません)" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "最後のログメッセージ" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "復元" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "今すぐバックアップ" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "データベース" + +#: admin.php:229 +msgid "Files" +msgstr "ファイル" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "次のバックアップスケジュール" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "ファイルのバックアップと同時に" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "バックアップスケジュールがありません" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "この管理インターフェイスは、頻繁にJavaScriptを使用しています。あなたはブラウザ内でJavaScriptを有効にするか、JavaScript対応のブラウザを使用する必要があります。" + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "JavaScript の警告" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "古いディレクトリを削除" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "現在の制限:" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "バックアップが復元されました。" + +#: admin.php:2310 +msgid "Version" +msgstr "バージョン" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "開発者のホームページ" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "設定を全てリセットしました。" + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "バックアップディレクトリが正常に作成出来ました。" + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "バックアップディレクトリを作成出来ませんでした" + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "何らかの理由で古いディレクトリの削除に失敗しました。手動で行ってください。" + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "古いディレクトリを正常に削除しました。" + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "古いディレクトリを削除します。" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "UpdraftPlus 設定に戻る" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "アクション" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "復元に成功しました!" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "ファイル名の形式が良くない - これは UpdraftPlus によって作成されたデータベース暗号化ファイルのようにみえません。" + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "ファイル名の形式が良くない - これは UpdraftPlus によって作成されたファイルのようにみえません。" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "ローカルコピーが存在しません。" + +#: admin.php:2072 +msgid "Download in progress" +msgstr "進行中のダウンロード" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "ファイル準備。" + +#: admin.php:2043 +msgid "Download failed" +msgstr "ダウンロードに失敗しました" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "エラー" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "ジョブが見つかりませんでした - おそらく終了していませんか?" + +#: admin.php:1854 +msgid "Job deleted" +msgstr "ジョブを削除しました" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "OK. \"最近のログメッセージ\" から活動を見ることができます。" + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "まだ何もありません" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "バックアップ中に問題が発生した場合はFAQを参照してください。" + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "あなたのウェブサイトは %s のウェブサーバを使用しています。" + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "UpdraftPlusは%sの前に、WordPressのバージョンは正式サポートしていません。それはあなたのために働くかもしれませんが、動かない場合、あなたがWordPressをアップグレードするまではサポートがされませんので、ご注意ください。" + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "あなたがUpdraftPlusバックアップを作成するために使用するように設定されているディスクの空きディスク領域が%sの未満となっています。 UpdraftPlusはよくDISK領域を使い果たす可能性があります。この問題を解決するには、サーバー(例えば、あなたのウェブホスティング会社)のお問い合わせ窓口にお問い合わせください。" + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "警告" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "アドオン / プロサポート" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "設定" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "可能なファイル" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "%s zip ファイルを作成できません。 詳細はログファイルを参照してください。" + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "無限再帰:詳細はログを参照してください" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "ヘルプやアドオン、サポートのために UpdraftPlus.Com をチェック" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "もっとたくさんの機能とサポートをご希望ですか? UpdraftPlus Premium をチェック" + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "wordpress.org で良いレビューを UpdraftPlus にお願いします。" + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "1分お時間をいただけますか?" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "翻訳しませんか? 宜しければ UpdraftPlus の改善にご協力しませんか?" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "ファイルが見つかりませんでした" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "使用する復号キー:" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "復号化に失敗しました。 最も高い原因としてあなたの使用したキーが間違っている可能性があります。" + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "復号化に失敗しました。データベースファイルは暗号化されていますが、暗号化キーが入力されていません。" + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "書き込みの為にバックアップファイルを開くことが出来ませんでした。" + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "バックアップの配列を取得できない為バックアップ履歴を保存出来ませんでした。バックアップはおそらく失敗です。" + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "ディレクトリを読み取り出来ませんでした。" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "バックアップディレクトリ (%s) は書き込み出来ません、又は存在しません。" + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "WordPressのバックアップが完了しました" + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "バックアップを試みましたが終了、失敗しました。" + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "バックアップは成功し完了しました。" + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "データベースを暗号化する際に暗号化エラーが発生しました。 暗号化は中止しました。" + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "バックアップディレクトリにファイルを作成出来ませんでした。バックアップを中止 - UpdraftPlus の設定を確認してください。" + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "その他" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "アップロードファイル" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "テーマ" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "プラグイン" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "ログファイルが見つかりませんでした。" + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "ログファイルを読み取る事ができませんでした。" + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "UpdraftPlus からの通知:" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "UpdraftPlus Backups" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-lt_LT.mo b/plugins/updraftplus/languages/updraftplus-lt_LT.mo new file mode 100644 index 0000000..2b0ce42 Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-lt_LT.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-lt_LT.po b/plugins/updraftplus/languages/updraftplus-lt_LT.po new file mode 100644 index 0000000..f62760a --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-lt_LT.po @@ -0,0 +1,6109 @@ +# Translation of UpdraftPlus in Lithuanian +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2015-07-20 13:54:21+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: lt\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "" + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "" + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "" + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "" + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "" + +#: addons/webdav.php:91 +msgid "Path" +msgstr "" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "" + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "" + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "" + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "" + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "" + +#: admin.php:2310 +msgid "FAQs" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "" + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "" + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "" + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "" + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "" + +#: methods/ftp.php:355 +msgid "login" +msgstr "" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "" + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "" + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "" + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "" + +#: admin.php:2604 +msgid "Now" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "" + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "" + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "" + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "" + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "" + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "" + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "" + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "" + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "" + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "" + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "" + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "" + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "" + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "" + +#: admin.php:3420 +msgid "stop" +msgstr "" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "" + +#: admin.php:3092 +msgid "this backup set" +msgstr "" + +#: admin.php:3020 +msgid "calculate" +msgstr "" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "" + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "" + +#: admin.php:601 +msgid "Saving..." +msgstr "" + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:557 +msgid "Fetching..." +msgstr "" + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "" + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "" + +#: admin.php:2884 +msgid "Dismiss" +msgstr "" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "" + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "" + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "" + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "" + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "" + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "" + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "" + +#: admin.php:3860 +msgid "File Options" +msgstr "" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "" + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "" + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "" + +#: admin.php:5157 +msgid "settings" +msgstr "" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "" + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "" + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "" + +#: admin.php:442 +msgid "Extensions" +msgstr "" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "" + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "" + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "" + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "" + +#: addons/azure.php:524 +msgid "container" +msgstr "" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "" + +#: addons/azure.php:523 +msgid "optional" +msgstr "" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "" + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "" + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "" + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "" + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "" + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "" + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "" + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "" + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "" + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "" + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "" + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "" + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "" + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "" + +#: restorer.php:767 +msgid "Deferring..." +msgstr "" + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "" + +#: admin.php:3081 +msgid "Deselect" +msgstr "" + +#: admin.php:3080 +msgid "Select all" +msgstr "" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "" + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "" + +#: admin.php:634 +msgid "For backups older than" +msgstr "" + +#: admin.php:633 +msgid "week(s)" +msgstr "" + +#: admin.php:632 +msgid "hour(s)" +msgstr "" + +#: admin.php:631 +msgid "day(s)" +msgstr "" + +#: admin.php:630 +msgid "in the month" +msgstr "" + +#: admin.php:629 +msgid "day" +msgstr "" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "" + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "" + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "" + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "" + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "" + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "" + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "" + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "" + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "" + +#: admin.php:607 +msgid "Update quota count" +msgstr "" + +#: admin.php:606 +msgid "Counting..." +msgstr "" + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "" + +#: admin.php:603 +msgid "Connecting..." +msgstr "" + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "Atnaujinti dabartinį statusą" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "Gaukite daugiau kvotų" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "Dabartinis naudojimas:" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "Čia galite gauti daugiau kvotų" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "%s Klaida: neturite pakankamai laisvos vietos (%s) šio archyvo įkėlimui (%s)." + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "Atsijungti" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "Kvota:" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "Saugyklos savininkas" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "Viskas padaryta - daugiau nieko nebereikia nustatinėti." + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "Šis tinklalapis yra prisijungęs prie UpdraftPlus saugyklos." + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "Jūs esate neprisijungę prie UpdraftPlus saugyklos." + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "Eikite čia pagalbos" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "El.paštas" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "Atgal..." + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "Prenumerata gali būti atšaukta bet kuriuo metu" + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "%s per ketvirtį" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "Apie tai plačiau skaitykite čia" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "UpdraftPlus saugykla yra sukurta naudojantis pirmaujančiais pasaulyje Amazon duomenų centrais, suteikiančiais 99,999999999% duomenų saugojimo patikimumą." + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "Jau įsigijote vietos?" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "Rodyti pasirinktis" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "Pirmą kartą vartotojas?" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "Paspauskite mygtuką, kad galėtumėte pradėti" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "UpdraftPlus saugykla suteikia jums duomenų laikymą, kuris yra patikimas, lengvai naudojamas ir puikios kainos ." + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "" + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "" + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "Updraft saugykla" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "Ištrynimas nepavyko:" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "Suspaudimo variklis grąžina pranešimą: %s." + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "Be šio leidimo, UpdraftPlus negali trinti atsarginių kopijų - jūs taip pat turėte nustatyti savo \"išsaugomus\" nustatymus labai aukštus, kad būtų išvengta rodomų ištrynimo klaidų." + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "Leisti ištrinti" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "Be šio leidimo, jūs negalite tiesiogiai atsisiųsti arba atkurti naudojantis UpdraftPlus ir vietoj to reikia apsilankyti AWS svetainėje." + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "Leisti parsisiųsti" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "" + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "" + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "Esantys raktai:" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "Raktai, leidžiantys nuotolinių tinklalapių prisijungimą, dar nėra sukurti." + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "Jūsų naujas raktas:" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "Turite nusikopijuoti šį raktą dabar - dar kartą jis nebus parodytas." + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "Raktas sukurtas sėkmingai." + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "" + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "" + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "tinklalapis nerastas" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "Atsarginės kopijos duomenys bus siunčiami į:" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "Atkurti iš esamo atsarginės kopijos rinkinio šiam tinklalapiui" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "Šis tinklalapis neturi atsarginės kopijos atkūrimui." + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "Atsarginė kopija padaryta %s" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "Šis saugojimo būdas neleidžia parsisiųsti" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "(Atsarginės kopijos rinkinys importuotas iš nuotolinės vietos)" + +#: admin.php:4423 +msgid "Site" +msgstr "Tinklalapis" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "Atsarginė kopija išsiųsta į nuotolinį tinklalapį - parsisiuntimas negalimas." + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "" + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "" + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "Testuojamas ryšys..." + +#: admin.php:617 +msgid "Deleting..." +msgstr "Trinama..." + +#: admin.php:616 +msgid "key name" +msgstr "rakto pavadinimas" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "Prašome suteikti šiam raktui pavadinimą (pvz nurodyti svetainę):" + +#: admin.php:611 +msgid "Creating..." +msgstr "Kuriama..." + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "Arba gaukite atsarginę kopiją iš nuotolinio tinklalapio" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "Įveskite raktą čia" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "Kaip aš gausiu tinklalapio raktą?" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "" + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "Arba siųsti atsarginę kopiją į kitą tinklalapį" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "Siųsti" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "Siųsti į tinklalapį:" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "Priimantys tinklalapiai yra nepridėti." + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "Tai yra atsarginių kopijų siuntimui į sekantį tinklalapį:" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "Raktas sėkmingai pridėtas." + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "Įvestas raktas nepriklauso nuotoliniam tinklalapiui (jis priklauso šiam)" + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "Įvestas raktas yra sugadintas - prašau pabandyti dar kartą. " + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "Įvestas raktas yra netinkamo ilgio - prašau pabandyti dar kartą." + +#: addons/migrator.php:1861 +msgid "key" +msgstr "raktas" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "Beveik visi FTP serveriai nori pasyvaus režimo; bet jeigu jums reikia aktyvaus režimo, tada nuimkite tai." + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "Pasyvus režimas" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "Nuotolinis kelias" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "FTP slaptažodis" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "FTP naudotojo vardas" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "FTP serveris" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "" + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "" + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "Pridėti tinklalapį" + +#: admin.php:608 +msgid "Adding..." +msgstr "Pridedama..." + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "" + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "" + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "" + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "" + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "" + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "" + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "" + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "" + +#: methods/email.php:73 +msgid "configure it here" +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "" + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "" + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "" + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "" + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "" + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "" + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "" + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "" + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "" + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "" + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "" + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "" + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "" + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "" + +#: admin.php:2831 +msgid "Personal support" +msgstr "" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "" + +#: admin.php:2718 +msgid "Get it from" +msgstr "" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "" + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "" + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "" + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "" + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "" + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "" + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "" + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "" + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "" + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "" + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "" + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "" + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "" + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "" + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "" + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "" + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "" + +#: admin.php:4368 +msgid "Backup date" +msgstr "" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "" + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "" + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "" + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "" + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "" + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "" + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "" + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "" + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "" + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "" + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "" + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "" + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "" + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "" + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "" + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "" + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "" + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "" + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "" + +#: backup.php:829 +msgid "Incremental" +msgstr "" + +#: backup.php:829 +msgid "Full backup" +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "" + +#: backup.php:895 +msgid "read more at %s" +msgstr "" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "" + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "" + +#: admin.php:3872 +msgid "Database Options" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "" + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "" + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "" + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "" + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "" + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "" + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "" + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "" + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "" + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "" + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "" + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "" + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "" + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "" + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "" + +#: admin.php:4499 +msgid "External database" +msgstr "" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "" + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "" + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "" + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "" + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "" + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "" + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "" + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "" + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "" + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "" + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "" + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "" + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "" + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "" + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "" + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "" + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "" + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "" + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "" + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "" + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "" + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "" + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "" + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "" + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "" + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "" + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "" + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "" + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "" + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "" + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "" + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "" + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "" + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "" + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "" + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "" + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "" + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "" + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "" + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "" + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "" + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "" + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "" + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "" + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "" + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "" + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "" + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "" + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "" + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "" + +#: admin.php:1528 +msgid "Constants" +msgstr "" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "" + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "" + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "" + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "" + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "" + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "" + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "" + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "" + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "" + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "" + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "" + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "" + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "" + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "" + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "" + +#: admin.php:556 +msgid "Trying..." +msgstr "" + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "" + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "" + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "" + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "" + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "" + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "" + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "" + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "" + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "" + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "" + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr "" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr "" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "" + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "" + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "" + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "" + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "" + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "" + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "" + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "" + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "" + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "" + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "" + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "" + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "" + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "" + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "" + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "" + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "" + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "" + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "" + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "" + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "" + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "" + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "" + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "" + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "" + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "" + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "" + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "" + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "" + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "" + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "" + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "" + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "" + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "" + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "" + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "" + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "" + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "" + +#: admin.php:3359 +msgid "table: %s" +msgstr "" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "" + +#: restorer.php:646 +msgid "file" +msgstr "" + +#: restorer.php:639 +msgid "folder" +msgstr "" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "" + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "" + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "" + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "" + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "" + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "" + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "" + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "" + +#: admin.php:2310 +msgid "More plugins" +msgstr "" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "" + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "" + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "" + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "" + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "" + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "" + +#: admin.php:584 +msgid "Upload error" +msgstr "" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "" + +#: admin.php:582 +msgid "Upload error:" +msgstr "" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "" + +#: admin.php:572 +msgid "Download to your computer" +msgstr "" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "" + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "" + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "" + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "" + +#: admin.php:563 +msgid "Warnings:" +msgstr "" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "" + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "" + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "" + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "" + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "" + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "" + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "" + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "" + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "" + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "" + +#: admin.php:4836 +msgid "Final checks" +msgstr "" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "" + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "" + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "" + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "" + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "" + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "" + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "" + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "" + +#: restorer.php:939 +msgid "Files found:" +msgstr "" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "" + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "" + +#: admin.php:4908 +msgid "file is size:" +msgstr "" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "" + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "" + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "" + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "" + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "" + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "" + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "" + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "" + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "" + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "" + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "" + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "" + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "" + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "" + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "" + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "" + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "" + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "" + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "" + +#: admin.php:596 +msgid "Close" +msgstr "" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "" + +#: admin.php:576 +msgid "PHP information" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "" + +#: admin.php:2627 +msgid "Get it here." +msgstr "" + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "" + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "" + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "" + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "" + +#: admin.php:2304 +msgid "Premium" +msgstr "" + +#: admin.php:2305 +msgid "News" +msgstr "" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "" + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "" + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "" + +#: admin.php:880 +msgid "Notice" +msgstr "" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "" + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "" + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "" + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "" + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "" + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "" + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "" + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "" + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "" + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "" + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "" + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "" + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "" + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "" + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "" + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "" + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "" + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "" + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "" + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "" + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "" + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "" + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "" + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "" + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "" + +#: methods/s3.php:961 +msgid "API secret" +msgstr "" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "" + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "" + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "" + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "" + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "" + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "" + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "" + +#: methods/email.php:69 +msgid "Note:" +msgstr "" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "" + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "" + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "" + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "" + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "" + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "" + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "" + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "" + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "" + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "" + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "" + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "" + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "" + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "" + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "" + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "" + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "" + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "" + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "" + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "" + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "" + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "" + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "" + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "" + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "" + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "" + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "" + +#: admin.php:5009 +msgid "Error message" +msgstr "" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "" + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "" + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "" + +#: admin.php:4572 +msgid "Press here to download" +msgstr "" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "" + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "" + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "" + +#: admin.php:4062 +msgid "Save Changes" +msgstr "" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "" + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "" + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "" + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "" + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "" + +#: admin.php:3697 +msgid "click here" +msgstr "" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "" + +#: admin.php:4009 +msgid "Backup directory" +msgstr "" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "" + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "" + +#: admin.php:591 +msgid "Cancel" +msgstr "" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "" + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "" + +#: admin.php:3683 +msgid "Monthly" +msgstr "" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "" + +#: admin.php:3681 +msgid "Weekly" +msgstr "" + +#: admin.php:3680 +msgid "Daily" +msgstr "" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "" + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "" + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "" + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "" + +#: admin.php:3418 +msgid "show log" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "" + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "" + +#: admin.php:2654 +msgid "Multisite" +msgstr "" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "" + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "" + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "" + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "" + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "" + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "" + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:570 +msgid "You should:" +msgstr "" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "" + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "" + +#: admin.php:3020 +msgid "refresh" +msgstr "" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "" + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "" + +#: admin.php:229 +msgid "Files" +msgstr "" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "" + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "" + +#: admin.php:2310 +msgid "Version" +msgstr "" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "" + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "" + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "" + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "" + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "" + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "" + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "" + +#: admin.php:2072 +msgid "Download in progress" +msgstr "" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "" + +#: admin.php:2043 +msgid "Download failed" +msgstr "" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "" + +#: admin.php:1854 +msgid "Job deleted" +msgstr "" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "" + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "" + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "" + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "" + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "" + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "" + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "" + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "" + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "" + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "" + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "" + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "" + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "" + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "" + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "" + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "" + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "" + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "" + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "" + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-nb_NO.mo b/plugins/updraftplus/languages/updraftplus-nb_NO.mo new file mode 100644 index 0000000..3a007f2 Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-nb_NO.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-nb_NO.po b/plugins/updraftplus/languages/updraftplus-nb_NO.po new file mode 100644 index 0000000..c51d69c --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-nb_NO.po @@ -0,0 +1,6109 @@ +# Translation of UpdraftPlus in Norwegian (Bokmål) +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-04-13 14:45:26+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: nb_NO\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "" + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "" + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "" + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "" + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "" + +#: addons/webdav.php:91 +msgid "Path" +msgstr "" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "" + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "" + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "" + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "" + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "" + +#: admin.php:2310 +msgid "FAQs" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "Ved oppdatering av utvidelsene oppstod følgende feil: \"%s\"" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "En ny versjon av denne utvidelsen er tilgjengelig." + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "Denne utvidelsen er oppdatert." + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "Se etter oppdateringer" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "Ingen endringslogg er tilgjengelig." + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "Dette er nyttig hvis serveren til kontrollpanelet ikke kan kontaktes med innkommende trafikk fra denne websiden. For eksempel hvis denne websiden er på en offentlig webserver, men UpdraftCentral er på en lukket server, et intern-nett eller denne websiden har en brannmur for utgående trafikk. Det er også nyttig hvis websiden ikke har SSL-sertifisering." + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "Mer informasjon..." + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "Bruk denne alternative metoden for å koble til kontrollpanelet." + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "Kontrollpanel på" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "Nøkkelstørrelse: %d bits" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "Offentlig nøkkel ble sendt til:" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "Kunne ikke åpne mappen \"%s\". Vennligst undersøk mappens tillatelser og eierskap." + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "%s: Filen kan ikke leses. Den kunne dermed ikke sikkerhetskopieres. Vennligst sjekk filens tillatelser og eierskap." + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "Opprett nøkkel" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "tregere, sterkest" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "anbefalt" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "%s byte" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "raskere (mulighet for trege PHP-installasjoner)" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "lett å ødelegge, raskest" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "%s bits" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "Størrelse på krypteringsnøkkel:" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "Fyll inn ditt valgte navn" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "Opprett en nøkkel: Gi denne nøkkelen et unikt navn. Navnet kan for eksempel være navnet på nettsiden den skal brukes til. Trykk deretter på «Opprett nøkkel»:" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "Opplastingen forventes å feile: %s-begrensningen for enhver enkeltstående fil er %s, mens denne filen er %s GB (%d byte)" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "Dette forårsakes noen ganger av en brannmur. Du kan forsøke å skru av SSL i avanserte innstillinger og prøve igjen." + +#: methods/ftp.php:355 +msgid "login" +msgstr "innlogging" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "Vær oppmerksom på at e-postservere som regel har størrelsesbegrensninger – typisk rundt %s MB. Sikkerhetskopier som er større enn eventuelle størrelsesbegrensninger, vil sannsynligvis ikke komme frem." + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "Denne sikkerhetskopien er %s MB stor. Få e-postservere støtter så store vedlegg, så sikkerhetskopien kan sannsynligvis ikke gjennomføres. Hvis dette ikke fungerer, kan du forsøke å sende sikkerhetskopien til en annen form for fjernlagring." + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "Størrelse: %s MB" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "Annet (vennligst spesifisér - for eksempel siden hvor du har installert et UpdraftCentral-kontrollpanel)" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "for eksempel hvis du har en konto der" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "UpdraftPlus deler opp sikkerhetskopier som er større enn denne filstørrelsen. Standardverdien er %s megabyte. Sørg for at du har litt sikkerhetsmargin hvis webhotellet ditt har en hard størrelsesgrense – for eksempel 2 GB-grensen på noen 32-bit-servere og -filsystemer." + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "1 GB gratis lagring i UpdraftPlus Vault" + +#: admin.php:2604 +msgid "Now" +msgstr "Nå" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "Du burde aktivere %s slik at pene permalenker (for eksempel %s) kan fungere." + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "(trykk på et ikon for å velge eller velge bort)" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "%s per år" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "eller (årlig rabatt)" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "Ingen Vault-tilkoblingen ble funnet for denne siden. Har den blitt flyttet? Vennligst koble fra og koble til på nytt." + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "Den gitte filen ble ikke funnet eller kunne ikke leses." + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "UpdraftCentral (fjernkontroll)" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "hent..." + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "Vis nylige logghendelser fra UpdraftCentral" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "Nettadresse til moderskip" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "Fyll inn en hvilken som helst beskrivelse" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "Beskrivelse" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "Opprett ny nøkkel" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "Slett..." + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "Opprettet:" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "Få tilgang til denne siden som bruker:" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "Ingen nøkler har blitt opprettet ennå." + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "Detaljer" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "Nøkkelbeskrivelse" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "En nøkkel ble opprettet, men forsøket på å registrere den med %s feilet. Vennligst forsøk igjen senere." + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "En ugyldig nettadresse ble fylt inn" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "Lukk..." + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "Det ser ut som du allerede er koblet til." + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "Du må besøke denne lenken i den samme nettleseren og sesjonen som du opprettet nøkkelen i." + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "Du må besøke denne nettadressen i den samme nettleseren og sesjonen som du opprettet nøkkelen i." + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "Du er ikke logget inn på denne WordPress-siden i nettleseren din." + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "Den oppgitte nøkkelen er ukjent." + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "Kunne ikke koble til UpdraftCentral." + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "Tilkoblingen til UpdraftCentral ble opprettet." + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "Tilkobling til UpdraftCentral" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "Sikkerhetskopien ble avbrutt av brukeren" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "Innstillingene dine er lagret." + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "Total størrelse på sikkerhetskopien:" + +#: admin.php:3420 +msgid "stop" +msgstr "stopp" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "Denne sikkerhetskopieringen er fullført" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "Wipe-innstillinger" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "nullstill" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "disse kopisettene" + +#: admin.php:3092 +msgid "this backup set" +msgstr "dette kopisettet" + +#: admin.php:3020 +msgid "calculate" +msgstr "regn ut" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "Du burde lagre endringene dine for å forsikre deg om at de benyttes ved neste sikkerhetskopi." + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "Vi forespurte sletting av filen, men forstod ikke svaret fra tjeneren" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "Vennligst fyll inn en gyldig nettadresse" + +#: admin.php:601 +msgid "Saving..." +msgstr "Lagrer..." + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "Feil: Serveren sendte en respons som UpdraftPlus ikke forstod." + +#: admin.php:557 +msgid "Fetching..." +msgstr "Henter..." + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "Asia, Stillehavet (Seoul)" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "Opplastingsadresse:" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "Uventet feil: klassen '%s' ble ikke funnet (din UpdraftPlus installasjonen virker korrupt - prøv å installere på nytt)" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "Den nødvendige %s PHP-modulen er ikke installert; Spør leverandøren av webhotellet ditt om å aktivere den." + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "Hopper over tabellen %s: denne tabellen blir ikke gjenopprettet " + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "Hvis du vil importere en vanlig WordPress installasjon til en flersteds installasjon krever %s." + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "Vennligst les denne linken for å få viktig informasjon om denne prosessen." + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "Det vil bli importert som et nytt område." + +#: admin.php:2884 +msgid "Dismiss" +msgstr "Avbryt" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "Fyll ut den nødvendige informasjonen." + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "Les mer..." + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "N.B. Dette alternativet påvirker bare gejnopprettelse av databasen og opplastinger - andre filer (som plugins) i WordPress er felles for hele nettverket." + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "kan inkludere noen data fra hele nettstedet" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "Alle nettsteder" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "Hvilket nettsted skal gjenopprettes" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "Gjenoppretter kun stedet med id =%s: fjerner andre data (hvis noen) fra den utpakkede sikkerhetskopien" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "FEIL: problem ved oppretting av nettsted." + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "Feil ved oppretting av nye nettstedet på din valgte adresse:" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "Nødvendig informasjon for å gjenopprette denne sikkerhetskopien ble ikke gitt (%s)" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "Tilskriver importert innhold til brukeren" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "Du kan kun bruke små bokstaver eller tall for dette nettstedets bane." + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "Denne funksjonen er ikke kompatibel med %s" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "Importere et enkelt nettsted i en flersteds installasjon" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "annet innhold fra wp-content" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "WordPress Kjerne" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "Du valgte at %s skal tas med i gjenopprettelsen - dette kan ikke / bør ikke gjøres ved import av ett enkelt nettsted til et nettverk." + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "Kall WordPress handling:" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "Dine lagrede innstillinger vil påvirke hva som blir sikkerhetskopiert - f.eks ekskluderte filer." + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "Hopper over: dette arkivet var allerede gjenopprettet." + +#: admin.php:3860 +msgid "File Options" +msgstr "Filalternativer" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "Sender Din Sikkerhetskopi Til Ekstern Lagringsplass" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "Tidsplan for sikkerhetskopiering av database" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "Tidsplan for inkrementell sikkerhetskopiering av filer" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "Tidsplan for sikkerhetskopiering av filer" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "Du må da måtte legge inn alle innstillingene på nytt. Du kan også gjøre dette før deaktivering / avinstallering av UpdraftPlus hvis du ønsker det." + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "Denne knappen vil slette alle UpdraftPlus innstillinger og informasjon om fremgang for sikkerhetskopier under behandling (men ikke noen av dine eksisterende sikkerhetskopier fra sky lagring)." + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "Send denne sikkerhetskopien til ekstern lagringsplass" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "Sjekk ut UpdraftPlus Hvelv." + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "Mangler du ekstern lagringsplass ?" + +#: admin.php:5157 +msgid "settings" +msgstr "Instillinger" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "Sikkerhetskopien vil ikke bli sendt til ekstern lagring - ingenting er lagret i %s" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "Inkluder eventuelle filer i sikkerhetskopien" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "Inkluder databasen i sikkerhetskopien" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "Fortsett å gjenopprette" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "Du har en uferdig gjenopprettelse, påbegynt for %s siden" + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "Uferdige gjenopprettelser" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "%s minutter, %s sekunder" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "Innhold Sikkerhetskopiering og Tidsplan" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "Premium og utvidelser" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "Tilstrekkelig informasjon om den pågående gjenopprettingen ble ikke funnet." + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "Last ned" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "Du har valgt å sikkerhetskopiere filer, men ingen filer er valgt" + +#: admin.php:442 +msgid "Extensions" +msgstr "Utvidelser" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "Avanserte innstillinger" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "Skuffens plasering" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "Vær oppmerksom på at Google ikke støtter enhver oppbevaring på hvert sted - du bør lese Google sin dokumentasjon for å lære om gjeldende tilgjengelighet." + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "Denne innstillingen gjelder bare når en ny skuffe blir opprettet." + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "Du må bruke et skuffenavn som er unikt, for alle %s brukere." + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "Ikke ta feil av %s og %s - de er separate ting." + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "Du har ikke adgang til denne skuffen" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "Europa" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "Øst-Asia" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "Vestlige USA" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "Østlige USA" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "Østlige USA" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "Mellom-Amerika" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "European Union" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "Asia Pacific" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "multiregional plassering" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "USA" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "Nearline" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "Durable reduced availability" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "Standard" + +#: addons/azure.php:524 +msgid "container" +msgstr "beholder" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "Du kan skrive inn banen til en eventuell %s virtuell mappe du ønsker å bruke her." + +#: addons/azure.php:523 +msgid "optional" +msgstr "Valgfri" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "Prefiks" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "Se Microsoft's retningslinjer om navngiving av beholdere ved å følge denne linken." + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "Hvis ikke %s allerede eksisterer, vil det bli opprettet." + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "Skriv inn banen til %s som du ønsker å bruke her." + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "Dette er ikke din Azure pålogging - Se instruksjonene hvis du trenger mer hjelp." + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "Kontonavn" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "Azure" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "Opprett Azure legitimasjon i din Azure utvikler konsoll." + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "Kunne ikke opprette beholder" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "Ingen tilgang til beholderen" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "For å fullføre overføringen / kloningen, bør du nå logge deg på det eksterne siden og gjenopprette sikkerhetskopi settet." + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "Innstillingstabellen ble ikke funnet" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "Ingen innstillings eller metatabeller ble funnet" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "Sikkerhetskopiering av databasen ser ut til å ha feilet" + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "Katalogen for sikkerhetskopiene er ikke skrivbar (eller diskplass er full) - sikkerhetskopien av databasen er forventet å feile snart." + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "nødvendig for noen leverandører av ekstern lagring" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "Ikke installert" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "Storage class" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "Se Google's retningslinjer om navngiving av skuffer ved å følge denne linken." + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "Skuffenavn må være globalt unike. Hvis skuffen ikke allerede eksisterer, vil den bli opprettet." + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "Skriv inn navnet på %s skuffen du ønsker å bruke her." + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "Skuffe" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "Hvis ikke, lar du denne være blank." + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "N.B. Dette er bare nødvendig hvis du ikke allerede har opprettet skuffen, og du ønsker UpdraftPlus å opprette den for deg." + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "Skriv inn ID'en til %s prosjektet du ønsker å bruke her" + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "Følg denne linken til din Google API-konsoll, og der aktiverer du Storage API og opprett en klient-ID i API Access delen." + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "Du må angi en prosjekt ID for å kunne opprette en ny skuffe." + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "Prosjekt ID" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "Du må lagre og godkjenne før du kan teste dine innstillinger." + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "Har ennå ikke fått en tilgangskode fra Google - må du godkjenne eller re-autorisere tilkoblingen til Google skyen." + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "Du har ikke rettigheter til denne skuffen." + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "Google Sky" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "%s Serviceunntak" + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "Du har ikke UpdraftPlus fullstendig installert - vennligst avinstaller og installer det på nytt. Mest sannsynlig feilet WordPress ved kopiering av plugin-filer." + +#: restorer.php:767 +msgid "Deferring..." +msgstr "Utsetter..." + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "eller konfigurere mer komplekse tidsplaner" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "Er du sikker på at du vil fjerne %s fra UpdraftPlus?" + +#: admin.php:3081 +msgid "Deselect" +msgstr "Opphev valg" + +#: admin.php:3080 +msgid "Select all" +msgstr "Velg alle" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "Handlinger for valgte sikkerhetskopier" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "Trykk her for å se i dine fjernlagrings metoder etter eksisterende backupsett (fra noen av sidene, hvis de er lagret i samme mappe)." + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "Behandler..." + +#: admin.php:634 +msgid "For backups older than" +msgstr "For sikkerhetskopier eldre enn" + +#: admin.php:633 +msgid "week(s)" +msgstr "uke(r)" + +#: admin.php:632 +msgid "hour(s)" +msgstr "time(r)" + +#: admin.php:631 +msgid "day(s)" +msgstr "dag(er)" + +#: admin.php:630 +msgid "in the month" +msgstr "i måneden" + +#: admin.php:629 +msgid "day" +msgstr "dag" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "(så mange du vil)" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "Legg til en ekstra oppbevaringsregel..." + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "Denne databasen krever MySQL versjon %s eller nyere." + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "Dette problemet er forårsaket ved å prøve å gjenopprette en database på en svært gammel MySQL versjon som er uforenlig med kildedatabasen." + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "Du har ikke for øyeblikket noen UpdraftPlus hvelv kvote" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "Du må oppgradere MySQL for å kunne bruke denne databasen." + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "Sikkerhetskopien benytter MySQL funksjoner som ikke er støttet den gamle versjonen av MySQL (%s) som dette nettstedet kjører på." + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "Ingen reklamelinker på UpdraftPlus sine oppsettssider" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "UpdraftPlus katalogen i wp-content/plugins har mellomrom i seg; WordPress liker ikke dette. Du bør endre navnet på katalogen til wp-content/plugins/updraftplus for å løse dette problemet." + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "Husker du ikke din e-postadresse, eller glemt passordet ditt?" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "Skriv inn din UpdraftPlus.Com e-post / passord her for å koble til:" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "Her finner du ofte stilte spørsmål." + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "Huk av denne boksen for å bruke Amazon's server kryptering" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "Server kryptering" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "Hvis du har glemt passordet ditt, så gå her for å endre passord på updraftplus.com." + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "Gå til innstillingene for eksterne lagring for å koble til." + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "%s har blitt valgt for ekstern lagring, men du er for tiden ikke tilkoblet." + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "Betalinger kan gjøres i amerikanske dollar, euro eller britiske pund, via kort eller PayPal." + +#: admin.php:607 +msgid "Update quota count" +msgstr "Oppdaterer kvoten" + +#: admin.php:606 +msgid "Counting..." +msgstr "Teller..." + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "Kobler fra..." + +#: admin.php:603 +msgid "Connecting..." +msgstr "Kobler til..." + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "Oppdatere gjeldende status" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "Få mer lagringsplass" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "Nåværende bruk:" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "Du kan få mer lagringsplass her" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "%s Feil: du har for lite lagringsplass tilgjengelig (%s) for å laste opp dette arkivet (%s)." + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "Frakoble" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "Kvote:" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "Hvelv eier" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "Godt gjort - det er ikke noe mer som trengs å sette opp." + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "Dette stedet er tilkoblet UpdraftPlus Hvelvet." + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "Du er ikke tilkoblet til UpdraftPlus Hvelvet." + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "Gå hit for å få hjelp" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "E-post" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "Tilbake..." + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "Abonnement kan avbrytes når som helst." + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "%s pr. kvartal" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "Les mer om det her." + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "UpdraftPlus Hvelv er bygget på toppen av Amazon's verdensledende datasentre, med redundant datalagring for å oppnå 99,999999999% pålitelighet." + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "Allerede kjøpt plass?" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "Vis instillingene" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "Førstegangs bruker?" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "Trykk på en knapp for å komme i gang." + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "UpdraftPlus Hvelv bringer deg lagringsplass som er pålitelig, enkel å bruke og tiil en god pris." + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "Ditt UpdraftPlus Vault abonnement er ikke blitt fornyet, og utsettelsesperioden er utløpt. Om noen få dager, vil de lagrede dataene bli fjernet permanent. Hvis du ikke ønsker at dette skal skje, så bør du fornye så snart som mulig." + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "Betaling for ditt UpdraftPlus Vault abonnement har forfalt. Du er innenfor de dagene av utsettelsesperioden før det vil bli suspendert, og du vil miste din kvote og tilgang til data som er lagret i den. Vennligst fornye så snart som mulig!" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "Ditt UpdraftPlus Premium kjøp er over et år gammelt. Du bør fornye umiddelbart for å unngå å miste de 12 månedene med gratis lagringsplass som du får for å være en aktiv UpdraftPlus Premium kunde." + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "Updraft Hvelv" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "Sletting feilet:" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "ZIP returnerte meldingen: %s" + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "Uten denne tillatelsen, kan UpdraftPlus ikke slette sikkerhetskopier - du bør også sette dine 'beholder' innstillinger svært høy for å hindre feil ved sletting." + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "Tillat sletting" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "Uten denne tillatelsen, kan du ikke direkte laste ned eller gjenopprette ved hjelp av UpdraftPlus, og vil i stedet trenge å besøke AWS hjemmeside." + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "Tillat nedlasting" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "Hvis sending direkte fra nettsted til nettsted ikke fungerer for deg, så er det tre andre metoder - prøv en av disse i stedet." + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "Du bør sjekke at det eksterne nettstedet er online, ikke har brannmur, ikke har sikkerhetsmoduler som kan blokkere tilgang, har UpdraftPlus versjon %s eller senere aktiv, og at nøklene har blitt skrevet inn riktig." + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "Eksisterende nøkler" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "Det er ikke opprettet nøkler som tillater tilkoplinger fra eksterne nettsted." + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "Din nye nøkkel:" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "For å tillate et annet nettsted å sende en sikkerhetskopi til dette området, oppretter du en nøkkel, trykker på 'Migrering'-knappen på nettstedet som skal sende sikkerhetskopien, og kopierer og limer inn nøkkelen der." + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "For å få nøkkelen for det eksterne nettstedet, åpne du 'Migrering' vinduet på det området, og blar nedover. Du kan opprette en der." + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "Nøkler for dette nettstedet er opprettet i avsnittet under den du akkurat trykket inn." + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "Du må kopiere og lime inn denne nøkkelen nå - den kan ikke bli vist igjen." + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "Nøkkel opprettet." + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "En nøkkel med dette navnet finnes allerede; du må bruke et unikt navn." + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "I tillegg, send denne sikkerhetskopien til de aktive eksterne lagringsplasseringene" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "Nettadressen du sender til (%s) ser ut som et lokalt utviklings nettsted. Hvis du sender fra et eksternt nettverk, er det sannsynlig at en brannmur vil blokkere dette." + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "siden ble ikke funnet" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "Sikkerhetskopien vil bli sendt til:" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "Gjenopprett et eksisterende sikkerhetskopisett på dette nettstedet" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "Dette nettstedet har ingen sikkerhetskopi å gjenopprette fra enda." + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "Sikkerhetskopi ble laget av %s" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "Denne lagringsmetoden tillater ikke nedlasting" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "(backupsettet ble importert fra den eksterne plasseringen)" + +#: admin.php:4423 +msgid "Site" +msgstr "Nettsted" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "Sikkerhetskopien ble sendt til den eksterne siden. Den er ikke tilgjengelig for nedlasting." + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "Du burde forsikre deg om at dette settet med sikkerhetskopier virkelig tilhører denne siden før du gjenoppretter. Ikke bruk et kopisett fra en urelatert webside." + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "Dette settet med sikkerhetskopier ble ikke gjenkjent av UpdraftPlus som tilhørende denne WordPress-installasjonen. Den ser heller ut til å ha blitt hentet fra ekstern lagring, eller sendt fra en ekstern side." + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "Tester tilkobling..." + +#: admin.php:617 +msgid "Deleting..." +msgstr "Sletter..." + +#: admin.php:616 +msgid "key name" +msgstr "nøkkelnavn" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "Vennligst gi denne nøkkelen et navn. Du kan for eksempel bruke navnet på siden nøkkelen tilhører." + +#: admin.php:611 +msgid "Creating..." +msgstr "Oppretter..." + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "Eller, få en sikkerhetskopi fra et eksternt nettsted" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "Lim inn nøkkel her" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "Hvordan får jeg nøkkelen fra et nettsted?" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "For å legge til et nettsted som en destinasjon, angir du nettstedets nøkkel under." + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "Eller send en sikkerhetskopi til et annet nettsted" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "Send" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "Send til nettsted:" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "Ingen mottagene nettsteder er blitt lagt til enda." + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "Den er for å sende sikkerhetskopier til følgende nettsted:" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "Nøkkelen ble lagt til." + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "Den angitte nøkkelen tilhører ikke et eksternt nettstad (den hører til dette nettstedet)." + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "Den utfylte nøkkelen var korrupt. Vennligst prøv igjen." + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "Den utfylte nøkkelen har feil lengde. Vennligst prøv igjen." + +#: addons/migrator.php:1861 +msgid "key" +msgstr "nøkkel" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "Nesten alle FTP-servere ønsker passivmodus, men hvis du trenger aktivmodus fjerner du haken her." + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "Passivmodus" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "Ekstern bane" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "FTP-passord" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "FTP-brukernavn" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "FTP-server" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "UpdraftPlus Migratoren modifiserer gjenopprettingen for å tilpasse de sikkerhetskopierte dataene til det nye nettstedet." + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "En \"migrering\" er til syvende og sist det samme som en restaurering - men ved hjelp av sikkerhetskopien som du importerer fra et annet nettsted." + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "Legg til nettsted" + +#: admin.php:608 +msgid "Adding..." +msgstr "Legger til..." + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "Kravet ble ikke godkjent. Kanskje du har benyttet kjøpet et annet sted eller nedlastingen har løpt ut?" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "For å benytte denne sikkerhetskopien må databaseserveren støtte tegnsettet %s." + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "gå hit for å endre passordet ditt på updraftplus.com." + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "Hvis du har glemt passordet ditt" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "Gå hit for å fylle inn passordet ditt på nytt." + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "Etter å ha trykket på denne knappen vil du bli gitt valget om å velge hvilke komponenter du ønsker å migrere." + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "For å importere et sett med sikkerhetskopier, gå til fanen «Sikkerhetskopier»." + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "Du har foretatt endringer uten å lagre." + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "NB: %s skiller ikke mellom store og små bokstaver." + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "Hvis OneDrive senere viser meldingen «unathourized_client», fylte du ikke inn gyldig klient-ID her." + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "For utvidet hjelp med skjermbilder, følg denne linken." + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "Opprett OneDrive-kredentialer i utviklerkonsollen til OneDrive." + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "Du må legge til følgende som autorisert omdirigerings-URL i OneDrive-konsollen din når det spørres om dette. Det gjør du i seksjonen API-instillinger." + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "%s-autorisering feilet:" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "OneDrive" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "Vennligst autorisér tilkoblingen til %s-kontoen på nytt." + +#: methods/email.php:73 +msgid "configure it here" +msgstr "tilpass den her" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "For å fjerne blokkeringen, gå hit." + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "Husk å lagre innstillingene dine." + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "Du bruker nå en IAM-konto for å koble til beholderen din." + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "S3-beholder" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "Kina (Beijing) (begrenset)" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "Sør-Amerika (Sao Paulo)" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "Asia, Stillehavet (Tokyo)" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "Asia, Stillehavet (Sydney)" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "Asia, Stillehavet (Singapore)" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "EU (Frankfurt)" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "EU (Irland)" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "USA, myndigheter, vest (begrenset)" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "USA, vestkysten (Nord-California)" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "USA, vestkysten (Oregon)" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "USA standard" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "Lagringsområde for S3" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "Nytt IAM-brukernavn" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "Hemmelig nøkkel for administrasjon" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "Administrasjonstilgangsnøkkel" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "Deretter vil disse begrensede tilgangskredentialene bli brukt istedenfor å bruke dine administrative nøkler." + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "Disse vil bli brukt til å opprette et nytt par med bruker og nøkkel med en IAM-policy vedlagt hvilken vil kun tillate tilgang til den valgte bøtten." + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "Fyll inn dine administrative Amazon S3-tilgangsnøkler og hemmelige nøkler. Dette må være et nøkkelpar med nok rettigheter til å opprette brukere og bøtter. Fyll også inn et unikt brukernavn til denne nye brukeren og et bøttenavn." + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "Opprett ny IAM-bruker og S3-bøtte" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "Hemmelig nøkkel: %s" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "Tilgangsnøkkel: %s" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "Klarte ikke sette i verk brukerpolicy" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "Klarte ikke opprette tilgangsnøkkel for bruker" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "Klarte ikke opprette tilgangsnøkkel for bruker" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "IAM-operasjonen feilet. %s" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "Konflikt: Den brukeren eksisterer allerede" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "Feil: Vi kunne ikke få tilgang til eller opprette en slik bøtte. Vennligst se over tilgangskredentialene dine, og hvis de er riktige, prøv et annet bøttenavn (ettersom en annen AWS-bruker allerede kan ha tatt navnet ditt)." + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "AWS-godkjenning feilet" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "Kan ikke opprette ny AWS-bruker siden det gamle AWS-verktøysettet benyttes." + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "Du må fylle inn en bøtte" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "Du må fylle inn et nytt IAM-brukernavn." + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "Du må fylle inn en hemmlig nøkkel for administrering." + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "Du må fylle inn en administrasjonsnøkkel." + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "Hvis du har en AWS-adminbruker, så kan du bruke denne veilederen for å raskt lage en ny AWS-bruker (IAM) med tilgang til bare denne bøtten (istedenfor hele kontoen)." + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "For å lage en ny IAM-subbruker og tilgangsnøkkel som bare har tilgang til denne bøtten, bruk denne utvidelsen." + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "For personlig kundestøtte, muligheten til å kopiere sider, flere lagringsmål, krypterte sikkerhetskopier for sikkerhet, flere sikkerhetskopieringsmål, bedre rapporter, ingen reklame og mye mer, ta en kikk på premium-versjonen av UpdraftPlus - verdens mest populære utvidelse for sikkerhetskopiering." + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "Nyheter om UpdraftPlus, treningsmateriale av høy kvalitet for WordPress-utviklere og nettredaktører, og generelle WordPress-nyheter. Du kan kansellere nyhetsbrevet når som helst." + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "Opplastingsbanen (%s) har blitt forandret i løpet av migrasjonen. Nullstiller til %s." + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "Det betyr sannsynligvis at du deler webserver med en hacket webside som har blitt benyttet i tidligere angrep." + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "Det ser ut til at IP-adressen til webserveren din, %s, er blokkert." + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "UpdraftPlus.com avbrøt tilkoblingsforsøket. Årsaken er «ingen tilgang»." + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "Premium-versjoner av WooCommerce-utvidelsene" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "Utvidelse for to-stegs-autentisering." + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "Flere kvalitetsutvidelser." + +#: admin.php:478 +msgid "Go to the shop." +msgstr "Gå til nettbuttiken." + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "Sammenligne med gratisversjonen." + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "UpdraftPlus Premium" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "Følg denne koblingen for å abonnere." + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "Nyhetsbrev" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "Takk for at du sikkerhetskopierer med UpdraftPlus!" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "Skjul beskjeden de neste %s månedene." + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "(samtidig som sikkerhetskopieringen av filer)" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "Ingen sikkerhetskopiering er fullført" + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "Det første trinnet er å avinstallere gratisversjonen." + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "Hvis du har gjort et kjøp fra UpdraftPlus.Com, så følg denne linken til instruksjonene for å installere kjøpet." + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "Abonnér på nyhetsbrev" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "Følg denne linken for å abonnere på nyhetsbrev fra UpdraftPlus." + +#: admin.php:2831 +msgid "Personal support" +msgstr "Personlig kundestøtte" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "Lås innstillingstilgang" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "Støtte for flersideinstallasjon" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "Sett kopieringstidspunkt" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "Planlagte sikkerhetskopier" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "Gjenopprett sikkerhetskopier fra andre utvidelser" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "Databasekryptering" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "Send sikkerhetskopier til flere eksterne mål" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "Automatisk sikkerhetskopi ved oppdatering av Wordpress, utvidelser eller temaer" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "Avanserte rapportinnstillinger" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "Grunnleggende e-postrapport" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "Kopiér websider" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "Sikkerhetskopiér flere filer og databaser" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "WebDAV, Copy.com, SFTP/SCP, kryptert FTP" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "Dropbox, Google Disk, FTP, S3, Rackspace, e-post" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "Send sikkerhetskopi til ekstern lagring" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "Gjenopprett fra sikkerhetskopi" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "Oversatt til over %s språk" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "Sikkerhetskopiér filer og database" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "Oppgradér nå!" + +#: admin.php:2718 +msgid "Get it from" +msgstr "Oppgradér hos" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "Still et spørsmål før salg" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "Ofte stilte spørsmål før salg" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "Fullstendig funksjonsliste" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "Oppgradér til UpdraftPlus Premium" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "Du bruker for øyeblikket den gratis versjonen av UpdraftPlus fra wordpress.org." + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Sikkerhetskopiér utvidelser, temaer og WordPress-databasen med UpdraftPlus før oppdatering." + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "%s-feil. Klarte ikke starte opp." + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "eller" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "eller" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "Du valgte ingen komponenter for gjenoppretting. Velg minst én og prøv igjen." + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "Du kan bruke godkjenningsnøkler i formatene PKCS1 (PEM-header: BEGIN RSA PRIVATE KEY), XML og PuTTY." + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "Gjenopptakelse av uferdige opplastinger støttes med SFTP, men ikke med SCP. Bruker du SCP må du derfor sørge for at PHP-innstillingene på serveren tillater at prosesser kjører lenge nok til at opplastingene kan fullføres." + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "klient" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "Det trengs v2-godkjenning (Keystone); v1 (Swauth) støttes ikke." + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "Adressen til kontrollpanelet" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "Huk av her for å sende en enkel rapport til" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "Manuell" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "En feil (%s) oppstod:" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "Endre låseinnstillinger" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "En hvilken som helst annen fil eller mappe på serveren din som du ønsker å ta sikkerhetskopi av." + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "For flere funksjoner og personlig kundestøtte, besøk" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "Klarte ikke opprette tabell. Årsaken er sannsynligvis at du ikke har tillatelse til å slette tabeller og at en tabell med dette navnet allerede eksisterer. Fortsetter." + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "Tømmer bufrede sider... (%s)..." + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "Dekrypteringsfrase for databasen" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "Automatisk sikkerhetskopi før oppdatering" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "(Kun) Wordpress-kjerne" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "For opplåsningssupport, vennligst henvend deg til den som administrerer UpdraftPlus for deg." + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "Skriv inn passordet ditt for å få tilgang til innstillingene for UpdraftPlus." + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "Feil passord" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "Lås opp" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "Ellers vil standardlinken vises." + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "Alle som ser denne låseskjermen, vil bli vist denne linken for supporthenvendelser. Skriv inn en URL eller en epostadresse." + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "Nettadresse til support" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "Be om passord på nytt etter" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "%s uker" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "én uke" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "%s timer" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "én time" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "Husk å notere passordet!" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "Lås tilgangen til innstillingssiden for UpdraftPlus." + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "Innstillingene er lagret." + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "Administratorpassordet har blitt forandret." + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "Et administratorpassord har nå blitt angitt." + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "Administratorpassordet ble fjernet." + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "(lær mer om denne viktige innstillingen)" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "Etter at du har hentet alle utvidelsene dine, kan du tømme passordfeltet nederst på siden. Det vil ikke hindre oppdatering av utvidelsene. Du må imidlertid la e-postadressen stå." + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "Vis logg" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "Innhold (trykk for å laste ned)" + +#: admin.php:4368 +msgid "Backup date" +msgstr "Dato" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "og behold dette antallet planlagte sikkerhetskopier" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "Inkrementell sikkerhetskopiering; Grunnleggende sikkerhetskopi: %s" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "For å kunne låse tilgangen til UpdraftPlus-innstillingene med et passord, må du oppgradere til Premium." + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "Last opp filer til UpdraftPlus." + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "Du kan ikke lage gjenopprettingskopier. Gjenopprettingsmappen din er ikke skrivbar. Gå til innstillingsfanen og finn den aktuelle innstillingen." + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "Gjenopprettingsmerkelapp:" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "Uventet feil ved lesing av fil" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "Sjekk loggen dersom du ønsker mer informasjon." + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "Skylagringskontoen din ser ut til å være full. Se følgende link for mer informasjon: %s" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "Det oppstod en zip-feil" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "Merkelapp for denne sikkerhetskopien (valgfritt)" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "%s tillater ikke autorisering av sider som ligger direkte på en IP-adresse. Du må forandre din sides adresse til et domene (%s) før du kan bruke %s for lagring." + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "Du skrev inn en epostadresse som ikke ble gjenkjent av UpdraftPlus.com." + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "E-post adressen er riktig men passordet ble ikke vertifisert av UpdraftPlus.com." + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "Du må oppgi både en epostadresse og et passord." + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "For å fortsette trykker du på «Lag sikkerhetskopi». Da kan du se fremdriften i feltet «Siste loggoppføring»." + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "Hvis du ønsker å gjenopprette en sikkerhetskopi som inneholder en flersideinstallasjon av Wordpress, må du først sette opp nåværende installasjon som flerside." + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "Sikkerhetskopien din inneholder en Wordpress-installasjon med flere websider. Kun den første siden i nettverket vil være tilgjengelig." + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "allerede gjort" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "hoppet over (ikke i listen)" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "Søk og erstatt-tabell:" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "Skriv inn en kommaseparert liste; eller la den stå tom for alle tabeller." + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "Bare disse tabellene" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "Rader per parti" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "Du har ennå ikke koblet til din UpdraftPlus.Com konto." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "Du må koble til for å motta fremtidige oppdateringer av UpdraftPlus." + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "Eventuelle forespørsler om støtte vedrørende %s bør tas opp med din webhotell leverandør." + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "Du bør kun fortsette hvis du ikke kan oppdatere gjeldende server og er sikker (eller villig til å risikere) at plugins / themes / etc. er kompatible med den eldre %s versjonen." + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "Dette er betydelig nyere enn den serveren der du nå gjenoppretter til (versjon %s)." + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "Nettstedet i denne sikkerhetskopien ble kjørt på en webserver med versjon %s av %s." + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "LinkedIn" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "Google+" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "Facebook" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "Twitter" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "UpdraftPlus er på sosiale medier - sjekk oss ut her:" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "Hvorfor ser jeg dette?" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "Plasseringen til denne mappen er satt i ekspertinnstillinger i kategorien Innstillinger." + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "Trykk her for å se i UpdraftPlus mappen (på ditt webhotell) for eventuelle nye sikkerhetskopier som du har lastet opp." + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "Start sikkerhetskopiering" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "Du bruker %s webserver, men det ser ikke ut som du har %s modulen lastet." + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "Du må gi UpdraftPlus skrivetillatelse til mappen. Dersom du ikke vet hvordan du gjør det, kan du ta kontakt med ISP-en som leverer webhotellet ditt." + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "Med mindre det har oppstått et problem, kan du se bort ifra det som står her." + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "Denne filen kunne ikke lastes opp" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "Du finner mer informasjon om dette i innstillingsseksjonen." + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "Støttede backup plugins: %s" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "Var dette en sikkerhetskopi som ble opprettet av en annen backup plugin? Hvis ja, så må du først kanskje endre navn på den slik at den kan gjenkjennes - vennligst følg denne linken." + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "Fortell meg mer om inkrementell sikkerhetskopi" + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "Minnegrense " + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "gjenoppretting" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "Tabeller som implisitt vil bli droppet: %s" + +#: backup.php:829 +msgid "Incremental" +msgstr "Inkrementell" + +#: backup.php:829 +msgid "Full backup" +msgstr "Fullstendig sikkerhetskopi" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "fortsetter nå med oppdateringen" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "(se logg...)" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "Sikkerhetskopi fullført" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "Hver %s time" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "søk og erstatt" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "Kjør" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "Et søk / erstatt kan ikke gjøres om - er du sikker på at du vil gjøre dette?" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "Dette kan lett ødelegge ditt nettsted; så bruk det med omhu!" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "Erstatt med" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "Søk etter" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "Søk / erstatt database" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "søkeord" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "For mange databasefeil har forekommet - avbryter" + +#: backup.php:895 +msgid "read more at %s" +msgstr "les mer på %s" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "E-post rapporter som er opprettet av UpdraftPlus (gratis utgave) bringer deg de siste UpdraftPlus.com nyhetene" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "N.B. Hvis du installerer UpdraftPlus på flere WordPress nettsteder, så kan du ikke gjenbruke prosjektet; du må opprette et nytt i Google-API-konsollen for hvert nettsted." + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "Du har ikke opprettet noen sikkerhetskopier ennå. " + +#: admin.php:3872 +msgid "Database Options" +msgstr "Database" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "Utvidelser for feilsøkning:" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "%s (%s brukt)" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "Ledig lagringsplass på kontoen:" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "Denne knappen er deaktivert fordi sikkerhetskopi mappen er skrivebeskyttet (se innstillingene)." + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "Sikkerhetskopier" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "Status" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "Konfigurér sikkerhetskopieringen i innstillingene." + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "Trykk på «kopiér nå» for å lage en sikkerhetskopi." + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "Velkommen til UpdraftPlus!" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "Hvis du skriver inn tekst her, blir det brukt for å kryptere sikkerhetskopiene av databaser (Rijndael kryptering brukes). Lagre en egen kopi av dette og ikke mist det, ellers vil alle sikkerhetskopiene være ubrukelig. Dette er også nøkkelen som brukes for å dekryptere sikkerhetskopiene fra dette admin-grensesnitt (så hvis du endrer det, så vil den automatisk dekryptering ikke fungere før du endrer det tilbake)." + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "Tester..." + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "Test tilkobling..." + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "Tabell prefiks" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "Sikkerhetskopi ekstern database" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "Legg til en ekstern database i sikkerhetskopien ..." + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "Hvis databasen inneholder ekstra tabeller som ikke er en del av dette WordPress nettstedet (du vet om dette er tilfelle), aktivere dette valget for å sikkerhetskopiere de også." + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "Sikkerhetskopier tabeller som IKKE er WordPress tabeller, men som finnes i den samme databasen som WordPress" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "Dette valget vil føre til at tabeller lagret i MySQL-databasen som ikke tilhører WordPress (identifisert av at de mangler den konfigurerte WordPress prefiksen,%s) også vil bli sikkerhetskopiert." + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "Tilkobling mislyktes." + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "Tilkobling var vellykket." + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "%s totalt antall tabell(er) funnet; %s med den with the indicated prefix." + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "%s tabell(er) funnet." + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "tilkoblingsforsøk til databasen mislyktes" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "databasenavn" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "vert" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "bruker" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "Ekstern database (%s)" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "Følg denne linken til din Google API konsoll, og der aktiverer du Drive API og lager en klient-ID i API tilgangsdelen." + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "klarte å få tilgang til foreldremappen" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "Men etterfølgende forsøk feilet:" + +#: admin.php:4499 +msgid "External database" +msgstr "Ekstern database" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "Dette vil også føre til at feilmeldinger fra alle andre utvidelser vil bli vist på denne siden - du bør ikke bli overrasket over å se disse." + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "Sikkerhetskopiere flere databaser" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "Først, skriv inn dekrypteringsnøkkelen" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "Du kan manuelt dekryptere en kryptert database her." + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "Den kan også sikkerhetskopiere eksterne databaser." + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "Ønsker du å ikke bli spionert på? UpdraftPlus Premium kan kryptere sikkerhetskopien av databasen." + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "bruk UpdraftPlus Premium" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "Dekryptering mislyktes. Database filen er kryptert." + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "Bare WordPress databasen kan bli gjenopprettet; du må behandle den eksterne databasen manuelt." + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "Det oppstod en feil på den første %s kommandoen - avbryter kjøring" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "Tilkobling mislyktes: sjekk dine påloggings detaljer, at databasetjeneren er oppe, og at nettverksforbindelsen ikke har brannmur." + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "database tilkoblingsforsøk mislyktes." + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "Advarsel::databasens hoved URL (%s) er annerledes enn hva vi forventet (%s)" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "I %s skiller banenavnene mellom store og små bokstaver." + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "Hvis du lar det stå tomt, så vil sikkerhetskopien vil bli plassert i roten av %s" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "f.eks %s" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "Hvis katalogen ikke eksisterer, vil den bli opprettet." + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "Fyll inn banen til %s-mappen du ønsker å bruke her." + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "plassholder" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "La dette stå tomt og en standard vil bli valgt." + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "Leier" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "Følg denne linken for mer informasjon" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "autentiserings URL" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "Få påloggingsdetaljer fra din Openstack Swift leverandør, og deretter velger du beholder-navnet som skal brukes til lagring. Denne beholderen vil bli opprettet for deg hvis den ikke allerede finnes." + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "Klarte ikke å laste ned %s" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "Klarte ikke å laste ned" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "klarte ikke å liste filer" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "Kunne ikke laste opp %s" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "Operasjonen var vellykket:" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr " Etter at du har lagret innstillingene (ved å klikke på \"Lagre endringer\" nedenfor), kom så tilbake hit en gang til og klikk på denne linken for å fullføre godkjenningen med %s." + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "(Det ser ut som du allerede er godkjent)." + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "Dropbox" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "Godkjenn med %s" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "Feil ved nedlasting av ekstern fil: Klarte ikke å laste ned" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "Område: %s" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "%s feil - vi fikk tilgang til beholderen, men klarte ikke opprette en fil i den" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "Det %s objektet ble ikke funnet" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "Klarte ikke få tilgang til %s beholder" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "%s feil - fikk ikke tilgang til beholderen" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "Kontoeierens navn er %s." + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "For å få tilgang til å sette et egendefinert mappenavn, bruk UpdraftPlus Premium." + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "Det er et ID nummer internt i Google Drive" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "Dette er IKKE et mappenavn." + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "Mappe" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "%s nedlasting: feilet: fil ikke funnet" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "Navn: %s." + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "Google Disk list filer: fikk ikke tilgang til overordnet mappe" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "Din %s versjon: %s." + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "Du må be din webhotell leverandør oppgradere." + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "Denne metoden for fjernlagring (%s) behøver PHP %s eller senere." + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "Tema mappe (%s) ble ikke funnet, men En versjon med små bokstaver eksisterer; oppdaterer database opsjonen tilsvarende" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "Kall" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "Hent" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "Denne funksjonen krever %s versjon %s eller senere" + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "Elegant themes tema bygger innstikk data funnet: resetter midlertidig mappe" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "%s filer ble pakket ut" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "Klarte ikke pakke ut arkivet" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "Feil - klarte ikke å laste ned filen" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "Nytt søk i lokal mappe etter nye sikkerhetskopier" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "Du bør oppdatere UpdraftPlus slik at du er sikker på å ha en versjon som er kompabilitetstestet." + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "Den har blitt testet opp til versjon %s." + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "Den installerte versjonen av UpdraftPlus er ikke testet mot din versjon av WordPress (%s)." + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "Passord/nøkkel" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "Nøkkel" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "Din innlogging kan være enten passord eller nøkkelbasert - du trenger bare oppgi en, ikke begge." + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "Nøkkelen du oppgav var ikke i rett format, eller var korrupt." + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "SCP/SFTP passord/nøkkel" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "Fil Sikkerhetskopi (generert av %s)" + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "Fil og database WordPress sikkerhetskopi (generert av %s)" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "Sikkerhetskopi generert av: %s." + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "Database (generert av %s)" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "ukjent kilde" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "Nytt søk i fjernlager" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "Last opp sikkerhetskopifiler" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "Denne sikkerhetskopien ble generert av %s, og kan bli importert." + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "Dette er en veiledning til mulige årsaker og hvordan man kan løse problemet." + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "Wordpress har %d forfalte oppgaver. Med mindre dette er en side under utvikling, betyr det sannsynligvis at planleggeren i Wordpress-installasjonen din ikke fungerer." + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "Hvis denne sikkerhetskopien er laget av en annen Wordpress-utvidelse, kan det være du kan importere den med UpdraftPlus Premium." + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "UpdraftPlus er imidlertid vanlige zip- og SQL-filer, så hvis du er sikker på at filen din har det riktige formatet, kan du gi den et navn som følger det mønsteret." + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "Denne filen ser ikke ut til å være en sikkerhetskopi laget av UpdraftPlus. Sikkerhetskopiene er zip- eller gz-filer og har navn som følger mønsteret «backup_[tidspunkt]_[sidenavn]_[kode]_[type].[zip eller gz]»." + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "Sikkerhetskopien er laget av den ukjente kilden %s. Den kan ikke gjenopprettes." + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "Fant ikke Wordpress-mappen wp-content i denne zip-filen." + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "UpdraftPlus kan ikke håndtere denne typen sikkerhetskopi." + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "%s returnerte en uventet HTTP-respons: %s" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "Denne tilgangsmetoden - %s - støtter ikke opplisting av filer." + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "Fant ingen innstillinger." + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "En eller flere sikkerhetskopier har blitt hentet etter gjennomsøking av fjernlagringen. Disse sikkerhetskopiene vil ikke slettes selv om periodisk sletting er aktivert. Hvis du vil slette dem, må du gjøre det manuelt." + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "Skanner på nytt etter sikkerhetskopier i lokal- og fjernlagring..." + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "(Les mer)" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "Endrer banene i et flersideoppsett" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "Send alle meldinger til syslog. (Det er som regel bare til nytte for serveradministratorer.)" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "Legg til..." + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "Fjern" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "Andre ofte stilte spørsmål for %s." + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "Motta eposter med mer informasjon om sikkerhetskopieringene. Nyttig hvis noe går galt." + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "Separér flere filer eller mapper med komma. For instanser på toppnivå kan du bruke «*» som jokertegn på begynnelsen eller slutten av banen." + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "Oppdaget data fra utvidelse for behandling av egendefinerte innholdstyper. Tømmer hurtigbufferet for innstillinger." + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "Webhotelleverandøren din må aktivere disse funksjonene for at %s skal fungere." + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "PHP-installasjonen på webserveren din har disse funksjonene deaktivert: %s" + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "kryptert FTP (eksplisitt kryptering)" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "kryptert FTP (implisert kryptering)" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "vanlig ikke-kryptert FTP" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "Sikkerhetskopi opprettet av:" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "Kan hentes på denne siden" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "For å fortsatt ha tilgang til support, må du fornye abonnementet ditt." + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "Ditt abonnement på kundestøtte går snart ut." + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "For å få tilgang igjen, må du fornye abonnementet ditt." + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "Abonnementet på kundestøtte har løpt ut." + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "Ditt abonnement på oppdateringer går snart ut." + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "For å beholde tilgang, i tillegg til oppdateringer og kundestøtte, må du fornye abonnementet ditt." + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "Ditt abonnement på oppdateringer for %s i %s-utvidelsene på denne siden løper snart ut." + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "Ditt abonnement på oppdateringer for %s-utvidelser på denne siden har løpt ut." + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "For å få tilgang til oppdateringer og kundestøtte igjen må du fornøye abonnementet ditt." + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "Abonnementet på oppdateringer har løpt ut. Du vil ikke lenger motta oppdateringer." + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "Skjul fra kontrollpanelet i %s uker" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "Dobbelkomprimeringen ble opphevet." + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "Forsøket på å oppheve dobbelkomprimeringen mislyktes." + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "Det ser ut som databasefilen har blitt dobbelkomprimert. Det kan være websiden du lastet den ned fra hadde en feilkonfigurert server." + +#: admin.php:1528 +msgid "Constants" +msgstr "Konstanter" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "Klarte ikke lese databasefilen:" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "Ingen tabeller ble funnet i databasen" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "vennligst vent på det nye planlagte forsøket" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "Vær klar over at disse advarslene er kun for informasjon - backup prosessen stopper ikke. I stedet gir de informasjon som kan være nyttig for deg eller de gir deg indikasjon på årsaken til problemer dersom backup ikke ble fullført." + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "Database spørringer utført: %d i løpet av %.2f sekunder" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "Søker og erstatter raden: %d" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "Hopper over denne tabellen: data i tabellen (%s) kan ikke erstattes" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "Kontoen er full: din %s konto har bare %d bytes tilgjengelig, mens filen som skal lastes opp har %d bytes gjenstående (total størrelse: %d bytes)" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "Feil har oppstått:" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "Følg denen linken for å laste ned loggfilen for gjenskaping (nødvendig for support henvendelser)." + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "Se også denne OSS," + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "Hvis du ikke velger \"remote storage\" så vil backupene forbli på web serveren. Dette anbales ikke (dersom du ikke planlegger å kopiere dem til din datamaskin), siden det å miste web serveren vil medføre at du mister både nettstedet og backupen på samme tid." + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "Henter (hvis nødvendig) og forbereder backup filene..." + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "PHP instillingene på denne web tjeneren tillater bare %s sekunder kjøretid for PHP, og tillater samtidig ikke at denne begrensningen økes. Dersom du har store mengder data som skal importeres og gjenopprettingen får et tidsavbrudd må du be din web hosting leverandør om å øke denne begrensningen eller forsøke gjenoppretting i deler." + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "Mapper fra en tidligere gjenoppretting ble funnet (vennligst benytt \"Slett gamle mapper\" knapper for å slette de før du prøver på nytt): %s" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "Tidsbegrensningen for WordPress plugins er veldig lav (%s sekunder) - du anbefales å øke denne for å for å hindre feil forsårsaket av tidsavbrudd. Ta kontakt med din web hosting leverandør for mer hjelp. Anbefalt verdi for max_execution_time PHP er %s sekunder eller høyere." + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "Erstatter i blog/side tabellen: fra %s til: %s" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "%s: Hopper over denne \"cache\" filen (eksisterer ikke fra før)" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "Denne plugin er deaktivert: %s: aktiver den på nytt (manuelt) når du er klar." + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "Oppkoblingen til %s fikk et tidsavbrudd. Dersom du har oppgitt server korrekt skyldes dette normalt at det er en brannmur som sperrer for oppkoblingen. Sjekk med din web hosting leverandør." + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "Fant ikke gjeldende Tema. For å forhindre at dette stopper siden i å laste har Temaet blitt satt til standard." + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "Gjenoppretting feilet..." + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "Meldinger:" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "En SQL linje som er større en maksimal pakkestørrelse (og som samtidig ikke kan splittes) ble funnet. Denne linjen vil ikke bli prosessert og blir dermed utelatt: %s" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "Biblioteket finnes ikke" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "Epost adresse for ny bruker" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "Brukernavn for ny bruker" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "Admin API Key" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "Admin brukernavn" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "US eller UK Rackspace konto" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "Skriv inn ditt admin brukernavn/API key for Rackspace (slik at Rackspace kan sjekke dine rettigheter for å opprette nye brukere), og deretter skriv inn et nytt (unikt) brukernavn og epost adresse for den nye brukeren samt et \"container\" navn." + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "Opprett nt API bruker og \"container\"" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "API Key: %s" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "Passord: %s" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "Brukernavn: %s" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "Cloud Files operasjonen misslyktes (%s)" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "Det har oppstått en konflikt: brukeren eller epost adressen eksisterer allerede" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "Du må taste inn en gyldig ny epost adresse" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "Du må taste inn en \"container\"" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "Du må taste inn et nytt brukernavn" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "Du må taste inn en admin API nøkkel" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "Du må taste inn et admin brukernavn" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "Opprett en ny API bruker med tilgang til bare denne \"container\" (i stedet for hele kontoen din)" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "Legger til utvidede kapabiliteter for Rackspace Cloud Files brukere" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "Rackspace Cloud Files, utvidet" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "Cloud Files Container" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "Cloud Files API Key" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "For å opprette en new Rackspace API \"sub-user\" og API key som had tilgang tip bare dette Rackspace \"container\", bruk dette tillegget." + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "Cloud Files brukernavn" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "London (LON)" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "Hong Kong (HKG)" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "Northern Virginia (IAD)" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "Chicago (ORD)" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "Sydney (SYD)" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "Dallas (DFW) (standard)" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "Cloud Files Lagrings Region" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "Kontoer opprettet på rackspacecloud.com er US-kontoer; kontoer opprettet på rackspace.co.uk er UK-kontoer" + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "USA eller Storbritannia-basert Rackspace konto" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "Kontoer opprettet på rackspacecloud.com er US-kontoer; kontoer opprettet på rackspace.co.uk er UK-kontoer." + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "Autorisasjon feilet (sjekk dine tillatelser)" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "En ukjent feil oppstod ved oppretting av forbindelse til UpdraftPlus.Com" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "Opprett" + +#: admin.php:556 +msgid "Trying..." +msgstr "Prøver..." + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "Den nye brukerens RackSpace konsoll passord er (dette vil ikke synes igjen):" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "(når kryptert)" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "Feil data:" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "Backup finnes ikke i backup historien" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "Din WordPress installasjon har gamle kataloger fra tilstanden før du gjenskapte/migrerte (teknisk informasjon: disse er merket med -old). Trykk denne knappen for å slette disse så snart du har verifisert at gjenopprettingen er fullført." + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "Linjen er splittet for å forhindre at maksimum pakkestørrelse overstiges." + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "Din database bruker har ikke tillatelse til \"drop tables\". Vi vil forsøke å gjenskape ved å tømme tabellene; dette vil normalt virke så lenge du gjenskaper fra en WordPress versjon med den samme database strukturen (%s)" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "Ny tabell prefix: %s" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "Fil tillatelser tillater ikke at gamle data flytttes og tas vare på - istedet vil de bli slettet." + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "%s: Denne katalogen eksisterer allerede og vil bli erstattet" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "Kan ikke flyttte filene på plass. Sjekk dine fil tillatelser." + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "Klarer ikke å flytte nye filer på plass. Sjekk wp-content/upgrade mappen." + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "Klarer ikke å flytte gamle data." + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "Flytter gamle data..." + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "Skriv inn en annen adresse...." + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "Skriv inn addressen her for å sende en rapport til dem når backup jobben er fullført." + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "Epost rapporter" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "%s-kontrollsum: %s" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "filer: %s" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "Bruke \"Rapportering\" seksjonen for å konfigurere epost adressene som skal benyttes." + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr " (med advarsler (%s))" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr "(med feil (%s))" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "Debugging informasjon" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "Opplastet til:" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "Tidsforbruk:" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "Advarsler" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "Feil" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "Feil / advarsler:" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "Inneholder:" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "Backup startet:" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "Backup rapport" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "%d timer, %d minutter, %d sekunder" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "%d feil, %d advarsler" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "%s-autentisering" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "%s feil: %s" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "%s logo" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "%s returnerte ikke den forventede responsen. Se loggfilen din for flere detaljer." + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "Den obligatoriske %s PHP modulen er ikke installert - be din web hosting leverandør om å gjøre den tilgjengelig" + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "For flere valg, benytt deg av \"%s\" tillegget." + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "Din site admin´s epostadresse (%s) vil benyttes." + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "Koble til" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "For flere rapportering funksjoner, benytt Rapportering tillegget." + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "(versjon: %s)" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "Vær oppmerksom på at e-postservere som regel har størrelsesbegrensninger - typisk rundt %s Mb. Sikkerhetskopier større enn dét vil sannsynligvis ikke komme frem." + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "Send hele sikkerhetskopien når e-postlagring er aktivert." + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "Siste status:" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "Sikkerhetskopien inneholder:" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "Dette har blitt sikkerhetskopiert: %s" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "Loggfilen har blitt lagt ved denne e-posten." + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "Det oppstod en ukjent eller uventet feil. Send en henvendelse til kundestøtten vår." + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "Det har kun blitt tatt sikkerhetskopi av databasen, så det er ingen filer her." + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "Database (sikkerhetskopiering av filer er ikke ferdig ennå)" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "Bare filer (databasen var ikke en del av denne planlagte sikkerhetskopieringen)" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "Filer (sikkerhetskopiering av databasen er ennå ikke ferdig)" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "Filer og database" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "(Dette gjelder alle utvidelser for sikkerhetskopiering med mindre de eksplisitt har blitt kodet med flersidekompatibilitet.)" + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "Hvis du ikke oppgraderer UpdraftPlus, har enhver administrator på siden din tilgang til alle data i sikkerhetskopiene - også passord." + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "Flersideinstallasjon av Wordpress støttes i UpdraftPlus Premium eller med utvidelsen for flersidestøtte." + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "Dette er en flersideinstallasjon av Wordpress." + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "Advarsel:" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "(eller koble til ved hjelp av skjemaet på denne siden dersom du allerede har kjøpt det)" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "vennligst følg denne linken for å oppdatere og aktivere utvidelsen" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "vennligst følg denne linken for å installere og oppdatere utvidelsen" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "det er nyeste versjon" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "Du har versjon %s" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "Du har det" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "Kundestøtte for UpdraftPlus" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "En oppdatering som inneholder utvidelsene dine er tilgjengelig for UpdraftPlus. Følg denne linken for å laste den ned." + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "Utvidelser til UpdraftPlus" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "En oppdatering er tilgjengelig for UpdraftPlus. Følg denne linken for å laste den ned." + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "updraftplus.com sendte en respons, men den var ikke mulig å tolke." + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "E-postadressen og passordet stemmer ikke." + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "updraftplus.com sendte tilbake et svar som vi ikke kunne tolke (data: %s)" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "updraftplus.com svarte, men vi klarte ikke tolke svaret" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "UpdraftPlus klarte ikke koble til UpdraftPlus.com." + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "Rapportering" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "Innstillinger (ufiltrert)" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "Bare send en rapport når det er advarsler eller feil" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "Innholds-URL:" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "Se også utvidelsen «More Files» i nettbutikken vår." + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "Du har veldig lite plass igjen i fjernlagringskontoen din. Du har bare %s Mb igjen." + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "Minnet som er tillatt for PHP-prosesser på webserveren din er %s Mb. Det er veldig lavt. Du burde øke mengden for å unngå at UpdraftPlus går i feil. Ta kontakt med webhotelleverandøren din for hjelp." + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "Administrér utvidelser" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "Kjøp det" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "Skaff det i UpdraftPlus-butikken." + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "aktivér det på denne siden" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "Du har et inaktivt kjøp." + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "Tildelt denne siden" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "Tilgjengelig for denne siden gjennom ditt kjøp av alle utvidelser" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "(tilsynelatende en forhåndsutgivelse eller en tilbaketrukket utgivelse)" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "Gå hit" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "Trenger du kundestøtte?" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "En feil oppstod da vi forsøkte å hente utvidelsene dine." + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "En ukjent respons ble mottatt. Responsen var:" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "Henting feilet; innloggingsinformasjonen din stemmer ikke." + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "Vennligst vent mens vi setter kravet ditt ut i livet..." + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "Det oppstod feil ved tilkobling til updraftplus.com:" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "Du er ikke koblet til updraftplus.com." + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "Hvis du nettopp har kjøpt nye utvidelser, kan du trykke her for å oppdatere siden" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "Du er koblet til updraftplus.com." + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "Du kan lese om passordsikkerheten på updraftplus.com her." + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "Har du glemt passordet ditt?" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "Har du ingen konto ennå? Registrér deg nå!" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "Koble til kontoen din på updraftplus.com" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "PHP-versjonen på webhotellet ditt er for gammel (" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "Det ser ut til at du har en utdatert utvidelse installert." + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "Trykk her for å starte installasjonen." + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "UpdraftPlus er ikke installert ennå." + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "Trykk her for å aktivere den." + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "UpdraftPlus har ikke blitt aktivert ennå." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "Trykk her for å koble til." + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "Du har ikke koblet deg til kontoen din ennå. Det må du gjøre hvis du vil se utvidelsene du har kjøpt." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "Uten den modulen vil kryptering skje mye tregere." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "Webhotellet ditt har ikke installert %s-modulen." + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "(Du ser ut til å allerede være autentisert, men du kan godt autentisere på nytt dersom det har oppstått et problem.)" + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "Slipp sikkerhetskopier her." + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "administrér WordPress fra kommandolinjen. Det kan du spare mye tid på." + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "Prøv WordShell" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "Ønsker du flere funksjoner eller kundestøtte? Besøk updraftplus.com." + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "Webserveren returnerte en feilkode. Prøv igjen eller se over loggen på serveren." + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "Gjenopprettingen har begynt. Ikke stopp operasjonen eller lukk nettleseren før den er ferdig." + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "Hvis du ekskluderer både database og filer blir det ingenting igjen!" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "Nettstedets hovedside:" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "Innstillinger for fjernlagring" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "(du finner som vanlig loggen i innstillingene til UpdraftPlus)..." + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "Husk dette valget til neste gang (du vil fortsatt ha muligheter til å forandre det)" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "Opplastingen feilet" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "Du kan sende en sikkerhetskopi til mer enn ett mål med en utvidelse." + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "Indikatoren nedenfor viser bare hvilket steg i prosessen sikkerhetskopieringen er på - ikke hvor mye tid som gjenstår. Ikke stopp sikkerhetskopieringen bare fordi indikatoren ser ut til å stå stille. Det er helt normalt." + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "(%s%%, fil %s av %s)" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "Les mer om hvordan dette virker..." + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "Feilet: UpdraftPlus klarte å logge inn, men klarte ikke å lage en fil på det aktuelle stedet." + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "UpdraftPlus klarte å logge inn og flytte den indikerte mappen, men klarte ikke å opprette en fil der." + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "Bruk SCP i stedet for SFTP" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "Brukerinnstilling for SCP og SFTP" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "Vertsinnstilling for SCP og SFTP" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "UpdraftPlus klarte ikke sende sikkerhetskopien med e-post. Sikkerhetskopien er sannsynligvis for stor." + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "Dette er en sikkerhetskopi av %s." + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "Resultat etter testing av innstillingen %s:" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "(Ikke fullført)" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "Hvis du ser flere sikkerhetskopier enn du forventet, er det sannsynligvis fordi sletting av gamle sikkerhetskopier ikke skjer før en ny sikkerhetskopiering er fullført." + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "Ikke plassér den midlertidige mappen på innsiden av «uploads» eller «plugins». Da vil sikkerhetskopieringen bli sirkulær." + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "Zip-filene opprettes her til å begynne med. Mappen må kunne skrives til på webserveren. Banen er relativ i forhold til innholdsmappen. Den heter «wp-content» som standard." + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "Kopierings-ID: %s" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "siste aktivitet: %s sekunder siden" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "neste gjenopptakelse: %d (etter %s sekunder)" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "Ukjent" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "Sikkerhetskopiering fullført" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "Feil oppstod. Venter med å prøve på nytt til neste planlagte tidspunkt." + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "Fjern deler av eldre sikkerhetskopier." + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "Laster opp filer til fjernlagring" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "Kryptert database" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "Krypterer database" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "Opprettet sikkerhetskopi av databasen" + +#: admin.php:3359 +msgid "table: %s" +msgstr "tabell: %s" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "Oppretter sikkerhetskopi av database" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "Opprettet sikkerhetskopier av filer" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "Lager sikkerhetskopier av filer" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "Sikkerhetskopieringen har begynt" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "Kopieres nå:" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "Planleggeren er deaktivert gjennom innstillingen «DISABLE_WP_CRON» i Wordpress-installasjonen din. Det kan ikke tas sikkerhetskopier - heller ikke manuelle - med mindre du enten setter opp en prosess som henter planleggeren manuelt eller aktiverer planleggeren igjen." + +#: restorer.php:646 +msgid "file" +msgstr "fil" + +#: restorer.php:639 +msgid "folder" +msgstr "mappe" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "UpdraftPlus klarte ikke å opprette en %s i innholdsmappen din. Vennligst se over filtillatelsene dine og aktivér skrivetilgang. (%s)" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "Sikkerhetskopien ble ikke fullført. En gjenopptakelse har blitt planlagt." + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "Nettsiden din besøkes sjelden. Det gjør at UpdraftPlus ikke kan fungere. Se denne artikkelen for mer informasjon:" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "Autentiseringen mot %s feilet. Årsaken er sannsynligvis noe annet i Wordpress-installasjonen din. Prøv å deaktivere andre utvidelser og bytt til et av standardtemaene. Se spesielt etter komponenter som sender PHP-advarsler og -feil på toppen av koden. Det kan også hjelpe å deaktivere feilsøking." + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "Minnegrensen for PHP er veldig lav. UpdraftPlus forsøkte å heve grensen uten hell. Utvidelsen kan få problemer dersom minnegresen er lavere enn 64 MB, spesielt hvis du har lastet opp veldig store filer. Noen sider kan imidlertid klare seg med 32 MB. Minnegrensen er en global innstilling som settes av serverleverandøren din." + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "Fortsett med oppdateringen" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "Ikke avbryt etter å ha trykket Fortsett nedenfor - vent til sikkerhetskopien er fullført." + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "UpdraftPlus automatiske sikkerhetskopier" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "Feil har oppstått:" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "Oppretter sikkerhetskopi med UpdraftPlus..." + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "Automatisk sikkerhetskopi" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "Oppretter sikkerhetskopi av databasen med UpdraftPlus... " + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "Du har ikke nok rettigheter til å oppdatere denne nettsiden." + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "temaer" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "utvidelser" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "Starter automatisk sikkerhetskopiering..." + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "Oppretter %s og sikkerhetskopi av databasen..." + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Automatisk sikkerhetskopier (der dette er relevant) innstikk, tema og WordPress database med UpdraftPlus før du oppdaterer" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "Hvis du ikke er sikker, burde du avbryte operasjonen. Du kan risikere å ødelegge WordPress-installasjonen." + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "Dette ser ikke ut som en gyldig sikkerhetskopi av WordPress-kjernen; %s mangler." + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "Klarte ikke åpne zip-filen %s. Integritetssjekken feilet." + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "Klarte ikke å lese zip-filen %s. Integritetssjekken feilet." + +#: admin.php:2310 +msgid "More plugins" +msgstr "Flere utvidelser" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "Kundestøtte" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "Fant ikke tabellprefikset for Wordpress-installasjonen din i sikkerhetskopien av databasen." + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "Denne databasekopien mangler følgende tabeller: %s" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "Du importerer nå fra en nyere versjon av WordPress - %s - til en eldre en - %s. Det er ikke sikkert at WordPress klarer å håndtere det." + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "Denne databasen er %s KB. Det er for lite til å være en gyldig WordPress-database." + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "Oppdatér tema" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "Oppdatér utvidelse" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "Du kan beskyttes enda bedre med automatisk sikkerhetskopiering" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "Skjul dette varselet i %s uker fremover" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "Banen for opplastinger - %s - eksisterer ikke. Gjenoppretter (%s)..." + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "Hvis du fremdeles kan lese dette etter siden er ferdig med å laste, er det et JavaScript- eller jQuery-problem med siden." + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "Filen ble lastet opp." + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "Ukjent responsstatus fra serveren:" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "Ukjent svar fra serveren:" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "Forsøker med denne dekrypteringsnøkkelen:" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "Følg denne linken for å dekryptere og laste ned databasen." + +#: admin.php:584 +msgid "Upload error" +msgstr "Opplastingsfeil" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "Filen ser ikke ut til å være en database kryptert av UpdraftPlus. De har endelsen «.gz.crypt» og har filnavn som følger mønsteret «backup_[tidspunkt]_[sidenavn]_[kode]_db.crypt.gz»." + +#: admin.php:582 +msgid "Upload error:" +msgstr "Opplastingsfeil:" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "(forsikre deg om at zip-filen du forsøker å laste opp er opprettet med UpdraftPlus)" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "og deretter, hvis du ønsker det," + +#: admin.php:572 +msgid "Download to your computer" +msgstr "Last ned til datamaskinen din" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "Slett fra webserveren" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "Eksempler på S3-kompatible lagringstjenester:" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "Kommer ikke til å slette arkivene etter de er pakket opp. Det finnes ikke nok plass i skylagringen for denne sikkerhetskopien." + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "Det ser ut som det mangler en eller flere arkiver i dette flerarkivsettet." + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "(%d arkiv(er) i denne sikkerhetskopien)." + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "Del opp arkiver hvert" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "Serveren sendte en JSON-respons som vi ikke klarte å tolke." + +#: admin.php:563 +msgid "Warnings:" +msgstr "Advarsler:" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "Serveren sendte et tomt svar." + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "Dette ser ut som en fil laget av UpdraftPlus, men installasjonen kjenner ikke til objekttypen - %s. Kanskje du trenger å installere en utvidelse?" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "Sikkerhetskopien har blitt prosessert, men med noen feil. Du må kansellere og rette opp eventuelle problemer før du prøver på nytt." + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "Sikkerhetskopien har blitt prosessert, men med noen advarsler. Hvis alt er i orden kan du trykke \"Gjenopprett\" igjen for å fortsette. Ellers bør du avbryte og først rette opp problemene som advarslene viser til før du fortsetter." + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "Sikkerhetskopien har blitt prosessert. Trykk «Gjenopprett» igjen for å fortsette." + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "Denne sikkerhetskopien ser ut til å mangle følgende pakkefiler: %s" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "Fant filen %s, men den er %s når vi ventet at den skulle være %s. Den er muligens ødelagt." + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "Fant filen %s, men den er tom. Du må laste den opp på nytt." + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "Fant ikke filen med navnet %s. Du må laste den opp." + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "Det finnes ingen sikkerhetskopi av den typen" + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "Fant ikke sikkerhetskopien av filen. Fjernlagringsmetoden som brukes - %s - tillater ikke at vi laster ned filer derfra. For å gjenopprette sikkerhetskopier med UpdraftPlus, må du manuelt hente en kopi av filen og plassere den i arbeidsmappen til UpdraftPlus." + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "Klarte ikke flytte mappen %s. Se over filtillatelsene dine og diskkvoten." + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "Klarte ikke flytte filen %s. Se over filtillatelsene dine og diskkvoten." + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "Flytter oppakket sikkerhetskopi til riktig sted..." + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "Klarte ikke åpne zip-filen (%s) - %s" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "Serverbanen til rotkatalogen i WordPress er %s." + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "%s endepunkt" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "...og mange flere!" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "Kompatibel med S3" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "Filen finnes ikke lokalt. Den må hentes fra fjernlagringen." + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "Leter etter arkivet %s: filnavn: %s" + +#: admin.php:4836 +msgid "Final checks" +msgstr "Avsluttende kontroller" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "Huk av her for å slette alle overflødige filer etter sikkerhetskopieringen er ferdig. Det innebærer blant annet at filer som sendes til fjernlagring slettes etter avsending." + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "Slipp krypterte databasefiler her for å dekryptere dem. (De har filendelsen db.gz.crypt)" + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "Banen til «wp-content» er %s." + +#: admin.php:578 +msgid "Raw backup history" +msgstr "Ufiltrert kopieringslogg" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "Vis ubehandlet sikkerhetskopi og liste over filer." + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "Prosesserer filer. Vennligst vent..." + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "I denne seksjonen får du hjelp til vanlige problemstillinger." + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "WordPress-installasjonen din har problemer med å produsere ekstra mellomrom. Det kan føre til ødelagte sikkerhetskopier." + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "Klarte ikke åpne databasefilen." + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "Klarte ikke skrive ut den dekrypterte databasen til filsystemet." + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "Kjente sikkerhetskopier (ufiltrert)" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "Klarte ikke nummerere filene i mappen." + +#: restorer.php:939 +msgid "Files found:" +msgstr "Fant følgende filer:" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "Bruker mappen %s fra sikkerhetskopien." + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "Tabellmotoren %s er ikke tilgjengelig; bytter til MyISAM." + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "Dette ser ut som en flyttet side, men du har ikke valgt å søke og erstatte banene i databasen." + +#: admin.php:4908 +msgid "file is size:" +msgstr "filen har denne størrelsen:" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "Trykk her for mer informasjon." + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "Noen filer lastes fremdeles ned eller prosesseres. Vennligst vent." + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "Denne sikkerhetskopien er fra en annen side. Du trenger utvidelsen \"Migrator\" for å importere den." + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "Tidssonen hentes fra kategorien «Generelt» i WordPress-innstillingene." + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "Fyll inn klokkeslettet i formatet «TT:MM», der «TT» er timer og «MM» er minutter." + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "Opplastingen av %s feilet." + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "Innloggingsfeil: %s" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "Du ser ikke ut til å være logget inn i %s." + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "Fikk ikke tilgang til %s mens sletting foregikk. Se loggfilen for mer informasjon." + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "Du ser ikke ut til å være logget inn med %s. Sletting feilet." + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "Dropbox-feil: %s. Se loggfilen for mer informasjon." + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "Klarte ikke laste ned fil fra %s." + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "Den filen eksisterer ikke i %s" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "%s-feil" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "Klarte ikke laste opp filen til %s." + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "%s-feil: Klarte ikke sette sammen delene." + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "Klarte ikke logge inn i %s." + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "Feil: %s" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "Sikkerhetskopieringsmappen finnes, men den er ikke skrivbar." + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "Mappen for sikkerhetskopiering finnes ikke." + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "Advarsel: %s" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "Siste sikkerhetskopi:" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "%s er en veldig stor fil på %s MB." + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "%s er ikke lesbar og kan derfor ikke sikkerhetskopieres." + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "Tabellen %s har %s rader. Det er veldig mange. Vi håper webhotellet ditt har nok ressurser til at hele tabellen kan eksporteres til sikkerhetskopien." + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "En feil oppstod under lukkingen av den siste databasefilen." + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "Advarsler:" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "Sikkerhetskopieringen er ferdig, men det dukket opp noen advarsler underveis." + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "Du har bare %s MB igjen på webhotellet ditt." + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "Ny side:" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "Sideadressen er allerede i bruk." + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "Migrert side opprettet fra sikkerhetskopi" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "Spesifiser hvor den nye siden skal være i installasjonen din:" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "Trenger følgende informasjon for å fortsette:" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "Nettverksaktivering av tema:" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "Prosesserte utvidelsen:" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "Klarte ikke opprette eller åpne denne mappen. Sjekk filtillatelsene dine. Detaljer:" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "Noen webhotelleverandører oppgir at de tilbyr kryptert FTP, men får tidsavbrudd dersom du forsøker å bruke det. Dersom det ser ut til å skje ved sikkerhetskopiering, skru av SSL i seksjonen «Ekspertinnstillinger» under." + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "PHP-installasjonen på webhotellet ditt mangler modulen %s. Kontakt leverandøren din og spør om de kan aktivere den." + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "Se over brukernavnet og passordet ditt." + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "%s rapporterte følgende feil:" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "Vennligst oppgi informasjonen det spørres etter." + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "Klarte ikke kjøre kommandoen «DROP» på tabellene, så sletter dem isteden. (%s)" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "Klarte ikke opprette nye tabeller. Lar være å bruke kommandoen %s." + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "Sideinformasjon:" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "Databasebrukeren din har ikke tillatelse til å opprette tabeller. Vi vil prøve å gjenopprette ved å tømme tabeller isteden. Det burde fungere så lenge du gjenoppretter fra en WordPress-versjon med samme databasestruktur og den importerte databasen bare inneholder tabeller som allerede finnes på siden du importerer til." + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "Advarsel:" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "Du kjører en flersideinstallasjon, men sikkerhetskopien er ikke av en flersideinstallasjon." + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "Hopper over gjenoppretting av WordPress-kjernen når det importeres fra en enkeltside til en flersideinstallasjon. Hvis du har noen nødvendige filer i WordPress-mappen må du hente dem manuelt fra zip-filen." + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "PHP-installasjonen din mangler den påkrevde modulen %s. Vennligst kontakt webhotelleverandøren din og be dem aktivere den." + +#: admin.php:596 +msgid "Close" +msgstr "Lukk" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "Uventet svar:" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "Separér hver adresse med et komma dersom du ønsker å sende sikkerhetskopien til flere adresser." + +#: admin.php:576 +msgid "PHP information" +msgstr "PHP-informasjon" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "Fant selvkjørende zip-arkiv:" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "Vis PHP-informasjon fra funksjonen «phpinfo()»." + +#: admin.php:2627 +msgid "Get it here." +msgstr "Kjøp den her." + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "I så fall kan du prøve «Migrator»-utvidelsen vår. Etter å ha brukt den én gang vil du ha spart tid tilsvarende prisen av utvidelsen." + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "Ønsker du å flytte eller klone en side?" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "Les denne artikkelen for å se hvordan det gjøres steg for steg." + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "Flytt siden" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "Sletter... Vennligst vent til tilkoblingen med fjernlagringen lukkes." + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "Slett også fra fjernlagring" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "Nyheter fra UpdraftPlus.com:" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "Klon" + +#: admin.php:2304 +msgid "Premium" +msgstr "Premium" + +#: admin.php:2305 +msgid "News" +msgstr "Nyheter" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "Fant ikke sikkerhetskopien" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "Klarte ikke ta sikkerhetskopi av %s; den korresponderende mappen %s finnes ikke." + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "RSS-adresse" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "Bloggadresse" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "Abonnér på UpdraftPlus-bloggen for å motta nyheter og tilbud" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "Tester %s-innstillinger..." + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "Eller så kan du plassere dem manuelt i UpdraftPlus-mappen. Det er vanligvis «wp-content/updraft». Deretter bruker du linken merket «Skann på nytt» over." + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "Feilsøkingsmodus er aktivert. Det kan være du ser feilsøkingsmeldinger fra både UpdraftPlus og andre installerte utvidelser. Sørg for at meldingen du ser er fra UpdraftPlus før du sender en henvendelse til kundestøtten vår." + +#: admin.php:880 +msgid "Notice" +msgstr "Varsel" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "Følgende feil oppstod:" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "Søker på nytt. Ser etter sikkerhetskopier som du manuelt har lastet opp til den interne lagringsplassen..." + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "Leter etter enhet..." + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "Lagre i" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "«%s» har ingen primær nøkkel. Manuell endring trengs på rad %s." + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "rader: %d" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "Tid passert i sekunder:" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "Feil:" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "Disse SQL UPDATE-kommandoene ble kjørt:" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "Gjennomførte endringer:" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "Undersøkte rader:" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "Undersøkte rader:" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "Klarte ikke hente liste over tabeller." + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "Søk og erstatt i database: Erstatt %s i sikkerhetskopi med %s." + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "Advarsel: Databasens nettadresse er %s. UpdraftPlus forventet at den ville være %s." + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "Ingenting å gjøre. Sidens nettadresse er allerede %s" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "Uventet tomt parameter (%s, %s)" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "Dette valget ble det ikke huket av for." + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "Søk og erstatt sidens nettadresse i databasen" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "Vi forstod ikke resultatet fra %s-operasjonen." + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "Klarte ikke sette i gang %s-operasjonen." + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "(få vite mer)" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "Søk og erstatt sidens nettadresse i databasen" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "Alle referanser til sidens nettadresse i databasen vil erstattes med nåværende adresse som er %s." + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "Bloggopplastinger" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "Nødvendige utvidelser" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "Du har ikke tillatelse til å se denne siden." + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "Du har ikke tillatelse til å se denne siden." + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "Flersideinstallasjon" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "begynner neste gang det er" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "Feil: Porten må angis som et heltall." + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "passord" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "brukernavn" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "vertsnavn" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "Hvilken mappe det skal navigeres til etter innlogging. Banen er ofte relativ i forhold til rotkatalogen." + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "Bane til mappe" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "Passord" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "Port" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "Vert" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "%s-feil: Klarte ikke laste ned" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "Se over filtillatelsene dine. Klarte ikke opprette og få tilgang til:" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "Fant ingen %s" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "Eksplisitt kryptering brukes som standard. For å tvinge bruk av implisitt kryptering på port 990, legg til :990 i adressen til FTP-serveren under." + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "Kryptert FTP er tilgjengelig. UpdraftPlus vil først forsøke kryptert forbindelse. Dersom det ikke fungerer, vil den falle tilbake til ukryptert forbindelse. Du kan også deaktivere kryptering i ekspertinnstillingene. Knappen «Test FTP-tilkobling» angir hvilken tilkoblingstype som er i bruk." + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "Fant ingenting å ta sikkerhetskopi av i %s-mappene." + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "Hvis du fyller inn bare «/» her, vil den prøve å ta sikkerhetskopi av hele webserveren." + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "Hvis du bruker den, fyll inn en absolutt bane. Den er ikke relativ i forhold til rotkatalogen i WordPress-installasjonen din." + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "Ikke aktivér denne innstillingen hvis du ikke vet hva den gjør." + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "Fyll inn mappe:" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "Flere filer" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "WordPress-kjerne inkludert alle tillegg i WordPress' rotkatalog" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "Filene over omfatter alt i en Wordpress-installasjon." + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "Overskriv «wp-config.php»" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "WordPress-kjerne" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "Vi klarte ikke plassere en fil i den mappen. Se over innloggingsdetaljene dine." + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "Feilet" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "WebDAV-adresse" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "Klarte ikke laste ned filen" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "Klarte ikke laste ned den fjernlagrede filen" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "Parti %s En %s-feil oppstod" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "Fant ingen innstillinger for %s." + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "Vi klarte å logge inn, men vi klarte ikke å lage en fil i den gitte mappen." + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "Vi klarte å logge inn og fikk bekreftet at vi har tilgang til å lage filer i den gitte mappen. (Innloggingstype:" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "Klarte ikke logge inn med den angitte brukerinformasjonen." + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "Du har ikke oppgitt noen serverdetaljer." + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "Må allerede eksistere" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "Vi har en ekstra utvidelse dersom du ønsker kryptering." + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "Den vanlige versjonen av UpdraftPlus støtter ikke kryptert FTP." + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "Kontonavnet ditt på %s: %s" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "selv om deler av informasjonen som ble sendt tilbake ikke var som forventet, kan det hende det fungerer allikevel" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "Du er nå koblet til %s!" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "det finnes en utvidelse for det formålet." + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "Hvis du sikkerhetskopierer flere sider til samme Dropbox-konto og du ønsker å organisere dem i undermapper, da" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "Sikkerhetskopiene lagres i" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "Trenger du å organisere sikkerhetskopiene i undermapper?" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "Feil: Klarte ikke laste opp filen til %s. Se loggen for mer informasjon." + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "Du ser ikke ut til å være logget inn i Dropbox." + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "Kommunikasjonen med %s var ukryptert." + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "Kommunikasjonen med %s var kryptert." + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "Vi fikk tilgang til kurven og vi klarte å lage filer i den." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "Vi fikk tilgang til kurven, men vi klarte ikke lage en fil i den." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "Feil" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "Klarte ikke få tilgang til eller opprette kurven. Se over brukerinformasjonen din. Hvis den er riktig, kan du prøve et annet kurvnavn. Det kan være en annen bruker av %s allerede bruker kurvnavnet du oppga." + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "Område" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "Feil: Ingen kurvdetaljer ble oppgitt." + +#: methods/s3.php:961 +msgid "API secret" +msgstr "API-hemmelighet" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "Fyll bare inn et kurvnavn eller en kurv og en bane. For eksempel: MinKurv, MinKurv/MinBane" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "Plassering for %s" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "Hemmelig nøkkel for %s" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "Tilgangsnøkkel for %s" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "Hvis du får feil knyttet til SSL-sertifikater, kan du besøke denne siden for å få hjelp." + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "Hent tilgangsnøkkelen og den hemmelige nøkkelen fra konsollen for %s. Velg deretter et kurvnavn og eventuelt en bane. Navnet må være helt unikt i forhold til alle andre kurver på %s. Denne kurven vil lages for deg med mindre navnet allerede er i bruk." + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "%s-feil: Klarte ikke opprette tilkobling til kurven %s. Se over tillatelsene og brukerinformasjonen din." + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "%s-feil: Klarte ikke laste ned %s. Se over tillatelsene og brukerinformasjonen din." + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "Gjenopprettingsfeil ved bruk av %s (%s). Se loggen for mer informasjon." + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "%s-opplasting (%s): Gjenoppretting feilet. Se loggen for mer informasjon." + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "%s, del %s: Opplastingen feilet" + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "%s-feil: Filen %s ble på uventet vis forkortet." + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "%s-opplasting: Fikk ikke tak i «uploadID» for flerdelersopplasting. Se loggen for mer informasjon." + +#: methods/email.php:69 +msgid "Note:" +msgstr "Notat:" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "Sikkerhetskopi av WordPress" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "Vi fikk tilgang til beholderen og fikk opprettet filer der." + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "Det oppstod en feil med Cloud Files. Vi fikk tilgang til beholderen, men klarte ikke opprette en fil der." + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "Det ble ikke oppgitt noen detaljer om beholderen." + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "Brukernavn" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "API-nøkkel" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "Feil: Ingen %s ble gitt." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "UpdraftPlus' modul %s krever %s." + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "Beholder hos Cloud Files" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "API-nøkkel til Cloud Files" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "Brukernavn hos Cloud Files" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "Storbritannia" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "USA (standard)" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "Skylagringstjeneste i USA eller Storbritannia" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "Du burde også lese denne seksjonen med ofte stilte spørsmål." + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "Hent en API-nøkkel fra konsollen i Rackspace Cloud. Les instruksjonene her og velg et beholdernavn. Hvis beholderen ikke allerede finnes, vil den opprettes." + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "Test %s-innstillinger" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "Klarte ikke laste ned filen fra fjernlagring" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "Klarte ikke laste ned filen" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "Klarte ikke laste opp filen til Cloud Files" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "%s-feil: Klarte ikke laste opp" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "%s-feil: Klarte ikke åpne den lokale filen" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "Klarte ikke opprette og få tilgang til beholderen i Cloud Files" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "Innlogging i Cloud Files feilet" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "Etter at du har lagret innstillingene dine, må du returnere hit og trykke på denne linken for å fullføre innloggingen med Google." + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "Logg inn i Google" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "Klienthemmelighet" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "Hvis Google senere viser meldingen «invalid_client», så er årsaken at du har fylt inn gal klient-ID her." + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "Klient-ID" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "Du må legge til den følgende adressen som tillatt videresendingsadresse under «Flere innstillinger» når du får spørsmål om det." + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "Velg «Nettapplikasjon» som applikasjonstype." + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "For mer detaljert hjelp, følg denne linken." + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "%s er et godt valg fordi UpdraftPlus støtter oppstykkede opplastinger. Uansett hvor stor siden din er, kan siden din lastes opp litt av gangen uten å bli avbrutt av tidsgrenser." + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "Du har ikke logget inn." + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "Klarte ikke laste opp til %s" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "%s-kontoen din er full. Den har bare %d bytes igjen, mens filen du forsøkte å laste opp er på %d bytes." + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "Du har ennå ikke hentet en tilgangstoken fra Google. Du må logge inn på nytt i Google Drive." + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "Du har logget inn på %s." + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "Lyktes" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "Kvotebenyttelse på %s: %s %% av %s." + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "Klarte ikke logge inn" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "Mottok ingen oppfriskningstoken fra Google. Det kan bety at du fylte inn feil klienthemmelighet eller at du ikke har logget inn på nytt siden du korrigerte den. Se over den på nytt og følg deretter linken for å logge inn igjen. Hvis heller ikke det fungerer, kan du bruke ekspertmodus for å fjerne alle innstillingene, generere en ny klient-ID eller klienthemmelighet og begynne om igjen." + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "følg denne linken for å kjøpe den" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "Kundestøtte for %s er tilgjengelig som en utvidelse" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "Du har ikke %s-utvidelsen installert. Hent den på %s." + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "Du må logge inn på nytt med %s. Brukerinformasjonen din er feil." + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "OK" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "Tabellprefikset har blitt forandret. Endrer %s felter tilsvarende:" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "Fullført. Prosesserte %d linjer på %.2f sekunder." + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "databasespørringen som ble kjørt var:" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "vil gjenopprettes som:" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "Gammelt tabellprefiks:" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "Sikkerhetskopi av:" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "Direkte tilgang til MySQL er ikke tilgjengelig, så faller tilbake på wpdb. Det vil gå betydelig tregere." + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "Klarte ikke åpne databasefilen" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "Klarte ikke finne databasefilen" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "«safe_mode» er aktivert i serverens PHP-installasjon. Det gjør at tidsavbrudd vil inntreffe oftere. Hvis det skjer, må du manuelt gjenopprette databasefilene med phpMyAdmin eller andre metoder." + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "Gjenoppretter «wp-config.php» fra sikkerhetskopi" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "«wp-config.php» fra sikkerhetskopien vil gjenopprettes som «wp-config-backup.php»." + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "Klarte ikke skrive ut den dekrypterte databasen til filsystemet." + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "Klarte ikke opprette en midlertidig mappe." + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "Klarte ikke slette arbeidsmappen etter gjenopprettingen." + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "Klarte ikke slette den gamle mappen." + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "Rydder opp..." + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "Gjenoppretter databasen. På større sider kan dette ta lang tid. Hvis gjenopprettingen får et tidsavbrudd, burde du benytte en annen metode. Du kan for eksempel bruke phpMyAdmin. Årsaken til tidsavbrudd er som regel at ISP-en din begrenser ressursbruken på webhotellet ditt." + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "Databasen ble dekryptert." + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "Dekrypterer database. Dette kan ta en stund..." + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "Pakker opp sikkerhetskopi..." + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "Klarte ikke kopiere enheten." + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "Sikkerhetskopien er ikke tilgjengelig." + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "UpdraftPlus klarer ikke gjenopprette denne typen enhet direkte. Den må gjenopprettes manuelt." + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "Klarte ikke finne én av filene som skulle gjenopprettes" + +#: admin.php:5009 +msgid "Error message" +msgstr "Feilmelding" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "Sikkerhetskopien inneholder ikke informasjon om filens virkelige størrelse." + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "Forventer at arkivet har størrelsen:" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "Vennligst legg ved denne informasjonen hvis du kontakter kundestøtte:" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "Klarte ikke finne informasjon om hvilke enheter som skal gjenopprettes." + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "Gjenoppretting: Fremdrift" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "Denne sikkerhetskopien eksisterer ikke i loggen. Gjenopprettingen ble derfor avbrutt. Tidsstempel:" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "Etter at du har trykket på denne knappen vil du kunne velge hvilke komponenter du ønsker å gjenopprette." + +#: admin.php:4572 +msgid "Press here to download" +msgstr "Trykk her for å laste ned" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "Slett denne sikkerhetskopien" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "Overføringer til %s kan krypteres. Hvis du ser noen krypteringsfeil, kan du se under «Ekspertinnstillinger» for flere alternativer." + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "cURL-modulen i PHP-installasjonen på webserveren din støtter ikke https-tilgang. Vi får ikke tilgang til %s uten denne støtten. Ta kontakt med webhotelleverandøren din." + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "cURL-modulen i PHP-installasjonen på webserveren din godtar ikke https-tilgang. Tilkoblinger til %s vil være ukryptert. Spør leverandøren din om å installere modulen for å få muligheten til kryptering." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "PHP-installasjonen på webserveren din mangler den obligatoriske modulen %s. Ta kontakt med leverandøren av webhotellet ditt." + +#: admin.php:4062 +msgid "Save Changes" +msgstr "Lagre" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "Dette valget vil senke sikkerhetsnivået i UpdraftPlus. All kryptering vil deaktiveres. Valget vil imidlertid ikke ha noen effekt for lagringstjenester - for eksempel Dropbox - som kun kan brukes med krypterte forbindelser." + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "Deaktivér SSL der det er mulig." + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "Legg imidlertid merke til at ikke alle skylagringstjenester bruker SSL." + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "Velger du dette alternativet, vil sidens sikkerhet bli dårligere. Da kan ikke UpdraftPlus bekrefte identiteten til skylagringstjenester den kobler til. Da brukes SSL kun til kryptering av trafikk, og ikke for autentisering." + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "Ikke bekreft SSL-sertifikater" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "Som standard bruker UpdraftPlus sitt eget lager med SSL-sertifikater for å verifisere eksterne sider. Vi holder dette lageret oppdatert. Hvis du får en SSL-feil, kan du prøve å bruke lageret som er på webserveren din i stedet." + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "Bruk serverens SSL-sertifikater" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "Hvis det ikke går, kan du bytte tillatelsene på serveren din eller forandre den til en annen mappe som er skrivbar på webhotellet ditt." + +#: admin.php:3697 +msgid "click here" +msgstr "trykk her" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "eller for å nullstille dette valget" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "Mappen for sikkerhetskopier er skrivbar. Det er en god ting!" + +#: admin.php:4009 +msgid "Backup directory" +msgstr "Mappe for sikkerhetskopier" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "Slett lokal sikkerhetskopi" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "Trykk her for å se flere valg. Anbefales kun hvis du ønsker å løse et bestemt problem." + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "Vis ekspertinnstillinger" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "Ekspertinnstillinger" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "Feilsøkingsmodus" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "Avanserte innstillinger" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "Sender forespørsel om å begynne sikkerhetskopiering..." + +#: admin.php:591 +msgid "Cancel" +msgstr "Avbryt" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "Ingen" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "Velg ekstern lagring" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "Dekryptér en sikkerhetskopi av databasen manuelt" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "Krypteringsfrase for databasen" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "E-post" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "Mappene du ser over er hele installasjonen din, med unntak av Wordpress-kjernen. Den kan du laste ned fra wordpress.org." + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "Utelat:" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "Alle andre mapper inni «wp-content»" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "Ta med i filkopien" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "for eksempel hvis webserveren din er opptatt på dagtid og du vil at den skal kjøre over natten" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "For å permanent sette tiden når en sikkerhetskopiering skal skje -" + +#: admin.php:3683 +msgid "Monthly" +msgstr "Månedlig" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "Annenhver uke" + +#: admin.php:3681 +msgid "Weekly" +msgstr "Ukentlig" + +#: admin.php:3680 +msgid "Daily" +msgstr "Daglig" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "Last ned logg" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "Mappen eksisterer, men webserveren din har ikke tillatelse til å skrive til den." + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "Mappen ble opprettet, men vi måtte endre filtillatelsene dens til 777 (globalt skrivbar) for å kunne skrive til den. Du burde ta kontakt med internettleverandøren din for å forsikre deg om at det ikke skaper problemer." + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "Klarte ikke lage mappe." + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "Slett" + +#: admin.php:3418 +msgid "show log" +msgstr "vis logg" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "Dette valget vil slette alle innstillingene. Er du sikker på at det er dette du vil?" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "tell" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "NB! Dette tallet er basert på det som ble eller ikke ble ekskludert sist gang du lagret innstillingene." + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "Total, ukomprimert datamengde:" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "Nei" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "Ja" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "%s-versjon:" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "Gjeldende minnebruk" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "Høyeste minnebruk" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "Webserver:" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "Se nærmere på UpdraftPlus Premium eller den enkeltstående utvidelsen for nettverksinstallasjoner." + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "Trenger du støtte til nettverksinstallasjon av WordPress?" + +#: admin.php:2654 +msgid "Multisite" +msgstr "Flerside" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "Opprett en sikkerhetskopi" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "Les denne artikkelen for å lære om nyttige ting du kan gjøre ved gjenoppretting." + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "Migrator-utvidelsen kan søke og erstatte URL-er i databasen din dersom du ønsker å bruke UpdraftPlus for å flytte siden din fra en adresse til en annen." + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "%s gjenopprettingsalternativer:" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "Du må gjenopprette den manuelt." + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "Følgende enhet kan ikke gjenopprettes automatisk: %s" + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "Webserveren din har PHPs «safe_mode» aktivert." + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "Velg hvilke komponenter du ønsker å gjenopprette" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "Gjenoppretting vil erstatte sidens temaer, utvidelser, opplastinger, database og alle andre innholdsmapper. Hva som inkluderes, er avhengig av hva du velger å gjenopprette, og hva som er i sikkerhetskopien." + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "Gjenopprett sikkerhetskopi fra" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "Gjenopprett sikkerhetskopi" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "Slett sikkerhetskopi." + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "Nedlastningsfeil: serveren sendte en respons som vi ikke forstod." + +#: admin.php:570 +msgid "You should:" +msgstr "Du burde:" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "Feil:" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "regner ut..." + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "UpdraftPlus - Last opp sikkerhetskopier" + +#: admin.php:3020 +msgid "refresh" +msgstr "oppdatér" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "Webserver diskplass som brukes av UpdraftPlus" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "Google Disk" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "Skru av turbo- eller off-road-modus hvis du bruker Opera." + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "Nettleseren Opera" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "Flere oppgaver:" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "Last ned den siste loggfilen" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "Loggen er tom." + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "Siste loggoppføring" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "Gjenopprett" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "Kopiér nå" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "Database" + +#: admin.php:229 +msgid "Files" +msgstr "Filer" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "Tidspunkt for neste sikkerhetskopiering" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "På samme tidspunkt som filkopieringen" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "Ingenting er planlagt for øyeblikket" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "Dette administrasjonspanelet bruker mye JavaScript. Enten må du aktivere det i nettleseren din, eller så må du bytte til en annen nettleser som har det aktivert." + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "Advarsel fra JavaScript" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "Slett gamle mapper" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "Gjeldende grense er:" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "Sikkerhetskopien din har blitt gjenopprettet." + +#: admin.php:2310 +msgid "Version" +msgstr "Versjon" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "Utviklerens hjemmeside" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "Innstillingene dine har blitt gjenopprettet." + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "Mappe for sikkerhetskopier ble opprettet." + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "Klarte ikke opprette mappe for sikkerhetskopier." + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "Klarte ikke fjerne gamle mapper. Du kan gjøre dette manuelt." + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "Fjernet gamle mapper." + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "Slett gamle mapper" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "Gå tilbake til konfigurering" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "Handlinger" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "Vellykket gjenoppretting!" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "Ukjent filformat. Dette ser ikke ut som en kryptert databasefil laget av UpdraftPlus." + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "Ukjent filformat; dette ser ikke ut som en fil laget av UpdraftPlus." + +#: admin.php:2075 +msgid "No local copy present." +msgstr "Det eksisterer ingen lokal kopi." + +#: admin.php:2072 +msgid "Download in progress" +msgstr "Nedlastningen er i gang" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "Filen er klar." + +#: admin.php:2043 +msgid "Download failed" +msgstr "Nedlastning feilet" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "Feil" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "Klarte ikke finne noen planlagt sikkerhetskopiering. Kanskje har den allerede fullført?" + +#: admin.php:1854 +msgid "Job deleted" +msgstr "Slettet jobb" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "OK. Du kommer snart til å se aktivitet i «Siste loggoppføring»-feltet under." + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "Ingen loggoppføringer ennå" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "Se Ofte stilte spørsmål hvis du har problemer med å sikkerhetskopiere." + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "Websiden din benytter %s som serverprogramvare." + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "UpdraftPlus støtter ikke WordPress-versjoner lavere enn %s. Det kan være det fungerer allikevel, men kundestøtte er ikke tilgjengelig før du oppdaterer." + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "Du har mindre enn %s ledig plass på disken UpdraftPlus bruker til å lagre sikkerhetskopier. Det kan hende vi går tom for plass. Ta kontakt med internettleverandøren din for å løse problemet." + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "Advarsel" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "Utvidelser" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "Innstillinger" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "Tillatte filer" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "Klarte ikke opprette zip-filen %s. Se loggen for mer informasjon." + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "Uendelig løkke. Se loggen for mer informasjon." + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "Besøk updraftplus.com for hjelp, utvidelser og kundestøtte" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "Trenger du flere funksjoner og tilgang til kundestøtte? Prøv UpdraftPlus Premium." + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "Du kan støtte UpdraftPlus ved å skrive en positiv anmeldelse av denne utvidelsen på wordpress.org." + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "Liker du UpdraftPlus og har ett minutt til overs?" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "Kan du oversette? Vil du forbedre UpdraftPlus for de som har ditt språk som morsmål?" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "Fant ikke filen" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "Dette er dekrypteringsnøkkelen som ble brukt:" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "Dekryptering feilet. Du har sannsynligvis gal krypteringsnøkkel." + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "Dekryptering feilet. Databasefilen er kryptert, men du har ingen krypteringsnøkkel." + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "Klarte ikke åpne sikkerhetskopien for skriving." + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "Klarte ikke lagre kopieringshistorie fordi vi har ingen array. Sikkerhetskopieringen feilet sannsynligvis." + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "Klarte ikke lese mappe" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "Mappen for sikkerhetskopier - %s - er enten ikke mulig å skrive til, eller så finnes den ikke." + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "Sikkerhetskopiering fullført" + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "Kopieringen feilet." + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "Kopieringen er ferdig." + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "Klarte ikke kryptere databasen." + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "Klarte ikke å opprette filer i backup folderen. Backup avbrutt - sjekk dine UpdraftPlus innstillinger" + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "Andre" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "Opplastinger" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "Temaer" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "Utvidelser" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "Fant ingen loggfiler." + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "Loggfilen kunne ikke leses." + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "Varsel:" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "Sikkerhetskopiering" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-nl_NL.mo b/plugins/updraftplus/languages/updraftplus-nl_NL.mo new file mode 100644 index 0000000..5bb6bc3 Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-nl_NL.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-nl_NL.po b/plugins/updraftplus/languages/updraftplus-nl_NL.po new file mode 100644 index 0000000..ac607d6 --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-nl_NL.po @@ -0,0 +1,6109 @@ +# Translation of UpdraftPlus in Dutch +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-11-04 14:06:41+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: nl\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "Jouw IP adres:" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "Ga hierheen om een blok te verwijderen" + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "of zet handmatig terug" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "Hierdoor komen time-outs vaker voor. Je kunt het beste safe_mode uitschakelen, of je beperken tot het terugzetten van één entiteit per keer." + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "Om dit probleem op te lossen ga hierheen." + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "OptimizePress 2.0 versleutelt zijn content, hierdoor werkt zoeken/vervangen niet." + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "in je PHP installatie ontbreekt de openssl module; hierdoor kan dit minuten duren; als er na enkele minuten nog niets is gebeurd, probeer dan een kleinere sleutelwaarde, of vraag je web hosting provider om de SSL module in jouw pakket aan te zetten." + +#: addons/webdav.php:91 +msgid "Path" +msgstr "Pad" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "Vul niets in om de standaard instellingen te gebruiken (80 voor webdav, 443 voor webdavs)" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "Vul een pad hieronder in." + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "Een hostnaam mag geen slash bevatten." + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "Protocol (SSL of geen)" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "Deze WebDAV URL wordt gegenereerd door de opties hieronder in te vullen. Als je deze opties niet weet, vraag je WebDAV provider." + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "" + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "Geen instellingen gevonden - ga naar tab Instellingen en controleer de instellingen." + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "Alleen deze add-on" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "Asia Pacific (Mumbai)" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "Verminderde redundantie" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "Standaard (toegang is onregelmatig)" + +#: admin.php:2310 +msgid "FAQs" +msgstr "FAQs" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "Onbekende update checker status \"%s\"" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "Er is een nieuwe versie van deze plugin beschikbaar." + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "Deze plugin is up-to-date." + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "Contoleer op updates" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "Er is geen changelog beschikbaar" + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "Dit is nuttig als de dashboard webserver door deze website geen verbinding kan maken via binnenkomend verkeer (bijvoorbeeld wanneer deze website wordt gehost op het openbare internet, maar het UpdraftplusCentral dashboard bevindt zich op localhost, of op een intranet, of als deze website een uitgaande firewall heeft), of als de dashboard website geen SSL certificaat heeft." + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "Meer informatie..." + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "Gebruik de alternatieve methode om een connectie met het dashboard te maken." + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "Dashboard bij" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "Sleutel grootte: %d bits" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "Openbare sleutel was verzonden aan:" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "Directory kon niet geopend worden (controleer the bestandsrechten en eigendom): %s" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "%s: onleesbaar bestand - er kon geen backup worden gemaakt (controleer the bestandsrechten en eigendom)" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "Maak sleutel" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "langzamer, sterkste" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "aanbevolen" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "%s bytes" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "sneller (mogelijk bij trage PHP installaties)" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "eenvoudigst te breken, snelste" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "%s bits" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "Lengte van encryptiesleutel:" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "Vul je gekozen naam in" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "Maak een sleutel aan: geef deze sleutel een unieke naam (geef bijvoorbeeld aan voor welke site deze is bedoeld), klik daarna op \"Maak Sleutel\":" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "Uploaden zal niet lukken: de %s limiet voor één bestand %s, dit bestand is %s GB (%d bytes)" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "Dit wordt soms veroorzaakt door een Firewall - probeer SSL uit te zetten via de expert instellingen, en probeer opnieuw." + +#: methods/ftp.php:355 +msgid "login" +msgstr "login" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "Let er op dat mailservers gelimiteerde bestandsgroottes hanteren; meestal ongeveer %s MB; backups die groter zijn dan de limiet zullen niet in de inkomende post terechtkomen." + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "De omvang van deze backup is %s MB - het lijkt erop dat deze niet via de e-mail verzonden kan worden (weinig mailservers laten deze grootte als bijlage toe). Is dit het geval, kies een andere remote opslag methode." + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "Grootte: %s MB" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "UpdraftPlus splitst de backup als de bestandsgrootte wordt overschreden. De standaard waarde is %s MB. Neem hiervoor marges in acht als jouw webserver gebruik maakt van exacte groottes (bijv. 2GB / 2048 MB limiet op sommige 32-bit servers/bestandssystemen) " + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "Gratis 1GB voor Updraftplus Vault" + +#: admin.php:2604 +msgid "Now" +msgstr "Nu" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "of (jaarlijkse korting)" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "" + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "Het opgegeven bestand werd niet gevonden of kon niet worden gelezen." + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "" + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "" + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "Aangemaakt:" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "Geef toegang tot deze site als gebruiker:" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "" + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "" + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "" + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "" + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "" + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "" + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "" + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "" + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "" + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "" + +#: admin.php:3420 +msgid "stop" +msgstr "" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "" + +#: admin.php:3092 +msgid "this backup set" +msgstr "" + +#: admin.php:3020 +msgid "calculate" +msgstr "" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "" + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "" + +#: admin.php:601 +msgid "Saving..." +msgstr "" + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:557 +msgid "Fetching..." +msgstr "" + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "" + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "" + +#: admin.php:2884 +msgid "Dismiss" +msgstr "" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "" + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "" + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "" + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "" + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "" + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "" + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "Overslaan: dit archief is al teruggezet" + +#: admin.php:3860 +msgid "File Options" +msgstr "Bastandsopties" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "De backup naar de externe opslag aan het verzenden" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "Planning databasebackup" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "Planning incrementele bestandenbackup" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "Planning bestandenbackup" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "Je zult dan alle instellingen opnieuw moeten invoeren. Je kunt dit, indien gewenst, ook doen vóór het deactiveren/deïnstalleren van UpdraftPlus." + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "Deze knop zal alle UpdraftPlus-instellingen en voortgangsinformatie van draaiende backups verwijderen (maar geen van de bestaande backups op de cloudopslag)." + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "Stuur deze backup naar een externe opslag" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "Kijk eens naar UpdraftPlus-Vault." + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "Geen externe opslag beschikbaar?" + +#: admin.php:5157 +msgid "settings" +msgstr "instelingen" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "Er is geen backup naar een externe opslag gestuurd - noch is er een opgeslagen in de %s" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "Alle bestanden in de backup opnemen" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "De database in de backup opnemen" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "Terugzetten hervatten" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "Er bestaat een een onvoltooide terugzetoperatie, %s geleden gestart." + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "Onvoltooide terugzetoperatie" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "%s minuten, %s seconden" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "Backupinhoud en planning" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "Premium/Extensies" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "Er was onvoldoende informatie over het terugzetproces te vinden." + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "Downloaden" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "Je hebt ervoor gekozen bestanden te backuppen, er is echter niets geselecteerd." + +#: admin.php:442 +msgid "Extensions" +msgstr "Extensies" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "Geavanceerde gereedschappen" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "'Bucket'-locatie" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "Let erop dat Google niet elke opslag-soort op elke locatie ondersteunt - je moet de documentatie lezen om meer te weten te komen over de huidige beschikbaarheid." + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "Deze instelling is alleen van toepassing als er een nieuwe 'bucket' gecreëerd wordt." + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "Je moet een 'bucket'-naam gebruiken die uniek is voor alle %s-gebruikers." + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "Verwar %s niet met %s - dat zijn verschillende dingen" + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "Je hebt geen toegang tot deze 'bucket'" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "West-Europa" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "Oostelijk-Aziatische Stille Oceaan" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "West-VS" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "Oost-VS" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "Oost-VS" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "VS-centraal" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "Europese Unie" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "Aziatische Stille Oceaan" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "multiregio-pocatie" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "Verenigde Staten" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "Dichbijzijnd" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "Blijvend beperkte beschikbaarheid" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "Standaard" + +#: addons/azure.php:524 +msgid "container" +msgstr "container" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "Je kunt hier het pad van elke gewenste %s virtuele map invoeren." + +#: addons/azure.php:523 +msgid "optional" +msgstr "optioneel" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "Prefix" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "Zie de Microsoft-instructie voor de naamgeving van containers door op deze link te klikken." + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "Als de %s niet reeds bestaat wordt hij gecreëerd." + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "Voer het pad van de %s in die je hier wilt gebruiken." + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "Dit is niet je Azure-inlog - zie de instructies als je meer assistentie nodig hebt." + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "Accountnaam" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "Azure" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "Azure-inloggegevens creëren in de Azure-ontwikkelaarsconsole." + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "Container kon niet gecreëerd worden" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "Container niet toegankelijk" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "Om de migratie/clonering af te ronden moet je nu inloggen op de externe site en backupset terugzetten." + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "de optietabel is niet gevonden" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "er zijn geen opties of sitemeta-tabel gevonden" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "De databasebackup lijkt mislukt te zijn" + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "De backup-directory is niet beschrijfbaar (of de diskruimte is vol) - de databasebackup zal binnenkort afgebroken worden" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "vereist voor sommige externe opslagproviders" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "Niet geïnstalleerd" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "Opslag-class" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "Zie de Google-instructies voor 'bucket'-benaming door op de volgende link te klikken." + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "'Bucket'-namen moet wereldwijd uniek zijn. Als de 'bucket' nog niet bestaat, zal hij gecreëerd worden." + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "Voer hier de naam in van de %s-'bucket' die je wilt gebruiken." + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "'Bucket'" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "Laat het anders leeg." + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "N.B. Dit is alleen nodig als je nog geen 'bucket' gecreëerd hebt, en je wilt dat UpdraftPlus dat voor je doet." + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "Voer hier het ID in van het %s-project dat je wilt gebruiken." + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "Klik op deze link naar de Google-API-console en activeer daar de opslag-API en creëer een client-ID in de API-toegangssectie." + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "Je moet een project-ID invoeren om een nieuwe 'bucket' te kunnen creëren." + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "Project-ID" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "Je moet opslaan en autoriseren voordat je de instellingen kunt testen." + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "Er is nog geen toegangs-token van Google ontvangen - je moet de verbinding met 'Google Cloud' autoriseren of opnieuw autoriseren." + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "Je hebt geen toegang tot deze 'bucket'." + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "Google Cloud" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "%s-service-uitzondering" + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "UpdraftPlus is niet volledig geïnstalleerd - deïnstalleer het eerst en installeer het dan weer. Waarschijnlijk werkte WordPress niet goed tijdens het kopiëren van de plugin-bestanden." + +#: restorer.php:767 +msgid "Deferring..." +msgstr "Uitstellen..." + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "of meer complexe planningen configureren" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "Ben je er zeker van dat je %s wilt verwijderen uit UpdraftPlus?" + +#: admin.php:3081 +msgid "Deselect" +msgstr "Deselecteren" + +#: admin.php:3080 +msgid "Select all" +msgstr "Alles selecteren" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "Acties voor geselecteerde backups" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "Klik hier om in de externe opslagvoorzieningen te zoeken naar bestaande backup-sets (van elke site, als ze opgeslagen zijn in dezelfde map)." + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "aan het werk..." + +#: admin.php:634 +msgid "For backups older than" +msgstr "Voor backups ouder dan" + +#: admin.php:633 +msgid "week(s)" +msgstr "week/weken" + +#: admin.php:632 +msgid "hour(s)" +msgstr "uur" + +#: admin.php:631 +msgid "day(s)" +msgstr "dag(en)" + +#: admin.php:630 +msgid "in the month" +msgstr "in de maand" + +#: admin.php:629 +msgid "day" +msgstr "dag" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "(zoveel als je wilt)" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "Aanvullende behoudsregel toevoegen..." + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "Deze database dient uitgerold te worden op MySQL-versie %s of hoger." + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "Dit probleem wordt veroorzaakt daar een poging een database terug te zetten naar een erg oude MySQL-versie, die niet compatibel is met de bron-database." + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "Je hebt op dit moment geen UpdraftPlus-Vault-quotum" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "Je moet MySQL upgraden om deze database te kunnen gebruiken." + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "De database-backup gebruikt MySQL-functies die niet beschikbaar zijn in de oude MySQL-versie (%s) waar deze site op draait." + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "Geen advertentie-links op de instellingenpagina van UpdraftPlus" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "De UpdraftPlus-directory in wp-content/plugins bevat wit-ruimte; WordPress houdt daar niet van. Je moet de directory hernoemen naar wp-content/plugins/updraftplus om dit probleem op te lossen." + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "Weet je je e-mailadres niet of ben je je wachtwoord vergeten?" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "Voer hier het e-mailadres/wachtwoord voor UpdraftPlus.Com in om verbinding te maken:" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "Lees de FAQ's hier." + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "Vink dit vak aan om de server-encryptie van Amazon te gebruiken" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "Encryptie door de server" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "Als je het wachtwoord vergeten bent, ga dan hierheen om het wachtwoord op updraftplus.com te veranderen." + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "Ga naar de instellingen van de externe opslag om verbinding te maken." + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "%s is gekozen voor externe opslag, maar je bent momenteel niet verbonden." + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "Betalingen kunnen worden uitgevoerd in US-dollars, euro's of Britse ponden, mbv creditkaart of PayPal." + +#: admin.php:607 +msgid "Update quota count" +msgstr "Quotum-berekening updaten" + +#: admin.php:606 +msgid "Counting..." +msgstr "Berekenen..." + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "Verbinding verbreken..." + +#: admin.php:603 +msgid "Connecting..." +msgstr "Verbinden..." + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "Huidige status vernieuwen" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "Meer ruimte verkrijgen" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "Huidig gebruik:" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "Je kunt hier meer ruimte verkrijgen" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "Fout %s: je hebt onvoldoende opslagruimte beschikbaar (%s) om dit archief (%s) te uploaden." + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "Verbinding verbreken" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "Quotum:" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "Vault-eigenaar" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "Goedzo - er hoeft niets meer ingesteld te worden." + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "Deze site is verbonden met UpdraftPlus-Vault." + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "Je bent niet verbonden met UpdraftPlus-Vault." + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "Ga hierheen voor hulp" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "E-mailadres" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "Terug..." + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "Abonnementen kunnen op elk moment beëindigd worden." + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "%s per kwart" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "Lees er hier meer over." + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "UpdraftPlus-Vault is gebouwd bovenop de wereldbekende datacentra van Amazon, met overvloedige dataopslag met 99.999999999 % betrouwbaarheid." + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "Al ruimte gekocht?" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "De mogelijkheden tonen" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "Nieuwe gebruiker?" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "Druk op een knop om te beginnen." + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "UpdraftPlus-Vault levert je opslag die betrouwbaar, gemakkelijk in het gebruik is en dat voor een mooi bedrag." + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "Je hebt een UpdraftPlus-Vault-abonnement dat niet vernieuwd is en de termijn is verlopen. Binnen een paar dagen zullen de opgeslagen data definitief verwijderd worden. Als je niet wilt dat dit gebeurt, zul je zo spoedig mogelijk moeten vernieuwen." + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "Je hebt een UpdraftPlus-Vault-abonnement met betalingsachterstand. Binnen een paar dagen zal de termijn verlopen zijn, en zul je quotum en toegang tot de opgeslagen data verliezen. Vernieuw zo spoedig mogelijk." + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "De aankoop van UpdraftPlus-Premium is meer dan een jaar geleden. Je moet onmiddellijk vernieuwen om te voorkomen dat je 12 maanden gratis opslag verliest die je als UpdraftPlus-Premium-klant krijgt." + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "Updraft-Vault" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "Verwijderen mislukt:" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "Het zip-programma gaf de foutmelding: %s." + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "Zonder deze goedkeuring kan UpdraftPlus geen backups verwijderen - je zult ook de 'retain'-instellingen op hoog moeten zetten om verwijderfouten te voorkomen." + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "Verwijderen toestaan" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "Zonder deze goedkeuring kun je niet direct downloaden of terugzetten met UpdraftPlus, en zul je in plaats daarvan de AWS-website moeten bezoeken." + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "Download toestaan" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "Als het direct versturen van site naar site niet werkt, zijn er drie andere methodes - gebruik dan in plaats hiervan een van deze." + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "Je moet controleren of de externe site online is, geen firewall of beveiligingsmodules heeft die de toegang blokkeren, dat UpdraftPlus versie %s of nieuwer draait en de sleutels correct ingevoerd zijn." + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "Bestaande sleutels" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "Er zijn nog geen sleutels aangemaakt die externe sites toestaan verbinding te maken." + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "De nieuwe sleutel:" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "Maak een sleutel aan om een andere site toe te staan een backup naar deze site te sturen, klik dan op de knop 'Migreren' op de site die verzendt, en kopieer/plak hem daar." + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "Om dus de sleutel voor de externe site te verkrijgen open je het venster 'Migreren' op die site, blader je omlaag en kun je kun er daar een creëren." + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "Sleutels voor deze site worden gecreëerd in de sectie onder degene die je zojuist indrukte." + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "Je moet deze sleutel nu kopiëren en plakken - hij kan niet opnieuw getoond worden." + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "Sleutel met succes aangemaakt." + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "Een sleutel met deze naam bestaat al; je moet een unieke naam gebruiken." + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "Verzend deze backup ook naar de actieve externe opslaglocaties" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "De site-URL waarnaar je verzendt (%s) ziet eruit als een locale ontwikkelaarssite. Als je verzendt vanaf een extern netwerk, is het waarschijnlijk dat een firewall dit blokkeert." + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "site niet gevonden" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "Backupdata zullen verzonden worden naar:" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "Een bestaande backup terugzetten naar deze site" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "Deze site bevat nog geen backups om terug te zetten." + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "Backup gemaakt door %s" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "Deze opslagmethode staat downloaden niet toe" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "(backupset geïmporteerd van een externe locatie)" + +#: admin.php:4423 +msgid "Site" +msgstr "Site" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "Backup naar externe site verzonden - niet beschikbaar om te downloaden." + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "Je moet er zeker van zijn dat deze backupset inderdaad bedoeld is voor gebruik op deze website (en niet voor een onbekende website), voordat je gaat terugzetten." + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "Van deze backupset is niet bij UpdraftPlus bekend dat hij gemaakt is door de huidige WordPress-installatie, maar hij is of gevonden in een externe opslaglocatie of verzonden vanaf een externe site." + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "Verbinding testen..." + +#: admin.php:617 +msgid "Deleting..." +msgstr "Verwijderen..." + +#: admin.php:616 +msgid "key name" +msgstr "sleutelnaam" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "Geef deze sleutel een naam (vermeld bv de site waarvoor hij dient):" + +#: admin.php:611 +msgid "Creating..." +msgstr "Aanmaken..." + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "Of ontvang een backup van een externe site" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "Plak de sleutel hier" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "Hoe kan ik de sleutel van een site krijgen?" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "Voer de sleutel van een site hieronder in om die site als verzendadres toe te voegen." + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "Of verzend een backup naar een andere site" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "Verzenden" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "Verzend naar site:" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "Er zijn nog geen ontvangende sites toegevoegd." + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "Hij is voor het verzenden van backups naar de volgende site:" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "De sleutel is met succes toegevoegd." + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "De ingevoerde sleutel hoort niet bij de externe server (hij hoort bij deze)." + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "De ingevoerde sleutel was foutief - probeer het opnieuw." + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "De ingevoerde sleutel heeft de verkeerde lengte - probeer het opnieuw." + +#: addons/migrator.php:1861 +msgid "key" +msgstr "sleutel" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "Bijna alle FTP-servers zullen passieve modus verlangen; maar als je actieve modus nodig hebt, vink dit dan uit." + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "Passieve modus" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "Extern pad" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "FTP-wachtwoord" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "FTP-inlog" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "FTP-server" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "De UpdraftPlus-migreertool wijzigt de terugzetoperatie zodanig dat de backupdata aangepast zijn aan de nieuwe site." + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "Een 'migratie' is uiteindelijk hetzelfde als terugzetten - maar je gebruikt daarbij archieven die je importeert van een andere site." + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "Site toevoegen" + +#: admin.php:608 +msgid "Adding..." +msgstr "Aan het toevoegen..." + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "Claim niet toegekend - misschien heb je deze aankoop al ergens anders gebruikt, of misschien is de betaalde termijn voor het downloaden vanaf updraftplus.com verlopen." + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "Om deze backup te kunnen gebruiken dient de databaseserver de karakterset %s te ondersteunen." + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "ga hierheen om je wachtwoord te veranderen op updraftplus.com." + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "Als je het wachtwoord vergeten bent" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "Ga hierheen om je wachtwoord opnieuw in te voeren." + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "Na het klikken op deze knop krijg je de mogelijkheid te kiezen welke componenten je wilt migreren" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "Ga naar het tabblad 'Bestaande backups' om een backupset te importeren." + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "Je hebt wijzigingen aangebracht aan de instellingen en niet opgeslagen." + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "N.B. %s is niet hoofdlettergevoelig." + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "Als OneDrive later de melding 'unauthorized_client' toont, heb je hier een niet geldig client-ID ingevoerd." + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "Klik op deze link voor meer hulp, inclusief schermafbeeldingen." + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "Maak de OneDrive-inloggegevens aan in de OneDrine-ontwikkelaarsconsole." + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "Je moet het volgende toevoegen als doorstuur-URL in de OneDrive-console (onder API-settings), als dat gevraagd wordt" + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "Autorisatie met %s mislukt:" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "OneDrive" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "Log weer in om te verbinden met je account %s." + +#: methods/email.php:73 +msgid "configure it here" +msgstr "configureer het hier" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "Ga hierheen om het blok te verwijderen." + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "Denk eraan je instellingen op te slaan." + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "Je gebruikt nu een IAM-gebruikersaccount voor toegang tot je 'bucket'." + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "S3-bucket" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "China (Beijing) (restricted)" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "South America (Sao Paulo)" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "Asia Pacific (Tokyo)" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "Asia Pacific (Sydney)" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "Asia Pacific (Singapore)" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "EU (Frankfurt)" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "EU (Ireland)" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "US Government West (restricted)" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "US West (N. California)" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "US West (Oregon)" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "US Standard (default)" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "S3-opslagregio" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "Nieuwe IAM-gebruikersnaam" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "Geheime sleutel van de beheerder" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "Beheerder-toegangscode" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "Dan kunnen deze lagergekwalificeerde toegangscodes gebruikt worden, in plaats van het opslaan van de beheerderscodes." + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "Deze zullen gebruikt worden om een nieuwe gebruiker en sleutelpaar aan te maken met IAM-mogelijkheden erbij die alleen toegang verschaffen tot de betreffende 'bucket'." + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "Voer de toegangscodes/geheime sleutels voor de 'Amazon S3'-beheerder in (dit moet een sleutelpaar zijn met voldoende rechten om nieuwe gebruikers en 'buckets' aan te maken), en een nieuwe (unieke) gebruikersnaam voor de nieuwe gebruiker en een 'bucket'-naam." + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "Een nieuwe IAM-gebruiker en S3-bucket aanmaken" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "Geheime sleutel: %s" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "Toegangscode: %s" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "Het toepassen van de gebruikersmogelijkheden is mislukt" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "De bewerking een toegangscode aan te maken voor de gebruiker is mislukt" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "Aanmaken van een toegangscode voor de gebruiker mislukt" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "IAM-bewerking mislukt (%s)" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "Conflict: die gebruiker bestaat al" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "Fout: Niet mogelijk toegang te krijgen tot zo'n 'bucket' of hem aan te maken. Controleer je inloggegevens, en als ze correct zijn, probeer dan een andere 'bucket'-naam (daar een andere AWS-gebruiker de naam al in gebruik heeft)." + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "AWS-autorisatie mislukt" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "Aanmaken van een nieuwe AWS-gebruiker niet mogelijk, omdat de oude AWS-toolkit gebruikt wordt." + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "Je moet een 'bucket' ivoeren" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "Je moet een nieuwe IAM-gebruikersnaam invoeren" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "Je moet een geheime sleutel voor de beheerder invoeren" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "Je moet een toegangssleutel voor de beheerder invoeren" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "Als je een gebruiker met AWS-beheer hebt, kun je deze wizzard gebruiken om snel een nieuwe AWS(IAM)-gebruiker aan te maken die alleen toegang heeft deze 'bucket' (in plaats van je hele account te gebruiken)." + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "Gebruik deze add-on om een nieuwe IAM-subgebruiker aan te maken en een toegangssleutel die alleen toegang geeft tot deze 'bucket'." + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "Kijk eens naar de premiumversie van UpdraftPlus - de populairste backupplugin van de wereld - voor persoonlijke support, de mogelijkheid sites te kopiëren, meer opslagbestemmingen, versleutelde backups voor de veiligheid, meervoudige backupbestemmingen, betere rapportage, geen advertenties en heel veel meer, " + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "UpdraftPlus-nieuws, trainingsmateriaal van hoge kwaliteit voor WordPress-ontwikkelaars en site-eigenaars, en algemeen WordPress-nieuws. Je kunt je op elk moment uitschrijven." + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "Het uploadpad (%s) is veranderd tijdens een migratie - reset (naar: %s)" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "Dit betekent meestal dat je een webserver deelt met een gehackte website die gebruikt is bij voorgaande aanvallen." + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "Het blijkt dat het IP-adres van de webserver (%s) geblokkeerd is." + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "UpdraftPlus.com heeft geantwoord met 'Access Denied'." + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "Premium WooCommerce-plugins" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "Gratis tweetraps veiligheidsplugin" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "Meer kwaliteitsplugins" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "Ga naar de shop" + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "Vergelijken met de gratis versie" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "UpdraftPlus-Premium" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "Klik op deze link om in te schrijven." + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "Gratis nieuwsbrief" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "Dank voor het backuppen met UpdraftPlus." + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "Afwijzen (gedurende %s maanden)" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "(tegelijk met de bestandsbackup)" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "De backup is nog niet afgerond" + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "De eerste stap is het deïnstalleren van de gratis versie." + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "Als je iets gekocht hebt op UpdraftPlus.Com, klik dan op deze link naar de instructies om je aankoop te installeren." + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "Abonneren op de nieuwsbrief" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "Klik op deze link om je te abonneren op de UpdraftPlus-nieuwsbrief." + +#: admin.php:2831 +msgid "Personal support" +msgstr "Persoonlijke support" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "Toegang tot de instellingen blokkeren" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "Netwerk/multisite-support" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "Backuptijdstip repareren" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "Geplande backups" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "Backups van andere plugins terugzetten" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "Database-encryptie" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "Backups naar meerdere externe bestemmingen sturen" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "Automatische backup bij het updaten van WP/plugins/thema's" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "Geavanceerde rapportagefuncties" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "Eenvoudige e-mailrapportage" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "Websites migreren/klonen (d.w.z. kopiëren) " + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "Extra bestanden en databases backuppen" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "WebDAV, Copy.Com, SFTP/SCP, beveiligde FTP" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "Dropbox, Google Drive, FTP, S3, Rackspace, E-mail" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "Backuppen naar externe opslag" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "Terugzetten vanuit backup" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "Vertaald in meer dan %s talen" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "De WordPress-bestanden en -database backuppen" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "Koop het nu." + +#: admin.php:2718 +msgid "Get it from" +msgstr "Koop het bij" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "Stel een vraag alvorens te kopen" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "FAQ's alvorens te kopen" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "Volledige functielijst" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "UpdraftPlus-Premium kopen" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "Je gebruikt op dit moment de gratis UpdraftPlus-versie van wordpress.org." + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Backup (Indien relevant) plugins, thema's en de WordPress-database met Updraft-Plus alvorens te updaten," + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "Fout %s: Initialisatie mislukt" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "of" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "of" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "Je hebt geen componenten geselecteerd om terug te zetten. Selecteer er minstens één, en probeer het dan opnieuw." + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "PKCS1 (PEM-header: BEGIN RSA PRIVATE KEY), XML- en PuTTY-formaat-sleutels worden geaccepteerd." + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "Het hervatten van een gedeeltelijke upload wordt ondersteund door SFTP, maar niet door SCP. Dus als je SCP gebruikt, moet je er zeker van zijn dat de webserver PHP-processen ondersteunt die ervoor zorgen dat het proces lang genoeg kan duren om het grootste bestand te uploaden." + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "container" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "Dit moet een v2(Keystone)-autorisatie-URI zijn; v1(Swauth) wordt niet ondersteund." + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "E-mailadres van de sitebeheerder" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "Vink dit vakje aan om een eenvoudig rapport te laten sturen" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "Handmatig" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "Er is een fout (%s) opgetreden:" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "Blokkeerinstellingen veranderen" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "Elke andere file/directory op de server die je wilt backuppen" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "Kijk hier voor nog meer functies en persoonlijke support" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "Creëren van tabel mislukt - omdat je waarschijnlijk geen rechten hebt om tabellen te plaatsen en de tabel al bestaat; proces gaat verder" + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "Gecachete pagina's (%s) wissen..." + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "Database-decodeersleutel" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "Automatische backup vóór het updaten" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "WordPress-core (alleen)" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "Neem contact op met de persoon die UpdraftPlus voor jou beheert voor support over het opheffen van de toegangsblokkering." + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "Voer het wachtwoord in om toegang te krijgen tot de UpdraftPlus-instellingen" + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "Wachtwoord onjuist" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "Blokkering opheffen" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "In alle andere gevallen wordt de standaardlink getoond." + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "Iedereen die het blokkeerscherm te zien krijgt, wordt deze support-URL getoond - voer een website- of een e-mailadres in." + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "Support-URL" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "Een nieuw wachtwoord verplicht stellen na" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "%s weken" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "1 week" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "%s uren" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "1 uur" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "Zorg ervoor dat je het wachtwoord ergens hebt genoteerd." + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "Blokkeer de toegang tot de pagina met UpdraftPlus-instellingen" + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "Instellingen opgeslagen." + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "Het beheerderswachtwoord is veranderd." + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "Er is een wachtwoord voor de beheerder ingesteld." + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "Het beheerderswachtwoord is nu verwijderd." + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "(meer te weten komen over deze belangrijke optie)" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "Merk op dat je na het opvragen van de add-ons het wachtwoord (niet het e-mailadres) uit de instellingen hieronder kunt verwijderen, zonder dat dit invloed heeft op de toegang tot updates." + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "Log bekijken" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "Backup-data (klik om te downloaden)" + +#: admin.php:4368 +msgid "Backup date" +msgstr "Backupdatum" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "en behoud zoveel geplande backups" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "incrementele backup; basisbackup: %s" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "Om de UpdraftPlus-instellingen te kunnen beveiligen met een wachtwoord, moet je upgraden naar UpdraftPlus-Premium." + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "Bestanden uploaden naar UpdraftPlus." + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "De knop 'Backup nu' is uitgeschakeld omdat je geen schrijfrechten hebt in de backupmap (ga naar het tabblad 'Instellingen' voor de juiste instellingen)." + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "Backup-label:" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "Fout: lezen van het bestand onverwacht mislukt" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "bekijk het logbestand voor meer details." + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "de webhosting-ruimte lijkt vol te zijn; zie %s" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "Er is een zip-fout opgetreden" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "Je label voor deze backup (optioneel)" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "%s staat autorisatie niet toe van sites die gehost zijn op een direct IP-adres. Je zult het adres (%s) van de website moeten aanpassen voordat je %s kunt gebruiken voor opslag." + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "Je hebt een e-mailadres ingevoerd dat niet wordt herkend door UpdraftPlus.com" + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "Je e-mailadres is correct, maar het wachtwoord werd niet herkend door UpdraftPlus.com." + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "Je dient zowel een e-mailadres als een wachtwoord op te geven" + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "Klik op 'Nu backuppen' om door te gaan. Controleer daarna het veld 'Laatste log-berichten' op activiteit. " + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "Als je een multisite-backup wilt terugzetten, zul je eerst een multisite-WordPress-installatie moeten opzetten." + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "De backup bevat een multisite-WordPress-installatie maar deze website is dat niet. Alleen de eerste website van het netwerk zal toegankelijk zijn." + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "al afgerond" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "overgeslagen (niet in de lijst)" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "Zoeken en vervangen tabel:" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "Voer een kommagescheiden lijst in of laat het leeg voor alle tabellen." + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "Alleen deze tabellen" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "Aantal rijen per batch" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "Je bent nog niet verbonden met het UpdraftPlus.com-account." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "Om in de toekomst updates te blijven ontvangen van UpdraftPlus moet je verbinding maken." + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "Supportvragen over %s zullen aan de hostingprovider gesteld moeten worden." + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "Ga alleen verder als je de huidige server niet kunt updaten en als je er zeker van bent (of het risico aandurft) dat alle plugins/thema's/enz. compatibel zijn met de oudere versie %s." + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "Deze is duidelijk nieuwer dan de versie die op de huidige server aanwezig is (versie %s)." + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "De website in deze backup draaide op een webserver met versie %s van %s." + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "LinkedIn" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "Google+" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "Facebook" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "Twitter" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "UpdraftPlus is ook te vinden op sociale media - je vindt ons hier:" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "Waarom krijg ik dit te zien?" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "De locatie van deze directory wordt ingesteld in de expert-instellingen op het tabblad 'Instellingen'." + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "Klik hier om in de UpdraftPlus-map (op de webhosting-ruimte) te zoeken naar nieuwe backupsets die geüploadet zijn." + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "Backup starten" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "Je gebruikt webserver %s, maar de module %s lijkt daarop niet geladen te zijn." + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "Neem contact op met de hostingprovider om erachter te komen hoe de rechten zo aangepast kunnen worden dat een WordPress-plugin schrijfrechten heeft in de directory." + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "Je kunt alles hier gewoon negeren, tenzij er een probleem optreedt." + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "Dit bestand kan niet geüploadet worden" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "Meer informatie hierover is te vinden in de sectie Instellingen." + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "Ondersteunde backup-plugins: %s" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "Is deze backup gemaakt door een andere backup-plugin? Als dat zo is, moet je de backup wellicht eerst hernoemen voordat hij herkend wordt - zie deze link." + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "Meer informatie over incrementele backups" + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "Geheugenlimiet" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "terugzetten" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "Tabel die automatisch wordt verwijderd: %s" + +#: backup.php:829 +msgid "Incremental" +msgstr "Incrementeel" + +#: backup.php:829 +msgid "Full backup" +msgstr "Volledige backup" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "gaat nu verder met de updates..." + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "(bekijk logboek...)" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "Backup geslaagd" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "Om de %s uur" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "zoeken en vervangen" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "Starten" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "Een zoeken/vervangen-actie kan niet ongedaan gemaakt worden - weet je zeker dat je dit wilt?" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "Dit kan gemakkelijk de site onbruikbaar maken; gebruik het dus voorzichtig." + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "Vervangen door" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "Zoeken naar" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "Database zoeken/vervangen" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "zoekterm" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "Er zijn teveel databasefouten opgetreden - afbreken" + +#: backup.php:895 +msgid "read more at %s" +msgstr "lees meer op %s" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "E-mailrapporten gecreëerd door UpdraftPlus (gratis versie) brengen je het laatste UpdraftPlus.com-nieuws" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "N.B. Als je UpdraftPlus installeert op verschillende WordPress-sites, kun je het project niet opnieuw gebruiken; je moet voor elke site een nieuw project aanmaken met de Google-API-console." + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "Je hebt nog geen backup gemaakt." + +#: admin.php:3872 +msgid "Database Options" +msgstr "Database-opties" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "Plugins voor foutopsporing:" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "%s (%s gebruikt)" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "Gratis opslagruimte in account:" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "Deze knop is niet actief omdat je in de backuplocatie geen schrijfrechten hebt (zie instellingen)." + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "Bestaande backups" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "Huidige status" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "Ga naar het tabblad 'Instellingen' om de standaardinstellingen van wat gebackupt moet worden aan te passen, om geplande backups in te stellen, om de backups op te slaan op externe opslag (aanbevolen) en meer." + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "Om een backup te maken klik je op de knop 'Backup nu'." + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "Welkom bij UpdraftPlus." + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "De tekst die je hier invoert wordt gebruikt voor encryptie van de databasebackup (Rijndael). Zorg dat je de tekst ergens opslaat en niet kwijt raakt, anders worden alle backups onbruikbaar. Dit is ook de sleutel die gebruikt wordt om backups van de beheerdersomgeving te decoderen (dus als je hem verandert zal automatische decodering niet meer werken, totdat je hem weer terug verandert)." + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "Testen..." + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "Verbinding testen..." + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "Tabel-prefix" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "Externe database backuppen" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "Voeg een externe database toe aan de backup..." + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "Als de database extra tabellen bevat die geen onderdeel zijn van deze WordPress-site (als dat zo is weet je dat ongetwijfeld), activeer dan deze optie om ze ook te backuppen." + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "Backup niet-Wordpress-tabellen die zich in dezelfde database bevinden als Wordpress" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "Deze optie zorgt ervoor dat ook tabellen uit de MySQL-database die geen onderdeel zijn van WordPress, worden gebackupt (die tabellen missen de ingestelde WordPress-prefix, %s). " + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "Verbinding mislukt." + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "Verbinding gelukt." + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "Totaal %s tabel(len) gevonden; %s met de opgegeven prefix." + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "%s tabel(len) gevonden." + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "poging tot databaseverbinding mislukt" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "databasenaam" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "host" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "gebruiker" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "Externe database (%s)" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "Gebruik deze link naar de Google-API-console, activeer daar de Drive-API en creëer een client-ID in de sectie API-access." + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "toegang tot bovenliggende map mislukt" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "Echter, de erop volgende toegangspogingen zijn mislukt:" + +#: admin.php:4499 +msgid "External database" +msgstr "Externe database" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "Dit zorgt ervoor dat ook foutopsporings-uitvoer van andere plugins zichtbaar wordt op dit scherm - wees dus niet verrast als je die ook te zien krijgt." + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "Meer databases backuppen" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "Voer eerst de decodeersleutel in" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "Je kunt hier handmatig databases decoderen en versleutelen." + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "Hij kan ook externe databases backuppen." + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "Wil je niet bespioneerd worden? UpdaftPlus-Premium kan de databasebackup versleutelen." + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "UpdraftPlus-Premium gebruiken" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "Decoderen mislukt; het databasebestand is versleuteld." + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "Alleen de WordPress-database kan worden teruggezet; je zult de externe database handmatig moeten terugzetten." + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "Er is een fout opgetreden tijdens het eerste commando %s - proces afgebroken" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "Verbinding mislukt: controleer de toegangsgegevens, of de databaseserver online is en of de netwerkverbinding niet wordt geblokkeerd door een firewall." + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "databaseverbinding mislukt." + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "Waarschuwing: de home-URL in de database (%s) is anders dan wat er verwacht werd (%s)" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "De padnamen in %s zijn hoofdlettergevoelig." + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "Als je dit leeg laat wordt de backup geplaatst in de root van de %s" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "bijvoorbeeld %s" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "Als de map nog niet bestaat, zal hij worden aangemaakt." + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "Vul hier het pad in voor de map %s die je wilt gebruiken." + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "Container" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "Als je dit leeg laat wordt er een standaardwaarde gekozen." + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "Container" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "Klik op deze link voor meer informatie" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "autorisatie-URI" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "Verkrijg de inloggegevens van de OpenStack-Swift-aanbieder en kies dan een containernaam om te gebruiken voor de opslag. Deze container wordt aangemaakt als hij nog niet bestaat." + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "Downloaden van %s is mislukt" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "Downloaden is mislukt" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "Het maken van een bestandenlijst is mislukt" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "Het uploaden van %s is mislukt" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "Gelukt:" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "Nadat je de instellingen opgeslagen hebt (door onderaan op 'Wijzigingen opslaan' te klikken), kom je hier terug en klik je op deze link om de autorisatie op %s af te ronden." + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "(Je lijkt al aangemeld te zijn)." + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "Dropbox" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "Autoriseren op %s" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "Fout bij het downloaden van extern bestand: downloaden mislukt" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "Regio: %s" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "Fout %s - er was toegang tot de container, maar er kon er geen bestand in aangemaakt worden" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "Object %s is niet gevonden" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "Geen toegang tot container %s" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "Fout %s - geen toegang tot de container" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "Naam van de accounteigenaar: %s." + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "Gebruik UpdraftPlus-Premium om zelf een naam voor een map te kunnen kiezen." + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "Het is een intern GoogleDrive-ID." + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "Dit is GEEN mapnaam." + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "Map" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "Download %s mislukt: bestand niet gevonden" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "Naam: %s." + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "GoogleDrive-bestandenlijst: er kon geen verbinding gemaakt worden met de hoofdmap" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "Je %s versie: %s." + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "Je zult de webhost moeten vragen te upgraden." + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "Deze externe opslagmethode (%s) vereist PHP %s of recenter." + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "De thema-directory (%s) is niet gevonden, maar wel een versie met kleine letters. Dit wordt dienovereenkomstig aangepast in de databaseoptie." + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "Bellen" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "Ophalen" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "Deze functie vereist %s versie %s of recenter" + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "Plugin-gegevens van 'Elegant themes'-themamaker gedetecteerd: de tijdelijke map wordt gereset" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "Er zijn %s bestanden uitgepakt" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "Uitpakken van het archief mislukt" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "Fout - het bestand kon niet worden gedownloadet" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "Opnieuw in de lokale map zoeken naar nieuwe backup-sets" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "Update UpdraftPlus om er zeker van te zijn dat je een versie hebt die getest is op compatibiliteit." + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "Het is getest tot en met versie %s." + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "De geïnstalleerde versie van UpdraftPlus-Backup/Restore is niet getest met de huidige versie van WordPress (%s)." + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "wachtwoord/sleutel" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "Sleutel" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "Inloggen kan of op wachtwoord of op sleutel gebaseerd zijn - voer er slechts één in, niet beide." + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "De gegeven sleutel heeft een ongeldig formaat of is beschadigd." + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "SCP/SFTP-wachtwoord/sleutel" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "Bestanden-backup (gemaakt door %s)" + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "Backup van Wordpress-bestanden en -database (gemaakt door %s)" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "Backup gemaakt door: %s." + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "Database (gemaakt door %s)" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "onbekende bron" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "Scan de externe opslag opnieuw" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "Backup-bestanden uploaden" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "Deze backup is gemaakt door %s en kan geïmporteerd worden." + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "Lees deze pagina voor een overzicht met mogelijke oorzaken en oplossingen." + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "WordPress bevat een aantal (%d) geplande taken die al uitgevoerd hadden moeten zijn. Tenzij dit een ontwikkelaarssite is, betekent dit waarschijnlijk dat de planner in de WordPress-installatie niet werkt." + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "Als dit een backup is, gemaakt door een andere backup-plugin, dan kan UpdraftPlus-Premium je misschien helpen." + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "Echter, UpdraftPlus-archiven zijn standaard zip/SQL-bestanden - als je er zeker van bent dat het bestand de juiste opmaak heeft, kun je het hernoemen om het aan dat het gewenste patroon aan te passen." + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "Dit bestand lijkt geen UpdraftPlus-backuparchief te zijn (zulke bestanden zijn zip- of gz-bestanden, die een naam hebben als: backup_(tijd)_(sitenaam)_(code)_(type).(zip|gz))." + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "Backup gemaakt door een onbekende bron (%s) - kan niet teruggezet worden." + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "De WordPress-contentmap (wp-content) is niet gevonden in dit zipbestand." + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "Deze versie van UpdraftPlus weet niet hoe om te gaan met dit type vreemde backup." + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "%s gaf een onverwacht HTTP-antwoord: %s" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "De UpdraftPlus-module om bestanden te benaderen (%s) ondersteunt het weergeven van een bestandslijsten niet." + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "Er zijn geen instellingen gevonden" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "Na het scannen van de externe opslag zijn een of meer backups toegevoegd; let op: deze backups worden niet automatisch verwijderd door de 'retain'-instellingen; deze backups dienen handmatig verwijderd te worden." + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "Opnieuw zoeken naar backup-sets op lokale en externe opslag..." + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "(Lees meer)" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "Multisite-paden instellen" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "Sla alle meldingen op in de systeem-log (meestal willen alleen serverbeheerders dit)" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "Voeg er nog een toe..." + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "Verwijderen" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "Andere %s-FAQ's." + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "Vink dit aan om meer informatie en e-mails over het backupproces te ontvangen - handig als er iets fout gaat." + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "Als je meerdere bestanden/directories invoert, scheid ze dan met een komma. Gebruik a* aan het begin of einde als wildcard voor het toplevel." + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "Aangepaste gegevens voor de plugin 'contenttype-beheerder' gevonden: de optiecache wordt geleegd" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "De hostingprovider moet deze functies activeren voordat %s kan werken." + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "De PHP-installatie van de webserver heeft deze functies uitgeschakeld: %s." + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "Versleutelde FTP (expliciete encryptie)" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "Versleutelde FTP (impliciete encryptie)" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "Reguliere niet-versleutelde FTP" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "Backup gemaakt door:" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "Beschikbaar om op te vragen op deze site" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "Gelieve te vernieuwen om toegang tot support te onderhouden." + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "De betaalde toegang tot UpdraftPlus-support zal binnenkort verlopen." + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "Vernieuw om weer toegang te krijgen." + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "De betaalde toegang tot UpdraftPlus-support is verlopen." + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "De betaalde toegang tot UpdraftPlus-updates voor deze site zal binnenkort verlopen." + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "Om toegang te behouden, updates (inclusief nieuwe functies en compatibiliteit met toekomstige WordPress-versies) en ondersteuning te blijven ontvangen, gelieve te vernieuwen." + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "De betaalde toegang tot UpdraftPlus-updates voor %s van de %s add-ons op deze website zal binnenkort verlopen." + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "De betaalde toegang tot UpdraftPlus-updates voor add-ons %s op deze website is verlopen." + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "Om opnieuw toegang te krijgen tot updates (inclusief toekomstige functies en compatibiliteit met toekomstige WordPress-versies) en ondersteuning, gelieve te vernieuwen." + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "De betaalde toegang tot UpdraftPlus-updates voor deze site is verlopen. Je zult niet langer updates van UpdraftPlus ontvangen." + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "Toon dit niet meer op het Dashboard (gedurende %s weken)" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "De poging de dubbele compressie ongedaan te maken is gelukt." + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "De poging de dubbele compressie ongedaan te maken is mislukt." + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "Dit databasebestand lijkt twee keer gecomprimeerd te zijn - waarschijnlijk was de webserver van de website waarvan je dit bestand gedownloadet hebt, verkeerd geconfigureerd." + +#: admin.php:1528 +msgid "Constants" +msgstr "Constantes" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "Het databasebestand kon niet geopend worden om uit te lezen:" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "Geen databasetabellen gevonden" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "Wacht tot de geplande poging" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "Weet dat waarschuwingsberichten enkel een advies zijn - ze stoppen het maken van de backup niet. Ze geven alleen informatie die nuttig zou kunnen zijn, of die een indicatie kan geven over de bron van een probleem, mocht de backup mislukken." + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "Database-queries uitgevoerd: %d in %.2f seconden" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "Zoeken en vervangen bereikte rij: %d" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "Deze tabel overslaan: gegevens in deze tabel (%s) mogen niet gezocht/vervangen worden" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "Geen plaats meer op dit account: er zijn slechts %d bytes over van het account %s, terwijl er van het te uploaden bestand nog %d bytes resten (totale grootte: %d bytes)" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "Er zijn fouten opgetreden:" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "Klik op deze link om het logbestand voor deze terugplaatsing te downloaden (nodig voor eventuele supportaanvragen)." + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "Bekijk dit ook in de FAQ." + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "Als je geen externe opslag kiest, blijven de backups op de webserver. Dit is niet aan te bevelen (tenzij je van plan bent de bestanden handmatig naar de computer te kopiëren), omdat ook de backups verloren gaan wanneer de webserver offline gaat." + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "Ophalen (indien nodig) en backup-bestanden voorbereiden..." + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "De PHP-instellingen op deze webserver staan PHP toe slechts %s seconden te werken en staan niet toe dat deze limiet verhoogd wordt. Als je veel te importeren gegevens hebt, en als de terugzet-actie de tijd overschrijdt, moet je de hostingprovider vragen of het mogelijk is deze limiet te verhogen (of probeer de terugzet-actie op te delen)." + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "Er bestaan niet-verwijderde mappen van een vorige terugzet-actie (gelieve de knop 'Verwijder oude mappen' te gebruiken vooraleer opnieuw te proberen): %s" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "De toegestane werkingstijd voor WordPress-plugins is zeer kort (%s seconden) - je kunt deze het beste verhogen om te vermijden dat backups mislukken door tijdgebrek (neem contact op met de hostingprovider voor hulp - het betreft de PHP-instelling 'max_execution_time'; de aanbevolen waarde is %s seconden of meer)." + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "Vervangen in de blogs-/site-tabel: van: %s naar: %s" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "%s: Cachebestand overslaan (bestaat nog niet)" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "Deze plugin is uitgeschakeld: %s: schakel hem weer met de hand in als je klaar bent." + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "De connectie %s duurde te lang; als je de server correct opgegeven hebt, wordt dit vaak veroorzaakt door de firewall die de verbinding blokkeert - je kunt dit het beste navragen bij de hostingprovider." + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "Het huidige thema is niet gevonden; om te vermijden dat dit ervoor zorgt dat de site site stopt met laden, is het thema teruggezet naar het standaardthema." + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "Terugzetactie mislukt..." + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "Berichten:" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "Er is een SQL-regel gevonden die groter is dan de maximum-pakketgrootte en die kan niet gesplitst worden; deze regel zal genegeerd worden: %s" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "Deze directory bestaat niet" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "E-mailadres van de nieuwe gebruiker" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "Gebruikersnaam van de nieuwe gebruiker" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "Beheerder-API-sleutel" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "Beheerder-gebruikersnaam" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "VS- of GB-Rackspace-account" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "Voer de gebruikersnaam/API-sleutel van de Rackspace-beheerder in (zo kan Rackspace de toestemming om nieuwe gebruikers aan te maken, autoriseren), en voer een nieuw(e) (unieke) gebruikersnaam en e-mailadres in voor de nieuwe gebruiker, en een containernaam." + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "Maak een nieuwe API-gebruiker en -container aan" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "API-sleutel: %s" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "Wachtwoord: %s" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "Gebruikersnaam: %s" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "Cloud-bestanden-operatie mislukt (%s) " + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "Conflict: die gebruiker of dat emailadres bestaat al" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "Je moet een geldig nieuw e-mailadres invoeren" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "Je moet een container invoeren" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "Je moet een nieuwe gebruikersnaam invoeren" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "Je moet een beheerder-API-sleutel invoeren" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "Je moet een beheerder-gebruikersnaam invoeren" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "Maak een nieuwe API-gebruiker aan met toegang tot alleen deze container (niet tot het hele account) " + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "Voegt verbeterde mogelijkheden toe voor gebruikers van 'Rackspace Cloud Files'" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "Rackspace Cloud Files, enhanced" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "'Cloud Files'-container" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "Sleutel voor 'Cloud Files'-API" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "Gebruik deze add-on om een nieuwe Rackspace-API-subgebruiker en API-sleutel aan te maken die toegang geeft tot alleen deze Rackspace-container." + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "'Cloud Files'-gebruikersnaam" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "Londen (LON)" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "Hongkong (HKG)" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "Noord-Virginia (IAD) " + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "Chicago (ORD)" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "Sydney (SYD)" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "Dallas (DFW) (standaard)" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "Regio van 'Cloud Files'-opslag" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "Accounts gemaakt op rackspacecloud.com zijn VS-accounts; accounts gemaakt op rackspace.co.uk zijn GB-accounts" + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "Op de VS of GB gebaseerd Rackspace-account" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "Accounts gemaakt op rackspacecloud.com zijn VS-accounts; accounts gemaakt op rackspace.co.uk zijn GB-accounts" + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "Autorisatie mislukt (controleer de inloggegevens) " + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "Er is een onbekende fout opgetreden tijdens het verbinding maken met UpdraftPlus.com" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "Creëren" + +#: admin.php:556 +msgid "Trying..." +msgstr "Proberen..." + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "Het RackSpace-console-wachtwoord van de nieuwe gebruiker is (dit wordt niet opnieuw getoond):" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "(indien gedecodeerd)" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "Foutgegevens:" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "Backup bestaat niet in de backup-geschiedenis" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "De WordPress-installatie bevat oude mappen van voor de terugzet-/migratieactie (technische informatie: deze hebben het achtervoegsel -old). Je kunt het beste op deze knop drukken om die bestanden te verwijderen, zodra je gecontroleerd hebt dat de terugzetactie gelukt is." + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "Splits de regel om overschrijding van de maximumpakketgrootte te vermijden" + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "De databasegebruiker heeft geen recht om tabellen te wissen. We proberen het terugzetten opnieuw door simpelweg deze tabellen leeg te maken; dit zou moeten werken als je terugzet van een WordPress-versie met dezelfde databasestructuur (%s)" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "Nieuwe tabelprefix: %s" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "Bestandsrechten staan niet toe dat de oude gegevens verplaatst en behouden worden; in pllats daarvan zullen ze worden verwijderd." + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "%s: Deze directory bestaat al en zal vervangen worden" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "De bestanden konden niet verplaatst worden. Controleer de bestandsrechten." + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "De nieuwe bestanden konden niet op hun plaats gezet worden. Controleer de wp-content/upgrade-map." + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "Oude bestanden konden niet weggehaald worden." + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "Oude gegevens weghalen..." + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "Nog een adres toevoegen..." + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "Voer hier adressen in om een rapport heen te sturen als de backuptaak voltooid is." + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "E-mailrapporten" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "%s checksum: %s" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "bestanden: %s" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "Gebruik de sectie 'Rapporteren' om het e-mailadres in te stellen dat gebruikt moet worden." + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr "(met waarschuwingen (%s))" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr "(met fouten (%s))" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "Foutopsporingsinformatie" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "Geüploadet naar:" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "Tijdsduur:" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "Waarschuwingen" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "Fouten" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "Fouten/waarschuwingen:" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "Bevat:" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "Backup begon op:" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "Backuprapport" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "%d uren, %d minuten, %d seconden" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "%d fouten, %d waarschuwingen" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "%s autorisatie" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "%s fouten: %s" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "%s logo" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "%s gaf niet het verwachte resultaat - kijk de logbestanden na voor meer details." + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "De vereiste PHP-module %s is niet geïnstalleerd - vraag de hostingprovider om deze ín te schakelen" + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "Voor meer opties, gebruik de add-on '%s." + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "Het e-mailadres van de websitebeheerder (%s) wordt gebruikt." + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "Verbinden" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "Gebruik de addon 'Rapportage' voor meer rapportageopties, ." + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "(versie: %s)" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "Wees je ervan bewust dat e-mailservers meestal een limiet hebben; meestal rond de %s MB; backups groter dan die limiet komen waarschijnlijk niet aan." + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "Als de e-mail-opslagemethode geactiveerd is, stuur dan ook de gehele backup" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "Laatste status:" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "Backup bevat:" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "Gebackupt: %s" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "Het logbestand zit in de bijlage van deze email." + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "Onbekende/onverwachte fout - gelieve een supportverzoek in te dienen" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "Alleen database (bestanden maakten geen deel uit van de planning)" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "Database (backup van bestanden is nog niet klaar)" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "Alleen bestanden (de database maakte geen deel uit van deze planning)" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "Bestanden (database-backup is nog niet klaar)" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "Bestanden en database" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "(Dit is van toepassing op alle WordPress-backupplugins, tenzij ze expliciet voor multisitecompatibiliteit gemaakt zijn)." + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "Zonder te upgraden stelt UpdraftPlus elke blogbeheerder, die de plugin-instellingen kan veranderen, in staat een backup te maken van het het hele netwerk (met toegang tot alle gegevens, inclusief wachtwoorden), en terug te zetten (inclusief aanpassingen, zoals veranderde wachtwoorden) ." + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "WordPress-mutlisite wordt ondersteund, met extra functies, door UpdraftPlus-Premium, of de Multisite-add-on." + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "Dit is een WordPress-multisite-installatie (te weten een netwerk)." + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "UpdraftPlus-waarschuwing:" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "(of maak verbinding, gebruikmakend van het formulier op deze pagina, als je hem al gekocht hebt)" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "klik op deze link om de plugin bij te werken, zodat deze ook geactiveerd wordt" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "klik op deze link om de plugin bij te werken, zodat je deze ook krijgt" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "laatste" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "Versie: %s" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "Je hebt het" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "UpdraftPlus-support" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "Er is een update beschikbaar met de add-ons voor UpdraftPlus - klik hier om bij te werken." + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "UPdraftPlus-add-ons" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "Er is een update beschikbaar voor UpdaftPlus - klik hier om bij te werken." + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "UpdarftPlus.com gaf een reactie, maar die is niet duidelijk" + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "Je e-mailadres en wachtwoord worden niet herkend door UpdraftPlus.com" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "UpdraftPlus.com gaf een antwoord dat niet niet duidelijk is (data: %s)" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "UpdraftPlus.com heeft gereageerd, maar de reactie is niet duidelijk" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "Het is niet gelukt contact te maken met UpdraftPlus.com" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "Rapportage" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "Opties (raw)" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "Stuur alleen een rapport als er waarschuwingen/fouten zijn" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "Content-URL:" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "Zie ook de add-on 'Meer bestanden' in onze winkel." + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "De vrije ruimte bij de hostingprovider is zeer laag - er is slechts %s MB over" + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "De hoeveelheid geheugen (RAM) die toegekend is voor PHP is zeer laag (%s MB) - verhoog deze limiet om toekomstige fouten door te weinig geheugen te voorkomen (neem contact op met de hostingprovider voor meer hulp)" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "De add-ons beheren" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "Koop hem" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "Haal hem op in de UpdraftPlus.com-winkel" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "activeer hem op deze site" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "Je hebt een niet-actieve aankoop" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "Toegewezen aan deze site" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "Beschikbaar voor deze site (dmv de aankoop van alle add-ons)" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "(blijkbaar een pre-release of ingetrokken release)" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "Ga hierheen" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "Hulp nodig?" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "Er is een fout opgetreden tijdens de poging de add-ons op te halen." + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "Er is een onbekend antwoord ontvangen; het antwoord was:" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "Claim afgewezen - de inloggegevens zijn onjuist" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "Een moment geduld, we zijn de claim aan het indienen..." + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "Er zijn fouten opgetreden tijdens het verbinden met UpdraftPlus.com:" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "Je bent op dit moment niet verbonden met een UpdraftPlus.com-account." + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "Als je nieuwe add-ons hebt aangeschaft, gebruik dan de volgende link om de verbinding te vernieuwen" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "Je bent nu verbonden met een UpdraftPlus.com-account." + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "Meer weten over de UpdraftPlus.com-wachtwoordbeveiliging? Lees er hier meer over." + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "Gegevens vergeten?" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "Nog geen account? Maak er gratis een aan." + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "Verbinding maken met het UpdraftPlus.com-account" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "De PHP-versie op de webserver is te oud (" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "Je hebt een verouderde versie van de Updraft-plugin geïnstalleerd - wellicht heb je de versies met elkaar verward." + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "Klik hier om de installatie te beginnen." + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "UpdraftPlus is nog niet geïnstalleerd." + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "Klik hier om het te activeren." + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "UpdraftPlus is nog niet geactiveerd." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "Klik hier om verbinding te maken." + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "Je bent nog niet verbonden met het UpdraftPlus.com-account, dus kun je nog geen lijst zien van aangeschafte add-ons." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "Zonder gaat versleuteling een stuk langzamer." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "De module %s is niet geïnstalleerd op de webserver." + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "(Je lijkt al geautoriseerd te zijn, maar je kunt je natuurlijk opnieuw aanmelden als er een probleem optreedt)." + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "Plaats backupbestanden hier" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "Beheer WordPress vanaf de opdrachtprompt - dat scheelt een hoop tijd" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "Ontdek WordShell" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "Als je meer functies of betaalde, gegarandeerde support wilt, kijk dan op UpdraftPlus.com" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "De webserver gaf een foutcode terug (probeer opnieuw of ga de logbestanden van de webserver na)" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "Het terugzetten is begonnen. Klik niet op 'Stop' en sluit de browser niet totdat de melding verschijnt dat het terugzet-proces afgerond is." + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "Als je zowel bestanden als de database uitsluit, heb je alles uitgesloten." + +#: restorer.php:1596 +msgid "Site home:" +msgstr "Homepage van de site:" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "Opties externe opslag" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "(logbestanden zijn zoals gewoonlijk te vinden op de pagina 'UpdraftPlus-instellingen')..." + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "Onthoud deze keuze voor de volgende keer (je kunt dit uiteraard altijd aanpassen)" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "Uploaden mislukt" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "Je kunt een backup naar meer dan één locatie sturen met een add-on." + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "Let op: de voortgangsbalk hieronder is gebaseerd op stadia, NIET op tijd. Stop de backup niet omdat het lijkt alsof de overblijvende hoeveelheid een tijdje constant blijft - dat is normaal." + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "(%s%%, bestand %s van %s)" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "Lees meer over hoe dit werkt..." + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "Mislukt: inloggen was mogelijk, maar het aanmaken van een bestand op die locatie niet." + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "Mislukt: het inloggen en bestanden verplaatsen naar de aangeduide locatie was mogelijk, maar het aanmaken van een bestand op die locatie niet." + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "Gebruik SCP in plaats van SFTP" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "Instelling SCP/SFTP-gebruiker" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "Instelling SCP/SFTP-host" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "De poging om de backup mbv e-mail te versturen is mislukt (waarschijnlijk was de backup te groot voor deze methode)" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "Backup is van: %s." + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "Testresultaat van instelling %s:" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "(Nog niet klaar)" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "Als je meer backups ziet dan verwacht, dan is dat waarschijnlijk omdat het verwijderen van oude backups niet gebeurt tot een nieuwe backup klaar is." + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "Plaats hem niet in de uploads- of plugins-map, dat zou tot recursie leiden (een backup van een backup van een backup van...)." + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "Hier zal UpdraftPlus de zip-bestanden wegschrijven die het oorspronkelijk aanmaakt. Deze map moet beschrijfbaar gemaakt zijn door de webserver. Hij staat onder de content-map (die standaard wp-content heet)." + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "Taak-ID: %s" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "laatste activiteit: %ss geleden" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "volgende hervatting: %d (na %ss)" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "Onbekend" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "Backup klaar" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "Wachten tot het geplande tijdstip om een nieuwe poging als gevolg van fouten te doen" + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "Oude backupsets verwijderen" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "Bestanden uploaden naar de externe opslag" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "Versleutelde database" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "Database versleutelen" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "Database-backup gemaakt" + +#: admin.php:3359 +msgid "table: %s" +msgstr "tabel: %s" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "Database-backup aan het creëren" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "Bestandenbackup-zips gecreëerd" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "Bestandenbackup-zips creëren" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "Backup is begonnen" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "Backup bezig:" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "De planner is uitgeschakeld in de WordPress-installatie als gevolg van de instelling 'DISABLE_WP_CRON'. Er kunnen geen backups gemaakt worden (zelfs niet met 'Backup nu'), tenzij je op een geavanceerde manier de planner handmatig benadert, of totdat deze instelling weer aangezet is." + +#: restorer.php:646 +msgid "file" +msgstr "bestand" + +#: restorer.php:639 +msgid "folder" +msgstr "map" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "UpdraftPlus moest een %s maken in de content-directory, maar dat is mislukt - controleer de bestandsrechten en schakel toegang in (%s)" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "De backup is niet afgemaakt; er is een hervatting gepland" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "Deze website wordt weinig bezocht en UpdraftPlus krijgt niet de verwachte middelen; leest aub deze pagina:" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "De autorisatie %s kon niet gestart worden omdat iets anders op de site dat voorkomt. Probeer de andere plugins te deactiveren en naar het standaardthema over te schakelen. (Meer bepaald, je moet op zoek naar de component die output verstuurt (waarschijnlijk PHP-waarschuwingen/fouten) voordat de pagina begint. Het uitzetten van foutopsporingsinstellingen kan ook helpen)." + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "De PHP-geheugenlimiet (bepaald door de hostingprovider) is zeer laag. UpdraftPlus probeerde het te verhogen maar dat mislukte. Deze plugin kan problemen ondervinden met een geheugenlimiet van minder dan 64 MB - zeker als je zeer grote bestanden geüploadet hebt (anderzijds, veel sites werken perfect met een 32MB-limiet - mogelijk is dat hier anders)." + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "Ga door met updaten" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "Annuleer niet nadat je op 'Ga door' hieronder hebt geklikt - wacht tot de backup klaar is." + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "Automatische backups door UpdraftPlus" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "Er zijn fouten opgetreden:" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "Bezig een backup te maken met UpdraftPlus..." + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "Automatische backup" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "Bezig een database-backup te maken met UpdraftPlus..." + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "Je hebt niet voldoende rechten om deze site te updaten." + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "thema's" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "plugins" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "Starten van automatische backup..." + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "Backup aan het maken van %s en de database met UpdraftPlus..." + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Backup (relevante) plugins, thema's en de WordPress-database automatisch met UpdraftPlus voordat je een update uitvoert" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "Stop wanneer je niet zeker weet wat je doet; je zou de hele WordPress-installatie kunnen ruïneren. " + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "Dit lijkt geen geldige WordPress-core-backup - het bestand %s ontbreekt." + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "Zip-bestand kan niet geopend worden (%s) - vooraf scannen om de integriteit te controleren niet mogelijk." + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "Zip-bestand niet leesbaar (%s) - vooraf scannen om de integriteit te controleren niet mogelijk." + +#: admin.php:2310 +msgid "More plugins" +msgstr "Meer plugins" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "Support" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "UpdraftPlus heeft geen tabel-prefix gevonden tijdens het scannen van de database-backup." + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "Er ontbreken essentiële WordPress-tabellen in deze database-backup: %s" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "Je importeert een nieuwere WordPress-versie (%s) in een oudere (%s). Er is geen garantie dat WordPress hier goed mee om kan gaan." + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "De database is te klein om een geldige WordPress-database te kunnen zijn (grootte: %s kB)." + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "Thema bijwerken" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "Plugin bijwerken" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "Altijd veilig met een automatische backup" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "Afwijzen (voor %s weken)" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "Upload-pad (%s) bestaat niet - resetten (%s)" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "Als je deze tekst nog steeds kunt lezen nadat de pagina is geladen, dan is er op de site een probleem met JavaScript of jQuery." + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "Het bestand is geüploadet." + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "Status van onbekende serverreactie:" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "Onbekende reactie van de server:" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "Deze decodeersleutel wordt geprobeerd:" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "Klik op deze link om het database-bestand te decoderen en te downloaden naar de computer." + +#: admin.php:584 +msgid "Upload error" +msgstr "Uploadfout" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "Dit bestand lijkt geen versleuteld databasebestand van UpdraftPlus te zijn (zo'n bestand, een gz.crypt-bestand, heeft bijvoorbeeld als naam: 'backup(tijd)_(sitenaam)_(code)_db.crypt.gz)'." + +#: admin.php:582 +msgid "Upload error:" +msgstr "Uploadfout:" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "(controleer of het zip-bestand, dat je probeerde te uploaden, gecreëerd is met UpdraftPlus)" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "en dan, als je wilt," + +#: admin.php:572 +msgid "Download to your computer" +msgstr "Naar de computer downloaden" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "Van de webserver verwijderen" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "Voorbeelden van S3-compatibele opslagproviders:" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "Er zal geen archief verwijderd worden na het uitpakken, omdat er geen cloudopslag is voor deze backup" + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "In deze multi-archief-set lijken een of meerdere archieven te ontbreken." + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "(%d archieven in de set)." + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "Splits archieven om de:" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "Fout: de webserver stuurde een onbegrijpelijke JSON-reactie." + +#: admin.php:563 +msgid "Warnings:" +msgstr "Waarschuwingen:" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "Fout: de server heeft een lege reactie gestuurd." + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "Dit lijkt een bestand te zijn dat gegenereerd is door UpdraftPlus, maar de installatie kent dit type object: %s niet. Mogelijk moet je nog een add-on installeren." + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "De backup-archiefbestanden zijn verwerkt, maar met enkele fouten. Je moet annuleren en eerst de problemen corrigeren alvorens opnieuw te proberen." + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "De backup-archiefbestanden zijn verwerkt, maar met waarschuwingen. Als alles in orde is, klik dan nu op 'Zet terug' om verder te gaan. Als dat niet zo is, annuleer dan en corrigeer de problemen eerst." + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "De backup-archiefbestanden zijn met succes verwerkt. Klik op 'Zet terug' om verder te gaan." + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "De multi-archief-backupset lijkt de volgende archieven te missen: %s" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "Bestand (%s) gevonden, maar met een andere bestandsgrootte (%s) dan verwacht (%s) - het bestand is mogelijk beschadigd." + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "Bestand gevonden, maar het heeft een grootte van 0 (je moet het opnieuw uploaden): %s" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "Bestand niet gevonden (je moet het uploaden): %s" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "Een dergelijk backupbestand bestaat niet" + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "Het backuparchief voor dit bestand is niet gevonden. De externe opslagmethode (%s) die gebruikt wordt, staat het niet toe de bestanden op te halen. Om toch te kunnen terugzetten met behulp van UpdraftPlus, haal je handmatig de bestanden op en plaats deze in de werkmap van UpdraftPlus." + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "Het verplaatsen van de map is mislukt (controleer bestandsrechten en diskquotum): %s" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "Het verplaatsen van het bestand is mislukt (controleer bestandsrechten en diskquotum): %s" + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "Uitgepakte backup op zijn plaats zetten..." + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "Openen van zip-bestand (%s) mislukt - %s" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "Rootdirectory van de WordPress-server: %s" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "eindpunt %s" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "... en veel meer." + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "S3 (compatibel)" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "Bestand is lokaal niet aanwezig - moet opgehaald worden van de externe opslag" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "Archief %s aan het opzoeken: bestandsnaam: %s" + +#: admin.php:4836 +msgid "Final checks" +msgstr "Eindcontroles" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "Vink dit aan om overbodige backupbestanden van de server te verwijderen als het backupproces afgerond is (als je dit niet inschakelt, blijven bestanden die naar een externe locatie zijn verzonden ook lokaal opgeslagen, en er gelden geen retentielimieten voor lokale bestanden)." + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "Plaats hier de versleutelde databasebestanden (db.gz.crypt-bestanden) die je wilt uploaden ter ontsleuteling." + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "Het server-pad van de wp-content-directory is: %s" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "Onbewerkte backupgeschiedenis" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "Toon onbewerkte backup- en bestandenlijst" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "Bestanden verwerken - even geduld..." + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "Bekijk deze FAQ voor hulp." + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "De WordPress-installatie heeft een probleem met het toevoegen van extra blanco ruimte. De backups die je hiervandaan downloadt kunnen daardoor beschadigd zijn." + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "Database-bestand openen is mislukt." + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "Het schrijven van de ontsleutelde database naar het bestandssysteem is mislukt." + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "Bekende backups (onbewerkt)" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "Het opsommen van bestanden in die map is niet mogelijk." + +#: restorer.php:939 +msgid "Files found:" +msgstr "Gevonden bestanden:" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "Directory gebruiken uit de backup: %s" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "De gevraagd tabel-engine (%s) is niet beschikbaar - overstappen naar MyISAM" + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "Dit lijkt op een migratie (de backup is afkomstig van een site met een ander(e) adres/url), maar je hebt de optie 'zoek-en-vervang' in de database niet geselecteerd. Dit is meestal een vergissing." + +#: admin.php:4908 +msgid "file is size:" +msgstr "Bestand heeft grootte:" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "Ga hierheen voor meer informatie." + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "Sommige bestanden worden nog gedownloadet of verwerkt - even geduld." + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "De backupset is afkomstig van een andere site - dit is geen terugzet-actie maar een migratie. Je hebt de migratie-add-on nodig om dit te kunnen uitvoeren." + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "De tijdzone die gebruikt wordt is de tijdzone van de WordPress-instellingen, te vinden onder Instellingen => Algemeen." + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "Voer de tijd in volgens formaat UU:MM (bijv. 14:22)." + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "Upload %s is mislukt" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "Inlogfout %s" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "Je lijkt niet aangemeld te zijn bij %s" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "Er was geen toegang tot %s tijdens het verwijderen (zie logbestand voor meer details)" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "Je lijkt niet ingelogd te zijn op %s (tijdens het verwijderen)" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "Dropbox-fout: %s (zie logbestand voor meer details)" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "Fout - het downloaden van het bestand van %s is mislukt" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "Fout - een dergelijk bestand bestaat niet op %s" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "Fout %s" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "Fout %s - bestand uploaden mislukt " + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "Fout %s - het samenvoegen van deelbestanden is mislukt" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "Het aanmelden op %s is mislukt" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "Fout: %s" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "De opgegeven backupdirectory bestaat, maar je hebt er geen schrijfrechten." + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "De opgegeven backupdirectory bestaat niet." + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "Waarschuwing: %s" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "Laatst uitgevoerde backuptaak:" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "Zeer groot bestand gevonden: %s (grootte: %s MB)" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "%s: onleesbaar bestand - kan niet gebackupt worden" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "Tabel %s heeft erg veel rijen (%s) - hopelijk verschaft de hostingprovider voldoende bronnen om zoveel data uit die tabel in de backup te plaatsen" + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "Er is een fout opgetreden tijdens het sluiten van het laatste databasebestand" + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "Er zijn waarschuwingen:" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "De backup is geslaagd (met waarschuwingen) en is nu afgerond" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "De vrije schijfruimte is erg beperkt - nog maar %s MB beschikbaar" + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "Nieuwe site:" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "FOUT: Site-URL is al in gebruik." + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "Gemigreerde site (van UpdraftPlus)" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "Geef aan waar deze nieuwe site moet komen in de multisite-installatie:" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "Er is informatie nodig om verder te gaan:" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "Het netwerk activeert thema:" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "Uitgevoerde plugin:" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "Controleer de schrijfrechten: het maken en openen van een nieuwe directory is mislukt:" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "Sommige servers claimen dat er versleutelde FTP beschikbaar is, maar geven (na lange tijd) een time-out als je het probeert te gebruiken. Als dit optreedt, ga dan naar 'Expert-opties\" (onderaan) en schakel daar SSL uit." + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "Er ontbreekt een noodzakelijke module (%s) in de PHP-installatie op de webserver. Neem contact op met de hostingprovider en vraag deze module in te schakelen." + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "Controleer de inloggegevens." + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "De door %s gerapporteerde fout was:" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "Vul de gevraagde informatie in, en ga daarna verder." + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "Er kunnen geen tabellen gedropt worden, in plaats daarvan worden ze verwijderd (%s)" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "Het aanmaken van nieuwe tabellen is mislukt, commando (%s) wordt overgeslagen" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "Site-informatie:" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "De databasegebruiker heeft niet de rechten die nodig zijn om een tabel aan te maken. We proberen terug te zetten door simpelweg de tabellen leeg te maken. Dit zou moeten werken als a) je terugzet vanaf een WordPress-versie met dezelfde databasestructuur, en b) de geïmporteerde database geen tabellen bevat die niet reeds aanwezig zijn in de huidige." + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "Waarschuwing:" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "Je hebt een WordPress-multisite-installatie maar de backup is niet van een multisite-installatie." + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "Het importeren van de WordPress-core wordt overgeslagen bij het importeren van een enkele-site-installatie in een multisite-installatie. Mocht je iets essentieels in de WordPress-map hebben staan, dan kun je dat handmatig toevoegen vanuit het zip-bestand." + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "Er ontbreekt een (voor %s) vereiste module (%s) in de PHP-installatie van de webserver. Neem contact op met de supportafdeling van de hostingprovider en vraag deze module te activeren." + +#: admin.php:596 +msgid "Close" +msgstr "Sluiten" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "Onverwachte reactie:" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "Om mail naar meer dan één adres te sturen scheid je de adressen met een komma." + +#: admin.php:576 +msgid "PHP information" +msgstr "PHP-informatie" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "uitvoerbaar zip-bestand gevonden:" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "Toon PHP-informatie (phpinfo)" + +#: admin.php:2627 +msgid "Get it here." +msgstr "Hier te verkrijgen." + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "Probeer dan de 'Migratie'-add-on. Na de eerste keer gebruiken heb je de aankoopprijs al terugverdiend, zeker als je de tijd die het kost om de website met de hand te kopiëren, in aanmerking neemt." + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "Wil je de site migreren of dupliceren/klonen? " + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "Lees dit artikel door om te zien hoe het stap voor stap gedaan wordt." + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "De site migreren" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "Verwijderen... het kan even duren voordat de communicatie met de externe opslag is afgerond." + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "Ook verwijderen van externe opslag" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "Laatste nieuws van UpdraftPlus.com:" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "Klonen/migreren" + +#: admin.php:2304 +msgid "Premium" +msgstr "Premium-versie" + +#: admin.php:2305 +msgid "News" +msgstr "Nieuws" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "Backup-set niet gevonden" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "%s - Dit kan niet gebackupt worden; de corresponderende directory (%s) bestaat niet" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "RSS-link" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "Blog-link" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "Abonneer je op het UpdraftPlus-blog om nieuws en aanbiedingen te ontvangen" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "%s-instellingen testen..." + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "Je kunt ze ook handmatig in de UpdraftPlus-directory plaatsen (meestal 'wp-content/updraft'), bijvoorbeeld mbv FTP, en vervolgens hierboven op 'Opnieuw scannen' klikken." + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "De foutopsporings-modus van UpdraftPlus is actief. Je ziet mogelijk ook foutopsporingsinformatie van andere plugins die je geïnstalleerd hebt. Controleer goed of de opmerking waaraan je refereert, echt afkomstig is van UpdraftPlus, voordat je een supportaanvraag indient." + +#: admin.php:880 +msgid "Notice" +msgstr "Opmerking" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "Opgetreden fouten:" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "Opnieuw scannen (zoeken naar backups die je handmatig naar de interne backupopslag geüploadet hebt)..." + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "Begonnen met zoeken naar dit gegeven" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "Opslaan in" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "\"%s\" heeft geen primaire sleutel, handmatige aanpassing van rij %s is vereist." + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "aantal rijen: %d" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "Verstreken tijd (in seconden):" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "Fouten:" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "Uitgevoerde SQL-update-commando's:" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "Gemaakte aanpassingen:" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "Onderzochte rijen:" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "Onderzochte tabellen:" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "Er kan geen lijst met tabellen gemaakt worden" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "Database-zoek-en-vervang: vervang %s in de backup-dump door %s" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "Waarschuwing: de site-url in de database (%s) is anders dan verwacht (%s)" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "Niets te doen: de site-URL is al: %s" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "Fout: onverwachte lege parameter (%s, %s)" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "Deze optie is niet geselecteerd" + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "Database: zoek en vervang site-URL" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "Mislukt: het teruggemelde resultaat van operatie %s is niet duidelijk." + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "Mislukt: de opdracht %s kon niet gestart worden." + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "(meer te weten komen)" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "Zoek en vervang site-locatie in de database (migreren)" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "Alle verwijzingen in de database naar deze site-locatie zullen worden vervangen door de huidige site-url: %s" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "Site-uploads" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "Dringend aangeraden plugins" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "Je hebt niet het recht deze pagina te openen." + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "Je hebt niet voldoende rechten om deze pagina te openen." + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "Multisite-installatie" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "met ingang van de volgende keer is het" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "Mislukt: het poortnummer moet een geheel getal zijn." + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "wachtwoord" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "gebruikersnaam" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "Hostnaam" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "Naar welke directory gaan na inloggen - meestal is dit t.o.v. de hoofdmap." + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "Pad naar directory" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "Wachtwoord" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "Poort" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "Host" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "Fout %s: download mislukt" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "Controleer de bestandsrechten: creëren en invoeren niet mogelijk van:" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "Geen %s gevonden" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "Standaard wordt expliciete versleuteling gebruikt. Om impliciete versleuteling te gebruiken (poort 990), voeg je hieronder :990 toe aan het FTP-server-adres." + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "Versleutelde FTP is beschikbaar en zal automatisch als eerste geprobeerd wordt (voordat er wordt teruggevallen op een niet-versleutelde verbinding), tenzij je dat hebt uitgeschakeld in de expert-opties. De knop 'Test FTP-login' helpt je om te zien welk type FTP-verbinding er gebruikt wordt." + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "Geen backup gemaakt van de directories %s: er is niets gevonden om te backuppen" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "Wees voorzichtig met wat je invoert - als je op Enter drukt, wordt er daadwerkelijk geprobeerd een zip-bestand aan te maken met daarin de complete webserver." + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "Als je dit gebruikt, voer dan een absoluut pad in (dus niet relatief t.o.v. de WordPress-installatie)." + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "Als je niet zeker weet waar deze optie toe dient, kun je hem beter niet gebruiken en zou je hem moeten uitzetten." + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "Open de directory:" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "Meer bestanden" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "WordPress-core (inclusief eventuele andere onderdelen in de WordPress-rootdirectory)" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "Bovenstaande bestanden bevatten alles van een WordPress-installatie." + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "'wp-config.php' overschrijven" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "WordPress-core" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "Mislukt: er kon geen bestand in die map geplaatst worden - controleer de inloggegevens" + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "Mislukt" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "WebDAV-URL" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "Lokaal schrijven mislukt: download mislukt" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "Fout bij het openen van een bestand op de server: download mislukt" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "Deelbestand %s: Er is een fout %s opgetreden" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "Er zijn geen instellingen %s gevonden" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "Mislukt: er is met succes ingelogd maar er kon geen bestand aangemaakt worden in de aangegeven directory." + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "Gelukt: er is met succes ingelogd en de mogelijkheid een bestand aan te maken in de aangegeven directory (inlog-type) is bevestigd:" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "Mislukt: er kon niet ingelogd worden met die gegevens." + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "Mislukt: geen serverdetails beschikbaar." + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "Moet al bestaan" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "Als je versleuteling wilt gebruiken (bv. als je gevoelige zakelijke informatie wilt opslaan), dan is daar een add-on voor beschikbaar." + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "Alleen niet-versleutelde FTP wordt ondersteund door de standaardversie van UpdraftPlus" + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "De %s accountnaam: %s" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "hoewel een deel van de teruggemelde informatie niet was als verwacht - kan jouw inschatting anders zijn" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "Je hebt het account %s geautoriseerd" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "is daar een add-on voor." + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "Als je meerdere sites in dezelfde Dropbox wilt opslaan en deze wilt indelen in submappen, dan " + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "De backups zijn opgeslagen in" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "Wilt je submappen gebruiken?" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "Fout: het uploaden van een bestand naar %s is mislukt (zie het logboek voor meer info)" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "Je bent kennelijk niet geregistreerd bij Dropbox" + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "De communicatie met %s was niet versleuteld." + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "De communicatie met %s was versleuteld." + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "Er was toegang tot de container en het was mogelijk bestanden erin aan te maken." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "De container kon met succes kunnen benaderd worden, maar de poging een bestand aan te maken is mislukt." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "Mislukt" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "Mislukt: De toegang tot of het aanmaken van de container is mislukt. Controleer de toegangsgegevens en als deze correct zijn, kies dan een andere container-naam (aangezien een andere gebruiker %s de gekozen naam wellicht al heeft vastgelegd)." + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "Regio" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "Mislukt: Er zijn geen details van de container opgegeven." + +#: methods/s3.php:961 +msgid "API secret" +msgstr "API-geheim" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "Voer alleen een naam in voor een container en evt. een pad. Voorbeelden: 'mijncontainer', 'mijncontainer/mijnpad'" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "Locatie %s" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "Geheime sleutel %s" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "Toegangssleutel %s" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "Als je een fout ziet over SSL-certificaten, ga dan hierheen voor hulp." + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "Gebruik de toegangssleutel en geheime sleutel van de %s console en kies vervolgens een (unieke - alle %s gebruikers) naam voor de data-container (letters en cijfers) (en optioneel een pad) om te gebruiken voor de opslag. Als de data-container nog niet bestaat wordt deze aangemaakt." + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "Fout %s: de toegang tot de data-container %s is mislukt. Controleer de bestandsrechten en inloggegevens. " + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "Fout %s: downloaden van %s is mislukt. Controleer de bestandsrechten en inloggegevens." + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "Fout %s bij het opnieuw samenvoegen (%s): (zie logbestand voor meer details)" + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "%s upload (%s): opnieuw samenvoegen mislukt (zie logbestand voor meer details)" + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "%s deelbestand %s: upload mislukt" + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "Fout %s: bestand %s werd onverwacht ingekort" + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "Upload %s: het ophalen van een upload-ID voor multipart-upload is mislukt - zie logbestand voor meer details" + +#: methods/email.php:69 +msgid "Note:" +msgstr "Opmerking:" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "WordPress-backup" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "Toegang tot de container mogelijk evenals het aanmaken van bestanden erin." + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "'Cloud Files'-fout - toegang tot de container mogelijk, maar het maken van een bestand erin is mislukt" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "Mislukt: geen containerdetails ingevoerd." + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "Gebruikersnaam" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "API-sleutel" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "Mislukt: er is geen %s opgegeven." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "De UpdraftPlus-module %s vereist %s. Maak geen support-ticket aan; er is geen alternatief voor deze module." + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "'Cloud Files'-container" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "API-key voor 'Cloud Files'" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "'Cloud Files'-gebruikersnaam" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "UK" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "VS (standaard)" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "VS- of UK-cloud" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "Je moet ook deze belangrijke FAQ lezen." + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "Haal de API-key op bij via de 'Rackspace-cloud'-console (instructies vind je op ). Kies vervolgens een containernaam om te gebruiken voor de opslag. Als de container nog niet bestaat, wordt hij aangemaakt." + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "Instellingen %s testen" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "Fout bij het downloaden van extern bestand: download mislukt (" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "Fout met het openen van een lokaal bestand: download mislukt" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "'Cloud Files'-fout - bestand uploaden mislukt" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "Fout %s: uploaden mislukt" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "Fout %s: lokaal bestand kan niet geopend worden" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "'Cloud Files'-fout - het aanmaken en openen van de container is mislukt" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "Autorisatie bij 'Cloud Files' mislukt" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "Nadat je de instellingen opgeslagen hebt (door hieronder op 'Bewaar wijzigingen' te klikken), kom je hier weer terug en klik je op deze link om de autorisatie bij Google af te ronden." + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "Autoriseren bij Google" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "Client-geheim" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "Als Google later het bericht toont 'invalid_client', dan heb je hier een ongeldig client-ID ingevoerd." + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "Client-ID" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "Je moet het volgende toevoegen als de geautoriseerde doorstuur-URI (onder 'Meer opties'), als daarom gevraagd wordt." + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "Selecteer 'Webapplicatie' als type toepassing." + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "Volg deze link voor meer hulp, inclusief schermafbeeldingen. De omschrijving hieronder is voldoende voor meer ervaren gebruikers." + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "%s is een goede keuze, aangezien UpdraftPlus in stukken verdeelde uploads ondersteunt - het maakt niet uit hoe groot de site is, UpdraftPlus kan hem in kleine stukjes uploaden, zonder last te krijgen van time-outs." + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "Het account is niet geautoriseerd." + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "Upload naar %s mislukt" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "De accountruimte is vol: er nog maar %d bytes over op het account %s, maar het te uploaden bestand is %d bytes groot" + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "Nog geen toegangs-token van Google ontvangen - je moet (opnieuw) autoriseren om verbinding te maken met Google-Drive." + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "Je heb het account %s geautoriseerd." + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "Gelukt" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "Het %s quotaverbruik: %s %% gebruikt, %s beschikbaar" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "Autorisatie mislukt" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "Er is geen ververs-'token' ontvangen van Google. Dit betekent meestal dat er een verkeerd 'client-secret' ingevoerd is of dat je (hieronder) nog niet opnieuw geautoriseerd hebt na correctie ervan. Controleer nogmaals en klik dan op de link voor bevestiging. Als dat niet werkt, gebruik dan de expertmodus om alle instellingen te wissen en een nieuw Google-client-ID/secret aan te maken en opnieuw te starten." + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "klik op deze link om hem op te halen" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "%s-support is beschikbaar als add-on" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "Je hebt de UpdraftPlus-uitbreiding %s niet geïnstalleerd - haal hem op van %s" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "Je moet je opnieuw aanmelden bij %s, aangezien de huidige inloggegevens niet werken." + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "Ok" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "Tabel-prefix is veranderd: %s tabelveld(en) worden dienovereenkomstig aangepast:" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "Klaar: aantal verwerkte regels: %d in %.2f seconden" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "de uitgevoerde database-query was:" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "wordt teruggezet als:" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "Oude tabel-prefix:" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "Backup van:" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "Database-toegang: de directe toegang tot MySQL is niet beschikbaar, dus we vallen terug op 'wpdb' (dit is aanzienlijk trager)" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "Het openen van het databasebestand is mislukt" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "Het vinden van het databasebestand is mislukt" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "Waarschuwing: PHP-'safe_mode' is actief op de server. De kans op timeouts is daardoor groot. Als er een timeout optreedt, zul je handmatig moeten terugzetten mbv phpMyAdmin of op een andere manier." + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "'wp-config.php' uit de backup: terugzetten (op verzoek van de gebruiker)" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "'wp-config.php' uit de backup: wordt teruggezet als 'wp-config-backup.php'" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "Het schrijven van een gedecodeerde database naar het bestandssysteem is mislukt" + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "Het aanmaken van een tijdelijke directory is mislukt" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "De werk-directory kon niet verwijderd worden na het terugzetten." + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "De oude directory kan niet verwijderd worden." + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "Rommel opruimen..." + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "De database wordt teruggezet (op een grote site kan dit lang duren). Als er een timeout optreedt, wat kan gebeuren als de hostingprovider het aantal serverbronnen beperkt heeft, dien je een andere manier te gebruiken, bijvoorbeeld mbv phpMyAdmin..." + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "Database succesvol gedecodeerd." + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "Database decoderen (kan even duren)..." + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "Backup uitpakken..." + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "Kopiëren mislukt." + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "Backup-bestand niet beschikbaar." + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "UpdraftPlus kan dit type bestand niet direct terugzetten. Het moet handmatig teruggezet worden." + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "Een van de terug te zetten bestanden kon niet gevonden worden" + +#: admin.php:5009 +msgid "Error message" +msgstr "Foutmelding" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "De backup-gegevens bevatten geen informatie over de precieze grootte van dit bestand." + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "De verwachte grootte van het archief is:" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "Vermeld de volgende informatie als je een supportverzoek indient:" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "Annuleren: Er kon geen informatie gevonden worden over welke gegevens teruggezet moeten worden." + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "UpdraftPlus-terugzetproces: voortgang" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "Deze backup komt niet voor in de backup-geschiedenis - terugzetproces afgebroken. Tijdstempel:" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "Nadat je op deze knop geklikt hebt, krijg je de optie te kiezen welke componenten je wilt terugzetten" + +#: admin.php:4572 +msgid "Press here to download" +msgstr "Klik hierop om de download te starten" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "Deze backupset verwijderen" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "Goed nieuws: communicatie met %s kan worden versleuteld. Kijk in de 'Expert-instellingen' voor meer hulp, als je problemen tegenkomt die te maken hebben met versleuteling, ." + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "De PHP/Curl-installatie van de webserver staat https-toegang niet toe. Daarom is er geen toegang mogelijk tot %s. Neem contact op met de supportafdeling van de hostingprovider. %s vereist Curl+HTTPS. Dien geen supportverzoek in bij UpdraftPlus; er is geen alternatief beschikbaar." + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "De PHP/Curl-installatie ondersteunt https-toegang niet. Communicatie met %s zal niet versleuteld worden. Vraag de webhost Curl/SSL te installeren om versleutelde toegang te kunnen gebruiken (mbv een add-on)." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "Er ontbreekt een vereiste module (%s) in de PHP-installatie van de webserver. Neemt contact op met de supportafdeling van de hostingprovider." + +#: admin.php:4062 +msgid "Save Changes" +msgstr "Wijzigingen opslaan" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "Door deze optie te selecteren verminder je de veiligheid doordat UpdraftPlus gedwongen wordt geen SSL meer te gebruiken tijdens het aanmelden en het versleuteld verzenden. Sommige cloudopslag-providers (zoals Dropbox) staan dit overigens niet toe." + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "Schakel SSL waar mogelijk volledig uit" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "Niet alle cloudbackup-methodes vereisen SSL-autorisatie." + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "Door deze optie te kiezen wordt de beveiliging verminderd, omdat UpdraftPlus niet langer de identiteit van versleutelde websiteverbindingen (zoals Dropbox en Google Drive) controleert. Dat betekent dat UpdraftPlus SSL alleen zal gebruiken voor het versleutelen van het verkeer, niet voor autorisatie." + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "Controleer de SSL-certificaten niet" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "Standaard maakt UpdraftPlus gebruik van zijn eigen SSL-certificaatcollectie om de identiteit van externe sites vast te stellen (dus om zeker te weten dat er gecommuniceerd wordt met Dropbox, Amazon-S3, enz. en niet met een aanvaller). We houden deze uiteraard up-to-date. Mocht je desondanks een SSL-fout krijgen, kies dan voor deze optie (die ervoor zorgt dat UpdraftPlus de collectie van de webserver zal gebruiken)." + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "Gebruik het SSL-certificaat van de server" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "Als dat niet lukt, controleer dan de rechten op de server of kies een andere directory waarin je wel schrijfrechten hebt voor het webserver-proces." + +#: admin.php:3697 +msgid "click here" +msgstr "klik hier" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "of om deze optie te resetten" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "Je hebt schrijfrechten in de aangegeven backup-directory, dat is goed." + +#: admin.php:4009 +msgid "Backup directory" +msgstr "Backup-directory" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "Lokale backup verwijderen" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "Klik hier om verdere opties te tonen; negeer dit, tenzij je een probleem ondervindt of nieuwsgierig bent." + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "Toon de expert-instellingen" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "Expert-instellingen" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "Foutopsporings-modus" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "Geavanceerde/Foutopsporings-instellingen" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "Verzoek om backup te starten..." + +#: admin.php:591 +msgid "Cancel" +msgstr "Annuleren" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "Geen" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "Kies de externe opslag" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "Decodeer een database-backupbestand handmatig" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "Frase voor database-versleuteling" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "E-mailadres" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "Bovenstaande mappen omvatten alles, behalve de WordPress-core zelf. Die kun je downloaden van nl.wordpress.org." + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "Sluit deze uit:" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "Andere mappen, gevonden binnen wp-content" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "Insluiten in bestanden-backup" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "Bv als de server overdag bezet is en je wilt de backup 's nachts uitvoeren" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "Om het tijdstip te verbeteren waarop een backup plaats moet vinden," + +#: admin.php:3683 +msgid "Monthly" +msgstr "Maandelijks" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "Om de 14 dagen" + +#: admin.php:3681 +msgid "Weekly" +msgstr "Wekelijks" + +#: admin.php:3680 +msgid "Daily" +msgstr "Dagelijks" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "Download-logboek" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "De map bestaat, maar de webserver heeft niet de juiste rechten om naar deze map te schrijven." + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "De map is aangemaakt, maar de bestandsrechten moesten aangepast worden naar 777 (door iedereen beschrijfbaar) om bestanden naar de map te kunnen schrijven. Neem contact op met de hostingprovider om te controleren of dit geen problemen oplevert." + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "Het verzoek aan het bestandssysteem de directory aan te maken, is mislukt." + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "Verwijderen" + +#: admin.php:3418 +msgid "show log" +msgstr "toon het logboek" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "Dit zal alle UpdraftPlus-instellingen verwijderen - weet je zeker dat je dit wilt?" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "tellen" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "N.B. Deze telling is gebaseerd op wat wel of wat niet uitgesloten was de laatste keer dat je de opties hebt opgeslagen." + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "Totale gegevensgrootte op de schijf (ongecomprimeerd):" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "Nee" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "Ja" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "%s-versie:" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "Huidig geheugengebruik" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "Piekgebruik van geheugen" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "Webserver:" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "Bekijk UpdraftPlus-Premium of de stand-alone Multisite-add-on." + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "Heb je support voor WordPress-multisite nodig?" + +#: admin.php:2654 +msgid "Multisite" +msgstr "Multisite" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "Een eenmalige backup uitvoeren" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "Lees beslist dit informatieve artikel met handige die je moet weten voordat je gaat terugzetten." + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "Je kunt zoek-en-vervang (voor migratie van een website naar een nieuwe locatie of url) gebruiken voor de database met behulp van de Migratie-addon - klik op deze link voor meer informatie" + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "%s terugzet-optie's:" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "Je zult handmatig terug moeten zetten." + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "Het volgende kan niet automatisch worden teruggezet: \"%s\"." + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "De zogenoemde PHP-optie 'safe_mode' is actief op de webserver." + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "Kies de terug te zetten componenten" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "Het terugzetten zorgt ervoor dat de thema's, plugins, uploads, databases en/of andere contentmappen vervangen worden (afhankelijk van de mappen/bestanden die aanwezig zijn in de backup-set en van de selectie)." + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "Backup terugzeten vanaf" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "Backup terugzetten" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "Backupset verwijderen" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "Downloadfout: de server stuurde een reactie die onduidelijk is." + +#: admin.php:570 +msgid "You should:" +msgstr "Je moet:" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "Fout:" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "berekenen..." + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "UpdraftPlus - backup-bestanden uploaden" + +#: admin.php:3020 +msgid "refresh" +msgstr "verversen" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "Webserver-opslagruimte in gebruik door UpdraftPlus" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "Google-Drive" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "Als je dit gebruikt, schakel dan de Turbo/Road-modus uit." + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "Browser Opera" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "Meer taken:" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "Het meest recente logbestand downloaden" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "(Nog niets in het logboek)" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "Laatste logboek-bericht" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "Terugzetten" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "Nu een backup maken" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "Database" + +#: admin.php:229 +msgid "Files" +msgstr "Bestanden" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "Volgende geplande backups" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "Op hetzelfde moment als de backup van de bestanden" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "Momenteel niets gepland" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "Dit beheerderscherm maakt intensief gebruik van JavaScript. Je moet het of activeren in de browser of een browser gebruiken die JavaScript ondersteunt." + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "JavaScript-waarschuwing" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "De oude mappen verwijderen" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "De huidige limiet is:" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "De backup is teruggezet." + +#: admin.php:2310 +msgid "Version" +msgstr "Versie" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "Homepage van de hoofdontwikkelaar" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "De instellingen zijn gewist." + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "De backup-directory is met succes aangemaakt." + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "De backup-directory kon niet aangemaakt worden" + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "Het verwijderen van de oude mappen mislukte om de een of andere reden. Je kunt dit ook handmatig doen." + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "Oude mappen met succes verwijderd" + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "Oude mappen verwijderen" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "Terugkeren naar de UpdraftPlus-configuratie" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "Acties" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "Terugzetten gelukt" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "Formaat bestandsnaam niet correct - dit ziet er niet uit als een versleuteld bestand dat is aangemaakt door UpdraftPlus" + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "Formaat bestandsnaam niet correct - dit ziet er niet uit als een bestand dat aangemaakt is door UpdraftPlus" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "Er is geen lokale kopie aanwezig." + +#: admin.php:2072 +msgid "Download in progress" +msgstr "Download bezig" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "Bestand gereed." + +#: admin.php:2043 +msgid "Download failed" +msgstr "Download mislukt" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "Fout" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "Die taak is niet te vinden - wellicht is hij al afgerond..." + +#: admin.php:1854 +msgid "Job deleted" +msgstr "Taak verwijderd" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "Als het goed is zie je binnen enkele seconden iets gebeuren in het veld 'Laatste logboekbericht' hieronder." + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "Nog niets gelogd" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "Raadpleeg deze FAQ als je problemen met backuppen ondervindt." + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "De website is gehost op de webserver %s." + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "UpdraftPlus ondersteunt niet officieel versies van WordPress ouder dan %s. Het zou kunnen werken, maar als dat niet het geval is, wees je er dan van bewust dat er geen ondersteuning beschikbaar is totdat de WordPress-versie bijgewerkt is." + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "Je hebt minder dan %s vrije ruimte om te gebruiken voor het creëren van backups op de schijf waarop UpdraftPlus ingesteld is. UpdraftPlus zou ruimte tekort kunnen komen. Neem contact op met de beheerder van de server (bv de hostingprovider) om dit probleem op te lossen." + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "Waarschuwing" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "Add-ons/Pro-support" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "Instellingen" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "Toegestane bestanden" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "Zip-bestand %s kon niet worden aangemaakt. Raadpleeg het logbestand voor meer informatie." + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "Oneindige recursie: raadpleeg het logboek voor meer informatie" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "Bezoek UpdraftPlus.com voor hulp, add-ons en support" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "Heb je nog meer functies en ondersteuning nodig? Kijk dan eens naar UpdraftPlus-Premium." + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "Steun UpdraftPlus aub met een positieve beoordeling op wordpress.org" + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "Bevalt UpdraftPlus je en heb je een minuutje?" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "Kunt je vertalen? Wil je UpdraftPlus verbeteren voor Nederlandstalige gebruikers?" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "Bestand niet gevonden" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "De gebruikte decodeersleutel:" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "Decoderen mislukt. Waarschijnlijk heb je een verkeerde sleutel ingevoerd." + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "Decoderen mislukt. Het databasebestand is versleuteld, maar je hebt geen decodeersleutel ingevoerd." + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "Het backupbestand kon niet geopend worden om het te beschrijven" + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "De backup-geschiedenis kon niet opgeslagen worden, omdat er geen backupreeks is. De backup is waarschijnlijk mislukt." + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "De directory kon niet uitgelezen worden" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "Je hebt geen schrijfrechten in de backupdirectory (%s), of hij bestaat niet." + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "De WordPress-backup is gereed" + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "De backup-poging is afgerond, zo te zien zonder succes." + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "De backup is zo te zien geslaagd, en is nu afgerond." + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "Fout tijdens het versleutelen van de database. Versleuteling afgebroken." + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "Er kunnen geen bestanden aangemaakt worden in de backupmap. Backup afgebroken - controleer de UpdraftPlus-instellingen." + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "Overig" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "Uploads" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "Thema's" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "Plugins" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "Geen logbestanden gevonden." + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "Het logboekbestand kon niet uitgelezen worden." + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "UpdraftPlus-opmerking:" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "UpdraftPlus-backups" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-nn_NO.mo b/plugins/updraftplus/languages/updraftplus-nn_NO.mo new file mode 100644 index 0000000..e69de29 diff --git a/plugins/updraftplus/languages/updraftplus-nn_NO.po b/plugins/updraftplus/languages/updraftplus-nn_NO.po new file mode 100644 index 0000000..e69de29 diff --git a/plugins/updraftplus/languages/updraftplus-no.mo b/plugins/updraftplus/languages/updraftplus-no.mo new file mode 100644 index 0000000..6168e12 Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-no.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-no.po b/plugins/updraftplus/languages/updraftplus-no.po new file mode 100644 index 0000000..e6ec8fb --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-no.po @@ -0,0 +1,6109 @@ +# Translation of UpdraftPlus in Norwegian +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2014-09-15 06:53:58+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: no\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "" + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "" + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "" + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "" + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "" + +#: addons/webdav.php:91 +msgid "Path" +msgstr "" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "" + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "" + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "" + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "" + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "" + +#: admin.php:2310 +msgid "FAQs" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "" + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "" + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "" + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "" + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "" + +#: methods/ftp.php:355 +msgid "login" +msgstr "" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "" + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "" + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "" + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "" + +#: admin.php:2604 +msgid "Now" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "" + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "" + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "" + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "" + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "" + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "" + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "" + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "" + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "" + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "" + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "" + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "" + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "" + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "" + +#: admin.php:3420 +msgid "stop" +msgstr "" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "" + +#: admin.php:3092 +msgid "this backup set" +msgstr "" + +#: admin.php:3020 +msgid "calculate" +msgstr "" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "" + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "" + +#: admin.php:601 +msgid "Saving..." +msgstr "" + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:557 +msgid "Fetching..." +msgstr "" + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "" + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "" + +#: admin.php:2884 +msgid "Dismiss" +msgstr "" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "" + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "" + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "" + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "" + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "" + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "" + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "" + +#: admin.php:3860 +msgid "File Options" +msgstr "" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "" + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "" + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "" + +#: admin.php:5157 +msgid "settings" +msgstr "" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "" + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "" + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "" + +#: admin.php:442 +msgid "Extensions" +msgstr "" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "" + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "" + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "" + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "" + +#: addons/azure.php:524 +msgid "container" +msgstr "" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "" + +#: addons/azure.php:523 +msgid "optional" +msgstr "" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "" + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "" + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "" + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "" + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "" + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "" + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "" + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "" + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "" + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "" + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "" + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "" + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "" + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "" + +#: restorer.php:767 +msgid "Deferring..." +msgstr "" + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "" + +#: admin.php:3081 +msgid "Deselect" +msgstr "" + +#: admin.php:3080 +msgid "Select all" +msgstr "" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "" + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "" + +#: admin.php:634 +msgid "For backups older than" +msgstr "" + +#: admin.php:633 +msgid "week(s)" +msgstr "" + +#: admin.php:632 +msgid "hour(s)" +msgstr "" + +#: admin.php:631 +msgid "day(s)" +msgstr "" + +#: admin.php:630 +msgid "in the month" +msgstr "" + +#: admin.php:629 +msgid "day" +msgstr "" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "" + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "" + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "" + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "" + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "" + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "" + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "" + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "" + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "" + +#: admin.php:607 +msgid "Update quota count" +msgstr "" + +#: admin.php:606 +msgid "Counting..." +msgstr "" + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "" + +#: admin.php:603 +msgid "Connecting..." +msgstr "" + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "" + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "" + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "" + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "" + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "" + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "" + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "" + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "" + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "" + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "" + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "" + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "" + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "" + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "" + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "" + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "" + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "" + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "" + +#: admin.php:4423 +msgid "Site" +msgstr "" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "" + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "" + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "" + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "" + +#: admin.php:617 +msgid "Deleting..." +msgstr "" + +#: admin.php:616 +msgid "key name" +msgstr "" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "" + +#: admin.php:611 +msgid "Creating..." +msgstr "" + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "" + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "" + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "" + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "" + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "" + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "" + +#: addons/migrator.php:1861 +msgid "key" +msgstr "" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "" + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "" + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "" + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "" + +#: admin.php:608 +msgid "Adding..." +msgstr "" + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "" + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "" + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "" + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "" + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "" + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "" + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "" + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "" + +#: methods/email.php:73 +msgid "configure it here" +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "" + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "" + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "" + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "" + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "" + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "" + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "" + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "" + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "" + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "" + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "" + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "" + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "" + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "" + +#: admin.php:2831 +msgid "Personal support" +msgstr "" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "" + +#: admin.php:2718 +msgid "Get it from" +msgstr "" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "" + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "" + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "" + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "" + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "" + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "" + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "" + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "" + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "" + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "" + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "" + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "" + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "" + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "" + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "" + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "" + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "" + +#: admin.php:4368 +msgid "Backup date" +msgstr "" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "" + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "" + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "" + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "" + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "" + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "" + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "" + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "" + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "" + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "" + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "hoppa over (ikkje på lista)" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "Søk og erstatt tabell:" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "" + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "Berre desse tabellane" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "Rader pr gruppe" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "LinkedIn" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "Google+" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "Facebook" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "Twitter" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "Kvifor ser eg dette?" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "Plasseringa til denne katalogen er definert i ekspertinnstillingane, under fana Innstillingar." + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "Trykk her for å sjå inni UpdraftPlus katalogen (på ditt webhotell) for eventuelle nye backupsett som du har lasta opp." + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "Start backup" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "Du brukar %s webserveren, men det virkar ikkje som %s modulen er lasta." + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "Du må ta kontakt med din webhotell-leverandør for å finne ut korleis du gjev ein WordPress-utvidelse tillatelser til å skrive til katalogen." + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "Dersom du ikkje har problem, kan du sjå vekk frå alt her." + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "Denne fila kunne ikkje lastast opp" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "Du finn meir informasjon om dette i kategorien Innstillingar." + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "Desse backup utvidelsane er støtta: %s" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "Var dette ein sikkerheitskopi oppretta av ein annen backup utvidelse? Dersom ja, må du kanskje endre navnet på den slik at den kan gjenkjennast - vær vennleg å følg denne linken." + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "Fortel meg meir om inkrementell sikkerheitskopiering" + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "Minnegrense" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "gjenoppretting" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "Tabeller som implisitt vil bli droppa: %s" + +#: backup.php:829 +msgid "Incremental" +msgstr "inkrementell" + +#: backup.php:829 +msgid "Full backup" +msgstr "Fullstendig sikkerheitskopi" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "fortset no med oppdateringa..." + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "(sjå logg...)" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "Vellykka sikkerheitskopi" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "Kvar %s time" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "Søk og erstatt" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "Start" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "Eit søk/bytte kan ikke gjerast om att - er du sikker på at du vil gjere dette?" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "Dette kan lett øydelegge sida di. Brukast med forsiktigheit!" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "Erstatt med" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "Søk etter" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "Søk / erstatt database" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "søkeord" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "For mange database-feil har oppstått -avslutter" + +#: backup.php:895 +msgid "read more at %s" +msgstr "les meir på %s" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "E-post-rapportar frå UpdraftPlus (gratis utgåva) kjem med dei siste UpdraftPlus.com nyhendene" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "N.B. Dersom du installerer UpdraftPlus på fleire WordPress nettsider, så må opprette eit nytt prosjekt på din Google API konsoll for kvar nettside." + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "Du har ikkje sikkerheitskopiert endå." + +#: admin.php:3872 +msgid "Database Options" +msgstr "Database alternativ" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "Utvidelsar for feilsøking:" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "%s (%s brukt)" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "Ledig lagringsplass på kontoen:" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "Denne knappen er deaktivert fordi sikkerheitskopi katalogen er skrivebeskytta (sjå under innstillingar)" + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "Eksisterande sikkerheitskopiar" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "Gjeldande status" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "Dersom du vil endre nokon av standardinnstillingene for hva som blir sikkerheitskopiert, for å konfigurere planlagte sikkerheitskopiar, for å sende dine sikkerheitskopiar til ekstern lagring (anbefalast), og meir, gå til fana innstillingar." + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "For å ta ein sikkerheitskopi, trykk på sikkerheitskopier no knappen." + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "Velkomen til UpdraftPlus!" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "" + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "Testar..." + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "" + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "Sikkerheitskopier ekstern database" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "" + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "" + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "" + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "Tilkobling feila." + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "Tilkobling var vellykka." + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "" + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "%s tabell(er) er funnet." + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "Tilkobling til database feila" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "databasenavn" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "vert" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "brukar" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "Ekstern database (%s)" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "" + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "" + +#: admin.php:4499 +msgid "External database" +msgstr "Ekstern database" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "" + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "Ta sikkerheitskopi av fleire databasar" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "" + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "Den kan også ta sikkerheitskopi av eksterne databasar." + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "Ønskjer du ikkje å bli spionert på? UpdraftPlus Premium kan kryptere din sikkerheitskopi av databasen." + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "bruk UpdraftPlus Premium" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "" + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "" + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "" + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "" + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "I %s skiller banenamna mellom store og små bokstavar." + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "Dersom du lar det stå tomt, så vil sikkerheitkopien bli plassert i rota av %s" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "t.d. %s" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "Om ikkje mappa eksisterer allerede, så vil den bli oppretta." + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "Skriv inn stien til %s mappa som du ønskjer å nytte her." + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "" + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "" + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "" + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "" + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "" + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "" + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "" + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "" + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "" + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "" + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "" + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "" + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "" + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "" + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "" + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "" + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "" + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "" + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "" + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "" + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "" + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "" + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "" + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "" + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "" + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "" + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "" + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "" + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "" + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "" + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "" + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "" + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "" + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "" + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "" + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "" + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "" + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "" + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "" + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "" + +#: admin.php:1528 +msgid "Constants" +msgstr "" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "" + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "" + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "" + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "" + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "" + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "" + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "" + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "" + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "" + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "" + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "E-post adresse for ny brukar" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "Brukarnamn for ny brukar" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "Admin API nøkkel" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "Admin Brukarnamn" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "US eller UK Rackspace konto" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "Skriv inn ditt Rackspace admin brukernamn / API-nøkkel (slik at Rackspace kan kontrollere om du har rettigheiter til å opprette nye brukarar), og skriv inn eit nytt (unikt) brukarnavn og e-postadresse for den nye brukeren og eit \"container\"-namn." + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "Opprett ny API-bruker og \"container\"" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "API-nøkkel: %s" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "Passord: %s" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "Brukarnavn: %s" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "Cloud Files operasjonen var misslykka (%s)" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "Konflikt: denne brukaren eller e-postadressa finnast frå før" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "Du må skrive inn ei gyldig e-post adresse" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "Du må skrive inn ein \"container\"" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "Du må skrive inn eit nytt brukarnamn" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "Du må skrive inn ein admin API nøkkel" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "Du må skrive inn eit admin brukarnamn" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "Opprett ein ny API brukar, med tilgang berre til denne \"containeren\" (i staden for heile kontoen din)" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "Tilfører utvida moglegheiter for Rackspace Cloud Files brukarar" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "Rackspace Cloud Files, utvida" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "" + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "" + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "" + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "" + +#: admin.php:556 +msgid "Trying..." +msgstr "" + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "" + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "" + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "" + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "" + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "" + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "" + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "" + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "" + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "" + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "" + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr "" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr "" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "" + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "" + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "" + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "" + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "" + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "" + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "" + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "" + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "" + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "" + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "" + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "" + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "" + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "" + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "" + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "" + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "" + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "" + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "" + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "" + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "" + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "" + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "" + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "" + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "" + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "" + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "(logg finn du som vanleg i UpdraftPlus på innstillingssida) ..." + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "Hugs dette valet til neste gang (du vil fortsatt ha moglegheiter til å endre det)" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "" + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "" + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "Les meir om korleis dette virkar..." + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "" + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "" + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "" + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "" + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "" + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "" + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "" + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "" + +#: admin.php:3359 +msgid "table: %s" +msgstr "" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "" + +#: restorer.php:646 +msgid "file" +msgstr "" + +#: restorer.php:639 +msgid "folder" +msgstr "" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "" + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "" + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "Fortsett med oppdateringa" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "Ikkje avbryt etter å ha trykt Fortsett nedanfor - vent på at sikkerheitskopien er fullført." + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "UpdraftPlus Automatisk Sikkerheitskopi" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "Ein feil har oppstått:" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "Opprettar sikkerheitskopi med UpdraftPlus..." + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "Automatisk sikkerheitskopi" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "Opprettar sikkerheitskopi av databasen med UpdraftPlus..." + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "Du har ikkje dei nødvendige rettane forl å kunne oppdatere denne nettsida." + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "tema" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "utvidelsar" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "Startar automatisk sikkerheitskopiering..." + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "Opprette %s og sikkerheitskopi av database med UpdraftPlus ..." + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Automatisk sikkerheitskopier (der dette er relevant) innstikk, tema og WordPress database med UpdraftPlus før du oppdaterer" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "" + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "" + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "" + +#: admin.php:2310 +msgid "More plugins" +msgstr "" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "" + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "" + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "" + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "" + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "" + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "" + +#: admin.php:584 +msgid "Upload error" +msgstr "" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "" + +#: admin.php:582 +msgid "Upload error:" +msgstr "" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "" + +#: admin.php:572 +msgid "Download to your computer" +msgstr "" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "" + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "" + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "" + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "" + +#: admin.php:563 +msgid "Warnings:" +msgstr "" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "" + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "" + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "" + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "" + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "" + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "" + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "" + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "" + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "" + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "" + +#: admin.php:4836 +msgid "Final checks" +msgstr "" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "" + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "" + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "" + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "" + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "" + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "" + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "" + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "" + +#: restorer.php:939 +msgid "Files found:" +msgstr "" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "" + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "Dette ser ut som en migrasjon (denne sikkerheitskopien er fra ei nettside med ei anna adresse / URL), men du sjekka ikkje muligheiten for å søkje-og-erstatte databasen. Det er vanlegvis feil." + +#: admin.php:4908 +msgid "file is size:" +msgstr "" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "" + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "" + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "" + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "Tidssona som er brukt er frå dine innstillingar i WordPress, i Settings -> General." + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "Lagre i formatet HH:MM (t.d. 14:22)." + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "" + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "" + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "" + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "" + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "" + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "Ny nettside:" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "FEILMELDING: Nettside URL er allerede i bruk." + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "Migrert nettside (frå UpdraftPlus)" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "Oppgi detaljar om kor denne nye nettsida er inne på din \"multisite\" installasjon" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "Informasjon som ein treng for å kunne fortsette:" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "Prosessert innstikk:" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "" + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "" + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "" + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "" + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "" + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "" + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "" + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "" + +#: admin.php:596 +msgid "Close" +msgstr "" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "" + +#: admin.php:576 +msgid "PHP information" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "" + +#: admin.php:2627 +msgid "Get it here." +msgstr "" + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "" + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "" + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "" + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "" + +#: admin.php:2304 +msgid "Premium" +msgstr "" + +#: admin.php:2305 +msgid "News" +msgstr "" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "" + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "" + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "" + +#: admin.php:880 +msgid "Notice" +msgstr "" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "" + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "Lagre hos" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "" + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "" + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "" + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "" + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "(lær meir)" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "Søk etter og erstatt nettside URL i databasen (migrer)" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "I databasen vil alle referansar til nettsida si plassering bli erstatta med din gjeldande nettside URL. Den er: %s" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "" + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "" + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "" + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "" + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "" + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "" + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "" + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "" + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "" + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "" + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "" + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "" + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "" + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "" + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "" + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "" + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "" + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "" + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "" + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "" + +#: methods/s3.php:961 +msgid "API secret" +msgstr "" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "" + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "" + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "" + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "" + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "" + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "" + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "" + +#: methods/email.php:69 +msgid "Note:" +msgstr "" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "" + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "" + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "" + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "" + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "" + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "" + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "" + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "" + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "" + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "" + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "" + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "" + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "" + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "" + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "" + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "" + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "" + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "" + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "" + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "" + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "" + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "" + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "" + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "" + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "" + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "" + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "" + +#: admin.php:5009 +msgid "Error message" +msgstr "" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "" + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "" + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "" + +#: admin.php:4572 +msgid "Press here to download" +msgstr "" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "" + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "" + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "" + +#: admin.php:4062 +msgid "Save Changes" +msgstr "" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "" + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "" + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "" + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "" + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "" + +#: admin.php:3697 +msgid "click here" +msgstr "" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "" + +#: admin.php:4009 +msgid "Backup directory" +msgstr "" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "" + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "" + +#: admin.php:591 +msgid "Cancel" +msgstr "" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "" + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "" + +#: admin.php:3683 +msgid "Monthly" +msgstr "" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "" + +#: admin.php:3681 +msgid "Weekly" +msgstr "" + +#: admin.php:3680 +msgid "Daily" +msgstr "" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "" + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "" + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "" + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "" + +#: admin.php:3418 +msgid "show log" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "" + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "" + +#: admin.php:2654 +msgid "Multisite" +msgstr "" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "" + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "" + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "" + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "" + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "" + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "" + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:570 +msgid "You should:" +msgstr "" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "" + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "" + +#: admin.php:3020 +msgid "refresh" +msgstr "" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "" + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "" + +#: admin.php:229 +msgid "Files" +msgstr "" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "" + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "" + +#: admin.php:2310 +msgid "Version" +msgstr "" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "" + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "" + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "" + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "" + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "" + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "" + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "" + +#: admin.php:2072 +msgid "Download in progress" +msgstr "" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "" + +#: admin.php:2043 +msgid "Download failed" +msgstr "" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "" + +#: admin.php:1854 +msgid "Job deleted" +msgstr "" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "" + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "" + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "" + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "" + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "" + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "" + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "" + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "" + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "" + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "" + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "" + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "" + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "" + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "" + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "" + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "" + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "" + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "" + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "" + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-pl_PL.mo b/plugins/updraftplus/languages/updraftplus-pl_PL.mo new file mode 100644 index 0000000..c240aa0 Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-pl_PL.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-pl_PL.po b/plugins/updraftplus/languages/updraftplus-pl_PL.po new file mode 100644 index 0000000..275692b --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-pl_PL.po @@ -0,0 +1,6109 @@ +# Translation of UpdraftPlus in Polish +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-11-03 19:22:48+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: pl\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "Twój adres IP:" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "Aby usunąć dowolny blok, przejdź tutaj." + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "Zwiększa to prawdopodobieństwo przekroczenia limitu czasu. Zalecamy wyłączenie trybu awaryjnego, lub przywracanie po jednej jednostce." + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "Aby naprawić ten problem, przejdź tutaj." + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "" + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "" + +#: addons/webdav.php:91 +msgid "Path" +msgstr "Ścieżka" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "Podaj dowolną ścieżkę w polu poniżej." + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "Nazwa hosta nie może zawierać ukośników." + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "Protokół (SSL lub nie)" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "" + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "Nie otrzymano danych odpowiedzi. Zazwyczaj przyczyną są problemy z łącznością sieciową (np. firewall wychodzący lub przeładowana sieć) pomiędzy tą stroną, a UpdraftPlus.com." + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "Nie znaleziono ustawień - przejdź do zakładki Ustawienia by sprawdzić swoje ustawienia" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "" + +#: admin.php:2310 +msgid "FAQs" +msgstr "FAQ" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "Nieznany status sprawdzania \"%s\"" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "Dostępna jest nowa wersja wtyczki." + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "Wtyczka jest aktualna." + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "Sprawdź uaktualnienia" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "Nie ma dostępnych dzienników zmian." + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "Jest to przydatne, jeśli zaplecze serwera WWW nie można kontaktować ruchu przychodzącego od tej strony (na przykład, gdy strona jest umieszczona w ogólne dostępnym internecie, jednakże zaplecze UpdraftCentral umieszczone jest na maszynie lokalnej [localhost], lub w intranecie, lub jeśli strona posiada zaporę ruchu wychodzącego) lub jeśli zaplecze strony deski nie posiada certyfikatu SSL." + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "Więcej informacji..." + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "Użyj alternatywnej metody nawiązywania połączenia z zapleczem." + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "Zaplecze na" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "Rozmiar klucza: %d bity(ów)" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "Klucz publiczny został wysłany do:" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "Nie można otworzyć katalogu (sprawdź prawa zapisu do pliku oraz właściciela pliku): %s" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "%s: nieczytelny plik - nie można wykonać jego kopii zapasowej (sprawdź prawa zapisu do pliku oraz właściciela pliku)" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "Utwórz klucz" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "wolniejsze, mocniejsze" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "zalecane" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "%s bajtów" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "szybsze (prawdopodobieństwo do spowolnienia instancji PHP)" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "łatwe do złamania, szybsze" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "%s bity" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "Rozmiar klucza szyfrującego:" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "Wybierz wybraną przez ciebie nazwę" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "Utwórz klucz: nadaj unikatową nazwę (np.: nazwa dla jakiej jest strony), następnie naciśnij \"Utwórz klucz\":" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "Oczekiwane niepowidzenie wysyłania: %s limit dla pojedynczego pliku jest %s, podcas gdy plik jest %s GB (%d bajty)" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "Czasami jest to spowodowane przez zaporę sieciową - spróbuj wyłączyć SSL w ustawieniach dla eskpertów i spróbuj ponownie." + +#: methods/ftp.php:355 +msgid "login" +msgstr "login" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "Należy pamiętać, że serwery pocztowe mają tendencję ograniczenia rozmiaru plików; zazwyczaj wokół %s MB; Kopie zapasowe większe niż jakiekolwiek limity nie zostaną dostarczone." + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "To archiwum kopii zapasowej jest wielkości %s MB - próba wysłania go poprzez e-mail prawdopodobnie się nie uda (tylko kilka serwerów poczty elektronicznej pozwala na załączniki tej wielkości). Jeśli tak, należy przełączyć się na inną metodę zdalnego przechowywania." + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "Rozmiar: %s MB" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "Inne (proszę określić np.: strona na której zainstalowałeś zaplecze UpdraftCentral)" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "np: masz już tam konto" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "UpdraftPlus podzieli archiwa kopii zapasowej, gdy przekroczy tę wielkość pliku. Domyślna wartość to %s megabajtów. Należy uważać, aby pozostawić pewien margines, jeśli serwer internetowy ma stały limit (na przykład 2 GB / 2048 MB limitu na niektórych serwerach 32-bit / systemach plików)." + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "Darmowe 1GB dla UpdraftPlus Vault" + +#: admin.php:2604 +msgid "Now" +msgstr "Teraz" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "Powinieneś włączyć %s aby umożliwić tworzenie ładnych odnośników (np.: %s)." + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "(kliknij na ikonę w celu wybrania lub odznaczenia)" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "%s za rok" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "lub (roczna zniżka)" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "Nie zostało znalezione połączenie połączenia Vault dla tej strony (zostało przeniesione?); należy odłączyć i ponownie podłączyć." + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "Podany plik nie został znaleziony lub nie można go odczytać." + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "UpdraftCentral (Dostęp zdalny)" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "pobierz..." + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "Wyświetl ostatnie zdarzenia dziennika UpdraftCentral" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "Nadrzędny adres URL" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "Wprowadź dowolny opis" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "Opis" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "Utwórz nowy klucz" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "Usuń..." + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "Utworzone: " + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "Dostęp do tej witryny jako użytkownik" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "Żadne klucze nie zostały utworzone." + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "Szczegóły" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "Opis klucza" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "Klucz został utworzony, jednakże próba zarejestrowania go z %s zakończyła się niepowodzeniem - spróbuj ponownie później." + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "Wpisano nieprawidłowy adres URL" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "Zamknij..." + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "To połączenie wygląda na już ustanowione." + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "Musisz odwiedzić ten odnośnik w tej samej przeglądarce i zalogowanej sesji jak utworzony klucz." + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "Musisz odwiedzić ten adres URL w tej samej przeglądarce i zalogowanej sesji jak utworzony klucz." + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "Nie jesteś zalogowany na twojej stronie WordPress w twojej przeglądarce." + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "Nieznany klucz o którym mowa." + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "Nowe połączenie z UpdraftCentral nie zostało wykonane." + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "Połączenie z UpdraftCentral zostało nawiązane z powodzeniem." + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "Połączenie UpdraftCentral" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "Kopia zapasowa została anulowana przez użytkownika" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "Twoje ustawienia zostały zapisane." + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "Łączny rozmiar kopii zapasowej" + +#: admin.php:3420 +msgid "stop" +msgstr "stop" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "Kopia zapasowa zakończyła działanie" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "Usuń ustawienia" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "reset" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "ustawienia tych kopii" + +#: admin.php:3092 +msgid "this backup set" +msgstr "ustawienia tej kopii" + +#: admin.php:3020 +msgid "calculate" +msgstr "oblicz" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "Należy zapisać zmiany, aby upewnić się, że są one wykorzystane przy tworzeniu kopii zapasowej" + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "Poprosiliśmy, aby usunąć plik, ale nie mogliśmy zrozumieć odpowiedź z serwera" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "Proszę wprowadzić prawidłowy adres URL" + +#: admin.php:601 +msgid "Saving..." +msgstr "Zapisuję..." + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "Błąd: serwer wysłał nam odpowiedź, która nie rozumiemy." + +#: admin.php:557 +msgid "Fetching..." +msgstr "Pobieranie..." + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "Azja Pacyfik (Seul)" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "Adres URL wysyłania: " + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "Nieoczekiwany błąd: klasa '%s' nie została znaleziona (twoja instalacja UpdraftPlus wydaje się uszkodzona - spróbuj przeinstalować" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "Wymagany moduł PHP %s nie jest zainstalowany - poroś swoją firmę hostingową o jego włączenie." + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "Pomijanie tabeli %s: tabela nie zostanie przywrócona" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "Aby zaimportować zwykłą stronę WordPress w wielu miejscach wymagana instalacji %s." + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "Proszę przeczytać ten odnośnik do ważnych informacji na temat tego procesu." + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "Będzie zimportowane jako nowa strona." + +#: admin.php:2884 +msgid "Dismiss" +msgstr "Odwołaj" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "Proszę wypełnić wymagane informacje." + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "Czytaj więcej..." + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "Np.: ta opcja tylko wpływa na przywracanie bazy danych oraz folderu wysyłania (uploads) - inne wpisy plików (takie jak wtyczki) są dzielone w obrębie całej sieci." + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "może zawierać dane dla całego serwisu" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "Wszystkie strony" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "Którą stronę przywrócić" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "Przywróć stronę z identyfikatorem id=%s: usówanie innych danych (jeżeli istnieją) z nieskompresowanej kopii zapasowej" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "BŁĄD: problem z utworzeniem wpisu strony." + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "Błąd podczas tworzenia nowej strony pod wybranym adresem:" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "Wymagana informacja do przywrócenia tej kopii zapasowej nie została przekazana (%s)" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "Przypisz zimportowaną zawartość do użytkownika" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "Musisz użyć tylko małych liter lub cyfr do ścieżki strony." + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "Ta opcja nie jest kompatybilna z %s" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "Importowanie pojedyńczej strony do sieci witryn" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "inna zawartość z wp-content" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "Baza Wordpress" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "Wybrałeś %s aby był uwzględniony w trakcie przywracania - ta metoda nie może / nie powinna być wykonywana importu pojedynczej strony do sieci witryn." + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "Wykonaj czynność WordPress:" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "Zapisane ustawienia wpływają na to, co jest kopiowane do kopii zapasowej - np.: wykluczenie plików." + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "Pomijanie: To archiwum zostało już przywrócone." + +#: admin.php:3860 +msgid "File Options" +msgstr "Opcje plików" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "Wysyłanie kopii zapasowej do magazynu zdalnego" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "Harmonogram kopii zapasowej bazy danych" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "Przyrostowy harmonogram kopii zapasowej plików" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "Harmonogram kopii zapasowej plików" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "Będziesz musiał wprowadzić twoje ustawienia ponownie. Możesz to zrobić również przed wyłączeniem/odinstalowaniem UpdraftPlus jeżeli chcesz." + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "Ten przycisk usunie wszystkie ustawienia UpdraftPlus oraz wszelkie informacje o trwających kopiach (jednakże żadne kopie zapasowe znajdujące się na magazynach zdalnych)" + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "Wyślij tą kopię zapasową do magazynu zdalnego" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "Sprawdź UpdraftPlus Vault." + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "Nie posiadasz żadnego magazynu zdalnego?" + +#: admin.php:5157 +msgid "settings" +msgstr "ustawienia" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "Kopia zapasowanie nie zostanie wysłana do żadnego magazynu zdalnego - żaden nie został zapisany w %s" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "Uwzględniaj dowolne pliki w kopii zapasowej" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "Uwzględniaj bazę danych w kopii zapasowej" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "Kontynuuj przywracanie" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "Posiadasz nieskończoną operację przywracania, zaczętą %s temu." + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "Nieskończone przywracanie" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "%s minut, %s sekund" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "Zawartość kopii zapasowej i harmonogram" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "Premium / Rozszerzenia" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "Nie można było znaleźć wystarczających informacji o operacji przywracania w toku." + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "Pobierz" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "Wybrałeś tworzenie kopii zapasowych plików, ale żadne podmioty nie zostały wybrane" + +#: admin.php:442 +msgid "Extensions" +msgstr "Rozszerzenia" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "Narzędzia zaawansowane" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "Lokalizacja zasobu" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "Należy pamiętać, że Google nie obsługuje przestrzeni do przechowywania a każdej z dostępnych lokalizacji - należy przeczytać dokumentację, aby dowiedzieć się o aktualnej dostępności." + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "Te ustawienia znajdują zastosowanie tylko gdy nowy zasób jest utworzony." + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "Musisz użyć unikalnej nazwy zasobu, dla wszystkich %s użytkowników." + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "Nie pomyl %s z %s - to są różne rzeczy." + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "Nie masz dostępu do tego zasobu" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "Zachodnia Europa" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "Wschodnia Azja-Pacyfik" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "Zachodnie Stany Zjednoczone" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "Wschodnie Stany Zjednoczone" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "Wschodnie Stany Zjednoczone" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "Centralne Stany Zjednoczone" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "Unia Europejska" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "Azja Pacyfik" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "Lokalizacja multi-regionalna" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "Stany Zjednoczone" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "Nearline" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "Trwałe zmniejszenie dostępności" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "Standard" + +#: addons/azure.php:524 +msgid "container" +msgstr "kontener" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "Możesz wprowadzić ścieżkę dostępu do %s wirtualnego folderu do użytku tutaj." + +#: addons/azure.php:523 +msgid "optional" +msgstr "opcjonalne" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "Przedrostek" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "Zobacz wytyczne Microsoft odnośnie nazewnictwa kontenerów za pomocą tego linku." + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "Jeżeli %s jeszcze nie istnieje, zostanie utworzone." + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "Wprowadź ścieżkę do %s którą chcesz użyć tutaj." + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "To nie jest twój login Azure - przeczytaj instrukcje jeżeli potrzebujesz więcej wskazówek." + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "Nazwa konta" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "Azure" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "Utwórz poświadczenia Azure poświadczeń w konsoli programisty Azure." + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "Nie można utworzyć kontenera" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "Nie można uzuskać dostępu do kontenera" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "Aby zakończyć migrację / klonowanie, powinieneś teraz zalogować się do witryny zdalnej i odtworzyć zestaw kopii zapasowych." + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "nie znaleziono tabeli opcji" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "nie znaleziono opcji ani danych sitemeta" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "Wygląda na to, że wykonywanie kopii zapasowej bazy danych nie powiodło się." + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "Folderu kopii zapasowej nie pozwalana zapis (pełny dysk?) - proces kopii zapasowej prawdopodobnie nie powiedzie się." + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "wymagane dla niektórych dostawców zdalnego przechowywania" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "Nie zainstalowano" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "Klasa składowania" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "Zobacz wytyczne Google odnośnie nazewnictwa zasobów za pomocą tego linku." + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "Nazwa zasobu musi być unikalna globalnie. Jeżeli zasób jeszcze nie istnieje, wówczas zostanie stworzony." + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "Wprowadź nazwę %s zasobu, którą chcesz użyć" + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "Zasób" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "W przeciwnym razie możesz pozostawić to pole puste." + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "Np.: To jest potrzebne tylko wtedy gdy nie utworzyłeś jeszcze zasobu a chcesz aby UpdraftPlus utworzył go za ciebie." + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "Wprowadź ID projektu %s, którego chcesz tu używać." + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "Kliknij w ten link do swojej konsoli Google API i aktywuj tam Storage API, następnie utwórz ID klienta w sekcji API Access." + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "Musisz wprowadzić ID projektu w celu utworzenia nowego zasobu." + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "ID projektu" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "Musisz zapisać i zautentykować zanim przetestujesz swoje ustawienia." + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "Jeszcze nie otrzymano tokena dostępu od Google. Powinieneś autoryzować (lub autoryzować ponownie) swoje połączenie do chmury Google. " + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "Nie masz dostępu do tego zasobnika." + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "Chmura Google" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "Wyjątek usługi %s." + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "Nie masz całkowicie zainstalowanego UpdraftPlus - proszę odinstalować i zainstalować go ponownie. Najprawdopodobniej nastąpiło uszkodzenie w WordPress podczas kopiowania plików wtyczek." + +#: restorer.php:767 +msgid "Deferring..." +msgstr "Odraczanie..." + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "lub aby skonfigurować bardziej zaawansowane harmonogramy" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "Czy jesteś pewien że chcesz usunąć %s z UpdraftPlus?" + +#: admin.php:3081 +msgid "Deselect" +msgstr "Odznacz" + +#: admin.php:3080 +msgid "Select all" +msgstr "Zaznacz wszystko" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "Działania \"przed\" wybranymi kopiami" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "Naciśnij tutaj aby zobaczyć wewnątrz twojej zdalnej metody składowania w celu znalezienia obecnych zestawów kopii (fla dowolnej strony, jeżeli są one przechowywane w tym samym folderze)" + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "Przetwarzanie..." + +#: admin.php:634 +msgid "For backups older than" +msgstr "Dla kopii zapasowych starszych niż..." + +#: admin.php:633 +msgid "week(s)" +msgstr "Tydzień(tygodni)" + +#: admin.php:632 +msgid "hour(s)" +msgstr "godzin(a/y)" + +#: admin.php:631 +msgid "day(s)" +msgstr "dzień(dni)" + +#: admin.php:630 +msgid "in the month" +msgstr "w miesiącu" + +#: admin.php:629 +msgid "day" +msgstr "dzień" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "(tak dużo jak chcesz)" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "Dodaj dodatkową regułę retencji..." + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "Ta baza danych musi być wdrożona w wersji MySQL %s lub późniejszej." + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "Ten problem jest spowodowany przez próbę odtworzenia bazy danych w bardzo starej wersji MySQL, która jest niezgodna z bazą źródłową." + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "Aktualnie nie masz żadnego udziału UpdraftPlud Vault" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "Musisz zaktualizować MySQL w celu używania niniejszej bazy danych." + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "Kopia zapasowa bazy danych używa funkcji MySQL niedostępnj w starej wersji MySQL (%s), którą ta strona jest zasilany." + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "Brak linków reklamowych na stronie ustawień UpdraftPlus" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "Katalog UpdraftPlus w wp-content/plugins ma \"white-space\" w nim; WordPress tego nie lubi. Należy zmienić nazwę katalogu do wp-content/plugins/updraftplus, aby rozwiązać ten problem." + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "Nie pamiętasz swojego adresu e-mail lub zapomniałeś hasła?" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "Wprowadź adres email / hasło UpdraftPlus.com tutaj aby połączyć się:" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "Przeczytaj FAQ tutaj." + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "Zaznacz to pole wyboru, aby użyć szyfrowania Amazon po stronie serwera" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "Szyfrowanie po stronie serwera" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "Jeśli nie pamiętasz hasła, przejdź tutaj, aby zmienić hasło na updraftplus.com." + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "Przejdź do ustawień zdalnego przechowywania w celu połączenia." + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "%s został wybrany jako zdalny magazyn, jednakże nie jesteś aktualnie połączony." + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "Płatności mogą być dokonywane w dolarach amerykańskich, euro lub funtach GB poprzez karty lub PayPal." + +#: admin.php:607 +msgid "Update quota count" +msgstr "Zajmowana przestrzeń" + +#: admin.php:606 +msgid "Counting..." +msgstr "Zliczanie..." + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "Rozłączanie..." + +#: admin.php:603 +msgid "Connecting..." +msgstr "Łączenie..." + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "Odśwież aktualny stan" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "Uzyskaj więcej miejsca" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "Aktualne użycie:" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "Możesz uzyskać więcej miejsca tutaj" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "%s Błąd: masz niewystarczającą dostępną przestrzeń na dysku (%s) aby wysłać archiwum (%s)." + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "Rozłącz" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "Dostępna przestrzeń:" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "Właściciel skarpca (Vault)" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "Dobra robota - nie ma nic więcej do ustawienia." + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "Ta strona jest połączona do UpdraftPlus Vault." + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "Nie jesteś połączony do UpdraftPlus Vault." + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "Uzyskaj pomoc tutaj" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "E-mail" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "Wstecz..." + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "Abonament może być anulowany w dowolnym momencie." + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "%s na kwartał" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "Przeczytaj więcej na ten temat tutaj." + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "UpdraftPlus Vault bacuje na najlepszych światowych centrach danych Amazona, z niezawodnością na poziomie 99.999999999%." + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "Już zakupione miejsce?" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "Pokaż opcje" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "Początkujący użytkownik?" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "Naciśnij przycisk aby rozpocząć" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "UpdraftPlus Vault oferuje przestrzeń, która jest niezawodna, prosta w obsłudze oraz przystępna cenowo." + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "Posiadasz wygasły abonament UpdraftPlus Vault, który nie został odnowiony. W ciągu kilku dni, twoje przechowywane dane zostaną trwale usunięte. Jeśli nie chcesz aby tak się stało, odnów abonament tak szybko jak to możliwe." + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "Masz abonament UpdraftPlus Vault z przeterminowanym terminem płatności. Jesteś w okresie kilku dni karencji, zanim zostanie on zawieszone i stracisz dostęp do danych przechowywanych w nim. Proszę odnawiać jak najszybciej!" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "Twój zakup UpdraftPlus Premium dokonany był ponad rok temu. Musisz go odnowić natychmiast, aby uniknąć utraty 12 miesięcy bezpłatnego limitu pamięci, który otrzymujesz jako obecny klient UpdraftPlus Premium." + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "Updraft Vault" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "Usunięcie zakończone niepowodzeniem:" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "Silnik ZIP zwrócił wiadomość: %s." + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "Bez tej zgody, UpdraftPlus nie może usuwać kopii zapasowych - należy również skonfigurować ustawienie \"utrzymać\" jako bardzo wysokie, aby zapobiec wyświetlaniu błędów usunięcia." + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "Zezwalaj na usuwania" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "Bez tego pozwolenia, nie możesz bezpośrednio pobrać lub przywróciż używając UpdraftPlus i zamiast tego będziesz musiał odwiedzić stronę AWS." + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "Zezwalaj na pobieranie" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "Jeśli wysyłane bezpośrednie ze strony do strony nie działa dla Ciebie, to istnieją trzy inne metody - spróbuj jedną z nich." + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "Należy sprawdzić, czy zdalna strona jest dostępna online, nie blokowana, nie posiada modułów bezpieczeństwa, które mogą blokować dostęp, posiada UpdraftPlus w wersji %s lub późniejszej i że klucze zostały wpisane poprawnie." + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "Istniejące klucze" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "Żadne klucze umożliwiające zdalny dostęp do stron nie zostały utwożone." + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "Twój nowy klucz:" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "Aby umożliwić innym stronom, aby wysłać kopie zapasowe do tej strony, należy utworzyć klucz, a następnie naciśnij przycisk \"przenoszenia\" na stronie wysyłającego, a następnie skopiować i wkleić tam klucz." + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "Tak więc, aby dostać klucz do zdalnej lokalizacji, otwórz okno \"przenoszenia\" w tym miejscu, przewiń w dół i można stworzyć tam jeden." + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "Klucze do tej strony są tworzone w sekcji poniżej tego który właśnie wcisnąłeś." + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "Musisz skopiować i wkleić ten klucz teraz - nie może być to pokazane ponownie." + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "Klucz utworzony z powodzeniem." + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "Klucz z tą nazwą już istnieje, musisz użyć unikalnej nazwy." + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "Również wysłaj kopię zapasową do aktywnych zdalnych miejsc składowania" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "Adres witryny URL który wysyłasz do (%s) wygląda jak lokanla strona w trybie rozwoju. Jeśli wysyłasz z sieci zewnętrznej, jest prawdopodobne, że zapora sieciowa (firewall) będzie blokowanie tego typu zachowanie" + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "strona nie znaleziona" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "Kopia zapasowa danych zostanie wysłany do:" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "Przywróć istniejący zestaw kopii na tą stronę" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "Ta strona nie ma jeszcze żadnych kopii zapasowych, aby przywrócić." + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "Kopia zapasowa utworzona przez %s" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "Ten sposób przechowywania nie pozwala na pobieranie" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "(zestaw kopii zapasowej zimportowany ze zdalnej lokalizacji)" + +#: admin.php:4423 +msgid "Site" +msgstr "Strona" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "Kopia zapasowa wysłana do zdalnej strony - nie dostępna do pobrania" + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "Musisz się upewnić że następujący zestaw kopii jest przeznaczony dla tej strony, przez przywróceniem (przed próbą przywrócenia niekompatybilnej z tą stroną kopii)" + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "Ustawiony zestaw kopii zapasowej nie został rozpoznany przez UpdraftPlus aby utworzyć go dla aktualnej instalacji WordpPress, jednakże został znaleziony na na zdalnym makazynie przechowywania, lub został wysłany do zdalnej strony." + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "Testowanie połączenia..." + +#: admin.php:617 +msgid "Deleting..." +msgstr "Usuwanie..." + +#: admin.php:616 +msgid "key name" +msgstr "nazwa klucza" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "Proszę podać nazwę temu kluczowi (np: wskazuje do jakiej strony):" + +#: admin.php:611 +msgid "Creating..." +msgstr "Tworzenie..." + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "Lub uzyskaj kopię zapasową ze zdalnej strony" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "Wklej klucz tutaj" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "Jak uzyskać klucz strony?" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "Aby dodać stronę jako cel do wysyłania, wprowadź klucz strony poniżej." + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "lub wyślij kopię zapasową do innej strony" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "Wyślij" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "Wyślij do strony:" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "Żadna otrzymująca strona nie została dodana." + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "Wykorzystywane jest do wysyłania kopii zapasowych do następujących stron:" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "Klucz został pomyślnie dodany." + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "Wprowadzony klucz nie należy do zdalnej strony (należy on do aktualnej)" + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "Wprowadzony klucz został uszkodzony - spróbuj ponownie." + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "Wprowadzony klucz był nieprawidłowej długości - spróbuj ponownie." + +#: addons/migrator.php:1861 +msgid "key" +msgstr "klucz" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "Prawie wszystkie serwery FTP będą wolały tryb pasywny; ale jeśli trzeba tryb aktywny, usuń zaznaczenie." + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "Tryb pasywny" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "Zdalna lokalizacja" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "Hasło FTP" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "Login FTP" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "Serwer FTP" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "UpdraftPlus Migrator modyfikuje operację przywracania w odpowiedni sposób, aby pasowały do danych z kopii zapasowej na nowym miejscu." + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "\"Migracaj\" jest w rzeczy samej tym samym co przywracanie - jednakże z użyciem archiwów które importowane są z innej strony." + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "Dodaj stronę" + +#: admin.php:608 +msgid "Adding..." +msgstr "Dodawanie..." + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "Roszczenie nie przyznano - może już użyłeś niniejszy zakup gdzie indziej, lub płatny okres pobierania z updraftplus.com wygasł?" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "Aby korzystać z tej kopii zapasowej, serwer bazy danych musi obsługiwać %s zestaw znaków." + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "przejdź tutaj aby zmienić twoje hasło na updraftplus.com." + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "Jeśli zapomniałeś swojego hasła" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "Kliknij tutaj, aby ponownie wprowadzić hasło." + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "Po przycisnięciu tego przycisku, otrzymasz opcję do wyboru który element chcesz zmigrować" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "Aby zaimportować zestaw kopii zapasowych, przejdź do zakładki \"istniejące kopie\"" + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "Dokonaniu zmian w ustawieniach, ale nie został one zapisane." + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "Np.: %s jest wrażliwy na wielkość znaków" + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "Jeśli OneDrive później pokazuje komunikat \"unauthorized_client\", w takim razie podałeś nieprawidłowy identyfikator klienta (ID) tutaj." + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "Na długotrwałą pomoc, włączając w to zrzuty ekranu, przejdz korzystając z tego odnośnika." + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "Utwórz poświadczenia OneDrive na twojej konsoli dewelopera OneDrive." + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "Należy dodać następujące jako upoważnione przekierowania URI w swojej konsoli OneDrive (w \"Ustawieniach API\") w momencie zapytania" + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "%s autoryzacja zakończona niepowodzeniem:" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "OneDrive" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "Proszę ponownie uwierzytelnić połączenie dla twojego %s konta." + +#: methods/email.php:73 +msgid "configure it here" +msgstr "skonfiguruj tutaj" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "Aby usunąć blok, przejdź tutaj." + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "Pamiętaj aby zachować twoje ustawienia" + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "Używaszkonta użytkownika IAM aby uzyskać dostęp do twojego zasobu." + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "Zasób S3" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "Chiny (Pekin) (ograniczona)" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "Ameryka Południowa (Sao Paulo)" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "Azja Pacyfic (Tokyo)" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "Azja Pacyfic (Sydney)" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "Azja Pacyfik (Singapur)" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "EU (Frankfurt)" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "EU (Irlandia)" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "Zachodni Rząd US (ograniczony)" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "Zachodnie Stany Zjednoczone (W. Kalifornia)" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "Zachodnie Stany Zjednoczone (Oregon)" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "US Standard (domyślnie)" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "Region składowania S3" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "Nowa nazwa użytkownika IAM" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "Sekretny klucz administratora" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "Klucz dostępu administratora" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "Następnie, poświadczenia niższego rzędu mogą być użyte, zamiast przechowywania kluczy administracyjnych." + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "Zostaną one wykorzystane do stworzenia nowego użytkownika i pary kluczy z załączoną polityką IAM która pozwoli mu uzyskać dostęp do tylko wskazanego zasobu." + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "Wpisz swój klucz/sekretny klucz administracyjnego dostępu do Amazon S3 (musi to być para kluczy z wystarczających uprawnień do tworzenia nowych użytkowników i zasobów) oraz nową nazwę użytkownika (unikalną) dla nowego użytkownika i nazwą zasobu." + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "Uwtórz nowego użytkowniak IAM oraz Zasób S3" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "Tajny klucz: %s" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "Klucz dostępu: %s" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "Nie udało się zastosować zasad użytkownika" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "Operacja tworzenia klucza dostępu użytkownika nie powiodło się" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "Niepowodzenie przy tworzeniu klucza dostępu użytkownika" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "Operacja IAM zakończona niepowodzeniem (%s)" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "Konflikt: taki użytownik już istnieje" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "Niepowodzenie: Nie mogliśmy z powodzeniem uzuskać dostępu lub stworzyć zasób. Prosimy o sprawdzenie poświadczeń dostępu, a jeśli te są poprawne, spróbuj inną nazwę \"rzeczy\" (jako inny użytkownik AWS może już podjął tą nazwę)." + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "Uwierzytelnienie AWS zakończone niepowodzeniem" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "Nie można utworzyć nowego użytkownika AWS, odkąc starego typu narzędzie AWS zostało użyte." + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "Musisz wprowadzić zasób" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "Musisz wprowadzić nazwę użytkownika IAM" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "Musisz wprowadzić sekretny klucz administratora" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "Musisz wpisać klucz dostępu administratora" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "Jeśli masz użytkownika administratora AWS, możesz użyć tego kreatora aby szybko utworzyć nowego użytkowniak AWS (IAM) z dostępem tylko do tego zasobu (zamiast całego konta)" + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "Aby utworzyć nowego pod-użytkownika IAM oraz klucz dostępu który ma dostęp tylko do tego zasobu, użyj tego dodatku." + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "Dla wsparcia osobistego, możliwość kopiowania stron, więcej miejsc składowania, zaszyfrowane kopie zapasowe, wielu lokalizacji kopii zapasowych, lepsze raportowanie, brak reklan oraz wiele więcej, zainteresuj się UpdraftPlus w wersji Premium - najpopularniejsza na świecie wtyczki do wykonywania kopii zapasowych." + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "Wiadomości UpdraftPlus, wysokiej jakości materiały szkoleniowe dla deweloperów oraz właścicielu stron WordPress, oraz wiadomości ogólne WordPress. Możesz się wypisać w dowolnym momencie." + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "Ścieżka wysyłania (%s) została zmieniona w momencie migracji - przestawienie (na: %s)" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "To najprawdopodobniej oznacza, że dzielisz serwer WWW z zaatakowaną strony internetowej, która została wykorzystana w poprzednich ataków." + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "Wygląda na to, że adres IP serwera WWW (%s) jest zablokowany.." + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "UdraftPlus.com odpowiedział z informacją \"Dostęp Zabroniony\"." + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "Wtyczki Premium WooCommerce" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "Darmowa wtyczka weryfikacji dwuetapowej" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "Więcej jakościowych wtyczek" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "Przejdź do sklepu." + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "Porównaj z wersją darmową" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "UpdraftPlus Premium" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "Przejdź na ten link, aby się zarejestrować." + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "Darmowy biuletyn" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "Dziękuję za tworzenie kopi zapasowej z UpdraftPlus!" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "Odwołaj (na %s miesięcy)" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "(w tym samym czasie do kopia plików)" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "Żadna kopia zapasowa została wykonana." + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "Pierwszym krokiem jest odinstalowanie darmowej wersji." + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "Jeżeli dokonałeś zakupu z UpdraftPlus.com, przejdź korzystając z następujacego odnośnika w celu uzyskania informacji jak zainstalować twój zakup." + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "Zapisz się na biuletyn" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "Przejdz na ten odnośnik aby zapisać się do biuletynu UpdraftPlus" + +#: admin.php:2831 +msgid "Personal support" +msgstr "Wsparcie osobiste" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "Blokada dostępu do ustawień" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "Wsprawdzie dla Sieci/Sieci witryn" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "Ściśle określony czas kopii zapasowej" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "Zaplanowane kopie zapasowe" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "Przywróć kopię zapasową z innej wtyczki:" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "Szyfrowanie bazy danych" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "Wyślij kopie zapasowe do wielu zdalnych lokalizacji" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "Automatyczne tworzenie kopii zapasowych podczas aktualizacji WP / wtyczki / motywy" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "Zaawansowane opcje raportowania" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "Podstawowy email do raportowania" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "Migrują / klon (np.: kopia) strony internetowe" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "Tworzenie kopii zapasowych dodatkowych plików i baz danych" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "WebDAV, Copy.Com, SFTP/SCP, szyfrowany FTP" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "Dropbox, Dysk Google, FTP, S3, Rackspace, Email" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "Kopia zapasowa do magazyny zdalnego" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "Przywróć z kopii zapasowej" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "Przetłumaczony na ponad %s języków" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "Koia zapasowa plików WordPress i bazy danych" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "Kup Teraz!" + +#: admin.php:2718 +msgid "Get it from" +msgstr "Uzyskaj z" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "Zadaj pytanie przed-sprzedażowe" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "FAQ Przed-zakupowe" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "Pełna lista funkcji" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "Uzyskaj UpdraftPlus Premium" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "Aktualnie używasz darmowej wersji UpdraftPlus z wordpress.org." + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Zrób kopię zapasową (gdzie stosowne) wtyczek, motywów i bazy danych WordPress z UpdraftPlus przed aktualizacją" + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "%s Błąd: Inicjalizacja nieudana" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "lub" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "lub" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "Nie wybrałeś żadnych komponentów do przywrócenia. Proszę wybrać conajmniej jeden i spróbuj ponownie." + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "PKCS1 (PEM nagłówek: BEGIN RSA PRIVATE KEY), XML i PuTTY typy kluczy są akceptowalne." + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "Wznawianie częściowe przesłania jest obsługiwane przez SFTP, ale nie dla SCP. Tak więc, w przypadku korzystania z SCP należy się upewnić, że serwer WWW pozwala na uruchomionie procesów PHP wystarczająco długo, aby przesłać największy plik kopii zapasowej." + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "dzierżawca" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "Adres URL autoryzacji musi być w trybie v2 (Keystone); v1 (Swauth) nie jest wspierana." + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "adres administratora twojich stron" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "Zaznacz to pole aby wysłać podstawowy raport do" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "Ręcznie" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "Wystąpił błąd (%s):" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "Zmień ustawienia blokady" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "Każdy inny plik/folder na twoim serwerze który chcesz uwzględnić w kopię zapasową" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "Aby uzyskać jeszcze więcej funkcji i wsparcia, sprawdź" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "Tworzenie tabeli zakończone niepowodzeniem - prawdopodobnie nie masz uprawnień do usunięcia tabeli a tabela już istnieje; będę kontynuował" + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "Czyszczenie stron z pamięci tymczasowej (%s)..." + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "Zwrot szyfrowanie bazy danych" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "Automatyczna kopia zapasowa przed aktualizacją" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "Baza WordPress (tylko)" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "W celu odblokowania wsparcia, proszę skonaktować się z osobą, która zarządza twoim UpdraftPlus." + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "Aby uzyskać dostęp do ustawień UpdraftPlus, proszę wprowadzić swoje hasło odblokowania" + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "Hasło nieprawidłowe" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "Odblokuj" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "W przeciwnym razie zostanie wyświetlony domyślny odnośnik." + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "Każdy widząc ekran blokady zobaczt ten URL wsparcia - Wprowadź adres internetowy lub adres e-mail." + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "Adres URL wsparcia" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "Wymagaj ponownie hasło po" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "%s tygodne(i)" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "1 tydzień" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "%s godzin(y)" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "1 godzina" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "Upewnij się, że zanotowałeś hasło!" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "Blokada dostępu do strony ustawień UpdraftPlus" + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "Ustawienia zapisane." + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "Hasło administratora zostało zmienione." + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "Hasło administratora zostało ustawione." + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "Hasło administratora zostało usunięte." + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "(Więcej informacji o tej ważnej opcji)" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "Pamiętaj, że po zarządaniu dodatków, możesz usunąć swoje hasło (ale nie adres email) z powyższych ustawień, bez wpływu na możliwość otrzymywania uaktualnień dla tej strony." + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "Zobacz dziennik" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "Kopia zapasowa (kliknij aby pobrać)" + +#: admin.php:4368 +msgid "Backup date" +msgstr "Data kopii zapasowej" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "i zachowuje tak wiele zaplanowanych kopii zapasowych" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "kopia przyrostowa; podstawowa kopia: %s" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "Za możliwość zablokowania dostępu do ustawień UpdraftPlus hasłem, uaktualnienie do UpdraftPlus Premium." + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "Wyślij pliki do UpdraftPlus" + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "Przycisk \"Utwórz kopię teraz\" jest wyłączony jako że katalog kopii zapasowych nie ma prawa do zapisu (przejdź do zakładki \"Ustawienia\" aby znaleźć odpowiednią opcję)" + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "Etykieta kopii zapasowej:" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "Błąd: nieoczekiwany problem odczytu pliku" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "sprawdź dziennik aby zobaczy szczegóły" + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "twoje konto hostingowe wygląda na pełne, zobacz: %s" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "Wystąpił problem zip" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "Etykieta dla tej kopii zapasowej (opcjonalnie)" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "%s nie zezwala na uwierzytelnienie stron utrzymywanych na bezpośrednim adresie IP. Musisz zmienić adres twojej strony (%s) zanim będziesz mugł użyć %s jako magazynu danych." + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "Wprowadzony adres nie został rozpoznany przez UpdraftPlus.com" + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "Twój adres e-mail był prawidłowy, ale hasło nie zostało uznane przez UpdraftPlus.com" + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "Musisz podać zarówno adres e-mail jak i hasło" + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "Aby kontynuować, naciśnij przycisk \"Utworz kopię teraz\". Następnie obserwuj \"ostatnie wiadomość w logach\" w celu śledzenia aktywności." + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "Jeśli chcesz przywrócić kopię zapasowej sieci witryn, należy najpierw skonfigurować instalację WordPress jako sieć witryn." + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "Twoja kopia zapasowa jest instalacją typu multi-site (sieć witryn), jednakże ta strona nie jest. Tylko pierwsza strona tej sieci będzie możliwa do dostępu." + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "już zrobione" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "pominięto (nie uwzględniony na liście)" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "Wyszukiwanie i zastępowanie tabeli:" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "Wprowadź listę oddzieloną przecinkami; w przeciwnym razie, pozostaw puste dla wszystkich tabel." + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "Tylko te tabele" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "Wiersze na partię" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "Nie połączyłeś jeszcze swojego konta UpdraftPlus.com" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "Musisz połączyć w celu przyszłego otrzymywania aktualizacji UpdraftPlus." + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "Jakakolwiek prośba o wsparcie związana z %s powinna być skierowana do twojej firmy hostingowej." + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "Należy kontynuować tylko wtedy, gdy nie można zaktualizować bieżącego serwera jesteś pewien (lub skłonny do ryzyka), że wtyczki / motywy / itp. są kompatybilne ze starszą %s wersją." + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "Ten serwer jest stanowczo nowszy niż serwer który aktualnie przywracasz do (wersja %s)." + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "Witryna w tej kopii zapasowej został uruchomiony na serwerze WWW z wersji %s z %s." + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "LinkedIn" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "Google+" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "Facebook" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "Twitter" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "UpdraftPlus jest w mediach społecznościowych - spradź:" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "Dlaczego to widzę?" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "Lokalizacja tego katalogu jest ustawiony w ustawieniach dla ekspertów, w zakładce Ustawienia." + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "Naciśnij tutaj, aby zajrzeć do katalogu UpdraftPlus (w przestrzeni hosting) dla wszystkich nowych zestawów kopii zapasowych, które zostały przesłane." + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "Rozpocznij kopię zapasową" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "Używasz serwera %s, jednakże wygląda na to że moduł %s nie jest załadowany." + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "Będziesz musiał skonsultować się z dostawcą usług hostingowych, aby dowiedzieć się, jak ustawić uprawnienia dla zapisu do katalogu WordPress." + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "Chyba że masz problem, możesz zignorować wszytko tutaj." + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "Ten plik nie może zostać wysłany" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "Znajdziesz więcej informacji na ten temat w sekcji Ustawienia." + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "Wspierane wtyczki kopii zapasowych: %s" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "Czy ta kopia zapasowa została wykonana przy użyciu innej wtyczki? Jeżeli tak, być może powinieneś zmienić jej nazwę żeby została poprawnie rozpoznana. Kliknij tutaj po szczegóły." + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "Powiedz mi więcej na temat kopii przyrostowych" + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "Limit pamięci" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "odtwarzanie" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "Tabela do bezwarunkowego usunięcia: %s" + +#: backup.php:829 +msgid "Incremental" +msgstr "Przyrostowa" + +#: backup.php:829 +msgid "Full backup" +msgstr "Pełna kopia zapasowa" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "trwa przetwarzanie aktualizacji..." + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "(zobacz dziennik...)" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "Wykonywanie kopii zapasowej powiodło się" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "Co %s godzin" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "szukaj i zamień" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "Idź" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "Szukanie/zamiana będą nieodwracalne - jestes pewien, że chcesz kontynuować?" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "To może łatwo zniszczyć Twój portal więc używaj tego ostrożnie!" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "Zamień na" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "Szukaj " + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "Przeszukaj i zamień w bazie danych" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "szukany zwrot" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "Wystąpiło za dużo błędów bazy danych - anulowanie" + +#: backup.php:895 +msgid "read more at %s" +msgstr "czytaj więcej na %s" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "Wyślij utworzony raport przez UpdraftPlus (edycja darmowa) wraz z najnowszymi informacjami z UpdraftPlus.com" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "A przy okazji, jeżeli instalujesz UpdraftPlus na kilku stronach WordPress, nie możesz używać tego samego projektu; powinieneś utworzyć nowy projekt ze swojej kosoli Google API dla każdej strony osobno." + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "Nie wykonałeś jeszcze żadnych kopii zapasowych" + +#: admin.php:3872 +msgid "Database Options" +msgstr "Opcje bazy danych" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "Wtyczki debugujące:" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "%s (%s używanych)" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "Dostępna przestrzeń dyskowa na koncie:" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "Ten przycisk jest nieaktywny ponieważ brakuje praw do zapisu w Twoim folderze z kopiami zapasowymi (sprawdź ustawienia)." + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "Istniejące kopie zapasowwe" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "Bieżący status" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "Aby zmienić ustawienia domyślne tego, co ma zostac skopiowane, aby skonfigurować zaplanowane kopie, aby wysłać kopie do lokalizacji zdalnych (rekomendowane) oraz więcej, przejdź do zakładki \"Ustawienia\"" + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "Aby wykonać kopię zapasową, po prostu kliknij przycisk \"Backup Now\"." + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "Witaj w UpdraftPlus!" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "Jeżeli wpiszesz tutaj tekst, będzie on wykorzystany do zaszyfrowania kopii zapasowych bazy danych (algorytmem Rijandel).Zapisz ten tekst gdzieś w osobnym miejscu, ponieważ jeżeli go zapomnisz / zgubisz, wszystkie Twoje kopie zapasowe będą bezużyteczne. Ten tekst jest również kluczem, którego możesz użyć do odszyfrowania danych za pomocą niniejszego interfejsu administracyjnego (jeżeli go zmienisz, deszyfrowanie nie zadziała dopóki go nie przywrócisz)" + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "Testowanie..." + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "Testuj połączenie..." + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "Prefiks nazwy tabeli" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "Wykonaj kopię zapasową zewnętrznej bazy danych" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "Dodaj zewnętrzną bazę do kopii zapasowej..." + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "Jeżeli twoja baza danych zawiera dodatkowe tabele, które nie są częścią tej strony WordPress (jeżeli tak jest, powinieneś o tym wiedzieć), zaznacz tę opcję aby uwzględnić te tabele w kopii zapasowej." + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "Wykonaj kopię zapasową tabel spoza WordPress-a w tej samej bazie co Wordpress." + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "Wybranie tej opcji spowoduje wykonanie kopii zapasowej również tych tabel MySQL, które nie należą do tej instalacji WordPress-a (tj. nie mają nazw rozpoczynających się skonfigurowanym w WordPress-ie prefiksem %s)" + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "Połączenie nie powiodło się." + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "Połączenie powiodło się." + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "Ogółem znaleziono %s tabel; %s z wybranym prefiksem." + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "Znaleziono tabel: %s." + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "nieudane połączenie z bazą danych" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "nazwa bazy danych" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "komputer" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "użytkownik" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "Zewnętrzna baza danych (%s)" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "Kliknij tutaj aby przejść do Twojej konsoli Google API, i aktywuj tam Drive API, a następnie utwórz Client ID w sekcji API Access." + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "błąd dostępu do folderu nadrzędnego" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "Niestety, kolejne próby dostępu nie powiodły się:" + +#: admin.php:4499 +msgid "External database" +msgstr "Zewnętrzna baza danych" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "To spowoduje również wyświetlenie tutaj wyjścia debuggera ze wszystkich wtyczek (nie bądź zaskoczony widząc je tutaj)." + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "Wykonaj kopię zapasową innych baz danych" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "Po pierwsze, wprowadź klucz deszyfrujący" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "Może tutaj ręcznie odszyfrować zaszyfrowaną bazę danych." + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "Może również wykonywać kopie zapasowe zewnętrznych baz danych." + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "Nie życzysz sobie szpiegowania? UpdraftPlus Premium może zaszyfrować Twoją kopię zapasową bazy danych." + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "użyj UpdraftPlus Premium" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "Deszyfrowanie nie powiodło się. Plik bazy danych jest zaszyfrowany." + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "Możliwe jest wyłącznie odtworzenie bazy danych WordPress; z zewnętrzną bazą danych będziesz musiał sobie poradzić we własnym zakresie." + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "Wystąpił błąd przy pierwszym poleceniu %s - trwa anulowanie" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "Połączenie niedudane: sprawdź ustawienia logowania; czy serwer działa; czy połączenie nie jest zablokowane przez firewall?" + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "próba połączenia z bazą danych nie powiodła się." + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "Uwaga: adres domowy bazy danych (%s) jest inny niż oczekiwany (%s)" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "W %s wielkość liter ma znaczenie w nazwach folderów." + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "Jeżeli pozostawisz to puste, wówczas backup zostanie umieszczony w katalogu głównym twojego %s" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "np. %s" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "Jeżeli folder jeszcze nie istnieje, zostanie stworzony." + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "Wprowadź nazwę %s folderu, której chcesz tu użyć." + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "Zasobnik" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "Jeżeli pozostawisz to pole puste, zostanie użyta wartość domyślna." + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "Najemca" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "Kliknij aby uzyskać więcej informacji" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "adres logowania" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "Uzyskaj swoje dane logowania od swojego dostawcy OpenStack, a następnie wybierz nazwę zasobnika, którego chcesz użyć do przechowywania. Jeżeli taki zasobnik jeszcze nie istnieje, zostanie automatycznie stworzony." + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "Błąd przy pobieraniu %s" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "Błąd przy pobieraniu" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "błąd listowania plików" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "Błąd wysyłania %s" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "Sukces:" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "Po zapisaniu ustawień (klinkij 'Zapisz zmiany' poniżej) wróć tutaj i kliknij poniższy link aby zakończyć autoryzację %s." + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "(Wygląda na to, że jesteś już zalogowany)" + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "Dropbox" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "Autoryzuj za pomocą %s" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "Błąd pobierania zdalnego pliku: nie udało się pobrać" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "Region: %s" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "Błąd %s - udało się uzyskać dostęp do zasobnika, ale nie udało się utworzyć w nim pliku" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "Nie znaleziono obiektu %s" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "Brak dostępu do zasobnika %s" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "Błąd %s - brak dostępu do zasobnika" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "Nazwa właściciela konta: %s." + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "Aby mieć możliwość ustalenia własnej nazwy folderu, potrzebujesz UpdraftPlus Premium." + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "To jest wewnętrzny identyfikator Google Drive" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "To NIE jest nazwa folderu." + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "Folder" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "Pobieranie %s nie powiodło się: brak pliku" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "Nazwa: %s." + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "Pobranie listy plików Google Drive: błąd dostępu do folderu nadrzędnego" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "Twoja wersja %s: %s." + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "Powinieneś poprosić dostawcę hostingu o upgrade." + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "Ta metoda zdalnego składowania (%s) wymaha PHP w wersji co najmniej %s." + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "Katalog z motywami (%s) nie odnaleziony, ale istnieje wersja pisana małymi literami; zmieniam opcję bazy danych." + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "Zadzwoń" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "Pobierz" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "Ta opcja wymaga %s w wersji co najmniej %s." + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "Wykryto dane wtyczki kreatora motywu Elagant Themes; resetowanie folderu tymczasowego." + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "Ilość wypakowanych plików: %s" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "Błąd przy rozpakowywaniu archiwum." + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "Błąd: nie udało się pobrać pliku" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "Przeskanuj ponownie lokalny folder w poszukiwaniu nowych zestawów kopii zapasowych" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "Powinieneś zaktualizować UpdraftPlus aby mieć pewność, że używasz wersję przetestowaną pod kątem kompatybilności." + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "Przetestowano do wersji %s." + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "Zainstalowana wersja UpdraftPlus nie została przetestowana z Twoją wersją WordPress-a (%s)." + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "hasło/klucz" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "Klucz" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "Możesz logować się albo hasłem, albo za pomocą kluczy - powinieneś wprowadzić jedno z dwojga, ale nie obydwa na raz." + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "Podany klucz jest w niewłaściwym formacie lub został uszkodzony." + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "hasło/klucz SCP/SFTP" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "Kopia zapasowa plików (utworzona przez %s)" + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "Kopia zapasowa plików oraz bazy danych WordPress-a (utworzona przez %s)" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "Kopia zapasowa utworzona przez: %s." + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "Baza danych (utworzona przez %s)" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "nieznane źródło" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "Przeskanuj lokalizację zdalną ponownie." + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "Wyślij pliki kopii zapasowej" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "Ta kopia została utworzona przez %s i może zostać zaimportowana." + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "Przeczytaj tą stronę aby dowiedzieć się jakie sąmożliwe przyczyny oraz jak to naprawić." + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "WordPress ma kilka (%d) spóźnionych zadań w harmonogramie. O ile to nie jest środowisko testowe, oznacza to prawdopodobnie, że harmonogram zadań Twojej instalacji WordPress nie działa." + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "Jeżeli to jest kopia zapasowa wykonana za pomocą innej wtyczki, być może UpdraftPlus Premium będzie w stanie Ci pomóc." + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "Niemniej jednak archiwa UpdraftPlus są standardowymi plikami zip/SQL - jeżeli więc jesteś pewien, że Twój plik jest we właściwym formacie, możesz zmienić jego nazwę aby pasowała do tego wzorca." + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "Ten plik nie wygląda na archiwum kopii zapasowej UpdraftPlus (są to przeważnie pliki .zip albo .gz z nazwą: backup_(czas)_(adres strony)_(kod)_(typ).(zip|gz))." + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "Kopia zapasowa utworzona przez nieznane źródło (%s) - nie może zostać przywrócona." + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "Folder z zawartością WordPress (wp-content) nie został odnaleziony w tym pliku zip." + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "Ta wersja UpdraftPlus nie obsługuje zewnętrznych kopii zapasowych tego rodzaju" + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "%s zwrócił nieoczekiwaną odpowiedź HTTP: %s" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "Moduł UpdraftPlus dla tej metody dostępu do plików (%s) nie obsługuje listowania plików." + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "Nie znaleziono ustawień" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "Jedna lub więcej kopii zapasowych było dodanych w wyniku skanowania zdalnej lokalizacji; te kopie zapasowe nie będą automatycznie usuwane przez ustawienia \"retain\"; jeżeli chcesz je skasować, zrób to ręcznie." + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "Ponowne szukanie zestawów kopii zapasowych w lokalizacjach zdalnych i lokalnych..." + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "(Czytaj dalej)" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "Dopasowanie ścieżek \"multisite\"" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "Zapisuj wszystkie komunikaty w syslog (używane głównie przez administratorów serwerów)" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "Dodaj..." + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "Usuń" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "Inne pytania %s." + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "Zaznacz zaby otrzymywać więcej informacji i maili o procesie kopiowania - przydatne zwłaszcza przy diagnozowaniu problemów." + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "Jeżeli podajesz kilka plików/folderów, wpisz je rozdzielone przecinkami. Dla obiektów na szczycie hierarchii możesz używać * na początku lub końcu nazwy." + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "Wykryto dane niestandardowej wtyczki content type manager; czyszczenie pamięci podręcznej opcji." + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "Żeby %s działało, Twój dostawca hostingu musi najpierw włączyć te funkcje." + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "Instalacja PHP na Twoim serwerze www ma wyłączone następujące funkcje: %s." + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "zaszyfrowane FTP (szyfrowanie jawne)" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "szyfrowane FTP (szyfrowanie ukryte)" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "zwykłe, nieszyfrowane FTP" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "Kopia zapasowa stworzona przez:" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "Dostępne do rządania na tej stronie" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "Proszę odnowić aby utrzymać dostęp do wsparcia technicznego." + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "Twój płatny dostęp do wsparcia technicznego UpdraftPlus wkrótce wygaśnie." + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "Aby odzyskać swój dostęp, proszę odnowić." + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "Twój płatny dostęp do wsparcia technicznego UpdraftPlus wygasł." + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "Twój płatny dostęp do aktualizacji UpdatePlus na tej stronie wkrótce wygaśnie." + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "Aby zachować dostęp do danych i poprawek (włączając przyszłe opcje oraz kompatybilność z przyszłymi wydaniami WordPress) oraz wsparcie techniczne, proszę odnowić." + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "Twój płatny dostęp do aktualizacji UpdraftPlus dla %s z %s dodatków na tej stronie wkrótce wygaśnie. " + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "Twój płatny dostęp do aktualizacji UpdraftPlus dla dodatków %s na tej stronie wygasł." + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "Aby odzyskać dostęp do danych i poprawek (włączając przyszłe opcje oraz kompatybilność z przyszłymi wydaniami WordPress) oraz wsparcie techniczne, proszę odnowić. " + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "Twój płatny dostęp do aktualizacji UpdraftPlus wygasł. Nie będziesz otrzymywał kolejnych aktualizacji UpdraftPlus." + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "Ukryj z ekranu głównego (na %s tygodni)" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "Próba odwrócenia podwójnej kompresji powiodła się. " + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "Próba odwrócenia podwójnej kompresji nie powiodła się." + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "Plik bazy danych wygląda na podwójnie skompresowany. Prawdopodobnie serwer www na stronie, z której został pobrany, był źle skonfigurowany." + +#: admin.php:1528 +msgid "Constants" +msgstr "Stałe" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "Nie udało się otworzyć pliku bazy danych do odczytu:" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "Nie znaleziono tabel w bazie danych" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "proszę czekać na ponowienie próby z harmonogramu" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "Proszę zauważyć, że ostrzeżenia są wyłącznie doradcze - proces wykonywania kopii zapasowej nie zatrzymuje się z ich powodu. Ostrzeżenia dostarczają informacji, które mogą być użyteczne, lub które mogą sygnalizować źródło problemu jeżeli wykonywanie kopii zapasowej nie powiedzie się." + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "Wykonane zapytania do bazy danych: %d w %.2f sekund" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "Szukanie i zamiana dotarły do wiersza: %d" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "Pomijanie tabeli: dane w tej tabeli (%s) nie powinny być przeszukiwane/zamieniane." + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "Konto zapełnione: Twoje konto %s ma tylko %d bajtów wolnego miejsca, jednak plik do wysłania ma jeszcze %d bajtów do wysłania (rozmiar łączny: %d bajtów)" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "Wystąpiły błędy:" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "Kliknij ten link aby pobrać plik z dziennikiem odtwarzania (może być potrzebny w przypadku kontaktów ze wsparciem technicznym)" + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "Sprawdź też najczęściej zadawane pytania." + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "Jeżeli nie wybierzesz przechowywania zdalnego, kopie zapasowe pozostaną na serwerze www. To nie jest rekomendowane (chyba, że planujesz skopiować je ręcznie na swój komputer), gdyż utrata serwera oznaczałaby równoczesną utratę kopii zapasowych." + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "Odzyskiwanie (jeśli to konieczne) i przygotowanie plików kopii zapasowej..." + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "Konfiguracja PHP na tym serwerze www ogranicza czas wykonania do maksymalnie %s sekund, i nie pozwala na zwiększenie tego limitu. Jeżeli masz dużo danych do zaimportowania, i jeżeli operacja odtwarzania potrwa dłużej niż ten limit, będziesz muciał poprosić firmę hostingową o zwiększenie tego limitu, lub spróbować odtwarzać kawałek po kawałku." + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "Istnieją nieusunięte foldery z poprzedniego odtwarzania (proszę użyć przycisku \"Usuń stare foldery\" aby je skasować przed pojęciem kolejnej próby): %s" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "Czas wymagany dla wtyczek WordPress do uruchomienia jest bardzo niske (%s sekund) - należy to zwiększyć, aby uniknąć uszkodzeń kopii zapasowych ze względu na czas przerw (skontaktuj się z firmą hostingową, aby uzyskać pomoc - na temat max_execution_time PHP, zalecana wartość to %s sekund lub więcej)" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "Zamiana w tabeli: z %s na %s" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "%s: Pomijanie pliku cache (już nie istnieje)" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "Ta wtyczka została wyłączona: %s: włącz ją ręcznie jak będziesz gotów." + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "Upłynął limit czasu połączenia %s. Jeżeli dane serwera wprowadzono poprawnie, na ogół jest to spowodowane działaniem zapory sieciowej blokującej połączenie - sprawdź to u dostawcy hostingu. " + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "Obecny motyw nie został znaleziony; aby zapobiec problemu z załadowaniem strony, twój motyw został przywrócony do domyślnego motywu" + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "Przywracanie zakończone niepowodzeniem..." + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "Wiadomości:" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "Wykryto linię SQL, której długość przekracza maksymalny rozmiar pakietu, i która nie może zostać podzielona; ta linia nie będzie przetworzona i zostanie odrzucona: %s" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "Katalog nie istnieje" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "Adres email nowego użytkownika" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "Nazwa nowych użytkowników" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "Administracyjny klucz API" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "Nazwa użytkownika Administratora" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "Konto Rackspace (UK lub US)" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "Wprowadź swoją nazwę użytkownika administratora / klucz API Rackspace (tak, aby Rackspace mógł uwierzytelnić swoje uprawnienie do tworzenia nowych użytkowników), a następnie wpisz nową nazwę użytkownika (unikalną) oraz adres e-mail dla nowego użytkownika i nazwę kontenera." + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "Utwórz nowy kontener i użytkownika API" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "Klucz API: %s" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "Hasło: %s" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "Nazwa użytkownika: %s" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "Operacja Cloud Files zakończona niepowodzeniem (%s)" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "Konflikt: adres email lub użytkownik już istnieje" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "Powinieneś podać poprawny nowy adres email" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "Musisz wprowadzić kontener" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "Powinieneś podać nową nazwę użytkownika" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "Musisz wprowadzić klucz API Administratora" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "Musisz podać nazwę użytkownika administratora" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "Utwórz nowego użytkownika API z dostępem tylko do tego kontenera (zamiast do całego konta)" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "Dodaje rozszerzone możliwości dla użytkowników Rackspace Cloud Files" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "Rackspace Cloud Files, rozszerzone" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "Kontener Cloud Files" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "Klucz API Cloud Files" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "Aby utworzyć nowego pod-użytkownika API Rackspace oraz klucz API który ma dostęp tylko to tego kontenera, użyj następującego dodatku." + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "Nazwa użytkownika Cloud Files" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "Londyn (LON)" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "Hong Kong (HKG)" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "Północna Wirginia (IAD)" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "Chicago (ORD)" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "Sydney (SYD)" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "Dallas (DFW) (domyślne)" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "Region składowania Cloud Files" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "Konta utworzone na rackspacecloud.com są amerykańskie, konta utworzone na rackspacecloud.co.uk są brytyjskie." + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "Konto Rackspace (zlokalizowane-UK lub US)" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "Konta utworzone na rackspacecloud.com są kontami w Stanach Zjednoczonych (US); konta utworzone na rackspace.co.uk są kontam w Wielkiej Brytanii (UK)" + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "Autoryzacja nie powiodła się (sprawdzić poświadczenia)" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "Wystąpił nieznany błąd podczas próby połączenia z UpdraftPlus.com" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "Utwórz" + +#: admin.php:556 +msgid "Trying..." +msgstr "Próbuję..." + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "Hasło do konsoli nowego użytkownika RackSpace jest (nie zostanie wyświetlone ponownie):" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "(gdy odszyfrowane)" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "Błędne dane:" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "Kopia zapasowa nie istnieje w historii kopii." + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "Twoja instalacja WordPress zawiera stare katalogi ze stanu sprzed przywracania / migracji (informacje techniczne: są z przyrostekiem, -old). Należy nacisnąć ten przycisk, aby usunąć tak szybko jak potwierdzisz, że przywracanie zadziałało." + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "Podział linii w celu uniknięcia przekroczenia maksymalnego rozmiaru pakietu" + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "Twój użytkownik bazy danych nie ma uprawnień do usunięcia tabel. Będziemy próbować przywrócić poprzez proste opróżnianie tabel; to powinno działać tak długo, jak dane są przywracane z wersji WordPressa z taką samą strukturę bazy danych (%s)" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "Nowy prefiks tabeli: %s" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "Uprawnienia plików nie pozwalają na przesuwanie i zachowanie danych; zamiast tego zostaną one usunięte." + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "%s: Ten katalog już istnieje i zostanie zastąpiony" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "Nie można przenieść plików na swoje miejsce. Sprawdź swoje uprawnienia do plików." + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "Nie można przenieść nowych plików na miejsce. Sprawdź swój folder wp-content/upgrade." + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "Nie można przenieść starych plików z drogi." + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "Usuwanie starych danych..." + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "Dodaj inny adres..." + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "Wprowadź tutaj adresy, na które ma zostać wysłany raport po zakończeniu wykonywania kopii zapasowej." + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "Raporty email" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "Suma kontrolna %s: %s." + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "plików: %s" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "Skorzystaj z sekcji \"Raportowanie\" aby skonfigurować adres e-mail." + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr "(z ostrzeżeniami (%s))" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr " (z błędami (%s))" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "Informacje debugowania" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "Wysłane do:" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "Zajęło:" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "Ostrzeżenia" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "Błędy" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "Błędy / ostrzeżenia:" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "Zawiera:" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "Wykonywanie kopii zapasowej rozpoczęło się:" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "Raport kopii zapasowej" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "%d godzin, %d minut, %d sekund" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "%d błędów, %d ostrzeżeń" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "%s uwierzytelnienie" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "%s błąd: %s" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "%s logo" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "Oczekiwana odpowiedź nie została zwrócona przz %s - sprawdź plik dziennika aby uzyskać więcej szczegółów." + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "Wymagany moduł PHP (%s) nie jest zainstalowany - poproś swoją firmę hostingową o włączenie go." + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "Więcej opcji jest dostępnych w dodatku \"%s\"." + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "Zostanie użyty adres email administratora Twojej strony (%s)." + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "Połącz" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "Więcej opcji do raportowania dostępnych jest w dodatku \"Raportowanie\"." + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "(wersja: %s)" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "Należy pamiętać, że serwery pocztowe mają tendencję do ograniczenia rozmiaru obsługiwanych plików; zazwyczaj %s Mb; Kopie zapasowe większe niż jakiekolwiek limity nie mogą docierać." + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "Jeżeli metoda przechowywania na email jest wybrana, wyślij również całą kopię zapasową" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "Ostatni stan:" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "Kopia zapasowa zawiera:" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "Zrobiono kopię: %s" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "Plik dziennika został dołączony do tej wiadomości." + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "Nieznany/nieoczekiwany błąd - proszę otworzyć sprawę w centrum pomocy" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "Tylko baza danych (pliki nie zostały włączone to tego harmonogramu)" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "Baza danych (kopia plików nie skończyła się)" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "Tylko pliki (baza danych nie została włączona do tego harmonogramu)" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "Pliki (kopia zapasowa bazy danych nie została zakończona)" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "Pliki i baza danych" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "(Dotyczy to wszystkich wtyczek kopii zapasowych WordPress o ile nie zostały wyraźnie stworzone z kompatybilnością dla sieci witryn)." + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "Bez aktualizacji, UpdraftPlus pozwala każdemu administratorowi strony na modyfikowanie ustawień wtyczki (w tym dostęp do danych, haseł, formularzy) oraz przywracanie (włączając w to modyfikacje, np.: zmienione hasła) całej sieci wirtyn." + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "Instalacje WordPress typu \"multisite\" są wspierane przez UpdrafPlus Premium lub przez dodatek \"Multisite\"." + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "To jest instalacja WordPress typu \"multi-site\" (tzw. sieciowa)." + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "UpdraftPlus ostrzeżenie:" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "(lub połącz się używając formularza na tej stronie, jeżeli już kupiłeś)" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "kliknij, proszę, w ten link, aby zaktualizować wtyczkę i ją aktywować" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "kliknij, proszę, w ten link, aby zaktualizować wtyczkę i pobrać jej najnowszą wersje" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "ostatnie" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "Twoja wersja: %s" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "Już to masz" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "Wsparcie UpdraftPlus" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "Aktualizacja zawierająca Twoje dodatki jest dostępna dla UpdraftPlus - proszę kliknąć ten link aby ją zainstalować." + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "Dodatki UpdraftPlus" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "Aktualizacja UpdraftPlus jest dostępna - kliknij ten link aby ją zainstalować." + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "Witryna UpdraftPlus.com zwróciła odpowiedź, która nie została zrozumiana." + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "Twój adres e-mail oraz hasło nie zostały rozpoznane przez UpdraftPlus.Com" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "Witryna UpdraftPlus.com zwróciła odpowiedź, której nie zrozumiano (dane: %s)" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "Witryna UpdraftPlus.com odpowiedziała, ale odpowiedź nie została zrozumiana." + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "Nie udało się połączyć z UpdraftPlus.Com" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "Raportowanie" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "Opcje (surowe)" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "Wyślij raport wyłącznie w przypadku wystąpienia błędów / ostrzeżeń" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "URL z zawartością:" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "Zobacz również dodatek \"More Files\" w naszym sklepie." + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "Ilość wolnego miejsca na Twoim koncie hostingowym jest bardzo mała - pozostało tylko %s Mb" + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "Ilość pamięci RAM przydzielonej PHP jest bardzo niska (%s Mb) - powinieneś zwiększyć ten parametr w celu uniknięcia błędów związanych z niewystarczającą ilością pamięci (aby uzyskać więcej pomocy, skonsultuj się ze swoim dostawcą usług hostingowych)" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "Zarządzaj dodatkami" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "Kup to" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "Pobierz to ze sklepu UpdraftPlus.Com" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "aktywuj to na tej stronie" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "Masz nieaktywny zakup" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "Przypisane do tej strony" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "Dostępne dla tej strony (za pośrednictwem zakupu \"all-addons\")" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "(najprawdopodobniej wersja przedprodukcyjna lub nieaktualna)" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "Przejdź tutaj" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "Potrzebujesz wsparcia?" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "Wystąpił błąd podczas próby odświeżenia listy Twoich dodatków." + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "Odebrano nieznaną odpowiedź: " + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "Uprawnienia nie przyznane - nieprawidłowe dane logowania" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "Proszę czekać, przetwarzamy uprawnienia..." + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "Podczas próby połączenia z UpdraftPlus.Com wystąpiły błędy:" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "Jesteś aktualnie niepołączony z kontem UpdraftPlus.Com" + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "Jeżeli kupiłeś nowe rozszerzenia, kliknij w ten link aby odświeżyć swoje połączenie." + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "Jesteś aktualnie połączony z kontem UpdraftPlus.Com" + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "Zainteresowany szczegółami na temat bezpieczeństwa Twojego hasła UpdraftPlus.Com? Przeczytaj więcej tutaj." + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "Zapomniałeś szczegółów?" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "Nie masz jeszcze (darmowego) konta? Załóż konto!" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "Połącz się ze swoim kontem UpdraftPlus.Com" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "Wersja PHP na Twoim serwerze www jest zbyt stara (" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "Wygląda na to, że masz zainstalowaną przestarzałą wersję wtyczki Updraft - może się pomyliłeś?" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "Przejdź tutaj aby rozpocząć instalację." + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "UpdraftPlus nie jest jeszcze zainstalowane." + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "Przejdź tutaj aby aktywować." + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "UpdraftPlus jeszcze nie jest aktywowane." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "Przejdź tutaj aby się połączyć." + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "Jeszcze nie połączyłeś się ze swoim kontem UpdraftPlus.Com aby umożliwić pobranie listy zakupionych przez Ciebie dodatków." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "Bez tego, szyfrowanie będzie o wiele wolniejsze." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "Twój serwer www nie ma zainstalowanego modułu %s." + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "(Wygląda na to, że jesteś już zalogowany, ale możesz się zalogować ponownie i odświeżyć swój dostęp, jeżeli wystąpił problem)." + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "Upuść tutaj pliki kopii zapasowej" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "zarządzaj WordPress-em z wiersza poleceń - zaoszczędzisz mnóstwo czasu" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "Wypróbuj WordShell" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "Potrzebujesz więcej opcji lub płatnego, gwarantowanego wsparcia? Sprawdź UpdraftPlus.Com" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "Serwer www zwrócił błąd (spróbuj ponownie lub przejrzyj logi serwera www)" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "Operacja odtwarzania kopii zapasowej rozpoczęła się. Nie klikaj Stop ani nie zamykaj okna przeglądarki dopóki operacja nie zakończy się." + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "Jeżeli wykluczysz zarówno bazę danych jak i pliki, wówczas wykluczysz wszystko!" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "Strona domowa portalu:" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "Opcje magazynu zdalnego" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "(logi znajdziesz na stronie ustawień UpdraftPlus, jak zawsze)..." + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "Zapamiętaj tę opcję do następnego razu (jeszcze będziesz miał okazję ją zmienić)" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "Wysyłanie nie powiodło się" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "Możesz zapisać kopię zapasową w więcej niż jednym miejscu po zainstalowaniu dodatku." + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "Uwaga: pasek postępu poniżej bazuje na etapach, NIE czasie. Nie zatrzymuj wykonywania kopii zapasowej tylko dlatego, że pasek pozostaje dłużej w jednym miejscu - tak ma być." + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "(%s%%, plik %s z %s)" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "Poczytaj więcej aby dowiedzieć się jak to działa..." + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "Błąd: Udało się zalogować, ale nie udało się utworzyć pliku w tej lokalizacji." + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "Błąd: udało się zalogować i przejść do wskazanego katalogu, jednak nie udało się się utworzyć pliku w tym katalogu." + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "Użyj SCP zamiast SFTP" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "Użytkownik SCP/SFTP" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "Host SCP/SFTP" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "Próba wysłania kopii zapasowej emailem nie powiodła się (najprawdopodobniej rozmiar kopii zapasowej był zbyt duży dla tej metody)" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "Kopia jest z: %s" + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "Wynik testu ustawienia %s:" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "(Nie skończone)" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "Jeżeli widzisz więcej kopii zapasowej niż się spodziewałeś, jest to prawdopodobnie spowodowane tym, że stare kopie nie są kasowane przed zakończeniem nowych." + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "Nie umieszczaj go wewnątrz katalogu Uploads lub Plugins, w przeciwnym razie spowodujesz rekurencję (kopia kopii kopii...)" + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "Tutaj UpdraftPlus zapisuje utworzone początkowo pliki zip. Twój serwer www musi mieć uprawnienie do zapisu w tym katalogu. Katalog znajduje się w Twoim katalogu z zawartością (domyślnie jest to wp-content)" + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "ID zadania: %s" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "ostatnia aktywność: %ss temu" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "następne uruchomienie: %d (po %ss)" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "Nieznany" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "Zakończono wykonywanie kopii zapasowej" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "Oczekiwanie na zaplanowany czas ponowienia z powodu błędów" + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "Zmniejszanie starych zestawów kopii zapasowych" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "Przesyłanie plików do magazynu zdalnego" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "Zaszyfrowana baza danych" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "Szyfrowanie bazy danych" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "Utworzono kopię zapasową bazy danych" + +#: admin.php:3359 +msgid "table: %s" +msgstr "tabela: %s" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "Tworzenie kopii zapasowej bazy danych" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "Utworzono archiwa zip kopii zapasowych plików" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "Tworzenie archiwów zip kopii zapasowych plików" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "Tworzenie kopii zapasowej rozpoczęło się" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "Kopie zapasowe w toku:" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "Scheduler jest wyłączony dla tej instalacji WordPress, przy użyciu ustawienia DISABLE_WP_CRON. Wykonywanie kopii zapasowych nie może być zaplanowane (włączając opcję "Backup Now") dopóki nie włączysz schedulera (bądź manualnie, bądź też poprzez wyłączenie opcji DISABLE_WP_CRON)." + +#: restorer.php:646 +msgid "file" +msgstr "plik" + +#: restorer.php:639 +msgid "folder" +msgstr "folder" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "UpdraftPlus próbował stworzyć %s w Twoim katalogu z zawartością, ale nie udało się. Proszę sprawdź uprawnienia do plików / katalogów i zezwól na zapis (%s)." + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "Wykonywanie kopii zapasowej nie zakończyło się; zaplanowano wznowienie" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "Twoja strona jest odwiedzana zbyt rzadko, w związku z czym UpdraftPlus nie otrzymuje zaplanowanej ilości zasobów; proszę, przeczytaj tę stronę:" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "Uwierzytelnianie %s nie może przejść dalej, bo coś innego na Twojej stronie mu przeszkadza. Spróbuj wyłączyć inne swoje wtyczki i przełączyć do domyślnego motywu. (W szczególności, gdy szukasz elementu, który wysyła dane wyjściowe (najprawdopodobniej ostrzeżenia PHP/błędy) zanim strona zacznie. Wyłączenie jakiś ustawień debugowania może pomóc)." + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "Twój limit pamięci PHP (ustawiony przez firmę hostingową) jest bardzo niski. UpdraftPlus próbował go podnieść, ale nie udało się. Wtyczka może walczyć z limitem pamięci mniejszej niż 64 Mb - zwłaszcza jeśli masz bardzo duże przesłane pliki (choć z drugiej strony, wiele stron będzie skuteczne z limitem 32 MB - Twoje doświadczenia mogą ulec zmianie)." + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "Postępowanie z aktualizacją" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "Nie przerywaj po naciśnięciu przycisku dalej widocznego poniżej - czekaj na wykonanie kopii zapasowej, aby móc zakończyć." + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "Automatyczne tworzenie kopii zapasowych UpdraftPlus. " + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "Wystąpiły błędy:" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "Tworzenie kopii zapasowej z UpdraftPlus..." + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "Automatyczne tworzenie kopii zapasowej" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "Tworzenie kopii zapasowej bazy danych z UpdraftPlus..." + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "Nie masz wystarczających uprawnień, aby aktualizować tą stronę." + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "motywy" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "wtyczki" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "Automatyczne uruchamianie kopii zapasowej..." + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "Tworzenie kopii zapasowej %s i bazy danych z UpdraftPlus..." + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Automatyczne tworzenie kopii zapasowych (w stosownych przypadkach) wtyczek, motywów i bazy danych WordPressa z UpdraftPlus przed aktualizacją" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "Jeśli nie jesteś pewien, powinieneś przerwać; w przeciwnym razie możesz zniszczyć instalację WordPressa." + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "Nie wygląda to jak ważna kopia zapasowa rdzenia WordPressa - brakuje pliku %s." + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "Nie można otworzyć pliku zip (%s) - nie można go wstępnie zbadać, aby sprawdzić integralność." + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "Nie można odczytać pliku zip (%s) - nie można go wstępnie zbadać, aby sprawdzić integralność." + +#: admin.php:2310 +msgid "More plugins" +msgstr "Więcej wtyczek" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "Wsparcie" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "UpdraftPlus nie był w stanie znaleźć prefiksu tabeli podczas skanowania kopii zapasowej bazy danych." + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "Tej kopii zapasowej bazy danych brakuje tabel podstawowych rdzenia WordPressa: %s" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "Importowanie z nowszej wersji WordPressa (%s) do starszej (%s). Nie ma gwarancji, że WordPress może to obsłużyć." + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "Baza danych raczej nie jest ważna, ponieważ zajmuje niewiele miejsca (rozmiar: %s Kb)." + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "Aktualizacja Motywu" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "Aktualizacja Wtyczki" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "Bądź bezpieczny z automatyczną kopią zapasową" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "Odwołaj (dla %s tygodni)" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "Dodana ścieżka (%s) nie istnieje - resetowanie (%s)" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "Jeżeli możesz przeczytać te słowa po zakończeniu ładowania strony, występuje problem z JavaScript lub jQuery na tej stronie." + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "Plik został przesłany. " + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "Nieznany status odpowiedzi serwera:" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "Nieznana odpowiedź serwera:" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "Ten klucz deszyfrowania będzie próbował:" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "Śledź ten link do próby szyfrowania i pobierz plik bazy danych do komputera." + +#: admin.php:584 +msgid "Upload error" +msgstr "Błąd przesyłania" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "Plik ten nie wydaje się być zaszyfrowanym archiwum bazy danych UpdraftPlus (są to pliki .gz.crypt które mają nazwy jak: backup_ (czas) _ (nazwa witryny) _ (kod) _db.crypt.gz)." + +#: admin.php:582 +msgid "Upload error:" +msgstr "Błąd przesyłania:" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "(upewnij się, że próbowano załadować plik zip wcześniej utworzony przez UpdraftPlus)" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "a następnie, jeśli chcesz," + +#: admin.php:572 +msgid "Download to your computer" +msgstr "Pobierz na komputer" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "Usuń z serwera www" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "Przykłady kompatybilnych z S3 dostawców przechowywania:" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "Nie usuwa żadnych archiwów po rozpakowaniu ich, ponieważ nie było wirtualnej chmury dla tej kopii zapasowej" + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "Wygląda na to, że brakuje jednego lub więcej archiwów z tego zestawu archiwów. " + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "(%d archiwum/archiwa w zestawie)." + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "Każde dzielenie archiwów:" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "Błąd: serwer wysłał nam odpowiedź (JSON), które nie rozumiemy." + +#: admin.php:563 +msgid "Warnings:" +msgstr "Ostrzeżenia:" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "Błąd: serwer wysłał pustą odpowiedź." + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "To wygląda jak plik utworzony przez UpdraftPlus, ale ta instalacja nic nie wie na temat tego typu obiektu: %s. Być może trzeba zainstalować dodatek?" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "Pliki kopii zapasowej archiwum zostały przetworzone, ale z pewnymi błędami. Trzeba będzie zrezygnować i skorygować ewentualne problemy przed ponowną próbą." + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "Pliki kopii zapasowej archiwum zostały przetworzone, ale z ostrzeżeniami. Jeśli wszystko jest dobrze, to teraz naciśnij Przywróć ponownie, aby kontynuować. W przeciwnym wypadku anuluj i skoryguj w pierwszej kolejności ewentualne problemy." + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "Pliki kopii zapasowej archiwum zostały pomyślnie przetworzone. Teraz naciśnij przycisk Przywróć ponownie, aby kontynuować." + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "Ten zestaw archiwów kopii zapasowej wydaje się posiadać brakujące archiwa: %s" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "Pliku (%s) został znaleziony, ale ma inny rozmiar (%s) niż ten, którego oczekiwano (%s) - może być uszkodzony." + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "Plik został znaleziony, ale ma zerowy rozmiar (trzeba przesłać go ponownie): %s" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "Nie znaleziono pliku (należy go przesłać): %s" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "Nie istnieje taki zestaw kopii zapasowych" + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "Nie można było znaleźć archiwum kopii zapasowej dla tego pliku. Zdalna metoda przechowywania w użyciu (%s) nie pozwala na pobieranie plików. Aby wykonać jakiekolwiek przywracanie przy pomocy UpdraftPlus, trzeba będzie uzyskać kopię tego pliku i umieścić go wewnątrz folderu roboczego UpdraftPlus." + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "Nie można przenieść katalogu (sprawdź uprawnienia do plików i przydział dysku): %s" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "Nie można przenieść pliku (sprawdź uprawnienia do plików i przydział dysku): %s" + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "Przenoszenie rozpakowanej kopii zapasowej do tego miejsca... " + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "Nie udało się otworzyć pliku zip (%s) - %s" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "WordPress, ścieżka katalogu głównego serwera: %s" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "%s punkt końcowy" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "...i wiele więcej!" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "S3 (kompatybilny)" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "Plik nie występuje lokalnie - potrzebuje pobrania z magazynu zdalnego" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "Spójrz dla %s archiwum: nazwa pliku: %s" + +#: admin.php:4836 +msgid "Final checks" +msgstr "Sprawdzanie końcowe" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "Sprawdź to, aby usuwać z Twojego serwera zbędne pliki kopii zapasowej po zakończeniu tworzenia kopii zapasowej (tzn. gdy usuniesz zaznaczenie wszystkie pliki wysłane zdalnie pozostaną na miejscu, zaś jakieś pliki które są przechowywane lokalnie nie będą podlegały ograniczeniom retencyjnych)." + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "Upuść zaszyfrowane pliki baz danych (pliki db.gz.crypt), aby wysłać je do deszyfrowania." + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "Twoja ścieżka katalogów serwera wp-content: %s" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "Surowa historia kopii zapasowej" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "Pokaż surową kopię zapasową oraz listę plików" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "Przetwarzanie plików - proszę czekać..." + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "Proszę zapoznać się z tym FAQ, by uzyskać pomoc, co można z tym zrobić." + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "Twoja instalacja WordPressa ma problem z wyprowadzaniem dodatkowego miejsca. To może zaburzyć kopie zapasowe, które można stąd pobrać." + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "Nie udało się otworzyć pliku bazy danych" + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "Nie udało się napisać odszyfrowanej bazy danych do systemu plików." + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "Znane kopie zapasowe (surowe)." + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "Nie można policzyć plików w tym katalogu." + +#: restorer.php:939 +msgid "Files found:" +msgstr "Znalezione pliki:" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "Wykorzystanie katalogu z kopii zapasowej: %s" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "Żądany silnik tabeli (%s) nie jest obecny - zmiana do MyISAM." + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "To wygląda na migrację (backup strony z innego adresu URL), ale nie sprawdzisz opcji wyszukiwana i zamiany bazy danych. To zwykle jest błędem." + +#: admin.php:4908 +msgid "file is size:" +msgstr "plik ma rozmiar:" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "Kliknij tutaj, aby uzyskać więcej informacji." + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "Niektóre pliki są nadal pobierane lub przetwarzane - proszę czekać." + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "Ten zestaw kopii zapasowej jest z innej strony - nie jest to odbudowa, ale migracja. Potrzebujesz dodatek Migrator, żeby to robić." + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "Używana strefa czasowa znajduje się w ustawieniach WordPressa, w Ustawienia -> Ogólne." + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "Wprowadź w formacie HH:MM (na przykład 14:22)." + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "%s przesyłanie nie powiodło się" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "%s login nieprawidłowy" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "Nie wydaje się, aby było uwierzytelnienie z %s" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "Brak dostępu do %s przy usuwaniu (zobacz plik dziennika, by uzyskać więcej informacji)" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "Nie wydaje się, aby uwierzytelnianie z %s (podczas usuwania)" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "Błąd Dropboxa: %s (zajrzyj w plik dziennika, by uzyskać więcej informacji)" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "Błąd - nie udało się pobrać pliku z %s" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "Błąd - plik nie istnieje w %s" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "%s Błąd" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "%s błąd - nie udało się przesłać pliku" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "%s błąd - nie udało się ponownie zamontować składników" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "%s uwierzytelnianie nie powiodło się" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "Błąd: %s" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "Katalog kopii zapasowej istnieje, ale nie jest zapisywalny." + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "Archiwizacja danych katalogu nie istnieje." + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "Ostrzeżenie: %s" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "Przebieg ostatniej kopii zapasowej:" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "Napotkano bardzo duży plik: %s (rozmiar: %s Mb)" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "%s: nieczytelny plik - nie może być zapisany w kopii zapasowej" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "Tabela %s ma bardzo wiele wierszy (%s) - mamy nadzieję, że Twoja firma hostingowa daje wystarczająco dużo środków, aby zrzucić tabelę w kopii zapasowej" + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "Wystąpił błąd podczas zamykania pliku końcowego bazy danych" + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "Napotkano ostrzeżenia:" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "Najwyraźniej udało się wykonać kopię zapasową (z ostrzeżeniami) i została ona zakończona" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "Twoja ilość wolnego miejsca na dysku jest bardzo niska - zostaje tylko %s Mb" + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "Nowa strona:" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "BŁĄD: Adres URL już zajęty." + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "Strona przeniesiona (z Updraft Plus)" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "Wprowadź szczegóły, gdzie ta nowa strona ma się znajdować w wielostanowiskowej instalacji:" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "Informacje potrzebne, aby kontynuować:" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "Motyw aktywujący sieć:" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "Przetworzona wtyczka:" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "Sprawdź swoje uprawnienia do pliku: nie można skutecznie stworzyć i wprowadzić katalogu:" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "Niektóre serwery reklamują szyfrowane FTP jako dostępne, ale potem kończą się (po długim czasie), gdy będziesz próbował z nich skorzystać. Jeśli znajdziesz to zdarzenie, przejdź do \"Opcje zaawansowane\" (poniżej) i wyłącz SSL." + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "Serwer sieci Web w instalacji PHP nie zawiera wymaganego modułu (%s). Prosimy o kontakt z dostawcą hostingowym w celu pomocy i prośby, aby to włączyć." + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "Prosimy o sprawdzenie poświadczeń dostępu." + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "Błąd zgłoszony przez %s:" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "Proszę podać wymagane informacje, a następnie kontynuować." + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "Nie można upuścić tabeli, natomiast usunąć (%s)" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "Nie można utworzyć nowej tabeli, więc pomijam to polecenie (%s)" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "Informacje strony:" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "Użytkownik bazy danych nie ma uprawnień do tworzenia tabel. Postaramy się przywrócić opróżnione tabele i to powinno działać tak długo, jak) przywracasz dane z wersji WordPressa z samej struktury bazy danych oraz b) importujesz bazę danych, która nie zawiera żadnych tabel, które nie są już obecne na importowanej witrynie." + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "Ostrzeżenie:" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "Używasz na WordPress MultiSite - ale kopia zapasowa nie jest z witryny Multisite." + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "Pomijanie przywracania jądra WordPress podczas importowania jednego miejsce do instalacji na wielu serwerach. Jeśli miałeś coś niezbędnego w katalogu WordPress, ponownie trzeba będzie dodać go ręcznie z pliku zip." + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "Serwer sieci Web w instalacji PHP nie zawierał wymaganego (dla %s), modułu (%s). Prosimy o kontakt z dostawcą hostingowym w celu wsparcia i poproszenia, aby go włączył." + +#: admin.php:596 +msgid "Close" +msgstr "Zamknij" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "Nieoczekiwana odpowiedź:" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "Aby wysłać więcej niż jeden adres, oddziel każdy adres przecinkiem." + +#: admin.php:576 +msgid "PHP information" +msgstr "Informacja PHP" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "odnaleziono wykonywalny plik zip:" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "pokaż informację PHP (phpinfo)" + +#: admin.php:2627 +msgid "Get it here." +msgstr "Pobierz go tutaj." + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "Następnie wypróbuj naszą wtyczkę \"Migrator\". Po użyciu go raz, będziesz musiał porównać cenę zakupu do czasu, który byś potrzebował, aby skopiować witrynę ręcznie." + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "Czy chcesz przenieść lub sklonować/powielić stronę?" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "Przeczytaj ten artykuł, aby zobaczyć krok po kroku jak to zrobić." + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "Migracja strony" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "Usuwanie ... należy dać czas dla komunikacji z magazynu zdalnego, aby w pełni wykonać operację." + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "Również usunąć z magazynu zdalnego" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "Najnowsze aktualności UpdraftPlus.com:" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "Klon/Migracja" + +#: admin.php:2304 +msgid "Premium" +msgstr "Premia" + +#: admin.php:2305 +msgid "News" +msgstr "Aktualności" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "Nie znaleziono zestawu kopii zapasowej" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "%s - nie może wycofać tego podmiotu; odpowiedni katalog nie istnieje (%s)" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "Link RSS" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "Link bloga" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "Subskrybuj blog UpdraftPlus, aby dostawać aktualne informacje i oferty" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "Testowanie %s ustawień..." + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "Można też umieścić je ręcznie do swojego katalogu UpdraftPlus (zwykle wp-content/updraft), np. przez FTP, a następnie użyć \"skanuj\" w linku powyżej." + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "Tryb debugowania UpdraftPlus jest włączony. Możesz zobaczyć debugowanie ogłoszeń na tej stronie nie tylko dla UpdraftPlus, ale także z innej zainstalowanej wtyczki. Upewnij się, że widzisz ogłoszenie z UpdraftPlus przed podjęciem żądania pomocy technicznej." + +#: admin.php:880 +msgid "Notice" +msgstr "Ogłoszenie" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "Napotkane błędy:" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "Ponowne skanowanie (szuka kopii zapasowych, które zostały dodane ręcznie do wewnętrznego przechowywania kopii zapasowych)..." + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "Rozpoczęto szukanie tego podmiotu" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "Przechowuj w" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "\"%s\" nie ma klucza podstawowego, potrzebna instrukcja zmiany w szeregu %s." + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "wiersze: %d" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "Upłynęło czasu (sekundy):" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "Błędy:" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "Uruchomiona aktualizacja poleceń SQL:" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "Zmiany dokonane:" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "Badane wiersze:" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "Badane tabele:" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "Nie udało się uzyskać listy tabel" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "Szukaj w bazie danych i zastąp: zastąp %s w zrzucie kopii zapasowej %s" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "Ostrzeżenie: adres URL bazy danych (%s) jest inny od tego, którego oczekiwaliśmy (%s). " + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "Nic nie zrobiono: strona URL jest już: %s" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "Błąd: nieoczekiwanie pusty parametr (%s, %s)" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "Ta opcja nie została wybrana." + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "Baza danych: wyszukiwanie i zamiana strony URL" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "Nie powiodło się: nie rozumiem wyniku zwróconego przez %s operację." + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "Nie powiodło się: operacja %s nie była w stanie wystartować." + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "(dowiedz się więcej)" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "Znajdź i zastąpić lokalizację witryny w bazie danych (migracja)" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "Wszystkie odniesienia do lokalizacji witryny w bazie danych zostaną zastąpione aktualnym adresem URL witryny, która jest: %s" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "Przesłane pliki bloga" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "Musisz-użyć wtyczek" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "Nie masz dostępu do tej części strony." + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "Nie masz wystarczających uprawnień, aby uzyskać dostęp do tej strony." + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "Instalacja na wielu serwerach" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "zaczynając o godzinie" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "Awaria: Port musi być liczbą całkowitą." + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "hasło" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "nazwa użytkownika" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "nazwa hosta" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "Gdzie zmienić katalog po zalogowaniu się - często jest to w katalogu domowym." + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "ścieżka do katalogu" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "Hasło" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "Port" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "Host" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "%s Błąd: Nie udało się pobrać" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "Sprawdź swoje uprawnienia do plików: nie można pomyślnie utworzyć i zatwierdzić:" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "Nie %s znaleziono" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "Jawne szyfrowanie jest używane domyślnie: aby wymusić niejawne szyfrowanie (port 990), dodaj :990 do serwera FTP poniżej." + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "Szyfrowanie FTP jest dostępne, więc będzie automatycznie próbował szyfrować (przed wycofaniem się bez szyfrowania, jeśli się nie powiedzie), chyba, że ​​je wyłączysz za pomocą opcji ekspertów. Przycisk Test 'ftp login' powie, jaki typ połączenia jest używany." + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "Brak kopii zapasowej z %s katalogów: nie znaleziono tutaj kopii zapasowych" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "Uważaj, co wpisujesz - jeśli wpiszesz / to naprawdę spróbuje utworzyć paczkę zip zawierającą całość serwera WWW." + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "Jeśli używasz tego, wpisz ścieżkę bezwzględną (nie pozostaje w stosunku do Twojej instalacji WordPressa)." + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "Jeśli nie jesteś pewien czy ta opcja istnieje, wtedy nie będzie tego chciał i powinien to wyłączyć." + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "Wpisz katalog:" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "Więcej plików" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "Jądro WordPressa (w tym wszelkie dodatki do katalogu głównego WordPressa)" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "Powyższe pliki zawierają wszystko, co w instalacji WordPress." + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "Nadpisz wp-config.php" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "Jądro WordPressa" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "Niepowodzenie: Nie byliśmy w stanie umieścić pliku w tym katalogu - proszę sprawdzić swoje dane." + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "Niepowodzenie" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "WebDAV URL" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "Zapis lokalny nie powiódł się: Nie udało się pobrać" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "Błąd otwarcia pliku zdalnego: Nie udało się pobrać" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "Klocek %s: wystąpił %s błąd" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "Nie znaleziono %s ustawień" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "Awaria: logowanie pomyślne, ale nie był w stanie utworzyć pliku w danym katalogu." + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "Sukces: udało nam się zalogować i potwierdzić naszą zdolność do tworzenia pliku w danym katalogu (wpisz login:" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "Awaria: logowanie niepomyślne do tych mandatów." + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "Awaria: brak podanych danych serwera." + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "Musi już istnieć" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "Jeśli chcesz szyfrowania (np. jprzechowujesz poufne dane biznesowe), to dodatek jest dostępny." + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "Tylko nieszyfrowane FTP jest obsługiwane regularnie przez UpdraftPlus." + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "Twoja %s nazwa konta: %s" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "choć nie było części zwróconej informacji jak się spodziewano - przebieg może się wahać" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "uwierzytelnianie Twojego %s konta" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "tam jest dodatek do tego." + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "Jeśli masz kopie zapasowe kilku stron w tym samym Dropboxie i chcesz zorganizować podfoldery, wówczas" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "Kopie zapasowe są zapisywane w" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "Potrzebujesz użyć podfolderów?" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "Błąd: nie udało się załadować pliku do %s (zajrzyj do pliku dziennika, by zobaczyć więcej)" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "Nie wygląda na to, aby była autoryzacja z Dropboxem" + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "Komunikacja z %s nie była szyfrowana." + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "Komunikacja z %s była szyfrowana." + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "Uzyskaliśmy dostęp do zasobu i byliśmy w stanie tworzyć w nim pliki." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "Z powodzeniem uzyskano dostęp do zasobu, ale próba utworzenia w nich pliku zakończyła się niepowodzeniem." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "Niepowodzenie" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "Niepowodzenie: nie mogliśmy uzyskać dostępu lub stworzyć tego zasobu. Prosimy o sprawdzenie poświadczeń dostępu, a jeśli te są poprawne, to spróbuj innej nazwy zasobu (jako inny %s użytkownik może już podjąć swoje imię). " + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "Region" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "Awaria: brak podanych danych zasobu." + +#: methods/s3.php:961 +msgid "API secret" +msgstr "API poufne" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "Wprowadź tylko nazwę zasobu lub zasób i ścieżkę. Przykłady: mójzasób, mójzasób/mojaścieżka. " + +#: methods/s3.php:853 +msgid "%s location" +msgstr "%s lokalizacja" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "%s tajny klucz" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "%s klucz dostępu " + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "Jeśli widzisz błędy dotyczące certyfikatów SSL, przejdź tutaj aby uzyskać pomoc." + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "Zdobądź klucz dostępu i tajny klucz z Twojej %s konsoli, następnie (wyjątkowy - wszyscy %s użytkownicy) nazwę zasobu (litery i cyfry) (i opcjonalnie ścieżkę) aby używać do przechowywania. Ten pojemnik zostanie utworzony dla Ciebie, jeśli już nie istnieje. " + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "%s Błąd: brak dostępu do zasobu %s. Sprawdź swoje uprawnienia i poświadczenia. " + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "%s Błąd: nie udało się pobrać %s. Sprawdź swoje uprawnienia i poświadczenia. " + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "%s ponowny błąd (%s): (zobacz plik dziennika, by uzyskać więcej informacji) " + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "%s przesłane (%s): ponowne niepowodzenie (zobacz plik dziennika, by uzyskać więcej informacji) " + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "%s kawałek %s: przesyłanie zakończone niepowodzeniem " + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "%s błąd: plik %s był niespodziewanie skrócony " + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "%s przesyłanie: przesyłanie identyfikatora dla wielu części zakończone niepowodzeniem - zobacz plik dziennika, by uzyskać więcej informacji. " + +#: methods/email.php:69 +msgid "Note:" +msgstr "Uwaga:" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "Kopia zapasowa WordPressa" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "Mamy dostęp do pojemnika i byliśmy w stanie tworzyć w nim pliki." + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "Błąd plików w chmurze - mamy dostęp do pojemnika, ale nie udało się utworzyć w nim plików" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "Awaria: brak danych pojemnika." + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "Nazwa użytkownika" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "Klucz API" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "Awaria: nie %s została podana." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "Moduł %s UpdraftPlusa wymagany s%. Proszę nie zgłaszać próśb o wsparcie; nie ma alternatywy." + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "Pojemnik plików wirtualnej chmury" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "Klucz API wirtualnej chmury" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "Nazwa użytkownika wirtualnej chmury" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "UK" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "US (domyślnie)" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "US lub UK chmura" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "Ponadto, powinieneś przeczytać FAQ." + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "Zdobądź swój klucz API z konsoli chmury Rackspace (przeczytaj instrukcje here), a następnie wybierz nazwę pojemnika używanego do przechowywania. Pojemnik ten zostanie utworzony dla ciebie, jeśli nie istnieje." + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "Test %s Ustawienia" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "Błąd podczas pobierania pliku zdalnego: Nie udało się pobrać (" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "Błąd otwarcia pliku lokalnego: Nie udało się pobrać" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "Błąd plików w chmurze - nie udało siię załadować pliku" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "%s Błąd: Nie udało się przesłać" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "%s Błąd: Nie udało się otworzyć pliku lokalnego" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "Błąd plików chmury - nie udało się utworzyć i uzyskać dostępu" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "Uwierzytelnianie plików z wirtualnej chmury nie powiodło się" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "Po zapisaniu ustawień (kliknij poniżej \"Zapisz zmiany\"), a następnie wróć tu raz i kliknij na ten link, aby zakończyć uwierzytelnianie z Google." + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "Uwierzytelnianie z Google" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "Tajemniczy klient." + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "Jeśli Google później pokazał komunikat \"invalid_client\", to nie wprowadzono poprawnego identyfikatora klienta (client ID)." + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "Cleint ID (identyfikator)" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "Musisz dodać kolejne upoważnienie kiedy zapyta o przekierowanie URL (pod \"Więcej opcji\")" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "Wybierz 'aplikację www' jako typ aplikacji." + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "Dla większej pomocy, w tym zrzuty ekranu, kliknij na ten link. Poniższy opis jest wystarczający dla bardziej zaawansowanych użytkowników." + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "%s jest doskonałym wyborem, ponieważ UpdraftPlus obsługuje pofragmentowane przesłane pliki - bez względu na to, jak duża jest witryna, UpdraftPlus może przesłać to w krótkim czasie i nie dać się udaremnić przez jego limity." + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "Konto nie ma uprawnień." + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "Nie udało się przesłać do %s" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "Konto pełne: na Twoim %s koncie zostało tylko%d bajtów, a plik do przesłania ma %d bajtów." + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "Jeszcze nie otrzymano tokena dostępu z Google - potrzebujesz autoryzacji lub ponownie zezwól na połączenie z Google Drive." + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "Uwierzytelnianie Twojego %s konta." + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "Sukces" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "Twoje %s wykorzystanie kontyngentu: %s %% używane, %s dostępne" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "Autoryzacja nie powiodła się" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "Nie odświeżono Google. To często oznacza, że wprowadzono błędnie identyfikator klienta lub, że nie został ponownie uwierzytelniony (poniżej) od czasu skorygowania tego. Sprawdź ponownie, a następnie kliknij jeszcze raz link uwierzytelniania. W końcu jeśli to nie pomoże, należy użyć trybu eksperta, aby wymazać wszystkie ustawienia i utworzyć nowy identyfikator klienta Google i zacząć od nowa." + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "przestrzegaj tego łącza, aby je zdobyć" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "%s wsparcie jest dostępne jako dodatek" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "Nie masz zainstalowanego dodatku %s UpdraftPlus - dostań go z %s" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "Potrzebujesz do ponownej autoryzacji z %s, jako że Twoje istniejące poświadczenia nie działają. " + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "OK" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "Zmieniono prefiks tabeli: zmiana %s obszaru tabel:" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "Zakończone: przetwarzane: %d w %.2f secondach" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "Wprowadzone zapytanie do bazy danych:" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "przywróć jako:" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "Prefiks starej tabeli:" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "Kopia zapasowa z:" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "Dostęp do bazy danych: Bezpośredni dostęp do MySQL nie jest dostępny, więc spadają z powrotem do wpdb (to będzie znacznie wolniejsze)" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "Nie udało się otworzyć pliku bazy danych" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "Nie udało się znaleźć pliku bazy danych" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "Ostrzeżenie: PHP tryb_bezpieczny jest aktywny na serwerze. Limity czasu są bardzo prawdopodobne. Jeśli to nastąpi, to będzie trzeba ręcznie przywrócić plik za pomocą phpMyAdmin lub inny sposób." + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "wp-config.php z kopii zapasowej: przywracanie (na życzenie użytkownika)" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "wp-config.php z kopii zapasowej: przywróć jako wp-config-backup.php" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "Nie udało się zapisać odszyfrowanej bazy danych do systemu plików" + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "Nie udało się utworzyć katalogu tymczasowego" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "Nie udało się usunąć katalogu roboczego po przywróceniu." + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "Nie można usunąć starego katalogu." + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "Sprzątanie śmieci..." + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "Przywracanie bazy danych (na dużej stronie może to zająć dużo czasu - jeśli czas dobiegnie końca(co może się zdarzyć, jeśli firma hostingowa nie skonfigurowała hostingu ograniczającego zasoby), należy użyć innej metody, np. phpMyAdmin)..." + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "Baza danych pomyślnie odszyfrowana." + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "Odszyfrowywanie danych (może chwilę potrwać)..." + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "Rozpakowywanie kopii zapasowej..." + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "Kopiowanie jednostki nie powiodło się." + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "Plik kopii zapasowej nie jest dostępny." + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "UpdraftPlus nie jest w stanie bezpośrednio przywrócić tego rodzaju jednostki. Musi zostać przywrócona ręcznie." + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "Nie można znaleźć jednego z plików do przywrócenia" + +#: admin.php:5009 +msgid "Error message" +msgstr "Komunikat o błędzie" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "Zapisy kopii zapasowej nie zawierają informacji na temat właściwego rozmiaru tego pliku." + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "Archiwum ma mieć rozmiar:" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "W przypadku składania wniosku o wsparcie, należy podać następujące informacje:" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "UWAGA: nie można znaleźć informacji, których podmioty są do przywrócenia." + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "UpdraftPlus Przywracanie: w toku" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "Ta kopia zapasowa nie istnieje w historii kopii zapasowych - przywracanie przerwane. Datownik:" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "Po naciśnięciu tego przycisku, będziesz mieć możliwość wyboru, które składniki chcesz przywrócić" + +#: admin.php:4572 +msgid "Press here to download" +msgstr "Naciśnij tutaj, aby pobrać" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "Usuń ten zestaw kopii zapasowej " + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "Dobre wiadomości: komunikacja witryny z %s może być szyfrowana. Jeśli pojawią się jakieś błędy z szyfrowaniem, spójrz w \"Ustawienia zaawansowane\", aby uzyskać pomoc." + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "Serwer sieci Web w PHP/instalacja Curl nie obsługuje połączenia HTTPS. Nie możemy przejść %s bez tego wsparcia. Prosimy o kontakt z Twoim dostawcą usługi hostingowej. %s Curl + https. Proszę nie składać żadnych próśb o wsparcie, nie ma tutaj alternatywy." + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "Serwer sieci Web w PHP/instalacji Curl nie obsługuje połączenia HTTPS. Komunikacja z %s będzie nieszyfrowana. Zapytaj sieć hostingową o zainstalowanie Curl/SSL w celu uzyskania zdolności do szyfrowania (poprzez dodatki)." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "Serwer sieci instalacji PHP nie zawiera wymaganego modułu (%s). Prosimy o kontakt z dostawcą usługi hostingowej." + +#: admin.php:4062 +msgid "Save Changes" +msgstr "Zapisz zmiany" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "Wybranie tej opcji obniża bezpieczeństwo zatrzymując UpdraftPlus z wykorzystaniem SSL do uwierzytelniania i zaszyfrowanych danych, tam gdzie to możliwe. Należy pamiętać, że niektórzy dostawcy pamięci w chmurze na to nie pozwalają (np. Dropbox), więc u tych dostawców to ustawienie nie będzie miało na nic wpływu." + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "Wyłącz SSL całkowiecie, kiedy jest to możliwe" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "Należy pamiętać, że nie wszystkie metody tworzenia kopii zapasowych w chmurze zawsze używają uwierzytelniania protokołu SSL." + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "Wybranie tej opcji obniża bezpieczeństwo powodując zatrzymanie UpdraftPlus z weryfikowania tożsamości zaszyfrowanych stron, które łączą się np. z Dropboxem czy Google Drive. Oznacza to, że UpdraftPlus będzie działał tylko za pomocą protokołu SSL do szyfrowania ruchu, a nie do uwierzytelniania." + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "Brak weryfikacji certyfikatów SSL" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "Domyślnie UpdraftPlus wykorzystuje własny magazyn certyfikatów SSL w celu weryfikacji tożsamości odległych miejsc (np. aby upewnić się, że komunikuje się z prawdziwym Dropbox, Amazon S3, itd., a nie z wrogiem). Trzymamy to na bieżąco. Jednak, jeśli masz błąd SSL, a następnie wybierzesz tą opcję (co powoduje, że Updraft będzie używało Twojego serwera) może to pomóc." + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "Używaj certyfikatów SSL serwera" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "Jeśli to nie pomoże sprawdź uprawnienia na serwerze lub zmień to do innego katalogu, który jest zapisywalny przez proces serwera WWW." + +#: admin.php:3697 +msgid "click here" +msgstr "kliknij tutaj" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "lub, aby zresetować tą opcję" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "Mam prawa do zapisu w podanym katalogu kopii zapasowej, czyli w porządku." + +#: admin.php:4009 +msgid "Backup directory" +msgstr "Katalog kopii zapasowej" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "Skasuj lokalne kopie zapasowe" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "kliknij, aby zobaczyć jakieś inne opcje; nie przejmuj się tym, chyba że masz wątpliwości lub jesteś ciekawy." + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "Pokaż ustawienia dla ekspertów" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "Ustawienia dla ekspertów" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "Tryb debugowania" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "Zaawansowane / Ustawienia debugowania" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "Żądanie rozpoczęcia tworzenia kopii zapasowej... " + +#: admin.php:591 +msgid "Cancel" +msgstr "Anuluj" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "Żaden" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "Wybierz miejsce zdalnego przechowywania" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "Ręcznie odszyfrowuj plik kopii zapasowej bazy danych" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "Wyrażenie szyfrujące bazę danych" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "Email" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "Wszystkie powyższe katalogi, z wyjątkiem samego jądra WordPressa, które można pobrać na nowo z WordPress.org." + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "Wyłączyć te:" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "Wszelkie inne katalogi wewnątrz wp-content" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "Uwzględnij pliki w kopii zapasowej" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "na przykład jeśli serwer jest zajęty w dzień i chcesz uruchomić w ciągu nocy" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "Aby ustalić czas, w którym kopia zapasowa powinna nastąpić," + +#: admin.php:3683 +msgid "Monthly" +msgstr "Co miesiąc" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "Co 2 tygodnie" + +#: admin.php:3681 +msgid "Weekly" +msgstr "Co tydzień" + +#: admin.php:3680 +msgid "Daily" +msgstr "Codziennie" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "Pobieranie pliku dziennika" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "Folder istnieje, ale twój serwer www nie ma uprawnień do jego zapisu." + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "Folder został stworzony, ale musieliśmy zmienić jego uprawnienia do plików na 777 (zapisywalne przez wszystkich), aby móc to zapisać. Należy skontaktować się z dostawcą usług hostingowych w celu sprawdzenia, czy nie spowoduje to żadnych problemów." + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "Żądanie do systemu plików aby utworzyć katalog nie powiodło się." + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "Usuń" + +#: admin.php:3418 +msgid "show log" +msgstr "pokaż plik dziennika" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "Spowoduje to usunięcie wszystkich ustawień UpdraftPlus - czy na pewno chcesz to zrobić?" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "ilość" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "Nota bene ilość ta była oparta, lub nie, o ostatnie zapisane opcje. " + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "Wszystkie (nieskompresowane) dane na dysku: " + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "Nie" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "Tak" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "wersja %s:" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "Aktualne zużycie pamięci" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "Maksymalne wykorzystanie pamięci" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "Serwer www:" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "Proszę sprawdzić UpdraftPlus Premium lub samodzielnie dodatki dla wielu stron (Multisite)." + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "Czy potrzebujesz wsparcia Wordpress Multisite (wiele stron)?" + +#: admin.php:2654 +msgid "Multisite" +msgstr "Wiele stron" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "Wykonaj jednorazową kopię zapasową." + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "Przeczytaj artykuł o przydatnych rzeczach, jakie powinieneś wiedzieć przed przywracaniem." + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "Możesz wyszukać i zastąpić bazy danych (dla migracji witryny do nowej lokalizacji/URL) z migratora dodatków - tu łlink, aby uzyskać więcej informacji" + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "%s opcje przywracania:" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "Będziesz musiał przywrócić to ręcznie." + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "Poniższy element nie może zostać przywrócony automatycznie: \"%s\"." + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "Twój serwer www ma włączony tak zwany tryb bezpieczny PHP (safe_mode)." + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "Wybierz składniki do przywrócenia" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "Przywracanie zastąpi w tej witrynie motywy, wtyczki, przesłane pliki, bazę danych i/lub inne katalogi zawartości (zgodnie z tym co jest zawarte w zestawie kopii zapasowych, i Twojej selekcji)." + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "Przywróć kopię zapasową z" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "Przywróć kopię zapasową" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "Usuń zestaw kopii zapasowych " + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "Pobierz błąd: serwer wysłał nam odpowiedź, które nie rozumie." + +#: admin.php:570 +msgid "You should:" +msgstr "Powinieneś:" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "Błąd:" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "obliczanie..." + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "UpdraftPlus - przesyłanie plików kopii zapasowej" + +#: admin.php:3020 +msgid "refresh" +msgstr "odśwież" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "Web-server miejsce na dysku używane przez UpdraftPlus" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "Google Drive" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "Jeśli tego używaszu, przełącz tryb Turbo/Road w tryb off." + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "Przeglądarka Opera" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "Więcej zadań:" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "Pobierz ostatnio zmodyfikowany plik dziennika" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "(Jeszcze nie zalogowano)" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "Ostatni plik dziennika" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "Przywróć" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "Zrób kopię teraz" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "Baza danych" + +#: admin.php:229 +msgid "Files" +msgstr "Pliki" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "Następne zaplanowane tworzenie kopii zapasowej" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "W tym samym czasie, co wykonywanie kopii zapasowej plików" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "Nic nie zostało zaplanowane" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "Ten interfejs administratora wykorzystuje JavaScript. Musisz włączyć go w swojej przeglądarce, lub użyj przeglądarki obsługującej JavaScript." + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "Ostrzeżenie JavaScript" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "Usuń stare katalogi" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "Obecny limit wynosi:" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "Twoja kopia zapasowa została przywrócona." + +#: admin.php:2310 +msgid "Version" +msgstr "Wersja" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "Stona domowa głównego developera." + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "Twoje ustawienia zostały wymazane." + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "Kopia zapasowa katalogów pomyślnie utworzona." + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "Kopia zapasowa katalogów nie została utworzone" + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "Stare katalogi nie zostały usunięte z jakiegoś powodu. Można to zrobić ręcznie." + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "Stare katalogi pomyślnie usunięte." + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "Usuń stare katalogi" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "Powróć do konfiguracji UpdraftPlus" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "Akcje" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "Przywracanie zakończone powodzeniem!" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "Zły format pliku - to nie wygląda jak zaszyfrowany plik bazy danych stworzonej przez UpdraftPlus" + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "Zły format pliku - to nie wygląda jak plik utworzony przez UpdraftPlus" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "Brak kopii obecnego pliku." + +#: admin.php:2072 +msgid "Download in progress" +msgstr "Pobieranie w toku" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "Plik gotowy." + +#: admin.php:2043 +msgid "Download failed" +msgstr "Pobieranie nie powiodło się" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "Błąd" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "Nie można znaleźć zadania - być może jest już gotowe? " + +#: admin.php:1854 +msgid "Job deleted" +msgstr "Zadanie usunięte. " + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "OK. Powinieneś zobaczyć wkrótce w 'ostatniej wiadomości dziennika' poniżej. " + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "Jeszcze nie zalogowany" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "Proszę zapoznać się z FAQ, jeśli masz problemy z przywracaniem." + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "Twoja strona jest hostingowana przez serwer www %s." + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "UpdraftPlus oficjalnie nie obsługuje wersji WordPressa przed %s. Może on pracować u Ciebie, ale jeśli nie, to proszę pamiętać, że nie będzie dostępne do czasu uaktualnienia WordPressa." + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "Masz mniej niż %s wolnego miejsca na dysku twardym, który UpdraftPlus potrezbuje do tworzenia kopii zapasowych. UpdraftPlus może zabraknąć miejsca. Skontaktuj się z operatorem serwera (np. firmą hostingową), aby rozwiązać ten problem." + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "Ostrzeżenie" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "Dodatki / profesjonalne wsparcie" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "Ustawienia" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "Dozwolone pliki" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "Nie można utworzyć %s ZIP. Przejrzyj plik dziennika, aby uzyskać więcej informacji." + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "Nieskończonej rekursja: przejrzyj dzienniek, aby uzyskać więcej informacji" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "Sprawdź UpdraftPlus.Com dla pomocy, dodatków oraz wsparcia" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "Potrzebujesz jeszcze więcej funkcji i wsparcia? Sprawdź UpdraftPlus Premium" + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "Proszę pomóż UpdraftPlus dając pozytywną opinię na wordpress.org" + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "Jak UpdraftPlus może oszczędzić jedną minutę?" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "Potrafisz tłumaczyć i chcesz ulepszyć UpdraftPlus?" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "Nie znaleziono pliku" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "Wykorzystany klucz deszyfrowania:" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "Rozszyfrowanie nie powiodło się. Najbardziej prawdopodobną przyczyną jest to, że użyłeś niewłaściwego klucza." + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "Rozszyfrowanie nie powiodło się. Plik bazy danych jest szyfrowany, ale nie masz wprowadzonego klucza szyfrowania." + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "Nie można otworzyć pliku kopii zapasowej" + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "Nie można zapisać kopii zapasowej historii, bo nie mamy kopii zapasowej szeregu. Archiwizacja prawdopodobnie nie powiodła się." + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "Nie można odczytać katalogu" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "Katalog backup (% s) nie jest zapisywalny, lub nie istnieje." + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "Wykonanie kopii zapasowej zakończone." + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "Próba przywracania zakończona niepomyślnie." + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "Udało się wykonać i zakończyć tworzenie kopii zapasowej" + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "Wystąpił błąd podczas szyfrowania danych. Szyfrowanie przerwane." + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "Nie można stworzyć plików w katalogu kopii zapasowych. Kopia zapasowa przerwana - sprawdź ustawienia UpdraftPlus." + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "Inne" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "Przesłane" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "Motywy" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "Wtyczki" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "Nie znaleziono plików dziennika." + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "Plik dziennika nie może być odczytany." + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "UpdraftPlus obwieszczenie:" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "UpdraftPlus Backups" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-pt_BR.mo b/plugins/updraftplus/languages/updraftplus-pt_BR.mo new file mode 100644 index 0000000..687c2ff Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-pt_BR.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-pt_BR.po b/plugins/updraftplus/languages/updraftplus-pt_BR.po new file mode 100644 index 0000000..ad3b1e1 --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-pt_BR.po @@ -0,0 +1,6109 @@ +# Translation of UpdraftPlus in Portuguese (Brazil) +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-08-25 12:27:12+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: pt_BR\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "Seu endereço IP:" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "Para remover qualquer bloco, por favor vá aqui." + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "Add-on %s não encontrado" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "ou para restaurar manualmente" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "Isso torna os time-outs (estouro de limite de tempo) mais prováveis. É recomendado que você desligue o safe_mode ou que restaure apenas uma entidade de cada vez." + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "Para corrigir este problema vá aqui." + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "O OptimizePress 2.0 codifica seu conteúdo, portanto a busca/substituição não funciona." + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "a sua instalação PHP não possui o módulo openssl; como resultado, isso pode levar alguns minutos; se nada acontecer após um tempo então tente com uma chave de tamanho menor ou peça a empresa da sua hospedagem que habilite esse módulo PHP na sua configuração." + +#: addons/webdav.php:91 +msgid "Path" +msgstr "Path (caminho)" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "Deixe em branco para utilizar o padrão (80 para o webdav, 443 para o webdavs)" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "Entre qualquer caminho no campo abaixo." + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "Um nome de host não pode conter uma barra." + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "Protocolo (SSL ou não)" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "Esta URL WebDAV é gerada ao preencher as opções abaixo. Se você não souber os detalhes, então você precisará perguntar ao seu provedor WebDAV." + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "Nenhum dado de resposta foi recebido. Isso normalmente indica um problema de conectividade de rede (p.ex. um firewall de saída ou uma rede sobrecarregada) entre este site e o UpdraftPlus.com." + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "A chave de acesso da AWS parece estar errada (chaves de acesso %s válidas começam com \"AK\")" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "Nenhuma configuração encontrada - por favor, retorne para a aba de Configurações e verifique" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "Fazer o backup usando %s?" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "Plugin Premium Completo" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "Apenas este add-on" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "Ásia Pacífico (Mumbai)" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "Redundância reduzida" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "Padrão (acesso ocasional)" + +#: admin.php:2310 +msgid "FAQs" +msgstr "Dúvidas" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "Status desconhecido do verificador de atualização \"%s\"" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "Uma nova versão deste plugin está disponível." + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "Este plugin está atualizado." + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "Buscar por novas atualizações" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "Não há nenhuma alteração disponível." + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "Isto é útil se o painel do servidor web não pode ser contatado pelo tráfego entrante por este site web (por exemplo, este é o caso se este website está hospedado na Internet pública, mas o painel do UpdraftCentral está no servidor local, ou em uma Intranet, ou se este site web possui um firewall de saída), ou ainda se o web site do painel não tem um certificado SSL." + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "Mais informações..." + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "Utilize o método alternativo para estabelecer uma conexão com o painel." + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "Painel em" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "Tamanho da chave: %d bits" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "A chave pública foi enviada para:" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "Falhou ao abrir o diretório (verifique as permissões do arquivo e a propriedade): %s" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "%s: arquivo não pode ser lido - não pode ser feito o backup (verifique as permissões e pripriedade do arquivo)" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "Criar chave" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "mais lento, mais forte" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "recomendado" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "%s bytes" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "mais rápido (possibilidade para instalações PHP lentas)" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "fácil de quebrar, muito rápido" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "%s bits" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "Tamanho da chave de criptografia:" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "Entre o nome escolhido" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "Criar uma chave: dê a esta chave um nome único (p.ex. que indique o motivo para este site), então pressione \"Criar Chave\":" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "É prevista a falha do upload: o limite de %s para um único arquivo é %s, enquanto este arquivo está com %s GB (%d bytes)" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "Isto as vezes é causado por um firewall - tente desligar o SSL nas configurações avançadas (expert) e testar novamente." + +#: methods/ftp.php:355 +msgid "login" +msgstr "login" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "Esteja ciente que servidores de correio tendem a ter limites de tamanho; tipicamente em torno de %s MB; backups maiores que os limites provavelmente não chegarão." + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "Este arquivo de backup em o tamanho %s MB - a tentativa de enviar isto por email provavelmente falhará (poucos servidores de email permitem anexos deste tamanho). Se assim for você deveria trocar para um método de armazenamento diferente." + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "Tamanho: %s MB" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "Outro (por favor especifique - p.ex.: o site onde você instalou o painél do UpdraftCentral)" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "p.ex.: você tem uma conta lá" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "O UpdraftPlus irá dividir o arquivo de backup quanto o tamanho for excedido. O valor padrão é %s megabytes. Tenha o cuidado de deixar alguma margem caso o seu servidor web tenha um limite de tamanho físico (hard). (P.ex.: o limite de 2GB/2048MB em alguns servidores/sistemas de arquivos de 32-bits)." + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "Grátis 1GB para o UpdraftPlus Vault" + +#: admin.php:2604 +msgid "Now" +msgstr "Agora" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "Você deve habilitar %s para que qualquer permalink amigável (p.ex. %s) funcione" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "(clique em um ícone para marcar ou desmarcar)" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "%s por ano" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "ou (desconto anual)" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "Nenhuma conexão com o cofre (Vault) foi encontrada para este site (ele mudou?); por favor desconecte e reconecte." + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "O arquivo informado não foi encontrado, ou não pode ser lido." + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "UpdraftCentral (Controle Remoto)" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "pegue..." + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "Veja os eventos recentes na log do UpdraftCentral" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "URL da nave-mãe" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "Entre qualquer descrição" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "Descrição" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "Criar nova chave" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "Apagar..." + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "Criada: " + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "Acesse este site como o usuário: " + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "Nenhuma chave foi criada ainda." + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "Detalhes" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "Descrição da chave" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "Uma chave foi criada mas, a tentativa de registrá-la com %s não foi bem sucedida - por favor tente novamente mais tarde." + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "Uma URL inválida foi utilizada" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "Fechar..." + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "Esta conexão parece já ter sido feita." + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "Você deve visitar este link no mesmo navegador e sessão de login que utilizou para criar a chave." + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "Você deve visitar esta URL no mesmo navegador e sessão de login que você utilizou para criar a chave." + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "Você não está logado neste site WordPress no seu navegador web." + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "A referida chave era desconhecida." + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "Uma nova conexão com o UpdraftCentral não foi realizada." + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "Uma conexão do UpdraftCentral foi efetuada com sucesso." + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "Conexão do UpdraftCentral" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "O backup foi abortado pelo usuário" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "Suas configurações foram salvas." + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "Tamanho total do backup:" + +#: admin.php:3420 +msgid "stop" +msgstr "parar" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "O backup terminou de executar" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "Limpar as configurações" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "resetar" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "estes conjuntos de backup" + +#: admin.php:3092 +msgid "this backup set" +msgstr "este conjunto de backup" + +#: admin.php:3020 +msgid "calculate" +msgstr "calcular" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "OneDrive da Microsoft, Azure da Microsoft, Armazenamento em Nuvem da Google (Google Cloud Storage)" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "Você deveria salvar suas alterações para garantir que elas serão utilizada para realizar o seu backup." + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "Nós solicitamos a deleção do arquivo, mas não entendemos a resposta do servidor" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "Por favor entre uma URL válida" + +#: admin.php:601 +msgid "Saving..." +msgstr "Salvando..." + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "Erro: o servidor nos enviou uma resposta que não compreendemos." + +#: admin.php:557 +msgid "Fetching..." +msgstr "Pegando..." + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "Ásia - Pacífico (Seul)" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "A Barracuda fechou o Copy.Com em 01 de Maio de 2016. Veja:" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "URLs para upload:" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "Erro inesperado: nenhuma classe '%s' foi encontrada (a sua instalação do UpdraftPlus parece quebrada - tente reinstalar)" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "O módulo PHP %s não está instalado - peça à sua empresa de hospedagem para habilitar." + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "Pulando a tables %s: esta tabela não será restaurada" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "Para importar um site WordPress comum em uma instalação multisite é necessário %s." + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "Por favor leia este link para informações importantes sobre este processo." + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "Será importado como um novo site." + +#: admin.php:2884 +msgid "Dismiss" +msgstr "Dispensar" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "Por favor, preencha a informação solicitada." + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "Leia mais..." + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "N.B.: esta opção afeta apenas a restauração da base de dados e os uploads - outras entidades de arquivos (tais como plugins) do WordPress são compartilhadas pela rede toda." + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "pode incluir alguns dados volumosos como o site todo" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "Todos os sites" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "Qual site restaurar" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "Restaurando apenas o site com id=%s: removendo outros dados (se houverem) do backup desempacotado" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "ERRO: problema ao criar a entrada do site." + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "Erro ao criar um novo site no endereço escolhido:" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "Informação necessária para a restauração deste backup não foi fornecida (%s)" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "Atribuir conteúdo importado ao usuário" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "Você deve utilizar apenas letras em minúsculas ou números para o caminho do site." + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "Esta característica não é compatível com %s" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "Importando um único site em uma instalação multisite" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "outros conteúdos do wp-content" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "Núcleo do WordPress" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "Você selecionou %s para ser incluído na restauração - isto não pode / não deveria ser feito quando importar um único site em uma rede." + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "Chamar a ação do WordPress:" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "As suas configurações salvas também afetam o que vai para o backup - p.ex. arquivos excluídos." + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "Pulando: este arquivamento já está armazenado." + +#: admin.php:3860 +msgid "File Options" +msgstr "Opções do Arquivo" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "Enviando Seu Backup Para o Armazenamento Remoto" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "Agendamento do backup de banco de dados" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "Agendamento do backup de arquivos incremental" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "Agendamento do backup de arquivos" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "Você irá, então, precisar entrar todas as suas configurações novamente. Você também pode fazer isso antes de desativar/desinstalar o UpdraftPlus, se desejar." + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "Este botão irá apagar todas as configurações e informações de progresso do UpdraftPlus para backups em andamento (mas nenhum dos seus backups existentes no seu armazenamento na nuvem)." + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "Enviar este backup para um armazenamento remoto" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "Cheque o UpdraftPlus Vault." + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "Não tem nenhum armazenamento remoto?" + +#: admin.php:5157 +msgid "settings" +msgstr "configurações" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "O backup não será enviado para nenhum armazenamento externo - nenhum foi salvo no %s" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "Inclui quaisquer arquivos no backup" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "Inclui o banco de dados no backup" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "Continue a restauração" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "Você tem uma operação de restauração inacabada, iniciada a %s atrás." + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "Restauração inacabada" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "%s minutos, %s segundos" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "Agendamento e Conteúdo do Backup" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "Premium / Extensões" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "Não foram encontradas informações suficientes sobre a operação de restauração em andamento" + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "Baixar" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "Você optou por fazer o backup dos arquivos, mas nenhuma entidade do tipo arquivo foi selecionada" + +#: admin.php:442 +msgid "Extensions" +msgstr "Extensões" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "Ferramentas Avançadas" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "Local do bucket (balde)" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "Note que o Google não suporta todas as classes de armazenamento em todos os locais - você deve ler a documentação para saber sobre a disponibilidade atual." + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "Esta configuração se aplica apenas quando um novo bucket está sendo criado." + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "Você deve utilizar um nome de bucket que seja único, para todos os %s usuários." + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "Não confunda %s com %s - são coisas diferentes." + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "Você não tem acesso a este bucket (balde)" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "Oeste da Europa" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "Leste da Ásia-Pacífico" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "Oeste dos Estados Unidos" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "Leste dos Estados Unidos" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "Leste dos Estados Unidos" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "Centro dos Estados Unidos" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "União Européia" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "Asia Pacifico" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "localização em múltiplas regiões" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "Estados Unidos" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "Nearline" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "Disponibilidade reduzida durável" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "Padrão" + +#: addons/azure.php:524 +msgid "container" +msgstr "container" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "Você pode entrar o caminho de qualquer %s pasta virtual que deseje utilizar aqui." + +#: addons/azure.php:523 +msgid "optional" +msgstr "opcional" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "Prefixo" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "Veja as orientações da Microsoft sobre nomenclatura de containers seguindo este link." + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "Se %s ainda não existir, então será criado." + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "Entre o caminho do %s que deseja utilizar aqui." + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "Este não é o seu login do Azure - veja as instruções se precisar de mais orientações." + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "Nome da Conta" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "Azure" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "Criar as credenciais do Azure na sua console de desenvolvimento do Azure." + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "Não conseguiu criar o container" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "Não conseguiu acessar o container" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "Para completar sua migração/clonagem, você deveria agora logar-se no site remoto e restaurar o conjunto de backup." + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "a tabela de opções não foi encontrada" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "nenhuma opção ou tabela de sitemeta foi encontrado" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "O backup do banco de dados parece ter falhado" + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "O diretório de backup não é gravável (ou o disco está cheio) - o backup do banco de dados irá falhar em breve." + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "requerido por alguns provedores de armazenamento remoto" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "Não está instalado" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "Classe de armazenamento" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "Veja as orientações do Google sobre a nomenclatura dos buckets através deste link." + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "Nomes de bucket devem ser únicos globalmente. Se o bucket ainda não existe, então será criado." + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "Entre o nome do bucket %s que voce deseja utilizar aqui." + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "Bucket (Balde)" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "Do contrário, deixe em branco." + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "N.B. Isto é necessário apenas se voce ainda não criou o bucket e voce deseja que o UpdraftPlus crie para voce." + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "Entre o ID de um dos seus projetos %s que voce deseja utilizar aqui." + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "Siga este link para a sua Console de API do Google e, lá, ative a API de armazenamento (Storage API) e crie um ID de cliente (Client ID) na seção de Acesso à API (API Access)." + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "Voce deve entrar um ID de projeto para ser capaz de criar um novo bucket." + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "ID do projeto" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "Voce deve salvar e autenticar antes de poder testar suas configurações." + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "Ainda não foi obtido o token de acesso do Google - voce precisa autorizar ou reautorizar sua conexão ao Google Cloud." + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "Voce não tem acesso a este bucket." + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "Google Cloud (Nuvem do Google)" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "Exceção de Serviço (Service Exception) %s." + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "Voce não tem um UpdraftPlus completamente instalado - por favor desinstale e instale novamente. Muito provavelmente o WordPress apresentou uma falha quando copiava os arquivos do plugin." + +#: restorer.php:767 +msgid "Deferring..." +msgstr "Adiando..." + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "ou para configurar agendamentos mais complexos" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "Tem certeza de que deseja remover %s do UpdraftPlus?" + +#: admin.php:3081 +msgid "Deselect" +msgstr "Desmarcar" + +#: admin.php:3080 +msgid "Select all" +msgstr "Selecione todos" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "Ações para os backups selecionados" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "Clique aqui para procurar dentro dos seus métodos remotos de armazenamento por quaisquer conjuntos de backup existentes (de qualquer site, se estiverem armazenados na mesma pasta)." + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "Processando..." + +#: admin.php:634 +msgid "For backups older than" +msgstr "Para backups mais antigos do que" + +#: admin.php:633 +msgid "week(s)" +msgstr "semana(s)" + +#: admin.php:632 +msgid "hour(s)" +msgstr "hora(s)" + +#: admin.php:631 +msgid "day(s)" +msgstr "dia(s)" + +#: admin.php:630 +msgid "in the month" +msgstr "no mes" + +#: admin.php:629 +msgid "day" +msgstr "dia" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "(tantos quanto voce queira)" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "Acrescentar uma regra de retenção adicional..." + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "Esse banco de dados precisa ser carregado em um MySQL versão %s ou posterior." + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "Esse problema é causado ao tentar restaurar um banco de dados em uma versão muito antiga do MySQL que é incompatível com o banco de dados original." + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "Atualmente você não possui nenhuma quota do Cofre do UpdraftPlus" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "Você deve atualizar o MySQL para poder utilizar este banco de dados." + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "O backup do banco de dados utiliza características não disponíveis na antiga versão do MySQL (%s) onde este site está rodando." + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "Nenhum link de propaganda na página de configuração do UpdraftPlus" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "O nome do diretório do UpdraftPlus em wp-content/plugins tem espaço em branco; o WordPress não gosta disso. Você deveria renomear o diretório para wp-content/plugins/updraftplus para corrigir este problema." + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "Não sabe o seu endereço de email, ou esqueceu sua senha?" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "Entre aqui seu email e senha do UpdraftPlus.Com para se conectar:" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "Leia o FAQ aqui." + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "Marque esta caixa para utilizar a encriptação no lado do servidor (server sided) da Amazon" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "Encriptação no lado do servidor (server-side)" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "Se voce esqueceu sua senha, então clique aqui para alterar a sua senha no updraftplus.com" + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "Vá para as configurações do armazenamento remoto para se conectar." + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "%s foi selecionado para o armazenamento remoto, mas voce não está conectado neste momento." + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "Pagamentos podem ser feitos em dólares americanos, euros ou libras esterlinas, por cartão de crédito ou PayPal." + +#: admin.php:607 +msgid "Update quota count" +msgstr "Atualizar a contagem de quota" + +#: admin.php:606 +msgid "Counting..." +msgstr "Contando..." + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "Desconectando..." + +#: admin.php:603 +msgid "Connecting..." +msgstr "Conectando..." + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "Atualizar o estado atual" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "Obtenha mais quota" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "Uso atual:" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "Você pode obter mais quota aqui" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "%s Erro: você está com quota de armazenamento disponível (%s) insuficiente para efetuar o upload deste arquivamento (%s)." + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "Desconectar" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "Quota:" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "Dono do cofre" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "Muito bem - não há mais nada necessário para configurar." + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "Este site está conectado ao Cofre do UpdraftPlus." + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "Você não está conectado ao Cofre do UpdraftPlus." + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "Venha aqui para ajuda" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "E-mail" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "Voltar..." + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "Assinaturas podem ser canceladas a qualquer momento." + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "%s por trimestre." + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "Leia mais sobre o assunto aqui." + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "O Cofre do UpdraftPlus é construído nos data centers líderes mudiais, da Amazon, com armazenamento de dados redundante para alcançar uma confiabilidade de 99,999999999%" + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "Já adquiriu espaço?" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "Mostre as opções" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "Primeira vez que utiliza?" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "Pressione um botão para iniciar." + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "O Cofre do UpdraftPlus traz a você uma área de armazenamento que é confiável, fácil de utilizar e com ótimo preço." + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "Você tem uma assinatura do Cofre do UpdraftPlus que não foi renovada e o período de graça expirou. Em alguns dias os dados que você armazenou será permanentemente removido. Se não quiser que isso aconteça, então você deve renovar o mais rapidamente possível." + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "Você tem uma assinatura do Cofre do UpdraftPlus com pagamento atrasado. Você está no período de alguns dias de graça antes que a assinatura seja suspensa, e você perca sua quota e o acesso aos dados nele. Por favor, renove o mais rapidamente possível. " + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "A sua aquisição do UpdraftPlus Premium terminou há um ano atrás. Você deveria renovar imediatamente para evitar perder os 12 meses de direito de armazenamento gratuito que você obtém sendo um cliente ativo do UpdraftPlus Premium." + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "Cofre do Updraft" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "A deleção falhou:" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "O mecanismo de compressão zip retornou a mensagem: %s." + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "Sem esta permissão, o UpdraftPlus não pode apagar os backups - você deveria também configurar o parâmetro 'retenção' com um valor alto para evitar enxergar erros de deleção." + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "Permitir a deleção" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "Sem esta permissão, você não pode efetuar o download diretamente ou restaurar utilizando o UpdraftPlus e irá precisar acessar o site da AWS." + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "Permitir o download" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "Se o envio direto de site para site não funcionar para você, então existem outros três métodos - por favor tente um deles." + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "Você deveria verificar se o site remoto está online, e não atrás de um firewall, não tenha módulos de segurança que possam estar bloqueando o acesso, possua a versão %s ou maior do UpdraftPlus ativa e que as chaves foram digitadas corretamente." + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "Chaves existentes" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "Nenhuma chave que permita a conexão de sites remotos foi criada." + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "Sua nova chave:" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "Para permitir que outro site envie um backup para este site, crie uma chave, e então pressione o botão 'Migrar' no site que está enviando, depois copie-e-cole a chave lá." + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "Para obter a chave para o site remoto, abra a janela 'Migrar' naquele site, role para baixo e você poderá criar uma nova chave ali. " + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "Chaves para este site são criadas na seção abaixo da que você acabou de pressionar." + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "Você deve copiar e colar esta chave agora - ela não poderá ser mostrada novamente." + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "Chave criada com sucesso." + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "Uma chave com este nome já existe; você deve utiliza um nome único." + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "Envie também este backup para os locais de armazenamento remoto ativos" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "A URL do site para o qual você está enviando (%s) parece apontar para um site de desenvolvimento local. Se você estiver enviando de uma rede externa, é provável que um firewall esteja bloqueando esta ação." + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "site não encontrado" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "Dados do backup serão enviados para:" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "Restaure um conjunto de backup existente para este site" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "Este site ainda não tem backups de onde restaurar." + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "Backup feito por %s" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "Este método de armazenamento não permite o download" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "(conjunto de backup importado do local remoto)" + +#: admin.php:4423 +msgid "Site" +msgstr "Site" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "Backup enviado para o site remoto - não está disponível para download." + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "Você deveria certificar-se de que este é realmente um conjunto de backup destinado ao uso neste site da web, antes de fazer a restauração (ou se é um conjunto de backup de um outro site da web)." + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "Este conjunto de backup não foi reconhecido pelo UpdraftPlus para ser criado na instalação atual do WordPress, mas foi encontrada no armazenamento remotou ou foi enviada de um site remoto." + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "Testando a conexão..." + +#: admin.php:617 +msgid "Deleting..." +msgstr "Deletando..." + +#: admin.php:616 +msgid "key name" +msgstr "nome da chave" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "Por favor dê um nome a esta chave (p.ex.: indique a que site ela pertence):" + +#: admin.php:611 +msgid "Creating..." +msgstr "Criando..." + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "Ou receba um backup de um site remoto" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "Cole a chave aqui" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "Como obtenho a chave de um site?" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "Para acrescentar um site como destino de envio, entre a chave desse site abaixo." + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "Ou envie um backup para outro site" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "Enviar" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "Enviar para o site:" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "Nenhum site de recebimento foi adicionado ainda." + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "É para o envio de backups para o seguinte site:" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "A chave foi adicionada com sucesso." + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "A chave fornecida não pertence ao site remoto (pertence a este aqui)." + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "A chave entrada está corrompida - por favor tente novamente." + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "A chave fornecida tem o tamanho errado - por favor tente novamente." + +#: addons/migrator.php:1861 +msgid "key" +msgstr "chave" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "Quase todos os servidores de FTP irão preferir o modo passivo, mas se você necessida do modo ativo, então desmarque esta opção." + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "Modo passivo" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "Caminho remoto" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "Senha de FTP" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "Login de FTP" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "Servidor de FTP" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "O UpdraftPlus Migrator modifica a operação de restauração apropriadamente, de forma a adequar os dados do backup para o novo site." + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "Uma \"migração\" é, em última análise, o mesmo que uma restauração - mas utilizando arquivos de backup que você importou de outro site." + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "Acrescente um site" + +#: admin.php:608 +msgid "Adding..." +msgstr "Acrescentando..." + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "Solicitação não autorizada - talvez você já tenha utilizado esta compra em algum outro local, ou o períoodo pago para o download do updraftplus.com expirou?" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "Para utilizar este backup, o seu servidor de banco de dados precisa suportar o conjunto de caracteres %s." + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "vá aqui para alterar sua senha em updraftplus.com." + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "Se você esqueceu a sua senha" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "Vá aqui para entrar novamente a sua senha." + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "Após pressionar este botão, será dada a opção para escolher quais componentes você deseja migrar" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "Para importar um conjunto de backup, vá para a aba \"Backups Existentes\"" + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "Você fez alterações nas suas configurações e não salvou." + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "N.B. %s não é sensível a maiúsculas e minúsculas." + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "Se o OneDrive mostrar mais tarde a mensagem \"unauthorized_client\" (cliente não autorizado), então você não forneceu aqui um ID de cliente válido." + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "Para uma ajuda mais detalhada, incluindo exemplos de telas, siga este link." + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "Crie as credenciais do OneDrive na sua console de desenvolvedor do OneDrive." + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "Você deve acrescentar o seguinte como sendo a URI de redirecionamento autorizada na sua console do OneDrive (em \"Configurações da API/API Settings\") quando solicitado" + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "%s autorização falhou" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "OneDrive" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "Por favor re-autorize a conexão com a sua conta %s." + +#: methods/email.php:73 +msgid "configure it here" +msgstr "configure aqui" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "Para remover o bloqueio, por favor vá aqui." + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "Lembre-se de salvar as suas configurações." + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "Você está utilizando agora uma conta de usuário IAM para acessar o seu bucket." + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "S3 bucket" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "China (Pequim) (restrito)" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "América do Sul (São Paulo)" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "Pacífico - Ásia (Tóquio)" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "Pacífico - Ásia (Sydney)" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "Pacífico - Ásia (Cingapura)" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "União Européia (Frankfurt)" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "União Europeia (Irlanda)" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "Governo dos Estados Unidos - Oeste (restrito)" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "Oeste dos Estados Unidos (Norte da Califórnia)" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "Oeste dos Estados Unidos (Oregon) " + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "Padrão Estados Unidos (default)" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "Região de armazenamento S3" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "Novo nome de usuário IAM" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "Chave secreta administrativa" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "Chave de acesso administrativo" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "Então, essas credenciais de acesso de baixo poder podem ser utilizados, ao invés de armazenar suas chaves administrativas." + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "Serão utilizados para criar um novo usuário e par de chaves com uma política IAM anexa, que irá permitir apenas o acesso ao bucket indicado." + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "Entre sua chave secreta/de acesso administrativa do Amazon S3 (precisa ser um par de chaves com direitos suficientes para criar novos usuários e buckets), um novo nome de usuário (único) para o novo usuário e um nome para o bucket." + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "Criar novo usuário IAM e bucket S3" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "Chave Secreta: %s" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "Chave de Acesso: %s" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "Falhou ao aplicar a Política de Usuário" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "Operação de criação da Chave de Acesso do usuário falhou" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "Falhou ao criar a Chave de Acesso do usuário" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "Operação IAM falhou (%s)" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "Conflito: esse usuário já existe" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "Falha: Não foi possível acessar com sucesso ou criar esse bucket. Por favor verifique suas credenciais de acesso e se estiverem corretas então tente outro nome de bucket (pois outro usuário AWS pode ter utilizado este nome)." + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "Autenticação AWS falhou" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "Não é possível criar um novo usuário AWS pois o antigo conjunto de ferramentas (toolkit) AWS está sendo utilizado." + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "Você precisa entrar um bucket" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "Você precisa entrar um novo nome de usuário IAM" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "Você precisa entrar uma chave secreta de administrador" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "Você precisa fornecer uma chave de acesso de administrador" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "Se você tem um usuário de administração AWS, então você pode utilizar este wizard para criar rapidamente um novo usuário AWS (IAM) com acesso a apenas este bucket (ao invés de acesso a toda conta)" + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "Para criar um novo sub-usuário IAM e chave de acesso que permita o acesso apenas a esse bucket, utilize este add-on." + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "Para suporte personalizado, habilidade de copiar sites, mais opções de destinos de armazenamento, backups encriptados para maior segurança, melhores relatórios, nenhuma propaganda e muito mais, dê uma olhada na versão premium do UppdraftPlus - o plugin de backup mais popular do mundo. " + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "Notícias do UpdraftPlus, materiais de treinamento de alta qualidade para desenvolvedores WordPress e donos de sites e notícias do WordPress em geral. Você pode cancelar a assinatura a qualquer momento." + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "Caminho para o upload (%s) mudou durante a migração - reconfigurando (para: %s)" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "Isso provavelmente significa que você compartilha o seu servidor web com um site hackeado que foi utilizado anteriormente em ataques." + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "Parece que o endereço IP do seu servidor web (%s) está bloqueado." + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "O UpdraftPlus.com respondeu com 'Acesso Negado'." + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "Plugins WooCommerce Premium" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "Plugin de segurança de dois-fatores gratuito" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "Mais Plugins de Qualidade" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "Vá para a loja." + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "Compare com a versão gratuita" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "UpdraftPlus Premium" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "Siga este link para assinar." + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "Boletim Informativo gratuito" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "Obrigado por fazer os backups com o UpdraftPlus!" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "Descartar (por %s meses)" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "(ao mesmo tempo que o backup dos arquivos)" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "Nenhum backup foi completado" + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "O primeiro passo é desinstalar a versão gratuita." + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "Se você fez uma compra com o UpdraftPlus.Com, então siga este link para as instruções de instalação da sua aquisição." + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "Assinar o boletim informativo" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "Siga este link para assinar o boletim informativo do UpdraftPlus." + +#: admin.php:2831 +msgid "Personal support" +msgstr "Suporte personalizado" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "Bloquear o acesso äs configurações" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "Suporte a Rede/Multisite" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "Acertar a hora do backup" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "Backups agendados" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "Restaurar os backups feitos por outros plugins" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "Encriptação do banco de dados" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "Enviar os backups para múltiplos destinos remotos" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "Fazer o backup automaticamente ao atualizar o WP/plugins/temas" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "Características avançadas de relatórios" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "Relatórios básicos por email" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "Migrar / clonar (p.ex.: copiar) sites web" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "Fazer o backup de arquivos extra e banco de dados" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "WebDAV, Copy.Com, SFTP/SCP, FTP encriptado" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "Dropbox, Google Drive, FTP, S3, Rackspace, Email" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "Efetuar o backup em um armazenamento remoto" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "Restaurar do backup" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "Traduzido em %s linguagens" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "Efetuar o backup dos arquivos e banco de dados do WordPress" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "Compre Agora!" + +#: admin.php:2718 +msgid "Get it from" +msgstr "Obtenha de" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "Faça uma pergunta de pré-venda" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "FAQs de pré-venda" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "Lista de todas as características" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "Obtenha o UpdraftPlus Premium" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "Você está utilizando atualmente a versão gratuita do UpdraftPlus do wordpress.org." + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Efetuar o backup (quando relevante) dos plugins, temas e banco de dados do WordPress com o UpdraftPlus antes de atualizar" + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "Erro %s: Falhou ao Inicializar" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "ou" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "ou" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "Você não selecionou nenhum componente para restaurar. Por favor escolha ao menos um e tente novamente." + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "PKCS1 (Cabeçalho PEM: BEGIN RSA PRIVATE KEY), XML e chaves no formato do PuTTY são aceitas." + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "Dar continuidade a cargas (uploads) parciais é suportado pelo SFTP, mas não pelo SCP. Portanto, se for utilizar o SCP, certifique-se de que o seu servidor web permita que processos PHP rodem por tempo suficiente para carregar o seu maior arquivo de backup. " + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "inquilino (tenant)" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "É necessário que a URI de autenticação seja uma v2 (Keystone); a v1 (Swauth) não é suportado." + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "o endereço de administração do seu site" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "Marque esta caixa para que um relatório básico seja enviado para" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "Manual" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "Um erro (%s) ocorreu:" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "Alterar Parâmetros de Bloqueio" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "Qualquer outro arquivo/diretório do seu servidor que você deseje fazer um backup" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "Para mais opções e suporte personalizado, confira" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "Falhou ao criar tabela - provavelmente porque não há permissão para fazer o drop de tabelas e a tabela já existe; irá continuar" + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "Limpando páginas cacheadas (%s)..." + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "Frase para encriptação do banco de dados" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "Faça um backup automaticamente antes de atualizar" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "Núcleo do WordPress (apenas)" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "Para suporte ao desbloqueio, por favor entre em contato com o administrador do seu UpdraftPlus." + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "Para acessar as configurações do UpdraftPlus, por favor, entre a senha de desbloqueio" + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "Senha incorreta" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "Desbloquear" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "Do contrário, o link padrão será mostrado." + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "Qualquer um que veja a tela de bloqueio receberá esta URL de suporte - entre um endereço web ou um endereço de e-mail." + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "URL de suporte" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "Solicita a senha novamente após" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "%s semanas" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "1 semana" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "%s horas" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "1 hora" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "Por favor certifique-se de ter feito alguma anotação dessa senha!" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "Bloqueia o acesso à página de configurações do UpdraftPlus" + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "Configurações salvas." + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "A senha do administrador foi alterada." + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "A senha do administrador foi configurada." + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "A senha do administrador foi removida." + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "(saiba mais sobre esta importante opção)" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "Note que após você solicitar seus pacotes, você pode remover sua senha (mas não o endereço de e-mail) das configurações abaixo, sem afetar o acesso do site às atualizações." + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "Ver a Log" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "Dados do backup (clique para baixar)" + +#: admin.php:4368 +msgid "Backup date" +msgstr "Data do backup" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "e retém esta quantidade de backups agendados" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "Backup incremental; backup da base: %s" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "Para poder bloquear o acesso às configurações do UpdraftPlus com uma senha, atualize para o UpdraftPlus Premium." + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "Carregar arquivos para o UpdraftPlus." + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "O botão \"Backup Agora\" foi desabilitado pois o seu diretório de backup não é gravável (vá para a aba \"Configurações\" e encontre a opção relevante)." + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "Rótulo do backup:" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "Erro: falha inesperada na leitura do arquivo" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "verifique as logs para mais detalhes." + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "a sua conta de hospedagem web parece estar cheia, por favor veja: %s" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "Um erro na compactação (zip) ocorreu" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "Seu rótulo para este backup (opcional)" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "%s não permite a autorização de sites hospedados diretamente em endereços IP. Você precisará alterar o endereço do site (%s) antes de poder utilizar o %s para armazenamento." + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "Você entrou um endereço de email que não foi reconhecido pelo UpdraftPlus.Com" + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "Seu endereço de email era válido, mas sua senha não foi reconhecida pelo UpdraftPlus.Com." + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "Você precisa fornecer tanto o endereço de email quanto a senha" + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "Para continuar, pressione 'Backup Agora'. Então, observe no campo 'Última Mensagem da Log' as atividades." + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "Se você deseja restaurar um backup multisite, você deveria primeiramente configurar a sua instalação WordPress como sendo multisite." + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "O seu backup é o de uma instalação multisite do WordPress; mas este site não é. Apenas o primeiro site da rede será acessível." + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "já realizado" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "pulado (não está na lista)" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "Buscando e substituindo tabela:" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "Entre uma lista separada por vírgula, do contrário deixe em branco para todas as tabelas." + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "Apenas estas tabelas" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "Linhas por lote" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "Você ainda não se conectou com sua conta do UpdraftPlus.Com." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "Você precisa se conectar para receber futuras atualizações do UpdraftPlus." + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "Quaisquer solicitações de suporte relacionadas com %s devem ser feitas com a sua empresa de hospedagem web." + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "Você só deve continuar se não puder atualizar o servidor atual e está confiante de que (ou disposto a correr o risco) seus plugins/temas/etc. são compatíveis com a versão mais antiga do %s." + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "Isto é significativamente mais novo do que o servidor onde você está restaurando agora (versão %s)." + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "O site deste backup estava rodando em um webserver com a versão %s do %s." + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "LinkedIn" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "Google+" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "Facebook" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "Twitter" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "O UpdraftPlus está nas mídias sociais - confira aqui:" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "Por que estou vendo isto?" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "O local deste diretório é configurado nas configurações do expert, na aba de Configurações." + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "Clique aqui para procurar dentro do seu diretório do UpdraftPlus (na área de armazenamento da sua hospedagem web) por novos conjuntos de backup que você tenha carregado." + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "Inicie o backup" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "Você está utilizando o servidor web %s, mas não parece ter o módulo %s carregado." + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "Você precisará perguntar ao seu provedor de hospedagem web, para descobrir como mudar as permissões, para que um plugin do WordPress possa gravar em um diretório." + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "A menos que você tenha um problema, você pode ignorar completamente tudo o que está aqui." + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "Este arquivo não pode ser carregado" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "Você irá descobrir mais informações sobre isto na seção de Configurações." + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "Plugins de backup suportados: %s" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "Este backup foi criado com um plugin de backup diferente? Se sim, então você poderá primeiramente ter que renomeá-lo para que possa ser reconhecido - por favor, siga este link." + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "Fale mais sobre backups incrementais" + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "Limite de memória" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "restauração" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "Tabela a ser implicitamente apagada (dropped): %s" + +#: backup.php:829 +msgid "Incremental" +msgstr "Incremental" + +#: backup.php:829 +msgid "Full backup" +msgstr "Backup Completo (Full)" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "continuando agora com as atualizações..." + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "(ver o log...)" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "Backup efetuado com sucesso" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "A cada %s horas" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "procurar e substituir" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "Ir" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "Uma procura/substituição não pode ser desfeita - tem certeza que deseja fazer isso?" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "Isto pode facilmente destruir o seu site portanto, utilize com cuidado!" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "Substituir por" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "Procurar por" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "Procurar / substituir o banco de dados" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "procurar o termo" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "Erros demais no banco de dados ocorreram - abortando" + +#: backup.php:895 +msgid "read more at %s" +msgstr "leia mais em %s" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "Relatórios de email criados pelo UpdraftPlus (edição gratuita) traz até você as últimas notícias do UpdraftPlus.com" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "N.B. Se você instalar o UpdraftPlus em diversos sites WordPress, então não poderá reutilizar o seu projeto; você deve criar um novo a partir da sua console API do Google para cada site." + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "Você ainda não fez nenhum backup." + +#: admin.php:3872 +msgid "Database Options" +msgstr "Opções de Banco de Dados" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "Plugins para depuração:" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "%s (%s utilizado)" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "Espaço livre em disco contabilizado:" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "Este botão está desabilitado porque o seu diretório de backup não é gravável (veja as configurações)." + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "Backups Existentes" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "Estado Atual" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "Para alterar qualquer configuração padrão do que está sendo copiado, para configurar backups agendados, para enviar os backups para um armazenamento remoto (recomendado) e mais, vá para a aba de configurações." + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "Para efetuar um backup, apenas pressione o botão Backup Agora." + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "Bem-vindo ao UpdraftPlus!" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "Se você entrar um texto aqui, será usado para encriptar os backups do banco de dados (Rijndael). Faça um registro separado dele não perca, ou todos os seus backups ficarão inutilizáveis. Isto também é a chave usada para desencriptar os backups a partir da interface de administração (então se você alterar, a desencriptação não funcionará até que você restaure o texto)." + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "Testando..." + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "Testar a conexão..." + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "Prefixo da tabela" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "Efetuar o backup de um banco de dados externo" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "Acrescentar um banco de dados externo ao backup..." + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "Se o seu banco de dados inclui tabelas extra que não são parte deste site WordPress (você saberá se este for o caso), então ative esta opção para que sejam feitos backups delas." + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "Fazer o backup de tabelas que não são do WordPress mas estão contidas no mesmo banco de dados que o WordPress" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "Esta opção irá fazer com que as tabelas armazenadas no banco de dados MySQL, que não pertencem ao WordPress (identificadas pela ausência do prefixo do WordPress configurado, %s), também sejam parte do backup." + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "Conexão falhou." + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "Conexão efetuada com sucesso." + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "%s tabela(s) encontrada(s) no total; %s com o prefixo indicado." + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "%s tabela(s) encontrada(s)." + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "tentativa de conectar ao banco de dados falhou" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "nome do banco de dados" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "servidor" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "usuário" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "Banco de dados externo (%s)" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "Siga este link para a sua Console API do Google, e ali ative o Drive API e crie um ID de Cliente na seção de Acesso via API." + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "falhou ao acessar a pasta-pai" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "Entretanto, as tentativas de acesso subsequentes falharam:" + +#: admin.php:4499 +msgid "External database" +msgstr "Banco de dados externo" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "Isto também fará com que a saída da depuração de todos os plugins seja mostrada nesta tela - por favor não fique surpreso ao ver isso. " + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "Faça o backup de mais banco de dados" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "Primeiro, entre a chave de desencriptação" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "Você pode desencriptar manualmente aqui um banco de dados encriptado." + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "Também pode efetuar o backup de banco de dados externo." + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "Não quer ser espionado? O UpdraftPlus Premium pode encriptar o backup do seu banco de dados." + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "use o UpdraftPlus Premium" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "A desencriptação falhou. O banco de dados está encriptado." + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "Apenas o banco de dados do WordPress pode ser restaurado; você terá que lidar com o banco de dados externo manualmente." + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "Um erro ocorreu no primeiro comando %s - abortando a execução" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "Conexão falhou: verifique os detalhes do seu acesso, se o servidor de banco de dados está no ar e se a conexão pela rede não foi bloqueada por firewall." + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "tentativa de conexão com o banco de dados falhou." + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "Aviso: a URL inicial do banco de dados (%s) é diferente do esperado (%s)" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "Em %s, os nomes do caminho são sensíveis à caixa (maíuscula ou minúscula)." + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "Se você deixar em branco, então o backup será colocado na raiz do %s" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "p. ex. %s" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "Se a pasta ainda não existir, então será criada." + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "Entre aqui o caminho para a pasta %s que você deseja utilizar." + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "Contêiner" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "Deixe isto em branco e um valor padrão (default) será utilizado." + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "Inquilino" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "Siga este link para mais informações" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "URI de autenticação" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "Obtenha suas credenciais de acesso do seu provedor do OpenStach Swift, e então escolha um nome de contêiner para utilizar para armazenamento. Este contêiner será criado para você se ainda não existir." + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "Falhou ao efetuar o download de %s" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "Falhou ao efetuar o download" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "falhou em listar os arquivos" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "Falhou ao carregar %s" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "Sucesso:" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "Após você ter gravado suas configurações (clicando em 'Salvar Alterações' abaixo), volte aqui mais uma vez e clique neste link para completar a autenticação com %s." + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "(Parece que você já está autenticado)." + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "Dropbox" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "Autentique com %s" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "Erro ao efetuar o download do arquivo remoto: Falha no download" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "Região: %s" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "Erro %s - nós acessamos o contêiner, mas falhamos ao criar um arquivo nele" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "O objeto %s não foi encontrado" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "Não foi possível acessar o contêiner %s" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "Erro %s - falha ao acessar o contêiner" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "Nome do mantenedor da conta: %s." + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "Para ser possível utilizar um nome de pasta customizado, use o UpdraftPlus Premium." + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "É um número de Identificação (ID) interno do Google Drive" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "Este NÃO é um nome de pasta." + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "Pasta" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "Download %s: falhou: arquivo não encontrado" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "Nome: %s." + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "Listagem de arquivos do Google Drive: falhou ao acessar a pasta-pai " + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "A versão do seu %s: %s." + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "Você precisará solicitar ao seu provedor de hospedagem web que faça uma atualização." + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "Este método de armazenamento remoto (%s) requer o PHP %s ou posterior." + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "O diretório de tema (%s) não foi encontrado, mas existem versões em caixa-baixa (minúsculas); atualizando a opção de banco de dados de acordo" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "Chamar" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "Busque" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "Esta característica requer o %s versão %s ou posterior" + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "Dados do plugin construtor de temas Elegant themes foi detectado: reconfigurando a pasta temporária" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "%s arquivos foram extraídos" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "Falhou ao desempacotar o arquivamento" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "Erro - falhou ao baixar o arquivo" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "Escaneie a pasta local para ver novos conjuntos de backup" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "Você deveria atualizar o UpdraftPlus para ter certeza de que você tem a versão que foi testada para compatibilidade" + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "Foi testada até a versão %s." + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "A versão instalada do UpdraftPlus Backup/Restore não foi testada para a sua versão de WordPress (%s)." + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "senha/chave" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "Chave" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "O seu login pode ser através de senha ou chave - você precisa entrar apenas um, não ambos." + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "A chave fornecida não estava em um formato válido, ou estava corrompida." + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "senha/chave de SCP/SFTP" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "Backup dos arquivos (criado por %s)" + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "Backup dos arquivos e banco de dados do WordPress (criado por %s)" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "Backup criado por: %s." + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "Banco de dados (criado por %s)" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "origem desconhecida" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "Verifique novamente o armazenamento remoto" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "Carregar (upload) os arquivos do backup" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "Este backup foi criado por %s e pode ser importado." + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "Leia esta página para guiá-lo nas possíveis causas e como consertar isso." + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "O WordPress tem um número (%d) de tarefas agendadas que estão atrasadas. A menos que este seja um site de desenvolvimento, isto provavelmente significa que o agendador da sua instalação de WordPress não está funcionando." + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "Se este é um backup criado com um plugin de backup diferente, então o UpdraftPlus Premium pode lhe ajudar." + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "Entretanto, os arquivamentos do UpdraftPlus são arquivos padrão zip/SQL - então se você tem certeza que o seu arquivo tem o formato correto, então renomeie-o para o padrão adequado." + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "Este arquivo não parece ser um arquivamento de backup do UpdraftPlus (tais arquivos são .zip ou .gz e tem um nome como: backup_(hora)_(nome do site)_(código)_(tipo).(zip|gz))." + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "Backup criado por uma origem desconhecida (%s) - não pode ser restaurado." + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "O pasta de conteúdo do WordPress (wp-content) não foi encontrada neste arquivo zip." + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "Esta versão do UpdraftPlus não sabe como lidar este tipo de backup estrangeiro." + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "%s retornou uma resposta HTTP inesperada: %s." + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "O módulo do UpdraftPlus para este método de acesso de arquivo (%s) não suporta a listagem de arquivos." + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "Nenhuma configuração foi encontrada" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "Um ou mais backups foram adicionados ao verificar o armazenamento remoto; note que esses backups não serão automaticamente deletados pela configuração \"reter\"; se/quando você desejar deletá-los então você terá que fazê-lo manualmente." + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "Procurando por conjuntos de backup no armazenamento remoto e local..." + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "(Leia mais)" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "Ajustando os caminhos do multisite" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "Registrar todas as mensagens no syslog (apenas os administradores do servidor podem querer isto)" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "Nenhum backup do diretório: nada foi encontrado para se efetuar o backup" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "Acrescente outro..." + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "Remover" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "Outras FAQs %s." + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "Marque isto para receber mais informações e emails sobre o processo de backup - útil se algo estiver dando errado." + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "Se entrar múltiplos arquivos/diretórios, então separe-os com vírgula. Para entidades no nível mais alto, você pode utilizar um * no início ou final da entrada, como um curinga." + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "Dados de plugin para gerenciamento de tipo de conteúdo customizado foram detectados: limpando o cache de opções" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "Sua empresa de hospedagem deve habilitar estas funções antes que o %s possa funcionar." + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "A instalação PHP do seu servidor web está com estas funções desabilitadas: %s." + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "FTP encriptado (encriptação explícita)" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "FTP encriptado (encriptação implícita)" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "FTP comum não-encriptado" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "Backup criado por:" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "Disponível para se solicitar neste site" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "Para manter o seu acesso ao suporte, por favor, renove." + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "Seu acesso pago ao suporte do UpdraftPlus irá expirar em breve." + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "Para ter o acesso novamente, por favor, renove." + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "O seu acesso pago ao suporte do UpdraftPlus expirou. " + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "O seu acesso pago às atualizações do UpdraftPlus neste site irá expirar em breve. " + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "Para manter o seu acesso, e manter o acesso às atualizações (incluindo características futuras e compatibilidade com os futuros lançamentos do WordPress) e ao suporte, por favor, renove." + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "O seu acesso pago às atualizações do UpdraftPlus para %s dos add-ons %s neste site irá expirar em breve." + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "O seu acesso pago às atualizações do UpdraftPlus para os add-ons %s neste site expirou." + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "Para ter novamente o acesso às atualizações (incluindo características futuras e compatibilidade com os futuros lançamentos do WordPress) e ao suporte, por favor, renove." + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "O seu acesso pago às atualizações do UpdraftPlus neste site expirou. Você não irá mais receber atualizações do UpdraftPlus. " + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "Remover do painel principal (por %s semanas)" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "A tentativa de desfazer a compressão-dupla foi bem-sucedida." + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "A tentativa de desfazer a compressão-dupla falhou." + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "O arquivo de banco de dados parece ter sido comprimido duas vezes - provavelmente o site de onde foi efetuado o download está com o servidor web configurado erroneamente." + +#: admin.php:1528 +msgid "Constants" +msgstr "Constantes" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "Falhou ao abrir o arquivo de banco de dados para leitura:" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "Nenhuma tabela do banco de dados foi encontrada" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "por favor, aguarde a nova tentativa que foi agendada" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "Note que os avisos (warnings) são apenas conselhos - o processo de backup não para com eles. Ao contrário, eles fornecem informações que você pode achar úteis, ou que podem indicar a origem do problema, se o backup não for bem sucedido." + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "Pesquisas no banco de dados processadas: %d em %.2f segundos" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "Localizar e substituir alcançou a linha: %d" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "Pulando esta tabela: dados nesta tabela (%s) não deveriam ser localizados/substituídos" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "Conta cheia: sua conta %s tem apenas %d bytes restantes, mas o arquivo a ser carregado tem %d bytes faltando (tamanho total: %d bytes)" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "Erros ocorreram:" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "Siga este link para baixar o arquivo de log desta restauração (necessário para solicitações de suporte)." + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "Veja também este FAQ." + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "Se você optar por não utilizar armazenamento remoto, então os backups irão permanecer no seu servidor web. Isto não é recomendado (a menos que você planeje copiá-los para o seu computador), pois perder o servidor web significaria perder seu site web e os backups em um único evento." + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "Buscando (se necessário) e preparando os arquivos de backup..." + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "A configuração PHP neste servidor web permite que o PHP rode por apenas %s segundos, e não permite que este limite seja aumentado. Se você tem muitos dados para importar, e se a operação de restauração esgotar o tempo, então você precisa solicitar à sua empresa de hospedagem web por alguma forma de aumentar esse limite (ou tentar a restauração pedaço por pedaço)." + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "Pastas não-removidas que existiam de um restore anterior foram encontradas (por favor utilize o botão \"Deletar Antigos Diretórios\" para deletá-las antes de tentar novamente): %s" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "A quantidade de tempo permitida para um plugin do WordPress rodar é muito baixa (%s segundos) - você deveria aumentá-la para evitar falhas no backup devido a esgotamento do tempo (consulte sua empresa de hospedagem web para mais ajuda - é o parâmetro do PHP max_execution_time; e o valor recomendado é %s segundos ou mais)" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "Substituindo na tabela de blogs/site: de: %s para: %s" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "%s: Pulando o arquivo de cache (ainda não existe)" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "Este plugin foi desativado: %s: reative-o manualmente quando você estiver pronto." + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "A conexão %s expirou; se você informou o servidor corretamente então isto é causado normalmente por um firewall bloqueando a conexão - você deveria verificar com sua empresa de hospedagem web." + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "O tema corrente não foi encontrado; para evitar que isso faça com que o site pare de carregar, seu tema foi revertido para o tema padrão" + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "Restauração falhou..." + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "Mensagens:" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "Uma linha SQL que é maior que o tamanho máximo de pacote, e não pode ser dividida, foi encontrada; esta linha não será processada, ou seja, será descartada: %s" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "O diretório não existe" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "Endereço de Email para o Novo Usuário" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "Nome-de-usuario para o Novo Usuário" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "Chave API do Administrador" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "Nome-de-usuario Administrador" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "Conta Rackspace de US ou UK" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "Entre seu nome-de-usuario administrador/chave API do Rackspace (de forma que o Rackspace possa autenticar sua permissão de criar novos usuários) e entre um novo (único) nome-de-usuario e endereço de email para o novo usuário e um nome de container." + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "Crie um novo usuário e container de API" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "Chave API: %s" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "Senha: %s" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "Nome-de-usuario: %s" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "Operação do Cloud Files falhou (%s)" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "Operação com os Arquivos em Nuvem falhou (%s)" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "Você precisa entrar um novo endereço de email válido" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "Você precisa entrar um container" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "Você deve entrar um novo nome-de-usuario" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "Você precisa entrar uma chave API de administrador" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "Você precisa entrar um nome-de-usuario de administrador" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "Cria um novo usuário de API com acesso apenas a este container (ao invés de acesso à conta inteira)" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "Acrescenta capacidades ampliadas para os usuários do Cloud Files da Rackspace" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "Cloud Files da Rackspace, ampliado" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "Container do Cloud Files" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "Chave API do Cloud Files" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "Para criar um novo sub-usuário de API Rackspace e uma chave API que tenha acesso apenas a este container Rackspace, utilize este add-on." + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "Nome-de-usuario do Cloud Files" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "Londres (LON)" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "Hong Kong (HKG)" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "Virgínia do Norte (IAD)" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "Chicago (ORD)" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "Sidnei (SYD)" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "Dalas (DFW) (padrão)" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "Região de Armazenamento do Cloud Files" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "Contas criadas em rackspacecloud.com são contas-EUA; contas criadas em rackspace.co.uk são baseadas no Reino Unido (UK)" + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "Conta Rackspace baseada nos EUA ou Reino Unido (UK)" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "Contas criadas em rackspacecloud.com são contas-EUA; contas criadas em rackspace.co.uk são contas no Reino Unido (UK)" + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "Autorização falhou (verifique suas credenciais)" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "Um erro desconhecido ocorreu quando tentando conectar a UpdraftPlus.com" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "Criar" + +#: admin.php:556 +msgid "Trying..." +msgstr "Tentando..." + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "A senha de console do Rackspace do novo usuário é (isto não será mostrado novamente):" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "(quando decriptado)" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "Dados do erro:" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "O backup não existe no histórico de backups" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "Sua instalação WordPress tem diretórios antigos da sua configuração antes da sua restauração/migração (informação técnica: estão com o sufixo -old). Você deve pressionar este botão para deletá-los tão logo verifique que a restauração funcionou." + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "Quebrar a linha para evitar exceder o tamanho máximo do pacote" + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "Seu usuário de banco de dados não tem permissão para excluir (drop) tabelas. Nós iremos tentar restaurar simplesmente esvaziando as tabelas; isto deve funcionar contanto que você esteja restaurando de uma versão do WordPress com a mesma estrutura de banco de dados (%s)" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "Novo prefixo de tabela: %s" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "Permissões de arquivo não permitem que dados antigos sejam movidos e retidos; ao invés disso, serão deletados." + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "%s: Este diretório já existe e será substituido" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "Não pode mover os arquivos para o local. Verifique suas permissões de arquivamento." + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "Não pode mover os novos arquivos para o local. Verifique a pasta wp-content/upgrade." + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "Não pode mover os arquivos antigos para fora do caminho." + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "Movendo dados antigos para fora do caminho..." + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "Adicione outro endereço..." + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "Entre os endereços aqui para que um relatório seja enviado a eles quando o job de backup terminar." + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "Relatórios por email" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "%s checksum: %s" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "arquivos: %s" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "Utilize a seção \"Relatórios\" para configurar o endereço de email a ser utilizado." + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr "(com avisos (%s))" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr "(com erros (%s))" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "Informação de depuração (debugging)" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "Enviado para:" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "Tempo gasto:" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "Avisos" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "Erros" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "Erros / avisos:" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "Contém:" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "Backup começou:" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "Relatório do Backup" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "%d horas, %d minutos, %d segundos" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "%d erros, %d avisos" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "%s autenticação" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "%s erro: %s" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "%s logotipo" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "%s não retornou a resposta esperada - verifique seu arquivo de log para mais detalhes" + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "O módulo PHP necessário %s não está instalado - solicite à sua empresa de hospedagem que o habilite." + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "Para mais opções, utilize o add-on \"%s\"." + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "O endereço de email do administrador do seu site (%s) será utilizado." + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "Conectar" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "Para mais opções de relatório, utilize o add-on \"Reporting\"." + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "(versão: %s)" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "Esteja ciente de que servidores de correio tendem a ter limites de tamanho, tipicamente em torno de %s Mb; backups maiores do que quaisquer limites provavelmente não chegarão." + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "Quando o método de armazenamento por Email está habilitado, também envia o backup inteiro" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "Último estado:" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "Backup contém:" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "Backup feito: %s" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "O arquivo de log foi anexado a este email." + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "Erro desconhecido/inesperado - por favor envie um pedido de suporte" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "Apenas banco de dados (arquivos não eram parte deste agendamento em particular)" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "Banco de dados (backup dos arquivos não completou)" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "Apenas arquivos (banco de dados não era parte deste agendamento em particular)" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "Arquivos (backup do banco de dados não completou)" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "Arquivos e banco de dados" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "(Isto se aplica a todos os plugins de backup do WordPress, a menos que tenham sido explícitamente codificados para compatibilidade multisite)." + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "Sem atualizar, o UpdraftPlus permite que todos admin do blog, que podem modificar os parâmetros do plugin para fazer um backup (e portanto acessar os dados, incluindo senhas) e restaurar (inclusive com modificações customizadas, p.ex.: senhas alteradas) da rede inteira." + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "Multisite WordPress é suportado, com características extra, pelo UpdraftPlus Premium, ou pelo add-on Multisite." + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "Esta é uma instalação WordPress do tipo multi-site (também conhecido como rede)." + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "Aviso do UpdraftPlus:" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "(ou conectar utilizando o formulário nesta página, caso você o tenha adquirido)" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "por favor siga este link para atualizar o plugin para ativá-lo" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "por favor siga este link para atualizar o plugin para obtê-lo" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "última" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "Sua versão: %s" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "É isso aí" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "Suporte UpdraftPlus" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "Uma atualização contendo os seus addons está disponível para o UpdraftPlus - por favor siga este link para obtê-lo." + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "Addons do UpdraftPlus" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "Uma atualização está disponível para o UpdraftPlus - por favor siga este link para obtê-la." + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "UpdraftPlus.Com devolveu uma resposta, mas não conseguimos entendê-la" + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "Seu endereço de email e senha não foram reconhecidos por UpdraftPlus.Com" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "UpdraftPlus.Com retornou uma resposta que não pudemos entender (dados: %s)" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "UpdraftPlus.Com respondeu, mas não entendemos a resposta" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "Falhamos em conectar com sucesso à UpdraftPlus.Com" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "Relatórios" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "Opções (rascunho)" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "Envie um relatório apenas quando houverem avisos/erros" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "URL do conteúdo:" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "Você deveria verificar as propriedades e permissões do arquivo em sua instalação WordPress" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "Veja também o add-on \"More Files\" em nossa loja." + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "Seu espaço livre na sua conta da hospedagem está muito baixo - restam apenas %s Mb" + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "A quantidade de memória (RAM) permitida para o PHP está muito baixa (%s Mb) - você deveria aumentá-la para evitar falhas devido à memória insuficiente (consulte a sua empresa de hospedagem web para mais ajuda)" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "Administrar Addons" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "Compre" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "Obtenha na loja UpdraftPlus.Com" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "Ativar neste site" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "Você tem uma compra inativa" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "Conectado a este site." + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "Disponível para este site (através de sua compra do all-addons)" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "(Aparentemente um pré-lançamento, ou um lançamento descartado)" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "Vá aqui" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "Precisa de ajuda?" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "Ocorreu um erro ao tentar acessar seus add-ons." + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "Uma resposta desconhecida foi recebida. A resposta foi:" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "Pedido não concedido - os dados do seu login não estão corretos" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "Por favor aguarde enquanto fazemos o pedido..." + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "Ocorreram erros ao tentar conectar com UpdraftPlus.Com:" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "Você está desconectado de qualquer conta do UpdraftPlus.Com." + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "Se você comprou novos add-ons, siga este link para atualizar sua conexão" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "Você está conectado a uma conta do UpdraftPlus.Com." + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "Quer saber sobre a segurança de senhas do UpdraftPlus.Com? Leia a respeito aqui." + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "Esqueceu seus dados?" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "Ainda não tem uma conta? É gratuito. Pegue a sua!" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "Conecte com sua conta do UpdraftPlus.Com" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "A versão do PHP do seu servidor é muito antiga (" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "Parece que você tem um plugin obsoleto do Updraft instalado - talvez você os tenha confundido?" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "Clique aqui para iniciar a instalação." + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "UpdraftPlus ainda não está instalado." + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "Clique aqui para ativar." + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "UpdraftPlus ainda não está ativado." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "Clique aqui para conectar." + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "Você ainda não se conectou com a sua conta UpdraftPlus.com, para possibilitar que você liste os seus add-ons adquiridos." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "Sem isso, a encriptação será muito mais lenta." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "O seu servidor web não possui o módulo %s instalado." + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "(Parece que você já está autenticado mas, você pode se autenticar novamente para renovar seu acesso, se você teve um problema)." + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "Largue os arquivos de backup aqui" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "gerencie o WordPress através de uma linha de comando - enorme economia de tempo" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "Cheque o Word Shell" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "Deseja mais opções ou suporte pago e garantido? Cheque o UpdraftPlus.Com" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "O servidor web retornou um código de erro (tente novamente, ou verifique os logs do seu navegador)" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "A restauração do backup teve início. Não interrompa ou feche a janela do navegador até que o processo esteja finalizado." + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "Se você excluir ambos, banco de dados e arquivos, você excluiu tudo!" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "Home do site:" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "Opções de Armazenamento Remoto" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "(os logs podem ser encontrados na página de configurações do UpdraftPlus)" + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "Lembrar desta escolha na próxima vez (você ainda pode alterar esta opção no futuro)" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "O upload falhou" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "Você pode mandar um backup para mais de um destino com um complemento" + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "Aviso: a barra de progressos abaixo é baseada em etapas, NÃO em tempo. Não pare o backup simplesmente porque ele parece ter permanecido no mesmo lugar por um tempo - isto é normal." + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "(%s%%, arquivo %s de %s)" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "Leia mais sobre como funciona..." + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "Falhou: Foi possível logar, mas falhou ao criar o arquivo naquele local." + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "Falhou: Foi possível logar e acessar o diretório indicado, mas falhou criar o arquivo naquele local." + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "Use SCP ao invés de SFTP" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "Configurações do usuário SCP/SFTP" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "Configurações do host SCP/SFTP" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "A tentativa de enviar o backup via e-mail falhou (provavelmente o backup era muito grande para este método)" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "Backup em: %s." + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "Resultado do teste para %s:" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "(Não finalizado)" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "Se você está vendo mais backups do que esperado, provavelmente é porque a exclusão de backups antigos não acontece até que um novo backup seja concluído." + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "Não coloque dentro de seu diretório de envios ou de plugins, pois irá causar recursão (backups dos backups dos backups...)." + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "Este é o lugar onde o UpdraftPlus irá gravar os arquivos zip que cria inicialmente. Este diretório deve ter permissão de escrita pelo seu servidor web. Ele é relativo ao seu diretório de conteúdo (que por padrão é chamado wp-content)." + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "ID do job: %s" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "última atividade: %ss atrás" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "próximo reinício: %d (após %ss)" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "Desconhecido" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "Backup finalizado" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "Esperando até a hora marcada para repetir por causa de erros" + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "Podando conjuntos antigos de backups" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "Fazendo upload de arquivos para armazenamento remoto" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "Banco de dados encriptado" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "Encriptando banco de dados" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "Backup do banco de dados criado" + +#: admin.php:3359 +msgid "table: %s" +msgstr "tabela: %s" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "Criando backup do banco de dados" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "Arquivo ZIP do backup criado" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "Criando arquivo ZIP do backup" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "Backup iniciado" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "Backup em andamento:" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "O agendamento esta desabilitado em sua instalação do WordPress, através da configuração DISABLE_WP_CRON. Nenhum backup pode ser executado (mesmo "Backup Agora") a menos que tenha configurado desta forma para executar os backups manualmente, ou você terá que ativar alterar essa configuração." + +#: restorer.php:646 +msgid "file" +msgstr "arquivo" + +#: restorer.php:639 +msgid "folder" +msgstr "pasta" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "UpdraftPlus precisou criar um %s no diretório de conteúdo, mas falhou - por favor, verifique suas permissões de acesso e ative o acesso (%s)" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "O backup não foi finalizado; um recomeço foi agendado" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "Seu website é visitado com frequência e UpdraftPlus não esta recebendo os recursos que esperava; por favor, leia esta página:" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "A autenticação no %s não pode prosseguir porque algo em seu site está impedindo. Tente desabilitar alguns plugins e altere para o tema padrão. (Especialmente, se você está procurando por um componente que envie uma saída (mais comumente alertas/erros PHP) antes da página ser renderizada. Desativar qualquer depuração também pode ajudar)" + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "Seu limite de memória PHP (definido pela empresa de hospedagem) é muito baixo. UpdraftPlus tentou aumenta-lo mas sem sucesso. Este plugin pode ter dificuldades com limites de memória inferiores a 64 Mb, especialmente se você tem arquivos muito grandes para upload (por outro lado, muitos sites serão bem sucedidos com um limite de 32 Mb - sua experiencia pode variar)." + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "Prosseguir com a atualização" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "Não aborte após ter pressionado Prosseguir - aguarde o backup terminar." + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "UpdraftPlus Backups Automáticos" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "Ocorreram erros:" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "Criando backup com UpdraftsPlus..." + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "Backup Automático" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "Criando backup do banco de dados com UpdraftsPlus..." + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "Você não tem permissões suficientes para atualizar este site." + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "temas" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "plugins" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "Iniciando backup automático..." + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "Criando backup %s e base dados com UpdraftPlus..." + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Efetue o backup automáticamente (quando relevante) dos plugins, temas e banco de dados do WordPress com UpdraftsPlus antes de atualizar" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "Caso você não tenha certeza, você deve parar; de outra forma você pode destruir essa instalação do WordPress." + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "Este não parece um arquivo de backup do WordPress válido - o arquivo %s está faltando." + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "Impossível abrir o arquivo compactado (%s) - não foi possível pre-escanear o arquivo para checar a integridade." + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "Impossível ler o arquivo compactado (%s) - não foi possível pre-escanear o arquivo para checar a integridade." + +#: admin.php:2310 +msgid "More plugins" +msgstr "Mais plugins" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "Suporte" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "UpdraftPlus não conseguiu encontrar o prefixo das tabelas ao varrer o backup do banco de dados" + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "Neste backup do banco de dados estão faltando tabelas-base do WordPress: %s" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "Você está importando de uma versão mais recente do WordPress (%s) para uma nova versão (%s). Não há garantia de que o WordPress consiga lidar com isso." + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "O banco de dados é muito pequeno para ser um banco de dados válido do WordPress (tamanho: %s Kb)." + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "Atualizar Tema" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "Atualizar Plugin" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "Fique seguro o tempo todo, sem precisar pensar nisso - siga este link para saber mais." + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "O UpdraftPlus Premium pode fazer backup dos plugins ou temas e banco de dados automaticamente antes de você atualizar." + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "Fique seguro com um backup automático" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "Dispensar (por %s semanas)" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "Os caminhos para upload (%s) não existem - reiniciando (%s)" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "Caso você esteja lendo isso após a página ter terminado de carregar, então há um problema de JavaScript ou JQuery no site." + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "Foi feito o upload do arquivo." + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "Status de resposta do servidor desconhecida:" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "Resposta desconhecida do servidor:" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "Esta chave de decriptamento será utilizada:" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "Clique nesse link para decriptar e baixar o arquivo de banco de dados para o seu computador." + +#: admin.php:584 +msgid "Upload error" +msgstr "Erro no upload" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "Este arquivo não parece ser um banco de dados encriptado (tais são arquivos .gz.crypt, os quais tem o nome como: backup_(hora)_(nome do site)_(código)_db.crypt.gz)." + +#: admin.php:582 +msgid "Upload error:" +msgstr "Erro no upload:" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "(certifique-se de que você está tentando fazer upload de um arquivo criado pelo UpdraftPlus)" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "então, se você quiser," + +#: admin.php:572 +msgid "Download to your computer" +msgstr "Baixar para o seu computador" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "Apagar do seu servidor" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "Exemplos de provedores de armazenamento S3-compatible:" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "Nenhum arquivo será excluído após a descompressão porque não há armazenamento em núvem para este backup" + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "Parece que estão faltando um ou mais arquivos deste backup." + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "(%d backup(s) prontos)." + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "Dividir arquivos a cada:" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "Erro: o servidor nos enviou uma resposta (JSON) a qual não entendemos." + +#: admin.php:563 +msgid "Warnings:" +msgstr "Avisos:" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "Erro: o servidor enviou uma resposta vazia." + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "Isto parece um arquivo criado pelo UpdraftPlus, mas esta instalação não conhece este tipo de objeto: %s. Talvez você precise instalar um add-on?" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "Os arquivos referentes ao backup foram processados, mas com alguns erros. Você precisará cancelar e corrigir quaisquer problemas antes de tentar novamente." + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "Os arquivos referentes ao backup foram processados, mas com alguns avisos. Se tudo estiver bem, então agora pressione Restaure para continuar. Do contrário, cancele e corrija quaisquer problemas primeiro." + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "Os arquivos referentes ao backup foram processados com sucesso. Agora pressione Restaure novamente para continuar." + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "Este conjunto de backup de múltiplos arquivos parece estar em falta dos seguintes arquivos: %s" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "O arquivo (%s) foi encontrado, mas tem um tamanho diferente (%s) do que era esperado (%s) - pode estar corrompido." + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "O arquivo foi encontrado, mas tem tamanho igual a zero (você precisa efetuar o upload dele novamente): %s" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "Arquivo não encontrado (você precisa fazer o upload dele): %s" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "Este backup não existe" + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "Os arquivos referentes a este backup não puderam ser encontrados. O método de armazenamento remoto em uso (%s) não nos permite recuperar os arquivos. Para executar qualquer restauração utilizando o UpdraftPlus, você precisará obter uma cópia desse arquivo e colocá-lo dentro da pasta de trabalho do UpdraftPlus" + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "Falha ao mover o diretório (verifique suas permissões de arquivo e quota em disco): %s" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "Falha ao mover o arquivo (verifique suas permissões de arquivo e quota em disco): %s " + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "Movendo backup desempacotado para o local..." + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "Falhou ao abrir o arquivo zip (%s) - %s" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "Caminho no servidor do diretório raiz do WordPress: %s" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "%s end-point" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "... e muito mais!" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "S3 (Compatível)" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "Arquivo não está presente no local - é necessário recuperá-lo do armazenamento remoto" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "Procurando pelo arquivo %s: nome do arquivo: %s" + +#: admin.php:4836 +msgid "Final checks" +msgstr "Verificações finais" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "Marque isto para deletar qualquer arquivo de backup supérfluo do seu servidor após a execução do backup terminar (p.ex.: se você desmarcar, então qualquer arquivo despachado remotamente irá permanecer localmente, e qualquer arquivo mantido localmente não estará sujeito a limites de retenção)." + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "Largue arquivos encriptados de banco de dados (arquivos db.gz.crypt) aqui para efetuar o upload deles para decriptar" + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "Seu caminho no servidor do diretório wp-content: %s " + +#: admin.php:578 +msgid "Raw backup history" +msgstr "Histórico de backup em estado natural (raw)" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "Mostre os backups em estado natural (raw) e a lista de arquivos" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "Processando os arquivos - por favor, aguarde..." + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "Por favor consulte este FAQ para obter ajuda sobre o que fazer sobre isso." + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "A sua instalação WordPress tem um problema para mostrar espaço-em-branco extra. Isso pode corromper os backups que você baixa daqui." + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "Falhou ao abrir o arquivo do banco de dados." + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "Falhou ao gravar o banco de dados decriptado no sistema de arquivos (filesystem)." + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "Backups conhecidos (estado natural - raw)" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "Incapaz de enumerar os arquivos naquele diretório." + +#: restorer.php:939 +msgid "Files found:" +msgstr "Arquivos encontrados:" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "Utilizando o diretório do backup: %s" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "Mecanismo de tabela solicitado (%s) não está presente - mudando para MyISAM." + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "Isto se parece com uma migração (o backup é de um site com um endereço/URL diferente), mas você não marcou a opção para localizar-e-substituir o banco de dados. Isso normalmente é um erro." + +#: admin.php:4908 +msgid "file is size:" +msgstr "tamanho do arquivo:" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "Clique aqui para mais informações." + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "Alguns arquivos ainda estão em download ou estão sendo processados - por favor, aguarde." + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "Este conjunto de backup é de um site diferente - isto não é uma restauração, é uma migração. Você precisa do add-on Migrator para que isto funcione." + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "A zona de tempo (time zone) utilizado é o da configuração do seu WordPress, em Configurações -> Geral." + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "Entre no formato HH:MM (p.ex.: 14:22)." + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "%s falha no upload" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "%s falha no login" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "Você não parece estar autenticado com %s" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "Falhou ao acessar %s quando deletando (veja o arquivo de log para mais)" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "Você não parece estar autenticado com %s (embora deletando)" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "Erro do Dropbox: %s (veja o arquivo de log para mais)" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "Erro - falha ao baixar o arquivo de %s" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "Erro - este arquivo não existe em %s" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "%s Erro" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "%s erro - falhou ao efetuar o upload do arquivo" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "%s erro - falhou ao remontar os pedaços" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "%s autenticação falhou" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "Erro: %s" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "Diretório de backup especificado existe, mas não é gravável." + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "Diretório de backup especificado não existe." + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "Aviso: %s" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "Última tarefa de backup executada:" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "Um arquivo muito grande foi encontrado: %s (tamanho: %s Mb)" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "%s: arquivo não pode ser lido - não pode ser feito o backup" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "A tabela %s tem muitas linhas (%s) - esperamos que a empresa de hospedagem web forneça a você recursos suficientes para despejar essa tabela no backup" + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "Um erro ocorreu ao fechar o arquivo final do banco de dados" + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "Avisos encontrados:" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "O backup aparentemente foi bem sucedido (com avisos) e agora está completo" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "Seu espaço livre em disco está muito baixo - restam apenas %s Mb" + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "Novo site:" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "ERRO: URL do Site já foi utilizada." + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "Site migrado (do UpdraftPlus)" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "Entre os detalhes sobre onde este novo site irá residir dentro da sua instalação multisite:" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "Informação necessária para continuar:" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "Tema de ativação de rede:" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "Plugin processado:" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "Verifique as suas permissões de arquivos: Não foi possível criar e entrar no diretório:" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "Alguns servidores anunciam FTP encriptado como disponível, mas então perdem a conexão (após um longo período) quando você tenta utilizá-lo. Se você acha que isto está ocorrendo, então vá para as \"Opções do Expert\" (abaixo) e desligue o SSL." + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "A instalação PHP do seu servidor web não inclui um módulo necessário (%s). Por favor, contacte o suporte do seu provedor de hospedagem web e solicite que eles habilitem isso." + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "Por favor, verifique as suas credenciais de acesso." + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "O erro reportado pelo %s foi:" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "Por favor, forneça a informação solicitada, e então continue." + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "Não foi possível excluir (drop) as tabelas, então vamos deletar (%s)" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "Não é possível criar novas tabelas, então vamos pular esse comando (%s)" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "Informações do site:" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "O usuário do seu banco de dados não tem permissão para criar tabelas. Iremos tentar restaurar simplesmente esvaziando as tabelas; isso deve funcionar contanto que a) você esteja restaurando de uma versão do WordPress com a mesma estrutura de banco de dados e, b) o seu banco de dados importado não contenha nenhuma tabela que não esteja presente no site importado." + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "Aviso:" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "Você está executando em um WordPress multisite - mas o seu backup não é o de um site multisite." + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "Pulando a restauração do núcleo do WordPress na importação de um site simples para uma instalação multisite. Se você possuia algo necessário no seu diretório do WordPress, então você terá que adicioná-lo manualmente do arquivo zip." + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "A instalação PHP do seu servidor web não inclui (para o %s) um módulo (%s) requerido. Por favor, contacte o suporte do seu provedor de hospedagem web e solicite que seja habilitado." + +#: admin.php:596 +msgid "Close" +msgstr "Fechar" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "Resposta inesperada:" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "Para enviar para mais de um endereço, separe cada endereço com uma vírgula." + +#: admin.php:576 +msgid "PHP information" +msgstr "Informação de PHP" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "Executável zip encontrado:" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "mostre as informações do PHP (phpinfo)" + +#: admin.php:2627 +msgid "Get it here." +msgstr "Obtenha aqui." + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "Então tente o add-on \"Migrator\". Após utilizá-lo uma vez, você terá economizado o preço da compra, comparado com o tempo necessário para copiar o site na mão." + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "Você deseja migrar ou clonar/duplicar um site?" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "Leia este artigo para ver, passo a passo, como isso é feito." + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "Migrar o Site" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "Deletando... por favor, permita que haja tempo para que a comunicação com o armazenamento remoto complete." + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "Delete também do armazenamento remoto" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "Últimas notícias do UpdraftPlus.com" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "Clonar/Migrar" + +#: admin.php:2304 +msgid "Premium" +msgstr "Premium" + +#: admin.php:2305 +msgid "News" +msgstr "Notícias" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "Conjunto de backup não foi encontrado" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "%s - não foi possível efetuar o backup desta entidade; o diretório correspondente não existe (%s)" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "Link RSS" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "Link do blog" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "Assine o blog UpdraftPlus para receber notíciais atuais e ofertas" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "Testando Configurações %s..." + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "Ou você pode colocá-los manualmente no seu diretório do UpdraftPlus (normalmente wp-content/updraft), p.ex.: via FTP e então utilizar o link \"rescan\" acima." + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "O modo de depuração (debug) do UpdraftPlus está ligado. Você pode ver notas sobre a depuração nesta página não apenas do UpdraftPlus, mas de qualquer outro plugin instalado. Por favor, tente ter certeza de que a nota que você está vendo é do UpdraftPlus antes de fazer um pedido de suporte." + +#: admin.php:880 +msgid "Notice" +msgstr "Nota" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "Erros encontrados:" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "Reescaneando (procurando por backups que você tenha carregado manualmente na área de armazenamento interna de backup)..." + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "Começou a procurar por esta entidade" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "Armazenar em" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "\"%s\" não tem chave primária, alteração manual é necessária na linha %s." + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "linhas: %d" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "Tempo corrido (segundos):" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "Erros:" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "Comandos de atualização (update) SQL executados:" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "Alterações feitas:" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "Linhas examinadas:" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "Tabelas examinadas:" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "Não foi possível obter a lista de tabelas" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "Localização e substituição no banco de dados: substituindo %s no dump do backup por %s" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "Aviso: a URL do site no banco de dados (%s) está diferente do esperado (%s)" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "Nada a fazer: a URL do site já está: %s" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "Erro: parâmetro vazio inesperado (%s, %s)" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "Esta opção não foi selecionada." + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "Banco de dados: localizar e substituir a URL do site" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "Falhou: não entendemos o resultado retornado pela operação %s." + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "Falhou: a operação %s não pode iniciar." + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "(saiba mais)" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "Localizar e substituir a localização do site no banco de dados (migrar)" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "Todas as referências ao local do site no banco de dados serão substituídos com a URL corrente do seu site, que é: %s" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "Uploads do blog" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "Plugins obrigatórios" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "Você não tem permissão para acessar esta página." + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "Você não tem permissões suficientes para acessar esta página." + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "instalação em multisite" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "iniciando na próxima vez que for" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "Porta deve ser um número inteiro." + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "senha" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "nome-de-usuario" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "nome do servidor" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "Para onde alterar o diretóro, após o login - isto normalmente se refere ao seu diretório inicial (home)." + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "Caminho do diretório" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "Senha" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "Porta" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "Servidor" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "%s Erro: Falha no download" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "Verifique as suas permissões de arquivo: Não foi possível criar e entrar:" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "%s não encontrado" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "Encriptação explícita é utilizada por padrão (default). Para forçar encriptação implícita (porta 990), adicione :990 ao servidor FTP abaixo." + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "FTP encriptado está disponível e será tentado automaticamente primeiro (antes de retroceder para não-encriptado, caso não tenha sucesso), a menos que você desabilite utilizando as opções do expert. O botão \"Teste o login FTP\" irá dizer que tipo de conexão utilizar." + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "Não foi feito o backup dos diretórios %s: nada foi encontrado para ser copiado" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "Tenha cuidado com o que você vai entrar - se entrar / (barra ou raiz) então irá realmente tentar criar um arquivo zip contendo todo o seu servidor web." + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "Se for utilizar, entre um caminho absoluto (não é relativo à sua instalação do WordPress)." + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "Se você não tem certeza do que faz esta opção, então você não a quer, e deveria desligá-la." + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "Entre o diretório:" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "Mais arquivos" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "Núcleo do WordPress (incluindo quaisquer adicionais do diretório raiz do seu WordPress)" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "Os arquivos acima incluem tudo de uma instalação WordPress" + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "Sobrescreva o wp-config.php" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "Núcleo do WordPress" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "Falhou: Não fomos capazes de colocar um arquivo naquele diretório - por favor, verifique suas credenciais." + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "Falhou" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "URL WebDAV" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "Gravação local falhou: Falhou ao efetuar o download" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "Erro abrindo arquivo remoto: Falhou ao efetuar o download" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "Pedaço %s: Um erro %s ocorreu" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "Nenhuma configuração %s foi encontrada" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "Falha: conseguimos efetuar o login com sucesso, mas não conseguimos criar um arquivo no diretório informado." + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "Sucesso: conseguimos efetuar o login e confirmamos nossa habilidade de criar um arquivo no diretório informado (tipo de login:" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "Falha: não conseguimos efetuar o login com essas credenciais." + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "Falha: Nenhum detalhe do servidor foi informado." + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "Precisa existir" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "Se você quer encriptação (p.ex.: você está armazenando dados corporativos sensíveis), então um add-on está disponível." + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "Apenas FTP não-encriptado é suportado pelo UpdraftPlus normal." + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "Seu nome de conta %s: %s" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "embora parte da informação devolvida não tenha sido conforme o esperado - sua experiência dirá" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "você autenticou sua conta %s" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "existe um add-on para isso." + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "Se você efetua o backup de diversos sites no mesmo Dropbox e quer organizar com sub-pastas, então" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "Backups são armazenados em" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "Precisa usar sub-pastas?" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "erro: falhou ao efetuar o upload do arquivo para %s (veja o arquivo de log para mais)" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "Você parece não estar conectado ao Dropbox" + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "A comunicação com %s não foi encriptada." + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "A comunicação com %s foi encriptada." + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "Nós acessamos o balde (bucket) e fomos capazes de criar arquivos dentro dele." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "Conseguimos acessar com sucesso o balde (bucket) mas, a tentativa de criar um arquivo falhou." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "Falha" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "Falha: Não conseguimos acessar ou criar com sucesso esse balde (bucket). Por favor, verifique suas credenciais de acesso, e se elas estiverem corretas então tente outro nome de balde (pois algum outro usuário %s pode já ter utilizado o seu nome)." + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "Região" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "Falha: Nenhum detalhe do balde (bucket) foi fornecido" + +#: methods/s3.php:961 +msgid "API secret" +msgstr "segredo da API" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "Entre apenas um nome de balde (bucket) ou um balde e o caminho (path). Exemplos: meubalde, meubalde/meucaminho" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "%s local" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "%s chave secreta" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "%s chave de acesso" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "Se você ver erros sobre certificados SSL então, por favor, vá aqui para ajuda." + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "Obtenha sua chave de acesso e chave secreta da sua console %s então, pegue um (globalmente único - todos usuários %s) nome de balde (letras e números) (e, opcionalmente, um caminho) para usar como armazenamento. Esse balde (bucket) será criado para você se ainda não existir." + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "%s Erro: Falhou ao acessar o balde (bucket) %s. Verifique suas permissões e credenciais." + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "%s Erro: Falhou ao efetuar o download %s. Verifique suas permissões e credenciais." + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "%s erro de reagrupamento (%s): (veja o arquivo de log para mais)" + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "%s upload (%s): reagrupamento falhou (veja a log para mais detalhes)" + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "%s pedaço %s: falha no upload" + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "%s erro: o arquivo %s foi encurtado inesperadamente" + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "%s upload: a obtenção do uploadID para uploads em múltiplas partes falhou - veja o arquivo de log para mais detalhes" + +#: methods/email.php:69 +msgid "Note:" +msgstr "Nota:" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "Backup do WordPress" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "Nós acessamos o container e fomos capazes de criar arquivos dentro dele." + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "Erro do Cloud Files - acessamos o container, mas falhamos ao criar um arquivo dentro dele" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "Falha: Nenhum detalhe de container for informado." + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "Nome-de-usuario" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "Chave da API" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "Falha: Nenhum %s foi informado." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "Os módulos %s do UpdraftPlus requerem %s. Por favor, não envie pedidos de suporte; não existe alternativa." + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "Container do Cloud Files" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "Chave da API para o Cloud Files" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "Nome-de-usuario do Cloud Files" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "Reino Unido (UK)" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "EUA (padrão)" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "Nuvem nos EUA ou Reino Unido (UK)" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "Inclusive, você deveria ler este importante FAQ." + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "Obtenha sua chave de API na sua console do Rackspace Cloud (leia as instruções aqui), e então selecione um nome de container para utilizar como armazenamento. Este container será criado para você caso ainda não exista." + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "Teste as Configurações do %s" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "Erro efetuando o download do arquivo remoto: Falhou ao efetuar o download (" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "Erro ao abrir o arquivo local: Falhou ao efetuar o download" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "Erro do Cloud Files - falhou ao efetuar o upload do arquivo" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "%s Erro: Falhou ao efetuar o upload" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "%s Erro: Falhou ao abrir o arquivo local" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "Erro do Cloud Files - falhou em criar e acessar o container" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "autenticação no Cloud Files falhou" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "Após você ter gravado suas configurações (clicando \"Salvar Alterações\" abaixo), retorne aqui mais uma vez e clique neste link para completar a autenticação com o Google." + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "Autenticar com o Google" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "Segredo do cliente" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "Se o Google mostra mais tarde a mensagem \"cliente inválido\", então você não entrou um ID de cliente válido aqui." + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "ID do cliente" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "Você deve adicionar o seguinte, como a URI de redicionamento autorizado (em \"Mais Opções\"), quando perguntado" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "Selecione \"Aplicação Web\" como o tipo da aplicação." + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "Para uma ajuda mais extensa, incluindo imagens da tela, siga este link. A descrição abaixo é suficiente para usuários expert." + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "%s é uma grande escolha, pois o UpdraftPlus suporta que sejam feito uploads em pedaços - não importa o quão grande é o seu site, UpdraftPlus pode efetuar o upload aos poucos, e não será frustrado por esgotamentos de tempo (timeouts)." + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "Conta não autorizada" + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "Falhou ao efetuar o upload em %s" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "A conta está cheia: sua conta %s tem apenas %d bytes restantes, mas o arquivo a ser carregado tem %d bytes" + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "Não obteve um token de acesso do Google - você precisa autorizar ou re-autorizar sua conexão com o Google Drive." + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "você autenticou a sua conta %s." + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "Sucesso" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "A utilização da sua quota %s: %s %% utilizado, %s disponível" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "Falha na autorização" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "Nenhum token recente foi recebido do Google. Isso normalmente significa que você entrou o segredo errado do cliente, ou que você ainda não reautenticou (abaixo) desde que corrigiu. Verifique novamente e então siga o link para autenticar novamente. Finalmente, se isso não funcionar, utilize o modo expert para limpar todas as configurações, criar um novo ID e segredo do cliente Gloogle e iniciar novamente." + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "siga este link para obtê-lo" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "O suporte %s está disponível como um add-on" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "Você não possui o add-on %s do UpdraftPlus instalado - obtenha-o em %s" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "Você precisa se reautenticar com %s, pois as suas credenciais existentes não estão funcionando." + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "OK" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "O prefixo da tabela foi alterado: acertando os campos %s da tabela de acordo:" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "Encerrado: linhas processadas: %d em %.2f segundos" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "a query que estava executando no banco de dados era:" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "irá restaurar como:" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "Prefixo antigo da tabela:" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "Backup de:" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "Acesso ao banco de dados: Acesso MySQL direto não está disponível, então estamos retrocedendo para o wpdb (isto será consideravelmente mais lento)" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "Falhou ao abrir o arquivo do banco de dados" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "Falhou em encontrar o arquivo do banco de dados" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "Aviso: O safe_mode do PHP está ativo no seu servidor. Esgotamentos de tempo (timeouts) são mais prováveis de acontecer. Se isso ocorrer, então você precisará restaurar manualmente o arquivo através do phpMyAdmin ou outro método." + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "wp-config.php do backup: restaurando (conforme solicitado pelo usuário)" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "wp-config.php do backup: será restaurado como wp-config-backup.php" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "Falhou ao gravar o banco de dados decriptado no sistema de arquivos" + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "Falhou ao criar um diretório temporário" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "Falhou ao deletar o diretório de trabalho após a restauração." + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "Não foi possível deletar o diretório antigo." + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "Limpando a sujeira..." + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "Restaurando o banco de dados (em um site grande isso pode levar um longo tempo - se o tempo se esgotar (o que pode ocorrer se a empresa de hospedagem web configurou a sua hospedagem com limitação de recursos) então você deveria utilizar um método diferente, como o phpMyAdmin)..." + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "Banco de dados decriptado com sucesso." + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "Decriptando o banco de dados (isso pode levar um tempo)..." + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "Desempacotando o backup..." + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "Copiar esta entidade falhou." + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "Arquivo de backup não está disponível." + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "O UpdraftPlus não é capaz de restaurar diretamente este tipo de entidade. Deve ser restaurado manualmente." + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "Não consegui encontrar um dos arquivos para a restauração" + +#: admin.php:5009 +msgid "Error message" +msgstr "Mensagem de erro" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "Os registros do backup não contém informações sobre o tamanho apropriado desse arquivo." + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "Espera-se que o arquivo tenha o tamanho:" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "Ao fazer um pedido de suporte, por favor inclua esta informação:" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "ABORTOU: Não foi possível encontrar a informação sobre quais entidades restaurar." + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "Restauração do UpdraftPlus: Progresso" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "Este backup não existe no histórico de backups - restauração abortada. Timestamp:" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "Após pressionar este botão, será dada a opção de escolher quais componentes você deseja restaurar" + +#: admin.php:4572 +msgid "Press here to download" +msgstr "Clique aqui para efetuar o download" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "Delete este conjunto de backup" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "Boas notícias: A comunicação do seu site com %s pode ser encriptada. Se você ver quaisquer erros relacionados a encriptação, então veja nas 'Configurações do Expert' para mais ajuda." + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "A instalação PHP/Curl do seu servidor web não suporta o acesso https. Não podemos acessar %s sem esse suporte. Por favor, contacte o suporte do seu provedor de hospedagem web. %s necessita de Curl+https. Por favor, não abra pedidos de suporte; não há alternativa." + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "A instalação PHP/Curl do seu servidor web não suporta o acesso https. As comunicações com %s serão descriptadas. Solicite ao seu provedor web para que instale o Curl/SSL de forma a obter a habilidade de encriptar (através de um add-on)." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "A instalação PHP do seu servidor web não inclui um módulo necessário (%s). Por favor, contacte o suporte do seu provedor de hospedagem web." + +#: admin.php:4062 +msgid "Save Changes" +msgstr "Salvar Alterações" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "Escolher esta opção reduz a sua segurança ao fazer com que o UpdraftPlus pare totalmente de usar o SSL para a autenticação e o transporte encriptado onde for possível. Note que alguns fornecedores de armazenamento em nuvem não permitem isso (p.ex.: Dropbox), portanto com estes fornecedores esta configuração não terá efeito." + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "Desabilite SSL completamente quando possível" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "Note que nem todos os métodos de backup em nuvem estão, necessariamente, utilizando autenticação SSL." + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "Escolher esta opção diminui a sua segurança ao fazer com que o UpdraftPlus pare de verificar a identidade dos sites encriptados ao qual ele se conecta (p.ex.: Dropbox, Google Drive). Isso significa que o UpdraftPlus irá utilizar o SSL apenas para encriptar o tráfego, e não par a autenticação." + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "Não verifique certificados SSL" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "Por padrão, o UpdraftPlus utiliza seu próprio conjunto de certificados SSL para verificar a identidade de sites remotos (p.ex.: para ter certeza de que está falando com o Dropbox, Amazon S3, etc. reais e não um atacante). Nós mantemos isso atualizados. Entretanto, se você receber um erro de SSL, então escolher esta opção (que faz com que o UpdraftPlus utilize o conjunto do seu servidor web) pode ajudar." + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "Utilize os certificados SSL do servidor" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "Se isso não for bem sucedido, verifique as permissões no seu servidor ou mude para outro diretório que seja gravável pelo processo do seu servidor web." + +#: admin.php:3697 +msgid "click here" +msgstr "clique aqui" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "ou, para desfazer esta opção" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "O diretório de backup especificado é gravável, o que é bom." + +#: admin.php:4009 +msgid "Backup directory" +msgstr "Diretório de backup" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "Deletar o backup local" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "clique isto para mostrar algumas opções a mais; não mexa com isto a menos que você tenha um problema ou seja curioso." + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "Mostrar configurações avançadas" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "Configurações do Expert" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "Modo de depuração (debug)" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "Configurações Avançadas / Depuração" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "Solicitando o início do backup..." + +#: admin.php:591 +msgid "Cancel" +msgstr "Cancelar" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "Nenhum" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "Escolha o seu armazenamento remoto" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "Decripte manualmente o arquivo de backup do banco de dados" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "Frase para encriptação do banco de dados" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "email" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "Os diretórios acima incluem tudo, exceto o próprio núcleo do WordPress, que você pode obter fazendo um novo download do WordPress.org." + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "Excluir estes:" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "Quaisquer outros diretórios encontrados dentro do wp-content" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "Incluído no backup dos arquivos" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "p.ex.: se o seu servidor está ocupado durante o dia e você deseja executar durante a noite" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "Para acertar a hora em que um backup deveria acontecer," + +#: admin.php:3683 +msgid "Monthly" +msgstr "Mensalmente" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "Quinzenalmente" + +#: admin.php:3681 +msgid "Weekly" +msgstr "Semanalmente" + +#: admin.php:3680 +msgid "Daily" +msgstr "Diariamente" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "Efetue o download do arquivo de log" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "A pasta existe, mas o servidor web não tem permissão para gravar nela." + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "A pasta foi criada, mas tivemos que alterar as permissões de arquivo para 777 (gravável por todos) para sermos capaz de gravar nele. Você deveria verificar com seu provedor de hospedagem se isto não irá causar nenhum problema" + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "O pedido ao sistema de arquivos para criar um diretório falhou." + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "Deletar" + +#: admin.php:3418 +msgid "show log" +msgstr "mostre o log" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "Isto irá deletar todas as configurações do UpdraftPlus - tem certeza de que deseja isto?" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "contar" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "N.B.: Esta contagem é baseada no que tinha sido, ou não, excluído na última vez que você gravou as opções." + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "Total de dados (não-comprimido) no disco:" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "Não" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "Sim" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "Versão %s:" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "Utilização corrente da memória" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "Pico na utilização de memória" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "Servidor:" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "Por favor, experimente o UpdraftPlus Premium, ou o add-on isolado Multisite." + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "Você precisa de suporte para o Wordpress Multisite?" + +#: admin.php:2654 +msgid "Multisite" +msgstr "Multisite" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "Execute um backup uma única vez" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "Leia este artigo bastante esclarecedor sobre coisas úteis que você deve saber antes de restaurar." + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "Você pode localizar e substituir seu banco de dados (para migrar um site web para um novo local/URL) com o add-on Migrator - siga este link para mais informações" + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "opções de restauração %s:" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "Você terá que restaurar manualmente." + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "A seguinte entidade não pode ser restaurada automaticamente: \"%s\"." + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "Seu servidor web está com o chamado safe_mode do PHP ativo." + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "Escolha os componentes a restaurar" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "Restaurar irá substituir o tema, plugins, uploads, banco de dados e/ou outros diretórios de conteúdos do site (de acordo com o que está contido no conjunto de backup, e a sua seleção)." + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "Restaurar backup de" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "Restaurar o backup" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "Delete o conjunto de backup" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "Erro no dowload: o servidor nos enviou uma resposta que não conseguimos entender." + +#: admin.php:570 +msgid "You should:" +msgstr "Você deve:" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "Erro:" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "calculando..." + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "UpdraftPlus - Efetuar um upload dos arquivos de backup" + +#: admin.php:3020 +msgid "refresh" +msgstr "atualizar" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "Espaço em disco no servidor web utilizado pelo UpdraftPlus" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "Google Drive" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "Se estiver utilizando, então desligue o modo Turbo/Road." + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "Navegador Opera" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "Mais tarefas:" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "Baixar o arquivo de log modificado mais recentemente" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "(Ainda nada no log)" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "Última mensagem do log" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "Restaurar" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "Backup Agora" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "Banco de dados" + +#: admin.php:229 +msgid "Files" +msgstr "Arquivos" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "Próximos backups agendados" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "Ao mesmo tempo que o backup de arquivos" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "Nada agendado no momento" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "Esta interface de administração utiliza JavaScript intensamente. Você precisa ativá-lo no seu navegador ou utilizar um navegador capaz de executar JavaScript." + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "Aviso de Java Script" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "Deletar Diretórios Antigos" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "O limite atual é:" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "O seu backup foi restaurado." + +#: admin.php:2310 +msgid "Version" +msgstr "Versão" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "Página do desenvolvedor principal" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "Suas configurações foram apagadas." + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "Diretório de backup criado com sucesso." + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "Diretório de backup não pode ser criado" + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "A remoção do antigo diretório falhou por alguma razão. Você pode querer fazer isso manualmente." + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "Diretórios antigos removidos com sucesso." + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "Remover diretórios antigos" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "Voltar para a Configuração do UpdraftPlus" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "Ações" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "Restauração bem sucedida!" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "Formato de nome de arquivo ruim - isto não parece um arquivo de banco de dados encriptado criado pelo UpdraftPlus" + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "Formato de nome de arquivo ruim - este não parece ser um arquivo criado pelo UpdraftPlus" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "Nenhuma cópia local presente." + +#: admin.php:2072 +msgid "Download in progress" +msgstr "O download em progresso" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "Arquivo está pronto." + +#: admin.php:2043 +msgid "Download failed" +msgstr "Download falhou" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "Erro" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "Não consegui encontrar esse serviço - talvez já tenha terminado?" + +#: admin.php:1854 +msgid "Job deleted" +msgstr "Serviço deletado" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "OK. Brevemente você deverá ver alguma atividade no campo \"Última mensagem no log\" abaixo." + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "Nada ainda foi registrado no log" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "Por favor, consulte este FAQ se você tiver problemas para efetuar o backup." + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "Seu site web está hospedado utilizando o servidor web %s." + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "O UpdraftPlus não suporta oficialmente as versões do WordPress antes da %s. Pode ser que funcione para você, mas se não funcionar, então por favor esteja ciente que nenhum suporte estará disponível até que você atualize o WordPress." + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "Você tem menos do que %s de espaço em disco disponível no disco que o UpdraftPlus está configurado para utilizar nos backups. O UpdraftPlus bem pode ficar sem espaço. Contacte o responsável pelo seu servidor (p.ex.: sua empresa de hospedagem web) para resolver esta questão." + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "Aviso" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "Add-Ons / Suporte Pro" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "Configurações" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "Arquivos Permitidos" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "Não foi possível criar o zip %s. Consulte o arquivo de log para mais informações." + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "Recursão infinita: consulte o seu log para mais informações" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "Visite o UpdraftPlus.Com para ajuda, add-ons e suporte" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "Precisa de ainda mais opções e suporte? Cheque o UpdraftPlus Premium" + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "Por favor, ajude o UpdraftPlus fazendo uma resenha positiva no wordpress.org" + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "Gosta do UpdraftPlus e pode dispor de um minuto?" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "Você sabe traduzir? Quer melhorar o UpdraftPlus para os nativos de sua língua?" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "Arquivo não encontrado" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "A chave de decriptação utilizada:" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "Decriptação falhou. A causa mais provável é que você tenha utilizado uma chave errada." + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "Decriptação falhou. O arquivo do banco de dados está encriptado, mas você não entrou nenhuma chave de encriptação." + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "Não foi possível abrir o arquivo de backup para gravação" + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "Não foi possível gravar o histórico do backup porque não temos uma matriz de backup. O backup provavelmente falhou." + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "Não foi possível ler o diretório" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "O diretório de backup (%s) não é gravável, ou não existe." + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "O backup do WordPress está completo." + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "A tentativa de backup terminou, aparentemente sem sucesso" + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "O backup aparentemente foi bem sucedido e está completo agora." + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "Erro de encriptação ocorreu durante a encriptação do banco de dados. Encriptação foi abortada." + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "Não foi possível criar arquivos no diretório de backup. O backup foi abortado - verifique as suas configurações do UpdraftPlus." + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "Outros" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "Uploads" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "Temas" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "Plugins" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "Nenhum arquivo de log foi encontrado." + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "O arquivo de log não pode ser lido." + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "Nota do UpdraftPlus:" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "Backups do UpdraftPlus" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-ru_RU.mo b/plugins/updraftplus/languages/updraftplus-ru_RU.mo new file mode 100644 index 0000000..1030d3a Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-ru_RU.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-ru_RU.po b/plugins/updraftplus/languages/updraftplus-ru_RU.po new file mode 100644 index 0000000..5564d86 --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-ru_RU.po @@ -0,0 +1,6126 @@ +# Translation of UpdraftPlus in Russian +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2015-12-20 03:48:20+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: ru\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "" + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "" + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "" + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "" + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "" + +#: addons/webdav.php:91 +msgid "Path" +msgstr "" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "" + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "" + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "" + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "" + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "" + +#: admin.php:2310 +msgid "FAQs" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "" + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "" + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "" + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "" + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "" + +#: methods/ftp.php:355 +msgid "login" +msgstr "" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "" + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "" + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "" + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "" + +#: admin.php:2604 +msgid "Now" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "" + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "" + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "" + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "" + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "" + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "" + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "" + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "" + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "" + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "" + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "" + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "" + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "" + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "" + +#: admin.php:3420 +msgid "stop" +msgstr "" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "" + +#: admin.php:3092 +msgid "this backup set" +msgstr "" + +#: admin.php:3020 +msgid "calculate" +msgstr "" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "" + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "" + +#: admin.php:601 +msgid "Saving..." +msgstr "" + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:557 +msgid "Fetching..." +msgstr "" + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "" + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "Пропуск таблицы %s: эта таблица не будет восстановлена" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "Для того чтобы импортировать обычный сайт WordPress в многосайтовую конфигурацию требуется %s." + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "Пожалуйста перейдите по ссылке для того чтобы получить важную информацию, касающуюся этого процесса." + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "Будет импортировано как новый сайт" + +#: admin.php:2884 +msgid "Dismiss" +msgstr "Отклонить" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "Пожалуйста заполните необходимые данные." + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "Узнать больше..." + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "Обратите внимание! Эта настройка влияет только на восстановление базы данных и загрузок, другие данные (такие как плагины, например) в WordPress распространяются на всю сеть." + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "может включать в себя некоторые данные сайта" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "Все сайты" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "Какой из сайтов планируется восстановить" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "Восстановление сайтов с id=%s: все остальные данные (при наличии таковых) будут удалены из распакованной резервной копии" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "ОШИБКА: невозможно создать запись сайта." + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "Произошла ошибка при создании нового сайта по указанному вами адресу:" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "Требуемая информация для восстановления данной резервной копии не была получена (%s)" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "Прикрепить импортированные данные к пользователю" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "Для указания адреса сайта вы должны использовать только буквы нижнего регистра и цифры." + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "Эта функция несовместима с %s" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "Импорт одиночного сайта в многосайтовую конфигурацию" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "другое содержимое из папки wp-content" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "Ядро WordPress" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "Вы выбрали вариант с добавлением %s к резервной копии - эта функция не доступна при импорте отдельного сайта в сеть." + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "Вызвать действие WordPress:" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "Сохраненные вами настройки также повлияют на уже существующие резервные копии - например файлы будут исключены." + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "Пропуск: этот архив уже был восстановлен ранее." + +#: admin.php:3860 +msgid "File Options" +msgstr "Опции файлов" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "Отправка резервной копии в удалённое хранилище" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "График резервного копирования базы данных" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "График дополнительного резервного копирования" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "Расписание резервного копирования файлов" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "Вам необходимо будет заново ввести все свои настройки. Вы также можете сделать это перед деактивацией/удалением UpdraftPlus, если вам так удобнее." + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "Эта кнопка удаляет все настройки UpdraftPlus и информацию о незавершенных операциях резервного копирования (но не удаляет существующие резервные копии из облачного хранилища)." + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "Отправить эту копию в удаленное хранилище" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "Взгляните на UpdraftPlus Vault." + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "Ещё не выбрали удаленное хранилище?" + +#: admin.php:5157 +msgid "settings" +msgstr "настройки" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "Резервная копия не может быть отправлена в удалённое хранилище - ничего не сохранено в %s" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "Включить в резервную копию любые файлы " + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "Включить в резервную копию базу данных" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "Продолжить восстановление" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "У вас есть незавершенная операция восстановления, начатая %s назад." + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "Незавершенное восстановление" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "%s минут, %s секунд" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "Содержимое резервных копий и Расписание" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "Премиум / Дополнения" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "Нет возможности получиить достаточную информацию о прогрессе запущенной операции восстановления." + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "Скачать" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "Вы включили резервное копирование файлов, но не выбрали группы файлов" + +#: admin.php:442 +msgid "Extensions" +msgstr "Расширения" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "Расширенные инструменты" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "Расположение контейнера" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "Примите во внимание что Google не поддерживает любой класс хранения во всех расположениях - вам нужно обратиться к их документации для того чтобы уточнить наличие поддержки." + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "Эти настройки будут применены только при создании нового контейнера." + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "Вы должны использовать название контейнера, которое уникально для всех пользователей %s." + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "Не путайте %s с %s - это разные вещи." + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "У вас нет доступа к данному контейнеру" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "Western Europe" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "Eastern Asia-Pacific" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "Western United States" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "Eastern United States" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr " Eastern United States" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "Центральная Америка" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "Евросоюз" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "Азиатско-Тихоокеанский регион" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "мультирегиональное расположение" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "Соединённые Штаты" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "Nearline" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "Durable reduced availability" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "Стандартный" + +#: addons/azure.php:524 +msgid "container" +msgstr "контейнер" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "Здесь вы, при необходимости, можете ввести путь к любой виртуальной папке %s." + +#: addons/azure.php:523 +msgid "optional" +msgstr "опционально" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "Префикс" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "Просмотрите гайдлайны Microsoft по названиям контейнеров по этой ссылке." + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "Если %s не был создан ранее - он будет создан сейчас." + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "Введите путь к %s, который вы хотите использовать сюда." + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "Это не логин Azure - просмотрите инструкцию если вам нужна помощь." + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "Название аккаунта." + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "Azure" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "Создайте реквизиты доступа Azure в консоли разработчка Azure" + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "Не удалось создать контейнер" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "Не удалось получить доступ к контейнеру" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "Для того чтобы завершить перенос/копирование, вы должны войти на удалённый сайт и запустить восстановление из данной резервной копии." + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "таблица опций не найдена" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "найдено таблиц опций или метаданных сайта" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "Произошла ошибка при резервном копировании базы данных " + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "Директория для резервного копирования недоступна для записи (или законичилось дисковое пространство) - резервное копирование базы данных вскоре станет невозможным." + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "требуется для некоторых провайдеров удалённого хранилища" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "Не установлено" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "Класс хранилища" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "По этой ссылке вы можете просмотреть гайдлайны Google в отншении названий контейнеров." + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "Названия контейнеров должны быть уникальны. Если название контейнера ещё не занято - он будет создан." + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "Введите сюда название контейнера %s, которое вы хотите использовать." + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "Контейнер" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "В противном случае можете оставить это поле пустым." + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "Внимание! Это необходимо только в случае если вы ещё не создали контейнер и хотите, чтобы UpdraftPlus сделал это для вас." + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "Введите ID проекта %s, который вы хотите использовать здесь." + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "Проследуйте по этой ссылке в вашу консоль Google API и активируйте там Storage API, после чего создайте ID клиента в разделе API Access." + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "Вы должны ввести ID проекта для того чтобы получить возможность создать новый контейнер." + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "ID проекта" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "Вы должны авторизоваться, прежде чем вы сможете проверить свои настройки." + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "Вы ещё не получали токен доступа от Google - вам нужно авторизовать или реавторизовать соединение с Google Cloud." + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "У вас нет доступа к этому контейнеру." + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "Google Cloud" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "Исключение службы %s" + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "Установка UpdraftPlus является незавершенной, пожалуйста, удалите и заново установите плагин. Скорее всего, произошла ошибка WordPress во время процесса копирования файлов." + +#: restorer.php:767 +msgid "Deferring..." +msgstr "Откладываем..." + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "или для настройки сложных расписаний" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "Вы уверены, что хотите удалить %s из UpdraftPlus?" + +#: admin.php:3081 +msgid "Deselect" +msgstr "Снять выделение" + +#: admin.php:3080 +msgid "Select all" +msgstr "Выделить всё" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "Действия с выбранными резервными копиями" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "Нажмите здесь для того чтобы проверить наличие во внешних хранилищах существующих резервных копий (любых сайтов, при условии что они хранятся в одной папке)." + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "Обработка..." + +#: admin.php:634 +msgid "For backups older than" +msgstr "Для резервных копий, которые старше, чем" + +#: admin.php:633 +msgid "week(s)" +msgstr "неделя(-ль)" + +#: admin.php:632 +msgid "hour(s)" +msgstr "час(-ов)" + +#: admin.php:631 +msgid "day(s)" +msgstr "день(-ней)" + +#: admin.php:630 +msgid "in the month" +msgstr "в месяц" + +#: admin.php:629 +msgid "day" +msgstr "день" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "(столько сколько вам требуется)" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "Добавить дополнительное правило задержки..." + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "Это база данных может быть развернута на версии MySQL %s или более поздней." + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "Данная проблема вызвана попыткой восстановить базу данных на очень старой версии MySQL, которая несовместима с базой данных источника." + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "В данный момент у вас нет подписки на UpdraftPlus Vault" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "Вам необходимо обновить MySQL для того чтобы иметь возможность использовать эту базу данных." + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "Эта база данных использует функции MySQL, которые недоступны в устаревшей версии MySQL (%s) на которой работает этот сайт." + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "Отсутствуют рекламные ссылки на странице настроек UpdraftPlus" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "Директория UpdraftPlus в wp-content/plugins имеет пробел в названии; Это может вызвать неполадки в работе WordPress. Вам необходимо переименовать директорию в wp-content/plugins/updraftplus." + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "Вы не знаете адрес e-mail или забыли ваш пароль?" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "Для того чтобы подключиться введите сюда ваши e-mail и пароль UpdraftPlus.com" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "Ознакомьтесь с FAQ здесь." + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "Выберите для того чтобы использовать шифрование на стороне сервера Amazon" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "Шифрование на стороне сервера" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "Если вы забыли ваш пароль updraftplus.com - перейдите сюда для того чтобы сменить его." + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "Перейдите в настройки удаленного хранилища для того чтобы подключиться." + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "%s выбран в качестве удаленного хранилища, однако в данный момент вы не подключены." + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "Платежи могут быть произведены в долларах, евро или фунтах стерлинга, при помощи PayPal или банковской карты." + +#: admin.php:607 +msgid "Update quota count" +msgstr "Обновить квоту" + +#: admin.php:606 +msgid "Counting..." +msgstr "Подсчёт..." + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "Отключение..." + +#: admin.php:603 +msgid "Connecting..." +msgstr "Соединение..." + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "Обновить статус" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "Увеличить квоту" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "Текущее использование:" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "Вы можете увеличить квоту здесь" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "%s Ошибка: ваша квота свободного места слишком мала (%s) для загрузки данного архива (%s)." + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "Отключиться" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "Квота:" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "Владелец хранилища" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "Отлично - больше ничего не нужно настраивать." + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "Данный сайт подключен к UpdraftPlus Vault." + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "Вы не подключены к UpdraftPlus Vault." + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "Проследуйте сюда для получения помощи" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "E-mail" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "Назад..." + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "Подписки могут быть отменены в любой момент." + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "%s на четверть" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "Узнать больше здесь." + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "UpdraftPlus Vault использует лучшие в мире дата-центры Amazon с распределенным хранением данных, для того чтобы добиться 99.999999999%-ной надёжности." + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "Уже приобрели место?" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "Показать настройки" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "Вы новый пользователь?" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "Нажмите кнопку чтобы начать." + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "UpdraftPlus Vault предоставляет вам надёжное и легкое в использовании хранилище по отличной цене. " + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "Срок вашей подписки на UpdraftPlus Vault истёк. В течении следующих нескольких дней ваши данные будут удалены безвозвратно. Если вы не хотите чтобы это произошло - вам нужно как можно быстрее продлить подписку." + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "Срок вашей подписки на UpdraftPlus Vault истекает. Осталось всего несколько дней до приостановления предоставления услуг. После этого вы потеряете квоту на хранение, а также доступ к данным, которые там хранятся. Пожалуйста, продлите подписку при первой же возможности!" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "Вы приобрели подписку UpdraftPlus Premium более года назад. Вам необходимо срочно продлить подписку, для того, чтобы не потерять 12 месяцев бесплатного хранилища, которые предоставляются всем текущим пользователям UpdraftPlus Premium." + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "Updraft Vault" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "Не удалось удалить:" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "Процессор zip ответил следующим сообщением: %s" + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "Без этого разрешения UpdraftPlus не сможет удалять резервные копии. Также вам необходимо будет установить настройки сохранений на очень высокий уровень для того чтобы не наблюдать ошибки удаления." + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "Разрешить удаление" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "Без этого разрешения вы не сможете напрямую закачивать или восстанавливать резервную копию при помощи UpdraftPlus, вместо этого вам придется производить вышеуказанные действия через сайт AWS." + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "Разрешить загрузку" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "Если отправка данных напрямую с сайта на сайт не работает в вашем случае, есть ещё три способа - попробуйте один из них." + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "Вы должны убедиться что удалённый сайт находится в онлайн, не защищен фаерволом, не имеет модулей безопасности, которые могут блокировать доступ, имеет UpdraftPlus версии %s или выше, который активирован, а также все ключи введены верно." + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "Существующие ключи" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "Ключи, позволяющие подключение для удалённых сайтов, пока не создавались." + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "Ваш новый ключ:" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "Для того чтобы разрешить другому сайту отправлять резервную копию на этот, создайте ключ, а затем нажмите кнопку 'Перенос' на сайте, с которого будет производиться отправка, и затем скопируйте ключ сюда." + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "Для того чтобы получить ключ для удалённого сайта, откройте вкладку 'Перенос' на этом сайте, прокрутите вниз и там вы сможете создать ключ." + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "Ключи для этого сайта создаются в разделе под тем, который вы только что выбрали." + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "Вы должны скопировать себе этот ключ сейчас - потом его нельзя будет отобразить здесь заново." + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "Ключ создан успешно" + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "Ключ с таким именем уже существует; вы должны выбрать уникальное имя." + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "Дополнительно отправить эту резервную копию в активные удалённые хранилища" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "URL сайта на который вы пытаетесь произвести отправку (%s) выглядит как локальная версия. Если вы производите отправку из внешней сети - скорее всего файервол блокирует это действие." + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "Сайт не найден" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "Резервная копия будет отправлена сюда:" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "Восстановить существующую резервную копию на этом сайте" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "Этот сайт пока не имеет резервных копий для восстановления." + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "Резервная копия создана %s" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "Выбранный способ хранения не позволяет произвести закачку" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "(резервная копия импортирована из удаленного расположения)" + +#: admin.php:4423 +msgid "Site" +msgstr "Сайт" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "Резервная копия отправлена на удалённый сайт - скачать нельзя." + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "Прежде чем произвести восстановление данной резервной копии, вы должны определить, предназначена ли она для этого сайта (и не является ли копией для другого сайта)." + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "UpdraftPlus определил эту резервную копию как не принадлежащую текущей установке WordPress, она либо получена из удаленного хранилища, либо отправлена с другого сайта." + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "Проверка соединения..." + +#: admin.php:617 +msgid "Deleting..." +msgstr "Удаление..." + +#: admin.php:616 +msgid "key name" +msgstr "имя ключа" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "Пожалуйста, присвойте этому ключу название (напр. сайт для которого он):" + +#: admin.php:611 +msgid "Creating..." +msgstr "Создание..." + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "Или получить резервную копию от удаленного сайта" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "Вставьте ключ сюда" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "Как я могу получить ключ сайта?" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "Для того чтобы добавить этот сайт в качестве получателя резервных копий, введите ключ от него ниже." + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "Или отправить резервную копию на другой сайт" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "Отправить" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "Отправить на сайт:" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "Сайты получающие резервные копии пока не добавлены." + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "Для отправки резервных копий на следующий сайт:" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "Ключ успешно добавлен." + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "Введенный ключ не принадлежит удалённому сайту (он принадлежит этому)." + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "Введенный ключ поврежден - попробуйте еще раз." + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "Введенный ключ имеет неверную длину - попробуйте еще раз." + +#: addons/migrator.php:1861 +msgid "key" +msgstr "ключ" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "Почти все серверы FTP работают в пассивном режиме. Но если вам необходим активный режим - снимите выбор с этого пункта." + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "Пассивный режим" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "Удаленный путь" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "Пароль FTP" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "Логин FTP" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "FTP сервер" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "Перенос UpdraftPlus настраивает процесс восстановления соответствующим образом для того чтобы правильно распределить данные резервной копии на новом сайте." + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "\"Перенос\" - это практически то же самое что и восстановление, разница только в том что используется резервная копия, импортированная с другого сайта." + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "Добавить сайт" + +#: admin.php:608 +msgid "Adding..." +msgstr "Добавление..." + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "Запрос не подтвержден - возможно вы уже использовали эту покупку в другом месте, либо оплаченный вами период на загрузку с updraftplus.com закончился?" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "Для того чтобы использовать данную резервную копию ваш сервер базы данных должен поддерживать набор символов %s." + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "перейдите сюда для того чтобы сменить ваш пароль на updraftplus.com." + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "Если вы забыли ваш пароль" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "Здесь вы можете заново ввести свой пароль." + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "После нажатия этой кнопки у вас будет возможность выбрать какие компоненты вы хотели бы перенести" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "Для того чтобы импортировать резервную копию перейдите во вкладку \"Существующие РК\"" + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "Вы изменили настройки, но не произвели сохранение." + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "Напр. %s не чувствителен к регистру." + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "Если OneDrive отображает сообщение \"unauthorized_client\", это означает что вы ввели здесь неправильный ID." + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "Для более подробной инструкции со скриншотами пройдите по этой ссылке." + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "Создайте реквизиты доступа в вашей консоли разработчика OneDrive." + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "Вы должны добавить следующее значение в качестве URI авторизованного редиректа в вашей консоли OneDrive (в разделе \"Настройки API\") " + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "%s не удалось авторизоваться" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "OneDrive" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "Пожалуйста переавторизуйте ваше соединение с аккаунтом %s." + +#: methods/email.php:73 +msgid "configure it here" +msgstr "настроить здесь" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "Для того чтобы удалить блок, перейдите сюда." + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "Не забудьте сохранить ваши настройки." + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "Теперь вы используете аккаунт пользователя IAM для доступа к вашему контейнеру." + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "контейнер S3 " + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "China (Beijing) (restricted)" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "South America (Sao Paulo)" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "Asia Pacific (Tokyo)" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "Asia Pacific (Sydney)" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "Asia Pacific (Singapore)" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "EU (Frankfurt)" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "EU (Ireland)" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "US Government West (запрещен)" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "US West (N. California)" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "US West (Oregon)" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "US Standard (по-умолчанию)" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "регион хранилища S3" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "Новое имя пользователя IAM" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "Секретный ключ Администратора" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "Ключ доступа Администратора" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "После чего, эти реквизиты доступа с меньшими правами могут быть использованы вместо ваших административных ключей." + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "Эти данные будут использованы для создания нового пользователя и пары ключей, которые будут в соответствии с настройками IAM иметь доступ только к данному контейнеру." + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "Введите ваши административные ключ доступа и секретный ключ Amazon S3 (необходимо чтобы введенные реквизиты имели достаточно прав для создания новых пользователей и контейнеров) а также новое (уникальное) имя пользователя для нового пользователя и название контейнера." + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "Создать нового пользователя IAM и контейнер S3" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "Секретный ключ: %s" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "Ключ доступа: %s" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "Не удалось применить настройки прав к пользователю " + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "В процессе создания ключа пользователя произошла ошибка" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "Ну удалось создать ключ доступа пользователя" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "Ошибка IAM (%s)" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "Конфликт: такой пользователь уже существует" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "Ошибка: Не удалось получить доступ или создать контейнер. Пожалуйста, проверьте реквизиты доступа, и в случае если они правильные - попробуйте использовать другое название контейнера (возможно что другой пользователь AWS уже выбранное вами имя)." + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "Авторизация AWS не удалась" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "Не удалось создать нового пользователя AWS, так как был использован старый toolkit AWS." + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "Вам нужно ввести контейнер" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "Вам нужно ввести новое имя пользователя IAM" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "Вам необходимо ввести секретный ключ администратора" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "Вам необходимо ввести ключ доступа администратора" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "Если у вас есть пользователь-администратор AWS, то вы можете использовать этот мастер для того чтобы быстро создать нового пользователя AWS (IAM) с доступом только к этому контейнеру (а не ко всей учётной записи)" + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "Для того чтобы создать нового под-пользователя IAM и ключ доступа который будет иметь доступ только к данному контейнеру воспользуйтесь этим дополнением." + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "Для персональной поддержки, а также возможности копировать сайты, большего количества вариантов хранения, шифрования резервных копий и более детальных отчётов, а также отсутствия рекламы и многих других полезных вещей - обратите внимание на Premium версию UpdraftPlus - самого популярного в мире плагина для резервного копирования." + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "Новости UpdraftPlus, полезные учебные материалы по WordPress для разработчиков и админимстраторов сайтов, общие новости WordPress. Вы можете отменить подписку в любой момент." + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "Адрес загрузок (%s) изменился в процессе переноса - сброс (на: %s)" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "Скорее всего это означает что с вами на одном сервере находился сайт который был ранее взломан и использовался для атак." + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "Похоже что IP вашего сервера (%s) заблокирован." + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "UpdraftPlus.com выдал ответ 'Доступ Запрещен'." + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "Premium Плагины WooCommerce" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "Бесплатный плагин двухфакторной авторизации" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "Больше качественных плагинов" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "Перейти в магазин." + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "Сравнить с бесплатной версией" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "UpdraftPlus Premium" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "Для того чтобы подписаться проследуйте по этой ссылке." + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "Бесплатная Новостная рассылка" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "Благодарим вас за пользование UpdraftPlus!" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "Отложить (на %s месяц(-ев))" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "(одновременно с созданием резервной копии файлов)" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "Нет завершенных резервный копий" + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "Первый шаг - удалить бесплатную версию." + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "Если вы совершали покупку на UpdraftPlus.com - следуйте по этой ссылке для того, чтобы получить инструкцию по установке приобретенных компонентов." + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "Подписаться на Новости" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "Следуйте по этой ссылке чтобы подписаться на новостную рассылку UpdraftPlus." + +#: admin.php:2831 +msgid "Personal support" +msgstr "Персональная поддержка" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "Блокировка доступа к настройкам" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "Поддержка Сети/Мультисайтов" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "Исправление времени резервного копирования" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "Запланированные резервные копии" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "Восстановление резервных копий других плагинов" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "Шифрование базы данных" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "Отправлять резервные копии на несколько удаленных адресов" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "Автоматическое резервное копирование при обновлении WordPress/плагинов/шаблонов" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "Дополнительные функции уведомлений" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "Базовое уведомление по e-mail" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "Миграция / клонирование (напр. копирование) сайтов" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "Сделать резервную копию дополнительных файлов и баз данных" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "WebDAV, Copy.Com, SFTP/SCP, шифрованный FTP" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "Dropbox, Google Drive, FTP, S3, Rackspace, Email" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "Резервное копирование в удалённое хранилище" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "Восстановление из резервной копии" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "Переведён на более чем %s языков" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "Создание резервной копии WordPress и базы данных" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "Купить сейчас!" + +#: admin.php:2718 +msgid "Get it from" +msgstr "Получить с" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "Задать вопрос перед покупкой" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "ЧаВо перед покупкой" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "Полный список функций" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "Купить UpdraftPlus Premium" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "В данный момент вы используете бесплатную версию UpdraftPlus с wordpress.org" + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Создавать (при необходимости) резервную копию плагинов, тем и базы данных WordPress, при помощи UpdraftPlus перед обновлением" + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "%s Ошибка: Не удалось инициализировать" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "или" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "или" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "Вы не выбрали компоненты для восстановления. Пожалуйста, выберите хотя бы один компонент и попытайтесь снова." + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), поддерживаются форматы ключей XML и PuTTY." + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "Возобновление загрузок поддерживается SFTP, но не поддерживается SCP. Поэтому, при использовании SCP убедитесь что ваш сервер позволяет процессам PHP работать достаточно долго для того чтобы загрузить ваш самый большой файл резервной копии." + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "группа пользователей OpenStack" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "Это должен быть URI аутентификации v2 (Keystone). v1 (Swauth) не поддерживается." + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "адрес админ панели вашего сайта" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "Выберите это поле для того чтобы базовый отчет был отправлен на" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "Ручное" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "Произошло (%s) ошибок:" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "Изменить настройки блокировки" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "Любой другой файл/директория на вашем сервере который вы желаете включить в резервную копию" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "Для ещё большего количества функций и персональной техподдержки, обратите внимание на" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "Не удалось создать таблицу - возможно это произошло потому что отсутствует разрешение на удаление таблиц, а таблица уже существует; продолжаю" + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "Очистка кэша страниц (%s)..." + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "Фраза (Ключ) для шифровки базы данных " + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "Автоматическое резервное копирование перед обновлением" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "Ядро WordPress (только)" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "Для помощи в разблокировке свяжитесь с теми, кто поддерживает UpdraftPlus для вас." + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "Для доступа к настройкам UpdraftPlus, пожалуйста введите ваш пароль для разблокировки" + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "Пароль неверный" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "Разблокировать" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "В противном случае будет отображена ссылка по-умолчанию." + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "Каждый кто увидит экран блокировки будет видеть данный URL техподдержки - введите адрес сайта или адрес e-mail." + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "URL техподдержки" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "Заново требовать пароль в последствии" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "%s недель" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "1 неделя" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "%s часа(-ов)" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "1 час" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "Пожалуйста убедитесь в том что вы записали (чтобы не забыть) пароль!" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "Заблокировать доступ к настройкам UpdraftPlus" + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "Настройки сохранены." + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "Пароль администратора был изменён." + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "Пароль администратора установлен." + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "Пароль администратора был удалён." + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "(узнать больше об этом важном параметре)" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "Примечание: после того как вы получили ваши дополнения, вы можете стереть ваш пароль (но не адрес электронной почты) из поля настроек ниже, при этом доступ к обновлениям останется." + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "Посмотреть лог" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "Данные резервной копии (нажмите чтобы скачать)" + +#: admin.php:4368 +msgid "Backup date" +msgstr "Дата резервного копирования" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "и накапливает множество запланированных резервных копий" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "добавочная резервная копия; базовая резервная копия: %s" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "Для того чтобы иметь возможность заблокировать доступ к настройкам UpdraftPlus паролем - обновитесь до версии UpdraftPlus Premium." + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "Файлы загруженные в UpdraftPlus." + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "Кнопка \"Создать РК Сейчас\" отключена, т.к. директория, указанная для резервного копирования недоступна для записи (перейдите во вкладку \"Настройки\" и найдите соответствующую опцию)." + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "Подпись резервной копии:" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "Ошибка: неожиданная ошибка при чтении файла" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "проверьте ваш лог для того чтобы узнать больше подробностей." + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "похоже что на вашем сервере (хостинге) нет свободного места; пожалуйста ознакомьтесь: %s" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "Произошла ошибка при работе с zip архивом" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "Ваша подпись к этой резервной копии (опционально)" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "%s запрещает авторизацию сайтов размещенных на прямых IP адресах. Вам необходимо сменить адрес своего сайта (%s) прежде чем вы сможете использовать %s для хранения." + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "Введенный вами адрес email не опознан UpdraftPlus.com" + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "Вы введи корректный адрес email, но ваш UpdraftPlus.com не может опознать ваш пароль" + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "Вам необходимо указать и e-mail и пароль" + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "Чтобы продолжить, нажмите 'Создать РК'. После чего смотрите поле 'Последнее сообщение журнала/лога на предмет активности." + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "Если вы хотите восстановить резервную копию мультисайтовой установки, вы должны сперва настроить ваш WordPress как мультисайтовую установку." + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "Ваша резервная копия является резервной копии мультисайтовой установки Wordpress. Однако данный сайт не является мультисайтовой установкой. В связи с этим будет доступен только первый сайт из сети сайтов." + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "уже готово" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "пропущено (не в списке)" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "Таблица поиска/замены:" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "Введите в виде списка разделенного запятыми; в противном случае оставьте поля пустыми для всех таблиц." + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "Только данные таблицы" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "Строк на пакет" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "Вы пока еще не подключили ваш аккаунт UpdraftPlus.com." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "Вам нужно подключить ваш аккаунт для того чтобы получать будущие обновления UpdraftPlus." + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "Любые запросы в техподдержку, связанные с %s, должны быть адресованы вашему хостинг провайдеру." + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "Вам стоит продолжать только в том случае если вы не имеете возможности обновить текущий сервер и уверены (или готовы пойти на риск) в том что ваши плагины/темы/итд. совместимы со старой версией %s." + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "Данный сервер значительно более новый чем тот на который вы производите восстановление резервной копии в данный момент (версия %s)." + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "Сайт из данной резервной копии ранее работал на сервере с версией %s %s." + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "LinkedIn" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "Google+" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "Facebook" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "Twitter" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "UpdraftPlus теперь имеет группы в соцсетях - вы можете найти нас здесь:" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "Почему я это вижу?" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "Местоположение данной директории задаётся в экспертных настройках, во вкладке Настройки." + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "Нажмите сюда для того чтобы произвести поиск недавно загруженных вами резервных копий в директории UpdraftPlus на вашем хостинге." + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "Начать резервное копирование" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "Вы используете сервер %s, но при этом у вас отсутствует/не загружен модуль %s." + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "Вам необходимо проконсультироваться с вашим хостинг провайдером для того чтобы узнать как установить права на запись в директорию для плагина Wordpress." + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "В случае если у вас нет никаких проблем, можете полностью проигнорировать всё написанное здесь." + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "Данный файл не может быть загружен" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "Вы найдете больше информации об этом в разделе Настройки." + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "Поддерживаемые плагины: %s" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "Эта резервная копия была создана другим плагином? Если так,то вам может понадобиться переименовать её, чтобы она могла быть распознана - пожалуйста, проследуйте по ссылке." + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "Расскажите мне больше про добавочное резервное копирование." + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "Лимит памяти" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "восстановление" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "Таблица, которая будет удалена при необходимости: %s" + +#: backup.php:829 +msgid "Incremental" +msgstr "Добавочный" + +#: backup.php:829 +msgid "Full backup" +msgstr "Полное резервное копирование" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "обрабатываются обновления..." + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "(просмотреть лог...)" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "Резервное копирование выполнено успешно" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "Каждый(-е) %s час(-ов)" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "найти и заменить" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "Вперёд" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "Поиск и замена не могут быть отменены - вы уверены, что хотите сделать это?" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "Это легко может испортить ваш сайт; пользуйтесь осторожно!" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "Заменить на" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "Искать" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "Найти / заменить базу данных" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "условие поиска" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "Произошло слишком много ошибок базы данных - отмена" + +#: backup.php:895 +msgid "read more at %s" +msgstr "прочесть больше на %s" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "Электронная почта, сгенерированная бесплатной версией UpdraftPlus, включает в себя последние новости UpdraftPlus.com" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "N.B. Если вы устанавливаете UpdraftPlus на нескольких сайтах WordPress, тогда вы не можете повторно использовать ваш проект; вы должны создать новый с помощью консоли Google API для каждого сайта." + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "Вы ещё не сделали ни одной резервной копии." + +#: admin.php:3872 +msgid "Database Options" +msgstr "Настройки базы данных" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "Плагины для поиска ошибок:" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "%s (%s использовано)" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "Свободное место в учетной записи:" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "Эта кнопка неактивна по причине того, что запись в директорию резервного копирования не возможна (проверьте настройки)." + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "Существующие резервные копии" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "Текущий статус" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "Для того чтобы изменить любые из настроек резервного копирования по умолчанию, настроить резервное копирование по расписанию, отправить свои резервные копии в удалённое хранилище (рекомендовано), и прочее - перейдите на вкладку настроек." + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "Чтобы сделать резервную копию просто нажмите на кнопку Backup Now." + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "Добро пожаловать в UpdraftPlus!" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "" +"Введённый сюда текст будет использован для шифрования резервных копий\n" +"(по алгоритму Rijndael). Запомните его и, если записали, не теряйте,\n" +"иначе вы не сможете восстановить ваши резервные копии. Этот текст-ключ также используется для дешифровки резервных копий через интерфейс админ-панели (поэтому если вы измените его, автоматическая дешифровка не сработает до тех пор, пока вы не смените его обратно)." + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "Проверка..." + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "Проверка соединения..." + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "Префикс таблиц" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "Создать резервную копию внешней базы данных" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "Добавить внешнюю базу данных к резервной копии..." + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "Если ваша база данных содержит дополнительные таблицы которые не имеют отношения к WordPress (вы поймете если это так), активируйте данную опцию для того чтобы добавить их в резервную копию." + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "Создавать резервную копию таблиц не принадлежащих Wordpress, находящихся в базе данных используемой Wordpress" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "Данная настройка активирует резервное копирование таблиц не принадлежащих Wordpress (определяется отсутствием настроенного префикса Wordpress, %s) хранящихся в базе данных MySQL." + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "Соединение установить не удалось." + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "Соединение успешно." + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "%s всего таблиц; %s с заданным префиксом." + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "%s таблица(-ц) найдено." + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "попытка соединения с базой данных не удалась" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "имя базы данных" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "хост" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "пользователь" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "Внешняя база данных (%s)" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "Перейдите по этой ссылке в вашу Консоль Google API, и активируйте Drive API, а затем создайте Client ID в разделе API Access." + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "не удалось получить доступ к родительской директории" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "Однако, следующие попытки доступа провалились:" + +#: admin.php:4499 +msgid "External database" +msgstr "Внешняя база данных" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "Также активирует показ на данном экране отладочных сообщений от всех плагинов - не удивляйтесь увидев их здесь." + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "Создать резервные копии большего количества баз данных" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "Для начала, введите ключ шифрования" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "Здесь вы можете вручную расшифровать зашифрованную базу данных." + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "А также создавать резервные копии внешних баз данных." + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "Не хотите чтобы за вами шпионили? UpdraftPlus Premium может шифровать резервные копии вашей базы данных. " + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "используйте UpdraftPlus Premium" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "Расшифровать не удалось. Файл базы данных зашифрован." + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "Восстановлению подлежат только базы данных Wordpress; с внешними базами данных вам придется работать вручную." + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "Произошла ошибка при выполнении первой команды %s - отмена запуска" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "Соединение прервано: проверьте реквизиты доступа, удостоверьтесь что сервер с базой данных доступен, а также убедитесь что соединение с сетью не блокировано файерволом." + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "попытка соединения с базой данных не удалась." + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "Внимание: домашний URL базы данных (%s) отличается от того, что мы ожидали (%s)" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "В %s, названия путей чувствительны к регистру." + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "Если вы оставите это поле пустым, то резервная копия будет помещёна в корень вашей %s" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "напр. %s" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "Если директория не существует она будет создана." + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "Введите путь к %s папке, которую вы хотите использовать." + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "Контейнер" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "Оставьте это поле пустым для того чтобы выбрать значение по умолчанию." + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "Арендатор" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "Проследуйте по ссылке чтобы узнать больше" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "URI для авторизации" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "Получите реквизиты доступа у своего провайдера OpenStack Swift, затем выберите название контейнера чтобы использовать для своего хранилища. Этот контейнер будет создан для вас, если он ещё не существует." + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "Не удалось скачать %s" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "Не удалось загрузить" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "не удалось получить список файлов" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "Не удалось загрузить %s" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "Успешно:" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "После того, как вы сохраните настройки (нажав «Сохранить настройки» ниже), зайдите сюда ещё раз и нажмите эту ссылку чтобы завершить авторизацию в %s." + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "(Похоже, что вы уже вошли)." + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "Dropbox" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "Войти с %s" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "Ошибка при скачивании файла: Не удалось скачать" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "Регион: %s" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "%s ошибка - мы получили доступ к контейнеру, но не смогли создать в нём файл" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "Объект %s не найден" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "Не можем принять контейнер %s" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "Ошибка %s - не удалось получить доступ к контейнеру" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "Имя владельца аккаунта: %s." + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "Чтобы иметь возможность использовать своё название директории, используйте UpdraftPlus Premium." + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "Это номер ID, который используется внутри Google Drive" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "Это НЕ название директории." + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "Директория" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "Скачивание %s: не удалось: файл не найден" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "Название: %s." + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "Просмотр файлов на Google Drive: не удалось получить доступ к родительской директории" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "Версия вашего %s: %s." + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "Вам придётся попросить вашего хостинг провайдера проапгрейдиться." + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "Этот метод удалённого хранилища (%s) требует PHP %s или позднее." + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "Директория тем (%s) не найдена, но её версия в нижнем регистре существует; обновляем настройку в БД соответственно" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "Вызвать" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "Получить" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "Эта функция требует %s версии %s или больше" + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "Обнаружена информация о построителе тем Elegant themes: очищаем папку временных файлов" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "%s файлов было извлечено" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "Не удалось распаковать архив" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "Ошибка - не удалось скачать файл" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "Пересканировать локальную директорию, чтобы найти новые наборы резервных копий" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "Обновите UpdraftPlus, для того чтобы убедиться, что вы используете версию, которая была проверена на совместимость." + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "Она была проверена вплоть до версии %s." + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "Установленная версия UpdraftPlus Backup/Restore не была проверена на вашей версии WordPress (%s)." + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "пароль/ключ" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "Ключ" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "Ваш логин может быть основан на ключе или пароле - вам нужно ввести что то одно, нет необходимости вводить и то и другое." + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "Ключ, который Вы предоставили, имеет неправильный формат или был повреждён." + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "SCP/SFTP пароль/ключ" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "Резервная копия файлов (создана %s)" + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "Резервная копия файлов и базы данных WordPress (создана %s)" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "Резервная копия был создана: %s." + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "База данных (Автор: %s)" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "неизвестный источник" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "Повторно сканировать удалённое хранилище" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "Загрузить файлы резервной копии" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "Резервная копия была создана %s и может быть импортирована." + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "Прочитайте эту страницу чтобы получить информацию о возможных причинах и способах их устранения." + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "В WordPress есть %d запланированных задач, которые были просрочены. В случае если Ваш сайт не в разработке, возможно это означает, что планировщик WordPress не работает." + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "Если это резервная копия, созданная другим плагином резервного копирования, то, вероятно, UpdraftPlus Premium сможет вам помочь." + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "Впрочем, архивы UpdraftPlus это стандартные zip/SQL файлы - так что если вы уверены, что ваш файл имеет правильный формат, то Вы можете переименовать его так чтобы он соответствовал заданному шаблону." + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "Этот файл не является архивом с резервной копией UpdraftPlus (обычно файлы резервной копии это архивы .zip или .gz c именем вида backup_(time)_(site name)_(code)_(type).(zip|gz))." + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "Резервная копия создана неизвестным источником (%s) - восстановление не возможно." + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "Папка с содержимым Wordpress (wp-content) не обнаружена в данном zip-архиве." + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "Данная версия UpdraftPlus не имеет информации о том, как работать с этим типом резервных копий." + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "%s вернул непредусмотренный ответ HTTP: %s" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "Модуль UpdraftPlus для этого метода доступа к файлам (%s) не поддерживает листинг файлов" + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "Настройки не найдены" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "Одна или более резервных копий были добавлены при сканировании удалённого хранилища; обратите внимание, что эти резервные копии не будут автоматически удалены при \"сопоставлении\" настроек с сохраненными; если/когда вы захотите удалить их - вам придётся сделать это вручную." + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "Повторно сканируем удалённое и локальное хранилища в поисках наборов резервных копий." + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "(Узнать больше)" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "Настройка путей для нескольких сайтов" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "Сохранять все сообщения в системный журнал (это может понадобиться только администраторам сервера)" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "Добавить другой..." + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "Удалить" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "Другие %s ЧаВо." + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "" +"Поставьте галочку, чтобы получать больше информации и электронных\n" +"писем во время резервного копирования — может пригодиться, если что-то\n" +"пойдет не так." + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "Если вводите несколько файлов или директорий, разделяйте при помощи запятых. Для значений верхнего уровня можно использовать * в начале или конце в качестве маски." + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "Найдены данные дополнения менеджер нестандартного контента: очистка кэша настроек" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr " Ваш хостинг провайдер должен активировать данные функции для работы %s." + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "В вашей конфигурации PHP отключены следующие функции: %s." + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "шифрованный FTP (explicit - шифрование)" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "защищённый FTP (implicit - шифрование)" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "обычный (незащищённый) FTP" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "Резервная копия создана:" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "Доступно для получения на этом сайте" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "Для того чтобы продлить доступ к технической поддержке, пожалуйста продлите вашу подписку." + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "Ваша платная подписка для доступа к техподдержке UpdraftPlus скоро заканчивается." + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "Для того чтобы вновь получить доступ, пожалуйста продлите подписку." + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "Ваша платная подписка для доступа к техподдержке UpdraftPlus истекла." + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "Ваша платная подписка на обновления UpdraftPlus скоро истекает." + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "Для того чтобы продлить доступ к обновлениям (включая новые функции и совместимость с последующими версиями WordPress) а также для получения доступа к техподдержке, пожалуйста продлите вашу подписку." + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "Ваша платная подписка на UpdraftPlus для обновления %s дополнений %s для данного сайта скоро истекает." + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "Ваша платная подписка на обновления UpdraftPlus для дополнения %s для данного сайта истёкла." + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "Для того чтобы возобновить доступ к обновлениям (включая новые функции и совместимость с последующими версиями WordPress) а также для доступа к техподдержке, пожалуйста продлите подписку." + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "Ваша платная подписка для доступа к обновлениям UpdraftPlus для данного сайта истекла. Вы больше не сможете получать обновления UpdraftPlus." + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "Скрыть из панели управления (на %s неделю(-ль))" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "Файл успешно восстановлен после двойного сжатия." + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "Не удалось восстановить файл после двойного сжатия." + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "Файл базы данных по всей видимости был сжат дважды - возможно сайт с которого Вы его скачали имеет проблемы с настройками сервера." + +#: admin.php:1528 +msgid "Constants" +msgstr "Постоянные" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "Не удалось открыть файл базы данных для чтения:" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "Не найдены таблицы базы данных" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "пожалуйста дождитесь перенесённой попытки" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "Обратите внимание что данные предупреждения носят рекомендательный характер - резервное копирование не прекращается из за них. В данном случае они отображаются только для того чтобы предоставить Вам полезную информацию, они также могут указать в чем проблема если резервное копирование завершится неудачно." + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "Запросов к базе данных обработано: %d время %.2f секунд " + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "Поиск и замена искомой строки: %d" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "Пропуск данной таблицы: данные содержащиеся в этой таблице (%s) не должны быть найдены/заменены" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "Учётная запись заполнена: остаток свободного места для вашей учётной записи %s составляет %d байт, осталось загрузить %d байт (общий размер файла: %d байт)" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "Произошли ошибки:" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "Следуйте по данной ссылке для того чтобы скачать файл журнала (log-файл) для данного восстановления (необходим для запросов в техподдержку)." + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "Также прочтите данный FAQ." + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "Если Вы выберете вариант без облачного хранилища, все ваши резервные копии будут храниться только на сервере. Это не рекомендуется делать (по крайней мере если Вы не собираетесь вручную копировать их на свой компьютер), так как при проблемах с сервером Вы потеряете не только сайт но и все резервные копии." + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "Получение (если необходимо) и подготовка файлов резервной копии..." + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "Конфигурация PHP на вашем сервере позволяет скрипту PHP работать только в течении %s секунд и это ограничение нельзя отключить или изменить. Если Вам необходимо импортировать большой объём информации, и если процесс восстановления будет прерван по таймауту, Вам придется связаться с Вашим хостинг провайдером для того чтобы узнать есть ли возможность увеличить данный лимит (или попытаться провести процесс восстановления частями). " + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "Имеются не удалённые с момента прошлого восстановления папки (пожалуйста воспользуйтесь кнопкой \"Удалить старые папки\" для того чтобы удалить их прежде чем пытаться снова): %s" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "Временное ограничение для работы плагинов WordPress очень мало (%s секунд) - Вы должны увеличить лимит для того чтобы избежать ошибок резервного копирования по причине таймаутов (свяжитесь с Вашим хостинг провайдером для получения помощи - Вам необходимо именить настройку PHP max_execution_time; рекомендуемое значение %s секунд или больше)" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "Замена в таблице блога/сайта: с: %s по: %s" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "%s: Пропуск файла кэша (ещё не создан)" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "Отключен плагин: %s: активируйте его заново вручную когда будете готовы." + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "Соединение %s закрыто сервером; если Вы ввели данные сервера корректно, то это может быть вызвано файерволом, блокирующим соединение - Вам нужно связаться с Вашим хостинг-провайдером." + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "Текущая тема оформления не найдена; для того чтобы не допустить проблем с загрузкой сайта по этой причине, ваша тема оформления была переключена на стандартную тему" + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "Восстановление не удалось..." + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "Сообщения:" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "Найдена строка базы данных SQL которая превышает максимальный размер пакета и не может быть разделена на фрагменты; она не будет обработана, но будет сброшена: %s" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "Директория не существует" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "Новый E-mail текущего Пользователя" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "Новое Имя пользователя текущего Пользователя" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "Ключ API Администратора" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "Имя пользователя Администратора" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "Американский (US) или Английский (UK) аккаунт Rackspace" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "Введите ваше имя пользователя администратора Rackspace и ключ API (для того чтобы Rackspace могли авторизовать ваши права на создание новых пользователей), введите новое (уникальное) имя пользователя и адрес e-mail для нового пользователя, а также имя контейнера." + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "Создать нового пользователя API и контейнер" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "Ключ API: %s" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "Пароль: %s" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "Имя пользователя: %s" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "Операция CloudFiles не удалась (%s)" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "Конфликт: данный пользователь или адрес e-mail уже существует" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "Вам необходимо ввести правильный адрес e-mail" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "Вам необходимо ввести контейнер" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "Вам необходимо ввести новое имя пользователя" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "Вам необходимо ввести ключ API Администратора" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "Вам необходимо ввести Имя пользователя Администратора" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "Создать нового пользователя API с доступом только к данному контейнера (вместо всего аккаунта)" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "Добавляет расширенные возможности для пользователей Rackspace Cloud Files" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "Rackspace Cloud Files, расширенный" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "Контейнер CloudFiles" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "Ключ API CloudFiles" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "Для того чтобы создать нового под-пользователя API Rackspace и ключ API для него который бы имел доступ только к данному контейнеру Rackspace, используйте данное дополнение." + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "Имя пользователя CloudFiles" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "Лондон (LON)" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "Гонконг (HKG)" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "Северная Вирджиния (IAD)" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "Чикаго (ORD)" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "Сидней (SYD)" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "Даллас (DFW) (по умолчанию)" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "Регион хранилища CloudFiles" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "Аккаунты созданные на rackspacecloud.com это аккаунты US (американские); аккаунты созданные на rackspace.co.uk расположены в UK (Великобритании); " + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "Аккаунт Rackspace расположенный в US (США) или UK (Великобритания)" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "Аккаунты созданные на rackspacecloud.com это аккаунты US (американские); аккаунты созданные на rackspace.co.uk это аккаунты UK (английские); " + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "Авторизация не удалась (Проверьте ваши учётные данные)" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "При попытке соединения с UpdraftPlus.com произошла неизвестная ошибка" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "Создать" + +#: admin.php:556 +msgid "Trying..." +msgstr "Попытка..." + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "Новый пароль пользователя консоли RackSpace (больше не будет показан):" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "(когда расшифрован)" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "Данные ошибки:" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "Резервная копия не существует в директории резервного копирования" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "Ваша конфигурация WordPress имеет устаревшие директории оставшиеся от её состояния предшествовавшего моменту когда вы произвели восстановление/перенос (техническая информация: эти директории помечены приставкой -old). Вы должны нажать эту клавишу для их удаления, после того как Вы убедитесь что восстановление прошло успешно." + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "Разбивать на фрагменты для того чтобы избежать превышения максимального размера пакета" + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "Заданный Вами пользователь базы данных не имеет привилегий для сброса таблиц. Мы попытаемся произвести восстановление путём простой очистки таблиц; это должно работать при условии что Вы производите восстановление резервной копии от WordPress с аналогичной структорой базы данных (%s)" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "Новый префикс таблицы: %s" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "Права на чтение/запись файлов не позволяют старым данным быть перенесёнными и нераспределёнными; вместо этого они будут удалены." + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "%s: Данная директория уже существует и будет заменена" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "Не удаётся расположить файлы. Проверьте права на чтение/запись." + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "Не удалось разместить новые файлы. Проверьте вашу папку wp-content/upgrade." + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "Не удалось удалить устаревшие данные." + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "Удаление устаревших данных..." + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "Добавить другой адрес..." + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "Адреса e-mail для отправки отчёта об окончании резервного копирования." + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "Отчёты Email" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "%s контрольная сумма: %s" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "файлы: %s" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "Используйте секцию \"Отчёты\" для настройки e-mail адресов для использования." + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr "(с предупреждениями (%s))" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr "(с ошибками (%s))" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "Отладочная информация" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "Загружено в:" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "Потрачено времени:" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "Предупреждения" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "Ошибки" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "Ошибки / предупреждения:" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "Содержит:" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "Резервное копирование начато:" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "Отчёт Резервного копирования" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "%d час(-ов) %d минут(-а) %d секунд(-а)" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "%d ошибок, %d предупреждений" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "%s авторизация" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "%s ошибка: %s" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "%s лого" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "%s не передал ожидаемого ответа - смотрите лог-файл чтобы узнать подробнее" + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "Необходимый модуль PHP %s не установлен - обратитесь к Вашему хостинг-провайдеру с просьбой активировать данный модуль" + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "Для дополнительных возможностей настройки используйте дополнение \"%s\"." + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "Будет использован e-mail адрес Администратора Вашего сайта (%s)." + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "Соединиться" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "Для расширенных отчётов используйте дополнение «Reporting»." + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "(версия: %s)" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "Имейте ввиду что почтовые сервера имеют ограничения на размер пересылаемых файлов; обычно около %s Мб; резервные копии превышающие этот размер скорее всего не дойдут." + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "Когда активирован метод хранения на e-mail, также отправлять резервную копию полностью" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "Последний статус:" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "Резервная копия содержит:" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "Резервная копия: %s" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "К данному письму был прикреплён лог-файл." + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "Неизвестная/непредвиденная ошибка - пожалуйста подайте запрос в техподдержку" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "Только база данных (резервное копирование файлов не было включено в это конкретное расписание)" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "База данных (резервное копирование файлов не завершено)" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "Только файлы (резервное копирование базы данных не было включено в это конкретное расписание)" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "Файлы (резервное копирование базы данных не завершено)" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "Файлы и база данных" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "(Это будет применено для всех плагинов резервного копирования WordPress, кроме случаев когда они конкретно были написаны для совместимости с мультсайтовой конфигурацией)." + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "Без апгрейда, UpdraftPlus позволяет любому администратору блога, который может менять настройки плагинов, создавать резервные копии (и как следствие иметь доступ к данным, включая пароли) и восстанавливать (включая индивидуальные изменения, напр. смена паролей),в пределах всей сети." + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "Мультисайтовая конфигурация WordPress с дополнительными функциями поддерживается UpdraftPlus Premium, или дополнением Multisite." + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "Это мультисайтовая конфигурация WordPress (или сетевая)." + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "Предупреждение UpdraftPlus:" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "(или воспользуйтесь формой на этой странице если вы уже совершили покупку ранее)" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "пожалуйста проследуйте по этой ссылке чтобы обновить плагин для того чтобы активировать его" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "пожалуйста проследуйте по этой ссылке чтобы обновить плагин для того чтобы получить это" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "последняя" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "Ваша версия: %s" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "Вы это получили" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "Поддержка UpdraftPlus" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "Доступно обновления для UpdraftPlus и всех ваших дополнений - пожалуйста проследуйте по этой ссылке для того чтобы получить его." + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "Дополнения UpdraftPlus" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "Доступно обновление для UpdraftPlus - пожалуйста проследуйте по ссылке для того чтобы его получить." + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "Ответ от UpdraftPlus.Com получен, но мы не смогли его интерпретировать" + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "Ваши адрес e-mail и пароль не распознаны UpdraftPlus.Com" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "UpdraftPlus.Com отправил ответ, который мы не смогли интерпретировать (данные: %s)" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "UpdraftPlus.Com ответил, но мы не смогли его интерпретировать ответ" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "Нам не удалось соединиться с UpdraftPlus.Com" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "Отчёт" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "Настройки (необработанные, для отладки)" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "Отправлять отчёт только в случае если есть какие то предупреждения/ошибки" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "URL данных:" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "Обратите внимание на дополнение «More files» в нашем магазине." + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "В вашем хостинг-аккаунте очени мало свободного места - осталось всего лишь %s Мб" + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "Лимит оперативной памяти (RAM) на выполнение PHP скриптов слишком мал (%s Мб) - Вам необходимо увеличить его для того чтобы избежать проблем из за недостатка памяти (обратитесь в техподдержку хостинг-провайдера если Вам необходима помощь)" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "Управление дополнениями" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "Купить" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "Получить из магазина UpdraftPlus.com" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "активируйте на этом сайте" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "Ваша покупка не активирована" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "Прикреплён к этому сайту" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "Доступно для этого сайта (через покупку всех дополнительных модулей)" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "(возможно пре-релиз или отменённый релиз)" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "Сюда" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "Нужна поддержка?" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "Произошла ошибка при попытке получить ваши дополнительные модули." + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "Получен неизвестный ответ. Вот он:" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "Запрос не выполнен - данные вашей учётной записи не верны" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "Пожалуйста подождите пока мы проведем запрос.." + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "При попытке установить соединение с аккаунтом UpdraftPlus.Com произошли ошибки:" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "В данный момент соединение с учётной записью UpdraftPlus.com НЕ установлено." + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "Если вы приобрели новые дополнительные модули проследуйте по этой ссылке для того чтобы обновить соединение" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "В данный момент соединение с учётной записью UpdraftPlus.com установлено." + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "Хотите узнать насчёт безопасности вашего пароля UpdraftPlus.com? Вы можете прочесть об этом здесь." + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "Забыли ваши данные?" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "У вас ещё нет учётной записи (бесплатно)? Зарегистрируйте сейчас!" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "Соединиться с вашей учётной записью UpdraftPlus.com" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "На вашем сервере слишком старая версия PHP (" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "Не похоже на то чтобы вы имели устаревшую версию плагина Updraft - возможно вы их перепутали?" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "Перейдите сюда для начала установки." + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "UpdraftPlus ещё не установлен." + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "Перейдите сюда для активации." + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "UpdraftPlus ещё не активирован." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "Перейдите сюда для того чтобы соединиться." + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "Вы еще не соединены с вашей учётной записью UpdraftPlus.com для того чтобы иметь возможность активировать список приобретённых вами дополнительных модулей. " + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "Без этого (него) шифрование будет намного медленнее." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "На вашем сервере отсутствует модуль %s." + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "" +"(Похоже что вы уже авторизованы. Несмотря на это вы можете\n" +"авторизоваться заново, если у вас возникли какие-то проблемы)." + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "Разместить файлы резервных копий здесь" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "управляйте WordPress через командную строку - потрясающий инструмент для экономии времени" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "Взгляните на WordShell" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "Вам нужно больше функций, или платная, гарантированная техподдержка? Посетите UpdraftPlus.Com" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "Ошибка сервера (попытайтесь ещё или проверьте log-файл вашего сервера)" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "Начата операция восстановления. Не нажимайте \"остановить\" и не закрывайте окно браузера пока не появится уведомление о том что восстановление завершено." + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "Если вы исключаете из резервной копии и базу данных и файлы - вы исключаете всё что можно скопировать!" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "Корень сайта:" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "Настройки удалённого хранилища" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "(логи могут быть найдены на странице настроек UpdraftPlus)..." + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "Запомнить мой выбор на следующий раз (у вас будет возможность его поменять)" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "Загрузка не удалась" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "Вы можете сохранять резервные копии более чем в одно место при наличии дополнения." + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "Важно: строка состояния ниже показывает этапы, НЕ время. Не останавливайте резервное копирование из за того что индикация остаётся на месте некоторое время - это нормально." + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "(%s%%, файл номер %s из %s)" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "Узнать больше о том как это работает..." + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "Ошибка: Мы успешно вошли, но не можем создать файл в этом расположении." + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "Ошибка: Мы успешно вошли и перешли в указанную папку, но не можем создать файл." + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "Использовать SCP вместо SFTP" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "SCP/SFTP имя пользователя" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "SCP/SFTP настройки хоста" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "Попытка отправить резервную копию по email не удалась (возможно файл резервной копии слишком большой)" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "Резервная копия состоит из: %s." + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "Результат проверки настройки %s:" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "(Не завершено)" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "Если вы видите здесь больше резервных копий чем ожидали - возможно это произошло потому что удаление старых резервных копий не производится пока новые резервные копии не будут завершены." + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "Не размещайте внутри директории загрузок или плагинов, потому что это может вызвать повторения (резервные копии резервных копий резервных копий...)." + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "Это место в которое UpdraftPlus будет записывать zip файлы которые он создает первоначально. Эта директория должна быть доступна для записи на вашем сервере. Она относится к директории с вашим контентом (которая по умолчанию называется \"wp-content\")." + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "ID задания: %s" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "последняя активность: %ss ранее" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "следующее возобновление: %d (через %ss)" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "Неизвестное(-ая)" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "Резервное копирование завершено." + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "Подождать запланированное время перед повторной попыткой по причине ошибок." + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "Сокращение устаревших комплектов резервных копий" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "Загрузка файлов в удалённое хранилище" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "Зашифрованная база данных" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "Шифрование базы данных" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "Резервная копия базы данных создана" + +#: admin.php:3359 +msgid "table: %s" +msgstr "таблица: %s" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "Создание резервной копии базы данных" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "Создание zip-архивов резервных копий файлов" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "Создание zip-архивов резервных копий" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "Резервное копирование началось" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "Резервное копирование в процессе:" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "" +"Планировщик отключен в вашем Wordpress через настройку DISABLE_WP_CRON. Резервное копирование не может быть начато (даже при нажатии "Создать РК Сейчас") до тех пор пока вы не настроите возможность вызывать планировщик вручную или не активируете его через вышеназванную настройку*.\n" +"*данная настройка расположена в файле wp-config.php который находится в директории в которую установлен Wordpress" + +#: restorer.php:646 +msgid "file" +msgstr "файл" + +#: restorer.php:639 +msgid "folder" +msgstr "директория" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "UpdraftPlus необходимо было создать файл(папку) %s в вашей директории для контента, но этого сделать не удалось - пожалуйста проверьте права на чтение/запись и разрешите доступ (%s)" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "Резервное копирование не завершено; повторная попытка запланирована" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "Ваша интернет страница посещается нечасто и UpdraftPlus не получает необходимые ресурсы; пожалуйста прочитайте информацию на этой странице:" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "" +"Авторизация %s не может быть продолжена, так как что то на вашем сайте её прерывает. Попробуйте отключить другие плагины и переключиться на стандартную тему. (В особенности если вы ищете компонент который отправляет какие либо данные (чаще всего предупреждения PHP/ошибки) перед началом страницы (в коде). Отключение различных отладочных режимов также может помочь.*\n" +"\n" +"*мы рекомендуем отключить всё что только можно и использовать стандартную тему, после чего активировать плагины по одному - таким образом вы сможете быстро найти конфликтующий плагин" + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "Ваш лимит памяти на выполнение PHP скриптов* (устанавливаемый вашим хостинг-провайдером) очень низкий. UpdraftPlus предпринял попытку его увеличения, но попытка оказалась неудачной. Этот плагин не может нормально работать при лимите памяти менее чем 64 МБ, особенно если вы загружаете очень большие файлы при резервном копировании (с другой стороны, многие сайты могут успешно функционировать при лимите в 32 МБ - ваш опыт может отличаться)." + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "Приступить к обновлению" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "Не отменяйте резервное копирование после нажатия Начать ниже - дождитесь пока оно будет завершено." + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "Автоматическое резервное копирование UpdraftPlus" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "Произошли следующие ошибки:" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "Создание резервной копии при помощи UpdraftPlus..." + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "Автоматическое резервное копирование" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "Создание резервной копии базы данных при помощи UpdraftPlus..." + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "У вас недостаточно прав для обновления данного сайта." + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "темы (шаблоны)" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "плагины" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "Автоматическое резервное копирование начинается..." + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "Создание %s и резервной копии базы данных при помощи UpdraftPlus..." + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Автоматическое резервное копирование (там где необходимо) плагинов, тем и базы данных WordPress при помощи UpdraftPlus перед обновлением" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "Если вы не уверены не стоит продолжать; В противном случае вы можете повредить данную конфигурацию Wordpress." + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "Этот файл не является действительной резервной копией ядра Wordpress - файл %s не может быть найден." + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "Не удалось открыть zip-архив (%s) - предварительная проверка целостности не возможна." + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "Не удалось прочесть zip-архив (%s) - предварительная проверка целостности не возможна." + +#: admin.php:2310 +msgid "More plugins" +msgstr "Ещё плагины" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "Поддержка" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "UpdraftPlus не удалось найти префикс таблиц во время сканирования резервной копии базы данных." + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "В данный резервной копии базы данных отсутствуют таблицы ядра Wordpress: %s" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "" +"Вы импортируете данные из более новой версии Wordpress (%s) в более старую (%s). Нет никаких гарантий что Wordpress сможет с ними правильно работать.*\n" +"*есть возможность что всё будет работать но тем не менее мы не рекомендуем так поступать, обновить Wordpress - предпочтительный вариант в такой ситуации." + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "Данная база данных имеет слишком маленький размер чтобы являться действительной базой данных WordPress (размер: %s Кб)." + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "Обновить тему (шаблон)" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "Обновить плагин" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "Будьте в безопасность с функцией автоматического резервного копирования" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "Скрыть (на %s недели)" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "Путь для загрузки (%s) не существует - сброс (%s)" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "Если этот текст не исчезает после полной загрузки страницы - значит на данном сайте имеет место проблема JavaScript или jQuery." + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "Файл успешно загружен." + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "Неизвестный статус ответа сервера:" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "Неизвестный ответ сервера:" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "Данный ключ шифрования будет использован:" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "Проследуйте по этой ссылке для того чтобы произвести шифрование и скачать базу данных на свой компьютер." + +#: admin.php:584 +msgid "Upload error" +msgstr "Ошибка загрузки" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "Данный файл не является действительным шифрованным архивом резервной копии базы данных UpdraftPlus (это должен быть шифрованный файл формата .gz, имеющий название вида: backup_(time)_(site name)_(code)_db.crypt.gz)." + +#: admin.php:582 +msgid "Upload error:" +msgstr "Ошибка загрузки:" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "(убедитесь что вы пытались загрузить zip-архив ранее созданный при помощи UpdraftPlus)" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "и тогда, если вы пожелаете," + +#: admin.php:572 +msgid "Download to your computer" +msgstr "Скачать на компьютер" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "Удалить с сервера" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "Примеры хранилищ с поддержкой S3:" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "После распаковки ни один из архивов не будет удалён по причине того что отправка во внешнее (облачное хранилище) не осуществлялась для данной резервной копии" + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "В данном наборе из нескольких архивов отсутствует один или несколько архивов." + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "(%d архив(-ов) в наборе)." + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "Разделять архив через каждые:" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "Ошибка: сервер выдаёт ответ (JSON) который мы не можем понять (интерпретировать)." + +#: admin.php:563 +msgid "Warnings:" +msgstr "Предупреждения:" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "Ошибка: сервер выдаёт пустой ответ." + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "Похоже, что файл создан с помощью UpdraftPlus, но этот экземпляр плагина не знает о типе данного объекта: %s. Возможно вам надо установить дополнение?" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "Файлы архива резервной копии обработаны, но произошло несколько ошибок. Вам нужно отменить процедуру восстановления и исправить все ошибки прежде чем продолжать." + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "Файлы архива резервной копии были обработаны, но имеется несколько предупреждений. Если всё в порядке, нажмите Восстановить снова, чтобы продолжить. В противном случае отмените процедуру восстановления и исправьте все проблемы прежде чем приступать к восстановлению." + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "Файлы резервной копии из архива были успешно обработаны. Теперь нажмите \"Восстановить\" еще раз, чтобы продолжить." + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "В наборе резервного копирования состоящем из нескольких архивов нехватает следующих архивов: %s" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "Файл (%s) найден, но он имеет размер (%s) отличный от ожидаемого (%s) - возможно файл повреждён." + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "Файл найден, но имеет нулевой размер (вам нужно загрузить его повторно): %s" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "Файл не найден (вам необходимо его загрузить): %s" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "Такого набора резервного копирования не существует" + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "Архив резервной копии для этого файла не может быть найден. Используемое удалённое хранилище (%s) не позволяет нам получить файлы. Для того чтобы выполнить восстановление средствами UpdraftPlus, вам необходимо получить копию данного файла и поместить её внутри рабочей директории UpdraftPlus." + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "Невозможно переместить директорию (проверьте права на чтение/запись файлов и максимальный допустимый объём выделенного дискового пространства): %s" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "Невозможно переместить файл (проверьте права на чтение/запись файлов и максимальный допустимый объём выделенного дискового пространства): %s" + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "Перемещение распакованной резервной копии на место..." + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "Невозможно открыть zip-архив (%s) - %s" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "Путь к корневой директории WordPress: %s" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "%s конечная точка" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "... и многое другое!" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "S3 (Совместимый)" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "Файл не представлен локально - необходимо запросить его из удалённого хранилища" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "Поиск архива %s: Имя файла: %s" + +#: admin.php:4836 +msgid "Final checks" +msgstr "Финальные проверки" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "Выберите чтобы удалить все лишние файлы с вашего сервера после того как резервное копирование будет завершено (если вы отключите эту опцию то файлы, отправляемы в удалённое хранилище также будут сохранены локально, и любые файлы сохранённые локально не будут иметь лимитов на сохранение)." + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "Добавьте сюда зашифрованные файлы резервной копии базы данных (файлы формата db.gz.crypt) для того чтобы загрузить их для дешифровки" + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "Путь к вашей директории wp-content: %s" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "История необработанных резервных копий" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "Показать необработанные резервные копии и список файлов" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "Обработка файлов - пожалуйста подождите..." + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "Пожалуйста воспользуйтесь данным FAQ для того чтобы получить информацию о том что делать в этом случае." + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "Ваша конфигурация Wordpress содержит ошибки связанные с выделением дополнительного свободного места. Это может повредить файлы резервных копий." + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "Невозможно открыть файл базы данных." + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "Невозможно записать зашифрованную базу данных в файловую систему." + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "Известные резервные копии (необработанные)" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "Невозможно пронумеровать файлы в данной директории." + +#: restorer.php:939 +msgid "Files found:" +msgstr "Найденные файлы:" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "Используется директория из резервной копии: %s" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "Запрошенная система обработки таблиц (%s) не найдена - переключаемся на MyISAM." + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "Похоже что вы пытаетесь осуществить перенос (резервная копия другого сайта с иным адресом/URL), но вы не выбрали опцию поиск-и-замена в базе данных.Обычно это ошибка." + +#: admin.php:4908 +msgid "file is size:" +msgstr "размер файла:" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "Перейдите сюда чтобы узнать больше." + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "Некоторые файлы всё ещё загружаются или находятся в обработке - пожалуйста подождите." + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "Данная резервная копия от другого сайта - это перенос а не восстановление. Для того чтобы выполнить данную операцию вам нужно дополнение Migrator." + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "Используется часовой пояс, установленный в настройках WordPress, Настройки->Основные." + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "Введите в формате ЧЧ:ММ (напр. 14:22)." + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "%s ошибка закачки" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "%s ошибка авторизации" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "Похоже вы не авторизованы в %s" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "Ошибка доступа к %s во время удаления (смотрите log-файл чтобы узнать больше)" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "Похоже что вы не авторизованы в %s (в то время как происходит удаление)" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "Ошибка Dropbox: %s (смотрите log-файл чтобы узнать больше)" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "Ошибка - невозможно скачать файл с %s" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "Ошибка - такого файла не существует по адресу %s" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "%s Ошибка" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "%s ошибка - невозможно закачать файл" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "%s ошибка - не удалось собрать фрагменты" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "%s авторизация не удалась" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "Ошибка: %s" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "Директория для резервного копирования существует, но НЕ доступна для записи." + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "Указанная директория для резервного копирования НЕ существует." + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "Предупреждение: %s" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "Последнее плановое резервное копирование:" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "Найден очень большой файл: %s (размер: %s МБ)" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "%s: нечитаемый файл - не возможно сохранить в резервной копии" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "В таблице %s очень большое количество строк (%s) - надеемся что ваш хостинг провайдер выделяет для вас достаточно ресурсов для того чтобы сохранить её дамп в резервной копии" + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "Во время закрытия последнего файла базы данных произошла ошибка" + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "Предупреждения:" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "Резервное копирование произведено (с предупреждениями)" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "Очень мало свободного места на диске - осталось всего %s МБ" + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "Новый сайт:" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "ОШИБКА: URL сайта уже занят." + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "Перенесённый сайт (из UpdraftPlus)" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "Укажите детали где расположить данный новый сайт в пределах вашей мультисайтовой установки:" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "Информация необходимая для продолжения:" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "Удалённая активация шаблона:" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "Обработанный плагин:" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "Проверьте ваши права на чтение/запись: не получается создать и открыть директорию:" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "Некоторые хостинг провайдеры указывают зашифрованный FTP как доступный, но когда вы пытаетесь его использовать устанавливают большой таймаут. Если вы заметили что такое происходит - зайдите в \"Экспертные настройки\" (ниже) и отключите там SSL." + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "В настройках PHP вашего хостинг провайдера не активирован необходимый модуль (%s). Пожалуйста, обратитесь в службу технической поддержки вашего провайдера и попросите их активировать данный модуль." + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "Пожалуйста проверьте ваши реквизиты доступа." + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "Ошибка переданная %s:" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "Пожалуйста предоставьте запрошенные данные и затем продолжайте." + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "Не удаётся сбросить таблицы, вместо сброса будет проведено удаление (%s)" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "Не удалось создать новые таблицы, поэтому данная команда (%s) будет пропущена" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "Описание сайта:" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "Данный пользователь базы данных не имеет прав для создания таблиц. Мы попытаемся произвести восстановление путём очистки таблиц; Это должно работать при условии что: а). Вы производите восстановление из версии WordPress с такой же структурой базы данных. б). Вы импортируете базу данных которая не содержит таблиц уже имеющихся на сайте на который производится импорт." + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "Внимание:" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "Вы используете WordPress в многосайтовом варианте - но ваша резервная копия не является таковой." + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "Пропуск восстановления ядра WordPress во время импорта одиночного сайта в многосайтовую конфигурацию. Если у Вас есть какие либо важные данные в директории WordPress то Вам придётся добавить их вручную из zip файла." + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "Ваша конфигурация PHP на сервере хостинг провайдера не включает в себя модуль (%s) необходимый (для %s). " + +#: admin.php:596 +msgid "Close" +msgstr "Закрыть" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "Неожиданный ответ:" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "Для того чтобы произвести отправку на несколько адресов, разделите их при помощи запятых." + +#: admin.php:576 +msgid "PHP information" +msgstr "Информация PHP" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "найден zip архив:" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "показать информацию PHP (phpinfo)" + +#: admin.php:2627 +msgid "Get it here." +msgstr "Вы можете приобрести его здесь." + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "Тогда попробуйте наш плагин \"Migrator\". После того как Вы воспользуетесь им один раз, вы сэкономите стоимость его покупки за счёт времени, которое Вы сэкономите при помощи него вместо того чтобы копировать сайт вручную." + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "Вы хотите перенести сайт или создать его копию?" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "Прочтите эту статью для того чтобы увидеть пошаговое руководство как это делать." + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "Перенести сайт" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "Удаление... пожалуйста, подождите, пока происходит связь с удалённым хранилищем для выполнения вашего запроса." + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "Также удалить из удалённого хранилища" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "Последние новосити UpdraftPlus.com:" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "Скопировать/перенести" + +#: admin.php:2304 +msgid "Premium" +msgstr "Премиум" + +#: admin.php:2305 +msgid "News" +msgstr "Новости" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "Не найден набор резервной копии" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "%s - не удалось создать резервную копию этого объекта; соответствующая директория не найдена (%s)" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "Ссылка на RSS" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "Ссылка на Блог" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "Подпишитесь на блог UpdraftPlus чтобы быть в курсе последних новостей и предложений" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "Проверка настроек %s..." + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "Или вы можете вручную поместить их в вашу директорию UpdraftPlus (обычно это wp-content/updraft), например при помощи FTP, после чего нажать на ссылку \"пересканировать\" ниже." + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "Режим отладки UpdraftPlus включён. В этом режиме вы можете видеть на данной странице отладочные сообщения не только от UpdraftPlus, но и от любого другого установленного плагина. Пожалуйста убедитесь в том что отладочное сообщение которое Вы видите относится к UpdraftPlus прежде чем делать запрос в техподдержку." + +#: admin.php:880 +msgid "Notice" +msgstr "Обратите внимание" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "Произошли следующие ошибки:" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "Повторное сканирование (поиск наборов резервных копий которые вы загрузили вручную во внутреннее хранилище резервных копий)..." + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "Начат поиск данной записи" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "Хранить в" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "\"%s\" не имеет первичного ключа, необходимы исправления в строке %s." + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "строки: %d" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "Времени затрачено (сек):" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "Ошибки:" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "Запущенные команды обновления SQL:" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "Изменения произведены:" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "Строки проверены:" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "Таблицы проверены:" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "Невозможно получить список таблиц" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "Поиск и замена в базе данных: заменить %s в резервной копии на %s" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "Внимание: URL адрес базы данных сайта (%s) отличается от ожидаемого (%s)" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "Нет необходимости что то делать: URL адрес сайта уже: %s" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "Ошибка: непредвиденный пустой параметр (%s, %s)" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "Данная опция не была выбрана." + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "База данных: найти и заменить URL сайта" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "Ошибка: результат операции %s неизвестен." + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "Неудалось: не удалось начать операцию %s." + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "(Узнать больше)" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "Найти и заменить расположение сайта в базе данных (перенос)" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "Все ссылки сайта в базе данных будут изменены в соответствии с Вашим текущим URL сайта, который имеет вид: %s" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "Загрузки блога" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "Необходимые плагины" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "У вас нет прав для доступа к данной странице" + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "У вас недостаточно прав для доступа к данной странице" + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "Многосайтовая конфигурация" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "начиная со следующего раза" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "Ошибка: значаение поля \"Порт\" должно быть целым числом." + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "пароль" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "имя пользователя" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "хост" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "В какую директорию заходить после авторизации - обычно указывается относительно Вашей домашней директории." + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "Путь к директории" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "Пароль" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "Порт" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "Хост" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "Произошло %s ошибок: Неудалось скачать" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "Проверьте права на чтение/запись: Невозможно создать и открыть:" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "%s не найдено" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "По умолчанию используется явное (Explicit SSL) шифрование. Для принудительного включения неявного (Implicit SSL) шифрования добавьте :990 к адресу Вашего FTP сервера ниже." + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "Защищенный FTP доступен и будет автоматически использован первым при попытке соединения (если эта попытка не удастся, произойдет переключение в незащищенный режим), до тех пор пока Вы специально его не отключите в настройках в режиме эксперта. Кнопка 'Тестировать FTP' поможет Вам определить, какой режим соединения используется." + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "Резервные копии директорий %s не созданы - файлы для резервного копирования не обнаружены" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "Будьте осторожны при вводе - если Вы введёте / - будет предпринята попытка создать zip-файл содержащий весь ваш сервер." + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "Если используете - вводите здесь абсолютный путь к директории (независимый от Вашей инсталляции WordPress)." + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "Если Вы не уверены для чего нужна эта опция -скорее всего она Вам не требуется и Вам стоит её отключить." + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "Введите директорию:" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "Больше файлов" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "Ядро WordPress (включая все ваши дополнительные файлы в корневой директории WordPress)" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "Вышеперечисленные файлы - это все, из чего состоит Ваша конфигурация WordPress." + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "Перезаписать wp-config.php" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "Ядро WordPress" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "Ошибка: Неудалось поместить файл в данную директорию - пожалуйста проверьте ваши учётные данные." + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "Неудалось" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "Адрес URl WebDAV" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "Ошибка записи в локальный файл: Неудалось загрузить" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "Ошибка при открытии удалённого файла: Неудалось загрузить" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "Часть %s: произошла ошибка %s" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "Настройки %s не найдены" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "Неудача: попытка авторизации успешна, но права на создание файлов в данной директории получить не удалось" + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "Успех: попытка авторизации успешна, права на создание файлов в данной директории получены (тип входа:" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "Неудача: попытка аутентифицироваться с помощью этих учётных данных окончилась неудачно." + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "Неудача: Информация о сервере не предоставлена." + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "Должны быть заранее созданы" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "Если Вам нужно шифрование данных (например, Вы храните важную деловую информацию), можете получить соответствующее дополнение к плагину." + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "В бесплатной версии UpdraftPlus можно использовать только незашифрованное FTP-соединение." + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "Имя вашей учётной записи %s: %s" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "хотя часть полученных данных не выглядит в соответствии с ожиданием - Вы можете быть другого мнения" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "вы авторизовали вашу учётную запись %s" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "существует специальное дополнение для этого." + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "Если Вы выполняли резервное копирование нескольких сайтов в один и тот же аккаунт Dropbox и хотите организовать подпапки, " + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "Резервные копии сохранены в" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "Хотите использовать подпапки?" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "ошибка: не удалось загрузить файл %s (для более подробной информации смотрите log-файл)" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "Похоже что Вы не авторизованы в Dropbox." + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "Данные передаваемые %s не были зашифрованы." + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "Данные передаваемые %s были зашифрованы." + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "Мы получили доступ к контейнеру и смогли создать в нём файл." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "Мы успешно создали контейнер но не смогли создать в нём файл." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "Неудачно" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "Ошибка: не удалось получить доступ к существующему или создать новый контейнер. Проверьте учетные данные, и если они верны, попытайтесь указать другое имя контейнера (возможно, имя %s уже используется другим пользователем)" + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "Область" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "Ошибка: Данные контейнера не указаны." + +#: methods/s3.php:961 +msgid "API secret" +msgstr "Секретный ключ API" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "Введите только название контейнера или название и путь. Например: мойКонтейнер, мойКонтейнер/мойПуть" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "%s расположение" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "%s секретный ключ" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "%s код доступа" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "Если Вы видите ошибку SSL-сертификата, перейдите сюда для получения более подробной информации" + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "Получите секретный ключ и ключ доступа в Вашей %s консоли, затем выберите (абсолютно уникальное - для всех %s пользователей) название контейнера (латинские буквы и цифры) (и, необязательно, путь) чтобы использовать этот контейнер для хранения резервных копий. Если контейнер с указанным именем не существует, он будет создан." + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "Ошибка %s: Не удалось получить доступ к контейнеру %s. Проверьте Ваши учетные данные и права на чтение/запись." + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "Ошибка %s: Не удалось скачать %s. Проверьте Ваши учетные данные и права на чтение/запись." + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "Ошибка %s: %s (смотрите файл журнала для более подробной информации)" + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "%s загрузка %s: (смотрите файл журнала для более подробной информации)" + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "%s часть %s: загрузка не удалась" + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "%s ошибка: неожиданный конец файла %s" + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "загрузка %s: не удалось получить идентификатор для мультифайловой загрузки (смотрите файл журнала)" + +#: methods/email.php:69 +msgid "Note:" +msgstr "Примечание:" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "Резервная копия WordPress" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "Мы получили доступ к контейнеру и можем создавать в нем файлы." + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "Ошибка: мы получили доступ к контейнеру, но не можем создавать в нем файлы" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "Ошибка: нет информации о контейнере." + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "Имя пользователя" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "Ключ API" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "Ошибка нет информации о %s." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "Для работы модуля %s в плагине UpdraftPlus's необходимо %s. Пожалуйста, не обращайтесь в нашу службу поддержки в поисках альтернативы - ее не существует." + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "Контейнер файлов облачного хранилища" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "Ключ API облачного хранилища" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "Имя пользователя облачного хранилища" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "UK" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "US (по умолчанию)" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "US или UK облако" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "Вы также должны прочитать этот важный раздел FAQ." + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "Получите Ваш API - ключ из своей консоли в Rackspace Cloud (прочтите инструкции здесь), затем укажите желаемое имя контейнера для хранения файлов. Если контейнер с указанным именем не существует, он будет создан." + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "Проверить настройки %s" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "Неудалось скачать удалённый файл: Ошибка при скачивании (" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "Ошибка открытия локального файла: Не удалось скачать файл" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "Ошибка Cloud Files - не удалось загрузить файл" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "Ошибка %s: Неудалось закачать" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "Ошибка %s: Неудалось открыть локальный файл " + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "Ошибка Cloud Files - не удалось создать и получить доступ к контейнеру" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "Ошибка авторизации Cloud Files" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "После того, как Вы сохраните настройки (нажав «Сохранить настройки» ниже), вернитесь сюда и перейдите по этой ссылке, чтобы завершить вашу авторизацию в Google." + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "Авторизация в Google" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "Секретный ключ" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "Если Google покажет вам сообщение \"invalid_client\", значит вы ввели сюда неправильный ID клиента." + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "ID клиента" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "Вы должны указать в качестве URI для переадресации этот адрес (на вкладке \"Дополнительные настройки\")" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "Выберите «Web Application» (веб-приложение) при указании типа приложения." + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "Подробная инструкция со скриншотами. Приведенное ниже описание понятно большинству экспертов, но может быть непонятно начинающим пользователям." + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "%s - это отличный выбор, поскольку UpdraftPlus поддерживает загрузку файлов, разделенных на части - не важно, насколько велик Ваш сайт, UpdraftPlus способен загрузить такие файлы в кратчайшее время без ошибок связанных с таймаутами." + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "Учётная запись на авторизована." + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "Неудалось закачать в %s" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "Аккаунт заполнен: свободное место на Вашем аккаунте %s составляет %d байт, а файл который нужно загрузить имеет размер %d байт." + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "Не получен маркер доступа от Google. Вы должны авторизоваться или обновить авторизацию в Google Drive." + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "вы авторизовали вашу учётную запись %s." + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "Успех" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "Использование Вашей %s квоты: %s %% использовано, %s доступно" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "Авторизация неудалась" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "Маркер обновления от Google не был получен. Обычно это означает что Вы неправильно ввели ваш секретный ключ клиента, или то что Вы еще не переавторизовались (ниже) после того как изменили его. Перепроверьте его, затем перейдите по ссылки для того чтобы авторизоваться повторно. Если и после этого ничего не получится - используйте режим эксперта для того чтобы стереть все ваши настройки, затем создайте новый секретный ключ Google и новый ID клиента, после этого пробуйте снова." + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "следуйте по этой ссылке для того чтобы скачать" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "%s поддержка доступна в качестве дополнения" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "У Вас не установлено дополнение %s для UpdraftPlus - получите его тут: %s" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "Вам нужно повторно авторизоваться в %s, так как ваши существующие учётные данные не работают." + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "О'кей" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "Изменился префикс таблицы: изменение полей %s в соответствии с новым префиксом:" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "Завершено: строк обработано: %d за %.2f секунд" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "был запущен следующий запрос к базе данных:" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "будет восстановлено как:" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "Старый префикс таблиц:" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "Резервная копия:" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "Доступ к базе данных: Прямой доступ к MySQL невозможен, поэтому мы используем объекты wpdb (это несколько медленнее)" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "Неудалось открыть файл базы данных" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "Неудалось найти файл базы данных" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "Предупреждение: в конфигураци PHP на Вашем сервере активирован безопасный режим (safe_mode), что может привести к таймаутам. Если это произойдет, придется вручную загружать файл резервной копии в phpMyAdmin или использовать другой метод." + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "файл wp-config.php из резервной копии: восстановление (по запросу пользователя)" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "файл wp-config.php из резервной копии: будет восстановлен с именем wp-config-backup.php" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "Не удалось произвести запись расшифрованных данных в файловую систему сервера" + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "Неудалось создать временную директорию" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "Не удалось удалить рабочий каталог после восстановления." + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "Невозможно удалить старую директорию." + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "Очистка мусора..." + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "Восстановление базы данных (на больших сайтах это может занять много времени и привести к таймауту (если Ваш сервер сконфигурирован с ограничением ресурсов) - в этом случае придется воспользоватся альтернативным методом, например, прямым импортом файла резервной копии в phpMyAdmin)..." + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "База данных успешно расшифрована." + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "Расшифровка базы данных (может занять некоторое время)..." + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "Распаковка резервной копии" + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "Копирование данного логического объекта невозможна." + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "Файл резервной копии недоступен." + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "UpdraftPlus не может распаковать такой файл. Это необходимо сделать вручную." + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "Неудалось найти один из файлов для восстановления" + +#: admin.php:5009 +msgid "Error message" +msgstr "Сообщение об ошибке" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "Записи резервной копии не содержат информации о правильном размере данного файла." + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "Архив должен быть следующего размера:" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "При составлении запроса в службу поддержки, пожалуйста, включите эту информацию:" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "ОТМЕНА: Не удалось найти информацию для восстановления." + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "Восстановление из резервных копий: Идет процесс..." + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "В записях резервного копирования информация об этой резервной копии отсутствует - процесс восстановления прерван. Временная метка:" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "После нажатия этой кнопки Вам будет доступен выбор компонентов для восстановления" + +#: admin.php:4572 +msgid "Press here to download" +msgstr "Нажмите сюда для того чтобы скачать" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "Удалить данный набор резервного копирования" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "Хорошая новость: Соединение Вашего сайта с %s может быть зашифрованным. Если Вы в процессе соединения обнаружите какие-либо ошибки, перейдите в «режим Эксперта» для получения более детальной справки и соответствующих настроек." + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "Ваша конфигурация PHP/Curl не поддерживает https-протокол. Доступ к %s не может быть получен без такой поддержки. Обратитесь к своему хостинг-провайдеру для решения этого вопроса. %s требует Curl+https. Пожалуйста, не обращайтесь по этому поводу к разработчику плагина - другой альтернативы не существует." + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "Ваша конфигурация PHP/Curl не поддерживает https-протокол. Соединение с %s должено быть зашифровано. Обратитесь к своему хостинг-провайдеру для решения этого вопроса." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "В Вашей конфигурации PHP отсутствует расширение %s. Обратитесь к своему хостинг-провайдеру с просьбой об активации данного модуля." + +#: admin.php:4062 +msgid "Save Changes" +msgstr "Сохранить настройки" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "Выбор этой опции снижает безопасность, не позволяя UpdraftPlus использовать SSL для авторизации через безопасный протокол там, где это возможно. Обратите внимание, что некоторые провайдеры облачных систем хранения данных не позволяют обычную авторизацию (например, Dropbox), поэтому с такими провайдерами работа будет невозможна." + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "Полностью отключить SSL, где это возможно" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "Не все облачные хранилища требуют безопасную SSL-авторизацию." + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "Выбор этой опции снижает безопасность, не позволяя UpdraftPlus проверять подлинность сайтов, с которыми производится соединение (таких как Dropbox, GoogleDrive и т.п.). Это значит, что UpdraftPlus будет использовать SSL только для шифрования трафика, но не для авторизации." + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "Не проверять SSL сертификаты" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "По умолчанию UpdraftPlus использует свой собственный список SSL-сертификатов для проверки подлинности удаленных объектов (для того, чтобы, убедиться, что обмен данными идет с реальным Dropbox, Amazon S3 и т.д., а не злоумышленником). Мы постоянно обновляем этот список. Тем не менее, если вы обнаруживаете ошибки при проверке подлинности SSL-сертификатов, то выбор этой опции (которая указывает UpdraftPlus использовать список вашего веб-сервера вместо нашего) может помочь." + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "Использовать SSL сертификаты сервера" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "Если операция не удалась, проверьте права доступа к папке или замените ее на другую папку, которая уже имеет права на запись." + +#: admin.php:3697 +msgid "click here" +msgstr "нажмите сюда" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "или для того чтобы сбросить эту опцию" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "Указанная директория доступна для записи, отлично." + +#: admin.php:4009 +msgid "Backup directory" +msgstr "Директория резервного копирования" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "Удалить локальную резервную копию" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "нажмите сюда, чтобы увидеть дополнительные опции; они необходимы если у вас какие то проблемы или если вам любопытно, в противном случае не обращайте на них внимания." + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "Показать экспертные настройки" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "Экспертные настройки" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "Режим отладки" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "Расширенные / отладочные настройки" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "Запрос старта резервного копирования..." + +#: admin.php:591 +msgid "Cancel" +msgstr "Отмена" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "Пусто" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "Выберите ваше удалённое хранилище" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "Произвести дешифовку резервной копии базы данных вручную" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "Кодовая фраза шифрования базы данных" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "Электронная почта" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "В вышеперечисленных директориях отсутствуют только файлы самого ядра WordPress, самую свежую версию которого можно всегда скачать с сайта ru.wordpress.org." + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "Исключить следующее:" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "Любые другие папки в директории wp-content" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "Включить в резервную копию файлов" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "" +"например, если ваш сервер загружен днем и вы хотите запускать резервное\n" +"копирование ночью," + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "Чтобы указать точное время запуска резервного копирования," + +#: admin.php:3683 +msgid "Monthly" +msgstr "Ежемесячно" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "Раз в две недели" + +#: admin.php:3681 +msgid "Weekly" +msgstr "Еженедельно" + +#: admin.php:3680 +msgid "Daily" +msgstr "Ежедневно" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "Скачать лог-файл" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "Директория существует, но сервер не имеет прав доступа для того чтобы производить в неё запись." + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "Папка была создана, но пришлось выставить на нее права 777 (разрешение на запись для всех), чтобы иметь возможность создавать в ней файлы. Вам необходимо проконсультироваться с хостинг-провайдером, не повредит ли это безопасности сервера." + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "Запрос к файловой системе на создание директории неудался." + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "Удалить" + +#: admin.php:3418 +msgid "show log" +msgstr "показать лог" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "Это удалит все ваши настройки UpdraftPlus - вы уверены что хотите это сделать?" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "количество" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "Примечание: этот подсчет производится без учета изменений после последнего сохранения параметров." + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "Общий размер файлов на диске (без сжатия):" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "Нет" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "Да" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "Версия %s:" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "Текущее использование памяти" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "Пиковое использование памяти" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "Сервер:" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "Пожалуйста, ознакомьтесь с UpdraftPlus Premium, или с расширением плагина Multisite." + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "Вам нужна поддержка многосайтовой конфигурации WordPress?" + +#: admin.php:2654 +msgid "Multisite" +msgstr "Multisite" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "Выполнить резервное копирование единоразово" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "Перед восстановлением прочтите эту статью, она очень полезна и содержит много удобных приёмов." + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "Вы можете выполнить поиск и замену в базе данных всех опций, привязанных к URL сайта (для его перемещения на новый адрес) с помощью расширения «Migrator» - перейдите по этой ссылке, чтобы узнать больше." + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "%s опции восстановления:" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "Вам придётся произвести восстановление вручную." + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "Следующие объекты не могут быть восстановлены автоматически: \"%s\"." + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "В настройках Вашего PHP активирован безопасный режим (safe_mode)." + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "Выбрать компоненты для восстановления" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "Восстановление приведет к замене имени сайта, тем, плагинов, загрузок, базы данных и/или другого контента на этом сайте (в зависимости от содержимого выбранных для восстановления резервных копий и выбранных Вами опций)." + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "Удалить резервную копию с" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "Восстановить резервную копию" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "Удалить набор резервной копии" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "Ошибка скачивания: сервер прислал ответ, который мы не смогли распознать." + +#: admin.php:570 +msgid "You should:" +msgstr "Вы должны:" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "Ошибка:" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "расчёт..." + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "UpdraftPlus - Загрузить файлы резервных копий" + +#: admin.php:3020 +msgid "refresh" +msgstr "обновить" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "Место на сервере использованное UpdraftPlus" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "Google Drive" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "Если Вы используете это отключите режим Turbo/Road." + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "Браузер Opera" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "Больше заданий:" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "Скачать наиболее свежий вариант лог-файла" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "(Пока журнал (лог) пуст)" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "Последнее сообщение журнала (лога)" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "Восстановить" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "Создать РК сейчас" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "База данных" + +#: admin.php:229 +msgid "Files" +msgstr "Файлы" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "Следующие запланированные резервные копии" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "Одновременно с созданием резервной копии файлов" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "Ничего пока что не запланировано" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "Интерфейс плагина активно использует JavaScript, поэтому Вам необходимо включить поддержку JavaScript в браузере или использовать другой браузер, где эти функции уже активированы." + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "Предупреждение JavaScript" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "Удалить старые директории" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "Текущий лимит:" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "Ваша резервная копия восстановлена." + +#: admin.php:2310 +msgid "Version" +msgstr "Версия" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "Открыть домашнюю страницу разработчика" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "Ваши настройки успешно удалены." + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "Директория для резервных копий успешно создана." + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "Невозможно создать директорию для резервных копий." + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "Удаление старых директорий не удалось по каким то причинам. Вы можете сделать это вручную." + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "Старые директории успешно удалены." + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "Удалить старые директории" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "Вернуться к настройкам UpdraftPlus" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "Действия" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "Восстановление прошло успешно!" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "Неправильный формат имени файла - этот файл не похож на шифрованный файл резервной копии базы данных созданный UpdraftPlus." + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "Неправильный формат имени файла - этот файл не похож на файл созданный UpdraftPlus." + +#: admin.php:2075 +msgid "No local copy present." +msgstr "Локальная копия отсутствует." + +#: admin.php:2072 +msgid "Download in progress" +msgstr "Производится загрузка" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "Файл готов." + +#: admin.php:2043 +msgid "Download failed" +msgstr "Скачивание не удалось" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "Ошибка" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "Невзможно найти задание - возможно оно уже завершено?" + +#: admin.php:1854 +msgid "Job deleted" +msgstr "Задание удалено" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "Хорошо. Скоро Вы должны увидеть активность в поле \"Последнее сообщение лога\" ниже." + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "Пока лог файлы отсутствуют" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "Пожалуйста прочтите данный раздел FAQ если у Вас проблемы с резервным копированием." + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "Ваш хостинг использует %s сервер." + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "Официально UpdraftPlus не поддерживает версии WordPress до %s. Возможно что у Вас всё будет работать, но если нет, тогда имейте ввиду что техническая поддержка для Вас недоступна до тех пор пока Вы не обновите WordPress до соответствующей версии." + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "У Вас на диске меньше чем %s свободного места для создания резервных копий - места может не хватить, поэтому свяжитесь с хостинг-провайдером для увеличения дискового пространства." + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "Внимание" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "Дополнения / Профессиональная Поддержка" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "Настройки" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "Разрешенные файлы" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "Не удалось создать zip-файл %s. Смотрите log-файл чтобы узнать больше." + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "Бесконечная рекурсия (функция вызывает саму себя): смотрите log-файл чтобы узнать больше" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "Обращайтесь на UpdraftPlus.Com за поддержкой и расширениями для плагина" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "Хотите больше возможностей и поддержки? Ознакомьтесь с UpdraftPlus Premium" + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "Пожалуйста, поддержите UpdraftPlus, оставив положительный отзыв на сайте wordpress.org" + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "Вам нравится UpdraftPlus и Вы готовы потратить минутку времени?" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "Занимаетесь переводами? Хотите помочь с переводом UpdrftPlus на Ваш родной язык?" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "Файл не найден" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "Использованный кл" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "Расшифровка не удалась. Скорее всего вы использовали неверный ключ." + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "Расшифровка не удалась. Файл базы данных зашифрован, но вы не ввели ключ расшифровки." + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "Невзможно открыть файл резервной копии для записи" + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "Невозможно сохранить историю резервного копирования, так как массив резервных копий не существует. Возможно резервное копирование также неудачно." + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "Невозможно прочесть директорию" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "Директория резервного копирования (s%) недоступна для записи или не существует." + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "Резервное копирование WordPress завершено" + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "Попытка резервного копирования удалась, но по видимому неуспешна" + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "Резервное копирование успешно завершено" + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "Произошла ошибка при попытке шифрования базы данных. Шифрование прервано." + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "Невозможно создать файлы в директории резервного копирования. Резервное копирование отменено - проверьте настройки UpdraftPlus." + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "Другое" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "Загрузки" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "Темы" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "Дополнения" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "Не найдено лог файлов." + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "Лог файл не может быть прочитан." + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "Уведомление UpdraftPlus:" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "Резервные копии UpdraftPlus" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-sl_SI.mo b/plugins/updraftplus/languages/updraftplus-sl_SI.mo new file mode 100644 index 0000000..784d6cc Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-sl_SI.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-sl_SI.po b/plugins/updraftplus/languages/updraftplus-sl_SI.po new file mode 100644 index 0000000..d05f454 --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-sl_SI.po @@ -0,0 +1,6109 @@ +# Translation of UpdraftPlus in Slovenian +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2015-04-12 07:46:49+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: sl_SI\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "" + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "" + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "" + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "" + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "" + +#: addons/webdav.php:91 +msgid "Path" +msgstr "" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "" + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "" + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "" + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "" + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "" + +#: admin.php:2310 +msgid "FAQs" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "" + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "" + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "" + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "" + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "" + +#: methods/ftp.php:355 +msgid "login" +msgstr "" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "" + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "" + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "" + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "" + +#: admin.php:2604 +msgid "Now" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "" + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "" + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "" + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "" + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "" + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "" + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "" + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "" + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "" + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "" + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "" + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "" + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "" + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "" + +#: admin.php:3420 +msgid "stop" +msgstr "" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "" + +#: admin.php:3092 +msgid "this backup set" +msgstr "" + +#: admin.php:3020 +msgid "calculate" +msgstr "" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "" + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "" + +#: admin.php:601 +msgid "Saving..." +msgstr "" + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:557 +msgid "Fetching..." +msgstr "" + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "" + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "" + +#: admin.php:2884 +msgid "Dismiss" +msgstr "" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "" + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "" + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "" + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "" + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "" + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "" + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "" + +#: admin.php:3860 +msgid "File Options" +msgstr "" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "" + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "" + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "" + +#: admin.php:5157 +msgid "settings" +msgstr "" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "" + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "" + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "" + +#: admin.php:442 +msgid "Extensions" +msgstr "" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "" + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "" + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "" + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "" + +#: addons/azure.php:524 +msgid "container" +msgstr "" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "" + +#: addons/azure.php:523 +msgid "optional" +msgstr "" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "" + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "" + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "" + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "" + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "" + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "" + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "" + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "" + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "" + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "" + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "" + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "" + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "" + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "" + +#: restorer.php:767 +msgid "Deferring..." +msgstr "" + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "" + +#: admin.php:3081 +msgid "Deselect" +msgstr "" + +#: admin.php:3080 +msgid "Select all" +msgstr "" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "" + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "" + +#: admin.php:634 +msgid "For backups older than" +msgstr "" + +#: admin.php:633 +msgid "week(s)" +msgstr "" + +#: admin.php:632 +msgid "hour(s)" +msgstr "" + +#: admin.php:631 +msgid "day(s)" +msgstr "" + +#: admin.php:630 +msgid "in the month" +msgstr "" + +#: admin.php:629 +msgid "day" +msgstr "" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "" + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "" + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "" + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "" + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "" + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "" + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "" + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "" + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "" + +#: admin.php:607 +msgid "Update quota count" +msgstr "" + +#: admin.php:606 +msgid "Counting..." +msgstr "" + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "" + +#: admin.php:603 +msgid "Connecting..." +msgstr "" + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "" + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "" + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "" + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "" + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "" + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "" + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "" + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "" + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "" + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "" + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "" + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "" + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "" + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "" + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "" + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "" + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "" + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "" + +#: admin.php:4423 +msgid "Site" +msgstr "" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "" + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "" + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "" + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "" + +#: admin.php:617 +msgid "Deleting..." +msgstr "" + +#: admin.php:616 +msgid "key name" +msgstr "" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "" + +#: admin.php:611 +msgid "Creating..." +msgstr "" + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "" + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "" + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "" + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "" + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "" + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "" + +#: addons/migrator.php:1861 +msgid "key" +msgstr "" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "" + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "" + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "" + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "" + +#: admin.php:608 +msgid "Adding..." +msgstr "" + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "" + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "" + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "" + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "" + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "" + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "" + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "" + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "" + +#: methods/email.php:73 +msgid "configure it here" +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "" + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "" + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "" + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "" + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "" + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "" + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "" + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "To običajno pomeni, da ste na strežniku z napadeno spletno stranjo, ki je bila uporabljena v prejšnjih napadih." + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "Videti je, da je IP naslov (%s) vašega strežnika blokiran." + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "UpdraftPlus.com sporoča \"Zavrnjen dostop\"." + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "Premium WooCommerce vtičniki" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "Brezplačen dvofaktorski varnostni vtičnik" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "Več kakovostnih vtičnikov" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "Pojdi v trgovino." + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "Primerjaj z brezplačno različico" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "UpdraftPlus Premium" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "Za prijavo sledi tej povezavi." + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "Brezplačno glasilo" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "Hvala za ustvarjanje varnostne kopije z UpdraftPlus!" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "Opusti (za %s mesecev)" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "(medtem, ko se ustvarja varnostna kopija)" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "Nobena varnostna kopija ni bila dokončana" + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "Prvi korak je odstranitev brezplačne različice." + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "Če ste plačali na UpdraftPlus.Com, potem sledite tej povezavi za navodila, kako namestiti vaš nakup." + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "Prijava na glasilo" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "Za prijavo na UpdraftPlus glasilo sledite tej povezavi." + +#: admin.php:2831 +msgid "Personal support" +msgstr "Osebna podpora" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "Zakleni dostop do nastavitev" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "Podpora za Network/Multisite" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "Enak čas varnostnega kopiranja" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "Načrtovane varnostne kopije" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "Obnovi varnostne kopije iz drugih vtičnikov" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "Šifriranje baze podatkov" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "Pošlji varnostno kopijo na več oddaljenih ciljev" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "Samodejna varnostna kopija pri posodabljanju WP/vtičnikov/tem" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "Napredne možnosti poročanja" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "Osnovno poročanje preko e-pošte" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "Preseli / kloniraj (torej kopiraj) spletne strani" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "Ustvari varnostno kopijo posebnih datotek in baz podatkov" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "Dropbox, Google Drive, FTP, S3, Rackspace, E-pošta" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "Ustvari varnostno kopijo na oddaljeno spletno mesto" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "Obnovi iz varnostne kopije" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "Preveden v preko %s jezikov" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "Ustvari varnostno kopijo Wordpress datotek in baz podatkov" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "Kupi sedaj!" + +#: admin.php:2718 +msgid "Get it from" +msgstr "Pridobi iz" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "Zastavi vprašanje pred nakupom" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "Pogosto zastavljena vprašanja pred nakupom" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "Seznam vseh značilnosti" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "Pridobi UpdraftPlus Premium" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "Trenutno uporabljate brezplačno različico UpdraftPlus iz wordpress.org." + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Pred posodobitvijo ustvari varnostno kopijo vtičnikov (kjer je to ustrezno), tem in Wordpress baz podatkov z UpdraftPlus." + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "%s Napaka: Napaka pri zagonu" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "ali" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "ali" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "Izbrali niste nobenih komponent za obnovo. Izberite vsaj eno in poskusite znova." + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "PKCS1 (PEM glava: BEGIN RSA PRIVATE KEY), XML in PuTTY format ključi so sprejeti." + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "Nadaljevanje nalaganja po delčkih je podprto za SFTP, ne pa za SCP. Če torej uporabljate SCP, je treba zagotoviti, da vaš strežnik dovoljuje tako dolge procese PHP, da se bo naložila vaša največja varnostna kopija." + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "zakupnik" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "To mora biti v2 (Keystone) preverjanje URI; v1 (Swauth) ni podprto." + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "naslov skrbnika vašega spletnega mesta" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "Za pošiljanje osnovnega poročila izberi ti polje" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "Ročno" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "Pripetila se je napaka (%s):" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "Spremeni nastavitve zaklepanja" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "Druga datoteka/mapa na vašem strežniku, ki jo želite varnostno kopirati" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "Za več značilnosti in osebno podporo preveri" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "Ustvarjanje preglednice ni uspelo - najbrž zato, ker ni dovoljenja za ustvarjanje preglednic in preglednica že obstaja; nadaljujem" + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "Čistim predpomnjene strani (%s)..." + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "Fraza za šifriranje baze podatkov" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "Samodejna varnostna kopija pred posodabljanjem" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "Wordpress jedro (samo)" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "Za podporo glede odklepanja, kontaktirajte osebo, ki za vas upravlja z UpdraftPlus." + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "Za dostop do nastavitev UpdraftPlus vpišite geslo za odklepanje." + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "Napačno geslo" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "Odkleni" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "V nasprotnem primeru bo prikazana privzeta povezava." + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "Kdorkoli vidi zaklenjen zaslon, bo videl to URL povezavo za podporo - vnesite naslov spletne strani ali naslov e-pošte." + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "URL podpore" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "Ponovno zahtevaj geslo po" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "%s tednov" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "1 teden" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "%s ur" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "1 ura" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "Prosimo, preverite, da ste zabeležili geslo!" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "Zakleni dostop do nastavitev UpdraftPlus" + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "Nastavitve so shranjene." + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "Geslo skrbnika je spremenjeno." + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "Geslo skrbnika je nastavljeno." + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "Geslo skrbnika je sedaj odstranjeno." + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "(več o tej pomembni možnosti)" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "Potem, ko ste prevzeli dodatke, lahko odstranite vaše geslo (vendar ne naslova e-pošte) iz spodnjih nastavitev, ne da bi vplivali na posodabljanje tega spletnega mesta." + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "Oglej si poročilo" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "Podatki varnostne kopije (klik za prenos)" + +#: admin.php:4368 +msgid "Backup date" +msgstr "Datum varnostne kopije" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "in ohrani toliko časovno nastavljivih varnostnih kopij" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "inkrementalna varnostna kopija; temeljna varnostna kopija: %s" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "Za možnost zaklepanja dostopa do nastavitev UpdraftPlus z geslom, nadgradite UpdraftPlus v različico Premium." + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "Naloži datoteke v UpdraftPlus." + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "Gumb za varnostno kopiranje je onemogočen, ker ni mogoče zapisovati na mesto varnostne kopije (pojdi v zavihek Nastavitve in poišči ustrezno možnost)." + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "Oznaka varnostne kopije" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "Napaka: nepričakovana napaka pri branju datoteke" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "Preverite poročilo za več podrobnosti." + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "vaš račun spletnega gostovanja je videti popolnoma zaseden; prosimo, glejte: %s" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "Napaka pri ustvarjanju zip" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "Vaša oznaka za to varnostno kopijo (po izbiri)" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "%s ne dovoljuje avtorizacije na spletišču z direktnimi IP naslovi. Morali boste spremeniti naslov vašega spletišča (%s) preden boste boste lahko uporabljali %s za shranjevanje." + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "Vpisali ste e-pošte, ki je UpdraftPlus.Com ni prepoznal." + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "Tvoja e-pošta je veljavna, vendar UpdraftPlus.Com ni prepoznal tvojega gesla." + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "Potrebno je vpisati tako naslov e-pošte kot geslo." + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "Za nadaljevanje, pritisni \"Kopiraj zdaj\". Nato spremljaj aktivnosti v polju \"Zadnje poročilo\"." + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "Če želite obnoviti varnostno kopijo multisite, je potrebno naprej nastaviti namestitev Worpress kot multisite." + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "Tvoja varnostna kopija je od Wordpress multisite, a to spletišče ni takšno. Na voljo bo samo prvo spletno mesto od multisite." + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "že končano" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "prezrto (ni v seznamu)" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "Išči in zamenjaj preglednico:" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "Vnesi seznam, ločen z vejicami; v nasprotnem primeru pusti prazno za vse tabele." + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "Samo te tabele" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "Vrstice na serijo" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "Niste še povezani s svojim UpdraftPlus.Com računom." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "Za prihodnje posodobitve UpdraftPlus se je potrebno povezati." + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "Za podporo v zvezi z %s se je priporočljivo obrniti na tvojega ponudnika spletnega gostovanja." + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "Nadaljuj samo, če ne moreš posodobiti trenutnega strežnika in si prepričan (ali pripravljen tvegati), da so tvoji vtičniki/teme/idr. združljivi s starejšo %s verzijo." + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "To je izrazito novejše kot strežnik, na katerega obnavljate podatke (verzija %s)." + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "Spletno mesto v tej varnostni kopiji je delovalo na strežniku z verzijo %s od %s." + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "LinkedIn" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "Google+" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "Facebook" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "Twitter" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "UpdraftPlus je prisoten na socialnih omrežjih - poišči na tukaj:" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "Zakaj vidim to?" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "Mesto te mape je določeno v naprednih nastavitvah zavihka Nastavitve." + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "Pritisni tukaj za ogled mape UpdraftPlus (v prostoru tvojega spletnega gostovanja) za nove varnostne kopije, ki si jih naložil." + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "Prični varnostno kopiranje" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "Uporabljaš %s strežnik, vendar ni videti, da bi bil naložen %s modul." + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "Za informacijo o dovoljenju Wordpress vtičnika o zapisovanjo v mapo, se bo potrebno posvetovati z vašim ponudnikom spletnega gostovanja." + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "Če nimate problema, lahko popolnoma prezrete vse, kar je tukaj." + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "Te datoteke ni bilo mogoče naložiti" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "Več informacij o tem boste našli med Nastavitvami." + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "Podprti vtičniki za varnostno kopiranje: %s" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "Ali je bila ta varnostna kopija narejena z drugim tovrstnim vtičnikom? V tem primeru ga je morda potrebno najprej preimenovati, da ga bomo lahko prepoznali - prosimo, sledite tej povezavi." + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "Več o inkrementalni varnostni kopiji" + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "Limit spomina" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "obnova" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "Posredno spuščena tabela: %s" + +#: backup.php:829 +msgid "Incremental" +msgstr "Inkrementalno" + +#: backup.php:829 +msgid "Full backup" +msgstr "Celotna varnostna kopija" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "nadaljujem s posodobitvami..." + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "(oglej si poročilo...)" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "Varnostna kopija je uspela" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "Vsakih %s ur" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "poišči in zamenjaj" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "Pojdi" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "Iskanja/zamenjave ni mogoče povrniti - ste prepričani, da to želite?" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "To lahko z lahkoto uniči vaše spletno mesto; uporabite s previdnostjo!" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "Zamenjaj z" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "Poišči" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "Poišči / zamenjaj bazo podatkov" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "poišči izraz" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "Pripetilo se je preveč napak z bazami podatkov - preklicujem" + +#: backup.php:895 +msgid "read more at %s" +msgstr "preberi več na %s" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "E-poštna poročila UpdraftPlus (brezplačna različica) prinašajo zadnje novice z UpdraftPlus.com " + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "Če namestite UpdraftPlus na več Wordpress spletnih mestih, potem ni mogoče ponovno uporabiti vašega projekta; ustvariti je potrebno novega s konzolo Google API za vsako spletno mesto." + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "Niste še naredili nobenih varnostnih kopij." + +#: admin.php:3872 +msgid "Database Options" +msgstr "Možnosti baze podatkov" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "Vtičniki za razhroščevanje:" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "%s (%s uporabljeno)" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "Razpoložljiv prostor na računu:" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "Ta gumb ni omogočen, ker na izbrano mesto za varnostno kopijo ni mogoče zapisovati (glej nastavitve)." + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "Obstoječe varnostne kopije" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "Trenutni status" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "Za spreminjanje privzetih nastavitev varnostnega kopiranja, prilagajanje v naprej potekajočih kopij, pošiljanje kopij na oddaljen pogon (priporočljivo) in drugo pojdi na zavihek Nastavitve." + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "Za ustvarjanje varnostne kopije, zgolj pritisni na gumb Kopiraj zdaj." + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "Dobrodošli na UpdraftPlus!" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "Vnešeno besedilo bo uporabljeno za šifriranje varnostne kopije baze podatkov (Rijndael). Naredite si ločen zapis in ga ne izgubite ali pa bodo vse varnostne kopije will neuporabne. To je tudi ključ za dešifriranje varnostnih kopij v okolju skrbnika (če ga torej spremenite, samodejno šifriranje ne bo delovalo dokler ga ne spremenite nazaj)." + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "Preverjam..." + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "Preveri povezavo..." + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "Predpona tabele" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "Varnostno kopiraj zunanjo bazo podatkov" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "V varnostno kopiranje dodaj zunanjo bazo podatkov..." + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "Če vaša baza podatkov vsebuje dodatne tabele, ki niso del tega Worpress spletnega mesta (vedeli boste, če to drži), potem aktivirajte to možnost, da jih vključite v varnostno kopiranje." + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "Varnostno kopiraj ne-Wordpressove tabele, ki so v isti bazi podatkov kot Worpress" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "Ta možnost bo povzročila, da bodo tabele v bazi MySQL, ki niso del Wordpress (identificirane kot tiste brez Wordpressovih predpon, %s), prav tako vključene v varnostno kopijo." + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "Povezava ni uspela." + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "Povezava uspela." + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "%s skupno najdenih tabel; %s z navedenimi predponami." + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "%s najdenih tabel." + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "poskus povezave z bazo podatkov ni uspel" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "ime baze podatkov" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "gostitelj" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "uporabnik" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "Zunanja baza podatkov (%s)" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "Sledi tej povezavi do svoje Google API konzole, kjer lahko aktiviraš Drive API in ustvariš ID klienta v oddelku API dostop." + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "neuspel dostop do zgornje mape" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "Kakorkoli, kasnejši poskusi dostopa niso uspeli:" + +#: admin.php:4499 +msgid "External database" +msgstr "Zunanja baza podatkov" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "To bo povzročilo tudi razhroščevanje iz drugih vtičnikov, ki se bodo prikazali na zaslonu - prosimo, ob tem ne bodite presenečeni." + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "Varnostno kopiraj več baz podatkov" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "Najprej vnesite dešifrirni ključ" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "Tukaj lahko ročno dešifrirate šifrirano podatkovno bazo." + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "Poleg tega lahko naredi varnostno kopijo zunanjih podatkovnih baz." + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "Ne želite, da kdo vohuni za vami? UpdraftPlus Premium omogoča šifriranje varnostne kopije baze podatkov." + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "uporabite UpdraftPlus Premium" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "Dešifriranje ni uspelo. Podatkovna baza je šifrirana." + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "Obnovljena je lahko samo Wordpressova podatkovna baza; zunanje baze podatkov je potrebno obnoviti ročno." + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "Prišlo je do napake pri prvem %s ukazu - preklicujem" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "Povezava ni uspela: preveri podrobnosti dostopa, da je strežnik dosegljiv, in da spletne povezave ne blokira požarni zid." + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "Povezava z bazo podatkov ni uspela." + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "Opozorilo: domači URL podatkovne baze (%s) je drugačen kot smo pričakovali (%s)" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "V %s, imena poti razlikujejo med malimi in velikimi črkami." + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "Če pustite prazno, bo varnostna kopija postavljena v izhodišče vaše %s" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "npr. %s" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "Če mapa še ne obstaja, bo na novo narejena." + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "Vnesite pot do %s mape, ki je želite uporabiti na tem mestu." + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "Kontejner" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "Pustite prazno in izbrano bo privzeto." + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "Zakupnik" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "Za več informacij sledite tej povezavi" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "URI avtentifikacija" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "Pridobite dostopne poverilnice pri svojem ponudniku OpenStack Swift, nato pa izberite ime kontejnerja, ki bo uporabljen pri shranjevanju. Ta kontejner bo ustvarjen za vas, če še ne obstaja." + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "Prenos %s ni uspel" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "Prenos ni uspel" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "ustvarjanje seznama datotek ni uspelo" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "Neuspelo nalaganje %s" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "Uspeh:" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "Potem, ko shranite svoje nastavitve (z klikom na \"Shrani spremembe\" spodaj), se vrnite nazaj sem in kliknite to povezavo za dokončanje avtentifikacije z %s." + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "(Videti je, da ste že avtentificirani)." + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "Dropbox" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "Avtentifikacija z %s." + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "Napaka pri prenosu oddaljenih datotek: Neuspešen prenos" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "Regija: %s" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "%s napaka - dostopali smo do kontejnerja, a v njem nismo uspeli ustvariti datoteke" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "%s objekt ni bil najden" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "Ne moremo dostopati do %s kontejnerja" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "%s napaka: neuspeh pri dostopu do kontejnerja" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "Ime nosilca računa: %s." + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "Za poimenovanje map po meri uporabite UpdraftPlus Premium." + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "To je ID številka v Google Drive" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "To NI ime mape." + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "Mapa" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "%s prenos: neuspelo: ne najdem datoteke" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "Ime: %s." + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "Google Drive seznam datotek: neuspeh pri dostopu do zgornje mape" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "Vaša %s različica: %s." + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "Morali boste zahtevati nadgradnjo pri vašem ponudniku spletnega gostovanja." + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "Ta metoda oddaljenega shranjevanja (%s) zahteva PHP %s ali kasnejši." + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "Ne najdem direktorija (%s) teme, a obstaja različica z majhnimi črkami; možnost posodabljanja podatkovne baze" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "Kliči" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "Pridobi" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "Ta značilnost zahteva %s različico %s ali kasnejšo" + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "Zaznani so podatki theme builder vtičnika od Elegant themes: resetiram začasno mapo" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "%s datotek je bilo razširjenih" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "Neuspeh pri razširjanju arhiva" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "Napaka - neuspeh pri prenosu datoteke" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "Preišči lokalno mapo za novimi varnostnimi kopijami" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "Posodobite UpdraftPlus, da bi se prepričali, če imate preizkušeno in združljivo različico." + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "Preizkušeno je bilo do različice %s." + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "Nameščene različica UpdraftPlus Backup/Restore ni bila preizkušena na vaši različici Wordpressa (%s)." + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "geslo/ključ" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "Ključ" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "Vaša prijava lahko temelji na geslu ali ključu - vnesti je potrebno samo enega in ne obeh." + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "Izbrani ključ ni v veljavnem formatu ali je poškodovan." + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "SCP/SFTP geslo/ključ" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "Varnostna kopija datotek (narejena z %s)" + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "Varnostna kopija datotek in podatkovnih baz Wordpress (narejena z %s)" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "Varnostna kopija ustvarjena z: %s." + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "Podatkovna baza (narejena z %s)" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "nepoznan vir" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "Ponovno preišči lokalno shrambo" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "Naloži datoteke varnostne kopije" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "Ta varnostna kopija je bila narejena z %s in jo lahko uvozimo." + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "Preberi to stran za pojasnilo o možnih razlogih in odpravi napak." + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "Wordpress ima več (%d) poteklih načrtovanih opravil. Če spletno mesto ni v razvoju, to verjetno pomeni, da načrtovalec opravil v vaši namestitvi Wordpressa ne deluje." + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "Če je bila ta varnostna kopija ustvarjena z drugim tovrstnim vtičnikom, potem vam morda lahko pomaga UpdraftPlus Premium." + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "Kakorkoli, UpdraftPlus arhivi so običajne zip/SQL datoteke - če ste prepričani, da je vaša datoteka v ustreznem formatu, jo lahko preimenujete, da bo ustrezala vzorcu." + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "Ta datoteka ni videti arhiv varnostne kopije UpdraftPlus backup archive (takšne datoteke so .zip ali .gz, ki imajo imena kot: backup_(time)_(site name)_(code)_(type).(zip|gz))." + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "Varnostno kopijo je ustvaril nepoznani vir (%s) - obnova ni mogoča." + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "V tej zip datoteki ne najdemo Wordpressove vsebinske mape (wp-content)." + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "Ta različica UpdraftPlus ne zna rokovati s to vrsto varnostne kopije." + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "%s je vrnil nepričakovan HTTP odgovor: %s" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "UpdraftPlus modul za metodo dostopa do te datoteke (%s) ne podpira seznama datotek" + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "Na najdemo nastavitev" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "Ena ali več varnostnih kopij je bila dodana pri iskanju v oddaljeni shrambi; imejte v mislih, da te kopije ne bodo samodejno izbrisane preko nastavitve \"ohrani\"; če/ko jih želite izbrisati, je to potrebno narediti ročno." + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "Ponovno preiskujem oddaljeno in lokalno shrambo za varnostnimi kopijami..." + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "(Preberi več)" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "Prilagajanje multisite poti" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "Vsa sporočila oblikuj v syslog (to ustreza najbrž samo strežniškim administratorjem)" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "Dodaj še enega..." + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "Odstrani" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "Druga %s pogosto zastavljena vprašanja." + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "Označi za prejemanje več informacij in e-pošte o procesu varnostnega kopiranja - uporabno, če gre kaj narobe." + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "Če vključujete več datotek/direktorijev, jih ločite z vejicami. Za entitete na najvišji ravni lahko kot wildcard uporabite * na začetku ali koncu vnosa." + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "Zaznani so podatki vtičnika za upravljanje vsebin po meri: brišem predpomnilnik možnosti" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "Vaše spletno gostovanje mora omogočiti te funkcije preden %s bodo lahko delovale." + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "Namestitev PHP na vašem spletnem strežniku nima vzpostavljenih teh funkcij: %s." + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "šifrirani FTP (explicitno šifriranje)" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "šifriran FTP (implicitno šifriranje)" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "običajen nešifriran FTP" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "Varnostna kopija narejena z:" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "Zahtevek na tej strani je na voljo" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "Prosim obnovite za ohranjanje dostopa do podpore." + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "Vaš plačan dostop do podpore UpdraftPlus bo kmalu potekel." + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "Za ponovno pridobitev dostopa, prosimo obnovite." + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "Vaš plačan dostop do podpore UpdraftPlus na tem spletnem mestu je potekel." + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "Vaš plačan dostop do posodobitev UpdraftPlus na tem spletnem mestu bo kmalu potekel." + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "Za ohranitev dostopa in pridobivanja posodobitev (vključno z s prihodnjimi funkcijami in združljivostjo s prihodnjimi različicami Wordpressa) ter podpore, prosimo obnovite." + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "Vaš plačan dostop do posodobitev UpdraftPlus za %s %s dodatkov na tem spletnem mestu bo kmalu potekel." + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "Vaš plačan dostop do posodobitev UpdraftPlus za %s dodatkov na tem spletnem mestu je potekel." + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "Za ponovno pridobitev dostopa do posodobitev (vključno z s prihodnjimi funkcijami in združljivostjo s prihodnjimi različicami Wordpressa) ter podpore, prosimo obnovite." + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "Vaš plačan dostop do posodobitev UpdraftPlus na tem spletnem mestu je potekel. Ne boste več prejemali posodobitev UpdraftPlus." + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "Izključi iz glavne nadzorne plošče (za %s tednov)" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "Poskus razveljavitve dvojnega stiskanja je uspel." + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "Poskus razveljavitve dvojnega stiskanja ni uspel." + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "Videti je, da je bila podatkovna baza dvakrat stisnjena - spletna stran, od koder ste prenesli datoteko, je imela najbrž napačno nastavljen strežnik." + +#: admin.php:1528 +msgid "Constants" +msgstr "Konstante" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "Odpiranje podatkovne baze za branje ni uspel:" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "Ne najdemo podatkovne baze" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "Prosimo, počakajte na ponoven preložen poskus" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "Imejte v mislih, da so opozorilna sporočila v svetovalne namene - postopek varnostnega kopiranje se zaradi njih ne ustavi. Namesto tega ponujajo informacije, ki bi utegnile biti koristne ali pa se nanašajo na izvor problema, če varnostno kopiranje ni uspelo." + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "Procesirane poizvedbe podatkovne baze: %d v %.2f sekundah" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "Iskanje in zamenjava dosežene vrste: %d" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "Tabela je preskočena: podatke v tej tabeli (%s) ne iščite/zamenjujte" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "Račun je poln: vaš %s račun ima na voljo le še %d bajtov prostora, od datoteke, ki bo naložena, pa je ostalo še %d bajtov (skupna velikost: %d bajtov)" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "Pojavile so se napake:" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "Sledite povezavi za prenos poročila te obnovitve (potrebno za podporo)." + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "Glej tudi ta pogosto zastavljena vprašanja." + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "Če ne izberete oddaljene shrambe, varnostne kopije ostanejo na strežniku. Tega ne priporočamo (razen, če jo nameravate ročno prenesti na vaš računalnik), saj bi izguba strežnika pomenila izgubo tako spletne strani kot varnostne kopije hkrati." + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "Ponovno pridobivanje (če je potrebno) in priprava datotek varnostne kopije..." + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "Namestitev PHP na tem strežniku dovoljuje, da se PHP izvaja le %s sekund in ne dovoljuje dvig limita. Če imate za uvoziti veliko podatkov in se operacija obnavljanja izteče, boste morali prositi ponudnika spletnega gostovanja za možnosti dviga tega limita (ali poskusite obnoviti po delčkih)." + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "Obstajajo neodstranjene mape od prejšnjih obnovitev (prosimo, da za njihovo odstranitev uporabite gumb \"Zbriši stare direktorije\" preden poskusite znova): %s" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "Za izvajanje Wordpressovih vtičnikov je na voljo zelo malo časa (%s sekund) - v izzogib neuspešnih varnostnih kopij zaradi izteka časa bi ga morali zagotoviti več (posvetujte se s svojim ponudnikom spletnega gostovanja za več pomoči to je PHP nastavitev max_execution_time; priporočena vrednost je %s sekund ali več)" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "Zamenjava v tabrli blogov/spletnega mesta: od: %s do: %s" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "%s: Preskoči predpomnjeno datoteko (še ne obstaja)" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "Onemogoči ta vtičnik: %s: ponovno ga aktivirajte ročno, ko boste pripravljeni." + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "%s povezava se je iztekla; če je strežnik pravilno nastavljen, to ponavadi povzroča požarni zid, ki blokira povezavo - preverite pri svojem ponudniku spletnega gostovanja." + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "Trenutna tema ni najdena; da bi preprečili nenalaganje strani, smo vašo temo povrnili na privzeto temo" + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "Obnovitev ni uspela..." + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "Sporočila:" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "Najdena je SQL vrstica, ki je večja od največje velikosti paketa in je ne moremo razdeliti; te vrstice ne bomo procesirali, vendar bo spuščena: %s" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "Direktorij ne obstaja" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "E-pošta novega uporabnika" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "Uporabniško ime novega uporabnika" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "API ključ skrbnika" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "Uporabniško ime skrbnika" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "US ali UK Rackspace račun" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "Vnesite vaše skrbniško uporabniško ime/API ključ za Rackspace (da Rackspace lahko avtentificira vaše dovoljenje za ustvarjanje novih uporabnikov) ter vpišite novo (unikatno) uporabniško ime in e-pošto za novega uporabnika in ime kontejnerja." + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "Ustvari novega API uporabnika in kontejner" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "API ključ: %s" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "Geslo: %s" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "Uporabniško ime: %s" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "Operacija Cloud Files ni uspela (%s)" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "Konflikt: uporabnik ali e-pošta že obstajata" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "Potrebno je vnesti novo veljavno e-pošto" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "Potrebno je vnesti kontejner" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "Potrebno je vnesti novo uporabniško ime" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "Potrebno je vnesti API ključ skrbnika" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "Potrebno je vnesti uporabniško ime skrbnika" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "Ustvari novega API uporabnika z dostopom samo do tega kontejnerja (namesto celega računa)" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "Doda izboljšane zmogljivosti za uporabnike Rackspace Cloud Files" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "Rackspace Cloud Files, izboljšano" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "Cloud Files kontejner" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "Clouf Files API ključ" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "Uporabite ta dodatek za ustvarjanje novega Rackspace API poduporabnika in API ključa, ki ima dostop samo do tega Rackspace kontejnerja." + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "Uporabniško ime Cloud Files" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "London (LON)" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "Hong Kong (HKG)" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "Severna Virginija (IAD)" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "Chicago (ORD)" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "Sydney (SYD)" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "Dallas (DFW) (privzeto)" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "Cloud Files Storage Region" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "Računi, ustvarjeni na rackspacecloud.com so US-računi; računi, ustvarjeni na rackspace.co.uk bazirajo na UK" + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "US ali UK baziran Rackspace račun" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "Računi, ustvarjeni na rackspacecloud.com so US-računi; računi, ustvarjeni na rackspace.co.uk so UK računi." + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "Avtorizacija ni uspela (preverite svoje poverilnice)" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "Pripetila se je nepoznana napake pri poskusu povezave z Updraft.Com" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "Ustvari" + +#: admin.php:556 +msgid "Trying..." +msgstr "Poskušam..." + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "Geslo konzole novega uporabnika RackSpace je (to se ne več pokazalo):" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "(ko dešifrirano)" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "Podatki napake:" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "V zgodovini varnostnih kopij ne obstaja varnostna kopija" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "Vaša namestitev Wordpressa vsebuje stare direktorije izpred obnove/selitve (tehnična informacija: imajo pripono -old). Za izbris pritisnite ta gumb, takoj ko se prepričate, da je obnovitev uspela." + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "Razdeli vrstico v izzogib preseganja največje velikosti paketa" + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "Uporabnik vaše podatkovne baze nima dovoljenja za spuščanje tabel. Poskušali bomo obnoviti preprosto s praznjenjem tabel; to bi moralo delovati, če obnavljate iz različice Wordpressa z enako strukturo baze podatkov (%s)" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "Predpona nove tabele: %s" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "Dovoljenja datoteke ne omogočajo prenosa ali ohranitve starih podatkov; namesto tega bodo izbrisani." + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "%s: Ta direktorij že obstaja in bo zamenjan" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "Podatkov nismo mogli premakniti na izbrano mesto. Preverite dovoljenja vaše datoteke." + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "Ni bilo mogoče premakniti novih podatkov na izbrano mesto. Preverite svojo mapo wp-content/upgrade." + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "Ni bilo mogoče premakniti starih podatkov." + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "Premikam stare podatke..." + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "Dodaj nov naslov..." + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "Tukaj vnesite naslove, na katere bomo poslali poročilo ob zaključku varnostnega kopiranja." + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "E-poštna poročila" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "%s checksum: %s" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "datoteke: %s" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "Za nastavitev uporabljenih e-poštnih naslovov uporabi sekcijo \"Poročanje\"." + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr "(z opozorili (%s))" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr "(z napakami (%s))" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "Informacije o razhroščevanju" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "Naloženo na:" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "Porabljen čas:" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "Opozorila" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "Napake" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "Napake / opozorila:" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "Vsebuje:" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "Začetek varnostnega kopiranja:" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "Poročilo o varnostni kopiji" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "%d ur, %d minut, %d sekund" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "%d napak, %d opozoril" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "%s avtentifikacija" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "%s napaka: %s" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "%s logo" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "%s ni vrnil pričakovanega odgovora - preverite poročilo za več podrobnosti" + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "Potreben %s PHP modul ni nameščen - prosite vašega ponudnika spletnega gostovanja, da ga omogoči" + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "Za več možnosti uporabi \"%s\" dodatek." + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "Uporabljena bo e-pošta (%s) skrbnika vašega spletnega mesta." + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "Poveži" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "Za več funkcij poročanja uporabi dodatek Poročanje." + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "(različica: %s)" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "Imejte v mislih, da imajo e-poštni strežniki pogosto omejitve velikosti; običajno okoli %sMb; varnostne kopije, ki so večje od katerihkoli omejitev po vsej verjetnosti ne bodo prispele." + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "Ko je na voljo e-poštna shramba, prav tako pošlji celotno varnostno kopijo" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "Zadnji status:" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "Varnostna kopija vsebuje:" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "Kopirano: %s" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "Poročilo se nahaja v priponki." + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "Nepoznana/nepričakovana napaka - prosimo, obrnite se na podporo" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "Samo podatkovna baza (datoteke niso bile del tega načrtovanega opravila)" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "Podatkovna baza (varnostna kopija datotek ni bila narejena)" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "Samo datoteke (podatkovne baze niso bile del tega načrtovanega orpavila)" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "Datoteke (varnostna kopija podatkovne baze ni bila končana)" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "Datoteke in baze podatkov" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "(To se nanaša na vse Wordpressove vtičnike za varnostno kopiranje, razen če so bili posebej programirani za združljivost z omrežji)." + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "Brez nadgradnje UpdraftPlus omogoča varnostne kopije celotnega omrežja vsakemu skrbniku bloga, ki lahko spreminja nastavitve (in dostopa do podatkov, vključno z gesli), prav tako pa tudi obnovo (vključno s spremembami po meri, npr. spremenjenimi gesli)." + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "Wordpress Multisite je podprta z dodatnimi funkcijami UpdraftPlus Premium ali Multisite dodatkom." + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "To je namestitev Worpress multi-site (network)." + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "Opozorilo UpdraftPlus:" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "(ali se povežite z uporabo obrazca na tej strani, če ste že opravili nakup)" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "prosimo, sledite tej povezavi za posodobitev vtičnika, da ga boste aktivirali" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "prosimo, sledite tej povezavi za posodobitev vtičnika, da ga boste prejeli" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "zadnje" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "Vaša različica: %s" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "Prejeli ste" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "Podpora UpdraftPlus" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "Posodobitev, ki vključuje vaše dodatke, je na voljo na UpdraftPlus - prosimo, da za prejem sledite povezavi." + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "Dodatki UpdraftPlus" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "Za UpdraftPlus je na voljo posodobitev - prosimo, da za prejem sledite povezavi." + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "UpdraftPlus.Com je vrnil odgovor, vendar ga nismo razumeli" + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "UpdraftPlus.Com ni prepoznal vaše e-pošte in gesla." + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "UpdraftPlus.Com je odgovoril z odgovorom, ki ga nismo razumeli (podatki: %s)" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "UpdraftPlus.Com je odgovoril, vendar nismo razumeli odgovora" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "Nismo se uspeli povezati z UpdraftPlus.Com" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "Poročanje" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "Možnosti (neobdelane)" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "Pošlji poročilo samo ob opozorilih/napakah" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "URL vsebine:" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "Oglejte si tudi dodatek \"Več datotek\" v naši trgovini." + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "Na vašem računu spletnega gostovanja je le še malo razpoložljivega prostora - ostaja samo %s Mb" + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "Količina dovoljenega pomnilnika (RAM) za PHP je zelo nizka (%s Mb) - v izzogib neuspehom zaradi nezadostnega pomnilnika bi ga morali povečati (za več pomoči se posvetujte z vašim ponudnikom spletnega gostovanja)" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "Upravljaj dodatke" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "Kupite ga" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "Pridobite ga iz trgovine UpdraftPlus.Com" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "aktivirajte ga na tej strani" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "Imate neaktiven nakup" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "Dodeljen temu spletnemu mestu" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "Na voljo za to spletno mesto (preko nakupa vseh dodatkov)" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "(videti je kot predizdaja ali umaknjena izdaja)" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "Pojdite sem" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "Potrebujete podporo?" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "Pri poskusu pridobivanja vaših dodatkov je prišlo do napake." + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "Prejeli smo neznan odgovor. Odgovor je bil:" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "Zahteva ni bila ugodena - prijavni podatki za vaš račun so napačni" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "Prosimo, počajte, medtem ko delamo zahtevek..." + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "Pri poskusu povezave z UpdraftPlus.Com je prišlo do napake:" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "Trenutno niste povezani v vaš UpdraftPlus.Com račun." + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "Če ste kupili nove dodatke, potem sledite tej povezavi za osvežitev vaše povezave" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "Trenutno ste povezani v vaš UpdraftPlus.Com račun." + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "Vas zanima več o varnosti gesel UpdraftPlus.com? Preberite tukaj." + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "Ste pozabili vaše podrobnosti?" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "Še nimate računa (je brezplačen)? Pridobite ga!" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "Povežite se z vašim računom UpdraftPlus.Com" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "Različica PHP na vašem strežniku je preveč zastarela ( " + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "Videti je, da imate nameščen zastarel Updraft vtičnik - mogoče ste jih zmedli?" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "Za namestitev pojdite sem." + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "UpdraftPlus še ni nameščen." + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "Za aktivacijo pojdi sem." + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "UpdraftPlus še ni aktiviran." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "Za povezavo pojdite sem" + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "Niste se še povezali z vašim računom Updraft.Com, da bi omogočili seznam kupljenih podatkov." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "Brez njega bo šifriranje precej počasnejše." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "Vaš strežnik nima nameščenega %s modula." + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "(Videti je, da ste že avtentificirani, čeprav se lahko v primeru težav avtentificirate znova, da osvežite vaš dostop)." + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "Podatke varnostne kopije spustite sem" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "upravljaj Wordpress iz ukazne vrstice - velik prihranek časa" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "Preverite WordShell" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "Želite več funkcij ali plačljivo, garantirano podporo? Preverite UpdraftPlus.Com" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "Strežnik je vrnil kodo napake (poskusite znova ali preverite poročilo vašega strežnika)" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "Obnovitev se je pričela. Ne ustavljaj ali zapiraj brskalnika dokler se ne pojavi sporočilo o koncu." + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "Če izvzamete tako podatkovne baze kot podatke, potem ste izvzeli vse!" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "Spletno mesto:" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "Možnosti oddaljene shrambe" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "(kot ponavadi lahko poročilo najdete na UpdraftPlus strani nastavitev)..." + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "Zapomni si to odločitev za naslednjič (še vedno boste imeli možnost za spremembo)" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "Nalaganje ni uspelo" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "Z dodatkom lahko pošljete varnostno kopijo na več kot en cilj." + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "Opomba: spodnja vrstica napredka temelji na fazah, NE času. Ne prekinjajte varnostnega kopiranja samo zato, ker je videti, da je za nekaj časa obstala - to je normalno." + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "(%s%%, datoteka %s od %s)" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "Preberi več o delovanju..." + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "Neuspeh: Uspeli smo se prijaviti, a na tej lokaciji nismo uspeli ustvariti datoteke." + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "Neuspeh: Uspeli smo se prijaviti in premakniti na izbrani direktorij, a na tej lokaciji nismo uspeli ustvariti datoteke." + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "Uporabi SCP namesto SFTP" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "SCP/SFTP uporabniške nastavitve" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "SCP/SFTP nastavitve gostovanja" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "Poskus pošiljanja varnostne kopije preko e-pošte ni uspel (najbrž je kopija prevelika za to metodo)" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "Varnostna kopija je od: %s." + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "%s testni rezultat nastavitev:" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "(Ni končano)" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "Če vidite več varnostnih kopij, kot ste jih pričakovali, je to najbrž posledica neizbrisa starih varnostnih kopij preden se konča novo varnostno kopiranje." + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "Ne postavite je v vaš direktorij za nalaganje ali vtičnike, saj bo to povzročilo rekurzijo (varnostno kopijo varnostne kopije od varnostne kopije...)." + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "UpdraftPlus bo na tem mestu zapisal zip dateke, ki jih najprej naredi. V ta direktorij vašega strežnika mora biti možno zapisovati. Je relativen vašemu direktoriju z vsebino (ki je privzeto imenovan wp-content)." + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "ID opravila: %s" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "Zadnja aktivnost: %ss nazaj" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "Naslednje nadaljevanje: %d (po %ss)" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "Nepoznano" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "Varnostno kopiranje je končano" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "Čakam, dokler načrtovalec zaradi napak ne poskusi znova" + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "Obrezovanje starih varnostnih kopij" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "Nalagam datoteke na oddaljeno shrambo" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "Šifrirana podatkovna baza" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "Šifriranje podatkovne baze" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "Ustvarjena varnostna kopija podatkovne baze" + +#: admin.php:3359 +msgid "table: %s" +msgstr "tabela: %s" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "Ustvarjanje varnostne kopije podatkovne baze" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "Ustvarjena je zip datoteke varnostne kopije" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "Ustvarjamo zip datoteke varnostne kopije" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "Varnostno kopiranje se je pričelo" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "Varnostno kopiranje v teku:" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "V vaši namestitvi Wordpressa je preko nastavitve DISABLE_WP_CRON onemogočen razporejevalnik. Varnostno kopiranje se ne more začeti (niti "Kopiraj zdaj") dokler ročno ne nastavite objekta za priklic razporejevalnika ali dokler ni omogočen." + +#: restorer.php:646 +msgid "file" +msgstr "datoteka" + +#: restorer.php:639 +msgid "folder" +msgstr "mapa" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "UpdraftPlus bi moral ustvariti %s v vašem vsebinskem direktoriju, vendar ni uspel - prosimo, preverite dovoljenja vaših datotek in omogočite dostop (%s)" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "Varnostno kopiranje se ni končalo; nadaljevanje je načrtovano" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "Vaša spletna stran ni pogosto obiskana in UpdraftPlus ne dobiva dovolj sredstev, ki si jih želi; prosimo, preberite to stran:" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "%s avtentifikacija se ne more nadaljevati, ker ji nekaj na vašem spletnem mestu to onemogoča. Poskusite onemogočiti druge vaše vtičnike in preklopiti na privzeto temo. (Še posebno iščite komponento, ki pošilja output preden se stran zažene (najveretneje PHP opozorila/napake. Pomaga lahko tudi onemogočanje katerekoli razhroščevalne nastavitve)." + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "Vaš limit pomnilnika PHP (določen s strani vašega ponudnika spletnega gostovanja) je zelo nizek. UpdraftPlus ga je poskusil dvigniti, a brez uspeha. Vtičnik lahko ima težave, če je limit pomnilnika nižji od 64 Mb - še posebej če nalagate zelo velike datoteke (čeprav je po drugi strani mnogo spletnih mest uspešnih z 32 Mb limita - vaša izkušnja se lahko spreminja)." + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "Nadaljuj s posodobitvijo" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "Ne prekinjajte po pritisku na Nadaljuj spodaj - počakajte, da se varnostno kopiranje zaključi." + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "Samodejne varnostne kopije UpdraftPlus" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "Pripetile so se napake:" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "Ustvarjanje varnostne kopije z UpdraftPlus..." + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "Samodejno varnostna kopija" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "Ustvarjam varnostno kopijo podatkovne baze z UpdraftPlus..." + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "Nimate zadostnih dovoljenj za posodobitev tega spletnega mesta." + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "teme" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "vtičniki" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "Začenjam samodejno varnostno kopiranje..." + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "Ustvarjam %s in varnostno kopijo podatkovne baze z UpdraftPlus..." + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Samodejno varnostno kopiraj (kjer možno) vtičnike, teme in Wordpressove podatkovne baze z UpdraftPlus pred posodobitvijo" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "Če niste prepričani, se raje ustavite; v nasprotnem primeru lahko uničite namestitev Wordpressa." + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "To ni videti veljavna Wordpressova temeljna varnostna kopija - manjkala je datoteka %s." + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "Ni mogoče odpreti zip datoteke (%s) - ni bilo možno preveriti njene celovitosti." + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "Ni mogoče brati zip datoteke (%s) - ni bilo možno preveriti njene celovitosti." + +#: admin.php:2310 +msgid "More plugins" +msgstr "Več vtičnikov" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "Podpora" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "UpdraftPlus med iskanjem varnostne kopije podatkovne baze ni mogel najti predpone tabele." + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "Tej varnostni kopiji podatkovne baze manjka jedro Wordpressovih tabel: %s" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "Uvažete iz novejše različice Wordpressa (%s) v starejšo (%s). Ne moremo zagotoviti, da bo Worpressu to uspelo." + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "Podatkovna baza je premajhna, da bi bila veljavna Wordpressova podatkovna baza (velikost: %s Kb)." + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "Posodobi temo" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "Posodobi vtičnik" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "Zavarujte se s samodejnim varnostnim kopiranjem" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "Zavrzi (za %s tednov)" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "Pot (%s) za nalaganje ne obstaja - resetiram (%s)" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "Če še vedno lahko berete te besede, ko se stran neha nalagati, potem je na spletnem mestu Javascript ali jQuery napaka." + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "Datoteka je naložena." + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "Status neznanega odgovora strežnika:" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "Neznan odgovor strežnika:" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "Ta dešifrirni ključ bo doživel poskus:" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "Sledite tej povezavi za poskus dešifriranja in prenosa podatkovne baze na vaš računalnik." + +#: admin.php:584 +msgid "Upload error" +msgstr "Napaka nalaganja" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "Ta datoteka ni videti šifriran arhiv UpdraftPlus (takšne datoteke so .gz.crypt datoteke, ki imajo imena kot: backup_(time)_(site name)_(code)_db.crypt.gz)." + +#: admin.php:582 +msgid "Upload error:" +msgstr "Napaka nalaganja:" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "(preverite, da ste poskusili naložiti zip datoteko, ki je bila predhodno ustvarjena z UpdraftPlus)" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "in potem, če želite," + +#: admin.php:572 +msgid "Download to your computer" +msgstr "Prenesi na vaš računalnik" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "Brisanje iz vašega strežnika" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "Primeri S3 združljivih ponudnikov gostovanja:" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "Po razširitvi kateregakoli arhiva ne bo prišlo do izbrisa, ker ni bilo oblačne shrambe za to varnostno kopijo" + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "Videti je, da v seriji več arhivov manjka eden ali več arhivov." + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "(%d arhiv(ov) v seriji)." + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "Razdeli arhiv vsakih:" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "Napaka: strežnik nam je poslal nerazumljiv odgovor (JSON)." + +#: admin.php:563 +msgid "Warnings:" +msgstr "Opozorila:" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "Napaka: strežnik je poslal prazen odgovor." + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "Ta datoteka je videti kot, da bi bila ustvarjena z UpdraftPlus, a namestitev ne pozna objektov te vrste: %s. Morate morda namestiti dodatek?" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "Datoteke arhiva varnostne kopije so bile procesirane, vendar se je pojavilo nekaj napak. Preden boste ponovno poskusili, najprej prekličite in popravite probleme." + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "Datoteke arhiva varnostne kopije so bile procesirane, vendar se je pojavilo nekaj opozoril. Če je vse v redu, potem za nadaljevanje ponovno pritisnite Obnovi. V nasprotnem primeru prekličite in najprej popravite probleme." + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "Datoteke arhiva varnostne kopije so bile uspešno procesirane. Za nadaljevanje ponovno pritisnite Obnovi." + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "Tej seriji varnostne kopije iz več arhivov manjkajo naslednji arhivi: %s" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "Datoteko (%s) smo našli, vendar je drugačne velikoste (%s) od pričakovane (%s) - morda je poškodovana." + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "Datoteko smo našli, vendar je nične velikosti (potrebno jo je ponovno naložiti): %s" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "Ne najdemo datoteke (potrebno jo je naložiti) %s" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "Ne obstaja nobena takšna serija varnostne kopije." + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "Ne najdemo arhiva varnostne kopije za to datoteko. Vrsta oddaljene shrambe v uporabi (%s) nam ne dovoljuje pridobivanje datotek. Za obnovitev z uporabo UpdraftPlus bo potrebno pridobiti kopijo te datoteke in jo umestiti v delovno mapo UpdraftPlus." + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "Neuspeh pri premikanju direktorija (preverite dovoljenja vaše datoteke in kvoto diska): %s" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "Neuspeh pri premikanju datoteke (preverite dovoljenja vaše datoteke in kvoto diska): %s" + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "Premikamo razpakirano varnostno kopijo na svoje mesto..." + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "Neuspeh pri odpiranju zip datoteke (%s) - %s" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "Pot do strežnikovega Wordpress root direktorija: %s" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "%s končna točka" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "... in veliko več!" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "S3 (združljivo)" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "Datoteka lokalno ni na voljo - potrebno jo je pridobiti iz oddaljene shrambe" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "Iskanje %s arhiva: ime datoteke: %s" + +#: admin.php:4836 +msgid "Final checks" +msgstr "Zadnje preverbe" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "Izberite za brisanje odvečnih datotek varnostne kopije iz vašega strežnika, potem ko se varnostno kopiranje zaključi (če ne izberete, potem odposlane datoteke ostanejo na voljo tudi lokalno, te datoteke pa niso del limitov hrambe)." + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "Spustite šifrirane datoteke (db.gz.crypt datoteke) podatkovne baze na to mesto, da jih naložite na dešifriranje" + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "Strežniška pot do vašega direktorija wp-content: %s" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "Neobdelana zgodovina varnostnih kopij" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "Pokaži neobdelano varnostno kopijo in seznam datoteke" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "Procesiram datoteke - prosimo, počakajte..." + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "Prosimo, obrnite se na pogosto uporabljena vprašanja za pomoč v zvezi s tem." + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "Vaša Wordpress namestitev ima težave s prikazovanjem dodatnih presledkov. To lahko okvari varnostne kopije, ki jih prenesete iz tega mesta. " + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "Neuspeh pri odpiranju datoteke podatkovne baze." + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "Neuspeh pri zapisovanju dešifrirane podatkovne baze v datotečni sistem." + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "Poznane varnostne kopije (neobdelane)" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "Ne moremo oštevilčiti datoteke v tem direktoriju." + +#: restorer.php:939 +msgid "Files found:" +msgstr "Najdene datoteke:" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "Uporaba direktorija iz varnostne kopije: %s" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "Zahtevan pogon (%s) tabele ni prisoten - spreminjam v MyISAM." + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "To je videti kot selitev (varnostna kopija iz spletnega mesta z drugim naslovom/URL), vendar niste izbrali možnosti za iskanje in zamenjavo podatkovnih baz. To je ponavadi napaka." + +#: admin.php:4908 +msgid "file is size:" +msgstr "Datoteka velikosti:" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "Pojdite sem za več informacij." + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "Nekatere datoteke se še vedno prenašajo ali se procesirajo - prosimo, počakajte." + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "Ta serija varnostne kopije je iz drugega spletnega mesta - to ni obnova, ampak selitev. Da vam to uspe, potrebujete dodatek Selivec." + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "Uporabljeni časovni pas je tisti iz nastavitev Wordpress, v Nastavitve -> Splošno" + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "Vnesite v obliki UU:MM (npr. 14:22)." + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "Neuspelo nalaganje %s" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "Neuspela prijava %s" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "Ni videti, da bi bili avtentificirani z %s" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "Neuspeh pri dostopu %s med brisanjem (glejte poročilo za več informacij)" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "Ni videti, da bi bili avtentificirani z %s (med brisanjem)" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "Dropbox napaka: %s (glejte poročilo za več informacij)" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "Napaka - neuspeh pri prenosu datoteke iz %s" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "Napaka - ne obstaja takšna datoteka na %s" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "%s napaka" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "%s napaka - neuspeh pri nalaganju datoteke" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "%s napaka - neuspelo ponovno sestavljanje delčkov" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "%s avtentifikacija ni uspela" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "Napaka: %s" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "Direktorij varnostne kopije obstaja, a ni zapisljiv." + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "Direktorij varnostne kopije ne obstaja." + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "Opozorilo: %s" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "Zadnje varnostno kopiranje:" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "Naleteli smo na zelo veliko datoteko: %s (velikost: %s Mb)" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "%s neberljiva datoteka - ni je mogoče varnostno kopirati" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "Tabela %s ima zelo veliko vrstic (%s) - upamo, da vam je vaš ponudnik spletnega gostovanja dal na voljo dovolj sredstev za varnostno kopiranje" + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "Pripetila se je napaka ob zapiranju zaključne datoteke podatkovne baze." + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "Pripetena opozorila:" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "Varnostno kopiranje je očitno uspelo (z opozorili) in je sedaj končano" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "Razpoložljivega prostora na disku je zelo malo - ostaja le %s Mb" + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "Novo spletno mesto:" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "NAPAKA: URL spletnega mesta je že v uporabi." + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "Preseljeno mesto (iz UpdraftPlus)" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "Vnesite podrobnosti o položaju tega novega spletnega mesta v omrežni namestitvi:" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "Potrebne informacije za nadaljevanje:" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "Aktivirana tema omrežja:" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "Procesirani vtičniki:" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "Preverite dovoljenja vaše datoteke: Nismo mogli uspešno ustvariti direktorija in vstopiti vanj:" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "Nekateri strežniki oglašujejo šifriran FTP, ko je na voljo, a se nato izteče (po dolgem času), ko ga poskušate uporabiti. Če se vam to dogaja, pojdite v \"Napredne možnosti\" in tam izklopite SSL." + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "PHP namestitev vašega strežnika ne vsebuje potrebnega modula (%s). Prosimo, kontaktirajte podporo vašega ponudnika spletnega gostovanja, da ga omogočijo." + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "Prosimo, preverite poverilnice dostopa." + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "Napaka, sporočena z %s, je bila:" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "Prosimo, priskrbite zahtevane informacije in nato nadaljujte." + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "Ne moremo spustiti tabel, zato jih namesto tega brišemo (%s)" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "Ne moremo ustvariti novih table, zato preskakujemo ta ukaz (%s)" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "Informacije o spletnem mestu:" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "Vaš uporabnik podatkovne baze nima dovoljenja za ustvarjanje tabel. Poskusili bomo obnovitev s preprostim praznjenjem tabel; to bi moralo delovati, če a) obnavljate Wordpressovo različico z enako strukturo podatkovne baze in b) vaša uvožena podatkovna baza ne vsebuje tabel, ki niso že prisotne v uvažanem spletnem mestu." + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "Opozorilo:" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "Uporabljate Wordpress omrežje - vendar vaša varnostna kopija ni takšne vrste." + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "Preskakovanje obnove jedra Wordpress ob uvažanju samostojnega spletnega mesta v omrežno namestitev. Če imate kaj nujnega v vašem Wordpress direktoriju, potem boste morali te vsebine dodati ročno iz zip datoteke." + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "PHP namestitev vašega strežnika ni vsebovala zahtevanih (za %s) modul (%s). Prosimo, kontaktirajte podporo vašega ponudnika spletnega gostovanja, da ga omogoči." + +#: admin.php:596 +msgid "Close" +msgstr "Zapri" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "Nepričakovan odgovor:" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "Za pošiljanje na več naslovov, vsak naslov ločite z vejico." + +#: admin.php:576 +msgid "PHP information" +msgstr "PHP informacija" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "najden izvršilni zip:" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "prikaži PHP informacijo (phpinfo)" + +#: admin.php:2627 +msgid "Get it here." +msgstr "Pridobite ga tukaj." + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "Potem poskusite dodatek Selivec. Ko ga boste enkrat uporabili, boste prihranili ceno nakupa glede na čas, ki bi ga porabili, če bi to delali ročno." + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "Ali želite seliti ali klonirati/podvojiti spletno mesto?" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "Preberite ta članek, da korak za korakom vidite, kako je narejeno." + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "Preseli spletno mesto" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "Brišem... prosimo počakajte, da se komunikacija z oddaljeno shrambo konča." + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "Izbriši tudi iz oddaljene shrambe" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "Zadnje UpdraftPlus.com novice:" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "Kloniraj/preseli" + +#: admin.php:2304 +msgid "Premium" +msgstr "Premium" + +#: admin.php:2305 +msgid "News" +msgstr "Novice" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "Najdena je serija varnostne kopije" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "%s - ne moremo varnostno kopirati tega subjekta; ustrezen direktorij ne obstaja (%s)" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "Povezava do RSS" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "Povezava do bloga" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "Naročite se na blog UpdraftPlus, da dobite zadnje novice in ponudbe" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "Preizkušamo %s nastavitve..." + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "Ali jih lahko ročno prenesete v vaš UpdraftPlus direktorij (običajno wp-content/updraft), npr. preko FTP, in nato uporabite zgornjo povezavo \"ponovno iskanje\"." + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "Vklopljen je razhroščealni način UpdraftPlus. Morda boste na tej strani videli UpdraftPlus obvestila o razhroščevanju, pa tudi od drugih nameščenih vtičnikov. Prosimo, prepričajte se, da so opažena obvestila od UpdraftPlus, preden se odločite za podporo." + +#: admin.php:880 +msgid "Notice" +msgstr "Obvestilo" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "Pripetene napake:" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "Ponovno iskanje (varnostnih kopij, ki ste jih ročno naložili v interno hrambo)..." + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "Začeli smo iskati ta subjekt" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "Shrani na" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "\"%s\" nima primarnega ključa, na vrstici %s je potrebna ročna sprememba." + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "vrstice: %d" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "Porabljen čas (sekunde):" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "Napake:" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "Poteka SQL posodobitev ukazov:" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "Narejene spremembe:" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "Preučene vrstice:" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "Preučene tabele:" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "Ni mogoče pridobiti seznama tabel" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "Iskanje in zamenjava podatkovne baze: zamenjaj %s v odlagališču varnostne kopije z %s" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "Opozorilo: URL (%s) baze podatkov spletnega mesta je drugačen od pričakovanega (%s)" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "Nič ni za narediti: URL spletnega mesta je že: %s" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "Napaka: nepričakovan prazen parameter (%s, %s)" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "Ta možnost ni bila izbrana." + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "Podatkovna baza: išči in zamenjaj URL spletnega mesta" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "Neuspeh: nismo razumeli rezultat %s operacije." + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "Neuspeh: %s operacija se mi mogla začeti." + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "(nauči se več)" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "Išči in zamenjaj lokacijo spletnega mesta podatkovne baze (seli)" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "Vsi sklici na lokacijo spletnega mesta bodo zamenjani s trenutnim URL vašega spletnega mesta, ki je: %s" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "Nalaganje na blog" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "Nujni vtičniki" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "Nimate dovoljenja za dostop do te strani." + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "Nimate zadostnih dovoljenj za dostop do te strani." + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "Omrežna namestitev" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "začenjati iz naslednjič je" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "Neuspeh: Vrata morajo biti število." + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "geslo" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "uporabniško ime" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "ime gostitelja" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "Na katero mesto spremeniti direktorij po prijavi - to je pogosto relativno glede na vaš domači direktorij." + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "Pot direktorija" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "Geslo" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "Vrata" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "Gostitelj" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "%s Napaka: Neuspel prenos" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "Preverite dovoljenja za vašo datoteko: Nismo mogli uspešno ustvariti in vnesti:" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "Ni najdenih %s" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "Privzeto v uporabi je eksplicitno šifriranje. Za vsiljenje implicitnega šifriranja (vrata 990), spodaj dodajte :990 v vaš FTP strežnik." + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "Na voljo je šifrirani FTP, ki ga bomo samodejno najprej poskusili (pred nešifriranim, če ne bo uspešen), razen če ga onemogočite z uporabo naprednih možnosti. Gumb \"Preizkusi FTP prijavo\" vam bo povedal, katero vrsto povezave uporabljate." + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "Ni varnostnih kopij %s direktorijev: nič ni bilo najdeno za kopiranje" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "Pri vnosu bodite previdni - če vnesete / potem bo res poskušalo narediti zip vašega celotnega strežnika." + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "Če jo uporabljate, vnesite absolutno pot (ni relativna vaši Wordpress namestitvi)." + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "Če niste prepričani, čemu služi ta možnost, potem je nočete in jo izklopite." + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "Vstopi v direktorij:" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "Več datotek" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "Wordpress jedro (vključno z dodatki v vaš root Wordpress direktorij)" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "Zgornje datoteke obsegajo vse v namestitvi Wordpress." + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "Prepiši wp-config.php" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "Jedro Wordpress" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "Neuspeh: v ta direktorij nismo uspeli umestiti datoteke - prosimo, preverite svoje poverilnice." + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "Neuspelo" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "WebDAV URL" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "Neuspelo lokalno zapisovanje: Napaka pri prenosu" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "Napaka pri odpiranju oddaljene datoteke: Neuspešen prenos" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "Delček:Nastala je %s A %s napaka" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "Nismo našli %s nastavitev" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "Neuspeh: uspešno smo se prijavili, a nismo uspeli ustvariti datoteke v danem direktoriju." + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "Uspeh: uspešno smo se prijavili in potrdili zmožnost ustvarjanja datoteke v danem direktoriju (vrsta prijava:" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "Neuspeh: ni se nam uspelo prijaviti s temi poverilnicami." + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "Neuspeh: Ni bilo danih strežnikovih podrobnosti." + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "Mora že obstajati" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "Če želite šifriranje (npr. shranjujete občutljive poslovne podatke), potem so na voljo dodatki." + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "V običajnem UpdraftPlus je podprt samo nešifriran FTP." + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "Ime vašega %s računa: %s" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "čeprav del vrnjenih informacij ni bil pričakovan - vaš korist je lahko različna" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "avtentificirali ste vaš %s račun" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "za to obstaja dodatek" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "Če ustvarjate varnostno kopijo več spletnih mest v isti Dropbox in jih želite organizirati v podmape, potem" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "Varnostne kopije so shranjene v" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "Želite uporabljati podmape?" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "napaka: neuspeh pri nalaganju datoteke v %s (glejte poročilo za več informacij)" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "Ni videti, da bi se avtentificirali v Dropbox" + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "Komunikacija z %s ni bila šifrirana." + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "Komunikacija z %s je bila šifrirana." + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "Dostopali smo do prenosnih podatkov in v njih ustvarili datoteke." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "Uspešno smo dostopali do prenosnih podatkov, vendar poskus ustvarjanja datoteke ni uspel." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "Neuspeh" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "Neuspeh: Nismo mogli uspešno dostopati do takšnih prenosnih podatkov ali jih ustvariti. Prosimo, preverite vaše dostopne poverilnice, in če so pravilne, preizkusite drugo ime prenosnih podatkov (drug uporabnik %s je morda že izbral vaše ime)." + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "Regija" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "Neuspeh: Ni danih podrobnosti prenosnih podatkov." + +#: methods/s3.php:961 +msgid "API secret" +msgstr "Skrivni API" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "Vnesite samo ime prenosnih podatkov ali prenosni podatek in pot. Primeri: mojpodatek, mojpodatek/mojapot" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "%s lokacija" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "%s skrivni ključ" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "%s dostopni ključ" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "Če vidite napake z zvezi s SSL certifikati, potem prosimo, če tukaj poiščete pomoč." + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "Pridobite vaš dostopni ključ in skrivni ključ iz vaše %s konzole, nato izberite (globalno izvirno - vsi %s uporabniki) ime prenosnih podatkov (črke in števila) (in pot po izbiri) za uporabo shrambe. Prenosni podatki bodo ustvarjeni, če še ne obstajajo." + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "%s Napaka: Neuspel dostop do prenosnih podatkov %s. Preverite svoja dovoljenja in poverilnice." + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "%s Napaka: Neuspel prenos %s. Preverite svoja dovoljenja in poverilnice." + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "%s napaka ponovnega sestavljanja (%s): (oglejte si poročilo za več podrobnosti)" + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "%s nalaganje (%s): ponovno sestavljanje ni uspelo (oglejte si poročilo za več podrobnosti)" + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "%s delček %s: nalaganje ni uspelo" + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "%s napaka: datoteka %s se je nepričakovano skrajšala" + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "%s nalaganje: pridobivanje uploadID za večdelno nalaganje ni uspelo - glejte poročilo za več informacij" + +#: methods/email.php:69 +msgid "Note:" +msgstr "Opomba:" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "Varnostna kopija Wordpressa" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "Dostopali smo do kontejnerja in v njem uspeli ustvariti datoteko." + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "Cloud Files napaka - dostopali smo do kontejnerha, a v njem nismo uspeli ustvariti datoteke" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "Neuspeh: Ni danih podrobnosti kontejnerja." + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "Uporabniško ime" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "API ključ" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "Neuspeh: Ni danih %s." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "%s modul UpdraftPlus's zahteva %s. Prosimo, ne vlagajte zahtev po podpori, saj ne obstajajo alternative." + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "Cloud Files kontejner" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "Cloud Files API ključ" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "Cloud Files uporabniško ime" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "UK" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "US (privzeto)" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "US ali UK oblak" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "Prav tako preberite tudi ta pomembna pogosto zastavljena vprašanja." + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "Pridobite svoji API ključ iz vaše Rackspace Cloud konzole (preberite navodila tukaj), nato izberite ime kontejnerja za uporabo shrambe. Kontejner bo ustvarjen za vas, če še ne obstaja." + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "Preizkus %s nastavitev" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "Napaka pri prenosu oddaljene datoteke: Neuspel prenos (" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "Napaka pri odpiranju lokalne datoteke: Neuspel prenos" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "Cloud Files napaka - neuspelo nalaganje datoteke" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "%s Napaka: Neuspelo nalaganje" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "%s Napaka: Neuspelo odpiranje lokalne datoteke" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "Cloud Files napaka - neuspelo ustvarjanje in dostop do kontejnerja" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "Cloud Files avtentifikacija ni uspela." + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "Potem ko ste shranili vaše nastavitve (s klikom na \"Shrani spremembe\" spodaj), pridite nazaj in kliknite to povezavo, da dokončate avtentifikacijo z Googlom." + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "Avtentifikacija z Googlom" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "Skrivni klient" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "Če Google kasneje prikaže sporočilo \"invalid_client\", potem tukaj niste vnesli veljavnega ID klienta." + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "ID klienta" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "Ko ste pozvani je potrebno kot avtoriziran preusmeritveni URI dodati naslednje (pod \"Več možnosti\")" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "Kot vrsto aplikacije, izberite \"Spletne aplikacije\"." + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "Za obsežnejšo pomoč, vključno s posnetki zaslona, sledi tej povezavi. Spodnji opis zadošča naprednejšim uporabnikom." + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "%s je dobra izbira, saj UpdraftPlus podpira nalaganje v delčkih - ne glede na to, kako veliko je vaše spletno mesto, ga UpdraftPlus lahko postopoma naloži, tega pa mu ne preprečujejo izteki časa." + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "Račun ni avtoriziran." + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "Neuspelo nalaganje na %s" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "Račun je poln: vaš %s račun ima samo še %d bajtov razpoložljivega prostora, datoteka, ki jo nalagate, pa ima %d bajtov" + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "Nismo še prejeli Googlovega žetona za dostop - potrebno je avtorizirati ali ponovno avtorizirati vašo povezavo z Google Drive." + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "avtentificirali ste vaš %s račun." + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "Uspeh" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "Vaša %s kvota uporabe: %s %% uporabljeno, %s na voljo" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "Avtorizacija ni uspela" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "Od Googla nismo prejeli obnovitvenega žetona. To pogosto pomeni, da ste napačno vnesli skrivnega klienta ali se še niste ponovno avtentificirali (spodaj), ko ste ga popravili. Ponovno ga preverite, nato sledite povezavi za ponovno avtentifikacijo. Če kljub vsemu to ne pomaga, uporabite napreden način, da zbrišete vse vaše nastavitve, ustvarite nov ID Googlovega klienta/skrivnosti ter pričnete znova." + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "sledite povezavi, da ga prejmete" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "%s podpora je na voljo kot dodatek" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "Nimate nameščenega %s dodatka UpdraftPlus - dobite ga na %s" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "Potrebno je ponovno avtentificirati z %s, saj obstoječe poverilnice ne delujejo." + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "OK" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "Predpona tabele se je spremenila: v skladu s tem spreminjamo %s polje(a) tabele:" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "Končano: procesirane vrstice: %d v %.2f sekundah" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "Poizvedba podatkovne baze, ki je tekla, je bila:" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "se bo obnovilo kot:" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "Stara predpona tabele:" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "Varnostna kopija od:" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "Dostop do podatkovne baze: direkten MySQL dostop ni na voljo, zato se vračamo nazaj na wpdb (to bo znatno počasneje)" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "Neuspešno odpiranje datoteke podatkovne baze" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "Neuspešno iskanje datoteke podatkovne baze" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "Opozorilo: na vašem strežniku je aktiven PHP safe_mode. Izteki časa so precej bolj verjetni. Če se to zgodi, boste morali datoteko ročno obnoviti preko phpMyAdmin ali druge metode." + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "wp-config.php iz varnostne kopije: obnavljanje (na zahtevo uporabnika)" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "wp-config.php iz varnostne kopije: obnovil se bo kot wp-config-backup.php" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "Neuspešno izpisovanje dešifrirane podatkovne baze v datotečni sistem" + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "Neuspešno ustvarjanje začasnega direktorija" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "Neuspešno brisanje delovnega direktorija po obnovitvi." + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "Ne moremo izbrisati starega direktorija." + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "Čiščenje odvečnih datotek..." + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "Obnovitev podatkovne baze (na velikih spletnih mestih lahko vzame veliko časa - če se čas izteče (kar se dogaja, če je vaš ponudnik spletnega gostovanja nastavil gostovanje z omejenimi sredstvi), potem bo potrebna druga metoda, kot npr. phpMyAdmin)..." + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "Podatkovna baza je uspešno dešifrirana." + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "Dešifriram podatkovno bazo (lahko traja nekaj časa)..." + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "Razpakiravam varnostno kopijo..." + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "Kopiranje tega subjekta ni uspelo." + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "Datoteka varnostne kopije ni na voljo." + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "UpdraftPlus ne more neposredno obnoviti subjekta te vrste. Potrebno ga je ročno obnoviti." + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "Ne najdem ene datoteke za obnovitev" + +#: admin.php:5009 +msgid "Error message" +msgstr "Sporočilo o napaki" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "Podatki varnostne kopije ne vsebujejo informacije o ustrezni velikosti te datoteke." + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "Pričakovana velikost arhiva:" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "Če boste zahtevali podporo, prosimo, vključite te informacija:" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "PREKINITEV: Ne najdemo informacij o subjektu za obnovo." + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "UpdraftPlus Obnovitev: Napredek" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "Ta varnostna kopija ne obstaja v zgodovini varnostnih kopij - obnovitev je preklicana. Časovni žig:" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "Po pritisku na ta gumb, se bo pojavila možnost izbire komponent, ki jih želite obnoviti" + +#: admin.php:4572 +msgid "Press here to download" +msgstr "Za prenos pritisni tukaj" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "Izbriši to serijo varnostne kopije" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "Dobre novice: Komunikacija vašega spletnega mesta z %s je lahko šifrirana. Če vidite kakšne napake, povezane s šifriranjem, potem poglejte v \"Napredne nastavitve\" za več pomoči." + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "PHP/Curl namestitev na vašem strežniku ne podpira https dostopa. Ne moremo dostopati do %s brez te podpore. Prosimo, kontaktirajte podporo vašega ponudnika spletnega gostovanja. %s zahteva Curl+https. Prosimo, ne postavljajte zahtev po podpori, saj ne obstajajo nobene alternative." + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "PHP/Curl namestitev na vašem strežniku ne podpira https dostopa. Komunikacija z %s ne bo šifrirana. Prosite vašega ponudnika spletnega gostovanja, da namesti Curl/SSL, saj bo s tem povezava postala šifrirana (preko dodatka)." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "PHP namestitev na vašem strežniku ni vsebovala potrebnega modula (%s). Prosimo, kontaktirajte podporo vašega ponudnika spletnega gostovanja." + +#: admin.php:4062 +msgid "Save Changes" +msgstr "Shrani spremembe" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "Izbira te možnosti zmanjša vašo zaščito s preprečitvijo, da bi UpdraftPlus uporabljal SSL za avtentifikacijo in šifrirani prenos, kjer je to na voljo. Imejte v mislih, da nekateri ponudniki oblačne shrambe tega ne dovoljujejo (npr. Dropbox), tako da pri teh ponudnikih nastavitve ne bodo imele učinka." + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "Povsem onemogoči SSL, kjer je to mogoče" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "Imejte v mislih, da pri uporabi SSL avtentifikacije niso nujne vse oblačne metode varnostnega kopiranja." + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "Izbira te možnost zmanjša vašo varnost z onemogočanjem UpdraftPlud, da bi preveril identiteto šifriranih strani, na katere se povezuje (npr. Dropbox, Google Drive). To pomeni, da bo UpdraftPlus uporabil SSL samo pri šifriranju prometa, ne pa za avtentifikacijo." + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "Ne preveri SSL certifikata" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "Privzeto UpdraftPlus uporablja lastno shrambo SSL certifikatov za preverjanje identite oddaljenih spletnih mest (da se prepriča, da komunicira z resničnim Dropboxom, Amazonom S3, idr., ne pa napadalcem). Skrbimo za posodobitev. Kakorkoli, če vam prikaže SSL napako, potem lahko pomaga izbira te možnosti (UpdraftPlus bo namesto tega uporabil zbirko vašega strežnika)." + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "Uporabite SSL certifikate strežnika" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "Če to ne bo uspelo, preverite dovoljenja na vašem strežniki ali jih spremenite v drug direktorij, ki ga bo proces vašega strežnika lahko zapisal." + +#: admin.php:3697 +msgid "click here" +msgstr "klikni tukaj" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "ali za resetiranje te možnosti" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "Izbran direktorij varnostne kopije je zapisljiv, kar je v redu." + +#: admin.php:4009 +msgid "Backup directory" +msgstr "Direktorij varnostne kopije" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "Izbriši lokalno varnostno kopijo" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "klikni za prikaz nekaj nadaljnjih možnosti; prezrite to, razen, če imate problem ali ste radovedni." + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "Prikaži napredne nastavitve" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "Napredne nastavitve" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "Način razhroščevanja" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "Napredne / Razhroščevalne nastavitve" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "Zahtevam začetek varnostnega kopiranja..." + +#: admin.php:591 +msgid "Cancel" +msgstr "Prekliči" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "Noben" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "Izberite oddaljeno shrambo" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "Ročno dešifriraj datoteko varnostne kopije podatkovne baze" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "Fraza za šifriranje podatkovne baze" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "E-pošta" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "Zgornji direktoriji so vse, razen jedra Wordpress, ki ga lahko prenesete na novo z WordPress.org." + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "Izvzemi te:" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "Katerikoli drugi direktoriji, najdeni znotraj wp-content" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "Vključi v varnostno kopijo datotek" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "npr. če je vaš strežnik čez dan obremenjen in bi želeli izvesti ponoči" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "Za določitev časa, ob katerem se bo izvedla varnostna kopija," + +#: admin.php:3683 +msgid "Monthly" +msgstr "Mesečno" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "Vsakih štirinajst dni" + +#: admin.php:3681 +msgid "Weekly" +msgstr "Tedensko" + +#: admin.php:3680 +msgid "Daily" +msgstr "Dnevno" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "Prenašam poročilo" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "Mapa obstaja, vendar vaš spletni strežnik nima dovoljenja za pisanje vanjo." + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "Mapa je bila ustvarjena, vendar smo morali za možnost zapisovanja spremeniti dovoljenja njenih datotek na 777 (svetovno-zapisljiv). Preverite pri ponudniku spletnega gostovanja, da to ne bo povzročilo kakšnih problemov." + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "Zahteva datotečnemu sistemu za ustvarjanje direktorija ni uspela." + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "Izbriši" + +#: admin.php:3418 +msgid "show log" +msgstr "prikaži poročilo" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "To bo izbrisalo vse vaše UpdraftPlus nastavitve - ali ste prepričani, da želite to storiti?" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "štejte" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "Imejte v mislih, da to štetje temelji na tem, kaj je bilo ali ni bilo izvzeto ob zadnji shranitvi možnosti." + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "Skupni (nestisnjeni) podatki na disku:" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "Ne" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "Da" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "%s različica:" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "Trenutna uporaba pomnilnika" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "Maksimalna uporaba pomnilnika" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "Spletni strežnik:" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "Prosimo, preverite UpdraftPlus Premium ali samostojen dodatek Multisite." + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "Ali potrebujete podporo za Wordpress Multisite?" + +#: admin.php:2654 +msgid "Multisite" +msgstr "Multisite" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "Izvedite enkratno varnostno kopiranje" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "Pred obnovitvijo preberite ta koristen članek o uporabnih stvareh." + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "Z dodatkom Selitelj Lahko poiščete in zamenjate vašo podatkovno bazo (za selitev spletne strani na novo lokacijo/URL - sledite tej povezavi za več informacij" + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "%s možnosti obnovitve:" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "Morali ga boste ročno obnoviti." + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "Naslednjega subjekta ne moremo samodejno obnoviti: \"%s\"." + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "Vaš spletni strežnik deluje v t.i. aktivnem načinu PHP safe_mode." + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "Izberite komponente za obnovitev" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "Obnovitev bo zamenjala teme, vtičniki, naložene datoteke, podatkovne baze in/ali druge direktorije tega spletnega mesta (v skladu s tem, kar vsebuje serija varnostne kopije in vaša izbira)." + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "Obnovi varnostno kopijo iz" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "Obnovi varnostno kopijo" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "Izbriši serijo varnostne kopije" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "Napak pri prenosu: strežnik nam je poslal odgovor, ki ga nismo razumeli." + +#: admin.php:570 +msgid "You should:" +msgstr "Morali bi:" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "Napaka:" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "izračunavam..." + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "UpdraftPlus - Naložite daoteke varnostne kopije" + +#: admin.php:3020 +msgid "refresh" +msgstr "osveži" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "Prostor na spletnem strežniku, ki ga uporablja UpdraftPlus" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "Google Drive" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "Če to uporabljate, potem izklopite način Turbo/Road." + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "Spletni brskalnik Opera" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "Več opravil:" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "Prenesite nazadnje spremenjeno poročilo" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "(nič še ni za poročati)" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "Sporočilo zadnjega poročila" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "Obnovitev" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "Kopiraj zdaj" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "Baza podatkov" + +#: admin.php:229 +msgid "Files" +msgstr "Datoteke" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "Naslednje razporejene varnostne kopije" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "V času, ko se datotek varnostno kopirajo" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "Nobeno opravilo trenutno ni razporejeno" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "To skrbniško okolje zelo uporablja JavaScript. Potrebno ga je aktivirati v vašem brskalniku ali pa uporabiti JavaScript združljiv brskalnik." + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "Opozorilo JavaScript" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "Izbriši stare direktorije" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "Trenuten limit je:" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "Vaša varnostna kopija je obnovljena." + +#: admin.php:2310 +msgid "Version" +msgstr "Različica" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "Domača stran glavnega razvijalca" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "Počistili smo vaše nastavitve." + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "Ustvarili smo direktorij varnostne kopije." + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "Nismo mogli ustvariti direktorija varnostne kopije" + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "Odstranjevanje starega direktorija zaradi nečesa ni uspelo. Morda želite to narediti ročno." + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "Stari direktoriji so uspešno odstranjeni." + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "Odstranite stare direktorije" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "Vrnite se na nastavitev UpdraftPlus" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "Dejanja" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "Obnovitev je uspela!" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "Neprepoznavna oblika zapisa datoteke - ni videti kot šifrirana podatkovna baza, ustvarjena z UpdraftPlus" + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "Neprepoznavna oblika zapisa datoteke - ni videti kot datoteka, ustvarjena z UpdraftPlus" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "Lokalne kopije ni na voljo." + +#: admin.php:2072 +msgid "Download in progress" +msgstr "Prenos v teku" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "Datoteka je pripravljena." + +#: admin.php:2043 +msgid "Download failed" +msgstr "Prenos ni uspel" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "Napaka" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "Nismo mogli najti opravila - morda se je že končalo?" + +#: admin.php:1854 +msgid "Job deleted" +msgstr "Opravilo izbrisano" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "OK. Kmalu bi morali videti aktivnost v spodnjem polju \"Zadnje poročilo\"." + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "Nič še ni za poročati" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "Prosimo, preberite ta pogosto vprašanja in odgovore, če imate težave pri varnostne kopiranju." + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "Vaša spletna stran je gostovana na %s spletnem strežniku." + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "UpdraftPlus uradno ne podpira različic Wordpressa pred %s. Morda lahko delujejo, vendar imejte v mislih, da ni na voljo podpore v primeru težav, dokler ne nadgradite Wordpressa." + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "Na voljo imate manj kot %s prostora na disku, ki ste ga za UpdraftPlus nastavili za uporabo pri ustvarjanju varnostnih kopij. UpdraftPlusu lahko kmalu zmanjka prostora. Za razrešitev teh težav kontaktirajte vzdrževalca vašega strežnika (npr. vašega ponudnika spletnega gostovanja)." + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "Opozorilo" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "Dodatki / Pro podpora" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "Nastavitve" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "Dovoljene datoteke" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "Ne moremo ustvariti %s zip. Oglejte si vaše poročilo za več informacij." + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "Neskončna rekurzija: oglejte si vaše poročilo za več informacij" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "Preverite UpdraftPlus.Com za pomoč, dodatke ali podporo" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "Potrebujete več funkcij ali podporo? Preverite UpdraftPlus Premium" + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "Prosimo, pomagajte UpdraftPlus s pozitivno oceno na wordpress.org" + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "Vam je všeč UpdraftPlus in si lahko vzamete eno minuto?" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "Znate prevajati? Želite izboljšati UpdraftPlus za govorce vašega jezika?" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "Ne najdemo datoteke" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "Uporabljen dešifrirni ključ:" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "Dešifriranje ni uspelo. Razlog je najbrž v uporabi napačnega ključa." + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "Dešifriranje ni uspelo. Datoteka podatkovne baze je šifrirana, vendar niste vnesli šifrirnega ključa." + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "Nismo mogli odpreti datoteke varnostne kopije za zapisovanje" + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "Nismo mogli shraniti zgodovine varnostnih kopij, ker nimamo matrike varnostne kopije. Varnostna kopija najbrž ni uspela." + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "Direktorija nismo mogli brati." + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "Direktorij (%s) varnostne kopije ni zapisljiv ali ne obstaja." + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "Varnostna kopija Wordpressa je končana" + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "Poskus varnostne kopije se očitno ni uspešno končal." + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "Varnostna kopija je očitno uspela in je sedaj končana" + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "Pri šifriranju podatkovne baze se je pojavila napaka šifriranja. Šifriranje preklicano." + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "Nismo mogli ustvariti datotek v direktoriju varnostne kopije. Kopiranje je preklicano - preverite vaše UpdraftPlus nastavitve." + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "Drugo" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "Naložene vsebine" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "Teme" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "Vtičniki" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "Na najdemo poročil." + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "Poročila ne moremo brati." + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "UpdraftPlus opombe:" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "Varnostne kopije UpdradtPlus" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-sv_SE.mo b/plugins/updraftplus/languages/updraftplus-sv_SE.mo new file mode 100644 index 0000000..c810251 Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-sv_SE.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-sv_SE.po b/plugins/updraftplus/languages/updraftplus-sv_SE.po new file mode 100644 index 0000000..c5e1091 --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-sv_SE.po @@ -0,0 +1,6109 @@ +# Translation of UpdraftPlus in Swedish +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2015-09-25 14:36:01+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: sv_SE\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "" + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "" + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "" + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "" + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "" + +#: addons/webdav.php:91 +msgid "Path" +msgstr "" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "" + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "" + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "" + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "" + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "" + +#: admin.php:2310 +msgid "FAQs" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "" + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "" + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "" + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "" + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "" + +#: methods/ftp.php:355 +msgid "login" +msgstr "" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "" + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "" + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "" + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "" + +#: admin.php:2604 +msgid "Now" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "" + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "" + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "" + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "" + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "" + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "" + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "" + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "" + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "" + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "" + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "" + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "" + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "" + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "" + +#: admin.php:3420 +msgid "stop" +msgstr "" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "" + +#: admin.php:3092 +msgid "this backup set" +msgstr "" + +#: admin.php:3020 +msgid "calculate" +msgstr "" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "" + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "" + +#: admin.php:601 +msgid "Saving..." +msgstr "" + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:557 +msgid "Fetching..." +msgstr "" + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "" + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "" + +#: admin.php:2884 +msgid "Dismiss" +msgstr "" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "" + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "" + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "" + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "" + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "" + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "" + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "" + +#: admin.php:3860 +msgid "File Options" +msgstr "" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "" + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "" + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "" + +#: admin.php:5157 +msgid "settings" +msgstr "" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "" + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "" + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "" + +#: admin.php:442 +msgid "Extensions" +msgstr "" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "" + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "" + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "" + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "" + +#: addons/azure.php:524 +msgid "container" +msgstr "" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "" + +#: addons/azure.php:523 +msgid "optional" +msgstr "" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "" + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "" + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "" + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "" + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "" + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "" + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "" + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "" + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "" + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "" + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "" + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "" + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "" + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "Du har inte en komplett installation av UpdraftPlus - vänligen avinstallera och installera på nytt. Mest troligt har WordPress begått ett misstag vid kopieringen av tilläggets filer." + +#: restorer.php:767 +msgid "Deferring..." +msgstr "Skjuter upp..." + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "eller för att konfigurera mer komplexa scheman" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "Är du säker på att du vill ta bort %s från UpdraftPlus?" + +#: admin.php:3081 +msgid "Deselect" +msgstr "Avmarkera" + +#: admin.php:3080 +msgid "Select all" +msgstr "Välj alla" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "Aktiviteter att utföra på valda backuper" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "Tryck här för att söka i dina fjärrlagringsmetoder för befintliga backuper (från vilken sajt som helst, om de lagras i samma mapp)." + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "Arbetar..." + +#: admin.php:634 +msgid "For backups older than" +msgstr "För backuper äldre än" + +#: admin.php:633 +msgid "week(s)" +msgstr "vecka/veckor" + +#: admin.php:632 +msgid "hour(s)" +msgstr "timme/timmar" + +#: admin.php:631 +msgid "day(s)" +msgstr "dag(ar)" + +#: admin.php:630 +msgid "in the month" +msgstr "i månad" + +#: admin.php:629 +msgid "day" +msgstr "dag" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "(så många du vill)" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "Lägg till extra regel för bevarande..." + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "Denna databas måste köras igång på MySQL version %s eller senare." + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "Detta problem orsakas vid försök att återställa en databas på en väldigt gammal MySQL-version som inte är kompatibel med källdatabasen." + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "Du har för närvarande inget utrymme på UpdraftPlus Vault" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "Du måste uppgradera MySQL för att kunna använda den här databasen." + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "Databas-backupen använder MySQL-funktioner som inte finns tillgängliga i den gamla MySQL-versionen (%s) som denna webbplats körs på." + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "Inga annonslänkar på UpdraftPlus inställningssida" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "UpdraftPlus-katalogen i wp-content/plugins har mellanslag i namnet; WordPress gillar inte detta. Du bör döpa om katalogen till wp-content/plugins/updraftplus för att lösa detta problem." + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "Vet du inte vilken e-postadress du använt, eller har du gömt ditt lösenord?" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "Ange ditt UpdraftPlus.com e-post/lösen här för att ansluta:" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "Läs Frågor & Svar här." + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "Kryssa denna ruta för att använda Amazons kryptering på serversidan" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "Kryptering på serversidan" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "Om du har glömt ditt lösenord, gå hit för att ändra ditt lösenord på updraftplus.com." + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "Gå till inställningarna för fjärrlagring för att ansluta." + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "%s har valts för fjärrlagring, men du är för närvarande inte ansluten." + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "Betalning kan göras i USA-dollar, Euro eller GBP, via kort eller PayPal." + +#: admin.php:607 +msgid "Update quota count" +msgstr "Uppdatera utrymmesberäkningen" + +#: admin.php:606 +msgid "Counting..." +msgstr "Räknar..." + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "Kopplar ifrån..." + +#: admin.php:603 +msgid "Connecting..." +msgstr "Ansluter..." + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "Uppdatera nuvarande status" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "Skaffa mer utrymme" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "Nuvarande användning:" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "Du kan skaffa mer utrymme här" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "%s Fel: du har inte tillräckligt lagringsutrymme ledigt (%s) för att ladda upp detta arkiv (%s)." + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "Koppla ifrån" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "Utrymme:" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "Vault-ägare" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "Snyggt! Det finns inget mer att ställa in." + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "Denna webbplats är ansluten till UpdraftPlus Vault." + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "Du ä inte ansluten till UpdraftPlus Vault." + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "Gå hit för hjälp" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "E-post" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "Tillbaka..." + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "Prenumerationer kan avslutas när som helst." + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "%s per kvartal" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "Läs mer om detta här." + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "UpdraftPlus Vault bygger på Amazons världsledande datacentraler, med redundant datalagring för att åstadkomma 99,9999999999% pålitlighet." + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "Redan köpt utrymme?" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "Visa alternativen" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "Förstagångsanvändare?" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "Tryck en knapp för att starta." + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "UpdraftPlus Vault ger dig lagring som är pålitlig, enkel att använda och till ett bra pris." + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "Du har en UpdraftPlus Vault-prenumeration som inte har förnyats, och den extra tid du fått för att kunna förnya har nu tagit slut. Om några få dagar kommer din lagrade data att avlägsnas permanent. Om du inte vill att detta ska hända måste du förnya snarast möjligt." + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "Du har en UpdraftPlus Vault-prenumeration med förfallen betalning. Inom någon dag kommer ditt konto att suspenderas och du kommer att förlora ditt utrymme och åtkomst till data som lagrats där. Vänligen förnya snarast!" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "Ditt UpdraftPlus Premium-köp gjordes för mer än ett år sedan. Du bör förnya omedelbart för att undvika att förlora det 12 månaders gratis lagringsutrymmet du har för att du för närvarande är kund på UpdraftPlus Premium." + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "Updraft Vault" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "Borttagning misslyckades:" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "Zip-motorn skickade följande svar: %s." + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "Utan denna rättighet kan UpdraftPlus inte ta bort backuper - du bör också se till att ha en hög inställning för antal backuper att behålla för att undvika felaktiga borttagningar." + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "Tillåt borttagning" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "Utan denna rättighet kan du inte ladda ner eller återställa direkt via UpdraftPlus utan måste istället besöka AWS webbplats." + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "Tillåt nedladdning" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "Om det inte fungerar att skicka direkt från webbplatsen för dig, då finns det tre andra metoder - vänligen testa en av följande istället." + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "Du bör kontrollera att fjärrlagringsplatsen är online, inte blockeras av en brandvägg, att den inte har något säkerhetsprogram som blockerar åtkomsten samt att den har UpdraftPlus version %s eller senare aktiv och att alla nycklar/lösen har angetts korrekt." + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "Befintliga nycklar" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "Inga nycklar för att tillåta fjärrsajter att ansluta har skapats ännu." + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "Din nya nyckel:" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "För att tillåta en annan sajt att skicka en backup till denna sajt, skapa en nyckel och klicka \"Migrera\"-kanppen på den skickande webbplatsen och kopiera och klistra in nyckeln där." + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "Så för att få nyckeln till fjärrsajten, öppna Migreringsfönstret på den webbplatsen, skrolla ner och så kan du skapa den där." + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "Nycklar för denna webbplats skapas i sektionen nedanför den du just skrev in." + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "Du måste kopiera och klistra in (spara på lämplig plats) - den kan inte visas igen." + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "Skapandet av nyckeln lyckades." + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "En nyckel med detta namn finns redan; du måste använda ett unikt namn." + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "Skicka också denna backup till aktiva fjärrlagringsplatser" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "Den sajt-URL du skickar till (%s) verkar vara en lokal utvecklingswebbplats. Om du skickar från ett externt nätverk är det troligt att en brandvägg lockerar denna." + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "sajten hittades inte" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "Backup-data kommer att skickas till:" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "Återställ ett befintligt backup-set till denna sajt" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "Denna sajt har inga backuper att återställa från ännu." + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "Backup gjort av %s" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "Denna lagringsmetod tillåter inte nedladdning" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "(backup-set importerat från fjärrlagringsplats)" + +#: admin.php:4423 +msgid "Site" +msgstr "Sajt" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "Backup skickad till fjärrsajt - ej tillgänglig för nedladdning." + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "Du bör säkerställa att detta verkligen är en backup som ska användas på denna webbplats, innan du återställer (så det inte är ett backup-set från en annan webbplats)." + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "Detta backup-set kändes inte igen av UpdraftPlus som skapat av den nyvarande WordPress-installationen, men återfanns antingen på en fjärrlagringsplats, eller skickades från en fjärrsajt." + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "Testar anslutning..." + +#: admin.php:617 +msgid "Deleting..." +msgstr "Tar bort..." + +#: admin.php:616 +msgid "key name" +msgstr "nyckelnamn" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "Var god ge denna nyckel ett namn (till exempel ett som signalerar vilken webbplats den är till för):" + +#: admin.php:611 +msgid "Creating..." +msgstr "Skapar..." + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "Eller, ta emot en backup från en fjärrsajt" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "Klistra in nyckeln när" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "Hur får jag tag på en sajts nyckel?" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "För att lägga till en sajt som destination för att sända till, ange sajtens nyckel nedan." + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "Eller, skicka en backup till en annan sajt" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "Skicka" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "Skicka till sajt:" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "Inga mottagande sajter har ännu lagts till." + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "Den är för att skicka backuper till följande sajt:" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "Nyckeln lades till." + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "Den angivna nyckeln tillhör inte en fjärrsajt (den hör till denna sajt)." + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "Den angivna nyckeln var korrupt - var god försök igen." + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "Den angivna nyckeln hade fel längd - var god försök igen." + +#: addons/migrator.php:1861 +msgid "key" +msgstr "nyckel" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "Nästan alla FTP-servrar vill ha passivt läge; men om du behöver aktivt läge kan du avmarkera denna." + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "Passivt läge" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "Fjärrsökväg" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "FTP lösenord" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "FPT inloggning" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "FTP-server" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "UpdraftPlus Migrator modifierar återställningsprocessen för att anpassa backupdata till den nya webbplatsen." + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "En \"migration\" är ytterst samma sak som en återställning - men använder backuparkiv som du importerar från en annan sajt." + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "Lägg till sajt" + +#: admin.php:608 +msgid "Adding..." +msgstr "Lägger till..." + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "Begäran nekades - kanske har du redan använt detta köp någon annanstans, eller så har den period du betalat för att ladda ner från updraftplus.com gått ut?" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "För att använda denna backup behöver din databasserver stödja %s-teckenuppsättning." + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "gå hit för att ändra ditt lösenord på updraftplus.com." + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "Om du har glömt ditt lösenord" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "Gå hit för att mata in ditt lösenord på nytt." + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "Efter att ha tryckt på denna knapp kommer du ges möjlighet att välja vilka komponenter du vill migrera." + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "För att importera ett backupset, gå till fliken \"Befintliga backuper\"" + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "Du har gjort ändringar till dina inställningar, men inte sparat dem." + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "OBS! %s är inte skiftlägeskänsligt." + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "Om OneDrive senare visar meddelandet \"unauthorized_client\", då angav du inte ett korrekt klient-ID här." + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "För längre hjälpavsnitt, inklusive skärmbilder, följ denna länk." + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "Skapa OneDrive inloggningsuppgifter i din OneDrive utvecklarkonsol." + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "Du måste lägga till följande som auktoriserad omdirigerings-URI (authorized redirect URI) i din OneDrive-konsul under \"(API Settings\") när du ombeds göra det." + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "%s-auktorisering misslyckades:" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "OneDrive" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "Vänligen åter-autentisera anslutningen till ditt %s-konto." + +#: methods/email.php:73 +msgid "configure it here" +msgstr "konfigurera här" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "För att ta bort detta block, vänligen gå hit." + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "Kom ihåg att spara dina inställningar." + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "Du använder nu ett IAM användarkonto för åtkomst till din förvaringsplats." + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "S3 förvaringsplats" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "Kina (Peking) (begränsad åtkomst)" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "Sydamerika (Sao Paolo)" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "Asien Stilla Havet (Tokyo)" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "Asien Stilla Havet (Sydney)" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "Asien Stilla Havet (Singapore)" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "EU (Frankfurt)" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "EU (Irland)" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "Västa USA statligt (begränsad åtkomst)" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "Västa USA (Norra Kalifornien)" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "Västra USA (Oregon)" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "USA Standard (förvalt)" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "S3 lagringsregion" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "Nytt IAM användarnamn" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "Administratörens hemliga nyckel" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "Administratörens åtkomstnyckel" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "Då kan dessa mindre kraftfulla åtkomstuppgifter användas, istället för att lagra dina administratörsnycklar." + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "Dessa kommer att användas för att skapa en ny användare och ett nyckelpar med en IAM-policy som bara kommer att tillåta den att komma åt den avsedda lagringsplatsen." + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "Ange dina administrativa Amazon S3 åtkomstnycklar (dessa måste vara ett nyckelpar med tillräckliga rättigheter för att skapa nya användare och lagringsplatser), och ett nytt (unikt) användarnamn för den nya användaren och ett namn på lagringsplatsen." + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "Skapa ny IAM-användare och S3-lagringsplats" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "Hemlig Nyckel: %s" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "Åtkomstnyckel: %s" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "Kunde inte tillämpa Användarpolicy" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "Operation för att skapa Åtkomstnyckel för användaren misslyckades" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "Misslyckades med att skapa Åtkomstnyckel" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "IAM-operation misslyckades (%s)" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "Konflikt: användaren existerar redan" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "Fel: Vi kunde inte komma åt eller skapa en sådan lagringsplats. Vänligen kontrollera dina användaruppgifter, och om dessa är korrekta försök med ett annat namn på lagringsplatsen (någon annan AWS-användare kan redan ha använt det namn du vill använda)." + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "AWS-autentisering misslyckades" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "Kan inte skapa ny AWS-användare, eftersom det gamla AWS-verktyget används." + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "Du måste ange en lagringsplats" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "Du måste ange ett nytt IAM-användarnamn" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "Du måste ange en hemlig nyckel för admin-användaren" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "Du måste ange en åtkomstnyckel med admin-behörighet" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "Om du har en AWS admin-användare, då kan du använda denna guide för att snabbt skapa en ny AWS (IAM)-användare med åtkomst endast till denna lagringsplats (istället för till hela ditt konto)" + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "För att skapa en ny IAM under-användare och åtkomstnyckel som bara har åtkomst till denna förvaringsplats, använd detta tillägg." + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "För personlig support, möjlighet att kopiera webbplatser, fler lagringsplatser, krypterade backuper för ökad säkerhet, flera backup-platser, bättre rapporter, för att slippa annonser och mycket annat, ta en titt på vår premium-version av UpdraftPlus - världens populäraste backuptillägg." + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "UpdraftPlus nyheter, utbildningsmaterial av hög kvalitet för WordPress-utvecklare och webbplatsägare, och allmänna WordPress-nyheter. Du kan avsluta prenumerationen när som helst." + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "Sökväg för uppladdning (%s) har ändrats under migrationen - nollställer (till: %s)" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "Det här betyder mest troligt att du delar webbserver med en hackad webbplats som använts i tidigare attacker." + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "Det verkar som om din webbservers IP-adress (%s) är blockerad." + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "UpdraftPlus.com har svarat med 'Åtkomst Nekad'." + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "Premium WooCommerce-tillägg" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "Gratis two-factor säkerhets-tillägg" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "Fler Tillägg av hög kvalitet" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "Gå till butiken." + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "Jämför med gratisversionen" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "UpdraftPlus Premium" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "Följ denna länk för att anmäla dig." + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "Gratis Nyhetsbrev" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "Tack för att du använder UpdraftPlus för backuper!" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "Avfärda (i %s månader)" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "(samtidigt som filbackup)" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "Ingen backup har färdigställts." + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "Det första steget är att avinstallera gratisversionen." + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "Om du har gjort ett köp från UpdraftPlus.Com, följ denna länk till instruktioner som visar hur du ska installera ditt köp." + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "Anmälan Nyhetsbrev" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "Följ denna länk för att anmäla dig till UpdraftPlus nyhetsbrev." + +#: admin.php:2831 +msgid "Personal support" +msgstr "Personlig support" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "Lås åtkomst till inställningar" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "Nätverk/Multisite-support" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "Bestämd backuptidpunkt" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "Schemalagda backuper" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "Återställ backuper från andra tillägg" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "Databaskryptering" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "Skicka backuper till flera fjärrdestinationer" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "Ta backup automatiskt när Wordpress/tillägg/teman uppdateras" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "Avancerade rapportfunktioner" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "Grundläggande epost-rapportering" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "Migrera / klona (kopiera) webbplatser" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "Ta backup på extra filer och databaser" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "WebDAV, Copy.Com, SFTP/SCP, krypterad FTP" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "Dropbox, Google Drive, FTP, S3, Rackspace, Epost" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "Ta backup till fjärrlagringsplats" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "Återställ från backup" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "Översatt till mer än %s språk" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "Ta backup på Wordpress-filer och databas" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "Köp den Nu!" + +#: admin.php:2718 +msgid "Get it from" +msgstr "Skaffa den från" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "Ställ en fråga före köp" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "Frågor och svar före köpet" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "Lista med alla egenskaper" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "Skaffa UpdraftPlus Premium" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "Du använder för närvarande den fria versionen av UpdraftPlus från wordpress.org." + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Ta backup på (där det är relevant) tillägg, teman och WordPress-databas med UpdraftPlus innan uppdateirng" + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "%s Fel: Initiering misslyckades" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "eller" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "eller" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "Du har inte valt några komponenter att återställa. Vänligen välj minst en och försök sedan igen." + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "Nycklar med PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), SML och PuTTY-format accepteras." + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "Återupptagande av ej fullständiga uppladdningar stöds för SFTP, men inte för SCP. Det betyder att om du använder SCP måste du säkerställa att webbservern tillåter PHP-processer att köra tillräckligt länge för att ladda upp din största backupfil." + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "tenant (projekt)" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "Detta behöver vara v2 (Keystone) autentiserings-URI; v1 (Swauth) stöds ej." + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "din webbplats-admins adress" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "Markera denna ruta för att få en grundläggande rapport skickad till" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "Manuell" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "Ett fel (%s) inträffade:" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "Ändra Låsinställningar" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "Andra filer/kataloger på din server som du vill ta backup på" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "För ännu fler funktioner och personlig support, titta närmare på" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "Skapande av tabell misslyckades - troligen saknas rättigheter att kasta tabeller och tabellen existerar redan; fortsätter" + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "Rensar cachade sidor (%s)..." + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "Fras för databas-dekryptering" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "Automatisk backup innan uppdatering" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "WordPress-kärnan (enbart)" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "För hjälp med upplåsning, var god kontakta den som administrerar UpdraftPlus åt dig." + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "För att komma åt UpdraftPlus inställningar, var god ange ditt upplåsningslösenord" + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "Lösenord felaktigt" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "Lås upp" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "Annars visas den förinställda länken." + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "Den som ser låsningsskärmen kommer att få se denna URL för support - lägg till en webbadress eller en epost-adress." + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "Support-URL" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "Kräv lösenord igen efter" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "%s veckor" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "1 vecka" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "%s timmar" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "1 timme" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "Var god se till att du har noterat lösenordet!" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "Låt tillgången till UpdraftPlus inställningssida." + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "Inställningarna sparades." + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "Admin-lösenordet har ändrats." + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "Admin-lösenord har ställts in." + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "Admin-lösenordet har nu tagits bort." + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "(lär dig mer om detta viktiga alternativ)" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "Notera att när du begärt dina tillägg kan du ta bort ditt lösenord (men inte e-postadressen) från inställningarna nedan utan att påverka den här webbplatsens tillgång till upddateringar." + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "Visa Logg" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "Backup-data (klicka för att ladda ner)" + +#: admin.php:4368 +msgid "Backup date" +msgstr "Backup-datum" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "och behåll så här många schemalagda backuper" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "stegvis backup; bas-backup: %s" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "För att få möjlighet att låsa tillgången till UpdraftPlus-inställningar med lösenord, uppgrader till UpdraftPlus Premium." + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "Ladda upp filer till UpdraftPlus." + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "'Ta Backup Nu'-knappen har avaktiverats eftersom din backup-katalog inte är skrivbar (gå till 'Inställningar'-fliken och välj relevant alternativ)." + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "Backup-etikett:" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "Fel: oväntad filläsning misslyckades" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "kontrollera din logg för fler detaljer." + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "Ditt webbhotell-konto verkar vara fullt; vänligen se: %s" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "Ett zip-fel inträffade" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "Din märkning för denna backup (valfritt)" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "%s tillåter inte auktorisering av sajter på direkta IP-adresser. Du måste ändra dins sajts adress (%s) innan du kan använda %s för lagring." + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "Du har angett en e-postadress som inte kändes igen av UpdraftPlus.Com" + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "Din e-postadress var giltig, men ditt lösenord kändes inte igen av UpdraftPlus.Com" + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "Du måste ange både en e-postadress och ett lösenord" + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "För att fortsätta, klicka på 'Ta Backup nu'. Titta sedan på 'Senaste Loggmeddelande' för progression." + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "Om du vill återställa en multisite-backup måste du först ställa in din WordPress-installation som en multisíte." + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "Din backup är från en Multisite-installation av WordPress, men din saj tär inte det. Endast den första sajten i nätverket kommer att vara åtkomlig." + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "redan klart" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "överhoppad (ej i listan)" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "Sök och ersätter tabell:" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "Mata in en komma-separerad lista; annars lämna tomt för alla tabeller." + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "Enbart dessa tabeller" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "Rader per batch" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "Du har ännu inte anslutit med ditt UpdraftPlus.Com-konto." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "Du behöver ansluta för att få framtida uppdateringar av UpdraftPlus." + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "Eventuella support-förfrågningar beträffande %s bör tas med ditt webbhotell." + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "Du bör bara fortsätta om du inte kan uppdatera den nuvarande servern och är säker på (eller villig att riskera) att dina plugins/teman/etc. är kompatibla med den äldre %s-versionen." + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "Detta är avsevärt nyare än servern du nu återställer till (version %s)." + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "Webbplatsen i denna backup körde på en webbserver med version %s av %s." + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "LinkedIn" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "Google+" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "Facebook" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "Twitter" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "UpdraftPlus finns på sociala media - kolla in oss här:" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "Varför ser jag detta?" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "Sökvägen till denna mapp sätts i expertinställningarna under Inställningsfliken." + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "Klicka här för att titta i din UpDraftPlus-mapp (på din webbserver) och se de backup-set som du har laddat upp." + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "Starta backupen" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "Du använder webservern %s, men den tycks inte ha modulen %s igång. " + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "Du behöver prata med ditt webbhotell för att få veta hur du sätter rättigheter till ett WordPress-tillägg som ska kunna skriva i mappen." + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "Såvida du inte har något problem så kan du helt ignorera allting här." + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "Denna fil kunde inte laddas upp" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "Du hittar mer info om detta i Inställnings-sektionen." + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "Dessa backup-plugins stöds: %s" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "Var detta en backup skapad av en annan backup-plugin? Om så är fallet kan du först behöva döpa om den för att den ska kunna kännas igen - vänligen följ denna länk." + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "Berätta mer om inkrementella backuper" + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "Minnesgräns" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "återställning" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "Tabell som underförstått släpps (droppas): %s" + +#: backup.php:829 +msgid "Incremental" +msgstr "Inkrementell" + +#: backup.php:829 +msgid "Full backup" +msgstr "Full backup" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "fortsätter nu med uppdateringarna..." + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "(visa logg...)" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "Backupen lyckades" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "Varje %s timme" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "sök och ersätt" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "Kör" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "En sök/ersätt kan inte ångras - är du säker att du vill göra detta?" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "Detta kan lätt förstöra din webbplats; så använd den försiktigt!" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "Ersätt med" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "Sök efter" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "Sök / ersätt databas" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "sökterm" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "För många databasfel har inträffat - avbryter" + +#: backup.php:895 +msgid "read more at %s" +msgstr "läs mer på %s" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "Epost-rapporter skapade av UpdraftPlus (gratisversionen) ger dig de senaste nyheterna från UpdraftPlus.com" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "Obs. Om du installerar UpdraftPlus på flera WordPress-webbplatser så kan du inte återanvända ditt projekt; du måste skapa en ny från din Google API-konsol för varje webbplats." + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "Du har inte gjort några backuper ännu." + +#: admin.php:3872 +msgid "Database Options" +msgstr "Databasalternativ" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "Plugins för felsökning:" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "%s (%s använt)" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "Ledigt diskutrymme på kontot:" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "Denna knapp är avaktiverad eftersom din backupmapp inte är skrivbar (se inställningarna)." + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "Befintliga Backuper" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "Nuvarande status" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "För att ändra någon av de förvalda inställningarna för vad som tas med i backupen, för att konfigurera schemalagda backuper, skicka backuper till fjärrlagringsplats (rekommenderat) och mer, gå till inställningsfliken." + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "För att skapa en backup, klicka på knappen \"Ta Backup Nu\"." + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "Välkommen till UpdraftPlus!" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "Om du lägger till text här så används denna för att kryptera databas-backuperna (Rijndael). Se till att spara en kopia av det och tappa inte bort det, eller så kommer alla dina backuper att bli värdelösa. Detta är också den nyckel som används för att dekryptera backuper från admin-gränssnittet (så om du ändrar den kommer den automatiska dekrypteringen inte att fungera förrän du ändrar den tillbaka)." + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "Testar..." + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "Test av anslutning..." + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "Tabellprefix" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "Ta backup på extern databas" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "Lägg till extern databas till backup..." + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "Om din databas inkluderar extra tabeller som inte hör till denna WordPress-webbplats (om det är så - då vet du det), aktivera då detta alternativ för att ta backup även på dessa." + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "Ta backup på icke-WordPress-tabeller som ligger i samma databas som WordPress" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "Detta alternativ kommer att orsaka att tabeller som lagras i MySQL-databasen som inte hör till WordPress (identifierade genom att de saknar det konfigurerade WordPress-prefixet, %s) också inkluderas i backupen." + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "Anslutning misslyckades." + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "Anslutning lyckades." + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "%s totalt antal tabell(er) hittades; %s med det angivna prefixet." + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "%s tabell(er) hittades." + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "Försök att ansluta till databasen misslyckades" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "databasnamn" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "värd" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "användare" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "Extern databas (%s)" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "Följ denna länk till din Google API-konsol, och aktivera där Drive API och skapa ett Klient-ID i sektionen för API-åtkomst (API Access)." + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "misslyckades att öppna föräldrafolder" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "Men efterföljande försök misslyckades:" + +#: admin.php:4499 +msgid "External database" +msgstr "Extern databas" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "Detta kommer också att orsaka att information om felsökning från alla tillägg kommer att visas på denna skärm - bli inte överraskad av att du får se dessa." + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "Ta backup på fler databaser" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "Ange först dekrypteringsnyckeln" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "Du kan manuellt dekryptera en krypterad databas här." + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "Det kan också ta backup på externa databaser." + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "Vill du inte bli spionerad på? UpdraftPlus Premium kan kryptera din databasbackup." + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "använd UpdraftPlus Premium" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "Dekryptering misslyckades. Databasfilen är krypterad." + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "Endast WordPress-databasen kan återställas; du måste hantera den externa databasen manuellt." + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "Ett fel inträffade vid första %s-kommandot - avbryter körning" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "Anslutning misslyckades: kontrollera dina åtkomstuppgifter, att databas-servern är i drift och att nätverksanslutningen inte ligger bakom en brandvägg." + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "försöket till databasanslutning misslyckades." + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "Varning: databasens hem-URL (%s) skiljer sig från den som förväntades (%s)" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "I %s är sökvägarna skiftlägeskänsliga." + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "Om du lämnar tomt kommer backupen att placeras i roten av din %s" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "t.ex. %s" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "Om mappen inte redan finns kommer den att skapas." + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "Ange sökvägen till %s-mappen du vill använda här." + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "Lagringsplats" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "Lämna tomt så används förvalt alternativ." + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "Innehavare" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "Följ denna länk för mer information" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "autentisierings-URI" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "Få dina användaruppgifter för åtkomst från din OpenStack Swift-leverantör, och välj sedan en lagringsplats du vill använda för lagring. Denna lagringsplats (container) skapas för dig om den inte redan existerar." + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "Misslyckades med att ladda ner %s" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "Misslyckades med nedladdning" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "misslyckades med att lista filer" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "Misslyckades med att ladda upp %s" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "Framgång:" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "Efter att du sparat dina inställningar (genom att klicka 'Spara Ändringar' nedan), kom sedan tillbaka hit en gång till och klicka på denna länk för att fullfölja verifieringen hos %s." + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "(Du verkar redan ha verifierats)." + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "Dropbox" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "Autentisiera med %s" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "Fel vid nedladdning av fjärrfil: Misslyckades med nedladdning" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "Region: %s" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "%s fel - vi fick åtkomst till lagringsplatsen, men misslyckades med att skapa en fil där." + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "Objektet %s hittades ej" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "Kunde inte komma åt %s-lagringsplatsen" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "%s fel - misslyckades med att komma åt lagringsplatsen" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "Kontoinnehavarens namn: %s." + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "För att kunna ställa in egna mappnamn, använd UpdraftPlus Premium." + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "Det är ett ID-nummer internt för Google Drive" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "Detta är INTE ett mappnamn." + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "Mapp" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "%s nedladdning: misslyckades: filen hittades ej" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "Namn: %s." + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "Google Drive lista filer: misslyckades med att komma åt mappförälder" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "Din %s version: %s." + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "Du kommer att behöva be ditt webbhotell att uppgradera." + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "Denna metod för fjärrlagring (%s) kräver PHP %s eller senare." + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "Temafolder (%s) hittades ej, men en version med gemener finns; uppdatera databasalternativ i enlighet med detta" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "Anrop" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "Hämta" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "Denna funktion kräver %s version %s eller senare" + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "Data från Elegant themes theme builder har påträffats: nollställer mapp för temporära filer" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "%s filer har extraherats" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "Misslyckades med att packa upp arkivet" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "Fel - misslyckades med nedladdning av filen" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "Scanna om lokal folder efter nya backup-set" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "Du bör uppdatera UpdraftPlus för att säkerställa att du har en version som testats för kompabilitet." + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "Den har testats upp till version %s." + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "Den installerade versionen av UpdraftPlus Backup/Återställ har inte testats på din version av Wordpress (%s)." + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "lösenord/nyckel" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "Nyckel" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "Din login kan vara antingen lösenord- eller nyckelbaserad. Du behöver bara ange den ena, inte båda." + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "Nyckeln som angavs var inte i ett giltigt format, eller så var den korrupt." + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "SCP/SFTP lösenord/nyckel" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "Backup med filer (skapad av %s)" + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "Wordpress-backup med filer och databas (skapad av %s)" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "Backup skapad av: %s." + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "Databas (skapad av %s)" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "okänd källa" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "Skanna om fjärrlagringsplats" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "Ladda upp backup-filer" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "Denna backup skapades av %s, och kan importeras." + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "Läs denna sida för en guide som visar på möjliga orsaker och hur du kan åtgärda dem." + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "WordPress har ett antal (%d) schemalagda uppgifter som redan skulle ha varit utförda. Om inte detta är en utvecklingssajt betyder detta troligen att schemaläggaren i din WordPress-installation inte fungerar." + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "Om detta är en backup som skapats av ett annat backup-tillägg, då kan UpdraftPlus Premium möjligen också hjälpa dig." + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "I vilket fall som helst är UpdraftPlus-arkiv standard zip/SQL-filer - så om du är säker på att din fil har rätt format kan du döpa om den för att matcha denna namnform." + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "Denna fil verkar inte vara ett UpdraftPlus backup-arkiv (sådana filer är .zip eller .gz-filer med namn som: backup_(tid)_(sajtens namn)_(kod)_(typ).(zip/gz))." + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "Backup skapad av okänd källa (%s) - kan ej återställas." + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "WordPress content-mappen (wp-content) hittades inte i denna zip-fil." + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "Denna version av UpdraftPlus vet inte hur denna typ av främmande backup ska hanteras" + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "%s returnerade ett oväntat HTTP-svar: %s." + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "UpdraftPlus-modulen för denna filaccess-metod (%s) stöder inte listning av filer" + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "Inga inställningar hittades" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "En eller flera backuper har lagts till efter skanning av fjärrlagringsplats; notera att dessa backuper inte automatiskt tas bort via inställningarna för att behålla filer: om/när du önskar ta bort dem måste du göra det manuellt." + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "Skannar om fjärrlagringsplatser och lokala lagringsplatser efter backup-set..." + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "(Läs mer)" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "Justerar sökvägar för multisite-installation" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "Logga alla meddelanden till syslog (troligen användbart endast för server-administratörer)" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "Lägg till ännu en..." + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "Ta bort" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "Andra %s FAQ:er." + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "Markera denna för att ta emot mer information och epost om backup-processen - användbart om något går fel." + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "Om du matar in flera filer/mappar, separera dem med kommatecken. För enheter på den högsta nivån kan du använda ett * i början eller slutet av inmatningen som wildcard." + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "Data från tillägget Custom content type manager hittad: rensar alternativ-cache" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "Ditt webbhotell måste aktivera dessa funktioner innan %s kan fungera." + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "Din webbservers PHP-installation har dessa funktioner avstängda: %s." + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "krypterad FTP (explicit kryptering)" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "krypterad FTP (implicit kryptering)" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "vanlig icke-krypterad FTP" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "Backup skapad av:" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "Tillgängliga att åberopa på denna sajt" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "För att bibehålla din åtkomst till support, vänligen förnya." + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "Din betalda åtkomst till UpdraftPlus-support löper snart ut." + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "För att återfå åtkomst, vänligen förnya." + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "Din betalda access till UpdraftPlus-support har löpt ut." + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "Din betalda access till UpdraftPlus-uppdateringar för denna sajt löper snart ut." + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "För att bibehålla din åtkomst och åtkomst till uppdateringar (inklusive framtida funktioner och kompabilitet med framtida WordPress-utgåvor) och support, vänligen förnya." + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "Din betalda access till UpdraftPlus uppdateringar för %s till %s tillägg kommer snart att löpa ut." + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "Din betalda access till UpdraftPlus uppdateringar för %s tillägg på denna sajt har löpt ut." + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "För att återfå åtkomst till uppdateringar (inklusive framtida funktioner och kompabilitet med framtida utgåvor av WordPress) och support, vänligen förnya." + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "Din betalda åtkomst till UpdraftPlus-uppdateringar för denna webbplats har löpt ut. Du kommer inte längre att ta emot uppdateringar för UpdraftPlus." + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "Avfärda från huvudinstrumentpanelen (för %s veckor)" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "Försöket att upphäva den dubbla komprimeringen lyckades." + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "Försöket att upphäva den dubbla komprimering misslyckades." + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "Databasen verkar ha komprimerats två gånger - troligen hade den webbplats du laddade ner den från en felkonfigurerad webbserver." + +#: admin.php:1528 +msgid "Constants" +msgstr "Konstanter" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "Misslyckades att öppna databasen för läsning:" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "Inga databastabeller hittades" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "vänligen vänta för ett nytt schemalagt försök" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "Notera att varningsmeddelanden bara är rådgivande - de avbryter inte backup-processen. De tillhandahåller information som du kan ha nytta av, och som kan indikera vilka orsakerna kan vara om backupen misslyckas." + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "Databas-anrop som bearbetats: %d på %.2f sekunder" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "Sök och ersätt nådde till rad: %d" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "Hoppar över denna tabell: data i denna tabell (%s) bör er sökas/ersättas" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "Kontot fullt: ditt %s-konto har bara %d bytes kvar, men filen som ska laddas upp innehåller ytterligare %d bytes (total storlek: %d bytes)" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "Inträffade fel:" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "Följ denna länk för att ladda ner loggfilen för denna återställning (krävs om du begär support)." + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "See också denna FAQ." + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "Om du inte väljer fjärrlagring, då förblir backupen på webbservern. Detta är inte rekommenderat (såvida du inte planerar att manuellt kopiera dem till din dator). Om du mister innehållet på webbservern förlorar du i så fall både webbplatsen och dina backuper samtidigt." + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "Hämtar (om nödvändigt) och förbereder backupfiler..." + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "PHP-inställningarna på denna webbserver tillåter bara %s sekunder för PHP att köra, och tillåter inte att denna gräns höjs. Om du har stora mängder data att importera, eller om återställningsprocessen avbryts (pga time out), då måste du be ditt webbhotell att hjälpa dig höja denna gräns (eller försöka återställa del-för-del)." + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "Ej borttagna kataloger från tidigare återställning existerar (vänligen använd \"Ta Bort Gamla Kataloger\"-knappen för att ta bort dem innan du försöker igen: %s" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "Den tid som tillåts för WordPress-tillägg att köras är väldigt låg (%s sekunder) - du bör öka den för att undvika misslyckande vid backup pga time-out (konsultera ditt webbhotell för mer hjälp - det är inställningen för max_execution_time för PHP som behöver höjas; rekommenderat värde är %s sekunder eller mer)" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "Ersätter i blogg/webbplats-tabell: från: %s till: %s" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "%s: Hoppar över cache-fil (existerar inte)" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "Avaktiverade denna plugin: %s: återaktivera den manuellt när du är klar." + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "%s-anslutningen avbröts pga time out; om du angivit servern korrekt beror detta vanligen på att en brandvägg blockarar förbindelsen - du bör kontrollera med ditt webbhotell." + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "Det nuvarande temat hittades inte: för att förhindra att detta stoppar laddningen av din webbplats har ditt tema återställts till det förvalda (default)" + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "Återställning misslyckades..." + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "Meddelanden:" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "En SQL-rad som är längre än maximal paketstorlek och som inte kan delas hittades; denna rad kommer inte att processas, utan utelämnas: %s" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "Katalogen existerar inte" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "Nya användarens E-postadress" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "Nya användarens Användarnamn" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "Admin API-nyckel" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "Admin Användarnamn" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "US eller UK Rackspace-konto" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "Ange din Rackspace admin användare/API-nyckel (så att Rackspace kan autentisera din behörighet att skapa nya användare), och ange ett nytt (unikt) användarnamn och epostadress för den nya användaren och en namn för lagringsplatsen." + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "Skapa ny API-användare och lagringsplats" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "API-nyckel: %s" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "Lösenord: %s" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "Användarnamn: %s" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "Molnfil-bearbetning misslyckades (%s)" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "Konflikt: användaren eller epostadressen existerar redan" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "Du måste ange en giltig ny epostadress" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "Du måste ange en lagringsplats" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "Du måste ange ett nytt användarnamn" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "Du måste ange en admin API-nyckel" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "Du måste ange ett admin-användarnamn" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "Skapa en ny API-användare med åtkomst till endast denna lagringsplats (istället för till hela ditt konto)" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "Lägger till förbättrade förmågor för Rackspace Cloud Files-användare" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "Rackspace Molnfiler, förbättrad" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "Cloud Files Lagringsplats" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "Cloud Files API-nyckel" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "För att skapa en ny Rackspace API underanvändare och API-nyckel som bara har åtkomst till denna Rackspace-lagringsplats, använd detta tillägg." + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "Cloud Files Användarnamn" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "London (LON)" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "Hong Kong (HKG)" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "Norra Virginia (IAD)" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "Chicago (ORD)" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "Sydney (SYD)" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "Dallas (DFW) (förvalt)" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "Cloud Files Lagringsregion" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "Konton som skapas via rackspacecloud.com är USA-konton; konton skapade via rackspace.co.uk är UK-baserade" + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "USA- eller UK-baserat Rackspace-konto" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "Konton som skapas via rackspacecloud.com är USA-konton; konton skapade via rackspace.co.uk är UK-baserade" + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "Auktorisering misslyckades (kontrollera dina uppgifter)" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "Ett okänt fel inträffade vid försök att ansluta till UpdraftPlus.Com" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "Skapa" + +#: admin.php:556 +msgid "Trying..." +msgstr "Försöker..." + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "Den nya användarens RackSpace konsol-lösenord är (kommer inte att visas igen):" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "(dekrypterad)" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "Feldata:" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "Backup existerar inte i backup-historiken" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "Din WordPress-installation har gamla kataloger från tidpunkten innan du återställde/migrerade (teknisk information: dessa har fått tilläget -old till sina namn). Du bör trycka på denna knapp för att ta bort katalogerna så snart du verifierat att återställningen lyckats." + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "Dela rad för att undvika att överskrida maximal paketstorlek" + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "Din databasanvändare har inte behörighet att förkasta tabeller. Vi kommer att försöka återställa genom att bara tömma tabellerna; detta borde fungera så länge du återställer från en WordPress-version med samma databasstruktur (%s)" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "Nytt tabell-prefix: %s" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "Filberhörigheter tillåter inte att gammal data flyttas och behålls, istället kommer den att tas bort." + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "%s: Denna katalog existerar redan och kommer att ersättas" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "Kunde inte flytta filerna till avsedd plats. Kontrollera dina behörigheter." + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "Kunde inte flytta nya filer till avsedd plats. Kontrollera din wp-content/upgrade-katalog." + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "Kunde inte flytta gamla filer ur vägen." + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "Flyttar gammal data ur vägen..." + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "Lägg till ytterligare en adress..." + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "Ange adresser här dit en rapport ska skickas när backupen är klar." + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "Skicka rapporter via epost" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "%s kontrollsumma: %s" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "filer: %s" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "Använd \"Rapport\"-sektionen för att konfigurera vilka epostadresser som ska användas." + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr "(med varningar (%s))" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr "(med fel (%s))" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "Avbuggningsinformation" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "Uppladdad till:" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "Tid som användes:" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "Varningar" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "Fel" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "Fel / varningar:" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "Innehåller:" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "Backup inleddes:" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "Backup-rapport" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "%d timmar, %d minuter, %d sekunder" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "%d fel, %d varningar" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "%s autentisering" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "%s fel: %s" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "%s logotyp" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "%s returnerade inte det förväntade svaret - kontrollera din loggfil för fler detaljer" + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "Den nödvändiga %s PHP-modulen är inte installerad - be ditt webbhotell att aktivera den" + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "För fler alternativ, använd \"%s\"-tillägget." + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "Din webbplats admin-användares epostadress (%s) kommer att användas." + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "Anslut" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "För fler rapporteringsfunktioner, använd Rapport-tillägget." + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "(version: %s)" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "Var uppmärksam på att epost-servrar tenderar att ha storleksgränser; vanligen runt %s Mb; backuper större än så kommer troligen inte fram." + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "När Epost-lagringsalternativet är valt, skicka också hela backupen" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "Senaste status:" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "Backupen innehåller:" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "Backade upp: %s" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "Loggfilen har bifogats med detta mail." + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "Okänt/oväntat fel - vänligen gör en support-begäran" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "Databas enbart (filer var inte valda för denna schemaläggning)" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "Databas (fil-backup har inte färdigställts)" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "Filer enbart (databasen var inte vald för denna schemaläggning)" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "Filer (databas-backup har inte färdigställts)" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "Filer och databas" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "(Detta gäller alla WordPress backup-tilläg såvida de inte har kodats särskilt för multisajt-kompabilitet)." + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "Utan uppgradering tillåter UpdraftPlus alla admin-användare som kan modifiera inställningarna för plugins (tillägg) att göra backup (och därmed komma åt data, inklusive lösenord, från) och återställda (inklusive med anpassade ändringar, exempelvis ändrade lösenord) i hela nätverket" + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "WordPress Multi-site stöds, med ytterligare funktioner, av UpdraftPlus Premium, eller med Multisite-tillägget." + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "Detta är en WordPress multi-site (också känt som nätverksinstallation)." + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "UpdraftPlus varning:" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "(eller anslut med hjälp av formuläret på denna sida om du redan har köpt den)" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "vänligen följ denna länk för att uppdatera tillägget för att kunna aktivera den" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "vänligen följ denna länk för att uppdatera tillägget för att kunna få den" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "senaste" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "Din version: %s" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "Du har den" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "UpdraftPlus Support" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "En uppdatering som innehåller dina tillägg är tillgänglig för UpdraftPlus - vänligen följ denna länk för att komma åt den." + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "UpdraftPlus Tillägg" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "En uppdatering är tillgänglig för UpdraftPlus - vänligen följ denna länk för att hämta den." + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "UpdraftPlus.Com skickade ett svar, men det kunde inte tolkas" + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "Din epostadress och lösenord kunde inte kännas igen av UpdraftPlus.Com" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "UpdraftPlus.Com returnerade ett svar som inte kunde tolkas (data: %s)" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "UpdraftPlus.Com svarade, men vi förstår inte svaret" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "Vi misslyckades med att ansluta till UpdraftPlus.Com" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "Rapporterar" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "Alternativ (råa)" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "Skicka rapport bara när det varit varningar/fel" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "Innehålls-URL:" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "Se också \"Fler Filer\"-tillägget i vår butik." + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "Ditt tillgängliga utrymme på webbhotellet är väldigt lågt - bara %s Mb återstår" + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "Mängden minne (RAM) som tillåts för PHP är väldigt lågt (%s Mb) - du bör öka det för att undvika misslyckanden orsakade av otillräckligt minne (konsultera ditt webbhotell för mer hjälp)" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "Hantera Tillägg" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "Köp Den" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "Skaffa den från UpdraftPlus.Com-butiken." + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "aktivera på denna sajt" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "Du har ett inaktivt köp" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "Tilldelad denna sajt" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "Tillgängligt för denna sajt (via ditt köp av alla tillägg)" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "(uppenbarligen en för-release eller en återkallad release)" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "Gå hit" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "Behöver du support?" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "Ett fel inträffade när dina tillägg skulle hämtas." + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "Ett okänt svar mottogs. Svaret var:" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "Begäran kunde inte godkännas - dina inloggningsuppgifter var felaktiga" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "Vänta medan vi gör en begäran..." + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "Fel inträffade vid försök att ansluta till UpdraftPlus.Com:" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "Du är för närvarande inte ansluten till ett UpdraftPlus.Com-konto." + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "Om du köpte nya tillägg, följ denna länk för att uppdatera din anslutning" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "Du är för närvarande ansluten till ett UpdraftPlus.Com-konto." + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "Intresserad av att veta hur säkert ditt UpdraftPlus.Com-lösenord är? Läs om det här." + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "Glömt dina uppgifter?" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "Har du inget konto än (det är gratis)? Skaffa ett nu!" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "Anslut med ditt UpdraftPlus.Com-konto" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "Din webbservers version av PHP är för gammal (" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "Du verkar ha en utdaterad version av Updraft-tillägget installerat - kanske har du blandat ihop dem?" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "Gå hit för att börja installera." + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "UpdraftPlus är ännu inte installerat." + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "Gå hit för att aktivera det." + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "UpdraftPlus är ännu inte aktiverat." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "Gå hit för att ansluta." + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "Du har ännu inte anslutit med ditt UpdraftPlus.Com-konto, för att möjliggöra att lista dina köpta tillägg." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "Utan den kommer krypteringen att vara mycket långsammare." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "Din webbserver har inte %s-modulen installerad." + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "(Du verkar redan vara autentiserad, men du kan autentisera igen för att förnya din anslutning om du hade problem)." + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "Släpp dina backup-filer här" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "hantera WordPress från kommandoraden - en stor tidsbesparing" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "Ta en titt på WordShell" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "Vill du ha fler funktioner eller betalad, garanterad support? Ta en titt på UpdraftPlus.Com" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "Webbservern returnerade en felkod (försök igen, eller kontrollera dina webbserverloggar)" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "Återställningen har påbörjats. Tryck inte på stopp eller stäng din webbläsare förrän den själv rapporterar att den är klar." + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "Om du exkluderar både databasen och filerna, då har du exkluderat allt!" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "Webbplatsens hem:" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "Fjärrlagringsalternativ" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "(loggar kan hittas på UpdraftPlus inställningssida som vanligt)..." + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "Minns detta val nästa gång (du kommer fortfarande att ha möjlighet att ändra det)" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "Uppladdning misslyckades" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "Du kan skicka en backup till mer än en destination med ett tillägg." + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "Observera: progressmätaren nedan är baserad på steg, INTE på tid. Stoppa inte backupen bara för att den verkar ha stannat på samma ställe en längre stund - det är normalt." + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "(%s%%, fil %s av %s)" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "Läs mer om hur detta fungerar..." + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "Misslyckades. Vi kunde logga in, men misslyckades att skapa en fil på den platsen." + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "Misslyckades: Vi kunde logga in och flytta till den valda katalogen, men misslyckades att skapa en fil på den platsen." + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "Använd SCP istället för SFTP" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "SCP/SFTP användarinställningar" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "SCP/SFTP värdinställningar" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "Försöet att skicka backupen via epost misslyckades (förmodligen för att backupen var för stor för denna metod)" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "Backupen är av: %s." + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "%s inställningar testresultat:" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "(Ej klar)" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "Om du ser fler backuper än du väntat dig, så beror det troligen på att borttagandet av gamla backup-set inte sker förrän en ny backup färdigställts. " + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "Placera den INTE inuti dina uploads- eller plugin-kataloger, eftersom detta skapar upprepningsproblem (backuper av backuper av backuper av...)" + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "Detta är den plats där UpdraftPlus kommer att skriva zip-filer som den skapar inledningsvis. Denna katalog måste vara skrivbar för webbservern. Den är relativ till din innehållskatalog (som förinställt har namnet wp-content)." + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "Jobb-ID: %s" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "senaste aktivitet: %ss sedan" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "nästa återupptagande: %d (efter %ss)" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "Okänt" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "Backup färdigställdes" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "Väntar till schemalagd tidpunkt med att försöka igen pga fel" + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "Rensar gamla backup-set" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "Laddar upp filer till fjärrlagringsplats" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "Krypterade databas" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "Krypterar databas" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "Skapade databas-backup" + +#: admin.php:3359 +msgid "table: %s" +msgstr "tabell: %s" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "Skapar databas-backup" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "Skapade zip-filer med fil-backuper" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "Skapar zip-filer med fil-backuper" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "Backup påbörjades" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "Backuper som pågår:" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "Schemaläggaren är avstängd i din WordPress-installation, via inställningen DISABLE_WP_CRON. Inga backuper kan köras (inte ens "Ta Backup Nu":) såvida du inte endera har ställt in någon anordning att anropa schemaläggaren manuellt, eller till dess att den aktiverats." + +#: restorer.php:646 +msgid "file" +msgstr "fil" + +#: restorer.php:639 +msgid "folder" +msgstr "katalog" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "UpdraftPlus behövde skapa en %s i din innehållskatalog, men misslyckades - vänligen kontrollera dina filbehörigheter och aktivera åtkomsten (%s)" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "Backupen har inte färdigställts; ett återupptagande har schemalagts" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "Din webbplats besöks sällan och UpdraftPlus får inte de resurser den hoppades på; vänligen läs denna sida:" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "%s-autentiseringen kunde inte fortsätta, eftersom något annat på din sajt förhindrar det. Försök stänga av dina andra tillägg och växla till det förinställda temat. (Specifikt letar du efter en komponent som skickar ut information (mest troligt PHP-varningar och -fel) innan sidan börjar. Att stänga av eventuella avbuggningsinställningar kan också hjälpa)." + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "Din PHP-minnesgräns (inställd av ditt webbhotell) är mycket låg. UpdraftPlus försökte höja den men misslyckades. Detta tillägg kan få det besvärligt med en minnesgräns lägre än 64 Mb - särskilt om du har väldigt stora filer uppladdade (men å andra sidan så kommer många sajter att lyckas med bara 32Mb gräns - erfarenheterna kan variera)." + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "Fortsätt med uppdateringen" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "Avbryt inte efter att ha tryckt Fortsätt nedan - vänta till dess backupen färdigställts." + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "UpdraftPlus Automatiska Backuper" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "Fel har inträffat:" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "Skapar backup med UpdraftPlus..." + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "Automatisk säkerhetskopiering" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "Skapar databas-backup med UpdraftPlus..." + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "Du har inte tillräckliga behörigheter för att uppdatera denna webbplats." + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "teman" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "tillägg" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "Startar automatisk säkerhetskopiering..." + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "Skapar %s och databas-backup med UpdraftPlus..." + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Ta automatiskt backup (där det är relevant) på tillägg, teman och WordPress-databasen med UpdraftPlus före uppdatering" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "Om du inte är säker så bör du avsluta; annars kan du förstöra denna WordPress-installation." + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "Detta ser inte ut som en giltig backup av WordPress-kärnan - filen %s saknades." + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "Kunde inte öppna zip-fil (%s) - kunde inte förskanna för att kontrollera dess integritet." + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "Kunde inte läsa zip-fil (%s) - kunde inte förskanna för att kontrollera dess integritet." + +#: admin.php:2310 +msgid "More plugins" +msgstr "Fler tillägg" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "Support" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "UpdraftPlus kunde inte hitta tabellprefixen när den skannade databasbackupen." + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "Denna databas-backup saknar tabeller från WordPress-kärnan: %s" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "Du importerar från en nyare version av WordPress (%s) till en äldre (%s). Det finns inga garantier att WordPress kan hantera detta." + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "Databasen är för liten för att vara en giltig WordPress-databas (storlek: %s Kb)." + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "Uppdatera Tema" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "Uppdatera Tillägg" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "Var säker med en automatisk backup" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "Avfärda (för %s veckor)" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "Uppladdnings-sökväg (%s) existerar inte - nollställer (%s)" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "Om du fortfarande kan läsa dessa ord efter att sidan laddat färdigt, då finns det ett JavaScript- eller jQuery-problem på webbplatsen." + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "Filen laddades upp." + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "Status för okänt serversvar:" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "Okänt serversvar:" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "Denna avkrypteringsnyckel kommer att testas:" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "Följ denna länk för att försöka avkryptera och ladda ner databasfilen till din dator." + +#: admin.php:584 +msgid "Upload error" +msgstr "Uppladdningsfel" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "Denna fil verkar inte vara ett krypterat UpdraftPlus databasarkiv (sådana filer är .gz.crypt -filer med namn som exempelvis: backup_(tid)_(webbplatsnamn)_(kod)_db.crypt.gz)." + +#: admin.php:582 +msgid "Upload error:" +msgstr "Fel vid uppladdning:" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "(se till att du försökte ladda upp en zip-fil som tidigare skapad av UpdraftPlus)" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "och sedan, om du önskar," + +#: admin.php:572 +msgid "Download to your computer" +msgstr "Ladda ner till din dator" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "Ta bort från din webbserver" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "Exempel på S3-kompatibla lagringstjänster:" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "Kommer inte att ta bort några arkiv efter uppackning eftersom det inte fanns någon molnlagring för denna backup" + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "Du verkar sakna ett eller flera arkiv från detta multiarkiv-set." + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "(%d arkiv i setet)." + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "Dela upp arkiv varje:" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "Fel: servern skickade oss ett svar (JSON) som vi inte förstod." + +#: admin.php:563 +msgid "Warnings:" +msgstr "Varningar:" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "Fel: servern skickade ett tomt svar." + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "Detta ser ut som en fil skapad av UpdraftPlus, men den här installationen känner inte igen den här typen av objekt: %s. Kanske måste du installera ett insticksprogram?" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "Backup-arkivfilen har bearbetats, men några fel har uppstått. Du måste avbryta och rätta till alla problem innan du försöker igen." + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "Backup-arkivfilen har behandlats, men med några varningar. Om allt fungerar så kan du klicka Återställ igen för att fortsätta. Annars avbryt och rätta till eventuella problem först." + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "Backup-arkivfilen har framgångsrikt behandlats. Tryck nu på Återställ igen för att fortsätta." + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "Detta multibackup-set verkar sakna följande arkiv: %s" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "Filen (%s) hittades, men har en annan storlek (%s) jämfört med förväntade (%s) - den kan vara korrupt." + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "Filen hittades, men har nollstorlek (du måste ladda upp den igen): %s" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "Filen hittades inte (du måste ladda upp den): %s" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "Inget sådant backup-set existerar" + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "Backup-arkivet för denna fil kunde inte hittas. Fjärrlagringsmetoden som används (%s) tillåter oss inte att hämta filer. För att utföra återställning med hjälp av UpdraftPlus, måste du hämta en kopia av denna fil och placera den inuti UpdraftPlus arbetskatalog." + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "Misslyckades med att flytta katalog (kontrollera dina behörigheter och disktilldelning): %s" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "Misslyckades med att flytta fil (kontrollera dina behörigheter och disktilldelning): %s" + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "Flyttar uppackad backup till sin plats..." + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "Misslyckades med att öppna zip-fil (%s) - %s" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "Sökväg till WordPress rotkatalog: %s" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "%s slutpunkt" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "...och många mer!" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "S3 (Kompatibel)" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "Filen är inte närvarande lokalt - måste hämtas från fjärrlagringsplats" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "Letar efter %s-arkiv: filnamn: %s" + +#: admin.php:4836 +msgid "Final checks" +msgstr "Slutkontroller" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "Markera denna för att ta bort överflödiga backupfiler från din server efter att backupen kört klart (om du avmarkerar kommer alla filer som skickats för fjärrlagring också att bli kvar lokalt, och alla filer som lagras lokalt kommer inte att omfattas av bevarande-gränserna)." + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "Släpp krypterade databasfiler (db.gz.crypt-filer) här för att ladda upp dem för dekryptering" + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "Sökväg till din wp-content-katalog: %s" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "Råbackuphistoria" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "Visa råbackup och fillista" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "Bearbetar filer - var god vänta..." + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "Vänligen konsultera denna FAQ för hjälp om vad du kan göra åt det." + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "Din WordPress-installation har problem med utmatning av extra blanksteg. Detta kan göra backuper som du laddar ner härifrån korrupta." + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "Misslyckades med att öppna databasfil." + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "Misslyckades med att skriva den dekrypterade databasen till filsystemet." + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "Kända backuper (råa)" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "Kan inte räkna upp filer i den katalogen." + +#: restorer.php:939 +msgid "Files found:" +msgstr "Hittade filer:" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "Använder katalog från backup: %s" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "Begärd tabellmotor (%s) finns inte tillgänglig ä ändrar till MyISAM." + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "Detta ser ut som en migration (backupen kommer från en webbplats med en annan adress/URL), men du valde inte alternativet sök-och-ersätt i databasen. Det är vanligen ett misstag." + +#: admin.php:4908 +msgid "file is size:" +msgstr "filen har storleken:" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "Gå hit för mer information." + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "Några filer laddas fortfarande ner eller bearbetas - var god vänta." + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "Detta backup-set kommer från en annan webbplats - det här är inte en återställning utan en migration. Du måste ha Migrator-insticksprogrammet för att få detta att fungera." + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "Tidszonen som används är den från dina WordPress-inställningar, se Inställningar -> Allmänt." + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "Ange i formatet HH:MM (ex. 14:22)." + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "%s uppladdning misslyckades" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "%s inloggning misslyckades" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "Du verkar inte ha verifierats hos %s" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "Misslyckades att komma åt %s vid borttagning (se logg-fil för mer information)" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "Du verkar inte ha verifierats hos %s (vid borttagning)" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "Dropbox fel: %s (se logg-fil för mer information)" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "Fel - misslyckades med nedladdning av fil från %s" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "Fel - ingen sådan fil existerar på %s" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "%s Fel" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "%s fel - misslyckades med uppladdning av fil" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "%s fel - misslyckades att återsammansätta delarna" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "%s autentisering misslyckades" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "Fel: %s" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "Backup-katalogen som specificerats existerar men är inte skrivbar." + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "Backup-katalogen som specificerats existerar inte." + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "Varning: %s" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "Senaste körning av backup-jobb:" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "En mycket stor fil påträffades: %s (storlek: %s Mb)" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "%s: oläsbar fil - kunde inte backas upp" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "Tabell %s har väldigt många rader (%s) - vi hoppas att ditt webbhotell ger dig tillräckliga resurser att dumpa ut den tabellen i backupen." + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "Ett fel uppstod under stängning av den sista databasfilen" + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "Påträffade varningar:" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "Backupen verkar ha lyckats (med varningar) och är nu komplett" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "Ditt lediga diskutrymme är väldigt lågt - bara %s Mb återstår" + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "Ny webbplats:" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "FEL: Webbplats-URL är redan upptaget." + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "Migrerad webbplats (från UpdraftPlus)" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "Ange detaljer för var den nya webbplatsen ska existera inom din multisajt-installation" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "Information som behövs för att fortsätta:" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "Nätverk aktiverar tema:" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "Bearbetat tillägg:" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "Kontrollera dina filbehörigheter: Kunde inte skapa och öppna katalog:" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "Vissa servrar anger att krypterad FTP finns tillgängligt, men time-out uppstår (efter lång tid) när du försöker använda den. Om detta händer dig, gå in i \"Expert-alternativ\" (nedan) och stäng av SSL där." + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "Din webbservers PHP-installation saknar en nödvändig modul (%s). Vänligen kontakta ditt webbhotells support och be dem aktivera den." + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "Vänligen kontrollera dina åtkomstuppgifter." + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "Felet som rapporterades av %s var:" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "Vänligen tillhandahåll den efterfrågade informationen och fortsätt sedan." + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "Kan inte släppa tabeller, så vänligen ta istället bort (%s)" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "Kan inte skapa nya tabeller, hoppar över kommandot (%s)" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "Webbplatsinformation:" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "Din databasanvändare har inte behörighet att skapa tabeller. Vi kommer att försöka återskapa genom att helt enkelt tömma tabellerna; detta borde fungera såvida a)du återställer från en WordPress-version med samma databasstruktur, och b) Din importerade databas inte innehåller några tabeller som inte redan finns på den importerande webbplatsen." + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "Varning:" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "Du kör med WordPress multisajt - men din backup är inte från en multisajt-webbplats." + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "Hoppar över återskapande av WordPress-kärnan vid import av enkel webbplats till en multisajt-installation. Om du hade något nödvändigt i WordPress-katalogen kommer du att behöva lägga tillbaka det manuellt från zip-filen." + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "Din webbservers PHP-installation inkluderar inte en nödvändig (för %s) modul (%s). Vänligen kontakta ditt webbhotells support och be dem aktivera den." + +#: admin.php:596 +msgid "Close" +msgstr "Stäng" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "Oväntat svar:" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "För att skicka mer än en adress, åtskilj varje adress med ett kommatecken." + +#: admin.php:576 +msgid "PHP information" +msgstr "PHP-information" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "zip exekverbar fil hittades:" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "visa PHP-information (phpinfo)" + +#: admin.php:2627 +msgid "Get it here." +msgstr "Skaffa den här." + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "Testa då vårt insticksprogram \"Migrator\". Efter att ha använt det en gång har du tjänat in inköpspriset jämfört med tiden som skulle ha behövts för att kopiera webbplatsen manuellt." + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "Vill du migrera eller klona/duplicera en webbplats?" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "Läs denna artikel för att se hur det görs steg-för-steg." + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "Migrera Webbplats" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "Tar bort... vänligen vänta på att kommunikationen med fjärrlagringsplatsen slutförs." + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "Ta också bort från fjärrlagringsplatsen" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "Senaste Nyheter från UpdraftPlus.com" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "Klona/Migrera" + +#: admin.php:2304 +msgid "Premium" +msgstr "Premium" + +#: admin.php:2305 +msgid "News" +msgstr "Nyheter" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "Backup-setet hittades inte" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "%s - kunde inte backa upp denna enhet; den motsvarande katalogen existerar inte (%s)" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "RSS-länk" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "Blogg-länk" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "Prenumerera på UpdraftPlus-bloggen för att få uppdaterade nyheter och erbjudanden" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "Testar %s Inställningar..." + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "Eller så kan du lägga till dem manuellt i din UpdraftPlus-katalog (vanligtvis wp-content/updraft), till exempel via FTP, och sedan använda \"scanna om\"-länken ovan" + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "UpdraftPlus avbuggningsläge är aktivt. Du kan se avbuggningsmeddelanden på denna sida inte bara från UpdraftPlus, utan också från alla andra tillägg som installerats. Vänligen kontrollera att meddelandet du ser kommer från UpdraftPlus innan du begär support från oss." + +#: admin.php:880 +msgid "Notice" +msgstr "Meddelande" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "Fel påträffades:" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "Scannar om (söker backuper som du har laddat upp manuellt till den interna backup-förvaringen)..." + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "Har börjat leta efter denna entitet" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "Lagra på" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "\"%s\" har ingen primärnyckel, manuell ändring krävs på rad %s." + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "rader: %d" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "Tid det tog (sekunder):" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "Fel:" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "SQL uppdateringskommandon kör:" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "Gjorda ändringar:" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "Undersökta rader:" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "Undersökta tabeller:" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "Kunde inte hämta lista över tabeller" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "Databas sök och ersätt: ersätt %s i denna backup-dump med %s" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "Varning: databasens URL webbplats-URL (%s) avviker från den förväntade (%s)" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "Inget att göra: webbplatsens URL är redan: %s" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "Fel: oväntat tom parameter (%s, %s)" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "Detta alternativ var inte valt." + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "Databas: sök och ersätt webbplats-URL" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "Misslyckades: vi kunde inte förstå resultatet som returnerades av %s-operationen." + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "Misslyckades: %s-operationen kunde inte starta." + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "(lär dig mer)" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "Sök och ersätt webbplatsens hemvist i databasen (migrera)" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "Alla referenser till sajtens hemvist i databasen kommer att bytas ut mot din nuvarande webbplats-URL som är: %s" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "Blogg-uppladdningar" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "Tillägg som krävs" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "Du har inte behörighet att komma åt denna sida." + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "Du har inte tillräcklig behörighet för att komma åt denna sida." + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "Multisajt-Installation" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "med början från nästa gång är det" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "Fel: Porten måste vara ett heltal." + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "lösenord" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "användarnamn" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "Värdnamn" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "Till vad ska katalogen ändras efter inloggning - ofta är detta relativt till din hemkatalog." + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "Sökväg till katalog" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "Lösenord" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "Port" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "Värd" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "%s Fel: Misslyckades med nedladdning" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "Kontrollera dina filbehörigheter: Kunde inte skapa och ange:" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "Inga %s hittades" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "Explicit kryptering används som förvalt alternativ. För att tvinga implicit kryptering (port 990), lägg till :990 till din FTP-server nedan." + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "Krypterad FTP finns tillgänglig och kommer automatiskt att försökas med först (icke-krypterad används om den krypterade misslyckas), såvida du inte stänger av funktionen via expert-alternativen. 'Testa FTP-Inloggning'-knappen kommer att tala om för dig vilken typ av anslutning som används." + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "Ingen backup av %s-kataloger: inget hittades att backa upp" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "Var försiktig med vad du matar in - om du anger / så kommer den verkligen att försöka skapa en zip innehållande hela din webbserver." + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "Om du använder det, ange en absolut sökväg (den är inte relativ till din WordPress-installation)." + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "Om du inte är säker på vad detta alternativ är till för, då kommer du inte att vilja ha det och bör stänga av det." + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "Ange katalog:" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "Fler Filer" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "WordPress-kärnan (inklusive eventuella tillägg i din WordPress rotkatalog)" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "Ovanstående filer omfattar alla filer i en WordPress-installation" + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "Skriv över wp-config.php" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "WordPress-kärnan" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "Misslyckades: Vi kunde inte placera en fil i den katalogen - var god kontrollera dina användaruppgifter." + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "Misslyckades" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "WebDAV URL" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "Lokal skrivning misslyckades: Nedladdning misslyckades." + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "Fel vid öppning av fjärrfil: Nedladdning misslyckades" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "Del %s: Ett %s-fel uppstod" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "Inga %s-inställningar hittades" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "Fel: vi loggade in men kunde inte skapa en fil i den utpekade katalogen." + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "Framgång: vi loggade in och bekräftade vår förmåga att skapa en fil i den utpekade katalogen (inloggningstyp:" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "Fel: Vi kunde inte logga in med dessa användaruppgifter." + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "Fel: Inga server-uppgifter lämnades." + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "Måste redan existera" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "Om du vill ha kryptering (exempelvis om du vill lagra affärskritisk information), då finns ett insticksprogram tillgängligt." + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "Endast ickekrypterad FTP stöds av vanliga UpdraftPlus." + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "Ditt %s kontonamn: %s" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "men en del av den returnerade informationen var inte som väntat - din körsträcka kan variera" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "du har autentiserat ditt %s-konto" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "finns det ett insticksprogram för det." + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "Om du backar upp flera webbplatser till samma Dropbox och vill organisera med underkataloger, då " + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "Backuper sparas i" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "Behöver du använda underkataloger?" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "fel: misslyckades med filuppladning till %s (se logg-fil för mer information)" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "Du verkar inte vara autentiserad hos Dropbox" + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "Kommunikationen med %s var inte krypterad." + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "Kommunikationen med %s var krypterad." + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "Vi kom åt din bucket och kunde skapa filer i den." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "Vi skapade din bucket med framgång, men försöket att skapa en fil i den misslyckades." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "Misslyckades" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "Misslyckades: Vi kunde inte komma åt eller skapa en sådan bucket. Vänligen kontrollera dina användaruppgifter, och om dessa är korrekta försöka med ett annat bucket-namn (eftersom en annan %s-användare redan kan ha tagit ditt namn)." + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "Region" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "Misslyckades: Inga uppgifter om bucket lämnades." + +#: methods/s3.php:961 +msgid "API secret" +msgstr "API-hemlighet" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "Ange endast ett bucket-namn eller en bucket och sökväg. Exempel: mybucket, mybucket/mypath" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "%s plats" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "%s hemlig nyckel" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "%s åtkomstnyckel" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "Om du ser fel om SSL-certifikat, gå då hit för hjälp." + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "Hämta din åtkomstnyckel och din hemliga nyckel från din %s konsol, välj sedan ett (globalt unikt - alla %s-användare) bucket-namn (bokstäver och siffror) (och - valfritt - en sökväg) att använda för lagring. Denna bucket kommer att skapas för dig om den inte redan finns." + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "%s Fel: Misslyckades att komma åt bucket %s. Kontroller dina behörigheter och dina användaruppgifter." + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "%s -fek; Misslyckades ladda ner %s. Kontrollera din behörighet och dina användaruppgifter." + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "%s återsammanfogningsfel (%s): (se logg-filen för mer information)" + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "%s uppladdning (%s): återsammanfogning misslyckades (se logg för fler detaljer)" + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "%s del %s: uppladdning misslyckades" + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "%s fel: filen %s avkortades oväntat" + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "%s upload: hämttande av uploadID för multipart-uppladdning misslyckades - se logg-fil för fler detaljer" + +#: methods/email.php:69 +msgid "Note:" +msgstr "Notera:" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "WordPress Backup" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "Vi fick åtkomst till containern, och vi kunde skapa filer i den." + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "Cloud Files fel - vi fick åtkomst till containern, men misslyckades med att skapa en fil i den" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "Misslyckades: Ingen container-information angavs." + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "Användarnamn" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "API-nyckel" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "Misslyckades: Ingen %s angavs." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "UpdraftPlus %s-modul kräver %s. Vänligen skicka ingen supportbegäran; det finns inga alternativ." + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "Cloud Files container" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "Cloud Files API-nyckel" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "Cloud Files användarnamn" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "Storbr." + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "USA (förvalt)" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "Moln i USA eller Storbritannien" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "Du bör också läsa denna viktiga FAQ." + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "Hämta din API-nyckel från din Rackspace Cloud-konsol (läs instruktionerna här), välj sedan ett container-namn att använda för lagringsutrymmet. Denna container kommer att skapas om den inte redan existerar." + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "Testa %s-inställningar" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "Fel vid nedladdning av fjärrfil: Misslyckades att ladda ner (" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "Fel vid öppning av lokal fil: Misslyckades att ladda ner" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "Cloud Files fel - misslyckades med att ladda upp fil" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "%s Error: Misslyckades med uppladdning" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "%s Fel: Misslyckades med att öppna lokal fil" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "Cloud Files fel - misslyckades att skapa och få åtkomst till containern" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "Cloud Files-autentiseringen misslyckades" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "Efter att du har sparat dina inställningar (genom att klicka 'Spara Ändringar' nedag), kom då tillbaka hit igen och klicka på den här länken för att slutföra autentiseringen hos Google." + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "Autentisera hos Google" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "Client Secret" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "Om Google senare visar meddelandet \"invalid_client\", så har du inte angivit ett gilitigt client ID här." + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "Client ID" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "Du måste lägga till följande som auktoriserad omdirigerings-URI (under \"Fler alternativ\") när du ombeds" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "Välj 'Webbapplikation' som applikationstyp." + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "För längre hjälp, inklusive skärmbilder, följ denna länk. Beskrivningen nedan är tillräcklig för mer erfarna användare." + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "%s är ett bra val, eftersom UpdraftPlus stöder delade uppladdningar - det spelar ingen roll hur stor din webbplats är, så kan UpdraftPlus ladda upp den lite i taget utan att avbrytas av timeouts." + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "Kontot är inte godkänt." + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "Misslyckades att ladda upp till %s" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "Kontot fullt: ditt %s-konto har bara %d bytes kvar, men filen som ska laddas upp är %d bytes" + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "Har ännu inte fått något åtkomstbevis från Google - du måste godkänna och återgodkänna din anslutning till Google Drive." + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "du har autentiserat ditt %s-konto." + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "Framgång" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "Din %s tilldelningsanvändning: %s %% använt, %s tillgängligt" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "Godkännande misslyckades" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "Ingen refresh token mottogs från Google. Det betyder oftast att du matat in din client-hemlighet fel, eller att du inte har återautentiserat (nedan) sedan du korrigerade den. Markera den igen, följ sedan länken för att autentisera igen. Slutligen, om det inte fungerar, använd expert-läget för att rensa alla dina inställningar, skapa en ny Google client ID/hemlighet och börja om igen." + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "följ denna länk för att skaffa det" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "%s support finns tillgängligt som tillval" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "Du har inte UpdraftPuls %s-insticksprogrammet installerat - skaffa det från %s" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "Du behöver åter-autentisera med %s eftersom dina befintliga användaruppgifter inte fungerar." + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "OK" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "Tabellprefix har ändrats: ändrar %s tabellfält motsvarande:" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "Klart: rader som bearbetats: %d på %2f sekunder" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "databasfrågan som kördes var:" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "kommer att återställa som:" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "Prefix för gamla tabeller:" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "Backup av:" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "Databas-åtkomst: Direkt MySQL-åtkomst är inte tillgängligt, så vi faller tillbaka till wpdb (detta kommer att vara betydligt långsammare)" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "Kunde inte öppna databasfil" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "Hittade inte databasfil" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "Varning: PHP safe_mode är aktivt på din server. Det betyder ökad risk för timeouts. Om sådana inträffar kommer du att behöva manuellt återställa filen via phpMyAdmin eller annan metod." + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "wp-config.php från backup: återställer (enligt användarens önskemål)" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "wp-config.php från backup: återskapas som wp-config-backup.php" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "Misslyckades med att skriva ut den avkrypterade databasen till filsystemet" + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "Misslyckades skapa tillfällig katalog" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "Misslyckades med att ta bort arbetskatalog efter återställning." + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "Kunde inte ta bort gamla katalogen." + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "Städer bort skräp..." + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "Återställer databasen (på en stor webbplats kan detta ta lång tid - om timeout inträffar (vilket kan hända om ditt webbhotell har konfigurerat hotellet för att begränsa resursnyttjandet) så bör du använda en annan metod, som exempelvis phpMyAdmin)..." + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "Avkryptering av databasen lyckades." + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "Avkrypterar databas (kan ta ett tag)..." + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "Packar upp backup..." + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "Kopiering av denna entitet misslyckades." + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "Backup-fil är inte tillgänglig." + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "UpdraftPlus kan inte direkt återskapa den här typen av enhet. Den måste återställas manuellt." + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "Kunde inte hitta en av filerna för återskapning" + +#: admin.php:5009 +msgid "Error message" +msgstr "Felmeddelande" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "Backupnoteringarna innehåller ingen information om den rätta storleken på den här filen." + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "Arkivet förväntas ha storleken:" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "Om du begär support, vänligen inkludera denna information:" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "AVBRYT: Kunde inte hitta information om vilka enheter som ska återställas." + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "UpdraftPlus Återställning: Pågår" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "Denna backup existerar inte i backup-historiken - återställning avbryts. Tidsstämpel:" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "Efter att ha tryckt på denna knapp kommer du att ges möjlighet att välja vilka komponenter du önskar återställa" + +#: admin.php:4572 +msgid "Press here to download" +msgstr "Tryck här för att ladda ner" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "Ta bort detta backup-set" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "Goda nyheter: Din webbplats kommunikation med %s kan krypteras. Om du ser några fel som rör krypteringen, titta i 'Expert-Inställningar' för mer hjälp." + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "Din webbservers PHP/Curl-installation stöder inte https-åtkomst. Vi kan inte komma åt %s utan detta stöd. Vänligen kontakta ditt webbhotells support. %s kräver Curl+https. Vänligen skicka ingen supportbegäran; det finns inget alternativ." + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "Din webbservers PHP/Curl-installation stöder inte https-åtkomst. Kommunikationen med %s kommer att vara okrypterad. Be ditt webbhotell installera Curl/SSL för att kunna kryptera (via ett insticksprogram)." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "Din webbservers PHP-installation saknar en nödvändig modul (%s). Vänligen kontakta ditt webbhotells support." + +#: admin.php:4062 +msgid "Save Changes" +msgstr "Spara Ändringar" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "Väljer du detta alternativ minskar säkerheten då du stoppar UpdraftPlus helt från att använda SSL för autentisering och krypterad transport, där det är möjligt. Notera att vissa molnlagringstjänster inte tillåter detta (exempelvis Dropbox), så för dessa tjänster kommer denna inställning inte att ha någon effekt." + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "Stäng av SSL helt där det är möjligt" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "Notera att inte alla molnbackuptjänster nödvändigtvis använder SSL-autentisering." + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "Väljer du detta alternativ minskar du säkerheten genom att du stoppar UpdraftPlus från att verifiera identiteten hos krypterade webbplatser som den ansluter till (exempelvis Dropbox, Google Drive). Det betyder att UpdraftPlus bara kommer att använda SSL för kryptering av trafik, inte för autentisering." + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "Verifiera inte SSL-certifikat" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "Vanligtvis använder UpdraftPlus sin egen uppsättning SSL-certifikat för att verifiera identiteten hos fjärrwebbplatser (för att säkerställa att den talar med det verkliga Dropbox, Amazon S3 osv och inte en hackare). Vi håller dessa uppdaterade. Men om du råkar ut för ett SSL-fel, då kan detta alternativ (som får UpdraftPlus att använda din webbservers uppsättning istället) kanske hjälpa." + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "Använd serverns SSL-certifikat" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "Om detta inte lyckas kontrollera behörigheterna på din server eller ändra den till en annan katalog som är skrivbar för din webbserverprocess." + +#: admin.php:3697 +msgid "click here" +msgstr "klicka här" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "eller, för att nollställa detta alternativ" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "Backup-katalogen som specificerades är skrivbar, vilket är bra." + +#: admin.php:4009 +msgid "Backup directory" +msgstr "Backup-katalog" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "Ta bort lokal backup" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "klicka denna för att visa några ytterligare alternativ; men låt bli såvida du inte har problem eller är nyfiken." + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "Visa expert-inställningar" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "Expert-Inställningar" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "Avbuggningsläge" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "Avancerat / Avbuggningsinställningar" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "Begär start av backup..." + +#: admin.php:591 +msgid "Cancel" +msgstr "Avbryt" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "Ingen" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "Välj din fjärrlagringsplats" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "Avkryptera en databas-backupfil manuellt" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "Fras för databaskryptering" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "Epost" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "Ovanstående kataloger är allt, förutom WordPress-kärnan, som du kan ladda ner ånyo från WordPress.org." + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "Exkludera dessa:" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "Varje annan katalog som hittas inuti wp-content" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "Inkludera i filbackupen" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "exempelvis om din server är hårt belastad dagtid och du vill köra den under natten" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "För att bestämma vid vilken tidpunkt en backup ska göras," + +#: admin.php:3683 +msgid "Monthly" +msgstr "Månatligen" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "Var 14:e dag" + +#: admin.php:3681 +msgid "Weekly" +msgstr "Varje vecka" + +#: admin.php:3680 +msgid "Daily" +msgstr "Dagligen" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "Ladda ner logg-fil" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "Katalogen existerar, men din webbserver har inte behörighet att skriva till den." + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "Katalogen skapades, men vi var tvingade att ställa behörigheten till 777 (skrivbart för alla) för att kunna skriva till den. Du bör kontrollera med ditt webbhotell att detta inte kommer att orsaka några problem" + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "Begäran till filsystemet att skapa katalogen misslyckades." + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "Ta bort" + +#: admin.php:3418 +msgid "show log" +msgstr "visa logg" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "Detta raderar alla dina UpdraftPlus-inställningar - är du säker på att du vill göra detta?" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "räkna" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "Notera. Denna siffra baseras på vad som exkluderades eller inte senast du sparade alternativen." + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "Total (okomprimerad) data på disk:" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "Nej" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "Ja" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "%s version:" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "Nuvarande minnesanvändning" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "Högsta minnesanvändning" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "Webbserver:" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "Vänligen ta en titt på UpdraftPlus Premium, eller det fristående Multisajt-insticksprogrammet." + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "Behöver du WordPress Multisajt-support?" + +#: admin.php:2654 +msgid "Multisite" +msgstr "Multisajt" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "Utför en engångs-backup" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "Läs denna hjälpsamma artikel om användbara saker att veta innan du börjar återställa." + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "Du kan söka och ersätta din databas (för migrering av en webbplats till en ny plats/URL) med Migrator-insticksprogrammet - följ denna länk för mer information" + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "%s återställningsalternativ:" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "Du kommer att behöva återställa den manuellt." + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "Följande entitet kunde inte återställas automatiskt: \"%s\"." + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "Din webbserver har PHP:s så kallade safe_mode aktivt." + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "Välj komponenter att återställa" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "Återställning ersätter denna webbplats teman, tillägg, uppladdningar, databas och/eller andra innehållskataloger (i enlighet med vad detta backup-set innehåller, och baserat på dina val)." + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "Återställ backup från" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "Återställ backup" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "Ta bort backup-set" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "Nedladdningsfel: servern skickade oss ett svar som vi inte kunde förstå." + +#: admin.php:570 +msgid "You should:" +msgstr "Du bör:" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "Fel:" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "beräknar..." + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "UpdraftPlus - Ladda upp backup-filer" + +#: admin.php:3020 +msgid "refresh" +msgstr "uppdatera" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "Utrymme på webbservern som används av UpdraftPlus" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "Google Drive" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "Om du använder denna, stäng då av Turbo/Road-läget." + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "Webbläsaren Opera" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "Fler uppgifter:" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "Ladda ner den senast modifierade loggfilen" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "(Inget loggat ännu)" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "Senaste logg-meddelandet" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "Återställ" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "Ta Backup Nu" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "Databas" + +#: admin.php:229 +msgid "Files" +msgstr "Filer" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "Nästa schemalagda backuper" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "Samtidigt som filbackupen" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "Inget schemalagt för närvarande" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "Detta administrationsgränssnitt använder JavaScipt i stor utsträckning. Du måste antingen aktivera det i din webbläsare eller använda en annan JavaScript-kapabel webbläsare." + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "JavaScript-varning" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "Ta bort Gamla Kataloger" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "Nuvarande gräns är:" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "Din backup har återskapats." + +#: admin.php:2310 +msgid "Version" +msgstr "Version" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "Huvudutvecklarens hemsida" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "Dina inställningar har raderats." + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "Backup-katalog skapades framgångsrikt." + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "Backup-katalog kunde inte skapas" + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "Borttagning av gamla kataloger misslyckades av någon anledning. Du kan vilja göra detta manuellt." + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "Gamla kataloger togs bort med framgång." + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "Ta bort gamla kataloger" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "Återvänd till UpdraftPlus-konfiguration" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "Aktiviteter" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "Återställningen lyckades!" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "Felaktigt filnamnsformat - detta ser inte ut som en krypterad databasfil skapad av UpdraftPlus" + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "Felaktigt filnamnsformat - detta ser inte ut som en fil skapad av UpdraftPlus" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "Ingen lokal kopia närvarande." + +#: admin.php:2072 +msgid "Download in progress" +msgstr "Nedladdning pågår" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "Filen klar." + +#: admin.php:2043 +msgid "Download failed" +msgstr "Nedladdning misslyckades" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "Fel" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "Kunde inte hitta detta jobb - kanske är det redan klart?" + +#: admin.php:1854 +msgid "Job deleted" +msgstr "Jobb borttaget" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "OK. Du bör snart se aktivitet i \"Senaste Logg-meddelande\"-fältet ovan." + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "Inget loggat ännu." + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "Vänligen konsultera denna FAQ om du har problem med att ta backuper." + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "Din webbplats körs på %s-webbservern." + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "UpdraftPlus stöder inte officiellt versioner av WordPress före %s. Det kan fungera för dig, men om det inte gör det, var då medveten om att ingen support är tillgänglig förrän du uppgraderar WordPress." + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "Du har mindre än %s ledigt diskutrymme på disken som UpdraftPlus konfigurerats att använda för att skapa backuper. UpdraftPlus kan få slut på utrymme. Kontakta ditt webbhotell för att lösa detta problem." + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "Varning" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "Insticksprogram / Pro Support" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "Inställningar" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "Tillåtna Filer" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "Kunde inte skapa %s-zip. Konsultera loggfilen för mer information." + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "Oändlig upprepning. konsultera din logg för mer information" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "Ta en titt på UpdraftPlus.Com för hjälp, insticksprogram och support" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "Behöver du ännu fler funktioner och support? Ta en titt på UpdraftPlus Premium" + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "Vänligen hjälp UpdraftPlus genom att ge ett positivt omdöme på wordpress.org" + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "Gillar du UpdraftPlus och kan avvara en minut?" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "Kan du översätta? Vill du förbättra UpdraftPlus för de som talar ditt språk?" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "Filen hittades ej" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "Avkrypteringsnyckeln som användes:" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "Avkryptering misslyckades. Den mest troliga anledningen är att du använt fel nyckel." + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "Avkryptering misslyckades. Databasfilen är krypterad, men du har inte angett någon krypteringsnyckel." + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "Kunde inte öppna backupfilen för skrivning" + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "Kunde inte spara backup-historik eftersom vi inte har någon backup-matris. Backupen misslyckades troligen." + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "Kunde inte läsa katalogen" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "Backup-katalog (%s) är inte skrivbar, eller existerar inte." + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "WordPress-backup är klar" + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "Backup-försöket har avslutats, uppenbarligen utan framgång" + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "Backupen lyckades uppenbarligen och är nu klar" + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "Krypteringsfel uppstod vid kryptering av databasen. Krypteringen avbröts." + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "Kunde inte skapa filer i backup-katalogen. Backup avbröts - kontrollera dina UpdraftPlus-inställningar." + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "Annat" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "Uppladdningar" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "Teman" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "Tillägg" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "Ingen loggfil hittades." + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "Loggfilen kunde inte läsas." + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "UpdraftPlus-meddelande:" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "UpdraftPlus-backuper" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-tl.mo b/plugins/updraftplus/languages/updraftplus-tl.mo new file mode 100644 index 0000000..a429102 Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-tl.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-tl.po b/plugins/updraftplus/languages/updraftplus-tl.po new file mode 100644 index 0000000..a7bb576 --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-tl.po @@ -0,0 +1,6109 @@ +# Translation of UpdraftPlus in Tagalog +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2014-05-30 09:48:51+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: tl_PH\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "" + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "" + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "" + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "" + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "" + +#: addons/webdav.php:91 +msgid "Path" +msgstr "" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "" + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "" + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "" + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "" + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "" + +#: admin.php:2310 +msgid "FAQs" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "" + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "" + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "" + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "" + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "" + +#: methods/ftp.php:355 +msgid "login" +msgstr "" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "" + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "" + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "" + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "" + +#: admin.php:2604 +msgid "Now" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "" + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "" + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "" + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "" + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "" + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "" + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "" + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "" + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "" + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "" + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "" + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "" + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "" + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "" + +#: admin.php:3420 +msgid "stop" +msgstr "" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "" + +#: admin.php:3092 +msgid "this backup set" +msgstr "" + +#: admin.php:3020 +msgid "calculate" +msgstr "" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "" + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "" + +#: admin.php:601 +msgid "Saving..." +msgstr "" + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:557 +msgid "Fetching..." +msgstr "" + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "" + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "" + +#: admin.php:2884 +msgid "Dismiss" +msgstr "" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "" + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "" + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "" + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "" + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "" + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "" + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "" + +#: admin.php:3860 +msgid "File Options" +msgstr "" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "" + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "" + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "" + +#: admin.php:5157 +msgid "settings" +msgstr "" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "" + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "" + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "" + +#: admin.php:442 +msgid "Extensions" +msgstr "" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "" + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "" + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "" + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "" + +#: addons/azure.php:524 +msgid "container" +msgstr "" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "" + +#: addons/azure.php:523 +msgid "optional" +msgstr "" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "" + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "" + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "" + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "" + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "" + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "" + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "" + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "" + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "" + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "" + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "" + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "" + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "" + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "" + +#: restorer.php:767 +msgid "Deferring..." +msgstr "" + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "" + +#: admin.php:3081 +msgid "Deselect" +msgstr "" + +#: admin.php:3080 +msgid "Select all" +msgstr "" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "" + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "" + +#: admin.php:634 +msgid "For backups older than" +msgstr "" + +#: admin.php:633 +msgid "week(s)" +msgstr "" + +#: admin.php:632 +msgid "hour(s)" +msgstr "" + +#: admin.php:631 +msgid "day(s)" +msgstr "" + +#: admin.php:630 +msgid "in the month" +msgstr "" + +#: admin.php:629 +msgid "day" +msgstr "" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "" + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "" + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "" + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "" + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "" + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "" + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "" + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "" + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "" + +#: admin.php:607 +msgid "Update quota count" +msgstr "" + +#: admin.php:606 +msgid "Counting..." +msgstr "" + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "" + +#: admin.php:603 +msgid "Connecting..." +msgstr "" + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "" + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "" + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "" + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "" + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "" + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "" + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "" + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "" + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "" + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "" + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "" + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "" + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "" + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "" + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "" + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "" + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "" + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "" + +#: admin.php:4423 +msgid "Site" +msgstr "" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "" + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "" + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "" + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "" + +#: admin.php:617 +msgid "Deleting..." +msgstr "" + +#: admin.php:616 +msgid "key name" +msgstr "" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "" + +#: admin.php:611 +msgid "Creating..." +msgstr "" + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "" + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "" + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "" + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "" + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "" + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "" + +#: addons/migrator.php:1861 +msgid "key" +msgstr "" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "" + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "" + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "" + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "" + +#: admin.php:608 +msgid "Adding..." +msgstr "" + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "" + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "" + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "" + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "" + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "" + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "" + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "" + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "" + +#: methods/email.php:73 +msgid "configure it here" +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "" + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "" + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "" + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "" + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "" + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "" + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "" + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "" + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "" + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "" + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "" + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "" + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "" + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "" + +#: admin.php:2831 +msgid "Personal support" +msgstr "" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "" + +#: admin.php:2718 +msgid "Get it from" +msgstr "" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "" + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "" + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "" + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "" + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "" + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "" + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "" + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "" + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "" + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "" + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "" + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "" + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "" + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "" + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "" + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "" + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "" + +#: admin.php:4368 +msgid "Backup date" +msgstr "" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "" + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "" + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "" + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "" + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "" + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "" + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "" + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "" + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "" + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "" + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "" + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "" + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "" + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "" + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "" + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "" + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "" + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "" + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "" + +#: backup.php:829 +msgid "Incremental" +msgstr "" + +#: backup.php:829 +msgid "Full backup" +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "hanapin at palitan" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "Go" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "Ang paghahanap / pagpapalit ay hindi na mababawi - sigurado ka ba na gusto mong gawin ito?" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "Ito ay maaaring maging madaling sirain ang iyong site; kaya, gamitin ito may pag-iingat!" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "palitan ng" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "maghanap" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "Paghahanap / palitan database" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "terminong ginamit sa paghahanap" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "Naganap Masyadong maraming mga error database - aborting" + +#: backup.php:895 +msgid "read more at %s" +msgstr "magbasa nang higit pa sa %s" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "Mga ulat sa email na nilikha ng UpdraftPlus (libreng edisyon) ay magbibigay sa iyo ng pinakabagong mga balita UpdraftPlus.com" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "N.B. Kung nag-install ka ng UpdraftPlus sa ilang mga site ng WordPress, pagkatapos ay hindi mo magamit muli ang iyong proyekto; dapat kang lumikha ng bago mula sa iyong Google API console para sa bawat site." + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "Hindi ka pa gumawa ng anumang mga backup." + +#: admin.php:3872 +msgid "Database Options" +msgstr "Database Options" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "Plugin para sa pagde-debug:" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "%s (%s nagamit)" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "Libreng disk space sa account:" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "Ang pindutan na ito ay hindi pinagana dahil ang iyong backup na direktoryo ay hindi writable (tingnan ang mga setting)." + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "Umiiral na pag-backup" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "Kasalukuyang Katayuan" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "Upang baguhin ang anuman sa mga setting ng default ng kung ano ang na-back up, i-configure ang naka-iskedyul na backup, upang ipadala ang iyong mga backup sa remote na imbakan (inirerekomenda), at higit pa, pumunta sa tab na mga setting." + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "Upang makagawa ng isang backup, pindutin lamang ang Backup Now." + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "Maligayang pagdating sa UpdraftPlus!" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "Nang walang ito, ang pag-encrypt ay magiging marami slower.If mong magpasok ng teksto dito, ito ay ginagamit upang i-encrypt ang backup ng database (Rijndael). ba gumawa ng hiwalay na tala nito at huwag mawala ito, o ang lahat ng iyong mga backup ay maging walang silbi. Ito ay din ang key na ginamit upang i-decrypt backup mula sa interface na ito admin (kaya kung babaguhin mo ito, pagkatapos ay awtomatikong decryption ay hindi gagana hangga't hindi mo baguhin ito pabalik)." + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "Testing..." + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "Test connection..." + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "Table prefix" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "Backup panlabas na database" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "Magdagdag ng isang panlabas na database upang backup ..." + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "Kung ang iyong database ay may kasamang dagdag na mga talahanayan na hindi bahagi ng WordPress site na ito (malalaman mo kung ito ang kaso), pagkatapos ay i-activate ang pagpipiliang ito upang i-back din sa kanila up." + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "Backup mga talahanayan di-WordPress na nakapaloob sa parehong database bilang ng WordPress" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "Magiging sanhi ng mga talahanayan naka-imbak sa ang MySQL database na kung saan ay hindi kasama sa WordPress (na kinilala sa pamamagitan ng kanilang kulang ang configure WordPress prefix,%s) upang i-back up din ng pagpipiliang ito." + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "Nabigo ang koneksyon." + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "Nagtagumpay ang koneksyon." + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "kabuuang (mga) talahanayan%s natagpuan; %s gamit ang ipinahiwatig prefix." + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "%s table(s) found." + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "Nabigo ang pagtatangka koneksyon sa database" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "database name" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "host" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "user" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "External database (%s)" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "Sundin ang link na ito sa iyong Google API Console, at doon buhayin ang Drive API at lumikha ng isang Client ID sa seksyon ng API Access." + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "Nabigong ma-access ang pangunahing folder" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "However, subsequent access attempts failed:" + +#: admin.php:4499 +msgid "External database" +msgstr "External database" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "Magkakaroon din magsanhi ito ng pag-debug output mula sa lahat ng mga plugin na ipapakita sa screen na ito - mangyaring huwag magulat upang makita ang mga ito." + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "I-back up ng higit mga database" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "Una, ipasok ang decryption key" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "Maaari mong mano-manong i-decrypt ang isang naka-encrypt na database dito." + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "Maaari rin itong backup na mga panlabas na mga database." + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "Hindi nais na mai-spied sa? UpdraftPlus Premium maaari encrypt ang iyong database backup." + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "gamitin UpdraftPlus Premium" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "Nabigo ang Decryption. Ang database file ay naka-encrypt." + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "Ang WordPress database lamang ang maaaring maibalik; kailangan mong harapin ang mga panlabas na database ng mano-mano." + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "May naganap na error sa unang%s utos - aborting run" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "Nabigo ang koneksyon: suriin ang iyong mga detalye ng access, na ang server ng ​​database ay up, at na ang koneksyon sa network ay hindi firewalled." + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "Nabigo ang pagtatangka koneksyon sa database." + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "Warning: tahanan URL (%s) ang database ay iba sa kung ano ang aming inaasahan (%s)" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "Sa %s, mga pangalan ng landas ay sensitibong kaso." + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "Kung iiwan mo itong blangko, pagkatapos ay ang backup ay ilalagay sa root ng iyong% s" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "e.g. %s" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "Kung ang folder ay hindi umiiral na, pagkatapos ito ay lilikhain." + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "Ipasok ang path ng folder ang% s nais mong gamitin dito." + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "Container" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "Iwanan itong blangko, at isang default ay napili." + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "Tenant" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "Sundin ang link na ito para sa karagdagang impormasyon" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "pagpapatunay na URI" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "Kunin ang iyong mga kredensyal sa pag-access mula sa iyong OpenStack Swift provider, at pagkatapos ay pumili ng isang pangalan ng container upang gamitin para sa imbakan. Lalagyan na ito ay nilikha para sa iyo kung ito ay hindi na umiiral." + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "Nabigong i-download%s" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "Nabigong i-download" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "Nabigo upang ilista ang mga file" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "Nabigong mai-upload%s" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "Success:" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr " Pagkatapos na-save mo ang iyong mga setting (sa pamamagitan ng pag-click sa 'I-save ang mga Pagbabago' sa ibaba), at pagkatapos ay bumalik dito sa sandaling at i-click ang link na ito upang makumpleto ang pagpapatotoo sa%s." + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "(You appear to be already authenticated)." + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "Dropbox" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "Patunayan na may% s" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "Error sa pag-download ng mga remote file: Nabigong i-download" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "Region: %s" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "%s error - na-access namin ang lalagyan, ngunit nabigong lumikha ng isang file sa loob nito" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "Ang bagay na% s ay hindi natagpuan" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "Could not access %s container" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "%s error - Nabigo upang ma-access ang lalagyan" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "Account holder's name: %s." + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "Upang magagawang upang magtakda ng isang pasadyang pangalan ng folder, gamitin UpdraftPlus Premium." + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "Ito ay isang panloob sa Google Drive ID number" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "This is NOT a folder name." + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "Folder" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "%s download: di nagtagumpay: Hindi nahanap ang file ng" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "Name: %s." + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "Google Drive listahan ng mga file: Nabigo upang ma-access ang pangunahing folder" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "Ang bersyon ng iyong%s:%s." + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "Kailangan mong hilingin sa iyong kumpanya ng web hosting upang mag-upgrade." + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "Ito ang malayuang pamamaraan ng imbakan (% s) ay nangangailangan ng PHP% s o mas bago." + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "Direktoryo Tema (%s) ay hindi nahanap, ngunit bersyon mas mababang-case na umiiral; pag-update ng database pagpipilian nang naaayon" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "Call" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "Fetch" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "Nangangailangan ang tampok na ito na bersyon% s% s o mas bago" + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "Elegant themes theme builder plugin data detected: resetting temporary folder" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "%s files have been extracted" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "Nabigong ma-unpack ang archive" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "Error - Nabigo upang i-download ang file" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "Rescan ang lokal na folder para sa mga bagong set ng mga backup" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "Dapat mong i-update ang UpdraftPlus upang matiyak na mayroon kang isang bersyon na na-nasubok para sa compatibility." + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "It has been tested up to version %s." + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "Ang naka-install na bersyon ng UpdraftPlus Backup / Ibalik ay hindi pa nasubok sa iyong bersyon ng WordPress (% s)." + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "password/key" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "Key" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "Ang iyong login ay maaaring maging alinman sa password o key na batay sa - kailangan mo na lang ipasok ay ang isa, hindi pareho." + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "Ang key na ibinigay ay hindi isang wastong format, o noon ay corrupt." + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "SCP/SFTP password/key" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "Files backup (created by %s" + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "Files and database WordPress backup (created by %s)" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "Backup created by: %s." + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "Database (nilikha sa pamamagitan ng% s)" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "hindi kilalang pinagmulan" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "Rescan remote storage" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "Upload backup files" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "Backup na ito ay nilikha ng%s, at maaaring i-import." + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "Basahin ang pahinang ito para sa gabay sa mga posibleng sanhi at kung paano ayusin ito." + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "WordPress ay may isang numero (%d) ng naka-iskedyul na mga gawain na kung saan ay overdue. Maliban kung ito ay isang site na pag-unlad, ito ay malamang ay nangangahulugan na ang scheduler sa iyong WordPress install ay hindi gumagana." + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "Kung ito ay isang backup na ginawa ng isang iba't ibang mga backup plugin, pagkatapos ay i-UpdraftPlus Premium ay maaaring makatulong sa iyo." + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "Gayunpaman, ang UpdraftPlus archive ay Standard zip / SQL file - kaya kung ikaw ay sigurado na ang iyong mga file ay may karapatan na format, ay maaari mong palitan ang pangalan nito upang tumugma sa pattern na iyon." + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "Ang file na ito ay hindi lumitaw na maging isang UpdraftPlus backup archive (tulad ng mga file ay zip o gz mga file na magkaroon ng isang pangalan tulad ng: backup_(time)_(site name)_(code)_(type).(zip|gz))." + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "Backup na nilikha ng mga hindi kilalang pinagmulan (%s) - hindi na maibabalik." + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "Ang WordPress folder na nilalaman (wp-content) ay hindi nahanap sa ito zip file." + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "Ang bersyong ito ng UpdraftPlus ay hindi alam kung paano panghawakan ang ganitong uri ng mga banyagang backup" + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "%s ay nagbalik ng hindi inaasahang tugon ng HTTP:%s" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "Hindi sinusuportahan ng UpdraftPlus module para sa ang paraan na ito ng access ng file (% s) ay naglilista ng mga file" + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "Walang mga setting ang natagpuan" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "Isa o higit pang mga backup ay idinagdag sa pag-iiscan remote na imbakan; Tandaan na ang mga backup hindi ay awtomatikong tatanggalin sa pamamagitan ng \"panatilihin \" mga setting ng kung / kapag nais mong tanggalin ang mga ito pagkatapos ay kailangan mong gawin ito nang mano-mano." + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "Rescanning remote at lokal na imbakan para sa backup na sets..." + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "(Basahin ng higit pa)" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "Pagsasaayos ng multisite path" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "Mag-log ang lahat ng mga mensahe sa syslog (tanging mga admin ng server ay malamang na nais ito)" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "Add another..." + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "Remove" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "Other %s FAQs." + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "Lagyan ito ng tsek upang makatanggap ng higit pang impormasyon at mga email sa proseso ng backup - kapaki-pakinabang kung ang isang bagay ay pagpunta mali." + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "Kung pagpasok ng maramihang mga file / mga direktoryo, pagkatapos ihiwalay ang mga ito gamit ang mga kuwit. Para sa mga entity sa tuktok na antas, maaari mong gamitin ang isang * sa simula o dulo ng entry bilang isang wildcard." + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "Nakita data manager plugin uri Custom nilalaman: clearing opsyon cache" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "Dapat na paganahin ng iyong kumpanya sa pagho-host ang mga pag-andar bago maaaring gumana ang%s." + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "Pag-install ng PHP Ang iyong web server ay hindi pinagana ang mga pag-andar:%s." + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "encrypted FTP (explicit encryption)" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "encrypted FTP (implicit encryption)" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "regular non-encrypted FTP" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "Nilikha sa pamamagitan ng Backup:" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "Magagamit na mag-claim sa site na ito" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "Upang mapanatili ang iyong access sa suporta, mangyaring i-renew." + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "Ang iyong bayad na access sa UpdraftPlus support mawawalan ng bisa sa lalong madaling panahon." + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "Upang mabawi ang iyong pag-access, mangyaring i-renew." + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "Ang iyong bayad na access sa UpdraftPlus support ay napaso na." + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "Ang iyong bayad na access sa UpdraftPlus update para sa site na ito ay mawawalan ng bisa sa lalong madaling panahon." + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "Upang panatilihin ang iyong pag-access, at panatilihin ang pag-access sa mga pag-update (kabilang ang mga hinaharap na mga tampok at sa pagiging tugma sa WordPress release hinaharap) at suporta, mangyaring i-renew." + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "Ang iyong bayad na access sa UpdraftPlus update para sa% s ng mga add-on ang% s sa site na ito ay mawawalan ng bisa sa lalong madaling panahon." + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "Ang iyong bayad na access sa UpdraftPlus update para sa mga add-on% s sa site na ito ay napaso na." + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "Upang mabawi ang access sa pag-update (kabilang ang mga hinaharap na mga tampok at sa pagiging tugma sa WordPress release hinaharap) at suporta, mangyaring i-renew." + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "Ang iyong bayad na access sa UpdraftPlus update para sa site na ito ay napaso na. Hindi ka na makatanggap ng mga update sa UpdraftPlus." + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "Bale-walain mula sa pangunahing dashboard (para sa% s linggo)" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "Nagtagumpay Ang pagtatangka upang i-undo ang double-compression." + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "Nabigo ang pagtatangka upang i-undo ang double-compression." + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "Lumilitaw ang database file sa Na-compress na dalawang beses - marahil ang website na-download ito mula ay nagkaroon ng isang di-configure webserver." + +#: admin.php:1528 +msgid "Constants" +msgstr "Constants" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "Nabigong mabuksan ang database file para sa pagbabasa:" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "Walang mga talahanayan ng database na natagpuan" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "mangyaring maghintay para sa ibang oras pagtatangka" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "Tandaan na babala na mensahe ay advisory - ang backup na proseso ay hindi itigil para sa kanila. Sa halip, nagbibigay sila ng impormasyon na maaring mong kapaki-pakinabang, o na maaaring magpahiwatig ang pinagmulan ng isang problema kung ang backup ay hindi magtagumpay." + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "Database queries processed: %d in %.2f seconds" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "Naghahanap at pinapalitan Naabot hilera: %d" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "Nilalaktawan ang talahanayan na ito: data sa talahanayan na ito (%s) ay hindi dapat na paghahanap / pinalitan" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "Buong account: account iyong%s ay lamang ang natitira%d bytes, ngunit ang mga file na ia-upload ay may %d mga byte natitirang (kabuuang sukat na: %d mga byte)" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "Naganap error:" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "Sundin ang link na ito upang i-download ang log file para sa pagpapanumbalik (kinakailangan para sa anumang mga kahilingan sa suporta)." + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "See this FAQ also." + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "Kung pinili mong walang remote na imbakan, pagkatapos ay ang pag-backup mananatili sa web-server. Ito ay hindi inirerekumenda (maliban kung plano mong mano-manong kopyahin ang mga ito sa iyong computer), pati na ang pagkawala ng web-server ay nangangahulugan na hindi nawawala ang iyong parehong website at ang pag-backup sa isang kaganapan." + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "Binabawi (kung kinakailangan) at paghahanda ng mga backup file ..." + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "Ang pag-setup ng PHP sa webserver ay nagbibigay-daan segundo lamang ang%s para sa PHP upang mapatakbo, at hindi payagan ang mga limitasyon na ito upang ma itinaas. Kung mayroon kang maraming data upang i-import, at kung ang ibalik beses operasyon, pagkatapos ay kakailanganin mong hilingin sa iyong kumpanya ng web hosting ng mga paraan upang taasan ang limitasyon na ito (o tangkaing ang pagpapanumbalik piraso-by-piraso)." + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "May mga hindi pa natatanggal na folder na nag eexist (mangyaring gamitin ang \"Tanggalin ang Lumang Mga Direktoryo \" na pindutan upang tanggalin ang mga ito bago subukang muli): %s" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "Ang halaga ng oras na pinahihintulutan para sa WordPress plugin upang tumakbo ay napakababa (segundo% s) - dapat mo itong dagdagan upang maiwasan ang backup pagkabigo dahil sa time-out (kumonsulta sa iyong kumpanya sa pagho-host ng web para sa higit pang tulong - ito ay ang setting na max_execution_time PHP; ang pinapayong halaga ay% s segundo o higit pa)" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "Kapag pinalitan sa blog / site na talahanayan: mula sa:%s sa:%s" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "%s: Nilalaktawan ang file ng cache (ay hindi umiiral)" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "Hindi pinagana ang plugin:%s: manu-manong muling i-activate ito kapag handa ka na." + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "Nag-time out ang% s koneksyon; kung ipinasok mo ang server na tama, pagkatapos ito ay karaniwang sanhi ng isang firewall ng pagharang ng koneksyon - dapat mong suriin sa iyong kumpanya ng web hosting." + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "Ang kasalukuyang tema ay hindi natagpuan; upang maiwasan ang pagtigil ng mga site mula sa paglo-load, ang iyong tema ay ibinalik sa default na tema" + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "Restore failed..." + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "Mga mensahe:" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "Ang isang SQL line ay mas malaki kaysa sa maximum na laki ng packet at hindi maaaring hatiin ang nakita; ang linyang ito ay hindi naproseso, ngunit bababa:%s" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "Direktoryo ay hindi umiiral" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "New User's Email Address" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "New User's Username" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "Admin API Key" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "Admin Username" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "US o UK Rackspace Account" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "Ipasok ang iyong Rackspace admin username / API key (sa gayon ay Rackspace mapapatunayan ang iyong pahintulot upang lumikha ng mga bagong gumagamit), at ipasok ang isang bagong (natatanging) username at email address para sa bagong user at isang pangalan ng container." + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "Lumikha ng bagong user ng ​​API at lalagyan" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "API Key: %s" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "Password: %s" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "Username: %s" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "Cloud Files operation failed (%s)" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "Kaguluhan: na ay umiiral na address ng gumagamit o e-mail" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "Kailangan mong magpasok ng isang wastong bagong email address" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "Kailangan mong magpasok ng isang lalagyan" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "Kailangan mong magpasok ng isang bagong username" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "Kailangan mong magpasok ng isang admin API key" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "Kailangan mong magpasok ng isang admin username" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "Lumikha ng isang bagong gumagamit ng API na may access sa lamang lalagyan ito (sa halip na ang iyong buong account)" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "Nagdadagdag ng pinahusay na mga kakayahan para sa Rackspace Cloud Files gumagamit" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "Rackspace Cloud Files, pinahusay na" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "Cloud Files Container" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "Cloud Files API Key" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "Upang lumikha ng isang bagong Rackspace API sub-user at API key na may access lamang sa mga ito Rackspace lalagyan, gamitin ang mga add-on." + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "Cloud Files Username" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "London (LON)" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "Hong Kong (HKG)" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "Northern Virginia (IAD)" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "Chicago (ORD)" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "Sydney (SYD)" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "Dallas (DFW) (default)" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "Cloud Files Storage Region" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "Mga Account na nilikha sa rackspacecloud.com ay US-accounts; mga account na nilikha sa rackspace.co.uk ay nakabatay sa UK" + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "Na batay sa UK US o Rackspace Account" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "Mga Account na nilikha sa rackspacecloud.com ay US account; mga account na nilikha sa rackspace.co.uk ay UK account." + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "Nabigo ang Authorisation (i-check ang iyong mga credential)" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "Isang hindi alam na error ang naganap kapag sinusubukang kumonekta sa UpdraftPlus.Com" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "Create" + +#: admin.php:556 +msgid "Trying..." +msgstr "Trying..." + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "Sa bagong user na Rackspace console paaword ay (ito ay hindi ipapakita muli):" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "(when decrypted)" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "Error data:" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "Backup ay hindi umiiral sa ang backup kasaysayan" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "I-install ang iyong WordPress May lumang mga direktoryo mula sa estado nito bago mo naibalik / migrate (teknikal na impormasyon: ang mga ito ay suffixed may-gulang). Dapat mong pindutin ang pindutan na ito upang tanggalin ang mga ito sa lalong madaling na-verify mo na ang pagpapanumbalik nagtrabaho." + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "Hatiin ang linya upang maiwasan ang paglampas sa maximum na packet " + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "Ang iyong user database ay walang pahintulot na i-drop ang mga talahanayan. Susubukan naming ibalik sa pamamagitan ng simpleng pag tanggal ng laman ng mga talahanayan; ito ay dapat na gumana hangga't ikaw ay nag rerestore mula sa isang bersyon ng WordPress na may parehong istraktura ng database (%s)" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "Bagong prefix talahanayan:%s" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "Ang file permissions ay hindi pina-payagan ang mga lumang data na inilipat at manatili; sa halip, ito ay tinanggal na." + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "%s: Mayroon ng ganitong direktoryo, at ito ay papalitan" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "Hindi mailipat ang file sa lugar. Suriin ang iyong mga pahintulot sa file." + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "Hindi mailipat ang mga bagong file papunta sa lugar. Suriin ang iyong wp-content/upgrade folder." + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "Hindi mailipat ang lumang mga file." + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "Ang paglipat ng mga lumang data sa labas ng paraan ..." + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "Magdagdag ng isa pang address ..." + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "Ipasok ang address dito upang magkaroon ng isang ulat na ipinadala sa mga ito kapag natapos ng isang backup na trabaho." + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "Email reports" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "%s checksum: %s" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "files: %s" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "Gamitin ang seksyong \"ulat\" upang i-configure ang mga email address na gagamitin." + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr " (with warnings (%s))" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr " (with errors (%s))" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "Debugging information" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "Uploaded to:" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "Time taken:" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "Warnings" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "Errors" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "Errors / warnings:" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "Contains:" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "Backup began:" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "Backup Report" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "%d hours, %d minutes, %d seconds" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "%d errors, %d warnings" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "%s authentication" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "%s error: %s" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "%s logo" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "%s ay hindi nagbalik ng inaasahang tugon - suriin ang iyong log file para sa higit pang mga detalye" + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "Module na PHP Ang kailangang%s ay hindi naka-install - hilingin sa iyong kumpanya ng web hosting upang paganahin ito" + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "Para sa higit pang mga pagpipilian, gamitin ang \"% s \" add-on." + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "Email address ng admin ng iyong site (%s) ay magagamit." + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "Connect" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "Para sa higit pang mga tampok sa pag-uulat, gamitin ang Pag-uulat ng mga add-on." + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "(bersyon:%s)" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "Magkaroon ng kamalayan na ang mail server ay may posibilidad na magkaroon ng mga limitasyon sa laki; karaniwang sa paligid Mb%s; pag-backup ng mas malaki kaysa sa anumang mga limitasyon ay malamang na hindi dumating." + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "Kapag ang pamamaraan ng imbakan ng email ay gumagana, magpadala din ang buong backup" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "Pinakabagong mga katayuan:" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "Naglalaman ng Backup:" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "Back up:%s" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "Ang log file ay nai-attach sa email na ito." + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "Hindi kilalang / hindi inaasahang error - mangyari lamang na taasan ang isang kahilingan sa suporta" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "Database lamang (mga file ay hindi bahagi ng partikular na iskedyul)" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "Database (mga file na backup ay hindi nakumpleto)" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "Mga file lamang (database ay hindi bahagi ng partikular na iskedyul)" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "File (database backup ay hindi nakumpleto)" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "Mga File at database" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "(Ito ay angkop sa lahat ng WordPress backup plugin maliban kung ang mga ito ay tahasang naka-code para sa multisite compatibility)." + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "Nang walang pag-upgrade, UpdraftPlus nagbibigay-daan sa bawat blog admin kung sino ang maaaring baguhin ang mga setting ng plugin upang i-back up (at samakatuwid ay ma-access ang data, kabilang ang mga password, mula sa) at ibalik (kabilang ang may-customize na mga pagbabago, hal nagbago mga password) buong network ." + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "WordPress Multisite ay suportado, na may dagdag na tampok, sa pamamagitan ng UpdraftPlus Premium, o ang Multisite add-on." + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "Ito ay isang WordPress multi-site (aka network) pag-install." + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "UpdraftPlus warning:" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "(o kumonekta gamit ang form sa pahinang ito kung nakapag pa ito nabibili)" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "mangyaring sundin ang link na ito upang i-update ang plugin upang isaaktibo ito" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "mangyaring sundin ang link na ito upang i-update ang plugin sa pagkakasunud-sunod upang makakuha ng mga ito" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "latest" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "Ang iyong bersyon:%s" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "Mayroon kayong ito" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "UpdraftPlus Support" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "Isang pag-update naglalaman ng iyong mga addons ay magagamit para sa UpdraftPlus - mangyaring sundin ang link na ito upang makakuha ng mga ito." + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "UpdraftPlus Addons" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "Isang pag-update ay magagamit para sa UpdraftPlus - mangyaring sundin ang link na ito upang makakuha ng mga ito." + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "UpdraftPlus.Com ibinalik ng tugon, ngunit hindi namin maunawaan ito" + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "Ang iyong email address at password na hindi nakilala sa pamamagitan ng UpdraftPlus.Com" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "UpdraftPlus.Com ibinalik ng tugon na hindi namin maunawaan (data:%s)" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "UpdraftPlus.Com ay sumagot, ngunit hindi namin naintindihan ang tugon" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "Nabigo kaming matagumpay na kumonekta sa UpdraftPlus.Com" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "Reporting" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "Options (raw)" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "Magpadala ng isang ulat lamang kapag mayroong mga babala / mga error" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "URL ng Nilalaman:" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "Tingnan din ang \"Higit pang mga Files \" add-on mula sa aming shop." + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "Ang iyong libreng puwang sa iyong hosting account ay napakababa - only %s Mb remain" + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "Ang halaga ng memorya (RAM) na pinapayagan para sa PHP ay napakababa (Mb% s) - dapat mo itong dagdagan upang maiwasan ang pagkabigo dahil sa hindi sapat na memorya (kumonsulta sa iyong kumpanya ng web hosting para sa higit pang tulong)" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "Manage Addons" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "Buy It" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "Kunin ito mula sa UpdraftPlus.Com Store" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "activate ito sa site na ito" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "Mayroon kang isang hindi aktibong pagbili" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "Nakatalagang sa site na ito" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "Magagamit para sa site na ito (sa pamamagitan ng iyong pagbili ng all-addons)" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "(tila isang pre-release o withdraw release)" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "pumunta dito" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "Kailangan mo upang makakuha ng suporta?" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "Naganap ang isang error kapag sinusubukan upang makuha ang iyong mga add-on." + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "Isang hindi alam na tugon ay natanggap. Tugon ay:" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "I-claim ang hindi ibinigay ng - ang iyong mga detalye sa pag-login ng account ay mali" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "Mangyaring maghintay habang ginagawa namin ang claim ..." + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "Mga error na naganap kapag sinusubukang kumonekta sa UpdraftPlus.Com:" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "Ikaw ay kasalukuyang hindi konektado sa isang UpdraftPlus.Com account." + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "Kung bumili ka ng mga bagong add-on, pagkatapos ay sundin ang link na ito upang i-refresh ang iyong koneksyon sa" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "Ikaw ay kasalukuyang konektado sa isang UpdraftPlus.Com account." + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "Interesado sa pag-alam tungkol sa iyong UpdraftPlus.Com seguridad password? Basahin ang tungkol sa ito dito." + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "Nakalimutan mo ba ang iyong mga detalye?" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "Di pa nakakuha ng isang account (ito ay libre)? Pumunta makakuha ng isa!" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "Kumonekta sa iyong mga UpdraftPlus.Com account" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "Ang bersyon ng iyong web server ng ​​PHP ay masyadong luma (" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "Mukhang mo na magkaroon ng na naka-install ang laos na Updraft plugin - marahil ba kayong mga ito nalilito?" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "Pumunta dito upang simulan ang pag-install ito." + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "UpdraftPlus ay hindi pa naka-install." + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "Pumunta dito upang i-activate ito." + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "UpdraftPlus ay hindi pa ginawang aktibo." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "Pumunta dito upang kumonekta." + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "Hindi ka pa nakakonekta sa iyong mga UpdraftPlus.Com account, i-daan sa iyo upang ilista ang iyong mga binili na add-on." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "Nang walang ito, ang pag-encrypt ay magiging marami mas mabagal." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "Ang iyong web-server ay hindi naka-install ang module na ang%s." + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr " (Lumitaw ikaw ay napatotohanan, bagaman maaari mong patotohanan muli upang i-refresh ang iyong access kung nagkaroon ka ng problema)." + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "I-drop ang mga backup file dito" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "pamahalaan WordPress mula sa command line - malaking time-saver" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "Tingnan ang WordShell" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "Gusto ng higit pang mga tampok o bayad, garantisadong suporta? Tingnan ang UpdraftPlus.Com" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "Nagbalik ang server ng web ng isang error code (subukan muli, o suriin ang iyong mga tala ng web server)" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "ang restore operasyon ay nagsimula na. Huwag pindutin ang stop o isara ang iyong browser hanggang sa ito ay matapos." + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "Kung ibubukod mo ang parehong database at ang mga file, pagkatapos ay naibukod ang lahat ng bagay!" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "Tahanan Site:" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "Mga Pagpipilian sa Remote Imbakan" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "(Maaaring matagpuan ang mga tala sa pahina ng mga setting UpdraftPlus bilang normal) ..." + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "Tandaan ang pagpipiliang ito para sa susunod na beses (ikaw pa rin magkaroon ng pagkakataon na baguhin ito)" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "Upload failed" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "Maaari kang magpadala ng isang backup na sa higit sa isang destinasyon na may isang add-on." + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "Tandaan: ang progress bar sa ibaba ay batay sa mga yugto, HINDI oras. Huwag itigil ang backup dahil lamang tila sa ay nanatiling sa parehong lugar para sa isang habang - na ay normal." + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "(%s%%, file %s of %s)" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "Magbasa nang higit pa tungkol sa kung paano ito gumagana ..." + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "Nabigong: namin nagawang mag-log in, subalit nabigong matagumpay na lumikha ng isang file sa lokasyong iyon." + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "Nabigong: namin nagawang mag-log in at lumipat sa ipinahiwatig na direktoryo, subalit nabigong matagumpay na lumikha ng isang file sa lokasyong iyon." + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "Gamitin SCP sa halip ng SFTP" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "SCP/SFTP user setting" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "SCP/SFTP host setting" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "Nabigo ang pagtatangka upang ipadala ang backup sa pamamagitan ng email (marahil ang backup ay masyadong malaki para sa meth" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "Backup is of: %s." + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "%s settings test result:" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "(Hindi tapos)" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "Kung iyong nakikita ang nalalaman backup kaysa sa iyong inaasahan, pagkatapos ito ay marahil dahil sa pagtanggal ng lumang backup na set ay hindi mangyayari hanggang sa makumpleto ang isang sariwang backup." + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr " Huwag ilagay ito sa loob ng iyong mga pag-upload o direktoryo plugin, pati na magiging sanhi ng recursion (mga backup ng mga backup ng mga backup ng ...)." + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "Ito ay kung saan UpdraftPlus ay isulat ang mga zip file na ito ay lumilikha sa umpisa. Dapat na writable na direktoryo na ito sa pamamagitan ng iyong web server. Ito ay may kaugnayan sa iyong direktoryo ng nilalaman (na sa pamamagitan ng default ay tinatawag na wp-content)." + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "Job ID: %s" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "last activity: %ss ago" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "next resumption: %d (after %ss)" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "Unknown" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "tapos na ang Backup" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "Naghihintay hanggang sa naka-iskedyul na oras upang subukang muli dahil sa mga error" + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "Pruning old backup sets" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "Ina-upload ang mga file sa remote na imbakan" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "Encrypted database" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "Encrypting database" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "Nilikha database backup" + +#: admin.php:3359 +msgid "table: %s" +msgstr "table: %s" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "Paglikha ng database backup" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "Nilikha ang file backup Zip" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "Paglikha ng mga file na backup Zip" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "Backup begun" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "Backups in progress:" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "Scheduler ay pinagana sa iyong WordPress i-install, sa pamamagitan ng setting na DISABLE_WP_CRON. Maaaring tumakbo Walang mga backup (kahit na \"Backup Ngayon\") maliban kung nag-set up ng isang pasilidad na tumawag sa mano-mano ang scheduler, o hanggang sa ito ay pinagana." + +#: restorer.php:646 +msgid "file" +msgstr "file" + +#: restorer.php:639 +msgid "folder" +msgstr "folder" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "UpdraftPlus na kinakailangan upang lumikha ng%s sa iyong direktoryo ng nilalaman, ngunit nabigo - mangyaring suriin ang iyong mga pahintulot ng file at paganahin ang pag-access (%s)" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "Ang backup ay hindi natapos; isang pagpapatuloy ay naka-iskedyul" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "Ang iyong website ay binisita madalang at UpdraftPlus hindi nakakakuha ang mga mapagkukunan nito umaasa para; pakibasa ang pahinang ito:" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "Ang pagpapatunay% s ay hindi ma sige, dahil ibang bagay sa iyong site ay breaking ito. Subukang huwag paganahin ang iyong iba pang mga plugin at lumipat sa isang default na tema. (Sa partikular, ikaw ay naghahanap ng mga sangkap na nagpapadala ng output (pinaka-malamang babala PHP / error) bago magsimula ang pahina. Ino-off ang anumang mga setting sa pag-debug ay maaari ring makatulong)." + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "Ang iyong limitasyon PHP memorya (na itinakda ng iyong kumpanya ng web hosting) ay napakababa. UpdraftPlus tinangka upang taasan ito ngunit ay hindi matagumpay. Plugin na ito ay maaaring nagpupumilit na may isang limitasyon ng memory ng mas mababa sa 64 Mb - lalo na kung mayroon kang napakalaking mga file na-upload na (bagaman sa kabilang banda, maraming mga site ay maging matagumpay na may isang limitasyon ng 32MB - maaaring mag-iba ang iyong karanasan)." + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "Magpatuloy sa pag-update" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "Huwag i-abort pagkatapos ng pagpindot Magpatuloy sa ibaba - maghintay para sa backup upang makumpleto." + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "UpdraftPlus Automatic Backups" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "Naganap error:" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "Paglikha ng backup sa UpdraftPlus ..." + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "Automatic Backup" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "Paglikha ng database backup sa UpdraftPlus ..." + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "Wala kang sapat na mga pahintulot upang i-update ang site na ito." + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "themes" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "mga plugin" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "Simula sa awtomatikong pag-backup ..." + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "Paglikha ng %s at database backup sa UpdraftPlus ..." + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Awtomatikong i-backup (kung saan may-katuturan) plugin, mga tema at mga WordPress database na may UpdraftPlus bago ang pag-update" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "Kung hindi ka sigurado pagkatapos ay dapat itigil; kung hindi, maaari mong sirain ang pag-install ng WordPress." + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "Hindi ito mukhang isang wastong WordPress core backup - ang file% s ay nawawala." + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "Hindi mabuksan ang zip file (% s) - maaaring hindi pre-i-scan ito upang suriin ang integridad nito." + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "Hindi mabasa ang mga zip file (% s) - ay hindi ma-pre-i-scan ito upang suriin ang integridad nito." + +#: admin.php:2310 +msgid "More plugins" +msgstr "More plugins" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "Support" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "UpdraftPlus ay hindi nagawang upang mahanap ang prefix talahanayan kapag kinikilatis ang backup database." + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "Kulang ito ng database backup WordPress mga talahanayan core:%s" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "Ikaw ay pag-import mula sa isang mas bagong bersyon ng WordPress (% s) sa isang mas lumang isa (% s). Walang mga garantiya na WordPress ay maaaring panghawakan ito." + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "Ang database ay masyadong maliit upang maging isang wastong database WordPress (laki: Kb%s)." + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "I-update ang Tema" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "I-update ang Plugin" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "Maging ligtas sa awtomatikong pag-backup" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "I-dismiss (para sa%s linggo)" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "Mga Upload path (%s) ay hindi na umiiral - pag-reset (%s)" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "Kung maaari mo pa ring basahin ang mga salitang ito pagkatapos tatapusin naglo-load ang pahina, pagkatapos ay mayroong problema JavaScript o jQuery sa site." + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "Ang file ay na-upload." + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "Katayuan ng tugon ng server Hindi alam:" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "Hindi alam ng pagtugon ng server:" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "Ay tinangka na ito decryption key:" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "Sundin ang link na ito upang tangkain ang decryption at i-download ang database file sa iyong computer." + +#: admin.php:584 +msgid "Upload error" +msgstr "Upload error" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "Ang file na ito ay hindi lumitaw na maging isang UpdraftPlus naka-encrypt na database archive (tulad ng mga file na .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." + +#: admin.php:582 +msgid "Upload error:" +msgstr "Upload error:" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "(tiyakin na sinusubukan mong mag-upload ng zip file sa nakaraang nalikha sa pamamagitan ng UpdraftPlus)" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "at pagkatapos ay, kung nais mo," + +#: admin.php:572 +msgid "Download to your computer" +msgstr "I-download sa iyong computer" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "Tanggalin mula sa iyong mga web server" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "Mga halimbawa ng S3-katugmang imbakan provider:" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "Hindi nito tatanggalin ang anumang mga archive pagkatapos ng unpacking kanila, dahil walang ulap imbakan para sa backup na ito" + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "Tila ikaw ay kulang ng isa o higit pang mga archive mula sa hanay multi-archive." + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "(%d archive(s) in set)." + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "Hatiin ang mga archive bawat:" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "Error: nagpadala sa amin ang server ng tugon (JSON) na hindi namin naintindihan." + +#: admin.php:563 +msgid "Warnings:" +msgstr "Mga Babala:" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "Error: Nagpadala ang server ng walang laman na tugon." + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "Ito mukhang isang file na nilikha ng mga UpdraftPlus, ngunit ito i-install ay hindi malaman tungkol sa ganitong uri ng bagay:% s. Marahil ay kailangan mong i-install ng isang add-on?" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "Ang backup archive file ang nai-proseso, ngunit may ilang mga error. Kailangan mong kanselahin at itama ang anumang mga problema bago muling subukan." + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "Ang backup archive file ang nai-proseso, ngunit may ilang mga babala. Kung ang lahat ay mabuti, pagkatapos ngayon ay pindutin ang Ibalik muli upang magpatuloy. Kung hindi man, kanselahin at itama muna ng anumang mga problema." + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "Ang backup archive file ay matagumpay na naproseso. Pindutin Ngayon Ibalik muli upang magpatuloy." + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "Ito multi-archive backup set na lilitaw upang magkaroon ng mga sumusunod na mga archive nawawala:%s" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "File (%s) ay natagpuan, ngunit may isang iba't ibang laki (%s) mula sa kung ano ang inaasahan (%s) - maaaring ito ay corrupt." + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "File ay natagpuan, ngunit ay zero-sized (kailangan mong i-upload ang muling ito):%s" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "Hindi nahanap ang file (kailangan mong i-upload ito):%s" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "Walang ganoong backup set na umiiral" + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "Ang backup na archive para sa file na ito ay hindi mahanap. Hindi pinapayagan ang malayuang pamamaraan ng imbakan sa paggamit (% s) sa amin upang makuha ang mga file. Upang magsagawa ng anumang pananauli gamit UpdraftPlus, kailangan mong kumuha ng isang kopya ng file na ito at ilagay ito sa loob ng working folder UpdraftPlus ni" + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "Nabigong ilipat direktoryo (i-check ang iyong mga pahintulot ng file at quota ng disk):% s" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "Nabigong ilipat ang file (i-check ang iyong mga pahintulot ng file at quota ng disk):% s" + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "Ang paglipat ng unpacked backup sa lugar ..." + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "Nabigong buksan ang zip file (%s) -%s" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "WordPress root directory server path:%s" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "%s end-point" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "... At marami pa!" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "S3 (Compatible)" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "Ang file na ay hindi lokal na naroroon - mga pangangailangan sa pagkuha mula sa remote na imbakan" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "Naghahanap para sa archive% s: pangalan ng file:%s" + +#: admin.php:4836 +msgid "Final checks" +msgstr "Final checks" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "Lagyan ito ng tsek upang tanggalin ang anumang mga kalabisan backup na file mula sa iyong server matapos ang pagda-backup run (ibig sabihin kung i-uncheck mo, pagkatapos ay ang anumang mga file despatsado sa malayo ay mananatiling din nang lokal, at ang anumang mga file na pinananatiling nang lokal ay hindi napapailalim sa mga limitasyon ng pagpapanatili)." + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "I-drop ang naka-encrypt na database ng mga file (db.gz.crypt mga file) dito upang mag-upload ng mga ito para sa decryption" + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "Ang iyong wp-content direktoryo ng server path:% s" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "Raw kasaysayan ng backup" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "Ipakita ang raw backup at listahan ng file" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "Pinoproseso ang file - mangyari lamang na maghintay ..." + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "Mangyaring kumonsulta ang FAQ na ito para sa tulong sa kung ano ang gagawin tungkol dito." + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "May problema sa outputting dagdag whitespace iyong pag-install ng WordPress. Ito maaari sira-backup na-download mo mula dito." + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "Nabigong mabuksan ang database file." + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "Nabigong isulat ang decrypted database upang ang filesystem." + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "Known backups (raw)" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "Hindi magawang i-magbilang ng mga file sa directory na iyon." + +#: restorer.php:939 +msgid "Files found:" +msgstr "Mga file na natagpuan:" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "Paggamit ng direktoryo mula sa backup:%s" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "Requested table engine (% s) ay hindi naroroon - pagbabago sa MyISAM." + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "Ito mukhang isang paglipat (ang backup ay mula sa isang site na may ibang address / URL), ngunit hindi ikaw ang sinuri ang pagpipilian upang maghanap-at-palitan ang database. Iyon ay karaniwang pagkakamali." + +#: admin.php:4908 +msgid "file is size:" +msgstr "file ay na sukat:" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "Pumunta dito para sa karagdagang impormasyon." + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "Ang ilang mga file ay ng da-download pa rin o pinoproseso - mangyaring maghintay." + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "Ang backup na set ay mula sa ibang site - ito ay hindi isang pagbabalik sa dati, ngunit isang paglilipat. Kailangan mo ang Migrator add-on upang gawin ang trabahong ito." + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "Ang time zone ay ginamit na mula sa iyong mga setting ng WordPress, sa Mga Setting -> General." + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "Enter in format HH:MM (e.g. 14:22)." + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "%s upload failed" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "%s login failure" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "You do not appear to be authenticated with %s" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "Nabigong i-access%s kapag nagtatanggal ng (tingnan ang log file para sa higit pa)" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "Hindi mo na lumalabas na napatotohanan na may mga%s (habang tinatanggal)" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "Error sa Dropbox:%s (tingnan ang log file para sa higit pa)" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "Error - Nabigo upang i-download ang file mula sa% s" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "Error - walang ganoong file ay umiiral sa% s" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "%s Error" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "%s error - failed to upload file" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "%s error - Nabigo upang muling magtipon chunks" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "%s authentication failed" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "Error: %s" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "Backup na direktoryo tinukoy na umiiral, ngunit hindi writable." + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "Backup na direktoryo tinukoy ang hindi umiiral." + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "Babala:%s" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "Last backup job run:" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "Isang napakalaking file naranasang:%s (laki:%s Mb)" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "%s: hindi nababasa ng file - hindi ma-back up" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "Talahanayan ng %s ay napaka maraming mga hilera (%s) - inaasahan namin na ang nagbibigay sa iyo ang iyong web host ng sapat na mga mapagkukunan upang ma dump out ang talahanayang na sa backup" + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "May naganap na error habang isinasara ang panghuling database file" + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "Nakaranas babala:" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "Ang backup ay tila Nagtagumpay (may mga babala) at ngayon ay kumpleto na" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "Ang iyong libreng puwang sa disk ay napakababa - only %s Mb remain" + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "New site:" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "ERROR: Site URL already taken." + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "Migrated site (from UpdraftPlus)" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "Ipasok ang mga detalye para sa kung saan bagong site na ito ay upang mabuhay sa loob ng iyong multisite install:" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "Impormasyon na kailangan upang magpatuloy:" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "Network activating theme:" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "Processed plugin:" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "Suriin ang iyong mga pahintulot ng file: ma hindi matagumpay na lumikha at ipasok direktoryo:" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "Ang ilang mga server advertise encrypt na FTP bilang magagamit, ngunit pagkatapos ay i-time-out (pagkatapos ng mahabang panahon) kapag tinangka mong gamitin ito. Kung sa tingin mo ito happenning, pagkatapos ay pumunta sa\"Expert Opsyon \" (sa ibaba) at i-off ang SSL doon." + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "Pag-install ng PHP Ang iyong web server ay hindi isinama ng isang kinakailangang module (%s). Mangyaring makipag-ugnay sa suporta ng iyong web hosting provider at hilingin ang mga ito upang paganahin ito." + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "Mangyaring suriin ang iyong mga kredensyal sa pag-access." + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "Ang error na iniulat ng%s ay:" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "Mangyaring ibigay ang hiniling na impormasyon, at pagkatapos ay magpatuloy." + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "Hindi ma-drop ang mga talahanayan, kaya magbura sa halip (% s)" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "Hindi makalikha ng bagong mga talahanayan, kaya lalaktawan ang command na ito (% s)" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "Impormasyon ng Site:" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "Ang iyong user database ay walang pahintulot na lumikha ng mga talahanayan. Susubukan namin itong ibalik sa pamamagitan ng simpleng pag tanggal ng laman ng mga talahanayan; ito ay dapat na gumana hangga't a) ikaw ay nag restore mula sa isang bersyon ng WordPress na may parehong istraktura ng database, at b) ang iyong na-import na database ay hindi naglalaman ng tables na meron na sa importing site." + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "Babala:" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "Ikaw ay tumatakbo sa WordPress multisite - ngunit ang iyong mga backup ay hindi sa isang multisite site." + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "Nilalaktawan ang pagpapanumbalik ng WordPress core kapag i-import ng isang solong site sa isang multisite install. Kung nagkaroon ka ng anumang bagay kinakailangan sa iyong direktoryo ng WordPress pagkatapos ay kakailanganin mong muling idagdag ito nang mano-mano mula sa isang zip file." + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "Pag-install ng PHP Ang iyong web server ay hindi isinama ng isang kinakailangan (para sa% s) module (% s). Mangyaring makipag-ugnay sa suporta ng iyong web hosting provider at hilingin ang mga ito upang paganahin ito." + +#: admin.php:596 +msgid "Close" +msgstr "Close" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "Hindi inaasahang tugon:" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "Upang magpadala sa higit sa isang address, ihiwalay ang bawat address gamit ang isang kuwit." + +#: admin.php:576 +msgid "PHP information" +msgstr "PHP information" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "nahanap zip executable:" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "show PHP information (phpinfo)" + +#: admin.php:2627 +msgid "Get it here." +msgstr "Kumuha ng mga ito dito." + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "Pagkatapos, subukan ang aming \"Migrator \" add-on. Pagkatapos gamitin ito nang isang beses, makikita mo na-save ang presyo ng pagbili kumpara sa oras na kinakailangan upang kopyahin ang isang site sa pamamagitan ng kamay." + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "Gusto mong i-migrate o clone / doblehin ang isang site?" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "Read this article to see step-by-step how it's done." + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "Migrate Site" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "Tinatanggal ... mangyaring payagan ang oras para sa mga komunikasyon sa remote na imbakan upang makumpleto." + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "Tatanggalin din mula sa remote na imbakan" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "Pinakabagong balita UpdraftPlus.com:" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "Clone/Migrate" + +#: admin.php:2304 +msgid "Premium" +msgstr "Premium" + +#: admin.php:2305 +msgid "News" +msgstr "News" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "Hindi nahanap ang Backup na hanay" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "%s - hindi ma-back ito entity up; ang mga kaukulang direktoryo ay hindi umiiral (%s)" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "RSS link" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "Blog link" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "Mag-subscribe sa mga UpdraftPlus blog upang makakuha ng up-to-date balita at alok" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "Testing %s Settings..." + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "O, maaari mong ilagay ang mga ito nang mano-mano sa iyong direktoryo ng UpdraftPlus (karaniwan ay wp-content/updraft), hal sa pamamagitan ng FTP, at pagkatapos ay gamitin ang \"rescan \" na link itaas." + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "Debug mode UpdraftPlus ay on. Maaari kang makakita ng mga abiso sa pag-debug sa pahinang ito hindi lamang mula sa UpdraftPlus, ngunit mula sa iba pang mga plugin na naka-install. Mangyaring subukan upang tiyakin na ang paunawa na nakikita mo ay mula UpdraftPlus bago mong taasan ang isang kahilingan sa suporta." + +#: admin.php:880 +msgid "Notice" +msgstr "paunawa" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "Nakaranas ng mga error:" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "Rescanning (naghahanap ng mga backup na manu-mano mong na-upload sa panloob na backup) ..." + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "Nagsimula na naghahanap para sa entity na ito" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "Store at" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "\"%s\" ay walang pangunahing key, kailangan sa hilera %s manu-manong pagbabago." + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "rows: %d" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "Time taken (seconds):" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "Errors:" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "SQL update commands run:" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "Changes made:" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "Rows examined:" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "Tables examined:" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "Hindi makuha ang listahan ng mga talahanayan" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "Database ng paghahanap at palitan: palitan ang% s sa backup na tambakan ng basura na may mga% s" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "Warning: URL ng site ang database ni (%s) ay naiiba sa kung ano ang aming inaasahan (%s)" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "Nothing to do: the site URL is already: %s" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "Error: unexpected empty parameter (%s, %s)" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "Ang pagpipiliang ito ay hindi napili." + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "Database: URL maghanap at palitan ang site" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "Failed: we did not understand the result returned by the %s operation." + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "Failed: the %s operation was not able to start." + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "(matuto nang higit pa)" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "Hanapin at palitan ang lokasyon ng site sa database (migrate)" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "Ang lahat ng mga sanggunian sa lokasyon ng site sa database ay mapapalitan ng iyong kasalukuyang URL ng site, kung saan ay:%s" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "upload blog" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "Dapat gamitin ng mga plugin" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "Wala kang pahintulot upang ma-access ang pahinang ito." + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "Wala kang sapat na mga pahintulot upang ma-access ang pahinang ito." + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "Multisite I-install" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "simula sa susunod na panahon ito ay" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "Pagkabigo: Port dapat maging isang integer." + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "password" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "username" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "host name" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "Saan upang baguhin ang direktoryo na pagkatapos ng pag-log in - madalas na ito ay may kaugnayan sa iyong home directory." + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "Directory path" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "Password" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "Port" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "Host" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "%s Error: Nabigong i-download" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "Suriin ang iyong mga pahintulot ng file: ma hindi matagumpay na lumikha at ipasok ang:" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "No %s found" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "Magalang na pag-encrypt ay ginamit sa pamamagitan ng default. Upang puwersahin ang implicit-encrypt (port 990), idagdag: 990 sa iyong FTP server sa ibaba." + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "Naka-encrypt na FTP ay magagamit, at awtomatikong mai-sinubukan muna (bago ang pagbagsak pabalik sa mga di-naka-encrypt na kung ito ay hindi matagumpay), maliban kung hindi mo pinagana ito gamit ang mga pagpipilian sa eksperto. Ang 'Subukan ang FTP Pag-login' na button ay magsasabi sa iyo kung anong uri ng koneksyon na ito ay ginagamit na." + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "Walang backup ng mga direktoryo% s: nagkaroon walang natagpuan upang i-back up" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "Mag-ingat kung ano ang ipinasok mo - kung ipinasok mo ang / pagkatapos ito talaga ay subukan upang lumikha ng isang zip na naglalaman ng iyong buong webserver." + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "Kung gumagamit nito, ipasok ang isang absolute path (ito ay hindi kaugnay sa iyong WordPress i-install)." + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "Kung hindi ka sigurado kung ano ang opsyon na ito ay para sa, pagkatapos ay hindi mo gusto ito, at dapat itong i-off." + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "Ipasok ang directory:" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "Higit pang mga File" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "WordPress core (kabilang ang anumang mga pagdaragdag sa iyong WordPress root directory)" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "Ang mga file sa itaas masaklaw ang lahat sa isang WordPress pag-install." + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "Over-write wp-config.php" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "WordPress Core" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "Nabigo: Hindi namin nagawang maglagay ng isang file sa directory na iyon - mangyaring suriin ang iyong mga kredensyal." + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "Failed" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "WebDAV URL" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "Local write failed: Failed to download" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "Error sa pambungad na remote file: Nabigong i-download" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "Chunk %s: A %s error occurred" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "Walang mga setting ng% s ang natagpuan" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "Pagkabigo: matagumpay naming naka-log in, ngunit hindi nagawang lumikha ng isang file sa ibinigay na direktoryo." + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "Tagumpay: matagumpay naming naka-log in, at nakumpirma ang aming kakayahan upang lumikha ng isang file sa ibinigay na direktoryo ng (uri ng pag-login:" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "Pagkabigo: hindi matagumpay namin ginawa mag-log in gamit ang mga kredensyal." + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "Pagkabigo: Walang mga detalye ng server ay naibigay na." + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "Kailangang naka exist" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "Kung gusto mong pag-encrypt (eg ikaw ay pag-iimbak ng sensitibong data ng negosyo), pagkatapos ay isang add-on ay magagamit." + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "Tanging ang mga di-naka-encrypt na FTP ay suportado ng mga regular na UpdraftPlus." + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "Your %s account name: %s" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "bagaman bahagi ng ibinalik na impormasyon ay hindi tulad ng inaasahan - maaaring mag-iba ang iyong mileage" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "na napatotohanan mo ang account na iyong%s" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "mayroong isang add-on para iyon." + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "Kung ikaw back up ng ilang mga site sa parehong Dropbox at nais na ayusin na may mga sub-folder, pagkatapos ay" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "Pag-backup ay naka-save sa" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "Kailangang gumamit ng mga sub-folder?" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "Error: Nabigong ma-upload ang file sa% s (tingnan ang log file para sa higit pa)" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "Hindi mo na lumalabas na napatunayang may Dropbox" + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "Ang pakikipag-usap sa% s ay hindi naka-encrypt." + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "Ang pakikipag-usap sa%s ay naka-encrypt." + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "Na-access namin ang bucket, at nagawang lumikha ng mga file sa loob nito." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "Matagumpay naming na-access ang bucket, ngunit nabigo ang pagtatangka upang lumikha ng isang file sa loob nito." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "pagkabigo" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "Pagkabigo: Hindi namin mai-Matagumpay na ma-access o lumikha ng tulad ng isang bucket. Mangyaring suriin ang iyong mga kredensyal sa pag-access, at kung ang mga tama pagkatapos ay subukan ang ibang pangalan bucket (bilang gumagamit ang isa pang %s ay maaaring nai kinuha ang iyong pangalan)." + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "Region" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "Pagkabigo: Walang mga detalye bucket ay naibigay na." + +#: methods/s3.php:961 +msgid "API secret" +msgstr "API secret" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "Magpasok lamang ng isang pangalan bucket o isang bucket at path. Mga halimbawa: mybucket, mybucket / mypath" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "%s location" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "%s secret key" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "%s access key" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "Kung makakita ka ng error tungkol sa SSL certificate, pagkatapos mangyaring pumunta dito para sa tulong." + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "Maging ang iyong access key at sikretong key mula sa iyong%s console , pagkatapos ay pumili ng isang (globally natatanging - ang mga gumagamit ang lahat ng%s) pangalan bucket (mga titik at numero) (at opsyonal na isang path) na gagamitin para sa imbakan. Bucket na ito ay nilikha para sa iyo kung ito ay hindi na umiiral." + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "Error sa%s: Nabigong i-access bucket%s. Suriin ang iyong mga pahintulot at mga kredensyal." + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "%s Error: Nabigong i-download ang%s. Suriin ang iyong mga pahintulot at mga kredensyal." + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "%s re-assembly error (%s): (tingnan ang log file para sa higit pa)" + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "%s pag-upload (%s): re-assembly Nabigo (tingnan ang log para sa higit pang mga detalye)" + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "%s chunk %s: upload failed" + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "%s error: file% s ay pinaikling nang hindi inaasahan" + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "% s pag-upload: Nabigo ang pagkuha ng uploadID para sa multipart pag-upload - makita ang log file para sa higit pang mga detalye" + +#: methods/email.php:69 +msgid "Note:" +msgstr "Note:" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "WordPress Backup" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "Na-access namin ang lalagyan, at nagawang lumikha ng mga file sa loob nito." + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "Cloud Files error - na-access namin ang lalagyan, ngunit nabigong lumikha ng isang file sa loob nito" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "Pagkabigo: Walang mga detalye ng container ay naibigay na." + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "Username" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "API key" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "Failure: No %s was given." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "Module na %s UpdraftPlus ng mga nangangailangan %s. Mangyaring huwag mag-file ng anumang mga kahilingan ng suporta; walang alternatibong." + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "Cloud Files container" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "Cloud Files API key" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "Cloud Files username" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "UK" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "US (default)" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "US o UK Cloud" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "Gayundin, dapat mong basahin ito mahalagang FAQ." + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "Kunin ang iyong API key from your Rackspace Cloud console (read instructions here), pagkatapos ay pumili ng isang pangalan ng container upang gamitin para sa imbakan. Lalagyan na ito ay nilikha para sa iyo kung ito ay hindi na umiiral." + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "Test %s Settings" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "Error sa pag-download ng mga remote file: Nabigong i-download (" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "Error sa pagbukas ng mga lokal na file: Nabigong i-download" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "Cloud Files error - ang nabigong mag-upload ng file" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "%s Error: Failed to upload" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "%s Error: Nabigong buksan ang mga lokal na file" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "Cloud Files error - Nabigo upang lumikha at i-access ang lalagyan" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "Cloud Files authentication failed" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "After na-save mo ang iyong mga setting (sa pamamagitan ng pag-click sa 'I-save ang mga Pagbabago' sa ibaba), at pagkatapos ay bumalik dito sa sandaling at i-click ang link na ito upang makumpleto ang pagpapatunay sa Google." + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "Patunayan sa Google" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "Client Secret" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "Kung ipinapakita ng Google mamaya mo ang mensahe \"invalid_client \", pagkatapos ay hindi ka nagpasok ng isang wastong client ID dito." + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "Client ID" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "Dapat mong idagdag ang mga sumusunod bilang mga awtorisadong URI pag-redirect (sa ilalim \"Higit pang mga Pagpipilian\") kapag tinanong" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "Sundin ang link na Na Ito Sa na iyong Google API Console, sa doon buhayin ang Drive API sa lumikha Ng isang Client ID Sa seksyon Ng API Access." + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "Para sa mas mahaba ng tulong, kabilang ang mga screenshot, sundin ang link na ito. Ang paglalarawan sa ibaba ay sapat na para sa higit pang mga user eksperto." + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "%s ay isang mahusay na pagpipilian, dahil sumusuporta UpdraftPlus chunked pag-upload - hindi mahalaga kung gaano kalaki ang iyong site ay, UpdraftPlus maaaring mag-upload ito ng kaunti sa isang pagkakataon, at hindi makakuha ng thwarted sa pamamagitan ng timeout." + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "Account is not authorized." + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "Failed to upload to %s" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "Buong account: account iyong%s ay lamang ang natitira%d bytes, ngunit ang mga file na ia-upload ay% d mga byte" + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "Hindi pa nakuha ng token sa pag-access mula sa Google - kailangan mo upang pahintulutan o muling pahintulutan ang iyong koneksyon sa Google Drive." + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "you have authenticated your %s account." + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "Success" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "Your %s quota usage: %s %% used, %s available" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "Authorization failed" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "Walang mga token refresh na natanggap mula sa Google. Madalas Nangangahulugan ito na ang ipinasok mong lihim ang iyong client na mali, o na hindi ka pa muling napatunayang (sa ibaba) mula noong pagwawasto ito. Muling suriin ito, pagkatapos ay sundin ang link na ito upang patotohanan muli. Panghuli, kung hindi iyon gumana, pagkatapos ay gamitin ang mga dalubhasang mode upang punasan ang lahat ng iyong mga setting, lumikha ng bagong Google client ID / lihim, at simulan muli." + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "sundin ang link na ito upang makakuha ng mga ito" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "support% s ay magagamit bilang isang add-on" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "Wala kang ang UpdraftPlus%s add-on na naka-install - makakuha ng ito mula sa%s" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "Kailangan mong muling patotohanan gamit ang% s, pati na ang iyong umiiral na mga credential ay hindi gumagana." + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "OK" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "Ang table prefix ay nagbago: pagbabago ng table field(s) %s nang naaayon:" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "Finished: lines processed: %d in %.2f seconds" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "ang database query tumatakbo ay:" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "will restore as:" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "Old table prefix:" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "Backup ng:" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "Access Database: ang Direct MySQL access ay hindi magagamit, kaya kami ay pabalik sa wpdb (ito ay magiging lubhang mas mabagal)" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "Nabigong mabuksan ang database file" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "Nabigong mahanap ang database file" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "Warning: safe_mode PHP ay aktibo sa iyong server. Mangyaring mag timeout. Kung ito ay mangyayari, kailangan mong manwal na ibalik ang mga file sa pamamagitan ng phpMyAdmin o ibang paraan." + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "wp-config.php mula sa backup: pagpapanumbalik (bilang ng bawat kahilingan gumagamit)" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "wp-config.php mula sa backup: maibabalik bilang wp-config-backup.php" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "Nabigong isulat ang decrypted database sa filesystem" + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "Nabigong lumikha ng pansamantalang direktoryo" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "Nabigong tanggalin nagtatrabaho direktoryo pagkatapos ng pagpapanumbalik." + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "Hindi matanggal ang lumang direktoryo." + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "Cleaning up rubbish..." + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "Ipinapanumbalik ang database (sa isang malaking site ay maaaring ito tumagal ng isang mahabang oras - kung ito ay mag time out (na maaaring mangyari kung ang iyong weg host ay na-configure ang iyong pagho-host upang limitahan ang mga mapagkukunan) pagkatapos ay dapat gumamit ng ibang paraan, katulad ng phpMyAdmin) .. ." + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "Database successfully decrypted." + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "Decrypting database (maaaring tumagal) ..." + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "Unpacking backup ..." + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "Nabigo ang pagkopya ng mga entity na ito." + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "Hindi available ang backup na file." + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "Ang UpdraftPlus ay hindi magawang direktang ibalik ang ganitong uri ng entity Ito ay dapat manu-mano na maibabalik." + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "Hindi mahanap ang isa sa mga file para sa muling pagbabalik" + +#: admin.php:5009 +msgid "Error message" +msgstr "Error message" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "Ang mga tala ng backup na hindi naglalaman ng impormasyon tungkol sa tamang laki ng file na ito." + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "Archive ay inaasahang maging sukat:" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "Kung sa paggawa ng isang kahilingan para sa suporta, mangyaring isama ang impormasyong ito:" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "I-abort: Hindi mahanap ang impormasyon sa kung aling mga entity upang ibalik." + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "UpdraftPlus Restoration: Progreso" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "Backup na ito ay wala sa backup kasaysayan - pagpapanumbalik Itinigil. Timestamp:" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "Pagkatapos pindutin ang pindutang ito, ikaw ay bibigyan ng pagpipilian upang piliin kung aling mga bahagi naisin mong ibalik" + +#: admin.php:4572 +msgid "Press here to download" +msgstr "Pindutin dito upang i-download" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "Tanggalin ang backup set" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "Magandang balita: komunikasyon ng iyong site sa% s ay maaaring naka-encrypt. Kung nakikita mo ang anumang mga error ang gagawin sa pag-encrypt, pagkatapos ay tumingin sa 'Mga Setting Expert' para sa karagdagang tulong." + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "Hindi sinusuportahan ng pag-install ng PHP / kulutin ang iyong mga web server ay https access. Hindi namin ma-access ang%s na walang suporta na ito. Mangyaring makipag-ugnay sa suporta ng iyong web hosting provider. %s ay nangangailangan ng mabaluktot + https. Mangyaring huwag mag-file ng anumang mga kahilingan ng suporta; walang alternatibong." + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "Hindi sinusuportahan ng pag-install ng PHP / kulutin ang iyong mga web server ay https access. Komunikasyon sa% s ay magiging unencrypted. tanungin ang iyong web host upang i-install kulutin / SSL upang makakuha ng kakayahan para sa pag-encrypt (sa pamamagitan ng isang add-on)." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "Pag-install ng PHP Ang iyong web server ay hindi isinama ng isang kinakailangang module (% s). Mangyaring makipag-ugnay sa suporta ng iyong web hosting provider." + +#: admin.php:4062 +msgid "Save Changes" +msgstr "Save Changes" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "Ang pagpili sa pagpipiliang pinabababa ang iyong seguridad sa pamamagitan ng pagtigil ng UpdraftPlus mula sa paggamit ng SSL para sa pagpapatunay at naka-encrypt na transportasyon sa lahat, kung saan posible. Tandaan na ang ilang ulap imbakan provider huwag payagan ang mga ito (eg Dropbox), kaya may mga provider ang setting na ito ay hindi magkakaroon ng epekto." + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "Huwag paganahin ang ganap na SSL kung saan posible" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "Tandaan na hindi lahat ng mga pamamaraan na ulap backup ay kinakailangang gamit ang SSL pagpapatunay." + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "Ang pagpili sa pagpipiliang pinabababa ang iyong seguridad sa pamamagitan ng pagtigil ng UpdraftPlus mula verify ang pagkakakilanlan ng naka-encrypt na mga site na nag-uugnay ito sa (eg Dropbox, Google Drive). Ito ay nangangahulugan na UpdraftPlus ay gumagamit ng SSL lamang para sa pag-encrypt ng trapiko, at hindi para sa pagpapatotoo." + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "Do not verify SSL certificates" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "Sa pamamagitan ng default UpdraftPlus ay gumagamit ng sarili nitong tindahan ng SSL certificate upang ma-verify ang pagkakakilanlan ng remote na mga site (ibig sabihin upang tiyakin na ito ay pakikipag-usap sa real Dropbox, Amazon S3, atbp, at hindi sa isang nang-aatake). Panatilihin namin ang mga napapanahon. Gayunpaman, kung ikaw ay makakuha ng SSL error, pagkatapos ay pagpili sa pagpipiliang ito (na nagiging sanhi ng UpdraftPlus upang gamitin ang koleksyon ng iyong mga web server sa halip) ay maaaring makatulong." + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "Use the server's SSL certificates" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "Kung iyon ay hindi matagumpay na suriin ang mga pahintulot sa iyong server o baguhin ito sa isa pang directory na iyon ay writable sa pamamagitan ng iyong proseso ng web server." + +#: admin.php:3697 +msgid "click here" +msgstr "mag-click dito" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "o, i-reset ang opsyon na ito" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "Backup na direktoryo tinukoy ay writable, na mahusay." + +#: admin.php:4009 +msgid "Backup directory" +msgstr "Backup na direktoryo ng" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "Tanggalin ang mga lokal na backup" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "i-click ito upang ipakita ang ilang mga karagdagang pagpipilian; huwag mag-abala na may ito maliban kung mayroon kang problema o mga kataka-taka." + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "Ipakita ang mga setting sa mga dalubhasang" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "Expert settings" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "Debug mode" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "Mga Setting ng Advanced / Pag-debug" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "Humihiling ng pagsisimula ng mga backup ..." + +#: admin.php:591 +msgid "Cancel" +msgstr "Cancel" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "wala" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "Piliin ang iyong remote na imbakan" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "Manu-manong i-decrypt ang isang database backup file" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "Parirala ng pag-encrypt ng Database" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "Email" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "Ang mga direktoryo sa itaas ay ang lahat ng bagay, maliban para sa WordPress core mismo kung saan maaari mong i-download muli pa mula sa WordPress.org." + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "Exclude these:" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "Anumang iba pang mga direktoryo natagpuan sa loob wp-content" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "Isama sa mga file na backup" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "halimbawa kung ang iyong server ay abala sa araw at gusto mong patakbuhin ang magdamag" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "Upang ayusin ang oras kung ang isang backup ay dapat na maganap," + +#: admin.php:3683 +msgid "Monthly" +msgstr "Monthly" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "Fortnightly" + +#: admin.php:3681 +msgid "Weekly" +msgstr "Weekly" + +#: admin.php:3680 +msgid "Daily" +msgstr "Daily" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "I-download ang log file" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "Ang folder na umiiral, ngunit ang iyong webserver ay walang pahintulot na magsulat sa mga ito." + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "Ang folder ay nilikha, ngunit namin ay may upang baguhin ang mga pahintulot ng file nito sa 777 (mundo-writable) upang magagawang magsulat dito. Dapat mong suriin sa iyong hosting provider na ito ay hindi magsasanhi ng anumang mga problema" + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "Nabigo ang kahilingan sa filesystem upang lumikha ng direktoryo." + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "Delete" + +#: admin.php:3418 +msgid "show log" +msgstr "show log" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "Tatanggalin nito ang lahat ng iyong mga setting ng UpdraftPlus - sigurado ka ba na gusto mong gawin ito?" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "count" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "N.B. Count na ito ay batay sa kung ano ang, o hindi, ibinukod ang huling beses na nai-save ang mga pagpipilian." + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "Kabuuang (hindi naka-compress) on-disk data:" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "hindi" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "oo" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "%s version:" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "Current memory usage" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "Peak memory usage" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "Web server:" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "Mangyaring tingnan ang UpdraftPlus Premium, o ang stand-alone Multisite add-on." + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "Kailangan ba ninyo ng WordPress Multisite suporta?" + +#: admin.php:2654 +msgid "Multisite" +msgstr "Multisite" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "Magsagawa ng isang backup minsanang" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "Basahin ba ito nakatulong sa artikulo ng kapaki-pakinabang na mga bagay upang malaman bago pagpapanumbalik." + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "Maaari kang maghanap at palitan ang iyong database (para sa paglipat sa isang website sa isang bagong lokasyon / URL) na may Migrator add-on - sundin ang link na ito para sa karagdagang impormasyon" + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "%s opsyon sa pagpapanumbalik:" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "Kailangan mong ibalik ito ng mano-mano." + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "Ang mga sumusunod na entity ay hindi maaaring awtomatikong naibalik: \"%s\"." + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "Ang iyong web server ay PHP naaktibong tinatawag na safe_mode." + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "Piliin ang mga bahagi upang ipanumbalik" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "Ipinapanumbalik ay papalit sa tema ng site na ito, plugin, upload, database at / o iba pang mga direktoryo ng nilalaman (ayon sa kung ano ay nilalaman sa backup set, at ang iyong pagpili)." + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "Restore backup from" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "Restore backup" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "Tanggalin ang backup set" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "I-download ang error: Ipinadala sa amin ang server ng isang tugon na hindi namin naintindihan." + +#: admin.php:570 +msgid "You should:" +msgstr "Kailangan:" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "Error:" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "calculating..." + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "UpdraftPlus - Mag-upload ng mga backup file" + +#: admin.php:3020 +msgid "refresh" +msgstr "refresh" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "Espasyo Web-server disk sa paggamit sa pamamagitan ng UpdraftPlus" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "Google Drive" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "Kung ikaw ay gumagamit ng ito, pagkatapos ay i-mode Turbo / Road off." + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "Opera web browser" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "More tasks:" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "I-download ang pinaka-kamakailang binagong log file" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "(Nothing yet logged)" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "Last log message" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "Restore" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "I-backup Ngayon" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "Database" + +#: admin.php:229 +msgid "Files" +msgstr "Files" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "Susunod na naka-iskedyul na pag-backup" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "Kasabay nito bilang ang mga backup file" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "Walang kasalukuyang naka-iskedyul" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "Ang interface na ito ay gumagamit ng admin JavaScript mabigat. Mong alinman sa i-activate ito sa loob ng iyong browser, o gumamit ng isang browser ng ​​JavaScript-capable." + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "JavaScript babala" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "Tanggalin ang Lumang Mga Direktoryo" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "Kasalukuyang limitasyon ay:" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "Ang iyong backup ay naibalik na." + +#: admin.php:2310 +msgid "Version" +msgstr "Version" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "Lead developer's homepage" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "Backup Na direktoryo ay wikang Hindi mabuo" + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "Backup na direktoryo ay Hindi mabuo" + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "Backup directory ay hindi mabuo" + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "Nabigo ang pag-alis ng Lumang direktoryo para sa ilang kadahilanan. Baka gusto mong gawin ito nang mano-mano." + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "Matagumpay na naalis Lumang mga direktoryo." + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "Alisin ang lumang mga direktoryo" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "Bumalik sa UpdraftPlus Configuration" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "Mga Pagkilos" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "Ibalik ang matagumpay!" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "Masamang filename format - ito ay hindi mukhang isang naka-encrypt na database file na nilikha ng mga UpdraftPlus" + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "Masamang filename format - ito ay hindi mukhang isang file na nilikha ng mga UpdraftPlus" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "Walang mga lokal na kopya kasalukuyan." + +#: admin.php:2072 +msgid "Download in progress" +msgstr "Download in progress" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "File ready." + +#: admin.php:2043 +msgid "Download failed" +msgstr "Nabigo ang pag-download " + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "Error" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "Hindi mahanap na trabaho - marahil ito ay na natapos?" + +#: admin.php:1854 +msgid "Job deleted" +msgstr "Job deleted" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "OK. Dapat mong madaling makita ang aktibidad sa \"Huling mensahe log \" field sa ibaba." + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "Wala pa naka-log" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "Mangyaring kumonsulta ang FAQ na ito kung mayroon kang mga problema sa pag-back up." + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "Ang iyong website ay naka-host sa pamamagitan ng web server ang% s." + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "Ay hindi opisyal na sinusuportahan ng UpdraftPlus mga bersyon ng WordPress bago% s. Maaari itong gumana para sa iyo, ngunit kung hindi, pagkatapos mangyaring magkaroon ng kamalayan na walang suporta ay magagamit hanggang sa i-upgrade ang WordPress." + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "Ikaw ay may mas mababa sa%s ng libreng puwang sa disk sa disk na UpdraftPlus ay naka-configure upang gamitin upang lumikha ng mga backup. Maaaring ang UpdraftPlus na rin ay maubusan ng espasyo. Makipag-ugnay sa iyong mga operator ng iyong server (eg iyong kumpanya sa pagho-host ng web) upang malutas ang isyung ito." + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "babala" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "Add-Ons / Pro Support" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "Settings" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "Allowed Files" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "Hindi makalikha ng zip%s. Kumonsulta sa log file para sa higit pang impormasyon." + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "Walang-hanggan recursion: kumonsulta sa iyong pag-log para sa karagdagang impormasyon" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "Tingnan ang UpdraftPlus.Com para sa tulong, mga add-on at suporta" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "Kailangan ng higit pang mga tampok at suporta? Tingnan ang UpdraftPlus Premium" + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "Mangyaring tulungan UpdraftPlus sa pamamagitan ng pagbibigay ng positibong pagsusuri sa wordpress.org" + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "Tulad ng UpdraftPlus at maaari matitira isang minuto?" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "Maaari mo bang i-translate? Gusto mong pagbutihin UpdraftPlus para sa mga nagsasalita ng iyong wika?" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "Hindi nahanap ang file" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "Ang decryption key na ginamit:" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "Nabigo ang Decryption. Malamang ang dahilan ay ginamit mo ang maling key." + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "Nabigo ang Decryption. Ang database file ay naka-encrypt, ngunit wala kang key encryption ipinasok." + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "Hindi mabuksan ang backup na file para sa pagsulat" + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "Hindi ma-save backup kasaysayan dahil mayroon kaming walang backup ng array. Marahil Nabigo ang Backup." + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "Hindi mabasa ang directory na" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "Backup na direktoryo ng (%s) ay hindi writable, o hindi na umiiral." + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "WordPress backup ay kumpleto na" + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "Ang tamgkang pag baback-up ay tapos na, subalit hindi matagumpay." + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "Nagtagumpay ang backup Ang at ngayon ay kumpleto na" + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "Error sa pag-encrypt naganap kapag encrypt database. Itinigil ang pag-encrypt." + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "Hindi makalikha ng mga file sa backup na direktoryo. Backup iniurong - suriin ang iyong mga setting UpdraftPlus." + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "Others" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "Uploads" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "Themes" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "Plugins" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "Walang mga file ng log ang natagpuan." + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "Ang log file ay hindi mabasa." + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "UpdraftPlus notice:" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "UpdraftPlus Backups" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-tr_TR.mo b/plugins/updraftplus/languages/updraftplus-tr_TR.mo new file mode 100644 index 0000000..834eaef Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-tr_TR.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-tr_TR.po b/plugins/updraftplus/languages/updraftplus-tr_TR.po new file mode 100644 index 0000000..8ddc742 --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-tr_TR.po @@ -0,0 +1,6109 @@ +# Translation of UpdraftPlus in Turkish +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2015-09-28 12:34:39+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: tr\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "" + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "" + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "" + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "" + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "" + +#: addons/webdav.php:91 +msgid "Path" +msgstr "" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "" + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "" + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "" + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "" + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "" + +#: admin.php:2310 +msgid "FAQs" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "" + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "" + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "" + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "" + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "" + +#: methods/ftp.php:355 +msgid "login" +msgstr "" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "" + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "" + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "" + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "" + +#: admin.php:2604 +msgid "Now" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "" + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "" + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "" + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "" + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "" + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "" + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "" + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "" + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "" + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "" + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "" + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "" + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "" + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "" + +#: admin.php:3420 +msgid "stop" +msgstr "" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "" + +#: admin.php:3092 +msgid "this backup set" +msgstr "" + +#: admin.php:3020 +msgid "calculate" +msgstr "" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "" + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "" + +#: admin.php:601 +msgid "Saving..." +msgstr "" + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:557 +msgid "Fetching..." +msgstr "" + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "" + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "" + +#: admin.php:2884 +msgid "Dismiss" +msgstr "" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "" + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "" + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "" + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "" + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "" + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "" + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "" + +#: admin.php:3860 +msgid "File Options" +msgstr "" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "" + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "" + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "" + +#: admin.php:5157 +msgid "settings" +msgstr "" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "" + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "" + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "" + +#: admin.php:442 +msgid "Extensions" +msgstr "" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "" + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "" + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "" + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "" + +#: addons/azure.php:524 +msgid "container" +msgstr "" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "" + +#: addons/azure.php:523 +msgid "optional" +msgstr "" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "" + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "" + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "" + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "" + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "" + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "" + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "" + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "" + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "" + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "" + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "" + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "" + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "" + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "UpdraftPlus tamamiyle yüklü değil - lütfen kaldırın ve tekray yükleyin. Büyük bir olasılıkla, WordPress eklenti dosyalarını kopyalarken bir hata oluştu." + +#: restorer.php:767 +msgid "Deferring..." +msgstr "Geri alınıyor..." + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "veya daha kompleks takvimler ayarlayın" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "UpdraftPlus'dan %s kaldırmak istediğinize emin misiniz?" + +#: admin.php:3081 +msgid "Deselect" +msgstr "Seçimi kaldır" + +#: admin.php:3080 +msgid "Select all" +msgstr "Tümünü seç" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "Seçilen yedekler için eylemler" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "Uzak depolama metodlarında mevcut yedeklere ulaşmak için buraya tıklayın. (her hangi bir site için aynı klasörde saklanmak şartıyla)" + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "İşleniyor..." + +#: admin.php:634 +msgid "For backups older than" +msgstr "Şu tarihten eski yedekler için" + +#: admin.php:633 +msgid "week(s)" +msgstr "hafta" + +#: admin.php:632 +msgid "hour(s)" +msgstr "saat" + +#: admin.php:631 +msgid "day(s)" +msgstr "gün" + +#: admin.php:630 +msgid "in the month" +msgstr "ayın içerisinde" + +#: admin.php:629 +msgid "day" +msgstr "gün" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "(istediğiniz kadar)" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "Ekstra bir saklama kuralı belirleyin..." + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "Bu veritabanı %s ve sonrası bir MySQL versiyonuna yüklenebilir." + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "Bu problem kaynak veritabanıyla uyumsuz çok eski bir MySQL versiyonuna geri yükleme yapılırken oluşur." + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "Bir UpdraftPlus Vault kotanız bulunmamaktadır." + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "Bu veritabanını kullanmak için MySQL sürümünüzü yükseltmelisiniz." + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "Bu veritabanı yedeği bu sitenin çalıştığı eski MySQL versiyonunda (%s) bulunmayan özellikler kullanmaktadır." + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "UpdraftPlus yönetim sayfasında sıfır reklam " + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "wp-content/plugins altındaki UpdraftPlus klasörü isminde boşluk bulunuyor; WordPress bunu sevmez. Bu problemi çözmek için klasörü wp-content/plugins/updraftplus olarak yeniden adlandırın." + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "Email adresinizi ve ya şifrenizi mi unuttunuz?" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "Bağlanmak için UpdraftPlus.Com email / şifrenizi girin:" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "Sıkça sorulan soruları buradan okuyun." + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "Amazon'un sunucu tarafında şifrelemesini kullanmak için kutucuğu işaretleyin" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "Sunucu-tarafında şifreleme" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "Eğer şifrenizi unuttuysanız, updraftplus.com'a şifrenizi değişmek için buradan gidebilirsiniz." + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "Bağlanmak için uzak depolama ayarlarına gidin." + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "%s uzaktan depolama için seçildi, ancak şuan bağlı değilsiniz." + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "Ödemeler Amerikan Doları, Euro, İngiliz Sterlini, kredi kartı veya PayPal ile yapılabilir." + +#: admin.php:607 +msgid "Update quota count" +msgstr "Kota durumunu güncelle" + +#: admin.php:606 +msgid "Counting..." +msgstr "Hesaplanıyor..." + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "Bağlantı kesiliyor..." + +#: admin.php:603 +msgid "Connecting..." +msgstr "Bağlanıyor..." + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "Durumu güncelle" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "Daha fazla kota" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "Mevcut kullanım" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "Buradan kotanızı arttırabilirsiniz" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "%s Hata: mevcut kotanız (%s) bu arşivi (%s) yüklemek için yetersiz." + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "Bağlantıyı kes" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "Kota:" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "Vault sahibi" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "Bravo - ayarlanması gereken başka bir şey yok." + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "Bu site UpdraftPlus Vault'a bağlıdır" + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "UpdraftPlus Vault'a bağlı değilsiniz" + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "Yardım için şuraya bakın" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "E-mail" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "Geri..." + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "Abonelikler her hangi bir zaman iptal edilebilir." + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "her çeyrek için %s" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "Daha fazlasını okuyun." + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "UpdraftPlus Vault, Amazon'un dünyanın önde gelen veri merkezleri üzerine kurulmuştur, yedekli veri saklama hizmetiyle %99.999999999 güvenilirdir." + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "Zaten alan satın aldınız mı?" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "Seçenekleri göster" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "İlk kez mi kullanıyorsunuz?" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "Başlamak için bir tuşa basın." + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "UpdraftPlus Vault size güvenilir, kolay kullanılabilir ve oldukça uygun fiyatlı depolama sağlar." + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "Yenilenmemiş bir UpdraftPlus Vault aboneliğiniz bulunmakta, ve bekleme süresi sona erdi. Bir kaç gün içerisinde, saklanan verileriniz kalıcı olarak silinecektir. Eğer bunun olmamasını istiyorsanız, mümkün olan en kısa sürede aboneliğinizi yenileyiniz." + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "Ödemesi gecikmiş bir UpdraftPlus Vault aboneliğiniz bulunmakta. Aboneliğiniz kapatılmadan önceki bir kaç günlük uzatma süresindesiniz, kotanızı ve saklanan içeriğinize erişimi kaybedeceksiniz. Lütfen en kısa sürede aboneliğinizi yenileyin!" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "UpdraftPlus Premium aboneliğiniz bir yıl önce idi. UpdraftPlus Premium abonesi olduğunuz için verilen 12 aylık bedava alan hakkınızı kaybetmemek için hemen aboneliğinizi yenileyin." + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "Updraft Vault" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "Silme başarısız:" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "Sıkıştırma motoru şu mesajı dönderdi : %s." + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "Bu izin olmadan, UpdraftPlus yedekleri silemez - ayrıca silme hataları görmemek için 'retain' ayarlarınızı çok yüksek ayarlamalısınız." + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "Silmeye izin ver" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "Bu izin olmadan, UpdraftPlus'dan indirme ve ya geriyükleme yapamazsınız, aksine AWS websitesini ziyaret etmeniz gerekir." + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "İndirmeye izin ver" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "Eğer siteden siteye direk gönderim çalışmıyorsa, bundan başka 3 metod daha bulunmakta - bunlardan birini deneyiniz." + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "Uzaktaki sitenin online, güvenlik duvarsız, erişimi engelleyecek her hangi bir güvenlik modülüne sahip olmadığından, UpdraftPlus versiyon %s ve sonrasının aktif ve anahtarlarının doğru girildiğinden emin olunuz." + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "Mevcut anahtarlar" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "Uzak sitelere bağlanmaya izin veren bir anahtar henüz oluşturulmadı." + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "Yeni anahtarınız:" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "Başka bir sitenin bu siteye yedek yüklemesine izin vermek için, bir anahtar oluşturun, sonra yükleme yapacak sitede 'Taşı' butonuna basın, ve anahtarı buraya kopyalayıp yapıştırın." + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "Uzak bir site için anahtarı almak istiyorsanız, uzak sitede 'Taşı' penceresini açın, sayfayı aşağı kaydırın, ve böylece orada bir anahtar oluşturabilirsiniz." + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "Bu site için anahtarlar tıkladığınız alanın hemen altındaki bölümde oluşturulacaktır." + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "Bu anahtarı şimdi kopyala ve yapıştır yapmalısınız - anahtar tekrar gösterilemez." + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "Anahtar başarıyla oluşturuldu." + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "Bu isimle bir anahtar zaten mevcut; benzersiz bir isim kullanmalısınız." + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "Ayrıca bu yedeği aktif uzak depolama konumlarına yükle" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "Yükleme yaptığınız site URL'si (%s) yerel geliştirici sitesine benziyor. Eğer uzak bir ağdan yükleme yapıyorsanız, bir güvenlik duvarı bunu engelliyor olabilir." + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "site bulunamadı" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "Yedekleme verisi şuraya gönderilecek:" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "Bu siteye varolan bir yedek setini geri yükleyin" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "Bu site henüz geri yükleme yapacak bir yedeğe sahip değil." + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "%s tarafından yapılan yedek" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "Bu saklama metodu indirmeye izin vermez" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "(uzak konumdan içeri aktarılan yedek seti)" + +#: admin.php:4423 +msgid "Site" +msgstr "Site" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "Yedek uzak siteye gönderildi - indirme için uygun değil." + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "Geri yüklemeden önce, bu yedeğin gerçekten bu siteye ait bir yedek olduğundan emin olmalısınız (Başka bir siyeye ait olabilir)." + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "UpdraftPlus bu yedek setini şuanki WordPress kurulumu üzerinden tanıyamıyor, uzak depolama alanında bulunmuş veya uzak bir site üzerinden yüklenmiş olabilir." + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "Bağlantı test ediliyor..." + +#: admin.php:617 +msgid "Deleting..." +msgstr "Siliniyor..." + +#: admin.php:616 +msgid "key name" +msgstr "anahtar adı" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "Lütfen anahtara bir isim verin (hangi siteye ait olduğunu belirtecek şekilde):" + +#: admin.php:611 +msgid "Creating..." +msgstr "Yaratılıyor..." + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "Veya, uzak bir siteden yedek almak " + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "Anahtarı buraya yapıştırın" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "Bir sitenin anahtarını nasıl alırım?" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "Yükleme konumu olarak bir site eklemek için, hedef sitenin anahtarını aşağıya girin." + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "Veya, yedeği başka bir siteye gönderin" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "Gönder" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "Siteye yükle:" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "Alıcı bir site henüz eklenmedi." + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "Şu siteye yedek yüklemek için geçerlidir:" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "Anahtar başarıyla eklendi." + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "Girilen anahtar uzak siteye ait değil (bu siteye ait)." + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "Girilen anahtar yanlış - tekrar deneyin." + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "Girilen anahtarın uzunluğu hatalı - tekrar deneyin." + +#: addons/migrator.php:1861 +msgid "key" +msgstr "anahtar" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "Neredeyse bütün FTP sunucuları pasif mod ister; ancak aktif moda ihtiyacınız varsa, bu kutucuğun işaretini kaldırın." + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "Pasif mod" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "Uzak konum" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "FTP şifre" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "FTP kullanıcı" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "FTP sunucusu" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "UpdraftPlus Migrator geri yükleme işlemini uygun şekilde modifiye eder, böylece yedekleme verisi yeni siteye uyum sağlar." + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "Bir \"taşıma\" geri yükleme ile tamamen aynıdır - ancak başka bir siteden içeri aktardığınız yedekleri kullanırsınız." + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "Site ekle" + +#: admin.php:608 +msgid "Adding..." +msgstr "Ekleniyor..." + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "Alacak hakkınız onaylanmadı - belki bu satınalmayı başka bir yerde kullandınız, veya updraftplus.com'dan indirme yapmak için ödenmiş süreniz doldu?" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "Bu yedeği kullanabilmek için, veritabanı sunucunuz %s karakter setini desteklemelidir." + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "şifrenizi updraftplus.com üzerinden değiştirmek için buraya gidin." + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "Şifrenizi unuttuysanız" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "Şifrenizi tekrar girmek için buraya gidin." + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "Bu butona tıkladıktan sonra, hangi bileşenleri taşımak istediğinizi seçme imkanı elde edeceksiniz" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "Bir yedek setini içeri aktarmak için, \"Mevcut Yedekler\" sekmesine gidin" + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "Ayalarınızda değişiklik yaptınız ve kaydetmediniz." + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "N.B. %s büyük-küçük harf duyarlı değil." + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "Eğer OneDrive sonradan size \"unauthorized_client\" mesajını gösterirse, buraya doğru bir client ID girmemişsiniz demektir." + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "Ekran görüntüleri içeren, daha uzun yardım için, bu bağlantıyı takip edin." + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "OneDrive giriş bilgilerinizi OneDrive geliştiirici konsolunda oluşturun." + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "Aşağıdakini OneDrive konsolunda sorulduğunda (\"API Ayarları\" altında) yetkilendirilmiş yönlendirme URI (authorised redirect URI) olarak eklemelisiniz." + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "%s bağlantısı başarısız:" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "OneDrive" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "Lütfen %s hesabına bağlantınızı tekrar sağlayın." + +#: methods/email.php:73 +msgid "configure it here" +msgstr "buradan ayarlayın" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "Engellemeyi kaldırmak için lütfen buraya tıklayın." + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "Ayarlarınızı kaydetmeyi unutmayın." + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "Kovanıza ulaşmak için IAM kullanıcı hesabı kullanıyorsunuz." + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "S3 bucket" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "Çin (Beijing) (kısıtlı)" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "Güney Amerika (Sao Paulo)" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "Asya Pasifik (Tokyo)" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "Asya Pasifik (Sidney)" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "Asya Pasifik (Singapur)" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "AB (Frankfurt)" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "AB (İrlanda)" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "ABD Batı (kısıtlamalı)" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "ABD Batı (K. Kaliforniya)" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "ABD Batı (Oregon)" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "ABD Standart (varsayılan)" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "S3 saklama bölgesi" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "Yeni IAM kullanıcı adı" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "Yönetici gizlilik anahtarı" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "Yönetici erişim anahtarı" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "Böylece, yönetici anahtarlarınız yerine, düşük seviyede erişim bilgileri kullanılabilir." + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "Bu yeni bir IAM policy ile birlikte sadece belirtilen kovaya erişimi sağlayan yeni bir kullanıcı ve anahtar çifti oluşturacaktır." + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "Amazon S3 yönetici erişim/gizlilik anahtarlarınızı ve yeni kullanıcı için (benzersiz) bir kullanıcı adı ve kova adı girin." + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "Yeni bir IAM kullanıcısı ve S3 kovası oluştur" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "Gizlilik Anahtarı: %s" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "Erişim Anahtarı: %s" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "User Policy uygulanamadı" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "Kullanıcı Erişim Anahtarı oluşturma başarısız" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "Kullanıcı Erişim Anahtarı oluşturma başarısız" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "IAM işlemi başarısız (%s)" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "Çakışma: kullanıcı zaten mevcut" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "Hata : Böyle bir kovaya başarıyla erişemedik ve ya oluşturamadık. Lütfen erişim bilgilerinizi kontrol edin, eğer bilgileriniz doğruysa başka bir kova adı deneyin (başka bir AWS kullanıcı önceden kova adını almış olabilir)" + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "AWS bağlantısı başarısız" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "Eski AWS araç kiti kullanıldığından, yeni AWS kullanıcısı oluşturulamadı" + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "Bir kova girmelisiniz" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "Yeni bir IAM kullanıcı adı girmelisiniz" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "Bir yönetici gizlilik anahtarı girmelisiniz" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "Bir yönetici erişim anahtarı girmelisiniz" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "Eğer bir AWS yönetici kullanıcısına sahipseniz, (bütün hesabınız yerine) sadece bu kovaya erişimi olan bir AWS (IAM) kullanıcısı oluşturmak için bu sihirbazı kullanabilirsiniz." + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "Sadece bu kovaya erişim hakkına sahip yeni bir IAM alt-kullanıcısı ve erişim anahtarı oluşturmak için, bu eklentiyi kullanıın." + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "Kişisel destek, siteleri kopyalamak, daha fazla uzak konum, güvenlik adına şifrelenmiş yedekler, birden fazla yedekleme konumu, daha iyi raporlama, sıfır reklam ve daha fazlası için dünyanın en popüler yedekleme eklentisi UpdraftPlus premium versiyonuna gözatın." + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "UpdraftPlus ve genel Wordpress haberleri, WordPress geliştiricileri ve site sahipleri için yüksek kalitede eğitim materyalleri. İstediğiniz zaman abonelikten ayrılabilirsiniz." + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "Uploads konumu (%s) taşıma esnasında değişti - sıfırlanıyor (%s olarak)" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "Bu muhtemelen önceki saldırılarda kullanılan hacklenmiş bir websitesiyle aynı sunucuyu kullandığınız anlamına gelir." + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "Wen sunucunuzun IP adresi (%s) engellenmiş gözüküyor." + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "UpdraftPlus.com şu yanıtı dönerdi 'Erişim Başarısız'." + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "Premium WooCommerce eklentileri" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "Bedava çift-yönlü güvenlik eklentisi" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "Daha fazla Kaliteli Eklenti" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "Dükkana gidin." + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "Bedava versiyon ile karşılaştırın" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "UpdraftPlus Premium" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "Kayıt olmak için bu linki takip edin." + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "Bedava Bülten" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "UpdraftPlus ile yedek aldığınız için teşekkürler!" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "Ertele (%s ay için)" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "(dosya yedekleriyle aynı zamanda)" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "Tamamlanan bir yedek yok" + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "İlk adım, ücretsiz versiyonu kaldırmak." + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "Eğer UpdraftPlus.Com üzerinden satınalma yaptıysanız, satın aldığınız ürünü yüklemek için talimatlara bu link üzerinden ulaşabilirsiniz." + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "Bülten kayıt" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "UpdraftPlus haber listesine katılmak için bu linke tıklayın." + +#: admin.php:2831 +msgid "Personal support" +msgstr "Kişisel destek" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "Ayarlar erişimini kilitleyin" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "Ağ/Çoklusite desteği" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "Yedekleme saatini düzeltin" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "Zamanlanmış yedeklemeler" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "Başka eklentilere ait yedekleri geri yükleme" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "Veritabanı şifrelemesi" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "Yedekleri birden fazla uzak hedefe yükleme" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "WordPress/Eklentiler/Temaları güncellerken otomatik yedekleme" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "Gelişmiş raporlama özellikleri" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "Temel email raporlaması" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "Websitelerini taşı / klonla (kopyala)" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "Ekstra dosya ve veritabanı yedekleme" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "WebDAV, Copy.Com, SFTP/SCP, şifrelenmiş FTP" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "Dropbox, Google Drive, FTP, S3, Rackspace, Email" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "Uzaktaki bir depo alanına yedekle" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "Yedekten geri yükle" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "%s üzerinde dile çevirilmiştir" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "WordPress dosyalarını ve veritabanını yedekle" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "Şimdi satın alın" + +#: admin.php:2718 +msgid "Get it from" +msgstr "Buradan al" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "Satış öncesi sorularınızı sorun" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "Satış öncesi SSS" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "Özelliklerin tam listesi" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "UpdraftPlus Premium'a geçin" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "Şu anda wordpress.org'dan sunulan ücretsiz UpdraftPlus versiyonunu kullanıyorsunuz." + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Güncellemeden önce (ilgili) eklentileri, temaları ve WordPress veritabanını UpdraftPlus ile yedekle." + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "%s Hata : Başlatma başarısız" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "veya" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "veya" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "Geri yüklenecek bir bileşen seçmediniz. Lütfen en az bir tane seçerek tekrar deneyin." + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "PKCS1 (PEM başlığı: BEGIN RSA PRIVATE KEY), XML ve PuTTY biçimlendirme anahtarları kabul edilir." + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "Parçalı yüklemelere devam etme özelliği SFTP için desteklenir, SCP için desteklenmez. Eğer SCP kullanıyorsunuz web sunucunuzun PHP işlemlerinin en büyük yedek dosyanızı yüklemeye yetecek kadar uzun çalıştırabildiğinden emin olun." + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "tenant" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "Bu bir v2 (Keystone) yetkilendirme URI olmalıdır; v1 (Swauth) desteklenmemektedir." + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "site yöneticinizin adresine" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "Temel bir rapor göndermek için bu kutucuğu işaretleyin" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "Manuel" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "Bir hata (%s) oluştu:" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "Kilit Ayarlarını Değiştir" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "Yedeklemek istediğiniz başka dosya/klasör" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "Daha fazla özellik ve kişisel destek için, göz atın" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "Tablo oluşturma başarısız - muhtemelen tablo mevcut veya mevcut tabloyu silmek için yeterli erişim hakkı yok; devam edecek" + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "Önbellekteki sayfalar temizleniyor (%s)..." + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "Veritabanı şifreleme aşaması" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "Güncellemeden önce otomatik yedek" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "WordPress çekirdeği (sadece)" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "Destek kilidini açmak için, sizin adınıza UpdraftPlus'ı yöneten kişiye başvurun." + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "UpdraftPlus ayarlarına erişmek için, kilit açma şifrenizi giriniz." + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "Hatalı şifre" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "Kilidi aç" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "Aksi taktirde, vaysayılan bağlantı görüntülenecektir." + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "Kilit ekranını gören herkese destek için bu URL gösterilecek - geçerli bir web yada email adresi giriniz." + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "Destek URL'si" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "Sonra şifreye tekrar ihtiyacınız olacak" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "%s hafta" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "1 hafta" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "%s saat" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "1 saat" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "Lütfen şifreyi not aldığınızdan emin olun!" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "UpdraftPlus ayarlar sayfasına erişimi sınırla" + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "Ayarlar kaydedildi." + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "Yönetici şifresi değiştirildi." + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "Yönetici şifresi belirlendi." + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "Yönetici şifresi kaldırıldı." + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "(bu iyi seçenek hakkında daha fazla öğren)" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "Eklentilerinizi aktive ettikten sonra, sitenin güncellemelere erişimini etkilemeden şifrenizi (mail adresiniz hariç) aşağıdaki ayarlardan kaldırabilirsiniz." + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "Log kaydını göster" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "Yedek veriler (indirmek için tıklayın)" + +#: admin.php:4368 +msgid "Backup date" +msgstr "Yedek tarihi" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "ve bu kadar zamanlanmış yedek tut" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "Arttırılan yedek; temel yedek; %s" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "UpdraftPlus ayarlarına erişimi bir şifre ile kilitlemek için, UpdraftPlus Premium'a terfi edin." + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "UpdraftPlus'a dosya yükleyin." + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "Yedekleme klasörünüz yazılabilir olmadığı için 'Şimdi Yedekle' butonu etkisizleştirilmiştir ('Ayarlar' menüsünde ilgili seçeneğe gidin)" + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "Yedek etiketi:" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "Hata: beklenmeyen dosya okuma hatası" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "daha fazla detay için log kayıtlarını inceleyiniz." + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "web hosting hesabınız dolmuş durumda; lütfen inceleyin: %s" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "Bir sıkıştırma hatası oluştu" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "Bu yedek için etiketiniz (opsiyonel)" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "%s direkt IP adreslerinde host edilen sitelerin yetkilendirilmesine izin vermiyor. Sitenizin adresini (%s) değiştirdikten sonra %s depolama servisinden faydalanabilirsiniz." + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "UpdraftPlus.Com tarafından tanınmayan bir email adresi girdiniz" + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "Email adresiniz geçerli, fakat şifreniz UpdraftPlus.Com tarafından tanınmamaktadır." + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "Email ve şifre alanlarını doldurmanız gerekmektedir" + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "Devam etmek için, 'Şimdi Yedekle' ye tıklayın. Sonrasında 'Son Log Mesajı' bölümünden etkinliği izleyebilirsiniz." + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "Eğer çoklu site yedeği geri yüklemek istiyorsanız, ilk önde Wordpress kurulumunuzu çoklu site olarak ayarlamalısınız." + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "Yedeğiniz bir WordPress çoklu site kurulumu içeriyor; ancak bu site çoklu değil. Ağın sadece ilk sitesi erişilebilir olacak." + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "zaten yapılmış" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "esgeçildi (listede yok)" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "Tablo bul ve değiştiriliyor:" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "Virgülle ayrılmış bir liste girin; aksi takdirde, bütün tablolar için boş bırakın." + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "Sadece bu tablolar" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "satır grup başına" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "UpdraftPlus.Com hesabınızla henüz bağlanmadınız." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "UpdraftPlus güncellemelerini almak için bağlanmalısınız." + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "%s konusuyla ilgili herhangi bir destek talebi hosting firmanıza iletilmelidir." + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "Sadece şuan ki sunucunuzu güncelleyemediğiniz de ve eklentilerinizin/temalarınızın vb. eski sürümle (%s) uyumlu olduğundan emin olduktan (veya riske girmek istiyorsanız) sonra devam etmelisiniz." + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "Bu şuan geri yükleme yaptığınız sunucudan oldukça daha yeni (version %s)." + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "Bu yedekteki site %s nin %s versiyonuyla çalışan bir web sunucusunda çalışıyordu." + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "LinkedIn" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "Google+" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "Facebook" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "Twitter" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "Sosyal medyada UpdraftPlus - buradan bizi takip edin:" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "Bunu neden görüyorum?" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "Bu dizinin lokasyonu, Ayarlar sekmesinin uzman ayarları bölümünden ayarlanabilir." + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "UpdraftPlus dizininize (web hosting alanınızda) yüklenmiş yeni yedek paketlerini görmek için buraya tıklayın." + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "Yedeklemeyi başlat" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "%s web sunucusunu kullanıyorsunuz ama %s modülü yüklenmemiş görünüyor." + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "WordPress eklentisinin klasöre yazma yetkisinin nasıl ayarlanacağı ile ilgili olarak web hosting sağlayıcınıza danışmanız gerekir." + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "Bir problem olmadığı sürece buradaki her şeyi görmezden gelebilirsiniz." + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "Bu dosya yüklenemedi" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "Ayarlar bölümünde bununla ilgili daha fazla bilgi bulabilirsiniz." + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "Desteklenen yedekleme eklentileri: %s" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "Bu yedek farklı bir yedekleme eklentisi ile mi oluşturuldu? Eğer öyleyse, tanınabilmesi için önce ismini değiştirmeniz gerekebilir - lütfen şu linke tıklayın." + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "Artan yedekleme ile ilgili daha fazla bilgi" + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "Hafıza limiti" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "geri yükleme" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "Silinecek tablo: %s" + +#: backup.php:829 +msgid "Incremental" +msgstr "Artan" + +#: backup.php:829 +msgid "Full backup" +msgstr "Tam yedekleme" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "şimdi güncellemeler işleniyor..." + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "(logu görüntüle...)" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "Yedekleme başarılı" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "%s saatte bir" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "bul ve değiştir" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "Başla" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "Bul/değiştir işlemi geri alınamaz - bunu yapmak istediğinizden emin misiniz?" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "Bu işlem sitenizi kolayca bozabilir; dikkatli kullanın!" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "Bununla değiştir" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "Şunu ara" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "Veritabanında bul / değiştir" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "arama terimi" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "Çok fazla veritabanı hatası oluştu - iptal ediliyor" + +#: backup.php:895 +msgid "read more at %s" +msgstr "daha fazlasını okuyun: %s" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "UpdraftPlus (ücretsiz sürüm) tarafından oluşturulam email raporları, size en son UpdraftPlus.com haberlerini iletir" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "Dikkat. Eğer UpdraftPlus'ı birden fazla WordPress sitesine kuruyorsanız, aynı projeyi tekrar kullanamazsınız. Her site için Google API konsolundan yeni bir proje oluşturmalısınız." + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "Henüz bir yedekleme yapmadınız." + +#: admin.php:3872 +msgid "Database Options" +msgstr "Veritabanı Seçenekleri" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "Hata ayıklama eklentileri:" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "%s (%s kullanılıyor)" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "Hesaptaki kullanılabilir disk alanı:" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "Yedek klasörünüz yazılabilir olmadığı için bu buton pasif (ayarlara bakınız)." + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "Mevcut Yedekler" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "Şu Anki Durum" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "Nelerin yedekleneceğine dair varssayılan ayarları değiştirmek, zamanlı yedekleri ayarlamak, yedekleri uzak depolama alanına göndermek (tavsiye edilen) ve daha fazlası için ayarlar sekmesine gidin." + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "Yedek almak için Şimdi Yedekle butonuna tıklamanız yeterli." + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "UpdraftPlus'a hoşgeldiniz!" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "Eğer buraya bir metin eklerseniz, veritabanı yedeğini şifrelemede kullanılacaktır (Rijndael). Bu metni mutlaka bir yere kaydedin ve kaybetmeyin, aksi durumda tüm yedekleriniz kullanılamazolacaktır. Bu metin aynı zamanda yedeklerinizin şifresini çözmede kullanılan anahtar olacaktır (dolayısıyla eğer bu metni değiştirirseniz, metni şifrelemede kullanılan haline getirmediğiniz sürece otomatik şifre çözme işlemi çalışmayacaktır)." + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "Test ediliyor..." + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "Test bağlantısı..." + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "Tablo önek" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "Harici veritabanını yedekle" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "Yedeklemek için harici bir veritabanı ekleyin..." + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "Eğer veritabanında WordPress'in parçası olmayan tablolar var ise (eğer öyleyse bunu biliyorsunuzdur), bu tabloları da yedeklemek için bu seçeneği aktifleştirin." + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "WordPress veritabanında bulunan ve WordPress'e ait olmayan tabloları yedekle" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "Bu seçenek MySQL veritabanında bulunan fakat Wordpress'e ait olmayan (başında belirlenen Wordpress öneki %s bulunmayan) tabloların da yedeklenmesini sağlar." + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "Bağlantı başarısız." + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "Bağlantı başarılı." + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "Toplam %s tablo bulundu; %s tanesi belirtilen önek'e sahip." + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "%s tablo bulundu." + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "veritabanı bağlantı denemesi başarısız" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "veritabanı adı" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "host" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "kullanıcı" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "Harici veritabanı (%s)" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "Google API konsoluna ulaşmak için bu linki takip edin, ve orada Drive API'yi aktive edin ve Credientials bölümünde bir Client ID oluşturun" + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "üst dizine erişim başarısız" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "Ancak, tekrar eden denemeler başarısız olmuştur:" + +#: admin.php:4499 +msgid "External database" +msgstr "Harici veritabanı" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "Bu ayrıca tüm eklentilerin hata ayıklama çıktılarının bu ekranda görüntülenmesine sebep olacaktır - bunları görürseniz şaşırmayın." + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "Daha fazla veritabanını yedekle" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "İlk olarak, çözümleme anahtarını girin" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "Kriptolanmış bir veritabanını burada manuel olarak çözebilirsiniz." + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "Ayrıca dışarıda bulunan veritabanlarınızı yedekleyebilir." + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "Gözetlenmek istemiyor musunuz? UpdraftPlus Premium veritabanı yedeğinizi şifreleyebilir." + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "UpdraftPlus Premium kullanın" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "Şifre çözme başarısız. Veritabanı dosyası şifrelenmiş." + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "Sadece Wordpress veritabanı geri yüklenebilir; dış veritabanı ile manuel olarak ilgilenmelisiniz." + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "İlk %s komutunda bir hata oluştu - işlem iptal ediliyor." + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "Bağlantı başarısız: erişim bilgilerinizi kontrol edin, veri tabanınızın çalışır olduğundan ve ağ bağlantısında güvenlik duvarı olmadığından emin olun." + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "veritabanı bağlantı denemesi başarısız." + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "veritabanındaki anasayfa adresi (%s), beklenenden (%s) farklı" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "%s içindeki dizin ismi büyük-küçük harfe duyarlıdır." + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "Eğer boş bırakırsanız, yedekler %s kök dizinine yerleştirilecek" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "örneğin: %s" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "Klasör mevcut değilse, yeni bir klasör oluşturulacak." + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "Burada kullanmak istediğiniz %s klasörünün yolunu giriniz." + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "Taşıyıcı" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "Burayı boş bırakırsanız varsayılan seçim kullanılır." + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "Kullanıcı" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "Daha fazla bilgi için linke tıklayın" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "giriş URI" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "OpenStack Swift sağlayıcınızdan giriş bilgilerinizi alınız ve disk için kullanacağınız bir taşıyıcı ismi belirleyiniz. Eğer mevcut değilse, bu taşıyıcı sizin için oluşturulacaktır." + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "%s indirilemedi" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "indirme başarısız" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "dosyalar listelenemiyor" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "%s yüklenemedi" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "Tamamlandı:" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "Ayarlarınızı kaydettikten sonra bu sayfaya geri dönüp bu linke tıklayarak %s girişinizi tamamlayabilirsiniz." + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "(Giriş yapmış görünüyorsunuz)." + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "Dropbox" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "%s ile giriş yap" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "Uzak dosya indirilemiyor: İndirme başarısız" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "Bölge: %s" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "%s hatası - taşıyıcıya eriştik, ama içinde dosya oluşturamadık" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "%s bulunamadı" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "%s taşıyıcısına erişilemiyor" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "%s hatası - taşıyıcıya erişilemiyor" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "Hesap sahibinin adı: %s." + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "Özel klasör ismi kullanabilmek için UpdraftPlus Premium kullanın." + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "Bu Google Drive'a özgü bir dahili ID numarasıdır" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "Bu bir klasör ismi değil." + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "Klasör" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "%s indirme: başarısız: dosya bulunamadı" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "İsim: %s." + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "Google Drive dosya listeleme: kök klasöre erişilemiyor" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "%s versiyonunuz: %s." + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "Hosting şirketinizden sistemi upgrade etmelerini istemelisiniz." + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "Uzak depolama metodu (%s) PHP %s veya daha güncelini gerektiriyor." + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "Tema klasörü (%s) bulunamadı, fakat küçük harf ile yazılmış bir klasör mevcut; veritabanı seçeneği bu şekilde güncelleniyor" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "Çağır" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "Getir" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "Bu özellik %s %s sürümü veya daha güncelini gerektiriyor" + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "Elegant themes tema oluşturucu eklenti bilgisi bulundu: geçici klasör sıfırlanıyor" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "%s dosyaları çıkarıldı" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "Arşiv açılamadı" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "Hata - dosya indirilemedi" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "Yeni yedek dosyaları için yerel klasörü tekrar tara" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "Uyumluluk testleri yapılmış bir sürüm kullandığınızdan emin olmak için UpdraftPlus'ı güncellemelisiniz." + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "En fazla %s versiyonuna kadar test edilmiştir." + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "Yüklü UpdraftPlus Yedekleme/Geri Yükleme versiyonu kullandığınız Wordpress versiyonu (%s) ile test edilmemiştir." + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "parola/anahtar" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "Anahtar" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "Giriş bilginiz bir şifre ve ya anahtar-tabanlı olablir, sadece birini girmelisiniz, ikisi birden olmaz." + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "Anahtar geçerli formatta değil veya bozulmuş." + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "SCP/SFTP parola/anahtar" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "Yedeklenen dosyalar (%s tarafından oluşturulmuş)" + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "Dosyalar ve veritabanı Wordpress yedeği (%s tarafından oluşturulmuş)" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "Yedek %s tarafından oluşturuldu." + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "Veritabanı (%s tarafından oluşturuldu)" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "bilinmeyen kaynak" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "Uzak depolama alanını tekrar tara" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "Yedek dosyalarını yükle" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "Bu yedek %s tarafından oluşturulmuş, ve içeri yüklenebilir." + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "Meydana gelebilecek sorunlar ve çözümlemesi için bu sayfayı okuyun." + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "Wordpress rötarlı bir kaç (%d) zamanlanmış göreve sahip. Eğer bu bir geliştirici sitesi değilse, Wordpress yüklemenizdeki zamanlayıcı çalışmıyor olabilir." + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "Bu yedek başka bir yedekleme eklentisi ile oluşturulduysa UpdraftPlus Premium yardımcı olabilir." + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "Ancak, UpdraftPlus arşivleri standart zip/SQL dosyalarıdır - eğer dosyanızın uygun biçimde olduğundan eminseniz, şablona uyacak şekilde yeniden adlandırabilirsiniz." + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "Bu dosya bir UpdraftPlus yedek arşivi gibi durmuyor. (arşivler backup_(saat)_(site adı)_kod_(tip).(zip|gz) gibi bir isme sahip .zip veya .gz uzantılı dosyalardır)" + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "Bilinmeyen kaynak tarafından oluşturulmuş yedek (%s) - geri yüklenemiyor." + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "Zip dosyasında WordPress içerik klasörü (wp-content) bulunamadı." + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "UpdraftPlus'ın bu sürümü bu tip yabancı yedeği nasıl işleyeceğini bilmiyor" + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "%s işlemi beklenmeyen bir HTTP yanıtı döndürdü: %s" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "Bu dosya er,şim metodu (%s) için olan UpdraftPlus modülü dosyaları listelemeyi desteklemiyor" + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "Ayar bulunamadı" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "Uzak depolama alanının taranması sonucu bir ya da daha fazla yedek eklendi; bu yedekler \"tutma\" ayarlarından otomatik olarak silinmeyecektir; bu dosyaları silmek istiyorsanız/istediğinizde bunu manuel olarak yapmalısınız." + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "Uzak ve yerel depolama yedek setleri için tekrar taranıyor..." + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "(Devamını oku)" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "Çoklusite yollarını ayarlıyor" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "Tüm log kayıtlarını syslog'a kaydet (sadece sunucu yöneticileri bunu yapmak isteyebilir)" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "Başka ekle..." + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "Kaldır" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "Diğer %s SSS." + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "Yedekleme işlemi ile ilgili daha fazla bilgi ve email almak için buraya bakın - özellikle bir şeyler hatalı çalışıyorsa faydalı olacaktır." + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "Birden fazla dosya/klasör girmek için virgül ile ayırın. Üst seviye girişler için, girişin başına joker olarak kullanmak için * koyabilirsiniz." + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "Özel İçerik tipi yönetici eklenti verisi bulundu: seçenek önbelleği temizleniyor" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "%s çalışmadan önce, hosting firmanız bu fonksiyonları aktive etmelidir." + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "Sunucunuzun PHP yüklemesinde bu fonksiyonlar pasif hale getirilmiş: %s." + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "krtiptolanmış FTP (açık şifreleme)" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "kriptolanmış FTP (kapalı kriptolama)" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "yaygın kriptolanmamış FTP" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "Yedeği yaratan:" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "Bu sitede talep kullanılabilir" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "Destek erişiminizi devam ettirmek için lütfen yenileyin." + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "UpdraftPlus desteğine erişim için ödemenizin süresi dolmak üzere." + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "Tekrar erişim kazanmak için, lütfen yenileyin." + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "UpdraftPlus destek erişimi için yaptığınız ödemenin süresi doldu." + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "Bu sitede UpdraftPlus güncellemeleri için paralı erişiminizin yakında süresi dolacaktır." + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "Erişiminizin ve güncellemelerin devamı (gelecek özellikler ve yeni Wordpress versiyonlarıyla uyumluluk) ve destek için, lütfen yenileyin." + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "Bu sitede %s / %s eklenti için UpdraftPlus güncellemelerine paralı erişiminizin süresi dolmak üzeredir." + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "Bu sitede %s eklentileri için UpdraftPlus güncellemelerine paralı erişiminizin süresi dolmuştur." + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "Güncellemelere (gelecek özellikler ve Wordpress uyumluluk güncellemeleri dahil) tekrar erişim kazanmak ve desteklemek için, lütfen yenileyin." + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "UpdraftPlus güncellemelerine paralı erişiminiz sona ermiştir. UpdraftPlus güncellemelerini daha fazla erişemeyeceksiniz." + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "Ana gösterge panaelinden gizle (%s hafta için)" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "Çifte-sıkıştırmayı geri alma denemesi başarılı oldu." + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "Çifte-sıkıştırmayı geri alma denemesi başarısız oldu." + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "Veritabanı dosyası iki kez sıkıştırılmış gözüküyor - muhtemelen dosyayı indirdiğiniz site yanlış-ayarlanmış bir websunucuna sahipti." + +#: admin.php:1528 +msgid "Constants" +msgstr "Sabitler" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "Veri tabanı dosyasını okumak için açma başarısız:" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "Database tablosu bulunamadı" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "lütfen tekrar zamanlanmış deneme için bekleyin" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "Uyarı mesajlarının tavsiye niteliğinde olduğunu unutmayın - yedekleme işlemi bu nedenle durmaz. Aslında işinize yarayacak bilgiler sunar, veya yedekleme işlemi başarılı olmazsa sorunun kaynağını belirtebilir." + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "İşlenen veritabanı sorguları: %.2f saniyede %d" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "Bul ve değiştir ulaşılan satır: %d" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "Bu tabloyu geç: bu tablodaki (%s) veri aranmamalı/değiştirilmemeli" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "Hesap dolu: %s hesabınızda sadece %d byte kaldı, ancak yüklenecek dosya %d byte kalan veri içeriyor ( toplam boyut %d byte)" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "Oluşan hatalar:" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "Bu geri yüklemeye ait log dosyasını indirmek için bu linki takip edin (destek talepleriniz için gereklidir)" + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "Bu sıkça sorulan sorularada gözatınız" + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "Eğer uzak depolama seçmezseniz, yedekler web sunucunda tutulacaktır. Eğer yedekleri manuel olarak bilgisayarınıza kopyalamayı düşünmüyorsanız, web-sunucusunun kaybı hem sitenizin hem de yedeklerinizin yok olmasına sebep olacağından, bu işlem tavsiye edilmez" + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "Geri alınıyor (gerekli ise) ve yedek dosyaları hazırlanıyor..." + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "Bu web sunucusundaki PHP ayarları PHP isteklerinin sadece %s saniye çalışmasına izin veriyor, ve bu limitin artmasına müsade etmiyor. Eğer içeri yükleyeceğiniz çok büyük verileriniz varsa, ve geri yükleme işlemi zaman aşımına uğrarsa, web hosting firmanızdan bu limiti yükseltmesini isteyebilirsiniz (ya da parça parça geri yükleme deneyebilirsiniz)" + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "Önceki geri yüklemeden kalmış silinmemiş klasörler bulunuyor (lütfen tekrar denemeden önce bu klasörleri silmek için \"Eski Klasörleri Sil\" butonunu kullanın) : %s" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "Wordpress eklentilerini çalıştırmak için izin verilen süre çok az (%s saniye) - yedekleme hatalarını ve zaman aşımlarını engellemek için bu süreyi arttırmalısınız (daha fazla yardım için hosting firmanıza danışın - PHP ayarlarındaki max_execution_time ayarından kaynaklanıyor; tavsiye edilen süre %s saniye ve daha fazlası)" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "Blog/site tabloları değiştiriliyor: %s den: %s :ye" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "%s: Ön bellek dosyası es geçildi (dosya mevcut değil)" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "Bu eklenti devre dışı: %s: Hazır olduğunuzda yeniden etkinleştirin." + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "%s bağlantısı zaman aşımına uğradı; eğer sunucu bilgilerini doğru girdiyseniz, bu sorun bağlantıyı engelleyen bir firewall'dan kaynaklanıyor olabilir. Hosting şirketiniz ile iletişime geçmeniz önerilir." + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "Mevcut tema bulunamadı; sitenin yüklenmesine engel olmaması için, temanız varsayılan temaya geri döndürüldü" + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "Geri yükleme başarısız oldu ..." + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "Mesajlar:" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "Maksimum paket boyutundan büyük ve bölünemeyen bir SQL satırı bulundu; bu satır işlenmeyecek ve düşürülecek: %s" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "Dizin bulunamadı" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "Yeni Kullanıcı'nın Email Adresi" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "Yeni Kullanıcı'nın Kullanıcı Adı" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "Yönetici API Anahtarı" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "Yönetici Kullanıcı Adı" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "Amerika veya İngiltere Rackspace Hesabı" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "Rackspace yönetici kullanıcıadı/API anahtarınızı girin (böylece Rackspace sizi tanıyarak yeni kullanıcılar yaratma izni verir), ve yeni kullanıcı için yeni (eşsiz) bir kullanıcıadı ve email adresi girin, bir de konteyner adı verin." + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "Yeni API kullanıcısı ve içeriği yarat." + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "API Anahtarı: %s" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "Şifre: %s" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "Kullanıcı adı: %s" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "Bulut Dosyaları işlemi başarısız oldu (%s)" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "Çakışma: Kullanıcı adı veya e-mail mevcut." + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "Geçerli bir email adresi girmelisiniz" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "Bir konteyner girin" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "Yeni bir kullanıcı adı girmelisiniz" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "Bir yönetici API anahtarı girmeniz gerekiyor" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "Bir yönetici kullanıcı adı girmeniz gerekiyor" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "Sadece bu konteynere (tüm hesabınız yerine) erişimi olan yeni bir API kullanıcısı oluşturun" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "Rackspace Bulut Dosyaları kullanıcıları için gelişmiş özellikleri ekleyin" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "Rackspace Bulut Dosyaları, gelişmiş" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "Bulut Dosyası Kapsayıcısı" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "Bulut Dosyaları API Anahtarı" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "Sadece bu Rackspace konteynerine erişimi olan yeni bir Rackspace API alt-kullanıcısı ve APı anahtarı oluşturmak için bu eklentiyi kullanın." + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "Bulut Dosyaları Kullanıcı Adı" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "Londra (LON)" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "Hong Kong (HKG)" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "Kuzey Vijinya (IAD)" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "Şikago (ORD)" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "Sidney (SYD)" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "Dallas (DFW) (varsayılan)" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "Bulut Dosyaları Saklama Bölgesi" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "Rackspacecloud.com sitesinde oluşturulan hesaplar US-hesaplarıdır; rackspace.co.uk sitesinde oluşturulan hesaplar UK-tabanlıdır." + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "ABD yada İngiltere kaynaklı Rackspace Hesabı" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "Rackspacecloud.com sitesinde oluşturulan hesaplar US hesaplarıdır; rackspace.co.uk sitesinde oluşturulan hesaplar UK hesaplarıdır." + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "Yetkilendirme başarısız (giriş bilgilerinizi kontrol edin)" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "UpdraftPlus.Com'a bağlanmaya çalışırken bilinmeyen bir hata oluştu" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "Oluştur" + +#: admin.php:556 +msgid "Trying..." +msgstr "Deneniyor..." + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "Yeni kullanıcının RackSpace konsol şifresi (tekrak gösterilmeyecektir):" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "(kriptolanmış iken)" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "Veri hatası:" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "Yedek, yedekleme geçmişinde mevcut deil." + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "Wordress kurulumunuz geri yükleme/taşımanızdan önceki eski klasörleri içeriyor (teknik bilgi: bunlar -old soneki ile işaretlenmiştir). Geri yüklemenin hatasız çalıştığından emin olur olmaz eski klasörleri silmek için bu butona tıklamalısınız." + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "Maksimum paket boyutunu aşmamak için satırları ayır" + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "Veritabanı kullanıcınızın tabloları silme (drop) yetkisi yok. Tabloları boşaltıp bunun üstesinden gelmeye çalışacağız; aynı veritabanı yapısına (%s) sahip bir Wordpress versiyonundan geri yükleme yaptığınız sürece bu işe yaramalıdır " + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "Yeni tablo öneki: %s" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "Dosya izinleri eski verinin taşınmasına ve saklanmasına izin vermiyor; bunun yerine, silinecek." + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "%s: Bu isimde bir dizin mevcut, yenisiyle değiştirilecek" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "Dosyaları hedef konuma taşınamadı. Dosya izinlerinizi kontrol edin." + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "Yeni dosyalar taşınamadı. wp-content/upgrade klasörünü kontrol ediniz." + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "Eski dosyalar yolun dışına taşınamadı." + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "Eski veriler yolun dışına taşınıyor..." + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "Başka adres ekle..." + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "Yedekleme işi bittiğinde rapor göndermek için mail adreslerini buraya girin." + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "Email raporları" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "%s checksum: %s" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "dosyalar: %s" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "Kullanılacak email adresini ayarlamak için \"Raporlama\" sekmesini kullanın." + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr "(uyarılar ile (%s))" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr "(hatalarla (%s))" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "Bilgi ayıklanıyor" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "Şu dizine yüklendi:" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "Geçen süre" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "Uyarılar" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "Hatalar" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "Hatalar / uyarılar:" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "İçerik:" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "Yedekleme başlangıcı:" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "Yedekleme raporu" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "%d saat, %d dakika, %d saniye" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "%d hata, %d uyarı" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "%s yetkilendirme" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "%s hata: %s" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "%s logo" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "%s beklenen bir yanıt döndürmedi - daha fazla detay için log dosyanızı kontrol edin" + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "Gerekli %s PHP modülü yüklü değil - hosting firmanızdan yüklemesini isteyin" + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "Daha fazla seçenek için \"%s\" eklentisini kullanın." + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "Sitenizin yönetici email adresi (%s) kullanılacak." + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "Bağlan" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "Daha fazla raporlama özelliği için, Raporlama eklentisi kullanın" + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "(versiyon: %s)" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "Mail sunucularının boyut limitleri olduğunu unutmayın; genellikle yaklaşık %s Mb; limit boyutunu aşan yedekler ulaşmayabilir" + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "Email depolama metodu etkinleştirildiğinde, bütün yedeği de gönder." + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "Son durum:" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "Yedek içeriği:" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "Yedeklendi: %s" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "Log dosyası bu e-mail'e eklendi." + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "Bilinmeyen/beklenmeyen hata - lütfen destek talebi açınız" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "Sadece veritabanı (dosyalar bu plana dahil değil)" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "Veritabanı (dosyaların yedeklemesi tamamlanmadı)" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "Sadece dosyalar (veritabanı bu plana dahil değil)" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "Dosyalar (veritabanı yedeklemesi tamamlanmadı)" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "Dosyalar ve veritabanı" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "(Bu özellikle multisite uyumluluğu için kodlanmış eklentiler hariç bütün WordPress yedekleme eklentileri için geçerlidir)." + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "Yükseltme yapılmadan, UpdraftPlus eklenti ayarlarını değiştirebilen bütün blog yöneticilerine bütün ağı. yedekleme (verilere erişim, şifreler dahil) ve geri yükleme (özel modifikasyonlar dahil, değiştirilen şifreler v.b.) izin verir." + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "UpdraftPlus Premium, veya Multisite eklentisiyle, WordPress Multisite özelliği ekstra özelliklerle birlikte desteklenmektedir." + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "Bu bir WordPress multi-site (diğer adıyla ağ) kurulumudur." + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "UpdraftPlus uyarı:" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "(ve ya önceden satın aldıysanız bu sayfadaki formu kullanarak bağlanın)" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "aktive ekmek üzere eklentiyi güncellemek için bu linki takip edin" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "yüklemek ve eklentiyi güncellemek için bu linki takip edin" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "son" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "Kullandığınız versiyon: %s" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "Yüklediniz" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "UpdraftPlus Destek" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "UpdraftPlus için uygun eklentileri içeren bir güncelleme hazır - yüklemek için bu linke tıklayınız." + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "UpdraftPlus Eklentileri" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "UpdraftPlus için bir güncelleme mevcut - yüklemek için bu linki takip edin." + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "UpdraftPlus.Com yanıt verdi, fakat yanıtı anlamadık" + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "Email adresiniz ve şifreniz UpdraftPlus.Com tarafından tanınmadı" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "UpdraftPlus.Com anlayamadığımız bir yanıt verdi (veri: %s)" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "UpdraftPlus.Com yanıt verdi, fakat yanıtı anlamadık" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "UpdraftPlus.Com bağlantısı başarısız" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "Raporlama" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "Seçenekler (ham)" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "Sadece hatalar/uyarılar olduğunda rapor gönder" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "İçerik URLsi:" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "Dükkanımızdan \"More Files\" eklentisini de görün." + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "Hosting hesabınızdaki boş alan çok az kaldı - sadece %s Mb kaldı" + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "PHP için ayrılan hafıza (RAM) çok düşük (%s Mb) - yetersiz hafızadan kaynaklı hatalar yaşanmaması için hafızayı arttırmalısınız (daha fazla bilgi için hosting şirketinize danışın)" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "Eklentileri Yönet" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "Satın al" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "UpdraftPlus.Com mağazasından edin" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "Onu bu sitede aktive edin" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "Aktif olmayan bir satın almanız mevcut" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "Bu siteye atanmış" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "Bu site için mevcut (Tüm-eklentiler satın almanız vasıtasıyla)" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "(büyük ihtimalle geri çekilen veya henüz yayınlanmayan bir sürüm)" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "Buraya gidin" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "Teknik desteğe mi ihtiyacınız var?" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "Eklentileriniz alınırken bir hata oluştu." + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "Bilinmeyen bir yanıt alındı. Alınan yanıt:" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "Talep kabul edilmedi - hesap giriş bilgileriniz yanlış" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "Biz talepte bulunurken lütfen bekleyin..." + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "UpdraftPlus.Com'a bağlanmaya çalışırken hatalar oluştu:" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "Şu an UpdraftPlus.Com hesabınıza bağlı değilsiniz." + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "Yeni eklenti satın aldıysanız bu linke tıklayarak bağlantınızı yenileyin." + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "Şu an UpdraftPlus.Com hesabınıza connected durumdasınız." + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "UpdraftPlus.Com parola güvenliğiniz ile ilgili bilgi almak ister misiniz? Burayı okuyun." + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "Bilgilerini mi unuttun?" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "Hala bir hesabın yok mu? Hemen bir tane al! (beleş beleş)" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "UpdraftPlus.com hesabınızla bağlanın" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "Web sunucunuzdaki PHP versiyonu çok eski (" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "Kullanımdan kalkmış bir Updraft eklentisi yüklemiş gözüküyorsunuz - belki karıştırmış olabilir misiniz?" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "Yüklemeye başlamak için buraya gidin." + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "UpdraftPlus henüz yüklenmedi." + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "Aktif etmek için tıkla." + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "UpdraftPlus henüz aktif edilmedi." + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "Bağlanmak için buraya gidin." + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "Satın aldığınız eklentileri listelemeyi etkinleştirmek için, henüz UpdraftPlus.com hesabınıza bağlanmadınız." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "Bu olmadan kriptolanma çok daha yavaş olur." + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "Sunucunuzda %s modülü yüklü değil." + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "(Giriş yapmış gözüküyorsunuz, ancak bir problem yaşadıysanız tekrar giriş yaparak erişiminizi tazeleyebilirsiniz)." + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "Dosyaları buraya sürükle" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "Wordpress'i komut satırından yönet - büyük zaman-tasarrufu sağlar" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "WordShell'e göz atın" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "Daha fazla özellik veya ücretli, garantili destek mi istiyorsunuz? UpdraftPlus.Com'u ziyaret edin." + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "Web sunucusu bir hata kodu döndürdü (tekray deneyin, ya da web sunucu loglarını kontrol edin)" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "Geri yükleme işlemi başladı. İşlemin bitişi belirtilene kadar işlemi durdurmayın ve tarayıcıyı kapatmayın." + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "Eğer hem veritabanını hem de dosyaları hariç tutarsanız, her şeyi hariç tutmuş ollursunuz." + +#: restorer.php:1596 +msgid "Site home:" +msgstr "Site Anasayfa:" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "Uzak Depolama Seçenekleri" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "(loglar UpdraftPlus ayarlar sayfasında normal şekilde bulunabilir)..." + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "Bu seçimi bir daha ki sefer hatırla (tekrar değiştirme şansınız olacak)" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "Yükleme başarısız" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "Bir yedeği bir eklentiyle birden fazla konuma gönderebilirsiniz." + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "Not: aşağıdaki ilerleme çubuğu aşama tabanlıdır, zaman tabanlı DEĞİLDİR. Yedeklemeyi aynı aşamada bir süre kaldığı için durdurmayın - bu normaldir." + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "(%s%%, dosya %s / %s)" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "Bunun nasıl çalıştığı hakkında daha fazla oku..." + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "Başarısız: Giriş yaptık, fakat bu konumda başarıyla bir dosya yaratamadık." + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "Başarısız: Giriş yaptık ve ilgili klasöre ulaştık, fakat bu konumda başarıyla bir dosya yaratamadık." + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "SFTP yerine SCP kullanın" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "SCP/SFTP kullanıcı ayarı" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "SCP/SFTP host ayarı" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "Email ile yedeği gönderme denemesi başarısız oldu (muhtemelen yedek bu metod için fazla büyük)" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "Yedek kaynağı: %s." + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "%s ayarları test sonucu:" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "(Tamamlanmadı)" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "Umduğunuzdan fazla yedek görüyorsanız, bu belkide eski yedek setlerinin yeni yedekler tamamlanmadan silinmesinden olabilir." + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "Sakın uploads ya da plugins klasörünün altı olarak belirlemeyin, yoksa kendini yenileme sorunu olacaktır. (yedeğin yedeğinin yedeği...)" + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "Burası UpdraftPlus'ın başlangıçta zip dosyalarını oluşturacağı yerdir. Bu klasör web sunucunuz tarafından yazılabilir olmalıdır. İçerik klasörünüzün altında olmalıdır (varsayılan olarak wp-content klasörünün altıdır)" + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "İş ID: %s" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "son etkinlig: %ss önce" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "yeniden başlama: %d (%ss sonra)" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "Bilinmiyor" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "Yedekleme tamamlandı" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "Hatalar yüzünden belirlenmiş tekrar deneme zamanını bekliyor" + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "Eski yedek setleri siliniyor" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "Dosyalar uzak depolama birimine yükleniyor" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "Veritabanı şifrelendi" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "Veritabanı şifreleniyor" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "Veritabanı yedeği oluşturuldu" + +#: admin.php:3359 +msgid "table: %s" +msgstr "tablo: %s" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "Veritabanı yedeği oluşturuluyor" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "Yedek zip dosyaları oluşturuldu" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "Yedek zip dosyaları oluşturuluyor" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "Yedekleme başladı" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "Yedeklemeler sürüyor:" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "WordPress yüklemenizin planlayıcısı, DISABLE_WP_CRON ayarı ile pasifleştirilmiş. Planlayıcıyı manuel olarak çalıştıran bir aracınız yoksa veya bu ayar aktifleştirilmezse yedeklemeler çalışmayacaktır ("Şimdi Yedekle" bile)." + +#: restorer.php:646 +msgid "file" +msgstr "dosya" + +#: restorer.php:639 +msgid "folder" +msgstr "klasör" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "UpdraftPlus içerik klasörünüzde %s oluşturmak zorundaydı, ancak başarısız oldu - lütfen dosya izinlerinizi kontrol edin ve erişime izin verin (%s)" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "Yedekleme henüz bitmedi; yeniden başlama zamanlandı" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "Web sayfanız seyrek ziyaret ediliyor ve UpdraftPlus umduğu kaynaklara ulaşamıyor; lütfen bu sayfayı okuyun:" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "%s girişi devam edemiyor, çünkü sitenizdeki başka bir şey buna engel oluyor. Diğer eklentilerinizi etkisizleştirmeyi ve varsayılan bir temaya dönmeyi deneyin. (Özellikle, sayfa başlamadan çıktı gönderen (büyük ihtimalle PHP uyarıları/hataları) gönderen bir bileşen arıyorsunuz. Hata ayıklama ayarlarını kapatmak da faydalı olabilir)." + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "PHP bellek limitiniz (hosting firmanız tarafından ayarlanan) çok düşük. UpdraftPlus bunu yükseltmeye çalıştı ama başarısız oldu. Bu eklenti 64 Mb ve daha küçük bir bellek limitiyle sıkıntı yaşayabilir - özellikle çok büyük dosyalar yüklemişseniz (ancak, bazı siteler 32Mb ile bile başarılı olabilir - deneyimleriniz değişiklik gösterebilir)." + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "Güncellemeye devam et" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "Aşağıda Devam a tıkladıktan sonra iptal etmeyin - yedeğin bitmesini bekleyin." + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "UpdraftPlus Otomatik Yedeklemeler" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "Hata oluştu:" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "UpdraftPlus ile yedek oluşturuluyor..." + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "Otomatik Yedekleme" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "UpdraftPlus ile veritabanı yedeği oluşturuluyor..." + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "Bu siteyi güncellemek için yeterli izinlere sahip değilsiniz." + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "temalar" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "eklentiler" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "Otomatik yedekleme başlıyor..." + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "UpdraftPlus ile %s ve veritabanı yedeği oluşturuyor..." + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "Güncelleme yapmadan önce (ilgili) yedekleri, temaları ve WordPress veritabanını otomatik olarak yedekle" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "Eğer ne yaptığınızdan emin değilseniz durmalısınız; aksi taktirde WordPress yüklemenizi yok edebilirsiniz." + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "Bu geçerli bir Wordpress çekirdek yedeğine benzemiyor - %s dosyası eksik." + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "Zip dosyası (%s) açılamadı - bütünlük kontrolu için öntarama yapılamadı." + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "Zip dosyası (%s) okunamadı - bütünlüğünü kontrol etmek için ön-tarama yapılamadı." + +#: admin.php:2310 +msgid "More plugins" +msgstr "Daha fazla eklenti" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "Destek" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "UpdraftPlus veritabanı yedeğini tararken veritabanı önekini bulamadı." + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "Bu veritabanında ana Wordpress tabloları eksik: %s" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "Yeni bir WordPress versiyonunu (%s) eski versiyonuna (%s) içeri aktarıyorsunuz. WordPress'in bunu kaldıracağının hiç bir garantisi yok." + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "Veritabanı geçerli bir WordPress veritabanı olmak için çok küçük (Boyut: %s Kb)." + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "Temayı Güncelle" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "Eklentiyi Güncelle" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "Otomatik yedekleme ile güvende kalın" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "Geç (%s hafta için)" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "Yükleme konumu (%s) bulunmuyor - sıfırlanıyor (%s)" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "Sayfanın yüklenmesi sona ermesine rağmen bu yazıyı hala okuyabiliyorsanız, sitede JavaScript veya jQuery ile ilgili bir problem var demektir." + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "Dosya upload edildi." + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "Bilinmeyen sunucu yanıt durumu:" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "Bilinmeyen sunucu yanıtı:" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "Şifre çözmek için kullanılacak anahtar:" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "Şifrenin çözülmesi ve veritabanı dosyasının bilgisayarınıza indirilmesi için bu linki takip edin. " + +#: admin.php:584 +msgid "Upload error" +msgstr "Upload hatası" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "Dosya UpdraftPlus şifreli veritabanı arşivi gibi görünmüyor (bu tür dosyalar .gz.crypt uzantılı olurlar ve dosya isimleri backup_(zaman)_(site adı)_(kod)_db.crypt.gz) şablonunda olur)" + +#: admin.php:582 +msgid "Upload error:" +msgstr "Upload hatası:" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "(UpdraftPlus tarafından yaratılmış bir zip dosyası upload ettiğinizden emin olun)" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "ve sonra, eğer isterseniz," + +#: admin.php:572 +msgid "Download to your computer" +msgstr "Bilgisayarınıza indirin" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "Web sunucunuzdan silin" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "Örnek S3-uyumlu depo sağlayıcılar:" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "Bu yedek için bulut depolama olmadığından dolayı arşivler açıldıktan sonra silinmeyecek. " + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "Bu çoklu arşiv kümesinden bir veya birkaç arşiv eksik gibi görünüyor." + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "(Küme içerisinde %d arşiv)." + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "Arşiv parçalama boyutu:" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "Hata: Sunucu bize anlayamadığımız bir yanıt (JSON) gönderdi." + +#: admin.php:563 +msgid "Warnings:" +msgstr "Uyarılar:" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "Hata: Sunucu boş yanıt gönderdi. " + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "Bu dosya UpdraftPlus tarafından yaratılmış gibi görünüyor, ama şu tipte bir nesne tanımlanamadı: %s. Belki de bir eklenti (add-on) yüklemeniz gerekiyor?" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "Yedek arşiv dosyaları işlendi, ama bazı hatalar alındı. Yeniden denemeden önce iptal edip hataları düzeltmeniz gerekiyor." + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "Yedek arşiv dosyaları işlendi, ama bazı uyarılar alındı. Herşey yolundaysa, devam etmek için şimdi yeniden \"Geri Yükle\"ye basın. Aksi takdirde iptal edin ve oluşan problemleri düzeltin. " + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "Yedek arşiv dosyaları başarılı bir şekilde işlendi. Devam etmek için yeniden \"Geri Yükle\"ye basın." + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "Bu çoklu-arşiv yedek kümesinde şu arşivler eksik: %s" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "Dosya (%s) bulundu, ama beklenenden (%s) farklı bir boyutu (%s) var - zarar görmüş olabilir." + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "Dosya bulundu, ama boyutu sıfır (yeniden upload etmeniz gerekiyor): %s" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "Dosya bulunamadı (upload etmeniz gerekiyor): %s" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "Böyle bir yedek mevcut değil" + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "Bu dosya için yedek arşivi bulunamadı. Kullanılan uzak depo metodu (%s) dosyaları almamıza izin vermiyor. UpdraftPlus kullanarak geri yükleme yapmak için, bu dosyanın bir kopyasını alıp UpdraftPlus'ın çalışma klasörüne koymanız gerekiyor. " + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "Dizin taşıma başarısız (Dosya izinlerinizi ve disk durumunuzu kontrol edin): %s" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "Dosya taşıma başarısız (Dosya izinlerinizi ve disk durumunuzu kontrol edin): %s" + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "Açılmış yedek yerine taşınıyor..." + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "Zip dosyası (%s) açılamadı - %s" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "WordPress ana dizin sunucu yolu: %s" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "%s bitiş noktası" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "... ve daha fazlası!" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "S3 (Uyumlu)" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "Dosya lokalde mevcut değil - uzak depodan alınması gerekiyor" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "%s arşivi aranıyor: dosya adı: %s" + +#: admin.php:4836 +msgid "Final checks" +msgstr "Son kontroller" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "Yedekleme sonrası gerek olmayan yedekleme dosyalarını sunucunuzdan silmek için burayı işaretleyin (işaretlemezseniz, uzağa gönderilen dosyalar lokalde de kalacaklar ve lokalde kalan bu dosyalar koruma limitlerine tabii olmayacaklar)" + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "Şifre çözme amaçlı upload etmek için şifreli veritabanı dosyalarınızı (db.gx.crypt uzantılı dosyalar) buraya bırakın" + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "Sizin wp-content dizini sunucu yolunuz: %s" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "Ham yedek tarihçesi" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "Ham yedek ve dosya listesini göster" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "Dosyalar işleniyor - lütfen bekleyin..." + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "Ne yapılması gerektiği hakkında lütfen bu SSS'a bir göz atın." + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "Şu anki WordPress sisteminizin ekstra boşluklarla ilgili bir problemi var. Bu durum buradan indireceğiniz yedeklere zarar verebilir. " + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "Veritabanı dosyası açılamadı." + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "Şifresi çözülmüş veritabanını dosya-sistemine yazma işlemi başarısız." + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "Bilinen yedekler (ham)" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "Bu dizindeki dosyalar numaralandırılamıyor." + +#: restorer.php:939 +msgid "Files found:" +msgstr "Bulunan dosyalar:" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "Yedekten kullanılan dizin: %s" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "İstenen tablo motoru (%s) mevcut değil - MyISAM'a geçiliyor" + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "Bu bir taşıma gibi gözüküyor (Yedek, farklı adrese/URL'e sahip bir siteden), ama veritabanında arama-ve-değiştirme seçeneğini işaretlemediniz. Bu genelde bir hatadır." + +#: admin.php:4908 +msgid "file is size:" +msgstr "dosya boyutu:" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "Daha fazla bilgi için buraya gidin." + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "Bazı dosyalar hala indiriliyor veya işleniyor - lütfen bekleyin." + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "Bu yedek kümesi başka bir sitedendir - bu bir geri yükleme değil, bir geçiştir. Bunun için Migrator eklentisine ihtiyacınız var." + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "Kullanılan saat dilimi WordPress ayarlarınızdan (Ayarlar -> Genel) gelmektedir." + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "SS:DD formatında giriş yapın (örn. 14:22)" + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "%s upload başarısız" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "%s oturum açma başarısız" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "%s ilk kimlik doğrulama yapmamış görünüyorsunuz" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "Silme esnasında %s için giriş yapılamadı (detay için log dosyasına bakın)" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "%s ilk kimlik doğrulama yapmamış görünüyorsunuz (silme esnasında)" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "Dropbox hatası: %s (daha fazlası için log'a göz atın)" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "Hata - Buradan (%s) dosya indirme işlemi başarısız" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "Hata - Burada (%s) böyle bir dosya mevcut değil" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "%s Hata" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "%s hata - Dosya upload işlemi başarısız" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "%s hata: Yığınları yeniden birleştirme işlemi başarısız" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "%s kimlik denetimi başarısız" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "Hata: %s" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "Belirtilen yedek dizini mevcut, ama yazılabilir değil." + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "Belirtilen yedek dizini mevcut değil." + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "Uyarı: %s" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "En son çalıştırılan yedekleme işi: " + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "Çok büyük boyutlu bir dosya ile karşılaşıldı: %s (boyut: %s Mb)" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "%s: okunamayan dosya - yedeklenemedi" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "%s tablosunda çok fazla satır (%s) bulunuyor - umarız web sunucu şirketiniz size bu tabloyu yedeğe alabilecek kadar kaynak veriyordur." + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "En son veritabanı dosyasını kapatırken bir hata oluştu. " + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "Karşılaşılan uyarılar:" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "Yedekleme başarılı oldu (uyarılarla) ve tamamlandı." + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "Boş disk alanınız çok düşük - sadece %s Mb kalmış." + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "Yeni site:" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "HATA: Site URL'si alınmış." + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "Taşınmış site (UpdraftPlus'tan)" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "Çoklu-site yükleme işleminde bu yeni sitenin yeri ile ilgili detayları girin:" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "Devam etmek için bilgi gerekiyor:" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "Ağ etkinleştiren tema:" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "İşlenen eklenti:" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "Dosya yetkilerinizi kontrol edin: Dizin yaratılamadı: " + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "Bazı sunucular şifreli FTP özelliğine sahip olduklarını söylüyorlar, ama siz kullanmaya çalıştığınızda (uzun bir süre sonra) time-out hatası veriyorlar. Eğer sizin de başınıza bu geldiyse aşağıdan \"Gelişmiş Ayarlar\" (Expert Options) bölümüne gidip SSL özelliğini kapayın." + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "Web sunucunuzun PHP kurulumu gerekli bir modülü (%s) içermiyor. Lütfen web sunucu sağlayıcınıza danışın ve bu modülü aktif hale getirmelerini isteyin." + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "Lütfen giriş kimlik bilgilerinizi kontrol edin." + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "%s tarafından bildirilen hata şu şekildeydi:" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "Lütfen talep edilen bilgiyi sağlayın ve devam edin." + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "Tablolar drop edilemiyor, bunun yerine silinecekler (%s)" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "Yeni tablo yaratılamadı, bu komut (%s) atlanıyor" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "Site bilgisi:" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "Veritabanı kullanıcınızın tablo yaratma yetkisi yok. Basitçe tabloları boşaltarak geriyükleme işlemini deneyeceğiz, aşağıdaki durumlarda bu yöntem işe yarar: a) Aynı veritabanı yapısına sahip bir WordPress versiyonundan geriyükleme yapılıyorsa b) İçeri aktardığınız veritabanı şu anki sitede olmayan bir tablo içermiyorsa" + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "Uyarı:" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "WordPress çoklu-sitesi üzerinde çalışıyorsunuz - ama yedeğiniz çoklu-siteden alınmış değil." + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "Tekli siteyi çoklu-site kurulumunun içine aktarırken WordPress çekirdeğinin geriyüklenmesi atlanıyor. Eğer WordPress dizininizde önemli/gerekli şeyler varsa bunları zip dosyasından sizin yeniden eklemeniz gerekecek. " + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "Web sunucunuzun PHP kurulumu gerekli (%s için) bir modülü (%s) içermiyor. Lütfen servis sağlayıcınıza ulaşın ve bu modülü aktive etmelerini sağlayın. " + +#: admin.php:596 +msgid "Close" +msgstr "Kapat" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "Beklenmeyen yanıt:" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "Birden fazla adrese göndermek için, her bir adresi virgülle ayırın." + +#: admin.php:576 +msgid "PHP information" +msgstr "PHP bilgisi" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "Çalıştırılabilir zip bulundu:" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "PHP bilgisini göster (phpinfo)" + +#: admin.php:2627 +msgid "Get it here." +msgstr "Buradan ulaşın." + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "O zaman, \"Migrator\" eklentimizi deneyin. Bir kere kullandıktan sonra, siteyi manuel kopyalamak için harcayacağınız zamandan tasarruf etmiş olacaksınız. " + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "Siteyi taşımak mı yoksa klonlamak/kopyalamak mı istiyorsunuz?" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "Adım adım nasıl yapılacağını görmek için bu makaleyi okuyun." + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "Siteyi Taşı" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "Siliniyor... lütfen uzak depo ile iletişimin tamamlanmasının biraz zaman alacağını unutmayın." + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "Uzak depodan da sil" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "UpdraftPlus.com'dan son haberler:" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "Klonla/Taşı" + +#: admin.php:2304 +msgid "Premium" +msgstr "Premium" + +#: admin.php:2305 +msgid "News" +msgstr "Haberler" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "Yedek kümesi bulunamadı" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "%s - Bu birim yedeklenemedi; ilgili dizin mevcut değil (%s)" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "RSS linki" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "Blog linki" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "Güncel haberlere ve tekliflere ulaşmak için UpdraftPlus blog'una üye olun" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "%s Ayarları Test Ediliyor..." + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "Veya, mesela FTP kullanarak, UpdraftPlus dizininize (normalde wp-content/updraft) bunları manuel olarak koyabilir, sonrasında yukarıdaki \"yeniden tara\" linkini kullanabilirsiniz." + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "UpdraftPlus'ın hata ayıklama (debug) modu açıktır. Sadece UpdraftPlus'tan değil, diğer eklentilerden de gelebilecek hata ayıklama notlarını/uyarılarını bu sayfada görebilirsiniz. Destek birimimize ulaşmadan önce, alınan uyarının UpdraftPlus tarafından verildğinden emin olun. " + +#: admin.php:880 +msgid "Notice" +msgstr "Duyuru" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "Karşılaşılan hatalar:" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "Yeniden taranıyor (dahili yedek alanına manuel olarak upload etmiş olduğunuz yedekler aranıyor)..." + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "Bu öge aramaya başlandı" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "Depolama yeri " + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "\"%s\" tablosunda birincil anahtar mevcut değil, %s satırında manuel değişiklik gerekiyor." + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "satırlar: %d" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "Süre (saniye):" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "Hatalar:" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "Çalıştırılan SQL güncelleme komutları:" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "Yapılan değişiklikler:" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "İncelenen satırlar:" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "Kontrol edilen tablolar:" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "Tablo listesi alınamadı" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "Veritabanı arama ve değiştirme: yedek içerisindeki aranan: %s - yerine gelecek olan: %s" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "Uyarı: veritabanının site URL'si (%s) beklenenden (%s) farklı" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "Yapacak bir şey yok: Site URL'si zaten: %s" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "Hata: Beklenmeyen boş parametre (%s, %s)" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "Bu seçenek seçilmedi." + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "Veritabanı: Site URL'sini ara ve değiştir" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "Başarısız: %s işleminden dönen sonuç anlaşılamadı." + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "Başarısız: %s işlemi başlatılamadı." + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "(daha fazla öğren)" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "Veritabanında site adresini ara ve değiştir" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "Veritabanında site adresine verilen tüm referanslar şu anki site URL'si (%s) ile değiştirilecek" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "Blog upload'ları" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "En popüler eklentiler" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "Bu sayfaya girmek için yetkiniz yok." + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "Bu sayfaya girmek için yeterli yetkiye sahip değilsiniz." + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "Çoklu-site Yüklemesi" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "Gelecek seferden başlayarak" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "Başarısız: Port bir tamsayı olmalı" + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "parola" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "kullanıcı adı" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "host adı" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "Oturum açtıktan sonra gidilecek dizin - genelde ana dizininize görecelidir" + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "Dizin adresi" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "Parola" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "Port" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "Host" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "%s Hata: İndirme işlemi başarısız" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "Dosya yetkilerinizi kontrol edin: Başarılı bir şekilde yaratılamadı: " + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "%s bulunamadı" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "Varsayılan olarak açık şifreleme kullanılmaktadır. Örtülü şifrelemeyi (port 990) kullanmak için, aşağıdaki FTP sunucunuza :990 eklemesini yapın. " + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "Şifreli FTP mevcuttur ve gelişmiş seçeneklerden iptal etmediğiniz sürece otomatik olarak ilk denenecektir (başarısız olursa şifresiz olarak denenecektir). \"FTP Oturumunu Test Et\" butonu size şu an ne tür bir bağlantının kullanıldığını söyleyecektir." + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "%s dizinlerinin yedeği alınamadı: Yedeği alınacak bir şey bulunamadı" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "Ne girdiğinize çok dikkat edin - eğer / girerseniz gerçekten de tüm sunucunuzun içeriğinden oluşan zip dosyası yaratılmaya çalışılır." + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "Eğer kullanıyorsanız, mutlak bir yol (absolute path) girin (WordPress kurulumunuza göreceli değildir)." + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "Bu seçeneğin ne olduğundan emin değilseniz, bu seçeneği kapatmalısınız." + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "Dizini girin:" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "Daha Fazla Dosya" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "WordPress çekirdeği (eğer varsa WordPress ana dizininize yapılan eklemelerle birlikte)" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "Yukarıdaki dosyalar bir WordPress yüklemesindeki herşeyi içeriyor." + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "wp-config.php dosyasının üzerine yaz" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "WordPress Çekirdeği" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "Başarısız: Bu dizine bir dosya yerleştirmeyi başaramadık - lütfen kimlik bilgilerinizi kontrol edin" + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "Başarısız" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "WebDAV URL" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "Lokalde yazma işlemi başarısız: İndirme işlemi başarısız" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "Uzak dosyayı açarken hata: İndirme işlemi başarısız" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "Yığın %s: %s hatası oluştu" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "%s ayarları bulunamadı" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "Başarısız: Başarılı bir şekilde oturum açtık, ama verilen dizinde dosya yaratmayı başaramadık." + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "Başarılı: Başarılı bir şekilde oturumu açtık ve verilen dizinde dosya yaratabildiğimizi gördük (oturum türü: " + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "Başarısız: Bu bilgilerle oturum açılamadı." + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "Başarısız: Sunucu detay bilgileri verilmedi." + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "Hali hazırda bulunuyor olmalı" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "Şifreleme istiyorsanız(hassas iş verisi saklayacaksanız), bunun için bir eklenti mevcut." + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "Normal UpdraftPlus sadece şifresiz FTP'yi destekler." + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "%s hesap adınız: %s" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "Geriye dönen bilgilerden bazıları beklendiği gibi değildi - kullanımınız değişebilir" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "%s hesabınızla kimlik doğruladınız" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "bunun için bir eklenti mevcut." + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "Eğer aynı Dropbox içerisinde bir çok siteyi yedeklemek ve bu siteleri alt-klasörler vasıtası ile düzenlemek istiyorsanız, " + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "Yedeklerin kaydedildiği yer" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "Alt-klasör kullanma ihtiyacı var mı?" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "hata: dosya şuraya upload edilemedi: %s (detaylar için log dosyasına bakın)" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "Dropbox ile kimlik doğrulaması yapmamış görünüyorsunuz." + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "%s ile iletişim şifrelenmedi." + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "%s ile iletişim şifrelendi." + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "Kovaya eriştik, ve içinde dosyalar yaratabildik." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "Kovaya başarıyla erişim sağladık, fakat dosya yaratma denemesi başarısız oldu." + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "Başarısız" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "Başarısız: Böyle bir kovaya başarıyla erişemedik ya da oluşturamadık. Lütfen erişim için giriş bilgilerinizi kontrol edin, ve eğer bilgileriniz doğruysa farklı bir kova adı deneyin (başka bir %s kullanıcısı adınızı almış olabilirim)." + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "Bölge" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "Başarısız: Biriktirme yeri ayrıntısı verilmemiş." + +#: methods/s3.php:961 +msgid "API secret" +msgstr "API kodu" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "Sadece bir kova adı veya bir kova ve yol girin. Örnekler: benimkovam, benimkovam/benimyolum" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "%s lokasyon" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "%s gizli anahtar" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "%s giriş anahtarı" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "SSL sertifikasıyla ilgili hata görüyorsanız yardım için buraya bakın." + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "%s console konsolundan erişim anahtarınızı ve gizli anahtarınızı alın, sonra depolama açın (global olarak eşşiz - tüm %s kullanıcıları) kova adı (harfler ve sayılar) (ve opsiyonal olarak bir yol) belirleyin. Bu kova önceden yoksa oluşturulacak." + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "%s Hata: %s için giriş denemesi başarısız oldu. Yetkilerinizi ve kimlik bilgilerinizi kontrol edin." + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "%s Hata: %s indirme işlemi başarısız. Yetkilerinizi ve kimlik bilgilerinizi kontrol edin." + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "%s tekrar birleştirme hatası (%s): (daha fazlası için log dosyasına bakın)" + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "%s yükleme (%s): tekrar birleştirme başarısız (daha fazla detay için log dosyasına bakınız)" + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "%s parça %s: yükleme başarısız" + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "%s hata: %s dosyası beklenmedik bir şekilde kısaltıldı" + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "%s yükleme: çok parçalı yükleme için uploadID alımı başarısız - daha fazla detay için log dosyasına bakınız" + +#: methods/email.php:69 +msgid "Note:" +msgstr "Not:" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "WordPress Yedeği" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "Konteynere giriş yaptık ama içerisinde dosya yaratamadık" + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "Bulut Dosyaları hatası: Konteynere giriş yaptık ama içerisinde dosya yaratamadık" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "Başarısız: Konteyner detayları verilmedi." + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "Kullanıcı adı" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "API anahtarı" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "Başarısız: %s verilmedi." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "UpdraftPlus %s modülü güçlü bir %s gerektirir. Lütfen bu konuyla ilgili destek talebinde bulunmayın; başka bir alternatif yok." + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "Bulut Dosyaları konteyner" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "Bulut Dosyaları API anahtarı" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "Bulut Dosyaları kullanıcı adı" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "İngiliz" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "Amerikan (varsayılan)" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "Amerikan veya İngiliz Bulutu" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "Ayrıca, bu önemli SSS'i okumalısınız." + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr " Rackspace Cloud konsolundan API anahtarınızı alın ( Buradaki talimatları okuyun), daha sonra depolama için kullanılacak konteyner adını seçin. Eğer seçtiğiniz konteyner adı yoksa oluşturulacak." + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "%s Ayarlarını Test Edin" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "Uzak dosyayı indirirken hata: İndirme başarısız (" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr " Yerel dosyayı açarken hata: İndirme başarısız" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "Bulut dosyaları hatası - dosya yükleme başarısız" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "%s Hatası: yüklenemedi" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "%s Hata: Yerel dosya açılamadı" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "Cloud Files hatası - konteyner oluşturma ve erişim başarısız" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "Bulut dosyaları yetkilendirmesi başarısız" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "Ayarlarınızı kaydettikten (aşağıdaki 'Değişiklikleri Kaydet' butonuna tıklayarak) sonra , buraya tekrar gelip Google ile yetkilendirmeyi tamamlamak için buraya linke tıklayın." + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "Google ile yetkilendir" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "Client Secret" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "Eğer Google \"invalid_client\" mesajını gösterirse, buraya doğru bir client ID girmemişsiniz demektir." + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "Client ID" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "Takip eden gri metni authorised redirect URI (\"More Options\" başlığı altında) kısmına girmelisiniz" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "Uygulama çeşidi olarak 'Web Application' seçin." + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "Ekran görüntülerini içeren, daha detaylı yardım için, bu linki takip edin. Aşağıdaki açıklama uzman kullanıcılar için yeterlidir." + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "%s çok iyi bir seçim, çünkü UpdraftPlus parçalı yüklemeyi destekliyor - siteniz ne kadar büyük olursa olsun, UpdraftPlus her seferinde azar azar yükleyebilir, zamanaşımı yüzünden yarıda kalmaz." + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "Hesap yetkilendirilmemiş." + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "%s ye yükleme başarısız" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "Hesap dolu: %s hesabınızda sadece %d byte kaldı, ancak yüklenecek dosya %d byte" + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "Google'dan henüz erişim sinyali alınmadı - Google Drive bağlantınızı yetkilendirin ve ya tekrar yenileyin." + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "%s hesabınıza giriş yaptınız." + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "Başarılı" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "%s kota kullanımınız: %s %% dolu, %s boş" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "Giriş başarısız" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "Google'dan yenileme sinyali alınamadı. Bu genellikle Client Secret bilgisini yanlış girdiğiniz anlamına gelir, veya düzelttikten sonra henüz (aşağıdan) tekrar giriş yapmadınız. Tekrar kontrol edin, sonra tekrar giriş yapmak için linki takip edin. Son olarak, eğer çalışmazsa, bütün ayarlarınızı sıfırlamak için uzman modunu kullanın,, yeni bir Google clientID/secret oluşturun, ve yeniden başlayın." + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "yüklemek için bu linki takip edin" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "%s desteği eklenti olarak uygun" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "%s UpdraftPlus eklentisi yüklü değil - %s den yükleyin" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "%s ile tekrar giriş yapmalısınız, varolan giriş bilgileriniz çalışmıyor." + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "Tamam" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "Tablo öneki değişti: %s tablo alan(lar)ı uygun şekilde değiştiriliyor:" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "Tamamlandı: işlenen satır sayısı: %d %.2f saniyede" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "çalıştırılan veri tabanı sorgusu şuydu:" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "olarak geri yükle:" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "Eski tablo öneki:" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "Yedek:" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "Veritabanı erişimi: Direkt MySQL erişimi uygun değil, wpdb ye geri dönülüyor (bu önemli bir şekilde yavaş olacaktır)" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "Veritabanı dosyası açılamadı" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "Veritabanı dosyası bulunamadı" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "Dikkat: PHP safe_mode sunucunuzda aktif. Zaman aşımı olması muhtemel. Eğer zaman aşımı olursa, dosyayı phpMyAdmin ve ya başka bir metod ile manuel olarak geri yüklemelisiniz." + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "Yedekten wp-config.php : geri yükleniyor (kullanıcı isteği üzerine)" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "Yedekten wp-config.php: wp-config-backup.php olarak geri yüklenecek" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "Çözümlenmiş veritabanını dosya sistemine yazma başarısız." + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "Geçici dizin oluşturma başarısız" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "Geri yükleme sonrasında çalışılan klasörü silme başarısız." + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "Eski dizin silinemedi." + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "Çöp kutusu boşaltılıyor..." + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "Veritabanı geri yükleniyor (büyük bir sitede bu uzun zaman alabilir - eğer zaman aşımına uğrarsa (eğer hosting şirketiniz hosting kaynaklarına limit koyduysa) phpMyAdmin gibi başka bir metod kullanın)" + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "Veritabanı başarıyla çözüldü." + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "Veritabanı çözülüyor (biraz zaman alabilir)..." + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "Yedek çıkartılıyor..." + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "Bu nesneyi kopyalama başarısız." + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "Yedek dosyası geçerli değil" + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "UpdraftPlus bu tip dosyaları direkt olarak geri yükleyemiyor. Manuel geri yükleme yapılmalı." + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "Geri yükleme için dosyalardan biri bulunamadı" + +#: admin.php:5009 +msgid "Error message" +msgstr "Hata mesajı" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "Yedek kayıtları bu dosyanın tam boyutu ile ilgili bilgi içermiyor." + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "Beklenen arşiv boyutu:" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "Eğer destek talebinde bulunacaksanız, lütfen şu bilgiyi ekleyin:" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "İPTAL: Hangi nesnelerin geri yükleneceği ile ilgili bilgi bulunamadı." + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "UpdraftPlus Geri Yükleme: İlerleme" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "Bu yedek, yedek geçmişinde bulunmuyor - geri yükleme iptal edildi. Zaman damgası:" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "Bu butona bastıktan sonra, hangi bileşenleri geri yükleyeceğinizi seçmek için seçenekler sunulacak" + +#: admin.php:4572 +msgid "Press here to download" +msgstr "İndirmek için tıkla" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "Bu yedek setini sil" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "İyi haber: Sitenizin %s ile iletişimi kriptolanabilir. Kriptolama ile ilgili hatalarla karşılaşırsanız, daha fazla yardım için 'Uzman Ayarları' bölümüne bakın." + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "Web sunucunuzun PHP/Curl yüklemesi https erişimini desteklemiyor. Bu destek olmadan %s erişimi kurulamaz. Lütfen hosting firmanızın destek talebinde bulunun. %s için Curl+https zorunludur. Lütfen başka bir yöntem denemeyin; başka bir alternatif yok." + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "Web sunucunuzun PHP/Curl yüklemesi https erişimini desteklemiyor. %s ile iletişimler kriptosuz olacak. Kriptolama (eklenti ile) için hosting firmanızdan Curl/SSL yüklemesini isteyin." + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "Web sunucunuzdaki PHP kurulumu gerekli bir modülü (%s) içermiyor. Lütfen hosting firmanıza danışın." + +#: admin.php:4062 +msgid "Save Changes" +msgstr "Değişiklikleri Kaydet" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "Bu seçeneği kullanmak UpdraftPlus'ın giriş için mümkün olan durumlarda SSL ve şifrelenmiş iletişim kullanmasını engelleyerek güvenlik seviyesini düşürecektir. Unutmayın ki bazı (Dropbox gibi) bulut depolama sağlayacıları buna izin vermez, bu nedenle bu seçenek bu sağlayıcılar için etkisizdir." + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "Mümkün olan her yerde SSL'i devre dışı bırak" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "Bütün bulut yedekleme metodlarının yetkilendirme için SSL kullandığını unutmayın." + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "Bu seçeneği seçmek UpdraftPlus'ın bağlandığınız kriptolu sitelerin (Dropbox, Google Drive gibi) kimlik doğrulamasını durdurarak güvenlik seviyenizi düşürür. UpdraftPlus'ın SSL'i sadece trafiği şifrelemek için kullanacağı anlamına gelir, yetkilendirme için kullanılmaz." + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "SSL sertifikalarını doğrulama" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "Varsayılan olarak UpdraftPlus uzak sitelerin kimliklerini doğrulamak (bir saldırganla değil, gerçek Dropbox, Amazan, S3 vb. ile iletişim kurulduğundan emin olmak için) için kendi SSL sertifikalarını kullanır. Bu bilgileri güncel tutarız. Ancak, bir SSL hatası alırsanız, bu seçeneği kapatmak (bunun yerine UpdraftPlus'ın web sunucunuzun koleksiyonunu kullanmasına sebep olur) işe yarayabilir." + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "Sunucunun SSL sertifkalarını kullan" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "Eğer başarısız olursa, sunucunuzdaki izinleri kontrol edin veya web sunucu işleminiz tarafından yazılabilir olan başka bir klasör olarak değiştirin." + +#: admin.php:3697 +msgid "click here" +msgstr "buraya tıkla" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "ya da bu seçeneği sıfırla" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "Yedekleme dizini yazılabilir olarak belirlenmiş, bu güzel :)" + +#: admin.php:4009 +msgid "Backup directory" +msgstr "Yedek dizini" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "Yerel yedeği sil" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "daha fazla seçenek görmek için buraya tıklayın; bir probleminiz yoksa veya meraklı değilseniz bununla uğraşmayın" + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "Uzman ayarkarını göster" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "Uzman ayarları" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "Hata ayıklayıcı modu" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "Gelişmiş / Hata Ayıklama Ayarları" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "Yedekleme istemi başlatılıyor..." + +#: admin.php:591 +msgid "Cancel" +msgstr "İptal" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "Hiçbiri" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "Uzak depolama birimini seç" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "Veritabanı dosyasını manuel çözümle" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "Veritabanı şifreleme anahtarı" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "E-mail" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "Yukarıdaki klasörler herşeydir, WordPress.org'dan taze olarak indirebileceğiniz WordPress çekirdeği hariç." + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "Şunları hariç tut:" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "wp-content klasörünün içinde bulunan diğer tüm klasörler" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "Dosya yedeğinde dahil et" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "örneğin gün içinde sunucunuz yoğunsa ve gece çalıştırmak isterseniz" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "Yedeklemenin ne zaman çalışacağını düzeltmek için," + +#: admin.php:3683 +msgid "Monthly" +msgstr "Aylık" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "İki haftada bir" + +#: admin.php:3681 +msgid "Weekly" +msgstr "Haftalık" + +#: admin.php:3680 +msgid "Daily" +msgstr "Günlük" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "Log kaydını indir" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "Klasör var fakat webserverınız klasörü yazmak için gerekli izne sahip değil." + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "Klasör oluşturuldu ancak yazılabilir olması için izin dosya izinlerini 777 (world-writable) olarak değiştirmeliyiz. Bir sorun oluşmaması için hosting sağlayıcınızla kontrol etmelisiniz." + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "Dosya sistemine klasör oluşturma talebi başarısız oldu." + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "Sil" + +#: admin.php:3418 +msgid "show log" +msgstr "log kaydını göster" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "UpdraftPlus ayarlarınızın tamamını sileceksiniz - bunu yapmak için emin misiniz,son kararınız mı?" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "adet" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "Not. Bu sayımda son defa seçenekleri kaydettiğinizde hariç tuttuğunuz ya da tutmadıklarınız baz alınmıştır." + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "Diskteki toplam (sıkıştırılmamış) veri:" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "Hayır" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "Evet" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "versiyon %s:" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "Güncel bellek kullanımı" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "En yüksek bellek kullanımı" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "Web server:" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "Lütfen UpdraftPlus Premium'u deneyin, veya tek başına Multisite eklentisini deneyin." + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "WordPress Multisite desteğine ihtiyacınız mı var?" + +#: admin.php:2654 +msgid "Multisite" +msgstr "Multisite" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "Tek seferlik yedeklemeyi test et" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "Geri yükleme yapmadan önce faydalı bilgiler içeren bu yardımcı makaleyi okuyun." + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "Migrator eklentisiyle veritabanızda bul ve değiştir (sitenizi yeni bir URL/lokasyona taşımak için) yapabilirsiniz - daha fazla bilgi için bu linki takip edin" + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "%s geri yükleme seçenekleri:" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "Manuel olarak geri yükleme yapmalısınız." + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "Bu nesne otomatik olarak geri yüklenemez: \"%s\"" + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "Web sunucunuzda PHP'nin sözde safe_mode (güvenli modu) aktif." + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "Geri yüklemek için bileşenleri seç" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "Geri yükleme; sitenizin temalarını,eklentileri,yüklemelerini,veritabanını ve/veya diğer içer dizinlerini değiştirecek (yedekleme dosyanızdaki içeriğine ve sizin seçiminize göre)" + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "Yedeği şuradan geri yükle" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "Yedeği geri yükle" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "Yedek setini sil" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "İndirme hatası: sunucu bize anlamadığımız bir yanıt verdi." + +#: admin.php:570 +msgid "You should:" +msgstr "Şunları yapmalısınız:" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "Hata:" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "hesaplanıyor..." + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "UpdraftPlus - Yedekleme dosyalarını yükle" + +#: admin.php:3020 +msgid "refresh" +msgstr "yenile" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "UpdraftPlus tarafından kullanılan web sunucu disk alanı" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "Google Drive" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "Eğer bunu kullanıyorsanız Turbo/Road modu kapat." + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "Opera Web tarayıcısı" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "Başka görevler:" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "En son değiştirilen günlük dosyası indir" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "(Henüz giriş yapılmadı)" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "Son log mesajı" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "Geri yükle" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "Şimdi Yedekle" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "Veritabanı" + +#: admin.php:229 +msgid "Files" +msgstr "Dosyalar" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "Bir sonraki planlanmış yedeklemeler" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "Dosyalar yedeklenirken aynı anda" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "Şu anda planlanmış bir şey yok" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "Bu yönetici arayüzü yoğun bir şekilde JavaScript kullanmaktadır. Web tarayıcınızda JavaScript'i aktif hale getirmeli, veya JavaScript destekleyen bir tarayıcı kullanmalısınız." + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "JavaScript uyarısı" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "Eski Dizinleri Sil" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "Geçerli limit:" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "Yedeğiniz geri yüklendi." + +#: admin.php:2310 +msgid "Version" +msgstr "Versiyon" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "Öncü geliştiricinin web sayfası" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "Ayarlarınız temizlendi." + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "Yedekleme dizini başarılı bir şekilde yaratıldı." + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "Yedekleme dizini yaratılamadı" + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "Eski dizinlerin kaldırılması işlemi başarısız. Bu işlemi manuel olarak yapmanız gerekebilir." + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "Eski dizinler başarılı bir şekilde kaldırıldı." + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "Eski dizinleri kaldır" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "UpdraftPlus Yapılandırmasına Geri Dön" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "Aksiyonlar" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "Geri yükleme başarılı!" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "Yanlış dosya ismi formatı - UpdraftPlus tarafından yaratılmış bir şifreli veritabanına benzemiyor" + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "Yanlış dosya ismi formatı - UpdraftPlus ile yaratılmış bir dosyaya benzemiyor" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "Lokal kopya mevcut değil." + +#: admin.php:2072 +msgid "Download in progress" +msgstr "İndirme işlemi sürüyor" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "Dosya hazır." + +#: admin.php:2043 +msgid "Download failed" +msgstr "İndirme işlemi başarısız" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "Hata" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "İş bulunamadı - belki zaten tamamlanmış olabilir mi?" + +#: admin.php:1854 +msgid "Job deleted" +msgstr "İş silindi" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "Tamam. Çok yakında aşağıdaki \"Son log mesajı\" alanında değişiklik olduğunu göreceksiniz." + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "Henüz loglanmış bir şey yok" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "Yedekleme ile ilgili sorun yaşıyorsanız lütfen bu SSS'a bir göz atın." + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "Web siteniz %s web sunucusu üzerinde barındırılıyor." + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "UpdraftPlus %s öncesi WordPress versiyonlarını resmi olarak desteklemez. Eğer sorun yaşarsanız WordPRess versiyonunuzu güncelleyene kadar destek alamayacağınızı hatırlatmak isteriz. " + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "UpdraftPlus yedeklerini oluşturmak için kullanmak üzere yapılandırılmış diskte %s az disk alanı var. UpdraftPlus iyi çalışmayabilir. Bu sorunu çözmek için sunucu yetkilisine (örn. web hosting şirketi) başvurun." + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "Uyarı" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "Eklentiler / Pro Desteği" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "Ayarlar" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "İzin verilen dosyalar" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "%s zip dosyası yaratılamadı. Daha fazla bilgi için lütfen logunuzu inceleyin." + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "Sonsuz döngü: Daha fazla bilgi için lütfen logunuzu inceleyin" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "Yardım, eklentiler ve destek için UpdraftPlus.com'a bir göz atın" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "Daha fazla özelliğe ve desteğe mi ihtiyacınız var? UpdraftPlus Premium'a bir göz atın" + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "Lütfen wordpress.org sitesinde olumlu bir yorum girerek UpdraftPlus'a yardımcı olun." + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "UpdraftPlus'ı sevdiniz mi? Bir dakikanızı ayırabilir misiniz?" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "Çeviri yapabilir misiniz? UpdraftPlus'ı dilinizi konuşanlar için geliştirmek ister misiniz? " + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "Dosya bulunamadı" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "Kod çözme anahtarı kullanıldı:" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "Kod çözme başarısız. Büyük olasılıkla hatalı anahtar kullandınız." + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "Şifre çözme başarısız. Veritabanı dosyası şifrelenmiş, fakat şifreleme anahtarını girmemişsiniz." + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "Yedekleme dosyası yazmak için açılamadı." + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "Yedekleme tarihçesi kaydedilemedi çünkü yedekleme dizisi mevcut değil. Yedekleme büyük ihtimalle başarısız oldu." + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "Dizin okunamadı" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "Yedekleme dizini (%s) yazılabilir değil, veya mevcut değil." + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "WordPress yedeklemesi tamamlandı." + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "Yedekleme girişimi başarısız oldu." + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "Yedekleme başarılı bir şekilde tamamlandı." + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "Veritabanını şifrelerken hata oluştu. Şifreleme işlemi iptal edildi. " + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "Yedekleme dizininde dosyalar yaratılamadı. Yedekleme işlemi iptal edildi - UpdraftPlus ayarlarınızı kontrol edin." + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "Diğer" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "Upload'lar" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "Temalar" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "Eklentiler" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "Log dosyası bulunamadı." + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "Log dosyası okunamadı." + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "UpdraftPlus bildirisi:" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "UpdraftPlus Yedekleri" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-uk.mo b/plugins/updraftplus/languages/updraftplus-uk.mo new file mode 100644 index 0000000..141c0d6 Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-uk.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-uk.po b/plugins/updraftplus/languages/updraftplus-uk.po new file mode 100644 index 0000000..fcc214c --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-uk.po @@ -0,0 +1,6109 @@ +# Translation of UpdraftPlus in Ukrainian +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2015-05-21 12:38:34+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: uk_UA\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "" + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "" + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "" + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "" + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "" + +#: addons/webdav.php:91 +msgid "Path" +msgstr "" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "" + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "" + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "" + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "" + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "" + +#: admin.php:2310 +msgid "FAQs" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "" + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "" + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "" + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "" + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "" + +#: methods/ftp.php:355 +msgid "login" +msgstr "" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "" + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "" + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "" + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "" + +#: admin.php:2604 +msgid "Now" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "" + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "" + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "" + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "" + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "" + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "" + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "" + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "" + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "" + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "" + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "" + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "" + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "" + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "" + +#: admin.php:3420 +msgid "stop" +msgstr "" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "" + +#: admin.php:3092 +msgid "this backup set" +msgstr "" + +#: admin.php:3020 +msgid "calculate" +msgstr "" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "" + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "" + +#: admin.php:601 +msgid "Saving..." +msgstr "" + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:557 +msgid "Fetching..." +msgstr "" + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "" + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "" + +#: admin.php:2884 +msgid "Dismiss" +msgstr "" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "" + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "" + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "" + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "" + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "" + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "" + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "" + +#: admin.php:3860 +msgid "File Options" +msgstr "" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "" + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "" + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "" + +#: admin.php:5157 +msgid "settings" +msgstr "" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "" + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "" + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "" + +#: admin.php:442 +msgid "Extensions" +msgstr "" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "" + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "" + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "" + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "" + +#: addons/azure.php:524 +msgid "container" +msgstr "" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "" + +#: addons/azure.php:523 +msgid "optional" +msgstr "" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "" + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "" + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "" + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "" + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "" + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "" + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "" + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "" + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "" + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "" + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "" + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "" + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "" + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "" + +#: restorer.php:767 +msgid "Deferring..." +msgstr "" + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "" + +#: admin.php:3081 +msgid "Deselect" +msgstr "" + +#: admin.php:3080 +msgid "Select all" +msgstr "" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "" + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "" + +#: admin.php:634 +msgid "For backups older than" +msgstr "" + +#: admin.php:633 +msgid "week(s)" +msgstr "" + +#: admin.php:632 +msgid "hour(s)" +msgstr "" + +#: admin.php:631 +msgid "day(s)" +msgstr "" + +#: admin.php:630 +msgid "in the month" +msgstr "" + +#: admin.php:629 +msgid "day" +msgstr "" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "" + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "" + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "" + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "" + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "" + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "" + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "" + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "" + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "" + +#: admin.php:607 +msgid "Update quota count" +msgstr "" + +#: admin.php:606 +msgid "Counting..." +msgstr "" + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "" + +#: admin.php:603 +msgid "Connecting..." +msgstr "" + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "" + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "" + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "" + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "" + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "" + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "" + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "" + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "" + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "" + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "" + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "" + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "" + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "" + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "" + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "" + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "" + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "" + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "" + +#: admin.php:4423 +msgid "Site" +msgstr "" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "" + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "" + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "" + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "" + +#: admin.php:617 +msgid "Deleting..." +msgstr "" + +#: admin.php:616 +msgid "key name" +msgstr "" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "" + +#: admin.php:611 +msgid "Creating..." +msgstr "" + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "" + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "" + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "" + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "" + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "" + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "" + +#: addons/migrator.php:1861 +msgid "key" +msgstr "" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "" + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "" + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "" + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "" + +#: admin.php:608 +msgid "Adding..." +msgstr "" + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "Змінити пароль на updraftplus.com." + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "Якщо Ви забули пароль" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "Натисніть тут, щоб повторно ввести пароль" + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "" + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "" + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "" + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "" + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "" + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "" + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "%s авторизація невдала :" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "" + +#: methods/email.php:73 +msgid "configure it here" +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "" + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "" + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "" + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "" + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "" + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "" + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "" + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "" + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "" + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "" + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "" + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "" + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "" + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "" + +#: admin.php:2831 +msgid "Personal support" +msgstr "" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "" + +#: admin.php:2718 +msgid "Get it from" +msgstr "" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "" + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "" + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "" + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "" + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "" + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "" + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "" + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "" + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "" + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "" + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "" + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "" + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "" + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "" + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "" + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "" + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "" + +#: admin.php:4368 +msgid "Backup date" +msgstr "" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "" + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "" + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "" + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "" + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "%s не дозволяє авторизувати сайти, котрі мають лише IP адресу (без доменного імені) . Треба призначити домен для (%s) перед тим як зберігати дані в %s." + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "" + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "" + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "" + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "" + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "" + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "" + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "" + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "" + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "" + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "" + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "" + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "" + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "" + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "" + +#: backup.php:829 +msgid "Incremental" +msgstr "" + +#: backup.php:829 +msgid "Full backup" +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "" + +#: backup.php:895 +msgid "read more at %s" +msgstr "" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "" + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "" + +#: admin.php:3872 +msgid "Database Options" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "%s (%s використано)" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "" + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "" + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "" + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "" + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "" + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "" + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "" + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "" + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "" + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "" + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "" + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "" + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "" + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "" + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "" + +#: admin.php:4499 +msgid "External database" +msgstr "" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "" + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "" + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "" + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "" + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "" + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "" + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "" + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "" + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "" + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "" + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "" + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "" + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "" + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "" + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "%s помилка - доступ до архіву отримано, але створити в ньому файли не вдалося" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "%s помилка - невдале з`єднання з архівом" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "" + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "" + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "" + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "%s завантаження: збій: файл не знайдено" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "" + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "" + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "" + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "" + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "" + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "" + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "" + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "" + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "" + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "" + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "" + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "" + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "" + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "" + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "" + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "" + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "" + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "" + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "" + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "" + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "" + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "" + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "" + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "" + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "" + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "" + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "" + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "" + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "" + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "" + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "" + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "" + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "" + +#: admin.php:1528 +msgid "Constants" +msgstr "" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "" + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "" + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "" + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "" + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "" + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "" + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "" + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "" + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "" + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "" + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "" + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "" + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "" + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "" + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "" + +#: admin.php:556 +msgid "Trying..." +msgstr "" + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "" + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "" + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "" + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "" + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "" + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "" + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "" + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "" + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "" + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "%s чек-сума: %s" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "" + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr " (з попередженнями (%s))" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr " (з помилками (%s))" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "%d годин, %d хвилин, %d секунд" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "%d помилок, %d попереджень" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "%s автентифікація" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "%s помилка: %s" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "%s не отримано необхідної відповіді - відкрийте log-файл для перегляду більш детальної інформації." + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "" + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "" + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "" + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "" + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "" + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "" + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "" + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "" + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "" + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "" + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "" + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "" + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "" + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "" + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "" + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "" + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "" + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "" + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "" + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "" + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "" + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "" + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "" + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "" + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "" + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "" + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "" + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "" + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "" + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "" + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "" + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "" + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "" + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "" + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "" + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "" + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "" + +#: admin.php:3359 +msgid "table: %s" +msgstr "" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "" + +#: restorer.php:646 +msgid "file" +msgstr "" + +#: restorer.php:639 +msgid "folder" +msgstr "" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "" + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "" + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "" + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "" + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "" + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "" + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "" + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "" + +#: admin.php:2310 +msgid "More plugins" +msgstr "" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "" + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "" + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "" + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "" + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "" + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "" + +#: admin.php:584 +msgid "Upload error" +msgstr "" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "" + +#: admin.php:582 +msgid "Upload error:" +msgstr "" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "" + +#: admin.php:572 +msgid "Download to your computer" +msgstr "" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "" + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "" + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "" + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "" + +#: admin.php:563 +msgid "Warnings:" +msgstr "" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "" + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "" + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "" + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "" + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "" + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "" + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "" + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "" + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "" + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "%s кінцева точка (end-point)" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "" + +#: admin.php:4836 +msgid "Final checks" +msgstr "" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "" + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "" + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "" + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "" + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "" + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "" + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "" + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "" + +#: restorer.php:939 +msgid "Files found:" +msgstr "" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "" + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "" + +#: admin.php:4908 +msgid "file is size:" +msgstr "" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "" + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "" + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "" + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "" + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "" + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "%s Помилка" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "%s помилка - збій вивантаження" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "%s помилка - не вдалося перезібрати елементи" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "%s збій автентифікації" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "" + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "" + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "" + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "" + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "" + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "" + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "" + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "" + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "" + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "" + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "" + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "" + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "" + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "" + +#: admin.php:596 +msgid "Close" +msgstr "" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "" + +#: admin.php:576 +msgid "PHP information" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "" + +#: admin.php:2627 +msgid "Get it here." +msgstr "" + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "" + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "" + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "" + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "" + +#: admin.php:2304 +msgid "Premium" +msgstr "" + +#: admin.php:2305 +msgid "News" +msgstr "" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "%s - бекап неможливий; такої директорії не існує (%s)" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "" + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "" + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "" + +#: admin.php:880 +msgid "Notice" +msgstr "" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "" + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "\"%s\" немає початкового ключа, заміну потрібно зробити вручну, див. рядок %s." + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "" + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "" + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "" + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "" + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "" + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "" + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "" + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "" + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "" + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "" + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "" + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "" + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "" + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "" + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "" + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "" + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "" + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "" + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "" + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "" + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "" + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "" + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "" + +#: methods/s3.php:961 +msgid "API secret" +msgstr "" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "%s ключ доступу" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "" + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "" + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "" + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "" + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "%s елемент %s: збій вивантаження" + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "" + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "" + +#: methods/email.php:69 +msgid "Note:" +msgstr "" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "" + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "" + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "" + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "" + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "" + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "" + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "" + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "" + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "" + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "" + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "" + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "" + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "" + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "" + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "" + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "" + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "" + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "" + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "" + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "" + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "" + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "" + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "" + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "" + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "" + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "" + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "" + +#: admin.php:5009 +msgid "Error message" +msgstr "" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "" + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "" + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "" + +#: admin.php:4572 +msgid "Press here to download" +msgstr "" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "" + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "" + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "" + +#: admin.php:4062 +msgid "Save Changes" +msgstr "" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "" + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "" + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "" + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "" + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "" + +#: admin.php:3697 +msgid "click here" +msgstr "" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "" + +#: admin.php:4009 +msgid "Backup directory" +msgstr "" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "" + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "" + +#: admin.php:591 +msgid "Cancel" +msgstr "" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "" + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "" + +#: admin.php:3683 +msgid "Monthly" +msgstr "" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "" + +#: admin.php:3681 +msgid "Weekly" +msgstr "" + +#: admin.php:3680 +msgid "Daily" +msgstr "" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "" + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "" + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "" + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "" + +#: admin.php:3418 +msgid "show log" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "" + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "" + +#: admin.php:2654 +msgid "Multisite" +msgstr "" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "" + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "" + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "" + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "" + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "" + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "" + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:570 +msgid "You should:" +msgstr "" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "" + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "" + +#: admin.php:3020 +msgid "refresh" +msgstr "" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "" + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "" + +#: admin.php:229 +msgid "Files" +msgstr "" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "" + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "" + +#: admin.php:2310 +msgid "Version" +msgstr "" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "" + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "" + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "" + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "" + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "" + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "" + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "" + +#: admin.php:2072 +msgid "Download in progress" +msgstr "" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "" + +#: admin.php:2043 +msgid "Download failed" +msgstr "" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "" + +#: admin.php:1854 +msgid "Job deleted" +msgstr "" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "" + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "" + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "" + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "" + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "" + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "" + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "" + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "" + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "" + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "" + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "" + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "" + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "" + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "" + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "" + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "" + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "" + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "" + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "" + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-vi.mo b/plugins/updraftplus/languages/updraftplus-vi.mo new file mode 100644 index 0000000..de7e5cd Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-vi.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-vi.po b/plugins/updraftplus/languages/updraftplus-vi.po new file mode 100644 index 0000000..2d60808 --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-vi.po @@ -0,0 +1,6109 @@ +# Translation of UpdraftPlus in Vietnamese +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2014-10-25 14:58:38+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: vi_VN\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "" + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "" + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "" + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "" + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "" + +#: addons/webdav.php:91 +msgid "Path" +msgstr "" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "" + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "" + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "" + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "" + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "" + +#: admin.php:2310 +msgid "FAQs" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "" + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "" + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "" + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "" + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "" + +#: methods/ftp.php:355 +msgid "login" +msgstr "" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "" + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "" + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "" + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "" + +#: admin.php:2604 +msgid "Now" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "" + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "" + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "" + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "" + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "" + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "" + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "" + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "" + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "" + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "" + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "" + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "" + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "" + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "" + +#: admin.php:3420 +msgid "stop" +msgstr "" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "" + +#: admin.php:3092 +msgid "this backup set" +msgstr "" + +#: admin.php:3020 +msgid "calculate" +msgstr "" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "" + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "" + +#: admin.php:601 +msgid "Saving..." +msgstr "" + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:557 +msgid "Fetching..." +msgstr "" + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "" + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "" + +#: admin.php:2884 +msgid "Dismiss" +msgstr "" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "" + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "" + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "" + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "" + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "" + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "" + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "" + +#: admin.php:3860 +msgid "File Options" +msgstr "" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "" + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "" + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "" + +#: admin.php:5157 +msgid "settings" +msgstr "" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "" + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "" + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "" + +#: admin.php:442 +msgid "Extensions" +msgstr "" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "" + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "" + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "" + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "" + +#: addons/azure.php:524 +msgid "container" +msgstr "" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "" + +#: addons/azure.php:523 +msgid "optional" +msgstr "" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "" + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "" + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "" + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "" + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "" + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "" + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "" + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "" + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "" + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "" + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "" + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "" + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "" + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "" + +#: restorer.php:767 +msgid "Deferring..." +msgstr "" + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "" + +#: admin.php:3081 +msgid "Deselect" +msgstr "" + +#: admin.php:3080 +msgid "Select all" +msgstr "" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "" + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "" + +#: admin.php:634 +msgid "For backups older than" +msgstr "" + +#: admin.php:633 +msgid "week(s)" +msgstr "" + +#: admin.php:632 +msgid "hour(s)" +msgstr "" + +#: admin.php:631 +msgid "day(s)" +msgstr "" + +#: admin.php:630 +msgid "in the month" +msgstr "" + +#: admin.php:629 +msgid "day" +msgstr "" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "" + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "" + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "" + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "" + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "" + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "" + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "" + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "" + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "" + +#: admin.php:607 +msgid "Update quota count" +msgstr "" + +#: admin.php:606 +msgid "Counting..." +msgstr "" + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "" + +#: admin.php:603 +msgid "Connecting..." +msgstr "" + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "" + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "" + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "" + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "" + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "" + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "" + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "" + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "" + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "" + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "" + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "" + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "" + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "" + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "" + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "" + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "" + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "" + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "" + +#: admin.php:4423 +msgid "Site" +msgstr "" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "" + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "" + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "" + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "" + +#: admin.php:617 +msgid "Deleting..." +msgstr "" + +#: admin.php:616 +msgid "key name" +msgstr "" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "" + +#: admin.php:611 +msgid "Creating..." +msgstr "" + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "" + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "" + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "" + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "" + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "" + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "" + +#: addons/migrator.php:1861 +msgid "key" +msgstr "" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "" + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "" + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "" + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "" + +#: admin.php:608 +msgid "Adding..." +msgstr "" + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "" + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "" + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "" + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "" + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "" + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "" + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "" + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "" + +#: methods/email.php:73 +msgid "configure it here" +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "" + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "" + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "" + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "" + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "" + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "" + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "" + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "" + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "" + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "" + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "" + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "" + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "" + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "" + +#: admin.php:2831 +msgid "Personal support" +msgstr "" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "" + +#: admin.php:2718 +msgid "Get it from" +msgstr "" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "" + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "" + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "" + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "" + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "" + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "" + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "" + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "" + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "" + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "" + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "" + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "" + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "" + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "" + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "" + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "" + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "" + +#: admin.php:4368 +msgid "Backup date" +msgstr "" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "" + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "" + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "" + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "" + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "tên bản sao lưu (tùy chọn)" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "%s không được sự cho phép của máy chủ trên địa chỉ IP trực tiếp. Bạn sẽ cần phải thay đổi địa chị trang của bạn (%s) trước khi bạn có thể sử dụng %s để lưu trữ" + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "Địa chỉ email của bạn đã nhập không thể tìm thấy trên UpdfraftPlus.Com" + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "địa chỉ email hợp lệ, nhưng mật khẩu không thể tìm thấy trên UpdraftPlus.Com" + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "Bạn sẽ cần cả địa chỉ email và mật khẩu" + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "để tiến hành,nhấn nút \" Sao Lưu Ngay\". Sau đó xem phần \" báo cáo thay đổi mới nhất\" để biết những hoạt động diễn ra." + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "Nếu bạn muốn sao lưu nhiều trang, bạn nên cài đặt bộ cài WordPess như là một dạng nhiều trang." + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "Bản sao lưu của bạn là của một hệ thống cài đặt nhiều trang của WordPress; nhưng trang này thì không phải. Chỉ trang đầu tiên của hệ thống mới có thể truy cập" + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "đã xong." + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "bỏ qua (không có trong danh sách)" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "Ô tìm kiếm và thay thế " + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "nhập một danh sách ngăn cách bởi dấu phẩy, nếu không để trống các ô khác." + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "chỉ những ô" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "hàng mỗi một lượt" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "bạn chưa kết nối với tài khoản UpdraftPlus.Com" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "bạn cần kết nối để nhận những bản cập nhật trong tương lai từ UpdraftPlus" + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "bất kì yêu cầu hỗ trợ nào để làm với %s cần được đưa lên với công ty lưu trữ web (web hosting )" + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "bạn chỉ nên thực hiện nếu bạn không thể cập nhật lên nhà cung cấp hiện tại và bạn tự tin (sẵn sàng chấp nhận rủi ro) rằng giao diện/ tiện ích/ v.v.. thích hợp với phiên bản %s trước đó" + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "đây là một bản mới hơn hẳn so với trên nhà cung cấp, cái mà bạn đang phục hồi đến (phiên bản %s)." + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "Trang trong bản sao lưu này đang chạy trên một máy chủ web với phiên bản %s của %s" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "Linkedln" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "Google+" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "facebook" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "UpdraftPlus trên mạng xã hội - hãy xem thử chúng tôi ở đây:" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "" + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "" + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "" + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "" + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "" + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "" + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "" + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "" + +#: backup.php:829 +msgid "Incremental" +msgstr "" + +#: backup.php:829 +msgid "Full backup" +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "" + +#: backup.php:895 +msgid "read more at %s" +msgstr "" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "" + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "" + +#: admin.php:3872 +msgid "Database Options" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "" + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "" + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "" + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "" + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "" + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "" + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "" + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "" + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "" + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "" + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "" + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "" + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "" + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "" + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "" + +#: admin.php:4499 +msgid "External database" +msgstr "" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "" + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "" + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "" + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "" + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "" + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "" + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "" + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "" + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "" + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "" + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "" + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "" + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "" + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "" + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "" + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "" + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "" + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "" + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "" + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "" + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "" + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "" + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "" + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "" + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "" + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "" + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "" + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "" + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "" + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "" + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "" + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "" + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "" + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "" + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "" + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "" + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "" + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "" + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "" + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "" + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "" + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "" + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "" + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "" + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "" + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "" + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "" + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "" + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "" + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "" + +#: admin.php:1528 +msgid "Constants" +msgstr "" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "" + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "" + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "" + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "" + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "" + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "" + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "" + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "" + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "" + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "" + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "" + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "" + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "" + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "" + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "" + +#: admin.php:556 +msgid "Trying..." +msgstr "" + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "" + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "" + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "" + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "" + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "" + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "" + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "" + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "" + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "" + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "" + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr "" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr "" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "" + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "" + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "" + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "" + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "" + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "" + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "" + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "" + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "" + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "" + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "" + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "" + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "" + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "" + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "" + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "" + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "" + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "" + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "" + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "" + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "" + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "" + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "" + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "" + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "" + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "" + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "" + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "" + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "" + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "" + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "" + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "" + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "" + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "" + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "" + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "" + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "" + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "" + +#: admin.php:3359 +msgid "table: %s" +msgstr "" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "" + +#: restorer.php:646 +msgid "file" +msgstr "" + +#: restorer.php:639 +msgid "folder" +msgstr "" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "" + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "" + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "" + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "" + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "" + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "" + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "" + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "" + +#: admin.php:2310 +msgid "More plugins" +msgstr "" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "" + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "" + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "" + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "" + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "" + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "" + +#: admin.php:584 +msgid "Upload error" +msgstr "" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "" + +#: admin.php:582 +msgid "Upload error:" +msgstr "" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "" + +#: admin.php:572 +msgid "Download to your computer" +msgstr "" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "" + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "" + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "" + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "" + +#: admin.php:563 +msgid "Warnings:" +msgstr "" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "" + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "" + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "" + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "" + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "" + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "" + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "" + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "" + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "" + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "" + +#: admin.php:4836 +msgid "Final checks" +msgstr "" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "" + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "" + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "" + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "" + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "" + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "" + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "" + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "" + +#: restorer.php:939 +msgid "Files found:" +msgstr "" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "" + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "" + +#: admin.php:4908 +msgid "file is size:" +msgstr "" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "" + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "" + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "" + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "" + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "" + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "" + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "" + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "" + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "" + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "" + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "" + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "" + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "" + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "" + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "" + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "" + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "" + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "" + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "" + +#: admin.php:596 +msgid "Close" +msgstr "" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "" + +#: admin.php:576 +msgid "PHP information" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "" + +#: admin.php:2627 +msgid "Get it here." +msgstr "" + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "" + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "" + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "" + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "" + +#: admin.php:2304 +msgid "Premium" +msgstr "" + +#: admin.php:2305 +msgid "News" +msgstr "" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "" + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "" + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "" + +#: admin.php:880 +msgid "Notice" +msgstr "" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "" + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "" + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "" + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "" + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "" + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "" + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "" + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "" + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "" + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "" + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "" + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "" + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "" + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "" + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "" + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "" + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "" + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "" + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "" + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "" + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "" + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "" + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "" + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "" + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "" + +#: methods/s3.php:961 +msgid "API secret" +msgstr "" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "" + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "" + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "" + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "" + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "" + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "" + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "" + +#: methods/email.php:69 +msgid "Note:" +msgstr "" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "" + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "" + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "" + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "" + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "" + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "" + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "" + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "" + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "" + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "" + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "" + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "" + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "" + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "" + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "" + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "" + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "" + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "" + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "" + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "" + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "" + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "" + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "" + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "" + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "" + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "" + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "" + +#: admin.php:5009 +msgid "Error message" +msgstr "" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "" + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "" + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "" + +#: admin.php:4572 +msgid "Press here to download" +msgstr "" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "" + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "" + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "" + +#: admin.php:4062 +msgid "Save Changes" +msgstr "" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "" + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "" + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "" + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "" + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "" + +#: admin.php:3697 +msgid "click here" +msgstr "" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "" + +#: admin.php:4009 +msgid "Backup directory" +msgstr "" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "" + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "" + +#: admin.php:591 +msgid "Cancel" +msgstr "" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "" + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "" + +#: admin.php:3683 +msgid "Monthly" +msgstr "" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "" + +#: admin.php:3681 +msgid "Weekly" +msgstr "" + +#: admin.php:3680 +msgid "Daily" +msgstr "" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "" + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "" + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "" + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "" + +#: admin.php:3418 +msgid "show log" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "" + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "" + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "" + +#: admin.php:2654 +msgid "Multisite" +msgstr "" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "" + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "" + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "" + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "" + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "" + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "" + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:570 +msgid "You should:" +msgstr "" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "" + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "" + +#: admin.php:3020 +msgid "refresh" +msgstr "" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "" + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "" + +#: admin.php:229 +msgid "Files" +msgstr "" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "" + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "" + +#: admin.php:2310 +msgid "Version" +msgstr "" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "" + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "" + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "" + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "" + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "" + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "" + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "" + +#: admin.php:2072 +msgid "Download in progress" +msgstr "" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "" + +#: admin.php:2043 +msgid "Download failed" +msgstr "" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "" + +#: admin.php:1854 +msgid "Job deleted" +msgstr "" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "" + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "" + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "" + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "" + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "" + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "" + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "" + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "" + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "" + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "" + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "" + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "" + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "" + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "" + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "" + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "" + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "" + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "" + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "" + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-zh_CN.mo b/plugins/updraftplus/languages/updraftplus-zh_CN.mo new file mode 100644 index 0000000..f92ed90 Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-zh_CN.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-zh_CN.po b/plugins/updraftplus/languages/updraftplus-zh_CN.po new file mode 100644 index 0000000..e3236a5 --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-zh_CN.po @@ -0,0 +1,6109 @@ +# Translation of UpdraftPlus in Chinese (China) +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-07-15 08:53:03+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: zh_CN\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "" + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "" + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "" + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "" + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "" + +#: addons/webdav.php:91 +msgid "Path" +msgstr "" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "" + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "" + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "" + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "没有收到数据。一般来说这是因为网络连接原因,比如防火墙或者说网络负荷过重。" + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "未找到设置,请到设置选项检查设置。" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "占用%s备份空间 " + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "全功能高级插件" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "该插件" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "减少冗余" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "正常模式(低频率进入)" + +#: admin.php:2310 +msgid "FAQs" +msgstr "FAQs" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "该插件是最新版本" + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "检查更新" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "没有更新日志可用。" + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "" + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "详情......" + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "" + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "控制板在" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "公开密钥已发至:" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "不能打开目录(检查文件夹写入权限):%s" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "创建密钥" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "慢,最稳定" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "推荐" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "%s 字节" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "较易崩溃,速度快" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "加密字段大小" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "输入你选择的名字" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "创建密钥:新建密钥名字(比如描述这个站点),然后按创建密钥。" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "这是由于防火墙阻挡——请在专家模式中关闭SSL后再尝试" + +#: methods/ftp.php:355 +msgid "login" +msgstr "登录" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "" + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "" + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "" + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "" + +#: admin.php:2604 +msgid "Now" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "" + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "" + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "" + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "" + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "" + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "" + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "" + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "" + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "" + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "" + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "" + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "" + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "" + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "" + +#: admin.php:3420 +msgid "stop" +msgstr "" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "" + +#: admin.php:3092 +msgid "this backup set" +msgstr "" + +#: admin.php:3020 +msgid "calculate" +msgstr "" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "" + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "" + +#: admin.php:601 +msgid "Saving..." +msgstr "" + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:557 +msgid "Fetching..." +msgstr "" + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "" + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "" + +#: admin.php:2884 +msgid "Dismiss" +msgstr "" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "" + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "" + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "" + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "" + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "" + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "" + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "" + +#: admin.php:3860 +msgid "File Options" +msgstr "" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "" + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "" + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "" + +#: admin.php:5157 +msgid "settings" +msgstr "" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "" + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "" + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "" + +#: admin.php:442 +msgid "Extensions" +msgstr "" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "" + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "" + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "" + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "" + +#: addons/azure.php:524 +msgid "container" +msgstr "" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "" + +#: addons/azure.php:523 +msgid "optional" +msgstr "" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "" + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "" + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "" + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "" + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "" + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "" + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "" + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "" + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "" + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "" + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "" + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "" + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "" + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "" + +#: restorer.php:767 +msgid "Deferring..." +msgstr "" + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "" + +#: admin.php:3081 +msgid "Deselect" +msgstr "" + +#: admin.php:3080 +msgid "Select all" +msgstr "" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "" + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "" + +#: admin.php:634 +msgid "For backups older than" +msgstr "" + +#: admin.php:633 +msgid "week(s)" +msgstr "" + +#: admin.php:632 +msgid "hour(s)" +msgstr "" + +#: admin.php:631 +msgid "day(s)" +msgstr "" + +#: admin.php:630 +msgid "in the month" +msgstr "" + +#: admin.php:629 +msgid "day" +msgstr "" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "" + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "" + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "" + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "" + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "" + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "" + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "" + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "" + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "" + +#: admin.php:607 +msgid "Update quota count" +msgstr "" + +#: admin.php:606 +msgid "Counting..." +msgstr "" + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "" + +#: admin.php:603 +msgid "Connecting..." +msgstr "" + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "" + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "" + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "" + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "" + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "" + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "" + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "" + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "" + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "" + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "" + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "" + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "" + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "" + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "" + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "" + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "" + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "" + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "" + +#: admin.php:4423 +msgid "Site" +msgstr "" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "" + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "" + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "" + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "" + +#: admin.php:617 +msgid "Deleting..." +msgstr "" + +#: admin.php:616 +msgid "key name" +msgstr "" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "" + +#: admin.php:611 +msgid "Creating..." +msgstr "" + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "" + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "" + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "" + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "" + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "" + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "" + +#: addons/migrator.php:1861 +msgid "key" +msgstr "" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "" + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "" + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "" + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "" + +#: admin.php:608 +msgid "Adding..." +msgstr "" + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "" + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "" + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "" + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "" + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "" + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "" + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "" + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "" + +#: methods/email.php:73 +msgid "configure it here" +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "" + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "" + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "" + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "" + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "" + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "" + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "" + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "" + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "" + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "" + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "" + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "" + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "" + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "" + +#: admin.php:2831 +msgid "Personal support" +msgstr "" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "" + +#: admin.php:2718 +msgid "Get it from" +msgstr "" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "" + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "" + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "" + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "" + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "" + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "" + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "" + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "" + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "" + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "" + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "" + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "" + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "" + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "" + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "" + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "" + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "" + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "" + +#: admin.php:4368 +msgid "Backup date" +msgstr "" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "" + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "" + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "" + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "" + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "" + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "" + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "" + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "" + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "" + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "" + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "" + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "" + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "" + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "" + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "" + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "" + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "" + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "" + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "" + +#: backup.php:829 +msgid "Incremental" +msgstr "" + +#: backup.php:829 +msgid "Full backup" +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "" + +#: backup.php:895 +msgid "read more at %s" +msgstr "" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "" + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "" + +#: admin.php:3872 +msgid "Database Options" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "" + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "" + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "" + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "" + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "" + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "" + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "" + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "" + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "" + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "" + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "" + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "" + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "" + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "" + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "" + +#: admin.php:4499 +msgid "External database" +msgstr "" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "" + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "" + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "" + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "" + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "" + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "" + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "" + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "" + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "" + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "" + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "" + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "" + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "" + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "" + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "" + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "" + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "" + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "" + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "" + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "" + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "" + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "" + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "" + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "" + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "" + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "" + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "" + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "" + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "" + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "" + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "" + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "" + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "" + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "" + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "" + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "" + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "" + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "" + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "" + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "" + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "" + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "" + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "" + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "" + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "" + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "" + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "" + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "" + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "" + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "" + +#: admin.php:1528 +msgid "Constants" +msgstr "" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "" + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "" + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "" + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "" + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "" + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "" + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "" + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "" + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "" + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "" + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "" + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "" + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "" + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "" + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "" + +#: admin.php:556 +msgid "Trying..." +msgstr "" + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "" + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "" + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "" + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "" + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "" + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "" + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "" + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "" + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "" + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "" + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr "" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr "" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "" + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "" + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "" + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "" + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "" + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "" + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "" + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "" + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "" + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "" + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "" + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "" + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "" + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "" + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "" + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "" + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "" + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "" + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "" + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "" + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "" + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "" + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "" + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "" + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "" + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "" + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "" + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "" + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "" + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "" + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "" + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "" + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "" + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "" + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "" + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "" + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "" + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "" + +#: admin.php:3359 +msgid "table: %s" +msgstr "" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "" + +#: restorer.php:646 +msgid "file" +msgstr "" + +#: restorer.php:639 +msgid "folder" +msgstr "" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "" + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "" + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "" + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "" + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "" + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "" + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "" + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "" + +#: admin.php:2310 +msgid "More plugins" +msgstr "" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "" + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "" + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "" + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "如果页面完成加载后您仍然可以看到这些文字,说明存在JavaScript 或者 jQuery 问题。" + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "文件上传成功" + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "未知的服务器状态值:" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "未知的服务器返回值:" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "即将尝试的密钥:" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "点击此链接尝试加密并且下载数据库文件到您的电脑。" + +#: admin.php:584 +msgid "Upload error" +msgstr "上传错误: " + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "此文件貌似不是一个UpdraftPlus的加密备份归档(后缀为:.gz.crypt,文件名格式为:backup_(备份时间)_(站点名)_(验证码)_(类型)_db.crypt.gz)。 " + +#: admin.php:582 +msgid "Upload error:" +msgstr "上传错误:" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "(请确认您上传了由UpdraftPlus备份出的zip文件)" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "然后,如果你想," + +#: admin.php:572 +msgid "Download to your computer" +msgstr "下载到您的计算机" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "从您的web服务器删除" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "S3-兼容模式的存储提供者示例:" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "解压后将不会删除任何归档,因为此归档没有任何云存储" + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "您貌似丢失了该多备份集中的一个或多个归档" + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "(设置中有 %d 的归档)" + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "归档切割,每:" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "错误:服务器发送了一个俺们不认识的返回信息(JSON)" + +#: admin.php:563 +msgid "Warnings:" +msgstr "警告:" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "错误:服务器发送了一个空回应。" + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "此文件貌似是UpdraftPlus创建的,但是目前的版本不能理解这个对象的类型:%s,或许您需要安装一个扩展。" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "备份的归档已经处理,但是存在一些错误。您需要退出并且修复问题,然后重新尝试。" + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "备份的归档已经成功处理,但是存在一些警告。如果一切正常,再次点击Restore继续,或者,点击cancel并且修复问题。" + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "备份的归档已经成功处理,现在,再次点击Restore继续。" + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "多归档的备份机貌似有下列的归档丢失:%s" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "文件(%s)已找到,但是大小(%s)和我们的预期有差别(%s) - 它可能已经损坏。" + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "文件已找到,但是为空(您需要重新上传):%s" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "文件未找到(您需要进行上传):%s" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "不存在那样的备份集" + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "无法找到此文件的备份归档。正在使用的远程云存储(%s)不允许我们获取文件。想使用UpdraftPlus进行还原,您需要首先获得此文件拷贝,放置到UpdraftPlus的工作目录" + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "移动目录失败(请检查您的权限和磁盘配额):%s" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "移动文件失败(请检查您的权限和磁盘配额):%s" + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "将解压的文件移动到相应位置。。。" + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "打开zip文件失败(%s)- %s" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "WordPress跟目录的服务器路径:%s" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "%s end-point" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "。。。更多" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "S3 (兼容模式)" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "文件在本地不存在 - 需要从远程存储获取" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "查找归档 %s:文件名:%s" + +#: admin.php:4836 +msgid "Final checks" +msgstr "最后检测" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "在完成前点击此按钮来删除服务器上存在的多余备份(如果不处理,您发送到远程的文件将依然在本地存在,本地文件将会无限的保留)" + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "删除加密的数据库文件(db.gz.crypt 文件)前上传并解密他们" + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "您的wp-content目录在服务器上的路径:%s" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "原始备份信息" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "察看原始备份和文件列表" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "处理文件中 - 请等等" + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "请察看此FAQ获取帮助" + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "您安装的WordPress版本输出额外的空格存在问题。将会导致下载备份错误" + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "无法打开数据库文件" + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "无法将加密后的数据库保存到文件系统" + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "已知备份(原始文件)" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "无法列举目录中的文件" + +#: restorer.php:939 +msgid "Files found:" +msgstr "找到文件:" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "使用备份的目录:%s" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "需要的存储引擎(%s)不存在 - 使用MyISAM。" + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "现在貌似是在迁移(备份文件中的URL地址来自不同的站点),但是您没有选中“查找/替换数据库”选项,这将会是一个错误。" + +#: admin.php:4908 +msgid "file is size:" +msgstr "文件尺寸:" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "去帮助里获取更多信息" + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "还有文件正在下载或者处理 - 稍微再等等。" + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "备份来自其他站点 - 这不是还原,而是一此迁移。您需要迁移插件来完成此次任务" + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "使用的时区信息来自WordPress设置,在 Settings -> General 中" + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "输入格式 HH:MM (如:14:22)" + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "%s 上传失败" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "%s 登陆失败" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "您似乎没有验证%s" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "删除时接触%s失败(察看日志获取相信信息)" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "您似乎没有验证%s(在删除时)" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "Dropbox错误:%s(察看日志获取更多信息)" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "错误 - 从%s下载文件失败" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "错误 - %s 不存在这样的文件" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "%s 错误" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "%s 错误 - 上传文件失败" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "%s 错误 - 重组分片失败" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "%s 验证失败" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "错误:%s" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "指定的备份目录存在,但是无法写入。 " + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "指定的备份目录 存在" + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "警告:%s" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "上次备份任务运行:" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "遇到了一个非常大的文件:%s(尺寸:%s Mb)" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "%s:无法读取文件 - 无法备份" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "表 %s 有很多数据(%s) - 我们希望您的主机提供商能够提供足够的资源来dump这张表" + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "关闭数据库文件时出现错误" + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "警告:" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "备份完成(存在警告信息)" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "您的剩余空间很少了 - 只有 %s Mb 剩余" + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "新站点:" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "错误:站点 RUL 已经获取。" + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "迁移站点(从UpdraftPlus)" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "使用多站点安装方式时,请在这里填入关于此站点位置的详细信息:" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "如果要继续,需要的信息:" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "网络活跃主题:" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "处理过的插件:" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "检查您的文件权限信息:无法创建并且进入目录:" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "一些FTP服务号称支持加密的方式,但是使用时会出现超时(长时间后)。如果发生此类事情,请进入\"高级选项\"(下面),关闭SSL。 " + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "您web服务器的PHP没有包含一个必须的模块(%s),请联系您的主机提供商获取帮助,使其开启改模块。" + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "请检查您的证书。" + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "从%s获取的错误信息是:" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "请提供需要的信息后再继续" + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "无法删除表,所以删除已经插入的内容(%s)" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "无法创建新表。所以跳过改命令(%s)" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "站点信息:" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "您的数据库用户没有建表的权限,我们将要尝试清空表的方式。这种方式只兼容以下两个条件 a)您正尝试还原相同表结构的WordPress版本;b)您将要导入的数据库不包括其他不是您现在站点的数据" + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "警告:" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "您运行在WordPress的多站点模式 - 但是您的备份不是多站点模式" + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "在将单站点导入多站点时跳过WordPress的核心文件。如果您的WordPress目录中存在其他必要的文件,您需要手动将它们添加到zip文件中。" + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "为了使用(%s),您web服务器上安装的PHP没有包含 必须的模块(%s),请联系您的主机提供商,让他们开启这些模块。" + +#: admin.php:596 +msgid "Close" +msgstr "关闭" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "未知响应:" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "向多个地址发送,请使用逗号分割。" + +#: admin.php:576 +msgid "PHP information" +msgstr "PHP信息" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "发现了可执行的zip" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "察看PHP信息(phpinfo)" + +#: admin.php:2627 +msgid "Get it here." +msgstr "从这里获取。" + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "然后,尝试我们的 \"迁移\"插件。使用一次后,您可以比较一下花费的价格和手动拷贝花费的时间" + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "您想迁移或者克隆/复制站点吗?" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "察看此文档来获知如何进行step-by-step。" + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "迁移站点" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "删除。。。请等待直到和远程存储的通信完成" + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "顺带从远程存储删除" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "最近的 UpdraftPlus.com 新闻" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "克隆/迁移" + +#: admin.php:2304 +msgid "Premium" +msgstr "价格" + +#: admin.php:2305 +msgid "News" +msgstr "新闻" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "没有找到备份集" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "%s - 无法备份;相关目录不存在(%s)" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "RSS 链接地址" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "博客链接地址" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "关注 UpdraftPlus 的博客来获得最新的消息和支持" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "测试 %s 设置" + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "或者,您可以手动将他们放入您的UpdraftPlus目录(通常在wp-content/updraft),如,通过FTP。完成后,使用下面的\"rescan\"链接" + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "已经开启了UpdraftPlus的debug模式,您将同时看到UpdraftPlus和其他插件的debug信息。请确保在提交支持请求之前获得了UpdraftPlus的debug信息" + +#: admin.php:880 +msgid "Notice" +msgstr "注意:" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "错误:" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "重新扫描(查找您手动上传到内部备份库的备份文件)" + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "开始查找此条目" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "保存在" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "\"%s\" 木有主键,需要在row %s上手动修改。" + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "行:%d" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "花费时间(秒):" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "错误:" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "SQL更新命令执行:" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "做出的修改:" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "检查多的行:" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "检查多的表:" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "无法获取表的清单" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "数据库查找和替换:在备份文件中将%s替换成%s" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "警告:站点URL(%s)和我们预期的不相符(%s)" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "无事可干:站点URL已经存在:%s" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "错误:未知的空参数(%s,%s)" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "此选项没有被选择。" + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "数据库:查找并替换站点URL" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "失败:我们无法识别 %s 操作返回的结果信息。" + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "失败:无法开始%s操作" + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "(学习更多)" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "察看并且在数据库中替换站点位置(迁移)" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "数据库中参考的所有站点位置信息将会使用您目前的URL替换:%s" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "博客上传" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "必须使用 插件" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "您没有权限察看此页面。" + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "您没有察看此页面的适当权限。" + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "安装多站点" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "从下一次开始" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "错误:端口必须是数字。" + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "密码" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "账户" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "主机名" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "登陆后将转换到的目录 - 通常和您的家目录相关。" + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "路径" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "密码" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "端口" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "主机" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "%s 错误:下载失败" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "检查您的文件权限:无法创建并且进入:" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "没有找到%s" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "默认使用显式加密。需要强制使用隐式加密(端口990),在下面的FTP服务器后添加 :990" + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "加密的FTP可用,将会首先尝试(如果失败,将会使用未加密的方式)。如果不需要此功能,请在高级选项中禁用。“测试FTP登陆”按钮将会告诉你正在使用的连接方式。" + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "没有备份的%s目录:没有发现任何要备份的东西" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "小心您的输入 - 如果您输入 / ,那么生成的zip文件会包含您的整个站点" + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "如果使用,请输入绝对路径(不是相对于WordPress的相对路径)" + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "如果您不确定这个选项是干什么的,那么您很可能不需要它,请关闭。" + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "进入目录:" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "更多文件" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "WordPress 核心文件(包括WordPress根目录附加的任何文件)" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "上面的文件包括WordPress安装后的全部文件。" + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "覆盖 wp-config.php" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "WordPress 核心" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "失败:我们无法在相关目录放置文件 - 请检查您的证书" + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "失败" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "WebDAV URL" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "本地写入失败:下载失败" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "打开远程文件失败:下载失败" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "分片 %s:发生了一个 %s 错误" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "没有发现%s的设置" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "失败:我们成功登陆,但是无法在指定目录创建文件。" + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "成功:我们成功登陆,并且确认了在给定目录创建文件的能力(登陆方式:" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "失败:我们无法使用那些证书登陆。" + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "失败:没有提供详细的服务器信息。" + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "已经存在" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "如果您需要加密(比如您保存了私密的商业信息),可以使用此插件。" + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "通常的UpdraftPlus只支持无加密的FTP。" + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "您的%s帐号名:%s" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "尽管部分返回的信息非预期 - 您还是可以选择其他" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "您已经验证了你的%s帐号" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "点击这里获取相关插件" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "如果您使用同一个Dropbox帐号备份多个站点,并且各个站点使用子目录。然后" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "备份并保存" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "需要使用子目录?" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "错误:上传文件至%s失败(察看日志获取详细信息)" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "您似乎没有验证Dropbox" + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "与%s的通信没有加密。" + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "和%s的通信被加密。" + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "我们进入了bucket,并且可以在里边建立文件。" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "我们成功进入bucket,但是在里边创建文件失败。" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "错误" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "失败:我们无法进入或者创建此bucket。请检查您的证书,如果证书正确,请尝试其它的bucket名称(可能其他的 %s 用户已经使用了您选择的bucket名称)" + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "区域" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "失败:没有提供详细的bucket信息" + +#: methods/s3.php:961 +msgid "API secret" +msgstr "API secret" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "只需要输入bucket名称或者bucket和路径,如:mybucket, mybucket/mypath" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "%s 位置" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "%s secret key" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "%s access key" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "如果您看到了SSL证书错误,请到这里寻求帮助。" + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "从您的 %s 控制台获得access key 和 secret key,然后,挑选一个(所有 %s 用户都不相同的)bucket名称(字母和数字)(可以使用路径名)作为存储使用。如果不存在,将会为您创建此bucket。" + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "%s 错误:进入bucket %s失。检查您的权限和证书。" + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "%s 错误:下载 %s 失败,检查您的权限和证书。" + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "%s 重组失败(%s):(察看日志获取详细信息)" + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "%s 上传 (%s):重组失败(察看日志获取详细信息)" + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "%s 分片 %s:上传失败" + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "%s 错误:文件%s被未知的缩短" + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "%s 上传:获取多模块上传ID失败 - 察看日志获取详细信息" + +#: methods/email.php:69 +msgid "Note:" +msgstr "注意:" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "WordPress备份" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "可是使用容器,并且可以在里边创建文件。" + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "云文件错误 - 我们可以进入容器,但是无法在其中创建文件" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "失败:没有提供容器的详细信息。" + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "用户名" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "API key" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "错误:没有设置%s" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "UpdraftPlus 的 %s 模块依赖 %s。不要发送任何支持请求,没有其他选择。" + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "云文件容器" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "云文件 API key" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "云文件帐号" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "UK" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "US (默认)" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "US 或者 UK 云" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "您需要阅读这个很重要的FAQ文档。" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "从 您的 Rackspace 云控制台获取API key,(操作指南),然后挑选一个容器名称作为存储使用。如果不存在,将会为您创建此容器。" + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "测试%s设置" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "下载远程文件错误:下载失败(" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "打开本地文件失败:无法下载" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "云文件错误 - 上传文件失败" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "%s 错误:上传失败" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "%s错误:无法打开本地文件" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "云文件错误 - 无法创建、访问容器" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "云文件验证失败" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "在保存您的设置之后(点击”保存修改“),请再一次回到这里,点击这个链接来完成Google验证。" + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "与Google验证" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "客户密钥" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "如果Google向您显示了 \"invalid_client\"的信息;很可能是您没有输入可用的客户ID。" + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "客户ID" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "如果需要,您必须添加下面的链接作为重定向RUI(在 \"更多选择\"下面)" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "选择”网页应用“作为应用类型" + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "对于长期支持用户,包括截图等。请点击此链接,这里有针对专家用户的足够描述" + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "%s是一个很好的选择,UpdraftPlus支持分片上传 - 无论您的站点有多大,UpdraftPlus可以分批次上传,避开超时限制。" + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "帐号未验证。" + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "向%s上传失败" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "全部账户:您的 %s 账户只剩下了%d字节的空间,但是将要上传的文件为%d字节" + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "还没有从Google获得token - 您需要验证或者重新验证您的Google Drive链接" + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "您已经验证了您的%s帐号" + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "成功" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "您的 %s 配额使用:已使用 %s %%, 剩余 %s" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "验证失败" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "没有从Google获取到token。这意味着您可能输错了密码,或者您修改密码后没有进行重新验证。请认真检查,然后根据链接进行验证。最后,如果还是无法工作,请使用高级模式擦除所有设置,建立新的Google客户端帐号/密码,重新开始" + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "点此链接来获取" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "%s 支持以插件的方式可用" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "您还没有安装UpdraftPlus的%s插件 - 从 %s 获取" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "您需要重新验证 %s,因为目前存在的证书无法使用。" + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "OK" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "表前缀已经改变:关联修改%s表字段" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "完成:处理的行数:%d 行 / %.2f 秒" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "执行的数据库查询是:" + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "将要还原为:" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "旧的表前缀:" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "备份:" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "数据库获取:不允许直接的MySQL连接,我们将会尝试wpdb(这种方式可能会比较慢)" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "无法打开数据库文件" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "无法找到数据库备份文件" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "警告:开启了PHP安全模式,很可能出现超时;如果出现超时,你需要使用其他方式手动恢复数据库,比如phpMyAdmin等" + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "备份中的wp-config.php;按照每个用户的要求还原" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "备份中的 wp-config.php 将要还原为 wp-config-backup.php" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "无法将加密后的数据库保存到文件系统" + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "无法创建临时目录" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "还原后无法删除工作目录。" + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "无法删除旧目录" + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "清理垃圾。。。" + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "数据库还原(大的网站,可能要持续很长时间)如果出现超时(如果您的主机提供商设置了资源限制),您可能需要使用其他方式备份,比如phpMyAdmin。。。" + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "数据库解密成功" + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "数据库解密(可能需要一些时间)。。。" + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "解压备份。。。" + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "复制此文件失败" + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "备份文件不存在" + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "UpdraftPlus 无法直接保存此类文件。必须手动保存" + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "无法找到需要恢复的文件" + +#: admin.php:5009 +msgid "Error message" +msgstr "错误信息" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "备份记录中没有包含此文件的尺寸信息。" + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "归档预期尺寸:" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "如果需要支持,请包含这些信息:" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "ABORT:无法找到恢复条目的信息" + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "UpdraftPlus 恢复:处理" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "备份历史中不存在此备份 - 退出恢复。时间点:" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "点击这个按钮后,您将会获得恢复哪些部分的选项" + +#: admin.php:4572 +msgid "Press here to download" +msgstr "点击这里下载" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "删除此备份集" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "好消息:您站点与 %s 的通信可以加密。如果在加密的过程中出现任何错误,请察看”高级设置“部分获取帮助" + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "您web服务器的 PHP/Curl 不支持https。没有此支持,我们无法使用 %s,请联系您的主机提供商提供支持,%s 需要 Curl+https。请不要向我们发送任何支持请求,没有其他的方式越过此需求" + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "您web服务器的 PHP/Curl 不支持https,使用%s的通信将不会加密。请您的主机提供商安装 Curl/SSL ,用来支持加密的能力(通过插件)。" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "您web服务器的PHP没有需要的模块(%s)。请联系您的主机提供商进行处理" + +#: admin.php:4062 +msgid "Save Changes" +msgstr "保存修改" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "使用此选项降低您的安全策略,如果可能,UpdraftPlus不会使用SSL验证和加密传输。注意,一些云存储不允许此设置(比如,Dropbox),因此,该选项可能不会起作用" + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "如果可能,彻底禁用SSL" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "注意,不是所有的云存储都需要SSL验证" + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "使用此选项降低您的安全策略,UpdraftPlus不会验证将要链接的远程存储(Dropbox, Google Drive等)。意味着UpdraftPlus只使用SSL来加密通信,而不进行验证。" + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "不要检测SSL证书" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "默认情况下,UpdraftPlus使用它自己保存的SSL证书验证远程站点(确认它是否真的和Dropbox, Amazon S3通信)。我们会保持证书更新。然而,如果你遇到了SSL错误,请选择此选项(让UpdraftPlus使用您服务器收集的证书)" + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "使用服务器的SSL证书" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "如果失败,请检查您服务器的权限或者使用其他您web服务器可以写入的目录" + +#: admin.php:3697 +msgid "click here" +msgstr "点击这里" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "或者,将选项复位" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "指定的备份目录可以写入,非常好。" + +#: admin.php:4009 +msgid "Backup directory" +msgstr "备份目录" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "删除本地备份" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "点击这里察看一些更牛逼的设置;您还是不要使用这些为好,除非好奇或者发生当错误时。" + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "察看高级设置" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "高级设置" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "调试模式" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "高级/调试设置" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "请求开始备份:" + +#: admin.php:591 +msgid "Cancel" +msgstr "退出" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "None" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "选择您的远程存储" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "手动解密数据库备份文件" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "数据库加密文本" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "邮件" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "上面的目录是所有的东西,除了WordPress的核心文件(可以从 WordPress.org 上下载)" + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "排除这些:" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "wp-content目录中找到的其他子目录" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "在文件备份中包含" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "如:您的服务器白天负载很重,您需要在夜晚进行" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "调整备份开始时间" + +#: admin.php:3683 +msgid "Monthly" +msgstr "每月一次" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "两周一次" + +#: admin.php:3681 +msgid "Weekly" +msgstr "每周一次" + +#: admin.php:3680 +msgid "Daily" +msgstr "每天一次" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "下载日志文件" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "目录已经存在,但是您的web服务器没有写如权限" + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "目录已经创建,但是我们需要将它的权限改为777(谁都可以访问)。您需要和您的主机提供商一起检查,确保此操作不会引起其他问题" + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "向文件系统发送创建目录的请求失败" + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "删除" + +#: admin.php:3418 +msgid "show log" +msgstr "察看日志" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "将会擦除您UpdraftPlus所有的设置 - 确认?" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "数量" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "N.B. 基于是或者不是,排除上次您保存的选项" + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "磁盘数据总量(未压缩的)" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "No" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "Yes" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "%s 版本:" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "目前的内存使用量" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "内存峰值" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "Web服务器:" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "请获取UpdraftPlus的付费版本,或者单机版的多站点插件" + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "您时候需要WordPress的多站点支持?" + +#: admin.php:2654 +msgid "Multisite" +msgstr "多站点" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "开始一次性的备份" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "还原前,请先阅读该文档获取相关信息" + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "您可以使用迁移插件查找/替换您的数据库(当迁移站点到新的目的地/URL时),使用此链接获取详细信息" + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "%s 恢复选项:" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "您需要手动恢复" + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "以下的条目不能自动恢复:\"%s\"。" + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "您的web服务器开启了PHP的safe_mode" + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "选择将要还原的模块" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "恢复将会覆盖本站点的主题,插件,上传,数据库,和/或者其他内容(根据您在备份集中的选择)" + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "备份恢复,来自" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "恢复备份" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "删除备份集" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "下载失败:服务器向我们发送了我们不能识别的反馈" + +#: admin.php:570 +msgid "You should:" +msgstr "您应该:" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "错误:" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "计算" + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "UpdraftPlus - 上传备份文件" + +#: admin.php:3020 +msgid "refresh" +msgstr "刷新" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "UpdraftPlus使用的Web服务器空间" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "Google Drive" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "如果您正使用这个,请关闭 Turbo/Road 模式" + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "Opera 浏览器" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "更多的任务:" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "下载最近修改过的日志文件" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "(还木有日志信息)" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "上次日志信息" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "还原" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "现在备份" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "数据库" + +#: admin.php:229 +msgid "Files" +msgstr "文件" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "下一个备份任务" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "和文件一起备份" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "目前木有任何任务" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "此管理界面严重依赖JavaScript。或者激活您的浏览器JavaScript功能,或者还一个支持JavaScript的浏览器" + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "JavaScript 警告" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "删除旧目录" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "目前的限制为:" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "您的备份已经被存储" + +#: admin.php:2310 +msgid "Version" +msgstr "版本" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "主要开发者的个人主页" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "您的设置已经被擦除了" + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "备份目录创建成功" + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "无法创建备份目录" + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "移除旧目录失败,您可能需要手动进行操作" + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "旧目录移除成功" + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "移除旧的目录" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "退出到UpdraftPlus设置" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "动作" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "还原成功!" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "文件名格式错误 -貌似不是UpdraftPlus创建的加密数据库文件" + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "文件名格式错误 - 貌似不是UpdraftPlus创建的文件" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "没有本地备份" + +#: admin.php:2072 +msgid "Download in progress" +msgstr "正在下载" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "文件准备好了。" + +#: admin.php:2043 +msgid "Download failed" +msgstr "下载失败" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "错误" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "无法找到任务 - 或许已经完成了?" + +#: admin.php:1854 +msgid "Job deleted" +msgstr "删除任务" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "OK,你应该赶快察看下面的 \"Last log message\"" + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "还有日志被记录" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "如果您有备份方面的问题,请察看此FAQ" + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "您的网站放在%s站点服务器上" + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "UpdraftPlus目前不支持%s之前的WordPress,可能会工作;但是如果无法工作,请您只好升级WordPress了" + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "您分配给UpdraftPlus使用的备份磁盘剩余空间少于%s,UpdraftPlus无法正常运行。请联系您的主机管理员来解决这个问题" + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "警告" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "插件/Pro 支持" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "设置" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "允许文件" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "无法创建 %s zip压缩文件。察看日志文件,以获取详细信息" + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "无限递归:请察看您的日志,以获取更多信息" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "关注UpdraftPlus.Com来获得帮助、附加功能和支持" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "需要更多的功能或是支持吗?请购买UpdraftPlus商业版" + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "为了帮助UpdraftPlus,请在 wordpress.org给出一个正面的评价" + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "喜欢UpdraftPlus, 并且可以抽出1分钟时间?" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "您可以翻译吗?想为和您说一样语言的人在使用 UpdraftPlus 的时候造福吗" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "没有找到文件" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "使用密码:" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "解密失败。很可能是因为您输入的密码错误" + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "解密失败。数据库文件已加密,但是您没有输入密码" + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "无法写入备份文件" + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "由于没有备份数组,所以无法保存备份历史信息。备份失败" + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "无法读取目录" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "备份目录(%s)没有写权限,或者不存在该目录" + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "Wordpress 备份完成" + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "备份完成,但是貌似不成功" + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "备份成功完成" + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "数据库加密出错 - 退出加密" + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "无法在备份目录创建文件,退出备份 - 请检查您的UpdraftPlus设置" + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "其他" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "上传" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "主题" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "插件" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "无法找到日志文件" + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "无法读取日志文件" + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "UpdraftPlus 注意事项:" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "UpdraftPlus 归档" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus-zh_TW.mo b/plugins/updraftplus/languages/updraftplus-zh_TW.mo new file mode 100644 index 0000000..d1e6638 Binary files /dev/null and b/plugins/updraftplus/languages/updraftplus-zh_TW.mo differ diff --git a/plugins/updraftplus/languages/updraftplus-zh_TW.po b/plugins/updraftplus/languages/updraftplus-zh_TW.po new file mode 100644 index 0000000..111f728 --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus-zh_TW.po @@ -0,0 +1,6109 @@ +# Translation of UpdraftPlus in Chinese (Taiwan) +# This file is distributed under the same license as the UpdraftPlus package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-08-24 17:04:47+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: GlotPress/2.2.0\n" +"Language: zh_TW\n" +"Project-Id-Version: UpdraftPlus\n" + +#: templates/wp-admin/advanced/tools-menu.php:22 +msgid "Site size" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:10 +msgid "Lock settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:5 +#: templates/wp-admin/advanced/tools-menu.php:6 +msgid "Site information" +msgstr "" + +#: templates/wp-admin/advanced/search-replace.php:9 +msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:15 +msgid "Import settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:12 +msgid "You can also import previously-exported settings. This tool will replace all your saved settings." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:9 +msgid "Export settings" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "including any passwords" +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:7 +msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab." +msgstr "" + +#: templates/wp-admin/advanced/export-settings.php:5 +#: templates/wp-admin/advanced/tools-menu.php:26 +msgid "Export / import settings" +msgstr "" + +#: restorer.php:1980 +msgid "Skipping site %s: this table (%s) and others from the site will not be restored" +msgstr "" + +#: restorer.php:1799 +msgid "Processing table (%s)" +msgstr "" + +#: restorer.php:1584 +msgid "Backup of: %s" +msgstr "" + +#: methods/googledrive.php:212 +msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus." +msgstr "" + +#: methods/dropbox.php:550 +msgid "%s de-authentication" +msgstr "" + +#: methods/dropbox.php:518 +msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked" +msgstr "" + +#: methods/dropbox.php:492 +msgid "Follow this link to deauthenticate with %s." +msgstr "" + +#: central/bootstrap.php:542 +msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard." +msgstr "" + +#: backup.php:1474 +msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources." +msgstr "" + +#: admin.php:2638 +msgid "You have selected a remote storage option which has an authorization step to complete:" +msgstr "" + +#: admin.php:1765 +msgid "Remote files deleted:" +msgstr "" + +#: admin.php:1764 +msgid "Local files deleted:" +msgstr "" + +#: admin.php:892 admin.php:896 admin.php:904 admin.php:908 +msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)." +msgstr "" + +#: admin.php:651 +msgid "remote files deleted" +msgstr "" + +#: admin.php:649 +msgid "Complete" +msgstr "" + +#: admin.php:648 +msgid "Do you want to carry out the import?" +msgstr "" + +#: admin.php:647 +msgid "Which was exported on:" +msgstr "" + +#: admin.php:646 +msgid "This will import data from:" +msgstr "" + +#: admin.php:645 +msgid "Importing..." +msgstr "" + +#: admin.php:642 +msgid "You have not yet selected a file to import." +msgstr "" + +#: admin.php:626 +msgid "Your export file will be of your displayed settings, not your saved ones." +msgstr "" + +#: admin.php:82 +msgid "template not found" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US East (Ohio)" +msgstr "" + +#: addons/onedrive.php:953 +msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account." +msgstr "" + +#: addons/onedrive.php:635 +msgid "Account is not authorized (%s)." +msgstr "" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "你的 IP 位址:" + +#: addons/onedrive.php:596 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "若要移除封鎖,請往此處去。" + +#: addons/onedrive.php:581 udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code:" +msgstr "" + +#: central/modules/updraftplus.php:284 +msgid "%s add-on not found" +msgstr "找不到 %s 插件" + +#: admin.php:3136 +msgid "or to restore manually" +msgstr "或是手動恢復" + +#: admin.php:3136 +msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time" +msgstr "這極有可能會造成連線逾時。建議你關閉安全模式,或是一次恢復一個項目。" + +#: admin.php:2484 +msgid "To fix this problem go here." +msgstr "欲修復這個問題,請往此處去。" + +#: admin.php:2484 +msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "OptimizePress 2.0 會加密自身的內容,因此無法搜尋或取代。" + +#: admin.php:611 +msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup." +msgstr "你的 PHP 沒有安裝 OpenSSL 模組;這通常需要花上幾分鐘;如果稍後沒有任何變化,那麼你應該試試小一點的金鑰長度,或者是諮詢你的網頁代管公司如何啟用 OpenSSL 模組。" + +#: addons/webdav.php:91 +msgid "Path" +msgstr "路徑" + +#: addons/webdav.php:86 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "保持空白即使用預設值(80 為 webdav,443 為 webdavs)" + +#: addons/webdav.php:78 +msgid "Enter any path in the field below." +msgstr "在下面欄位內輸入任何路徑" + +#: addons/webdav.php:78 +msgid "A host name cannot contain a slash." +msgstr "主機名稱不能有斜線" + +#: addons/webdav.php:53 +msgid "Protocol (SSL or not)" +msgstr "通訊協定(SSL 或不用)" + +#: addons/webdav.php:48 +msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider." +msgstr "此 WebDAV 的 URL 是根據下方選項的內容產生的。如果你不清楚細節,請諮詢你的 WebDAV 服務提供者。" + +#: udaddons/updraftplus-addons.php:750 +msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com." +msgstr "沒有收到回傳資料。通常這表示本站與 UpdraftPlus.com 之間的網路連接有問題(例如對外的防火牆或是頻寬超載)" + +#: methods/s3.php:1010 +msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "AWS 存取金鑰有誤(%s 有效的存取金鑰應該以 \"AK\" 開頭)" + +#: methods/s3.php:89 +msgid "No settings were found - please go to the Settings tab and check your settings" +msgstr "尚未設定。請至設定頁面檢查設定。" + +#: admin.php:3820 +msgid "Backup using %s?" +msgstr "使用 %s 備份?" + +#: admin.php:690 +msgid "Full Premium plugin" +msgstr "付費插件" + +#: admin.php:689 +msgid "Just this add-on" +msgstr "本插件" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Mumbai)" +msgstr "亞太(孟買)" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "減少資料重複" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "標準(極少存取)" + +#: admin.php:2310 +msgid "FAQs" +msgstr "常見問題" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +msgid "Unknown update checker status \"%s\"" +msgstr "不明的更新檢查器狀態 \"%s\"" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "插件有新版本可用。" + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "插件已是最新版。" + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "檢查更新" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "沒有可用的變更記錄。" + +#: central/bootstrap.php:492 +msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate." +msgstr "" + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "" + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "" + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "" + +#: central/bootstrap.php:418 +msgid "Key size: %d bits" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "" + +#: backup.php:2016 +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "" + +#: backup.php:2000 +msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)" +msgstr "" + +#: addons/migrator.php:2218 +msgid "Create key" +msgstr "" + +#: addons/migrator.php:2215 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "recommended" +msgstr "" + +#: addons/migrator.php:2214 central/bootstrap.php:505 +msgid "%s bytes" +msgstr "" + +#: addons/migrator.php:2213 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "" + +#: addons/migrator.php:2212 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "" + +#: addons/migrator.php:2212 addons/migrator.php:2213 addons/migrator.php:2215 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +msgid "%s bits" +msgstr "" + +#: addons/migrator.php:2210 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "" + +#: addons/migrator.php:2208 +msgid "Enter your chosen name" +msgstr "" + +#: addons/migrator.php:2207 +msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":" +msgstr "" + +#: methods/googledrive.php:422 +msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)" +msgstr "" + +#: methods/ftp.php:383 +msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again." +msgstr "" + +#: methods/ftp.php:355 +msgid "login" +msgstr "" + +#: methods/email.php:77 +msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive." +msgstr "" + +#: methods/email.php:28 +msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method." +msgstr "" + +#: class-updraftplus.php:1386 +msgid "Size: %s MB" +msgstr "" + +#: central/bootstrap.php:479 +msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)" +msgstr "" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "" + +#: admin.php:4000 +msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)." +msgstr "" + +#: admin.php:2761 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "" + +#: admin.php:2604 +msgid "Now" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "" + +#: admin.php:3809 +msgid "(tap on an icon to select or unselect)" +msgstr "" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +msgid "%s per year" +msgstr "" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "" + +#: methods/updraftvault.php:219 +msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect." +msgstr "" + +#: class-updraftplus.php:360 class-updraftplus.php:405 +msgid "The given file was not found, or could not be read." +msgstr "" + +#: central/bootstrap.php:540 +msgid "UpdraftCentral (Remote Control)" +msgstr "" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "" + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "" + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "" + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later." +msgstr "" + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "" + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "" + +#: central/bootstrap.php:67 +msgid "You must visit this link in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You must visit this URL in the same browser and login session as you created the key in." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "" + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "" + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "" + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "" + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "" + +#: backup.php:834 class-updraftplus.php:2608 +msgid "The backup was aborted by the user" +msgstr "" + +#: admin.php:5258 +msgid "Your settings have been saved." +msgstr "" + +#: admin.php:4335 +msgid "Total backup size:" +msgstr "" + +#: admin.php:3420 +msgid "stop" +msgstr "" + +#: admin.php:3258 +msgid "The backup has finished running" +msgstr "" + +#: templates/wp-admin/advanced/tools-menu.php:30 +#: templates/wp-admin/advanced/wipe-settings.php:5 +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "Wipe settings" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:74 +msgid "reset" +msgstr "" + +#: admin.php:3095 +msgid "these backup sets" +msgstr "" + +#: admin.php:3092 +msgid "this backup set" +msgstr "" + +#: admin.php:3020 +msgid "calculate" +msgstr "" + +#: admin.php:2756 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "" + +#: admin.php:625 +msgid "You should save your changes to ensure that they are used for making your backup." +msgstr "" + +#: admin.php:619 +msgid "We requested to delete the file, but could not understand the server's response" +msgstr "" + +#: admin.php:618 +msgid "Please enter a valid URL" +msgstr "" + +#: admin.php:601 +msgid "Saving..." +msgstr "" + +#: admin.php:565 +msgid "Error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:557 +msgid "Fetching..." +msgstr "" + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Seoul)" +msgstr "" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: restorer.php:1607 +msgid "Uploads URL:" +msgstr "" + +#: backup.php:385 +msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)" +msgstr "" + +#: addons/onedrive.php:56 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it." +msgstr "" + +#: restorer.php:2004 +msgid "Skipping table %s: this table will not be restored" +msgstr "" + +#: class-updraftplus.php:3884 restorer.php:1627 +msgid "To import an ordinary WordPress site into a multisite installation requires %s." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "Please read this link for important information on this process." +msgstr "" + +#: class-updraftplus.php:3880 +msgid "It will be imported as a new site." +msgstr "" + +#: admin.php:2884 +msgid "Dismiss" +msgstr "" + +#: admin.php:637 +msgid "Please fill in the required information." +msgstr "" + +#: addons/multisite.php:557 +msgid "Read more..." +msgstr "" + +#: addons/multisite.php:557 +msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network." +msgstr "" + +#: addons/multisite.php:548 +msgid "may include some site-wide data" +msgstr "" + +#: addons/multisite.php:543 +msgid "All sites" +msgstr "" + +#: addons/multisite.php:539 +msgid "Which site to restore" +msgstr "" + +#: addons/multisite.php:375 addons/multisite.php:385 +msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup" +msgstr "" + +#: addons/migrator.php:522 +msgid "ERROR: problem creating site entry." +msgstr "" + +#: addons/migrator.php:496 addons/migrator.php:497 +msgid "Error when creating new site at your chosen address:" +msgstr "" + +#: addons/migrator.php:438 +msgid "Required information for restoring this backup was not given (%s)" +msgstr "" + +#: addons/migrator.php:397 +msgid "Attribute imported content to user" +msgstr "" + +#: addons/migrator.php:387 addons/migrator.php:389 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "" + +#: addons/migrator.php:367 +msgid "This feature is not compatible with %s" +msgstr "" + +#: addons/migrator.php:365 addons/migrator.php:367 +msgid "Importing a single site into a multisite install" +msgstr "" + +#: addons/migrator.php:356 +msgid "other content from wp-content" +msgstr "" + +#: addons/migrator.php:353 +msgid "WordPress core" +msgstr "" + +#: addons/migrator.php:353 addons/migrator.php:356 addons/migrator.php:359 +msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call WordPress action:" +msgstr "" + +#: admin.php:2908 +msgid "Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "" + +#: admin.php:4878 +msgid "Skipping: this archive was already restored." +msgstr "" + +#: admin.php:3860 +msgid "File Options" +msgstr "" + +#: admin.php:3799 +msgid "Sending Your Backup To Remote Storage" +msgstr "" + +#: admin.php:3764 +msgid "Database backup schedule" +msgstr "" + +#: admin.php:3754 +msgid "Incremental file backup schedule" +msgstr "" + +#: admin.php:3721 +msgid "Files backup schedule" +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "" + +#: templates/wp-admin/advanced/wipe-settings.php:6 +msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)." +msgstr "" + +#: admin.php:5159 +msgid "Send this backup to remote storage" +msgstr "" + +#: admin.php:5157 +msgid "Check out UpdraftPlus Vault." +msgstr "" + +#: admin.php:5157 +msgid "Not got any remote storage?" +msgstr "" + +#: admin.php:5157 +msgid "settings" +msgstr "" + +#: admin.php:5157 +msgid "Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "" + +#: admin.php:2906 +msgid "Include any files in the backup" +msgstr "" + +#: admin.php:2904 +msgid "Include the database in the backup" +msgstr "" + +#: admin.php:2883 +msgid "Continue restoration" +msgstr "" + +#: admin.php:2878 +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "" + +#: admin.php:2877 +msgid "Unfinished restoration" +msgstr "" + +#: admin.php:2875 +msgid "%s minutes, %s seconds" +msgstr "" + +#: admin.php:2678 +msgid "Backup Contents And Schedule" +msgstr "" + +#: admin.php:2547 +msgid "Premium / Extensions" +msgstr "" + +#: admin.php:2340 admin.php:2349 +msgid "Sufficient information about the in-progress restoration operation could not be found." +msgstr "" + +#: admin.php:624 +msgctxt "(verb)" +msgid "Download" +msgstr "" + +#: admin.php:551 +msgid "You have chosen to backup files, but no file entities have been selected" +msgstr "" + +#: admin.php:442 +msgid "Extensions" +msgstr "" + +#: admin.php:434 admin.php:2546 +msgid "Advanced Tools" +msgstr "" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "" + +#: addons/googlecloud.php:875 +msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability." +msgstr "" + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "" + +#: addons/googlecloud.php:816 +msgid "Do not confuse %s with %s - they are separate things." +msgstr "" + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "" + +#: addons/azure.php:524 +msgid "container" +msgstr "" + +#: addons/azure.php:524 +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "" + +#: addons/azure.php:523 +msgid "optional" +msgstr "" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "" + +#: addons/azure.php:518 +msgid "If the %s does not already exist, then it will be created." +msgstr "" + +#: addons/azure.php:518 +msgid "Enter the path of the %s you wish to use here." +msgstr "" + +#: addons/azure.php:507 +msgid "This is not your Azure login - see the instructions if needing more guidance." +msgstr "" + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "" + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "" + +#: class-updraftplus.php:2625 +msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set." +msgstr "" + +#: backup.php:1526 +msgid "the options table was not found" +msgstr "" + +#: backup.php:1524 +msgid "no options or sitemeta table was found" +msgstr "" + +#: backup.php:1524 backup.php:1526 +msgid "The database backup appears to have failed" +msgstr "" + +#: backup.php:1412 +msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail." +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "required for some remote storage providers" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:47 +msgid "Not installed" +msgstr "" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "" + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Enter the ID of the %s project you wish to use here." +msgstr "" + +#: addons/googlecloud.php:828 +msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section." +msgstr "" + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "" + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "" + +#: addons/googlecloud.php:479 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +msgid "%s Service Exception." +msgstr "" + +#: updraftplus.php:147 +msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files." +msgstr "" + +#: restorer.php:767 +msgid "Deferring..." +msgstr "" + +#: admin.php:3793 +msgid "or to configure more complex schedules" +msgstr "" + +#: admin.php:3092 admin.php:3095 +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "" + +#: admin.php:3081 +msgid "Deselect" +msgstr "" + +#: admin.php:3080 +msgid "Select all" +msgstr "" + +#: admin.php:3078 +msgid "Actions upon selected backups" +msgstr "" + +#: admin.php:3026 +msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)." +msgstr "" + +#: admin.php:1763 +msgid "Backup sets removed:" +msgstr "" + +#: admin.php:636 +msgid "Processing..." +msgstr "" + +#: admin.php:634 +msgid "For backups older than" +msgstr "" + +#: admin.php:633 +msgid "week(s)" +msgstr "" + +#: admin.php:632 +msgid "hour(s)" +msgstr "" + +#: admin.php:631 +msgid "day(s)" +msgstr "" + +#: admin.php:630 +msgid "in the month" +msgstr "" + +#: admin.php:629 +msgid "day" +msgstr "" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "" + +#: restorer.php:2101 +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "" + +#: restorer.php:2101 +msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database." +msgstr "" + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "" + +#: class-updraftplus.php:3917 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "" + +#: class-updraftplus.php:3917 +msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on." +msgstr "" + +#: admin.php:2806 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "" + +#: admin.php:2469 +msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem." +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "閱讀常見問題" + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "伺服器端加密" + +#: methods/updraftvault.php:589 +msgid "If you have forgotten your password, then go here to change your password on updraftplus.com." +msgstr "" + +#: admin.php:900 +msgid "Go to the remote storage settings in order to connect." +msgstr "" + +#: admin.php:900 +msgid "%s has been chosen for remote storage, but you are not currently connected." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal." +msgstr "使用信用卡或 Paypal 時,接受以美金、歐元或是英鎊作為貨幣單位。" + +#: admin.php:607 +msgid "Update quota count" +msgstr "上傳限額" + +#: admin.php:606 +msgid "Counting..." +msgstr "統計中..." + +#: admin.php:605 +msgid "Disconnecting..." +msgstr "中斷連線中..." + +#: admin.php:603 +msgid "Connecting..." +msgstr "連線中..." + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "更新使用狀態" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "取得更多額度" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "現已使用:" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "你可以在此取得更多的使用額度" + +#: methods/updraftvault.php:354 +msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)." +msgstr "%s 錯誤:你的空間可用額度不足 (%s),無法上傳這次的存檔 (%s)" + +#: admin.php:604 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "中斷連線" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "引言:" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "Vault 擁有人" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "做得好 - 已經沒有東西需要設定了" + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "這個網站 已連線 到 UpdraftPlus Vault。" + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "你 未連線 到 UpdraftPlus Vault。" + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "到這裡尋求協助" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "電子信箱" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "返回..." + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "可以隨時隨地取消訂閱" + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +msgid "%s per quarter" +msgstr "" + +#: central/bootstrap.php:542 methods/updraftvault.php:263 +#: methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability." +msgstr "" + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "已購買空間?" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "顯示選項" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "第一次使用?" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "按下按鈕以開始" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "UpdraftPlus Vault brings you storage that is reliable, easy to use and a great price." +msgstr "" + +#: methods/updraftvault.php:215 +msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible." +msgstr "" + +#: methods/updraftvault.php:212 +msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!" +msgstr "" + +#: methods/updraftvault.php:209 +msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer." +msgstr "" + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "更新 Vault" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:1038 +msgid "Delete failed:" +msgstr "刪除失敗:" + +#: backup.php:2952 +msgid "The zip engine returned the message: %s." +msgstr "壓縮引擎回傳了以下的訊息:%s" + +#: addons/s3-enhanced.php:350 +msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "若失去這項權限,UpdraftPlus 便不能刪除備份 - 或許你可以將你的「保留」選項設得非常大,避免類似的刪除錯誤跑出來>" + +#: addons/s3-enhanced.php:348 +msgid "Allow deletion" +msgstr "允許刪除" + +#: addons/s3-enhanced.php:346 +msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website." +msgstr "若失去這項權限,你便不能透過 UpdraftPlus 直接下載或還原備份,你得親自到 AWS 網站處理。" + +#: addons/s3-enhanced.php:344 +msgid "Allow download" +msgstr "允許下載" + +#: addons/migrator.php:1747 +msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead." +msgstr "如果無法直接跨站發送,這裡還有其他方法可以使用 - 請試著使用其他方法作為替代。" + +#: addons/migrator.php:1732 admin.php:613 +msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly." +msgstr "請確定你連得上遠端網站、並未被防火牆擋住、啟用 UpdraftPlus %s 或以上的版本而且各項欄位都已正確輸入。" + +#: addons/migrator.php:2250 +msgid "Existing keys" +msgstr "" + +#: addons/migrator.php:2241 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "" + +#: addons/migrator.php:2223 +msgid "Your new key:" +msgstr "" + +#: addons/migrator.php:2202 +msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there." +msgstr "" + +#: addons/migrator.php:2185 +msgid "Keys for this site are created in the section below the one you just pressed in." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "" + +#: addons/migrator.php:1845 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "" + +#: addons/migrator.php:1830 +msgid "A key with this name already exists; you must use a unique name." +msgstr "" + +#: addons/migrator.php:1778 +msgid "Also send this backup to the active remote storage locations" +msgstr "" + +#: addons/migrator.php:1743 +msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this." +msgstr "" + +#: addons/migrator.php:1699 +msgid "site not found" +msgstr "找不到站點" + +#: addons/migrator.php:1684 +msgid "Backup data will be sent to:" +msgstr "備份資料將發送到:" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "在這個戰點上還原一個現有的備份" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "這個站點尚未有任何備份可以用來還原" + +#: addons/reporting.php:143 +msgid "Backup made by %s" +msgstr "由 %s 建立備份" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "這個儲存空間不允許下載" + +#: admin.php:4638 +msgid "(backup set imported from remote location)" +msgstr "(已從遠端匯入備份)" + +#: admin.php:4423 +msgid "Site" +msgstr "站點" + +#: admin.php:4422 +msgid "Backup sent to remote site - not available for download." +msgstr "" + +#: admin.php:1355 +msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)." +msgstr "" + +#: admin.php:1355 +msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site." +msgstr "" + +#: addons/migrator.php:1760 admin.php:620 +msgid "Testing connection..." +msgstr "測試連線中..." + +#: admin.php:617 +msgid "Deleting..." +msgstr "刪除中..." + +#: admin.php:616 +msgid "key name" +msgstr "" + +#: admin.php:614 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "" + +#: admin.php:611 +msgid "Creating..." +msgstr "建立中…" + +#: addons/migrator.php:2201 +msgid "Or, receive a backup from a remote site" +msgstr "" + +#: addons/migrator.php:2190 +msgid "Paste key here" +msgstr "" + +#: addons/migrator.php:2185 +msgid "How do I get a site's key?" +msgstr "" + +#: addons/migrator.php:2185 +msgid "To add a site as a destination for sending to, enter that site's key below." +msgstr "" + +#: addons/migrator.php:2182 +msgid "Or, send a backup to another site" +msgstr "" + +#: addons/migrator.php:1927 admin.php:621 +msgid "Send" +msgstr "" + +#: addons/migrator.php:1921 admin.php:612 +msgid "Send to site:" +msgstr "" + +#: addons/migrator.php:1919 +msgid "No receiving sites have yet been added." +msgstr "" + +#: addons/migrator.php:1900 +msgid "It is for sending backups to the following site: " +msgstr "" + +#: addons/migrator.php:1900 +msgid "The key was successfully added." +msgstr "" + +#: addons/migrator.php:1884 +msgid "The entered key does not belong to a remote site (it belongs to this one)." +msgstr "" + +#: addons/migrator.php:1873 addons/migrator.php:1875 addons/migrator.php:1879 +msgid "The entered key was corrupt - please try again." +msgstr "" + +#: addons/migrator.php:1871 +msgid "The entered key was the wrong length - please try again." +msgstr "" + +#: addons/migrator.php:1861 +msgid "key" +msgstr "" + +#: methods/ftp.php:325 +msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this." +msgstr "" + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "" + +#: addons/migrator.php:162 +msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site." +msgstr "" + +#: addons/migrator.php:162 +msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site." +msgstr "" + +#: addons/migrator.php:2190 admin.php:609 +msgid "Add site" +msgstr "" + +#: admin.php:608 +msgid "Adding..." +msgstr "" + +#: udaddons/options.php:338 +msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "" + +#: restorer.php:2103 +msgid "To use this backup, your database server needs to support the %s character set." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "" + +#: addons/migrator.php:218 +msgid "After pressing this button, you will be given the option to choose which components you wish to migrate" +msgstr "" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "" + +#: admin.php:600 admin.php:625 admin.php:626 +msgid "You have made changes to your settings, and not saved." +msgstr "" + +#: addons/onedrive.php:989 +msgid "N.B. %s is not case-sensitive." +msgstr "" + +#: addons/onedrive.php:977 +msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here." +msgstr "若之後 OneDrive 顯示" + +#: addons/azure.php:502 addons/migrator.php:1747 addons/onedrive.php:961 +msgid "For longer help, including screenshots, follow this link." +msgstr "" + +#: addons/onedrive.php:961 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "在你的 OneDrive 開發者後台建立 OneDrive 憑證。" + +#: addons/onedrive.php:956 +msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked" +msgstr "若有必要,你必須在你的 OneDrive 後台(在 ”API 設定” 底下)新增以下內容到 “authorised redirect URI”" + +#: addons/onedrive.php:931 addons/onedrive.php:933 +msgid "%s authorisation failed:" +msgstr "%s 驗證失敗:" + +#: addons/onedrive.php:793 addons/onedrive.php:976 addons/onedrive.php:980 +msgid "OneDrive" +msgstr "OneDrive" + +#: addons/onedrive.php:626 +msgid "Please re-authorize the connection to your %s account." +msgstr "" + +#: methods/email.php:73 +msgid "configure it here" +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "Do remember to save your settings." +msgstr "" + +#: addons/s3-enhanced.php:438 +msgid "You are now using a IAM user account to access your bucket." +msgstr "" + +#: addons/s3-enhanced.php:342 +msgid "S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:332 +msgid "China (Beijing) (restricted)" +msgstr "中國 (北京) (受限)" + +#: addons/s3-enhanced.php:331 +msgid "South America (Sao Paulo)" +msgstr "" + +#: addons/s3-enhanced.php:330 +msgid "Asia Pacific (Tokyo)" +msgstr "" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Sydney)" +msgstr "" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Singapore)" +msgstr "" + +#: addons/s3-enhanced.php:325 +msgid "EU (Frankfurt)" +msgstr "" + +#: addons/s3-enhanced.php:324 +msgid "EU (Ireland)" +msgstr "" + +#: addons/s3-enhanced.php:323 +msgid "US Government West (restricted)" +msgstr "US Government West (restricted)" + +#: addons/s3-enhanced.php:322 +msgid "US West (N. California)" +msgstr "美國西岸 (加州北部)" + +#: addons/s3-enhanced.php:321 +msgid "US West (Oregon)" +msgstr "" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name." +msgstr "" + +#: addons/s3-enhanced.php:379 +msgid "Create new IAM user and S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Secret Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:294 +msgid "Access Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +msgid "IAM operation failed (%s)" +msgstr "" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "" + +#: addons/s3-enhanced.php:171 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "" + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "" + +#: addons/s3-enhanced.php:71 +msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)" +msgstr "" + +#: methods/s3.php:840 +msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on." +msgstr "" + +#: admin.php:478 +msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin." +msgstr "" + +#: admin.php:476 +msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time." +msgstr "" + +#: restorer.php:2206 +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "" + +#: addons/onedrive.php:596 addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "" + +#: addons/onedrive.php:619 methods/updraftvault.php:553 +#: udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "" + +#: admin.php:480 +msgid "Premium WooCommerce plugins" +msgstr "" + +#: admin.php:480 +msgid "Free two-factor security plugin" +msgstr "" + +#: admin.php:480 +msgid "More Quality Plugins" +msgstr "" + +#: admin.php:478 +msgid "Go to the shop." +msgstr "" + +#: admin.php:478 +msgid "Compare with the free version" +msgstr "" + +#: admin.php:478 +msgid "UpdraftPlus Premium" +msgstr "" + +#: admin.php:476 +msgid "Follow this link to sign up." +msgstr "" + +#: admin.php:476 +msgid "Free Newsletter" +msgstr "" + +#: admin.php:471 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "" + +#: admin.php:469 admin.php:483 +msgid "Dismiss (for %s months)" +msgstr "" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "" + +#: admin.php:3667 +msgid "No backup has been completed" +msgstr "" + +#: admin.php:2701 +msgid "The first step is to de-install the free version." +msgstr "" + +#: admin.php:2701 +msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase." +msgstr "" + +#: admin.php:2308 +msgid "Newsletter sign-up" +msgstr "" + +#: class-updraftplus.php:3693 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "" + +#: admin.php:2831 +msgid "Personal support" +msgstr "個人化支援" + +#: admin.php:2826 +msgid "Lock settings access" +msgstr "" + +#: admin.php:2821 +msgid "Network/Multisite support" +msgstr "" + +#: admin.php:2816 +msgid "Fix backup time" +msgstr "" + +#: admin.php:2811 +msgid "Scheduled backups" +msgstr "排程備份" + +#: admin.php:2801 +msgid "Restore backups from other plugins" +msgstr "從其他插件還原備份" + +#: admin.php:2796 +msgid "Database encryption" +msgstr "資料庫加密" + +#: admin.php:2791 +msgid "Send backups to multiple remote destinations" +msgstr "傳送備份至多個遠端位置" + +#: admin.php:2786 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "當升級 WordPress / 插件 / 主題時自動進行備份" + +#: admin.php:2781 +msgid "Advanced reporting features" +msgstr "進階報告功能" + +#: admin.php:2776 +msgid "Basic email reporting" +msgstr "基本郵件報告" + +#: admin.php:2771 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "轉移 / 複製網站" + +#: admin.php:2766 +msgid "Backup extra files and databases" +msgstr "備份額外的檔案和資料庫" + +#: admin.php:2751 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "WebDAV, Copy.Com, SFTP/SCP, 已加密的 FTP" + +#: admin.php:2746 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "Dropbox, Google 雲端硬碟, FTP, S3, Rackspace, 電郵" + +#: admin.php:2741 +msgid "Backup to remote storage" +msgstr "" + +#: admin.php:2736 +msgid "Restore from backup" +msgstr "" + +#: admin.php:2731 +msgid "Translated into over %s languages" +msgstr "" + +#: admin.php:2726 +msgid "Backup WordPress files and database" +msgstr "" + +#: admin.php:2722 +msgid "Buy It Now!" +msgstr "" + +#: admin.php:2718 +msgid "Get it from" +msgstr "" + +#: admin.php:2706 +msgid "Ask a pre-sales question" +msgstr "詢問售前問題" + +#: admin.php:2705 +msgid "Pre-sales FAQs" +msgstr "售前常見問答集" + +#: admin.php:2704 +msgid "Full feature list" +msgstr "完整功能清單" + +#: admin.php:2703 +msgid "Get UpdraftPlus Premium" +msgstr "取得 UpdraftPlus Premium" + +#: admin.php:2701 +msgid "You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "" + +#: addons/autobackup.php:994 +msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "" + +#: methods/s3.php:136 methods/s3.php:137 methods/s3.php:138 methods/s3.php:146 +#: methods/s3.php:147 methods/s3.php:148 +msgid "%s Error: Failed to initialise" +msgstr "" + +#: admin.php:3909 +msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:3049 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:594 +msgid "You did not select any components to restore. Please select at least one, and then try again." +msgstr "" + +#: addons/sftp.php:379 +msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated." +msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted." +msgstr "" + +#: addons/sftp.php:342 +msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file." +msgstr "" + +#: methods/openstack2.php:152 +msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported." +msgstr "這需要使用 v2 (Keystone) 認證方式; 現時未有支援 v1 (Swauth) 認證方式" + +#: admin.php:3961 +msgid "your site's admin address" +msgstr "" + +#: admin.php:3961 +msgid "Check this box to have a basic report sent to" +msgstr "勾選此選項,每次工作完成後將會把簡述報告寄送給你" + +#: admin.php:3676 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "手動" + +#: restorer.php:2080 +msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "發生錯誤 (%s):" + +#: addons/lockadmin.php:168 +msgid "Change Lock Settings" +msgstr "變更鎖定設定" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "" + +#: admin.php:2486 +msgid "For even more features and personal support, check out " +msgstr "如果需要更多功能和個人支援, 留意這裡" + +#: restorer.php:2086 +msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue" +msgstr "建立資料表失敗 - 或許因為沒有權限刪除已經存在的資料表; 操作將會繼續" + +#: restorer.php:1222 +msgid "Clearing cached pages (%s)..." +msgstr "清理已快取的頁面 (%s)" + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "資料庫解鎖碼" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:599 +msgid "Automatic backup before update" +msgstr "升級前自動備份" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "WordPress 核心 (僅)" + +#: addons/lockadmin.php:217 +msgid "For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "如果需要解鎖的支援, 請聯絡 UpdraftPlus 管理者" + +#: addons/lockadmin.php:210 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "請輸入解鎖密碼以存取 UpdraftPlus 設定" + +#: addons/lockadmin.php:207 +msgid "Password incorrect" +msgstr "密碼錯誤" + +#: addons/lockadmin.php:195 addons/lockadmin.php:201 +msgid "Unlock" +msgstr "解除鎖定" + +#: addons/lockadmin.php:166 +msgid "Otherwise, the default link will be shown." +msgstr "否則, 將會顯示預設連結" + +#: addons/lockadmin.php:166 +msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address." +msgstr "任何人觀看鎖定頁面時會顯示支援網址 - 輸入網站地址或電子郵件地址" + +#: addons/lockadmin.php:166 +msgid "Support URL" +msgstr "支援網址" + +#: addons/lockadmin.php:164 +msgid "Require password again after" +msgstr "再次要求提供密碼的間隔" + +#: addons/lockadmin.php:155 addons/lockadmin.php:156 +msgid "%s weeks" +msgstr "%s 星期" + +#: addons/lockadmin.php:154 +msgid "1 week" +msgstr "1 星期" + +#: addons/lockadmin.php:152 addons/lockadmin.php:153 +msgid "%s hours" +msgstr "%s 小時" + +#: addons/lockadmin.php:151 +msgid "1 hour" +msgstr "1 小時" + +#: addons/lockadmin.php:140 +msgid "Please make sure that you have made a note of the password!" +msgstr "" + +#: addons/lockadmin.php:133 templates/wp-admin/advanced/lock-admin.php:7 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "" + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "設定已儲存" + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "已變更管理員密碼" + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "已設定管理員密碼" + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "已移除管理員密碼" + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "(了解更多關於這個重要的選項)" + +#: udaddons/options.php:273 +msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates." +msgstr "" + +#: admin.php:3258 admin.php:4661 +msgid "View Log" +msgstr "檢視記錄" + +#: admin.php:4369 +msgid "Backup data (click to download)" +msgstr "備份資料 (點擊下載)" + +#: admin.php:4368 +msgid "Backup date" +msgstr "備份時間" + +#: admin.php:3741 admin.php:3780 +msgid "and retain this many scheduled backups" +msgstr "和保留這個數量的排程備份" + +#: admin.php:3637 +msgid "incremental backup; base backup: %s" +msgstr "增量備份; 基層備份: %s" + +#: templates/wp-admin/advanced/lock-admin.php:9 +msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium." +msgstr "" + +#: admin.php:3038 +msgid "Upload files into UpdraftPlus." +msgstr "" + +#: admin.php:851 admin.php:2578 central/modules/updraftplus.php:330 +msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)." +msgstr "未能進行 \"立即備份\", 這可能是由於備份目錄為不可寫入狀態 (請前往 \"設定\" 頁檢視及修改相關的選項)" + +#: class-updraftplus.php:3869 +msgid "Backup label:" +msgstr "備份標籤:" + +#: admin.php:1990 +msgid "Error: unexpected file read fail" +msgstr "未預期的檔案讀取失敗" + +#: backup.php:2958 +msgid "check your log for more details." +msgstr "檢視記錄以獲取更多資訊" + +#: backup.php:2956 +msgid "your web hosting account appears to be full; please see: %s" +msgstr "" + +#: backup.php:2954 +msgid "A zip error occurred" +msgstr "發生 zip 錯誤" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "此備份的標籤 (可選)" + +#: addons/googlecloud.php:822 methods/googledrive.php:916 +msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage." +msgstr "" + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com." +msgstr "你的電郵地址是有效的, 但密碼未能在 UpdraftPlus.Com 驗證" + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "你需要提供電子郵件和密碼" + +#: admin.php:2645 +msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity." +msgstr "進行備份,按 \"立即備份\"。然後,在 \"最近記錄訊息\" 檢視活動情況。" + +#: class-updraftplus.php:3888 +msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite." +msgstr "" + +#: class-updraftplus.php:3888 +msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible." +msgstr "" + +#: addons/migrator.php:1053 +msgid "already done" +msgstr "已經完成" + +#: addons/migrator.php:1010 +msgid "skipped (not in list)" +msgstr "略過 (未有在列表上)" + +#: addons/migrator.php:1010 addons/migrator.php:1053 addons/migrator.php:1195 +msgid "Search and replacing table:" +msgstr "搜尋和取代資料表:" + +#: addons/migrator.php:304 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "輸入以逗號分間的清單; 或者, 留空以選取所有資料表" + +#: addons/migrator.php:304 +msgid "These tables only" +msgstr "只有這些資料表" + +#: addons/migrator.php:303 +msgid "Rows per batch" +msgstr "每次的行數" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "你仍未連結到 UpdraftPlus.Com 帳號" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "Any support requests to do with %s should be raised with your web hosting company." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "This is significantly newer than the server which you are now restoring onto (version %s)." +msgstr "" + +#: class-updraftplus.php:3861 +msgid "The site in this backup was running on a webserver with version %s of %s. " +msgstr "" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "LinkedIn" +msgstr "LinkedIn" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Google+" +msgstr "Google+" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Facebook" +msgstr "Facebook" + +#: admin.php:2306 class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "Twitter" +msgstr "Twitter" + +#: class-updraftplus.php:3684 class-updraftplus.php:3713 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "UpdraftPlus 已成立社交平台 - 按此關注:" + +#: admin.php:4722 +msgid "Why am I seeing this?" +msgstr "為甚麼我會見到這個?" + +#: admin.php:3025 +msgid "The location of this directory is set in the expert settings, in the Settings tab." +msgstr "" + +#: admin.php:3025 +msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded." +msgstr "" + +#: admin.php:1938 admin.php:1950 +msgid "Start backup" +msgstr "" + +#: class-updraftplus.php:3833 restorer.php:985 +msgid "You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "" + +#: admin.php:3581 +msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory." +msgstr "" + +#: templates/wp-admin/advanced/advanced-tools.php:6 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "除非你遇到問題, 否則你可以略過這些內容" + +#: admin.php:2147 +msgid "This file could not be uploaded" +msgstr "" + +#: admin.php:2112 +msgid "You will find more information about this in the Settings section." +msgstr "" + +#: addons/importer.php:70 +msgid "Supported backup plugins: %s" +msgstr "" + +#: addons/importer.php:70 +msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link." +msgstr "" + +#: admin.php:3757 +msgid "Tell me more about incremental backups" +msgstr "更多有關增量備份" + +#: templates/wp-admin/advanced/site-info.php:40 +msgid "Memory limit" +msgstr "記憶體限額" + +#: class-updraftplus.php:3975 restorer.php:1430 +msgid "restoration" +msgstr "" + +#: restorer.php:2031 +msgid "Table to be implicitly dropped: %s" +msgstr "" + +#: backup.php:829 +msgid "Incremental" +msgstr "增量" + +#: backup.php:829 +msgid "Full backup" +msgstr "完整備份" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "正在進行及更新" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "(查看紀錄...)" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "備份已完成" + +#: admin.php:3677 admin.php:3678 admin.php:3679 updraftplus.php:92 +#: updraftplus.php:93 +msgid "Every %s hours" +msgstr "每 %s 小時" + +#: addons/migrator.php:768 addons/migrator.php:770 +msgid "search and replace" +msgstr "搜尋及取代" + +#: addons/migrator.php:306 +msgid "Go" +msgstr "執行" + +#: addons/migrator.php:295 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "搜尋/取代功能不能復原 - 你確定要這樣做嗎?" + +#: addons/migrator.php:294 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "這樣很容易會破壞你的網站; 所以請小心使用!" + +#: addons/migrator.php:269 addons/migrator.php:302 +msgid "Replace with" +msgstr "取代為" + +#: addons/migrator.php:268 addons/migrator.php:301 +msgid "Search for" +msgstr "搜尋項目" + +#: addons/migrator.php:267 addons/migrator.php:293 +#: templates/wp-admin/advanced/search-replace.php:7 +#: templates/wp-admin/advanced/tools-menu.php:18 +msgid "Search / replace database" +msgstr "搜尋 / 取代 資料庫" + +#: addons/migrator.php:273 +msgid "search term" +msgstr "搜尋字詞" + +#: restorer.php:2108 +msgid "Too many database errors have occurred - aborting" +msgstr "發生過多的資料庫錯誤 - 中斷中" + +#: backup.php:895 +msgid "read more at %s" +msgstr "在 %s 閱覽更多" + +#: backup.php:895 +msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news" +msgstr "UpdraftPlus (免費版本) 製作的電郵報告將會提供最近 UpdraftPlus.com 的消息" + +#: methods/googledrive.php:922 +msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site." +msgstr "" + +#: admin.php:4355 +msgid "You have not yet made any backups." +msgstr "你未有任何已製作的備份" + +#: admin.php:3872 +msgid "Database Options" +msgstr "資料庫選項" + +#: templates/wp-admin/advanced/site-info.php:68 +msgid "Plugins for debugging:" +msgstr "除錯的插件" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "%s (%s used)" +msgstr "%s (%s 已使用)" + +#: templates/wp-admin/advanced/site-info.php:65 +msgid "Free disk space in account:" +msgstr "可用磁碟空間:" + +#: admin.php:2582 admin.php:5234 +msgid "This button is disabled because your backup directory is not writable (see the settings)." +msgstr "按鍵已停用, 因為你的備份資料夾未能寫入檔案 (請檢查設定)。" + +#: admin.php:418 admin.php:1516 admin.php:1804 admin.php:2544 admin.php:3008 +msgid "Existing Backups" +msgstr "備份存儲" + +#: admin.php:410 admin.php:2543 +msgid "Current Status" +msgstr "目前狀態" + +#: admin.php:856 +msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab." +msgstr "" + +#: admin.php:856 +msgid "To make a backup, just press the Backup Now button." +msgstr "製作備份, 只需按一下 \"立即備份\"。" + +#: admin.php:856 +msgid "Welcome to UpdraftPlus!" +msgstr "歡迎使用 UpdraftPlus!" + +#: addons/moredatabase.php:338 +msgid "If you enter text here, it is used to encrypt database backups (Rijndael). Do make a separate record of it and do not lose it, or all your backups will be useless. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)." +msgstr "" + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "測試中..." + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "測試連接..." + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "資料表前綴" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "備份外部資料庫" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "新增一個外部資料庫進行備份......" + +#: addons/moredatabase.php:154 +msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up." +msgstr "" + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "備份在 WordPress 同一資料庫內的非 WordPress 資料表" + +#: addons/moredatabase.php:153 +msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up." +msgstr "" + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "連結失敗" + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "連接成功。" + +#: addons/moredatabase.php:118 +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "總計已找到 %s 資料表; %s 個標明前綴的資料表" + +#: addons/moredatabase.php:112 +msgid "%s table(s) found." +msgstr "找到 %s 資料表。" + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "資料庫名稱" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "伺服器" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "使用者" + +#: class-updraftplus.php:1383 +msgid "External database (%s)" +msgstr "外部資料庫 (%s)" + +#: methods/googledrive.php:922 +msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section." +msgstr "" + +#: methods/googledrive.php:386 +msgid "failed to access parent folder" +msgstr "未能存取父層資料夾" + +#: addons/googlecloud.php:559 addons/onedrive.php:761 addons/onedrive.php:772 +#: methods/googledrive.php:343 +msgid "However, subsequent access attempts failed:" +msgstr "" + +#: admin.php:4499 +msgid "External database" +msgstr "外部資料庫" + +#: admin.php:3995 +msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these." +msgstr "" + +#: admin.php:3935 +msgid "Back up more databases" +msgstr "備份更多資料庫" + +#: admin.php:3911 +msgid "First, enter the decryption key" +msgstr "首先請輸入解密金鑰" + +#: admin.php:3893 +msgid "You can manually decrypt an encrypted database here." +msgstr "你可以在這裡把已加密的資料庫解密" + +#: admin.php:3881 +msgid "It can also backup external databases." +msgstr "它亦可以備份外部資料庫" + +#: admin.php:3881 +msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup." +msgstr "" + +#: admin.php:3793 +msgid "use UpdraftPlus Premium" +msgstr "使用 UpdraftPlus Premium" + +#: class-updraftplus.php:3748 +msgid "Decryption failed. The database file is encrypted." +msgstr "解密失敗。資料庫仍處於加密狀態。" + +#: admin.php:1367 +msgid "Only the WordPress database can be restored; you will need to deal with the external database manually." +msgstr "" + +#: restorer.php:1687 restorer.php:2053 restorer.php:2090 restorer.php:2103 +msgid "An error occurred on the first %s command - aborting run" +msgstr "" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled." +msgstr "" + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "" + +#: addons/migrator.php:941 +msgid "Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/google-enhanced.php:75 +msgid "In %s, path names are case sensitive." +msgstr "" + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:989 +msgid "e.g. %s" +msgstr "例如 %s" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "If the folder does not already exist, then it will be created." +msgstr "" + +#: addons/google-enhanced.php:73 addons/onedrive.php:989 +msgid "Enter the path of the %s folder you wish to use here." +msgstr "" + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "容器" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "留空將會使用預設值" + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "" + +#: methods/openstack2.php:94 +msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "" + +#: methods/addon-base.php:194 methods/addon-base.php:214 +msgid "Failed to download %s" +msgstr "無法下載 %s" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "無法下載" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "無法列出檔案" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +msgid "Failed to upload %s" +msgstr "" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "Success:" +msgstr "" + +#: addons/onedrive.php:997 methods/dropbox.php:494 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s." +msgstr "" + +#: addons/onedrive.php:995 methods/dropbox.php:491 +msgid "(You appear to be already authenticated)." +msgstr "" + +#: methods/dropbox.php:486 methods/dropbox.php:492 methods/dropbox.php:494 +msgid "Dropbox" +msgstr "" + +#: addons/onedrive.php:994 methods/dropbox.php:486 +msgid "Authenticate with %s" +msgstr "以 %s 作認證" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +msgid "Region: %s" +msgstr "" + +#: methods/openstack-base.php:471 +msgid "%s error - we accessed the container, but failed to create a file within it" +msgstr "" + +#: methods/openstack-base.php:389 +msgid "The %s object was not found" +msgstr "" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +msgid "Could not access %s container" +msgstr "未能存取 %s 容器" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +msgid "%s error - failed to access the container" +msgstr "" + +#: addons/googlecloud.php:902 addons/onedrive.php:996 methods/dropbox.php:501 +#: methods/googledrive.php:971 +msgid "Account holder's name: %s." +msgstr "" + +#: methods/googledrive.php:960 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "" + +#: methods/googledrive.php:951 +msgid "It is an ID number internal to Google Drive" +msgstr "" + +#: methods/googledrive.php:951 +msgid "This is NOT a folder name." +msgstr "" + +#: addons/google-enhanced.php:72 addons/onedrive.php:988 +#: methods/googledrive.php:947 methods/googledrive.php:957 +msgid "Folder" +msgstr "" + +#: addons/googlecloud.php:254 addons/onedrive.php:373 +#: methods/googledrive.php:879 +msgid "%s download: failed: file not found" +msgstr "" + +#: addons/googlecloud.php:579 methods/googledrive.php:363 +msgid "Name: %s." +msgstr "" + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +msgid "Your %s version: %s." +msgstr "" + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "" + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "" + +#: admin.php:5067 +msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:72 +msgid "Call" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:70 +msgid "Fetch" +msgstr "" + +#: addons/migrator.php:365 admin.php:3042 admin.php:3901 +msgid "This feature requires %s version %s or later" +msgstr "" + +#: restorer.php:2236 +msgid "Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "" + +#: restorer.php:316 +msgid "%s files have been extracted" +msgstr "" + +#: restorer.php:163 +msgid "Failed to unpack the archive" +msgstr "" + +#: class-updraftplus.php:1037 +msgid "Error - failed to download the file" +msgstr "" + +#: admin.php:3025 +msgid "Rescan local folder for new backup sets" +msgstr "重新掃描在本機資料夾的備份集" + +#: udaddons/updraftplus-addons.php:208 +msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "It has been tested up to version %s." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)." +msgstr "" + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "" + +#: addons/azure.php:510 addons/migrator.php:2208 addons/sftp.php:376 +#: admin.php:615 +msgid "Key" +msgstr "" + +#: addons/sftp.php:371 +msgid "Your login may be either password or key-based - you only need to enter one, not both." +msgstr "" + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "" + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "" + +#: admin.php:4546 +msgid "Files backup (created by %s)" +msgstr "" + +#: admin.php:4546 +msgid "Files and database WordPress backup (created by %s)" +msgstr "" + +#: addons/importer.php:261 admin.php:4540 class-updraftplus.php:2407 +msgid "Backup created by: %s." +msgstr "" + +#: admin.php:4497 +msgid "Database (created by %s)" +msgstr "" + +#: admin.php:4491 admin.php:4542 +msgid "unknown source" +msgstr "未知的來源" + +#: admin.php:3026 +msgid "Rescan remote storage" +msgstr "重新掃描遠端儲存空間" + +#: admin.php:3024 +msgid "Upload backup files" +msgstr "上傳備份檔案" + +#: admin.php:2191 +msgid "This backup was created by %s, and can be imported." +msgstr "" + +#: admin.php:885 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "" + +#: admin.php:885 +msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working." +msgstr "" + +#: admin.php:580 class-updraftplus.php:2414 +msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you." +msgstr "" + +#: admin.php:579 +msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern." +msgstr "" + +#: admin.php:579 admin.php:580 class-updraftplus.php:2414 +msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))." +msgstr "" + +#: admin.php:1380 admin.php:4543 restorer.php:1399 +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "" + +#: restorer.php:809 restorer.php:857 +msgid "The WordPress content folder (wp-content) was not found in this zip file." +msgstr "" + +#: restorer.php:673 +msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup" +msgstr "" + +#: methods/dropbox.php:296 +msgid "%s returned an unexpected HTTP response: %s" +msgstr "" + +#: addons/sftp.php:885 +msgid "The UpdraftPlus module for this file access method (%s) does not support listing files" +msgstr "" + +#: methods/cloudfiles.php:234 methods/dropbox.php:277 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "未找到任何設定" + +#: class-updraftplus.php:2535 +msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually." +msgstr "" + +#: admin.php:548 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "重新掃描遠端和本地空間的備份集..." + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "" + +#: addons/migrator.php:742 +msgid "Adjusting multisite paths" +msgstr "" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "" + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "" + +#: methods/s3.php:812 +msgid "Other %s FAQs." +msgstr "" + +#: admin.php:3995 +msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong." +msgstr "" + +#: addons/morefiles.php:262 admin.php:4133 +msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard." +msgstr "" + +#: restorer.php:2225 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1430 +msgid "Your hosting company must enable these functions before %s can work." +msgstr "" + +#: class-updraftplus.php:3975 methods/ftp.php:284 restorer.php:1429 +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "" + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "" + +#: restorer.php:1591 +msgid "Backup created by:" +msgstr "" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "" + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:221 +msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:217 +msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired." +msgstr "" + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:215 +msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus." +msgstr "" + +#: udaddons/updraftplus-addons.php:180 +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "" + +#: class-updraftplus.php:4025 +msgid "The attempt to undo the double-compression succeeded." +msgstr "" + +#: class-updraftplus.php:4002 class-updraftplus.php:4023 +msgid "The attempt to undo the double-compression failed." +msgstr "" + +#: class-updraftplus.php:3995 +msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver." +msgstr "" + +#: admin.php:1528 +msgid "Constants" +msgstr "" + +#: backup.php:1574 +msgid "Failed to open database file for reading:" +msgstr "" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "" + +#: addons/reporting.php:185 +msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed." +msgstr "" + +#: restorer.php:2119 +msgid "Database queries processed: %d in %.2f seconds" +msgstr "" + +#: addons/migrator.php:1248 +msgid "Searching and replacing reached row: %d" +msgstr "" + +#: addons/migrator.php:665 +msgid "Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "" + +#: addons/onedrive.php:97 methods/dropbox.php:191 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "" + +#: admin.php:4742 +msgid "Follow this link to download the log file for this restoration (needed for any support requests)." +msgstr "" + +#: admin.php:4039 +msgid "See this FAQ also." +msgstr "" + +#: admin.php:3841 +msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event." +msgstr "" + +#: admin.php:3116 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "" + +#: admin.php:1351 +msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)." +msgstr "" + +#: restorer.php:664 +msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "" + +#: admin.php:860 class-updraftplus.php:586 +msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "" + +#: addons/migrator.php:673 +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "" + +#: addons/migrator.php:258 +msgid "%s: Skipping cache file (does not already exist)" +msgstr "" + +#: addons/migrator.php:245 +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "" + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company." +msgstr "" + +#: admin.php:5075 +msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme" +msgstr "" + +#: admin.php:2384 admin.php:2394 +msgid "Restore failed..." +msgstr "" + +#: addons/moredatabase.php:125 admin.php:1601 +msgid "Messages:" +msgstr "" + +#: restorer.php:1955 +msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s" +msgstr "" + +#: restorer.php:444 +msgid "The directory does not exist" +msgstr "" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "" + +#: addons/cloudfiles-enhanced.php:246 +msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name." +msgstr "" + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 +msgid "API Key: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 +msgid "Password: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +msgid "Username: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +msgid "Cloud Files operation failed (%s)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:54 +msgid "Create a new API user with access to only this container (rather than your whole account)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "" + +#: methods/cloudfiles-new.php:122 +msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on." +msgstr "" + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "" + +#: methods/cloudfiles-new.php:87 +msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based" +msgstr "" + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts." +msgstr "" + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "嘗試連接 UpdraftPlus.Com 時, 出現未知的錯誤" + +#: admin.php:593 central/bootstrap.php:513 +msgid "Create" +msgstr "建立" + +#: admin.php:556 +msgid "Trying..." +msgstr "正在嘗試..." + +#: admin.php:555 +msgid "The new user's RackSpace console password is (this will not be shown again):" +msgstr "" + +#: class-updraftplus.php:1395 +msgid "(when decrypted)" +msgstr "" + +#: admin.php:566 admin.php:5017 +msgid "Error data:" +msgstr "錯誤資訊:" + +#: admin.php:4693 +msgid "Backup does not exist in the backup history" +msgstr "" + +#: admin.php:3202 +msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked." +msgstr "" + +#: restorer.php:1659 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "" + +#: restorer.php:1538 +msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)" +msgstr "" + +#: restorer.php:1357 +msgid "New table prefix: %s" +msgstr "" + +#: restorer.php:1045 +msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted." +msgstr "" + +#: restorer.php:1015 restorer.php:1029 +msgid "%s: This directory already exists, and will be replaced" +msgstr "" + +#: restorer.php:160 +msgid "Could not move the files into place. Check your file permissions." +msgstr "" + +#: restorer.php:159 +msgid "Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "" + +#: restorer.php:157 +msgid "Could not move old files out of the way." +msgstr "" + +#: restorer.php:153 +msgid "Moving old data out of the way..." +msgstr "" + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "增加另一個地址..." + +#: addons/reporting.php:380 +msgid "Enter addresses here to have a report sent to them when a backup job finishes." +msgstr "" + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "電郵報告" + +#: class-updraftplus.php:1391 class-updraftplus.php:1396 +msgid "%s checksum: %s" +msgstr "%s 校驗碼: %s" + +#: class-updraftplus.php:1364 class-updraftplus.php:1366 +msgid "files: %s" +msgstr "檔案: %s" + +#: addons/reporting.php:319 +msgid "Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "" + +#: addons/reporting.php:289 +msgid " (with warnings (%s))" +msgstr " (及警告 (%s))" + +#: addons/reporting.php:287 +msgid " (with errors (%s))" +msgstr " (及錯誤 (%s))" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "除錯資訊" + +#: addons/reporting.php:190 admin.php:4318 +msgid "Uploaded to:" +msgstr "已上傳至:" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "所需時間:" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "警告" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "錯誤" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "錯誤/警告:" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "包含:" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "備份開始:" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "備份報告" + +#: addons/reporting.php:137 +msgid "%d hours, %d minutes, %d seconds" +msgstr "%d 小時, %d 分鐘, %d 秒" + +#: addons/reporting.php:123 +msgid "%d errors, %d warnings" +msgstr "%d 錯誤, %d 警告" + +#: addons/onedrive.php:717 methods/dropbox.php:577 +msgid "%s authentication" +msgstr "%s 認證" + +#: addons/onedrive.php:717 class-updraftplus.php:308 methods/dropbox.php:550 +#: methods/dropbox.php:577 methods/dropbox.php:590 methods/dropbox.php:717 +msgid "%s error: %s" +msgstr "%s 錯誤: %s" + +#: addons/googlecloud.php:815 methods/dropbox.php:461 +msgid "%s logo" +msgstr "%s 圖示" + +#: methods/dropbox.php:210 +msgid "%s did not return the expected response - check your log file for more details" +msgstr "%s 未有返回一個預期的回應 - 請檢查紀錄檔以取得更多資料" + +#: methods/s3.php:277 +msgid "The required %s PHP module is not installed - ask your web hosting company to enable it" +msgstr "未有安裝必需的 PHP 組件 - 請向你的網頁寄存公司查詢以開啟此功能" + +#: methods/email.php:74 +msgid "For more options, use the \"%s\" add-on." +msgstr "更多的設定選項, 請使用 \"%s\" 擴充組件" + +#: methods/email.php:73 +msgid "Your site's admin email address (%s) will be used." +msgstr "將會使用網站的管理員電郵 (%s)" + +#: admin.php:602 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "連接" + +#: admin.php:3963 +msgid "For more reporting features, use the Reporting add-on." +msgstr "需要更多報告功能, 請使用報告擴充套件" + +#: class-updraftplus.php:3821 +msgid "(version: %s)" +msgstr "(版本: %s)" + +#: addons/reporting.php:427 admin.php:546 +msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive." +msgstr "" + +#: addons/reporting.php:427 admin.php:545 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "最近狀態:" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "" + +#: backup.php:886 +msgid "Backed up: %s" +msgstr "已備份: %s" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "紀錄檔已附件在這封電郵內。" + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "未知或未預期的錯誤 - 請尋求我們的支援" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "只限檔案 (排程不包括資料庫)" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "" + +#: admin.php:229 backup.php:836 +msgid "Files and database" +msgstr "" + +#: options.php:185 +msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)." +msgstr "" + +#: options.php:185 +msgid "Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network." +msgstr "" + +#: options.php:185 +msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on." +msgstr "" + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "" + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "" + +#: udaddons/options.php:488 +msgid "(or connect using the form on this page if you have already purchased it)" +msgstr "" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "" + +#: udaddons/options.php:459 +msgid "Your version: %s" +msgstr "" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "" + +#: udaddons/options.php:381 +msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it." +msgstr "" + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "" + +#: udaddons/options.php:94 +msgid "An update is available for UpdraftPlus - please follow this link to get it." +msgstr "" + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "" + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "" + +#: admin.php:3944 methods/email.php:74 +msgid "Reporting" +msgstr "報告" + +#: admin.php:1499 +msgid "Options (raw)" +msgstr "" + +#: addons/reporting.php:425 admin.php:544 +msgid "Send a report only when there are warnings/errors" +msgstr "" + +#: restorer.php:1602 +msgid "Content URL:" +msgstr "" + +#: restorer.php:157 +msgid "You should check the file ownerships and permissions in your WordPress installation" +msgstr "" + +#: admin.php:3867 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "" + +#: backup.php:2945 class-updraftplus.php:599 +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "" + +#: class-updraftplus.php:583 +msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)" +msgstr "" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "嘗試抓取擴充組件時出現錯誤" + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "" + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "" + +#: udaddons/options.php:281 +msgid "You are presently not connected to an UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:272 +msgid "If you bought new add-ons, then follow this link to refresh your connection" +msgstr "" + +#: udaddons/options.php:271 +msgid "You are presently connected to an UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:242 +msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here." +msgstr "" + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "" + +#: udaddons/options.php:114 +msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?" +msgstr "" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "" + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "" + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "" + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "" + +#: udaddons/options.php:100 +msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Your web-server does not have the %s module installed." +msgstr "" + +#: addons/googlecloud.php:898 methods/googledrive.php:967 +msgid "(You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem)." +msgstr "" + +#: admin.php:3048 +msgid "Drop backup files here" +msgstr "" + +#: class-updraftplus.php:3687 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "用命令行管理 WordPress - 大幅節省時間" + +#: class-updraftplus.php:3687 +msgid "Check out WordShell" +msgstr "來看看 WordShell" + +#: class-updraftplus.php:3677 +msgid "Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "" + +#: admin.php:554 +msgid "The web server returned an error code (try again, or check your web server logs)" +msgstr "" + +#: admin.php:552 +msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished." +msgstr "" + +#: admin.php:550 +msgid "If you exclude both the database and the files, then you have excluded everything!" +msgstr "" + +#: restorer.php:1596 +msgid "Site home:" +msgstr "網站主目錄:" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "" + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "Remember this choice for next time (you will still have the chance to change it)" +msgstr "" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "上傳失敗" + +#: admin.php:3833 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "" + +#: admin.php:3420 +msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal." +msgstr "" + +#: admin.php:3318 +msgid "(%s%%, file %s of %s)" +msgstr "" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:137 +msgid "Read more about how this works..." +msgstr "" + +#: addons/sftp.php:485 +msgid "Failed: We were able to log in, but failed to successfully create a file in that location." +msgstr "" + +#: addons/sftp.php:483 +msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location." +msgstr "" + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "" + +#: methods/email.php:58 +msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)" +msgstr "" + +#: methods/email.php:45 +msgid "Backup is of: %s." +msgstr "" + +#: admin.php:640 +msgid "%s settings test result:" +msgstr "" + +#: admin.php:4611 admin.php:4613 +msgid "(Not finished)" +msgstr "" + +#: admin.php:4613 +msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes." +msgstr "" + +#: admin.php:4022 +msgid "Do not place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)." +msgstr "" + +#: admin.php:4022 +msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)." +msgstr "" + +#: admin.php:3415 +msgid "Job ID: %s" +msgstr "工作 ID: %s" + +#: admin.php:3400 +msgid "last activity: %ss ago" +msgstr "最近活動: %ss 之前" + +#: admin.php:3399 +msgid "next resumption: %d (after %ss)" +msgstr "" + +#: admin.php:3382 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "未知" + +#: admin.php:3332 +msgid "Backup finished" +msgstr "復份已完成" + +#: admin.php:3327 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "" + +#: admin.php:3323 +msgid "Pruning old backup sets" +msgstr "" + +#: admin.php:3311 +msgid "Uploading files to remote storage" +msgstr "" + +#: admin.php:3380 +msgid "Encrypted database" +msgstr "" + +#: admin.php:3372 +msgid "Encrypting database" +msgstr "" + +#: admin.php:3346 +msgid "Created database backup" +msgstr "" + +#: admin.php:3359 +msgid "table: %s" +msgstr "" + +#: admin.php:3357 +msgid "Creating database backup" +msgstr "" + +#: admin.php:3305 +msgid "Created file backup zips" +msgstr "" + +#: admin.php:3292 +msgid "Creating file backup zips" +msgstr "" + +#: admin.php:3287 +msgid "Backup begun" +msgstr "" + +#: admin.php:2934 +msgid "Backups in progress:" +msgstr "" + +#: admin.php:864 +msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even "Backup Now") unless either you have set up a facility to call the scheduler manually, or until it is enabled." +msgstr "" + +#: restorer.php:646 +msgid "file" +msgstr "" + +#: restorer.php:639 +msgid "folder" +msgstr "" + +#: restorer.php:639 restorer.php:646 +msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)" +msgstr "" + +#: class-updraftplus.php:2632 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "" + +#: class-updraftplus.php:1636 +msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:" +msgstr "" + +#: addons/googlecloud.php:337 addons/onedrive.php:880 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:115 +#: methods/googledrive.php:244 +msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)." +msgstr "" + +#: admin.php:2510 +msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)." +msgstr "" + +#: addons/autobackup.php:1009 admin.php:595 +msgid "Proceed with update" +msgstr "" + +#: addons/autobackup.php:1008 +msgid "Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "" + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "自動備份" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "" + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "主題" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "外掛" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "" + +#: addons/autobackup.php:292 +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:250 +msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating" +msgstr "" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation." +msgstr "" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "This does not look like a valid WordPress core backup - the file %s was missing." +msgstr "" + +#: addons/morefiles.php:116 +msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "" + +#: addons/morefiles.php:106 +msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "" + +#: admin.php:2310 +msgid "More plugins" +msgstr "更多插件" + +#: admin.php:2307 admin.php:2706 +msgid "Support" +msgstr "支援" + +#: class-updraftplus.php:3962 +msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup." +msgstr "" + +#: class-updraftplus.php:3957 +msgid "This database backup is missing core WordPress tables: %s" +msgstr "" + +#: class-updraftplus.php:3854 +msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this." +msgstr "" + +#: class-updraftplus.php:3770 +msgid "The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "" + +#: addons/autobackup.php:562 admin.php:828 +msgid "Update Theme" +msgstr "" + +#: addons/autobackup.php:511 admin.php:824 +msgid "Update Plugin" +msgstr "" + +#: admin.php:688 +msgid "Be safe every time, without needing to remember - follow this link to learn more" +msgstr "" + +#: admin.php:688 +msgid "UpdraftPlus Premium can automatically take a backup of your plugins or themes and database before you update." +msgstr "" + +#: addons/autobackup.php:988 admin.php:671 admin.php:838 +msgid "Be safe with an automatic backup" +msgstr "" + +#: admin.php:670 admin.php:837 +msgid "Dismiss (for %s weeks)" +msgstr "" + +#: restorer.php:2204 +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "" + +#: admin.php:2466 +msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site." +msgstr "" + +#: admin.php:589 +msgid "The file was uploaded." +msgstr "" + +#: admin.php:588 +msgid "Unknown server response status:" +msgstr "" + +#: admin.php:587 +msgid "Unknown server response:" +msgstr "" + +#: admin.php:586 +msgid "This decryption key will be attempted:" +msgstr "" + +#: admin.php:585 +msgid "Follow this link to attempt decryption and download the database file to your computer." +msgstr "" + +#: admin.php:584 +msgid "Upload error" +msgstr "" + +#: admin.php:583 +msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)." +msgstr "" + +#: admin.php:582 +msgid "Upload error:" +msgstr "" + +#: admin.php:581 +msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)" +msgstr "" + +#: admin.php:573 +msgid "and then, if you wish," +msgstr "" + +#: admin.php:572 +msgid "Download to your computer" +msgstr "" + +#: admin.php:571 +msgid "Delete from your web server" +msgstr "" + +#: methods/s3.php:772 +msgid "Examples of S3-compatible storage providers:" +msgstr "" + +#: admin.php:4967 +msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup" +msgstr "" + +#: admin.php:4580 +msgid "You appear to be missing one or more archives from this multi-archive set." +msgstr "" + +#: admin.php:4577 +msgid "(%d archive(s) in set)." +msgstr "" + +#: admin.php:3999 +msgid "Split archives every:" +msgstr "" + +#: addons/moredatabase.php:269 +msgid "Error: the server sent us a response (JSON) which we did not understand." +msgstr "" + +#: admin.php:563 +msgid "Warnings:" +msgstr "" + +#: admin.php:562 +msgid "Error: the server sent an empty response." +msgstr "" + +#: admin.php:2202 +msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "" + +#: admin.php:1432 +msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying." +msgstr "" + +#: admin.php:1430 +msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first." +msgstr "" + +#: admin.php:1428 +msgid "The backup archive files have been successfully processed. Now press Restore again to proceed." +msgstr "" + +#: admin.php:1423 +msgid "This multi-archive backup set appears to have the following archives missing: %s" +msgstr "" + +#: admin.php:1408 +msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt." +msgstr "" + +#: admin.php:1403 +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "" + +#: admin.php:1401 +msgid "File not found (you need to upload it): %s" +msgstr "" + +#: admin.php:1332 +msgid "No such backup set exists" +msgstr "" + +#: admin.php:1112 +msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder" +msgstr "" + +#: restorer.php:588 +msgid "Failed to move directory (check your file permissions and disk quota): %s" +msgstr "" + +#: restorer.php:579 +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "" + +#: restorer.php:154 +msgid "Moving unpacked backup into place..." +msgstr "" + +#: backup.php:2649 backup.php:2905 +msgid "Failed to open the zip file (%s) - %s" +msgstr "" + +#: addons/morefiles.php:94 +msgid "WordPress root directory server path: %s" +msgstr "" + +#: methods/s3.php:817 +msgid "%s end-point" +msgstr "" + +#: methods/s3.php:779 +msgid "... and many more!" +msgstr "" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "" + +#: admin.php:4888 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "" + +#: admin.php:4875 +msgid "Looking for %s archive: file name: %s" +msgstr "" + +#: admin.php:4836 +msgid "Final checks" +msgstr "" + +#: admin.php:4005 +msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)." +msgstr "" + +#: admin.php:3908 +msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption" +msgstr "" + +#: admin.php:4122 +msgid "Your wp-content directory server path: %s" +msgstr "" + +#: admin.php:578 +msgid "Raw backup history" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:76 +msgid "Show raw backup and file list" +msgstr "" + +#: admin.php:561 +msgid "Processing files - please wait..." +msgstr "" + +#: admin.php:3015 admin.php:5019 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "" + +#: admin.php:3015 +msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here." +msgstr "" + +#: class-updraftplus.php:3778 +msgid "Failed to open database file." +msgstr "" + +#: class-updraftplus.php:3758 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "" + +#: admin.php:1471 +msgid "Known backups (raw)" +msgstr "" + +#: restorer.php:944 +msgid "Unable to enumerate files in that directory." +msgstr "" + +#: restorer.php:939 +msgid "Files found:" +msgstr "" + +#: restorer.php:1329 +msgid "Using directory from backup: %s" +msgstr "" + +#: restorer.php:1789 +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "" + +#: addons/migrator.php:315 +msgid "This looks like a migration (the backup is from a site with a different address/URL), but you did not check the option to search-and-replace the database. That is usually a mistake." +msgstr "" + +#: admin.php:4908 +msgid "file is size:" +msgstr "" + +#: addons/googlecloud.php:855 addons/migrator.php:353 addons/migrator.php:356 +#: addons/migrator.php:359 admin.php:864 admin.php:2471 backup.php:2952 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "" + +#: admin.php:560 +msgid "Some files are still downloading or being processed - please wait." +msgstr "" + +#: class-updraftplus.php:3826 class-updraftplus.php:3844 +msgid "This backup set is from a different site - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work." +msgstr "" + +#: addons/fixtime.php:545 +msgid "The time zone used is that from your WordPress settings, in Settings -> General." +msgstr "" + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "" + +#: methods/ftp.php:111 +msgid "%s upload failed" +msgstr "" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +msgid "%s login failure" +msgstr "" + +#: methods/dropbox.php:406 +msgid "You do not appear to be authenticated with %s" +msgstr "" + +#: methods/dropbox.php:373 +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "" + +#: methods/dropbox.php:365 +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "" + +#: methods/dropbox.php:118 +msgid "Dropbox error: %s (see log file for more)" +msgstr "Dropbox 錯誤: %s (觀看紀錄以了解更多詳情)" + +#: methods/cloudfiles.php:422 +msgid "Error - failed to download the file from %s" +msgstr "" + +#: methods/cloudfiles.php:418 +msgid "Error - no such file exists at %s" +msgstr "" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:839 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +msgid "%s Error" +msgstr "" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +msgid "%s error - failed to upload file" +msgstr "" + +#: class-updraftplus.php:929 methods/cloudfiles.php:211 +msgid "%s error - failed to re-assemble chunks" +msgstr "" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +msgid "%s authentication failed" +msgstr "" + +#: addons/googlecloud.php:384 addons/migrator.php:452 admin.php:2147 +#: admin.php:2194 admin.php:2202 class-updraftplus.php:714 +#: class-updraftplus.php:720 class-updraftplus.php:3746 +#: class-updraftplus.php:3748 class-updraftplus.php:3884 +#: class-updraftplus.php:3917 methods/googledrive.php:304 restorer.php:933 +msgid "Error: %s" +msgstr "" + +#: admin.php:3695 +msgid "Backup directory specified exists, but is not writable." +msgstr "" + +#: admin.php:3693 +msgid "Backup directory specified does not exist." +msgstr "" + +#: admin.php:3427 admin.php:3649 class-updraftplus.php:3826 +#: class-updraftplus.php:3844 +msgid "Warning: %s" +msgstr "" + +#: admin.php:2613 +msgid "Last backup job run:" +msgstr "上次執行備份:" + +#: backup.php:2671 +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "" + +#: backup.php:2047 backup.php:2077 +msgid "%s: unreadable file - could not be backed up" +msgstr "" + +#: backup.php:1474 +msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup" +msgstr "" + +#: backup.php:1593 +msgid "An error occurred whilst closing the final database file" +msgstr "" + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "" + +#: class-updraftplus.php:2620 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "" + +#: class-updraftplus.php:612 +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "" + +#: addons/migrator.php:460 +msgid "New site:" +msgstr "" + +#: addons/migrator.php:515 +msgid "ERROR: Site URL already taken." +msgstr "" + +#: addons/migrator.php:435 +msgid "Migrated site (from UpdraftPlus)" +msgstr "" + +#: addons/migrator.php:374 +msgid "Enter details for where this new site is to live within your multisite install:" +msgstr "" + +#: addons/migrator.php:373 +msgid "Information needed to continue:" +msgstr "" + +#: addons/migrator.php:330 +msgid "Network activating theme:" +msgstr "" + +#: addons/migrator.php:320 +msgid "Processed plugin:" +msgstr "" + +#: addons/sftp.php:74 +msgid "Check your file permissions: Could not successfully create and enter directory:" +msgstr "" + +#: addons/sftp.php:38 +msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "" + +#: methods/s3.php:793 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "" + +#: methods/s3.php:1031 +msgid "Please check your access credentials." +msgstr "" + +#: addons/s3-enhanced.php:172 methods/s3.php:1009 +msgid "The error reported by %s was:" +msgstr "" + +#: restorer.php:1348 +msgid "Please supply the requested information, and then continue." +msgstr "" + +#: restorer.php:2041 +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "" + +#: restorer.php:2024 +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "" + +#: class-updraftplus.php:3895 restorer.php:1633 +msgid "Site information:" +msgstr "" + +#: restorer.php:1504 +msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site." +msgstr "" + +#: addons/migrator.php:315 admin.php:2466 class-updraftplus.php:3888 +#: restorer.php:1955 +msgid "Warning:" +msgstr "" + +#: class-updraftplus.php:3880 restorer.php:162 +msgid "You are running on WordPress multisite - but your backup is not of a multisite site." +msgstr "" + +#: admin.php:4863 +msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file." +msgstr "" + +#: admin.php:4178 methods/updraftvault.php:244 +msgid "Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it." +msgstr "" + +#: admin.php:596 +msgid "Close" +msgstr "" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:553 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "" + +#: addons/reporting.php:423 admin.php:549 +msgid "To send to more than one address, separate each address with a comma." +msgstr "" + +#: admin.php:576 +msgid "PHP information" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:61 +msgid "zip executable found:" +msgstr "" + +#: templates/wp-admin/advanced/site-info.php:41 +msgid "show PHP information (phpinfo)" +msgstr "顯示 PHP 資訊 (phpinfo)" + +#: admin.php:2627 +msgid "Get it here." +msgstr "" + +#: admin.php:2627 +msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand." +msgstr "" + +#: admin.php:2627 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "" + +#: addons/migrator.php:165 +msgid "Read this article to see step-by-step how it's done." +msgstr "" + +#: admin.php:2622 +msgid "Migrate Site" +msgstr "" + +#: admin.php:3104 +msgid "Deleting... please allow time for the communications with the remote storage to complete." +msgstr "" + +#: admin.php:3103 +msgid "Also delete from remote storage" +msgstr "" + +#: admin.php:2961 +msgid "Latest UpdraftPlus.com news:" +msgstr "" + +#: admin.php:2588 +msgid "Clone/Migrate" +msgstr "複製/轉移" + +#: admin.php:2304 +msgid "Premium" +msgstr "高級版" + +#: admin.php:2305 +msgid "News" +msgstr "新聞" + +#: admin.php:1643 +msgid "Backup set not found" +msgstr "找不到備份集" + +#: backup.php:157 +msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)" +msgstr "" + +#: class-updraftplus.php:3704 +msgid "RSS link" +msgstr "RSS 連結" + +#: class-updraftplus.php:3704 +msgid "Blog link" +msgstr "Blog 連結" + +#: class-updraftplus.php:3704 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "訂閱 UpdraftPlus 網誌以取得最新新聞及優惠" + +#: admin.php:639 +msgid "Testing %s Settings..." +msgstr "" + +#: admin.php:3038 +msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "或者你可以手動放置在 UpdraftPlus 目錄 (通常位於wp-content/updraft),例如,從 FTP,然後進行 \"重新掃描\"。" + +#: admin.php:880 +msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request." +msgstr "" + +#: admin.php:880 +msgid "Notice" +msgstr "" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "" + +#: admin.php:547 +msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..." +msgstr "重新掃描(正尋找手動上傳的備份至備份集)..." + +#: admin.php:559 +msgid "Begun looking for this entity" +msgstr "" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "" + +#: addons/migrator.php:1358 +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "" + +#: addons/migrator.php:1238 +msgid "rows: %d" +msgstr "" + +#: addons/migrator.php:1104 +msgid "Time taken (seconds):" +msgstr "" + +#: addons/migrator.php:1103 admin.php:564 +msgid "Errors:" +msgstr "" + +#: addons/migrator.php:1102 +msgid "SQL update commands run:" +msgstr "" + +#: addons/migrator.php:1101 +msgid "Changes made:" +msgstr "" + +#: addons/migrator.php:1100 +msgid "Rows examined:" +msgstr "" + +#: addons/migrator.php:1099 +msgid "Tables examined:" +msgstr "" + +#: addons/migrator.php:988 +msgid "Could not get list of tables" +msgstr "" + +#: addons/migrator.php:952 +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "" + +#: addons/migrator.php:933 +msgid "Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/migrator.php:922 +msgid "Nothing to do: the site URL is already: %s" +msgstr "" + +#: addons/migrator.php:886 addons/migrator.php:890 addons/migrator.php:894 +#: addons/migrator.php:899 addons/migrator.php:903 addons/migrator.php:908 +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "" + +#: addons/migrator.php:849 +msgid "This option was not selected." +msgstr "" + +#: addons/migrator.php:846 +msgid "Database: search and replace site URL" +msgstr "" + +#: addons/migrator.php:770 addons/migrator.php:1085 +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "" + +#: addons/migrator.php:768 addons/migrator.php:1083 +msgid "Failed: the %s operation was not able to start." +msgstr "" + +#: addons/migrator.php:533 +msgid "(learn more)" +msgstr "" + +#: addons/migrator.php:533 +msgid "Search and replace site location in the database (migrate)" +msgstr "" + +#: addons/migrator.php:533 +msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s" +msgstr "" + +#: addons/multisite.php:631 +msgid "Blog uploads" +msgstr "" + +#: addons/migrator.php:359 addons/multisite.php:624 +msgid "Must-use plugins" +msgstr "" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "" + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "" + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "" + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "" + +#: addons/sftp.php:395 +msgid "Where to change directory to after logging in - often this is relative to your home directory." +msgstr "" + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "" + +#: addons/lockadmin.php:148 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:68 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "" + +#: addons/sftp.php:354 addons/webdav.php:82 +msgid "Port" +msgstr "" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:74 +msgid "Host" +msgstr "" + +#: addons/sftp.php:280 +msgid "%s Error: Failed to download" +msgstr "" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +msgid "No %s found" +msgstr "" + +#: addons/sftp.php:38 +msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below." +msgstr "" + +#: addons/sftp.php:38 +msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use." +msgstr "" + +#: addons/morefiles.php:442 +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:202 +msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver." +msgstr "" + +#: addons/morefiles.php:200 +msgid "If using it, enter an absolute path (it is not relative to your WordPress install)." +msgstr "當使用時, 請輸入絕對路徑 (此與 WordPress 安裝過程 無關)" + +#: addons/morefiles.php:200 +msgid "If you are not sure what this option is for, then you will not want it, and should turn it off." +msgstr "" + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "" + +#: addons/morefiles.php:93 +msgid "WordPress core (including any additions to your WordPress root directory)" +msgstr "" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "" + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "Failed: We were not able to place a file in that directory - please check your credentials." +msgstr "" + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3481 admin.php:3516 +#: admin.php:3525 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "失敗" + +#: addons/webdav.php:44 +msgid "WebDAV URL" +msgstr "" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +msgid "Chunk %s: A %s error occurred" +msgstr "" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +msgid "No %s settings were found" +msgstr "" + +#: methods/ftp.php:381 +msgid "Failure: we successfully logged in, but were not able to create a file in the given directory." +msgstr "" + +#: methods/ftp.php:378 +msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:" +msgstr "" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "" + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "" + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "" + +#: methods/ftp.php:303 +msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available." +msgstr "" + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "" + +#: addons/onedrive.php:755 methods/dropbox.php:608 +msgid "Your %s account name: %s" +msgstr "" + +#: methods/dropbox.php:598 methods/dropbox.php:624 +msgid "though part of the returned information was not as expected - your mileage may vary" +msgstr "" + +#: methods/dropbox.php:593 methods/dropbox.php:595 +msgid "you have authenticated your %s account" +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "there's an add-on for that." +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then " +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Backups are saved in" +msgstr "" + +#: methods/dropbox.php:480 methods/dropbox.php:482 +msgid "Need to use sub-folders?" +msgstr "" + +#: methods/dropbox.php:208 methods/dropbox.php:229 methods/dropbox.php:245 +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "" + +#: methods/dropbox.php:97 methods/dropbox.php:113 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "" + +#: methods/s3.php:1026 +msgid "The communication with %s was not encrypted." +msgstr "" + +#: methods/s3.php:1024 +msgid "The communication with %s was encrypted." +msgstr "" + +#: addons/googlecloud.php:689 methods/s3.php:1021 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "We successfully accessed the bucket, but the attempt to create a file in it failed." +msgstr "" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:1019 +#: methods/s3.php:1031 +msgid "Failure" +msgstr "" + +#: methods/s3.php:1007 +msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:1001 +msgid "Region" +msgstr "" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:983 +msgid "Failure: No bucket details were given." +msgstr "" + +#: methods/s3.php:961 +msgid "API secret" +msgstr "" + +#: methods/s3.php:854 +msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath" +msgstr "" + +#: methods/s3.php:853 +msgid "%s location" +msgstr "" + +#: methods/s3.php:849 +msgid "%s secret key" +msgstr "%s 密鑰" + +#: methods/s3.php:845 +msgid "%s access key" +msgstr "" + +#: methods/s3.php:810 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "" + +#: methods/s3.php:808 +msgid "Get your access key and secret key from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist." +msgstr "" + +#: methods/s3.php:442 methods/s3.php:616 methods/s3.php:718 +msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:701 methods/s3.php:747 +msgid "%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:420 +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "" + +#: methods/s3.php:416 +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "" + +#: methods/s3.php:400 +msgid "%s chunk %s: upload failed" +msgstr "" + +#: methods/s3.php:390 +msgid "%s error: file %s was shortened unexpectedly" +msgstr "" + +#: methods/s3.php:367 +msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details" +msgstr "" + +#: methods/email.php:69 +msgid "Note:" +msgstr "" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "" + +#: methods/cloudfiles.php:556 +msgid "Cloud Files error - we accessed the container, but failed to create a file within it" +msgstr "" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "" + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:62 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:957 +msgid "API key" +msgstr "" + +#: addons/migrator.php:273 addons/migrator.php:1861 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:102 admin.php:616 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:957 +#: methods/s3.php:961 +msgid "Failure: No %s was given." +msgstr "" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative." +msgstr "" + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "Get your API key from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist." +msgstr "" + +#: addons/sftp.php:408 admin.php:638 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:859 +#: methods/stream-base.php:224 +msgid "Test %s Settings" +msgstr "" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "" + +#: class-updraftplus.php:969 class-updraftplus.php:1013 +#: methods/cloudfiles.php:392 methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:335 methods/s3.php:347 +#: methods/s3.php:348 +msgid "%s Error: Failed to upload" +msgstr "" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:831 methods/cloudfiles.php:130 +#: methods/googledrive.php:757 methods/googledrive.php:762 +msgid "%s Error: Failed to open local file" +msgstr "" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "" + +#: addons/googlecloud.php:907 methods/googledrive.php:977 +msgid "After you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google." +msgstr "" + +#: addons/googlecloud.php:896 methods/googledrive.php:966 +msgid "Authenticate with Google" +msgstr "Google 認證" + +#: addons/googlecloud.php:847 addons/onedrive.php:980 +#: methods/googledrive.php:936 +msgid "Client Secret" +msgstr "" + +#: addons/googlecloud.php:842 methods/googledrive.php:933 +msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here." +msgstr "" + +#: addons/googlecloud.php:839 addons/onedrive.php:976 +#: methods/googledrive.php:932 +msgid "Client ID" +msgstr "客戶端 ID" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked" +msgstr "" + +#: addons/googlecloud.php:828 methods/googledrive.php:922 +msgid "Select 'Web Application' as the application type." +msgstr "" + +#: addons/googlecloud.php:826 methods/googledrive.php:920 +msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users." +msgstr "" + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:462 methods/ftp.php:298 methods/googledrive.php:905 +#: methods/openstack-base.php:503 methods/s3.php:769 +#: methods/stream-base.php:217 +msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts." +msgstr "" + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 methods/googledrive.php:460 +#: methods/googledrive.php:461 +msgid "Account is not authorized." +msgstr "" + +#: methods/googledrive.php:386 methods/googledrive.php:432 +#: methods/googledrive.php:438 methods/googledrive.php:440 +#: methods/stream-base.php:201 +msgid "Failed to upload to %s" +msgstr "" + +#: methods/googledrive.php:415 +msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes" +msgstr "" + +#: methods/googledrive.php:512 +msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive." +msgstr "" + +#: addons/googlecloud.php:579 addons/onedrive.php:793 +#: methods/googledrive.php:363 +msgid "you have authenticated your %s account." +msgstr "" + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:793 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:363 +#: methods/openstack-base.php:476 methods/s3.php:1021 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "" + +#: addons/onedrive.php:747 methods/dropbox.php:635 methods/dropbox.php:641 +#: methods/googledrive.php:337 +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "" + +#: addons/googlecloud.php:390 methods/googledrive.php:310 +msgid "Authorization failed" +msgstr "" + +#: addons/googlecloud.php:382 methods/googledrive.php:302 +msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again." +msgstr "" + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "" + +#: methods/viaaddon-base.php:72 +msgid "%s support is available as an add-on" +msgstr "" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:123 +#: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:123 +msgid "You need to re-authenticate with %s, as your existing credentials are not working." +msgstr "" + +#: addons/migrator.php:1760 admin.php:3484 admin.php:3518 admin.php:3522 +#: admin.php:4893 admin.php:4906 restorer.php:2188 restorer.php:2294 +msgid "OK" +msgstr "" + +#: restorer.php:2182 restorer.php:2258 +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "" + +#: restorer.php:1865 +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "已完成: 已處理行數: %d / %.2f 秒" + +#: addons/migrator.php:1133 restorer.php:2080 +msgid "the database query being run was:" +msgstr "執行資料庫查詢: " + +#: restorer.php:1803 +msgid "will restore as:" +msgstr "" + +#: restorer.php:1614 restorer.php:1707 restorer.php:1733 +msgid "Old table prefix:" +msgstr "" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3821 +msgid "Backup of:" +msgstr "" + +#: addons/migrator.php:592 restorer.php:1441 +msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)" +msgstr "" + +#: restorer.php:1436 +msgid "Failed to open database file" +msgstr "" + +#: restorer.php:1415 +msgid "Failed to find database file" +msgstr "" + +#: restorer.php:1392 +msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method." +msgstr "" + +#: restorer.php:488 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "" + +#: restorer.php:483 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "" + +#: restorer.php:375 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "" + +#: restorer.php:360 +msgid "Failed to create a temporary directory" +msgstr "" + +#: restorer.php:161 +msgid "Failed to delete working directory after restoring." +msgstr "" + +#: restorer.php:158 +msgid "Could not delete old directory." +msgstr "" + +#: restorer.php:156 +msgid "Cleaning up rubbish..." +msgstr "清理無用的檔案..." + +#: restorer.php:155 +msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..." +msgstr "" + +#: restorer.php:152 +msgid "Database successfully decrypted." +msgstr "" + +#: restorer.php:151 +msgid "Decrypting database (can take a while)..." +msgstr "" + +#: restorer.php:150 +msgid "Unpacking backup..." +msgstr "" + +#: restorer.php:149 +msgid "Copying this entity failed." +msgstr "" + +#: restorer.php:148 +msgid "Backup file not available." +msgstr "" + +#: restorer.php:147 +msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually." +msgstr "" + +#: admin.php:4914 admin.php:4915 +msgid "Could not find one of the files for restoration" +msgstr "" + +#: admin.php:5009 +msgid "Error message" +msgstr "" + +#: admin.php:4911 +msgid "The backup records do not contain information about the proper size of this file." +msgstr "" + +#: admin.php:4903 +msgid "Archive is expected to be size:" +msgstr "" + +#: admin.php:4787 +msgid "If making a request for support, please include this information:" +msgstr "如需尋找支援, 請包含以下資訊" + +#: admin.php:4786 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "中斷: 找不到還原項目的資訊" + +#: admin.php:4740 +msgid "UpdraftPlus Restoration: Progress" +msgstr "UpdraftPlus 還原設定: 過程" + +#: admin.php:4692 +msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:" +msgstr "" + +#: admin.php:4641 +msgid "After pressing this button, you will be given the option to choose which components you wish to restore" +msgstr "" + +#: admin.php:4572 +msgid "Press here to download" +msgstr "按此進行下載" + +#: admin.php:4650 +msgid "Delete this backup set" +msgstr "刪除備份集" + +#: admin.php:4190 +msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help." +msgstr "" + +#: admin.php:4187 +msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s requires Curl+https. Please do not file any support requests; there is no alternative." +msgstr "" + +#: admin.php:4185 +msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:797 +msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support." +msgstr "" + +#: admin.php:4062 +msgid "Save Changes" +msgstr "儲存變更" + +#: admin.php:4039 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect." +msgstr "" + +#: admin.php:4038 +msgid "Disable SSL entirely where possible" +msgstr "如果可以, 完全禁止使用 SSL" + +#: admin.php:4034 +msgid "Note that not all cloud backup methods are necessarily using SSL authentication." +msgstr "注意並非所有雲端備份方法都需要使用 SSL 認證" + +#: admin.php:4034 +msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication." +msgstr "" + +#: admin.php:4033 +msgid "Do not verify SSL certificates" +msgstr "不要驗證 SSL 憑證" + +#: admin.php:4029 +msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help." +msgstr "" + +#: admin.php:4028 +msgid "Use the server's SSL certificates" +msgstr "使用伺服器的 SSL 證書" + +#: admin.php:3697 +msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process." +msgstr "如果不成功, 請檢查伺服器權限或使用伺服器上其他可寫入的目錄" + +#: admin.php:3697 +msgid "click here" +msgstr "按此處" + +#: admin.php:3697 +msgid "or, to reset this option" +msgstr "或者, 重設此選項" + +#: admin.php:3697 +msgid "Follow this link to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3689 +msgid "Backup directory specified is writable, which is good." +msgstr "指定的備份資料夾可以寫入, 非常好" + +#: admin.php:4009 +msgid "Backup directory" +msgstr "備份資料夾" + +#: admin.php:4004 +msgid "Delete local backup" +msgstr "刪除本機備份" + +#: admin.php:3984 +msgid "click this to show some further options; don't bother with this unless you have a problem or are curious." +msgstr "按此顯示更多的選項; 除了出現問題或好奇外, 不建議使用這些選擇" + +#: admin.php:3984 +msgid "Show expert settings" +msgstr "顯示進階設定" + +#: admin.php:3983 +msgid "Expert settings" +msgstr "進階設定" + +#: admin.php:3994 +msgid "Debug mode" +msgstr "除錯模式" + +#: admin.php:3979 +msgid "Advanced / Debugging Settings" +msgstr "進階/除錯設定" + +#: admin.php:575 +msgid "Requesting start of backup..." +msgstr "正在請求開始備份" + +#: admin.php:591 +msgid "Cancel" +msgstr "取消" + +#: addons/reporting.php:212 admin.php:4330 +msgid "None" +msgstr "無" + +#: admin.php:3809 +msgid "Choose your remote storage" +msgstr "選擇你的遠端儲存空間" + +#: admin.php:3896 +msgid "Manually decrypt a database backup file" +msgstr "手動解密資料庫備份檔" + +#: admin.php:3877 +msgid "Database encryption phrase" +msgstr "資料庫加密短語 (phrase)" + +#: admin.php:3956 udaddons/options.php:143 +msgid "Email" +msgstr "電郵" + +#: admin.php:3867 +msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org." +msgstr "以上的資料夾為所有的網站項目, 除了 WordPress 核心檔案, 因為你可以從 WordPress.org 下載" + +#: addons/morefiles.php:260 admin.php:4131 +msgid "Exclude these:" +msgstr "除了這些:" + +#: admin.php:4122 +msgid "Any other directories found inside wp-content" +msgstr "任何在 wp-content 內找尋到的資料夾" + +#: admin.php:3864 +msgid "Include in files backup" +msgstr "包含在資料備份" + +#: admin.php:3793 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "e.g. 當你的伺服器平日很繁忙, 而你希望在午夜進行" + +#: admin.php:3793 +msgid "To fix the time at which a backup should take place," +msgstr "修復備份開始時間" + +#: admin.php:3683 +msgid "Monthly" +msgstr "每月" + +#: admin.php:3682 +msgid "Fortnightly" +msgstr "每兩星期" + +#: admin.php:3681 +msgid "Weekly" +msgstr "每星期" + +#: admin.php:3680 +msgid "Daily" +msgstr "每日" + +#: admin.php:598 admin.php:3663 +msgid "Download log file" +msgstr "下載紀錄檔案" + +#: admin.php:3581 +msgid "The folder exists, but your webserver does not have permission to write to it." +msgstr "資料夾已存在, 但你的網頁伺服器未有寫入權限" + +#: admin.php:3576 +msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems" +msgstr "資料夾已經建立, 但我們將檔案權限設為 777 (所有人能寫入) 以允許寫入, 你應該與寄存提供者共同檢查以確保不會出現其他問題" + +#: admin.php:3562 +msgid "The request to the filesystem to create the directory failed." +msgstr "在檔案系統建立資料夾的請求失敗" + +#: addons/migrator.php:2253 admin.php:592 admin.php:3079 admin.php:3478 +#: admin.php:3511 admin.php:4650 +msgid "Delete" +msgstr "刪除" + +#: admin.php:3418 +msgid "show log" +msgstr "顯示紀錄" + +#: templates/wp-admin/advanced/wipe-settings.php:9 +msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?" +msgstr "這會刪除 UpdraftPlus 所有的設定 - 你確定要這樣做?" + +#: templates/wp-admin/advanced/total-size.php:19 +msgid "count" +msgstr "統計" + +#: templates/wp-admin/advanced/total-size.php:9 +msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options." +msgstr "留意: 這個統計建基於是或者不是, 除了你上一次儲存的選項以外" + +#: templates/wp-admin/advanced/total-size.php:6 +msgid "Total (uncompressed) on-disk data:" +msgstr "磁碟數據總計 (未經壓縮)" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "No" +msgstr "否" + +#: templates/wp-admin/advanced/site-info.php:51 +#: templates/wp-admin/advanced/site-info.php:54 +#: templates/wp-admin/advanced/site-info.php:57 +#: templates/wp-admin/advanced/site-info.php:61 +msgid "Yes" +msgstr "是" + +#: templates/wp-admin/advanced/site-info.php:41 +#: templates/wp-admin/advanced/site-info.php:42 +#: templates/wp-admin/advanced/site-info.php:49 +#: templates/wp-admin/advanced/site-info.php:50 +msgid "%s version:" +msgstr "%s 版本:" + +#: templates/wp-admin/advanced/site-info.php:39 +msgid "Current memory usage" +msgstr "目前記憶體使用量" + +#: templates/wp-admin/advanced/site-info.php:38 +msgid "Peak memory usage" +msgstr "高峰記憶體使用量" + +#: templates/wp-admin/advanced/site-info.php:29 +msgid "Web server:" +msgstr "網頁伺服器:" + +#: admin.php:2658 +msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "請考慮 UpdraftPlus Premium, 或者使用單獨的多站點擴充元件" + +#: admin.php:2658 +msgid "Do you need WordPress Multisite support?" +msgstr "你需要 WordPress 多站點支援嗎?" + +#: admin.php:2654 +msgid "Multisite" +msgstr "多站點" + +#: admin.php:2643 +msgid "Perform a one-time backup" +msgstr "執行單次備份" + +#: admin.php:3175 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "在還原之前, 請先閱讀這篇文章以取得更多資訊" + +#: admin.php:3164 +msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information" +msgstr "你可以透過 Migrator 擴充元件 搜尋和取代你的資料庫 (用以合併網站至新的位置/網址) - 瀏覽此連結以取得更多資訊" + +#: addons/morefiles.php:63 admin.php:3156 +msgid "%s restoration options:" +msgstr "%s 還原過程選項" + +#: admin.php:3149 +msgid "You will need to restore it manually." +msgstr "你將需要手動進行還原" + +#: admin.php:3149 +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "以下實體未能自動還原: \"%s\"" + +#: admin.php:3136 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "你的網頁伺服器的 PHP 已啟用 的 safe_mode" + +#: admin.php:3124 +msgid "Choose the components to restore" +msgstr "選擇組件以還原" + +#: admin.php:3124 +msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)." +msgstr "還原將會取代這個網站的佈景主題, 插件, 上傳, 資料庫 及/或 其他內容的資料夾 (基於備份集和你選擇的內容)" + +#: admin.php:3112 +msgid "Restore backup from" +msgstr "還原備份從" + +#: admin.php:3111 +msgid "Restore backup" +msgstr "還原備份" + +#: admin.php:3089 +msgid "Delete backup set" +msgstr "刪除備份集" + +#: admin.php:574 +msgid "Download error: the server sent us a response which we did not understand." +msgstr "下載錯誤: 伺服器返回了一個未知的回應" + +#: admin.php:570 +msgid "You should:" +msgstr "你應該:" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:755 +#: addons/migrator.php:988 addons/migrator.php:1069 addons/migrator.php:1133 +#: addons/migrator.php:1358 addons/migrator.php:1699 addons/migrator.php:1726 +#: addons/migrator.php:1732 addons/migrator.php:1794 addons/migrator.php:1830 +#: addons/migrator.php:1869 addons/migrator.php:1879 addons/migrator.php:1884 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:78 +#: admin.php:82 admin.php:567 admin.php:4908 admin.php:4938 +#: methods/remotesend.php:76 methods/remotesend.php:234 +#: methods/updraftvault.php:418 restorer.php:1353 +msgid "Error:" +msgstr "錯誤:" + +#: admin.php:558 admin.php:3020 +msgid "calculating..." +msgstr "計算中..." + +#: admin.php:3037 +msgid "UpdraftPlus - Upload backup files" +msgstr "UpdraftPlus - 上傳備份檔案" + +#: admin.php:3020 +msgid "refresh" +msgstr "重新整理" + +#: admin.php:3020 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "UpdraftPlus 已佔用的空間" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:363 methods/googledrive.php:386 +#: methods/googledrive.php:415 methods/googledrive.php:422 +#: methods/googledrive.php:432 methods/googledrive.php:438 +#: methods/googledrive.php:440 methods/googledrive.php:904 +#: methods/googledrive.php:916 methods/googledrive.php:932 +#: methods/googledrive.php:936 methods/googledrive.php:947 +#: methods/googledrive.php:957 +msgid "Google Drive" +msgstr "Google 雲端硬碟" + +#: admin.php:3029 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "如果你正在使用它, 請關閉 Turbo/Road 模式" + +#: admin.php:3029 +msgid "Opera web browser" +msgstr "Opera 瀏覽器" + +#: admin.php:3023 +msgid "More tasks:" +msgstr "更多任務:" + +#: admin.php:2985 +msgid "Download most recently modified log file" +msgstr "下載最近修改過的紀錄" + +#: admin.php:2944 admin.php:2950 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "(未有任何紀錄)" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2943 +#: admin.php:2948 +msgid "Last log message" +msgstr "最近紀錄訊息" + +#: addons/migrator.php:218 admin.php:597 admin.php:2585 admin.php:4641 +msgid "Restore" +msgstr "還原" + +#: admin.php:410 admin.php:590 admin.php:2582 +msgid "Backup Now" +msgstr "立即備份" + +#: addons/migrator.php:1764 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:233 admin.php:1375 admin.php:3154 +#: admin.php:3156 admin.php:4305 admin.php:4497 admin.php:4992 +msgid "Database" +msgstr "資料庫" + +#: admin.php:229 +msgid "Files" +msgstr "檔案" + +#: admin.php:2603 +msgid "Next scheduled backups" +msgstr "下次排程備份" + +#: admin.php:209 +msgid "At the same time as the files backup" +msgstr "在檔案備份期間同時進行" + +#: admin.php:199 admin.php:220 admin.php:227 +msgid "Nothing currently scheduled" +msgstr "目前未有排程任務" + +#: admin.php:2568 +msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser." +msgstr "管理員頁面需要使用大量的 JavaScript, 你需要啟用 JavaScript, 或使用支援 JavaScript 的瀏覽器" + +#: admin.php:2567 +msgid "JavaScript warning" +msgstr "JavaScript 警告" + +#: admin.php:577 admin.php:3208 +msgid "Delete Old Directories" +msgstr "刪除舊有資料夾" + +#: admin.php:2510 +msgid "Current limit is:" +msgstr "目前限制為:" + +#: admin.php:2488 +msgid "Your backup has been restored." +msgstr "你的備份已還原" + +#: admin.php:2310 +msgid "Version" +msgstr "版本" + +#: admin.php:2309 +msgid "Lead developer's homepage" +msgstr "主要開發者網頁" + +#: admin.php:2457 +msgid "Your settings have been wiped." +msgstr "你的設定已被抹除" + +#: admin.php:2438 +msgid "Backup directory successfully created." +msgstr "備份資料夾已成功建立" + +#: admin.php:2431 +msgid "Backup directory could not be created" +msgstr "無法建立備份資料夾" + +#: admin.php:3450 +msgid "Old directory removal failed for some reason. You may want to do this manually." +msgstr "舊資料夾移除失敗, 你可能需要手動移除它" + +#: admin.php:3448 +msgid "Old directories successfully removed." +msgstr "舊資料夾已成功移除" + +#: admin.php:3445 +msgid "Remove old directories" +msgstr "移除舊資料夾" + +#: addons/migrator.php:274 addons/migrator.php:286 admin.php:2380 +#: admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +msgid "Return to UpdraftPlus Configuration" +msgstr "返回 UpdraftPlus 設定" + +#: admin.php:2380 admin.php:2389 admin.php:2398 admin.php:2440 admin.php:3452 +#: admin.php:4370 +msgid "Actions" +msgstr "動作" + +#: admin.php:2369 +msgid "Restore successful!" +msgstr "還原成功!" + +#: admin.php:2284 +msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus" +msgstr "錯誤的檔案格式 - 似乎這個已加密的資料庫檔案不是由 UpdraftPlus 建立的" + +#: admin.php:2194 +msgid "Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "錯誤的檔案格式 - 似乎這個檔案不是由 UpdraftPlus 建立的" + +#: admin.php:2075 +msgid "No local copy present." +msgstr "未有本機副本" + +#: admin.php:2072 +msgid "Download in progress" +msgstr "正在下載中" + +#: admin.php:569 admin.php:2062 +msgid "File ready." +msgstr "檔案已預備" + +#: admin.php:2043 +msgid "Download failed" +msgstr "下載失敗" + +#: admin.php:568 admin.php:1834 admin.php:4891 class-updraftplus.php:969 +#: class-updraftplus.php:1013 methods/addon-base.php:75 +#: methods/addon-base.php:80 methods/addon-base.php:194 +#: methods/addon-base.php:214 methods/stream-base.php:201 restorer.php:2184 +#: restorer.php:2209 restorer.php:2291 updraftplus.php:147 +msgid "Error" +msgstr "錯誤" + +#: admin.php:1862 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "無法找到任務 - 或許它已經完成?" + +#: admin.php:1854 +msgid "Job deleted" +msgstr "任務已刪除" + +#: admin.php:1938 +msgid "OK. You should soon see activity in the \"Last log message\" field below." +msgstr "OK. 你將會在 \"最近紀錄訊息\" 下檢視活動訊息" + +#: admin.php:641 +msgid "Nothing yet logged" +msgstr "未有任何紀錄" + +#: admin.php:876 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "如果你有任何備份的問題, 請查閱這份 FAQ" + +#: admin.php:876 +msgid "Your website is hosted using the %s web server." +msgstr "你的網頁使用 %s 網頁伺服器" + +#: admin.php:872 +msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress." +msgstr "UpdraftPlus 未有正式支援 WordPress %s 之前的版本, 雖然仍可能會正常運作, 但如果未能運作, 請留意在你未有升級 Wordpress 之前或者未能獲得支援" + +#: admin.php:868 +msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue." +msgstr "設定予 UpdraftPlus 使用的備份區域剩餘空間少於 %s, UpdraftPlus 可能未能完成備份, 請聯絡你的伺服器管理員 (eg. 網頁寄存公司) 以解決問題" + +#: admin.php:860 admin.php:864 admin.php:868 admin.php:872 admin.php:876 +#: admin.php:885 admin.php:3015 admin.php:4178 admin.php:4185 admin.php:4187 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:793 methods/s3.php:797 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "警告" + +#: admin.php:804 +msgid "Add-Ons / Pro Support" +msgstr "擴充元件/Pro 支援" + +#: admin.php:426 admin.php:800 admin.php:2545 +msgid "Settings" +msgstr "設定" + +#: admin.php:758 +msgid "Allowed Files" +msgstr "已允許檔案" + +#: backup.php:229 +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "無法建立 %s 壓縮檔, 檢閱紀錄以取得更多資訊" + +#: backup.php:1969 +msgid "Infinite recursion: consult your log for more information" +msgstr "無限遞迴: 查閱紀錄以取得更多資訊" + +#: class-updraftplus.php:3707 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "瀏覽 UpdraftPlus.Com 以取得協助, 外掛元件和支援" + +#: class-updraftplus.php:3697 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "需要更多功能和支援? 請考慮購買 UpdraftPlus Premium" + +#: class-updraftplus.php:3690 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "請幫助 UpdraftPlus, 在 wordpress.org 給予我們正面的評價" + +#: class-updraftplus.php:3690 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "喜歡 UpdraftPlus, 能抽一分鐘時間嗎?" + +#: class-updraftplus.php:3682 +msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "你能協助翻譯嗎? 希望改進 UpdraftPlus 的語句嗎?" + +#: addons/azure.php:217 class-updraftplus.php:3539 methods/googledrive.php:839 +msgid "File not found" +msgstr "無法找到檔案" + +#: class-updraftplus.php:3450 +msgid "The decryption key used:" +msgstr "使用的密碼:" + +#: class-updraftplus.php:3450 class-updraftplus.php:3763 restorer.php:378 +msgid "Decryption failed. The most likely cause is that you used the wrong key." +msgstr "解密失敗。可能你輸入了錯誤的密碼" + +#: class-updraftplus.php:3439 class-updraftplus.php:3746 restorer.php:368 +msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered." +msgstr "解密失敗。資料庫已加密, 但你未有輸入密碼" + +#: backup.php:1868 +msgid "Could not open the backup file for writing" +msgstr "無法寫入備份檔案" + +#: class-updraftplus.php:3079 +msgid "Could not save backup history because we have no backup array. Backup probably failed." +msgstr "由於未有備份陣列, 無法儲存備份紀錄。備份可能已經失敗" + +#: class-updraftplus.php:3056 +msgid "Could not read the directory" +msgstr "無法讀取資料夾" + +#: admin.php:2112 backup.php:1120 restorer.php:225 +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "備份資料夾 (%s) 可能未有寫入權限, 或資料夾不存在" + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "WordPress 備份已完成" + +#: class-updraftplus.php:2629 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "備份工作已完成, 但似乎不成功" + +#: class-updraftplus.php:2614 +msgid "The backup apparently succeeded and is now complete" +msgstr "備份工作已完成" + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "在加密資料庫時出現錯誤, 加密已中止" + +#: class-updraftplus.php:2050 +msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings." +msgstr "無法在備份資料夾內建立檔案, 備份已中止 - 請檢查你的 UpdraftPlus 設定" + +#: class-updraftplus.php:1442 +msgid "Others" +msgstr "其他" + +#: addons/multisite.php:453 class-updraftplus.php:1427 +msgid "Uploads" +msgstr "上傳檔案" + +#: class-updraftplus.php:1426 +msgid "Themes" +msgstr "佈景主題" + +#: class-updraftplus.php:1425 +msgid "Plugins" +msgstr "外掛" + +#: class-updraftplus.php:400 +msgid "No log files were found." +msgstr "沒有找到紀錄檔" + +#: admin.php:1997 admin.php:2001 class-updraftplus.php:395 +msgid "The log file could not be read." +msgstr "無法讀取紀錄檔" + +#: admin.php:892 admin.php:896 admin.php:900 admin.php:904 admin.php:908 +#: class-updraftplus.php:360 class-updraftplus.php:395 +#: class-updraftplus.php:400 class-updraftplus.php:405 +msgid "UpdraftPlus notice:" +msgstr "UpdraftPlus 提醒:" + +#: addons/multisite.php:66 addons/multisite.php:661 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "UpdraftPlus Backups" \ No newline at end of file diff --git a/plugins/updraftplus/languages/updraftplus.pot b/plugins/updraftplus/languages/updraftplus.pot new file mode 100644 index 0000000..6efbd21 --- /dev/null +++ b/plugins/updraftplus/languages/updraftplus.pot @@ -0,0 +1,7013 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: UpdraftPlus\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-08-20 17:32+0000\n" +"PO-Revision-Date: 2015-06-08 14:43+0100\n" +"Last-Translator: David Anderson \n" +"Language-Team: contact@updraftplus.com\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e;_ex:2c,1;log_e;" +"$updraftplus->log_e;updraftplus_log_e;_x:2c,1\n" +"X-Poedit-Basepath: /home/david/MissionaryHosting/UpdraftPlus/gitlab/" +"updraftplus\n" +"X-Generator: Poedit 1.8.8\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-SearchPath-0: .\n" + +#: addons/autobackup.php:96 +msgid "WordPress core (only)" +msgstr "" + +#: addons/autobackup.php:113 addons/autobackup.php:985 +msgid "UpdraftPlus Automatic Backups" +msgstr "" + +#: addons/autobackup.php:131 addons/autobackup.php:959 +#: addons/autobackup.php:967 admin.php:519 +msgid "Automatic backup before update" +msgstr "" + +#: addons/autobackup.php:250 +msgid "" +"Automatically backup (where relevant) plugins, themes and the WordPress " +"database with UpdraftPlus before updating" +msgstr "" + +#: addons/autobackup.php:252 addons/autobackup.php:999 +msgid "" +"Remember this choice for next time (you will still have the chance to change " +"it)" +msgstr "" + +#: addons/autobackup.php:253 addons/autobackup.php:1004 +#: addons/lockadmin.php:136 +msgid "Read more about how this works..." +msgstr "" + +#: addons/autobackup.php:292 +#, php-format +msgid "Creating %s and database backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:292 addons/autobackup.php:385 +msgid "(logs can be found in the UpdraftPlus settings page as normal)..." +msgstr "" + +#: addons/autobackup.php:293 addons/autobackup.php:387 admin.php:2799 +#: admin.php:2804 +msgid "Last log message" +msgstr "" + +#: addons/autobackup.php:296 addons/autobackup.php:392 +msgid "Starting automatic backup..." +msgstr "" + +#: addons/autobackup.php:298 addons/autobackup.php:389 admin.php:473 +#: methods/remotesend.php:71 methods/remotesend.php:79 +#: methods/remotesend.php:220 methods/remotesend.php:237 +msgid "Unexpected response:" +msgstr "" + +#: addons/autobackup.php:346 +msgid "plugins" +msgstr "" + +#: addons/autobackup.php:353 +msgid "themes" +msgstr "" + +#: addons/autobackup.php:374 +msgid "You do not have sufficient permissions to update this site." +msgstr "" + +#: addons/autobackup.php:385 +msgid "Creating database backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:394 addons/autobackup.php:522 +#: addons/autobackup.php:573 +msgid "Automatic Backup" +msgstr "" + +#: addons/autobackup.php:447 +msgid "Creating backup with UpdraftPlus..." +msgstr "" + +#: addons/autobackup.php:475 +msgid "Errors have occurred:" +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "Backup succeeded" +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "(view log...)" +msgstr "" + +#: addons/autobackup.php:494 addons/autobackup.php:496 +msgid "now proceeding with the updates..." +msgstr "" + +#: addons/autobackup.php:511 admin.php:733 +msgid "Update Plugin" +msgstr "" + +#: addons/autobackup.php:562 admin.php:737 +msgid "Update Theme" +msgstr "" + +#: addons/autobackup.php:988 admin.php:580 admin.php:747 +msgid "Be safe with an automatic backup" +msgstr "" + +#: addons/autobackup.php:994 +msgid "" +"Backup (where relevant) plugins, themes and the WordPress database with " +"UpdraftPlus before updating" +msgstr "" + +#: addons/autobackup.php:1008 +msgid "" +"Do not abort after pressing Proceed below - wait for the backup to complete." +msgstr "" + +#: addons/autobackup.php:1009 admin.php:515 +msgid "Proceed with update" +msgstr "" + +#: addons/azure.php:217 methods/addon-base.php:208 methods/cloudfiles.php:392 +#: methods/cloudfiles.php:409 methods/googledrive.php:834 +#: methods/openstack-base.php:403 methods/stream-base.php:266 +#: methods/stream-base.php:273 methods/stream-base.php:286 +#, php-format +msgid "%s Error" +msgstr "" + +#: addons/azure.php:217 class-updraftplus.php:3423 methods/googledrive.php:834 +msgid "File not found" +msgstr "" + +#: addons/azure.php:344 +msgid "Could not access container" +msgstr "" + +#: addons/azure.php:351 methods/stream-base.php:125 methods/stream-base.php:130 +msgid "Upload failed" +msgstr "" + +#: addons/azure.php:366 addons/googlecloud.php:693 methods/s3.php:977 +msgid "Delete failed:" +msgstr "" + +#: addons/azure.php:450 +msgid "Could not create the container" +msgstr "" + +#: addons/azure.php:502 +msgid "Create Azure credentials in your Azure developer console." +msgstr "" + +#: addons/azure.php:502 addons/migrator.php:1734 addons/onedrive.php:773 +msgid "For longer help, including screenshots, follow this link." +msgstr "" + +#: addons/azure.php:506 addons/azure.php:510 +msgid "Azure" +msgstr "" + +#: addons/azure.php:506 +msgid "Account Name" +msgstr "" + +#: addons/azure.php:507 +msgid "" +"This is not your Azure login - see the instructions if needing more guidance." +msgstr "" + +#: addons/azure.php:510 addons/migrator.php:2195 addons/sftp.php:376 +#: admin.php:535 +msgid "Key" +msgstr "" + +#: addons/azure.php:517 methods/openstack2.php:133 +msgid "Container" +msgstr "" + +#: addons/azure.php:518 +#, php-format +msgid "Enter the path of the %s you wish to use here." +msgstr "" + +#: addons/azure.php:518 +#, php-format +msgid "If the %s does not already exist, then it will be created." +msgstr "" + +#: addons/azure.php:518 +msgid "See Microsoft's guidelines on container naming by following this link." +msgstr "" + +#: addons/azure.php:523 +msgid "Prefix" +msgstr "" + +#: addons/azure.php:523 +msgid "optional" +msgstr "" + +#: addons/azure.php:524 +#, php-format +msgid "You can enter the path of any %s virtual folder you wish to use here." +msgstr "" + +#: addons/azure.php:524 addons/google-enhanced.php:73 addons/onedrive.php:793 +#, php-format +msgid "" +"If you leave it blank, then the backup will be placed in the root of your %s" +msgstr "" + +#: addons/azure.php:524 +msgid "container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:28 +msgid "Rackspace Cloud Files, enhanced" +msgstr "" + +#: addons/cloudfiles-enhanced.php:29 +msgid "Adds enhanced capabilities for Rackspace Cloud Files users" +msgstr "" + +#: addons/cloudfiles-enhanced.php:35 methods/cloudfiles-new.php:88 +#: methods/cloudfiles.php:465 +msgid "US (default)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:36 methods/cloudfiles-new.php:89 +#: methods/cloudfiles.php:466 +msgid "UK" +msgstr "" + +#: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:100 +msgid "Dallas (DFW) (default)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:101 +msgid "Sydney (SYD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:102 +msgid "Chicago (ORD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:103 +msgid "Northern Virginia (IAD)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:104 +msgid "Hong Kong (HKG)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:105 +msgid "London (LON)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:54 +msgid "" +"Create a new API user with access to only this container (rather than your " +"whole account)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:61 +msgid "You need to enter an admin username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:64 +msgid "You need to enter an admin API key" +msgstr "" + +#: addons/cloudfiles-enhanced.php:67 +msgid "You need to enter a new username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:70 +msgid "You need to enter a container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:74 +msgid "You need to enter a valid new email address" +msgstr "" + +#: addons/cloudfiles-enhanced.php:96 addons/cloudfiles-enhanced.php:109 +#: addons/cloudfiles-enhanced.php:113 methods/cloudfiles.php:539 +#: methods/cloudfiles.php:542 methods/cloudfiles.php:545 +msgid "Cloud Files authentication failed" +msgstr "" + +#: addons/cloudfiles-enhanced.php:99 addons/migrator.php:748 +#: addons/migrator.php:969 addons/migrator.php:1050 addons/migrator.php:1120 +#: addons/migrator.php:1345 addons/migrator.php:1686 addons/migrator.php:1713 +#: addons/migrator.php:1719 addons/migrator.php:1781 addons/migrator.php:1817 +#: addons/migrator.php:1856 addons/migrator.php:1866 addons/migrator.php:1871 +#: addons/s3-enhanced.php:120 addons/s3-enhanced.php:125 +#: addons/s3-enhanced.php:127 addons/sftp.php:736 addons/webdav.php:76 +#: admin.php:487 admin.php:4892 admin.php:4922 methods/remotesend.php:76 +#: methods/remotesend.php:234 methods/updraftvault.php:418 restorer.php:1292 +msgid "Error:" +msgstr "" + +#: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:197 +#: methods/cloudfiles-new.php:39 methods/openstack-base.php:431 +#: methods/openstack-base.php:433 methods/openstack-base.php:453 +#: methods/openstack2.php:25 +msgid "Authorisation failed (check your credentials)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:138 +msgid "Conflict: that user or email address already exists" +msgstr "" + +#: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143 +#: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159 +#: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170 +#, php-format +msgid "Cloud Files operation failed (%s)" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:294 +#, php-format +msgid "Username: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 +#, php-format +msgid "Password: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:181 +#, php-format +msgid "API Key: %s" +msgstr "" + +#: addons/cloudfiles-enhanced.php:243 +msgid "Create new API user and container" +msgstr "" + +#: addons/cloudfiles-enhanced.php:246 +msgid "" +"Enter your Rackspace admin username/API key (so that Rackspace can " +"authenticate your permission to create new users), and enter a new (unique) " +"username and email address for the new user and a container name." +msgstr "" + +#: addons/cloudfiles-enhanced.php:254 +msgid "US or UK Rackspace Account" +msgstr "" + +#: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:85 +msgid "" +"Accounts created at rackspacecloud.com are US accounts; accounts created at " +"rackspace.co.uk are UK accounts." +msgstr "" + +#: addons/cloudfiles-enhanced.php:259 +msgid "Admin Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:262 +msgid "Admin API Key" +msgstr "" + +#: addons/cloudfiles-enhanced.php:265 +msgid "New User's Username" +msgstr "" + +#: addons/cloudfiles-enhanced.php:268 +msgid "New User's Email Address" +msgstr "" + +#: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:95 +msgid "Cloud Files Storage Region" +msgstr "" + +#: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:132 +msgid "Cloud Files Container" +msgstr "" + +#: addons/copycom.php:43 addons/copycom.php:81 +msgid "Barracuda have closed down Copy.Com, as of May 1st, 2016. See:" +msgstr "" + +#: addons/dropbox-folders.php:26 +msgid "Store at" +msgstr "" + +#: addons/fixtime.php:281 addons/fixtime.php:286 +msgid "Add an additional retention rule..." +msgstr "" + +#: addons/fixtime.php:422 +msgid "(at same time as files backup)" +msgstr "" + +#: addons/fixtime.php:545 +msgid "starting from next time it is" +msgstr "" + +#: addons/fixtime.php:545 +msgid "Enter in format HH:MM (e.g. 14:22)." +msgstr "" + +#: addons/fixtime.php:545 +msgid "" +"The time zone used is that from your WordPress settings, in Settings -> " +"General." +msgstr "" + +#: addons/google-enhanced.php:72 methods/googledrive.php:146 +#: methods/googledrive.php:358 methods/googledrive.php:381 +#: methods/googledrive.php:410 methods/googledrive.php:417 +#: methods/googledrive.php:427 methods/googledrive.php:433 +#: methods/googledrive.php:435 methods/googledrive.php:899 +#: methods/googledrive.php:911 methods/googledrive.php:927 +#: methods/googledrive.php:931 methods/googledrive.php:942 +#: methods/googledrive.php:952 +msgid "Google Drive" +msgstr "" + +#: addons/google-enhanced.php:72 addons/onedrive.php:792 +#: methods/googledrive.php:942 methods/googledrive.php:952 +msgid "Folder" +msgstr "" + +#: addons/google-enhanced.php:73 addons/onedrive.php:793 +#, php-format +msgid "Enter the path of the %s folder you wish to use here." +msgstr "" + +#: addons/google-enhanced.php:73 addons/onedrive.php:793 +msgid "If the folder does not already exist, then it will be created." +msgstr "" + +#: addons/google-enhanced.php:73 addons/googlecloud.php:860 +#: addons/onedrive.php:793 +#, php-format +msgid "e.g. %s" +msgstr "" + +#: addons/google-enhanced.php:75 +#, php-format +msgid "In %s, path names are case sensitive." +msgstr "" + +#: addons/googlecloud.php:35 addons/s3-enhanced.php:53 +msgid "Standard" +msgstr "" + +#: addons/googlecloud.php:36 +msgid "Durable reduced availability" +msgstr "" + +#: addons/googlecloud.php:37 +msgid "Nearline" +msgstr "" + +#: addons/googlecloud.php:41 +msgid "United States" +msgstr "" + +#: addons/googlecloud.php:41 addons/googlecloud.php:42 +#: addons/googlecloud.php:43 +msgid "multi-region location" +msgstr "" + +#: addons/googlecloud.php:42 +msgid "Asia Pacific" +msgstr "" + +#: addons/googlecloud.php:43 +msgid "European Union" +msgstr "" + +#: addons/googlecloud.php:44 addons/googlecloud.php:46 +msgid "Central United States" +msgstr "" + +#: addons/googlecloud.php:45 +msgid " Eastern United States" +msgstr "" + +#: addons/googlecloud.php:47 addons/googlecloud.php:48 +msgid "Eastern United States" +msgstr "" + +#: addons/googlecloud.php:49 +msgid "Western United States" +msgstr "" + +#: addons/googlecloud.php:50 +msgid "Eastern Asia-Pacific" +msgstr "" + +#: addons/googlecloud.php:51 +msgid "Western Europe" +msgstr "" + +#: addons/googlecloud.php:78 addons/googlecloud.php:643 methods/s3.php:922 +msgid "Failure: No bucket details were given." +msgstr "" + +#: addons/googlecloud.php:161 addons/googlecloud.php:166 +#: class-updraftplus.php:789 methods/cloudfiles.php:130 +#: methods/googledrive.php:752 methods/googledrive.php:757 +#, php-format +msgid "%s Error: Failed to open local file" +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:288 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 +#, php-format +msgid "%s Service Exception." +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:268 +#: addons/googlecloud.php:278 addons/googlecloud.php:288 +#: addons/googlecloud.php:579 addons/googlecloud.php:735 +#: addons/googlecloud.php:782 addons/googlecloud.php:822 +#: addons/googlecloud.php:839 addons/googlecloud.php:847 +#: addons/googlecloud.php:860 +msgid "Google Cloud" +msgstr "" + +#: addons/googlecloud.php:215 addons/googlecloud.php:288 +#: addons/googlecloud.php:735 addons/googlecloud.php:782 +msgid "You do not have access to this bucket." +msgstr "" + +#: addons/googlecloud.php:254 addons/onedrive.php:367 +#: methods/googledrive.php:874 +#, php-format +msgid "%s download: failed: file not found" +msgstr "" + +#: addons/googlecloud.php:268 +msgid "You do not have access to this bucket" +msgstr "" + +#: addons/googlecloud.php:278 addons/sftp.php:43 methods/addon-base.php:56 +#: methods/addon-base.php:97 methods/addon-base.php:128 +#: methods/addon-base.php:184 methods/addon-base.php:264 methods/ftp.php:29 +#: methods/googledrive.php:146 methods/stream-base.php:31 +#: methods/stream-base.php:145 methods/stream-base.php:151 +#: methods/stream-base.php:185 methods/stream-base.php:250 +#, php-format +msgid "No %s settings were found" +msgstr "" + +#: addons/googlecloud.php:337 addons/onedrive.php:713 +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:95 +#: methods/googledrive.php:239 +#, php-format +msgid "" +"The %s authentication could not go ahead, because something else on your " +"site is breaking it. Try disabling your other plugins and switching to a " +"default theme. (Specifically, you are looking for the component that sends " +"output (most likely PHP warnings/errors) before the page begins. Turning off " +"any debugging settings may also help)." +msgstr "" + +#: addons/googlecloud.php:382 methods/googledrive.php:297 +msgid "" +"No refresh token was received from Google. This often means that you entered " +"your client secret wrongly, or that you have not yet re-authenticated " +"(below) since correcting it. Re-check it, then follow the link to " +"authenticate again. Finally, if that does not work, then use expert mode to " +"wipe all your settings, create a new Google client ID/secret, and start " +"again." +msgstr "" + +#: addons/googlecloud.php:384 addons/migrator.php:446 admin.php:2011 +#: admin.php:2058 admin.php:2066 class-updraftplus.php:683 +#: class-updraftplus.php:689 class-updraftplus.php:3630 +#: class-updraftplus.php:3632 class-updraftplus.php:3768 +#: class-updraftplus.php:3801 methods/googledrive.php:299 restorer.php:873 +#, php-format +msgid "Error: %s" +msgstr "" + +#: addons/googlecloud.php:390 methods/googledrive.php:305 +msgid "Authorization failed" +msgstr "" + +#: addons/googlecloud.php:445 addons/googlecloud.php:446 +#: addons/googlecloud.php:709 addons/onedrive.php:522 +#: methods/googledrive.php:455 methods/googledrive.php:456 +msgid "Account is not authorized." +msgstr "" + +#: addons/googlecloud.php:479 +msgid "" +"Have not yet obtained an access token from Google - you need to authorise or " +"re-authorise your connection to Google Cloud." +msgstr "" + +#: addons/googlecloud.php:559 addons/onedrive.php:618 +#: methods/googledrive.php:338 +msgid "However, subsequent access attempts failed:" +msgstr "" + +#: addons/googlecloud.php:579 addons/googlecloud.php:689 +#: addons/onedrive.php:637 addons/sftp.php:480 methods/addon-base.php:291 +#: methods/cloudfiles.php:560 methods/googledrive.php:358 +#: methods/openstack-base.php:476 methods/s3.php:960 +#: methods/stream-base.php:313 +msgid "Success" +msgstr "" + +#: addons/googlecloud.php:579 addons/onedrive.php:637 +#: methods/googledrive.php:358 +#, php-format +msgid "you have authenticated your %s account." +msgstr "" + +#: addons/googlecloud.php:579 methods/googledrive.php:358 +#, php-format +msgid "Name: %s." +msgstr "" + +#: addons/googlecloud.php:609 +msgid "You must save and authenticate before you can test your settings." +msgstr "" + +#: addons/googlecloud.php:626 addons/googlecloud.php:660 +#: addons/googlecloud.php:666 addons/sftp.php:447 admin.php:3463 admin.php:3498 +#: admin.php:3507 methods/addon-base.php:284 methods/stream-base.php:302 +msgid "Failed" +msgstr "" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:958 +#: methods/s3.php:970 +msgid "Failure" +msgstr "" + +#: addons/googlecloud.php:683 addons/googlecloud.php:697 methods/s3.php:958 +#: methods/s3.php:970 +msgid "" +"We successfully accessed the bucket, but the attempt to create a file in it " +"failed." +msgstr "" + +#: addons/googlecloud.php:689 methods/s3.php:960 +msgid "We accessed the bucket, and were able to create files within it." +msgstr "" + +#: addons/googlecloud.php:743 +msgid "You must enter a project ID in order to be able to create a new bucket." +msgstr "" + +#: addons/googlecloud.php:815 methods/dropbox.php:419 +#, php-format +msgid "%s logo" +msgstr "" + +#: addons/googlecloud.php:816 +#, php-format +msgid "Do not confuse %s with %s - they are separate things." +msgstr "" + +#: addons/googlecloud.php:822 methods/googledrive.php:911 +#, php-format +msgid "" +"%s does not allow authorisation of sites hosted on direct IP addresses. You " +"will need to change your site's address (%s) before you can use %s for " +"storage." +msgstr "" + +#: addons/googlecloud.php:826 methods/googledrive.php:915 +msgid "" +"For longer help, including screenshots, follow this link. The description " +"below is sufficient for more expert users." +msgstr "" + +#: addons/googlecloud.php:828 +msgid "" +"Follow this link to your Google API Console, and there activate the Storage " +"API and create a Client ID in the API Access section." +msgstr "" + +#: addons/googlecloud.php:828 methods/googledrive.php:917 +msgid "Select 'Web Application' as the application type." +msgstr "" + +#: addons/googlecloud.php:828 methods/googledrive.php:917 +msgid "" +"You must add the following as the authorised redirect URI (under \"More " +"Options\") when asked" +msgstr "" + +#: addons/googlecloud.php:839 addons/onedrive.php:781 +#: methods/googledrive.php:927 +msgid "Client ID" +msgstr "" + +#: addons/googlecloud.php:842 methods/googledrive.php:928 +msgid "" +"If Google later shows you the message \"invalid_client\", then you did not " +"enter a valid client ID here." +msgstr "" + +#: addons/googlecloud.php:847 addons/onedrive.php:785 +#: methods/googledrive.php:931 +msgid "Client Secret" +msgstr "" + +#: addons/googlecloud.php:854 +msgid "Project ID" +msgstr "" + +#: addons/googlecloud.php:855 +#, php-format +msgid "Enter the ID of the %s project you wish to use here." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "" +"N.B. This is only needed if you have not already created the bucket, and you " +"wish UpdraftPlus to create it for you." +msgstr "" + +#: addons/googlecloud.php:855 +msgid "Otherwise, you can leave it blank." +msgstr "" + +#: addons/googlecloud.php:855 addons/migrator.php:347 addons/migrator.php:350 +#: addons/migrator.php:353 admin.php:773 admin.php:2335 backup.php:2938 +#: updraftplus.php:147 +msgid "Go here for more information." +msgstr "" + +#: addons/googlecloud.php:859 +msgid "Bucket" +msgstr "" + +#: addons/googlecloud.php:860 +#, php-format +msgid "Enter the name of the %s bucket you wish to use here." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "" +"Bucket names have to be globally unique. If the bucket does not already " +"exist, then it will be created." +msgstr "" + +#: addons/googlecloud.php:860 +msgid "See Google's guidelines on bucket naming by following this link." +msgstr "" + +#: addons/googlecloud.php:860 +#, php-format +msgid "You must use a bucket name that is unique, for all %s users." +msgstr "" + +#: addons/googlecloud.php:865 addons/s3-enhanced.php:46 +msgid "Storage class" +msgstr "" + +#: addons/googlecloud.php:865 addons/googlecloud.php:880 +#: addons/s3-enhanced.php:46 addons/s3-enhanced.php:60 +msgid "(Read more)" +msgstr "" + +#: addons/googlecloud.php:875 addons/googlecloud.php:890 +msgid "This setting applies only when a new bucket is being created." +msgstr "" + +#: addons/googlecloud.php:875 +msgid "" +"Note that Google do not support every storage class in every location - you " +"should read their documentation to learn about current availability." +msgstr "" + +#: addons/googlecloud.php:880 +msgid "Bucket location" +msgstr "" + +#: addons/googlecloud.php:896 methods/googledrive.php:961 +msgid "Authenticate with Google" +msgstr "" + +#: addons/googlecloud.php:898 methods/googledrive.php:962 +msgid "" +"(You appear to be already authenticated, though you can " +"authenticate again to refresh your access if you've had a problem)." +msgstr "" + +#: addons/googlecloud.php:902 addons/onedrive.php:800 methods/dropbox.php:450 +#: methods/googledrive.php:966 +#, php-format +msgid "Account holder's name: %s." +msgstr "" + +#: addons/googlecloud.php:907 methods/googledrive.php:972 +msgid "" +"After you have saved your settings (by clicking 'Save " +"Changes' below), then come back here once and click this link to complete " +"authentication with Google." +msgstr "" + +#: addons/importer.php:70 +msgid "" +"Was this a backup created by a different backup plugin? If so, then you " +"might first need to rename it so that it can be recognised - please follow " +"this link." +msgstr "" + +#: addons/importer.php:70 +#, php-format +msgid "Supported backup plugins: %s" +msgstr "" + +#: addons/importer.php:256 admin.php:4522 class-updraftplus.php:2303 +#, php-format +msgid "Backup created by: %s." +msgstr "" + +#: addons/lockadmin.php:105 +msgid "The admin password has now been removed." +msgstr "" + +#: addons/lockadmin.php:107 +msgid "An admin password has been set." +msgstr "" + +#: addons/lockadmin.php:109 +msgid "The admin password has been changed." +msgstr "" + +#: addons/lockadmin.php:111 +msgid "Settings saved." +msgstr "" + +#: addons/lockadmin.php:132 +msgid "Lock access to the UpdraftPlus settings page" +msgstr "" + +#: addons/lockadmin.php:139 +msgid "Please make sure that you have made a note of the password!" +msgstr "" + +#: addons/lockadmin.php:147 addons/moredatabase.php:234 addons/sftp.php:368 +#: addons/webdav.php:66 methods/openstack2.php:127 methods/updraftvault.php:304 +#: udaddons/options.php:145 +msgid "Password" +msgstr "" + +#: addons/lockadmin.php:150 +msgid "1 hour" +msgstr "" + +#: addons/lockadmin.php:151 addons/lockadmin.php:152 +#, php-format +msgid "%s hours" +msgstr "" + +#: addons/lockadmin.php:153 +msgid "1 week" +msgstr "" + +#: addons/lockadmin.php:154 addons/lockadmin.php:155 +#, php-format +msgid "%s weeks" +msgstr "" + +#: addons/lockadmin.php:163 +msgid "Require password again after" +msgstr "" + +#: addons/lockadmin.php:165 +msgid "Support URL" +msgstr "" + +#: addons/lockadmin.php:165 +msgid "" +"Anyone seeing the lock screen will be shown this URL for support - enter a " +"website address or an email address." +msgstr "" + +#: addons/lockadmin.php:165 +msgid "Otherwise, the default link will be shown." +msgstr "" + +#: addons/lockadmin.php:167 +msgid "Change Lock Settings" +msgstr "" + +#: addons/lockadmin.php:193 addons/lockadmin.php:199 +msgid "Unlock" +msgstr "" + +#: addons/lockadmin.php:205 +msgid "Password incorrect" +msgstr "" + +#: addons/lockadmin.php:208 +msgid "To access the UpdraftPlus settings, please enter your unlock password" +msgstr "" + +#: addons/lockadmin.php:215 +msgid "" +"For unlocking support, please contact whoever manages UpdraftPlus for you." +msgstr "" + +#: addons/migrator.php:162 +msgid "" +"A \"migration\" is ultimately the same as a restoration - but using backup " +"archives that you import from another site." +msgstr "" + +#: addons/migrator.php:162 +msgid "" +"The UpdraftPlus Migrator modifies the restoration operation appropriately, " +"to fit the backup data to the new site." +msgstr "" + +#: addons/migrator.php:165 +#, php-format +msgid "Read this article to see step-by-step how it's done." +msgstr "" + +#: addons/migrator.php:182 +msgid "This site has no backups to restore from yet." +msgstr "" + +#: addons/migrator.php:189 +msgid "Restore an existing backup set onto this site" +msgstr "" + +#: addons/migrator.php:189 +msgid "To import a backup set, go to the \"Existing Backups\" tab" +msgstr "" + +#: addons/migrator.php:218 +msgid "" +"After pressing this button, you will be given the option to choose which " +"components you wish to migrate" +msgstr "" + +#: addons/migrator.php:218 admin.php:517 admin.php:2447 admin.php:4623 +msgid "Restore" +msgstr "" + +#: addons/migrator.php:244 +#, php-format +msgid "Disabled this plugin: %s: re-activate it manually when you are ready." +msgstr "" + +#: addons/migrator.php:257 +#, php-format +msgid "%s: Skipping cache file (does not already exist)" +msgstr "" + +#: addons/migrator.php:263 addons/migrator.php:288 +msgid "Search / replace database" +msgstr "" + +#: addons/migrator.php:264 addons/migrator.php:296 +msgid "Search for" +msgstr "" + +#: addons/migrator.php:265 addons/migrator.php:297 +msgid "Replace with" +msgstr "" + +#: addons/migrator.php:269 addons/migrator.php:1848 addons/moredatabase.php:70 +#: addons/moredatabase.php:72 addons/moredatabase.php:74 addons/sftp.php:417 +#: addons/sftp.php:421 addons/sftp.php:425 addons/webdav.php:100 admin.php:536 +#: methods/addon-base.php:277 methods/cloudfiles-new.php:142 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:504 +#: methods/cloudfiles.php:509 methods/ftp.php:355 methods/ftp.php:359 +#: methods/openstack2.php:142 methods/openstack2.php:147 +#: methods/openstack2.php:152 methods/openstack2.php:157 methods/s3.php:896 +#: methods/s3.php:900 +#, php-format +msgid "Failure: No %s was given." +msgstr "" + +#: addons/migrator.php:269 +msgid "search term" +msgstr "" + +#: addons/migrator.php:270 addons/migrator.php:282 admin.php:2244 +#: admin.php:2253 admin.php:2262 admin.php:2304 admin.php:3434 +msgid "Return to UpdraftPlus Configuration" +msgstr "" + +#: addons/migrator.php:289 +msgid "This can easily destroy your site; so, use it with care!" +msgstr "" + +#: addons/migrator.php:290 +msgid "A search/replace cannot be undone - are you sure you want to do this?" +msgstr "" + +#: addons/migrator.php:298 +msgid "Rows per batch" +msgstr "" + +#: addons/migrator.php:299 +msgid "These tables only" +msgstr "" + +#: addons/migrator.php:299 +msgid "Enter a comma-separated list; otherwise, leave blank for all tables." +msgstr "" + +#: addons/migrator.php:301 +msgid "Go" +msgstr "" + +#: addons/migrator.php:309 admin.php:2330 class-updraftplus.php:3772 +#: restorer.php:1441 restorer.php:1470 restorer.php:1885 +msgid "Warning:" +msgstr "" + +#: addons/migrator.php:309 +msgid "" +"This looks like a migration (the backup is from a site with a different " +"address/URL), but you did not check the option to search-and-replace the " +"database. That is usually a mistake." +msgstr "" + +#: addons/migrator.php:313 +msgid "Processed plugin:" +msgstr "" + +#: addons/migrator.php:324 +msgid "Network activating theme:" +msgstr "" + +#: addons/migrator.php:347 addons/migrator.php:350 addons/migrator.php:353 +#, php-format +msgid "" +"You selected %s to be included in the restoration - this cannot / should not " +"be done when importing a single site into a network." +msgstr "" + +#: addons/migrator.php:347 +msgid "WordPress core" +msgstr "" + +#: addons/migrator.php:350 +msgid "other content from wp-content" +msgstr "" + +#: addons/migrator.php:353 addons/multisite.php:607 +msgid "Must-use plugins" +msgstr "" + +#: addons/migrator.php:359 addons/migrator.php:361 +msgid "Importing a single site into a multisite install" +msgstr "" + +#: addons/migrator.php:359 admin.php:2897 admin.php:3883 +#, php-format +msgid "This feature requires %s version %s or later" +msgstr "" + +#: addons/migrator.php:361 +#, php-format +msgid "This feature is not compatible with %s" +msgstr "" + +#: addons/migrator.php:367 +msgid "Information needed to continue:" +msgstr "" + +#: addons/migrator.php:368 +msgid "" +"Enter details for where this new site is to live within your multisite " +"install:" +msgstr "" + +#: addons/migrator.php:381 addons/migrator.php:383 +msgid "You must use lower-case letters or numbers for the site path, only." +msgstr "" + +#: addons/migrator.php:391 +msgid "Attribute imported content to user" +msgstr "" + +#: addons/migrator.php:429 +msgid "Migrated site (from UpdraftPlus)" +msgstr "" + +#: addons/migrator.php:432 +#, php-format +msgid "Required information for restoring this backup was not given (%s)" +msgstr "" + +#: addons/migrator.php:453 +msgid "New site:" +msgstr "" + +#: addons/migrator.php:489 addons/migrator.php:490 +msgid "Error when creating new site at your chosen address:" +msgstr "" + +#: addons/migrator.php:508 +msgid "ERROR: Site URL already taken." +msgstr "" + +#: addons/migrator.php:515 +msgid "ERROR: problem creating site entry." +msgstr "" + +#: addons/migrator.php:526 +#, php-format +msgid "" +"All references to the site location in the database will be replaced with " +"your current site URL, which is: %s" +msgstr "" + +#: addons/migrator.php:526 +msgid "Search and replace site location in the database (migrate)" +msgstr "" + +#: addons/migrator.php:526 +msgid "(learn more)" +msgstr "" + +#: addons/migrator.php:585 restorer.php:1379 +msgid "" +"Database access: Direct MySQL access is not available, so we are falling " +"back to wpdb (this will be considerably slower)" +msgstr "" + +#: addons/migrator.php:658 +#, php-format +msgid "" +"Skipping this table: data in this table (%s) should not be search/replaced" +msgstr "" + +#: addons/migrator.php:666 +#, php-format +msgid "Replacing in blogs/site table: from: %s to: %s" +msgstr "" + +#: addons/migrator.php:735 +msgid "Adjusting multisite paths" +msgstr "" + +#: addons/migrator.php:762 addons/migrator.php:1066 +#, php-format +msgid "Failed: the %s operation was not able to start." +msgstr "" + +#: addons/migrator.php:762 addons/migrator.php:764 +msgid "search and replace" +msgstr "" + +#: addons/migrator.php:764 addons/migrator.php:1068 +#, php-format +msgid "Failed: we did not understand the result returned by the %s operation." +msgstr "" + +#: addons/migrator.php:836 +msgid "Database: search and replace site URL" +msgstr "" + +#: addons/migrator.php:840 +msgid "This option was not selected." +msgstr "" + +#: addons/migrator.php:874 addons/migrator.php:878 addons/migrator.php:882 +#: addons/migrator.php:887 addons/migrator.php:891 addons/migrator.php:896 +#, php-format +msgid "Error: unexpected empty parameter (%s, %s)" +msgstr "" + +#: addons/migrator.php:902 +#, php-format +msgid "Nothing to do: the site URL is already: %s" +msgstr "" + +#: addons/migrator.php:913 +#, php-format +msgid "" +"Warning: the database's site URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/migrator.php:918 +#, php-format +msgid "" +"Warning: the database's home URL (%s) is different to what we expected (%s)" +msgstr "" + +#: addons/migrator.php:929 +#, php-format +msgid "Database search and replace: replace %s in backup dump with %s" +msgstr "" + +#: addons/migrator.php:969 +msgid "Could not get list of tables" +msgstr "" + +#: addons/migrator.php:992 addons/migrator.php:1035 addons/migrator.php:1182 +msgid "Search and replacing table:" +msgstr "" + +#: addons/migrator.php:992 +msgid "skipped (not in list)" +msgstr "" + +#: addons/migrator.php:1035 +msgid "already done" +msgstr "" + +#: addons/migrator.php:1084 +msgid "Tables examined:" +msgstr "" + +#: addons/migrator.php:1085 +msgid "Rows examined:" +msgstr "" + +#: addons/migrator.php:1086 +msgid "Changes made:" +msgstr "" + +#: addons/migrator.php:1087 +msgid "SQL update commands run:" +msgstr "" + +#: addons/migrator.php:1088 admin.php:484 +msgid "Errors:" +msgstr "" + +#: addons/migrator.php:1089 +msgid "Time taken (seconds):" +msgstr "" + +#: addons/migrator.php:1120 restorer.php:1965 +msgid "the database query being run was:" +msgstr "" + +#: addons/migrator.php:1225 +#, php-format +msgid "rows: %d" +msgstr "" + +#: addons/migrator.php:1234 +#, php-format +msgid "Searching and replacing reached row: %d" +msgstr "" + +#: addons/migrator.php:1345 +#, php-format +msgid "\"%s\" has no primary key, manual change needed on row %s." +msgstr "" + +#: addons/migrator.php:1671 +msgid "Backup data will be sent to:" +msgstr "" + +#: addons/migrator.php:1686 +msgid "site not found" +msgstr "" + +#: addons/migrator.php:1719 admin.php:533 +#, php-format +msgid "" +"You should check that the remote site is online, not firewalled, does not " +"have security modules that may be blocking access, has UpdraftPlus version " +"%s or later active and that the keys have been entered correctly." +msgstr "" + +#: addons/migrator.php:1730 +#, php-format +msgid "" +"The site URL you are sending to (%s) looks like a local development website. " +"If you are sending from an external network, it is likely that a firewall " +"will be blocking this." +msgstr "" + +#: addons/migrator.php:1734 +msgid "" +"If sending directly from site to site does not work for you, then there are " +"three other methods - please try one of these instead." +msgstr "" + +#: addons/migrator.php:1747 admin.php:540 +msgid "Testing connection..." +msgstr "" + +#: addons/migrator.php:1747 admin.php:3466 admin.php:3500 admin.php:3504 +#: admin.php:4876 admin.php:4890 restorer.php:2073 restorer.php:2178 +msgid "OK" +msgstr "" + +#: addons/migrator.php:1751 addons/moredatabase.php:235 +#: addons/reporting.php:227 admin.php:159 admin.php:1288 admin.php:3008 +#: admin.php:3010 admin.php:4287 admin.php:4479 admin.php:4976 +msgid "Database" +msgstr "" + +#: addons/migrator.php:1765 +msgid "Also send this backup to the active remote storage locations" +msgstr "" + +#: addons/migrator.php:1817 +msgid "A key with this name already exists; you must use a unique name." +msgstr "" + +#: addons/migrator.php:1832 central/bootstrap.php:363 +msgid "Key created successfully." +msgstr "" + +#: addons/migrator.php:1832 central/bootstrap.php:363 +msgid "You must copy and paste this key now - it cannot be shown again." +msgstr "" + +#: addons/migrator.php:1848 +msgid "key" +msgstr "" + +#: addons/migrator.php:1858 +msgid "The entered key was the wrong length - please try again." +msgstr "" + +#: addons/migrator.php:1860 addons/migrator.php:1862 addons/migrator.php:1866 +msgid "The entered key was corrupt - please try again." +msgstr "" + +#: addons/migrator.php:1871 +msgid "" +"The entered key does not belong to a remote site (it belongs to this one)." +msgstr "" + +#: addons/migrator.php:1887 +msgid "The key was successfully added." +msgstr "" + +#: addons/migrator.php:1887 +msgid "It is for sending backups to the following site: " +msgstr "" + +#: addons/migrator.php:1906 +msgid "No receiving sites have yet been added." +msgstr "" + +#: addons/migrator.php:1908 admin.php:532 +msgid "Send to site:" +msgstr "" + +#: addons/migrator.php:1914 admin.php:541 +msgid "Send" +msgstr "" + +#: addons/migrator.php:2169 +msgid "Or, send a backup to another site" +msgstr "" + +#: addons/migrator.php:2172 +msgid "" +"To add a site as a destination for sending to, enter that site's key below." +msgstr "" + +#: addons/migrator.php:2172 +msgid "" +"Keys for this site are created in the section below the one you just pressed " +"in." +msgstr "" + +#: addons/migrator.php:2172 +msgid "" +"So, to get the key for the remote site, open the 'Migrate' window on that " +"site, scroll down, and you can create one there." +msgstr "" + +#: addons/migrator.php:2172 +msgid "How do I get a site's key?" +msgstr "" + +#: addons/migrator.php:2177 +msgid "Paste key here" +msgstr "" + +#: addons/migrator.php:2177 admin.php:529 +msgid "Add site" +msgstr "" + +#: addons/migrator.php:2188 +msgid "Or, receive a backup from a remote site" +msgstr "" + +#: addons/migrator.php:2189 +msgid "" +"To allow another site to send a backup to this site, create a key, and then " +"press the 'Migrate' button on the sending site, and copy-and-paste the key " +"there." +msgstr "" + +#: addons/migrator.php:2194 +msgid "" +"Create a key: give this key a unique name (e.g. indicate the site it is " +"for), then press \"Create Key\":" +msgstr "" + +#: addons/migrator.php:2195 +msgid "Enter your chosen name" +msgstr "" + +#: addons/migrator.php:2197 central/bootstrap.php:501 +msgid "Encryption key size:" +msgstr "" + +#: addons/migrator.php:2199 addons/migrator.php:2200 addons/migrator.php:2202 +#: central/bootstrap.php:503 central/bootstrap.php:504 +#: central/bootstrap.php:506 +#, php-format +msgid "%s bits" +msgstr "" + +#: addons/migrator.php:2199 central/bootstrap.php:503 +msgid "easy to break, fastest" +msgstr "" + +#: addons/migrator.php:2200 central/bootstrap.php:504 +msgid "faster (possibility for slow PHP installs)" +msgstr "" + +#: addons/migrator.php:2201 central/bootstrap.php:505 +#, php-format +msgid "%s bytes" +msgstr "" + +#: addons/migrator.php:2201 central/bootstrap.php:505 +msgid "recommended" +msgstr "" + +#: addons/migrator.php:2202 central/bootstrap.php:506 +msgid "slower, strongest" +msgstr "" + +#: addons/migrator.php:2205 +msgid "Create key" +msgstr "" + +#: addons/migrator.php:2210 +msgid "Your new key:" +msgstr "" + +#: addons/migrator.php:2228 +msgid "No keys to allow remote sites to connect have yet been created." +msgstr "" + +#: addons/migrator.php:2237 +msgid "Existing keys" +msgstr "" + +#: addons/migrator.php:2240 admin.php:512 admin.php:2934 admin.php:3460 +#: admin.php:3493 admin.php:4632 +msgid "Delete" +msgstr "" + +#: addons/moredatabase.php:45 +msgid "Database decryption phrase" +msgstr "" + +#: addons/moredatabase.php:70 +msgid "user" +msgstr "" + +#: addons/moredatabase.php:72 +msgid "host" +msgstr "" + +#: addons/moredatabase.php:74 +msgid "database name" +msgstr "" + +#: addons/moredatabase.php:85 +msgid "database connection attempt failed" +msgstr "" + +#: addons/moredatabase.php:93 backup.php:1353 +msgid "" +"Connection failed: check your access details, that the database server is " +"up, and that the network connection is not firewalled." +msgstr "" + +#: addons/moredatabase.php:112 +#, php-format +msgid "%s table(s) found." +msgstr "" + +#: addons/moredatabase.php:118 +#, php-format +msgid "%s total table(s) found; %s with the indicated prefix." +msgstr "" + +#: addons/moredatabase.php:125 admin.php:1514 +msgid "Messages:" +msgstr "" + +#: addons/moredatabase.php:136 +msgid "Connection succeeded." +msgstr "" + +#: addons/moredatabase.php:138 +msgid "Connection failed." +msgstr "" + +#: addons/moredatabase.php:153 +#, php-format +msgid "" +"This option will cause tables stored in the MySQL database which do not " +"belong to WordPress (identified by their lacking the configured WordPress " +"prefix, %s) to also be backed up." +msgstr "" + +#: addons/moredatabase.php:153 +msgid "Backup non-WordPress tables contained in the same database as WordPress" +msgstr "" + +#: addons/moredatabase.php:154 +msgid "" +"If your database includes extra tables that are not part of this WordPress " +"site (you will know if this is the case), then activate this option to also " +"back them up." +msgstr "" + +#: addons/moredatabase.php:158 +msgid "Add an external database to backup..." +msgstr "" + +#: addons/moredatabase.php:229 addons/morefiles.php:212 +#: addons/morefiles.php:223 +msgid "Remove" +msgstr "" + +#: addons/moredatabase.php:230 +msgid "Backup external database" +msgstr "" + +#: addons/moredatabase.php:232 addons/sftp.php:347 addons/webdav.php:72 +msgid "Host" +msgstr "" + +#: addons/moredatabase.php:233 addons/sftp.php:361 addons/webdav.php:60 +#: methods/cloudfiles-new.php:147 methods/cloudfiles.php:509 +#: methods/openstack2.php:121 +msgid "Username" +msgstr "" + +#: addons/moredatabase.php:236 +msgid "Table prefix" +msgstr "" + +#: addons/moredatabase.php:237 +msgid "Test connection..." +msgstr "" + +#: addons/moredatabase.php:250 +msgid "Testing..." +msgstr "" + +#: addons/moredatabase.php:269 +msgid "" +"Error: the server sent us a response (JSON) which we did not understand." +msgstr "" + +#: addons/moredatabase.php:322 +msgid "Encryption error occurred when encrypting database. Encryption aborted." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +#, php-format +msgid "Your web-server does not have the %s module installed." +msgstr "" + +#: addons/moredatabase.php:333 addons/moredatabase.php:364 +msgid "Without it, encryption will be a lot slower." +msgstr "" + +#: addons/moredatabase.php:338 +msgid "" +"If you enter text here, it is used to encrypt database backups (Rijndael). " +"Do make a separate record of it and do not lose it, or all your " +"backups will be useless. This is also the key used to " +"decrypt backups from this admin interface (so if you change it, then " +"automatic decryption will not work until you change it back)." +msgstr "" + +#: addons/morefiles.php:55 addons/morefiles.php:56 addons/reporting.php:151 +msgid "Contains:" +msgstr "" + +#: addons/morefiles.php:63 admin.php:3010 +#, php-format +msgid "%s restoration options:" +msgstr "" + +#: addons/morefiles.php:63 addons/morefiles.php:442 +msgid "WordPress Core" +msgstr "" + +#: addons/morefiles.php:67 +msgid "Over-write wp-config.php" +msgstr "" + +#: addons/morefiles.php:67 +msgid "(learn more about this significant option)" +msgstr "" + +#: addons/morefiles.php:86 +msgid "The above files comprise everything in a WordPress installation." +msgstr "" + +#: addons/morefiles.php:93 +msgid "" +"WordPress core (including any additions to your WordPress root directory)" +msgstr "" + +#: addons/morefiles.php:94 +#, php-format +msgid "WordPress root directory server path: %s" +msgstr "" + +#: addons/morefiles.php:106 +#, php-format +msgid "" +"Unable to read zip file (%s) - could not pre-scan it to check its integrity." +msgstr "" + +#: addons/morefiles.php:116 +#, php-format +msgid "" +"Unable to open zip file (%s) - could not pre-scan it to check its integrity." +msgstr "" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +#, php-format +msgid "" +"This does not look like a valid WordPress core backup - the file %s was " +"missing." +msgstr "" + +#: addons/morefiles.php:163 addons/morefiles.php:164 +msgid "" +"If you are not sure then you should stop; otherwise you may destroy this " +"WordPress installation." +msgstr "" + +#: addons/morefiles.php:178 +msgid "Any other file/directory on your server that you wish to back up" +msgstr "" + +#: addons/morefiles.php:179 +msgid "More Files" +msgstr "" + +#: addons/morefiles.php:200 +msgid "" +"If you are not sure what this option is for, then you will not want it, and " +"should turn it off." +msgstr "" + +#: addons/morefiles.php:200 +msgid "" +"If using it, enter an absolute path (it is not relative to your WordPress " +"install)." +msgstr "" + +#: addons/morefiles.php:202 +msgid "" +"Be careful what you enter - if you enter / then it really will try to create " +"a zip containing your entire webserver." +msgstr "" + +#: addons/morefiles.php:211 addons/morefiles.php:222 +msgid "Enter the directory:" +msgstr "" + +#: addons/morefiles.php:217 +msgid "Add another..." +msgstr "" + +#: addons/morefiles.php:260 admin.php:4113 +msgid "Exclude these:" +msgstr "" + +#: addons/morefiles.php:262 admin.php:4115 +msgid "" +"If entering multiple files/directories, then separate them with commas. For " +"entities at the top level, you can use a * at the start or end of the entry " +"as a wildcard." +msgstr "" + +#: addons/morefiles.php:308 +msgid "No backup of location: there was nothing found to back up" +msgstr "" + +#: addons/morefiles.php:442 +#, php-format +msgid "No backup of %s directories: there was nothing found to back up" +msgstr "" + +#: addons/morestorage.php:26 +msgid "(as many as you like)" +msgstr "" + +#: addons/morestorage.php:78 +msgid "Remote Storage Options" +msgstr "" + +#: addons/multisite.php:66 addons/multisite.php:644 options.php:41 +msgid "UpdraftPlus Backups" +msgstr "" + +#: addons/multisite.php:174 +msgid "Multisite Install" +msgstr "" + +#: addons/multisite.php:180 udaddons/options.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "" + +#: addons/multisite.php:194 +msgid "You do not have permission to access this page." +msgstr "" + +#: addons/multisite.php:374 addons/multisite.php:384 +#, php-format +msgid "" +"Restoring only the site with id=%s: removing other data (if any) from the " +"unpacked backup" +msgstr "" + +#: addons/multisite.php:452 class-updraftplus.php:1330 +msgid "Uploads" +msgstr "" + +#: addons/multisite.php:522 +msgid "Which site to restore" +msgstr "" + +#: addons/multisite.php:526 +msgid "All sites" +msgstr "" + +#: addons/multisite.php:531 +msgid "may include some site-wide data" +msgstr "" + +#: addons/multisite.php:540 +msgid "" +"N.B. this option only affects the restoration of the database and uploads - " +"other file entities (such as plugins) in WordPress are shared by the whole " +"network." +msgstr "" + +#: addons/multisite.php:540 +msgid "Read more..." +msgstr "" + +#: addons/multisite.php:614 +msgid "Blog uploads" +msgstr "" + +#: addons/onedrive.php:50 +#, php-format +msgid "" +"The required %s PHP module is not installed - ask your web hosting company " +"to enable it." +msgstr "" + +#: addons/onedrive.php:91 methods/dropbox.php:176 +#, php-format +msgid "" +"Account full: your %s account has only %d bytes left, but the file to be " +"uploaded has %d bytes remaining (total size: %d bytes)" +msgstr "" + +#: addons/onedrive.php:522 +#, php-format +msgid "Please re-authorize the connection to your %s account." +msgstr "" + +#: addons/onedrive.php:575 class-updraftplus.php:309 methods/dropbox.php:496 +#: methods/dropbox.php:510 methods/dropbox.php:605 +#, php-format +msgid "%s error: %s" +msgstr "" + +#: addons/onedrive.php:575 methods/dropbox.php:496 +#, php-format +msgid "%s authentication" +msgstr "" + +#: addons/onedrive.php:603 methods/dropbox.php:535 methods/googledrive.php:332 +#, php-format +msgid "Your %s quota usage: %s %% used, %s available" +msgstr "" + +#: addons/onedrive.php:610 methods/dropbox.php:522 +#, php-format +msgid "Your %s account name: %s" +msgstr "" + +#: addons/onedrive.php:637 addons/onedrive.php:781 addons/onedrive.php:785 +msgid "OneDrive" +msgstr "" + +#: addons/onedrive.php:747 addons/onedrive.php:749 +#, php-format +msgid "%s authorisation failed:" +msgstr "" + +#: addons/onedrive.php:765 +#, php-format +msgid "" +"Microsoft OneDrive is not compatible with sites hosted on a localhost or " +"127.0.0.1 URL - their developer console forbids these (current URL is: %s)." +msgstr "" + +#: addons/onedrive.php:767 +msgid "" +"You must add the following as the authorised redirect URI in your OneDrive " +"console (under \"API Settings\") when asked" +msgstr "" + +#: addons/onedrive.php:773 +msgid "Create OneDrive credentials in your OneDrive developer console." +msgstr "" + +#: addons/onedrive.php:782 +msgid "" +"If OneDrive later shows you the message \"unauthorized_client\", then you " +"did not enter a valid client ID here." +msgstr "" + +#: addons/onedrive.php:793 +#, php-format +msgid "N.B. %s is not case-sensitive." +msgstr "" + +#: addons/onedrive.php:798 methods/dropbox.php:443 +#, php-format +msgid "Authenticate with %s" +msgstr "" + +#: addons/onedrive.php:799 methods/dropbox.php:444 +msgid "(You appear to be already authenticated)." +msgstr "" + +#: addons/onedrive.php:801 methods/dropbox.php:444 +#, php-format +msgid "" +"After you have saved your settings (by clicking 'Save " +"Changes' below), then come back here once and click this link to complete " +"authentication with %s." +msgstr "" + +#: addons/reporting.php:60 +msgid "Your label for this backup (optional)" +msgstr "" + +#: addons/reporting.php:65 addons/reporting.php:148 backup.php:923 +#: class-updraftplus.php:3705 +msgid "Backup of:" +msgstr "" + +#: addons/reporting.php:123 +#, php-format +msgid "%d errors, %d warnings" +msgstr "" + +#: addons/reporting.php:137 +#, php-format +msgid "%d hours, %d minutes, %d seconds" +msgstr "" + +#: addons/reporting.php:142 +msgid "Backup Report" +msgstr "" + +#: addons/reporting.php:143 +#, php-format +msgid "Backup made by %s" +msgstr "" + +#: addons/reporting.php:149 backup.php:926 +msgid "Latest status:" +msgstr "" + +#: addons/reporting.php:150 +msgid "Backup began:" +msgstr "" + +#: addons/reporting.php:162 +msgid "Errors / warnings:" +msgstr "" + +#: addons/reporting.php:165 +msgid "Errors" +msgstr "" + +#: addons/reporting.php:180 +msgid "Warnings" +msgstr "" + +#: addons/reporting.php:185 +msgid "" +"Note that warning messages are advisory - the backup process does not stop " +"for them. Instead, they provide information that you might find useful, or " +"that may indicate the source of a problem if the backup did not succeed." +msgstr "" + +#: addons/reporting.php:189 +msgid "Time taken:" +msgstr "" + +#: addons/reporting.php:190 admin.php:4300 +msgid "Uploaded to:" +msgstr "" + +#: addons/reporting.php:212 admin.php:4312 +msgid "None" +msgstr "" + +#: addons/reporting.php:232 backup.php:880 +msgid "The log file has been attached to this email." +msgstr "" + +#: addons/reporting.php:235 +msgid "Debugging information" +msgstr "" + +#: addons/reporting.php:287 +#, php-format +msgid " (with errors (%s))" +msgstr "" + +#: addons/reporting.php:289 +#, php-format +msgid " (with warnings (%s))" +msgstr "" + +#: addons/reporting.php:319 +msgid "" +"Use the \"Reporting\" section to configure the email addresses to be used." +msgstr "" + +#: addons/reporting.php:355 +msgid "Email reports" +msgstr "" + +#: addons/reporting.php:380 +msgid "" +"Enter addresses here to have a report sent to them when a backup job " +"finishes." +msgstr "" + +#: addons/reporting.php:394 +msgid "Add another address..." +msgstr "" + +#: addons/reporting.php:403 +msgid "Log all messages to syslog (only server admins are likely to want this)" +msgstr "" + +#: addons/reporting.php:423 admin.php:469 +msgid "To send to more than one address, separate each address with a comma." +msgstr "" + +#: addons/reporting.php:425 admin.php:464 +msgid "Send a report only when there are warnings/errors" +msgstr "" + +#: addons/reporting.php:427 admin.php:466 +#, php-format +msgid "" +"Be aware that mail servers tend to have size limits; typically around %s Mb; " +"backups larger than any limits will likely not arrive." +msgstr "" + +#: addons/reporting.php:427 admin.php:465 +msgid "When the Email storage method is enabled, also send the entire backup" +msgstr "" + +#: addons/s3-enhanced.php:54 +msgid "Standard (infrequent access)" +msgstr "" + +#: addons/s3-enhanced.php:55 +msgid "Reduced redundancy" +msgstr "" + +#: addons/s3-enhanced.php:60 +msgid "Server-side encryption" +msgstr "" + +#: addons/s3-enhanced.php:61 +msgid "Check this box to use Amazon's server-side encryption" +msgstr "" + +#: addons/s3-enhanced.php:71 +msgid "" +"If you have an AWS admin user, then you can use this wizard to quickly " +"create a new AWS (IAM) user with access to only this bucket (rather than " +"your whole account)" +msgstr "" + +#: addons/s3-enhanced.php:83 +msgid "You need to enter an admin access key" +msgstr "" + +#: addons/s3-enhanced.php:86 +msgid "You need to enter an admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:89 +msgid "You need to enter a new IAM username" +msgstr "" + +#: addons/s3-enhanced.php:92 +msgid "You need to enter a bucket" +msgstr "" + +#: addons/s3-enhanced.php:117 +msgid "Cannot create new AWS user, since the old AWS toolkit is being used." +msgstr "" + +#: addons/s3-enhanced.php:124 +msgid "AWS authentication failed" +msgstr "" + +#: addons/s3-enhanced.php:145 methods/openstack2.php:113 methods/s3.php:940 +msgid "Region" +msgstr "" + +#: addons/s3-enhanced.php:171 +msgid "" +"Failure: We could not successfully access or create such a bucket. Please " +"check your access credentials, and if those are correct then try another " +"bucket name (as another AWS user may already have taken your name)." +msgstr "" + +#: addons/s3-enhanced.php:172 methods/s3.php:948 +#, php-format +msgid "The error reported by %s was:" +msgstr "" + +#: addons/s3-enhanced.php:199 +msgid "Conflict: that user already exists" +msgstr "" + +#: addons/s3-enhanced.php:201 addons/s3-enhanced.php:204 +#: addons/s3-enhanced.php:208 +#, php-format +msgid "IAM operation failed (%s)" +msgstr "" + +#: addons/s3-enhanced.php:221 +msgid "Failed to create user Access Key" +msgstr "" + +#: addons/s3-enhanced.php:223 addons/s3-enhanced.php:227 +msgid "Operation to create user Access Key failed" +msgstr "" + +#: addons/s3-enhanced.php:282 addons/s3-enhanced.php:284 +msgid "Failed to apply User Policy" +msgstr "" + +#: addons/s3-enhanced.php:294 +#, php-format +msgid "Access Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:294 +#, php-format +msgid "Secret Key: %s" +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "" +"Enter your administrative Amazon S3 access/secret keys (this needs to be a " +"key pair with enough rights to create new users and buckets), and a new " +"(unique) username for the new user and a bucket name." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "" +"These will be used to create a new user and key pair with an IAM policy " +"attached which will only allow it to access the indicated bucket." +msgstr "" + +#: addons/s3-enhanced.php:304 +msgid "" +"Then, these lower-powered access credentials can be used, instead of storing " +"your administrative keys." +msgstr "" + +#: addons/s3-enhanced.php:311 +msgid "Admin access key" +msgstr "" + +#: addons/s3-enhanced.php:312 +msgid "Admin secret key" +msgstr "" + +#: addons/s3-enhanced.php:313 +msgid "New IAM username" +msgstr "" + +#: addons/s3-enhanced.php:315 +msgid "S3 storage region" +msgstr "" + +#: addons/s3-enhanced.php:319 +msgid "US Standard (default)" +msgstr "" + +#: addons/s3-enhanced.php:320 +msgid "US West (Oregon)" +msgstr "" + +#: addons/s3-enhanced.php:321 +msgid "US West (N. California)" +msgstr "" + +#: addons/s3-enhanced.php:322 +msgid "US Government West (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:323 +msgid "EU (Ireland)" +msgstr "" + +#: addons/s3-enhanced.php:324 +msgid "EU (Frankfurt)" +msgstr "" + +#: addons/s3-enhanced.php:325 +msgid "Asia Pacific (Seoul)" +msgstr "" + +#: addons/s3-enhanced.php:326 +msgid "Asia Pacific (Singapore)" +msgstr "" + +#: addons/s3-enhanced.php:327 +msgid "Asia Pacific (Sydney)" +msgstr "" + +#: addons/s3-enhanced.php:328 +msgid "Asia Pacific (Mumbai)" +msgstr "" + +#: addons/s3-enhanced.php:329 +msgid "Asia Pacific (Tokyo)" +msgstr "" + +#: addons/s3-enhanced.php:330 +msgid "South America (Sao Paulo)" +msgstr "" + +#: addons/s3-enhanced.php:331 +msgid "China (Beijing) (restricted)" +msgstr "" + +#: addons/s3-enhanced.php:341 +msgid "S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:343 +msgid "Allow download" +msgstr "" + +#: addons/s3-enhanced.php:345 +msgid "" +"Without this permission, you cannot directly download or restore using " +"UpdraftPlus, and will instead need to visit the AWS website." +msgstr "" + +#: addons/s3-enhanced.php:347 +msgid "Allow deletion" +msgstr "" + +#: addons/s3-enhanced.php:349 +msgid "" +"Without this permission, UpdraftPlus cannot delete backups - you should also " +"set your 'retain' settings very high to prevent seeing deletion errors." +msgstr "" + +#: addons/s3-enhanced.php:378 +msgid "Create new IAM user and S3 bucket" +msgstr "" + +#: addons/s3-enhanced.php:437 +msgid "You are now using a IAM user account to access your bucket." +msgstr "" + +#: addons/s3-enhanced.php:437 +msgid "Do remember to save your settings." +msgstr "" + +#: addons/sftp.php:38 +msgid "" +"Encrypted FTP is available, and will be automatically tried first (before " +"falling back to non-encrypted if it is not successful), unless you disable " +"it using the expert options. The 'Test FTP Login' button will tell you what " +"type of connection is in use." +msgstr "" + +#: addons/sftp.php:38 +msgid "" +"Some servers advertise encrypted FTP as available, but then time-out (after " +"a long time) when you attempt to use it. If you find this happenning, then " +"go into the \"Expert Options\" (below) and turn off SSL there." +msgstr "" + +#: addons/sftp.php:38 +msgid "" +"Explicit encryption is used by default. To force implicit encryption (port " +"990), add :990 to your FTP server below." +msgstr "" + +#: addons/sftp.php:45 addons/sftp.php:46 addons/sftp.php:47 +#, php-format +msgid "No %s found" +msgstr "" + +#: addons/sftp.php:45 +msgid "SCP/SFTP host setting" +msgstr "" + +#: addons/sftp.php:46 +msgid "SCP/SFTP user setting" +msgstr "" + +#: addons/sftp.php:47 +msgid "SCP/SFTP password/key" +msgstr "" + +#: addons/sftp.php:74 +msgid "" +"Check your file permissions: Could not successfully create and enter " +"directory:" +msgstr "" + +#: addons/sftp.php:134 addons/sftp.php:146 methods/cloudfiles.php:147 +#: methods/cloudfiles.php:189 methods/openstack-base.php:73 +#: methods/openstack-base.php:262 methods/s3.php:331 methods/s3.php:343 +#: methods/s3.php:344 +#, php-format +msgid "%s Error: Failed to upload" +msgstr "" + +#: addons/sftp.php:280 +#, php-format +msgid "%s Error: Failed to download" +msgstr "" + +#: addons/sftp.php:308 +msgid "The key provided was not in a valid format, or was corrupt." +msgstr "" + +#: addons/sftp.php:342 +msgid "" +"Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if " +"using SCP then you will need to ensure that your webserver allows PHP " +"processes to run long enough to upload your largest backup file." +msgstr "" + +#: addons/sftp.php:354 addons/webdav.php:80 +msgid "Port" +msgstr "" + +#: addons/sftp.php:371 +msgid "" +"Your login may be either password or key-based - you only need to enter one, " +"not both." +msgstr "" + +#: addons/sftp.php:379 +msgctxt "" +"Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also " +"technical acronyms which should not be translated." +msgid "" +"PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are " +"accepted." +msgstr "" + +#: addons/sftp.php:393 +msgid "Directory path" +msgstr "" + +#: addons/sftp.php:395 +msgid "" +"Where to change directory to after logging in - often this is relative to " +"your home directory." +msgstr "" + +#: addons/sftp.php:402 +msgid "Use SCP instead of SFTP" +msgstr "" + +#: addons/sftp.php:408 admin.php:557 methods/addon-base.php:242 +#: methods/cloudfiles.php:496 methods/ftp.php:329 +#: methods/openstack-base.php:524 methods/s3.php:797 +#: methods/stream-base.php:224 +#, php-format +msgid "Test %s Settings" +msgstr "" + +#: addons/sftp.php:417 +msgid "host name" +msgstr "" + +#: addons/sftp.php:421 methods/openstack2.php:142 +msgid "username" +msgstr "" + +#: addons/sftp.php:425 +msgid "password/key" +msgstr "" + +#: addons/sftp.php:430 +msgid "Failure: Port must be an integer." +msgstr "" + +#: addons/sftp.php:460 +msgid "Check your file permissions: Could not successfully create and enter:" +msgstr "" + +#: addons/sftp.php:483 +msgid "" +"Failed: We were able to log in and move to the indicated directory, but " +"failed to successfully create a file in that location." +msgstr "" + +#: addons/sftp.php:485 +msgid "" +"Failed: We were able to log in, but failed to successfully create a file in " +"that location." +msgstr "" + +#: addons/sftp.php:640 addons/sftp.php:643 includes/ftp.class.php:44 +#: includes/ftp.class.php:47 +#, php-format +msgid "" +"The %s connection timed out; if you entered the server correctly, then this " +"is usually caused by a firewall blocking the connection - you should check " +"with your web hosting company." +msgstr "" + +#: addons/sftp.php:885 +#, php-format +msgid "" +"The UpdraftPlus module for this file access method (%s) does not support " +"listing files" +msgstr "" + +#: addons/webdav.php:42 +msgid "WebDAV URL" +msgstr "" + +#: addons/webdav.php:46 +msgid "" +"This WebDAV URL is generated by filling in the options below. If you do not " +"know the details, then you will need to ask your WebDAV provider." +msgstr "" + +#: addons/webdav.php:51 +msgid "Protocol (SSL or not)" +msgstr "" + +#: addons/webdav.php:76 +msgid "A host name cannot contain a slash." +msgstr "" + +#: addons/webdav.php:76 +msgid "Enter any path in the field below." +msgstr "" + +#: addons/webdav.php:84 +msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)" +msgstr "" + +#: addons/webdav.php:89 +msgid "Path" +msgstr "" + +#: admin.php:125 admin.php:146 admin.php:153 +msgid "Nothing currently scheduled" +msgstr "" + +#: admin.php:135 +msgid "At the same time as the files backup" +msgstr "" + +#: admin.php:155 +msgid "Files" +msgstr "" + +#: admin.php:155 backup.php:836 +msgid "Files and database" +msgstr "" + +#: admin.php:330 admin.php:2405 +msgid "Current Status" +msgstr "" + +#: admin.php:330 admin.php:510 admin.php:2444 +msgid "Backup Now" +msgstr "" + +#: admin.php:338 admin.php:1429 admin.php:1668 admin.php:2406 admin.php:2864 +msgid "Existing Backups" +msgstr "" + +#: admin.php:346 admin.php:709 admin.php:2407 +msgid "Settings" +msgstr "" + +#: admin.php:354 admin.php:2408 +msgid "Advanced Tools" +msgstr "" + +#: admin.php:362 +msgid "Extensions" +msgstr "" + +#: admin.php:389 admin.php:403 +#, php-format +msgid "Dismiss (for %s months)" +msgstr "" + +#: admin.php:391 +msgid "Thank you for backing up with UpdraftPlus!" +msgstr "" + +#: admin.php:396 +msgid "Free Newsletter" +msgstr "" + +#: admin.php:396 +msgid "" +"UpdraftPlus news, high-quality training materials for WordPress developers " +"and site-owners, and general WordPress news. You can de-subscribe at any " +"time." +msgstr "" + +#: admin.php:396 +msgid "Follow this link to sign up." +msgstr "" + +#: admin.php:398 +msgid "UpdraftPlus Premium" +msgstr "" + +#: admin.php:398 +msgid "" +"For personal support, the ability to copy sites, more storage destinations, " +"encrypted backups for security, multiple backup destinations, better " +"reporting, no adverts and plenty more, take a look at the premium version of " +"UpdraftPlus - the world’s most popular backup plugin." +msgstr "" + +#: admin.php:398 +msgid "Compare with the free version" +msgstr "" + +#: admin.php:398 +msgid "Go to the shop." +msgstr "" + +#: admin.php:400 +msgid "More Quality Plugins" +msgstr "" + +#: admin.php:400 +msgid "Free two-factor security plugin" +msgstr "" + +#: admin.php:400 +msgid "Premium WooCommerce plugins" +msgstr "" + +#: admin.php:467 +msgid "" +"Rescanning (looking for backups that you have uploaded manually into the " +"internal backup store)..." +msgstr "" + +#: admin.php:468 +msgid "Rescanning remote and local storage for backup sets..." +msgstr "" + +#: admin.php:470 +msgid "" +"If you exclude both the database and the files, then you have excluded " +"everything!" +msgstr "" + +#: admin.php:471 +msgid "" +"You have chosen to backup files, but no file entities have been selected" +msgstr "" + +#: admin.php:472 +msgid "" +"The restore operation has begun. Do not press stop or close your browser " +"until it reports itself as having finished." +msgstr "" + +#: admin.php:474 +msgid "" +"The web server returned an error code (try again, or check your web server " +"logs)" +msgstr "" + +#: admin.php:475 +msgid "" +"The new user's RackSpace console password is (this will not be shown again):" +msgstr "" + +#: admin.php:476 +msgid "Trying..." +msgstr "" + +#: admin.php:477 +msgid "Fetching..." +msgstr "" + +#: admin.php:478 admin.php:2876 +msgid "calculating..." +msgstr "" + +#: admin.php:479 +msgid "Begun looking for this entity" +msgstr "" + +#: admin.php:480 +msgid "Some files are still downloading or being processed - please wait." +msgstr "" + +#: admin.php:481 +msgid "Processing files - please wait..." +msgstr "" + +#: admin.php:482 +msgid "Error: the server sent an empty response." +msgstr "" + +#: admin.php:483 +msgid "Warnings:" +msgstr "" + +#: admin.php:485 +msgid "Error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:486 admin.php:5001 +msgid "Error data:" +msgstr "" + +#: admin.php:488 admin.php:1698 admin.php:4874 class-updraftplus.php:916 +#: methods/addon-base.php:75 methods/addon-base.php:80 +#: methods/addon-base.php:194 methods/addon-base.php:214 +#: methods/stream-base.php:201 restorer.php:2069 restorer.php:2094 +#: restorer.php:2175 updraftplus.php:147 +msgid "Error" +msgstr "" + +#: admin.php:489 admin.php:1926 +msgid "File ready." +msgstr "" + +#: admin.php:490 +msgid "You should:" +msgstr "" + +#: admin.php:491 +msgid "Delete from your web server" +msgstr "" + +#: admin.php:492 +msgid "Download to your computer" +msgstr "" + +#: admin.php:493 +msgid "and then, if you wish," +msgstr "" + +#: admin.php:494 +msgid "" +"Download error: the server sent us a response which we did not understand." +msgstr "" + +#: admin.php:495 +msgid "Requesting start of backup..." +msgstr "" + +#: admin.php:496 +msgid "PHP information" +msgstr "" + +#: admin.php:497 admin.php:3191 +msgid "Delete Old Directories" +msgstr "" + +#: admin.php:498 +msgid "Raw backup history" +msgstr "" + +#: admin.php:499 admin.php:500 class-updraftplus.php:2310 +msgid "" +"This file does not appear to be an UpdraftPlus backup archive (such files " +"are .zip or .gz files which have a name like: backup_(time)_(site " +"name)_(code)_(type).(zip|gz))." +msgstr "" + +#: admin.php:499 +msgid "" +"However, UpdraftPlus archives are standard zip/SQL files - so if you are " +"sure that your file has the right format, then you can rename it to match " +"that pattern." +msgstr "" + +#: admin.php:500 class-updraftplus.php:2310 +msgid "" +"If this is a backup created by a different backup plugin, then UpdraftPlus " +"Premium may be able to help you." +msgstr "" + +#: admin.php:501 +msgid "" +"(make sure that you were trying to upload a zip file previously created by " +"UpdraftPlus)" +msgstr "" + +#: admin.php:502 +msgid "Upload error:" +msgstr "" + +#: admin.php:503 +msgid "" +"This file does not appear to be an UpdraftPlus encrypted database archive " +"(such files are .gz.crypt files which have a name like: backup_(time)_(site " +"name)_(code)_db.crypt.gz)." +msgstr "" + +#: admin.php:504 +msgid "Upload error" +msgstr "" + +#: admin.php:505 +msgid "" +"Follow this link to attempt decryption and download the database file to " +"your computer." +msgstr "" + +#: admin.php:506 +msgid "This decryption key will be attempted:" +msgstr "" + +#: admin.php:507 +msgid "Unknown server response:" +msgstr "" + +#: admin.php:508 +msgid "Unknown server response status:" +msgstr "" + +#: admin.php:509 +msgid "The file was uploaded." +msgstr "" + +#: admin.php:511 +msgid "Cancel" +msgstr "" + +#: admin.php:513 central/bootstrap.php:513 +msgid "Create" +msgstr "" + +#: admin.php:514 +msgid "" +"You did not select any components to restore. Please select at least one, " +"and then try again." +msgstr "" + +#: admin.php:516 +msgid "Close" +msgstr "" + +#: admin.php:518 admin.php:3645 +msgid "Download log file" +msgstr "" + +#: admin.php:520 admin.php:545 +msgid "You have made changes to your settings, and not saved." +msgstr "" + +#: admin.php:521 +msgid "Saving..." +msgstr "" + +#: admin.php:522 methods/updraftvault.php:260 methods/updraftvault.php:305 +#: udaddons/options.php:244 +msgid "Connect" +msgstr "" + +#: admin.php:523 +msgid "Connecting..." +msgstr "" + +#: admin.php:524 methods/updraftvault.php:346 +msgid "Disconnect" +msgstr "" + +#: admin.php:525 +msgid "Disconnecting..." +msgstr "" + +#: admin.php:526 +msgid "Counting..." +msgstr "" + +#: admin.php:527 +msgid "Update quota count" +msgstr "" + +#: admin.php:528 +msgid "Adding..." +msgstr "" + +#: admin.php:531 +msgid "Creating..." +msgstr "" + +#: admin.php:531 +msgid "" +"your PHP install lacks the openssl module; as a result, this can take " +"minutes; if nothing has happened by then, then you should either try a " +"smaller key size, or ask your web hosting company how to enable this PHP " +"module on your setup." +msgstr "" + +#: admin.php:534 +msgid "Please give this key a name (e.g. indicate the site it is for):" +msgstr "" + +#: admin.php:536 +msgid "key name" +msgstr "" + +#: admin.php:537 +msgid "Deleting..." +msgstr "" + +#: admin.php:538 +msgid "Please enter a valid URL" +msgstr "" + +#: admin.php:539 +msgid "" +"We requested to delete the file, but could not understand the server's " +"response" +msgstr "" + +#: admin.php:544 +msgctxt "(verb)" +msgid "Download" +msgstr "" + +#: admin.php:545 +msgid "" +"You should save your changes to ensure that they are used for making your " +"backup." +msgstr "" + +#: admin.php:548 +msgid "day" +msgstr "" + +#: admin.php:549 +msgid "in the month" +msgstr "" + +#: admin.php:550 +msgid "day(s)" +msgstr "" + +#: admin.php:551 +msgid "hour(s)" +msgstr "" + +#: admin.php:552 +msgid "week(s)" +msgstr "" + +#: admin.php:553 +msgid "For backups older than" +msgstr "" + +#: admin.php:555 +msgid "Processing..." +msgstr "" + +#: admin.php:556 +msgid "Please fill in the required information." +msgstr "" + +#: admin.php:558 +#, php-format +msgid "Testing %s Settings..." +msgstr "" + +#: admin.php:559 +#, php-format +msgid "%s settings test result:" +msgstr "" + +#: admin.php:560 +msgid "Nothing yet logged" +msgstr "" + +#: admin.php:579 admin.php:746 +#, php-format +msgid "Dismiss (for %s weeks)" +msgstr "" + +#: admin.php:597 +msgid "" +"UpdraftPlus Premium can automatically take a backup of your plugins or " +"themes and database before you update." +msgstr "" + +#: admin.php:597 +msgid "" +"Be safe every time, without needing to remember - follow this link to learn " +"more" +msgstr "" + +#: admin.php:598 +msgid "Just this add-on" +msgstr "" + +#: admin.php:599 +msgid "Full Premium plugin" +msgstr "" + +#: admin.php:667 +msgid "Allowed Files" +msgstr "" + +#: admin.php:713 +msgid "Add-Ons / Pro Support" +msgstr "" + +#: admin.php:760 admin.php:2440 central/updraftplus-commands.php:332 +msgid "" +"The 'Backup Now' button is disabled as your backup directory is not writable " +"(go to the 'Settings' tab and find the relevant option)." +msgstr "" + +#: admin.php:765 +msgid "Welcome to UpdraftPlus!" +msgstr "" + +#: admin.php:765 +msgid "To make a backup, just press the Backup Now button." +msgstr "" + +#: admin.php:765 +msgid "" +"To change any of the default settings of what is backed up, to configure " +"scheduled backups, to send your backups to remote storage (recommended), and " +"more, go to the settings tab." +msgstr "" + +#: admin.php:769 admin.php:773 admin.php:777 admin.php:781 admin.php:785 +#: admin.php:794 admin.php:2871 admin.php:4160 admin.php:4167 admin.php:4169 +#: methods/cloudfiles.php:448 methods/ftp.php:284 +#: methods/openstack-base.php:513 methods/s3.php:731 methods/s3.php:735 +#: methods/updraftvault.php:244 udaddons/updraftplus-addons.php:208 +msgid "Warning" +msgstr "" + +#: admin.php:769 class-updraftplus.php:567 +#, php-format +msgid "" +"The amount of time allowed for WordPress plugins to run is very low (%s " +"seconds) - you should increase it to avoid backup failures due to time-outs " +"(consult your web hosting company for more help - it is the " +"max_execution_time PHP setting; the recommended value is %s seconds or more)" +msgstr "" + +#: admin.php:773 +msgid "" +"The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON " +"setting. No backups can run (even "Backup Now") unless either you " +"have set up a facility to call the scheduler manually, or until it is " +"enabled." +msgstr "" + +#: admin.php:777 +#, php-format +msgid "" +"You have less than %s of free disk space on the disk which UpdraftPlus is " +"configured to use to create backups. UpdraftPlus could well run out of " +"space. Contact your the operator of your server (e.g. your web hosting " +"company) to resolve this issue." +msgstr "" + +#: admin.php:781 +#, php-format +msgid "" +"UpdraftPlus does not officially support versions of WordPress before %s. It " +"may work for you, but if it does not, then please be aware that no support " +"is available until you upgrade WordPress." +msgstr "" + +#: admin.php:785 +#, php-format +msgid "Your website is hosted using the %s web server." +msgstr "" + +#: admin.php:785 +msgid "Please consult this FAQ if you have problems backing up." +msgstr "" + +#: admin.php:789 +msgid "Notice" +msgstr "" + +#: admin.php:789 +msgid "" +"UpdraftPlus's debug mode is on. You may see debugging notices on this page " +"not just from UpdraftPlus, but from any other plugin installed. Please try " +"to make sure that the notice you are seeing is from UpdraftPlus before you " +"raise a support request." +msgstr "" + +#: admin.php:794 +#, php-format +msgid "" +"WordPress has a number (%d) of scheduled tasks which are overdue. Unless " +"this is a development site, this probably means that the scheduler in your " +"WordPress install is not working." +msgstr "" + +#: admin.php:794 +msgid "Read this page for a guide to possible causes and how to fix it." +msgstr "" + +#: admin.php:800 admin.php:804 admin.php:808 admin.php:812 admin.php:816 +#: admin.php:820 admin.php:824 class-updraftplus.php:361 +#: class-updraftplus.php:396 class-updraftplus.php:401 +#: class-updraftplus.php:406 +msgid "UpdraftPlus notice:" +msgstr "" + +#: admin.php:800 admin.php:804 admin.php:808 admin.php:812 admin.php:820 +#: admin.php:824 +#, php-format +msgid "" +"Click here to authenticate your %s account (you will not be able to back up " +"to %s without it)." +msgstr "" + +#: admin.php:816 +#, php-format +msgid "" +"%s has been chosen for remote storage, but you are not currently connected." +msgstr "" + +#: admin.php:816 +msgid "Go to the remote storage settings in order to connect." +msgstr "" + +#: admin.php:1025 +#, php-format +msgid "" +"The backup archive for this file could not be found. The remote storage " +"method in use (%s) does not allow us to retrieve files. To perform any " +"restoration using UpdraftPlus, you will need to obtain a copy of this file " +"and place it inside UpdraftPlus's working folder" +msgstr "" + +#: admin.php:1245 +msgid "No such backup set exists" +msgstr "" + +#: admin.php:1264 +#, php-format +msgid "" +"The PHP setup on this webserver allows only %s seconds for PHP to run, and " +"does not allow this limit to be raised. If you have a lot of data to import, " +"and if the restore operation times out, then you will need to ask your web " +"hosting company for ways to raise this limit (or attempt the restoration " +"piece-by-piece)." +msgstr "" + +#: admin.php:1268 +msgid "" +"This backup set was not known by UpdraftPlus to be created by the current " +"WordPress installation, but was either found in remote storage, or was sent " +"from a remote site." +msgstr "" + +#: admin.php:1268 +msgid "" +"You should make sure that this really is a backup set intended for use on " +"this website, before you restore (rather than a backup set of an unrelated " +"website)." +msgstr "" + +#: admin.php:1280 +msgid "" +"Only the WordPress database can be restored; you will need to deal with the " +"external database manually." +msgstr "" + +#: admin.php:1293 admin.php:4525 restorer.php:1337 +#, php-format +msgid "Backup created by unknown source (%s) - cannot be restored." +msgstr "" + +#: admin.php:1314 +#, php-format +msgid "File not found (you need to upload it): %s" +msgstr "" + +#: admin.php:1316 +#, php-format +msgid "File was found, but is zero-sized (you need to re-upload it): %s" +msgstr "" + +#: admin.php:1321 +#, php-format +msgid "" +"File (%s) was found, but has a different size (%s) from what was expected " +"(%s) - it may be corrupt." +msgstr "" + +#: admin.php:1336 +#, php-format +msgid "" +"This multi-archive backup set appears to have the following archives " +"missing: %s" +msgstr "" + +#: admin.php:1341 +msgid "" +"The backup archive files have been successfully processed. Now press Restore " +"again to proceed." +msgstr "" + +#: admin.php:1343 +msgid "" +"The backup archive files have been processed, but with some warnings. If all " +"is well, then now press Restore again to proceed. Otherwise, cancel and " +"correct any problems first." +msgstr "" + +#: admin.php:1345 +msgid "" +"The backup archive files have been processed, but with some errors. You will " +"need to cancel and correct any problems before retrying." +msgstr "" + +#: admin.php:1384 +msgid "Known backups (raw)" +msgstr "" + +#: admin.php:1412 +msgid "Options (raw)" +msgstr "" + +#: admin.php:1441 +msgid "Constants" +msgstr "" + +#: admin.php:1554 +msgid "Backup set not found" +msgstr "" + +#: admin.php:1626 +#, php-format +msgid "Backup sets removed: %d" +msgstr "" + +#: admin.php:1628 +#, php-format +msgid "Local archives deleted: %d" +msgstr "" + +#: admin.php:1629 +#, php-format +msgid "Remote archives deleted: %d" +msgstr "" + +#: admin.php:1718 +msgid "Job deleted" +msgstr "" + +#: admin.php:1726 +msgid "Could not find that job - perhaps it has already finished?" +msgstr "" + +#: admin.php:1802 admin.php:1814 +msgid "Start backup" +msgstr "" + +#: admin.php:1802 +msgid "" +"OK. You should soon see activity in the \"Last log message\" field below." +msgstr "" + +#: admin.php:1854 +msgid "Error: unexpected file read fail" +msgstr "" + +#: admin.php:1861 admin.php:1865 class-updraftplus.php:396 +msgid "The log file could not be read." +msgstr "" + +#: admin.php:1907 +msgid "Download failed" +msgstr "" + +#: admin.php:1936 +msgid "Download in progress" +msgstr "" + +#: admin.php:1939 +msgid "No local copy present." +msgstr "" + +#: admin.php:1976 backup.php:1120 restorer.php:168 +#, php-format +msgid "Backup directory (%s) is not writable, or does not exist." +msgstr "" + +#: admin.php:1976 +msgid "You will find more information about this in the Settings section." +msgstr "" + +#: admin.php:2011 +msgid "This file could not be uploaded" +msgstr "" + +#: admin.php:2055 +#, php-format +msgid "This backup was created by %s, and can be imported." +msgstr "" + +#: admin.php:2058 +msgid "" +"Bad filename format - this does not look like a file created by UpdraftPlus" +msgstr "" + +#: admin.php:2066 +#, php-format +msgid "" +"This looks like a file created by UpdraftPlus, but this install does not " +"know about this type of object: %s. Perhaps you need to install an add-on?" +msgstr "" + +#: admin.php:2148 +msgid "" +"Bad filename format - this does not look like an encrypted database file " +"created by UpdraftPlus" +msgstr "" + +#: admin.php:2168 +msgid "Premium" +msgstr "" + +#: admin.php:2169 +msgid "News" +msgstr "" + +#: admin.php:2170 class-updraftplus.php:3568 class-updraftplus.php:3597 +msgid "Twitter" +msgstr "" + +#: admin.php:2171 admin.php:2562 +msgid "Support" +msgstr "" + +#: admin.php:2172 +msgid "Newsletter sign-up" +msgstr "" + +#: admin.php:2173 +msgid "Lead developer's homepage" +msgstr "" + +#: admin.php:2174 +msgid "FAQs" +msgstr "" + +#: admin.php:2174 +msgid "More plugins" +msgstr "" + +#: admin.php:2174 +msgid "Version" +msgstr "" + +#: admin.php:2204 admin.php:2213 +msgid "" +"Sufficient information about the in-progress restoration operation could not " +"be found." +msgstr "" + +#: admin.php:2233 +msgid "Restore successful!" +msgstr "" + +#: admin.php:2244 admin.php:2253 admin.php:2262 admin.php:2304 admin.php:3434 +#: admin.php:4352 +msgid "Actions" +msgstr "" + +#: admin.php:2248 admin.php:2258 +msgid "Restore failed..." +msgstr "" + +#: admin.php:2295 +msgid "Backup directory could not be created" +msgstr "" + +#: admin.php:2302 +msgid "Backup directory successfully created." +msgstr "" + +#: admin.php:2321 +msgid "Your settings have been wiped." +msgstr "" + +#: admin.php:2330 +msgid "" +"If you can still read these words after the page finishes loading, then " +"there is a JavaScript or jQuery problem in the site." +msgstr "" + +#: admin.php:2333 +msgid "" +"The UpdraftPlus directory in wp-content/plugins has white-space in it; " +"WordPress does not like this. You should rename the directory to wp-content/" +"plugins/updraftplus to fix this problem." +msgstr "" + +#: admin.php:2348 +msgid "" +"OptimizePress 2.0 encodes its contents, so search/replace does not work." +msgstr "" + +#: admin.php:2348 +msgid "To fix this problem go here." +msgstr "" + +#: admin.php:2350 +msgid "For even more features and personal support, check out " +msgstr "" + +#: admin.php:2352 +msgid "Your backup has been restored." +msgstr "" + +#: admin.php:2371 +msgid "" +"Your PHP memory limit (set by your web hosting company) is very low. " +"UpdraftPlus attempted to raise it but was unsuccessful. This plugin may " +"struggle with a memory limit of less than 64 Mb - especially if you have " +"very large files uploaded (though on the other hand, many sites will be " +"successful with a 32Mb limit - your experience may vary)." +msgstr "" + +#: admin.php:2371 +msgid "Current limit is:" +msgstr "" + +#: admin.php:2409 +msgid "Premium / Extensions" +msgstr "" + +#: admin.php:2429 +msgid "JavaScript warning" +msgstr "" + +#: admin.php:2430 +msgid "" +"This admin interface uses JavaScript heavily. You either need to activate it " +"within your browser, or to use a JavaScript-capable browser." +msgstr "" + +#: admin.php:2444 admin.php:5199 +msgid "" +"This button is disabled because your backup directory is not writable (see " +"the settings)." +msgstr "" + +#: admin.php:2450 +msgid "Clone/Migrate" +msgstr "" + +#: admin.php:2465 +msgid "Next scheduled backups" +msgstr "" + +#: admin.php:2466 +msgid "Now" +msgstr "" + +#: admin.php:2475 +msgid "Last backup job run:" +msgstr "" + +#: admin.php:2484 +msgid "Migrate Site" +msgstr "" + +#: admin.php:2489 +msgid "Do you want to migrate or clone/duplicate a site?" +msgstr "" + +#: admin.php:2489 +msgid "" +"Then, try out our \"Migrator\" add-on. After using it once, you'll have " +"saved the purchase price compared to the time needed to copy a site by hand." +msgstr "" + +#: admin.php:2489 +msgid "Get it here." +msgstr "" + +#: admin.php:2499 +msgid "Perform a one-time backup" +msgstr "" + +#: admin.php:2501 +msgid "" +"To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for " +"activity." +msgstr "" + +#: admin.php:2510 +msgid "Multisite" +msgstr "" + +#: admin.php:2514 +msgid "Do you need WordPress Multisite support?" +msgstr "" + +#: admin.php:2514 +msgid "" +"Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on." +msgstr "" + +#: admin.php:2534 +msgid "Backup Contents And Schedule" +msgstr "" + +#: admin.php:2557 +msgid "" +"You are currently using the free version of UpdraftPlus from wordpress.org." +msgstr "" + +#: admin.php:2557 +msgid "" +"If you have made a purchase from UpdraftPlus.Com, then follow this link to " +"the instructions to install your purchase." +msgstr "" + +#: admin.php:2557 +msgid "The first step is to de-install the free version." +msgstr "" + +#: admin.php:2559 +msgid "Get UpdraftPlus Premium" +msgstr "" + +#: admin.php:2560 +msgid "Full feature list" +msgstr "" + +#: admin.php:2561 +msgid "Pre-sales FAQs" +msgstr "" + +#: admin.php:2562 +msgid "Ask a pre-sales question" +msgstr "" + +#: admin.php:2574 +msgid "Get it from" +msgstr "" + +#: admin.php:2578 +msgid "Buy It Now!" +msgstr "" + +#: admin.php:2582 +msgid "Backup WordPress files and database" +msgstr "" + +#: admin.php:2587 +#, php-format +msgid "Translated into over %s languages" +msgstr "" + +#: admin.php:2592 +msgid "Restore from backup" +msgstr "" + +#: admin.php:2597 +msgid "Backup to remote storage" +msgstr "" + +#: admin.php:2602 +msgid "Dropbox, Google Drive, FTP, S3, Rackspace, Email" +msgstr "" + +#: admin.php:2607 +msgid "WebDAV, Copy.Com, SFTP/SCP, encrypted FTP" +msgstr "" + +#: admin.php:2612 +msgid "Microsoft OneDrive, Microsoft Azure, Google Cloud Storage" +msgstr "" + +#: admin.php:2617 +msgid "Free 1GB for UpdraftPlus Vault" +msgstr "" + +#: admin.php:2622 +msgid "Backup extra files and databases" +msgstr "" + +#: admin.php:2627 +msgid "Migrate / clone (i.e. copy) websites" +msgstr "" + +#: admin.php:2632 +msgid "Basic email reporting" +msgstr "" + +#: admin.php:2637 +msgid "Advanced reporting features" +msgstr "" + +#: admin.php:2642 +msgid "Automatic backup when updating WP/plugins/themes" +msgstr "" + +#: admin.php:2647 +msgid "Send backups to multiple remote destinations" +msgstr "" + +#: admin.php:2652 +msgid "Database encryption" +msgstr "" + +#: admin.php:2657 +msgid "Restore backups from other plugins" +msgstr "" + +#: admin.php:2662 +msgid "No advertising links on UpdraftPlus settings page" +msgstr "" + +#: admin.php:2667 +msgid "Scheduled backups" +msgstr "" + +#: admin.php:2672 +msgid "Fix backup time" +msgstr "" + +#: admin.php:2677 +msgid "Network/Multisite support" +msgstr "" + +#: admin.php:2682 +msgid "Lock settings access" +msgstr "" + +#: admin.php:2687 +msgid "Personal support" +msgstr "" + +#: admin.php:2731 +#, php-format +msgid "%s minutes, %s seconds" +msgstr "" + +#: admin.php:2733 +msgid "Unfinished restoration" +msgstr "" + +#: admin.php:2734 +#, php-format +msgid "You have an unfinished restoration operation, begun %s ago." +msgstr "" + +#: admin.php:2739 +msgid "Continue restoration" +msgstr "" + +#: admin.php:2740 +msgid "Dismiss" +msgstr "" + +#: admin.php:2760 +msgid "Include the database in the backup" +msgstr "" + +#: admin.php:2762 +msgid "Include any files in the backup" +msgstr "" + +#: admin.php:2764 +msgid "" +"Your saved settings also affect what is backed up - e.g. files excluded." +msgstr "" + +#: admin.php:2790 +msgid "Backups in progress:" +msgstr "" + +#: admin.php:2800 admin.php:2806 central/bootstrap.php:160 +msgid "(Nothing yet logged)" +msgstr "" + +#: admin.php:2817 +msgid "Latest UpdraftPlus.com news:" +msgstr "" + +#: admin.php:2841 +msgid "Download most recently modified log file" +msgstr "" + +#: admin.php:2871 +msgid "" +"Your WordPress installation has a problem with outputting extra whitespace. " +"This can corrupt backups that you download from here." +msgstr "" + +#: admin.php:2871 admin.php:5003 +msgid "Please consult this FAQ for help on what to do about it." +msgstr "" + +#: admin.php:2876 +msgid "Web-server disk space in use by UpdraftPlus" +msgstr "" + +#: admin.php:2876 +msgid "calculate" +msgstr "" + +#: admin.php:2876 +msgid "refresh" +msgstr "" + +#: admin.php:2879 +msgid "More tasks:" +msgstr "" + +#: admin.php:2880 +msgid "Upload backup files" +msgstr "" + +#: admin.php:2881 +msgid "" +"Press here to look inside your UpdraftPlus directory (in your web hosting " +"space) for any new backup sets that you have uploaded." +msgstr "" + +#: admin.php:2881 +msgid "" +"The location of this directory is set in the expert settings, in the " +"Settings tab." +msgstr "" + +#: admin.php:2881 +msgid "Rescan local folder for new backup sets" +msgstr "" + +#: admin.php:2882 +msgid "" +"Press here to look inside your remote storage methods for any existing " +"backup sets (from any site, if they are stored in the same folder)." +msgstr "" + +#: admin.php:2882 +msgid "Rescan remote storage" +msgstr "" + +#: admin.php:2885 +msgid "Opera web browser" +msgstr "" + +#: admin.php:2885 +msgid "If you are using this, then turn Turbo/Road mode off." +msgstr "" + +#: admin.php:2892 +msgid "UpdraftPlus - Upload backup files" +msgstr "" + +#: admin.php:2893 +msgid "Upload files into UpdraftPlus." +msgstr "" + +#: admin.php:2893 +msgid "" +"Or, you can place them manually into your UpdraftPlus directory (usually wp-" +"content/updraft), e.g. via FTP, and then use the \"rescan\" link above." +msgstr "" + +#: admin.php:2903 +msgid "Drop backup files here" +msgstr "" + +#: admin.php:2904 +msgctxt "Uploader: Drop backup files here - or - Select Files" +msgid "or" +msgstr "" + +#: admin.php:2933 +msgid "Actions upon selected backups" +msgstr "" + +#: admin.php:2935 +msgid "Select all" +msgstr "" + +#: admin.php:2936 +msgid "Deselect" +msgstr "" + +#: admin.php:2944 +msgid "Delete backup set" +msgstr "" + +#: admin.php:2947 admin.php:2950 +#, php-format +msgid "Are you sure that you wish to remove %s from UpdraftPlus?" +msgstr "" + +#: admin.php:2947 +msgid "this backup set" +msgstr "" + +#: admin.php:2950 +msgid "these backup sets" +msgstr "" + +#: admin.php:2958 +msgid "Also delete from remote storage" +msgstr "" + +#: admin.php:2959 +msgid "" +"Deleting... please allow time for the communications with the remote storage " +"to complete." +msgstr "" + +#: admin.php:2965 +msgid "Restore backup" +msgstr "" + +#: admin.php:2966 +msgid "Restore backup from" +msgstr "" + +#: admin.php:2970 +msgid "Retrieving (if necessary) and preparing backup files..." +msgstr "" + +#: admin.php:2978 +msgid "" +"Restoring will replace this site's themes, plugins, uploads, database and/or " +"other content directories (according to what is contained in the backup set, " +"and your selection)." +msgstr "" + +#: admin.php:2978 +msgid "Choose the components to restore" +msgstr "" + +#: admin.php:2990 +msgid "Your web server has PHP's so-called safe_mode active." +msgstr "" + +#: admin.php:2990 +msgid "" +"This makes time-outs much more likely. You are recommended to turn safe_mode " +"off, or to restore only one entity at a time" +msgstr "" + +#: admin.php:2990 +msgid "or to restore manually" +msgstr "" + +#: admin.php:3003 +#, php-format +msgid "The following entity cannot be restored automatically: \"%s\"." +msgstr "" + +#: admin.php:3003 +msgid "You will need to restore it manually." +msgstr "" + +#: admin.php:3018 +msgid "" +"You can search and replace your database (for migrating a website to a new " +"location/URL) with the Migrator add-on - follow this link for more " +"information" +msgstr "" + +#: admin.php:3029 +msgid "Do read this helpful article of useful things to know before restoring." +msgstr "" + +#: admin.php:3053 +msgid "Unless you have a problem, you can completely ignore everything here." +msgstr "" + +#: admin.php:3081 +msgid "Web server:" +msgstr "" + +#: admin.php:3090 +msgid "Peak memory usage" +msgstr "" + +#: admin.php:3091 +msgid "Current memory usage" +msgstr "" + +#: admin.php:3092 +msgid "Memory limit" +msgstr "" + +#: admin.php:3093 admin.php:3094 admin.php:3101 admin.php:3102 +#, php-format +msgid "%s version:" +msgstr "" + +#: admin.php:3093 +msgid "show PHP information (phpinfo)" +msgstr "" + +#: admin.php:3099 +msgid "Not installed" +msgstr "" + +#: admin.php:3099 +msgid "required for some remote storage providers" +msgstr "" + +#: admin.php:3103 admin.php:3106 admin.php:3109 admin.php:3113 +msgid "Yes" +msgstr "" + +#: admin.php:3103 admin.php:3109 admin.php:3113 +msgid "No" +msgstr "" + +#: admin.php:3113 +msgid "zip executable found:" +msgstr "" + +#: admin.php:3117 +msgid "Free disk space in account:" +msgstr "" + +#: admin.php:3117 +#, php-format +msgid "%s (%s used)" +msgstr "" + +#: admin.php:3120 +msgid "Plugins for debugging:" +msgstr "" + +#: admin.php:3122 +msgid "Fetch" +msgstr "" + +#: admin.php:3124 +msgid "Call WordPress action:" +msgstr "" + +#: admin.php:3124 +msgid "Call" +msgstr "" + +#: admin.php:3126 +msgid "reset" +msgstr "" + +#: admin.php:3128 +msgid "Show raw backup and file list" +msgstr "" + +#: admin.php:3142 +msgid "" +"For the ability to lock access to UpdraftPlus settings with a password, " +"upgrade to UpdraftPlus Premium." +msgstr "" + +#: admin.php:3149 +msgid "Total (uncompressed) on-disk data:" +msgstr "" + +#: admin.php:3152 +msgid "" +"N.B. This count is based upon what was, or was not, excluded the last time " +"you saved the options." +msgstr "" + +#: admin.php:3163 +msgid "count" +msgstr "" + +#: admin.php:3169 admin.php:3173 +msgid "Wipe settings" +msgstr "" + +#: admin.php:3170 +msgid "" +"This button will delete all UpdraftPlus settings and progress information " +"for in-progress backups (but not any of your existing backups from your " +"cloud storage)." +msgstr "" + +#: admin.php:3170 +msgid "" +"You will then need to enter all your settings again. You can also do this " +"before deactivating/deinstalling UpdraftPlus if you wish." +msgstr "" + +#: admin.php:3173 +msgid "" +"This will delete all your UpdraftPlus settings - are you sure you want to do " +"this?" +msgstr "" + +#: admin.php:3185 +msgid "" +"Your WordPress install has old directories from its state before you " +"restored/migrated (technical information: these are suffixed with -old). You " +"should press this button to delete them as soon as you have verified that " +"the restoration worked." +msgstr "" + +#: admin.php:3241 +msgid "The backup has finished running" +msgstr "" + +#: admin.php:3241 admin.php:4643 +msgid "View Log" +msgstr "" + +#: admin.php:3270 +msgid "Backup begun" +msgstr "" + +#: admin.php:3275 +msgid "Creating file backup zips" +msgstr "" + +#: admin.php:3288 +msgid "Created file backup zips" +msgstr "" + +#: admin.php:3294 +msgid "Uploading files to remote storage" +msgstr "" + +#: admin.php:3301 +#, php-format +msgid "(%s%%, file %s of %s)" +msgstr "" + +#: admin.php:3306 +msgid "Pruning old backup sets" +msgstr "" + +#: admin.php:3310 +msgid "Waiting until scheduled time to retry because of errors" +msgstr "" + +#: admin.php:3315 +msgid "Backup finished" +msgstr "" + +#: admin.php:3329 +msgid "Created database backup" +msgstr "" + +#: admin.php:3340 +msgid "Creating database backup" +msgstr "" + +#: admin.php:3342 +#, php-format +msgid "table: %s" +msgstr "" + +#: admin.php:3355 +msgid "Encrypting database" +msgstr "" + +#: admin.php:3363 +msgid "Encrypted database" +msgstr "" + +#: admin.php:3365 central/bootstrap.php:404 central/bootstrap.php:411 +#: methods/updraftvault.php:340 methods/updraftvault.php:420 +msgid "Unknown" +msgstr "" + +#: admin.php:3382 +#, php-format +msgid "next resumption: %d (after %ss)" +msgstr "" + +#: admin.php:3383 +#, php-format +msgid "last activity: %ss ago" +msgstr "" + +#: admin.php:3398 +#, php-format +msgid "Job ID: %s" +msgstr "" + +#: admin.php:3401 +msgid "show log" +msgstr "" + +#: admin.php:3403 +msgid "" +"Note: the progress bar below is based on stages, NOT time. Do not stop the " +"backup simply because it seems to have remained in the same place for a " +"while - that is normal." +msgstr "" + +#: admin.php:3403 +msgid "stop" +msgstr "" + +#: admin.php:3410 admin.php:3631 class-updraftplus.php:3710 +#: class-updraftplus.php:3728 +#, php-format +msgid "Warning: %s" +msgstr "" + +#: admin.php:3427 +msgid "Remove old directories" +msgstr "" + +#: admin.php:3430 +msgid "Old directories successfully removed." +msgstr "" + +#: admin.php:3432 +msgid "" +"Old directory removal failed for some reason. You may want to do this " +"manually." +msgstr "" + +#: admin.php:3544 +msgid "The request to the filesystem to create the directory failed." +msgstr "" + +#: admin.php:3558 +msgid "" +"The folder was created, but we had to change its file permissions to 777 " +"(world-writable) to be able to write to it. You should check with your " +"hosting provider that this will not cause any problems" +msgstr "" + +#: admin.php:3563 +msgid "" +"The folder exists, but your webserver does not have permission to write to " +"it." +msgstr "" + +#: admin.php:3563 +msgid "" +"You will need to consult with your web hosting provider to find out how to " +"set permissions for a WordPress plugin to write to the directory." +msgstr "" + +#: admin.php:3619 +#, php-format +msgid "incremental backup; base backup: %s" +msgstr "" + +#: admin.php:3649 +msgid "No backup has been completed" +msgstr "" + +#: admin.php:3658 +msgctxt "i.e. Non-automatic" +msgid "Manual" +msgstr "" + +#: admin.php:3659 admin.php:3660 admin.php:3661 updraftplus.php:92 +#: updraftplus.php:93 +#, php-format +msgid "Every %s hours" +msgstr "" + +#: admin.php:3662 +msgid "Daily" +msgstr "" + +#: admin.php:3663 +msgid "Weekly" +msgstr "" + +#: admin.php:3664 +msgid "Fortnightly" +msgstr "" + +#: admin.php:3665 +msgid "Monthly" +msgstr "" + +#: admin.php:3671 +msgid "Backup directory specified is writable, which is good." +msgstr "" + +#: admin.php:3675 +msgid "Backup directory specified does not exist." +msgstr "" + +#: admin.php:3677 +msgid "Backup directory specified exists, but is not writable." +msgstr "" + +#: admin.php:3679 +msgid "Click here to attempt to create the directory and set the permissions" +msgstr "" + +#: admin.php:3679 +msgid "or, to reset this option" +msgstr "" + +#: admin.php:3679 +msgid "click here" +msgstr "" + +#: admin.php:3679 +msgid "" +"If that is unsuccessful check the permissions on your server or change it to " +"another directory that is writable by your web server process." +msgstr "" + +#: admin.php:3703 +msgid "Files backup schedule" +msgstr "" + +#: admin.php:3723 admin.php:3762 +msgid "and retain this many scheduled backups" +msgstr "" + +#: admin.php:3736 +msgid "Incremental file backup schedule" +msgstr "" + +#: admin.php:3739 +msgid "Tell me more about incremental backups" +msgstr "" + +#: admin.php:3746 +msgid "Database backup schedule" +msgstr "" + +#: admin.php:3775 +msgid "To fix the time at which a backup should take place," +msgstr "" + +#: admin.php:3775 +msgid "e.g. if your server is busy at day and you want to run overnight" +msgstr "" + +#: admin.php:3775 +msgid "or to configure more complex schedules" +msgstr "" + +#: admin.php:3775 +msgid "use UpdraftPlus Premium" +msgstr "" + +#: admin.php:3781 +msgid "Sending Your Backup To Remote Storage" +msgstr "" + +#: admin.php:3791 +msgid "Choose your remote storage" +msgstr "" + +#: admin.php:3791 +msgid "(tap on an icon to select or unselect)" +msgstr "" + +#: admin.php:3802 +#, php-format +msgid "Backup using %s?" +msgstr "" + +#: admin.php:3815 +msgid "You can send a backup to more than one destination with an add-on." +msgstr "" + +#: admin.php:3823 +msgid "" +"If you choose no remote storage, then the backups remain on the web-server. " +"This is not recommended (unless you plan to manually copy them to your " +"computer), as losing the web-server would mean losing both your website and " +"the backups in one event." +msgstr "" + +#: admin.php:3842 +msgid "File Options" +msgstr "" + +#: admin.php:3846 +msgid "Include in files backup" +msgstr "" + +#: admin.php:3849 +msgid "" +"The above directories are everything, except for WordPress core itself which " +"you can download afresh from WordPress.org." +msgstr "" + +#: admin.php:3849 +msgid "See also the \"More Files\" add-on from our shop." +msgstr "" + +#: admin.php:3854 +msgid "Database Options" +msgstr "" + +#: admin.php:3859 +msgid "Database encryption phrase" +msgstr "" + +#: admin.php:3863 +msgid "" +"Don't want to be spied on? UpdraftPlus Premium can encrypt your database " +"backup." +msgstr "" + +#: admin.php:3863 +msgid "It can also backup external databases." +msgstr "" + +#: admin.php:3875 +msgid "You can manually decrypt an encrypted database here." +msgstr "" + +#: admin.php:3878 +msgid "Manually decrypt a database backup file" +msgstr "" + +#: admin.php:3890 +msgid "" +"Drop encrypted database files (db.gz.crypt files) here to upload them for " +"decryption" +msgstr "" + +#: admin.php:3891 +msgctxt "" +"Uploader: Drop db.gz.crypt files here to upload them for decryption - or - " +"Select Files" +msgid "or" +msgstr "" + +#: admin.php:3893 +msgid "First, enter the decryption key" +msgstr "" + +#: admin.php:3917 +msgid "Back up more databases" +msgstr "" + +#: admin.php:3926 methods/email.php:74 +msgid "Reporting" +msgstr "" + +#: admin.php:3938 udaddons/options.php:143 +msgid "Email" +msgstr "" + +#: admin.php:3943 +msgid "Check this box to have a basic report sent to" +msgstr "" + +#: admin.php:3943 +msgid "your site's admin address" +msgstr "" + +#: admin.php:3945 +msgid "For more reporting features, use the Reporting add-on." +msgstr "" + +#: admin.php:3961 +msgid "Advanced / Debugging Settings" +msgstr "" + +#: admin.php:3965 +msgid "Expert settings" +msgstr "" + +#: admin.php:3966 +msgid "Show expert settings" +msgstr "" + +#: admin.php:3966 +msgid "" +"click this to show some further options; don't bother with this unless you " +"have a problem or are curious." +msgstr "" + +#: admin.php:3976 +msgid "Debug mode" +msgstr "" + +#: admin.php:3977 +msgid "" +"Check this to receive more information and emails on the backup process - " +"useful if something is going wrong." +msgstr "" + +#: admin.php:3977 +msgid "" +"This will also cause debugging output from all plugins to be shown upon this " +"screen - please do not be surprised to see these." +msgstr "" + +#: admin.php:3981 +msgid "Split archives every:" +msgstr "" + +#: admin.php:3982 +#, php-format +msgid "" +"UpdraftPlus will split up backup archives when they exceed this file size. " +"The default value is %s megabytes. Be careful to leave some margin if your " +"web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-" +"bit servers/file systems)." +msgstr "" + +#: admin.php:3986 +msgid "Delete local backup" +msgstr "" + +#: admin.php:3987 +msgid "" +"Check this to delete any superfluous backup files from your server after the " +"backup run finishes (i.e. if you uncheck, then any files despatched remotely " +"will also remain locally, and any files being kept locally will not be " +"subject to the retention limits)." +msgstr "" + +#: admin.php:3991 +msgid "Backup directory" +msgstr "" + +#: admin.php:4004 +msgid "" +"This is where UpdraftPlus will write the zip files it creates initially. " +"This directory must be writable by your web server. It is relative to your " +"content directory (which by default is called wp-content)." +msgstr "" + +#: admin.php:4004 +msgid "" +"Do not place it inside your uploads or plugins directory, as that " +"will cause recursion (backups of backups of backups of...)." +msgstr "" + +#: admin.php:4010 +msgid "Use the server's SSL certificates" +msgstr "" + +#: admin.php:4011 +msgid "" +"By default UpdraftPlus uses its own store of SSL certificates to verify the " +"identity of remote sites (i.e. to make sure it is talking to the real " +"Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. " +"However, if you get an SSL error, then choosing this option (which causes " +"UpdraftPlus to use your web server's collection instead) may help." +msgstr "" + +#: admin.php:4015 +msgid "Do not verify SSL certificates" +msgstr "" + +#: admin.php:4016 +msgid "" +"Choosing this option lowers your security by stopping UpdraftPlus from " +"verifying the identity of encrypted sites that it connects to (e.g. Dropbox, " +"Google Drive). It means that UpdraftPlus will be using SSL only for " +"encryption of traffic, and not for authentication." +msgstr "" + +#: admin.php:4016 +msgid "" +"Note that not all cloud backup methods are necessarily using SSL " +"authentication." +msgstr "" + +#: admin.php:4020 +msgid "Disable SSL entirely where possible" +msgstr "" + +#: admin.php:4021 +msgid "" +"Choosing this option lowers your security by stopping UpdraftPlus from using " +"SSL for authentication and encrypted transport at all, where possible. Note " +"that some cloud storage providers do not allow this (e.g. Dropbox), so with " +"those providers this setting will have no effect." +msgstr "" + +#: admin.php:4021 +msgid "See this FAQ also." +msgstr "" + +#: admin.php:4044 +msgid "Save Changes" +msgstr "" + +#: admin.php:4104 +#, php-format +msgid "Your wp-content directory server path: %s" +msgstr "" + +#: admin.php:4104 +msgid "Any other directories found inside wp-content" +msgstr "" + +#: admin.php:4160 methods/updraftvault.php:244 +#, php-format +msgid "" +"Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's " +"support and ask for them to enable it." +msgstr "" + +#: admin.php:4167 +#, php-format +msgid "" +"Your web server's PHP/Curl installation does not support https access. " +"Communications with %s will be unencrypted. ask your web host to install " +"Curl/SSL in order to gain the ability for encryption (via an add-on)." +msgstr "" + +#: admin.php:4169 +#, php-format +msgid "" +"Your web server's PHP/Curl installation does not support https access. We " +"cannot access %s without this support. Please contact your web hosting " +"provider's support. %s requires Curl+https. Please do not " +"file any support requests; there is no alternative." +msgstr "" + +#: admin.php:4172 +#, php-format +msgid "" +"Good news: Your site's communications with %s can be encrypted. If you see " +"any errors to do with encryption, then look in the 'Expert Settings' for " +"more help." +msgstr "" + +#: admin.php:4317 +msgid "Total backup size:" +msgstr "" + +#: admin.php:4337 +msgid "You have not yet made any backups." +msgstr "" + +#: admin.php:4350 +msgid "Backup date" +msgstr "" + +#: admin.php:4351 +msgid "Backup data (click to download)" +msgstr "" + +#: admin.php:4404 +msgid "Backup sent to remote site - not available for download." +msgstr "" + +#: admin.php:4405 +msgid "Site" +msgstr "" + +#: admin.php:4473 admin.php:4524 +msgid "unknown source" +msgstr "" + +#: admin.php:4479 +#, php-format +msgid "Database (created by %s)" +msgstr "" + +#: admin.php:4481 +msgid "External database" +msgstr "" + +#: admin.php:4528 +#, php-format +msgid "Files and database WordPress backup (created by %s)" +msgstr "" + +#: admin.php:4528 +#, php-format +msgid "Files backup (created by %s)" +msgstr "" + +#: admin.php:4554 +msgid "Press here to download" +msgstr "" + +#: admin.php:4559 +#, php-format +msgid "(%d archive(s) in set)." +msgstr "" + +#: admin.php:4562 +msgid "" +"You appear to be missing one or more archives from this multi-archive set." +msgstr "" + +#: admin.php:4593 admin.php:4595 +msgid "(Not finished)" +msgstr "" + +#: admin.php:4595 +msgid "" +"If you are seeing more backups than you expect, then it is probably because " +"the deletion of old backup sets does not happen until a fresh backup " +"completes." +msgstr "" + +#: admin.php:4620 +msgid "(backup set imported from remote location)" +msgstr "" + +#: admin.php:4623 +msgid "" +"After pressing this button, you will be given the option to choose which " +"components you wish to restore" +msgstr "" + +#: admin.php:4632 +msgid "Delete this backup set" +msgstr "" + +#: admin.php:4674 +msgid "" +"This backup does not exist in the backup history - restoration aborted. " +"Timestamp:" +msgstr "" + +#: admin.php:4675 +msgid "Backup does not exist in the backup history" +msgstr "" + +#: admin.php:4704 +msgid "Why am I seeing this?" +msgstr "" + +#: admin.php:4722 +msgid "UpdraftPlus Restoration: Progress" +msgstr "" + +#: admin.php:4724 +msgid "" +"Follow this link to download the log file for this restoration (needed for " +"any support requests)." +msgstr "" + +#: admin.php:4768 +msgid "ABORT: Could not find the information on which entities to restore." +msgstr "" + +#: admin.php:4769 +msgid "If making a request for support, please include this information:" +msgstr "" + +#: admin.php:4818 +msgid "Final checks" +msgstr "" + +#: admin.php:4845 +msgid "" +"Skipping restoration of WordPress core when importing a single site into a " +"multisite installation. If you had anything necessary in your WordPress " +"directory then you will need to re-add it manually from the zip file." +msgstr "" + +#: admin.php:4857 +#, php-format +msgid "Looking for %s archive: file name: %s" +msgstr "" + +#: admin.php:4860 +msgid "Skipping: this archive was already restored." +msgstr "" + +#: admin.php:4870 +msgid "File is not locally present - needs retrieving from remote storage" +msgstr "" + +#: admin.php:4887 +msgid "Archive is expected to be size:" +msgstr "" + +#: admin.php:4892 +msgid "file is size:" +msgstr "" + +#: admin.php:4895 +msgid "" +"The backup records do not contain information about the proper size of this " +"file." +msgstr "" + +#: admin.php:4898 admin.php:4899 +msgid "Could not find one of the files for restoration" +msgstr "" + +#: admin.php:4951 +msgid "" +"Will not delete any archives after unpacking them, because there was no " +"cloud storage for this backup" +msgstr "" + +#: admin.php:4993 +msgid "Error message" +msgstr "" + +#: admin.php:5051 +#, php-format +msgid "" +"Theme directory (%s) not found, but lower-case version exists; updating " +"database option accordingly" +msgstr "" + +#: admin.php:5059 +msgid "" +"The current theme was not found; to prevent this stopping the site from " +"loading, your theme has been reverted to the default theme" +msgstr "" + +#: admin.php:5122 +#, php-format +msgid "" +"Backup won't be sent to any remote storage - none has been saved in the %s" +msgstr "" + +#: admin.php:5122 +msgid "settings" +msgstr "" + +#: admin.php:5122 +msgid "Not got any remote storage?" +msgstr "" + +#: admin.php:5122 +msgid "Check out UpdraftPlus Vault." +msgstr "" + +#: admin.php:5124 +msgid "Send this backup to remote storage" +msgstr "" + +#: admin.php:5223 +msgid "Your settings have been saved." +msgstr "" + +#: backup.php:157 +#, php-format +msgid "" +"%s - could not back this entity up; the corresponding directory does not " +"exist (%s)" +msgstr "" + +#: backup.php:229 +#, php-format +msgid "Could not create %s zip. Consult the log file for more information." +msgstr "" + +#: backup.php:385 +#, php-format +msgid "" +"Unexpected error: no class '%s' was found (your UpdraftPlus installation " +"seems broken - try re-installing)" +msgstr "" + +#: backup.php:829 +msgid "Full backup" +msgstr "" + +#: backup.php:829 +msgid "Incremental" +msgstr "" + +#: backup.php:834 class-updraftplus.php:2504 +msgid "The backup was aborted by the user" +msgstr "" + +#: backup.php:838 +msgid "Files (database backup has not completed)" +msgstr "" + +#: backup.php:838 +msgid "Files only (database was not part of this particular schedule)" +msgstr "" + +#: backup.php:841 +msgid "Database (files backup has not completed)" +msgstr "" + +#: backup.php:841 +msgid "Database only (files were not part of this particular schedule)" +msgstr "" + +#: backup.php:844 +msgid "Unknown/unexpected error - please raise a support request" +msgstr "" + +#: backup.php:853 +msgid "Errors encountered:" +msgstr "" + +#: backup.php:871 +msgid "Warnings encountered:" +msgstr "" + +#: backup.php:886 +#, php-format +msgid "Backed up: %s" +msgstr "" + +#: backup.php:895 +msgid "" +"Email reports created by UpdraftPlus (free edition) bring you the latest " +"UpdraftPlus.com news" +msgstr "" + +#: backup.php:895 +#, php-format +msgid "read more at %s" +msgstr "" + +#: backup.php:924 +msgid "WordPress backup is complete" +msgstr "" + +#: backup.php:925 +msgid "Backup contains:" +msgstr "" + +#: backup.php:1353 +msgid "database connection attempt failed." +msgstr "" + +#: backup.php:1399 +msgid "please wait for the rescheduled attempt" +msgstr "" + +#: backup.php:1401 +msgid "No database tables found" +msgstr "" + +#: backup.php:1412 +msgid "" +"The backup directory is not writable (or disk space is full) - the database " +"backup is expected to shortly fail." +msgstr "" + +#: backup.php:1474 +#, php-format +msgid "" +"Table %s has very many rows (%s) - we hope your web hosting company gives " +"you enough resources to dump out that table in the backup" +msgstr "" + +#: backup.php:1516 backup.php:1518 +msgid "The database backup appears to have failed" +msgstr "" + +#: backup.php:1516 +msgid "no options or sitemeta table was found" +msgstr "" + +#: backup.php:1518 +msgid "the options table was not found" +msgstr "" + +#: backup.php:1566 +msgid "Failed to open database file for reading:" +msgstr "" + +#: backup.php:1585 +msgid "An error occurred whilst closing the final database file" +msgstr "" + +#: backup.php:1854 +msgid "Could not open the backup file for writing" +msgstr "" + +#: backup.php:1955 +msgid "Infinite recursion: consult your log for more information" +msgstr "" + +#: backup.php:1986 +#, php-format +msgid "" +"%s: unreadable file - could not be backed up (check the file permissions and " +"ownership)" +msgstr "" + +#: backup.php:2002 +#, php-format +msgid "Failed to open directory (check the file permissions and ownership): %s" +msgstr "" + +#: backup.php:2033 backup.php:2063 +#, php-format +msgid "%s: unreadable file - could not be backed up" +msgstr "" + +#: backup.php:2635 backup.php:2891 +#, php-format +msgid "Failed to open the zip file (%s) - %s" +msgstr "" + +#: backup.php:2657 +#, php-format +msgid "A very large file was encountered: %s (size: %s Mb)" +msgstr "" + +#: backup.php:2931 class-updraftplus.php:580 +#, php-format +msgid "Your free space in your hosting account is very low - only %s Mb remain" +msgstr "" + +#: backup.php:2938 +#, php-format +msgid "The zip engine returned the message: %s." +msgstr "" + +#: backup.php:2940 +msgid "A zip error occurred" +msgstr "" + +#: backup.php:2942 +#, php-format +msgid "your web hosting account appears to be full; please see: %s" +msgstr "" + +#: backup.php:2944 +msgid "check your log for more details." +msgstr "" + +#: central/bootstrap.php:46 +msgid "UpdraftCentral Connection" +msgstr "" + +#: central/bootstrap.php:49 +msgid "An UpdraftCentral connection has been made successfully." +msgstr "" + +#: central/bootstrap.php:51 +msgid "A new UpdraftCentral connection has not been made." +msgstr "" + +#: central/bootstrap.php:54 +msgid "The key referred to was unknown." +msgstr "" + +#: central/bootstrap.php:60 +msgid "You are not logged into this WordPress site in your web browser." +msgstr "" + +#: central/bootstrap.php:60 +msgid "" +"You must visit this URL in the same browser and login session as you created " +"the key in." +msgstr "" + +#: central/bootstrap.php:67 +msgid "" +"You must visit this link in the same browser and login session as you " +"created the key in." +msgstr "" + +#: central/bootstrap.php:71 +msgid "This connection appears to already have been made." +msgstr "" + +#: central/bootstrap.php:79 +msgid "Close..." +msgstr "" + +#: central/bootstrap.php:192 +msgid "An invalid URL was entered" +msgstr "" + +#: central/bootstrap.php:309 central/bootstrap.php:320 +#, php-format +msgid "" +"A key was created, but the attempt to register it with %s was unsuccessful - " +"please try again later." +msgstr "" + +#: central/bootstrap.php:381 +msgid "No keys have yet been created." +msgstr "" + +#: central/bootstrap.php:413 +msgid "Access this site as user:" +msgstr "" + +#: central/bootstrap.php:413 +msgid "Public key was sent to:" +msgstr "" + +#: central/bootstrap.php:416 +msgid "Created:" +msgstr "" + +#: central/bootstrap.php:418 +#, php-format +msgid "Key size: %d bits" +msgstr "" + +#: central/bootstrap.php:423 +msgid "Delete..." +msgstr "" + +#: central/bootstrap.php:434 +msgid "Key description" +msgstr "" + +#: central/bootstrap.php:435 +msgid "Details" +msgstr "" + +#: central/bootstrap.php:455 +msgid "Create new key" +msgstr "" + +#: central/bootstrap.php:461 +msgid "Description" +msgstr "" + +#: central/bootstrap.php:464 +msgid "Enter any description" +msgstr "" + +#: central/bootstrap.php:470 +msgid "Dashboard at" +msgstr "" + +#: central/bootstrap.php:474 +msgid "i.e. you have an account there" +msgstr "" + +#: central/bootstrap.php:479 +msgid "" +"Other (please specify - i.e. the site where you have installed an " +"UpdraftCentral dashboard)" +msgstr "" + +#: central/bootstrap.php:482 +msgid "URL of mothership" +msgstr "" + +#: central/bootstrap.php:487 +msgid "Use the alternative method for making a connection with the dashboard." +msgstr "" + +#: central/bootstrap.php:489 +msgid "More information..." +msgstr "" + +#: central/bootstrap.php:492 +msgid "" +"This is useful if the dashboard webserver cannot be contacted with incoming " +"traffic by this website (for example, this is the case if this website is " +"hosted on the public Internet, but the UpdraftCentral dashboard is on " +"localhost, or on an Intranet, or if this website has an outgoing firewall), " +"or if the dashboard website does not have a SSL certificate." +msgstr "" + +#: central/bootstrap.php:527 +msgid "View recent UpdraftCentral log events" +msgstr "" + +#: central/bootstrap.php:528 +msgid "fetch..." +msgstr "" + +#: central/bootstrap.php:539 +msgid "UpdraftCentral (Remote Control)" +msgstr "" + +#: central/updraftplus-commands.php:286 +#, php-format +msgid "%s add-on not found" +msgstr "" + +#: class-updraftplus.php:361 class-updraftplus.php:406 +msgid "The given file was not found, or could not be read." +msgstr "" + +#: class-updraftplus.php:401 +msgid "No log files were found." +msgstr "" + +#: class-updraftplus.php:564 +#, php-format +msgid "" +"The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should " +"increase it to avoid failures due to insufficient memory (consult your web " +"hosting company for more help)" +msgstr "" + +#: class-updraftplus.php:593 +#, php-format +msgid "Your free disk space is very low - only %s Mb remain" +msgstr "" + +#: class-updraftplus.php:887 methods/cloudfiles.php:211 +#, php-format +msgid "%s error - failed to re-assemble chunks" +msgstr "" + +#: class-updraftplus.php:916 methods/cloudfiles.php:392 +#: methods/stream-base.php:266 +msgid "Error opening local file: Failed to download" +msgstr "" + +#: class-updraftplus.php:959 +msgid "Error - failed to download the file" +msgstr "" + +#: class-updraftplus.php:1267 class-updraftplus.php:1269 +#, php-format +msgid "files: %s" +msgstr "" + +#: class-updraftplus.php:1286 +#, php-format +msgid "External database (%s)" +msgstr "" + +#: class-updraftplus.php:1289 +#, php-format +msgid "Size: %s MB" +msgstr "" + +#: class-updraftplus.php:1294 class-updraftplus.php:1299 +#, php-format +msgid "%s checksum: %s" +msgstr "" + +#: class-updraftplus.php:1298 +msgid "(when decrypted)" +msgstr "" + +#: class-updraftplus.php:1328 +msgid "Plugins" +msgstr "" + +#: class-updraftplus.php:1329 +msgid "Themes" +msgstr "" + +#: class-updraftplus.php:1345 +msgid "Others" +msgstr "" + +#: class-updraftplus.php:1538 +msgid "" +"Your website is visited infrequently and UpdraftPlus is not getting the " +"resources it hoped for; please read this page:" +msgstr "" + +#: class-updraftplus.php:1946 +msgid "" +"Could not create files in the backup directory. Backup aborted - check your " +"UpdraftPlus settings." +msgstr "" + +#: class-updraftplus.php:2431 +msgid "" +"One or more backups has been added from scanning remote storage; note that " +"these backups will not be automatically deleted through the \"retain\" " +"settings; if/when you wish to delete them then you must do so manually." +msgstr "" + +#: class-updraftplus.php:2510 +msgid "The backup apparently succeeded and is now complete" +msgstr "" + +#: class-updraftplus.php:2516 +msgid "The backup apparently succeeded (with warnings) and is now complete" +msgstr "" + +#: class-updraftplus.php:2521 +msgid "" +"To complete your migration/clone, you should now log in to the remote site " +"and restore the backup set." +msgstr "" + +#: class-updraftplus.php:2525 +msgid "The backup attempt has finished, apparently unsuccessfully" +msgstr "" + +#: class-updraftplus.php:2528 +msgid "The backup has not finished; a resumption is scheduled" +msgstr "" + +#: class-updraftplus.php:2952 +msgid "Could not read the directory" +msgstr "" + +#: class-updraftplus.php:2975 +msgid "" +"Could not save backup history because we have no backup array. Backup " +"probably failed." +msgstr "" + +#: class-updraftplus.php:3323 class-updraftplus.php:3630 restorer.php:309 +msgid "" +"Decryption failed. The database file is encrypted, but you have no " +"encryption key entered." +msgstr "" + +#: class-updraftplus.php:3334 class-updraftplus.php:3647 restorer.php:319 +msgid "" +"Decryption failed. The most likely cause is that you used the wrong key." +msgstr "" + +#: class-updraftplus.php:3334 +msgid "The decryption key used:" +msgstr "" + +#: class-updraftplus.php:3561 +msgid "" +"Want more features or paid, guaranteed support? Check out UpdraftPlus.Com" +msgstr "" + +#: class-updraftplus.php:3566 +msgid "" +"Can you translate? Want to improve UpdraftPlus for speakers of your language?" +msgstr "" + +#: class-updraftplus.php:3568 class-updraftplus.php:3597 +msgid "UpdraftPlus is on social media - check us out here:" +msgstr "" + +#: class-updraftplus.php:3568 class-updraftplus.php:3597 +msgid "Facebook" +msgstr "" + +#: class-updraftplus.php:3568 class-updraftplus.php:3597 +msgid "Google+" +msgstr "" + +#: class-updraftplus.php:3568 class-updraftplus.php:3597 +msgid "LinkedIn" +msgstr "" + +#: class-updraftplus.php:3571 +msgid "Check out WordShell" +msgstr "" + +#: class-updraftplus.php:3571 +msgid "manage WordPress from the command line - huge time-saver" +msgstr "" + +#: class-updraftplus.php:3574 +msgid "Like UpdraftPlus and can spare one minute?" +msgstr "" + +#: class-updraftplus.php:3574 +msgid "Please help UpdraftPlus by giving a positive review at wordpress.org" +msgstr "" + +#: class-updraftplus.php:3577 +msgid "Follow this link to sign up for the UpdraftPlus newsletter." +msgstr "" + +#: class-updraftplus.php:3581 +msgid "Need even more features and support? Check out UpdraftPlus Premium" +msgstr "" + +#: class-updraftplus.php:3588 +msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers" +msgstr "" + +#: class-updraftplus.php:3588 +msgid "Blog link" +msgstr "" + +#: class-updraftplus.php:3588 +msgid "RSS link" +msgstr "" + +#: class-updraftplus.php:3591 +msgid "Check out UpdraftPlus.Com for help, add-ons and support" +msgstr "" + +#: class-updraftplus.php:3632 +msgid "Decryption failed. The database file is encrypted." +msgstr "" + +#: class-updraftplus.php:3642 +msgid "Failed to write out the decrypted database to the filesystem." +msgstr "" + +#: class-updraftplus.php:3654 +#, php-format +msgid "" +"The database is too small to be a valid WordPress database (size: %s Kb)." +msgstr "" + +#: class-updraftplus.php:3662 +msgid "Failed to open database file." +msgstr "" + +#: class-updraftplus.php:3705 +#, php-format +msgid "(version: %s)" +msgstr "" + +#: class-updraftplus.php:3710 class-updraftplus.php:3728 +msgid "" +"This backup set is from a different site - this is not a restoration, but a " +"migration. You need the Migrator add-on in order to make this work." +msgstr "" + +#: class-updraftplus.php:3717 restorer.php:926 +#, php-format +msgid "" +"You are using the %s webserver, but do not seem to have the %s module loaded." +msgstr "" + +#: class-updraftplus.php:3717 restorer.php:926 +#, php-format +msgid "You should enable %s to make any pretty permalinks (e.g. %s) work" +msgstr "" + +#: class-updraftplus.php:3738 +#, php-format +msgid "" +"You are importing from a newer version of WordPress (%s) into an older one " +"(%s). There are no guarantees that WordPress can handle this." +msgstr "" + +#: class-updraftplus.php:3745 +#, php-format +msgid "" +"The site in this backup was running on a webserver with version %s of %s. " +msgstr "" + +#: class-updraftplus.php:3745 +#, php-format +msgid "" +"This is significantly newer than the server which you are now restoring onto " +"(version %s)." +msgstr "" + +#: class-updraftplus.php:3745 +#, php-format +msgid "" +"You should only proceed if you cannot update the current server and are " +"confident (or willing to risk) that your plugins/themes/etc. are compatible " +"with the older %s version." +msgstr "" + +#: class-updraftplus.php:3745 +#, php-format +msgid "" +"Any support requests to do with %s should be raised with your web hosting " +"company." +msgstr "" + +#: class-updraftplus.php:3753 +msgid "Backup label:" +msgstr "" + +#: class-updraftplus.php:3764 restorer.php:105 +msgid "" +"You are running on WordPress multisite - but your backup is not of a " +"multisite site." +msgstr "" + +#: class-updraftplus.php:3764 +msgid "It will be imported as a new site." +msgstr "" + +#: class-updraftplus.php:3764 +msgid "Please read this link for important information on this process." +msgstr "" + +#: class-updraftplus.php:3768 restorer.php:1558 +#, php-format +msgid "" +"To import an ordinary WordPress site into a multisite installation requires " +"%s." +msgstr "" + +#: class-updraftplus.php:3772 +msgid "" +"Your backup is of a WordPress multisite install; but this site is not. Only " +"the first site of the network will be accessible." +msgstr "" + +#: class-updraftplus.php:3772 +msgid "" +"If you want to restore a multisite backup, you should first set up your " +"WordPress installation as a multisite." +msgstr "" + +#: class-updraftplus.php:3779 restorer.php:1564 +msgid "Site information:" +msgstr "" + +#: class-updraftplus.php:3801 +#, php-format +msgid "" +"The database backup uses MySQL features not available in the old MySQL " +"version (%s) that this site is running on." +msgstr "" + +#: class-updraftplus.php:3801 +msgid "You must upgrade MySQL to be able to use this database." +msgstr "" + +#: class-updraftplus.php:3841 +#, php-format +msgid "This database backup is missing core WordPress tables: %s" +msgstr "" + +#: class-updraftplus.php:3846 +msgid "" +"UpdraftPlus was unable to find the table prefix when scanning the database " +"backup." +msgstr "" + +#: class-updraftplus.php:3859 methods/ftp.php:284 restorer.php:1367 +#, php-format +msgid "Your web server's PHP installation has these functions disabled: %s." +msgstr "" + +#: class-updraftplus.php:3859 methods/ftp.php:284 restorer.php:1368 +#, php-format +msgid "Your hosting company must enable these functions before %s can work." +msgstr "" + +#: class-updraftplus.php:3859 restorer.php:1368 +msgid "restoration" +msgstr "" + +#: class-updraftplus.php:3879 +msgid "" +"The database file appears to have been compressed twice - probably the " +"website you downloaded it from had a mis-configured webserver." +msgstr "" + +#: class-updraftplus.php:3886 class-updraftplus.php:3907 +msgid "The attempt to undo the double-compression failed." +msgstr "" + +#: class-updraftplus.php:3909 +msgid "The attempt to undo the double-compression succeeded." +msgstr "" + +#: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:105 +#, php-format +msgid "" +"You need to re-authenticate with %s, as your existing credentials are not " +"working." +msgstr "" + +#: methods/addon-base.php:75 methods/addon-base.php:80 +#, php-format +msgid "Failed to upload %s" +msgstr "" + +#: methods/addon-base.php:106 +msgid "failed to list files" +msgstr "" + +#: methods/addon-base.php:177 +msgid "This storage method does not allow downloading" +msgstr "" + +#: methods/addon-base.php:194 methods/addon-base.php:214 +#, php-format +msgid "Failed to download %s" +msgstr "" + +#: methods/addon-base.php:208 +msgid "Failed to download" +msgstr "" + +#: methods/addon-base.php:230 methods/cloudfiles.php:438 +#: methods/dropbox.php:420 methods/ftp.php:298 methods/googledrive.php:900 +#: methods/openstack-base.php:503 methods/s3.php:707 +#: methods/stream-base.php:217 +#, php-format +msgid "" +"%s is a great choice, because UpdraftPlus supports chunked uploads - no " +"matter how big your site is, UpdraftPlus can upload it a little at a time, " +"and not get thwarted by timeouts." +msgstr "" + +#: methods/addon-base.php:294 methods/stream-base.php:316 +msgid "" +"Failed: We were not able to place a file in that directory - please check " +"your credentials." +msgstr "" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +msgid "" +"Get your API key from your " +"Rackspace Cloud console (read instructions here), then pick a container name to use for " +"storage. This container will be created for you if it does not already exist." +msgstr "" + +#: methods/cloudfiles-new.php:81 methods/cloudfiles.php:458 +#: methods/openstack2.php:94 +msgid "Also, you should read this important FAQ." +msgstr "" + +#: methods/cloudfiles-new.php:85 +msgid "US or UK-based Rackspace Account" +msgstr "" + +#: methods/cloudfiles-new.php:87 +msgid "" +"Accounts created at rackspacecloud.com are US-accounts; accounts created at " +"rackspace.co.uk are UK-based" +msgstr "" + +#: methods/cloudfiles-new.php:119 +msgid "Cloud Files Username" +msgstr "" + +#: methods/cloudfiles-new.php:122 +msgid "" +"To create a new Rackspace API sub-user and API key that has access only to " +"this Rackspace container, use this add-on." +msgstr "" + +#: methods/cloudfiles-new.php:127 +msgid "Cloud Files API Key" +msgstr "" + +#: methods/cloudfiles-new.php:142 methods/cloudfiles.php:504 methods/s3.php:896 +msgid "API key" +msgstr "" + +#: methods/cloudfiles.php:95 methods/cloudfiles.php:99 +#: methods/cloudfiles.php:240 methods/cloudfiles.php:285 +#: methods/cloudfiles.php:336 methods/cloudfiles.php:340 +#: methods/openstack-base.php:36 methods/openstack-base.php:300 +#: methods/openstack-base.php:365 methods/openstack-base.php:437 +#: methods/openstack-base.php:440 methods/openstack-base.php:457 +#: methods/openstack-base.php:462 +#, php-format +msgid "%s authentication failed" +msgstr "" + +#: methods/cloudfiles.php:103 methods/cloudfiles.php:344 +#: methods/cloudfiles.php:363 +msgid "Cloud Files error - failed to create and access the container" +msgstr "" + +#: methods/cloudfiles.php:218 +msgid "Cloud Files error - failed to upload file" +msgstr "" + +#: methods/cloudfiles.php:219 methods/openstack-base.php:78 +#, php-format +msgid "%s error - failed to upload file" +msgstr "" + +#: methods/cloudfiles.php:234 methods/dropbox.php:262 +#: methods/openstack-base.php:103 +msgid "No settings were found" +msgstr "" + +#: methods/cloudfiles.php:409 +msgid "Error downloading remote file: Failed to download" +msgstr "" + +#: methods/cloudfiles.php:418 +#, php-format +msgid "Error - no such file exists at %s" +msgstr "" + +#: methods/cloudfiles.php:422 +#, php-format +msgid "Error - failed to download the file from %s" +msgstr "" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:735 +#, php-format +msgid "" +"Your web server's PHP installation does not included a required module (%s). " +"Please contact your web hosting provider's support." +msgstr "" + +#: methods/cloudfiles.php:448 methods/openstack-base.php:513 methods/s3.php:735 +#, php-format +msgid "" +"UpdraftPlus's %s module requires %s. Please do not file any " +"support requests; there is no alternative." +msgstr "" + +#: methods/cloudfiles.php:462 +msgid "US or UK Cloud" +msgstr "" + +#: methods/cloudfiles.php:482 +msgid "Cloud Files username" +msgstr "" + +#: methods/cloudfiles.php:486 +msgid "Cloud Files API key" +msgstr "" + +#: methods/cloudfiles.php:490 +msgid "Cloud Files container" +msgstr "" + +#: methods/cloudfiles.php:529 methods/openstack-base.php:420 +msgid "Failure: No container details were given." +msgstr "" + +#: methods/cloudfiles.php:556 +msgid "" +"Cloud Files error - we accessed the container, but failed to create a file " +"within it" +msgstr "" + +#: methods/cloudfiles.php:560 methods/openstack-base.php:476 +msgid "We accessed the container, and were able to create files within it." +msgstr "" + +#: methods/dropbox.php:100 methods/dropbox.php:108 +msgid "You do not appear to be authenticated with Dropbox" +msgstr "" + +#: methods/dropbox.php:113 +#, php-format +msgid "Dropbox error: %s (see log file for more)" +msgstr "" + +#: methods/dropbox.php:193 methods/dropbox.php:214 methods/dropbox.php:230 +#, php-format +msgid "error: failed to upload file to %s (see log file for more)" +msgstr "" + +#: methods/dropbox.php:195 +#, php-format +msgid "" +"%s did not return the expected response - check your log file for more " +"details" +msgstr "" + +#: methods/dropbox.php:281 +#, php-format +msgid "%s returned an unexpected HTTP response: %s" +msgstr "" + +#: methods/dropbox.php:323 +#, php-format +msgid "You do not appear to be authenticated with %s (whilst deleting)" +msgstr "" + +#: methods/dropbox.php:331 +#, php-format +msgid "Failed to access %s when deleting (see log file for more)" +msgstr "" + +#: methods/dropbox.php:364 +#, php-format +msgid "You do not appear to be authenticated with %s" +msgstr "" + +#: methods/dropbox.php:438 +msgid "Need to use sub-folders?" +msgstr "" + +#: methods/dropbox.php:438 +msgid "Backups are saved in" +msgstr "" + +#: methods/dropbox.php:438 +msgid "" +"If you back up several sites into the same Dropbox and want to organise with " +"sub-folders, then " +msgstr "" + +#: methods/dropbox.php:438 +msgid "there's an add-on for that." +msgstr "" + +#: methods/dropbox.php:443 methods/dropbox.php:444 +msgid "Dropbox" +msgstr "" + +#: methods/dropbox.php:513 methods/dropbox.php:515 +msgid "Success:" +msgstr "" + +#: methods/dropbox.php:513 methods/dropbox.php:515 +#, php-format +msgid "you have authenticated your %s account" +msgstr "" + +#: methods/dropbox.php:518 +msgid "" +"though part of the returned information was not as expected - your mileage " +"may vary" +msgstr "" + +#: methods/email.php:28 +#, php-format +msgid "" +"This backup archive is %s MB in size - the attempt to send this via email is " +"likely to fail (few email servers allow attachments of this size). If so, " +"you should switch to using a different remote storage method." +msgstr "" + +#: methods/email.php:43 +msgid "WordPress Backup" +msgstr "" + +#: methods/email.php:45 +#, php-format +msgid "Backup is of: %s." +msgstr "" + +#: methods/email.php:58 +msgid "" +"The attempt to send the backup via email failed (probably the backup was too " +"large for this method)" +msgstr "" + +#: methods/email.php:69 +msgid "Note:" +msgstr "" + +#: methods/email.php:73 +#, php-format +msgid "Your site's admin email address (%s) will be used." +msgstr "" + +#: methods/email.php:73 +msgid "configure it here" +msgstr "" + +#: methods/email.php:74 +#, php-format +msgid "For more options, use the \"%s\" add-on." +msgstr "" + +#: methods/email.php:77 +#, php-format +msgid "" +"Be aware that mail servers tend to have size limits; typically around %s MB; " +"backups larger than any limits will likely not arrive." +msgstr "" + +#: methods/ftp.php:84 methods/ftp.php:135 methods/ftp.php:239 +#, php-format +msgid "%s login failure" +msgstr "" + +#: methods/ftp.php:111 +#, php-format +msgid "%s upload failed" +msgstr "" + +#: methods/ftp.php:279 +msgid "regular non-encrypted FTP" +msgstr "" + +#: methods/ftp.php:280 +msgid "encrypted FTP (implicit encryption)" +msgstr "" + +#: methods/ftp.php:281 +msgid "encrypted FTP (explicit encryption)" +msgstr "" + +#: methods/ftp.php:303 +msgid "Only non-encrypted FTP is supported by regular UpdraftPlus." +msgstr "" + +#: methods/ftp.php:303 +msgid "" +"If you want encryption (e.g. you are storing sensitive business data), then " +"an add-on is available." +msgstr "" + +#: methods/ftp.php:307 +msgid "FTP server" +msgstr "" + +#: methods/ftp.php:311 +msgid "FTP login" +msgstr "" + +#: methods/ftp.php:315 +msgid "FTP password" +msgstr "" + +#: methods/ftp.php:319 +msgid "Remote path" +msgstr "" + +#: methods/ftp.php:320 +msgid "Needs to already exist" +msgstr "" + +#: methods/ftp.php:323 +msgid "Passive mode" +msgstr "" + +#: methods/ftp.php:325 +msgid "" +"Almost all FTP servers will want passive mode; but if you need active mode, " +"then uncheck this." +msgstr "" + +#: methods/ftp.php:351 +msgid "Failure: No server details were given." +msgstr "" + +#: methods/ftp.php:355 +msgid "login" +msgstr "" + +#: methods/ftp.php:359 methods/openstack2.php:147 +msgid "password" +msgstr "" + +#: methods/ftp.php:369 +msgid "Failure: we did not successfully log in with those credentials." +msgstr "" + +#: methods/ftp.php:378 +msgid "" +"Success: we successfully logged in, and confirmed our ability to create a " +"file in the given directory (login type:" +msgstr "" + +#: methods/ftp.php:381 +msgid "" +"Failure: we successfully logged in, but were not able to create a file in " +"the given directory." +msgstr "" + +#: methods/ftp.php:383 +msgid "" +"This is sometimes caused by a firewall - try turning off SSL in the expert " +"settings, and testing again." +msgstr "" + +#: methods/googledrive.php:157 +msgid "Google Drive list files: failed to access parent folder" +msgstr "" + +#: methods/googledrive.php:381 methods/googledrive.php:427 +#: methods/googledrive.php:433 methods/googledrive.php:435 +#: methods/stream-base.php:201 +#, php-format +msgid "Failed to upload to %s" +msgstr "" + +#: methods/googledrive.php:381 +msgid "failed to access parent folder" +msgstr "" + +#: methods/googledrive.php:410 +#, php-format +msgid "" +"Account full: your %s account has only %d bytes left, but the file to be " +"uploaded is %d bytes" +msgstr "" + +#: methods/googledrive.php:417 +#, php-format +msgid "" +"Upload expected to fail: the %s limit for any single file is %s, whereas " +"this file is %s GB (%d bytes)" +msgstr "" + +#: methods/googledrive.php:507 +msgid "" +"Have not yet obtained an access token from Google - you need to authorise or " +"re-authorise your connection to Google Drive." +msgstr "" + +#: methods/googledrive.php:917 +msgid "" +"Follow this link to your Google API Console, and there activate the Drive " +"API and create a Client ID in the API Access section." +msgstr "" + +#: methods/googledrive.php:917 +msgid "" +"N.B. If you install UpdraftPlus on several WordPress sites, then you cannot " +"re-use your project; you must create a new one from your Google API console " +"for each site." +msgstr "" + +#: methods/googledrive.php:946 +msgid "This is NOT a folder name." +msgstr "" + +#: methods/googledrive.php:946 +msgid "It is an ID number internal to Google Drive" +msgstr "" + +#: methods/googledrive.php:955 +msgid "To be able to set a custom folder name, use UpdraftPlus Premium." +msgstr "" + +#: methods/insufficient.php:17 methods/viaaddon-base.php:16 +#, php-format +msgid "This remote storage method (%s) requires PHP %s or later." +msgstr "" + +#: methods/insufficient.php:64 methods/viaaddon-base.php:86 +msgid "You will need to ask your web hosting company to upgrade." +msgstr "" + +#: methods/insufficient.php:65 methods/viaaddon-base.php:87 +#, php-format +msgid "Your %s version: %s." +msgstr "" + +#: methods/openstack-base.php:40 methods/openstack-base.php:108 +#: methods/openstack-base.php:115 methods/openstack-base.php:304 +#: methods/openstack-base.php:369 +#, php-format +msgid "%s error - failed to access the container" +msgstr "" + +#: methods/openstack-base.php:48 methods/openstack-base.php:312 +#: methods/openstack-base.php:381 +#, php-format +msgid "Could not access %s container" +msgstr "" + +#: methods/openstack-base.php:389 +#, php-format +msgid "The %s object was not found" +msgstr "" + +#: methods/openstack-base.php:403 +msgid "Error downloading remote file: Failed to download (" +msgstr "" + +#: methods/openstack-base.php:471 +#, php-format +msgid "" +"%s error - we accessed the container, but failed to create a file within it" +msgstr "" + +#: methods/openstack-base.php:472 methods/openstack-base.php:477 +#, php-format +msgid "Region: %s" +msgstr "" + +#: methods/openstack2.php:94 +msgid "" +"Get your access credentials from your OpenStack Swift provider, and then " +"pick a container name to use for storage. This container will be created for " +"you if it does not already exist." +msgstr "" + +#: methods/openstack2.php:99 methods/openstack2.php:157 +msgid "authentication URI" +msgstr "" + +#: methods/openstack2.php:102 +msgctxt "Keystone and swauth are technical terms which cannot be translated" +msgid "" +"This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not " +"supported." +msgstr "" + +#: methods/openstack2.php:107 +msgid "Follow this link for more information" +msgstr "" + +#: methods/openstack2.php:107 +msgid "Tenant" +msgstr "" + +#: methods/openstack2.php:116 +msgid "Leave this blank, and a default will be chosen." +msgstr "" + +#: methods/openstack2.php:152 +msgctxt "" +"\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack " +"tenant\" to get more help on its meaning" +msgid "tenant" +msgstr "" + +#: methods/s3.php:87 +msgid "" +"No settings were found - please go to the Settings tab and check your " +"settings" +msgstr "" + +#: methods/s3.php:134 methods/s3.php:135 methods/s3.php:136 methods/s3.php:144 +#: methods/s3.php:145 methods/s3.php:146 +#, php-format +msgid "%s Error: Failed to initialise" +msgstr "" + +#: methods/s3.php:273 +#, php-format +msgid "" +"The required %s PHP module is not installed - ask your web hosting company " +"to enable it" +msgstr "" + +#: methods/s3.php:363 +#, php-format +msgid "" +"%s upload: getting uploadID for multipart upload failed - see log file for " +"more details" +msgstr "" + +#: methods/s3.php:386 +#, php-format +msgid "%s error: file %s was shortened unexpectedly" +msgstr "" + +#: methods/s3.php:396 +#, php-format +msgid "%s chunk %s: upload failed" +msgstr "" + +#: methods/s3.php:412 +#, php-format +msgid "%s upload (%s): re-assembly failed (see log for more details)" +msgstr "" + +#: methods/s3.php:416 +#, php-format +msgid "%s re-assembly error (%s): (see log file for more)" +msgstr "" + +#: methods/s3.php:434 methods/s3.php:608 methods/s3.php:687 +#, php-format +msgid "" +"%s Error: Failed to access bucket %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:681 +#, php-format +msgid "" +"%s Error: Failed to download %s. Check your permissions and credentials." +msgstr "" + +#: methods/s3.php:710 +msgid "Examples of S3-compatible storage providers:" +msgstr "" + +#: methods/s3.php:717 +msgid "... and many more!" +msgstr "" + +#: methods/s3.php:731 +#, php-format +msgid "" +"Your web server's PHP installation does not included a required module (%s). " +"Please contact your web hosting provider's support and ask for them to " +"enable it." +msgstr "" + +#: methods/s3.php:746 +#, php-format +msgid "" +"Get your access key and secret key from your %s console, " +"then pick a (globally unique - all %s users) bucket name (letters and " +"numbers) (and optionally a path) to use for storage. This bucket will be " +"created for you if it does not already exist." +msgstr "" + +#: methods/s3.php:748 +msgid "If you see errors about SSL certificates, then please go here for help." +msgstr "" + +#: methods/s3.php:750 +#, php-format +msgid "Other %s FAQs." +msgstr "" + +#: methods/s3.php:755 +#, php-format +msgid "%s end-point" +msgstr "" + +#: methods/s3.php:778 +msgid "" +"To create a new IAM sub-user and access key that has access only to this " +"bucket, use this add-on." +msgstr "" + +#: methods/s3.php:783 +#, php-format +msgid "%s access key" +msgstr "" + +#: methods/s3.php:787 +#, php-format +msgid "%s secret key" +msgstr "" + +#: methods/s3.php:791 +#, php-format +msgid "%s location" +msgstr "" + +#: methods/s3.php:792 +msgid "" +"Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/" +"mypath" +msgstr "" + +#: methods/s3.php:900 +msgid "API secret" +msgstr "" + +#: methods/s3.php:946 +#, php-format +msgid "" +"Failure: We could not successfully access or create such a bucket. Please " +"check your access credentials, and if those are correct then try another " +"bucket name (as another %s user may already have taken your name)." +msgstr "" + +#: methods/s3.php:949 +#, php-format +msgid "" +"The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")" +msgstr "" + +#: methods/s3.php:963 +#, php-format +msgid "The communication with %s was encrypted." +msgstr "" + +#: methods/s3.php:965 +#, php-format +msgid "The communication with %s was not encrypted." +msgstr "" + +#: methods/s3.php:970 +msgid "Please check your access credentials." +msgstr "" + +#: methods/s3generic.php:41 methods/s3generic.php:49 +msgid "S3 (Compatible)" +msgstr "" + +#: methods/stream-base.php:107 methods/stream-base.php:111 +#, php-format +msgid "Chunk %s: A %s error occurred" +msgstr "" + +#: methods/stream-base.php:273 +msgid "Error opening remote file: Failed to download" +msgstr "" + +#: methods/stream-base.php:286 +msgid "Local write failed: Failed to download" +msgstr "" + +#: methods/updraftvault.php:48 methods/updraftvault.php:71 +msgid "Updraft Vault" +msgstr "" + +#: methods/updraftvault.php:209 +msgid "" +"Your UpdraftPlus Premium purchase is over a year ago. You should renew " +"immediately to avoid losing the 12 months of free storage allowance that you " +"get for being a current UpdraftPlus Premium customer." +msgstr "" + +#: methods/updraftvault.php:212 +msgid "" +"You have an UpdraftPlus Vault subscription with overdue payment. You are " +"within the few days of grace period before it will be suspended, and you " +"will lose your quota and access to data stored within it. Please renew as " +"soon as possible!" +msgstr "" + +#: methods/updraftvault.php:215 +msgid "" +"You have an UpdraftPlus Vault subscription that has not been renewed, and " +"the grace period has expired. In a few days' time, your stored data will be " +"permanently removed. If you do not wish this to happen, then you should " +"renew as soon as possible." +msgstr "" + +#: methods/updraftvault.php:219 +msgid "" +"No Vault connection was found for this site (has it moved?); please " +"disconnect and re-connect." +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "" +"UpdraftPlus Vault brings you storage that is reliable, easy to use " +"and a great price." +msgstr "" + +#: methods/updraftvault.php:252 methods/updraftvault.php:269 +msgid "Press a button to get started." +msgstr "" + +#: methods/updraftvault.php:255 +msgid "First time user?" +msgstr "" + +#: methods/updraftvault.php:256 +msgid "Show the options" +msgstr "" + +#: methods/updraftvault.php:259 +msgid "Already purchased space?" +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "" +"UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, " +"with redundant data storage to achieve 99.999999999% reliability." +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read more about it here." +msgstr "" + +#: methods/updraftvault.php:263 methods/updraftvault.php:293 +msgid "Read the FAQs here." +msgstr "" + +#: methods/updraftvault.php:273 methods/updraftvault.php:279 +#: methods/updraftvault.php:285 +#, php-format +msgid "%s per quarter" +msgstr "" + +#: methods/updraftvault.php:274 methods/updraftvault.php:280 +#: methods/updraftvault.php:286 +msgid "or (annual discount)" +msgstr "" + +#: methods/updraftvault.php:275 methods/updraftvault.php:281 +#: methods/updraftvault.php:287 +#, php-format +msgid "%s per year" +msgstr "" + +#: methods/updraftvault.php:290 +msgid "" +"Payments can be made in US dollars, euros or GB pounds sterling, via card or " +"PayPal." +msgstr "" + +#: methods/updraftvault.php:290 +msgid "Subscriptions can be cancelled at any time." +msgstr "" + +#: methods/updraftvault.php:296 methods/updraftvault.php:311 +msgid "Back..." +msgstr "" + +#: methods/updraftvault.php:301 +msgid "Enter your UpdraftPlus.Com email / password here to connect:" +msgstr "" + +#: methods/updraftvault.php:303 +msgid "E-mail" +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Don't know your email address, or forgotten your password?" +msgstr "" + +#: methods/updraftvault.php:308 +msgid "Go here for help" +msgstr "" + +#: methods/updraftvault.php:332 +msgid "You are not connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:336 +msgid "This site is connected to UpdraftPlus Vault." +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Well done - there's nothing more needed to set up." +msgstr "" + +#: methods/updraftvault.php:336 +msgid "Vault owner" +msgstr "" + +#: methods/updraftvault.php:338 +msgid "Quota:" +msgstr "" + +#: methods/updraftvault.php:354 +#, php-format +msgid "" +"%s Error: you have insufficient storage quota available (%s) to upload this " +"archive (%s)." +msgstr "" + +#: methods/updraftvault.php:354 +msgid "You can get more quota here" +msgstr "" + +#: methods/updraftvault.php:359 methods/updraftvault.php:375 +#: methods/updraftvault.php:414 +msgid "Current use:" +msgstr "" + +#: methods/updraftvault.php:362 methods/updraftvault.php:378 +#: methods/updraftvault.php:380 methods/updraftvault.php:433 +msgid "Get more quota" +msgstr "" + +#: methods/updraftvault.php:364 methods/updraftvault.php:433 +msgid "Refresh current status" +msgstr "" + +#: methods/updraftvault.php:509 udaddons/options.php:265 +msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:529 udaddons/updraftplus-addons.php:655 +msgid "You need to supply both an email address and a password" +msgstr "" + +#: methods/updraftvault.php:553 udaddons/updraftplus-addons.php:747 +msgid "UpdraftPlus.com has responded with 'Access Denied'." +msgstr "" + +#: methods/updraftvault.php:553 udaddons/updraftplus-addons.php:747 +#, php-format +msgid "It appears that your web server's IP Address (%s) is blocked." +msgstr "" + +#: methods/updraftvault.php:553 udaddons/updraftplus-addons.php:732 +#: udaddons/updraftplus-addons.php:747 +msgid "" +"This most likely means that you share a webserver with a hacked website that " +"has been used in previous attacks." +msgstr "" + +#: methods/updraftvault.php:553 +msgid "To remove the block, please go here." +msgstr "" + +#: methods/updraftvault.php:555 udaddons/updraftplus-addons.php:752 +#, php-format +msgid "" +"UpdraftPlus.Com returned a response which we could not understand (data: %s)" +msgstr "" + +#: methods/updraftvault.php:580 +msgid "You do not currently have any UpdraftPlus Vault quota" +msgstr "" + +#: methods/updraftvault.php:582 methods/updraftvault.php:600 +#: udaddons/updraftplus-addons.php:795 +msgid "UpdraftPlus.Com returned a response, but we could not understand it" +msgstr "" + +#: methods/updraftvault.php:589 udaddons/updraftplus-addons.php:785 +msgid "" +"Your email address was valid, but your password was not recognised by " +"UpdraftPlus.Com." +msgstr "" + +#: methods/updraftvault.php:589 +msgid "" +"If you have forgotten your password, then go here to change your password on " +"updraftplus.com." +msgstr "" + +#: methods/updraftvault.php:592 udaddons/updraftplus-addons.php:789 +msgid "You entered an email address that was not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/updraftvault.php:596 udaddons/updraftplus-addons.php:792 +msgid "Your email address and password were not recognised by UpdraftPlus.Com" +msgstr "" + +#: methods/viaaddon-base.php:29 methods/viaaddon-base.php:43 +#: methods/viaaddon-base.php:52 methods/viaaddon-base.php:62 +#, php-format +msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s" +msgstr "" + +#: methods/viaaddon-base.php:72 +#, php-format +msgid "%s support is available as an add-on" +msgstr "" + +#: methods/viaaddon-base.php:72 +msgid "follow this link to get it" +msgstr "" + +#: options.php:185 +msgid "UpdraftPlus warning:" +msgstr "" + +#: options.php:185 +msgid "This is a WordPress multi-site (a.k.a. network) installation." +msgstr "" + +#: options.php:185 +msgid "" +"WordPress Multisite is supported, with extra features, by UpdraftPlus " +"Premium, or the Multisite add-on." +msgstr "" + +#: options.php:185 +msgid "" +"Without upgrading, UpdraftPlus allows every blog admin who " +"can modify plugin settings to back up (and hence access the data, including " +"passwords, from) and restore (including with customised modifications, e.g. " +"changed passwords) the entire network." +msgstr "" + +#: options.php:185 +msgid "" +"(This applies to all WordPress backup plugins unless they have been " +"explicitly coded for multisite compatibility)." +msgstr "" + +#: restorer.php:90 +msgid "" +"UpdraftPlus is not able to directly restore this kind of entity. It must be " +"restored manually." +msgstr "" + +#: restorer.php:91 +msgid "Backup file not available." +msgstr "" + +#: restorer.php:92 +msgid "Copying this entity failed." +msgstr "" + +#: restorer.php:93 +msgid "Unpacking backup..." +msgstr "" + +#: restorer.php:94 +msgid "Decrypting database (can take a while)..." +msgstr "" + +#: restorer.php:95 +msgid "Database successfully decrypted." +msgstr "" + +#: restorer.php:96 +msgid "Moving old data out of the way..." +msgstr "" + +#: restorer.php:97 +msgid "Moving unpacked backup into place..." +msgstr "" + +#: restorer.php:98 +msgid "" +"Restoring the database (on a large site this can take a long time - if it " +"times out (which can happen if your web hosting company has configured your " +"hosting to limit resources) then you should use a different method, such as " +"phpMyAdmin)..." +msgstr "" + +#: restorer.php:99 +msgid "Cleaning up rubbish..." +msgstr "" + +#: restorer.php:100 +msgid "Could not move old files out of the way." +msgstr "" + +#: restorer.php:100 +msgid "" +"You should check the file ownerships and permissions in your WordPress " +"installation" +msgstr "" + +#: restorer.php:101 +msgid "Could not delete old directory." +msgstr "" + +#: restorer.php:102 +msgid "" +"Could not move new files into place. Check your wp-content/upgrade folder." +msgstr "" + +#: restorer.php:103 +msgid "Could not move the files into place. Check your file permissions." +msgstr "" + +#: restorer.php:104 +msgid "Failed to delete working directory after restoring." +msgstr "" + +#: restorer.php:106 +msgid "Failed to unpack the archive" +msgstr "" + +#: restorer.php:259 +#, php-format +msgid "%s files have been extracted" +msgstr "" + +#: restorer.php:301 +msgid "Failed to create a temporary directory" +msgstr "" + +#: restorer.php:316 +msgid "Failed to write out the decrypted database to the filesystem" +msgstr "" + +#: restorer.php:385 +msgid "The directory does not exist" +msgstr "" + +#: restorer.php:424 +msgid "wp-config.php from backup: will restore as wp-config-backup.php" +msgstr "" + +#: restorer.php:429 +msgid "wp-config.php from backup: restoring (as per user's request)" +msgstr "" + +#: restorer.php:520 +#, php-format +msgid "Failed to move file (check your file permissions and disk quota): %s" +msgstr "" + +#: restorer.php:529 +#, php-format +msgid "" +"Failed to move directory (check your file permissions and disk quota): %s" +msgstr "" + +#: restorer.php:580 restorer.php:587 +#, php-format +msgid "" +"UpdraftPlus needed to create a %s in your content directory, but failed - " +"please check your file permissions and enable the access (%s)" +msgstr "" + +#: restorer.php:580 +msgid "folder" +msgstr "" + +#: restorer.php:587 +msgid "file" +msgstr "" + +#: restorer.php:605 +#, php-format +msgid "" +"Existing unremoved folders from a previous restore exist (please use the " +"\"Delete Old Directories\" button to delete them before trying again): %s" +msgstr "" + +#: restorer.php:614 +msgid "" +"This version of UpdraftPlus does not know how to handle this type of foreign " +"backup" +msgstr "" + +#: restorer.php:707 +msgid "Deferring..." +msgstr "" + +#: restorer.php:749 restorer.php:797 +msgid "" +"The WordPress content folder (wp-content) was not found in this zip file." +msgstr "" + +#: restorer.php:879 +msgid "Files found:" +msgstr "" + +#: restorer.php:885 +msgid "Unable to enumerate files in that directory." +msgstr "" + +#: restorer.php:956 restorer.php:970 +#, php-format +msgid "%s: This directory already exists, and will be replaced" +msgstr "" + +#: restorer.php:986 +msgid "" +"File permissions do not allow the old data to be moved and retained; " +"instead, it will be deleted." +msgstr "" + +#: restorer.php:1163 +#, php-format +msgid "Clearing cached pages (%s)..." +msgstr "" + +#: restorer.php:1270 +#, php-format +msgid "Using directory from backup: %s" +msgstr "" + +#: restorer.php:1287 +msgid "Please supply the requested information, and then continue." +msgstr "" + +#: restorer.php:1297 +#, php-format +msgid "New table prefix: %s" +msgstr "" + +#: restorer.php:1330 +msgid "" +"Warning: PHP safe_mode is active on your server. Timeouts are much more " +"likely. If these happen, then you will need to manually restore the file via " +"phpMyAdmin or another method." +msgstr "" + +#: restorer.php:1353 +msgid "Failed to find database file" +msgstr "" + +#: restorer.php:1374 +msgid "Failed to open database file" +msgstr "" + +#: restorer.php:1442 +msgid "" +"Your database user does not have permission to create tables. We will " +"attempt to restore by simply emptying the tables; this should work as long " +"as a) you are restoring from a WordPress version with the same database " +"structure, and b) Your imported database does not contain any tables which " +"are not already present on the importing site." +msgstr "" + +#: restorer.php:1471 +#, php-format +msgid "" +"Your database user does not have permission to drop tables. We will attempt " +"to restore by simply emptying the tables; this should work as long as you " +"are restoring from a WordPress version with the same database structure (%s)" +msgstr "" + +#: restorer.php:1515 +#, php-format +msgid "Backup of: %s" +msgstr "" + +#: restorer.php:1522 +msgid "Backup created by:" +msgstr "" + +#: restorer.php:1527 +msgid "Site home:" +msgstr "" + +#: restorer.php:1533 +msgid "Content URL:" +msgstr "" + +#: restorer.php:1538 +msgid "Uploads URL:" +msgstr "" + +#: restorer.php:1545 restorer.php:1638 restorer.php:1664 +msgid "Old table prefix:" +msgstr "" + +#: restorer.php:1590 +msgid "Split line to avoid exceeding maximum packet size" +msgstr "" + +#: restorer.php:1618 restorer.php:1938 restorer.php:1975 restorer.php:1988 +#, php-format +msgid "An error occurred on the first %s command - aborting run" +msgstr "" + +#: restorer.php:1720 +#, php-format +msgid "Requested table engine (%s) is not present - changing to MyISAM." +msgstr "" + +#: restorer.php:1730 +#, php-format +msgid "Restoring table (%s)" +msgstr "" + +#: restorer.php:1734 +msgid "will restore as:" +msgstr "" + +#: restorer.php:1796 +#, php-format +msgid "Finished: lines processed: %d in %.2f seconds" +msgstr "" + +#: restorer.php:1885 +#, php-format +msgid "" +"An SQL line that is larger than the maximum packet size and cannot be split " +"was found; this line will not be processed, but will be dropped: %s" +msgstr "" + +#: restorer.php:1900 +#, php-format +msgid "Skipping table %s: this table will not be restored" +msgstr "" + +#: restorer.php:1909 +#, php-format +msgid "Cannot create new tables, so skipping this command (%s)" +msgstr "" + +#: restorer.php:1916 +#, php-format +msgid "Table to be implicitly dropped: %s" +msgstr "" + +#: restorer.php:1926 +#, php-format +msgid "Cannot drop tables, so deleting instead (%s)" +msgstr "" + +#: restorer.php:1965 +#, php-format +msgctxt "" +"The user is being told the number of times an error has happened, e.g. An " +"error (27) occurred" +msgid "An error (%s) occurred:" +msgstr "" + +#: restorer.php:1971 +msgid "" +"Create table failed - probably because there is no permission to drop tables " +"and the table already exists; will continue" +msgstr "" + +#: restorer.php:1986 +msgid "" +"This problem is caused by trying to restore a database on a very old MySQL " +"version that is incompatible with the source database." +msgstr "" + +#: restorer.php:1986 +#, php-format +msgid "This database needs to be deployed on MySQL version %s or later." +msgstr "" + +#: restorer.php:1988 +#, php-format +msgid "" +"To use this backup, your database server needs to support the %s character " +"set." +msgstr "" + +#: restorer.php:1993 +msgid "Too many database errors have occurred - aborting" +msgstr "" + +#: restorer.php:2004 +#, php-format +msgid "Database queries processed: %d in %.2f seconds" +msgstr "" + +#: restorer.php:2067 restorer.php:2142 +#, php-format +msgid "Table prefix has changed: changing %s table field(s) accordingly:" +msgstr "" + +#: restorer.php:2089 +#, php-format +msgid "Uploads path (%s) does not exist - resetting (%s)" +msgstr "" + +#: restorer.php:2091 +#, php-format +msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)" +msgstr "" + +#: restorer.php:2110 +msgid "Custom content type manager plugin data detected: clearing option cache" +msgstr "" + +#: restorer.php:2121 +msgid "" +"Elegant themes theme builder plugin data detected: resetting temporary folder" +msgstr "" + +#: udaddons/options.php:94 +msgid "" +"An update is available for UpdraftPlus - please follow this link to get it." +msgstr "" + +#: udaddons/options.php:100 +msgid "" +"You have not yet connected with your UpdraftPlus.Com account, to enable you " +"to list your purchased add-ons." +msgstr "" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "You need to connect to receive future updates to UpdraftPlus." +msgstr "" + +#: udaddons/options.php:100 udaddons/options.php:102 +msgid "Go here to connect." +msgstr "" + +#: udaddons/options.php:102 +msgid "You have not yet connected with your UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:109 +msgid "UpdraftPlus is not yet activated." +msgstr "" + +#: udaddons/options.php:110 +msgid "Go here to activate it." +msgstr "" + +#: udaddons/options.php:113 +msgid "UpdraftPlus is not yet installed." +msgstr "" + +#: udaddons/options.php:113 +msgid "Go here to begin installing it." +msgstr "" + +#: udaddons/options.php:114 +msgid "" +"You do seem to have the obsolete Updraft plugin installed - perhaps you got " +"them confused?" +msgstr "" + +#: udaddons/options.php:120 +msgid "Your web server's version of PHP is too old (" +msgstr "" + +#: udaddons/options.php:141 +msgid "Connect with your UpdraftPlus.Com account" +msgstr "" + +#: udaddons/options.php:172 +msgid "Not yet got an account (it's free)? Go get one!" +msgstr "" + +#: udaddons/options.php:183 +msgid "Forgotten your details?" +msgstr "" + +#: udaddons/options.php:242 +msgid "" +"Interested in knowing about your UpdraftPlus.Com password security? Read " +"about it here." +msgstr "" + +#: udaddons/options.php:271 +msgid "" +"You are presently connected to an UpdraftPlus.Com account." +msgstr "" + +#: udaddons/options.php:272 +msgid "" +"If you bought new add-ons, then follow this link to refresh your connection" +msgstr "" + +#: udaddons/options.php:273 +msgid "" +"Note that after you have claimed your add-ons, you can remove your password " +"(but not the email address) from the settings below, without affecting this " +"site's access to updates." +msgstr "" + +#: udaddons/options.php:281 +msgid "" +"You are presently not connected to an UpdraftPlus.Com " +"account." +msgstr "" + +#: udaddons/options.php:290 +msgid "Errors occurred when trying to connect to UpdraftPlus.Com:" +msgstr "" + +#: udaddons/options.php:337 +msgid "Please wait whilst we make the claim..." +msgstr "" + +#: udaddons/options.php:338 +msgid "" +"Claim not granted - perhaps you have already used this purchase somewhere " +"else, or your paid period for downloading from updraftplus.com has expired?" +msgstr "" + +#: udaddons/options.php:339 +msgid "Claim not granted - your account login details were wrong" +msgstr "" + +#: udaddons/options.php:340 +msgid "An unknown response was received. Response was:" +msgstr "" + +#: udaddons/options.php:370 udaddons/updraftplus-addons.php:256 +msgid "UpdraftPlus Addons" +msgstr "" + +#: udaddons/options.php:381 +msgid "" +"An update containing your addons is available for UpdraftPlus - please " +"follow this link to get it." +msgstr "" + +#: udaddons/options.php:407 +msgid "An error occurred when trying to retrieve your add-ons." +msgstr "" + +#: udaddons/options.php:423 +msgid "UpdraftPlus Support" +msgstr "" + +#: udaddons/options.php:425 +msgid "Need to get support?" +msgstr "" + +#: udaddons/options.php:425 +msgid "Go here" +msgstr "" + +#: udaddons/options.php:457 +msgid "You've got it" +msgstr "" + +#: udaddons/options.php:459 +#, php-format +msgid "Your version: %s" +msgstr "" + +#: udaddons/options.php:461 udaddons/options.php:463 +msgid "latest" +msgstr "" + +#: udaddons/options.php:465 +msgid "(apparently a pre-release or withdrawn release)" +msgstr "" + +#: udaddons/options.php:471 +msgid "Available for this site (via your all-addons purchase)" +msgstr "" + +#: udaddons/options.php:471 +msgid "please follow this link to update the plugin in order to get it" +msgstr "" + +#: udaddons/options.php:474 +msgid "Assigned to this site" +msgstr "" + +#: udaddons/options.php:474 +msgid "please follow this link to update the plugin in order to activate it" +msgstr "" + +#: udaddons/options.php:482 +msgid "Available to claim on this site" +msgstr "" + +#: udaddons/options.php:482 udaddons/options.php:484 +msgid "activate it on this site" +msgstr "" + +#: udaddons/options.php:484 +msgid "You have an inactive purchase" +msgstr "" + +#: udaddons/options.php:488 +msgid "Get it from the UpdraftPlus.Com Store" +msgstr "" + +#: udaddons/options.php:488 +msgid "" +"(or connect using the form on this page if you have already purchased it)" +msgstr "" + +#: udaddons/options.php:489 +msgid "Buy It" +msgstr "" + +#: udaddons/options.php:547 +msgid "Manage Addons" +msgstr "" + +#: udaddons/plugin-updates/github-checker.php:120 +msgid "There is no changelog available." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:648 +msgid "Check for updates" +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:692 +msgid "This plugin is up to date." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:694 +msgid "A new version of this plugin is available." +msgstr "" + +#: udaddons/plugin-updates/plugin-update-checker.php:696 +#, php-format +msgid "Unknown update checker status \"%s\"" +msgstr "" + +#: udaddons/updraftplus-addons.php:180 +#, php-format +msgid "Dismiss from main dashboard (for %s weeks)" +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +#, php-format +msgid "" +"The installed version of UpdraftPlus Backup/Restore has not been tested on " +"your version of WordPress (%s)." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +#, php-format +msgid "It has been tested up to version %s." +msgstr "" + +#: udaddons/updraftplus-addons.php:208 +msgid "" +"You should update UpdraftPlus to make sure that you have a version that has " +"been tested for compatibility." +msgstr "" + +#: udaddons/updraftplus-addons.php:215 +msgid "" +"Your paid access to UpdraftPlus updates for this site has expired. You will " +"no longer receive updates to UpdraftPlus." +msgstr "" + +#: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217 +msgid "" +"To regain access to updates (including future features and compatibility " +"with future WordPress releases) and support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:217 +#, php-format +msgid "" +"Your paid access to UpdraftPlus updates for %s add-ons on this site has " +"expired." +msgstr "" + +#: udaddons/updraftplus-addons.php:221 +#, php-format +msgid "" +"Your paid access to UpdraftPlus updates for %s of the %s add-ons on this " +"site will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223 +msgid "" +"To retain your access, and maintain access to updates (including future " +"features and compatibility with future WordPress releases) and support, " +"please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:223 +msgid "Your paid access to UpdraftPlus updates for this site will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:227 +msgid "Your paid access to UpdraftPlus support has expired." +msgstr "" + +#: udaddons/updraftplus-addons.php:227 +msgid "To regain your access, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:229 +msgid "Your paid access to UpdraftPlus support will soon expire." +msgstr "" + +#: udaddons/updraftplus-addons.php:229 +msgid "To maintain your access to support, please renew." +msgstr "" + +#: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396 +msgid "Errors occurred:" +msgstr "" + +#: udaddons/updraftplus-addons.php:680 +msgid "We failed to successfully connect to UpdraftPlus.Com" +msgstr "" + +#: udaddons/updraftplus-addons.php:682 +msgid "UpdraftPlus.Com responded, but we did not understand the response" +msgstr "" + +#: udaddons/updraftplus-addons.php:717 +msgid "An error response was received; HTTP code: " +msgstr "" + +#: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747 +msgid "To remove any block, please go here." +msgstr "" + +#: udaddons/updraftplus-addons.php:732 +msgid "Your IP address:" +msgstr "" + +#: udaddons/updraftplus-addons.php:750 +msgid "" +"No response data was received. This usually indicates a network connectivity " +"issue (e.g. an outgoing firewall or overloaded network) between this site " +"and UpdraftPlus.com." +msgstr "" + +#: udaddons/updraftplus-addons.php:785 +msgid "Go here to re-enter your password." +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "If you have forgotten your password " +msgstr "" + +#: udaddons/updraftplus-addons.php:786 +msgid "go here to change your password on updraftplus.com." +msgstr "" + +#: updraftplus.php:147 +msgid "" +"You do not have UpdraftPlus completely installed - please de-install and " +"install it again. Most likely, WordPress malfunctioned when copying the " +"plugin files." +msgstr "" diff --git a/plugins/updraftplus/methods/azure.php b/plugins/updraftplus/methods/azure.php new file mode 100644 index 0000000..9bbfd8d --- /dev/null +++ b/plugins/updraftplus/methods/azure.php @@ -0,0 +1,19 @@ +=')) { + require_once(UPDRAFTPLUS_DIR.'/methods/viaaddon-base.php'); + class UpdraftPlus_BackupModule_azure extends UpdraftPlus_BackupModule_ViaAddon { + public function __construct() { + parent::__construct('azure', 'Microsoft Azure', '5.3.3', 'azure.png'); + } + } +} else { + require_once(UPDRAFTPLUS_DIR.'/methods/insufficient.php'); + class UpdraftPlus_BackupModule_azure extends UpdraftPlus_BackupModule_insufficientphp { + public function __construct() { + parent::__construct('azure', 'Microsoft Azure', '5.3.3', 'azure.png'); + } + } +} diff --git a/plugins/updraftplus/methods/cloudfiles-new.php b/plugins/updraftplus/methods/cloudfiles-new.php new file mode 100644 index 0000000..41928fe --- /dev/null +++ b/plugins/updraftplus/methods/cloudfiles-new.php @@ -0,0 +1,161 @@ +client; + } + + public function get_service($opts, $useservercerts = false, $disablesslverify = null) { + + $user = $opts['user']; + $apikey = $opts['apikey']; + $authurl = $opts['authurl']; + $region = (!empty($opts['region'])) ? $opts['region'] : null; + + require_once(UPDRAFTPLUS_DIR.'/vendor/autoload.php'); + + global $updraftplus; + + # The new authentication APIs don't match the values we were storing before + $new_authurl = ('https://lon.auth.api.rackspacecloud.com' == $authurl || 'uk' == $authurl) ? Rackspace::UK_IDENTITY_ENDPOINT : Rackspace::US_IDENTITY_ENDPOINT; + + if (null === $disablesslverify) $disablesslverify = UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify'); + + if (empty($user) || empty($apikey)) throw new Exception(__('Authorisation failed (check your credentials)', 'updraftplus')); + + $updraftplus->log("Cloud Files authentication URL: ".$new_authurl); + + $client = new Rackspace($new_authurl, array( + 'username' => $user, + 'apiKey' => $apikey + )); + $this->client = $client; + + if ($disablesslverify) { + $client->setSslVerification(false); + } else { + if ($useservercerts) { + $client->setConfig(array($client::SSL_CERT_AUTHORITY, 'system')); + } else { + $client->setSslVerification(UPDRAFTPLUS_DIR.'/includes/cacert.pem', true, 2); + } + } + + return $client->objectStoreService('cloudFiles', $region); + } + + public function get_credentials() { + return array('updraft_cloudfiles'); + } + + public function get_opts() { + global $updraftplus; + $opts = $updraftplus->get_job_option('updraft_cloudfiles'); + if (!is_array($opts)) $opts = array('user' => '', 'authurl' => 'https://auth.api.rackspacecloud.com', 'apikey' => '', 'path' => ''); + if (empty($opts['authurl'])) $opts['authurl'] = 'https://auth.api.rackspacecloud.com'; + if (empty($opts['region'])) $opts['region'] = null; + return $opts; + } + + public function config_print_middlesection() { + $opts = $this->get_opts(); + ?> + + + +

        from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist.','updraftplus');?> ">

        + + + + : + + + + + + + : + + + + + + + : + +
        + '.__('To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on.', 'updraftplus').''); ?> +
        + + + + : + + + + + : + + + $posted_settings['user'], + 'apikey' => stripslashes($posted_settings['apikey']), + 'authurl' => $posted_settings['authurl'], + 'region' => (empty($posted_settings['region'])) ? null : $posted_settings['region'] + ); + + $this->credentials_test_go($opts, $posted_settings['path'], $posted_settings['useservercerts'], $posted_settings['disableverify']); + } + +} diff --git a/plugins/updraftplus/methods/cloudfiles.php b/plugins/updraftplus/methods/cloudfiles.php new file mode 100644 index 0000000..ac38d9d --- /dev/null +++ b/plugins/updraftplus/methods/cloudfiles.php @@ -0,0 +1,565 @@ +=') && (!defined('UPDRAFTPLUS_CLOUDFILES_USEOLDSDK') || UPDRAFTPLUS_CLOUDFILES_USEOLDSDK != true)) { + require_once(UPDRAFTPLUS_DIR.'/methods/cloudfiles-new.php'); + class UpdraftPlus_BackupModule_cloudfiles extends UpdraftPlus_BackupModule_cloudfiles_opencloudsdk { } +} else { + class UpdraftPlus_BackupModule_cloudfiles extends UpdraftPlus_BackupModule_cloudfiles_oldsdk { } +} + +# Migrate options to new-style storage - Dec 2013 +if (!is_array(UpdraftPlus_Options::get_updraft_option('updraft_cloudfiles')) && '' != UpdraftPlus_Options::get_updraft_option('updraft_cloudfiles_user', '')) { + $opts = array( + 'user' => UpdraftPlus_Options::get_updraft_option('updraft_cloudfiles_user'), + 'apikey' => UpdraftPlus_Options::get_updraft_option('updraft_cloudfiles_apikey'), + 'path' => UpdraftPlus_Options::get_updraft_option('updraft_cloudfiles_path'), + 'authurl' => UpdraftPlus_Options::get_updraft_option('updraft_cloudfiles_authurl'), + 'region' => UpdraftPlus_Options::get_updraft_option('updraft_cloudfiles_region') + ); + UpdraftPlus_Options::update_updraft_option('updraft_cloudfiles', $opts); + UpdraftPlus_Options::delete_updraft_option('updraft_cloudfiles_user'); + UpdraftPlus_Options::delete_updraft_option('updraft_cloudfiles_apikey'); + UpdraftPlus_Options::delete_updraft_option('updraft_cloudfiles_path'); + UpdraftPlus_Options::delete_updraft_option('updraft_cloudfiles_authurl'); + UpdraftPlus_Options::delete_updraft_option('updraft_cloudfiles_region'); +} + +# Old SDK +class UpdraftPlus_BackupModule_cloudfiles_oldsdk { + + private $cloudfiles_object; + + // This function does not catch any exceptions - that should be done by the caller + private function getCF($user, $apikey, $authurl, $useservercerts = false) { + + global $updraftplus; + + if (!class_exists('UpdraftPlus_CF_Authentication')) require_once(UPDRAFTPLUS_DIR.'/includes/cloudfiles/cloudfiles.php'); + + if (!defined('UPDRAFTPLUS_SSL_DISABLEVERIFY')) define('UPDRAFTPLUS_SSL_DISABLEVERIFY', UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify')); + + $auth = new UpdraftPlus_CF_Authentication($user, trim($apikey), NULL, $authurl); + + $updraftplus->log("Cloud Files authentication URL: $authurl"); + + $auth->authenticate(); + + $conn = new UpdraftPlus_CF_Connection($auth); + + if (!$useservercerts) $conn->ssl_use_cabundle(UPDRAFTPLUS_DIR.'/includes/cacert.pem'); + + return $conn; + + } + + public function get_credentials() { + return array('updraft_cloudfiles'); + } + + public function get_opts() { + global $updraftplus; + $opts = $updraftplus->get_job_option('updraft_cloudfiles'); + if (!is_array($opts)) $opts = array('user' => '', 'authurl' => 'https://auth.api.rackspacecloud.com', 'apikey' => '', 'path' => ''); + if (empty($opts['authurl'])) $opts['authurl'] = 'https://auth.api.rackspacecloud.com'; + if (empty($opts['region'])) $opts['region'] = null; + return $opts; + } + + public function backup($backup_array) { + + global $updraftplus, $updraftplus_backup; + + $opts = $this->get_opts(); + + $updraft_dir = $updraftplus->backups_dir_location().'/'; + +// if (preg_match("#^([^/]+)/(.*)$#", $path, $bmatches)) { +// $container = $bmatches[1]; +// $path = $bmatches[2]; +// } else { +// $container = $path; +// $path = ""; +// } + $container = $opts['path']; + + try { + $conn = $this->getCF($opts['user'], $opts['apikey'], $opts['authurl'], UpdraftPlus_Options::get_updraft_option('updraft_ssl_useservercerts')); + $container_object = $conn->create_container($container); + } catch(AuthenticationException $e) { + $updraftplus->log('Cloud Files authentication failed ('.$e->getMessage().')'); + $updraftplus->log(sprintf(__('%s authentication failed','updraftplus'),'Cloud Files').' ('.$e->getMessage().')', 'error'); + return false; + } catch(NoSuchAccountException $s) { + $updraftplus->log('Cloud Files authentication failed ('.$e->getMessage().')'); + $updraftplus->log(sprintf(__('%s authentication failed','updraftplus'),'Cloud Files').' ('.$e->getMessage().')', 'error'); + return false; + } catch (Exception $e) { + $updraftplus->log('Cloud Files error - failed to create and access the container ('.$e->getMessage().')'); + $updraftplus->log(__('Cloud Files error - failed to create and access the container', 'updraftplus').' ('.$e->getMessage().')', 'error'); + return false; + } + + $chunk_size = 5*1024*1024; + + foreach($backup_array as $key => $file) { + + $fullpath = $updraft_dir.$file; + $orig_file_size = filesize($fullpath); + +// $cfpath = ($path == '') ? $file : "$path/$file"; +// $chunk_path = ($path == '') ? "chunk-do-not-delete-$file" : "$path/chunk-do-not-delete-$file"; + $cfpath = $file; + $chunk_path = "chunk-do-not-delete-$file"; + + try { + $object = new UpdraftPlus_CF_Object($container_object, $cfpath); + $object->content_type = "application/zip"; + + $uploaded_size = (isset($object->content_length)) ? $object->content_length : 0; + + if ($uploaded_size <= $orig_file_size) { + + $fp = @fopen($fullpath, "rb"); + if (!$fp) { + $updraftplus->log("Cloud Files: failed to open file: $fullpath"); + $updraftplus->log("$file: ".sprintf(__('%s Error: Failed to open local file','updraftplus'),'Cloud Files'), 'error'); + return false; + } + + $chunks = floor($orig_file_size / $chunk_size); + // There will be a remnant unless the file size was exactly on a 5MB boundary + if ($orig_file_size % $chunk_size > 0 ) $chunks++; + + $updraftplus->log("Cloud Files upload: $file (chunks: $chunks) -> cloudfiles://$container/$cfpath ($uploaded_size)"); + + if ($chunks < 2) { + try { + $object->load_from_filename($fullpath); + $updraftplus->log("Cloud Files regular upload: success"); + $updraftplus->uploaded_file($file); + } catch (Exception $e) { + $updraftplus->log("Cloud Files regular upload: failed ($file) (".$e->getMessage().")"); + $updraftplus->log("$file: ".sprintf(__('%s Error: Failed to upload','updraftplus'),'Cloud Files'), 'error'); + } + } else { + $errors_so_far = 0; + for ($i = 1 ; $i <= $chunks; $i++) { + $upload_start = ($i-1)*$chunk_size; + // The file size -1 equals the byte offset of the final byte + $upload_end = min($i*$chunk_size-1, $orig_file_size-1); + $upload_remotepath = $chunk_path."_$i"; + // Don't forget the +1; otherwise the last byte is omitted + $upload_size = $upload_end - $upload_start + 1; + $chunk_object = new UpdraftPlus_CF_Object($container_object, $upload_remotepath); + $chunk_object->content_type = "application/zip"; + // Without this, some versions of Curl add Expect: 100-continue, which results in Curl then giving this back: curl error: 55) select/poll returned error + // Didn't make the difference - instead we just check below for actual success even when Curl reports an error + // $chunk_object->headers = array('Expect' => ''); + + $remote_size = (isset($chunk_object->content_length)) ? $chunk_object->content_length : 0; + + if ($remote_size >= $upload_size) { + $updraftplus->log("Cloud Files: Chunk $i ($upload_start - $upload_end): already uploaded"); + } else { + $updraftplus->log("Cloud Files: Chunk $i ($upload_start - $upload_end): begin upload"); + // Upload the chunk + fseek($fp, $upload_start); + try { + $chunk_object->write($fp, $upload_size, false); + $updraftplus->record_uploaded_chunk(round(100*$i/$chunks,1), $i, $fullpath); + } catch (Exception $e) { + $updraftplus->log("Cloud Files chunk upload: error: ($file / $i) (".$e->getMessage().")"); + // Experience shows that Curl sometimes returns a select/poll error (curl error 55) even when everything succeeded. Google seems to indicate that this is a known bug. + + $chunk_object = new UpdraftPlus_CF_Object($container_object, $upload_remotepath); + $chunk_object->content_type = "application/zip"; + $remote_size = (isset($chunk_object->content_length)) ? $chunk_object->content_length : 0; + + if ($remote_size >= $upload_size) { + + $updraftplus->log("$file: Chunk now exists; ignoring error (presuming it was an apparently known curl bug)"); + + } else { + + $updraftplus->log("$file: ".sprintf(__('%s Error: Failed to upload','updraftplus'),'Cloud Files'), 'error'); + $errors_so_far++; + if ($errors_so_far >=3 ) return false; + + } + + } + } + } + if ($errors_so_far) return false; + // All chunks are uploaded - now upload the manifest + + try { + $object->manifest = $container."/".$chunk_path."_"; + // Put a zero-length file + $object->write("", 0, false); + $object->sync_manifest(); + $updraftplus->log("Cloud Files upload: success"); + $updraftplus->uploaded_file($file); +// } catch (InvalidResponseException $e) { + } catch (Exception $e) { + $updraftplus->log('Cloud Files error - failed to re-assemble chunks ('.$e->getMessage().')'); + $updraftplus->log(sprintf(__('%s error - failed to re-assemble chunks', 'updraftplus'),'Cloud Files').' ('.$e->getMessage().')', 'error'); + return false; + } + } + } + + } catch (Exception $e) { + $updraftplus->log(__('Cloud Files error - failed to upload file', 'updraftplus').' ('.$e->getMessage().')'); + $updraftplus->log(sprintf(__('%s error - failed to upload file', 'updraftplus'),'Cloud Files').' ('.$e->getMessage().')', 'error'); + return false; + } + + } + + return array('cloudfiles_object' => $container_object, 'cloudfiles_orig_path' => $opts['path'], 'cloudfiles_container' => $container); + + } + + public function listfiles($match = 'backup_') { + + $opts = $this->get_opts(); + $container = $opts['path']; + + if (empty($opts['user']) || empty($opts['apikey'])) new WP_Error('no_settings', __('No settings were found','updraftplus')); + + try { + $conn = $this->getCF($opts['user'], $opts['apikey'], $opts['authurl'], UpdraftPlus_Options::get_updraft_option('updraft_ssl_useservercerts')); + $container_object = $conn->create_container($container); + } catch(Exception $e) { + return new WP_Error('no_access', sprintf(__('%s authentication failed','updraftplus'),'Cloud Files').' ('.$e->getMessage().')'); + } + + $results = array(); + + try { + $objects = $container_object->list_objects(0, NULL, $match); + foreach ($objects as $name) { + $result = array('name' => $name); + try { + $object = new UpdraftPlus_CF_Object($container_object, $name, true); + if ($object->content_length == 0) { + $result = false; + } else { + $result['size'] = $object->content_length; + } + } catch (Exception $e) { + } + if (is_array($result)) $results[] = $result; + } + } catch (Exception $e) { + return new WP_Error('cf_error', 'Cloud Files error ('.$e->getMessage().')'); + } + + return $results; + + } + + public function delete($files, $cloudfilesarr = false, $sizeinfo = array()) { + + global $updraftplus; + if (is_string($files)) $files=array($files); + + if ($cloudfilesarr) { + $container_object = $cloudfilesarr['cloudfiles_object']; + $container = $cloudfilesarr['cloudfiles_container']; + $path = $cloudfilesarr['cloudfiles_orig_path']; + } else { + try { + $opts = $this->get_opts(); + $container = $opts['path']; + $conn = $this->getCF($opts['user'], $opts['apikey'], $opts['authurl'], UpdraftPlus_Options::get_updraft_option('updraft_ssl_useservercerts')); + $container_object = $conn->create_container($container); + } catch(Exception $e) { + $updraftplus->log('Cloud Files authentication failed ('.$e->getMessage().')'); + $updraftplus->log(sprintf(__('%s authentication failed','updraftplus'), 'Cloud Files').' ('.$e->getMessage().')', 'error'); + return false; + } + } + +// $fpath = ($path == '') ? $file : "$path/$file"; + + $ret = true; + foreach ($files as $file) { + + $fpath = $file; + + $updraftplus->log("Cloud Files: Delete remote: container=$container, path=$fpath"); + + // We need to search for chunks + //$chunk_path = ($path == '') ? "chunk-do-not-delete-$file_" : "$path/chunk-do-not-delete-$file_"; + $chunk_path = "chunk-do-not-delete-$file"; + + try { + $objects = $container_object->list_objects(0, NULL, $chunk_path.'_'); + foreach ($objects as $chunk) { + $updraftplus->log('Cloud Files: Chunk to delete: '.$chunk); + $container_object->delete_object($chunk); + $updraftplus->log('Cloud Files: Chunk deleted: '.$chunk); + } + } catch (Exception $e) { + $updraftplus->log('Cloud Files chunk delete failed: '.$e->getMessage()); + } + + try { + $container_object->delete_object($fpath); + $updraftplus->log('Cloud Files: Deleted: '.$fpath); + } catch (Exception $e) { + $updraftplus->log('Cloud Files delete failed: '.$e->getMessage()); + $ret = false; + } + } + return $ret; + } + + public function download($file) { + + global $updraftplus; + $updraft_dir = $updraftplus->backups_dir_location(); + + $opts = $this->get_opts(); + + try { + $conn = $this->getCF($opts['user'], $opts['apikey'], $opts['authurl'], UpdraftPlus_Options::get_updraft_option('updraft_ssl_useservercerts')); + } catch(AuthenticationException $e) { + $updraftplus->log('Cloud Files authentication failed ('.$e->getMessage().')'); + $updraftplus->log(sprintf(__('%s authentication failed','updraftplus'), 'Cloud Files').' ('.$e->getMessage().')', 'error'); + return false; + } catch(NoSuchAccountException $s) { + $updraftplus->log('Cloud Files authentication failed ('.$e->getMessage().')'); + $updraftplus->log(sprintf(__('%s authentication failed','updraftplus'), 'Cloud Files').' ('.$e->getMessage().')', 'error'); + return false; + } catch (Exception $e) { + $updraftplus->log('Cloud Files error - failed to create and access the container ('.$e->getMessage().')'); + $updraftplus->log(__('Cloud Files error - failed to create and access the container', 'updraftplus').' ('.$e->getMessage().')', 'error'); + return false; + } + + $path = untrailingslashit($opts['path']); + +// if (preg_match("#^([^/]+)/(.*)$#", $path, $bmatches)) { +// $container = $bmatches[1]; +// $path = $bmatches[2]; +// } else { +// $container = $path; +// $path = ""; +// } + $container = $path; + + try { + $container_object = $conn->create_container($container); + } catch(Exception $e) { + $updraftplus->log('Cloud Files error - failed to create and access the container ('.$e->getMessage().')'); + $updraftplus->log(__('Cloud Files error - failed to create and access the container','updraftplus').' ('.$e->getMessage().')', 'error'); + return false; + } + +// $path = ($path == '') ? $file : "$path/$file"; + $path = $file; + + $updraftplus->log("Cloud Files download: cloudfiles://$container/$path"); + + try { + // The third parameter causes an exception to be thrown if the object does not exist remotely + $object = new UpdraftPlus_CF_Object($container_object, $path, true); + + $fullpath = $updraft_dir.'/'.$file; + + $start_offset = (file_exists($fullpath)) ? filesize($fullpath): 0; + + // Get file size from remote - see if we've already finished + + $remote_size = $object->content_length; + + if ($start_offset >= $remote_size) { + $updraftplus->log("Cloud Files: file is already completely downloaded ($start_offset/$remote_size)"); + return true; + } + + // Some more remains to download - so let's do it + if (!$fh = fopen($fullpath, 'a')) { + $updraftplus->log("Cloud Files: Error opening local file: $fullpath"); + $updraftplus->log(sprintf("$file: ".__("%s Error",'updraftplus'),'Cloud Files').": ".__('Error opening local file: Failed to download','updraftplus'), 'error'); + return false; + } + + $headers = array(); + // If resuming, then move to the end of the file + if ($start_offset) { + $updraftplus->log("Cloud Files: local file is already partially downloaded ($start_offset/$remote_size)"); + fseek($fh, $start_offset); + $headers['Range'] = "bytes=$start_offset-"; + } + + // Now send the request itself + try { + $object->stream($fh, $headers); + } catch (Exception $e) { + $updraftplus->log("Cloud Files: Failed to download: $file (".$e->getMessage().")"); + $updraftplus->log("$file: ".sprintf(__("%s Error",'updraftplus'), 'Cloud Files').": ".__('Error downloading remote file: Failed to download','updraftplus').' ('.$e->getMessage().")", 'error'); + return false; + } + + // All-in-one-go method: + // $object->save_to_filename($fullpath); + + } catch (NoSuchObjectException $e) { + $updraftplus->log('Cloud Files error - no such file exists at Cloud Files ('.$e->getMessage().')'); + $updraftplus->log(sprintf(__('Error - no such file exists at %s','updraftplus'),'Cloud Files').' ('.$e->getMessage().')', 'error'); + return false; + } catch(Exception $e) { + $updraftplus->log('Cloud Files error - failed to download the file ('.$e->getMessage().')'); + $updraftplus->log(sprintf(__('Error - failed to download the file from %s','updraftplus'),'Cloud Files').' ('.$e->getMessage().')' ,'error'); + return false; + } + + return true; + + } + + public function config_print() { + + $opts = $this->get_opts(); + + ?> + + + Rackspace Cloud Files +

        + + + + + + show_double_warning(''.__('Warning','updraftplus').': '.sprintf(__('Your web server\'s PHP installation does not included a required module (%s). Please contact your web hosting provider\'s support.', 'updraftplus'), 'mbstring').' '.sprintf(__("UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative.",'updraftplus'),'Cloud Files', 'mbstring'), 'cloudfiles'); + } + $updraftplus_admin->curl_check('Rackspace Cloud Files', false, 'cloudfiles'); + ?> + + + + + + +

        from your Rackspace Cloud console (read instructions here), then pick a container name to use for storage. This container will be created for you if it does not already exist.','updraftplus');?>

        + + + + : + + + + + + + + : + + + + */ ?> + + + : + + + + : + + + + : + + + + + +

        + + getCF($user, $key, $authurl, $useservercerts); + $container_object = $conn->create_container($container); + } catch(AuthenticationException $e) { + echo __('Cloud Files authentication failed','updraftplus').' ('.$e->getMessage().')'; + return; + } catch(NoSuchAccountException $s) { + echo __('Cloud Files authentication failed','updraftplus').' ('.$e->getMessage().')'; + return; + } catch (Exception $e) { + echo __('Cloud Files authentication failed','updraftplus').' ('.$e->getMessage().')'; + return; + } + + $try_file = md5(rand()).'.txt'; + + try { + $object = $container_object->create_object($try_file); + $object->content_type = "text/plain"; + $object->write('UpdraftPlus test file'); + } catch (Exception $e) { + echo __('Cloud Files error - we accessed the container, but failed to create a file within it', 'updraftplus').' ('.$e->getMessage().')'; + return; + } + + echo __('Success','updraftplus').": ".__('We accessed the container, and were able to create files within it.','updraftplus'); + + @$container_object->delete_object($try_file); + } + +} diff --git a/plugins/updraftplus/methods/dreamobjects.php b/plugins/updraftplus/methods/dreamobjects.php new file mode 100644 index 0000000..815aa65 --- /dev/null +++ b/plugins/updraftplus/methods/dreamobjects.php @@ -0,0 +1,55 @@ + UpdraftPlus_Options::get_updraft_option('updraft_dreamobjects_login'), + 'secretkey' => UpdraftPlus_Options::get_updraft_option('updraft_dreamobjects_pass'), + 'path' => UpdraftPlus_Options::get_updraft_option('updraft_dreamobjects_remote_path'), + ); + UpdraftPlus_Options::update_updraft_option('updraft_dreamobjects', $opts); + UpdraftPlus_Options::delete_updraft_option('updraft_dreamobjects_login'); + UpdraftPlus_Options::delete_updraft_option('updraft_dreamobjects_pass'); + UpdraftPlus_Options::delete_updraft_option('updraft_dreamobjects_remote_path'); +} + +class UpdraftPlus_BackupModule_dreamobjects extends UpdraftPlus_BackupModule_s3 { + + private $dreamobjects_endpoints = array('objects-us-west-1.dream.io'); + + protected function set_region($obj, $region = '', $bucket_name = '') { + $config = $this->get_config(); + $endpoint = ($region != '' && $region != 'n/a') ? $region : $config['endpoint']; + global $updraftplus; + if ($updraftplus->backup_time) $updraftplus->log("Set endpoint: $endpoint"); + $obj->setEndpoint($endpoint); + } + + public function get_credentials() { + return array('updraft_dreamobjects'); + } + + protected function get_config() { + global $updraftplus; + $opts = $updraftplus->get_job_option('updraft_dreamobjects'); + if (!is_array($opts)) $opts = array('accesskey' => '', 'secretkey' => '', 'path' => ''); + $opts['whoweare'] = 'DreamObjects'; + $opts['whoweare_long'] = 'DreamObjects'; + $opts['key'] = 'dreamobjects'; + if (empty($opts['endpoint'])) $opts['endpoint'] = $this->dreamobjects_endpoints[0]; + return $opts; + } + + public function config_print() { + $this->config_print_engine('dreamobjects', 'DreamObjects', 'DreamObjects', 'DreamObjects', 'https://panel.dreamhost.com/index.cgi?tree=storage.dreamhostobjects', 'DreamObjects', $this->dreamobjects_endpoints); + } + + public function credentials_test($posted_settings) { + $this->credentials_test_engine($this->get_config(), $posted_settings); + } + +} diff --git a/plugins/updraftplus/methods/dropbox.php b/plugins/updraftplus/methods/dropbox.php new file mode 100644 index 0000000..dbc22c1 --- /dev/null +++ b/plugins/updraftplus/methods/dropbox.php @@ -0,0 +1,732 @@ + UpdraftPlus_Options::get_updraft_option('updraft_dropbox_appkey'), + 'secret' => UpdraftPlus_Options::get_updraft_option('updraft_dropbox_secret'), + 'folder' => UpdraftPlus_Options::get_updraft_option('updraft_dropbox_folder'), + 'tk_access_token' => UpdraftPlus_Options::get_updraft_option('updraft_dropboxtk_access_token'), + ); + if (serialize($opts) != 'a:5:{s:6:"appkey";N;s:6:"secret";N;s:6:"folder";N;s:15:"tk_access_token";N;}') { + UpdraftPlus_Options::update_updraft_option('updraft_dropbox', $opts); + UpdraftPlus_Options::delete_updraft_option('updraft_dropbox_appkey'); + UpdraftPlus_Options::delete_updraft_option('updraft_dropbox_secret'); + UpdraftPlus_Options::delete_updraft_option('updraft_dropbox_folder'); + UpdraftPlus_Options::delete_updraft_option('updraft_dropboxtk_access_token'); + } +} + +class UpdraftPlus_BackupModule_dropbox { + + private $current_file_hash; + private $current_file_size; + private $dropbox_object; + private $uploaded_offset; + private $upload_tick; + + public function chunked_callback($offset, $uploadid, $fullpath = false) { + global $updraftplus; + + // Update upload ID + $updraftplus->jobdata_set('updraf_dbid_'.$this->current_file_hash, $uploadid); + $updraftplus->jobdata_set('updraf_dbof_'.$this->current_file_hash, $offset); + + $time_now = microtime(true); + + $time_since_last_tick = $time_now - $this->upload_tick; + $data_since_last_tick = $offset - $this->uploaded_offset; + + $this->upload_tick = $time_now; + $this->uploaded_offset = $offset; + + $chunk_size = $updraftplus->jobdata_get('dropbox_chunk_size', 1048576); + // Don't go beyond 10MB, or change the chunk size after the last segment + if ($chunk_size < 10485760 && $this->current_file_size > 0 && $offset < $this->current_file_size) { + $job_run_time = $time_now - $updraftplus->job_time_ms; + if ($time_since_last_tick < 10) { + $upload_rate = $data_since_last_tick / max($time_since_last_tick, 1); + $upload_secs = min(floor($job_run_time), 10); + if ($job_run_time < 15) $upload_secs = max(6, $job_run_time*0.6); + $new_chunk = max(min($upload_secs * $upload_rate * 0.9, 10485760), 1048576); + $new_chunk = $new_chunk - ($new_chunk % 524288); + $chunk_size = (int)$new_chunk; + $this->dropbox_object->setChunkSize($chunk_size); + $updraftplus->jobdata_set('dropbox_chunk_size', $chunk_size); + } + } + + if ($this->current_file_size > 0) { + $percent = round(100*($offset/$this->current_file_size),1); + $updraftplus->record_uploaded_chunk($percent, "$uploadid, $offset, ".round($chunk_size/1024, 1)." KB", $fullpath); + } else { + $updraftplus->log("Dropbox: Chunked Upload: $offset bytes uploaded"); + // This act is done by record_uploaded_chunk, and helps prevent overlapping runs + touch($fullpath); + } + } + + public function get_credentials() { + return array('updraft_dropbox'); + } + + public function get_opts() { + global $updraftplus; + $opts = $updraftplus->get_job_option('updraft_dropbox'); + if (!is_array($opts)) $opts = array(); + if (!isset($opts['folder'])) $opts['folder'] = ''; + return $opts; + } + + public function backup($backup_array) { + + global $updraftplus; + + $opts = $this->get_opts(); + + if (empty($opts['tk_access_token'])) { + $updraftplus->log('You do not appear to be authenticated with Dropbox (1)'); + $updraftplus->log(__('You do not appear to be authenticated with Dropbox','updraftplus'), 'error'); + return false; + } + + // 28 June 2017 + $use_api_ver = (defined('UPDRAFTPLUS_DROPBOX_API_V1') && UPDRAFTPLUS_DROPBOX_API_V1 && time() < 1498608000) ? 1 : 2; + + if (empty($opts['tk_request_token'])) { + $updraftplus->log("Dropbox: begin cloud upload (using API version $use_api_ver with OAuth v2 token)"); + } else { + $updraftplus->log("Dropbox: begin cloud upload (using API version $use_api_ver with OAuth v1 token)"); + } + + $chunk_size = $updraftplus->jobdata_get('dropbox_chunk_size', 1048576); + + try { + $dropbox = $this->bootstrap(); + if (false === $dropbox) throw new Exception(__('You do not appear to be authenticated with Dropbox', 'updraftplus')); + $updraftplus->log("Dropbox: access gained; setting chunk size to: ".round($chunk_size/1024, 1)." KB"); + $dropbox->setChunkSize($chunk_size); + } catch (Exception $e) { + $updraftplus->log('Dropbox error when trying to gain access: '.$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')'); + $updraftplus->log(sprintf(__('Dropbox error: %s (see log file for more)','updraftplus'), $e->getMessage()), 'error'); + return false; + } + + $updraft_dir = $updraftplus->backups_dir_location(); + $dropbox_folder = trailingslashit($opts['folder']); + + foreach ($backup_array as $file) { + + $available_quota = -1; + + // If we experience any failures collecting account info, then carry on anyway + try { + + /* + Quota information is no longer provided with account information a new call to qoutaInfo must be made to get this information. + */ + if (1 == $use_api_ver) { + $quotaInfo = $dropbox->accountInfo(); + } else { + $quotaInfo = $dropbox->quotaInfo(); + } + + if ($quotaInfo['code'] != "200") { + $message = "Dropbox account/info did not return HTTP 200; returned: ". $accountInfo['code']; + } elseif (!isset($quotaInfo['body'])) { + $message = "Dropbox account/info did not return the expected data"; + } else { + $body = $quotaInfo['body']; + if (isset($body->quota_info)) { + $quota_info = $body->quota_info; + $total_quota = $quota_info->quota; + $normal_quota = $quota_info->normal; + $shared_quota = $quota_info->shared; + $available_quota = $total_quota - ($normal_quota + $shared_quota); + $message = "Dropbox quota usage: normal=".round($normal_quota/1048576,1)." MB, shared=".round($shared_quota/1048576,1)." MB, total=".round($total_quota/1048576,1)." MB, available=".round($available_quota/1048576,1)." MB"; + } else { + $total_quota = max($body->allocation->allocated, 1); + $used = $body->used; + $available_quota =$total_quota - $used; + $message = "Dropbox quota usage: used=".round($used/1048576,1)." MB, total=".round($total_quota/1048576,1)." MB, available=".round($available_quota/1048576,1)." MB"; + } + } + $updraftplus->log($message); + } catch (Exception $e) { + $updraftplus->log("Dropbox error: exception (".get_class($e).") occurred whilst getting account info: ".$e->getMessage()); + //$updraftplus->log(sprintf(__("%s error: %s", 'updraftplus'), 'Dropbox', $e->getMessage()).' ('.$e->getCode().')', 'warning', md5($e->getMessage())); + } + + $file_success = 1; + + $hash = md5($file); + $this->current_file_hash = $hash; + + $filesize = filesize($updraft_dir.'/'.$file); + $this->current_file_size = $filesize; + + // Into KB + $filesize = $filesize/1024; + $microtime = microtime(true); + + if ($upload_id = $updraftplus->jobdata_get('updraf_dbid_'.$hash)) { + # Resume + $offset = $updraftplus->jobdata_get('updraf_dbof_'.$hash); + $updraftplus->log("This is a resumption: $offset bytes had already been uploaded"); + } else { + $offset = 0; + $upload_id = null; + } + + // We don't actually abort now - there's no harm in letting it try and then fail + if ($available_quota != -1 && $available_quota < ($filesize-$offset)) { + $updraftplus->log("File upload expected to fail: file data remaining to upload ($file) size is ".($filesize-$offset)." b (overall file size; .".($filesize*1024)." b), whereas available quota is only $available_quota b"); +// $updraftplus->log(sprintf(__("Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)",'updraftplus'),'Dropbox', $available_quota, $filesize-$offset, $filesize), 'warning'); + } + + // Old-style, single file put: $put = $dropbox->putFile($updraft_dir.'/'.$file, $dropbox_folder.$file); + + $ufile = apply_filters('updraftplus_dropbox_modpath', $file); + + $updraftplus->log("Dropbox: Attempt to upload: $file to: $ufile"); + + $this->upload_tick = microtime(true); + $this->uploaded_offset = $offset; + + try { + $response = $dropbox->chunkedUpload($updraft_dir.'/'.$file, '', $ufile, true, $offset, $upload_id, array($this, 'chunked_callback')); + if (empty($response['code']) || "200" != $response['code']) { + $updraftplus->log('Unexpected HTTP code returned from Dropbox: '.$response['code']." (".serialize($response).")"); + if ($response['code'] >= 400) { + $updraftplus->log('Dropbox '.sprintf(__('error: failed to upload file to %s (see log file for more)','updraftplus'), $file), 'error'); + } else { + $updraftplus->log(sprintf(__('%s did not return the expected response - check your log file for more details', 'updraftplus'), 'Dropbox'), 'warning'); + } + } + } catch (Exception $e) { + $updraftplus->log("Dropbox chunked upload exception (".get_class($e)."): ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')'); + if (preg_match("/Submitted input out of alignment: got \[(\d+)\] expected \[(\d+)\]/i", $e->getMessage(), $matches)) { + // Try the indicated offset + $we_tried = $matches[1]; + $dropbox_wanted = $matches[2]; + $updraftplus->log("Dropbox not yet aligned: tried=$we_tried, wanted=$dropbox_wanted; will attempt recovery"); + $this->uploaded_offset = $dropbox_wanted; + try { + $dropbox->chunkedUpload($updraft_dir.'/'.$file, '', $ufile, true, $dropbox_wanted, $upload_id, array($this, 'chunked_callback')); + } catch (Exception $e) { + $msg = $e->getMessage(); + if (preg_match('/Upload with upload_id .* already completed/', $msg)) { + $updraftplus->log('Dropbox returned an error, but apparently indicating previous success: '.$msg); + } else { + $updraftplus->log('Dropbox error: '.$msg.' (line: '.$e->getLine().', file: '.$e->getFile().')'); + $updraftplus->log('Dropbox '.sprintf(__('error: failed to upload file to %s (see log file for more)','updraftplus'), $ufile), 'error'); + $file_success = 0; + if (strpos($msg, 'select/poll returned error') !== false && $this->upload_tick > 0 && time() - $this->upload_tick > 800) { + $updraftplus->reschedule(60); + $updraftplus->log("Select/poll returned after a long time: scheduling a resumption and terminating for now"); + $updraftplus->record_still_alive(); + die; + } + } + } + } else { + $msg = $e->getMessage(); + if (preg_match('/Upload with upload_id .* already completed/', $msg)) { + $updraftplus->log('Dropbox returned an error, but apparently indicating previous success: '.$msg); + } else { + $updraftplus->log('Dropbox error: '.$msg); + $updraftplus->log('Dropbox '.sprintf(__('error: failed to upload file to %s (see log file for more)','updraftplus'), $ufile), 'error'); + $file_success = 0; + if (strpos($msg, 'select/poll returned error') !== false && $this->upload_tick > 0 && time() - $this->upload_tick > 800) { + $updraftplus->reschedule(60); + $updraftplus->log("Select/poll returned after a long time: scheduling a resumption and terminating for now"); + $updraftplus->record_still_alive(); + die; + } + } + } + } + if ($file_success) { + $updraftplus->uploaded_file($file); + $microtime_elapsed = microtime(true)-$microtime; + $speedps = $filesize/$microtime_elapsed; + $speed = sprintf("%.2d",$filesize)." KB in ".sprintf("%.2d",$microtime_elapsed)."s (".sprintf("%.2d", $speedps)." KB/s)"; + $updraftplus->log("Dropbox: File upload success (".$file."): $speed"); + $updraftplus->jobdata_delete('updraft_duido_'.$hash); + $updraftplus->jobdata_delete('updraft_duidi_'.$hash); + } + + } + + return null; + + } + + # $match: a substring to require (tested via strpos() !== false) + public function listfiles($match = 'backup_') { + + $opts = $this->get_opts(); + + if (empty($opts['tk_access_token'])) return new WP_Error('no_settings', __('No settings were found', 'updraftplus').' (dropbox)'); + + global $updraftplus; + try { + $dropbox = $this->bootstrap(); + } catch (Exception $e) { + $updraftplus->log('Dropbox access error: '.$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')'); + return new WP_Error('access_error', $e->getMessage()); + } + + $searchpath = '/'.untrailingslashit(apply_filters('updraftplus_dropbox_modpath', '')); + + try { + $search = $dropbox->search($match, $searchpath); + } catch (Exception $e) { + $updraftplus->log('Dropbox error: '.$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')'); + // The most likely cause of a search_error is specifying a non-existent path, which should just result in an empty result set. +// return new WP_Error('search_error', $e->getMessage()); + return array(); + } + + if (empty($search['code']) || 200 != $search['code']) return new WP_Error('response_error', sprintf(__('%s returned an unexpected HTTP response: %s', 'updraftplus'), 'Dropbox', $search['code']), $search['body']); + + if (empty($search['body'])) return array(); + + if (isset($search['body']->matches) && is_array($search['body']->matches)) { + $matches = $search['body']->matches; + } elseif (is_array($search['body'])) { + $matches = $search['body']; + } else { + return array(); + } + + $results = array(); + + foreach ($matches as $item) { + // 28 June 2017 - https://blogs.dropbox.com/developers/2016/06/api-v1-deprecated/ + if (defined('UPDRAFTPLUS_DROPBOX_API_V1') && UPDRAFTPLUS_DROPBOX_API_V1 && time() < 1498608000) { + if (!is_object($item)) continue; + + if ((!isset($item->bytes) || $item->bytes > 0) && empty($item->is_dir) && !empty($item->path) && 0 === strpos($item->path, $searchpath)) { + + $path = substr($item->path, strlen($searchpath)); + if ('/' == substr($path, 0, 1)) $path=substr($path, 1); + + # Ones in subfolders are not wanted + if (false !== strpos($path, '/')) continue; + + $result = array('name' => $path); + if (!empty($item->bytes)) $result['size'] = $item->bytes; + + $results[] = $result; + + } + } else { + $item = $item->metadata; + if (!is_object($item)) continue; + + if ((!isset($item->size) || $item->size > 0) && $item->{'.tag'} != 'folder' && !empty($item->path_display) && 0 === strpos($item->path_display, $searchpath)) { + + $path = substr($item->path_display, strlen($searchpath)); + if ('/' == substr($path, 0, 1)) $path=substr($path, 1); + + # Ones in subfolders are not wanted + if (false !== strpos($path, '/')) continue; + + $result = array('name' => $path); + if (!empty($item->size)) $result['size'] = $item->size; + + $results[] = $result; + } + } + + } + + return $results; + } + + public function defaults() { + return apply_filters('updraftplus_dropbox_defaults', array('Z3Q3ZmkwbnplNHA0Zzlx', 'bTY0bm9iNmY4eWhjODRt')); + } + + public function delete($files, $data = null, $sizeinfo = array()) { + + global $updraftplus; + if (is_string($files)) $files=array($files); + + $opts = $this->get_opts(); + + if (empty($opts['tk_access_token'])) { + $updraftplus->log('You do not appear to be authenticated with Dropbox (3)'); + $updraftplus->log(sprintf(__('You do not appear to be authenticated with %s (whilst deleting)', 'updraftplus'), 'Dropbox'), 'warning'); + return false; + } + + try { + $dropbox = $this->bootstrap(); + } catch (Exception $e) { + $updraftplus->log('Dropbox error: '.$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')'); + $updraftplus->log(sprintf(__('Failed to access %s when deleting (see log file for more)', 'updraftplus'), 'Dropbox'), 'warning'); + return false; + } + if (false === $dropbox) return false; + + foreach ($files as $file) { + $ufile = apply_filters('updraftplus_dropbox_modpath', $file); + $updraftplus->log("Dropbox: request deletion: $ufile"); + + try { + $dropbox->delete($ufile); + $file_success = 1; + } catch (Exception $e) { + $updraftplus->log('Dropbox error: '.$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')'); + } + + if (isset($file_success)) { + $updraftplus->log('Dropbox: delete succeeded'); + } else { + return false; + } + } + + } + + public function download($file) { + + global $updraftplus; + + $opts = $this->get_opts(); + + if (empty($opts['tk_access_token'])) { + $updraftplus->log('You do not appear to be authenticated with Dropbox (4)'); + $updraftplus->log(sprintf(__('You do not appear to be authenticated with %s','updraftplus'), 'Dropbox'), 'error'); + return false; + } + + try { + $dropbox = $this->bootstrap(); + } catch (Exception $e) { + $updraftplus->log('Dropbox error: '.$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')'); + $updraftplus->log('Dropbox error: '.$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')', 'error'); + return false; + } + if (false === $dropbox) return false; + + $updraft_dir = $updraftplus->backups_dir_location(); + $microtime = microtime(true); + + $try_the_other_one = false; + + $ufile = apply_filters('updraftplus_dropbox_modpath', $file); + + try { + $get = $dropbox->getFile($ufile, $updraft_dir.'/'.$file, null, true); + } catch (Exception $e) { + // TODO: Remove this October 2013 (we stored in the wrong place for a while...) + $try_the_other_one = true; + $possible_error = $e->getMessage(); + $updraftplus->log('Dropbox error: '.$e); + $get = false; + } + + // TODO: Remove this October 2013 (we stored files in the wrong place for a while...) + if ($try_the_other_one) { + $dropbox_folder = trailingslashit($opts['folder']); + try { + $get = $dropbox->getFile($dropbox_folder.'/'.$file, $updraft_dir.'/'.$file, null, true); + if (isset($get['response']['body'])) { + $updraftplus->log("Dropbox: downloaded ".round(strlen($get['response']['body'])/1024,1).' KB'); + } + } catch (Exception $e) { + $updraftplus->log($possible_error, 'error'); + $updraftplus->log($e->getMessage(), 'error'); + $get = false; + } + } + + return $get; + + } + + public function config_print() { + $opts = $this->get_opts(); + ?> + + + + <?php _e(sprintf(__('%s logo', 'updraftplus'), 'Dropbox')); ?> +

        + + + + + + + curl_check('Dropbox', false, 'dropbox'); + ?> + + + + '.__('Need to use sub-folders?','updraftplus').' '.__('Backups are saved in','updraftplus').' apps/UpdraftPlus. '.__('If you back up several sites into the same Dropbox and want to organise with sub-folders, then ','updraftplus').''.__("there's an add-on for that.",'updraftplus').''; + + $defmsg = ''.__('Need to use sub-folders?','updraftplus').' '.__('Backups are saved in','updraftplus').' apps/UpdraftPlus. '.__('If you back up several sites into the same Dropbox and want to organise with sub-folders, then ','updraftplus').''.__("there's an add-on for that.",'updraftplus').''; + echo apply_filters('updraftplus_dropbox_extra_config', $defmsg); ?> + + + : +

        + ".__('(You appear to be already authenticated).','updraftplus').""; + echo ' '; echo sprintf(__('Follow this link to deauthenticate with %s.','updraftplus'), __('Dropbox', 'updraftplus'));echo '

        '; + } + echo '

        '; echo sprintf(__('After you have saved your settings (by clicking \'Save Changes\' below), then come back here once and click this link to complete authentication with %s.','updraftplus'), __('Dropbox', 'updraftplus'));echo '

        '; + ?> +

        + '.sprintf(__("Account holder's name: %s.", 'updraftplus'), htmlspecialchars($opts['ownername'])).' '; + } + } + ?> + + + + + + + + '.htmlspecialchars(__('You must add the following as the authorised redirect URI in your Dropbox console (under "API Settings") when asked','updraftplus')).': '.UpdraftPlus_Options::admin_page_url().'?page=updraftplus&action=updraftmethod-dropbox-auth

        '; ?> + + + + Your Dropbox App Key: + + + + Your Dropbox App Secret: + + + + + + get_opts(); + $opts['tk_access_token'] = ''; + unset($opts['tk_request_token']); + $opts['ownername'] = ''; + UpdraftPlus_Options::update_updraft_option('updraft_dropbox', $opts); + } elseif ('deauth' == $_GET['updraftplus_dropboxauth']) { + + try { + $this->bootstrap(true); + } catch (Exception $e) { + global $updraftplus; + $updraftplus->log(sprintf(__("%s error: %s", 'updraftplus'), sprintf(__("%s de-authentication", 'updraftplus'), 'Dropbox'), $e->getMessage()), 'error'); + } + + return; + + } + } elseif (isset($_GET['state'])) { + //Get the CSRF from setting and check it matches the one returned if it does no CSRF attack has happened + $opts = $this->get_opts(); + $CSRF = $opts['CSRF']; + $state = stripslashes($_GET['state']); + if (strcmp($CSRF, $state) == 0) { + $opts['CSRF'] = ''; + if (isset($_GET['code'])) { + //set code so it can be accessed in the next authentication step + $opts['code'] = stripslashes($_GET['code']); + UpdraftPlus_Options::update_updraft_option('updraft_dropbox', $opts); + $this->auth_token(); + } + } else { + error_log("UpdraftPlus: CSRF comparison failure: $CSRF != $state"); + } + } + try { + $this->auth_request(); + } catch (Exception $e) { + global $updraftplus; + $updraftplus->log(sprintf(__("%s error: %s", 'updraftplus'), sprintf(__("%s authentication", 'updraftplus'), 'Dropbox'), $e->getMessage()), 'error'); + } + } + + public function show_authed_admin_warning() { + global $updraftplus_admin, $updraftplus; + + $dropbox = $this->bootstrap(); + if (false === $dropbox) return false; + + try { + $accountInfo = $dropbox->accountInfo(); + } catch (Exception $e) { + $accountinfo_err = sprintf(__("%s error: %s", 'updraftplus'), 'Dropbox', $e->getMessage()).' ('.$e->getCode().')'; + } + + $message = "".__('Success:','updraftplus').' '.sprintf(__('you have authenticated your %s account','updraftplus'),'Dropbox'); + # We log, because otherwise people get confused by the most recent log message of 'Parameter not found: oauth_token' and raise support requests + $updraftplus->log(__('Success:','updraftplus').' '.sprintf(__('you have authenticated your %s account','updraftplus'),'Dropbox')); + + if (empty($accountInfo['code']) || "200" != $accountInfo['code']) { + $message .= " (".__('though part of the returned information was not as expected - your mileage may vary','updraftplus').") ". $accountInfo['code']; + if (!empty($accountinfo_err)) $message .= "
        ".htmlspecialchars($accountinfo_err); + } else { + $body = $accountInfo['body']; + $name = ''; + if (isset($body->display_name)) { + $name = $body->display_name; + } else { + $name = $body->name->display_name; + } + $message .= ".
        ".sprintf(__('Your %s account name: %s','updraftplus'),'Dropbox', htmlspecialchars($name)); + $opts = $this->get_opts(); + $opts['ownername'] = $name; + UpdraftPlus_Options::update_updraft_option('updraft_dropbox', $opts); + + try { + /* + Quota information is no longer provided with account information a new call to qoutaInfo must be made to get this information. + */ + // 28 June 2017 - https://blogs.dropbox.com/developers/2016/06/api-v1-deprecated/ + if (defined('UPDRAFTPLUS_DROPBOX_API_V1') && UPDRAFTPLUS_DROPBOX_API_V1 && time() < 1498608000) { + $quotaInfo = $accountInfo; + } else { + $quotaInfo = $dropbox->quotaInfo(); + } + + if (empty($quotaInfo['code']) || "200" != $quotaInfo['code']) { + $message .= " (".__('though part of the returned information was not as expected - your mileage may vary','updraftplus').")". $quotaInfo['code']; + if (!empty($accountinfo_err)) $message .= "
        ".htmlspecialchars($accountinfo_err); + } else { + $body = $quotaInfo['body']; + if (isset($body->quota_info)){ + $quota_info = $body->quota_info; + $total_quota = max($quota_info->quota, 1); + $normal_quota = $quota_info->normal; + $shared_quota = $quota_info->shared; + $available_quota =$total_quota - ($normal_quota + $shared_quota); + $used_perc = round(($normal_quota + $shared_quota)*100/$total_quota, 1); + $message .= '
        '.sprintf(__('Your %s quota usage: %s %% used, %s available','updraftplus'), 'Dropbox', $used_perc, round($available_quota/1048576, 1).' MB'); + } else { + $total_quota = max($body->allocation->allocated, 1); + $used = $body->used; + $available_quota =$total_quota - $used; + $used_perc = round($used*100/$total_quota, 1); + $message .= '
        '.sprintf(__('Your %s quota usage: %s %% used, %s available','updraftplus'), 'Dropbox', $used_perc, round($available_quota/1048576, 1).' MB'); + } + } + } catch (Exception $e) { + } + + } + $updraftplus_admin->show_admin_warning($message); + + } + + public function auth_token() { + $this->bootstrap(); + $opts = $this->get_opts(); + if (!empty($opts['tk_access_token'])) { + add_action('all_admin_notices', array($this, 'show_authed_admin_warning') ); + } + } + + // Acquire single-use authorization code + public function auth_request() { + $this->bootstrap(); + } + + // This basically reproduces the relevant bits of bootstrap.php from the SDK + public function bootstrap($deauthenticate = false) { + if (!empty($this->dropbox_object) && !is_wp_error($this->dropbox_object)) return $this->dropbox_object; + + /* + Use Old Dropbox API constant is used to force bootstrap to use the old API this is for users having problems. By default we will use the new Dropbox API v2 as the old version will be deprecated as of June 2017 + */ + $dropbox_api = (defined('UPDRAFTPLUS_DROPBOX_API_V1') && UPDRAFTPLUS_DROPBOX_API_V1 && time() < 1498608000) ? 'Dropbox' : 'Dropbox2'; + + require_once(UPDRAFTPLUS_DIR.'/includes/'.$dropbox_api.'/API.php'); + require_once(UPDRAFTPLUS_DIR.'/includes/'.$dropbox_api.'/Exception.php'); + require_once(UPDRAFTPLUS_DIR.'/includes/'.$dropbox_api.'/OAuth/Consumer/ConsumerAbstract.php'); + require_once(UPDRAFTPLUS_DIR.'/includes/'.$dropbox_api.'/OAuth/Storage/StorageInterface.php'); + require_once(UPDRAFTPLUS_DIR.'/includes/'.$dropbox_api.'/OAuth/Storage/Encrypter.php'); + require_once(UPDRAFTPLUS_DIR.'/includes/'.$dropbox_api.'/OAuth/Storage/WordPress.php'); + require_once(UPDRAFTPLUS_DIR.'/includes/'.$dropbox_api.'/OAuth/Consumer/Curl.php'); +// require_once(UPDRAFTPLUS_DIR.'/includes/'.$dropbox_api.'/OAuth/Consumer/WordPress.php'); + + $opts = $this->get_opts(); + + $key = empty($opts['secret']) ? '' : $opts['secret']; + $sec = empty($opts['appkey']) ? '' : $opts['appkey']; + + $oauth2_id = base64_decode('aXA3NGR2Zm1sOHFteTA5'); + + // Set the callback URL + $callbackhome = UpdraftPlus_Options::admin_page_url().'?page=updraftplus&action=updraftmethod-dropbox-auth'; + $callback = defined('UPDRAFTPLUS_DROPBOX_AUTH_RETURN_URL') ? UPDRAFTPLUS_DROPBOX_AUTH_RETURN_URL : 'https://auth.updraftplus.com/auth/dropbox/'; + + // Instantiate the Encrypter and storage objects + $encrypter = new Dropbox_Encrypter('ThisOneDoesNotMatterBeyondLength'); + + // Instantiate the storage + $storage = new Dropbox_WordPress($encrypter, "tk_", 'updraft_dropbox'); + +// WordPress consumer does not yet work +// $OAuth = new Dropbox_ConsumerWordPress($sec, $key, $storage, $callback); + + // Get the DropBox API access details + list($d2, $d1) = $this->defaults(); + if (empty($sec)) { $sec = base64_decode($d1); }; if (empty($key)) { $key = base64_decode($d2); } + $root = 'sandbox'; + if ('dropbox:' == substr($sec, 0, 8)) { + $sec = substr($sec, 8); + $root = 'dropbox'; + } + + try { + $OAuth = new Dropbox_Curl($sec, $oauth2_id, $key, $storage, $callback, $callbackhome, $deauthenticate); + } catch (Exception $e) { + global $updraftplus; + $updraftplus->log("Dropbox Curl error: ".$e->getMessage()); + $updraftplus->log(sprintf(__("%s error: %s", 'updraftplus'), "Dropbox/Curl", $e->getMessage().' ('.get_class($e).') (line: '.$e->getLine().', file: '.$e->getFile()).')', 'error'); + return false; + } + + if ($deauthenticate) return true; + + $this->dropbox_object = new UpdraftPlus_Dropbox_API($OAuth, $root); + return $this->dropbox_object; + } + +} diff --git a/plugins/updraftplus/methods/email.php b/plugins/updraftplus/methods/email.php new file mode 100644 index 0000000..96e18e7 --- /dev/null +++ b/plugins/updraftplus/methods/email.php @@ -0,0 +1,87 @@ +backups_dir_location()); + + $email = $updraftplus->just_one_email(UpdraftPlus_Options::get_updraft_option('updraft_email'), true); + + if (!is_array($email)) $email = array($email); + + foreach ($backup_array as $type => $file) { + + $descrip_type = (preg_match('/^(.*)\d+$/', $type, $matches)) ? $matches[1] : $type; + + $fullpath = $updraft_dir.$file; + + if (file_exists($fullpath) && filesize($fullpath) > UPDRAFTPLUS_WARN_EMAIL_SIZE) { + $size_in_mb_of_big_file = round(filesize($fullpath)/1048576, 1); + $toobig_hash = md5($file); + $updraftplus->log($file.': '.sprintf(__('This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method.', 'updraftplus'), $size_in_mb_of_big_file), 'warning', 'toobigforemail_'.$toobig_hash); + } + + $any_attempted = false; + $any_sent = false; + foreach ($email as $ind => $addr) { + + if (!apply_filters('updraftplus_email_wholebackup', true, $addr, $ind, $type)) continue; + + foreach (explode(',', $addr) as $sendmail_addr) { + + $send_short = (strlen($sendmail_addr)>5) ? substr($sendmail_addr, 0, 5).'...' : $sendmail_addr; + $updraftplus->log("$file: email to: $send_short"); + $any_attempted = true; + + $subject = __("WordPress Backup", 'updraftplus').': '.get_bloginfo('name').' (UpdraftPlus '.$updraftplus->version.') '.get_date_from_gmt(gmdate('Y-m-d H:i:s', $updraftplus->backup_time), 'Y-m-d H:i'); + + $sent = wp_mail(trim($sendmail_addr), $subject, sprintf(__("Backup is of: %s.",'updraftplus'), site_url().' ('.$descrip_type.')'), null, array($fullpath)); + if ($sent) $any_sent = true; + } + } + if ($any_sent) { + if (isset($toobig_hash)) { + $updraftplus->log_removewarning('toobigforemail_'.$toobig_hash); + // Don't leave it still set for the next archive + unset($toobig_hash); + } + $updraftplus->uploaded_file($file); + } elseif ($any_attempted) { + $updraftplus->log('Mails were not sent successfully'); + $updraftplus->log(__('The attempt to send the backup via email failed (probably the backup was too large for this method)', 'updraftplus'), 'error'); + } else { + $updraftplus->log('No email addresses were configured to send to'); + } + } + return null; + } + + public function config_print() { + ?> + + + '.__("configure it here", 'updraftplus').''). + ' '.sprintf(__('For more options, use the "%s" add-on.', 'updraftplus'), __('Reporting', 'updraftplus')).'' + ); + + echo $used.' '.sprintf(__('Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive.','updraftplus'), '10-20');?> + + + UpdraftPlus_Options::get_updraft_option('updraft_ftp_login'), + 'pass' => UpdraftPlus_Options::get_updraft_option('updraft_ftp_pass'), + 'host' => UpdraftPlus_Options::get_updraft_option('updraft_server_address'), + 'path' => UpdraftPlus_Options::get_updraft_option('updraft_ftp_remote_path'), + 'passive' => true + ); + UpdraftPlus_Options::update_updraft_option('updraft_ftp', $opts); + UpdraftPlus_Options::delete_updraft_option('updraft_server_address'); + UpdraftPlus_Options::delete_updraft_option('updraft_ftp_pass'); + UpdraftPlus_Options::delete_updraft_option('updraft_ftp_remote_path'); + UpdraftPlus_Options::delete_updraft_option('updraft_ftp_login'); +} + +class UpdraftPlus_BackupModule_ftp { + + // Get FTP object with parameters set + private function getFTP($server, $user, $pass, $disable_ssl = false, $disable_verify = true, $use_server_certs = false, $passive = true) { + + if ('' == trim($server) || '' == trim($user) || '' == trim($pass)) return new WP_Error('no_settings', sprintf(__('No %s settings were found','updraftplus'), 'FTP')); + + if( !class_exists('UpdraftPlus_ftp_wrapper')) require_once(UPDRAFTPLUS_DIR.'/includes/ftp.class.php'); + + $port = 21; + if (preg_match('/^(.*):(\d+)$/', $server, $matches)) { + $server = $matches[1]; + $port = $matches[2]; + } + + $ftp = new UpdraftPlus_ftp_wrapper($server, $user, $pass, $port); + + if ($disable_ssl) $ftp->ssl = false; + $ftp->use_server_certs = $use_server_certs; + $ftp->disable_verify = $disable_verify; + $ftp->passive = ($passive) ? true : false; + + return $ftp; + + } + + private function get_opts() { + global $updraftplus; + $opts = $updraftplus->get_job_option('updraft_ftp'); + if (!is_array($opts)) $opts = array(); + if (empty($opts['host'])) $opts['host'] = ''; + if (empty($opts['user'])) $opts['user'] = ''; + if (empty($opts['pass'])) $opts['pass'] = ''; + if (empty($opts['path'])) $opts['path'] = ''; + if (!isset($opts['passive'])) $opts['passive'] = true; // Use isset() to cope with upgrades from previous versions that did not have this option + return $opts; + } + + public function backup($backup_array) { + + global $updraftplus, $updraftplus_backup; + + $opts = $this->get_opts(); + + $ftp = $this->getFTP( + $opts['host'], + $opts['user'], + $opts['pass'], + $updraftplus->get_job_option('updraft_ssl_nossl'), + $updraftplus->get_job_option('updraft_ssl_disableverify'), + $updraftplus->get_job_option('updraft_ssl_useservercerts'), + $opts['passive'] + ); + + if (is_wp_error($ftp) || !$ftp->connect()) { + if (is_wp_error($ftp)) { + $updraftplus->log_wp_error($ftp); + } else { + $updraftplus->log("FTP Failure: we did not successfully log in with those credentials."); + } + $updraftplus->log(sprintf(__("%s login failure",'updraftplus'), 'FTP'), 'error'); + return false; + } + + //$ftp->make_dir(); we may need to recursively create dirs? TODO + + $updraft_dir = $updraftplus->backups_dir_location().'/'; + + $ftp_remote_path = trailingslashit($opts['path']); + foreach($backup_array as $file) { + $fullpath = $updraft_dir.$file; + $updraftplus->log("FTP upload attempt: $file -> ftp://".$opts['user']."@".$opts['host']."/${ftp_remote_path}${file}"); + $timer_start = microtime(true); + $size_k = round(filesize($fullpath)/1024,1); + # Note :Setting $resume to true unnecessarily is not meant to be a problem. Only ever (Feb 2014) seen one weird FTP server where calling SIZE on a non-existent file did create a problem. So, this code just helps that case. (the check for non-empty upload_status[p] is being cautious. + $upload_status = $updraftplus->jobdata_get('uploading_substatus'); + if (0 == $updraftplus->current_resumption || (is_array($upload_status) && !empty($upload_status['p']) && $upload_status['p'] == 0)) { + $resume = false; + } else { + $resume = true; + } + + if ($ftp->put($fullpath, $ftp_remote_path.$file, FTP_BINARY, $resume, $updraftplus)) { + $updraftplus->log("FTP upload attempt successful (".$size_k."KB in ".(round(microtime(true)-$timer_start,2)).'s)'); + $updraftplus->uploaded_file($file); + } else { + $updraftplus->log("ERROR: FTP upload failed" ); + $updraftplus->log(sprintf(__("%s upload failed",'updraftplus'), 'FTP'), 'error'); + } + } + + return array('ftp_object' => $ftp, 'ftp_remote_path' => $ftp_remote_path); + } + + public function listfiles($match = 'backup_') { + global $updraftplus; + + $opts = $this->get_opts(); + + $ftp = $this->getFTP( + $opts['host'], + $opts['user'], + $opts['pass'], + $updraftplus->get_job_option('updraft_ssl_nossl'), + $updraftplus->get_job_option('updraft_ssl_disableverify'), + $updraftplus->get_job_option('updraft_ssl_useservercerts'), + $opts['passive'] + ); + + if (is_wp_error($ftp)) return $ftp; + + if (!$ftp->connect()) return new WP_Error('ftp_login_failed', sprintf(__("%s login failure",'updraftplus'), 'FTP')); + + $ftp_remote_path = $opts['path']; + if ($ftp_remote_path) $ftp_remote_path = trailingslashit($ftp_remote_path); + + $dirlist = $ftp->dir_list($ftp_remote_path); + if (!is_array($dirlist)) return array(); + + $results = array(); + + foreach ($dirlist as $k => $path) { + + if ($ftp_remote_path) { + // Feb 2015 - found a case where the directory path was not prefixed on + if (0 !== strpos($path, $ftp_remote_path) && (false !== strpos('/', $ftp_remote_path) && false !== strpos('\\', $ftp_remote_path))) continue; + if (0 === strpos($path, $ftp_remote_path)) $path = substr($path, strlen($ftp_remote_path)); + // if (0 !== strpos($path, $ftp_remote_path)) continue; + // $path = substr($path, strlen($ftp_remote_path)); + if (0 === strpos($path, $match)) $results[]['name'] = $path; + } else { + if ('/' == substr($path, 0, 1)) $path = substr($path, 1); + if (false !== strpos($path, '/')) continue; + if (0 === strpos($path, $match)) $results[]['name'] = $path; + } + + unset($dirlist[$k]); + } + + # ftp_nlist() doesn't return file sizes. rawlist() does, but is tricky to parse. So, we get the sizes manually. + foreach ($results as $ind => $name) { + $size = $ftp->size($ftp_remote_path.$name['name']); + if (0 === $size) { + unset($results[$ind]); + } elseif ($size>0) { + $results[$ind]['size'] = $size; + } + } + + return $results; + + } + + public function delete($files, $ftparr = array(), $sizeinfo = array()) { + + global $updraftplus; + if (is_string($files)) $files=array($files); + + $opts = $this->get_opts(); + + if (is_array($ftparr) && isset($ftparr['ftp_object'])) { + $ftp = $ftparr['ftp_object']; + } else { + $ftp = $this->getFTP( + $opts['host'], + $opts['user'], + $opts['pass'], + $updraftplus->get_job_option('updraft_ssl_nossl'), + $updraftplus->get_job_option('updraft_ssl_disableverify'), + $updraftplus->get_job_option('updraft_ssl_useservercerts'), + $opts['passive'] + ); + + if (is_wp_error($ftp) || !$ftp->connect()) { + if (is_wp_error($ftp)) $updraftplus->log_wp_error($ftp); + $updraftplus->log("FTP Failure: we did not successfully log in with those credentials (host=".$opts['host'].")."); + return false; + } + + } + + $ftp_remote_path = isset($ftparr['ftp_remote_path']) ? $ftparr['ftp_remote_path'] : trailingslashit($opts['path']); + + $ret = true; + foreach ($files as $file) { + if (@$ftp->delete($ftp_remote_path.$file)) { + $updraftplus->log("FTP delete: succeeded (${ftp_remote_path}${file})"); + } else { + $updraftplus->log("FTP delete: failed (${ftp_remote_path}${file})"); + $ret = false; + } + } + return $ret; + + } + + public function download($file) { + + global $updraftplus; + + $opts = $this->get_opts(); + + $ftp = $this->getFTP( + $opts['host'], + $opts['user'], + $opts['pass'], + $updraftplus->get_job_option('updraft_ssl_nossl'), + $updraftplus->get_job_option('updraft_ssl_disableverify'), + $updraftplus->get_job_option('updraft_ssl_useservercerts'), + $opts['passive'] + ); + if (is_wp_error($ftp)) return $ftp; + + if (!$ftp->connect()) { + $updraftplus->log("FTP Failure: we did not successfully log in with those credentials."); + $updraftplus->log(sprintf(__("%s login failure",'updraftplus'), 'FTP'), 'error'); + return false; + } + + //$ftp->make_dir(); we may need to recursively create dirs? TODO + + $ftp_remote_path = trailingslashit($opts['path']); + $fullpath = $updraftplus->backups_dir_location().'/'.$file; + + $resume = false; + if (file_exists($fullpath)) { + $resume = true; + $updraftplus->log("File already exists locally; will resume: size: ".filesize($fullpath)); + } + + return $ftp->get($fullpath, $ftp_remote_path.$file, FTP_BINARY, $resume, $updraftplus); + } + + private function ftp_possible() { + $funcs_disabled = array(); + foreach (array('ftp_connect', 'ftp_login', 'ftp_nb_fput') as $func) { + if (!function_exists($func)) $funcs_disabled['ftp'][] = $func; + } + $funcs_disabled = apply_filters('updraftplus_ftp_possible', $funcs_disabled); + return (0 == count($funcs_disabled)) ? true : $funcs_disabled; + } + + public function config_print() { + global $updraftplus; + + $possible = $this->ftp_possible(); + if (is_array($possible)) { + ?> + + + + __('regular non-encrypted FTP', 'updraftplus'), + 'ftpsslimplicit' => __('encrypted FTP (implicit encryption)', 'updraftplus'), + 'ftpsslexplicit' => __('encrypted FTP (explicit encryption)', 'updraftplus') + ); + foreach ($possible as $type => $missing) { + $updraftplus_admin->show_double_warning(''.__('Warning','updraftplus').': '. sprintf(__("Your web server's PHP installation has these functions disabled: %s.", 'updraftplus'), implode(', ', $missing)).' '.sprintf(__('Your hosting company must enable these functions before %s can work.', 'updraftplus'), $trans[$type]), 'ftp'); + } + ?> + + + get_opts(); + + ?> + + + +

        + + + + + '.htmlspecialchars(__('Only non-encrypted FTP is supported by regular UpdraftPlus.')).'
        '.__('If you want encryption (e.g. you are storing sensitive business data), then an add-on is available.','updraftplus')).''; ?> + + + + : + + + + : + + + + : + " /> + + + : + + + + : + + />
        + + + +

        + + getFTP($server, $login, $pass, $nossl, $disable_verify, $use_server_certs); + $ftp = $this->getFTP($server, $login, $pass, $nossl, $disable_verify, $use_server_certs, $passive); + + if (!$ftp->connect()) { + _e('Failure: we did not successfully log in with those credentials.', 'updraftplus'); + return; + } + //$ftp->make_dir(); we may need to recursively create dirs? TODO + + $file = md5(rand(0,99999999)).'.tmp'; + $fullpath = trailingslashit($path).$file; + + if ($ftp->put(ABSPATH.WPINC.'/version.php', $fullpath, FTP_BINARY, false, true)) { + echo __("Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:", 'updraftplus')." ".$ftp->login_type.')'; + @$ftp->delete($fullpath); + } else { + _e('Failure: we successfully logged in, but were not able to create a file in the given directory.', 'updraftplus'); + if (!empty($ftp->ssl)) { + echo ' '.__('This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again.', 'updraftplus'); + } + } + + } + +} diff --git a/plugins/updraftplus/methods/googlecloud.php b/plugins/updraftplus/methods/googlecloud.php new file mode 100644 index 0000000..63aead4 --- /dev/null +++ b/plugins/updraftplus/methods/googlecloud.php @@ -0,0 +1,21 @@ +=')) { + require_once(UPDRAFTPLUS_DIR.'/methods/viaaddon-base.php'); + class UpdraftPlus_BackupModule_googlecloud extends UpdraftPlus_BackupModule_ViaAddon { + public function __construct() { + parent::__construct('googlecloud', 'Google Cloud', '5.2.4', 'googlecloud.png'); + } + } +} else { + require_once(UPDRAFTPLUS_DIR.'/methods/insufficient.php'); + class UpdraftPlus_BackupModule_googlecloud extends UpdraftPlus_BackupModule_insufficientphp { + public function __construct() { + parent::__construct('googlecloud', 'Google Cloud', '5.2.4', 'googlecloud.png'); + } + } +} diff --git a/plugins/updraftplus/methods/googledrive.php b/plugins/updraftplus/methods/googledrive.php new file mode 100644 index 0000000..882409a --- /dev/null +++ b/plugins/updraftplus/methods/googledrive.php @@ -0,0 +1,983 @@ + UpdraftPlus_Options::get_updraft_option('updraft_googledrive_clientid'), + 'secret' => UpdraftPlus_Options::get_updraft_option('updraft_googledrive_secret'), + 'parentid' => UpdraftPlus_Options::get_updraft_option('updraft_googledrive_remotepath'), + 'token' => UpdraftPlus_Options::get_updraft_option('updraft_googledrive_token') + ); + $tmp = UpdraftPlus_Options::get_updraft_option('updraftplus_tmp_access_token'); + if (!empty($tmp)) $opts['tmp_access_token'] = $tmp; + UpdraftPlus_Options::update_updraft_option('updraft_googledrive', $opts); + UpdraftPlus_Options::delete_updraft_option('updraft_googledrive_clientid'); + UpdraftPlus_Options::delete_updraft_option('updraft_googledrive_secret'); + UpdraftPlus_Options::delete_updraft_option('updraft_googledrive_remotepath'); + UpdraftPlus_Options::delete_updraft_option('updraft_googledrive_token'); + UpdraftPlus_Options::delete_updraft_option('updraftplus_tmp_access_token'); +} + +class UpdraftPlus_BackupModule_googledrive { + + private $service; + private $client; + private $ids_from_paths; + + public function action_auth() { + if (isset($_GET['state'])) { + if ('success' == $_GET['state']) add_action('all_admin_notices', array($this, 'show_authed_admin_success')); + elseif ('token' == $_GET['state']) $this->gdrive_auth_token(); + elseif ('revoke' == $_GET['state']) $this->gdrive_auth_revoke(); + } elseif (isset($_GET['updraftplus_googleauth'])) { + $this->gdrive_auth_request(); + } + } + + public function get_credentials() { + return array('updraft_googledrive'); + } + + public static function get_opts() { + # parentid is deprecated since April 2014; it should not be in the default options (its presence is used to detect an upgraded-from-previous-SDK situation). For the same reason, 'folder' is also unset; which enables us to know whether new-style settings have ever been set. + global $updraftplus; + $opts = $updraftplus->get_job_option('updraft_googledrive'); + if (!is_array($opts)) $opts = array('clientid' => '', 'secret' => ''); + return $opts; + } + + private function root_id() { + if (empty($this->root_id)) $this->root_id = $this->service->about->get()->getRootFolderId(); + return $this->root_id; + } + + public function id_from_path($path, $retry = true) { + global $updraftplus; + + try { + while ('/' == substr($path, 0, 1)) { $path = substr($path, 1); } + + $cache_key = (empty($path)) ? '/' : $path; + if (!empty($this->ids_from_paths) && isset($this->ids_from_paths[$cache_key])) return $this->ids_from_paths[$cache_key]; + + $current_parent = $this->root_id(); + $current_path = '/'; + + if (!empty($path)) { + foreach (explode('/', $path) as $element) { + $found = false; + $sub_items = $this->get_subitems($current_parent, 'dir', $element); + + foreach ($sub_items as $item) { + try { + if ($item->getTitle() == $element) { + $found = true; + $current_path .= $element.'/'; + $current_parent = $item->getId(); + break; + } + } catch (Exception $e) { + $updraftplus->log("Google Drive id_from_path: exception: ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')'); + } + } + + if (!$found) { + $ref = new Google_Service_Drive_ParentReference; + $ref->setId($current_parent); + $dir = new Google_Service_Drive_DriveFile(); + $dir->setMimeType('application/vnd.google-apps.folder'); + $dir->setParents(array($ref)); + $dir->setTitle($element); + $updraftplus->log("Google Drive: creating path: ".$current_path.$element); + $dir = $this->service->files->insert( + $dir, + array('mimeType' => 'application/vnd.google-apps.folder') + ); + $current_path .= $element.'/'; + $current_parent = $dir->getId(); + } + } + } + + if (empty($this->ids_from_paths)) $this->ids_from_paths = array(); + $this->ids_from_paths[$cache_key] = $current_parent; + + return $current_parent; + + } catch (Exception $e) { + $msg = $e->getMessage(); + $updraftplus->log("Google Drive id_from_path failure: exception (".get_class($e)."): ".$msg.' (line: '.$e->getLine().', file: '.$e->getFile().')'); + if (is_a($e, 'Google_Service_Exception') && false !== strpos($msg, 'Invalid json in service response') && function_exists('mb_strpos')) { + // Aug 2015: saw a case where the gzip-encoding was not removed from the result + // https://stackoverflow.com/questions/10975775/how-to-determine-if-a-string-was-compressed + $is_gzip = false !== mb_strpos($msg , "\x1f" . "\x8b" . "\x08"); + if ($is_gzip) $updraftplus->log("Error: Response appears to be gzip-encoded still; something is broken in the client HTTP stack, and you should define UPDRAFTPLUS_GOOGLEDRIVE_DISABLEGZIP as true in your wp-config.php to overcome this."); + } + # One retry + return ($retry) ? $this->id_from_path($path, false) : false; + } + } + + private function get_parent_id($opts) { + $filtered = apply_filters('updraftplus_googledrive_parent_id', false, $opts, $this->service, $this); + if (!empty($filtered)) return $filtered; + if (isset($opts['parentid'])) { + if (empty($opts['parentid'])) { + return $this->root_id(); + } else { + $parent = (is_array($opts['parentid'])) ? $opts['parentid']['id'] : $opts['parentid']; + } + } else { + $parent = $this->id_from_path('UpdraftPlus'); + } + return (empty($parent)) ? $this->root_id() : $parent; + } + + public function listfiles($match = 'backup_') { + + $opts = $this->get_opts(); + + if (empty($opts['secret']) || empty($opts['clientid']) || empty($opts['clientid'])) return new WP_Error('no_settings', sprintf(__('No %s settings were found', 'updraftplus'), __('Google Drive','updraftplus'))); + + $service = $this->bootstrap(); + if (is_wp_error($service) || false == $service) return $service; + + global $updraftplus; + + try { + $parent_id = $this->get_parent_id($opts); + $sub_items = $this->get_subitems($parent_id, 'file'); + } catch (Exception $e) { + return new WP_Error(__('Google Drive list files: failed to access parent folder', 'updraftplus').": ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')'); + } + + $results = array(); + + foreach ($sub_items as $item) { + $title = "(unknown)"; + try { + $title = $item->getTitle(); + if (0 === strpos($title, $match)) { + $results[] = array('name' => $title, 'size' => $item->getFileSize()); + } + } catch (Exception $e) { + $updraftplus->log("Google Drive delete: exception: ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')'); + $ret = false; + continue; + } + } + + return $results; + } + + // Get a Google account access token using the refresh token + private function access_token($refresh_token, $client_id, $client_secret) { + + global $updraftplus; + $updraftplus->log("Google Drive: requesting access token: client_id=$client_id"); + + $query_body = array( + 'refresh_token' => $refresh_token, + 'client_id' => $client_id, + 'client_secret' => $client_secret, + 'grant_type' => 'refresh_token' + ); + + $result = wp_remote_post('https://accounts.google.com/o/oauth2/token', + array( + 'timeout' => '20', + 'method' => 'POST', + 'body' => $query_body + ) + ); + + if (is_wp_error($result)) { + $updraftplus->log("Google Drive error when requesting access token"); + foreach ($result->get_error_messages() as $msg) $updraftplus->log("Error message: $msg"); + return false; + } else { + $json_values = json_decode(wp_remote_retrieve_body($result), true); + if ( isset( $json_values['access_token'] ) ) { + $updraftplus->log("Google Drive: successfully obtained access token"); + return $json_values['access_token']; + } else { + $response = json_decode($result['body'],true); + if (!empty($response['error']) && 'deleted_client' == $response['error']) { + $updraftplus->log(__('The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus.','updraftplus'), 'error'); + } + $error_code = empty($response['error']) ? 'no error code' : $response['error']; + $updraftplus->log("Google Drive error ($error_code) when requesting access token: response does not contain access_token. Response: ".(is_string($result['body']) ? str_replace("\n", '', $result['body']) : json_encode($result['body']))); + return false; + } + } + } + + private function redirect_uri() { + return UpdraftPlus_Options::admin_page_url().'?action=updraftmethod-googledrive-auth'; + } + + // Acquire single-use authorization code from Google OAuth 2.0 + public function gdrive_auth_request() { + $opts = $this->get_opts(); + // First, revoke any existing token, since Google doesn't appear to like issuing new ones + if (!empty($opts['token'])) $this->gdrive_auth_revoke(); + // We use 'force' here for the approval_prompt, not 'auto', as that deals better with messy situations where the user authenticated, then changed settings + + # We require access to all Google Drive files (not just ones created by this app - scope https://www.googleapis.com/auth/drive.file) - because we need to be able to re-scan storage for backups uploaded by other installs + $params = array( + 'response_type' => 'code', + 'client_id' => $opts['clientid'], + 'redirect_uri' => $this->redirect_uri(), + 'scope' => 'https://www.googleapis.com/auth/drive', + 'state' => 'token', + 'access_type' => 'offline', + 'approval_prompt' => 'force' + ); + if(headers_sent()) { + global $updraftplus; + $updraftplus->log(sprintf(__('The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help).', ''), 'Google Drive'), 'error'); + } else { + header('Location: https://accounts.google.com/o/oauth2/auth?'.http_build_query($params, null, '&')); + } + } + + // Revoke a Google account refresh token + // Returns the parameter fed in, so can be used as a WordPress options filter + // Can be called statically from UpdraftPlus::googledrive_clientid_checkchange() + public static function gdrive_auth_revoke($unsetopt = true) { + $opts = self::get_opts(); + $ignore = wp_remote_get('https://accounts.google.com/o/oauth2/revoke?token='.$opts['token']); + if ($unsetopt) { + $opts['token'] = ''; + unset($opts['ownername']); + UpdraftPlus_Options::update_updraft_option('updraft_googledrive', $opts); + } + } + + // Get a Google account refresh token using the code received from gdrive_auth_request + public function gdrive_auth_token() { + $opts = $this->get_opts(); + if(isset($_GET['code'])) { + $post_vars = array( + 'code' => $_GET['code'], + 'client_id' => $opts['clientid'], + 'client_secret' => $opts['secret'], + 'redirect_uri' => UpdraftPlus_Options::admin_page_url().'?action=updraftmethod-googledrive-auth', + 'grant_type' => 'authorization_code' + ); + + $result = wp_remote_post('https://accounts.google.com/o/oauth2/token', array('timeout' => 25, 'method' => 'POST', 'body' => $post_vars) ); + + if (is_wp_error($result)) { + $add_to_url = "Bad response when contacting Google: "; + foreach ( $result->get_error_messages() as $message ) { + global $updraftplus; + $updraftplus->log("Google Drive authentication error: ".$message); + $add_to_url .= $message.". "; + } + header('Location: '.UpdraftPlus_Options::admin_page_url().'?page=updraftplus&error='.urlencode($add_to_url)); + } else { + $json_values = json_decode(wp_remote_retrieve_body($result), true); + if (isset($json_values['refresh_token'])) { + + // Save token + $opts['token'] = $json_values['refresh_token']; + UpdraftPlus_Options::update_updraft_option('updraft_googledrive', $opts); + + if (isset($json_values['access_token'])) { + $opts['tmp_access_token'] = $json_values['access_token']; + UpdraftPlus_Options::update_updraft_option('updraft_googledrive', $opts); + // We do this to clear the GET parameters, otherwise WordPress sticks them in the _wp_referer in the form and brings them back, leading to confusion + errors + header('Location: '.UpdraftPlus_Options::admin_page_url().'?action=updraftmethod-googledrive-auth&page=updraftplus&state=success'); + } + + } else { + + $msg = __('No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again.', 'updraftplus'); + + if (isset($json_values['error'])) $msg .= ' '.sprintf(__('Error: %s', 'updraftplus'), $json_values['error']); + + header('Location: '.UpdraftPlus_Options::admin_page_url().'?page=updraftplus&error='.urlencode($msg)); + } + } + } else { + header('Location: '.UpdraftPlus_Options::admin_page_url().'?page=updraftplus&error='.urlencode(__('Authorization failed', 'updraftplus'))); + } + } + + public function show_authed_admin_success() { + + global $updraftplus_admin; + + $opts = $this->get_opts(); + + if (empty($opts['tmp_access_token'])) return; + $updraftplus_tmp_access_token = $opts['tmp_access_token']; + + $message = ''; + try { + $service = $this->bootstrap($updraftplus_tmp_access_token); + if (false != $service && !is_wp_error($service)) { + + $about = $service->about->get(); + $quota_total = max($about->getQuotaBytesTotal(), 1); + $quota_used = $about->getQuotaBytesUsed(); + $username = $about->getName(); + $opts['ownername'] = $username; + + if (is_numeric($quota_total) && is_numeric($quota_used)) { + $available_quota = $quota_total - $quota_used; + $used_perc = round($quota_used*100/$quota_total, 1); + $message .= sprintf(__('Your %s quota usage: %s %% used, %s available','updraftplus'), 'Google Drive', $used_perc, round($available_quota/1048576, 1).' MB'); + } + } + } catch (Exception $e) { + if (is_a($e, 'Google_Service_Exception')) { + $errs = $e->getErrors(); + $message .= __('However, subsequent access attempts failed:', 'updraftplus'); + if (is_array($errs)) { + $message .= '
          '; + foreach ($errs as $err) { + $message .= '
        • '; + if (!empty($err['reason'])) $message .= ''.htmlspecialchars($err['reason']).': '; + if (!empty($err['message'])) { + $message .= htmlspecialchars($err['message']); + } else { + $message .= htmlspecialchars(serialize($err)); + } + $message .= '
        • '; + } + $message .= '
        '; + } else { + $message .= htmlspecialchars(serialize($errs)); + } + } + } + + $updraftplus_admin->show_admin_warning(__('Success', 'updraftplus').': '.sprintf(__('you have authenticated your %s account.', 'updraftplus'),__('Google Drive','updraftplus')).' '.((!empty($username)) ? sprintf(__('Name: %s.', 'updraftplus'), $username).' ' : '').$message); + + unset($opts['tmp_access_token']); + UpdraftPlus_Options::update_updraft_option('updraft_googledrive', $opts); + + } + + // This function just does the formalities, and off-loads the main work to upload_file + public function backup($backup_array) { + + global $updraftplus, $updraftplus_backup; + + $service = $this->bootstrap(); + if (false == $service || is_wp_error($service)) return $service; + + $updraft_dir = trailingslashit($updraftplus->backups_dir_location()); + + $opts = $this->get_opts(); + + try { + $parent_id = $this->get_parent_id($opts); + } catch (Exception $e) { + $updraftplus->log("Google Drive upload: failed to access parent folder: ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')'); + $updraftplus->log(sprintf(__('Failed to upload to %s','updraftplus'),__('Google Drive','updraftplus')).': '.__('failed to access parent folder', 'updraftplus').' ('.$e->getMessage().')', 'error'); + return false; + } + + foreach ($backup_array as $file) { + + $available_quota = -1; + + try { + $about = $service->about->get(); + $quota_total = max($about->getQuotaBytesTotal(), 1); + $quota_used = $about->getQuotaBytesUsed(); + $available_quota = $quota_total - $quota_used; + $message = "Google Drive quota usage: used=".round($quota_used/1048576,1)." MB, total=".round($quota_total/1048576,1)." MB, available=".round($available_quota/1048576,1)." MB"; + $updraftplus->log($message); + } catch (Exception $e) { + $updraftplus->log("Google Drive quota usage: failed to obtain this information: ".$e->getMessage()); + } + + $file_path = $updraft_dir.$file; + $file_name = basename($file_path); + $updraftplus->log("$file_name: Attempting to upload to Google Drive (into folder id: $parent_id)"); + + $filesize = filesize($file_path); + $already_failed = false; + if ($available_quota != -1) { + if ($filesize > $available_quota) { + $already_failed = true; + $updraftplus->log("File upload expected to fail: file ($file_name) size is $filesize b, whereas available quota is only $available_quota b"); + $updraftplus->log(sprintf(__("Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes",'updraftplus'),__('Google Drive', 'updraftplus'), $available_quota, $filesize), +'error'); + } + } + + if (!$already_failed && $filesize > 10737418240) { + # 10GB + $updraftplus->log("File upload expected to fail: file ($file_name) size is $filesize b (".round($filesize/1073741824, 4)." GB), whereas Google Drive's limit is 10GB (1073741824 bytes)"); + $updraftplus->log(sprintf(__("Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)",'updraftplus'),__('Google Drive', 'updraftplus'), '10GB (1073741824)', round($filesize/1073741824, 4), $filesize), 'warning'); + } + + try { + $timer_start = microtime(true); + if ($this->upload_file($file_path, $parent_id)) { + $updraftplus->log('OK: Archive ' . $file_name . ' uploaded to Google Drive in ' . ( round(microtime(true) - $timer_start, 2) ) . ' seconds'); + $updraftplus->uploaded_file($file); + } else { + $updraftplus->log("ERROR: $file_name: Failed to upload to Google Drive" ); + $updraftplus->log("$file_name: ".sprintf(__('Failed to upload to %s','updraftplus'),__('Google Drive','updraftplus')), 'error'); + } + } catch (Exception $e) { + $msg = $e->getMessage(); + $updraftplus->log("ERROR: Google Drive upload error: ".$msg.' (line: '.$e->getLine().', file: '.$e->getFile().')'); + if (false !== ($p = strpos($msg, 'The user has exceeded their Drive storage quota'))) { + $updraftplus->log("$file_name: ".sprintf(__('Failed to upload to %s','updraftplus'),__('Google Drive','updraftplus')).': '.substr($msg, $p), 'error'); + } else { + $updraftplus->log("$file_name: ".sprintf(__('Failed to upload to %s','updraftplus'),__('Google Drive','updraftplus')), 'error'); + } + $this->client->setDefer(false); + } + } + + return null; + } + + public function bootstrap($access_token = false) { + + global $updraftplus; + + if (!empty($this->service) && is_object($this->service) && is_a($this->service, 'Google_Service_Drive')) return $this->service; + + $opts = $this->get_opts(); + + if (empty($access_token)) { + if (empty($opts['token']) || empty($opts['clientid']) || empty($opts['secret'])) { + $updraftplus->log('Google Drive: this account is not authorised'); + $updraftplus->log('Google Drive: '.__('Account is not authorized.', 'updraftplus'), 'error', 'googledrivenotauthed'); + return new WP_Error('not_authorized', __('Account is not authorized.', 'updraftplus')); + } + } + +// $included_paths = explode(PATH_SEPARATOR, get_include_path()); +// if (!in_array(UPDRAFTPLUS_DIR.'/includes', $included_paths)) { +// set_include_path(UPDRAFTPLUS_DIR.'/includes'.PATH_SEPARATOR.get_include_path()); +// } + + + $spl = spl_autoload_functions(); + if (is_array($spl)) { + // Workaround for Google Drive CDN plugin's autoloader + if (in_array('wpbgdc_autoloader', $spl)) spl_autoload_unregister('wpbgdc_autoloader'); + // http://www.wpdownloadmanager.com/download/google-drive-explorer/ - but also others, since this is the default function name used by the Google SDK + if (in_array('google_api_php_client_autoload', $spl)) spl_autoload_unregister('google_api_php_client_autoload'); + } + +/* + if (!class_exists('Google_Config')) require_once 'Google/Config.php'; + if (!class_exists('Google_Client')) require_once 'Google/Client.php'; + if (!class_exists('Google_Service_Drive')) require_once 'Google/Service/Drive.php'; + if (!class_exists('Google_Http_Request')) require_once 'Google/Http/Request.php'; +*/ + if ((!class_exists('Google_Config') || !class_exists('Google_Client') || !class_exists('Google_Service_Drive') || !class_exists('Google_Http_Request')) && !function_exists('google_api_php_client_autoload_updraftplus')) { + require_once(UPDRAFTPLUS_DIR.'/includes/Google/autoload.php'); + } + + if (!class_exists('UpdraftPlus_Google_Http_MediaFileUpload')) { + require_once(UPDRAFTPLUS_DIR.'/includes/google-extensions.php'); + } + + $config = new Google_Config(); + $config->setClassConfig('Google_IO_Abstract', 'request_timeout_seconds', 60); + # In our testing, $service->about->get() fails if gzip is not disabled when using the stream wrapper + if (!function_exists('curl_version') || !function_exists('curl_exec') || (defined('UPDRAFTPLUS_GOOGLEDRIVE_DISABLEGZIP') && UPDRAFTPLUS_GOOGLEDRIVE_DISABLEGZIP)) { + $config->setClassConfig('Google_Http_Request', 'disable_gzip', true); + } + + $client = new Google_Client($config); + $client->setClientId($opts['clientid']); + $client->setClientSecret($opts['secret']); +// $client->setUseObjects(true); + + if (empty($access_token)) { + $access_token = $this->access_token($opts['token'], $opts['clientid'], $opts['secret']); + } + + // Do we have an access token? + if (empty($access_token) || is_wp_error($access_token)) { + $updraftplus->log('ERROR: Have not yet obtained an access token from Google (has the user authorised?)'); + $updraftplus->log(__('Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive.','updraftplus'), 'error'); + return $access_token; + } + + $client->setAccessToken(json_encode(array( + 'access_token' => $access_token, + 'refresh_token' => $opts['token'] + ))); + + $io = $client->getIo(); + $setopts = array(); + + if (is_a($io, 'Google_IO_Curl')) { + $setopts[CURLOPT_SSL_VERIFYPEER] = UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify') ? false : true; + if (!UpdraftPlus_Options::get_updraft_option('updraft_ssl_useservercerts')) $setopts[CURLOPT_CAINFO] = UPDRAFTPLUS_DIR.'/includes/cacert.pem'; + // Raise the timeout from the default of 15 + $setopts[CURLOPT_TIMEOUT] = 60; + $setopts[CURLOPT_CONNECTTIMEOUT] = 15; + if (defined('UPDRAFTPLUS_IPV4_ONLY') && UPDRAFTPLUS_IPV4_ONLY) $setopts[CURLOPT_IPRESOLVE] = CURL_IPRESOLVE_V4; + } elseif (is_a($io, 'Google_IO_Stream')) { + $setopts['timeout'] = 60; + # We had to modify the SDK to support this + # https://wiki.php.net/rfc/tls-peer-verification - before PHP 5.6, there is no default CA file + if (!UpdraftPlus_Options::get_updraft_option('updraft_ssl_useservercerts') || (version_compare(PHP_VERSION, '5.6.0', '<'))) $setopts['cafile'] = UPDRAFTPLUS_DIR.'/includes/cacert.pem'; + if (UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify')) $setopts['disable_verify_peer'] = true; + } + + $io->setOptions($setopts); + + $service = new Google_Service_Drive($client); + $this->client = $client; + $this->service = $service; + + try { + # Get the folder name, if not previously known (this is for the legacy situation where an id, not a name, was stored) + if (!empty($opts['parentid']) && (!is_array($opts['parentid']) || empty($opts['parentid']['name']))) { + $rootid = $this->root_id(); + $title = ''; + $parentid = is_array($opts['parentid']) ? $opts['parentid']['id'] : $opts['parentid']; + while ((!empty($parentid) && $parentid != $rootid)) { + $resource = $service->files->get($parentid); + $title = ($title) ? $resource->getTitle().'/'.$title : $resource->getTitle(); + $parents = $resource->getParents(); + if (is_array($parents) && count($parents)>0) { + $parent = array_shift($parents); + $parentid = is_a($parent, 'Google_Service_Drive_ParentReference') ? $parent->getId() : false; + } else { + $parentid = false; + } + } + if (!empty($title)) { + $opts['parentid'] = array( + 'id' => (is_array($opts['parentid']) ? $opts['parentid']['id'] : $opts['parentid']), + 'name' => $title + ); + UpdraftPlus_Options::update_updraft_option('updraft_googledrive', $opts); + } + } + } catch (Exception $e) { + $updraftplus->log("Google Drive: failed to obtain name of parent folder: ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')'); + } + + return $this->service; + + } + + // Returns array of Google_Service_Drive_DriveFile objects + private function get_subitems($parent_id, $type = 'any', $match = 'backup_') { + $q = '"'.$parent_id.'" in parents and trashed = false'; + if ('dir' == $type) { + $q .= ' and mimeType = "application/vnd.google-apps.folder"'; + } elseif ('file' == $type) { + $q .= ' and mimeType != "application/vnd.google-apps.folder"'; + } + # We used to use 'contains' in both cases, but this exposed some bug that might be in the SDK or at the Google end - a result that matched for = was not returned with contains + if (!empty($match)) { + if ('backup_' == $match) { + $q .= " and title contains '$match'"; + } else { + $q .= " and title = '$match'"; + } + } + + $result = array(); + $pageToken = NULL; + + do { + try { + // Default for maxResults is 100 + $parameters = array('q' => $q, 'maxResults' => 200); + if ($pageToken) { + $parameters['pageToken'] = $pageToken; + } + $files = $this->service->files->listFiles($parameters); + + $result = array_merge($result, $files->getItems()); + $pageToken = $files->getNextPageToken(); + } catch (Exception $e) { + global $updraftplus; + $updraftplus->log("Google Drive: get_subitems: An error occurred (will not fetch further): " . $e->getMessage()); + $pageToken = NULL; + } + } while ($pageToken); + + return $result; + } + + public function delete($files, $data=null, $sizeinfo = array()) { + + if (is_string($files)) $files=array($files); + + $service = $this->bootstrap(); + if (is_wp_error($service) || false == $service) return $service; + + $opts = $this->get_opts(); + + global $updraftplus; + + try { + $parent_id = $this->get_parent_id($opts); + $sub_items = $this->get_subitems($parent_id, 'file'); + } catch (Exception $e) { + $updraftplus->log("Google Drive delete: failed to access parent folder: ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')'); + return false; + } + + $ret = true; + + foreach ($sub_items as $item) { + $title = "(unknown)"; + try { + $title = $item->getTitle(); + if (in_array($title, $files)) { + $service->files->delete($item->getId()); + $updraftplus->log("$title: Deletion successful"); + if(($key = array_search($title, $files)) !== false) { + unset($files[$key]); + } + } + } catch (Exception $e) { + $updraftplus->log("Google Drive delete: exception: ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')'); + $ret = false; + continue; + } + } + + foreach ($files as $file) { + $updraftplus->log("$file: Deletion failed: file was not found"); + } + + return $ret; + + } + + private function upload_file($file, $parent_id, $try_again = true) { + + global $updraftplus; + $opts = $this->get_opts(); + $basename = basename($file); + + $service = $this->service; + $client = $this->client; + + # See: https://github.com/google/google-api-php-client/blob/master/examples/fileupload.php (at time of writing, only shows how to upload in chunks, not how to resume) + + $client->setDefer(true); + + $local_size = filesize($file); + + $gdfile = new Google_Service_Drive_DriveFile(); + $gdfile->title = $basename; + + $ref = new Google_Service_Drive_ParentReference; + $ref->setId($parent_id); + $gdfile->setParents(array($ref)); + + $size = 0; + $request = $service->files->insert($gdfile); + + $chunk_bytes = 1048576; + + $hash = md5($file); + $transkey = 'gdresume_'.$hash; + // This is unset upon completion, so if it is set then we are resuming + $possible_location = $updraftplus->jobdata_get($transkey); + + if (is_array($possible_location)) { + + $headers = array( 'content-range' => "bytes */".$local_size); + + $httpRequest = new Google_Http_Request( + $possible_location[0], + 'PUT', + $headers, + '' + ); + $response = $this->client->getIo()->makeRequest($httpRequest); + $can_resume = false; + + $response_http_code = $response->getResponseHttpCode(); + + if ($response_http_code == 200 || $response_http_code == 201) { + fclose($handle); + $client->setDefer(false); + $updraftplus->jobdata_delete($transkey); + $updraftplus->log("$basename: upload appears to be already complete (HTTP code: $response_http_code)"); + return true; + } + + if (308 == $response_http_code) { + $range = $response->getResponseHeader('range'); + if (!empty($range) && preg_match('/bytes=0-(\d+)$/', $range, $matches)) { + $can_resume = true; + $possible_location[1] = $matches[1]+1; + $updraftplus->log("$basename: upload already began; attempting to resume from byte ".$matches[1]); + } + } + if (!$can_resume) { + $updraftplus->log("$basename: upload already began; attempt to resume did not succeed (HTTP code: ".$response_http_code.")"); + } + } + + // UpdraftPlus_Google_Http_MediaFileUpload extends Google_Http_MediaFileUpload, with a few extra methods to change private properties to public ones + $media = new UpdraftPlus_Google_Http_MediaFileUpload( + $client, + $request, + (('.zip' == substr($basename, -4, 4)) ? 'application/zip' : 'application/octet-stream'), + null, + true, + $chunk_bytes + ); + $media->setFileSize($local_size); + + if (!empty($possible_location)) { +// $media->resumeUri = $possible_location[0]; +// $media->progress = $possible_location[1]; + $media->updraftplus_setResumeUri($possible_location[0]); + $media->updraftplus_setProgress($possible_location[1]); + $size = $possible_location[1]; + } + if ($size >= $local_size) return true; + + $status = false; + if (false == ($handle = fopen($file, 'rb'))) { + $updraftplus->log("Google Drive: failed to open file: $basename"); + $updraftplus->log("$basename: ".sprintf(__('%s Error: Failed to open local file', 'updraftplus'),'Google Drive'), 'error'); + return false; + } + if ($size > 0 && 0 != fseek($handle, $size)) { + $updraftplus->log("Google Drive: failed to fseek file: $basename, $size"); + $updraftplus->log("$basename (fseek): ".sprintf(__('%s Error: Failed to open local file', 'updraftplus'), 'Google Drive'), 'error'); + return false; + } + + $pointer = $size; + + try { + while (!$status && !feof($handle)) { + $chunk = fread($handle, $chunk_bytes); + # Error handling?? + $pointer += strlen($chunk); + $status = $media->nextChunk($chunk); + $updraftplus->jobdata_set($transkey, array($media->updraftplus_getResumeUri(), $media->getProgress())); + $updraftplus->record_uploaded_chunk(round(100*$pointer/$local_size, 1), $media->getProgress(), $file); + } + + } catch (Google_Service_Exception $e) { + $updraftplus->log("ERROR: Google Drive upload error (".get_class($e)."): ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')'); + $client->setDefer(false); + fclose($handle); + $updraftplus->jobdata_delete($transkey); + if (false == $try_again) throw($e); + # Reset this counter to prevent the something_useful_happened condition's possibility being sent into the far future and potentially missed + if ($updraftplus->current_resumption > 9) $updraftplus->jobdata_set('uploaded_lastreset', $updraftplus->current_resumption); + return $this->upload_file($file, $parent_id, false); + } + + // The final value of $status will be the data from the API for the object + // that has been uploaded. + $result = false; + if ($status != false) $result = $status; + + fclose($handle); + $client->setDefer(false); + $updraftplus->jobdata_delete($transkey); + + return true; + + } + + public function download($file) { + + global $updraftplus; + + $service = $this->bootstrap(); + if (false == $service || is_wp_error($service)) return false; + + global $updraftplus; + $opts = $this->get_opts(); + + try { + $parent_id = $this->get_parent_id($opts); + #$gdparent = $service->files->get($parent_id); + $sub_items = $this->get_subitems($parent_id, 'file'); + } catch (Exception $e) { + $updraftplus->log("Google Drive delete: failed to access parent folder: ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')'); + return false; + } + + $found = false; + foreach ($sub_items as $item) { + if ($found) continue; + $title = "(unknown)"; + try { + $title = $item->getTitle(); + if ($title == $file) { + $gdfile = $item; + $found = $item->getId(); + $size = $item->getFileSize(); + } + } catch (Exception $e) { + $updraftplus->log("Google Drive download: exception: ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')'); + } + } + + if (false === $found) { + $updraftplus->log("Google Drive download: failed: file not found"); + $updraftplus->log("$file: ".sprintf(__("%s Error",'updraftplus'), 'Google Drive').": ".__('File not found', 'updraftplus'), 'error'); + return false; + } + + $download_to = $updraftplus->backups_dir_location().'/'.$file; + + $existing_size = (file_exists($download_to)) ? filesize($download_to) : 0; + + if ($existing_size >= $size) { + $updraftplus->log('Google Drive download: was already downloaded ('.filesize($download_to)."/$size bytes)"); + return true; + } + + # Chunk in units of 2MB + $chunk_size = 2097152; + + try { + while ($existing_size < $size) { + + $end = min($existing_size + $chunk_size, $size); + + if ($existing_size > 0) { + $put_flag = FILE_APPEND; + $headers = array('Range' => 'bytes='.$existing_size.'-'.$end); + } else { + $put_flag = null; + $headers = ($end < $size) ? array('Range' => 'bytes=0-'.$end) : array(); + } + + $pstart = round(100*$existing_size/$size,1); + $pend = round(100*$end/$size,1); + $updraftplus->log("Requesting byte range: $existing_size - $end ($pstart - $pend %)"); + + $request = $this->client->getAuth()->sign(new Google_Http_Request($gdfile->getDownloadUrl(), 'GET', $headers, null)); + $http_request = $this->client->getIo()->makeRequest($request); + $http_response = $http_request->getResponseHttpCode(); + if (200 == $http_response || 206 == $http_response) { + file_put_contents($download_to, $http_request->getResponseBody(), $put_flag); + } else { + $updraftplus->log("Google Drive download: failed: unexpected HTTP response code: ".$http_response); + $updraftplus->log(sprintf(__("%s download: failed: file not found", 'updraftplus'), 'Google Drive'), 'error'); + return false; + } + + clearstatcache(); + $new_size = filesize($download_to); + if ($new_size > $existing_size) { + $existing_size = $new_size; + } else { + throw new Exception('Failed to obtain any new data at size: '.$existing_size); + } + } + } catch (Exception $e) { + $updraftplus->log("Google Drive download: exception: ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')'); + } + + return true; + } + + public function config_print() { + $opts = $this->get_opts(); + ?> + + + + <?php _e('Google Drive','updraftplus');?> +

        + + + + + + + '.htmlspecialchars(sprintf(__("%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage.", 'updraftplus'), __('Google Drive','updraftplus'), $matches[1], __('Google Drive','updraftplus'))).'

        '; + } else { + ?> + +

        ">

        + +

        : +

        + + + + + + + : +
        + + + : + + + + + '.__('Google Drive','updraftplus').' '.__('Folder', 'updraftplus').': + + '; + if (!empty($parentid) && (!is_array($opts['parentid']) || empty($opts['parentid']['name']))) { + $folder_opts .= ''.__("This is NOT a folder name.",'updraftplus').' '.__('It is an ID number internal to Google Drive', 'updraftplus').''; + } else { + $folder_opts .= ''; + } + } else { + $folder_opts = ' + '.__('Google Drive','updraftplus').' '.__('Folder', 'updraftplus').': + '; + } + $folder_opts .= '
        '.__('To be able to set a custom folder name, use UpdraftPlus Premium.', 'updraftplus').''; + $folder_opts .= ''; + echo apply_filters('updraftplus_options_googledrive_others', $folder_opts, $opts); + ?> + + + : +

        (You appear to be already authenticated, though you can authenticate again to refresh your access if you've had a problem).", 'updraftplus'); ?> + + '.sprintf(__("Account holder's name: %s.", 'updraftplus'), htmlspecialchars($opts['ownername'])).' '; + } + ?> +

        +
        +
        +
        + <?php _e('notice image','updraftplus');?> +
        +
        +

        + +
        + + + + + +
        +

        +

        + ' . $discount_code . ''; + +// if (isset($text2)) { +// echo '

        ' . $text2 . '

        '; +// } + + if (!empty($button_link) && !empty($button_meta)) { + ?> + + +

        +
        +
        +
        +
        diff --git a/plugins/updraftplus/templates/wp-admin/notices/report-plain.php b/plugins/updraftplus/templates/wp-admin/notices/report-plain.php new file mode 100644 index 0000000..f302024 --- /dev/null +++ b/plugins/updraftplus/templates/wp-admin/notices/report-plain.php @@ -0,0 +1,37 @@ + + +: +' . $discount_code . ''; + +// if (isset($text2)) { +// echo '

        ' . $text2 . '

        '; +// } + + if (!empty($button_link) && !empty($button_meta)) { +?> +

        + + +

        + +

        + + UpdraftPlus + + '.__('Free Newsletter', 'updraftplus').'
        '.__('UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time.', 'updraftplus').' '.__('Follow this link to sign up.', 'updraftplus').'

        '; + + echo '

        '.__('UpdraftPlus Premium', 'updraftplus').'
        '.__('For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin.', 'updraftplus').' '.__('Compare with the free version', 'updraftplus').' / '.__('Go to the shop.', 'updraftplus').'

        '; + + echo '

        '.__('UpdraftCentral', 'updraftplus').'
        '.__('UpdraftCentral is a powerful remote control plugin for WordPress that allows you to control all your UpdraftPlus installs and backups from one central location.', 'updraftplus').' '.__('You can even use it to centrally manage and update all themes, plugins and WordPress core on all your sites without logging into them!','updraftplus').' '.__('Download it for free from WordPress.org', 'updraftplus').' / '.__('Explore our Cloud and Premium versions.', 'updraftplus').'

        '; + + echo '

        '.__('More Quality Plugins', 'updraftplus').'
        '.__('Premium WooCommerce plugins', 'updraftplus').' | '.__('Free two-factor security plugin', 'updraftplus').' | '.__('WP-Optimize (free)', 'updraftplus').'

        '; + + ?> + +
        + +

         

        + +

        + + After you have saved your settings (by clicking \'Save Changes\' below), then come back here once and click this link to complete authentication with Google.','updraftplus');?> +

        + + + method = $method; + $this->desc = $desc; + $this->required_php = $php; + $this->image = $image; + $this->error_msg = 'This remote storage method ('.$this->desc.') requires PHP '.$this->required_php.' or later'; + $this->error_msg_trans = sprintf(__('This remote storage method (%s) requires PHP %s or later.', 'updraftplus'), $this->desc, $this->required_php); + } + + private function log_error() { + global $updraftplus; + $updraftplus->log($this->error_msg); + $updraftplus->log($this->error_msg_trans, 'error', 'insufficientphp'); + return false; + } + + // backup method: takes an array, and shovels them off to the cloud storage + public function backup($backup_array) { + return $this->log_error(); + } + + # $match: a substring to require (tested via strpos() !== false) + public function listfiles($match = 'backup_') { + return new WP_Error('insufficient_php', $this->error_msg_trans); + } + + // delete method: takes an array of file names (base name) or a single string, and removes them from the cloud storage + public function delete($files, $data = false, $sizeinfo = array()) { + return $this->log_error(); + } + + // download method: takes a file name (base name), and brings it back from the cloud storage into Updraft's directory + // You can register errors with $updraftplus->log("my error message", 'error') + public function download($file) { + return $this->log_error(); + } + + private function extra_config() { + } + + // config_print: prints out table rows for the configuration screen + // Your rows need to have a class exactly matching your method (in this example, insufficientphp), and also a class of updraftplusmethod + // Note that logging is not available from this context; it will do nothing. + public function config_print() { + + $this->extra_config(); + ?> + + desc);?>: + + + image)) ? '

        ' : ''); ?> + error_msg_trans);?> + + +
        + + + =')) { + require_once(UPDRAFTPLUS_DIR.'/methods/viaaddon-base.php'); + class UpdraftPlus_BackupModule_onedrive extends UpdraftPlus_BackupModule_ViaAddon { + public function __construct() { + parent::__construct('onedrive', 'Microsoft OneDrive', '5.3.3', 'onedrive.png'); + } + } +} else { + require_once(UPDRAFTPLUS_DIR.'/methods/insufficient.php'); + class UpdraftPlus_BackupModule_onedrive extends UpdraftPlus_BackupModule_insufficientphp { + public function __construct() { + parent::__construct('onedrive', 'Microsoft OneDrive', '5.3.3', 'onedrive.png'); + } + } +} diff --git a/plugins/updraftplus/methods/openstack-base.php b/plugins/updraftplus/methods/openstack-base.php new file mode 100644 index 0000000..4d64ffd --- /dev/null +++ b/plugins/updraftplus/methods/openstack-base.php @@ -0,0 +1,529 @@ +method = $method; + $this->desc = $desc; + $this->long_desc = (is_string($long_desc)) ? $long_desc : $desc; + $this->img_url = $img_url; + } + + public function backup($backup_array) { + + global $updraftplus; + + $default_chunk_size = (defined('UPDRAFTPLUS_UPLOAD_CHUNKSIZE') && UPDRAFTPLUS_UPLOAD_CHUNKSIZE > 0) ? max(UPDRAFTPLUS_UPLOAD_CHUNKSIZE, 1048576) : 5242880; + + $this->chunk_size = $updraftplus->jobdata_get('openstack_chunk_size', $default_chunk_size); + + $opts = $this->get_opts(); + + $this->container = $opts['path']; + + try { + $service = $this->get_service($opts, UpdraftPlus_Options::get_updraft_option('updraft_ssl_useservercerts'), UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify')); + } catch(AuthenticationError $e) { + $updraftplus->log($this->desc.' authentication failed ('.$e->getMessage().')'); + $updraftplus->log(sprintf(__('%s authentication failed', 'updraftplus'), $this->desc).' ('.$e->getMessage().')', 'error'); + return false; + } catch (Exception $e) { + $updraftplus->log($this->desc.' error - failed to access the container ('.$e->getMessage().') (line: '.$e->getLine().', file: '.$e->getFile().')'); + $updraftplus->log(sprintf(__('%s error - failed to access the container', 'updraftplus'), $this->desc).' ('.$e->getMessage().')', 'error'); + return false; + } + # Get the container + try { + $this->container_object = $service->getContainer($this->container); + } catch (Exception $e) { + $updraftplus->log('Could not access '.$this->desc.' container ('.get_class($e).', '.$e->getMessage().') (line: '.$e->getLine().', file: '.$e->getFile().')'); + $updraftplus->log(sprintf(__('Could not access %s container', 'updraftplus'), $this->desc).' ('.get_class($e).', '.$e->getMessage().')', 'error'); + return false; + } + + foreach ($backup_array as $key => $file) { + + $file_key = 'openstack_status_'.md5($file); + $file_status = $updraftplus->jobdata_get($file_key); + if (is_array($file_status) && !empty($file_status['chunks']) && !empty($file_status['chunks'][1]['size'])) $this->chunk_size = $file_status['chunks'][1]['size']; + + # First, see the object's existing size (if any) + $uploaded_size = $this->get_remote_size($file); + + try { + if (1 === $updraftplus->chunked_upload($this, $file, $this->method."://".$this->container."/$file", $this->desc, $this->chunk_size, $uploaded_size)) { + try { + if (false !== ($data = fopen($updraftplus->backups_dir_location().'/'.$file, 'r+'))) { + $this->container_object->uploadObject($file, $data); + $updraftplus->log($this->desc." regular upload: success"); + $updraftplus->uploaded_file($file); + } else { + throw new Exception('uploadObject failed: fopen failed'); + } + } catch (Exception $e) { + $this->log("$logname regular upload: failed ($file) (".$e->getMessage().")"); + $this->log("$file: ".sprintf(__('%s Error: Failed to upload','updraftplus'),$logname), 'error'); + } + } + } catch (Exception $e) { + $updraftplus->log($this->desc.' error - failed to upload file'.' ('.$e->getMessage().') (line: '.$e->getLine().', file: '.$e->getFile().')'); + $updraftplus->log(sprintf(__('%s error - failed to upload file', 'updraftplus'), $this->desc).' ('.$e->getMessage().')', 'error'); + return false; + } + } + + return array('object' => $this->container_object, 'orig_path' => $opts['path'], 'container' => $this->container); + + } + + private function get_remote_size($file) { + try { + $response = $this->container_object->getClient()->head($this->container_object->getUrl($file))->send(); + $response_object = $this->container_object->dataObject()->populateFromResponse($response)->setName($file); + return $response_object->getContentLength(); + } catch (Exception $e) { + # Allow caller to distinguish between zero-sized and not-found + return false; + } + } + + public function listfiles($match = 'backup_') { + $opts = $this->get_opts(); + $container = $opts['path']; + $path = $container; + + if (empty($opts['user']) || (empty($opts['apikey']) && empty($opts['password']))) return new WP_Error('no_settings', __('No settings were found','updraftplus')); + + try { + $service = $this->get_service($opts, UpdraftPlus_Options::get_updraft_option('updraft_ssl_useservercerts'), UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify')); + } catch (Exception $e) { + return new WP_Error('no_access', sprintf(__('%s error - failed to access the container', 'updraftplus'), $this->desc).' ('.$e->getMessage().')'); + } + + # Get the container + try { + $this->container_object = $service->getContainer($container); + } catch (Exception $e) { + return new WP_Error('no_access', sprintf(__('%s error - failed to access the container', 'updraftplus'), $this->desc).' ('.$e->getMessage().')'); + } + + $results = array(); + try { + $objects = $this->container_object->objectList(array('prefix' => $match)); + $index = 0; + while (false !== ($file = $objects->offsetGet($index)) && !empty($file)) { + try { + if ((is_object($file) && !empty($file->name))) { + $result = array('name' => $file->name); + # Rackspace returns the size of a manifested file properly; other OpenStack implementations may not + if (!empty($file->bytes)) { + $result['size'] = $file->bytes; + } else { + $size = $this->get_remote_size($file->name); + if (false !== $size && $size > 0) $result['size'] = $size; + } + $results[] = $result; + } + } catch (Exception $e) { + } + $index++; + } + } catch (Exception $e) { + } + + return $results; + } + + public function chunked_upload_finish($file) { + + $chunk_path = 'chunk-do-not-delete-'.$file; + try { + + $headers = array( + 'Content-Length' => 0, + 'X-Object-Manifest' => sprintf('%s/%s', + $this->container, + $chunk_path.'_' + ) + ); + + $url = $this->container_object->getUrl($file); + $this->container_object->getClient()->put($url, $headers)->send(); + return true; + + } catch (Exception $e) { + global $updraftplus; + $updraftplus->log("Error when sending manifest (".get_class($e)."): ".$e->getMessage()); + return false; + } + } + + // N.B. Since we use varying-size chunks, we must be careful as to what we do with $chunk_index + public function chunked_upload($file, $fp, $chunk_index, $upload_size, $upload_start, $upload_end, $total_file_size) { + + global $updraftplus; + + $file_key = 'openstack_status_'.md5($file); + $file_status = $updraftplus->jobdata_get($file_key); + + $next_chunk_size = $upload_size; + + $bytes_already_uploaded = 0; + + $last_uploaded_chunk_index = 0; + + // Once a chunk is uploaded, its status is set, allowing the sequence to be reconstructed + if (is_array($file_status) && isset($file_status['chunks']) && !empty($file_status['chunks'])) { + foreach ($file_status['chunks'] as $c_id => $c_status) { + if ($c_id > $last_uploaded_chunk_index) $last_uploaded_chunk_index = $c_id; + if ($chunk_index + 1 == $c_id) { + $next_chunk_size = $c_status['size']; + } + $bytes_already_uploaded += $c_status['size']; + } + } else { + $file_status = array('chunks' => array()); + } + + $updraftplus->jobdata_set($file_key, $file_status); + + if ($upload_start < $bytes_already_uploaded) { + if ($next_chunk_size != $upload_size) { + $response = new stdClass; + $response->new_chunk_size = $upload_size; + $response->log = false; + return $response; + } else { + return 1; + } + } + + // Shouldn't be able to happen + if ($chunk_index <= $last_uploaded_chunk_index) { + $updraftplus->log($this->desc.": Chunk sequence error; chunk_index=$chunk_index, last_uploaded_chunk_index=$last_uploaded_chunk_index, upload_start=$upload_start, upload_end=$upload_end, file_status=".json_encode($file_status)); + } + + // Used to use $chunk_index here, before switching to variable chunk sizes + $upload_remotepath = 'chunk-do-not-delete-'.$file.'_'.sprintf("%016d", $chunk_index); + + $remote_size = $this->get_remote_size($upload_remotepath); + + // Without this, some versions of Curl add Expect: 100-continue, which results in Curl then giving this back: curl error: 55) select/poll returned error + // Didn't make the difference - instead we just check below for actual success even when Curl reports an error + // $chunk_object->headers = array('Expect' => ''); + + if ($remote_size >= $upload_size) { + $updraftplus->log($this->desc.": Chunk ($upload_start - $upload_end, $chunk_index): already uploaded"); + } else { + $updraftplus->log($this->desc.": Chunk ($upload_start - $upload_end, $chunk_index): begin upload"); + // Upload the chunk + try { + $data = fread($fp, $upload_size); + $time_start = microtime(true); + $this->container_object->uploadObject($upload_remotepath, $data); + $time_now = microtime(true); + $time_taken = $time_now - $time_start; + if ($next_chunk_size < 52428800 && $total_file_size > 0 && $upload_end + 1 < $total_file_size) { + $job_run_time = $time_now - $updraftplus->job_time_ms; + if ($time_taken < 10) { + $upload_rate = $upload_size / max($time_taken, 0.0001); + $upload_secs = min(floor($job_run_time), 10); + if ($job_run_time < 15) $upload_secs = max(6, $job_run_time*0.6); + + // In megabytes + $memory_limit_mb = $updraftplus->memory_check_current(); + $bytes_used = memory_get_usage(); + $bytes_free = $memory_limit_mb * 1048576 - $bytes_used; + + $new_chunk = max(min($upload_secs * $upload_rate * 0.9, 52428800, $bytes_free), 5242880); + $new_chunk = $new_chunk - ($new_chunk % 5242880); + $next_chunk_size = (int)$new_chunk; + $updraftplus->jobdata_set('openstack_chunk_size', $next_chunk_size); + } + } + + } catch (Exception $e) { + $updraftplus->log($this->desc." chunk upload: error: ($file / $chunk_index) (".$e->getMessage().") (line: ".$e->getLine().', file: '.$e->getFile().')'); + // Experience shows that Curl sometimes returns a select/poll error (curl error 55) even when everything succeeded. Google seems to indicate that this is a known bug. + + $remote_size = $this->get_remote_size($upload_remotepath); + + if ($remote_size >= $upload_size) { + $updraftplus->log("$file: Chunk now exists; ignoring error (presuming it was an apparently known curl bug)"); + } else { + $updraftplus->log("$file: ".sprintf(__('%s Error: Failed to upload','updraftplus'), $this->desc), 'error'); + return false; + } + } + } + + $file_status['chunks'][$chunk_index]['size'] = $upload_size; + + $updraftplus->jobdata_set($file_key, $file_status); + + if ($next_chunk_size != $upload_size) { + $response = new stdClass; + $response->new_chunk_size = $next_chunk_size; + $response->log = true; + return $response; + } + + return true; + } + + + public function delete($files, $data = false, $sizeinfo = array()) { + + global $updraftplus; + if (is_string($files)) $files = array($files); + + if (is_array($data)) { + $container_object = $data['object']; + $container = $data['container']; + $path = $data['orig_path']; + } else { + $opts = $this->get_opts(); + $container = $opts['path']; + $path = $container; + try { + $service = $this->get_service($opts, UpdraftPlus_Options::get_updraft_option('updraft_ssl_useservercerts'), UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify')); + } catch(AuthenticationError $e) { + $updraftplus->log($this->desc.' authentication failed ('.$e->getMessage().')'); + $updraftplus->log(sprintf(__('%s authentication failed', 'updraftplus'), $this->desc).' ('.$e->getMessage().')', 'error'); + return false; + } catch (Exception $e) { + $updraftplus->log($this->desc.' error - failed to access the container ('.$e->getMessage().')'); + $updraftplus->log(sprintf(__('%s error - failed to access the container', 'updraftplus'), $this->desc).' ('.$e->getMessage().')', 'error'); + return false; + } + # Get the container + try { + $container_object = $service->getContainer($container); + } catch (Exception $e) { + $updraftplus->log('Could not access '.$this->desc.' container ('.get_class($e).', '.$e->getMessage().')'); + $updraftplus->log(sprintf(__('Could not access %s container', 'updraftplus'), $this->desc).' ('.get_class($e).', '.$e->getMessage().')', 'error'); + return false; + } + + } + + $ret = true; + foreach ($files as $file) { + + $updraftplus->log($this->desc.": Delete remote: container=$container, path=$file"); + + // We need to search for chunks + $chunk_path = "chunk-do-not-delete-".$file; + + try { + $objects = $container_object->objectList(array('prefix' => $chunk_path)); + $index = 0; + while (false !== ($chunk = $objects->offsetGet($index)) && !empty($chunk)) { + try { + $name = $chunk->name; + $container_object->dataObject()->setName($name)->delete(); + $updraftplus->log($this->desc.': Chunk deleted: '.$name); + } catch (Exception $e) { + $updraftplus->log($this->desc." chunk delete failed: $name: ".$e->getMessage()); + } + $index++; + } + } catch (Exception $e) { + $updraftplus->log($this->desc.' chunk delete failed: '.$e->getMessage()); + } + + # Finally, delete the object itself + try { + $container_object->dataObject()->setName($file)->delete(); + $updraftplus->log($this->desc.': Deleted: '.$file); + } catch (Exception $e) { + $updraftplus->log($this->desc.' delete failed: '.$e->getMessage()); + $ret = false; + } + } + return $ret; + } + + public function download($file) { + + global $updraftplus; + + $opts = $this->get_opts(); + + try { + $service = $this->get_service($opts, UpdraftPlus_Options::get_updraft_option('updraft_ssl_useservercerts'), UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify')); + } catch(AuthenticationError $e) { + $updraftplus->log($this->desc.' authentication failed ('.$e->getMessage().')'); + $updraftplus->log(sprintf(__('%s authentication failed', 'updraftplus'), $this->desc).' ('.$e->getMessage().')', 'error'); + return false; + } catch (Exception $e) { + $updraftplus->log($this->desc.' error - failed to access the container ('.$e->getMessage().')'); + $updraftplus->log(sprintf(__('%s error - failed to access the container', 'updraftplus'), $this->desc).' ('.$e->getMessage().')', 'error'); + return false; + } + + $container = untrailingslashit($opts['path']); + $updraftplus->log($this->desc." download: ".$this->method."://$container/$file"); + + # Get the container + try { + $this->container_object = $service->getContainer($container); + } catch (Exception $e) { + $updraftplus->log('Could not access '.$this->desc.' container ('.get_class($e).', '.$e->getMessage().')'); + $updraftplus->log(sprintf(__('Could not access %s container', 'updraftplus'), $this->desc).' ('.get_class($e).', '.$e->getMessage().')', 'error'); + return false; + } + + # Get information about the object within the container + $remote_size = $this->get_remote_size($file); + if (false === $remote_size) { + $updraftplus->log('Could not access '.$this->desc.' object'); + $updraftplus->log(sprintf(__('The %s object was not found', 'updraftplus'), $this->desc), 'error'); + return false; + } + + return (!is_bool($remote_size)) ? $updraftplus->chunked_download($file, $this, $remote_size, true, $this->container_object) : false; + + } + + public function chunked_download($file, $headers, $container_object) { + try { + $dl = $container_object->getObject($file, $headers); + } catch (Exception $e) { + global $updraftplus; + $updraftplus->log("$file: Failed to download (".$e->getMessage().")"); + $updraftplus->log("$file: ".sprintf(__("%s Error",'updraftplus'), $this->desc).": ".__('Error downloading remote file: Failed to download'.' ('.$e->getMessage().")",'updraftplus'), 'error'); + return false; + } + return $dl->getContent(); + } + + public function credentials_test_go($opts, $path, $useservercerts, $disableverify) { + + if (preg_match("#^([^/]+)/(.*)$#", $path, $bmatches)) { + $container = $bmatches[1]; + $path = $bmatches[2]; + } else { + $container = $path; + $path = ''; + } + + if (empty($container)) { + _e('Failure: No container details were given.' ,'updraftplus'); + return; + } + + try { + $service = $this->get_service($opts, $useservercerts, $disableverify); + } catch(Guzzle\Http\Exception\ClientErrorResponseException $e) { + $response = $e->getResponse(); + $code = $response->getStatusCode(); + $reason = $response->getReasonPhrase(); + if (401 == $code && 'Unauthorized' == $reason) { + echo __('Authorisation failed (check your credentials)', 'updraftplus'); + } else { + echo __('Authorisation failed (check your credentials)', 'updraftplus')." ($code:$reason)"; + } + return; + } catch(AuthenticationError $e) { + echo sprintf(__('%s authentication failed', 'updraftplus'), $this->desc).' ('.$e->getMessage().')'; + return; + } catch (Exception $e) { + echo sprintf(__('%s authentication failed', 'updraftplus'), $this->desc).' ('.get_class($e).', '.$e->getMessage().')'; + return; + } + + try { + $container_object = $service->getContainer($container); + } catch(Guzzle\Http\Exception\ClientErrorResponseException $e) { + $response = $e->getResponse(); + $code = $response->getStatusCode(); + $reason = $response->getReasonPhrase(); + if (404 == $code) { + $container_object = $service->createContainer($container); + } else { + echo __('Authorisation failed (check your credentials)', 'updraftplus')." ($code:$reason)"; + return; + } + } catch (Exception $e) { + echo sprintf(__('%s authentication failed', 'updraftplus'), $this->desc).' ('.get_class($e).', '.$e->getMessage().')'; + return; + } + + if (!is_a($container_object, 'OpenCloud\ObjectStore\Resource\Container') && !is_a($container_object, 'Container')) { + echo sprintf(__('%s authentication failed', 'updraftplus'), $this->desc).' ('.get_class($container_object).')'; + return; + } + + $try_file = md5(rand()).'.txt'; + + try { + $object = $container_object->uploadObject($try_file, 'UpdraftPlus test file', array('content-type' => 'text/plain')); + } catch (Exception $e) { + echo sprintf(__('%s error - we accessed the container, but failed to create a file within it', 'updraftplus'), $this->desc).' ('.get_class($e).', '.$e->getMessage().')'; + if (!empty($this->region)) echo ' '.sprintf(__('Region: %s', 'updraftplus'), $this->region); + return; + } + + echo __('Success', 'updraftplus').": ".__('We accessed the container, and were able to create files within it.', 'updraftplus'); + if (!empty($this->region)) echo ' '.sprintf(__('Region: %s', 'updraftplus'), $this->region); + + try { + if (!empty($object)) { + # One OpenStack server we tested on did not delete unless we slept... some kind of race condition at their end + sleep(1); + $object->delete(); + } + } catch (Exception $e) { + } + + } + + public function config_print_middlesection() { + } + + public function config_print() { + + ?> + + + + img_url)) { ?> + <?php echo $this->long_desc;?> + +

        long_desc);?>

        + + + + + + show_double_warning(''.__('Warning','updraftplus').': '.sprintf(__('Your web server\'s PHP installation does not included a required module (%s). Please contact your web hosting provider\'s support.', 'updraftplus'), 'mbstring').' '.sprintf(__("UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative.",'updraftplus'), $this->desc, 'mbstring'), $this->method); + } + $updraftplus_admin->curl_check($this->long_desc, false, $this->method); + ?> + + + + config_print_middlesection(); ?> + + + +

        + + =')) { + require_once(UPDRAFTPLUS_DIR.'/methods/openstack2.php'); +} else { + require_once(UPDRAFTPLUS_DIR.'/methods/insufficient.php'); + class UpdraftPlus_BackupModule_openstack extends UpdraftPlus_BackupModule_insufficientphp { + public function __construct() { + parent::__construct('openstack', 'OpenStack', '5.3.3'); + } + } +} diff --git a/plugins/updraftplus/methods/openstack2.php b/plugins/updraftplus/methods/openstack2.php new file mode 100644 index 0000000..7dc1074 --- /dev/null +++ b/plugins/updraftplus/methods/openstack2.php @@ -0,0 +1,172 @@ +log("OpenStack authentication URL: ".$authurl); + + $client = new OpenStack($authurl, array( + 'username' => $user, + 'password' => $password, + 'tenantName' => $tenant + )); + $this->client = $client; + + if ($disablesslverify) { + $client->setSslVerification(false); + } else { + if ($useservercerts) { + $client->setConfig(array($client::SSL_CERT_AUTHORITY => false)); + } else { + $client->setSslVerification(UPDRAFTPLUS_DIR.'/includes/cacert.pem', true, 2); + } + } + + $client->authenticate(); + + if (empty($region)) { + $catalog = $client->getCatalog(); + if (!empty($catalog)) { + $items = $catalog->getItems(); + if (is_array($items)) { + foreach ($items as $item) { + $name = $item->getName(); + $type = $item->getType(); + if ('swift' != $name || 'object-store' != $type) continue; + $eps = $item->getEndpoints(); + if (!is_array($eps)) continue; + foreach ($eps as $ep) { + if (is_object($ep) && !empty($ep->region)) { + $region = $ep->region; + } + } + } + } + } + } + + $this->region = $region; + + return $client->objectStoreService('swift', $region); + + } + + public function get_credentials() { + return array('updraft_openstack'); + } + + public function get_opts() { + global $updraftplus; + $opts = $updraftplus->get_job_option('updraft_openstack'); + if (!is_array($opts)) $opts = array('user' => '', 'authurl' => '', 'password' => '', 'tenant' => '', 'path' => '', 'region' => ''); + return $opts; + } + + public function config_print_middlesection() { + $opts = $this->get_opts(); + ?> + + + +

        ">

        + + + + + : + +
        + + + + + + : + + + + + + : + +
        + + + + + + : + + + + + + : + + + + + + : + + + stripslashes($posted_settings['user']), + 'password' => stripslashes($posted_settings['password']), + 'authurl' => stripslashes($posted_settings['authurl']), + 'tenant' => stripslashes($posted_settings['tenant']), + 'region' => (!empty($posted_settings['region'])) ? $posted_settings['region'] : '', + ); + + $this->credentials_test_go($opts, stripslashes($posted_settings['path']), $posted_settings['useservercerts'], $posted_settings['disableverify']); + } + +} diff --git a/plugins/updraftplus/methods/s3.php b/plugins/updraftplus/methods/s3.php new file mode 100644 index 0000000..d3d7c60 --- /dev/null +++ b/plugins/updraftplus/methods/s3.php @@ -0,0 +1,1046 @@ + UpdraftPlus_Options::get_updraft_option('updraft_s3_login'), + 'secretkey' => UpdraftPlus_Options::get_updraft_option('updraft_s3_pass'), + 'path' => UpdraftPlus_Options::get_updraft_option('updraft_s3_remote_path') + ); + UpdraftPlus_Options::update_updraft_option('updraft_s3', $opts); + UpdraftPlus_Options::delete_updraft_option('updraft_s3_login'); + UpdraftPlus_Options::delete_updraft_option('updraft_s3_pass'); + UpdraftPlus_Options::delete_updraft_option('updraft_s3_remote_path'); +} + +// This class is used by both UpdraftPlus_S3 and UpdraftPlus_S3_Compat +class UpdraftPlus_S3Exception extends Exception { + public function __construct($message, $file, $line, $code = 0) + { + parent::__construct($message, $code); + $this->file = $file; + $this->line = $line; + } +} + +class UpdraftPlus_BackupModule_s3 { + + private $s3_object; + private $got_with; + protected $quota_used = null; + protected $s3_exception; + protected $download_chunk_size = 10485760; + + protected function get_config() { + global $updraftplus; + $opts = $updraftplus->get_job_option('updraft_s3'); + if (!is_array($opts)) $opts = array('accesskey' => '', 'secretkey' => '', 'path' => ''); + $opts['whoweare'] = 'S3'; + $opts['whoweare_long'] = 'Amazon S3'; + $opts['key'] = 's3'; + return $opts; + } + + public function get_credentials() { + return array('updraft_s3'); + } + + protected function indicate_s3_class() { + // N.B. : The classes must have different names, as if multiple remote storage options are chosen, then we could theoretically need both (if both Amazon and a compatible-S3 provider are used) + // Conditional logic, for new AWS SDK (N.B. 3.x branch requires PHP 5.5, so we're on 2.x - requires 5.3.3) + + $opts = $this->get_config(); + $class_to_use = 'UpdraftPlus_S3'; + if (version_compare(PHP_VERSION, '5.3.3', '>=') && !empty($opts['key']) && ('s3' == $opts['key'] || 'updraftvault' == $opts['key']) && (!defined('UPDRAFTPLUS_S3_OLDLIB') || !UPDRAFTPLUS_S3_OLDLIB)) { + $class_to_use = 'UpdraftPlus_S3_Compat'; + } + + if ('UpdraftPlus_S3_Compat' == $class_to_use) { + if (!class_exists($class_to_use)) require_once(UPDRAFTPLUS_DIR.'/includes/S3compat.php'); + } else { + if (!class_exists($class_to_use)) require_once(UPDRAFTPLUS_DIR.'/includes/S3.php'); + } + return $class_to_use; + } + + // Get an S3 object, after setting our options + public function getS3($key, $secret, $useservercerts, $disableverify, $nossl, $endpoint = null, $sse = false) { + + if (!empty($this->s3_object) && !is_wp_error($this->s3_object)) return $this->s3_object; + + if (is_string($key)) $key = trim($key); + if (is_string($secret)) $secret = trim($secret); + + // Saved in case the object needs recreating for the corner-case where there is no permission to look up the bucket location + $this->got_with = array( + 'key' => $key, + 'secret' => $secret, + 'useservercerts' => $useservercerts, + 'disableverify' => $disableverify, + 'nossl' => $nossl, + 'server_side_encryption' => $sse + ); + + if (is_wp_error($key)) return $key; + + if ('' == $key || '' == $secret) { + return new WP_Error('no_settings', __('No settings were found - please go to the Settings tab and check your settings','updraftplus')); + } + + global $updraftplus; + + $use_s3_class = $this->indicate_s3_class(); + + if (!class_exists('WP_HTTP_Proxy')) require_once(ABSPATH.WPINC.'/class-http.php'); + $proxy = new WP_HTTP_Proxy(); + + $use_ssl = true; + $ssl_ca = true; + if (!$nossl) { + $curl_version = (function_exists('curl_version')) ? curl_version() : array('features' => null); + $curl_ssl_supported = ($curl_version['features'] & CURL_VERSION_SSL); + if ($curl_ssl_supported) { + if ($disableverify) { + $ssl_ca = false; + //$s3->setSSL(true, false); + $updraftplus->log("S3: Disabling verification of SSL certificates"); + } else { + if ($useservercerts) { + $updraftplus->log("S3: Using the server's SSL certificates"); + $ssl_ca = 'system'; + } else { + $ssl_ca = file_exists(UPDRAFTPLUS_DIR.'/includes/cacert.pem') ? UPDRAFTPLUS_DIR.'/includes/cacert.pem' : true; + } + } + } else { + $use_ssl = false; + $updraftplus->log("S3: Curl/SSL is not available. Communications will not be encrypted."); + } + } else { + $use_ssl = false; + $updraftplus->log("SSL was disabled via the user's preference. Communications will not be encrypted."); + } + + try { + $s3 = new $use_s3_class($key, $secret, $use_ssl, $ssl_ca, $endpoint); + } catch (Exception $e) { + + // Catch a specific PHP engine bug - see HS#6364 + if ('UpdraftPlus_S3_Compat' == $use_s3_class && is_a($e, 'InvalidArgumentException') && false !== strpos('Invalid signature type: s3', $e->getMessage())) { + require_once(UPDRAFTPLUS_DIR.'/includes/S3.php'); + $use_s3_class = 'UpdraftPlus_S3'; + $try_again = true; + } else { + $updraftplus->log(sprintf(__('%s Error: Failed to initialise','updraftplus'), 'S3').": ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')'); + $updraftplus->log(sprintf(__('%s Error: Failed to initialise','updraftplus'), $key), 'S3'); + return new WP_Error('s3_init_failed', sprintf(__('%s Error: Failed to initialise','updraftplus'), 'S3').": ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')'); + } + } + + if (!empty($try_again)) { + try { + $s3 = new $use_s3_class($key, $secret, $use_ssl, $ssl_ca, $endpoint); + } catch (Exception $e) { + $updraftplus->log(sprintf(__('%s Error: Failed to initialise','updraftplus'), 'S3').": ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')'); + $updraftplus->log(sprintf(__('%s Error: Failed to initialise','updraftplus'), $key), 'S3'); + return new WP_Error('s3_init_failed', sprintf(__('%s Error: Failed to initialise','updraftplus'), 'S3').": ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')'); + } + $updraftplus->log("S3: Hit a PHP engine bug - had to switch to the older S3 library (which is incompatible with signatureV4, which may cause problems later on if using a region that requires it)"); + } + + if ($proxy->is_enabled()) { + # WP_HTTP_Proxy returns empty strings where we want nulls + $user = $proxy->username(); + if (empty($user)) { + $user = null; + $pass = null; + } else { + $pass = $proxy->password(); + if (empty($pass)) $pass = null; + } + $port = (int)$proxy->port(); + if (empty($port)) $port = 8080; + $s3->setProxy($proxy->host(), $user, $pass, CURLPROXY_HTTP, $port); + } + +// Old: from before we passed the SSL options when getting the object +// if (!$nossl) { +// $curl_version = (function_exists('curl_version')) ? curl_version() : array('features' => null); +// $curl_ssl_supported = ($curl_version['features'] & CURL_VERSION_SSL); +// if ($curl_ssl_supported) { +// if ($disableverify) { +// $s3->setSSL(true, false); +// $updraftplus->log("S3: Disabling verification of SSL certificates"); +// } else { +// $s3->setSSL(true, true); +// } +// if ($useservercerts) { +// $updraftplus->log("S3: Using the server's SSL certificates"); +// } else { +// $s3->setSSLAuth(null, null, UPDRAFTPLUS_DIR.'/includes/cacert.pem'); +// } +// } else { +// $s3->setSSL(false, false); +// $updraftplus->log("S3: Curl/SSL is not available. Communications will not be encrypted."); +// } +// } else { +// $s3->setSSL(false, false); +// $updraftplus->log("SSL was disabled via the user's preference. Communications will not be encrypted."); +// } + + if (method_exists($s3, 'setServerSideEncryption') && (is_a($this, 'UpdraftPlus_BackupModule_updraftvault') || $sse)) $s3->setServerSideEncryption('AES256'); + + $this->s3_object = $s3; + + return $this->s3_object; + } + + protected function set_region($obj, $region, $bucket_name = '') { + global $updraftplus; + switch ($region) { + case 'EU': + case 'eu-west-1': + $endpoint = 's3-eu-west-1.amazonaws.com'; + break; + case 'us-east-1': + $endpoint = 's3.amazonaws.com'; + break; + case 'us-west-1': + case 'us-east-2': + case 'us-west-2': + case 'ap-southeast-1': + case 'ap-southeast-2': + case 'ap-northeast-1': + case 'ap-northeast-2': + case 'sa-east-1': + case 'us-gov-west-1': + case 'eu-central-1': + $endpoint = 's3-'.$region.'.amazonaws.com'; + break; + case 'ap-south-1': + case 'cn-north-1': + $endpoint = 's3.'.$region.'.amazonaws.com.cn'; + break; + default: + break; + } + + if (isset($endpoint)) { + if (is_a($obj, 'UpdraftPlus_S3_Compat')) { + $updraftplus->log("Set region: $region"); + $obj->setRegion($region); + return; + } + + $updraftplus->log("Set endpoint: $endpoint"); + +// if ($region == 'us-west-1') { +// $obj->useDNSBucketName(true, $bucket_name); +// return; +// } + + return $obj->setEndpoint($endpoint); + } + } + + public function backup($backup_array) { + + global $updraftplus; + + $config = $this->get_config(); + + if (empty($config['accesskey']) && !empty($config['error_message'])) { + $err = new WP_Error('no_settings', $config['error_message']); + return $updraftplus->log_wp_error($err, false, true); + } + + $whoweare = $config['whoweare']; + $whoweare_key = $config['key']; + $whoweare_keys = substr($whoweare_key, 0, 3); + $sse = (empty($config['server_side_encryption'])) ? false : true; + + $s3 = $this->getS3( + $config['accesskey'], + $config['secretkey'], + UpdraftPlus_Options::get_updraft_option('updraft_ssl_useservercerts'), UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify'), + UpdraftPlus_Options::get_updraft_option('updraft_ssl_nossl'), + null, + $sse + ); + + if (is_wp_error($s3)) return $updraftplus->log_wp_error($s3, false, true); + + if (is_a($s3, 'UpdraftPlus_S3_Compat') && !class_exists('XMLWriter')) { + $updraftplus->log('The required XMLWriter PHP module is not installed'); + $updraftplus->log(sprintf(__('The required %s PHP module is not installed - ask your web hosting company to enable it', 'updraftplus'), 'XMLWriter'), 'error'); + return false; + } + + $bucket_name = untrailingslashit($config['path']); + $bucket_path = ""; + $orig_bucket_name = $bucket_name; + + if (preg_match("#^([^/]+)/(.*)$#",$bucket_name,$bmatches)) { + $bucket_name = $bmatches[1]; + $bucket_path = $bmatches[2]."/"; + } + + list($s3, $bucket_exists, $region) = $this->get_bucket_access($s3, $config, $bucket_name, $bucket_path); + + // See if we can detect the region (which implies the bucket exists and is ours), or if not create it + if ($bucket_exists) { + + $updraft_dir = trailingslashit($updraftplus->backups_dir_location()); + + foreach ($backup_array as $key => $file) { + + // We upload in 5MB chunks to allow more efficient resuming and hence uploading of larger files + // N.B.: 5MB is Amazon's minimum. So don't go lower or you'll break it. + $fullpath = $updraft_dir.$file; + $orig_file_size = filesize($fullpath); + + if (isset($config['quota']) && method_exists($this, 's3_get_quota_info')) { + $quota_used = $this->s3_get_quota_info('numeric', $config['quota']); + if (false === $quota_used) { + $updraftplus->log("Quota usage: count failed"); + } else { + $this->quota_used = $quota_used; + if ($config['quota'] - $this->quota_used < $orig_file_size) { + if (method_exists($this, 's3_out_of_quota')) call_user_func(array($this, 's3_out_of_quota'), $config['quota'], $this->quota_used, $orig_file_size); + continue; + } else { + // We don't need to log this always - the s3_out_of_quota method will do its own logging + $updraftplus->log("$whoweare: Quota is available: used=$quota_used (".round($quota_used/1048576, 1)." MB), total=".$config['quota']." (".round($config['quota']/1048576, 1)." MB), needed=$orig_file_size (".round($orig_file_size/1048576, 1)." MB)"); + } + } + } + + $chunks = floor($orig_file_size / 5242880); + // There will be a remnant unless the file size was exactly on a 5MB boundary + if ($orig_file_size % 5242880 > 0) $chunks++; + $hash = md5($file); + + $updraftplus->log("$whoweare upload ($region): $file (chunks: $chunks) -> $whoweare_key://$bucket_name/$bucket_path$file"); + + $filepath = $bucket_path.$file; + + // This is extra code for the 1-chunk case, but less overhead (no bothering with job data) + if ($chunks < 2) { + $s3->setExceptions(true); + try { + if (!$s3->putObjectFile($fullpath, $bucket_name, $filepath, 'private', array(), array(), apply_filters('updraft_'.$whoweare_key.'_storageclass', 'STANDARD', $s3, $config))) { + $updraftplus->log("$whoweare regular upload: failed ($fullpath)"); + $updraftplus->log("$file: ".sprintf(__('%s Error: Failed to upload','updraftplus'),$whoweare), 'error'); + } else { + $this->quota_used += $orig_file_size; + if (method_exists($this, 's3_record_quota_info')) $this->s3_record_quota_info($this->quota_used, $config['quota']); + $extra_log = ''; + if (method_exists($this, 's3_get_quota_info')) { + $extra_log = ', quota used now: '.round($this->quota_used / 1048576, 1).' MB'; + } + $updraftplus->log("$whoweare regular upload: success$extra_log"); + $updraftplus->uploaded_file($file); + } + } catch (Exception $e) { + $updraftplus->log("$file: ".sprintf(__('%s Error: Failed to upload','updraftplus'),$whoweare).": ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile()); + $updraftplus->log("$file: ".sprintf(__('%s Error: Failed to upload','updraftplus'),$whoweare), 'error'); + } + $s3->setExceptions(false); + } else { + + // Retrieve the upload ID + $uploadId = $updraftplus->jobdata_get("upd_${whoweare_keys}_${hash}_uid"); + if (empty($uploadId)) { + $s3->setExceptions(true); + try { + $uploadId = $s3->initiateMultipartUpload($bucket_name, $filepath, 'private', array(), array(), apply_filters('updraft_'.$whoweare_key.'_storageclass', 'STANDARD', $s3, $config)); + } catch (Exception $e) { + $updraftplus->log("$whoweare error whilst trying initiateMultipartUpload: ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')'); + $uploadId = false; + } + $s3->setExceptions(false); + + if (empty($uploadId)) { + $updraftplus->log("$whoweare upload: failed: could not get uploadId for multipart upload ($filepath)"); + $updraftplus->log(sprintf(__("%s upload: getting uploadID for multipart upload failed - see log file for more details",'updraftplus'),$whoweare), 'error'); + continue; + } else { + $updraftplus->log("$whoweare chunked upload: got multipart ID: $uploadId"); + $updraftplus->jobdata_set("upd_${whoweare_keys}_${hash}_uid", $uploadId); + } + } else { + $updraftplus->log("$whoweare chunked upload: retrieved previously obtained multipart ID: $uploadId"); + } + + $successes = 0; + $etags = array(); + for ($i = 1 ; $i <= $chunks; $i++) { + # Shorted to upd here to avoid hitting the 45-character limit + $etag = $updraftplus->jobdata_get("ud_${whoweare_keys}_${hash}_e$i"); + if (strlen($etag) > 0) { + $updraftplus->log("$whoweare chunk $i: was already completed (etag: $etag)"); + $successes++; + array_push($etags, $etag); + } else { + // Sanity check: we've seen a case where an overlap was truncating the file from underneath us + if (filesize($fullpath) < $orig_file_size) { + $updraftplus->log("$whoweare error: $key: chunk $i: file was truncated underneath us (orig_size=$orig_file_size, now_size=".filesize($fullpath).")"); + $updraftplus->log(sprintf(__('%s error: file %s was shortened unexpectedly', 'updraftplus'), $whoweare, $fullpath), 'error'); + } + $etag = $s3->uploadPart($bucket_name, $filepath, $uploadId, $fullpath, $i); + if ($etag !== false && is_string($etag)) { + $updraftplus->record_uploaded_chunk(round(100*$i/$chunks,1), "$i, $etag", $fullpath); + array_push($etags, $etag); + $updraftplus->jobdata_set("ud_${whoweare_keys}_${hash}_e$i", $etag); + $successes++; + } else { + $updraftplus->log("$whoweare chunk $i: upload failed"); + $updraftplus->log(sprintf(__("%s chunk %s: upload failed",'updraftplus'),$whoweare, $i), 'error'); + } + } + } + if ($successes >= $chunks) { + $updraftplus->log("$whoweare upload: all chunks uploaded; will now instruct $whoweare to re-assemble"); + + $s3->setExceptions(true); + try { + if ($s3->completeMultipartUpload($bucket_name, $filepath, $uploadId, $etags)) { + $updraftplus->log("$whoweare upload ($key): re-assembly succeeded"); + $updraftplus->uploaded_file($file); + $this->quota_used += $orig_file_size; + if (method_exists($this, 's3_record_quota_info')) $this->s3_record_quota_info($this->quota_used, $config['quota']); + } else { + $updraftplus->log("$whoweare upload ($key): re-assembly failed ($file)"); + $updraftplus->log(sprintf(__('%s upload (%s): re-assembly failed (see log for more details)','updraftplus'),$whoweare, $key), 'error'); + } + } catch (Exception $e) { + $updraftplus->log("$whoweare re-assembly error ($key): ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')'); + $updraftplus->log($e->getMessage().": ".sprintf(__('%s re-assembly error (%s): (see log file for more)','updraftplus'),$whoweare, $e->getMessage()), 'error'); + } + // Remember to unset, as the deletion code later reuses the object + $s3->setExceptions(false); + } else { + $updraftplus->log("$whoweare upload: upload was not completely successful on this run"); + } + } + } + + // Allows counting of the final quota accurately + if (method_exists($this, 's3_prune_retained_backups_finished')) { + add_action('updraftplus_prune_retained_backups_finished', array($this, 's3_prune_retained_backups_finished')); + } + + return array('s3_object' => $s3, 's3_orig_bucket_name' => $orig_bucket_name); + } else { + + $extra_text = empty($this->s3_exception) ? '' : ' '.$this->s3_exception->getMessage().' (line: '.$this->s3_exception->getLine().', file: '.$this->s3_exception->getFile().')'; + $extra_text_short = empty($this->s3_exception) ? '' : ' '.$this->s3_exception->getMessage(); + + $updraftplus->log("$whoweare Error: Failed to access bucket $bucket_name.".$extra_text); + $updraftplus->log(sprintf(__('%s Error: Failed to access bucket %s. Check your permissions and credentials.', 'updraftplus'), $whoweare, $bucket_name).$extra_text_short, 'error'); + } + } + + public function listfiles($match = 'backup_') { + $config = $this->get_config(); + return $this->listfiles_with_path($config['path'], $match); + } + + protected function possibly_wait_for_bucket_or_user($config, $s3) { + if (!empty($config['is_new_bucket'])) { + if (method_exists($s3, 'waitForBucket')) { + $s3->setExceptions(true); + try { + $s3->waitForBucket($bucket_name); + } catch (Exception $e) { + // This seems to often happen - we get a 403 on a newly created user/bucket pair, even though the bucket was already waited for by the creator + // We could just sleep() - a sleep(5) seems to do it. However, given that it's a new bucket, that's unnecessary. + $s3->setExceptions(false); + return array(); + } + $s3->setExceptions(false); + } else { + sleep(4); + } + } elseif (!empty($config['is_new_user'])) { + // A crude waiter, because the AWS toolkit does not have one for IAM propagation - basically, loop around a few times whilst the access attempt still fails + $attempt_flag = 0; + while ($attempt_flag < 5) { + + $attempt_flag++; + if (@$s3->getBucketLocation($bucket_name)) { + $attempt_flag = 100; + } else { + + sleep($attempt_flag*1.5 + 1); + + // Get the bucket object again... because, for some reason, the AWS PHP SDK (at least on the current version we're using, March 2016) calculates an incorrect signature on subsequent attempts + $this->s3_object = null; + $s3 = $this->getS3( + $config['accesskey'], + $config['secretkey'], + UpdraftPlus_Options::get_updraft_option('updraft_ssl_useservercerts'), UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify'), + UpdraftPlus_Options::get_updraft_option('updraft_ssl_nossl'), + null, + $sse + ); + + if (is_wp_error($s3)) return $s3; + if (!is_a($s3, 'UpdraftPlus_S3') && !is_a($s3, 'UpdraftPlus_S3_Compat')) return new WP_Error('no_s3object', 'Failed to gain access to '.$config['whoweare']); + + } + } + } + + return $s3; + } + + // The purpose of splitting this into a separate method, is to also allow listing with a different path + public function listfiles_with_path($path, $match = 'backup_', $include_subfolders = false) { + + $bucket_name = untrailingslashit($path); + $bucket_path = ''; + + if (preg_match("#^([^/]+)/(.*)$#", $bucket_name, $bmatches)) { + $bucket_name = $bmatches[1]; + $bucket_path = trailingslashit($bmatches[2]); + } + + $config = $this->get_config(); + + global $updraftplus; + + $whoweare = $config['whoweare']; + $whoweare_key = $config['key']; + $sse = empty($config['server_side_encryption']) ? false : true; + + $s3 = $this->getS3( + $config['accesskey'], + $config['secretkey'], + UpdraftPlus_Options::get_updraft_option('updraft_ssl_useservercerts'), UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify'), + UpdraftPlus_Options::get_updraft_option('updraft_ssl_nossl'), + null, + $sse + ); + + if (is_wp_error($s3)) return $s3; + if (!is_a($s3, 'UpdraftPlus_S3') && !is_a($s3, 'UpdraftPlus_S3_Compat')) return new WP_Error('no_s3object', 'Failed to gain access to '.$config['whoweare']); + + $s3 = $this->possibly_wait_for_bucket_or_user($config, $s3); + if (!is_a($s3, 'UpdraftPlus_S3') && !is_a($s3, 'UpdraftPlus_S3_Compat')) return $s3; + + list($s3, $bucket_exists, $region) = $this->get_bucket_access($s3, $config, $bucket_name, $bucket_path); + + /* + $region = ($config['key'] == 'dreamobjects' || $config['key'] == 's3generic') ? 'n/a' : @$s3->getBucketLocation($bucket_name); + if (!empty($region)) { + $this->set_region($s3, $region, $bucket_name); + } else { + # Final thing to attempt - see if it was just the location request that failed + $s3 = $this->use_dns_bucket_name($s3, $bucket_name); + if (false === ($gb = @$s3->getBucket($bucket_name, $bucket_path, null, 1))) { + $updraftplus->log("$whoweare Error: Failed to access bucket $bucket_name. Check your permissions and credentials."); + return new WP_Error('bucket_not_accessed', sprintf(__('%s Error: Failed to access bucket %s. Check your permissions and credentials.','updraftplus'),$whoweare, $bucket_name)); + } + } + */ + + $bucket = $s3->getBucket($bucket_name, $bucket_path.$match); + + if (!is_array($bucket)) return array(); + + $results = array(); + + foreach ($bucket as $key => $object) { + if (!is_array($object) || empty($object['name'])) continue; + if (isset($object['size']) && 0 == $object['size']) continue; + + if ($bucket_path) { + if (0 !== strpos($object['name'], $bucket_path)) continue; + $object['name'] = substr($object['name'], strlen($bucket_path)); + } else { + if (!$include_subfolders && false !== strpos($object['name'], '/')) continue; + } + + $result = array('name' => $object['name']); + if (isset($object['size'])) $result['size'] = $object['size']; + unset($bucket[$key]); + $results[] = $result; + } + + return $results; + + } + + public function delete($files, $s3arr = false, $sizeinfo = array()) { + + global $updraftplus; + if (is_string($files)) $files=array($files); + + $config = $this->get_config(); + $sse = (empty($config['server_side_encryption'])) ? false : true; + $whoweare = $config['whoweare']; + + if ($s3arr) { + $s3 = $s3arr['s3_object']; + $orig_bucket_name = $s3arr['s3_orig_bucket_name']; + } else { + + $s3 = $this->getS3( + $config['accesskey'], + $config['secretkey'], + UpdraftPlus_Options::get_updraft_option('updraft_ssl_useservercerts'), UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify'), + UpdraftPlus_Options::get_updraft_option('updraft_ssl_nossl'), + null, + $sse + ); + + if (is_wp_error($s3)) return $updraftplus->log_wp_error($s3, false, false); + + $bucket_name = untrailingslashit($config['path']); + $orig_bucket_name = $bucket_name; + + if (preg_match("#^([^/]+)/(.*)$#",$bucket_name,$bmatches)) { + $bucket_name = $bmatches[1]; + $bucket_path = $bmatches[2]."/"; + } else { + $bucket_path = ''; + } + + list($s3, $bucket_exists, $region) = $this->get_bucket_access($s3, $config, $bucket_name, $bucket_path); + + if (!$bucket_exists) { + $updraftplus->log("$whoweare Error: Failed to access bucket $bucket_name. Check your permissions and credentials."); + $updraftplus->log(sprintf(__('%s Error: Failed to access bucket %s. Check your permissions and credentials.','updraftplus'),$whoweare, $bucket_name), 'error'); + return false; + } + } + + $ret = true; + + foreach ($files as $i => $file) { + + if (preg_match("#^([^/]+)/(.*)$#", $orig_bucket_name, $bmatches)) { + $s3_bucket=$bmatches[1]; + $s3_uri = $bmatches[2]."/".$file; + } else { + $s3_bucket = $orig_bucket_name; + $s3_uri = $file; + } + $updraftplus->log("$whoweare: Delete remote: bucket=$s3_bucket, URI=$s3_uri"); + + $s3->setExceptions(true); + try { + if (!$s3->deleteObject($s3_bucket, $s3_uri)) { + $updraftplus->log("$whoweare: Delete failed"); + } elseif (null !== $this->quota_used && !empty($sizeinfo[$i]) && isset($config['quota']) && method_exists($this, 's3_record_quota_info')) { + $this->quota_used -= $sizeinfo[$i]; + $this->s3_record_quota_info($this->quota_used, $config['quota']); + } + } catch (Exception $e) { + $updraftplus->log("$whoweare delete failed: ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')'); + $s3->setExceptions(false); + $ret = false; + } + $s3->setExceptions(false); + + } + + return $ret; + + } + + public function download($file) { + + global $updraftplus; + + $config = $this->get_config(); + $whoweare = $config['whoweare']; + $sse = empty($config['server_side_encryption']) ? false : true; + + $s3 = $this->getS3( + $config['accesskey'], + $config['secretkey'], + UpdraftPlus_Options::get_updraft_option('updraft_ssl_useservercerts'), UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify'), + UpdraftPlus_Options::get_updraft_option('updraft_ssl_nossl'), + null, + $sse + ); + if (is_wp_error($s3)) return $updraftplus->log_wp_error($s3, false, true); + + $bucket_name = untrailingslashit($config['path']); + $bucket_path = ""; + + if (preg_match("#^([^/]+)/(.*)$#", $bucket_name, $bmatches)) { + $bucket_name = $bmatches[1]; + $bucket_path = $bmatches[2]."/"; + } + + + list($s3, $bucket_exists, $region) = $this->get_bucket_access($s3, $config, $bucket_name, $bucket_path); + + if ($bucket_exists) { + + $fullpath = $updraftplus->backups_dir_location().'/'.$file; + + $file_info = $this->listfiles($file); + + if (is_array($file_info)) { + foreach ($file_info as $finfo) { + if ($finfo['name'] == $file) { + $file_size = $finfo['size']; + break; + } + } + } + + if (!isset($file_size)) { + $updraftplus->log("$whoweare Error: Failed to download $file. Check your permissions and credentials. Retrieved data: ".serialize($file_info)); + $updraftplus->log(sprintf(__('%s Error: Failed to download %s. Check your permissions and credentials.','updraftplus'),$whoweare, $file), 'error'); + return false; + } + + return $updraftplus->chunked_download($file, $this, $file_size, true, $s3, $this->download_chunk_size); + + /* + // The code before we switched to chunked downloads. Unfortunately the version of the AWS SDK we have to use for PHP 5.3 compatibility doesn't have callbacks, which makes it possible for multiple downloaders to start at once and over-write each-other. + if (!$s3->getObject($bucket_name, $bucket_path.$file, $fullpath, true)) { + $updraftplus->log("$whoweare Error: Failed to download $file. Check your permissions and credentials."); + $updraftplus->log(sprintf(__('%s Error: Failed to download %s. Check your permissions and credentials.','updraftplus'),$whoweare, $file), 'error'); + return false; + } + */ + + } else { + $updraftplus->log("$whoweare Error: Failed to access bucket $bucket_name. Check your permissions and credentials."); + $updraftplus->log(sprintf(__('%s Error: Failed to access bucket %s. Check your permissions and credentials.','updraftplus'),$whoweare, $bucket_name), 'error'); + return false; + } + return true; + + } + + public function chunked_download($file, $headers, $s3, $fh) { + + global $updraftplus; + + $resume = false; + $config = $this->get_config(); + $whoweare = $config['whoweare']; + + $bucket_name = untrailingslashit($config['path']); + $bucket_path = ""; + + if (preg_match("#^([^/]+)/(.*)$#", $bucket_name, $bmatches)) { + $bucket_name = $bmatches[1]; + $bucket_path = $bmatches[2]."/"; + } + + if (is_array($headers) && !empty($headers['Range']) && preg_match('/bytes=(\d+)-(\d+)$/', $headers['Range'], $matches)) { + $resume = $headers['Range']; + } + + if (!$s3->getObject($bucket_name, $bucket_path.$file, $fh, $resume)) { + $updraftplus->log("$whoweare Error: Failed to download $file. Check your permissions and credentials."); + $updraftplus->log(sprintf(__('%s Error: Failed to download %s. Check your permissions and credentials.','updraftplus'),$whoweare, $file), 'error'); + return false; + } + + // This instructs the caller to look at the file pointer's position (i.e. ftell($fh)) to work out how many bytes were written. + return true; + + } + + public function config_print() { + + # White: https://d36cz9buwru1tt.cloudfront.net/Powered-by-Amazon-Web-Services.jpg + $this->config_print_engine('s3', 'S3', 'Amazon S3', 'AWS', 'https://aws.amazon.com/console/', 'Amazon Web Services'); + + } + + public function config_print_engine($key, $whoweare_short, $whoweare_long, $console_descrip, $console_url, $img_html = '', $include_endpoint_chooser = false) { + + $opts = $this->get_config(); + ?> + + +

        + Cloudian, '; + echo 'Connectria, '; + echo 'Constant, '; + echo 'Eucalyptus, '; + echo 'Nifty, '; + echo 'Cloudn'; + echo ''.__('... and many more!', 'updraftplus').'
        '; + } + ?> + + + + + + indicate_s3_class(); + + if ('UpdraftPlus_S3_Compat' == $use_s3_class && !class_exists('XMLWriter')) { + $updraftplus_admin->show_double_warning(''.__('Warning', 'updraftplus').': '. sprintf(__("Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it.", 'updraftplus'), 'XMLWriter')); + } + + if (!class_exists('SimpleXMLElement')) { + $updraftplus_admin->show_double_warning(''.__('Warning', 'updraftplus').': '.sprintf(__("Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support.", 'updraftplus'), 'SimpleXMLElement').' '.sprintf(__("UpdraftPlus's %s module requires %s. Please do not file any support requests; there is no alternative.", 'updraftplus'),$whoweare_long, 'SimpleXMLElement'), $key); + } + $updraftplus_admin->curl_check($whoweare_long, true, $key); + ?> + + + + + + +

        + from your %s console, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist.','updraftplus'), $console_url, $console_descrip, $whoweare_long);?> + + "> + + "> +

        + + + + : + + + + + + + + + =') && class_exists('UpdraftPlus_Addon_S3_Enhanced')) { ?> + + + '.__('To create a new IAM sub-user and access key that has access only to this bucket, use this add-on.', 'updraftplus').''); ?> + + + + + : + + + + : + + + + : + :// + + + + +

        + + + credentials_test_engine($this->get_config(), $posted_settings); + } + + // This is not pretty, but is the simplest way to accomplish the task within the pre-existing structure (no need to re-invent the wheel of code with corner-cases debugged over years) + public function use_dns_bucket_name($s3, $bucket) { + return is_a($s3, 'UpdraftPlus_S3_Compat') ? true : $s3->useDNSBucketName(true, $bucket); + } + + // This method contains some repeated code. After getting an S3 object, it's time to see if we can access that bucket - either immediately, or via creating it, etc. + private function get_bucket_access($s3, $config, $bucket, $path, $endpoint = false) { + + $bucket_exists = false; + + if ('s3' == $config['key'] || 'updraftvault' == $config['key'] || 'dreamobjects' == $config['key']) { + + $s3->setExceptions(true); + + if ('dreamobjects' == $config['key']) $this->set_region($s3, $endpoint); + + try { + $region = @$s3->getBucketLocation($bucket); + // We want to distinguish between an empty region (null), and an exception or missing bucket (false) + if (empty($region) && $region !== false) $region = null; + } catch (Exception $e) { + $region = false; + } + $s3->setExceptions(false); + } else { + $region = 'n/a'; + } + + // See if we can detect the region (which implies the bucket exists and is ours), or if not create it + if (false === $region) { + + $s3->setExceptions(true); + try { + if (@$s3->putBucket($bucket, 'private')) { + $bucket_exists = true; + } + + } catch (Exception $e) { + $this->s3_exception = $e; + try { + if ('s3' == $config['key'] && $this->use_dns_bucket_name($s3, $bucket) && false !== @$s3->getBucket($bucket, $path, null, 1)) { + $bucket_exists = true; + } + } catch (Exception $e) { + + // We don't put this in a separate catch block, since we need to be compatible with PHP 5.2 still + if (is_a($s3, 'UpdraftPlus_S3_Compat') && is_a($e, 'Aws\S3\Exception\S3Exception')) { + $xml = $e->getResponse()->xml(); + + if (!empty($xml->Code) && 'AuthorizationHeaderMalformed' == $xml->Code && !empty($xml->Region)) { + + $this->set_region($s3, $xml->Region); + $s3->setExceptions(false); + + if (false !== @$s3->getBucket($bucket, $path, null, 1)) { + $bucket_exists = true; + } + + } else { + $this->s3_exception = $e; + } + } else { + $this->s3_exception = $e; + } + } + + } + $s3->setExceptions(false); + + } else { + $bucket_exists = true; + } + + if ($bucket_exists) { + if ('s3' != $config['key'] && 'updraftvault' != $config['key']) { + $this->set_region($s3, $endpoint, $bucket); + } elseif (!empty($region)) { + $this->set_region($s3, $region, $bucket); + } + } + + return array($s3, $bucket_exists, $region); + + } + + public function credentials_test_engine($config, $posted_settings) { + + if (empty($posted_settings['apikey'])) { + printf(__("Failure: No %s was given.",'updraftplus'),__('API key','updraftplus')); + return; + } + if (empty($posted_settings['apisecret'])) { + printf(__("Failure: No %s was given.",'updraftplus'),__('API secret','updraftplus')); + return; + } + + $key = $posted_settings['apikey']; + $secret = stripslashes($posted_settings['apisecret']); + $path = $posted_settings['path']; + $useservercerts = isset($posted_settings['useservercerts']) ? absint($posted_settings['useservercerts']) : 0; + $disableverify = isset($posted_settings['disableverify']) ? absint($posted_settings['disableverify']) : 0; + $nossl = isset($posted_settings['nossl']) ? absint($posted_settings['nossl']) : 0; + $endpoint = isset($posted_settings['endpoint']) ? $posted_settings['endpoint'] : ''; + $sse = empty($posted_settings['sse']) ? false : true; + + if (preg_match("#^/*([^/]+)/(.*)$#", $path, $bmatches)) { + $bucket = $bmatches[1]; + $path = trailingslashit($bmatches[2]); + } else { + $bucket = $path; + $path = ""; + } + + if (empty($bucket)) { + _e("Failure: No bucket details were given.",'updraftplus'); + return; + } + $whoweare = $config['whoweare']; + + $s3 = $this->getS3($key, $secret, $useservercerts, $disableverify, $nossl, null, $sse); + if (is_wp_error($s3)) { + foreach ($s3->get_error_messages() as $msg) { + echo $msg."\n"; + } + return; + } + + list($s3, $bucket_exists, $region) = $this->get_bucket_access($s3, $config, $bucket, $path, $endpoint); + + $bucket_verb = ''; + if ($region && 'n/a' != $region) { + if ('s3' == $config['key']) { + $bucket_verb = __('Region', 'updraftplus').": $region: "; + } + } + + if (empty($bucket_exists)) { + + printf(__("Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name).",'updraftplus'), $whoweare); + + if (!empty($this->s3_exception)) echo "\n\n".sprintf(__('The error reported by %s was:', 'updraftplus'), $whoweare).' '.$this->s3_exception; + if ('s3' == $config['key'] && 'AK' != substr($key, 0, 2)) echo "\n\n".sprintf(__('The AWS access key looks to be wrong (valid %s access keys begin with "AK")', 'updraftplus'), $whoweare); + + } else { + + $try_file = md5(rand()); + + $s3->setExceptions(true); + try { + if (!$s3->putObjectString($try_file, $bucket, $path.$try_file)) { + echo __('Failure','updraftplus').": ${bucket_verb}".__('We successfully accessed the bucket, but the attempt to create a file in it failed.','updraftplus'); + } else { + echo __('Success', 'updraftplus').": ${bucket_verb}".__('We accessed the bucket, and were able to create files within it.','updraftplus').' '; + $comm_with = ($config['key'] == 's3generic') ? $endpoint : $config['whoweare_long']; + if ($s3->getuseSSL()) { + echo sprintf(__('The communication with %s was encrypted.', 'updraftplus'), $comm_with); + } else { + echo sprintf(__('The communication with %s was not encrypted.', 'updraftplus'), $comm_with); + } + $create_success = true; + } + } catch (Exception $e) { + echo __('Failure','updraftplus').": ${bucket_verb}".__('We successfully accessed the bucket, but the attempt to create a file in it failed.','updraftplus').' '.__('Please check your access credentials.','updraftplus').' ('.$e->getMessage().')'; + } + + if (!empty($create_success)) { + try { + @$s3->deleteObject($bucket, $path.$try_file); + } catch (Exception $e) { + echo ' '.__('Delete failed:', 'updraftplus').' '.$e->getMessage(); + } + } + + } + + } + +} diff --git a/plugins/updraftplus/methods/s3generic.php b/plugins/updraftplus/methods/s3generic.php new file mode 100644 index 0000000..4ac0271 --- /dev/null +++ b/plugins/updraftplus/methods/s3generic.php @@ -0,0 +1,56 @@ + UpdraftPlus_Options::get_updraft_option('updraft_s3generic_login'), + 'secretkey' => UpdraftPlus_Options::get_updraft_option('updraft_s3generic_pass'), + 'path' => UpdraftPlus_Options::get_updraft_option('updraft_s3generic_remote_path'), + 'endpoint' => UpdraftPlus_Options::get_updraft_option('updraft_s3generic_endpoint') + ); + UpdraftPlus_Options::update_updraft_option('updraft_s3generic', $opts); + UpdraftPlus_Options::delete_updraft_option('updraft_s3generic_login'); + UpdraftPlus_Options::delete_updraft_option('updraft_s3generic_pass'); + UpdraftPlus_Options::delete_updraft_option('updraft_s3generic_remote_path'); + UpdraftPlus_Options::delete_updraft_option('updraft_s3generic_endpoint'); +} + +class UpdraftPlus_BackupModule_s3generic extends UpdraftPlus_BackupModule_s3 { + + protected function set_region($obj, $region = '', $bucket_name = '') { + $config = $this->get_config(); + $endpoint = ($region != '' && $region != 'n/a') ? $region : $config['endpoint']; + global $updraftplus; + if ($updraftplus->backup_time) $updraftplus->log("Set endpoint: $endpoint"); + $obj->setEndpoint($endpoint); + } + + public function get_credentials() { + return array('updraft_s3generic'); + } + + protected function get_config() { + global $updraftplus; + $opts = $updraftplus->get_job_option('updraft_s3generic'); + if (!is_array($opts)) $opts = array('accesskey' => '', 'secretkey' => '', 'path' => ''); + $opts['whoweare'] = 'S3'; + $opts['whoweare_long'] = __('S3 (Compatible)', 'updraftplus'); + $opts['key'] = 's3generic'; + return $opts; + } + + public function config_print() { + // 5th parameter = control panel URL + // 6th = image HTML + $this->config_print_engine('s3generic', 'S3', __('S3 (Compatible)', 'updraftplus'), 'S3', '', '', true); + } + + public function credentials_test($posted_settings) { + $this->credentials_test_engine($this->get_config(), $posted_settings); + } + +} diff --git a/plugins/updraftplus/methods/sftp.php b/plugins/updraftplus/methods/sftp.php new file mode 100644 index 0000000..dfe45b8 --- /dev/null +++ b/plugins/updraftplus/methods/sftp.php @@ -0,0 +1,11 @@ +log("my log message") to log things, which greatly helps debugging +- UpdraftPlus is licenced under the GPLv3 or later. In order to combine your backup method with UpdraftPlus, you will need to licence to anyone and everyone that you distribute it to in a compatible way. + +*/ + +if (!defined('UPDRAFTPLUS_DIR')) die('No direct access allowed.'); + +class UpdraftPlus_BackupModule_template { + + // backup method: takes an array, and shovels them off to the cloud storage + public function backup($backup_array) { + + global $updraftplus; + + foreach ($backup_array as $file) { + + // Do our uploading stuff... + + // If successful, then you must do this: + // $updraftplus->uploaded_file($file); + + } + + } + + # $match: a substring to require (tested via strpos() !== false) + public function listfiles($match = 'backup_') { + # This function needs to return an array of arrays. The keys for the sub-arrays are name (a path-less filename, i.e. a basename), (optional)size, and should be a list of matching files from the storage backend. A WP_Error object can also be returned; and the error code should be no_settings if that is relevant. + return array(); + } + + // delete method: takes an array of file names (base name) or a single string, and removes them from the cloud storage + public function delete($files, $data = false, $sizeinfo = array()) { + + global $updraftplus; + + if (is_string($files)) $files = array($files); + + } + + // download method: takes a file name (base name), and brings it back from the cloud storage into Updraft's directory + // You can register errors with $updraftplus->log("my error message", 'error') + public function download($file) { + + global $updraftplus; + + } + + // config_print: prints out table rows for the configuration screen + // Your rows need to have a class exactly matching your method (in this example, template), and also a class of updraftplusmethod + // Note that logging is not available from this context; it will do nothing. + public function config_print() { + + ?> + + My Method: + + + + + + get_job_option('updraft_updraftvault'); + if (!is_array($opts)) $opts = array('token' => '', 'email' => '', 'quota' => -1); + return $opts; + } + + public function get_credentials() { + return array('updraft_updraftvault'); + } + + protected function vault_set_config($config) { + $config['whoweare'] = 'Updraft Vault'; + $config['whoweare_long'] = __('Updraft Vault', 'updraftplus'); + $config['key'] = 'updraftvault'; + $this->vault_config = $config; + } + + protected function get_config() { + + global $updraftplus; + + // Have we already done this? + if (!empty($this->vault_config)) return $this->vault_config; + + // Stored in the job? + if ($job_config = $updraftplus->jobdata_get('updraftvault_config')) { + if (!empty($job_config) && is_array($job_config)) { + $this->vault_config = $job_config; + return $job_config; + } + } + + // Pass back empty settings, if nothing better can be found - this ensures that the error eventually is raised in the right place + $config = array('accesskey' => '', 'secretkey' => '', 'path' => ''); + $config['whoweare'] = 'Updraft Vault'; + $config['whoweare_long'] = __('Updraft Vault', 'updraftplus'); + $config['key'] = 'updraftvault'; + + // Get the stored options + $opts = $this->get_opts(); + + if (!is_array($opts) || empty($opts['token']) || empty($opts['email'])) { + // Not connected + $updraftplus->log("UpdraftPlus Vault: this site has not been connected - check your settings"); + $this->vault_config = $config; + $updraftplus->jobdata_set('updraftvault_config', $config); + return $config; + } + + $site_id = $updraftplus->siteid(); + + $updraftplus->log("UpdraftPlus Vault: requesting access details (sid=$site_id, email=".$opts['email'].")"); + + // Request the credentials using our token + $post_body = array( + 'e' => (string)$opts['email'], + 'sid' => $site_id, + 'token' => (string)$opts['token'], + 'su' => base64_encode(home_url()) + ); + + if (!empty($this->vault_in_config_print)) { + // In this case, all that the get_config() is being done for is to get the quota info. Send back the cached quota info instead (rather than have an HTTP trip every time the settings page is loaded). The config will get updated whenever there's a backup, or the user presses the link to update. + $getconfig = get_transient('udvault_last_config'); + } + + // Use SSL to prevent snooping + if (empty($getconfig) || !is_array($getconfig)) { + $getconfig = wp_remote_post($this->vault_mothership.'/?udm_action=vault_getconfig', array( + 'timeout' => 25, + 'body' => $post_body, + )); + } + + $details_retrieved = false; + + if (!is_wp_error($getconfig) && false != $getconfig && isset($getconfig['body'])) { + + $response_code = wp_remote_retrieve_response_code($getconfig); + + if ($response_code >= 200 && $response_code < 300) { + $response = json_decode(wp_remote_retrieve_body($getconfig), true); + + if (is_array($response) && isset($response['user_messages']) && is_array($response['user_messages'])) { + foreach ($response['user_messages'] as $message) { + if (!is_array($message)) continue; + $msg_txt = $this->vault_translate_remote_message($message['message'], $message['code']); + $updraftplus->log($msg_txt, $message['level'], $message['code']); + } + } + + if (is_array($response) && isset($response['accesskey']) && isset($response['secretkey']) && isset($response['path'])) { + $details_retrieved = true; + $opts['last_config']['accesskey'] = $response['accesskey']; + $opts['last_config']['secretkey'] = $response['secretkey']; + $opts['last_config']['path'] = $response['path']; + unset($opts['last_config']['quota_root']); + if (!empty($response['quota_root'])) { + $opts['last_config']['quota_root'] = $response['quota_root']; + $config['quota_root'] = $response['quota_root']; + $opts['quota_root'] = $response['quota_root']; + } + $opts['last_config']['time'] = time(); + // This is just a cache of the most recent setting + if (isset($response['quota'])) { + $opts['quota'] = $response['quota']; + $config['quota'] = $response['quota']; + } + UpdraftPlus_Options::update_updraft_option('updraft_updraftvault', $opts); + $config['accesskey'] = $response['accesskey']; + $config['secretkey'] = $response['secretkey']; + $config['path'] = $response['path']; + } elseif (is_array($response) && isset($response['result']) && ('token_unknown' == $response['result'] || 'site_duplicated' == $response['result'])) { + $updraftplus->log("This site appears to not be connected to UpdraftPlus Vault (".$response['result'].")"); + $config['accesskey'] = ''; + $config['secretkey'] = ''; + $config['path'] = ''; + unset($config['quota']); + if (!empty($response['message'])) $config['error_message'] = $response['message']; + $details_retrieved = true; + } else { + if (is_array($response) && !empty($response['result'])) { + $msg = "UpdraftVault response code: ".$response['result']; + if (!empty($response['code'])) $msg .= " (".$response['code'].")"; + if (!empty($response['message'])) $msg .= " (".$response['message'].")"; + if (!empty($response['data'])) $msg .= " (".json_encode($response['data']).")"; + $updraftplus->log($msg); +// if ('token_unknown' == $response['result']) { +// } elseif ('db_error' == $response['result']) { +// } elseif ('url_error' == $response['result']) { +// } + } else { + $updraftplus->log("Received response, but it was not in the expected format: ".substr(wp_remote_retrieve_body($getconfig), 0, 100).' ...'); + } + } + } else { + $updraftplus->log("Unexpected HTTP response code (please try again later): ".$response_code); + } + } elseif (is_wp_error($getconfig)) { + $updraftplus->log_wp_error($getconfig); + } else { + if (!isset($getconfig['accesskey'])) { + $updraftplus->log("Vault: wp_remote_post returned a result that was not understood (".gettype($getconfig).")"); + } + } + + if (!$details_retrieved) { + // Don't log anything yet, as this will replace the most recently logged message in the main panel + if (!empty($opts['last_config']) && is_array($opts['last_config'])) { + $last_config = $opts['last_config']; + if (!empty($last_config['time']) && is_numeric($last_config['time']) && $last_config['time'] > time() - 86400*15) { + if ($updraftplus->backup_time) $updraftplus->log("UpdraftPlus Vault: failed to retrieve access details from updraftplus.com: will attempt to use most recently stored configuration"); + if (!empty($last_config['accesskey'])) $config['accesskey'] = $last_config['accesskey']; + if (!empty($last_config['secretkey'])) $config['secretkey'] = $last_config['secretkey']; + if (isset($last_config['path'])) $config['path'] = $last_config['path']; + if (isset($opts['quota'])) $config['quota'] = $opts['quota']; + } else { + if ($updraftplus->backup_time) $updraftplus->log("UpdraftPlus Vault: failed to retrieve access details from updraftplus.com: no recently stored configuration was found to use instead"); + } + } + } + + $config['server_side_encryption'] = 'AES256'; + + $this->vault_config = $config; + $updraftplus->jobdata_set('updraftvault_config', $config); + set_transient('udvault_last_config', $config, 86400*7); + return $config; + } + + public function vault_translate_remote_message($message, $code) { + switch ($code) { + case 'premium_overdue': + return __('Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer.', 'updraftplus'); + break; + case 'vault_subscription_overdue': + return __('You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!', 'updraftplus'); + break; + case 'vault_subscription_suspended': + return __("You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible.", 'updraftplus'); + // The following shouldn't be a possible response (the server can deal with duplicated sites with the same IDs) - but there's no harm leaving it in for now (Dec 2015) + // This means that the site is accessing with a different home_url() than it was registered with. + case 'site_duplicated': + return __('No Vault connection was found for this site (has it moved?); please disconnect and re-connect.', 'updraftplus'); + break; + } + return $message; + } + + public function config_print() { + + // Used to decide whether we can afford HTTP calls or not, or would prefer to rely on cached data + $this->vault_in_config_print = true; + + $shop_url_base = $this->get_url(); + $get_more_quota = $this->get_url('get_more_quota'); + + $vault_settings = UpdraftPlus_Options::get_updraft_option('updraft_updraftvault'); + $connected = (is_array($vault_settings) && !empty($vault_settings['token']) && !empty($vault_settings['email'])) ? true : false; + ?> + + + + + show_double_warning(''.__('Warning', 'updraftplus').': '.sprintf(__("Your web server's PHP installation does not included a required (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it.", 'updraftplus'), 'UpdraftPlus Vault', 'SimpleXMLElement'), 'updraftvault'); + } + + $updraftplus_admin->curl_check('UpdraftPlus Vault', false, 'updraftvault', true); + ?> + + + + + + + + + + + + + vault_in_config_print = false; + + } + + private function connected_html($vault_settings = false) { + if (!is_array($vault_settings)) { + $vault_settings = UpdraftPlus_Options::get_updraft_option('updraft_updraftvault'); + } + if (!is_array($vault_settings) || empty($vault_settings['token']) || empty($vault_settings['email'])) return '

        '.__('You are not connected to UpdraftPlus Vault.', 'updraftplus').'

        '; + + $ret = '

        '; + + $ret .= __('This site is connected to UpdraftPlus Vault.', 'updraftplus').' '.__("Well done - there's nothing more needed to set up.", 'updraftplus').'

        '.__('Vault owner', 'updraftplus').': '.htmlspecialchars($vault_settings['email']); + + $ret .= '
        '.__('Quota:', 'updraftplus').' '; + if (!isset($vault_settings['quota']) || !is_numeric($vault_settings['quota']) || $vault_settings['quota'] < 0) { + $ret .= __('Unknown', 'updraftplus'); + } else { + $ret .= $this->s3_get_quota_info('text', $vault_settings['quota']); + } + $ret .= '

        '; + + $ret .= '

        '; + + return $ret; + } + + protected function s3_out_of_quota($total, $used, $needed) { + global $updraftplus; + $updraftplus->log("UpdraftPlus Vault Error: Quota exhausted (used=$used, total=$total, needed=$needed)"); + $updraftplus->log(sprintf(__('%s Error: you have insufficient storage quota available (%s) to upload this archive (%s).','updraftplus'), 'UpdraftPlus Vault', round(($total-$used)/1048576, 2).' MB', round($needed/1048576, 2).' MB').' '.__('You can get more quota here', 'updraftplus').': '.$this->get_url('get_more_quota'), 'error'); + } + + protected function s3_record_quota_info($quota_used, $quota) { + + $ret = __('Current use:', 'updraftplus').' '.round($quota_used / 1048576, 1).' / '.round($quota / 1048576, 1).' MB'; + $ret .= ' ('.sprintf('%.1f', 100*$quota_used / max($quota, 1)).' %)'; + + $ret .= ' - '.__('Get more quota', 'updraftplus').''; + + $ret_dashboard = $ret . ' - '.__('Refresh current status', 'updraftplus').''; + + set_transient('updraftvault_quota_text', $ret_dashboard, 86400*3); + + } + + public function s3_prune_retained_backups_finished() { + $config = $this->get_config(); + $quota = $config['quota']; + $quota_used = $this->s3_get_quota_info('numeric', $config['quota']); + + $ret = __('Current use:', 'updraftplus').' '.round($quota_used / 1048576, 1).' / '.round($quota / 1048576, 1).' MB'; + $ret .= ' ('.sprintf('%.1f', 100*$quota_used / max($quota, 1)).' %)'; + + $ret_plain = $ret . ' - '.__('Get more quota', 'updraftplus').': '.$this->get_url('get_more_quota'); + + $ret .= ' - '.__('Get more quota', 'updraftplus').''; + + do_action('updraft_report_remotestorage_extrainfo', 'updraftvault', $ret, $ret_plain); + } + + // Valid formats: text|numeric + // In numeric, returns an integer or false for an error (never returns an error) + protected function s3_get_quota_info($format = 'numeric', $quota = 0) { + $ret = ''; + + if ($quota > 0) { + + if (!empty($this->vault_in_config_print) && 'text' == $format) { + $quota_via_transient = get_transient('updraftvault_quota_text'); + if (is_string($quota) && $quota) return $quota; + } + + try { + + $config = $this->get_config(); + + if (empty($config['quota_root'])) { + // This next line is wrong: it lists the files *in this site's sub-folder*, rather than the whole Vault + $current_files = $this->listfiles(''); + } else { + $current_files = $this->listfiles_with_path($config['quota_root'], '', true); + } + + } catch (Exception $e) { + global $updraftplus; + $updraftplus->log("Listfiles failed during quota calculation: ".$e->getMessage()); + $current_files = new WP_Error('listfiles_exception', $e->getMessage().' ('.get_class($e).')'); + } + + $ret .= __('Current use:', 'updraftplus').' '; + + $counted = false; + if (is_wp_error($current_files)) { + $ret .= __('Error:', 'updraftplus').' '.$current_files->get_error_message().' ('.$current_files->get_error_code().')'; + } elseif (!is_array($current_files)) { + $ret .= __('Unknown', 'updraftplus'); + } else { + foreach ($current_files as $file) { + $counted += $file['size']; + } + $ret .= round($counted / 1048576, 1); + $ret .= ' / '.round($quota / 1048576, 1).' MB'; + $ret .= ' ('.sprintf('%.1f', 100*$counted / $quota).' %)'; + } + } else { + $ret .= '0'; + } + + $ret .= ' - '.__('Get more quota', 'updraftplus').' - '.__('Refresh current status', 'updraftplus').''; + + if ('text' == $format) set_transient('updraftvault_quota_text', $ret, 86400*3); + + return ('text' == $format) ? $ret : $counted; + } + + public function credentials_test($posted_settings) { + $this->credentials_test_engine($this->get_config(), $posted_settings); + } + + public function ajax_vault_recountquota($echo_results = true) { + // Force the opts to be refreshed + $config = $this->get_config(); + + if (empty($config['accesskey']) && !empty($config['error_message'])) { + $results = array('html' => htmlspecialchars($config['error_message']), 'connected' => 0); + } else { + // Now read the opts + $opts = $this->get_opts(); + $results = array('html' => $this->connected_html($opts), 'connected' => 1); + } + if ($echo_results) { + echo json_encode($results); + } else { + return $results; + } + } + + // This method also gets called directly, so don't add code that assumes that it's definitely an AJAX situation + public function ajax_vault_disconnect($echo_results = true) { + $vault_settings = UpdraftPlus_Options::get_updraft_option('updraft_updraftvault'); + UpdraftPlus_Options::update_updraft_option('updraft_updraftvault', array()); + global $updraftplus; + + delete_transient('udvault_last_config'); + delete_transient('updraftvault_quota_text'); + + $response = array('disconnected' => 1, 'html' => $this->connected_html()); + + if ($echo_results) { + $updraftplus->close_browser_connection(json_encode($response)); + } + + // If $_POST['reset_hash'] is set, then we were alerted by updraftplus.com - no need to notify back + if (is_array($vault_settings) && isset($vault_settings['email']) && empty($_POST['reset_hash'])) { + + $post_body = array( + 'e' => (string)$vault_settings['email'], + 'sid' => $updraftplus->siteid(), + 'su' => base64_encode(home_url()) + ); + + if (!empty($vault_settings['token'])) $post_body['token'] = (string)$vault_settings['token']; + + // Use SSL to prevent snooping + wp_remote_post($this->vault_mothership.'/?udm_action=vault_disconnect', array( + 'timeout' => 20, + 'body' => $post_body, + )); + } + + return $response; + + } + + // This is called from the UD admin object + public function ajax_vault_connect($echo_results = true, $use_credentials = false) { + + if (empty($use_credentials)) $use_credentials = $_REQUEST; + + $connect = $this->vault_connect($use_credentials['email'], $use_credentials['pass']); + if (true === $connect) { + $response = array('connected' => true, 'html' => $this->connected_html(false)); + } else { + $response = array( + 'e' => __('An unknown error occurred when trying to connect to UpdraftPlus.Com', 'updraftplus') + ); + if (is_wp_error($connect)) { + $response['e'] = $connect->get_error_message(); + $response['code'] = $connect->get_error_code(); + $response['data'] = serialize($connect->get_error_data()); + } + } + + if ($echo_results) { + echo json_encode($response); + } else { + return $response; + } + } + + // Returns either true (in which case the Vault token will be stored), or false|WP_Error + private function vault_connect($email, $password) { + + // Username and password set up? + if (empty($email) || empty($password)) return new WP_Error('blank_details', __('You need to supply both an email address and a password', 'updraftplus')); + + global $updraftplus; + + // Use SSL to prevent snooping + $result = wp_remote_post($this->vault_mothership.'/?udm_action=vault_connect', + array( + 'timeout' => 20, + 'body' => array( + 'e' => $email, + 'p' => base64_encode($password), + 'sid' => $updraftplus->siteid(), + 'su' => base64_encode(home_url()) + ) + ) + ); + + if (is_wp_error($result) || false === $result) return $result; + + $response = json_decode(wp_remote_retrieve_body($result), true); + + if (!is_array($response) || !isset($response['mothership']) || !isset($response['loggedin'])){ + + if (preg_match('/has banned your IP address \(([\.:0-9a-f]+)\)/', $result['body'], $matches)){ + return new WP_Error('banned_ip', sprintf(__("UpdraftPlus.com has responded with 'Access Denied'.", 'updraftplus').'
        '.__("It appears that your web server's IP Address (%s) is blocked.", 'updraftplus').' '.__('This most likely means that you share a webserver with a hacked website that has been used in previous attacks.', 'updraftplus').'
        '.__('To remove the block, please go here.', 'updraftplus').' ', $matches[1])); + } else { + return new WP_Error('unknown_response', sprintf(__('UpdraftPlus.Com returned a response which we could not understand (data: %s)', 'updraftplus'), wp_remote_retrieve_body($result))); + } + } + + switch ($response['loggedin']) { + case 'connected': + if (!empty($response['token'])) { + // Store it + $vault_settings = UpdraftPlus_Options::get_updraft_option('updraft_updraftvault'); + if (!is_array($vault_settings)) $vault_settings = array(); + $vault_settings['email'] = $email; + $vault_settings['token'] = (string)$response['token']; + $vault_settings['quota'] = -1; + unset($vault_settings['last_config']); + if (isset($response['quota'])) $vault_settings['quota'] = $response['quota']; + UpdraftPlus_Options::update_updraft_option('updraft_updraftvault', $vault_settings); + if (!empty($response['config']) && is_array($response['config'])) { + if (!empty($response['config']['accesskey'])) { + $this->vault_set_config($response['config']); + } elseif (!empty($response['config']['result']) && ('token_unknown' == $response['config']['result'] || 'site_duplicated' == $response['config']['result'])) { + return new WP_Error($response['config']['result'], $this->vault_translate_remote_message($response['config']['message'], $response['config']['result'])); + } + // else... would also be an error condition, but not one known possible (and it will show a generic error anyway) + } + } elseif (isset($response['quota']) && !$response['quota']) { + return new WP_Error('no_quota', __('You do not currently have any UpdraftPlus Vault quota', 'updraftplus')); + } else { + return new WP_Error('unknown_response', __('UpdraftPlus.Com returned a response, but we could not understand it', 'updraftplus')); + } + break; + case 'authfailed': + + if (!empty($response['authproblem'])) { + if ('invalidpassword' == $response['authproblem']) { + $authfail_error = new WP_Error('authfailed', __('Your email address was valid, but your password was not recognised by UpdraftPlus.Com.', 'updraftplus').' '.__('If you have forgotten your password, then go here to change your password on updraftplus.com.', 'updraftplus').''); + return $authfail_error; + } elseif ('invaliduser' == $response['authproblem']) { + return new WP_Error('authfailed', __('You entered an email address that was not recognised by UpdraftPlus.Com', 'updraftplus')); + } + } + + return new WP_Error('authfailed', __('Your email address and password were not recognised by UpdraftPlus.Com', 'updraftplus')); + break; + + default: + return new WP_Error('unknown_response', __('UpdraftPlus.Com returned a response, but we could not understand it', 'updraftplus')); + break; + } + + return true; + + } + +} diff --git a/plugins/updraftplus/methods/viaaddon-base.php b/plugins/updraftplus/methods/viaaddon-base.php new file mode 100644 index 0000000..7d49420 --- /dev/null +++ b/plugins/updraftplus/methods/viaaddon-base.php @@ -0,0 +1,104 @@ +method = $method; + $this->description = $description; + $this->required_php = $required_php; + $this->image = $image; + $this->error_msg = 'This remote storage method ('.$this->description.') requires PHP '.$this->required_php.' or later'; + $this->error_msg_trans = sprintf(__('This remote storage method (%s) requires PHP %s or later.', 'updraftplus'), $this->description, $this->required_php); + } + + public function action_handler($action = '') { + return apply_filters('updraft_'.$this->method.'_action_'.$action, null); + } + + public function backup($backup_array) { + + global $updraftplus; + + if (!class_exists('UpdraftPlus_Addons_RemoteStorage_'.$this->method)) { + $updraftplus->log("You do not have the UpdraftPlus ".$this->method.' add-on installed - get it from '.apply_filters("updraftplus_com_link", "https://updraftplus.com/shop/").''); + $updraftplus->log(sprintf(__('You do not have the UpdraftPlus %s add-on installed - get it from %s','updraftplus'), $this->description ,''.apply_filters("updraftplus_com_link", "https://updraftplus.com/shop/").''), 'error', 'missingaddon-'.$this->method); + return false; + } + + return apply_filters('updraft_'.$this->method.'_upload_files', null, $backup_array); + + } + + public function delete($files, $method_obj = false, $sizeinfo = array()) { + + global $updraftplus; + + if (!class_exists('UpdraftPlus_Addons_RemoteStorage_'.$this->method)) { + $updraftplus->log('You do not have the UpdraftPlus '.$this->method.' add-on installed - get it from '.apply_filters("updraftplus_com_link", "https://updraftplus.com/shop/").''); + $updraftplus->log(sprintf(__('You do not have the UpdraftPlus %s add-on installed - get it from %s','updraftplus'), $this->description, ''.apply_filters("updraftplus_com_link", "https://updraftplus.com/shop/").''), 'error', 'missingaddon-'.$this->method); + return false; + } + + return apply_filters('updraft_'.$this->method.'_delete_files', false, $files, $method_obj, $sizeinfo); + + } + + public function listfiles($match = 'backup_') { + return apply_filters('updraft_'.$this->method.'_listfiles', new WP_Error('no_addon', sprintf(__('You do not have the UpdraftPlus %s add-on installed - get it from %s','updraftplus'), $this->description, ''.apply_filters("updraftplus_com_link", "https://updraftplus.com/shop/").'')), $match); + } + + // download method: takes a file name (base name), and removes it from the cloud storage + public function download($file) { + + global $updraftplus; + + if (!class_exists('UpdraftPlus_Addons_RemoteStorage_'.$this->method)) { + $updraftplus->log('You do not have the UpdraftPlus '.$this->method.' add-on installed - get it from '.apply_filters("updraftplus_com_link", "https://updraftplus.com/shop/").''); + $updraftplus->log(sprintf(__('You do not have the UpdraftPlus %s add-on installed - get it from %s','updraftplus'), $this->description, ''.apply_filters("updraftplus_com_link", "https://updraftplus.com/shop/").''), 'error', 'missingaddon-'.$this->method); + return false; + } + + return apply_filters('updraft_'.$this->method.'_download_file', false, $file); + + } + + public function config_print() { + + $link = sprintf(__('%s support is available as an add-on','updraftplus'), $this->description).' - method."/").'">'.__('follow this link to get it','updraftplus'); + + $default = ' + + '.$this->description.': + '.((!empty($this->image)) ? '

        ' : '').$link.'
        + '; + + if (version_compare(phpversion(), $this->required_php, '<')) { + $default .= ' + + + + '.htmlspecialchars($this->error_msg_trans).' + '.htmlspecialchars(__('You will need to ask your web hosting company to upgrade.', 'updraftplus')).' + '.sprintf(__('Your %s version: %s.', 'updraftplus'), 'PHP', phpversion()).' + + + '; + } + + echo apply_filters('updraft_'.$this->method.'_config_print', $default); + } + + public function config_print_javascript_onready() { + do_action('updraft_'.$this->method.'_config_javascript'); + } + + public function credentials_test($posted_settings) { + do_action('updraft_'.$this->method.'_credentials_test', $posted_settings); + } + +} diff --git a/plugins/updraftplus/methods/webdav.php b/plugins/updraftplus/methods/webdav.php new file mode 100644 index 0000000..92c304f --- /dev/null +++ b/plugins/updraftplus/methods/webdav.php @@ -0,0 +1,11 @@ + $v) { + if ($first_one) { + $first_one = false; + } else { + $page .= '&'; + } + $page .= urlencode($k).'='.urlencode($v); + } + } + + if ($page) echo ' action="'.$page.'"'; + + if (!$allow_autocomplete) echo ' autocomplete="off"'; + echo '>'; + if ($settings_fields) { + // This is settings_fields('updraft-options-group'), but with the referer pruned + echo ""; + echo ''; + // $action = -1, $name = "_wpnonce", $referer = true , $echo = true + wp_nonce_field("updraft-options-group-options", '_wpnonce', false); + + $remove_query_args = array('state', 'action', 'updraftcopycomparms', 'oauth_verifier'); + + // wp_unslash() does not exist until after WP 3.5 + if (function_exists('wp_unslash')) { + $referer = wp_unslash( remove_query_arg( $remove_query_args, $_SERVER['REQUEST_URI']) ); + } else { + $referer = stripslashes_deep( remove_query_arg( $remove_query_args, $_SERVER['REQUEST_URI']) ); + } + + // Add back the page parameter if it looks like we were on the settings page via an OAuth callback that has now had all parameters removed. This is likely unnecessarily conservative, but there's nothing requiring more than this at the current time. + if (substr($referer, -19, 19) == 'options-general.php' && false !== strpos($_SERVER['REQUEST_URI'], '?')) $referer .= '?page=updraftplus'; + + $referer_field = ''; + echo $referer_field; + } + } + + public static function admin_init() { + + static $already_inited = false; + if ($already_inited) return; + + $already_inited = true; + + // If being called outside of the admin context, this may not be loaded yet + if (!function_exists('register_setting')) include_once(ABSPATH.'wp-admin/includes/plugin.php'); + + global $updraftplus, $updraftplus_admin; + register_setting('updraft-options-group', 'updraft_interval', array($updraftplus, 'schedule_backup') ); + register_setting('updraft-options-group', 'updraft_interval_database', array($updraftplus, 'schedule_backup_database') ); + register_setting('updraft-options-group', 'updraft_interval_increments'); + register_setting('updraft-options-group', 'updraft_retain', array($updraftplus, 'retain_range') ); + register_setting('updraft-options-group', 'updraft_retain_db', array($updraftplus, 'retain_range') ); + register_setting('updraft-options-group', 'updraft_retain_extrarules' ); + + register_setting('updraft-options-group', 'updraft_encryptionphrase'); + register_setting('updraft-options-group', 'updraft_service', array($updraftplus, 'just_one')); + + register_setting('updraft-options-group', 'updraft_s3', array($updraftplus, 's3_sanitise')); + register_setting('updraft-options-group', 'updraft_ftp', array($updraftplus, 'ftp_sanitise')); + register_setting('updraft-options-group', 'updraft_dreamobjects'); + register_setting('updraft-options-group', 'updraft_s3generic'); + register_setting('updraft-options-group', 'updraft_cloudfiles'); + register_setting('updraft-options-group', 'updraft_bitcasa', array($updraftplus, 'bitcasa_checkchange')); + register_setting('updraft-options-group', 'updraft_copycom', array($updraftplus, 'copycom_checkchange')); + register_setting('updraft-options-group', 'updraft_openstack'); + register_setting('updraft-options-group', 'updraft_dropbox', array($updraftplus, 'dropbox_checkchange')); + register_setting('updraft-options-group', 'updraft_googledrive', array($updraftplus, 'googledrive_checkchange')); + register_setting('updraft-options-group', 'updraft_onedrive', array($updraftplus, 'onedrive_checkchange')); + register_setting('updraft-options-group', 'updraft_azure', array($updraftplus, 'azure_checkchange')); + register_setting('updraft-options-group', 'updraft_googlecloud', array($updraftplus, 'googlecloud_checkchange')); + + register_setting('updraft-options-group', 'updraft_sftp_settings'); + register_setting('updraft-options-group', 'updraft_webdav_settings', array($updraftplus, 'construct_webdav_url')); + + register_setting('updraft-options-group', 'updraft_ssl_nossl', 'absint'); + register_setting('updraft-options-group', 'updraft_log_syslog', 'absint'); + register_setting('updraft-options-group', 'updraft_ssl_useservercerts', 'absint'); + register_setting('updraft-options-group', 'updraft_ssl_disableverify', 'absint'); + + register_setting('updraft-options-group', 'updraft_split_every', array($updraftplus_admin, 'optionfilter_split_every') ); + + register_setting('updraft-options-group', 'updraft_dir', array($updraftplus_admin, 'prune_updraft_dir_prefix') ); + register_setting('updraft-options-group', 'updraft_email', array($updraftplus, 'just_one_email')); + + register_setting('updraft-options-group', 'updraft_report_warningsonly', array($updraftplus_admin, 'return_array')); + register_setting('updraft-options-group', 'updraft_report_wholebackup', array($updraftplus_admin, 'return_array')); + + register_setting('updraft-options-group', 'updraft_autobackup_default', 'absint' ); + register_setting('updraft-options-group', 'updraft_delete_local', 'absint' ); + register_setting('updraft-options-group', 'updraft_debug_mode', 'absint' ); + register_setting('updraft-options-group', 'updraft_extradbs'); + register_setting('updraft-options-group', 'updraft_backupdb_nonwp', 'absint'); + + register_setting('updraft-options-group', 'updraft_include_plugins', 'absint' ); + register_setting('updraft-options-group', 'updraft_include_themes', 'absint' ); + register_setting('updraft-options-group', 'updraft_include_uploads', 'absint' ); + register_setting('updraft-options-group', 'updraft_include_others', 'absint' ); + register_setting('updraft-options-group', 'updraft_include_wpcore', 'absint' ); + register_setting('updraft-options-group', 'updraft_include_wpcore_exclude', array($updraftplus, 'strip_dirslash')); + register_setting('updraft-options-group', 'updraft_include_more', 'absint' ); + register_setting('updraft-options-group', 'updraft_include_more_path', array($updraftplus, 'remove_empties')); + register_setting('updraft-options-group', 'updraft_include_uploads_exclude', array($updraftplus, 'strip_dirslash')); + register_setting('updraft-options-group', 'updraft_include_others_exclude', array($updraftplus, 'strip_dirslash')); + + register_setting('updraft-options-group', 'updraft_starttime_files', array('UpdraftPlus_Options', 'hourminute') ); + register_setting('updraft-options-group', 'updraft_starttime_db', array('UpdraftPlus_Options', 'hourminute') ); + + register_setting('updraft-options-group', 'updraft_startday_files', array('UpdraftPlus_Options', 'week_or_month_day') ); + register_setting('updraft-options-group', 'updraft_startday_db', array('UpdraftPlus_Options', 'week_or_month_day') ); + + global $pagenow; + if (is_multisite() && $pagenow == 'options-general.php' && isset($_REQUEST['page']) && 'updraftplus' == substr($_REQUEST['page'], 0, 11)) { + add_action('all_admin_notices', array('UpdraftPlus_Options', 'show_admin_warning_multisite') ); + } + } + + public static function hourminute($pot) { + if (preg_match("/^([0-2]?[0-9]):([0-5][0-9])$/", $pot, $matches)) return sprintf("%02d:%s", $matches[1], $matches[2]); + if ('' == $pot) return date('H:i', time()+300); + return '00:00'; + } + + public static function week_or_month_day($pot) { + $pot = absint($pot); + return ($pot>28) ? 1 : $pot; + } + + public static function show_admin_warning_multisite() { + global $updraftplus_admin; + $updraftplus_admin->show_admin_warning(''.__('UpdraftPlus warning:', 'updraftplus').' '.__('This is a WordPress multi-site (a.k.a. network) installation.', 'updraftplus').' '.__('WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on.', 'updraftplus').' '.__('Without upgrading, UpdraftPlus allows every blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) the entire network.', 'updraftplus').' '.__('(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility).', 'updraftplus'), 'error'); + } + +} + +add_action('admin_init', array('UpdraftPlus_Options', 'admin_init')); +add_action('admin_menu', array('UpdraftPlus_Options', 'add_admin_pages')); diff --git a/plugins/updraftplus/readme.txt b/plugins/updraftplus/readme.txt new file mode 100644 index 0000000..aaf0e62 --- /dev/null +++ b/plugins/updraftplus/readme.txt @@ -0,0 +1,363 @@ +=== UpdraftPlus WordPress Backup Plugin === +Contributors: Backup with UpdraftPlus, DavidAnderson, DNutbourne, aporter, snightingale +Tags: backup, backups, restore, amazon backup, s3 backup, dropbox backup, google drive backup, rackspace cloud files, rackspace backup, dreamhost, dreamobjects backup, ftp backup, webdav backup, google cloud storage, onedrive, azure, back up, multisite, restoration, sftp backup, ftps, scp backup, migrate, duplicate, copy, mysql backup, database backup, db backups, website backup, wordpress backup, full backup, openstack backup, sicherung +Requires at least: 3.2 +Tested up to: 4.6 +Stable tag: 1.12.29 +Author URI: https://updraftplus.com +Donate link: http://david.dw-perspective.org.uk/donate +License: GPLv3 or later + +Backup and restoration made easy. Complete backups; manual or scheduled (backup to S3, Dropbox, Google Drive, Rackspace, FTP, SFTP, email + others). + +== Description == + +UpdraftPlus simplifies backups (and restoration). Backup into the cloud (Amazon S3 (or compatible), Dropbox, Google Drive, Rackspace Cloud, DreamObjects, FTP, Openstack Swift, UpdraftPlus Vault and email) and restore with a single click. Backups of files and database can have separate schedules. The paid version also backs up to Microsoft OneDrive, Microsoft Azure, Google Cloud Storage, SFTP, SCP, and WebDAV. + +Top-quality: UpdraftPlus is the highest-ranking backup plugin on wordpress.org, with over 800,000 currently active installs. Widely tested and reliable, this is the world's #1 most popular and mostly highly rated scheduled backup plugin. Millions of backups completed! + +[vimeo https://vimeo.com/154870690] + +* Supports WordPress backups to UpdraftPlus Vault, Amazon S3 (or compatible), Dropbox, Rackspace Cloud Files, Google Drive, Google Cloud Storage, DreamHost DreamObjects, FTP, OpenStack (Swift) and email. Also (via a paid add-on) backup to Microsoft OneDrive, Microsoft Azure, Google Cloud Storage, FTP over SSL, SFTP, SCP, and WebDAV (and compatible services, e.g. Yandex, Cubby, OwnCloud). Examples of S3-compatible providers: Cloudian, Connectria, Constant, Eucalyptus, Nifty, Nimbula, Cloudn. +* Quick restore (both file and database backups) +* Backup automatically on a repeating schedule +* Site duplicator/migrator: can copy sites, and (with add-on) duplicate them at new locations +* Restores and migrates backup sets from other backup plugins (Premium) (currently supported: BackWPUp, BackupWordPress, Simple Backup, WordPress Backup To Dropbox) +* Files and database backups can have separate schedules +* Remotely control your backups on every site from a single dashboard with UpdraftCentral - hosted for you or self-hosted +* Failed uploads are automatically resumed/retried +* Large sites can be split into multiple archives +* Select which files to backup (plugins, themes, content, other) +* Select which components of a backup to restore +* Download backup archives direct from your WordPress dashboard +* Database backups can be encrypted for security (Premium) +* Debug mode - full logging of the backup +* Internationalised (translations welcome - see below) +* Premium version and support available (including free remote backup storage) - https://updraftplus.com +* Supported on all current PHP versions (5.2 - 7.0) + +From our YouTube channel, here's how to install: + +https://www.youtube.com/watch?v=7ReY7Z19h2I&rel=0 + += Don't risk your backups on anything less = + +Your WordPress backups are worth the same as your entire investment in your website. The day may come when you get hacked, or your hosting company does, or they go bust - without good backups, you lose everything. Do you really want to entrust all your work to a backup plugin with only a few thousand downloads, or that has no professional backup or support? Believe us - writing a reliable backup plugin that works consistently across the huge range of WordPress deployments is hard. + += UpdraftPlus Premium = + +UpdraftPlus Backup/Restore is not crippled in any way - it is fully functional for backing up and restoring your site. What we do have is various extra features (including site cloning), and guaranteed support, available from our website, updraftplus.com. See a comparison of the free/Premium versions, here. + +If you need WordPress multisite backup compatibility (you'll know if you do), then you need UpdraftPlus Premium. + += UpdraftCentral - Remote control = + +As well as controlling your backups from within WordPress, you can also control all your sites' backups from a single dashboard, with UpdraftCentral. UpdraftCentral can control both free and Premium versions of UpdraftPlus, and comes in two versions: + +* Hosted dashboard: a ready-to-go dashboard on updraftplus.com, with 5 free licences for everyone (read more here). +* Host your own: Host the dashboard on your own WP install, with the free self-install plugin + += Professional / Enterprise support agreements available = + +UpdraftPlus Backup/Restore is written by professional WordPress developers. If your site needs guaranteed support, then we are available. Just go to our shop. + += More premium plugins = + +If you are in the market for other WordPress premium plugins (especially WooCommerce addons), then try our shop, here: https://www.simbahosting.co.uk/s3/shop/ + += Are you multi-lingual? Can you translate? = + +Are you able to translate UpdraftPlus into another language? Are you ready to help speakers of your language? UpdraftPlus Backup/Restore itself is ready and waiting - the only work needed is the translating. The translation process is easy, and web-based - go here for instructions: https://updraftplus.com/translate/. (Or if you're an expert WordPress translator already, then just pick out the .pot file from the wp-content/plugins/updraftplus/languages/ directory - if you scan for translatable strings manually, then you need to get these functions: _x(), __(), _e(), _ex(), log_e()). + +Many thanks to the existing translators - listed at: https://updraftplus.com/translate/ + += Other support = + +We hang out in the WordPress support forum for this plugin - https://wordpress.org/support/plugin/updraftplus - however, to save time so that we can spend it on development, please read the plugin's FAQs - https://updraftplus.com/support/frequently-asked-questions/ - before going there, and ensure that you have updated to the latest released version of UpdraftPlus backup/restore. + +== Installation == + +Full instructions for installing this plugin. + +== Frequently Asked Questions == + +Please go here for the full FAQs - there are many more than below. Below are just a handful which particularly apply to the free wordpress.org version, or which bear repeating. + += Can UpdraftPlus do (something)? = + +Check out our full list of features, and our add-ons shop and free/Premium comparison table. + += I found a bug. What do I do? = + +Note - this FAQ is for users of the free plugin. If you're a paying customer, then you should go here: https://updraftplus.com/support/ - please don't ask question in the WordPress.Org forum about purchases, as that's against their rules. + +Next, please make sure you read this FAQ through - it may already have the answer you need. If it does, then please consider a donation (e.g. buy our "No Adverts" add-on - https://updraftplus.com/shop/); it takes time to develop this plugin and FAQ. + +If it does not, then contact us (the forum is the best way)! This is a complex backup plugin and the only way we can ensure it's robust is to get bug reports and fix the problems that crop up. Please make sure you are using the latest version of the plugin, and that you include the version in your bug report - if you are not using the latest, then the first thing you will be asked to do is upgrade. + +Please include the backup log if you can find it (there are links to download logs on the UpdraftPlus settings page; or you may be emailed it; failing that, it is in the directory wp-content/updraft, so FTP in and look for it there). If you cannot find the log, then I may not be able to help so much, but you can try - include as much information as you can when reporting (PHP version, your blog's site, the error you saw and how you got to the page that caused it, any other relevant plugins you have installed, etcetera). http://pastebin.com is a good place to post the log. + +If you know where to find your PHP error logs (often a file called error_log, possibly in your wp-admin directory (check via FTP)), then that's even better (don't send multi-megabytes; just send the few lines that appear when you run a backup, if any). + +If you are a programmer and can debug and send a patch, then that's even better. + += Anything essential to know? = + +After you have set up UpdraftPlus, you must check that your WordPress backups are taking place successfully. WordPress is a complex piece of software that runs in many situations. Don't wait until you need your backups before you find out that they never worked in the first place. Remember, there's no warranty and no guarantees - this is free software. + += My enormous website is hosted by a dirt-cheap provider who starve my account of resources, and UpdraftPlus runs out of time! Help! Please make UpdraftPlus deal with this situation so that I can save two dollars! = + +UpdraftPlus supports resuming backup runs right from the beginning, so that it does not need to do everything in a single go; but this has limits. If your website is huge and your web hosting company gives your tiny resources on an over-loaded server, then go into the "Expert settings" and reduce the size at which zip files are split (versions 1.6.53 onwards). UpdraftPlus is known to successfully back up websites that run into the multiple-gigabytes on web servers that are not resource-starved. + += My site was hacked, and I have no backups! I thought UpdraftPlus was working! Can I kill you? = + +No, there's no warranty or guarantee, etc. It's completely up to you to verify that UpdraftPlus is creating your backups correctly. If it doesn't then that's unfortunate, but this is a free plugin. + += I am not running the most recent version of UpdraftPlus. Should I upgrade? = + +Yes; especially before you submit any support requests. + += Do you have any other free plugins? = + +Thanks for asking; yes, we've got a few. Check out this profile page - https://profiles.wordpress.org/DavidAnderson/ . + +== Changelog == + +The UpdraftPlus backup blog is the best place to learn in more detail about any important changes. + +N.B. Paid versions of UpdraftPlus Backup / Restore have a version number which is 1 higher in the first digit, and has an extra component on the end, but the changelog below still applies. i.e. changes listed for 1.12.24 of the free version correspond to changes made in 2.12.24.x of the paid version. + +1.12.29 - 22/Nov/2016 + +* FIX: Fix a PHP error in the notices code (regression in 1.12.28) + +1.12.28 - 21/Nov/2016 + +* TWEAK: The UPDRAFTPLUS_DROPBOX_API_V1 constant will be ignored from 28th June 2017 (when Dropbox turn off that API entirely) +* TWEAK: A new internal infrastructure for handling user-visible notices in the dashboard and reports +* TWEAK: Small layout tweak to fix a malformatted error message + +1.12.27 - 17/Nov/2016 + +* FIX: The WP 4.7 compatibility tweak in 1.12.26 introduced a regression that caused the question to appear when unwanted on other WP versions. + +1.12.26 - 16/Nov/2016 + +* COMPATIBILITY: On WordPress 4.7, the behaviour of shiny updates has changed, necessitating a small tweak to prevent an unwanted "do you really want to move away from this page?" question from the browser on the updates/plugins pages in some situations. +* TWEAK: When the Dropbox quota state seems to imply that the next upload will fail, do not register this as an error before it actually happens. +* TWEAK: When an error occurs when re-scanning Dropbox, make sure the error details are logged in the browser developer console +* FIX: Fix ability to rescan a Dropbox sub-folder (regression in 1.12.25) + += 1.12.25 - 12/Nov/2016 = + +* COMPATIBILITY: Dropbox APIv2 capability (see: https://updraftplus.com/dropbox-api-version-1-deprecation/) in 1.12.24 was not complete - this release now avoids all APIv1 use +* TWEAK: The 'site information' advanced tool now contains information on loaded Apache modules. +* TWEAK: Small layout tweak to fix a malformatted error message + += 1.12.24 - 08/Nov/2016 = + +* FIX: When importing a single site into a multisite install as a new site (experimental feature), the main multisite URL was being incorrectly adjusted +* FIX: Fix a bug with remote scans not returning more database archives correctly +* COMPATIBILITY: Add Dropbox APIv2 capability (see: https://updraftplus.com/dropbox-api-version-1-deprecation/) +* FEATURE: Look for mysqldump.exe in likely locations on Windows, for faster database backups +* TWEAK: UpdraftVault, Amazon S3 and DreamObjects downloaders have been rewritten without race conditions +* TWEAK: Introduce an abstraction layer for reporting on the status of restore operations +* TWEAK: Deleting remote backup sets from the dashboard is now batched for sets with many archives, to avoid potential PHP timeouts on slow remote services +* TWEAK: Updated bundled phpseclib library to version 1.0.4 +* TWEAK: Introduce an internal templating layer, for improved long-term maintainability +* TWEAK: When importing a single site into a multisite install as a new site, remove any cron entries for backup runs on the new site +* TWEAK: Fix an inconsequential off-by-one in the chunked downloading algorithm so that the behaviour is as documented +* TWEAK: Improve accessibility of Labelauty components with keyboard navigation +* TWEAK: Tweak the algorithm for scheduling resumptions, to improve efficiency in the (once) seen corner-case of PHP usually having a predictable run-time, but with an instance of a much longer run-time +* TWEAK: Slightly more logging when an S3 error condition occurs, allowing easier diagnosis +* TWEAK: Add support for the new US East (Ohio) region to S3 +* TWEAK: OneDrive authentication can now detect a block by CloudFlare, and direct the user accordingly +* TWEAK: If there are remote storage methods needing authentication, then pop up a box showing this to the user - so that it does not rely on them spotting the dashboard notice or having read the instructions + += 1.12.23 - 04/Oct/2016 = + +* FIX: Fix a bug in URL replacement when cloning from a flat configuration to a WP-in-own-directory configuration +* FIX: The button for testing connections to extra databases added to the backup was not working +* FIX: Direct dashboard logins from UpdraftCentral were not working on WP 3.2 - 3.4 sites +* COMPATIBILITY: Will upgrade Dropbox OAuthv1 tokens to OAuthv2 (to handle Dropbox API v1 deprecation in summer 2017) +* TWEAK: Deleting an already-deleted backup set from UpdraftCentral now produces a more informative error message +* TWEAK: When restoring only a single site out of a multisite install, store less data in memory on irrelevant tables, and do less logging when skipping tables +* TWEAK: Update bundled UDRPC library to version 1.4.9 - fixes a bug with the admin URL used for contact via UpdraftCentral on multisite +* TWEAK: Explicitly store the UpdraftPlus object as a global +* TWEAK: Prevent a pointless "unsaved settings" warning if settings were changed then the 'wipe' button used +* TWEAK: When using the Importer add-on, allow backups from WordPress Backup to Dropbox to be wrapped in an extra 'wpb2d' folder +* TWEAK: Strengthen protections against resuming an already-complete backup after migration on servers with misbehaving WP schedulers +* TWEAK: Touch already-existing but incomplete files being downloaded, to reduce possibility of two processes downloading at once +* TWEAK: Add a link to more information about UpdraftCentral in the advanced tool +* TWEAK: The UPDRAFTPLUS_MYSQLDUMP_EXECUTABLE define can now be used on Windows (you will need to define a path to take advantage of it) +* TWEAK: Introduce the UPDRAFTPLUS_SKIP_CPANEL_QUOTA_CHECK constant to allow skipping of trying to check cPanel quota + += 1.12.21 - 08/Sep/2016 = + +* FIX: Fix a bug in the updater code that caused updates checks to be run more often than intended +* TWEAK: Improve/tidy layout of the "Advanced Tools" tab +* TWEAK: Make it more obvious in the file uploading widget when an upload is 100% complete +* TWEAK: Prevent spurious OneDrive message being shown when re-scanning remote storage and not using OneDrive +* TWEAK: OneDrive storage now uses the refresh token yes frequently (less HTTP calls) + += 1.12.20 - 29/Aug/2016 = + +* FEATURE: OpenStack uploads (including Rackspace Cloudfiles) can now adapt their upload rate to network conditions, leading to much faster uploads on many networks +* FEATURE: Updated the OneDrive configuration to make it easier to setup. A custom Microsoft Developer App is no longer required +* FEATURE: The "Advanced Tools" tab now has tools for importing and exporting settings +* TWEAK: Honour the "do not verify SSL certificates" setting with WebDAV storage on PHP 5.6+ +* TWEAK: When there's a connection problem to updraftplus.com when claiming licences, provide more error info and guidance +* TWEAK: In particular circumstances (malfunctioning WP scheduler, expert option to keep backups after despatching remotely selected (non-default)), zips could be sent to Google Drive more than once +* TWEAK: Tweak issue in 1.12.18 with automatic backup pop-up appearing under another pop-up if you update themes via the themes pop-up (instead of the direct link) +* TWEAK: When rescanning remote storage, don't log a potentially confusing message for an unconfigured storage module +* TWEAK: Show a visual indicator and advice if an invalid hostname is entered for WebDAV +* TWEAK: Removed the no-longer-useful debug backup buttons +* TWEAK: Add a message when generating a key on a server without php-openssl, with information about how to make it faster +* TWEAK: Prevent PHP installs which print PHP logging information to the browser from messing up the WebDAV settings in some situations +* TWEAK: If PHP reports the current memory limit as a non-positive integer, do not display any message to the user about a low memory limit +* TWEAK: If the user deletes their Google API project, then show clearer information on what to do when a backup fails +* TWEAK: If you changed your OneDrive client ID, UD will now more clearly advise you of the need to re-authenticate +* COMPATABILITY: Updated the OneDrive authentication procedure to make it compatible with the new Microsoft Developer Apps + += 1.12.18 - 03/Aug/2016 = + +* TWEAK: When Microsoft OneDrive quota is insufficient, the advisory message from UD now includes the available quota (as well as the used) +* FEATURE: The Azure add-on/Premium now supports new-style Azure storage, as well as classic +* FEATURE: The Rackspace enhanced wizard can now be accessed via UpdraftCentral +* TWEAK: Fix a regression in recent WP versions which caused remote keys to not always be retained after a migration +* TWEAK: When logging Azure upload locations, include the account name +* TWEAK: Make the entering of settings for WebDAV more user-friendly +* TWEAK: Update bundled select2 to version 4.0.3 +* TWEAK: Clarify error message when a 'more files' location is not found +* TWEAK: Add redirection_404 to the list of tables likely to be large, and not needing search/replacing +* COMPATIBILITY: Compatible with WP 4.6 (previous paid versions have incompatibilities with the changes made to 'shiny updates/installs/deletes' in WP 4.6) + += 1.12.17 - 19/Jul/2016 = + +* FIX: Previous free release included empty translation files +* TWEAK: Add 'snapshots' to the default list of directories to exclude from the uploads backup (is used by another backup plugin - avoid backups-of-backups) +* TWEAK: Add et_bloom_stats to the list of tables likely to be large, and not needing search/replacing + += 1.12.16 - 07/Jul/2016 = + +* TWEAK: Log FTP progress upload less often (slight resource usage improvement) +* TWEAK: For multi-archive backup sets, the HTML title attribute of download buttons had unnecessary duplicated information +* TWEAK: Improve OneDrive performance by cacheing directory listings +* TWEAK: Detect and handle a case in which OneDrive incorrectly reports a file as incompletely uploaded +* FIX: OneDrive scanning of large directories for existing backup sets was only detecting the first 200 files + += 1.12.15 - 06/Jul/2016 = + +* TWEAK: S3 now supports the new Mumbai region +* TWEAK: If the user enters an AWS/S3 access key that looks prima facie invalid, then mention this in the error output +* TWEAK: Make the message that the user is shown in the case of no network connectivity to updraftplus.com when connecting for updates (paid versions) clearer +* TWEAK: Extend cacheing of enumeration of uploads that was introduced in 1.11.1 to other data in wp-content also +* TWEAK: Avoid fatal error in Migrator if running via WP-CLI with the USER environment variable unset +* TWEAK: When DB_CHARSET is defined but empty, treat it the same as if undefined +* TWEAK: Add updraftplus_remotesend_udrpc_object_obtained action hook, allowing customisation of HTTP transport options for remote sending +* TWEAK: Introduced new UPDRAFTPLUS_RESTORE_ALL_SETTINGS constant to assist in complicated load-balancing setups with duplicate install on the same URL +* TWEAK: Update bundled tripleclick script to fix bug in teardown handler +* TWEAK: Update bundled UDRPC library to version 1.4.8 +* TWEAK: Patch Labelauty to be friendly to screen-readers +* TWEAK: Suppress the UD updates check on paid versions that immediately follows a WP automatic core security update +* TWEAK: Handle missing UpdraftCentral command classes more elegantly +* FEATURE: Endpoint handlers for forthcoming updates and user mangement features in UpdraftCentral +* TRANSLATIONS: Remove bundled German (de_DE) translation, since this is now retrieved from wordpress.org +* FIX: Fix inaccurate reporting of the current Vault quota usage in the report email +* FIX: Fix logic errors in processing return codes when no direct MySQL/MySQLi connection was possible in restoring that could cause UpdraftPlus to wrongly conclude that restoring was not possible + += 1.12.13 - 07/Jun/2016 = + +* TWEAK: Default the S3 secret key field type to 'password' instead of 'text' +* TWEAK: Do more checks for active output buffers prior to spooling files to the browser (to prevent memory overflows) +* TWEAK: Update bundled UDRPC library to version 1.4.7 + += 1.12.12 - 25/May/2016 = + +* FIX: When restoring a plugins backup on multisite, old plugins were inactivated but not always removed +* TWEAK: Use POST instead of GET for OneDrive token requests - some new accounts seem to have begun requiring this +* TWEAK: When backing up user-configured directories, don't log confusing/misleading messages for unzippable directory symlinks +* TRANSLATIONS: wordpress.org is now serving up translations for fr_FR, pt_PT and ro_RO, so these can/have been removed from the plugin zip (1.2Mb released) + += 1.12.11 - 19/May/2016 = + +* FIX: 1.12.8 (paid versions only) contained a regression that prevented S3 access if the user had a custom policy that did not include location permission. This fix means that the work-around of adding that permission to the policy is no longer required. +* FIX: Fix a regression in 1.12.8 that prevented non-existent DreamObjects buckets from being created +* FIX: Fix inaccurate reporting of the current Vault quota usage in the report email since 1.12.8 +* FIX: The short-lived 1.12.10 had a duplicate copy of the plugin in the release zip +* TWEAK: Detect a particular obscure PHP bug in some versions that is triggered by the Amazon S3 SDK, and automatically switch to the older SDK if it is hit (N.B. Not compatible with Frankfurt region). +* TWEAK: Audit/update all use of wp_remote_ functions to reflect API changes in the upcoming WP 4.6 +* TWEAK: Tweak to the settings saving, to avoid a false-positive trigger of a particular rule found in some mod_security installs +* TWEAK Update bundled UDRPC library to version 1.4.5 + += 1.12.9 - 11/May/2016 = + +* FIX: In yesterday's 1.12.8, some previously accessible Amazon S3 buckets could no longer be accessed + += 1.12.8 - 10/May/2016 = + +* FEATURE: Support S3's "infrequent access" storage class (Premium) +* FIX: Fix bug in SFTP uploading algorithm that would corrupt archives if a resumption was necessary +* TWEAK: Add information on UpdraftVault quota to reporting emails +* TWEAK: Update the bundled AWS library to version 2.8.30 +* TWEAK: Update the bundled Symfony library to version 2.8.5 +* TWEAK: Update the bundled phpseclib library to version 1.0.2 (which includes a fix for SFTP on PHP 5.3) +* TWEAK: Improve the overlapping runs detection when writing out individual database tables, for helping servers with huge tables without mysqldump +* TWEAK: Prevent restoration from replacing the local record of keys of remote sites to send backups to (Migrator add-on) +* TWEAK: Re-order the classes in class-zip.php, to help misbehaving XCache (and perhaps other opcode cache) instances +* TWEAK: Do not include transient update availability data in the backup (which will be immediately out-of-date) +* TWEAK: Updated the URLs of various S3-compatible providers to use SSL, where available +* TWEAK: Added an endpoint drop-down for Dreamobjects, using their new/updated endpoint (currently only one choice, but they will have more in future) +* TWEAK: Suppress a log message from UpdraftVault when that message is not in use +* TWEAK: When key creation times out in the Migrator, display the error message in the UI + += 1.12.6 - 30/Apr/2016 = + +* FIX: UpdraftVault quota usage was being shown incorrectly in recounts on sites connected to accounts backing up multiple sites +* TWEAK: In accordance with Barracuda's previous announcement, copy.com no longer exists - https://techlib.barracuda.com/CudaDrive/EOL +* TWEAK: Allow particular log lines to be cancelled +* TWEAK: Explicitly set the separator when calling http_build_query(), to prevent problems with non-default configurations +* TWEAK: Tweak the algorithm for sending data to a remote UD installation to cope with eventually-consistent filesystems that are temporarily inconsistent +* TWEAK: Make the automatic backups advert prettier +* TWEAK: Detect and combine file and database backups running on different schedules which coincide +* TWEAK: Update bundled Select2 to version 4.0.2 +* TWEAK: Update UDRPC library to version 1.4.3 + +Older changes are found in the changelog.txt file in the plugin directory. + +== Screenshots == + +1. Main dashboard - screenshots are from UpdraftPlus Premium, so may reference some features that are not part of the free version + +2. Configuring your backups + +3. Restoring from a backup + +4. Showing and downloading backup sets + + +== License == + + Copyright 2011-16 David Anderson + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Furthermore, reliance upon any non-English translation is at your own risk. UpdraftPlus can give no guarantees that translations from the original English are accurate. + +We recognise and thank the following for code and/or libraries used and/or modified under the terms of their open source licences; see: https://updraftplus.com/acknowledgements/ + + +== Upgrade Notice == +* 1.12.29: Minor Dropbox APIv2 tweaks, plus some internal structure improvements. Fix for PHP error logged in 1.12.28. diff --git a/plugins/updraftplus/restorer.php b/plugins/updraftplus/restorer.php new file mode 100644 index 0000000..422941a --- /dev/null +++ b/plugins/updraftplus/restorer.php @@ -0,0 +1,2377 @@ +use_wpdb = ((!function_exists('mysql_query') && !function_exists('mysqli_query')) || !$wpdb->is_mysql || !$wpdb->ready) ? true : false; + + $this->our_siteurl = untrailingslashit(site_url()); + + if (false == $this->use_wpdb) { + // We have our own extension which drops lots of the overhead on the query + $wpdb_obj = new UpdraftPlus_WPDB(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST); + // Was that successful? + if (!$wpdb_obj->is_mysql || !$wpdb_obj->ready) { + $this->use_wpdb = true; + } else { + $this->wpdb_obj = $wpdb_obj; + $this->mysql_dbh = $wpdb_obj->updraftplus_getdbh(); + $this->use_mysqli = $wpdb_obj->updraftplus_use_mysqli(); + } + } + + if ($shortinit) return; + $this->ud_backup_info = $info; + do_action('updraftplus_restorer_restore_options', $restore_options); + $this->ud_multisite_selective_restore = (is_array($restore_options) && !empty($restore_options['updraft_restore_ms_whichsites']) && $restore_options['updraft_restore_ms_whichsites'] > 0) ? $restore_options['updraft_restore_ms_whichsites'] : false; + $this->ud_restore_options = $restore_options; + + $this->ud_foreign = empty($info['meta_foreign']) ? false : $info['meta_foreign']; + if (isset($info['is_multisite'])) $this->ud_backup_is_multisite = $info['is_multisite']; + if (isset($info['created_by_version'])) $this->created_by_version = $info['created_by_version']; + + add_filter('updraftplus_logline', array($this, 'updraftplus_logline'), 10, 5); + + parent::__construct($skin); + $this->init(); + $this->backup_strings(); + $this->is_multisite = is_multisite(); + } + + public function ud_get_skin() { + return $this->skin; + } + + // In future, this can get more sophisticated. For now, things are funnelled through here, giving the future possibility. + public function updraftplus_logline($line, $nonce, $level, $uniq_id, $destination) { + if ('restore' != $destination) return $line; + + global $updraftplus; + /* + + // This provides for saving the log to the database. We might prefer a file, though. + + + $restore_log = $updraftplus->jobdata_get('restore_log'); + if (!is_array($restore_log)) $restore_log = array(); + + $log_object = array( + 'time' => microtime(true), + 'level' => $level, + 'destination' => $destination + 'message' => $line + ); + + if ($uniq_id) { + $restore_log[$uniq_id] = $log_object; + } else { + $restore_log[] = $log_object; + } + + $updraftplus->jobdata_set('restore_log', $restore_log); + */ + + static $logfile_handle; + static $opened_log_time; + + if (empty($logfile_handle)) { + $logfile_name = $updraftplus->backups_dir_location()."/log.$nonce-browser.txt"; + $logfile_handle = fopen($logfile_name, 'a'); + } + + if (!empty($logfile_handle)) { + $rtime = microtime(true)-$updraftplus->job_time_ms; + fwrite($logfile_handle, sprintf("%08.03f", round($rtime, 3))." (R) ".'['.$level.'] '.$line."\n"); + } + + if ('warning' == $destination || 'error' == $destination || $uniq_id) { + $line = ''.htmlspecialchars($line).''; + } else { + $line = htmlspecialchars($line); + } + + echo $line.'
        '; + + return false; + } + + private function backup_strings() { + $this->strings['not_possible'] = __('UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually.','updraftplus'); + $this->strings['no_package'] = __('Backup file not available.','updraftplus'); + $this->strings['copy_failed'] = __('Copying this entity failed.','updraftplus'); + $this->strings['unpack_package'] = __('Unpacking backup...','updraftplus'); + $this->strings['decrypt_database'] = __('Decrypting database (can take a while)...','updraftplus'); + $this->strings['decrypted_database'] = __('Database successfully decrypted.','updraftplus'); + $this->strings['moving_old'] = __('Moving old data out of the way...','updraftplus'); + $this->strings['moving_backup'] = __('Moving unpacked backup into place...','updraftplus'); + $this->strings['restore_database'] = __('Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)...','updraftplus'); + $this->strings['cleaning_up'] = __('Cleaning up rubbish...','updraftplus'); + $this->strings['old_move_failed'] = __('Could not move old files out of the way.','updraftplus').' '.__('You should check the file ownerships and permissions in your WordPress installation', 'updraftplus'); + $this->strings['old_delete_failed'] = __('Could not delete old directory.','updraftplus'); + $this->strings['new_move_failed'] = __('Could not move new files into place. Check your wp-content/upgrade folder.','updraftplus'); + $this->strings['move_failed'] = __('Could not move the files into place. Check your file permissions.','updraftplus'); + $this->strings['delete_failed'] = __('Failed to delete working directory after restoring.','updraftplus'); + $this->strings['multisite_error'] = __('You are running on WordPress multisite - but your backup is not of a multisite site.', 'updraftplus'); + $this->strings['unpack_failed'] = __('Failed to unpack the archive', 'updraftplus'); + } + + # This function is copied from class WP_Upgrader (WP 3.8 - no significant changes since 3.2 at least); we only had to fork it because it hard-codes using the basename of the zip file as its unpack directory; which can be long; and then combining that with long pathnames in the zip being unpacked can overflow a 256-character path limit (yes, they apparently still exist - amazing!) + # Subsequently, we have also added the ability to unpack tarballs + private function unpack_package_archive($package, $delete_package = true, $type = false) { + + if (!empty($this->ud_foreign) && !empty($this->ud_foreign_working_dir) && $package == $this->ud_foreign_package) { + if (is_dir($this->ud_foreign_working_dir)) { + return $this->ud_foreign_working_dir; + } else { + global $updraftplus; + $updraftplus->log('Previously unpacked directory seems to have disappeared; will unpack again'); + } + } + + global $wp_filesystem, $updraftplus; + + $packsize = round(filesize($package)/1048576, 1).' Mb'; + + $this->skin->feedback($this->strings['unpack_package'].' ('.basename($package).', '.$packsize.')'); + + $upgrade_folder = $wp_filesystem->wp_content_dir() . 'upgrade/'; + + // Clean up contents of upgrade directory beforehand. + $upgrade_files = $wp_filesystem->dirlist($upgrade_folder); + if ( !empty($upgrade_files) ) { + foreach ( $upgrade_files as $file ) + $wp_filesystem->delete($upgrade_folder . $file['name'], true); + } + + // We need a working directory + #This is the only change from the WP core version - minimise path length + #$working_dir = $upgrade_folder . basename($package, '.zip'); + $working_dir = $upgrade_folder . substr(md5($package), 0, 8); + + // Clean up working directory + if ( $wp_filesystem->is_dir($working_dir) ) + $wp_filesystem->delete($working_dir, true); + + // Unzip package to working directory + if ('.zip' == strtolower(substr($package, -4, 4))) { + $result = unzip_file( $package, $working_dir ); + } elseif ('.tar' == strtolower(substr($package, -4, 4)) || '.tar.gz' == strtolower(substr($package, -7, 7)) || '.tar.bz2' == strtolower(substr($package, -8, 8))) { + if (!class_exists('UpdraftPlus_Archive_Tar')) { + if (false === strpos(get_include_path(), UPDRAFTPLUS_DIR.'/includes/PEAR')) set_include_path(UPDRAFTPLUS_DIR.'/includes/PEAR'.PATH_SEPARATOR.get_include_path()); + require_once(UPDRAFTPLUS_DIR.'/includes/PEAR/Archive/Tar.php'); + } + + $p_compress = null; + if ('.tar.gz' == strtolower(substr($package, -7, 7))) { + $p_compress = 'gz'; + } elseif ('.tar.bz2' == strtolower(substr($package, -8, 8))) { + $p_compress = 'bz2'; + } + + # It's not pretty. But it works. + if (is_a($wp_filesystem, 'WP_Filesystem_Direct')) { + $extract_dir = $working_dir; + } else { + $updraft_dir = $updraftplus->backups_dir_location(); + if (!$updraftplus->really_is_writable($updraft_dir)) { + $updraftplus->log_e("Backup directory (%s) is not writable, or does not exist.", $updraft_dir); + $result = new WP_Error('unpack_failed', $this->strings['unpack_failed'], $tar->extract); + } else { + $extract_dir = $updraft_dir.'/'.basename($working_dir).'-old'; + if (file_exists($extract_dir)) $updraftplus->remove_local_directory($extract_dir); + $updraftplus->log("Using a temporary folder to extract before moving over WPFS: $extract_dir"); + } + } + # Slightly hackish - rather than re-write Archive_Tar to use wp_filesystem, we instead unpack into the location that we already require to be directly writable for other reasons, and then move from there. + + if (empty($result)) { + + $this->ud_extract_count = 0; + $this->ud_working_dir = trailingslashit($working_dir); + $this->ud_extract_dir = untrailingslashit($extract_dir); + $this->ud_made_dirs = array(); + add_filter('updraftplus_tar_wrote', array($this, 'tar_wrote'), 10, 2); + $tar = new UpdraftPlus_Archive_Tar($package, $p_compress); + $result = $tar->extract($extract_dir, false); + if (!is_a($wp_filesystem, 'WP_Filesystem_Direct')) $updraftplus->remove_local_directory($extract_dir); + if (true != $result) { + $result = new WP_Error('unpack_failed', $this->strings['unpack_failed'], $result); + } else { + if (!is_a($wp_filesystem, 'WP_Filesystem_Direct')) { + $updraftplus->log('Moved unpacked tarball contents'); + } + } + remove_filter('updraftplus_tar_wrote', array($this, 'tar_wrote'), 10, 2); + } + } + + // Once extracted, delete the package if required. + if ( $delete_package ) + unlink($package); + + if ( is_wp_error($result) ) { + $wp_filesystem->delete($working_dir, true); + if ( 'incompatible_archive' == $result->get_error_code() ) { + return new WP_Error( 'incompatible_archive', $this->strings['incompatible_archive'], $result->get_error_data() ); + } + return $result; + } + + if (!empty($this->ud_foreign)) { + $this->ud_foreign_working_dir = $working_dir; + $this->ud_foreign_package = $package; + # Zip containing an SQL file. We try a default pattern. + if ('db' === $type) { + $basepack = basename($package, '.zip'); + if ($wp_filesystem->exists($working_dir.'/'.$basepack.'.sql')) { + $wp_filesystem->move($working_dir.'/'.$basepack.'.sql', $working_dir . "/backup.db", true); + $updraftplus->log("Moving database file $basepack.sql to backup.db"); + } + } + } + + return $working_dir; + } + + public function tar_wrote($result, $file) { + if (0 !== strpos($file, $this->ud_extract_dir)) return false; + global $wp_filesystem, $updraftplus; + if (!is_a($wp_filesystem, 'WP_Filesystem_Direct')) { + $modint = 100; + $leaf = substr($file, strlen($this->ud_extract_dir)); + $dirname = dirname($leaf); + $need_dirs = explode('/', $dirname); + if (empty($this->ud_made_dirs[$dirname])) { + $cdir = ''; + foreach ($need_dirs as $ndir) { + $cdir .= ($cdir) ? '/'.$ndir : $ndir; + if (empty($this->ud_made_dirs[$cdir])) { + if ( !$wp_filesystem->mkdir( $this->ud_working_dir.$cdir, FS_CHMOD_DIR) && ! $wp_filesystem->is_dir($this->ud_working_dir.$cdir) ) { + $updraftplus->log("Failed to create WPFS directory: ".$this->ud_working_dir.$cdir); + return false; + } else { + $this->ud_made_dirs[$cdir] = true; + } + } + } + } + $put = $wp_filesystem->put_contents($this->ud_working_dir.$leaf, file_get_contents($file)); + if (is_wp_error($put)) $updraftplus->log_wp_error($put); + @unlink($file); + } else { + $modint = 500; + $put = true; + } + if ($put) { + $this->ud_extract_count++; + if ($this->ud_extract_count % $modint == 0) { + $updraftplus->log_e("%s files have been extracted", $this->ud_extract_count); + } + } + return ($put == true); + } + + // This returns a wp_filesystem location (and we musn't change that, as we must retain compatibility with the class parent) + public function unpack_package($package, $delete_package = true, $type = false) { + + global $wp_filesystem, $updraftplus; + + $updraft_dir = $updraftplus->backups_dir_location(); + + // If not database, then it is a zip - unpack in the usual way + #if (!preg_match('/db\.gz(\.crypt)?$/i', $package)) return parent::unpack_package($updraft_dir.'/'.$package, $delete_package); + if (!preg_match('/-db(\.gz(\.crypt)?)?$/i', $package) && !preg_match('/\.sql(\.gz|\.bz2)?$/i', $package)) return $this->unpack_package_archive($updraft_dir.'/'.$package, $delete_package, $type); + + $backup_dir = $wp_filesystem->find_folder($updraft_dir); + + // Unpack a database. The general shape of the following is copied from class-wp-upgrader.php + + @set_time_limit(1800); + + $packsize = round(filesize($backup_dir.$package)/1048576, 1).' Mb'; + + $this->skin->feedback($this->strings['unpack_package'].' ('.basename($package).', '.$packsize.')'); + + $upgrade_folder = $wp_filesystem->wp_content_dir() . 'upgrade/'; + @$wp_filesystem->mkdir($upgrade_folder, octdec($this->calculate_additive_chmod_oct(FS_CHMOD_DIR, 0775))); + + //Clean up contents of upgrade directory beforehand. + $upgrade_files = $wp_filesystem->dirlist($upgrade_folder); + if ( !empty($upgrade_files) ) { + foreach ( $upgrade_files as $file ) + $wp_filesystem->delete($upgrade_folder.$file['name'], true); + } + + //We need a working directory + $working_dir = $upgrade_folder . basename($package, '.crypt'); + # $working_dir_localpath = WP_CONTENT_DIR.'/upgrade/'. basename($package, '.crypt'); + + // Clean up working directory + if ($wp_filesystem->is_dir($working_dir)) $wp_filesystem->delete($working_dir, true); + + if (!$wp_filesystem->mkdir($working_dir, octdec($this->calculate_additive_chmod_oct(FS_CHMOD_DIR, 0775)))) return new WP_Error('mkdir_failed', __('Failed to create a temporary directory','updraftplus').' ('.$working_dir.')'); + + // Unpack package to working directory + if ($updraftplus->is_db_encrypted($package)) { + $this->skin->feedback('decrypt_database'); + + $encryption = empty($this->ud_restore_options['updraft_encryptionphrase']) ? UpdraftPlus_Options::get_updraft_option('updraft_encryptionphrase') : $this->ud_restore_options['updraft_encryptionphrase']; + + if (!$encryption) return new WP_Error('no_encryption_key', __('Decryption failed. The database file is encrypted, but you have no encryption key entered.', 'updraftplus')); + + $plaintext = $updraftplus->decrypt(false, $encryption, $wp_filesystem->get_contents($backup_dir.$package)); + + if ($plaintext) { + $this->skin->feedback('decrypted_database'); + if (!$wp_filesystem->put_contents($working_dir.'/backup.db.gz', $plaintext)) { + return new WP_Error('write_failed', __('Failed to write out the decrypted database to the filesystem','updraftplus')); + } + } else { + return new WP_Error('decryption_failed', __('Decryption failed. The most likely cause is that you used the wrong key.','updraftplus')); + } + } else { + + if (preg_match('/\.sql$/i', $package)) { + if (!$wp_filesystem->copy($backup_dir.$package, $working_dir.'/backup.db')) { + if ( $wp_filesystem->errors->get_error_code() ) { + foreach ( $wp_filesystem->errors->get_error_messages() as $message ) show_message($message); + } + return new WP_Error('copy_failed', $this->strings['copy_failed']); + } + } elseif (preg_match('/\.bz2$/i', $package)) { + if (!$wp_filesystem->copy($backup_dir.$package, $working_dir.'/backup.db.bz2')) { + if ( $wp_filesystem->errors->get_error_code() ) { + foreach ( $wp_filesystem->errors->get_error_messages() as $message ) show_message($message); + } + return new WP_Error('copy_failed', $this->strings['copy_failed']); + } + } elseif (!$wp_filesystem->copy($backup_dir.$package, $working_dir.'/backup.db.gz')) { + if ( $wp_filesystem->errors->get_error_code() ) { + foreach ( $wp_filesystem->errors->get_error_messages() as $message ) show_message($message); + } + return new WP_Error('copy_failed', $this->strings['copy_failed']); + } + + } + + // Once extracted, delete the package if required (non-recursive, is a file) + if ($delete_package) $wp_filesystem->delete($backup_dir.$package, false, true); + + $updraftplus->log("Database successfully unpacked"); + + return $working_dir; + + } + + // For moving files out of a directory into their new location + // The purposes of the $type parameter are 1) to detect 'others' and apply a historical bugfix 2) to detect wpcore, and apply the setting for what to do with wp-config.php 3) to work out whether to delete the directory itself + // Must use only wp_filesystem + // $dest_dir must already have a trailing slash + // $preserve_existing: this setting only applies at the top level: 0 = overwrite with no backup; 1 = make backup of existing; 2 = do nothing if there is existing, 3 = do nothing to the top level directory, but do copy-in contents (and over-write files). Thus, on a multi-archive set where you want a backup, you'd do this: first call with $preserve_existing === 1, then on subsequent zips call with 3 + public function move_backup_in($working_dir, $dest_dir, $preserve_existing = 1, $do_not_overwrite = array('plugins', 'themes', 'uploads', 'upgrade'), $type = 'not-others', $send_actions = false, $force_local = false) { + + /* + const MOVEIN_OVERWRITE_NO_BACKUP = 0; + const MOVEIN_MAKE_BACKUP_OF_EXISTING = 1; + const MOVEIN_DO_NOTHING_IF_EXISTING = 2; + const MOVEIN_COPY_IN_CONTENTS = 3; + */ + global $wp_filesystem, $updraftplus; + $updraft_dir = $updraftplus->backups_dir_location(); + + # && !is_a($wp_filesystem, 'WP_Filesystem_Direct') + if (true == $force_local) { + $wpfs = new UpdraftPlus_WP_Filesystem_Direct(true); + } else { + $wpfs = $wp_filesystem; + } + + # Get the content to be moved in. Include hidden files = true. Recursion is only required if we're likely to copy-in + $recursive = (self::MOVEIN_COPY_IN_CONTENTS == $preserve_existing) ? true : false; + $upgrade_files = $wpfs->dirlist($working_dir, true, $recursive); + + if (empty($upgrade_files)) return true; + + if (!$wpfs->is_dir($dest_dir)) { + return new WP_Error('no_such_dir', __('The directory does not exist', 'updraftplus')." ($dest_dir)"); +// $updraftplus->log_e("The directory does not exist, so will be created (%s).", $dest_dir); +// # Attempts to create the directory fail, as due to a core bug, $dest_dir will be the wrong value if it did not already exist (at least for themes - the value of it depends on an is_dir() check wrongly used to detect a relative path) +// if (!$wpfs->mkdir($dest_dir)) { +// return new WP_Error('create_failed', __('Failed to create directory', 'updraftplus')." ($dest_dir)"); +// } + } + + $wpcore_config_moved = false; + + if ('plugins' == $type || 'themes' == $type) $updraftplus->log("Top-level entities being moved: ".implode(', ', array_keys($upgrade_files))); + + foreach ( $upgrade_files as $file => $filestruc ) { + + if (empty($file)) continue; + + if ($dest_dir.$file == $updraft_dir) { + $updraftplus->log('Skipping attempt to replace updraft_dir whilst processing '.$type); + continue; + } + + // Correctly restore files in 'others' in no directory that were wrongly backed up in versions 1.4.0 - 1.4.48 + if (('others' == $type || 'wpcore' == $type) && preg_match('/^([\-_A-Za-z0-9]+\.php)$/i', $file, $matches) && $wpfs->exists($working_dir . "/$file/$file")) { + if ('others' == $type) { + $updraftplus->log("Found file: $file/$file: presuming this is a backup with a known fault (backup made with versions 1.4.0 - 1.4.48, and sometimes up to 1.6.55 on some Windows servers); will rename to simply $file", 'notice-restore'); + } else { + $updraftplus->log("Found file: $file/$file: presuming this is a backup with a known fault (backup made with versions before 1.6.55 in certain situations on Windows servers); will rename to simply $file", 'notice-restore'); + } + $updraftplus->log("$file/$file: rename to $file"); + $file = $matches[1]; + $tmp_file = rand(0, 999999999).'.php'; + // Rename directory + $wpfs->move($working_dir . "/$file", $working_dir . "/".$tmp_file, true); + $wpfs->move($working_dir . "/$tmp_file/$file", $working_dir ."/".$file, true); + $wpfs->rmdir($working_dir . "/$tmp_file", false); + } + + if ('wp-config.php' == $file && 'wpcore' == $type) { + if (empty($this->ud_restore_options['updraft_restorer_wpcore_includewpconfig'])) { + $updraftplus->log_e('wp-config.php from backup: will restore as wp-config-backup.php', 'updraftplus'); + $wpfs->move($working_dir . "/$file", $working_dir . "/wp-config-backup.php", true); + $file = "wp-config-backup.php"; + $wpcore_config_moved = true; + } else { + $updraftplus->log_e("wp-config.php from backup: restoring (as per user's request)", 'updraftplus'); + } + } elseif ('wpcore' == $type && 'wp-config-backup.php' == $file && $wpcore_config_moved) { + # The file is already gone; nothing to do + continue; + } + + # Sanity check (should not be possible as these were excluded at backup time) + if (in_array($file, $do_not_overwrite)) continue; + + if (('object-cache.php' == $file || 'advanced-cache.php' == $file) && 'others' == $type) { + if (false == apply_filters('updraftplus_restorecachefiles', true, $file)) { + $nfile = preg_replace('/\.php$/', '-backup.php', $file); + $wpfs->move($working_dir . "/$file", $working_dir . "/".$nfile, true); + $file=$nfile; + } + } elseif (('object-cache-backup.php' == $file || 'advanced-cache-backup.php' == $file) && 'others' == $type) { + $wpfs->delete($working_dir."/".$file); + continue; + } + + # First, move the existing one, if necessary (may not be present) + if ($wpfs->exists($dest_dir.$file)) { + if ($preserve_existing == self::MOVEIN_MAKE_BACKUP_OF_EXISTING) { + if ( !$wpfs->move($dest_dir.$file, $dest_dir.$file.'-old', true) ) { + return new WP_Error('old_move_failed', $this->strings['old_move_failed']." ($dest_dir$file)"); + } + } elseif ($preserve_existing == self::MOVEIN_OVERWRITE_NO_BACKUP) { + if (!$wpfs->delete($dest_dir.$file, true)) { + return new WP_Error('old_delete_failed', $this->strings['old_delete_failed']." ($file)"); + } + } + } + + + # Secondly, move in the new one + $is_dir = $wpfs->is_dir($working_dir."/".$file); + + if (self::MOVEIN_DO_NOTHING_IF_EXISTING == $preserve_existing && $wpfs->exists($dest_dir.$file)) { + // Something exists - no move. Remove it from the temporary directory - so that it will be clean later + @$wpfs->delete($working_dir.'/'.$file, true); + // The $is_dir check was added in version 1.11.18; without this, files in the top-level that weren't in the first archive didn't get over-written + } elseif (self::MOVEIN_COPY_IN_CONTENTS != $preserve_existing || !$wpfs->exists($dest_dir.$file) || !$is_dir) { + + if ($wpfs->move($working_dir."/".$file, $dest_dir.$file, true) ) { + if ($send_actions) do_action('updraftplus_restored_'.$type.'_one', $file); + # Make sure permissions are at least as great as those of the parent + if ($is_dir) { + # This method is broken due to https://core.trac.wordpress.org/ticket/26598 + #if (empty($chmod)) $chmod = $wpfs->getnumchmodfromh($wpfs->gethchmod($dest_dir)); + if (empty($chmod)) $chmod = octdec(sprintf("%04d", $this->get_current_chmod($dest_dir, $wpfs))); + if (!empty($chmod)) $this->chmod_if_needed($dest_dir.$file, $chmod, false, $wpfs); + } + } else { + return new WP_Error('move_failed', $this->strings['move_failed'], $working_dir."/".$file." -> ".$dest_dir.$file); + } + } elseif (self::MOVEIN_COPY_IN_CONTENTS == $preserve_existing && !empty($filestruc['files'])) { + # The directory ($dest_dir) already exists, and we've been requested to copy-in. We need to perform the recursive copy-in + # $filestruc['files'] is then a new structure like $upgrade_files + # First pass: create directory structure + # Get chmod value for the parent directory, and re-use it (instead of passing false) + + # This method is broken due to https://core.trac.wordpress.org/ticket/26598 + #if (empty($chmod)) $chmod = $wpfs->getnumchmodfromh($wpfs->gethchmod($dest_dir)); + if (empty($chmod)) $chmod = octdec(sprintf("%04d", $this->get_current_chmod($dest_dir, $wpfs))); + # Copy in the files. This also needs to make sure the directories exist, in case the zip file lacks entries + $delete_root = ('others' == $type || 'wpcore' == $type) ? false : true; + + $copy_in = $this->copy_files_in($working_dir.'/'.$file, $dest_dir.$file, $filestruc['files'], $chmod, $delete_root); + if (!empty($chmod)) $this->chmod_if_needed($dest_dir.$file, $chmod, false, $wpfs); + + if (is_wp_error($copy_in)) return $copy_in; + if (!$copy_in) return new WP_Error('move_failed', $this->strings['move_failed'], "(2) ".$working_dir.'/'.$file." -> ".$dest_dir.$file); + + $wpfs->rmdir($working_dir.'/'.$file); + } else { + $wpfs->rmdir($working_dir.'/'.$file); + } + } + + return true; + + } + + # $dest_dir must already exist + private function copy_files_in($source_dir, $dest_dir, $files, $chmod = false, $deletesource = false) { + global $wp_filesystem, $updraftplus; + foreach ($files as $rname => $rfile) { + if ('d' != $rfile['type']) { + # Delete it if it already exists (or perhaps WP does it for us) + if (!$wp_filesystem->move($source_dir.'/'.$rname, $dest_dir.'/'.$rname, true)) { + $updraftplus->log_e('Failed to move file (check your file permissions and disk quota): %s', $source_dir.'/'.$rname." -> ".$dest_dir.'/'.$rname); + return false; + } + } else { + # Directory + if ($wp_filesystem->is_file($dest_dir.'/'.$rname)) @$wp_filesystem->delete($dest_dir.'/'.$rname, false, 'f'); + # No such directory yet: just move it + if (!$wp_filesystem->is_dir($dest_dir.'/'.$rname)) { + if (!$wp_filesystem->move($source_dir.'/'.$rname, $dest_dir.'/'.$rname, false)) { + $updraftplus->log_e('Failed to move directory (check your file permissions and disk quota): %s', $source_dir.'/'.$rname." -> ".$dest_dir.'/'.$rname); + return false; + } + } elseif (!empty($rfile['files'])) { + # There is a directory - and we want to to copy in + $docopy = $this->copy_files_in($source_dir.'/'.$rname, $dest_dir.'/'.$rname, $rfile['files'], $chmod, false); + if (is_wp_error($docopy)) return $docopy; + if (false === $docopy) { + return false; + } + } else { + # There is a directory: but nothing to copy in to it + @$wp_filesystem->rmdir($source_dir.'/'.$rname); + } + } + } + # We are meant to leave the working directory empty. Hence, need to rmdir() once a directory is empty. But not the root of it all in case of others/wpcore. + if ($deletesource || strpos($source_dir, '/') !== false) { + $wp_filesystem->rmdir($source_dir, false); + } + + return true; + + } + + // Pre-flight check: chance to complain and abort before anything at all is done + public function pre_restore_backup($backup_files, $type, $info, $continuation_data = null) { + + if (is_string($backup_files)) $backup_files=array($backup_files); + + if ('more' == $type) { + $this->skin->feedback('not_possible'); + return; + } + + // Ensure access to the indicated directory - and to WP_CONTENT_DIR (in which we use upgrade/) + $need_these = array(WP_CONTENT_DIR); + if (!empty($info['path'])) $need_these[] = $info['path']; + + $res = $this->fs_connect($need_these); + if (false === $res || is_wp_error($res)) return $res; + + # Check upgrade directory is writable (instead of having non-obvious messages when we try to write) + # In theory, this is redundant (since we already checked for access to WP_CONTENT_DIR); but in practice, this extra check has been needed + + global $wp_filesystem, $updraftplus, $updraftplus_admin, $updraftplus_addons_migrator; + + if (empty($this->pre_restore_updatedir_writable)) { + $upgrade_folder = $wp_filesystem->wp_content_dir() . 'upgrade/'; + @$wp_filesystem->mkdir($upgrade_folder, octdec($this->calculate_additive_chmod_oct(FS_CHMOD_DIR, 0775))); + if (!$wp_filesystem->is_dir($upgrade_folder)) { + return new WP_Error('no_dir', sprintf(__('UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)', 'updraftplus'), __('folder', 'updraftplus'), $upgrade_folder)); + } + $rand_file = 'testfile_'.rand(0,9999999).md5(microtime(true)).'.txt'; + if ($wp_filesystem->put_contents($upgrade_folder.$rand_file, 'testing...')) { + @$wp_filesystem->delete($upgrade_folder.$rand_file); + $this->pre_restore_updatedir_writable = true; + } else { + return new WP_Error('no_file', sprintf(__('UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)', 'updraftplus'), __('file', 'updraftplus'), $upgrade_folder.$rand_file)); + } + } + + # Code below here assumes that we're dealing with file-based entities + if ('db' == $type) return true; + + $wp_filesystem_dir = $this->get_wp_filesystem_dir($info['path']); + if ($wp_filesystem_dir === false) return false; + +// $this->maintenance_mode(true); +// $updraftplus->log_e('Testing file permissions...'); + + $ret_val = true; + $updraft_dir = $updraftplus->backups_dir_location(); + + if (!is_array($continuation_data) && (('plugins' == $type || 'uploads' == $type || 'themes' == $type) && (!is_multisite() || $this->ud_backup_is_multisite !== 0 || ('uploads' != $type || empty($updraftplus_addons_migrator->new_blogid ))))) { + if (file_exists($updraft_dir.'/'.basename($wp_filesystem_dir)."-old")) { + $ret_val = new WP_Error('already_exists', sprintf(__('Existing unremoved folders from a previous restore exist (please use the "Delete Old Directories" button to delete them before trying again): %s', 'updraftplus'), $wp_filesystem_dir.'-old')); + } + } + +// $this->maintenance_mode(false); + + if (!empty($this->ud_foreign)) { + $known_foreigners = apply_filters('updraftplus_accept_archivename', array()); + if (!is_array($known_foreigners) || empty($known_foreigners[$this->ud_foreign])) { + return new WP_Error('uk_foreign', __('This version of UpdraftPlus does not know how to handle this type of foreign backup', 'updraftplus').' ('.$this->ud_foreign.')'); + } + } + + return $ret_val; + } + + private function get_wp_filesystem_dir($path) { + global $wp_filesystem; + // Get the wp_filesystem location for the folder on the local install + switch ($path) { + case ABSPATH: + case ''; + $wp_filesystem_dir = $wp_filesystem->abspath(); + break; + case WP_CONTENT_DIR: + $wp_filesystem_dir = $wp_filesystem->wp_content_dir(); + break; + case WP_PLUGIN_DIR: + $wp_filesystem_dir = $wp_filesystem->wp_plugins_dir(); + break; + case WP_CONTENT_DIR . '/themes': + $wp_filesystem_dir = $wp_filesystem->wp_themes_dir(); + break; + default: + $wp_filesystem_dir = $wp_filesystem->find_folder($path); + break; + } + if ( ! $wp_filesystem_dir ) return false; + return untrailingslashit($wp_filesystem_dir); + } + + private function can_version_ajax_restore($version) { + if (!defined('UPDRAFTPLUS_EXPERIMENTAL_AJAX_RESTORE') || !UPDRAFTPLUS_EXPERIMENTAL_AJAX_RESTORE) return false; + return ((version_compare($version, '2.0', '<') && version_compare($version, '1.11.10', '>=')) || (version_compare($version, '2.0', '>=') && version_compare($version, '2.11.10', '>='))) ? true : false; + } + + // $backup_file is just the basename, and must be a string; we expect the caller to deal with looping over an array (multi-archive sets). We do, however, record whether we have already unpacked an entity of the same type - so that we know to add (not replace). + public function restore_backup($backup_file, $type, $info, $last_one = false) { + + if ('more' == $type) { + $this->skin->feedback('not_possible'); + return; + } + + global $wp_filesystem, $updraftplus_addons_migrator, $updraftplus; + + $updraftplus->log("restore_backup(backup_file=$backup_file, type=$type, info=".serialize($info).", last_one=$last_one)"); + + $get_dir = empty($info['path']) ? '' : $info['path']; + + if (false === ($wp_filesystem_dir = $this->get_wp_filesystem_dir($get_dir))) return false; + + if (empty($this->abspath)) $this->abspath = trailingslashit($wp_filesystem->abspath()); + + @set_time_limit(1800); + + /* + TODO: + - The backup set may no longer be in the DB - a restore may have over-written it. + - UD might be installed, but not active. Test that too. (All combinations need testing - new/old UD vers, logged-in/not, etc.). + - logging + - authorisation on the AJAX call, given that our login may not even be valid any more. + - pass on the WP filesystem credentials somehow - they have been POSTed, and should be included in what's POSTed back. + - the restore function wants to know the UD version the backup set came from + - the restore function wants to know whether we're restoring an individual blog into a multisite + - the restore function has some things only done the first time, which isn't directly tracked (uses internal state instead, which won't work over AJAX) + - how to handle/set this->delete + - how to show the final result + - how to do the clear-up of restored stuff in the restore function + - remember, we need to do unauthenticated AJAX, as the authentication is happening via a different means. Use a separate procedure from the usual one (and no nonce, as login status may have changed). + */ + if (defined('UPDRAFTPLUS_EXPERIMENTAL_AJAX_RESTORE') && UPDRAFTPLUS_EXPERIMENTAL_AJAX_RESTORE && 'uploads' == $type) { + // Read this each time, as we don't know what might have been done in the mean-time (specifically with UD being replaced by a different UD from a backup). Of course, we know what the currently running process is capable of. + if (file_exists(UPDRAFTPLUS_DIR.'/updraftplus.php') && $fp = fopen(UPDRAFTPLUS_DIR.'/updraftplus.php', 'r')) { + $file_data = fread($fp, 1024); + if (preg_match("/Version: ([\d\.]+)(\r|\n)/", $file_data, $matches)) { + $ud_version = $matches[1]; + } + fclose($fp); + } + if (!empty($ud_version) && $this->can_version_ajax_restore($ud_version) && !empty($this->ud_backup_info['timestamp'])) { + $nonce = $updraftplus->nonce; + if (!function_exists('crypt_random_string')) $updraftplus->ensure_phpseclib('Crypt_Random', 'Crypt/Random'); + $this->ajax_restore_auth_code = bin2hex(crypt_random_string(32)); +// TODO: Delete this when done, to prevent abuse + update_site_option('updraft_ajax_restore_'.$nonce, $this->ajax_restore_auth_code.':'.time()); + $this->add_ajax_restore_admin_footer(); + $print_last_one = ($last_one) ? "1" : "0"; +// TODO: Also want the timestamp + // We don't bother to include info, as that is backup-independent information that can be re-created when needed + // TODO: Change to new log style, if ever using + echo '

        '."\n"; + $updraftplus->log("Deferring handling of uploads ($backup_file)"); + echo "$backup_file: ".''.__('Deferring...', 'updraftplus').''; + echo '

        '; + return true; + } + } + + // This returns the wp_filesystem path + $working_dir = $this->unpack_package($backup_file, $this->delete, $type); + if (is_wp_error($working_dir)) return $working_dir; + + $working_dir_localpath = WP_CONTENT_DIR.'/upgrade/'.basename($working_dir); + @set_time_limit(1800); + + // We copy the variable because we may be importing with a different prefix (e.g. on multisite imports of individual blog data) + $import_table_prefix = $updraftplus->get_table_prefix(false); + + $now_done = apply_filters('updraftplus_pre_restore_move_in', false, $type, $working_dir, $info, $this->ud_backup_info, $this, $wp_filesystem_dir); + if (is_wp_error($now_done)) return $now_done; + + // A slightly ugly way of getting a particular result back + if (is_string($now_done)) { + $wp_filesystem_dir = $now_done; + $now_done = false; + $do_not_move_old = true; + } + + if (!$now_done) { + + if ('db' == $type) { + // $import_table_prefix is received as a reference + $rdb = $this->restore_backup_db($working_dir, $working_dir_localpath, $import_table_prefix); + if (false === $rdb || is_wp_error($rdb)) return $rdb; + + } elseif ('others' == $type) { + + $dirname = basename($info['path']); + + # For foreign 'Simple Backup', we need to keep going down until we find wp-content + if (empty($this->ud_foreign)) { + $move_from = $working_dir; + } else { + $move_from = $this->search_for_folder('wp-content', $working_dir); + if (!is_string($move_from)) return new WP_Error('not_found', __('The WordPress content folder (wp-content) was not found in this zip file.', 'updraftplus')); + } + + // In this special case, the backup contents are not in a folder, so it is not simply a case of moving the folder around, but rather looping over all that we find + + // On subsequent archives of a multi-archive set, don't move anything; but do on the first + $preserve_existing = isset($this->been_restored['others']) ? self::MOVEIN_COPY_IN_CONTENTS : self::MOVEIN_MAKE_BACKUP_OF_EXISTING; + + $preserve_existing = apply_filters('updraft_move_others_preserve_existing', $preserve_existing, $this->been_restored, $this->ud_restore_options, $this->ud_backup_info); + + $new_move_from = apply_filters('updraft_restore_backup_move_from', $move_from, 'others', $this->ud_restore_options, $this->ud_backup_info); + + if ($new_move_from != $move_from && 0 === strpos($new_move_from, $move_from)) { + $new_suffix = substr($new_move_from, strlen($move_from)); + $wp_filesystem_dir .= $new_suffix; + $move_from = $new_move_from; + } + + $move_in = $this->move_backup_in($move_from, trailingslashit($wp_filesystem_dir), $preserve_existing, array('plugins', 'themes', 'uploads', 'upgrade'), 'others'); + if (is_wp_error($move_in)) return $move_in; + if (!$move_in) return new WP_Error('new_move_failed', $this->strings['new_move_failed']); + + $this->been_restored['others'] = true; + + } else { + + // Default action: used for plugins, themes and uploads (and wpcore, via a filter) + // Multi-archive sets: we record what we've already begun on, and on subsequent runs, copy in instead of replacing + $movedin = apply_filters('updraftplus_restore_movein_'.$type, $working_dir, $this->abspath, $wp_filesystem_dir); + + // A filter, to allow add-ons to perform the install of non-standard entities, or to indicate that it's not possible + if (false === $movedin) { + $this->skin->feedback('not_possible'); + } elseif (is_wp_error($movedin)) { + return $movedin; + } elseif (true !== $movedin) { + + // We get the directory to move from early, in case there is a problem with the backup that affects the result - we want to detect that before moving existing data out of the way + + $short_circuit = false; + + // For foreign 'Simple Backup', we need to keep going down until we find wp-content + if (empty($this->ud_foreign)) { + $working_dir_use = $working_dir; + } else { + $working_dir_use = $this->search_for_folder('wp-content', $working_dir); + if (!is_string($working_dir_use)) { + if (empty($this->ud_foreign) || !apply_filters('updraftplus_foreign_allow_missing_entity', false, $type, $this->ud_foreign)) { + return new WP_Error('not_found', __('The WordPress content folder (wp-content) was not found in this zip file.', 'updraftplus')); + } else { + $short_circuit = true; + } + } + } + + // The backup may not actually have /$type, since that is info from the present site + $move_from = $this->get_first_directory($working_dir_use, array(basename($info['path']), $type)); + if (false !== $move_from) $move_from = apply_filters('updraft_restore_backup_move_from', $move_from, $type, $this->ud_restore_options, $this->ud_backup_info); + + if (false === $move_from) { + if (!empty($this->ud_foreign) && !apply_filters('updraftplus_foreign_allow_missing_entity', false, $type, $this->ud_foreign)) { + return new WP_Error('new_move_failed', $this->strings['new_move_failed']); + } + } + + // On the first time, create the -old directory in updraft_dir + // (Old style was: On the first time, move the existing data to -old) + if (!isset($this->been_restored[$type]) && empty($do_not_move_old)) { + $this->move_existing_to_old($type, $get_dir, $wp_filesystem, $wp_filesystem_dir); + } + + if (empty($short_circuit)) { + + if (false === $move_from) { + if (!empty($this->ud_foreign) && !apply_filters('updraftplus_foreign_allow_missing_entity', false, $type, $this->ud_foreign)) { + return new WP_Error('new_move_failed', $this->strings['new_move_failed']); + } + } else { + + $this->skin->feedback('moving_backup'); + + $move_in = $this->move_backup_in($move_from, trailingslashit($wp_filesystem_dir), self::MOVEIN_COPY_IN_CONTENTS, array(), $type); + + if (is_wp_error($move_in)) return $move_in; + if (!$move_in) return new WP_Error('new_move_failed', $this->strings['new_move_failed']); + + $wp_filesystem->rmdir($move_from); + } + } + + } + + $this->been_restored[$type] = true; + + } + } + + $attempt_delete = true; + if (!empty($this->ud_foreign) && !$last_one) $attempt_delete = false; + + // Non-recursive, so the directory needs to be empty + if ($attempt_delete) $this->skin->feedback('cleaning_up'); + + if ($attempt_delete) { + + if (!empty($do_not_move_old)) @$wp_filesystem->delete($working_dir.'/'.$type); + + // Foreign backups can contain extra data and thus leave stuff behind, thus causing errors + $recurse = empty($this->ud_foreign) ? false : true; + $recurse = apply_filters('updraftplus_restore_delete_recursive', $recurse, $this->ud_foreign, $this->ud_restore_options, $type); + + if (!$wp_filesystem->delete($working_dir, $recurse)) { + + # TODO: Can remove this after 1-Jan-2015; or at least, make it so that it requires the version number to be present. + $fixed_it_now = false; + # Deal with a corner-case in version 1.8.5 + if ('uploads' == $type && (empty($this->created_by_version) || (version_compare($this->created_by_version, '1.8.5', '>=') && version_compare($this->created_by_version, '1.8.8', '<')))) { + $updraftplus->log("Clean-up failed with uploads: will attempt 1.8.5-1.8.7 fix (".$this->created_by_version.")"); + $move_in = @$this->move_backup_in(dirname($move_from), trailingslashit($wp_filesystem_dir), 3, array(), $type); + $updraftplus->log("Result: ".serialize($move_in)); + if ($wp_filesystem->delete($working_dir)) $fixed_it_now = true; + } + + if (!$fixed_it_now) { + $updraftplus->log_e('Error: %s', $this->strings['delete_failed'].' ('.$working_dir.')'); + # List contents + // No need to make this a restoration-aborting error condition - it's not + #return new WP_Error('delete_failed', $this->strings['delete_failed'].' ('.$working_dir.')'); + $dirlist = $wp_filesystem->dirlist($working_dir, true, true); + if (is_array($dirlist)) { + $updraftplus->log(__('Files found:', 'updraftplus'), 'notice-restore'); + foreach ($dirlist as $name => $struc) { + $updraftplus->log("* $name", 'notice-restore'); + } + } else { + $updraftplus->log_e('Unable to enumerate files in that directory.'); + } + } + } + } + + # Permissions changes (at the top level - i.e. this does not apply if using recursion) are now *additive* - i.e. there's no danger of permissions being removed from what's on-disk + switch($type) { + case 'wpcore': + $this->chmod_if_needed($wp_filesystem_dir, FS_CHMOD_DIR, false, $wp_filesystem); + // In case we restored a .htaccess which is incorrect for the local setup + $this->flush_rewrite_rules(); + break; + case 'uploads': + $this->chmod_if_needed($wp_filesystem_dir, FS_CHMOD_DIR, false, $wp_filesystem); + break; + case 'themes': + // Cherry Framework needs its cache files removing after migration + if ((empty($this->old_siteurl) || ($this->old_siteurl != $this->our_siteurl)) && function_exists('glob')) { + $cherry_child = glob(WP_CONTENT_DIR.'/themes/theme*'); + if (is_array($cherry_child)) { + foreach ($cherry_child as $theme) { + if (file_exists($theme.'/style.less.cache')) unlink($theme.'/style.less.cache'); + if (file_exists($theme.'/bootstrap/less/bootstrap.less.cache')) unlink($theme.'/bootstrap/less/bootstrap.less.cache'); + } + } + } + break; + case 'db': + if (function_exists('wp_cache_flush')) wp_cache_flush(); + do_action('updraftplus_restored_db', array( + 'expected_oldsiteurl' => $this->old_siteurl, + 'expected_oldhome' => $this->old_home, + 'expected_oldcontent' => $this->old_content + ), $import_table_prefix); + + # N.B. flush_rewrite_rules() causes $wp_rewrite to become up to date again - important for the no_mod_rewrite() call + $this->flush_rewrite_rules(); + + if ($updraftplus->mod_rewrite_unavailable()) { + $updraftplus->log("Using Apache, with permalinks (".get_option('permalink_structure').") but no mod_rewrite enabled - enable it to make your permalinks work"); + $warn_no_rewrite = sprintf(__('You are using the %s webserver, but do not seem to have the %s module loaded.', 'updraftplus'), 'Apache', 'mod_rewrite').' '.sprintf(__('You should enable %s to make any pretty permalinks (e.g. %s) work', 'updraftplus'), 'mod_rewrite', 'http://example.com/my-page/'); + $updraftplus->log($warn_no_rewrite, 'warning-restore'); + } + + break; + default: + $this->chmod_if_needed($wp_filesystem_dir, FS_CHMOD_DIR, false, $wp_filesystem); + } + # db was already done + if ('db' != $type) do_action('updraftplus_restored_'.$type); + + return true; + + } + + private function move_existing_to_old($type, $get_dir, $wp_filesystem, $wp_filesystem_dir) { + + if (apply_filters('updraft_move_existing_to_old_short_circuit', false, $type, $this->ud_restore_options)) { + // Users of the filter should do their own logging + return; + } + + global $updraftplus; + $updraft_dir = $updraftplus->backups_dir_location(); + + // Firstly, if there's already an '-old' directory, get rid of it + + // Try filesystem-level move + $old_dir = $updraft_dir.'/'.$type.'-old'; + if (is_dir($old_dir)) { + $updraftplus->log_e('%s: This directory already exists, and will be replaced', $old_dir); + $updraftplus->remove_local_directory($old_dir); + } + + $move_old_destination = apply_filters('updraftplus_restore_move_old_mode', 0, $type, $this->ud_restore_options); + + if (0 == $move_old_destination && @mkdir($old_dir)) { + $updraftplus->log("Moving old data: filesystem method / updraft_dir is potentially possible"); + $move_old_destination = 1; + } + + # Try wp_filesystem instead + if ($wp_filesystem->exists($wp_filesystem_dir."-old")) { + // Is better to warn and delete the restore than abort mid-restore and leave inconsistent site + $updraftplus->log_e('%s: This directory already exists, and will be replaced', $wp_filesystem_dir."-old"); + # In theory, supplying true as the 3rd parameter achieves this; in practice, not always so (leads to support requests) + $wp_filesystem->delete($wp_filesystem_dir."-old", true); + if ($wp_filesystem->exists($wp_filesystem_dir."-old")) { + $updraftplus->log("Failed to remove existing directory (".$wp_filesystem_dir."-old"); + $failed_to_remove = true; + #return new WP_Error('old_move_failed', $this->strings['old_move_failed']); + } + } + + if (-1 != $move_old_destination && empty($failed_to_remove) && @$wp_filesystem->mkdir($wp_filesystem_dir."-old")) { + $updraftplus->log("Moving old data: can potentially use wp_filesystem method / -old"); + $move_old_destination += 2; + } + + if (0 == $move_old_destination) { + $updraftplus->log_e("File permissions do not allow the old data to be moved and retained; instead, it will be deleted."); + } + + $this->skin->feedback('moving_old'); + + # Firstly, try direct filesystem method into updraft_dir + if ($move_old_destination > 0 && 1 == $move_old_destination % 2) { + # The final 'true' forces direct filesystem access + $move_old = @$this->move_backup_in($get_dir, $updraft_dir.'/'.$type.'-old/' , 3, array(), $type, false, true); + if (is_wp_error($move_old)) $updraftplus->log_wp_error($move_old); + } + + # Try wp_filesystem method into -old if that failed + if (2 >= $move_old_destination && (0 == $move_old_destination % 2 || (!empty($move_old) && is_wp_error($move_old)))) { + $move_old = @$this->move_backup_in($wp_filesystem_dir, $wp_filesystem_dir."-old/" , 3, array(), $type); + #if (is_wp_error($move_old)) return $move_old; + if (is_wp_error($move_old)) $updraftplus->log_wp_error($move_old); + } + + # Finally, when all else fails, nuke it + if (-1 == $move_old_destination || 0 == $move_old_destination || (!empty($move_old) && is_wp_error($move_old))) { + if (-1 == $move_old_destination) { + $updraftplus->log("$type: $wp_filesystem_dir: deleting contents"); + } else { + $updraftplus->log("$type: $wp_filesystem_dir: deleting contents (as attempts to copy failed)"); + } + $del_files = $wp_filesystem->dirlist($wp_filesystem_dir, true, false); + if (empty($del_files)) $del_files = array(); + foreach ( $del_files as $file => $filestruc ) { + if (empty($file)) continue; + $wp_filesystem->delete($wp_filesystem_dir.'/'.$file, true); + } + } + + } + + private function add_ajax_restore_admin_footer() { + static $already = false; + if (!$already) { + $already = true; + add_action('admin_footer', array($this, 'admin_footer_ajax_restore')); + } + } + + public function admin_footer_ajax_restore() { +// TODO: The timestamp parameter is mandatory - we should abort (earlier) if there isn't one. + + global $updraftplus; + $nonce = $updraftplus->nonce; +// TODO: Apparently empty + $auth_code = esc_js($this->ajax_restore_auth_code); + + echo << + jQuery(document).ready(function() { + + backupinfo = { + action: 'updraft_ajaxrestore', + subaction: 'restore', + restorenonce: '$nonce', + ajaxauth: '$auth_code' + }; + +ENDHERE; + $multisite = 0; + $timestamp = $this->ud_backup_info['timestamp']; + if (!empty($_REQUEST['updraft_restorer_backup_info'])) { + // wp_unslash() does not exist until after WP 3.5 + if (function_exists('wp_unslash')) { + $backup_info = wp_unslash( $_REQUEST['updraft_restorer_backup_info'] ); + } else { + $backup_info = stripslashes_deep( $_REQUEST['updraft_restorer_backup_info'] ); + } + if (false != ($backup_info = json_decode($backup_info, true))) { + if (!empty($backup_info['timestamp'])) echo "\t\tbackupinfo.timestamp = '".esc_js($backup_info['timestamp'])."';\n"; + if (!empty($backup_info['created_by_version'])) echo "\t\tbackupinfo.created_by_version = '".esc_js($backup_info['created_by_version'])."';\n"; + echo "\t\tbackupinfo.multisite = ".((!empty($backup_info['multisite'])) ? '1' : '0').";\n"; + } + + } + + echo << 0) { + do_ajax_restore_queue(); + } + + }); + +ENDHERE; + } + + // First added in UD 1.9.47. We have only ever had reports of cached stuff from WP Super Cache being retained, so, being cautious, we will only clear that for now + public function clear_cache() { + // Functions called here need to not assume that the relevant plugin actually exists - they should check for any functions they intend to call, before calling them. + $this->clear_cache_wpsupercache(); + } + + // Adapted from wp_cache_clean_cache( $file_prefix, $all = false ) in WP Super Cache (wp-cache.php) + private function clear_cache_wpsupercache() { + $all = true; + + global $updraftplus, $cache_path, $wp_cache_object_cache; + + if ( $wp_cache_object_cache && function_exists( "reset_oc_version" ) ) reset_oc_version(); + + // Removed check: && wpsupercache_site_admin() + if ( $all == true && function_exists( 'prune_super_cache' ) ) { + if (!empty($cache_path)) { + $updraftplus->log_e("Clearing cached pages (%s)...", 'WP Super Cache'); + prune_super_cache( $cache_path, true ); + } + return true; + } + } + + private function search_for_folder($folder, $startat) { + if (!is_dir($startat)) return false; + # Exists in this folder? + if (is_dir($startat.'/'.$folder)) return trailingslashit($startat).$folder; + # Does not + if ($handle = opendir($startat)) { + while (($file = readdir($handle)) !== false) { + if ($file != '.' && $file != '..' && is_dir($startat).'/'.$file) { + $ss = $this->search_for_folder($folder, trailingslashit($startat).$file); + if (is_string($ss)) return $ss; + } + } + closedir($handle); + } + return false; + } + + # Returns an octal string (but not an octal number) + private function get_current_chmod($file, $wpfs = false) { + if (false == $wpfs) { + global $wp_filesystem; + $wpfs = $wp_filesystem; + } + # getchmod() is broken at least as recently as WP3.8 - see: https://core.trac.wordpress.org/ticket/26598 + return (is_a($wpfs, 'WP_Filesystem_Direct')) ? substr(sprintf("%06d", decoct(@fileperms($file))),3) : $wpfs->getchmod($file); + } + + # Returns a string in octal format + # $new_chmod should be an octal, i.e. what you'd pass to chmod() + function calculate_additive_chmod_oct($old_chmod, $new_chmod) { + # chmod() expects octal form, which means a preceding zero - see http://php.net/chmod + $old_chmod = sprintf("%04d", $old_chmod); + $new_chmod = sprintf("%04d", decoct($new_chmod)); + + for ($i=1; $i<=3; $i++) { + $oldbit = substr($old_chmod, $i, 1); + $newbit = substr($new_chmod, $i, 1); + for ($j=0; $j<=2; $j++) { + if (($oldbit & (1<<$j)) && !($newbit & (1<<$j))) { + $newbit = (string)($newbit | 1<<$j); + $new_chmod = sprintf("%04d", substr($new_chmod, 0, $i).$newbit.substr($new_chmod, $i+1)); + } + } + } + + return $new_chmod; + } + + # "If needed" means, "If the permissions are not already more permissive than this". i.e. This will not tighten permissions from what the user had before (we trust them) + # $chmod should be an octal - i.e. the same as you'd pass to chmod() + private function chmod_if_needed($dir, $chmod, $recursive = false, $wpfs = false, $suppress = true) { + + # Do nothing on Windows + if (strtoupper(substr(php_uname('s'), 0, 3)) === 'WIN') return true; + + if (false == $wpfs) { + global $wp_filesystem; + $wpfs = $wp_filesystem; + } + + $old_chmod = $this->get_current_chmod($dir, $wpfs); + + # Sanity fcheck + if (strlen($old_chmod) < 3) return; + + $new_chmod = $this->calculate_additive_chmod_oct($old_chmod, $chmod); + + # Don't fix what isn't broken + if (!$recursive && $new_chmod == $old_chmod) return true; + + $new_chmod = octdec($new_chmod); + + if ($suppress) { + return @$wpfs->chmod($dir, $new_chmod, $recursive); + } else { + return $wpfs->chmod($dir, $new_chmod, $recursive); + } + } + + // $dirnames: an array of preferred names + public function get_first_directory($working_dir, $dirnames) { + global $wp_filesystem, $updraftplus; + $fdirnames = array_flip($dirnames); + $dirlist = $wp_filesystem->dirlist($working_dir, true, false); + if (is_array($dirlist)) { + $move_from = false; + foreach ($dirlist as $name => $struc) { + if (isset($struc['type']) && 'd' != $struc['type']) continue; + if (false === $move_from) { + if (isset($fdirnames[$name])) { + $move_from = $working_dir . "/".$name; + } elseif (preg_match('/^([^\.].*)$/', $name, $fmatch)) { + // In the case of a third-party backup, the first entry may be the wrong entity. We could try a more sophisticated algorithm, but a third party backup requiring one has never been seen (and it is not easy to envisage what the algorithm might be). + if (empty($this->ud_foreign)) { + $first_entry = $working_dir."/".$fmatch[1]; + } + } + } + } + if ($move_from === false && isset($first_entry)) { + $updraftplus->log_e('Using directory from backup: %s', basename($first_entry)); + $move_from = $first_entry; + } + } else { + # That shouldn't happen. Fall back to default + $move_from = $working_dir."/".$dirnames[0]; + } + return $move_from; + } + + private function pre_sql_actions($import_table_prefix) { + + global $updraftplus; + + $import_table_prefix = apply_filters('updraftplus_restore_set_table_prefix', $import_table_prefix, $this->ud_backup_is_multisite); + + if (!is_string($import_table_prefix)) { + $this->maintenance_mode(false); + if ($import_table_prefix === false) { + $updraftplus->log(__('Please supply the requested information, and then continue.', 'updraftplus'), 'notice-restore'); + return false; + } elseif (is_wp_error($import_table_prefix)) { + return $import_table_prefix; + } else { + return new WP_Error('invalid_table_prefix', __('Error:', 'updraftplus').' '.serialize($import_table_prefix)); + } + } + + $updraftplus->log_e('New table prefix: %s', $import_table_prefix); + + return $import_table_prefix; + + } + + public function option_filter_permalink_structure($val) { + global $updraftplus; + return $updraftplus->option_filter_get('permalink_structure'); + } + + public function option_filter_page_on_front($val) { + global $updraftplus; + return $updraftplus->option_filter_get('page_on_front'); + } + + public function option_filter_rewrite_rules($val) { + global $updraftplus; + return $updraftplus->option_filter_get('rewrite_rules'); + } + + // The pass-by-reference on $import_table_prefix is due to historical refactoring + private function restore_backup_db($working_dir, $working_dir_localpath, &$import_table_prefix) { + + global $updraftplus; + + do_action('updraftplus_restore_db_pre'); + + # This is now a legacy option (at least on the front end), so we should not see it much + $this->prior_upload_path = get_option('upload_path'); + + // There is a file backup.db(.gz) inside the working directory + + # The 'off' check is for badly configured setups - http://wordpress.org/support/topic/plugin-wp-super-cache-warning-php-safe-mode-enabled-but-safe-mode-is-off + if (@ini_get('safe_mode') && 'off' != strtolower(@ini_get('safe_mode'))) { + $updraftplus->log(__('Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method.', 'updraftplus'), 'notice-restore'); + } + + $db_basename = 'backup.db.gz'; + if (!empty($this->ud_foreign)) { + $plugins = apply_filters('updraftplus_accept_archivename', array()); + + if (empty($plugins[$this->ud_foreign])) return new WP_Error('unknown', sprintf(__('Backup created by unknown source (%s) - cannot be restored.', 'updraftplus'), $this->ud_foreign)); + + if (!file_exists($working_dir_localpath.'/'.$db_basename) && file_exists($working_dir_localpath.'/backup.db')) { + $db_basename = 'backup.db'; + } elseif (!file_exists($working_dir_localpath.'/'.$db_basename) && file_exists($working_dir_localpath.'/backup.db.bz2')) { + $db_basename = 'backup.db.bz2'; + } + + if (!file_exists($working_dir_localpath.'/'.$db_basename)) { + $separatedb = empty($plugins[$this->ud_foreign]['separatedb']) ? false : true; + $filtered_db_name = apply_filters('updraftplus_foreign_dbfilename', false, $this->ud_foreign, $this->ud_backup_info, $working_dir_localpath, $separatedb); + if (is_string($filtered_db_name)) $db_basename = $filtered_db_name; + } + } + + // wp_filesystem has no gzopen method, so we switch to using the local filesystem (which is harmless, since we are performing read-only operations) + if (false === $db_basename || !is_readable($working_dir_localpath.'/'.$db_basename)) return new WP_Error('dbopen_failed',__('Failed to find database file','updraftplus')." ($working_dir/".$db_basename.")"); + + global $wpdb, $updraftplus; + + $this->skin->feedback('restore_database'); + + $is_plain = (substr($db_basename, -3, 3) == '.db'); + $is_bz2 = (substr($db_basename, -7, 7) == '.db.bz2'); + + // Read-only access: don't need to go through WP_Filesystem + if ($is_plain) { + $dbhandle = fopen($working_dir_localpath.'/'.$db_basename, 'r'); + } elseif ($is_bz2) { + if (!function_exists('bzopen')) { + $updraftplus->log_e("Your web server's PHP installation has these functions disabled: %s.", 'bzopen'); + $updraftplus->log_e('Your hosting company must enable these functions before %s can work.', __('restoration', 'updraftplus')); + } + $dbhandle = bzopen($working_dir_localpath.'/'.$db_basename, 'r'); + } else { + $dbhandle = gzopen($working_dir_localpath.'/'.$db_basename, 'r'); + } + if (!$dbhandle) return new WP_Error('dbopen_failed',__('Failed to open database file','updraftplus')); + + $this->line = 0; + + if (true == $this->use_wpdb) { + $updraftplus->log_e('Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)'); + } else { + $updraftplus->log("Using direct MySQL access; value of use_mysqli is: ".($this->use_mysqli ? '1' : '0')); + if ($this->use_mysqli) { + @mysqli_query($this->mysql_dbh, 'SET SESSION query_cache_type = OFF;'); + } else { + @mysql_query('SET SESSION query_cache_type = OFF;', $this->mysql_dbh ); + } + } + + // Find the supported engines - in case the dump had something else (case seen: saved from MariaDB with engine Aria; imported into plain MySQL without) + $supported_engines = $wpdb->get_results("SHOW ENGINES", OBJECT_K); + + $this->errors = 0; + $this->statements_run = 0; + $this->insert_statements_run = 0; + $this->tables_created = 0; + + $sql_line = ""; + $sql_type = -1; + + $this->start_time = microtime(true); + + $old_wpversion = ''; + $this->old_siteurl = ''; + $this->old_home = ''; + $this->old_content = ''; + $this->old_uploads = ''; + $this->old_table_prefix = (defined('UPDRAFTPLUS_OVERRIDE_IMPORT_PREFIX') && UPDRAFTPLUS_OVERRIDE_IMPORT_PREFIX) ? UPDRAFTPLUS_OVERRIDE_IMPORT_PREFIX : ''; + $old_siteinfo = array(); + $gathering_siteinfo = true; + + $this->create_forbidden = false; + $this->drop_forbidden = false; + $this->lock_forbidden = false; + + $this->last_error = ''; + $random_table_name = 'updraft_tmp_'.rand(0, 9999999).md5(microtime(true)); + + // The only purpose in funnelling queries directly here is to be able to get the error number + if ($this->use_wpdb) { + $req = $wpdb->query("CREATE TABLE $random_table_name (test INT)"); + // WPDB, for several query types, returns the number of rows changed; in distinction from an error, indicated by (bool)false + if (0 === $req) { $req = true; } + if (!$req) $this->last_error = $wpdb->last_error; + $this->last_error_no = false; + } else { + if ($this->use_mysqli) { + $req = mysqli_query($this->mysql_dbh, "CREATE TABLE $random_table_name (test INT)"); + } else { + $req = mysql_unbuffered_query("CREATE TABLE $random_table_name (test INT)", $this->mysql_dbh); + } + if (!$req) { + $this->last_error = ($this->use_mysqli) ? mysqli_error($this->mysql_dbh) : mysql_error($this->mysql_dbh); + $this->last_error_no = ($this->use_mysqli) ? mysqli_errno($this->mysql_dbh) : mysql_errno($this->mysql_dbh); + } + } + + if (!$req && ($this->use_wpdb || 1142 === $this->last_error_no)) { + $this->create_forbidden = true; + # If we can't create, then there's no point dropping + $this->drop_forbidden = true; + + $updraftplus->log(__('Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site.', 'updraftplus'), 'warning-restore'); + + $updraftplus->log('Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site.'); + + $updraftplus->log('Error was: '.$this->last_error.' ('.$this->last_error_no.')'); + } else { + + if (1142 === $this->lock_table($random_table_name)) { + $this->lock_forbidden = true; + $updraftplus->log("Database user has no permission to lock tables - will not lock after CREATE"); + } + + if ($this->use_wpdb) { + $req = $wpdb->query("DROP TABLE $random_table_name"); + // WPDB, for several query types, returns the number of rows changed; in distinction from an error, indicated by (bool)false + if (0 === $req) { $req = true; } + if (!$req) $this->last_error = $wpdb->last_error; + $this->last_error_no = false; + } else { + if ($this->use_mysqli) { + $req = mysqli_query($this->mysql_dbh, "DROP TABLE $random_table_name"); + } else { + $req = mysql_unbuffered_query("DROP TABLE $random_table_name", $this->mysql_dbh); + } + if (!$req) { + $this->last_error = ($this->use_mysqli) ? mysqli_error($this->mysql_dbh) : mysql_error($this->mysql_dbh); + $this->last_error_no = ($this->use_mysqli) ? mysqli_errno($this->mysql_dbh) : mysql_errno($this->mysql_dbh); + } + } + if (!$req && ($this->use_wpdb || $this->last_error_no === 1142)) { + $this->drop_forbidden = true; + + $updraftplus->log(sprintf('Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)', '('.$this->last_error.', '.$this->last_error_no.')')); + + $updraftplus->log(sprintf(__('Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)', 'updraftplus'), '('.$this->last_error.', '.$this->last_error_no.')'), 'warning-restore'); + + } + } + + $restoring_table = ''; + + $this->max_allowed_packet = $updraftplus->get_max_packet_size(); + + $updraftplus->log("Entering maintenance mode"); + $this->maintenance_mode(true); + + // N.B. There is no such function as bzeof() - we have to detect that another way + while (($is_plain && !feof($dbhandle)) || (!$is_plain && (($is_bz2) || (!$is_bz2 && !gzeof($dbhandle))))) { + // Up to 1Mb + if ($is_plain) { + $buffer = rtrim(fgets($dbhandle, 1048576)); + } elseif ($is_bz2) { + if (!isset($bz2_buffer)) $bz2_buffer = ''; + $buffer = ''; + if (strlen($bz2_buffer) < 524288) $bz2_buffer .= bzread($dbhandle, 1048576); + if (bzerrno($dbhandle) !== 0) { + $updraftplus->log("bz2 error: ".bzerrstr($dbhandle)." (code: ".bzerrno($bzhandle).")"); + break; + } + if (false !== $bz2_buffer && '' !== $bz2_buffer) { + if (false !== ($p = strpos($bz2_buffer, "\n"))) { + $buffer .= substr($bz2_buffer, 0, $p+1); + $bz2_buffer = substr($bz2_buffer, $p+1); + } else { + $buffer .= $bz2_buffer; + $bz2_buffer = ''; + } + } else { + break; + } + $buffer = rtrim($buffer); + } else { + $buffer = rtrim(gzgets($dbhandle, 1048576)); + } + + // Discard comments + if (empty($buffer) || substr($buffer, 0, 1) == '#' || preg_match('/^--(\s|$)/', substr($buffer, 0, 3))) { + if ('' == $this->old_siteurl && preg_match('/^\# Backup of: (http(.*))$/', $buffer, $matches)) { + $this->old_siteurl = untrailingslashit($matches[1]); + $updraftplus->log("Backup of: ".$this->old_siteurl); + $updraftplus->log(sprintf(__('Backup of: %s', 'updraftplus'), $this->old_siteurl), 'notice-restore', 'backup-of'); + do_action('updraftplus_restore_db_record_old_siteurl', $this->old_siteurl); + + $this->save_configuration_bundle(); + + } elseif (false === $this->created_by_version && preg_match('/^\# Created by UpdraftPlus version ([\d\.]+)/', $buffer, $matches)) { + $this->created_by_version = trim($matches[1]); + $updraftplus->log(__('Backup created by:', 'updraftplus').' '.$this->created_by_version, 'notice-restore', 'created-by'); + $updraftplus->log('Backup created by: '.$this->created_by_version); + } elseif ('' == $this->old_home && preg_match('/^\# Home URL: (http(.*))$/', $buffer, $matches)) { + $this->old_home = untrailingslashit($matches[1]); + if ($this->old_siteurl && $this->old_home != $this->old_siteurl) { + $updraftplus->log(__('Site home:', 'updraftplus').' '.$this->old_home, 'notice-restore', 'site-home'); + $updraftplus->log('Site home: '.$this->old_home); + } + do_action('updraftplus_restore_db_record_old_home', $this->old_home); + } elseif ('' == $this->old_content && preg_match('/^\# Content URL: (http(.*))$/', $buffer, $matches)) { + $this->old_content = untrailingslashit($matches[1]); + $updraftplus->log(__('Content URL:', 'updraftplus').' '.$this->old_content, 'notice-restore', 'content-url'); + $updraftplus->log('Content URL: '.$this->old_content); + do_action('updraftplus_restore_db_record_old_content', $this->old_content); + } elseif ('' == $this->old_uploads && preg_match('/^\# Uploads URL: (http(.*))$/', $buffer, $matches)) { + $this->old_uploads = untrailingslashit($matches[1]); + $updraftplus->log(__('Uploads URL:', 'updraftplus').' '.$this->old_uploads, 'notice-restore', 'uploads-url'); + $updraftplus->log('Uploads URL: '.$this->old_uploads); + do_action('updraftplus_restore_db_record_old_uploads', $this->old_uploads); + } elseif ('' == $this->old_table_prefix && (preg_match('/^\# Table prefix: (\S+)$/', $buffer, $matches) || preg_match('/^-- Table Prefix: (\S+)$/i', $buffer, $matches))) { + # We also support backwpup style: + # -- Table Prefix: wp_ + $this->old_table_prefix = $matches[1]; + $updraftplus->log(__('Old table prefix:', 'updraftplus').' '.$this->old_table_prefix, 'notice-restore', 'old-table-prefix'); + $updraftplus->log("Old table prefix: ".$this->old_table_prefix); + } elseif ($gathering_siteinfo && preg_match('/^\# Site info: (\S+)$/', $buffer, $matches)) { + if ('end' == $matches[1]) { + $gathering_siteinfo = false; + // Sanity checks + if (isset($old_siteinfo['multisite']) && !$old_siteinfo['multisite'] && is_multisite()) { + // Just need to check that you're crazy + //if (!defined('UPDRAFTPLUS_EXPERIMENTAL_IMPORTINTOMULTISITE') || UPDRAFTPLUS_EXPERIMENTAL_IMPORTINTOMULTISITE != true) { + // return new WP_Error('multisite_error', $this->strings['multisite_error']); + //} + // Got the needed code? + if (!class_exists('UpdraftPlusAddOn_MultiSite') || !class_exists('UpdraftPlus_Addons_Migrator')) { + return new WP_Error('missing_addons', sprintf(__('To import an ordinary WordPress site into a multisite installation requires %s.', 'updraftplus'), 'UpdraftPlus Premium')); + } + } + } elseif (preg_match('/^([^=]+)=(.*)$/', $matches[1], $kvmatches)) { + $key = $kvmatches[1]; + $val = $kvmatches[2]; + $updraftplus->log(__('Site information:','updraftplus')." $key = $val", 'notice-restore', 'site-information'); + $updraftplus->log("Site information: $key=$val"); + $old_siteinfo[$key]=$val; + if ('multisite' == $key) { + $this->ud_backup_is_multisite = ($val) ? 1 : 0; + } + } + } + continue; + } + + // Detect INSERT commands early, so that we can split them if necessary + if (preg_match('/^\s*(insert into \`?([^\`]*)\`?\s+(values|\())/i', $sql_line.$buffer, $matches)) { + $this->table_name = $matches[2]; + $sql_type = 3; + $insert_prefix = $matches[1]; + } + + // Deal with case where adding this line will take us over the MySQL max_allowed_packet limit - must split, if we can (if it looks like consecutive rows) + // Allow a 100-byte margin for error (including searching/replacing table prefix) + if (3 == $sql_type && $sql_line && strlen($sql_line.$buffer) > ($this->max_allowed_packet - 100) && preg_match('/,\s*$/', $sql_line) && preg_match('/^\s*\(/', $buffer)) { + // Remove the final comma; replace with semi-colon + $sql_line = substr(rtrim($sql_line), 0, strlen($sql_line)-1).';'; + if ('' != $this->old_table_prefix && $import_table_prefix != $this->old_table_prefix) $sql_line = $updraftplus->str_replace_once($this->old_table_prefix, $import_table_prefix, $sql_line); + # Run the SQL command; then set up for the next one. + $this->line++; + $updraftplus->log(__("Split line to avoid exceeding maximum packet size", 'updraftplus')." (".strlen($sql_line)." + ".strlen($buffer)." : ".$this->max_allowed_packet.")", 'notice-restore'); + $updraftplus->log("Split line to avoid exceeding maximum packet size (".strlen($sql_line)." + ".strlen($buffer)." : ".$this->max_allowed_packet.")"); + $do_exec = $this->sql_exec($sql_line, $sql_type, $import_table_prefix); + if (is_wp_error($do_exec)) return $do_exec; + # Reset, then carry on + $sql_line = $insert_prefix." "; + } + + $sql_line .= $buffer; + # Do we have a complete line yet? We used to just test the final character for ';' here (up to 1.8.12), but that was too unsophisticated + if ( + (3 == $sql_type && !preg_match('/\)\s*;$/', substr($sql_line, -3, 3))) + || (3 != $sql_type && ';' != substr($sql_line, -1, 1)) + ) continue; + + $this->line++; + + # We now have a complete line - process it + + if (3 == $sql_type && $sql_line && strlen($sql_line) > $this->max_allowed_packet) { + $this->log_oversized_packet($sql_line); + # Reset + $sql_line = ''; + $sql_type = -1; + # If this is the very first SQL line of the options table, we need to bail; it's essential + if (0 == $this->insert_statements_run && $restoring_table && $restoring_table == $import_table_prefix.'options') { + $updraftplus->log("Leaving maintenance mode"); + $this->maintenance_mode(false); + return new WP_Error('initial_db_error', sprintf(__('An error occurred on the first %s command - aborting run', 'updraftplus'), 'INSERT (options)')); + } + continue; + } + + // The timed overhead of this is negligible + if (preg_match('/^\s*drop table (if exists )?\`?([^\`]*)\`?\s*;/i', $sql_line, $matches)) { + $sql_type = 1; + + if (!isset($printed_new_table_prefix)) { + $import_table_prefix = $this->pre_sql_actions($import_table_prefix); + if (false===$import_table_prefix || is_wp_error($import_table_prefix)) return $import_table_prefix; + $printed_new_table_prefix = true; + } + + $this->table_name = $matches[2]; + + // Legacy, less reliable - in case it was not caught before + if ('' == $this->old_table_prefix && preg_match('/^([a-z0-9]+)_.*$/i', $this->table_name, $tmatches)) { + $this->old_table_prefix = $tmatches[1].'_'; + $updraftplus->log(__('Old table prefix:', 'updraftplus').' '.$this->old_table_prefix, 'notice-restore', 'old-table-prefix'); + $updraftplus->log("Old table prefix (detected from first table): ".$this->old_table_prefix); + } + + $this->new_table_name = ($this->old_table_prefix) ? $updraftplus->str_replace_once($this->old_table_prefix, $import_table_prefix, $this->table_name) : $this->table_name; + + if ('' != $this->old_table_prefix && $import_table_prefix != $this->old_table_prefix) { + $sql_line = $updraftplus->str_replace_once($this->old_table_prefix, $import_table_prefix, $sql_line); + } + + if (empty($matches[1])) { + // Seen with some foreign backups + $sql_line = preg_replace('/drop table/i', 'drop table if exists', $sql_line, 1); + } + + $this->tables_been_dropped[] = $this->new_table_name; + + } elseif (preg_match('/^\s*create table \`?([^\`\(]*)\`?\s*\(/i', $sql_line, $matches)) { + + $sql_type = 2; + $this->insert_statements_run = 0; + $this->table_name = $matches[1]; + + // Legacy, less reliable - in case it was not caught before. We added it in here (CREATE) as well as in DROP because of SQL dumps which lack DROP statements. + if ('' == $this->old_table_prefix && preg_match('/^([a-z0-9]+)_.*$/i', $this->table_name, $tmatches)) { + $this->old_table_prefix = $tmatches[1].'_'; + $updraftplus->log(__('Old table prefix:', 'updraftplus').' '.$this->old_table_prefix, 'notice-restore', 'old-table-prefix'); + $updraftplus->log("Old table prefix (detected from creating first table): ".$this->old_table_prefix); + } + + // MySQL 4.1 outputs TYPE=, but accepts ENGINE=; 5.1 onwards accept *only* ENGINE= + $sql_line = $updraftplus->str_lreplace('TYPE=', 'ENGINE=', $sql_line); + + if (empty($printed_new_table_prefix)) { + $import_table_prefix = $this->pre_sql_actions($import_table_prefix); + if (false === $import_table_prefix || is_wp_error($import_table_prefix)) return $import_table_prefix; + $printed_new_table_prefix = true; + } + + $this->new_table_name = ($this->old_table_prefix) ? $updraftplus->str_replace_once($this->old_table_prefix, $import_table_prefix, $this->table_name) : $this->table_name; + + // This CREATE TABLE command may be the de-facto mark for the end of processing a previous table (which is so if this is not the first table in the SQL dump) + if ($restoring_table) { + + # Attempt to reconnect if the DB connection dropped (may not succeed, of course - but that will soon become evident) + $updraftplus->check_db_connection($this->wpdb_obj); + + // After restoring the options table, we can set old_siteurl if on legacy (i.e. not already set) + if ($restoring_table == $import_table_prefix.'options') { + if ('' == $this->old_siteurl || '' == $this->old_home || '' == $this->old_content) { + global $updraftplus_addons_migrator; + if (!empty($updraftplus_addons_migrator->new_blogid)) switch_to_blog($updraftplus_addons_migrator->new_blogid); + + if ('' == $this->old_siteurl) { + $this->old_siteurl = untrailingslashit($wpdb->get_row("SELECT option_value FROM $wpdb->options WHERE option_name='siteurl'")->option_value); + do_action('updraftplus_restore_db_record_old_siteurl', $this->old_siteurl); + } + if ('' == $this->old_home) { + $this->old_home = untrailingslashit($wpdb->get_row("SELECT option_value FROM $wpdb->options WHERE option_name='home'")->option_value); + do_action('updraftplus_restore_db_record_old_home', $this->old_home); + } + if ('' == $this->old_content) { + $this->old_content = $this->old_siteurl.'/wp-content'; + do_action('updraftplus_restore_db_record_old_content', $this->old_content); + } + if (!empty($updraftplus_addons_migrator->new_blogid)) restore_current_blog(); + } + } + + if ($restoring_table != $this->new_table_name) $this->restored_table($restoring_table, $import_table_prefix, $this->old_table_prefix); + + } + + $engine = "(?)"; $engine_change_message = ''; + if (preg_match('/ENGINE=([^\s;]+)/', $sql_line, $eng_match)) { + $engine = $eng_match[1]; + if (isset($supported_engines[$engine])) { + #echo sprintf(__('Requested table engine (%s) is present.', 'updraftplus'), $engine); + if ('myisam' == strtolower($engine)) { + $sql_line = preg_replace('/PAGE_CHECKSUM=\d\s?/', '', $sql_line, 1); + } + } else { + $engine_change_message = sprintf(__('Requested table engine (%s) is not present - changing to MyISAM.', 'updraftplus'), $engine)."
        "; + $sql_line = $updraftplus->str_lreplace("ENGINE=$eng_match", "ENGINE=MyISAM", $sql_line); + // Remove (M)aria options + if ('maria' == strtolower($engine) || 'aria' == strtolower($engine)) { + $sql_line = preg_replace('/PAGE_CHECKSUM=\d\s?/', '', $sql_line, 1); + $sql_line = preg_replace('/TRANSACTIONAL=\d\s?/', '', $sql_line, 1); + } + } + } + + $print_line = sprintf(__('Processing table (%s)','updraftplus'), $engine).": ".$this->table_name; + $logline = "Processing table ($engine): ".$this->table_name; + if ('' != $this->old_table_prefix && $import_table_prefix != $this->old_table_prefix) { + if ($this->restore_this_table($this->table_name)) { + $print_line .= ' - '.__('will restore as:', 'updraftplus').' '.htmlspecialchars($this->new_table_name); + $logline .= " - will restore as: ".$this->new_table_name; + } else { + $logline .= ' - skipping'; + } + $sql_line = $updraftplus->str_replace_once($this->old_table_prefix, $import_table_prefix, $sql_line); + } + $updraftplus->log($logline); + $updraftplus->log($print_line, 'notice-restore'); + $restoring_table = $this->new_table_name; + if ($engine_change_message) $updraftplus->log($engine_change_message, 'notice-restore'); + + } elseif (preg_match('/^\s*(insert into \`?([^\`]*)\`?\s+(values|\())/i', $sql_line, $matches)) { + $sql_type = 3; + $this->table_name = $matches[2]; + if ('' != $this->old_table_prefix && $import_table_prefix != $this->old_table_prefix) $sql_line = $updraftplus->str_replace_once($this->old_table_prefix, $import_table_prefix, $sql_line); + } elseif (preg_match('/^\s*(\/\*\!40000 )?(alter|lock) tables? \`?([^\`\(]*)\`?\s+(write|disable|enable)/i', $sql_line, $matches)) { + # Only binary mysqldump produces this pattern (LOCK TABLES `table` WRITE, ALTER TABLE `table` (DISABLE|ENABLE) KEYS) + $sql_type = 4; + if ('' != $this->old_table_prefix && $import_table_prefix != $this->old_table_prefix) $sql_line = $updraftplus->str_replace_once($this->old_table_prefix, $import_table_prefix, $sql_line); + } elseif (preg_match('/^(un)?lock tables/i', $sql_line)) { + # BackWPup produces these + $sql_type = 5; + } elseif (preg_match('/^(create|drop) database /i', $sql_line)) { + # WPB2D produces these, as do some phpMyAdmin dumps + $sql_type = 6; + } elseif (preg_match('/^use /i', $sql_line)) { + # WPB2D produces these, as do some phpMyAdmin dumps + $sql_type = 7; + } elseif (preg_match('#/\*\!40\d+ SET NAMES (.*)\*\/#', $sql_line, $smatches)) { + $sql_type = 8; + $this->set_names = rtrim($smatches[1]); + } else { + # Prevent the previous value of $sql_type being retained for an unknown type + $sql_type = 0; + } + +// if (5 !== $sql_type) { + if ($sql_type != 6 && $sql_type != 7) { + $do_exec = $this->sql_exec($sql_line, $sql_type); + if (is_wp_error($do_exec)) return $do_exec; + } else { + $updraftplus->log("Skipped SQL statement (unwanted type=$sql_type): $sql_line"); + } + + # Reset + $sql_line = ''; + $sql_type = -1; + + } + + if (!empty($this->lock_forbidden)) { + $updraftplus->log("Leaving maintenance mode"); + } else { + $updraftplus->log("Unlocking database and leaving maintenance mode"); + $this->unlock_tables(); + } + $this->maintenance_mode(false); + + if ($restoring_table) $this->restored_table($restoring_table, $import_table_prefix, $this->old_table_prefix); + + $time_taken = microtime(true) - $this->start_time; + $updraftplus->log_e('Finished: lines processed: %d in %.2f seconds', $this->line, $time_taken); + if ($is_plain) { + fclose($dbhandle); + } elseif ($is_bz2) { + bzclose($dbhandle); + } else { + gzclose($dbhandle); + } + + global $wp_filesystem; + + $wp_filesystem->delete($working_dir.'/'.$db_basename, false, 'f'); + return true; + + } + + private function lock_table($table) { + + // Not yet working + return true; + + global $updraftplus; + $table = $updraftplus->backquote($table); + + if ($this->use_wpdb) { + $req = $wpdb->query("LOCK TABLES $table WRITE;"); + } else { + if ($this->use_mysqli) { + $req = mysqli_query($this->mysql_dbh, "LOCK TABLES $table WRITE;"); + } else { + $req = mysql_unbuffered_query("LOCK TABLES $table WRITE;", $this->mysql_dbh); + } + if (!$req) { + $lock_error_no = $this->use_mysqli ? mysqli_errno($this->mysql_dbh) : mysql_errno($this->mysql_dbh); + } + } + if (!$req && ($this->use_wpdb || $lock_error_no === 1142)) { + // Permission denied + return 1142; + } + return true; + } + + public function unlock_tables() { + return; + // Not yet working + if ($this->use_wpdb) { + $wpdb->query("UNLOCK TABLES;"); + } elseif ($this->use_mysqli) { + $req = mysqli_query($this->mysql_dbh, "UNLOCK TABLES;"); + } else { + $req = mysql_unbuffered_query("UNLOCK TABLES;"); + } + } + + // Save configuration bundle, ready to restore it once the options table has been restored + private function save_configuration_bundle() { + $this->configuration_bundle = array(); + // Some items must always be saved + restored; others only on a migration + // Remember, if modifying this, that a restoration can include restoring a destroyed site from a backup onto a fresh WP install on the same URL. So, it is not necessarily desirable to retain the current settings and drop the ones in the backup. + $keys_to_save = array('updraft_remotesites', 'updraft_migrator_localkeys', 'updraft_central_localkeys'); + + if ($this->old_siteurl != $this->our_siteurl || @constant('UPDRAFTPLUS_RESTORE_ALL_SETTINGS')) { + global $updraftplus; + $keys_to_save = array_merge($keys_to_save, $updraftplus->get_settings_keys()); + $keys_to_save[] = 'updraft_backup_history'; + } + + foreach ($keys_to_save as $key) { + $this->configuration_bundle[$key] = UpdraftPlus_Options::get_updraft_option($key); + } + } + + // The table here is just for logging/info. The actual restoration itself is done via the standard options class. + private function restore_configuration_bundle($table) { + + if (!is_array($this->configuration_bundle)) return; + global $updraftplus; + $updraftplus->log("Restoring prior UD configuration (table: $table; keys: ".count($this->configuration_bundle).")"); + foreach ($this->configuration_bundle as $key => $value) { + UpdraftPlus_Options::delete_updraft_option($key); + UpdraftPlus_Options::update_updraft_option($key, $value); + } + } + + private function log_oversized_packet($sql_line) { + global $updraftplus; + $logit = substr($sql_line, 0, 100); + $updraftplus->log(sprintf("An SQL line that is larger than the maximum packet size and cannot be split was found: %s", '('.strlen($sql_line).', '.$logit.' ...)')); + + $updraftplus->log(__('Warning:', 'updraftplus').' '.sprintf(__("An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s", 'updraftplus'), '('.strlen($sql_line).', '.$this->max_allowed_packet.', '.$logit.' ...)'), 'notice-restore'); + } + + private function restore_this_table($table_name) { + + global $updraftplus; + $unprefixed_table_name = substr($table_name, strlen($this->old_table_prefix)); + + // First, check whether it's a multisite site which we're not restoring. This is stored in restore_this_site (once we know the site). + if (!empty($this->ud_multisite_selective_restore)) { + if (preg_match('/^(\d+)_.*$/', $unprefixed_table_name, $matches)) { + $site_id = $matches[1]; + + if (!isset($this->restore_this_site[$site_id])) { + $this->restore_this_site[$site_id] = apply_filters( + 'updraftplus_restore_this_site', + true, + $site_id, + $unprefixed_table_name, + $this->ud_restore_options + ); + } + + if (false === $this->restore_this_site[$site_id]) { + // The first time it's looked into, it gets logged + $updraftplus->log_e('Skipping site %s: this table (%s) and others from the site will not be restored', $site_id, $table_name); + $this->restore_this_site[$site_id] = 0; + } + + if (!$this->restore_this_site[$site_id]) { + return false; + } + + } + + } + + // Secondly, if we're still intending to proceed, check the table specifically + if (!isset($this->restore_this_table[$table_name])) { + + $this->restore_this_table[$table_name] = apply_filters( + 'updraftplus_restore_this_table', + true, + $unprefixed_table_name, + $this->ud_restore_options + ); + + if (false === $this->restore_this_table[$table_name]) { + // The first time it's looked into, it gets logged + $updraftplus->log_e('Skipping table %s: this table will not be restored', $table_name); + $this->restore_this_table[$table_name] = 0; + } + + } + + return $this->restore_this_table[$table_name]; + } + + # UPDATE is sql_type=5 (not used in the function, but used in Migrator and so noted here for reference) + # $import_table_prefix is only use in one place in this function (long INSERTs), and otherwise need/should not be supplied + public function sql_exec($sql_line, $sql_type, $import_table_prefix = '', $check_skipping = true) { + + global $wpdb, $updraftplus; + + if ($check_skipping && !empty($this->table_name) && !$this->restore_this_table($this->table_name)) return; + + $ignore_errors = false; + # Type 2 = CREATE TABLE + if (2 == $sql_type && $this->create_forbidden) { + $updraftplus->log_e('Cannot create new tables, so skipping this command (%s)', htmlspecialchars($sql_line)); + $req = true; + } else { + + if (2 == $sql_type && !$this->drop_forbidden) { + # We choose, for now, to be very conservative - we only do the apparently-missing drop if we have never seen any drop - i.e. assume that in SQL dumps with missing DROPs, that it's because there are no DROPs at all + if (!in_array($this->new_table_name, $this->tables_been_dropped)) { + $updraftplus->log_e('Table to be implicitly dropped: %s', $this->new_table_name); + $this->sql_exec('DROP TABLE IF EXISTS '.esc_sql($this->new_table_name), 1, '', false); + $this->tables_been_dropped[] = $this->new_table_name; + } + } + + // Type 1 = DROP TABLE + if (1 == $sql_type) { + if ($this->drop_forbidden) { + $sql_line = "DELETE FROM ".$updraftplus->backquote($this->new_table_name); + $updraftplus->log_e('Cannot drop tables, so deleting instead (%s)', $sql_line); + $ignore_errors = true; + } + } + + if (3 == $sql_type && $sql_line && strlen($sql_line) > $this->max_allowed_packet) { + $this->log_oversized_packet($sql_line); + # If this is the very first SQL line of the options table, we need to bail; it's essential + $this->errors++; + if (0 == $this->insert_statements_run && $this->new_table_name && $this->new_table_name == $import_table_prefix.'options') { + $updraftplus->log("Leaving maintenance mode"); + $this->maintenance_mode(false); + return new WP_Error('initial_db_error', sprintf(__('An error occurred on the first %s command - aborting run','updraftplus'), 'INSERT (options)')); + } + return false; + } + + if ($this->use_wpdb) { + $req = $wpdb->query($sql_line); + // WPDB, for several query types, returns the number of rows changed; in distinction from an error, indicated by (bool)false + if (0 === $req) { $req = true; } + if (!$req) $this->last_error = $wpdb->last_error; + } else { + if ($this->use_mysqli) { + $req = mysqli_query($this->mysql_dbh, $sql_line); + if (!$req) $this->last_error = mysqli_error($this->mysql_dbh); + } else { + $req = mysql_unbuffered_query($sql_line, $this->mysql_dbh); + if (!$req) $this->last_error = mysql_error($this->mysql_dbh); + } + } + if (3 == $sql_type) $this->insert_statements_run++; + if (1 == $sql_type) $this->tables_been_dropped[] = $this->new_table_name; + $this->statements_run++; + } + + if (!$req) { + if (!$ignore_errors) $this->errors++; + $print_err = (strlen($sql_line) > 100) ? substr($sql_line, 0, 100).' ...' : $sql_line; + $updraftplus->log(sprintf(_x('An error (%s) occurred:', 'The user is being told the number of times an error has happened, e.g. An error (27) occurred', 'updraftplus'), $this->errors)." - ".$this->last_error." - ".__('the database query being run was:','updraftplus').' '.$print_err, 'notice-restore'); + $updraftplus->log("An error (".$this->errors.") occurred: ".$this->last_error." - SQL query was (type=$sql_type): ".substr($sql_line, 0, 65536)); + + // First command is expected to be DROP TABLE + if (1 == $this->errors && 2 == $sql_type && 0 == $this->tables_created) { + if ($this->drop_forbidden) { + $updraftplus->log_e("Create table failed - probably because there is no permission to drop tables and the table already exists; will continue"); + } else { + $updraftplus->log("Leaving maintenance mode"); + $this->maintenance_mode(false); + return new WP_Error('initial_db_error', sprintf(__('An error occurred on the first %s command - aborting run','updraftplus'), 'CREATE TABLE')); + } + } elseif (2 == $sql_type && 0 == $this->tables_created && $this->drop_forbidden) { + // Decrease error counter again; otherwise, we'll cease if there are >=50 tables + if (!$ignore_errors) $this->errors--; + } elseif (8 == $sql_type && 1 == $this->errors) { + $updraftplus->log("Aborted: SET NAMES ".$this->set_names." failed: maintenance mode"); + $this->maintenance_mode(false); + $extra_msg = ''; + $dbv = $wpdb->db_version(); + if (strtolower($this->set_names) == 'utf8mb4' && $dbv && version_compare($dbv, '5.2.0', '<=')) { + $extra_msg = ' '.__('This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database.', 'updraftplus').' '.sprintf(__('This database needs to be deployed on MySQL version %s or later.', 'updraftplus'), '5.5'); + } + return new WP_Error('initial_db_error', sprintf(__('An error occurred on the first %s command - aborting run','updraftplus'), 'SET NAMES').'. '.sprintf(__('To use this backup, your database server needs to support the %s character set.', 'updraftplus'), $this->set_names).$extra_msg); + } + + if ($this->errors > 49) { + $this->maintenance_mode(false); + return new WP_Error('too_many_db_errors', __('Too many database errors have occurred - aborting','updraftplus')); + } + } elseif ($sql_type == 2) { + if (!$this->lock_forbidden) $this->lock_table($this->new_table_name); + $this->tables_created++; + } + + if ($this->line >0 && ($this->line)%50 == 0) { + if ($this->line > $this->line_last_logged && (($this->line)%250 == 0 || $this->line < 250)) { + $this->line_last_logged = $this->line; + $time_taken = microtime(true) - $this->start_time; + $updraftplus->log_e('Database queries processed: %d in %.2f seconds',$this->line, $time_taken); + } + } + return $req; + } + +// function option_filter($which) { +// if (strpos($which, 'pre_option') !== false) { echo "OPT_FILT: $which
        \n"; } +// return false; +// } + + private function flush_rewrite_rules() { + + // We have to deal with the fact that the procedures used call get_option, which could be looking at the wrong table prefix, or have the wrong thing cached + + global $updraftplus_addons_migrator; + if (!empty($updraftplus_addons_migrator->new_blogid)) switch_to_blog($updraftplus_addons_migrator->new_blogid); + + foreach (array('permalink_structure', 'rewrite_rules', 'page_on_front') as $opt) { + add_filter('pre_option_'.$opt, array($this, 'option_filter_'.$opt)); + } + + global $wp_rewrite; + $wp_rewrite->init(); + // Don't do this: it will cause rules created by plugins that weren't active at the start of the restore run to be lost + # flush_rewrite_rules(true); + + if ( function_exists( 'save_mod_rewrite_rules' ) ) save_mod_rewrite_rules(); + if ( function_exists( 'iis7_save_url_rewrite_rules' ) ) iis7_save_url_rewrite_rules(); + + foreach (array('permalink_structure', 'rewrite_rules', 'page_on_front') as $opt) { + remove_filter('pre_option_'.$opt, array($this, 'option_filter_'.$opt)); + } + + if (!empty($updraftplus_addons_migrator->new_blogid)) restore_current_blog(); + + } + + private function restored_table($table, $import_table_prefix, $old_table_prefix) { + + $table_without_prefix = substr($table, strlen($import_table_prefix)); + + if (isset($this->restore_this_table[$old_table_prefix.$table_without_prefix]) && !$this->restore_this_table[$old_table_prefix.$table_without_prefix]) return; + + global $wpdb, $updraftplus; + + if ($table == $import_table_prefix.UpdraftPlus_Options::options_table()) { + // This became necessary somewhere around WP 4.5 - otherwise deleting and re-saving options stopped working + wp_cache_flush(); + $this->restore_configuration_bundle($table); + } + + if (preg_match('/^([\d+]_)?options$/', substr($table, strlen($import_table_prefix)), $matches)) { + // The second prefix here used to have a '!$this->is_multisite' on it (i.e. 'options' table on non-multisite). However, the user_roles entry exists in the main options table on multisite too. + if (($this->is_multisite && !empty($matches[1])) || $table == $import_table_prefix.'options') { + + $mprefix = empty($matches[1]) ? '' : $matches[1]; + + $new_table_name = $import_table_prefix.$mprefix."options"; + + // WordPress has an option name predicated upon the table prefix. Yuk. + if ($import_table_prefix != $old_table_prefix) { + $updraftplus->log("Table prefix has changed: changing options table field(s) accordingly (".$mprefix."options)"); + $print_line = sprintf(__('Table prefix has changed: changing %s table field(s) accordingly:', 'updraftplus'),'option').' '; + if (false === $wpdb->query("UPDATE $new_table_name SET option_name='${import_table_prefix}".$mprefix."user_roles' WHERE option_name='${old_table_prefix}".$mprefix."user_roles' LIMIT 1")) { + $print_line .= __('Error','updraftplus'); + $updraftplus->log("Error when changing options table fields: ".$wpdb->last_error); + } else { + $updraftplus->log("Options table fields changed OK"); + $print_line .= __('OK', 'updraftplus'); + } + $updraftplus->log($print_line, 'notice-restore'); + } + + // Now deal with the situation where the imported database sets a new over-ride upload_path that is absolute - which may not be wanted + $new_upload_path = $wpdb->get_row($wpdb->prepare("SELECT option_value FROM ${import_table_prefix}".$mprefix."options WHERE option_name = %s LIMIT 1", 'upload_path')); + $new_upload_path = (is_object($new_upload_path)) ? $new_upload_path->option_value : ''; + // The danger situation is absolute and points somewhere that is now perhaps not accessible at all + + if (!empty($new_upload_path) && $new_upload_path != $this->prior_upload_path && (strpos($new_upload_path, '/') === 0) || preg_match('#^[A-Za-z]:[/\\\]#', $new_upload_path)) { + + // $this->old_siteurl != untrailingslashit(site_url()) is not a perfect proxy for "is a migration" (other possibilities exist), but since the upload_path option should not exist since WP 3.5 anyway, the chances of other possibilities are vanishingly small + if (!file_exists($new_upload_path) || $this->old_siteurl != $this->our_siteurl) { + + if (!file_exists($new_upload_path)) { + $updraftplus->log_e("Uploads path (%s) does not exist - resetting (%s)", $new_upload_path, $this->prior_upload_path); + } else { + $updraftplus->log_e("Uploads path (%s) has changed during a migration - resetting (to: %s)", $new_upload_path, $this->prior_upload_path); + } + if (false === $wpdb->query("UPDATE ${import_table_prefix}".$mprefix."options SET option_value='".esc_sql($this->prior_upload_path)."' WHERE option_name='upload_path' LIMIT 1")) { + $updraftplus->log(__('Error','updraftplus'), 'notice-restore'); + $updraftplus->log("Error when changing upload path: ".$wpdb->last_error); + $updraftplus->log("Failed"); + } + #update_option('upload_path', $this->prior_upload_path); + } + } + + # TODO:Do on all WPMU tables + if ($table == $import_table_prefix.'options') { + # Bad plugin that hard-codes path references - https://wordpress.org/plugins/custom-content-type-manager/ + $cctm_data = $wpdb->get_row($wpdb->prepare("SELECT option_value FROM $new_table_name WHERE option_name = %s LIMIT 1", 'cctm_data')); + if (!empty($cctm_data->option_value)) { + $cctm_data = maybe_unserialize($cctm_data->option_value); + if (is_array($cctm_data) && !empty($cctm_data['cache']) && is_array($cctm_data['cache'])) { + $cctm_data['cache'] = array(); + $updraftplus->log_e("Custom content type manager plugin data detected: clearing option cache"); + update_option('cctm_data', $cctm_data); + } + } + # Another - http://www.elegantthemes.com/gallery/elegant-builder/ + $elegant_data = $wpdb->get_row($wpdb->prepare("SELECT option_value FROM $new_table_name WHERE option_name = %s LIMIT 1", 'et_images_temp_folder')); + if (!empty($elegant_data->option_value)) { + $dbase = basename($elegant_data->option_value); + $wp_upload_dir = wp_upload_dir(); + $edir = $wp_upload_dir['basedir']; + if (!is_dir($edir.'/'.$dbase)) @mkdir($edir.'/'.$dbase); + $updraftplus->log_e("Elegant themes theme builder plugin data detected: resetting temporary folder"); + update_option('et_images_temp_folder', $edir.'/'.$dbase); + } + } + + # The gantry menu plugin sometimes uses too-long transient names, causing the timeout option to be missing; and hence the transient becomes permanent. + # WP 3.4 onwards has $wpdb->delete(). But we support 3.2 onwards. + $wpdb->query("DELETE FROM $new_table_name WHERE option_name LIKE '_transient_gantry-menu%' OR option_name LIKE '_transient_timeout_gantry-menu%'"); + + # Jetpack: see: https://wordpress.org/support/topic/issues-with-dev-site + if ($this->old_siteurl != $this->our_siteurl) { + $wpdb->query("DELETE FROM $new_table_name WHERE option_name = 'jetpack_options'"); + } + + } + + } elseif ($import_table_prefix != $old_table_prefix && preg_match('/^([\d+]_)?usermeta$/', substr($table, strlen($import_table_prefix)), $matches)) { + + // This table is not a per-site table, but per-install + + $updraftplus->log("Table prefix has changed: changing usermeta table field(s) accordingly"); + + $print_line = sprintf(__('Table prefix has changed: changing %s table field(s) accordingly:', 'updraftplus'),'usermeta').' '; + + $errors_occurred = false; + + if (false === strpos($old_table_prefix, '_')) { + // Old, slow way: do it row-by-row + // By Jul 2015, doing this on the updraftplus.com database took 20 minutes on a slow test machine + $old_prefix_length = strlen($old_table_prefix); + + $um_sql = "SELECT umeta_id, meta_key + FROM ${import_table_prefix}usermeta + WHERE meta_key + LIKE '".str_replace('_', '\_', $old_table_prefix)."%'"; + $meta_keys = $wpdb->get_results($um_sql); + + foreach ($meta_keys as $meta_key ) { + //Create new meta key + $new_meta_key = $import_table_prefix . substr($meta_key->meta_key, $old_prefix_length); + + $query = "UPDATE " . $import_table_prefix . "usermeta + SET meta_key='".$new_meta_key."' + WHERE umeta_id=".$meta_key->umeta_id; + + if (false === $wpdb->query($query)) $errors_occurred = true; + } + } else { + // New, fast way: do it in a single query + $sql = "UPDATE ${import_table_prefix}usermeta SET meta_key = REPLACE(meta_key, '$old_table_prefix', '${import_table_prefix}') WHERE meta_key LIKE '".str_replace('_', '\_', $old_table_prefix)."%';"; + if (false === $wpdb->query($sql)) $errors_occurred = true; + } + + if ($errors_occurred) { + $updraftplus->log("Error when changing usermeta table fields"); + $print_line .= __('Error', 'updraftplus'); + } else { + $updraftplus->log("Usermeta table fields changed OK"); + $print_line .= __('OK', 'updraftplus'); + } + $updraftplus->log($print_line, 'notice-restore'); + + } + + do_action('updraftplus_restored_db_table', $table, $import_table_prefix); + + // Re-generate permalinks. Do this last - i.e. make sure everything else is fixed up first. + if ($table == $import_table_prefix.'options') $this->flush_rewrite_rules(); + + } + +} + +// The purpose of this is that, in a certain case, we want to forbid the "move" operation from doing a copy/delete if a direct move fails... because we have our own method for retrying (and don't want to risk copying a tonne of data if we can avoid it) +if (!class_exists('WP_Filesystem_Direct')) { + if (!class_exists('WP_Filesystem_Base')) require_once(ABSPATH.'wp-admin/includes/class-wp-filesystem-base.php'); + require_once(ABSPATH.'wp-admin/includes/class-wp-filesystem-direct.php'); +} +class UpdraftPlus_WP_Filesystem_Direct extends WP_Filesystem_Direct { + + public function move($source, $destination, $overwrite = false) { + if ( ! $overwrite && $this->exists($destination) ) + return false; + + // try using rename first. if that fails (for example, source is read only) try copy + if ( @rename($source, $destination) ) + return true; + + return false; + } + +} + +if (!class_exists('WP_Upgrader_Skin')) require_once(ABSPATH.'wp-admin/includes/class-wp-upgrader.php'); +class Updraft_Restorer_Skin extends WP_Upgrader_Skin { + + public function header() {} + public function footer() {} + public function bulk_header() {} + public function bulk_footer() {} + + public function error($error) { + if (!$error) return; + global $updraftplus; + if (is_wp_error($error)) { + $updraftplus->log_wp_error($error, true); + } elseif (is_string($error)) { + $updraftplus->log($error); + $updraftplus->log($error, 'warning-restore'); + } + } + + public function feedback($string) { + + if ( isset( $this->upgrader->strings[$string] ) ) + $string = $this->upgrader->strings[$string]; + + if ( strpos($string, '%') !== false ) { + $args = func_get_args(); + $args = array_splice($args, 1); + if ( $args ) { + $args = array_map( 'strip_tags', $args ); + $args = array_map( 'esc_html', $args ); + $string = vsprintf($string, $args); + } + } + if ( empty($string) ) return; + + global $updraftplus; + $updraftplus->log_e($string); + } +} + +// Get a protected property +class UpdraftPlus_WPDB extends wpdb { + public function updraftplus_getdbh() { + return $this->dbh; + } + public function updraftplus_use_mysqli() { + return !empty($this->use_mysqli); + } +} diff --git a/plugins/updraftplus/templates/wp-admin/advanced/advanced-tools.php b/plugins/updraftplus/templates/wp-admin/advanced/advanced-tools.php new file mode 100644 index 0000000..7093027 --- /dev/null +++ b/plugins/updraftplus/templates/wp-admin/advanced/advanced-tools.php @@ -0,0 +1,26 @@ + +
        +

        + +

        +
        +
        + include_template('/wp-admin/advanced/tools-menu.php'); + ?> +
        +
        + include_template('/wp-admin/advanced/site-info.php'); + $updraftplus_admin->include_template('/wp-admin/advanced/lock-admin.php'); + $updraftplus_admin->include_template('/wp-admin/advanced/updraftcentral.php'); + $updraftplus_admin->include_template('/wp-admin/advanced/search-replace.php'); + $updraftplus_admin->include_template('/wp-admin/advanced/total-size.php'); + $updraftplus_admin->include_template('/wp-admin/advanced/export-settings.php'); + $updraftplus_admin->include_template('/wp-admin/advanced/wipe-settings.php'); + ?> +
        +
        +
        diff --git a/plugins/updraftplus/templates/wp-admin/advanced/export-settings.php b/plugins/updraftplus/templates/wp-admin/advanced/export-settings.php new file mode 100644 index 0000000..75c6eb2 --- /dev/null +++ b/plugins/updraftplus/templates/wp-admin/advanced/export-settings.php @@ -0,0 +1,17 @@ + +
        +

        +

        + '.__('including any passwords', 'updraftplus').'');?> +

        + + +

        + +

        + + + +
        \ No newline at end of file diff --git a/plugins/updraftplus/templates/wp-admin/advanced/lock-admin.php b/plugins/updraftplus/templates/wp-admin/advanced/lock-admin.php new file mode 100644 index 0000000..64e8eb2 --- /dev/null +++ b/plugins/updraftplus/templates/wp-admin/advanced/lock-admin.php @@ -0,0 +1,13 @@ + + +
        +

        +

        + "> + + +

        +
        + \ No newline at end of file diff --git a/plugins/updraftplus/templates/wp-admin/advanced/search-replace.php b/plugins/updraftplus/templates/wp-admin/advanced/search-replace.php new file mode 100644 index 0000000..ec8ef55 --- /dev/null +++ b/plugins/updraftplus/templates/wp-admin/advanced/search-replace.php @@ -0,0 +1,13 @@ + + +
        +

        +

        + "> + + +

        +
        + \ No newline at end of file diff --git a/plugins/updraftplus/templates/wp-admin/advanced/site-info.php b/plugins/updraftplus/templates/wp-admin/advanced/site-info.php new file mode 100644 index 0000000..f300e4e --- /dev/null +++ b/plugins/updraftplus/templates/wp-admin/advanced/site-info.php @@ -0,0 +1,99 @@ + +
        +

        + + settings_debugrow(__('Web server:','updraftplus'), htmlspecialchars($web_server).' ('.htmlspecialchars($uname_info).')'); + + $updraftplus_admin->settings_debugrow('ABSPATH:', htmlspecialchars(ABSPATH)); + $updraftplus_admin->settings_debugrow('WP_CONTENT_DIR:', htmlspecialchars(WP_CONTENT_DIR)); + $updraftplus_admin->settings_debugrow('WP_PLUGIN_DIR:', htmlspecialchars(WP_PLUGIN_DIR)); + $updraftplus_admin->settings_debugrow('Table prefix:', htmlspecialchars($updraftplus->get_table_prefix())); + + $peak_memory_usage = memory_get_peak_usage(true)/1024/1024; + $memory_usage = memory_get_usage(true)/1024/1024; + $updraftplus_admin->settings_debugrow(__('Peak memory usage','updraftplus').':', $peak_memory_usage.' MB'); + $updraftplus_admin->settings_debugrow(__('Current memory usage','updraftplus').':', $memory_usage.' MB'); + $updraftplus_admin->settings_debugrow(__('Memory limit', 'updraftplus').':', htmlspecialchars(ini_get('memory_limit'))); + $updraftplus_admin->settings_debugrow(sprintf(__('%s version:','updraftplus'), 'PHP'), htmlspecialchars(phpversion()).' - '.__('show PHP information (phpinfo)', 'updraftplus').''); + $updraftplus_admin->settings_debugrow(sprintf(__('%s version:','updraftplus'), 'MySQL'), htmlspecialchars($wpdb->db_version())); + if (function_exists('curl_version') && function_exists('curl_exec')) { + $cv = curl_version(); + $cvs = $cv['version'].' / SSL: '.$cv['ssl_version'].' / libz: '.$cv['libz_version']; + } else { + $cvs = __('Not installed', 'updraftplus').' ('.__('required for some remote storage providers', 'updraftplus').')'; + } + $updraftplus_admin->settings_debugrow(sprintf(__('%s version:', 'updraftplus'), 'Curl'), htmlspecialchars($cvs)); + $updraftplus_admin->settings_debugrow(sprintf(__('%s version:', 'updraftplus'), 'OpenSSL'), defined('OPENSSL_VERSION_TEXT') ? OPENSSL_VERSION_TEXT : '-'); + $updraftplus_admin->settings_debugrow('MCrypt:', function_exists('mcrypt_encrypt') ? __('Yes') : __('No')); + + if (version_compare(phpversion(), '5.2.0', '>=') && extension_loaded('zip')) { + $ziparchive_exists = __('Yes', 'updraftplus'); + } else { + # First do class_exists, because method_exists still sometimes segfaults due to a rare PHP bug + $ziparchive_exists = (class_exists('ZipArchive') && method_exists('ZipArchive', 'addFile')) ? __('Yes', 'updraftplus') : __('No', 'updraftplus'); + } + $updraftplus_admin->settings_debugrow('ZipArchive::addFile:', $ziparchive_exists); + $binzip = $updraftplus->find_working_bin_zip(false, false); + $updraftplus_admin->settings_debugrow(__('zip executable found:', 'updraftplus'), ((is_string($binzip)) ? __('Yes').': '.$binzip : __('No'))); + $hosting_bytes_free = $updraftplus->get_hosting_disk_quota_free(); + if (is_array($hosting_bytes_free)) { + $perc = round(100*$hosting_bytes_free[1]/(max($hosting_bytes_free[2], 1)), 1); + $updraftplus_admin->settings_debugrow(__('Free disk space in account:', 'updraftplus'), sprintf(__('%s (%s used)', 'updraftplus'), round($hosting_bytes_free[3]/1048576, 1)." MB", "$perc %")); + } + + if (function_exists('apache_get_modules')) { + $apache_info = ''; + $apache_modules = apache_get_modules(); + if (is_array($apache_modules)) { + sort($apache_modules, SORT_STRING); + foreach ($apache_modules as $mod) { + if (0 === strpos($mod, 'mod_')) { + $apache_info .= ', '.substr($mod, 4); + } else { + $apache_info .= ', '.$mod; + } + } + } + $apache_info = substr($apache_info, 2); + $updraftplus_admin->settings_debugrow(__('Apache modules', 'updraftplus').':', $apache_info); + } + + $updraftplus_admin->settings_debugrow(__('Plugins for debugging:', 'updraftplus'),'WP Crontrol | SQL Executioner | Advanced Code Editor '.(current_user_can('edit_plugins') ? '(edit UpdraftPlus)' : '').' | WP Filemanager'); + + $updraftplus_admin->settings_debugrow("HTTP Get: ", ''.__('Fetch', 'updraftplus').''.__('Fetch', 'updraftplus').' (Curl)

        '); + + $updraftplus_admin->settings_debugrow(__("Call WordPress action:", 'updraftplus'), ''.__('Call', 'updraftplus').'
        '); + + $updraftplus_admin->settings_debugrow('Site ID:', '(used to identify any Vault connections) '.htmlspecialchars($updraftplus->siteid()).' - '.__('reset', 'updraftplus').""); + + $updraftplus_admin->settings_debugrow('', ''.__('Show raw backup and file list', 'updraftplus').''); + + ?> +
        +
        diff --git a/plugins/updraftplus/templates/wp-admin/advanced/tools-menu.php b/plugins/updraftplus/templates/wp-admin/advanced/tools-menu.php new file mode 100644 index 0000000..fcf29a9 --- /dev/null +++ b/plugins/updraftplus/templates/wp-admin/advanced/tools-menu.php @@ -0,0 +1,31 @@ + +
        + + +
        +
        + + +
        +
        + + UpdraftCentral +
        +
        + + +
        +
        + + +
        +
        + + +
        +
        + + +
        diff --git a/plugins/updraftplus/templates/wp-admin/advanced/total-size.php b/plugins/updraftplus/templates/wp-admin/advanced/total-size.php new file mode 100644 index 0000000..0f8feb9 --- /dev/null +++ b/plugins/updraftplus/templates/wp-admin/advanced/total-size.php @@ -0,0 +1,23 @@ +get_backupable_file_entities(true, true); +?> +
        +

        +

        + + + +

        + + $info) { + + $sdescrip = preg_replace('/ \(.*\)$/', '', $info['description']); + if (strlen($sdescrip) > 20 && isset($info['shortdescription'])) $sdescrip = $info['shortdescription']; + + $updraftplus_admin->settings_debugrow(ucfirst($sdescrip).':', ''.__('count','updraftplus').''); + } + ?> +
        +
        \ No newline at end of file diff --git a/plugins/updraftplus/templates/wp-admin/advanced/updraftcentral.php b/plugins/updraftplus/templates/wp-admin/advanced/updraftcentral.php new file mode 100644 index 0000000..d64dd0f --- /dev/null +++ b/plugins/updraftplus/templates/wp-admin/advanced/updraftcentral.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/plugins/updraftplus/templates/wp-admin/advanced/wipe-settings.php b/plugins/updraftplus/templates/wp-admin/advanced/wipe-settings.php new file mode 100644 index 0000000..b0d6a94 --- /dev/null +++ b/plugins/updraftplus/templates/wp-admin/advanced/wipe-settings.php @@ -0,0 +1,11 @@ + +
        +

        +

        +
        + + +
        +
        \ No newline at end of file diff --git a/plugins/updraftplus/templates/wp-admin/notices/bottom-notice.php b/plugins/updraftplus/templates/wp-admin/notices/bottom-notice.php new file mode 100644 index 0000000..4e8b873 --- /dev/null +++ b/plugins/updraftplus/templates/wp-admin/notices/bottom-notice.php @@ -0,0 +1,40 @@ + + +
        +
        +

        + +

        +

        + ' . $discount_code . ''; + +// if (isset($text2)) { +// echo '

        ' . $text2 . '

        '; +// } + + if (!empty($button_link) && !empty($button_meta)) { + ?> + + +

        +
        +
        +
        diff --git a/plugins/updraftplus/templates/wp-admin/notices/horizontal-notice.php b/plugins/updraftplus/templates/wp-admin/notices/horizontal-notice.php new file mode 100644 index 0000000..bcec086 --- /dev/null +++ b/plugins/updraftplus/templates/wp-admin/notices/horizontal-notice.php @@ -0,0 +1,52 @@ + + +
        diff --git a/plugins/updraftplus/updraftplus.php b/plugins/updraftplus/updraftplus.php new file mode 100644 index 0000000..35fa832 --- /dev/null +++ b/plugins/updraftplus/updraftplus.php @@ -0,0 +1,202 @@ + 604800, 'display' => 'Once Weekly'); + $schedules['fortnightly'] = array('interval' => 1209600, 'display' => 'Once Each Fortnight'); + $schedules['monthly'] = array('interval' => 2592000, 'display' => 'Once Monthly'); + $schedules['every4hours'] = array('interval' => 14400, 'display' => sprintf(__('Every %s hours', 'updraftplus'), 4)); + $schedules['every8hours'] = array('interval' => 28800, 'display' => sprintf(__('Every %s hours', 'updraftplus'), 8)); + return $schedules; +} +endif; +// http://codex.wordpress.org/Plugin_API/Filter_Reference/cron_schedules. Raised priority because some plugins wrongly over-write all prior schedule changes (including BackupBuddy!) +add_filter('cron_schedules', 'updraftplus_modify_cron_schedules', 30); + +// The checks here before loading are for performance only - unless one of those conditions is met, then none of the hooks will ever be used + +if (!is_admin() && (!defined('DOING_CRON') || !DOING_CRON) && (!defined('XMLRPC_REQUEST') || !XMLRPC_REQUEST) && empty($_SERVER['SHELL']) && empty($_SERVER['USER']) && empty($_POST['udrpc_message']) && empty($_GET['udcentral_action']) && (empty($_SERVER['REQUEST_METHOD']) || 'OPTIONS' != $_SERVER['REQUEST_METHOD'])) { + // There is no good way to work out if the cron event is likely to be called under the ALTERNATE_WP_CRON system, other than re-running the calculation + // If ALTERNATE_WP_CRON is not active (and a few other things), then we are done + if ( !defined('ALTERNATE_WP_CRON') || !ALTERNATE_WP_CRON || !empty($_POST) || defined('DOING_AJAX') || isset($_GET['doing_wp_cron'])) return; + + // The check below is the one used by spawn_cron() to decide whether cron events should be run + $gmt_time = microtime( true ); + $lock = get_transient('doing_cron'); + if ( $lock > $gmt_time + 10 * 60 ) $lock = 0; + if ((defined('WP_CRON_LOCK_TIMEOUT') && $lock + WP_CRON_LOCK_TIMEOUT > $gmt_time) || (!defined('WP_CRON_LOCK_TIMEOUT') && $lock + 60 > $gmt_time)) return; + if (function_exists('_get_cron_array')) { + $crons = _get_cron_array(); + } else { + $crons = get_option('cron'); + } + if (!is_array($crons)) return; + + $keys = array_keys( $crons ); + if ( isset($keys[0]) && $keys[0] > $gmt_time ) return; + // If we got this far, then cron is going to be fired, so we do want to load all our hooks +} + +$updraftplus_have_addons = 0; +if (is_dir(UPDRAFTPLUS_DIR.'/addons') && $dir_handle = opendir(UPDRAFTPLUS_DIR.'/addons')) { + while (false !== ($e = readdir($dir_handle))) { + if (is_file(UPDRAFTPLUS_DIR.'/addons/'.$e) && preg_match('/\.php$/', $e)) { + # We used to have 1024 bytes here - but this meant that if someone's site was hacked and a lot of code added at the top, and if they were running a too-low PHP version, then they might just see the symptom rather than the cause - and raise the support request with us. + $header = file_get_contents(UPDRAFTPLUS_DIR.'/addons/'.$e, false, null, -1, 16384); + $phprequires = (preg_match("/RequiresPHP: (\d[\d\.]+)/", $header, $matches)) ? $matches[1] : false; + $phpinclude = (preg_match("/IncludePHP: (\S+)/", $header, $matches)) ? $matches[1] : false; + if (false === $phprequires || version_compare(PHP_VERSION, $phprequires, '>=')) { + $updraftplus_have_addons++; + if ($phpinclude) require_once(UPDRAFTPLUS_DIR.'/'.$phpinclude); + include_once(UPDRAFTPLUS_DIR.'/addons/'.$e); + } + } + } + @closedir($dir_handle); +} + +if (is_file(UPDRAFTPLUS_DIR.'/udaddons/updraftplus-addons.php')) include_once(UPDRAFTPLUS_DIR.'/udaddons/updraftplus-addons.php'); + +if (!file_exists(UPDRAFTPLUS_DIR.'/class-updraftplus.php') || !file_exists(UPDRAFTPLUS_DIR.'/options.php')) { + // Warn if they've not got the whole plugin - can happen if WP crashes (e.g. out of disk space) when upgrading the plugin + function updraftplus_incomplete_install_warning() { + echo '

        '.__('Error','updraftplus').': '.__("You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files.", 'updraftplus').' '.__('Go here for more information.','updraftplus').'

        '; + } + add_action('all_admin_notices', 'updraftplus_incomplete_install_warning'); +} else { + + require_once(UPDRAFTPLUS_DIR.'/class-updraftplus.php'); + $updraftplus = new UpdraftPlus(); + $GLOBALS['updraftplus'] = $updraftplus; + $updraftplus->have_addons = $updraftplus_have_addons; + + if (!$updraftplus->memory_check(192)) { + // Experience appears to show that the memory limit is only likely to be hit (unless it is very low) by single files that are larger than available memory (when compressed) + # Add sanity checks - found someone who'd set WP_MAX_MEMORY_LIMIT to 256K ! + if (!$updraftplus->memory_check($updraftplus->memory_check_current(WP_MAX_MEMORY_LIMIT))) { + $new = absint($updraftplus->memory_check_current(WP_MAX_MEMORY_LIMIT)); + if ($new>32 && $new<100000) { + @ini_set('memory_limit', $new.'M'); + } + } + } + +} + +# Ubuntu bug - https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1315888 +if (!function_exists('gzopen') && function_exists('gzopen64')) { + function gzopen($filename, $mode, $use_include_path = 0) { + return gzopen64($filename, $mode, $use_include_path); + } +} + +# For finding mysqldump. Added to include Windows locations +function updraftplus_build_mysqldump_list() { + if ('win' == strtolower(substr(PHP_OS, 0, 3)) && function_exists('glob')) { + $drives = array('C','D','E'); + + if (!empty($_SERVER['DOCUMENT_ROOT'])) { + //Get the drive that this is running on + $current_drive = strtoupper(substr($_SERVER['DOCUMENT_ROOT'], 0, 1)); + if(!in_array($current_drive, $drives)) array_unshift($drives, $current_drive); + } + + $directories = array(); + + foreach($drives as $drive_letter) { + $dir = glob("$drive_letter:\\{Program Files\\MySQL\\{,MySQL*,etc}{,\\bin,\\?},mysqldump}\\mysqldump*", GLOB_BRACE); + $directories = array_merge($directories, $dir); + } + + $drive_string = implode(',', $directories); + return $drive_string; + + } else return "/usr/bin/mysqldump,/bin/mysqldump,/usr/local/bin/mysqldump,/usr/sfw/bin/mysqldump,/usr/xdg4/bin/mysqldump,/opt/bin/mysqldump"; +} + +// Do this even if the missing files detection above fired, as the "missing files" detection above has a greater chance of showing the user useful info +if (!class_exists('UpdraftPlus_Options')) include_once(UPDRAFTPLUS_DIR.'/options.php'); diff --git a/plugins/updraftplus/vendor/autoload.php b/plugins/updraftplus/vendor/autoload.php new file mode 100644 index 0000000..a72925f --- /dev/null +++ b/plugins/updraftplus/vendor/autoload.php @@ -0,0 +1,7 @@ + + +Copyright 2010-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"). +You may not use this file except in compliance with the License. +A copy of the License is located at + + + +or in the "license" file accompanying this file. This file is distributed +on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either +express or implied. See the License for the specific language governing +permissions and limitations under the License. + +# Guzzle + + + +Copyright (c) 2011 Michael Dowling, https://github.com/mtdowling + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +# Symfony + + + +Copyright (c) 2004-2012 Fabien Potencier + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +# Doctrine Common + + + +Copyright (c) 2006-2012 Doctrine Project + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +# Monolog + + + +Copyright (c) Jordi Boggiano + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/composer.json b/plugins/updraftplus/vendor/aws/aws-sdk-php/composer.json new file mode 100644 index 0000000..4146c35 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/composer.json @@ -0,0 +1,42 @@ +{ + "name": "aws/aws-sdk-php", + "homepage": "http://aws.amazon.com/sdkforphp", + "description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project", + "keywords": ["aws","amazon","sdk","s3","ec2","dynamodb","cloud","glacier"], + "type": "library", + "license": "Apache-2.0", + "authors": [ + { + "name": "Amazon Web Services", + "homepage": "http://aws.amazon.com" + } + ], + "support": { + "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", + "issues": "https://github.com/aws/aws-sdk-php/issues" + }, + "require": { + "php": ">=5.3.3", + "guzzle/guzzle": "~3.7" + }, + "suggest": { + "doctrine/cache": "Adds support for caching of credentials and responses", + "ext-apc": "Allows service description opcode caching, request and response caching, and credentials caching", + "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages", + "monolog/monolog": "Adds support for logging HTTP requests and responses", + "symfony/yaml": "Eases the ability to write manifests for creating jobs in AWS Import/Export" + }, + "require-dev": { + "ext-openssl": "*", + "doctrine/cache": "~1.0", + "monolog/monolog": "~1.4", + "phpunit/phpunit": "~4.0", + "phpunit/phpunit-mock-objects": "2.3.1", + "symfony/yaml": "~2.1" + }, + "autoload": { + "psr-0": { + "Aws": "src/" + } + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Aws.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Aws.php new file mode 100644 index 0000000..629dabb --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Aws.php @@ -0,0 +1,106 @@ +addAlias('_aws', self::getDefaultServiceDefinition()) + ->addAlias('_sdk1', __DIR__ . '/Resources/sdk1-config.php'); + + return $loader->load($config, $globalParameters); + } + + /** + * Get the full path to the default service builder definition file + * + * @return string + */ + public static function getDefaultServiceDefinition() + { + return __DIR__ . '/Resources/aws-config.php'; + } + + /** + * Returns the configuration for the service builder + * + * @return array + */ + public function getConfig() + { + return $this->builderConfig; + } + + /** + * Enables the facades for the clients defined in the service builder + * + * @param string|null $namespace The namespace that the facades should be mounted to. Defaults to global namespace + * + * @return Aws + * @deprecated "Facades" are being removed in version 3.0 of the SDK. + */ + public function enableFacades($namespace = null) + { + Facade::mountFacades($this, $namespace); + + return $this; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Client/AbstractClient.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Client/AbstractClient.php new file mode 100644 index 0000000..f0d6c30 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Client/AbstractClient.php @@ -0,0 +1,283 @@ +get(Options::BASE_URL), $config); + $this->credentials = $credentials; + $this->signature = $signature; + $this->aggregator = new DuplicateAggregator(); + + // Make sure the user agent is prefixed by the SDK version + $this->setUserAgent('aws-sdk-php2/' . Aws::VERSION, true); + + // Add the event listener so that requests are signed before they are sent + $dispatcher = $this->getEventDispatcher(); + $dispatcher->addSubscriber(new SignatureListener($credentials, $signature)); + + if ($backoff = $config->get(Options::BACKOFF)) { + $dispatcher->addSubscriber($backoff, -255); + } + } + + public function __call($method, $args) + { + if (substr($method, 0, 3) === 'get' && substr($method, -8) === 'Iterator') { + // Allow magic method calls for iterators (e.g. $client->getIterator($params)) + $commandOptions = isset($args[0]) ? $args[0] : null; + $iteratorOptions = isset($args[1]) ? $args[1] : array(); + return $this->getIterator(substr($method, 3, -8), $commandOptions, $iteratorOptions); + } elseif (substr($method, 0, 9) == 'waitUntil') { + // Allow magic method calls for waiters (e.g. $client->waitUntil($params)) + return $this->waitUntil(substr($method, 9), isset($args[0]) ? $args[0]: array()); + } else { + return parent::__call(ucfirst($method), $args); + } + } + + /** + * Get an endpoint for a specific region from a service description + * @deprecated This function will no longer be updated to work with new regions. + */ + public static function getEndpoint(ServiceDescriptionInterface $description, $region, $scheme) + { + try { + $service = $description->getData('endpointPrefix'); + $provider = RulesEndpointProvider::fromDefaults(); + $result = $provider(array( + 'service' => $service, + 'region' => $region, + 'scheme' => $scheme + )); + return $result['endpoint']; + } catch (\InvalidArgumentException $e) { + throw new InvalidArgumentException($e->getMessage(), 0, $e); + } + } + + public function getCredentials() + { + return $this->credentials; + } + + public function setCredentials(CredentialsInterface $credentials) + { + $formerCredentials = $this->credentials; + $this->credentials = $credentials; + + // Dispatch an event that the credentials have been changed + $this->dispatch('client.credentials_changed', array( + 'credentials' => $credentials, + 'former_credentials' => $formerCredentials, + )); + + return $this; + } + + public function getSignature() + { + return $this->signature; + } + + public function getRegions() + { + return $this->serviceDescription->getData('regions'); + } + + public function getRegion() + { + return $this->getConfig(Options::REGION); + } + + public function setRegion($region) + { + $config = $this->getConfig(); + $formerRegion = $config->get(Options::REGION); + $global = $this->serviceDescription->getData('globalEndpoint'); + $provider = $config->get('endpoint_provider'); + + if (!$provider) { + throw new \RuntimeException('No endpoint provider configured'); + } + + // Only change the region if the service does not have a global endpoint + if (!$global || $this->serviceDescription->getData('namespace') === 'S3') { + + $endpoint = call_user_func( + $provider, + array( + 'scheme' => $config->get(Options::SCHEME), + 'region' => $region, + 'service' => $config->get(Options::SERVICE) + ) + ); + + $this->setBaseUrl($endpoint['endpoint']); + $config->set(Options::BASE_URL, $endpoint['endpoint']); + $config->set(Options::REGION, $region); + + // Update the signature if necessary + $signature = $this->getSignature(); + if ($signature instanceof EndpointSignatureInterface) { + /** @var EndpointSignatureInterface $signature */ + $signature->setRegionName($region); + } + + // Dispatch an event that the region has been changed + $this->dispatch('client.region_changed', array( + 'region' => $region, + 'former_region' => $formerRegion, + )); + } + + return $this; + } + + public function waitUntil($waiter, array $input = array()) + { + $this->getWaiter($waiter, $input)->wait(); + + return $this; + } + + public function getWaiter($waiter, array $input = array()) + { + return $this->getWaiterFactory()->build($waiter) + ->setClient($this) + ->setConfig($input); + } + + public function setWaiterFactory(WaiterFactoryInterface $waiterFactory) + { + $this->waiterFactory = $waiterFactory; + + return $this; + } + + public function getWaiterFactory() + { + if (!$this->waiterFactory) { + $clientClass = get_class($this); + // Use a composite factory that checks for classes first, then config waiters + $this->waiterFactory = new CompositeWaiterFactory(array( + new WaiterClassFactory(substr($clientClass, 0, strrpos($clientClass, '\\')) . '\\Waiter') + )); + if ($this->getDescription()) { + $waiterConfig = $this->getDescription()->getData('waiters') ?: array(); + $this->waiterFactory->addFactory(new WaiterConfigFactory($waiterConfig)); + } + } + + return $this->waiterFactory; + } + + public function getApiVersion() + { + return $this->serviceDescription->getApiVersion(); + } + + /** + * {@inheritdoc} + * @throws \Aws\Common\Exception\TransferException + */ + public function send($requests) + { + try { + return parent::send($requests); + } catch (CurlException $e) { + $wrapped = new TransferException($e->getMessage(), null, $e); + $wrapped->setCurlHandle($e->getCurlHandle()) + ->setCurlInfo($e->getCurlInfo()) + ->setError($e->getError(), $e->getErrorNo()) + ->setRequest($e->getRequest()); + throw $wrapped; + } + } + + /** + * Ensures that the duplicate query string aggregator is used so that + * query string values are sent over the wire as foo=bar&foo=baz. + * {@inheritdoc} + */ + public function createRequest( + $method = 'GET', + $uri = null, + $headers = null, + $body = null, + array $options = array() + ) { + $request = parent::createRequest($method, $uri, $headers, $body, $options); + $request->getQuery()->setAggregator($this->aggregator); + return $request; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Client/AwsClientInterface.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Client/AwsClientInterface.php new file mode 100644 index 0000000..4c0579f --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Client/AwsClientInterface.php @@ -0,0 +1,118 @@ + 'https'); + + /** + * @var array Default client requirements + */ + protected static $commonConfigRequirements = array(Options::SERVICE_DESCRIPTION); + + /** + * @var string The namespace of the client + */ + protected $clientNamespace; + + /** + * @var array The config options + */ + protected $config = array(); + + /** + * @var array The config defaults + */ + protected $configDefaults = array(); + + /** + * @var array The config requirements + */ + protected $configRequirements = array(); + + /** + * @var ExceptionParserInterface The Parser interface for the client + */ + protected $exceptionParser; + + /** + * @var array Array of configuration data for iterators available for the client + */ + protected $iteratorsConfig = array(); + + /** @var string */ + private $clientClass; + + /** @var string */ + private $serviceName; + + /** + * Factory method for creating the client builder + * + * @param string $namespace The namespace of the client + * + * @return ClientBuilder + */ + public static function factory($namespace = null) + { + return new static($namespace); + } + + /** + * Constructs a client builder + * + * @param string $namespace The namespace of the client + */ + public function __construct($namespace = null) + { + $this->clientNamespace = $namespace; + + // Determine service and class name + $this->clientClass = 'Aws\Common\Client\DefaultClient'; + + if ($this->clientNamespace) { + $this->serviceName = substr($this->clientNamespace, strrpos($this->clientNamespace, '\\') + 1); + $this->clientClass = $this->clientNamespace . '\\' . $this->serviceName . 'Client'; + } + } + + /** + * Sets the config options + * + * @param array|Collection $config The config options + * + * @return ClientBuilder + */ + public function setConfig($config) + { + $this->config = $this->processArray($config); + + return $this; + } + + /** + * Sets the config options' defaults + * + * @param array|Collection $defaults The default values + * + * @return ClientBuilder + */ + public function setConfigDefaults($defaults) + { + $this->configDefaults = $this->processArray($defaults); + + return $this; + } + + /** + * Sets the required config options + * + * @param array|Collection $required The required config options + * + * @return ClientBuilder + */ + public function setConfigRequirements($required) + { + $this->configRequirements = $this->processArray($required); + + return $this; + } + + /** + * Sets the exception parser. If one is not provided the builder will use + * the default XML exception parser. + * + * @param ExceptionParserInterface $parser The exception parser + * + * @return ClientBuilder + */ + public function setExceptionParser(ExceptionParserInterface $parser) + { + $this->exceptionParser = $parser; + + return $this; + } + + /** + * Set the configuration for the client's iterators + * + * @param array $config Configuration data for client's iterators + * + * @return ClientBuilder + */ + public function setIteratorsConfig(array $config) + { + $this->iteratorsConfig = $config; + + return $this; + } + + /** + * Performs the building logic using all of the parameters that have been + * set and falling back to default values. Returns an instantiate service + * client with credentials prepared and plugins attached. + * + * @return AwsClientInterface + * @throws InvalidArgumentException + */ + public function build() + { + // Resolve configuration + $config = Collection::fromConfig( + $this->config, + array_merge(self::$commonConfigDefaults, $this->configDefaults), + (self::$commonConfigRequirements + $this->configRequirements) + ); + + if ($config[Options::VERSION] === 'latest') { + $config[Options::VERSION] = constant("{$this->clientClass}::LATEST_API_VERSION"); + } + + if (!isset($config['endpoint_provider'])) { + $config['endpoint_provider'] = RulesEndpointProvider::fromDefaults(); + } + + // Resolve the endpoint, signature, and credentials + $description = $this->updateConfigFromDescription($config); + $signature = $this->getSignature($description, $config); + $credentials = $this->getCredentials($config); + $this->extractHttpConfig($config); + + // Resolve exception parser + if (!$this->exceptionParser) { + $this->exceptionParser = new DefaultXmlExceptionParser(); + } + + // Resolve backoff strategy + $backoff = $config->get(Options::BACKOFF); + if ($backoff === null) { + $backoff = $this->createDefaultBackoff(); + $config->set(Options::BACKOFF, $backoff); + } + + if ($backoff) { + $this->addBackoffLogger($backoff, $config); + } + + /** @var AwsClientInterface $client */ + $client = new $this->clientClass($credentials, $signature, $config); + $client->setDescription($description); + + // Add exception marshaling so that more descriptive exception are thrown + if ($this->clientNamespace) { + $exceptionFactory = new NamespaceExceptionFactory( + $this->exceptionParser, + "{$this->clientNamespace}\\Exception", + "{$this->clientNamespace}\\Exception\\{$this->serviceName}Exception" + ); + $client->addSubscriber(new ExceptionListener($exceptionFactory)); + } + + // Add the UserAgentPlugin to append to the User-Agent header of requests + $client->addSubscriber(new UserAgentListener()); + + // Filters used for the cache plugin + $client->getConfig()->set( + 'params.cache.key_filter', + 'header=date,x-amz-date,x-amz-security-token,x-amzn-authorization' + ); + + // Set the iterator resource factory based on the provided iterators config + $client->setResourceIteratorFactory(new AwsResourceIteratorFactory( + $this->iteratorsConfig, + new ResourceIteratorClassFactory($this->clientNamespace . '\\Iterator') + )); + + // Disable parameter validation if needed + if ($config->get(Options::VALIDATION) === false) { + $params = $config->get('command.params') ?: array(); + $params['command.disable_validation'] = true; + $config->set('command.params', $params); + } + + return $client; + } + + /** + * Add backoff logging to the backoff plugin if needed + * + * @param BackoffPlugin $plugin Backoff plugin + * @param Collection $config Configuration settings + * + * @throws InvalidArgumentException + */ + protected function addBackoffLogger(BackoffPlugin $plugin, Collection $config) + { + // The log option can be set to `debug` or an instance of a LogAdapterInterface + if ($logger = $config->get(Options::BACKOFF_LOGGER)) { + $format = $config->get(Options::BACKOFF_LOGGER_TEMPLATE); + if ($logger === 'debug') { + $logger = new ClosureLogAdapter(function ($message) { + trigger_error($message . "\n"); + }); + } elseif (!($logger instanceof LogAdapterInterface)) { + throw new InvalidArgumentException( + Options::BACKOFF_LOGGER . ' must be set to `debug` or an instance of ' + . 'Guzzle\\Common\\Log\\LogAdapterInterface' + ); + } + // Create the plugin responsible for logging exponential backoff retries + $logPlugin = new BackoffLogger($logger); + // You can specify a custom format or use the default + if ($format) { + $logPlugin->setTemplate($format); + } + $plugin->addSubscriber($logPlugin); + } + } + + /** + * Ensures that an array (e.g. for config data) is actually in array form + * + * @param array|Collection $array The array data + * + * @return array + * @throws InvalidArgumentException if the arg is not an array or Collection + */ + protected function processArray($array) + { + if ($array instanceof Collection) { + $array = $array->getAll(); + } + + if (!is_array($array)) { + throw new InvalidArgumentException('The config must be provided as an array or Collection.'); + } + + return $array; + } + + /** + * Update a configuration object from a service description + * + * @param Collection $config Config to update + * + * @return ServiceDescription + * @throws InvalidArgumentException + */ + protected function updateConfigFromDescription(Collection $config) + { + $description = $config->get(Options::SERVICE_DESCRIPTION); + if (!($description instanceof ServiceDescription)) { + // Inject the version into the sprintf template if it is a string + if (is_string($description)) { + $description = sprintf($description, $config->get(Options::VERSION)); + } + $description = ServiceDescription::factory($description); + $config->set(Options::SERVICE_DESCRIPTION, $description); + } + + if (!$config->get(Options::SERVICE)) { + $config->set(Options::SERVICE, $description->getData('endpointPrefix')); + } + + if ($iterators = $description->getData('iterators')) { + $this->setIteratorsConfig($iterators); + } + + $this->handleRegion($config); + $this->handleEndpoint($config); + + return $description; + } + + /** + * Return an appropriate signature object for a a client based on the + * "signature" configuration setting, or the default signature specified in + * a service description. The signature can be set to a valid signature + * version identifier string or an instance of Aws\Common\Signature\SignatureInterface. + * + * @param ServiceDescription $description Description that holds a signature option + * @param Collection $config Configuration options + * + * @return SignatureInterface + * @throws InvalidArgumentException + */ + protected function getSignature(ServiceDescription $description, Collection $config) + { + // If a custom signature has not been provided, then use the default + // signature setting specified in the service description. + $signature = $config->get(Options::SIGNATURE) ?: $description->getData('signatureVersion'); + + if (is_string($signature)) { + if ($signature == 'v4') { + $signature = new SignatureV4(); + } elseif ($signature == 'v2') { + $signature = new SignatureV2(); + } elseif ($signature == 'v3https') { + $signature = new SignatureV3Https(); + } else { + throw new InvalidArgumentException("Invalid signature type: {$signature}"); + } + } elseif (!($signature instanceof SignatureInterface)) { + throw new InvalidArgumentException('The provided signature is not ' + . 'a signature version string or an instance of ' + . 'Aws\\Common\\Signature\\SignatureInterface'); + } + + // Allow a custom service name or region value to be provided + if ($signature instanceof EndpointSignatureInterface) { + + // Determine the service name to use when signing + $signature->setServiceName($config->get(Options::SIGNATURE_SERVICE) + ?: $description->getData('signingName') + ?: $description->getData('endpointPrefix')); + + // Determine the region to use when signing requests + $signature->setRegionName($config->get(Options::SIGNATURE_REGION) ?: $config->get(Options::REGION)); + } + + return $signature; + } + + protected function getCredentials(Collection $config) + { + $credentials = $config->get(Options::CREDENTIALS); + + if (is_array($credentials)) { + $credentials = Credentials::factory($credentials); + } elseif ($credentials === false) { + $credentials = new NullCredentials(); + } elseif (!$credentials instanceof CredentialsInterface) { + $credentials = Credentials::factory($config); + } + + return $credentials; + } + + private function handleRegion(Collection $config) + { + // Make sure a valid region is set + $region = $config[Options::REGION]; + $description = $config[Options::SERVICE_DESCRIPTION]; + $global = $description->getData('globalEndpoint'); + + if (!$global && !$region) { + throw new InvalidArgumentException( + 'A region is required when using ' . $description->getData('serviceFullName') + ); + } elseif ($global && !$region) { + $config[Options::REGION] = 'us-east-1'; + } + } + + private function handleEndpoint(Collection $config) + { + // Alias "endpoint" with "base_url" for forwards compatibility. + if ($config['endpoint']) { + $config[Options::BASE_URL] = $config['endpoint']; + return; + } + + if ($config[Options::BASE_URL]) { + return; + } + + $endpoint = call_user_func( + $config['endpoint_provider'], + array( + 'scheme' => $config[Options::SCHEME], + 'region' => $config[Options::REGION], + 'service' => $config[Options::SERVICE] + ) + ); + + $config[Options::BASE_URL] = $endpoint['endpoint']; + + // Set a signature if one was not explicitly provided. + if (!$config->hasKey(Options::SIGNATURE) + && isset($endpoint['signatureVersion']) + ) { + $config->set(Options::SIGNATURE, $endpoint['signatureVersion']); + } + + // The the signing region if endpoint rule specifies one. + if (isset($endpoint['credentialScope'])) { + $scope = $endpoint['credentialScope']; + if (isset($scope['region'])) { + $config->set(Options::SIGNATURE_REGION, $scope['region']); + } + } + } + + private function createDefaultBackoff() + { + return new BackoffPlugin( + // Retry failed requests up to 3 times if it is determined that the request can be retried + new TruncatedBackoffStrategy(3, + // Retry failed requests with 400-level responses due to throttling + new ThrottlingErrorChecker($this->exceptionParser, + // Retry failed requests due to transient network or cURL problems + new CurlBackoffStrategy(null, + // Retry failed requests with 500-level responses + new HttpBackoffStrategy(array(500, 503, 509), + // Retry requests that failed due to expired credentials + new ExpiredCredentialsChecker($this->exceptionParser, + new ExponentialBackoffStrategy() + ) + ) + ) + ) + ) + ); + } + + private function extractHttpConfig(Collection $config) + { + $http = $config['http']; + + if (!is_array($http)) { + return; + } + + if (isset($http['verify'])) { + $config[Options::SSL_CERT] = $http['verify']; + } + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Client/DefaultClient.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Client/DefaultClient.php new file mode 100644 index 0000000..277f088 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Client/DefaultClient.php @@ -0,0 +1,67 @@ +setConfig($config) + ->setConfigDefaults(array(Options::SCHEME => 'https')) + ->build(); + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Client/ExpiredCredentialsChecker.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Client/ExpiredCredentialsChecker.php new file mode 100644 index 0000000..05b8445 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Client/ExpiredCredentialsChecker.php @@ -0,0 +1,80 @@ + true, + 'ExpiredTokenException' => true, + 'ExpiredToken' => true + ); + + /** + * @var ExceptionParserInterface Exception parser used to parse exception responses + */ + protected $exceptionParser; + + public function __construct(ExceptionParserInterface $exceptionParser, BackoffStrategyInterface $next = null) { + $this->exceptionParser = $exceptionParser; + $this->next = $next; + } + + public function makesDecision() + { + return true; + } + + protected function getDelay($retries, RequestInterface $request, Response $response = null, HttpException $e = null) + { + if ($response && $response->isClientError()) { + + $parts = $this->exceptionParser->parse($request, $response); + if (!isset($this->retryable[$parts['code']]) || !$request->getClient()) { + return null; + } + + /** @var AwsClientInterface $client */ + $client = $request->getClient(); + // Only retry if the credentials can be refreshed + if (!($client->getCredentials() instanceof AbstractRefreshableCredentials)) { + return null; + } + + // Resign the request using new credentials + $client->getSignature()->signRequest($request, $client->getCredentials()->setExpiration(-1)); + + // Retry immediately with no delay + return 0; + } + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Client/ThrottlingErrorChecker.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Client/ThrottlingErrorChecker.php new file mode 100644 index 0000000..a35cbcb --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Client/ThrottlingErrorChecker.php @@ -0,0 +1,75 @@ + true, + 'Throttling' => true, + 'ThrottlingException' => true, + 'ProvisionedThroughputExceededException' => true, + 'RequestThrottled' => true, + ); + + /** + * @var ExceptionParserInterface Exception parser used to parse exception responses + */ + protected $exceptionParser; + + public function __construct(ExceptionParserInterface $exceptionParser, BackoffStrategyInterface $next = null) + { + $this->exceptionParser = $exceptionParser; + if ($next) { + $this->setNext($next); + } + } + + /** + * {@inheritdoc} + */ + public function makesDecision() + { + return true; + } + + /** + * {@inheritdoc} + */ + protected function getDelay( + $retries, + RequestInterface $request, + Response $response = null, + HttpException $e = null + ) { + if ($response && $response->isClientError()) { + $parts = $this->exceptionParser->parse($request, $response); + return isset(self::$throttlingExceptions[$parts['code']]) ? true : null; + } + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Client/UploadBodyListener.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Client/UploadBodyListener.php new file mode 100644 index 0000000..10cd825 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Client/UploadBodyListener.php @@ -0,0 +1,95 @@ +commands = $commands; + $this->bodyParameter = (string) $bodyParameter; + $this->sourceParameter = (string) $sourceParameter; + } + + /** + * {@inheritdoc} + */ + public static function getSubscribedEvents() + { + return array('command.before_prepare' => array('onCommandBeforePrepare')); + } + + /** + * Converts filenames and file handles into EntityBody objects before the command is validated + * + * @param Event $event Event emitted + * @throws InvalidArgumentException + */ + public function onCommandBeforePrepare(Event $event) + { + /** @var Command $command */ + $command = $event['command']; + if (in_array($command->getName(), $this->commands)) { + // Get the interesting parameters + $source = $command->get($this->sourceParameter); + $body = $command->get($this->bodyParameter); + + // If a file path is passed in then get the file handle + if (is_string($source) && file_exists($source)) { + $body = fopen($source, 'r'); + } + + // Prepare the body parameter and remove the source file parameter + if (null !== $body) { + $command->remove($this->sourceParameter); + $command->set($this->bodyParameter, EntityBody::factory($body)); + } else { + throw new InvalidArgumentException("You must specify a non-null value for the {$this->bodyParameter} or {$this->sourceParameter} parameters."); + } + } + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Client/UserAgentListener.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Client/UserAgentListener.php new file mode 100644 index 0000000..cc7e312 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Client/UserAgentListener.php @@ -0,0 +1,61 @@ + 'onBeforeSend'); + } + + /** + * Adds strings to the User-Agent header using the `ua.append` parameter of a command + * + * @param Event $event Event emitted + */ + public function onBeforeSend(Event $event) + { + $command = $event['command']; + if ($userAgentAppends = $command->get(self::OPTION)) { + $request = $command->getRequest(); + $userAgent = (string) $request->getHeader('User-Agent'); + foreach ((array) $userAgentAppends as $append) { + $append = ' ' . $append; + if (strpos($userAgent, $append) === false) { + $userAgent .= $append; + } + } + $request->setHeader('User-Agent', $userAgent); + } + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Command/AwsQueryVisitor.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Command/AwsQueryVisitor.php new file mode 100644 index 0000000..a335c7b --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Command/AwsQueryVisitor.php @@ -0,0 +1,120 @@ +fqname = $command->getName(); + $query = array(); + $this->customResolver($value, $param, $query, $param->getWireName()); + $request->addPostFields($query); + } + + /** + * Map nested parameters into the location_key based parameters + * + * @param array $value Value to map + * @param Parameter $param Parameter that holds information about the current key + * @param array $query Built up query string values + * @param string $prefix String to prepend to sub query values + */ + protected function customResolver($value, Parameter $param, array &$query, $prefix = '') + { + switch ($param->getType()) { + case 'object': + $this->resolveObject($param, $value, $prefix, $query); + break; + case 'array': + $this->resolveArray($param, $value, $prefix, $query); + break; + default: + $query[$prefix] = $param->filter($value); + } + } + + /** + * Custom handling for objects + * + * @param Parameter $param Parameter for the object + * @param array $value Value that is set for this parameter + * @param string $prefix Prefix for the resulting key + * @param array $query Query string array passed by reference + */ + protected function resolveObject(Parameter $param, array $value, $prefix, array &$query) + { + // Maps are implemented using additional properties + $hasAdditionalProperties = ($param->getAdditionalProperties() instanceof Parameter); + $additionalPropertyCount = 0; + + foreach ($value as $name => $v) { + if ($subParam = $param->getProperty($name)) { + // if the parameter was found by name as a regular property + $key = $prefix . '.' . $subParam->getWireName(); + $this->customResolver($v, $subParam, $query, $key); + } elseif ($hasAdditionalProperties) { + // Handle map cases like &Attribute.1.Name=&Attribute.1.Value= + $additionalPropertyCount++; + $data = $param->getData(); + $keyName = isset($data['keyName']) ? $data['keyName'] : 'key'; + $valueName = isset($data['valueName']) ? $data['valueName'] : 'value'; + $query["{$prefix}.{$additionalPropertyCount}.{$keyName}"] = $name; + $newPrefix = "{$prefix}.{$additionalPropertyCount}.{$valueName}"; + if (is_array($v)) { + $this->customResolver($v, $param->getAdditionalProperties(), $query, $newPrefix); + } else { + $query[$newPrefix] = $param->filter($v); + } + } + } + } + + /** + * Custom handling for arrays + * + * @param Parameter $param Parameter for the object + * @param array $value Value that is set for this parameter + * @param string $prefix Prefix for the resulting key + * @param array $query Query string array passed by reference + */ + protected function resolveArray(Parameter $param, array $value, $prefix, array &$query) + { + static $serializeEmpty = array( + 'SetLoadBalancerPoliciesForBackendServer' => 1, + 'SetLoadBalancerPoliciesOfListener' => 1, + 'UpdateStack' => 1 + ); + + // For BC, serialize empty lists for specific operations + if (!$value) { + if (isset($serializeEmpty[$this->fqname])) { + if (substr($prefix, -7) === '.member') { + $prefix = substr($prefix, 0, -7); + } + $query[$prefix] = ''; + } + return; + } + + $offset = $param->getData('offset') ?: 1; + foreach ($value as $index => $v) { + $index += $offset; + if (is_array($v) && $items = $param->getItems()) { + $this->customResolver($v, $items, $query, $prefix . '.' . $index); + } else { + $query[$prefix . '.' . $index] = $param->filter($v); + } + } + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Command/JsonCommand.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Command/JsonCommand.php new file mode 100644 index 0000000..15ad593 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Command/JsonCommand.php @@ -0,0 +1,47 @@ +request->getBody()) { + $this->request->setBody('{}'); + } + + // Never send the Expect header when interacting with a JSON query service + $this->request->removeHeader('Expect'); + + // Always send JSON requests as a raw string rather than using streams to avoid issues with + // cURL error code 65: "necessary data rewind wasn't possible". + // This could be removed after PHP addresses https://bugs.php.net/bug.php?id=47204 + $this->request->getCurlOptions()->set(CurlHandle::BODY_AS_STRING, true); + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Command/QueryCommand.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Command/QueryCommand.php new file mode 100644 index 0000000..63eb8e8 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Command/QueryCommand.php @@ -0,0 +1,53 @@ +getRequestSerializer()->addVisitor('aws.query', self::$queryVisitor); + $this->getResponseParser()->addVisitor('xml', self::$xmlVisitor); + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Command/XmlResponseLocationVisitor.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Command/XmlResponseLocationVisitor.php new file mode 100644 index 0000000..ad229fd --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Command/XmlResponseLocationVisitor.php @@ -0,0 +1,74 @@ +getOperation(); + if ($operation->getServiceDescription()->getData('resultWrapped')) { + $wrappingNode = $operation->getName() . 'Result'; + if (isset($result[$wrappingNode])) { + $result = $result[$wrappingNode] + $result; + unset($result[$wrappingNode]); + } + } + } + + /** + * Accounts for wrapper nodes + * {@inheritdoc} + */ + public function visit( + CommandInterface $command, + Response $response, + Parameter $param, + &$value, + $context = null + ) { + parent::visit($command, $response, $param, $value, $context); + + // Account for wrapper nodes (e.g. RDS, ElastiCache, etc) + if ($param->getData('wrapper')) { + $wireName = $param->getWireName(); + $value += $value[$wireName]; + unset($value[$wireName]); + } + } + + /** + * Filter used when converting XML maps into associative arrays in service descriptions + * + * @param array $value Value to filter + * @param string $entryName Name of each entry + * @param string $keyName Name of each key + * @param string $valueName Name of each value + * + * @return array Returns the map of the XML data + */ + public static function xmlMap($value, $entryName, $keyName, $valueName) + { + $result = array(); + foreach ($value as $entry) { + $result[$entry[$keyName]] = $entry[$valueName]; + } + + return $result; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Credentials/AbstractCredentialsDecorator.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Credentials/AbstractCredentialsDecorator.php new file mode 100644 index 0000000..b3a1df9 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Credentials/AbstractCredentialsDecorator.php @@ -0,0 +1,136 @@ +credentials = $credentials; + } + + /** + * {@inheritdoc} + */ + public function serialize() + { + return $this->credentials->serialize(); + } + + /** + * {@inheritdoc} + */ + public function unserialize($serialized) + { + $this->credentials = new Credentials('', ''); + $this->credentials->unserialize($serialized); + } + + /** + * {@inheritdoc} + */ + public function getAccessKeyId() + { + return $this->credentials->getAccessKeyId(); + } + + /** + * {@inheritdoc} + */ + public function getSecretKey() + { + return $this->credentials->getSecretKey(); + } + + /** + * {@inheritdoc} + */ + public function getSecurityToken() + { + return $this->credentials->getSecurityToken(); + } + + /** + * {@inheritdoc} + */ + public function getExpiration() + { + return $this->credentials->getExpiration(); + } + + /** + * {@inheritdoc} + */ + public function isExpired() + { + return $this->credentials->isExpired(); + } + + /** + * {@inheritdoc} + */ + public function setAccessKeyId($key) + { + $this->credentials->setAccessKeyId($key); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function setSecretKey($secret) + { + $this->credentials->setSecretKey($secret); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function setSecurityToken($token) + { + $this->credentials->setSecurityToken($token); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function setExpiration($timestamp) + { + $this->credentials->setExpiration($timestamp); + + return $this; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Credentials/AbstractRefreshableCredentials.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Credentials/AbstractRefreshableCredentials.php new file mode 100644 index 0000000..ebd957d --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Credentials/AbstractRefreshableCredentials.php @@ -0,0 +1,95 @@ +credentials->isExpired()) { + $this->refresh(); + } + + return new Credentials( + $this->credentials->getAccessKeyId(), + $this->credentials->getSecretKey(), + $this->credentials->getSecurityToken(), + $this->credentials->getExpiration() + ); + } + + /** + * {@inheritdoc} + */ + public function getAccessKeyId() + { + if ($this->credentials->isExpired()) { + $this->refresh(); + } + + return $this->credentials->getAccessKeyId(); + } + + /** + * {@inheritdoc} + */ + public function getSecretKey() + { + if ($this->credentials->isExpired()) { + $this->refresh(); + } + + return $this->credentials->getSecretKey(); + } + + /** + * {@inheritdoc} + */ + public function getSecurityToken() + { + if ($this->credentials->isExpired()) { + $this->refresh(); + } + + return $this->credentials->getSecurityToken(); + } + + /** + * {@inheritdoc} + */ + public function serialize() + { + if ($this->credentials->isExpired()) { + $this->refresh(); + } + + return $this->credentials->serialize(); + } + + /** + * Attempt to get new credentials + */ + abstract protected function refresh(); +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Credentials/CacheableCredentials.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Credentials/CacheableCredentials.php new file mode 100644 index 0000000..44e6cf3 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Credentials/CacheableCredentials.php @@ -0,0 +1,74 @@ +cache = $cache; + $this->cacheKey = $cacheKey; + + parent::__construct($credentials); + } + + /** + * Attempt to get new credentials from cache or from the adapted object + */ + protected function refresh() + { + if (!$cache = $this->cache->fetch($this->cacheKey)) { + // The credentials were not found, so try again and cache if new + $this->credentials->getAccessKeyId(); + if (!$this->credentials->isExpired()) { + // The credentials were updated, so cache them + $this->cache->save($this->cacheKey, $this->credentials, $this->credentials->getExpiration() - time()); + } + } else { + // The credentials were found in cache, so update the adapter object + // if the cached credentials are not expired + if (!$cache->isExpired()) { + $this->credentials->setAccessKeyId($cache->getAccessKeyId()); + $this->credentials->setSecretKey($cache->getSecretKey()); + $this->credentials->setSecurityToken($cache->getSecurityToken()); + $this->credentials->setExpiration($cache->getExpiration()); + } + } + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Credentials/Credentials.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Credentials/Credentials.php new file mode 100644 index 0000000..bc95334 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Credentials/Credentials.php @@ -0,0 +1,352 @@ + null, + Options::SECRET => null, + Options::TOKEN => null, + Options::TOKEN_TTD => null, + Options::PROFILE => null, + Options::CREDENTIALS_CACHE => null, + Options::CREDENTIALS_CACHE_KEY => null, + Options::CREDENTIALS_CLIENT => null + ); + } + + /** + * Factory method for creating new credentials. This factory method will + * create the appropriate credentials object with appropriate decorators + * based on the passed configuration options. + * + * @param array $config Options to use when instantiating the credentials + * + * @return CredentialsInterface + * @throws InvalidArgumentException If the caching options are invalid + * @throws RuntimeException If using the default cache and APC is disabled + */ + public static function factory($config = array()) + { + // Add default key values + foreach (self::getConfigDefaults() as $key => $value) { + if (!isset($config[$key])) { + $config[$key] = $value; + } + } + + // Set up the cache + $cache = $config[Options::CREDENTIALS_CACHE]; + $cacheKey = $config[Options::CREDENTIALS_CACHE_KEY] ?: + 'credentials_' . ($config[Options::KEY] ?: crc32(gethostname())); + + if ( + $cacheKey && + $cache instanceof CacheAdapterInterface && + $cached = self::createFromCache($cache, $cacheKey) + ) { + return $cached; + } + + // Create the credentials object + if (!$config[Options::KEY] || !$config[Options::SECRET]) { + $credentials = self::createFromEnvironment($config); + } else { + // Instantiate using short or long term credentials + $credentials = new static( + $config[Options::KEY], + $config[Options::SECRET], + $config[Options::TOKEN], + $config[Options::TOKEN_TTD] + ); + } + + // Check if the credentials are refreshable, and if so, configure caching + $cache = $config[Options::CREDENTIALS_CACHE]; + if ($cacheKey && $cache) { + $credentials = self::createCache($credentials, $cache, $cacheKey); + } + + return $credentials; + } + + /** + * Create credentials from the credentials ini file in the HOME directory. + * + * @param string|null $profile Pass a specific profile to use. If no + * profile is specified we will attempt to use + * the value specified in the AWS_PROFILE + * environment variable. If AWS_PROFILE is not + * set, the "default" profile is used. + * @param string|null $filename Pass a string to specify the location of the + * credentials files. If null is passed, the + * SDK will attempt to find the configuration + * file at in your HOME directory at + * ~/.aws/credentials. + * @return CredentialsInterface + * @throws \RuntimeException if the file cannot be found, if the file is + * invalid, or if the profile is invalid. + */ + public static function fromIni($profile = null, $filename = null) + { + if (!$filename) { + $filename = self::getHomeDir() . '/.aws/credentials'; + } + + if (!$profile) { + $profile = self::getEnvVar(self::ENV_PROFILE) ?: 'default'; + } + + if (!is_readable($filename) || ($data = parse_ini_file($filename, true)) === false) { + throw new \RuntimeException("Invalid AWS credentials file: {$filename}."); + } + + if (!isset($data[$profile]['aws_access_key_id']) || !isset($data[$profile]['aws_secret_access_key'])) { + throw new \RuntimeException("Invalid AWS credentials profile {$profile} in {$filename}."); + } + + return new self( + $data[$profile]['aws_access_key_id'], + $data[$profile]['aws_secret_access_key'], + isset($data[$profile]['aws_security_token']) + ? $data[$profile]['aws_security_token'] + : null + ); + } + + /** + * Constructs a new BasicAWSCredentials object, with the specified AWS + * access key and AWS secret key + * + * @param string $accessKeyId AWS access key ID + * @param string $secretAccessKey AWS secret access key + * @param string $token Security token to use + * @param int $expiration UNIX timestamp for when credentials expire + */ + public function __construct($accessKeyId, $secretAccessKey, $token = null, $expiration = null) + { + $this->key = trim($accessKeyId); + $this->secret = trim($secretAccessKey); + $this->token = $token; + $this->ttd = $expiration; + } + + public function serialize() + { + return json_encode(array( + Options::KEY => $this->key, + Options::SECRET => $this->secret, + Options::TOKEN => $this->token, + Options::TOKEN_TTD => $this->ttd + )); + } + + public function unserialize($serialized) + { + $data = json_decode($serialized, true); + $this->key = $data[Options::KEY]; + $this->secret = $data[Options::SECRET]; + $this->token = $data[Options::TOKEN]; + $this->ttd = $data[Options::TOKEN_TTD]; + } + + public function getAccessKeyId() + { + return $this->key; + } + + public function getSecretKey() + { + return $this->secret; + } + + public function getSecurityToken() + { + return $this->token; + } + + public function getExpiration() + { + return $this->ttd; + } + + public function isExpired() + { + return $this->ttd !== null && time() >= $this->ttd; + } + + public function setAccessKeyId($key) + { + $this->key = $key; + + return $this; + } + + public function setSecretKey($secret) + { + $this->secret = $secret; + + return $this; + } + + public function setSecurityToken($token) + { + $this->token = $token; + + return $this; + } + + public function setExpiration($timestamp) + { + $this->ttd = $timestamp; + + return $this; + } + + /** + * When no keys are provided, attempt to create them based on the + * environment or instance profile credentials. + * + * @param array|Collection $config + * + * @return CredentialsInterface + */ + private static function createFromEnvironment($config) + { + // Get key and secret from ENV variables + $envKey = self::getEnvVar(self::ENV_KEY); + if (!($envSecret = self::getEnvVar(self::ENV_SECRET))) { + // Use AWS_SECRET_ACCESS_KEY if AWS_SECRET_KEY was not set + $envSecret = self::getEnvVar(self::ENV_SECRET_ACCESS_KEY); + } + + // Use credentials from the environment variables if available + if ($envKey && $envSecret) { + return new static($envKey, $envSecret); + } + + try { + // Use credentials from the INI file in HOME directory if available + return self::fromIni($config[Options::PROFILE]); + } catch (\RuntimeException $e) { + // Otherwise, try using instance profile credentials (available on EC2 instances) + return new RefreshableInstanceProfileCredentials( + new static('', '', '', 1), + $config[Options::CREDENTIALS_CLIENT] + ); + } + } + + private static function createFromCache(CacheAdapterInterface $cache, $cacheKey) + { + $cached = $cache->fetch($cacheKey); + if ($cached instanceof CredentialsInterface && !$cached->isExpired()) { + return new CacheableCredentials($cached, $cache, $cacheKey); + } + + return null; + } + + private static function createCache(CredentialsInterface $credentials, $cache, $cacheKey) + { + if ($cache === 'true' || $cache === true) { + // If no cache adapter was provided, then create one for the user + // @codeCoverageIgnoreStart + if (!extension_loaded('apc')) { + throw new RequiredExtensionNotLoadedException('PHP has not been compiled with APC. Unable to cache ' + . 'the credentials.'); + } elseif (!class_exists('Doctrine\Common\Cache\ApcCache')) { + throw new RuntimeException( + 'Cannot set ' . Options::CREDENTIALS_CACHE . ' to true because the Doctrine cache component is ' + . 'not installed. Either install doctrine/cache or pass in an instantiated ' + . 'Guzzle\Cache\CacheAdapterInterface object' + ); + } + // @codeCoverageIgnoreEnd + $cache = new DoctrineCacheAdapter(new \Doctrine\Common\Cache\ApcCache()); + } elseif (!($cache instanceof CacheAdapterInterface)) { + throw new InvalidArgumentException('Unable to utilize caching with the specified options'); + } + + // Decorate the credentials with a cache + return new CacheableCredentials($credentials, $cache, $cacheKey); + } + + private static function getHomeDir() + { + // On Linux/Unix-like systems, use the HOME environment variable + if ($homeDir = self::getEnvVar('HOME')) { + return $homeDir; + } + + // Get the HOMEDRIVE and HOMEPATH values for Windows hosts + $homeDrive = self::getEnvVar('HOMEDRIVE'); + $homePath = self::getEnvVar('HOMEPATH'); + + return ($homeDrive && $homePath) ? $homeDrive . $homePath : null; + } + + /** + * Fetches the value of an environment variable by checking $_SERVER and getenv(). + * + * @param string $var Name of the environment variable + * + * @return mixed|null + */ + private static function getEnvVar($var) + { + return isset($_SERVER[$var]) ? $_SERVER[$var] : getenv($var); + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Credentials/CredentialsInterface.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Credentials/CredentialsInterface.php new file mode 100644 index 0000000..dd43037 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Credentials/CredentialsInterface.php @@ -0,0 +1,96 @@ +setClient($client); + } + + public function setClient(InstanceMetadataClient $client = null) + { + $this->customClient = null !== $client; + $this->client = $client ?: InstanceMetadataClient::factory(); + } + + public function serialize() + { + $serializable = array( + 'credentials' => parent::serialize(), + 'customClient' => $this->customClient, + ); + + if ($this->customClient) { + $serializable['client'] = serialize($this->client); + } + + return json_encode($serializable); + } + + public function unserialize($value) + { + $serialized = json_decode($value, true); + parent::unserialize($serialized['credentials']); + $this->customClient = $serialized['customClient']; + $this->client = $this->customClient ? + unserialize($serialized['client']) + : InstanceMetadataClient::factory(); + } + + /** + * Attempt to get new credentials from the instance profile + * + * @throws InstanceProfileCredentialsException On error + */ + protected function refresh() + { + $credentials = $this->client->getInstanceProfileCredentials(); + // Expire the token 5 minutes early to pre-fetch before expiring. + $this->credentials->setAccessKeyId($credentials->getAccessKeyId()) + ->setSecretKey($credentials->getSecretKey()) + ->setSecurityToken($credentials->getSecurityToken()) + ->setExpiration($credentials->getExpiration() - 300); + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Enum.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Enum.php new file mode 100644 index 0000000..7f4d356 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Enum.php @@ -0,0 +1,55 @@ +getConstants(); + } + + return self::$cache[$class]; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Enum/ClientOptions.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Enum/ClientOptions.php new file mode 100644 index 0000000..4048cfc --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Enum/ClientOptions.php @@ -0,0 +1,162 @@ +factory = $factory; + } + + /** + * {@inheritdoc} + */ + public static function getSubscribedEvents() + { + return array('request.error' => array('onRequestError', -1)); + } + + /** + * Throws a more meaningful request exception if available + * + * @param Event $event Event emitted + */ + public function onRequestError(Event $event) + { + $e = $this->factory->fromResponse($event['request'], $event['response']); + $event->stopPropagation(); + throw $e; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/InstanceProfileCredentialsException.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/InstanceProfileCredentialsException.php new file mode 100644 index 0000000..fb1dcf1 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/InstanceProfileCredentialsException.php @@ -0,0 +1,50 @@ +statusCode = $code; + } + + /** + * Get the error response code from the service + * + * @return string|null + */ + public function getStatusCode() + { + return $this->statusCode; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/InvalidArgumentException.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/InvalidArgumentException.php new file mode 100644 index 0000000..4360a00 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/InvalidArgumentException.php @@ -0,0 +1,22 @@ +getMessage(), + 0, + $exception + ); + + $this->state = $state; + } + + /** + * Get the state of the transfer + * + * @return TransferStateInterface + */ + public function getState() + { + return $this->state; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/NamespaceExceptionFactory.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/NamespaceExceptionFactory.php new file mode 100644 index 0000000..6489069 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/NamespaceExceptionFactory.php @@ -0,0 +1,103 @@ +parser = $parser; + $this->baseNamespace = $baseNamespace; + $this->defaultException = $defaultException; + } + + /** + * {@inheritdoc} + */ + public function fromResponse(RequestInterface $request, Response $response) + { + $parts = $this->parser->parse($request, $response); + + // Removing leading 'AWS.' and embedded periods + $className = $this->baseNamespace . '\\' . str_replace(array('AWS.', '.'), '', $parts['code']); + if (substr($className, -9) !== 'Exception') { + $className .= 'Exception'; + } + + $className = class_exists($className) ? $className : $this->defaultException; + + return $this->createException($className, $request, $response, $parts); + } + + /** + * Create an prepare an exception object + * + * @param string $className Name of the class to create + * @param RequestInterface $request Request + * @param Response $response Response received + * @param array $parts Parsed exception data + * + * @return \Exception + */ + protected function createException($className, RequestInterface $request, Response $response, array $parts) + { + $class = new $className($parts['message']); + + if ($class instanceof ServiceResponseException) { + $class->setExceptionCode($parts['code']); + $class->setExceptionType($parts['type']); + $class->setResponse($response); + $class->setRequest($request); + $class->setRequestId($parts['request_id']); + } + + return $class; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/OutOfBoundsException.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/OutOfBoundsException.php new file mode 100644 index 0000000..6738c0c --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/OutOfBoundsException.php @@ -0,0 +1,22 @@ + null, + 'message' => null, + 'type' => $response->isClientError() ? 'client' : 'server', + 'request_id' => (string) $response->getHeader('x-amzn-RequestId'), + 'parsed' => null + ); + + // Parse the json and normalize key casings + if (null !== $json = json_decode($response->getBody(true), true)) { + $data['parsed'] = array_change_key_case($json); + } + + // Do additional, protocol-specific parsing and return the result + $data = $this->doParse($data, $response); + + // Remove "Fault" suffix from exception names + if (isset($data['code']) && strpos($data['code'], 'Fault')) { + $data['code'] = preg_replace('/^([a-zA-Z]+)Fault$/', '$1', $data['code']); + } + + return $data; + } + + /** + * Pull relevant exception data out of the parsed json + * + * @param array $data The exception data + * @param Response $response The response from the service containing the error + * + * @return array + */ + abstract protected function doParse(array $data, Response $response); +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/Parser/DefaultXmlExceptionParser.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/Parser/DefaultXmlExceptionParser.php new file mode 100644 index 0000000..9656760 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/Parser/DefaultXmlExceptionParser.php @@ -0,0 +1,109 @@ + null, + 'message' => null, + 'type' => $response->isClientError() ? 'client' : 'server', + 'request_id' => null, + 'parsed' => null + ); + + $body = $response->getBody(true); + + if (!$body) { + $this->parseHeaders($request, $response, $data); + return $data; + } + + try { + $xml = new \SimpleXMLElement($body); + $this->parseBody($xml, $data); + return $data; + } catch (\Exception $e) { + // Gracefully handle parse errors. This could happen when the + // server responds with a non-XML response (e.g., private beta + // services). + $data['code'] = 'PhpInternalXmlParseError'; + $data['message'] = 'A non-XML response was received'; + return $data; + } + } + + /** + * Parses additional exception information from the response headers + * + * @param RequestInterface $request Request that was issued + * @param Response $response The response from the request + * @param array $data The current set of exception data + */ + protected function parseHeaders(RequestInterface $request, Response $response, array &$data) + { + $data['message'] = $response->getStatusCode() . ' ' . $response->getReasonPhrase(); + if ($requestId = $response->getHeader('x-amz-request-id')) { + $data['request_id'] = $requestId; + $data['message'] .= " (Request-ID: $requestId)"; + } + } + + /** + * Parses additional exception information from the response body + * + * @param \SimpleXMLElement $body The response body as XML + * @param array $data The current set of exception data + */ + protected function parseBody(\SimpleXMLElement $body, array &$data) + { + $data['parsed'] = $body; + + $namespaces = $body->getDocNamespaces(); + if (isset($namespaces[''])) { + // Account for the default namespace being defined and PHP not being able to handle it :( + $body->registerXPathNamespace('ns', $namespaces['']); + $prefix = 'ns:'; + } else { + $prefix = ''; + } + + if ($tempXml = $body->xpath("//{$prefix}Code[1]")) { + $data['code'] = (string) $tempXml[0]; + } + + if ($tempXml = $body->xpath("//{$prefix}Message[1]")) { + $data['message'] = (string) $tempXml[0]; + } + + $tempXml = $body->xpath("//{$prefix}RequestId[1]"); + if (empty($tempXml)) { + $tempXml = $body->xpath("//{$prefix}RequestID[1]"); + } + if (isset($tempXml[0])) { + $data['request_id'] = (string) $tempXml[0]; + } + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/Parser/ExceptionParserInterface.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/Parser/ExceptionParserInterface.php new file mode 100644 index 0000000..1b25d96 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/Parser/ExceptionParserInterface.php @@ -0,0 +1,42 @@ +getHeader('x-amzn-ErrorType')) { + $data['code'] = substr($code, 0, strpos($code, ':')); + } + + return $data; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/RequiredExtensionNotLoadedException.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/RequiredExtensionNotLoadedException.php new file mode 100644 index 0000000..c4a072c --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/RequiredExtensionNotLoadedException.php @@ -0,0 +1,22 @@ +exceptionCode = $code; + } + + /** + * Get the exception code + * + * @return string|null + */ + public function getExceptionCode() + { + return $this->exceptionCode; + } + + /** + * Set the exception type + * + * @param string $type Exception type + */ + public function setExceptionType($type) + { + $this->exceptionType = $type; + } + + /** + * Get the exception type (one of client or server) + * + * @return string|null + */ + public function getExceptionType() + { + return $this->exceptionType; + } + + /** + * Set the request ID + * + * @param string $id Request ID + */ + public function setRequestId($id) + { + $this->requestId = $id; + } + + /** + * Get the Request ID + * + * @return string|null + */ + public function getRequestId() + { + return $this->requestId; + } + + /** + * Set the associated response + * + * @param Response $response Response + */ + public function setResponse(Response $response) + { + $this->response = $response; + } + + /** + * Get the associated response object + * + * @return Response|null + */ + public function getResponse() + { + return $this->response; + } + + /** + * Set the associated request + * + * @param RequestInterface $request + */ + public function setRequest(RequestInterface $request) + { + $this->request = $request; + } + + /** + * Get the associated request object + * + * @return RequestInterface|null + */ + public function getRequest() + { + return $this->request; + } + + /** + * Get the status code of the response + * + * @return int|null + */ + public function getStatusCode() + { + return $this->response ? $this->response->getStatusCode() : null; + } + + /** + * Cast to a string + * + * @return string + */ + public function __toString() + { + $message = get_class($this) . ': ' + . 'AWS Error Code: ' . $this->getExceptionCode() . ', ' + . 'Status Code: ' . $this->getStatusCode() . ', ' + . 'AWS Request ID: ' . $this->getRequestId() . ', ' + . 'AWS Error Type: ' . $this->getExceptionType() . ', ' + . 'AWS Error Message: ' . $this->getMessage(); + + // Add the User-Agent if available + if ($this->request) { + $message .= ', ' . 'User-Agent: ' . $this->request->getHeader('User-Agent'); + } + + return $message; + } + + /** + * Get the request ID of the error. This value is only present if a + * response was received, and is not present in the event of a networking + * error. + * + * Same as `getRequestId()` method, but matches the interface for SDKv3. + * + * @return string|null Returns null if no response was received + */ + public function getAwsRequestId() + { + return $this->requestId; + } + + /** + * Get the AWS error type. + * + * Same as `getExceptionType()` method, but matches the interface for SDKv3. + * + * @return string|null Returns null if no response was received + */ + public function getAwsErrorType() + { + return $this->exceptionType; + } + + /** + * Get the AWS error code. + * + * Same as `getExceptionCode()` method, but matches the interface for SDKv3. + * + * @return string|null Returns null if no response was received + */ + public function getAwsErrorCode() + { + return $this->exceptionCode; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/TransferException.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/TransferException.php new file mode 100644 index 0000000..47aa80d --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/TransferException.php @@ -0,0 +1,24 @@ +getConfig() as $service) { + if (isset($service['alias'], $service['class'])) { + $facadeClass = __NAMESPACE__ . '\\' . $service['alias']; + $facadeAlias = ltrim($targetNamespace . '\\' . $service['alias'], '\\'); + if (!class_exists($facadeAlias) && class_exists($facadeClass)) { + // @codeCoverageIgnoreStart + class_alias($facadeClass, $facadeAlias); + // @codeCoverageIgnoreEnd + } + } + } + } + + /** + * Returns the instance of the client that the facade operates on + * + * @return \Aws\Common\Client\AwsClientInterface + */ + public static function getClient() + { + return self::$serviceBuilder->get(static::getServiceBuilderKey()); + } + + public static function __callStatic($method, $args) + { + return call_user_func_array(array(self::getClient(), $method), $args); + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Facade/FacadeInterface.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Facade/FacadeInterface.php new file mode 100644 index 0000000..c00c32d --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Facade/FacadeInterface.php @@ -0,0 +1,34 @@ +context = hash_init($algorithm); + } + + /** + * {@inheritdoc} + */ + public function addData($data) + { + if (!$this->context) { + throw new LogicException('You may not add more data to a finalized chunk hash.'); + } + + hash_update($this->context, $data); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function getHash($returnBinaryForm = false) + { + if (!$this->hash) { + $this->hashRaw = hash_final($this->context, true); + $this->hash = HashUtils::binToHex($this->hashRaw); + $this->context = null; + } + + return $returnBinaryForm ? $this->hashRaw : $this->hash; + } + + /** + * {@inheritdoc} + */ + public function __clone() + { + if ($this->context) { + $this->context = hash_copy($this->context); + } + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Hash/ChunkHashInterface.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Hash/ChunkHashInterface.php new file mode 100644 index 0000000..5fcf9a5 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Hash/ChunkHashInterface.php @@ -0,0 +1,52 @@ +checksums = $inBinaryForm ? $checksums : array_map('Aws\Common\Hash\HashUtils::hexToBin', $checksums); + + // Pre-calculate hash + $treeHash->getHash(); + + return $treeHash; + } + + /** + * Create a tree hash from a content body + * + * @param string|resource|EntityBody $content Content to create a tree hash for + * @param string $algorithm A valid hash algorithm name as returned by `hash_algos()` + * + * @return TreeHash + */ + public static function fromContent($content, $algorithm = self::DEFAULT_ALGORITHM) + { + $treeHash = new self($algorithm); + + // Read the data in 1MB chunks and add to tree hash + $content = EntityBody::factory($content); + while ($data = $content->read(Size::MB)) { + $treeHash->addData($data); + } + + // Pre-calculate hash + $treeHash->getHash(); + + return $treeHash; + } + + /** + * Validates an entity body with a tree hash checksum + * + * @param string|resource|EntityBody $content Content to create a tree hash for + * @param string $checksum The checksum to use for validation + * @param string $algorithm A valid hash algorithm name as returned by `hash_algos()` + * + * @return bool + */ + public static function validateChecksum($content, $checksum, $algorithm = self::DEFAULT_ALGORITHM) + { + $treeHash = self::fromContent($content, $algorithm); + + return ($checksum === $treeHash->getHash()); + } + + /** + * {@inheritdoc} + */ + public function __construct($algorithm = self::DEFAULT_ALGORITHM) + { + HashUtils::validateAlgorithm($algorithm); + $this->algorithm = $algorithm; + } + + /** + * {@inheritdoc} + * @throws LogicException if the root tree hash is already calculated + * @throws InvalidArgumentException if the data is larger than 1MB + */ + public function addData($data) + { + // Error if hash is already calculated + if ($this->hash) { + throw new LogicException('You may not add more data to a finalized tree hash.'); + } + + // Make sure that only 1MB chunks or smaller get passed in + if (strlen($data) > Size::MB) { + throw new InvalidArgumentException('The chunk of data added is too large for tree hashing.'); + } + + // Store the raw hash of this data segment + $this->checksums[] = hash($this->algorithm, $data, true); + + return $this; + } + + /** + * Add a checksum to the tree hash directly + * + * @param string $checksum The checksum to add + * @param bool $inBinaryForm Whether or not the checksum is already in binary form + * + * @return self + * @throws LogicException if the root tree hash is already calculated + */ + public function addChecksum($checksum, $inBinaryForm = false) + { + // Error if hash is already calculated + if ($this->hash) { + throw new LogicException('You may not add more checksums to a finalized tree hash.'); + } + + // Convert the checksum to binary form if necessary + $this->checksums[] = $inBinaryForm ? $checksum : HashUtils::hexToBin($checksum); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function getHash($returnBinaryForm = false) + { + if (!$this->hash) { + // Perform hashes up the tree to arrive at the root checksum of the tree hash + $hashes = $this->checksums; + while (count($hashes) > 1) { + $sets = array_chunk($hashes, 2); + $hashes = array(); + foreach ($sets as $set) { + $hashes[] = (count($set) === 1) ? $set[0] : hash($this->algorithm, $set[0] . $set[1], true); + } + } + + $this->hashRaw = $hashes[0]; + $this->hash = HashUtils::binToHex($this->hashRaw); + } + + return $returnBinaryForm ? $this->hashRaw : $this->hash; + } + + /** + * @return array Array of raw checksums composing the tree hash + */ + public function getChecksums() + { + return $this->checksums; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/HostNameUtils.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/HostNameUtils.php new file mode 100644 index 0000000..4b791aa --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/HostNameUtils.php @@ -0,0 +1,85 @@ +getHost(), -14) != '.amazonaws.com') { + return self::DEFAULT_REGION; + } + + $serviceAndRegion = substr($url->getHost(), 0, -14); + // Special handling for S3 regions + $separator = strpos($serviceAndRegion, 's3') === 0 ? '-' : '.'; + $separatorPos = strpos($serviceAndRegion, $separator); + + // If don't detect a separator, then return the default region + if ($separatorPos === false) { + return self::DEFAULT_REGION; + } + + $region = substr($serviceAndRegion, $separatorPos + 1); + + // All GOV regions currently use the default GOV region + if ($region == 'us-gov') { + return self::DEFAULT_GOV_REGION; + } + + return $region; + } + + /** + * Parse the AWS service name from a URL + * + * @param Url $url HTTP URL + * + * @return string Returns a service name (or empty string) + * @link http://docs.aws.amazon.com/general/latest/gr/rande.html + */ + public static function parseServiceName(Url $url) + { + // The service name is the first part of the host + $parts = explode('.', $url->getHost(), 2); + + // Special handling for S3 + if (stripos($parts[0], 's3') === 0) { + return 's3'; + } + + return $parts[0]; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/InstanceMetadata/InstanceMetadataClient.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/InstanceMetadata/InstanceMetadataClient.php new file mode 100644 index 0000000..229be15 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/InstanceMetadata/InstanceMetadataClient.php @@ -0,0 +1,102 @@ + 'http://169.254.169.254/{version}/', + 'version' => 'latest', + 'request.options' => array( + 'connect_timeout' => 5, + 'timeout' => 10 + ) + ), array('base_url', 'version')); + + return new self($config); + } + + /** + * Constructor override + */ + public function __construct(Collection $config) + { + $this->setConfig($config); + $this->setBaseUrl($config->get(Options::BASE_URL)); + $this->defaultHeaders = new Collection(); + $this->setRequestFactory(RequestFactory::getInstance()); + } + + /** + * Get instance profile credentials + * + * @return Credentials + * @throws InstanceProfileCredentialsException + */ + public function getInstanceProfileCredentials() + { + try { + $request = $this->get('meta-data/iam/security-credentials/'); + $credentials = trim($request->send()->getBody(true)); + $result = $this->get("meta-data/iam/security-credentials/{$credentials}")->send()->json(); + } catch (\Exception $e) { + $message = sprintf('Error retrieving credentials from the instance profile metadata server. When you are' + . ' not running inside of Amazon EC2, you must provide your AWS access key ID and secret access key in' + . ' the "key" and "secret" options when creating a client or provide an instantiated' + . ' Aws\\Common\\Credentials\\CredentialsInterface object. (%s)', $e->getMessage()); + throw new InstanceProfileCredentialsException($message, $e->getCode()); + } + + // Ensure that the status code was successful + if ($result['Code'] !== 'Success') { + $e = new InstanceProfileCredentialsException('Unexpected response code: ' . $result['Code']); + $e->setStatusCode($result['Code']); + throw $e; + } + + return new Credentials( + $result['AccessKeyId'], + $result['SecretAccessKey'], + $result['Token'], + strtotime($result['Expiration']) + ); + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/InstanceMetadata/Waiter/ServiceAvailable.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/InstanceMetadata/Waiter/ServiceAvailable.php new file mode 100644 index 0000000..ac305c3 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/InstanceMetadata/Waiter/ServiceAvailable.php @@ -0,0 +1,50 @@ +client->get(); + try { + $request->getCurlOptions()->set(CURLOPT_CONNECTTIMEOUT, 10) + ->set(CURLOPT_TIMEOUT, 10); + $request->send(); + + return true; + } catch (CurlException $e) { + return false; + } + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Iterator/AwsResourceIterator.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Iterator/AwsResourceIterator.php new file mode 100644 index 0000000..cdd8119 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Iterator/AwsResourceIterator.php @@ -0,0 +1,169 @@ +lastResult; + } + + /** + * {@inheritdoc} + * This AWS specific version of the resource iterator provides a default implementation of the typical AWS iterator + * process. It relies on configuration and extension to implement the operation-specific logic of handling results + * and nextTokens. This method will loop until resources are acquired or there are no more iterations available. + */ + protected function sendRequest() + { + do { + // Prepare the request including setting the next token + $this->prepareRequest(); + if ($this->nextToken) { + $this->applyNextToken(); + } + + // Execute the request and handle the results + $this->command->add(Ua::OPTION, Ua::ITERATOR); + $this->lastResult = $this->command->getResult(); + $resources = $this->handleResults($this->lastResult); + $this->determineNextToken($this->lastResult); + + // If no resources collected, prepare to reiterate before yielding + if ($reiterate = empty($resources) && $this->nextToken) { + $this->command = clone $this->originalCommand; + } + } while ($reiterate); + + return $resources; + } + + protected function prepareRequest() + { + // Get the limit parameter key to set + $limitKey = $this->get('limit_key'); + if ($limitKey && ($limit = $this->command->get($limitKey))) { + $pageSize = $this->calculatePageSize(); + + // If the limit of the command is different than the pageSize of the iterator, use the smaller value + if ($limit && $pageSize) { + $realLimit = min($limit, $pageSize); + $this->command->set($limitKey, $realLimit); + } + } + } + + protected function handleResults(Model $result) + { + $results = array(); + + // Get the result key that contains the results + if ($resultKey = $this->get('result_key')) { + $results = $this->getValueFromResult($result, $resultKey) ?: array(); + } + + return $results; + } + + protected function applyNextToken() + { + // Get the token parameter key to set + if ($tokenParam = $this->get('input_token')) { + // Set the next token. Works with multi-value tokens + if (is_array($tokenParam)) { + if (is_array($this->nextToken) && count($tokenParam) === count($this->nextToken)) { + foreach (array_combine($tokenParam, $this->nextToken) as $param => $token) { + $this->command->set($param, $token); + } + } else { + throw new RuntimeException('The definition of the iterator\'s token parameter and the actual token ' + . 'value are not compatible.'); + } + } else { + $this->command->set($tokenParam, $this->nextToken); + } + } + } + + protected function determineNextToken(Model $result) + { + $this->nextToken = null; + + // If the value of "more_results" is true or there is no "more_results" to check, then try to get the next token + $moreKey = $this->get('more_results'); + if ($moreKey === null || $this->getValueFromResult($result, $moreKey)) { + // Get the token key to check + if ($tokenKey = $this->get('output_token')) { + // Get the next token's value. Works with multi-value tokens + if (is_array($tokenKey)) { + $this->nextToken = array(); + foreach ($tokenKey as $key) { + $this->nextToken[] = $this->getValueFromResult($result, $key); + } + } else { + $this->nextToken = $this->getValueFromResult($result, $tokenKey); + } + } + } + } + + /** + * Extracts the value from the result using Collection::getPath. Also adds some additional logic for keys that need + * to access n-1 indexes (e.g., ImportExport, Kinesis). The n-1 logic only works for the known cases. We will switch + * to a jmespath implementation in the future to cover all cases + * + * @param Model $result + * @param string $key + * + * @return mixed|null + */ + protected function getValueFromResult(Model $result, $key) + { + // Special handling for keys that need to access n-1 indexes + if (strpos($key, '#') !== false) { + $keyParts = explode('#', $key, 2); + $items = $result->getPath(trim($keyParts[0], '/')); + if ($items && is_array($items)) { + $index = count($items) - 1; + $key = strtr($key, array('#' => $index)); + } + } + + // Get the value + return $result->getPath($key); + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Iterator/AwsResourceIteratorFactory.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Iterator/AwsResourceIteratorFactory.php new file mode 100644 index 0000000..ce668a2 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Iterator/AwsResourceIteratorFactory.php @@ -0,0 +1,106 @@ + null, + 'output_token' => null, + 'limit_key' => null, + 'result_key' => null, + 'more_results' => null, + ); + + /** + * @var array Legacy configuration options mapped to their new names + */ + private static $legacyConfigOptions = array( + 'token_param' => 'input_token', + 'token_key' => 'output_token', + 'limit_param' => 'limit_key', + 'more_key' => 'more_results', + ); + + /** + * @var array Iterator configuration for each iterable operation + */ + protected $config; + + /** + * @var ResourceIteratorFactoryInterface Another factory that will be used first to instantiate the iterator + */ + protected $primaryIteratorFactory; + + /** + * @param array $config An array of configuration values for the factory + * @param ResourceIteratorFactoryInterface $primaryIteratorFactory Another factory to use for chain of command + */ + public function __construct(array $config, ResourceIteratorFactoryInterface $primaryIteratorFactory = null) + { + $this->primaryIteratorFactory = $primaryIteratorFactory; + $this->config = array(); + foreach ($config as $name => $operation) { + $this->config[$name] = $operation + self::$defaultIteratorConfig; + } + } + + public function build(CommandInterface $command, array $options = array()) + { + // Get the configuration data for the command + $commandName = $command->getName(); + $commandSupported = isset($this->config[$commandName]); + $options = $this->translateLegacyConfigOptions($options); + $options += $commandSupported ? $this->config[$commandName] : array(); + + // Instantiate the iterator using the primary factory (if one was provided) + if ($this->primaryIteratorFactory && $this->primaryIteratorFactory->canBuild($command)) { + $iterator = $this->primaryIteratorFactory->build($command, $options); + } elseif (!$commandSupported) { + throw new InvalidArgumentException("Iterator was not found for {$commandName}."); + } else { + // Instantiate a generic AWS resource iterator + $iterator = new AwsResourceIterator($command, $options); + } + + return $iterator; + } + + public function canBuild(CommandInterface $command) + { + if ($this->primaryIteratorFactory) { + return $this->primaryIteratorFactory->canBuild($command); + } else { + return isset($this->config[$command->getName()]); + } + } + + /** + * @param array $config The config for a single operation + * + * @return array The modified config with legacy options translated + */ + private function translateLegacyConfigOptions($config) + { + foreach (self::$legacyConfigOptions as $legacyOption => $newOption) { + if (isset($config[$legacyOption])) { + $config[$newOption] = $config[$legacyOption]; + unset($config[$legacyOption]); + } + } + + return $config; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Model/MultipartUpload/AbstractTransfer.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Model/MultipartUpload/AbstractTransfer.php new file mode 100644 index 0000000..751b558 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Model/MultipartUpload/AbstractTransfer.php @@ -0,0 +1,270 @@ +client = $client; + $this->state = $state; + $this->source = $source; + $this->options = $options; + + $this->init(); + + $this->partSize = $this->calculatePartSize(); + } + + public function __invoke() + { + return $this->upload(); + } + + /** + * {@inheritdoc} + */ + public static function getAllEvents() + { + return array( + self::BEFORE_PART_UPLOAD, + self::AFTER_UPLOAD, + self::BEFORE_PART_UPLOAD, + self::AFTER_PART_UPLOAD, + self::AFTER_ABORT, + self::AFTER_COMPLETE + ); + } + + /** + * {@inheritdoc} + */ + public function abort() + { + $command = $this->getAbortCommand(); + $result = $command->getResult(); + + $this->state->setAborted(true); + $this->stop(); + $this->dispatch(self::AFTER_ABORT, $this->getEventData($command)); + + return $result; + } + + /** + * {@inheritdoc} + */ + public function stop() + { + $this->stopped = true; + + return $this->state; + } + + /** + * {@inheritdoc} + */ + public function getState() + { + return $this->state; + } + + /** + * Get the array of options associated with the transfer + * + * @return array + */ + public function getOptions() + { + return $this->options; + } + + /** + * Set an option on the transfer + * + * @param string $option Name of the option + * @param mixed $value Value to set + * + * @return self + */ + public function setOption($option, $value) + { + $this->options[$option] = $value; + + return $this; + } + + /** + * Get the source body of the upload + * + * @return EntityBodyInterface + */ + public function getSource() + { + return $this->source; + } + + /** + * {@inheritdoc} + * @throws MultipartUploadException when an error is encountered. Use getLastException() to get more information. + * @throws RuntimeException when attempting to upload an aborted transfer + */ + public function upload() + { + if ($this->state->isAborted()) { + throw new RuntimeException('The transfer has been aborted and cannot be uploaded'); + } + + $this->stopped = false; + $eventData = $this->getEventData(); + $this->dispatch(self::BEFORE_UPLOAD, $eventData); + + try { + $this->transfer(); + $this->dispatch(self::AFTER_UPLOAD, $eventData); + + if ($this->stopped) { + return null; + } else { + $result = $this->complete(); + $this->dispatch(self::AFTER_COMPLETE, $eventData); + } + } catch (\Exception $e) { + throw new MultipartUploadException($this->state, $e); + } + + return $result; + } + + /** + * Get an array used for event notifications + * + * @param OperationCommand $command Command to include in event data + * + * @return array + */ + protected function getEventData(OperationCommand $command = null) + { + $data = array( + 'transfer' => $this, + 'source' => $this->source, + 'options' => $this->options, + 'client' => $this->client, + 'part_size' => $this->partSize, + 'state' => $this->state + ); + + if ($command) { + $data['command'] = $command; + } + + return $data; + } + + /** + * Hook to initialize the transfer + */ + protected function init() {} + + /** + * Determine the upload part size based on the size of the source data and + * taking into account the acceptable minimum and maximum part sizes. + * + * @return int The part size + */ + abstract protected function calculatePartSize(); + + /** + * Complete the multipart upload + * + * @return Model Returns the result of the complete multipart upload command + */ + abstract protected function complete(); + + /** + * Hook to implement in subclasses to perform the actual transfer + */ + abstract protected function transfer(); + + /** + * Fetches the abort command fom the concrete implementation + * + * @return OperationCommand + */ + abstract protected function getAbortCommand(); +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Model/MultipartUpload/AbstractTransferState.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Model/MultipartUpload/AbstractTransferState.php new file mode 100644 index 0000000..06d6c84 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Model/MultipartUpload/AbstractTransferState.php @@ -0,0 +1,164 @@ +uploadId = $uploadId; + } + + /** + * {@inheritdoc} + */ + public function getUploadId() + { + return $this->uploadId; + } + + /** + * Get a data value from the transfer state's uploadId + * + * @param string $key Key to retrieve (e.g. Bucket, Key, UploadId, etc) + * + * @return string|null + */ + public function getFromId($key) + { + $params = $this->uploadId->toParams(); + + return isset($params[$key]) ? $params[$key] : null; + } + + /** + * {@inheritdoc} + */ + public function getPart($partNumber) + { + return isset($this->parts[$partNumber]) ? $this->parts[$partNumber] : null; + } + + /** + * {@inheritdoc} + */ + public function addPart(UploadPartInterface $part) + { + $partNumber = $part->getPartNumber(); + $this->parts[$partNumber] = $part; + + return $this; + } + + /** + * {@inheritdoc} + */ + public function hasPart($partNumber) + { + return isset($this->parts[$partNumber]); + } + + /** + * {@inheritdoc} + */ + public function getPartNumbers() + { + return array_keys($this->parts); + } + + /** + * {@inheritdoc} + */ + public function setAborted($aborted) + { + $this->aborted = (bool) $aborted; + + return $this; + } + + /** + * {@inheritdoc} + */ + public function isAborted() + { + return $this->aborted; + } + + /** + * {@inheritdoc} + */ + public function count() + { + return count($this->parts); + } + + /** + * {@inheritdoc} + */ + public function getIterator() + { + return new \ArrayIterator($this->parts); + } + + /** + * {@inheritdoc} + */ + public function serialize() + { + return serialize(get_object_vars($this)); + } + + /** + * {@inheritdoc} + */ + public function unserialize($serialized) + { + $data = unserialize($serialized); + foreach (get_object_vars($this) as $property => $oldValue) { + if (array_key_exists($property, $data)) { + $this->{$property} = $data[$property]; + } else { + throw new RuntimeException("The {$property} property could be restored during unserialization."); + } + } + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Model/MultipartUpload/AbstractUploadBuilder.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Model/MultipartUpload/AbstractUploadBuilder.php new file mode 100644 index 0000000..8690d5c --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Model/MultipartUpload/AbstractUploadBuilder.php @@ -0,0 +1,148 @@ +client = $client; + + return $this; + } + + /** + * Set the state of the upload. This is useful for resuming from a previously started multipart upload. + * You must use a local file stream as the data source if you wish to resume from a previous upload. + * + * @param TransferStateInterface|string $state Pass a TransferStateInterface object or the ID of the initiated + * multipart upload. When an ID is passed, the builder will create a + * state object using the data from a ListParts API response. + * + * @return $this + */ + public function resumeFrom($state) + { + $this->state = $state; + + return $this; + } + + /** + * Set the data source of the transfer + * + * @param resource|string|EntityBody $source Source of the transfer. Pass a string to transfer from a file on disk. + * You can also stream from a resource returned from fopen or a Guzzle + * {@see EntityBody} object. + * + * @return $this + * @throws InvalidArgumentException when the source cannot be found or opened + */ + public function setSource($source) + { + // Use the contents of a file as the data source + if (is_string($source)) { + if (!file_exists($source)) { + throw new InvalidArgumentException("File does not exist: {$source}"); + } + // Clear the cache so that we send accurate file sizes + clearstatcache(true, $source); + $source = fopen($source, 'r'); + } + + $this->source = EntityBody::factory($source); + + if ($this->source->isSeekable() && $this->source->getSize() == 0) { + throw new InvalidArgumentException('Empty body provided to upload builder'); + } + + return $this; + } + + /** + * Specify the headers to set on the upload + * + * @param array $headers Headers to add to the uploaded object + * + * @return $this + */ + public function setHeaders(array $headers) + { + $this->headers = $headers; + + return $this; + } + + /** + * Build the appropriate uploader based on the builder options + * + * @return TransferInterface + */ + abstract public function build(); + + /** + * Initiate the multipart upload + * + * @return TransferStateInterface + */ + abstract protected function initiateMultipartUpload(); +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Model/MultipartUpload/AbstractUploadId.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Model/MultipartUpload/AbstractUploadId.php new file mode 100644 index 0000000..da79521 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Model/MultipartUpload/AbstractUploadId.php @@ -0,0 +1,89 @@ +loadData($data); + + return $uploadId; + } + + /** + * {@inheritdoc} + */ + public function toParams() + { + return $this->data; + } + + /** + * {@inheritdoc} + */ + public function serialize() + { + return serialize($this->data); + } + + /** + * {@inheritdoc} + */ + public function unserialize($serialized) + { + $this->loadData(unserialize($serialized)); + } + + /** + * Loads an array of data into the UploadId by extracting only the needed keys + * + * @param array $data Data to load + * + * @throws InvalidArgumentException if a required key is missing + */ + protected function loadData($data) + { + $data = array_replace(static::$expectedValues, array_intersect_key($data, static::$expectedValues)); + foreach ($data as $key => $value) { + if (isset($data[$key])) { + $this->data[$key] = $data[$key]; + } else { + throw new InvalidArgumentException("A required key [$key] was missing from the UploadId."); + } + } + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Model/MultipartUpload/AbstractUploadPart.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Model/MultipartUpload/AbstractUploadPart.php new file mode 100644 index 0000000..1cf4c6d --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Model/MultipartUpload/AbstractUploadPart.php @@ -0,0 +1,101 @@ +loadData($data); + + return $part; + } + + /** + * {@inheritdoc} + */ + public function getPartNumber() + { + return $this->partNumber; + } + + /** + * {@inheritdoc} + */ + public function toArray() + { + $array = array(); + foreach (static::$keyMap as $key => $property) { + $array[$key] = $this->{$property}; + } + + return $array; + } + + /** + * {@inheritdoc} + */ + public function serialize() + { + return serialize($this->toArray()); + } + + /** + * {@inheritdoc} + */ + public function unserialize($serialized) + { + $this->loadData(unserialize($serialized)); + } + + /** + * Loads an array of data into the upload part by extracting only the needed keys + * + * @param array|\Traversable $data Data to load into the upload part value object + * + * @throws InvalidArgumentException if a required key is missing + */ + protected function loadData($data) + { + foreach (static::$keyMap as $key => $property) { + if (isset($data[$key])) { + $this->{$property} = $data[$key]; + } else { + throw new InvalidArgumentException("A required key [$key] was missing from the upload part."); + } + } + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Model/MultipartUpload/TransferInterface.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Model/MultipartUpload/TransferInterface.php new file mode 100644 index 0000000..1fc1ae9 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Model/MultipartUpload/TransferInterface.php @@ -0,0 +1,66 @@ + 'Aws\Common\Aws', + 'services' => array( + + 'default_settings' => array( + 'params' => array() + ), + + 'autoscaling' => array( + 'alias' => 'AutoScaling', + 'extends' => 'default_settings', + 'class' => 'Aws\AutoScaling\AutoScalingClient' + ), + + 'cloudformation' => array( + 'alias' => 'CloudFormation', + 'extends' => 'default_settings', + 'class' => 'Aws\CloudFormation\CloudFormationClient' + ), + + 'cloudfront' => array( + 'alias' => 'CloudFront', + 'extends' => 'default_settings', + 'class' => 'Aws\CloudFront\CloudFrontClient' + ), + + 'cloudfront_20120505' => array( + 'extends' => 'cloudfront', + 'params' => array( + 'version' => '2012-05-05' + ) + ), + + 'cloudhsm' => array( + 'alias' => 'CloudHsm', + 'extends' => 'default_settings', + 'class' => 'Aws\CloudHsm\CloudHsmClient' + ), + + 'cloudsearch' => array( + 'alias' => 'CloudSearch', + 'extends' => 'default_settings', + 'class' => 'Aws\CloudSearch\CloudSearchClient' + ), + + 'cloudsearch_20110201' => array( + 'extends' => 'cloudsearch', + 'params' => array( + 'version' => '2011-02-01' + ) + ), + + 'cloudsearchdomain' => array( + 'alias' => 'CloudSearchDomain', + 'extends' => 'default_settings', + 'class' => 'Aws\CloudSearchDomain\CloudSearchDomainClient' + ), + + 'cloudtrail' => array( + 'alias' => 'CloudTrail', + 'extends' => 'default_settings', + 'class' => 'Aws\CloudTrail\CloudTrailClient' + ), + + 'cloudwatch' => array( + 'alias' => 'CloudWatch', + 'extends' => 'default_settings', + 'class' => 'Aws\CloudWatch\CloudWatchClient' + ), + + 'cloudwatchlogs' => array( + 'alias' => 'CloudWatchLogs', + 'extends' => 'default_settings', + 'class' => 'Aws\CloudWatchLogs\CloudWatchLogsClient' + ), + + 'cognito-identity' => array( + 'alias' => 'CognitoIdentity', + 'extends' => 'default_settings', + 'class' => 'Aws\CognitoIdentity\CognitoIdentityClient' + ), + + 'cognitoidentity' => array('extends' => 'cognito-identity'), + + 'cognito-sync' => array( + 'alias' => 'CognitoSync', + 'extends' => 'default_settings', + 'class' => 'Aws\CognitoSync\CognitoSyncClient' + ), + + 'cognitosync' => array('extends' => 'cognito-sync'), + + 'codecommit' => array( + 'alias' => 'CodeCommit', + 'extends' => 'default_settings', + 'class' => 'Aws\CodeCommit\CodeCommitClient' + ), + + 'codedeploy' => array( + 'alias' => 'CodeDeploy', + 'extends' => 'default_settings', + 'class' => 'Aws\CodeDeploy\CodeDeployClient' + ), + + 'codepipeline' => array( + 'alias' => 'CodePipeline', + 'extends' => 'default_settings', + 'class' => 'Aws\CodePipeline\CodePipelineClient' + ), + + 'config' => array( + 'alias' => 'ConfigService', + 'extends' => 'default_settings', + 'class' => 'Aws\ConfigService\ConfigServiceClient' + ), + + 'datapipeline' => array( + 'alias' => 'DataPipeline', + 'extends' => 'default_settings', + 'class' => 'Aws\DataPipeline\DataPipelineClient' + ), + + 'devicefarm' => array( + 'alias' => 'DeviceFarm', + 'extends' => 'default_settings', + 'class' => 'Aws\DeviceFarm\DeviceFarmClient' + ), + + 'directconnect' => array( + 'alias' => 'DirectConnect', + 'extends' => 'default_settings', + 'class' => 'Aws\DirectConnect\DirectConnectClient' + ), + + 'ds' => array( + 'alias' => 'DirectoryService', + 'extends' => 'default_settings', + 'class' => 'Aws\DirectoryService\DirectoryServiceClient' + ), + + 'dynamodb' => array( + 'alias' => 'DynamoDb', + 'extends' => 'default_settings', + 'class' => 'Aws\DynamoDb\DynamoDbClient' + ), + + 'dynamodb_20111205' => array( + 'extends' => 'dynamodb', + 'params' => array( + 'version' => '2011-12-05' + ) + ), + + 'dynamodbstreams' => array( + 'alias' => 'DynamoDbStreams', + 'extends' => 'default_settings', + 'class' => 'Aws\DynamoDbStreams\DynamoDbStreamsClient' + ), + + 'ec2' => array( + 'alias' => 'Ec2', + 'extends' => 'default_settings', + 'class' => 'Aws\Ec2\Ec2Client' + ), + + 'ecs' => array( + 'alias' => 'Ecs', + 'extends' => 'default_settings', + 'class' => 'Aws\Ecs\EcsClient' + ), + + 'elasticache' => array( + 'alias' => 'ElastiCache', + 'extends' => 'default_settings', + 'class' => 'Aws\ElastiCache\ElastiCacheClient' + ), + + 'elasticbeanstalk' => array( + 'alias' => 'ElasticBeanstalk', + 'extends' => 'default_settings', + 'class' => 'Aws\ElasticBeanstalk\ElasticBeanstalkClient' + ), + + 'efs' => array( + 'alias' => 'Efs', + 'extends' => 'default_settings', + 'class' => 'Aws\Efs\EfsClient' + ), + + 'elasticloadbalancing' => array( + 'alias' => 'ElasticLoadBalancing', + 'extends' => 'default_settings', + 'class' => 'Aws\ElasticLoadBalancing\ElasticLoadBalancingClient' + ), + + 'elastictranscoder' => array( + 'alias' => 'ElasticTranscoder', + 'extends' => 'default_settings', + 'class' => 'Aws\ElasticTranscoder\ElasticTranscoderClient' + ), + + 'emr' => array( + 'alias' => 'Emr', + 'extends' => 'default_settings', + 'class' => 'Aws\Emr\EmrClient' + ), + + 'glacier' => array( + 'alias' => 'Glacier', + 'extends' => 'default_settings', + 'class' => 'Aws\Glacier\GlacierClient' + ), + + 'kinesis' => array( + 'alias' => 'Kinesis', + 'extends' => 'default_settings', + 'class' => 'Aws\Kinesis\KinesisClient' + ), + + 'kms' => array( + 'alias' => 'Kms', + 'extends' => 'default_settings', + 'class' => 'Aws\Kms\KmsClient' + ), + + 'lambda' => array( + 'alias' => 'Lambda', + 'extends' => 'default_settings', + 'class' => 'Aws\Lambda\LambdaClient' + ), + + 'iam' => array( + 'alias' => 'Iam', + 'extends' => 'default_settings', + 'class' => 'Aws\Iam\IamClient' + ), + + 'importexport' => array( + 'alias' => 'ImportExport', + 'extends' => 'default_settings', + 'class' => 'Aws\ImportExport\ImportExportClient' + ), + + 'machinelearning' => array( + 'alias' => 'MachineLearning', + 'extends' => 'default_settings', + 'class' => 'Aws\MachineLearning\MachineLearningClient' + ), + + 'opsworks' => array( + 'alias' => 'OpsWorks', + 'extends' => 'default_settings', + 'class' => 'Aws\OpsWorks\OpsWorksClient' + ), + + 'rds' => array( + 'alias' => 'Rds', + 'extends' => 'default_settings', + 'class' => 'Aws\Rds\RdsClient' + ), + + 'redshift' => array( + 'alias' => 'Redshift', + 'extends' => 'default_settings', + 'class' => 'Aws\Redshift\RedshiftClient' + ), + + 'route53' => array( + 'alias' => 'Route53', + 'extends' => 'default_settings', + 'class' => 'Aws\Route53\Route53Client' + ), + + 'route53domains' => array( + 'alias' => 'Route53Domains', + 'extends' => 'default_settings', + 'class' => 'Aws\Route53Domains\Route53DomainsClient' + ), + + 's3' => array( + 'alias' => 'S3', + 'extends' => 'default_settings', + 'class' => 'Aws\S3\S3Client' + ), + + 'sdb' => array( + 'alias' => 'SimpleDb', + 'extends' => 'default_settings', + 'class' => 'Aws\SimpleDb\SimpleDbClient' + ), + + 'ses' => array( + 'alias' => 'Ses', + 'extends' => 'default_settings', + 'class' => 'Aws\Ses\SesClient' + ), + + 'sns' => array( + 'alias' => 'Sns', + 'extends' => 'default_settings', + 'class' => 'Aws\Sns\SnsClient' + ), + + 'sqs' => array( + 'alias' => 'Sqs', + 'extends' => 'default_settings', + 'class' => 'Aws\Sqs\SqsClient' + ), + + 'ssm' => array( + 'alias' => 'Ssm', + 'extends' => 'default_settings', + 'class' => 'Aws\Ssm\SsmClient' + ), + + 'storagegateway' => array( + 'alias' => 'StorageGateway', + 'extends' => 'default_settings', + 'class' => 'Aws\StorageGateway\StorageGatewayClient' + ), + + 'sts' => array( + 'alias' => 'Sts', + 'extends' => 'default_settings', + 'class' => 'Aws\Sts\StsClient' + ), + + 'support' => array( + 'alias' => 'Support', + 'extends' => 'default_settings', + 'class' => 'Aws\Support\SupportClient' + ), + + 'swf' => array( + 'alias' => 'Swf', + 'extends' => 'default_settings', + 'class' => 'Aws\Swf\SwfClient' + ), + + 'workspaces' => array( + 'alias' => 'WorkSpaces', + 'extends' => 'default_settings', + 'class' => 'Aws\WorkSpaces\WorkSpacesClient' + ), + ) +); diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Resources/public-endpoints.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Resources/public-endpoints.php new file mode 100644 index 0000000..d939f1f --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Resources/public-endpoints.php @@ -0,0 +1,79 @@ + 2, + 'endpoints' => array( + '*/*' => array( + 'endpoint' => '{service}.{region}.amazonaws.com' + ), + 'cn-north-1/*' => array( + 'endpoint' => '{service}.{region}.amazonaws.com.cn', + 'signatureVersion' => 'v4' + ), + 'us-gov-west-1/iam' => array( + 'endpoint' => 'iam.us-gov.amazonaws.com' + ), + 'us-gov-west-1/sts' => array( + 'endpoint' => 'sts.us-gov-west-1.amazonaws.com' + ), + 'us-gov-west-1/s3' => array( + 'endpoint' => 's3-{region}.amazonaws.com' + ), + '*/cloudfront' => array( + 'endpoint' => 'cloudfront.amazonaws.com', + 'credentialScope' => array( + 'region' => 'us-east-1' + ) + ), + '*/iam' => array( + 'endpoint' => 'iam.amazonaws.com', + 'credentialScope' => array( + 'region' => 'us-east-1' + ) + ), + '*/importexport' => array( + 'endpoint' => 'importexport.amazonaws.com', + 'credentialScope' => array( + 'region' => 'us-east-1' + ) + ), + '*/route53' => array( + 'endpoint' => 'route53.amazonaws.com', + 'credentialScope' => array( + 'region' => 'us-east-1' + ) + ), + '*/sts' => array( + 'endpoint' => 'sts.amazonaws.com', + 'credentialScope' => array( + 'region' => 'us-east-1' + ) + ), + 'us-east-1/sdb' => array( + 'endpoint' => 'sdb.amazonaws.com' + ), + 'us-east-1/s3' => array( + 'endpoint' => 's3.amazonaws.com' + ), + 'us-west-1/s3' => array( + 'endpoint' => 's3-{region}.amazonaws.com' + ), + 'us-west-2/s3' => array( + 'endpoint' => 's3-{region}.amazonaws.com' + ), + 'eu-west-1/s3' => array( + 'endpoint' => 's3-{region}.amazonaws.com' + ), + 'ap-southeast-1/s3' => array( + 'endpoint' => 's3-{region}.amazonaws.com' + ), + 'ap-southeast-2/s3' => array( + 'endpoint' => 's3-{region}.amazonaws.com' + ), + 'ap-northeast-1/s3' => array( + 'endpoint' => 's3-{region}.amazonaws.com' + ), + 'sa-east-1/s3' => array( + 'endpoint' => 's3-{region}.amazonaws.com' + ) + ) +); diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Resources/sdk1-config.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Resources/sdk1-config.php new file mode 100644 index 0000000..a5121ab --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Resources/sdk1-config.php @@ -0,0 +1,138 @@ + array('_aws'), + 'services' => array( + + 'sdk1_settings' => array( + 'extends' => 'default_settings', + 'params' => array( + 'certificate_authority' => false + ) + ), + + 'v1.autoscaling' => array( + 'extends' => 'sdk1_settings', + 'class' => 'AmazonAS' + ), + + 'v1.cloudformation' => array( + 'extends' => 'sdk1_settings', + 'class' => 'AmazonCloudFormation' + ), + + 'v1.cloudfront' => array( + 'extends' => 'sdk1_settings', + 'class' => 'AmazonCloudFront' + ), + + 'v1.cloudsearch' => array( + 'extends' => 'sdk1_settings', + 'class' => 'AmazonCloudSearch' + ), + + 'v1.cloudwatch' => array( + 'extends' => 'sdk1_settings', + 'class' => 'AmazonCloudWatch' + ), + + 'v1.dynamodb' => array( + 'extends' => 'sdk1_settings', + 'class' => 'AmazonDynamoDB' + ), + + 'v1.ec2' => array( + 'extends' => 'sdk1_settings', + 'class' => 'AmazonEC2' + ), + + 'v1.elasticache' => array( + 'extends' => 'sdk1_settings', + 'class' => 'AmazonElastiCache' + ), + + 'v1.elasticbeanstalk' => array( + 'extends' => 'sdk1_settings', + 'class' => 'AmazonElasticBeanstalk' + ), + + 'v1.elb' => array( + 'extends' => 'sdk1_settings', + 'class' => 'AmazonELB' + ), + + 'v1.emr' => array( + 'extends' => 'sdk1_settings', + 'class' => 'AmazonEMR' + ), + + 'v1.iam' => array( + 'extends' => 'sdk1_settings', + 'class' => 'AmazonIAM' + ), + + 'v1.importexport' => array( + 'extends' => 'sdk1_settings', + 'class' => 'AmazonImportExport' + ), + + 'v1.rds' => array( + 'extends' => 'sdk1_settings', + 'class' => 'AmazonRDS' + ), + + 'v1.s3' => array( + 'extends' => 'sdk1_settings', + 'class' => 'AmazonS3' + ), + + 'v1.sdb' => array( + 'extends' => 'sdk1_settings', + 'class' => 'AmazonSDB' + ), + + 'v1.ses' => array( + 'extends' => 'sdk1_settings', + 'class' => 'AmazonSES' + ), + + 'v1.sns' => array( + 'extends' => 'sdk1_settings', + 'class' => 'AmazonSNS' + ), + + 'v1.sqs' => array( + 'extends' => 'sdk1_settings', + 'class' => 'AmazonSQS' + ), + + 'v1.storagegateway' => array( + 'extends' => 'sdk1_settings', + 'class' => 'AmazonStorageGateway' + ), + + 'v1.sts' => array( + 'extends' => 'sdk1_settings', + 'class' => 'AmazonSTS' + ), + + 'v1.swf' => array( + 'extends' => 'sdk1_settings', + 'class' => 'AmazonSWF' + ) + ) +); diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/RulesEndpointProvider.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/RulesEndpointProvider.php new file mode 100644 index 0000000..ec57cb8 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/RulesEndpointProvider.php @@ -0,0 +1,67 @@ +patterns = $patterns; + } + + /** + * Creates and returns the default RulesEndpointProvider based on the + * public rule sets. + * + * @return self + */ + public static function fromDefaults() + { + return new self(require __DIR__ . '/Resources/public-endpoints.php'); + } + + public function __invoke(array $args = array()) + { + if (!isset($args['service'])) { + throw new \InvalidArgumentException('Requires a "service" value'); + } + + if (!isset($args['region'])) { + throw new \InvalidArgumentException('Requires a "region" value'); + } + + foreach ($this->getKeys($args['region'], $args['service']) as $key) { + if (isset($this->patterns['endpoints'][$key])) { + return $this->expand($this->patterns['endpoints'][$key], $args); + } + } + + throw new \RuntimeException('Could not resolve endpoint'); + } + + private function expand(array $config, array $args) + { + $scheme = isset($args['scheme']) ? $args['scheme'] : 'https'; + $config['endpoint'] = $scheme . '://' . str_replace( + array('{service}', '{region}'), + array($args['service'], $args['region']), + $config['endpoint'] + ); + + return $config; + } + + private function getKeys($region, $service) + { + return array("$region/$service", "$region/*", "*/$service", "*/*"); + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Signature/AbstractSignature.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Signature/AbstractSignature.php new file mode 100644 index 0000000..2d25d87 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Signature/AbstractSignature.php @@ -0,0 +1,44 @@ +credentials = $credentials; + $this->signature = $signature; + } + + /** + * {@inheritdoc} + */ + public static function getSubscribedEvents() + { + return array( + 'request.before_send' => array('onRequestBeforeSend', -255), + 'client.credentials_changed' => array('onCredentialsChanged') + ); + } + + /** + * Updates the listener with new credentials if the client is updated + * + * @param Event $event Event emitted + */ + public function onCredentialsChanged(Event $event) + { + $this->credentials = $event['credentials']; + } + + /** + * Signs requests before they are sent + * + * @param Event $event Event emitted + */ + public function onRequestBeforeSend(Event $event) + { + $creds = $this->credentials instanceof AbstractRefreshableCredentials + ? $this->credentials->getCredentials() + : $this->credentials; + + if(!$creds instanceof NullCredentials) { + $this->signature->signRequest($event['request'], $creds); + } + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Signature/SignatureV2.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Signature/SignatureV2.php new file mode 100644 index 0000000..c900287 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Signature/SignatureV2.php @@ -0,0 +1,109 @@ +getTimestamp(true); + + // set values we need in CanonicalizedParameterString + $this->addParameter($request, 'Timestamp', gmdate('c', $timestamp)); + $this->addParameter($request, 'SignatureVersion', '2'); + $this->addParameter($request, 'SignatureMethod', 'HmacSHA256'); + $this->addParameter($request, 'AWSAccessKeyId', $credentials->getAccessKeyId()); + + if ($token = $credentials->getSecurityToken()) { + $this->addParameter($request, 'SecurityToken', $token); + } + + // Get the path and ensure it's absolute + $path = '/' . ltrim($request->getUrl(true)->normalizePath()->getPath(), '/'); + + // build string to sign + $sign = $request->getMethod() . "\n" + . $request->getHost() . "\n" + . $path . "\n" + . $this->getCanonicalizedParameterString($request); + + // Add the string to sign to the request for debugging purposes + $request->getParams()->set('aws.string_to_sign', $sign); + + $signature = base64_encode( + hash_hmac( + 'sha256', + $sign, + $credentials->getSecretKey(), + true + ) + ); + + $this->addParameter($request, 'Signature', $signature); + } + + /** + * Add a parameter key and value to the request according to type + * + * @param RequestInterface $request The request + * @param string $key The name of the parameter + * @param string $value The value of the parameter + */ + public function addParameter(RequestInterface $request, $key, $value) + { + if ($request->getMethod() == 'POST') { + $request->setPostField($key, $value); + } else { + $request->getQuery()->set($key, $value); + } + } + + /** + * Get the canonicalized query/parameter string for a request + * + * @param RequestInterface $request Request used to build canonicalized string + * + * @return string + */ + private function getCanonicalizedParameterString(RequestInterface $request) + { + if ($request->getMethod() == 'POST') { + $params = $request->getPostFields()->toArray(); + } else { + $params = $request->getQuery()->toArray(); + } + + // Don't resign a previous signature value + unset($params['Signature']); + uksort($params, 'strcmp'); + + $str = ''; + foreach ($params as $key => $val) { + $str .= rawurlencode($key) . '=' . rawurlencode($val) . '&'; + } + + return substr($str, 0, -1); + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Signature/SignatureV3Https.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Signature/SignatureV3Https.php new file mode 100644 index 0000000..be0514e --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Signature/SignatureV3Https.php @@ -0,0 +1,52 @@ +hasHeader('date') && !$request->hasHeader('x-amz-date')) { + $request->setHeader('Date', gmdate(DateFormat::RFC1123, $this->getTimestamp())); + } + + // Add the security token if one is present + if ($credentials->getSecurityToken()) { + $request->setHeader('x-amz-security-token', $credentials->getSecurityToken()); + } + + // Determine the string to sign + $stringToSign = (string) ($request->getHeader('Date') ?: $request->getHeader('x-amz-date')); + $request->getParams()->set('aws.string_to_sign', $stringToSign); + + // Calculate the signature + $signature = base64_encode(hash_hmac('sha256', $stringToSign, $credentials->getSecretKey(), true)); + + // Add the authorization header to the request + $headerFormat = 'AWS3-HTTPS AWSAccessKeyId=%s,Algorithm=HmacSHA256,Signature=%s'; + $request->setHeader('X-Amzn-Authorization', sprintf($headerFormat, $credentials->getAccessKeyId(), $signature)); + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Signature/SignatureV4.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Signature/SignatureV4.php new file mode 100644 index 0000000..2137760 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Signature/SignatureV4.php @@ -0,0 +1,477 @@ +serviceName = $serviceName; + $this->regionName = $regionName; + } + + /** + * Set the service name instead of inferring it from a request URL + * + * @param string $service Name of the service used when signing + * + * @return self + */ + public function setServiceName($service) + { + $this->serviceName = $service; + + return $this; + } + + /** + * Set the region name instead of inferring it from a request URL + * + * @param string $region Name of the region used when signing + * + * @return self + */ + public function setRegionName($region) + { + $this->regionName = $region; + + return $this; + } + + /** + * Set the maximum number of computed hashes to cache + * + * @param int $maxCacheSize Maximum number of hashes to cache + * + * @return self + */ + public function setMaxCacheSize($maxCacheSize) + { + $this->maxCacheSize = $maxCacheSize; + + return $this; + } + + public function signRequest(RequestInterface $request, CredentialsInterface $credentials) + { + $timestamp = $this->getTimestamp(); + $longDate = gmdate(DateFormat::ISO8601, $timestamp); + $shortDate = substr($longDate, 0, 8); + + // Remove any previously set Authorization headers so that retries work + $request->removeHeader('Authorization'); + + // Requires a x-amz-date header or Date + if ($request->hasHeader('x-amz-date') || !$request->hasHeader('Date')) { + $request->setHeader('x-amz-date', $longDate); + } else { + $request->setHeader('Date', gmdate(DateFormat::RFC1123, $timestamp)); + } + + // Add the security token if one is present + if ($credentials->getSecurityToken()) { + $request->setHeader('x-amz-security-token', $credentials->getSecurityToken()); + } + + // Parse the service and region or use one that is explicitly set + $region = $this->regionName; + $service = $this->serviceName; + if (!$region || !$service) { + $url = Url::factory($request->getUrl()); + $region = $region ?: HostNameUtils::parseRegionName($url); + $service = $service ?: HostNameUtils::parseServiceName($url); + } + + $credentialScope = $this->createScope($shortDate, $region, $service); + $payload = $this->getPayload($request); + $signingContext = $this->createSigningContext($request, $payload); + $signingContext['string_to_sign'] = $this->createStringToSign( + $longDate, + $credentialScope, + $signingContext['canonical_request'] + ); + + // Calculate the signing key using a series of derived keys + $signingKey = $this->getSigningKey($shortDate, $region, $service, $credentials->getSecretKey()); + $signature = hash_hmac('sha256', $signingContext['string_to_sign'], $signingKey); + + $request->setHeader('Authorization', "AWS4-HMAC-SHA256 " + . "Credential={$credentials->getAccessKeyId()}/{$credentialScope}, " + . "SignedHeaders={$signingContext['signed_headers']}, Signature={$signature}"); + + // Add debug information to the request + $request->getParams()->set('aws.signature', $signingContext); + } + + public function createPresignedUrl( + RequestInterface $request, + CredentialsInterface $credentials, + $expires + ) { + $request = $this->createPresignedRequest($request, $credentials); + $query = $request->getQuery(); + $httpDate = gmdate(DateFormat::ISO8601, $this->getTimestamp()); + $shortDate = substr($httpDate, 0, 8); + $scope = $this->createScope( + $shortDate, + $this->regionName, + $this->serviceName + ); + $this->addQueryValues($scope, $request, $credentials, $expires); + $payload = $this->getPresignedPayload($request); + $context = $this->createSigningContext($request, $payload); + $stringToSign = $this->createStringToSign( + $httpDate, + $scope, + $context['canonical_request'] + ); + $key = $this->getSigningKey( + $shortDate, + $this->regionName, + $this->serviceName, + $credentials->getSecretKey() + ); + $query['X-Amz-Signature'] = hash_hmac('sha256', $stringToSign, $key); + + return $request->getUrl(); + } + + /** + * Converts a POST request to a GET request by moving POST fields into the + * query string. + * + * Useful for pre-signing query protocol requests. + * + * @param EntityEnclosingRequestInterface $request Request to clone + * + * @return RequestInterface + * @throws \InvalidArgumentException if the method is not POST + */ + public static function convertPostToGet(EntityEnclosingRequestInterface $request) + { + if ($request->getMethod() !== 'POST') { + throw new \InvalidArgumentException('Expected a POST request but ' + . 'received a ' . $request->getMethod() . ' request.'); + } + + $cloned = RequestFactory::getInstance() + ->cloneRequestWithMethod($request, 'GET'); + + // Move POST fields to the query if they are present + foreach ($request->getPostFields() as $name => $value) { + $cloned->getQuery()->set($name, $value); + } + + return $cloned; + } + + /** + * Get the payload part of a signature from a request. + * + * @param RequestInterface $request + * + * @return string + */ + protected function getPayload(RequestInterface $request) + { + // Calculate the request signature payload + if ($request->hasHeader('x-amz-content-sha256')) { + // Handle streaming operations (e.g. Glacier.UploadArchive) + return (string) $request->getHeader('x-amz-content-sha256'); + } + + if ($request instanceof EntityEnclosingRequestInterface) { + if ($request->getMethod() == 'POST' && count($request->getPostFields())) { + return hash('sha256', (string) $request->getPostFields()); + } elseif ($body = $request->getBody()) { + return Stream::getHash($request->getBody(), 'sha256'); + } + } + + return self::DEFAULT_PAYLOAD; + } + + /** + * Get the payload of a request for use with pre-signed URLs. + * + * @param RequestInterface $request + * + * @return string + */ + protected function getPresignedPayload(RequestInterface $request) + { + return $this->getPayload($request); + } + + protected function createCanonicalizedPath(RequestInterface $request) + { + $doubleEncoded = rawurlencode(ltrim($request->getPath(), '/')); + + return '/' . str_replace('%2F', '/', $doubleEncoded); + } + + private function createStringToSign($longDate, $credentialScope, $creq) + { + return "AWS4-HMAC-SHA256\n{$longDate}\n{$credentialScope}\n" + . hash('sha256', $creq); + } + + private function createPresignedRequest( + RequestInterface $request, + CredentialsInterface $credentials + ) { + // POST requests can be sent as GET requests instead by moving the + // POST fields into the query string. + if ($request instanceof EntityEnclosingRequestInterface + && $request->getMethod() === 'POST' + && strpos($request->getHeader('Content-Type'), 'application/x-www-form-urlencoded') === 0 + ) { + $sr = RequestFactory::getInstance() + ->cloneRequestWithMethod($request, 'GET'); + // Move POST fields to the query if they are present + foreach ($request->getPostFields() as $name => $value) { + $sr->getQuery()->set($name, $value); + } + } else { + $sr = clone $request; + } + + // Make sure to handle temporary credentials + if ($token = $credentials->getSecurityToken()) { + $sr->setHeader('X-Amz-Security-Token', $token); + $sr->getQuery()->set('X-Amz-Security-Token', $token); + } + + $this->moveHeadersToQuery($sr); + + return $sr; + } + + /** + * Create the canonical representation of a request + * + * @param RequestInterface $request Request to canonicalize + * @param string $payload Request payload (typically the value + * of the x-amz-content-sha256 header. + * + * @return array Returns an array of context information including: + * - canonical_request + * - signed_headers + */ + private function createSigningContext(RequestInterface $request, $payload) + { + $signable = array( + 'host' => true, + 'date' => true, + 'content-md5' => true + ); + + // Normalize the path as required by SigV4 and ensure it's absolute + $canon = $request->getMethod() . "\n" + . $this->createCanonicalizedPath($request) . "\n" + . $this->getCanonicalizedQueryString($request) . "\n"; + + $canonHeaders = array(); + + foreach ($request->getHeaders()->getAll() as $key => $values) { + $key = strtolower($key); + if (isset($signable[$key]) || substr($key, 0, 6) === 'x-amz-') { + $values = $values->toArray(); + if (count($values) == 1) { + $values = $values[0]; + } else { + sort($values); + $values = implode(',', $values); + } + $canonHeaders[$key] = $key . ':' . preg_replace('/\s+/', ' ', $values); + } + } + + ksort($canonHeaders); + $signedHeadersString = implode(';', array_keys($canonHeaders)); + $canon .= implode("\n", $canonHeaders) . "\n\n" + . $signedHeadersString . "\n" + . $payload; + + return array( + 'canonical_request' => $canon, + 'signed_headers' => $signedHeadersString + ); + } + + /** + * Get a hash for a specific key and value. If the hash was previously + * cached, return it + * + * @param string $shortDate Short date + * @param string $region Region name + * @param string $service Service name + * @param string $secretKey Secret Access Key + * + * @return string + */ + private function getSigningKey($shortDate, $region, $service, $secretKey) + { + $cacheKey = $shortDate . '_' . $region . '_' . $service . '_' . $secretKey; + + // Retrieve the hash form the cache or create it and add it to the cache + if (!isset($this->hashCache[$cacheKey])) { + // When the cache size reaches the max, then just clear the cache + if (++$this->cacheSize > $this->maxCacheSize) { + $this->hashCache = array(); + $this->cacheSize = 0; + } + $dateKey = hash_hmac('sha256', $shortDate, 'AWS4' . $secretKey, true); + $regionKey = hash_hmac('sha256', $region, $dateKey, true); + $serviceKey = hash_hmac('sha256', $service, $regionKey, true); + $this->hashCache[$cacheKey] = hash_hmac('sha256', 'aws4_request', $serviceKey, true); + } + + return $this->hashCache[$cacheKey]; + } + + /** + * Get the canonicalized query string for a request + * + * @param RequestInterface $request + * @return string + */ + private function getCanonicalizedQueryString(RequestInterface $request) + { + $queryParams = $request->getQuery()->getAll(); + unset($queryParams['X-Amz-Signature']); + if (empty($queryParams)) { + return ''; + } + + $qs = ''; + ksort($queryParams); + foreach ($queryParams as $key => $values) { + if (is_array($values)) { + sort($values); + } elseif ($values === 0) { + $values = array('0'); + } elseif (!$values) { + $values = array(''); + } + + foreach ((array) $values as $value) { + if ($value === QueryString::BLANK) { + $value = ''; + } + $qs .= rawurlencode($key) . '=' . rawurlencode($value) . '&'; + } + } + + return substr($qs, 0, -1); + } + + private function convertExpires($expires) + { + if ($expires instanceof \DateTime) { + $expires = $expires->getTimestamp(); + } elseif (!is_numeric($expires)) { + $expires = strtotime($expires); + } + + $duration = $expires - time(); + + // Ensure that the duration of the signature is not longer than a week + if ($duration > 604800) { + throw new \InvalidArgumentException('The expiration date of a ' + . 'signature version 4 presigned URL must be less than one ' + . 'week'); + } + + return $duration; + } + + private function createScope($shortDate, $region, $service) + { + return $shortDate + . '/' . $region + . '/' . $service + . '/aws4_request'; + } + + private function addQueryValues( + $scope, + RequestInterface $request, + CredentialsInterface $credentials, + $expires + ) { + $credential = $credentials->getAccessKeyId() . '/' . $scope; + + // Set query params required for pre-signed URLs + $request->getQuery() + ->set('X-Amz-Algorithm', 'AWS4-HMAC-SHA256') + ->set('X-Amz-Credential', $credential) + ->set('X-Amz-Date', gmdate('Ymd\THis\Z', $this->getTimestamp())) + ->set('X-Amz-SignedHeaders', 'Host') + ->set('X-Amz-Expires', $this->convertExpires($expires)); + } + + private function moveHeadersToQuery(RequestInterface $request) + { + $query = $request->getQuery(); + + foreach ($request->getHeaders() as $name => $header) { + if (substr($name, 0, 5) == 'x-amz') { + $query[$header->getName()] = (string) $header; + } + if ($name !== 'host') { + $request->removeHeader($name); + } + } + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Waiter/AbstractResourceWaiter.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Waiter/AbstractResourceWaiter.php new file mode 100644 index 0000000..5334848 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Waiter/AbstractResourceWaiter.php @@ -0,0 +1,53 @@ +client = $client; + + return $this; + } + + /** + * {@inheritdoc} + */ + public function wait() + { + if (!$this->client) { + throw new RuntimeException('No client has been specified on the waiter'); + } + + parent::wait(); + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Waiter/AbstractWaiter.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Waiter/AbstractWaiter.php new file mode 100644 index 0000000..09dbea1 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Waiter/AbstractWaiter.php @@ -0,0 +1,146 @@ +config[self::MAX_ATTEMPTS]) ? $this->config[self::MAX_ATTEMPTS] : 10; + } + + /** + * Get the amount of time in seconds to delay between attempts + * + * @return int + */ + public function getInterval() + { + return isset($this->config[self::INTERVAL]) ? $this->config[self::INTERVAL] : 0; + } + + /** + * {@inheritdoc} + */ + public function setMaxAttempts($maxAttempts) + { + $this->config[self::MAX_ATTEMPTS] = $maxAttempts; + + return $this; + } + + /** + * {@inheritdoc} + */ + public function setInterval($interval) + { + $this->config[self::INTERVAL] = $interval; + + return $this; + } + + /** + * Set config options associated with the waiter + * + * @param array $config Options to set + * + * @return self + */ + public function setConfig(array $config) + { + if (isset($config['waiter.before_attempt'])) { + $this->getEventDispatcher()->addListener('waiter.before_attempt', $config['waiter.before_attempt']); + unset($config['waiter.before_attempt']); + } + + if (isset($config['waiter.before_wait'])) { + $this->getEventDispatcher()->addListener('waiter.before_wait', $config['waiter.before_wait']); + unset($config['waiter.before_wait']); + } + + $this->config = $config; + + return $this; + } + + /** + * {@inheritdoc} + */ + public function wait() + { + $this->attempts = 0; + + do { + $this->dispatch('waiter.before_attempt', array( + 'waiter' => $this, + 'config' => $this->config, + )); + + if ($this->doWait()) { + break; + } + + if (++$this->attempts >= $this->getMaxAttempts()) { + throw new RuntimeException('Wait method never resolved to true after ' . $this->attempts . ' attempts'); + } + + $this->dispatch('waiter.before_wait', array( + 'waiter' => $this, + 'config' => $this->config, + )); + + if ($this->getInterval()) { + usleep($this->getInterval() * 1000000); + } + + } while (1); + } + + /** + * Method to implement in subclasses + * + * @return bool Return true when successful, false on failure + */ + abstract protected function doWait(); +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Waiter/CallableWaiter.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Waiter/CallableWaiter.php new file mode 100644 index 0000000..a205e06 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Waiter/CallableWaiter.php @@ -0,0 +1,82 @@ +callable = $callable; + + return $this; + } + + /** + * Set additional context for the callable function. This data will be passed into the callable function as the + * second argument + * + * @param array $context Additional context + * + * @return self + */ + public function setContext(array $context) + { + $this->context = $context; + + return $this; + } + + /** + * {@inheritdoc} + */ + public function doWait() + { + if (!$this->callable) { + throw new RuntimeException('No callable was specified for the wait method'); + } + + return call_user_func($this->callable, $this->attempts, $this->context); + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Waiter/CompositeWaiterFactory.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Waiter/CompositeWaiterFactory.php new file mode 100644 index 0000000..5278e49 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Waiter/CompositeWaiterFactory.php @@ -0,0 +1,90 @@ +factories = $factories; + } + + /** + * {@inheritdoc} + */ + public function build($waiter) + { + if (!($factory = $this->getFactory($waiter))) { + throw new InvalidArgumentException("Waiter was not found matching {$waiter}."); + } + + return $factory->build($waiter); + } + + /** + * {@inheritdoc} + */ + public function canBuild($waiter) + { + return (bool) $this->getFactory($waiter); + } + + /** + * Add a factory to the composite factory + * + * @param WaiterFactoryInterface $factory Factory to add + * + * @return self + */ + public function addFactory(WaiterFactoryInterface $factory) + { + $this->factories[] = $factory; + + return $this; + } + + /** + * Get the factory that matches the waiter name + * + * @param string $waiter Name of the waiter + * + * @return WaiterFactoryInterface|bool + */ + protected function getFactory($waiter) + { + foreach ($this->factories as $factory) { + if ($factory->canBuild($waiter)) { + return $factory; + } + } + + return false; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Waiter/ConfigResourceWaiter.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Waiter/ConfigResourceWaiter.php new file mode 100644 index 0000000..8ef0577 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Waiter/ConfigResourceWaiter.php @@ -0,0 +1,225 @@ +waiterConfig = $waiterConfig; + $this->setInterval($waiterConfig->get(WaiterConfig::INTERVAL)); + $this->setMaxAttempts($waiterConfig->get(WaiterConfig::MAX_ATTEMPTS)); + } + + /** + * {@inheritdoc} + */ + public function setConfig(array $config) + { + foreach ($config as $key => $value) { + if (substr($key, 0, 7) == 'waiter.') { + $this->waiterConfig->set(substr($key, 7), $value); + } + } + + if (!isset($config[self::INTERVAL])) { + $config[self::INTERVAL] = $this->waiterConfig->get(WaiterConfig::INTERVAL); + } + + if (!isset($config[self::MAX_ATTEMPTS])) { + $config[self::MAX_ATTEMPTS] = $this->waiterConfig->get(WaiterConfig::MAX_ATTEMPTS); + } + + return parent::setConfig($config); + } + + /** + * Get the waiter's configuration data + * + * @return WaiterConfig + */ + public function getWaiterConfig() + { + return $this->waiterConfig; + } + + /** + * {@inheritdoc} + */ + protected function doWait() + { + $params = $this->config; + // remove waiter settings from the operation's input + foreach (array_keys($params) as $key) { + if (substr($key, 0, 7) == 'waiter.') { + unset($params[$key]); + } + } + + $operation = $this->client->getCommand($this->waiterConfig->get(WaiterConfig::OPERATION), $params); + + try { + return $this->checkResult($this->client->execute($operation)); + } catch (ValidationException $e) { + throw new InvalidArgumentException( + $this->waiterConfig->get(WaiterConfig::WAITER_NAME) . ' waiter validation failed: ' . $e->getMessage(), + $e->getCode(), + $e + ); + } catch (ServiceResponseException $e) { + + // Check if this exception satisfies a success or failure acceptor + $transition = $this->checkErrorAcceptor($e); + if (null !== $transition) { + return $transition; + } + + // Check if this exception should be ignored + foreach ((array) $this->waiterConfig->get(WaiterConfig::IGNORE_ERRORS) as $ignore) { + if ($e->getExceptionCode() == $ignore) { + // This exception is ignored, so it counts as a failed attempt rather than a fast-fail + return false; + } + } + + // Allow non-ignore exceptions to bubble through + throw $e; + } + } + + /** + * Check if an exception satisfies a success or failure acceptor + * + * @param ServiceResponseException $e + * + * @return bool|null Returns true for success, false for failure, and null for no transition + */ + protected function checkErrorAcceptor(ServiceResponseException $e) + { + if ($this->waiterConfig->get(WaiterConfig::SUCCESS_TYPE) == 'error') { + if ($e->getExceptionCode() == $this->waiterConfig->get(WaiterConfig::SUCCESS_VALUE)) { + // Mark as a success + return true; + } + } + + // Mark as an attempt + return null; + } + + /** + * Check to see if the response model satisfies a success or failure state + * + * @param Model $result Result model + * + * @return bool + * @throws RuntimeException + */ + protected function checkResult(Model $result) + { + // Check if the result evaluates to true based on the path and output model + if ($this->waiterConfig->get(WaiterConfig::SUCCESS_TYPE) == 'output' && + $this->checkPath( + $result, + $this->waiterConfig->get(WaiterConfig::SUCCESS_PATH), + $this->waiterConfig->get(WaiterConfig::SUCCESS_VALUE) + ) + ) { + return true; + } + + // It did not finish waiting yet. Determine if we need to fail-fast based on the failure acceptor. + if ($this->waiterConfig->get(WaiterConfig::FAILURE_TYPE) == 'output') { + $failureValue = $this->waiterConfig->get(WaiterConfig::FAILURE_VALUE); + if ($failureValue) { + $key = $this->waiterConfig->get(WaiterConfig::FAILURE_PATH); + if ($this->checkPath($result, $key, $failureValue, false)) { + // Determine which of the results triggered the failure + $triggered = array_intersect( + (array) $this->waiterConfig->get(WaiterConfig::FAILURE_VALUE), + array_unique((array) $result->getPath($key)) + ); + // fast fail because the failure case was satisfied + throw new RuntimeException( + 'A resource entered into an invalid state of "' + . implode(', ', $triggered) . '" while waiting with the "' + . $this->waiterConfig->get(WaiterConfig::WAITER_NAME) . '" waiter.' + ); + } + } + } + + return false; + } + + /** + * Check to see if the path of the output key is satisfied by the value + * + * @param Model $model Result model + * @param string $key Key to check + * @param string $checkValue Compare the key to the value + * @param bool $all Set to true to ensure all value match or false to only match one + * + * @return bool + */ + protected function checkPath(Model $model, $key = null, $checkValue = array(), $all = true) + { + // If no key is set, then just assume true because the request succeeded + if (!$key) { + return true; + } + + if (!($result = $model->getPath($key))) { + return false; + } + + $total = $matches = 0; + foreach ((array) $result as $value) { + $total++; + foreach ((array) $checkValue as $check) { + if ($value == $check) { + $matches++; + break; + } + } + } + + // When matching all values, ensure that the match count matches the total count + if ($all && $total != $matches) { + return false; + } + + return $matches > 0; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Waiter/ResourceWaiterInterface.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Waiter/ResourceWaiterInterface.php new file mode 100644 index 0000000..07cf41d --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Waiter/ResourceWaiterInterface.php @@ -0,0 +1,34 @@ + CamelCase). + */ +class WaiterClassFactory implements WaiterFactoryInterface +{ + /** + * @var array List of namespaces used to look for classes + */ + protected $namespaces; + + /** + * @var InflectorInterface Inflector used to inflect class names + */ + protected $inflector; + + /** + * @param array|string $namespaces Namespaces of waiter objects + * @param InflectorInterface $inflector Inflector used to resolve class names + */ + public function __construct($namespaces = array(), InflectorInterface $inflector = null) + { + $this->namespaces = (array) $namespaces; + $this->inflector = $inflector ?: Inflector::getDefault(); + } + + /** + * Registers a namespace to check for Waiters + * + * @param string $namespace Namespace which contains Waiter classes + * + * @return self + */ + public function registerNamespace($namespace) + { + array_unshift($this->namespaces, $namespace); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function build($waiter) + { + if (!($className = $this->getClassName($waiter))) { + throw new InvalidArgumentException("Waiter was not found matching {$waiter}."); + } + + return new $className(); + } + + /** + * {@inheritdoc} + */ + public function canBuild($waiter) + { + return $this->getClassName($waiter) !== null; + } + + /** + * Get the name of a waiter class + * + * @param string $waiter Waiter name + * + * @return string|null + */ + protected function getClassName($waiter) + { + $waiterName = $this->inflector->camel($waiter); + + // Determine the name of the class to load + $className = null; + foreach ($this->namespaces as $namespace) { + $potentialClassName = $namespace . '\\' . $waiterName; + if (class_exists($potentialClassName)) { + return $potentialClassName; + } + } + + return null; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Waiter/WaiterConfig.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Waiter/WaiterConfig.php new file mode 100644 index 0000000..7c10f5a --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Waiter/WaiterConfig.php @@ -0,0 +1,67 @@ +data = $data; + $this->extractConfig(); + } + + /** + * Create the command configuration variables + */ + protected function extractConfig() + { + // Populate success.* and failure.* if specified in acceptor.* + foreach ($this->data as $key => $value) { + if (substr($key, 0, 9) == 'acceptor.') { + $name = substr($key, 9); + if (!isset($this->data["success.{$name}"])) { + $this->data["success.{$name}"] = $value; + } + if (!isset($this->data["failure.{$name}"])) { + $this->data["failure.{$name}"] = $value; + } + unset($this->data[$key]); + } + } + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Waiter/WaiterConfigFactory.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Waiter/WaiterConfigFactory.php new file mode 100644 index 0000000..cb92149 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Waiter/WaiterConfigFactory.php @@ -0,0 +1,98 @@ +config = $config; + $this->inflector = $inflector ?: Inflector::getDefault(); + } + + /** + * {@inheritdoc} + */ + public function build($waiter) + { + return new ConfigResourceWaiter($this->getWaiterConfig($waiter)); + } + + /** + * {@inheritdoc} + */ + public function canBuild($waiter) + { + return isset($this->config[$waiter]) || isset($this->config[$this->inflector->camel($waiter)]); + } + + /** + * Get waiter configuration data, taking __default__ and extensions into account + * + * @param string $name Waiter name + * + * @return WaiterConfig + * @throws InvalidArgumentException + */ + protected function getWaiterConfig($name) + { + if (!$this->canBuild($name)) { + throw new InvalidArgumentException('No waiter found matching "' . $name . '"'); + } + + // inflect the name if needed + $name = isset($this->config[$name]) ? $name : $this->inflector->camel($name); + $waiter = new WaiterConfig($this->config[$name]); + $waiter['name'] = $name; + + // Always use __default__ as the basis if it's set + if (isset($this->config['__default__'])) { + $parentWaiter = new WaiterConfig($this->config['__default__']); + $waiter = $parentWaiter->overwriteWith($waiter); + } + + // Allow for configuration extensions + if (isset($this->config[$name]['extends'])) { + $waiter = $this->getWaiterConfig($this->config[$name]['extends'])->overwriteWith($waiter); + } + + return $waiter; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Waiter/WaiterFactoryInterface.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Waiter/WaiterFactoryInterface.php new file mode 100644 index 0000000..b9bf0f4 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Common/Waiter/WaiterFactoryInterface.php @@ -0,0 +1,41 @@ +setConfig($config) + ->setConfigDefaults(array( + Options::VERSION => self::LATEST_API_VERSION, + Options::SERVICE_DESCRIPTION => __DIR__ . '/Resources/iam-%s.php' + )) + ->build(); + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Iam/Resources/iam-2010-05-08.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Iam/Resources/iam-2010-05-08.php new file mode 100644 index 0000000..5494505 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/Iam/Resources/iam-2010-05-08.php @@ -0,0 +1,8074 @@ + '2010-05-08', + 'endpointPrefix' => 'iam', + 'serviceFullName' => 'AWS Identity and Access Management', + 'serviceAbbreviation' => 'IAM', + 'serviceType' => 'query', + 'globalEndpoint' => 'iam.amazonaws.com', + 'resultWrapped' => true, + 'signatureVersion' => 'v4', + 'namespace' => 'Iam', + 'regions' => array( + 'us-east-1' => array( + 'http' => false, + 'https' => true, + 'hostname' => 'iam.amazonaws.com', + ), + 'us-west-1' => array( + 'http' => false, + 'https' => true, + 'hostname' => 'iam.amazonaws.com', + ), + 'us-west-2' => array( + 'http' => false, + 'https' => true, + 'hostname' => 'iam.amazonaws.com', + ), + 'eu-west-1' => array( + 'http' => false, + 'https' => true, + 'hostname' => 'iam.amazonaws.com', + ), + 'ap-northeast-1' => array( + 'http' => false, + 'https' => true, + 'hostname' => 'iam.amazonaws.com', + ), + 'ap-southeast-1' => array( + 'http' => false, + 'https' => true, + 'hostname' => 'iam.amazonaws.com', + ), + 'ap-southeast-2' => array( + 'http' => false, + 'https' => true, + 'hostname' => 'iam.amazonaws.com', + ), + 'sa-east-1' => array( + 'http' => false, + 'https' => true, + 'hostname' => 'iam.amazonaws.com', + ), + 'cn-north-1' => array( + 'http' => false, + 'https' => true, + 'hostname' => 'iam.cn-north-1.amazonaws.com.cn', + ), + 'us-gov-west-1' => array( + 'http' => false, + 'https' => true, + 'hostname' => 'iam.us-gov.amazonaws.com', + ), + ), + 'operations' => array( + 'AddClientIDToOpenIDConnectProvider' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'AddClientIDToOpenIDConnectProvider', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'OpenIDConnectProviderArn' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 20, + ), + 'ClientID' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'AddRoleToInstanceProfile' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'AddRoleToInstanceProfile', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'InstanceProfileName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'RoleName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create a resource that already exists.', + 'class' => 'EntityAlreadyExistsException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'AddUserToGroup' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'AddUserToGroup', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'GroupName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'UserName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'AttachGroupPolicy' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'AttachGroupPolicy', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'GroupName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'PolicyArn' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 20, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'AttachRolePolicy' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'AttachRolePolicy', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'RoleName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'PolicyArn' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 20, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'AttachUserPolicy' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'AttachUserPolicy', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'PolicyArn' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 20, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'ChangePassword' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'ChangePassword', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'OldPassword' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'NewPassword' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because the type of user for the transaction was incorrect.', + 'class' => 'InvalidUserTypeException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request was rejected because it referenced an entity that is temporarily unmodifiable, such as a user name that was deleted and then recreated. The error indicates that the request is likely to succeed if you try again after waiting several minutes. The error message describes the entity.', + 'class' => 'EntityTemporarilyUnmodifiableException', + ), + array( + 'reason' => 'The request was rejected because the provided password did not meet the requirements imposed by the account password policy.', + 'class' => 'PasswordPolicyViolationException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'CreateAccessKey' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'CreateAccessKeyResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'CreateAccessKey', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'CreateAccountAlias' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'CreateAccountAlias', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'AccountAlias' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 3, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it attempted to create a resource that already exists.', + 'class' => 'EntityAlreadyExistsException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'CreateGroup' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'CreateGroupResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'CreateGroup', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'Path' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'GroupName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create a resource that already exists.', + 'class' => 'EntityAlreadyExistsException', + ), + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'CreateInstanceProfile' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'CreateInstanceProfileResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'CreateInstanceProfile', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'InstanceProfileName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'Path' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it attempted to create a resource that already exists.', + 'class' => 'EntityAlreadyExistsException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'CreateLoginProfile' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'CreateLoginProfileResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'CreateLoginProfile', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'Password' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'PasswordResetRequired' => array( + 'type' => 'boolean', + 'format' => 'boolean-string', + 'location' => 'aws.query', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it attempted to create a resource that already exists.', + 'class' => 'EntityAlreadyExistsException', + ), + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because the provided password did not meet the requirements imposed by the account password policy.', + 'class' => 'PasswordPolicyViolationException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'CreateOpenIDConnectProvider' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'CreateOpenIDConnectProviderResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'CreateOpenIDConnectProvider', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'Url' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'ClientIDList' => array( + 'type' => 'array', + 'location' => 'aws.query', + 'sentAs' => 'ClientIDList.member', + 'items' => array( + 'name' => 'clientIDType', + 'type' => 'string', + 'minLength' => 1, + ), + ), + 'ThumbprintList' => array( + 'required' => true, + 'type' => 'array', + 'location' => 'aws.query', + 'sentAs' => 'ThumbprintList.member', + 'items' => array( + 'name' => 'thumbprintType', + 'type' => 'string', + 'minLength' => 40, + ), + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create a resource that already exists.', + 'class' => 'EntityAlreadyExistsException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'CreatePolicy' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'CreatePolicyResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'CreatePolicy', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'PolicyName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'Path' => array( + 'type' => 'string', + 'location' => 'aws.query', + ), + 'PolicyDocument' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'Description' => array( + 'type' => 'string', + 'location' => 'aws.query', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create a resource that already exists.', + 'class' => 'EntityAlreadyExistsException', + ), + array( + 'reason' => 'The request was rejected because the policy document was malformed. The error message describes the specific error.', + 'class' => 'MalformedPolicyDocumentException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'CreatePolicyVersion' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'CreatePolicyVersionResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'CreatePolicyVersion', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'PolicyArn' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 20, + ), + 'PolicyDocument' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'SetAsDefault' => array( + 'type' => 'boolean', + 'format' => 'boolean-string', + 'location' => 'aws.query', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because the policy document was malformed. The error message describes the specific error.', + 'class' => 'MalformedPolicyDocumentException', + ), + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'CreateRole' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'CreateRoleResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'CreateRole', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'Path' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'RoleName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'AssumeRolePolicyDocument' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create a resource that already exists.', + 'class' => 'EntityAlreadyExistsException', + ), + array( + 'reason' => 'The request was rejected because the policy document was malformed. The error message describes the specific error.', + 'class' => 'MalformedPolicyDocumentException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'CreateSAMLProvider' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'CreateSAMLProviderResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'CreateSAMLProvider', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'SAMLMetadataDocument' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1000, + ), + 'Name' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create a resource that already exists.', + 'class' => 'EntityAlreadyExistsException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'CreateUser' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'CreateUserResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'CreateUser', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'Path' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'UserName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create a resource that already exists.', + 'class' => 'EntityAlreadyExistsException', + ), + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'CreateVirtualMFADevice' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'CreateVirtualMFADeviceResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'CreateVirtualMFADevice', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'Path' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'VirtualMFADeviceName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create a resource that already exists.', + 'class' => 'EntityAlreadyExistsException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'DeactivateMFADevice' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'DeactivateMFADevice', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'SerialNumber' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 9, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that is temporarily unmodifiable, such as a user name that was deleted and then recreated. The error indicates that the request is likely to succeed if you try again after waiting several minutes. The error message describes the entity.', + 'class' => 'EntityTemporarilyUnmodifiableException', + ), + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'DeleteAccessKey' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'DeleteAccessKey', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'AccessKeyId' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 16, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'DeleteAccountAlias' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'DeleteAccountAlias', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'AccountAlias' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 3, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'DeleteAccountPasswordPolicy' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'DeleteAccountPasswordPolicy', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'DeleteGroup' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'DeleteGroup', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'GroupName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to delete a resource that has attached subordinate entities. The error message describes these entities.', + 'class' => 'DeleteConflictException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'DeleteGroupPolicy' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'DeleteGroupPolicy', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'GroupName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'PolicyName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'DeleteInstanceProfile' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'DeleteInstanceProfile', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'InstanceProfileName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to delete a resource that has attached subordinate entities. The error message describes these entities.', + 'class' => 'DeleteConflictException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'DeleteLoginProfile' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'DeleteLoginProfile', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that is temporarily unmodifiable, such as a user name that was deleted and then recreated. The error indicates that the request is likely to succeed if you try again after waiting several minutes. The error message describes the entity.', + 'class' => 'EntityTemporarilyUnmodifiableException', + ), + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'DeleteOpenIDConnectProvider' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'DeleteOpenIDConnectProvider', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'OpenIDConnectProviderArn' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 20, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'DeletePolicy' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'DeletePolicy', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'PolicyArn' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 20, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request was rejected because it attempted to delete a resource that has attached subordinate entities. The error message describes these entities.', + 'class' => 'DeleteConflictException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'DeletePolicyVersion' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'DeletePolicyVersion', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'PolicyArn' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 20, + ), + 'VersionId' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request was rejected because it attempted to delete a resource that has attached subordinate entities. The error message describes these entities.', + 'class' => 'DeleteConflictException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'DeleteRole' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'DeleteRole', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'RoleName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to delete a resource that has attached subordinate entities. The error message describes these entities.', + 'class' => 'DeleteConflictException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'DeleteRolePolicy' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'DeleteRolePolicy', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'RoleName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'PolicyName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'DeleteSAMLProvider' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'DeleteSAMLProvider', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'SAMLProviderArn' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 20, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'DeleteSSHPublicKey' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'DeleteSSHPublicKey', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'SSHPublicKeyId' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 20, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + ), + ), + 'DeleteServerCertificate' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'DeleteServerCertificate', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'ServerCertificateName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to delete a resource that has attached subordinate entities. The error message describes these entities.', + 'class' => 'DeleteConflictException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'DeleteSigningCertificate' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'DeleteSigningCertificate', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'CertificateId' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 24, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'DeleteUser' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'DeleteUser', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to delete a resource that has attached subordinate entities. The error message describes these entities.', + 'class' => 'DeleteConflictException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'DeleteUserPolicy' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'DeleteUserPolicy', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'PolicyName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'DeleteVirtualMFADevice' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'DeleteVirtualMFADevice', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'SerialNumber' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 9, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to delete a resource that has attached subordinate entities. The error message describes these entities.', + 'class' => 'DeleteConflictException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'DetachGroupPolicy' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'DetachGroupPolicy', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'GroupName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'PolicyArn' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 20, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'DetachRolePolicy' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'DetachRolePolicy', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'RoleName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'PolicyArn' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 20, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'DetachUserPolicy' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'DetachUserPolicy', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'PolicyArn' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 20, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'EnableMFADevice' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'EnableMFADevice', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'SerialNumber' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 9, + ), + 'AuthenticationCode1' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 6, + ), + 'AuthenticationCode2' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 6, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it attempted to create a resource that already exists.', + 'class' => 'EntityAlreadyExistsException', + ), + array( + 'reason' => 'The request was rejected because it referenced an entity that is temporarily unmodifiable, such as a user name that was deleted and then recreated. The error indicates that the request is likely to succeed if you try again after waiting several minutes. The error message describes the entity.', + 'class' => 'EntityTemporarilyUnmodifiableException', + ), + array( + 'reason' => 'The request was rejected because the authentication code was not recognized. The error message describes the specific error.', + 'class' => 'InvalidAuthenticationCodeException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'GenerateCredentialReport' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'GenerateCredentialReportResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'GenerateCredentialReport', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'GetAccessKeyLastUsed' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'GetAccessKeyLastUsedResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'GetAccessKeyLastUsed', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'AccessKeyId' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 16, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + ), + ), + 'GetAccountAuthorizationDetails' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'GetAccountAuthorizationDetailsResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'GetAccountAuthorizationDetails', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'Filter' => array( + 'type' => 'array', + 'location' => 'aws.query', + 'sentAs' => 'Filter.member', + 'items' => array( + 'name' => 'EntityType', + 'type' => 'string', + ), + ), + 'MaxItems' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 1, + 'maximum' => 1000, + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'GetAccountPasswordPolicy' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'GetAccountPasswordPolicyResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'GetAccountPasswordPolicy', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'GetAccountSummary' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'GetAccountSummaryResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'GetAccountSummary', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'GetContextKeysForCustomPolicy' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'GetContextKeysForPolicyResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'GetContextKeysForCustomPolicy', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'PolicyInputList' => array( + 'required' => true, + 'type' => 'array', + 'location' => 'aws.query', + 'sentAs' => 'PolicyInputList.member', + 'items' => array( + 'name' => 'policyDocumentType', + 'type' => 'string', + 'minLength' => 1, + ), + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + ), + ), + 'GetContextKeysForPrincipalPolicy' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'GetContextKeysForPolicyResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'GetContextKeysForPrincipalPolicy', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'PolicySourceArn' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 20, + ), + 'PolicyInputList' => array( + 'type' => 'array', + 'location' => 'aws.query', + 'sentAs' => 'PolicyInputList.member', + 'items' => array( + 'name' => 'policyDocumentType', + 'type' => 'string', + 'minLength' => 1, + ), + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + ), + ), + 'GetCredentialReport' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'GetCredentialReportResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'GetCredentialReport', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because the credential report does not exist. To generate a credential report, use GenerateCredentialReport.', + 'class' => 'CredentialReportNotPresentException', + ), + array( + 'reason' => 'The request was rejected because the most recent credential report has expired. To generate a new credential report, use GenerateCredentialReport. For more information about credential report expiration, see Getting Credential Reports in the IAM User Guide.', + 'class' => 'CredentialReportExpiredException', + ), + array( + 'reason' => 'The request was rejected because the credential report is still being generated.', + 'class' => 'CredentialReportNotReadyException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'GetGroup' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'GetGroupResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'GetGroup', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'GroupName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'MaxItems' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 1, + 'maximum' => 1000, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'GetGroupPolicy' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'GetGroupPolicyResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'GetGroupPolicy', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'GroupName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'PolicyName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'GetInstanceProfile' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'GetInstanceProfileResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'GetInstanceProfile', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'InstanceProfileName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'GetLoginProfile' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'GetLoginProfileResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'GetLoginProfile', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'GetOpenIDConnectProvider' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'GetOpenIDConnectProviderResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'GetOpenIDConnectProvider', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'OpenIDConnectProviderArn' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 20, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'GetPolicy' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'GetPolicyResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'GetPolicy', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'PolicyArn' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 20, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'GetPolicyVersion' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'GetPolicyVersionResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'GetPolicyVersion', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'PolicyArn' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 20, + ), + 'VersionId' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'GetRole' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'GetRoleResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'GetRole', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'RoleName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'GetRolePolicy' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'GetRolePolicyResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'GetRolePolicy', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'RoleName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'PolicyName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'GetSAMLProvider' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'GetSAMLProviderResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'GetSAMLProvider', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'SAMLProviderArn' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 20, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'GetSSHPublicKey' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'GetSSHPublicKeyResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'GetSSHPublicKey', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'SSHPublicKeyId' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 20, + ), + 'Encoding' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because the public key encoding format is unsupported or unrecognized.', + 'class' => 'UnrecognizedPublicKeyEncodingException', + ), + ), + ), + 'GetServerCertificate' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'GetServerCertificateResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'GetServerCertificate', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'ServerCertificateName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'GetUser' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'GetUserResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'GetUser', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'GetUserPolicy' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'GetUserPolicyResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'GetUserPolicy', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'PolicyName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'ListAccessKeys' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'ListAccessKeysResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'ListAccessKeys', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'MaxItems' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 1, + 'maximum' => 1000, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'ListAccountAliases' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'ListAccountAliasesResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'ListAccountAliases', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'MaxItems' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 1, + 'maximum' => 1000, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'ListAttachedGroupPolicies' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'ListAttachedGroupPoliciesResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'ListAttachedGroupPolicies', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'GroupName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'PathPrefix' => array( + 'type' => 'string', + 'location' => 'aws.query', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'MaxItems' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 1, + 'maximum' => 1000, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'ListAttachedRolePolicies' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'ListAttachedRolePoliciesResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'ListAttachedRolePolicies', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'RoleName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'PathPrefix' => array( + 'type' => 'string', + 'location' => 'aws.query', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'MaxItems' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 1, + 'maximum' => 1000, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'ListAttachedUserPolicies' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'ListAttachedUserPoliciesResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'ListAttachedUserPolicies', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'PathPrefix' => array( + 'type' => 'string', + 'location' => 'aws.query', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'MaxItems' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 1, + 'maximum' => 1000, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'ListEntitiesForPolicy' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'ListEntitiesForPolicyResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'ListEntitiesForPolicy', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'PolicyArn' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 20, + ), + 'EntityFilter' => array( + 'type' => 'string', + 'location' => 'aws.query', + ), + 'PathPrefix' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'MaxItems' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 1, + 'maximum' => 1000, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'ListGroupPolicies' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'ListGroupPoliciesResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'ListGroupPolicies', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'GroupName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'MaxItems' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 1, + 'maximum' => 1000, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'ListGroups' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'ListGroupsResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'ListGroups', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'PathPrefix' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'MaxItems' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 1, + 'maximum' => 1000, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'ListGroupsForUser' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'ListGroupsForUserResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'ListGroupsForUser', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'MaxItems' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 1, + 'maximum' => 1000, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'ListInstanceProfiles' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'ListInstanceProfilesResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'ListInstanceProfiles', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'PathPrefix' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'MaxItems' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 1, + 'maximum' => 1000, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'ListInstanceProfilesForRole' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'ListInstanceProfilesForRoleResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'ListInstanceProfilesForRole', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'RoleName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'MaxItems' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 1, + 'maximum' => 1000, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'ListMFADevices' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'ListMFADevicesResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'ListMFADevices', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'MaxItems' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 1, + 'maximum' => 1000, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'ListOpenIDConnectProviders' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'ListOpenIDConnectProvidersResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'ListOpenIDConnectProviders', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'ListPolicies' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'ListPoliciesResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'ListPolicies', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'Scope' => array( + 'type' => 'string', + 'location' => 'aws.query', + ), + 'OnlyAttached' => array( + 'type' => 'boolean', + 'format' => 'boolean-string', + 'location' => 'aws.query', + ), + 'PathPrefix' => array( + 'type' => 'string', + 'location' => 'aws.query', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'MaxItems' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 1, + 'maximum' => 1000, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'ListPolicyVersions' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'ListPolicyVersionsResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'ListPolicyVersions', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'PolicyArn' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 20, + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'MaxItems' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 1, + 'maximum' => 1000, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'ListRolePolicies' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'ListRolePoliciesResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'ListRolePolicies', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'RoleName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'MaxItems' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 1, + 'maximum' => 1000, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'ListRoles' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'ListRolesResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'ListRoles', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'PathPrefix' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'MaxItems' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 1, + 'maximum' => 1000, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'ListSAMLProviders' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'ListSAMLProvidersResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'ListSAMLProviders', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'ListSSHPublicKeys' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'ListSSHPublicKeysResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'ListSSHPublicKeys', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'MaxItems' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 1, + 'maximum' => 1000, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + ), + ), + 'ListServerCertificates' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'ListServerCertificatesResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'ListServerCertificates', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'PathPrefix' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'MaxItems' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 1, + 'maximum' => 1000, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'ListSigningCertificates' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'ListSigningCertificatesResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'ListSigningCertificates', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'MaxItems' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 1, + 'maximum' => 1000, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'ListUserPolicies' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'ListUserPoliciesResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'ListUserPolicies', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'MaxItems' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 1, + 'maximum' => 1000, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'ListUsers' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'ListUsersResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'ListUsers', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'PathPrefix' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'MaxItems' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 1, + 'maximum' => 1000, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'ListVirtualMFADevices' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'ListVirtualMFADevicesResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'ListVirtualMFADevices', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'AssignmentStatus' => array( + 'type' => 'string', + 'location' => 'aws.query', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'MaxItems' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 1, + 'maximum' => 1000, + ), + ), + ), + 'PutGroupPolicy' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'PutGroupPolicy', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'GroupName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'PolicyName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'PolicyDocument' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request was rejected because the policy document was malformed. The error message describes the specific error.', + 'class' => 'MalformedPolicyDocumentException', + ), + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'PutRolePolicy' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'PutRolePolicy', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'RoleName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'PolicyName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'PolicyDocument' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request was rejected because the policy document was malformed. The error message describes the specific error.', + 'class' => 'MalformedPolicyDocumentException', + ), + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'PutUserPolicy' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'PutUserPolicy', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'PolicyName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'PolicyDocument' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request was rejected because the policy document was malformed. The error message describes the specific error.', + 'class' => 'MalformedPolicyDocumentException', + ), + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'RemoveClientIDFromOpenIDConnectProvider' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'RemoveClientIDFromOpenIDConnectProvider', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'OpenIDConnectProviderArn' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 20, + ), + 'ClientID' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'RemoveRoleFromInstanceProfile' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'RemoveRoleFromInstanceProfile', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'InstanceProfileName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'RoleName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'RemoveUserFromGroup' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'RemoveUserFromGroup', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'GroupName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'UserName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'ResyncMFADevice' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'ResyncMFADevice', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'SerialNumber' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 9, + ), + 'AuthenticationCode1' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 6, + ), + 'AuthenticationCode2' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 6, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because the authentication code was not recognized. The error message describes the specific error.', + 'class' => 'InvalidAuthenticationCodeException', + ), + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'SetDefaultPolicyVersion' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'SetDefaultPolicyVersion', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'PolicyArn' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 20, + ), + 'VersionId' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'SimulateCustomPolicy' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'SimulatePolicyResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'SimulateCustomPolicy', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'PolicyInputList' => array( + 'required' => true, + 'type' => 'array', + 'location' => 'aws.query', + 'sentAs' => 'PolicyInputList.member', + 'items' => array( + 'name' => 'policyDocumentType', + 'type' => 'string', + 'minLength' => 1, + ), + ), + 'ActionNames' => array( + 'required' => true, + 'type' => 'array', + 'location' => 'aws.query', + 'sentAs' => 'ActionNames.member', + 'items' => array( + 'name' => 'ActionNameType', + 'type' => 'string', + 'minLength' => 3, + ), + ), + 'ResourceArns' => array( + 'type' => 'array', + 'location' => 'aws.query', + 'sentAs' => 'ResourceArns.member', + 'items' => array( + 'name' => 'ResourceNameType', + 'type' => 'string', + 'minLength' => 1, + ), + ), + 'ResourcePolicy' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'ResourceOwner' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'CallerArn' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'ContextEntries' => array( + 'type' => 'array', + 'location' => 'aws.query', + 'sentAs' => 'ContextEntries.member', + 'items' => array( + 'name' => 'ContextEntry', + 'type' => 'object', + 'properties' => array( + 'ContextKeyName' => array( + 'type' => 'string', + 'minLength' => 5, + ), + 'ContextKeyValues' => array( + 'type' => 'array', + 'sentAs' => 'ContextKeyValues.member', + 'items' => array( + 'name' => 'ContextKeyValueType', + 'type' => 'string', + ), + ), + 'ContextKeyType' => array( + 'type' => 'string', + ), + ), + ), + ), + 'ResourceHandlingOption' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'MaxItems' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 1, + 'maximum' => 1000, + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request failed because a provided policy could not be successfully evaluated. An additional detail message indicates the source of the failure.', + 'class' => 'PolicyEvaluationException', + ), + ), + ), + 'SimulatePrincipalPolicy' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'SimulatePolicyResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'SimulatePrincipalPolicy', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'PolicySourceArn' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 20, + ), + 'PolicyInputList' => array( + 'type' => 'array', + 'location' => 'aws.query', + 'sentAs' => 'PolicyInputList.member', + 'items' => array( + 'name' => 'policyDocumentType', + 'type' => 'string', + 'minLength' => 1, + ), + ), + 'ActionNames' => array( + 'required' => true, + 'type' => 'array', + 'location' => 'aws.query', + 'sentAs' => 'ActionNames.member', + 'items' => array( + 'name' => 'ActionNameType', + 'type' => 'string', + 'minLength' => 3, + ), + ), + 'ResourceArns' => array( + 'type' => 'array', + 'location' => 'aws.query', + 'sentAs' => 'ResourceArns.member', + 'items' => array( + 'name' => 'ResourceNameType', + 'type' => 'string', + 'minLength' => 1, + ), + ), + 'ResourcePolicy' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'ResourceOwner' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'CallerArn' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'ContextEntries' => array( + 'type' => 'array', + 'location' => 'aws.query', + 'sentAs' => 'ContextEntries.member', + 'items' => array( + 'name' => 'ContextEntry', + 'type' => 'object', + 'properties' => array( + 'ContextKeyName' => array( + 'type' => 'string', + 'minLength' => 5, + ), + 'ContextKeyValues' => array( + 'type' => 'array', + 'sentAs' => 'ContextKeyValues.member', + 'items' => array( + 'name' => 'ContextKeyValueType', + 'type' => 'string', + ), + ), + 'ContextKeyType' => array( + 'type' => 'string', + ), + ), + ), + ), + 'ResourceHandlingOption' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'MaxItems' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 1, + 'maximum' => 1000, + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request failed because a provided policy could not be successfully evaluated. An additional detail message indicates the source of the failure.', + 'class' => 'PolicyEvaluationException', + ), + ), + ), + 'UpdateAccessKey' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'UpdateAccessKey', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'AccessKeyId' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 16, + ), + 'Status' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'UpdateAccountPasswordPolicy' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'UpdateAccountPasswordPolicy', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'MinimumPasswordLength' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 6, + 'maximum' => 128, + ), + 'RequireSymbols' => array( + 'type' => 'boolean', + 'format' => 'boolean-string', + 'location' => 'aws.query', + ), + 'RequireNumbers' => array( + 'type' => 'boolean', + 'format' => 'boolean-string', + 'location' => 'aws.query', + ), + 'RequireUppercaseCharacters' => array( + 'type' => 'boolean', + 'format' => 'boolean-string', + 'location' => 'aws.query', + ), + 'RequireLowercaseCharacters' => array( + 'type' => 'boolean', + 'format' => 'boolean-string', + 'location' => 'aws.query', + ), + 'AllowUsersToChangePassword' => array( + 'type' => 'boolean', + 'format' => 'boolean-string', + 'location' => 'aws.query', + ), + 'MaxPasswordAge' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 1, + 'maximum' => 1095, + ), + 'PasswordReusePrevention' => array( + 'type' => 'numeric', + 'location' => 'aws.query', + 'minimum' => 1, + 'maximum' => 24, + ), + 'HardExpiry' => array( + 'type' => 'boolean', + 'format' => 'boolean-string', + 'location' => 'aws.query', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because the policy document was malformed. The error message describes the specific error.', + 'class' => 'MalformedPolicyDocumentException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'UpdateAssumeRolePolicy' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'UpdateAssumeRolePolicy', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'RoleName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'PolicyDocument' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because the policy document was malformed. The error message describes the specific error.', + 'class' => 'MalformedPolicyDocumentException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'UpdateGroup' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'UpdateGroup', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'GroupName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'NewPath' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'NewGroupName' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create a resource that already exists.', + 'class' => 'EntityAlreadyExistsException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'UpdateLoginProfile' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'UpdateLoginProfile', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'Password' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'PasswordResetRequired' => array( + 'type' => 'boolean', + 'format' => 'boolean-string', + 'location' => 'aws.query', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that is temporarily unmodifiable, such as a user name that was deleted and then recreated. The error indicates that the request is likely to succeed if you try again after waiting several minutes. The error message describes the entity.', + 'class' => 'EntityTemporarilyUnmodifiableException', + ), + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because the provided password did not meet the requirements imposed by the account password policy.', + 'class' => 'PasswordPolicyViolationException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'UpdateOpenIDConnectProviderThumbprint' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'UpdateOpenIDConnectProviderThumbprint', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'OpenIDConnectProviderArn' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 20, + ), + 'ThumbprintList' => array( + 'required' => true, + 'type' => 'array', + 'location' => 'aws.query', + 'sentAs' => 'ThumbprintList.member', + 'items' => array( + 'name' => 'thumbprintType', + 'type' => 'string', + 'minLength' => 40, + ), + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'UpdateSAMLProvider' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'UpdateSAMLProviderResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'UpdateSAMLProvider', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'SAMLMetadataDocument' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1000, + ), + 'SAMLProviderArn' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 20, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because an invalid or out-of-range value was supplied for an input parameter.', + 'class' => 'InvalidInputException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'UpdateSSHPublicKey' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'UpdateSSHPublicKey', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'SSHPublicKeyId' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 20, + ), + 'Status' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + ), + ), + 'UpdateServerCertificate' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'UpdateServerCertificate', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'ServerCertificateName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'NewPath' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'NewServerCertificateName' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create a resource that already exists.', + 'class' => 'EntityAlreadyExistsException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'UpdateSigningCertificate' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'UpdateSigningCertificate', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'CertificateId' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 24, + ), + 'Status' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'UpdateUser' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'EmptyOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'UpdateUser', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'NewPath' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'NewUserName' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create a resource that already exists.', + 'class' => 'EntityAlreadyExistsException', + ), + array( + 'reason' => 'The request was rejected because it referenced an entity that is temporarily unmodifiable, such as a user name that was deleted and then recreated. The error indicates that the request is likely to succeed if you try again after waiting several minutes. The error message describes the entity.', + 'class' => 'EntityTemporarilyUnmodifiableException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'UploadSSHPublicKey' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'UploadSSHPublicKeyResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'UploadSSHPublicKey', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'SSHPublicKeyBody' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request was rejected because the public key is malformed or otherwise invalid.', + 'class' => 'InvalidPublicKeyException', + ), + array( + 'reason' => 'The request was rejected because the SSH public key is already associated with the specified IAM user.', + 'class' => 'DuplicateSSHPublicKeyException', + ), + array( + 'reason' => 'The request was rejected because the public key encoding format is unsupported or unrecognized.', + 'class' => 'UnrecognizedPublicKeyEncodingException', + ), + ), + ), + 'UploadServerCertificate' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'UploadServerCertificateResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'UploadServerCertificate', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'Path' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'ServerCertificateName' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'CertificateBody' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'PrivateKey' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'CertificateChain' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create a resource that already exists.', + 'class' => 'EntityAlreadyExistsException', + ), + array( + 'reason' => 'The request was rejected because the certificate was malformed or expired. The error message describes the specific error.', + 'class' => 'MalformedCertificateException', + ), + array( + 'reason' => 'The request was rejected because the public key certificate and the private key do not match.', + 'class' => 'KeyPairMismatchException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + 'UploadSigningCertificate' => array( + 'httpMethod' => 'POST', + 'uri' => '/', + 'class' => 'Aws\\Common\\Command\\QueryCommand', + 'responseClass' => 'UploadSigningCertificateResponse', + 'responseType' => 'model', + 'parameters' => array( + 'Action' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => 'UploadSigningCertificate', + ), + 'Version' => array( + 'static' => true, + 'location' => 'aws.query', + 'default' => '2010-05-08', + ), + 'UserName' => array( + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + 'CertificateBody' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'aws.query', + 'minLength' => 1, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.', + 'class' => 'LimitExceededException', + ), + array( + 'reason' => 'The request was rejected because it attempted to create a resource that already exists.', + 'class' => 'EntityAlreadyExistsException', + ), + array( + 'reason' => 'The request was rejected because the certificate was malformed or expired. The error message describes the specific error.', + 'class' => 'MalformedCertificateException', + ), + array( + 'reason' => 'The request was rejected because the certificate is invalid.', + 'class' => 'InvalidCertificateException', + ), + array( + 'reason' => 'The request was rejected because the same certificate is associated with an IAM user in the account.', + 'class' => 'DuplicateCertificateException', + ), + array( + 'reason' => 'The request was rejected because it referenced an entity that does not exist. The error message describes the entity.', + 'class' => 'NoSuchEntityException', + ), + array( + 'reason' => 'The request processing has failed because of an unknown error, exception or failure.', + 'class' => 'ServiceFailureException', + ), + ), + ), + ), + 'models' => array( + 'EmptyOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + ), + 'CreateAccessKeyResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'AccessKey' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'UserName' => array( + 'type' => 'string', + ), + 'AccessKeyId' => array( + 'type' => 'string', + ), + 'Status' => array( + 'type' => 'string', + ), + 'SecretAccessKey' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + 'CreateGroupResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Group' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'GroupName' => array( + 'type' => 'string', + ), + 'GroupId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + 'CreateInstanceProfileResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'InstanceProfile' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'InstanceProfileName' => array( + 'type' => 'string', + ), + 'InstanceProfileId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + 'Roles' => array( + 'type' => 'array', + 'items' => array( + 'name' => 'Role', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'RoleName' => array( + 'type' => 'string', + ), + 'RoleId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + 'AssumeRolePolicyDocument' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + ), + ), + ), + 'CreateLoginProfileResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'LoginProfile' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'UserName' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + 'PasswordResetRequired' => array( + 'type' => 'boolean', + ), + ), + ), + ), + ), + 'CreateOpenIDConnectProviderResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'OpenIDConnectProviderArn' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'CreatePolicyResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Policy' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'PolicyName' => array( + 'type' => 'string', + ), + 'PolicyId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'Path' => array( + 'type' => 'string', + ), + 'DefaultVersionId' => array( + 'type' => 'string', + ), + 'AttachmentCount' => array( + 'type' => 'numeric', + ), + 'IsAttachable' => array( + 'type' => 'boolean', + ), + 'Description' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + 'UpdateDate' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + 'CreatePolicyVersionResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'PolicyVersion' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Document' => array( + 'type' => 'string', + ), + 'VersionId' => array( + 'type' => 'string', + ), + 'IsDefaultVersion' => array( + 'type' => 'boolean', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + 'CreateRoleResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Role' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'RoleName' => array( + 'type' => 'string', + ), + 'RoleId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + 'AssumeRolePolicyDocument' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + 'CreateSAMLProviderResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'SAMLProviderArn' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'CreateUserResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'User' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'UserName' => array( + 'type' => 'string', + ), + 'UserId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + 'PasswordLastUsed' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + 'CreateVirtualMFADeviceResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'VirtualMFADevice' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'SerialNumber' => array( + 'type' => 'string', + ), + 'Base32StringSeed' => array( + 'type' => 'string', + ), + 'QRCodePNG' => array( + 'type' => 'string', + ), + 'User' => array( + 'type' => 'object', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'UserName' => array( + 'type' => 'string', + ), + 'UserId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + 'PasswordLastUsed' => array( + 'type' => 'string', + ), + ), + ), + 'EnableDate' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + 'GenerateCredentialReportResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'State' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'Description' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'GetAccessKeyLastUsedResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'UserName' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'AccessKeyLastUsed' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'LastUsedDate' => array( + 'type' => 'string', + ), + 'ServiceName' => array( + 'type' => 'string', + ), + 'Region' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + 'GetAccountAuthorizationDetailsResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'UserDetailList' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'UserDetail', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'UserName' => array( + 'type' => 'string', + ), + 'UserId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + 'UserPolicyList' => array( + 'type' => 'array', + 'items' => array( + 'name' => 'PolicyDetail', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'PolicyName' => array( + 'type' => 'string', + ), + 'PolicyDocument' => array( + 'type' => 'string', + ), + ), + ), + ), + 'GroupList' => array( + 'type' => 'array', + 'items' => array( + 'name' => 'groupNameType', + 'type' => 'string', + 'sentAs' => 'member', + ), + ), + 'AttachedManagedPolicies' => array( + 'type' => 'array', + 'items' => array( + 'name' => 'AttachedPolicy', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'PolicyName' => array( + 'type' => 'string', + ), + 'PolicyArn' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + ), + ), + 'GroupDetailList' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'GroupDetail', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'GroupName' => array( + 'type' => 'string', + ), + 'GroupId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + 'GroupPolicyList' => array( + 'type' => 'array', + 'items' => array( + 'name' => 'PolicyDetail', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'PolicyName' => array( + 'type' => 'string', + ), + 'PolicyDocument' => array( + 'type' => 'string', + ), + ), + ), + ), + 'AttachedManagedPolicies' => array( + 'type' => 'array', + 'items' => array( + 'name' => 'AttachedPolicy', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'PolicyName' => array( + 'type' => 'string', + ), + 'PolicyArn' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + ), + ), + 'RoleDetailList' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'RoleDetail', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'RoleName' => array( + 'type' => 'string', + ), + 'RoleId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + 'AssumeRolePolicyDocument' => array( + 'type' => 'string', + ), + 'InstanceProfileList' => array( + 'type' => 'array', + 'items' => array( + 'name' => 'InstanceProfile', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'InstanceProfileName' => array( + 'type' => 'string', + ), + 'InstanceProfileId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + 'Roles' => array( + 'type' => 'array', + 'items' => array( + 'name' => 'Role', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'RoleName' => array( + 'type' => 'string', + ), + 'RoleId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + 'AssumeRolePolicyDocument' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + ), + ), + 'RolePolicyList' => array( + 'type' => 'array', + 'items' => array( + 'name' => 'PolicyDetail', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'PolicyName' => array( + 'type' => 'string', + ), + 'PolicyDocument' => array( + 'type' => 'string', + ), + ), + ), + ), + 'AttachedManagedPolicies' => array( + 'type' => 'array', + 'items' => array( + 'name' => 'AttachedPolicy', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'PolicyName' => array( + 'type' => 'string', + ), + 'PolicyArn' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + ), + ), + 'Policies' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'ManagedPolicyDetail', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'PolicyName' => array( + 'type' => 'string', + ), + 'PolicyId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'Path' => array( + 'type' => 'string', + ), + 'DefaultVersionId' => array( + 'type' => 'string', + ), + 'AttachmentCount' => array( + 'type' => 'numeric', + ), + 'IsAttachable' => array( + 'type' => 'boolean', + ), + 'Description' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + 'UpdateDate' => array( + 'type' => 'string', + ), + 'PolicyVersionList' => array( + 'type' => 'array', + 'items' => array( + 'name' => 'PolicyVersion', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'Document' => array( + 'type' => 'string', + ), + 'VersionId' => array( + 'type' => 'string', + ), + 'IsDefaultVersion' => array( + 'type' => 'boolean', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + ), + ), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'GetAccountPasswordPolicyResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'PasswordPolicy' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'MinimumPasswordLength' => array( + 'type' => 'numeric', + ), + 'RequireSymbols' => array( + 'type' => 'boolean', + ), + 'RequireNumbers' => array( + 'type' => 'boolean', + ), + 'RequireUppercaseCharacters' => array( + 'type' => 'boolean', + ), + 'RequireLowercaseCharacters' => array( + 'type' => 'boolean', + ), + 'AllowUsersToChangePassword' => array( + 'type' => 'boolean', + ), + 'ExpirePasswords' => array( + 'type' => 'boolean', + ), + 'MaxPasswordAge' => array( + 'type' => 'numeric', + ), + 'PasswordReusePrevention' => array( + 'type' => 'numeric', + ), + 'HardExpiry' => array( + 'type' => 'boolean', + ), + ), + ), + ), + ), + 'GetAccountSummaryResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'SummaryMap' => array( + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlMap' => array( + 'Users', + 'UsersQuota', + 'Groups', + 'GroupsQuota', + 'ServerCertificates', + 'ServerCertificatesQuota', + 'UserPolicySizeQuota', + 'GroupPolicySizeQuota', + 'GroupsPerUserQuota', + 'SigningCertificatesPerUserQuota', + 'AccessKeysPerUserQuota', + 'MFADevices', + 'MFADevicesInUse', + 'AccountMFAEnabled', + 'AccountAccessKeysPresent', + 'AccountSigningCertificatesPresent', + 'AttachedPoliciesPerGroupQuota', + 'AttachedPoliciesPerRoleQuota', + 'AttachedPoliciesPerUserQuota', + 'Policies', + 'PoliciesQuota', + 'PolicySizeQuota', + 'PolicyVersionsInUse', + 'PolicyVersionsInUseQuota', + 'VersionsPerPolicyQuota', + ), + ), + 'filters' => array( + array( + 'method' => 'Aws\\Common\\Command\\XmlResponseLocationVisitor::xmlMap', + 'args' => array( + '@value', + 'entry', + 'key', + 'value', + ), + ), + ), + 'items' => array( + 'name' => 'entry', + 'type' => 'object', + 'sentAs' => 'entry', + 'additionalProperties' => true, + 'properties' => array( + 'key' => array( + 'type' => 'string', + ), + 'value' => array( + 'type' => 'numeric', + ), + ), + ), + 'additionalProperties' => false, + ), + ), + ), + 'GetContextKeysForPolicyResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'ContextKeyNames' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'ContextKeyNameType', + 'type' => 'string', + 'sentAs' => 'member', + ), + ), + ), + ), + 'GetCredentialReportResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Content' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'ReportFormat' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'GeneratedTime' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'GetGroupResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Group' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'GroupName' => array( + 'type' => 'string', + ), + 'GroupId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + ), + ), + 'Users' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'User', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'UserName' => array( + 'type' => 'string', + ), + 'UserId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + 'PasswordLastUsed' => array( + 'type' => 'string', + ), + ), + ), + ), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'GetGroupPolicyResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'GroupName' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'PolicyName' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'PolicyDocument' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'GetInstanceProfileResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'InstanceProfile' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'InstanceProfileName' => array( + 'type' => 'string', + ), + 'InstanceProfileId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + 'Roles' => array( + 'type' => 'array', + 'items' => array( + 'name' => 'Role', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'RoleName' => array( + 'type' => 'string', + ), + 'RoleId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + 'AssumeRolePolicyDocument' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + ), + ), + ), + 'GetLoginProfileResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'LoginProfile' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'UserName' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + 'PasswordResetRequired' => array( + 'type' => 'boolean', + ), + ), + ), + ), + ), + 'GetOpenIDConnectProviderResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Url' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'ClientIDList' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'clientIDType', + 'type' => 'string', + 'sentAs' => 'member', + ), + ), + 'ThumbprintList' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'thumbprintType', + 'type' => 'string', + 'sentAs' => 'member', + ), + ), + 'CreateDate' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'GetPolicyResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Policy' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'PolicyName' => array( + 'type' => 'string', + ), + 'PolicyId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'Path' => array( + 'type' => 'string', + ), + 'DefaultVersionId' => array( + 'type' => 'string', + ), + 'AttachmentCount' => array( + 'type' => 'numeric', + ), + 'IsAttachable' => array( + 'type' => 'boolean', + ), + 'Description' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + 'UpdateDate' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + 'GetPolicyVersionResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'PolicyVersion' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Document' => array( + 'type' => 'string', + ), + 'VersionId' => array( + 'type' => 'string', + ), + 'IsDefaultVersion' => array( + 'type' => 'boolean', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + 'GetRoleResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Role' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'RoleName' => array( + 'type' => 'string', + ), + 'RoleId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + 'AssumeRolePolicyDocument' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + 'GetRolePolicyResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RoleName' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'PolicyName' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'PolicyDocument' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'GetSAMLProviderResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'SAMLMetadataDocument' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'CreateDate' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'ValidUntil' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'GetSSHPublicKeyResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'SSHPublicKey' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'UserName' => array( + 'type' => 'string', + ), + 'SSHPublicKeyId' => array( + 'type' => 'string', + ), + 'Fingerprint' => array( + 'type' => 'string', + ), + 'SSHPublicKeyBody' => array( + 'type' => 'string', + ), + 'Status' => array( + 'type' => 'string', + ), + 'UploadDate' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + 'GetServerCertificateResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'ServerCertificate' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'ServerCertificateMetadata' => array( + 'type' => 'object', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'ServerCertificateName' => array( + 'type' => 'string', + ), + 'ServerCertificateId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'UploadDate' => array( + 'type' => 'string', + ), + 'Expiration' => array( + 'type' => 'string', + ), + ), + ), + 'CertificateBody' => array( + 'type' => 'string', + ), + 'CertificateChain' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + 'GetUserResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'User' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'UserName' => array( + 'type' => 'string', + ), + 'UserId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + 'PasswordLastUsed' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + 'GetUserPolicyResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'UserName' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'PolicyName' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'PolicyDocument' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'ListAccessKeysResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'AccessKeyMetadata' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'AccessKeyMetadata', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'UserName' => array( + 'type' => 'string', + ), + 'AccessKeyId' => array( + 'type' => 'string', + ), + 'Status' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + ), + ), + ), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'ListAccountAliasesResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'AccountAliases' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'accountAliasType', + 'type' => 'string', + 'sentAs' => 'member', + ), + ), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'ListAttachedGroupPoliciesResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'AttachedPolicies' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'AttachedPolicy', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'PolicyName' => array( + 'type' => 'string', + ), + 'PolicyArn' => array( + 'type' => 'string', + ), + ), + ), + ), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'ListAttachedRolePoliciesResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'AttachedPolicies' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'AttachedPolicy', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'PolicyName' => array( + 'type' => 'string', + ), + 'PolicyArn' => array( + 'type' => 'string', + ), + ), + ), + ), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'ListAttachedUserPoliciesResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'AttachedPolicies' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'AttachedPolicy', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'PolicyName' => array( + 'type' => 'string', + ), + 'PolicyArn' => array( + 'type' => 'string', + ), + ), + ), + ), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'ListEntitiesForPolicyResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'PolicyGroups' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'PolicyGroup', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'GroupName' => array( + 'type' => 'string', + ), + ), + ), + ), + 'PolicyUsers' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'PolicyUser', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'UserName' => array( + 'type' => 'string', + ), + ), + ), + ), + 'PolicyRoles' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'PolicyRole', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'RoleName' => array( + 'type' => 'string', + ), + ), + ), + ), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'ListGroupPoliciesResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'PolicyNames' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'policyNameType', + 'type' => 'string', + 'sentAs' => 'member', + ), + ), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'ListGroupsResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Groups' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'Group', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'GroupName' => array( + 'type' => 'string', + ), + 'GroupId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + ), + ), + ), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'ListGroupsForUserResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Groups' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'Group', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'GroupName' => array( + 'type' => 'string', + ), + 'GroupId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + ), + ), + ), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'ListInstanceProfilesResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'InstanceProfiles' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'InstanceProfile', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'InstanceProfileName' => array( + 'type' => 'string', + ), + 'InstanceProfileId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + 'Roles' => array( + 'type' => 'array', + 'items' => array( + 'name' => 'Role', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'RoleName' => array( + 'type' => 'string', + ), + 'RoleId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + 'AssumeRolePolicyDocument' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + ), + ), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'ListInstanceProfilesForRoleResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'InstanceProfiles' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'InstanceProfile', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'InstanceProfileName' => array( + 'type' => 'string', + ), + 'InstanceProfileId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + 'Roles' => array( + 'type' => 'array', + 'items' => array( + 'name' => 'Role', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'RoleName' => array( + 'type' => 'string', + ), + 'RoleId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + 'AssumeRolePolicyDocument' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + ), + ), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'ListMFADevicesResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'MFADevices' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'MFADevice', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'UserName' => array( + 'type' => 'string', + ), + 'SerialNumber' => array( + 'type' => 'string', + ), + 'EnableDate' => array( + 'type' => 'string', + ), + ), + ), + ), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'ListOpenIDConnectProvidersResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'OpenIDConnectProviderList' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'OpenIDConnectProviderListEntry', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'Arn' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + ), + 'ListPoliciesResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Policies' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'Policy', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'PolicyName' => array( + 'type' => 'string', + ), + 'PolicyId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'Path' => array( + 'type' => 'string', + ), + 'DefaultVersionId' => array( + 'type' => 'string', + ), + 'AttachmentCount' => array( + 'type' => 'numeric', + ), + 'IsAttachable' => array( + 'type' => 'boolean', + ), + 'Description' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + 'UpdateDate' => array( + 'type' => 'string', + ), + ), + ), + ), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'ListPolicyVersionsResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Versions' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'PolicyVersion', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'Document' => array( + 'type' => 'string', + ), + 'VersionId' => array( + 'type' => 'string', + ), + 'IsDefaultVersion' => array( + 'type' => 'boolean', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + ), + ), + ), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'ListRolePoliciesResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'PolicyNames' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'policyNameType', + 'type' => 'string', + 'sentAs' => 'member', + ), + ), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'ListRolesResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Roles' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'Role', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'RoleName' => array( + 'type' => 'string', + ), + 'RoleId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + 'AssumeRolePolicyDocument' => array( + 'type' => 'string', + ), + ), + ), + ), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'ListSAMLProvidersResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'SAMLProviderList' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'SAMLProviderListEntry', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'Arn' => array( + 'type' => 'string', + ), + 'ValidUntil' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + ), + 'ListSSHPublicKeysResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'SSHPublicKeys' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'SSHPublicKeyMetadata', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'UserName' => array( + 'type' => 'string', + ), + 'SSHPublicKeyId' => array( + 'type' => 'string', + ), + 'Status' => array( + 'type' => 'string', + ), + 'UploadDate' => array( + 'type' => 'string', + ), + ), + ), + ), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'ListServerCertificatesResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'ServerCertificateMetadataList' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'ServerCertificateMetadata', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'ServerCertificateName' => array( + 'type' => 'string', + ), + 'ServerCertificateId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'UploadDate' => array( + 'type' => 'string', + ), + 'Expiration' => array( + 'type' => 'string', + ), + ), + ), + ), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'ListSigningCertificatesResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Certificates' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'SigningCertificate', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'UserName' => array( + 'type' => 'string', + ), + 'CertificateId' => array( + 'type' => 'string', + ), + 'CertificateBody' => array( + 'type' => 'string', + ), + 'Status' => array( + 'type' => 'string', + ), + 'UploadDate' => array( + 'type' => 'string', + ), + ), + ), + ), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'ListUserPoliciesResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'PolicyNames' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'policyNameType', + 'type' => 'string', + 'sentAs' => 'member', + ), + ), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'ListUsersResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Users' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'User', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'UserName' => array( + 'type' => 'string', + ), + 'UserId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + 'PasswordLastUsed' => array( + 'type' => 'string', + ), + ), + ), + ), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'ListVirtualMFADevicesResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'VirtualMFADevices' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'VirtualMFADevice', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'SerialNumber' => array( + 'type' => 'string', + ), + 'Base32StringSeed' => array( + 'type' => 'string', + ), + 'QRCodePNG' => array( + 'type' => 'string', + ), + 'User' => array( + 'type' => 'object', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'UserName' => array( + 'type' => 'string', + ), + 'UserId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'CreateDate' => array( + 'type' => 'string', + ), + 'PasswordLastUsed' => array( + 'type' => 'string', + ), + ), + ), + 'EnableDate' => array( + 'type' => 'string', + ), + ), + ), + ), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'SimulatePolicyResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'EvaluationResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'EvaluationResult', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'EvalActionName' => array( + 'type' => 'string', + ), + 'EvalResourceName' => array( + 'type' => 'string', + ), + 'EvalDecision' => array( + 'type' => 'string', + ), + 'MatchedStatements' => array( + 'type' => 'array', + 'items' => array( + 'name' => 'Statement', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'SourcePolicyId' => array( + 'type' => 'string', + ), + 'SourcePolicyType' => array( + 'type' => 'string', + ), + 'StartPosition' => array( + 'type' => 'object', + 'properties' => array( + 'Line' => array( + 'type' => 'numeric', + ), + 'Column' => array( + 'type' => 'numeric', + ), + ), + ), + 'EndPosition' => array( + 'type' => 'object', + 'properties' => array( + 'Line' => array( + 'type' => 'numeric', + ), + 'Column' => array( + 'type' => 'numeric', + ), + ), + ), + ), + ), + ), + 'MissingContextValues' => array( + 'type' => 'array', + 'items' => array( + 'name' => 'ContextKeyNameType', + 'type' => 'string', + 'sentAs' => 'member', + ), + ), + 'EvalDecisionDetails' => array( + 'type' => 'array', + 'filters' => array( + array( + 'method' => 'Aws\\Common\\Command\\XmlResponseLocationVisitor::xmlMap', + 'args' => array( + '@value', + 'entry', + 'key', + 'value', + ), + ), + ), + 'items' => array( + 'name' => 'entry', + 'type' => 'object', + 'sentAs' => 'entry', + 'additionalProperties' => true, + 'properties' => array( + 'key' => array( + 'type' => 'string', + ), + 'value' => array( + 'type' => 'string', + ), + ), + ), + 'additionalProperties' => false, + ), + 'ResourceSpecificResults' => array( + 'type' => 'array', + 'items' => array( + 'name' => 'ResourceSpecificResult', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'EvalResourceName' => array( + 'type' => 'string', + ), + 'EvalResourceDecision' => array( + 'type' => 'string', + ), + 'MatchedStatements' => array( + 'type' => 'array', + 'items' => array( + 'name' => 'Statement', + 'type' => 'object', + 'sentAs' => 'member', + 'properties' => array( + 'SourcePolicyId' => array( + 'type' => 'string', + ), + 'SourcePolicyType' => array( + 'type' => 'string', + ), + 'StartPosition' => array( + 'type' => 'object', + 'properties' => array( + 'Line' => array( + 'type' => 'numeric', + ), + 'Column' => array( + 'type' => 'numeric', + ), + ), + ), + 'EndPosition' => array( + 'type' => 'object', + 'properties' => array( + 'Line' => array( + 'type' => 'numeric', + ), + 'Column' => array( + 'type' => 'numeric', + ), + ), + ), + ), + ), + ), + 'MissingContextValues' => array( + 'type' => 'array', + 'items' => array( + 'name' => 'ContextKeyNameType', + 'type' => 'string', + 'sentAs' => 'member', + ), + ), + 'EvalDecisionDetails' => array( + 'type' => 'array', + 'filters' => array( + array( + 'method' => 'Aws\\Common\\Command\\XmlResponseLocationVisitor::xmlMap', + 'args' => array( + '@value', + 'entry', + 'key', + 'value', + ), + ), + ), + 'items' => array( + 'name' => 'entry', + 'type' => 'object', + 'sentAs' => 'entry', + 'additionalProperties' => true, + 'properties' => array( + 'key' => array( + 'type' => 'string', + ), + 'value' => array( + 'type' => 'string', + ), + ), + ), + 'additionalProperties' => false, + ), + ), + ), + ), + ), + ), + ), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'UpdateSAMLProviderResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'SAMLProviderArn' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'UploadSSHPublicKeyResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'SSHPublicKey' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'UserName' => array( + 'type' => 'string', + ), + 'SSHPublicKeyId' => array( + 'type' => 'string', + ), + 'Fingerprint' => array( + 'type' => 'string', + ), + 'SSHPublicKeyBody' => array( + 'type' => 'string', + ), + 'Status' => array( + 'type' => 'string', + ), + 'UploadDate' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + 'UploadServerCertificateResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'ServerCertificateMetadata' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Path' => array( + 'type' => 'string', + ), + 'ServerCertificateName' => array( + 'type' => 'string', + ), + 'ServerCertificateId' => array( + 'type' => 'string', + ), + 'Arn' => array( + 'type' => 'string', + ), + 'UploadDate' => array( + 'type' => 'string', + ), + 'Expiration' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + 'UploadSigningCertificateResponse' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Certificate' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'UserName' => array( + 'type' => 'string', + ), + 'CertificateId' => array( + 'type' => 'string', + ), + 'CertificateBody' => array( + 'type' => 'string', + ), + 'Status' => array( + 'type' => 'string', + ), + 'UploadDate' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + ), + 'iterators' => array( + 'GetGroup' => array( + 'input_token' => 'Marker', + 'output_token' => 'Marker', + 'more_results' => 'IsTruncated', + 'limit_key' => 'MaxItems', + 'result_key' => 'Users', + ), + 'ListAccessKeys' => array( + 'input_token' => 'Marker', + 'output_token' => 'Marker', + 'more_results' => 'IsTruncated', + 'limit_key' => 'MaxItems', + 'result_key' => 'AccessKeyMetadata', + ), + 'ListAccountAliases' => array( + 'input_token' => 'Marker', + 'output_token' => 'Marker', + 'more_results' => 'IsTruncated', + 'limit_key' => 'MaxItems', + 'result_key' => 'AccountAliases', + ), + 'ListAttachedGroupPolicies' => array( + 'input_token' => 'Marker', + 'output_token' => 'Marker', + 'more_results' => 'IsTruncated', + 'limit_key' => 'MaxItems', + 'result_key' => 'AttachedPolicies', + ), + 'ListAttachedRolePolicies' => array( + 'input_token' => 'Marker', + 'output_token' => 'Marker', + 'more_results' => 'IsTruncated', + 'limit_key' => 'MaxItems', + 'result_key' => 'AttachedPolicies', + ), + 'ListAttachedUserPolicies' => array( + 'input_token' => 'Marker', + 'output_token' => 'Marker', + 'more_results' => 'IsTruncated', + 'limit_key' => 'MaxItems', + 'result_key' => 'AttachedPolicies', + ), + 'ListEntitiesForPolicy' => array( + 'input_token' => 'Marker', + 'output_token' => 'Marker', + 'more_results' => 'IsTruncated', + 'limit_key' => 'MaxItems', + 'result_key' => array( + 'PolicyGroups', + 'PolicyUsers', + 'PolicyRoles', + ), + ), + 'ListGroupPolicies' => array( + 'input_token' => 'Marker', + 'output_token' => 'Marker', + 'more_results' => 'IsTruncated', + 'limit_key' => 'MaxItems', + 'result_key' => 'PolicyNames', + ), + 'ListGroups' => array( + 'input_token' => 'Marker', + 'output_token' => 'Marker', + 'more_results' => 'IsTruncated', + 'limit_key' => 'MaxItems', + 'result_key' => 'Groups', + ), + 'ListGroupsForUser' => array( + 'input_token' => 'Marker', + 'output_token' => 'Marker', + 'more_results' => 'IsTruncated', + 'limit_key' => 'MaxItems', + 'result_key' => 'Groups', + ), + 'ListInstanceProfiles' => array( + 'input_token' => 'Marker', + 'output_token' => 'Marker', + 'more_results' => 'IsTruncated', + 'limit_key' => 'MaxItems', + 'result_key' => 'InstanceProfiles', + ), + 'ListInstanceProfilesForRole' => array( + 'input_token' => 'Marker', + 'output_token' => 'Marker', + 'more_results' => 'IsTruncated', + 'limit_key' => 'MaxItems', + 'result_key' => 'InstanceProfiles', + ), + 'ListMFADevices' => array( + 'input_token' => 'Marker', + 'output_token' => 'Marker', + 'more_results' => 'IsTruncated', + 'limit_key' => 'MaxItems', + 'result_key' => 'MFADevices', + ), + 'ListPolicies' => array( + 'input_token' => 'Marker', + 'output_token' => 'Marker', + 'more_results' => 'IsTruncated', + 'limit_key' => 'MaxItems', + 'result_key' => 'Policies', + ), + 'ListRolePolicies' => array( + 'input_token' => 'Marker', + 'output_token' => 'Marker', + 'more_results' => 'IsTruncated', + 'limit_key' => 'MaxItems', + 'result_key' => 'PolicyNames', + ), + 'ListRoles' => array( + 'input_token' => 'Marker', + 'output_token' => 'Marker', + 'more_results' => 'IsTruncated', + 'limit_key' => 'MaxItems', + 'result_key' => 'Roles', + ), + 'ListSAMLProviders' => array( + 'result_key' => 'SAMLProviderList', + ), + 'ListServerCertificates' => array( + 'input_token' => 'Marker', + 'output_token' => 'Marker', + 'more_results' => 'IsTruncated', + 'limit_key' => 'MaxItems', + 'result_key' => 'ServerCertificateMetadataList', + ), + 'ListSigningCertificates' => array( + 'input_token' => 'Marker', + 'output_token' => 'Marker', + 'more_results' => 'IsTruncated', + 'limit_key' => 'MaxItems', + 'result_key' => 'Certificates', + ), + 'ListUserPolicies' => array( + 'input_token' => 'Marker', + 'output_token' => 'Marker', + 'more_results' => 'IsTruncated', + 'limit_key' => 'MaxItems', + 'result_key' => 'PolicyNames', + ), + 'ListUsers' => array( + 'input_token' => 'Marker', + 'output_token' => 'Marker', + 'more_results' => 'IsTruncated', + 'limit_key' => 'MaxItems', + 'result_key' => 'Users', + ), + 'ListVirtualMFADevices' => array( + 'input_token' => 'Marker', + 'output_token' => 'Marker', + 'more_results' => 'IsTruncated', + 'limit_key' => 'MaxItems', + 'result_key' => 'VirtualMFADevices', + ), + 'GetAccountAuthorizationDetails' => array( + 'input_token' => 'Marker', + 'output_token' => 'Marker', + 'more_results' => 'IsTruncated', + 'limit_key' => 'MaxItems', + ), + ), +); diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/AcpListener.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/AcpListener.php new file mode 100644 index 0000000..49b5ebc --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/AcpListener.php @@ -0,0 +1,75 @@ + array('onCommandBeforePrepare', -255)); + } + + /** + * An event handler for constructing ACP definitions. + * + * @param Event $event The event to respond to. + * + * @throws InvalidArgumentException + */ + public function onCommandBeforePrepare(Event $event) + { + /** @var \Guzzle\Service\Command\AbstractCommand $command */ + $command = $event['command']; + $operation = $command->getOperation(); + if ($operation->hasParam('ACP') && $command->hasKey('ACP')) { + if ($acp = $command->get('ACP')) { + // Ensure that the correct object was passed + if (!($acp instanceof Acp)) { + throw new InvalidArgumentException('ACP must be an instance of Aws\S3\Model\Acp'); + } + + // Check if the user specified both an ACP and Grants + if ($command->hasKey('Grants')) { + throw new InvalidArgumentException( + 'Use either the ACP parameter or the Grants parameter. Do not use both.' + ); + } + + // Add the correct headers/body based parameters to the command + if ($operation->hasParam('Grants')) { + $command->overwriteWith($acp->toArray()); + } else { + $acp->updateCommand($command); + } + } + + // Remove the ACP parameter + $command->remove('ACP'); + } + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/BucketStyleListener.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/BucketStyleListener.php new file mode 100644 index 0000000..5d7bbde --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/BucketStyleListener.php @@ -0,0 +1,89 @@ + true); + + public static function getSubscribedEvents() + { + return array('command.after_prepare' => array('onCommandAfterPrepare', -255)); + } + + /** + * Changes how buckets are referenced in the HTTP request + * + * @param Event $event Event emitted + */ + public function onCommandAfterPrepare(Event $event) + { + $command = $event['command']; + $bucket = $command['Bucket']; + $request = $command->getRequest(); + $pathStyle = false; + + // Skip operations that do not need the bucket moved to the host. + if (isset(self::$exclusions[$command->getName()])) { + return; + } + + if ($key = $command['Key']) { + // Modify the command Key to account for the {/Key*} explosion into an array + if (is_array($key)) { + $command['Key'] = $key = implode('/', $key); + } + } + + // Set the key and bucket on the request + $request->getParams()->set('bucket', $bucket)->set('key', $key); + + // Switch to virtual if PathStyle is disabled, or not a DNS compatible bucket name, or the scheme is + // http, or the scheme is https and there are no dots in the host header (avoids SSL issues) + if (!$command['PathStyle'] && $command->getClient()->isValidBucketName($bucket) + && !($command->getRequest()->getScheme() == 'https' && strpos($bucket, '.')) + ) { + // Switch to virtual hosted bucket + $request->setHost($bucket . '.' . $request->getHost()); + $request->setPath(preg_replace("#^/{$bucket}#", '', $request->getPath())); + } else { + $pathStyle = true; + } + + if (!$bucket) { + $request->getParams()->set('s3.resource', '/'); + } elseif ($pathStyle) { + // Path style does not need a trailing slash + $request->getParams()->set( + 's3.resource', + '/' . rawurlencode($bucket) . ($key ? ('/' . S3Client::encodeKey($key)) : '') + ); + } else { + // Bucket style needs a trailing slash + $request->getParams()->set( + 's3.resource', + '/' . rawurlencode($bucket) . ($key ? ('/' . S3Client::encodeKey($key)) : '/') + ); + } + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Command/S3Command.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Command/S3Command.php new file mode 100644 index 0000000..d0d3b24 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Command/S3Command.php @@ -0,0 +1,65 @@ +client->createPresignedUrl($this->prepare(), $expires); + } + + /** + * {@inheritdoc} + */ + protected function process() + { + $request = $this->getRequest(); + $response = $this->getResponse(); + + // Dispatch an error if a 301 redirect occurred + if ($response->getStatusCode() == 301) { + $this->getClient()->getEventDispatcher()->dispatch('request.error', new Event(array( + 'request' => $this->getRequest(), + 'response' => $response + ))); + } + + parent::process(); + + // Set the GetObject URL if using the PutObject operation + if ($this->result instanceof Model && $this->getName() == 'PutObject') { + $this->result->set('ObjectURL', $request->getUrl()); + } + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Enum/CannedAcl.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Enum/CannedAcl.php new file mode 100644 index 0000000..da47045 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Enum/CannedAcl.php @@ -0,0 +1,32 @@ +errors = $errors; + } + + /** + * Get the errored objects + * + * @return array Returns an array of associative arrays, each containing + * a 'Code', 'Message', and 'Key' key. + */ + public function getErrors() + { + return $this->errors; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Exception/EntityTooLargeException.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Exception/EntityTooLargeException.php new file mode 100644 index 0000000..66e6da9 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Exception/EntityTooLargeException.php @@ -0,0 +1,22 @@ +getStatusCode() === 301) { + $data['type'] = 'client'; + if (isset($data['message'], $data['parsed'])) { + $data['message'] = rtrim($data['message'], '.') . ': "' . $data['parsed']->Endpoint . '".'; + } + } + + return $data; + } + + /** + * {@inheritdoc} + */ + protected function parseHeaders(RequestInterface $request, Response $response, array &$data) + { + parent::parseHeaders($request, $response, $data); + + // Get the request + $status = $response->getStatusCode(); + $method = $request->getMethod(); + + // Attempt to determine code for 403s and 404s + if ($status === 403) { + $data['code'] = 'AccessDenied'; + } elseif ($method === 'HEAD' && $status === 404) { + $path = explode('/', trim($request->getPath(), '/')); + $host = explode('.', $request->getHost()); + $bucket = (count($host) === 4) ? $host[0] : array_shift($path); + $object = array_shift($path); + + if ($bucket && $object) { + $data['code'] = 'NoSuchKey'; + } elseif ($bucket) { + $data['code'] = 'NoSuchBucket'; + } + } + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Exception/PermanentRedirectException.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Exception/PermanentRedirectException.php new file mode 100644 index 0000000..d2af820 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Exception/PermanentRedirectException.php @@ -0,0 +1,22 @@ +setNext($next); + } + } + + public function makesDecision() + { + return true; + } + + protected function getDelay( + $retries, + RequestInterface $request, + Response $response = null, + HttpException $e = null + ) { + if ($response && $request->getMethod() === 'POST' + && $request instanceof EntityEnclosingRequestInterface + && $response->getStatusCode() == 200 + && strpos($request->getBody(), 'getBody(), 'get('Buckets') ?: array(); + + // If only the names_only set, change arrays to a string + if ($this->get('names_only')) { + foreach ($buckets as &$bucket) { + $bucket = $bucket['Name']; + } + } + + return $buckets; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Iterator/ListMultipartUploadsIterator.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Iterator/ListMultipartUploadsIterator.php new file mode 100644 index 0000000..592aa0a --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Iterator/ListMultipartUploadsIterator.php @@ -0,0 +1,46 @@ +get('Uploads') ?: array(); + + // If there are prefixes and we want them, merge them in + if ($this->get('return_prefixes') && $result->hasKey('CommonPrefixes')) { + $uploads = array_merge($uploads, $result->get('CommonPrefixes')); + } + + return $uploads; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Iterator/ListObjectVersionsIterator.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Iterator/ListObjectVersionsIterator.php new file mode 100644 index 0000000..991a77e --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Iterator/ListObjectVersionsIterator.php @@ -0,0 +1,48 @@ +get('Versions') ?: array(); + $deleteMarkers = $result->get('DeleteMarkers') ?: array(); + $versions = array_merge($versions, $deleteMarkers); + + // If there are prefixes and we want them, merge them in + if ($this->get('return_prefixes') && $result->hasKey('CommonPrefixes')) { + $versions = array_merge($versions, $result->get('CommonPrefixes')); + } + + return $versions; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Iterator/ListObjectsIterator.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Iterator/ListObjectsIterator.php new file mode 100644 index 0000000..852b2a9 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Iterator/ListObjectsIterator.php @@ -0,0 +1,68 @@ +get('Contents') ?: array(); + $numObjects = count($objects); + $lastKey = $numObjects ? $objects[$numObjects - 1]['Key'] : false; + if ($lastKey && !$result->hasKey($this->get('output_token'))) { + $result->set($this->get('output_token'), $lastKey); + } + + // Closure for getting the name of an object or prefix + $getName = function ($object) { + return isset($object['Key']) ? $object['Key'] : $object['Prefix']; + }; + + // If common prefixes returned (i.e. a delimiter was set) and they need to be returned, there is more to do + if ($this->get('return_prefixes') && $result->hasKey('CommonPrefixes')) { + // Collect and format the prefixes to include with the objects + $objects = array_merge($objects, $result->get('CommonPrefixes')); + + // Sort the objects and prefixes to maintain alphabetical order, but only if some of each were returned + if ($this->get('sort_results') && $lastKey && $objects) { + usort($objects, function ($object1, $object2) use ($getName) { + return strcmp($getName($object1), $getName($object2)); + }); + } + } + + // If only the names are desired, iterate through the results and convert the arrays to the object/prefix names + if ($this->get('names_only')) { + $objects = array_map($getName, $objects); + } + + return $objects; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Iterator/OpendirIterator.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Iterator/OpendirIterator.php new file mode 100644 index 0000000..82c0153 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Iterator/OpendirIterator.php @@ -0,0 +1,86 @@ +filePrefix = $filePrefix; + $this->dirHandle = $dirHandle; + $this->next(); + } + + public function __destruct() + { + if ($this->dirHandle) { + closedir($this->dirHandle); + } + } + + public function rewind() + { + $this->key = 0; + rewinddir($this->dirHandle); + } + + public function current() + { + return $this->currentFile; + } + + public function next() + { + if ($file = readdir($this->dirHandle)) { + $this->currentFile = new \SplFileInfo($this->filePrefix . $file); + } else { + $this->currentFile = false; + } + + $this->key++; + } + + public function key() + { + return $this->key; + } + + public function valid() + { + return $this->currentFile !== false; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/Acp.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/Acp.php new file mode 100644 index 0000000..9ddc3dd --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/Acp.php @@ -0,0 +1,243 @@ +setOwner($owner); + $this->setGrants($grants); + } + + /** + * Create an Acp object from an array. This can be used to create an ACP from a response to a GetObject/Bucket ACL + * operation. + * + * @param array $data Array of ACP data + * + * @return Acp + */ + public static function fromArray(array $data) + { + $builder = new AcpBuilder(); + $builder->setOwner((string) $data['Owner']['ID'], $data['Owner']['DisplayName']); + + // Add each Grantee to the ACP + foreach ($data['Grants'] as $grant) { + $permission = $grant['Permission']; + + // Determine the type for response bodies that are missing the Type parameter + if (!isset($grant['Grantee']['Type'])) { + if (isset($grant['Grantee']['ID'])) { + $grant['Grantee']['Type'] = 'CanonicalUser'; + } elseif (isset($grant['Grantee']['URI'])) { + $grant['Grantee']['Type'] = 'Group'; + } else { + $grant['Grantee']['Type'] = 'AmazonCustomerByEmail'; + } + } + + switch ($grant['Grantee']['Type']) { + case 'Group': + $builder->addGrantForGroup($permission, $grant['Grantee']['URI']); + break; + case 'AmazonCustomerByEmail': + $builder->addGrantForEmail($permission, $grant['Grantee']['EmailAddress']); + break; + case 'CanonicalUser': + $builder->addGrantForUser( + $permission, + $grant['Grantee']['ID'], + $grant['Grantee']['DisplayName'] + ); + } + } + + return $builder->build(); + } + + /** + * Set the owner of the ACP policy + * + * @param Grantee $owner ACP policy owner + * + * @return $this + * + * @throws InvalidArgumentException if the grantee does not have an ID set + */ + public function setOwner(Grantee $owner) + { + if (!$owner->isCanonicalUser()) { + throw new InvalidArgumentException('The owner must have an ID set.'); + } + + $this->owner = $owner; + + return $this; + } + + /** + * Get the owner of the ACP policy + * + * @return Grantee + */ + public function getOwner() + { + return $this->owner; + } + + /** + * Set the grants for the ACP + * + * @param array|\Traversable $grants List of grants for the ACP + * + * @return $this + * + * @throws InvalidArgumentException + */ + public function setGrants($grants = array()) + { + $this->grants = new \SplObjectStorage(); + + if ($grants) { + if (is_array($grants) || $grants instanceof \Traversable) { + /** @var Grant $grant */ + foreach ($grants as $grant) { + $this->addGrant($grant); + } + } else { + throw new InvalidArgumentException('Grants must be passed in as an array or Traversable object.'); + } + } + + return $this; + } + + /** + * Get all of the grants + * + * @return \SplObjectStorage + */ + public function getGrants() + { + return $this->grants; + } + + /** + * Add a Grant + * + * @param Grant $grant Grant to add + * + * @return $this + */ + public function addGrant(Grant $grant) + { + if (count($this->grants) < 100) { + $this->grants->attach($grant); + } else { + throw new OverflowException('An ACP may contain up to 100 grants.'); + } + + return $this; + } + + /** + * Get the total number of attributes + * + * @return int + */ + public function count() + { + return count($this->grants); + } + + /** + * Returns the grants for iteration + * + * @return \SplObjectStorage + */ + public function getIterator() + { + return $this->grants; + } + + /** + * Applies grant headers to a command's parameters + * + * @param AbstractCommand $command Command to be updated + * + * @return $this + */ + public function updateCommand(AbstractCommand $command) + { + $parameters = array(); + foreach ($this->grants as $grant) { + /** @var Grant $grant */ + $parameters = array_merge_recursive($parameters, $grant->getParameterArray()); + } + + foreach ($parameters as $name => $values) { + $command->set($name, implode(', ', (array) $values)); + } + + return $this; + } + + /** + * {@inheritdoc} + */ + public function toArray() + { + $grants = array(); + foreach ($this->grants as $grant) { + $grants[] = $grant->toArray(); + } + + return array( + 'Owner' => array( + 'ID' => $this->owner->getId(), + 'DisplayName' => $this->owner->getDisplayName() + ), + 'Grants' => $grants + ); + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/AcpBuilder.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/AcpBuilder.php new file mode 100644 index 0000000..b6d1be7 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/AcpBuilder.php @@ -0,0 +1,134 @@ +owner = new Grantee($id, $displayName ?: $id, GranteeType::USER); + + return $this; + } + + /** + * Create and store a Grant with a CanonicalUser Grantee for the ACL + * + * @param string $permission Permission for the Grant + * @param string $id Grantee identifier + * @param string $displayName Grantee display name + * + * @return $this + */ + public function addGrantForUser($permission, $id, $displayName = null) + { + $grantee = new Grantee($id, $displayName ?: $id, GranteeType::USER); + $this->addGrant($permission, $grantee); + + return $this; + } + + /** + * Create and store a Grant with a AmazonCustomerByEmail Grantee for the ACL + * + * @param string $permission Permission for the Grant + * @param string $email Grantee email address + * + * @return $this + */ + public function addGrantForEmail($permission, $email) + { + $grantee = new Grantee($email, null, GranteeType::EMAIL); + $this->addGrant($permission, $grantee); + + return $this; + } + + /** + * Create and store a Grant with a Group Grantee for the ACL + * + * @param string $permission Permission for the Grant + * @param string $group Grantee group + * + * @return $this + */ + public function addGrantForGroup($permission, $group) + { + $grantee = new Grantee($group, null, GranteeType::GROUP); + $this->addGrant($permission, $grantee); + + return $this; + } + + /** + * Create and store a Grant for the ACL + * + * @param string $permission Permission for the Grant + * @param Grantee $grantee The Grantee for the Grant + * + * @return $this + */ + public function addGrant($permission, Grantee $grantee) + { + $this->grants[] = new Grant($grantee, $permission); + + return $this; + } + + /** + * Builds the ACP and returns it + * + * @return Acp + */ + public function build() + { + return new Acp($this->owner, $this->grants); + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/ClearBucket.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/ClearBucket.php new file mode 100644 index 0000000..09982d8 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/ClearBucket.php @@ -0,0 +1,189 @@ +client = $client; + $this->bucket = $bucket; + } + + /** + * {@inheritdoc} + */ + public static function getAllEvents() + { + return array(self::AFTER_DELETE, self::BEFORE_CLEAR, self::AFTER_CLEAR); + } + + /** + * Set the bucket that is to be cleared + * + * @param string $bucket Name of the bucket to clear + * + * @return $this + */ + public function setBucket($bucket) + { + $this->bucket = $bucket; + + return $this; + } + + /** + * Get the iterator used to yield the keys to be deleted. A default iterator + * will be created and returned if no iterator has been explicitly set. + * + * @return \Iterator + */ + public function getIterator() + { + if (!$this->iterator) { + $this->iterator = $this->client->getIterator('ListObjectVersions', array( + 'Bucket' => $this->bucket + )); + } + + return $this->iterator; + } + + /** + * Sets a different iterator to use than the default iterator. This can be helpful when you wish to delete + * only specific keys from a bucket (e.g. keys that match a certain prefix or delimiter, or perhaps keys that + * pass through a filtered, decorated iterator). + * + * @param \Iterator $iterator Iterator used to yield the keys to be deleted + * + * @return $this + */ + public function setIterator(\Iterator $iterator) + { + $this->iterator = $iterator; + + return $this; + } + + /** + * Set the MFA token to send with each request + * + * @param string $mfa MFA token to send with each request. The value is the concatenation of the authentication + * device's serial number, a space, and the value displayed on your authentication device. + * + * @return $this + */ + public function setMfa($mfa) + { + $this->mfa = $mfa; + + return $this; + } + + /** + * Clear the bucket + * + * @return int Returns the number of deleted keys + * @throws ExceptionCollection + */ + public function clear() + { + $that = $this; + $batch = DeleteObjectsBatch::factory($this->client, $this->bucket, $this->mfa); + $batch = new NotifyingBatch($batch, function ($items) use ($that) { + $that->dispatch(ClearBucket::AFTER_DELETE, array('keys' => $items)); + }); + $batch = new FlushingBatch(new ExceptionBufferingBatch($batch), 1000); + + // Let any listeners know that the bucket is about to be cleared + $this->dispatch(self::BEFORE_CLEAR, array( + 'iterator' => $this->getIterator(), + 'batch' => $batch, + 'mfa' => $this->mfa + )); + + $deleted = 0; + foreach ($this->getIterator() as $object) { + if (isset($object['VersionId'])) { + $versionId = $object['VersionId'] == 'null' ? null : $object['VersionId']; + } else { + $versionId = null; + } + $batch->addKey($object['Key'], $versionId); + $deleted++; + } + $batch->flush(); + + // If any errors were encountered, then throw an ExceptionCollection + if (count($batch->getExceptions())) { + $e = new ExceptionCollection(); + foreach ($batch->getExceptions() as $exception) { + $e->add($exception->getPrevious()); + } + throw $e; + } + + // Let any listeners know that the bucket was cleared + $this->dispatch(self::AFTER_CLEAR, array('deleted' => $deleted)); + + return $deleted; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/DeleteObjectsBatch.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/DeleteObjectsBatch.php new file mode 100644 index 0000000..ab6425b --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/DeleteObjectsBatch.php @@ -0,0 +1,87 @@ + %s, VersionId => %s] and call flush when the objects + * should be deleted. + */ +class DeleteObjectsBatch extends AbstractBatchDecorator +{ + /** + * Factory for creating a DeleteObjectsBatch + * + * @param AwsClientInterface $client Client used to transfer requests + * @param string $bucket Bucket that contains the objects to delete + * @param string $mfa MFA token to use with the request + * + * @return static + */ + public static function factory(AwsClientInterface $client, $bucket, $mfa = null) + { + $batch = BatchBuilder::factory() + ->createBatchesWith(new BatchSizeDivisor(1000)) + ->transferWith(new DeleteObjectsTransfer($client, $bucket, $mfa)) + ->build(); + + return new static($batch); + } + + /** + * Add an object to be deleted + * + * @param string $key Key of the object + * @param string $versionId VersionID of the object + * + * @return $this + */ + public function addKey($key, $versionId = null) + { + return $this->add(array( + 'Key' => $key, + 'VersionId' => $versionId + )); + } + + /** + * {@inheritdoc} + */ + public function add($item) + { + if ($item instanceof AbstractCommand && $item->getName() == 'DeleteObject') { + $item = array( + 'Key' => $item['Key'], + 'VersionId' => $item['VersionId'] + ); + } + + if (!is_array($item) || (!isset($item['Key']))) { + throw new InvalidArgumentException('Item must be a DeleteObject command or array containing a Key and VersionId key.'); + } + + return parent::add($item); + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/DeleteObjectsTransfer.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/DeleteObjectsTransfer.php new file mode 100644 index 0000000..5918ff1 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/DeleteObjectsTransfer.php @@ -0,0 +1,133 @@ +client = $client; + $this->bucket = $bucket; + $this->mfa = $mfa; + } + + /** + * Set a new MFA token value + * + * @param string $token MFA token + * + * @return $this + */ + public function setMfa($token) + { + $this->mfa = $token; + + return $this; + } + + /** + * {@inheritdoc} + * @throws OverflowException if a batch has more than 1000 items + * @throws InvalidArgumentException when an invalid batch item is encountered + */ + public function transfer(array $batch) + { + if (empty($batch)) { + return; + } + + if (count($batch) > 1000) { + throw new OverflowException('Batches should be divided into chunks of no larger than 1000 keys'); + } + + $del = array(); + $command = $this->client->getCommand('DeleteObjects', array( + 'Bucket' => $this->bucket, + Ua::OPTION => Ua::BATCH + )); + + if ($this->mfa) { + $command->getRequestHeaders()->set('x-amz-mfa', $this->mfa); + } + + foreach ($batch as $object) { + // Ensure that the batch item is valid + if (!is_array($object) || !isset($object['Key'])) { + throw new InvalidArgumentException('Invalid batch item encountered: ' . var_export($batch, true)); + } + $del[] = array( + 'Key' => $object['Key'], + 'VersionId' => isset($object['VersionId']) ? $object['VersionId'] : null + ); + } + + $command['Objects'] = $del; + + $command->execute(); + $this->processResponse($command); + } + + /** + * Process the response of the DeleteMultipleObjects request + * + * @paramCommandInterface $command Command executed + */ + protected function processResponse(CommandInterface $command) + { + $result = $command->getResult(); + + // Ensure that the objects were deleted successfully + if (!empty($result['Errors'])) { + $errors = $result['Errors']; + throw new DeleteMultipleObjectsException($errors); + } + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/Grant.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/Grant.php new file mode 100644 index 0000000..2e35f05 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/Grant.php @@ -0,0 +1,139 @@ + 'GrantRead', + Permission::WRITE => 'GrantWrite', + Permission::READ_ACP => 'GrantReadACP', + Permission::WRITE_ACP => 'GrantWriteACP', + Permission::FULL_CONTROL => 'GrantFullControl' + ); + + /** + * @var Grantee The grantee affected by the grant + */ + protected $grantee; + + /** + * @var string The permission set by the grant + */ + protected $permission; + + /** + * Constructs an ACL + * + * @param Grantee $grantee Affected grantee + * @param string $permission Permission applied + */ + public function __construct(Grantee $grantee, $permission) + { + $this->setGrantee($grantee); + $this->setPermission($permission); + } + + /** + * Set the grantee affected by the grant + * + * @param Grantee $grantee Affected grantee + * + * @return $this + */ + public function setGrantee(Grantee $grantee) + { + $this->grantee = $grantee; + + return $this; + } + + /** + * Get the grantee affected by the grant + * + * @return Grantee + */ + public function getGrantee() + { + return $this->grantee; + } + + /** + * Set the permission set by the grant + * + * @param string $permission Permission applied + * + * @return $this + * + * @throws InvalidArgumentException + */ + public function setPermission($permission) + { + $valid = Permission::values(); + if (!in_array($permission, $valid)) { + throw new InvalidArgumentException('The permission must be one of ' + . 'the following: ' . implode(', ', $valid) . '.'); + } + + $this->permission = $permission; + + return $this; + } + + /** + * Get the permission set by the grant + * + * @return string + */ + public function getPermission() + { + return $this->permission; + } + + /** + * Returns an array of the operation parameter and value to set on the operation + * + * @return array + */ + public function getParameterArray() + { + return array( + self::$parameterMap[$this->permission] => $this->grantee->getHeaderValue() + ); + } + + /** + * {@inheritdoc} + */ + public function toArray() + { + return array( + 'Grantee' => $this->grantee->toArray(), + 'Permission' => $this->permission + ); + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/Grantee.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/Grantee.php new file mode 100644 index 0000000..7634b84 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/Grantee.php @@ -0,0 +1,245 @@ + 'id', + GranteeType::EMAIL => 'emailAddress', + GranteeType::GROUP => 'uri' + ); + + /** + * @var string The account ID, email, or URL identifying the grantee + */ + protected $id; + + /** + * @var string The display name of the grantee + */ + protected $displayName; + + /** + * @var string The type of the grantee (CanonicalUser or Group) + */ + protected $type; + + /** + * Constructs a Grantee + * + * @param string $id Grantee identifier + * @param string $displayName Grantee display name + * @param string $expectedType The expected type of the grantee + */ + public function __construct($id, $displayName = null, $expectedType = null) + { + $this->type = GranteeType::USER; + $this->setId($id, $expectedType); + $this->setDisplayName($displayName); + } + + /** + * Sets the account ID, email, or URL identifying the grantee + * + * @param string $id Grantee identifier + * @param string $expectedType The expected type of the grantee + * + * @return Grantee + * + * @throws UnexpectedValueException if $expectedType is set and the grantee + * is not of that type after instantiation + * @throws InvalidArgumentException when the ID provided is not a string + */ + public function setId($id, $expectedType = null) + { + if (in_array($id, Group::values())) { + $this->type = GranteeType::GROUP; + } elseif (!is_string($id)) { + throw new InvalidArgumentException('The grantee ID must be provided as a string value.'); + } + + if (strpos($id, '@') !== false) { + $this->type = GranteeType::EMAIL; + } + + if ($expectedType && $expectedType !== $this->type) { + throw new UnexpectedValueException('The type of the grantee after ' + . 'setting the ID did not match the specified, expected type "' + . $expectedType . '" but received "' . $this->type . '".'); + } + + $this->id = $id; + + return $this; + } + + /** + * Gets the grantee identifier + * + * @return string + */ + public function getId() + { + return $this->id; + } + + /** + * Gets the grantee email address (if it is set) + * + * @return null|string + */ + public function getEmailAddress() + { + return $this->isAmazonCustomerByEmail() ? $this->id : null; + } + + /** + * Gets the grantee URI (if it is set) + * + * @return null|string + */ + public function getGroupUri() + { + return $this->isGroup() ? $this->id : null; + } + + /** + * Sets the display name of the grantee + * + * @param string $displayName Grantee name + * + * @return Grantee + * + * @throws LogicException when the grantee type not CanonicalUser + */ + public function setDisplayName($displayName) + { + if ($this->type === GranteeType::USER) { + if (empty($displayName) || !is_string($displayName)) { + $displayName = $this->id; + } + $this->displayName = $displayName; + } else { + if ($displayName) { + throw new LogicException('The display name can only be set ' + . 'for grantees specified by ID.'); + } + } + + return $this; + } + + /** + * Gets the grantee display name + * + * @return string + */ + public function getDisplayName() + { + return $this->displayName; + } + + /** + * Gets the grantee type (determined by ID) + * + * @return string + */ + public function getType() + { + return $this->type; + } + + /** + * Returns true if this grantee object represents a canonical user by ID + * + * @return bool + */ + public function isCanonicalUser() + { + return ($this->type === GranteeType::USER); + } + + /** + * Returns true if this grantee object represents a customer by email + * + * @return bool + */ + public function isAmazonCustomerByEmail() + { + return ($this->type === GranteeType::EMAIL); + } + + /** + * Returns true if this grantee object represents a group by URL + * + * @return bool + */ + public function isGroup() + { + return ($this->type === GranteeType::GROUP); + } + + /** + * Returns the value used in headers to specify this grantee + * + * @return string + */ + public function getHeaderValue() + { + $key = static::$headerMap[$this->type]; + + return "{$key}=\"{$this->id}\""; + } + + /** + * {@inheritdoc} + */ + public function toArray() + { + $result = array( + 'Type' => $this->type + ); + + switch ($this->type) { + case GranteeType::USER: + $result['ID'] = $this->id; + $result['DisplayName'] = $this->displayName; + break; + case GranteeType::EMAIL: + $result['EmailAddress'] = $this->id; + break; + case GranteeType::GROUP: + $result['URI'] = $this->id; + } + + return $result; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/MultipartUpload/AbstractTransfer.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/MultipartUpload/AbstractTransfer.php new file mode 100644 index 0000000..b1a5734 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/MultipartUpload/AbstractTransfer.php @@ -0,0 +1,103 @@ +options = array_replace(array( + 'min_part_size' => self::MIN_PART_SIZE, + 'part_md5' => true + ), $this->options); + + // Make sure the part size can be calculated somehow + if (!$this->options['min_part_size'] && !$this->source->getContentLength()) { + throw new RuntimeException('The ContentLength of the data source could not be determined, and no ' + . 'min_part_size option was provided'); + } + } + + /** + * {@inheritdoc} + */ + protected function calculatePartSize() + { + $partSize = $this->source->getContentLength() + ? (int) ceil(($this->source->getContentLength() / self::MAX_PARTS)) + : self::MIN_PART_SIZE; + $partSize = max($this->options['min_part_size'], $partSize); + $partSize = min($partSize, self::MAX_PART_SIZE); + $partSize = max($partSize, self::MIN_PART_SIZE); + + return $partSize; + } + + /** + * {@inheritdoc} + */ + protected function complete() + { + /** @var UploadPart $part */ + $parts = array(); + foreach ($this->state as $part) { + $parts[] = array( + 'PartNumber' => $part->getPartNumber(), + 'ETag' => $part->getETag(), + ); + } + + $params = $this->state->getUploadId()->toParams(); + $params[Ua::OPTION] = Ua::MULTIPART_UPLOAD; + $params['Parts'] = $parts; + $command = $this->client->getCommand('CompleteMultipartUpload', $params); + + return $command->getResult(); + } + + /** + * {@inheritdoc} + */ + protected function getAbortCommand() + { + $params = $this->state->getUploadId()->toParams(); + $params[Ua::OPTION] = Ua::MULTIPART_UPLOAD; + + /** @var OperationCommand $command */ + $command = $this->client->getCommand('AbortMultipartUpload', $params); + + return $command; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/MultipartUpload/ParallelTransfer.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/MultipartUpload/ParallelTransfer.php new file mode 100644 index 0000000..b42c3c4 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/MultipartUpload/ParallelTransfer.php @@ -0,0 +1,124 @@ +source->isLocal() || $this->source->getWrapper() != 'plainfile') { + throw new RuntimeException('The source data must be a local file stream when uploading in parallel.'); + } + + if (empty($this->options['concurrency'])) { + throw new RuntimeException('The `concurrency` option must be specified when instantiating.'); + } + } + + /** + * {@inheritdoc} + */ + protected function transfer() + { + $totalParts = (int) ceil($this->source->getContentLength() / $this->partSize); + $concurrency = min($totalParts, $this->options['concurrency']); + $partsToSend = $this->prepareParts($concurrency); + $eventData = $this->getEventData(); + + while (!$this->stopped && count($this->state) < $totalParts) { + + $currentTotal = count($this->state); + $commands = array(); + + for ($i = 0; $i < $concurrency && $i + $currentTotal < $totalParts; $i++) { + + // Move the offset to the correct position + $partsToSend[$i]->setOffset(($currentTotal + $i) * $this->partSize); + + // @codeCoverageIgnoreStart + if ($partsToSend[$i]->getContentLength() == 0) { + break; + } + // @codeCoverageIgnoreEnd + + $params = $this->state->getUploadId()->toParams(); + $eventData['command'] = $this->client->getCommand('UploadPart', array_replace($params, array( + 'PartNumber' => count($this->state) + 1 + $i, + 'Body' => $partsToSend[$i], + 'ContentMD5' => (bool) $this->options['part_md5'], + Ua::OPTION => Ua::MULTIPART_UPLOAD + ))); + $commands[] = $eventData['command']; + // Notify any listeners of the part upload + $this->dispatch(self::BEFORE_PART_UPLOAD, $eventData); + } + + // Allow listeners to stop the transfer if needed + if ($this->stopped) { + break; + } + + // Execute each command, iterate over the results, and add to the transfer state + /** @var \Guzzle\Service\Command\OperationCommand $command */ + foreach ($this->client->execute($commands) as $command) { + $this->state->addPart(UploadPart::fromArray(array( + 'PartNumber' => $command['PartNumber'], + 'ETag' => $command->getResponse()->getEtag(), + 'Size' => (int) $command->getRequest()->getBody()->getContentLength(), + 'LastModified' => gmdate(DateFormat::RFC2822) + ))); + $eventData['command'] = $command; + // Notify any listeners the the part was uploaded + $this->dispatch(self::AFTER_PART_UPLOAD, $eventData); + } + } + } + + /** + * Prepare the entity body handles to use while transferring + * + * @param int $concurrency Number of parts to prepare + * + * @return array Parts to send + */ + protected function prepareParts($concurrency) + { + $url = $this->source->getUri(); + // Use the source EntityBody as the first part + $parts = array(new ReadLimitEntityBody($this->source, $this->partSize)); + // Open EntityBody handles for each part to upload in parallel + for ($i = 1; $i < $concurrency; $i++) { + $parts[] = new ReadLimitEntityBody(new EntityBody(fopen($url, 'r')), $this->partSize); + } + + return $parts; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/MultipartUpload/SerialTransfer.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/MultipartUpload/SerialTransfer.php new file mode 100644 index 0000000..2840dd5 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/MultipartUpload/SerialTransfer.php @@ -0,0 +1,86 @@ +stopped && !$this->source->isConsumed()) { + + if ($this->source->getContentLength() && $this->source->isSeekable()) { + // If the stream is seekable and the Content-Length known, then stream from the data source + $body = new ReadLimitEntityBody($this->source, $this->partSize, $this->source->ftell()); + } else { + // We need to read the data source into a temporary buffer before streaming + $body = EntityBody::factory(); + while ($body->getContentLength() < $this->partSize + && $body->write( + $this->source->read(max(1, min(10 * Size::KB, $this->partSize - $body->getContentLength()))) + )); + } + + // @codeCoverageIgnoreStart + if ($body->getContentLength() == 0) { + break; + } + // @codeCoverageIgnoreEnd + + $params = $this->state->getUploadId()->toParams(); + $command = $this->client->getCommand('UploadPart', array_replace($params, array( + 'PartNumber' => count($this->state) + 1, + 'Body' => $body, + 'ContentMD5' => (bool) $this->options['part_md5'], + Ua::OPTION => Ua::MULTIPART_UPLOAD + ))); + + // Notify observers that the part is about to be uploaded + $eventData = $this->getEventData(); + $eventData['command'] = $command; + $this->dispatch(self::BEFORE_PART_UPLOAD, $eventData); + + // Allow listeners to stop the transfer if needed + if ($this->stopped) { + break; + } + + $response = $command->getResponse(); + + $this->state->addPart(UploadPart::fromArray(array( + 'PartNumber' => $command['PartNumber'], + 'ETag' => $response->getEtag(), + 'Size' => $body->getContentLength(), + 'LastModified' => gmdate(DateFormat::RFC2822) + ))); + + // Notify observers that the part was uploaded + $this->dispatch(self::AFTER_PART_UPLOAD, $eventData); + } + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/MultipartUpload/TransferState.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/MultipartUpload/TransferState.php new file mode 100644 index 0000000..c63663f --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/MultipartUpload/TransferState.php @@ -0,0 +1,41 @@ +getIterator('ListParts', $uploadId->toParams()) as $part) { + $transferState->addPart(UploadPart::fromArray($part)); + } + + return $transferState; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/MultipartUpload/UploadBuilder.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/MultipartUpload/UploadBuilder.php new file mode 100644 index 0000000..e30f23a --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/MultipartUpload/UploadBuilder.php @@ -0,0 +1,297 @@ +setOption('Bucket', $bucket); + } + + /** + * Set the key of the object + * + * @param string $key Key of the object to upload + * + * @return $this + */ + public function setKey($key) + { + return $this->setOption('Key', $key); + } + + /** + * Set the minimum acceptable part size + * + * @param int $minSize Minimum acceptable part size in bytes + * + * @return $this + */ + public function setMinPartSize($minSize) + { + $this->minPartSize = (int) max((int) $minSize, AbstractTransfer::MIN_PART_SIZE); + + return $this; + } + + /** + * Set the concurrency level to use when uploading parts. This affects how + * many parts are uploaded in parallel. You must use a local file as your + * data source when using a concurrency greater than 1 + * + * @param int $concurrency Concurrency level + * + * @return $this + */ + public function setConcurrency($concurrency) + { + $this->concurrency = $concurrency; + + return $this; + } + + /** + * Explicitly set the MD5 hash of the entire body + * + * @param string $md5 MD5 hash of the entire body + * + * @return $this + */ + public function setMd5($md5) + { + $this->md5 = $md5; + + return $this; + } + + /** + * Set to true to have the builder calculate the MD5 hash of the entire data + * source before initiating a multipart upload (this could be an expensive + * operation). This setting can ony be used with seekable data sources. + * + * @param bool $calculateMd5 Set to true to calculate the MD5 hash of the body + * + * @return $this + */ + public function calculateMd5($calculateMd5) + { + $this->calculateEntireMd5 = (bool) $calculateMd5; + + return $this; + } + + /** + * Specify whether or not to calculate the MD5 hash of each uploaded part. + * This setting defaults to true. + * + * @param bool $usePartMd5 Set to true to calculate the MD5 has of each part + * + * @return $this + */ + public function calculatePartMd5($usePartMd5) + { + $this->calculatePartMd5 = (bool) $usePartMd5; + + return $this; + } + + /** + * Set the ACP to use on the object + * + * @param Acp $acp ACP to set on the object + * + * @return $this + */ + public function setAcp(Acp $acp) + { + return $this->setOption('ACP', $acp); + } + + /** + * Set an option to pass to the initial CreateMultipartUpload operation + * + * @param string $name Option name + * @param string $value Option value + * + * @return $this + */ + public function setOption($name, $value) + { + $this->commandOptions[$name] = $value; + + return $this; + } + + /** + * Add an array of options to pass to the initial CreateMultipartUpload operation + * + * @param array $options Array of CreateMultipartUpload operation parameters + * + * @return $this + */ + public function addOptions(array $options) + { + $this->commandOptions = array_replace($this->commandOptions, $options); + + return $this; + } + + /** + * Set an array of transfer options to apply to the upload transfer object + * + * @param array $options Transfer options + * + * @return $this + */ + public function setTransferOptions(array $options) + { + $this->transferOptions = $options; + + return $this; + } + + /** + * {@inheritdoc} + * @throws InvalidArgumentException when attempting to resume a transfer using a non-seekable stream + * @throws InvalidArgumentException when missing required properties (bucket, key, client, source) + */ + public function build() + { + if ($this->state instanceof TransferState) { + $this->commandOptions = array_replace($this->commandOptions, $this->state->getUploadId()->toParams()); + } + + if (!isset($this->commandOptions['Bucket']) || !isset($this->commandOptions['Key']) + || !$this->client || !$this->source + ) { + throw new InvalidArgumentException('You must specify a Bucket, Key, client, and source.'); + } + + if ($this->state && !$this->source->isSeekable()) { + throw new InvalidArgumentException('You cannot resume a transfer using a non-seekable source.'); + } + + // If no state was set, then create one by initiating or loading a multipart upload + if (is_string($this->state)) { + $this->state = TransferState::fromUploadId($this->client, UploadId::fromParams(array( + 'Bucket' => $this->commandOptions['Bucket'], + 'Key' => $this->commandOptions['Key'], + 'UploadId' => $this->state + ))); + } elseif (!$this->state) { + $this->state = $this->initiateMultipartUpload(); + } + + $options = array_replace(array( + 'min_part_size' => $this->minPartSize, + 'part_md5' => (bool) $this->calculatePartMd5, + 'concurrency' => $this->concurrency + ), $this->transferOptions); + + return $this->concurrency > 1 + ? new ParallelTransfer($this->client, $this->state, $this->source, $options) + : new SerialTransfer($this->client, $this->state, $this->source, $options); + } + + /** + * {@inheritdoc} + */ + protected function initiateMultipartUpload() + { + // Determine Content-Type + if (!isset($this->commandOptions['ContentType'])) { + if ($mimeType = $this->source->getContentType()) { + $this->commandOptions['ContentType'] = $mimeType; + } + } + + $params = array_replace(array( + Ua::OPTION => Ua::MULTIPART_UPLOAD, + 'command.headers' => $this->headers, + 'Metadata' => array() + ), $this->commandOptions); + + // Calculate the MD5 hash if none was set and it is asked of the builder + if ($this->calculateEntireMd5) { + $this->md5 = $this->source->getContentMd5(); + } + + // If an MD5 is specified, then add it to the custom headers of the request + // so that it will be returned when downloading the object from Amazon S3 + if ($this->md5) { + $params['Metadata']['x-amz-Content-MD5'] = $this->md5; + } + + $result = $this->client->getCommand('CreateMultipartUpload', $params)->execute(); + // Create a new state based on the initiated upload + $params['UploadId'] = $result['UploadId']; + + return new TransferState(UploadId::fromParams($params)); + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/MultipartUpload/UploadId.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/MultipartUpload/UploadId.php new file mode 100644 index 0000000..9d5f384 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/MultipartUpload/UploadId.php @@ -0,0 +1,35 @@ + false, + 'Key' => false, + 'UploadId' => false + ); +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/MultipartUpload/UploadPart.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/MultipartUpload/UploadPart.php new file mode 100644 index 0000000..e0ded33 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/MultipartUpload/UploadPart.php @@ -0,0 +1,74 @@ + 'partNumber', + 'ETag' => 'eTag', + 'LastModified' => 'lastModified', + 'Size' => 'size' + ); + + /** + * @var string The ETag for this part + */ + protected $eTag; + + /** + * @var string The last modified date + */ + protected $lastModified; + + /** + * @var int The size (or content-length) in bytes of the upload body + */ + protected $size; + + /** + * @return string + */ + public function getETag() + { + return $this->eTag; + } + + /** + * @return string + */ + public function getLastModified() + { + return $this->lastModified; + } + + /** + * @return int + */ + public function getSize() + { + return $this->size; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/PostObject.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/PostObject.php new file mode 100644 index 0000000..0aa2dbc --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Model/PostObject.php @@ -0,0 +1,275 @@ + tag attributes as an array + */ + protected $formAttributes; + + /** + * @var array The form's elements as an array + */ + protected $formInputs; + + /** + * @var string The raw json policy + */ + protected $jsonPolicy; + + /** + * Constructs the PostObject + * + * The options array accepts the following keys: + * + * - acl: The access control setting to apply to the uploaded file. Accepts any of the + * CannedAcl constants + * - Cache-Control: The Cache-Control HTTP header value to apply to the uploaded file + * - Content-Disposition: The Content-Disposition HTTP header value to apply to the uploaded file + * - Content-Encoding: The Content-Encoding HTTP header value to apply to the uploaded file + * - Content-Type: The Content-Type HTTP header value to apply to the uploaded file. The default + * value is `application/octet-stream` + * - Expires: The Expires HTTP header value to apply to the uploaded file + * - key: The location where the file should be uploaded to. The default value is + * `^${filename}` which will use the name of the uploaded file + * - policy: A raw policy in JSON format. By default, the PostObject creates one for you + * - policy_callback: A callback used to modify the policy before encoding and signing it. The + * method signature for the callback should accept an array of the policy data as + * the 1st argument, (optionally) the PostObject as the 2nd argument, and return + * the policy data with the desired modifications. + * - success_action_redirect: The URI for Amazon S3 to redirect to upon successful upload + * - success_action_status: The status code for Amazon S3 to return upon successful upload + * - ttd: The expiration time for the generated upload form data + * - x-amz-meta-*: Any custom meta tag that should be set to the object + * - x-amz-server-side-encryption: The server-side encryption mechanism to use + * - x-amz-storage-class: The storage setting to apply to the object + * - x-amz-server-side​-encryption​-customer-algorithm: The SSE-C algorithm + * - x-amz-server-side​-encryption​-customer-key: The SSE-C customer secret key + * - x-amz-server-side​-encryption​-customer-key-MD5: The MD5 hash of the SSE-C customer secret key + * + * For the Cache-Control, Content-Disposition, Content-Encoding, + * Content-Type, Expires, and key options, to use a "starts-with" comparison + * instead of an equals comparison, prefix the value with a ^ (carat) + * character + * + * @param S3Client $client + * @param $bucket + * @param array $options + */ + public function __construct(S3Client $client, $bucket, array $options = array()) + { + $this->setClient($client); + $this->setBucket($bucket); + parent::__construct($options); + } + + /** + * Analyzes the provided data and turns it into useful data that can be + * consumed and used to build an upload form + * + * @return PostObject + */ + public function prepareData() + { + // Validate required options + $options = Collection::fromConfig($this->data, array( + 'ttd' => '+1 hour', + 'key' => '^${filename}', + )); + + // Format ttd option + $ttd = $options['ttd']; + $ttd = is_numeric($ttd) ? (int) $ttd : strtotime($ttd); + unset($options['ttd']); + + // If a policy or policy callback were provided, extract those from the options + $rawJsonPolicy = $options['policy']; + $policyCallback = $options['policy_callback']; + unset($options['policy'], $options['policy_callback']); + + // Setup policy document + $policy = array( + 'expiration' => gmdate(DateFormat::ISO8601_S3, $ttd), + 'conditions' => array(array('bucket' => $this->bucket)) + ); + + // Configure the endpoint/action + $url = Url::factory($this->client->getBaseUrl()); + if ($url->getScheme() === 'https' && strpos($this->bucket, '.') !== false) { + // Use path-style URLs + $url->setPath($this->bucket); + } else { + // Use virtual-style URLs + $url->setHost($this->bucket . '.' . $url->getHost()); + } + + // Setup basic form + $this->formAttributes = array( + 'action' => (string) $url, + 'method' => 'POST', + 'enctype' => 'multipart/form-data' + ); + $this->formInputs = array( + 'AWSAccessKeyId' => $this->client->getCredentials()->getAccessKeyId() + ); + + // Add success action status + $status = (int) $options->get('success_action_status'); + if ($status && in_array($status, array(200, 201, 204))) { + $this->formInputs['success_action_status'] = (string) $status; + $policy['conditions'][] = array( + 'success_action_status' => (string) $status + ); + unset($options['success_action_status']); + } + + // Add other options + foreach ($options as $key => $value) { + $value = (string) $value; + if ($value[0] === '^') { + $value = substr($value, 1); + $this->formInputs[$key] = $value; + $value = preg_replace('/\$\{(\w*)\}/', '', $value); + $policy['conditions'][] = array('starts-with', '$' . $key, $value); + } else { + $this->formInputs[$key] = $value; + $policy['conditions'][] = array($key => $value); + } + } + + // Handle the policy + $policy = is_callable($policyCallback) ? $policyCallback($policy, $this) : $policy; + $this->jsonPolicy = $rawJsonPolicy ?: json_encode($policy); + $this->applyPolicy(); + + return $this; + } + + /** + * Sets the S3 client + * + * @param S3Client $client + * + * @return PostObject + */ + public function setClient(S3Client $client) + { + $this->client = $client; + + return $this; + } + + /** + * Gets the S3 client + * + * @return S3Client + */ + public function getClient() + { + return $this->client; + } + + /** + * Sets the bucket and makes sure it is a valid bucket name + * + * @param string $bucket + * + * @return PostObject + */ + public function setBucket($bucket) + { + $this->bucket = $bucket; + + return $this; + } + + /** + * Gets the bucket name + * + * @return string + */ + public function getBucket() + { + return $this->bucket; + } + + /** + * Gets the form attributes as an array + * + * @return array + */ + public function getFormAttributes() + { + return $this->formAttributes; + } + + /** + * Gets the form inputs as an array + * + * @return array + */ + public function getFormInputs() + { + return $this->formInputs; + } + + /** + * Gets the raw JSON policy + * + * @return string + */ + public function getJsonPolicy() + { + return $this->jsonPolicy; + } + + /** + * Handles the encoding, singing, and injecting of the policy + */ + protected function applyPolicy() + { + $jsonPolicy64 = base64_encode($this->jsonPolicy); + $this->formInputs['policy'] = $jsonPolicy64; + + $this->formInputs['signature'] = base64_encode(hash_hmac( + 'sha1', + $jsonPolicy64, + $this->client->getCredentials()->getSecretKey(), + true + )); + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Resources/s3-2006-03-01.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Resources/s3-2006-03-01.php new file mode 100644 index 0000000..381a410 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Resources/s3-2006-03-01.php @@ -0,0 +1,5769 @@ + '2006-03-01', + 'endpointPrefix' => 's3', + 'serviceFullName' => 'Amazon Simple Storage Service', + 'serviceAbbreviation' => 'Amazon S3', + 'serviceType' => 'rest-xml', + 'timestampFormat' => 'rfc822', + 'globalEndpoint' => 's3.amazonaws.com', + 'signatureVersion' => 's3', + 'namespace' => 'S3', + 'regions' => array( + 'us-east-1' => array( + 'http' => true, + 'https' => true, + 'hostname' => 's3.amazonaws.com', + ), + 'us-west-1' => array( + 'http' => true, + 'https' => true, + 'hostname' => 's3-us-west-1.amazonaws.com', + ), + 'us-west-2' => array( + 'http' => true, + 'https' => true, + 'hostname' => 's3-us-west-2.amazonaws.com', + ), + 'eu-west-1' => array( + 'http' => true, + 'https' => true, + 'hostname' => 's3-eu-west-1.amazonaws.com', + ), + 'eu-central-1' => array( + 'http' => true, + 'https' => true, + 'hostname' => 's3-eu-central-1.amazonaws.com', + ), + 'ap-northeast-1' => array( + 'http' => true, + 'https' => true, + 'hostname' => 's3-ap-northeast-1.amazonaws.com', + ), + 'ap-southeast-1' => array( + 'http' => true, + 'https' => true, + 'hostname' => 's3-ap-southeast-1.amazonaws.com', + ), + 'ap-southeast-2' => array( + 'http' => true, + 'https' => true, + 'hostname' => 's3-ap-southeast-2.amazonaws.com', + ), + 'sa-east-1' => array( + 'http' => true, + 'https' => true, + 'hostname' => 's3-sa-east-1.amazonaws.com', + ), + 'cn-north-1' => array( + 'http' => true, + 'https' => true, + 'hostname' => 's3.cn-north-1.amazonaws.com.cn', + ), + 'us-gov-west-1' => array( + 'http' => true, + 'https' => true, + 'hostname' => 's3-us-gov-west-1.amazonaws.com', + ), + ), + 'operations' => array( + 'AbortMultipartUpload' => array( + 'httpMethod' => 'DELETE', + 'uri' => '/{Bucket}{/Key*}', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'AbortMultipartUploadOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadAbort.html', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + 'filters' => array( + 'Aws\\S3\\S3Client::explodeKey', + ), + ), + 'UploadId' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'uploadId', + ), + 'RequestPayer' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-payer', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The specified multipart upload does not exist.', + 'class' => 'NoSuchUploadException', + ), + ), + ), + 'CompleteMultipartUpload' => array( + 'httpMethod' => 'POST', + 'uri' => '/{Bucket}{/Key*}', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'CompleteMultipartUploadOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadComplete.html', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'CompleteMultipartUpload', + 'namespaces' => array( + 'http://s3.amazonaws.com/doc/2006-03-01/', + ), + ), + ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + 'filters' => array( + 'Aws\\S3\\S3Client::explodeKey', + ), + ), + 'Parts' => array( + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'CompletedPart', + 'type' => 'object', + 'sentAs' => 'Part', + 'properties' => array( + 'ETag' => array( + 'type' => 'string', + ), + 'PartNumber' => array( + 'type' => 'numeric', + ), + ), + ), + ), + 'UploadId' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'uploadId', + ), + 'RequestPayer' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-payer', + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + ), + 'CopyObject' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}{/Key*}', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'CopyObjectOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'CopyObjectRequest', + 'namespaces' => array( + 'http://s3.amazonaws.com/doc/2006-03-01/', + ), + ), + ), + 'parameters' => array( + 'ACL' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-acl', + ), + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'CacheControl' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Cache-Control', + ), + 'ContentDisposition' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Disposition', + ), + 'ContentEncoding' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Encoding', + ), + 'ContentLanguage' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Language', + ), + 'ContentType' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Type', + ), + 'CopySource' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-copy-source', + ), + 'CopySourceIfMatch' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-copy-source-if-match', + ), + 'CopySourceIfModifiedSince' => array( + 'type' => array( + 'object', + 'string', + 'integer', + ), + 'format' => 'date-time-http', + 'location' => 'header', + 'sentAs' => 'x-amz-copy-source-if-modified-since', + ), + 'CopySourceIfNoneMatch' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-copy-source-if-none-match', + ), + 'CopySourceIfUnmodifiedSince' => array( + 'type' => array( + 'object', + 'string', + 'integer', + ), + 'format' => 'date-time-http', + 'location' => 'header', + 'sentAs' => 'x-amz-copy-source-if-unmodified-since', + ), + 'Expires' => array( + 'type' => array( + 'object', + 'string', + 'integer', + ), + 'format' => 'date-time-http', + 'location' => 'header', + ), + 'GrantFullControl' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-grant-full-control', + ), + 'GrantRead' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-grant-read', + ), + 'GrantReadACP' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-grant-read-acp', + ), + 'GrantWriteACP' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-grant-write-acp', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + 'filters' => array( + 'Aws\\S3\\S3Client::explodeKey', + ), + ), + 'Metadata' => array( + 'type' => 'object', + 'location' => 'header', + 'sentAs' => 'x-amz-meta-', + 'additionalProperties' => array( + 'type' => 'string', + ), + ), + 'MetadataDirective' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-metadata-directive', + ), + 'ServerSideEncryption' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption', + ), + 'StorageClass' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-storage-class', + ), + 'WebsiteRedirectLocation' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-website-redirect-location', + ), + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm', + ), + 'SSECustomerKey' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-key', + ), + 'SSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-key-MD5', + ), + 'SSEKMSKeyId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-aws-kms-key-id', + ), + 'CopySourceSSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-copy-source-server-side-encryption-customer-algorithm', + ), + 'CopySourceSSECustomerKey' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-copy-source-server-side-encryption-customer-key', + ), + 'CopySourceSSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-copy-source-server-side-encryption-customer-key-MD5', + ), + 'RequestPayer' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-payer', + ), + 'ACP' => array( + 'type' => 'object', + 'additionalProperties' => true, + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The source object of the COPY operation is not in the active tier and is only stored in Amazon Glacier.', + 'class' => 'ObjectNotInActiveTierErrorException', + ), + ), + ), + 'CreateBucket' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'CreateBucketOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUT.html', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'CreateBucketConfiguration', + 'namespaces' => array( + 'http://s3.amazonaws.com/doc/2006-03-01/', + ), + ), + ), + 'parameters' => array( + 'ACL' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-acl', + ), + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'LocationConstraint' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'GrantFullControl' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-grant-full-control', + ), + 'GrantRead' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-grant-read', + ), + 'GrantReadACP' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-grant-read-acp', + ), + 'GrantWrite' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-grant-write', + ), + 'GrantWriteACP' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-grant-write-acp', + ), + 'ACP' => array( + 'type' => 'object', + 'additionalProperties' => true, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The requested bucket name is not available. The bucket namespace is shared by all users of the system. Please select a different name and try again.', + 'class' => 'BucketAlreadyExistsException', + ), + ), + ), + 'CreateMultipartUpload' => array( + 'httpMethod' => 'POST', + 'uri' => '/{Bucket}{/Key*}?uploads', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'CreateMultipartUploadOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'CreateMultipartUploadRequest', + 'namespaces' => array( + 'http://s3.amazonaws.com/doc/2006-03-01/', + ), + ), + ), + 'parameters' => array( + 'ACL' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-acl', + ), + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'CacheControl' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Cache-Control', + ), + 'ContentDisposition' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Disposition', + ), + 'ContentEncoding' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Encoding', + ), + 'ContentLanguage' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Language', + ), + 'ContentType' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Type', + ), + 'Expires' => array( + 'type' => array( + 'object', + 'string', + 'integer', + ), + 'format' => 'date-time-http', + 'location' => 'header', + ), + 'GrantFullControl' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-grant-full-control', + ), + 'GrantRead' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-grant-read', + ), + 'GrantReadACP' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-grant-read-acp', + ), + 'GrantWriteACP' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-grant-write-acp', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + 'filters' => array( + 'Aws\\S3\\S3Client::explodeKey', + ), + ), + 'Metadata' => array( + 'type' => 'object', + 'location' => 'header', + 'sentAs' => 'x-amz-meta-', + 'additionalProperties' => array( + 'type' => 'string', + ), + ), + 'ServerSideEncryption' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption', + ), + 'StorageClass' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-storage-class', + ), + 'WebsiteRedirectLocation' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-website-redirect-location', + ), + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm', + ), + 'SSECustomerKey' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-key', + ), + 'SSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-key-MD5', + ), + 'SSEKMSKeyId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-aws-kms-key-id', + ), + 'RequestPayer' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-payer', + ), + 'ACP' => array( + 'type' => 'object', + 'additionalProperties' => true, + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + ), + 'DeleteBucket' => array( + 'httpMethod' => 'DELETE', + 'uri' => '/{Bucket}', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'DeleteBucketOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketDELETE.html', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + ), + ), + 'DeleteBucketCors' => array( + 'httpMethod' => 'DELETE', + 'uri' => '/{Bucket}?cors', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'DeleteBucketCorsOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketDELETEcors.html', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + ), + ), + 'DeleteBucketLifecycle' => array( + 'httpMethod' => 'DELETE', + 'uri' => '/{Bucket}?lifecycle', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'DeleteBucketLifecycleOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketDELETElifecycle.html', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + ), + ), + 'DeleteBucketPolicy' => array( + 'httpMethod' => 'DELETE', + 'uri' => '/{Bucket}?policy', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'DeleteBucketPolicyOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketDELETEpolicy.html', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + ), + ), + 'DeleteBucketReplication' => array( + 'httpMethod' => 'DELETE', + 'uri' => '/{Bucket}?replication', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'DeleteBucketReplicationOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + ), + ), + 'DeleteBucketTagging' => array( + 'httpMethod' => 'DELETE', + 'uri' => '/{Bucket}?tagging', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'DeleteBucketTaggingOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketDELETEtagging.html', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + ), + ), + 'DeleteBucketWebsite' => array( + 'httpMethod' => 'DELETE', + 'uri' => '/{Bucket}?website', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'DeleteBucketWebsiteOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketDELETEwebsite.html', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + ), + ), + 'DeleteObject' => array( + 'httpMethod' => 'DELETE', + 'uri' => '/{Bucket}{/Key*}', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'DeleteObjectOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + 'filters' => array( + 'Aws\\S3\\S3Client::explodeKey', + ), + ), + 'MFA' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-mfa', + ), + 'VersionId' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'versionId', + ), + 'RequestPayer' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-payer', + ), + ), + ), + 'DeleteObjects' => array( + 'httpMethod' => 'POST', + 'uri' => '/{Bucket}?delete', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'DeleteObjectsOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/multiobjectdeleteapi.html', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'Delete', + 'namespaces' => array( + 'http://s3.amazonaws.com/doc/2006-03-01/', + ), + ), + 'contentMd5' => true, + ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Objects' => array( + 'required' => true, + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'ObjectIdentifier', + 'type' => 'object', + 'sentAs' => 'Object', + 'properties' => array( + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'minLength' => 1, + ), + 'VersionId' => array( + 'type' => 'string', + ), + ), + ), + ), + 'Quiet' => array( + 'type' => 'boolean', + 'format' => 'boolean-string', + 'location' => 'xml', + ), + 'MFA' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-mfa', + ), + 'RequestPayer' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-payer', + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + ), + 'GetBucketAcl' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}?acl', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'GetBucketAclOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETacl.html', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + ), + 'GetBucketCors' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}?cors', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'GetBucketCorsOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETcors.html', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + ), + 'GetBucketLifecycle' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}?lifecycle', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'GetBucketLifecycleOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETlifecycle.html', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + ), + 'GetBucketLifecycleConfiguration' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}?lifecycle', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'GetBucketLifecycleConfigurationOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + ), + 'GetBucketLocation' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}?location', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'GetBucketLocationOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETlocation.html', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + ), + ), + 'GetBucketLogging' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}?logging', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'GetBucketLoggingOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETlogging.html', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + ), + 'GetBucketNotification' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}?notification', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'NotificationConfigurationDeprecated', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETnotification.html', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + ), + 'GetBucketNotificationConfiguration' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}?notification', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'NotificationConfiguration', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + ), + 'GetBucketPolicy' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}?policy', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'GetBucketPolicyOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETpolicy.html', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + ), + ), + 'GetBucketReplication' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}?replication', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'GetBucketReplicationOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + ), + 'GetBucketRequestPayment' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}?requestPayment', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'GetBucketRequestPaymentOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTrequestPaymentGET.html', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + ), + 'GetBucketTagging' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}?tagging', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'GetBucketTaggingOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETtagging.html', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + ), + 'GetBucketVersioning' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}?versioning', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'GetBucketVersioningOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETversioningStatus.html', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + ), + 'GetBucketWebsite' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}?website', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'GetBucketWebsiteOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETwebsite.html', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + ), + 'GetObject' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}{/Key*}', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'GetObjectOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'IfMatch' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'If-Match', + ), + 'IfModifiedSince' => array( + 'type' => array( + 'object', + 'string', + 'integer', + ), + 'format' => 'date-time-http', + 'location' => 'header', + 'sentAs' => 'If-Modified-Since', + ), + 'IfNoneMatch' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'If-None-Match', + ), + 'IfUnmodifiedSince' => array( + 'type' => array( + 'object', + 'string', + 'integer', + ), + 'format' => 'date-time-http', + 'location' => 'header', + 'sentAs' => 'If-Unmodified-Since', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + 'filters' => array( + 'Aws\\S3\\S3Client::explodeKey', + ), + ), + 'Range' => array( + 'type' => 'string', + 'location' => 'header', + ), + 'ResponseCacheControl' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'response-cache-control', + ), + 'ResponseContentDisposition' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'response-content-disposition', + ), + 'ResponseContentEncoding' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'response-content-encoding', + ), + 'ResponseContentLanguage' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'response-content-language', + ), + 'ResponseContentType' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'response-content-type', + ), + 'ResponseExpires' => array( + 'type' => array( + 'object', + 'string', + 'integer', + ), + 'format' => 'date-time-http', + 'location' => 'query', + 'sentAs' => 'response-expires', + ), + 'VersionId' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'versionId', + ), + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm', + ), + 'SSECustomerKey' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-key', + ), + 'SSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-key-MD5', + ), + 'RequestPayer' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-payer', + ), + 'SaveAs' => array( + 'location' => 'response_body', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The specified key does not exist.', + 'class' => 'NoSuchKeyException', + ), + ), + ), + 'GetObjectAcl' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}{/Key*}?acl', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'GetObjectAclOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGETacl.html', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + 'filters' => array( + 'Aws\\S3\\S3Client::explodeKey', + ), + ), + 'VersionId' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'versionId', + ), + 'RequestPayer' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-payer', + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The specified key does not exist.', + 'class' => 'NoSuchKeyException', + ), + ), + ), + 'GetObjectTorrent' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}{/Key*}?torrent', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'GetObjectTorrentOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGETtorrent.html', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + 'filters' => array( + 'Aws\\S3\\S3Client::explodeKey', + ), + ), + 'RequestPayer' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-payer', + ), + ), + ), + 'HeadBucket' => array( + 'httpMethod' => 'HEAD', + 'uri' => '/{Bucket}', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'HeadBucketOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketHEAD.html', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The specified bucket does not exist.', + 'class' => 'NoSuchBucketException', + ), + ), + ), + 'HeadObject' => array( + 'httpMethod' => 'HEAD', + 'uri' => '/{Bucket}{/Key*}', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'HeadObjectOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'IfMatch' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'If-Match', + ), + 'IfModifiedSince' => array( + 'type' => array( + 'object', + 'string', + 'integer', + ), + 'format' => 'date-time-http', + 'location' => 'header', + 'sentAs' => 'If-Modified-Since', + ), + 'IfNoneMatch' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'If-None-Match', + ), + 'IfUnmodifiedSince' => array( + 'type' => array( + 'object', + 'string', + 'integer', + ), + 'format' => 'date-time-http', + 'location' => 'header', + 'sentAs' => 'If-Unmodified-Since', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + 'filters' => array( + 'Aws\\S3\\S3Client::explodeKey', + ), + ), + 'Range' => array( + 'type' => 'string', + 'location' => 'header', + ), + 'VersionId' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'versionId', + ), + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm', + ), + 'SSECustomerKey' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-key', + ), + 'SSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-key-MD5', + ), + 'RequestPayer' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-payer', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The specified key does not exist.', + 'class' => 'NoSuchKeyException', + ), + ), + ), + 'ListBuckets' => array( + 'httpMethod' => 'GET', + 'uri' => '/', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'ListBucketsOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTServiceGET.html', + 'parameters' => array( + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + ), + 'ListMultipartUploads' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}?uploads', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'ListMultipartUploadsOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadListMPUpload.html', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Delimiter' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'delimiter', + ), + 'EncodingType' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'encoding-type', + ), + 'KeyMarker' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'key-marker', + ), + 'MaxUploads' => array( + 'type' => 'numeric', + 'location' => 'query', + 'sentAs' => 'max-uploads', + ), + 'Prefix' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'prefix', + ), + 'UploadIdMarker' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'upload-id-marker', + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + ), + 'ListObjectVersions' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}?versions', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'ListObjectVersionsOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETVersion.html', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Delimiter' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'delimiter', + ), + 'EncodingType' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'encoding-type', + ), + 'KeyMarker' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'key-marker', + ), + 'MaxKeys' => array( + 'type' => 'numeric', + 'location' => 'query', + 'sentAs' => 'max-keys', + ), + 'Prefix' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'prefix', + ), + 'VersionIdMarker' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'version-id-marker', + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + ), + 'ListObjects' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'ListObjectsOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Delimiter' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'delimiter', + ), + 'EncodingType' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'encoding-type', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'marker', + ), + 'MaxKeys' => array( + 'type' => 'numeric', + 'location' => 'query', + 'sentAs' => 'max-keys', + ), + 'Prefix' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'prefix', + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The specified bucket does not exist.', + 'class' => 'NoSuchBucketException', + ), + ), + ), + 'ListParts' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}{/Key*}', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'ListPartsOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadListParts.html', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + 'filters' => array( + 'Aws\\S3\\S3Client::explodeKey', + ), + ), + 'MaxParts' => array( + 'type' => 'numeric', + 'location' => 'query', + 'sentAs' => 'max-parts', + ), + 'PartNumberMarker' => array( + 'type' => 'numeric', + 'location' => 'query', + 'sentAs' => 'part-number-marker', + ), + 'UploadId' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'uploadId', + ), + 'RequestPayer' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-payer', + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + ), + 'PutBucketAcl' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}?acl', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'PutBucketAclOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTacl.html', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'AccessControlPolicy', + 'namespaces' => array( + 'http://s3.amazonaws.com/doc/2006-03-01/', + ), + ), + ), + 'parameters' => array( + 'ACL' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-acl', + ), + 'Grants' => array( + 'type' => 'array', + 'location' => 'xml', + 'sentAs' => 'AccessControlList', + 'items' => array( + 'name' => 'Grant', + 'type' => 'object', + 'properties' => array( + 'Grantee' => array( + 'type' => 'object', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string', + ), + 'EmailAddress' => array( + 'type' => 'string', + ), + 'ID' => array( + 'type' => 'string', + ), + 'Type' => array( + 'required' => true, + 'type' => 'string', + 'sentAs' => 'xsi:type', + 'data' => array( + 'xmlAttribute' => true, + 'xmlNamespace' => 'http://www.w3.org/2001/XMLSchema-instance', + ), + ), + 'URI' => array( + 'type' => 'string', + ), + ), + ), + 'Permission' => array( + 'type' => 'string', + ), + ), + ), + ), + 'Owner' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string', + ), + 'ID' => array( + 'type' => 'string', + ), + ), + ), + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'GrantFullControl' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-grant-full-control', + ), + 'GrantRead' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-grant-read', + ), + 'GrantReadACP' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-grant-read-acp', + ), + 'GrantWrite' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-grant-write', + ), + 'GrantWriteACP' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-grant-write-acp', + ), + 'ACP' => array( + 'type' => 'object', + 'additionalProperties' => true, + ), + ), + ), + 'PutBucketCors' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}?cors', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'PutBucketCorsOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTcors.html', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'CORSConfiguration', + 'namespaces' => array( + 'http://s3.amazonaws.com/doc/2006-03-01/', + ), + ), + 'contentMd5' => true, + ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'CORSRules' => array( + 'required' => true, + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'CORSRule', + 'type' => 'object', + 'sentAs' => 'CORSRule', + 'properties' => array( + 'AllowedHeaders' => array( + 'type' => 'array', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'AllowedHeader', + 'type' => 'string', + 'sentAs' => 'AllowedHeader', + ), + ), + 'AllowedMethods' => array( + 'required' => true, + 'type' => 'array', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'AllowedMethod', + 'type' => 'string', + 'sentAs' => 'AllowedMethod', + ), + ), + 'AllowedOrigins' => array( + 'required' => true, + 'type' => 'array', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'AllowedOrigin', + 'type' => 'string', + 'sentAs' => 'AllowedOrigin', + ), + ), + 'ExposeHeaders' => array( + 'type' => 'array', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'ExposeHeader', + 'type' => 'string', + 'sentAs' => 'ExposeHeader', + ), + ), + 'MaxAgeSeconds' => array( + 'type' => 'numeric', + ), + ), + ), + ), + ), + ), + 'PutBucketLifecycle' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}?lifecycle', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'PutBucketLifecycleOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlifecycle.html', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'LifecycleConfiguration', + 'namespaces' => array( + 'http://s3.amazonaws.com/doc/2006-03-01/', + ), + ), + 'contentMd5' => true, + ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Rules' => array( + 'required' => true, + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'Rule', + 'type' => 'object', + 'sentAs' => 'Rule', + 'properties' => array( + 'Expiration' => array( + 'type' => 'object', + 'properties' => array( + 'Date' => array( + 'type' => array( + 'object', + 'string', + 'integer', + ), + 'format' => 'date-time', + ), + 'Days' => array( + 'type' => 'numeric', + ), + ), + ), + 'ID' => array( + 'type' => 'string', + ), + 'Prefix' => array( + 'required' => true, + 'type' => 'string', + ), + 'Status' => array( + 'required' => true, + 'type' => 'string', + ), + 'Transition' => array( + 'type' => 'object', + 'properties' => array( + 'Date' => array( + 'type' => array( + 'object', + 'string', + 'integer', + ), + 'format' => 'date-time', + ), + 'Days' => array( + 'type' => 'numeric', + ), + 'StorageClass' => array( + 'type' => 'string', + ), + ), + ), + 'NoncurrentVersionTransition' => array( + 'type' => 'object', + 'properties' => array( + 'NoncurrentDays' => array( + 'type' => 'numeric', + ), + 'StorageClass' => array( + 'type' => 'string', + ), + ), + ), + 'NoncurrentVersionExpiration' => array( + 'type' => 'object', + 'properties' => array( + 'NoncurrentDays' => array( + 'type' => 'numeric', + ), + ), + ), + ), + ), + ), + ), + ), + 'PutBucketLifecycleConfiguration' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}?lifecycle', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'PutBucketLifecycleConfigurationOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'LifecycleConfiguration', + 'namespaces' => array( + 'http://s3.amazonaws.com/doc/2006-03-01/', + ), + ), + ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Rules' => array( + 'required' => true, + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'LifecycleRule', + 'type' => 'object', + 'sentAs' => 'Rule', + 'properties' => array( + 'Expiration' => array( + 'type' => 'object', + 'properties' => array( + 'Date' => array( + 'type' => array( + 'object', + 'string', + 'integer', + ), + 'format' => 'date-time-http', + ), + 'Days' => array( + 'type' => 'numeric', + ), + ), + ), + 'ID' => array( + 'type' => 'string', + ), + 'Prefix' => array( + 'required' => true, + 'type' => 'string', + ), + 'Status' => array( + 'required' => true, + 'type' => 'string', + ), + 'Transitions' => array( + 'type' => 'array', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'Transition', + 'type' => 'object', + 'sentAs' => 'Transition', + 'properties' => array( + 'Date' => array( + 'type' => array( + 'object', + 'string', + 'integer', + ), + 'format' => 'date-time-http', + ), + 'Days' => array( + 'type' => 'numeric', + ), + 'StorageClass' => array( + 'type' => 'string', + ), + ), + ), + ), + 'NoncurrentVersionTransitions' => array( + 'type' => 'array', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'NoncurrentVersionTransition', + 'type' => 'object', + 'sentAs' => 'NoncurrentVersionTransition', + 'properties' => array( + 'NoncurrentDays' => array( + 'type' => 'numeric', + ), + 'StorageClass' => array( + 'type' => 'string', + ), + ), + ), + ), + 'NoncurrentVersionExpiration' => array( + 'type' => 'object', + 'properties' => array( + 'NoncurrentDays' => array( + 'type' => 'numeric', + ), + ), + ), + ), + ), + ), + ), + ), + 'PutBucketLogging' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}?logging', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'PutBucketLoggingOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'BucketLoggingStatus', + 'namespaces' => array( + 'http://s3.amazonaws.com/doc/2006-03-01/', + ), + ), + 'xmlAllowEmpty' => true, + ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'LoggingEnabled' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'TargetBucket' => array( + 'type' => 'string', + ), + 'TargetGrants' => array( + 'type' => 'array', + 'items' => array( + 'name' => 'Grant', + 'type' => 'object', + 'properties' => array( + 'Grantee' => array( + 'type' => 'object', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string', + ), + 'EmailAddress' => array( + 'type' => 'string', + ), + 'ID' => array( + 'type' => 'string', + ), + 'Type' => array( + 'required' => true, + 'type' => 'string', + 'sentAs' => 'xsi:type', + 'data' => array( + 'xmlAttribute' => true, + 'xmlNamespace' => 'http://www.w3.org/2001/XMLSchema-instance', + ), + ), + 'URI' => array( + 'type' => 'string', + ), + ), + ), + 'Permission' => array( + 'type' => 'string', + ), + ), + ), + ), + 'TargetPrefix' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + 'PutBucketNotification' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}?notification', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'PutBucketNotificationOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTnotification.html', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'NotificationConfiguration', + 'namespaces' => array( + 'http://s3.amazonaws.com/doc/2006-03-01/', + ), + ), + 'xmlAllowEmpty' => true, + ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'TopicConfiguration' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Id' => array( + 'type' => 'string', + ), + 'Events' => array( + 'type' => 'array', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'Event', + 'type' => 'string', + ), + ), + 'Event' => array( + 'type' => 'string', + ), + 'Topic' => array( + 'type' => 'string', + ), + ), + ), + 'QueueConfiguration' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Id' => array( + 'type' => 'string', + ), + 'Event' => array( + 'type' => 'string', + ), + 'Events' => array( + 'type' => 'array', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'Event', + 'type' => 'string', + ), + ), + 'Queue' => array( + 'type' => 'string', + ), + ), + ), + 'CloudFunctionConfiguration' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Id' => array( + 'type' => 'string', + ), + 'Event' => array( + 'type' => 'string', + ), + 'Events' => array( + 'type' => 'array', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'Event', + 'type' => 'string', + ), + ), + 'CloudFunction' => array( + 'type' => 'string', + ), + 'InvocationRole' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + 'PutBucketNotificationConfiguration' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}?notification', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'PutBucketNotificationConfigurationOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'NotificationConfiguration', + 'namespaces' => array( + 'http://s3.amazonaws.com/doc/2006-03-01/', + ), + ), + ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'TopicConfigurations' => array( + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'TopicConfiguration', + 'type' => 'object', + 'sentAs' => 'TopicConfiguration', + 'properties' => array( + 'Id' => array( + 'type' => 'string', + ), + 'TopicArn' => array( + 'required' => true, + 'type' => 'string', + 'sentAs' => 'Topic', + ), + 'Events' => array( + 'required' => true, + 'type' => 'array', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'Event', + 'type' => 'string', + 'sentAs' => 'Event', + ), + ), + 'Filter' => array( + 'type' => 'object', + 'properties' => array( + 'Key' => array( + 'type' => 'object', + 'sentAs' => 'S3Key', + 'properties' => array( + 'FilterRules' => array( + 'type' => 'array', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'FilterRule', + 'type' => 'object', + 'sentAs' => 'FilterRule', + 'properties' => array( + 'Name' => array( + 'type' => 'string', + ), + 'Value' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + ), + ), + ), + ), + ), + ), + 'QueueConfigurations' => array( + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'QueueConfiguration', + 'type' => 'object', + 'sentAs' => 'QueueConfiguration', + 'properties' => array( + 'Id' => array( + 'type' => 'string', + ), + 'QueueArn' => array( + 'required' => true, + 'type' => 'string', + 'sentAs' => 'Queue', + ), + 'Events' => array( + 'required' => true, + 'type' => 'array', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'Event', + 'type' => 'string', + 'sentAs' => 'Event', + ), + ), + 'Filter' => array( + 'type' => 'object', + 'properties' => array( + 'Key' => array( + 'type' => 'object', + 'sentAs' => 'S3Key', + 'properties' => array( + 'FilterRules' => array( + 'type' => 'array', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'FilterRule', + 'type' => 'object', + 'sentAs' => 'FilterRule', + 'properties' => array( + 'Name' => array( + 'type' => 'string', + ), + 'Value' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + ), + ), + ), + ), + ), + ), + 'LambdaFunctionConfigurations' => array( + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'LambdaFunctionConfiguration', + 'type' => 'object', + 'sentAs' => 'CloudFunctionConfiguration', + 'properties' => array( + 'Id' => array( + 'type' => 'string', + ), + 'LambdaFunctionArn' => array( + 'required' => true, + 'type' => 'string', + 'sentAs' => 'CloudFunction', + ), + 'Events' => array( + 'required' => true, + 'type' => 'array', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'Event', + 'type' => 'string', + 'sentAs' => 'Event', + ), + ), + 'Filter' => array( + 'type' => 'object', + 'properties' => array( + 'Key' => array( + 'type' => 'object', + 'sentAs' => 'S3Key', + 'properties' => array( + 'FilterRules' => array( + 'type' => 'array', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'FilterRule', + 'type' => 'object', + 'sentAs' => 'FilterRule', + 'properties' => array( + 'Name' => array( + 'type' => 'string', + ), + 'Value' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + ), + ), + ), + ), + ), + ), + ), + ), + 'PutBucketPolicy' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}?policy', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'PutBucketPolicyOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTpolicy.html', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'PutBucketPolicyRequest', + 'namespaces' => array( + 'http://s3.amazonaws.com/doc/2006-03-01/', + ), + ), + ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Policy' => array( + 'required' => true, + 'type' => array( + 'string', + 'object', + ), + 'location' => 'body', + ), + ), + ), + 'PutBucketReplication' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}?replication', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'PutBucketReplicationOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'ReplicationConfiguration', + 'namespaces' => array( + 'http://s3.amazonaws.com/doc/2006-03-01/', + ), + ), + ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Role' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'xml', + ), + 'Rules' => array( + 'required' => true, + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'ReplicationRule', + 'type' => 'object', + 'sentAs' => 'Rule', + 'properties' => array( + 'ID' => array( + 'type' => 'string', + ), + 'Prefix' => array( + 'required' => true, + 'type' => 'string', + ), + 'Status' => array( + 'required' => true, + 'type' => 'string', + ), + 'Destination' => array( + 'required' => true, + 'type' => 'object', + 'properties' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + ), + 'StorageClass' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + ), + ), + ), + 'PutBucketRequestPayment' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}?requestPayment', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'PutBucketRequestPaymentOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTrequestPaymentPUT.html', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'RequestPaymentConfiguration', + 'namespaces' => array( + 'http://s3.amazonaws.com/doc/2006-03-01/', + ), + ), + ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Payer' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'PutBucketTagging' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}?tagging', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'PutBucketTaggingOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTtagging.html', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'Tagging', + 'namespaces' => array( + 'http://s3.amazonaws.com/doc/2006-03-01/', + ), + ), + 'contentMd5' => true, + ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'TagSet' => array( + 'required' => true, + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'Tag', + 'type' => 'object', + 'properties' => array( + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'minLength' => 1, + ), + 'Value' => array( + 'required' => true, + 'type' => 'string', + ), + ), + ), + ), + ), + ), + 'PutBucketVersioning' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}?versioning', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'PutBucketVersioningOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTVersioningStatus.html', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'VersioningConfiguration', + 'namespaces' => array( + 'http://s3.amazonaws.com/doc/2006-03-01/', + ), + ), + ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'MFA' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-mfa', + ), + 'MFADelete' => array( + 'type' => 'string', + 'location' => 'xml', + 'sentAs' => 'MfaDelete', + ), + 'Status' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'PutBucketWebsite' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}?website', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'PutBucketWebsiteOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTwebsite.html', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'WebsiteConfiguration', + 'namespaces' => array( + 'http://s3.amazonaws.com/doc/2006-03-01/', + ), + ), + 'xmlAllowEmpty' => true, + ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'ErrorDocument' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'minLength' => 1, + ), + ), + ), + 'IndexDocument' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Suffix' => array( + 'required' => true, + 'type' => 'string', + ), + ), + ), + 'RedirectAllRequestsTo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HostName' => array( + 'required' => true, + 'type' => 'string', + ), + 'Protocol' => array( + 'type' => 'string', + ), + ), + ), + 'RoutingRules' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'RoutingRule', + 'type' => 'object', + 'properties' => array( + 'Condition' => array( + 'type' => 'object', + 'properties' => array( + 'HttpErrorCodeReturnedEquals' => array( + 'type' => 'string', + ), + 'KeyPrefixEquals' => array( + 'type' => 'string', + ), + ), + ), + 'Redirect' => array( + 'required' => true, + 'type' => 'object', + 'properties' => array( + 'HostName' => array( + 'type' => 'string', + ), + 'HttpRedirectCode' => array( + 'type' => 'string', + ), + 'Protocol' => array( + 'type' => 'string', + ), + 'ReplaceKeyPrefixWith' => array( + 'type' => 'string', + ), + 'ReplaceKeyWith' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + ), + ), + ), + 'PutObject' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}{/Key*}', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'PutObjectOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'PutObjectRequest', + 'namespaces' => array( + 'http://s3.amazonaws.com/doc/2006-03-01/', + ), + ), + ), + 'parameters' => array( + 'ACL' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-acl', + ), + 'Body' => array( + 'type' => array( + 'string', + 'object', + ), + 'location' => 'body', + ), + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'CacheControl' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Cache-Control', + ), + 'ContentDisposition' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Disposition', + ), + 'ContentEncoding' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Encoding', + ), + 'ContentLanguage' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Language', + ), + 'ContentLength' => array( + 'type' => 'numeric', + 'location' => 'header', + 'sentAs' => 'Content-Length', + ), + 'ContentMD5' => array( + 'type' => array( + 'string', + 'boolean', + ), + 'location' => 'header', + 'sentAs' => 'Content-MD5', + ), + 'ContentType' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Type', + ), + 'Expires' => array( + 'type' => array( + 'object', + 'string', + 'integer', + ), + 'format' => 'date-time-http', + 'location' => 'header', + ), + 'GrantFullControl' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-grant-full-control', + ), + 'GrantRead' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-grant-read', + ), + 'GrantReadACP' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-grant-read-acp', + ), + 'GrantWriteACP' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-grant-write-acp', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + 'filters' => array( + 'Aws\\S3\\S3Client::explodeKey', + ), + ), + 'Metadata' => array( + 'type' => 'object', + 'location' => 'header', + 'sentAs' => 'x-amz-meta-', + 'additionalProperties' => array( + 'type' => 'string', + ), + ), + 'ServerSideEncryption' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption', + ), + 'StorageClass' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-storage-class', + ), + 'WebsiteRedirectLocation' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-website-redirect-location', + ), + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm', + ), + 'SSECustomerKey' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-key', + ), + 'SSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-key-MD5', + ), + 'SSEKMSKeyId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-aws-kms-key-id', + ), + 'RequestPayer' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-payer', + ), + 'ACP' => array( + 'type' => 'object', + 'additionalProperties' => true, + ), + ), + ), + 'PutObjectAcl' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}{/Key*}?acl', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'PutObjectAclOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUTacl.html', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'AccessControlPolicy', + 'namespaces' => array( + 'http://s3.amazonaws.com/doc/2006-03-01/', + ), + ), + ), + 'parameters' => array( + 'ACL' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-acl', + ), + 'Grants' => array( + 'type' => 'array', + 'location' => 'xml', + 'sentAs' => 'AccessControlList', + 'items' => array( + 'name' => 'Grant', + 'type' => 'object', + 'properties' => array( + 'Grantee' => array( + 'type' => 'object', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string', + ), + 'EmailAddress' => array( + 'type' => 'string', + ), + 'ID' => array( + 'type' => 'string', + ), + 'Type' => array( + 'required' => true, + 'type' => 'string', + 'sentAs' => 'xsi:type', + 'data' => array( + 'xmlAttribute' => true, + 'xmlNamespace' => 'http://www.w3.org/2001/XMLSchema-instance', + ), + ), + 'URI' => array( + 'type' => 'string', + ), + ), + ), + 'Permission' => array( + 'type' => 'string', + ), + ), + ), + ), + 'Owner' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string', + ), + 'ID' => array( + 'type' => 'string', + ), + ), + ), + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'GrantFullControl' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-grant-full-control', + ), + 'GrantRead' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-grant-read', + ), + 'GrantReadACP' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-grant-read-acp', + ), + 'GrantWrite' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-grant-write', + ), + 'GrantWriteACP' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-grant-write-acp', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + 'filters' => array( + 'Aws\\S3\\S3Client::explodeKey', + ), + ), + 'RequestPayer' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-payer', + ), + 'ACP' => array( + 'type' => 'object', + 'additionalProperties' => true, + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The specified key does not exist.', + 'class' => 'NoSuchKeyException', + ), + ), + ), + 'RestoreObject' => array( + 'httpMethod' => 'POST', + 'uri' => '/{Bucket}{/Key*}?restore', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'RestoreObjectOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectRestore.html', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'RestoreRequest', + 'namespaces' => array( + 'http://s3.amazonaws.com/doc/2006-03-01/', + ), + ), + ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + 'filters' => array( + 'Aws\\S3\\S3Client::explodeKey', + ), + ), + 'VersionId' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'versionId', + ), + 'Days' => array( + 'required' => true, + 'type' => 'numeric', + 'location' => 'xml', + ), + 'RequestPayer' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-payer', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'This operation is not allowed against this storage tier', + 'class' => 'ObjectAlreadyInActiveTierErrorException', + ), + ), + ), + 'UploadPart' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}{/Key*}', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'UploadPartOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPart.html', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'UploadPartRequest', + 'namespaces' => array( + 'http://s3.amazonaws.com/doc/2006-03-01/', + ), + ), + ), + 'parameters' => array( + 'Body' => array( + 'type' => array( + 'string', + 'object', + ), + 'location' => 'body', + ), + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'ContentLength' => array( + 'type' => 'numeric', + 'location' => 'header', + 'sentAs' => 'Content-Length', + ), + 'ContentMD5' => array( + 'type' => array( + 'string', + 'boolean', + ), + 'location' => 'header', + 'sentAs' => 'Content-MD5', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + 'filters' => array( + 'Aws\\S3\\S3Client::explodeKey', + ), + ), + 'PartNumber' => array( + 'required' => true, + 'type' => 'numeric', + 'location' => 'query', + 'sentAs' => 'partNumber', + ), + 'UploadId' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'uploadId', + ), + 'ServerSideEncryption' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption', + ), + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm', + ), + 'SSECustomerKey' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-key', + ), + 'SSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-key-MD5', + ), + 'RequestPayer' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-payer', + ), + ), + ), + 'UploadPartCopy' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}{/Key*}', + 'class' => 'Aws\\S3\\Command\\S3Command', + 'responseClass' => 'UploadPartCopyOutput', + 'responseType' => 'model', + 'documentationUrl' => 'http://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPartCopy.html', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'UploadPartCopyRequest', + 'namespaces' => array( + 'http://s3.amazonaws.com/doc/2006-03-01/', + ), + ), + ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'CopySource' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-copy-source', + ), + 'CopySourceIfMatch' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-copy-source-if-match', + ), + 'CopySourceIfModifiedSince' => array( + 'type' => array( + 'object', + 'string', + 'integer', + ), + 'format' => 'date-time-http', + 'location' => 'header', + 'sentAs' => 'x-amz-copy-source-if-modified-since', + ), + 'CopySourceIfNoneMatch' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-copy-source-if-none-match', + ), + 'CopySourceIfUnmodifiedSince' => array( + 'type' => array( + 'object', + 'string', + 'integer', + ), + 'format' => 'date-time-http', + 'location' => 'header', + 'sentAs' => 'x-amz-copy-source-if-unmodified-since', + ), + 'CopySourceRange' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-copy-source-range', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + 'filters' => array( + 'Aws\\S3\\S3Client::explodeKey', + ), + ), + 'PartNumber' => array( + 'required' => true, + 'type' => 'numeric', + 'location' => 'query', + 'sentAs' => 'partNumber', + ), + 'UploadId' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'uploadId', + ), + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm', + ), + 'SSECustomerKey' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-key', + ), + 'SSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-key-MD5', + ), + 'CopySourceSSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-copy-source-server-side-encryption-customer-algorithm', + ), + 'CopySourceSSECustomerKey' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-copy-source-server-side-encryption-customer-key', + ), + 'CopySourceSSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-copy-source-server-side-encryption-customer-key-MD5', + ), + 'RequestPayer' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-payer', + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + ), + ), + 'models' => array( + 'AbortMultipartUploadOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-charged', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'CompleteMultipartUploadOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Location' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'Bucket' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'Key' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'Expiration' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-expiration', + ), + 'ETag' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'ServerSideEncryption' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption', + ), + 'VersionId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-version-id', + ), + 'SSEKMSKeyId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-aws-kms-key-id', + ), + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-charged', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'CopyObjectOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'ETag' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'LastModified' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'Expiration' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-expiration', + ), + 'CopySourceVersionId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-copy-source-version-id', + ), + 'VersionId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-version-id', + ), + 'ServerSideEncryption' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption', + ), + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm', + ), + 'SSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-key-MD5', + ), + 'SSEKMSKeyId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-aws-kms-key-id', + ), + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-charged', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'CreateBucketOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Location' => array( + 'type' => 'string', + 'location' => 'header', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'CreateMultipartUploadOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Bucket' => array( + 'type' => 'string', + 'location' => 'xml', + 'sentAs' => 'Bucket', + ), + 'Key' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'UploadId' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'ServerSideEncryption' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption', + ), + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm', + ), + 'SSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-key-MD5', + ), + 'SSEKMSKeyId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-aws-kms-key-id', + ), + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-charged', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'DeleteBucketOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'DeleteBucketCorsOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'DeleteBucketLifecycleOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'DeleteBucketPolicyOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'DeleteBucketReplicationOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'DeleteBucketTaggingOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'DeleteBucketWebsiteOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'DeleteObjectOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'DeleteMarker' => array( + 'type' => 'boolean', + 'location' => 'header', + 'sentAs' => 'x-amz-delete-marker', + ), + 'VersionId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-version-id', + ), + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-charged', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'DeleteObjectsOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Deleted' => array( + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'DeletedObject', + 'type' => 'object', + 'properties' => array( + 'Key' => array( + 'type' => 'string', + ), + 'VersionId' => array( + 'type' => 'string', + ), + 'DeleteMarker' => array( + 'type' => 'boolean', + ), + 'DeleteMarkerVersionId' => array( + 'type' => 'string', + ), + ), + ), + ), + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-charged', + ), + 'Errors' => array( + 'type' => 'array', + 'location' => 'xml', + 'sentAs' => 'Error', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'Error', + 'type' => 'object', + 'sentAs' => 'Error', + 'properties' => array( + 'Key' => array( + 'type' => 'string', + ), + 'VersionId' => array( + 'type' => 'string', + ), + 'Code' => array( + 'type' => 'string', + ), + 'Message' => array( + 'type' => 'string', + ), + ), + ), + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'GetBucketAclOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Owner' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string', + ), + 'ID' => array( + 'type' => 'string', + ), + ), + ), + 'Grants' => array( + 'type' => 'array', + 'location' => 'xml', + 'sentAs' => 'AccessControlList', + 'items' => array( + 'name' => 'Grant', + 'type' => 'object', + 'sentAs' => 'Grant', + 'properties' => array( + 'Grantee' => array( + 'type' => 'object', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string', + ), + 'EmailAddress' => array( + 'type' => 'string', + ), + 'ID' => array( + 'type' => 'string', + ), + 'Type' => array( + 'type' => 'string', + 'sentAs' => 'xsi:type', + 'data' => array( + 'xmlAttribute' => true, + 'xmlNamespace' => 'http://www.w3.org/2001/XMLSchema-instance', + ), + ), + 'URI' => array( + 'type' => 'string', + ), + ), + ), + 'Permission' => array( + 'type' => 'string', + ), + ), + ), + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'GetBucketCorsOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'CORSRules' => array( + 'type' => 'array', + 'location' => 'xml', + 'sentAs' => 'CORSRule', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'CORSRule', + 'type' => 'object', + 'sentAs' => 'CORSRule', + 'properties' => array( + 'AllowedHeaders' => array( + 'type' => 'array', + 'sentAs' => 'AllowedHeader', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'AllowedHeader', + 'type' => 'string', + 'sentAs' => 'AllowedHeader', + ), + ), + 'AllowedMethods' => array( + 'type' => 'array', + 'sentAs' => 'AllowedMethod', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'AllowedMethod', + 'type' => 'string', + 'sentAs' => 'AllowedMethod', + ), + ), + 'AllowedOrigins' => array( + 'type' => 'array', + 'sentAs' => 'AllowedOrigin', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'AllowedOrigin', + 'type' => 'string', + 'sentAs' => 'AllowedOrigin', + ), + ), + 'ExposeHeaders' => array( + 'type' => 'array', + 'sentAs' => 'ExposeHeader', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'ExposeHeader', + 'type' => 'string', + 'sentAs' => 'ExposeHeader', + ), + ), + 'MaxAgeSeconds' => array( + 'type' => 'numeric', + ), + ), + ), + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'GetBucketLifecycleOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Rules' => array( + 'type' => 'array', + 'location' => 'xml', + 'sentAs' => 'Rule', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'Rule', + 'type' => 'object', + 'sentAs' => 'Rule', + 'properties' => array( + 'Expiration' => array( + 'type' => 'object', + 'properties' => array( + 'Date' => array( + 'type' => 'string', + ), + 'Days' => array( + 'type' => 'numeric', + ), + ), + ), + 'ID' => array( + 'type' => 'string', + ), + 'Prefix' => array( + 'type' => 'string', + ), + 'Status' => array( + 'type' => 'string', + ), + 'Transition' => array( + 'type' => 'object', + 'properties' => array( + 'Date' => array( + 'type' => 'string', + ), + 'Days' => array( + 'type' => 'numeric', + ), + 'StorageClass' => array( + 'type' => 'string', + ), + ), + ), + 'NoncurrentVersionTransition' => array( + 'type' => 'object', + 'properties' => array( + 'NoncurrentDays' => array( + 'type' => 'numeric', + ), + 'StorageClass' => array( + 'type' => 'string', + ), + ), + ), + 'NoncurrentVersionExpiration' => array( + 'type' => 'object', + 'properties' => array( + 'NoncurrentDays' => array( + 'type' => 'numeric', + ), + ), + ), + ), + ), + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'GetBucketLifecycleConfigurationOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Rules' => array( + 'type' => 'array', + 'location' => 'xml', + 'sentAs' => 'Rule', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'LifecycleRule', + 'type' => 'object', + 'sentAs' => 'Rule', + 'properties' => array( + 'Expiration' => array( + 'type' => 'object', + 'properties' => array( + 'Date' => array( + 'type' => 'string', + ), + 'Days' => array( + 'type' => 'numeric', + ), + ), + ), + 'ID' => array( + 'type' => 'string', + ), + 'Prefix' => array( + 'type' => 'string', + ), + 'Status' => array( + 'type' => 'string', + ), + 'Transitions' => array( + 'type' => 'array', + 'sentAs' => 'Transition', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'Transition', + 'type' => 'object', + 'sentAs' => 'Transition', + 'properties' => array( + 'Date' => array( + 'type' => 'string', + ), + 'Days' => array( + 'type' => 'numeric', + ), + 'StorageClass' => array( + 'type' => 'string', + ), + ), + ), + ), + 'NoncurrentVersionTransitions' => array( + 'type' => 'array', + 'sentAs' => 'NoncurrentVersionTransition', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'NoncurrentVersionTransition', + 'type' => 'object', + 'sentAs' => 'NoncurrentVersionTransition', + 'properties' => array( + 'NoncurrentDays' => array( + 'type' => 'numeric', + ), + 'StorageClass' => array( + 'type' => 'string', + ), + ), + ), + ), + 'NoncurrentVersionExpiration' => array( + 'type' => 'object', + 'properties' => array( + 'NoncurrentDays' => array( + 'type' => 'numeric', + ), + ), + ), + ), + ), + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'GetBucketLocationOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Location' => array( + 'type' => 'string', + 'location' => 'body', + 'filters' => array( + 'strval', + 'strip_tags', + 'trim', + ), + ), + ), + ), + 'GetBucketLoggingOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'LoggingEnabled' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'TargetBucket' => array( + 'type' => 'string', + ), + 'TargetGrants' => array( + 'type' => 'array', + 'items' => array( + 'name' => 'Grant', + 'type' => 'object', + 'sentAs' => 'Grant', + 'properties' => array( + 'Grantee' => array( + 'type' => 'object', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string', + ), + 'EmailAddress' => array( + 'type' => 'string', + ), + 'ID' => array( + 'type' => 'string', + ), + 'Type' => array( + 'type' => 'string', + 'sentAs' => 'xsi:type', + 'data' => array( + 'xmlAttribute' => true, + 'xmlNamespace' => 'http://www.w3.org/2001/XMLSchema-instance', + ), + ), + 'URI' => array( + 'type' => 'string', + ), + ), + ), + 'Permission' => array( + 'type' => 'string', + ), + ), + ), + ), + 'TargetPrefix' => array( + 'type' => 'string', + ), + ), + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'NotificationConfigurationDeprecated' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'TopicConfiguration' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Id' => array( + 'type' => 'string', + ), + 'Events' => array( + 'type' => 'array', + 'sentAs' => 'Event', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'Event', + 'type' => 'string', + 'sentAs' => 'Event', + ), + ), + 'Event' => array( + 'type' => 'string', + ), + 'Topic' => array( + 'type' => 'string', + ), + ), + ), + 'QueueConfiguration' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Id' => array( + 'type' => 'string', + ), + 'Event' => array( + 'type' => 'string', + ), + 'Events' => array( + 'type' => 'array', + 'sentAs' => 'Event', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'Event', + 'type' => 'string', + 'sentAs' => 'Event', + ), + ), + 'Queue' => array( + 'type' => 'string', + ), + ), + ), + 'CloudFunctionConfiguration' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Id' => array( + 'type' => 'string', + ), + 'Event' => array( + 'type' => 'string', + ), + 'Events' => array( + 'type' => 'array', + 'sentAs' => 'Event', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'Event', + 'type' => 'string', + 'sentAs' => 'Event', + ), + ), + 'CloudFunction' => array( + 'type' => 'string', + ), + 'InvocationRole' => array( + 'type' => 'string', + ), + ), + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'NotificationConfiguration' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'TopicConfigurations' => array( + 'type' => 'array', + 'location' => 'xml', + 'sentAs' => 'TopicConfiguration', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'TopicConfiguration', + 'type' => 'object', + 'sentAs' => 'TopicConfiguration', + 'properties' => array( + 'Id' => array( + 'type' => 'string', + ), + 'TopicArn' => array( + 'type' => 'string', + 'sentAs' => 'Topic', + ), + 'Events' => array( + 'type' => 'array', + 'sentAs' => 'Event', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'Event', + 'type' => 'string', + 'sentAs' => 'Event', + ), + ), + 'Filter' => array( + 'type' => 'object', + 'properties' => array( + 'Key' => array( + 'type' => 'object', + 'sentAs' => 'S3Key', + 'properties' => array( + 'FilterRules' => array( + 'type' => 'array', + 'sentAs' => 'FilterRule', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'FilterRule', + 'type' => 'object', + 'sentAs' => 'FilterRule', + 'properties' => array( + 'Name' => array( + 'type' => 'string', + ), + 'Value' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + ), + ), + ), + ), + ), + ), + 'QueueConfigurations' => array( + 'type' => 'array', + 'location' => 'xml', + 'sentAs' => 'QueueConfiguration', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'QueueConfiguration', + 'type' => 'object', + 'sentAs' => 'QueueConfiguration', + 'properties' => array( + 'Id' => array( + 'type' => 'string', + ), + 'QueueArn' => array( + 'type' => 'string', + 'sentAs' => 'Queue', + ), + 'Events' => array( + 'type' => 'array', + 'sentAs' => 'Event', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'Event', + 'type' => 'string', + 'sentAs' => 'Event', + ), + ), + 'Filter' => array( + 'type' => 'object', + 'properties' => array( + 'Key' => array( + 'type' => 'object', + 'sentAs' => 'S3Key', + 'properties' => array( + 'FilterRules' => array( + 'type' => 'array', + 'sentAs' => 'FilterRule', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'FilterRule', + 'type' => 'object', + 'sentAs' => 'FilterRule', + 'properties' => array( + 'Name' => array( + 'type' => 'string', + ), + 'Value' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + ), + ), + ), + ), + ), + ), + 'LambdaFunctionConfigurations' => array( + 'type' => 'array', + 'location' => 'xml', + 'sentAs' => 'CloudFunctionConfiguration', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'LambdaFunctionConfiguration', + 'type' => 'object', + 'sentAs' => 'CloudFunctionConfiguration', + 'properties' => array( + 'Id' => array( + 'type' => 'string', + ), + 'LambdaFunctionArn' => array( + 'type' => 'string', + 'sentAs' => 'CloudFunction', + ), + 'Events' => array( + 'type' => 'array', + 'sentAs' => 'Event', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'Event', + 'type' => 'string', + 'sentAs' => 'Event', + ), + ), + 'Filter' => array( + 'type' => 'object', + 'properties' => array( + 'Key' => array( + 'type' => 'object', + 'sentAs' => 'S3Key', + 'properties' => array( + 'FilterRules' => array( + 'type' => 'array', + 'sentAs' => 'FilterRule', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'FilterRule', + 'type' => 'object', + 'sentAs' => 'FilterRule', + 'properties' => array( + 'Name' => array( + 'type' => 'string', + ), + 'Value' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + ), + ), + ), + ), + ), + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'GetBucketPolicyOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Policy' => array( + 'type' => 'string', + 'instanceOf' => 'Guzzle\\Http\\EntityBody', + 'location' => 'body', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'GetBucketReplicationOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Role' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'Rules' => array( + 'type' => 'array', + 'location' => 'xml', + 'sentAs' => 'Rule', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'ReplicationRule', + 'type' => 'object', + 'sentAs' => 'Rule', + 'properties' => array( + 'ID' => array( + 'type' => 'string', + ), + 'Prefix' => array( + 'type' => 'string', + ), + 'Status' => array( + 'type' => 'string', + ), + 'Destination' => array( + 'type' => 'object', + 'properties' => array( + 'Bucket' => array( + 'type' => 'string', + ), + 'StorageClass' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'GetBucketRequestPaymentOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Payer' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'GetBucketTaggingOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'TagSet' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'Tag', + 'type' => 'object', + 'sentAs' => 'Tag', + 'properties' => array( + 'Key' => array( + 'type' => 'string', + ), + 'Value' => array( + 'type' => 'string', + ), + ), + ), + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'GetBucketVersioningOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Status' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'MFADelete' => array( + 'type' => 'string', + 'location' => 'xml', + 'sentAs' => 'MfaDelete', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'GetBucketWebsiteOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RedirectAllRequestsTo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HostName' => array( + 'type' => 'string', + ), + 'Protocol' => array( + 'type' => 'string', + ), + ), + ), + 'IndexDocument' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Suffix' => array( + 'type' => 'string', + ), + ), + ), + 'ErrorDocument' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Key' => array( + 'type' => 'string', + ), + ), + ), + 'RoutingRules' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'RoutingRule', + 'type' => 'object', + 'sentAs' => 'RoutingRule', + 'properties' => array( + 'Condition' => array( + 'type' => 'object', + 'properties' => array( + 'HttpErrorCodeReturnedEquals' => array( + 'type' => 'string', + ), + 'KeyPrefixEquals' => array( + 'type' => 'string', + ), + ), + ), + 'Redirect' => array( + 'type' => 'object', + 'properties' => array( + 'HostName' => array( + 'type' => 'string', + ), + 'HttpRedirectCode' => array( + 'type' => 'string', + ), + 'Protocol' => array( + 'type' => 'string', + ), + 'ReplaceKeyPrefixWith' => array( + 'type' => 'string', + ), + 'ReplaceKeyWith' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'GetObjectOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Body' => array( + 'type' => 'string', + 'instanceOf' => 'Guzzle\\Http\\EntityBody', + 'location' => 'body', + ), + 'DeleteMarker' => array( + 'type' => 'boolean', + 'location' => 'header', + 'sentAs' => 'x-amz-delete-marker', + ), + 'AcceptRanges' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'accept-ranges', + ), + 'Expiration' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-expiration', + ), + 'Restore' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-restore', + ), + 'LastModified' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Last-Modified', + ), + 'ContentLength' => array( + 'type' => 'numeric', + 'location' => 'header', + 'sentAs' => 'Content-Length', + ), + 'ETag' => array( + 'type' => 'string', + 'location' => 'header', + ), + 'MissingMeta' => array( + 'type' => 'numeric', + 'location' => 'header', + 'sentAs' => 'x-amz-missing-meta', + ), + 'VersionId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-version-id', + ), + 'CacheControl' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Cache-Control', + ), + 'ContentDisposition' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Disposition', + ), + 'ContentEncoding' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Encoding', + ), + 'ContentLanguage' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Language', + ), + 'ContentRange' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Range', + ), + 'ContentType' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Type', + ), + 'Expires' => array( + 'type' => 'string', + 'location' => 'header', + ), + 'WebsiteRedirectLocation' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-website-redirect-location', + ), + 'ServerSideEncryption' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption', + ), + 'Metadata' => array( + 'type' => 'object', + 'location' => 'header', + 'sentAs' => 'x-amz-meta-', + 'additionalProperties' => array( + 'type' => 'string', + ), + ), + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm', + ), + 'SSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-key-MD5', + ), + 'SSEKMSKeyId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-aws-kms-key-id', + ), + 'StorageClass' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-storage-class', + ), + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-charged', + ), + 'ReplicationStatus' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-replication-status', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'GetObjectAclOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Owner' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string', + ), + 'ID' => array( + 'type' => 'string', + ), + ), + ), + 'Grants' => array( + 'type' => 'array', + 'location' => 'xml', + 'sentAs' => 'AccessControlList', + 'items' => array( + 'name' => 'Grant', + 'type' => 'object', + 'sentAs' => 'Grant', + 'properties' => array( + 'Grantee' => array( + 'type' => 'object', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string', + ), + 'EmailAddress' => array( + 'type' => 'string', + ), + 'ID' => array( + 'type' => 'string', + ), + 'Type' => array( + 'type' => 'string', + 'sentAs' => 'xsi:type', + 'data' => array( + 'xmlAttribute' => true, + 'xmlNamespace' => 'http://www.w3.org/2001/XMLSchema-instance', + ), + ), + 'URI' => array( + 'type' => 'string', + ), + ), + ), + 'Permission' => array( + 'type' => 'string', + ), + ), + ), + ), + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-charged', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'GetObjectTorrentOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Body' => array( + 'type' => 'string', + 'instanceOf' => 'Guzzle\\Http\\EntityBody', + 'location' => 'body', + ), + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-charged', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'HeadBucketOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'HeadObjectOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'DeleteMarker' => array( + 'type' => 'boolean', + 'location' => 'header', + 'sentAs' => 'x-amz-delete-marker', + ), + 'AcceptRanges' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'accept-ranges', + ), + 'Expiration' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-expiration', + ), + 'Restore' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-restore', + ), + 'LastModified' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Last-Modified', + ), + 'ContentLength' => array( + 'type' => 'numeric', + 'location' => 'header', + 'sentAs' => 'Content-Length', + ), + 'ETag' => array( + 'type' => 'string', + 'location' => 'header', + ), + 'MissingMeta' => array( + 'type' => 'numeric', + 'location' => 'header', + 'sentAs' => 'x-amz-missing-meta', + ), + 'VersionId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-version-id', + ), + 'CacheControl' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Cache-Control', + ), + 'ContentDisposition' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Disposition', + ), + 'ContentEncoding' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Encoding', + ), + 'ContentLanguage' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Language', + ), + 'ContentType' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Type', + ), + 'Expires' => array( + 'type' => 'string', + 'location' => 'header', + ), + 'WebsiteRedirectLocation' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-website-redirect-location', + ), + 'ServerSideEncryption' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption', + ), + 'Metadata' => array( + 'type' => 'object', + 'location' => 'header', + 'sentAs' => 'x-amz-meta-', + 'additionalProperties' => array( + 'type' => 'string', + ), + ), + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm', + ), + 'SSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-key-MD5', + ), + 'SSEKMSKeyId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-aws-kms-key-id', + ), + 'StorageClass' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-storage-class', + ), + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-charged', + ), + 'ReplicationStatus' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-replication-status', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'ListBucketsOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Buckets' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'Bucket', + 'type' => 'object', + 'sentAs' => 'Bucket', + 'properties' => array( + 'Name' => array( + 'type' => 'string', + ), + 'CreationDate' => array( + 'type' => 'string', + ), + ), + ), + ), + 'Owner' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string', + ), + 'ID' => array( + 'type' => 'string', + ), + ), + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'ListMultipartUploadsOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Bucket' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'KeyMarker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'UploadIdMarker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'NextKeyMarker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'Prefix' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'Delimiter' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'NextUploadIdMarker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'MaxUploads' => array( + 'type' => 'numeric', + 'location' => 'xml', + ), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Uploads' => array( + 'type' => 'array', + 'location' => 'xml', + 'sentAs' => 'Upload', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'MultipartUpload', + 'type' => 'object', + 'sentAs' => 'Upload', + 'properties' => array( + 'UploadId' => array( + 'type' => 'string', + ), + 'Key' => array( + 'type' => 'string', + ), + 'Initiated' => array( + 'type' => 'string', + ), + 'StorageClass' => array( + 'type' => 'string', + ), + 'Owner' => array( + 'type' => 'object', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string', + ), + 'ID' => array( + 'type' => 'string', + ), + ), + ), + 'Initiator' => array( + 'type' => 'object', + 'properties' => array( + 'ID' => array( + 'type' => 'string', + ), + 'DisplayName' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + ), + 'CommonPrefixes' => array( + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'CommonPrefix', + 'type' => 'object', + 'properties' => array( + 'Prefix' => array( + 'type' => 'string', + ), + ), + ), + ), + 'EncodingType' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'ListObjectVersionsOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'KeyMarker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'VersionIdMarker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'NextKeyMarker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'NextVersionIdMarker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'Versions' => array( + 'type' => 'array', + 'location' => 'xml', + 'sentAs' => 'Version', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'ObjectVersion', + 'type' => 'object', + 'sentAs' => 'Version', + 'properties' => array( + 'ETag' => array( + 'type' => 'string', + ), + 'Size' => array( + 'type' => 'numeric', + ), + 'StorageClass' => array( + 'type' => 'string', + ), + 'Key' => array( + 'type' => 'string', + ), + 'VersionId' => array( + 'type' => 'string', + ), + 'IsLatest' => array( + 'type' => 'boolean', + ), + 'LastModified' => array( + 'type' => 'string', + ), + 'Owner' => array( + 'type' => 'object', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string', + ), + 'ID' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + ), + 'DeleteMarkers' => array( + 'type' => 'array', + 'location' => 'xml', + 'sentAs' => 'DeleteMarker', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'DeleteMarkerEntry', + 'type' => 'object', + 'sentAs' => 'DeleteMarker', + 'properties' => array( + 'Owner' => array( + 'type' => 'object', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string', + ), + 'ID' => array( + 'type' => 'string', + ), + ), + ), + 'Key' => array( + 'type' => 'string', + ), + 'VersionId' => array( + 'type' => 'string', + ), + 'IsLatest' => array( + 'type' => 'boolean', + ), + 'LastModified' => array( + 'type' => 'string', + ), + ), + ), + ), + 'Name' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'Prefix' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'Delimiter' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'MaxKeys' => array( + 'type' => 'numeric', + 'location' => 'xml', + ), + 'CommonPrefixes' => array( + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'CommonPrefix', + 'type' => 'object', + 'properties' => array( + 'Prefix' => array( + 'type' => 'string', + ), + ), + ), + ), + 'EncodingType' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'ListObjectsOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Marker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'NextMarker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'Contents' => array( + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'Object', + 'type' => 'object', + 'properties' => array( + 'Key' => array( + 'type' => 'string', + ), + 'LastModified' => array( + 'type' => 'string', + ), + 'ETag' => array( + 'type' => 'string', + ), + 'Size' => array( + 'type' => 'numeric', + ), + 'StorageClass' => array( + 'type' => 'string', + ), + 'Owner' => array( + 'type' => 'object', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string', + ), + 'ID' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + ), + 'Name' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'Prefix' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'Delimiter' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'MaxKeys' => array( + 'type' => 'numeric', + 'location' => 'xml', + ), + 'CommonPrefixes' => array( + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'CommonPrefix', + 'type' => 'object', + 'properties' => array( + 'Prefix' => array( + 'type' => 'string', + ), + ), + ), + ), + 'EncodingType' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'ListPartsOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Bucket' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'Key' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'UploadId' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'PartNumberMarker' => array( + 'type' => 'numeric', + 'location' => 'xml', + ), + 'NextPartNumberMarker' => array( + 'type' => 'numeric', + 'location' => 'xml', + ), + 'MaxParts' => array( + 'type' => 'numeric', + 'location' => 'xml', + ), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Parts' => array( + 'type' => 'array', + 'location' => 'xml', + 'sentAs' => 'Part', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'Part', + 'type' => 'object', + 'sentAs' => 'Part', + 'properties' => array( + 'PartNumber' => array( + 'type' => 'numeric', + ), + 'LastModified' => array( + 'type' => 'string', + ), + 'ETag' => array( + 'type' => 'string', + ), + 'Size' => array( + 'type' => 'numeric', + ), + ), + ), + ), + 'Initiator' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'ID' => array( + 'type' => 'string', + ), + 'DisplayName' => array( + 'type' => 'string', + ), + ), + ), + 'Owner' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string', + ), + 'ID' => array( + 'type' => 'string', + ), + ), + ), + 'StorageClass' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-charged', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'PutBucketAclOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'PutBucketCorsOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'PutBucketLifecycleOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'PutBucketLifecycleConfigurationOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'PutBucketLoggingOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'PutBucketNotificationOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'PutBucketNotificationConfigurationOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'PutBucketPolicyOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'PutBucketReplicationOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'PutBucketRequestPaymentOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'PutBucketTaggingOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'PutBucketVersioningOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'PutBucketWebsiteOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'PutObjectOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Expiration' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-expiration', + ), + 'ETag' => array( + 'type' => 'string', + 'location' => 'header', + ), + 'ServerSideEncryption' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption', + ), + 'VersionId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-version-id', + ), + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm', + ), + 'SSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-key-MD5', + ), + 'SSEKMSKeyId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-aws-kms-key-id', + ), + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-charged', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + 'ObjectURL' => array( + ), + ), + ), + 'PutObjectAclOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-charged', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'RestoreObjectOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-charged', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'UploadPartOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'ServerSideEncryption' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption', + ), + 'ETag' => array( + 'type' => 'string', + 'location' => 'header', + ), + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm', + ), + 'SSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-key-MD5', + ), + 'SSEKMSKeyId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-aws-kms-key-id', + ), + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-charged', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + 'UploadPartCopyOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'CopySourceVersionId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-copy-source-version-id', + ), + 'ETag' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'LastModified' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'ServerSideEncryption' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption', + ), + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm', + ), + 'SSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-customer-key-MD5', + ), + 'SSEKMSKeyId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-server-side-encryption-aws-kms-key-id', + ), + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-amz-request-charged', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-amz-request-id', + ), + ), + ), + ), + 'iterators' => array( + 'ListBuckets' => array( + 'result_key' => 'Buckets', + ), + 'ListMultipartUploads' => array( + 'limit_key' => 'MaxUploads', + 'more_results' => 'IsTruncated', + 'output_token' => array( + 'NextKeyMarker', + 'NextUploadIdMarker', + ), + 'input_token' => array( + 'KeyMarker', + 'UploadIdMarker', + ), + 'result_key' => array( + 'Uploads', + 'CommonPrefixes', + ), + ), + 'ListObjectVersions' => array( + 'more_results' => 'IsTruncated', + 'limit_key' => 'MaxKeys', + 'output_token' => array( + 'NextKeyMarker', + 'NextVersionIdMarker', + ), + 'input_token' => array( + 'KeyMarker', + 'VersionIdMarker', + ), + 'result_key' => array( + 'Versions', + 'DeleteMarkers', + 'CommonPrefixes', + ), + ), + 'ListObjects' => array( + 'more_results' => 'IsTruncated', + 'limit_key' => 'MaxKeys', + 'output_token' => 'NextMarker', + 'input_token' => 'Marker', + 'result_key' => array( + 'Contents', + 'CommonPrefixes', + ), + ), + 'ListParts' => array( + 'more_results' => 'IsTruncated', + 'limit_key' => 'MaxParts', + 'output_token' => 'NextPartNumberMarker', + 'input_token' => 'PartNumberMarker', + 'result_key' => 'Parts', + ), + ), + 'waiters' => array( + '__default__' => array( + 'interval' => 5, + 'max_attempts' => 20, + ), + 'BucketExists' => array( + 'operation' => 'HeadBucket', + 'success.type' => 'output', + 'ignore_errors' => array( + 'NoSuchBucket', + ), + ), + 'BucketNotExists' => array( + 'operation' => 'HeadBucket', + 'success.type' => 'error', + 'success.value' => 'NoSuchBucket', + ), + 'ObjectExists' => array( + 'operation' => 'HeadObject', + 'success.type' => 'output', + 'ignore_errors' => array( + 'NoSuchKey', + ), + ), + 'ObjectNotExists' => array( + 'operation' => 'HeadObject', + 'success.type' => 'error', + 'success.value' => 'NoSuchKey' + ), + ), +); diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/ResumableDownload.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/ResumableDownload.php new file mode 100644 index 0000000..6d99677 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/ResumableDownload.php @@ -0,0 +1,176 @@ +params = $params; + $this->client = $client; + $this->params['Bucket'] = $bucket; + $this->params['Key'] = $key; + + // If a string is passed, then assume that the download should stream to a file on disk + if (is_string($target)) { + if (!($target = fopen($target, 'a+'))) { + throw new RuntimeException("Unable to open {$target} for writing"); + } + // Always append to the file + fseek($target, 0, SEEK_END); + } + + // Get the metadata and Content-MD5 of the object + $this->target = EntityBody::factory($target); + } + + /** + * Get the bucket of the download + * + * @return string + */ + public function getBucket() + { + return $this->params['Bucket']; + } + + /** + * Get the key of the download + * + * @return string + */ + public function getKey() + { + return $this->params['Key']; + } + + /** + * Get the file to which the contents are downloaded + * + * @return string + */ + public function getFilename() + { + return $this->target->getUri(); + } + + /** + * Download the remainder of the object from Amazon S3 + * + * Performs a message integrity check if possible + * + * @return Model + */ + public function __invoke() + { + $command = $this->client->getCommand('HeadObject', $this->params); + $this->meta = $command->execute(); + + if ($this->target->ftell() >= $this->meta['ContentLength']) { + return false; + } + + $this->meta['ContentMD5'] = (string) $command->getResponse()->getHeader('Content-MD5'); + + // Use a ReadLimitEntityBody so that rewinding the stream after an error does not cause the file pointer + // to enter an inconsistent state with the data being downloaded + $this->params['SaveAs'] = new ReadLimitEntityBody( + $this->target, + $this->meta['ContentLength'], + $this->target->ftell() + ); + + $result = $this->getRemaining(); + $this->checkIntegrity(); + + return $result; + } + + /** + * Send the command to get the remainder of the object + * + * @return Model + */ + protected function getRemaining() + { + $current = $this->target->ftell(); + $targetByte = $this->meta['ContentLength'] - 1; + $this->params['Range'] = "bytes={$current}-{$targetByte}"; + + // Set the starting offset so that the body is never seeked to before this point in the event of a retry + $this->params['SaveAs']->setOffset($current); + $command = $this->client->getCommand('GetObject', $this->params); + + return $command->execute(); + } + + /** + * Performs an MD5 message integrity check if possible + * + * @throws UnexpectedValueException if the message does not validate + */ + protected function checkIntegrity() + { + if ($this->target->isReadable() && $expected = $this->meta['ContentMD5']) { + $actual = $this->target->getContentMd5(); + if ($actual != $expected) { + throw new UnexpectedValueException( + "Message integrity check failed. Expected {$expected} but got {$actual}." + ); + } + } + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/S3Client.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/S3Client.php new file mode 100644 index 0000000..270418f --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/S3Client.php @@ -0,0 +1,695 @@ + 'ListBuckets', + 'GetBucket' => 'ListObjects', + 'PutBucket' => 'CreateBucket', + + // SDK 1.x Aliases + 'GetBucketHeaders' => 'HeadBucket', + 'GetObjectHeaders' => 'HeadObject', + 'SetBucketAcl' => 'PutBucketAcl', + 'CreateObject' => 'PutObject', + 'DeleteObjects' => 'DeleteMultipleObjects', + 'PutObjectCopy' => 'CopyObject', + 'SetObjectAcl' => 'PutObjectAcl', + 'GetLogs' => 'GetBucketLogging', + 'GetVersioningStatus' => 'GetBucketVersioning', + 'SetBucketPolicy' => 'PutBucketPolicy', + 'CreateBucketNotification' => 'PutBucketNotification', + 'GetBucketNotifications' => 'GetBucketNotification', + 'CopyPart' => 'UploadPartCopy', + 'CreateWebsiteConfig' => 'PutBucketWebsite', + 'GetWebsiteConfig' => 'GetBucketWebsite', + 'DeleteWebsiteConfig' => 'DeleteBucketWebsite', + 'CreateObjectExpirationConfig' => 'PutBucketLifecycle', + 'GetObjectExpirationConfig' => 'GetBucketLifecycle', + 'DeleteObjectExpirationConfig' => 'DeleteBucketLifecycle', + ); + + protected $directory = __DIR__; + + /** + * Factory method to create a new Amazon S3 client using an array of configuration options. + * + * @param array|Collection $config Client configuration data + * + * @return S3Client + * @link http://docs.aws.amazon.com/aws-sdk-php/v2/guide/configuration.html#client-configuration-options + */ + public static function factory($config = array()) + { + $exceptionParser = new S3ExceptionParser(); + + // Configure the custom exponential backoff plugin for retrying S3 specific errors + if (!isset($config[Options::BACKOFF])) { + $config[Options::BACKOFF] = static::createBackoffPlugin($exceptionParser); + } + + $config[Options::SIGNATURE] = $signature = static::createSignature($config); + + $client = ClientBuilder::factory(__NAMESPACE__) + ->setConfig($config) + ->setConfigDefaults(array( + Options::VERSION => self::LATEST_API_VERSION, + Options::SERVICE_DESCRIPTION => __DIR__ . '/Resources/s3-%s.php' + )) + ->setExceptionParser($exceptionParser) + ->setIteratorsConfig(array( + 'more_key' => 'IsTruncated', + 'operations' => array( + 'ListBuckets', + 'ListMultipartUploads' => array( + 'limit_param' => 'MaxUploads', + 'token_param' => array('KeyMarker', 'UploadIdMarker'), + 'token_key' => array('NextKeyMarker', 'NextUploadIdMarker'), + ), + 'ListObjects' => array( + 'limit_param' => 'MaxKeys', + 'token_param' => 'Marker', + 'token_key' => 'NextMarker', + ), + 'ListObjectVersions' => array( + 'limit_param' => 'MaxKeys', + 'token_param' => array('KeyMarker', 'VersionIdMarker'), + 'token_key' => array('nextKeyMarker', 'nextVersionIdMarker'), + ), + 'ListParts' => array( + 'limit_param' => 'MaxParts', + 'result_key' => 'Parts', + 'token_param' => 'PartNumberMarker', + 'token_key' => 'NextPartNumberMarker', + ), + ) + )) + ->build(); + + // Use virtual hosted buckets when possible + $client->addSubscriber(new BucketStyleListener()); + // Ensure that ACP headers are applied when needed + $client->addSubscriber(new AcpListener()); + // Validate and add required Content-MD5 hashes (e.g. DeleteObjects) + $client->addSubscriber(new S3Md5Listener($signature)); + + // Allow for specifying bodies with file paths and file handles + $client->addSubscriber(new UploadBodyListener(array('PutObject', 'UploadPart'))); + + // Ensures that if a SSE-CPK key is provided, the key and md5 are formatted correctly + $client->addSubscriber(new SseCpkListener); + + // Add aliases for some S3 operations + $default = CompositeFactory::getDefaultChain($client); + $default->add( + new AliasFactory($client, static::$commandAliases), + 'Guzzle\Service\Command\Factory\ServiceDescriptionFactory' + ); + $client->setCommandFactory($default); + + return $client; + } + + /** + * Create an Amazon S3 specific backoff plugin + * + * @param S3ExceptionParser $exceptionParser + * + * @return BackoffPlugin + */ + private static function createBackoffPlugin(S3ExceptionParser $exceptionParser) + { + return new BackoffPlugin( + new TruncatedBackoffStrategy(3, + new IncompleteMultipartUploadChecker( + new CurlBackoffStrategy(null, + new HttpBackoffStrategy(null, + new SocketTimeoutChecker( + new ExpiredCredentialsChecker($exceptionParser, + new ExponentialBackoffStrategy() + ) + ) + ) + ) + ) + ) + ); + } + + /** + * Create an appropriate signature based on the configuration settings + * + * @param $config + * + * @return \Aws\Common\Signature\SignatureInterface + * @throws InvalidArgumentException + */ + private static function createSignature($config) + { + $currentValue = isset($config[Options::SIGNATURE]) ? $config[Options::SIGNATURE] : null; + + // Force v4 if no value is provided, a region is in the config, and + // the region starts with "cn-" or "eu-central-". + $requiresV4 = !$currentValue + && isset($config['region']) + && (strpos($config['region'], 'eu-central-') === 0 + || strpos($config['region'], 'cn-') === 0); + + // Use the Amazon S3 signature V4 when the value is set to "v4" or when + // the value is not set and the region starts with "cn-". + if ($currentValue == 'v4' || $requiresV4) { + // Force SignatureV4 for specific regions or if specified in the config + $currentValue = new S3SignatureV4('s3'); + } elseif (!$currentValue || $currentValue == 's3') { + // Use the Amazon S3 signature by default + $currentValue = new S3Signature(); + } + + // A region is require with v4 + if ($currentValue instanceof SignatureV4 && !isset($config['region'])) { + throw new InvalidArgumentException('A region must be specified ' + . 'when using signature version 4'); + } + + return $currentValue; + } + + /** + * Determine if a string is a valid name for a DNS compatible Amazon S3 + * bucket, meaning the bucket can be used as a subdomain in a URL (e.g., + * ".s3.amazonaws.com"). + * + * @param string $bucket The name of the bucket to check. + * + * @return bool TRUE if the bucket name is valid or FALSE if it is invalid. + */ + public static function isValidBucketName($bucket) + { + $bucketLen = strlen($bucket); + if ($bucketLen < 3 || $bucketLen > 63 || + // Cannot look like an IP address + preg_match('/(\d+\.){3}\d+$/', $bucket) || + // Cannot include special characters, must start and end with lower alnum + !preg_match('/^[a-z0-9]([a-z0-9\-\.]*[a-z0-9])?$/', $bucket) + ) { + return false; + } + + return true; + } + + /** + * Create a pre-signed URL for a request + * + * @param RequestInterface $request Request to generate the URL for. Use the factory methods of the client to + * create this request object + * @param int|string|\DateTime $expires The time at which the URL should expire. This can be a Unix timestamp, a + * PHP DateTime object, or a string that can be evaluated by strtotime + * + * @return string + * @throws InvalidArgumentException if the request is not associated with this client object + */ + public function createPresignedUrl(RequestInterface $request, $expires) + { + if ($request->getClient() !== $this) { + throw new InvalidArgumentException('The request object must be associated with the client. Use the ' + . '$client->get(), $client->head(), $client->post(), $client->put(), etc. methods when passing in a ' + . 'request object'); + } + + return $this->signature->createPresignedUrl($request, $this->credentials, $expires); + } + + /** + * Returns the URL to an object identified by its bucket and key. If an expiration time is provided, the URL will + * be signed and set to expire at the provided time. + * + * Note: This method does not ensure that the generated URL is valid. For example, the bucket referenced may not + * exist, the key referenced may not exist, and the URL might include parameters that require it to be signed. + * If you need to use parameters that require a signed URL (e.g., ResponseCacheControl), then you must sign the + * URL either by providing an $expires argument or by signing the URL returned by this method in some other + * manner. + * + * @param string $bucket The name of the bucket where the object is located + * @param string $key The key of the object + * @param mixed $expires The time at which the URL should expire + * @param array $args Arguments to the GetObject command. Additionally you can specify a "Scheme" if you would + * like the URL to use a different scheme than what the client is configured to use + * + * @return string The URL to the object + */ + public function getObjectUrl($bucket, $key, $expires = null, array $args = array()) + { + $command = $this->getCommand('GetObject', $args + array('Bucket' => $bucket, 'Key' => $key)); + + if ($command->hasKey('Scheme')) { + $scheme = $command['Scheme']; + $request = $command->remove('Scheme')->prepare()->setScheme($scheme)->setPort(null); + } else { + $request = $command->prepare(); + } + + return $expires ? $this->createPresignedUrl($request, $expires) : $request->getUrl(); + } + + /** + * Helper used to clear the contents of a bucket. Use the {@see ClearBucket} object directly + * for more advanced options and control. + * + * @param string $bucket Name of the bucket to clear. + * + * @return int Returns the number of deleted keys + */ + public function clearBucket($bucket) + { + $clear = new ClearBucket($this, $bucket); + + return $clear->clear(); + } + + /** + * Determines whether or not a bucket exists by name + * + * @param string $bucket The name of the bucket + * @param bool $accept403 Set to true if 403s are acceptable + * @param array $options Additional options to add to the executed command + * + * @return bool + */ + public function doesBucketExist($bucket, $accept403 = true, array $options = array()) + { + return $this->checkExistenceWithCommand( + $this->getCommand('HeadBucket', array_merge($options, array( + 'Bucket' => $bucket + ))), $accept403 + ); + } + + /** + * Determines whether or not an object exists by name + * + * @param string $bucket The name of the bucket + * @param string $key The key of the object + * @param array $options Additional options to add to the executed command + * + * @return bool + */ + public function doesObjectExist($bucket, $key, array $options = array()) + { + return $this->checkExistenceWithCommand( + $this->getCommand('HeadObject', array_merge($options, array( + 'Bucket' => $bucket, + 'Key' => $key + ))) + ); + } + + /** + * Determines whether or not a bucket policy exists for a bucket + * + * @param string $bucket The name of the bucket + * @param array $options Additional options to add to the executed command + * + * @return bool + */ + public function doesBucketPolicyExist($bucket, array $options = array()) + { + return $this->checkExistenceWithCommand( + $this->getCommand('GetBucketPolicy', array_merge($options, array( + 'Bucket' => $bucket + ))) + ); + } + + /** + * Raw URL encode a key and allow for '/' characters + * + * @param string $key Key to encode + * + * @return string Returns the encoded key + */ + public static function encodeKey($key) + { + return str_replace('%2F', '/', rawurlencode($key)); + } + + /** + * Explode a prefixed key into an array of values + * + * @param string $key Key to explode + * + * @return array Returns the exploded + */ + public static function explodeKey($key) + { + // Remove a leading slash if one is found + return explode('/', $key && $key[0] == '/' ? substr($key, 1) : $key); + } + + /** + * Register the Amazon S3 stream wrapper and associates it with this client object + * + * @return $this + */ + public function registerStreamWrapper() + { + StreamWrapper::register($this); + + return $this; + } + + /** + * Upload a file, stream, or string to a bucket. If the upload size exceeds the specified threshold, the upload + * will be performed using parallel multipart uploads. + * + * @param string $bucket Bucket to upload the object + * @param string $key Key of the object + * @param mixed $body Object data to upload. Can be a Guzzle\Http\EntityBodyInterface, stream resource, or + * string of data to upload. + * @param string $acl ACL to apply to the object + * @param array $options Custom options used when executing commands: + * - params: Custom parameters to use with the upload. The parameters must map to a PutObject + * or InitiateMultipartUpload operation parameters. + * - min_part_size: Minimum size to allow for each uploaded part when performing a multipart upload. + * - concurrency: Maximum number of concurrent multipart uploads. + * - before_upload: Callback to invoke before each multipart upload. The callback will receive a + * Guzzle\Common\Event object with context. + * + * @see Aws\S3\Model\MultipartUpload\UploadBuilder for more options and customization + * @return \Guzzle\Service\Resource\Model Returns the modeled result of the performed operation + */ + public function upload($bucket, $key, $body, $acl = 'private', array $options = array()) + { + $body = EntityBody::factory($body); + $options = Collection::fromConfig(array_change_key_case($options), array( + 'min_part_size' => AbstractMulti::MIN_PART_SIZE, + 'params' => array(), + 'concurrency' => $body->getWrapper() == 'plainfile' ? 3 : 1 + )); + + if ($body->getSize() < $options['min_part_size']) { + // Perform a simple PutObject operation + return $this->putObject(array( + 'Bucket' => $bucket, + 'Key' => $key, + 'Body' => $body, + 'ACL' => $acl + ) + $options['params']); + } + + // Perform a multipart upload if the file is large enough + $transfer = UploadBuilder::newInstance() + ->setBucket($bucket) + ->setKey($key) + ->setMinPartSize($options['min_part_size']) + ->setConcurrency($options['concurrency']) + ->setClient($this) + ->setSource($body) + ->setTransferOptions($options->toArray()) + ->addOptions($options['params']) + ->setOption('ACL', $acl) + ->build(); + + if ($options['before_upload']) { + $transfer->getEventDispatcher()->addListener( + AbstractTransfer::BEFORE_PART_UPLOAD, + $options['before_upload'] + ); + } + + return $transfer->upload(); + } + + /** + * Recursively uploads all files in a given directory to a given bucket. + * + * @param string $directory Full path to a directory to upload + * @param string $bucket Name of the bucket + * @param string $keyPrefix Virtual directory key prefix to add to each upload + * @param array $options Associative array of upload options + * - params: Array of parameters to use with each PutObject operation performed during the transfer + * - base_dir: Base directory to remove from each object key + * - force: Set to true to upload every file, even if the file is already in Amazon S3 and has not changed + * - concurrency: Maximum number of parallel uploads (defaults to 10) + * - debug: Set to true or an fopen resource to enable debug mode to print information about each upload + * - multipart_upload_size: When the size of a file exceeds this value, the file will be uploaded using a + * multipart upload. + * + * @see Aws\S3\S3Sync\S3Sync for more options and customization + */ + public function uploadDirectory($directory, $bucket, $keyPrefix = null, array $options = array()) + { + $options = Collection::fromConfig( + $options, + array( + 'base_dir' => realpath($directory) ?: $directory + ) + ); + + $builder = $options['builder'] ?: UploadSyncBuilder::getInstance(); + $builder->uploadFromDirectory($directory) + ->setClient($this) + ->setBucket($bucket) + ->setKeyPrefix($keyPrefix) + ->setConcurrency($options['concurrency'] ?: 5) + ->setBaseDir($options['base_dir']) + ->force($options['force']) + ->setOperationParams($options['params'] ?: array()) + ->enableDebugOutput($options['debug']); + + if ($options->hasKey('multipart_upload_size')) { + $builder->setMultipartUploadSize($options['multipart_upload_size']); + } + + $builder->build()->transfer(); + } + + /** + * Downloads a bucket to the local filesystem + * + * @param string $directory Directory to download to + * @param string $bucket Bucket to download from + * @param string $keyPrefix Only download objects that use this key prefix + * @param array $options Associative array of download options + * - params: Array of parameters to use with each GetObject operation performed during the transfer + * - base_dir: Base directory to remove from each object key when storing in the local filesystem + * - force: Set to true to download every file, even if the file is already on the local filesystem and has not + * changed + * - concurrency: Maximum number of parallel downloads (defaults to 10) + * - debug: Set to true or a fopen resource to enable debug mode to print information about each download + * - allow_resumable: Set to true to allow previously interrupted downloads to be resumed using a Range GET + */ + public function downloadBucket($directory, $bucket, $keyPrefix = '', array $options = array()) + { + $options = new Collection($options); + $builder = $options['builder'] ?: DownloadSyncBuilder::getInstance(); + $builder->setDirectory($directory) + ->setClient($this) + ->setBucket($bucket) + ->setKeyPrefix($keyPrefix) + ->setConcurrency($options['concurrency'] ?: 10) + ->setBaseDir($options['base_dir']) + ->force($options['force']) + ->setOperationParams($options['params'] ?: array()) + ->enableDebugOutput($options['debug']); + + if ($options['allow_resumable']) { + $builder->allowResumableDownloads(); + } + + $builder->build()->transfer(); + } + + /** + * Deletes objects from Amazon S3 that match the result of a ListObjects operation. For example, this allows you + * to do things like delete all objects that match a specific key prefix. + * + * @param string $bucket Bucket that contains the object keys + * @param string $prefix Optionally delete only objects under this key prefix + * @param string $regex Delete only objects that match this regex + * @param array $options Options used when deleting the object: + * - before_delete: Callback to invoke before each delete. The callback will receive a + * Guzzle\Common\Event object with context. + * + * @see Aws\S3\S3Client::listObjects + * @see Aws\S3\Model\ClearBucket For more options or customization + * @return int Returns the number of deleted keys + * @throws RuntimeException if no prefix and no regex is given + */ + public function deleteMatchingObjects($bucket, $prefix = '', $regex = '', array $options = array()) + { + if (!$prefix && !$regex) { + throw new RuntimeException('A prefix or regex is required, or use S3Client::clearBucket().'); + } + + $clear = new ClearBucket($this, $bucket); + $iterator = $this->getIterator('ListObjects', array('Bucket' => $bucket, 'Prefix' => $prefix)); + + if ($regex) { + $iterator = new FilterIterator($iterator, function ($current) use ($regex) { + return preg_match($regex, $current['Key']); + }); + } + + $clear->setIterator($iterator); + if (isset($options['before_delete'])) { + $clear->getEventDispatcher()->addListener(ClearBucket::BEFORE_CLEAR, $options['before_delete']); + } + + return $clear->clear(); + } + + /** + * Determines whether or not a resource exists using a command + * + * @param CommandInterface $command Command used to poll for the resource + * @param bool $accept403 Set to true if 403s are acceptable + * + * @return bool + * @throws S3Exception|\Exception if there is an unhandled exception + */ + protected function checkExistenceWithCommand(CommandInterface $command, $accept403 = false) + { + try { + $command->execute(); + $exists = true; + } catch (AccessDeniedException $e) { + $exists = (bool) $accept403; + } catch (S3Exception $e) { + $exists = false; + if ($e->getResponse()->getStatusCode() >= 500) { + // @codeCoverageIgnoreStart + throw $e; + // @codeCoverageIgnoreEnd + } + } + + return $exists; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/S3Md5Listener.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/S3Md5Listener.php new file mode 100644 index 0000000..7558c47 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/S3Md5Listener.php @@ -0,0 +1,73 @@ + 'onCommandAfterPrepare'); + } + + public function __construct(SignatureInterface $signature) + { + $this->signature = $signature; + } + + public function onCommandAfterPrepare(Event $event) + { + $command = $event['command']; + $operation = $command->getOperation(); + + if ($operation->getData('contentMd5')) { + // Add the MD5 if it is required for all signers + $this->addMd5($command); + } elseif ($operation->hasParam('ContentMD5')) { + $value = $command['ContentMD5']; + // Add a computed MD5 if the parameter is set to true or if + // not using Signature V4 and the value is not set (null). + if ($value === true || + ($value === null && !($this->signature instanceof SignatureV4)) + ) { + $this->addMd5($command); + } + } + } + + private function addMd5(CommandInterface $command) + { + $request = $command->getRequest(); + $body = $request->getBody(); + if ($body && $body->getSize() > 0) { + if (false !== ($md5 = $body->getContentMd5(true, true))) { + $request->setHeader('Content-MD5', $md5); + } + } + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/S3Signature.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/S3Signature.php new file mode 100644 index 0000000..ef9a86b --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/S3Signature.php @@ -0,0 +1,266 @@ +signableQueryString); + + // Add the security token header if one is being used by the credentials + if ($token = $credentials->getSecurityToken()) { + $request->setHeader('x-amz-security-token', $token); + } + + $request->removeHeader('x-amz-date'); + $request->setHeader('Date', gmdate(\DateTime::RFC2822)); + + $stringToSign = $this->createCanonicalizedString($request); + $request->getParams()->set('aws.string_to_sign', $stringToSign); + + $request->setHeader( + 'Authorization', + 'AWS ' . $credentials->getAccessKeyId() . ':' . $this->signString($stringToSign, $credentials) + ); + } + + public function createPresignedUrl( + RequestInterface $request, + CredentialsInterface $credentials, + $expires + ) { + if ($expires instanceof \DateTime) { + $expires = $expires->getTimestamp(); + } elseif (!is_numeric($expires)) { + $expires = strtotime($expires); + } + + // Operate on a clone of the request, so the original is not altered + $request = clone $request; + + // URL encoding already occurs in the URI template expansion. Undo that and encode using the same encoding as + // GET object, PUT object, etc. + $path = S3Client::encodeKey(rawurldecode($request->getPath())); + $request->setPath($path); + + // Make sure to handle temporary credentials + if ($token = $credentials->getSecurityToken()) { + $request->setHeader('x-amz-security-token', $token); + $request->getQuery()->set('x-amz-security-token', $token); + } + + // Set query params required for pre-signed URLs + $request->getQuery() + ->set('AWSAccessKeyId', $credentials->getAccessKeyId()) + ->set('Expires', $expires) + ->set('Signature', $this->signString( + $this->createCanonicalizedString($request, $expires), + $credentials + )); + + // Move X-Amz-* headers to the query string + foreach ($request->getHeaders() as $name => $header) { + $name = strtolower($name); + if (strpos($name, 'x-amz-') === 0) { + $request->getQuery()->set($name, (string) $header); + $request->removeHeader($name); + } + } + + return $request->getUrl(); + } + + public function signString($string, CredentialsInterface $credentials) + { + return base64_encode(hash_hmac('sha1', $string, $credentials->getSecretKey(), true)); + } + + public function createCanonicalizedString(RequestInterface $request, $expires = null) + { + $buffer = $request->getMethod() . "\n"; + + // Add the interesting headers + foreach ($this->signableHeaders as $header) { + $buffer .= (string) $request->getHeader($header) . "\n"; + } + + // Choose dates from left to right based on what's set + $date = $expires ?: (string) $request->getHeader('date'); + + $buffer .= "{$date}\n" + . $this->createCanonicalizedAmzHeaders($request) + . $this->createCanonicalizedResource($request); + + return $buffer; + } + + /** + * Create a canonicalized AmzHeaders string for a signature. + * + * @param RequestInterface $request Request from which to gather headers + * + * @return string Returns canonicalized AMZ headers. + */ + private function createCanonicalizedAmzHeaders(RequestInterface $request) + { + $headers = array(); + foreach ($request->getHeaders() as $name => $header) { + $name = strtolower($name); + if (strpos($name, 'x-amz-') === 0) { + $value = trim((string) $header); + if ($value || $value === '0') { + $headers[$name] = $name . ':' . $value; + } + } + } + + if (!$headers) { + return ''; + } + + ksort($headers); + + return implode("\n", $headers) . "\n"; + } + + /** + * Create a canonicalized resource for a request + * + * @param RequestInterface $request Request for the resource + * + * @return string + */ + private function createCanonicalizedResource(RequestInterface $request) + { + $buffer = $request->getParams()->get('s3.resource'); + // When sending a raw HTTP request (e.g. $client->get()) + if (null === $buffer) { + $bucket = $request->getParams()->get('bucket') ?: $this->parseBucketName($request); + // Use any specified bucket name, the parsed bucket name, or no bucket name when interacting with GetService + $buffer = $bucket ? "/{$bucket}" : ''; + // Remove encoding from the path and use the S3 specific encoding + $path = S3Client::encodeKey(rawurldecode($request->getPath())); + // if the bucket was path style, then ensure that the bucket wasn't duplicated in the resource + $buffer .= preg_replace("#^/{$bucket}/{$bucket}#", "/{$bucket}", $path); + } + + // Remove double slashes + $buffer = str_replace('//', '/', $buffer); + + // Add sub resource parameters + $query = $request->getQuery(); + $first = true; + foreach ($this->signableQueryString as $key) { + if ($query->hasKey($key)) { + $value = $query[$key]; + $buffer .= $first ? '?' : '&'; + $first = false; + $buffer .= $key; + // Don't add values for empty sub-resources + if ($value !== '' && + $value !== false && + $value !== null && + $value !== QueryString::BLANK + ) { + $buffer .= "={$value}"; + } + } + } + + return $buffer; + } + + /** + * Parse the bucket name from a request object + * + * @param RequestInterface $request Request to parse + * + * @return string + */ + private function parseBucketName(RequestInterface $request) + { + $baseUrl = Url::factory($request->getClient()->getBaseUrl()); + $baseHost = $baseUrl->getHost(); + $host = $request->getHost(); + + if (strpos($host, $baseHost) === false) { + // Does not contain the base URL, so it's either a redirect, CNAME, or using a different region + $baseHost = ''; + // For every known S3 host, check if that host is present on the request + $regions = $request->getClient()->getDescription()->getData('regions'); + foreach ($regions as $region) { + if (strpos($host, $region['hostname']) !== false) { + // This host matches the request host. Tells use the region and endpoint-- we can derive the bucket + $baseHost = $region['hostname']; + break; + } + } + // If no matching base URL was found, then assume that this is a CNAME, and the CNAME is the bucket + if (!$baseHost) { + return $host; + } + } + + // Remove the baseURL from the host of the request to attempt to determine the bucket name + return trim(str_replace($baseHost, '', $request->getHost()), ' .'); + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/S3SignatureInterface.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/S3SignatureInterface.php new file mode 100644 index 0000000..0b7e940 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/S3SignatureInterface.php @@ -0,0 +1,24 @@ +hasHeader('x-amz-content-sha256')) { + $request->setHeader( + 'x-amz-content-sha256', + $this->getPayload($request) + ); + } + + parent::signRequest($request, $credentials); + } + + /** + * Override used to allow pre-signed URLs to be created for an + * in-determinate request payload. + */ + protected function getPresignedPayload(RequestInterface $request) + { + return 'UNSIGNED-PAYLOAD'; + } + + /** + * Amazon S3 does not double-encode the path component in the canonical req + */ + protected function createCanonicalizedPath(RequestInterface $request) + { + return '/' . ltrim($request->getPath(), '/'); + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/SocketTimeoutChecker.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/SocketTimeoutChecker.php new file mode 100644 index 0000000..ede2b96 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/SocketTimeoutChecker.php @@ -0,0 +1,71 @@ +setNext($next); + } + } + + /** + * {@inheridoc} + */ + public function makesDecision() + { + return true; + } + + /** + * {@inheritdoc} + */ + protected function getDelay( + $retries, + RequestInterface $request, + Response $response = null, + HttpException $e = null + ) { + if ($response + && $response->getStatusCode() == 400 + && strpos($response->getBody(), self::ERR) + ) { + return true; + } + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/SseCpkListener.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/SseCpkListener.php new file mode 100644 index 0000000..c1a9260 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/SseCpkListener.php @@ -0,0 +1,68 @@ + 'onCommandBeforePrepare'); + } + + public function onCommandBeforePrepare(Event $event) + { + /** @var CommandInterface $command */ + $command = $event['command']; + + // Allows only HTTPS connections when using SSE-C + if ($command['SSECustomerKey'] || + $command['CopySourceSSECustomerKey'] + ) { + $this->validateScheme($command); + } + + // Prepare the normal SSE-CPK headers + if ($command['SSECustomerKey']) { + $this->prepareSseParams($command); + } + + // If it's a copy operation, prepare the SSE-CPK headers for the source. + if ($command['CopySourceSSECustomerKey']) { + $this->prepareSseParams($command, true); + } + } + + private function validateScheme(CommandInterface $command) + { + if ($command->getClient()->getConfig('scheme') !== 'https') { + throw new RuntimeException('You must configure your S3 client to ' + . 'use HTTPS in order to use the SSE-C features.'); + } + } + + private function prepareSseParams( + CommandInterface $command, + $isCopy = false + ) { + $prefix = $isCopy ? 'CopySource' : ''; + + // Base64 encode the provided key + $key = $command[$prefix . 'SSECustomerKey']; + $command[$prefix . 'SSECustomerKey'] = base64_encode($key); + + // Base64 the provided MD5 or, generate an MD5 if not provided + if ($md5 = $command[$prefix . 'SSECustomerKeyMD5']) { + $command[$prefix . 'SSECustomerKeyMD5'] = base64_encode($md5); + } else { + $command[$prefix . 'SSECustomerKeyMD5'] = base64_encode(md5($key, true)); + } + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/StreamWrapper.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/StreamWrapper.php new file mode 100644 index 0000000..b191ef2 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/StreamWrapper.php @@ -0,0 +1,907 @@ +/" files with PHP streams, supporting "r", "w", "a", "x". + * + * # Supported stream related PHP functions: + * - fopen, fclose, fread, fwrite, fseek, ftell, feof, fflush + * - opendir, closedir, readdir, rewinddir + * - copy, rename, unlink + * - mkdir, rmdir, rmdir (recursive) + * - file_get_contents, file_put_contents + * - file_exists, filesize, is_file, is_dir + * + * # Opening "r" (read only) streams: + * + * Read only streams are truly streaming by default and will not allow you to seek. This is because data + * read from the stream is not kept in memory or on the local filesystem. You can force a "r" stream to be seekable + * by setting the "seekable" stream context option true. This will allow true streaming of data from Amazon S3, but + * will maintain a buffer of previously read bytes in a 'php://temp' stream to allow seeking to previously read bytes + * from the stream. + * + * You may pass any GetObject parameters as 's3' stream context options. These options will affect how the data is + * downloaded from Amazon S3. + * + * # Opening "w" and "x" (write only) streams: + * + * Because Amazon S3 requires a Content-Length header, write only streams will maintain a 'php://temp' stream to buffer + * data written to the stream until the stream is flushed (usually by closing the stream with fclose). + * + * You may pass any PutObject parameters as 's3' stream context options. These options will affect how the data is + * uploaded to Amazon S3. + * + * When opening an "x" stream, the file must exist on Amazon S3 for the stream to open successfully. + * + * # Opening "a" (write only append) streams: + * + * Similar to "w" streams, opening append streams requires that the data be buffered in a "php://temp" stream. Append + * streams will attempt to download the contents of an object in Amazon S3, seek to the end of the object, then allow + * you to append to the contents of the object. The data will then be uploaded using a PutObject operation when the + * stream is flushed (usually with fclose). + * + * You may pass any GetObject and/or PutObject parameters as 's3' stream context options. These options will affect how + * the data is downloaded and uploaded from Amazon S3. + * + * Stream context options: + * + * - "seekable": Set to true to create a seekable "r" (read only) stream by using a php://temp stream buffer + * - For "unlink" only: Any option that can be passed to the DeleteObject operation + */ +class StreamWrapper +{ + /** + * @var resource|null Stream context (this is set by PHP when a context is used) + */ + public $context; + + /** + * @var S3Client Client used to send requests + */ + protected static $client; + + /** + * @var string Mode the stream was opened with + */ + protected $mode; + + /** + * @var EntityBody Underlying stream resource + */ + protected $body; + + /** + * @var array Current parameters to use with the flush operation + */ + protected $params; + + /** + * @var ListObjectsIterator Iterator used with opendir() and subsequent readdir() calls + */ + protected $objectIterator; + + /** + * @var string The bucket that was opened when opendir() was called + */ + protected $openedBucket; + + /** + * @var string The prefix of the bucket that was opened with opendir() + */ + protected $openedBucketPrefix; + + /** + * @var array The next key to retrieve when using a directory iterator. Helps for fast directory traversal. + */ + protected static $nextStat = array(); + + /** + * Register the 's3://' stream wrapper + * + * @param S3Client $client Client to use with the stream wrapper + */ + public static function register(S3Client $client) + { + if (in_array('s3', stream_get_wrappers())) { + stream_wrapper_unregister('s3'); + } + + stream_wrapper_register('s3', get_called_class(), STREAM_IS_URL); + static::$client = $client; + } + + /** + * Close the stream + */ + public function stream_close() + { + $this->body = null; + } + + /** + * @param string $path + * @param string $mode + * @param int $options + * @param string $opened_path + * + * @return bool + */ + public function stream_open($path, $mode, $options, &$opened_path) + { + // We don't care about the binary flag + $this->mode = $mode = rtrim($mode, 'bt'); + $this->params = $params = $this->getParams($path); + $errors = array(); + + if (!$params['Key']) { + $errors[] = 'Cannot open a bucket. You must specify a path in the form of s3://bucket/key'; + } + + if (strpos($mode, '+')) { + $errors[] = 'The Amazon S3 stream wrapper does not allow simultaneous reading and writing.'; + } + + if (!in_array($mode, array('r', 'w', 'a', 'x'))) { + $errors[] = "Mode not supported: {$mode}. Use one 'r', 'w', 'a', or 'x'."; + } + + // When using mode "x" validate if the file exists before attempting to read + if ($mode == 'x' && static::$client->doesObjectExist($params['Bucket'], $params['Key'], $this->getOptions())) { + $errors[] = "{$path} already exists on Amazon S3"; + } + + if (!$errors) { + if ($mode == 'r') { + return $this->openReadStream($params, $errors); + } elseif ($mode == 'a') { + return $this->openAppendStream($params, $errors); + } else { + return $this->openWriteStream($params, $errors); + } + } + + return $this->triggerError($errors); + } + + /** + * @return bool + */ + public function stream_eof() + { + return $this->body->feof(); + } + + /** + * @return bool + */ + public function stream_flush() + { + if ($this->mode == 'r') { + return false; + } + + $this->body->rewind(); + $params = $this->params; + $params['Body'] = $this->body; + + // Attempt to guess the ContentType of the upload based on the + // file extension of the key + if (!isset($params['ContentType']) && + ($type = Mimetypes::getInstance()->fromFilename($params['Key'])) + ) { + $params['ContentType'] = $type; + } + + try { + static::$client->putObject($params); + return true; + } catch (\Exception $e) { + return $this->triggerError($e->getMessage()); + } + } + + /** + * Read data from the underlying stream + * + * @param int $count Amount of bytes to read + * + * @return string + */ + public function stream_read($count) + { + return $this->body->read($count); + } + + /** + * Seek to a specific byte in the stream + * + * @param int $offset Seek offset + * @param int $whence Whence (SEEK_SET, SEEK_CUR, SEEK_END) + * + * @return bool + */ + public function stream_seek($offset, $whence = SEEK_SET) + { + return $this->body->seek($offset, $whence); + } + + /** + * Get the current position of the stream + * + * @return int Returns the current position in the stream + */ + public function stream_tell() + { + return $this->body->ftell(); + } + + /** + * Write data the to the stream + * + * @param string $data + * + * @return int Returns the number of bytes written to the stream + */ + public function stream_write($data) + { + return $this->body->write($data); + } + + /** + * Delete a specific object + * + * @param string $path + * @return bool + */ + public function unlink($path) + { + try { + $this->clearStatInfo($path); + static::$client->deleteObject($this->getParams($path)); + return true; + } catch (\Exception $e) { + return $this->triggerError($e->getMessage()); + } + } + + /** + * @return array + */ + public function stream_stat() + { + $stat = fstat($this->body->getStream()); + // Add the size of the underlying stream if it is known + if ($this->mode == 'r' && $this->body->getSize()) { + $stat[7] = $stat['size'] = $this->body->getSize(); + } + + return $stat; + } + + /** + * Provides information for is_dir, is_file, filesize, etc. Works on buckets, keys, and prefixes + * + * @param string $path + * @param int $flags + * + * @return array Returns an array of stat data + * @link http://www.php.net/manual/en/streamwrapper.url-stat.php + */ + public function url_stat($path, $flags) + { + // Check if this path is in the url_stat cache + if (isset(static::$nextStat[$path])) { + return static::$nextStat[$path]; + } + + $parts = $this->getParams($path); + + if (!$parts['Key']) { + // Stat "directories": buckets, or "s3://" + if (!$parts['Bucket'] || static::$client->doesBucketExist($parts['Bucket'])) { + return $this->formatUrlStat($path); + } else { + return $this->triggerError("File or directory not found: {$path}", $flags); + } + } + + try { + try { + $result = static::$client->headObject($parts)->toArray(); + if (substr($parts['Key'], -1, 1) == '/' && $result['ContentLength'] == 0) { + // Return as if it is a bucket to account for console bucket objects (e.g., zero-byte object "foo/") + return $this->formatUrlStat($path); + } else { + // Attempt to stat and cache regular object + return $this->formatUrlStat($result); + } + } catch (NoSuchKeyException $e) { + // Maybe this isn't an actual key, but a prefix. Do a prefix listing of objects to determine. + $result = static::$client->listObjects(array( + 'Bucket' => $parts['Bucket'], + 'Prefix' => rtrim($parts['Key'], '/') . '/', + 'MaxKeys' => 1 + )); + if (!$result['Contents'] && !$result['CommonPrefixes']) { + return $this->triggerError("File or directory not found: {$path}", $flags); + } + // This is a directory prefix + return $this->formatUrlStat($path); + } + } catch (\Exception $e) { + return $this->triggerError($e->getMessage(), $flags); + } + } + + /** + * Support for mkdir(). + * + * @param string $path Directory which should be created. + * @param int $mode Permissions. 700-range permissions map to ACL_PUBLIC. 600-range permissions map to + * ACL_AUTH_READ. All other permissions map to ACL_PRIVATE. Expects octal form. + * @param int $options A bitwise mask of values, such as STREAM_MKDIR_RECURSIVE. + * + * @return bool + * @link http://www.php.net/manual/en/streamwrapper.mkdir.php + */ + public function mkdir($path, $mode, $options) + { + $params = $this->getParams($path); + if (!$params['Bucket']) { + return false; + } + + if (!isset($params['ACL'])) { + $params['ACL'] = $this->determineAcl($mode); + } + + return !isset($params['Key']) || $params['Key'] === '/' + ? $this->createBucket($path, $params) + : $this->createPseudoDirectory($path, $params); + } + + /** + * Remove a bucket from Amazon S3 + * + * @param string $path the directory path + * @param int $options A bitwise mask of values + * + * @return bool true if directory was successfully removed + * @link http://www.php.net/manual/en/streamwrapper.rmdir.php + */ + public function rmdir($path, $options) + { + $params = $this->getParams($path); + if (!$params['Bucket']) { + return $this->triggerError('You cannot delete s3://. Please specify a bucket.'); + } + + try { + + if (!$params['Key']) { + static::$client->deleteBucket(array('Bucket' => $params['Bucket'])); + $this->clearStatInfo($path); + return true; + } + + // Use a key that adds a trailing slash if needed. + $prefix = rtrim($params['Key'], '/') . '/'; + + $result = static::$client->listObjects(array( + 'Bucket' => $params['Bucket'], + 'Prefix' => $prefix, + 'MaxKeys' => 1 + )); + + // Check if the bucket contains keys other than the placeholder + if ($result['Contents']) { + foreach ($result['Contents'] as $key) { + if ($key['Key'] == $prefix) { + continue; + } + return $this->triggerError('Psuedo folder is not empty'); + } + return $this->unlink(rtrim($path, '/') . '/'); + } + + return $result['CommonPrefixes'] + ? $this->triggerError('Pseudo folder contains nested folders') + : true; + + } catch (\Exception $e) { + return $this->triggerError($e->getMessage()); + } + } + + /** + * Support for opendir(). + * + * The opendir() method of the Amazon S3 stream wrapper supports a stream + * context option of "listFilter". listFilter must be a callable that + * accepts an associative array of object data and returns true if the + * object should be yielded when iterating the keys in a bucket. + * + * @param string $path The path to the directory (e.g. "s3://dir[]") + * @param string $options Whether or not to enforce safe_mode (0x04). Unused. + * + * @return bool true on success + * @see http://www.php.net/manual/en/function.opendir.php + */ + public function dir_opendir($path, $options) + { + // Reset the cache + $this->clearStatInfo(); + $params = $this->getParams($path); + $delimiter = $this->getOption('delimiter'); + $filterFn = $this->getOption('listFilter'); + + if ($delimiter === null) { + $delimiter = '/'; + } + + if ($params['Key']) { + $params['Key'] = rtrim($params['Key'], $delimiter) . $delimiter; + } + + $this->openedBucket = $params['Bucket']; + $this->openedBucketPrefix = $params['Key']; + $operationParams = array('Bucket' => $params['Bucket'], 'Prefix' => $params['Key']); + + if ($delimiter) { + $operationParams['Delimiter'] = $delimiter; + } + + $objectIterator = static::$client->getIterator('ListObjects', $operationParams, array( + 'return_prefixes' => true, + 'sort_results' => true + )); + + // Filter our "/" keys added by the console as directories, and ensure + // that if a filter function is provided that it passes the filter. + $this->objectIterator = new FilterIterator( + $objectIterator, + function ($key) use ($filterFn) { + // Each yielded results can contain a "Key" or "Prefix" + return (!$filterFn || call_user_func($filterFn, $key)) && + (!isset($key['Key']) || substr($key['Key'], -1, 1) !== '/'); + } + ); + + $this->objectIterator->next(); + + return true; + } + + /** + * Close the directory listing handles + * + * @return bool true on success + */ + public function dir_closedir() + { + $this->objectIterator = null; + + return true; + } + + /** + * This method is called in response to rewinddir() + * + * @return boolean true on success + */ + public function dir_rewinddir() + { + $this->clearStatInfo(); + $this->objectIterator->rewind(); + + return true; + } + + /** + * This method is called in response to readdir() + * + * @return string Should return a string representing the next filename, or false if there is no next file. + * + * @link http://www.php.net/manual/en/function.readdir.php + */ + public function dir_readdir() + { + // Skip empty result keys + if (!$this->objectIterator->valid()) { + return false; + } + + $current = $this->objectIterator->current(); + if (isset($current['Prefix'])) { + // Include "directories". Be sure to strip a trailing "/" + // on prefixes. + $prefix = rtrim($current['Prefix'], '/'); + $result = str_replace($this->openedBucketPrefix, '', $prefix); + $key = "s3://{$this->openedBucket}/{$prefix}"; + $stat = $this->formatUrlStat($prefix); + } else { + // Remove the prefix from the result to emulate other + // stream wrappers. + $result = str_replace($this->openedBucketPrefix, '', $current['Key']); + $key = "s3://{$this->openedBucket}/{$current['Key']}"; + $stat = $this->formatUrlStat($current); + } + + // Cache the object data for quick url_stat lookups used with + // RecursiveDirectoryIterator. + static::$nextStat = array($key => $stat); + $this->objectIterator->next(); + + return $result; + } + + /** + * Called in response to rename() to rename a file or directory. Currently only supports renaming objects. + * + * @param string $path_from the path to the file to rename + * @param string $path_to the new path to the file + * + * @return bool true if file was successfully renamed + * @link http://www.php.net/manual/en/function.rename.php + */ + public function rename($path_from, $path_to) + { + $partsFrom = $this->getParams($path_from); + $partsTo = $this->getParams($path_to); + $this->clearStatInfo($path_from); + $this->clearStatInfo($path_to); + + if (!$partsFrom['Key'] || !$partsTo['Key']) { + return $this->triggerError('The Amazon S3 stream wrapper only supports copying objects'); + } + + try { + // Copy the object and allow overriding default parameters if desired, but by default copy metadata + static::$client->copyObject($this->getOptions() + array( + 'Bucket' => $partsTo['Bucket'], + 'Key' => $partsTo['Key'], + 'CopySource' => '/' . $partsFrom['Bucket'] . '/' . rawurlencode($partsFrom['Key']), + 'MetadataDirective' => 'COPY' + )); + // Delete the original object + static::$client->deleteObject(array( + 'Bucket' => $partsFrom['Bucket'], + 'Key' => $partsFrom['Key'] + ) + $this->getOptions()); + } catch (\Exception $e) { + return $this->triggerError($e->getMessage()); + } + + return true; + } + + /** + * Cast the stream to return the underlying file resource + * + * @param int $cast_as STREAM_CAST_FOR_SELECT or STREAM_CAST_AS_STREAM + * + * @return resource + */ + public function stream_cast($cast_as) + { + return $this->body->getStream(); + } + + /** + * Get the stream context options available to the current stream + * + * @return array + */ + protected function getOptions() + { + $context = $this->context ?: stream_context_get_default(); + $options = stream_context_get_options($context); + + return isset($options['s3']) ? $options['s3'] : array(); + } + + /** + * Get a specific stream context option + * + * @param string $name Name of the option to retrieve + * + * @return mixed|null + */ + protected function getOption($name) + { + $options = $this->getOptions(); + + return isset($options[$name]) ? $options[$name] : null; + } + + /** + * Get the bucket and key from the passed path (e.g. s3://bucket/key) + * + * @param string $path Path passed to the stream wrapper + * + * @return array Hash of 'Bucket', 'Key', and custom params + */ + protected function getParams($path) + { + $parts = explode('/', substr($path, 5), 2); + + $params = $this->getOptions(); + unset($params['seekable']); + + return array( + 'Bucket' => $parts[0], + 'Key' => isset($parts[1]) ? $parts[1] : null + ) + $params; + } + + /** + * Serialize and sign a command, returning a request object + * + * @param CommandInterface $command Command to sign + * + * @return RequestInterface + */ + protected function getSignedRequest($command) + { + $request = $command->prepare(); + $request->dispatch('request.before_send', array('request' => $request)); + + return $request; + } + + /** + * Initialize the stream wrapper for a read only stream + * + * @param array $params Operation parameters + * @param array $errors Any encountered errors to append to + * + * @return bool + */ + protected function openReadStream(array $params, array &$errors) + { + // Create the command and serialize the request + $request = $this->getSignedRequest(static::$client->getCommand('GetObject', $params)); + // Create a stream that uses the EntityBody object + $factory = $this->getOption('stream_factory') ?: new PhpStreamRequestFactory(); + $this->body = $factory->fromRequest($request, array(), array('stream_class' => 'Guzzle\Http\EntityBody')); + + // Headers are placed in the "wrapper_data" array. The array of headers + // is simply an array of header lines of which the first line is the + // status line of the HTTP response. + $headers = $this->body->getMetaData('wrapper_data'); + + if ($headers && isset($headers[0])) { + $statusParts = explode(' ', $headers[0]); + $status = $statusParts[1]; + if ($status != 200) { + return $this->triggerError('Cannot open file: ' . $this->body); + } + } + + // Wrap the body in a caching entity body if seeking is allowed + if ($this->getOption('seekable')) { + $this->body = new CachingEntityBody($this->body); + } + + return true; + } + + /** + * Initialize the stream wrapper for a write only stream + * + * @param array $params Operation parameters + * @param array $errors Any encountered errors to append to + * + * @return bool + */ + protected function openWriteStream(array $params, array &$errors) + { + $this->body = new EntityBody(fopen('php://temp', 'r+')); + + return true; + } + + /** + * Initialize the stream wrapper for an append stream + * + * @param array $params Operation parameters + * @param array $errors Any encountered errors to append to + * + * @return bool + */ + protected function openAppendStream(array $params, array &$errors) + { + try { + // Get the body of the object + $this->body = static::$client->getObject($params)->get('Body'); + $this->body->seek(0, SEEK_END); + } catch (S3Exception $e) { + // The object does not exist, so use a simple write stream + $this->openWriteStream($params, $errors); + } + + return true; + } + + /** + * Trigger one or more errors + * + * @param string|array $errors Errors to trigger + * @param mixed $flags If set to STREAM_URL_STAT_QUIET, then no error or exception occurs + * + * @return bool Returns false + * @throws RuntimeException if throw_errors is true + */ + protected function triggerError($errors, $flags = null) + { + if ($flags & STREAM_URL_STAT_QUIET) { + // This is triggered with things like file_exists() + + if ($flags & STREAM_URL_STAT_LINK) { + // This is triggered for things like is_link() + return $this->formatUrlStat(false); + } + return false; + } + + // This is triggered when doing things like lstat() or stat() + trigger_error(implode("\n", (array) $errors), E_USER_WARNING); + + return false; + } + + /** + * Prepare a url_stat result array + * + * @param string|array $result Data to add + * + * @return array Returns the modified url_stat result + */ + protected function formatUrlStat($result = null) + { + static $statTemplate = array( + 0 => 0, 'dev' => 0, + 1 => 0, 'ino' => 0, + 2 => 0, 'mode' => 0, + 3 => 0, 'nlink' => 0, + 4 => 0, 'uid' => 0, + 5 => 0, 'gid' => 0, + 6 => -1, 'rdev' => -1, + 7 => 0, 'size' => 0, + 8 => 0, 'atime' => 0, + 9 => 0, 'mtime' => 0, + 10 => 0, 'ctime' => 0, + 11 => -1, 'blksize' => -1, + 12 => -1, 'blocks' => -1, + ); + + $stat = $statTemplate; + $type = gettype($result); + + // Determine what type of data is being cached + if ($type == 'NULL' || $type == 'string') { + // Directory with 0777 access - see "man 2 stat". + $stat['mode'] = $stat[2] = 0040777; + } elseif ($type == 'array' && isset($result['LastModified'])) { + // ListObjects or HeadObject result + $stat['mtime'] = $stat[9] = $stat['ctime'] = $stat[10] = strtotime($result['LastModified']); + $stat['size'] = $stat[7] = (isset($result['ContentLength']) ? $result['ContentLength'] : $result['Size']); + // Regular file with 0777 access - see "man 2 stat". + $stat['mode'] = $stat[2] = 0100777; + } + + return $stat; + } + + /** + * Clear the next stat result from the cache + * + * @param string $path If a path is specific, clearstatcache() will be called + */ + protected function clearStatInfo($path = null) + { + static::$nextStat = array(); + if ($path) { + clearstatcache(true, $path); + } + } + + /** + * Creates a bucket for the given parameters. + * + * @param string $path Stream wrapper path + * @param array $params A result of StreamWrapper::getParams() + * + * @return bool Returns true on success or false on failure + */ + private function createBucket($path, array $params) + { + if (static::$client->doesBucketExist($params['Bucket'])) { + return $this->triggerError("Directory already exists: {$path}"); + } + + try { + static::$client->createBucket($params); + $this->clearStatInfo($path); + return true; + } catch (\Exception $e) { + return $this->triggerError($e->getMessage()); + } + } + + /** + * Creates a pseudo-folder by creating an empty "/" suffixed key + * + * @param string $path Stream wrapper path + * @param array $params A result of StreamWrapper::getParams() + * + * @return bool + */ + private function createPseudoDirectory($path, array $params) + { + // Ensure the path ends in "/" and the body is empty. + $params['Key'] = rtrim($params['Key'], '/') . '/'; + $params['Body'] = ''; + + // Fail if this pseudo directory key already exists + if (static::$client->doesObjectExist($params['Bucket'], $params['Key'])) { + return $this->triggerError("Directory already exists: {$path}"); + } + + try { + static::$client->putObject($params); + $this->clearStatInfo($path); + return true; + } catch (\Exception $e) { + return $this->triggerError($e->getMessage()); + } + } + + /** + * Determine the most appropriate ACL based on a file mode. + * + * @param int $mode File mode + * + * @return string + */ + private function determineAcl($mode) + { + $mode = decoct($mode); + + if ($mode >= 700 && $mode <= 799) { + return 'public-read'; + } + + if ($mode >= 600 && $mode <= 699) { + return 'authenticated-read'; + } + + return 'private'; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Sync/AbstractSync.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Sync/AbstractSync.php new file mode 100644 index 0000000..ac5bbbe --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Sync/AbstractSync.php @@ -0,0 +1,127 @@ +options = Collection::fromConfig( + $options, + array('concurrency' => 10), + array('client', 'bucket', 'iterator', 'source_converter') + ); + $this->init(); + } + + public static function getAllEvents() + { + return array(self::BEFORE_TRANSFER, self::AFTER_TRANSFER); + } + + /** + * Begin transferring files + */ + public function transfer() + { + // Pull out chunks of uploads to upload in parallel + $iterator = new ChunkedIterator($this->options['iterator'], $this->options['concurrency']); + foreach ($iterator as $files) { + $this->transferFiles($files); + } + } + + /** + * Create a command or special transfer action for the + * + * @param \SplFileInfo $file File used to build the transfer + * + * @return CommandInterface|callable + */ + abstract protected function createTransferAction(\SplFileInfo $file); + + /** + * Hook to initialize subclasses + * @codeCoverageIgnore + */ + protected function init() {} + + /** + * Process and transfer a group of files + * + * @param array $files Files to transfer + */ + protected function transferFiles(array $files) + { + // Create the base event data object + $event = array('sync' => $this, 'client' => $this->options['client']); + + $commands = array(); + foreach ($files as $file) { + if ($action = $this->createTransferAction($file)) { + $event = array('command' => $action, 'file' => $file) + $event; + $this->dispatch(self::BEFORE_TRANSFER, $event); + if ($action instanceof CommandInterface) { + $commands[] = $action; + } elseif (is_callable($action)) { + $action(); + $this->dispatch(self::AFTER_TRANSFER, $event); + } + } + } + + $this->transferCommands($commands); + } + + /** + * Transfer an array of commands in parallel + * + * @param array $commands Commands to transfer + */ + protected function transferCommands(array $commands) + { + if ($commands) { + $this->options['client']->execute($commands); + // Notify listeners that each command finished + $event = array('sync' => $this, 'client' => $this->options['client']); + foreach ($commands as $command) { + $event['command'] = $command; + $this->dispatch(self::AFTER_TRANSFER, $event); + } + } + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Sync/AbstractSyncBuilder.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Sync/AbstractSyncBuilder.php new file mode 100644 index 0000000..1308c3d --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Sync/AbstractSyncBuilder.php @@ -0,0 +1,434 @@ +bucket = $bucket; + + return $this; + } + + /** + * Set the Amazon S3 client object that will send requests + * + * @param S3Client $client Amazon S3 client + * + * @return $this + */ + public function setClient(S3Client $client) + { + $this->client = $client; + + return $this; + } + + /** + * Set a custom iterator that returns \SplFileInfo objects for the source data + * + * @param \Iterator $iterator + * + * @return $this + */ + public function setSourceIterator(\Iterator $iterator) + { + $this->sourceIterator = $iterator; + + return $this; + } + + /** + * Set a custom object key provider instead of building one internally + * + * @param FileNameConverterInterface $converter Filename to object key provider + * + * @return $this + */ + public function setSourceFilenameConverter(FilenameConverterInterface $converter) + { + $this->sourceConverter = $converter; + + return $this; + } + + /** + * Set a custom object key provider instead of building one internally + * + * @param FileNameConverterInterface $converter Filename to object key provider + * + * @return $this + */ + public function setTargetFilenameConverter(FilenameConverterInterface $converter) + { + $this->targetConverter = $converter; + + return $this; + } + + /** + * Set the base directory of the files being transferred. The base directory is removed from each file path before + * converting the file path to an object key or vice versa. + * + * @param string $baseDir Base directory, which will be deleted from each uploaded object key + * + * @return $this + */ + public function setBaseDir($baseDir) + { + $this->baseDir = $baseDir; + + return $this; + } + + /** + * Specify a prefix to prepend to each Amazon S3 object key or the prefix where object are stored in a bucket + * + * Can be used to upload files to a pseudo sub-folder key or only download files from a pseudo sub-folder + * + * @param string $keyPrefix Prefix for each uploaded key + * + * @return $this + */ + public function setKeyPrefix($keyPrefix) + { + // Removing leading slash + $this->keyPrefix = ltrim($keyPrefix, '/'); + + return $this; + } + + /** + * Specify the delimiter used for the targeted filesystem (default delimiter is "/") + * + * @param string $delimiter Delimiter to use to separate paths + * + * @return $this + */ + public function setDelimiter($delimiter) + { + $this->delimiter = $delimiter; + + return $this; + } + + /** + * Specify an array of operation parameters to apply to each operation executed by the sync object + * + * @param array $params Associative array of PutObject (upload) GetObject (download) parameters + * + * @return $this + */ + public function setOperationParams(array $params) + { + $this->params = $params; + + return $this; + } + + /** + * Set the number of files that can be transferred concurrently + * + * @param int $concurrency Number of concurrent transfers + * + * @return $this + */ + public function setConcurrency($concurrency) + { + $this->concurrency = $concurrency; + + return $this; + } + + /** + * Set to true to force transfers even if a file already exists and has not changed + * + * @param bool $force Set to true to force transfers without checking if it has changed + * + * @return $this + */ + public function force($force = false) + { + $this->forcing = (bool) $force; + + return $this; + } + + /** + * Enable debug mode + * + * @param bool|resource $enabledOrResource Set to true or false to enable or disable debug output. Pass an opened + * fopen resource to write to instead of writing to standard out. + * @return $this + */ + public function enableDebugOutput($enabledOrResource = true) + { + $this->debug = $enabledOrResource; + + return $this; + } + + /** + * Add a filename filter that uses a regular expression to filter out files that you do not wish to transfer. + * + * @param string $search Regular expression search (in preg_match format). Any filename that matches this regex + * will not be transferred. + * @return $this + */ + public function addRegexFilter($search) + { + $this->assertFileIteratorSet(); + $this->sourceIterator = new FilterIterator($this->sourceIterator, function ($i) use ($search) { + return !preg_match($search, (string) $i); + }); + $this->sourceIterator->rewind(); + + return $this; + } + + /** + * Builds a UploadSync or DownloadSync object + * + * @return AbstractSync + */ + public function build() + { + $this->validateRequirements(); + $this->sourceConverter = $this->sourceConverter ?: $this->getDefaultSourceConverter(); + $this->targetConverter = $this->targetConverter ?: $this->getDefaultTargetConverter(); + + // Only wrap the source iterator in a changed files iterator if we are not forcing the transfers + if (!$this->forcing) { + $this->sourceIterator->rewind(); + $this->sourceIterator = new ChangedFilesIterator( + new \NoRewindIterator($this->sourceIterator), + $this->getTargetIterator(), + $this->sourceConverter, + $this->targetConverter + ); + $this->sourceIterator->rewind(); + } + + $sync = $this->specificBuild(); + + if ($this->params) { + $this->addCustomParamListener($sync); + } + + if ($this->debug) { + $this->addDebugListener($sync, is_bool($this->debug) ? STDOUT : $this->debug); + } + + return $sync; + } + + /** + * Hook to implement in subclasses + * + * @return AbstractSync + */ + abstract protected function specificBuild(); + + /** + * @return \Iterator + */ + abstract protected function getTargetIterator(); + + /** + * @return FilenameConverterInterface + */ + abstract protected function getDefaultSourceConverter(); + + /** + * @return FilenameConverterInterface + */ + abstract protected function getDefaultTargetConverter(); + + /** + * Add a listener to the sync object to output debug information while transferring + * + * @param AbstractSync $sync Sync object to listen to + * @param resource $resource Where to write debug messages + */ + abstract protected function addDebugListener(AbstractSync $sync, $resource); + + /** + * Validate that the builder has the minimal requirements + * + * @throws RuntimeException if the builder is not configured completely + */ + protected function validateRequirements() + { + if (!$this->client) { + throw new RuntimeException('No client was provided'); + } + if (!$this->bucket) { + throw new RuntimeException('No bucket was provided'); + } + $this->assertFileIteratorSet(); + } + + /** + * Ensure that the base file iterator has been provided + * + * @throws RuntimeException + */ + protected function assertFileIteratorSet() + { + // Interesting... Need to use isset because: Object of class GlobIterator could not be converted to boolean + if (!isset($this->sourceIterator)) { + throw new RuntimeException('A source file iterator must be specified'); + } + } + + /** + * Wraps a generated iterator in a filter iterator that removes directories + * + * @param \Iterator $iterator Iterator to wrap + * + * @return \Iterator + * @throws UnexpectedValueException + */ + protected function filterIterator(\Iterator $iterator) + { + $f = new FilterIterator($iterator, function ($i) { + if (!$i instanceof \SplFileInfo) { + throw new UnexpectedValueException('All iterators for UploadSync must return SplFileInfo objects'); + } + return $i->isFile(); + }); + + $f->rewind(); + + return $f; + } + + /** + * Add the custom param listener to a transfer object + * + * @param HasDispatcherInterface $sync + */ + protected function addCustomParamListener(HasDispatcherInterface $sync) + { + $params = $this->params; + $sync->getEventDispatcher()->addListener( + UploadSync::BEFORE_TRANSFER, + function (Event $e) use ($params) { + if ($e['command'] instanceof CommandInterface) { + $e['command']->overwriteWith($params); + } + } + ); + } + + /** + * Create an Amazon S3 file iterator based on the given builder settings + * + * @return OpendirIterator + */ + protected function createS3Iterator() + { + // Ensure that the stream wrapper is registered + $this->client->registerStreamWrapper(); + + // Calculate the opendir() bucket and optional key prefix location + $dir = "s3://{$this->bucket}"; + if ($this->keyPrefix) { + $dir .= '/' . ltrim($this->keyPrefix, '/ '); + } + + // Use opendir so that we can pass stream context to the iterator + $dh = opendir($dir, stream_context_create(array( + 's3' => array( + 'delimiter' => '', + 'listFilter' => function ($obj) { + // Ensure that we do not try to download a glacier object. + return !isset($obj['StorageClass']) || + $obj['StorageClass'] != 'GLACIER'; + } + ) + ))); + + // Add the trailing slash for the OpendirIterator concatenation + if (!$this->keyPrefix) { + $dir .= '/'; + } + + return $this->filterIterator(new \NoRewindIterator(new OpendirIterator($dh, $dir))); + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Sync/ChangedFilesIterator.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Sync/ChangedFilesIterator.php new file mode 100644 index 0000000..dc3e07c --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Sync/ChangedFilesIterator.php @@ -0,0 +1,130 @@ +targetIterator = $targetIterator; + $this->sourceConverter = $sourceConverter; + $this->targetConverter = $targetConverter; + parent::__construct($sourceIterator); + } + + public function accept() + { + $current = $this->current(); + $key = $this->sourceConverter->convert($this->normalize($current)); + + if (!($data = $this->getTargetData($key))) { + return true; + } + + // Ensure the Content-Length matches and it hasn't been modified since the mtime + return $current->getSize() != $data[0] || $current->getMTime() > $data[1]; + } + + /** + * Returns an array of the files from the target iterator that were not found in the source iterator + * + * @return array + */ + public function getUnmatched() + { + return array_keys($this->cache); + } + + /** + * Get key information from the target iterator for a particular filename + * + * @param string $key Target iterator filename + * + * @return array|bool Returns an array of data, or false if the key is not in the iterator + */ + protected function getTargetData($key) + { + $key = $this->cleanKey($key); + + if (isset($this->cache[$key])) { + $result = $this->cache[$key]; + unset($this->cache[$key]); + return $result; + } + + $it = $this->targetIterator; + + while ($it->valid()) { + $value = $it->current(); + $data = array($value->getSize(), $value->getMTime()); + $filename = $this->targetConverter->convert($this->normalize($value)); + $filename = $this->cleanKey($filename); + + if ($filename == $key) { + return $data; + } + + $this->cache[$filename] = $data; + $it->next(); + } + + return false; + } + + private function normalize($current) + { + $asString = (string) $current; + + return strpos($asString, 's3://') === 0 + ? $asString + : $current->getRealPath(); + } + + private function cleanKey($key) + { + return ltrim($key, '/'); + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Sync/DownloadSync.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Sync/DownloadSync.php new file mode 100644 index 0000000..560ccdf --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Sync/DownloadSync.php @@ -0,0 +1,95 @@ +getPathname(); + list($bucket, $key) = explode('/', substr($sourceFilename, 5), 2); + $filename = $this->options['source_converter']->convert($sourceFilename); + $this->createDirectory($filename); + + // Some S3 buckets contains nested files under the same name as a directory + if (is_dir($filename)) { + return false; + } + + // Allow a previously interrupted download to resume + if (file_exists($filename) && $this->options['resumable']) { + return new ResumableDownload($this->options['client'], $bucket, $key, $filename); + } + + return $this->options['client']->getCommand('GetObject', array( + 'Bucket' => $bucket, + 'Key' => $key, + 'SaveAs' => $filename + )); + } + + /** + * @codeCoverageIgnore + */ + protected function createDirectory($filename) + { + $directory = dirname($filename); + // Some S3 clients create empty files to denote directories. Remove these so that we can create the directory. + if (is_file($directory) && filesize($directory) == 0) { + unlink($directory); + } + // Create the directory if it does not exist + if (!is_dir($directory) && !mkdir($directory, 0777, true)) { + $errors = error_get_last(); + throw new RuntimeException('Could not create directory: ' . $directory . ' - ' . $errors['message']); + } + } + + protected function filterCommands(array $commands) + { + // Build a list of all of the directories in each command so that we don't attempt to create an empty dir in + // the same parallel transfer as attempting to create a file in that dir + $dirs = array(); + foreach ($commands as $command) { + $parts = array_values(array_filter(explode('/', $command['SaveAs']))); + for ($i = 0, $total = count($parts); $i < $total; $i++) { + $dir = ''; + for ($j = 0; $j < $i; $j++) { + $dir .= '/' . $parts[$j]; + } + if ($dir && !in_array($dir, $dirs)) { + $dirs[] = $dir; + } + } + } + + return array_filter($commands, function ($command) use ($dirs) { + return !in_array($command['SaveAs'], $dirs); + }); + } + + protected function transferCommands(array $commands) + { + parent::transferCommands($this->filterCommands($commands)); + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Sync/DownloadSyncBuilder.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Sync/DownloadSyncBuilder.php new file mode 100644 index 0000000..d9cd044 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Sync/DownloadSyncBuilder.php @@ -0,0 +1,129 @@ +directory = $directory; + + return $this; + } + + /** + * Call this function to allow partial downloads to be resumed if the download was previously interrupted + * + * @return self + */ + public function allowResumableDownloads() + { + $this->resumable = true; + + return $this; + } + + protected function specificBuild() + { + $sync = new DownloadSync(array( + 'client' => $this->client, + 'bucket' => $this->bucket, + 'iterator' => $this->sourceIterator, + 'source_converter' => $this->sourceConverter, + 'target_converter' => $this->targetConverter, + 'concurrency' => $this->concurrency, + 'resumable' => $this->resumable, + 'directory' => $this->directory + )); + + return $sync; + } + + protected function getTargetIterator() + { + if (!$this->directory) { + throw new RuntimeException('A directory is required'); + } + + if (!is_dir($this->directory) && !mkdir($this->directory, 0777, true)) { + // @codeCoverageIgnoreStart + throw new RuntimeException('Unable to create root download directory: ' . $this->directory); + // @codeCoverageIgnoreEnd + } + + return $this->filterIterator( + new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($this->directory)) + ); + } + + protected function getDefaultSourceConverter() + { + return new KeyConverter( + "s3://{$this->bucket}/{$this->baseDir}", + $this->directory . DIRECTORY_SEPARATOR, $this->delimiter + ); + } + + protected function getDefaultTargetConverter() + { + return new KeyConverter("s3://{$this->bucket}/{$this->baseDir}", '', $this->delimiter); + } + + protected function assertFileIteratorSet() + { + $this->sourceIterator = $this->sourceIterator ?: $this->createS3Iterator(); + } + + protected function addDebugListener(AbstractSync $sync, $resource) + { + $sync->getEventDispatcher()->addListener(UploadSync::BEFORE_TRANSFER, function (Event $e) use ($resource) { + if ($e['command'] instanceof CommandInterface) { + $from = $e['command']['Bucket'] . '/' . $e['command']['Key']; + $to = $e['command']['SaveAs'] instanceof EntityBodyInterface + ? $e['command']['SaveAs']->getUri() + : $e['command']['SaveAs']; + fwrite($resource, "Downloading {$from} -> {$to}\n"); + } elseif ($e['command'] instanceof ResumableDownload) { + $from = $e['command']->getBucket() . '/' . $e['command']->getKey(); + $to = $e['command']->getFilename(); + fwrite($resource, "Resuming {$from} -> {$to}\n"); + } + }); + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Sync/FilenameConverterInterface.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Sync/FilenameConverterInterface.php new file mode 100644 index 0000000..ded2cfb --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Sync/FilenameConverterInterface.php @@ -0,0 +1,32 @@ +baseDir = (string) $baseDir; + $this->prefix = $prefix; + $this->delimiter = $delimiter; + } + + public function convert($filename) + { + $key = $filename; + + // Remove base directory from the key (only the first occurrence) + if ($this->baseDir && (false !== $pos = strpos($filename, $this->baseDir))) { + $key = substr_replace($key, '', $pos, strlen($this->baseDir)); + } + + // Replace Windows directory separators to become Unix style, and convert that to the custom dir separator + $key = str_replace('/', $this->delimiter, str_replace('\\', '/', $key)); + + // Add the key prefix and remove double slashes that are not in the protocol (e.g. prefixed with ":") + $delim = preg_quote($this->delimiter); + $key = preg_replace( + "#(?delimiter, + $this->prefix . $key + ); + + return $key; + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Sync/UploadSync.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Sync/UploadSync.php new file mode 100644 index 0000000..31b81e6 --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Sync/UploadSync.php @@ -0,0 +1,86 @@ +options['multipart_upload_size']) { + $this->options['multipart_upload_size'] = AbstractTransfer::MIN_PART_SIZE; + } + } + + protected function createTransferAction(\SplFileInfo $file) + { + // Open the file for reading + $filename = $file->getRealPath() ?: $file->getPathName(); + + if (!($resource = fopen($filename, 'r'))) { + // @codeCoverageIgnoreStart + throw new RuntimeException('Could not open ' . $file->getPathname() . ' for reading'); + // @codeCoverageIgnoreEnd + } + + $key = $this->options['source_converter']->convert($filename); + $body = EntityBody::factory($resource); + + // Determine how the ACL should be applied + if ($acl = $this->options['acl']) { + $aclType = is_string($this->options['acl']) ? 'ACL' : 'ACP'; + } else { + $acl = 'private'; + $aclType = 'ACL'; + } + + // Use a multi-part upload if the file is larger than the cutoff size and is a regular file + if ($body->getWrapper() == 'plainfile' && $file->getSize() >= $this->options['multipart_upload_size']) { + $builder = UploadBuilder::newInstance() + ->setBucket($this->options['bucket']) + ->setKey($key) + ->setMinPartSize($this->options['multipart_upload_size']) + ->setOption($aclType, $acl) + ->setClient($this->options['client']) + ->setSource($body) + ->setConcurrency($this->options['concurrency']); + + $this->dispatch( + self::BEFORE_MULTIPART_BUILD, + array('builder' => $builder, 'file' => $file) + ); + + return $builder->build(); + } + + return $this->options['client']->getCommand('PutObject', array( + 'Bucket' => $this->options['bucket'], + 'Key' => $key, + 'Body' => $body, + $aclType => $acl + )); + } +} diff --git a/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Sync/UploadSyncBuilder.php b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Sync/UploadSyncBuilder.php new file mode 100644 index 0000000..8f7907c --- /dev/null +++ b/plugins/updraftplus/vendor/aws/aws-sdk-php/src/Aws/S3/Sync/UploadSyncBuilder.php @@ -0,0 +1,190 @@ +baseDir = realpath($path); + $this->sourceIterator = $this->filterIterator(new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator( + $path, + FI::SKIP_DOTS | FI::UNIX_PATHS | FI::FOLLOW_SYMLINKS + ))); + + return $this; + } + + /** + * Set a glob expression that will match files to upload to Amazon S3 + * + * @param string $glob Glob expression + * + * @return $this + * @link http://www.php.net/manual/en/function.glob.php + */ + public function uploadFromGlob($glob) + { + $this->sourceIterator = $this->filterIterator( + new \GlobIterator($glob, FI::SKIP_DOTS | FI::UNIX_PATHS | FI::FOLLOW_SYMLINKS) + ); + + return $this; + } + + /** + * Set a canned ACL to apply to each uploaded object + * + * @param string $acl Canned ACL for each upload + * + * @return $this + */ + public function setAcl($acl) + { + $this->acp = $acl; + + return $this; + } + + /** + * Set an Access Control Policy to apply to each uploaded object + * + * @param Acp $acp Access control policy + * + * @return $this + */ + public function setAcp(Acp $acp) + { + $this->acp = $acp; + + return $this; + } + + /** + * Set the multipart upload size threshold. When the size of a file exceeds this value, the file will be uploaded + * using a multipart upload. + * + * @param int $size Size threshold + * + * @return $this + */ + public function setMultipartUploadSize($size) + { + $this->multipartUploadSize = $size; + + return $this; + } + + protected function specificBuild() + { + $sync = new UploadSync(array( + 'client' => $this->client, + 'bucket' => $this->bucket, + 'iterator' => $this->sourceIterator, + 'source_converter' => $this->sourceConverter, + 'target_converter' => $this->targetConverter, + 'concurrency' => $this->concurrency, + 'multipart_upload_size' => $this->multipartUploadSize, + 'acl' => $this->acp + )); + + return $sync; + } + + protected function addCustomParamListener(HasDispatcherInterface $sync) + { + // Handle the special multi-part upload event + parent::addCustomParamListener($sync); + $params = $this->params; + $sync->getEventDispatcher()->addListener( + UploadSync::BEFORE_MULTIPART_BUILD, + function (Event $e) use ($params) { + foreach ($params as $k => $v) { + $e['builder']->setOption($k, $v); + } + } + ); + } + + protected function getTargetIterator() + { + return $this->createS3Iterator(); + } + + protected function getDefaultSourceConverter() + { + return new KeyConverter($this->baseDir, $this->keyPrefix . $this->delimiter, $this->delimiter); + } + + protected function getDefaultTargetConverter() + { + return new KeyConverter('s3://' . $this->bucket . '/', '', DIRECTORY_SEPARATOR); + } + + protected function addDebugListener(AbstractSync $sync, $resource) + { + $sync->getEventDispatcher()->addListener(UploadSync::BEFORE_TRANSFER, function (Event $e) use ($resource) { + + $c = $e['command']; + + if ($c instanceof CommandInterface) { + $uri = $c['Body']->getUri(); + $size = $c['Body']->getSize(); + fwrite($resource, "Uploading {$uri} -> {$c['Key']} ({$size} bytes)\n"); + return; + } + + // Multipart upload + $body = $c->getSource(); + $totalSize = $body->getSize(); + $progress = 0; + fwrite($resource, "Beginning multipart upload: " . $body->getUri() . ' -> '); + fwrite($resource, $c->getState()->getFromId('Key') . " ({$totalSize} bytes)\n"); + + $c->getEventDispatcher()->addListener( + AbstractTransfer::BEFORE_PART_UPLOAD, + function ($e) use (&$progress, $totalSize, $resource) { + $command = $e['command']; + $size = $command['Body']->getContentLength(); + $percentage = number_format(($progress / $totalSize) * 100, 2); + fwrite($resource, "- Part {$command['PartNumber']} ({$size} bytes, {$percentage}%)\n"); + $progress += $size; + } + ); + }); + } +} diff --git a/plugins/updraftplus/vendor/composer/ClassLoader.php b/plugins/updraftplus/vendor/composer/ClassLoader.php new file mode 100644 index 0000000..ff6ecfb --- /dev/null +++ b/plugins/updraftplus/vendor/composer/ClassLoader.php @@ -0,0 +1,413 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Autoload; + +/** + * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. + * + * $loader = new \Composer\Autoload\ClassLoader(); + * + * // register classes with namespaces + * $loader->add('Symfony\Component', __DIR__.'/component'); + * $loader->add('Symfony', __DIR__.'/framework'); + * + * // activate the autoloader + * $loader->register(); + * + * // to enable searching the include path (eg. for PEAR packages) + * $loader->setUseIncludePath(true); + * + * In this example, if you try to use a class in the Symfony\Component + * namespace or one of its children (Symfony\Component\Console for instance), + * the autoloader will first look for the class under the component/ + * directory, and it will then fallback to the framework/ directory if not + * found before giving up. + * + * This class is loosely based on the Symfony UniversalClassLoader. + * + * @author Fabien Potencier + * @author Jordi Boggiano + * @see http://www.php-fig.org/psr/psr-0/ + * @see http://www.php-fig.org/psr/psr-4/ + */ +class ClassLoader +{ + // PSR-4 + private $prefixLengthsPsr4 = array(); + private $prefixDirsPsr4 = array(); + private $fallbackDirsPsr4 = array(); + + // PSR-0 + private $prefixesPsr0 = array(); + private $fallbackDirsPsr0 = array(); + + private $useIncludePath = false; + private $classMap = array(); + + private $classMapAuthoritative = false; + + public function getPrefixes() + { + if (!empty($this->prefixesPsr0)) { + return call_user_func_array('array_merge', $this->prefixesPsr0); + } + + return array(); + } + + public function getPrefixesPsr4() + { + return $this->prefixDirsPsr4; + } + + public function getFallbackDirs() + { + return $this->fallbackDirsPsr0; + } + + public function getFallbackDirsPsr4() + { + return $this->fallbackDirsPsr4; + } + + public function getClassMap() + { + return $this->classMap; + } + + /** + * @param array $classMap Class to filename map + */ + public function addClassMap(array $classMap) + { + if ($this->classMap) { + $this->classMap = array_merge($this->classMap, $classMap); + } else { + $this->classMap = $classMap; + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, either + * appending or prepending to the ones previously set for this prefix. + * + * @param string $prefix The prefix + * @param array|string $paths The PSR-0 root directories + * @param bool $prepend Whether to prepend the directories + */ + public function add($prefix, $paths, $prepend = false) + { + if (!$prefix) { + if ($prepend) { + $this->fallbackDirsPsr0 = array_merge( + (array) $paths, + $this->fallbackDirsPsr0 + ); + } else { + $this->fallbackDirsPsr0 = array_merge( + $this->fallbackDirsPsr0, + (array) $paths + ); + } + + return; + } + + $first = $prefix[0]; + if (!isset($this->prefixesPsr0[$first][$prefix])) { + $this->prefixesPsr0[$first][$prefix] = (array) $paths; + + return; + } + if ($prepend) { + $this->prefixesPsr0[$first][$prefix] = array_merge( + (array) $paths, + $this->prefixesPsr0[$first][$prefix] + ); + } else { + $this->prefixesPsr0[$first][$prefix] = array_merge( + $this->prefixesPsr0[$first][$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, either + * appending or prepending to the ones previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param array|string $paths The PSR-4 base directories + * @param bool $prepend Whether to prepend the directories + * + * @throws \InvalidArgumentException + */ + public function addPsr4($prefix, $paths, $prepend = false) + { + if (!$prefix) { + // Register directories for the root namespace. + if ($prepend) { + $this->fallbackDirsPsr4 = array_merge( + (array) $paths, + $this->fallbackDirsPsr4 + ); + } else { + $this->fallbackDirsPsr4 = array_merge( + $this->fallbackDirsPsr4, + (array) $paths + ); + } + } elseif (!isset($this->prefixDirsPsr4[$prefix])) { + // Register directories for a new namespace. + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } elseif ($prepend) { + // Prepend directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + (array) $paths, + $this->prefixDirsPsr4[$prefix] + ); + } else { + // Append directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + $this->prefixDirsPsr4[$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, + * replacing any others previously set for this prefix. + * + * @param string $prefix The prefix + * @param array|string $paths The PSR-0 base directories + */ + public function set($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr0 = (array) $paths; + } else { + $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, + * replacing any others previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param array|string $paths The PSR-4 base directories + * + * @throws \InvalidArgumentException + */ + public function setPsr4($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr4 = (array) $paths; + } else { + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } + } + + /** + * Turns on searching the include path for class files. + * + * @param bool $useIncludePath + */ + public function setUseIncludePath($useIncludePath) + { + $this->useIncludePath = $useIncludePath; + } + + /** + * Can be used to check if the autoloader uses the include path to check + * for classes. + * + * @return bool + */ + public function getUseIncludePath() + { + return $this->useIncludePath; + } + + /** + * Turns off searching the prefix and fallback directories for classes + * that have not been registered with the class map. + * + * @param bool $classMapAuthoritative + */ + public function setClassMapAuthoritative($classMapAuthoritative) + { + $this->classMapAuthoritative = $classMapAuthoritative; + } + + /** + * Should class lookup fail if not found in the current class map? + * + * @return bool + */ + public function isClassMapAuthoritative() + { + return $this->classMapAuthoritative; + } + + /** + * Registers this instance as an autoloader. + * + * @param bool $prepend Whether to prepend the autoloader or not + */ + public function register($prepend = false) + { + spl_autoload_register(array($this, 'loadClass'), true, $prepend); + } + + /** + * Unregisters this instance as an autoloader. + */ + public function unregister() + { + spl_autoload_unregister(array($this, 'loadClass')); + } + + /** + * Loads the given class or interface. + * + * @param string $class The name of the class + * @return bool|null True if loaded, null otherwise + */ + public function loadClass($class) + { + if ($file = $this->findFile($class)) { + includeFile($file); + + return true; + } + } + + /** + * Finds the path to the file where the class is defined. + * + * @param string $class The name of the class + * + * @return string|false The path if found, false otherwise + */ + public function findFile($class) + { + // work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731 + if ('\\' == $class[0]) { + $class = substr($class, 1); + } + + // class map lookup + if (isset($this->classMap[$class])) { + return $this->classMap[$class]; + } + if ($this->classMapAuthoritative) { + return false; + } + + $file = $this->findFileWithExtension($class, '.php'); + + // Search for Hack files if we are running on HHVM + if ($file === null && defined('HHVM_VERSION')) { + $file = $this->findFileWithExtension($class, '.hh'); + } + + if ($file === null) { + // Remember that this class does not exist. + return $this->classMap[$class] = false; + } + + return $file; + } + + private function findFileWithExtension($class, $ext) + { + // PSR-4 lookup + $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; + + $first = $class[0]; + if (isset($this->prefixLengthsPsr4[$first])) { + foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) { + if (0 === strpos($class, $prefix)) { + foreach ($this->prefixDirsPsr4[$prefix] as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) { + return $file; + } + } + } + } + } + + // PSR-4 fallback dirs + foreach ($this->fallbackDirsPsr4 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { + return $file; + } + } + + // PSR-0 lookup + if (false !== $pos = strrpos($class, '\\')) { + // namespaced class name + $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) + . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); + } else { + // PEAR-like class name + $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; + } + + if (isset($this->prefixesPsr0[$first])) { + foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { + if (0 === strpos($class, $prefix)) { + foreach ($dirs as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + } + } + } + + // PSR-0 fallback dirs + foreach ($this->fallbackDirsPsr0 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + + // PSR-0 include paths. + if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { + return $file; + } + } +} + +/** + * Scope isolated include. + * + * Prevents access to $this/self from included files. + */ +function includeFile($file) +{ + include $file; +} diff --git a/plugins/updraftplus/vendor/composer/LICENSE b/plugins/updraftplus/vendor/composer/LICENSE new file mode 100644 index 0000000..b0794ff --- /dev/null +++ b/plugins/updraftplus/vendor/composer/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2016 Nils Adermann, Jordi Boggiano + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/plugins/updraftplus/vendor/composer/autoload_classmap.php b/plugins/updraftplus/vendor/composer/autoload_classmap.php new file mode 100644 index 0000000..4852117 --- /dev/null +++ b/plugins/updraftplus/vendor/composer/autoload_classmap.php @@ -0,0 +1,20 @@ + $vendorDir . '/symfony/event-dispatcher/ContainerAwareEventDispatcher.php', + 'Symfony\\Component\\EventDispatcher\\Debug\\TraceableEventDispatcher' => $vendorDir . '/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php', + 'Symfony\\Component\\EventDispatcher\\Debug\\TraceableEventDispatcherInterface' => $vendorDir . '/symfony/event-dispatcher/Debug/TraceableEventDispatcherInterface.php', + 'Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener' => $vendorDir . '/symfony/event-dispatcher/Debug/WrappedListener.php', + 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\RegisterListenersPass' => $vendorDir . '/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php', + 'Symfony\\Component\\EventDispatcher\\Event' => $vendorDir . '/symfony/event-dispatcher/Event.php', + 'Symfony\\Component\\EventDispatcher\\EventDispatcher' => $vendorDir . '/symfony/event-dispatcher/EventDispatcher.php', + 'Symfony\\Component\\EventDispatcher\\EventDispatcherInterface' => $vendorDir . '/symfony/event-dispatcher/EventDispatcherInterface.php', + 'Symfony\\Component\\EventDispatcher\\EventSubscriberInterface' => $vendorDir . '/symfony/event-dispatcher/EventSubscriberInterface.php', + 'Symfony\\Component\\EventDispatcher\\GenericEvent' => $vendorDir . '/symfony/event-dispatcher/GenericEvent.php', + 'Symfony\\Component\\EventDispatcher\\ImmutableEventDispatcher' => $vendorDir . '/symfony/event-dispatcher/ImmutableEventDispatcher.php', +); diff --git a/plugins/updraftplus/vendor/composer/autoload_namespaces.php b/plugins/updraftplus/vendor/composer/autoload_namespaces.php new file mode 100644 index 0000000..579bc31 --- /dev/null +++ b/plugins/updraftplus/vendor/composer/autoload_namespaces.php @@ -0,0 +1,15 @@ + array($vendorDir . '/psr/log'), + 'OpenCloud' => array($vendorDir . '/rackspace/php-opencloud/lib', $vendorDir . '/rackspace/php-opencloud/tests'), + 'Guzzle\\Tests' => array($vendorDir . '/guzzle/guzzle/tests'), + 'Guzzle' => array($vendorDir . '/guzzle/guzzle/src'), + 'Eher\\OAuth' => array($vendorDir . '/eher/oauth/src'), + 'Aws' => array($vendorDir . '/aws/aws-sdk-php/src'), +); diff --git a/plugins/updraftplus/vendor/composer/autoload_psr4.php b/plugins/updraftplus/vendor/composer/autoload_psr4.php new file mode 100644 index 0000000..277dab0 --- /dev/null +++ b/plugins/updraftplus/vendor/composer/autoload_psr4.php @@ -0,0 +1,11 @@ + array($vendorDir . '/symfony/event-dispatcher'), +); diff --git a/plugins/updraftplus/vendor/composer/autoload_real.php b/plugins/updraftplus/vendor/composer/autoload_real.php new file mode 100644 index 0000000..d2b4949 --- /dev/null +++ b/plugins/updraftplus/vendor/composer/autoload_real.php @@ -0,0 +1,45 @@ + $path) { + $loader->set($namespace, $path); + } + + $map = require __DIR__ . '/autoload_psr4.php'; + foreach ($map as $namespace => $path) { + $loader->setPsr4($namespace, $path); + } + + $classMap = require __DIR__ . '/autoload_classmap.php'; + if ($classMap) { + $loader->addClassMap($classMap); + } + + $loader->register(true); + + return $loader; + } +} diff --git a/plugins/updraftplus/vendor/composer/installed.json b/plugins/updraftplus/vendor/composer/installed.json new file mode 100644 index 0000000..a622069 --- /dev/null +++ b/plugins/updraftplus/vendor/composer/installed.json @@ -0,0 +1,368 @@ +[ + { + "name": "eher/oauth", + "version": "1.0.7", + "version_normalized": "1.0.7.0", + "source": { + "type": "git", + "url": "https://github.com/EHER/OAuth.git", + "reference": "935c1f7709d1c1457de9e250d0e5f29cac06e507" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/EHER/OAuth/zipball/935c1f7709d1c1457de9e250d0e5f29cac06e507", + "reference": "935c1f7709d1c1457de9e250d0e5f29cac06e507", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "eher/phpunit": "1.6" + }, + "time": "2012-12-13 23:48:10", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-0": { + "Eher\\OAuth": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "OAuth 1 PHP Library" + }, + { + "name": "psr/log", + "version": "1.0.0", + "version_normalized": "1.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b", + "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b", + "shasum": "" + }, + "time": "2012-12-21 11:40:51", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-0": { + "Psr\\Log\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "keywords": [ + "log", + "psr", + "psr-3" + ] + }, + { + "name": "guzzle/guzzle", + "version": "v3.9.3", + "version_normalized": "3.9.3.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle3.git", + "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle3/zipball/0645b70d953bc1c067bbc8d5bc53194706b628d9", + "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "php": ">=5.3.3", + "symfony/event-dispatcher": "~2.1" + }, + "replace": { + "guzzle/batch": "self.version", + "guzzle/cache": "self.version", + "guzzle/common": "self.version", + "guzzle/http": "self.version", + "guzzle/inflection": "self.version", + "guzzle/iterator": "self.version", + "guzzle/log": "self.version", + "guzzle/parser": "self.version", + "guzzle/plugin": "self.version", + "guzzle/plugin-async": "self.version", + "guzzle/plugin-backoff": "self.version", + "guzzle/plugin-cache": "self.version", + "guzzle/plugin-cookie": "self.version", + "guzzle/plugin-curlauth": "self.version", + "guzzle/plugin-error-response": "self.version", + "guzzle/plugin-history": "self.version", + "guzzle/plugin-log": "self.version", + "guzzle/plugin-md5": "self.version", + "guzzle/plugin-mock": "self.version", + "guzzle/plugin-oauth": "self.version", + "guzzle/service": "self.version", + "guzzle/stream": "self.version" + }, + "require-dev": { + "doctrine/cache": "~1.3", + "monolog/monolog": "~1.0", + "phpunit/phpunit": "3.7.*", + "psr/log": "~1.0", + "symfony/class-loader": "~2.1", + "zendframework/zend-cache": "2.*,<2.3", + "zendframework/zend-log": "2.*,<2.3" + }, + "suggest": { + "guzzlehttp/guzzle": "Guzzle 5 has moved to a new package name. The package you have installed, Guzzle 3, is deprecated." + }, + "time": "2015-03-18 18:23:50", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.9-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Guzzle": "src/", + "Guzzle\\Tests": "tests/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Guzzle Community", + "homepage": "https://github.com/guzzle/guzzle/contributors" + } + ], + "description": "PHP HTTP client. This library is deprecated in favor of https://packagist.org/packages/guzzlehttp/guzzle", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ] + }, + { + "name": "rackspace/php-opencloud", + "version": "v1.12.2", + "version_normalized": "1.12.2.0", + "source": { + "type": "git", + "url": "https://github.com/rackspace/php-opencloud.git", + "reference": "9c0ade232ddd1ae23994349406171ffea1127b5d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rackspace/php-opencloud/zipball/9c0ade232ddd1ae23994349406171ffea1127b5d", + "reference": "9c0ade232ddd1ae23994349406171ffea1127b5d", + "shasum": "" + }, + "require": { + "guzzle/guzzle": "~3.8", + "php": ">=5.3.3", + "psr/log": "~1.0" + }, + "require-dev": { + "apigen/apigen": "~2.8", + "fabpot/php-cs-fixer": "1.0.*@dev", + "jakub-onderka/php-parallel-lint": "0.*", + "phpunit/phpunit": "4.3.*", + "satooshi/php-coveralls": "0.6.*@dev" + }, + "time": "2015-03-16 23:57:58", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-0": { + "OpenCloud": [ + "lib/", + "tests/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Glen Campbell", + "email": "glen.campbell@rackspace.com" + }, + { + "name": "Jamie Hannaford", + "email": "jamie.hannaford@rackspace.com", + "homepage": "https://github.com/jamiehannaford" + }, + { + "name": "Shaunak Kashyap", + "email": "shaunak.kashyap@rackspace.com", + "homepage": "https://github.com/ycombinator" + } + ], + "description": "PHP SDK for Rackspace/OpenStack APIs", + "keywords": [ + "Openstack", + "nova", + "opencloud", + "rackspace", + "swift" + ] + }, + { + "name": "symfony/event-dispatcher", + "version": "v2.8.5", + "version_normalized": "2.8.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "81c4c51f7fd6d0d40961bd53dd60cade32db6ed6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/81c4c51f7fd6d0d40961bd53dd60cade32db6ed6", + "reference": "81c4c51f7fd6d0d40961bd53dd60cade32db6ed6", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.0,>=2.0.5|~3.0.0", + "symfony/dependency-injection": "~2.6|~3.0.0", + "symfony/expression-language": "~2.6|~3.0.0", + "symfony/stopwatch": "~2.3|~3.0.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "time": "2016-04-05 16:36:54", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony EventDispatcher Component", + "homepage": "https://symfony.com" + }, + { + "name": "aws/aws-sdk-php", + "version": "2.8.30", + "version_normalized": "2.8.30.0", + "source": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-php.git", + "reference": "2d7183cd22381237bce25f11d741a77bdeb2d0b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/2d7183cd22381237bce25f11d741a77bdeb2d0b8", + "reference": "2d7183cd22381237bce25f11d741a77bdeb2d0b8", + "shasum": "" + }, + "require": { + "guzzle/guzzle": "~3.7", + "php": ">=5.3.3" + }, + "require-dev": { + "doctrine/cache": "~1.0", + "ext-openssl": "*", + "monolog/monolog": "~1.4", + "phpunit/phpunit": "~4.0", + "phpunit/phpunit-mock-objects": "2.3.1", + "symfony/yaml": "~2.1" + }, + "suggest": { + "doctrine/cache": "Adds support for caching of credentials and responses", + "ext-apc": "Allows service description opcode caching, request and response caching, and credentials caching", + "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages", + "monolog/monolog": "Adds support for logging HTTP requests and responses", + "symfony/yaml": "Eases the ability to write manifests for creating jobs in AWS Import/Export" + }, + "time": "2016-05-03 17:42:24", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-0": { + "Aws": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Amazon Web Services", + "homepage": "http://aws.amazon.com" + } + ], + "description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project", + "homepage": "http://aws.amazon.com/sdkforphp", + "keywords": [ + "amazon", + "aws", + "cloud", + "dynamodb", + "ec2", + "glacier", + "s3", + "sdk" + ] + } +] diff --git a/plugins/updraftplus/vendor/eher/oauth/.gitignore b/plugins/updraftplus/vendor/eher/oauth/.gitignore new file mode 100644 index 0000000..eeeaea3 --- /dev/null +++ b/plugins/updraftplus/vendor/eher/oauth/.gitignore @@ -0,0 +1,4 @@ +*.swp +composer.phar +composer.lock +vendor diff --git a/plugins/updraftplus/vendor/eher/oauth/.travis.yml b/plugins/updraftplus/vendor/eher/oauth/.travis.yml new file mode 100644 index 0000000..f64de41 --- /dev/null +++ b/plugins/updraftplus/vendor/eher/oauth/.travis.yml @@ -0,0 +1,9 @@ +language: php + +php: + - 5.3 + - 5.4 + +before_script: + - wget -c http://getcomposer.org/composer.phar + - php composer.phar install diff --git a/plugins/updraftplus/vendor/eher/oauth/README.md b/plugins/updraftplus/vendor/eher/oauth/README.md new file mode 100644 index 0000000..c288c8c --- /dev/null +++ b/plugins/updraftplus/vendor/eher/oauth/README.md @@ -0,0 +1,3 @@ +#OAuth 1 PHP Library[![Build Status](https://secure.travis-ci.org/EHER/OAuth.png?branch=master)](http://travis-ci.org/EHER/OAuth) + +Based on [Andy Smith's](http://term.ie/) [basic php library](http://oauth.googlecode.com/svn/code/php/) for OAuth. diff --git a/plugins/updraftplus/vendor/eher/oauth/composer.json b/plugins/updraftplus/vendor/eher/oauth/composer.json new file mode 100644 index 0000000..29bf4d9 --- /dev/null +++ b/plugins/updraftplus/vendor/eher/oauth/composer.json @@ -0,0 +1,17 @@ +{ + "name": "eher/oauth", + "type": "library", + "license": "BSD-3-Clause", + "description": "OAuth 1 PHP Library", + "require": { + "php": ">=5.3.0" + }, + "autoload": { + "psr-0": { + "Eher\\OAuth": "src" + } + }, + "require-dev": { + "eher/phpunit": "1.6" + } +} diff --git a/plugins/updraftplus/vendor/eher/oauth/phpunit.xml.dist b/plugins/updraftplus/vendor/eher/oauth/phpunit.xml.dist new file mode 100644 index 0000000..9735ad4 --- /dev/null +++ b/plugins/updraftplus/vendor/eher/oauth/phpunit.xml.dist @@ -0,0 +1,7 @@ + + + + test + + + diff --git a/plugins/updraftplus/vendor/eher/oauth/src/Eher/OAuth/Consumer.php b/plugins/updraftplus/vendor/eher/oauth/src/Eher/OAuth/Consumer.php new file mode 100644 index 0000000..44dbc59 --- /dev/null +++ b/plugins/updraftplus/vendor/eher/oauth/src/Eher/OAuth/Consumer.php @@ -0,0 +1,19 @@ +key = $key; + $this->secret = $secret; + $this->callback_url = $callback_url; + } + + function __toString() { + return "Consumer[key=$this->key,secret=$this->secret]"; + } +} + diff --git a/plugins/updraftplus/vendor/eher/oauth/src/Eher/OAuth/HmacSha1.php b/plugins/updraftplus/vendor/eher/oauth/src/Eher/OAuth/HmacSha1.php new file mode 100644 index 0000000..be7da63 --- /dev/null +++ b/plugins/updraftplus/vendor/eher/oauth/src/Eher/OAuth/HmacSha1.php @@ -0,0 +1,31 @@ +get_signature_base_string(); + $request->base_string = $base_string; + + $key_parts = array( + $consumer->secret, + ($token) ? $token->secret : "" + ); + + $key_parts = Util::urlencode_rfc3986($key_parts); + $key = implode('&', $key_parts); + + return base64_encode(hash_hmac('sha1', $base_string, $key, true)); + } +} diff --git a/plugins/updraftplus/vendor/eher/oauth/src/Eher/OAuth/OAuthDataStore.php b/plugins/updraftplus/vendor/eher/oauth/src/Eher/OAuth/OAuthDataStore.php new file mode 100644 index 0000000..8ad2f30 --- /dev/null +++ b/plugins/updraftplus/vendor/eher/oauth/src/Eher/OAuth/OAuthDataStore.php @@ -0,0 +1,30 @@ +data_store = $data_store; + } + + public function add_signature_method($signature_method) { + $this->signature_methods[$signature_method->get_name()] = + $signature_method; + } + + // high level functions + + /** + * process a request_token request + * returns the request token on success + */ + public function fetch_request_token(&$request) { + $this->get_version($request); + + $consumer = $this->get_consumer($request); + + // no token required for the initial token request + $token = NULL; + + $this->check_signature($request, $consumer, $token); + + // Rev A change + $callback = $request->get_parameter('oauth_callback'); + $new_token = $this->data_store->new_request_token($consumer, $callback); + + return $new_token; + } + + /** + * process an access_token request + * returns the access token on success + */ + public function fetch_access_token(&$request) { + $this->get_version($request); + + $consumer = $this->get_consumer($request); + + // requires authorized request token + $token = $this->get_token($request, $consumer, "request"); + + $this->check_signature($request, $consumer, $token); + + // Rev A change + $verifier = $request->get_parameter('oauth_verifier'); + $new_token = $this->data_store->new_access_token($token, $consumer, $verifier); + + return $new_token; + } + + /** + * verify an api call, checks all the parameters + */ + public function verify_request(&$request) { + $this->get_version($request); + $consumer = $this->get_consumer($request); + $token = $this->get_token($request, $consumer, "access"); + $this->check_signature($request, $consumer, $token); + return array($consumer, $token); + } + + // Internals from here + /** + * version 1 + */ + private function get_version(&$request) { + $version = $request->get_parameter("oauth_version"); + if (!$version) { + // Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present. + // Chapter 7.0 ("Accessing Protected Ressources") + $version = '1.0'; + } + if ($version !== $this->version) { + throw new OAuthException("OAuth version '$version' not supported"); + } + return $version; + } + + /** + * figure out the signature with some defaults + */ + private function get_signature_method($request) { + $signature_method = $request instanceof Request + ? $request->get_parameter("oauth_signature_method") + : NULL; + + if (!$signature_method) { + // According to chapter 7 ("Accessing Protected Ressources") the signature-method + // parameter is required, and we can't just fallback to PLAINTEXT + throw new OAuthException('No signature method parameter. This parameter is required'); + } + + if (!in_array($signature_method, + array_keys($this->signature_methods))) { + throw new OAuthException( + "Signature method '$signature_method' not supported " . + "try one of the following: " . + implode(", ", array_keys($this->signature_methods)) + ); + } + return $this->signature_methods[$signature_method]; + } + + /** + * try to find the consumer for the provided request's consumer key + */ + private function get_consumer($request) { + $consumer_key = $request instanceof Request + ? $request->get_parameter("oauth_consumer_key") + : NULL; + + if (!$consumer_key) { + throw new OAuthException("Invalid consumer key"); + } + + $consumer = $this->data_store->lookup_consumer($consumer_key); + if (!$consumer) { + throw new OAuthException("Invalid consumer"); + } + + return $consumer; + } + + /** + * try to find the token for the provided request's token key + */ + private function get_token($request, $consumer, $token_type="access") { + $token_field = $request instanceof Request + ? $request->get_parameter('oauth_token') + : NULL; + + $token = $this->data_store->lookup_token( + $consumer, $token_type, $token_field + ); + if (!$token) { + throw new OAuthException("Invalid $token_type token: $token_field"); + } + return $token; + } + + /** + * all-in-one function to check the signature on a request + * should guess the signature method appropriately + */ + private function check_signature($request, $consumer, $token) { + // this should probably be in a different method + $timestamp = $request instanceof Request + ? $request->get_parameter('oauth_timestamp') + : NULL; + $nonce = $request instanceof Request + ? $request->get_parameter('oauth_nonce') + : NULL; + + $this->check_timestamp($timestamp); + $this->check_nonce($consumer, $token, $nonce, $timestamp); + + $signature_method = $this->get_signature_method($request); + + $signature = $request->get_parameter('oauth_signature'); + $valid_sig = $signature_method->check_signature( + $request, + $consumer, + $token, + Util::urldecode_rfc3986($signature) + ); + + if (!$valid_sig) { + throw new OAuthException("Invalid signature"); + } + } + + /** + * check that the timestamp is new enough + */ + private function check_timestamp($timestamp) { + if( ! $timestamp ) + throw new OAuthException( + 'Missing timestamp parameter. The parameter is required' + ); + + // verify that timestamp is recentish + $now = time(); + if (abs($now - $timestamp) > $this->timestamp_threshold) { + throw new OAuthException( + "Expired timestamp, yours $timestamp, ours $now" + ); + } + } + + /** + * check that the nonce is not repeated + */ + private function check_nonce($consumer, $token, $nonce, $timestamp) { + if( ! $nonce ) + throw new OAuthException( + 'Missing nonce parameter. The parameter is required' + ); + + // verify that the nonce is uniqueish + $found = $this->data_store->lookup_nonce( + $consumer, + $token, + $nonce, + $timestamp + ); + if ($found) { + throw new OAuthException("Nonce already used: $nonce"); + } + } + +} diff --git a/plugins/updraftplus/vendor/eher/oauth/src/Eher/OAuth/PlainText.php b/plugins/updraftplus/vendor/eher/oauth/src/Eher/OAuth/PlainText.php new file mode 100644 index 0000000..895aeed --- /dev/null +++ b/plugins/updraftplus/vendor/eher/oauth/src/Eher/OAuth/PlainText.php @@ -0,0 +1,36 @@ +secret, + ($token) ? $token->secret : "" + ); + + $key_parts = Util::urlencode_rfc3986($key_parts); + $key = implode('&', $key_parts); + $request->base_string = $key; + + return $key; + } +} diff --git a/plugins/updraftplus/vendor/eher/oauth/src/Eher/OAuth/Request.php b/plugins/updraftplus/vendor/eher/oauth/src/Eher/OAuth/Request.php new file mode 100644 index 0000000..afb2b20 --- /dev/null +++ b/plugins/updraftplus/vendor/eher/oauth/src/Eher/OAuth/Request.php @@ -0,0 +1,264 @@ +parameters = $parameters; + $this->http_method = $http_method; + $this->http_url = $http_url; + } + + + /** + * attempt to build up a request from what was passed to the server + */ + public static function from_request($http_method=NULL, $http_url=NULL, $parameters=NULL) { + $scheme = (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on") + ? 'http' + : 'https'; + $http_url = ($http_url) ? $http_url : $scheme . + '://' . $_SERVER['HTTP_HOST'] . + ':' . + $_SERVER['SERVER_PORT'] . + $_SERVER['REQUEST_URI']; + $http_method = ($http_method) ? $http_method : $_SERVER['REQUEST_METHOD']; + + // We weren't handed any parameters, so let's find the ones relevant to + // this request. + // If you run XML-RPC or similar you should use this to provide your own + // parsed parameter-list + if (!$parameters) { + // Find request headers + $request_headers = Util::get_headers(); + + // Parse the query-string to find GET parameters + $parameters = Util::parse_parameters($_SERVER['QUERY_STRING']); + + // It's a POST request of the proper content-type, so parse POST + // parameters and add those overriding any duplicates from GET + if ($http_method == "POST" + && isset($request_headers['Content-Type']) + && strstr($request_headers['Content-Type'], + 'application/x-www-form-urlencoded') + ) { + $post_data = Util::parse_parameters( + file_get_contents(self::$POST_INPUT) + ); + $parameters = array_merge($parameters, $post_data); + } + + // We have a Authorization-header with OAuth data. Parse the header + // and add those overriding any duplicates from GET or POST + if (isset($request_headers['Authorization']) && substr($request_headers['Authorization'], 0, 6) == 'OAuth ') { + $header_parameters = Util::split_header( + $request_headers['Authorization'] + ); + $parameters = array_merge($parameters, $header_parameters); + } + + } + + return new Request($http_method, $http_url, $parameters); + } + + /** + * pretty much a helper function to set up the request + */ + public static function from_consumer_and_token($consumer, $token, $http_method, $http_url, $parameters=NULL) { + $parameters = ($parameters) ? $parameters : array(); + $defaults = array("oauth_version" => Request::$version, + "oauth_nonce" => Request::generate_nonce(), + "oauth_timestamp" => Request::generate_timestamp(), + "oauth_consumer_key" => $consumer->key); + if ($token) + $defaults['oauth_token'] = $token->key; + + $parameters = array_merge($defaults, $parameters); + + return new Request($http_method, $http_url, $parameters); + } + + public function set_parameter($name, $value, $allow_duplicates = true) { + if ($allow_duplicates && isset($this->parameters[$name])) { + // We have already added parameter(s) with this name, so add to the list + if (is_scalar($this->parameters[$name])) { + // This is the first duplicate, so transform scalar (string) + // into an array so we can add the duplicates + $this->parameters[$name] = array($this->parameters[$name]); + } + + $this->parameters[$name][] = $value; + } else { + $this->parameters[$name] = $value; + } + } + + public function get_parameter($name) { + return isset($this->parameters[$name]) ? $this->parameters[$name] : null; + } + + public function get_parameters() { + return $this->parameters; + } + + public function unset_parameter($name) { + unset($this->parameters[$name]); + } + + /** + * The request parameters, sorted and concatenated into a normalized string. + * @return string + */ + public function get_signable_parameters() { + // Grab all parameters + $params = $this->parameters; + + // Remove oauth_signature if present + // Ref: Spec: 9.1.1 ("The oauth_signature parameter MUST be excluded.") + if (isset($params['oauth_signature'])) { + unset($params['oauth_signature']); + } + + return Util::build_http_query($params); + } + + /** + * Returns the base string of this request + * + * The base string defined as the method, the url + * and the parameters (normalized), each urlencoded + * and the concated with &. + */ + public function get_signature_base_string() { + $parts = array( + $this->get_normalized_http_method(), + $this->get_normalized_http_url(), + $this->get_signable_parameters() + ); + + $parts = Util::urlencode_rfc3986($parts); + + return implode('&', $parts); + } + + /** + * just uppercases the http method + */ + public function get_normalized_http_method() { + return strtoupper($this->http_method); + } + + /** + * parses the url and rebuilds it to be + * scheme://host/path + */ + public function get_normalized_http_url() { + $parts = parse_url($this->http_url); + + $scheme = (isset($parts['scheme'])) ? $parts['scheme'] : 'http'; + $port = (isset($parts['port'])) ? $parts['port'] : (($scheme == 'https') ? '443' : '80'); + $host = (isset($parts['host'])) ? $parts['host'] : ''; + $path = (isset($parts['path'])) ? $parts['path'] : ''; + + if (($scheme == 'https' && $port != '443') + || ($scheme == 'http' && $port != '80')) { + $host = "$host:$port"; + } + return "$scheme://$host$path"; + } + + /** + * builds a url usable for a GET request + */ + public function to_url() { + $post_data = $this->to_postdata(); + $out = $this->get_normalized_http_url(); + if ($post_data) { + $out .= '?'.$post_data; + } + return $out; + } + + /** + * builds the data one would send in a POST request + */ + public function to_postdata() { + return Util::build_http_query($this->parameters); + } + + /** + * builds the Authorization: header + */ + public function to_header($realm=null) { + $first = true; + if($realm) { + $out = 'Authorization: OAuth realm="' . Util::urlencode_rfc3986($realm) . '"'; + $first = false; + } else + $out = 'Authorization: OAuth'; + + $total = array(); + foreach ($this->parameters as $k => $v) { + if (substr($k, 0, 5) != "oauth") continue; + if (is_array($v)) { + throw new OAuthException('Arrays not supported in headers'); + } + $out .= ($first) ? ' ' : ','; + $out .= Util::urlencode_rfc3986($k) . + '="' . + Util::urlencode_rfc3986($v) . + '"'; + $first = false; + } + return $out; + } + + public function __toString() { + return $this->to_url(); + } + + + public function sign_request($signature_method, $consumer, $token) { + $this->set_parameter( + "oauth_signature_method", + $signature_method->get_name(), + false + ); + $signature = $this->build_signature($signature_method, $consumer, $token); + $this->set_parameter("oauth_signature", $signature, false); + } + + public function build_signature($signature_method, $consumer, $token) { + $signature = $signature_method->build_signature($this, $consumer, $token); + return $signature; + } + + /** + * util function: current timestamp + */ + private static function generate_timestamp() { + return time(); + } + + /** + * util function: current nonce + */ + private static function generate_nonce() { + $mt = microtime(); + $rand = mt_rand(); + + return md5($mt . $rand); // md5s look nicer than numbers + } +} + diff --git a/plugins/updraftplus/vendor/eher/oauth/src/Eher/OAuth/RsaSha1.php b/plugins/updraftplus/vendor/eher/oauth/src/Eher/OAuth/RsaSha1.php new file mode 100644 index 0000000..a749ce3 --- /dev/null +++ b/plugins/updraftplus/vendor/eher/oauth/src/Eher/OAuth/RsaSha1.php @@ -0,0 +1,70 @@ +get_signature_base_string(); + $request->base_string = $base_string; + + // Fetch the private key cert based on the request + $cert = $this->fetch_private_cert($request); + + // Pull the private key ID from the certificate + $privatekeyid = openssl_get_privatekey($cert); + + // Sign using the key + $ok = openssl_sign($base_string, $signature, $privatekeyid); + + // Release the key resource + openssl_free_key($privatekeyid); + + return base64_encode($signature); + } + + public function check_signature($request, $consumer, $token, $signature) { + $decoded_sig = base64_decode($signature); + + $base_string = $request->get_signature_base_string(); + + // Fetch the public key cert based on the request + $cert = $this->fetch_public_cert($request); + + // Pull the public key ID from the certificate + $publickeyid = openssl_get_publickey($cert); + + // Check the computed signature against the one passed in the query + $ok = openssl_verify($base_string, $decoded_sig, $publickeyid); + + // Release the key resource + openssl_free_key($publickeyid); + + return $ok == 1; + } +} diff --git a/plugins/updraftplus/vendor/eher/oauth/src/Eher/OAuth/SignatureMethod.php b/plugins/updraftplus/vendor/eher/oauth/src/Eher/OAuth/SignatureMethod.php new file mode 100644 index 0000000..d938632 --- /dev/null +++ b/plugins/updraftplus/vendor/eher/oauth/src/Eher/OAuth/SignatureMethod.php @@ -0,0 +1,40 @@ +build_signature($request, $consumer, $token); + return $built == $signature; + } +} diff --git a/plugins/updraftplus/vendor/eher/oauth/src/Eher/OAuth/Token.php b/plugins/updraftplus/vendor/eher/oauth/src/Eher/OAuth/Token.php new file mode 100644 index 0000000..e1d9f65 --- /dev/null +++ b/plugins/updraftplus/vendor/eher/oauth/src/Eher/OAuth/Token.php @@ -0,0 +1,34 @@ +key = $key; + $this->secret = $secret; + } + + /** + * generates the basic string serialization of a token that a server + * would respond to request_token and access_token calls with + */ + function to_string() { + return "oauth_token=" . + Util::urlencode_rfc3986($this->key) . + "&oauth_token_secret=" . + Util::urlencode_rfc3986($this->secret); + } + + function __toString() { + return $this->to_string(); + } +} + diff --git a/plugins/updraftplus/vendor/eher/oauth/src/Eher/OAuth/Util.php b/plugins/updraftplus/vendor/eher/oauth/src/Eher/OAuth/Util.php new file mode 100644 index 0000000..1feee44 --- /dev/null +++ b/plugins/updraftplus/vendor/eher/oauth/src/Eher/OAuth/Util.php @@ -0,0 +1,155 @@ + $h) { + $params[$h] = Util::urldecode_rfc3986(empty($matches[3][$i]) ? $matches[4][$i] : $matches[3][$i]); + } + if (isset($params['realm'])) { + unset($params['realm']); + } + } + return $params; + } + + // helper to try to sort out headers for people who aren't running apache + public static function get_headers() { + if (function_exists('apache_request_headers')) { + // we need this to get the actual Authorization: header + // because apache tends to tell us it doesn't exist + $headers = apache_request_headers(); + + // sanitize the output of apache_request_headers because + // we always want the keys to be Cased-Like-This and arh() + // returns the headers in the same case as they are in the + // request + $out = array(); + foreach ($headers AS $key => $value) { + $key = str_replace( + " ", + "-", + ucwords(strtolower(str_replace("-", " ", $key))) + ); + $out[$key] = $value; + } + } else { + // otherwise we don't have apache and are just going to have to hope + // that $_SERVER actually contains what we need + $out = array(); + if( isset($_SERVER['CONTENT_TYPE']) ) + $out['Content-Type'] = $_SERVER['CONTENT_TYPE']; + if( isset($_ENV['CONTENT_TYPE']) ) + $out['Content-Type'] = $_ENV['CONTENT_TYPE']; + + foreach ($_SERVER as $key => $value) { + if (substr($key, 0, 5) == "HTTP_") { + // this is chaos, basically it is just there to capitalize the first + // letter of every word that is not an initial HTTP and strip HTTP + // code from przemek + $key = str_replace( + " ", + "-", + ucwords(strtolower(str_replace("_", " ", substr($key, 5)))) + ); + $out[$key] = $value; + } + } + } + return $out; + } + + // This function takes a input like a=b&a=c&d=e and returns the parsed + // parameters like this + // array('a' => array('b','c'), 'd' => 'e') + public static function parse_parameters( $input ) { + if (!isset($input) || !$input) return array(); + + $pairs = explode('&', $input); + + $parsed_parameters = array(); + foreach ($pairs as $pair) { + $split = explode('=', $pair, 2); + $parameter = Util::urldecode_rfc3986($split[0]); + $value = isset($split[1]) ? Util::urldecode_rfc3986($split[1]) : ''; + + if (isset($parsed_parameters[$parameter])) { + // We have already recieved parameter(s) with this name, so add to the list + // of parameters with this name + + if (is_scalar($parsed_parameters[$parameter])) { + // This is the first duplicate, so transform scalar (string) into an array + // so we can add the duplicates + $parsed_parameters[$parameter] = array($parsed_parameters[$parameter]); + } + + $parsed_parameters[$parameter][] = $value; + } else { + $parsed_parameters[$parameter] = $value; + } + } + return $parsed_parameters; + } + + public static function build_http_query($params) { + if (!$params) return ''; + + // Urlencode both keys and values + $keys = Util::urlencode_rfc3986(array_keys($params)); + $values = Util::urlencode_rfc3986(array_values($params)); + $params = array_combine($keys, $values); + + // Parameters are sorted by name, using lexicographical byte value ordering. + // Ref: Spec: 9.1.1 (1) + uksort($params, 'strcmp'); + + $pairs = array(); + foreach ($params as $parameter => $value) { + if (is_array($value)) { + // If two or more parameters share the same name, they are sorted by their value + // Ref: Spec: 9.1.1 (1) + // June 12th, 2010 - changed to sort because of issue 164 by hidetaka + sort($value, SORT_STRING); + foreach ($value as $duplicate_value) { + $pairs[] = $parameter . '=' . $duplicate_value; + } + } else { + $pairs[] = $parameter . '=' . $value; + } + } + // For each parameter, the name is separated from the corresponding value by an '=' character (ASCII code 61) + // Each name-value pair is separated by an '&' character (ASCII code 38) + return implode('&', $pairs); + } +} + diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/.gitignore b/plugins/updraftplus/vendor/guzzle/guzzle/.gitignore new file mode 100644 index 0000000..893035d --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/.gitignore @@ -0,0 +1,27 @@ +# Ingore common cruft +.DS_STORE +coverage +.idea + +# Ignore binary files +guzzle.phar +guzzle-min.phar + +# Ignore potentially sensitive phpunit file +phpunit.xml + +# Ignore composer generated files +composer.phar +composer.lock +composer-test.lock +vendor/ + +# Ignore build files +build/ +phing/build.properties + +# Ignore subsplit working directory +.subsplit + +docs/_build +docs/*.pyc diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/.travis.yml b/plugins/updraftplus/vendor/guzzle/guzzle/.travis.yml new file mode 100644 index 0000000..209e05c --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/.travis.yml @@ -0,0 +1,17 @@ +language: php + +php: + - 5.3 + - 5.4 + - 5.5 + - 5.6 + - hhvm + +before_script: + - curl --version + - pecl install uri_template-beta || echo "pecl uri_template not available" + - composer self-update + - composer install --no-interaction --prefer-source --dev + - ~/.nvm/nvm.sh install v0.6.14 + +script: composer test diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/CHANGELOG.md b/plugins/updraftplus/vendor/guzzle/guzzle/CHANGELOG.md new file mode 100644 index 0000000..f0dc544 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/CHANGELOG.md @@ -0,0 +1,751 @@ +# CHANGELOG + +## 3.9.3 - 2015-03-18 + +* Ensuring Content-Length is not stripped from a request when it is `0`. +* Added more information to stream wrapper exceptions. +* Message parser will no longer throw warnings for malformed messages. +* Giving a valid cache TTL when max-age is 0. + +## 3.9.2 - 2014-09-10 + +* Retrying "Connection died, retrying a fresh connect" curl errors. +* Automatically extracting the cacert from the phar in client constructor. +* Added EntityBody support for OPTIONS requests. + +## 3.9.1 - 2014-05-07 + +* Added a fix to ReadLimitEntityBody to ensure it doesn't infinitely loop. +* Added a fix to the stream checksum function so that when the first read + returns a falsey value, it still continues to consume the stream until EOF. + +## 3.9.0 - 2014-04-23 + +* `null`, `false`, and `"_guzzle_blank_"` all now serialize as an empty value + with no trailing "=". See dc1d824277. +* No longer performing an MD5 check on the cacert each time the phar is used, + but rather copying the cacert to the temp directory. +* `"0"` can now be added as a URL path +* Deleting cookies that are set to empty +* If-Modified-Since is no longer unnecessarily added to the CachePlugin +* Cookie path matching now follows RFC 6265 s5.1.4 +* Updated service descriptions are now added to a service client's composite + factory. +* MockPlugin now throws an exception if the queue is empty. +* Properly parsing URLs that start with "http" but are not absolute +* Added the ability to configure the curl_multi_select timeout setting +* OAuth parameters are now sorted using lexicographical byte value ordering +* Fixing invalid usage of an out of range PHP feature in the ErrorResponsePlugin + +## 3.8.1 -2014-01-28 + +* Bug: Always using GET requests when redirecting from a 303 response +* Bug: CURLOPT_SSL_VERIFYHOST is now correctly set to false when setting `$certificateAuthority` to false in + `Guzzle\Http\ClientInterface::setSslVerification()` +* Bug: RedirectPlugin now uses strict RFC 3986 compliance when combining a base URL with a relative URL +* Bug: The body of a request can now be set to `"0"` +* Sending PHP stream requests no longer forces `HTTP/1.0` +* Adding more information to ExceptionCollection exceptions so that users have more context, including a stack trace of + each sub-exception +* Updated the `$ref` attribute in service descriptions to merge over any existing parameters of a schema (rather than + clobbering everything). +* Merging URLs will now use the query string object from the relative URL (thus allowing custom query aggregators) +* Query strings are now parsed in a way that they do no convert empty keys with no value to have a dangling `=`. + For example `foo&bar=baz` is now correctly parsed and recognized as `foo&bar=baz` rather than `foo=&bar=baz`. +* Now properly escaping the regular expression delimiter when matching Cookie domains. +* Network access is now disabled when loading XML documents + +## 3.8.0 - 2013-12-05 + +* Added the ability to define a POST name for a file +* JSON response parsing now properly walks additionalProperties +* cURL error code 18 is now retried automatically in the BackoffPlugin +* Fixed a cURL error when URLs contain fragments +* Fixed an issue in the BackoffPlugin retry event where it was trying to access all exceptions as if they were + CurlExceptions +* CURLOPT_PROGRESS function fix for PHP 5.5 (69fcc1e) +* Added the ability for Guzzle to work with older versions of cURL that do not support `CURLOPT_TIMEOUT_MS` +* Fixed a bug that was encountered when parsing empty header parameters +* UriTemplate now has a `setRegex()` method to match the docs +* The `debug` request parameter now checks if it is truthy rather than if it exists +* Setting the `debug` request parameter to true shows verbose cURL output instead of using the LogPlugin +* Added the ability to combine URLs using strict RFC 3986 compliance +* Command objects can now return the validation errors encountered by the command +* Various fixes to cache revalidation (#437 and 29797e5) +* Various fixes to the AsyncPlugin +* Cleaned up build scripts + +## 3.7.4 - 2013-10-02 + +* Bug fix: 0 is now an allowed value in a description parameter that has a default value (#430) +* Bug fix: SchemaFormatter now returns an integer when formatting to a Unix timestamp + (see https://github.com/aws/aws-sdk-php/issues/147) +* Bug fix: Cleaned up and fixed URL dot segment removal to properly resolve internal dots +* Minimum PHP version is now properly specified as 5.3.3 (up from 5.3.2) (#420) +* Updated the bundled cacert.pem (#419) +* OauthPlugin now supports adding authentication to headers or query string (#425) + +## 3.7.3 - 2013-09-08 + +* Added the ability to get the exception associated with a request/command when using `MultiTransferException` and + `CommandTransferException`. +* Setting `additionalParameters` of a response to false is now honored when parsing responses with a service description +* Schemas are only injected into response models when explicitly configured. +* No longer guessing Content-Type based on the path of a request. Content-Type is now only guessed based on the path of + an EntityBody. +* Bug fix: ChunkedIterator can now properly chunk a \Traversable as well as an \Iterator. +* Bug fix: FilterIterator now relies on `\Iterator` instead of `\Traversable`. +* Bug fix: Gracefully handling malformed responses in RequestMediator::writeResponseBody() +* Bug fix: Replaced call to canCache with canCacheRequest in the CallbackCanCacheStrategy of the CachePlugin +* Bug fix: Visiting XML attributes first before visting XML children when serializing requests +* Bug fix: Properly parsing headers that contain commas contained in quotes +* Bug fix: mimetype guessing based on a filename is now case-insensitive + +## 3.7.2 - 2013-08-02 + +* Bug fix: Properly URL encoding paths when using the PHP-only version of the UriTemplate expander + See https://github.com/guzzle/guzzle/issues/371 +* Bug fix: Cookie domains are now matched correctly according to RFC 6265 + See https://github.com/guzzle/guzzle/issues/377 +* Bug fix: GET parameters are now used when calculating an OAuth signature +* Bug fix: Fixed an issue with cache revalidation where the If-None-Match header was being double quoted +* `Guzzle\Common\AbstractHasDispatcher::dispatch()` now returns the event that was dispatched +* `Guzzle\Http\QueryString::factory()` now guesses the most appropriate query aggregator to used based on the input. + See https://github.com/guzzle/guzzle/issues/379 +* Added a way to add custom domain objects to service description parsing using the `operation.parse_class` event. See + https://github.com/guzzle/guzzle/pull/380 +* cURL multi cleanup and optimizations + +## 3.7.1 - 2013-07-05 + +* Bug fix: Setting default options on a client now works +* Bug fix: Setting options on HEAD requests now works. See #352 +* Bug fix: Moving stream factory before send event to before building the stream. See #353 +* Bug fix: Cookies no longer match on IP addresses per RFC 6265 +* Bug fix: Correctly parsing header parameters that are in `<>` and quotes +* Added `cert` and `ssl_key` as request options +* `Host` header can now diverge from the host part of a URL if the header is set manually +* `Guzzle\Service\Command\LocationVisitor\Request\XmlVisitor` was rewritten to change from using SimpleXML to XMLWriter +* OAuth parameters are only added via the plugin if they aren't already set +* Exceptions are now thrown when a URL cannot be parsed +* Returning `false` if `Guzzle\Http\EntityBody::getContentMd5()` fails +* Not setting a `Content-MD5` on a command if calculating the Content-MD5 fails via the CommandContentMd5Plugin + +## 3.7.0 - 2013-06-10 + +* See UPGRADING.md for more information on how to upgrade. +* Requests now support the ability to specify an array of $options when creating a request to more easily modify a + request. You can pass a 'request.options' configuration setting to a client to apply default request options to + every request created by a client (e.g. default query string variables, headers, curl options, etc). +* Added a static facade class that allows you to use Guzzle with static methods and mount the class to `\Guzzle`. + See `Guzzle\Http\StaticClient::mount`. +* Added `command.request_options` to `Guzzle\Service\Command\AbstractCommand` to pass request options to requests + created by a command (e.g. custom headers, query string variables, timeout settings, etc). +* Stream size in `Guzzle\Stream\PhpStreamRequestFactory` will now be set if Content-Length is returned in the + headers of a response +* Added `Guzzle\Common\Collection::setPath($path, $value)` to set a value into an array using a nested key + (e.g. `$collection->setPath('foo/baz/bar', 'test'); echo $collection['foo']['bar']['bar'];`) +* ServiceBuilders now support storing and retrieving arbitrary data +* CachePlugin can now purge all resources for a given URI +* CachePlugin can automatically purge matching cached items when a non-idempotent request is sent to a resource +* CachePlugin now uses the Vary header to determine if a resource is a cache hit +* `Guzzle\Http\Message\Response` now implements `\Serializable` +* Added `Guzzle\Cache\CacheAdapterFactory::fromCache()` to more easily create cache adapters +* `Guzzle\Service\ClientInterface::execute()` now accepts an array, single command, or Traversable +* Fixed a bug in `Guzzle\Http\Message\Header\Link::addLink()` +* Better handling of calculating the size of a stream in `Guzzle\Stream\Stream` using fstat() and caching the size +* `Guzzle\Common\Exception\ExceptionCollection` now creates a more readable exception message +* Fixing BC break: Added back the MonologLogAdapter implementation rather than extending from PsrLog so that older + Symfony users can still use the old version of Monolog. +* Fixing BC break: Added the implementation back in for `Guzzle\Http\Message\AbstractMessage::getTokenizedHeader()`. + Now triggering an E_USER_DEPRECATED warning when used. Use `$message->getHeader()->parseParams()`. +* Several performance improvements to `Guzzle\Common\Collection` +* Added an `$options` argument to the end of the following methods of `Guzzle\Http\ClientInterface`: + createRequest, head, delete, put, patch, post, options, prepareRequest +* Added an `$options` argument to the end of `Guzzle\Http\Message\Request\RequestFactoryInterface::createRequest()` +* Added an `applyOptions()` method to `Guzzle\Http\Message\Request\RequestFactoryInterface` +* Changed `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $body = null)` to + `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $options = array())`. You can still pass in a + resource, string, or EntityBody into the $options parameter to specify the download location of the response. +* Changed `Guzzle\Common\Collection::__construct($data)` to no longer accepts a null value for `$data` but a + default `array()` +* Added `Guzzle\Stream\StreamInterface::isRepeatable` +* Removed `Guzzle\Http\ClientInterface::setDefaultHeaders(). Use + $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. or + $client->getConfig()->setPath('request.options/headers', array('header_name' => 'value'))`. +* Removed `Guzzle\Http\ClientInterface::getDefaultHeaders(). Use $client->getConfig()->getPath('request.options/headers')`. +* Removed `Guzzle\Http\ClientInterface::expandTemplate()` +* Removed `Guzzle\Http\ClientInterface::setRequestFactory()` +* Removed `Guzzle\Http\ClientInterface::getCurlMulti()` +* Removed `Guzzle\Http\Message\RequestInterface::canCache` +* Removed `Guzzle\Http\Message\RequestInterface::setIsRedirect` +* Removed `Guzzle\Http\Message\RequestInterface::isRedirect` +* Made `Guzzle\Http\Client::expandTemplate` and `getUriTemplate` protected methods. +* You can now enable E_USER_DEPRECATED warnings to see if you are using a deprecated method by setting + `Guzzle\Common\Version::$emitWarnings` to true. +* Marked `Guzzle\Http\Message\Request::isResponseBodyRepeatable()` as deprecated. Use + `$request->getResponseBody()->isRepeatable()` instead. +* Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use + `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead. +* Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use + `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead. +* Marked `Guzzle\Http\Message\Request::setIsRedirect()` as deprecated. Use the HistoryPlugin instead. +* Marked `Guzzle\Http\Message\Request::isRedirect()` as deprecated. Use the HistoryPlugin instead. +* Marked `Guzzle\Cache\CacheAdapterFactory::factory()` as deprecated +* Marked 'command.headers', 'command.response_body' and 'command.on_complete' as deprecated for AbstractCommand. + These will work through Guzzle 4.0 +* Marked 'request.params' for `Guzzle\Http\Client` as deprecated. Use [request.options][params]. +* Marked `Guzzle\Service\Client::enableMagicMethods()` as deprecated. Magic methods can no longer be disabled on a Guzzle\Service\Client. +* Marked `Guzzle\Service\Client::getDefaultHeaders()` as deprecated. Use $client->getConfig()->getPath('request.options/headers')`. +* Marked `Guzzle\Service\Client::setDefaultHeaders()` as deprecated. Use $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. +* Marked `Guzzle\Parser\Url\UrlParser` as deprecated. Just use PHP's `parse_url()` and percent encode your UTF-8. +* Marked `Guzzle\Common\Collection::inject()` as deprecated. +* Marked `Guzzle\Plugin\CurlAuth\CurlAuthPlugin` as deprecated. Use `$client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest');` +* CacheKeyProviderInterface and DefaultCacheKeyProvider are no longer used. All of this logic is handled in a + CacheStorageInterface. These two objects and interface will be removed in a future version. +* Always setting X-cache headers on cached responses +* Default cache TTLs are now handled by the CacheStorageInterface of a CachePlugin +* `CacheStorageInterface::cache($key, Response $response, $ttl = null)` has changed to `cache(RequestInterface + $request, Response $response);` +* `CacheStorageInterface::fetch($key)` has changed to `fetch(RequestInterface $request);` +* `CacheStorageInterface::delete($key)` has changed to `delete(RequestInterface $request);` +* Added `CacheStorageInterface::purge($url)` +* `DefaultRevalidation::__construct(CacheKeyProviderInterface $cacheKey, CacheStorageInterface $cache, CachePlugin + $plugin)` has changed to `DefaultRevalidation::__construct(CacheStorageInterface $cache, + CanCacheStrategyInterface $canCache = null)` +* Added `RevalidationInterface::shouldRevalidate(RequestInterface $request, Response $response)` + +## 3.6.0 - 2013-05-29 + +* ServiceDescription now implements ToArrayInterface +* Added command.hidden_params to blacklist certain headers from being treated as additionalParameters +* Guzzle can now correctly parse incomplete URLs +* Mixed casing of headers are now forced to be a single consistent casing across all values for that header. +* Messages internally use a HeaderCollection object to delegate handling case-insensitive header resolution +* Removed the whole changedHeader() function system of messages because all header changes now go through addHeader(). +* Specific header implementations can be created for complex headers. When a message creates a header, it uses a + HeaderFactory which can map specific headers to specific header classes. There is now a Link header and + CacheControl header implementation. +* Removed from interface: Guzzle\Http\ClientInterface::setUriTemplate +* Removed from interface: Guzzle\Http\ClientInterface::setCurlMulti() +* Removed Guzzle\Http\Message\Request::receivedRequestHeader() and implemented this functionality in + Guzzle\Http\Curl\RequestMediator +* Removed the optional $asString parameter from MessageInterface::getHeader(). Just cast the header to a string. +* Removed the optional $tryChunkedTransfer option from Guzzle\Http\Message\EntityEnclosingRequestInterface +* Removed the $asObjects argument from Guzzle\Http\Message\MessageInterface::getHeaders() +* Removed Guzzle\Parser\ParserRegister::get(). Use getParser() +* Removed Guzzle\Parser\ParserRegister::set(). Use registerParser(). +* All response header helper functions return a string rather than mixing Header objects and strings inconsistently +* Removed cURL blacklist support. This is no longer necessary now that Expect, Accept, etc are managed by Guzzle + directly via interfaces +* Removed the injecting of a request object onto a response object. The methods to get and set a request still exist + but are a no-op until removed. +* Most classes that used to require a ``Guzzle\Service\Command\CommandInterface` typehint now request a + `Guzzle\Service\Command\ArrayCommandInterface`. +* Added `Guzzle\Http\Message\RequestInterface::startResponse()` to the RequestInterface to handle injecting a response + on a request while the request is still being transferred +* The ability to case-insensitively search for header values +* Guzzle\Http\Message\Header::hasExactHeader +* Guzzle\Http\Message\Header::raw. Use getAll() +* Deprecated cache control specific methods on Guzzle\Http\Message\AbstractMessage. Use the CacheControl header object + instead. +* `Guzzle\Service\Command\CommandInterface` now extends from ToArrayInterface and ArrayAccess +* Added the ability to cast Model objects to a string to view debug information. + +## 3.5.0 - 2013-05-13 + +* Bug: Fixed a regression so that request responses are parsed only once per oncomplete event rather than multiple times +* Bug: Better cleanup of one-time events accross the board (when an event is meant to fire once, it will now remove + itself from the EventDispatcher) +* Bug: `Guzzle\Log\MessageFormatter` now properly writes "total_time" and "connect_time" values +* Bug: Cloning an EntityEnclosingRequest now clones the EntityBody too +* Bug: Fixed an undefined index error when parsing nested JSON responses with a sentAs parameter that reference a + non-existent key +* Bug: All __call() method arguments are now required (helps with mocking frameworks) +* Deprecating Response::getRequest() and now using a shallow clone of a request object to remove a circular reference + to help with refcount based garbage collection of resources created by sending a request +* Deprecating ZF1 cache and log adapters. These will be removed in the next major version. +* Deprecating `Response::getPreviousResponse()` (method signature still exists, but it'sdeprecated). Use the + HistoryPlugin for a history. +* Added a `responseBody` alias for the `response_body` location +* Refactored internals to no longer rely on Response::getRequest() +* HistoryPlugin can now be cast to a string +* HistoryPlugin now logs transactions rather than requests and responses to more accurately keep track of the requests + and responses that are sent over the wire +* Added `getEffectiveUrl()` and `getRedirectCount()` to Response objects + +## 3.4.3 - 2013-04-30 + +* Bug fix: Fixing bug introduced in 3.4.2 where redirect responses are duplicated on the final redirected response +* Added a check to re-extract the temp cacert bundle from the phar before sending each request + +## 3.4.2 - 2013-04-29 + +* Bug fix: Stream objects now work correctly with "a" and "a+" modes +* Bug fix: Removing `Transfer-Encoding: chunked` header when a Content-Length is present +* Bug fix: AsyncPlugin no longer forces HEAD requests +* Bug fix: DateTime timezones are now properly handled when using the service description schema formatter +* Bug fix: CachePlugin now properly handles stale-if-error directives when a request to the origin server fails +* Setting a response on a request will write to the custom request body from the response body if one is specified +* LogPlugin now writes to php://output when STDERR is undefined +* Added the ability to set multiple POST files for the same key in a single call +* application/x-www-form-urlencoded POSTs now use the utf-8 charset by default +* Added the ability to queue CurlExceptions to the MockPlugin +* Cleaned up how manual responses are queued on requests (removed "queued_response" and now using request.before_send) +* Configuration loading now allows remote files + +## 3.4.1 - 2013-04-16 + +* Large refactoring to how CurlMulti handles work. There is now a proxy that sits in front of a pool of CurlMulti + handles. This greatly simplifies the implementation, fixes a couple bugs, and provides a small performance boost. +* Exceptions are now properly grouped when sending requests in parallel +* Redirects are now properly aggregated when a multi transaction fails +* Redirects now set the response on the original object even in the event of a failure +* Bug fix: Model names are now properly set even when using $refs +* Added support for PHP 5.5's CurlFile to prevent warnings with the deprecated @ syntax +* Added support for oauth_callback in OAuth signatures +* Added support for oauth_verifier in OAuth signatures +* Added support to attempt to retrieve a command first literally, then ucfirst, the with inflection + +## 3.4.0 - 2013-04-11 + +* Bug fix: URLs are now resolved correctly based on http://tools.ietf.org/html/rfc3986#section-5.2. #289 +* Bug fix: Absolute URLs with a path in a service description will now properly override the base URL. #289 +* Bug fix: Parsing a query string with a single PHP array value will now result in an array. #263 +* Bug fix: Better normalization of the User-Agent header to prevent duplicate headers. #264. +* Bug fix: Added `number` type to service descriptions. +* Bug fix: empty parameters are removed from an OAuth signature +* Bug fix: Revalidating a cache entry prefers the Last-Modified over the Date header +* Bug fix: Fixed "array to string" error when validating a union of types in a service description +* Bug fix: Removed code that attempted to determine the size of a stream when data is written to the stream +* Bug fix: Not including an `oauth_token` if the value is null in the OauthPlugin. +* Bug fix: Now correctly aggregating successful requests and failed requests in CurlMulti when a redirect occurs. +* The new default CURLOPT_TIMEOUT setting has been increased to 150 seconds so that Guzzle works on poor connections. +* Added a feature to EntityEnclosingRequest::setBody() that will automatically set the Content-Type of the request if + the Content-Type can be determined based on the entity body or the path of the request. +* Added the ability to overwrite configuration settings in a client when grabbing a throwaway client from a builder. +* Added support for a PSR-3 LogAdapter. +* Added a `command.after_prepare` event +* Added `oauth_callback` parameter to the OauthPlugin +* Added the ability to create a custom stream class when using a stream factory +* Added a CachingEntityBody decorator +* Added support for `additionalParameters` in service descriptions to define how custom parameters are serialized. +* The bundled SSL certificate is now provided in the phar file and extracted when running Guzzle from a phar. +* You can now send any EntityEnclosingRequest with POST fields or POST files and cURL will handle creating bodies +* POST requests using a custom entity body are now treated exactly like PUT requests but with a custom cURL method. This + means that the redirect behavior of POST requests with custom bodies will not be the same as POST requests that use + POST fields or files (the latter is only used when emulating a form POST in the browser). +* Lots of cleanup to CurlHandle::factory and RequestFactory::createRequest + +## 3.3.1 - 2013-03-10 + +* Added the ability to create PHP streaming responses from HTTP requests +* Bug fix: Running any filters when parsing response headers with service descriptions +* Bug fix: OauthPlugin fixes to allow for multi-dimensional array signing, and sorting parameters before signing +* Bug fix: Removed the adding of default empty arrays and false Booleans to responses in order to be consistent across + response location visitors. +* Bug fix: Removed the possibility of creating configuration files with circular dependencies +* RequestFactory::create() now uses the key of a POST file when setting the POST file name +* Added xmlAllowEmpty to serialize an XML body even if no XML specific parameters are set + +## 3.3.0 - 2013-03-03 + +* A large number of performance optimizations have been made +* Bug fix: Added 'wb' as a valid write mode for streams +* Bug fix: `Guzzle\Http\Message\Response::json()` now allows scalar values to be returned +* Bug fix: Fixed bug in `Guzzle\Http\Message\Response` where wrapping quotes were stripped from `getEtag()` +* BC: Removed `Guzzle\Http\Utils` class +* BC: Setting a service description on a client will no longer modify the client's command factories. +* BC: Emitting IO events from a RequestMediator is now a parameter that must be set in a request's curl options using + the 'emit_io' key. This was previously set under a request's parameters using 'curl.emit_io' +* BC: `Guzzle\Stream\Stream::getWrapper()` and `Guzzle\Stream\Stream::getSteamType()` are no longer converted to + lowercase +* Operation parameter objects are now lazy loaded internally +* Added ErrorResponsePlugin that can throw errors for responses defined in service description operations' errorResponses +* Added support for instantiating responseType=class responseClass classes. Classes must implement + `Guzzle\Service\Command\ResponseClassInterface` +* Added support for additionalProperties for top-level parameters in responseType=model responseClasses. These + additional properties also support locations and can be used to parse JSON responses where the outermost part of the + JSON is an array +* Added support for nested renaming of JSON models (rename sentAs to name) +* CachePlugin + * Added support for stale-if-error so that the CachePlugin can now serve stale content from the cache on error + * Debug headers can now added to cached response in the CachePlugin + +## 3.2.0 - 2013-02-14 + +* CurlMulti is no longer reused globally. A new multi object is created per-client. This helps to isolate clients. +* URLs with no path no longer contain a "/" by default +* Guzzle\Http\QueryString does no longer manages the leading "?". This is now handled in Guzzle\Http\Url. +* BadResponseException no longer includes the full request and response message +* Adding setData() to Guzzle\Service\Description\ServiceDescriptionInterface +* Adding getResponseBody() to Guzzle\Http\Message\RequestInterface +* Various updates to classes to use ServiceDescriptionInterface type hints rather than ServiceDescription +* Header values can now be normalized into distinct values when multiple headers are combined with a comma separated list +* xmlEncoding can now be customized for the XML declaration of a XML service description operation +* Guzzle\Http\QueryString now uses Guzzle\Http\QueryAggregator\QueryAggregatorInterface objects to add custom value + aggregation and no longer uses callbacks +* The URL encoding implementation of Guzzle\Http\QueryString can now be customized +* Bug fix: Filters were not always invoked for array service description parameters +* Bug fix: Redirects now use a target response body rather than a temporary response body +* Bug fix: The default exponential backoff BackoffPlugin was not giving when the request threshold was exceeded +* Bug fix: Guzzle now takes the first found value when grabbing Cache-Control directives + +## 3.1.2 - 2013-01-27 + +* Refactored how operation responses are parsed. Visitors now include a before() method responsible for parsing the + response body. For example, the XmlVisitor now parses the XML response into an array in the before() method. +* Fixed an issue where cURL would not automatically decompress responses when the Accept-Encoding header was sent +* CURLOPT_SSL_VERIFYHOST is never set to 1 because it is deprecated (see 5e0ff2ef20f839e19d1eeb298f90ba3598784444) +* Fixed a bug where redirect responses were not chained correctly using getPreviousResponse() +* Setting default headers on a client after setting the user-agent will not erase the user-agent setting + +## 3.1.1 - 2013-01-20 + +* Adding wildcard support to Guzzle\Common\Collection::getPath() +* Adding alias support to ServiceBuilder configs +* Adding Guzzle\Service\Resource\CompositeResourceIteratorFactory and cleaning up factory interface + +## 3.1.0 - 2013-01-12 + +* BC: CurlException now extends from RequestException rather than BadResponseException +* BC: Renamed Guzzle\Plugin\Cache\CanCacheStrategyInterface::canCache() to canCacheRequest() and added CanCacheResponse() +* Added getData to ServiceDescriptionInterface +* Added context array to RequestInterface::setState() +* Bug: Removing hard dependency on the BackoffPlugin from Guzzle\Http +* Bug: Adding required content-type when JSON request visitor adds JSON to a command +* Bug: Fixing the serialization of a service description with custom data +* Made it easier to deal with exceptions thrown when transferring commands or requests in parallel by providing + an array of successful and failed responses +* Moved getPath from Guzzle\Service\Resource\Model to Guzzle\Common\Collection +* Added Guzzle\Http\IoEmittingEntityBody +* Moved command filtration from validators to location visitors +* Added `extends` attributes to service description parameters +* Added getModels to ServiceDescriptionInterface + +## 3.0.7 - 2012-12-19 + +* Fixing phar detection when forcing a cacert to system if null or true +* Allowing filename to be passed to `Guzzle\Http\Message\Request::setResponseBody()` +* Cleaning up `Guzzle\Common\Collection::inject` method +* Adding a response_body location to service descriptions + +## 3.0.6 - 2012-12-09 + +* CurlMulti performance improvements +* Adding setErrorResponses() to Operation +* composer.json tweaks + +## 3.0.5 - 2012-11-18 + +* Bug: Fixing an infinite recursion bug caused from revalidating with the CachePlugin +* Bug: Response body can now be a string containing "0" +* Bug: Using Guzzle inside of a phar uses system by default but now allows for a custom cacert +* Bug: QueryString::fromString now properly parses query string parameters that contain equal signs +* Added support for XML attributes in service description responses +* DefaultRequestSerializer now supports array URI parameter values for URI template expansion +* Added better mimetype guessing to requests and post files + +## 3.0.4 - 2012-11-11 + +* Bug: Fixed a bug when adding multiple cookies to a request to use the correct glue value +* Bug: Cookies can now be added that have a name, domain, or value set to "0" +* Bug: Using the system cacert bundle when using the Phar +* Added json and xml methods to Response to make it easier to parse JSON and XML response data into data structures +* Enhanced cookie jar de-duplication +* Added the ability to enable strict cookie jars that throw exceptions when invalid cookies are added +* Added setStream to StreamInterface to actually make it possible to implement custom rewind behavior for entity bodies +* Added the ability to create any sort of hash for a stream rather than just an MD5 hash + +## 3.0.3 - 2012-11-04 + +* Implementing redirects in PHP rather than cURL +* Added PECL URI template extension and using as default parser if available +* Bug: Fixed Content-Length parsing of Response factory +* Adding rewind() method to entity bodies and streams. Allows for custom rewinding of non-repeatable streams. +* Adding ToArrayInterface throughout library +* Fixing OauthPlugin to create unique nonce values per request + +## 3.0.2 - 2012-10-25 + +* Magic methods are enabled by default on clients +* Magic methods return the result of a command +* Service clients no longer require a base_url option in the factory +* Bug: Fixed an issue with URI templates where null template variables were being expanded + +## 3.0.1 - 2012-10-22 + +* Models can now be used like regular collection objects by calling filter, map, etc +* Models no longer require a Parameter structure or initial data in the constructor +* Added a custom AppendIterator to get around a PHP bug with the `\AppendIterator` + +## 3.0.0 - 2012-10-15 + +* Rewrote service description format to be based on Swagger + * Now based on JSON schema + * Added nested input structures and nested response models + * Support for JSON and XML input and output models + * Renamed `commands` to `operations` + * Removed dot class notation + * Removed custom types +* Broke the project into smaller top-level namespaces to be more component friendly +* Removed support for XML configs and descriptions. Use arrays or JSON files. +* Removed the Validation component and Inspector +* Moved all cookie code to Guzzle\Plugin\Cookie +* Magic methods on a Guzzle\Service\Client now return the command un-executed. +* Calling getResult() or getResponse() on a command will lazily execute the command if needed. +* Now shipping with cURL's CA certs and using it by default +* Added previousResponse() method to response objects +* No longer sending Accept and Accept-Encoding headers on every request +* Only sending an Expect header by default when a payload is greater than 1MB +* Added/moved client options: + * curl.blacklist to curl.option.blacklist + * Added ssl.certificate_authority +* Added a Guzzle\Iterator component +* Moved plugins from Guzzle\Http\Plugin to Guzzle\Plugin +* Added a more robust backoff retry strategy (replaced the ExponentialBackoffPlugin) +* Added a more robust caching plugin +* Added setBody to response objects +* Updating LogPlugin to use a more flexible MessageFormatter +* Added a completely revamped build process +* Cleaning up Collection class and removing default values from the get method +* Fixed ZF2 cache adapters + +## 2.8.8 - 2012-10-15 + +* Bug: Fixed a cookie issue that caused dot prefixed domains to not match where popular browsers did + +## 2.8.7 - 2012-09-30 + +* Bug: Fixed config file aliases for JSON includes +* Bug: Fixed cookie bug on a request object by using CookieParser to parse cookies on requests +* Bug: Removing the path to a file when sending a Content-Disposition header on a POST upload +* Bug: Hardening request and response parsing to account for missing parts +* Bug: Fixed PEAR packaging +* Bug: Fixed Request::getInfo +* Bug: Fixed cases where CURLM_CALL_MULTI_PERFORM return codes were causing curl transactions to fail +* Adding the ability for the namespace Iterator factory to look in multiple directories +* Added more getters/setters/removers from service descriptions +* Added the ability to remove POST fields from OAuth signatures +* OAuth plugin now supports 2-legged OAuth + +## 2.8.6 - 2012-09-05 + +* Added the ability to modify and build service descriptions +* Added the use of visitors to apply parameters to locations in service descriptions using the dynamic command +* Added a `json` parameter location +* Now allowing dot notation for classes in the CacheAdapterFactory +* Using the union of two arrays rather than an array_merge when extending service builder services and service params +* Ensuring that a service is a string before doing strpos() checks on it when substituting services for references + in service builder config files. +* Services defined in two different config files that include one another will by default replace the previously + defined service, but you can now create services that extend themselves and merge their settings over the previous +* The JsonLoader now supports aliasing filenames with different filenames. This allows you to alias something like + '_default' with a default JSON configuration file. + +## 2.8.5 - 2012-08-29 + +* Bug: Suppressed empty arrays from URI templates +* Bug: Added the missing $options argument from ServiceDescription::factory to enable caching +* Added support for HTTP responses that do not contain a reason phrase in the start-line +* AbstractCommand commands are now invokable +* Added a way to get the data used when signing an Oauth request before a request is sent + +## 2.8.4 - 2012-08-15 + +* Bug: Custom delay time calculations are no longer ignored in the ExponentialBackoffPlugin +* Added the ability to transfer entity bodies as a string rather than streamed. This gets around curl error 65. Set `body_as_string` in a request's curl options to enable. +* Added a StreamInterface, EntityBodyInterface, and added ftell() to Guzzle\Common\Stream +* Added an AbstractEntityBodyDecorator and a ReadLimitEntityBody decorator to transfer only a subset of a decorated stream +* Stream and EntityBody objects will now return the file position to the previous position after a read required operation (e.g. getContentMd5()) +* Added additional response status codes +* Removed SSL information from the default User-Agent header +* DELETE requests can now send an entity body +* Added an EventDispatcher to the ExponentialBackoffPlugin and added an ExponentialBackoffLogger to log backoff retries +* Added the ability of the MockPlugin to consume mocked request bodies +* LogPlugin now exposes request and response objects in the extras array + +## 2.8.3 - 2012-07-30 + +* Bug: Fixed a case where empty POST requests were sent as GET requests +* Bug: Fixed a bug in ExponentialBackoffPlugin that caused fatal errors when retrying an EntityEnclosingRequest that does not have a body +* Bug: Setting the response body of a request to null after completing a request, not when setting the state of a request to new +* Added multiple inheritance to service description commands +* Added an ApiCommandInterface and added ``getParamNames()`` and ``hasParam()`` +* Removed the default 2mb size cutoff from the Md5ValidatorPlugin so that it now defaults to validating everything +* Changed CurlMulti::perform to pass a smaller timeout to CurlMulti::executeHandles + +## 2.8.2 - 2012-07-24 + +* Bug: Query string values set to 0 are no longer dropped from the query string +* Bug: A Collection object is no longer created each time a call is made to ``Guzzle\Service\Command\AbstractCommand::getRequestHeaders()`` +* Bug: ``+`` is now treated as an encoded space when parsing query strings +* QueryString and Collection performance improvements +* Allowing dot notation for class paths in filters attribute of a service descriptions + +## 2.8.1 - 2012-07-16 + +* Loosening Event Dispatcher dependency +* POST redirects can now be customized using CURLOPT_POSTREDIR + +## 2.8.0 - 2012-07-15 + +* BC: Guzzle\Http\Query + * Query strings with empty variables will always show an equal sign unless the variable is set to QueryString::BLANK (e.g. ?acl= vs ?acl) + * Changed isEncodingValues() and isEncodingFields() to isUrlEncoding() + * Changed setEncodeValues(bool) and setEncodeFields(bool) to useUrlEncoding(bool) + * Changed the aggregation functions of QueryString to be static methods + * Can now use fromString() with querystrings that have a leading ? +* cURL configuration values can be specified in service descriptions using ``curl.`` prefixed parameters +* Content-Length is set to 0 before emitting the request.before_send event when sending an empty request body +* Cookies are no longer URL decoded by default +* Bug: URI template variables set to null are no longer expanded + +## 2.7.2 - 2012-07-02 + +* BC: Moving things to get ready for subtree splits. Moving Inflection into Common. Moving Guzzle\Http\Parser to Guzzle\Parser. +* BC: Removing Guzzle\Common\Batch\Batch::count() and replacing it with isEmpty() +* CachePlugin now allows for a custom request parameter function to check if a request can be cached +* Bug fix: CachePlugin now only caches GET and HEAD requests by default +* Bug fix: Using header glue when transferring headers over the wire +* Allowing deeply nested arrays for composite variables in URI templates +* Batch divisors can now return iterators or arrays + +## 2.7.1 - 2012-06-26 + +* Minor patch to update version number in UA string +* Updating build process + +## 2.7.0 - 2012-06-25 + +* BC: Inflection classes moved to Guzzle\Inflection. No longer static methods. Can now inject custom inflectors into classes. +* BC: Removed magic setX methods from commands +* BC: Magic methods mapped to service description commands are now inflected in the command factory rather than the client __call() method +* Verbose cURL options are no longer enabled by default. Set curl.debug to true on a client to enable. +* Bug: Now allowing colons in a response start-line (e.g. HTTP/1.1 503 Service Unavailable: Back-end server is at capacity) +* Guzzle\Service\Resource\ResourceIteratorApplyBatched now internally uses the Guzzle\Common\Batch namespace +* Added Guzzle\Service\Plugin namespace and a PluginCollectionPlugin +* Added the ability to set POST fields and files in a service description +* Guzzle\Http\EntityBody::factory() now accepts objects with a __toString() method +* Adding a command.before_prepare event to clients +* Added BatchClosureTransfer and BatchClosureDivisor +* BatchTransferException now includes references to the batch divisor and transfer strategies +* Fixed some tests so that they pass more reliably +* Added Guzzle\Common\Log\ArrayLogAdapter + +## 2.6.6 - 2012-06-10 + +* BC: Removing Guzzle\Http\Plugin\BatchQueuePlugin +* BC: Removing Guzzle\Service\Command\CommandSet +* Adding generic batching system (replaces the batch queue plugin and command set) +* Updating ZF cache and log adapters and now using ZF's composer repository +* Bug: Setting the name of each ApiParam when creating through an ApiCommand +* Adding result_type, result_doc, deprecated, and doc_url to service descriptions +* Bug: Changed the default cookie header casing back to 'Cookie' + +## 2.6.5 - 2012-06-03 + +* BC: Renaming Guzzle\Http\Message\RequestInterface::getResourceUri() to getResource() +* BC: Removing unused AUTH_BASIC and AUTH_DIGEST constants from +* BC: Guzzle\Http\Cookie is now used to manage Set-Cookie data, not Cookie data +* BC: Renaming methods in the CookieJarInterface +* Moving almost all cookie logic out of the CookiePlugin and into the Cookie or CookieJar implementations +* Making the default glue for HTTP headers ';' instead of ',' +* Adding a removeValue to Guzzle\Http\Message\Header +* Adding getCookies() to request interface. +* Making it easier to add event subscribers to HasDispatcherInterface classes. Can now directly call addSubscriber() + +## 2.6.4 - 2012-05-30 + +* BC: Cleaning up how POST files are stored in EntityEnclosingRequest objects. Adding PostFile class. +* BC: Moving ApiCommand specific functionality from the Inspector and on to the ApiCommand +* Bug: Fixing magic method command calls on clients +* Bug: Email constraint only validates strings +* Bug: Aggregate POST fields when POST files are present in curl handle +* Bug: Fixing default User-Agent header +* Bug: Only appending or prepending parameters in commands if they are specified +* Bug: Not requiring response reason phrases or status codes to match a predefined list of codes +* Allowing the use of dot notation for class namespaces when using instance_of constraint +* Added any_match validation constraint +* Added an AsyncPlugin +* Passing request object to the calculateWait method of the ExponentialBackoffPlugin +* Allowing the result of a command object to be changed +* Parsing location and type sub values when instantiating a service description rather than over and over at runtime + +## 2.6.3 - 2012-05-23 + +* [BC] Guzzle\Common\FromConfigInterface no longer requires any config options. +* [BC] Refactoring how POST files are stored on an EntityEnclosingRequest. They are now separate from POST fields. +* You can now use an array of data when creating PUT request bodies in the request factory. +* Removing the requirement that HTTPS requests needed a Cache-Control: public directive to be cacheable. +* [Http] Adding support for Content-Type in multipart POST uploads per upload +* [Http] Added support for uploading multiple files using the same name (foo[0], foo[1]) +* Adding more POST data operations for easier manipulation of POST data. +* You can now set empty POST fields. +* The body of a request is only shown on EntityEnclosingRequest objects that do not use POST files. +* Split the Guzzle\Service\Inspector::validateConfig method into two methods. One to initialize when a command is created, and one to validate. +* CS updates + +## 2.6.2 - 2012-05-19 + +* [Http] Better handling of nested scope requests in CurlMulti. Requests are now always prepares in the send() method rather than the addRequest() method. + +## 2.6.1 - 2012-05-19 + +* [BC] Removing 'path' support in service descriptions. Use 'uri'. +* [BC] Guzzle\Service\Inspector::parseDocBlock is now protected. Adding getApiParamsForClass() with cache. +* [BC] Removing Guzzle\Common\NullObject. Use https://github.com/mtdowling/NullObject if you need it. +* [BC] Removing Guzzle\Common\XmlElement. +* All commands, both dynamic and concrete, have ApiCommand objects. +* Adding a fix for CurlMulti so that if all of the connections encounter some sort of curl error, then the loop exits. +* Adding checks to EntityEnclosingRequest so that empty POST files and fields are ignored. +* Making the method signature of Guzzle\Service\Builder\ServiceBuilder::factory more flexible. + +## 2.6.0 - 2012-05-15 + +* [BC] Moving Guzzle\Service\Builder to Guzzle\Service\Builder\ServiceBuilder +* [BC] Executing a Command returns the result of the command rather than the command +* [BC] Moving all HTTP parsing logic to Guzzle\Http\Parsers. Allows for faster C implementations if needed. +* [BC] Changing the Guzzle\Http\Message\Response::setProtocol() method to accept a protocol and version in separate args. +* [BC] Moving ResourceIterator* to Guzzle\Service\Resource +* [BC] Completely refactored ResourceIterators to iterate over a cloned command object +* [BC] Moved Guzzle\Http\UriTemplate to Guzzle\Http\Parser\UriTemplate\UriTemplate +* [BC] Guzzle\Guzzle is now deprecated +* Moving Guzzle\Common\Guzzle::inject to Guzzle\Common\Collection::inject +* Adding Guzzle\Version class to give version information about Guzzle +* Adding Guzzle\Http\Utils class to provide getDefaultUserAgent() and getHttpDate() +* Adding Guzzle\Curl\CurlVersion to manage caching curl_version() data +* ServiceDescription and ServiceBuilder are now cacheable using similar configs +* Changing the format of XML and JSON service builder configs. Backwards compatible. +* Cleaned up Cookie parsing +* Trimming the default Guzzle User-Agent header +* Adding a setOnComplete() method to Commands that is called when a command completes +* Keeping track of requests that were mocked in the MockPlugin +* Fixed a caching bug in the CacheAdapterFactory +* Inspector objects can be injected into a Command object +* Refactoring a lot of code and tests to be case insensitive when dealing with headers +* Adding Guzzle\Http\Message\HeaderComparison for easy comparison of HTTP headers using a DSL +* Adding the ability to set global option overrides to service builder configs +* Adding the ability to include other service builder config files from within XML and JSON files +* Moving the parseQuery method out of Url and on to QueryString::fromString() as a static factory method. + +## 2.5.0 - 2012-05-08 + +* Major performance improvements +* [BC] Simplifying Guzzle\Common\Collection. Please check to see if you are using features that are now deprecated. +* [BC] Using a custom validation system that allows a flyweight implementation for much faster validation. No longer using Symfony2 Validation component. +* [BC] No longer supporting "{{ }}" for injecting into command or UriTemplates. Use "{}" +* Added the ability to passed parameters to all requests created by a client +* Added callback functionality to the ExponentialBackoffPlugin +* Using microtime in ExponentialBackoffPlugin to allow more granular backoff strategies. +* Rewinding request stream bodies when retrying requests +* Exception is thrown when JSON response body cannot be decoded +* Added configurable magic method calls to clients and commands. This is off by default. +* Fixed a defect that added a hash to every parsed URL part +* Fixed duplicate none generation for OauthPlugin. +* Emitting an event each time a client is generated by a ServiceBuilder +* Using an ApiParams object instead of a Collection for parameters of an ApiCommand +* cache.* request parameters should be renamed to params.cache.* +* Added the ability to set arbitrary curl options on requests (disable_wire, progress, etc). See CurlHandle. +* Added the ability to disable type validation of service descriptions +* ServiceDescriptions and ServiceBuilders are now Serializable diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/LICENSE b/plugins/updraftplus/vendor/guzzle/guzzle/LICENSE new file mode 100644 index 0000000..d51aa69 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2011 Michael Dowling, https://github.com/mtdowling + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/README.md b/plugins/updraftplus/vendor/guzzle/guzzle/README.md new file mode 100644 index 0000000..6be06bf --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/README.md @@ -0,0 +1,57 @@ +Guzzle, PHP HTTP client and webservice framework +================================================ + +# This is an old version of Guzzle + +This repository is for Guzzle 3.x. Guzzle 5.x, the new version of Guzzle, has +been released and is available at +[https://github.com/guzzle/guzzle](https://github.com/guzzle/guzzle). The +documentation for Guzzle version 5+ can be found at +[http://guzzlephp.org](http://guzzlephp.org). + +Guzzle 3 is only maintained for bug and security fixes. Guzzle 3 will be EOL +at some point in late 2015. + +### About Guzzle 3 + +[![Composer Downloads](https://poser.pugx.org/guzzle/guzzle/d/total.png)](https://packagist.org/packages/guzzle/guzzle) + [![Build Status](https://secure.travis-ci.org/guzzle/guzzle3.png?branch=master)](http://travis-ci.org/guzzle/guzzle3) + +- Extremely powerful API provides all the power of cURL with a simple interface. +- Truly take advantage of HTTP/1.1 with persistent connections, connection pooling, and parallel requests. +- Service description DSL allows you build awesome web service clients faster. +- Symfony2 event-based plugin system allows you to completely modify the behavior of a request. + +Get answers with: [Documentation](http://guzzle3.readthedocs.org/en/latest/), [Forums](https://groups.google.com/forum/?hl=en#!forum/guzzle), IRC ([#guzzlephp](irc://irc.freenode.net/#guzzlephp) @ irc.freenode.net) + +### Installing via Composer + +The recommended way to install Guzzle is through [Composer](http://getcomposer.org). + +```bash +# Install Composer +curl -sS https://getcomposer.org/installer | php + +# Add Guzzle as a dependency +php composer.phar require guzzle/guzzle:~3.9 +``` + +After installing, you need to require Composer's autoloader: + +```php +require 'vendor/autoload.php'; +``` +## Known Issues + +1. Problem following a specific redirect: https://github.com/guzzle/guzzle/issues/385. + This has been fixed in Guzzle 4/5. +2. Root XML attributes not serialized in a service description: https://github.com/guzzle/guzzle3/issues/5. + This has been fixed in Guzzle 4/5. +3. Accept-Encoding not preserved when following redirect: https://github.com/guzzle/guzzle3/issues/9 + Fixed in Guzzle 4/5. +4. String "Array" Transmitted w/ PostFiles and Duplicate Aggregator: https://github.com/guzzle/guzzle3/issues/10 + Fixed in Guzzle 4/5. +5. Recursive model references with array items: https://github.com/guzzle/guzzle3/issues/13 + Fixed in Guzzle 4/5 +6. String "Array" Transmitted w/ PostFiles and Duplicate Aggregator: https://github.com/guzzle/guzzle3/issues/10 + Fixed in Guzzle 4/5. diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/UPGRADING.md b/plugins/updraftplus/vendor/guzzle/guzzle/UPGRADING.md new file mode 100644 index 0000000..f58bf11 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/UPGRADING.md @@ -0,0 +1,537 @@ +Guzzle Upgrade Guide +==================== + +3.6 to 3.7 +---------- + +### Deprecations + +- You can now enable E_USER_DEPRECATED warnings to see if you are using any deprecated methods.: + +```php +\Guzzle\Common\Version::$emitWarnings = true; +``` + +The following APIs and options have been marked as deprecated: + +- Marked `Guzzle\Http\Message\Request::isResponseBodyRepeatable()` as deprecated. Use `$request->getResponseBody()->isRepeatable()` instead. +- Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead. +- Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead. +- Marked `Guzzle\Http\Message\Request::setIsRedirect()` as deprecated. Use the HistoryPlugin instead. +- Marked `Guzzle\Http\Message\Request::isRedirect()` as deprecated. Use the HistoryPlugin instead. +- Marked `Guzzle\Cache\CacheAdapterFactory::factory()` as deprecated +- Marked `Guzzle\Service\Client::enableMagicMethods()` as deprecated. Magic methods can no longer be disabled on a Guzzle\Service\Client. +- Marked `Guzzle\Parser\Url\UrlParser` as deprecated. Just use PHP's `parse_url()` and percent encode your UTF-8. +- Marked `Guzzle\Common\Collection::inject()` as deprecated. +- Marked `Guzzle\Plugin\CurlAuth\CurlAuthPlugin` as deprecated. Use + `$client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest|NTLM|Any'));` or + `$client->setDefaultOption('auth', array('user', 'pass', 'Basic|Digest|NTLM|Any'));` + +3.7 introduces `request.options` as a parameter for a client configuration and as an optional argument to all creational +request methods. When paired with a client's configuration settings, these options allow you to specify default settings +for various aspects of a request. Because these options make other previous configuration options redundant, several +configuration options and methods of a client and AbstractCommand have been deprecated. + +- Marked `Guzzle\Service\Client::getDefaultHeaders()` as deprecated. Use `$client->getDefaultOption('headers')`. +- Marked `Guzzle\Service\Client::setDefaultHeaders()` as deprecated. Use `$client->setDefaultOption('headers/{header_name}', 'value')`. +- Marked 'request.params' for `Guzzle\Http\Client` as deprecated. Use `$client->setDefaultOption('params/{param_name}', 'value')` +- Marked 'command.headers', 'command.response_body' and 'command.on_complete' as deprecated for AbstractCommand. These will work through Guzzle 4.0 + + $command = $client->getCommand('foo', array( + 'command.headers' => array('Test' => '123'), + 'command.response_body' => '/path/to/file' + )); + + // Should be changed to: + + $command = $client->getCommand('foo', array( + 'command.request_options' => array( + 'headers' => array('Test' => '123'), + 'save_as' => '/path/to/file' + ) + )); + +### Interface changes + +Additions and changes (you will need to update any implementations or subclasses you may have created): + +- Added an `$options` argument to the end of the following methods of `Guzzle\Http\ClientInterface`: + createRequest, head, delete, put, patch, post, options, prepareRequest +- Added an `$options` argument to the end of `Guzzle\Http\Message\Request\RequestFactoryInterface::createRequest()` +- Added an `applyOptions()` method to `Guzzle\Http\Message\Request\RequestFactoryInterface` +- Changed `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $body = null)` to + `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $options = array())`. You can still pass in a + resource, string, or EntityBody into the $options parameter to specify the download location of the response. +- Changed `Guzzle\Common\Collection::__construct($data)` to no longer accepts a null value for `$data` but a + default `array()` +- Added `Guzzle\Stream\StreamInterface::isRepeatable` +- Made `Guzzle\Http\Client::expandTemplate` and `getUriTemplate` protected methods. + +The following methods were removed from interfaces. All of these methods are still available in the concrete classes +that implement them, but you should update your code to use alternative methods: + +- Removed `Guzzle\Http\ClientInterface::setDefaultHeaders(). Use + `$client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. or + `$client->getConfig()->setPath('request.options/headers', array('header_name' => 'value'))` or + `$client->setDefaultOption('headers/{header_name}', 'value')`. or + `$client->setDefaultOption('headers', array('header_name' => 'value'))`. +- Removed `Guzzle\Http\ClientInterface::getDefaultHeaders(). Use `$client->getConfig()->getPath('request.options/headers')`. +- Removed `Guzzle\Http\ClientInterface::expandTemplate()`. This is an implementation detail. +- Removed `Guzzle\Http\ClientInterface::setRequestFactory()`. This is an implementation detail. +- Removed `Guzzle\Http\ClientInterface::getCurlMulti()`. This is a very specific implementation detail. +- Removed `Guzzle\Http\Message\RequestInterface::canCache`. Use the CachePlugin. +- Removed `Guzzle\Http\Message\RequestInterface::setIsRedirect`. Use the HistoryPlugin. +- Removed `Guzzle\Http\Message\RequestInterface::isRedirect`. Use the HistoryPlugin. + +### Cache plugin breaking changes + +- CacheKeyProviderInterface and DefaultCacheKeyProvider are no longer used. All of this logic is handled in a + CacheStorageInterface. These two objects and interface will be removed in a future version. +- Always setting X-cache headers on cached responses +- Default cache TTLs are now handled by the CacheStorageInterface of a CachePlugin +- `CacheStorageInterface::cache($key, Response $response, $ttl = null)` has changed to `cache(RequestInterface + $request, Response $response);` +- `CacheStorageInterface::fetch($key)` has changed to `fetch(RequestInterface $request);` +- `CacheStorageInterface::delete($key)` has changed to `delete(RequestInterface $request);` +- Added `CacheStorageInterface::purge($url)` +- `DefaultRevalidation::__construct(CacheKeyProviderInterface $cacheKey, CacheStorageInterface $cache, CachePlugin + $plugin)` has changed to `DefaultRevalidation::__construct(CacheStorageInterface $cache, + CanCacheStrategyInterface $canCache = null)` +- Added `RevalidationInterface::shouldRevalidate(RequestInterface $request, Response $response)` + +3.5 to 3.6 +---------- + +* Mixed casing of headers are now forced to be a single consistent casing across all values for that header. +* Messages internally use a HeaderCollection object to delegate handling case-insensitive header resolution +* Removed the whole changedHeader() function system of messages because all header changes now go through addHeader(). + For example, setHeader() first removes the header using unset on a HeaderCollection and then calls addHeader(). + Keeping the Host header and URL host in sync is now handled by overriding the addHeader method in Request. +* Specific header implementations can be created for complex headers. When a message creates a header, it uses a + HeaderFactory which can map specific headers to specific header classes. There is now a Link header and + CacheControl header implementation. +* Moved getLinks() from Response to just be used on a Link header object. + +If you previously relied on Guzzle\Http\Message\Header::raw(), then you will need to update your code to use the +HeaderInterface (e.g. toArray(), getAll(), etc). + +### Interface changes + +* Removed from interface: Guzzle\Http\ClientInterface::setUriTemplate +* Removed from interface: Guzzle\Http\ClientInterface::setCurlMulti() +* Removed Guzzle\Http\Message\Request::receivedRequestHeader() and implemented this functionality in + Guzzle\Http\Curl\RequestMediator +* Removed the optional $asString parameter from MessageInterface::getHeader(). Just cast the header to a string. +* Removed the optional $tryChunkedTransfer option from Guzzle\Http\Message\EntityEnclosingRequestInterface +* Removed the $asObjects argument from Guzzle\Http\Message\MessageInterface::getHeaders() + +### Removed deprecated functions + +* Removed Guzzle\Parser\ParserRegister::get(). Use getParser() +* Removed Guzzle\Parser\ParserRegister::set(). Use registerParser(). + +### Deprecations + +* The ability to case-insensitively search for header values +* Guzzle\Http\Message\Header::hasExactHeader +* Guzzle\Http\Message\Header::raw. Use getAll() +* Deprecated cache control specific methods on Guzzle\Http\Message\AbstractMessage. Use the CacheControl header object + instead. + +### Other changes + +* All response header helper functions return a string rather than mixing Header objects and strings inconsistently +* Removed cURL blacklist support. This is no longer necessary now that Expect, Accept, etc are managed by Guzzle + directly via interfaces +* Removed the injecting of a request object onto a response object. The methods to get and set a request still exist + but are a no-op until removed. +* Most classes that used to require a ``Guzzle\Service\Command\CommandInterface` typehint now request a + `Guzzle\Service\Command\ArrayCommandInterface`. +* Added `Guzzle\Http\Message\RequestInterface::startResponse()` to the RequestInterface to handle injecting a response + on a request while the request is still being transferred +* `Guzzle\Service\Command\CommandInterface` now extends from ToArrayInterface and ArrayAccess + +3.3 to 3.4 +---------- + +Base URLs of a client now follow the rules of http://tools.ietf.org/html/rfc3986#section-5.2.2 when merging URLs. + +3.2 to 3.3 +---------- + +### Response::getEtag() quote stripping removed + +`Guzzle\Http\Message\Response::getEtag()` no longer strips quotes around the ETag response header + +### Removed `Guzzle\Http\Utils` + +The `Guzzle\Http\Utils` class was removed. This class was only used for testing. + +### Stream wrapper and type + +`Guzzle\Stream\Stream::getWrapper()` and `Guzzle\Stream\Stream::getSteamType()` are no longer converted to lowercase. + +### curl.emit_io became emit_io + +Emitting IO events from a RequestMediator is now a parameter that must be set in a request's curl options using the +'emit_io' key. This was previously set under a request's parameters using 'curl.emit_io' + +3.1 to 3.2 +---------- + +### CurlMulti is no longer reused globally + +Before 3.2, the same CurlMulti object was reused globally for each client. This can cause issue where plugins added +to a single client can pollute requests dispatched from other clients. + +If you still wish to reuse the same CurlMulti object with each client, then you can add a listener to the +ServiceBuilder's `service_builder.create_client` event to inject a custom CurlMulti object into each client as it is +created. + +```php +$multi = new Guzzle\Http\Curl\CurlMulti(); +$builder = Guzzle\Service\Builder\ServiceBuilder::factory('/path/to/config.json'); +$builder->addListener('service_builder.create_client', function ($event) use ($multi) { + $event['client']->setCurlMulti($multi); +} +}); +``` + +### No default path + +URLs no longer have a default path value of '/' if no path was specified. + +Before: + +```php +$request = $client->get('http://www.foo.com'); +echo $request->getUrl(); +// >> http://www.foo.com/ +``` + +After: + +```php +$request = $client->get('http://www.foo.com'); +echo $request->getUrl(); +// >> http://www.foo.com +``` + +### Less verbose BadResponseException + +The exception message for `Guzzle\Http\Exception\BadResponseException` no longer contains the full HTTP request and +response information. You can, however, get access to the request and response object by calling `getRequest()` or +`getResponse()` on the exception object. + +### Query parameter aggregation + +Multi-valued query parameters are no longer aggregated using a callback function. `Guzzle\Http\Query` now has a +setAggregator() method that accepts a `Guzzle\Http\QueryAggregator\QueryAggregatorInterface` object. This object is +responsible for handling the aggregation of multi-valued query string variables into a flattened hash. + +2.8 to 3.x +---------- + +### Guzzle\Service\Inspector + +Change `\Guzzle\Service\Inspector::fromConfig` to `\Guzzle\Common\Collection::fromConfig` + +**Before** + +```php +use Guzzle\Service\Inspector; + +class YourClient extends \Guzzle\Service\Client +{ + public static function factory($config = array()) + { + $default = array(); + $required = array('base_url', 'username', 'api_key'); + $config = Inspector::fromConfig($config, $default, $required); + + $client = new self( + $config->get('base_url'), + $config->get('username'), + $config->get('api_key') + ); + $client->setConfig($config); + + $client->setDescription(ServiceDescription::factory(__DIR__ . DIRECTORY_SEPARATOR . 'client.json')); + + return $client; + } +``` + +**After** + +```php +use Guzzle\Common\Collection; + +class YourClient extends \Guzzle\Service\Client +{ + public static function factory($config = array()) + { + $default = array(); + $required = array('base_url', 'username', 'api_key'); + $config = Collection::fromConfig($config, $default, $required); + + $client = new self( + $config->get('base_url'), + $config->get('username'), + $config->get('api_key') + ); + $client->setConfig($config); + + $client->setDescription(ServiceDescription::factory(__DIR__ . DIRECTORY_SEPARATOR . 'client.json')); + + return $client; + } +``` + +### Convert XML Service Descriptions to JSON + +**Before** + +```xml + + + + + + Get a list of groups + + + Uses a search query to get a list of groups + + + + Create a group + + + + + Delete a group by ID + + + + + + + Update a group + + + + + + +``` + +**After** + +```json +{ + "name": "Zendesk REST API v2", + "apiVersion": "2012-12-31", + "description":"Provides access to Zendesk views, groups, tickets, ticket fields, and users", + "operations": { + "list_groups": { + "httpMethod":"GET", + "uri": "groups.json", + "summary": "Get a list of groups" + }, + "search_groups":{ + "httpMethod":"GET", + "uri": "search.json?query=\"{query} type:group\"", + "summary": "Uses a search query to get a list of groups", + "parameters":{ + "query":{ + "location": "uri", + "description":"Zendesk Search Query", + "type": "string", + "required": true + } + } + }, + "create_group": { + "httpMethod":"POST", + "uri": "groups.json", + "summary": "Create a group", + "parameters":{ + "data": { + "type": "array", + "location": "body", + "description":"Group JSON", + "filters": "json_encode", + "required": true + }, + "Content-Type":{ + "type": "string", + "location":"header", + "static": "application/json" + } + } + }, + "delete_group": { + "httpMethod":"DELETE", + "uri": "groups/{id}.json", + "summary": "Delete a group", + "parameters":{ + "id":{ + "location": "uri", + "description":"Group to delete by ID", + "type": "integer", + "required": true + } + } + }, + "get_group": { + "httpMethod":"GET", + "uri": "groups/{id}.json", + "summary": "Get a ticket", + "parameters":{ + "id":{ + "location": "uri", + "description":"Group to get by ID", + "type": "integer", + "required": true + } + } + }, + "update_group": { + "httpMethod":"PUT", + "uri": "groups/{id}.json", + "summary": "Update a group", + "parameters":{ + "id": { + "location": "uri", + "description":"Group to update by ID", + "type": "integer", + "required": true + }, + "data": { + "type": "array", + "location": "body", + "description":"Group JSON", + "filters": "json_encode", + "required": true + }, + "Content-Type":{ + "type": "string", + "location":"header", + "static": "application/json" + } + } + } +} +``` + +### Guzzle\Service\Description\ServiceDescription + +Commands are now called Operations + +**Before** + +```php +use Guzzle\Service\Description\ServiceDescription; + +$sd = new ServiceDescription(); +$sd->getCommands(); // @returns ApiCommandInterface[] +$sd->hasCommand($name); +$sd->getCommand($name); // @returns ApiCommandInterface|null +$sd->addCommand($command); // @param ApiCommandInterface $command +``` + +**After** + +```php +use Guzzle\Service\Description\ServiceDescription; + +$sd = new ServiceDescription(); +$sd->getOperations(); // @returns OperationInterface[] +$sd->hasOperation($name); +$sd->getOperation($name); // @returns OperationInterface|null +$sd->addOperation($operation); // @param OperationInterface $operation +``` + +### Guzzle\Common\Inflection\Inflector + +Namespace is now `Guzzle\Inflection\Inflector` + +### Guzzle\Http\Plugin + +Namespace is now `Guzzle\Plugin`. Many other changes occur within this namespace and are detailed in their own sections below. + +### Guzzle\Http\Plugin\LogPlugin and Guzzle\Common\Log + +Now `Guzzle\Plugin\Log\LogPlugin` and `Guzzle\Log` respectively. + +**Before** + +```php +use Guzzle\Common\Log\ClosureLogAdapter; +use Guzzle\Http\Plugin\LogPlugin; + +/** @var \Guzzle\Http\Client */ +$client; + +// $verbosity is an integer indicating desired message verbosity level +$client->addSubscriber(new LogPlugin(new ClosureLogAdapter(function($m) { echo $m; }, $verbosity = LogPlugin::LOG_VERBOSE); +``` + +**After** + +```php +use Guzzle\Log\ClosureLogAdapter; +use Guzzle\Log\MessageFormatter; +use Guzzle\Plugin\Log\LogPlugin; + +/** @var \Guzzle\Http\Client */ +$client; + +// $format is a string indicating desired message format -- @see MessageFormatter +$client->addSubscriber(new LogPlugin(new ClosureLogAdapter(function($m) { echo $m; }, $format = MessageFormatter::DEBUG_FORMAT); +``` + +### Guzzle\Http\Plugin\CurlAuthPlugin + +Now `Guzzle\Plugin\CurlAuth\CurlAuthPlugin`. + +### Guzzle\Http\Plugin\ExponentialBackoffPlugin + +Now `Guzzle\Plugin\Backoff\BackoffPlugin`, and other changes. + +**Before** + +```php +use Guzzle\Http\Plugin\ExponentialBackoffPlugin; + +$backoffPlugin = new ExponentialBackoffPlugin($maxRetries, array_merge( + ExponentialBackoffPlugin::getDefaultFailureCodes(), array(429) + )); + +$client->addSubscriber($backoffPlugin); +``` + +**After** + +```php +use Guzzle\Plugin\Backoff\BackoffPlugin; +use Guzzle\Plugin\Backoff\HttpBackoffStrategy; + +// Use convenient factory method instead -- see implementation for ideas of what +// you can do with chaining backoff strategies +$backoffPlugin = BackoffPlugin::getExponentialBackoff($maxRetries, array_merge( + HttpBackoffStrategy::getDefaultFailureCodes(), array(429) + )); +$client->addSubscriber($backoffPlugin); +``` + +### Known Issues + +#### [BUG] Accept-Encoding header behavior changed unintentionally. + +(See #217) (Fixed in 09daeb8c666fb44499a0646d655a8ae36456575e) + +In version 2.8 setting the `Accept-Encoding` header would set the CURLOPT_ENCODING option, which permitted cURL to +properly handle gzip/deflate compressed responses from the server. In versions affected by this bug this does not happen. +See issue #217 for a workaround, or use a version containing the fix. diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/build.xml b/plugins/updraftplus/vendor/guzzle/guzzle/build.xml new file mode 100644 index 0000000..2aa62ba --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/build.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/composer.json b/plugins/updraftplus/vendor/guzzle/guzzle/composer.json new file mode 100644 index 0000000..59424b3 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/composer.json @@ -0,0 +1,82 @@ +{ + "name": "guzzle/guzzle", + "type": "library", + "description": "PHP HTTP client. This library is deprecated in favor of https://packagist.org/packages/guzzlehttp/guzzle", + "keywords": ["framework", "http", "rest", "web service", "curl", "client", "HTTP client"], + "homepage": "http://guzzlephp.org/", + "license": "MIT", + + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Guzzle Community", + "homepage": "https://github.com/guzzle/guzzle/contributors" + } + ], + + "replace": { + "guzzle/batch": "self.version", + "guzzle/cache": "self.version", + "guzzle/common": "self.version", + "guzzle/http": "self.version", + "guzzle/inflection": "self.version", + "guzzle/iterator": "self.version", + "guzzle/log": "self.version", + "guzzle/parser": "self.version", + "guzzle/plugin": "self.version", + "guzzle/plugin-async": "self.version", + "guzzle/plugin-backoff": "self.version", + "guzzle/plugin-cache": "self.version", + "guzzle/plugin-cookie": "self.version", + "guzzle/plugin-curlauth": "self.version", + "guzzle/plugin-error-response": "self.version", + "guzzle/plugin-history": "self.version", + "guzzle/plugin-log": "self.version", + "guzzle/plugin-md5": "self.version", + "guzzle/plugin-mock": "self.version", + "guzzle/plugin-oauth": "self.version", + "guzzle/service": "self.version", + "guzzle/stream": "self.version" + }, + + "require": { + "php": ">=5.3.3", + "ext-curl": "*", + "symfony/event-dispatcher": "~2.1" + }, + + "autoload": { + "psr-0": { + "Guzzle": "src/", + "Guzzle\\Tests": "tests/" + } + }, + + "suggest": { + "guzzlehttp/guzzle": "Guzzle 5 has moved to a new package name. The package you have installed, Guzzle 3, is deprecated." + }, + + "scripts": { + "test": "phpunit" + }, + + "require-dev": { + "doctrine/cache": "~1.3", + "symfony/class-loader": "~2.1", + "monolog/monolog": "~1.0", + "psr/log": "~1.0", + "zendframework/zend-cache": "2.*,<2.3", + "zendframework/zend-log": "2.*,<2.3", + "phpunit/phpunit": "3.7.*" + }, + + "extra": { + "branch-alias": { + "dev-master": "3.9-dev" + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/phar-stub.php b/plugins/updraftplus/vendor/guzzle/guzzle/phar-stub.php new file mode 100644 index 0000000..cc2b53f --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/phar-stub.php @@ -0,0 +1,16 @@ +registerNamespaces(array( + 'Guzzle' => 'phar://guzzle.phar/src', + 'Symfony\\Component\\EventDispatcher' => 'phar://guzzle.phar/vendor/symfony/event-dispatcher', + 'Doctrine' => 'phar://guzzle.phar/vendor/doctrine/common/lib', + 'Monolog' => 'phar://guzzle.phar/vendor/monolog/monolog/src' +)); +$classLoader->register(); + +__HALT_COMPILER(); diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/phpunit.xml.dist b/plugins/updraftplus/vendor/guzzle/guzzle/phpunit.xml.dist new file mode 100644 index 0000000..208fdc0 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/phpunit.xml.dist @@ -0,0 +1,48 @@ + + + + + + ./tests/Guzzle/Tests + + + + + + + + + + ./src/Guzzle + + ./src/Guzzle + ./src/Guzzle/Common/Exception/GuzzleException.php + ./src/Guzzle/Http/Exception/HttpException.php + ./src/Guzzle/Http/Exception/ServerErrorResponseException.php + ./src/Guzzle/Http/Exception/ClientErrorResponseException.php + ./src/Guzzle/Http/Exception/TooManyRedirectsException.php + ./src/Guzzle/Http/Exception/CouldNotRewindStreamException.php + ./src/Guzzle/Common/Exception/BadMethodCallException.php + ./src/Guzzle/Common/Exception/InvalidArgumentException.php + ./src/Guzzle/Common/Exception/RuntimeException.php + ./src/Guzzle/Common/Exception/UnexpectedValueException.php + ./src/Guzzle/Service/Exception/ClientNotFoundException.php + ./src/Guzzle/Service/Exception/CommandException.php + ./src/Guzzle/Service/Exception/DescriptionBuilderException.php + ./src/Guzzle/Service/Exception/ServiceBuilderException.php + ./src/Guzzle/Service/Exception/ServiceNotFoundException.php + ./src/Guzzle/Service/Exception/ValidationException.php + ./src/Guzzle/Service/Exception/JsonException.php + + + + + diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/AbstractBatchDecorator.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/AbstractBatchDecorator.php new file mode 100644 index 0000000..0625d71 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/AbstractBatchDecorator.php @@ -0,0 +1,66 @@ +decoratedBatch = $decoratedBatch; + } + + /** + * Allow decorators to implement custom methods + * + * @param string $method Missing method name + * @param array $args Method arguments + * + * @return mixed + * @codeCoverageIgnore + */ + public function __call($method, array $args) + { + return call_user_func_array(array($this->decoratedBatch, $method), $args); + } + + public function add($item) + { + $this->decoratedBatch->add($item); + + return $this; + } + + public function flush() + { + return $this->decoratedBatch->flush(); + } + + public function isEmpty() + { + return $this->decoratedBatch->isEmpty(); + } + + /** + * Trace the decorators associated with the batch + * + * @return array + */ + public function getDecorators() + { + $found = array($this); + if (method_exists($this->decoratedBatch, 'getDecorators')) { + $found = array_merge($found, $this->decoratedBatch->getDecorators()); + } + + return $found; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/Batch.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/Batch.php new file mode 100644 index 0000000..4d41c54 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/Batch.php @@ -0,0 +1,92 @@ +transferStrategy = $transferStrategy; + $this->divisionStrategy = $divisionStrategy; + $this->queue = new \SplQueue(); + $this->queue->setIteratorMode(\SplQueue::IT_MODE_DELETE); + $this->dividedBatches = array(); + } + + public function add($item) + { + $this->queue->enqueue($item); + + return $this; + } + + public function flush() + { + $this->createBatches(); + + $items = array(); + foreach ($this->dividedBatches as $batchIndex => $dividedBatch) { + while ($dividedBatch->valid()) { + $batch = $dividedBatch->current(); + $dividedBatch->next(); + try { + $this->transferStrategy->transfer($batch); + $items = array_merge($items, $batch); + } catch (\Exception $e) { + throw new BatchTransferException($batch, $items, $e, $this->transferStrategy, $this->divisionStrategy); + } + } + // Keep the divided batch down to a minimum in case of a later exception + unset($this->dividedBatches[$batchIndex]); + } + + return $items; + } + + public function isEmpty() + { + return count($this->queue) == 0 && count($this->dividedBatches) == 0; + } + + /** + * Create batches for any queued items + */ + protected function createBatches() + { + if (count($this->queue)) { + if ($batches = $this->divisionStrategy->createBatches($this->queue)) { + // Convert arrays into iterators + if (is_array($batches)) { + $batches = new \ArrayIterator($batches); + } + $this->dividedBatches[] = $batches; + } + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/BatchBuilder.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/BatchBuilder.php new file mode 100644 index 0000000..ea99b4d --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/BatchBuilder.php @@ -0,0 +1,199 @@ + 'Guzzle\Batch\BatchRequestTransfer', + 'command' => 'Guzzle\Batch\BatchCommandTransfer' + ); + + /** + * Create a new instance of the BatchBuilder + * + * @return BatchBuilder + */ + public static function factory() + { + return new self(); + } + + /** + * Automatically flush the batch when the size of the queue reaches a certain threshold. Adds {@see FlushingBatch}. + * + * @param $threshold Number of items to allow in the queue before a flush + * + * @return BatchBuilder + */ + public function autoFlushAt($threshold) + { + $this->autoFlush = $threshold; + + return $this; + } + + /** + * Maintain a history of all items that have been transferred using the batch. Adds {@see HistoryBatch}. + * + * @return BatchBuilder + */ + public function keepHistory() + { + $this->history = true; + + return $this; + } + + /** + * Buffer exceptions thrown during transfer so that you can transfer as much as possible, and after a transfer + * completes, inspect each exception that was thrown. Enables the {@see ExceptionBufferingBatch} decorator. + * + * @return BatchBuilder + */ + public function bufferExceptions() + { + $this->exceptionBuffering = true; + + return $this; + } + + /** + * Notify a callable each time a batch flush completes. Enables the {@see NotifyingBatch} decorator. + * + * @param mixed $callable Callable function to notify + * + * @return BatchBuilder + * @throws InvalidArgumentException if the argument is not callable + */ + public function notify($callable) + { + $this->afterFlush = $callable; + + return $this; + } + + /** + * Configures the batch to transfer batches of requests. Associates a {@see \Guzzle\Http\BatchRequestTransfer} + * object as both the transfer and divisor strategy. + * + * @param int $batchSize Batch size for each batch of requests + * + * @return BatchBuilder + */ + public function transferRequests($batchSize = 50) + { + $className = self::$mapping['request']; + $this->transferStrategy = new $className($batchSize); + $this->divisorStrategy = $this->transferStrategy; + + return $this; + } + + /** + * Configures the batch to transfer batches commands. Associates as + * {@see \Guzzle\Service\Command\BatchCommandTransfer} as both the transfer and divisor strategy. + * + * @param int $batchSize Batch size for each batch of commands + * + * @return BatchBuilder + */ + public function transferCommands($batchSize = 50) + { + $className = self::$mapping['command']; + $this->transferStrategy = new $className($batchSize); + $this->divisorStrategy = $this->transferStrategy; + + return $this; + } + + /** + * Specify the strategy used to divide the queue into an array of batches + * + * @param BatchDivisorInterface $divisorStrategy Strategy used to divide a batch queue into batches + * + * @return BatchBuilder + */ + public function createBatchesWith(BatchDivisorInterface $divisorStrategy) + { + $this->divisorStrategy = $divisorStrategy; + + return $this; + } + + /** + * Specify the strategy used to transport the items when flush is called + * + * @param BatchTransferInterface $transferStrategy How items are transferred + * + * @return BatchBuilder + */ + public function transferWith(BatchTransferInterface $transferStrategy) + { + $this->transferStrategy = $transferStrategy; + + return $this; + } + + /** + * Create and return the instantiated batch + * + * @return BatchInterface + * @throws RuntimeException if no transfer strategy has been specified + */ + public function build() + { + if (!$this->transferStrategy) { + throw new RuntimeException('No transfer strategy has been specified'); + } + + if (!$this->divisorStrategy) { + throw new RuntimeException('No divisor strategy has been specified'); + } + + $batch = new Batch($this->transferStrategy, $this->divisorStrategy); + + if ($this->exceptionBuffering) { + $batch = new ExceptionBufferingBatch($batch); + } + + if ($this->afterFlush) { + $batch = new NotifyingBatch($batch, $this->afterFlush); + } + + if ($this->autoFlush) { + $batch = new FlushingBatch($batch, $this->autoFlush); + } + + if ($this->history) { + $batch = new HistoryBatch($batch); + } + + return $batch; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/BatchClosureDivisor.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/BatchClosureDivisor.php new file mode 100644 index 0000000..e0a2d95 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/BatchClosureDivisor.php @@ -0,0 +1,39 @@ +callable = $callable; + $this->context = $context; + } + + public function createBatches(\SplQueue $queue) + { + return call_user_func($this->callable, $queue, $this->context); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/BatchClosureTransfer.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/BatchClosureTransfer.php new file mode 100644 index 0000000..9cbf1ab --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/BatchClosureTransfer.php @@ -0,0 +1,40 @@ +callable = $callable; + $this->context = $context; + } + + public function transfer(array $batch) + { + return empty($batch) ? null : call_user_func($this->callable, $batch, $this->context); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/BatchCommandTransfer.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/BatchCommandTransfer.php new file mode 100644 index 0000000..d55ac7d --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/BatchCommandTransfer.php @@ -0,0 +1,75 @@ +batchSize = $batchSize; + } + + /** + * Creates batches by grouping commands by their associated client + * {@inheritdoc} + */ + public function createBatches(\SplQueue $queue) + { + $groups = new \SplObjectStorage(); + foreach ($queue as $item) { + if (!$item instanceof CommandInterface) { + throw new InvalidArgumentException('All items must implement Guzzle\Service\Command\CommandInterface'); + } + $client = $item->getClient(); + if (!$groups->contains($client)) { + $groups->attach($client, new \ArrayObject(array($item))); + } else { + $groups[$client]->append($item); + } + } + + $batches = array(); + foreach ($groups as $batch) { + $batches = array_merge($batches, array_chunk($groups[$batch]->getArrayCopy(), $this->batchSize)); + } + + return $batches; + } + + public function transfer(array $batch) + { + if (empty($batch)) { + return; + } + + // Get the client of the first found command + $client = reset($batch)->getClient(); + + // Keep a list of all commands with invalid clients + $invalid = array_filter($batch, function ($command) use ($client) { + return $command->getClient() !== $client; + }); + + if (!empty($invalid)) { + throw new InconsistentClientTransferException($invalid); + } + + $client->execute($batch); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/BatchDivisorInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/BatchDivisorInterface.php new file mode 100644 index 0000000..0214f05 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/BatchDivisorInterface.php @@ -0,0 +1,18 @@ +batchSize = $batchSize; + } + + /** + * Creates batches of requests by grouping requests by their associated curl multi object. + * {@inheritdoc} + */ + public function createBatches(\SplQueue $queue) + { + // Create batches by client objects + $groups = new \SplObjectStorage(); + foreach ($queue as $item) { + if (!$item instanceof RequestInterface) { + throw new InvalidArgumentException('All items must implement Guzzle\Http\Message\RequestInterface'); + } + $client = $item->getClient(); + if (!$groups->contains($client)) { + $groups->attach($client, array($item)); + } else { + $current = $groups[$client]; + $current[] = $item; + $groups[$client] = $current; + } + } + + $batches = array(); + foreach ($groups as $batch) { + $batches = array_merge($batches, array_chunk($groups[$batch], $this->batchSize)); + } + + return $batches; + } + + public function transfer(array $batch) + { + if ($batch) { + reset($batch)->getClient()->send($batch); + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/BatchSizeDivisor.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/BatchSizeDivisor.php new file mode 100644 index 0000000..67f90a5 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/BatchSizeDivisor.php @@ -0,0 +1,47 @@ +size = $size; + } + + /** + * Set the size of each batch + * + * @param int $size Size of each batch + * + * @return BatchSizeDivisor + */ + public function setSize($size) + { + $this->size = $size; + + return $this; + } + + /** + * Get the size of each batch + * + * @return int + */ + public function getSize() + { + return $this->size; + } + + public function createBatches(\SplQueue $queue) + { + return array_chunk(iterator_to_array($queue, false), $this->size); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/BatchTransferInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/BatchTransferInterface.php new file mode 100644 index 0000000..2e0b60d --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/BatchTransferInterface.php @@ -0,0 +1,16 @@ +batch = $batch; + $this->transferredItems = $transferredItems; + $this->transferStrategy = $transferStrategy; + $this->divisorStrategy = $divisorStrategy; + parent::__construct( + 'Exception encountered while transferring batch: ' . $exception->getMessage(), + $exception->getCode(), + $exception + ); + } + + /** + * Get the batch that we being sent when the exception occurred + * + * @return array + */ + public function getBatch() + { + return $this->batch; + } + + /** + * Get the items transferred at the point in which the exception was encountered + * + * @return array + */ + public function getTransferredItems() + { + return $this->transferredItems; + } + + /** + * Get the transfer strategy + * + * @return TransferStrategy + */ + public function getTransferStrategy() + { + return $this->transferStrategy; + } + + /** + * Get the divisor strategy + * + * @return DivisorStrategy + */ + public function getDivisorStrategy() + { + return $this->divisorStrategy; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/ExceptionBufferingBatch.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/ExceptionBufferingBatch.php new file mode 100644 index 0000000..d7a8928 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/ExceptionBufferingBatch.php @@ -0,0 +1,50 @@ +decoratedBatch->isEmpty()) { + try { + $transferredItems = $this->decoratedBatch->flush(); + } catch (BatchTransferException $e) { + $this->exceptions[] = $e; + $transferredItems = $e->getTransferredItems(); + } + $items = array_merge($items, $transferredItems); + } + + return $items; + } + + /** + * Get the buffered exceptions + * + * @return array Array of BatchTransferException objects + */ + public function getExceptions() + { + return $this->exceptions; + } + + /** + * Clear the buffered exceptions + */ + public function clearExceptions() + { + $this->exceptions = array(); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/FlushingBatch.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/FlushingBatch.php new file mode 100644 index 0000000..367b684 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/FlushingBatch.php @@ -0,0 +1,60 @@ +threshold = $threshold; + parent::__construct($decoratedBatch); + } + + /** + * Set the auto-flush threshold + * + * @param int $threshold The auto-flush threshold + * + * @return FlushingBatch + */ + public function setThreshold($threshold) + { + $this->threshold = $threshold; + + return $this; + } + + /** + * Get the auto-flush threshold + * + * @return int + */ + public function getThreshold() + { + return $this->threshold; + } + + public function add($item) + { + $this->decoratedBatch->add($item); + if (++$this->currentTotal >= $this->threshold) { + $this->currentTotal = 0; + $this->decoratedBatch->flush(); + } + + return $this; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/HistoryBatch.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/HistoryBatch.php new file mode 100644 index 0000000..e345fdc --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/HistoryBatch.php @@ -0,0 +1,39 @@ +history[] = $item; + $this->decoratedBatch->add($item); + + return $this; + } + + /** + * Get the batch history + * + * @return array + */ + public function getHistory() + { + return $this->history; + } + + /** + * Clear the batch history + */ + public function clearHistory() + { + $this->history = array(); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/NotifyingBatch.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/NotifyingBatch.php new file mode 100644 index 0000000..96d04da --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/NotifyingBatch.php @@ -0,0 +1,38 @@ +callable = $callable; + parent::__construct($decoratedBatch); + } + + public function flush() + { + $items = $this->decoratedBatch->flush(); + call_user_func($this->callable, $items); + + return $items; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/composer.json b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/composer.json new file mode 100644 index 0000000..12404d3 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/composer.json @@ -0,0 +1,31 @@ +{ + "name": "guzzle/batch", + "description": "Guzzle batch component for batching requests, commands, or custom transfers", + "homepage": "http://guzzlephp.org/", + "keywords": ["batch", "HTTP", "REST", "guzzle"], + "license": "MIT", + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "require": { + "php": ">=5.3.2", + "guzzle/common": "self.version" + }, + "autoload": { + "psr-0": { "Guzzle\\Batch": "" } + }, + "suggest": { + "guzzle/http": "self.version", + "guzzle/service": "self.version" + }, + "target-dir": "Guzzle/Batch", + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Cache/AbstractCacheAdapter.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Cache/AbstractCacheAdapter.php new file mode 100644 index 0000000..a5c5271 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Cache/AbstractCacheAdapter.php @@ -0,0 +1,21 @@ +cache; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Cache/CacheAdapterFactory.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Cache/CacheAdapterFactory.php new file mode 100644 index 0000000..94e6234 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Cache/CacheAdapterFactory.php @@ -0,0 +1,117 @@ +newInstanceArgs($args); + } + } catch (\Exception $e) { + throw new RuntimeException($e->getMessage(), $e->getCode(), $e); + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Cache/CacheAdapterInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Cache/CacheAdapterInterface.php new file mode 100644 index 0000000..970c9e2 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Cache/CacheAdapterInterface.php @@ -0,0 +1,55 @@ +callables = $callables; + } + + public function contains($id, array $options = null) + { + return call_user_func($this->callables['contains'], $id, $options); + } + + public function delete($id, array $options = null) + { + return call_user_func($this->callables['delete'], $id, $options); + } + + public function fetch($id, array $options = null) + { + return call_user_func($this->callables['fetch'], $id, $options); + } + + public function save($id, $data, $lifeTime = false, array $options = null) + { + return call_user_func($this->callables['save'], $id, $data, $lifeTime, $options); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Cache/DoctrineCacheAdapter.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Cache/DoctrineCacheAdapter.php new file mode 100644 index 0000000..e1aaf9f --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Cache/DoctrineCacheAdapter.php @@ -0,0 +1,41 @@ +cache = $cache; + } + + public function contains($id, array $options = null) + { + return $this->cache->contains($id); + } + + public function delete($id, array $options = null) + { + return $this->cache->delete($id); + } + + public function fetch($id, array $options = null) + { + return $this->cache->fetch($id); + } + + public function save($id, $data, $lifeTime = false, array $options = null) + { + return $this->cache->save($id, $data, $lifeTime !== false ? $lifeTime : 0); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Cache/NullCacheAdapter.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Cache/NullCacheAdapter.php new file mode 100644 index 0000000..68bd4af --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Cache/NullCacheAdapter.php @@ -0,0 +1,31 @@ +cache = $cache; + } + + public function contains($id, array $options = null) + { + return $this->cache->test($id); + } + + public function delete($id, array $options = null) + { + return $this->cache->remove($id); + } + + public function fetch($id, array $options = null) + { + return $this->cache->load($id); + } + + public function save($id, $data, $lifeTime = false, array $options = null) + { + return $this->cache->save($data, $id, array(), $lifeTime); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Cache/Zf2CacheAdapter.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Cache/Zf2CacheAdapter.php new file mode 100644 index 0000000..1fc18a5 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Cache/Zf2CacheAdapter.php @@ -0,0 +1,41 @@ +cache = $cache; + } + + public function contains($id, array $options = null) + { + return $this->cache->hasItem($id); + } + + public function delete($id, array $options = null) + { + return $this->cache->removeItem($id); + } + + public function fetch($id, array $options = null) + { + return $this->cache->getItem($id); + } + + public function save($id, $data, $lifeTime = false, array $options = null) + { + return $this->cache->setItem($id, $data); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Cache/composer.json b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Cache/composer.json new file mode 100644 index 0000000..a5d999b --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Cache/composer.json @@ -0,0 +1,27 @@ +{ + "name": "guzzle/cache", + "description": "Guzzle cache adapter component", + "homepage": "http://guzzlephp.org/", + "keywords": ["cache", "adapter", "zf", "doctrine", "guzzle"], + "license": "MIT", + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "require": { + "php": ">=5.3.2", + "guzzle/common": "self.version" + }, + "autoload": { + "psr-0": { "Guzzle\\Cache": "" } + }, + "target-dir": "Guzzle/Cache", + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Common/AbstractHasDispatcher.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Common/AbstractHasDispatcher.php new file mode 100644 index 0000000..d1e842b --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Common/AbstractHasDispatcher.php @@ -0,0 +1,49 @@ +eventDispatcher = $eventDispatcher; + + return $this; + } + + public function getEventDispatcher() + { + if (!$this->eventDispatcher) { + $this->eventDispatcher = new EventDispatcher(); + } + + return $this->eventDispatcher; + } + + public function dispatch($eventName, array $context = array()) + { + return $this->getEventDispatcher()->dispatch($eventName, new Event($context)); + } + + public function addSubscriber(EventSubscriberInterface $subscriber) + { + $this->getEventDispatcher()->addSubscriber($subscriber); + + return $this; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Common/Collection.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Common/Collection.php new file mode 100644 index 0000000..5cb1535 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Common/Collection.php @@ -0,0 +1,403 @@ +data = $data; + } + + /** + * Create a new collection from an array, validate the keys, and add default values where missing + * + * @param array $config Configuration values to apply. + * @param array $defaults Default parameters + * @param array $required Required parameter names + * + * @return self + * @throws InvalidArgumentException if a parameter is missing + */ + public static function fromConfig(array $config = array(), array $defaults = array(), array $required = array()) + { + $data = $config + $defaults; + + if ($missing = array_diff($required, array_keys($data))) { + throw new InvalidArgumentException('Config is missing the following keys: ' . implode(', ', $missing)); + } + + return new self($data); + } + + public function count() + { + return count($this->data); + } + + public function getIterator() + { + return new \ArrayIterator($this->data); + } + + public function toArray() + { + return $this->data; + } + + /** + * Removes all key value pairs + * + * @return Collection + */ + public function clear() + { + $this->data = array(); + + return $this; + } + + /** + * Get all or a subset of matching key value pairs + * + * @param array $keys Pass an array of keys to retrieve only a subset of key value pairs + * + * @return array Returns an array of all matching key value pairs + */ + public function getAll(array $keys = null) + { + return $keys ? array_intersect_key($this->data, array_flip($keys)) : $this->data; + } + + /** + * Get a specific key value. + * + * @param string $key Key to retrieve. + * + * @return mixed|null Value of the key or NULL + */ + public function get($key) + { + return isset($this->data[$key]) ? $this->data[$key] : null; + } + + /** + * Set a key value pair + * + * @param string $key Key to set + * @param mixed $value Value to set + * + * @return Collection Returns a reference to the object + */ + public function set($key, $value) + { + $this->data[$key] = $value; + + return $this; + } + + /** + * Add a value to a key. If a key of the same name has already been added, the key value will be converted into an + * array and the new value will be pushed to the end of the array. + * + * @param string $key Key to add + * @param mixed $value Value to add to the key + * + * @return Collection Returns a reference to the object. + */ + public function add($key, $value) + { + if (!array_key_exists($key, $this->data)) { + $this->data[$key] = $value; + } elseif (is_array($this->data[$key])) { + $this->data[$key][] = $value; + } else { + $this->data[$key] = array($this->data[$key], $value); + } + + return $this; + } + + /** + * Remove a specific key value pair + * + * @param string $key A key to remove + * + * @return Collection + */ + public function remove($key) + { + unset($this->data[$key]); + + return $this; + } + + /** + * Get all keys in the collection + * + * @return array + */ + public function getKeys() + { + return array_keys($this->data); + } + + /** + * Returns whether or not the specified key is present. + * + * @param string $key The key for which to check the existence. + * + * @return bool + */ + public function hasKey($key) + { + return array_key_exists($key, $this->data); + } + + /** + * Case insensitive search the keys in the collection + * + * @param string $key Key to search for + * + * @return bool|string Returns false if not found, otherwise returns the key + */ + public function keySearch($key) + { + foreach (array_keys($this->data) as $k) { + if (!strcasecmp($k, $key)) { + return $k; + } + } + + return false; + } + + /** + * Checks if any keys contains a certain value + * + * @param string $value Value to search for + * + * @return mixed Returns the key if the value was found FALSE if the value was not found. + */ + public function hasValue($value) + { + return array_search($value, $this->data); + } + + /** + * Replace the data of the object with the value of an array + * + * @param array $data Associative array of data + * + * @return Collection Returns a reference to the object + */ + public function replace(array $data) + { + $this->data = $data; + + return $this; + } + + /** + * Add and merge in a Collection or array of key value pair data. + * + * @param Collection|array $data Associative array of key value pair data + * + * @return Collection Returns a reference to the object. + */ + public function merge($data) + { + foreach ($data as $key => $value) { + $this->add($key, $value); + } + + return $this; + } + + /** + * Over write key value pairs in this collection with all of the data from an array or collection. + * + * @param array|\Traversable $data Values to override over this config + * + * @return self + */ + public function overwriteWith($data) + { + if (is_array($data)) { + $this->data = $data + $this->data; + } elseif ($data instanceof Collection) { + $this->data = $data->toArray() + $this->data; + } else { + foreach ($data as $key => $value) { + $this->data[$key] = $value; + } + } + + return $this; + } + + /** + * Returns a Collection containing all the elements of the collection after applying the callback function to each + * one. The Closure should accept three parameters: (string) $key, (string) $value, (array) $context and return a + * modified value + * + * @param \Closure $closure Closure to apply + * @param array $context Context to pass to the closure + * @param bool $static Set to TRUE to use the same class as the return rather than returning a Collection + * + * @return Collection + */ + public function map(\Closure $closure, array $context = array(), $static = true) + { + $collection = $static ? new static() : new self(); + foreach ($this as $key => $value) { + $collection->add($key, $closure($key, $value, $context)); + } + + return $collection; + } + + /** + * Iterates over each key value pair in the collection passing them to the Closure. If the Closure function returns + * true, the current value from input is returned into the result Collection. The Closure must accept three + * parameters: (string) $key, (string) $value and return Boolean TRUE or FALSE for each value. + * + * @param \Closure $closure Closure evaluation function + * @param bool $static Set to TRUE to use the same class as the return rather than returning a Collection + * + * @return Collection + */ + public function filter(\Closure $closure, $static = true) + { + $collection = ($static) ? new static() : new self(); + foreach ($this->data as $key => $value) { + if ($closure($key, $value)) { + $collection->add($key, $value); + } + } + + return $collection; + } + + public function offsetExists($offset) + { + return isset($this->data[$offset]); + } + + public function offsetGet($offset) + { + return isset($this->data[$offset]) ? $this->data[$offset] : null; + } + + public function offsetSet($offset, $value) + { + $this->data[$offset] = $value; + } + + public function offsetUnset($offset) + { + unset($this->data[$offset]); + } + + /** + * Set a value into a nested array key. Keys will be created as needed to set the value. + * + * @param string $path Path to set + * @param mixed $value Value to set at the key + * + * @return self + * @throws RuntimeException when trying to setPath using a nested path that travels through a scalar value + */ + public function setPath($path, $value) + { + $current =& $this->data; + $queue = explode('/', $path); + while (null !== ($key = array_shift($queue))) { + if (!is_array($current)) { + throw new RuntimeException("Trying to setPath {$path}, but {$key} is set and is not an array"); + } elseif (!$queue) { + $current[$key] = $value; + } elseif (isset($current[$key])) { + $current =& $current[$key]; + } else { + $current[$key] = array(); + $current =& $current[$key]; + } + } + + return $this; + } + + /** + * Gets a value from the collection using an array path (e.g. foo/baz/bar would retrieve bar from two nested arrays) + * Allows for wildcard searches which recursively combine matches up to the level at which the wildcard occurs. This + * can be useful for accepting any key of a sub-array and combining matching keys from each diverging path. + * + * @param string $path Path to traverse and retrieve a value from + * @param string $separator Character used to add depth to the search + * @param mixed $data Optional data to descend into (used when wildcards are encountered) + * + * @return mixed|null + */ + public function getPath($path, $separator = '/', $data = null) + { + if ($data === null) { + $data =& $this->data; + } + + $path = is_array($path) ? $path : explode($separator, $path); + while (null !== ($part = array_shift($path))) { + if (!is_array($data)) { + return null; + } elseif (isset($data[$part])) { + $data =& $data[$part]; + } elseif ($part != '*') { + return null; + } else { + // Perform a wildcard search by diverging and merging paths + $result = array(); + foreach ($data as $value) { + if (!$path) { + $result = array_merge_recursive($result, (array) $value); + } elseif (null !== ($test = $this->getPath($path, $separator, $value))) { + $result = array_merge_recursive($result, (array) $test); + } + } + return $result; + } + } + + return $data; + } + + /** + * Inject configuration settings into an input string + * + * @param string $input Input to inject + * + * @return string + * @deprecated + */ + public function inject($input) + { + Version::warn(__METHOD__ . ' is deprecated'); + $replace = array(); + foreach ($this->data as $key => $val) { + $replace['{' . $key . '}'] = $val; + } + + return strtr($input, $replace); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Common/Event.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Common/Event.php new file mode 100644 index 0000000..fad76a9 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Common/Event.php @@ -0,0 +1,52 @@ +context = $context; + } + + public function getIterator() + { + return new \ArrayIterator($this->context); + } + + public function offsetGet($offset) + { + return isset($this->context[$offset]) ? $this->context[$offset] : null; + } + + public function offsetSet($offset, $value) + { + $this->context[$offset] = $value; + } + + public function offsetExists($offset) + { + return isset($this->context[$offset]); + } + + public function offsetUnset($offset) + { + unset($this->context[$offset]); + } + + public function toArray() + { + return $this->context; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Common/Exception/BadMethodCallException.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Common/Exception/BadMethodCallException.php new file mode 100644 index 0000000..08d1c72 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Common/Exception/BadMethodCallException.php @@ -0,0 +1,5 @@ +shortMessage = $message; + } + + /** + * Set all of the exceptions + * + * @param array $exceptions Array of exceptions + * + * @return self + */ + public function setExceptions(array $exceptions) + { + $this->exceptions = array(); + foreach ($exceptions as $exception) { + $this->add($exception); + } + + return $this; + } + + /** + * Add exceptions to the collection + * + * @param ExceptionCollection|\Exception $e Exception to add + * + * @return ExceptionCollection; + */ + public function add($e) + { + $this->exceptions[] = $e; + if ($this->message) { + $this->message .= "\n"; + } + + $this->message .= $this->getExceptionMessage($e, 0); + + return $this; + } + + /** + * Get the total number of request exceptions + * + * @return int + */ + public function count() + { + return count($this->exceptions); + } + + /** + * Allows array-like iteration over the request exceptions + * + * @return \ArrayIterator + */ + public function getIterator() + { + return new \ArrayIterator($this->exceptions); + } + + /** + * Get the first exception in the collection + * + * @return \Exception + */ + public function getFirst() + { + return $this->exceptions ? $this->exceptions[0] : null; + } + + private function getExceptionMessage(\Exception $e, $depth = 0) + { + static $sp = ' '; + $prefix = $depth ? str_repeat($sp, $depth) : ''; + $message = "{$prefix}(" . get_class($e) . ') ' . $e->getFile() . ' line ' . $e->getLine() . "\n"; + + if ($e instanceof self) { + if ($e->shortMessage) { + $message .= "\n{$prefix}{$sp}" . str_replace("\n", "\n{$prefix}{$sp}", $e->shortMessage) . "\n"; + } + foreach ($e as $ee) { + $message .= "\n" . $this->getExceptionMessage($ee, $depth + 1); + } + } else { + $message .= "\n{$prefix}{$sp}" . str_replace("\n", "\n{$prefix}{$sp}", $e->getMessage()) . "\n"; + $message .= "\n{$prefix}{$sp}" . str_replace("\n", "\n{$prefix}{$sp}", $e->getTraceAsString()) . "\n"; + } + + return str_replace(getcwd(), '.', $message); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Common/Exception/GuzzleException.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Common/Exception/GuzzleException.php new file mode 100644 index 0000000..458e6f2 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Common/Exception/GuzzleException.php @@ -0,0 +1,8 @@ +=5.3.2", + "symfony/event-dispatcher": ">=2.1" + }, + "autoload": { + "psr-0": { "Guzzle\\Common": "" } + }, + "target-dir": "Guzzle/Common", + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/AbstractEntityBodyDecorator.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/AbstractEntityBodyDecorator.php new file mode 100644 index 0000000..5005a88 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/AbstractEntityBodyDecorator.php @@ -0,0 +1,221 @@ +body = $body; + } + + public function __toString() + { + return (string) $this->body; + } + + /** + * Allow decorators to implement custom methods + * + * @param string $method Missing method name + * @param array $args Method arguments + * + * @return mixed + */ + public function __call($method, array $args) + { + return call_user_func_array(array($this->body, $method), $args); + } + + public function close() + { + return $this->body->close(); + } + + public function setRewindFunction($callable) + { + $this->body->setRewindFunction($callable); + + return $this; + } + + public function rewind() + { + return $this->body->rewind(); + } + + public function compress($filter = 'zlib.deflate') + { + return $this->body->compress($filter); + } + + public function uncompress($filter = 'zlib.inflate') + { + return $this->body->uncompress($filter); + } + + public function getContentLength() + { + return $this->getSize(); + } + + public function getContentType() + { + return $this->body->getContentType(); + } + + public function getContentMd5($rawOutput = false, $base64Encode = false) + { + $hash = Stream::getHash($this, 'md5', $rawOutput); + + return $hash && $base64Encode ? base64_encode($hash) : $hash; + } + + public function getContentEncoding() + { + return $this->body->getContentEncoding(); + } + + public function getMetaData($key = null) + { + return $this->body->getMetaData($key); + } + + public function getStream() + { + return $this->body->getStream(); + } + + public function setStream($stream, $size = 0) + { + $this->body->setStream($stream, $size); + + return $this; + } + + public function detachStream() + { + $this->body->detachStream(); + + return $this; + } + + public function getWrapper() + { + return $this->body->getWrapper(); + } + + public function getWrapperData() + { + return $this->body->getWrapperData(); + } + + public function getStreamType() + { + return $this->body->getStreamType(); + } + + public function getUri() + { + return $this->body->getUri(); + } + + public function getSize() + { + return $this->body->getSize(); + } + + public function isReadable() + { + return $this->body->isReadable(); + } + + public function isRepeatable() + { + return $this->isSeekable() && $this->isReadable(); + } + + public function isWritable() + { + return $this->body->isWritable(); + } + + public function isConsumed() + { + return $this->body->isConsumed(); + } + + /** + * Alias of isConsumed() + * {@inheritdoc} + */ + public function feof() + { + return $this->isConsumed(); + } + + public function isLocal() + { + return $this->body->isLocal(); + } + + public function isSeekable() + { + return $this->body->isSeekable(); + } + + public function setSize($size) + { + $this->body->setSize($size); + + return $this; + } + + public function seek($offset, $whence = SEEK_SET) + { + return $this->body->seek($offset, $whence); + } + + public function read($length) + { + return $this->body->read($length); + } + + public function write($string) + { + return $this->body->write($string); + } + + public function readLine($maxLength = null) + { + return $this->body->readLine($maxLength); + } + + public function ftell() + { + return $this->body->ftell(); + } + + public function getCustomData($key) + { + return $this->body->getCustomData($key); + } + + public function setCustomData($key, $value) + { + $this->body->setCustomData($key, $value); + + return $this; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/CachingEntityBody.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/CachingEntityBody.php new file mode 100644 index 0000000..c65c136 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/CachingEntityBody.php @@ -0,0 +1,229 @@ +remoteStream = $body; + $this->body = new EntityBody(fopen('php://temp', 'r+')); + } + + /** + * Will give the contents of the buffer followed by the exhausted remote stream. + * + * Warning: Loads the entire stream into memory + * + * @return string + */ + public function __toString() + { + $pos = $this->ftell(); + $this->rewind(); + + $str = ''; + while (!$this->isConsumed()) { + $str .= $this->read(16384); + } + + $this->seek($pos); + + return $str; + } + + public function getSize() + { + return max($this->body->getSize(), $this->remoteStream->getSize()); + } + + /** + * {@inheritdoc} + * @throws RuntimeException When seeking with SEEK_END or when seeking past the total size of the buffer stream + */ + public function seek($offset, $whence = SEEK_SET) + { + if ($whence == SEEK_SET) { + $byte = $offset; + } elseif ($whence == SEEK_CUR) { + $byte = $offset + $this->ftell(); + } else { + throw new RuntimeException(__CLASS__ . ' supports only SEEK_SET and SEEK_CUR seek operations'); + } + + // You cannot skip ahead past where you've read from the remote stream + if ($byte > $this->body->getSize()) { + throw new RuntimeException( + "Cannot seek to byte {$byte} when the buffered stream only contains {$this->body->getSize()} bytes" + ); + } + + return $this->body->seek($byte); + } + + public function rewind() + { + return $this->seek(0); + } + + /** + * Does not support custom rewind functions + * + * @throws RuntimeException + */ + public function setRewindFunction($callable) + { + throw new RuntimeException(__CLASS__ . ' does not support custom stream rewind functions'); + } + + public function read($length) + { + // Perform a regular read on any previously read data from the buffer + $data = $this->body->read($length); + $remaining = $length - strlen($data); + + // More data was requested so read from the remote stream + if ($remaining) { + // If data was written to the buffer in a position that would have been filled from the remote stream, + // then we must skip bytes on the remote stream to emulate overwriting bytes from that position. This + // mimics the behavior of other PHP stream wrappers. + $remoteData = $this->remoteStream->read($remaining + $this->skipReadBytes); + + if ($this->skipReadBytes) { + $len = strlen($remoteData); + $remoteData = substr($remoteData, $this->skipReadBytes); + $this->skipReadBytes = max(0, $this->skipReadBytes - $len); + } + + $data .= $remoteData; + $this->body->write($remoteData); + } + + return $data; + } + + public function write($string) + { + // When appending to the end of the currently read stream, you'll want to skip bytes from being read from + // the remote stream to emulate other stream wrappers. Basically replacing bytes of data of a fixed length. + $overflow = (strlen($string) + $this->ftell()) - $this->remoteStream->ftell(); + if ($overflow > 0) { + $this->skipReadBytes += $overflow; + } + + return $this->body->write($string); + } + + /** + * {@inheritdoc} + * @link http://php.net/manual/en/function.fgets.php + */ + public function readLine($maxLength = null) + { + $buffer = ''; + $size = 0; + while (!$this->isConsumed()) { + $byte = $this->read(1); + $buffer .= $byte; + // Break when a new line is found or the max length - 1 is reached + if ($byte == PHP_EOL || ++$size == $maxLength - 1) { + break; + } + } + + return $buffer; + } + + public function isConsumed() + { + return $this->body->isConsumed() && $this->remoteStream->isConsumed(); + } + + /** + * Close both the remote stream and buffer stream + */ + public function close() + { + return $this->remoteStream->close() && $this->body->close(); + } + + public function setStream($stream, $size = 0) + { + $this->remoteStream->setStream($stream, $size); + } + + public function getContentType() + { + return $this->remoteStream->getContentType(); + } + + public function getContentEncoding() + { + return $this->remoteStream->getContentEncoding(); + } + + public function getMetaData($key = null) + { + return $this->remoteStream->getMetaData($key); + } + + public function getStream() + { + return $this->remoteStream->getStream(); + } + + public function getWrapper() + { + return $this->remoteStream->getWrapper(); + } + + public function getWrapperData() + { + return $this->remoteStream->getWrapperData(); + } + + public function getStreamType() + { + return $this->remoteStream->getStreamType(); + } + + public function getUri() + { + return $this->remoteStream->getUri(); + } + + /** + * Always retrieve custom data from the remote stream + * {@inheritdoc} + */ + public function getCustomData($key) + { + return $this->remoteStream->getCustomData($key); + } + + /** + * Always set custom data on the remote stream + * {@inheritdoc} + */ + public function setCustomData($key, $value) + { + $this->remoteStream->setCustomData($key, $value); + + return $this; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Client.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Client.php new file mode 100644 index 0000000..3d7298d --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Client.php @@ -0,0 +1,524 @@ +setConfig($config ?: new Collection()); + $this->initSsl(); + $this->setBaseUrl($baseUrl); + $this->defaultHeaders = new Collection(); + $this->setRequestFactory(RequestFactory::getInstance()); + $this->userAgent = $this->getDefaultUserAgent(); + if (!$this->config[self::DISABLE_REDIRECTS]) { + $this->addSubscriber(new RedirectPlugin()); + } + } + + final public function setConfig($config) + { + if ($config instanceof Collection) { + $this->config = $config; + } elseif (is_array($config)) { + $this->config = new Collection($config); + } else { + throw new InvalidArgumentException('Config must be an array or Collection'); + } + + return $this; + } + + final public function getConfig($key = false) + { + return $key ? $this->config[$key] : $this->config; + } + + /** + * Set a default request option on the client that will be used as a default for each request + * + * @param string $keyOrPath request.options key (e.g. allow_redirects) or path to a nested key (e.g. headers/foo) + * @param mixed $value Value to set + * + * @return $this + */ + public function setDefaultOption($keyOrPath, $value) + { + $keyOrPath = self::REQUEST_OPTIONS . '/' . $keyOrPath; + $this->config->setPath($keyOrPath, $value); + + return $this; + } + + /** + * Retrieve a default request option from the client + * + * @param string $keyOrPath request.options key (e.g. allow_redirects) or path to a nested key (e.g. headers/foo) + * + * @return mixed|null + */ + public function getDefaultOption($keyOrPath) + { + $keyOrPath = self::REQUEST_OPTIONS . '/' . $keyOrPath; + + return $this->config->getPath($keyOrPath); + } + + final public function setSslVerification($certificateAuthority = true, $verifyPeer = true, $verifyHost = 2) + { + $opts = $this->config[self::CURL_OPTIONS] ?: array(); + + if ($certificateAuthority === true) { + // use bundled CA bundle, set secure defaults + $opts[CURLOPT_CAINFO] = __DIR__ . '/Resources/cacert.pem'; + $opts[CURLOPT_SSL_VERIFYPEER] = true; + $opts[CURLOPT_SSL_VERIFYHOST] = 2; + } elseif ($certificateAuthority === false) { + unset($opts[CURLOPT_CAINFO]); + $opts[CURLOPT_SSL_VERIFYPEER] = false; + $opts[CURLOPT_SSL_VERIFYHOST] = 0; + } elseif ($verifyPeer !== true && $verifyPeer !== false && $verifyPeer !== 1 && $verifyPeer !== 0) { + throw new InvalidArgumentException('verifyPeer must be 1, 0 or boolean'); + } elseif ($verifyHost !== 0 && $verifyHost !== 1 && $verifyHost !== 2) { + throw new InvalidArgumentException('verifyHost must be 0, 1 or 2'); + } else { + $opts[CURLOPT_SSL_VERIFYPEER] = $verifyPeer; + $opts[CURLOPT_SSL_VERIFYHOST] = $verifyHost; + if (is_file($certificateAuthority)) { + unset($opts[CURLOPT_CAPATH]); + $opts[CURLOPT_CAINFO] = $certificateAuthority; + } elseif (is_dir($certificateAuthority)) { + unset($opts[CURLOPT_CAINFO]); + $opts[CURLOPT_CAPATH] = $certificateAuthority; + } else { + throw new RuntimeException( + 'Invalid option passed to ' . self::SSL_CERT_AUTHORITY . ': ' . $certificateAuthority + ); + } + } + + $this->config->set(self::CURL_OPTIONS, $opts); + + return $this; + } + + public function createRequest($method = 'GET', $uri = null, $headers = null, $body = null, array $options = array()) + { + if (!$uri) { + $url = $this->getBaseUrl(); + } else { + if (!is_array($uri)) { + $templateVars = null; + } else { + list($uri, $templateVars) = $uri; + } + if (strpos($uri, '://')) { + // Use absolute URLs as-is + $url = $this->expandTemplate($uri, $templateVars); + } else { + $url = Url::factory($this->getBaseUrl())->combine($this->expandTemplate($uri, $templateVars)); + } + } + + // If default headers are provided, then merge them under any explicitly provided headers for the request + if (count($this->defaultHeaders)) { + if (!$headers) { + $headers = $this->defaultHeaders->toArray(); + } elseif (is_array($headers)) { + $headers += $this->defaultHeaders->toArray(); + } elseif ($headers instanceof Collection) { + $headers = $headers->toArray() + $this->defaultHeaders->toArray(); + } + } + + return $this->prepareRequest($this->requestFactory->create($method, (string) $url, $headers, $body), $options); + } + + public function getBaseUrl($expand = true) + { + return $expand ? $this->expandTemplate($this->baseUrl) : $this->baseUrl; + } + + public function setBaseUrl($url) + { + $this->baseUrl = $url; + + return $this; + } + + public function setUserAgent($userAgent, $includeDefault = false) + { + if ($includeDefault) { + $userAgent .= ' ' . $this->getDefaultUserAgent(); + } + $this->userAgent = $userAgent; + + return $this; + } + + /** + * Get the default User-Agent string to use with Guzzle + * + * @return string + */ + public function getDefaultUserAgent() + { + return 'Guzzle/' . Version::VERSION + . ' curl/' . CurlVersion::getInstance()->get('version') + . ' PHP/' . PHP_VERSION; + } + + public function get($uri = null, $headers = null, $options = array()) + { + // BC compat: $options can be a string, resource, etc to specify where the response body is downloaded + return is_array($options) + ? $this->createRequest('GET', $uri, $headers, null, $options) + : $this->createRequest('GET', $uri, $headers, $options); + } + + public function head($uri = null, $headers = null, array $options = array()) + { + return $this->createRequest('HEAD', $uri, $headers, null, $options); + } + + public function delete($uri = null, $headers = null, $body = null, array $options = array()) + { + return $this->createRequest('DELETE', $uri, $headers, $body, $options); + } + + public function put($uri = null, $headers = null, $body = null, array $options = array()) + { + return $this->createRequest('PUT', $uri, $headers, $body, $options); + } + + public function patch($uri = null, $headers = null, $body = null, array $options = array()) + { + return $this->createRequest('PATCH', $uri, $headers, $body, $options); + } + + public function post($uri = null, $headers = null, $postBody = null, array $options = array()) + { + return $this->createRequest('POST', $uri, $headers, $postBody, $options); + } + + public function options($uri = null, array $options = array()) + { + return $this->createRequest('OPTIONS', $uri, $options); + } + + public function send($requests) + { + if (!($requests instanceof RequestInterface)) { + return $this->sendMultiple($requests); + } + + try { + /** @var $requests RequestInterface */ + $this->getCurlMulti()->add($requests)->send(); + return $requests->getResponse(); + } catch (ExceptionCollection $e) { + throw $e->getFirst(); + } + } + + /** + * Set a curl multi object to be used internally by the client for transferring requests. + * + * @param CurlMultiInterface $curlMulti Multi object + * + * @return self + */ + public function setCurlMulti(CurlMultiInterface $curlMulti) + { + $this->curlMulti = $curlMulti; + + return $this; + } + + /** + * @return CurlMultiInterface|CurlMultiProxy + */ + public function getCurlMulti() + { + if (!$this->curlMulti) { + $this->curlMulti = new CurlMultiProxy( + self::MAX_HANDLES, + $this->getConfig('select_timeout') ?: self::DEFAULT_SELECT_TIMEOUT + ); + } + + return $this->curlMulti; + } + + public function setRequestFactory(RequestFactoryInterface $factory) + { + $this->requestFactory = $factory; + + return $this; + } + + /** + * Set the URI template expander to use with the client + * + * @param UriTemplateInterface $uriTemplate URI template expander + * + * @return self + */ + public function setUriTemplate(UriTemplateInterface $uriTemplate) + { + $this->uriTemplate = $uriTemplate; + + return $this; + } + + /** + * Expand a URI template while merging client config settings into the template variables + * + * @param string $template Template to expand + * @param array $variables Variables to inject + * + * @return string + */ + protected function expandTemplate($template, array $variables = null) + { + $expansionVars = $this->getConfig()->toArray(); + if ($variables) { + $expansionVars = $variables + $expansionVars; + } + + return $this->getUriTemplate()->expand($template, $expansionVars); + } + + /** + * Get the URI template expander used by the client + * + * @return UriTemplateInterface + */ + protected function getUriTemplate() + { + if (!$this->uriTemplate) { + $this->uriTemplate = ParserRegistry::getInstance()->getParser('uri_template'); + } + + return $this->uriTemplate; + } + + /** + * Send multiple requests in parallel + * + * @param array $requests Array of RequestInterface objects + * + * @return array Returns an array of Response objects + */ + protected function sendMultiple(array $requests) + { + $curlMulti = $this->getCurlMulti(); + foreach ($requests as $request) { + $curlMulti->add($request); + } + $curlMulti->send(); + + /** @var $request RequestInterface */ + $result = array(); + foreach ($requests as $request) { + $result[] = $request->getResponse(); + } + + return $result; + } + + /** + * Prepare a request to be sent from the Client by adding client specific behaviors and properties to the request. + * + * @param RequestInterface $request Request to prepare for the client + * @param array $options Options to apply to the request + * + * @return RequestInterface + */ + protected function prepareRequest(RequestInterface $request, array $options = array()) + { + $request->setClient($this)->setEventDispatcher(clone $this->getEventDispatcher()); + + if ($curl = $this->config[self::CURL_OPTIONS]) { + $request->getCurlOptions()->overwriteWith(CurlHandle::parseCurlConfig($curl)); + } + + if ($params = $this->config[self::REQUEST_PARAMS]) { + Version::warn('request.params is deprecated. Use request.options to add default request options.'); + $request->getParams()->overwriteWith($params); + } + + if ($this->userAgent && !$request->hasHeader('User-Agent')) { + $request->setHeader('User-Agent', $this->userAgent); + } + + if ($defaults = $this->config[self::REQUEST_OPTIONS]) { + $this->requestFactory->applyOptions($request, $defaults, RequestFactoryInterface::OPTIONS_AS_DEFAULTS); + } + + if ($options) { + $this->requestFactory->applyOptions($request, $options); + } + + $this->dispatch('client.create_request', array('client' => $this, 'request' => $request)); + + return $request; + } + + /** + * Initializes SSL settings + */ + protected function initSsl() + { + $authority = $this->config[self::SSL_CERT_AUTHORITY]; + + if ($authority === 'system') { + return; + } + + if ($authority === null) { + $authority = true; + } + + if ($authority === true && substr(__FILE__, 0, 7) == 'phar://') { + $authority = self::extractPharCacert(__DIR__ . '/Resources/cacert.pem'); + } + + $this->setSslVerification($authority); + } + + /** + * @deprecated + */ + public function getDefaultHeaders() + { + Version::warn(__METHOD__ . ' is deprecated. Use the request.options array to retrieve default request options'); + return $this->defaultHeaders; + } + + /** + * @deprecated + */ + public function setDefaultHeaders($headers) + { + Version::warn(__METHOD__ . ' is deprecated. Use the request.options array to specify default request options'); + if ($headers instanceof Collection) { + $this->defaultHeaders = $headers; + } elseif (is_array($headers)) { + $this->defaultHeaders = new Collection($headers); + } else { + throw new InvalidArgumentException('Headers must be an array or Collection'); + } + + return $this; + } + + /** + * @deprecated + */ + public function preparePharCacert($md5Check = true) + { + return sys_get_temp_dir() . '/guzzle-cacert.pem'; + } + + /** + * Copies the phar cacert from a phar into the temp directory. + * + * @param string $pharCacertPath Path to the phar cacert. For example: + * 'phar://aws.phar/Guzzle/Http/Resources/cacert.pem' + * + * @return string Returns the path to the extracted cacert file. + * @throws \RuntimeException Throws if the phar cacert cannot be found or + * the file cannot be copied to the temp dir. + */ + public static function extractPharCacert($pharCacertPath) + { + // Copy the cacert.pem file from the phar if it is not in the temp + // folder. + $certFile = sys_get_temp_dir() . '/guzzle-cacert.pem'; + + if (!file_exists($pharCacertPath)) { + throw new \RuntimeException("Could not find $pharCacertPath"); + } + + if (!file_exists($certFile) || + filesize($certFile) != filesize($pharCacertPath) + ) { + if (!copy($pharCacertPath, $certFile)) { + throw new \RuntimeException( + "Could not copy {$pharCacertPath} to {$certFile}: " + . var_export(error_get_last(), true) + ); + } + } + + return $certFile; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/ClientInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/ClientInterface.php new file mode 100644 index 0000000..10e4de2 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/ClientInterface.php @@ -0,0 +1,223 @@ +getCurlOptions(); + $mediator = new RequestMediator($request, $requestCurlOptions->get('emit_io')); + $tempContentLength = null; + $method = $request->getMethod(); + $bodyAsString = $requestCurlOptions->get(self::BODY_AS_STRING); + + // Prepare url + $url = (string)$request->getUrl(); + if(($pos = strpos($url, '#')) !== false ){ + // strip fragment from url + $url = substr($url, 0, $pos); + } + + // Array of default cURL options. + $curlOptions = array( + CURLOPT_URL => $url, + CURLOPT_CONNECTTIMEOUT => 150, + CURLOPT_RETURNTRANSFER => false, + CURLOPT_HEADER => false, + CURLOPT_PORT => $request->getPort(), + CURLOPT_HTTPHEADER => array(), + CURLOPT_WRITEFUNCTION => array($mediator, 'writeResponseBody'), + CURLOPT_HEADERFUNCTION => array($mediator, 'receiveResponseHeader'), + CURLOPT_HTTP_VERSION => $request->getProtocolVersion() === '1.0' + ? CURL_HTTP_VERSION_1_0 : CURL_HTTP_VERSION_1_1, + // Verifies the authenticity of the peer's certificate + CURLOPT_SSL_VERIFYPEER => 1, + // Certificate must indicate that the server is the server to which you meant to connect + CURLOPT_SSL_VERIFYHOST => 2 + ); + + if (defined('CURLOPT_PROTOCOLS')) { + // Allow only HTTP and HTTPS protocols + $curlOptions[CURLOPT_PROTOCOLS] = CURLPROTO_HTTP | CURLPROTO_HTTPS; + } + + // Add CURLOPT_ENCODING if Accept-Encoding header is provided + if ($acceptEncodingHeader = $request->getHeader('Accept-Encoding')) { + $curlOptions[CURLOPT_ENCODING] = (string) $acceptEncodingHeader; + // Let cURL set the Accept-Encoding header, prevents duplicate values + $request->removeHeader('Accept-Encoding'); + } + + // Enable curl debug information if the 'debug' param was set + if ($requestCurlOptions->get('debug')) { + $curlOptions[CURLOPT_STDERR] = fopen('php://temp', 'r+'); + // @codeCoverageIgnoreStart + if (false === $curlOptions[CURLOPT_STDERR]) { + throw new RuntimeException('Unable to create a stream for CURLOPT_STDERR'); + } + // @codeCoverageIgnoreEnd + $curlOptions[CURLOPT_VERBOSE] = true; + } + + // Specify settings according to the HTTP method + if ($method == 'GET') { + $curlOptions[CURLOPT_HTTPGET] = true; + } elseif ($method == 'HEAD') { + $curlOptions[CURLOPT_NOBODY] = true; + // HEAD requests do not use a write function + unset($curlOptions[CURLOPT_WRITEFUNCTION]); + } elseif (!($request instanceof EntityEnclosingRequest)) { + $curlOptions[CURLOPT_CUSTOMREQUEST] = $method; + } else { + + $curlOptions[CURLOPT_CUSTOMREQUEST] = $method; + + // Handle sending raw bodies in a request + if ($request->getBody()) { + // You can send the body as a string using curl's CURLOPT_POSTFIELDS + if ($bodyAsString) { + $curlOptions[CURLOPT_POSTFIELDS] = (string) $request->getBody(); + // Allow curl to add the Content-Length for us to account for the times when + // POST redirects are followed by GET requests + if ($tempContentLength = $request->getHeader('Content-Length')) { + $tempContentLength = (int) (string) $tempContentLength; + } + // Remove the curl generated Content-Type header if none was set manually + if (!$request->hasHeader('Content-Type')) { + $curlOptions[CURLOPT_HTTPHEADER][] = 'Content-Type:'; + } + } else { + $curlOptions[CURLOPT_UPLOAD] = true; + // Let cURL handle setting the Content-Length header + if ($tempContentLength = $request->getHeader('Content-Length')) { + $tempContentLength = (int) (string) $tempContentLength; + $curlOptions[CURLOPT_INFILESIZE] = $tempContentLength; + } + // Add a callback for curl to read data to send with the request only if a body was specified + $curlOptions[CURLOPT_READFUNCTION] = array($mediator, 'readRequestBody'); + // Attempt to seek to the start of the stream + $request->getBody()->seek(0); + } + + } else { + + // Special handling for POST specific fields and files + $postFields = false; + if (count($request->getPostFiles())) { + $postFields = $request->getPostFields()->useUrlEncoding(false)->urlEncode(); + foreach ($request->getPostFiles() as $key => $data) { + $prefixKeys = count($data) > 1; + foreach ($data as $index => $file) { + // Allow multiple files in the same key + $fieldKey = $prefixKeys ? "{$key}[{$index}]" : $key; + $postFields[$fieldKey] = $file->getCurlValue(); + } + } + } elseif (count($request->getPostFields())) { + $postFields = (string) $request->getPostFields()->useUrlEncoding(true); + } + + if ($postFields !== false) { + if ($method == 'POST') { + unset($curlOptions[CURLOPT_CUSTOMREQUEST]); + $curlOptions[CURLOPT_POST] = true; + } + $curlOptions[CURLOPT_POSTFIELDS] = $postFields; + $request->removeHeader('Content-Length'); + } + } + + // If the Expect header is not present, prevent curl from adding it + if (!$request->hasHeader('Expect')) { + $curlOptions[CURLOPT_HTTPHEADER][] = 'Expect:'; + } + } + + // If a Content-Length header was specified but we want to allow curl to set one for us + if (null !== $tempContentLength) { + $request->removeHeader('Content-Length'); + } + + // Set custom cURL options + foreach ($requestCurlOptions->toArray() as $key => $value) { + if (is_numeric($key)) { + $curlOptions[$key] = $value; + } + } + + // Do not set an Accept header by default + if (!isset($curlOptions[CURLOPT_ENCODING])) { + $curlOptions[CURLOPT_HTTPHEADER][] = 'Accept:'; + } + + // Add any custom headers to the request. Empty headers will cause curl to not send the header at all. + foreach ($request->getHeaderLines() as $line) { + $curlOptions[CURLOPT_HTTPHEADER][] = $line; + } + + // Add the content-length header back if it was temporarily removed + if (null !== $tempContentLength) { + $request->setHeader('Content-Length', $tempContentLength); + } + + // Apply the options to a new cURL handle. + $handle = curl_init(); + + // Enable the progress function if the 'progress' param was set + if ($requestCurlOptions->get('progress')) { + // Wrap the function in a function that provides the curl handle to the mediator's progress function + // Using this rather than injecting the handle into the mediator prevents a circular reference + $curlOptions[CURLOPT_PROGRESSFUNCTION] = function () use ($mediator, $handle) { + $args = func_get_args(); + $args[] = $handle; + + // PHP 5.5 pushed the handle onto the start of the args + if (is_resource($args[0])) { + array_shift($args); + } + + call_user_func_array(array($mediator, 'progress'), $args); + }; + $curlOptions[CURLOPT_NOPROGRESS] = false; + } + + curl_setopt_array($handle, $curlOptions); + + return new static($handle, $curlOptions); + } + + /** + * Construct a new CurlHandle object that wraps a cURL handle + * + * @param resource $handle Configured cURL handle resource + * @param Collection|array $options Curl options to use with the handle + * + * @throws InvalidArgumentException + */ + public function __construct($handle, $options) + { + if (!is_resource($handle)) { + throw new InvalidArgumentException('Invalid handle provided'); + } + if (is_array($options)) { + $this->options = new Collection($options); + } elseif ($options instanceof Collection) { + $this->options = $options; + } else { + throw new InvalidArgumentException('Expected array or Collection'); + } + $this->handle = $handle; + } + + /** + * Destructor + */ + public function __destruct() + { + $this->close(); + } + + /** + * Close the curl handle + */ + public function close() + { + if (is_resource($this->handle)) { + curl_close($this->handle); + } + $this->handle = null; + } + + /** + * Check if the handle is available and still OK + * + * @return bool + */ + public function isAvailable() + { + return is_resource($this->handle); + } + + /** + * Get the last error that occurred on the cURL handle + * + * @return string + */ + public function getError() + { + return $this->isAvailable() ? curl_error($this->handle) : ''; + } + + /** + * Get the last error number that occurred on the cURL handle + * + * @return int + */ + public function getErrorNo() + { + if ($this->errorNo) { + return $this->errorNo; + } + + return $this->isAvailable() ? curl_errno($this->handle) : CURLE_OK; + } + + /** + * Set the curl error number + * + * @param int $error Error number to set + * + * @return CurlHandle + */ + public function setErrorNo($error) + { + $this->errorNo = $error; + + return $this; + } + + /** + * Get cURL curl_getinfo data + * + * @param int $option Option to retrieve. Pass null to retrieve all data as an array. + * + * @return array|mixed + */ + public function getInfo($option = null) + { + if (!is_resource($this->handle)) { + return null; + } + + if (null !== $option) { + return curl_getinfo($this->handle, $option) ?: null; + } + + return curl_getinfo($this->handle) ?: array(); + } + + /** + * Get the stderr output + * + * @param bool $asResource Set to TRUE to get an fopen resource + * + * @return string|resource|null + */ + public function getStderr($asResource = false) + { + $stderr = $this->getOptions()->get(CURLOPT_STDERR); + if (!$stderr) { + return null; + } + + if ($asResource) { + return $stderr; + } + + fseek($stderr, 0); + $e = stream_get_contents($stderr); + fseek($stderr, 0, SEEK_END); + + return $e; + } + + /** + * Get the URL that this handle is connecting to + * + * @return Url + */ + public function getUrl() + { + return Url::factory($this->options->get(CURLOPT_URL)); + } + + /** + * Get the wrapped curl handle + * + * @return resource|null Returns the cURL handle or null if it was closed + */ + public function getHandle() + { + return $this->isAvailable() ? $this->handle : null; + } + + /** + * Get the cURL setopt options of the handle. Changing values in the return object will have no effect on the curl + * handle after it is created. + * + * @return Collection + */ + public function getOptions() + { + return $this->options; + } + + /** + * Update a request based on the log messages of the CurlHandle + * + * @param RequestInterface $request Request to update + */ + public function updateRequestFromTransfer(RequestInterface $request) + { + if (!$request->getResponse()) { + return; + } + + // Update the transfer stats of the response + $request->getResponse()->setInfo($this->getInfo()); + + if (!$log = $this->getStderr(true)) { + return; + } + + // Parse the cURL stderr output for outgoing requests + $headers = ''; + fseek($log, 0); + while (($line = fgets($log)) !== false) { + if ($line && $line[0] == '>') { + $headers = substr(trim($line), 2) . "\r\n"; + while (($line = fgets($log)) !== false) { + if ($line[0] == '*' || $line[0] == '<') { + break; + } else { + $headers .= trim($line) . "\r\n"; + } + } + } + } + + // Add request headers to the request exactly as they were sent + if ($headers) { + $parsed = ParserRegistry::getInstance()->getParser('message')->parseRequest($headers); + if (!empty($parsed['headers'])) { + $request->setHeaders(array()); + foreach ($parsed['headers'] as $name => $value) { + $request->setHeader($name, $value); + } + } + if (!empty($parsed['version'])) { + $request->setProtocolVersion($parsed['version']); + } + } + } + + /** + * Parse the config and replace curl.* configurators into the constant based values so it can be used elsewhere + * + * @param array|Collection $config The configuration we want to parse + * + * @return array + */ + public static function parseCurlConfig($config) + { + $curlOptions = array(); + foreach ($config as $key => $value) { + if (is_string($key) && defined($key)) { + // Convert constants represented as string to constant int values + $key = constant($key); + } + if (is_string($value) && defined($value)) { + $value = constant($value); + } + $curlOptions[$key] = $value; + } + + return $curlOptions; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Curl/CurlMulti.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Curl/CurlMulti.php new file mode 100644 index 0000000..9e4e637 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Curl/CurlMulti.php @@ -0,0 +1,423 @@ + array('CURLM_BAD_HANDLE', 'The passed-in handle is not a valid CURLM handle.'), + CURLM_BAD_EASY_HANDLE => array('CURLM_BAD_EASY_HANDLE', "An easy handle was not good/valid. It could mean that it isn't an easy handle at all, or possibly that the handle already is in used by this or another multi handle."), + CURLM_OUT_OF_MEMORY => array('CURLM_OUT_OF_MEMORY', 'You are doomed.'), + CURLM_INTERNAL_ERROR => array('CURLM_INTERNAL_ERROR', 'This can only be returned if libcurl bugs. Please report it to us!') + ); + + /** @var float */ + protected $selectTimeout; + + public function __construct($selectTimeout = 1.0) + { + $this->selectTimeout = $selectTimeout; + $this->multiHandle = curl_multi_init(); + // @codeCoverageIgnoreStart + if ($this->multiHandle === false) { + throw new CurlException('Unable to create multi handle'); + } + // @codeCoverageIgnoreEnd + $this->reset(); + } + + public function __destruct() + { + if (is_resource($this->multiHandle)) { + curl_multi_close($this->multiHandle); + } + } + + public function add(RequestInterface $request) + { + $this->requests[] = $request; + // If requests are currently transferring and this is async, then the + // request must be prepared now as the send() method is not called. + $this->beforeSend($request); + $this->dispatch(self::ADD_REQUEST, array('request' => $request)); + + return $this; + } + + public function all() + { + return $this->requests; + } + + public function remove(RequestInterface $request) + { + $this->removeHandle($request); + if (($index = array_search($request, $this->requests, true)) !== false) { + $request = $this->requests[$index]; + unset($this->requests[$index]); + $this->requests = array_values($this->requests); + $this->dispatch(self::REMOVE_REQUEST, array('request' => $request)); + return true; + } + + return false; + } + + public function reset($hard = false) + { + // Remove each request + if ($this->requests) { + foreach ($this->requests as $request) { + $this->remove($request); + } + } + + $this->handles = new \SplObjectStorage(); + $this->requests = $this->resourceHash = $this->exceptions = $this->successful = array(); + } + + public function send() + { + $this->perform(); + $exceptions = $this->exceptions; + $successful = $this->successful; + $this->reset(); + + if ($exceptions) { + $this->throwMultiException($exceptions, $successful); + } + } + + public function count() + { + return count($this->requests); + } + + /** + * Build and throw a MultiTransferException + * + * @param array $exceptions Exceptions encountered + * @param array $successful Successful requests + * @throws MultiTransferException + */ + protected function throwMultiException(array $exceptions, array $successful) + { + $multiException = new MultiTransferException('Errors during multi transfer'); + + while ($e = array_shift($exceptions)) { + $multiException->addFailedRequestWithException($e['request'], $e['exception']); + } + + // Add successful requests + foreach ($successful as $request) { + if (!$multiException->containsRequest($request)) { + $multiException->addSuccessfulRequest($request); + } + } + + throw $multiException; + } + + /** + * Prepare for sending + * + * @param RequestInterface $request Request to prepare + * @throws \Exception on error preparing the request + */ + protected function beforeSend(RequestInterface $request) + { + try { + $state = $request->setState(RequestInterface::STATE_TRANSFER); + if ($state == RequestInterface::STATE_TRANSFER) { + $this->addHandle($request); + } else { + // Requests might decide they don't need to be sent just before + // transfer (e.g. CachePlugin) + $this->remove($request); + if ($state == RequestInterface::STATE_COMPLETE) { + $this->successful[] = $request; + } + } + } catch (\Exception $e) { + // Queue the exception to be thrown when sent + $this->removeErroredRequest($request, $e); + } + } + + private function addHandle(RequestInterface $request) + { + $handle = $this->createCurlHandle($request)->getHandle(); + $this->checkCurlResult( + curl_multi_add_handle($this->multiHandle, $handle) + ); + } + + /** + * Create a curl handle for a request + * + * @param RequestInterface $request Request + * + * @return CurlHandle + */ + protected function createCurlHandle(RequestInterface $request) + { + $wrapper = CurlHandle::factory($request); + $this->handles[$request] = $wrapper; + $this->resourceHash[(int) $wrapper->getHandle()] = $request; + + return $wrapper; + } + + /** + * Get the data from the multi handle + */ + protected function perform() + { + $event = new Event(array('curl_multi' => $this)); + + while ($this->requests) { + // Notify each request as polling + $blocking = $total = 0; + foreach ($this->requests as $request) { + ++$total; + $event['request'] = $request; + $request->getEventDispatcher()->dispatch(self::POLLING_REQUEST, $event); + // The blocking variable just has to be non-falsey to block the loop + if ($request->getParams()->hasKey(self::BLOCKING)) { + ++$blocking; + } + } + if ($blocking == $total) { + // Sleep to prevent eating CPU because no requests are actually pending a select call + usleep(500); + } else { + $this->executeHandles(); + } + } + } + + /** + * Execute and select curl handles + */ + private function executeHandles() + { + // The first curl_multi_select often times out no matter what, but is usually required for fast transfers + $selectTimeout = 0.001; + $active = false; + do { + while (($mrc = curl_multi_exec($this->multiHandle, $active)) == CURLM_CALL_MULTI_PERFORM); + $this->checkCurlResult($mrc); + $this->processMessages(); + if ($active && curl_multi_select($this->multiHandle, $selectTimeout) === -1) { + // Perform a usleep if a select returns -1: https://bugs.php.net/bug.php?id=61141 + usleep(150); + } + $selectTimeout = $this->selectTimeout; + } while ($active); + } + + /** + * Process any received curl multi messages + */ + private function processMessages() + { + while ($done = curl_multi_info_read($this->multiHandle)) { + $request = $this->resourceHash[(int) $done['handle']]; + try { + $this->processResponse($request, $this->handles[$request], $done); + $this->successful[] = $request; + } catch (\Exception $e) { + $this->removeErroredRequest($request, $e); + } + } + } + + /** + * Remove a request that encountered an exception + * + * @param RequestInterface $request Request to remove + * @param \Exception $e Exception encountered + */ + protected function removeErroredRequest(RequestInterface $request, \Exception $e = null) + { + $this->exceptions[] = array('request' => $request, 'exception' => $e); + $this->remove($request); + $this->dispatch(self::MULTI_EXCEPTION, array('exception' => $e, 'all_exceptions' => $this->exceptions)); + } + + /** + * Check for errors and fix headers of a request based on a curl response + * + * @param RequestInterface $request Request to process + * @param CurlHandle $handle Curl handle object + * @param array $curl Array returned from curl_multi_info_read + * + * @throws CurlException on Curl error + */ + protected function processResponse(RequestInterface $request, CurlHandle $handle, array $curl) + { + // Set the transfer stats on the response + $handle->updateRequestFromTransfer($request); + // Check if a cURL exception occurred, and if so, notify things + $curlException = $this->isCurlException($request, $handle, $curl); + + // Always remove completed curl handles. They can be added back again + // via events if needed (e.g. ExponentialBackoffPlugin) + $this->removeHandle($request); + + if (!$curlException) { + if ($this->validateResponseWasSet($request)) { + $state = $request->setState( + RequestInterface::STATE_COMPLETE, + array('handle' => $handle) + ); + // Only remove the request if it wasn't resent as a result of + // the state change + if ($state != RequestInterface::STATE_TRANSFER) { + $this->remove($request); + } + } + return; + } + + // Set the state of the request to an error + $state = $request->setState(RequestInterface::STATE_ERROR, array('exception' => $curlException)); + // Allow things to ignore the error if possible + if ($state != RequestInterface::STATE_TRANSFER) { + $this->remove($request); + } + + // The error was not handled, so fail + if ($state == RequestInterface::STATE_ERROR) { + /** @var CurlException $curlException */ + throw $curlException; + } + } + + /** + * Remove a curl handle from the curl multi object + * + * @param RequestInterface $request Request that owns the handle + */ + protected function removeHandle(RequestInterface $request) + { + if (isset($this->handles[$request])) { + $handle = $this->handles[$request]; + curl_multi_remove_handle($this->multiHandle, $handle->getHandle()); + unset($this->handles[$request]); + unset($this->resourceHash[(int) $handle->getHandle()]); + $handle->close(); + } + } + + /** + * Check if a cURL transfer resulted in what should be an exception + * + * @param RequestInterface $request Request to check + * @param CurlHandle $handle Curl handle object + * @param array $curl Array returned from curl_multi_info_read + * + * @return CurlException|bool + */ + private function isCurlException(RequestInterface $request, CurlHandle $handle, array $curl) + { + if (CURLM_OK == $curl['result'] || CURLM_CALL_MULTI_PERFORM == $curl['result']) { + return false; + } + + $handle->setErrorNo($curl['result']); + $e = new CurlException(sprintf('[curl] %s: %s [url] %s', + $handle->getErrorNo(), $handle->getError(), $handle->getUrl())); + $e->setCurlHandle($handle) + ->setRequest($request) + ->setCurlInfo($handle->getInfo()) + ->setError($handle->getError(), $handle->getErrorNo()); + + return $e; + } + + /** + * Throw an exception for a cURL multi response if needed + * + * @param int $code Curl response code + * @throws CurlException + */ + private function checkCurlResult($code) + { + if ($code != CURLM_OK && $code != CURLM_CALL_MULTI_PERFORM) { + throw new CurlException(isset($this->multiErrors[$code]) + ? "cURL error: {$code} ({$this->multiErrors[$code][0]}): cURL message: {$this->multiErrors[$code][1]}" + : 'Unexpected cURL error: ' . $code + ); + } + } + + /** + * @link https://github.com/guzzle/guzzle/issues/710 + */ + private function validateResponseWasSet(RequestInterface $request) + { + if ($request->getResponse()) { + return true; + } + + $body = $request instanceof EntityEnclosingRequestInterface + ? $request->getBody() + : null; + + if (!$body) { + $rex = new RequestException( + 'No response was received for a request with no body. This' + . ' could mean that you are saturating your network.' + ); + $rex->setRequest($request); + $this->removeErroredRequest($request, $rex); + } elseif (!$body->isSeekable() || !$body->seek(0)) { + // Nothing we can do with this. Sorry! + $rex = new RequestException( + 'The connection was unexpectedly closed. The request would' + . ' have been retried, but attempting to rewind the' + . ' request body failed.' + ); + $rex->setRequest($request); + $this->removeErroredRequest($request, $rex); + } else { + $this->remove($request); + // Add the request back to the batch to retry automatically. + $this->requests[] = $request; + $this->addHandle($request); + } + + return false; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Curl/CurlMultiInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Curl/CurlMultiInterface.php new file mode 100644 index 0000000..0ead757 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Curl/CurlMultiInterface.php @@ -0,0 +1,58 @@ +maxHandles = $maxHandles; + $this->selectTimeout = $selectTimeout; + // You can get some weird "Too many open files" errors when sending a large amount of requests in parallel. + // These two statements autoload classes before a system runs out of file descriptors so that you can get back + // valuable error messages if you run out. + class_exists('Guzzle\Http\Message\Response'); + class_exists('Guzzle\Http\Exception\CurlException'); + } + + public function add(RequestInterface $request) + { + $this->queued[] = $request; + + return $this; + } + + public function all() + { + $requests = $this->queued; + foreach ($this->handles as $handle) { + $requests = array_merge($requests, $handle->all()); + } + + return $requests; + } + + public function remove(RequestInterface $request) + { + foreach ($this->queued as $i => $r) { + if ($request === $r) { + unset($this->queued[$i]); + return true; + } + } + + foreach ($this->handles as $handle) { + if ($handle->remove($request)) { + return true; + } + } + + return false; + } + + public function reset($hard = false) + { + $this->queued = array(); + $this->groups = array(); + foreach ($this->handles as $handle) { + $handle->reset(); + } + if ($hard) { + $this->handles = array(); + } + + return $this; + } + + public function send() + { + if ($this->queued) { + $group = $this->getAvailableHandle(); + // Add this handle to a list of handles than is claimed + $this->groups[] = $group; + while ($request = array_shift($this->queued)) { + $group->add($request); + } + try { + $group->send(); + array_pop($this->groups); + $this->cleanupHandles(); + } catch (\Exception $e) { + // Remove the group and cleanup if an exception was encountered and no more requests in group + if (!$group->count()) { + array_pop($this->groups); + $this->cleanupHandles(); + } + throw $e; + } + } + } + + public function count() + { + return count($this->all()); + } + + /** + * Get an existing available CurlMulti handle or create a new one + * + * @return CurlMulti + */ + protected function getAvailableHandle() + { + // Grab a handle that is not claimed + foreach ($this->handles as $h) { + if (!in_array($h, $this->groups, true)) { + return $h; + } + } + + // All are claimed, so create one + $handle = new CurlMulti($this->selectTimeout); + $handle->setEventDispatcher($this->getEventDispatcher()); + $this->handles[] = $handle; + + return $handle; + } + + /** + * Trims down unused CurlMulti handles to limit the number of open connections + */ + protected function cleanupHandles() + { + if ($diff = max(0, count($this->handles) - $this->maxHandles)) { + for ($i = count($this->handles) - 1; $i > 0 && $diff > 0; $i--) { + if (!count($this->handles[$i])) { + unset($this->handles[$i]); + $diff--; + } + } + $this->handles = array_values($this->handles); + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Curl/CurlVersion.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Curl/CurlVersion.php new file mode 100644 index 0000000..c3f99dd --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Curl/CurlVersion.php @@ -0,0 +1,66 @@ +version) { + $this->version = curl_version(); + } + + return $this->version; + } + + /** + * Get a specific type of curl information + * + * @param string $type Version information to retrieve. This value is one of: + * - version_number: cURL 24 bit version number + * - version: cURL version number, as a string + * - ssl_version_number: OpenSSL 24 bit version number + * - ssl_version: OpenSSL version number, as a string + * - libz_version: zlib version number, as a string + * - host: Information about the host where cURL was built + * - features: A bitmask of the CURL_VERSION_XXX constants + * - protocols: An array of protocols names supported by cURL + * + * @return string|float|bool if the $type is found, and false if not found + */ + public function get($type) + { + $version = $this->getAll(); + + return isset($version[$type]) ? $version[$type] : false; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Curl/RequestMediator.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Curl/RequestMediator.php new file mode 100644 index 0000000..5d1a0cd --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Curl/RequestMediator.php @@ -0,0 +1,147 @@ +request = $request; + $this->emitIo = $emitIo; + } + + /** + * Receive a response header from curl + * + * @param resource $curl Curl handle + * @param string $header Received header + * + * @return int + */ + public function receiveResponseHeader($curl, $header) + { + static $normalize = array("\r", "\n"); + $length = strlen($header); + $header = str_replace($normalize, '', $header); + + if (strpos($header, 'HTTP/') === 0) { + + $startLine = explode(' ', $header, 3); + $code = $startLine[1]; + $status = isset($startLine[2]) ? $startLine[2] : ''; + + // Only download the body of the response to the specified response + // body when a successful response is received. + if ($code >= 200 && $code < 300) { + $body = $this->request->getResponseBody(); + } else { + $body = EntityBody::factory(); + } + + $response = new Response($code, null, $body); + $response->setStatus($code, $status); + $this->request->startResponse($response); + + $this->request->dispatch('request.receive.status_line', array( + 'request' => $this, + 'line' => $header, + 'status_code' => $code, + 'reason_phrase' => $status + )); + + } elseif ($pos = strpos($header, ':')) { + $this->request->getResponse()->addHeader( + trim(substr($header, 0, $pos)), + trim(substr($header, $pos + 1)) + ); + } + + return $length; + } + + /** + * Received a progress notification + * + * @param int $downloadSize Total download size + * @param int $downloaded Amount of bytes downloaded + * @param int $uploadSize Total upload size + * @param int $uploaded Amount of bytes uploaded + * @param resource $handle CurlHandle object + */ + public function progress($downloadSize, $downloaded, $uploadSize, $uploaded, $handle = null) + { + $this->request->dispatch('curl.callback.progress', array( + 'request' => $this->request, + 'handle' => $handle, + 'download_size' => $downloadSize, + 'downloaded' => $downloaded, + 'upload_size' => $uploadSize, + 'uploaded' => $uploaded + )); + } + + /** + * Write data to the response body of a request + * + * @param resource $curl Curl handle + * @param string $write Data that was received + * + * @return int + */ + public function writeResponseBody($curl, $write) + { + if ($this->emitIo) { + $this->request->dispatch('curl.callback.write', array( + 'request' => $this->request, + 'write' => $write + )); + } + + if ($response = $this->request->getResponse()) { + return $response->getBody()->write($write); + } else { + // Unexpected data received before response headers - abort transfer + return 0; + } + } + + /** + * Read data from the request body and send it to curl + * + * @param resource $ch Curl handle + * @param resource $fd File descriptor + * @param int $length Amount of data to read + * + * @return string + */ + public function readRequestBody($ch, $fd, $length) + { + if (!($body = $this->request->getBody())) { + return ''; + } + + $read = (string) $body->read($length); + if ($this->emitIo) { + $this->request->dispatch('curl.callback.read', array('request' => $this->request, 'read' => $read)); + } + + return $read; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/EntityBody.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/EntityBody.php new file mode 100644 index 0000000..b60d170 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/EntityBody.php @@ -0,0 +1,201 @@ +rewindFunction = $callable; + + return $this; + } + + public function rewind() + { + return $this->rewindFunction ? call_user_func($this->rewindFunction, $this) : parent::rewind(); + } + + /** + * Create a new EntityBody from a string + * + * @param string $string String of data + * + * @return EntityBody + */ + public static function fromString($string) + { + $stream = fopen('php://temp', 'r+'); + if ($string !== '') { + fwrite($stream, $string); + rewind($stream); + } + + return new static($stream); + } + + public function compress($filter = 'zlib.deflate') + { + $result = $this->handleCompression($filter); + $this->contentEncoding = $result ? $filter : false; + + return $result; + } + + public function uncompress($filter = 'zlib.inflate') + { + $offsetStart = 0; + + // When inflating gzipped data, the first 10 bytes must be stripped + // if a gzip header is present + if ($filter == 'zlib.inflate') { + // @codeCoverageIgnoreStart + if (!$this->isReadable() || ($this->isConsumed() && !$this->isSeekable())) { + return false; + } + // @codeCoverageIgnoreEnd + if (stream_get_contents($this->stream, 3, 0) === "\x1f\x8b\x08") { + $offsetStart = 10; + } + } + + $this->contentEncoding = false; + + return $this->handleCompression($filter, $offsetStart); + } + + public function getContentLength() + { + return $this->getSize(); + } + + public function getContentType() + { + return $this->getUri() ? Mimetypes::getInstance()->fromFilename($this->getUri()) : null; + } + + public function getContentMd5($rawOutput = false, $base64Encode = false) + { + if ($hash = self::getHash($this, 'md5', $rawOutput)) { + return $hash && $base64Encode ? base64_encode($hash) : $hash; + } else { + return false; + } + } + + /** + * Calculate the MD5 hash of an entity body + * + * @param EntityBodyInterface $body Entity body to calculate the hash for + * @param bool $rawOutput Whether or not to use raw output + * @param bool $base64Encode Whether or not to base64 encode raw output (only if raw output is true) + * + * @return bool|string Returns an MD5 string on success or FALSE on failure + * @deprecated This will be deprecated soon + * @codeCoverageIgnore + */ + public static function calculateMd5(EntityBodyInterface $body, $rawOutput = false, $base64Encode = false) + { + Version::warn(__CLASS__ . ' is deprecated. Use getContentMd5()'); + return $body->getContentMd5($rawOutput, $base64Encode); + } + + public function setStreamFilterContentEncoding($streamFilterContentEncoding) + { + $this->contentEncoding = $streamFilterContentEncoding; + + return $this; + } + + public function getContentEncoding() + { + return strtr($this->contentEncoding, array( + 'zlib.deflate' => 'gzip', + 'bzip2.compress' => 'compress' + )) ?: false; + } + + protected function handleCompression($filter, $offsetStart = 0) + { + // @codeCoverageIgnoreStart + if (!$this->isReadable() || ($this->isConsumed() && !$this->isSeekable())) { + return false; + } + // @codeCoverageIgnoreEnd + + $handle = fopen('php://temp', 'r+'); + $filter = @stream_filter_append($handle, $filter, STREAM_FILTER_WRITE); + if (!$filter) { + return false; + } + + // Seek to the offset start if possible + $this->seek($offsetStart); + while ($data = fread($this->stream, 8096)) { + fwrite($handle, $data); + } + + fclose($this->stream); + $this->stream = $handle; + stream_filter_remove($filter); + $stat = fstat($this->stream); + $this->size = $stat['size']; + $this->rebuildCache(); + $this->seek(0); + + // Remove any existing rewind function as the underlying stream has been replaced + $this->rewindFunction = null; + + return true; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/EntityBodyInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/EntityBodyInterface.php new file mode 100644 index 0000000..e640f57 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/EntityBodyInterface.php @@ -0,0 +1,73 @@ +isClientError()) { + $label = 'Client error response'; + $class = __NAMESPACE__ . '\\ClientErrorResponseException'; + } elseif ($response->isServerError()) { + $label = 'Server error response'; + $class = __NAMESPACE__ . '\\ServerErrorResponseException'; + } else { + $label = 'Unsuccessful response'; + $class = __CLASS__; + } + + $message = $label . PHP_EOL . implode(PHP_EOL, array( + '[status code] ' . $response->getStatusCode(), + '[reason phrase] ' . $response->getReasonPhrase(), + '[url] ' . $request->getUrl(), + )); + + $e = new $class($message); + $e->setResponse($response); + $e->setRequest($request); + + return $e; + } + + /** + * Set the response that caused the exception + * + * @param Response $response Response to set + */ + public function setResponse(Response $response) + { + $this->response = $response; + } + + /** + * Get the response that caused the exception + * + * @return Response + */ + public function getResponse() + { + return $this->response; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Exception/ClientErrorResponseException.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Exception/ClientErrorResponseException.php new file mode 100644 index 0000000..04d7ddc --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Exception/ClientErrorResponseException.php @@ -0,0 +1,8 @@ +curlError = $error; + $this->curlErrorNo = $number; + + return $this; + } + + /** + * Set the associated curl handle + * + * @param CurlHandle $handle Curl handle + * + * @return self + */ + public function setCurlHandle(CurlHandle $handle) + { + $this->handle = $handle; + + return $this; + } + + /** + * Get the associated cURL handle + * + * @return CurlHandle|null + */ + public function getCurlHandle() + { + return $this->handle; + } + + /** + * Get the associated cURL error message + * + * @return string|null + */ + public function getError() + { + return $this->curlError; + } + + /** + * Get the associated cURL error number + * + * @return int|null + */ + public function getErrorNo() + { + return $this->curlErrorNo; + } + + /** + * Returns curl information about the transfer + * + * @return array + */ + public function getCurlInfo() + { + return $this->curlInfo; + } + + /** + * Set curl transfer information + * + * @param array $info Array of curl transfer information + * + * @return self + * @link http://php.net/manual/en/function.curl-getinfo.php + */ + public function setCurlInfo(array $info) + { + $this->curlInfo = $info; + + return $this; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Exception/HttpException.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Exception/HttpException.php new file mode 100644 index 0000000..ee87295 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Exception/HttpException.php @@ -0,0 +1,10 @@ +successfulRequests, $this->failedRequests); + } + + /** + * Add to the array of successful requests + * + * @param RequestInterface $request Successful request + * + * @return self + */ + public function addSuccessfulRequest(RequestInterface $request) + { + $this->successfulRequests[] = $request; + + return $this; + } + + /** + * Add to the array of failed requests + * + * @param RequestInterface $request Failed request + * + * @return self + */ + public function addFailedRequest(RequestInterface $request) + { + $this->failedRequests[] = $request; + + return $this; + } + + /** + * Add to the array of failed requests and associate with exceptions + * + * @param RequestInterface $request Failed request + * @param \Exception $exception Exception to add and associate with + * + * @return self + */ + public function addFailedRequestWithException(RequestInterface $request, \Exception $exception) + { + $this->add($exception) + ->addFailedRequest($request) + ->exceptionForRequest[spl_object_hash($request)] = $exception; + + return $this; + } + + /** + * Get the Exception that caused the given $request to fail + * + * @param RequestInterface $request Failed command + * + * @return \Exception|null + */ + public function getExceptionForFailedRequest(RequestInterface $request) + { + $oid = spl_object_hash($request); + + return isset($this->exceptionForRequest[$oid]) ? $this->exceptionForRequest[$oid] : null; + } + + /** + * Set all of the successful requests + * + * @param array Array of requests + * + * @return self + */ + public function setSuccessfulRequests(array $requests) + { + $this->successfulRequests = $requests; + + return $this; + } + + /** + * Set all of the failed requests + * + * @param array Array of requests + * + * @return self + */ + public function setFailedRequests(array $requests) + { + $this->failedRequests = $requests; + + return $this; + } + + /** + * Get an array of successful requests sent in the multi transfer + * + * @return array + */ + public function getSuccessfulRequests() + { + return $this->successfulRequests; + } + + /** + * Get an array of failed requests sent in the multi transfer + * + * @return array + */ + public function getFailedRequests() + { + return $this->failedRequests; + } + + /** + * Check if the exception object contains a request + * + * @param RequestInterface $request Request to check + * + * @return bool + */ + public function containsRequest(RequestInterface $request) + { + return in_array($request, $this->failedRequests, true) || in_array($request, $this->successfulRequests, true); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Exception/RequestException.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Exception/RequestException.php new file mode 100644 index 0000000..274df2c --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Exception/RequestException.php @@ -0,0 +1,39 @@ +request = $request; + + return $this; + } + + /** + * Get the request that caused the exception + * + * @return RequestInterface + */ + public function getRequest() + { + return $this->request; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Exception/ServerErrorResponseException.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Exception/ServerErrorResponseException.php new file mode 100644 index 0000000..f0f7cfe --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Exception/ServerErrorResponseException.php @@ -0,0 +1,8 @@ +eventDispatcher = $eventDispatcher; + + return $this; + } + + public function getEventDispatcher() + { + if (!$this->eventDispatcher) { + $this->eventDispatcher = new EventDispatcher(); + } + + return $this->eventDispatcher; + } + + public function dispatch($eventName, array $context = array()) + { + return $this->getEventDispatcher()->dispatch($eventName, new Event($context)); + } + + /** + * {@inheritdoc} + * @codeCoverageIgnore + */ + public function addSubscriber(EventSubscriberInterface $subscriber) + { + $this->getEventDispatcher()->addSubscriber($subscriber); + + return $this; + } + + public function read($length) + { + $event = array( + 'body' => $this, + 'length' => $length, + 'read' => $this->body->read($length) + ); + $this->dispatch('body.read', $event); + + return $event['read']; + } + + public function write($string) + { + $event = array( + 'body' => $this, + 'write' => $string, + 'result' => $this->body->write($string) + ); + $this->dispatch('body.write', $event); + + return $event['result']; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/AbstractMessage.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/AbstractMessage.php new file mode 100644 index 0000000..0d066ff --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/AbstractMessage.php @@ -0,0 +1,220 @@ +params = new Collection(); + $this->headerFactory = new HeaderFactory(); + $this->headers = new HeaderCollection(); + } + + /** + * Set the header factory to use to create headers + * + * @param HeaderFactoryInterface $factory + * + * @return self + */ + public function setHeaderFactory(HeaderFactoryInterface $factory) + { + $this->headerFactory = $factory; + + return $this; + } + + public function getParams() + { + return $this->params; + } + + public function addHeader($header, $value) + { + if (isset($this->headers[$header])) { + $this->headers[$header]->add($value); + } elseif ($value instanceof HeaderInterface) { + $this->headers[$header] = $value; + } else { + $this->headers[$header] = $this->headerFactory->createHeader($header, $value); + } + + return $this; + } + + public function addHeaders(array $headers) + { + foreach ($headers as $key => $value) { + $this->addHeader($key, $value); + } + + return $this; + } + + public function getHeader($header) + { + return $this->headers[$header]; + } + + public function getHeaders() + { + return $this->headers; + } + + public function getHeaderLines() + { + $headers = array(); + foreach ($this->headers as $value) { + $headers[] = $value->getName() . ': ' . $value; + } + + return $headers; + } + + public function setHeader($header, $value) + { + unset($this->headers[$header]); + $this->addHeader($header, $value); + + return $this; + } + + public function setHeaders(array $headers) + { + $this->headers->clear(); + foreach ($headers as $key => $value) { + $this->addHeader($key, $value); + } + + return $this; + } + + public function hasHeader($header) + { + return isset($this->headers[$header]); + } + + public function removeHeader($header) + { + unset($this->headers[$header]); + + return $this; + } + + /** + * @deprecated Use $message->getHeader()->parseParams() + * @codeCoverageIgnore + */ + public function getTokenizedHeader($header, $token = ';') + { + Version::warn(__METHOD__ . ' is deprecated. Use $message->getHeader()->parseParams()'); + if ($this->hasHeader($header)) { + $data = new Collection(); + foreach ($this->getHeader($header)->parseParams() as $values) { + foreach ($values as $key => $value) { + if ($value === '') { + $data->set($data->count(), $key); + } else { + $data->add($key, $value); + } + } + } + return $data; + } + } + + /** + * @deprecated + * @codeCoverageIgnore + */ + public function setTokenizedHeader($header, $data, $token = ';') + { + Version::warn(__METHOD__ . ' is deprecated.'); + return $this; + } + + /** + * @deprecated + * @codeCoverageIgnore + */ + public function getCacheControlDirective($directive) + { + Version::warn(__METHOD__ . ' is deprecated. Use $message->getHeader(\'Cache-Control\')->getDirective()'); + if (!($header = $this->getHeader('Cache-Control'))) { + return null; + } + + return $header->getDirective($directive); + } + + /** + * @deprecated + * @codeCoverageIgnore + */ + public function hasCacheControlDirective($directive) + { + Version::warn(__METHOD__ . ' is deprecated. Use $message->getHeader(\'Cache-Control\')->hasDirective()'); + if ($header = $this->getHeader('Cache-Control')) { + return $header->hasDirective($directive); + } else { + return false; + } + } + + /** + * @deprecated + * @codeCoverageIgnore + */ + public function addCacheControlDirective($directive, $value = true) + { + Version::warn(__METHOD__ . ' is deprecated. Use $message->getHeader(\'Cache-Control\')->addDirective()'); + if (!($header = $this->getHeader('Cache-Control'))) { + $this->addHeader('Cache-Control', ''); + $header = $this->getHeader('Cache-Control'); + } + + $header->addDirective($directive, $value); + + return $this; + } + + /** + * @deprecated + * @codeCoverageIgnore + */ + public function removeCacheControlDirective($directive) + { + Version::warn(__METHOD__ . ' is deprecated. Use $message->getHeader(\'Cache-Control\')->removeDirective()'); + if ($header = $this->getHeader('Cache-Control')) { + $header->removeDirective($directive); + } + + return $this; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/EntityEnclosingRequest.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/EntityEnclosingRequest.php new file mode 100644 index 0000000..212850a --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/EntityEnclosingRequest.php @@ -0,0 +1,247 @@ +postFields = new QueryString(); + parent::__construct($method, $url, $headers); + } + + /** + * @return string + */ + public function __toString() + { + // Only attempt to include the POST data if it's only fields + if (count($this->postFields) && empty($this->postFiles)) { + return parent::__toString() . (string) $this->postFields; + } + + return parent::__toString() . $this->body; + } + + public function setState($state, array $context = array()) + { + parent::setState($state, $context); + if ($state == self::STATE_TRANSFER && !$this->body && !count($this->postFields) && !count($this->postFiles)) { + $this->setHeader('Content-Length', 0)->removeHeader('Transfer-Encoding'); + } + + return $this->state; + } + + public function setBody($body, $contentType = null) + { + $this->body = EntityBody::factory($body); + + // Auto detect the Content-Type from the path of the request if possible + if ($contentType === null && !$this->hasHeader('Content-Type')) { + $contentType = $this->body->getContentType(); + } + + if ($contentType) { + $this->setHeader('Content-Type', $contentType); + } + + // Always add the Expect 100-Continue header if the body cannot be rewound. This helps with redirects. + if (!$this->body->isSeekable() && $this->expectCutoff !== false) { + $this->setHeader('Expect', '100-Continue'); + } + + // Set the Content-Length header if it can be determined + $size = $this->body->getContentLength(); + if ($size !== null && $size !== false) { + $this->setHeader('Content-Length', $size); + if ($size > $this->expectCutoff) { + $this->setHeader('Expect', '100-Continue'); + } + } elseif (!$this->hasHeader('Content-Length')) { + if ('1.1' == $this->protocolVersion) { + $this->setHeader('Transfer-Encoding', 'chunked'); + } else { + throw new RequestException( + 'Cannot determine Content-Length and cannot use chunked Transfer-Encoding when using HTTP/1.0' + ); + } + } + + return $this; + } + + public function getBody() + { + return $this->body; + } + + /** + * Set the size that the entity body of the request must exceed before adding the Expect: 100-Continue header. + * + * @param int|bool $size Cutoff in bytes. Set to false to never send the expect header (even with non-seekable data) + * + * @return self + */ + public function setExpectHeaderCutoff($size) + { + $this->expectCutoff = $size; + if ($size === false || !$this->body) { + $this->removeHeader('Expect'); + } elseif ($this->body && $this->body->getSize() && $this->body->getSize() > $size) { + $this->setHeader('Expect', '100-Continue'); + } + + return $this; + } + + public function configureRedirects($strict = false, $maxRedirects = 5) + { + $this->getParams()->set(RedirectPlugin::STRICT_REDIRECTS, $strict); + if ($maxRedirects == 0) { + $this->getParams()->set(RedirectPlugin::DISABLE, true); + } else { + $this->getParams()->set(RedirectPlugin::MAX_REDIRECTS, $maxRedirects); + } + + return $this; + } + + public function getPostField($field) + { + return $this->postFields->get($field); + } + + public function getPostFields() + { + return $this->postFields; + } + + public function setPostField($key, $value) + { + $this->postFields->set($key, $value); + $this->processPostFields(); + + return $this; + } + + public function addPostFields($fields) + { + $this->postFields->merge($fields); + $this->processPostFields(); + + return $this; + } + + public function removePostField($field) + { + $this->postFields->remove($field); + $this->processPostFields(); + + return $this; + } + + public function getPostFiles() + { + return $this->postFiles; + } + + public function getPostFile($fieldName) + { + return isset($this->postFiles[$fieldName]) ? $this->postFiles[$fieldName] : null; + } + + public function removePostFile($fieldName) + { + unset($this->postFiles[$fieldName]); + $this->processPostFields(); + + return $this; + } + + public function addPostFile($field, $filename = null, $contentType = null, $postname = null) + { + $data = null; + + if ($field instanceof PostFileInterface) { + $data = $field; + } elseif (is_array($filename)) { + // Allow multiple values to be set in a single key + foreach ($filename as $file) { + $this->addPostFile($field, $file, $contentType); + } + return $this; + } elseif (!is_string($filename)) { + throw new RequestException('The path to a file must be a string'); + } elseif (!empty($filename)) { + // Adding an empty file will cause cURL to error out + $data = new PostFile($field, $filename, $contentType, $postname); + } + + if ($data) { + if (!isset($this->postFiles[$data->getFieldName()])) { + $this->postFiles[$data->getFieldName()] = array($data); + } else { + $this->postFiles[$data->getFieldName()][] = $data; + } + $this->processPostFields(); + } + + return $this; + } + + public function addPostFiles(array $files) + { + foreach ($files as $key => $file) { + if ($file instanceof PostFileInterface) { + $this->addPostFile($file, null, null, false); + } elseif (is_string($file)) { + // Convert non-associative array keys into 'file' + if (is_numeric($key)) { + $key = 'file'; + } + $this->addPostFile($key, $file, null, false); + } else { + throw new RequestException('File must be a string or instance of PostFileInterface'); + } + } + + return $this; + } + + /** + * Determine what type of request should be sent based on post fields + */ + protected function processPostFields() + { + if (!$this->postFiles) { + $this->removeHeader('Expect')->setHeader('Content-Type', self::URL_ENCODED); + } else { + $this->setHeader('Content-Type', self::MULTIPART); + if ($this->expectCutoff !== false) { + $this->setHeader('Expect', '100-Continue'); + } + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/EntityEnclosingRequestInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/EntityEnclosingRequestInterface.php new file mode 100644 index 0000000..49ad459 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/EntityEnclosingRequestInterface.php @@ -0,0 +1,137 @@ + filenames where filename can be a string or PostFileInterface + * + * @return self + */ + public function addPostFiles(array $files); + + /** + * Configure how redirects are handled for the request + * + * @param bool $strict Set to true to follow strict RFC compliance when redirecting POST requests. Most + * browsers with follow a 301-302 redirect for a POST request with a GET request. This is + * the default behavior of Guzzle. Enable strict redirects to redirect these responses + * with a POST rather than a GET request. + * @param int $maxRedirects Specify the maximum number of allowed redirects. Set to 0 to disable redirects. + * + * @return self + */ + public function configureRedirects($strict = false, $maxRedirects = 5); +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/Header.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/Header.php new file mode 100644 index 0000000..50597b2 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/Header.php @@ -0,0 +1,182 @@ +header = trim($header); + $this->glue = $glue; + + foreach ((array) $values as $value) { + foreach ((array) $value as $v) { + $this->values[] = $v; + } + } + } + + public function __toString() + { + return implode($this->glue . ' ', $this->toArray()); + } + + public function add($value) + { + $this->values[] = $value; + + return $this; + } + + public function getName() + { + return $this->header; + } + + public function setName($name) + { + $this->header = $name; + + return $this; + } + + public function setGlue($glue) + { + $this->glue = $glue; + + return $this; + } + + public function getGlue() + { + return $this->glue; + } + + /** + * Normalize the header to be a single header with an array of values. + * + * If any values of the header contains the glue string value (e.g. ","), then the value will be exploded into + * multiple entries in the header. + * + * @return self + */ + public function normalize() + { + $values = $this->toArray(); + + for ($i = 0, $total = count($values); $i < $total; $i++) { + if (strpos($values[$i], $this->glue) !== false) { + // Explode on glue when the glue is not inside of a comma + foreach (preg_split('/' . preg_quote($this->glue) . '(?=([^"]*"[^"]*")*[^"]*$)/', $values[$i]) as $v) { + $values[] = trim($v); + } + unset($values[$i]); + } + } + + $this->values = array_values($values); + + return $this; + } + + public function hasValue($searchValue) + { + return in_array($searchValue, $this->toArray()); + } + + public function removeValue($searchValue) + { + $this->values = array_values(array_filter($this->values, function ($value) use ($searchValue) { + return $value != $searchValue; + })); + + return $this; + } + + public function toArray() + { + return $this->values; + } + + public function count() + { + return count($this->toArray()); + } + + public function getIterator() + { + return new \ArrayIterator($this->toArray()); + } + + public function parseParams() + { + $params = $matches = array(); + $callback = array($this, 'trimHeader'); + + // Normalize the header into a single array and iterate over all values + foreach ($this->normalize()->toArray() as $val) { + $part = array(); + foreach (preg_split('/;(?=([^"]*"[^"]*")*[^"]*$)/', $val) as $kvp) { + if (!preg_match_all('/<[^>]+>|[^=]+/', $kvp, $matches)) { + continue; + } + $pieces = array_map($callback, $matches[0]); + $part[$pieces[0]] = isset($pieces[1]) ? $pieces[1] : ''; + } + if ($part) { + $params[] = $part; + } + } + + return $params; + } + + /** + * @deprecated + * @codeCoverageIgnore + */ + public function hasExactHeader($header) + { + Version::warn(__METHOD__ . ' is deprecated'); + return $this->header == $header; + } + + /** + * @deprecated + * @codeCoverageIgnore + */ + public function raw() + { + Version::warn(__METHOD__ . ' is deprecated. Use toArray()'); + return $this->toArray(); + } + + /** + * Trim a header by removing excess spaces and wrapping quotes + * + * @param $str + * + * @return string + */ + protected function trimHeader($str) + { + static $trimmed = "\"' \n\t"; + + return trim($str, $trimmed); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/Header/CacheControl.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/Header/CacheControl.php new file mode 100644 index 0000000..77789e5 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/Header/CacheControl.php @@ -0,0 +1,121 @@ +directives = null; + } + + public function removeValue($searchValue) + { + parent::removeValue($searchValue); + $this->directives = null; + } + + /** + * Check if a specific cache control directive exists + * + * @param string $param Directive to retrieve + * + * @return bool + */ + public function hasDirective($param) + { + $directives = $this->getDirectives(); + + return isset($directives[$param]); + } + + /** + * Get a specific cache control directive + * + * @param string $param Directive to retrieve + * + * @return string|bool|null + */ + public function getDirective($param) + { + $directives = $this->getDirectives(); + + return isset($directives[$param]) ? $directives[$param] : null; + } + + /** + * Add a cache control directive + * + * @param string $param Directive to add + * @param string $value Value to set + * + * @return self + */ + public function addDirective($param, $value) + { + $directives = $this->getDirectives(); + $directives[$param] = $value; + $this->updateFromDirectives($directives); + + return $this; + } + + /** + * Remove a cache control directive by name + * + * @param string $param Directive to remove + * + * @return self + */ + public function removeDirective($param) + { + $directives = $this->getDirectives(); + unset($directives[$param]); + $this->updateFromDirectives($directives); + + return $this; + } + + /** + * Get an associative array of cache control directives + * + * @return array + */ + public function getDirectives() + { + if ($this->directives === null) { + $this->directives = array(); + foreach ($this->parseParams() as $collection) { + foreach ($collection as $key => $value) { + $this->directives[$key] = $value === '' ? true : $value; + } + } + } + + return $this->directives; + } + + /** + * Updates the header value based on the parsed directives + * + * @param array $directives Array of cache control directives + */ + protected function updateFromDirectives(array $directives) + { + $this->directives = $directives; + $this->values = array(); + + foreach ($directives as $key => $value) { + $this->values[] = $value === true ? $key : "{$key}={$value}"; + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/Header/HeaderCollection.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/Header/HeaderCollection.php new file mode 100644 index 0000000..8c7f6ae --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/Header/HeaderCollection.php @@ -0,0 +1,108 @@ +headers = $headers; + } + + public function __clone() + { + foreach ($this->headers as &$header) { + $header = clone $header; + } + } + + /** + * Clears the header collection + */ + public function clear() + { + $this->headers = array(); + } + + /** + * Set a header on the collection + * + * @param HeaderInterface $header Header to add + * + * @return self + */ + public function add(HeaderInterface $header) + { + $this->headers[strtolower($header->getName())] = $header; + + return $this; + } + + /** + * Get an array of header objects + * + * @return array + */ + public function getAll() + { + return $this->headers; + } + + /** + * Alias of offsetGet + */ + public function get($key) + { + return $this->offsetGet($key); + } + + public function count() + { + return count($this->headers); + } + + public function offsetExists($offset) + { + return isset($this->headers[strtolower($offset)]); + } + + public function offsetGet($offset) + { + $l = strtolower($offset); + + return isset($this->headers[$l]) ? $this->headers[$l] : null; + } + + public function offsetSet($offset, $value) + { + $this->add($value); + } + + public function offsetUnset($offset) + { + unset($this->headers[strtolower($offset)]); + } + + public function getIterator() + { + return new \ArrayIterator($this->headers); + } + + public function toArray() + { + $result = array(); + foreach ($this->headers as $header) { + $result[$header->getName()] = $header->toArray(); + } + + return $result; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/Header/HeaderFactory.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/Header/HeaderFactory.php new file mode 100644 index 0000000..0273be5 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/Header/HeaderFactory.php @@ -0,0 +1,26 @@ + 'Guzzle\Http\Message\Header\CacheControl', + 'link' => 'Guzzle\Http\Message\Header\Link', + ); + + public function createHeader($header, $value = null) + { + $lowercase = strtolower($header); + + return isset($this->mapping[$lowercase]) + ? new $this->mapping[$lowercase]($header, $value) + : new Header($header, $value); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/Header/HeaderFactoryInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/Header/HeaderFactoryInterface.php new file mode 100644 index 0000000..9457cf6 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/Header/HeaderFactoryInterface.php @@ -0,0 +1,19 @@ +", "rel=\"{$rel}\""); + + foreach ($params as $k => $v) { + $values[] = "{$k}=\"{$v}\""; + } + + return $this->add(implode('; ', $values)); + } + + /** + * Check if a specific link exists for a given rel attribute + * + * @param string $rel rel value + * + * @return bool + */ + public function hasLink($rel) + { + return $this->getLink($rel) !== null; + } + + /** + * Get a specific link for a given rel attribute + * + * @param string $rel Rel value + * + * @return array|null + */ + public function getLink($rel) + { + foreach ($this->getLinks() as $link) { + if (isset($link['rel']) && $link['rel'] == $rel) { + return $link; + } + } + + return null; + } + + /** + * Get an associative array of links + * + * For example: + * Link: ; rel=front; type="image/jpeg", ; rel=back; type="image/jpeg" + * + * + * var_export($response->getLinks()); + * array( + * array( + * 'url' => 'http:/.../front.jpeg', + * 'rel' => 'back', + * 'type' => 'image/jpeg', + * ) + * ) + * + * + * @return array + */ + public function getLinks() + { + $links = $this->parseParams(); + + foreach ($links as &$link) { + $key = key($link); + unset($link[$key]); + $link['url'] = trim($key, '<> '); + } + + return $links; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/MessageInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/MessageInterface.php new file mode 100644 index 0000000..62bcd43 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/MessageInterface.php @@ -0,0 +1,102 @@ +fieldName = $fieldName; + $this->setFilename($filename); + $this->postname = $postname ? $postname : basename($filename); + $this->contentType = $contentType ?: $this->guessContentType(); + } + + public function setFieldName($name) + { + $this->fieldName = $name; + + return $this; + } + + public function getFieldName() + { + return $this->fieldName; + } + + public function setFilename($filename) + { + // Remove leading @ symbol + if (strpos($filename, '@') === 0) { + $filename = substr($filename, 1); + } + + if (!is_readable($filename)) { + throw new InvalidArgumentException("Unable to open {$filename} for reading"); + } + + $this->filename = $filename; + + return $this; + } + + public function setPostname($postname) + { + $this->postname = $postname; + + return $this; + } + + public function getFilename() + { + return $this->filename; + } + + public function getPostname() + { + return $this->postname; + } + + public function setContentType($type) + { + $this->contentType = $type; + + return $this; + } + + public function getContentType() + { + return $this->contentType; + } + + public function getCurlValue() + { + // PHP 5.5 introduced a CurlFile object that deprecates the old @filename syntax + // See: https://wiki.php.net/rfc/curl-file-upload + if (function_exists('curl_file_create')) { + return curl_file_create($this->filename, $this->contentType, $this->postname); + } + + // Use the old style if using an older version of PHP + $value = "@{$this->filename};filename=" . $this->postname; + if ($this->contentType) { + $value .= ';type=' . $this->contentType; + } + + return $value; + } + + /** + * @deprecated + * @codeCoverageIgnore + */ + public function getCurlString() + { + Version::warn(__METHOD__ . ' is deprecated. Use getCurlValue()'); + return $this->getCurlValue(); + } + + /** + * Determine the Content-Type of the file + */ + protected function guessContentType() + { + return Mimetypes::getInstance()->fromFilename($this->filename) ?: 'application/octet-stream'; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/PostFileInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/PostFileInterface.php new file mode 100644 index 0000000..7f0779d --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/PostFileInterface.php @@ -0,0 +1,83 @@ +method = strtoupper($method); + $this->curlOptions = new Collection(); + $this->setUrl($url); + + if ($headers) { + // Special handling for multi-value headers + foreach ($headers as $key => $value) { + // Deal with collisions with Host and Authorization + if ($key == 'host' || $key == 'Host') { + $this->setHeader($key, $value); + } elseif ($value instanceof HeaderInterface) { + $this->addHeader($key, $value); + } else { + foreach ((array) $value as $v) { + $this->addHeader($key, $v); + } + } + } + } + + $this->setState(self::STATE_NEW); + } + + public function __clone() + { + if ($this->eventDispatcher) { + $this->eventDispatcher = clone $this->eventDispatcher; + } + $this->curlOptions = clone $this->curlOptions; + $this->params = clone $this->params; + $this->url = clone $this->url; + $this->response = $this->responseBody = null; + $this->headers = clone $this->headers; + + $this->setState(RequestInterface::STATE_NEW); + $this->dispatch('request.clone', array('request' => $this)); + } + + /** + * Get the HTTP request as a string + * + * @return string + */ + public function __toString() + { + return $this->getRawHeaders() . "\r\n\r\n"; + } + + /** + * Default method that will throw exceptions if an unsuccessful response is received. + * + * @param Event $event Received + * @throws BadResponseException if the response is not successful + */ + public static function onRequestError(Event $event) + { + $e = BadResponseException::factory($event['request'], $event['response']); + $event['request']->setState(self::STATE_ERROR, array('exception' => $e) + $event->toArray()); + throw $e; + } + + public function setClient(ClientInterface $client) + { + $this->client = $client; + + return $this; + } + + public function getClient() + { + return $this->client; + } + + public function getRawHeaders() + { + $protocolVersion = $this->protocolVersion ?: '1.1'; + + return trim($this->method . ' ' . $this->getResource()) . ' ' + . strtoupper(str_replace('https', 'http', $this->url->getScheme())) + . '/' . $protocolVersion . "\r\n" . implode("\r\n", $this->getHeaderLines()); + } + + public function setUrl($url) + { + if ($url instanceof Url) { + $this->url = $url; + } else { + $this->url = Url::factory($url); + } + + // Update the port and host header + $this->setPort($this->url->getPort()); + + if ($this->url->getUsername() || $this->url->getPassword()) { + $this->setAuth($this->url->getUsername(), $this->url->getPassword()); + // Remove the auth info from the URL + $this->url->setUsername(null); + $this->url->setPassword(null); + } + + return $this; + } + + public function send() + { + if (!$this->client) { + throw new RuntimeException('A client must be set on the request'); + } + + return $this->client->send($this); + } + + public function getResponse() + { + return $this->response; + } + + public function getQuery($asString = false) + { + return $asString + ? (string) $this->url->getQuery() + : $this->url->getQuery(); + } + + public function getMethod() + { + return $this->method; + } + + public function getScheme() + { + return $this->url->getScheme(); + } + + public function setScheme($scheme) + { + $this->url->setScheme($scheme); + + return $this; + } + + public function getHost() + { + return $this->url->getHost(); + } + + public function setHost($host) + { + $this->url->setHost($host); + $this->setPort($this->url->getPort()); + + return $this; + } + + public function getProtocolVersion() + { + return $this->protocolVersion; + } + + public function setProtocolVersion($protocol) + { + $this->protocolVersion = $protocol; + + return $this; + } + + public function getPath() + { + return '/' . ltrim($this->url->getPath(), '/'); + } + + public function setPath($path) + { + $this->url->setPath($path); + + return $this; + } + + public function getPort() + { + return $this->url->getPort(); + } + + public function setPort($port) + { + $this->url->setPort($port); + + // Include the port in the Host header if it is not the default port for the scheme of the URL + $scheme = $this->url->getScheme(); + if ($port && (($scheme == 'http' && $port != 80) || ($scheme == 'https' && $port != 443))) { + $this->headers['host'] = $this->headerFactory->createHeader('Host', $this->url->getHost() . ':' . $port); + } else { + $this->headers['host'] = $this->headerFactory->createHeader('Host', $this->url->getHost()); + } + + return $this; + } + + public function getUsername() + { + return $this->username; + } + + public function getPassword() + { + return $this->password; + } + + public function setAuth($user, $password = '', $scheme = CURLAUTH_BASIC) + { + static $authMap = array( + 'basic' => CURLAUTH_BASIC, + 'digest' => CURLAUTH_DIGEST, + 'ntlm' => CURLAUTH_NTLM, + 'any' => CURLAUTH_ANY + ); + + // If we got false or null, disable authentication + if (!$user) { + $this->password = $this->username = null; + $this->removeHeader('Authorization'); + $this->getCurlOptions()->remove(CURLOPT_HTTPAUTH); + return $this; + } + + if (!is_numeric($scheme)) { + $scheme = strtolower($scheme); + if (!isset($authMap[$scheme])) { + throw new InvalidArgumentException($scheme . ' is not a valid authentication type'); + } + $scheme = $authMap[$scheme]; + } + + $this->username = $user; + $this->password = $password; + + // Bypass CURL when using basic auth to promote connection reuse + if ($scheme == CURLAUTH_BASIC) { + $this->getCurlOptions()->remove(CURLOPT_HTTPAUTH); + $this->setHeader('Authorization', 'Basic ' . base64_encode($this->username . ':' . $this->password)); + } else { + $this->getCurlOptions() + ->set(CURLOPT_HTTPAUTH, $scheme) + ->set(CURLOPT_USERPWD, $this->username . ':' . $this->password); + } + + return $this; + } + + public function getResource() + { + $resource = $this->getPath(); + if ($query = (string) $this->url->getQuery()) { + $resource .= '?' . $query; + } + + return $resource; + } + + public function getUrl($asObject = false) + { + return $asObject ? clone $this->url : (string) $this->url; + } + + public function getState() + { + return $this->state; + } + + public function setState($state, array $context = array()) + { + $oldState = $this->state; + $this->state = $state; + + switch ($state) { + case self::STATE_NEW: + $this->response = null; + break; + case self::STATE_TRANSFER: + if ($oldState !== $state) { + // Fix Content-Length and Transfer-Encoding collisions + if ($this->hasHeader('Transfer-Encoding') && $this->hasHeader('Content-Length')) { + $this->removeHeader('Transfer-Encoding'); + } + $this->dispatch('request.before_send', array('request' => $this)); + } + break; + case self::STATE_COMPLETE: + if ($oldState !== $state) { + $this->processResponse($context); + $this->responseBody = null; + } + break; + case self::STATE_ERROR: + if (isset($context['exception'])) { + $this->dispatch('request.exception', array( + 'request' => $this, + 'response' => isset($context['response']) ? $context['response'] : $this->response, + 'exception' => isset($context['exception']) ? $context['exception'] : null + )); + } + } + + return $this->state; + } + + public function getCurlOptions() + { + return $this->curlOptions; + } + + public function startResponse(Response $response) + { + $this->state = self::STATE_TRANSFER; + $response->setEffectiveUrl((string) $this->getUrl()); + $this->response = $response; + + return $this; + } + + public function setResponse(Response $response, $queued = false) + { + $response->setEffectiveUrl((string) $this->url); + + if ($queued) { + $ed = $this->getEventDispatcher(); + $ed->addListener('request.before_send', $f = function ($e) use ($response, &$f, $ed) { + $e['request']->setResponse($response); + $ed->removeListener('request.before_send', $f); + }, -9999); + } else { + $this->response = $response; + // If a specific response body is specified, then use it instead of the response's body + if ($this->responseBody && !$this->responseBody->getCustomData('default') && !$response->isRedirect()) { + $this->getResponseBody()->write((string) $this->response->getBody()); + } else { + $this->responseBody = $this->response->getBody(); + } + $this->setState(self::STATE_COMPLETE); + } + + return $this; + } + + public function setResponseBody($body) + { + // Attempt to open a file for writing if a string was passed + if (is_string($body)) { + // @codeCoverageIgnoreStart + if (!($body = fopen($body, 'w+'))) { + throw new InvalidArgumentException('Could not open ' . $body . ' for writing'); + } + // @codeCoverageIgnoreEnd + } + + $this->responseBody = EntityBody::factory($body); + + return $this; + } + + public function getResponseBody() + { + if ($this->responseBody === null) { + $this->responseBody = EntityBody::factory()->setCustomData('default', true); + } + + return $this->responseBody; + } + + /** + * Determine if the response body is repeatable (readable + seekable) + * + * @return bool + * @deprecated Use getResponseBody()->isSeekable() + * @codeCoverageIgnore + */ + public function isResponseBodyRepeatable() + { + Version::warn(__METHOD__ . ' is deprecated. Use $request->getResponseBody()->isRepeatable()'); + return !$this->responseBody ? true : $this->responseBody->isRepeatable(); + } + + public function getCookies() + { + if ($cookie = $this->getHeader('Cookie')) { + $data = ParserRegistry::getInstance()->getParser('cookie')->parseCookie($cookie); + return $data['cookies']; + } + + return array(); + } + + public function getCookie($name) + { + $cookies = $this->getCookies(); + + return isset($cookies[$name]) ? $cookies[$name] : null; + } + + public function addCookie($name, $value) + { + if (!$this->hasHeader('Cookie')) { + $this->setHeader('Cookie', "{$name}={$value}"); + } else { + $this->getHeader('Cookie')->add("{$name}={$value}"); + } + + // Always use semicolons to separate multiple cookie headers + $this->getHeader('Cookie')->setGlue(';'); + + return $this; + } + + public function removeCookie($name) + { + if ($cookie = $this->getHeader('Cookie')) { + foreach ($cookie as $cookieValue) { + if (strpos($cookieValue, $name . '=') === 0) { + $cookie->removeValue($cookieValue); + } + } + } + + return $this; + } + + public function setEventDispatcher(EventDispatcherInterface $eventDispatcher) + { + $this->eventDispatcher = $eventDispatcher; + $this->eventDispatcher->addListener('request.error', array(__CLASS__, 'onRequestError'), -255); + + return $this; + } + + public function getEventDispatcher() + { + if (!$this->eventDispatcher) { + $this->setEventDispatcher(new EventDispatcher()); + } + + return $this->eventDispatcher; + } + + public function dispatch($eventName, array $context = array()) + { + $context['request'] = $this; + + return $this->getEventDispatcher()->dispatch($eventName, new Event($context)); + } + + public function addSubscriber(EventSubscriberInterface $subscriber) + { + $this->getEventDispatcher()->addSubscriber($subscriber); + + return $this; + } + + /** + * Get an array containing the request and response for event notifications + * + * @return array + */ + protected function getEventArray() + { + return array( + 'request' => $this, + 'response' => $this->response + ); + } + + /** + * Process a received response + * + * @param array $context Contextual information + * @throws RequestException|BadResponseException on unsuccessful responses + */ + protected function processResponse(array $context = array()) + { + if (!$this->response) { + // If no response, then processResponse shouldn't have been called + $e = new RequestException('Error completing request'); + $e->setRequest($this); + throw $e; + } + + $this->state = self::STATE_COMPLETE; + + // A request was sent, but we don't know if we'll send more or if the final response will be successful + $this->dispatch('request.sent', $this->getEventArray() + $context); + + // Some response processors will remove the response or reset the state (example: ExponentialBackoffPlugin) + if ($this->state == RequestInterface::STATE_COMPLETE) { + + // The request completed, so the HTTP transaction is complete + $this->dispatch('request.complete', $this->getEventArray()); + + // If the response is bad, allow listeners to modify it or throw exceptions. You can change the response by + // modifying the Event object in your listeners or calling setResponse() on the request + if ($this->response->isError()) { + $event = new Event($this->getEventArray()); + $this->getEventDispatcher()->dispatch('request.error', $event); + // Allow events of request.error to quietly change the response + if ($event['response'] !== $this->response) { + $this->response = $event['response']; + } + } + + // If a successful response was received, dispatch an event + if ($this->response->isSuccessful()) { + $this->dispatch('request.success', $this->getEventArray()); + } + } + } + + /** + * @deprecated Use Guzzle\Plugin\Cache\DefaultCanCacheStrategy + * @codeCoverageIgnore + */ + public function canCache() + { + Version::warn(__METHOD__ . ' is deprecated. Use Guzzle\Plugin\Cache\DefaultCanCacheStrategy.'); + if (class_exists('Guzzle\Plugin\Cache\DefaultCanCacheStrategy')) { + $canCache = new \Guzzle\Plugin\Cache\DefaultCanCacheStrategy(); + return $canCache->canCacheRequest($this); + } else { + return false; + } + } + + /** + * @deprecated Use the history plugin (not emitting a warning as this is built-into the RedirectPlugin for now) + * @codeCoverageIgnore + */ + public function setIsRedirect($isRedirect) + { + $this->isRedirect = $isRedirect; + + return $this; + } + + /** + * @deprecated Use the history plugin + * @codeCoverageIgnore + */ + public function isRedirect() + { + Version::warn(__METHOD__ . ' is deprecated. Use the HistoryPlugin to track this.'); + return $this->isRedirect; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/RequestFactory.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/RequestFactory.php new file mode 100644 index 0000000..ba00a76 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/RequestFactory.php @@ -0,0 +1,359 @@ +methods = array_flip(get_class_methods(__CLASS__)); + } + + public function fromMessage($message) + { + $parsed = ParserRegistry::getInstance()->getParser('message')->parseRequest($message); + + if (!$parsed) { + return false; + } + + $request = $this->fromParts($parsed['method'], $parsed['request_url'], + $parsed['headers'], $parsed['body'], $parsed['protocol'], + $parsed['version']); + + // EntityEnclosingRequest adds an "Expect: 100-Continue" header when using a raw request body for PUT or POST + // requests. This factory method should accurately reflect the message, so here we are removing the Expect + // header if one was not supplied in the message. + if (!isset($parsed['headers']['Expect']) && !isset($parsed['headers']['expect'])) { + $request->removeHeader('Expect'); + } + + return $request; + } + + public function fromParts( + $method, + array $urlParts, + $headers = null, + $body = null, + $protocol = 'HTTP', + $protocolVersion = '1.1' + ) { + return $this->create($method, Url::buildUrl($urlParts), $headers, $body) + ->setProtocolVersion($protocolVersion); + } + + public function create($method, $url, $headers = null, $body = null, array $options = array()) + { + $method = strtoupper($method); + + if ($method == 'GET' || $method == 'HEAD' || $method == 'TRACE') { + // Handle non-entity-enclosing request methods + $request = new $this->requestClass($method, $url, $headers); + if ($body) { + // The body is where the response body will be stored + $type = gettype($body); + if ($type == 'string' || $type == 'resource' || $type == 'object') { + $request->setResponseBody($body); + } + } + } else { + // Create an entity enclosing request by default + $request = new $this->entityEnclosingRequestClass($method, $url, $headers); + if ($body || $body === '0') { + // Add POST fields and files to an entity enclosing request if an array is used + if (is_array($body) || $body instanceof Collection) { + // Normalize PHP style cURL uploads with a leading '@' symbol + foreach ($body as $key => $value) { + if (is_string($value) && substr($value, 0, 1) == '@') { + $request->addPostFile($key, $value); + unset($body[$key]); + } + } + // Add the fields if they are still present and not all files + $request->addPostFields($body); + } else { + // Add a raw entity body body to the request + $request->setBody($body, (string) $request->getHeader('Content-Type')); + if ((string) $request->getHeader('Transfer-Encoding') == 'chunked') { + $request->removeHeader('Content-Length'); + } + } + } + } + + if ($options) { + $this->applyOptions($request, $options); + } + + return $request; + } + + /** + * Clone a request while changing the method. Emulates the behavior of + * {@see Guzzle\Http\Message\Request::clone}, but can change the HTTP method. + * + * @param RequestInterface $request Request to clone + * @param string $method Method to set + * + * @return RequestInterface + */ + public function cloneRequestWithMethod(RequestInterface $request, $method) + { + // Create the request with the same client if possible + if ($request->getClient()) { + $cloned = $request->getClient()->createRequest($method, $request->getUrl(), $request->getHeaders()); + } else { + $cloned = $this->create($method, $request->getUrl(), $request->getHeaders()); + } + + $cloned->getCurlOptions()->replace($request->getCurlOptions()->toArray()); + $cloned->setEventDispatcher(clone $request->getEventDispatcher()); + // Ensure that that the Content-Length header is not copied if changing to GET or HEAD + if (!($cloned instanceof EntityEnclosingRequestInterface)) { + $cloned->removeHeader('Content-Length'); + } elseif ($request instanceof EntityEnclosingRequestInterface) { + $cloned->setBody($request->getBody()); + } + $cloned->getParams()->replace($request->getParams()->toArray()); + $cloned->dispatch('request.clone', array('request' => $cloned)); + + return $cloned; + } + + public function applyOptions(RequestInterface $request, array $options = array(), $flags = self::OPTIONS_NONE) + { + // Iterate over each key value pair and attempt to apply a config using function visitors + foreach ($options as $key => $value) { + $method = "visit_{$key}"; + if (isset($this->methods[$method])) { + $this->{$method}($request, $value, $flags); + } + } + } + + protected function visit_headers(RequestInterface $request, $value, $flags) + { + if (!is_array($value)) { + throw new InvalidArgumentException('headers value must be an array'); + } + + if ($flags & self::OPTIONS_AS_DEFAULTS) { + // Merge headers in but do not overwrite existing values + foreach ($value as $key => $header) { + if (!$request->hasHeader($key)) { + $request->setHeader($key, $header); + } + } + } else { + $request->addHeaders($value); + } + } + + protected function visit_body(RequestInterface $request, $value, $flags) + { + if ($request instanceof EntityEnclosingRequestInterface) { + $request->setBody($value); + } else { + throw new InvalidArgumentException('Attempting to set a body on a non-entity-enclosing request'); + } + } + + protected function visit_allow_redirects(RequestInterface $request, $value, $flags) + { + if ($value === false) { + $request->getParams()->set(RedirectPlugin::DISABLE, true); + } + } + + protected function visit_auth(RequestInterface $request, $value, $flags) + { + if (!is_array($value)) { + throw new InvalidArgumentException('auth value must be an array'); + } + + $request->setAuth($value[0], isset($value[1]) ? $value[1] : null, isset($value[2]) ? $value[2] : 'basic'); + } + + protected function visit_query(RequestInterface $request, $value, $flags) + { + if (!is_array($value)) { + throw new InvalidArgumentException('query value must be an array'); + } + + if ($flags & self::OPTIONS_AS_DEFAULTS) { + // Merge query string values in but do not overwrite existing values + $query = $request->getQuery(); + $query->overwriteWith(array_diff_key($value, $query->toArray())); + } else { + $request->getQuery()->overwriteWith($value); + } + } + + protected function visit_cookies(RequestInterface $request, $value, $flags) + { + if (!is_array($value)) { + throw new InvalidArgumentException('cookies value must be an array'); + } + + foreach ($value as $name => $v) { + $request->addCookie($name, $v); + } + } + + protected function visit_events(RequestInterface $request, $value, $flags) + { + if (!is_array($value)) { + throw new InvalidArgumentException('events value must be an array'); + } + + foreach ($value as $name => $method) { + if (is_array($method)) { + $request->getEventDispatcher()->addListener($name, $method[0], $method[1]); + } else { + $request->getEventDispatcher()->addListener($name, $method); + } + } + } + + protected function visit_plugins(RequestInterface $request, $value, $flags) + { + if (!is_array($value)) { + throw new InvalidArgumentException('plugins value must be an array'); + } + + foreach ($value as $plugin) { + $request->addSubscriber($plugin); + } + } + + protected function visit_exceptions(RequestInterface $request, $value, $flags) + { + if ($value === false || $value === 0) { + $dispatcher = $request->getEventDispatcher(); + foreach ($dispatcher->getListeners('request.error') as $listener) { + if (is_array($listener) && $listener[0] == 'Guzzle\Http\Message\Request' && $listener[1] = 'onRequestError') { + $dispatcher->removeListener('request.error', $listener); + break; + } + } + } + } + + protected function visit_save_to(RequestInterface $request, $value, $flags) + { + $request->setResponseBody($value); + } + + protected function visit_params(RequestInterface $request, $value, $flags) + { + if (!is_array($value)) { + throw new InvalidArgumentException('params value must be an array'); + } + + $request->getParams()->overwriteWith($value); + } + + protected function visit_timeout(RequestInterface $request, $value, $flags) + { + if (defined('CURLOPT_TIMEOUT_MS')) { + $request->getCurlOptions()->set(CURLOPT_TIMEOUT_MS, $value * 1000); + } else { + $request->getCurlOptions()->set(CURLOPT_TIMEOUT, $value); + } + } + + protected function visit_connect_timeout(RequestInterface $request, $value, $flags) + { + if (defined('CURLOPT_CONNECTTIMEOUT_MS')) { + $request->getCurlOptions()->set(CURLOPT_CONNECTTIMEOUT_MS, $value * 1000); + } else { + $request->getCurlOptions()->set(CURLOPT_CONNECTTIMEOUT, $value); + } + } + + protected function visit_debug(RequestInterface $request, $value, $flags) + { + if ($value) { + $request->getCurlOptions()->set(CURLOPT_VERBOSE, true); + } + } + + protected function visit_verify(RequestInterface $request, $value, $flags) + { + $curl = $request->getCurlOptions(); + if ($value === true || is_string($value)) { + $curl[CURLOPT_SSL_VERIFYHOST] = 2; + $curl[CURLOPT_SSL_VERIFYPEER] = true; + if ($value !== true) { + $curl[CURLOPT_CAINFO] = $value; + } + } elseif ($value === false) { + unset($curl[CURLOPT_CAINFO]); + $curl[CURLOPT_SSL_VERIFYHOST] = 0; + $curl[CURLOPT_SSL_VERIFYPEER] = false; + } + } + + protected function visit_proxy(RequestInterface $request, $value, $flags) + { + $request->getCurlOptions()->set(CURLOPT_PROXY, $value, $flags); + } + + protected function visit_cert(RequestInterface $request, $value, $flags) + { + if (is_array($value)) { + $request->getCurlOptions()->set(CURLOPT_SSLCERT, $value[0]); + $request->getCurlOptions()->set(CURLOPT_SSLCERTPASSWD, $value[1]); + } else { + $request->getCurlOptions()->set(CURLOPT_SSLCERT, $value); + } + } + + protected function visit_ssl_key(RequestInterface $request, $value, $flags) + { + if (is_array($value)) { + $request->getCurlOptions()->set(CURLOPT_SSLKEY, $value[0]); + $request->getCurlOptions()->set(CURLOPT_SSLKEYPASSWD, $value[1]); + } else { + $request->getCurlOptions()->set(CURLOPT_SSLKEY, $value); + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/RequestFactoryInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/RequestFactoryInterface.php new file mode 100644 index 0000000..6088f10 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Message/RequestFactoryInterface.php @@ -0,0 +1,105 @@ + 'Continue', + 101 => 'Switching Protocols', + 102 => 'Processing', + 200 => 'OK', + 201 => 'Created', + 202 => 'Accepted', + 203 => 'Non-Authoritative Information', + 204 => 'No Content', + 205 => 'Reset Content', + 206 => 'Partial Content', + 207 => 'Multi-Status', + 208 => 'Already Reported', + 226 => 'IM Used', + 300 => 'Multiple Choices', + 301 => 'Moved Permanently', + 302 => 'Found', + 303 => 'See Other', + 304 => 'Not Modified', + 305 => 'Use Proxy', + 307 => 'Temporary Redirect', + 308 => 'Permanent Redirect', + 400 => 'Bad Request', + 401 => 'Unauthorized', + 402 => 'Payment Required', + 403 => 'Forbidden', + 404 => 'Not Found', + 405 => 'Method Not Allowed', + 406 => 'Not Acceptable', + 407 => 'Proxy Authentication Required', + 408 => 'Request Timeout', + 409 => 'Conflict', + 410 => 'Gone', + 411 => 'Length Required', + 412 => 'Precondition Failed', + 413 => 'Request Entity Too Large', + 414 => 'Request-URI Too Long', + 415 => 'Unsupported Media Type', + 416 => 'Requested Range Not Satisfiable', + 417 => 'Expectation Failed', + 422 => 'Unprocessable Entity', + 423 => 'Locked', + 424 => 'Failed Dependency', + 425 => 'Reserved for WebDAV advanced collections expired proposal', + 426 => 'Upgrade required', + 428 => 'Precondition Required', + 429 => 'Too Many Requests', + 431 => 'Request Header Fields Too Large', + 500 => 'Internal Server Error', + 501 => 'Not Implemented', + 502 => 'Bad Gateway', + 503 => 'Service Unavailable', + 504 => 'Gateway Timeout', + 505 => 'HTTP Version Not Supported', + 506 => 'Variant Also Negotiates (Experimental)', + 507 => 'Insufficient Storage', + 508 => 'Loop Detected', + 510 => 'Not Extended', + 511 => 'Network Authentication Required', + ); + + /** @var EntityBodyInterface The response body */ + protected $body; + + /** @var string The reason phrase of the response (human readable code) */ + protected $reasonPhrase; + + /** @var string The status code of the response */ + protected $statusCode; + + /** @var array Information about the request */ + protected $info = array(); + + /** @var string The effective URL that returned this response */ + protected $effectiveUrl; + + /** @var array Cacheable response codes (see RFC 2616:13.4) */ + protected static $cacheResponseCodes = array(200, 203, 206, 300, 301, 410); + + /** + * Create a new Response based on a raw response message + * + * @param string $message Response message + * + * @return self|bool Returns false on error + */ + public static function fromMessage($message) + { + $data = ParserRegistry::getInstance()->getParser('message')->parseResponse($message); + if (!$data) { + return false; + } + + $response = new static($data['code'], $data['headers'], $data['body']); + $response->setProtocol($data['protocol'], $data['version']) + ->setStatus($data['code'], $data['reason_phrase']); + + // Set the appropriate Content-Length if the one set is inaccurate (e.g. setting to X) + $contentLength = (string) $response->getHeader('Content-Length'); + $actualLength = strlen($data['body']); + if (strlen($data['body']) > 0 && $contentLength != $actualLength) { + $response->setHeader('Content-Length', $actualLength); + } + + return $response; + } + + /** + * Construct the response + * + * @param string $statusCode The response status code (e.g. 200, 404, etc) + * @param ToArrayInterface|array $headers The response headers + * @param string|resource|EntityBodyInterface $body The body of the response + * + * @throws BadResponseException if an invalid response code is given + */ + public function __construct($statusCode, $headers = null, $body = null) + { + parent::__construct(); + $this->setStatus($statusCode); + $this->body = EntityBody::factory($body !== null ? $body : ''); + + if ($headers) { + if (is_array($headers)) { + $this->setHeaders($headers); + } elseif ($headers instanceof ToArrayInterface) { + $this->setHeaders($headers->toArray()); + } else { + throw new BadResponseException('Invalid headers argument received'); + } + } + } + + /** + * @return string + */ + public function __toString() + { + return $this->getMessage(); + } + + public function serialize() + { + return json_encode(array( + 'status' => $this->statusCode, + 'body' => (string) $this->body, + 'headers' => $this->headers->toArray() + )); + } + + public function unserialize($serialize) + { + $data = json_decode($serialize, true); + $this->__construct($data['status'], $data['headers'], $data['body']); + } + + /** + * Get the response entity body + * + * @param bool $asString Set to TRUE to return a string of the body rather than a full body object + * + * @return EntityBodyInterface|string + */ + public function getBody($asString = false) + { + return $asString ? (string) $this->body : $this->body; + } + + /** + * Set the response entity body + * + * @param EntityBodyInterface|string $body Body to set + * + * @return self + */ + public function setBody($body) + { + $this->body = EntityBody::factory($body); + + return $this; + } + + /** + * Set the protocol and protocol version of the response + * + * @param string $protocol Response protocol + * @param string $version Protocol version + * + * @return self + */ + public function setProtocol($protocol, $version) + { + $this->protocol = $protocol; + $this->protocolVersion = $version; + + return $this; + } + + /** + * Get the protocol used for the response (e.g. HTTP) + * + * @return string + */ + public function getProtocol() + { + return $this->protocol; + } + + /** + * Get the HTTP protocol version + * + * @return string + */ + public function getProtocolVersion() + { + return $this->protocolVersion; + } + + /** + * Get a cURL transfer information + * + * @param string $key A single statistic to check + * + * @return array|string|null Returns all stats if no key is set, a single stat if a key is set, or null if a key + * is set and not found + * @link http://www.php.net/manual/en/function.curl-getinfo.php + */ + public function getInfo($key = null) + { + if ($key === null) { + return $this->info; + } elseif (array_key_exists($key, $this->info)) { + return $this->info[$key]; + } else { + return null; + } + } + + /** + * Set the transfer information + * + * @param array $info Array of cURL transfer stats + * + * @return self + */ + public function setInfo(array $info) + { + $this->info = $info; + + return $this; + } + + /** + * Set the response status + * + * @param int $statusCode Response status code to set + * @param string $reasonPhrase Response reason phrase + * + * @return self + * @throws BadResponseException when an invalid response code is received + */ + public function setStatus($statusCode, $reasonPhrase = '') + { + $this->statusCode = (int) $statusCode; + + if (!$reasonPhrase && isset(self::$statusTexts[$this->statusCode])) { + $this->reasonPhrase = self::$statusTexts[$this->statusCode]; + } else { + $this->reasonPhrase = $reasonPhrase; + } + + return $this; + } + + /** + * Get the response status code + * + * @return integer + */ + public function getStatusCode() + { + return $this->statusCode; + } + + /** + * Get the entire response as a string + * + * @return string + */ + public function getMessage() + { + $message = $this->getRawHeaders(); + + // Only include the body in the message if the size is < 2MB + $size = $this->body->getSize(); + if ($size < 2097152) { + $message .= (string) $this->body; + } + + return $message; + } + + /** + * Get the the raw message headers as a string + * + * @return string + */ + public function getRawHeaders() + { + $headers = 'HTTP/1.1 ' . $this->statusCode . ' ' . $this->reasonPhrase . "\r\n"; + $lines = $this->getHeaderLines(); + if (!empty($lines)) { + $headers .= implode("\r\n", $lines) . "\r\n"; + } + + return $headers . "\r\n"; + } + + /** + * Get the response reason phrase- a human readable version of the numeric + * status code + * + * @return string + */ + public function getReasonPhrase() + { + return $this->reasonPhrase; + } + + /** + * Get the Accept-Ranges HTTP header + * + * @return string Returns what partial content range types this server supports. + */ + public function getAcceptRanges() + { + return (string) $this->getHeader('Accept-Ranges'); + } + + /** + * Calculate the age of the response + * + * @return integer + */ + public function calculateAge() + { + $age = $this->getHeader('Age'); + + if ($age === null && $this->getDate()) { + $age = time() - strtotime($this->getDate()); + } + + return $age === null ? null : (int) (string) $age; + } + + /** + * Get the Age HTTP header + * + * @return integer|null Returns the age the object has been in a proxy cache in seconds. + */ + public function getAge() + { + return (string) $this->getHeader('Age'); + } + + /** + * Get the Allow HTTP header + * + * @return string|null Returns valid actions for a specified resource. To be used for a 405 Method not allowed. + */ + public function getAllow() + { + return (string) $this->getHeader('Allow'); + } + + /** + * Check if an HTTP method is allowed by checking the Allow response header + * + * @param string $method Method to check + * + * @return bool + */ + public function isMethodAllowed($method) + { + $allow = $this->getHeader('Allow'); + if ($allow) { + foreach (explode(',', $allow) as $allowable) { + if (!strcasecmp(trim($allowable), $method)) { + return true; + } + } + } + + return false; + } + + /** + * Get the Cache-Control HTTP header + * + * @return string + */ + public function getCacheControl() + { + return (string) $this->getHeader('Cache-Control'); + } + + /** + * Get the Connection HTTP header + * + * @return string + */ + public function getConnection() + { + return (string) $this->getHeader('Connection'); + } + + /** + * Get the Content-Encoding HTTP header + * + * @return string|null + */ + public function getContentEncoding() + { + return (string) $this->getHeader('Content-Encoding'); + } + + /** + * Get the Content-Language HTTP header + * + * @return string|null Returns the language the content is in. + */ + public function getContentLanguage() + { + return (string) $this->getHeader('Content-Language'); + } + + /** + * Get the Content-Length HTTP header + * + * @return integer Returns the length of the response body in bytes + */ + public function getContentLength() + { + return (int) (string) $this->getHeader('Content-Length'); + } + + /** + * Get the Content-Location HTTP header + * + * @return string|null Returns an alternate location for the returned data (e.g /index.htm) + */ + public function getContentLocation() + { + return (string) $this->getHeader('Content-Location'); + } + + /** + * Get the Content-Disposition HTTP header + * + * @return string|null Returns the Content-Disposition header + */ + public function getContentDisposition() + { + return (string) $this->getHeader('Content-Disposition'); + } + + /** + * Get the Content-MD5 HTTP header + * + * @return string|null Returns a Base64-encoded binary MD5 sum of the content of the response. + */ + public function getContentMd5() + { + return (string) $this->getHeader('Content-MD5'); + } + + /** + * Get the Content-Range HTTP header + * + * @return string Returns where in a full body message this partial message belongs (e.g. bytes 21010-47021/47022). + */ + public function getContentRange() + { + return (string) $this->getHeader('Content-Range'); + } + + /** + * Get the Content-Type HTTP header + * + * @return string Returns the mime type of this content. + */ + public function getContentType() + { + return (string) $this->getHeader('Content-Type'); + } + + /** + * Checks if the Content-Type is of a certain type. This is useful if the + * Content-Type header contains charset information and you need to know if + * the Content-Type matches a particular type. + * + * @param string $type Content type to check against + * + * @return bool + */ + public function isContentType($type) + { + return stripos($this->getHeader('Content-Type'), $type) !== false; + } + + /** + * Get the Date HTTP header + * + * @return string|null Returns the date and time that the message was sent. + */ + public function getDate() + { + return (string) $this->getHeader('Date'); + } + + /** + * Get the ETag HTTP header + * + * @return string|null Returns an identifier for a specific version of a resource, often a Message digest. + */ + public function getEtag() + { + return (string) $this->getHeader('ETag'); + } + + /** + * Get the Expires HTTP header + * + * @return string|null Returns the date/time after which the response is considered stale. + */ + public function getExpires() + { + return (string) $this->getHeader('Expires'); + } + + /** + * Get the Last-Modified HTTP header + * + * @return string|null Returns the last modified date for the requested object, in RFC 2822 format + * (e.g. Tue, 15 Nov 1994 12:45:26 GMT) + */ + public function getLastModified() + { + return (string) $this->getHeader('Last-Modified'); + } + + /** + * Get the Location HTTP header + * + * @return string|null Used in redirection, or when a new resource has been created. + */ + public function getLocation() + { + return (string) $this->getHeader('Location'); + } + + /** + * Get the Pragma HTTP header + * + * @return Header|null Returns the implementation-specific headers that may have various effects anywhere along + * the request-response chain. + */ + public function getPragma() + { + return (string) $this->getHeader('Pragma'); + } + + /** + * Get the Proxy-Authenticate HTTP header + * + * @return string|null Authentication to access the proxy (e.g. Basic) + */ + public function getProxyAuthenticate() + { + return (string) $this->getHeader('Proxy-Authenticate'); + } + + /** + * Get the Retry-After HTTP header + * + * @return int|null If an entity is temporarily unavailable, this instructs the client to try again after a + * specified period of time. + */ + public function getRetryAfter() + { + return (string) $this->getHeader('Retry-After'); + } + + /** + * Get the Server HTTP header + * + * @return string|null A name for the server + */ + public function getServer() + { + return (string) $this->getHeader('Server'); + } + + /** + * Get the Set-Cookie HTTP header + * + * @return string|null An HTTP cookie. + */ + public function getSetCookie() + { + return (string) $this->getHeader('Set-Cookie'); + } + + /** + * Get the Trailer HTTP header + * + * @return string|null The Trailer general field value indicates that the given set of header fields is present in + * the trailer of a message encoded with chunked transfer-coding. + */ + public function getTrailer() + { + return (string) $this->getHeader('Trailer'); + } + + /** + * Get the Transfer-Encoding HTTP header + * + * @return string|null The form of encoding used to safely transfer the entity to the user + */ + public function getTransferEncoding() + { + return (string) $this->getHeader('Transfer-Encoding'); + } + + /** + * Get the Vary HTTP header + * + * @return string|null Tells downstream proxies how to match future request headers to decide whether the cached + * response can be used rather than requesting a fresh one from the origin server. + */ + public function getVary() + { + return (string) $this->getHeader('Vary'); + } + + /** + * Get the Via HTTP header + * + * @return string|null Informs the client of proxies through which the response was sent. + */ + public function getVia() + { + return (string) $this->getHeader('Via'); + } + + /** + * Get the Warning HTTP header + * + * @return string|null A general warning about possible problems with the entity body + */ + public function getWarning() + { + return (string) $this->getHeader('Warning'); + } + + /** + * Get the WWW-Authenticate HTTP header + * + * @return string|null Indicates the authentication scheme that should be used to access the requested entity + */ + public function getWwwAuthenticate() + { + return (string) $this->getHeader('WWW-Authenticate'); + } + + /** + * Checks if HTTP Status code is a Client Error (4xx) + * + * @return bool + */ + public function isClientError() + { + return $this->statusCode >= 400 && $this->statusCode < 500; + } + + /** + * Checks if HTTP Status code is Server OR Client Error (4xx or 5xx) + * + * @return boolean + */ + public function isError() + { + return $this->isClientError() || $this->isServerError(); + } + + /** + * Checks if HTTP Status code is Information (1xx) + * + * @return bool + */ + public function isInformational() + { + return $this->statusCode < 200; + } + + /** + * Checks if HTTP Status code is a Redirect (3xx) + * + * @return bool + */ + public function isRedirect() + { + return $this->statusCode >= 300 && $this->statusCode < 400; + } + + /** + * Checks if HTTP Status code is Server Error (5xx) + * + * @return bool + */ + public function isServerError() + { + return $this->statusCode >= 500 && $this->statusCode < 600; + } + + /** + * Checks if HTTP Status code is Successful (2xx | 304) + * + * @return bool + */ + public function isSuccessful() + { + return ($this->statusCode >= 200 && $this->statusCode < 300) || $this->statusCode == 304; + } + + /** + * Check if the response can be cached based on the response headers + * + * @return bool Returns TRUE if the response can be cached or false if not + */ + public function canCache() + { + // Check if the response is cacheable based on the code + if (!in_array((int) $this->getStatusCode(), self::$cacheResponseCodes)) { + return false; + } + + // Make sure a valid body was returned and can be cached + if ((!$this->getBody()->isReadable() || !$this->getBody()->isSeekable()) + && ($this->getContentLength() > 0 || $this->getTransferEncoding() == 'chunked')) { + return false; + } + + // Never cache no-store resources (this is a private cache, so private + // can be cached) + if ($this->getHeader('Cache-Control') && $this->getHeader('Cache-Control')->hasDirective('no-store')) { + return false; + } + + return $this->isFresh() || $this->getFreshness() === null || $this->canValidate(); + } + + /** + * Gets the number of seconds from the current time in which this response is still considered fresh + * + * @return int|null Returns the number of seconds + */ + public function getMaxAge() + { + if ($header = $this->getHeader('Cache-Control')) { + // s-max-age, then max-age, then Expires + if ($age = $header->getDirective('s-maxage')) { + return $age; + } + if ($age = $header->getDirective('max-age')) { + return $age; + } + } + + if ($this->getHeader('Expires')) { + return strtotime($this->getExpires()) - time(); + } + + return null; + } + + /** + * Check if the response is considered fresh. + * + * A response is considered fresh when its age is less than or equal to the freshness lifetime (maximum age) of the + * response. + * + * @return bool|null + */ + public function isFresh() + { + $fresh = $this->getFreshness(); + + return $fresh === null ? null : $fresh >= 0; + } + + /** + * Check if the response can be validated against the origin server using a conditional GET request. + * + * @return bool + */ + public function canValidate() + { + return $this->getEtag() || $this->getLastModified(); + } + + /** + * Get the freshness of the response by returning the difference of the maximum lifetime of the response and the + * age of the response (max-age - age). + * + * Freshness values less than 0 mean that the response is no longer fresh and is ABS(freshness) seconds expired. + * Freshness values of greater than zero is the number of seconds until the response is no longer fresh. A NULL + * result means that no freshness information is available. + * + * @return int + */ + public function getFreshness() + { + $maxAge = $this->getMaxAge(); + $age = $this->calculateAge(); + + return $maxAge && $age ? ($maxAge - $age) : null; + } + + /** + * Parse the JSON response body and return an array + * + * @return array|string|int|bool|float + * @throws RuntimeException if the response body is not in JSON format + */ + public function json() + { + $data = json_decode((string) $this->body, true); + if (JSON_ERROR_NONE !== json_last_error()) { + throw new RuntimeException('Unable to parse response body into JSON: ' . json_last_error()); + } + + return $data === null ? array() : $data; + } + + /** + * Parse the XML response body and return a \SimpleXMLElement. + * + * In order to prevent XXE attacks, this method disables loading external + * entities. If you rely on external entities, then you must parse the + * XML response manually by accessing the response body directly. + * + * @return \SimpleXMLElement + * @throws RuntimeException if the response body is not in XML format + * @link http://websec.io/2012/08/27/Preventing-XXE-in-PHP.html + */ + public function xml() + { + $errorMessage = null; + $internalErrors = libxml_use_internal_errors(true); + $disableEntities = libxml_disable_entity_loader(true); + libxml_clear_errors(); + + try { + $xml = new \SimpleXMLElement((string) $this->body ?: '', LIBXML_NONET); + if ($error = libxml_get_last_error()) { + $errorMessage = $error->message; + } + } catch (\Exception $e) { + $errorMessage = $e->getMessage(); + } + + libxml_clear_errors(); + libxml_use_internal_errors($internalErrors); + libxml_disable_entity_loader($disableEntities); + + if ($errorMessage) { + throw new RuntimeException('Unable to parse response body into XML: ' . $errorMessage); + } + + return $xml; + } + + /** + * Get the redirect count of this response + * + * @return int + */ + public function getRedirectCount() + { + return (int) $this->params->get(RedirectPlugin::REDIRECT_COUNT); + } + + /** + * Set the effective URL that resulted in this response (e.g. the last redirect URL) + * + * @param string $url The effective URL + * + * @return self + */ + public function setEffectiveUrl($url) + { + $this->effectiveUrl = $url; + + return $this; + } + + /** + * Get the effective URL that resulted in this response (e.g. the last redirect URL) + * + * @return string + */ + public function getEffectiveUrl() + { + return $this->effectiveUrl; + } + + /** + * @deprecated + * @codeCoverageIgnore + */ + public function getPreviousResponse() + { + Version::warn(__METHOD__ . ' is deprecated. Use the HistoryPlugin.'); + return null; + } + + /** + * @deprecated + * @codeCoverageIgnore + */ + public function setRequest($request) + { + Version::warn(__METHOD__ . ' is deprecated'); + return $this; + } + + /** + * @deprecated + * @codeCoverageIgnore + */ + public function getRequest() + { + Version::warn(__METHOD__ . ' is deprecated'); + return null; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Mimetypes.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Mimetypes.php new file mode 100644 index 0000000..d71586a --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Mimetypes.php @@ -0,0 +1,962 @@ + 'text/vnd.in3d.3dml', + '3g2' => 'video/3gpp2', + '3gp' => 'video/3gpp', + '7z' => 'application/x-7z-compressed', + 'aab' => 'application/x-authorware-bin', + 'aac' => 'audio/x-aac', + 'aam' => 'application/x-authorware-map', + 'aas' => 'application/x-authorware-seg', + 'abw' => 'application/x-abiword', + 'ac' => 'application/pkix-attr-cert', + 'acc' => 'application/vnd.americandynamics.acc', + 'ace' => 'application/x-ace-compressed', + 'acu' => 'application/vnd.acucobol', + 'acutc' => 'application/vnd.acucorp', + 'adp' => 'audio/adpcm', + 'aep' => 'application/vnd.audiograph', + 'afm' => 'application/x-font-type1', + 'afp' => 'application/vnd.ibm.modcap', + 'ahead' => 'application/vnd.ahead.space', + 'ai' => 'application/postscript', + 'aif' => 'audio/x-aiff', + 'aifc' => 'audio/x-aiff', + 'aiff' => 'audio/x-aiff', + 'air' => 'application/vnd.adobe.air-application-installer-package+zip', + 'ait' => 'application/vnd.dvb.ait', + 'ami' => 'application/vnd.amiga.ami', + 'apk' => 'application/vnd.android.package-archive', + 'application' => 'application/x-ms-application', + 'apr' => 'application/vnd.lotus-approach', + 'asa' => 'text/plain', + 'asax' => 'application/octet-stream', + 'asc' => 'application/pgp-signature', + 'ascx' => 'text/plain', + 'asf' => 'video/x-ms-asf', + 'ashx' => 'text/plain', + 'asm' => 'text/x-asm', + 'asmx' => 'text/plain', + 'aso' => 'application/vnd.accpac.simply.aso', + 'asp' => 'text/plain', + 'aspx' => 'text/plain', + 'asx' => 'video/x-ms-asf', + 'atc' => 'application/vnd.acucorp', + 'atom' => 'application/atom+xml', + 'atomcat' => 'application/atomcat+xml', + 'atomsvc' => 'application/atomsvc+xml', + 'atx' => 'application/vnd.antix.game-component', + 'au' => 'audio/basic', + 'avi' => 'video/x-msvideo', + 'aw' => 'application/applixware', + 'axd' => 'text/plain', + 'azf' => 'application/vnd.airzip.filesecure.azf', + 'azs' => 'application/vnd.airzip.filesecure.azs', + 'azw' => 'application/vnd.amazon.ebook', + 'bat' => 'application/x-msdownload', + 'bcpio' => 'application/x-bcpio', + 'bdf' => 'application/x-font-bdf', + 'bdm' => 'application/vnd.syncml.dm+wbxml', + 'bed' => 'application/vnd.realvnc.bed', + 'bh2' => 'application/vnd.fujitsu.oasysprs', + 'bin' => 'application/octet-stream', + 'bmi' => 'application/vnd.bmi', + 'bmp' => 'image/bmp', + 'book' => 'application/vnd.framemaker', + 'box' => 'application/vnd.previewsystems.box', + 'boz' => 'application/x-bzip2', + 'bpk' => 'application/octet-stream', + 'btif' => 'image/prs.btif', + 'bz' => 'application/x-bzip', + 'bz2' => 'application/x-bzip2', + 'c' => 'text/x-c', + 'c11amc' => 'application/vnd.cluetrust.cartomobile-config', + 'c11amz' => 'application/vnd.cluetrust.cartomobile-config-pkg', + 'c4d' => 'application/vnd.clonk.c4group', + 'c4f' => 'application/vnd.clonk.c4group', + 'c4g' => 'application/vnd.clonk.c4group', + 'c4p' => 'application/vnd.clonk.c4group', + 'c4u' => 'application/vnd.clonk.c4group', + 'cab' => 'application/vnd.ms-cab-compressed', + 'car' => 'application/vnd.curl.car', + 'cat' => 'application/vnd.ms-pki.seccat', + 'cc' => 'text/x-c', + 'cct' => 'application/x-director', + 'ccxml' => 'application/ccxml+xml', + 'cdbcmsg' => 'application/vnd.contact.cmsg', + 'cdf' => 'application/x-netcdf', + 'cdkey' => 'application/vnd.mediastation.cdkey', + 'cdmia' => 'application/cdmi-capability', + 'cdmic' => 'application/cdmi-container', + 'cdmid' => 'application/cdmi-domain', + 'cdmio' => 'application/cdmi-object', + 'cdmiq' => 'application/cdmi-queue', + 'cdx' => 'chemical/x-cdx', + 'cdxml' => 'application/vnd.chemdraw+xml', + 'cdy' => 'application/vnd.cinderella', + 'cer' => 'application/pkix-cert', + 'cfc' => 'application/x-coldfusion', + 'cfm' => 'application/x-coldfusion', + 'cgm' => 'image/cgm', + 'chat' => 'application/x-chat', + 'chm' => 'application/vnd.ms-htmlhelp', + 'chrt' => 'application/vnd.kde.kchart', + 'cif' => 'chemical/x-cif', + 'cii' => 'application/vnd.anser-web-certificate-issue-initiation', + 'cil' => 'application/vnd.ms-artgalry', + 'cla' => 'application/vnd.claymore', + 'class' => 'application/java-vm', + 'clkk' => 'application/vnd.crick.clicker.keyboard', + 'clkp' => 'application/vnd.crick.clicker.palette', + 'clkt' => 'application/vnd.crick.clicker.template', + 'clkw' => 'application/vnd.crick.clicker.wordbank', + 'clkx' => 'application/vnd.crick.clicker', + 'clp' => 'application/x-msclip', + 'cmc' => 'application/vnd.cosmocaller', + 'cmdf' => 'chemical/x-cmdf', + 'cml' => 'chemical/x-cml', + 'cmp' => 'application/vnd.yellowriver-custom-menu', + 'cmx' => 'image/x-cmx', + 'cod' => 'application/vnd.rim.cod', + 'com' => 'application/x-msdownload', + 'conf' => 'text/plain', + 'cpio' => 'application/x-cpio', + 'cpp' => 'text/x-c', + 'cpt' => 'application/mac-compactpro', + 'crd' => 'application/x-mscardfile', + 'crl' => 'application/pkix-crl', + 'crt' => 'application/x-x509-ca-cert', + 'cryptonote' => 'application/vnd.rig.cryptonote', + 'cs' => 'text/plain', + 'csh' => 'application/x-csh', + 'csml' => 'chemical/x-csml', + 'csp' => 'application/vnd.commonspace', + 'css' => 'text/css', + 'cst' => 'application/x-director', + 'csv' => 'text/csv', + 'cu' => 'application/cu-seeme', + 'curl' => 'text/vnd.curl', + 'cww' => 'application/prs.cww', + 'cxt' => 'application/x-director', + 'cxx' => 'text/x-c', + 'dae' => 'model/vnd.collada+xml', + 'daf' => 'application/vnd.mobius.daf', + 'dataless' => 'application/vnd.fdsn.seed', + 'davmount' => 'application/davmount+xml', + 'dcr' => 'application/x-director', + 'dcurl' => 'text/vnd.curl.dcurl', + 'dd2' => 'application/vnd.oma.dd2+xml', + 'ddd' => 'application/vnd.fujixerox.ddd', + 'deb' => 'application/x-debian-package', + 'def' => 'text/plain', + 'deploy' => 'application/octet-stream', + 'der' => 'application/x-x509-ca-cert', + 'dfac' => 'application/vnd.dreamfactory', + 'dic' => 'text/x-c', + 'dir' => 'application/x-director', + 'dis' => 'application/vnd.mobius.dis', + 'dist' => 'application/octet-stream', + 'distz' => 'application/octet-stream', + 'djv' => 'image/vnd.djvu', + 'djvu' => 'image/vnd.djvu', + 'dll' => 'application/x-msdownload', + 'dmg' => 'application/octet-stream', + 'dms' => 'application/octet-stream', + 'dna' => 'application/vnd.dna', + 'doc' => 'application/msword', + 'docm' => 'application/vnd.ms-word.document.macroenabled.12', + 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'dot' => 'application/msword', + 'dotm' => 'application/vnd.ms-word.template.macroenabled.12', + 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', + 'dp' => 'application/vnd.osgi.dp', + 'dpg' => 'application/vnd.dpgraph', + 'dra' => 'audio/vnd.dra', + 'dsc' => 'text/prs.lines.tag', + 'dssc' => 'application/dssc+der', + 'dtb' => 'application/x-dtbook+xml', + 'dtd' => 'application/xml-dtd', + 'dts' => 'audio/vnd.dts', + 'dtshd' => 'audio/vnd.dts.hd', + 'dump' => 'application/octet-stream', + 'dvi' => 'application/x-dvi', + 'dwf' => 'model/vnd.dwf', + 'dwg' => 'image/vnd.dwg', + 'dxf' => 'image/vnd.dxf', + 'dxp' => 'application/vnd.spotfire.dxp', + 'dxr' => 'application/x-director', + 'ecelp4800' => 'audio/vnd.nuera.ecelp4800', + 'ecelp7470' => 'audio/vnd.nuera.ecelp7470', + 'ecelp9600' => 'audio/vnd.nuera.ecelp9600', + 'ecma' => 'application/ecmascript', + 'edm' => 'application/vnd.novadigm.edm', + 'edx' => 'application/vnd.novadigm.edx', + 'efif' => 'application/vnd.picsel', + 'ei6' => 'application/vnd.pg.osasli', + 'elc' => 'application/octet-stream', + 'eml' => 'message/rfc822', + 'emma' => 'application/emma+xml', + 'eol' => 'audio/vnd.digital-winds', + 'eot' => 'application/vnd.ms-fontobject', + 'eps' => 'application/postscript', + 'epub' => 'application/epub+zip', + 'es3' => 'application/vnd.eszigno3+xml', + 'esf' => 'application/vnd.epson.esf', + 'et3' => 'application/vnd.eszigno3+xml', + 'etx' => 'text/x-setext', + 'exe' => 'application/x-msdownload', + 'exi' => 'application/exi', + 'ext' => 'application/vnd.novadigm.ext', + 'ez' => 'application/andrew-inset', + 'ez2' => 'application/vnd.ezpix-album', + 'ez3' => 'application/vnd.ezpix-package', + 'f' => 'text/x-fortran', + 'f4v' => 'video/x-f4v', + 'f77' => 'text/x-fortran', + 'f90' => 'text/x-fortran', + 'fbs' => 'image/vnd.fastbidsheet', + 'fcs' => 'application/vnd.isac.fcs', + 'fdf' => 'application/vnd.fdf', + 'fe_launch' => 'application/vnd.denovo.fcselayout-link', + 'fg5' => 'application/vnd.fujitsu.oasysgp', + 'fgd' => 'application/x-director', + 'fh' => 'image/x-freehand', + 'fh4' => 'image/x-freehand', + 'fh5' => 'image/x-freehand', + 'fh7' => 'image/x-freehand', + 'fhc' => 'image/x-freehand', + 'fig' => 'application/x-xfig', + 'fli' => 'video/x-fli', + 'flo' => 'application/vnd.micrografx.flo', + 'flv' => 'video/x-flv', + 'flw' => 'application/vnd.kde.kivio', + 'flx' => 'text/vnd.fmi.flexstor', + 'fly' => 'text/vnd.fly', + 'fm' => 'application/vnd.framemaker', + 'fnc' => 'application/vnd.frogans.fnc', + 'for' => 'text/x-fortran', + 'fpx' => 'image/vnd.fpx', + 'frame' => 'application/vnd.framemaker', + 'fsc' => 'application/vnd.fsc.weblaunch', + 'fst' => 'image/vnd.fst', + 'ftc' => 'application/vnd.fluxtime.clip', + 'fti' => 'application/vnd.anser-web-funds-transfer-initiation', + 'fvt' => 'video/vnd.fvt', + 'fxp' => 'application/vnd.adobe.fxp', + 'fxpl' => 'application/vnd.adobe.fxp', + 'fzs' => 'application/vnd.fuzzysheet', + 'g2w' => 'application/vnd.geoplan', + 'g3' => 'image/g3fax', + 'g3w' => 'application/vnd.geospace', + 'gac' => 'application/vnd.groove-account', + 'gdl' => 'model/vnd.gdl', + 'geo' => 'application/vnd.dynageo', + 'gex' => 'application/vnd.geometry-explorer', + 'ggb' => 'application/vnd.geogebra.file', + 'ggt' => 'application/vnd.geogebra.tool', + 'ghf' => 'application/vnd.groove-help', + 'gif' => 'image/gif', + 'gim' => 'application/vnd.groove-identity-message', + 'gmx' => 'application/vnd.gmx', + 'gnumeric' => 'application/x-gnumeric', + 'gph' => 'application/vnd.flographit', + 'gqf' => 'application/vnd.grafeq', + 'gqs' => 'application/vnd.grafeq', + 'gram' => 'application/srgs', + 'gre' => 'application/vnd.geometry-explorer', + 'grv' => 'application/vnd.groove-injector', + 'grxml' => 'application/srgs+xml', + 'gsf' => 'application/x-font-ghostscript', + 'gtar' => 'application/x-gtar', + 'gtm' => 'application/vnd.groove-tool-message', + 'gtw' => 'model/vnd.gtw', + 'gv' => 'text/vnd.graphviz', + 'gxt' => 'application/vnd.geonext', + 'h' => 'text/x-c', + 'h261' => 'video/h261', + 'h263' => 'video/h263', + 'h264' => 'video/h264', + 'hal' => 'application/vnd.hal+xml', + 'hbci' => 'application/vnd.hbci', + 'hdf' => 'application/x-hdf', + 'hh' => 'text/x-c', + 'hlp' => 'application/winhlp', + 'hpgl' => 'application/vnd.hp-hpgl', + 'hpid' => 'application/vnd.hp-hpid', + 'hps' => 'application/vnd.hp-hps', + 'hqx' => 'application/mac-binhex40', + 'hta' => 'application/octet-stream', + 'htc' => 'text/html', + 'htke' => 'application/vnd.kenameaapp', + 'htm' => 'text/html', + 'html' => 'text/html', + 'hvd' => 'application/vnd.yamaha.hv-dic', + 'hvp' => 'application/vnd.yamaha.hv-voice', + 'hvs' => 'application/vnd.yamaha.hv-script', + 'i2g' => 'application/vnd.intergeo', + 'icc' => 'application/vnd.iccprofile', + 'ice' => 'x-conference/x-cooltalk', + 'icm' => 'application/vnd.iccprofile', + 'ico' => 'image/x-icon', + 'ics' => 'text/calendar', + 'ief' => 'image/ief', + 'ifb' => 'text/calendar', + 'ifm' => 'application/vnd.shana.informed.formdata', + 'iges' => 'model/iges', + 'igl' => 'application/vnd.igloader', + 'igm' => 'application/vnd.insors.igm', + 'igs' => 'model/iges', + 'igx' => 'application/vnd.micrografx.igx', + 'iif' => 'application/vnd.shana.informed.interchange', + 'imp' => 'application/vnd.accpac.simply.imp', + 'ims' => 'application/vnd.ms-ims', + 'in' => 'text/plain', + 'ini' => 'text/plain', + 'ipfix' => 'application/ipfix', + 'ipk' => 'application/vnd.shana.informed.package', + 'irm' => 'application/vnd.ibm.rights-management', + 'irp' => 'application/vnd.irepository.package+xml', + 'iso' => 'application/octet-stream', + 'itp' => 'application/vnd.shana.informed.formtemplate', + 'ivp' => 'application/vnd.immervision-ivp', + 'ivu' => 'application/vnd.immervision-ivu', + 'jad' => 'text/vnd.sun.j2me.app-descriptor', + 'jam' => 'application/vnd.jam', + 'jar' => 'application/java-archive', + 'java' => 'text/x-java-source', + 'jisp' => 'application/vnd.jisp', + 'jlt' => 'application/vnd.hp-jlyt', + 'jnlp' => 'application/x-java-jnlp-file', + 'joda' => 'application/vnd.joost.joda-archive', + 'jpe' => 'image/jpeg', + 'jpeg' => 'image/jpeg', + 'jpg' => 'image/jpeg', + 'jpgm' => 'video/jpm', + 'jpgv' => 'video/jpeg', + 'jpm' => 'video/jpm', + 'js' => 'text/javascript', + 'json' => 'application/json', + 'kar' => 'audio/midi', + 'karbon' => 'application/vnd.kde.karbon', + 'kfo' => 'application/vnd.kde.kformula', + 'kia' => 'application/vnd.kidspiration', + 'kml' => 'application/vnd.google-earth.kml+xml', + 'kmz' => 'application/vnd.google-earth.kmz', + 'kne' => 'application/vnd.kinar', + 'knp' => 'application/vnd.kinar', + 'kon' => 'application/vnd.kde.kontour', + 'kpr' => 'application/vnd.kde.kpresenter', + 'kpt' => 'application/vnd.kde.kpresenter', + 'ksp' => 'application/vnd.kde.kspread', + 'ktr' => 'application/vnd.kahootz', + 'ktx' => 'image/ktx', + 'ktz' => 'application/vnd.kahootz', + 'kwd' => 'application/vnd.kde.kword', + 'kwt' => 'application/vnd.kde.kword', + 'lasxml' => 'application/vnd.las.las+xml', + 'latex' => 'application/x-latex', + 'lbd' => 'application/vnd.llamagraphics.life-balance.desktop', + 'lbe' => 'application/vnd.llamagraphics.life-balance.exchange+xml', + 'les' => 'application/vnd.hhe.lesson-player', + 'lha' => 'application/octet-stream', + 'link66' => 'application/vnd.route66.link66+xml', + 'list' => 'text/plain', + 'list3820' => 'application/vnd.ibm.modcap', + 'listafp' => 'application/vnd.ibm.modcap', + 'log' => 'text/plain', + 'lostxml' => 'application/lost+xml', + 'lrf' => 'application/octet-stream', + 'lrm' => 'application/vnd.ms-lrm', + 'ltf' => 'application/vnd.frogans.ltf', + 'lvp' => 'audio/vnd.lucent.voice', + 'lwp' => 'application/vnd.lotus-wordpro', + 'lzh' => 'application/octet-stream', + 'm13' => 'application/x-msmediaview', + 'm14' => 'application/x-msmediaview', + 'm1v' => 'video/mpeg', + 'm21' => 'application/mp21', + 'm2a' => 'audio/mpeg', + 'm2v' => 'video/mpeg', + 'm3a' => 'audio/mpeg', + 'm3u' => 'audio/x-mpegurl', + 'm3u8' => 'application/vnd.apple.mpegurl', + 'm4a' => 'audio/mp4', + 'm4u' => 'video/vnd.mpegurl', + 'm4v' => 'video/mp4', + 'ma' => 'application/mathematica', + 'mads' => 'application/mads+xml', + 'mag' => 'application/vnd.ecowin.chart', + 'maker' => 'application/vnd.framemaker', + 'man' => 'text/troff', + 'mathml' => 'application/mathml+xml', + 'mb' => 'application/mathematica', + 'mbk' => 'application/vnd.mobius.mbk', + 'mbox' => 'application/mbox', + 'mc1' => 'application/vnd.medcalcdata', + 'mcd' => 'application/vnd.mcd', + 'mcurl' => 'text/vnd.curl.mcurl', + 'mdb' => 'application/x-msaccess', + 'mdi' => 'image/vnd.ms-modi', + 'me' => 'text/troff', + 'mesh' => 'model/mesh', + 'meta4' => 'application/metalink4+xml', + 'mets' => 'application/mets+xml', + 'mfm' => 'application/vnd.mfmp', + 'mgp' => 'application/vnd.osgeo.mapguide.package', + 'mgz' => 'application/vnd.proteus.magazine', + 'mid' => 'audio/midi', + 'midi' => 'audio/midi', + 'mif' => 'application/vnd.mif', + 'mime' => 'message/rfc822', + 'mj2' => 'video/mj2', + 'mjp2' => 'video/mj2', + 'mlp' => 'application/vnd.dolby.mlp', + 'mmd' => 'application/vnd.chipnuts.karaoke-mmd', + 'mmf' => 'application/vnd.smaf', + 'mmr' => 'image/vnd.fujixerox.edmics-mmr', + 'mny' => 'application/x-msmoney', + 'mobi' => 'application/x-mobipocket-ebook', + 'mods' => 'application/mods+xml', + 'mov' => 'video/quicktime', + 'movie' => 'video/x-sgi-movie', + 'mp2' => 'audio/mpeg', + 'mp21' => 'application/mp21', + 'mp2a' => 'audio/mpeg', + 'mp3' => 'audio/mpeg', + 'mp4' => 'video/mp4', + 'mp4a' => 'audio/mp4', + 'mp4s' => 'application/mp4', + 'mp4v' => 'video/mp4', + 'mpc' => 'application/vnd.mophun.certificate', + 'mpe' => 'video/mpeg', + 'mpeg' => 'video/mpeg', + 'mpg' => 'video/mpeg', + 'mpg4' => 'video/mp4', + 'mpga' => 'audio/mpeg', + 'mpkg' => 'application/vnd.apple.installer+xml', + 'mpm' => 'application/vnd.blueice.multipass', + 'mpn' => 'application/vnd.mophun.application', + 'mpp' => 'application/vnd.ms-project', + 'mpt' => 'application/vnd.ms-project', + 'mpy' => 'application/vnd.ibm.minipay', + 'mqy' => 'application/vnd.mobius.mqy', + 'mrc' => 'application/marc', + 'mrcx' => 'application/marcxml+xml', + 'ms' => 'text/troff', + 'mscml' => 'application/mediaservercontrol+xml', + 'mseed' => 'application/vnd.fdsn.mseed', + 'mseq' => 'application/vnd.mseq', + 'msf' => 'application/vnd.epson.msf', + 'msh' => 'model/mesh', + 'msi' => 'application/x-msdownload', + 'msl' => 'application/vnd.mobius.msl', + 'msty' => 'application/vnd.muvee.style', + 'mts' => 'model/vnd.mts', + 'mus' => 'application/vnd.musician', + 'musicxml' => 'application/vnd.recordare.musicxml+xml', + 'mvb' => 'application/x-msmediaview', + 'mwf' => 'application/vnd.mfer', + 'mxf' => 'application/mxf', + 'mxl' => 'application/vnd.recordare.musicxml', + 'mxml' => 'application/xv+xml', + 'mxs' => 'application/vnd.triscape.mxs', + 'mxu' => 'video/vnd.mpegurl', + 'n-gage' => 'application/vnd.nokia.n-gage.symbian.install', + 'n3' => 'text/n3', + 'nb' => 'application/mathematica', + 'nbp' => 'application/vnd.wolfram.player', + 'nc' => 'application/x-netcdf', + 'ncx' => 'application/x-dtbncx+xml', + 'ngdat' => 'application/vnd.nokia.n-gage.data', + 'nlu' => 'application/vnd.neurolanguage.nlu', + 'nml' => 'application/vnd.enliven', + 'nnd' => 'application/vnd.noblenet-directory', + 'nns' => 'application/vnd.noblenet-sealer', + 'nnw' => 'application/vnd.noblenet-web', + 'npx' => 'image/vnd.net-fpx', + 'nsf' => 'application/vnd.lotus-notes', + 'oa2' => 'application/vnd.fujitsu.oasys2', + 'oa3' => 'application/vnd.fujitsu.oasys3', + 'oas' => 'application/vnd.fujitsu.oasys', + 'obd' => 'application/x-msbinder', + 'oda' => 'application/oda', + 'odb' => 'application/vnd.oasis.opendocument.database', + 'odc' => 'application/vnd.oasis.opendocument.chart', + 'odf' => 'application/vnd.oasis.opendocument.formula', + 'odft' => 'application/vnd.oasis.opendocument.formula-template', + 'odg' => 'application/vnd.oasis.opendocument.graphics', + 'odi' => 'application/vnd.oasis.opendocument.image', + 'odm' => 'application/vnd.oasis.opendocument.text-master', + 'odp' => 'application/vnd.oasis.opendocument.presentation', + 'ods' => 'application/vnd.oasis.opendocument.spreadsheet', + 'odt' => 'application/vnd.oasis.opendocument.text', + 'oga' => 'audio/ogg', + 'ogg' => 'audio/ogg', + 'ogv' => 'video/ogg', + 'ogx' => 'application/ogg', + 'onepkg' => 'application/onenote', + 'onetmp' => 'application/onenote', + 'onetoc' => 'application/onenote', + 'onetoc2' => 'application/onenote', + 'opf' => 'application/oebps-package+xml', + 'oprc' => 'application/vnd.palm', + 'org' => 'application/vnd.lotus-organizer', + 'osf' => 'application/vnd.yamaha.openscoreformat', + 'osfpvg' => 'application/vnd.yamaha.openscoreformat.osfpvg+xml', + 'otc' => 'application/vnd.oasis.opendocument.chart-template', + 'otf' => 'application/x-font-otf', + 'otg' => 'application/vnd.oasis.opendocument.graphics-template', + 'oth' => 'application/vnd.oasis.opendocument.text-web', + 'oti' => 'application/vnd.oasis.opendocument.image-template', + 'otp' => 'application/vnd.oasis.opendocument.presentation-template', + 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template', + 'ott' => 'application/vnd.oasis.opendocument.text-template', + 'oxt' => 'application/vnd.openofficeorg.extension', + 'p' => 'text/x-pascal', + 'p10' => 'application/pkcs10', + 'p12' => 'application/x-pkcs12', + 'p7b' => 'application/x-pkcs7-certificates', + 'p7c' => 'application/pkcs7-mime', + 'p7m' => 'application/pkcs7-mime', + 'p7r' => 'application/x-pkcs7-certreqresp', + 'p7s' => 'application/pkcs7-signature', + 'p8' => 'application/pkcs8', + 'pas' => 'text/x-pascal', + 'paw' => 'application/vnd.pawaafile', + 'pbd' => 'application/vnd.powerbuilder6', + 'pbm' => 'image/x-portable-bitmap', + 'pcf' => 'application/x-font-pcf', + 'pcl' => 'application/vnd.hp-pcl', + 'pclxl' => 'application/vnd.hp-pclxl', + 'pct' => 'image/x-pict', + 'pcurl' => 'application/vnd.curl.pcurl', + 'pcx' => 'image/x-pcx', + 'pdb' => 'application/vnd.palm', + 'pdf' => 'application/pdf', + 'pfa' => 'application/x-font-type1', + 'pfb' => 'application/x-font-type1', + 'pfm' => 'application/x-font-type1', + 'pfr' => 'application/font-tdpfr', + 'pfx' => 'application/x-pkcs12', + 'pgm' => 'image/x-portable-graymap', + 'pgn' => 'application/x-chess-pgn', + 'pgp' => 'application/pgp-encrypted', + 'php' => 'text/x-php', + 'phps' => 'application/x-httpd-phps', + 'pic' => 'image/x-pict', + 'pkg' => 'application/octet-stream', + 'pki' => 'application/pkixcmp', + 'pkipath' => 'application/pkix-pkipath', + 'plb' => 'application/vnd.3gpp.pic-bw-large', + 'plc' => 'application/vnd.mobius.plc', + 'plf' => 'application/vnd.pocketlearn', + 'pls' => 'application/pls+xml', + 'pml' => 'application/vnd.ctc-posml', + 'png' => 'image/png', + 'pnm' => 'image/x-portable-anymap', + 'portpkg' => 'application/vnd.macports.portpkg', + 'pot' => 'application/vnd.ms-powerpoint', + 'potm' => 'application/vnd.ms-powerpoint.template.macroenabled.12', + 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template', + 'ppam' => 'application/vnd.ms-powerpoint.addin.macroenabled.12', + 'ppd' => 'application/vnd.cups-ppd', + 'ppm' => 'image/x-portable-pixmap', + 'pps' => 'application/vnd.ms-powerpoint', + 'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroenabled.12', + 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', + 'ppt' => 'application/vnd.ms-powerpoint', + 'pptm' => 'application/vnd.ms-powerpoint.presentation.macroenabled.12', + 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', + 'pqa' => 'application/vnd.palm', + 'prc' => 'application/x-mobipocket-ebook', + 'pre' => 'application/vnd.lotus-freelance', + 'prf' => 'application/pics-rules', + 'ps' => 'application/postscript', + 'psb' => 'application/vnd.3gpp.pic-bw-small', + 'psd' => 'image/vnd.adobe.photoshop', + 'psf' => 'application/x-font-linux-psf', + 'pskcxml' => 'application/pskc+xml', + 'ptid' => 'application/vnd.pvi.ptid1', + 'pub' => 'application/x-mspublisher', + 'pvb' => 'application/vnd.3gpp.pic-bw-var', + 'pwn' => 'application/vnd.3m.post-it-notes', + 'pya' => 'audio/vnd.ms-playready.media.pya', + 'pyv' => 'video/vnd.ms-playready.media.pyv', + 'qam' => 'application/vnd.epson.quickanime', + 'qbo' => 'application/vnd.intu.qbo', + 'qfx' => 'application/vnd.intu.qfx', + 'qps' => 'application/vnd.publishare-delta-tree', + 'qt' => 'video/quicktime', + 'qwd' => 'application/vnd.quark.quarkxpress', + 'qwt' => 'application/vnd.quark.quarkxpress', + 'qxb' => 'application/vnd.quark.quarkxpress', + 'qxd' => 'application/vnd.quark.quarkxpress', + 'qxl' => 'application/vnd.quark.quarkxpress', + 'qxt' => 'application/vnd.quark.quarkxpress', + 'ra' => 'audio/x-pn-realaudio', + 'ram' => 'audio/x-pn-realaudio', + 'rar' => 'application/x-rar-compressed', + 'ras' => 'image/x-cmu-raster', + 'rb' => 'text/plain', + 'rcprofile' => 'application/vnd.ipunplugged.rcprofile', + 'rdf' => 'application/rdf+xml', + 'rdz' => 'application/vnd.data-vision.rdz', + 'rep' => 'application/vnd.businessobjects', + 'res' => 'application/x-dtbresource+xml', + 'resx' => 'text/xml', + 'rgb' => 'image/x-rgb', + 'rif' => 'application/reginfo+xml', + 'rip' => 'audio/vnd.rip', + 'rl' => 'application/resource-lists+xml', + 'rlc' => 'image/vnd.fujixerox.edmics-rlc', + 'rld' => 'application/resource-lists-diff+xml', + 'rm' => 'application/vnd.rn-realmedia', + 'rmi' => 'audio/midi', + 'rmp' => 'audio/x-pn-realaudio-plugin', + 'rms' => 'application/vnd.jcp.javame.midlet-rms', + 'rnc' => 'application/relax-ng-compact-syntax', + 'roff' => 'text/troff', + 'rp9' => 'application/vnd.cloanto.rp9', + 'rpss' => 'application/vnd.nokia.radio-presets', + 'rpst' => 'application/vnd.nokia.radio-preset', + 'rq' => 'application/sparql-query', + 'rs' => 'application/rls-services+xml', + 'rsd' => 'application/rsd+xml', + 'rss' => 'application/rss+xml', + 'rtf' => 'application/rtf', + 'rtx' => 'text/richtext', + 's' => 'text/x-asm', + 'saf' => 'application/vnd.yamaha.smaf-audio', + 'sbml' => 'application/sbml+xml', + 'sc' => 'application/vnd.ibm.secure-container', + 'scd' => 'application/x-msschedule', + 'scm' => 'application/vnd.lotus-screencam', + 'scq' => 'application/scvp-cv-request', + 'scs' => 'application/scvp-cv-response', + 'scurl' => 'text/vnd.curl.scurl', + 'sda' => 'application/vnd.stardivision.draw', + 'sdc' => 'application/vnd.stardivision.calc', + 'sdd' => 'application/vnd.stardivision.impress', + 'sdkd' => 'application/vnd.solent.sdkm+xml', + 'sdkm' => 'application/vnd.solent.sdkm+xml', + 'sdp' => 'application/sdp', + 'sdw' => 'application/vnd.stardivision.writer', + 'see' => 'application/vnd.seemail', + 'seed' => 'application/vnd.fdsn.seed', + 'sema' => 'application/vnd.sema', + 'semd' => 'application/vnd.semd', + 'semf' => 'application/vnd.semf', + 'ser' => 'application/java-serialized-object', + 'setpay' => 'application/set-payment-initiation', + 'setreg' => 'application/set-registration-initiation', + 'sfd-hdstx' => 'application/vnd.hydrostatix.sof-data', + 'sfs' => 'application/vnd.spotfire.sfs', + 'sgl' => 'application/vnd.stardivision.writer-global', + 'sgm' => 'text/sgml', + 'sgml' => 'text/sgml', + 'sh' => 'application/x-sh', + 'shar' => 'application/x-shar', + 'shf' => 'application/shf+xml', + 'sig' => 'application/pgp-signature', + 'silo' => 'model/mesh', + 'sis' => 'application/vnd.symbian.install', + 'sisx' => 'application/vnd.symbian.install', + 'sit' => 'application/x-stuffit', + 'sitx' => 'application/x-stuffitx', + 'skd' => 'application/vnd.koan', + 'skm' => 'application/vnd.koan', + 'skp' => 'application/vnd.koan', + 'skt' => 'application/vnd.koan', + 'sldm' => 'application/vnd.ms-powerpoint.slide.macroenabled.12', + 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide', + 'slt' => 'application/vnd.epson.salt', + 'sm' => 'application/vnd.stepmania.stepchart', + 'smf' => 'application/vnd.stardivision.math', + 'smi' => 'application/smil+xml', + 'smil' => 'application/smil+xml', + 'snd' => 'audio/basic', + 'snf' => 'application/x-font-snf', + 'so' => 'application/octet-stream', + 'spc' => 'application/x-pkcs7-certificates', + 'spf' => 'application/vnd.yamaha.smaf-phrase', + 'spl' => 'application/x-futuresplash', + 'spot' => 'text/vnd.in3d.spot', + 'spp' => 'application/scvp-vp-response', + 'spq' => 'application/scvp-vp-request', + 'spx' => 'audio/ogg', + 'src' => 'application/x-wais-source', + 'sru' => 'application/sru+xml', + 'srx' => 'application/sparql-results+xml', + 'sse' => 'application/vnd.kodak-descriptor', + 'ssf' => 'application/vnd.epson.ssf', + 'ssml' => 'application/ssml+xml', + 'st' => 'application/vnd.sailingtracker.track', + 'stc' => 'application/vnd.sun.xml.calc.template', + 'std' => 'application/vnd.sun.xml.draw.template', + 'stf' => 'application/vnd.wt.stf', + 'sti' => 'application/vnd.sun.xml.impress.template', + 'stk' => 'application/hyperstudio', + 'stl' => 'application/vnd.ms-pki.stl', + 'str' => 'application/vnd.pg.format', + 'stw' => 'application/vnd.sun.xml.writer.template', + 'sub' => 'image/vnd.dvb.subtitle', + 'sus' => 'application/vnd.sus-calendar', + 'susp' => 'application/vnd.sus-calendar', + 'sv4cpio' => 'application/x-sv4cpio', + 'sv4crc' => 'application/x-sv4crc', + 'svc' => 'application/vnd.dvb.service', + 'svd' => 'application/vnd.svd', + 'svg' => 'image/svg+xml', + 'svgz' => 'image/svg+xml', + 'swa' => 'application/x-director', + 'swf' => 'application/x-shockwave-flash', + 'swi' => 'application/vnd.aristanetworks.swi', + 'sxc' => 'application/vnd.sun.xml.calc', + 'sxd' => 'application/vnd.sun.xml.draw', + 'sxg' => 'application/vnd.sun.xml.writer.global', + 'sxi' => 'application/vnd.sun.xml.impress', + 'sxm' => 'application/vnd.sun.xml.math', + 'sxw' => 'application/vnd.sun.xml.writer', + 't' => 'text/troff', + 'tao' => 'application/vnd.tao.intent-module-archive', + 'tar' => 'application/x-tar', + 'tcap' => 'application/vnd.3gpp2.tcap', + 'tcl' => 'application/x-tcl', + 'teacher' => 'application/vnd.smart.teacher', + 'tei' => 'application/tei+xml', + 'teicorpus' => 'application/tei+xml', + 'tex' => 'application/x-tex', + 'texi' => 'application/x-texinfo', + 'texinfo' => 'application/x-texinfo', + 'text' => 'text/plain', + 'tfi' => 'application/thraud+xml', + 'tfm' => 'application/x-tex-tfm', + 'thmx' => 'application/vnd.ms-officetheme', + 'tif' => 'image/tiff', + 'tiff' => 'image/tiff', + 'tmo' => 'application/vnd.tmobile-livetv', + 'torrent' => 'application/x-bittorrent', + 'tpl' => 'application/vnd.groove-tool-template', + 'tpt' => 'application/vnd.trid.tpt', + 'tr' => 'text/troff', + 'tra' => 'application/vnd.trueapp', + 'trm' => 'application/x-msterminal', + 'tsd' => 'application/timestamped-data', + 'tsv' => 'text/tab-separated-values', + 'ttc' => 'application/x-font-ttf', + 'ttf' => 'application/x-font-ttf', + 'ttl' => 'text/turtle', + 'twd' => 'application/vnd.simtech-mindmapper', + 'twds' => 'application/vnd.simtech-mindmapper', + 'txd' => 'application/vnd.genomatix.tuxedo', + 'txf' => 'application/vnd.mobius.txf', + 'txt' => 'text/plain', + 'u32' => 'application/x-authorware-bin', + 'udeb' => 'application/x-debian-package', + 'ufd' => 'application/vnd.ufdl', + 'ufdl' => 'application/vnd.ufdl', + 'umj' => 'application/vnd.umajin', + 'unityweb' => 'application/vnd.unity', + 'uoml' => 'application/vnd.uoml+xml', + 'uri' => 'text/uri-list', + 'uris' => 'text/uri-list', + 'urls' => 'text/uri-list', + 'ustar' => 'application/x-ustar', + 'utz' => 'application/vnd.uiq.theme', + 'uu' => 'text/x-uuencode', + 'uva' => 'audio/vnd.dece.audio', + 'uvd' => 'application/vnd.dece.data', + 'uvf' => 'application/vnd.dece.data', + 'uvg' => 'image/vnd.dece.graphic', + 'uvh' => 'video/vnd.dece.hd', + 'uvi' => 'image/vnd.dece.graphic', + 'uvm' => 'video/vnd.dece.mobile', + 'uvp' => 'video/vnd.dece.pd', + 'uvs' => 'video/vnd.dece.sd', + 'uvt' => 'application/vnd.dece.ttml+xml', + 'uvu' => 'video/vnd.uvvu.mp4', + 'uvv' => 'video/vnd.dece.video', + 'uvva' => 'audio/vnd.dece.audio', + 'uvvd' => 'application/vnd.dece.data', + 'uvvf' => 'application/vnd.dece.data', + 'uvvg' => 'image/vnd.dece.graphic', + 'uvvh' => 'video/vnd.dece.hd', + 'uvvi' => 'image/vnd.dece.graphic', + 'uvvm' => 'video/vnd.dece.mobile', + 'uvvp' => 'video/vnd.dece.pd', + 'uvvs' => 'video/vnd.dece.sd', + 'uvvt' => 'application/vnd.dece.ttml+xml', + 'uvvu' => 'video/vnd.uvvu.mp4', + 'uvvv' => 'video/vnd.dece.video', + 'uvvx' => 'application/vnd.dece.unspecified', + 'uvx' => 'application/vnd.dece.unspecified', + 'vcd' => 'application/x-cdlink', + 'vcf' => 'text/x-vcard', + 'vcg' => 'application/vnd.groove-vcard', + 'vcs' => 'text/x-vcalendar', + 'vcx' => 'application/vnd.vcx', + 'vis' => 'application/vnd.visionary', + 'viv' => 'video/vnd.vivo', + 'vor' => 'application/vnd.stardivision.writer', + 'vox' => 'application/x-authorware-bin', + 'vrml' => 'model/vrml', + 'vsd' => 'application/vnd.visio', + 'vsf' => 'application/vnd.vsf', + 'vss' => 'application/vnd.visio', + 'vst' => 'application/vnd.visio', + 'vsw' => 'application/vnd.visio', + 'vtu' => 'model/vnd.vtu', + 'vxml' => 'application/voicexml+xml', + 'w3d' => 'application/x-director', + 'wad' => 'application/x-doom', + 'wav' => 'audio/x-wav', + 'wax' => 'audio/x-ms-wax', + 'wbmp' => 'image/vnd.wap.wbmp', + 'wbs' => 'application/vnd.criticaltools.wbs+xml', + 'wbxml' => 'application/vnd.wap.wbxml', + 'wcm' => 'application/vnd.ms-works', + 'wdb' => 'application/vnd.ms-works', + 'weba' => 'audio/webm', + 'webm' => 'video/webm', + 'webp' => 'image/webp', + 'wg' => 'application/vnd.pmi.widget', + 'wgt' => 'application/widget', + 'wks' => 'application/vnd.ms-works', + 'wm' => 'video/x-ms-wm', + 'wma' => 'audio/x-ms-wma', + 'wmd' => 'application/x-ms-wmd', + 'wmf' => 'application/x-msmetafile', + 'wml' => 'text/vnd.wap.wml', + 'wmlc' => 'application/vnd.wap.wmlc', + 'wmls' => 'text/vnd.wap.wmlscript', + 'wmlsc' => 'application/vnd.wap.wmlscriptc', + 'wmv' => 'video/x-ms-wmv', + 'wmx' => 'video/x-ms-wmx', + 'wmz' => 'application/x-ms-wmz', + 'woff' => 'application/x-font-woff', + 'wpd' => 'application/vnd.wordperfect', + 'wpl' => 'application/vnd.ms-wpl', + 'wps' => 'application/vnd.ms-works', + 'wqd' => 'application/vnd.wqd', + 'wri' => 'application/x-mswrite', + 'wrl' => 'model/vrml', + 'wsdl' => 'application/wsdl+xml', + 'wspolicy' => 'application/wspolicy+xml', + 'wtb' => 'application/vnd.webturbo', + 'wvx' => 'video/x-ms-wvx', + 'x32' => 'application/x-authorware-bin', + 'x3d' => 'application/vnd.hzn-3d-crossword', + 'xap' => 'application/x-silverlight-app', + 'xar' => 'application/vnd.xara', + 'xbap' => 'application/x-ms-xbap', + 'xbd' => 'application/vnd.fujixerox.docuworks.binder', + 'xbm' => 'image/x-xbitmap', + 'xdf' => 'application/xcap-diff+xml', + 'xdm' => 'application/vnd.syncml.dm+xml', + 'xdp' => 'application/vnd.adobe.xdp+xml', + 'xdssc' => 'application/dssc+xml', + 'xdw' => 'application/vnd.fujixerox.docuworks', + 'xenc' => 'application/xenc+xml', + 'xer' => 'application/patch-ops-error+xml', + 'xfdf' => 'application/vnd.adobe.xfdf', + 'xfdl' => 'application/vnd.xfdl', + 'xht' => 'application/xhtml+xml', + 'xhtml' => 'application/xhtml+xml', + 'xhvml' => 'application/xv+xml', + 'xif' => 'image/vnd.xiff', + 'xla' => 'application/vnd.ms-excel', + 'xlam' => 'application/vnd.ms-excel.addin.macroenabled.12', + 'xlc' => 'application/vnd.ms-excel', + 'xlm' => 'application/vnd.ms-excel', + 'xls' => 'application/vnd.ms-excel', + 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroenabled.12', + 'xlsm' => 'application/vnd.ms-excel.sheet.macroenabled.12', + 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'xlt' => 'application/vnd.ms-excel', + 'xltm' => 'application/vnd.ms-excel.template.macroenabled.12', + 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', + 'xlw' => 'application/vnd.ms-excel', + 'xml' => 'application/xml', + 'xo' => 'application/vnd.olpc-sugar', + 'xop' => 'application/xop+xml', + 'xpi' => 'application/x-xpinstall', + 'xpm' => 'image/x-xpixmap', + 'xpr' => 'application/vnd.is-xpr', + 'xps' => 'application/vnd.ms-xpsdocument', + 'xpw' => 'application/vnd.intercon.formnet', + 'xpx' => 'application/vnd.intercon.formnet', + 'xsl' => 'application/xml', + 'xslt' => 'application/xslt+xml', + 'xsm' => 'application/vnd.syncml+xml', + 'xspf' => 'application/xspf+xml', + 'xul' => 'application/vnd.mozilla.xul+xml', + 'xvm' => 'application/xv+xml', + 'xvml' => 'application/xv+xml', + 'xwd' => 'image/x-xwindowdump', + 'xyz' => 'chemical/x-xyz', + 'yaml' => 'text/yaml', + 'yang' => 'application/yang', + 'yin' => 'application/yin+xml', + 'yml' => 'text/yaml', + 'zaz' => 'application/vnd.zzazz.deck+xml', + 'zip' => 'application/zip', + 'zir' => 'application/vnd.zul', + 'zirz' => 'application/vnd.zul', + 'zmm' => 'application/vnd.handheld-entertainment+xml' + ); + + /** + * Get a singleton instance of the class + * + * @return self + * @codeCoverageIgnore + */ + public static function getInstance() + { + if (!self::$instance) { + self::$instance = new self(); + } + + return self::$instance; + } + + /** + * Get a mimetype value from a file extension + * + * @param string $extension File extension + * + * @return string|null + * + */ + public function fromExtension($extension) + { + $extension = strtolower($extension); + + return isset($this->mimetypes[$extension]) ? $this->mimetypes[$extension] : null; + } + + /** + * Get a mimetype from a filename + * + * @param string $filename Filename to generate a mimetype from + * + * @return string|null + */ + public function fromFilename($filename) + { + return $this->fromExtension(pathinfo($filename, PATHINFO_EXTENSION)); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/CommaAggregator.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/CommaAggregator.php new file mode 100644 index 0000000..4b4e49d --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/CommaAggregator.php @@ -0,0 +1,20 @@ +isUrlEncoding()) { + return array($query->encodeValue($key) => implode(',', array_map(array($query, 'encodeValue'), $value))); + } else { + return array($key => implode(',', $value)); + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/DuplicateAggregator.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/DuplicateAggregator.php new file mode 100644 index 0000000..1bf1730 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/DuplicateAggregator.php @@ -0,0 +1,22 @@ +isUrlEncoding()) { + return array($query->encodeValue($key) => array_map(array($query, 'encodeValue'), $value)); + } else { + return array($key => $value); + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/PhpAggregator.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/PhpAggregator.php new file mode 100644 index 0000000..133ea2b --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/PhpAggregator.php @@ -0,0 +1,27 @@ + $v) { + $k = "{$key}[{$k}]"; + if (is_array($v)) { + $ret = array_merge($ret, self::aggregate($k, $v, $query)); + } else { + $ret[$query->encodeValue($k)] = $query->encodeValue($v); + } + } + + return $ret; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/QueryAggregatorInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/QueryAggregatorInterface.php new file mode 100644 index 0000000..72bee62 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/QueryAggregatorInterface.php @@ -0,0 +1,22 @@ +add($key, $value); + $foundDuplicates = true; + } elseif ($paramIsPhpStyleArray) { + $q[$key] = array($value); + } else { + $q[$key] = $value; + } + } else { + // Uses false by default to represent keys with no trailing "=" sign. + $q->add($key, false); + } + } + + // Use the duplicate aggregator if duplicates were found and not using PHP style arrays + if ($foundDuplicates && !$foundPhpStyle) { + $q->setAggregator(new DuplicateAggregator()); + } + + return $q; + } + + /** + * Convert the query string parameters to a query string string + * + * @return string + * @throws RuntimeException + */ + public function __toString() + { + if (!$this->data) { + return ''; + } + + $queryList = array(); + foreach ($this->prepareData($this->data) as $name => $value) { + $queryList[] = $this->convertKvp($name, $value); + } + + return implode($this->fieldSeparator, $queryList); + } + + /** + * Get the query string field separator + * + * @return string + */ + public function getFieldSeparator() + { + return $this->fieldSeparator; + } + + /** + * Get the query string value separator + * + * @return string + */ + public function getValueSeparator() + { + return $this->valueSeparator; + } + + /** + * Returns the type of URL encoding used by the query string + * + * One of: false, "RFC 3986", or "application/x-www-form-urlencoded" + * + * @return bool|string + */ + public function getUrlEncoding() + { + return $this->urlEncode; + } + + /** + * Returns true or false if using URL encoding + * + * @return bool + */ + public function isUrlEncoding() + { + return $this->urlEncode !== false; + } + + /** + * Provide a function for combining multi-valued query string parameters into a single or multiple fields + * + * @param null|QueryAggregatorInterface $aggregator Pass in a QueryAggregatorInterface object to handle converting + * deeply nested query string variables into a flattened array. + * Pass null to use the default PHP style aggregator. For legacy + * reasons, this function accepts a callable that must accepts a + * $key, $value, and query object. + * @return self + * @see \Guzzle\Http\QueryString::aggregateUsingComma() + */ + public function setAggregator(QueryAggregatorInterface $aggregator = null) + { + // Use the default aggregator if none was set + if (!$aggregator) { + if (!self::$defaultAggregator) { + self::$defaultAggregator = new PhpAggregator(); + } + $aggregator = self::$defaultAggregator; + } + + $this->aggregator = $aggregator; + + return $this; + } + + /** + * Set whether or not field names and values should be rawurlencoded + * + * @param bool|string $encode Set to TRUE to use RFC 3986 encoding (rawurlencode), false to disable encoding, or + * form_urlencoding to use application/x-www-form-urlencoded encoding (urlencode) + * @return self + */ + public function useUrlEncoding($encode) + { + $this->urlEncode = ($encode === true) ? self::RFC_3986 : $encode; + + return $this; + } + + /** + * Set the query string separator + * + * @param string $separator The query string separator that will separate fields + * + * @return self + */ + public function setFieldSeparator($separator) + { + $this->fieldSeparator = $separator; + + return $this; + } + + /** + * Set the query string value separator + * + * @param string $separator The query string separator that will separate values from fields + * + * @return self + */ + public function setValueSeparator($separator) + { + $this->valueSeparator = $separator; + + return $this; + } + + /** + * Returns an array of url encoded field names and values + * + * @return array + */ + public function urlEncode() + { + return $this->prepareData($this->data); + } + + /** + * URL encodes a value based on the url encoding type of the query string object + * + * @param string $value Value to encode + * + * @return string + */ + public function encodeValue($value) + { + if ($this->urlEncode == self::RFC_3986) { + return rawurlencode($value); + } elseif ($this->urlEncode == self::FORM_URLENCODED) { + return urlencode($value); + } else { + return (string) $value; + } + } + + /** + * Url encode parameter data and convert nested query strings into a flattened hash. + * + * @param array $data The data to encode + * + * @return array Returns an array of encoded values and keys + */ + protected function prepareData(array $data) + { + // If no aggregator is present then set the default + if (!$this->aggregator) { + $this->setAggregator(null); + } + + $temp = array(); + foreach ($data as $key => $value) { + if ($value === false || $value === null) { + // False and null will not include the "=". Use an empty string to include the "=". + $temp[$this->encodeValue($key)] = $value; + } elseif (is_array($value)) { + $temp = array_merge($temp, $this->aggregator->aggregate($key, $value, $this)); + } else { + $temp[$this->encodeValue($key)] = $this->encodeValue($value); + } + } + + return $temp; + } + + /** + * Converts a key value pair that can contain strings, nulls, false, or arrays + * into a single string. + * + * @param string $name Name of the field + * @param mixed $value Value of the field + * @return string + */ + private function convertKvp($name, $value) + { + if ($value === self::BLANK || $value === null || $value === false) { + return $name; + } elseif (!is_array($value)) { + return $name . $this->valueSeparator . $value; + } + + $result = ''; + foreach ($value as $v) { + $result .= $this->convertKvp($name, $v) . $this->fieldSeparator; + } + + return rtrim($result, $this->fieldSeparator); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/ReadLimitEntityBody.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/ReadLimitEntityBody.php new file mode 100644 index 0000000..ef28273 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/ReadLimitEntityBody.php @@ -0,0 +1,122 @@ +setLimit($limit)->setOffset($offset); + } + + /** + * Returns only a subset of the decorated entity body when cast as a string + * {@inheritdoc} + */ + public function __toString() + { + if (!$this->body->isReadable() || + (!$this->body->isSeekable() && $this->body->isConsumed()) + ) { + return ''; + } + + $originalPos = $this->body->ftell(); + $this->body->seek($this->offset); + $data = ''; + while (!$this->feof()) { + $data .= $this->read(1048576); + } + $this->body->seek($originalPos); + + return (string) $data ?: ''; + } + + public function isConsumed() + { + return $this->body->isConsumed() || + ($this->body->ftell() >= $this->offset + $this->limit); + } + + /** + * Returns the Content-Length of the limited subset of data + * {@inheritdoc} + */ + public function getContentLength() + { + $length = $this->body->getContentLength(); + + return $length === false + ? $this->limit + : min($this->limit, min($length, $this->offset + $this->limit) - $this->offset); + } + + /** + * Allow for a bounded seek on the read limited entity body + * {@inheritdoc} + */ + public function seek($offset, $whence = SEEK_SET) + { + return $whence === SEEK_SET + ? $this->body->seek(max($this->offset, min($this->offset + $this->limit, $offset))) + : false; + } + + /** + * Set the offset to start limiting from + * + * @param int $offset Offset to seek to and begin byte limiting from + * + * @return self + */ + public function setOffset($offset) + { + $this->body->seek($offset); + $this->offset = $offset; + + return $this; + } + + /** + * Set the limit of bytes that the decorator allows to be read from the stream + * + * @param int $limit Total number of bytes to allow to be read from the stream + * + * @return self + */ + public function setLimit($limit) + { + $this->limit = $limit; + + return $this; + } + + public function read($length) + { + // Check if the current position is less than the total allowed bytes + original offset + $remaining = ($this->offset + $this->limit) - $this->body->ftell(); + if ($remaining > 0) { + // Only return the amount of requested data, ensuring that the byte limit is not exceeded + return $this->body->read(min($remaining, $length)); + } else { + return false; + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/RedirectPlugin.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/RedirectPlugin.php new file mode 100644 index 0000000..1a824b8 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/RedirectPlugin.php @@ -0,0 +1,250 @@ + array('onRequestSent', 100), + 'request.clone' => 'cleanupRequest', + 'request.before_send' => 'cleanupRequest' + ); + } + + /** + * Clean up the parameters of a request when it is cloned + * + * @param Event $event Event emitted + */ + public function cleanupRequest(Event $event) + { + $params = $event['request']->getParams(); + unset($params[self::REDIRECT_COUNT]); + unset($params[self::PARENT_REQUEST]); + } + + /** + * Called when a request receives a redirect response + * + * @param Event $event Event emitted + */ + public function onRequestSent(Event $event) + { + $response = $event['response']; + $request = $event['request']; + + // Only act on redirect requests with Location headers + if (!$response || $request->getParams()->get(self::DISABLE)) { + return; + } + + // Trace the original request based on parameter history + $original = $this->getOriginalRequest($request); + + // Terminating condition to set the effective response on the original request + if (!$response->isRedirect() || !$response->hasHeader('Location')) { + if ($request !== $original) { + // This is a terminating redirect response, so set it on the original request + $response->getParams()->set(self::REDIRECT_COUNT, $original->getParams()->get(self::REDIRECT_COUNT)); + $original->setResponse($response); + $response->setEffectiveUrl($request->getUrl()); + } + return; + } + + $this->sendRedirectRequest($original, $request, $response); + } + + /** + * Get the original request that initiated a series of redirects + * + * @param RequestInterface $request Request to get the original request from + * + * @return RequestInterface + */ + protected function getOriginalRequest(RequestInterface $request) + { + $original = $request; + // The number of redirects is held on the original request, so determine which request that is + while ($parent = $original->getParams()->get(self::PARENT_REQUEST)) { + $original = $parent; + } + + return $original; + } + + /** + * Create a redirect request for a specific request object + * + * Takes into account strict RFC compliant redirection (e.g. redirect POST with POST) vs doing what most clients do + * (e.g. redirect POST with GET). + * + * @param RequestInterface $request Request being redirected + * @param RequestInterface $original Original request + * @param int $statusCode Status code of the redirect + * @param string $location Location header of the redirect + * + * @return RequestInterface Returns a new redirect request + * @throws CouldNotRewindStreamException If the body needs to be rewound but cannot + */ + protected function createRedirectRequest( + RequestInterface $request, + $statusCode, + $location, + RequestInterface $original + ) { + $redirectRequest = null; + $strict = $original->getParams()->get(self::STRICT_REDIRECTS); + + // Switch method to GET for 303 redirects. 301 and 302 redirects also switch to GET unless we are forcing RFC + // compliance to emulate what most browsers do. NOTE: IE only switches methods on 301/302 when coming from a POST. + if ($request instanceof EntityEnclosingRequestInterface && ($statusCode == 303 || (!$strict && $statusCode <= 302))) { + $redirectRequest = RequestFactory::getInstance()->cloneRequestWithMethod($request, 'GET'); + } else { + $redirectRequest = clone $request; + } + + $redirectRequest->setIsRedirect(true); + // Always use the same response body when redirecting + $redirectRequest->setResponseBody($request->getResponseBody()); + + $location = Url::factory($location); + // If the location is not absolute, then combine it with the original URL + if (!$location->isAbsolute()) { + $originalUrl = $redirectRequest->getUrl(true); + // Remove query string parameters and just take what is present on the redirect Location header + $originalUrl->getQuery()->clear(); + $location = $originalUrl->combine((string) $location, true); + } + + $redirectRequest->setUrl($location); + + // Add the parent request to the request before it sends (make sure it's before the onRequestClone event too) + $redirectRequest->getEventDispatcher()->addListener( + 'request.before_send', + $func = function ($e) use (&$func, $request, $redirectRequest) { + $redirectRequest->getEventDispatcher()->removeListener('request.before_send', $func); + $e['request']->getParams()->set(RedirectPlugin::PARENT_REQUEST, $request); + } + ); + + // Rewind the entity body of the request if needed + if ($redirectRequest instanceof EntityEnclosingRequestInterface && $redirectRequest->getBody()) { + $body = $redirectRequest->getBody(); + // Only rewind the body if some of it has been read already, and throw an exception if the rewind fails + if ($body->ftell() && !$body->rewind()) { + throw new CouldNotRewindStreamException( + 'Unable to rewind the non-seekable entity body of the request after redirecting. cURL probably ' + . 'sent part of body before the redirect occurred. Try adding acustom rewind function using on the ' + . 'entity body of the request using setRewindFunction().' + ); + } + } + + return $redirectRequest; + } + + /** + * Prepare the request for redirection and enforce the maximum number of allowed redirects per client + * + * @param RequestInterface $original Original request + * @param RequestInterface $request Request to prepare and validate + * @param Response $response The current response + * + * @return RequestInterface + */ + protected function prepareRedirection(RequestInterface $original, RequestInterface $request, Response $response) + { + $params = $original->getParams(); + // This is a new redirect, so increment the redirect counter + $current = $params[self::REDIRECT_COUNT] + 1; + $params[self::REDIRECT_COUNT] = $current; + // Use a provided maximum value or default to a max redirect count of 5 + $max = isset($params[self::MAX_REDIRECTS]) ? $params[self::MAX_REDIRECTS] : $this->defaultMaxRedirects; + + // Throw an exception if the redirect count is exceeded + if ($current > $max) { + $this->throwTooManyRedirectsException($original, $max); + return false; + } else { + // Create a redirect request based on the redirect rules set on the request + return $this->createRedirectRequest( + $request, + $response->getStatusCode(), + trim($response->getLocation()), + $original + ); + } + } + + /** + * Send a redirect request and handle any errors + * + * @param RequestInterface $original The originating request + * @param RequestInterface $request The current request being redirected + * @param Response $response The response of the current request + * + * @throws BadResponseException|\Exception + */ + protected function sendRedirectRequest(RequestInterface $original, RequestInterface $request, Response $response) + { + // Validate and create a redirect request based on the original request and current response + if ($redirectRequest = $this->prepareRedirection($original, $request, $response)) { + try { + $redirectRequest->send(); + } catch (BadResponseException $e) { + $e->getResponse(); + if (!$e->getResponse()) { + throw $e; + } + } + } + } + + /** + * Throw a too many redirects exception for a request + * + * @param RequestInterface $original Request + * @param int $max Max allowed redirects + * + * @throws TooManyRedirectsException when too many redirects have been issued + */ + protected function throwTooManyRedirectsException(RequestInterface $original, $max) + { + $original->getEventDispatcher()->addListener( + 'request.complete', + $func = function ($e) use (&$func, $original, $max) { + $original->getEventDispatcher()->removeListener('request.complete', $func); + $str = "{$max} redirects were issued for this request:\n" . $e['request']->getRawHeaders(); + throw new TooManyRedirectsException($str); + } + ); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Resources/cacert.pem b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Resources/cacert.pem new file mode 100644 index 0000000..18ce703 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Resources/cacert.pem @@ -0,0 +1,3870 @@ +## +## Bundle of CA Root Certificates +## +## Certificate data from Mozilla downloaded on: Wed Aug 13 21:49:32 2014 +## +## This is a bundle of X.509 certificates of public Certificate Authorities +## (CA). These were automatically extracted from Mozilla's root certificates +## file (certdata.txt). This file can be found in the mozilla source tree: +## http://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt +## +## It contains the certificates in PEM format and therefore +## can be directly used with curl / libcurl / php_curl, or with +## an Apache+mod_ssl webserver for SSL client authentication. +## Just configure this file as the SSLCACertificateFile. +## +## Conversion done with mk-ca-bundle.pl verison 1.22. +## SHA1: bf2c15b3019e696660321d2227d942936dc50aa7 +## + + +GTE CyberTrust Global Root +========================== +-----BEGIN CERTIFICATE----- +MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg +Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG +A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz +MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL +Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0 +IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u +sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql +HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID +AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW +M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF +NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ +-----END CERTIFICATE----- + +Thawte Server CA +================ +-----BEGIN CERTIFICATE----- +MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT +DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs +dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE +AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j +b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV +BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u +c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG +A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0 +ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl +/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7 +1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR +MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J +GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ +GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc= +-----END CERTIFICATE----- + +Thawte Premium Server CA +======================== +-----BEGIN CERTIFICATE----- +MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT +DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs +dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE +AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl +ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT +AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU +VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2 +aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ +cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2 +aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh +Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/ +qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm +SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf +8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t +UCemDaYj+bvLpgcUQg== +-----END CERTIFICATE----- + +Equifax Secure CA +================= +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE +ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 +MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT +B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB +nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR +fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW +8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG +A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE +CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG +A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS +spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB +Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961 +zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB +BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95 +70+sB3c4 +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority +======================================================= +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow +XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz +IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94 +f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol +hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtMEivPLCYA +TxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59Ah +WM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2Omuf +Tqj/ZA1k +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority - G2 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO +FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71 +lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB +MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT +1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD +Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9 +-----END CERTIFICATE----- + +GlobalSign Root CA +================== +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx +GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds +b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV +BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD +VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa +DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc +THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb +Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP +c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX +gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF +AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj +Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG +j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH +hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC +X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== +-----END CERTIFICATE----- + +GlobalSign Root CA - R2 +======================= +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6 +ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp +s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN +S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL +TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C +ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E +FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i +YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN +BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp +9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu +01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7 +9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 +TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== +-----END CERTIFICATE----- + +ValiCert Class 1 VA +=================== +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp +b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh +bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIy +MjM0OFoXDTE5MDYyNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0 +d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEg +UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0 +LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9YLqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIi +GQj4/xEjm84H9b9pGib+TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCm +DuJWBQ8YTfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0LBwG +lN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLWI8sogTLDAHkY7FkX +icnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPwnXS3qT6gpf+2SQMT2iLM7XGCK5nP +Orf1LXLI +-----END CERTIFICATE----- + +ValiCert Class 2 VA +=================== +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp +b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh +bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw +MTk1NFoXDTE5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0 +d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIg +UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0 +LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDOOnHK5avIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVC +CSRrCl6zfN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7Rf +ZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9vUJSZ +SWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTuIYEZoDJJKPTEjlbV +UjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8 +W9ViH0Pd +-----END CERTIFICATE----- + +RSA Root Certificate 1 +====================== +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp +b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh +bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw +MjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0 +d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMg +UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0 +LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td +3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89H +BFx1cQqYJJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs +3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0WuPIqpsHEzXcjF +V9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/APhmcGcwTTYJBtYze4D1gCCAPRX5r +on+jjBXu +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy +dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1 +EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc +cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw +EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj +055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f +j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC +/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0 +xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa +t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== +-----END CERTIFICATE----- + +Verisign Class 4 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy +dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaS +tBO3IFsJ+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM +8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdLMEYH5IBtptiW +Lugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XYufTsgsbSPZUd5cBPhMnZo0QoBmrX +Razwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +j/ola09b5KROJ1WrIhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt +mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm +fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c2NU8Qh0XwRJd +RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG +UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg== +-----END CERTIFICATE----- + +Entrust.net Secure Server CA +============================ +-----BEGIN CERTIFICATE----- +MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMCVVMxFDASBgNV +BAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5uZXQvQ1BTIGluY29ycC4gYnkg +cmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRl +ZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eTAeFw05OTA1MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIG +A1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBi +eSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1p +dGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQ +aO2f55M28Qpku0f1BBc/I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5 +gXpa0zf3wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OCAdcw +ggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHboIHYpIHVMIHSMQsw +CQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5l +dC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF +bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENl +cnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu +dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0MFqBDzIwMTkw +NTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0Bow +HQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAaMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA +BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyN +Ewr75Ji174z4xRAN95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9 +n9cd2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= +-----END CERTIFICATE----- + +Entrust.net Premium 2048 Secure Server CA +========================================= +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u +ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp +bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV +BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx +NzUwNTFaFw0yOTA3MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3 +d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl +MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u +ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL +Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr +hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW +nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi +VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo0IwQDAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJ +KoZIhvcNAQEFBQADggEBADubj1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPy +T/4xmf3IDExoU8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf +zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5bu/8j72gZyxKT +J1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+bYQLCIt+jerXmCHG8+c8eS9e +nNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/ErfF6adulZkMV8gzURZVE= +-----END CERTIFICATE----- + +Baltimore CyberTrust Root +========================= +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE +ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li +ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC +SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs +dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME +uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB +UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C +G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9 +XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr +l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI +VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB +BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh +cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5 +hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa +Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H +RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp +-----END CERTIFICATE----- + +Equifax Secure Global eBusiness CA +================================== +-----BEGIN CERTIFICATE----- +MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp +bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx +HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds +b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV +PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN +qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn +hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j +BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs +MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN +I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY +NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV +-----END CERTIFICATE----- + +Equifax Secure eBusiness CA 1 +============================= +-----BEGIN CERTIFICATE----- +MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB +LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE +ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz +IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ +1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a +IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk +MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW +Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF +AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5 +lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+ +KpYrtWKmpj29f5JZzVoqgrI3eQ== +-----END CERTIFICATE----- + +AddTrust Low-Value Services Root +================================ +-----BEGIN CERTIFICATE----- +MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU +cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw +CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO +ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6 +54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr +oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1 +Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui +GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w +HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD +AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT +RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw +HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt +ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph +iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY +eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr +mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj +ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk= +-----END CERTIFICATE----- + +AddTrust External Root +====================== +-----BEGIN CERTIFICATE----- +MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD +VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw +NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU +cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg +Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821 ++iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw +Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo +aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy +2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7 +7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P +BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL +VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk +VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB +IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl +j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 +6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355 +e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u +G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= +-----END CERTIFICATE----- + +AddTrust Public Services Root +============================= +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU +cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ +BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l +dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu +nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i +d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG +Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw +HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G +A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux +FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G +A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4 +JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL ++YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao +GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9 +Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H +EufOX1362KqxMy3ZdvJOOjMMK7MtkAY= +-----END CERTIFICATE----- + +AddTrust Qualified Certificates Root +==================================== +-----BEGIN CERTIFICATE----- +MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU +cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx +CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ +IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx +64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3 +KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o +L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR +wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU +MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE +BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y +azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD +ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG +GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X +dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze +RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB +iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE= +-----END CERTIFICATE----- + +Entrust Root Certification Authority +==================================== +-----BEGIN CERTIFICATE----- +MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV +BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw +b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG +A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0 +MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu +MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu +Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v +dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz +A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww +Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68 +j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN +rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1 +MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH +hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA +A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM +Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa +v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS +W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0 +tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8 +-----END CERTIFICATE----- + +RSA Security 2048 v3 +==================== +-----BEGIN CERTIFICATE----- +MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK +ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy +MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb +BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7 +Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb +WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH +KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP ++Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/ +MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E +FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY +v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj +0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj +VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395 +nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA +pKnXwiJPZ9d37CAFYd4= +-----END CERTIFICATE----- + +GeoTrust Global CA +================== +-----BEGIN CERTIFICATE----- +MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK +Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw +MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j +LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo +BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet +8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc +T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU +vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk +DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q +zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4 +d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2 +mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p +XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm +Mw== +-----END CERTIFICATE----- + +GeoTrust Global CA 2 +==================== +-----BEGIN CERTIFICATE----- +MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw +MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j +LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/ +NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k +LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA +Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b +HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH +K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7 +srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh +ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL +OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC +x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF +H4z1Ir+rzoPz4iIprn2DQKi6bA== +-----END CERTIFICATE----- + +GeoTrust Universal CA +===================== +-----BEGIN CERTIFICATE----- +MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1 +MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu +Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t +JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e +RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs +7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d +8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V +qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga +Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB +Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu +KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08 +ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0 +XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB +hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc +aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2 +qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL +oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK +xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF +KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2 +DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK +xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU +p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI +P/rmMuGNG2+k5o7Y+SlIis5z/iw= +-----END CERTIFICATE----- + +GeoTrust Universal CA 2 +======================= +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0 +MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg +SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0 +DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17 +j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q +JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a +QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2 +WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP +20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn +ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC +SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG +8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2 ++/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E +BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z +dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ +4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+ +mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq +A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg +Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP +pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d +FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp +gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm +X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS +-----END CERTIFICATE----- + +America Online Root Certification Authority 1 +============================================= +-----BEGIN CERTIFICATE----- +MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG +A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg +T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG +v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z +DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh +sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP +8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T +AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z +o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf +GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF +VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft +3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g +Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds +sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7 +-----END CERTIFICATE----- + +America Online Root Certification Authority 2 +============================================= +-----BEGIN CERTIFICATE----- +MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkG +A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg +T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC206B89en +fHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFciKtZHgVdEglZTvYYUAQv8 +f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2JxhP7JsowtS013wMPgwr38oE18aO6lhO +qKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JN +RvCAOVIyD+OEsnpD8l7eXz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0 +gBe4lL8BPeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67Xnfn +6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEqZ8A9W6Wa6897Gqid +FEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZo2C7HK2JNDJiuEMhBnIMoVxtRsX6 +Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnj +B453cMor9H124HhnAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3Op +aaEg5+31IqEjFNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE +AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmnxPBUlgtk87FY +T15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2LHo1YGwRgJfMqZJS5ivmae2p ++DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzcccobGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXg +JXUjhx5c3LqdsKyzadsXg8n33gy8CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//Zoy +zH1kUQ7rVyZ2OuMeIjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgO +ZtMADjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2FAjgQ5ANh +1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUXOm/9riW99XJZZLF0Kjhf +GEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPbAZO1XB4Y3WRayhgoPmMEEf0cjQAPuDff +Z4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQlZvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuP +cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk= +-----END CERTIFICATE----- + +Visa eCommerce Root +=================== +-----BEGIN CERTIFICATE----- +MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG +EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug +QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2 +WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm +VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv +bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL +F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b +RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0 +TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI +/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs +GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG +MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc +CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW +YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz +zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu +YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt +398znM/jra6O1I7mT1GvFpLgXPYHDw== +-----END CERTIFICATE----- + +Certum Root CA +============== +-----BEGIN CERTIFICATE----- +MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK +ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla +Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u +by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x +wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL +kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ +89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K +Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P +NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq +hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+ +GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg +GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/ +0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS +qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw== +-----END CERTIFICATE----- + +Comodo AAA Services root +======================== +-----BEGIN CERTIFICATE----- +MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw +MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl +c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV +BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG +C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs +i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW +Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH +Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK +Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f +BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl +cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz +LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm +7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz +Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z +8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C +12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== +-----END CERTIFICATE----- + +Comodo Secure Services root +=========================== +-----BEGIN CERTIFICATE----- +MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw +MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu +Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi +BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP +9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc +rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC +oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V +p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E +FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w +gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj +YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm +aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm +4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj +Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL +DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw +pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H +RR3B7Hzs/Sk= +-----END CERTIFICATE----- + +Comodo Trusted Services root +============================ +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw +MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h +bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw +IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7 +3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y +/9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6 +juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS +ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud +DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp +ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl +cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw +uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32 +pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA +BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l +R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O +9y5Xt5hwXsjEeLBi +-----END CERTIFICATE----- + +QuoVadis Root CA +================ +-----BEGIN CERTIFICATE----- +MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE +ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 +eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz +MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp +cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD +EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk +J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL +F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL +YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen +AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w +PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y +ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7 +MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj +YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs +ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh +Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW +Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu +BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw +FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6 +tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo +fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul +LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x +gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi +5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi +5nrQNiOKSnQ2+Q== +-----END CERTIFICATE----- + +QuoVadis Root CA 2 +================== +-----BEGIN CERTIFICATE----- +MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT +EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx +ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6 +XJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk +lvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB +lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy +lZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt +66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn +wQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh +D7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy +BNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie +J0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud +DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU +a6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT +ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv +Z+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3 +UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm +VjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK ++JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW +IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1 +WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X +f6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II +4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8 +VCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u +-----END CERTIFICATE----- + +QuoVadis Root CA 3 +================== +-----BEGIN CERTIFICATE----- +MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT +EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx +OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg +DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij +KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K +DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv +BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp +p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8 +nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX +MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM +Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz +uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT +BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj +YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 +aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB +BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD +VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4 +ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE +AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV +qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s +hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z +POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2 +Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp +8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC +bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu +g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p +vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr +qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto= +-----END CERTIFICATE----- + +Security Communication Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw +8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM +DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX +5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd +DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2 +JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g +0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a +mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ +s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ +6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi +FL39vmwLAw== +-----END CERTIFICATE----- + +Sonera Class 2 Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG +U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw +NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh +IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3 +/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT +dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG +f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P +tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH +nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT +XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt +0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI +cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph +Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx +EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH +llpwrN9M +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA +============================= +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE +ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g +Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w +HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh +bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt +vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P +jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca +C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth +vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6 +22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV +HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v +dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN +BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR +EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw +MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y +nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR +iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw== +-----END CERTIFICATE----- + +TDC Internet Root CA +==================== +-----BEGIN CERTIFICATE----- +MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJESzEVMBMGA1UE +ChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTAeFw0wMTA0MDUx +NjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNVBAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJu +ZXQxHTAbBgNVBAsTFFREQyBJbnRlcm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAxLhAvJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20j +xsNuZp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a0vnRrEvL +znWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc14izbSysseLlJ28TQx5yc +5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGNeGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6 +otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcDR0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZI +AYb4QgEBBAQDAgAHMGUGA1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMM +VERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxMEQ1JM +MTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3WjALBgNVHQ8EBAMC +AQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAwHQYDVR0OBBYEFGxkAcf9hW2syNqe +UAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJKoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0G +CSqGSIb3DQEBBQUAA4IBAQBOQ8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540m +gwV5dOy0uaOXwTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+ +2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm899qNLPg7kbWzb +O0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0jUNAE4z9mQNUecYu6oah9jrU +Cbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38aQNiuJkFBT1reBK9sG9l +-----END CERTIFICATE----- + +UTN DATACorp SGC Root CA +======================== +-----BEGIN CERTIFICATE----- +MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZ +BgNVBAMTElVUTiAtIERBVEFDb3JwIFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBa +MIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w +HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRy +dXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ys +raP6LnD43m77VkIVni5c7yPeIbkFdicZD0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlo +wHDyUwDAXlCCpVZvNvlK4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA +9P4yPykqlXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulWbfXv +33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQABo4GrMIGoMAsGA1Ud +DwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRTMtGzz3/64PGgXYVOktKeRR20TzA9 +BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dD +LmNybDAqBgNVHSUEIzAhBggrBgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3 +DQEBBQUAA4IBAQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft +Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyjj98C5OBxOvG0 +I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVHKWss5nbZqSl9Mt3JNjy9rjXx +EZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwP +DPafepE39peC4N1xaf92P2BNPM/3mfnGV/TJVTl4uix5yaaIK/QI +-----END CERTIFICATE----- + +UTN USERFirst Hardware Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd +BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx +OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0 +eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz +ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI +wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd +tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8 +i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf +Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw +gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF +lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF +UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF +BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM +//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW +XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2 +lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn +iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67 +nfhmqA== +-----END CERTIFICATE----- + +Camerfirma Chambers of Commerce Root +==================================== +-----BEGIN CERTIFICATE----- +MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe +QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i +ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx +NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp +cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn +MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC +AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU +xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH +NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW +DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV +d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud +EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v +cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P +AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh +bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD +VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz +aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi +fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD +L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN +UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n +ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1 +erfutGWaIZDgqtCYvDi1czyL+Nw= +-----END CERTIFICATE----- + +Camerfirma Global Chambersign Root +================================== +-----BEGIN CERTIFICATE----- +MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe +QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i +ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx +NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt +YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg +MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw +ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J +1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O +by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl +6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c +8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/ +BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j +aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B +Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj +aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y +ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh +bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA +PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y +gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ +PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4 +IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes +t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A== +-----END CERTIFICATE----- + +NetLock Notary (Class A) Root +============================= +-----BEGIN CERTIFICATE----- +MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI +EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6 +dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j +ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX +DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH +EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD +VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz +cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM +D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ +z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC +/tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7 +tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6 +4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG +A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC +Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv +bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu +IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn +LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0 +ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz +IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh +IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu +b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh +bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg +Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp +bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5 +ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP +ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB +CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr +KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM +8CgHrTwXZoi1/baI +-----END CERTIFICATE----- + +NetLock Business (Class B) Root +=============================== +-----BEGIN CERTIFICATE----- +MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUxETAPBgNVBAcT +CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV +BAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQDEylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikg +VGFudXNpdHZhbnlraWFkbzAeFw05OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYD +VQQGEwJIVTERMA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRv +bnNhZ2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5ldExvY2sg +VXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB +iQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xKgZjupNTKihe5In+DCnVMm8Bp2GQ5o+2S +o/1bXHQawEfKOml2mrriRBf8TKPV/riXiK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr +1nGTLbO/CVRY7QbrqHvcQ7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV +HQ8BAf8EBAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZ +RUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRh +dGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQuIEEgaGl0 +ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRv +c2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUg +YXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh +c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBz +Oi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6ZXNA +bmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhl +IHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2 +YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBj +cHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06sPgzTEdM +43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXan3BukxowOR0w2y7jfLKR +stE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKSNitjrFgBazMpUIaD8QFI +-----END CERTIFICATE----- + +NetLock Express (Class C) Root +============================== +-----BEGIN CERTIFICATE----- +MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUxETAPBgNVBAcT +CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV +BAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQDEytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBD +KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJ +BgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6 +dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMrTmV0TG9j +ayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzANBgkqhkiG9w0BAQEFAAOB +jQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNAOoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3Z +W3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63 +euyucYT2BDMIJTLrdKwWRMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQw +DgYDVR0PAQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEWggJN +RklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0YWxhbm9zIFN6b2xn +YWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBB +IGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBOZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1i +aXp0b3NpdGFzYSB2ZWRpLiBBIGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0 +ZWxlIGF6IGVsb2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs +ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25sYXBqYW4gYSBo +dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kga2VyaGV0byBheiBlbGxlbm9y +emVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4gSU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5k +IHRoZSB1c2Ugb2YgdGhpcyBjZXJ0aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQ +UyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwg +YXQgY3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmYta3UzbM2 +xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2gpO0u9f38vf5NNwgMvOOW +gyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4Fp1hBWeAyNDYpQcCNJgEjTME1A== +-----END CERTIFICATE----- + +XRamp Global CA Root +==================== +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE +BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj +dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx +HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg +U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu +IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx +foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE +zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs +AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry +xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap +oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC +AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc +/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt +qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n +nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz +8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw= +-----END CERTIFICATE----- + +Go Daddy Class 2 CA +=================== +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY +VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG +A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g +RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD +ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv +2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32 +qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j +YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY +vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O +BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o +atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu +MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG +A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim +PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt +I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI +Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b +vZ8= +-----END CERTIFICATE----- + +Starfield Class 2 CA +==================== +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc +U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo +MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG +A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG +SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY +bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ +JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm +epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN +F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF +MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f +hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo +bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g +QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs +afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM +PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl +xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD +KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3 +QBFGmh95DmK/D5fs4C8fF5Q= +-----END CERTIFICATE----- + +StartCom Certification Authority +================================ +-----BEGIN CERTIFICATE----- +MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN +U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu +ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0 +NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk +LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg +U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y +o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/ +Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d +eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt +2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z +6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ +osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/ +untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc +UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT +37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE +FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0 +Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj +YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH +AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw +Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg +U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5 +LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl +cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh +cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT +dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC +AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh +3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm +vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk +fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3 +fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ +EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq +yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl +1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/ +lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro +g14= +-----END CERTIFICATE----- + +Taiwan GRCA +=========== +-----BEGIN CERTIFICATE----- +MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG +EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X +DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv +dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN +w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5 +BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O +1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO +htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov +J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7 +Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t +B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB +O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8 +lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV +HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2 +09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ +TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj +Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2 +Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU +D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz +DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk +Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk +7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ +CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy ++fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS +-----END CERTIFICATE----- + +Swisscom Root CA 1 +================== +-----BEGIN CERTIFICATE----- +MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQG +EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy +dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4 +MTgyMjA2MjBaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln +aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIIC +IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9m2BtRsiM +MW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdihFvkcxC7mlSpnzNApbjyF +NDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/TilftKaNXXsLmREDA/7n29uj/x2lzZAe +AR81sH8A25Bvxn570e56eqeqDFdvpG3FEzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkC +b6dJtDZd0KTeByy2dbcokdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn +7uHbHaBuHYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNFvJbN +cA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo19AOeCMgkckkKmUp +WyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjCL3UcPX7ape8eYIVpQtPM+GP+HkM5 +haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJWbjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNY +MUJDLXT5xp6mig/p/r+D5kNXJLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw +HQYDVR0hBBYwFDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j +BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzcK6FptWfUjNP9 +MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzfky9NfEBWMXrrpA9gzXrzvsMn +jgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7IkVh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQ +MbFamIp1TpBcahQq4FJHgmDmHtqBsfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4H +VtA4oJVwIHaM190e3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtl +vrsRls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ipmXeascCl +OS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HHb6D0jqTsNFFbjCYDcKF3 +1QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksfrK/7DZBaZmBwXarNeNQk7shBoJMBkpxq +nvy5JMWzFYJ+vq6VK+uxwNrjAWALXmmshFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCy +x/yP2FS1k2Kdzs9Z+z0YzirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMW +NY6E0F/6MBr1mmz0DlP5OlvRHA== +-----END CERTIFICATE----- + +DigiCert Assured ID Root CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw +IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx +MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL +ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO +9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy +UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW +/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy +oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf +GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF +66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq +hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc +EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn +SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i +8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe ++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== +-----END CERTIFICATE----- + +DigiCert Global Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw +HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw +MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 +dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn +TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5 +BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H +4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y +7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB +o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm +8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF +BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr +EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt +tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886 +UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk +CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +-----END CERTIFICATE----- + +DigiCert High Assurance EV Root CA +================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw +KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw +MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ +MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu +Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t +Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS +OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3 +MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ +NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe +h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB +Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY +JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ +V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp +myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK +mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe +vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K +-----END CERTIFICATE----- + +Certplus Class 2 Primary CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE +BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN +OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy +dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR +5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ +Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO +YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e +e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME +CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ +YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t +L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD +P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R +TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+ +7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW +//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7 +l7+ijrRU +-----END CERTIFICATE----- + +DST Root CA X3 +============== +-----BEGIN CERTIFICATE----- +MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK +ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X +DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1 +cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT +rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9 +UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy +xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d +utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ +MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug +dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE +GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw +RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS +fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ +-----END CERTIFICATE----- + +DST ACES CA X6 +============== +-----BEGIN CERTIFICATE----- +MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT +MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha +MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE +CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI +DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa +pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow +GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy +MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud +EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu +Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy +dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU +CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2 +5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t +Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq +nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs +vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3 +oKfN5XozNmr6mis= +-----END CERTIFICATE----- + +TURKTRUST Certificate Services Provider Root 1 +============================================== +-----BEGIN CERTIFICATE----- +MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOcUktUUlVTVCBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGDAJUUjEP +MA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykgMjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0 +acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMx +MDI3MTdaFw0xNTAzMjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsg +U2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYDVQQHDAZB +TktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBC +aWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GX +yGl8hMW0kWxsE2qkVa2kheiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8i +Si9BB35JYbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5CurKZ +8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1JuTm5Rh8i27fbMx4 +W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51b0dewQIDAQABoxAwDjAMBgNVHRME +BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46 +sWrv7/hg0Uw2ZkUd82YCdAR7kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxE +q8Sn5RTOPEFhfEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy +B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdAaLX/7KfS0zgY +nNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKSRGQDJereW26fyfJOrN3H +-----END CERTIFICATE----- + +TURKTRUST Certificate Services Provider Root 2 +============================================== +-----BEGIN CERTIFICATE----- +MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP +MA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg +QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcN +MDUxMTA3MTAwNzU3WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVr +dHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEPMA0G +A1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls +acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqe +LCDe2JAOCtFp0if7qnefJ1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKI +x+XlZEdhR3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJQv2g +QrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGXJHpsmxcPbe9TmJEr +5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1pzpwACPI2/z7woQ8arBT9pmAPAgMB +AAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58SFq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8G +A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/ntt +Rbj2hWyfIvwqECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4 +Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFzgw2lGh1uEpJ+ +hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotHuFEJjOp9zYhys2AzsfAKRO8P +9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LSy3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5 +UrbnBEI= +-----END CERTIFICATE----- + +SwissSign Gold CA - G2 +====================== +-----BEGIN CERTIFICATE----- +MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNIMRUw +EwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2lnbiBHb2xkIENBIC0gRzIwHhcN +MDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBFMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dp +c3NTaWduIEFHMR8wHQYDVQQDExZTd2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUq +t2/876LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+bbqBHH5C +jCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c6bM8K8vzARO/Ws/BtQpg +vd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqEemA8atufK+ze3gE/bk3lUIbLtK/tREDF +ylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR +AiTysybUa9oEVeXBCsdtMDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuend +jIj3o02yMszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69yFGkO +peUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPiaG59je883WX0XaxR +7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi +GqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUWyV7lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64 +OfPAeGZe6Drn8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov +L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm +5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr +44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOf +Mke6UiI0HTJ6CVanfCU2qT1L2sCCbwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6m +Gu6uLftIdxf+u+yvGPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxp +mo/a77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCChdiDyyJk +vC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf +KzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEppLd6leNcG2mqeSz53OiATIgHQv2ieY2Br +NU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj +viOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ +-----END CERTIFICATE----- + +SwissSign Silver CA - G2 +======================== +-----BEGIN CERTIFICATE----- +MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT +BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X +DTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0NlowRzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3 +aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG +9w0BAQEFAAOCAg8AMIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644 +N0MvFz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7brYT7QbNHm ++/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieFnbAVlDLaYQ1HTWBCrpJH +6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH6ATK72oxh9TAtvmUcXtnZLi2kUpCe2Uu +MGoM9ZDulebyzYLs2aFK7PayS+VFheZteJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5h +qAaEuSh6XzjZG6k4sIN/c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5 +FZGkECwJMoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRHHTBs +ROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTfjNFusB3hB48IHpmc +celM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb65i/4z3GcRm25xBWNOHkDRUjvxF3X +CO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB +tjpbO8tFnb0cwpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0 +cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBAHPGgeAn0i0P +4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShpWJHckRE1qTodvBqlYJ7YH39F +kWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L +3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx +/uNncqCxv1yL5PqZIseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFa +DGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP +e97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQRdAtq/gsD/KNVV4n+Ssuu +WxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ +DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub +DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority +======================================== +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx +CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ +cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN +b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9 +nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge +RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt +tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI +hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K +Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN +NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa +Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG +1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= +-----END CERTIFICATE----- + +thawte Primary Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE +BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 +aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3 +MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg +SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv +KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT +FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs +oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ +1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc +q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K +aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p +afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD +VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF +AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE +uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX +xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89 +jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH +z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G5 +============================================================ +-----BEGIN CERTIFICATE----- +MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE +BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO +ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk +IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln +biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh +dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz +j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD +Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/ +Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r +fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/ +BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv +Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy +aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG +SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+ +X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE +KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC +Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE +ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq +-----END CERTIFICATE----- + +SecureTrust CA +============== +-----BEGIN CERTIFICATE----- +MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy +dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe +BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX +OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t +DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH +GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b +01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH +ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj +aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu +SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf +mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ +nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR +3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= +-----END CERTIFICATE----- + +Secure Global CA +================ +-----BEGIN CERTIFICATE----- +MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH +bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg +MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg +Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx +YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ +bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g +8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV +HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi +0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn +oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA +MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+ +OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn +CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5 +3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc +f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW +-----END CERTIFICATE----- + +COMODO Certification Authority +============================== +-----BEGIN CERTIFICATE----- +MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE +BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG +A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb +MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD +T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH ++7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww +xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV +4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA +1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI +rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k +b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC +AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP +OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ +RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc +IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN ++8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ== +-----END CERTIFICATE----- + +Network Solutions Certificate Authority +======================================= +-----BEGIN CERTIFICATE----- +MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG +EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr +IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx +MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu +MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx +jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT +aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT +crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc +/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB +AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv +bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA +A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q +4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/ +GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv +wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD +ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey +-----END CERTIFICATE----- + +WellsSecure Public Root Certificate Authority +============================================= +-----BEGIN CERTIFICATE----- +MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM +F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw +NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN +MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl +bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD +VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1 +iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13 +i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8 +bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB +K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB +AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu +cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm +lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB +i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww +GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg +Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI +K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0 +bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj +qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es +E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ +tylv2G0xffX8oRAHh84vWdw+WNs= +-----END CERTIFICATE----- + +COMODO ECC Certification Authority +================================== +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC +R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE +ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix +GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR +Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo +b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X +4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni +wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG +FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA +U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- + +IGC/A +===== +-----BEGIN CERTIFICATE----- +MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD +VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE +Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy +MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI +EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT +STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB +IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2 +TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW +So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy +HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd +frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ +tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB +egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC +iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK +q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q +MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg +Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI +lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF +0mBWWg== +-----END CERTIFICATE----- + +Security Communication EV RootCA1 +================================= +-----BEGIN CERTIFICATE----- +MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc +U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh +dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE +BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl +Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO +/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX +WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z +ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4 +bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK +9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG +SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm +iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG +Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW +mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW +T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490 +-----END CERTIFICATE----- + +OISTE WISeKey Global Root GA CA +=============================== +-----BEGIN CERTIFICATE----- +MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE +BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG +A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH +bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD +VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw +IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5 +IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9 +Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg +Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD +d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ +/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R +LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm +MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4 ++vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa +hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY +okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0= +-----END CERTIFICATE----- + +Microsec e-Szigno Root CA +========================= +-----BEGIN CERTIFICATE----- +MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE +BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL +EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0 +MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz +dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT +GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG +d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N +oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc +QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ +PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb +MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG +IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD +VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3 +LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A +dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn +AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA +4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg +AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA +egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6 +Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO +PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv +c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h +cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw +IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT +WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV +MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER +MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp +Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal +HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT +nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE +aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a +86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK +yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB +S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU= +-----END CERTIFICATE----- + +Certigna +======== +-----BEGIN CERTIFICATE----- +MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw +EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3 +MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI +Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q +XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH +GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p +ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg +DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf +Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ +tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ +BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J +SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA +hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+ +ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu +PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY +1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw +WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== +-----END CERTIFICATE----- + +AC Ra\xC3\xADz Certic\xC3\xA1mara S.A. +====================================== +-----BEGIN CERTIFICATE----- +MIIGZjCCBE6gAwIBAgIPB35Sk3vgFeNX8GmMy+wMMA0GCSqGSIb3DQEBBQUAMHsxCzAJBgNVBAYT +AkNPMUcwRQYDVQQKDD5Tb2NpZWRhZCBDYW1lcmFsIGRlIENlcnRpZmljYWNpw7NuIERpZ2l0YWwg +LSBDZXJ0aWPDoW1hcmEgUy5BLjEjMCEGA1UEAwwaQUMgUmHDrXogQ2VydGljw6FtYXJhIFMuQS4w +HhcNMDYxMTI3MjA0NjI5WhcNMzAwNDAyMjE0MjAyWjB7MQswCQYDVQQGEwJDTzFHMEUGA1UECgw+ +U29jaWVkYWQgQ2FtZXJhbCBkZSBDZXJ0aWZpY2FjacOzbiBEaWdpdGFsIC0gQ2VydGljw6FtYXJh +IFMuQS4xIzAhBgNVBAMMGkFDIFJhw616IENlcnRpY8OhbWFyYSBTLkEuMIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEAq2uJo1PMSCMI+8PPUZYILrgIem08kBeGqentLhM0R7LQcNzJPNCN +yu5LF6vQhbCnIwTLqKL85XXbQMpiiY9QngE9JlsYhBzLfDe3fezTf3MZsGqy2IiKLUV0qPezuMDU +2s0iiXRNWhU5cxh0T7XrmafBHoi0wpOQY5fzp6cSsgkiBzPZkc0OnB8OIMfuuzONj8LSWKdf/WU3 +4ojC2I+GdV75LaeHM/J4Ny+LvB2GNzmxlPLYvEqcgxhaBvzz1NS6jBUJJfD5to0EfhcSM2tXSExP +2yYe68yQ54v5aHxwD6Mq0Do43zeX4lvegGHTgNiRg0JaTASJaBE8rF9ogEHMYELODVoqDA+bMMCm +8Ibbq0nXl21Ii/kDwFJnmxL3wvIumGVC2daa49AZMQyth9VXAnow6IYm+48jilSH5L887uvDdUhf +HjlvgWJsxS3EF1QZtzeNnDeRyPYL1epjb4OsOMLzP96a++EjYfDIJss2yKHzMI+ko6Kh3VOz3vCa +Mh+DkXkwwakfU5tTohVTP92dsxA7SH2JD/ztA/X7JWR1DhcZDY8AFmd5ekD8LVkH2ZD6mq093ICK +5lw1omdMEWux+IBkAC1vImHFrEsm5VoQgpukg3s0956JkSCXjrdCx2bD0Omk1vUgjcTDlaxECp1b +czwmPS9KvqfJpxAe+59QafMCAwEAAaOB5jCB4zAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE +AwIBBjAdBgNVHQ4EFgQU0QnQ6dfOeXRU+Tows/RtLAMDG2gwgaAGA1UdIASBmDCBlTCBkgYEVR0g +ADCBiTArBggrBgEFBQcCARYfaHR0cDovL3d3dy5jZXJ0aWNhbWFyYS5jb20vZHBjLzBaBggrBgEF +BQcCAjBOGkxMaW1pdGFjaW9uZXMgZGUgZ2FyYW507WFzIGRlIGVzdGUgY2VydGlmaWNhZG8gc2Ug +cHVlZGVuIGVuY29udHJhciBlbiBsYSBEUEMuMA0GCSqGSIb3DQEBBQUAA4ICAQBclLW4RZFNjmEf +AygPU3zmpFmps4p6xbD/CHwso3EcIRNnoZUSQDWDg4902zNc8El2CoFS3UnUmjIz75uny3XlesuX +EpBcunvFm9+7OSPI/5jOCk0iAUgHforA1SBClETvv3eiiWdIG0ADBaGJ7M9i4z0ldma/Jre7Ir5v +/zlXdLp6yQGVwZVR6Kss+LGGIOk/yzVb0hfpKv6DExdA7ohiZVvVO2Dpezy4ydV/NgIlqmjCMRW3 +MGXrfx1IebHPOeJCgBbT9ZMj/EyXyVo3bHwi2ErN0o42gzmRkBDI8ck1fj+404HGIGQatlDCIaR4 +3NAvO2STdPCWkPHv+wlaNECW8DYSwaN0jJN+Qd53i+yG2dIPPy3RzECiiWZIHiCznCNZc6lEc7wk +eZBWN7PGKX6jD/EpOe9+XCgycDWs2rjIdWb8m0w5R44bb5tNAlQiM+9hup4phO9OSzNHdpdqy35f +/RWmnkJDW2ZaiogN9xa5P1FlK2Zqi9E4UqLWRhH6/JocdJ6PlwsCT2TG9WjTSy3/pDceiz+/RL5h +RqGEPQgnTIEgd4kI6mdAXmwIUV80WoyWaM3X94nCHNMyAK9Sy9NgWyo6R35rMDOhYil/SrnhLecU +Iw4OGEfhefwVVdCx/CVxY3UzHCMrr1zZ7Ud3YA47Dx7SwNxkBYn8eNZcLCZDqQ== +-----END CERTIFICATE----- + +TC TrustCenter Class 2 CA II +============================ +-----BEGIN CERTIFICATE----- +MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy +IENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYw +MTEyMTQzODQzWhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1 +c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UE +AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jftMjWQ+nEdVl//OEd+DFw +IxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKguNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2 +xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2JXjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQ +Xa7pIXSSTYtZgo+U4+lK8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7u +SNQZu+995OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3kUrL84J6E1wIqzCB +7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90 +Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU +cnVzdENlbnRlciUyMENsYXNzJTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i +SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u +TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iSGNn3Bzn1LL4G +dXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprtZjluS5TmVfwLG4t3wVMTZonZ +KNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8au0WOB9/WIFaGusyiC2y8zl3gK9etmF1Kdsj +TYjKUCjLhdLTEKJZbtOTVAB6okaVhgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kP +JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk +vQ== +-----END CERTIFICATE----- + +TC TrustCenter Class 3 CA II +============================ +-----BEGIN CERTIFICATE----- +MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy +IENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYw +MTEyMTQ0MTU3WhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1 +c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UE +AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJWHt4bNwcwIi9v8Qbxq63W +yKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+QVl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo +6SI7dYnWRBpl8huXJh0obazovVkdKyT21oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZ +uV3bOx4a+9P/FRQI2AlqukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk +2ZyqBwi1Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NXXAek0CSnwPIA1DCB +7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90 +Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU +cnVzdENlbnRlciUyMENsYXNzJTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i +SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u +TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlNirTzwppVMXzE +O2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8TtXqluJucsG7Kv5sbviRmEb8 +yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9 +IJqDnxrcOfHFcqMRA/07QlIp2+gB95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal +092Y+tTmBvTwtiBjS+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc +5A== +-----END CERTIFICATE----- + +TC TrustCenter Universal CA I +============================= +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy +IFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcN +MDYwMzIyMTU1NDI4WhcNMjUxMjMxMjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMg +VHJ1c3RDZW50ZXIgR21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYw +JAYDVQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSRJJZ4Hgmgm5qVSkr1YnwC +qMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3TfCZdzHd55yx4Oagmcw6iXSVphU9VDprv +xrlE4Vc93x9UIuVvZaozhDrzznq+VZeujRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtw +ag+1m7Z3W0hZneTvWq3zwZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9O +gdwZu5GQfezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYDVR0j +BBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0GCSqGSIb3DQEBBQUAA4IBAQAo0uCG +1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X17caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/Cy +vwbZ71q+s2IhtNerNXxTPqYn8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3 +ghUJGooWMNjsydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT +ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/2TYcuiUaUj0a +7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY +-----END CERTIFICATE----- + +Deutsche Telekom Root CA 2 +========================== +-----BEGIN CERTIFICATE----- +MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT +RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG +A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5 +MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G +A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS +b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5 +bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI +KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY +AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK +Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV +jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV +HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr +E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy +zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8 +rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G +dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU +Cm26OWMohpLzGITY+9HPBVZkVw== +-----END CERTIFICATE----- + +ComSign Secured CA +================== +-----BEGIN CERTIFICATE----- +MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAwPDEbMBkGA1UE +AxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0w +NDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwxGzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBD +QTEQMA4GA1UEChMHQ29tU2lnbjELMAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQDGtWhfHZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs +49ohgHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sWv+bznkqH +7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ueMv5WJDmyVIRD9YTC2LxB +kMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d1 +9guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUw +AwEB/zBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29t +U2lnblNlY3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58ADsA +j8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkqhkiG9w0BAQUFAAOC +AQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7piL1DRYHjZiM/EoZNGeQFsOY3wo3a +BijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtCdsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtp +FhpFfTMDZflScZAmlaxMDPWLkz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP +51qJThRv4zdLhfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz +OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw== +-----END CERTIFICATE----- + +Cybertrust Global Root +====================== +-----BEGIN CERTIFICATE----- +MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li +ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4 +MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD +ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA ++Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW +0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL +AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin +89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT +8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2 +MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G +A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO +lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi +5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2 +hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T +X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW +WL1WMRJOEcgh4LMRkWXbtKaIOM5V +-----END CERTIFICATE----- + +ePKI Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG +EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg +Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx +MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq +MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs +IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi +lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv +qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX +12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O +WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+ +ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao +lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/ +vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi +Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi +MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH +ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0 +1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq +KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV +xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP +NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r +GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE +xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx +gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy +sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD +BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw= +-----END CERTIFICATE----- + +T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3 +============================================================================================================================= +-----BEGIN CERTIFICATE----- +MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRSMRgwFgYDVQQH +DA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJpbGltc2VsIHZlIFRla25vbG9q +aWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSwVEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ry +b25payB2ZSBLcmlwdG9sb2ppIEFyYcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNV +BAsMGkthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUg +S8O2ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAeFw0wNzA4 +MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIxGDAWBgNVBAcMD0dlYnpl +IC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmlsaW1zZWwgdmUgVGVrbm9sb2ppayBBcmHF +n3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBUQUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZl +IEtyaXB0b2xvamkgQXJhxZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2Ft +dSBTZXJ0aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7ZrIFNl +cnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4hgb46ezzb8R1Sf1n68yJMlaCQvEhO +Eav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yKO7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1 +xnnRFDDtG1hba+818qEhTsXOfJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR +6Oqeyjh1jmKwlZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL +hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQIDAQABo0IwQDAd +BgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF +MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmPNOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4 +N5EY3ATIZJkrGG2AA1nJrvhY0D7twyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLT +y9LQQfMmNkqblWwM7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYh +LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M +dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI= +-----END CERTIFICATE----- + +Buypass Class 2 CA 1 +==================== +-----BEGIN CERTIFICATE----- +MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMiBDQSAxMB4XDTA2 +MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh +c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7M +cXA0ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLXl18xoS83 +0r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVBHfCuuCkslFJgNJQ72uA4 +0Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/R +uFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0P +AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLPgcIV +1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+DKhQ7SLHrQVMdvvt +7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKuBctN518fV4bVIJwo+28TOPX2EZL2 +fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHsh7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5w +wDX3OaJdZtB7WZ+oRxKaJyOkLY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho +-----END CERTIFICATE----- + +Buypass Class 3 CA 1 +==================== +-----BEGIN CERTIFICATE----- +MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMyBDQSAxMB4XDTA1 +MDUwOTE0MTMwM1oXDTE1MDUwOTE0MTMwM1owSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh +c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDMgQ0EgMTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAKSO13TZKWTeXx+HgJHqTjnmGcZEC4DVC69TB4sSveZn8AKx +ifZgisRbsELRwCGoy+Gb72RRtqfPFfV0gGgEkKBYouZ0plNTVUhjP5JW3SROjvi6K//zNIqeKNc0 +n6wv1g/xpC+9UrJJhW05NfBEMJNGJPO251P7vGGvqaMU+8IXF4Rs4HyI+MkcVyzwPX6UvCWThOia +AJpFBUJXgPROztmuOfbIUxAMZTpHe2DC1vqRycZxbL2RhzyRhkmr8w+gbCZ2Xhysm3HljbybIR6c +1jh+JIAVMYKWsUnTYjdbiAwKYjT+p0h+mbEwi5A3lRyoH6UsjfRVyNvdWQrCrXig9IsCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUOBTmyPCppAP0Tj4io1vy1uCtQHQwDgYDVR0P +AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQABZ6OMySU9E2NdFm/soT4JXJEVKirZgCFPBdy7 +pYmrEzMqnji3jG8CcmPHc3ceCQa6Oyh7pEfJYWsICCD8igWKH7y6xsL+z27sEzNxZy5p+qksP2bA +EllNC1QCkoS72xLvg3BweMhT+t/Gxv/ciC8HwEmdMldg0/L2mSlf56oBzKwzqBwKu5HEA6BvtjT5 +htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yCe/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQj +el/wroQk5PMr+4okoyeYZdowdXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915 +-----END CERTIFICATE----- + +EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 +========================================================================== +-----BEGIN CERTIFICATE----- +MIIF5zCCA8+gAwIBAgIITK9zQhyOdAIwDQYJKoZIhvcNAQEFBQAwgYAxODA2BgNVBAMML0VCRyBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMTcwNQYDVQQKDC5FQkcg +QmlsacWfaW0gVGVrbm9sb2ppbGVyaSB2ZSBIaXptZXRsZXJpIEEuxZ4uMQswCQYDVQQGEwJUUjAe +Fw0wNjA4MTcwMDIxMDlaFw0xNjA4MTQwMDMxMDlaMIGAMTgwNgYDVQQDDC9FQkcgRWxla3Ryb25p +ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTE3MDUGA1UECgwuRUJHIEJpbGnFn2lt +IFRla25vbG9qaWxlcmkgdmUgSGl6bWV0bGVyaSBBLsWeLjELMAkGA1UEBhMCVFIwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQDuoIRh0DpqZhAy2DE4f6en5f2h4fuXd7hxlugTlkaDT7by +X3JWbhNgpQGR4lvFzVcfd2NR/y8927k/qqk153nQ9dAktiHq6yOU/im/+4mRDGSaBUorzAzu8T2b +gmmkTPiab+ci2hC6X5L8GCcKqKpE+i4stPtGmggDg3KriORqcsnlZR9uKg+ds+g75AxuetpX/dfr +eYteIAbTdgtsApWjluTLdlHRKJ2hGvxEok3MenaoDT2/F08iiFD9rrbskFBKW5+VQarKD7JK/oCZ +TqNGFav4c0JqwmZ2sQomFd2TkuzbqV9UIlKRcF0T6kjsbgNs2d1s/OsNA/+mgxKb8amTD8UmTDGy +Y5lhcucqZJnSuOl14nypqZoaqsNW2xCaPINStnuWt6yHd6i58mcLlEOzrz5z+kI2sSXFCjEmN1Zn +uqMLfdb3ic1nobc6HmZP9qBVFCVMLDMNpkGMvQQxahByCp0OLna9XvNRiYuoP1Vzv9s6xiQFlpJI +qkuNKgPlV5EQ9GooFW5Hd4RcUXSfGenmHmMWOeMRFeNYGkS9y8RsZteEBt8w9DeiQyJ50hBs37vm +ExH8nYQKE3vwO9D8owrXieqWfo1IhR5kX9tUoqzVegJ5a9KK8GfaZXINFHDk6Y54jzJ0fFfy1tb0 +Nokb+Clsi7n2l9GkLqq+CxnCRelwXQIDAJ3Zo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB +/wQEAwIBBjAdBgNVHQ4EFgQU587GT/wWZ5b6SqMHwQSny2re2kcwHwYDVR0jBBgwFoAU587GT/wW +Z5b6SqMHwQSny2re2kcwDQYJKoZIhvcNAQEFBQADggIBAJuYml2+8ygjdsZs93/mQJ7ANtyVDR2t +FcU22NU57/IeIl6zgrRdu0waypIN30ckHrMk2pGI6YNw3ZPX6bqz3xZaPt7gyPvT/Wwp+BVGoGgm +zJNSroIBk5DKd8pNSe/iWtkqvTDOTLKBtjDOWU/aWR1qeqRFsIImgYZ29fUQALjuswnoT4cCB64k +XPBfrAowzIpAoHMEwfuJJPaaHFy3PApnNgUIMbOv2AFoKuB4j3TeuFGkjGwgPaL7s9QJ/XvCgKqT +bCmYIai7FvOpEl90tYeY8pUm3zTvilORiF0alKM/fCL414i6poyWqD1SNGKfAB5UVUJnxk1Gj7sU +RT0KlhaOEKGXmdXTMIXM3rRyt7yKPBgpaP3ccQfuJDlq+u2lrDgv+R4QDgZxGhBM/nV+/x5XOULK +1+EVoVZVWRvRo68R2E7DpSvvkL/A7IITW43WciyTTo9qKd+FPNMN4KIYEsxVL0e3p5sC/kH2iExt +2qkBR4NkJ2IQgtYSe14DHzSpyZH+r11thie3I6p1GMog57AP14kOpmciY/SDQSsGS7tY1dHXt7kQ +Y9iJSrSq3RZj9W6+YKH47ejWkE8axsWgKdOnIaj1Wjz3x0miIZpKlVIglnKaZsv30oZDfCK+lvm9 +AahH3eU7QPl1K5srRmSGjR70j/sHd9DqSaIcjVIUpgqT +-----END CERTIFICATE----- + +certSIGN ROOT CA +================ +-----BEGIN CERTIFICATE----- +MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD +VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa +Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE +CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I +JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH +rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2 +ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD +0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943 +AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B +Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB +AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8 +SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0 +x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt +vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz +TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD +-----END CERTIFICATE----- + +CNNIC ROOT +========== +-----BEGIN CERTIFICATE----- +MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE +ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw +OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD +o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz +VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT +VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or +czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK +y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC +wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S +lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5 +Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM +O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8 +BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2 +G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m +mxE= +-----END CERTIFICATE----- + +ApplicationCA - Japanese Government +=================================== +-----BEGIN CERTIFICATE----- +MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEcMBoGA1UEChMT +SmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRpb25DQTAeFw0wNzEyMTIxNTAw +MDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYTAkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zl +cm5tZW50MRYwFAYDVQQLEw1BcHBsaWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAp23gdE6Hj6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4 +fl+Kf5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55IrmTwcrN +wVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cwFO5cjFW6WY2H/CPek9AE +jP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDihtQWEjdnjDuGWk81quzMKq2edY3rZ+nYVu +nyoKb58DKTCXKB28t89UKU5RMfkntigm/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRU +WssmP3HMlEYNllPqa0jQk/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNV +BAYTAkpQMRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOCseOD +vOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADlqRHZ3ODrs +o2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJhyzjVOGjprIIC8CFqMjSnHH2HZ9g +/DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYD +io+nEhEMy/0/ecGc/WLuo89UDNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmW +dupwX3kSa+SjB1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL +rosot4LKGAfmt1t06SAZf7IbiVQ= +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority - G3 +============================================= +-----BEGIN CERTIFICATE----- +MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE +BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0 +IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz +NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo +YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT +LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j +K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE +c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C +IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu +dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr +2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9 +cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE +Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD +AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s +t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt +-----END CERTIFICATE----- + +thawte Primary Root CA - G2 +=========================== +-----BEGIN CERTIFICATE----- +MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC +VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu +IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg +Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV +MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG +b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt +IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS +LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5 +8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU +mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN +G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K +rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== +-----END CERTIFICATE----- + +thawte Primary Root CA - G3 +=========================== +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE +BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 +aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w +ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh +d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD +VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG +A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At +P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC ++BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY +7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW +vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ +KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK +A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu +t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC +8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm +er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A= +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority - G2 +============================================= +-----BEGIN CERTIFICATE----- +MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu +Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1 +OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg +MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl +b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG +BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc +KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD +VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+ +EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m +ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2 +npaqBA+K +-----END CERTIFICATE----- + +VeriSign Universal Root Certification Authority +=============================================== +-----BEGIN CERTIFICATE----- +MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE +BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO +ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk +IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u +IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj +1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP +MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72 +9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I +AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR +tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G +CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O +a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud +DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3 +Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx +Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx +P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P +wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4 +mJO37M2CYfE45k+XmCpajQ== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G4 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC +VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3 +b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz +ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU +cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo +b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8 +Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz +rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw +HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u +Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD +A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx +AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== +-----END CERTIFICATE----- + +NetLock Arany (Class Gold) Főtanúsítvány +============================================ +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G +A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610 +dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB +cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx +MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO +ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6 +c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu +0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw +/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk +H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw +fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1 +neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW +qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta +YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC +bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna +NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu +dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA - G2 +================================== +-----BEGIN CERTIFICATE----- +MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE +CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g +Um9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oXDTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMC +TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l +ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ +5291qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8SpuOUfiUtn +vWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPUZ5uW6M7XxgpT0GtJlvOj +CwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvEpMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiil +e7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCR +OME4HYYEhLoaJXhena/MUGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpI +CT0ugpTNGmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy5V65 +48r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv6q012iDTiIJh8BIi +trzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEKeN5KzlW/HdXZt1bv8Hb/C3m1r737 +qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMB +AAGjgZcwgZQwDwYDVR0TAQH/BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcC +ARYxaHR0cDovL3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV +HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqGSIb3DQEBCwUA +A4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLySCZa59sCrI2AGeYwRTlHSeYAz ++51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwj +f/ST7ZwaUb7dRUG/kSS0H4zpX897IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaN +kqbG9AclVMwWVxJKgnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfk +CpYL+63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxLvJxxcypF +URmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkmbEgeqmiSBeGCc1qb3Adb +CG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvkN1trSt8sV4pAWja63XVECDdCcAz+3F4h +oKOKwJCcaNpQ5kUQR3i2TtJlycM33+FCY7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoV +IPVVYpbtbZNQvOSqeK3Zywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm +66+KAQ== +-----END CERTIFICATE----- + +CA Disig +======== +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMK +QnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwHhcNMDYw +MzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlz +bGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgm +GErENx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnXmjxUizkD +Pw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYDXcDtab86wYqg6I7ZuUUo +hwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhWS8+2rT+MitcE5eN4TPWGqvWP+j1scaMt +ymfraHtuM6kMgiioTGohQBUgDCZbg8KpFhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8w +gfwwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0P +AQH/BAQDAgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cuZGlz +aWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5zay9jYS9jcmwvY2Ff +ZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2svY2EvY3JsL2NhX2Rpc2lnLmNybDAa +BgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEwDQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59t +WDYcPQuBDRIrRhCA/ec8J9B6yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3 +mkkp7M5+cTxqEEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/ +CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeBEicTXxChds6K +ezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFNPGO+I++MzVpQuGhU+QqZMxEA +4Z7CRneC9VkGjCFMhwnN5ag= +-----END CERTIFICATE----- + +Juur-SK +======= +-----BEGIN CERTIFICATE----- +MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lA +c2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAw +DgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMwMVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqG +SIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVy +aW1pc2tlc2t1czEQMA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOBSvZiF3tf +TQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkzABpTpyHhOEvWgxutr2TC ++Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvHLCu3GFH+4Hv2qEivbDtPL+/40UceJlfw +UR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMPPbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDa +Tpxt4brNj3pssAki14sL2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQF +MAMBAf8wggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwICMIHD +HoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDkAGwAagBhAHMAdABh +AHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0AHMAZQBlAHIAaQBtAGkAcwBrAGUA +cwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABr +AGkAbgBuAGkAdABhAG0AaQBzAGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nw +cy8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE +FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcYP2/v6X2+MA4G +A1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOiCfP+JmeaUOTDBS8rNXiRTHyo +ERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+gkcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyL +abVAyJRld/JXIWY7zoVAtjNjGr95HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678 +IIbsSt4beDI3poHSna9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkh +Mp6qqIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0ZTbvGRNs2 +yyqcjg== +-----END CERTIFICATE----- + +Hongkong Post Root CA 1 +======================= +-----BEGIN CERTIFICATE----- +MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT +DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx +NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n +IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1 +ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr +auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh +qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY +V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV +HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i +h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio +l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei +IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps +T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT +c4afU9hDDl3WY4JxHYB0yvbiAmvZWg== +-----END CERTIFICATE----- + +SecureSign RootCA11 +=================== +-----BEGIN CERTIFICATE----- +MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi +SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS +b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw +KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1 +cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL +TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO +wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq +g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP +O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA +bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX +t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh +OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r +bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ +Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01 +y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061 +lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I= +-----END CERTIFICATE----- + +ACEDICOM Root +============= +-----BEGIN CERTIFICATE----- +MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UEAwwNQUNFRElD +T00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMB4XDTA4 +MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEWMBQGA1UEAwwNQUNFRElDT00gUm9vdDEMMAoG +A1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA/5KV4WgGdrQsyFhIyv2AVClVYyT/kGWbEHV7w2rbYgIB8hiGtXxaOLHk +WLn709gtn70yN78sFW2+tfQh0hOR2QetAQXW8713zl9CgQr5auODAKgrLlUTY4HKRxx7XBZXehuD +YAQ6PmXDzQHe3qTWDLqO3tkE7hdWIpuPY/1NFgu3e3eM+SW10W2ZEi5PGrjm6gSSrj0RuVFCPYew +MYWveVqc/udOXpJPQ/yrOq2lEiZmueIM15jO1FillUAKt0SdE3QrwqXrIhWYENiLxQSfHY9g5QYb +m8+5eaA9oiM/Qj9r+hwDezCNzmzAv+YbX79nuIQZ1RXve8uQNjFiybwCq0Zfm/4aaJQ0PZCOrfbk +HQl/Sog4P75n/TSW9R28MHTLOO7VbKvU/PQAtwBbhTIWdjPp2KOZnQUAqhbm84F9b32qhm2tFXTT +xKJxqvQUfecyuB+81fFOvW8XAjnXDpVCOscAPukmYxHqC9FK/xidstd7LzrZlvvoHpKuE1XI2Sf2 +3EgbsCTBheN3nZqk8wwRHQ3ItBTutYJXCb8gWH8vIiPYcMt5bMlL8qkqyPyHK9caUPgn6C9D4zq9 +2Fdx/c6mUlv53U3t5fZvie27k5x2IXXwkkwp9y+cAS7+UEaeZAwUswdbxcJzbPEHXEUkFDWug/Fq +TYl6+rPYLWbwNof1K1MCAwEAAaOBqjCBpzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKaz +4SsrSbbXc6GqlPUB53NlTKxQMA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUprPhKytJttdzoaqU +9QHnc2VMrFAwRAYDVR0gBD0wOzA5BgRVHSAAMDEwLwYIKwYBBQUHAgEWI2h0dHA6Ly9hY2VkaWNv +bS5lZGljb21ncm91cC5jb20vZG9jMA0GCSqGSIb3DQEBBQUAA4ICAQDOLAtSUWImfQwng4/F9tqg +aHtPkl7qpHMyEVNEskTLnewPeUKzEKbHDZ3Ltvo/Onzqv4hTGzz3gvoFNTPhNahXwOf9jU8/kzJP +eGYDdwdY6ZXIfj7QeQCM8htRM5u8lOk6e25SLTKeI6RF+7YuE7CLGLHdztUdp0J/Vb77W7tH1Pwk +zQSulgUV1qzOMPPKC8W64iLgpq0i5ALudBF/TP94HTXa5gI06xgSYXcGCRZj6hitoocf8seACQl1 +ThCojz2GuHURwCRiipZ7SkXp7FnFvmuD5uHorLUwHv4FB4D54SMNUI8FmP8sX+g7tq3PgbUhh8oI +KiMnMCArz+2UW6yyetLHKKGKC5tNSixthT8Jcjxn4tncB7rrZXtaAWPWkFtPF2Y9fwsZo5NjEFIq +nxQWWOLcpfShFosOkYuByptZ+thrkQdlVV9SH686+5DdaaVbnG0OLLb6zqylfDJKZ0DcMDQj3dcE +I2bw/FWAp/tmGYI1Z2JwOV5vx+qQQEQIHriy1tvuWacNGHk0vFQYXlPKNFHtRQrmjseCNj6nOGOp +MCwXEGCSn1WHElkQwg9naRHMTh5+Spqtr0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3o +tkYNbn5XOmeUwssfnHdKZ05phkOTOPu220+DkdRgfks+KzgHVZhepA== +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority +======================================================= +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow +XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz +IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94 +f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol +hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABByUqkFFBky +CEHwxWsKzH4PIRnN5GfcX6kb5sroc50i2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWX +bj9T/UWZYB2oK0z5XqcJ2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/ +D/xwzoiQ +-----END CERTIFICATE----- + +Microsec e-Szigno Root CA 2009 +============================== +-----BEGIN CERTIFICATE----- +MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER +MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv +c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o +dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE +BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt +U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA +fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG +0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA +pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm +1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC +AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf +QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE +FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o +lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX +I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 +tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02 +yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi +LXpUq3DDfSJlgnCW +-----END CERTIFICATE----- + +E-Guven Kok Elektronik Sertifika Hizmet Saglayicisi +=================================================== +-----BEGIN CERTIFICATE----- +MIIDtjCCAp6gAwIBAgIQRJmNPMADJ72cdpW56tustTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG +EwJUUjEoMCYGA1UEChMfRWxla3Ryb25payBCaWxnaSBHdXZlbmxpZ2kgQS5TLjE8MDoGA1UEAxMz +ZS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhZ2xheWljaXNpMB4XDTA3 +MDEwNDExMzI0OFoXDTE3MDEwNDExMzI0OFowdTELMAkGA1UEBhMCVFIxKDAmBgNVBAoTH0VsZWt0 +cm9uaWsgQmlsZ2kgR3V2ZW5saWdpIEEuUy4xPDA6BgNVBAMTM2UtR3V2ZW4gS29rIEVsZWt0cm9u +aWsgU2VydGlmaWthIEhpem1ldCBTYWdsYXlpY2lzaTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBAMMSIJ6wXgBljU5Gu4Bc6SwGl9XzcslwuedLZYDBS75+PNdUMZTe1RK6UxYC6lhj71vY +8+0qGqpxSKPcEC1fX+tcS5yWCEIlKBHMilpiAVDV6wlTL/jDj/6z/P2douNffb7tC+Bg62nsM+3Y +jfsSSYMAyYuXjDtzKjKzEve5TfL0TW3H5tYmNwjy2f1rXKPlSFxYvEK+A1qBuhw1DADT9SN+cTAI +JjjcJRFHLfO6IxClv7wC90Nex/6wN1CZew+TzuZDLMN+DfIcQ2Zgy2ExR4ejT669VmxMvLz4Bcpk +9Ok0oSy1c+HCPujIyTQlCFzz7abHlJ+tiEMl1+E5YP6sOVkCAwEAAaNCMEAwDgYDVR0PAQH/BAQD +AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJ/uRLOU1fqRTy7ZVZoEVtstxNulMA0GCSqG +SIb3DQEBBQUAA4IBAQB/X7lTW2M9dTLn+sR0GstG30ZpHFLPqk/CaOv/gKlR6D1id4k9CnU58W5d +F4dvaAXBlGzZXd/aslnLpRCKysw5zZ/rTt5S/wzw9JKp8mxTq5vSR6AfdPebmvEvFZ96ZDAYBzwq +D2fK/A+JYZ1lpTzlvBNbCNvj/+27BrtqBrF6T2XGgv0enIu1De5Iu7i9qgi0+6N8y5/NkHZchpZ4 +Vwpm+Vganf2XKWDeEaaQHBkc7gGWIjQ0LpH5t8Qn0Xvmv/uARFoW5evg1Ao4vOSR49XrXMGs3xtq +fJ7lddK2l4fbzIcrQzqECK+rPNv3PGYxhrCdU3nt+CPeQuMtgvEP5fqX +-----END CERTIFICATE----- + +GlobalSign Root CA - R3 +======================= +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt +iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ +0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3 +rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl +OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2 +xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7 +lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8 +EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E +bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18 +YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r +kpeDMdmztcpHWD9f +-----END CERTIFICATE----- + +Autoridad de Certificacion Firmaprofesional CIF A62634068 +========================================================= +-----BEGIN CERTIFICATE----- +MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA +BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 +MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw +QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB +NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD +Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P +B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY +7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH +ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI +plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX +MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX +LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK +bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU +vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud +EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH +DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp +cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA +bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx +ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx +51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk +R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP +T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f +Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl +osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR +crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR +saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD +KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi +6Et8Vcad+qMUu2WFbm5PEn4KPJ2V +-----END CERTIFICATE----- + +Izenpe.com +========== +-----BEGIN CERTIFICATE----- +MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG +EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz +MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu +QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ +03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK +ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU ++zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC +PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT +OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK +F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK +0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+ +0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB +leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID +AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+ +SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG +NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx +MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O +BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l +Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga +kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q +hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs +g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5 +aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5 +nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC +ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo +Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z +WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== +-----END CERTIFICATE----- + +Chambers of Commerce Root - 2008 +================================ +-----BEGIN CERTIFICATE----- +MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD +MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv +bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu +QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy +Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl +ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF +EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl +cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA +XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj +h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/ +ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk +NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g +D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331 +lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ +0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj +ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2 +EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI +G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ +BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh +bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh +bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC +CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH +AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1 +wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH +3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU +RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6 +M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1 +YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF +9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK +zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG +nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg +OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ +-----END CERTIFICATE----- + +Global Chambersign Root - 2008 +============================== +-----BEGIN CERTIFICATE----- +MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD +MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv +bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu +QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx +NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg +Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ +QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD +aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf +VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf +XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0 +ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB +/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA +TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M +H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe +Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF +HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh +wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB +AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT +BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE +BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm +aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm +aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp +1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0 +dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG +/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6 +ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s +dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg +9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH +foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du +qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr +P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq +c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z +09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B +-----END CERTIFICATE----- + +Go Daddy Root Certificate Authority - G2 +======================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu +MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G +A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq +9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD ++qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd +fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl +NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9 +BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac +vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r +5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV +N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1 +-----END CERTIFICATE----- + +Starfield Root Certificate Authority - G2 +========================================= +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0 +eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw +DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg +VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB +dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv +W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs +bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk +N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf +ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU +JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol +TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx +4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw +F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ +c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- + +Starfield Services Root Certificate Authority - G2 +================================================== +-----BEGIN CERTIFICATE----- +MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl +IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV +BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT +dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg +Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2 +h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa +hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP +LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB +rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG +SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP +E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy +xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd +iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza +YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6 +-----END CERTIFICATE----- + +AffirmTrust Commercial +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw +MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb +DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV +C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6 +BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww +MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV +HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG +hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi +qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv +0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh +sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= +-----END CERTIFICATE----- + +AffirmTrust Networking +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw +MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE +Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI +dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24 +/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb +h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV +HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu +UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6 +12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23 +WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9 +/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= +-----END CERTIFICATE----- + +AffirmTrust Premium +=================== +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy +OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy +dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn +BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV +5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs ++7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd +GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R +p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI +S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04 +6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5 +/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo ++Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv +MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg +Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC +6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S +L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK ++4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV +BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg +IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60 +g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb +zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw== +-----END CERTIFICATE----- + +AffirmTrust Premium ECC +======================= +-----BEGIN CERTIFICATE----- +MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV +BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx +MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U +cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ +N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW +BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK +BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X +57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM +eQ== +-----END CERTIFICATE----- + +Certum Trusted Network CA +========================= +-----BEGIN CERTIFICATE----- +MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK +ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy +MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU +ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC +l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J +J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4 +fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0 +cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB +Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw +DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj +jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1 +mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj +Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI +03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= +-----END CERTIFICATE----- + +Certinomis - Autorité Racine +============================= +-----BEGIN CERTIFICATE----- +MIIFnDCCA4SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJGUjETMBEGA1UEChMK +Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxJjAkBgNVBAMMHUNlcnRpbm9taXMg +LSBBdXRvcml0w6kgUmFjaW5lMB4XDTA4MDkxNzA4Mjg1OVoXDTI4MDkxNzA4Mjg1OVowYzELMAkG +A1UEBhMCRlIxEzARBgNVBAoTCkNlcnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMSYw +JAYDVQQDDB1DZXJ0aW5vbWlzIC0gQXV0b3JpdMOpIFJhY2luZTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAJ2Fn4bT46/HsmtuM+Cet0I0VZ35gb5j2CN2DpdUzZlMGvE5x4jYF1AMnmHa +wE5V3udauHpOd4cN5bjr+p5eex7Ezyh0x5P1FMYiKAT5kcOrJ3NqDi5N8y4oH3DfVS9O7cdxbwly +Lu3VMpfQ8Vh30WC8Tl7bmoT2R2FFK/ZQpn9qcSdIhDWerP5pqZ56XjUl+rSnSTV3lqc2W+HN3yNw +2F1MpQiD8aYkOBOo7C+ooWfHpi2GR+6K/OybDnT0K0kCe5B1jPyZOQE51kqJ5Z52qz6WKDgmi92N +jMD2AR5vpTESOH2VwnHu7XSu5DaiQ3XV8QCb4uTXzEIDS3h65X27uK4uIJPT5GHfceF2Z5c/tt9q +c1pkIuVC28+BA5PY9OMQ4HL2AHCs8MF6DwV/zzRpRbWT5BnbUhYjBYkOjUjkJW+zeL9i9Qf6lSTC +lrLooyPCXQP8w9PlfMl1I9f09bze5N/NgL+RiH2nE7Q5uiy6vdFrzPOlKO1Enn1So2+WLhl+HPNb +xxaOu2B9d2ZHVIIAEWBsMsGoOBvrbpgT1u449fCfDu/+MYHB0iSVL1N6aaLwD4ZFjliCK0wi1F6g +530mJ0jfJUaNSih8hp75mxpZuWW/Bd22Ql095gBIgl4g9xGC3srYn+Y3RyYe63j3YcNBZFgCQfna +4NH4+ej9Uji29YnfAgMBAAGjWzBZMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G +A1UdDgQWBBQNjLZh2kS40RR9w759XkjwzspqsDAXBgNVHSAEEDAOMAwGCiqBegFWAgIAAQEwDQYJ +KoZIhvcNAQEFBQADggIBACQ+YAZ+He86PtvqrxyaLAEL9MW12Ukx9F1BjYkMTv9sov3/4gbIOZ/x +WqndIlgVqIrTseYyCYIDbNc/CMf4uboAbbnW/FIyXaR/pDGUu7ZMOH8oMDX/nyNTt7buFHAAQCva +R6s0fl6nVjBhK4tDrP22iCj1a7Y+YEq6QpA0Z43q619FVDsXrIvkxmUP7tCMXWY5zjKn2BCXwH40 +nJ+U8/aGH88bc62UeYdocMMzpXDn2NU4lG9jeeu/Cg4I58UvD0KgKxRA/yHgBcUn4YQRE7rWhh1B +CxMjidPJC+iKunqjo3M3NYB9Ergzd0A4wPpeMNLytqOx1qKVl4GbUu1pTP+A5FPbVFsDbVRfsbjv +JL1vnxHDx2TCDyhihWZeGnuyt++uNckZM6i4J9szVb9o4XVIRFb7zdNIu0eJOqxp9YDG5ERQL1TE +qkPFMTFYvZbF6nVsmnWxTfj3l/+WFvKXTej28xH5On2KOG4Ey+HTRRWqpdEdnV1j6CTmNhTih60b +WfVEm/vXd3wfAXBioSAaosUaKPQhA+4u2cGA6rnZgtZbdsLLO7XSAPCjDuGtbkD326C00EauFddE +wk01+dIL8hf2rGbVJLJP0RyZwG71fet0BLj5TXcJ17TPBzAJ8bgAVtkXFhYKK4bfjwEZGuW7gmP/ +vgt2Fl43N+bYdJeimUV5 +-----END CERTIFICATE----- + +Root CA Generalitat Valenciana +============================== +-----BEGIN CERTIFICATE----- +MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJFUzEfMB0GA1UE +ChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290 +IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcNMDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3 +WjBoMQswCQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UE +CxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+WmmmO3I2 +F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKjSgbwJ/BXufjpTjJ3Cj9B +ZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGlu6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQ +D0EbtFpKd71ng+CT516nDOeB0/RSrFOyA8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXte +JajCq+TA81yc477OMUxkHl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMB +AAGjggM7MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5n +dmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIICIwYKKwYBBAG/VQIB +ADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBl +AHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIAYQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIA +YQBsAGkAdABhAHQAIABWAGEAbABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQBy +AGEAYwBpAPMAbgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA +aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMAaQBvAG4AYQBt +AGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQAZQAgAEEAdQB0AG8AcgBpAGQA +YQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBu +AHQAcgBhACAAZQBuACAAbABhACAAZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAA +OgAvAC8AdwB3AHcALgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0 +dHA6Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+yeAT8MIGV +BgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQswCQYDVQQGEwJFUzEfMB0G +A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5S +b290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRh +TvW1yEICKrNcda3FbcrnlD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdz +Ckj+IHLtb8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg9J63 +NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XFducTZnV+ZfsBn5OH +iJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmCIoaZM3Fa6hlXPZHNqcCjbgcTpsnt ++GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM= +-----END CERTIFICATE----- + +A-Trust-nQual-03 +================ +-----BEGIN CERTIFICATE----- +MIIDzzCCAregAwIBAgIDAWweMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJBVDFIMEYGA1UE +Cgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy +a2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5RdWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5R +dWFsLTAzMB4XDTA1MDgxNzIyMDAwMFoXDTE1MDgxNzIyMDAwMFowgY0xCzAJBgNVBAYTAkFUMUgw +RgYDVQQKDD9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0 +ZW52ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMMEEEtVHJ1 +c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtPWFuA/OQO8BBC4SA +zewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUjlUC5B3ilJfYKvUWG6Nm9wASOhURh73+n +yfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZznF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPE +SU7l0+m0iKsMrmKS1GWH2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4 +iHQF63n1k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs2e3V +cuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECERqlWdV +eRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAVdRU0VlIXLOThaq/Yy/kgM40 +ozRiPvbY7meIMQQDbwvUB/tOdQ/TLtPAF8fGKOwGDREkDg6lXb+MshOWcdzUzg4NCmgybLlBMRmr +sQd7TZjTXLDR8KdCoLXEjq/+8T/0709GAHbrAvv5ndJAlseIOrifEXnzgGWovR/TeIGgUUw3tKZd +JXDRZslo+S4RFGjxVJgIrCaSD96JntT6s3kr0qN51OyLrIdTaEJMUVF0HhsnLuP1Hyl0Te2v9+GS +mYHovjrHF1D2t8b8m7CKa9aIA5GPBnc6hQLdmNVDeD/GMBWsm2vLV7eJUYs66MmEDNuxUCAKGkq6 +ahq97BvIxYSazQ== +-----END CERTIFICATE----- + +TWCA Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ +VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG +EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB +IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx +QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC +oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP +4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r +y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB +BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG +9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC +mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW +QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY +T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny +Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== +-----END CERTIFICATE----- + +Security Communication RootCA2 +============================== +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc +U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh +dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC +SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy +aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++ ++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R +3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV +spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K +EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8 +QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB +CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj +u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk +3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q +tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29 +mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 +-----END CERTIFICATE----- + +EC-ACC +====== +-----BEGIN CERTIFICATE----- +MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE +BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w +ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD +VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE +CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT +BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7 +MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt +SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl +Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh +cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK +w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT +ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4 +HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a +E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw +0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD +VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0 +Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l +dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ +lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa +Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe +l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2 +E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D +5EI= +-----END CERTIFICATE----- + +Hellenic Academic and Research Institutions RootCA 2011 +======================================================= +-----BEGIN CERTIFICATE----- +MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT +O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y +aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z +IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT +AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z +IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo +IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI +1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa +71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u +8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH +3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/ +MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8 +MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu +b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt +XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8 +TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD +/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N +7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4 +-----END CERTIFICATE----- + +Actalis Authentication Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM +BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE +AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky +MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz +IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 +IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ +wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa +by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6 +zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f +YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2 +oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l +EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7 +hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8 +EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5 +jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY +iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt +ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI +WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0 +JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx +K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+ +Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC +4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo +2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz +lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem +OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9 +vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== +-----END CERTIFICATE----- + +Trustis FPS Root CA +=================== +-----BEGIN CERTIFICATE----- +MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG +EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290 +IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV +BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ +RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk +H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa +cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt +o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA +AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd +BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c +GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC +yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P +8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV +l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl +iB6XzCGcKQENZetX2fNXlrtIzYE= +-----END CERTIFICATE----- + +StartCom Certification Authority +================================ +-----BEGIN CERTIFICATE----- +MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN +U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu +ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0 +NjM3WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk +LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg +U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y +o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/ +Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d +eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt +2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z +6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ +osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/ +untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc +UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT +37uMdBNSSwIDAQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD +VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFulF2mHMMo0aEPQ +Qa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCCATgwLgYIKwYBBQUHAgEWImh0 +dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cu +c3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENv +bW1lcmNpYWwgKFN0YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0 +aGUgc2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0aWZpY2F0 +aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuc3RhcnRzc2wuY29t +L3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBG +cmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5 +fPGFf59Jb2vKXfuM/gTFwWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWm +N3PH/UvSTa0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst0OcN +Org+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNcpRJvkrKTlMeIFw6T +tn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKlCcWw0bdT82AUuoVpaiF8H3VhFyAX +e2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVFP0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA +2MFrLH9ZXF2RsXAiV+uKa0hK1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBs +HvUwyKMQ5bLmKhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE +JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ8dCAWZvLMdib +D4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnmfyWl8kgAwKQB2j8= +-----END CERTIFICATE----- + +StartCom Certification Authority G2 +=================================== +-----BEGIN CERTIFICATE----- +MIIFYzCCA0ugAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMN +U3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +RzIwHhcNMTAwMTAxMDEwMDAxWhcNMzkxMjMxMjM1OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UE +ChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgRzIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8O +o1XJJZlKxdBWQYeQTSFgpBSHO839sj60ZwNq7eEPS8CRhXBF4EKe3ikj1AENoBB5uNsDvfOpL9HG +4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnooD/Uefyf3lLE3PbfHkffi +Aez9lInhzG7TNtYKGXmu1zSCZf98Qru23QumNK9LYP5/Q0kGi4xDuFby2X8hQxfqp0iVAXV16iul +Q5XqFYSdCI0mblWbq9zSOdIxHWDirMxWRST1HFSr7obdljKF+ExP6JV2tgXdNiNnvP8V4so75qbs +O+wmETRIjfaAKxojAuuKHDp2KntWFhxyKrOq42ClAJ8Em+JvHhRYW6Vsi1g8w7pOOlz34ZYrPu8H +vKTlXcxNnw3h3Kq74W4a7I/htkxNeXJdFzULHdfBR9qWJODQcqhaX2YtENwvKhOuJv4KHBnM0D4L +nMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/iUUjXuG+v+E5+M5iS +FGI6dWPPe/regjupuznixL0sAA7IF6wT700ljtizkC+p2il9Ha90OrInwMEePnWjFqmveiJdnxMa +z6eg6+OGCtP95paV1yPIN93EfKo2rJgaErHgTuixO/XWb/Ew1wIDAQABo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUS8W0QGutHLOlHGVuRjaJhwUMDrYwDQYJ +KoZIhvcNAQELBQADggIBAHNXPyzVlTJ+N9uWkusZXn5T50HsEbZH77Xe7XRcxfGOSeD8bpkTzZ+K +2s06Ctg6Wgk/XzTQLwPSZh0avZyQN8gMjgdalEVGKua+etqhqaRpEpKwfTbURIfXUfEpY9Z1zRbk +J4kd+MIySP3bmdCPX1R0zKxnNBFi2QwKN4fRoxdIjtIXHfbX/dtl6/2o1PXWT6RbdejF0mCy2wl+ +JYt7ulKSnj7oxXehPOBKc2thz4bcQ///If4jXSRK9dNtD2IEBVeC2m6kMyV5Sy5UGYvMLD0w6dEG +/+gyRr61M3Z3qAFdlsHB1b6uJcDJHgoJIIihDsnzb02CVAAgp9KP5DlUFy6NHrgbuxu9mk47EDTc +nIhT76IxW1hPkWLIwpqazRVdOKnWvvgTtZ8SafJQYqz7Fzf07rh1Z2AQ+4NQ+US1dZxAF7L+/Xld +blhYXzD8AK6vM8EOTmy6p6ahfzLbOOCxchcKK5HsamMm7YnUeMx0HgX4a/6ManY5Ka5lIxKVCCIc +l85bBu4M4ru8H0ST9tg4RQUh7eStqxK2A6RCLi3ECToDZ2mEmuFZkIoohdVddLHRDiBYmxOlsGOm +7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulrso8uBtjRkcfGEvRM/TAXw8HaOFvjqerm +obp573PYtlNXLfbQ4ddI +-----END CERTIFICATE----- + +Buypass Class 2 Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMiBSb290IENBMB4X +DTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1owTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 +eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1 +g1Lr6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPVL4O2fuPn +9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC911K2GScuVr1QGbNgGE41b +/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHxMlAQTn/0hpPshNOOvEu/XAFOBz3cFIqU +CqTqc/sLUegTBxj6DvEr0VQVfTzh97QZQmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeff +awrbD02TTqigzXsu8lkBarcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgI +zRFo1clrUs3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLiFRhn +Bkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRSP/TizPJhk9H9Z2vX +Uq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN9SG9dKpN6nIDSdvHXx1iY8f93ZHs +M+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxPAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFMmAd+BikoL1RpzzuvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF +AAOCAgEAU18h9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s +A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3tOluwlN5E40EI +osHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo+fsicdl9sz1Gv7SEr5AcD48S +aq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYd +DnkM/crqJIByw5c/8nerQyIKx+u2DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWD +LfJ6v9r9jv6ly0UsH8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0 +oyLQI+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK75t98biGC +wWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h3PFaTWwyI0PurKju7koS +CTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPzY11aWOIv4x3kqdbQCtCev9eBCfHJxyYN +rJgWVqA= +-----END CERTIFICATE----- + +Buypass Class 3 Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMyBSb290IENBMB4X +DTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFowTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 +eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRH +sJ8YZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3EN3coTRiR +5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9tznDDgFHmV0ST9tD+leh +7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX0DJq1l1sDPGzbjniazEuOQAnFN44wOwZ +ZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH +2xc519woe2v1n/MuwU8XKhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV +/afmiSTYzIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvSO1UQ +RwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D34xFMFbG02SrZvPA +Xpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgPK9Dx2hzLabjKSWJtyNBjYt1gD1iq +j6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFEe4zf/lb+74suwvTg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF +AAOCAgEAACAjQTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV +cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXSIGrs/CIBKM+G +uIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2HJLw5QY33KbmkJs4j1xrG0aG +Q0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsaO5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8 +ZORK15FTAaggiG6cX0S5y2CBNOxv033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2 +KSb12tjE8nVhz36udmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz +6MkEkbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg413OEMXbug +UZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvDu79leNKGef9JOxqDDPDe +eOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq4/g7u9xN12TyUb7mqqta6THuBrxzvxNi +Cp/HuZc= +-----END CERTIFICATE----- + +T-TeleSec GlobalRoot Class 3 +============================ +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM +IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU +cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx +MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz +dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD +ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK +9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU +NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF +iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W +0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr +AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb +fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT +ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h +P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml +e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw== +-----END CERTIFICATE----- + +EE Certification Centre Root CA +=============================== +-----BEGIN CERTIFICATE----- +MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG +EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy +dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw +MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB +UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy +ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB +DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM +TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2 +rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw +93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN +P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ +MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF +BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj +xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM +lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u +uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU +3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM +dcGWxZ0= +-----END CERTIFICATE----- + +TURKTRUST Certificate Services Provider Root 2007 +================================================= +-----BEGIN CERTIFICATE----- +MIIEPTCCAyWgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvzE/MD0GA1UEAww2VMOcUktUUlVTVCBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP +MA0GA1UEBwwGQW5rYXJhMV4wXAYDVQQKDFVUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg +QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgQXJhbMSxayAyMDA3MB4X +DTA3MTIyNTE4MzcxOVoXDTE3MTIyMjE4MzcxOVowgb8xPzA9BgNVBAMMNlTDnFJLVFJVU1QgRWxl +a3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTELMAkGA1UEBhMCVFIxDzAN +BgNVBAcMBkFua2FyYTFeMFwGA1UECgxVVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp +bGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4gKGMpIEFyYWzEsWsgMjAwNzCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKu3PgqMyKVYFeaK7yc9SrToJdPNM8Ig3BnuiD9N +YvDdE3ePYakqtdTyuTFYKTsvP2qcb3N2Je40IIDu6rfwxArNK4aUyeNgsURSsloptJGXg9i3phQv +KUmi8wUG+7RP2qFsmmaf8EMJyupyj+sA1zU511YXRxcw9L6/P8JorzZAwan0qafoEGsIiveGHtya +KhUG9qPw9ODHFNRRf8+0222vR5YXm3dx2KdxnSQM9pQ/hTEST7ruToK4uT6PIzdezKKqdfcYbwnT +rqdUKDT74eA7YH2gvnmJhsifLfkKS8RQouf9eRbHegsYz85M733WB2+Y8a+xwXrXgTW4qhe04MsC +AwEAAaNCMEAwHQYDVR0OBBYEFCnFkKslrxHkYb+j/4hhkeYO/pyBMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAQDdr4Ouwo0RSVgrESLFF6QSU2TJ/s +Px+EnWVUXKgWAkD6bho3hO9ynYYKVZ1WKKxmLNA6VpM0ByWtCLCPyA8JWcqdmBzlVPi5RX9ql2+I +aE1KBiY3iAIOtsbWcpnOa3faYjGkVh+uX4132l32iPwa2Z61gfAyuOOI0JzzaqC5mxRZNTZPz/OO +Xl0XrRWV2N2y1RVuAE6zS89mlOTgzbUF2mNXi+WzqtvALhyQRNsaXRik7r4EW5nVcV9VZWRi1aKb +BFmGyGJ353yCRWo9F7/snXUMrqNvWtMvmDb08PUZqxFdyKbjKlhqQgnDvZImZjINXQhVdP+MmNAK +poRq0Tl9 +-----END CERTIFICATE----- + +D-TRUST Root Class 3 CA 2 2009 +============================== +-----BEGIN CERTIFICATE----- +MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQK +DAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTAe +Fw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NThaME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxE +LVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOAD +ER03UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42tSHKXzlA +BF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9RySPocq60vFYJfxLLHLGv +KZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsMlFqVlNpQmvH/pStmMaTJOKDfHR+4CS7z +p+hnUquVH+BGPtikw8paxTGA6Eian5Rp/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUC +AwEAAaOCARowggEWMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ +4PGEMA4GA1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVjdG9y +eS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUyMENBJTIwMiUyMDIw +MDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwQ6BBoD+G +PWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAw +OS5jcmwwDQYJKoZIhvcNAQELBQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm +2H6NMLVwMeniacfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 +o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4KzCUqNQT4YJEV +dT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8PIWmawomDeCTmGCufsYkl4ph +X5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3YJohw1+qRzT65ysCQblrGXnRl11z+o+I= +-----END CERTIFICATE----- + +D-TRUST Root Class 3 CA 2 EV 2009 +================================= +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK +DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw +OTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUwNDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK +DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw +OTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfS +egpnljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM03TP1YtHh +zRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6ZqQTMFexgaDbtCHu39b+T +7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lRp75mpoo6Kr3HGrHhFPC+Oh25z1uxav60 +sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure35 +11H3a6UCAwEAAaOCASQwggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyv +cop9NteaHNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFwOi8v +ZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xhc3MlMjAzJTIwQ0El +MjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRp +b25saXN0MEagRKBChkBodHRwOi8vd3d3LmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xh +c3NfM19jYV8yX2V2XzIwMDkuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+ +PPoeUSbrh/Yp3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 +nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNFCSuGdXzfX2lX +ANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7naxpeG0ILD5EJt/rDiZE4OJudA +NCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqXKVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVv +w9y4AyHqnxbxLFS1 +-----END CERTIFICATE----- + +PSCProcert +========== +-----BEGIN CERTIFICATE----- +MIIJhjCCB26gAwIBAgIBCzANBgkqhkiG9w0BAQsFADCCAR4xPjA8BgNVBAMTNUF1dG9yaWRhZCBk +ZSBDZXJ0aWZpY2FjaW9uIFJhaXogZGVsIEVzdGFkbyBWZW5lem9sYW5vMQswCQYDVQQGEwJWRTEQ +MA4GA1UEBxMHQ2FyYWNhczEZMBcGA1UECBMQRGlzdHJpdG8gQ2FwaXRhbDE2MDQGA1UEChMtU2lz +dGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMUMwQQYDVQQLEzpTdXBl +cmludGVuZGVuY2lhIGRlIFNlcnZpY2lvcyBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMSUw +IwYJKoZIhvcNAQkBFhZhY3JhaXpAc3VzY2VydGUuZ29iLnZlMB4XDTEwMTIyODE2NTEwMFoXDTIw +MTIyNTIzNTk1OVowgdExJjAkBgkqhkiG9w0BCQEWF2NvbnRhY3RvQHByb2NlcnQubmV0LnZlMQ8w +DQYDVQQHEwZDaGFjYW8xEDAOBgNVBAgTB01pcmFuZGExKjAoBgNVBAsTIVByb3ZlZWRvciBkZSBD +ZXJ0aWZpY2Fkb3MgUFJPQ0VSVDE2MDQGA1UEChMtU2lzdGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZp +Y2FjaW9uIEVsZWN0cm9uaWNhMQswCQYDVQQGEwJWRTETMBEGA1UEAxMKUFNDUHJvY2VydDCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANW39KOUM6FGqVVhSQ2oh3NekS1wwQYalNo97BVC +wfWMrmoX8Yqt/ICV6oNEolt6Vc5Pp6XVurgfoCfAUFM+jbnADrgV3NZs+J74BCXfgI8Qhd19L3uA +3VcAZCP4bsm+lU/hdezgfl6VzbHvvnpC2Mks0+saGiKLt38GieU89RLAu9MLmV+QfI4tL3czkkoh +RqipCKzx9hEC2ZUWno0vluYC3XXCFCpa1sl9JcLB/KpnheLsvtF8PPqv1W7/U0HU9TI4seJfxPmO +EO8GqQKJ/+MMbpfg353bIdD0PghpbNjU5Db4g7ayNo+c7zo3Fn2/omnXO1ty0K+qP1xmk6wKImG2 +0qCZyFSTXai20b1dCl53lKItwIKOvMoDKjSuc/HUtQy9vmebVOvh+qBa7Dh+PsHMosdEMXXqP+UH +0quhJZb25uSgXTcYOWEAM11G1ADEtMo88aKjPvM6/2kwLkDd9p+cJsmWN63nOaK/6mnbVSKVUyqU +td+tFjiBdWbjxywbk5yqjKPK2Ww8F22c3HxT4CAnQzb5EuE8XL1mv6JpIzi4mWCZDlZTOpx+FIyw +Bm/xhnaQr/2v/pDGj59/i5IjnOcVdo/Vi5QTcmn7K2FjiO/mpF7moxdqWEfLcU8UC17IAggmosvp +r2uKGcfLFFb14dq12fy/czja+eevbqQ34gcnAgMBAAGjggMXMIIDEzASBgNVHRMBAf8ECDAGAQH/ +AgEBMDcGA1UdEgQwMC6CD3N1c2NlcnRlLmdvYi52ZaAbBgVghl4CAqASDBBSSUYtRy0yMDAwNDAz +Ni0wMB0GA1UdDgQWBBRBDxk4qpl/Qguk1yeYVKIXTC1RVDCCAVAGA1UdIwSCAUcwggFDgBStuyId +xuDSAaj9dlBSk+2YwU2u06GCASakggEiMIIBHjE+MDwGA1UEAxM1QXV0b3JpZGFkIGRlIENlcnRp +ZmljYWNpb24gUmFpeiBkZWwgRXN0YWRvIFZlbmV6b2xhbm8xCzAJBgNVBAYTAlZFMRAwDgYDVQQH +EwdDYXJhY2FzMRkwFwYDVQQIExBEaXN0cml0byBDYXBpdGFsMTYwNAYDVQQKEy1TaXN0ZW1hIE5h +Y2lvbmFsIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExQzBBBgNVBAsTOlN1cGVyaW50ZW5k +ZW5jaWEgZGUgU2VydmljaW9zIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExJTAjBgkqhkiG +9w0BCQEWFmFjcmFpekBzdXNjZXJ0ZS5nb2IudmWCAQowDgYDVR0PAQH/BAQDAgEGME0GA1UdEQRG +MESCDnByb2NlcnQubmV0LnZloBUGBWCGXgIBoAwMClBTQy0wMDAwMDKgGwYFYIZeAgKgEgwQUklG +LUotMzE2MzUzNzMtNzB2BgNVHR8EbzBtMEagRKBChkBodHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52 +ZS9sY3IvQ0VSVElGSUNBRE8tUkFJWi1TSEEzODRDUkxERVIuY3JsMCOgIaAfhh1sZGFwOi8vYWNy +YWl6LnN1c2NlcnRlLmdvYi52ZTA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9v +Y3NwLnN1c2NlcnRlLmdvYi52ZTBBBgNVHSAEOjA4MDYGBmCGXgMBAjAsMCoGCCsGAQUFBwIBFh5o +dHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52ZS9kcGMwDQYJKoZIhvcNAQELBQADggIBACtZ6yKZu4Sq +T96QxtGGcSOeSwORR3C7wJJg7ODU523G0+1ng3dS1fLld6c2suNUvtm7CpsR72H0xpkzmfWvADmN +g7+mvTV+LFwxNG9s2/NkAZiqlCxB3RWGymspThbASfzXg0gTB1GEMVKIu4YXx2sviiCtxQuPcD4q +uxtxj7mkoP3YldmvWb8lK5jpY5MvYB7Eqvh39YtsL+1+LrVPQA3uvFd359m21D+VJzog1eWuq2w1 +n8GhHVnchIHuTQfiSLaeS5UtQbHh6N5+LwUeaO6/u5BlOsju6rEYNxxik6SgMexxbJHmpHmJWhSn +FFAFTKQAVzAswbVhltw+HoSvOULP5dAssSS830DD7X9jSr3hTxJkhpXzsOfIt+FTvZLm8wyWuevo +5pLtp4EJFAv8lXrPj9Y0TzYS3F7RNHXGRoAvlQSMx4bEqCaJqD8Zm4G7UaRKhqsLEQ+xrmNTbSjq +3TNWOByyrYDT13K9mmyZY+gAu0F2BbdbmRiKw7gSXFbPVgx96OLP7bx0R/vu0xdOIk9W/1DzLuY5 +poLWccret9W6aAjtmcz9opLLabid+Qqkpj5PkygqYWwHJgD/ll9ohri4zspV4KuxPX+Y1zMOWj3Y +eMLEYC/HYvBhkdI4sPaeVdtAgAUSM84dkpvRabP/v/GSCmE1P93+hvS84Bpxs2Km +-----END CERTIFICATE----- + +China Internet Network Information Center EV Certificates Root +============================================================== +-----BEGIN CERTIFICATE----- +MIID9zCCAt+gAwIBAgIESJ8AATANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCQ04xMjAwBgNV +BAoMKUNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyMUcwRQYDVQQDDD5D +aGluYSBJbnRlcm5ldCBOZXR3b3JrIEluZm9ybWF0aW9uIENlbnRlciBFViBDZXJ0aWZpY2F0ZXMg +Um9vdDAeFw0xMDA4MzEwNzExMjVaFw0zMDA4MzEwNzExMjVaMIGKMQswCQYDVQQGEwJDTjEyMDAG +A1UECgwpQ2hpbmEgSW50ZXJuZXQgTmV0d29yayBJbmZvcm1hdGlvbiBDZW50ZXIxRzBFBgNVBAMM +PkNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyIEVWIENlcnRpZmljYXRl +cyBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm35z7r07eKpkQ0H1UN+U8i6y +jUqORlTSIRLIOTJCBumD1Z9S7eVnAztUwYyZmczpwA//DdmEEbK40ctb3B75aDFk4Zv6dOtouSCV +98YPjUesWgbdYavi7NifFy2cyjw1l1VxzUOFsUcW9SxTgHbP0wBkvUCZ3czY28Sf1hNfQYOL+Q2H +klY0bBoQCxfVWhyXWIQ8hBouXJE0bhlffxdpxWXvayHG1VA6v2G5BY3vbzQ6sm8UY78WO5upKv23 +KzhmBsUs4qpnHkWnjQRmQvaPK++IIGmPMowUc9orhpFjIpryp9vOiYurXccUwVswah+xt54ugQEC +7c+WXmPbqOY4twIDAQABo2MwYTAfBgNVHSMEGDAWgBR8cks5x8DbYqVPm6oYNJKiyoOCWTAPBgNV +HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUfHJLOcfA22KlT5uqGDSSosqD +glkwDQYJKoZIhvcNAQEFBQADggEBACrDx0M3j92tpLIM7twUbY8opJhJywyA6vPtI2Z1fcXTIWd5 +0XPFtQO3WKwMVC/GVhMPMdoG52U7HW8228gd+f2ABsqjPWYWqJ1MFn3AlUa1UeTiH9fqBk1jjZaM +7+czV0I664zBechNdn3e9rG3geCg+aF4RhcaVpjwTj2rHO3sOdwHSPdj/gauwqRcalsyiMXHM4Ws +ZkJHwlgkmeHlPuV1LI5D1l08eB6olYIpUNHRFrrvwb562bTYzB5MRuF3sTGrvSrIzo9uoV1/A3U0 +5K2JRVRevq4opbs/eHnrc7MKDf2+yfdWrPa37S+bISnHOLaVxATywy39FCqQmbkHzJ8= +-----END CERTIFICATE----- + +Swisscom Root CA 2 +================== +-----BEGIN CERTIFICATE----- +MIIF2TCCA8GgAwIBAgIQHp4o6Ejy5e/DfEoeWhhntjANBgkqhkiG9w0BAQsFADBkMQswCQYDVQQG +EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy +dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMjAeFw0xMTA2MjQwODM4MTRaFw0zMTA2 +MjUwNzM4MTRaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln +aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAyMIIC +IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAlUJOhJ1R5tMJ6HJaI2nbeHCOFvErjw0DzpPM +LgAIe6szjPTpQOYXTKueuEcUMncy3SgM3hhLX3af+Dk7/E6J2HzFZ++r0rk0X2s682Q2zsKwzxNo +ysjL67XiPS4h3+os1OD5cJZM/2pYmLcX5BtS5X4HAB1f2uY+lQS3aYg5oUFgJWFLlTloYhyxCwWJ +wDaCFCE/rtuh/bxvHGCGtlOUSbkrRsVPACu/obvLP+DHVxxX6NZp+MEkUp2IVd3Chy50I9AU/SpH +Wrumnf2U5NGKpV+GY3aFy6//SSj8gO1MedK75MDvAe5QQQg1I3ArqRa0jG6F6bYRzzHdUyYb3y1a +SgJA/MTAtukxGggo5WDDH8SQjhBiYEQN7Aq+VRhxLKX0srwVYv8c474d2h5Xszx+zYIdkeNL6yxS +NLCK/RJOlrDrcH+eOfdmQrGrrFLadkBXeyq96G4DsguAhYidDMfCd7Camlf0uPoTXGiTOmekl9Ab +mbeGMktg2M7v0Ax/lZ9vh0+Hio5fCHyqW/xavqGRn1V9TrALacywlKinh/LTSlDcX3KwFnUey7QY +Ypqwpzmqm59m2I2mbJYV4+by+PGDYmy7Velhk6M99bFXi08jsJvllGov34zflVEpYKELKeRcVVi3 +qPyZ7iVNTA6z00yPhOgpD/0QVAKFyPnlw4vP5w8CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw +HQYDVR0hBBYwFDASBgdghXQBUwIBBgdghXQBUwIBMBIGA1UdEwEB/wQIMAYBAf8CAQcwHQYDVR0O +BBYEFE0mICKJS9PVpAqhb97iEoHF8TwuMB8GA1UdIwQYMBaAFE0mICKJS9PVpAqhb97iEoHF8Twu +MA0GCSqGSIb3DQEBCwUAA4ICAQAyCrKkG8t9voJXiblqf/P0wS4RfbgZPnm3qKhyN2abGu2sEzsO +v2LwnN+ee6FTSA5BesogpxcbtnjsQJHzQq0Qw1zv/2BZf82Fo4s9SBwlAjxnffUy6S8w5X2lejjQ +82YqZh6NM4OKb3xuqFp1mrjX2lhIREeoTPpMSQpKwhI3qEAMw8jh0FcNlzKVxzqfl9NX+Ave5XLz +o9v/tdhZsnPdTSpxsrpJ9csc1fV5yJmz/MFMdOO0vSk3FQQoHt5FRnDsr7p4DooqzgB53MBfGWcs +a0vvaGgLQ+OswWIJ76bdZWGgr4RVSJFSHMYlkSrQwSIjYVmvRRGFHQEkNI/Ps/8XciATwoCqISxx +OQ7Qj1zB09GOInJGTB2Wrk9xseEFKZZZ9LuedT3PDTcNYtsmjGOpI99nBjx8Oto0QuFmtEYE3saW +mA9LSHokMnWRn6z3aOkquVVlzl1h0ydw2Df+n7mvoC5Wt6NlUe07qxS/TFED6F+KBZvuim6c779o ++sjaC+NCydAXFJy3SuCvkychVSa1ZC+N8f+mQAWFBVzKBxlcCxMoTFh/wqXvRdpg065lYZ1Tg3TC +rvJcwhbtkj6EPnNgiLx29CzP0H1907he0ZESEOnN3col49XtmS++dYFLJPlFRpTJKSFTnCZFqhMX +5OfNeOI5wSsSnqaeG8XmDtkx2Q== +-----END CERTIFICATE----- + +Swisscom Root EV CA 2 +===================== +-----BEGIN CERTIFICATE----- +MIIF4DCCA8igAwIBAgIRAPL6ZOJ0Y9ON/RAdBB92ylgwDQYJKoZIhvcNAQELBQAwZzELMAkGA1UE +BhMCY2gxETAPBgNVBAoTCFN3aXNzY29tMSUwIwYDVQQLExxEaWdpdGFsIENlcnRpZmljYXRlIFNl +cnZpY2VzMR4wHAYDVQQDExVTd2lzc2NvbSBSb290IEVWIENBIDIwHhcNMTEwNjI0MDk0NTA4WhcN +MzEwNjI1MDg0NTA4WjBnMQswCQYDVQQGEwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsT +HERpZ2l0YWwgQ2VydGlmaWNhdGUgU2VydmljZXMxHjAcBgNVBAMTFVN3aXNzY29tIFJvb3QgRVYg +Q0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMT3HS9X6lds93BdY7BxUglgRCgz +o3pOCvrY6myLURYaVa5UJsTMRQdBTxB5f3HSek4/OE6zAMaVylvNwSqD1ycfMQ4jFrclyxy0uYAy +Xhqdk/HoPGAsp15XGVhRXrwsVgu42O+LgrQ8uMIkqBPHoCE2G3pXKSinLr9xJZDzRINpUKTk4Rti +GZQJo/PDvO/0vezbE53PnUgJUmfANykRHvvSEaeFGHR55E+FFOtSN+KxRdjMDUN/rhPSays/p8Li +qG12W0OfvrSdsyaGOx9/5fLoZigWJdBLlzin5M8J0TbDC77aO0RYjb7xnglrPvMyxyuHxuxenPaH +Za0zKcQvidm5y8kDnftslFGXEBuGCxobP/YCfnvUxVFkKJ3106yDgYjTdLRZncHrYTNaRdHLOdAG +alNgHa/2+2m8atwBz735j9m9W8E6X47aD0upm50qKGsaCnw8qyIL5XctcfaCNYGu+HuB5ur+rPQa +m3Rc6I8k9l2dRsQs0h4rIWqDJ2dVSqTjyDKXZpBy2uPUZC5f46Fq9mDU5zXNysRojddxyNMkM3Ox +bPlq4SjbX8Y96L5V5jcb7STZDxmPX2MYWFCBUWVv8p9+agTnNCRxunZLWB4ZvRVgRaoMEkABnRDi +xzgHcgplwLa7JSnaFp6LNYth7eVxV4O1PHGf40+/fh6Bn0GXAgMBAAGjgYYwgYMwDgYDVR0PAQH/ +BAQDAgGGMB0GA1UdIQQWMBQwEgYHYIV0AVMCAgYHYIV0AVMCAjASBgNVHRMBAf8ECDAGAQH/AgED +MB0GA1UdDgQWBBRF2aWBbj2ITY1x0kbBbkUe88SAnTAfBgNVHSMEGDAWgBRF2aWBbj2ITY1x0kbB +bkUe88SAnTANBgkqhkiG9w0BAQsFAAOCAgEAlDpzBp9SSzBc1P6xXCX5145v9Ydkn+0UjrgEjihL +j6p7jjm02Vj2e6E1CqGdivdj5eu9OYLU43otb98TPLr+flaYC/NUn81ETm484T4VvwYmneTwkLbU +wp4wLh/vx3rEUMfqe9pQy3omywC0Wqu1kx+AiYQElY2NfwmTv9SoqORjbdlk5LgpWgi/UOGED1V7 +XwgiG/W9mR4U9s70WBCCswo9GcG/W6uqmdjyMb3lOGbcWAXH7WMaLgqXfIeTK7KK4/HsGOV1timH +59yLGn602MnTihdsfSlEvoqq9X46Lmgxk7lq2prg2+kupYTNHAq4Sgj5nPFhJpiTt3tm7JFe3VE/ +23MPrQRYCd0EApUKPtN236YQHoA96M2kZNEzx5LH4k5E4wnJTsJdhw4Snr8PyQUQ3nqjsTzyP6Wq +J3mtMX0f/fwZacXduT98zca0wjAefm6S139hdlqP65VNvBFuIXxZN5nQBrz5Bm0yFqXZaajh3DyA +HmBR3NdUIR7KYndP+tiPsys6DXhyyWhBWkdKwqPrGtcKqzwyVcgKEZzfdNbwQBUdyLmPtTbFr/gi +uMod89a2GQ+fYWVq6nTIfI/DT11lgh/ZDYnadXL77/FHZxOzyNEZiCcmmpl5fx7kLD977vHeTYuW +l8PVP3wbI+2ksx0WckNLIOFZfsLorSa/ovc= +-----END CERTIFICATE----- + +CA Disig Root R1 +================ +-----BEGIN CERTIFICATE----- +MIIFaTCCA1GgAwIBAgIJAMMDmu5QkG4oMA0GCSqGSIb3DQEBBQUAMFIxCzAJBgNVBAYTAlNLMRMw +EQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMuMRkwFwYDVQQDExBDQSBEaXNp +ZyBSb290IFIxMB4XDTEyMDcxOTA5MDY1NloXDTQyMDcxOTA5MDY1NlowUjELMAkGA1UEBhMCU0sx +EzARBgNVBAcTCkJyYXRpc2xhdmExEzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERp +c2lnIFJvb3QgUjEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCqw3j33Jijp1pedxiy +3QRkD2P9m5YJgNXoqqXinCaUOuiZc4yd39ffg/N4T0Dhf9Kn0uXKE5Pn7cZ3Xza1lK/oOI7bm+V8 +u8yN63Vz4STN5qctGS7Y1oprFOsIYgrY3LMATcMjfF9DCCMyEtztDK3AfQ+lekLZWnDZv6fXARz2 +m6uOt0qGeKAeVjGu74IKgEH3G8muqzIm1Cxr7X1r5OJeIgpFy4QxTaz+29FHuvlglzmxZcfe+5nk +CiKxLU3lSCZpq+Kq8/v8kiky6bM+TR8noc2OuRf7JT7JbvN32g0S9l3HuzYQ1VTW8+DiR0jm3hTa +YVKvJrT1cU/J19IG32PK/yHoWQbgCNWEFVP3Q+V8xaCJmGtzxmjOZd69fwX3se72V6FglcXM6pM6 +vpmumwKjrckWtc7dXpl4fho5frLABaTAgqWjR56M6ly2vGfb5ipN0gTco65F97yLnByn1tUD3AjL +LhbKXEAz6GfDLuemROoRRRw1ZS0eRWEkG4IupZ0zXWX4Qfkuy5Q/H6MMMSRE7cderVC6xkGbrPAX +ZcD4XW9boAo0PO7X6oifmPmvTiT6l7Jkdtqr9O3jw2Dv1fkCyC2fg69naQanMVXVz0tv/wQFx1is +XxYb5dKj6zHbHzMVTdDypVP1y+E9Tmgt2BLdqvLmTZtJ5cUoobqwWsagtQIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUiQq0OJMa5qvum5EY+fU8PjXQ +04IwDQYJKoZIhvcNAQEFBQADggIBADKL9p1Kyb4U5YysOMo6CdQbzoaz3evUuii+Eq5FLAR0rBNR +xVgYZk2C2tXck8An4b58n1KeElb21Zyp9HWc+jcSjxyT7Ff+Bw+r1RL3D65hXlaASfX8MPWbTx9B +LxyE04nH4toCdu0Jz2zBuByDHBb6lM19oMgY0sidbvW9adRtPTXoHqJPYNcHKfyyo6SdbhWSVhlM +CrDpfNIZTUJG7L399ldb3Zh+pE3McgODWF3vkzpBemOqfDqo9ayk0d2iLbYq/J8BjuIQscTK5Gfb +VSUZP/3oNn6z4eGBrxEWi1CXYBmCAMBrTXO40RMHPuq2MU/wQppt4hF05ZSsjYSVPCGvxdpHyN85 +YmLLW1AL14FABZyb7bq2ix4Eb5YgOe2kfSnbSM6C3NQCjR0EMVrHS/BsYVLXtFHCgWzN4funodKS +ds+xDzdYpPJScWc/DIh4gInByLUfkmO+p3qKViwaqKactV2zY9ATIKHrkWzQjX2v3wvkF7mGnjix +lAxYjOBVqjtjbZqJYLhkKpLGN/R+Q0O3c+gB53+XD9fyexn9GtePyfqFa3qdnom2piiZk4hA9z7N +UaPK6u95RyG1/jLix8NRb76AdPCkwzryT+lf3xkK8jsTQ6wxpLPn6/wY1gGp8yqPNg7rtLG8t0zJ +a7+h89n07eLw4+1knj0vllJPgFOL +-----END CERTIFICATE----- + +CA Disig Root R2 +================ +-----BEGIN CERTIFICATE----- +MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNVBAYTAlNLMRMw +EQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMuMRkwFwYDVQQDExBDQSBEaXNp +ZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQyMDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sx +EzARBgNVBAcTCkJyYXRpc2xhdmExEzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERp +c2lnIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbC +w3OeNcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNHPWSb6Wia +xswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3Ix2ymrdMxp7zo5eFm1tL7 +A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbeQTg06ov80egEFGEtQX6sx3dOy1FU+16S +GBsEWmjGycT6txOgmLcRK7fWV8x8nhfRyyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqV +g8NTEQxzHQuyRpDRQjrOQG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa +5Beny912H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJQfYE +koopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUDi/ZnWejBBhG93c+A +Ak9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORsnLMOPReisjQS1n6yqEm70XooQL6i +Fh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5u +Qu0wDQYJKoZIhvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM +tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqfGopTpti72TVV +sRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkblvdhuDvEK7Z4bLQjb/D907Je +dR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka+elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W8 +1k/BfDxujRNt+3vrMNDcTa/F1balTFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjx +mHHEt38OFdAlab0inSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01 +utI3gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18DrG5gPcFw0 +sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3OszMOl6W8KjptlwlCFtaOg +UxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8xL4ysEr3vQCj8KWefshNPZiTEUxnpHikV +7+ZtsH8tZ/3zbBt1RqPlShfppNcL +-----END CERTIFICATE----- + +ACCVRAIZ1 +========= +-----BEGIN CERTIFICATE----- +MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UEAwwJQUNDVlJB +SVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQswCQYDVQQGEwJFUzAeFw0xMTA1 +MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQBgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwH +UEtJQUNDVjENMAsGA1UECgwEQUNDVjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQCbqau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gM +jmoYHtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWoG2ioPej0 +RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpAlHPrzg5XPAOBOp0KoVdD +aaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhrIA8wKFSVf+DuzgpmndFALW4ir50awQUZ +0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDG +WuzndN9wrqODJerWx5eHk6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs7 +8yM2x/474KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMOm3WR +5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpacXpkatcnYGMN285J +9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPluUsXQA+xtrn13k/c4LOsOxFwYIRK +Q26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYIKwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRw +Oi8vd3d3LmFjY3YuZXMvZmlsZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEu +Y3J0MB8GCCsGAQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 +VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeTVfZW6oHlNsyM +Hj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIGCCsGAQUFBwICMIIBFB6CARAA +QQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUAcgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBh +AO0AegAgAGQAZQAgAGwAYQAgAEEAQwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUA +YwBuAG8AbABvAGcA7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBj +AHQAcgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAAQwBQAFMA +IABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUAczAwBggrBgEFBQcCARYk +aHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2MuaHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0 +dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRtaW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2 +MV9kZXIuY3JsMA4GA1UdDwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZI +hvcNAQEFBQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdpD70E +R9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gUJyCpZET/LtZ1qmxN +YEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+mAM/EKXMRNt6GGT6d7hmKG9Ww7Y49 +nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepDvV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJ +TS+xJlsndQAJxGJ3KQhfnlmstn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3 +sCPdK6jT2iWH7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h +I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szAh1xA2syVP1Xg +Nce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xFd3+YJ5oyXSrjhO7FmGYvliAd +3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2HpPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3p +EfbRD0tVNEYqi4Y7 +-----END CERTIFICATE----- + +TWCA Global Root CA +=================== +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcxEjAQBgNVBAoT +CVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMTVFdDQSBHbG9iYWwgUm9vdCBD +QTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQK +EwlUQUlXQU4tQ0ExEDAOBgNVBAsTB1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3Qg +Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2C +nJfF10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz0ALfUPZV +r2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfChMBwqoJimFb3u/Rk28OKR +Q4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbHzIh1HrtsBv+baz4X7GGqcXzGHaL3SekV +tTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1W +KKD+u4ZqyPpcC1jcxkt2yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99 +sy2sbZCilaLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYPoA/p +yJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQABDzfuBSO6N+pjWxn +kjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcEqYSjMq+u7msXi7Kx/mzhkIyIqJdI +zshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMC +AQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6g +cFGn90xHNcgL1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn +LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WFH6vPNOw/KP4M +8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNoRI2T9GRwoD2dKAXDOXC4Ynsg +/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlg +lPx4mI88k1HtQJAH32RjJMtOcQWh15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryP +A9gK8kxkRr05YuWW6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3m +i4TWnsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5jwa19hAM8 +EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWzaGHQRiapIVJpLesux+t3 +zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmyKwbQBM0= +-----END CERTIFICATE----- + +TeliaSonera Root CA v1 +====================== +-----BEGIN CERTIFICATE----- +MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAwNzEUMBIGA1UE +CgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJvb3QgQ0EgdjEwHhcNMDcxMDE4 +MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYDVQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwW +VGVsaWFTb25lcmEgUm9vdCBDQSB2MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+ +6yfwIaPzaSZVfp3FVRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA +3GV17CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+XZ75Ljo1k +B1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+/jXh7VB7qTCNGdMJjmhn +Xb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxH +oLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkmdtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3 +F0fUTPHSiXk+TT2YqGHeOh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJ +oWjiUIMusDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4pgd7 +gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fsslESl1MpWtTwEhDc +TwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQarMCpgKIv7NHfirZ1fpoeDVNAgMB +AAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qW +DNXr+nuqF+gTEjANBgkqhkiG9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNm +zqjMDfz1mgbldxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx +0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1TjTQpgcmLNkQfW +pb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBedY2gea+zDTYa4EzAvXUYNR0PV +G6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpc +c41teyWRyu5FrgZLAMzTsVlQ2jqIOylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOT +JsjrDNYmiLbAJM+7vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2 +qReWt88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcnHL/EVlP6 +Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVxSK236thZiNSQvxaz2ems +WWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= +-----END CERTIFICATE----- + +E-Tugra Certification Authority +=============================== +-----BEGIN CERTIFICATE----- +MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNVBAYTAlRSMQ8w +DQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamls +ZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN +ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMw +NTEyMDk0OFoXDTIzMDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmEx +QDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxl +cmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQD +DB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEA4vU/kwVRHoViVF56C/UYB4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vd +hQd2h8y/L5VMzH2nPbxHD5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5K +CKpbknSFQ9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEoq1+g +ElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3Dk14opz8n8Y4e0ypQ +BaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcHfC425lAcP9tDJMW/hkd5s3kc91r0 +E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsutdEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gz +rt48Ue7LE3wBf4QOXVGUnhMMti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAq +jqFGOjGY5RH8zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn +rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUXU8u3Zg5mTPj5 +dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6Jyr+zE7S6E5UMA8GA1UdEwEB +/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEG +MA0GCSqGSIb3DQEBCwUAA4ICAQAFNzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAK +kEh47U6YA5n+KGCRHTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jO +XKqYGwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c77NCR807 +VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3+GbHeJAAFS6LrVE1Uweo +a2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WKvJUawSg5TB9D0pH0clmKuVb8P7Sd2nCc +dlqMQ1DujjByTd//SffGqWfZbawCEeI6FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEV +KV0jq9BgoRJP3vQXzTLlyb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gT +Dx4JnW2PAJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpDy4Q0 +8ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8dNL/+I5c30jn6PQ0G +C7TbO6Orb1wdtn7os4I07QZcJA== +-----END CERTIFICATE----- + +T-TeleSec GlobalRoot Class 2 +============================ +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM +IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU +cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgx +MDAxMTA0MDE0WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz +dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD +ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUdAqSzm1nzHoqvNK38DcLZ +SBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiCFoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/F +vudocP05l03Sx5iRUKrERLMjfTlH6VJi1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx970 +2cu+fjOlbpSD8DT6IavqjnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGV +WOHAD3bZwI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/WSA2AHmgoCJrjNXy +YdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhyNsZt+U2e+iKo4YFWz827n+qrkRk4 +r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPACuvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNf +vNoBYimipidx5joifsFvHZVwIEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR +3p1m0IvVVGb6g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN +9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlPBSeOE6Fuwg== +-----END CERTIFICATE----- + +Atos TrustedRoot 2011 +===================== +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UEAwwVQXRvcyBU +cnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0xMTA3MDcxNDU4 +MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMMFUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsG +A1UECgwEQXRvczELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCV +hTuXbyo7LjvPpvMpNb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr +54rMVD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+SZFhyBH+ +DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ4J7sVaE3IqKHBAUsR320 +HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0Lcp2AMBYHlT8oDv3FdU9T1nSatCQujgKR +z3bFmx5VdJx4IbHwLfELn8LVlhgf8FQieowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7R +l+lwrrw7GWzbITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZ +bNshMBgGA1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB +CwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8jvZfza1zv7v1Apt+h +k6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kPDpFrdRbhIfzYJsdHt6bPWHJxfrrh +TZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pcmaHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a9 +61qn8FYiqTxlVMYVqL2Gns2Dlmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G +3mB/ufNPRJLvKrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed +-----END CERTIFICATE----- + diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/StaticClient.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/StaticClient.php new file mode 100644 index 0000000..dbd4c18 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/StaticClient.php @@ -0,0 +1,157 @@ +createRequest($method, $url, null, null, $options); + + if (isset($options['stream'])) { + if ($options['stream'] instanceof StreamRequestFactoryInterface) { + return $options['stream']->fromRequest($request); + } elseif ($options['stream'] == true) { + $streamFactory = new PhpStreamRequestFactory(); + return $streamFactory->fromRequest($request); + } + } + + return $request->send(); + } + + /** + * Send a GET request + * + * @param string $url URL of the request + * @param array $options Array of request options + * + * @return \Guzzle\Http\Message\Response + * @see Guzzle::request for a list of available options + */ + public static function get($url, $options = array()) + { + return self::request('GET', $url, $options); + } + + /** + * Send a HEAD request + * + * @param string $url URL of the request + * @param array $options Array of request options + * + * @return \Guzzle\Http\Message\Response + * @see Guzzle::request for a list of available options + */ + public static function head($url, $options = array()) + { + return self::request('HEAD', $url, $options); + } + + /** + * Send a DELETE request + * + * @param string $url URL of the request + * @param array $options Array of request options + * + * @return \Guzzle\Http\Message\Response + * @see Guzzle::request for a list of available options + */ + public static function delete($url, $options = array()) + { + return self::request('DELETE', $url, $options); + } + + /** + * Send a POST request + * + * @param string $url URL of the request + * @param array $options Array of request options + * + * @return \Guzzle\Http\Message\Response + * @see Guzzle::request for a list of available options + */ + public static function post($url, $options = array()) + { + return self::request('POST', $url, $options); + } + + /** + * Send a PUT request + * + * @param string $url URL of the request + * @param array $options Array of request options + * + * @return \Guzzle\Http\Message\Response + * @see Guzzle::request for a list of available options + */ + public static function put($url, $options = array()) + { + return self::request('PUT', $url, $options); + } + + /** + * Send a PATCH request + * + * @param string $url URL of the request + * @param array $options Array of request options + * + * @return \Guzzle\Http\Message\Response + * @see Guzzle::request for a list of available options + */ + public static function patch($url, $options = array()) + { + return self::request('PATCH', $url, $options); + } + + /** + * Send an OPTIONS request + * + * @param string $url URL of the request + * @param array $options Array of request options + * + * @return \Guzzle\Http\Message\Response + * @see Guzzle::request for a list of available options + */ + public static function options($url, $options = array()) + { + return self::request('OPTIONS', $url, $options); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Url.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Url.php new file mode 100644 index 0000000..6a4e772 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/Url.php @@ -0,0 +1,554 @@ + null, 'host' => null, 'path' => null, 'port' => null, 'query' => null, + 'user' => null, 'pass' => null, 'fragment' => null); + + if (false === ($parts = parse_url($url))) { + throw new InvalidArgumentException('Was unable to parse malformed url: ' . $url); + } + + $parts += $defaults; + + // Convert the query string into a QueryString object + if ($parts['query'] || 0 !== strlen($parts['query'])) { + $parts['query'] = QueryString::fromString($parts['query']); + } + + return new static($parts['scheme'], $parts['host'], $parts['user'], + $parts['pass'], $parts['port'], $parts['path'], $parts['query'], + $parts['fragment']); + } + + /** + * Build a URL from parse_url parts. The generated URL will be a relative URL if a scheme or host are not provided. + * + * @param array $parts Array of parse_url parts + * + * @return string + */ + public static function buildUrl(array $parts) + { + $url = $scheme = ''; + + if (isset($parts['scheme'])) { + $scheme = $parts['scheme']; + $url .= $scheme . ':'; + } + + if (isset($parts['host'])) { + $url .= '//'; + if (isset($parts['user'])) { + $url .= $parts['user']; + if (isset($parts['pass'])) { + $url .= ':' . $parts['pass']; + } + $url .= '@'; + } + + $url .= $parts['host']; + + // Only include the port if it is not the default port of the scheme + if (isset($parts['port']) + && !(($scheme == 'http' && $parts['port'] == 80) || ($scheme == 'https' && $parts['port'] == 443)) + ) { + $url .= ':' . $parts['port']; + } + } + + // Add the path component if present + if (isset($parts['path']) && 0 !== strlen($parts['path'])) { + // Always ensure that the path begins with '/' if set and something is before the path + if ($url && $parts['path'][0] != '/' && substr($url, -1) != '/') { + $url .= '/'; + } + $url .= $parts['path']; + } + + // Add the query string if present + if (isset($parts['query'])) { + $url .= '?' . $parts['query']; + } + + // Ensure that # is only added to the url if fragment contains anything. + if (isset($parts['fragment'])) { + $url .= '#' . $parts['fragment']; + } + + return $url; + } + + /** + * Create a new URL from URL parts + * + * @param string $scheme Scheme of the URL + * @param string $host Host of the URL + * @param string $username Username of the URL + * @param string $password Password of the URL + * @param int $port Port of the URL + * @param string $path Path of the URL + * @param QueryString|array|string $query Query string of the URL + * @param string $fragment Fragment of the URL + */ + public function __construct($scheme, $host, $username = null, $password = null, $port = null, $path = null, QueryString $query = null, $fragment = null) + { + $this->scheme = $scheme; + $this->host = $host; + $this->port = $port; + $this->username = $username; + $this->password = $password; + $this->fragment = $fragment; + if (!$query) { + $this->query = new QueryString(); + } else { + $this->setQuery($query); + } + $this->setPath($path); + } + + /** + * Clone the URL + */ + public function __clone() + { + $this->query = clone $this->query; + } + + /** + * Returns the URL as a URL string + * + * @return string + */ + public function __toString() + { + return self::buildUrl($this->getParts()); + } + + /** + * Get the parts of the URL as an array + * + * @return array + */ + public function getParts() + { + $query = (string) $this->query; + + return array( + 'scheme' => $this->scheme, + 'user' => $this->username, + 'pass' => $this->password, + 'host' => $this->host, + 'port' => $this->port, + 'path' => $this->getPath(), + 'query' => $query !== '' ? $query : null, + 'fragment' => $this->fragment, + ); + } + + /** + * Set the host of the request. + * + * @param string $host Host to set (e.g. www.yahoo.com, yahoo.com) + * + * @return Url + */ + public function setHost($host) + { + if (strpos($host, ':') === false) { + $this->host = $host; + } else { + list($host, $port) = explode(':', $host); + $this->host = $host; + $this->setPort($port); + } + + return $this; + } + + /** + * Get the host part of the URL + * + * @return string + */ + public function getHost() + { + return $this->host; + } + + /** + * Set the scheme part of the URL (http, https, ftp, etc) + * + * @param string $scheme Scheme to set + * + * @return Url + */ + public function setScheme($scheme) + { + if ($this->scheme == 'http' && $this->port == 80) { + $this->port = null; + } elseif ($this->scheme == 'https' && $this->port == 443) { + $this->port = null; + } + + $this->scheme = $scheme; + + return $this; + } + + /** + * Get the scheme part of the URL + * + * @return string + */ + public function getScheme() + { + return $this->scheme; + } + + /** + * Set the port part of the URL + * + * @param int $port Port to set + * + * @return Url + */ + public function setPort($port) + { + $this->port = $port; + + return $this; + } + + /** + * Get the port part of the URl. Will return the default port for a given scheme if no port has been set. + * + * @return int|null + */ + public function getPort() + { + if ($this->port) { + return $this->port; + } elseif ($this->scheme == 'http') { + return 80; + } elseif ($this->scheme == 'https') { + return 443; + } + + return null; + } + + /** + * Set the path part of the URL + * + * @param array|string $path Path string or array of path segments + * + * @return Url + */ + public function setPath($path) + { + static $pathReplace = array(' ' => '%20', '?' => '%3F'); + if (is_array($path)) { + $path = '/' . implode('/', $path); + } + + $this->path = strtr($path, $pathReplace); + + return $this; + } + + /** + * Normalize the URL so that double slashes and relative paths are removed + * + * @return Url + */ + public function normalizePath() + { + if (!$this->path || $this->path == '/' || $this->path == '*') { + return $this; + } + + $results = array(); + $segments = $this->getPathSegments(); + foreach ($segments as $segment) { + if ($segment == '..') { + array_pop($results); + } elseif ($segment != '.' && $segment != '') { + $results[] = $segment; + } + } + + // Combine the normalized parts and add the leading slash if needed + $this->path = ($this->path[0] == '/' ? '/' : '') . implode('/', $results); + + // Add the trailing slash if necessary + if ($this->path != '/' && end($segments) == '') { + $this->path .= '/'; + } + + return $this; + } + + /** + * Add a relative path to the currently set path. + * + * @param string $relativePath Relative path to add + * + * @return Url + */ + public function addPath($relativePath) + { + if ($relativePath != '/' && is_string($relativePath) && strlen($relativePath) > 0) { + // Add a leading slash if needed + if ($relativePath[0] != '/') { + $relativePath = '/' . $relativePath; + } + $this->setPath(str_replace('//', '/', $this->path . $relativePath)); + } + + return $this; + } + + /** + * Get the path part of the URL + * + * @return string + */ + public function getPath() + { + return $this->path; + } + + /** + * Get the path segments of the URL as an array + * + * @return array + */ + public function getPathSegments() + { + return array_slice(explode('/', $this->getPath()), 1); + } + + /** + * Set the password part of the URL + * + * @param string $password Password to set + * + * @return Url + */ + public function setPassword($password) + { + $this->password = $password; + + return $this; + } + + /** + * Get the password part of the URL + * + * @return null|string + */ + public function getPassword() + { + return $this->password; + } + + /** + * Set the username part of the URL + * + * @param string $username Username to set + * + * @return Url + */ + public function setUsername($username) + { + $this->username = $username; + + return $this; + } + + /** + * Get the username part of the URl + * + * @return null|string + */ + public function getUsername() + { + return $this->username; + } + + /** + * Get the query part of the URL as a QueryString object + * + * @return QueryString + */ + public function getQuery() + { + return $this->query; + } + + /** + * Set the query part of the URL + * + * @param QueryString|string|array $query Query to set + * + * @return Url + */ + public function setQuery($query) + { + if (is_string($query)) { + $output = null; + parse_str($query, $output); + $this->query = new QueryString($output); + } elseif (is_array($query)) { + $this->query = new QueryString($query); + } elseif ($query instanceof QueryString) { + $this->query = $query; + } + + return $this; + } + + /** + * Get the fragment part of the URL + * + * @return null|string + */ + public function getFragment() + { + return $this->fragment; + } + + /** + * Set the fragment part of the URL + * + * @param string $fragment Fragment to set + * + * @return Url + */ + public function setFragment($fragment) + { + $this->fragment = $fragment; + + return $this; + } + + /** + * Check if this is an absolute URL + * + * @return bool + */ + public function isAbsolute() + { + return $this->scheme && $this->host; + } + + /** + * Combine the URL with another URL. Follows the rules specific in RFC 3986 section 5.4. + * + * @param string $url Relative URL to combine with + * @param bool $strictRfc3986 Set to true to use strict RFC 3986 compliance when merging paths. When first + * released, Guzzle used an incorrect algorithm for combining relative URL paths. In + * order to not break users, we introduced this flag to allow the merging of URLs based + * on strict RFC 3986 section 5.4.1. This means that "http://a.com/foo/baz" merged with + * "bar" would become "http://a.com/foo/bar". When this value is set to false, it would + * become "http://a.com/foo/baz/bar". + * @return Url + * @throws InvalidArgumentException + * @link http://tools.ietf.org/html/rfc3986#section-5.4 + */ + public function combine($url, $strictRfc3986 = false) + { + $url = self::factory($url); + + // Use the more absolute URL as the base URL + if (!$this->isAbsolute() && $url->isAbsolute()) { + $url = $url->combine($this); + } + + // Passing a URL with a scheme overrides everything + if ($buffer = $url->getScheme()) { + $this->scheme = $buffer; + $this->host = $url->getHost(); + $this->port = $url->getPort(); + $this->username = $url->getUsername(); + $this->password = $url->getPassword(); + $this->path = $url->getPath(); + $this->query = $url->getQuery(); + $this->fragment = $url->getFragment(); + return $this; + } + + // Setting a host overrides the entire rest of the URL + if ($buffer = $url->getHost()) { + $this->host = $buffer; + $this->port = $url->getPort(); + $this->username = $url->getUsername(); + $this->password = $url->getPassword(); + $this->path = $url->getPath(); + $this->query = $url->getQuery(); + $this->fragment = $url->getFragment(); + return $this; + } + + $path = $url->getPath(); + $query = $url->getQuery(); + + if (!$path) { + if (count($query)) { + $this->addQuery($query, $strictRfc3986); + } + } else { + if ($path[0] == '/') { + $this->path = $path; + } elseif ($strictRfc3986) { + $this->path .= '/../' . $path; + } else { + $this->path .= '/' . $path; + } + $this->normalizePath(); + $this->addQuery($query, $strictRfc3986); + } + + $this->fragment = $url->getFragment(); + + return $this; + } + + private function addQuery(QueryString $new, $strictRfc386) + { + if (!$strictRfc386) { + $new->merge($this->query); + } + + $this->query = $new; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/composer.json b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/composer.json new file mode 100644 index 0000000..9384a5b --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/composer.json @@ -0,0 +1,32 @@ +{ + "name": "guzzle/http", + "description": "HTTP libraries used by Guzzle", + "homepage": "http://guzzlephp.org/", + "keywords": ["http client", "http", "client", "Guzzle", "curl"], + "license": "MIT", + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "require": { + "php": ">=5.3.2", + "guzzle/common": "self.version", + "guzzle/parser": "self.version", + "guzzle/stream": "self.version" + }, + "suggest": { + "ext-curl": "*" + }, + "autoload": { + "psr-0": { "Guzzle\\Http": "" } + }, + "target-dir": "Guzzle/Http", + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Inflection/Inflector.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Inflection/Inflector.php new file mode 100644 index 0000000..c699773 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Inflection/Inflector.php @@ -0,0 +1,38 @@ + array(), + 'camel' => array() + ); + + /** @var int Max entries per cache */ + protected $maxCacheSize; + + /** @var InflectorInterface Decorated inflector */ + protected $decoratedInflector; + + /** + * @param InflectorInterface $inflector Inflector being decorated + * @param int $maxCacheSize Maximum number of cached items to hold per cache + */ + public function __construct(InflectorInterface $inflector, $maxCacheSize = 500) + { + $this->decoratedInflector = $inflector; + $this->maxCacheSize = $maxCacheSize; + } + + public function snake($word) + { + if (!isset($this->cache['snake'][$word])) { + $this->pruneCache('snake'); + $this->cache['snake'][$word] = $this->decoratedInflector->snake($word); + } + + return $this->cache['snake'][$word]; + } + + /** + * Converts strings from snake_case to upper CamelCase + * + * @param string $word Value to convert into upper CamelCase + * + * @return string + */ + public function camel($word) + { + if (!isset($this->cache['camel'][$word])) { + $this->pruneCache('camel'); + $this->cache['camel'][$word] = $this->decoratedInflector->camel($word); + } + + return $this->cache['camel'][$word]; + } + + /** + * Prune one of the named caches by removing 20% of the cache if it is full + * + * @param string $cache Type of cache to prune + */ + protected function pruneCache($cache) + { + if (count($this->cache[$cache]) == $this->maxCacheSize) { + $this->cache[$cache] = array_slice($this->cache[$cache], $this->maxCacheSize * 0.2); + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Inflection/PreComputedInflector.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Inflection/PreComputedInflector.php new file mode 100644 index 0000000..db37e4f --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Inflection/PreComputedInflector.php @@ -0,0 +1,59 @@ + array(), + 'camel' => array() + ); + + /** @var InflectorInterface Decorated inflector */ + protected $decoratedInflector; + + /** + * @param InflectorInterface $inflector Inflector being decorated + * @param array $snake Hash of pre-computed camel to snake + * @param array $camel Hash of pre-computed snake to camel + * @param bool $mirror Mirror snake and camel reflections + */ + public function __construct(InflectorInterface $inflector, array $snake = array(), array $camel = array(), $mirror = false) + { + if ($mirror) { + $camel = array_merge(array_flip($snake), $camel); + $snake = array_merge(array_flip($camel), $snake); + } + + $this->decoratedInflector = $inflector; + $this->mapping = array( + 'snake' => $snake, + 'camel' => $camel + ); + } + + public function snake($word) + { + return isset($this->mapping['snake'][$word]) + ? $this->mapping['snake'][$word] + : $this->decoratedInflector->snake($word); + } + + /** + * Converts strings from snake_case to upper CamelCase + * + * @param string $word Value to convert into upper CamelCase + * + * @return string + */ + public function camel($word) + { + return isset($this->mapping['camel'][$word]) + ? $this->mapping['camel'][$word] + : $this->decoratedInflector->camel($word); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Inflection/composer.json b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Inflection/composer.json new file mode 100644 index 0000000..93f9e7b --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Inflection/composer.json @@ -0,0 +1,26 @@ +{ + "name": "guzzle/inflection", + "description": "Guzzle inflection component", + "homepage": "http://guzzlephp.org/", + "keywords": ["inflection", "guzzle"], + "license": "MIT", + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "require": { + "php": ">=5.3.2" + }, + "autoload": { + "psr-0": { "Guzzle\\Inflection": "" } + }, + "target-dir": "Guzzle/Inflection", + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Iterator/AppendIterator.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Iterator/AppendIterator.php new file mode 100644 index 0000000..1b6bd7e --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Iterator/AppendIterator.php @@ -0,0 +1,19 @@ +getArrayIterator()->append($iterator); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Iterator/ChunkedIterator.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Iterator/ChunkedIterator.php new file mode 100644 index 0000000..d76cdd4 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Iterator/ChunkedIterator.php @@ -0,0 +1,56 @@ +chunkSize = $chunkSize; + } + + public function rewind() + { + parent::rewind(); + $this->next(); + } + + public function next() + { + $this->chunk = array(); + for ($i = 0; $i < $this->chunkSize && parent::valid(); $i++) { + $this->chunk[] = parent::current(); + parent::next(); + } + } + + public function current() + { + return $this->chunk; + } + + public function valid() + { + return (bool) $this->chunk; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Iterator/FilterIterator.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Iterator/FilterIterator.php new file mode 100644 index 0000000..b103367 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Iterator/FilterIterator.php @@ -0,0 +1,36 @@ +callback = $callback; + } + + public function accept() + { + return call_user_func($this->callback, $this->current()); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Iterator/MapIterator.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Iterator/MapIterator.php new file mode 100644 index 0000000..7e586bd --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Iterator/MapIterator.php @@ -0,0 +1,34 @@ +callback = $callback; + } + + public function current() + { + return call_user_func($this->callback, parent::current()); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Iterator/MethodProxyIterator.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Iterator/MethodProxyIterator.php new file mode 100644 index 0000000..de4ab03 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Iterator/MethodProxyIterator.php @@ -0,0 +1,27 @@ +getInnerIterator(); + while ($i instanceof \OuterIterator) { + $i = $i->getInnerIterator(); + } + + return call_user_func_array(array($i, $name), $args); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Iterator/README.md b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Iterator/README.md new file mode 100644 index 0000000..8bb7e08 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Iterator/README.md @@ -0,0 +1,25 @@ +Guzzle Iterator +=============== + +Provides useful Iterators and Iterator decorators + +- ChunkedIterator: Pulls out chunks from an inner iterator and yields the chunks as arrays +- FilterIterator: Used when PHP 5.4's CallbackFilterIterator is not available +- MapIterator: Maps values before yielding +- MethodProxyIterator: Proxies missing method calls to the innermost iterator + +### Installing via Composer + +```bash +# Install Composer +curl -sS https://getcomposer.org/installer | php + +# Add Guzzle as a dependency +php composer.phar require guzzle/iterator:~3.0 +``` + +After installing, you need to require Composer's autoloader: + +```php +require 'vendor/autoload.php'; +``` diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Iterator/composer.json b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Iterator/composer.json new file mode 100644 index 0000000..ee17379 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Iterator/composer.json @@ -0,0 +1,27 @@ +{ + "name": "guzzle/iterator", + "description": "Provides helpful iterators and iterator decorators", + "keywords": ["iterator", "guzzle"], + "homepage": "http://guzzlephp.org/", + "license": "MIT", + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "require": { + "php": ">=5.3.2", + "guzzle/common": ">=2.8.0" + }, + "autoload": { + "psr-0": { "Guzzle\\Iterator": "/" } + }, + "target-dir": "Guzzle/Iterator", + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Log/AbstractLogAdapter.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Log/AbstractLogAdapter.php new file mode 100644 index 0000000..7f6271b --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Log/AbstractLogAdapter.php @@ -0,0 +1,16 @@ +log; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Log/ArrayLogAdapter.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Log/ArrayLogAdapter.php new file mode 100644 index 0000000..a70fc8d --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Log/ArrayLogAdapter.php @@ -0,0 +1,34 @@ +logs[] = array('message' => $message, 'priority' => $priority, 'extras' => $extras); + } + + /** + * Get logged entries + * + * @return array + */ + public function getLogs() + { + return $this->logs; + } + + /** + * Clears logged entries + */ + public function clearLogs() + { + $this->logs = array(); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Log/ClosureLogAdapter.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Log/ClosureLogAdapter.php new file mode 100644 index 0000000..d4bb73f --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Log/ClosureLogAdapter.php @@ -0,0 +1,23 @@ +log = $logObject; + } + + public function log($message, $priority = LOG_INFO, $extras = array()) + { + call_user_func($this->log, $message, $priority, $extras); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Log/LogAdapterInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Log/LogAdapterInterface.php new file mode 100644 index 0000000..d7ac4ea --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Log/LogAdapterInterface.php @@ -0,0 +1,18 @@ +>>>>>>>\n{request}\n<<<<<<<<\n{response}\n--------\n{curl_stderr}"; + const SHORT_FORMAT = '[{ts}] "{method} {resource} {protocol}/{version}" {code}'; + + /** + * @var string Template used to format log messages + */ + protected $template; + + /** + * @param string $template Log message template + */ + public function __construct($template = self::DEFAULT_FORMAT) + { + $this->template = $template ?: self::DEFAULT_FORMAT; + } + + /** + * Set the template to use for logging + * + * @param string $template Log message template + * + * @return self + */ + public function setTemplate($template) + { + $this->template = $template; + + return $this; + } + + /** + * Returns a formatted message + * + * @param RequestInterface $request Request that was sent + * @param Response $response Response that was received + * @param CurlHandle $handle Curl handle associated with the message + * @param array $customData Associative array of custom template data + * + * @return string + */ + public function format( + RequestInterface $request, + Response $response = null, + CurlHandle $handle = null, + array $customData = array() + ) { + $cache = $customData; + + return preg_replace_callback( + '/{\s*([A-Za-z_\-\.0-9]+)\s*}/', + function (array $matches) use ($request, $response, $handle, &$cache) { + + if (array_key_exists($matches[1], $cache)) { + return $cache[$matches[1]]; + } + + $result = ''; + switch ($matches[1]) { + case 'request': + $result = (string) $request; + break; + case 'response': + $result = (string) $response; + break; + case 'req_body': + $result = $request instanceof EntityEnclosingRequestInterface + ? (string) $request->getBody() : ''; + break; + case 'res_body': + $result = $response ? $response->getBody(true) : ''; + break; + case 'ts': + $result = gmdate('c'); + break; + case 'method': + $result = $request->getMethod(); + break; + case 'url': + $result = (string) $request->getUrl(); + break; + case 'resource': + $result = $request->getResource(); + break; + case 'protocol': + $result = 'HTTP'; + break; + case 'version': + $result = $request->getProtocolVersion(); + break; + case 'host': + $result = $request->getHost(); + break; + case 'hostname': + $result = gethostname(); + break; + case 'port': + $result = $request->getPort(); + break; + case 'code': + $result = $response ? $response->getStatusCode() : ''; + break; + case 'phrase': + $result = $response ? $response->getReasonPhrase() : ''; + break; + case 'connect_time': + $result = $handle && $handle->getInfo(CURLINFO_CONNECT_TIME) + ? $handle->getInfo(CURLINFO_CONNECT_TIME) + : ($response ? $response->getInfo('connect_time') : ''); + break; + case 'total_time': + $result = $handle && $handle->getInfo(CURLINFO_TOTAL_TIME) + ? $handle->getInfo(CURLINFO_TOTAL_TIME) + : ($response ? $response->getInfo('total_time') : ''); + break; + case 'curl_error': + $result = $handle ? $handle->getError() : ''; + break; + case 'curl_code': + $result = $handle ? $handle->getErrorNo() : ''; + break; + case 'curl_stderr': + $result = $handle ? $handle->getStderr() : ''; + break; + default: + if (strpos($matches[1], 'req_header_') === 0) { + $result = $request->getHeader(substr($matches[1], 11)); + } elseif ($response && strpos($matches[1], 'res_header_') === 0) { + $result = $response->getHeader(substr($matches[1], 11)); + } + } + + $cache[$matches[1]] = $result; + return $result; + }, + $this->template + ); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Log/MonologLogAdapter.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Log/MonologLogAdapter.php new file mode 100644 index 0000000..6afe7b6 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Log/MonologLogAdapter.php @@ -0,0 +1,34 @@ + Logger::DEBUG, + LOG_INFO => Logger::INFO, + LOG_WARNING => Logger::WARNING, + LOG_ERR => Logger::ERROR, + LOG_CRIT => Logger::CRITICAL, + LOG_ALERT => Logger::ALERT + ); + + public function __construct(Logger $logObject) + { + $this->log = $logObject; + } + + public function log($message, $priority = LOG_INFO, $extras = array()) + { + $this->log->addRecord(self::$mapping[$priority], $message, $extras); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Log/PsrLogAdapter.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Log/PsrLogAdapter.php new file mode 100644 index 0000000..38a2b60 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Log/PsrLogAdapter.php @@ -0,0 +1,36 @@ + LogLevel::DEBUG, + LOG_INFO => LogLevel::INFO, + LOG_WARNING => LogLevel::WARNING, + LOG_ERR => LogLevel::ERROR, + LOG_CRIT => LogLevel::CRITICAL, + LOG_ALERT => LogLevel::ALERT + ); + + public function __construct(LoggerInterface $logObject) + { + $this->log = $logObject; + } + + public function log($message, $priority = LOG_INFO, $extras = array()) + { + $this->log->log(self::$mapping[$priority], $message, $extras); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Log/Zf1LogAdapter.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Log/Zf1LogAdapter.php new file mode 100644 index 0000000..0ea8e3b --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Log/Zf1LogAdapter.php @@ -0,0 +1,24 @@ +log = $logObject; + Version::warn(__CLASS__ . ' is deprecated'); + } + + public function log($message, $priority = LOG_INFO, $extras = array()) + { + $this->log->log($message, $priority, $extras); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Log/Zf2LogAdapter.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Log/Zf2LogAdapter.php new file mode 100644 index 0000000..863f6a1 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Log/Zf2LogAdapter.php @@ -0,0 +1,21 @@ +log = $logObject; + } + + public function log($message, $priority = LOG_INFO, $extras = array()) + { + $this->log->log($priority, $message, $extras); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Log/composer.json b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Log/composer.json new file mode 100644 index 0000000..a8213e8 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Log/composer.json @@ -0,0 +1,29 @@ +{ + "name": "guzzle/log", + "description": "Guzzle log adapter component", + "homepage": "http://guzzlephp.org/", + "keywords": ["log", "adapter", "guzzle"], + "license": "MIT", + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "require": { + "php": ">=5.3.2" + }, + "autoload": { + "psr-0": { "Guzzle\\Log": "" } + }, + "suggest": { + "guzzle/http": "self.version" + }, + "target-dir": "Guzzle/Log", + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Parser/Cookie/CookieParser.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Parser/Cookie/CookieParser.php new file mode 100644 index 0000000..4349eeb --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Parser/Cookie/CookieParser.php @@ -0,0 +1,131 @@ + 'Domain', + 'path' => 'Path', + 'max_age' => 'Max-Age', + 'expires' => 'Expires', + 'version' => 'Version', + 'secure' => 'Secure', + 'port' => 'Port', + 'discard' => 'Discard', + 'comment' => 'Comment', + 'comment_url' => 'Comment-Url', + 'http_only' => 'HttpOnly' + ); + + public function parseCookie($cookie, $host = null, $path = null, $decode = false) + { + // Explode the cookie string using a series of semicolons + $pieces = array_filter(array_map('trim', explode(';', $cookie))); + + // The name of the cookie (first kvp) must include an equal sign. + if (empty($pieces) || !strpos($pieces[0], '=')) { + return false; + } + + // Create the default return array + $data = array_merge(array_fill_keys(array_keys(self::$cookieParts), null), array( + 'cookies' => array(), + 'data' => array(), + 'path' => null, + 'http_only' => false, + 'discard' => false, + 'domain' => $host + )); + $foundNonCookies = 0; + + // Add the cookie pieces into the parsed data array + foreach ($pieces as $part) { + + $cookieParts = explode('=', $part, 2); + $key = trim($cookieParts[0]); + + if (count($cookieParts) == 1) { + // Can be a single value (e.g. secure, httpOnly) + $value = true; + } else { + // Be sure to strip wrapping quotes + $value = trim($cookieParts[1], " \n\r\t\0\x0B\""); + if ($decode) { + $value = urldecode($value); + } + } + + // Only check for non-cookies when cookies have been found + if (!empty($data['cookies'])) { + foreach (self::$cookieParts as $mapValue => $search) { + if (!strcasecmp($search, $key)) { + $data[$mapValue] = $mapValue == 'port' ? array_map('trim', explode(',', $value)) : $value; + $foundNonCookies++; + continue 2; + } + } + } + + // If cookies have not yet been retrieved, or this value was not found in the pieces array, treat it as a + // cookie. IF non-cookies have been parsed, then this isn't a cookie, it's cookie data. Cookies then data. + $data[$foundNonCookies ? 'data' : 'cookies'][$key] = $value; + } + + // Calculate the expires date + if (!$data['expires'] && $data['max_age']) { + $data['expires'] = time() + (int) $data['max_age']; + } + + // Check path attribute according RFC6265 http://tools.ietf.org/search/rfc6265#section-5.2.4 + // "If the attribute-value is empty or if the first character of the + // attribute-value is not %x2F ("/"): + // Let cookie-path be the default-path. + // Otherwise: + // Let cookie-path be the attribute-value." + if (!$data['path'] || substr($data['path'], 0, 1) !== '/') { + $data['path'] = $this->getDefaultPath($path); + } + + return $data; + } + + /** + * Get default cookie path according to RFC 6265 + * http://tools.ietf.org/search/rfc6265#section-5.1.4 Paths and Path-Match + * + * @param string $path Request uri-path + * + * @return string + */ + protected function getDefaultPath($path) { + // "The user agent MUST use an algorithm equivalent to the following algorithm + // to compute the default-path of a cookie:" + + // "2. If the uri-path is empty or if the first character of the uri-path is not + // a %x2F ("/") character, output %x2F ("/") and skip the remaining steps. + if (empty($path) || substr($path, 0, 1) !== '/') { + return '/'; + } + + // "3. If the uri-path contains no more than one %x2F ("/") character, output + // %x2F ("/") and skip the remaining step." + if ($path === "/") { + return $path; + } + + $rightSlashPos = strrpos($path, '/'); + if ($rightSlashPos === 0) { + return "/"; + } + + // "4. Output the characters of the uri-path from the first character up to, + // but not including, the right-most %x2F ("/")." + return substr($path, 0, $rightSlashPos); + + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Parser/Cookie/CookieParserInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Parser/Cookie/CookieParserInterface.php new file mode 100644 index 0000000..d21ffe2 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Parser/Cookie/CookieParserInterface.php @@ -0,0 +1,33 @@ + $requestUrl, + 'scheme' => 'http' + ); + + // Check for the Host header + if (isset($parts['headers']['Host'])) { + $urlParts['host'] = $parts['headers']['Host']; + } elseif (isset($parts['headers']['host'])) { + $urlParts['host'] = $parts['headers']['host']; + } else { + $urlParts['host'] = null; + } + + if (false === strpos($urlParts['host'], ':')) { + $urlParts['port'] = ''; + } else { + $hostParts = explode(':', $urlParts['host']); + $urlParts['host'] = trim($hostParts[0]); + $urlParts['port'] = (int) trim($hostParts[1]); + if ($urlParts['port'] == 443) { + $urlParts['scheme'] = 'https'; + } + } + + // Check if a query is present + $path = $urlParts['path']; + $qpos = strpos($path, '?'); + if ($qpos) { + $urlParts['query'] = substr($path, $qpos + 1); + $urlParts['path'] = substr($path, 0, $qpos); + } else { + $urlParts['query'] = ''; + } + + return $urlParts; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Parser/Message/MessageParser.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Parser/Message/MessageParser.php new file mode 100644 index 0000000..efc1aa3 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Parser/Message/MessageParser.php @@ -0,0 +1,110 @@ +parseMessage($message); + + // Parse the protocol and protocol version + if (isset($parts['start_line'][2])) { + $startParts = explode('/', $parts['start_line'][2]); + $protocol = strtoupper($startParts[0]); + $version = isset($startParts[1]) ? $startParts[1] : '1.1'; + } else { + $protocol = 'HTTP'; + $version = '1.1'; + } + + $parsed = array( + 'method' => strtoupper($parts['start_line'][0]), + 'protocol' => $protocol, + 'version' => $version, + 'headers' => $parts['headers'], + 'body' => $parts['body'] + ); + + $parsed['request_url'] = $this->getUrlPartsFromMessage(isset($parts['start_line'][1]) ? $parts['start_line'][1] : '' , $parsed); + + return $parsed; + } + + public function parseResponse($message) + { + if (!$message) { + return false; + } + + $parts = $this->parseMessage($message); + list($protocol, $version) = explode('/', trim($parts['start_line'][0])); + + return array( + 'protocol' => $protocol, + 'version' => $version, + 'code' => $parts['start_line'][1], + 'reason_phrase' => isset($parts['start_line'][2]) ? $parts['start_line'][2] : '', + 'headers' => $parts['headers'], + 'body' => $parts['body'] + ); + } + + /** + * Parse a message into parts + * + * @param string $message Message to parse + * + * @return array + */ + protected function parseMessage($message) + { + $startLine = null; + $headers = array(); + $body = ''; + + // Iterate over each line in the message, accounting for line endings + $lines = preg_split('/(\\r?\\n)/', $message, -1, PREG_SPLIT_DELIM_CAPTURE); + for ($i = 0, $totalLines = count($lines); $i < $totalLines; $i += 2) { + + $line = $lines[$i]; + + // If two line breaks were encountered, then this is the end of body + if (empty($line)) { + if ($i < $totalLines - 1) { + $body = implode('', array_slice($lines, $i + 2)); + } + break; + } + + // Parse message headers + if (!$startLine) { + $startLine = explode(' ', $line, 3); + } elseif (strpos($line, ':')) { + $parts = explode(':', $line, 2); + $key = trim($parts[0]); + $value = isset($parts[1]) ? trim($parts[1]) : ''; + if (!isset($headers[$key])) { + $headers[$key] = $value; + } elseif (!is_array($headers[$key])) { + $headers[$key] = array($headers[$key], $value); + } else { + $headers[$key][] = $value; + } + } + } + + return array( + 'start_line' => $startLine, + 'headers' => $headers, + 'body' => $body + ); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Parser/Message/MessageParserInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Parser/Message/MessageParserInterface.php new file mode 100644 index 0000000..cc44808 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Parser/Message/MessageParserInterface.php @@ -0,0 +1,27 @@ + $parts->requestMethod, + 'protocol' => 'HTTP', + 'version' => number_format($parts->httpVersion, 1), + 'headers' => $parts->headers, + 'body' => $parts->body + ); + + $parsed['request_url'] = $this->getUrlPartsFromMessage($parts->requestUrl, $parsed); + + return $parsed; + } + + public function parseResponse($message) + { + if (!$message) { + return false; + } + + $parts = http_parse_message($message); + + return array( + 'protocol' => 'HTTP', + 'version' => number_format($parts->httpVersion, 1), + 'code' => $parts->responseCode, + 'reason_phrase' => $parts->responseStatus, + 'headers' => $parts->headers, + 'body' => $parts->body + ); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Parser/ParserRegistry.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Parser/ParserRegistry.php new file mode 100644 index 0000000..f838683 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Parser/ParserRegistry.php @@ -0,0 +1,75 @@ + 'Guzzle\\Parser\\Message\\MessageParser', + 'cookie' => 'Guzzle\\Parser\\Cookie\\CookieParser', + 'url' => 'Guzzle\\Parser\\Url\\UrlParser', + 'uri_template' => 'Guzzle\\Parser\\UriTemplate\\UriTemplate', + ); + + /** + * @return self + * @codeCoverageIgnore + */ + public static function getInstance() + { + if (!self::$instance) { + self::$instance = new static; + } + + return self::$instance; + } + + public function __construct() + { + // Use the PECL URI template parser if available + if (extension_loaded('uri_template')) { + $this->mapping['uri_template'] = 'Guzzle\\Parser\\UriTemplate\\PeclUriTemplate'; + } + } + + /** + * Get a parser by name from an instance + * + * @param string $name Name of the parser to retrieve + * + * @return mixed|null + */ + public function getParser($name) + { + if (!isset($this->instances[$name])) { + if (!isset($this->mapping[$name])) { + return null; + } + $class = $this->mapping[$name]; + $this->instances[$name] = new $class(); + } + + return $this->instances[$name]; + } + + /** + * Register a custom parser by name with the register + * + * @param string $name Name or handle of the parser to register + * @param mixed $parser Instantiated parser to register + */ + public function registerParser($name, $parser) + { + $this->instances[$name] = $parser; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Parser/UriTemplate/PeclUriTemplate.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Parser/UriTemplate/PeclUriTemplate.php new file mode 100644 index 0000000..b0764e8 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Parser/UriTemplate/PeclUriTemplate.php @@ -0,0 +1,26 @@ + true, '#' => true, '.' => true, '/' => true, ';' => true, '?' => true, '&' => true + ); + + /** @var array Delimiters */ + private static $delims = array( + ':', '/', '?', '#', '[', ']', '@', '!', '$', '&', '\'', '(', ')', '*', '+', ',', ';', '=' + ); + + /** @var array Percent encoded delimiters */ + private static $delimsPct = array( + '%3A', '%2F', '%3F', '%23', '%5B', '%5D', '%40', '%21', '%24', '%26', '%27', '%28', '%29', '%2A', '%2B', '%2C', + '%3B', '%3D' + ); + + public function expand($template, array $variables) + { + if ($this->regex == self::DEFAULT_PATTERN && false === strpos($template, '{')) { + return $template; + } + + $this->template = $template; + $this->variables = $variables; + + return preg_replace_callback($this->regex, array($this, 'expandMatch'), $this->template); + } + + /** + * Set the regex patten used to expand URI templates + * + * @param string $regexPattern + */ + public function setRegex($regexPattern) + { + $this->regex = $regexPattern; + } + + /** + * Parse an expression into parts + * + * @param string $expression Expression to parse + * + * @return array Returns an associative array of parts + */ + private function parseExpression($expression) + { + // Check for URI operators + $operator = ''; + + if (isset(self::$operatorHash[$expression[0]])) { + $operator = $expression[0]; + $expression = substr($expression, 1); + } + + $values = explode(',', $expression); + foreach ($values as &$value) { + $value = trim($value); + $varspec = array(); + $substrPos = strpos($value, ':'); + if ($substrPos) { + $varspec['value'] = substr($value, 0, $substrPos); + $varspec['modifier'] = ':'; + $varspec['position'] = (int) substr($value, $substrPos + 1); + } elseif (substr($value, -1) == '*') { + $varspec['modifier'] = '*'; + $varspec['value'] = substr($value, 0, -1); + } else { + $varspec['value'] = (string) $value; + $varspec['modifier'] = ''; + } + $value = $varspec; + } + + return array( + 'operator' => $operator, + 'values' => $values + ); + } + + /** + * Process an expansion + * + * @param array $matches Matches met in the preg_replace_callback + * + * @return string Returns the replacement string + */ + private function expandMatch(array $matches) + { + static $rfc1738to3986 = array( + '+' => '%20', + '%7e' => '~' + ); + + $parsed = self::parseExpression($matches[1]); + $replacements = array(); + + $prefix = $parsed['operator']; + $joiner = $parsed['operator']; + $useQueryString = false; + if ($parsed['operator'] == '?') { + $joiner = '&'; + $useQueryString = true; + } elseif ($parsed['operator'] == '&') { + $useQueryString = true; + } elseif ($parsed['operator'] == '#') { + $joiner = ','; + } elseif ($parsed['operator'] == ';') { + $useQueryString = true; + } elseif ($parsed['operator'] == '' || $parsed['operator'] == '+') { + $joiner = ','; + $prefix = ''; + } + + foreach ($parsed['values'] as $value) { + + if (!array_key_exists($value['value'], $this->variables) || $this->variables[$value['value']] === null) { + continue; + } + + $variable = $this->variables[$value['value']]; + $actuallyUseQueryString = $useQueryString; + $expanded = ''; + + if (is_array($variable)) { + + $isAssoc = $this->isAssoc($variable); + $kvp = array(); + foreach ($variable as $key => $var) { + + if ($isAssoc) { + $key = rawurlencode($key); + $isNestedArray = is_array($var); + } else { + $isNestedArray = false; + } + + if (!$isNestedArray) { + $var = rawurlencode($var); + if ($parsed['operator'] == '+' || $parsed['operator'] == '#') { + $var = $this->decodeReserved($var); + } + } + + if ($value['modifier'] == '*') { + if ($isAssoc) { + if ($isNestedArray) { + // Nested arrays must allow for deeply nested structures + $var = strtr(http_build_query(array($key => $var)), $rfc1738to3986); + } else { + $var = $key . '=' . $var; + } + } elseif ($key > 0 && $actuallyUseQueryString) { + $var = $value['value'] . '=' . $var; + } + } + + $kvp[$key] = $var; + } + + if (empty($variable)) { + $actuallyUseQueryString = false; + } elseif ($value['modifier'] == '*') { + $expanded = implode($joiner, $kvp); + if ($isAssoc) { + // Don't prepend the value name when using the explode modifier with an associative array + $actuallyUseQueryString = false; + } + } else { + if ($isAssoc) { + // When an associative array is encountered and the explode modifier is not set, then the + // result must be a comma separated list of keys followed by their respective values. + foreach ($kvp as $k => &$v) { + $v = $k . ',' . $v; + } + } + $expanded = implode(',', $kvp); + } + + } else { + if ($value['modifier'] == ':') { + $variable = substr($variable, 0, $value['position']); + } + $expanded = rawurlencode($variable); + if ($parsed['operator'] == '+' || $parsed['operator'] == '#') { + $expanded = $this->decodeReserved($expanded); + } + } + + if ($actuallyUseQueryString) { + if (!$expanded && $joiner != '&') { + $expanded = $value['value']; + } else { + $expanded = $value['value'] . '=' . $expanded; + } + } + + $replacements[] = $expanded; + } + + $ret = implode($joiner, $replacements); + if ($ret && $prefix) { + return $prefix . $ret; + } + + return $ret; + } + + /** + * Determines if an array is associative + * + * @param array $array Array to check + * + * @return bool + */ + private function isAssoc(array $array) + { + return (bool) count(array_filter(array_keys($array), 'is_string')); + } + + /** + * Removes percent encoding on reserved characters (used with + and # modifiers) + * + * @param string $string String to fix + * + * @return string + */ + private function decodeReserved($string) + { + return str_replace(self::$delimsPct, self::$delims, $string); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Parser/UriTemplate/UriTemplateInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Parser/UriTemplate/UriTemplateInterface.php new file mode 100644 index 0000000..c81d515 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Parser/UriTemplate/UriTemplateInterface.php @@ -0,0 +1,21 @@ +utf8 = $utf8; + } + + public function parseUrl($url) + { + Version::warn(__CLASS__ . ' is deprecated. Just use parse_url()'); + + static $defaults = array('scheme' => null, 'host' => null, 'path' => null, 'port' => null, 'query' => null, + 'user' => null, 'pass' => null, 'fragment' => null); + + $parts = parse_url($url); + + // Need to handle query parsing specially for UTF-8 requirements + if ($this->utf8 && isset($parts['query'])) { + $queryPos = strpos($url, '?'); + if (isset($parts['fragment'])) { + $parts['query'] = substr($url, $queryPos + 1, strpos($url, '#') - $queryPos - 1); + } else { + $parts['query'] = substr($url, $queryPos + 1); + } + } + + return $parts + $defaults; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Parser/Url/UrlParserInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Parser/Url/UrlParserInterface.php new file mode 100644 index 0000000..89ac4b3 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Parser/Url/UrlParserInterface.php @@ -0,0 +1,19 @@ +=5.3.2" + }, + "autoload": { + "psr-0": { "Guzzle\\Parser": "" } + }, + "target-dir": "Guzzle/Parser", + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Async/AsyncPlugin.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Async/AsyncPlugin.php new file mode 100644 index 0000000..ae59418 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Async/AsyncPlugin.php @@ -0,0 +1,84 @@ + 'onBeforeSend', + 'request.exception' => 'onRequestTimeout', + 'request.sent' => 'onRequestSent', + 'curl.callback.progress' => 'onCurlProgress' + ); + } + + /** + * Event used to ensure that progress callback are emitted from the curl handle's request mediator. + * + * @param Event $event + */ + public function onBeforeSend(Event $event) + { + // Ensure that progress callbacks are dispatched + $event['request']->getCurlOptions()->set('progress', true); + } + + /** + * Event emitted when a curl progress function is called. When the amount of data uploaded == the amount of data to + * upload OR any bytes have been downloaded, then time the request out after 1ms because we're done with + * transmitting the request, and tell curl not download a body. + * + * @param Event $event + */ + public function onCurlProgress(Event $event) + { + if ($event['handle'] && + ($event['downloaded'] || (isset($event['uploaded']) && $event['upload_size'] === $event['uploaded'])) + ) { + // Timeout after 1ms + curl_setopt($event['handle'], CURLOPT_TIMEOUT_MS, 1); + // Even if the response is quick, tell curl not to download the body. + // - Note that we can only perform this shortcut if the request transmitted a body so as to ensure that the + // request method is not converted to a HEAD request before the request was sent via curl. + if ($event['uploaded']) { + curl_setopt($event['handle'], CURLOPT_NOBODY, true); + } + } + } + + /** + * Event emitted when a curl exception occurs. Ignore the exception and set a mock response. + * + * @param Event $event + */ + public function onRequestTimeout(Event $event) + { + if ($event['exception'] instanceof CurlException) { + $event['request']->setResponse(new Response(200, array( + 'X-Guzzle-Async' => 'Did not wait for the response' + ))); + } + } + + /** + * Event emitted when a request completes because it took less than 1ms. Add an X-Guzzle-Async header to notify the + * caller that there is no body in the message. + * + * @param Event $event + */ + public function onRequestSent(Event $event) + { + // Let the caller know this was meant to be async + $event['request']->getResponse()->setHeader('X-Guzzle-Async', 'Did not wait for the response'); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Async/composer.json b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Async/composer.json new file mode 100644 index 0000000..dc3fc5b --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Async/composer.json @@ -0,0 +1,27 @@ +{ + "name": "guzzle/plugin-async", + "description": "Guzzle async request plugin", + "homepage": "http://guzzlephp.org/", + "keywords": ["plugin", "guzzle"], + "license": "MIT", + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "require": { + "php": ">=5.3.2", + "guzzle/http": "self.version" + }, + "autoload": { + "psr-0": { "Guzzle\\Plugin\\Async": "" } + }, + "target-dir": "Guzzle/Plugin/Async", + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/AbstractBackoffStrategy.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/AbstractBackoffStrategy.php new file mode 100644 index 0000000..0a85983 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/AbstractBackoffStrategy.php @@ -0,0 +1,91 @@ +next = $next; + } + + /** + * Get the next backoff strategy in the chain + * + * @return AbstractBackoffStrategy|null + */ + public function getNext() + { + return $this->next; + } + + public function getBackoffPeriod( + $retries, + RequestInterface $request, + Response $response = null, + HttpException $e = null + ) { + $delay = $this->getDelay($retries, $request, $response, $e); + if ($delay === false) { + // The strategy knows that this must not be retried + return false; + } elseif ($delay === null) { + // If the strategy is deferring a decision and the next strategy will not make a decision then return false + return !$this->next || !$this->next->makesDecision() + ? false + : $this->next->getBackoffPeriod($retries, $request, $response, $e); + } elseif ($delay === true) { + // if the strategy knows that it must retry but is deferring to the next to determine the delay + if (!$this->next) { + return 0; + } else { + $next = $this->next; + while ($next->makesDecision() && $next->getNext()) { + $next = $next->getNext(); + } + return !$next->makesDecision() ? $next->getBackoffPeriod($retries, $request, $response, $e) : 0; + } + } else { + return $delay; + } + } + + /** + * Check if the strategy does filtering and makes decisions on whether or not to retry. + * + * Strategies that return false will never retry if all of the previous strategies in a chain defer on a backoff + * decision. + * + * @return bool + */ + abstract public function makesDecision(); + + /** + * Implement the concrete strategy + * + * @param int $retries Number of retries of the request + * @param RequestInterface $request Request that was sent + * @param Response $response Response that was received. Note that there may not be a response + * @param HttpException $e Exception that was encountered if any + * + * @return bool|int|null Returns false to not retry or the number of seconds to delay between retries. Return true + * or null to defer to the next strategy if available, and if not, return 0. + */ + abstract protected function getDelay( + $retries, + RequestInterface $request, + Response $response = null, + HttpException $e = null + ); +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/AbstractErrorCodeBackoffStrategy.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/AbstractErrorCodeBackoffStrategy.php new file mode 100644 index 0000000..6ebee6c --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/AbstractErrorCodeBackoffStrategy.php @@ -0,0 +1,40 @@ +errorCodes = array_fill_keys($codes ?: static::$defaultErrorCodes, 1); + $this->next = $next; + } + + /** + * Get the default failure codes to retry + * + * @return array + */ + public static function getDefaultFailureCodes() + { + return static::$defaultErrorCodes; + } + + public function makesDecision() + { + return true; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/BackoffLogger.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/BackoffLogger.php new file mode 100644 index 0000000..ec54c28 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/BackoffLogger.php @@ -0,0 +1,76 @@ +logger = $logger; + $this->formatter = $formatter ?: new MessageFormatter(self::DEFAULT_FORMAT); + } + + public static function getSubscribedEvents() + { + return array(BackoffPlugin::RETRY_EVENT => 'onRequestRetry'); + } + + /** + * Set the template to use for logging + * + * @param string $template Log message template + * + * @return self + */ + public function setTemplate($template) + { + $this->formatter->setTemplate($template); + + return $this; + } + + /** + * Called when a request is being retried + * + * @param Event $event Event emitted + */ + public function onRequestRetry(Event $event) + { + $this->logger->log($this->formatter->format( + $event['request'], + $event['response'], + $event['handle'], + array( + 'retries' => $event['retries'], + 'delay' => $event['delay'] + ) + )); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/BackoffPlugin.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/BackoffPlugin.php new file mode 100644 index 0000000..99ace05 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/BackoffPlugin.php @@ -0,0 +1,126 @@ +strategy = $strategy; + } + + /** + * Retrieve a basic truncated exponential backoff plugin that will retry HTTP errors and cURL errors + * + * @param int $maxRetries Maximum number of retries + * @param array $httpCodes HTTP response codes to retry + * @param array $curlCodes cURL error codes to retry + * + * @return self + */ + public static function getExponentialBackoff( + $maxRetries = 3, + array $httpCodes = null, + array $curlCodes = null + ) { + return new self(new TruncatedBackoffStrategy($maxRetries, + new HttpBackoffStrategy($httpCodes, + new CurlBackoffStrategy($curlCodes, + new ExponentialBackoffStrategy() + ) + ) + )); + } + + public static function getAllEvents() + { + return array(self::RETRY_EVENT); + } + + public static function getSubscribedEvents() + { + return array( + 'request.sent' => 'onRequestSent', + 'request.exception' => 'onRequestSent', + CurlMultiInterface::POLLING_REQUEST => 'onRequestPoll' + ); + } + + /** + * Called when a request has been sent and isn't finished processing + * + * @param Event $event + */ + public function onRequestSent(Event $event) + { + $request = $event['request']; + $response = $event['response']; + $exception = $event['exception']; + + $params = $request->getParams(); + $retries = (int) $params->get(self::RETRY_PARAM); + $delay = $this->strategy->getBackoffPeriod($retries, $request, $response, $exception); + + if ($delay !== false) { + // Calculate how long to wait until the request should be retried + $params->set(self::RETRY_PARAM, ++$retries) + ->set(self::DELAY_PARAM, microtime(true) + $delay); + // Send the request again + $request->setState(RequestInterface::STATE_TRANSFER); + $this->dispatch(self::RETRY_EVENT, array( + 'request' => $request, + 'response' => $response, + 'handle' => ($exception && $exception instanceof CurlException) ? $exception->getCurlHandle() : null, + 'retries' => $retries, + 'delay' => $delay + )); + } + } + + /** + * Called when a request is polling in the curl multi object + * + * @param Event $event + */ + public function onRequestPoll(Event $event) + { + $request = $event['request']; + $delay = $request->getParams()->get(self::DELAY_PARAM); + + // If the duration of the delay has passed, retry the request using the pool + if (null !== $delay && microtime(true) >= $delay) { + // Remove the request from the pool and then add it back again. This is required for cURL to know that we + // want to retry sending the easy handle. + $request->getParams()->remove(self::DELAY_PARAM); + // Rewind the request body if possible + if ($request instanceof EntityEnclosingRequestInterface && $request->getBody()) { + $request->getBody()->seek(0); + } + $multi = $event['curl_multi']; + $multi->remove($request); + $multi->add($request); + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/BackoffStrategyInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/BackoffStrategyInterface.php new file mode 100644 index 0000000..4e590db --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/BackoffStrategyInterface.php @@ -0,0 +1,30 @@ +callback = $callback; + $this->decision = (bool) $decision; + $this->next = $next; + } + + public function makesDecision() + { + return $this->decision; + } + + protected function getDelay($retries, RequestInterface $request, Response $response = null, HttpException $e = null) + { + return call_user_func($this->callback, $retries, $request, $response, $e); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/ConstantBackoffStrategy.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/ConstantBackoffStrategy.php new file mode 100644 index 0000000..061d2a4 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/ConstantBackoffStrategy.php @@ -0,0 +1,34 @@ +delay = $delay; + } + + public function makesDecision() + { + return false; + } + + protected function getDelay($retries, RequestInterface $request, Response $response = null, HttpException $e = null) + { + return $this->delay; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/CurlBackoffStrategy.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/CurlBackoffStrategy.php new file mode 100644 index 0000000..a584ed4 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/CurlBackoffStrategy.php @@ -0,0 +1,28 @@ +errorCodes[$e->getErrorNo()]) ? true : null; + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/ExponentialBackoffStrategy.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/ExponentialBackoffStrategy.php new file mode 100644 index 0000000..fb2912d --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/ExponentialBackoffStrategy.php @@ -0,0 +1,25 @@ +isSuccessful()) { + return false; + } else { + return isset($this->errorCodes[$response->getStatusCode()]) ? true : null; + } + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/LinearBackoffStrategy.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/LinearBackoffStrategy.php new file mode 100644 index 0000000..b35e8a4 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/LinearBackoffStrategy.php @@ -0,0 +1,36 @@ +step = $step; + } + + public function makesDecision() + { + return false; + } + + protected function getDelay($retries, RequestInterface $request, Response $response = null, HttpException $e = null) + { + return $retries * $this->step; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/ReasonPhraseBackoffStrategy.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/ReasonPhraseBackoffStrategy.php new file mode 100644 index 0000000..4fd73fe --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/ReasonPhraseBackoffStrategy.php @@ -0,0 +1,25 @@ +errorCodes[$response->getReasonPhrase()]) ? true : null; + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/TruncatedBackoffStrategy.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/TruncatedBackoffStrategy.php new file mode 100644 index 0000000..3608f35 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/TruncatedBackoffStrategy.php @@ -0,0 +1,36 @@ +max = $maxRetries; + $this->next = $next; + } + + public function makesDecision() + { + return true; + } + + protected function getDelay($retries, RequestInterface $request, Response $response = null, HttpException $e = null) + { + return $retries < $this->max ? null : false; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/composer.json b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/composer.json new file mode 100644 index 0000000..91c122c --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Backoff/composer.json @@ -0,0 +1,28 @@ +{ + "name": "guzzle/plugin-backoff", + "description": "Guzzle backoff retry plugins", + "homepage": "http://guzzlephp.org/", + "keywords": ["plugin", "guzzle"], + "license": "MIT", + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "require": { + "php": ">=5.3.2", + "guzzle/http": "self.version", + "guzzle/log": "self.version" + }, + "autoload": { + "psr-0": { "Guzzle\\Plugin\\Backoff": "" } + }, + "target-dir": "Guzzle/Plugin/Backoff", + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cache/CacheKeyProviderInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cache/CacheKeyProviderInterface.php new file mode 100644 index 0000000..7790f88 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cache/CacheKeyProviderInterface.php @@ -0,0 +1,11 @@ + new DefaultCacheStorage($options)); + } elseif ($options instanceof CacheStorageInterface) { + $options = array('storage' => $options); + } elseif ($options) { + $options = array('storage' => new DefaultCacheStorage(CacheAdapterFactory::fromCache($options))); + } elseif (!class_exists('Doctrine\Common\Cache\ArrayCache')) { + // @codeCoverageIgnoreStart + throw new InvalidArgumentException('No cache was provided and Doctrine is not installed'); + // @codeCoverageIgnoreEnd + } + } + + $this->autoPurge = isset($options['auto_purge']) ? $options['auto_purge'] : false; + + // Add a cache storage if a cache adapter was provided + $this->storage = isset($options['storage']) + ? $options['storage'] + : new DefaultCacheStorage(new DoctrineCacheAdapter(new ArrayCache())); + + if (!isset($options['can_cache'])) { + $this->canCache = new DefaultCanCacheStrategy(); + } else { + $this->canCache = is_callable($options['can_cache']) + ? new CallbackCanCacheStrategy($options['can_cache']) + : $options['can_cache']; + } + + // Use the provided revalidation strategy or the default + $this->revalidation = isset($options['revalidation']) + ? $options['revalidation'] + : new DefaultRevalidation($this->storage, $this->canCache); + } + + public static function getSubscribedEvents() + { + return array( + 'request.before_send' => array('onRequestBeforeSend', -255), + 'request.sent' => array('onRequestSent', 255), + 'request.error' => array('onRequestError', 0), + 'request.exception' => array('onRequestException', 0), + ); + } + + /** + * Check if a response in cache will satisfy the request before sending + * + * @param Event $event + */ + public function onRequestBeforeSend(Event $event) + { + $request = $event['request']; + $request->addHeader('Via', sprintf('%s GuzzleCache/%s', $request->getProtocolVersion(), Version::VERSION)); + + if (!$this->canCache->canCacheRequest($request)) { + switch ($request->getMethod()) { + case 'PURGE': + $this->purge($request); + $request->setResponse(new Response(200, array(), 'purged')); + break; + case 'PUT': + case 'POST': + case 'DELETE': + case 'PATCH': + if ($this->autoPurge) { + $this->purge($request); + } + } + return; + } + + if ($response = $this->storage->fetch($request)) { + $params = $request->getParams(); + $params['cache.lookup'] = true; + $response->setHeader( + 'Age', + time() - strtotime($response->getDate() ? : $response->getLastModified() ?: 'now') + ); + // Validate that the response satisfies the request + if ($this->canResponseSatisfyRequest($request, $response)) { + if (!isset($params['cache.hit'])) { + $params['cache.hit'] = true; + } + $request->setResponse($response); + } + } + } + + /** + * If possible, store a response in cache after sending + * + * @param Event $event + */ + public function onRequestSent(Event $event) + { + $request = $event['request']; + $response = $event['response']; + + if ($request->getParams()->get('cache.hit') === null && + $this->canCache->canCacheRequest($request) && + $this->canCache->canCacheResponse($response) + ) { + $this->storage->cache($request, $response); + } + + $this->addResponseHeaders($request, $response); + } + + /** + * If possible, return a cache response on an error + * + * @param Event $event + */ + public function onRequestError(Event $event) + { + $request = $event['request']; + + if (!$this->canCache->canCacheRequest($request)) { + return; + } + + if ($response = $this->storage->fetch($request)) { + $response->setHeader( + 'Age', + time() - strtotime($response->getLastModified() ? : $response->getDate() ?: 'now') + ); + + if ($this->canResponseSatisfyFailedRequest($request, $response)) { + $request->getParams()->set('cache.hit', 'error'); + $this->addResponseHeaders($request, $response); + $event['response'] = $response; + $event->stopPropagation(); + } + } + } + + /** + * If possible, set a cache response on a cURL exception + * + * @param Event $event + * + * @return null + */ + public function onRequestException(Event $event) + { + if (!$event['exception'] instanceof CurlException) { + return; + } + + $request = $event['request']; + if (!$this->canCache->canCacheRequest($request)) { + return; + } + + if ($response = $this->storage->fetch($request)) { + $response->setHeader('Age', time() - strtotime($response->getDate() ? : 'now')); + if (!$this->canResponseSatisfyFailedRequest($request, $response)) { + return; + } + $request->getParams()->set('cache.hit', 'error'); + $request->setResponse($response); + $this->addResponseHeaders($request, $response); + $event->stopPropagation(); + } + } + + /** + * Check if a cache response satisfies a request's caching constraints + * + * @param RequestInterface $request Request to validate + * @param Response $response Response to validate + * + * @return bool + */ + public function canResponseSatisfyRequest(RequestInterface $request, Response $response) + { + $responseAge = $response->calculateAge(); + $reqc = $request->getHeader('Cache-Control'); + $resc = $response->getHeader('Cache-Control'); + + // Check the request's max-age header against the age of the response + if ($reqc && $reqc->hasDirective('max-age') && + $responseAge > $reqc->getDirective('max-age')) { + return false; + } + + // Check the response's max-age header + if ($response->isFresh() === false) { + $maxStale = $reqc ? $reqc->getDirective('max-stale') : null; + if (null !== $maxStale) { + if ($maxStale !== true && $response->getFreshness() < (-1 * $maxStale)) { + return false; + } + } elseif ($resc && $resc->hasDirective('max-age') + && $responseAge > $resc->getDirective('max-age') + ) { + return false; + } + } + + if ($this->revalidation->shouldRevalidate($request, $response)) { + try { + return $this->revalidation->revalidate($request, $response); + } catch (CurlException $e) { + $request->getParams()->set('cache.hit', 'error'); + return $this->canResponseSatisfyFailedRequest($request, $response); + } + } + + return true; + } + + /** + * Check if a cache response satisfies a failed request's caching constraints + * + * @param RequestInterface $request Request to validate + * @param Response $response Response to validate + * + * @return bool + */ + public function canResponseSatisfyFailedRequest(RequestInterface $request, Response $response) + { + $reqc = $request->getHeader('Cache-Control'); + $resc = $response->getHeader('Cache-Control'); + $requestStaleIfError = $reqc ? $reqc->getDirective('stale-if-error') : null; + $responseStaleIfError = $resc ? $resc->getDirective('stale-if-error') : null; + + if (!$requestStaleIfError && !$responseStaleIfError) { + return false; + } + + if (is_numeric($requestStaleIfError) && $response->getAge() - $response->getMaxAge() > $requestStaleIfError) { + return false; + } + + if (is_numeric($responseStaleIfError) && $response->getAge() - $response->getMaxAge() > $responseStaleIfError) { + return false; + } + + return true; + } + + /** + * Purge all cache entries for a given URL + * + * @param string $url URL to purge + */ + public function purge($url) + { + // BC compatibility with previous version that accepted a Request object + $url = $url instanceof RequestInterface ? $url->getUrl() : $url; + $this->storage->purge($url); + } + + /** + * Add the plugin's headers to a response + * + * @param RequestInterface $request Request + * @param Response $response Response to add headers to + */ + protected function addResponseHeaders(RequestInterface $request, Response $response) + { + $params = $request->getParams(); + $response->setHeader('Via', sprintf('%s GuzzleCache/%s', $request->getProtocolVersion(), Version::VERSION)); + + $lookup = ($params['cache.lookup'] === true ? 'HIT' : 'MISS') . ' from GuzzleCache'; + if ($header = $response->getHeader('X-Cache-Lookup')) { + // Don't add duplicates + $values = $header->toArray(); + $values[] = $lookup; + $response->setHeader('X-Cache-Lookup', array_unique($values)); + } else { + $response->setHeader('X-Cache-Lookup', $lookup); + } + + if ($params['cache.hit'] === true) { + $xcache = 'HIT from GuzzleCache'; + } elseif ($params['cache.hit'] == 'error') { + $xcache = 'HIT_ERROR from GuzzleCache'; + } else { + $xcache = 'MISS from GuzzleCache'; + } + + if ($header = $response->getHeader('X-Cache')) { + // Don't add duplicates + $values = $header->toArray(); + $values[] = $xcache; + $response->setHeader('X-Cache', array_unique($values)); + } else { + $response->setHeader('X-Cache', $xcache); + } + + if ($response->isFresh() === false) { + $response->addHeader('Warning', sprintf('110 GuzzleCache/%s "Response is stale"', Version::VERSION)); + if ($params['cache.hit'] === 'error') { + $response->addHeader('Warning', sprintf('111 GuzzleCache/%s "Revalidation failed"', Version::VERSION)); + } + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cache/CacheStorageInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cache/CacheStorageInterface.php new file mode 100644 index 0000000..f3d9154 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cache/CacheStorageInterface.php @@ -0,0 +1,43 @@ +requestCallback = $requestCallback; + $this->responseCallback = $responseCallback; + } + + public function canCacheRequest(RequestInterface $request) + { + return $this->requestCallback + ? call_user_func($this->requestCallback, $request) + : parent::canCacheRequest($request); + } + + public function canCacheResponse(Response $response) + { + return $this->responseCallback + ? call_user_func($this->responseCallback, $response) + : parent::canCacheResponse($response); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cache/CanCacheStrategyInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cache/CanCacheStrategyInterface.php new file mode 100644 index 0000000..6e01a8e --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cache/CanCacheStrategyInterface.php @@ -0,0 +1,30 @@ +getParams()->get(self::CACHE_KEY); + + if (!$key) { + + $cloned = clone $request; + $cloned->removeHeader('Cache-Control'); + + // Check to see how and if the key should be filtered + foreach (explode(';', $request->getParams()->get(self::CACHE_KEY_FILTER)) as $part) { + $pieces = array_map('trim', explode('=', $part)); + if (isset($pieces[1])) { + foreach (array_map('trim', explode(',', $pieces[1])) as $remove) { + if ($pieces[0] == 'header') { + $cloned->removeHeader($remove); + } elseif ($pieces[0] == 'query') { + $cloned->getQuery()->remove($remove); + } + } + } + } + + $raw = (string) $cloned; + $key = 'GZ' . md5($raw); + $request->getParams()->set(self::CACHE_KEY, $key)->set(self::CACHE_KEY_RAW, $raw); + } + + return $key; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cache/DefaultCacheStorage.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cache/DefaultCacheStorage.php new file mode 100644 index 0000000..26d7a8b --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cache/DefaultCacheStorage.php @@ -0,0 +1,266 @@ +cache = CacheAdapterFactory::fromCache($cache); + $this->defaultTtl = $defaultTtl; + $this->keyPrefix = $keyPrefix; + } + + public function cache(RequestInterface $request, Response $response) + { + $currentTime = time(); + + $overrideTtl = $request->getParams()->get('cache.override_ttl'); + if ($overrideTtl) { + $ttl = $overrideTtl; + } else { + $maxAge = $response->getMaxAge(); + if ($maxAge !== null) { + $ttl = $maxAge; + } else { + $ttl = $this->defaultTtl; + } + } + + if ($cacheControl = $response->getHeader('Cache-Control')) { + $stale = $cacheControl->getDirective('stale-if-error'); + if ($stale === true) { + $ttl += $ttl; + } else if (is_numeric($stale)) { + $ttl += $stale; + } + } + + // Determine which manifest key should be used + $key = $this->getCacheKey($request); + $persistedRequest = $this->persistHeaders($request); + $entries = array(); + + if ($manifest = $this->cache->fetch($key)) { + // Determine which cache entries should still be in the cache + $vary = $response->getVary(); + foreach (unserialize($manifest) as $entry) { + // Check if the entry is expired + if ($entry[4] < $currentTime) { + continue; + } + $entry[1]['vary'] = isset($entry[1]['vary']) ? $entry[1]['vary'] : ''; + if ($vary != $entry[1]['vary'] || !$this->requestsMatch($vary, $entry[0], $persistedRequest)) { + $entries[] = $entry; + } + } + } + + // Persist the response body if needed + $bodyDigest = null; + if ($response->getBody() && $response->getBody()->getContentLength() > 0) { + $bodyDigest = $this->getBodyKey($request->getUrl(), $response->getBody()); + $this->cache->save($bodyDigest, (string) $response->getBody(), $ttl); + } + + array_unshift($entries, array( + $persistedRequest, + $this->persistHeaders($response), + $response->getStatusCode(), + $bodyDigest, + $currentTime + $ttl + )); + + $this->cache->save($key, serialize($entries)); + } + + public function delete(RequestInterface $request) + { + $key = $this->getCacheKey($request); + if ($entries = $this->cache->fetch($key)) { + // Delete each cached body + foreach (unserialize($entries) as $entry) { + if ($entry[3]) { + $this->cache->delete($entry[3]); + } + } + $this->cache->delete($key); + } + } + + public function purge($url) + { + foreach (array('GET', 'HEAD', 'POST', 'PUT', 'DELETE') as $method) { + $this->delete(new Request($method, $url)); + } + } + + public function fetch(RequestInterface $request) + { + $key = $this->getCacheKey($request); + if (!($entries = $this->cache->fetch($key))) { + return null; + } + + $match = null; + $headers = $this->persistHeaders($request); + $entries = unserialize($entries); + foreach ($entries as $index => $entry) { + if ($this->requestsMatch(isset($entry[1]['vary']) ? $entry[1]['vary'] : '', $headers, $entry[0])) { + $match = $entry; + break; + } + } + + if (!$match) { + return null; + } + + // Ensure that the response is not expired + $response = null; + if ($match[4] < time()) { + $response = -1; + } else { + $response = new Response($match[2], $match[1]); + if ($match[3]) { + if ($body = $this->cache->fetch($match[3])) { + $response->setBody($body); + } else { + // The response is not valid because the body was somehow deleted + $response = -1; + } + } + } + + if ($response === -1) { + // Remove the entry from the metadata and update the cache + unset($entries[$index]); + if ($entries) { + $this->cache->save($key, serialize($entries)); + } else { + $this->cache->delete($key); + } + return null; + } + + return $response; + } + + /** + * Hash a request URL into a string that returns cache metadata + * + * @param RequestInterface $request + * + * @return string + */ + protected function getCacheKey(RequestInterface $request) + { + // Allow cache.key_filter to trim down the URL cache key by removing generate query string values (e.g. auth) + if ($filter = $request->getParams()->get('cache.key_filter')) { + $url = $request->getUrl(true); + foreach (explode(',', $filter) as $remove) { + $url->getQuery()->remove(trim($remove)); + } + } else { + $url = $request->getUrl(); + } + + return $this->keyPrefix . md5($request->getMethod() . ' ' . $url); + } + + /** + * Create a cache key for a response's body + * + * @param string $url URL of the entry + * @param EntityBodyInterface $body Response body + * + * @return string + */ + protected function getBodyKey($url, EntityBodyInterface $body) + { + return $this->keyPrefix . md5($url) . $body->getContentMd5(); + } + + /** + * Determines whether two Request HTTP header sets are non-varying + * + * @param string $vary Response vary header + * @param array $r1 HTTP header array + * @param array $r2 HTTP header array + * + * @return bool + */ + private function requestsMatch($vary, $r1, $r2) + { + if ($vary) { + foreach (explode(',', $vary) as $header) { + $key = trim(strtolower($header)); + $v1 = isset($r1[$key]) ? $r1[$key] : null; + $v2 = isset($r2[$key]) ? $r2[$key] : null; + if ($v1 !== $v2) { + return false; + } + } + } + + return true; + } + + /** + * Creates an array of cacheable and normalized message headers + * + * @param MessageInterface $message + * + * @return array + */ + private function persistHeaders(MessageInterface $message) + { + // Headers are excluded from the caching (see RFC 2616:13.5.1) + static $noCache = array( + 'age' => true, + 'connection' => true, + 'keep-alive' => true, + 'proxy-authenticate' => true, + 'proxy-authorization' => true, + 'te' => true, + 'trailers' => true, + 'transfer-encoding' => true, + 'upgrade' => true, + 'set-cookie' => true, + 'set-cookie2' => true + ); + + // Clone the response to not destroy any necessary headers when caching + $headers = $message->getHeaders()->getAll(); + $headers = array_diff_key($headers, $noCache); + // Cast the headers to a string + $headers = array_map(function ($h) { return (string) $h; }, $headers); + + return $headers; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cache/DefaultCanCacheStrategy.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cache/DefaultCanCacheStrategy.php new file mode 100644 index 0000000..3ca1fbf --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cache/DefaultCanCacheStrategy.php @@ -0,0 +1,32 @@ +getMethod() != RequestInterface::GET && $request->getMethod() != RequestInterface::HEAD) { + return false; + } + + // Never cache requests when using no-store + if ($request->hasHeader('Cache-Control') && $request->getHeader('Cache-Control')->hasDirective('no-store')) { + return false; + } + + return true; + } + + public function canCacheResponse(Response $response) + { + return $response->isSuccessful() && $response->canCache(); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cache/DefaultRevalidation.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cache/DefaultRevalidation.php new file mode 100644 index 0000000..af33234 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cache/DefaultRevalidation.php @@ -0,0 +1,174 @@ +storage = $cache; + $this->canCache = $canCache ?: new DefaultCanCacheStrategy(); + } + + public function revalidate(RequestInterface $request, Response $response) + { + try { + $revalidate = $this->createRevalidationRequest($request, $response); + $validateResponse = $revalidate->send(); + if ($validateResponse->getStatusCode() == 200) { + return $this->handle200Response($request, $validateResponse); + } elseif ($validateResponse->getStatusCode() == 304) { + return $this->handle304Response($request, $validateResponse, $response); + } + } catch (BadResponseException $e) { + $this->handleBadResponse($e); + } + + // Other exceptions encountered in the revalidation request are ignored + // in hopes that sending a request to the origin server will fix it + return false; + } + + public function shouldRevalidate(RequestInterface $request, Response $response) + { + if ($request->getMethod() != RequestInterface::GET) { + return false; + } + + $reqCache = $request->getHeader('Cache-Control'); + $resCache = $response->getHeader('Cache-Control'); + + $revalidate = $request->getHeader('Pragma') == 'no-cache' || + ($reqCache && ($reqCache->hasDirective('no-cache') || $reqCache->hasDirective('must-revalidate'))) || + ($resCache && ($resCache->hasDirective('no-cache') || $resCache->hasDirective('must-revalidate'))); + + // Use the strong ETag validator if available and the response contains no Cache-Control directive + if (!$revalidate && !$resCache && $response->hasHeader('ETag')) { + $revalidate = true; + } + + return $revalidate; + } + + /** + * Handles a bad response when attempting to revalidate + * + * @param BadResponseException $e Exception encountered + * + * @throws BadResponseException + */ + protected function handleBadResponse(BadResponseException $e) + { + // 404 errors mean the resource no longer exists, so remove from + // cache, and prevent an additional request by throwing the exception + if ($e->getResponse()->getStatusCode() == 404) { + $this->storage->delete($e->getRequest()); + throw $e; + } + } + + /** + * Creates a request to use for revalidation + * + * @param RequestInterface $request Request + * @param Response $response Response to revalidate + * + * @return RequestInterface returns a revalidation request + */ + protected function createRevalidationRequest(RequestInterface $request, Response $response) + { + $revalidate = clone $request; + $revalidate->removeHeader('Pragma')->removeHeader('Cache-Control'); + + if ($response->getLastModified()) { + $revalidate->setHeader('If-Modified-Since', $response->getLastModified()); + } + + if ($response->getEtag()) { + $revalidate->setHeader('If-None-Match', $response->getEtag()); + } + + // Remove any cache plugins that might be on the request to prevent infinite recursive revalidations + $dispatcher = $revalidate->getEventDispatcher(); + foreach ($dispatcher->getListeners() as $eventName => $listeners) { + foreach ($listeners as $listener) { + if (is_array($listener) && $listener[0] instanceof CachePlugin) { + $dispatcher->removeListener($eventName, $listener); + } + } + } + + return $revalidate; + } + + /** + * Handles a 200 response response from revalidating. The server does not support validation, so use this response. + * + * @param RequestInterface $request Request that was sent + * @param Response $validateResponse Response received + * + * @return bool Returns true if valid, false if invalid + */ + protected function handle200Response(RequestInterface $request, Response $validateResponse) + { + $request->setResponse($validateResponse); + if ($this->canCache->canCacheResponse($validateResponse)) { + $this->storage->cache($request, $validateResponse); + } + + return false; + } + + /** + * Handle a 304 response and ensure that it is still valid + * + * @param RequestInterface $request Request that was sent + * @param Response $validateResponse Response received + * @param Response $response Original cached response + * + * @return bool Returns true if valid, false if invalid + */ + protected function handle304Response(RequestInterface $request, Response $validateResponse, Response $response) + { + static $replaceHeaders = array('Date', 'Expires', 'Cache-Control', 'ETag', 'Last-Modified'); + + // Make sure that this response has the same ETag + if ($validateResponse->getEtag() != $response->getEtag()) { + return false; + } + + // Replace cached headers with any of these headers from the + // origin server that might be more up to date + $modified = false; + foreach ($replaceHeaders as $name) { + if ($validateResponse->hasHeader($name)) { + $modified = true; + $response->setHeader($name, $validateResponse->getHeader($name)); + } + } + + // Store the updated response in cache + if ($modified && $this->canCache->canCacheResponse($response)) { + $this->storage->cache($request, $response); + } + + return true; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cache/DenyRevalidation.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cache/DenyRevalidation.php new file mode 100644 index 0000000..88b86f3 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cache/DenyRevalidation.php @@ -0,0 +1,19 @@ +=5.3.2", + "guzzle/http": "self.version", + "guzzle/cache": "self.version" + }, + "autoload": { + "psr-0": { "Guzzle\\Plugin\\Cache": "" } + }, + "target-dir": "Guzzle/Plugin/Cache", + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cookie/Cookie.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cookie/Cookie.php new file mode 100644 index 0000000..5218e5f --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cookie/Cookie.php @@ -0,0 +1,538 @@ + '', + 'value' => '', + 'domain' => '', + 'path' => '/', + 'expires' => null, + 'max_age' => 0, + 'comment' => null, + 'comment_url' => null, + 'port' => array(), + 'version' => null, + 'secure' => false, + 'discard' => false, + 'http_only' => false + ); + + $this->data = array_merge($defaults, $data); + // Extract the expires value and turn it into a UNIX timestamp if needed + if (!$this->getExpires() && $this->getMaxAge()) { + // Calculate the expires date + $this->setExpires(time() + (int) $this->getMaxAge()); + } elseif ($this->getExpires() && !is_numeric($this->getExpires())) { + $this->setExpires(strtotime($this->getExpires())); + } + } + + /** + * Get the cookie as an array + * + * @return array + */ + public function toArray() + { + return $this->data; + } + + /** + * Get the cookie name + * + * @return string + */ + public function getName() + { + return $this->data['name']; + } + + /** + * Set the cookie name + * + * @param string $name Cookie name + * + * @return Cookie + */ + public function setName($name) + { + return $this->setData('name', $name); + } + + /** + * Get the cookie value + * + * @return string + */ + public function getValue() + { + return $this->data['value']; + } + + /** + * Set the cookie value + * + * @param string $value Cookie value + * + * @return Cookie + */ + public function setValue($value) + { + return $this->setData('value', $value); + } + + /** + * Get the domain + * + * @return string|null + */ + public function getDomain() + { + return $this->data['domain']; + } + + /** + * Set the domain of the cookie + * + * @param string $domain + * + * @return Cookie + */ + public function setDomain($domain) + { + return $this->setData('domain', $domain); + } + + /** + * Get the path + * + * @return string + */ + public function getPath() + { + return $this->data['path']; + } + + /** + * Set the path of the cookie + * + * @param string $path Path of the cookie + * + * @return Cookie + */ + public function setPath($path) + { + return $this->setData('path', $path); + } + + /** + * Maximum lifetime of the cookie in seconds + * + * @return int|null + */ + public function getMaxAge() + { + return $this->data['max_age']; + } + + /** + * Set the max-age of the cookie + * + * @param int $maxAge Max age of the cookie in seconds + * + * @return Cookie + */ + public function setMaxAge($maxAge) + { + return $this->setData('max_age', $maxAge); + } + + /** + * The UNIX timestamp when the cookie expires + * + * @return mixed + */ + public function getExpires() + { + return $this->data['expires']; + } + + /** + * Set the unix timestamp for which the cookie will expire + * + * @param int $timestamp Unix timestamp + * + * @return Cookie + */ + public function setExpires($timestamp) + { + return $this->setData('expires', $timestamp); + } + + /** + * Version of the cookie specification. RFC 2965 is 1 + * + * @return mixed + */ + public function getVersion() + { + return $this->data['version']; + } + + /** + * Set the cookie version + * + * @param string|int $version Version to set + * + * @return Cookie + */ + public function setVersion($version) + { + return $this->setData('version', $version); + } + + /** + * Get whether or not this is a secure cookie + * + * @return null|bool + */ + public function getSecure() + { + return $this->data['secure']; + } + + /** + * Set whether or not the cookie is secure + * + * @param bool $secure Set to true or false if secure + * + * @return Cookie + */ + public function setSecure($secure) + { + return $this->setData('secure', (bool) $secure); + } + + /** + * Get whether or not this is a session cookie + * + * @return null|bool + */ + public function getDiscard() + { + return $this->data['discard']; + } + + /** + * Set whether or not this is a session cookie + * + * @param bool $discard Set to true or false if this is a session cookie + * + * @return Cookie + */ + public function setDiscard($discard) + { + return $this->setData('discard', $discard); + } + + /** + * Get the comment + * + * @return string|null + */ + public function getComment() + { + return $this->data['comment']; + } + + /** + * Set the comment of the cookie + * + * @param string $comment Cookie comment + * + * @return Cookie + */ + public function setComment($comment) + { + return $this->setData('comment', $comment); + } + + /** + * Get the comment URL of the cookie + * + * @return string|null + */ + public function getCommentUrl() + { + return $this->data['comment_url']; + } + + /** + * Set the comment URL of the cookie + * + * @param string $commentUrl Cookie comment URL for more information + * + * @return Cookie + */ + public function setCommentUrl($commentUrl) + { + return $this->setData('comment_url', $commentUrl); + } + + /** + * Get an array of acceptable ports this cookie can be used with + * + * @return array + */ + public function getPorts() + { + return $this->data['port']; + } + + /** + * Set a list of acceptable ports this cookie can be used with + * + * @param array $ports Array of acceptable ports + * + * @return Cookie + */ + public function setPorts(array $ports) + { + return $this->setData('port', $ports); + } + + /** + * Get whether or not this is an HTTP only cookie + * + * @return bool + */ + public function getHttpOnly() + { + return $this->data['http_only']; + } + + /** + * Set whether or not this is an HTTP only cookie + * + * @param bool $httpOnly Set to true or false if this is HTTP only + * + * @return Cookie + */ + public function setHttpOnly($httpOnly) + { + return $this->setData('http_only', $httpOnly); + } + + /** + * Get an array of extra cookie data + * + * @return array + */ + public function getAttributes() + { + return $this->data['data']; + } + + /** + * Get a specific data point from the extra cookie data + * + * @param string $name Name of the data point to retrieve + * + * @return null|string + */ + public function getAttribute($name) + { + return array_key_exists($name, $this->data['data']) ? $this->data['data'][$name] : null; + } + + /** + * Set a cookie data attribute + * + * @param string $name Name of the attribute to set + * @param string $value Value to set + * + * @return Cookie + */ + public function setAttribute($name, $value) + { + $this->data['data'][$name] = $value; + + return $this; + } + + /** + * Check if the cookie matches a path value + * + * @param string $path Path to check against + * + * @return bool + */ + public function matchesPath($path) + { + // RFC6265 http://tools.ietf.org/search/rfc6265#section-5.1.4 + // A request-path path-matches a given cookie-path if at least one of + // the following conditions holds: + + // o The cookie-path and the request-path are identical. + if ($path == $this->getPath()) { + return true; + } + + $pos = stripos($path, $this->getPath()); + if ($pos === 0) { + // o The cookie-path is a prefix of the request-path, and the last + // character of the cookie-path is %x2F ("/"). + if (substr($this->getPath(), -1, 1) === "/") { + return true; + } + + // o The cookie-path is a prefix of the request-path, and the first + // character of the request-path that is not included in the cookie- + // path is a %x2F ("/") character. + if (substr($path, strlen($this->getPath()), 1) === "/") { + return true; + } + } + + return false; + } + + /** + * Check if the cookie matches a domain value + * + * @param string $domain Domain to check against + * + * @return bool + */ + public function matchesDomain($domain) + { + // Remove the leading '.' as per spec in RFC 6265: http://tools.ietf.org/html/rfc6265#section-5.2.3 + $cookieDomain = ltrim($this->getDomain(), '.'); + + // Domain not set or exact match. + if (!$cookieDomain || !strcasecmp($domain, $cookieDomain)) { + return true; + } + + // Matching the subdomain according to RFC 6265: http://tools.ietf.org/html/rfc6265#section-5.1.3 + if (filter_var($domain, FILTER_VALIDATE_IP)) { + return false; + } + + return (bool) preg_match('/\.' . preg_quote($cookieDomain, '/') . '$/i', $domain); + } + + /** + * Check if the cookie is compatible with a specific port + * + * @param int $port Port to check + * + * @return bool + */ + public function matchesPort($port) + { + return count($this->getPorts()) == 0 || in_array($port, $this->getPorts()); + } + + /** + * Check if the cookie is expired + * + * @return bool + */ + public function isExpired() + { + return $this->getExpires() && time() > $this->getExpires(); + } + + /** + * Check if the cookie is valid according to RFC 6265 + * + * @return bool|string Returns true if valid or an error message if invalid + */ + public function validate() + { + // Names must not be empty, but can be 0 + $name = $this->getName(); + if (empty($name) && !is_numeric($name)) { + return 'The cookie name must not be empty'; + } + + // Check if any of the invalid characters are present in the cookie name + if (strpbrk($name, self::getInvalidCharacters()) !== false) { + return 'The cookie name must not contain invalid characters: ' . $name; + } + + // Value must not be empty, but can be 0 + $value = $this->getValue(); + if (empty($value) && !is_numeric($value)) { + return 'The cookie value must not be empty'; + } + + // Domains must not be empty, but can be 0 + // A "0" is not a valid internet domain, but may be used as server name in a private network + $domain = $this->getDomain(); + if (empty($domain) && !is_numeric($domain)) { + return 'The cookie domain must not be empty'; + } + + return true; + } + + /** + * Set a value and return the cookie object + * + * @param string $key Key to set + * @param string $value Value to set + * + * @return Cookie + */ + private function setData($key, $value) + { + $this->data[$key] = $value; + + return $this; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookieJar/ArrayCookieJar.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookieJar/ArrayCookieJar.php new file mode 100644 index 0000000..6b67503 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookieJar/ArrayCookieJar.php @@ -0,0 +1,237 @@ +strictMode = $strictMode; + } + + /** + * Enable or disable strict mode on the cookie jar + * + * @param bool $strictMode Set to true to throw exceptions when invalid cookies are added. False to ignore them. + * + * @return self + */ + public function setStrictMode($strictMode) + { + $this->strictMode = $strictMode; + } + + public function remove($domain = null, $path = null, $name = null) + { + $cookies = $this->all($domain, $path, $name, false, false); + $this->cookies = array_filter($this->cookies, function (Cookie $cookie) use ($cookies) { + return !in_array($cookie, $cookies, true); + }); + + return $this; + } + + public function removeTemporary() + { + $this->cookies = array_filter($this->cookies, function (Cookie $cookie) { + return !$cookie->getDiscard() && $cookie->getExpires(); + }); + + return $this; + } + + public function removeExpired() + { + $currentTime = time(); + $this->cookies = array_filter($this->cookies, function (Cookie $cookie) use ($currentTime) { + return !$cookie->getExpires() || $currentTime < $cookie->getExpires(); + }); + + return $this; + } + + public function all($domain = null, $path = null, $name = null, $skipDiscardable = false, $skipExpired = true) + { + return array_values(array_filter($this->cookies, function (Cookie $cookie) use ( + $domain, + $path, + $name, + $skipDiscardable, + $skipExpired + ) { + return false === (($name && $cookie->getName() != $name) || + ($skipExpired && $cookie->isExpired()) || + ($skipDiscardable && ($cookie->getDiscard() || !$cookie->getExpires())) || + ($path && !$cookie->matchesPath($path)) || + ($domain && !$cookie->matchesDomain($domain))); + })); + } + + public function add(Cookie $cookie) + { + // Only allow cookies with set and valid domain, name, value + $result = $cookie->validate(); + if ($result !== true) { + if ($this->strictMode) { + throw new InvalidCookieException($result); + } else { + $this->removeCookieIfEmpty($cookie); + return false; + } + } + + // Resolve conflicts with previously set cookies + foreach ($this->cookies as $i => $c) { + + // Two cookies are identical, when their path, domain, port and name are identical + if ($c->getPath() != $cookie->getPath() || + $c->getDomain() != $cookie->getDomain() || + $c->getPorts() != $cookie->getPorts() || + $c->getName() != $cookie->getName() + ) { + continue; + } + + // The previously set cookie is a discard cookie and this one is not so allow the new cookie to be set + if (!$cookie->getDiscard() && $c->getDiscard()) { + unset($this->cookies[$i]); + continue; + } + + // If the new cookie's expiration is further into the future, then replace the old cookie + if ($cookie->getExpires() > $c->getExpires()) { + unset($this->cookies[$i]); + continue; + } + + // If the value has changed, we better change it + if ($cookie->getValue() !== $c->getValue()) { + unset($this->cookies[$i]); + continue; + } + + // The cookie exists, so no need to continue + return false; + } + + $this->cookies[] = $cookie; + + return true; + } + + /** + * Serializes the cookie cookieJar + * + * @return string + */ + public function serialize() + { + // Only serialize long term cookies and unexpired cookies + return json_encode(array_map(function (Cookie $cookie) { + return $cookie->toArray(); + }, $this->all(null, null, null, true, true))); + } + + /** + * Unserializes the cookie cookieJar + */ + public function unserialize($data) + { + $data = json_decode($data, true); + if (empty($data)) { + $this->cookies = array(); + } else { + $this->cookies = array_map(function (array $cookie) { + return new Cookie($cookie); + }, $data); + } + } + + /** + * Returns the total number of stored cookies + * + * @return int + */ + public function count() + { + return count($this->cookies); + } + + /** + * Returns an iterator + * + * @return \ArrayIterator + */ + public function getIterator() + { + return new \ArrayIterator($this->cookies); + } + + public function addCookiesFromResponse(Response $response, RequestInterface $request = null) + { + if ($cookieHeader = $response->getHeader('Set-Cookie')) { + $parser = ParserRegistry::getInstance()->getParser('cookie'); + foreach ($cookieHeader as $cookie) { + if ($parsed = $request + ? $parser->parseCookie($cookie, $request->getHost(), $request->getPath()) + : $parser->parseCookie($cookie) + ) { + // Break up cookie v2 into multiple cookies + foreach ($parsed['cookies'] as $key => $value) { + $row = $parsed; + $row['name'] = $key; + $row['value'] = $value; + unset($row['cookies']); + $this->add(new Cookie($row)); + } + } + } + } + } + + public function getMatchingCookies(RequestInterface $request) + { + // Find cookies that match this request + $cookies = $this->all($request->getHost(), $request->getPath()); + // Remove ineligible cookies + foreach ($cookies as $index => $cookie) { + if (!$cookie->matchesPort($request->getPort()) || ($cookie->getSecure() && $request->getScheme() != 'https')) { + unset($cookies[$index]); + } + }; + + return $cookies; + } + + /** + * If a cookie already exists and the server asks to set it again with a null value, the + * cookie must be deleted. + * + * @param \Guzzle\Plugin\Cookie\Cookie $cookie + */ + private function removeCookieIfEmpty(Cookie $cookie) + { + $cookieValue = $cookie->getValue(); + if ($cookieValue === null || $cookieValue === '') { + $this->remove($cookie->getDomain(), $cookie->getPath(), $cookie->getName()); + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookieJar/CookieJarInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookieJar/CookieJarInterface.php new file mode 100644 index 0000000..7faa7d2 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookieJar/CookieJarInterface.php @@ -0,0 +1,85 @@ +filename = $cookieFile; + $this->load(); + } + + /** + * Saves the file when shutting down + */ + public function __destruct() + { + $this->persist(); + } + + /** + * Save the contents of the data array to the file + * + * @throws RuntimeException if the file cannot be found or created + */ + protected function persist() + { + if (false === file_put_contents($this->filename, $this->serialize())) { + // @codeCoverageIgnoreStart + throw new RuntimeException('Unable to open file ' . $this->filename); + // @codeCoverageIgnoreEnd + } + } + + /** + * Load the contents of the json formatted file into the data array and discard any unsaved state + */ + protected function load() + { + $json = file_get_contents($this->filename); + if (false === $json) { + // @codeCoverageIgnoreStart + throw new RuntimeException('Unable to open file ' . $this->filename); + // @codeCoverageIgnoreEnd + } + + $this->unserialize($json); + $this->cookies = $this->cookies ?: array(); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookiePlugin.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookiePlugin.php new file mode 100644 index 0000000..df3210e --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookiePlugin.php @@ -0,0 +1,70 @@ +cookieJar = $cookieJar ?: new ArrayCookieJar(); + } + + public static function getSubscribedEvents() + { + return array( + 'request.before_send' => array('onRequestBeforeSend', 125), + 'request.sent' => array('onRequestSent', 125) + ); + } + + /** + * Get the cookie cookieJar + * + * @return CookieJarInterface + */ + public function getCookieJar() + { + return $this->cookieJar; + } + + /** + * Add cookies before a request is sent + * + * @param Event $event + */ + public function onRequestBeforeSend(Event $event) + { + $request = $event['request']; + if (!$request->getParams()->get('cookies.disable')) { + $request->removeHeader('Cookie'); + // Find cookies that match this request + foreach ($this->cookieJar->getMatchingCookies($request) as $cookie) { + $request->addCookie($cookie->getName(), $cookie->getValue()); + } + } + } + + /** + * Extract cookies from a sent request + * + * @param Event $event + */ + public function onRequestSent(Event $event) + { + $this->cookieJar->addCookiesFromResponse($event['response'], $event['request']); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cookie/Exception/InvalidCookieException.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cookie/Exception/InvalidCookieException.php new file mode 100644 index 0000000..b1fa6fd --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cookie/Exception/InvalidCookieException.php @@ -0,0 +1,7 @@ +=5.3.2", + "guzzle/http": "self.version" + }, + "autoload": { + "psr-0": { "Guzzle\\Plugin\\Cookie": "" } + }, + "target-dir": "Guzzle/Plugin/Cookie", + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/CurlAuth/CurlAuthPlugin.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/CurlAuth/CurlAuthPlugin.php new file mode 100644 index 0000000..610e60c --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/CurlAuth/CurlAuthPlugin.php @@ -0,0 +1,46 @@ +getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest'); + */ +class CurlAuthPlugin implements EventSubscriberInterface +{ + private $username; + private $password; + private $scheme; + + /** + * @param string $username HTTP basic auth username + * @param string $password Password + * @param int $scheme Curl auth scheme + */ + public function __construct($username, $password, $scheme=CURLAUTH_BASIC) + { + Version::warn(__CLASS__ . " is deprecated. Use \$client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest');"); + $this->username = $username; + $this->password = $password; + $this->scheme = $scheme; + } + + public static function getSubscribedEvents() + { + return array('client.create_request' => array('onRequestCreate', 255)); + } + + /** + * Add basic auth + * + * @param Event $event + */ + public function onRequestCreate(Event $event) + { + $event['request']->setAuth($this->username, $this->password, $this->scheme); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/CurlAuth/composer.json b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/CurlAuth/composer.json new file mode 100644 index 0000000..edc8b24 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/CurlAuth/composer.json @@ -0,0 +1,27 @@ +{ + "name": "guzzle/plugin-curlauth", + "description": "Guzzle cURL authorization plugin", + "homepage": "http://guzzlephp.org/", + "keywords": ["plugin", "curl", "guzzle"], + "license": "MIT", + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "require": { + "php": ">=5.3.2", + "guzzle/http": "self.version" + }, + "autoload": { + "psr-0": { "Guzzle\\Plugin\\CurlAuth": "" } + }, + "target-dir": "Guzzle/Plugin/CurlAuth", + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/ErrorResponse/ErrorResponseExceptionInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/ErrorResponse/ErrorResponseExceptionInterface.php new file mode 100644 index 0000000..5dce8bd --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/ErrorResponse/ErrorResponseExceptionInterface.php @@ -0,0 +1,22 @@ + array('onCommandBeforeSend', -1)); + } + + /** + * Adds a listener to requests before they sent from a command + * + * @param Event $event Event emitted + */ + public function onCommandBeforeSend(Event $event) + { + $command = $event['command']; + if ($operation = $command->getOperation()) { + if ($operation->getErrorResponses()) { + $request = $command->getRequest(); + $request->getEventDispatcher() + ->addListener('request.complete', $this->getErrorClosure($request, $command, $operation)); + } + } + } + + /** + * @param RequestInterface $request Request that received an error + * @param CommandInterface $command Command that created the request + * @param Operation $operation Operation that defines the request and errors + * + * @return \Closure Returns a closure + * @throws ErrorResponseException + */ + protected function getErrorClosure(RequestInterface $request, CommandInterface $command, Operation $operation) + { + return function (Event $event) use ($request, $command, $operation) { + $response = $event['response']; + foreach ($operation->getErrorResponses() as $error) { + if (!isset($error['class'])) { + continue; + } + if (isset($error['code']) && $response->getStatusCode() != $error['code']) { + continue; + } + if (isset($error['reason']) && $response->getReasonPhrase() != $error['reason']) { + continue; + } + $className = $error['class']; + $errorClassInterface = __NAMESPACE__ . '\\ErrorResponseExceptionInterface'; + if (!class_exists($className)) { + throw new ErrorResponseException("{$className} does not exist"); + } elseif (!(in_array($errorClassInterface, class_implements($className)))) { + throw new ErrorResponseException("{$className} must implement {$errorClassInterface}"); + } + throw $className::fromCommand($command, $response); + } + }; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/ErrorResponse/Exception/ErrorResponseException.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/ErrorResponse/Exception/ErrorResponseException.php new file mode 100644 index 0000000..1d89e40 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/ErrorResponse/Exception/ErrorResponseException.php @@ -0,0 +1,7 @@ +=5.3.2", + "guzzle/service": "self.version" + }, + "autoload": { + "psr-0": { "Guzzle\\Plugin\\ErrorResponse": "" } + }, + "target-dir": "Guzzle/Plugin/ErrorResponse", + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/History/HistoryPlugin.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/History/HistoryPlugin.php new file mode 100644 index 0000000..7375e89 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/History/HistoryPlugin.php @@ -0,0 +1,163 @@ + array('onRequestSent', 9999)); + } + + /** + * Convert to a string that contains all request and response headers + * + * @return string + */ + public function __toString() + { + $lines = array(); + foreach ($this->transactions as $entry) { + $response = isset($entry['response']) ? $entry['response'] : ''; + $lines[] = '> ' . trim($entry['request']) . "\n\n< " . trim($response) . "\n"; + } + + return implode("\n", $lines); + } + + /** + * Add a request to the history + * + * @param RequestInterface $request Request to add + * @param Response $response Response of the request + * + * @return HistoryPlugin + */ + public function add(RequestInterface $request, Response $response = null) + { + if (!$response && $request->getResponse()) { + $response = $request->getResponse(); + } + + $this->transactions[] = array('request' => $request, 'response' => $response); + if (count($this->transactions) > $this->getlimit()) { + array_shift($this->transactions); + } + + return $this; + } + + /** + * Set the max number of requests to store + * + * @param int $limit Limit + * + * @return HistoryPlugin + */ + public function setLimit($limit) + { + $this->limit = (int) $limit; + + return $this; + } + + /** + * Get the request limit + * + * @return int + */ + public function getLimit() + { + return $this->limit; + } + + /** + * Get all of the raw transactions in the form of an array of associative arrays containing + * 'request' and 'response' keys. + * + * @return array + */ + public function getAll() + { + return $this->transactions; + } + + /** + * Get the requests in the history + * + * @return \ArrayIterator + */ + public function getIterator() + { + // Return an iterator just like the old iteration of the HistoryPlugin for BC compatibility (use getAll()) + return new \ArrayIterator(array_map(function ($entry) { + $entry['request']->getParams()->set('actual_response', $entry['response']); + return $entry['request']; + }, $this->transactions)); + } + + /** + * Get the number of requests in the history + * + * @return int + */ + public function count() + { + return count($this->transactions); + } + + /** + * Get the last request sent + * + * @return RequestInterface + */ + public function getLastRequest() + { + $last = end($this->transactions); + + return $last['request']; + } + + /** + * Get the last response in the history + * + * @return Response|null + */ + public function getLastResponse() + { + $last = end($this->transactions); + + return isset($last['response']) ? $last['response'] : null; + } + + /** + * Clears the history + * + * @return HistoryPlugin + */ + public function clear() + { + $this->transactions = array(); + + return $this; + } + + public function onRequestSent(Event $event) + { + $this->add($event['request'], $event['response']); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/History/composer.json b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/History/composer.json new file mode 100644 index 0000000..ba0bf2c --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/History/composer.json @@ -0,0 +1,27 @@ +{ + "name": "guzzle/plugin-history", + "description": "Guzzle history plugin", + "homepage": "http://guzzlephp.org/", + "keywords": ["plugin", "guzzle"], + "license": "MIT", + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "require": { + "php": ">=5.3.2", + "guzzle/http": "self.version" + }, + "autoload": { + "psr-0": { "Guzzle\\Plugin\\History": "" } + }, + "target-dir": "Guzzle/Plugin/History", + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Log/LogPlugin.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Log/LogPlugin.php new file mode 100644 index 0000000..cabdea8 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Log/LogPlugin.php @@ -0,0 +1,161 @@ +logAdapter = $logAdapter; + $this->formatter = $formatter instanceof MessageFormatter ? $formatter : new MessageFormatter($formatter); + $this->wireBodies = $wireBodies; + } + + /** + * Get a log plugin that outputs full request, response, and curl error information to stderr + * + * @param bool $wireBodies Set to false to disable request/response body output when they use are not repeatable + * @param resource $stream Stream to write to when logging. Defaults to STDERR when it is available + * + * @return self + */ + public static function getDebugPlugin($wireBodies = true, $stream = null) + { + if ($stream === null) { + if (defined('STDERR')) { + $stream = STDERR; + } else { + $stream = fopen('php://output', 'w'); + } + } + + return new self(new ClosureLogAdapter(function ($m) use ($stream) { + fwrite($stream, $m . PHP_EOL); + }), "# Request:\n{request}\n\n# Response:\n{response}\n\n# Errors: {curl_code} {curl_error}", $wireBodies); + } + + public static function getSubscribedEvents() + { + return array( + 'curl.callback.write' => array('onCurlWrite', 255), + 'curl.callback.read' => array('onCurlRead', 255), + 'request.before_send' => array('onRequestBeforeSend', 255), + 'request.sent' => array('onRequestSent', 255) + ); + } + + /** + * Event triggered when curl data is read from a request + * + * @param Event $event + */ + public function onCurlRead(Event $event) + { + // Stream the request body to the log if the body is not repeatable + if ($wire = $event['request']->getParams()->get('request_wire')) { + $wire->write($event['read']); + } + } + + /** + * Event triggered when curl data is written to a response + * + * @param Event $event + */ + public function onCurlWrite(Event $event) + { + // Stream the response body to the log if the body is not repeatable + if ($wire = $event['request']->getParams()->get('response_wire')) { + $wire->write($event['write']); + } + } + + /** + * Called before a request is sent + * + * @param Event $event + */ + public function onRequestBeforeSend(Event $event) + { + if ($this->wireBodies) { + $request = $event['request']; + // Ensure that curl IO events are emitted + $request->getCurlOptions()->set('emit_io', true); + // We need to make special handling for content wiring and non-repeatable streams. + if ($request instanceof EntityEnclosingRequestInterface && $request->getBody() + && (!$request->getBody()->isSeekable() || !$request->getBody()->isReadable()) + ) { + // The body of the request cannot be recalled so logging the body will require us to buffer it + $request->getParams()->set('request_wire', EntityBody::factory()); + } + if (!$request->getResponseBody()->isRepeatable()) { + // The body of the response cannot be recalled so logging the body will require us to buffer it + $request->getParams()->set('response_wire', EntityBody::factory()); + } + } + } + + /** + * Triggers the actual log write when a request completes + * + * @param Event $event + */ + public function onRequestSent(Event $event) + { + $request = $event['request']; + $response = $event['response']; + $handle = $event['handle']; + + if ($wire = $request->getParams()->get('request_wire')) { + $request = clone $request; + $request->setBody($wire); + } + + if ($wire = $request->getParams()->get('response_wire')) { + $response = clone $response; + $response->setBody($wire); + } + + // Send the log message to the adapter, adding a category and host + $priority = $response && $response->isError() ? LOG_ERR : LOG_DEBUG; + $message = $this->formatter->format($request, $response, $handle); + $this->logAdapter->log($message, $priority, array( + 'request' => $request, + 'response' => $response, + 'handle' => $handle + )); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Log/composer.json b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Log/composer.json new file mode 100644 index 0000000..130e6da --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Log/composer.json @@ -0,0 +1,28 @@ +{ + "name": "guzzle/plugin-log", + "description": "Guzzle log plugin for over the wire logging", + "homepage": "http://guzzlephp.org/", + "keywords": ["plugin", "log", "guzzle"], + "license": "MIT", + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "require": { + "php": ">=5.3.2", + "guzzle/http": "self.version", + "guzzle/log": "self.version" + }, + "autoload": { + "psr-0": { "Guzzle\\Plugin\\Log": "" } + }, + "target-dir": "Guzzle/Plugin/Log", + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Md5/CommandContentMd5Plugin.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Md5/CommandContentMd5Plugin.php new file mode 100644 index 0000000..8512424 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Md5/CommandContentMd5Plugin.php @@ -0,0 +1,57 @@ +contentMd5Param = $contentMd5Param; + $this->validateMd5Param = $validateMd5Param; + } + + public static function getSubscribedEvents() + { + return array('command.before_send' => array('onCommandBeforeSend', -255)); + } + + public function onCommandBeforeSend(Event $event) + { + $command = $event['command']; + $request = $command->getRequest(); + + // Only add an MD5 is there is a MD5 option on the operation and it has a payload + if ($request instanceof EntityEnclosingRequestInterface && $request->getBody() + && $command->getOperation()->hasParam($this->contentMd5Param)) { + // Check if an MD5 checksum value should be passed along to the request + if ($command[$this->contentMd5Param] === true) { + if (false !== ($md5 = $request->getBody()->getContentMd5(true, true))) { + $request->setHeader('Content-MD5', $md5); + } + } + } + + // Check if MD5 validation should be used with the response + if ($command[$this->validateMd5Param] === true) { + $request->addSubscriber(new Md5ValidatorPlugin(true, false)); + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Md5/Md5ValidatorPlugin.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Md5/Md5ValidatorPlugin.php new file mode 100644 index 0000000..5d7a378 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Md5/Md5ValidatorPlugin.php @@ -0,0 +1,88 @@ +contentLengthCutoff = $contentLengthCutoff; + $this->contentEncoded = $contentEncoded; + } + + public static function getSubscribedEvents() + { + return array('request.complete' => array('onRequestComplete', 255)); + } + + /** + * {@inheritdoc} + * @throws UnexpectedValueException + */ + public function onRequestComplete(Event $event) + { + $response = $event['response']; + + if (!$contentMd5 = $response->getContentMd5()) { + return; + } + + $contentEncoding = $response->getContentEncoding(); + if ($contentEncoding && !$this->contentEncoded) { + return false; + } + + // Make sure that the size of the request is under the cutoff size + if ($this->contentLengthCutoff) { + $size = $response->getContentLength() ?: $response->getBody()->getSize(); + if (!$size || $size > $this->contentLengthCutoff) { + return; + } + } + + if (!$contentEncoding) { + $hash = $response->getBody()->getContentMd5(); + } elseif ($contentEncoding == 'gzip') { + $response->getBody()->compress('zlib.deflate'); + $hash = $response->getBody()->getContentMd5(); + $response->getBody()->uncompress(); + } elseif ($contentEncoding == 'compress') { + $response->getBody()->compress('bzip2.compress'); + $hash = $response->getBody()->getContentMd5(); + $response->getBody()->uncompress(); + } else { + return; + } + + if ($contentMd5 !== $hash) { + throw new UnexpectedValueException( + "The response entity body may have been modified over the wire. The Content-MD5 " + . "received ({$contentMd5}) did not match the calculated MD5 hash ({$hash})." + ); + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Md5/composer.json b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Md5/composer.json new file mode 100644 index 0000000..0602d06 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Md5/composer.json @@ -0,0 +1,27 @@ +{ + "name": "guzzle/plugin-md5", + "description": "Guzzle MD5 plugins", + "homepage": "http://guzzlephp.org/", + "keywords": ["plugin", "guzzle"], + "license": "MIT", + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "require": { + "php": ">=5.3.2", + "guzzle/http": "self.version" + }, + "autoload": { + "psr-0": { "Guzzle\\Plugin\\Md5": "" } + }, + "target-dir": "Guzzle/Plugin/Md5", + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Mock/MockPlugin.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Mock/MockPlugin.php new file mode 100644 index 0000000..2440578 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Mock/MockPlugin.php @@ -0,0 +1,245 @@ +readBodies = $readBodies; + $this->temporary = $temporary; + if ($items) { + foreach ($items as $item) { + if ($item instanceof \Exception) { + $this->addException($item); + } else { + $this->addResponse($item); + } + } + } + } + + public static function getSubscribedEvents() + { + // Use a number lower than the CachePlugin + return array('request.before_send' => array('onRequestBeforeSend', -999)); + } + + public static function getAllEvents() + { + return array('mock.request'); + } + + /** + * Get a mock response from a file + * + * @param string $path File to retrieve a mock response from + * + * @return Response + * @throws InvalidArgumentException if the file is not found + */ + public static function getMockFile($path) + { + if (!file_exists($path)) { + throw new InvalidArgumentException('Unable to open mock file: ' . $path); + } + + return Response::fromMessage(file_get_contents($path)); + } + + /** + * Set whether or not to consume the entity body of a request when a mock + * response is used + * + * @param bool $readBodies Set to true to read and consume entity bodies + * + * @return self + */ + public function readBodies($readBodies) + { + $this->readBodies = $readBodies; + + return $this; + } + + /** + * Returns the number of remaining mock responses + * + * @return int + */ + public function count() + { + return count($this->queue); + } + + /** + * Add a response to the end of the queue + * + * @param string|Response $response Response object or path to response file + * + * @return MockPlugin + * @throws InvalidArgumentException if a string or Response is not passed + */ + public function addResponse($response) + { + if (!($response instanceof Response)) { + if (!is_string($response)) { + throw new InvalidArgumentException('Invalid response'); + } + $response = self::getMockFile($response); + } + + $this->queue[] = $response; + + return $this; + } + + /** + * Add an exception to the end of the queue + * + * @param CurlException $e Exception to throw when the request is executed + * + * @return MockPlugin + */ + public function addException(CurlException $e) + { + $this->queue[] = $e; + + return $this; + } + + /** + * Clear the queue + * + * @return MockPlugin + */ + public function clearQueue() + { + $this->queue = array(); + + return $this; + } + + /** + * Returns an array of mock responses remaining in the queue + * + * @return array + */ + public function getQueue() + { + return $this->queue; + } + + /** + * Check if this is a temporary plugin + * + * @return bool + */ + public function isTemporary() + { + return $this->temporary; + } + + /** + * Get a response from the front of the list and add it to a request + * + * @param RequestInterface $request Request to mock + * + * @return self + * @throws CurlException When request.send is called and an exception is queued + */ + public function dequeue(RequestInterface $request) + { + $this->dispatch('mock.request', array('plugin' => $this, 'request' => $request)); + + $item = array_shift($this->queue); + if ($item instanceof Response) { + if ($this->readBodies && $request instanceof EntityEnclosingRequestInterface) { + $request->getEventDispatcher()->addListener('request.sent', $f = function (Event $event) use (&$f) { + while ($data = $event['request']->getBody()->read(8096)); + // Remove the listener after one-time use + $event['request']->getEventDispatcher()->removeListener('request.sent', $f); + }); + } + $request->setResponse($item); + } elseif ($item instanceof CurlException) { + // Emulates exceptions encountered while transferring requests + $item->setRequest($request); + $state = $request->setState(RequestInterface::STATE_ERROR, array('exception' => $item)); + // Only throw if the exception wasn't handled + if ($state == RequestInterface::STATE_ERROR) { + throw $item; + } + } + + return $this; + } + + /** + * Clear the array of received requests + */ + public function flush() + { + $this->received = array(); + } + + /** + * Get an array of requests that were mocked by this plugin + * + * @return array + */ + public function getReceivedRequests() + { + return $this->received; + } + + /** + * Called when a request is about to be sent + * + * @param Event $event + * @throws \OutOfBoundsException When queue is empty + */ + public function onRequestBeforeSend(Event $event) + { + if (!$this->queue) { + throw new \OutOfBoundsException('Mock queue is empty'); + } + + $request = $event['request']; + $this->received[] = $request; + // Detach the filter from the client so it's a one-time use + if ($this->temporary && count($this->queue) == 1 && $request->getClient()) { + $request->getClient()->getEventDispatcher()->removeSubscriber($this); + } + $this->dequeue($request); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Mock/composer.json b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Mock/composer.json new file mode 100644 index 0000000..f8201e3 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Mock/composer.json @@ -0,0 +1,27 @@ +{ + "name": "guzzle/plugin-mock", + "description": "Guzzle Mock plugin", + "homepage": "http://guzzlephp.org/", + "keywords": ["mock", "plugin", "guzzle"], + "license": "MIT", + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "require": { + "php": ">=5.3.2", + "guzzle/http": "self.version" + }, + "autoload": { + "psr-0": { "Guzzle\\Plugin\\Mock": "" } + }, + "target-dir": "Guzzle/Plugin/Mock", + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Oauth/OauthPlugin.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Oauth/OauthPlugin.php new file mode 100644 index 0000000..95e0c3e --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Oauth/OauthPlugin.php @@ -0,0 +1,306 @@ +config = Collection::fromConfig($config, array( + 'version' => '1.0', + 'request_method' => self::REQUEST_METHOD_HEADER, + 'consumer_key' => 'anonymous', + 'consumer_secret' => 'anonymous', + 'signature_method' => 'HMAC-SHA1', + 'signature_callback' => function($stringToSign, $key) { + return hash_hmac('sha1', $stringToSign, $key, true); + } + ), array( + 'signature_method', 'signature_callback', 'version', + 'consumer_key', 'consumer_secret' + )); + } + + public static function getSubscribedEvents() + { + return array( + 'request.before_send' => array('onRequestBeforeSend', -1000) + ); + } + + /** + * Request before-send event handler + * + * @param Event $event Event received + * @return array + * @throws \InvalidArgumentException + */ + public function onRequestBeforeSend(Event $event) + { + $timestamp = $this->getTimestamp($event); + $request = $event['request']; + $nonce = $this->generateNonce($request); + $authorizationParams = $this->getOauthParams($timestamp, $nonce); + $authorizationParams['oauth_signature'] = $this->getSignature($request, $timestamp, $nonce); + + switch ($this->config['request_method']) { + case self::REQUEST_METHOD_HEADER: + $request->setHeader( + 'Authorization', + $this->buildAuthorizationHeader($authorizationParams) + ); + break; + case self::REQUEST_METHOD_QUERY: + foreach ($authorizationParams as $key => $value) { + $request->getQuery()->set($key, $value); + } + break; + default: + throw new \InvalidArgumentException(sprintf( + 'Invalid consumer method "%s"', + $this->config['request_method'] + )); + } + + return $authorizationParams; + } + + /** + * Builds the Authorization header for a request + * + * @param array $authorizationParams Associative array of authorization parameters + * + * @return string + */ + private function buildAuthorizationHeader($authorizationParams) + { + $authorizationString = 'OAuth '; + foreach ($authorizationParams as $key => $val) { + if ($val) { + $authorizationString .= $key . '="' . urlencode($val) . '", '; + } + } + + return substr($authorizationString, 0, -2); + } + + /** + * Calculate signature for request + * + * @param RequestInterface $request Request to generate a signature for + * @param integer $timestamp Timestamp to use for nonce + * @param string $nonce + * + * @return string + */ + public function getSignature(RequestInterface $request, $timestamp, $nonce) + { + $string = $this->getStringToSign($request, $timestamp, $nonce); + $key = urlencode($this->config['consumer_secret']) . '&' . urlencode($this->config['token_secret']); + + return base64_encode(call_user_func($this->config['signature_callback'], $string, $key)); + } + + /** + * Calculate string to sign + * + * @param RequestInterface $request Request to generate a signature for + * @param int $timestamp Timestamp to use for nonce + * @param string $nonce + * + * @return string + */ + public function getStringToSign(RequestInterface $request, $timestamp, $nonce) + { + $params = $this->getParamsToSign($request, $timestamp, $nonce); + + // Convert booleans to strings. + $params = $this->prepareParameters($params); + + // Build signing string from combined params + $parameterString = clone $request->getQuery(); + $parameterString->replace($params); + + $url = Url::factory($request->getUrl())->setQuery('')->setFragment(null); + + return strtoupper($request->getMethod()) . '&' + . rawurlencode($url) . '&' + . rawurlencode((string) $parameterString); + } + + /** + * Get the oauth parameters as named by the oauth spec + * + * @param $timestamp + * @param $nonce + * @return Collection + */ + protected function getOauthParams($timestamp, $nonce) + { + $params = new Collection(array( + 'oauth_consumer_key' => $this->config['consumer_key'], + 'oauth_nonce' => $nonce, + 'oauth_signature_method' => $this->config['signature_method'], + 'oauth_timestamp' => $timestamp, + )); + + // Optional parameters should not be set if they have not been set in the config as + // the parameter may be considered invalid by the Oauth service. + $optionalParams = array( + 'callback' => 'oauth_callback', + 'token' => 'oauth_token', + 'verifier' => 'oauth_verifier', + 'version' => 'oauth_version' + ); + + foreach ($optionalParams as $optionName => $oauthName) { + if (isset($this->config[$optionName]) == true) { + $params[$oauthName] = $this->config[$optionName]; + } + } + + return $params; + } + + /** + * Get all of the parameters required to sign a request including: + * * The oauth params + * * The request GET params + * * The params passed in the POST body (with a content-type of application/x-www-form-urlencoded) + * + * @param RequestInterface $request Request to generate a signature for + * @param integer $timestamp Timestamp to use for nonce + * @param string $nonce + * + * @return array + */ + public function getParamsToSign(RequestInterface $request, $timestamp, $nonce) + { + $params = $this->getOauthParams($timestamp, $nonce); + + // Add query string parameters + $params->merge($request->getQuery()); + + // Add POST fields to signing string if required + if ($this->shouldPostFieldsBeSigned($request)) + { + $params->merge($request->getPostFields()); + } + + // Sort params + $params = $params->toArray(); + uksort($params, 'strcmp'); + + return $params; + } + + /** + * Decide whether the post fields should be added to the base string that Oauth signs. + * This implementation is correct. Non-conformant APIs may require that this method be + * overwritten e.g. the Flickr API incorrectly adds the post fields when the Content-Type + * is 'application/x-www-form-urlencoded' + * + * @param $request + * @return bool Whether the post fields should be signed or not + */ + public function shouldPostFieldsBeSigned($request) + { + if (!$this->config->get('disable_post_params') && + $request instanceof EntityEnclosingRequestInterface && + false !== strpos($request->getHeader('Content-Type'), 'application/x-www-form-urlencoded')) + { + return true; + } + + return false; + } + + /** + * Returns a Nonce Based on the unique id and URL. This will allow for multiple requests in parallel with the same + * exact timestamp to use separate nonce's. + * + * @param RequestInterface $request Request to generate a nonce for + * + * @return string + */ + public function generateNonce(RequestInterface $request) + { + return sha1(uniqid('', true) . $request->getUrl()); + } + + /** + * Gets timestamp from event or create new timestamp + * + * @param Event $event Event containing contextual information + * + * @return int + */ + public function getTimestamp(Event $event) + { + return $event['timestamp'] ?: time(); + } + + /** + * Convert booleans to strings, removed unset parameters, and sorts the array + * + * @param array $data Data array + * + * @return array + */ + protected function prepareParameters($data) + { + ksort($data); + foreach ($data as $key => &$value) { + switch (gettype($value)) { + case 'NULL': + unset($data[$key]); + break; + case 'array': + $data[$key] = self::prepareParameters($value); + break; + case 'boolean': + $data[$key] = $value ? 'true' : 'false'; + break; + } + } + + return $data; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Oauth/composer.json b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Oauth/composer.json new file mode 100644 index 0000000..c9766ba --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/Oauth/composer.json @@ -0,0 +1,27 @@ +{ + "name": "guzzle/plugin-oauth", + "description": "Guzzle OAuth plugin", + "homepage": "http://guzzlephp.org/", + "keywords": ["oauth", "plugin", "guzzle"], + "license": "MIT", + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "require": { + "php": ">=5.3.2", + "guzzle/http": "self.version" + }, + "autoload": { + "psr-0": { "Guzzle\\Plugin\\Oauth": "" } + }, + "target-dir": "Guzzle/Plugin/Oauth", + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/composer.json b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/composer.json new file mode 100644 index 0000000..2bbe64c --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Plugin/composer.json @@ -0,0 +1,44 @@ +{ + "name": "guzzle/plugin", + "description": "Guzzle plugin component containing all Guzzle HTTP plugins", + "homepage": "http://guzzlephp.org/", + "keywords": ["http", "client", "plugin", "extension", "guzzle"], + "license": "MIT", + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "require": { + "php": ">=5.3.2", + "guzzle/http": "self.version" + }, + "suggest": { + "guzzle/cache": "self.version", + "guzzle/log": "self.version" + }, + "autoload": { + "psr-0": { "Guzzle\\Plugin": "" } + }, + "target-dir": "Guzzle/Plugin", + "replace": { + "guzzle/plugin-async": "self.version", + "guzzle/plugin-backoff": "self.version", + "guzzle/plugin-cache": "self.version", + "guzzle/plugin-cookie": "self.version", + "guzzle/plugin-curlauth": "self.version", + "guzzle/plugin-error-response": "self.version", + "guzzle/plugin-history": "self.version", + "guzzle/plugin-log": "self.version", + "guzzle/plugin-md5": "self.version", + "guzzle/plugin-mock": "self.version", + "guzzle/plugin-oauth": "self.version" + }, + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/AbstractConfigLoader.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/AbstractConfigLoader.php new file mode 100644 index 0000000..cd06f57 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/AbstractConfigLoader.php @@ -0,0 +1,177 @@ + 'JSON_ERROR_NONE - No errors', + JSON_ERROR_DEPTH => 'JSON_ERROR_DEPTH - Maximum stack depth exceeded', + JSON_ERROR_STATE_MISMATCH => 'JSON_ERROR_STATE_MISMATCH - Underflow or the modes mismatch', + JSON_ERROR_CTRL_CHAR => 'JSON_ERROR_CTRL_CHAR - Unexpected control character found', + JSON_ERROR_SYNTAX => 'JSON_ERROR_SYNTAX - Syntax error, malformed JSON', + JSON_ERROR_UTF8 => 'JSON_ERROR_UTF8 - Malformed UTF-8 characters, possibly incorrectly encoded' + ); + + public function load($config, array $options = array()) + { + // Reset the array of loaded files because this is a new config + $this->loadedFiles = array(); + + if (is_string($config)) { + $config = $this->loadFile($config); + } elseif (!is_array($config)) { + throw new InvalidArgumentException('Unknown type passed to configuration loader: ' . gettype($config)); + } else { + $this->mergeIncludes($config); + } + + return $this->build($config, $options); + } + + /** + * Add an include alias to the loader + * + * @param string $filename Filename to alias (e.g. _foo) + * @param string $alias Actual file to use (e.g. /path/to/foo.json) + * + * @return self + */ + public function addAlias($filename, $alias) + { + $this->aliases[$filename] = $alias; + + return $this; + } + + /** + * Remove an alias from the loader + * + * @param string $alias Alias to remove + * + * @return self + */ + public function removeAlias($alias) + { + unset($this->aliases[$alias]); + + return $this; + } + + /** + * Perform the parsing of a config file and create the end result + * + * @param array $config Configuration data + * @param array $options Options to use when building + * + * @return mixed + */ + protected abstract function build($config, array $options); + + /** + * Load a configuration file (can load JSON or PHP files that return an array when included) + * + * @param string $filename File to load + * + * @return array + * @throws InvalidArgumentException + * @throws RuntimeException when the JSON cannot be parsed + */ + protected function loadFile($filename) + { + if (isset($this->aliases[$filename])) { + $filename = $this->aliases[$filename]; + } + + switch (pathinfo($filename, PATHINFO_EXTENSION)) { + case 'js': + case 'json': + $level = error_reporting(0); + $json = file_get_contents($filename); + error_reporting($level); + + if ($json === false) { + $err = error_get_last(); + throw new InvalidArgumentException("Unable to open {$filename}: " . $err['message']); + } + + $config = json_decode($json, true); + // Throw an exception if there was an error loading the file + if ($error = json_last_error()) { + $message = isset(self::$jsonErrors[$error]) ? self::$jsonErrors[$error] : 'Unknown error'; + throw new RuntimeException("Error loading JSON data from {$filename}: ({$error}) - {$message}"); + } + break; + case 'php': + if (!is_readable($filename)) { + throw new InvalidArgumentException("Unable to open {$filename} for reading"); + } + $config = require $filename; + if (!is_array($config)) { + throw new InvalidArgumentException('PHP files must return an array of configuration data'); + } + break; + default: + throw new InvalidArgumentException('Unknown file extension: ' . $filename); + } + + // Keep track of this file being loaded to prevent infinite recursion + $this->loadedFiles[$filename] = true; + + // Merge include files into the configuration array + $this->mergeIncludes($config, dirname($filename)); + + return $config; + } + + /** + * Merges in all include files + * + * @param array $config Config data that contains includes + * @param string $basePath Base path to use when a relative path is encountered + * + * @return array Returns the merged and included data + */ + protected function mergeIncludes(&$config, $basePath = null) + { + if (!empty($config['includes'])) { + foreach ($config['includes'] as &$path) { + // Account for relative paths + if ($path[0] != DIRECTORY_SEPARATOR && !isset($this->aliases[$path]) && $basePath) { + $path = "{$basePath}/{$path}"; + } + // Don't load the same files more than once + if (!isset($this->loadedFiles[$path])) { + $this->loadedFiles[$path] = true; + $config = $this->mergeData($this->loadFile($path), $config); + } + } + } + } + + /** + * Default implementation for merging two arrays of data (uses array_merge_recursive) + * + * @param array $a Original data + * @param array $b Data to merge into the original and overwrite existing values + * + * @return array + */ + protected function mergeData(array $a, array $b) + { + return array_merge_recursive($a, $b); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Builder/ServiceBuilder.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Builder/ServiceBuilder.php new file mode 100644 index 0000000..38150db --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Builder/ServiceBuilder.php @@ -0,0 +1,189 @@ +load($config, $globalParameters); + } + + /** + * @param array $serviceBuilderConfig Service configuration settings: + * - name: Name of the service + * - class: Client class to instantiate using a factory method + * - params: array of key value pair configuration settings for the builder + */ + public function __construct(array $serviceBuilderConfig = array()) + { + $this->builderConfig = $serviceBuilderConfig; + } + + public static function getAllEvents() + { + return array('service_builder.create_client'); + } + + public function unserialize($serialized) + { + $this->builderConfig = json_decode($serialized, true); + } + + public function serialize() + { + return json_encode($this->builderConfig); + } + + /** + * Attach a plugin to every client created by the builder + * + * @param EventSubscriberInterface $plugin Plugin to attach to each client + * + * @return self + */ + public function addGlobalPlugin(EventSubscriberInterface $plugin) + { + $this->plugins[] = $plugin; + + return $this; + } + + /** + * Get data from the service builder without triggering the building of a service + * + * @param string $name Name of the service to retrieve + * + * @return array|null + */ + public function getData($name) + { + return isset($this->builderConfig[$name]) ? $this->builderConfig[$name] : null; + } + + public function get($name, $throwAway = false) + { + if (!isset($this->builderConfig[$name])) { + + // Check to see if arbitrary data is being referenced + if (isset($this->clients[$name])) { + return $this->clients[$name]; + } + + // Check aliases and return a match if found + foreach ($this->builderConfig as $actualName => $config) { + if (isset($config['alias']) && $config['alias'] == $name) { + return $this->get($actualName, $throwAway); + } + } + throw new ServiceNotFoundException('No service is registered as ' . $name); + } + + if (!$throwAway && isset($this->clients[$name])) { + return $this->clients[$name]; + } + + $builder =& $this->builderConfig[$name]; + + // Convert references to the actual client + foreach ($builder['params'] as &$v) { + if (is_string($v) && substr($v, 0, 1) == '{' && substr($v, -1) == '}') { + $v = $this->get(trim($v, '{} ')); + } + } + + // Get the configured parameters and merge in any parameters provided for throw-away clients + $config = $builder['params']; + if (is_array($throwAway)) { + $config = $throwAway + $config; + } + + $client = $builder['class']::factory($config); + + if (!$throwAway) { + $this->clients[$name] = $client; + } + + if ($client instanceof ClientInterface) { + foreach ($this->plugins as $plugin) { + $client->addSubscriber($plugin); + } + // Dispatch an event letting listeners know a client was created + $this->dispatch('service_builder.create_client', array('client' => $client)); + } + + return $client; + } + + public function set($key, $service) + { + if (is_array($service) && isset($service['class']) && isset($service['params'])) { + $this->builderConfig[$key] = $service; + } else { + $this->clients[$key] = $service; + } + + return $this; + } + + public function offsetSet($offset, $value) + { + $this->set($offset, $value); + } + + public function offsetUnset($offset) + { + unset($this->builderConfig[$offset]); + unset($this->clients[$offset]); + } + + public function offsetExists($offset) + { + return isset($this->builderConfig[$offset]) || isset($this->clients[$offset]); + } + + public function offsetGet($offset) + { + return $this->get($offset); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Builder/ServiceBuilderInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Builder/ServiceBuilderInterface.php new file mode 100644 index 0000000..4fc310a --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Builder/ServiceBuilderInterface.php @@ -0,0 +1,40 @@ + &$service) { + + $service['params'] = isset($service['params']) ? $service['params'] : array(); + + // Check if this client builder extends another client + if (!empty($service['extends'])) { + + // Make sure that the service it's extending has been defined + if (!isset($services[$service['extends']])) { + throw new ServiceNotFoundException( + "{$name} is trying to extend a non-existent service: {$service['extends']}" + ); + } + + $extended = &$services[$service['extends']]; + + // Use the correct class attribute + if (empty($service['class'])) { + $service['class'] = isset($extended['class']) ? $extended['class'] : ''; + } + if ($extendsParams = isset($extended['params']) ? $extended['params'] : false) { + $service['params'] = $service['params'] + $extendsParams; + } + } + + // Overwrite default values with global parameter values + if (!empty($options)) { + $service['params'] = $options + $service['params']; + } + + $service['class'] = isset($service['class']) ? $service['class'] : ''; + } + + return new $class($services); + } + + protected function mergeData(array $a, array $b) + { + $result = $b + $a; + + // Merge services using a recursive union of arrays + if (isset($a['services']) && $b['services']) { + + // Get a union of the services of the two arrays + $result['services'] = $b['services'] + $a['services']; + + // Merge each service in using a union of the two arrays + foreach ($result['services'] as $name => &$service) { + + // By default, services completely override a previously defined service unless it extends itself + if (isset($a['services'][$name]['extends']) + && isset($b['services'][$name]['extends']) + && $b['services'][$name]['extends'] == $name + ) { + $service += $a['services'][$name]; + // Use the `extends` attribute of the parent + $service['extends'] = $a['services'][$name]['extends']; + // Merge parameters using a union if both have parameters + if (isset($a['services'][$name]['params'])) { + $service['params'] += $a['services'][$name]['params']; + } + } + } + } + + return $result; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/CachingConfigLoader.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/CachingConfigLoader.php new file mode 100644 index 0000000..26f8360 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/CachingConfigLoader.php @@ -0,0 +1,46 @@ +loader = $loader; + $this->cache = $cache; + } + + public function load($config, array $options = array()) + { + if (!is_string($config)) { + $key = false; + } else { + $key = 'loader_' . crc32($config); + if ($result = $this->cache->fetch($key)) { + return $result; + } + } + + $result = $this->loader->load($config, $options); + if ($key) { + $this->cache->save($key, $result); + } + + return $result; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Client.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Client.php new file mode 100644 index 0000000..3e5f8e5 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Client.php @@ -0,0 +1,297 @@ +getCommand($method, isset($args[0]) ? $args[0] : array())->getResult(); + } + + public function getCommand($name, array $args = array()) + { + // Add global client options to the command + if ($options = $this->getConfig(self::COMMAND_PARAMS)) { + $args += $options; + } + + if (!($command = $this->getCommandFactory()->factory($name, $args))) { + throw new InvalidArgumentException("Command was not found matching {$name}"); + } + + $command->setClient($this); + $this->dispatch('client.command.create', array('client' => $this, 'command' => $command)); + + return $command; + } + + /** + * Set the command factory used to create commands by name + * + * @param CommandFactoryInterface $factory Command factory + * + * @return self + */ + public function setCommandFactory(CommandFactoryInterface $factory) + { + $this->commandFactory = $factory; + + return $this; + } + + /** + * Set the resource iterator factory associated with the client + * + * @param ResourceIteratorFactoryInterface $factory Resource iterator factory + * + * @return self + */ + public function setResourceIteratorFactory(ResourceIteratorFactoryInterface $factory) + { + $this->resourceIteratorFactory = $factory; + + return $this; + } + + public function getIterator($command, array $commandOptions = null, array $iteratorOptions = array()) + { + if (!($command instanceof CommandInterface)) { + $command = $this->getCommand($command, $commandOptions ?: array()); + } + + return $this->getResourceIteratorFactory()->build($command, $iteratorOptions); + } + + public function execute($command) + { + if ($command instanceof CommandInterface) { + $this->send($this->prepareCommand($command)); + $this->dispatch('command.after_send', array('command' => $command)); + return $command->getResult(); + } elseif (is_array($command) || $command instanceof \Traversable) { + return $this->executeMultiple($command); + } else { + throw new InvalidArgumentException('Command must be a command or array of commands'); + } + } + + public function setDescription(ServiceDescriptionInterface $service) + { + $this->serviceDescription = $service; + + if ($this->getCommandFactory() && $this->getCommandFactory() instanceof CompositeFactory) { + $this->commandFactory->add(new Command\Factory\ServiceDescriptionFactory($service)); + } + + // If a baseUrl was set on the description, then update the client + if ($baseUrl = $service->getBaseUrl()) { + $this->setBaseUrl($baseUrl); + } + + return $this; + } + + public function getDescription() + { + return $this->serviceDescription; + } + + /** + * Set the inflector used with the client + * + * @param InflectorInterface $inflector Inflection object + * + * @return self + */ + public function setInflector(InflectorInterface $inflector) + { + $this->inflector = $inflector; + + return $this; + } + + /** + * Get the inflector used with the client + * + * @return self + */ + public function getInflector() + { + if (!$this->inflector) { + $this->inflector = Inflector::getDefault(); + } + + return $this->inflector; + } + + /** + * Prepare a command for sending and get the RequestInterface object created by the command + * + * @param CommandInterface $command Command to prepare + * + * @return RequestInterface + */ + protected function prepareCommand(CommandInterface $command) + { + // Set the client and prepare the command + $request = $command->setClient($this)->prepare(); + // Set the state to new if the command was previously executed + $request->setState(RequestInterface::STATE_NEW); + $this->dispatch('command.before_send', array('command' => $command)); + + return $request; + } + + /** + * Execute multiple commands in parallel + * + * @param array|Traversable $commands Array of CommandInterface objects to execute + * + * @return array Returns an array of the executed commands + * @throws Exception\CommandTransferException + */ + protected function executeMultiple($commands) + { + $requests = array(); + $commandRequests = new \SplObjectStorage(); + + foreach ($commands as $command) { + $request = $this->prepareCommand($command); + $commandRequests[$request] = $command; + $requests[] = $request; + } + + try { + $this->send($requests); + foreach ($commands as $command) { + $this->dispatch('command.after_send', array('command' => $command)); + } + return $commands; + } catch (MultiTransferException $failureException) { + // Throw a CommandTransferException using the successful and failed commands + $e = CommandTransferException::fromMultiTransferException($failureException); + + // Remove failed requests from the successful requests array and add to the failures array + foreach ($failureException->getFailedRequests() as $request) { + if (isset($commandRequests[$request])) { + $e->addFailedCommand($commandRequests[$request]); + unset($commandRequests[$request]); + } + } + + // Always emit the command after_send events for successful commands + foreach ($commandRequests as $success) { + $e->addSuccessfulCommand($commandRequests[$success]); + $this->dispatch('command.after_send', array('command' => $commandRequests[$success])); + } + + throw $e; + } + } + + protected function getResourceIteratorFactory() + { + if (!$this->resourceIteratorFactory) { + // Build the default resource iterator factory if one is not set + $clientClass = get_class($this); + $prefix = substr($clientClass, 0, strrpos($clientClass, '\\')); + $this->resourceIteratorFactory = new ResourceIteratorClassFactory(array( + "{$prefix}\\Iterator", + "{$prefix}\\Model" + )); + } + + return $this->resourceIteratorFactory; + } + + /** + * Get the command factory associated with the client + * + * @return CommandFactoryInterface + */ + protected function getCommandFactory() + { + if (!$this->commandFactory) { + $this->commandFactory = CompositeFactory::getDefaultChain($this); + } + + return $this->commandFactory; + } + + /** + * @deprecated + * @codeCoverageIgnore + */ + public function enableMagicMethods($isEnabled) + { + Version::warn(__METHOD__ . ' is deprecated'); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/ClientInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/ClientInterface.php new file mode 100644 index 0000000..814154f --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/ClientInterface.php @@ -0,0 +1,68 @@ +operation = $operation ?: $this->createOperation(); + foreach ($this->operation->getParams() as $name => $arg) { + $currentValue = $this[$name]; + $configValue = $arg->getValue($currentValue); + // If default or static values are set, then this should always be updated on the config object + if ($currentValue !== $configValue) { + $this[$name] = $configValue; + } + } + + $headers = $this[self::HEADERS_OPTION]; + if (!$headers instanceof Collection) { + $this[self::HEADERS_OPTION] = new Collection((array) $headers); + } + + // You can set a command.on_complete option in your parameters to set an onComplete callback + if ($onComplete = $this['command.on_complete']) { + unset($this['command.on_complete']); + $this->setOnComplete($onComplete); + } + + // Set the hidden additional parameters + if (!$this[self::HIDDEN_PARAMS]) { + $this[self::HIDDEN_PARAMS] = array( + self::HEADERS_OPTION, + self::RESPONSE_PROCESSING, + self::HIDDEN_PARAMS, + self::REQUEST_OPTIONS + ); + } + + $this->init(); + } + + /** + * Custom clone behavior + */ + public function __clone() + { + $this->request = null; + $this->result = null; + } + + /** + * Execute the command in the same manner as calling a function + * + * @return mixed Returns the result of {@see AbstractCommand::execute} + */ + public function __invoke() + { + return $this->execute(); + } + + public function getName() + { + return $this->operation->getName(); + } + + /** + * Get the API command information about the command + * + * @return OperationInterface + */ + public function getOperation() + { + return $this->operation; + } + + public function setOnComplete($callable) + { + if (!is_callable($callable)) { + throw new InvalidArgumentException('The onComplete function must be callable'); + } + + $this->onComplete = $callable; + + return $this; + } + + public function execute() + { + if (!$this->client) { + throw new CommandException('A client must be associated with the command before it can be executed.'); + } + + return $this->client->execute($this); + } + + public function getClient() + { + return $this->client; + } + + public function setClient(ClientInterface $client) + { + $this->client = $client; + + return $this; + } + + public function getRequest() + { + if (!$this->request) { + throw new CommandException('The command must be prepared before retrieving the request'); + } + + return $this->request; + } + + public function getResponse() + { + if (!$this->isExecuted()) { + $this->execute(); + } + + return $this->request->getResponse(); + } + + public function getResult() + { + if (!$this->isExecuted()) { + $this->execute(); + } + + if (null === $this->result) { + $this->process(); + // Call the onComplete method if one is set + if ($this->onComplete) { + call_user_func($this->onComplete, $this); + } + } + + return $this->result; + } + + public function setResult($result) + { + $this->result = $result; + + return $this; + } + + public function isPrepared() + { + return $this->request !== null; + } + + public function isExecuted() + { + return $this->request !== null && $this->request->getState() == 'complete'; + } + + public function prepare() + { + if (!$this->isPrepared()) { + if (!$this->client) { + throw new CommandException('A client must be associated with the command before it can be prepared.'); + } + + // If no response processing value was specified, then attempt to use the highest level of processing + if (!isset($this[self::RESPONSE_PROCESSING])) { + $this[self::RESPONSE_PROCESSING] = self::TYPE_MODEL; + } + + // Notify subscribers of the client that the command is being prepared + $this->client->dispatch('command.before_prepare', array('command' => $this)); + + // Fail on missing required arguments, and change parameters via filters + $this->validate(); + // Delegate to the subclass that implements the build method + $this->build(); + + // Add custom request headers set on the command + if ($headers = $this[self::HEADERS_OPTION]) { + foreach ($headers as $key => $value) { + $this->request->setHeader($key, $value); + } + } + + // Add any curl options to the request + if ($options = $this[Client::CURL_OPTIONS]) { + $this->request->getCurlOptions()->overwriteWith(CurlHandle::parseCurlConfig($options)); + } + + // Set a custom response body + if ($responseBody = $this[self::RESPONSE_BODY]) { + $this->request->setResponseBody($responseBody); + } + + $this->client->dispatch('command.after_prepare', array('command' => $this)); + } + + return $this->request; + } + + /** + * Set the validator used to validate and prepare command parameters and nested JSON schemas. If no validator is + * set, then the command will validate using the default {@see SchemaValidator}. + * + * @param ValidatorInterface $validator Validator used to prepare and validate properties against a JSON schema + * + * @return self + */ + public function setValidator(ValidatorInterface $validator) + { + $this->validator = $validator; + + return $this; + } + + public function getRequestHeaders() + { + return $this[self::HEADERS_OPTION]; + } + + /** + * Initialize the command (hook that can be implemented in subclasses) + */ + protected function init() {} + + /** + * Create the request object that will carry out the command + */ + abstract protected function build(); + + /** + * Hook used to create an operation for concrete commands that are not associated with a service description + * + * @return OperationInterface + */ + protected function createOperation() + { + return new Operation(array('name' => get_class($this))); + } + + /** + * Create the result of the command after the request has been completed. + * Override this method in subclasses to customize this behavior + */ + protected function process() + { + $this->result = $this[self::RESPONSE_PROCESSING] != self::TYPE_RAW + ? DefaultResponseParser::getInstance()->parse($this) + : $this->request->getResponse(); + } + + /** + * Validate and prepare the command based on the schema and rules defined by the command's Operation object + * + * @throws ValidationException when validation errors occur + */ + protected function validate() + { + // Do not perform request validation/transformation if it is disable + if ($this[self::DISABLE_VALIDATION]) { + return; + } + + $errors = array(); + $validator = $this->getValidator(); + foreach ($this->operation->getParams() as $name => $schema) { + $value = $this[$name]; + if (!$validator->validate($schema, $value)) { + $errors = array_merge($errors, $validator->getErrors()); + } elseif ($value !== $this[$name]) { + // Update the config value if it changed and no validation errors were encountered + $this->data[$name] = $value; + } + } + + // Validate additional parameters + $hidden = $this[self::HIDDEN_PARAMS]; + + if ($properties = $this->operation->getAdditionalParameters()) { + foreach ($this->toArray() as $name => $value) { + // It's only additional if it isn't defined in the schema + if (!$this->operation->hasParam($name) && !in_array($name, $hidden)) { + // Always set the name so that error messages are useful + $properties->setName($name); + if (!$validator->validate($properties, $value)) { + $errors = array_merge($errors, $validator->getErrors()); + } elseif ($value !== $this[$name]) { + $this->data[$name] = $value; + } + } + } + } + + if (!empty($errors)) { + $e = new ValidationException('Validation errors: ' . implode("\n", $errors)); + $e->setErrors($errors); + throw $e; + } + } + + /** + * Get the validator used to prepare and validate properties. If no validator has been set on the command, then + * the default {@see SchemaValidator} will be used. + * + * @return ValidatorInterface + */ + protected function getValidator() + { + if (!$this->validator) { + $this->validator = SchemaValidator::getInstance(); + } + + return $this->validator; + } + + /** + * Get array of any validation errors + * If no validator has been set then return false + */ + public function getValidationErrors() + { + if (!$this->validator) { + return false; + } + + return $this->validator->getErrors(); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/ClosureCommand.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/ClosureCommand.php new file mode 100644 index 0000000..cb6ac40 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/ClosureCommand.php @@ -0,0 +1,41 @@ +request = $closure($this, $this->operation); + + if (!$this->request || !$this->request instanceof RequestInterface) { + throw new UnexpectedValueException('Closure command did not return a RequestInterface object'); + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/CommandInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/CommandInterface.php new file mode 100644 index 0000000..fbb61d2 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/CommandInterface.php @@ -0,0 +1,128 @@ +stopPropagation(); + } + + /** + * Get the created object + * + * @return mixed + */ + public function getResult() + { + return $this['result']; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/DefaultRequestSerializer.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/DefaultRequestSerializer.php new file mode 100644 index 0000000..2dc4acd --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/DefaultRequestSerializer.php @@ -0,0 +1,169 @@ +factory = $factory; + } + + /** + * Add a location visitor to the serializer + * + * @param string $location Location to associate with the visitor + * @param RequestVisitorInterface $visitor Visitor to attach + * + * @return self + */ + public function addVisitor($location, RequestVisitorInterface $visitor) + { + $this->factory->addRequestVisitor($location, $visitor); + + return $this; + } + + public function prepare(CommandInterface $command) + { + $request = $this->createRequest($command); + // Keep an array of visitors found in the operation + $foundVisitors = array(); + $operation = $command->getOperation(); + + // Add arguments to the request using the location attribute + foreach ($operation->getParams() as $name => $arg) { + /** @var $arg \Guzzle\Service\Description\Parameter */ + $location = $arg->getLocation(); + // Skip 'uri' locations because they've already been processed + if ($location && $location != 'uri') { + // Instantiate visitors as they are detected in the properties + if (!isset($foundVisitors[$location])) { + $foundVisitors[$location] = $this->factory->getRequestVisitor($location); + } + // Ensure that a value has been set for this parameter + $value = $command[$name]; + if ($value !== null) { + // Apply the parameter value with the location visitor + $foundVisitors[$location]->visit($command, $request, $arg, $value); + } + } + } + + // Serialize additional parameters + if ($additional = $operation->getAdditionalParameters()) { + if ($visitor = $this->prepareAdditionalParameters($operation, $command, $request, $additional)) { + $foundVisitors[$additional->getLocation()] = $visitor; + } + } + + // Call the after method on each visitor found in the operation + foreach ($foundVisitors as $visitor) { + $visitor->after($command, $request); + } + + return $request; + } + + /** + * Serialize additional parameters + * + * @param OperationInterface $operation Operation that owns the command + * @param CommandInterface $command Command to prepare + * @param RequestInterface $request Request to serialize + * @param Parameter $additional Additional parameters + * + * @return null|RequestVisitorInterface + */ + protected function prepareAdditionalParameters( + OperationInterface $operation, + CommandInterface $command, + RequestInterface $request, + Parameter $additional + ) { + if (!($location = $additional->getLocation())) { + return; + } + + $visitor = $this->factory->getRequestVisitor($location); + $hidden = $command[$command::HIDDEN_PARAMS]; + + foreach ($command->toArray() as $key => $value) { + // Ignore values that are null or built-in command options + if ($value !== null + && !in_array($key, $hidden) + && !$operation->hasParam($key) + ) { + $additional->setName($key); + $visitor->visit($command, $request, $additional, $value); + } + } + + return $visitor; + } + + /** + * Create a request for the command and operation + * + * @param CommandInterface $command Command to create a request for + * + * @return RequestInterface + */ + protected function createRequest(CommandInterface $command) + { + $operation = $command->getOperation(); + $client = $command->getClient(); + $options = $command[AbstractCommand::REQUEST_OPTIONS] ?: array(); + + // If the command does not specify a template, then assume the base URL of the client + if (!($uri = $operation->getUri())) { + return $client->createRequest($operation->getHttpMethod(), $client->getBaseUrl(), null, null, $options); + } + + // Get the path values and use the client config settings + $variables = array(); + foreach ($operation->getParams() as $name => $arg) { + if ($arg->getLocation() == 'uri') { + if (isset($command[$name])) { + $variables[$name] = $arg->filter($command[$name]); + if (!is_array($variables[$name])) { + $variables[$name] = (string) $variables[$name]; + } + } + } + } + + return $client->createRequest($operation->getHttpMethod(), array($uri, $variables), null, null, $options); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/DefaultResponseParser.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/DefaultResponseParser.php new file mode 100644 index 0000000..4fe3803 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/DefaultResponseParser.php @@ -0,0 +1,55 @@ +getRequest()->getResponse(); + + // Account for hard coded content-type values specified in service descriptions + if ($contentType = $command['command.expects']) { + $response->setHeader('Content-Type', $contentType); + } else { + $contentType = (string) $response->getHeader('Content-Type'); + } + + return $this->handleParsing($command, $response, $contentType); + } + + protected function handleParsing(CommandInterface $command, Response $response, $contentType) + { + $result = $response; + if ($result->getBody()) { + if (stripos($contentType, 'json') !== false) { + $result = $result->json(); + } elseif (stripos($contentType, 'xml') !== false) { + $result = $result->xml(); + } + } + + return $result; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/Factory/AliasFactory.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/Factory/AliasFactory.php new file mode 100644 index 0000000..1c5ce07 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/Factory/AliasFactory.php @@ -0,0 +1,39 @@ +client = $client; + $this->aliases = $aliases; + } + + public function factory($name, array $args = array()) + { + if (isset($this->aliases[$name])) { + try { + return $this->client->getCommand($this->aliases[$name], $args); + } catch (InvalidArgumentException $e) { + return null; + } + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/Factory/CompositeFactory.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/Factory/CompositeFactory.php new file mode 100644 index 0000000..8c46983 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/Factory/CompositeFactory.php @@ -0,0 +1,154 @@ +getDescription()) { + $factories[] = new ServiceDescriptionFactory($description); + } + $factories[] = new ConcreteClassFactory($client); + + return new self($factories); + } + + /** + * @param array $factories Array of command factories + */ + public function __construct(array $factories = array()) + { + $this->factories = $factories; + } + + /** + * Add a command factory to the chain + * + * @param FactoryInterface $factory Factory to add + * @param string|FactoryInterface $before Insert the new command factory before a command factory class or object + * matching a class name. + * @return CompositeFactory + */ + public function add(FactoryInterface $factory, $before = null) + { + $pos = null; + + if ($before) { + foreach ($this->factories as $i => $f) { + if ($before instanceof FactoryInterface) { + if ($f === $before) { + $pos = $i; + break; + } + } elseif (is_string($before)) { + if ($f instanceof $before) { + $pos = $i; + break; + } + } + } + } + + if ($pos === null) { + $this->factories[] = $factory; + } else { + array_splice($this->factories, $i, 0, array($factory)); + } + + return $this; + } + + /** + * Check if the chain contains a specific command factory + * + * @param FactoryInterface|string $factory Factory to check + * + * @return bool + */ + public function has($factory) + { + return (bool) $this->find($factory); + } + + /** + * Remove a specific command factory from the chain + * + * @param string|FactoryInterface $factory Factory to remove by name or instance + * + * @return CompositeFactory + */ + public function remove($factory = null) + { + if (!($factory instanceof FactoryInterface)) { + $factory = $this->find($factory); + } + + $this->factories = array_values(array_filter($this->factories, function($f) use ($factory) { + return $f !== $factory; + })); + + return $this; + } + + /** + * Get a command factory by class name + * + * @param string|FactoryInterface $factory Command factory class or instance + * + * @return null|FactoryInterface + */ + public function find($factory) + { + foreach ($this->factories as $f) { + if ($factory === $f || (is_string($factory) && $f instanceof $factory)) { + return $f; + } + } + } + + /** + * Create a command using the associated command factories + * + * @param string $name Name of the command + * @param array $args Command arguments + * + * @return CommandInterface + */ + public function factory($name, array $args = array()) + { + foreach ($this->factories as $factory) { + $command = $factory->factory($name, $args); + if ($command) { + return $command; + } + } + } + + public function count() + { + return count($this->factories); + } + + public function getIterator() + { + return new \ArrayIterator($this->factories); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/Factory/ConcreteClassFactory.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/Factory/ConcreteClassFactory.php new file mode 100644 index 0000000..0e93dea --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/Factory/ConcreteClassFactory.php @@ -0,0 +1,47 @@ +client = $client; + $this->inflector = $inflector ?: Inflector::getDefault(); + } + + public function factory($name, array $args = array()) + { + // Determine the class to instantiate based on the namespace of the current client and the default directory + $prefix = $this->client->getConfig('command.prefix'); + if (!$prefix) { + // The prefix can be specified in a factory method and is cached + $prefix = implode('\\', array_slice(explode('\\', get_class($this->client)), 0, -1)) . '\\Command\\'; + $this->client->getConfig()->set('command.prefix', $prefix); + } + + $class = $prefix . str_replace(' ', '\\', ucwords(str_replace('.', ' ', $this->inflector->camel($name)))); + + // Create the concrete command if it exists + if (class_exists($class)) { + return new $class($args); + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/Factory/FactoryInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/Factory/FactoryInterface.php new file mode 100644 index 0000000..35c299d --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/Factory/FactoryInterface.php @@ -0,0 +1,21 @@ +map = $map; + } + + public function factory($name, array $args = array()) + { + if (isset($this->map[$name])) { + $class = $this->map[$name]; + + return new $class($args); + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/Factory/ServiceDescriptionFactory.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/Factory/ServiceDescriptionFactory.php new file mode 100644 index 0000000..b943a5b --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/Factory/ServiceDescriptionFactory.php @@ -0,0 +1,71 @@ +setServiceDescription($description); + $this->inflector = $inflector; + } + + /** + * Change the service description used with the factory + * + * @param ServiceDescriptionInterface $description Service description to use + * + * @return FactoryInterface + */ + public function setServiceDescription(ServiceDescriptionInterface $description) + { + $this->description = $description; + + return $this; + } + + /** + * Returns the service description + * + * @return ServiceDescriptionInterface + */ + public function getServiceDescription() + { + return $this->description; + } + + public function factory($name, array $args = array()) + { + $command = $this->description->getOperation($name); + + // If a command wasn't found, then try to uppercase the first letter and try again + if (!$command) { + $command = $this->description->getOperation(ucfirst($name)); + // If an inflector was passed, then attempt to get the command using snake_case inflection + if (!$command && $this->inflector) { + $command = $this->description->getOperation($this->inflector->snake($name)); + } + } + + if ($command) { + $class = $command->getClass(); + return new $class($args, $command, $this->description); + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/AbstractRequestVisitor.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/AbstractRequestVisitor.php new file mode 100644 index 0000000..adcfca1 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/AbstractRequestVisitor.php @@ -0,0 +1,69 @@ +resolveRecursively($value, $param) + : $param->filter($value); + } + + /** + * Map nested parameters into the location_key based parameters + * + * @param array $value Value to map + * @param Parameter $param Parameter that holds information about the current key + * + * @return array Returns the mapped array + */ + protected function resolveRecursively(array $value, Parameter $param) + { + foreach ($value as $name => &$v) { + switch ($param->getType()) { + case 'object': + if ($subParam = $param->getProperty($name)) { + $key = $subParam->getWireName(); + $value[$key] = $this->prepareValue($v, $subParam); + if ($name != $key) { + unset($value[$name]); + } + } elseif ($param->getAdditionalProperties() instanceof Parameter) { + $v = $this->prepareValue($v, $param->getAdditionalProperties()); + } + break; + case 'array': + if ($items = $param->getItems()) { + $v = $this->prepareValue($v, $items); + } + break; + } + } + + return $param->filter($value); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/BodyVisitor.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/BodyVisitor.php new file mode 100644 index 0000000..168d780 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/BodyVisitor.php @@ -0,0 +1,58 @@ +filter($value); + $entityBody = EntityBody::factory($value); + $request->setBody($entityBody); + $this->addExpectHeader($request, $entityBody, $param->getData('expect_header')); + // Add the Content-Encoding header if one is set on the EntityBody + if ($encoding = $entityBody->getContentEncoding()) { + $request->setHeader('Content-Encoding', $encoding); + } + } + + /** + * Add the appropriate expect header to a request + * + * @param EntityEnclosingRequestInterface $request Request to update + * @param EntityBodyInterface $body Entity body of the request + * @param string|int $expect Expect header setting + */ + protected function addExpectHeader(EntityEnclosingRequestInterface $request, EntityBodyInterface $body, $expect) + { + // Allow the `expect` data parameter to be set to remove the Expect header from the request + if ($expect === false) { + $request->removeHeader('Expect'); + } elseif ($expect !== true) { + // Default to using a MB as the point in which to start using the expect header + $expect = $expect ?: 1048576; + // If the expect_header value is numeric then only add if the size is greater than the cutoff + if (is_numeric($expect) && $body->getSize()) { + if ($body->getSize() < $expect) { + $request->removeHeader('Expect'); + } else { + $request->setHeader('Expect', '100-Continue'); + } + } + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/HeaderVisitor.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/HeaderVisitor.php new file mode 100644 index 0000000..2a53754 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/HeaderVisitor.php @@ -0,0 +1,44 @@ +filter($value); + if ($param->getType() == 'object' && $param->getAdditionalProperties() instanceof Parameter) { + $this->addPrefixedHeaders($request, $param, $value); + } else { + $request->setHeader($param->getWireName(), $value); + } + } + + /** + * Add a prefixed array of headers to the request + * + * @param RequestInterface $request Request to update + * @param Parameter $param Parameter object + * @param array $value Header array to add + * + * @throws InvalidArgumentException + */ + protected function addPrefixedHeaders(RequestInterface $request, Parameter $param, $value) + { + if (!is_array($value)) { + throw new InvalidArgumentException('An array of mapped headers expected, but received a single value'); + } + $prefix = $param->getSentAs(); + foreach ($value as $headerName => $headerValue) { + $request->setHeader($prefix . $headerName, $headerValue); + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/JsonVisitor.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/JsonVisitor.php new file mode 100644 index 0000000..757e1c5 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/JsonVisitor.php @@ -0,0 +1,63 @@ +data = new \SplObjectStorage(); + } + + /** + * Set the Content-Type header to add to the request if JSON is added to the body. This visitor does not add a + * Content-Type header unless you specify one here. + * + * @param string $header Header to set when JSON is added (e.g. application/json) + * + * @return self + */ + public function setContentTypeHeader($header = 'application/json') + { + $this->jsonContentType = $header; + + return $this; + } + + public function visit(CommandInterface $command, RequestInterface $request, Parameter $param, $value) + { + if (isset($this->data[$command])) { + $json = $this->data[$command]; + } else { + $json = array(); + } + $json[$param->getWireName()] = $this->prepareValue($value, $param); + $this->data[$command] = $json; + } + + public function after(CommandInterface $command, RequestInterface $request) + { + if (isset($this->data[$command])) { + // Don't overwrite the Content-Type if one is set + if ($this->jsonContentType && !$request->hasHeader('Content-Type')) { + $request->setHeader('Content-Type', $this->jsonContentType); + } + + $request->setBody(json_encode($this->data[$command])); + unset($this->data[$command]); + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/PostFieldVisitor.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/PostFieldVisitor.php new file mode 100644 index 0000000..975850b --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/PostFieldVisitor.php @@ -0,0 +1,18 @@ +setPostField($param->getWireName(), $this->prepareValue($value, $param)); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/PostFileVisitor.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/PostFileVisitor.php new file mode 100644 index 0000000..0853ebe --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/PostFileVisitor.php @@ -0,0 +1,24 @@ +filter($value); + if ($value instanceof PostFileInterface) { + $request->addPostFile($value); + } else { + $request->addPostFile($param->getWireName(), $value); + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/QueryVisitor.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/QueryVisitor.php new file mode 100644 index 0000000..315877a --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/QueryVisitor.php @@ -0,0 +1,18 @@ +getQuery()->set($param->getWireName(), $this->prepareValue($value, $param)); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/RequestVisitorInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/RequestVisitorInterface.php new file mode 100644 index 0000000..14e0b2d --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/RequestVisitorInterface.php @@ -0,0 +1,31 @@ +setResponseBody($value); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/XmlVisitor.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/XmlVisitor.php new file mode 100644 index 0000000..5b71487 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/XmlVisitor.php @@ -0,0 +1,252 @@ +data = new \SplObjectStorage(); + } + + /** + * Change the content-type header that is added when XML is found + * + * @param string $header Header to set when XML is found + * + * @return self + */ + public function setContentTypeHeader($header) + { + $this->contentType = $header; + + return $this; + } + + public function visit(CommandInterface $command, RequestInterface $request, Parameter $param, $value) + { + $xml = isset($this->data[$command]) + ? $this->data[$command] + : $this->createRootElement($param->getParent()); + $this->addXml($xml, $param, $value); + + $this->data[$command] = $xml; + } + + public function after(CommandInterface $command, RequestInterface $request) + { + $xml = null; + + // If data was found that needs to be serialized, then do so + if (isset($this->data[$command])) { + $xml = $this->finishDocument($this->data[$command]); + unset($this->data[$command]); + } else { + // Check if XML should always be sent for the command + $operation = $command->getOperation(); + if ($operation->getData('xmlAllowEmpty')) { + $xmlWriter = $this->createRootElement($operation); + $xml = $this->finishDocument($xmlWriter); + } + } + + if ($xml) { + // Don't overwrite the Content-Type if one is set + if ($this->contentType && !$request->hasHeader('Content-Type')) { + $request->setHeader('Content-Type', $this->contentType); + } + $request->setBody($xml); + } + } + + /** + * Create the root XML element to use with a request + * + * @param Operation $operation Operation object + * + * @return \XMLWriter + */ + protected function createRootElement(Operation $operation) + { + static $defaultRoot = array('name' => 'Request'); + // If no root element was specified, then just wrap the XML in 'Request' + $root = $operation->getData('xmlRoot') ?: $defaultRoot; + // Allow the XML declaration to be customized with xmlEncoding + $encoding = $operation->getData('xmlEncoding'); + + $xmlWriter = $this->startDocument($encoding); + + $xmlWriter->startElement($root['name']); + // Create the wrapping element with no namespaces if no namespaces were present + if (!empty($root['namespaces'])) { + // Create the wrapping element with an array of one or more namespaces + foreach ((array) $root['namespaces'] as $prefix => $uri) { + $nsLabel = 'xmlns'; + if (!is_numeric($prefix)) { + $nsLabel .= ':'.$prefix; + } + $xmlWriter->writeAttribute($nsLabel, $uri); + } + } + return $xmlWriter; + } + + /** + * Recursively build the XML body + * + * @param \XMLWriter $xmlWriter XML to modify + * @param Parameter $param API Parameter + * @param mixed $value Value to add + */ + protected function addXml(\XMLWriter $xmlWriter, Parameter $param, $value) + { + if ($value === null) { + return; + } + + $value = $param->filter($value); + $type = $param->getType(); + $name = $param->getWireName(); + $prefix = null; + $namespace = $param->getData('xmlNamespace'); + if (false !== strpos($name, ':')) { + list($prefix, $name) = explode(':', $name, 2); + } + + if ($type == 'object' || $type == 'array') { + if (!$param->getData('xmlFlattened')) { + $xmlWriter->startElementNS(null, $name, $namespace); + } + if ($param->getType() == 'array') { + $this->addXmlArray($xmlWriter, $param, $value); + } elseif ($param->getType() == 'object') { + $this->addXmlObject($xmlWriter, $param, $value); + } + if (!$param->getData('xmlFlattened')) { + $xmlWriter->endElement(); + } + return; + } + if ($param->getData('xmlAttribute')) { + $this->writeAttribute($xmlWriter, $prefix, $name, $namespace, $value); + } else { + $this->writeElement($xmlWriter, $prefix, $name, $namespace, $value); + } + } + + /** + * Write an attribute with namespace if used + * + * @param \XMLWriter $xmlWriter XMLWriter instance + * @param string $prefix Namespace prefix if any + * @param string $name Attribute name + * @param string $namespace The uri of the namespace + * @param string $value The attribute content + */ + protected function writeAttribute($xmlWriter, $prefix, $name, $namespace, $value) + { + if (empty($namespace)) { + $xmlWriter->writeAttribute($name, $value); + } else { + $xmlWriter->writeAttributeNS($prefix, $name, $namespace, $value); + } + } + + /** + * Write an element with namespace if used + * + * @param \XMLWriter $xmlWriter XML writer resource + * @param string $prefix Namespace prefix if any + * @param string $name Element name + * @param string $namespace The uri of the namespace + * @param string $value The element content + */ + protected function writeElement(\XMLWriter $xmlWriter, $prefix, $name, $namespace, $value) + { + $xmlWriter->startElementNS($prefix, $name, $namespace); + if (strpbrk($value, '<>&')) { + $xmlWriter->writeCData($value); + } else { + $xmlWriter->writeRaw($value); + } + $xmlWriter->endElement(); + } + + /** + * Create a new xml writer and start a document + * + * @param string $encoding document encoding + * + * @return \XMLWriter the writer resource + */ + protected function startDocument($encoding) + { + $xmlWriter = new \XMLWriter(); + $xmlWriter->openMemory(); + $xmlWriter->startDocument('1.0', $encoding); + + return $xmlWriter; + } + + /** + * End the document and return the output + * + * @param \XMLWriter $xmlWriter + * + * @return \string the writer resource + */ + protected function finishDocument($xmlWriter) + { + $xmlWriter->endDocument(); + + return $xmlWriter->outputMemory(); + } + + /** + * Add an array to the XML + */ + protected function addXmlArray(\XMLWriter $xmlWriter, Parameter $param, &$value) + { + if ($items = $param->getItems()) { + foreach ($value as $v) { + $this->addXml($xmlWriter, $items, $v); + } + } + } + + /** + * Add an object to the XML + */ + protected function addXmlObject(\XMLWriter $xmlWriter, Parameter $param, &$value) + { + $noAttributes = array(); + // add values which have attributes + foreach ($value as $name => $v) { + if ($property = $param->getProperty($name)) { + if ($property->getData('xmlAttribute')) { + $this->addXml($xmlWriter, $property, $v); + } else { + $noAttributes[] = array('value' => $v, 'property' => $property); + } + } + } + // now add values with no attributes + foreach ($noAttributes as $element) { + $this->addXml($xmlWriter, $element['property'], $element['value']); + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/AbstractResponseVisitor.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/AbstractResponseVisitor.php new file mode 100644 index 0000000..d87eeb9 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/AbstractResponseVisitor.php @@ -0,0 +1,26 @@ +getName()] = $param->filter($response->getBody()); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/HeaderVisitor.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/HeaderVisitor.php new file mode 100644 index 0000000..0f8737c --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/HeaderVisitor.php @@ -0,0 +1,50 @@ +getType() == 'object' && $param->getAdditionalProperties() instanceof Parameter) { + $this->processPrefixedHeaders($response, $param, $value); + } else { + $value[$param->getName()] = $param->filter((string) $response->getHeader($param->getWireName())); + } + } + + /** + * Process a prefixed header array + * + * @param Response $response Response that contains the headers + * @param Parameter $param Parameter object + * @param array $value Value response array to modify + */ + protected function processPrefixedHeaders(Response $response, Parameter $param, &$value) + { + // Grab prefixed headers that should be placed into an array with the prefix stripped + if ($prefix = $param->getSentAs()) { + $container = $param->getName(); + $len = strlen($prefix); + // Find all matching headers and place them into the containing element + foreach ($response->getHeaders()->toArray() as $key => $header) { + if (stripos($key, $prefix) === 0) { + // Account for multi-value headers + $value[$container][substr($key, $len)] = count($header) == 1 ? end($header) : $header; + } + } + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/JsonVisitor.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/JsonVisitor.php new file mode 100644 index 0000000..a609ebd --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/JsonVisitor.php @@ -0,0 +1,93 @@ +getResponse()->json(); + } + + public function visit( + CommandInterface $command, + Response $response, + Parameter $param, + &$value, + $context = null + ) { + $name = $param->getName(); + $key = $param->getWireName(); + if (isset($value[$key])) { + $this->recursiveProcess($param, $value[$key]); + if ($key != $name) { + $value[$name] = $value[$key]; + unset($value[$key]); + } + } + } + + /** + * Recursively process a parameter while applying filters + * + * @param Parameter $param API parameter being validated + * @param mixed $value Value to validate and process. The value may change during this process. + */ + protected function recursiveProcess(Parameter $param, &$value) + { + if ($value === null) { + return; + } + + if (is_array($value)) { + $type = $param->getType(); + if ($type == 'array') { + foreach ($value as &$item) { + $this->recursiveProcess($param->getItems(), $item); + } + } elseif ($type == 'object' && !isset($value[0])) { + // On the above line, we ensure that the array is associative and not numerically indexed + $knownProperties = array(); + if ($properties = $param->getProperties()) { + foreach ($properties as $property) { + $name = $property->getName(); + $key = $property->getWireName(); + $knownProperties[$name] = 1; + if (isset($value[$key])) { + $this->recursiveProcess($property, $value[$key]); + if ($key != $name) { + $value[$name] = $value[$key]; + unset($value[$key]); + } + } + } + } + + // Remove any unknown and potentially unsafe properties + if ($param->getAdditionalProperties() === false) { + $value = array_intersect_key($value, $knownProperties); + } elseif (($additional = $param->getAdditionalProperties()) !== true) { + // Validate and filter additional properties + foreach ($value as &$v) { + $this->recursiveProcess($additional, $v); + } + } + } + } + + $value = $param->filter($value); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/ReasonPhraseVisitor.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/ReasonPhraseVisitor.php new file mode 100644 index 0000000..1b10ebc --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/ReasonPhraseVisitor.php @@ -0,0 +1,23 @@ +getName()] = $response->getReasonPhrase(); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/ResponseVisitorInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/ResponseVisitorInterface.php new file mode 100644 index 0000000..033f40c --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/ResponseVisitorInterface.php @@ -0,0 +1,46 @@ +getName()] = $response->getStatusCode(); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/XmlVisitor.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/XmlVisitor.php new file mode 100644 index 0000000..bb7124b --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Response/XmlVisitor.php @@ -0,0 +1,151 @@ +getResponse()->xml()), true); + } + + public function visit( + CommandInterface $command, + Response $response, + Parameter $param, + &$value, + $context = null + ) { + $sentAs = $param->getWireName(); + $name = $param->getName(); + if (isset($value[$sentAs])) { + $this->recursiveProcess($param, $value[$sentAs]); + if ($name != $sentAs) { + $value[$name] = $value[$sentAs]; + unset($value[$sentAs]); + } + } + } + + /** + * Recursively process a parameter while applying filters + * + * @param Parameter $param API parameter being processed + * @param mixed $value Value to validate and process. The value may change during this process. + */ + protected function recursiveProcess(Parameter $param, &$value) + { + $type = $param->getType(); + + if (!is_array($value)) { + if ($type == 'array') { + // Cast to an array if the value was a string, but should be an array + $this->recursiveProcess($param->getItems(), $value); + $value = array($value); + } + } elseif ($type == 'object') { + $this->processObject($param, $value); + } elseif ($type == 'array') { + $this->processArray($param, $value); + } elseif ($type == 'string' && gettype($value) == 'array') { + $value = ''; + } + + if ($value !== null) { + $value = $param->filter($value); + } + } + + /** + * Process an array + * + * @param Parameter $param API parameter being parsed + * @param mixed $value Value to process + */ + protected function processArray(Parameter $param, &$value) + { + // Convert the node if it was meant to be an array + if (!isset($value[0])) { + // Collections fo nodes are sometimes wrapped in an additional array. For example: + // 12 should become: + // array('Items' => array(array('a' => 1), array('a' => 2)) + // Some nodes are not wrapped. For example: 12 + // should become array('Foo' => array(array('a' => 1), array('a' => 2)) + if ($param->getItems() && isset($value[$param->getItems()->getWireName()])) { + // Account for the case of a collection wrapping wrapped nodes: Items => Item[] + $value = $value[$param->getItems()->getWireName()]; + // If the wrapped node only had one value, then make it an array of nodes + if (!isset($value[0]) || !is_array($value)) { + $value = array($value); + } + } elseif (!empty($value)) { + // Account for repeated nodes that must be an array: Foo => Baz, Foo => Baz, but only if the + // value is set and not empty + $value = array($value); + } + } + + foreach ($value as &$item) { + $this->recursiveProcess($param->getItems(), $item); + } + } + + /** + * Process an object + * + * @param Parameter $param API parameter being parsed + * @param mixed $value Value to process + */ + protected function processObject(Parameter $param, &$value) + { + // Ensure that the array is associative and not numerically indexed + if (!isset($value[0]) && ($properties = $param->getProperties())) { + $knownProperties = array(); + foreach ($properties as $property) { + $name = $property->getName(); + $sentAs = $property->getWireName(); + $knownProperties[$name] = 1; + if ($property->getData('xmlAttribute')) { + $this->processXmlAttribute($property, $value); + } elseif (isset($value[$sentAs])) { + $this->recursiveProcess($property, $value[$sentAs]); + if ($name != $sentAs) { + $value[$name] = $value[$sentAs]; + unset($value[$sentAs]); + } + } + } + + // Remove any unknown and potentially unsafe properties + if ($param->getAdditionalProperties() === false) { + $value = array_intersect_key($value, $knownProperties); + } + } + } + + /** + * Process an XML attribute property + * + * @param Parameter $property Property to process + * @param array $value Value to process and update + */ + protected function processXmlAttribute(Parameter $property, array &$value) + { + $sentAs = $property->getWireName(); + if (isset($value['@attributes'][$sentAs])) { + $value[$property->getName()] = $value['@attributes'][$sentAs]; + unset($value['@attributes'][$sentAs]); + if (empty($value['@attributes'])) { + unset($value['@attributes']); + } + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/VisitorFlyweight.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/VisitorFlyweight.php new file mode 100644 index 0000000..74cb628 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/VisitorFlyweight.php @@ -0,0 +1,138 @@ + 'Guzzle\Service\Command\LocationVisitor\Request\BodyVisitor', + 'request.header' => 'Guzzle\Service\Command\LocationVisitor\Request\HeaderVisitor', + 'request.json' => 'Guzzle\Service\Command\LocationVisitor\Request\JsonVisitor', + 'request.postField' => 'Guzzle\Service\Command\LocationVisitor\Request\PostFieldVisitor', + 'request.postFile' => 'Guzzle\Service\Command\LocationVisitor\Request\PostFileVisitor', + 'request.query' => 'Guzzle\Service\Command\LocationVisitor\Request\QueryVisitor', + 'request.response_body' => 'Guzzle\Service\Command\LocationVisitor\Request\ResponseBodyVisitor', + 'request.responseBody' => 'Guzzle\Service\Command\LocationVisitor\Request\ResponseBodyVisitor', + 'request.xml' => 'Guzzle\Service\Command\LocationVisitor\Request\XmlVisitor', + 'response.body' => 'Guzzle\Service\Command\LocationVisitor\Response\BodyVisitor', + 'response.header' => 'Guzzle\Service\Command\LocationVisitor\Response\HeaderVisitor', + 'response.json' => 'Guzzle\Service\Command\LocationVisitor\Response\JsonVisitor', + 'response.reasonPhrase' => 'Guzzle\Service\Command\LocationVisitor\Response\ReasonPhraseVisitor', + 'response.statusCode' => 'Guzzle\Service\Command\LocationVisitor\Response\StatusCodeVisitor', + 'response.xml' => 'Guzzle\Service\Command\LocationVisitor\Response\XmlVisitor' + ); + + /** @var array Array of mappings of location names to classes */ + protected $mappings; + + /** @var array Cache of instantiated visitors */ + protected $cache = array(); + + /** + * @return self + * @codeCoverageIgnore + */ + public static function getInstance() + { + if (!self::$instance) { + self::$instance = new self(); + } + + return self::$instance; + } + + /** + * @param array $mappings Array mapping request.name and response.name to location visitor classes. Leave null to + * use the default values. + */ + public function __construct(array $mappings = null) + { + $this->mappings = $mappings === null ? self::$defaultMappings : $mappings; + } + + /** + * Get an instance of a request visitor by location name + * + * @param string $visitor Visitor name + * + * @return RequestVisitorInterface + */ + public function getRequestVisitor($visitor) + { + return $this->getKey('request.' . $visitor); + } + + /** + * Get an instance of a response visitor by location name + * + * @param string $visitor Visitor name + * + * @return ResponseVisitorInterface + */ + public function getResponseVisitor($visitor) + { + return $this->getKey('response.' . $visitor); + } + + /** + * Add a response visitor to the factory by name + * + * @param string $name Name of the visitor + * @param RequestVisitorInterface $visitor Visitor to add + * + * @return self + */ + public function addRequestVisitor($name, RequestVisitorInterface $visitor) + { + $this->cache['request.' . $name] = $visitor; + + return $this; + } + + /** + * Add a response visitor to the factory by name + * + * @param string $name Name of the visitor + * @param ResponseVisitorInterface $visitor Visitor to add + * + * @return self + */ + public function addResponseVisitor($name, ResponseVisitorInterface $visitor) + { + $this->cache['response.' . $name] = $visitor; + + return $this; + } + + /** + * Get a visitor by key value name + * + * @param string $key Key name to retrieve + * + * @return mixed + * @throws InvalidArgumentException + */ + private function getKey($key) + { + if (!isset($this->cache[$key])) { + if (!isset($this->mappings[$key])) { + list($type, $name) = explode('.', $key); + throw new InvalidArgumentException("No {$type} visitor has been mapped for {$name}"); + } + $this->cache[$key] = new $this->mappings[$key]; + } + + return $this->cache[$key]; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/OperationCommand.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/OperationCommand.php new file mode 100644 index 0000000..0748b5a --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/OperationCommand.php @@ -0,0 +1,89 @@ +responseParser = $parser; + + return $this; + } + + /** + * Set the request serializer used with the command + * + * @param RequestSerializerInterface $serializer Request serializer + * + * @return self + */ + public function setRequestSerializer(RequestSerializerInterface $serializer) + { + $this->requestSerializer = $serializer; + + return $this; + } + + /** + * Get the request serializer used with the command + * + * @return RequestSerializerInterface + */ + public function getRequestSerializer() + { + if (!$this->requestSerializer) { + // Use the default request serializer if none was found + $this->requestSerializer = DefaultRequestSerializer::getInstance(); + } + + return $this->requestSerializer; + } + + /** + * Get the response parser used for the operation + * + * @return ResponseParserInterface + */ + public function getResponseParser() + { + if (!$this->responseParser) { + // Use the default response parser if none was found + $this->responseParser = OperationResponseParser::getInstance(); + } + + return $this->responseParser; + } + + protected function build() + { + // Prepare and serialize the request + $this->request = $this->getRequestSerializer()->prepare($this); + } + + protected function process() + { + // Do not process the response if 'command.response_processing' is set to 'raw' + $this->result = $this[self::RESPONSE_PROCESSING] == self::TYPE_RAW + ? $this->request->getResponse() + : $this->getResponseParser()->parse($this); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/OperationResponseParser.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/OperationResponseParser.php new file mode 100644 index 0000000..ca00bc0 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/OperationResponseParser.php @@ -0,0 +1,195 @@ +factory = $factory; + $this->schemaInModels = $schemaInModels; + } + + /** + * Add a location visitor to the command + * + * @param string $location Location to associate with the visitor + * @param ResponseVisitorInterface $visitor Visitor to attach + * + * @return self + */ + public function addVisitor($location, ResponseVisitorInterface $visitor) + { + $this->factory->addResponseVisitor($location, $visitor); + + return $this; + } + + protected function handleParsing(CommandInterface $command, Response $response, $contentType) + { + $operation = $command->getOperation(); + $type = $operation->getResponseType(); + $model = null; + + if ($type == OperationInterface::TYPE_MODEL) { + $model = $operation->getServiceDescription()->getModel($operation->getResponseClass()); + } elseif ($type == OperationInterface::TYPE_CLASS) { + return $this->parseClass($command); + } + + if (!$model) { + // Return basic processing if the responseType is not model or the model cannot be found + return parent::handleParsing($command, $response, $contentType); + } elseif ($command[AbstractCommand::RESPONSE_PROCESSING] != AbstractCommand::TYPE_MODEL) { + // Returns a model with no visiting if the command response processing is not model + return new Model(parent::handleParsing($command, $response, $contentType)); + } else { + // Only inject the schema into the model if "schemaInModel" is true + return new Model($this->visitResult($model, $command, $response), $this->schemaInModels ? $model : null); + } + } + + /** + * Parse a class object + * + * @param CommandInterface $command Command to parse into an object + * + * @return mixed + * @throws ResponseClassException + */ + protected function parseClass(CommandInterface $command) + { + // Emit the operation.parse_class event. If a listener injects a 'result' property, then that will be the result + $event = new CreateResponseClassEvent(array('command' => $command)); + $command->getClient()->getEventDispatcher()->dispatch('command.parse_response', $event); + if ($result = $event->getResult()) { + return $result; + } + + $className = $command->getOperation()->getResponseClass(); + if (!method_exists($className, 'fromCommand')) { + throw new ResponseClassException("{$className} must exist and implement a static fromCommand() method"); + } + + return $className::fromCommand($command); + } + + /** + * Perform transformations on the result array + * + * @param Parameter $model Model that defines the structure + * @param CommandInterface $command Command that performed the operation + * @param Response $response Response received + * + * @return array Returns the array of result data + */ + protected function visitResult(Parameter $model, CommandInterface $command, Response $response) + { + $foundVisitors = $result = $knownProps = array(); + $props = $model->getProperties(); + + foreach ($props as $schema) { + if ($location = $schema->getLocation()) { + // Trigger the before method on the first found visitor of this type + if (!isset($foundVisitors[$location])) { + $foundVisitors[$location] = $this->factory->getResponseVisitor($location); + $foundVisitors[$location]->before($command, $result); + } + } + } + + // Visit additional properties when it is an actual schema + if (($additional = $model->getAdditionalProperties()) instanceof Parameter) { + $this->visitAdditionalProperties($model, $command, $response, $additional, $result, $foundVisitors); + } + + // Apply the parameter value with the location visitor + foreach ($props as $schema) { + $knownProps[$schema->getName()] = 1; + if ($location = $schema->getLocation()) { + $foundVisitors[$location]->visit($command, $response, $schema, $result); + } + } + + // Remove any unknown and potentially unsafe top-level properties + if ($additional === false) { + $result = array_intersect_key($result, $knownProps); + } + + // Call the after() method of each found visitor + foreach ($foundVisitors as $visitor) { + $visitor->after($command); + } + + return $result; + } + + protected function visitAdditionalProperties( + Parameter $model, + CommandInterface $command, + Response $response, + Parameter $additional, + &$result, + array &$foundVisitors + ) { + // Only visit when a location is specified + if ($location = $additional->getLocation()) { + if (!isset($foundVisitors[$location])) { + $foundVisitors[$location] = $this->factory->getResponseVisitor($location); + $foundVisitors[$location]->before($command, $result); + } + // Only traverse if an array was parsed from the before() visitors + if (is_array($result)) { + // Find each additional property + foreach (array_keys($result) as $key) { + // Check if the model actually knows this property. If so, then it is not additional + if (!$model->getProperty($key)) { + // Set the name to the key so that we can parse it with each visitor + $additional->setName($key); + $foundVisitors[$location]->visit($command, $response, $additional, $result); + } + } + // Reset the additionalProperties name to null + $additional->setName(null); + } + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/RequestSerializerInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/RequestSerializerInterface.php new file mode 100644 index 0000000..60b9334 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/RequestSerializerInterface.php @@ -0,0 +1,21 @@ + true, 'httpMethod' => true, 'uri' => true, 'class' => true, 'responseClass' => true, + 'responseType' => true, 'responseNotes' => true, 'notes' => true, 'summary' => true, 'documentationUrl' => true, + 'deprecated' => true, 'data' => true, 'parameters' => true, 'additionalParameters' => true, + 'errorResponses' => true + ); + + /** @var array Parameters */ + protected $parameters = array(); + + /** @var Parameter Additional parameters schema */ + protected $additionalParameters; + + /** @var string Name of the command */ + protected $name; + + /** @var string HTTP method */ + protected $httpMethod; + + /** @var string This is a short summary of what the operation does */ + protected $summary; + + /** @var string A longer text field to explain the behavior of the operation. */ + protected $notes; + + /** @var string Reference URL providing more information about the operation */ + protected $documentationUrl; + + /** @var string HTTP URI of the command */ + protected $uri; + + /** @var string Class of the command object */ + protected $class; + + /** @var string This is what is returned from the method */ + protected $responseClass; + + /** @var string Type information about the response */ + protected $responseType; + + /** @var string Information about the response returned by the operation */ + protected $responseNotes; + + /** @var bool Whether or not the command is deprecated */ + protected $deprecated; + + /** @var array Array of errors that could occur when running the command */ + protected $errorResponses; + + /** @var ServiceDescriptionInterface */ + protected $description; + + /** @var array Extra operation information */ + protected $data; + + /** + * Builds an Operation object using an array of configuration data: + * - name: (string) Name of the command + * - httpMethod: (string) HTTP method of the operation + * - uri: (string) URI template that can create a relative or absolute URL + * - class: (string) Concrete class that implements this command + * - parameters: (array) Associative array of parameters for the command. {@see Parameter} for information. + * - summary: (string) This is a short summary of what the operation does + * - notes: (string) A longer text field to explain the behavior of the operation. + * - documentationUrl: (string) Reference URL providing more information about the operation + * - responseClass: (string) This is what is returned from the method. Can be a primitive, PSR-0 compliant + * class name, or model. + * - responseNotes: (string) Information about the response returned by the operation + * - responseType: (string) One of 'primitive', 'class', 'model', or 'documentation'. If not specified, this + * value will be automatically inferred based on whether or not there is a model matching the + * name, if a matching PSR-0 compliant class name is found, or set to 'primitive' by default. + * - deprecated: (bool) Set to true if this is a deprecated command + * - errorResponses: (array) Errors that could occur when executing the command. Array of hashes, each with a + * 'code' (the HTTP response code), 'reason' (response reason phrase or description of the + * error), and 'class' (a custom exception class that would be thrown if the error is + * encountered). + * - data: (array) Any extra data that might be used to help build or serialize the operation + * - additionalParameters: (null|array) Parameter schema to use when an option is passed to the operation that is + * not in the schema + * + * @param array $config Array of configuration data + * @param ServiceDescriptionInterface $description Service description used to resolve models if $ref tags are found + */ + public function __construct(array $config = array(), ServiceDescriptionInterface $description = null) + { + $this->description = $description; + + // Get the intersection of the available properties and properties set on the operation + foreach (array_intersect_key($config, self::$properties) as $key => $value) { + $this->{$key} = $value; + } + + $this->class = $this->class ?: self::DEFAULT_COMMAND_CLASS; + $this->deprecated = (bool) $this->deprecated; + $this->errorResponses = $this->errorResponses ?: array(); + $this->data = $this->data ?: array(); + + if (!$this->responseClass) { + $this->responseClass = 'array'; + $this->responseType = 'primitive'; + } elseif ($this->responseType) { + // Set the response type to perform validation + $this->setResponseType($this->responseType); + } else { + // A response class was set and no response type was set, so guess what the type is + $this->inferResponseType(); + } + + // Parameters need special handling when adding + if ($this->parameters) { + foreach ($this->parameters as $name => $param) { + if ($param instanceof Parameter) { + $param->setName($name)->setParent($this); + } elseif (is_array($param)) { + $param['name'] = $name; + $this->addParam(new Parameter($param, $this->description)); + } + } + } + + if ($this->additionalParameters) { + if ($this->additionalParameters instanceof Parameter) { + $this->additionalParameters->setParent($this); + } elseif (is_array($this->additionalParameters)) { + $this->setadditionalParameters(new Parameter($this->additionalParameters, $this->description)); + } + } + } + + public function toArray() + { + $result = array(); + // Grab valid properties and filter out values that weren't set + foreach (array_keys(self::$properties) as $check) { + if ($value = $this->{$check}) { + $result[$check] = $value; + } + } + // Remove the name property + unset($result['name']); + // Parameters need to be converted to arrays + $result['parameters'] = array(); + foreach ($this->parameters as $key => $param) { + $result['parameters'][$key] = $param->toArray(); + } + // Additional parameters need to be cast to an array + if ($this->additionalParameters instanceof Parameter) { + $result['additionalParameters'] = $this->additionalParameters->toArray(); + } + + return $result; + } + + public function getServiceDescription() + { + return $this->description; + } + + public function setServiceDescription(ServiceDescriptionInterface $description) + { + $this->description = $description; + + return $this; + } + + public function getParams() + { + return $this->parameters; + } + + public function getParamNames() + { + return array_keys($this->parameters); + } + + public function hasParam($name) + { + return isset($this->parameters[$name]); + } + + public function getParam($param) + { + return isset($this->parameters[$param]) ? $this->parameters[$param] : null; + } + + /** + * Add a parameter to the command + * + * @param Parameter $param Parameter to add + * + * @return self + */ + public function addParam(Parameter $param) + { + $this->parameters[$param->getName()] = $param; + $param->setParent($this); + + return $this; + } + + /** + * Remove a parameter from the command + * + * @param string $name Name of the parameter to remove + * + * @return self + */ + public function removeParam($name) + { + unset($this->parameters[$name]); + + return $this; + } + + public function getHttpMethod() + { + return $this->httpMethod; + } + + /** + * Set the HTTP method of the command + * + * @param string $httpMethod Method to set + * + * @return self + */ + public function setHttpMethod($httpMethod) + { + $this->httpMethod = $httpMethod; + + return $this; + } + + public function getClass() + { + return $this->class; + } + + /** + * Set the concrete class of the command + * + * @param string $className Concrete class name + * + * @return self + */ + public function setClass($className) + { + $this->class = $className; + + return $this; + } + + public function getName() + { + return $this->name; + } + + /** + * Set the name of the command + * + * @param string $name Name of the command + * + * @return self + */ + public function setName($name) + { + $this->name = $name; + + return $this; + } + + public function getSummary() + { + return $this->summary; + } + + /** + * Set a short summary of what the operation does + * + * @param string $summary Short summary of the operation + * + * @return self + */ + public function setSummary($summary) + { + $this->summary = $summary; + + return $this; + } + + public function getNotes() + { + return $this->notes; + } + + /** + * Set a longer text field to explain the behavior of the operation. + * + * @param string $notes Notes on the operation + * + * @return self + */ + public function setNotes($notes) + { + $this->notes = $notes; + + return $this; + } + + public function getDocumentationUrl() + { + return $this->documentationUrl; + } + + /** + * Set the URL pointing to additional documentation on the command + * + * @param string $docUrl Documentation URL + * + * @return self + */ + public function setDocumentationUrl($docUrl) + { + $this->documentationUrl = $docUrl; + + return $this; + } + + public function getResponseClass() + { + return $this->responseClass; + } + + /** + * Set what is returned from the method. Can be a primitive, class name, or model. For example: 'array', + * 'Guzzle\\Foo\\Baz', or 'MyModelName' (to reference a model by ID). + * + * @param string $responseClass Type of response + * + * @return self + */ + public function setResponseClass($responseClass) + { + $this->responseClass = $responseClass; + $this->inferResponseType(); + + return $this; + } + + public function getResponseType() + { + return $this->responseType; + } + + /** + * Set qualifying information about the responseClass. One of 'primitive', 'class', 'model', or 'documentation' + * + * @param string $responseType Response type information + * + * @return self + * @throws InvalidArgumentException + */ + public function setResponseType($responseType) + { + static $types = array( + self::TYPE_PRIMITIVE => true, + self::TYPE_CLASS => true, + self::TYPE_MODEL => true, + self::TYPE_DOCUMENTATION => true + ); + if (!isset($types[$responseType])) { + throw new InvalidArgumentException('responseType must be one of ' . implode(', ', array_keys($types))); + } + + $this->responseType = $responseType; + + return $this; + } + + public function getResponseNotes() + { + return $this->responseNotes; + } + + /** + * Set notes about the response of the operation + * + * @param string $notes Response notes + * + * @return self + */ + public function setResponseNotes($notes) + { + $this->responseNotes = $notes; + + return $this; + } + + public function getDeprecated() + { + return $this->deprecated; + } + + /** + * Set whether or not the command is deprecated + * + * @param bool $isDeprecated Set to true to mark as deprecated + * + * @return self + */ + public function setDeprecated($isDeprecated) + { + $this->deprecated = $isDeprecated; + + return $this; + } + + public function getUri() + { + return $this->uri; + } + + /** + * Set the URI template of the command + * + * @param string $uri URI template to set + * + * @return self + */ + public function setUri($uri) + { + $this->uri = $uri; + + return $this; + } + + public function getErrorResponses() + { + return $this->errorResponses; + } + + /** + * Add an error to the command + * + * @param string $code HTTP response code + * @param string $reason HTTP response reason phrase or information about the error + * @param string $class Exception class associated with the error + * + * @return self + */ + public function addErrorResponse($code, $reason, $class) + { + $this->errorResponses[] = array('code' => $code, 'reason' => $reason, 'class' => $class); + + return $this; + } + + /** + * Set all of the error responses of the operation + * + * @param array $errorResponses Hash of error name to a hash containing a code, reason, class + * + * @return self + */ + public function setErrorResponses(array $errorResponses) + { + $this->errorResponses = $errorResponses; + + return $this; + } + + public function getData($name) + { + return isset($this->data[$name]) ? $this->data[$name] : null; + } + + /** + * Set a particular data point on the operation + * + * @param string $name Name of the data value + * @param mixed $value Value to set + * + * @return self + */ + public function setData($name, $value) + { + $this->data[$name] = $value; + + return $this; + } + + /** + * Get the additionalParameters of the operation + * + * @return Parameter|null + */ + public function getAdditionalParameters() + { + return $this->additionalParameters; + } + + /** + * Set the additionalParameters of the operation + * + * @param Parameter|null $parameter Parameter to set + * + * @return self + */ + public function setAdditionalParameters($parameter) + { + if ($this->additionalParameters = $parameter) { + $this->additionalParameters->setParent($this); + } + + return $this; + } + + /** + * Infer the response type from the responseClass value + */ + protected function inferResponseType() + { + static $primitives = array('array' => 1, 'boolean' => 1, 'string' => 1, 'integer' => 1, '' => 1); + if (isset($primitives[$this->responseClass])) { + $this->responseType = self::TYPE_PRIMITIVE; + } elseif ($this->description && $this->description->hasModel($this->responseClass)) { + $this->responseType = self::TYPE_MODEL; + } else { + $this->responseType = self::TYPE_CLASS; + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Description/OperationInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Description/OperationInterface.php new file mode 100644 index 0000000..4de41bd --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Description/OperationInterface.php @@ -0,0 +1,159 @@ +getModel($data['$ref'])) { + $data = $model->toArray() + $data; + } + } elseif (isset($data['extends'])) { + // If this parameter extends from another parameter then start with the actual data + // union in the parent's data (e.g. actual supersedes parent) + if ($extends = $description->getModel($data['extends'])) { + $data += $extends->toArray(); + } + } + } + + // Pull configuration data into the parameter + foreach ($data as $key => $value) { + $this->{$key} = $value; + } + + $this->serviceDescription = $description; + $this->required = (bool) $this->required; + $this->data = (array) $this->data; + + if ($this->filters) { + $this->setFilters((array) $this->filters); + } + + if ($this->type == 'object' && $this->additionalProperties === null) { + $this->additionalProperties = true; + } + } + + /** + * Convert the object to an array + * + * @return array + */ + public function toArray() + { + static $checks = array('required', 'description', 'static', 'type', 'format', 'instanceOf', 'location', 'sentAs', + 'pattern', 'minimum', 'maximum', 'minItems', 'maxItems', 'minLength', 'maxLength', 'data', 'enum', + 'filters'); + + $result = array(); + + // Anything that is in the `Items` attribute of an array *must* include it's name if available + if ($this->parent instanceof self && $this->parent->getType() == 'array' && isset($this->name)) { + $result['name'] = $this->name; + } + + foreach ($checks as $c) { + if ($value = $this->{$c}) { + $result[$c] = $value; + } + } + + if ($this->default !== null) { + $result['default'] = $this->default; + } + + if ($this->items !== null) { + $result['items'] = $this->getItems()->toArray(); + } + + if ($this->additionalProperties !== null) { + $result['additionalProperties'] = $this->getAdditionalProperties(); + if ($result['additionalProperties'] instanceof self) { + $result['additionalProperties'] = $result['additionalProperties']->toArray(); + } + } + + if ($this->type == 'object' && $this->properties) { + $result['properties'] = array(); + foreach ($this->getProperties() as $name => $property) { + $result['properties'][$name] = $property->toArray(); + } + } + + return $result; + } + + /** + * Get the default or static value of the command based on a value + * + * @param string $value Value that is currently set + * + * @return mixed Returns the value, a static value if one is present, or a default value + */ + public function getValue($value) + { + if ($this->static || ($this->default !== null && $value === null)) { + return $this->default; + } + + return $value; + } + + /** + * Run a value through the filters OR format attribute associated with the parameter + * + * @param mixed $value Value to filter + * + * @return mixed Returns the filtered value + */ + public function filter($value) + { + // Formats are applied exclusively and supersed filters + if ($this->format) { + return SchemaFormatter::format($this->format, $value); + } + + // Convert Boolean values + if ($this->type == 'boolean' && !is_bool($value)) { + $value = filter_var($value, FILTER_VALIDATE_BOOLEAN); + } + + // Apply filters to the value + if ($this->filters) { + foreach ($this->filters as $filter) { + if (is_array($filter)) { + // Convert complex filters that hold value place holders + foreach ($filter['args'] as &$data) { + if ($data == '@value') { + $data = $value; + } elseif ($data == '@api') { + $data = $this; + } + } + $value = call_user_func_array($filter['method'], $filter['args']); + } else { + $value = call_user_func($filter, $value); + } + } + } + + return $value; + } + + /** + * Get the name of the parameter + * + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Get the key of the parameter, where sentAs will supersede name if it is set + * + * @return string + */ + public function getWireName() + { + return $this->sentAs ?: $this->name; + } + + /** + * Set the name of the parameter + * + * @param string $name Name to set + * + * @return self + */ + public function setName($name) + { + $this->name = $name; + + return $this; + } + + /** + * Get the type(s) of the parameter + * + * @return string|array + */ + public function getType() + { + return $this->type; + } + + /** + * Set the type(s) of the parameter + * + * @param string|array $type Type of parameter or array of simple types used in a union + * + * @return self + */ + public function setType($type) + { + $this->type = $type; + + return $this; + } + + /** + * Get if the parameter is required + * + * @return bool + */ + public function getRequired() + { + return $this->required; + } + + /** + * Set if the parameter is required + * + * @param bool $isRequired Whether or not the parameter is required + * + * @return self + */ + public function setRequired($isRequired) + { + $this->required = (bool) $isRequired; + + return $this; + } + + /** + * Get the default value of the parameter + * + * @return string|null + */ + public function getDefault() + { + return $this->default; + } + + /** + * Set the default value of the parameter + * + * @param string|null $default Default value to set + * + * @return self + */ + public function setDefault($default) + { + $this->default = $default; + + return $this; + } + + /** + * Get the description of the parameter + * + * @return string|null + */ + public function getDescription() + { + return $this->description; + } + + /** + * Set the description of the parameter + * + * @param string $description Description + * + * @return self + */ + public function setDescription($description) + { + $this->description = $description; + + return $this; + } + + /** + * Get the minimum acceptable value for an integer + * + * @return int|null + */ + public function getMinimum() + { + return $this->minimum; + } + + /** + * Set the minimum acceptable value for an integer + * + * @param int|null $min Minimum + * + * @return self + */ + public function setMinimum($min) + { + $this->minimum = $min; + + return $this; + } + + /** + * Get the maximum acceptable value for an integer + * + * @return int|null + */ + public function getMaximum() + { + return $this->maximum; + } + + /** + * Set the maximum acceptable value for an integer + * + * @param int $max Maximum + * + * @return self + */ + public function setMaximum($max) + { + $this->maximum = $max; + + return $this; + } + + /** + * Get the minimum allowed length of a string value + * + * @return int + */ + public function getMinLength() + { + return $this->minLength; + } + + /** + * Set the minimum allowed length of a string value + * + * @param int|null $min Minimum + * + * @return self + */ + public function setMinLength($min) + { + $this->minLength = $min; + + return $this; + } + + /** + * Get the maximum allowed length of a string value + * + * @return int|null + */ + public function getMaxLength() + { + return $this->maxLength; + } + + /** + * Set the maximum allowed length of a string value + * + * @param int $max Maximum length + * + * @return self + */ + public function setMaxLength($max) + { + $this->maxLength = $max; + + return $this; + } + + /** + * Get the maximum allowed number of items in an array value + * + * @return int|null + */ + public function getMaxItems() + { + return $this->maxItems; + } + + /** + * Set the maximum allowed number of items in an array value + * + * @param int $max Maximum + * + * @return self + */ + public function setMaxItems($max) + { + $this->maxItems = $max; + + return $this; + } + + /** + * Get the minimum allowed number of items in an array value + * + * @return int + */ + public function getMinItems() + { + return $this->minItems; + } + + /** + * Set the minimum allowed number of items in an array value + * + * @param int|null $min Minimum + * + * @return self + */ + public function setMinItems($min) + { + $this->minItems = $min; + + return $this; + } + + /** + * Get the location of the parameter + * + * @return string|null + */ + public function getLocation() + { + return $this->location; + } + + /** + * Set the location of the parameter + * + * @param string|null $location Location of the parameter + * + * @return self + */ + public function setLocation($location) + { + $this->location = $location; + + return $this; + } + + /** + * Get the sentAs attribute of the parameter that used with locations to sentAs an attribute when it is being + * applied to a location. + * + * @return string|null + */ + public function getSentAs() + { + return $this->sentAs; + } + + /** + * Set the sentAs attribute + * + * @param string|null $name Name of the value as it is sent over the wire + * + * @return self + */ + public function setSentAs($name) + { + $this->sentAs = $name; + + return $this; + } + + /** + * Retrieve a known property from the parameter by name or a data property by name. When not specific name value + * is specified, all data properties will be returned. + * + * @param string|null $name Specify a particular property name to retrieve + * + * @return array|mixed|null + */ + public function getData($name = null) + { + if (!$name) { + return $this->data; + } + + if (isset($this->data[$name])) { + return $this->data[$name]; + } elseif (isset($this->{$name})) { + return $this->{$name}; + } + + return null; + } + + /** + * Set the extra data properties of the parameter or set a specific extra property + * + * @param string|array|null $nameOrData The name of a specific extra to set or an array of extras to set + * @param mixed|null $data When setting a specific extra property, specify the data to set for it + * + * @return self + */ + public function setData($nameOrData, $data = null) + { + if (is_array($nameOrData)) { + $this->data = $nameOrData; + } else { + $this->data[$nameOrData] = $data; + } + + return $this; + } + + /** + * Get whether or not the default value can be changed + * + * @return mixed|null + */ + public function getStatic() + { + return $this->static; + } + + /** + * Set to true if the default value cannot be changed + * + * @param bool $static True or false + * + * @return self + */ + public function setStatic($static) + { + $this->static = (bool) $static; + + return $this; + } + + /** + * Get an array of filters used by the parameter + * + * @return array + */ + public function getFilters() + { + return $this->filters ?: array(); + } + + /** + * Set the array of filters used by the parameter + * + * @param array $filters Array of functions to use as filters + * + * @return self + */ + public function setFilters(array $filters) + { + $this->filters = array(); + foreach ($filters as $filter) { + $this->addFilter($filter); + } + + return $this; + } + + /** + * Add a filter to the parameter + * + * @param string|array $filter Method to filter the value through + * + * @return self + * @throws InvalidArgumentException + */ + public function addFilter($filter) + { + if (is_array($filter)) { + if (!isset($filter['method'])) { + throw new InvalidArgumentException('A [method] value must be specified for each complex filter'); + } + } + + if (!$this->filters) { + $this->filters = array($filter); + } else { + $this->filters[] = $filter; + } + + return $this; + } + + /** + * Get the parent object (an {@see OperationInterface} or {@see Parameter} + * + * @return OperationInterface|Parameter|null + */ + public function getParent() + { + return $this->parent; + } + + /** + * Set the parent object of the parameter + * + * @param OperationInterface|Parameter|null $parent Parent container of the parameter + * + * @return self + */ + public function setParent($parent) + { + $this->parent = $parent; + + return $this; + } + + /** + * Get the properties of the parameter + * + * @return array + */ + public function getProperties() + { + if (!$this->propertiesCache) { + $this->propertiesCache = array(); + foreach (array_keys($this->properties) as $name) { + $this->propertiesCache[$name] = $this->getProperty($name); + } + } + + return $this->propertiesCache; + } + + /** + * Get a specific property from the parameter + * + * @param string $name Name of the property to retrieve + * + * @return null|Parameter + */ + public function getProperty($name) + { + if (!isset($this->properties[$name])) { + return null; + } + + if (!($this->properties[$name] instanceof self)) { + $this->properties[$name]['name'] = $name; + $this->properties[$name] = new static($this->properties[$name], $this->serviceDescription); + $this->properties[$name]->setParent($this); + } + + return $this->properties[$name]; + } + + /** + * Remove a property from the parameter + * + * @param string $name Name of the property to remove + * + * @return self + */ + public function removeProperty($name) + { + unset($this->properties[$name]); + $this->propertiesCache = null; + + return $this; + } + + /** + * Add a property to the parameter + * + * @param Parameter $property Properties to set + * + * @return self + */ + public function addProperty(Parameter $property) + { + $this->properties[$property->getName()] = $property; + $property->setParent($this); + $this->propertiesCache = null; + + return $this; + } + + /** + * Get the additionalProperties value of the parameter + * + * @return bool|Parameter|null + */ + public function getAdditionalProperties() + { + if (is_array($this->additionalProperties)) { + $this->additionalProperties = new static($this->additionalProperties, $this->serviceDescription); + $this->additionalProperties->setParent($this); + } + + return $this->additionalProperties; + } + + /** + * Set the additionalProperties value of the parameter + * + * @param bool|Parameter|null $additional Boolean to allow any, an Parameter to specify a schema, or false to disallow + * + * @return self + */ + public function setAdditionalProperties($additional) + { + $this->additionalProperties = $additional; + + return $this; + } + + /** + * Set the items data of the parameter + * + * @param Parameter|null $items Items to set + * + * @return self + */ + public function setItems(Parameter $items = null) + { + if ($this->items = $items) { + $this->items->setParent($this); + } + + return $this; + } + + /** + * Get the item data of the parameter + * + * @return Parameter|null + */ + public function getItems() + { + if (is_array($this->items)) { + $this->items = new static($this->items, $this->serviceDescription); + $this->items->setParent($this); + } + + return $this->items; + } + + /** + * Get the class that the parameter must implement + * + * @return null|string + */ + public function getInstanceOf() + { + return $this->instanceOf; + } + + /** + * Set the class that the parameter must be an instance of + * + * @param string|null $instanceOf Class or interface name + * + * @return self + */ + public function setInstanceOf($instanceOf) + { + $this->instanceOf = $instanceOf; + + return $this; + } + + /** + * Get the enum of strings that are valid for the parameter + * + * @return array|null + */ + public function getEnum() + { + return $this->enum; + } + + /** + * Set the enum of strings that are valid for the parameter + * + * @param array|null $enum Array of strings or null + * + * @return self + */ + public function setEnum(array $enum = null) + { + $this->enum = $enum; + + return $this; + } + + /** + * Get the regex pattern that must match a value when the value is a string + * + * @return string + */ + public function getPattern() + { + return $this->pattern; + } + + /** + * Set the regex pattern that must match a value when the value is a string + * + * @param string $pattern Regex pattern + * + * @return self + */ + public function setPattern($pattern) + { + $this->pattern = $pattern; + + return $this; + } + + /** + * Get the format attribute of the schema + * + * @return string + */ + public function getFormat() + { + return $this->format; + } + + /** + * Set the format attribute of the schema + * + * @param string $format Format to set (e.g. date, date-time, timestamp, time, date-time-http) + * + * @return self + */ + public function setFormat($format) + { + $this->format = $format; + + return $this; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Description/SchemaFormatter.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Description/SchemaFormatter.php new file mode 100644 index 0000000..7f47fc9 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Description/SchemaFormatter.php @@ -0,0 +1,156 @@ +setTimezone(self::getUtcTimeZone())->format($format); + } + + throw new InvalidArgumentException('Date/Time values must be either a string, integer, or DateTime object'); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Description/SchemaValidator.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Description/SchemaValidator.php new file mode 100644 index 0000000..b045422 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Description/SchemaValidator.php @@ -0,0 +1,291 @@ +castIntegerToStringType = $castIntegerToStringType; + } + + public function validate(Parameter $param, &$value) + { + $this->errors = array(); + $this->recursiveProcess($param, $value); + + if (empty($this->errors)) { + return true; + } else { + sort($this->errors); + return false; + } + } + + /** + * Get the errors encountered while validating + * + * @return array + */ + public function getErrors() + { + return $this->errors ?: array(); + } + + /** + * Recursively validate a parameter + * + * @param Parameter $param API parameter being validated + * @param mixed $value Value to validate and validate. The value may change during this validate. + * @param string $path Current validation path (used for error reporting) + * @param int $depth Current depth in the validation validate + * + * @return bool Returns true if valid, or false if invalid + */ + protected function recursiveProcess(Parameter $param, &$value, $path = '', $depth = 0) + { + // Update the value by adding default or static values + $value = $param->getValue($value); + + $required = $param->getRequired(); + // if the value is null and the parameter is not required or is static, then skip any further recursion + if ((null === $value && !$required) || $param->getStatic()) { + return true; + } + + $type = $param->getType(); + // Attempt to limit the number of times is_array is called by tracking if the value is an array + $valueIsArray = is_array($value); + // If a name is set then update the path so that validation messages are more helpful + if ($name = $param->getName()) { + $path .= "[{$name}]"; + } + + if ($type == 'object') { + + // Objects are either associative arrays, ToArrayInterface, or some other object + if ($param->getInstanceOf()) { + $instance = $param->getInstanceOf(); + if (!($value instanceof $instance)) { + $this->errors[] = "{$path} must be an instance of {$instance}"; + return false; + } + } + + // Determine whether or not this "value" has properties and should be traversed + $traverse = $temporaryValue = false; + + // Convert the value to an array + if (!$valueIsArray && $value instanceof ToArrayInterface) { + $value = $value->toArray(); + } + + if ($valueIsArray) { + // Ensure that the array is associative and not numerically indexed + if (isset($value[0])) { + $this->errors[] = "{$path} must be an array of properties. Got a numerically indexed array."; + return false; + } + $traverse = true; + } elseif ($value === null) { + // Attempt to let the contents be built up by default values if possible + $value = array(); + $temporaryValue = $valueIsArray = $traverse = true; + } + + if ($traverse) { + + if ($properties = $param->getProperties()) { + // if properties were found, the validate each property of the value + foreach ($properties as $property) { + $name = $property->getName(); + if (isset($value[$name])) { + $this->recursiveProcess($property, $value[$name], $path, $depth + 1); + } else { + $current = null; + $this->recursiveProcess($property, $current, $path, $depth + 1); + // Only set the value if it was populated with something + if (null !== $current) { + $value[$name] = $current; + } + } + } + } + + $additional = $param->getAdditionalProperties(); + if ($additional !== true) { + // If additional properties were found, then validate each against the additionalProperties attr. + $keys = array_keys($value); + // Determine the keys that were specified that were not listed in the properties of the schema + $diff = array_diff($keys, array_keys($properties)); + if (!empty($diff)) { + // Determine which keys are not in the properties + if ($additional instanceOf Parameter) { + foreach ($diff as $key) { + $this->recursiveProcess($additional, $value[$key], "{$path}[{$key}]", $depth); + } + } else { + // if additionalProperties is set to false and there are additionalProperties in the values, then fail + foreach ($diff as $prop) { + $this->errors[] = sprintf('%s[%s] is not an allowed property', $path, $prop); + } + } + } + } + + // A temporary value will be used to traverse elements that have no corresponding input value. + // This allows nested required parameters with default values to bubble up into the input. + // Here we check if we used a temp value and nothing bubbled up, then we need to remote the value. + if ($temporaryValue && empty($value)) { + $value = null; + $valueIsArray = false; + } + } + + } elseif ($type == 'array' && $valueIsArray && $param->getItems()) { + foreach ($value as $i => &$item) { + // Validate each item in an array against the items attribute of the schema + $this->recursiveProcess($param->getItems(), $item, $path . "[{$i}]", $depth + 1); + } + } + + // If the value is required and the type is not null, then there is an error if the value is not set + if ($required && $value === null && $type != 'null') { + $message = "{$path} is " . ($param->getType() ? ('a required ' . implode(' or ', (array) $param->getType())) : 'required'); + if ($param->getDescription()) { + $message .= ': ' . $param->getDescription(); + } + $this->errors[] = $message; + return false; + } + + // Validate that the type is correct. If the type is string but an integer was passed, the class can be + // instructed to cast the integer to a string to pass validation. This is the default behavior. + if ($type && (!$type = $this->determineType($type, $value))) { + if ($this->castIntegerToStringType && $param->getType() == 'string' && is_integer($value)) { + $value = (string) $value; + } else { + $this->errors[] = "{$path} must be of type " . implode(' or ', (array) $param->getType()); + } + } + + // Perform type specific validation for strings, arrays, and integers + if ($type == 'string') { + + // Strings can have enums which are a list of predefined values + if (($enum = $param->getEnum()) && !in_array($value, $enum)) { + $this->errors[] = "{$path} must be one of " . implode(' or ', array_map(function ($s) { + return '"' . addslashes($s) . '"'; + }, $enum)); + } + // Strings can have a regex pattern that the value must match + if (($pattern = $param->getPattern()) && !preg_match($pattern, $value)) { + $this->errors[] = "{$path} must match the following regular expression: {$pattern}"; + } + + $strLen = null; + if ($min = $param->getMinLength()) { + $strLen = strlen($value); + if ($strLen < $min) { + $this->errors[] = "{$path} length must be greater than or equal to {$min}"; + } + } + if ($max = $param->getMaxLength()) { + if (($strLen ?: strlen($value)) > $max) { + $this->errors[] = "{$path} length must be less than or equal to {$max}"; + } + } + + } elseif ($type == 'array') { + + $size = null; + if ($min = $param->getMinItems()) { + $size = count($value); + if ($size < $min) { + $this->errors[] = "{$path} must contain {$min} or more elements"; + } + } + if ($max = $param->getMaxItems()) { + if (($size ?: count($value)) > $max) { + $this->errors[] = "{$path} must contain {$max} or fewer elements"; + } + } + + } elseif ($type == 'integer' || $type == 'number' || $type == 'numeric') { + if (($min = $param->getMinimum()) && $value < $min) { + $this->errors[] = "{$path} must be greater than or equal to {$min}"; + } + if (($max = $param->getMaximum()) && $value > $max) { + $this->errors[] = "{$path} must be less than or equal to {$max}"; + } + } + + return empty($this->errors); + } + + /** + * From the allowable types, determine the type that the variable matches + * + * @param string $type Parameter type + * @param mixed $value Value to determine the type + * + * @return string|bool Returns the matching type on + */ + protected function determineType($type, $value) + { + foreach ((array) $type as $t) { + if ($t == 'string' && (is_string($value) || (is_object($value) && method_exists($value, '__toString')))) { + return 'string'; + } elseif ($t == 'object' && (is_array($value) || is_object($value))) { + return 'object'; + } elseif ($t == 'array' && is_array($value)) { + return 'array'; + } elseif ($t == 'integer' && is_integer($value)) { + return 'integer'; + } elseif ($t == 'boolean' && is_bool($value)) { + return 'boolean'; + } elseif ($t == 'number' && is_numeric($value)) { + return 'number'; + } elseif ($t == 'numeric' && is_numeric($value)) { + return 'numeric'; + } elseif ($t == 'null' && !$value) { + return 'null'; + } elseif ($t == 'any') { + return 'any'; + } + } + + return false; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Description/ServiceDescription.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Description/ServiceDescription.php new file mode 100644 index 0000000..286e65e --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Description/ServiceDescription.php @@ -0,0 +1,271 @@ +load($config, $options); + } + + /** + * @param array $config Array of configuration data + */ + public function __construct(array $config = array()) + { + $this->fromArray($config); + } + + public function serialize() + { + return json_encode($this->toArray()); + } + + public function unserialize($json) + { + $this->operations = array(); + $this->fromArray(json_decode($json, true)); + } + + public function toArray() + { + $result = array( + 'name' => $this->name, + 'apiVersion' => $this->apiVersion, + 'baseUrl' => $this->baseUrl, + 'description' => $this->description + ) + $this->extraData; + $result['operations'] = array(); + foreach ($this->getOperations() as $name => $operation) { + $result['operations'][$operation->getName() ?: $name] = $operation->toArray(); + } + if (!empty($this->models)) { + $result['models'] = array(); + foreach ($this->models as $id => $model) { + $result['models'][$id] = $model instanceof Parameter ? $model->toArray(): $model; + } + } + + return array_filter($result); + } + + public function getBaseUrl() + { + return $this->baseUrl; + } + + /** + * Set the baseUrl of the description + * + * @param string $baseUrl Base URL of each operation + * + * @return self + */ + public function setBaseUrl($baseUrl) + { + $this->baseUrl = $baseUrl; + + return $this; + } + + public function getOperations() + { + foreach (array_keys($this->operations) as $name) { + $this->getOperation($name); + } + + return $this->operations; + } + + public function hasOperation($name) + { + return isset($this->operations[$name]); + } + + public function getOperation($name) + { + // Lazily retrieve and build operations + if (!isset($this->operations[$name])) { + return null; + } + + if (!($this->operations[$name] instanceof Operation)) { + $this->operations[$name] = new Operation($this->operations[$name], $this); + } + + return $this->operations[$name]; + } + + /** + * Add a operation to the service description + * + * @param OperationInterface $operation Operation to add + * + * @return self + */ + public function addOperation(OperationInterface $operation) + { + $this->operations[$operation->getName()] = $operation->setServiceDescription($this); + + return $this; + } + + public function getModel($id) + { + if (!isset($this->models[$id])) { + return null; + } + + if (!($this->models[$id] instanceof Parameter)) { + $this->models[$id] = new Parameter($this->models[$id] + array('name' => $id), $this); + } + + return $this->models[$id]; + } + + public function getModels() + { + // Ensure all models are converted into parameter objects + foreach (array_keys($this->models) as $id) { + $this->getModel($id); + } + + return $this->models; + } + + public function hasModel($id) + { + return isset($this->models[$id]); + } + + /** + * Add a model to the service description + * + * @param Parameter $model Model to add + * + * @return self + */ + public function addModel(Parameter $model) + { + $this->models[$model->getName()] = $model; + + return $this; + } + + public function getApiVersion() + { + return $this->apiVersion; + } + + public function getName() + { + return $this->name; + } + + public function getDescription() + { + return $this->description; + } + + public function getData($key) + { + return isset($this->extraData[$key]) ? $this->extraData[$key] : null; + } + + public function setData($key, $value) + { + $this->extraData[$key] = $value; + + return $this; + } + + /** + * Initialize the state from an array + * + * @param array $config Configuration data + * @throws InvalidArgumentException + */ + protected function fromArray(array $config) + { + // Keep a list of default keys used in service descriptions that is later used to determine extra data keys + static $defaultKeys = array('name', 'models', 'apiVersion', 'baseUrl', 'description'); + // Pull in the default configuration values + foreach ($defaultKeys as $key) { + if (isset($config[$key])) { + $this->{$key} = $config[$key]; + } + } + + // Account for the Swagger name for Guzzle's baseUrl + if (isset($config['basePath'])) { + $this->baseUrl = $config['basePath']; + } + + // Ensure that the models and operations properties are always arrays + $this->models = (array) $this->models; + $this->operations = (array) $this->operations; + + // We want to add operations differently than adding the other properties + $defaultKeys[] = 'operations'; + + // Create operations for each operation + if (isset($config['operations'])) { + foreach ($config['operations'] as $name => $operation) { + if (!($operation instanceof Operation) && !is_array($operation)) { + throw new InvalidArgumentException('Invalid operation in service description: ' + . gettype($operation)); + } + $this->operations[$name] = $operation; + } + } + + // Get all of the additional properties of the service description and store them in a data array + foreach (array_diff(array_keys($config), $defaultKeys) as $key) { + $this->extraData[$key] = $config[$key]; + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Description/ServiceDescriptionInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Description/ServiceDescriptionInterface.php new file mode 100644 index 0000000..5983e58 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Description/ServiceDescriptionInterface.php @@ -0,0 +1,106 @@ + $op) { + $name = $op['name'] = isset($op['name']) ? $op['name'] : $name; + // Extend other operations + if (!empty($op['extends'])) { + $this->resolveExtension($name, $op, $operations); + } + $op['parameters'] = isset($op['parameters']) ? $op['parameters'] : array(); + $operations[$name] = $op; + } + } + + return new ServiceDescription(array( + 'apiVersion' => isset($config['apiVersion']) ? $config['apiVersion'] : null, + 'baseUrl' => isset($config['baseUrl']) ? $config['baseUrl'] : null, + 'description' => isset($config['description']) ? $config['description'] : null, + 'operations' => $operations, + 'models' => isset($config['models']) ? $config['models'] : null + ) + $config); + } + + /** + * @param string $name Name of the operation + * @param array $op Operation value array + * @param array $operations Currently loaded operations + * @throws DescriptionBuilderException when extending a non-existent operation + */ + protected function resolveExtension($name, array &$op, array &$operations) + { + $resolved = array(); + $original = empty($op['parameters']) ? false: $op['parameters']; + $hasClass = !empty($op['class']); + foreach ((array) $op['extends'] as $extendedCommand) { + if (empty($operations[$extendedCommand])) { + throw new DescriptionBuilderException("{$name} extends missing operation {$extendedCommand}"); + } + $toArray = $operations[$extendedCommand]; + $resolved = empty($resolved) + ? $toArray['parameters'] + : array_merge($resolved, $toArray['parameters']); + + $op = $op + $toArray; + if (!$hasClass && isset($toArray['class'])) { + $op['class'] = $toArray['class']; + } + } + $op['parameters'] = $original ? array_merge($resolved, $original) : $resolved; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Description/ValidatorInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Description/ValidatorInterface.php new file mode 100644 index 0000000..94ca77d --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Description/ValidatorInterface.php @@ -0,0 +1,28 @@ +getMessage(), $e->getCode(), $e->getPrevious()); + $ce->setSuccessfulRequests($e->getSuccessfulRequests()); + + $alreadyAddedExceptions = array(); + foreach ($e->getFailedRequests() as $request) { + if ($re = $e->getExceptionForFailedRequest($request)) { + $alreadyAddedExceptions[] = $re; + $ce->addFailedRequestWithException($request, $re); + } else { + $ce->addFailedRequest($request); + } + } + + // Add any exceptions that did not map to a request + if (count($alreadyAddedExceptions) < count($e)) { + foreach ($e as $ex) { + if (!in_array($ex, $alreadyAddedExceptions)) { + $ce->add($ex); + } + } + } + + return $ce; + } + + /** + * Get all of the commands in the transfer + * + * @return array + */ + public function getAllCommands() + { + return array_merge($this->successfulCommands, $this->failedCommands); + } + + /** + * Add to the array of successful commands + * + * @param CommandInterface $command Successful command + * + * @return self + */ + public function addSuccessfulCommand(CommandInterface $command) + { + $this->successfulCommands[] = $command; + + return $this; + } + + /** + * Add to the array of failed commands + * + * @param CommandInterface $command Failed command + * + * @return self + */ + public function addFailedCommand(CommandInterface $command) + { + $this->failedCommands[] = $command; + + return $this; + } + + /** + * Get an array of successful commands + * + * @return array + */ + public function getSuccessfulCommands() + { + return $this->successfulCommands; + } + + /** + * Get an array of failed commands + * + * @return array + */ + public function getFailedCommands() + { + return $this->failedCommands; + } + + /** + * Get the Exception that caused the given $command to fail + * + * @param CommandInterface $command Failed command + * + * @return \Exception|null + */ + public function getExceptionForFailedCommand(CommandInterface $command) + { + return $this->getExceptionForFailedRequest($command->getRequest()); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Exception/DescriptionBuilderException.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Exception/DescriptionBuilderException.php new file mode 100644 index 0000000..1407e56 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Exception/DescriptionBuilderException.php @@ -0,0 +1,7 @@ +invalidCommands = $commands; + parent::__construct( + 'Encountered commands in a batch transfer that use inconsistent clients. The batching ' . + 'strategy you use with a command transfer must divide command batches by client.' + ); + } + + /** + * Get the invalid commands + * + * @return array + */ + public function getCommands() + { + return $this->invalidCommands; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Exception/ResponseClassException.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Exception/ResponseClassException.php new file mode 100644 index 0000000..d59ff21 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Exception/ResponseClassException.php @@ -0,0 +1,9 @@ +errors = $errors; + } + + /** + * Get any validation errors + * + * @return array + */ + public function getErrors() + { + return $this->errors; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Resource/AbstractResourceIteratorFactory.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Resource/AbstractResourceIteratorFactory.php new file mode 100644 index 0000000..21140e7 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Resource/AbstractResourceIteratorFactory.php @@ -0,0 +1,37 @@ +canBuild($command)) { + throw new InvalidArgumentException('Iterator was not found for ' . $command->getName()); + } + + $className = $this->getClassName($command); + + return new $className($command, $options); + } + + public function canBuild(CommandInterface $command) + { + return (bool) $this->getClassName($command); + } + + /** + * Get the name of the class to instantiate for the command + * + * @param CommandInterface $command Command that is associated with the iterator + * + * @return string + */ + abstract protected function getClassName(CommandInterface $command); +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Resource/CompositeResourceIteratorFactory.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Resource/CompositeResourceIteratorFactory.php new file mode 100644 index 0000000..2efc133 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Resource/CompositeResourceIteratorFactory.php @@ -0,0 +1,67 @@ +factories = $factories; + } + + public function build(CommandInterface $command, array $options = array()) + { + if (!($factory = $this->getFactory($command))) { + throw new InvalidArgumentException('Iterator was not found for ' . $command->getName()); + } + + return $factory->build($command, $options); + } + + public function canBuild(CommandInterface $command) + { + return $this->getFactory($command) !== false; + } + + /** + * Add a factory to the composite factory + * + * @param ResourceIteratorFactoryInterface $factory Factory to add + * + * @return self + */ + public function addFactory(ResourceIteratorFactoryInterface $factory) + { + $this->factories[] = $factory; + + return $this; + } + + /** + * Get the factory that matches the command object + * + * @param CommandInterface $command Command retrieving the iterator for + * + * @return ResourceIteratorFactoryInterface|bool + */ + protected function getFactory(CommandInterface $command) + { + foreach ($this->factories as $factory) { + if ($factory->canBuild($command)) { + return $factory; + } + } + + return false; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Resource/MapResourceIteratorFactory.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Resource/MapResourceIteratorFactory.php new file mode 100644 index 0000000..c71ca9d --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Resource/MapResourceIteratorFactory.php @@ -0,0 +1,34 @@ +map = $map; + } + + public function getClassName(CommandInterface $command) + { + $className = $command->getName(); + + if (isset($this->map[$className])) { + return $this->map[$className]; + } elseif (isset($this->map['*'])) { + // If a wildcard was added, then always use that + return $this->map['*']; + } + + return null; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Resource/Model.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Resource/Model.php new file mode 100644 index 0000000..2322434 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Resource/Model.php @@ -0,0 +1,64 @@ +data = $data; + $this->structure = $structure; + } + + /** + * Get the structure of the model + * + * @return Parameter + */ + public function getStructure() + { + return $this->structure ?: new Parameter(); + } + + /** + * Provides debug information about the model object + * + * @return string + */ + public function __toString() + { + $output = 'Debug output of '; + if ($this->structure) { + $output .= $this->structure->getName() . ' '; + } + $output .= 'model'; + $output = str_repeat('=', strlen($output)) . "\n" . $output . "\n" . str_repeat('=', strlen($output)) . "\n\n"; + $output .= "Model data\n-----------\n\n"; + $output .= "This data can be retrieved from the model object using the get() method of the model " + . "(e.g. \$model->get(\$key)) or accessing the model like an associative array (e.g. \$model['key']).\n\n"; + $lines = array_slice(explode("\n", trim(print_r($this->toArray(), true))), 2, -1); + $output .= implode("\n", $lines); + + if ($this->structure) { + $output .= "\n\nModel structure\n---------------\n\n"; + $output .= "The following JSON document defines how the model was parsed from an HTTP response into the " + . "associative array structure you see above.\n\n"; + $output .= ' ' . json_encode($this->structure->toArray()) . "\n\n"; + } + + return $output . "\n"; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIterator.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIterator.php new file mode 100644 index 0000000..e141524 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIterator.php @@ -0,0 +1,254 @@ +originalCommand = $command; + + // Parse options from the array of options + $this->data = $data; + $this->limit = array_key_exists('limit', $data) ? $data['limit'] : 0; + $this->pageSize = array_key_exists('page_size', $data) ? $data['page_size'] : false; + } + + /** + * Get all of the resources as an array (Warning: this could issue a large number of requests) + * + * @return array + */ + public function toArray() + { + return iterator_to_array($this, false); + } + + public function setLimit($limit) + { + $this->limit = $limit; + $this->resetState(); + + return $this; + } + + public function setPageSize($pageSize) + { + $this->pageSize = $pageSize; + $this->resetState(); + + return $this; + } + + /** + * Get an option from the iterator + * + * @param string $key Key of the option to retrieve + * + * @return mixed|null Returns NULL if not set or the value if set + */ + public function get($key) + { + return array_key_exists($key, $this->data) ? $this->data[$key] : null; + } + + /** + * Set an option on the iterator + * + * @param string $key Key of the option to set + * @param mixed $value Value to set for the option + * + * @return ResourceIterator + */ + public function set($key, $value) + { + $this->data[$key] = $value; + + return $this; + } + + public function current() + { + return $this->resources ? current($this->resources) : false; + } + + public function key() + { + return max(0, $this->iteratedCount - 1); + } + + public function count() + { + return $this->retrievedCount; + } + + /** + * Get the total number of requests sent + * + * @return int + */ + public function getRequestCount() + { + return $this->requestCount; + } + + /** + * Rewind the Iterator to the first element and send the original command + */ + public function rewind() + { + // Use the original command + $this->command = clone $this->originalCommand; + $this->resetState(); + $this->next(); + } + + public function valid() + { + return !$this->invalid && (!$this->resources || $this->current() || $this->nextToken) + && (!$this->limit || $this->iteratedCount < $this->limit + 1); + } + + public function next() + { + $this->iteratedCount++; + + // Check if a new set of resources needs to be retrieved + $sendRequest = false; + if (!$this->resources) { + $sendRequest = true; + } else { + // iterate over the internal array + $current = next($this->resources); + $sendRequest = $current === false && $this->nextToken && (!$this->limit || $this->iteratedCount < $this->limit + 1); + } + + if ($sendRequest) { + + $this->dispatch('resource_iterator.before_send', array( + 'iterator' => $this, + 'resources' => $this->resources + )); + + // Get a new command object from the original command + $this->command = clone $this->originalCommand; + // Send a request and retrieve the newly loaded resources + $this->resources = $this->sendRequest(); + $this->requestCount++; + + // If no resources were found, then the last request was not needed + // and iteration must stop + if (empty($this->resources)) { + $this->invalid = true; + } else { + // Add to the number of retrieved resources + $this->retrievedCount += count($this->resources); + // Ensure that we rewind to the beginning of the array + reset($this->resources); + } + + $this->dispatch('resource_iterator.after_send', array( + 'iterator' => $this, + 'resources' => $this->resources + )); + } + } + + /** + * Retrieve the NextToken that can be used in other iterators. + * + * @return string Returns a NextToken + */ + public function getNextToken() + { + return $this->nextToken; + } + + /** + * Returns the value that should be specified for the page size for a request that will maintain any hard limits, + * but still honor the specified pageSize if the number of items retrieved + pageSize < hard limit + * + * @return int Returns the page size of the next request. + */ + protected function calculatePageSize() + { + if ($this->limit && $this->iteratedCount + $this->pageSize > $this->limit) { + return 1 + ($this->limit - $this->iteratedCount); + } + + return (int) $this->pageSize; + } + + /** + * Reset the internal state of the iterator without triggering a rewind() + */ + protected function resetState() + { + $this->iteratedCount = 0; + $this->retrievedCount = 0; + $this->nextToken = false; + $this->resources = null; + $this->invalid = false; + } + + /** + * Send a request to retrieve the next page of results. Hook for subclasses to implement. + * + * @return array Returns the newly loaded resources + */ + abstract protected function sendRequest(); +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIteratorApplyBatched.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIteratorApplyBatched.php new file mode 100644 index 0000000..6aa3615 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIteratorApplyBatched.php @@ -0,0 +1,111 @@ +iterator = $iterator; + $this->callback = $callback; + Version::warn(__CLASS__ . ' is deprecated'); + } + + /** + * Apply the callback to the contents of the resource iterator + * + * @param int $perBatch The number of records to group per batch transfer + * + * @return int Returns the number of iterated resources + */ + public function apply($perBatch = 50) + { + $this->iterated = $this->batches = $batches = 0; + $that = $this; + $it = $this->iterator; + $callback = $this->callback; + + $batch = BatchBuilder::factory() + ->createBatchesWith(new BatchSizeDivisor($perBatch)) + ->transferWith(new BatchClosureTransfer(function (array $batch) use ($that, $callback, &$batches, $it) { + $batches++; + $that->dispatch('iterator_batch.before_batch', array('iterator' => $it, 'batch' => $batch)); + call_user_func_array($callback, array($it, $batch)); + $that->dispatch('iterator_batch.after_batch', array('iterator' => $it, 'batch' => $batch)); + })) + ->autoFlushAt($perBatch) + ->build(); + + $this->dispatch('iterator_batch.created_batch', array('batch' => $batch)); + + foreach ($this->iterator as $resource) { + $this->iterated++; + $batch->add($resource); + } + + $batch->flush(); + $this->batches = $batches; + + return $this->iterated; + } + + /** + * Get the total number of batches sent + * + * @return int + */ + public function getBatchCount() + { + return $this->batches; + } + + /** + * Get the total number of iterated resources + * + * @return int + */ + public function getIteratedCount() + { + return $this->iterated; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIteratorClassFactory.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIteratorClassFactory.php new file mode 100644 index 0000000..2fd9980 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIteratorClassFactory.php @@ -0,0 +1,60 @@ + AbcFoo). + */ +class ResourceIteratorClassFactory extends AbstractResourceIteratorFactory +{ + /** @var array List of namespaces used to look for classes */ + protected $namespaces; + + /** @var InflectorInterface Inflector used to determine class names */ + protected $inflector; + + /** + * @param string|array $namespaces List of namespaces for iterator objects + * @param InflectorInterface $inflector Inflector used to resolve class names + */ + public function __construct($namespaces = array(), InflectorInterface $inflector = null) + { + $this->namespaces = (array) $namespaces; + $this->inflector = $inflector ?: Inflector::getDefault(); + } + + /** + * Registers a namespace to check for Iterators + * + * @param string $namespace Namespace which contains Iterator classes + * + * @return self + */ + public function registerNamespace($namespace) + { + array_unshift($this->namespaces, $namespace); + + return $this; + } + + protected function getClassName(CommandInterface $command) + { + $iteratorName = $this->inflector->camel($command->getName()) . 'Iterator'; + + // Determine the name of the class to load + foreach ($this->namespaces as $namespace) { + $potentialClassName = $namespace . '\\' . $iteratorName; + if (class_exists($potentialClassName)) { + return $potentialClassName; + } + } + + return false; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIteratorFactoryInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIteratorFactoryInterface.php new file mode 100644 index 0000000..8b4e8db --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Resource/ResourceIteratorFactoryInterface.php @@ -0,0 +1,30 @@ +=5.3.2", + "guzzle/cache": "self.version", + "guzzle/http": "self.version", + "guzzle/inflection": "self.version" + }, + "autoload": { + "psr-0": { "Guzzle\\Service": "" } + }, + "target-dir": "Guzzle/Service", + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Stream/PhpStreamRequestFactory.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Stream/PhpStreamRequestFactory.php new file mode 100644 index 0000000..d115fd8 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Stream/PhpStreamRequestFactory.php @@ -0,0 +1,284 @@ +contextOptions = stream_context_get_options($context); + $this->context = $context; + } elseif (is_array($context) || !$context) { + $this->contextOptions = $context; + $this->createContext($params); + } elseif ($context) { + throw new InvalidArgumentException('$context must be an array or resource'); + } + + // Dispatch the before send event + $request->dispatch('request.before_send', array( + 'request' => $request, + 'context' => $this->context, + 'context_options' => $this->contextOptions + )); + + $this->setUrl($request); + $this->addDefaultContextOptions($request); + $this->addSslOptions($request); + $this->addBodyOptions($request); + $this->addProxyOptions($request); + + // Create the file handle but silence errors + return $this->createStream($params) + ->setCustomData('request', $request) + ->setCustomData('response_headers', $this->getLastResponseHeaders()); + } + + /** + * Set an option on the context and the internal options array + * + * @param string $wrapper Stream wrapper name of http + * @param string $name Context name + * @param mixed $value Context value + * @param bool $overwrite Set to true to overwrite an existing value + */ + protected function setContextValue($wrapper, $name, $value, $overwrite = false) + { + if (!isset($this->contextOptions[$wrapper])) { + $this->contextOptions[$wrapper] = array($name => $value); + } elseif (!$overwrite && isset($this->contextOptions[$wrapper][$name])) { + return; + } + $this->contextOptions[$wrapper][$name] = $value; + stream_context_set_option($this->context, $wrapper, $name, $value); + } + + /** + * Create a stream context + * + * @param array $params Parameter array + */ + protected function createContext(array $params) + { + $options = $this->contextOptions; + $this->context = $this->createResource(function () use ($params, $options) { + return stream_context_create($options, $params); + }); + } + + /** + * Get the last response headers received by the HTTP request + * + * @return array + */ + public function getLastResponseHeaders() + { + return $this->lastResponseHeaders; + } + + /** + * Adds the default context options to the stream context options + * + * @param RequestInterface $request Request + */ + protected function addDefaultContextOptions(RequestInterface $request) + { + $this->setContextValue('http', 'method', $request->getMethod()); + $headers = $request->getHeaderLines(); + + // "Connection: close" is required to get streams to work in HTTP 1.1 + if (!$request->hasHeader('Connection')) { + $headers[] = 'Connection: close'; + } + + $this->setContextValue('http', 'header', $headers); + $this->setContextValue('http', 'protocol_version', $request->getProtocolVersion()); + $this->setContextValue('http', 'ignore_errors', true); + } + + /** + * Set the URL to use with the factory + * + * @param RequestInterface $request Request that owns the URL + */ + protected function setUrl(RequestInterface $request) + { + $this->url = $request->getUrl(true); + + // Check for basic Auth username + if ($request->getUsername()) { + $this->url->setUsername($request->getUsername()); + } + + // Check for basic Auth password + if ($request->getPassword()) { + $this->url->setPassword($request->getPassword()); + } + } + + /** + * Add SSL options to the stream context + * + * @param RequestInterface $request Request + */ + protected function addSslOptions(RequestInterface $request) + { + if ($request->getCurlOptions()->get(CURLOPT_SSL_VERIFYPEER)) { + $this->setContextValue('ssl', 'verify_peer', true, true); + if ($cafile = $request->getCurlOptions()->get(CURLOPT_CAINFO)) { + $this->setContextValue('ssl', 'cafile', $cafile, true); + } + } else { + $this->setContextValue('ssl', 'verify_peer', false, true); + } + } + + /** + * Add body (content) specific options to the context options + * + * @param RequestInterface $request + */ + protected function addBodyOptions(RequestInterface $request) + { + // Add the content for the request if needed + if (!($request instanceof EntityEnclosingRequestInterface)) { + return; + } + + if (count($request->getPostFields())) { + $this->setContextValue('http', 'content', (string) $request->getPostFields(), true); + } elseif ($request->getBody()) { + $this->setContextValue('http', 'content', (string) $request->getBody(), true); + } + + // Always ensure a content-length header is sent + if (isset($this->contextOptions['http']['content'])) { + $headers = isset($this->contextOptions['http']['header']) ? $this->contextOptions['http']['header'] : array(); + $headers[] = 'Content-Length: ' . strlen($this->contextOptions['http']['content']); + $this->setContextValue('http', 'header', $headers, true); + } + } + + /** + * Add proxy parameters to the context if needed + * + * @param RequestInterface $request Request + */ + protected function addProxyOptions(RequestInterface $request) + { + if ($proxy = $request->getCurlOptions()->get(CURLOPT_PROXY)) { + $this->setContextValue('http', 'proxy', $proxy); + } + } + + /** + * Create the stream for the request with the context options + * + * @param array $params Parameters of the stream + * + * @return StreamInterface + */ + protected function createStream(array $params) + { + $http_response_header = null; + $url = $this->url; + $context = $this->context; + $fp = $this->createResource(function () use ($context, $url, &$http_response_header) { + return fopen((string) $url, 'r', false, $context); + }); + + // Determine the class to instantiate + $className = isset($params['stream_class']) ? $params['stream_class'] : __NAMESPACE__ . '\\Stream'; + + /** @var $stream StreamInterface */ + $stream = new $className($fp); + + // Track the response headers of the request + if (isset($http_response_header)) { + $this->lastResponseHeaders = $http_response_header; + $this->processResponseHeaders($stream); + } + + return $stream; + } + + /** + * Process response headers + * + * @param StreamInterface $stream + */ + protected function processResponseHeaders(StreamInterface $stream) + { + // Set the size on the stream if it was returned in the response + foreach ($this->lastResponseHeaders as $header) { + if ((stripos($header, 'Content-Length:')) === 0) { + $stream->setSize(trim(substr($header, 15))); + } + } + } + + /** + * Create a resource and check to ensure it was created successfully + * + * @param callable $callback Closure to invoke that must return a valid resource + * + * @return resource + * @throws RuntimeException on error + */ + protected function createResource($callback) + { + $errors = null; + set_error_handler(function ($_, $msg, $file, $line) use (&$errors) { + $errors[] = array( + 'message' => $msg, + 'file' => $file, + 'line' => $line + ); + return true; + }); + $resource = call_user_func($callback); + restore_error_handler(); + + if (!$resource) { + $message = 'Error creating resource. '; + foreach ($errors as $err) { + foreach ($err as $key => $value) { + $message .= "[$key] $value" . PHP_EOL; + } + } + throw new RuntimeException(trim($message)); + } + + return $resource; + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Stream/Stream.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Stream/Stream.php new file mode 100644 index 0000000..12bed26 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Stream/Stream.php @@ -0,0 +1,289 @@ + array( + 'r' => true, 'w+' => true, 'r+' => true, 'x+' => true, 'c+' => true, + 'rb' => true, 'w+b' => true, 'r+b' => true, 'x+b' => true, 'c+b' => true, + 'rt' => true, 'w+t' => true, 'r+t' => true, 'x+t' => true, 'c+t' => true, 'a+' => true + ), + 'write' => array( + 'w' => true, 'w+' => true, 'rw' => true, 'r+' => true, 'x+' => true, 'c+' => true, + 'wb' => true, 'w+b' => true, 'r+b' => true, 'x+b' => true, 'c+b' => true, + 'w+t' => true, 'r+t' => true, 'x+t' => true, 'c+t' => true, 'a' => true, 'a+' => true + ) + ); + + /** + * @param resource $stream Stream resource to wrap + * @param int $size Size of the stream in bytes. Only pass if the size cannot be obtained from the stream. + * + * @throws InvalidArgumentException if the stream is not a stream resource + */ + public function __construct($stream, $size = null) + { + $this->setStream($stream, $size); + } + + /** + * Closes the stream when the helper is destructed + */ + public function __destruct() + { + $this->close(); + } + + public function __toString() + { + if (!$this->isReadable() || (!$this->isSeekable() && $this->isConsumed())) { + return ''; + } + + $originalPos = $this->ftell(); + $body = stream_get_contents($this->stream, -1, 0); + $this->seek($originalPos); + + return $body; + } + + public function close() + { + if (is_resource($this->stream)) { + fclose($this->stream); + } + $this->cache[self::IS_READABLE] = false; + $this->cache[self::IS_WRITABLE] = false; + } + + /** + * Calculate a hash of a Stream + * + * @param StreamInterface $stream Stream to calculate the hash for + * @param string $algo Hash algorithm (e.g. md5, crc32, etc) + * @param bool $rawOutput Whether or not to use raw output + * + * @return bool|string Returns false on failure or a hash string on success + */ + public static function getHash(StreamInterface $stream, $algo, $rawOutput = false) + { + $pos = $stream->ftell(); + if (!$stream->seek(0)) { + return false; + } + + $ctx = hash_init($algo); + while (!$stream->feof()) { + hash_update($ctx, $stream->read(8192)); + } + + $out = hash_final($ctx, (bool) $rawOutput); + $stream->seek($pos); + + return $out; + } + + public function getMetaData($key = null) + { + $meta = stream_get_meta_data($this->stream); + + return !$key ? $meta : (array_key_exists($key, $meta) ? $meta[$key] : null); + } + + public function getStream() + { + return $this->stream; + } + + public function setStream($stream, $size = null) + { + if (!is_resource($stream)) { + throw new InvalidArgumentException('Stream must be a resource'); + } + + $this->size = $size; + $this->stream = $stream; + $this->rebuildCache(); + + return $this; + } + + public function detachStream() + { + $this->stream = null; + + return $this; + } + + public function getWrapper() + { + return $this->cache[self::WRAPPER_TYPE]; + } + + public function getWrapperData() + { + return $this->getMetaData('wrapper_data') ?: array(); + } + + public function getStreamType() + { + return $this->cache[self::STREAM_TYPE]; + } + + public function getUri() + { + return $this->cache['uri']; + } + + public function getSize() + { + if ($this->size !== null) { + return $this->size; + } + + // If the stream is a file based stream and local, then use fstat + clearstatcache(true, $this->cache['uri']); + $stats = fstat($this->stream); + if (isset($stats['size'])) { + $this->size = $stats['size']; + return $this->size; + } elseif ($this->cache[self::IS_READABLE] && $this->cache[self::SEEKABLE]) { + // Only get the size based on the content if the the stream is readable and seekable + $pos = $this->ftell(); + $this->size = strlen((string) $this); + $this->seek($pos); + return $this->size; + } + + return false; + } + + public function isReadable() + { + return $this->cache[self::IS_READABLE]; + } + + public function isRepeatable() + { + return $this->cache[self::IS_READABLE] && $this->cache[self::SEEKABLE]; + } + + public function isWritable() + { + return $this->cache[self::IS_WRITABLE]; + } + + public function isConsumed() + { + return feof($this->stream); + } + + public function feof() + { + return $this->isConsumed(); + } + + public function isLocal() + { + return $this->cache[self::IS_LOCAL]; + } + + public function isSeekable() + { + return $this->cache[self::SEEKABLE]; + } + + public function setSize($size) + { + $this->size = $size; + + return $this; + } + + public function seek($offset, $whence = SEEK_SET) + { + return $this->cache[self::SEEKABLE] ? fseek($this->stream, $offset, $whence) === 0 : false; + } + + public function read($length) + { + return fread($this->stream, $length); + } + + public function write($string) + { + // We can't know the size after writing anything + $this->size = null; + + return fwrite($this->stream, $string); + } + + public function ftell() + { + return ftell($this->stream); + } + + public function rewind() + { + return $this->seek(0); + } + + public function readLine($maxLength = null) + { + if (!$this->cache[self::IS_READABLE]) { + return false; + } else { + return $maxLength ? fgets($this->getStream(), $maxLength) : fgets($this->getStream()); + } + } + + public function setCustomData($key, $value) + { + $this->customData[$key] = $value; + + return $this; + } + + public function getCustomData($key) + { + return isset($this->customData[$key]) ? $this->customData[$key] : null; + } + + /** + * Reprocess stream metadata + */ + protected function rebuildCache() + { + $this->cache = stream_get_meta_data($this->stream); + $this->cache[self::IS_LOCAL] = stream_is_local($this->stream); + $this->cache[self::IS_READABLE] = isset(self::$readWriteHash['read'][$this->cache['mode']]); + $this->cache[self::IS_WRITABLE] = isset(self::$readWriteHash['write'][$this->cache['mode']]); + } +} diff --git a/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Stream/StreamInterface.php b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Stream/StreamInterface.php new file mode 100644 index 0000000..6d7dc37 --- /dev/null +++ b/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Stream/StreamInterface.php @@ -0,0 +1,218 @@ +=5.3.2", + "guzzle/common": "self.version" + }, + "suggest": { + "guzzle/http": "To convert Guzzle request objects to PHP streams" + }, + "autoload": { + "psr-0": { "Guzzle\\Stream": "" } + }, + "target-dir": "Guzzle/Stream", + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + } +} diff --git a/plugins/updraftplus/vendor/psr/log/.gitignore b/plugins/updraftplus/vendor/psr/log/.gitignore new file mode 100644 index 0000000..22d0d82 --- /dev/null +++ b/plugins/updraftplus/vendor/psr/log/.gitignore @@ -0,0 +1 @@ +vendor diff --git a/plugins/updraftplus/vendor/psr/log/LICENSE b/plugins/updraftplus/vendor/psr/log/LICENSE new file mode 100644 index 0000000..474c952 --- /dev/null +++ b/plugins/updraftplus/vendor/psr/log/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2012 PHP Framework Interoperability Group + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/plugins/updraftplus/vendor/psr/log/Psr/Log/AbstractLogger.php b/plugins/updraftplus/vendor/psr/log/Psr/Log/AbstractLogger.php new file mode 100644 index 0000000..00f9034 --- /dev/null +++ b/plugins/updraftplus/vendor/psr/log/Psr/Log/AbstractLogger.php @@ -0,0 +1,120 @@ +log(LogLevel::EMERGENCY, $message, $context); + } + + /** + * Action must be taken immediately. + * + * Example: Entire website down, database unavailable, etc. This should + * trigger the SMS alerts and wake you up. + * + * @param string $message + * @param array $context + * @return null + */ + public function alert($message, array $context = array()) + { + $this->log(LogLevel::ALERT, $message, $context); + } + + /** + * Critical conditions. + * + * Example: Application component unavailable, unexpected exception. + * + * @param string $message + * @param array $context + * @return null + */ + public function critical($message, array $context = array()) + { + $this->log(LogLevel::CRITICAL, $message, $context); + } + + /** + * Runtime errors that do not require immediate action but should typically + * be logged and monitored. + * + * @param string $message + * @param array $context + * @return null + */ + public function error($message, array $context = array()) + { + $this->log(LogLevel::ERROR, $message, $context); + } + + /** + * Exceptional occurrences that are not errors. + * + * Example: Use of deprecated APIs, poor use of an API, undesirable things + * that are not necessarily wrong. + * + * @param string $message + * @param array $context + * @return null + */ + public function warning($message, array $context = array()) + { + $this->log(LogLevel::WARNING, $message, $context); + } + + /** + * Normal but significant events. + * + * @param string $message + * @param array $context + * @return null + */ + public function notice($message, array $context = array()) + { + $this->log(LogLevel::NOTICE, $message, $context); + } + + /** + * Interesting events. + * + * Example: User logs in, SQL logs. + * + * @param string $message + * @param array $context + * @return null + */ + public function info($message, array $context = array()) + { + $this->log(LogLevel::INFO, $message, $context); + } + + /** + * Detailed debug information. + * + * @param string $message + * @param array $context + * @return null + */ + public function debug($message, array $context = array()) + { + $this->log(LogLevel::DEBUG, $message, $context); + } +} diff --git a/plugins/updraftplus/vendor/psr/log/Psr/Log/InvalidArgumentException.php b/plugins/updraftplus/vendor/psr/log/Psr/Log/InvalidArgumentException.php new file mode 100644 index 0000000..67f852d --- /dev/null +++ b/plugins/updraftplus/vendor/psr/log/Psr/Log/InvalidArgumentException.php @@ -0,0 +1,7 @@ +logger = $logger; + } +} diff --git a/plugins/updraftplus/vendor/psr/log/Psr/Log/LoggerInterface.php b/plugins/updraftplus/vendor/psr/log/Psr/Log/LoggerInterface.php new file mode 100644 index 0000000..476bb96 --- /dev/null +++ b/plugins/updraftplus/vendor/psr/log/Psr/Log/LoggerInterface.php @@ -0,0 +1,114 @@ +log(LogLevel::EMERGENCY, $message, $context); + } + + /** + * Action must be taken immediately. + * + * Example: Entire website down, database unavailable, etc. This should + * trigger the SMS alerts and wake you up. + * + * @param string $message + * @param array $context + * @return null + */ + public function alert($message, array $context = array()) + { + $this->log(LogLevel::ALERT, $message, $context); + } + + /** + * Critical conditions. + * + * Example: Application component unavailable, unexpected exception. + * + * @param string $message + * @param array $context + * @return null + */ + public function critical($message, array $context = array()) + { + $this->log(LogLevel::CRITICAL, $message, $context); + } + + /** + * Runtime errors that do not require immediate action but should typically + * be logged and monitored. + * + * @param string $message + * @param array $context + * @return null + */ + public function error($message, array $context = array()) + { + $this->log(LogLevel::ERROR, $message, $context); + } + + /** + * Exceptional occurrences that are not errors. + * + * Example: Use of deprecated APIs, poor use of an API, undesirable things + * that are not necessarily wrong. + * + * @param string $message + * @param array $context + * @return null + */ + public function warning($message, array $context = array()) + { + $this->log(LogLevel::WARNING, $message, $context); + } + + /** + * Normal but significant events. + * + * @param string $message + * @param array $context + * @return null + */ + public function notice($message, array $context = array()) + { + $this->log(LogLevel::NOTICE, $message, $context); + } + + /** + * Interesting events. + * + * Example: User logs in, SQL logs. + * + * @param string $message + * @param array $context + * @return null + */ + public function info($message, array $context = array()) + { + $this->log(LogLevel::INFO, $message, $context); + } + + /** + * Detailed debug information. + * + * @param string $message + * @param array $context + * @return null + */ + public function debug($message, array $context = array()) + { + $this->log(LogLevel::DEBUG, $message, $context); + } + + /** + * Logs with an arbitrary level. + * + * @param mixed $level + * @param string $message + * @param array $context + * @return null + */ + abstract public function log($level, $message, array $context = array()); +} diff --git a/plugins/updraftplus/vendor/psr/log/Psr/Log/NullLogger.php b/plugins/updraftplus/vendor/psr/log/Psr/Log/NullLogger.php new file mode 100644 index 0000000..553a3c5 --- /dev/null +++ b/plugins/updraftplus/vendor/psr/log/Psr/Log/NullLogger.php @@ -0,0 +1,27 @@ +logger) { }` + * blocks. + */ +class NullLogger extends AbstractLogger +{ + /** + * Logs with an arbitrary level. + * + * @param mixed $level + * @param string $message + * @param array $context + * @return null + */ + public function log($level, $message, array $context = array()) + { + // noop + } +} diff --git a/plugins/updraftplus/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php b/plugins/updraftplus/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php new file mode 100644 index 0000000..a932815 --- /dev/null +++ b/plugins/updraftplus/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php @@ -0,0 +1,116 @@ + " + * + * Example ->error('Foo') would yield "error Foo" + * + * @return string[] + */ + abstract function getLogs(); + + public function testImplements() + { + $this->assertInstanceOf('Psr\Log\LoggerInterface', $this->getLogger()); + } + + /** + * @dataProvider provideLevelsAndMessages + */ + public function testLogsAtAllLevels($level, $message) + { + $logger = $this->getLogger(); + $logger->{$level}($message, array('user' => 'Bob')); + $logger->log($level, $message, array('user' => 'Bob')); + + $expected = array( + $level.' message of level '.$level.' with context: Bob', + $level.' message of level '.$level.' with context: Bob', + ); + $this->assertEquals($expected, $this->getLogs()); + } + + public function provideLevelsAndMessages() + { + return array( + LogLevel::EMERGENCY => array(LogLevel::EMERGENCY, 'message of level emergency with context: {user}'), + LogLevel::ALERT => array(LogLevel::ALERT, 'message of level alert with context: {user}'), + LogLevel::CRITICAL => array(LogLevel::CRITICAL, 'message of level critical with context: {user}'), + LogLevel::ERROR => array(LogLevel::ERROR, 'message of level error with context: {user}'), + LogLevel::WARNING => array(LogLevel::WARNING, 'message of level warning with context: {user}'), + LogLevel::NOTICE => array(LogLevel::NOTICE, 'message of level notice with context: {user}'), + LogLevel::INFO => array(LogLevel::INFO, 'message of level info with context: {user}'), + LogLevel::DEBUG => array(LogLevel::DEBUG, 'message of level debug with context: {user}'), + ); + } + + /** + * @expectedException Psr\Log\InvalidArgumentException + */ + public function testThrowsOnInvalidLevel() + { + $logger = $this->getLogger(); + $logger->log('invalid level', 'Foo'); + } + + public function testContextReplacement() + { + $logger = $this->getLogger(); + $logger->info('{Message {nothing} {user} {foo.bar} a}', array('user' => 'Bob', 'foo.bar' => 'Bar')); + + $expected = array('info {Message {nothing} Bob Bar a}'); + $this->assertEquals($expected, $this->getLogs()); + } + + public function testObjectCastToString() + { + $dummy = $this->getMock('Psr\Log\Test\DummyTest', array('__toString')); + $dummy->expects($this->once()) + ->method('__toString') + ->will($this->returnValue('DUMMY')); + + $this->getLogger()->warning($dummy); + } + + public function testContextCanContainAnything() + { + $context = array( + 'bool' => true, + 'null' => null, + 'string' => 'Foo', + 'int' => 0, + 'float' => 0.5, + 'nested' => array('with object' => new DummyTest), + 'object' => new \DateTime, + 'resource' => fopen('php://memory', 'r'), + ); + + $this->getLogger()->warning('Crazy context data', $context); + } + + public function testContextExceptionKeyCanBeExceptionOrOtherValues() + { + $this->getLogger()->warning('Random message', array('exception' => 'oops')); + $this->getLogger()->critical('Uncaught Exception!', array('exception' => new \LogicException('Fail'))); + } +} + +class DummyTest +{ +} \ No newline at end of file diff --git a/plugins/updraftplus/vendor/psr/log/README.md b/plugins/updraftplus/vendor/psr/log/README.md new file mode 100644 index 0000000..574bc1c --- /dev/null +++ b/plugins/updraftplus/vendor/psr/log/README.md @@ -0,0 +1,45 @@ +PSR Log +======= + +This repository holds all interfaces/classes/traits related to +[PSR-3](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md). + +Note that this is not a logger of its own. It is merely an interface that +describes a logger. See the specification for more details. + +Usage +----- + +If you need a logger, you can use the interface like this: + +```php +logger = $logger; + } + + public function doSomething() + { + if ($this->logger) { + $this->logger->info('Doing work'); + } + + // do something useful + } +} +``` + +You can then pick one of the implementations of the interface to get a logger. + +If you want to implement the interface, you can require this package and +implement `Psr\Log\LoggerInterface` in your code. Please read the +[specification text](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md) +for details. diff --git a/plugins/updraftplus/vendor/psr/log/composer.json b/plugins/updraftplus/vendor/psr/log/composer.json new file mode 100644 index 0000000..6bdcc21 --- /dev/null +++ b/plugins/updraftplus/vendor/psr/log/composer.json @@ -0,0 +1,17 @@ +{ + "name": "psr/log", + "description": "Common interface for logging libraries", + "keywords": ["psr", "psr-3", "log"], + "license": "MIT", + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "autoload": { + "psr-0": { + "Psr\\Log\\": "" + } + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/.coveralls.yml b/plugins/updraftplus/vendor/rackspace/php-opencloud/.coveralls.yml new file mode 100644 index 0000000..9136cbb --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/.coveralls.yml @@ -0,0 +1 @@ +src_dir: lib \ No newline at end of file diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/.gitignore b/plugins/updraftplus/vendor/rackspace/php-opencloud/.gitignore new file mode 100644 index 0000000..4c2f5e6 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/.gitignore @@ -0,0 +1,13 @@ +.idea/ +.local/ +.test/ +build/ +docs/api/ +vendor/ + +*.log +*.phar +.DS_Store +composer.lock +composer.phar +phpunit.xml \ No newline at end of file diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/.travis.yml b/plugins/updraftplus/vendor/rackspace/php-opencloud/.travis.yml new file mode 100644 index 0000000..bdd5f76 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/.travis.yml @@ -0,0 +1,36 @@ +language: php +php: + - "5.6" + - "5.5" + - "5.4" + - "5.3" + - hhvm + +sudo: false + +matrix: + allow_failures: + - php: hhvm + fast_finish: true + +branches: + only: + - master + - working + +before_script: + - composer install --prefer-source + - vendor/bin/parallel-lint --exclude vendor . + - vendor/bin/php-cs-fixer fix --dry-run --diff --level psr2 . + +after_script: + - php vendor/bin/coveralls -v + +notifications: + email: + - jamie.hannaford@rackspace.com + - glen.campbell@rackspace.com + - shaunak.kashyap@rackspace.com + +env: + - secure: "bdrUeYb3nSGgBB+QtDZxUHVPw6B/wjb3KXLm8TgonWrQm4GPeWKK29qhmDnFZmQjwQPfuebe7wAk1ZxGoZKbEiELVpJJ+8XYVOt6W/6V53H31JL6FqiIE5+7qBwDe+9ziveM6GcTXHT1GI5mUeACIbeBDPZaNubIJH3U6MPim64=" \ No newline at end of file diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/CONTRIBUTING.md b/plugins/updraftplus/vendor/rackspace/php-opencloud/CONTRIBUTING.md new file mode 100644 index 0000000..4764be8 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/CONTRIBUTING.md @@ -0,0 +1,73 @@ +Contributing to php-opencloud +----------------------------- + +Welcome! If you'd like to work on php-opencloud, we appreciate your +efforts. Here are a few general guidelines to follow: + +1. Use the `working` branch for your pull requests. Except in the case of + an emergency hotfix, we will only update `master` with official releases. + +2. All code needs to come with unit tests. If you're introducing new code, you + will need to write new test cases; if you're updating existing code, you will + need to make sure the methods you're updating are still completely covered. + +3. Please abide by [PSR-2 code styling](#ensuring-psr-2-coding-style-compliance). + +4. Explaining your pull requests is appreciated. Unless you're fixing a + minor typographical error, create a description which explains your changes + and, where relevant, references the existing issue you're hoping to fix. + +5. If your pull request introduces a large change or addition, please consider + creating a work-in-progress (WIP) pull request. This lets us review your changes + and provide feedback early and often rather than all at once when the entire pull + request is ready. To denote a pull request as WIP, simply add the "PR: Work In Progress" + label to it. When you are finished with your work in the pull request and + are ready for a final review and merge, please remove the "PR: Work In Progress" + label. + +6. Document your code! + +If you submit code, please add your name and email address to the +CONTRIBUTORS file. + +Test Instructions +----------------- + +### To run unit tests: +```bash +vendor/bin/phpunit +``` + +### To run the full suite of acceptance tests: +1. Make sure your [variables-order](http://www.php.net/manual/en/ini.core.php#ini.variables-order) is set to "EGCRS" +2. Set your *PHP_OpenCloud_USERNAME* and *PHP_OpenCloud_API_KEY* variables +3. Run: ```php tests/OpenCloud/Smoke/Runner.php``` + +## Conventions + +* When working on a `Service` class (e.g. [`OpenCloud\Image\Service`](/lib/OpenCloud/Image/Service.php), name methods like so: + + * Methods that return a single resource, say `Foo`, should be named `getFoo`. For example, [`getImage`](/lib/OpenCloud/Image/Service.php#L67). + * Methods that return a collection of resources, say `Foo`, should be named `listFoos`. For example, [`listImages`](/lib/OpenCloud/Image/Service.php#L53). + * Methods that create a new resource, say `Foo`, should be named `createFoo`. For example, [`createEntity`](/lib/OpenCloud/CloudMonitoring/Service.php#L105). + +* When validating arguments to a method, please throw `\InvalidArgumentException` when an invalid argument is found. For example, see [here](/lib/OpenCloud/LoadBalancer/Resource/LoadBalancer.php#L212-L215). + +## Ensuring PSR-2 coding style compliance + +The code in this library is compliant with the [PSR-2 Coding Style Guide](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md). To ensure that any code you contribute is also PSR-2 compliant, please run the following command from the base directory of this project _before_ submitting your contribution: + + $ vendor/bin/php-cs-fixer fix --level psr2 . + +Running this command will _change_ your code to become PSR-2 compliant. You will need to _commit_ these changes and make them part of your pull request. + +## Releasing a new version of php-opencloud +If you are a core contributor to php-opencloud, you have the power to release new versions of it. Here are the steps to follow to ensure a proper release: + +1. Update the value of the the [`VERSION` constant](/lib/OpenCloud/Version.php#L30). +2. Merge the `working` branch into the `master` branch. +3. [Run the smoke tests](#to-run-the-full-suite-of-acceptance-tests). If they fail, make necessary changes and go to step 2. +4. [Create new release notes](https://github.com/rackspace/php-opencloud/releases/new). +5. Publish release notes. +6. Announce release via appropriate channels. +7. Party :tada: :balloon: \ No newline at end of file diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/LICENSE b/plugins/updraftplus/vendor/rackspace/php-opencloud/LICENSE new file mode 100644 index 0000000..f7c5696 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/LICENSE @@ -0,0 +1,16 @@ + Copyright 2012-2013 Rackspace US, Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + All contributions to this repository are covered under the same license, + terms, and conditions. \ No newline at end of file diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/README.md b/plugins/updraftplus/vendor/rackspace/php-opencloud/README.md new file mode 100644 index 0000000..6031cf4 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/README.md @@ -0,0 +1,73 @@ +**php-opencloud** +============= +PHP SDK for OpenStack/Rackspace APIs + +[![Latest Stable Version](https://poser.pugx.org/rackspace/php-opencloud/v/stable.png)](https://packagist.org/packages/rackspace/php-opencloud) [![Travis CI](https://secure.travis-ci.org/rackspace/php-opencloud.png)](https://travis-ci.org/rackspace/php-opencloud) [![Total Downloads](https://poser.pugx.org/rackspace/php-opencloud/downloads.png)](https://packagist.org/packages/rackspace/php-opencloud) + +For SDKs in different languages, see http://developer.rackspace.com. + +The PHP SDK should work with most OpenStack-based cloud deployments, +though it specifically targets the Rackspace public cloud. In +general, whenever a Rackspace deployment is substantially different +than a pure OpenStack one, a separate Rackspace subclass is provided +so that you can still use the SDK with a pure OpenStack instance +(for example, see the `OpenStack` class (for OpenStack) and the +`Rackspace` subclass). + +Requirements +------------ +* PHP >=5.3.3 +* cURL extension for PHP + +Installation +------------ +You must install this library through Composer: + +```bash +# Install Composer +curl -sS https://getcomposer.org/installer | php + +# Require php-opencloud as a dependency +php composer.phar require rackspace/php-opencloud +``` + +Once you have installed the library, you will need to load Composer's autoloader (which registers all the required +namespaces). To do this, place the following line of PHP code at the top of your application's PHP files: + +```php +require 'vendor/autoload.php'; +``` + +**Note**: this assumes your application's PHP files are located in the same folder as `vendor/`. If your files are located +elsewhere, please supply the path to `vendor/autoload.php` in the `require` statement above. + +And you're ready to go! + +You can also check out the [Getting Started guide](docs/getting-started.md) for a quick tutorial. + +- - - + +Alternatively, if you would like to fork or clone the repository into a directory (to work and submit pull requests), +you will need to execute: + +```bash +php composer.phar install +``` + +Instead of the `require` command. You can also specify the `--no-dev` option if you do not want to install phpDocumentor +(which has lots of vendor folders). + +Support and Feedback +-------------------- +Your feedback is appreciated! If you have specific problems or bugs with this SDK, please file an issue on Github. We +also have a [mailing list](https://groups.google.com/forum/#!forum/php-opencloud), so feel free to join to keep up to +date with all the latest changes and announcements to the library. + +For general feedback and support requests, contact us at https://developer.rackspace.com/support/ + +You can also find assistance via IRC on #rackspace at freenode.net. + +Contributing +------------ +If you'd like to contribute to the project, or require help running the unit/acceptance tests, please view the +[contributing guidelines](https://github.com/rackspace/php-opencloud/blob/master/CONTRIBUTING.md). diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/apigen.neon b/plugins/updraftplus/vendor/rackspace/php-opencloud/apigen.neon new file mode 100644 index 0000000..1907d65 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/apigen.neon @@ -0,0 +1,3 @@ +templateTheme: bootstrap + +accessLevels: [public] diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/composer.json b/plugins/updraftplus/vendor/rackspace/php-opencloud/composer.json new file mode 100644 index 0000000..693e986 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/composer.json @@ -0,0 +1,40 @@ +{ + "name": "rackspace/php-opencloud", + "description": "PHP SDK for Rackspace/OpenStack APIs", + "keywords": ["rackspace", "openstack", "opencloud", "swift", "nova"], + "type": "library", + "license": "Apache-2.0", + "authors": [ + { + "name": "Jamie Hannaford", + "email": "jamie.hannaford@rackspace.com", + "homepage" : "https://github.com/jamiehannaford" + }, + { + "name": "Glen Campbell", + "email": "glen.campbell@rackspace.com" + }, + { + "name": "Shaunak Kashyap", + "email": "shaunak.kashyap@rackspace.com", + "homepage": "https://github.com/ycombinator" + } + ], + "autoload": { + "psr-0": { + "OpenCloud": ["lib/", "tests/"] + } + }, + "require": { + "php" : ">=5.3.3", + "guzzle/guzzle" : "~3.8", + "psr/log": "~1.0" + }, + "require-dev" : { + "phpunit/phpunit": "4.3.*", + "satooshi/php-coveralls": "0.6.*@dev", + "jakub-onderka/php-parallel-lint": "0.*", + "fabpot/php-cs-fixer": "1.0.*@dev", + "apigen/apigen": "~2.8" + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/ArrayAccess.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/ArrayAccess.php new file mode 100644 index 0000000..698c7ec --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/ArrayAccess.php @@ -0,0 +1,60 @@ +elements = (array) $data; + } + + /** + * Sets a value to a particular offset. + * + * @param mixed $offset + * @param mixed $value + */ + public function offsetSet($offset, $value) + { + if ($offset === null) { + $this->elements[] = $value; + } else { + $this->elements[$offset] = $value; + } + } + + /** + * Checks to see whether a particular offset key exists. + * + * @param mixed $offset + * @return bool + */ + public function offsetExists($offset) + { + return array_key_exists($offset, $this->elements); + } + + /** + * Unset a particular key. + * + * @param mixed $offset + */ + public function offsetUnset($offset) + { + unset($this->elements[$offset]); + } + + /** + * Get the value for a particular offset key. + * + * @param mixed $offset + * @return mixed|null + */ + public function offsetGet($offset) + { + return $this->offsetExists($offset) ? $this->elements[$offset] : null; + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Base.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Base.php new file mode 100644 index 0000000..076642a --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Base.php @@ -0,0 +1,430 @@ +propertyExists($property) && $prefix == 'get') { + return $this->getProperty($property); + } + + // Do setter + if ($this->propertyExists($property) && $prefix == 'set') { + return $this->setProperty($property, $args[0]); + } + + throw new Exceptions\RuntimeException(sprintf( + 'No method %s::%s()', + get_class($this), + $method + )); + } + + /** + * We can set a property under three conditions: + * + * 1. If it has a concrete setter: setProperty() + * 2. If the property exists + * 3. If the property name's prefix is in an approved list + * + * @param mixed $property + * @param mixed $value + * @return mixed + */ + protected function setProperty($property, $value) + { + $setter = 'set' . $this->toCamel($property); + + if (method_exists($this, $setter)) { + return call_user_func(array($this, $setter), $value); + } elseif (false !== ($propertyVal = $this->propertyExists($property))) { + // Are we setting a public or private property? + if ($this->isAccessible($propertyVal)) { + $this->$propertyVal = $value; + } else { + $this->properties[$propertyVal] = $value; + } + + return $this; + } else { + $this->getLogger()->warning( + 'Attempted to set {property} with value {value}, but the' + . ' property has not been defined. Please define first.', + array( + 'property' => $property, + 'value' => print_r($value, true) + ) + ); + } + } + + /** + * Basic check to see whether property exists. + * + * @param string $property The property name being investigated. + * @param bool $allowRetry If set to TRUE, the check will try to format the name in underscores because + * there are sometimes discrepancies between camelCaseNames and underscore_names. + * @return bool + */ + protected function propertyExists($property, $allowRetry = true) + { + if (!property_exists($this, $property) && !$this->checkAttributePrefix($property)) { + // Convert to under_score and retry + if ($allowRetry) { + return $this->propertyExists($this->toUnderscores($property), false); + } else { + $property = false; + } + } + + return $property; + } + + /** + * Convert a string to camelCase format. + * + * @param $string + * @param bool $capitalise Optional flag which allows for word capitalization. + * @return mixed + */ + public function toCamel($string, $capitalise = true) + { + if ($capitalise) { + $string = ucfirst($string); + } + + return preg_replace_callback('/_([a-z])/', function ($char) { + return strtoupper($char[1]); + }, $string); + } + + /** + * Convert string to underscore format. + * + * @param $string + * @return mixed + */ + public function toUnderscores($string) + { + $string = lcfirst($string); + + return preg_replace_callback('/([A-Z])/', function ($char) { + return "_" . strtolower($char[1]); + }, $string); + } + + /** + * Does the property exist in the object variable list (i.e. does it have public or protected visibility?) + * + * @param $property + * @return bool + */ + private function isAccessible($property) + { + return array_key_exists($property, get_object_vars($this)); + } + + /** + * Checks the attribute $property and only permits it if the prefix is + * in the specified $prefixes array + * + * This is to support extension namespaces in some services. + * + * @param string $property the name of the attribute + * @return boolean + */ + private function checkAttributePrefix($property) + { + if (!method_exists($this, 'getService')) { + return false; + } + $prefix = strstr($property, ':', true); + + return in_array($prefix, $this->getService()->namespaces()); + } + + /** + * Grab value out of the data array. + * + * @param string $property + * @return mixed + */ + protected function getProperty($property) + { + if (array_key_exists($property, $this->properties)) { + return $this->properties[$property]; + } elseif (array_key_exists($this->toUnderscores($property), $this->properties)) { + return $this->properties[$this->toUnderscores($property)]; + } elseif (method_exists($this, 'get' . ucfirst($property))) { + return call_user_func(array($this, 'get' . ucfirst($property))); + } elseif (false !== ($propertyVal = $this->propertyExists($property)) && $this->isAccessible($propertyVal)) { + return $this->$propertyVal; + } + + return null; + } + + /** + * Sets the logger. + * + * @param LoggerInterface $logger + * + * @return $this + */ + public function setLogger(LoggerInterface $logger = null) + { + $this->logger = $logger; + + return $this; + } + + /** + * Returns the Logger object. + * + * @return LoggerInterface + */ + public function getLogger() + { + if (null === $this->logger) { + $this->setLogger(new Log\Logger); + } + + return $this->logger; + } + + /** + * @return bool + */ + public function hasLogger() + { + return (null !== $this->logger); + } + + /** + * @deprecated + */ + public function url($path = null, array $query = array()) + { + return $this->getUrl($path, $query); + } + + /** + * Populates the current object based on an unknown data type. + * + * @param mixed $info + * @param bool + * @throws Exceptions\InvalidArgumentError + */ + public function populate($info, $setObjects = true) + { + if (is_string($info) || is_integer($info)) { + $this->setProperty($this->primaryKeyField(), $info); + $this->refresh($info); + } elseif (is_object($info) || is_array($info)) { + foreach ($info as $key => $value) { + if ($key == 'metadata' || $key == 'meta') { + // Try retrieving existing value + if (null === ($metadata = $this->getProperty($key))) { + // If none exists, create new object + $metadata = new Metadata; + } + + // Set values for metadata + $metadata->setArray($value); + + // Set object property + $this->setProperty($key, $metadata); + } elseif (!empty($this->associatedResources[$key]) && $setObjects === true) { + // Associated resource + try { + $resource = $this->getService()->resource($this->associatedResources[$key], $value); + $resource->setParent($this); + + $this->setProperty($key, $resource); + } catch (Exception\ServiceException $e) { + } + } elseif (!empty($this->associatedCollections[$key]) && $setObjects === true) { + // Associated collection + try { + $className = $this->associatedCollections[$key]; + $options = $this->makeResourceIteratorOptions($className); + $iterator = ResourceIterator::factory($this, $options, $value); + + $this->setProperty($key, $iterator); + } catch (Exception\ServiceException $e) { + } + } elseif (!empty($this->aliases[$key])) { + // Sometimes we might want to preserve camelCase + // or covert `rax-bandwidth:bandwidth` to `raxBandwidth` + $this->setProperty($this->aliases[$key], $value); + } else { + // Normal key/value pair + $this->setProperty($key, $value); + } + } + } elseif (null !== $info) { + throw new Exceptions\InvalidArgumentError(sprintf( + Lang::translate('Argument for [%s] must be string or object'), + get_class() + )); + } + } + + /** + * Checks the most recent JSON operation for errors. + * + * @throws Exceptions\JsonError + * @codeCoverageIgnore + */ + public static function checkJsonError() + { + switch (json_last_error()) { + case JSON_ERROR_NONE: + return; + case JSON_ERROR_DEPTH: + $jsonError = 'JSON error: The maximum stack depth has been exceeded'; + break; + case JSON_ERROR_STATE_MISMATCH: + $jsonError = 'JSON error: Invalid or malformed JSON'; + break; + case JSON_ERROR_CTRL_CHAR: + $jsonError = 'JSON error: Control character error, possibly incorrectly encoded'; + break; + case JSON_ERROR_SYNTAX: + $jsonError = 'JSON error: Syntax error'; + break; + case JSON_ERROR_UTF8: + $jsonError = 'JSON error: Malformed UTF-8 characters, possibly incorrectly encoded'; + break; + default: + $jsonError = 'Unexpected JSON error'; + break; + } + + if (isset($jsonError)) { + throw new JsonError(Lang::translate($jsonError)); + } + } + + public static function generateUuid() + { + return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x', + // 32 bits for "time_low" + mt_rand(0, 0xffff), mt_rand(0, 0xffff), + + // 16 bits for "time_mid" + mt_rand(0, 0xffff), + + // 16 bits for "time_hi_and_version", + // four most significant bits holds version number 4 + mt_rand(0, 0x0fff) | 0x4000, + + // 16 bits, 8 bits for "clk_seq_hi_res", + // 8 bits for "clk_seq_low", + // two most significant bits holds zero and one for variant DCE1.1 + mt_rand(0, 0x3fff) | 0x8000, + + // 48 bits for "node" + mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff) + ); + } + + public function makeResourceIteratorOptions($resource) + { + $options = array('resourceClass' => $this->stripNamespace($resource)); + + if (method_exists($resource, 'jsonCollectionName')) { + $options['key.collection'] = $resource::jsonCollectionName(); + } + + if (method_exists($resource, 'jsonCollectionElement')) { + $options['key.collectionElement'] = $resource::jsonCollectionElement(); + } + + return $options; + } + + public function stripNamespace($namespace) + { + $array = explode('\\', $namespace); + + return end($array); + } + + protected static function getJsonHeader() + { + return array(HeaderConst::CONTENT_TYPE => MimeConst::JSON); + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Collection.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Collection.php new file mode 100644 index 0000000..f15e83c --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Collection.php @@ -0,0 +1,423 @@ +getLogger()->warning(Logger::deprecated(__METHOD__, 'OpenCloud\Common\Collection\CollectionBuilder')); + + $this->setService($service); + + $this->setNextPageClass($class); + + // If they've supplied a FQCN, only get the last part + $class = (false !== ($classNamePos = strrpos($class, '\\'))) + ? substr($class, $classNamePos + 1) + : $class; + + $this->setItemClass($class); + + // Set data + $this->setItemList($array); + } + + /** + * Set the entire data array. + * + * @param array $array + */ + private function setItemList(array $array) + { + $this->itemList = $array; + + return $this; + } + + /** + * Retrieve the entire data array. + * + * @return array + */ + public function getItemList() + { + return $this->itemList; + } + + /** + * Set the service. + * + * @param Service|PersistentObject $service + */ + public function setService($service) + { + $this->service = $service; + + return $this; + } + + /** + * Retrieves the service associated with the Collection + * + * @return Service + */ + public function getService() + { + return $this->service; + } + + /** + * Set the resource class name. + */ + private function setItemClass($itemClass) + { + $this->itemClass = $itemClass; + + return $this; + } + + /** + * Get item class. + */ + private function getItemClass() + { + return $this->itemClass; + } + + /** + * Set the key that will be used for sorting. + */ + private function setSortKey($sortKey) + { + $this->sortKey = $sortKey; + + return $this; + } + + /** + * Get the key that will be used for sorting. + */ + private function getSortKey() + { + return $this->sortKey; + } + + /** + * Set next page class. + */ + private function setNextPageClass($nextPageClass) + { + $this->nextPageClass = $nextPageClass; + + return $this; + } + + /** + * Get next page class. + */ + private function getNextPageClass() + { + return $this->nextPageClass; + } + + /** + * for paginated collection, sets the callback function and URL for + * the next page + * + * The callback function should have the signature: + * + * function Whatever($class, $url, $parent) + * + * and the `$url` should be the URL of the next page of results + * + * @param callable $callback the name of the function (or array of + * object, function name) + * @param string $url the URL of the next page of results + * @return void + */ + public function setNextPageCallback($callback, $url) + { + $this->nextPageCallback = $callback; + $this->nextPageUrl = $url; + + return $this; + } + + /** + * Get next page callback. + */ + private function getNextPageCallback() + { + return $this->nextPageCallback; + } + + /** + * Get next page URL. + */ + private function getNextPageUrl() + { + return $this->nextPageUrl; + } + + /** + * Returns the number of items in the collection + * + * For most services, this is the total number of items. If the Collection + * is paginated, however, this only returns the count of items in the + * current page of data. + * + * @return int + */ + public function count() + { + return count($this->getItemList()); + } + + /** + * Pseudonym for count() + * + * @codeCoverageIgnore + */ + public function size() + { + return $this->count(); + } + + /** + * Resets the pointer to the beginning, but does NOT return the first item + * + * @api + * @return void + */ + public function reset() + { + $this->pointer = 0; + } + + /** + * Resets the collection pointer back to the first item in the page + * and returns it + * + * This is useful if you're only interested in the first item in the page. + * + * @api + * @return Base the first item in the set + */ + public function first() + { + $this->reset(); + + return $this->next(); + } + + /** + * Return the item at a particular point of the array. + * + * @param mixed $offset + * @return mixed + */ + public function getItem($pointer) + { + return (isset($this->itemList[$pointer])) ? $this->itemList[$pointer] : false; + } + + /** + * Add an item to this collection + * + * @param mixed $item + */ + public function addItem($item) + { + $this->itemList[] = $item; + } + + /** + * Returns the next item in the page + * + * @api + * @return Base the next item or FALSE if at the end of the page + */ + public function next() + { + if ($this->pointer >= $this->count()) { + return false; + } + + $data = $this->getItem($this->pointer++); + $class = $this->getItemClass(); + + // Are there specific methods in the parent/service that can be used to + // instantiate the resource? Currently supported: getResource(), resource() + foreach (array($class, 'get' . ucfirst($class)) as $method) { + if (method_exists($this->service, $method)) { + return call_user_func(array($this->service, $method), $data); + } + } + + // Backup method + if (method_exists($this->service, 'resource')) { + return $this->service->resource($class, $data); + } + + return false; + } + + /** + * sorts the collection on a specified key + * + * Note: only top-level keys can be used as the sort key. Note that this + * only sorts the data in the current page of the Collection (for + * multi-page data). + * + * @api + * @param string $keyname the name of the field to use as the sort key + * @return void + */ + public function sort($keyname = 'id') + { + $this->setSortKey($keyname); + usort($this->itemList, array($this, 'sortCompare')); + } + + /** + * selects only specified items from the Collection + * + * This provides a simple form of filtering on Collections. For each item + * in the collection, it calls the callback function, passing it the item. + * If the callback returns `TRUE`, then the item is retained; if it returns + * `FALSE`, then the item is deleted from the collection. + * + * Note that this should not supersede server-side filtering; the + * `Collection::Select()` method requires that *all* of the data for the + * Collection be retrieved from the server before the filtering is + * performed; this can be very inefficient, especially for large data + * sets. This method is mostly useful on smaller-sized sets. + * + * Example: + * + * $services = $connection->ServiceList(); + * $services->Select(function ($item) { return $item->region=='ORD';}); + * // now the $services Collection only has items from the ORD region + * + * + * `Select()` is *destructive*; that is, it actually removes entries from + * the collection. For example, if you use `Select()` to find items with + * the ID > 10, then use it again to find items that are <= 10, it will + * return an empty list. + * + * @api + * @param callable $testfunc a callback function that is passed each item + * in turn. Note that `Select()` performs an explicit test for + * `FALSE`, so functions like `strpos()` need to be cast into a + * boolean value (and not just return the integer). + * @returns void + * @throws DomainError if callback doesn't return a boolean value + */ + public function select($testfunc) + { + foreach ($this->getItemList() as $index => $item) { + $test = call_user_func($testfunc, $item); + if (!is_bool($test)) { + throw new Exceptions\DomainError( + Lang::translate('Callback function for Collection::Select() did not return boolean') + ); + } + if ($test === false) { + unset($this->itemList[$index]); + } + } + } + + /** + * returns the Collection object for the next page of results, or + * FALSE if there are no more pages + * + * Generally, the structure for a multi-page collection will look like + * this: + * + * $coll = $obj->Collection(); + * do { + * while ($item = $coll->Next()) { + * // do something with the item + * } + * } while ($coll = $coll->NextPage()); + * + * @api + * @return Collection if there are more pages of results, otherwise FALSE + */ + public function nextPage() + { + return ($this->getNextPageUrl() !== null) + ? call_user_func($this->getNextPageCallback(), $this->getNextPageClass(), $this->getNextPageUrl()) + : false; + } + + /** + * Compares two values of sort keys + */ + private function sortCompare($a, $b) + { + $key = $this->getSortKey(); + + // Handle strings + if (is_string($a->$key)) { + return strcmp($a->$key, $b->$key); + } + + // Handle others with logical comparisons + if ($a->$key == $b->$key) { + return 0; + } elseif ($a->$key < $b->$key) { + return -1; + } else { + return 1; + } + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Collection/ArrayCollection.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Collection/ArrayCollection.php new file mode 100644 index 0000000..01e5243 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Collection/ArrayCollection.php @@ -0,0 +1,82 @@ +setElements($data); + } + + /** + * @return int + */ + public function count() + { + return count($this->elements); + } + + /** + * @param array $data + * @return $this + */ + public function setElements(array $data = array()) + { + $this->elements = $data; + + return $this; + } + + /** + * Appends a value to the container. + * + * @param $value + */ + public function append($value) + { + $this->elements[] = $value; + } + + /** + * Checks to see whether a particular value exists. + * + * @param $value + * @return bool + */ + public function valueExists($value) + { + return array_search($value, $this->elements) !== false; + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Collection/PaginatedIterator.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Collection/PaginatedIterator.php new file mode 100644 index 0000000..ef827ac --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Collection/PaginatedIterator.php @@ -0,0 +1,329 @@ + 10000, + 'limit.page' => 100, + + // The "links" element key in response + 'key.links' => 'links', + + // JSON structure + 'key.collection' => null, + 'key.collectionElement' => null, + + // The property used as the marker + 'key.marker' => 'name', + + // Options for "next page" request + 'request.method' => 'GET', + 'request.headers' => array(), + 'request.body' => null, + 'request.curlOptions' => array() + ); + + protected $required = array('resourceClass', 'baseUrl'); + + /** + * Basic factory method to easily instantiate a new ResourceIterator. + * + * @param $parent The parent object + * @param array $options Iterator options + * @param array $data Optional data to set initially + * @return static + */ + public static function factory($parent, array $options = array(), array $data = null) + { + $list = new static(); + + $list->setOptions($list->parseOptions($options)) + ->setResourceParent($parent) + ->rewind(); + + if ($data) { + $list->setElements($data); + } else { + $list->appendNewCollection(); + } + + return $list; + } + + + /** + * @param Url $url + * @return $this + */ + public function setBaseUrl(Url $url) + { + $this->baseUrl = $url; + + return $this; + } + + public function current() + { + return parent::current(); + } + + public function key() + { + return parent::key(); + } + + /** + * {@inheritDoc} + * Also update the current marker. + */ + public function next() + { + if (!$this->valid()) { + return false; + } + + $current = $this->current(); + + $this->position++; + $this->updateMarkerToCurrent(); + + return $current; + } + + /** + * Update the current marker based on the current element. The marker will be based on a particular property of this + * current element, so you must retrieve it first. + */ + public function updateMarkerToCurrent() + { + if (!isset($this->elements[$this->position])) { + return; + } + + $element = $this->elements[$this->position]; + $this->setMarkerFromElement($element); + } + + protected function setMarkerFromElement($element) + { + $key = $this->getOption('key.marker'); + + if (isset($element->$key)) { + $this->currentMarker = $element->$key; + } + } + + /** + * {@inheritDoc} + * Also reset current marker. + */ + public function rewind() + { + parent::rewind(); + $this->currentMarker = null; + } + + public function valid() + { + $totalLimit = $this->getOption('limit.total'); + if ($totalLimit !== false && $this->position >= $totalLimit) { + return false; + } elseif (isset($this->elements[$this->position])) { + return true; + } elseif ($this->shouldAppend() === true) { + $before = $this->count(); + $this->appendNewCollection(); + return ($this->count() > $before) ? true : false; + } + + return false; + } + + protected function shouldAppend() + { + return $this->currentMarker && ( + $this->nextUrl || + $this->position % $this->getOption('limit.page') == 0 + ); + } + + /** + * Append an array of standard objects to the current collection. + * + * @param array $elements + * @return $this + */ + public function appendElements(array $elements) + { + $this->elements = array_merge($this->elements, $elements); + + return $this; + } + + /** + * Retrieve a new page of elements from the API (based on a new request), parse its response, and append them to the + * collection. + * + * @return $this|bool + */ + public function appendNewCollection() + { + $request = $this->resourceParent + ->getClient() + ->createRequest( + $this->getOption('request.method'), + $this->constructNextUrl(), + $this->getOption('request.headers'), + $this->getOption('request.body'), + $this->getOption('request.curlOptions') + ); + + try { + $response = $request->send(); + } catch (ClientErrorResponseException $e) { + return false; + } + + if (!($body = Formatter::decode($response)) || $response->getStatusCode() == 204) { + return false; + } + + $this->nextUrl = $this->extractNextLink($body); + + return $this->appendElements($this->parseResponseBody($body)); + } + + /** + * Based on the response body, extract the explicitly set "link" value if provided. + * + * @param $body + * @return bool + */ + public function extractNextLink($body) + { + $key = $this->getOption('key.links'); + + $value = null; + + if (isset($body->$key)) { + foreach ($body->$key as $link) { + if (isset($link->rel) && $link->rel == 'next') { + $value = $link->href; + break; + } + } + } + + return $value; + } + + /** + * Make the next page URL. + * + * @return Url|string + */ + public function constructNextUrl() + { + if (!$url = $this->nextUrl) { + $url = clone $this->getOption('baseUrl'); + $query = $url->getQuery(); + + if (isset($this->currentMarker)) { + $query[static::MARKER] = $this->currentMarker; + } + + if (($limit = $this->getOption('limit.page')) && !$query->hasKey(static::LIMIT)) { + $query[static::LIMIT] = $limit; + } + + $url->setQuery($query); + } + + return $url; + } + + /** + * Based on the response from the API, parse it for the data we need (i.e. an meaningful array of elements). + * + * @param $body + * @return array + */ + public function parseResponseBody($body) + { + $collectionKey = $this->getOption('key.collection'); + + $data = array(); + + if (is_array($body)) { + $data = $body; + } elseif (isset($body->$collectionKey)) { + if (null !== ($elementKey = $this->getOption('key.collectionElement'))) { + // The object has element levels which need to be iterated over + foreach ($body->$collectionKey as $item) { + $subValues = $item->$elementKey; + unset($item->$elementKey); + $data[] = array_merge((array) $item, (array) $subValues); + } + } else { + // The object has a top-level collection name only + $data = $body->$collectionKey; + } + } + + return $data; + } + + /** + * Walk the entire collection, populating everything. + */ + public function populateAll() + { + while ($this->valid()) { + $this->next(); + } + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Collection/ResourceIterator.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Collection/ResourceIterator.php new file mode 100644 index 0000000..c0054b8 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Collection/ResourceIterator.php @@ -0,0 +1,256 @@ + 1000); + + /** + * @var array Required options + */ + protected $required = array(); + + public static function factory($parent, array $options = array(), array $data = array()) + { + $iterator = new static($data); + + $iterator->setResourceParent($parent) + ->setElements($data) + ->setOptions($iterator->parseOptions($options)) + ->rewind(); + + return $iterator; + } + + protected function parseOptions(array $options) + { + $options = $options + $this->defaults; + + if ($missing = array_diff($this->required, array_keys($options))) { + throw new InvalidArgumentError(sprintf('%s is a required option', implode(',', $missing))); + } + + return $options; + } + + /** + * @param $parent + * @return $this + */ + public function setResourceParent($parent) + { + $this->resourceParent = $parent; + + return $this; + } + + /** + * @param array $options + * @return $this + */ + public function setOptions(array $options) + { + $this->options = $options; + + return $this; + } + + /** + * @return array Options for the resource iterator. + */ + public function getOptions() + { + return $this->options; + } + + /** + * Set a particular option. + * + * @param $key + * @param $value + * @return $this + */ + public function setOption($key, $value) + { + $this->options[$key] = $value; + + return $this; + } + + /** + * @param $key + * @return null + */ + public function getOption($key) + { + return (isset($this->options[$key])) ? $this->options[$key] : null; + } + + /** + * This method is called after self::rewind() and self::next() to check if the current position is valid. + * + * @return bool + */ + public function valid() + { + return $this->offsetExists($this->position) && $this->position < $this->getOption('limit.total'); + } + + /** + * Increment the current pointer by 1, and also update the current marker. + */ + public function next() + { + $this->position++; + + return $this->current(); + } + + /** + * Reset the pointer and current marker. + */ + public function rewind() + { + $this->position = 0; + } + + /** + * @return mixed + */ + public function current() + { + return $this->constructResource($this->currentElement()); + } + + /** + * @return mixed + */ + public function currentElement() + { + return $this->offsetGet($this->key()); + } + + /** + * Using a standard object, this method populates a resource model with all the object data. It does this using a + * whatever method the parent object has for resource creation. + * + * @param $object Standard object + * @return mixed + * @throws \OpenCloud\Common\Exceptions\CollectionException + */ + public function constructResource($object) + { + $className = $this->getOption('resourceClass'); + + if (substr_count($className, '\\')) { + $array = explode('\\', $className); + $className = end($array); + } + + $parent = $this->resourceParent; + $getter = sprintf('get%s', ucfirst($className)); + + if (method_exists($parent, $className)) { + // $parent->server($data) + return call_user_func(array($parent, $className), $object); + } elseif (method_exists($parent, $getter)) { + // $parent->getServer($data) + return call_user_func(array($parent, $getter), $object); + } elseif (method_exists($parent, 'resource')) { + // $parent->resource('Server', $data) + return $parent->resource($className, $object); + } else { + return $object; + } + } + + /** + * Return the current position/internal pointer. + * + * @return int|mixed + */ + public function key() + { + return $this->position; + } + + public function getElement($offset) + { + return (!$this->offsetExists($offset)) ? false : $this->constructResource($this->offsetGet($offset)); + } + + /** + * @deprecated + */ + public function first() + { + Logger::newInstance()->warning(Logger::deprecated(__METHOD__, 'getElement')); + + return $this->getElement(0); + } + + /** + * @todo Implement + */ + public function sort() + { + } + + public function search($callback) + { + $return = false; + + if (!is_callable($callback)) { + throw new InvalidArgumentError('The provided argument must be a valid callback'); + } + + foreach ($this->elements as $element) { + $resource = $this->constructResource($element); + if (call_user_func($callback, $resource) === true) { + $return = $resource; + break; + } + } + + return $return; + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Constants/Datetime.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Constants/Datetime.php new file mode 100644 index 0000000..9a5e76f --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Constants/Datetime.php @@ -0,0 +1,38 @@ +getResponse(); + + $message = sprintf( + "This operation was forbidden; the API returned a %s status code with this message:\n%s", + $response->getStatusCode(), + (string) $response->getBody() + ); + + $e = new self($message); + $e->setResponse($response); + $e->setRequest($exception->getRequest()); + + return $e; + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Exceptions/HttpError.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Exceptions/HttpError.php new file mode 100644 index 0000000..c8376e8 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Exceptions/HttpError.php @@ -0,0 +1,22 @@ +request = $request; + + return $this; + } + + /** + * Get the request that caused the exception + * + * @return RequestInterface + */ + public function getRequest() + { + return $this->request; + } + + /** + * Set the response that caused the exception + * + * @param Response $response Response to set + */ + public function setResponse(Response $response) + { + $this->response = $response; + } + + /** + * Get the response that caused the exception + * + * @return Response + */ + public function getResponse() + { + return $this->response; + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Exceptions/HttpRetryError.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Exceptions/HttpRetryError.php new file mode 100644 index 0000000..fd99fb3 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Exceptions/HttpRetryError.php @@ -0,0 +1,22 @@ +getResponse(); + + $message = sprintf( + "This resource you were looking for could not be found; the API returned a %s status code with this message:\n%s", + $response->getStatusCode(), + (string) $response->getBody() + ); + + $e = new self($message); + $e->setResponse($response); + $e->setRequest($exception->getRequest()); + + return $e; + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Exceptions/RuntimeException.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Exceptions/RuntimeException.php new file mode 100644 index 0000000..c0c917f --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Exceptions/RuntimeException.php @@ -0,0 +1,22 @@ += %s installed.', + self::MINIMUM_PHP_VERSION + )); + } + // @codeCoverageIgnoreEnd + + parent::__construct($baseUrl, $config); + } + + public function getDefaultUserAgent() + { + return 'OpenCloud/' . self::VERSION + . ' cURL/' . CurlVersion::getInstance()->get('version') + . ' PHP/' . PHP_VERSION; + } + + public function getUserAgent() + { + return $this->userAgent; + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Http/Message/Formatter.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Http/Message/Formatter.php new file mode 100644 index 0000000..1f2b8c2 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Http/Message/Formatter.php @@ -0,0 +1,51 @@ +getHeader(Header::CONTENT_TYPE), Mime::JSON) !== false) { + $string = (string) $response->getBody(); + $response = json_decode($string); + self::checkJsonError($string); + + return $response; + } + } + + public static function encode($body) + { + return json_encode($body); + } + + public static function checkJsonError($string = null) + { + if (json_last_error()) { + $error = sprintf('%s', json_last_error_msg()); + $message = ($string) ? sprintf('%s trying to decode: %s', $error, $string) : $error; + throw new JsonError($message); + } + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Http/Message/RequestSubscriber.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Http/Message/RequestSubscriber.php new file mode 100644 index 0000000..788f672 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Http/Message/RequestSubscriber.php @@ -0,0 +1,52 @@ + 'doCurlProgress' + ); + } + + /** + * @param $options + * @return mixed + * @codeCoverageIgnore + */ + public function doCurlProgress($options) + { + $curlOptions = $options['request']->getCurlOptions(); + + if ($curlOptions->hasKey('progressCallback')) { + return call_user_func($curlOptions->get('progressCallback')); + } + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Lang.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Lang.php new file mode 100644 index 0000000..7c124e5 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Lang.php @@ -0,0 +1,35 @@ + false, + 'logFile' => null, + 'dateFormat' => 'd/m/y H:I', + 'delimeter' => ' - ' + ); + + public function __construct($enabled = false) + { + $this->enabled = $enabled; + } + + public static function newInstance() + { + return new static(); + } + + /** + * Determines whether a log level needs to be outputted. + * + * @param string $logLevel + * @return bool + */ + private function outputIsUrgent($logLevel) + { + return in_array($logLevel, $this->urgentLevels); + } + + /** + * Interpolates context values into the message placeholders. + * + * @param string $message + * @param array $context + * @return type + */ + private function interpolate($message, array $context = array()) + { + // build a replacement array with braces around the context keys + $replace = array(); + foreach ($context as $key => $val) { + $replace['{' . $key . '}'] = $val; + } + + // interpolate replacement values into the message and return + return strtr($message, $replace); + } + + /** + * Enable or disable the debug class. + * + * @param bool $enabled + * @return self + */ + public function setEnabled($enabled) + { + $this->enabled = $enabled; + + return $this; + } + + /** + * Is the debug class enabled? + * + * @return bool + */ + public function isEnabled() + { + return $this->enabled === true; + } + + /** + * Set an array of options. + * + * @param array $options + */ + public function setOptions(array $options = array()) + { + foreach ($options as $key => $value) { + $this->setOption($key, $value); + } + + return $this; + } + + /** + * Get all options. + * + * @return array + */ + public function getOptions() + { + return $this->options; + } + + /** + * Set an individual option. + * + * @param string $key + * @param string $value + */ + public function setOption($key, $value) + { + if ($this->optionExists($key)) { + $this->options[$key] = $value; + + return $this; + } + } + + /** + * Get an individual option. + * + * @param string $key + * @return string|null + */ + public function getOption($key) + { + if ($this->optionExists($key)) { + return $this->options[$key]; + } + } + + /** + * Check whether an individual option exists. + * + * @param string $key + * @return bool + */ + private function optionExists($key) + { + return array_key_exists($key, $this->getOptions()); + } + + /** + * Outputs a log message if necessary. + * + * @param string $logLevel + * @param string $message + * @param string $context + */ + public function log($level, $message, array $context = array()) + { + if ($this->outputIsUrgent($level) || $this->isEnabled()) { + $this->dispatch($message, $context); + } + } + + /** + * Used to format the line outputted in the log file. + * + * @param string $string + * @return string + */ + private function formatFileLine($string) + { + $format = $this->getOption('dateFormat') . $this->getOption('delimeter'); + + return date($format) . $string; + } + + /** + * Dispatch a log output message. + * + * @param string $message + * @param array $context + * @throws LoggingException + */ + private function dispatch($message, $context) + { + $output = $this->interpolate($message, $context) . PHP_EOL; + + if ($this->getOption('outputToFile') === true) { + $file = $this->getOption('logFile'); + + if (!is_writable($file)) { + throw new LoggingException( + 'The log file either does not exist or is not writeable' + ); + } + + // Output to file + file_put_contents($file, $this->formatFileLine($output), FILE_APPEND); + } else { + echo $output; + } + } + + /** + * Helper method, use PSR-3 warning function for deprecation warnings + * @see http://www.php-fig.org/psr/psr-3/ + */ + public static function deprecated($method, $new) + { + return sprintf('The %s method is deprecated, please use %s instead', $method, $new); + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Metadata.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Metadata.php new file mode 100644 index 0000000..3a18a20 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Metadata.php @@ -0,0 +1,114 @@ +setProperty($property, $value); + } + + public function __get($key) + { + return $this->getProperty($key); + } + + public function propertyExists($property, $allowRetry = true) + { + return isset($this->metadata[strtolower($property)]) + || parent::propertyExists($property, $allowRetry); + } + + public function getProperty($property) + { + return $this->propertyExists($property) ? $this->metadata[strtolower($property)] : null; + } + + public function setProperty($property, $value) + { + $this->metadata[strtolower($property)] = $value; + } + + public function __isset($property) + { + return $this->propertyExists($property); + } + + /** + * Returns the list of keys defined + * + * @return array + */ + public function keylist() + { + return $this->metadata; + } + + /** + * Sets metadata values from an array, with optional prefix + * + * If $prefix is provided, then only array keys that match the prefix + * are set as metadata values, and $prefix is stripped from the key name. + * + * @param array $values an array of key/value pairs to set + * @param string $prefix if provided, a prefix that is used to identify + * metadata values. For example, you can set values from headers + * for a Container by using $prefix='X-Container-Meta-'. + * @return void + */ + public function setArray($values, $prefix = null) + { + if (empty($values)) { + return false; + } + + foreach ($values as $key => $value) { + if ($prefix && strpos($key, $prefix) === 0) { + $key = substr($key, strlen($prefix)); + } + $this->setProperty($key, $value); + } + } + + public function toArray() + { + return $this->metadata; + } + + public function count() + { + return count($this->metadata); + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/PersistentObject.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/PersistentObject.php new file mode 100644 index 0000000..8176ce2 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/PersistentObject.php @@ -0,0 +1,34 @@ +setService($service); + $this->metadata = new Metadata(); + $this->populate($data); + } + + /** + * @param \OpenCloud\Common\Service\ServiceInterface $service + * @return \OpenCloud\Common\PersistentObject + */ + public function setService(ServiceInterface $service) + { + $this->service = $service; + + return $this; + } + + /** + * @return \OpenCloud\Common\Service\ServiceInterface + * @throws \OpenCloud\Common\Exceptions\ServiceException + */ + public function getService() + { + if (null === $this->service) { + throw new ServiceException('No service defined'); + } + + return $this->service; + } + + /** + * @param BaseResource $parent + * @return self + */ + public function setParent(BaseResource $parent) + { + $this->parent = $parent; + + return $this; + } + + /** + * @return mixed + */ + public function getParent() + { + if (null === $this->parent) { + $this->parent = $this->getService(); + } + + return $this->parent; + } + + /** + * Convenience method to return the service's client + * + * @return \Guzzle\Http\ClientInterface + */ + public function getClient() + { + return $this->getService()->getClient(); + } + + /** + * @param mixed $metadata + * @return $this + */ + public function setMetadata($data) + { + if ($data instanceof Metadata) { + $metadata = $data; + } elseif (is_array($data) || is_object($data)) { + $metadata = new Metadata(); + $metadata->setArray($data); + } else { + throw new \InvalidArgumentException(sprintf( + 'You must specify either an array/object of parameters, or an ' + . 'instance of Metadata. You provided: %s', + print_r($data, true) + )); + } + + $this->metadata = $metadata; + + return $this; + } + + /** + * @return Metadata + */ + public function getMetadata() + { + return $this->metadata; + } + + /** + * Get this resource's URL + * + * @param null $path URI path to add on + * @param array $query Query to add on + * @return mixed + */ + public function getUrl($path = null, array $query = array()) + { + if (!$url = $this->findLink('self')) { + // ...otherwise construct a URL from parent and this resource's + // "URL name". If no name is set, resourceName() throws an error. + $url = $this->getParent()->getUrl($this->resourceName()); + + // Does it have a primary key? + if (null !== ($primaryKey = $this->getProperty($this->primaryKeyField()))) { + $url->addPath((string) $primaryKey); + } + } + + if (!$url instanceof Url) { + $url = Url::factory($url); + } + + return $url->addPath((string) $path)->setQuery($query); + } + + /** + * @deprecated + */ + public function url($path = null, array $query = array()) + { + return $this->getUrl($path, $query); + } + + + /** + * Find a resource link based on a type + * + * @param string $type + * @return bool + */ + public function findLink($type = 'self') + { + if (empty($this->links)) { + return false; + } + + foreach ($this->links as $link) { + if ($link->rel == $type) { + return $link->href; + } + } + + return false; + } + + /** + * Returns the primary key field for the object + * + * @return string + */ + protected function primaryKeyField() + { + return 'id'; + } + + /** + * Returns the top-level key for the returned response JSON document + * + * @throws DocumentError + */ + public static function jsonName() + { + if (isset(static::$json_name)) { + return static::$json_name; + } + + throw new DocumentError('A top-level JSON document key has not been defined for this resource'); + } + + /** + * Returns the top-level key for collection responses + * + * @return string + */ + public static function jsonCollectionName() + { + return isset(static::$json_collection_name) ? static::$json_collection_name : static::$json_name . 's'; + } + + /** + * Returns the nested keys that could (rarely) prefix collection items. For example: + * + * { + * "keypairs": [ + * { + * "keypair": { + * "fingerprint": "...", + * "name": "key1", + * "public_key": "..." + * } + * }, + * { + * "keypair": { + * "fingerprint": "...", + * "name": "key2", + * "public_key": "..." + * } + * } + * ] + * } + * + * In the above example, "keypairs" would be the $json_collection_name and "keypair" would be the + * $json_collection_element + * + * @return string + */ + public static function jsonCollectionElement() + { + if (isset(static::$json_collection_element)) { + return static::$json_collection_element; + } + } + + /** + * Returns the URI path for this resource + * + * @throws UrlError + */ + public static function resourceName() + { + if (isset(static::$url_resource)) { + return static::$url_resource; + } + + throw new UrlError('No URL path defined for this resource'); + } + + /** + * Parse a HTTP response for the required content + * + * @param Response $response + * @return mixed + */ + public function parseResponse(Response $response) + { + $document = Formatter::decode($response); + + $topLevelKey = $this->jsonName(); + + return ($topLevelKey && isset($document->$topLevelKey)) ? $document->$topLevelKey : $document; + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Resource/NovaResource.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Resource/NovaResource.php new file mode 100644 index 0000000..ee76c0d --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Resource/NovaResource.php @@ -0,0 +1,51 @@ +getProperty($this->primaryKeyField())) { + throw new \RuntimeException('A primary key is required'); + } + + if (!is_object($object)) { + throw new \InvalidArgumentException(sprintf('This method expects an object as its parameter')); + } + + // convert the object to json + $json = json_encode($object); + $this->checkJsonError(); + + // get the URL for the POST message + $url = clone $this->getUrl(); + $url->addPath('action'); + + // POST the message + return $this->getClient()->post($url, self::getJsonHeader(), $json)->send(); + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Resource/PersistentResource.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Resource/PersistentResource.php new file mode 100644 index 0000000..c012b8e --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Resource/PersistentResource.php @@ -0,0 +1,391 @@ +populate($params, false); + } + + // construct the JSON + $json = json_encode($this->createJson()); + $this->checkJsonError(); + + $createUrl = $this->createUrl(); + + $response = $this->getClient()->post($createUrl, self::getJsonHeader(), $json)->send(); + + // We have to try to parse the response body first because it should have precedence over a Location refresh. + // I'd like to reverse the order, but Nova instances return ephemeral properties on creation which are not + // available when you follow the Location link... + if (null !== ($decoded = $this->parseResponse($response))) { + $this->populate($decoded); + } elseif ($location = $response->getHeader('Location')) { + $this->refreshFromLocationUrl($location); + } + + return $response; + } + + /** + * Update a resource + * + * @param array $params + * @return \Guzzle\Http\Message\Response + */ + public function update($params = array()) + { + // set parameters + if (!empty($params)) { + $this->populate($params); + } + + // construct the JSON + $json = json_encode($this->updateJson($params)); + $this->checkJsonError(); + + // send the request + return $this->getClient()->put($this->getUrl(), self::getJsonHeader(), $json)->send(); + } + + /** + * Delete this resource + * + * @return \Guzzle\Http\Message\Response + */ + public function delete() + { + return $this->getClient()->delete($this->getUrl())->send(); + } + + /** + * Refresh the state of a resource + * + * @param null $id + * @param null $url + * @return \Guzzle\Http\Message\Response + * @throws IdRequiredError + */ + public function refresh($id = null, $url = null) + { + $primaryKey = $this->primaryKeyField(); + $primaryKeyVal = $this->getProperty($primaryKey); + + if (!$url) { + if (!$id = $id ?: $primaryKeyVal) { + $message = sprintf("This resource cannot be refreshed because it has no %s", $primaryKey); + throw new IdRequiredError($message); + } + + if ($primaryKeyVal != $id) { + $this->setProperty($primaryKey, $id); + } + + $url = $this->getUrl(); + } + + // reset status, if available + if ($this->getProperty('status')) { + $this->setProperty('status', null); + } + + $response = $this->getClient()->get($url)->send(); + + if (null !== ($decoded = $this->parseResponse($response))) { + $this->populate($decoded); + } + + return $response; + } + + + /** + * Causes resource to refresh based on parent's URL + */ + protected function refreshFromParent() + { + $url = clone $this->getParent()->getUrl(); + $url->addPath($this->resourceName()); + + $response = $this->getClient()->get($url)->send(); + + if (null !== ($decoded = $this->parseResponse($response))) { + $this->populate($decoded); + } + } + + /** + * Given a `location` URL, refresh this resource + * + * @param $url + */ + public function refreshFromLocationUrl($url) + { + $fullUrl = Url::factory($url); + + $response = $this->getClient()->get($fullUrl)->send(); + + if (null !== ($decoded = $this->parseResponse($response))) { + $this->populate($decoded); + } + } + + /** + * A method to repeatedly poll the API resource, waiting for an eventual state change + * + * @param null $state The expected state of the resource + * @param null $timeout The maximum timeout to wait + * @param null $callback The callback to use to check the state + * @param null $interval How long between each refresh request + */ + public function waitFor($state = null, $timeout = null, $callback = null, $interval = null) + { + $state = $state ?: State::ACTIVE; + $timeout = $timeout ?: State::DEFAULT_TIMEOUT; + $interval = $interval ?: State::DEFAULT_INTERVAL; + + // save stats + $startTime = time(); + + $states = array('ERROR', $state); + + while (true) { + $this->refresh($this->getProperty($this->primaryKeyField())); + + if ($callback) { + call_user_func($callback, $this); + } + + if (in_array($this->status(), $states) || (time() - $startTime) > $timeout) { + return; + } + + sleep($interval); + } + } + + /** + * Provides JSON for create request body + * + * @return object + * @throws \RuntimeException + */ + protected function createJson() + { + if (!isset($this->createKeys)) { + throw new \RuntimeException(sprintf( + 'This resource object [%s] must have a visible createKeys array', + get_class($this) + )); + } + + $element = (object) array(); + + foreach ($this->createKeys as $key) { + if (null !== ($property = $this->getProperty($key))) { + $element->{$this->getAlias($key)} = $this->recursivelyAliasPropertyValue($property); + } + } + + if (isset($this->metadata) && count($this->metadata)) { + $element->metadata = (object) $this->metadata->toArray(); + } + + return (object) array($this->jsonName() => (object) $element); + } + + /** + * Returns the alias configured for the given key. If no alias exists + * it returns the original key. + * + * @param string $key + * @return string + */ + protected function getAlias($key) + { + if (false !== ($alias = array_search($key, $this->aliases))) { + return $alias; + } + + return $key; + } + + /** + * Returns the given property value's alias, if configured; Else, the + * unchanged property value is returned. If the given property value + * is an array or an instance of \stdClass, it is aliases recursively. + * + * @param mixed $propertyValue Array or \stdClass instance to alias + * @return mixed Property value, aliased recursively + */ + protected function recursivelyAliasPropertyValue($propertyValue) + { + if (is_array($propertyValue)) { + foreach ($propertyValue as $key => $subValue) { + $aliasedSubValue = $this->recursivelyAliasPropertyValue($subValue); + if (is_numeric($key)) { + $propertyValue[$key] = $aliasedSubValue; + } else { + unset($propertyValue[$key]); + $propertyValue[$this->getAlias($key)] = $aliasedSubValue; + } + } + } elseif (is_object($propertyValue) && ($propertyValue instanceof \stdClass)) { + foreach ($propertyValue as $key => $subValue) { + unset($propertyValue->$key); + $propertyValue->{$this->getAlias($key)} = $this->recursivelyAliasPropertyValue($subValue); + } + } + + return $propertyValue; + } + + /** + * Provides JSON for update request body + */ + protected function updateJson($params = array()) + { + if (!isset($this->updateKeys)) { + throw new \RuntimeException(sprintf( + 'This resource object [%s] must have a visible updateKeys array', + get_class($this) + )); + } + + $element = (object) array(); + + foreach ($this->updateKeys as $key) { + if (null !== ($property = $this->getProperty($key))) { + $element->{$this->getAlias($key)} = $this->recursivelyAliasPropertyValue($property); + } + } + + return (object) array($this->jsonName() => (object) $element); + } + + /** + * @throws CreateError + */ + protected function noCreate() + { + throw new CreateError('This resource does not support the create operation'); + } + + /** + * @throws DeleteError + */ + protected function noDelete() + { + throw new DeleteError('This resource does not support the delete operation'); + } + + /** + * @throws UpdateError + */ + protected function noUpdate() + { + throw new UpdateError('his resource does not support the update operation'); + } + + /** + * Check whether an extension is valid + * + * @param mixed $alias The extension name + * @return bool + * @throws UnsupportedExtensionError + */ + public function checkExtension($alias) + { + if (!in_array($alias, $this->getService()->namespaces())) { + throw new UnsupportedExtensionError(sprintf("%s extension is not installed", $alias)); + } + + return true; + } + + /******** DEPRECATED METHODS ********/ + + /** + * @deprecated + * @return string + * @throws NameError + */ + public function name() + { + if (null !== ($name = $this->getProperty('name'))) { + return $name; + } else { + throw new NameError('Name attribute does not exist for this resource'); + } + } + + /** + * @deprecated + * @return mixed + */ + public function id() + { + return $this->id; + } + + /** + * @deprecated + * @return string + */ + public function status() + { + return (isset($this->status)) ? $this->status : 'N/A'; + } + + /** + * @deprecated + * @return mixed + */ + public function region() + { + return $this->getService()->region(); + } + + /** + * @deprecated + * @return \Guzzle\Http\Url + */ + public function createUrl() + { + return $this->getParent()->getUrl($this->resourceName()); + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Resource/ReadOnlyResource.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Resource/ReadOnlyResource.php new file mode 100644 index 0000000..132136a --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Resource/ReadOnlyResource.php @@ -0,0 +1,42 @@ +noCreate(); + } + + public function update($params = array()) + { + return $this->noUpdate(); + } + + public function delete() + { + return $this->noDelete(); + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Service/AbstractService.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Service/AbstractService.php new file mode 100644 index 0000000..f528480 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Service/AbstractService.php @@ -0,0 +1,211 @@ +client = $client; + } + + /** + * @return \OpenCloud\Common\Http\Client + */ + public function getClient() + { + return $this->client; + } + + /** + * @param Endpoint $endpoint + */ + public function setEndpoint($endpoint) + { + $this->endpoint = $endpoint; + } + + /** + * @return \OpenCloud\Common\Service\Endpoint + */ + public function getEndpoint() + { + return $this->endpoint; + } + + /** + * Get all associated resources for this service. + * + * @access public + * @return array + */ + public function getResources() + { + return $this->resources; + } + + /** + * Internal method for accessing child namespace from parent scope. + * + * @return type + */ + protected function getCurrentNamespace() + { + $namespace = get_class($this); + + return substr($namespace, 0, strrpos($namespace, '\\')); + } + + /** + * Resolves FQCN for local resource. + * + * @param $resourceName + * @return string + * @throws \OpenCloud\Common\Exceptions\UnrecognizedServiceError + */ + protected function resolveResourceClass($resourceName) + { + $className = substr_count($resourceName, '\\') + ? $resourceName + : $this->getCurrentNamespace() . '\\Resource\\' . ucfirst($resourceName); + + if (!class_exists($className)) { + throw new Exceptions\UnrecognizedServiceError(sprintf( + '%s resource does not exist, please try one of the following: %s', + $resourceName, + implode(', ', $this->getResources()) + )); + } + + return $className; + } + + /** + * Factory method for instantiating resource objects. + * + * @param string $resourceName + * @param mixed $info (default: null) + * @param mixed $parent The parent object + * @return object + */ + public function resource($resourceName, $info = null, $parent = null) + { + $className = $this->resolveResourceClass($resourceName); + + $resource = new $className($this); + + if ($parent) { + $resource->setParent($parent); + } + + $resource->populate($info); + + return $resource; + } + + /** + * Factory method for instantiating a resource collection. + * + * @param string $resourceName + * @param string|null $url + * @param string|null $parent + * @return PaginatedIterator + */ + public function resourceList($resourceName, $url = null, $parent = null) + { + $className = $this->resolveResourceClass($resourceName); + + return $this->collection($className, $url, $parent); + } + + /** + * @codeCoverageIgnore + */ + public function collection($class, $url = null, $parent = null, $data = null) + { + if (!$parent) { + $parent = $this; + } + + if (!$url) { + $resource = $this->resolveResourceClass($class); + $url = $parent->getUrl($resource::resourceName()); + } + + $options = $this->makeResourceIteratorOptions($this->resolveResourceClass($class)); + $options['baseUrl'] = $url; + + return PaginatedIterator::factory($parent, $options, $data); + } + + /** + * @deprecated + */ + public function namespaces() + { + return $this->getNamespaces(); + } + + /** + * Returns a list of supported namespaces + * + * @return array + */ + public function getNamespaces() + { + return (isset($this->namespaces) && is_array($this->namespaces)) + ? $this->namespaces + : array(); + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Service/Catalog.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Service/Catalog.php new file mode 100644 index 0000000..f3fb8d6 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Service/Catalog.php @@ -0,0 +1,68 @@ +items[] = CatalogItem::factory($item); + } + } elseif ($config instanceof Catalog) { + $catalog = $config; + } else { + throw new InvalidArgumentError(sprintf( + 'Argument for Catalog::factory must be either an array or an ' + . 'instance of %s. You passed in: %s', + get_class(), + print_r($config, true) + )); + } + + return $catalog; + } + + /** + * @return array + */ + public function getItems() + { + return $this->items; + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Service/CatalogItem.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Service/CatalogItem.php new file mode 100644 index 0000000..5d0e44d --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Service/CatalogItem.php @@ -0,0 +1,157 @@ +setName($object->name) + ->setType($object->type) + ->setEndpoints($object->endpoints); + + return $item; + } + + /** + * @param $name + * @return $this + */ + public function setName($name) + { + $this->name = $name; + + return $this; + } + + /** + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * A basic string check. + * + * @param $string + * @return bool + */ + public function hasName($string) + { + return !strnatcasecmp($this->name, $string); + } + + /** + * @param $type + * @return $this + */ + public function setType($type) + { + $this->type = $type; + + return $this; + } + + /** + * @return string + */ + public function getType() + { + return $this->type; + } + + /** + * @param $string + * @return bool + */ + public function hasType($string) + { + return !strnatcasecmp($this->type, $string); + } + + /** + * @param array $endpoints + * @return $this + */ + public function setEndpoints(array $endpoints) + { + $this->endpoints = $endpoints; + + return $this; + } + + /** + * @return array + */ + public function getEndpoints() + { + return $this->endpoints; + } + + /** + * Using a standard data object, extract its endpoint. + * + * @param $region + * @return mixed + * @throws \OpenCloud\Common\Exceptions\EndpointError + */ + public function getEndpointFromRegion($region) + { + foreach ($this->endpoints as $endpoint) { + // Return the endpoint if it is regionless OR if the endpoint's + // region matches the $region supplied by the caller. + if (!isset($endpoint->region) || $endpoint->region == $region) { + return $endpoint; + } + } + + throw new \OpenCloud\Common\Exceptions\EndpointError(sprintf( + 'This service [%s] does not have access to the [%s] endpoint.', + $this->name, + $region + )); + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Service/CatalogService.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Service/CatalogService.php new file mode 100644 index 0000000..69e5c65 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Service/CatalogService.php @@ -0,0 +1,278 @@ +hasLogger()) { + $this->setLogger($client->getLogger()); + } + + $this->setClient($client); + + $this->name = $name ? : static::DEFAULT_NAME; + $this->region = $region; + + $this->region = $region; + if ($this->regionless !== true && !$this->region) { + throw new Exceptions\ServiceException(sprintf( + 'The %s service must have a region set. You can either pass in a region string as an argument param, or' + . ' set a default region for your user account by executing User::setDefaultRegion and ::update().', + $this->name + )); + } + + $this->type = $type ? : static::DEFAULT_TYPE; + $this->urlType = $urlType ? : static::DEFAULT_URL_TYPE; + $this->setEndpoint($this->findEndpoint()); + + $this->client->setBaseUrl($this->getBaseUrl()); + + if ($this instanceof EventSubscriberInterface) { + $this->client->getEventDispatcher()->addSubscriber($this); + } + } + + /** + * @return string + */ + public function getType() + { + return $this->type; + } + + /** + * @return string + */ + public function getRegion() + { + return $this->region; + } + + /** + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * @return string + */ + public function getUrlType() + { + return $this->urlType; + } + + /** + * @deprecated + */ + public function region() + { + return $this->getRegion(); + } + + /** + * @deprecated + */ + public function name() + { + return $this->name; + } + + /** + * Returns the URL for the Service + * + * @param string $path URL path segment + * @param array $query Array of query pairs + * @return Guzzle\Http\Url + */ + public function getUrl($path = null, array $query = array()) + { + return Url::factory($this->getBaseUrl()) + ->addPath($path) + ->setQuery($query); + } + + /** + * @deprecated + */ + public function url($path = null, array $query = array()) + { + return $this->getUrl($path, $query); + } + + /** + * Returns the /extensions for the service + * + * @api + * @return array of objects + */ + public function getExtensions() + { + $ext = $this->getMetaUrl('extensions'); + + return (is_object($ext) && isset($ext->extensions)) ? $ext->extensions : array(); + } + + /** + * Returns the limits for the service + * + * @return array of limits + */ + public function limits() + { + $limits = $this->getMetaUrl('limits'); + + return (is_object($limits)) ? $limits->limits : array(); + } + + /** + * Extracts the appropriate endpoint from the service catalog based on the + * name and type of a service, and sets for further use. + * + * @return \OpenCloud\Common\Service\Endpoint + * @throws \OpenCloud\Common\Exceptions\EndpointError + */ + private function findEndpoint() + { + if (!$this->getClient()->getCatalog()) { + $this->getClient()->authenticate(); + } + + $catalog = $this->getClient()->getCatalog(); + + // Search each service to find The One + foreach ($catalog->getItems() as $service) { + if ($service->hasType($this->type) && $service->hasName($this->name)) { + return Endpoint::factory($service->getEndpointFromRegion($this->region), static::SUPPORTED_VERSION, $this->getClient()); + } + } + + throw new Exceptions\EndpointError(sprintf( + 'No endpoints for service type [%s], name [%s], region [%s] and urlType [%s]', + $this->type, + $this->name, + $this->region, + $this->urlType + )); + } + + /** + * Constructs a specified URL from the subresource + * + * Given a subresource (e.g., "extensions"), this constructs the proper + * URL and retrieves the resource. + * + * @param string $resource The resource requested; should NOT have slashes + * at the beginning or end + * @return \stdClass object + */ + private function getMetaUrl($resource) + { + $url = clone $this->getBaseUrl(); + $url->addPath($resource); + try { + $response = $this->getClient()->get($url)->send(); + + return Formatter::decode($response); + } catch (BadResponseException $e) { + // @codeCoverageIgnoreStart + return array(); + // @codeCoverageIgnoreEnd + } + } + + /** + * Get the base URL for this service, based on the set URL type. + * @return \Guzzle\Http\Url + * @throws \OpenCloud\Common\Exceptions\ServiceException + */ + public function getBaseUrl() + { + $url = ($this->urlType == 'publicURL') + ? $this->endpoint->getPublicUrl() + : $this->endpoint->getPrivateUrl(); + + if ($url === null) { + throw new Exceptions\ServiceException(sprintf( + 'The base %s could not be found. Perhaps the service ' + . 'you are using requires a different URL type, or does ' + . 'not support this region.', + $this->urlType + )); + } + + return $url; + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Service/Endpoint.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Service/Endpoint.php new file mode 100644 index 0000000..2388dc2 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Service/Endpoint.php @@ -0,0 +1,177 @@ +publicURL)) { + $endpoint->setPublicUrl($endpoint->getVersionedUrl($object->publicURL, $supportedServiceVersion, $client)); + } + if (isset($object->internalURL)) { + $endpoint->setPrivateUrl($endpoint->getVersionedUrl($object->internalURL, $supportedServiceVersion, $client)); + } + if (isset($object->region)) { + $endpoint->setRegion($object->region); + } + + return $endpoint; + } + + /** + * @param $publicUrl + * @return $this + */ + public function setPublicUrl(Url $publicUrl) + { + $this->publicUrl = $publicUrl; + + return $this; + } + + /** + * @return Url + */ + public function getPublicUrl() + { + return $this->publicUrl; + } + + /** + * @param $privateUrl + * @return $this + */ + public function setPrivateUrl(Url $privateUrl) + { + $this->privateUrl = $privateUrl; + + return $this; + } + + /** + * @return Url + */ + public function getPrivateUrl() + { + return $this->privateUrl; + } + + /** + * @param $region + * @return $this + */ + public function setRegion($region) + { + $this->region = $region; + + return $this; + } + + /** + * @return string + */ + public function getRegion() + { + return $this->region; + } + + /** + * Returns the endpoint URL with a version in it + * + * @param string $url Endpoint URL + * @param string $supportedServiceVersion Service version supported by the SDK + * @param OpenCloud\OpenStack $client OpenStack client + * @return Guzzle/Http/Url Endpoint URL with version in it + */ + private function getVersionedUrl($url, $supportedServiceVersion, OpenStack $client) + { + $versionRegex = '/\/[vV][0-9][0-9\.]*/'; + if (1 === preg_match($versionRegex, $url)) { + // URL has version in it; use it as-is + return Url::factory($url); + } + + // If there is no version in $url but no $supportedServiceVersion + // is specified, just return $url as-is but log a warning + if (is_null($supportedServiceVersion)) { + $client->getLogger()->warning('Service version supported by SDK not specified. Using versionless service URL as-is, without negotiating version.'); + return Url::factory($url); + } + + // Make GET request to URL + $response = Formatter::decode($client->get($url)->send()); + + // Attempt to parse response and determine URL for given $version + if (!isset($response->versions) || !is_array($response->versions)) { + throw new UnsupportedVersionError('Could not negotiate version with service.'); + } + + foreach ($response->versions as $version) { + if (($version->status == 'CURRENT' || $version->status == 'SUPPORTED') + && $version->id == $supportedServiceVersion) { + foreach ($version->links as $link) { + if ($link->rel == 'self') { + return Url::factory($link->href); + } + } + } + } + + // If we've reached this point, we could not find a versioned + // URL in the response; throw an error + throw new UnsupportedVersionError(sprintf( + 'SDK supports version %s which is not currently provided by service.', + $supportedServiceVersion + )); + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Service/NovaService.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Service/NovaService.php new file mode 100644 index 0000000..e03508a --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Service/NovaService.php @@ -0,0 +1,69 @@ +collection('OpenCloud\Compute\Resource\Flavor', $this->getUrl($path, $filter)); + } + + /** + * Loads the available namespaces from the /extensions resource + */ + protected function loadNamespaces() + { + foreach ($this->getExtensions() as $object) { + $this->namespaces[] = $object->alias; + } + + if (!empty($this->additionalNamespaces)) { + $this->namespaces += $this->additionalNamespaces; + } + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Service/ServiceBuilder.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Service/ServiceBuilder.php new file mode 100644 index 0000000..cf59f4a --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Service/ServiceBuilder.php @@ -0,0 +1,52 @@ +getUser() && ($defaultRegion = $client->getUser()->getDefaultRegion())) { + $region = $defaultRegion; + } else { + $region = null; + } + + return new $class($client, null, $name, $region, $urlType); + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Service/ServiceInterface.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Service/ServiceInterface.php new file mode 100644 index 0000000..d10749e --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Common/Service/ServiceInterface.php @@ -0,0 +1,33 @@ +id = $id; + } + + /** + * @return string Returns the ID + */ + public function getId() + { + return $this->id; + } + + /** + * @param $name Sets the name + */ + public function setName($name) + { + $this->name = $name; + } + + /** + * @return string Returns the name + */ + public function getName() + { + return $this->name; + } + + /** + * @param $description Sets the description + */ + public function setDescription($description) + { + $this->description = $description; + } + + /** + * @return string Returns the description + */ + public function getDescription() + { + return $this->description; + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Identity/Resource/Tenant.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Identity/Resource/Tenant.php new file mode 100644 index 0000000..6bf300a --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Identity/Resource/Tenant.php @@ -0,0 +1,110 @@ +id = $id; + } + + /** + * @return string Returns the ID + */ + public function getId() + { + return $this->id; + } + + /** + * @param $name Sets the name + */ + public function setName($name) + { + $this->name = $name; + } + + /** + * @return string Returns the name + */ + public function getName() + { + return $this->name; + } + + /** + * @param $description Sets the description + */ + public function setDescription($description) + { + $this->description = $description; + } + + /** + * @return string Returns the description + */ + public function getDescription() + { + return $this->description; + } + + /** + * @param $enabled Enables/disables the tenant + */ + public function setEnabled($enabled) + { + $this->enabled = $enabled; + } + + /** + * @return bool Checks whether this tenant is enabled or not + */ + public function isEnabled() + { + return $this->enabled === true; + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Identity/Resource/Token.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Identity/Resource/Token.php new file mode 100644 index 0000000..4a72e48 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Identity/Resource/Token.php @@ -0,0 +1,79 @@ +id = $id; + } + + /** + * @return string Returns the ID + */ + public function getId() + { + return $this->id; + } + + /** + * @param $expires Set the expiry timestamp + */ + public function setExpires($expires) + { + $this->expires = $expires; + } + + /** + * @return string Get the expiry timestamp + */ + public function getExpires() + { + return $this->expires; + } + + /** + * @return bool Check whether this token has expired (i.e. still valid or not) + */ + public function hasExpired() + { + return time() >= strtotime($this->expires); + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Identity/Resource/User.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Identity/Resource/User.php new file mode 100644 index 0000000..736fbd0 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Identity/Resource/User.php @@ -0,0 +1,358 @@ + 'username', + 'RAX-AUTH:defaultRegion' => 'defaultRegion', + 'RAX-AUTH:domainId' => 'domainId', + 'OS-KSADM:password' => 'password' + ); + + protected static $url_resource = 'users'; + protected static $json_name = 'user'; + + public function createJson() + { + $json = parent::createJson(); + + if ($this->getClient() instanceof Rackspace) { + $json->user->username = $json->user->name; + unset($json->user->name); + } + + return $json; + } + + /** + * @param $region Set the default region + */ + public function setDefaultRegion($region) + { + $this->defaultRegion = $region; + } + + /** + * @return string Get the default region + */ + public function getDefaultRegion() + { + return $this->defaultRegion; + } + + /** + * @param $domainId Set the domain ID + */ + public function setDomainId($domainId) + { + $this->domainId = $domainId; + } + + /** + * @return string Get the domain ID + */ + public function getDomainId() + { + return $this->domainId; + } + + /** + * @param $id Set the ID + */ + public function setId($id) + { + $this->id = $id; + } + + /** + * @return int Get the ID + */ + public function getId() + { + return $this->id; + } + + /** + * @param $username Set the username + */ + public function setUsername($username) + { + $this->username = $username; + } + + /** + * @return string Get the username + */ + public function getUsername() + { + return $this->username; + } + + /** + * @param $email Sets the email + */ + public function setEmail($email) + { + $this->email = $email; + } + + /** + * @return string Get the email + */ + public function getEmail() + { + return $this->email; + } + + /** + * @param $enabled Sets the enabled flag + */ + public function setEnabled($enabled) + { + $this->enabled = $enabled; + } + + /** + * @return bool Get the enabled flag + */ + public function getEnabled() + { + return $this->enabled; + } + + /** + * @return bool Check whether this user is enabled or not + */ + public function isEnabled() + { + return $this->enabled === true; + } + + /** + * @param $password Set the password + */ + public function setPassword($password) + { + $this->password = $password; + } + + /** + * @return string Get the password + */ + public function getPassword() + { + return $this->password; + } + + /** + * @return string + */ + public function primaryKeyField() + { + return 'id'; + } + + public function updateJson($params = array()) + { + $array = array(); + foreach ($this->updateKeys as $key) { + if (isset($this->$key)) { + $array[$key] = $this->$key; + } + } + + return (object) array('user' => $array); + } + + /** + * This operation will set the user's password to a new value. + * + * @param $newPassword The new password to use for this user + * @return \Guzzle\Http\Message\Response + */ + public function updatePassword($newPassword) + { + $array = array( + 'username' => $this->username, + 'OS-KSADM:password' => $newPassword + ); + + $json = json_encode((object) array('user' => $array)); + + return $this->getClient()->post($this->getUrl(), self::getJsonHeader(), $json)->send(); + } + + /** + * This operation lists a user's non-password credentials for all authentication methods available to the user. + * + * @return array|null + */ + public function getOtherCredentials() + { + $url = $this->getUrl(); + $url->addPath('OS-KSADM')->addPath('credentials'); + + $response = $this->getClient()->get($url)->send(); + + if ($body = Formatter::decode($response)) { + return isset($body->credentials) ? $body->credentials : null; + } + } + + /** + * Get the API key for this user. + * + * @return string|null + */ + public function getApiKey() + { + $url = $this->getUrl(); + $url->addPath('OS-KSADM')->addPath('credentials')->addPath('RAX-KSKEY:apiKeyCredentials'); + + $response = $this->getClient()->get($url)->send(); + + if ($body = Formatter::decode($response)) { + return isset($body->{'RAX-KSKEY:apiKeyCredentials'}->apiKey) + ? $body->{'RAX-KSKEY:apiKeyCredentials'}->apiKey + : null; + } + } + + /** + * Reset the API key for this user to a new arbitrary value (which is returned). + * + * @return string|null + */ + public function resetApiKey() + { + $url = $this->getUrl(); + $url->addPath('OS-KSADM') + ->addPath('credentials') + ->addPath('RAX-KSKEY:apiKeyCredentials') + ->addPath('RAX-AUTH') + ->addPath('reset'); + + $response = $this->getClient()->post($url)->send(); + + if ($body = Formatter::decode($response)) { + return isset($body->{'RAX-KSKEY:apiKeyCredentials'}->apiKey) + ? $body->{'RAX-KSKEY:apiKeyCredentials'}->apiKey + : null; + } + } + + /** + * Add a role, specified by its ID, to a user. + * + * @param $roleId + * @return \Guzzle\Http\Message\Response + */ + public function addRole($roleId) + { + $url = $this->getUrl(); + $url->addPath('roles')->addPath('OS-KSADM')->addPath($roleId); + + return $this->getClient()->put($url)->send(); + } + + /** + * Remove a role, specified by its ID, from a user. + * + * @param $roleId + * @return \Guzzle\Http\Message\Response + */ + public function removeRole($roleId) + { + $url = $this->getUrl(); + $url->addPath('roles')->addPath('OS-KSADM')->addPath($roleId); + + return $this->getClient()->delete($url)->send(); + } + + /** + * Get all the roles for which this user is associated with. + * + * @return \OpenCloud\Common\Collection\PaginatedIterator + */ + public function getRoles() + { + $url = $this->getUrl(); + $url->addPath('roles'); + + return PaginatedIterator::factory($this, array( + 'baseUrl' => $url, + 'resourceClass' => 'Role', + 'key.collection' => 'roles', + 'key.links' => 'roles_links' + )); + } + + public function update($params = array()) + { + if (!empty($params)) { + $this->populate($params); + } + + $json = json_encode($this->updateJson($params)); + $this->checkJsonError(); + + return $this->getClient()->post($this->getUrl(), self::getJsonHeader(), $json)->send(); + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Identity/Service.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Identity/Service.php new file mode 100644 index 0000000..4e34f1e --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Identity/Service.php @@ -0,0 +1,217 @@ +hasLogger()) { + $identity->setLogger($client->getLogger()); + } + + $identity->setClient($client); + $identity->setEndpoint(clone $client->getAuthUrl()); + + return $identity; + } + + /** + * Get this service's URL, with appended path if necessary. + * + * @return \Guzzle\Http\Url + */ + public function getUrl($path = null) + { + $url = clone $this->getEndpoint(); + + if ($path) { + $url->addPath($path); + } + + return $url; + } + + /** + * Get all users for the current tenant. + * + * @return \OpenCloud\Common\Collection\ResourceIterator + */ + public function getUsers() + { + $response = $this->getClient()->get($this->getUrl('users'))->send(); + + if ($body = Formatter::decode($response)) { + return ResourceIterator::factory($this, array( + 'resourceClass' => 'User', + 'key.collection' => 'users' + ), $body->users); + } + } + + /** + * Used for iterator resource instantation. + */ + public function user($info = null) + { + return $this->resource('User', $info); + } + + /** + * Get a user based on a particular keyword and a certain search mode. + * + * @param $search string Keyword + * @param $mode string Either 'name', 'userId' or 'email' + * @return \OpenCloud\Identity\Resource\User + */ + public function getUser($search, $mode = UserConst::MODE_NAME) + { + $url = $this->getUrl('users'); + + switch ($mode) { + default: + case UserConst::MODE_NAME: + $url->setQuery(array('name' => $search)); + break; + case UserConst::MODE_ID: + $url->addPath($search); + break; + case UserConst::MODE_EMAIL: + $url->setQuery(array('email' => $search)); + break; + } + + $user = $this->resource('User'); + $user->refreshFromLocationUrl($url); + + return $user; + } + + /** + * Create a new user with provided params. + * + * @param $params array User data + * @return \OpenCloud\Identity\Resource\User + */ + public function createUser(array $params) + { + $user = $this->resource('User'); + $user->create($params); + + return $user; + } + + /** + * Get all possible roles. + * + * @return \OpenCloud\Common\Collection\PaginatedIterator + */ + public function getRoles() + { + return PaginatedIterator::factory($this, array( + 'resourceClass' => 'Role', + 'baseUrl' => $this->getUrl()->addPath('OS-KSADM')->addPath('roles'), + 'key.marker' => 'id', + 'key.collection' => 'roles' + )); + } + + /** + * Get a specific role. + * + * @param $roleId string The ID of the role you're looking for + * @return \OpenCloud\Identity\Resource\Role + */ + public function getRole($roleId) + { + return $this->resource('Role', $roleId); + } + + /** + * Generate a new token for a given user. + * + * @param $json string The JSON data-structure used in the HTTP entity body when POSTing to the API + * @headers $headers array Additional headers to send (optional) + * @return \Guzzle\Http\Message\Response + */ + public function generateToken($json, array $headers = array()) + { + $url = $this->getUrl(); + $url->addPath('tokens'); + + $headers += self::getJsonHeader(); + + return $this->getClient()->post($url, $headers, $json)->send(); + } + + /** + * Revoke a given token based on its ID + * + * @param $tokenId string Token ID + * @return \Guzzle\Http\Message\Response + */ + public function revokeToken($tokenId) + { + $token = $this->resource('Token'); + $token->setId($tokenId); + + return $token->delete(); + } + + /** + * List over all the tenants for this cloud account. + * + * @return \OpenCloud\Common\Collection\ResourceIterator + */ + public function getTenants() + { + $url = $this->getUrl(); + $url->addPath('tenants'); + + $response = $this->getClient()->get($url)->send(); + + if ($body = Formatter::decode($response)) { + return ResourceIterator::factory($this, array( + 'resourceClass' => 'Tenant', + 'key.collection' => 'tenants' + ), $body->tenants); + } + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/AbstractService.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/AbstractService.php new file mode 100644 index 0000000..8f92874 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/AbstractService.php @@ -0,0 +1,39 @@ +resourceList('CDNContainer', $this->getUrl(null, $filter), $this); + } + + public function cdnContainer($data) + { + $container = new CDNContainer($this, $data); + + $metadata = new ContainerMetadata(); + $metadata->setArray(array( + 'Streaming-Uri' => $data->cdn_streaming_uri, + 'Ios-Uri' => $data->cdn_ios_uri, + 'Ssl-Uri' => $data->cdn_ssl_uri, + 'Enabled' => $data->cdn_enabled, + 'Ttl' => $data->ttl, + 'Log-Retention' => $data->log_retention, + 'Uri' => $data->cdn_uri, + )); + + $container->setMetadata($metadata); + + return $container; + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Constants/Header.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Constants/Header.php new file mode 100644 index 0000000..9ab4b50 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Constants/Header.php @@ -0,0 +1,32 @@ +getResponse() + ); + + $e = new self($message); + + $e->name = $name; + $e->response = $exception->getResponse(); + $e->request = $exception->getRequest(); + + return $e; + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Exception/StreamException.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Exception/StreamException.php new file mode 100644 index 0000000..3bf0ae7 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Exception/StreamException.php @@ -0,0 +1,22 @@ +getMessage(), + 0, + $exception + ); + + $this->state = $state; + } + + public function getState() + { + return $this->state; + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Resource/AbstractContainer.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Resource/AbstractContainer.php new file mode 100644 index 0000000..a363206 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Resource/AbstractContainer.php @@ -0,0 +1,127 @@ +service = $service; + $this->metadata = new $this->metadataClass; + + // Populate data if set + $this->populate($data); + } + + public function getTransId() + { + return $this->metadata->getProperty(HeaderConst::TRANS_ID); + } + + abstract public function isCdnEnabled(); + + public function hasLogRetention() + { + if ($this instanceof CDNContainer) { + return $this->metadata->getProperty(HeaderConst::LOG_RETENTION) == 'True'; + } else { + return $this->metadata->propertyExists(HeaderConst::ACCESS_LOGS); + } + } + + public function primaryKeyField() + { + return 'name'; + } + + public function getUrl($path = null, array $params = array()) + { + if (strlen($this->getName()) == 0) { + throw new Exceptions\NoNameError('Container does not have a name'); + } + + $url = $this->getService()->getUrl(); + + return $url->addPath((string) $this->getName())->addPath((string) $path)->setQuery($params); + } + + protected function createRefreshRequest() + { + return $this->getClient()->head($this->getUrl(), array('Accept' => '*/*')); + } + + /** + * This method will enable your CDN-enabled container to serve out HTML content like a website. + * + * @param $indexPage The data object name (i.e. a .html file) that will serve as the main index page. + * @return \Guzzle\Http\Message\Response + */ + public function setStaticIndexPage($page) + { + if ($this instanceof CDNContainer) { + $this->getLogger()->warning( + 'This method cannot be called on the CDN object - please execute it on the normal Container' + ); + } + + $headers = array('X-Container-Meta-Web-Index' => $page); + + return $this->getClient()->post($this->getUrl(), $headers)->send(); + } + + /** + * Set the default error page for your static site. + * + * @param $name The data object name (i.e. a .html file) that will serve as the main error page. + * @return \Guzzle\Http\Message\Response + */ + public function setStaticErrorPage($page) + { + if ($this instanceof CDNContainer) { + $this->getLogger()->warning( + 'This method cannot be called on the CDN object - please execute it on the normal Container' + ); + } + + $headers = array('X-Container-Meta-Web-Error' => $page); + + return $this->getClient()->post($this->getUrl(), $headers)->send(); + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Resource/AbstractResource.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Resource/AbstractResource.php new file mode 100644 index 0000000..e2d494e --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Resource/AbstractResource.php @@ -0,0 +1,238 @@ +service = $service; + $this->metadata = new $this->metadataClass; + } + + public function getService() + { + return $this->service; + } + + public function getCdnService() + { + return $this->service->getCDNService(); + } + + public function getClient() + { + return $this->service->getClient(); + } + + /** + * Factory method that allows for easy instantiation from a Response object. + * + * @param Response $response + * @param ServiceInterface $service + * @return static + */ + public static function fromResponse(Response $response, ServiceInterface $service) + { + $object = new static($service); + + if (null !== ($headers = $response->getHeaders())) { + $object->setMetadata($headers, true); + } + + return $object; + } + + /** + * Trim headers of their resource-specific prefixes. + * + * @param $headers + * @return array + */ + public static function trimHeaders($headers) + { + $output = array(); + + foreach ($headers as $header => $value) { + // Only allow allow X--* headers to pass through after stripping them + if (static::headerIsValidMetadata($header) && ($key = self::stripPrefix($header))) { + $output[$key] = (string) $value; + } + } + + return $output; + } + + protected static function headerIsValidMetadata($header) + { + $pattern = sprintf('#^%s\-#i', self::GLOBAL_METADATA_PREFIX); + + return preg_match($pattern, $header); + } + + /** + * Strip an individual header name of its resource-specific prefix. + * + * @param $header + * @return mixed + */ + protected static function stripPrefix($header) + { + $pattern = '#^' . self::GLOBAL_METADATA_PREFIX . '\-(' . static::METADATA_LABEL . '-)?(Meta-)?#i'; + + return preg_replace($pattern, '', $header); + } + + /** + * Prepend/stock the header names with a resource-specific prefix. + * + * @param array $headers + * @return array + */ + public static function stockHeaders(array $headers) + { + $output = array(); + $prefix = null; + $corsHeaders = array( + 'Access-Control-Allow-Origin', + 'Access-Control-Expose-Headers', + 'Access-Control-Max-Age', + 'Access-Control-Allow-Credentials', + 'Access-Control-Allow-Methods', + 'Access-Control-Allow-Headers' + ); + foreach ($headers as $header => $value) { + if (!in_array($header, $corsHeaders)) { + $prefix = self::GLOBAL_METADATA_PREFIX . '-' . static::METADATA_LABEL . '-Meta-'; + } + $output[$prefix . $header] = $value; + } + + return $output; + } + + /** + * Set the metadata (local-only) for this object. + * + * @param $data + * @param bool $constructFromResponse + * @return $this + */ + public function setMetadata($data, $constructFromResponse = false) + { + if ($constructFromResponse) { + $metadata = new $this->metadataClass; + $metadata->setArray(self::trimHeaders($data)); + $data = $metadata; + } + + $this->metadata = $data; + + return $this; + } + + /** + * @return \OpenCloud\Common\Metadata + */ + public function getMetadata() + { + return $this->metadata; + } + + /** + * Push local metadata to the API, thereby executing a permanent save. + * + * @param array $metadata The array of values you want to set as metadata + * @param bool $stockPrefix Whether to prepend each array key with the metadata-specific prefix. For objects, this + * would be X-Object-Meta-Foo => Bar + * @return mixed + */ + public function saveMetadata(array $metadata, $stockPrefix = true) + { + $headers = ($stockPrefix === true) ? self::stockHeaders($metadata) : $metadata; + + return $this->getClient()->post($this->getUrl(), $headers)->send(); + } + + /** + * Retrieve metadata from the API. This method will then set and return this value. + * + * @return \OpenCloud\Common\Metadata + */ + public function retrieveMetadata() + { + $response = $this->getClient() + ->head($this->getUrl()) + ->send(); + + $this->setMetadata($response->getHeaders(), true); + + return $this->metadata; + } + + /** + * To delete or unset a particular metadata item. + * + * @param $key + * @return mixed + */ + public function unsetMetadataItem($key) + { + $header = sprintf('%s-Remove-%s-Meta-%s', self::GLOBAL_METADATA_PREFIX, + static::METADATA_LABEL, $key); + + $headers = array($header => 'True'); + + return $this->getClient() + ->post($this->getUrl(), $headers) + ->send(); + } + + /** + * Append a particular array of values to the existing metadata. Analogous to a merge. + * + * @param array $values + * @return array + */ + public function appendToMetadata(array $values) + { + return (!empty($this->metadata) && is_array($this->metadata)) + ? array_merge($this->metadata, $values) + : $values; + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Resource/Account.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Resource/Account.php new file mode 100644 index 0000000..dd9caf7 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Resource/Account.php @@ -0,0 +1,106 @@ +getService()->getUrl(); + } + + /** + * Convenience method. + * + * @return \OpenCloud\Common\Metadata + */ + public function getDetails() + { + return $this->retrieveMetadata(); + } + + /** + * @return null|string|int + */ + public function getObjectCount() + { + return $this->metadata->getProperty('Object-Count'); + } + + /** + * @return null|string|int + */ + public function getContainerCount() + { + return $this->metadata->getProperty('Container-Count'); + } + + /** + * @return null|string|int + */ + public function getBytesUsed() + { + return $this->metadata->getProperty('Bytes-Used'); + } + + /** + * Sets the secret value for the temporary URL. + * + * @link http://docs.rackspace.com/files/api/v1/cf-devguide/content/Set_Account_Metadata-d1a4460.html + * + * @param null $secret The value to set the secret to. If left blank, a random hash is generated. + * @return $this + */ + public function setTempUrlSecret($secret = null) + { + if (!$secret) { + $secret = sha1(rand(1, 99999)); + } + + $this->tempUrlSecret = $secret; + + $this->saveMetadata($this->appendToMetadata(array('Temp-Url-Key' => $secret))); + + return $this; + } + + /** + * @return null|string + */ + public function getTempUrlSecret() + { + if (null === $this->tempUrlSecret) { + $this->retrieveMetadata(); + $this->tempUrlSecret = $this->metadata->getProperty('Temp-Url-Key'); + } + + return $this->tempUrlSecret; + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Resource/CDNContainer.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Resource/CDNContainer.php new file mode 100644 index 0000000..80e5473 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Resource/CDNContainer.php @@ -0,0 +1,122 @@ +metadata->getProperty('Ssl-Uri'); + } + + /** + * @return null|string|int + */ + public function getCdnUri() + { + return $this->metadata->getProperty('Uri'); + } + + /** + * @return null|string|int + */ + public function getTtl() + { + return $this->metadata->getProperty('Ttl'); + } + + /** + * @return null|string|int + */ + public function getCdnStreamingUri() + { + return $this->metadata->getProperty('Streaming-Uri'); + } + + /** + * @return null|string|int + */ + public function getIosStreamingUri() + { + return $this->metadata->getProperty('Ios-Uri'); + } + + public function refresh($name = null, $url = null) + { + $response = $this->createRefreshRequest()->send(); + + $headers = $response->getHeaders(); + $this->setMetadata($headers, true); + + return $headers; + } + + /** + * Turn on access logs, which track all the web traffic that your data objects accrue. + * + * @return \Guzzle\Http\Message\Response + */ + public function enableCdnLogging() + { + $headers = array('X-Log-Retention' => 'True'); + + return $this->getClient()->put($this->getUrl(), $headers)->send(); + } + + /** + * Disable access logs. + * + * @return \Guzzle\Http\Message\Response + */ + public function disableCdnLogging() + { + $headers = array('X-Log-Retention' => 'False'); + + return $this->getClient()->put($this->getUrl(), $headers)->send(); + } + + public function isCdnEnabled() + { + return $this->metadata->getProperty(HeaderConst::ENABLED) == 'True'; + } + + /** + * Set the TTL. + * + * @param $ttl The time-to-live in seconds. + * @return \Guzzle\Http\Message\Response + */ + public function setTtl($ttl) + { + $headers = array('X-Ttl' => $ttl); + + return $this->getClient()->post($this->getUrl(), $headers)->send(); + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Resource/Container.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Resource/Container.php new file mode 100644 index 0000000..0f7b0df --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Resource/Container.php @@ -0,0 +1,602 @@ +count)) { + $this->metadata->setProperty('Object-Count', $data->count); + } + if (isset($data->bytes)) { + $this->metadata->setProperty('Bytes-Used', $data->bytes); + } + } + + /** + * Factory method that instantiates an object from a Response object. + * + * @param Response $response + * @param ServiceInterface $service + * @return static + */ + public static function fromResponse(Response $response, ServiceInterface $service) + { + $self = parent::fromResponse($response, $service); + + $segments = Url::factory($response->getEffectiveUrl())->getPathSegments(); + $self->name = end($segments); + + return $self; + } + + /** + * Get the CDN object. + * + * @return null|CDNContainer + * @throws \OpenCloud\Common\Exceptions\CdnNotAvailableError + */ + public function getCdn() + { + if (!$this->isCdnEnabled()) { + throw new Exceptions\CdnNotAvailableError( + 'Either this container is not CDN-enabled or the CDN is not available' + ); + } + + return $this->cdn; + } + + /** + * It would be awesome to put these convenience methods (which are identical to the ones in the Account object) in + * a trait, but we have to wait for v5.3 EOL first... + * + * @return null|string|int + */ + public function getObjectCount() + { + return $this->metadata->getProperty('Object-Count'); + } + + /** + * @return null|string|int + */ + public function getBytesUsed() + { + return $this->metadata->getProperty('Bytes-Used'); + } + + /** + * @param $value + * @return mixed + */ + public function setCountQuota($value) + { + $this->metadata->setProperty('Quota-Count', $value); + + return $this->saveMetadata($this->metadata->toArray()); + } + + /** + * @return null|string|int + */ + public function getCountQuota() + { + return $this->metadata->getProperty('Quota-Count'); + } + + /** + * @param $value + * @return mixed + */ + public function setBytesQuota($value) + { + $this->metadata->setProperty('Quota-Bytes', $value); + + return $this->saveMetadata($this->metadata->toArray()); + } + + /** + * @return null|string|int + */ + public function getBytesQuota() + { + return $this->metadata->getProperty('Quota-Bytes'); + } + + public function delete($deleteObjects = false) + { + if ($deleteObjects === true) { + // Delegate to auxiliary method + return $this->deleteWithObjects(); + } + + try { + return $this->getClient()->delete($this->getUrl())->send(); + } catch (ClientErrorResponseException $e) { + if ($e->getResponse()->getStatusCode() == 409) { + throw new ContainerException(sprintf( + 'The API returned this error: %s. You might have to delete all existing objects before continuing.', + (string) $e->getResponse()->getBody() + )); + } else { + throw $e; + } + } + } + + public function deleteWithObjects($secondsToWait = null) + { + // If container is empty, just delete it + $numObjects = (int) $this->retrieveMetadata()->getProperty('Object-Count'); + if (0 === $numObjects) { + return $this->delete(); + } + + // If timeout ($secondsToWait) is not specified by caller, + // try to estimate it based on number of objects in container + if (null === $secondsToWait) { + $secondsToWait = round($numObjects / 2); + } + + // Attempt to delete all objects and container + $endTime = time() + $secondsToWait; + $containerDeleted = false; + while ((time() < $endTime) && !$containerDeleted) { + $this->deleteAllObjects(); + try { + $response = $this->delete(); + $containerDeleted = true; + } catch (ContainerException $e) { + // Ignore exception and try again + } catch (ClientErrorResponseException $e) { + if ($e->getResponse()->getStatusCode() == 404) { + // Container has been deleted + $containerDeleted = true; + } else { + throw $e; + } + } + } + + if (!$containerDeleted) { + throw new ContainerException('Container and all its objects could not be deleted.'); + } + + return $response; + } + + /** + * Deletes all objects that this container currently contains. Useful when doing operations (like a delete) that + * require an empty container first. + * + * @return mixed + */ + public function deleteAllObjects() + { + $paths = array(); + $objects = $this->objectList(); + foreach ($objects as $object) { + $paths[] = sprintf('/%s/%s', $this->getName(), $object->getName()); + } + return $this->getService()->batchDelete($paths); + } + + /** + * Creates a Collection of objects in the container + * + * @param array $params associative array of parameter values. + * * account/tenant - The unique identifier of the account/tenant. + * * container- The unique identifier of the container. + * * limit (Optional) - The number limit of results. + * * marker (Optional) - Value of the marker, that the object names + * greater in value than are returned. + * * end_marker (Optional) - Value of the marker, that the object names + * less in value than are returned. + * * prefix (Optional) - Value of the prefix, which the returned object + * names begin with. + * * format (Optional) - Value of the serialized response format, either + * json or xml. + * * delimiter (Optional) - Value of the delimiter, that all the object + * names nested in the container are returned. + * @link http://api.openstack.org for a list of possible parameter + * names and values + * @return \OpenCloud\Common\Collection + * @throws ObjFetchError + */ + public function objectList(array $params = array()) + { + $params['format'] = 'json'; + + return $this->getService()->resourceList('DataObject', $this->getUrl(null, $params), $this); + } + + /** + * Turn on access logs, which track all the web traffic that your data objects accrue. + * + * @return \Guzzle\Http\Message\Response + */ + public function enableLogging() + { + return $this->saveMetadata($this->appendToMetadata(array( + HeaderConst::ACCESS_LOGS => 'True' + ))); + } + + /** + * Disable access logs. + * + * @return \Guzzle\Http\Message\Response + */ + public function disableLogging() + { + return $this->saveMetadata($this->appendToMetadata(array( + HeaderConst::ACCESS_LOGS => 'False' + ))); + } + + /** + * Enable this container for public CDN access. + * + * @param null $ttl + */ + public function enableCdn($ttl = null) + { + $headers = array('X-CDN-Enabled' => 'True'); + if ($ttl) { + $headers['X-TTL'] = (int) $ttl; + } + + $this->getClient()->put($this->getCdnService()->getUrl($this->name), $headers)->send(); + $this->refresh(); + } + + /** + * Disables the containers CDN function. Note that the container will still + * be available on the CDN until its TTL expires. + * + * @return \Guzzle\Http\Message\Response + */ + public function disableCdn() + { + $headers = array('X-CDN-Enabled' => 'False'); + + return $this->getClient() + ->put($this->getCdnService()->getUrl($this->name), $headers) + ->send(); + } + + public function refresh($id = null, $url = null) + { + $headers = $this->createRefreshRequest()->send()->getHeaders(); + $this->setMetadata($headers, true); + + try { + if (null !== ($cdnService = $this->getService()->getCDNService())) { + $cdn = new CDNContainer($cdnService); + $cdn->setName($this->name); + + $response = $cdn->createRefreshRequest()->send(); + + if ($response->isSuccessful()) { + $this->cdn = $cdn; + $this->cdn->setMetadata($response->getHeaders(), true); + } + } else { + $this->cdn = null; + } + } catch (ClientErrorResponseException $e) { + } + } + + /** + * Get either a fresh data object (no $info), or get an existing one by passing in data for population. + * + * @param mixed $info + * @return DataObject + */ + public function dataObject($info = null) + { + return new DataObject($this, $info); + } + + /** + * Retrieve an object from the API. Apart from using the name as an + * identifier, you can also specify additional headers that will be used + * fpr a conditional GET request. These are + * + * * `If-Match' + * * `If-None-Match' + * * `If-Modified-Since' + * * `If-Unmodified-Since' + * * `Range' For example: + * bytes=-5 would mean the last 5 bytes of the object + * bytes=10-15 would mean 5 bytes after a 10 byte offset + * bytes=32- would mean all dat after first 32 bytes + * + * These are also documented in RFC 2616. + * + * @param string $name + * @param array $headers + * @return DataObject + */ + public function getObject($name, array $headers = array()) + { + try { + $response = $this->getClient() + ->get($this->getUrl($name), $headers) + ->send(); + } catch (BadResponseException $e) { + if ($e->getResponse()->getStatusCode() == 404) { + throw ObjectNotFoundException::factory($name, $e); + } + throw $e; + } + + return $this->dataObject() + ->populateFromResponse($response) + ->setName($name); + } + + /** + * Essentially the same as {@see getObject()}, except only the metadata is fetched from the API. + * This is useful for cases when the user does not want to fetch the full entity body of the + * object, only its metadata. + * + * @param $name + * @param array $headers + * @return $this + */ + public function getPartialObject($name, array $headers = array()) + { + $response = $this->getClient() + ->head($this->getUrl($name), $headers) + ->send(); + + return $this->dataObject() + ->populateFromResponse($response) + ->setName($name); + } + + /** + * Check if an object exists inside a container. Uses {@see getPartialObject()} + * to save on bandwidth and time. + * + * @param $name Object name + * @return boolean True, if object exists in this container; false otherwise. + */ + public function objectExists($name) + { + try { + // Send HEAD request to check resource existence + $url = clone $this->getUrl(); + $url->addPath((string) $name); + $this->getClient()->head($url)->send(); + } catch (ClientErrorResponseException $e) { + // If a 404 was returned, then the object doesn't exist + if ($e->getResponse()->getStatusCode() === 404) { + return false; + } else { + throw $e; + } + } + + return true; + } + + /** + * Upload a single file to the API. + * + * @param $name Name that the file will be saved as in your container. + * @param $data Either a string or stream representation of the file contents to be uploaded. + * @param array $headers Optional headers that will be sent with the request (useful for object metadata). + * @return DataObject + */ + public function uploadObject($name, $data, array $headers = array()) + { + $entityBody = EntityBody::factory($data); + + $url = clone $this->getUrl(); + $url->addPath($name); + + // @todo for new major release: Return response rather than populated DataObject + + $response = $this->getClient()->put($url, $headers, $entityBody)->send(); + + return $this->dataObject() + ->populateFromResponse($response) + ->setName($name) + ->setContent($entityBody); + } + + /** + * Upload an array of objects for upload. This method optimizes the upload procedure by batching requests for + * faster execution. This is a very useful procedure when you just have a bunch of unremarkable files to be + * uploaded quickly. Each file must be under 5GB. + * + * @param array $files With the following array structure: + * `name' Name that the file will be saved as in your container. Required. + * `path' Path to an existing file, OR + * `body' Either a string or stream representation of the file contents to be uploaded. + * @param array $headers Optional headers that will be sent with the request (useful for object metadata). + * @param string $returnType One of OpenCloud\ObjectStore\Enum\ReturnType::RESPONSE_ARRAY (to return an array of + * Guzzle\Http\Message\Response objects) or OpenCloud\ObjectStore\Enum\ReturnType::DATA_OBJECT_ARRAY + * (to return an array of OpenCloud\ObjectStore\Resource\DataObject objects). + * + * @throws \OpenCloud\Common\Exceptions\InvalidArgumentError + * @return Guzzle\Http\Message\Response[] or OpenCloud\ObjectStore\Resource\DataObject[] depending on $returnType + */ + public function uploadObjects(array $files, array $commonHeaders = array(), $returnType = ReturnType::RESPONSE_ARRAY) + { + $requests = $entities = array(); + + foreach ($files as $entity) { + if (empty($entity['name'])) { + throw new Exceptions\InvalidArgumentError('You must provide a name.'); + } + + if (!empty($entity['path']) && file_exists($entity['path'])) { + $body = fopen($entity['path'], 'r+'); + } elseif (!empty($entity['body'])) { + $body = $entity['body']; + } else { + throw new Exceptions\InvalidArgumentError('You must provide either a readable path or a body'); + } + + $entityBody = $entities[] = EntityBody::factory($body); + + // @codeCoverageIgnoreStart + if ($entityBody->getContentLength() >= 5 * Size::GB) { + throw new Exceptions\InvalidArgumentError( + 'For multiple uploads, you cannot upload more than 5GB per ' + . ' file. Use the UploadBuilder for larger files.' + ); + } + // @codeCoverageIgnoreEnd + + // Allow custom headers and common + $headers = (isset($entity['headers'])) ? $entity['headers'] : $commonHeaders; + + $url = clone $this->getUrl(); + $url->addPath($entity['name']); + + $requests[] = $this->getClient()->put($url, $headers, $entityBody); + } + + $responses = $this->getClient()->send($requests); + + if (ReturnType::RESPONSE_ARRAY === $returnType) { + foreach ($entities as $entity) { + $entity->close(); + } + return $responses; + } else { + // Convert responses to DataObjects before returning + $dataObjects = array(); + foreach ($responses as $index => $response) { + $dataObjects[] = $this->dataObject() + ->populateFromResponse($response) + ->setName($files[$index]['name']) + ->setContent($entities[$index]); + } + return $dataObjects; + } + } + + /** + * When uploading large files (+5GB), you need to upload the file as chunks using multibyte transfer. This method + * sets up the transfer, and in order to execute the transfer, you need to call upload() on the returned object. + * + * @param array Options + * @see \OpenCloud\ObjectStore\Upload\UploadBuilder::setOptions for a list of accepted options. + * @throws \OpenCloud\Common\Exceptions\InvalidArgumentError + * @return mixed + */ + public function setupObjectTransfer(array $options = array()) + { + // Name is required + if (empty($options['name'])) { + throw new Exceptions\InvalidArgumentError('You must provide a name.'); + } + + // As is some form of entity body + if (!empty($options['path']) && file_exists($options['path'])) { + $body = fopen($options['path'], 'r+'); + } elseif (!empty($options['body'])) { + $body = $options['body']; + } else { + throw new Exceptions\InvalidArgumentError('You must provide either a readable path or a body'); + } + + // Build upload + $transfer = TransferBuilder::newInstance() + ->setOption('objectName', $options['name']) + ->setEntityBody(EntityBody::factory($body)) + ->setContainer($this); + + // Add extra options + if (!empty($options['metadata'])) { + $transfer->setOption('metadata', $options['metadata']); + } + if (!empty($options['partSize'])) { + $transfer->setOption('partSize', $options['partSize']); + } + if (!empty($options['concurrency'])) { + $transfer->setOption('concurrency', $options['concurrency']); + } + if (!empty($options['progress'])) { + $transfer->setOption('progress', $options['progress']); + } + + return $transfer->build(); + } + + /** + * Upload the contents of a local directory to a remote container, effectively syncing them. + * + * @param $path The local path to the directory. + */ + public function uploadDirectory($path) + { + $sync = DirectorySync::factory($path, $this); + $sync->execute(); + } + + public function isCdnEnabled() + { + return ($this->cdn instanceof CDNContainer) && $this->cdn->isCdnEnabled(); + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Resource/ContainerMetadata.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Resource/ContainerMetadata.php new file mode 100644 index 0000000..7e2e768 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Resource/ContainerMetadata.php @@ -0,0 +1,22 @@ +setContainer($container); + + parent::__construct($container->getService()); + + // For pseudo-directories, we need to ensure the name is set + if (!empty($data->subdir)) { + $this->setName($data->subdir)->setDirectory(true); + + return; + } + + $this->populate($data); + } + + /** + * A collection list of DataObjects contains a different data structure than the one returned for the + * "Retrieve Object" operation. So we need to stock the values differently. + * {@inheritDoc} + */ + public function populate($info, $setObjects = true) + { + parent::populate($info, $setObjects); + + if (isset($info->bytes)) { + $this->setContentLength($info->bytes); + } + if (isset($info->last_modified)) { + $this->setLastModified($info->last_modified); + } + if (isset($info->content_type)) { + $this->setContentType($info->content_type); + } + if (isset($info->hash)) { + $this->setEtag($info->hash); + } + } + + /** + * Takes a response and stocks common values from both the body and the headers. + * + * @param Response $response + * @return $this + */ + public function populateFromResponse(Response $response) + { + $this->content = $response->getBody(); + + $headers = $response->getHeaders(); + + return $this->setMetadata($headers, true) + ->setContentType((string) $headers[HeaderConst::CONTENT_TYPE]) + ->setLastModified((string) $headers[HeaderConst::LAST_MODIFIED]) + ->setContentLength((string) $headers[HeaderConst::CONTENT_LENGTH]) + ->setEtag((string) $headers[HeaderConst::ETAG]); + } + + public function refresh() + { + $response = $this->getService()->getClient() + ->get($this->getUrl()) + ->send(); + + return $this->populateFromResponse($response); + } + + /** + * @param Container $container + * @return $this + */ + public function setContainer(Container $container) + { + $this->container = $container; + + return $this; + } + + /** + * @return Container + */ + public function getContainer() + { + return $this->container; + } + + /** + * @param $name string + * @return $this + */ + public function setName($name) + { + $this->name = $name; + + return $this; + } + + /** + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * @param $directory bool + * @return $this + */ + public function setDirectory($directory) + { + $this->directory = $directory; + + return $this; + } + + /** + * @return bool + */ + public function getDirectory() + { + return $this->directory; + } + + /** + * @return bool Is this data object a pseudo-directory? + */ + public function isDirectory() + { + return (bool) $this->directory; + } + + /** + * @param mixed $content + * @return $this + */ + public function setContent($content) + { + $this->etag = null; + $this->contentType = null; + $this->content = EntityBody::factory($content); + + return $this; + } + + /** + * @return EntityBody + */ + public function getContent() + { + return $this->content; + } + + /** + * @param string $contentType + * @return $this + */ + public function setContentType($contentType) + { + $this->contentType = $contentType; + + return $this; + } + + /** + * @return null|string + */ + public function getContentType() + { + return $this->contentType ? : $this->content->getContentType(); + } + + /** + * @param $contentType int + * @return $this + */ + public function setContentLength($contentLength) + { + $this->contentLength = $contentLength; + + return $this; + } + + /** + * @return int + */ + public function getContentLength() + { + return $this->contentLength !== null ? $this->contentLength : $this->content->getContentLength(); + } + + /** + * @param $etag + * @return $this + */ + public function setEtag($etag) + { + $this->etag = $etag; + + return $this; + } + + /** + * @return null|string + */ + public function getEtag() + { + return $this->etag ? : $this->content->getContentMd5(); + } + + public function setLastModified($lastModified) + { + $this->lastModified = $lastModified; + + return $this; + } + + public function getLastModified() + { + return $this->lastModified; + } + + public function primaryKeyField() + { + return 'name'; + } + + public function getUrl($path = null, array $params = array()) + { + if (!$this->name) { + throw new Exceptions\NoNameError(Lang::translate('Object has no name')); + } + + return $this->container->getUrl($this->name); + } + + public function update($params = array()) + { + $metadata = is_array($this->metadata) ? $this->metadata : $this->metadata->toArray(); + $metadata = self::stockHeaders($metadata); + + // merge specific properties with metadata + $metadata += array( + HeaderConst::CONTENT_TYPE => $this->contentType, + HeaderConst::LAST_MODIFIED => $this->lastModified, + HeaderConst::CONTENT_LENGTH => $this->contentLength, + HeaderConst::ETAG => $this->etag + ); + + return $this->container->uploadObject($this->name, $this->content, $metadata); + } + + /** + * @param string $destination Path (`container/object') of new object + * @return \Guzzle\Http\Message\Response + */ + public function copy($destination) + { + return $this->getService() + ->getClient() + ->createRequest('COPY', $this->getUrl(), array( + 'Destination' => (string) $destination + )) + ->send(); + } + + public function delete($params = array()) + { + return $this->getService()->getClient()->delete($this->getUrl())->send(); + } + + /** + * Get a temporary URL for this object. + * + * @link http://docs.rackspace.com/files/api/v1/cf-devguide/content/TempURL-d1a4450.html + * + * @param $expires Expiration time in seconds + * @param $method What method can use this URL? (`GET' or `PUT') + * @return string + * @throws \OpenCloud\Common\Exceptions\InvalidArgumentError + * @throws \OpenCloud\Common\Exceptions\ObjectError + * + */ + public function getTemporaryUrl($expires, $method) + { + $method = strtoupper($method); + $expiry = time() + (int) $expires; + + // check for proper method + if ($method != 'GET' && $method != 'PUT') { + throw new Exceptions\InvalidArgumentError(sprintf( + 'Bad method [%s] for TempUrl; only GET or PUT supported', + $method + )); + } + + // @codeCoverageIgnoreStart + if (!($secret = $this->getService()->getAccount()->getTempUrlSecret())) { + throw new Exceptions\ObjectError('Cannot produce temporary URL without an account secret.'); + } + // @codeCoverageIgnoreEnd + + $url = $this->getUrl(); + $urlPath = urldecode($url->getPath()); + $body = sprintf("%s\n%d\n%s", $method, $expiry, $urlPath); + $hash = hash_hmac('sha1', $body, $secret); + + return sprintf('%s?temp_url_sig=%s&temp_url_expires=%d', $url, $hash, $expiry); + } + + /** + * Remove this object from the CDN. + * + * @param null $email + * @return mixed + */ + public function purge($email = null) + { + if (!$cdn = $this->getContainer()->getCdn()) { + return false; + } + + $url = clone $cdn->getUrl(); + $url->addPath($this->name); + + $headers = ($email !== null) ? array('X-Purge-Email' => $email) : array(); + + return $this->getService() + ->getClient() + ->delete($url, $headers) + ->send(); + } + + /** + * @param string $type + * @return bool|Url + */ + public function getPublicUrl($type = UrlType::CDN) + { + $cdn = $this->container->getCdn(); + + switch ($type) { + case UrlType::CDN: + $uri = $cdn->getCdnUri(); + break; + case UrlType::SSL: + $uri = $cdn->getCdnSslUri(); + break; + case UrlType::STREAMING: + $uri = $cdn->getCdnStreamingUri(); + break; + case UrlType::IOS_STREAMING: + $uri = $cdn->getIosStreamingUri(); + break; + } + + return (isset($uri)) ? Url::factory($uri)->addPath($this->name) : false; + } + + protected static function headerIsValidMetadata($header) + { + $pattern = sprintf('#^%s-%s-Meta-#i', self::GLOBAL_METADATA_PREFIX, self::METADATA_LABEL); + + return preg_match($pattern, $header); + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Service.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Service.php new file mode 100644 index 0000000..f0e1c3d --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Service.php @@ -0,0 +1,268 @@ +cdnService = ServiceBuilder::factory($client, 'OpenCloud\ObjectStore\CDNService', array( + 'region' => $region + )); + } catch (Exceptions\EndpointError $e) { + } + } + + /** + * @return CDNService + */ + public function getCdnService() + { + return $this->cdnService; + } + + /** + * List all available containers. + * + * @param array $filter + * @return \OpenCloud\Common\Collection\PaginatedIterator + */ + public function listContainers(array $filter = array()) + { + $filter['format'] = 'json'; + return $this->resourceList('Container', $this->getUrl(null, $filter), $this); + } + + /** + * @param $data + * @return Container + */ + public function getContainer($data = null) + { + return new Container($this, $data); + } + + /** + * Create a container for this service. + * + * @param $name The name of the container + * @param array $metadata Additional (optional) metadata to associate with the container + * @return bool|static + */ + public function createContainer($name, array $metadata = array()) + { + $this->checkContainerName($name); + + $containerHeaders = Container::stockHeaders($metadata); + + $response = $this->getClient() + ->put($this->getUrl($name), $containerHeaders) + ->send(); + + if ($response->getStatusCode() == 201) { + return Container::fromResponse($response, $this); + } + + return false; + } + + /** + * Check the validity of a potential container name. + * + * @param $name + * @return bool + * @throws \OpenCloud\Common\Exceptions\InvalidArgumentError + */ + public function checkContainerName($name) + { + if (strlen($name) == 0) { + $error = 'Container name cannot be blank'; + } + + if (strpos($name, '/') !== false) { + $error = 'Container name cannot contain "/"'; + } + + if (strlen($name) > self::MAX_CONTAINER_NAME_LENGTH) { + $error = 'Container name is too long'; + } + + if (isset($error)) { + throw new InvalidArgumentError($error); + } + + return true; + } + + /** + * Perform a bulk extraction, expanding an archive file. If the $path is an empty string, containers will be + * auto-created accordingly, and files in the archive that do not map to any container (files in the base directory) + * will be ignored. You can create up to 1,000 new containers per extraction request. Also note that only regular + * files will be uploaded. Empty directories, symlinks, and so on, will not be uploaded. + * + * @param $path The path to the archive being extracted + * @param $archive The contents of the archive (either string or stream) + * @param string $archiveType The type of archive you're using {@see \OpenCloud\ObjectStore\Constants\UrlType} + * @return \Guzzle\Http\Message\Response + * @throws Exception\BulkOperationException + * @throws \OpenCloud\Common\Exceptions\InvalidArgumentError + */ + public function bulkExtract($path = '', $archive, $archiveType = UrlType::TAR_GZ) + { + $entity = EntityBody::factory($archive); + + $acceptableTypes = array( + UrlType::TAR, + UrlType::TAR_GZ, + UrlType::TAR_BZ2 + ); + + if (!in_array($archiveType, $acceptableTypes)) { + throw new InvalidArgumentError(sprintf( + 'The archive type must be one of the following: [%s]. You provided [%s].', + implode($acceptableTypes, ','), + print_r($archiveType, true) + )); + } + + $url = $this->getUrl()->addPath($path)->setQuery(array('extract-archive' => $archiveType)); + $response = $this->getClient()->put($url, array(Header::CONTENT_TYPE => ''), $entity)->send(); + + $body = Formatter::decode($response); + + if (!empty($body->Errors)) { + throw new Exception\BulkOperationException((array) $body->Errors); + } + + return $response; + } + + /** + * @deprecated Please use {@see batchDelete()} instead. + */ + public function bulkDelete(array $paths) + { + $this->getLogger()->warning(Logger::deprecated(__METHOD__, '::batchDelete()')); + + return $this->executeBatchDeleteRequest($paths); + } + + /** + * Batch delete will delete an array of object paths. By default, + * the API will only accept a maximum of 10,000 object deletions + * per request - so for arrays that exceed this size, it is chunked + * and sent as individual requests. + * + * @param array $paths The objects you want to delete. Each path needs + * be formatted as /{containerName}/{objectName}. If + * you are deleting object_1 and object_2 from the + * photos_container, the array will be: + * + * array( + * '/photos_container/object_1', + * '/photos_container/object_2' + * ) + * + * @return array The array of responses from the API + * @throws Exception\BulkOperationException + */ + public function batchDelete(array $paths) + { + $chunks = array_chunk($paths, self::BATCH_DELETE_MAX); + + $responses = array(); + + foreach ($chunks as $chunk) { + $responses[] = $this->executeBatchDeleteRequest($chunk); + } + + return $responses; + } + + /** + * Internal method for dispatching single batch delete requests. + * + * @param array $paths + * @return \Guzzle\Http\Message\Response + * @throws Exception\BulkOperationException + */ + private function executeBatchDeleteRequest(array $paths) + { + $entity = EntityBody::factory(implode(PHP_EOL, $paths)); + + $url = $this->getUrl()->setQuery(array('bulk-delete' => true)); + + $response = $this->getClient() + ->delete($url, array(Header::CONTENT_TYPE => Mime::TEXT), $entity) + ->send(); + + try { + $body = Formatter::decode($response); + if (!empty($body->Errors)) { + throw new Exception\BulkOperationException((array) $body->Errors); + } + } catch (Exceptions\JsonError $e) { + } + + return $response; + } + + /** + * Allows files to be transferred from one container to another. + * + * @param Container $old Where you're moving files from + * @param Container $new Where you're moving files to + * @return array Of PUT responses + */ + public function migrateContainer(Container $old, Container $new, array $options = array()) + { + $migration = ContainerMigration::factory($old, $new, $options); + + return $migration->transfer(); + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Upload/AbstractTransfer.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Upload/AbstractTransfer.php new file mode 100644 index 0000000..4d794d3 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Upload/AbstractTransfer.php @@ -0,0 +1,242 @@ + true, + 'partSize' => self::DEFAULT_PART_SIZE, + 'prefix' => 'segment', + 'doPartChecksum' => true + ); + + /** + * @return static + */ + public static function newInstance() + { + return new static(); + } + + /** + * @param Client $client + * @return $this + */ + public function setClient(Client $client) + { + $this->client = $client; + + return $this; + } + + /** + * @param EntityBody $entityBody + * @return $this + */ + public function setEntityBody(EntityBody $entityBody) + { + $this->entityBody = $entityBody; + + return $this; + } + + /** + * @param TransferState $transferState + * @return $this + */ + public function setTransferState(TransferState $transferState) + { + $this->transferState = $transferState; + + return $this; + } + + /** + * @return array + */ + public function getOptions() + { + return $this->options; + } + + /** + * @param $options + * @return $this + */ + public function setOptions($options) + { + $this->options = $options; + + return $this; + } + + /** + * @param $option The key being updated + * @param $value The option's value + * @return $this + */ + public function setOption($option, $value) + { + $this->options[$option] = $value; + + return $this; + } + + public function getPartSize() + { + return $this->partSize; + } + + /** + * @return $this + */ + public function setup() + { + $this->options = array_merge($this->defaultOptions, $this->options); + $this->partSize = $this->validatePartSize(); + + return $this; + } + + /** + * Make sure the part size falls within a valid range + * + * @return mixed + */ + protected function validatePartSize() + { + $min = min($this->options['partSize'], self::MAX_PART_SIZE); + + return max($min, self::MIN_PART_SIZE); + } + + /** + * Initiates the upload procedure. + * + * @return \Guzzle\Http\Message\Response + * @throws RuntimeException If the transfer is not in a "running" state + * @throws UploadException If any errors occur during the upload + * @codeCoverageIgnore + */ + public function upload() + { + if (!$this->transferState->isRunning()) { + throw new RuntimeException('The transfer has been aborted.'); + } + + try { + $this->transfer(); + $response = $this->createManifest(); + } catch (Exception $e) { + throw new UploadException($this->transferState, $e); + } + + return $response; + } + + /** + * With large uploads, you must create a manifest file. Although each segment or TransferPart remains + * individually addressable, the manifest file serves as the unified file (i.e. the 5GB download) which, when + * retrieved, streams all the segments concatenated. + * + * @link http://docs.rackspace.com/files/api/v1/cf-devguide/content/Large_Object_Creation-d1e2019.html + * @return \Guzzle\Http\Message\Response + * @codeCoverageIgnore + */ + private function createManifest() + { + $parts = array(); + + foreach ($this->transferState as $part) { + $parts[] = (object) array( + 'path' => $part->getPath(), + 'etag' => $part->getETag(), + 'size_bytes' => $part->getContentLength() + ); + } + + $headers = array( + 'Content-Length' => 0, + 'X-Object-Manifest' => sprintf('%s/%s/%s/', + $this->options['containerName'], + $this->options['objectName'], + $this->options['prefix'] + ) + ); + + $url = clone $this->options['containerUrl']; + $url->addPath($this->options['objectName']); + + return $this->client->put($url, $headers)->send(); + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Upload/ConcurrentTransfer.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Upload/ConcurrentTransfer.php new file mode 100644 index 0000000..d0a58f7 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Upload/ConcurrentTransfer.php @@ -0,0 +1,91 @@ +entityBody->getContentLength() / $this->partSize); + $workers = min($totalParts, $this->options['concurrency']); + $parts = $this->collectParts($workers); + + while ($this->transferState->count() < $totalParts) { + $completedParts = $this->transferState->count(); + $requests = array(); + + // Iterate over number of workers until total completed parts is what we need it to be + for ($i = 0; $i < $workers && ($completedParts + $i) < $totalParts; $i++) { + // Offset is the current pointer multiplied by the standard chunk length + $offset = ($completedParts + $i) * $this->partSize; + $parts[$i]->setOffset($offset); + + // If this segment is empty (i.e. buffering a half-full chunk), break the iteration + if ($parts[$i]->getContentLength() == 0) { + break; + } + + // Add this to the request queue for later processing + $requests[] = TransferPart::createRequest( + $parts[$i], + $this->transferState->count() + $i + 1, + $this->client, + $this->options + ); + } + + // Iterate over our queued requests and process them + foreach ($this->client->send($requests) as $response) { + // Add this part to the TransferState + $this->transferState->addPart(TransferPart::fromResponse($response)); + } + } + } + + /** + * Partitions the entity body into an array - each worker is represented by a key, and the value is a + * ReadLimitEntityBody object, whose read limit is fixed based on this object's partSize value. This will always + * ensure the chunks are sent correctly. + * + * @param int The total number of workers + * @return array The worker array + */ + private function collectParts($workers) + { + $uri = $this->entityBody->getUri(); + + $array = array(new ReadLimitEntityBody($this->entityBody, $this->partSize)); + + for ($i = 1; $i < $workers; $i++) { + // Need to create a fresh EntityBody, otherwise you'll get weird 408 responses + $array[] = new ReadLimitEntityBody(new EntityBody(fopen($uri, 'r')), $this->partSize); + } + + return $array; + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Upload/ConsecutiveTransfer.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Upload/ConsecutiveTransfer.php new file mode 100644 index 0000000..5019680 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Upload/ConsecutiveTransfer.php @@ -0,0 +1,65 @@ +entityBody->isConsumed()) { + if ($this->entityBody->getContentLength() && $this->entityBody->isSeekable()) { + // Stream directly from the data + $body = new ReadLimitEntityBody($this->entityBody, $this->partSize, $this->entityBody->ftell()); + } else { + // If not-seekable, read the data into a new, seekable "buffer" + $body = EntityBody::factory(); + $output = true; + while ($body->getContentLength() < $this->partSize && $output !== false) { + // Write maximum of 10KB at a time + $length = min(10 * Size::KB, $this->partSize - $body->getContentLength()); + $output = $body->write($this->entityBody->read($length)); + } + } + + if ($body->getContentLength() == 0) { + break; + } + + $request = TransferPart::createRequest( + $body, + $this->transferState->count() + 1, + $this->client, + $this->options + ); + + $response = $request->send(); + + $this->transferState->addPart(TransferPart::fromResponse($response)); + } + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Upload/ContainerMigration.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Upload/ContainerMigration.php new file mode 100644 index 0000000..ebbfbb2 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Upload/ContainerMigration.php @@ -0,0 +1,220 @@ + 1000, + 'read.pageLimit' => 10000, + 'write.batchLimit' => 100 + ); + + /** + * @param Container $old Source container + * @param Container $new Target container + * @param array $options Options that configure process + * @return ContainerMigration + */ + public static function factory(Container $old, Container $new, array $options = array()) + { + $migration = new self(); + + $migration->setOldContainer($old); + $migration->setNewContainer($new); + $migration->setOptions($options); + + $migration->setupReadQueue(); + $migration->setupWriteQueue(); + + return $migration; + } + + /** + * @param Container $old + */ + public function setOldContainer(Container $old) + { + $this->oldContainer = $old; + } + + /** + * @return Container + */ + public function getOldContainer() + { + return $this->oldContainer; + } + + /** + * @param Container $new + */ + public function setNewContainer(Container $new) + { + $this->newContainer = $new; + } + + /** + * @return Container + */ + public function getNewContainer() + { + return $this->newContainer; + } + + /** + * @param array $options + */ + public function setOptions(array $options) + { + $this->options = Collection::fromConfig($options, $this->defaults); + } + + /** + * @return \Guzzle\Common\Collection + */ + public function getOptions() + { + return $this->options; + } + + /** + * Set the read queue as a {@see \Guzzle\Batch\Batch} queue using the {@see \Guzzle\Batch\BatchBuilder} + */ + public function setupReadQueue() + { + $this->readQueue = BatchBuilder::factory() + ->transferRequests($this->options->get('read.batchLimit')) + ->build(); + } + + /** + * Set the write queue as a {@see \Guzzle\Batch\Batch} queue using the {@see \Guzzle\Batch\BatchBuilder} + */ + public function setupWriteQueue() + { + $this->writeQueue = BatchBuilder::factory() + ->transferRequests($this->options->get('write.batchLimit')) + ->build(); + } + + /** + * @return \Guzzle\Http\ClientInterface + */ + private function getClient() + { + return $this->newContainer->getService()->getClient(); + } + + /** + * Create a collection of files to be migrated and add them to the read queue + */ + protected function enqueueGetRequests() + { + $files = $this->oldContainer->objectList(array( + 'limit.total' => false, + 'limit.page' => $this->options->get('read.pageLimit') + )); + + foreach ($files as $file) { + $this->readQueue->add( + $this->getClient()->get($file->getUrl()) + ); + } + } + + /** + * Send the read queue (in order to gather more information about individual files) + * + * @return array Responses + */ + protected function sendGetRequests() + { + $this->enqueueGetRequests(); + + return $this->readQueue->flush(); + } + + /** + * Create a tailored PUT request for each file + * + * @param Response $response + * @return \Guzzle\Http\Message\EntityEnclosingRequestInterface + */ + protected function createPutRequest(Response $response) + { + $segments = Url::factory($response->getEffectiveUrl())->getPathSegments(); + $name = end($segments); + + // Retrieve content and metadata + $file = $this->newContainer->dataObject()->setName($name); + $file->setMetadata($response->getHeaders(), true); + + return $this->getClient()->put( + $file->getUrl(), + $file::stockHeaders($file->getMetadata()->toArray()), + $response->getBody() + ); + } + + /** + * Initiate the transfer process + * + * @return array PUT responses + */ + public function transfer() + { + $requests = $this->sendGetRequests(); + $this->readQueue = null; + + foreach ($requests as $key => $request) { + $this->writeQueue->add( + $this->createPutRequest($request->getResponse()) + ); + unset($requests[$key]); + } + + return $this->writeQueue->flush(); + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Upload/DirectorySync.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Upload/DirectorySync.php new file mode 100644 index 0000000..b95475b --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Upload/DirectorySync.php @@ -0,0 +1,223 @@ +setBasePath($path); + $transfer->setContainer($container); + $transfer->setRemoteFiles($container->objectList()); + + return $transfer; + } + + /** + * @param $path + * @throws \OpenCloud\Common\Exceptions\InvalidArgumentError + */ + public function setBasePath($path) + { + if (!file_exists($path)) { + throw new InvalidArgumentError(sprintf('%s does not exist', $path)); + } + + $this->basePath = $path; + } + + /** + * @param ResourceIterator $remoteFiles + */ + public function setRemoteFiles(ResourceIterator $remoteFiles) + { + $this->remoteFiles = $remoteFiles; + } + + /** + * @param Container $container + */ + public function setContainer(Container $container) + { + $this->container = $container; + } + + /** + * Execute the sync process. This will collect all the remote files from the API and do a comparison. There are + * four scenarios that need to be dealt with: + * + * - Exists locally, exists remotely (identical checksum) = no action + * - Exists locally, exists remotely (diff checksum) = local overwrites remote + * - Exists locally, not exists remotely = local is written to remote + * - Not exists locally, exists remotely = remote file is deleted + */ + public function execute() + { + $localFiles = $this->traversePath($this->basePath); + + $this->remoteFiles->rewind(); + $this->remoteFiles->populateAll(); + + $entities = array(); + $requests = array(); + $deletePaths = array(); + + // Handle PUT requests (create/update files) + foreach ($localFiles as $filename) { + $callback = $this->getCallback($filename); + $filePath = rtrim($this->basePath, '/') . '/' . $filename; + + if (!is_readable($filePath)) { + continue; + } + + $entities[] = $entityBody = EntityBody::factory(fopen($filePath, 'r+')); + + if (false !== ($remoteFile = $this->remoteFiles->search($callback))) { + // if different, upload updated version + if ($remoteFile->getEtag() != $entityBody->getContentMd5()) { + $requests[] = $this->container->getClient()->put( + $remoteFile->getUrl(), + $remoteFile->getMetadata()->toArray(), + $entityBody + ); + } + } else { + // upload new file + $url = clone $this->container->getUrl(); + $url->addPath($filename); + + $requests[] = $this->container->getClient()->put($url, array(), $entityBody); + } + } + + // Handle DELETE requests + foreach ($this->remoteFiles as $remoteFile) { + $remoteName = $remoteFile->getName(); + if (!in_array($remoteName, $localFiles)) { + $deletePaths[] = sprintf('/%s/%s', $this->container->getName(), $remoteName); + } + } + + // send update/create requests + if (count($requests)) { + $this->container->getClient()->send($requests); + } + + // bulk delete + if (count($deletePaths)) { + $this->container->getService()->bulkDelete($deletePaths); + } + + // close all streams + if (count($entities)) { + foreach ($entities as $entity) { + $entity->close(); + } + } + } + + /** + * Given a path, traverse it recursively for nested files. + * + * @param $path + * @return array + */ + private function traversePath($path) + { + $filenames = array(); + + $directory = new DirectoryIterator($path); + + foreach ($directory as $file) { + if ($file->isDot()) { + continue; + } + if ($file->isDir()) { + $filenames = array_merge($filenames, $this->traversePath($file->getPathname())); + } else { + $filenames[] = $this->trimFilename($file); + } + } + + return $filenames; + } + + /** + * Given a path, trim away leading slashes and strip the base path. + * + * @param $file + * @return string + */ + private function trimFilename($file) + { + return ltrim(str_replace($this->basePath, '', $file->getPathname()), '/'); + } + + /** + * Get the callback used to do a search function on the remote iterator. + * + * @param $name The name of the file we're looking for. + * @return callable + */ + private function getCallback($name) + { + $name = trim($name, '/'); + + return function ($remoteFile) use ($name) { + if ($remoteFile->getName() == $name) { + return true; + } + + return false; + }; + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Upload/TransferBuilder.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Upload/TransferBuilder.php new file mode 100644 index 0000000..3af55a3 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Upload/TransferBuilder.php @@ -0,0 +1,138 @@ + The number of concurrent workers. + * * `partSize' The size, in bytes, for the chunk + * * `doPartChecksum' Enable or disable MD5 checksum in request (ETag) + * + * If you are uploading FooBar, its chunks will have the following naming structure: + * + * FooBar/1 + * FooBar/2 + * FooBar/3 + * + * @return \OpenCloud\ObjectStore\Upload\UploadBuilder + */ + public function setOptions($options) + { + $this->options = $options; + + return $this; + } + + /** + * @param $key The option name + * @param $value The option value + * @return $this + */ + public function setOption($key, $value) + { + $this->options[$key] = $value; + + return $this; + } + + /** + * @param Container $container + * @return $this + */ + public function setContainer(Container $container) + { + $this->container = $container; + + return $this; + } + + /** + * @param EntityBody $entityBody + * @return $this + */ + public function setEntityBody(EntityBody $entityBody) + { + $this->entityBody = $entityBody; + + return $this; + } + + /** + * Build the transfer. + * + * @return mixed + * @throws \OpenCloud\Common\Exceptions\InvalidArgumentError + */ + public function build() + { + // Validate properties + if (!$this->container || !$this->entityBody || !$this->options['objectName']) { + throw new InvalidArgumentError('A container, entity body and object name must be set'); + } + + // Create TransferState object for later use + $transferState = TransferState::factory(); + + // Instantiate Concurrent-/ConsecutiveTransfer + $transferClass = isset($this->options['concurrency']) && $this->options['concurrency'] > 1 + ? __NAMESPACE__ . '\\ConcurrentTransfer' + : __NAMESPACE__ . '\\ConsecutiveTransfer'; + + return $transferClass::newInstance() + ->setClient($this->container->getClient()) + ->setEntityBody($this->entityBody) + ->setTransferState($transferState) + ->setOptions($this->options) + ->setOption('containerName', $this->container->getName()) + ->setOption('containerUrl', $this->container->getUrl()) + ->setup(); + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Upload/TransferPart.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Upload/TransferPart.php new file mode 100644 index 0000000..3da3f01 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Upload/TransferPart.php @@ -0,0 +1,183 @@ +contentLength = $contentLength; + + return $this; + } + + /** + * @return int + */ + public function getContentLength() + { + return $this->contentLength; + } + + /** + * @param string $etag + * @return $this + */ + public function setETag($etag) + { + $this->etag = $etag; + + return $this; + } + + /** + * @return string + */ + public function getETag() + { + return $this->etag; + } + + /** + * @param int $partNumber + * @return $this + */ + public function setPartNumber($partNumber) + { + $this->partNumber = $partNumber; + + return $this; + } + + /** + * @return int + */ + public function getPartNumber() + { + return $this->partNumber; + } + + /** + * @param $path + * @return $this + */ + public function setPath($path) + { + $this->path = $path; + + return $this; + } + + /** + * @return string + */ + public function getPath() + { + return $this->path; + } + + /** + * Create the request needed for this upload to the API. + * + * @param EntityBody $part The entity body being uploaded + * @param int $number Its number/position, needed for name + * @param OpenStack $client Client responsible for issuing requests + * @param array $options Set by the Transfer object + * @return OpenCloud\Common\Http\Request + */ + public static function createRequest($part, $number, $client, $options) + { + $name = sprintf('%s/%s/%d', $options['objectName'], $options['prefix'], $number); + $url = clone $options['containerUrl']; + $url->addPath($name); + + $headers = array( + Header::CONTENT_LENGTH => $part->getContentLength(), + Header::CONTENT_TYPE => $part->getContentType() + ); + + if ($options['doPartChecksum'] === true) { + $headers['ETag'] = $part->getContentMd5(); + } + + $request = $client->put($url, $headers, $part); + + if (isset($options['progress'])) { + $request->getCurlOptions()->add('progress', true); + if (is_callable($options['progress'])) { + $request->getCurlOptions()->add('progressCallback', $options['progress']); + } + } + + return $request; + } + + /** + * Construct a TransferPart from a HTTP response delivered by the API. + * + * @param Response $response + * @param int $partNumber + * @return TransferPart + */ + public static function fromResponse(Response $response, $partNumber = 1) + { + $responseUri = Url::factory($response->getEffectiveUrl()); + + $object = new self(); + + $object->setPartNumber($partNumber) + ->setContentLength($response->getHeader(Header::CONTENT_LENGTH)) + ->setETag($response->getHeader(Header::ETAG)) + ->setPath($responseUri->getPath()); + + return $object; + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Upload/TransferState.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Upload/TransferState.php new file mode 100644 index 0000000..ce2a4f4 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/ObjectStore/Upload/TransferState.php @@ -0,0 +1,90 @@ +init(); + } + + /** + * @param TransferPart $part + */ + public function addPart(TransferPart $part) + { + $this->completedParts[] = $part; + } + + /** + * @return int + */ + public function count() + { + return count($this->completedParts); + } + + /** + * @return bool + */ + public function isRunning() + { + return $this->running; + } + + /** + * @return $this + */ + public function init() + { + $this->running = true; + + return $this; + } + + /** + * @return $this + */ + public function cancel() + { + $this->running = false; + + return $this; + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/OpenStack.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/OpenStack.php new file mode 100644 index 0000000..1984723 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/OpenStack.php @@ -0,0 +1,582 @@ +setLogger($options['logger']); + } + + $this->setSecret($secret); + $this->setAuthUrl($url); + + parent::__construct($url, $options); + + $this->addSubscriber(RequestSubscriber::getInstance()); + $this->setDefaultOption('headers/Accept', 'application/json'); + } + + /** + * Set the credentials for the client + * + * @param array $secret + * @return $this + */ + public function setSecret(array $secret = array()) + { + $this->secret = $secret; + + return $this; + } + + /** + * Get the secret. + * + * @return array + */ + public function getSecret() + { + return $this->secret; + } + + /** + * Set the token. If a string is passed in, the SDK assumes you want to set the ID of the full Token object + * and sets this property accordingly. For any other data type, it assumes you want to populate the Token object. + * This ambiguity arises due to backwards compatibility. + * + * @param string $token + * @return $this + */ + public function setToken($token) + { + $identity = IdentityService::factory($this); + + if (is_string($token)) { + if (!$this->token) { + $this->setTokenObject($identity->resource('Token')); + } + $this->token->setId($token); + } else { + $this->setTokenObject($identity->resource('Token', $token)); + } + + return $this; + } + + /** + * Get the token ID for this client. + * + * @return string + */ + public function getToken() + { + return ($this->getTokenObject()) ? $this->getTokenObject()->getId() : null; + } + + /** + * Set the full token object + */ + public function setTokenObject(Token $token) + { + $this->token = $token; + } + + /** + * Get the full token object. + */ + public function getTokenObject() + { + return $this->token; + } + + /** + * @deprecated + */ + public function setExpiration($expiration) + { + $this->getLogger()->warning(Logger::deprecated(__METHOD__, '::getTokenObject()->setExpires()')); + if ($this->getTokenObject()) { + $this->getTokenObject()->setExpires($expiration); + } + + return $this; + } + + /** + * @deprecated + */ + public function getExpiration() + { + $this->getLogger()->warning(Logger::deprecated(__METHOD__, '::getTokenObject()->getExpires()')); + if ($this->getTokenObject()) { + return $this->getTokenObject()->getExpires(); + } + } + + /** + * Set the tenant. If an integer or string is passed in, the SDK assumes you want to set the ID of the full + * Tenant object and sets this property accordingly. For any other data type, it assumes you want to populate + * the Tenant object. This ambiguity arises due to backwards compatibility. + * + * @param mixed $tenant + * @return $this + */ + public function setTenant($tenant) + { + $identity = IdentityService::factory($this); + + if (is_numeric($tenant) || is_string($tenant)) { + if (!$this->tenant) { + $this->setTenantObject($identity->resource('Tenant')); + } + $this->tenant->setId($tenant); + } else { + $this->setTenantObject($identity->resource('Tenant', $tenant)); + } + + return $this; + } + + /** + * Returns the tenant ID only (backwards compatibility). + * + * @return string + */ + public function getTenant() + { + return ($this->getTenantObject()) ? $this->getTenantObject()->getId() : null; + } + + /** + * Set the full Tenant object for this client. + * + * @param OpenCloud\Identity\Resource\Tenant $tenant + */ + public function setTenantObject(Tenant $tenant) + { + $this->tenant = $tenant; + } + + /** + * Get the full Tenant object for this client. + * + * @return OpenCloud\Identity\Resource\Tenant + */ + public function getTenantObject() + { + return $this->tenant; + } + + /** + * Set the service catalog. + * + * @param mixed $catalog + * @return $this + */ + public function setCatalog($catalog) + { + $this->catalog = Catalog::factory($catalog); + + return $this; + } + + /** + * Get the service catalog. + * + * @return array + */ + public function getCatalog() + { + return $this->catalog; + } + + /** + * @param LoggerInterface $logger + * + * @return $this + */ + public function setLogger(LoggerInterface $logger) + { + $this->logger = $logger; + + return $this; + } + + /** + * @return LoggerInterface + */ + public function getLogger() + { + if (null === $this->logger) { + $this->setLogger(new Common\Log\Logger); + } + + return $this->logger; + } + + /** + * @return bool + */ + public function hasLogger() + { + return (null !== $this->logger); + } + + /** + * @deprecated + */ + public function hasExpired() + { + $this->getLogger()->warning(Logger::deprecated(__METHOD__, 'getTokenObject()->hasExpired()')); + + return $this->getTokenObject() && $this->getTokenObject()->hasExpired(); + } + + /** + * Formats the credentials array (as a string) for authentication + * + * @return string + * @throws Common\Exceptions\CredentialError + */ + public function getCredentials() + { + if (!empty($this->secret['username']) && !empty($this->secret['password'])) { + $credentials = array('auth' => array( + 'passwordCredentials' => array( + 'username' => $this->secret['username'], + 'password' => $this->secret['password'] + ) + )); + + if (!empty($this->secret['tenantName'])) { + $credentials['auth']['tenantName'] = $this->secret['tenantName']; + } elseif (!empty($this->secret['tenantId'])) { + $credentials['auth']['tenantId'] = $this->secret['tenantId']; + } + + return json_encode($credentials); + } else { + throw new Exceptions\CredentialError( + Lang::translate('Unrecognized credential secret') + ); + } + } + + /** + * @param $url + * @return $this + */ + public function setAuthUrl($url) + { + $this->authUrl = Url::factory($url); + + return $this; + } + + /** + * @return Url + */ + public function getAuthUrl() + { + return $this->authUrl; + } + + /** + * Sets the current user based on the generated token. + * + * @param $data Object of user data + */ + public function setUser(User $user) + { + $this->user = $user; + } + + /** + * @return \OpenCloud\Identity\Resource\User + */ + public function getUser() + { + return $this->user; + } + + /** + * Authenticate the tenant using the supplied credentials + * + * @return void + * @throws AuthenticationError + */ + public function authenticate() + { + // OpenStack APIs will return a 401 if an expired X-Auth-Token is sent, + // so we need to reset the value before authenticating for another one. + $this->updateTokenHeader(''); + + $identity = IdentityService::factory($this); + $response = $identity->generateToken($this->getCredentials()); + + $body = Formatter::decode($response); + + $this->setCatalog($body->access->serviceCatalog); + $this->setTokenObject($identity->resource('Token', $body->access->token)); + $this->setUser($identity->resource('User', $body->access->user)); + + if (isset($body->access->token->tenant)) { + $this->setTenantObject($identity->resource('Tenant', $body->access->token->tenant)); + } + + // Set X-Auth-Token HTTP request header + $this->updateTokenHeader($this->getToken()); + } + + /** + * @deprecated + */ + public function getUrl() + { + return $this->getBaseUrl(); + } + + /** + * Convenience method for exporting current credentials. Useful for local caching. + * @return array + */ + public function exportCredentials() + { + if ($this->hasExpired()) { + $this->authenticate(); + } + + return array( + 'token' => $this->getToken(), + 'expiration' => $this->getExpiration(), + 'tenant' => $this->getTenant(), + 'catalog' => $this->getCatalog() + ); + } + + /** + * Convenience method for importing credentials. Useful for local caching because it reduces HTTP traffic. + * + * @param array $values + */ + public function importCredentials(array $values) + { + if (!empty($values['token'])) { + $this->setToken($values['token']); + $this->updateTokenHeader($this->getToken()); + } + if (!empty($values['expiration'])) { + $this->setExpiration($values['expiration']); + } + if (!empty($values['tenant'])) { + $this->setTenant($values['tenant']); + } + if (!empty($values['catalog'])) { + $this->setCatalog($values['catalog']); + } + } + + /** + * Sets the X-Auth-Token header. If no value is explicitly passed in, the current token is used. + * + * @param string $token Value of header. + * @return void + */ + private function updateTokenHeader($token) + { + $this->setDefaultOption('headers/X-Auth-Token', (string) $token); + } + + /** + * Creates a new ObjectStore object (Swift/Cloud Files) + * + * @param string $name The name of the service as it appears in the Catalog + * @param string $region The region (DFW, IAD, ORD, LON, SYD) + * @param string $urltype The URL type ("publicURL" or "internalURL") + * @return \OpenCloud\ObjectStore\Service + */ + public function objectStoreService($name = null, $region = null, $urltype = null) + { + return ServiceBuilder::factory($this, 'OpenCloud\ObjectStore\Service', array( + 'name' => $name, + 'region' => $region, + 'urlType' => $urltype + )); + } + + /** + * Creates a new Compute object (Nova/Cloud Servers) + * + * @param string $name The name of the service as it appears in the Catalog + * @param string $region The region (DFW, IAD, ORD, LON, SYD) + * @param string $urltype The URL type ("publicURL" or "internalURL") + * @return \OpenCloud\Compute\Service + */ + public function computeService($name = null, $region = null, $urltype = null) + { + return ServiceBuilder::factory($this, 'OpenCloud\Compute\Service', array( + 'name' => $name, + 'region' => $region, + 'urlType' => $urltype + )); + } + + /** + * Creates a new Orchestration (Heat) service object + * + * @param string $name The name of the service as it appears in the Catalog + * @param string $region The region (DFW, IAD, ORD, LON, SYD) + * @param string $urltype The URL type ("publicURL" or "internalURL") + * @return \OpenCloud\Orchestration\Service + * @codeCoverageIgnore + */ + public function orchestrationService($name = null, $region = null, $urltype = null) + { + return ServiceBuilder::factory($this, 'OpenCloud\Orchestration\Service', array( + 'name' => $name, + 'region' => $region, + 'urlType' => $urltype + )); + } + + /** + * Creates a new Volume (Cinder) service object + * + * @param string $name The name of the service as it appears in the Catalog + * @param string $region The region (DFW, IAD, ORD, LON, SYD) + * @param string $urltype The URL type ("publicURL" or "internalURL") + * @return \OpenCloud\Volume\Service + */ + public function volumeService($name = null, $region = null, $urltype = null) + { + return ServiceBuilder::factory($this, 'OpenCloud\Volume\Service', array( + 'name' => $name, + 'region' => $region, + 'urlType' => $urltype + )); + } + + /** + * Creates a new Rackspace "Cloud Identity" service. + * + * @return \OpenCloud\Identity\Service + */ + public function identityService() + { + $service = IdentityService::factory($this); + $this->authenticate(); + + return $service; + } + + /** + * Creates a new Glance service + * + * @param string $name The name of the service as it appears in the Catalog + * @param string $region The region (DFW, IAD, ORD, LON, SYD) + * @param string $urltype The URL type ("publicURL" or "internalURL") + * @return Common\Service\ServiceInterface + */ + public function imageService($name = null, $region = null, $urltype = null) + { + return ServiceBuilder::factory($this, 'OpenCloud\Image\Service', array( + 'name' => $name, + 'region' => $region, + 'urlType' => $urltype + )); + } + + /** + * Creates a new Networking (Neutron) service object + * + * @param string $name The name of the service as it appears in the Catalog + * @param string $region The region (DFW, IAD, ORD, LON, SYD) + * @param string $urltype The URL type ("publicURL" or "internalURL") + * @return \OpenCloud\Networking\Service + * @codeCoverageIgnore + */ + public function networkingService($name = null, $region = null, $urltype = null) + { + return ServiceBuilder::factory($this, 'OpenCloud\Networking\Service', array( + 'name' => $name, + 'region' => $region, + 'urlType' => $urltype + )); + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Rackspace.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Rackspace.php new file mode 100644 index 0000000..8480a0d --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Rackspace.php @@ -0,0 +1,177 @@ + + * $client = new Rackspace( + * 'https://identity.api.rackspacecloud.com/v2.0/', + * array( + * 'username' => 'FRED', + * 'apiKey' => '0900af093093788912388fc09dde090ffee09' + * ) + * ); + * + */ +class Rackspace extends OpenStack +{ + const US_IDENTITY_ENDPOINT = 'https://identity.api.rackspacecloud.com/v2.0/'; + const UK_IDENTITY_ENDPOINT = 'https://lon.identity.api.rackspacecloud.com/v2.0/'; + + /** + * Generates Rackspace API key credentials + * {@inheritDoc} + */ + public function getCredentials() + { + $secret = $this->getSecret(); + + if (!empty($secret['username']) && !empty($secret['apiKey'])) { + $credentials = array('auth' => array( + 'RAX-KSKEY:apiKeyCredentials' => array( + 'username' => $secret['username'], + 'apiKey' => $secret['apiKey'] + ) + )); + + if (!empty($secret['tenantName'])) { + $credentials['auth']['tenantName'] = $secret['tenantName']; + } elseif (!empty($secret['tenantId'])) { + $credentials['auth']['tenantId'] = $secret['tenantId']; + } + + return json_encode($credentials); + } else { + throw new CredentialError('Unrecognized credential secret'); + } + } + + /** + * Creates a new Database service. Note: this is a Rackspace-only feature. + * + * @param string $name The name of the service as it appears in the Catalog + * @param string $region The region (DFW, IAD, ORD, LON, SYD) + * @param string $urltype The URL type ("publicURL" or "internalURL") + * @return \OpenCloud\Database\Service + */ + public function databaseService($name = null, $region = null, $urltype = null) + { + return ServiceBuilder::factory($this, 'OpenCloud\Database\Service', array( + 'name' => $name, + 'region' => $region, + 'urlType' => $urltype + )); + } + + /** + * Creates a new Load Balancer service. Note: this is a Rackspace-only feature. + * + * @param string $name The name of the service as it appears in the Catalog + * @param string $region The region (DFW, IAD, ORD, LON, SYD) + * @param string $urltype The URL type ("publicURL" or "internalURL") + * @return \OpenCloud\LoadBalancer\Service + */ + public function loadBalancerService($name = null, $region = null, $urltype = null) + { + return ServiceBuilder::factory($this, 'OpenCloud\LoadBalancer\Service', array( + 'name' => $name, + 'region' => $region, + 'urlType' => $urltype + )); + } + + /** + * Creates a new DNS service. Note: this is a Rackspace-only feature. + * + * @param string $name The name of the service as it appears in the Catalog + * @param string $region The region (DFW, IAD, ORD, LON, SYD) + * @param string $urltype The URL type ("publicURL" or "internalURL") + * @return OpenCloud\DNS\Service + */ + public function dnsService($name = null, $region = null, $urltype = null) + { + return ServiceBuilder::factory($this, 'OpenCloud\DNS\Service', array( + 'name' => $name, + 'region' => $region, + 'urlType' => $urltype + )); + } + + /** + * Creates a new CloudMonitoring service. Note: this is a Rackspace-only feature. + * + * @param string $name The name of the service as it appears in the Catalog + * @param string $region The region (DFW, IAD, ORD, LON, SYD) + * @param string $urltype The URL type ("publicURL" or "internalURL") + * @return \OpenCloud\CloudMonitoring\Service + */ + public function cloudMonitoringService($name = null, $region = null, $urltype = null) + { + return ServiceBuilder::factory($this, 'OpenCloud\CloudMonitoring\Service', array( + 'name' => $name, + 'region' => $region, + 'urlType' => $urltype + )); + } + + /** + * Creates a new CloudQueues service. Note: this is a Rackspace-only feature. + * + * @param string $name The name of the service as it appears in the Catalog + * @param string $region The region (DFW, IAD, ORD, LON, SYD) + * @param string $urltype The URL type ("publicURL" or "internalURL") + * @return \OpenCloud\Autoscale\Service + */ + public function autoscaleService($name = null, $region = null, $urltype = null) + { + return ServiceBuilder::factory($this, 'OpenCloud\Autoscale\Service', array( + 'name' => $name, + 'region' => $region, + 'urlType' => $urltype + )); + } + + /** + * Creates a new CloudQueues service. Note: this is a Rackspace-only feature. + * + * @param string $name The name of the service as it appears in the Catalog + * @param string $region The region (DFW, IAD, ORD, LON, SYD) + * @param string $urltype The URL type ("publicURL" or "internalURL") + * @return \OpenCloud\Queues\Service + */ + public function queuesService($name = null, $region = null, $urltype = null) + { + return ServiceBuilder::factory($this, 'OpenCloud\Queues\Service', array( + 'name' => $name, + 'region' => $region, + 'urlType' => $urltype + )); + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Version.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Version.php new file mode 100644 index 0000000..47aafab --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/OpenCloud/Version.php @@ -0,0 +1,55 @@ +get('version'); + } + + /** + * @return string Indicate Guzzle's version. + */ + public static function getGuzzleVersion() + { + return GuzzleVersion::VERSION; + } +} diff --git a/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/php-opencloud.php b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/php-opencloud.php new file mode 100644 index 0000000..1fda2f0 --- /dev/null +++ b/plugins/updraftplus/vendor/rackspace/php-opencloud/lib/php-opencloud.php @@ -0,0 +1,18 @@ + + + + + + ./tests/OpenCloud/Tests + + + + + + ./lib/OpenCloud + + ./lib/OpenCloud/CloudMonitoring/Exception + ./lib/OpenCloud/Common/Exceptions + ./lib/OpenCloud/Common/Exceptions + ./lib/OpenCloud/Compute/Exception + ./lib/OpenCloud/ObjectStore/Exception + ./lib/OpenCloud/Queues/Exception + + + + + + + + + + + + + + diff --git a/plugins/updraftplus/vendor/symfony/event-dispatcher/.gitignore b/plugins/updraftplus/vendor/symfony/event-dispatcher/.gitignore new file mode 100644 index 0000000..c49a5d8 --- /dev/null +++ b/plugins/updraftplus/vendor/symfony/event-dispatcher/.gitignore @@ -0,0 +1,3 @@ +vendor/ +composer.lock +phpunit.xml diff --git a/plugins/updraftplus/vendor/symfony/event-dispatcher/CHANGELOG.md b/plugins/updraftplus/vendor/symfony/event-dispatcher/CHANGELOG.md new file mode 100644 index 0000000..bb42ee1 --- /dev/null +++ b/plugins/updraftplus/vendor/symfony/event-dispatcher/CHANGELOG.md @@ -0,0 +1,23 @@ +CHANGELOG +========= + +2.5.0 +----- + + * added Debug\TraceableEventDispatcher (originally in HttpKernel) + * changed Debug\TraceableEventDispatcherInterface to extend EventDispatcherInterface + * added RegisterListenersPass (originally in HttpKernel) + +2.1.0 +----- + + * added TraceableEventDispatcherInterface + * added ContainerAwareEventDispatcher + * added a reference to the EventDispatcher on the Event + * added a reference to the Event name on the event + * added fluid interface to the dispatch() method which now returns the Event + object + * added GenericEvent event class + * added the possibility for subscribers to subscribe several times for the + same event + * added ImmutableEventDispatcher diff --git a/plugins/updraftplus/vendor/symfony/event-dispatcher/ContainerAwareEventDispatcher.php b/plugins/updraftplus/vendor/symfony/event-dispatcher/ContainerAwareEventDispatcher.php new file mode 100644 index 0000000..6a02e9f --- /dev/null +++ b/plugins/updraftplus/vendor/symfony/event-dispatcher/ContainerAwareEventDispatcher.php @@ -0,0 +1,197 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\EventDispatcher; + +use Symfony\Component\DependencyInjection\ContainerInterface; + +/** + * Lazily loads listeners and subscribers from the dependency injection + * container. + * + * @author Fabien Potencier + * @author Bernhard Schussek + * @author Jordan Alliot + */ +class ContainerAwareEventDispatcher extends EventDispatcher +{ + /** + * The container from where services are loaded. + * + * @var ContainerInterface + */ + private $container; + + /** + * The service IDs of the event listeners and subscribers. + * + * @var array + */ + private $listenerIds = array(); + + /** + * The services registered as listeners. + * + * @var array + */ + private $listeners = array(); + + /** + * Constructor. + * + * @param ContainerInterface $container A ContainerInterface instance + */ + public function __construct(ContainerInterface $container) + { + $this->container = $container; + } + + /** + * Adds a service as event listener. + * + * @param string $eventName Event for which the listener is added + * @param array $callback The service ID of the listener service & the method + * name that has to be called + * @param int $priority The higher this value, the earlier an event listener + * will be triggered in the chain. + * Defaults to 0. + * + * @throws \InvalidArgumentException + */ + public function addListenerService($eventName, $callback, $priority = 0) + { + if (!is_array($callback) || 2 !== count($callback)) { + throw new \InvalidArgumentException('Expected an array("service", "method") argument'); + } + + $this->listenerIds[$eventName][] = array($callback[0], $callback[1], $priority); + } + + public function removeListener($eventName, $listener) + { + $this->lazyLoad($eventName); + + if (isset($this->listenerIds[$eventName])) { + foreach ($this->listenerIds[$eventName] as $i => $args) { + list($serviceId, $method, $priority) = $args; + $key = $serviceId.'.'.$method; + if (isset($this->listeners[$eventName][$key]) && $listener === array($this->listeners[$eventName][$key], $method)) { + unset($this->listeners[$eventName][$key]); + if (empty($this->listeners[$eventName])) { + unset($this->listeners[$eventName]); + } + unset($this->listenerIds[$eventName][$i]); + if (empty($this->listenerIds[$eventName])) { + unset($this->listenerIds[$eventName]); + } + } + } + } + + parent::removeListener($eventName, $listener); + } + + /** + * {@inheritdoc} + */ + public function hasListeners($eventName = null) + { + if (null === $eventName) { + return (bool) count($this->listenerIds) || (bool) count($this->listeners); + } + + if (isset($this->listenerIds[$eventName])) { + return true; + } + + return parent::hasListeners($eventName); + } + + /** + * {@inheritdoc} + */ + public function getListeners($eventName = null) + { + if (null === $eventName) { + foreach ($this->listenerIds as $serviceEventName => $args) { + $this->lazyLoad($serviceEventName); + } + } else { + $this->lazyLoad($eventName); + } + + return parent::getListeners($eventName); + } + + /** + * {@inheritdoc} + */ + public function getListenerPriority($eventName, $listener) + { + $this->lazyLoad($eventName); + + return parent::getListenerPriority($eventName, $listener); + } + + /** + * Adds a service as event subscriber. + * + * @param string $serviceId The service ID of the subscriber service + * @param string $class The service's class name (which must implement EventSubscriberInterface) + */ + public function addSubscriberService($serviceId, $class) + { + foreach ($class::getSubscribedEvents() as $eventName => $params) { + if (is_string($params)) { + $this->listenerIds[$eventName][] = array($serviceId, $params, 0); + } elseif (is_string($params[0])) { + $this->listenerIds[$eventName][] = array($serviceId, $params[0], isset($params[1]) ? $params[1] : 0); + } else { + foreach ($params as $listener) { + $this->listenerIds[$eventName][] = array($serviceId, $listener[0], isset($listener[1]) ? $listener[1] : 0); + } + } + } + } + + public function getContainer() + { + return $this->container; + } + + /** + * Lazily loads listeners for this event from the dependency injection + * container. + * + * @param string $eventName The name of the event to dispatch. The name of + * the event is the name of the method that is + * invoked on listeners. + */ + protected function lazyLoad($eventName) + { + if (isset($this->listenerIds[$eventName])) { + foreach ($this->listenerIds[$eventName] as $args) { + list($serviceId, $method, $priority) = $args; + $listener = $this->container->get($serviceId); + + $key = $serviceId.'.'.$method; + if (!isset($this->listeners[$eventName][$key])) { + $this->addListener($eventName, array($listener, $method), $priority); + } elseif ($listener !== $this->listeners[$eventName][$key]) { + parent::removeListener($eventName, array($this->listeners[$eventName][$key], $method)); + $this->addListener($eventName, array($listener, $method), $priority); + } + + $this->listeners[$eventName][$key] = $listener; + } + } + } +} diff --git a/plugins/updraftplus/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php b/plugins/updraftplus/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php new file mode 100644 index 0000000..e729eeb --- /dev/null +++ b/plugins/updraftplus/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php @@ -0,0 +1,372 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\EventDispatcher\Debug; + +use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Symfony\Component\EventDispatcher\Event; +use Symfony\Component\Stopwatch\Stopwatch; +use Psr\Log\LoggerInterface; + +/** + * Collects some data about event listeners. + * + * This event dispatcher delegates the dispatching to another one. + * + * @author Fabien Potencier + */ +class TraceableEventDispatcher implements TraceableEventDispatcherInterface +{ + protected $logger; + protected $stopwatch; + + private $called; + private $dispatcher; + private $wrappedListeners; + + /** + * Constructor. + * + * @param EventDispatcherInterface $dispatcher An EventDispatcherInterface instance + * @param Stopwatch $stopwatch A Stopwatch instance + * @param LoggerInterface $logger A LoggerInterface instance + */ + public function __construct(EventDispatcherInterface $dispatcher, Stopwatch $stopwatch, LoggerInterface $logger = null) + { + $this->dispatcher = $dispatcher; + $this->stopwatch = $stopwatch; + $this->logger = $logger; + $this->called = array(); + $this->wrappedListeners = array(); + } + + /** + * {@inheritdoc} + */ + public function addListener($eventName, $listener, $priority = 0) + { + $this->dispatcher->addListener($eventName, $listener, $priority); + } + + /** + * {@inheritdoc} + */ + public function addSubscriber(EventSubscriberInterface $subscriber) + { + $this->dispatcher->addSubscriber($subscriber); + } + + /** + * {@inheritdoc} + */ + public function removeListener($eventName, $listener) + { + if (isset($this->wrappedListeners[$eventName])) { + foreach ($this->wrappedListeners[$eventName] as $index => $wrappedListener) { + if ($wrappedListener->getWrappedListener() === $listener) { + $listener = $wrappedListener; + unset($this->wrappedListeners[$eventName][$index]); + break; + } + } + } + + return $this->dispatcher->removeListener($eventName, $listener); + } + + /** + * {@inheritdoc} + */ + public function removeSubscriber(EventSubscriberInterface $subscriber) + { + return $this->dispatcher->removeSubscriber($subscriber); + } + + /** + * {@inheritdoc} + */ + public function getListeners($eventName = null) + { + return $this->dispatcher->getListeners($eventName); + } + + /** + * {@inheritdoc} + */ + public function getListenerPriority($eventName, $listener) + { + return $this->dispatcher->getListenerPriority($eventName, $listener); + } + + /** + * {@inheritdoc} + */ + public function hasListeners($eventName = null) + { + return $this->dispatcher->hasListeners($eventName); + } + + /** + * {@inheritdoc} + */ + public function dispatch($eventName, Event $event = null) + { + if (null === $event) { + $event = new Event(); + } + + if (null !== $this->logger && $event->isPropagationStopped()) { + $this->logger->debug(sprintf('The "%s" event is already stopped. No listeners have been called.', $eventName)); + } + + $this->preProcess($eventName); + $this->preDispatch($eventName, $event); + + $e = $this->stopwatch->start($eventName, 'section'); + + $this->dispatcher->dispatch($eventName, $event); + + if ($e->isStarted()) { + $e->stop(); + } + + $this->postDispatch($eventName, $event); + $this->postProcess($eventName); + + return $event; + } + + /** + * {@inheritdoc} + */ + public function getCalledListeners() + { + $called = array(); + foreach ($this->called as $eventName => $listeners) { + foreach ($listeners as $listener) { + $info = $this->getListenerInfo($listener->getWrappedListener(), $eventName); + $called[$eventName.'.'.$info['pretty']] = $info; + } + } + + return $called; + } + + /** + * {@inheritdoc} + */ + public function getNotCalledListeners() + { + try { + $allListeners = $this->getListeners(); + } catch (\Exception $e) { + if (null !== $this->logger) { + $this->logger->info('An exception was thrown while getting the uncalled listeners.', array('exception' => $e)); + } + + // unable to retrieve the uncalled listeners + return array(); + } + + $notCalled = array(); + foreach ($allListeners as $eventName => $listeners) { + foreach ($listeners as $listener) { + $called = false; + if (isset($this->called[$eventName])) { + foreach ($this->called[$eventName] as $l) { + if ($l->getWrappedListener() === $listener) { + $called = true; + + break; + } + } + } + + if (!$called) { + $info = $this->getListenerInfo($listener, $eventName); + $notCalled[$eventName.'.'.$info['pretty']] = $info; + } + } + } + + uasort($notCalled, array($this, 'sortListenersByPriority')); + + return $notCalled; + } + + /** + * Proxies all method calls to the original event dispatcher. + * + * @param string $method The method name + * @param array $arguments The method arguments + * + * @return mixed + */ + public function __call($method, $arguments) + { + return call_user_func_array(array($this->dispatcher, $method), $arguments); + } + + /** + * Called before dispatching the event. + * + * @param string $eventName The event name + * @param Event $event The event + */ + protected function preDispatch($eventName, Event $event) + { + } + + /** + * Called after dispatching the event. + * + * @param string $eventName The event name + * @param Event $event The event + */ + protected function postDispatch($eventName, Event $event) + { + } + + private function preProcess($eventName) + { + foreach ($this->dispatcher->getListeners($eventName) as $listener) { + $info = $this->getListenerInfo($listener, $eventName); + $name = isset($info['class']) ? $info['class'] : $info['type']; + $wrappedListener = new WrappedListener($listener, $name, $this->stopwatch, $this); + $this->wrappedListeners[$eventName][] = $wrappedListener; + $this->dispatcher->removeListener($eventName, $listener); + $this->dispatcher->addListener($eventName, $wrappedListener, $info['priority']); + } + } + + private function postProcess($eventName) + { + unset($this->wrappedListeners[$eventName]); + $skipped = false; + foreach ($this->dispatcher->getListeners($eventName) as $listener) { + if (!$listener instanceof WrappedListener) { // #12845: a new listener was added during dispatch. + continue; + } + // Unwrap listener + $priority = $this->getListenerPriority($eventName, $listener); + $this->dispatcher->removeListener($eventName, $listener); + $this->dispatcher->addListener($eventName, $listener->getWrappedListener(), $priority); + + $info = $this->getListenerInfo($listener->getWrappedListener(), $eventName); + if ($listener->wasCalled()) { + if (null !== $this->logger) { + $this->logger->debug(sprintf('Notified event "%s" to listener "%s".', $eventName, $info['pretty'])); + } + + if (!isset($this->called[$eventName])) { + $this->called[$eventName] = new \SplObjectStorage(); + } + + $this->called[$eventName]->attach($listener); + } + + if (null !== $this->logger && $skipped) { + $this->logger->debug(sprintf('Listener "%s" was not called for event "%s".', $info['pretty'], $eventName)); + } + + if ($listener->stoppedPropagation()) { + if (null !== $this->logger) { + $this->logger->debug(sprintf('Listener "%s" stopped propagation of the event "%s".', $info['pretty'], $eventName)); + } + + $skipped = true; + } + } + } + + /** + * Returns information about the listener. + * + * @param object $listener The listener + * @param string $eventName The event name + * + * @return array Information about the listener + */ + private function getListenerInfo($listener, $eventName) + { + $info = array( + 'event' => $eventName, + 'priority' => $this->getListenerPriority($eventName, $listener), + ); + if ($listener instanceof \Closure) { + $info += array( + 'type' => 'Closure', + 'pretty' => 'closure', + ); + } elseif (is_string($listener)) { + try { + $r = new \ReflectionFunction($listener); + $file = $r->getFileName(); + $line = $r->getStartLine(); + } catch (\ReflectionException $e) { + $file = null; + $line = null; + } + $info += array( + 'type' => 'Function', + 'function' => $listener, + 'file' => $file, + 'line' => $line, + 'pretty' => $listener, + ); + } elseif (is_array($listener) || (is_object($listener) && is_callable($listener))) { + if (!is_array($listener)) { + $listener = array($listener, '__invoke'); + } + $class = is_object($listener[0]) ? get_class($listener[0]) : $listener[0]; + try { + $r = new \ReflectionMethod($class, $listener[1]); + $file = $r->getFileName(); + $line = $r->getStartLine(); + } catch (\ReflectionException $e) { + $file = null; + $line = null; + } + $info += array( + 'type' => 'Method', + 'class' => $class, + 'method' => $listener[1], + 'file' => $file, + 'line' => $line, + 'pretty' => $class.'::'.$listener[1], + ); + } + + return $info; + } + + private function sortListenersByPriority($a, $b) + { + if (is_int($a['priority']) && !is_int($b['priority'])) { + return 1; + } + + if (!is_int($a['priority']) && is_int($b['priority'])) { + return -1; + } + + if ($a['priority'] === $b['priority']) { + return 0; + } + + if ($a['priority'] > $b['priority']) { + return -1; + } + + return 1; + } +} diff --git a/plugins/updraftplus/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcherInterface.php b/plugins/updraftplus/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcherInterface.php new file mode 100644 index 0000000..5483e81 --- /dev/null +++ b/plugins/updraftplus/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcherInterface.php @@ -0,0 +1,34 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\EventDispatcher\Debug; + +use Symfony\Component\EventDispatcher\EventDispatcherInterface; + +/** + * @author Fabien Potencier + */ +interface TraceableEventDispatcherInterface extends EventDispatcherInterface +{ + /** + * Gets the called listeners. + * + * @return array An array of called listeners + */ + public function getCalledListeners(); + + /** + * Gets the not called listeners. + * + * @return array An array of not called listeners + */ + public function getNotCalledListeners(); +} diff --git a/plugins/updraftplus/vendor/symfony/event-dispatcher/Debug/WrappedListener.php b/plugins/updraftplus/vendor/symfony/event-dispatcher/Debug/WrappedListener.php new file mode 100644 index 0000000..e16627d --- /dev/null +++ b/plugins/updraftplus/vendor/symfony/event-dispatcher/Debug/WrappedListener.php @@ -0,0 +1,71 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\EventDispatcher\Debug; + +use Symfony\Component\Stopwatch\Stopwatch; +use Symfony\Component\EventDispatcher\Event; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; + +/** + * @author Fabien Potencier + */ +class WrappedListener +{ + private $listener; + private $name; + private $called; + private $stoppedPropagation; + private $stopwatch; + private $dispatcher; + + public function __construct($listener, $name, Stopwatch $stopwatch, EventDispatcherInterface $dispatcher = null) + { + $this->listener = $listener; + $this->name = $name; + $this->stopwatch = $stopwatch; + $this->dispatcher = $dispatcher; + $this->called = false; + $this->stoppedPropagation = false; + } + + public function getWrappedListener() + { + return $this->listener; + } + + public function wasCalled() + { + return $this->called; + } + + public function stoppedPropagation() + { + return $this->stoppedPropagation; + } + + public function __invoke(Event $event, $eventName, EventDispatcherInterface $dispatcher) + { + $this->called = true; + + $e = $this->stopwatch->start($this->name, 'event_listener'); + + call_user_func($this->listener, $event, $eventName, $this->dispatcher ?: $dispatcher); + + if ($e->isStarted()) { + $e->stop(); + } + + if ($event->isPropagationStopped()) { + $this->stoppedPropagation = true; + } + } +} diff --git a/plugins/updraftplus/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php b/plugins/updraftplus/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php new file mode 100644 index 0000000..ebfe435 --- /dev/null +++ b/plugins/updraftplus/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php @@ -0,0 +1,109 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\EventDispatcher\DependencyInjection; + +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; + +/** + * Compiler pass to register tagged services for an event dispatcher. + */ +class RegisterListenersPass implements CompilerPassInterface +{ + /** + * @var string + */ + protected $dispatcherService; + + /** + * @var string + */ + protected $listenerTag; + + /** + * @var string + */ + protected $subscriberTag; + + /** + * Constructor. + * + * @param string $dispatcherService Service name of the event dispatcher in processed container + * @param string $listenerTag Tag name used for listener + * @param string $subscriberTag Tag name used for subscribers + */ + public function __construct($dispatcherService = 'event_dispatcher', $listenerTag = 'kernel.event_listener', $subscriberTag = 'kernel.event_subscriber') + { + $this->dispatcherService = $dispatcherService; + $this->listenerTag = $listenerTag; + $this->subscriberTag = $subscriberTag; + } + + public function process(ContainerBuilder $container) + { + if (!$container->hasDefinition($this->dispatcherService) && !$container->hasAlias($this->dispatcherService)) { + return; + } + + $definition = $container->findDefinition($this->dispatcherService); + + foreach ($container->findTaggedServiceIds($this->listenerTag) as $id => $events) { + $def = $container->getDefinition($id); + if (!$def->isPublic()) { + throw new \InvalidArgumentException(sprintf('The service "%s" must be public as event listeners are lazy-loaded.', $id)); + } + + if ($def->isAbstract()) { + throw new \InvalidArgumentException(sprintf('The service "%s" must not be abstract as event listeners are lazy-loaded.', $id)); + } + + foreach ($events as $event) { + $priority = isset($event['priority']) ? $event['priority'] : 0; + + if (!isset($event['event'])) { + throw new \InvalidArgumentException(sprintf('Service "%s" must define the "event" attribute on "%s" tags.', $id, $this->listenerTag)); + } + + if (!isset($event['method'])) { + $event['method'] = 'on'.preg_replace_callback(array( + '/(?<=\b)[a-z]/i', + '/[^a-z0-9]/i', + ), function ($matches) { return strtoupper($matches[0]); }, $event['event']); + $event['method'] = preg_replace('/[^a-z0-9]/i', '', $event['method']); + } + + $definition->addMethodCall('addListenerService', array($event['event'], array($id, $event['method']), $priority)); + } + } + + foreach ($container->findTaggedServiceIds($this->subscriberTag) as $id => $attributes) { + $def = $container->getDefinition($id); + if (!$def->isPublic()) { + throw new \InvalidArgumentException(sprintf('The service "%s" must be public as event subscribers are lazy-loaded.', $id)); + } + + if ($def->isAbstract()) { + throw new \InvalidArgumentException(sprintf('The service "%s" must not be abstract as event subscribers are lazy-loaded.', $id)); + } + + // We must assume that the class value has been correctly filled, even if the service is created by a factory + $class = $container->getParameterBag()->resolveValue($def->getClass()); + + $interface = 'Symfony\Component\EventDispatcher\EventSubscriberInterface'; + if (!is_subclass_of($class, $interface)) { + throw new \InvalidArgumentException(sprintf('Service "%s" must implement interface "%s".', $id, $interface)); + } + + $definition->addMethodCall('addSubscriberService', array($id, $class)); + } + } +} diff --git a/plugins/updraftplus/vendor/symfony/event-dispatcher/Event.php b/plugins/updraftplus/vendor/symfony/event-dispatcher/Event.php new file mode 100644 index 0000000..4a56349 --- /dev/null +++ b/plugins/updraftplus/vendor/symfony/event-dispatcher/Event.php @@ -0,0 +1,120 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\EventDispatcher; + +/** + * Event is the base class for classes containing event data. + * + * This class contains no event data. It is used by events that do not pass + * state information to an event handler when an event is raised. + * + * You can call the method stopPropagation() to abort the execution of + * further listeners in your event listener. + * + * @author Guilherme Blanco + * @author Jonathan Wage + * @author Roman Borschel + * @author Bernhard Schussek + */ +class Event +{ + /** + * @var bool Whether no further event listeners should be triggered + */ + private $propagationStopped = false; + + /** + * @var EventDispatcher Dispatcher that dispatched this event + */ + private $dispatcher; + + /** + * @var string This event's name + */ + private $name; + + /** + * Returns whether further event listeners should be triggered. + * + * @see Event::stopPropagation() + * + * @return bool Whether propagation was already stopped for this event. + */ + public function isPropagationStopped() + { + return $this->propagationStopped; + } + + /** + * Stops the propagation of the event to further event listeners. + * + * If multiple event listeners are connected to the same event, no + * further event listener will be triggered once any trigger calls + * stopPropagation(). + */ + public function stopPropagation() + { + $this->propagationStopped = true; + } + + /** + * Stores the EventDispatcher that dispatches this Event. + * + * @param EventDispatcherInterface $dispatcher + * + * @deprecated since version 2.4, to be removed in 3.0. The event dispatcher is passed to the listener call. + */ + public function setDispatcher(EventDispatcherInterface $dispatcher) + { + $this->dispatcher = $dispatcher; + } + + /** + * Returns the EventDispatcher that dispatches this Event. + * + * @return EventDispatcherInterface + * + * @deprecated since version 2.4, to be removed in 3.0. The event dispatcher is passed to the listener call. + */ + public function getDispatcher() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 2.4 and will be removed in 3.0. The event dispatcher instance can be received in the listener call instead.', E_USER_DEPRECATED); + + return $this->dispatcher; + } + + /** + * Gets the event's name. + * + * @return string + * + * @deprecated since version 2.4, to be removed in 3.0. The event name is passed to the listener call. + */ + public function getName() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 2.4 and will be removed in 3.0. The event name can be received in the listener call instead.', E_USER_DEPRECATED); + + return $this->name; + } + + /** + * Sets the event's name property. + * + * @param string $name The event name. + * + * @deprecated since version 2.4, to be removed in 3.0. The event name is passed to the listener call. + */ + public function setName($name) + { + $this->name = $name; + } +} diff --git a/plugins/updraftplus/vendor/symfony/event-dispatcher/EventDispatcher.php b/plugins/updraftplus/vendor/symfony/event-dispatcher/EventDispatcher.php new file mode 100644 index 0000000..d4c5cdf --- /dev/null +++ b/plugins/updraftplus/vendor/symfony/event-dispatcher/EventDispatcher.php @@ -0,0 +1,198 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\EventDispatcher; + +/** + * The EventDispatcherInterface is the central point of Symfony's event listener system. + * + * Listeners are registered on the manager and events are dispatched through the + * manager. + * + * @author Guilherme Blanco + * @author Jonathan Wage + * @author Roman Borschel + * @author Bernhard Schussek + * @author Fabien Potencier + * @author Jordi Boggiano + * @author Jordan Alliot + */ +class EventDispatcher implements EventDispatcherInterface +{ + private $listeners = array(); + private $sorted = array(); + + /** + * {@inheritdoc} + */ + public function dispatch($eventName, Event $event = null) + { + if (null === $event) { + $event = new Event(); + } + + $event->setDispatcher($this); + $event->setName($eventName); + + if ($listeners = $this->getListeners($eventName)) { + $this->doDispatch($listeners, $eventName, $event); + } + + return $event; + } + + /** + * {@inheritdoc} + */ + public function getListeners($eventName = null) + { + if (null !== $eventName) { + if (!isset($this->listeners[$eventName])) { + return array(); + } + + if (!isset($this->sorted[$eventName])) { + $this->sortListeners($eventName); + } + + return $this->sorted[$eventName]; + } + + foreach ($this->listeners as $eventName => $eventListeners) { + if (!isset($this->sorted[$eventName])) { + $this->sortListeners($eventName); + } + } + + return array_filter($this->sorted); + } + + /** + * Gets the listener priority for a specific event. + * + * Returns null if the event or the listener does not exist. + * + * @param string $eventName The name of the event + * @param callable $listener The listener + * + * @return int|null The event listener priority + */ + public function getListenerPriority($eventName, $listener) + { + if (!isset($this->listeners[$eventName])) { + return; + } + + foreach ($this->listeners[$eventName] as $priority => $listeners) { + if (false !== ($key = array_search($listener, $listeners, true))) { + return $priority; + } + } + } + + /** + * {@inheritdoc} + */ + public function hasListeners($eventName = null) + { + return (bool) count($this->getListeners($eventName)); + } + + /** + * {@inheritdoc} + */ + public function addListener($eventName, $listener, $priority = 0) + { + $this->listeners[$eventName][$priority][] = $listener; + unset($this->sorted[$eventName]); + } + + /** + * {@inheritdoc} + */ + public function removeListener($eventName, $listener) + { + if (!isset($this->listeners[$eventName])) { + return; + } + + foreach ($this->listeners[$eventName] as $priority => $listeners) { + if (false !== ($key = array_search($listener, $listeners, true))) { + unset($this->listeners[$eventName][$priority][$key], $this->sorted[$eventName]); + } + } + } + + /** + * {@inheritdoc} + */ + public function addSubscriber(EventSubscriberInterface $subscriber) + { + foreach ($subscriber->getSubscribedEvents() as $eventName => $params) { + if (is_string($params)) { + $this->addListener($eventName, array($subscriber, $params)); + } elseif (is_string($params[0])) { + $this->addListener($eventName, array($subscriber, $params[0]), isset($params[1]) ? $params[1] : 0); + } else { + foreach ($params as $listener) { + $this->addListener($eventName, array($subscriber, $listener[0]), isset($listener[1]) ? $listener[1] : 0); + } + } + } + } + + /** + * {@inheritdoc} + */ + public function removeSubscriber(EventSubscriberInterface $subscriber) + { + foreach ($subscriber->getSubscribedEvents() as $eventName => $params) { + if (is_array($params) && is_array($params[0])) { + foreach ($params as $listener) { + $this->removeListener($eventName, array($subscriber, $listener[0])); + } + } else { + $this->removeListener($eventName, array($subscriber, is_string($params) ? $params : $params[0])); + } + } + } + + /** + * Triggers the listeners of an event. + * + * This method can be overridden to add functionality that is executed + * for each listener. + * + * @param callable[] $listeners The event listeners. + * @param string $eventName The name of the event to dispatch. + * @param Event $event The event object to pass to the event handlers/listeners. + */ + protected function doDispatch($listeners, $eventName, Event $event) + { + foreach ($listeners as $listener) { + if ($event->isPropagationStopped()) { + break; + } + call_user_func($listener, $event, $eventName, $this); + } + } + + /** + * Sorts the internal list of listeners for the given event by priority. + * + * @param string $eventName The name of the event. + */ + private function sortListeners($eventName) + { + krsort($this->listeners[$eventName]); + $this->sorted[$eventName] = call_user_func_array('array_merge', $this->listeners[$eventName]); + } +} diff --git a/plugins/updraftplus/vendor/symfony/event-dispatcher/EventDispatcherInterface.php b/plugins/updraftplus/vendor/symfony/event-dispatcher/EventDispatcherInterface.php new file mode 100644 index 0000000..a9bdd2c --- /dev/null +++ b/plugins/updraftplus/vendor/symfony/event-dispatcher/EventDispatcherInterface.php @@ -0,0 +1,88 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\EventDispatcher; + +/** + * The EventDispatcherInterface is the central point of Symfony's event listener system. + * Listeners are registered on the manager and events are dispatched through the + * manager. + * + * @author Bernhard Schussek + */ +interface EventDispatcherInterface +{ + /** + * Dispatches an event to all registered listeners. + * + * @param string $eventName The name of the event to dispatch. The name of + * the event is the name of the method that is + * invoked on listeners. + * @param Event $event The event to pass to the event handlers/listeners. + * If not supplied, an empty Event instance is created. + * + * @return Event + */ + public function dispatch($eventName, Event $event = null); + + /** + * Adds an event listener that listens on the specified events. + * + * @param string $eventName The event to listen on + * @param callable $listener The listener + * @param int $priority The higher this value, the earlier an event + * listener will be triggered in the chain (defaults to 0) + */ + public function addListener($eventName, $listener, $priority = 0); + + /** + * Adds an event subscriber. + * + * The subscriber is asked for all the events he is + * interested in and added as a listener for these events. + * + * @param EventSubscriberInterface $subscriber The subscriber. + */ + public function addSubscriber(EventSubscriberInterface $subscriber); + + /** + * Removes an event listener from the specified events. + * + * @param string $eventName The event to remove a listener from + * @param callable $listener The listener to remove + */ + public function removeListener($eventName, $listener); + + /** + * Removes an event subscriber. + * + * @param EventSubscriberInterface $subscriber The subscriber + */ + public function removeSubscriber(EventSubscriberInterface $subscriber); + + /** + * Gets the listeners of a specific event or all listeners sorted by descending priority. + * + * @param string $eventName The name of the event + * + * @return array The event listeners for the specified event, or all event listeners by event name + */ + public function getListeners($eventName = null); + + /** + * Checks whether an event has any registered listeners. + * + * @param string $eventName The name of the event + * + * @return bool true if the specified event has any listeners, false otherwise + */ + public function hasListeners($eventName = null); +} diff --git a/plugins/updraftplus/vendor/symfony/event-dispatcher/EventSubscriberInterface.php b/plugins/updraftplus/vendor/symfony/event-dispatcher/EventSubscriberInterface.php new file mode 100644 index 0000000..8af7789 --- /dev/null +++ b/plugins/updraftplus/vendor/symfony/event-dispatcher/EventSubscriberInterface.php @@ -0,0 +1,46 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\EventDispatcher; + +/** + * An EventSubscriber knows himself what events he is interested in. + * If an EventSubscriber is added to an EventDispatcherInterface, the manager invokes + * {@link getSubscribedEvents} and registers the subscriber as a listener for all + * returned events. + * + * @author Guilherme Blanco + * @author Jonathan Wage + * @author Roman Borschel + * @author Bernhard Schussek + */ +interface EventSubscriberInterface +{ + /** + * Returns an array of event names this subscriber wants to listen to. + * + * The array keys are event names and the value can be: + * + * * The method name to call (priority defaults to 0) + * * An array composed of the method name to call and the priority + * * An array of arrays composed of the method names to call and respective + * priorities, or 0 if unset + * + * For instance: + * + * * array('eventName' => 'methodName') + * * array('eventName' => array('methodName', $priority)) + * * array('eventName' => array(array('methodName1', $priority), array('methodName2'))) + * + * @return array The event names to listen to + */ + public static function getSubscribedEvents(); +} diff --git a/plugins/updraftplus/vendor/symfony/event-dispatcher/GenericEvent.php b/plugins/updraftplus/vendor/symfony/event-dispatcher/GenericEvent.php new file mode 100644 index 0000000..6458180 --- /dev/null +++ b/plugins/updraftplus/vendor/symfony/event-dispatcher/GenericEvent.php @@ -0,0 +1,186 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\EventDispatcher; + +/** + * Event encapsulation class. + * + * Encapsulates events thus decoupling the observer from the subject they encapsulate. + * + * @author Drak + */ +class GenericEvent extends Event implements \ArrayAccess, \IteratorAggregate +{ + /** + * Event subject. + * + * @var mixed usually object or callable + */ + protected $subject; + + /** + * Array of arguments. + * + * @var array + */ + protected $arguments; + + /** + * Encapsulate an event with $subject and $args. + * + * @param mixed $subject The subject of the event, usually an object. + * @param array $arguments Arguments to store in the event. + */ + public function __construct($subject = null, array $arguments = array()) + { + $this->subject = $subject; + $this->arguments = $arguments; + } + + /** + * Getter for subject property. + * + * @return mixed $subject The observer subject. + */ + public function getSubject() + { + return $this->subject; + } + + /** + * Get argument by key. + * + * @param string $key Key. + * + * @throws \InvalidArgumentException If key is not found. + * + * @return mixed Contents of array key. + */ + public function getArgument($key) + { + if ($this->hasArgument($key)) { + return $this->arguments[$key]; + } + + throw new \InvalidArgumentException(sprintf('Argument "%s" not found.', $key)); + } + + /** + * Add argument to event. + * + * @param string $key Argument name. + * @param mixed $value Value. + * + * @return GenericEvent + */ + public function setArgument($key, $value) + { + $this->arguments[$key] = $value; + + return $this; + } + + /** + * Getter for all arguments. + * + * @return array + */ + public function getArguments() + { + return $this->arguments; + } + + /** + * Set args property. + * + * @param array $args Arguments. + * + * @return GenericEvent + */ + public function setArguments(array $args = array()) + { + $this->arguments = $args; + + return $this; + } + + /** + * Has argument. + * + * @param string $key Key of arguments array. + * + * @return bool + */ + public function hasArgument($key) + { + return array_key_exists($key, $this->arguments); + } + + /** + * ArrayAccess for argument getter. + * + * @param string $key Array key. + * + * @throws \InvalidArgumentException If key does not exist in $this->args. + * + * @return mixed + */ + public function offsetGet($key) + { + return $this->getArgument($key); + } + + /** + * ArrayAccess for argument setter. + * + * @param string $key Array key to set. + * @param mixed $value Value. + */ + public function offsetSet($key, $value) + { + $this->setArgument($key, $value); + } + + /** + * ArrayAccess for unset argument. + * + * @param string $key Array key. + */ + public function offsetUnset($key) + { + if ($this->hasArgument($key)) { + unset($this->arguments[$key]); + } + } + + /** + * ArrayAccess has argument. + * + * @param string $key Array key. + * + * @return bool + */ + public function offsetExists($key) + { + return $this->hasArgument($key); + } + + /** + * IteratorAggregate for iterating over the object like an array. + * + * @return \ArrayIterator + */ + public function getIterator() + { + return new \ArrayIterator($this->arguments); + } +} diff --git a/plugins/updraftplus/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php b/plugins/updraftplus/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php new file mode 100644 index 0000000..13e8572 --- /dev/null +++ b/plugins/updraftplus/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php @@ -0,0 +1,101 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\EventDispatcher; + +/** + * A read-only proxy for an event dispatcher. + * + * @author Bernhard Schussek + */ +class ImmutableEventDispatcher implements EventDispatcherInterface +{ + /** + * The proxied dispatcher. + * + * @var EventDispatcherInterface + */ + private $dispatcher; + + /** + * Creates an unmodifiable proxy for an event dispatcher. + * + * @param EventDispatcherInterface $dispatcher The proxied event dispatcher. + */ + public function __construct(EventDispatcherInterface $dispatcher) + { + $this->dispatcher = $dispatcher; + } + + /** + * {@inheritdoc} + */ + public function dispatch($eventName, Event $event = null) + { + return $this->dispatcher->dispatch($eventName, $event); + } + + /** + * {@inheritdoc} + */ + public function addListener($eventName, $listener, $priority = 0) + { + throw new \BadMethodCallException('Unmodifiable event dispatchers must not be modified.'); + } + + /** + * {@inheritdoc} + */ + public function addSubscriber(EventSubscriberInterface $subscriber) + { + throw new \BadMethodCallException('Unmodifiable event dispatchers must not be modified.'); + } + + /** + * {@inheritdoc} + */ + public function removeListener($eventName, $listener) + { + throw new \BadMethodCallException('Unmodifiable event dispatchers must not be modified.'); + } + + /** + * {@inheritdoc} + */ + public function removeSubscriber(EventSubscriberInterface $subscriber) + { + throw new \BadMethodCallException('Unmodifiable event dispatchers must not be modified.'); + } + + /** + * {@inheritdoc} + */ + public function getListeners($eventName = null) + { + return $this->dispatcher->getListeners($eventName); + } + + /** + * {@inheritdoc} + */ + public function getListenerPriority($eventName, $listener) + { + return $this->dispatcher->getListenerPriority($eventName, $listener); + } + + /** + * {@inheritdoc} + */ + public function hasListeners($eventName = null) + { + return $this->dispatcher->hasListeners($eventName); + } +} diff --git a/plugins/updraftplus/vendor/symfony/event-dispatcher/LICENSE b/plugins/updraftplus/vendor/symfony/event-dispatcher/LICENSE new file mode 100644 index 0000000..12a7453 --- /dev/null +++ b/plugins/updraftplus/vendor/symfony/event-dispatcher/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2004-2016 Fabien Potencier + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/plugins/updraftplus/vendor/symfony/event-dispatcher/README.md b/plugins/updraftplus/vendor/symfony/event-dispatcher/README.md new file mode 100644 index 0000000..185c3fe --- /dev/null +++ b/plugins/updraftplus/vendor/symfony/event-dispatcher/README.md @@ -0,0 +1,15 @@ +EventDispatcher Component +========================= + +The EventDispatcher component provides tools that allow your application +components to communicate with each other by dispatching events and listening to +them. + +Resources +--------- + + * [Documentation](https://symfony.com/doc/current/components/event_dispatcher/index.html) + * [Contributing](https://symfony.com/doc/current/contributing/index.html) + * [Report issues](https://github.com/symfony/symfony/issues) and + [send Pull Requests](https://github.com/symfony/symfony/pulls) + in the [main Symfony repository](https://github.com/symfony/symfony) diff --git a/plugins/updraftplus/vendor/symfony/event-dispatcher/Tests/AbstractEventDispatcherTest.php b/plugins/updraftplus/vendor/symfony/event-dispatcher/Tests/AbstractEventDispatcherTest.php new file mode 100644 index 0000000..0169ede --- /dev/null +++ b/plugins/updraftplus/vendor/symfony/event-dispatcher/Tests/AbstractEventDispatcherTest.php @@ -0,0 +1,396 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\EventDispatcher\Tests; + +use Symfony\Component\EventDispatcher\Event; +use Symfony\Component\EventDispatcher\EventDispatcher; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; + +abstract class AbstractEventDispatcherTest extends \PHPUnit_Framework_TestCase +{ + /* Some pseudo events */ + const preFoo = 'pre.foo'; + const postFoo = 'post.foo'; + const preBar = 'pre.bar'; + const postBar = 'post.bar'; + + /** + * @var EventDispatcher + */ + private $dispatcher; + + private $listener; + + protected function setUp() + { + $this->dispatcher = $this->createEventDispatcher(); + $this->listener = new TestEventListener(); + } + + protected function tearDown() + { + $this->dispatcher = null; + $this->listener = null; + } + + abstract protected function createEventDispatcher(); + + public function testInitialState() + { + $this->assertEquals(array(), $this->dispatcher->getListeners()); + $this->assertFalse($this->dispatcher->hasListeners(self::preFoo)); + $this->assertFalse($this->dispatcher->hasListeners(self::postFoo)); + } + + public function testAddListener() + { + $this->dispatcher->addListener('pre.foo', array($this->listener, 'preFoo')); + $this->dispatcher->addListener('post.foo', array($this->listener, 'postFoo')); + $this->assertTrue($this->dispatcher->hasListeners(self::preFoo)); + $this->assertTrue($this->dispatcher->hasListeners(self::postFoo)); + $this->assertCount(1, $this->dispatcher->getListeners(self::preFoo)); + $this->assertCount(1, $this->dispatcher->getListeners(self::postFoo)); + $this->assertCount(2, $this->dispatcher->getListeners()); + } + + public function testGetListenersSortsByPriority() + { + $listener1 = new TestEventListener(); + $listener2 = new TestEventListener(); + $listener3 = new TestEventListener(); + $listener1->name = '1'; + $listener2->name = '2'; + $listener3->name = '3'; + + $this->dispatcher->addListener('pre.foo', array($listener1, 'preFoo'), -10); + $this->dispatcher->addListener('pre.foo', array($listener2, 'preFoo'), 10); + $this->dispatcher->addListener('pre.foo', array($listener3, 'preFoo')); + + $expected = array( + array($listener2, 'preFoo'), + array($listener3, 'preFoo'), + array($listener1, 'preFoo'), + ); + + $this->assertSame($expected, $this->dispatcher->getListeners('pre.foo')); + } + + public function testGetAllListenersSortsByPriority() + { + $listener1 = new TestEventListener(); + $listener2 = new TestEventListener(); + $listener3 = new TestEventListener(); + $listener4 = new TestEventListener(); + $listener5 = new TestEventListener(); + $listener6 = new TestEventListener(); + + $this->dispatcher->addListener('pre.foo', $listener1, -10); + $this->dispatcher->addListener('pre.foo', $listener2); + $this->dispatcher->addListener('pre.foo', $listener3, 10); + $this->dispatcher->addListener('post.foo', $listener4, -10); + $this->dispatcher->addListener('post.foo', $listener5); + $this->dispatcher->addListener('post.foo', $listener6, 10); + + $expected = array( + 'pre.foo' => array($listener3, $listener2, $listener1), + 'post.foo' => array($listener6, $listener5, $listener4), + ); + + $this->assertSame($expected, $this->dispatcher->getListeners()); + } + + public function testGetListenerPriority() + { + $listener1 = new TestEventListener(); + $listener2 = new TestEventListener(); + + $this->dispatcher->addListener('pre.foo', $listener1, -10); + $this->dispatcher->addListener('pre.foo', $listener2); + + $this->assertSame(-10, $this->dispatcher->getListenerPriority('pre.foo', $listener1)); + $this->assertSame(0, $this->dispatcher->getListenerPriority('pre.foo', $listener2)); + $this->assertNull($this->dispatcher->getListenerPriority('pre.bar', $listener2)); + $this->assertNull($this->dispatcher->getListenerPriority('pre.foo', function () {})); + } + + public function testDispatch() + { + $this->dispatcher->addListener('pre.foo', array($this->listener, 'preFoo')); + $this->dispatcher->addListener('post.foo', array($this->listener, 'postFoo')); + $this->dispatcher->dispatch(self::preFoo); + $this->assertTrue($this->listener->preFooInvoked); + $this->assertFalse($this->listener->postFooInvoked); + $this->assertInstanceOf('Symfony\Component\EventDispatcher\Event', $this->dispatcher->dispatch('noevent')); + $this->assertInstanceOf('Symfony\Component\EventDispatcher\Event', $this->dispatcher->dispatch(self::preFoo)); + $event = new Event(); + $return = $this->dispatcher->dispatch(self::preFoo, $event); + $this->assertSame($event, $return); + } + + /** + * @group legacy + */ + public function testLegacyDispatch() + { + $event = new Event(); + $return = $this->dispatcher->dispatch(self::preFoo, $event); + $this->assertEquals('pre.foo', $event->getName()); + } + + public function testDispatchForClosure() + { + $invoked = 0; + $listener = function () use (&$invoked) { + ++$invoked; + }; + $this->dispatcher->addListener('pre.foo', $listener); + $this->dispatcher->addListener('post.foo', $listener); + $this->dispatcher->dispatch(self::preFoo); + $this->assertEquals(1, $invoked); + } + + public function testStopEventPropagation() + { + $otherListener = new TestEventListener(); + + // postFoo() stops the propagation, so only one listener should + // be executed + // Manually set priority to enforce $this->listener to be called first + $this->dispatcher->addListener('post.foo', array($this->listener, 'postFoo'), 10); + $this->dispatcher->addListener('post.foo', array($otherListener, 'preFoo')); + $this->dispatcher->dispatch(self::postFoo); + $this->assertTrue($this->listener->postFooInvoked); + $this->assertFalse($otherListener->postFooInvoked); + } + + public function testDispatchByPriority() + { + $invoked = array(); + $listener1 = function () use (&$invoked) { + $invoked[] = '1'; + }; + $listener2 = function () use (&$invoked) { + $invoked[] = '2'; + }; + $listener3 = function () use (&$invoked) { + $invoked[] = '3'; + }; + $this->dispatcher->addListener('pre.foo', $listener1, -10); + $this->dispatcher->addListener('pre.foo', $listener2); + $this->dispatcher->addListener('pre.foo', $listener3, 10); + $this->dispatcher->dispatch(self::preFoo); + $this->assertEquals(array('3', '2', '1'), $invoked); + } + + public function testRemoveListener() + { + $this->dispatcher->addListener('pre.bar', $this->listener); + $this->assertTrue($this->dispatcher->hasListeners(self::preBar)); + $this->dispatcher->removeListener('pre.bar', $this->listener); + $this->assertFalse($this->dispatcher->hasListeners(self::preBar)); + $this->dispatcher->removeListener('notExists', $this->listener); + } + + public function testAddSubscriber() + { + $eventSubscriber = new TestEventSubscriber(); + $this->dispatcher->addSubscriber($eventSubscriber); + $this->assertTrue($this->dispatcher->hasListeners(self::preFoo)); + $this->assertTrue($this->dispatcher->hasListeners(self::postFoo)); + } + + public function testAddSubscriberWithPriorities() + { + $eventSubscriber = new TestEventSubscriber(); + $this->dispatcher->addSubscriber($eventSubscriber); + + $eventSubscriber = new TestEventSubscriberWithPriorities(); + $this->dispatcher->addSubscriber($eventSubscriber); + + $listeners = $this->dispatcher->getListeners('pre.foo'); + $this->assertTrue($this->dispatcher->hasListeners(self::preFoo)); + $this->assertCount(2, $listeners); + $this->assertInstanceOf('Symfony\Component\EventDispatcher\Tests\TestEventSubscriberWithPriorities', $listeners[0][0]); + } + + public function testAddSubscriberWithMultipleListeners() + { + $eventSubscriber = new TestEventSubscriberWithMultipleListeners(); + $this->dispatcher->addSubscriber($eventSubscriber); + + $listeners = $this->dispatcher->getListeners('pre.foo'); + $this->assertTrue($this->dispatcher->hasListeners(self::preFoo)); + $this->assertCount(2, $listeners); + $this->assertEquals('preFoo2', $listeners[0][1]); + } + + public function testRemoveSubscriber() + { + $eventSubscriber = new TestEventSubscriber(); + $this->dispatcher->addSubscriber($eventSubscriber); + $this->assertTrue($this->dispatcher->hasListeners(self::preFoo)); + $this->assertTrue($this->dispatcher->hasListeners(self::postFoo)); + $this->dispatcher->removeSubscriber($eventSubscriber); + $this->assertFalse($this->dispatcher->hasListeners(self::preFoo)); + $this->assertFalse($this->dispatcher->hasListeners(self::postFoo)); + } + + public function testRemoveSubscriberWithPriorities() + { + $eventSubscriber = new TestEventSubscriberWithPriorities(); + $this->dispatcher->addSubscriber($eventSubscriber); + $this->assertTrue($this->dispatcher->hasListeners(self::preFoo)); + $this->dispatcher->removeSubscriber($eventSubscriber); + $this->assertFalse($this->dispatcher->hasListeners(self::preFoo)); + } + + public function testRemoveSubscriberWithMultipleListeners() + { + $eventSubscriber = new TestEventSubscriberWithMultipleListeners(); + $this->dispatcher->addSubscriber($eventSubscriber); + $this->assertTrue($this->dispatcher->hasListeners(self::preFoo)); + $this->assertCount(2, $this->dispatcher->getListeners(self::preFoo)); + $this->dispatcher->removeSubscriber($eventSubscriber); + $this->assertFalse($this->dispatcher->hasListeners(self::preFoo)); + } + + /** + * @group legacy + */ + public function testLegacyEventReceivesTheDispatcherInstance() + { + $dispatcher = null; + $this->dispatcher->addListener('test', function ($event) use (&$dispatcher) { + $dispatcher = $event->getDispatcher(); + }); + $this->dispatcher->dispatch('test'); + $this->assertSame($this->dispatcher, $dispatcher); + } + + public function testEventReceivesTheDispatcherInstanceAsArgument() + { + $listener = new TestWithDispatcher(); + $this->dispatcher->addListener('test', array($listener, 'foo')); + $this->assertNull($listener->name); + $this->assertNull($listener->dispatcher); + $this->dispatcher->dispatch('test'); + $this->assertEquals('test', $listener->name); + $this->assertSame($this->dispatcher, $listener->dispatcher); + } + + /** + * @see https://bugs.php.net/bug.php?id=62976 + * + * This bug affects: + * - The PHP 5.3 branch for versions < 5.3.18 + * - The PHP 5.4 branch for versions < 5.4.8 + * - The PHP 5.5 branch is not affected + */ + public function testWorkaroundForPhpBug62976() + { + $dispatcher = $this->createEventDispatcher(); + $dispatcher->addListener('bug.62976', new CallableClass()); + $dispatcher->removeListener('bug.62976', function () {}); + $this->assertTrue($dispatcher->hasListeners('bug.62976')); + } + + public function testHasListenersWhenAddedCallbackListenerIsRemoved() + { + $listener = function () {}; + $this->dispatcher->addListener('foo', $listener); + $this->dispatcher->removeListener('foo', $listener); + $this->assertFalse($this->dispatcher->hasListeners()); + } + + public function testGetListenersWhenAddedCallbackListenerIsRemoved() + { + $listener = function () {}; + $this->dispatcher->addListener('foo', $listener); + $this->dispatcher->removeListener('foo', $listener); + $this->assertSame(array(), $this->dispatcher->getListeners()); + } + + public function testHasListenersWithoutEventsReturnsFalseAfterHasListenersWithEventHasBeenCalled() + { + $this->assertFalse($this->dispatcher->hasListeners('foo')); + $this->assertFalse($this->dispatcher->hasListeners()); + } +} + +class CallableClass +{ + public function __invoke() + { + } +} + +class TestEventListener +{ + public $preFooInvoked = false; + public $postFooInvoked = false; + + /* Listener methods */ + + public function preFoo(Event $e) + { + $this->preFooInvoked = true; + } + + public function postFoo(Event $e) + { + $this->postFooInvoked = true; + + $e->stopPropagation(); + } +} + +class TestWithDispatcher +{ + public $name; + public $dispatcher; + + public function foo(Event $e, $name, $dispatcher) + { + $this->name = $name; + $this->dispatcher = $dispatcher; + } +} + +class TestEventSubscriber implements EventSubscriberInterface +{ + public static function getSubscribedEvents() + { + return array('pre.foo' => 'preFoo', 'post.foo' => 'postFoo'); + } +} + +class TestEventSubscriberWithPriorities implements EventSubscriberInterface +{ + public static function getSubscribedEvents() + { + return array( + 'pre.foo' => array('preFoo', 10), + 'post.foo' => array('postFoo'), + ); + } +} + +class TestEventSubscriberWithMultipleListeners implements EventSubscriberInterface +{ + public static function getSubscribedEvents() + { + return array('pre.foo' => array( + array('preFoo1'), + array('preFoo2', 10), + )); + } +} diff --git a/plugins/updraftplus/vendor/symfony/event-dispatcher/Tests/ContainerAwareEventDispatcherTest.php b/plugins/updraftplus/vendor/symfony/event-dispatcher/Tests/ContainerAwareEventDispatcherTest.php new file mode 100644 index 0000000..fcdb54a --- /dev/null +++ b/plugins/updraftplus/vendor/symfony/event-dispatcher/Tests/ContainerAwareEventDispatcherTest.php @@ -0,0 +1,277 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\EventDispatcher\Tests; + +use Symfony\Component\DependencyInjection\Container; +use Symfony\Component\DependencyInjection\Scope; +use Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher; +use Symfony\Component\EventDispatcher\Event; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; + +class ContainerAwareEventDispatcherTest extends AbstractEventDispatcherTest +{ + protected function createEventDispatcher() + { + $container = new Container(); + + return new ContainerAwareEventDispatcher($container); + } + + public function testAddAListenerService() + { + $event = new Event(); + + $service = $this->getMock('Symfony\Component\EventDispatcher\Tests\Service'); + + $service + ->expects($this->once()) + ->method('onEvent') + ->with($event) + ; + + $container = new Container(); + $container->set('service.listener', $service); + + $dispatcher = new ContainerAwareEventDispatcher($container); + $dispatcher->addListenerService('onEvent', array('service.listener', 'onEvent')); + + $dispatcher->dispatch('onEvent', $event); + } + + public function testAddASubscriberService() + { + $event = new Event(); + + $service = $this->getMock('Symfony\Component\EventDispatcher\Tests\SubscriberService'); + + $service + ->expects($this->once()) + ->method('onEvent') + ->with($event) + ; + + $service + ->expects($this->once()) + ->method('onEventWithPriority') + ->with($event) + ; + + $service + ->expects($this->once()) + ->method('onEventNested') + ->with($event) + ; + + $container = new Container(); + $container->set('service.subscriber', $service); + + $dispatcher = new ContainerAwareEventDispatcher($container); + $dispatcher->addSubscriberService('service.subscriber', 'Symfony\Component\EventDispatcher\Tests\SubscriberService'); + + $dispatcher->dispatch('onEvent', $event); + $dispatcher->dispatch('onEventWithPriority', $event); + $dispatcher->dispatch('onEventNested', $event); + } + + public function testPreventDuplicateListenerService() + { + $event = new Event(); + + $service = $this->getMock('Symfony\Component\EventDispatcher\Tests\Service'); + + $service + ->expects($this->once()) + ->method('onEvent') + ->with($event) + ; + + $container = new Container(); + $container->set('service.listener', $service); + + $dispatcher = new ContainerAwareEventDispatcher($container); + $dispatcher->addListenerService('onEvent', array('service.listener', 'onEvent'), 5); + $dispatcher->addListenerService('onEvent', array('service.listener', 'onEvent'), 10); + + $dispatcher->dispatch('onEvent', $event); + } + + /** + * @expectedException \InvalidArgumentException + * @group legacy + */ + public function testTriggerAListenerServiceOutOfScope() + { + $service = $this->getMock('Symfony\Component\EventDispatcher\Tests\Service'); + + $scope = new Scope('scope'); + $container = new Container(); + $container->addScope($scope); + $container->enterScope('scope'); + + $container->set('service.listener', $service, 'scope'); + + $dispatcher = new ContainerAwareEventDispatcher($container); + $dispatcher->addListenerService('onEvent', array('service.listener', 'onEvent')); + + $container->leaveScope('scope'); + $dispatcher->dispatch('onEvent'); + } + + /** + * @group legacy + */ + public function testReEnteringAScope() + { + $event = new Event(); + + $service1 = $this->getMock('Symfony\Component\EventDispatcher\Tests\Service'); + + $service1 + ->expects($this->exactly(2)) + ->method('onEvent') + ->with($event) + ; + + $scope = new Scope('scope'); + $container = new Container(); + $container->addScope($scope); + $container->enterScope('scope'); + + $container->set('service.listener', $service1, 'scope'); + + $dispatcher = new ContainerAwareEventDispatcher($container); + $dispatcher->addListenerService('onEvent', array('service.listener', 'onEvent')); + $dispatcher->dispatch('onEvent', $event); + + $service2 = $this->getMock('Symfony\Component\EventDispatcher\Tests\Service'); + + $service2 + ->expects($this->once()) + ->method('onEvent') + ->with($event) + ; + + $container->enterScope('scope'); + $container->set('service.listener', $service2, 'scope'); + + $dispatcher->dispatch('onEvent', $event); + + $container->leaveScope('scope'); + + $dispatcher->dispatch('onEvent'); + } + + public function testHasListenersOnLazyLoad() + { + $event = new Event(); + + $service = $this->getMock('Symfony\Component\EventDispatcher\Tests\Service'); + + $container = new Container(); + $container->set('service.listener', $service); + + $dispatcher = new ContainerAwareEventDispatcher($container); + $dispatcher->addListenerService('onEvent', array('service.listener', 'onEvent')); + + $event->setDispatcher($dispatcher); + $event->setName('onEvent'); + + $service + ->expects($this->once()) + ->method('onEvent') + ->with($event) + ; + + $this->assertTrue($dispatcher->hasListeners()); + + if ($dispatcher->hasListeners('onEvent')) { + $dispatcher->dispatch('onEvent'); + } + } + + public function testGetListenersOnLazyLoad() + { + $service = $this->getMock('Symfony\Component\EventDispatcher\Tests\Service'); + + $container = new Container(); + $container->set('service.listener', $service); + + $dispatcher = new ContainerAwareEventDispatcher($container); + $dispatcher->addListenerService('onEvent', array('service.listener', 'onEvent')); + + $listeners = $dispatcher->getListeners(); + + $this->assertTrue(isset($listeners['onEvent'])); + + $this->assertCount(1, $dispatcher->getListeners('onEvent')); + } + + public function testRemoveAfterDispatch() + { + $service = $this->getMock('Symfony\Component\EventDispatcher\Tests\Service'); + + $container = new Container(); + $container->set('service.listener', $service); + + $dispatcher = new ContainerAwareEventDispatcher($container); + $dispatcher->addListenerService('onEvent', array('service.listener', 'onEvent')); + + $dispatcher->dispatch('onEvent', new Event()); + $dispatcher->removeListener('onEvent', array($container->get('service.listener'), 'onEvent')); + $this->assertFalse($dispatcher->hasListeners('onEvent')); + } + + public function testRemoveBeforeDispatch() + { + $service = $this->getMock('Symfony\Component\EventDispatcher\Tests\Service'); + + $container = new Container(); + $container->set('service.listener', $service); + + $dispatcher = new ContainerAwareEventDispatcher($container); + $dispatcher->addListenerService('onEvent', array('service.listener', 'onEvent')); + + $dispatcher->removeListener('onEvent', array($container->get('service.listener'), 'onEvent')); + $this->assertFalse($dispatcher->hasListeners('onEvent')); + } +} + +class Service +{ + public function onEvent(Event $e) + { + } +} + +class SubscriberService implements EventSubscriberInterface +{ + public static function getSubscribedEvents() + { + return array( + 'onEvent' => 'onEvent', + 'onEventWithPriority' => array('onEventWithPriority', 10), + 'onEventNested' => array(array('onEventNested')), + ); + } + + public function onEvent(Event $e) + { + } + + public function onEventWithPriority(Event $e) + { + } + + public function onEventNested(Event $e) + { + } +} diff --git a/plugins/updraftplus/vendor/symfony/event-dispatcher/Tests/Debug/TraceableEventDispatcherTest.php b/plugins/updraftplus/vendor/symfony/event-dispatcher/Tests/Debug/TraceableEventDispatcherTest.php new file mode 100644 index 0000000..2dd8292 --- /dev/null +++ b/plugins/updraftplus/vendor/symfony/event-dispatcher/Tests/Debug/TraceableEventDispatcherTest.php @@ -0,0 +1,216 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\EventDispatcher\Tests\Debug; + +use Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Symfony\Component\EventDispatcher\EventDispatcher; +use Symfony\Component\EventDispatcher\Event; +use Symfony\Component\Stopwatch\Stopwatch; + +class TraceableEventDispatcherTest extends \PHPUnit_Framework_TestCase +{ + public function testAddRemoveListener() + { + $dispatcher = new EventDispatcher(); + $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch()); + + $tdispatcher->addListener('foo', $listener = function () {}); + $listeners = $dispatcher->getListeners('foo'); + $this->assertCount(1, $listeners); + $this->assertSame($listener, $listeners[0]); + + $tdispatcher->removeListener('foo', $listener); + $this->assertCount(0, $dispatcher->getListeners('foo')); + } + + public function testGetListeners() + { + $dispatcher = new EventDispatcher(); + $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch()); + + $tdispatcher->addListener('foo', $listener = function () {}); + $this->assertSame($dispatcher->getListeners('foo'), $tdispatcher->getListeners('foo')); + } + + public function testHasListeners() + { + $dispatcher = new EventDispatcher(); + $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch()); + + $this->assertFalse($dispatcher->hasListeners('foo')); + $this->assertFalse($tdispatcher->hasListeners('foo')); + + $tdispatcher->addListener('foo', $listener = function () {}); + $this->assertTrue($dispatcher->hasListeners('foo')); + $this->assertTrue($tdispatcher->hasListeners('foo')); + } + + public function testGetListenerPriority() + { + $dispatcher = new EventDispatcher(); + $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch()); + + $tdispatcher->addListener('foo', function () {}, 123); + + $listeners = $dispatcher->getListeners('foo'); + $this->assertSame(123, $tdispatcher->getListenerPriority('foo', $listeners[0])); + + // Verify that priority is preserved when listener is removed and re-added + // in preProcess() and postProcess(). + $tdispatcher->dispatch('foo', new Event()); + $listeners = $dispatcher->getListeners('foo'); + $this->assertSame(123, $tdispatcher->getListenerPriority('foo', $listeners[0])); + } + + public function testAddRemoveSubscriber() + { + $dispatcher = new EventDispatcher(); + $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch()); + + $subscriber = new EventSubscriber(); + + $tdispatcher->addSubscriber($subscriber); + $listeners = $dispatcher->getListeners('foo'); + $this->assertCount(1, $listeners); + $this->assertSame(array($subscriber, 'call'), $listeners[0]); + + $tdispatcher->removeSubscriber($subscriber); + $this->assertCount(0, $dispatcher->getListeners('foo')); + } + + public function testGetCalledListeners() + { + $dispatcher = new EventDispatcher(); + $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch()); + $tdispatcher->addListener('foo', $listener = function () {}); + + $this->assertEquals(array(), $tdispatcher->getCalledListeners()); + $this->assertEquals(array('foo.closure' => array('event' => 'foo', 'type' => 'Closure', 'pretty' => 'closure', 'priority' => 0)), $tdispatcher->getNotCalledListeners()); + + $tdispatcher->dispatch('foo'); + + $this->assertEquals(array('foo.closure' => array('event' => 'foo', 'type' => 'Closure', 'pretty' => 'closure', 'priority' => null)), $tdispatcher->getCalledListeners()); + $this->assertEquals(array(), $tdispatcher->getNotCalledListeners()); + } + + public function testGetCalledListenersNested() + { + $tdispatcher = null; + $dispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch()); + $dispatcher->addListener('foo', function (Event $event, $eventName, $dispatcher) use (&$tdispatcher) { + $tdispatcher = $dispatcher; + $dispatcher->dispatch('bar'); + }); + $dispatcher->addListener('bar', function (Event $event) {}); + $dispatcher->dispatch('foo'); + $this->assertSame($dispatcher, $tdispatcher); + $this->assertCount(2, $dispatcher->getCalledListeners()); + } + + public function testLogger() + { + $logger = $this->getMock('Psr\Log\LoggerInterface'); + + $dispatcher = new EventDispatcher(); + $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch(), $logger); + $tdispatcher->addListener('foo', $listener1 = function () {}); + $tdispatcher->addListener('foo', $listener2 = function () {}); + + $logger->expects($this->at(0))->method('debug')->with('Notified event "foo" to listener "closure".'); + $logger->expects($this->at(1))->method('debug')->with('Notified event "foo" to listener "closure".'); + + $tdispatcher->dispatch('foo'); + } + + public function testLoggerWithStoppedEvent() + { + $logger = $this->getMock('Psr\Log\LoggerInterface'); + + $dispatcher = new EventDispatcher(); + $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch(), $logger); + $tdispatcher->addListener('foo', $listener1 = function (Event $event) { $event->stopPropagation(); }); + $tdispatcher->addListener('foo', $listener2 = function () {}); + + $logger->expects($this->at(0))->method('debug')->with('Notified event "foo" to listener "closure".'); + $logger->expects($this->at(1))->method('debug')->with('Listener "closure" stopped propagation of the event "foo".'); + $logger->expects($this->at(2))->method('debug')->with('Listener "closure" was not called for event "foo".'); + + $tdispatcher->dispatch('foo'); + } + + public function testDispatchCallListeners() + { + $called = array(); + + $dispatcher = new EventDispatcher(); + $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch()); + $tdispatcher->addListener('foo', function () use (&$called) { $called[] = 'foo1'; }, 10); + $tdispatcher->addListener('foo', function () use (&$called) { $called[] = 'foo2'; }, 20); + + $tdispatcher->dispatch('foo'); + + $this->assertSame(array('foo2', 'foo1'), $called); + } + + public function testDispatchNested() + { + $dispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch()); + $loop = 1; + $dispatcher->addListener('foo', $listener1 = function () use ($dispatcher, &$loop) { + ++$loop; + if (2 == $loop) { + $dispatcher->dispatch('foo'); + } + }); + + $dispatcher->dispatch('foo'); + } + + public function testDispatchReusedEventNested() + { + $nestedCall = false; + $dispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch()); + $dispatcher->addListener('foo', function (Event $e) use ($dispatcher) { + $dispatcher->dispatch('bar', $e); + }); + $dispatcher->addListener('bar', function (Event $e) use (&$nestedCall) { + $nestedCall = true; + }); + + $this->assertFalse($nestedCall); + $dispatcher->dispatch('foo'); + $this->assertTrue($nestedCall); + } + + public function testListenerCanRemoveItselfWhenExecuted() + { + $eventDispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch()); + $listener1 = function ($event, $eventName, EventDispatcherInterface $dispatcher) use (&$listener1) { + $dispatcher->removeListener('foo', $listener1); + }; + $eventDispatcher->addListener('foo', $listener1); + $eventDispatcher->addListener('foo', function () {}); + $eventDispatcher->dispatch('foo'); + + $this->assertCount(1, $eventDispatcher->getListeners('foo'), 'expected listener1 to be removed'); + } +} + +class EventSubscriber implements EventSubscriberInterface +{ + public static function getSubscribedEvents() + { + return array('foo' => 'call'); + } +} diff --git a/plugins/updraftplus/vendor/symfony/event-dispatcher/Tests/DependencyInjection/RegisterListenersPassTest.php b/plugins/updraftplus/vendor/symfony/event-dispatcher/Tests/DependencyInjection/RegisterListenersPassTest.php new file mode 100644 index 0000000..0fdd637 --- /dev/null +++ b/plugins/updraftplus/vendor/symfony/event-dispatcher/Tests/DependencyInjection/RegisterListenersPassTest.php @@ -0,0 +1,200 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\EventDispatcher\Tests\DependencyInjection; + +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\EventDispatcher\DependencyInjection\RegisterListenersPass; + +class RegisterListenersPassTest extends \PHPUnit_Framework_TestCase +{ + /** + * Tests that event subscribers not implementing EventSubscriberInterface + * trigger an exception. + * + * @expectedException \InvalidArgumentException + */ + public function testEventSubscriberWithoutInterface() + { + // one service, not implementing any interface + $services = array( + 'my_event_subscriber' => array(0 => array()), + ); + + $definition = $this->getMock('Symfony\Component\DependencyInjection\Definition'); + $definition->expects($this->atLeastOnce()) + ->method('isPublic') + ->will($this->returnValue(true)); + $definition->expects($this->atLeastOnce()) + ->method('getClass') + ->will($this->returnValue('stdClass')); + + $builder = $this->getMock( + 'Symfony\Component\DependencyInjection\ContainerBuilder', + array('hasDefinition', 'findTaggedServiceIds', 'getDefinition') + ); + $builder->expects($this->any()) + ->method('hasDefinition') + ->will($this->returnValue(true)); + + // We don't test kernel.event_listener here + $builder->expects($this->atLeastOnce()) + ->method('findTaggedServiceIds') + ->will($this->onConsecutiveCalls(array(), $services)); + + $builder->expects($this->atLeastOnce()) + ->method('getDefinition') + ->will($this->returnValue($definition)); + + $registerListenersPass = new RegisterListenersPass(); + $registerListenersPass->process($builder); + } + + public function testValidEventSubscriber() + { + $services = array( + 'my_event_subscriber' => array(0 => array()), + ); + + $definition = $this->getMock('Symfony\Component\DependencyInjection\Definition'); + $definition->expects($this->atLeastOnce()) + ->method('isPublic') + ->will($this->returnValue(true)); + $definition->expects($this->atLeastOnce()) + ->method('getClass') + ->will($this->returnValue('Symfony\Component\EventDispatcher\Tests\DependencyInjection\SubscriberService')); + + $builder = $this->getMock( + 'Symfony\Component\DependencyInjection\ContainerBuilder', + array('hasDefinition', 'findTaggedServiceIds', 'getDefinition', 'findDefinition') + ); + $builder->expects($this->any()) + ->method('hasDefinition') + ->will($this->returnValue(true)); + + // We don't test kernel.event_listener here + $builder->expects($this->atLeastOnce()) + ->method('findTaggedServiceIds') + ->will($this->onConsecutiveCalls(array(), $services)); + + $builder->expects($this->atLeastOnce()) + ->method('getDefinition') + ->will($this->returnValue($definition)); + + $builder->expects($this->atLeastOnce()) + ->method('findDefinition') + ->will($this->returnValue($definition)); + + $registerListenersPass = new RegisterListenersPass(); + $registerListenersPass->process($builder); + } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage The service "foo" must be public as event listeners are lazy-loaded. + */ + public function testPrivateEventListener() + { + $container = new ContainerBuilder(); + $container->register('foo', 'stdClass')->setPublic(false)->addTag('kernel.event_listener', array()); + $container->register('event_dispatcher', 'stdClass'); + + $registerListenersPass = new RegisterListenersPass(); + $registerListenersPass->process($container); + } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage The service "foo" must be public as event subscribers are lazy-loaded. + */ + public function testPrivateEventSubscriber() + { + $container = new ContainerBuilder(); + $container->register('foo', 'stdClass')->setPublic(false)->addTag('kernel.event_subscriber', array()); + $container->register('event_dispatcher', 'stdClass'); + + $registerListenersPass = new RegisterListenersPass(); + $registerListenersPass->process($container); + } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage The service "foo" must not be abstract as event listeners are lazy-loaded. + */ + public function testAbstractEventListener() + { + $container = new ContainerBuilder(); + $container->register('foo', 'stdClass')->setAbstract(true)->addTag('kernel.event_listener', array()); + $container->register('event_dispatcher', 'stdClass'); + + $registerListenersPass = new RegisterListenersPass(); + $registerListenersPass->process($container); + } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage The service "foo" must not be abstract as event subscribers are lazy-loaded. + */ + public function testAbstractEventSubscriber() + { + $container = new ContainerBuilder(); + $container->register('foo', 'stdClass')->setAbstract(true)->addTag('kernel.event_subscriber', array()); + $container->register('event_dispatcher', 'stdClass'); + + $registerListenersPass = new RegisterListenersPass(); + $registerListenersPass->process($container); + } + + public function testEventSubscriberResolvableClassName() + { + $container = new ContainerBuilder(); + + $container->setParameter('subscriber.class', 'Symfony\Component\EventDispatcher\Tests\DependencyInjection\SubscriberService'); + $container->register('foo', '%subscriber.class%')->addTag('kernel.event_subscriber', array()); + $container->register('event_dispatcher', 'stdClass'); + + $registerListenersPass = new RegisterListenersPass(); + $registerListenersPass->process($container); + + $definition = $container->getDefinition('event_dispatcher'); + $expected_calls = array( + array( + 'addSubscriberService', + array( + 'foo', + 'Symfony\Component\EventDispatcher\Tests\DependencyInjection\SubscriberService', + ), + ), + ); + $this->assertSame($expected_calls, $definition->getMethodCalls()); + } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage You have requested a non-existent parameter "subscriber.class" + */ + public function testEventSubscriberUnresolvableClassName() + { + $container = new ContainerBuilder(); + $container->register('foo', '%subscriber.class%')->addTag('kernel.event_subscriber', array()); + $container->register('event_dispatcher', 'stdClass'); + + $registerListenersPass = new RegisterListenersPass(); + $registerListenersPass->process($container); + } +} + +class SubscriberService implements \Symfony\Component\EventDispatcher\EventSubscriberInterface +{ + public static function getSubscribedEvents() + { + } +} diff --git a/plugins/updraftplus/vendor/symfony/event-dispatcher/Tests/EventDispatcherTest.php b/plugins/updraftplus/vendor/symfony/event-dispatcher/Tests/EventDispatcherTest.php new file mode 100644 index 0000000..5faa5c8 --- /dev/null +++ b/plugins/updraftplus/vendor/symfony/event-dispatcher/Tests/EventDispatcherTest.php @@ -0,0 +1,22 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\EventDispatcher\Tests; + +use Symfony\Component\EventDispatcher\EventDispatcher; + +class EventDispatcherTest extends AbstractEventDispatcherTest +{ + protected function createEventDispatcher() + { + return new EventDispatcher(); + } +} diff --git a/plugins/updraftplus/vendor/symfony/event-dispatcher/Tests/EventTest.php b/plugins/updraftplus/vendor/symfony/event-dispatcher/Tests/EventTest.php new file mode 100644 index 0000000..9a82267 --- /dev/null +++ b/plugins/updraftplus/vendor/symfony/event-dispatcher/Tests/EventTest.php @@ -0,0 +1,96 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\EventDispatcher\Tests; + +use Symfony\Component\EventDispatcher\Event; +use Symfony\Component\EventDispatcher\EventDispatcher; + +/** + * Test class for Event. + */ +class EventTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var \Symfony\Component\EventDispatcher\Event + */ + protected $event; + + /** + * @var \Symfony\Component\EventDispatcher\EventDispatcher + */ + protected $dispatcher; + + /** + * Sets up the fixture, for example, opens a network connection. + * This method is called before a test is executed. + */ + protected function setUp() + { + $this->event = new Event(); + $this->dispatcher = new EventDispatcher(); + } + + /** + * Tears down the fixture, for example, closes a network connection. + * This method is called after a test is executed. + */ + protected function tearDown() + { + $this->event = null; + $this->dispatcher = null; + } + + public function testIsPropagationStopped() + { + $this->assertFalse($this->event->isPropagationStopped()); + } + + public function testStopPropagationAndIsPropagationStopped() + { + $this->event->stopPropagation(); + $this->assertTrue($this->event->isPropagationStopped()); + } + + /** + * @group legacy + */ + public function testLegacySetDispatcher() + { + $this->event->setDispatcher($this->dispatcher); + $this->assertSame($this->dispatcher, $this->event->getDispatcher()); + } + + /** + * @group legacy + */ + public function testLegacyGetDispatcher() + { + $this->assertNull($this->event->getDispatcher()); + } + + /** + * @group legacy + */ + public function testLegacyGetName() + { + $this->assertNull($this->event->getName()); + } + + /** + * @group legacy + */ + public function testLegacySetName() + { + $this->event->setName('foo'); + $this->assertEquals('foo', $this->event->getName()); + } +} diff --git a/plugins/updraftplus/vendor/symfony/event-dispatcher/Tests/GenericEventTest.php b/plugins/updraftplus/vendor/symfony/event-dispatcher/Tests/GenericEventTest.php new file mode 100644 index 0000000..aebd82d --- /dev/null +++ b/plugins/updraftplus/vendor/symfony/event-dispatcher/Tests/GenericEventTest.php @@ -0,0 +1,139 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\EventDispatcher\Tests; + +use Symfony\Component\EventDispatcher\GenericEvent; + +/** + * Test class for Event. + */ +class GenericEventTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var GenericEvent + */ + private $event; + + private $subject; + + /** + * Prepares the environment before running a test. + */ + protected function setUp() + { + parent::setUp(); + + $this->subject = new \stdClass(); + $this->event = new GenericEvent($this->subject, array('name' => 'Event')); + } + + /** + * Cleans up the environment after running a test. + */ + protected function tearDown() + { + $this->subject = null; + $this->event = null; + + parent::tearDown(); + } + + public function testConstruct() + { + $this->assertEquals($this->event, new GenericEvent($this->subject, array('name' => 'Event'))); + } + + /** + * Tests Event->getArgs(). + */ + public function testGetArguments() + { + // test getting all + $this->assertSame(array('name' => 'Event'), $this->event->getArguments()); + } + + public function testSetArguments() + { + $result = $this->event->setArguments(array('foo' => 'bar')); + $this->assertAttributeSame(array('foo' => 'bar'), 'arguments', $this->event); + $this->assertSame($this->event, $result); + } + + public function testSetArgument() + { + $result = $this->event->setArgument('foo2', 'bar2'); + $this->assertAttributeSame(array('name' => 'Event', 'foo2' => 'bar2'), 'arguments', $this->event); + $this->assertEquals($this->event, $result); + } + + public function testGetArgument() + { + // test getting key + $this->assertEquals('Event', $this->event->getArgument('name')); + } + + /** + * @expectedException \InvalidArgumentException + */ + public function testGetArgException() + { + $this->event->getArgument('nameNotExist'); + } + + public function testOffsetGet() + { + // test getting key + $this->assertEquals('Event', $this->event['name']); + + // test getting invalid arg + $this->setExpectedException('InvalidArgumentException'); + $this->assertFalse($this->event['nameNotExist']); + } + + public function testOffsetSet() + { + $this->event['foo2'] = 'bar2'; + $this->assertAttributeSame(array('name' => 'Event', 'foo2' => 'bar2'), 'arguments', $this->event); + } + + public function testOffsetUnset() + { + unset($this->event['name']); + $this->assertAttributeSame(array(), 'arguments', $this->event); + } + + public function testOffsetIsset() + { + $this->assertTrue(isset($this->event['name'])); + $this->assertFalse(isset($this->event['nameNotExist'])); + } + + public function testHasArgument() + { + $this->assertTrue($this->event->hasArgument('name')); + $this->assertFalse($this->event->hasArgument('nameNotExist')); + } + + public function testGetSubject() + { + $this->assertSame($this->subject, $this->event->getSubject()); + } + + public function testHasIterator() + { + $data = array(); + foreach ($this->event as $key => $value) { + $data[$key] = $value; + } + $this->assertEquals(array('name' => 'Event'), $data); + } +} diff --git a/plugins/updraftplus/vendor/symfony/event-dispatcher/Tests/ImmutableEventDispatcherTest.php b/plugins/updraftplus/vendor/symfony/event-dispatcher/Tests/ImmutableEventDispatcherTest.php new file mode 100644 index 0000000..80a7e43 --- /dev/null +++ b/plugins/updraftplus/vendor/symfony/event-dispatcher/Tests/ImmutableEventDispatcherTest.php @@ -0,0 +1,105 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\EventDispatcher\Tests; + +use Symfony\Component\EventDispatcher\Event; +use Symfony\Component\EventDispatcher\ImmutableEventDispatcher; + +/** + * @author Bernhard Schussek + */ +class ImmutableEventDispatcherTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + private $innerDispatcher; + + /** + * @var ImmutableEventDispatcher + */ + private $dispatcher; + + protected function setUp() + { + $this->innerDispatcher = $this->getMock('Symfony\Component\EventDispatcher\EventDispatcherInterface'); + $this->dispatcher = new ImmutableEventDispatcher($this->innerDispatcher); + } + + public function testDispatchDelegates() + { + $event = new Event(); + + $this->innerDispatcher->expects($this->once()) + ->method('dispatch') + ->with('event', $event) + ->will($this->returnValue('result')); + + $this->assertSame('result', $this->dispatcher->dispatch('event', $event)); + } + + public function testGetListenersDelegates() + { + $this->innerDispatcher->expects($this->once()) + ->method('getListeners') + ->with('event') + ->will($this->returnValue('result')); + + $this->assertSame('result', $this->dispatcher->getListeners('event')); + } + + public function testHasListenersDelegates() + { + $this->innerDispatcher->expects($this->once()) + ->method('hasListeners') + ->with('event') + ->will($this->returnValue('result')); + + $this->assertSame('result', $this->dispatcher->hasListeners('event')); + } + + /** + * @expectedException \BadMethodCallException + */ + public function testAddListenerDisallowed() + { + $this->dispatcher->addListener('event', function () { return 'foo'; }); + } + + /** + * @expectedException \BadMethodCallException + */ + public function testAddSubscriberDisallowed() + { + $subscriber = $this->getMock('Symfony\Component\EventDispatcher\EventSubscriberInterface'); + + $this->dispatcher->addSubscriber($subscriber); + } + + /** + * @expectedException \BadMethodCallException + */ + public function testRemoveListenerDisallowed() + { + $this->dispatcher->removeListener('event', function () { return 'foo'; }); + } + + /** + * @expectedException \BadMethodCallException + */ + public function testRemoveSubscriberDisallowed() + { + $subscriber = $this->getMock('Symfony\Component\EventDispatcher\EventSubscriberInterface'); + + $this->dispatcher->removeSubscriber($subscriber); + } +} diff --git a/plugins/updraftplus/vendor/symfony/event-dispatcher/composer.json b/plugins/updraftplus/vendor/symfony/event-dispatcher/composer.json new file mode 100644 index 0000000..282b770 --- /dev/null +++ b/plugins/updraftplus/vendor/symfony/event-dispatcher/composer.json @@ -0,0 +1,44 @@ +{ + "name": "symfony/event-dispatcher", + "type": "library", + "description": "Symfony EventDispatcher Component", + "keywords": [], + "homepage": "https://symfony.com", + "license": "MIT", + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "symfony/dependency-injection": "~2.6|~3.0.0", + "symfony/expression-language": "~2.6|~3.0.0", + "symfony/config": "~2.0,>=2.0.5|~3.0.0", + "symfony/stopwatch": "~2.3|~3.0.0", + "psr/log": "~1.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "autoload": { + "psr-4": { "Symfony\\Component\\EventDispatcher\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "minimum-stability": "dev", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + } +} diff --git a/plugins/updraftplus/vendor/symfony/event-dispatcher/phpunit.xml.dist b/plugins/updraftplus/vendor/symfony/event-dispatcher/phpunit.xml.dist new file mode 100644 index 0000000..ae0586e --- /dev/null +++ b/plugins/updraftplus/vendor/symfony/event-dispatcher/phpunit.xml.dist @@ -0,0 +1,29 @@ + + + + + + + + + + ./Tests/ + + + + + + ./ + + ./Resources + ./Tests + ./vendor + + + + diff --git a/plugins/wp-font-awesome/font-awesome/css/font-awesome.css b/plugins/wp-font-awesome/font-awesome/css/font-awesome.css new file mode 100644 index 0000000..ee906a8 --- /dev/null +++ b/plugins/wp-font-awesome/font-awesome/css/font-awesome.css @@ -0,0 +1,2337 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.7.0'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} +.fa { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-fw { + width: 1.28571429em; + text-align: center; +} +.fa-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.fa-ul > li { + position: relative; +} +.fa-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.85714286em; +} +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.fa-pull-left { + float: left; +} +.fa-pull-right { + float: right; +} +.fa.fa-pull-left { + margin-right: .3em; +} +.fa.fa-pull-right { + margin-left: .3em; +} +/* Deprecated as of 4.4.0 */ +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.fa.pull-left { + margin-right: .3em; +} +.fa.pull-right { + margin-left: .3em; +} +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + filter: none; +} +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-stack-1x, +.fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-stack-1x { + line-height: inherit; +} +.fa-stack-2x { + font-size: 2em; +} +.fa-inverse { + color: #ffffff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-glass:before { + content: "\f000"; +} +.fa-music:before { + content: "\f001"; +} +.fa-search:before { + content: "\f002"; +} +.fa-envelope-o:before { + content: "\f003"; +} +.fa-heart:before { + content: "\f004"; +} +.fa-star:before { + content: "\f005"; +} +.fa-star-o:before { + content: "\f006"; +} +.fa-user:before { + content: "\f007"; +} +.fa-film:before { + content: "\f008"; +} +.fa-th-large:before { + content: "\f009"; +} +.fa-th:before { + content: "\f00a"; +} +.fa-th-list:before { + content: "\f00b"; +} +.fa-check:before { + content: "\f00c"; +} +.fa-remove:before, +.fa-close:before, +.fa-times:before { + content: "\f00d"; +} +.fa-search-plus:before { + content: "\f00e"; +} +.fa-search-minus:before { + content: "\f010"; +} +.fa-power-off:before { + content: "\f011"; +} +.fa-signal:before { + content: "\f012"; +} +.fa-gear:before, +.fa-cog:before { + content: "\f013"; +} +.fa-trash-o:before { + content: "\f014"; +} +.fa-home:before { + content: "\f015"; +} +.fa-file-o:before { + content: "\f016"; +} +.fa-clock-o:before { + content: "\f017"; +} +.fa-road:before { + content: "\f018"; +} +.fa-download:before { + content: "\f019"; +} +.fa-arrow-circle-o-down:before { + content: "\f01a"; +} +.fa-arrow-circle-o-up:before { + content: "\f01b"; +} +.fa-inbox:before { + content: "\f01c"; +} +.fa-play-circle-o:before { + content: "\f01d"; +} +.fa-rotate-right:before, +.fa-repeat:before { + content: "\f01e"; +} +.fa-refresh:before { + content: "\f021"; +} +.fa-list-alt:before { + content: "\f022"; +} +.fa-lock:before { + content: "\f023"; +} +.fa-flag:before { + content: "\f024"; +} +.fa-headphones:before { + content: "\f025"; +} +.fa-volume-off:before { + content: "\f026"; +} +.fa-volume-down:before { + content: "\f027"; +} +.fa-volume-up:before { + content: "\f028"; +} +.fa-qrcode:before { + content: "\f029"; +} +.fa-barcode:before { + content: "\f02a"; +} +.fa-tag:before { + content: "\f02b"; +} +.fa-tags:before { + content: "\f02c"; +} +.fa-book:before { + content: "\f02d"; +} +.fa-bookmark:before { + content: "\f02e"; +} +.fa-print:before { + content: "\f02f"; +} +.fa-camera:before { + content: "\f030"; +} +.fa-font:before { + content: "\f031"; +} +.fa-bold:before { + content: "\f032"; +} +.fa-italic:before { + content: "\f033"; +} +.fa-text-height:before { + content: "\f034"; +} +.fa-text-width:before { + content: "\f035"; +} +.fa-align-left:before { + content: "\f036"; +} +.fa-align-center:before { + content: "\f037"; +} +.fa-align-right:before { + content: "\f038"; +} +.fa-align-justify:before { + content: "\f039"; +} +.fa-list:before { + content: "\f03a"; +} +.fa-dedent:before, +.fa-outdent:before { + content: "\f03b"; +} +.fa-indent:before { + content: "\f03c"; +} +.fa-video-camera:before { + content: "\f03d"; +} +.fa-photo:before, +.fa-image:before, +.fa-picture-o:before { + content: "\f03e"; +} +.fa-pencil:before { + content: "\f040"; +} +.fa-map-marker:before { + content: "\f041"; +} +.fa-adjust:before { + content: "\f042"; +} +.fa-tint:before { + content: "\f043"; +} +.fa-edit:before, +.fa-pencil-square-o:before { + content: "\f044"; +} +.fa-share-square-o:before { + content: "\f045"; +} +.fa-check-square-o:before { + content: "\f046"; +} +.fa-arrows:before { + content: "\f047"; +} +.fa-step-backward:before { + content: "\f048"; +} +.fa-fast-backward:before { + content: "\f049"; +} +.fa-backward:before { + content: "\f04a"; +} +.fa-play:before { + content: "\f04b"; +} +.fa-pause:before { + content: "\f04c"; +} +.fa-stop:before { + content: "\f04d"; +} +.fa-forward:before { + content: "\f04e"; +} +.fa-fast-forward:before { + content: "\f050"; +} +.fa-step-forward:before { + content: "\f051"; +} +.fa-eject:before { + content: "\f052"; +} +.fa-chevron-left:before { + content: "\f053"; +} +.fa-chevron-right:before { + content: "\f054"; +} +.fa-plus-circle:before { + content: "\f055"; +} +.fa-minus-circle:before { + content: "\f056"; +} +.fa-times-circle:before { + content: "\f057"; +} +.fa-check-circle:before { + content: "\f058"; +} +.fa-question-circle:before { + content: "\f059"; +} +.fa-info-circle:before { + content: "\f05a"; +} +.fa-crosshairs:before { + content: "\f05b"; +} +.fa-times-circle-o:before { + content: "\f05c"; +} +.fa-check-circle-o:before { + content: "\f05d"; +} +.fa-ban:before { + content: "\f05e"; +} +.fa-arrow-left:before { + content: "\f060"; +} +.fa-arrow-right:before { + content: "\f061"; +} +.fa-arrow-up:before { + content: "\f062"; +} +.fa-arrow-down:before { + content: "\f063"; +} +.fa-mail-forward:before, +.fa-share:before { + content: "\f064"; +} +.fa-expand:before { + content: "\f065"; +} +.fa-compress:before { + content: "\f066"; +} +.fa-plus:before { + content: "\f067"; +} +.fa-minus:before { + content: "\f068"; +} +.fa-asterisk:before { + content: "\f069"; +} +.fa-exclamation-circle:before { + content: "\f06a"; +} +.fa-gift:before { + content: "\f06b"; +} +.fa-leaf:before { + content: "\f06c"; +} +.fa-fire:before { + content: "\f06d"; +} +.fa-eye:before { + content: "\f06e"; +} +.fa-eye-slash:before { + content: "\f070"; +} +.fa-warning:before, +.fa-exclamation-triangle:before { + content: "\f071"; +} +.fa-plane:before { + content: "\f072"; +} +.fa-calendar:before { + content: "\f073"; +} +.fa-random:before { + content: "\f074"; +} +.fa-comment:before { + content: "\f075"; +} +.fa-magnet:before { + content: "\f076"; +} +.fa-chevron-up:before { + content: "\f077"; +} +.fa-chevron-down:before { + content: "\f078"; +} +.fa-retweet:before { + content: "\f079"; +} +.fa-shopping-cart:before { + content: "\f07a"; +} +.fa-folder:before { + content: "\f07b"; +} +.fa-folder-open:before { + content: "\f07c"; +} +.fa-arrows-v:before { + content: "\f07d"; +} +.fa-arrows-h:before { + content: "\f07e"; +} +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: "\f080"; +} +.fa-twitter-square:before { + content: "\f081"; +} +.fa-facebook-square:before { + content: "\f082"; +} +.fa-camera-retro:before { + content: "\f083"; +} +.fa-key:before { + content: "\f084"; +} +.fa-gears:before, +.fa-cogs:before { + content: "\f085"; +} +.fa-comments:before { + content: "\f086"; +} +.fa-thumbs-o-up:before { + content: "\f087"; +} +.fa-thumbs-o-down:before { + content: "\f088"; +} +.fa-star-half:before { + content: "\f089"; +} +.fa-heart-o:before { + content: "\f08a"; +} +.fa-sign-out:before { + content: "\f08b"; +} +.fa-linkedin-square:before { + content: "\f08c"; +} +.fa-thumb-tack:before { + content: "\f08d"; +} +.fa-external-link:before { + content: "\f08e"; +} +.fa-sign-in:before { + content: "\f090"; +} +.fa-trophy:before { + content: "\f091"; +} +.fa-github-square:before { + content: "\f092"; +} +.fa-upload:before { + content: "\f093"; +} +.fa-lemon-o:before { + content: "\f094"; +} +.fa-phone:before { + content: "\f095"; +} +.fa-square-o:before { + content: "\f096"; +} +.fa-bookmark-o:before { + content: "\f097"; +} +.fa-phone-square:before { + content: "\f098"; +} +.fa-twitter:before { + content: "\f099"; +} +.fa-facebook-f:before, +.fa-facebook:before { + content: "\f09a"; +} +.fa-github:before { + content: "\f09b"; +} +.fa-unlock:before { + content: "\f09c"; +} +.fa-credit-card:before { + content: "\f09d"; +} +.fa-feed:before, +.fa-rss:before { + content: "\f09e"; +} +.fa-hdd-o:before { + content: "\f0a0"; +} +.fa-bullhorn:before { + content: "\f0a1"; +} +.fa-bell:before { + content: "\f0f3"; +} +.fa-certificate:before { + content: "\f0a3"; +} +.fa-hand-o-right:before { + content: "\f0a4"; +} +.fa-hand-o-left:before { + content: "\f0a5"; +} +.fa-hand-o-up:before { + content: "\f0a6"; +} +.fa-hand-o-down:before { + content: "\f0a7"; +} +.fa-arrow-circle-left:before { + content: "\f0a8"; +} +.fa-arrow-circle-right:before { + content: "\f0a9"; +} +.fa-arrow-circle-up:before { + content: "\f0aa"; +} +.fa-arrow-circle-down:before { + content: "\f0ab"; +} +.fa-globe:before { + content: "\f0ac"; +} +.fa-wrench:before { + content: "\f0ad"; +} +.fa-tasks:before { + content: "\f0ae"; +} +.fa-filter:before { + content: "\f0b0"; +} +.fa-briefcase:before { + content: "\f0b1"; +} +.fa-arrows-alt:before { + content: "\f0b2"; +} +.fa-group:before, +.fa-users:before { + content: "\f0c0"; +} +.fa-chain:before, +.fa-link:before { + content: "\f0c1"; +} +.fa-cloud:before { + content: "\f0c2"; +} +.fa-flask:before { + content: "\f0c3"; +} +.fa-cut:before, +.fa-scissors:before { + content: "\f0c4"; +} +.fa-copy:before, +.fa-files-o:before { + content: "\f0c5"; +} +.fa-paperclip:before { + content: "\f0c6"; +} +.fa-save:before, +.fa-floppy-o:before { + content: "\f0c7"; +} +.fa-square:before { + content: "\f0c8"; +} +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { + content: "\f0c9"; +} +.fa-list-ul:before { + content: "\f0ca"; +} +.fa-list-ol:before { + content: "\f0cb"; +} +.fa-strikethrough:before { + content: "\f0cc"; +} +.fa-underline:before { + content: "\f0cd"; +} +.fa-table:before { + content: "\f0ce"; +} +.fa-magic:before { + content: "\f0d0"; +} +.fa-truck:before { + content: "\f0d1"; +} +.fa-pinterest:before { + content: "\f0d2"; +} +.fa-pinterest-square:before { + content: "\f0d3"; +} +.fa-google-plus-square:before { + content: "\f0d4"; +} +.fa-google-plus:before { + content: "\f0d5"; +} +.fa-money:before { + content: "\f0d6"; +} +.fa-caret-down:before { + content: "\f0d7"; +} +.fa-caret-up:before { + content: "\f0d8"; +} +.fa-caret-left:before { + content: "\f0d9"; +} +.fa-caret-right:before { + content: "\f0da"; +} +.fa-columns:before { + content: "\f0db"; +} +.fa-unsorted:before, +.fa-sort:before { + content: "\f0dc"; +} +.fa-sort-down:before, +.fa-sort-desc:before { + content: "\f0dd"; +} +.fa-sort-up:before, +.fa-sort-asc:before { + content: "\f0de"; +} +.fa-envelope:before { + content: "\f0e0"; +} +.fa-linkedin:before { + content: "\f0e1"; +} +.fa-rotate-left:before, +.fa-undo:before { + content: "\f0e2"; +} +.fa-legal:before, +.fa-gavel:before { + content: "\f0e3"; +} +.fa-dashboard:before, +.fa-tachometer:before { + content: "\f0e4"; +} +.fa-comment-o:before { + content: "\f0e5"; +} +.fa-comments-o:before { + content: "\f0e6"; +} +.fa-flash:before, +.fa-bolt:before { + content: "\f0e7"; +} +.fa-sitemap:before { + content: "\f0e8"; +} +.fa-umbrella:before { + content: "\f0e9"; +} +.fa-paste:before, +.fa-clipboard:before { + content: "\f0ea"; +} +.fa-lightbulb-o:before { + content: "\f0eb"; +} +.fa-exchange:before { + content: "\f0ec"; +} +.fa-cloud-download:before { + content: "\f0ed"; +} +.fa-cloud-upload:before { + content: "\f0ee"; +} +.fa-user-md:before { + content: "\f0f0"; +} +.fa-stethoscope:before { + content: "\f0f1"; +} +.fa-suitcase:before { + content: "\f0f2"; +} +.fa-bell-o:before { + content: "\f0a2"; +} +.fa-coffee:before { + content: "\f0f4"; +} +.fa-cutlery:before { + content: "\f0f5"; +} +.fa-file-text-o:before { + content: "\f0f6"; +} +.fa-building-o:before { + content: "\f0f7"; +} +.fa-hospital-o:before { + content: "\f0f8"; +} +.fa-ambulance:before { + content: "\f0f9"; +} +.fa-medkit:before { + content: "\f0fa"; +} +.fa-fighter-jet:before { + content: "\f0fb"; +} +.fa-beer:before { + content: "\f0fc"; +} +.fa-h-square:before { + content: "\f0fd"; +} +.fa-plus-square:before { + content: "\f0fe"; +} +.fa-angle-double-left:before { + content: "\f100"; +} +.fa-angle-double-right:before { + content: "\f101"; +} +.fa-angle-double-up:before { + content: "\f102"; +} +.fa-angle-double-down:before { + content: "\f103"; +} +.fa-angle-left:before { + content: "\f104"; +} +.fa-angle-right:before { + content: "\f105"; +} +.fa-angle-up:before { + content: "\f106"; +} +.fa-angle-down:before { + content: "\f107"; +} +.fa-desktop:before { + content: "\f108"; +} +.fa-laptop:before { + content: "\f109"; +} +.fa-tablet:before { + content: "\f10a"; +} +.fa-mobile-phone:before, +.fa-mobile:before { + content: "\f10b"; +} +.fa-circle-o:before { + content: "\f10c"; +} +.fa-quote-left:before { + content: "\f10d"; +} +.fa-quote-right:before { + content: "\f10e"; +} +.fa-spinner:before { + content: "\f110"; +} +.fa-circle:before { + content: "\f111"; +} +.fa-mail-reply:before, +.fa-reply:before { + content: "\f112"; +} +.fa-github-alt:before { + content: "\f113"; +} +.fa-folder-o:before { + content: "\f114"; +} +.fa-folder-open-o:before { + content: "\f115"; +} +.fa-smile-o:before { + content: "\f118"; +} +.fa-frown-o:before { + content: "\f119"; +} +.fa-meh-o:before { + content: "\f11a"; +} +.fa-gamepad:before { + content: "\f11b"; +} +.fa-keyboard-o:before { + content: "\f11c"; +} +.fa-flag-o:before { + content: "\f11d"; +} +.fa-flag-checkered:before { + content: "\f11e"; +} +.fa-terminal:before { + content: "\f120"; +} +.fa-code:before { + content: "\f121"; +} +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: "\f122"; +} +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: "\f123"; +} +.fa-location-arrow:before { + content: "\f124"; +} +.fa-crop:before { + content: "\f125"; +} +.fa-code-fork:before { + content: "\f126"; +} +.fa-unlink:before, +.fa-chain-broken:before { + content: "\f127"; +} +.fa-question:before { + content: "\f128"; +} +.fa-info:before { + content: "\f129"; +} +.fa-exclamation:before { + content: "\f12a"; +} +.fa-superscript:before { + content: "\f12b"; +} +.fa-subscript:before { + content: "\f12c"; +} +.fa-eraser:before { + content: "\f12d"; +} +.fa-puzzle-piece:before { + content: "\f12e"; +} +.fa-microphone:before { + content: "\f130"; +} +.fa-microphone-slash:before { + content: "\f131"; +} +.fa-shield:before { + content: "\f132"; +} +.fa-calendar-o:before { + content: "\f133"; +} +.fa-fire-extinguisher:before { + content: "\f134"; +} +.fa-rocket:before { + content: "\f135"; +} +.fa-maxcdn:before { + content: "\f136"; +} +.fa-chevron-circle-left:before { + content: "\f137"; +} +.fa-chevron-circle-right:before { + content: "\f138"; +} +.fa-chevron-circle-up:before { + content: "\f139"; +} +.fa-chevron-circle-down:before { + content: "\f13a"; +} +.fa-html5:before { + content: "\f13b"; +} +.fa-css3:before { + content: "\f13c"; +} +.fa-anchor:before { + content: "\f13d"; +} +.fa-unlock-alt:before { + content: "\f13e"; +} +.fa-bullseye:before { + content: "\f140"; +} +.fa-ellipsis-h:before { + content: "\f141"; +} +.fa-ellipsis-v:before { + content: "\f142"; +} +.fa-rss-square:before { + content: "\f143"; +} +.fa-play-circle:before { + content: "\f144"; +} +.fa-ticket:before { + content: "\f145"; +} +.fa-minus-square:before { + content: "\f146"; +} +.fa-minus-square-o:before { + content: "\f147"; +} +.fa-level-up:before { + content: "\f148"; +} +.fa-level-down:before { + content: "\f149"; +} +.fa-check-square:before { + content: "\f14a"; +} +.fa-pencil-square:before { + content: "\f14b"; +} +.fa-external-link-square:before { + content: "\f14c"; +} +.fa-share-square:before { + content: "\f14d"; +} +.fa-compass:before { + content: "\f14e"; +} +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: "\f150"; +} +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: "\f151"; +} +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: "\f152"; +} +.fa-euro:before, +.fa-eur:before { + content: "\f153"; +} +.fa-gbp:before { + content: "\f154"; +} +.fa-dollar:before, +.fa-usd:before { + content: "\f155"; +} +.fa-rupee:before, +.fa-inr:before { + content: "\f156"; +} +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: "\f157"; +} +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: "\f158"; +} +.fa-won:before, +.fa-krw:before { + content: "\f159"; +} +.fa-bitcoin:before, +.fa-btc:before { + content: "\f15a"; +} +.fa-file:before { + content: "\f15b"; +} +.fa-file-text:before { + content: "\f15c"; +} +.fa-sort-alpha-asc:before { + content: "\f15d"; +} +.fa-sort-alpha-desc:before { + content: "\f15e"; +} +.fa-sort-amount-asc:before { + content: "\f160"; +} +.fa-sort-amount-desc:before { + content: "\f161"; +} +.fa-sort-numeric-asc:before { + content: "\f162"; +} +.fa-sort-numeric-desc:before { + content: "\f163"; +} +.fa-thumbs-up:before { + content: "\f164"; +} +.fa-thumbs-down:before { + content: "\f165"; +} +.fa-youtube-square:before { + content: "\f166"; +} +.fa-youtube:before { + content: "\f167"; +} +.fa-xing:before { + content: "\f168"; +} +.fa-xing-square:before { + content: "\f169"; +} +.fa-youtube-play:before { + content: "\f16a"; +} +.fa-dropbox:before { + content: "\f16b"; +} +.fa-stack-overflow:before { + content: "\f16c"; +} +.fa-instagram:before { + content: "\f16d"; +} +.fa-flickr:before { + content: "\f16e"; +} +.fa-adn:before { + content: "\f170"; +} +.fa-bitbucket:before { + content: "\f171"; +} +.fa-bitbucket-square:before { + content: "\f172"; +} +.fa-tumblr:before { + content: "\f173"; +} +.fa-tumblr-square:before { + content: "\f174"; +} +.fa-long-arrow-down:before { + content: "\f175"; +} +.fa-long-arrow-up:before { + content: "\f176"; +} +.fa-long-arrow-left:before { + content: "\f177"; +} +.fa-long-arrow-right:before { + content: "\f178"; +} +.fa-apple:before { + content: "\f179"; +} +.fa-windows:before { + content: "\f17a"; +} +.fa-android:before { + content: "\f17b"; +} +.fa-linux:before { + content: "\f17c"; +} +.fa-dribbble:before { + content: "\f17d"; +} +.fa-skype:before { + content: "\f17e"; +} +.fa-foursquare:before { + content: "\f180"; +} +.fa-trello:before { + content: "\f181"; +} +.fa-female:before { + content: "\f182"; +} +.fa-male:before { + content: "\f183"; +} +.fa-gittip:before, +.fa-gratipay:before { + content: "\f184"; +} +.fa-sun-o:before { + content: "\f185"; +} +.fa-moon-o:before { + content: "\f186"; +} +.fa-archive:before { + content: "\f187"; +} +.fa-bug:before { + content: "\f188"; +} +.fa-vk:before { + content: "\f189"; +} +.fa-weibo:before { + content: "\f18a"; +} +.fa-renren:before { + content: "\f18b"; +} +.fa-pagelines:before { + content: "\f18c"; +} +.fa-stack-exchange:before { + content: "\f18d"; +} +.fa-arrow-circle-o-right:before { + content: "\f18e"; +} +.fa-arrow-circle-o-left:before { + content: "\f190"; +} +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: "\f191"; +} +.fa-dot-circle-o:before { + content: "\f192"; +} +.fa-wheelchair:before { + content: "\f193"; +} +.fa-vimeo-square:before { + content: "\f194"; +} +.fa-turkish-lira:before, +.fa-try:before { + content: "\f195"; +} +.fa-plus-square-o:before { + content: "\f196"; +} +.fa-space-shuttle:before { + content: "\f197"; +} +.fa-slack:before { + content: "\f198"; +} +.fa-envelope-square:before { + content: "\f199"; +} +.fa-wordpress:before { + content: "\f19a"; +} +.fa-openid:before { + content: "\f19b"; +} +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: "\f19c"; +} +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: "\f19d"; +} +.fa-yahoo:before { + content: "\f19e"; +} +.fa-google:before { + content: "\f1a0"; +} +.fa-reddit:before { + content: "\f1a1"; +} +.fa-reddit-square:before { + content: "\f1a2"; +} +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-stumbleupon:before { + content: "\f1a4"; +} +.fa-delicious:before { + content: "\f1a5"; +} +.fa-digg:before { + content: "\f1a6"; +} +.fa-pied-piper-pp:before { + content: "\f1a7"; +} +.fa-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-drupal:before { + content: "\f1a9"; +} +.fa-joomla:before { + content: "\f1aa"; +} +.fa-language:before { + content: "\f1ab"; +} +.fa-fax:before { + content: "\f1ac"; +} +.fa-building:before { + content: "\f1ad"; +} +.fa-child:before { + content: "\f1ae"; +} +.fa-paw:before { + content: "\f1b0"; +} +.fa-spoon:before { + content: "\f1b1"; +} +.fa-cube:before { + content: "\f1b2"; +} +.fa-cubes:before { + content: "\f1b3"; +} +.fa-behance:before { + content: "\f1b4"; +} +.fa-behance-square:before { + content: "\f1b5"; +} +.fa-steam:before { + content: "\f1b6"; +} +.fa-steam-square:before { + content: "\f1b7"; +} +.fa-recycle:before { + content: "\f1b8"; +} +.fa-automobile:before, +.fa-car:before { + content: "\f1b9"; +} +.fa-cab:before, +.fa-taxi:before { + content: "\f1ba"; +} +.fa-tree:before { + content: "\f1bb"; +} +.fa-spotify:before { + content: "\f1bc"; +} +.fa-deviantart:before { + content: "\f1bd"; +} +.fa-soundcloud:before { + content: "\f1be"; +} +.fa-database:before { + content: "\f1c0"; +} +.fa-file-pdf-o:before { + content: "\f1c1"; +} +.fa-file-word-o:before { + content: "\f1c2"; +} +.fa-file-excel-o:before { + content: "\f1c3"; +} +.fa-file-powerpoint-o:before { + content: "\f1c4"; +} +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: "\f1c5"; +} +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: "\f1c6"; +} +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: "\f1c7"; +} +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: "\f1c8"; +} +.fa-file-code-o:before { + content: "\f1c9"; +} +.fa-vine:before { + content: "\f1ca"; +} +.fa-codepen:before { + content: "\f1cb"; +} +.fa-jsfiddle:before { + content: "\f1cc"; +} +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: "\f1cd"; +} +.fa-circle-o-notch:before { + content: "\f1ce"; +} +.fa-ra:before, +.fa-resistance:before, +.fa-rebel:before { + content: "\f1d0"; +} +.fa-ge:before, +.fa-empire:before { + content: "\f1d1"; +} +.fa-git-square:before { + content: "\f1d2"; +} +.fa-git:before { + content: "\f1d3"; +} +.fa-y-combinator-square:before, +.fa-yc-square:before, +.fa-hacker-news:before { + content: "\f1d4"; +} +.fa-tencent-weibo:before { + content: "\f1d5"; +} +.fa-qq:before { + content: "\f1d6"; +} +.fa-wechat:before, +.fa-weixin:before { + content: "\f1d7"; +} +.fa-send:before, +.fa-paper-plane:before { + content: "\f1d8"; +} +.fa-send-o:before, +.fa-paper-plane-o:before { + content: "\f1d9"; +} +.fa-history:before { + content: "\f1da"; +} +.fa-circle-thin:before { + content: "\f1db"; +} +.fa-header:before { + content: "\f1dc"; +} +.fa-paragraph:before { + content: "\f1dd"; +} +.fa-sliders:before { + content: "\f1de"; +} +.fa-share-alt:before { + content: "\f1e0"; +} +.fa-share-alt-square:before { + content: "\f1e1"; +} +.fa-bomb:before { + content: "\f1e2"; +} +.fa-soccer-ball-o:before, +.fa-futbol-o:before { + content: "\f1e3"; +} +.fa-tty:before { + content: "\f1e4"; +} +.fa-binoculars:before { + content: "\f1e5"; +} +.fa-plug:before { + content: "\f1e6"; +} +.fa-slideshare:before { + content: "\f1e7"; +} +.fa-twitch:before { + content: "\f1e8"; +} +.fa-yelp:before { + content: "\f1e9"; +} +.fa-newspaper-o:before { + content: "\f1ea"; +} +.fa-wifi:before { + content: "\f1eb"; +} +.fa-calculator:before { + content: "\f1ec"; +} +.fa-paypal:before { + content: "\f1ed"; +} +.fa-google-wallet:before { + content: "\f1ee"; +} +.fa-cc-visa:before { + content: "\f1f0"; +} +.fa-cc-mastercard:before { + content: "\f1f1"; +} +.fa-cc-discover:before { + content: "\f1f2"; +} +.fa-cc-amex:before { + content: "\f1f3"; +} +.fa-cc-paypal:before { + content: "\f1f4"; +} +.fa-cc-stripe:before { + content: "\f1f5"; +} +.fa-bell-slash:before { + content: "\f1f6"; +} +.fa-bell-slash-o:before { + content: "\f1f7"; +} +.fa-trash:before { + content: "\f1f8"; +} +.fa-copyright:before { + content: "\f1f9"; +} +.fa-at:before { + content: "\f1fa"; +} +.fa-eyedropper:before { + content: "\f1fb"; +} +.fa-paint-brush:before { + content: "\f1fc"; +} +.fa-birthday-cake:before { + content: "\f1fd"; +} +.fa-area-chart:before { + content: "\f1fe"; +} +.fa-pie-chart:before { + content: "\f200"; +} +.fa-line-chart:before { + content: "\f201"; +} +.fa-lastfm:before { + content: "\f202"; +} +.fa-lastfm-square:before { + content: "\f203"; +} +.fa-toggle-off:before { + content: "\f204"; +} +.fa-toggle-on:before { + content: "\f205"; +} +.fa-bicycle:before { + content: "\f206"; +} +.fa-bus:before { + content: "\f207"; +} +.fa-ioxhost:before { + content: "\f208"; +} +.fa-angellist:before { + content: "\f209"; +} +.fa-cc:before { + content: "\f20a"; +} +.fa-shekel:before, +.fa-sheqel:before, +.fa-ils:before { + content: "\f20b"; +} +.fa-meanpath:before { + content: "\f20c"; +} +.fa-buysellads:before { + content: "\f20d"; +} +.fa-connectdevelop:before { + content: "\f20e"; +} +.fa-dashcube:before { + content: "\f210"; +} +.fa-forumbee:before { + content: "\f211"; +} +.fa-leanpub:before { + content: "\f212"; +} +.fa-sellsy:before { + content: "\f213"; +} +.fa-shirtsinbulk:before { + content: "\f214"; +} +.fa-simplybuilt:before { + content: "\f215"; +} +.fa-skyatlas:before { + content: "\f216"; +} +.fa-cart-plus:before { + content: "\f217"; +} +.fa-cart-arrow-down:before { + content: "\f218"; +} +.fa-diamond:before { + content: "\f219"; +} +.fa-ship:before { + content: "\f21a"; +} +.fa-user-secret:before { + content: "\f21b"; +} +.fa-motorcycle:before { + content: "\f21c"; +} +.fa-street-view:before { + content: "\f21d"; +} +.fa-heartbeat:before { + content: "\f21e"; +} +.fa-venus:before { + content: "\f221"; +} +.fa-mars:before { + content: "\f222"; +} +.fa-mercury:before { + content: "\f223"; +} +.fa-intersex:before, +.fa-transgender:before { + content: "\f224"; +} +.fa-transgender-alt:before { + content: "\f225"; +} +.fa-venus-double:before { + content: "\f226"; +} +.fa-mars-double:before { + content: "\f227"; +} +.fa-venus-mars:before { + content: "\f228"; +} +.fa-mars-stroke:before { + content: "\f229"; +} +.fa-mars-stroke-v:before { + content: "\f22a"; +} +.fa-mars-stroke-h:before { + content: "\f22b"; +} +.fa-neuter:before { + content: "\f22c"; +} +.fa-genderless:before { + content: "\f22d"; +} +.fa-facebook-official:before { + content: "\f230"; +} +.fa-pinterest-p:before { + content: "\f231"; +} +.fa-whatsapp:before { + content: "\f232"; +} +.fa-server:before { + content: "\f233"; +} +.fa-user-plus:before { + content: "\f234"; +} +.fa-user-times:before { + content: "\f235"; +} +.fa-hotel:before, +.fa-bed:before { + content: "\f236"; +} +.fa-viacoin:before { + content: "\f237"; +} +.fa-train:before { + content: "\f238"; +} +.fa-subway:before { + content: "\f239"; +} +.fa-medium:before { + content: "\f23a"; +} +.fa-yc:before, +.fa-y-combinator:before { + content: "\f23b"; +} +.fa-optin-monster:before { + content: "\f23c"; +} +.fa-opencart:before { + content: "\f23d"; +} +.fa-expeditedssl:before { + content: "\f23e"; +} +.fa-battery-4:before, +.fa-battery:before, +.fa-battery-full:before { + content: "\f240"; +} +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: "\f241"; +} +.fa-battery-2:before, +.fa-battery-half:before { + content: "\f242"; +} +.fa-battery-1:before, +.fa-battery-quarter:before { + content: "\f243"; +} +.fa-battery-0:before, +.fa-battery-empty:before { + content: "\f244"; +} +.fa-mouse-pointer:before { + content: "\f245"; +} +.fa-i-cursor:before { + content: "\f246"; +} +.fa-object-group:before { + content: "\f247"; +} +.fa-object-ungroup:before { + content: "\f248"; +} +.fa-sticky-note:before { + content: "\f249"; +} +.fa-sticky-note-o:before { + content: "\f24a"; +} +.fa-cc-jcb:before { + content: "\f24b"; +} +.fa-cc-diners-club:before { + content: "\f24c"; +} +.fa-clone:before { + content: "\f24d"; +} +.fa-balance-scale:before { + content: "\f24e"; +} +.fa-hourglass-o:before { + content: "\f250"; +} +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: "\f251"; +} +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: "\f252"; +} +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: "\f253"; +} +.fa-hourglass:before { + content: "\f254"; +} +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: "\f255"; +} +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: "\f256"; +} +.fa-hand-scissors-o:before { + content: "\f257"; +} +.fa-hand-lizard-o:before { + content: "\f258"; +} +.fa-hand-spock-o:before { + content: "\f259"; +} +.fa-hand-pointer-o:before { + content: "\f25a"; +} +.fa-hand-peace-o:before { + content: "\f25b"; +} +.fa-trademark:before { + content: "\f25c"; +} +.fa-registered:before { + content: "\f25d"; +} +.fa-creative-commons:before { + content: "\f25e"; +} +.fa-gg:before { + content: "\f260"; +} +.fa-gg-circle:before { + content: "\f261"; +} +.fa-tripadvisor:before { + content: "\f262"; +} +.fa-odnoklassniki:before { + content: "\f263"; +} +.fa-odnoklassniki-square:before { + content: "\f264"; +} +.fa-get-pocket:before { + content: "\f265"; +} +.fa-wikipedia-w:before { + content: "\f266"; +} +.fa-safari:before { + content: "\f267"; +} +.fa-chrome:before { + content: "\f268"; +} +.fa-firefox:before { + content: "\f269"; +} +.fa-opera:before { + content: "\f26a"; +} +.fa-internet-explorer:before { + content: "\f26b"; +} +.fa-tv:before, +.fa-television:before { + content: "\f26c"; +} +.fa-contao:before { + content: "\f26d"; +} +.fa-500px:before { + content: "\f26e"; +} +.fa-amazon:before { + content: "\f270"; +} +.fa-calendar-plus-o:before { + content: "\f271"; +} +.fa-calendar-minus-o:before { + content: "\f272"; +} +.fa-calendar-times-o:before { + content: "\f273"; +} +.fa-calendar-check-o:before { + content: "\f274"; +} +.fa-industry:before { + content: "\f275"; +} +.fa-map-pin:before { + content: "\f276"; +} +.fa-map-signs:before { + content: "\f277"; +} +.fa-map-o:before { + content: "\f278"; +} +.fa-map:before { + content: "\f279"; +} +.fa-commenting:before { + content: "\f27a"; +} +.fa-commenting-o:before { + content: "\f27b"; +} +.fa-houzz:before { + content: "\f27c"; +} +.fa-vimeo:before { + content: "\f27d"; +} +.fa-black-tie:before { + content: "\f27e"; +} +.fa-fonticons:before { + content: "\f280"; +} +.fa-reddit-alien:before { + content: "\f281"; +} +.fa-edge:before { + content: "\f282"; +} +.fa-credit-card-alt:before { + content: "\f283"; +} +.fa-codiepie:before { + content: "\f284"; +} +.fa-modx:before { + content: "\f285"; +} +.fa-fort-awesome:before { + content: "\f286"; +} +.fa-usb:before { + content: "\f287"; +} +.fa-product-hunt:before { + content: "\f288"; +} +.fa-mixcloud:before { + content: "\f289"; +} +.fa-scribd:before { + content: "\f28a"; +} +.fa-pause-circle:before { + content: "\f28b"; +} +.fa-pause-circle-o:before { + content: "\f28c"; +} +.fa-stop-circle:before { + content: "\f28d"; +} +.fa-stop-circle-o:before { + content: "\f28e"; +} +.fa-shopping-bag:before { + content: "\f290"; +} +.fa-shopping-basket:before { + content: "\f291"; +} +.fa-hashtag:before { + content: "\f292"; +} +.fa-bluetooth:before { + content: "\f293"; +} +.fa-bluetooth-b:before { + content: "\f294"; +} +.fa-percent:before { + content: "\f295"; +} +.fa-gitlab:before { + content: "\f296"; +} +.fa-wpbeginner:before { + content: "\f297"; +} +.fa-wpforms:before { + content: "\f298"; +} +.fa-envira:before { + content: "\f299"; +} +.fa-universal-access:before { + content: "\f29a"; +} +.fa-wheelchair-alt:before { + content: "\f29b"; +} +.fa-question-circle-o:before { + content: "\f29c"; +} +.fa-blind:before { + content: "\f29d"; +} +.fa-audio-description:before { + content: "\f29e"; +} +.fa-volume-control-phone:before { + content: "\f2a0"; +} +.fa-braille:before { + content: "\f2a1"; +} +.fa-assistive-listening-systems:before { + content: "\f2a2"; +} +.fa-asl-interpreting:before, +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; +} +.fa-deafness:before, +.fa-hard-of-hearing:before, +.fa-deaf:before { + content: "\f2a4"; +} +.fa-glide:before { + content: "\f2a5"; +} +.fa-glide-g:before { + content: "\f2a6"; +} +.fa-signing:before, +.fa-sign-language:before { + content: "\f2a7"; +} +.fa-low-vision:before { + content: "\f2a8"; +} +.fa-viadeo:before { + content: "\f2a9"; +} +.fa-viadeo-square:before { + content: "\f2aa"; +} +.fa-snapchat:before { + content: "\f2ab"; +} +.fa-snapchat-ghost:before { + content: "\f2ac"; +} +.fa-snapchat-square:before { + content: "\f2ad"; +} +.fa-pied-piper:before { + content: "\f2ae"; +} +.fa-first-order:before { + content: "\f2b0"; +} +.fa-yoast:before { + content: "\f2b1"; +} +.fa-themeisle:before { + content: "\f2b2"; +} +.fa-google-plus-circle:before, +.fa-google-plus-official:before { + content: "\f2b3"; +} +.fa-fa:before, +.fa-font-awesome:before { + content: "\f2b4"; +} +.fa-handshake-o:before { + content: "\f2b5"; +} +.fa-envelope-open:before { + content: "\f2b6"; +} +.fa-envelope-open-o:before { + content: "\f2b7"; +} +.fa-linode:before { + content: "\f2b8"; +} +.fa-address-book:before { + content: "\f2b9"; +} +.fa-address-book-o:before { + content: "\f2ba"; +} +.fa-vcard:before, +.fa-address-card:before { + content: "\f2bb"; +} +.fa-vcard-o:before, +.fa-address-card-o:before { + content: "\f2bc"; +} +.fa-user-circle:before { + content: "\f2bd"; +} +.fa-user-circle-o:before { + content: "\f2be"; +} +.fa-user-o:before { + content: "\f2c0"; +} +.fa-id-badge:before { + content: "\f2c1"; +} +.fa-drivers-license:before, +.fa-id-card:before { + content: "\f2c2"; +} +.fa-drivers-license-o:before, +.fa-id-card-o:before { + content: "\f2c3"; +} +.fa-quora:before { + content: "\f2c4"; +} +.fa-free-code-camp:before { + content: "\f2c5"; +} +.fa-telegram:before { + content: "\f2c6"; +} +.fa-thermometer-4:before, +.fa-thermometer:before, +.fa-thermometer-full:before { + content: "\f2c7"; +} +.fa-thermometer-3:before, +.fa-thermometer-three-quarters:before { + content: "\f2c8"; +} +.fa-thermometer-2:before, +.fa-thermometer-half:before { + content: "\f2c9"; +} +.fa-thermometer-1:before, +.fa-thermometer-quarter:before { + content: "\f2ca"; +} +.fa-thermometer-0:before, +.fa-thermometer-empty:before { + content: "\f2cb"; +} +.fa-shower:before { + content: "\f2cc"; +} +.fa-bathtub:before, +.fa-s15:before, +.fa-bath:before { + content: "\f2cd"; +} +.fa-podcast:before { + content: "\f2ce"; +} +.fa-window-maximize:before { + content: "\f2d0"; +} +.fa-window-minimize:before { + content: "\f2d1"; +} +.fa-window-restore:before { + content: "\f2d2"; +} +.fa-times-rectangle:before, +.fa-window-close:before { + content: "\f2d3"; +} +.fa-times-rectangle-o:before, +.fa-window-close-o:before { + content: "\f2d4"; +} +.fa-bandcamp:before { + content: "\f2d5"; +} +.fa-grav:before { + content: "\f2d6"; +} +.fa-etsy:before { + content: "\f2d7"; +} +.fa-imdb:before { + content: "\f2d8"; +} +.fa-ravelry:before { + content: "\f2d9"; +} +.fa-eercast:before { + content: "\f2da"; +} +.fa-microchip:before { + content: "\f2db"; +} +.fa-snowflake-o:before { + content: "\f2dc"; +} +.fa-superpowers:before { + content: "\f2dd"; +} +.fa-wpexplorer:before { + content: "\f2de"; +} +.fa-meetup:before { + content: "\f2e0"; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} diff --git a/plugins/wp-font-awesome/font-awesome/css/font-awesome.min.css b/plugins/wp-font-awesome/font-awesome/css/font-awesome.min.css new file mode 100644 index 0000000..540440c --- /dev/null +++ b/plugins/wp-font-awesome/font-awesome/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/plugins/wp-font-awesome/font-awesome/fonts/FontAwesome.otf b/plugins/wp-font-awesome/font-awesome/fonts/FontAwesome.otf new file mode 100644 index 0000000..401ec0f Binary files /dev/null and b/plugins/wp-font-awesome/font-awesome/fonts/FontAwesome.otf differ diff --git a/plugins/wp-font-awesome/font-awesome/fonts/fontawesome-webfont.eot b/plugins/wp-font-awesome/font-awesome/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000..e9f60ca Binary files /dev/null and b/plugins/wp-font-awesome/font-awesome/fonts/fontawesome-webfont.eot differ diff --git a/plugins/wp-font-awesome/font-awesome/fonts/fontawesome-webfont.svg b/plugins/wp-font-awesome/font-awesome/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..855c845 --- /dev/null +++ b/plugins/wp-font-awesome/font-awesome/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/wp-font-awesome/font-awesome/fonts/fontawesome-webfont.ttf b/plugins/wp-font-awesome/font-awesome/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..35acda2 Binary files /dev/null and b/plugins/wp-font-awesome/font-awesome/fonts/fontawesome-webfont.ttf differ diff --git a/plugins/wp-font-awesome/font-awesome/fonts/fontawesome-webfont.woff b/plugins/wp-font-awesome/font-awesome/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..400014a Binary files /dev/null and b/plugins/wp-font-awesome/font-awesome/fonts/fontawesome-webfont.woff differ diff --git a/plugins/wp-font-awesome/font-awesome/fonts/fontawesome-webfont.woff2 b/plugins/wp-font-awesome/font-awesome/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000..4d13fc6 Binary files /dev/null and b/plugins/wp-font-awesome/font-awesome/fonts/fontawesome-webfont.woff2 differ diff --git a/plugins/wp-font-awesome/readme.txt b/plugins/wp-font-awesome/readme.txt new file mode 100644 index 0000000..5722652 --- /dev/null +++ b/plugins/wp-font-awesome/readme.txt @@ -0,0 +1,103 @@ +=== Plugin Name === +Contributors: zayedbaloch, pixeldesign, +Donate link: http://zayed.xyz +Tags: fontawesome, font awesome, font icon, posts, page, widget, sidebar, shortcode, +Requires at least: 3.2 +Tested up to: 4.5 +Stable tag: 1.5 +License: GPLv2 or later + +This plugin allows you to easily embed Font Awesome icon to your site with simple shortcodes. + +== Description == + +This plugin allows you to easily embed Font Awesome icon to your website using HTML or built-in shortcode handlers. + += Features = +1. Shortcode support. Example: `[wpfa icon=""]` +2. Use Larger Icon: `[wpfa icon="" size="2x"]`. Sizes: `lg`, `2x`, `3x`, `4x`, `5x` +3. Add Font Awesome icon in Menu with shortcode. +4. Support shortocde in Widgets. +5. Support post and page title. +6. Font Awesome version 4.7.0 + +== Installation == + +1. Unzip the download package +2. Upload `wp-font-awesome` to the `/wp-content/plugins/` directory +3. Activate the plugin through the 'Plugins' menu in WordPress + += Manual Plugin Installation = +1. Download WP Font Awesome Plugin to your desktop. +2. If downloaded as a zip archive, extract the Plugin folder to your desktop. +3. With your FTP program, upload the Plugin folder to the `wp-content/plugins` folder in your WordPress directory online. +4. Go to Plugins screen and find Content WP Font Awesome in the list. +5. Click Activate Plugin to activate it. + +== Frequently Asked Questions == + += Usage = + +Use the `[wpfa icon="fa-home"]` or `[wpfa icon="home"]` shotcode to add an icon. + +Larger Icon: `[wpfa icon="" size="2x"]`. +Sizes: `lg`, `2x`, `3x`, `4x`, `5x`. + += How to use shortcode in Widget title = + +`[wpfa icon=fa-home]` + +`[wpfa icon=home]` + +Note: Don't use double quotes `(" ")` on shortcode in Widget title. + +== Screenshots == +1. Shortcodes +2. Shortcodes result +4. Larger Icon +5. Menu +6. Widget + +== Changelog == + += 1.5 = +* Updated Font Awesome to 4.7.0 + += 1.4 = +* Bug fixes. + += 1.3 = +* Added Larger Icon option. +* Updated Font Awesome to 4.6.0 + += 1.2 = +* Added font icon support in post and page title. + += 1.1 = +* Updated Font Awesome to 4.5.0 +* 20 New Icons in Font Awesome 4.5 + += 1.0 = +* First Release + +== Upgrade Notice == + += 1.5 = +* Updated Font Awesome to 4.7.0 + += 1.4 = +* Bug fixes. + += 1.3 = +* Added Larger Icon option. +* Updated Font Awesome to 4.6.0 + += 1.2 = +* Added font icon support in post and page title. + += 1.1 = +* Updated Font Awesome to 4.5.0 +* 20 New Icons in Font Awesome 4.5 + += 1.0 = +First Release. \ No newline at end of file diff --git a/plugins/wp-font-awesome/screenshot-1.jpg b/plugins/wp-font-awesome/screenshot-1.jpg new file mode 100644 index 0000000..f43c1b8 Binary files /dev/null and b/plugins/wp-font-awesome/screenshot-1.jpg differ diff --git a/plugins/wp-font-awesome/screenshot-2.jpg b/plugins/wp-font-awesome/screenshot-2.jpg new file mode 100644 index 0000000..91e180c Binary files /dev/null and b/plugins/wp-font-awesome/screenshot-2.jpg differ diff --git a/plugins/wp-font-awesome/screenshot-3.jpg b/plugins/wp-font-awesome/screenshot-3.jpg new file mode 100644 index 0000000..883356b Binary files /dev/null and b/plugins/wp-font-awesome/screenshot-3.jpg differ diff --git a/plugins/wp-font-awesome/screenshot-4.jpg b/plugins/wp-font-awesome/screenshot-4.jpg new file mode 100644 index 0000000..8fb12a9 Binary files /dev/null and b/plugins/wp-font-awesome/screenshot-4.jpg differ diff --git a/plugins/wp-font-awesome/screenshot-5.jpg b/plugins/wp-font-awesome/screenshot-5.jpg new file mode 100644 index 0000000..50c56a1 Binary files /dev/null and b/plugins/wp-font-awesome/screenshot-5.jpg differ diff --git a/plugins/wp-font-awesome/wp-font-awesome.php b/plugins/wp-font-awesome/wp-font-awesome.php new file mode 100644 index 0000000..8567eb5 --- /dev/null +++ b/plugins/wp-font-awesome/wp-font-awesome.php @@ -0,0 +1,43 @@ + 'home', 'size' => '' ), $atts ) ); + if ( $size ) { $size = ' fa-'.$size; } + else{ $size = ''; } + return ''; +} + +add_shortcode( 'wpfa', 'wp_fa_shortcode' ); +add_filter('wp_nav_menu_items', 'do_shortcode'); +add_filter('widget_text', 'do_shortcode'); +add_filter('widget_title', 'do_shortcode'); + +function wpfa_add_shortcode_to_title( $title ){ + return do_shortcode($title); +} +add_filter( 'the_title', 'wpfa_add_shortcode_to_title' ); \ No newline at end of file diff --git a/plugins/wp-polls/images/default/pollbg.gif b/plugins/wp-polls/images/default/pollbg.gif new file mode 100644 index 0000000..b8b439f Binary files /dev/null and b/plugins/wp-polls/images/default/pollbg.gif differ diff --git a/plugins/wp-polls/images/default_gradient/pollbg.gif b/plugins/wp-polls/images/default_gradient/pollbg.gif new file mode 100644 index 0000000..5821508 Binary files /dev/null and b/plugins/wp-polls/images/default_gradient/pollbg.gif differ diff --git a/plugins/wp-polls/images/loading.gif b/plugins/wp-polls/images/loading.gif new file mode 100644 index 0000000..e846e1d Binary files /dev/null and b/plugins/wp-polls/images/loading.gif differ diff --git a/plugins/wp-polls/polls-add.php b/plugins/wp-polls/polls-add.php new file mode 100644 index 0000000..9edd59e --- /dev/null +++ b/plugins/wp-polls/polls-add.php @@ -0,0 +1,208 @@ + current_time('timestamp')) { + $pollq_active = -1; + } else { + $pollq_active = 1; + } + // Poll End Date + $pollq_expiry_no = isset( $_POST['pollq_expiry_no'] ) ? intval($_POST['pollq_expiry_no']) : 0; + if ($pollq_expiry_no == 1) { + $pollq_expiry = ''; + } else { + $pollq_expiry_day = intval($_POST['pollq_expiry_day']); + $pollq_expiry_month = intval($_POST['pollq_expiry_month']); + $pollq_expiry_year = intval($_POST['pollq_expiry_year']); + $pollq_expiry_hour = intval($_POST['pollq_expiry_hour']); + $pollq_expiry_minute = intval($_POST['pollq_expiry_minute']); + $pollq_expiry_second = intval($_POST['pollq_expiry_second']); + $pollq_expiry = gmmktime($pollq_expiry_hour, $pollq_expiry_minute, $pollq_expiry_second, $pollq_expiry_month, $pollq_expiry_day, $pollq_expiry_year); + if ($pollq_expiry <= current_time('timestamp')) { + $pollq_active = 0; + } + } + // Mutilple Poll + $pollq_multiple_yes = intval($_POST['pollq_multiple_yes']); + $pollq_multiple = 0; + if ($pollq_multiple_yes == 1) { + $pollq_multiple = intval($_POST['pollq_multiple']); + } else { + $pollq_multiple = 0; + } + // Insert Poll + $add_poll_question = $wpdb->insert( + $wpdb->pollsq, + array( + 'pollq_question' => $pollq_question, + 'pollq_timestamp' => $pollq_timestamp, + 'pollq_totalvotes' => 0, + 'pollq_active' => $pollq_active, + 'pollq_expiry' => $pollq_expiry, + 'pollq_multiple' => $pollq_multiple, + 'pollq_totalvoters' => 0 + ), + array( + '%s', + '%s', + '%d', + '%d', + '%s', + '%d', + '%d' + ) + ); + if ( ! $add_poll_question ) { + $text .= '

        ' . sprintf(__('Error In Adding Poll \'%s\'.', 'wp-polls'), $pollq_question) . '

        '; + } + // Add Poll Answers + $polla_answers = $_POST['polla_answers']; + $polla_qid = intval( $wpdb->insert_id ); + foreach ($polla_answers as $polla_answer) { + $polla_answer = wp_kses_post( trim( $polla_answer ) ); + if( ! empty( $polla_answer ) ) { + $add_poll_answers = $wpdb->insert( + $wpdb->pollsa, + array( + 'polla_qid' => $polla_qid, + 'polla_answers' => $polla_answer, + 'polla_votes' => 0 + ), + array( + '%d', + '%s', + '%d' + ) + ); + if ( ! $add_poll_answers ) { + $text .= '

        ' . sprintf(__('Error In Adding Poll\'s Answer \'%s\'.', 'wp-polls'), $polla_answer) . '

        '; + } + } else { + $text .= '

        ' . __( 'Poll\'s Answer is empty.', 'wp-polls' ) . '

        '; + } + } + // Update Lastest Poll ID To Poll Options + $latest_pollid = polls_latest_id(); + $update_latestpoll = update_option('poll_latestpoll', $latest_pollid); + // If poll starts in the future use the correct poll ID + $latest_pollid = ( $latest_pollid < $polla_qid ) ? $polla_qid : $latest_pollid; + if ( empty( $text ) ) { + $text = '

        ' . sprintf( __( 'Poll \'%s\' (ID: %s) added successfully. Embed this poll with the shortcode: %s or go back to Manage Polls', 'wp-polls' ), $pollq_question, $latest_pollid, '', $base_page ) . '

        '; + } else { + if( $add_poll_question ) { + $text .= '

        ' . sprintf( __( 'Poll \'%s\' (ID: %s) (Shortcode: %s) added successfully, but there are some errors with the Poll\'s Answers. Embed this poll with the shortcode: %s or go back to Manage Polls', 'wp-polls' ), $pollq_question, $latest_pollid, '' ) .'

        '; + } + } + do_action( 'wp_polls_add_poll', $latest_pollid ); + cron_polls_place(); + } else { + $text .= '

        ' . __( 'Poll Question is empty.', 'wp-polls' ) . '

        '; + } + break; + } +} + +### Add Poll Form +$poll_noquestion = 2; +$count = 0; +?> +
        '.removeslashes($text).'
        '; } ?> +
        + +
        +

        + +

        + + + + + +
        + +

        + + + + + + + + + \n"; + echo "\n"; + echo "\n"; + echo "\n"; + $count++; + } + ?> + +
         
        ".sprintf(__('Answer %s', 'wp-polls'), number_format_i18n($i))."   
        + +

        + + + + + + + + + +
        + +
        + +
        + +

        + + + + + + + + + +
          
        +

          

        +
        +
        diff --git a/plugins/wp-polls/polls-admin-css.css b/plugins/wp-polls/polls-admin-css.css new file mode 100644 index 0000000..763f6d2 --- /dev/null +++ b/plugins/wp-polls/polls-admin-css.css @@ -0,0 +1,10 @@ +#wp-polls-pollbar-bg { + width: 25px; + height: 25px; + border: 1px solid #000000; +} +#wp-polls-pollbar-border { + width: 25px; + height: 25px; + border: 1px solid #000000; +} \ No newline at end of file diff --git a/plugins/wp-polls/polls-admin-js.dev.js b/plugins/wp-polls/polls-admin-js.dev.js new file mode 100644 index 0000000..7181f3b --- /dev/null +++ b/plugins/wp-polls/polls-admin-js.dev.js @@ -0,0 +1,219 @@ +var global_poll_id = 0; +var global_poll_aid = 0; +var global_poll_aid_votes = 0; +var count_poll_answer_new = 0; +var count_poll_answer = 3; + +// Delete Poll +function delete_poll(poll_id, poll_confirm, nonce) { + delete_poll_confirm = confirm(poll_confirm); + if(delete_poll_confirm) { + global_poll_id = poll_id; + jQuery(document).ready(function($) { + $.ajax({type: 'POST', url: pollsAdminL10n.admin_ajax_url, data: 'do=' + pollsAdminL10n.text_delete_poll + '&pollq_id=' + poll_id + '&action=polls-admin&_ajax_nonce=' + nonce, cache: false, success: function (data) { + $('#message').html(data); + $('#message').show(); + $('#poll-' + global_poll_id).remove(); + }}); + }); + } +} + +// Delete Poll Logs +function delete_poll_logs(poll_confirm, nonce) { + delete_poll_logs_confirm = confirm(poll_confirm); + if(delete_poll_logs_confirm) { + jQuery(document).ready(function($) { + if($('#delete_logs_yes').is(':checked')) { + $.ajax({type: 'POST', url: pollsAdminL10n.admin_ajax_url, data: 'do=' + pollsAdminL10n.text_delete_all_logs + '&delete_logs_yes=yes&action=polls-admin&_ajax_nonce=' + nonce, cache: false, success: function (data) { + $('#message').html(data); + $('#message').show(); + $('#poll_logs').html(pollsAdminL10n.text_no_poll_logs); + }}); + } else { + alert(pollsAdminL10n.text_checkbox_delete_all_logs); + } + }); + } +} + +// Delete Individual Poll Logs +function delete_this_poll_logs(poll_id, poll_confirm, nonce) { + delete_poll_logs_confirm = confirm(poll_confirm); + if(delete_poll_logs_confirm) { + jQuery(document).ready(function($) { + if($('#delete_logs_yes').is(':checked')) { + global_poll_id = poll_id; + $.ajax({type: 'POST', url: pollsAdminL10n.admin_ajax_url, data: 'do=' + pollsAdminL10n.text_delete_poll_logs + '&pollq_id=' + poll_id + '&delete_logs_yes=yes&action=polls-admin&_ajax_nonce=' + nonce, cache: false, success: function (data) { + $('#message').html(data); + $('#message').show(); + $('#poll_logs').html(pollsAdminL10n.text_no_poll_logs); + $('#poll_logs_display').hide(); + $('#poll_logs_display_none').show(); + }}); + } else { + alert(pollsAdminL10n.text_checkbox_delete_poll_logs); + } + }); + } +} + +// Delete Poll Answer +function delete_poll_ans(poll_id, poll_aid, poll_aid_vote, poll_confirm, nonce) { + delete_poll_ans_confirm = confirm(poll_confirm); + if(delete_poll_ans_confirm) { + global_poll_id = poll_id; + global_poll_aid = poll_aid; + global_poll_aid_votes = poll_aid_vote; + temp_vote_count = 0; + jQuery(document).ready(function($) { + $.ajax({type: 'POST', url: pollsAdminL10n.admin_ajax_url, data: 'do=' + pollsAdminL10n.text_delete_poll_ans + '&pollq_id=' + poll_id + '&polla_aid=' + poll_aid + '&action=polls-admin&_ajax_nonce=' + nonce, cache: false, success: function (data) { + $('#message').html(data); + $('#message').show(); + $('#poll_total_votes').html((parseInt($('#poll_total_votes').html()) - parseInt(global_poll_aid_votes))); + $('#pollq_totalvotes').val(temp_vote_count); + $('#poll-answer-' + global_poll_aid).remove(); + check_totalvotes(); + reorder_answer_num(); + }}); + }); + } +} + +// Open Poll +function opening_poll(poll_id, poll_confirm, nonce) { + open_poll_confirm = confirm(poll_confirm); + if(open_poll_confirm) { + global_poll_id = poll_id; + jQuery(document).ready(function($) { + $.ajax({type: 'POST', url: pollsAdminL10n.admin_ajax_url, data: 'do=' + pollsAdminL10n.text_open_poll + '&pollq_id=' + poll_id + '&action=polls-admin&_ajax_nonce=' + nonce, cache: false, success: function (data) { + $('#message').html(data); + $('#message').show(); + $('#open_poll').hide(); + $('#close_poll').show(); + }}); + }); + } +} + +// Close Poll +function closing_poll(poll_id, poll_confirm, nonce) { + close_poll_confirm = confirm(poll_confirm); + if(close_poll_confirm) { + global_poll_id = poll_id; + jQuery(document).ready(function($) { + $.ajax({type: 'POST', url: pollsAdminL10n.admin_ajax_url, data: 'do=' + pollsAdminL10n.text_close_poll + '&pollq_id=' + poll_id + '&action=polls-admin&_ajax_nonce=' + nonce, cache: false, success: function (data) { + $('#message').html(data); + $('#message').show(); + $('#open_poll').show(); + $('#close_poll').hide(); + }}); + }); + } +} + +// Reoder Answer Answer +function reorder_answer_num() { + jQuery(document).ready(function($) { + var pollq_multiple = $('#pollq_multiple'); + var selected = pollq_multiple.val(); + var previous_size = $('> option', pollq_multiple).size(); + pollq_multiple.empty(); + $('#poll_answers tr > th').each(function (i) { + $(this).text(pollsAdminL10n.text_answer + ' ' + (i+1)); + $(pollq_multiple).append(''); + }); + if(selected > 1) + { + var current_size = $('> option', pollq_multiple).size(); + if(selected <= current_size) + $('> option', pollq_multiple).eq(selected - 1).attr('selected', 'selected'); + else if(selected == previous_size) + $('> option', pollq_multiple).eq(current_size - 1).attr('selected', 'selected'); + } + }); +} + +// Calculate Total Votes +function check_totalvotes() { + temp_vote_count = 0; + jQuery(document).ready(function($) { + $("#poll_answers tr td input[size=4]").each(function (i) { + if(isNaN($(this).val())) { + temp_vote_count += 0; + } else { + temp_vote_count += parseInt($(this).val()); + } + }); + $('#pollq_totalvotes').val(temp_vote_count); + }); +} + +// Add Poll's Answer In Add Poll Page +function add_poll_answer_add() { + jQuery(document).ready(function($) { + $('#poll_answers').append('   '); + count_poll_answer++; + reorder_answer_num(); + }); +} + +// Remove Poll's Answer in Add Poll Page +function remove_poll_answer_add(poll_answer_id) { + jQuery(document).ready(function($) { + $('#poll-answer-' + poll_answer_id).remove(); + reorder_answer_num(); + }); +} + +// Add Poll's Answer In Edit Poll Page +function add_poll_answer_edit() { + jQuery(document).ready(function($) { + $('#poll_answers').append('   0 '); + count_poll_answer_new++; + reorder_answer_num(); + }); +} + +// Remove Poll's Answer In Edit Poll Page +function remove_poll_answer_edit(poll_answer_new_id) { + jQuery(document).ready(function($) { + $('#poll-answer-new-' + poll_answer_new_id).remove(); + check_totalvotes(); + reorder_answer_num(); + }); +} + +// Check Poll Whether It is Multiple Poll Answer +function check_pollq_multiple() { + jQuery(document).ready(function($) { + if(parseInt($('#pollq_multiple_yes').val()) == 1) { + $('#pollq_multiple').attr('disabled', false); + } else { + $('#pollq_multiple').val(1); + $('#pollq_multiple').attr('disabled', true); + } + }); +} + +// Show/Hide Poll's Timestamp +function check_polltimestamp() { + jQuery(document).ready(function($) { + if($('#edit_polltimestamp').is(':checked')) { + $('#pollq_timestamp').show(); + } else { + $('#pollq_timestamp').hide(); + } + }); +} + +// Show/Hide Poll's Expiry Date +function check_pollexpiry() { + jQuery(document).ready(function($) { + if($('#pollq_expiry_no').is(':checked')) { + $('#pollq_expiry').hide(); + } else { + $('#pollq_expiry').show(); + } + }); +} \ No newline at end of file diff --git a/plugins/wp-polls/polls-admin-js.js b/plugins/wp-polls/polls-admin-js.js new file mode 100644 index 0000000..1c655d4 --- /dev/null +++ b/plugins/wp-polls/polls-admin-js.js @@ -0,0 +1,16 @@ +var global_poll_id=0,global_poll_aid=0,global_poll_aid_votes=0,count_poll_answer_new=0,count_poll_answer=3;function delete_poll(a,c,d){if(delete_poll_confirm=confirm(c))global_poll_id=a,jQuery(document).ready(function(b){b.ajax({type:"POST",url:pollsAdminL10n.admin_ajax_url,data:"do="+pollsAdminL10n.text_delete_poll+"&pollq_id="+a+"&action=polls-admin&_ajax_nonce="+d,cache:!1,success:function(a){b("#message").html(a);b("#message").show();b("#poll-"+global_poll_id).remove()}})})} +function delete_poll_logs(a,c){(delete_poll_logs_confirm=confirm(a))&&jQuery(document).ready(function(a){a("#delete_logs_yes").is(":checked")?a.ajax({type:"POST",url:pollsAdminL10n.admin_ajax_url,data:"do="+pollsAdminL10n.text_delete_all_logs+"&delete_logs_yes=yes&action=polls-admin&_ajax_nonce="+c,cache:!1,success:function(b){a("#message").html(b);a("#message").show();a("#poll_logs").html(pollsAdminL10n.text_no_poll_logs)}}):alert(pollsAdminL10n.text_checkbox_delete_all_logs)})} +function delete_this_poll_logs(a,c,d){(delete_poll_logs_confirm=confirm(c))&&jQuery(document).ready(function(b){b("#delete_logs_yes").is(":checked")?(global_poll_id=a,b.ajax({type:"POST",url:pollsAdminL10n.admin_ajax_url,data:"do="+pollsAdminL10n.text_delete_poll_logs+"&pollq_id="+a+"&delete_logs_yes=yes&action=polls-admin&_ajax_nonce="+d,cache:!1,success:function(a){b("#message").html(a);b("#message").show();b("#poll_logs").html(pollsAdminL10n.text_no_poll_logs);b("#poll_logs_display").hide();b("#poll_logs_display_none").show()}})): + alert(pollsAdminL10n.text_checkbox_delete_poll_logs)})} +function delete_poll_ans(a,c,d,b,e){if(delete_poll_ans_confirm=confirm(b))global_poll_id=a,global_poll_aid=c,global_poll_aid_votes=d,temp_vote_count=0,jQuery(document).ready(function(b){b.ajax({type:"POST",url:pollsAdminL10n.admin_ajax_url,data:"do="+pollsAdminL10n.text_delete_poll_ans+"&pollq_id="+a+"&polla_aid="+c+"&action=polls-admin&_ajax_nonce="+e,cache:!1,success:function(a){b("#message").html(a);b("#message").show();b("#poll_total_votes").html(parseInt(b("#poll_total_votes").html())-parseInt(global_poll_aid_votes)); + b("#pollq_totalvotes").val(temp_vote_count);b("#poll-answer-"+global_poll_aid).remove();check_totalvotes();reorder_answer_num()}})})} +function opening_poll(a,c,d){if(open_poll_confirm=confirm(c))global_poll_id=a,jQuery(document).ready(function(b){b.ajax({type:"POST",url:pollsAdminL10n.admin_ajax_url,data:"do="+pollsAdminL10n.text_open_poll+"&pollq_id="+a+"&action=polls-admin&_ajax_nonce="+d,cache:!1,success:function(a){b("#message").html(a);b("#message").show();b("#open_poll").hide();b("#close_poll").show()}})})} +function closing_poll(a,c,d){if(close_poll_confirm=confirm(c))global_poll_id=a,jQuery(document).ready(function(b){b.ajax({type:"POST",url:pollsAdminL10n.admin_ajax_url,data:"do="+pollsAdminL10n.text_close_poll+"&pollq_id="+a+"&action=polls-admin&_ajax_nonce="+d,cache:!1,success:function(a){b("#message").html(a);b("#message").show();b("#open_poll").show();b("#close_poll").hide()}})})} +function reorder_answer_num(){jQuery(document).ready(function(a){var c=a("#pollq_multiple"),d=c.val(),b=a("> option",c).size();c.empty();a("#poll_answers tr > th").each(function(b){a(this).text(pollsAdminL10n.text_answer+" "+(b+1));a(c).append('")});if(1 option",c).size();d<=e?a("> option",c).eq(d-1).attr("selected","selected"):d==b&&a("> option",c).eq(e-1).attr("selected","selected")}})} +function check_totalvotes(){temp_vote_count=0;jQuery(document).ready(function(a){a("#poll_answers tr td input[size=4]").each(function(c){temp_vote_count=isNaN(a(this).val())?temp_vote_count+0:temp_vote_count+parseInt(a(this).val())});a("#pollq_totalvotes").val(temp_vote_count)})} +function add_poll_answer_add(){jQuery(document).ready(function(a){a("#poll_answers").append('   ');count_poll_answer++;reorder_answer_num()})} +function remove_poll_answer_add(a){jQuery(document).ready(function(c){c("#poll-answer-"+a).remove();reorder_answer_num()})} +function add_poll_answer_edit(){jQuery(document).ready(function(a){a("#poll_answers").append('   0 ');count_poll_answer_new++;reorder_answer_num()})}function remove_poll_answer_edit(a){jQuery(document).ready(function(c){c("#poll-answer-new-"+a).remove();check_totalvotes();reorder_answer_num()})} +function check_pollq_multiple(){jQuery(document).ready(function(a){1==parseInt(a("#pollq_multiple_yes").val())?a("#pollq_multiple").attr("disabled",!1):(a("#pollq_multiple").val(1),a("#pollq_multiple").attr("disabled",!0))})}function check_polltimestamp(){jQuery(document).ready(function(a){a("#edit_polltimestamp").is(":checked")?a("#pollq_timestamp").show():a("#pollq_timestamp").hide()})} +function check_pollexpiry(){jQuery(document).ready(function(a){a("#pollq_expiry_no").is(":checked")?a("#pollq_expiry").hide():a("#pollq_expiry").show()})}; \ No newline at end of file diff --git a/plugins/wp-polls/polls-css-rtl.css b/plugins/wp-polls/polls-css-rtl.css new file mode 100644 index 0000000..219f846 --- /dev/null +++ b/plugins/wp-polls/polls-css-rtl.css @@ -0,0 +1,29 @@ +/* ++----------------------------------------------------------------+ +| | +| WordPress Plugin: WP-Polls | +| Copyright (c) 2012 Lester "GaMerZ" Chan | +| | +| File Written By: | +| - Lester "GaMerZ" Chan | +| - http://lesterchan.net | +| | +| File Information: | +| - Polls CSS File (RTL) | +| - wp-content/plugins/wp-polls/polls-css.css | +| | ++----------------------------------------------------------------+ +*/ + + +.wp-polls ul li, .wp-polls-ul li, .wp-polls-ans ul li { + text-align: right; +} + +.wp-polls ul, .wp-polls-ul, .wp-polls-ans ul { + text-align: right; +} + +.wp-polls-ul { + margin: 0px 10px 10px 0px; +} \ No newline at end of file diff --git a/plugins/wp-polls/polls-css.css b/plugins/wp-polls/polls-css.css new file mode 100644 index 0000000..dfac00d --- /dev/null +++ b/plugins/wp-polls/polls-css.css @@ -0,0 +1,119 @@ +/* ++----------------------------------------------------------------+ +| | +| WordPress Plugin: WP-Polls | +| Copyright (c) 2012 Lester "GaMerZ" Chan | +| | +| File Written By: | +| - Lester "GaMerZ" Chan | +| - http://lesterchan.net | +| | +| File Information: | +| - Polls CSS File | +| - wp-content/plugins/wp-polls/polls-css.css | +| | ++----------------------------------------------------------------+ +*/ + + +.wp-polls-archive { + /* background-color: #ffffff; */ +} +.wp-polls, .wp-polls-form { + /* background-color: #ffffff; */ +} +.wp-polls ul li, .wp-polls-ul li, .wp-polls-ans ul li { + text-align: left; + background-image: none; + display: block; +} +.wp-polls ul, .wp-polls-ul, .wp-polls-ans ul { + text-align: left; + list-style: none; + float: none; +} +.wp-polls ul li:before, .wp-polls-ans ul li:before, #sidebar ul ul li:before { + content: ''; +} +.wp-polls IMG, .wp-polls LABEL , .wp-polls INPUT, .wp-polls-loading IMG, .wp-polls-image IMG { + display: inline; + border: 0px; + padding: 0px; + margin: 0px; +} +.wp-polls-ul { + padding: 0px; + margin: 0px 0px 10px 10px; +} +.wp-polls-ans { + width:100%; + filter: alpha(opacity=100); + -moz-opacity: 1; + opacity: 1; + /* background-color: #ffffff; */ +} +.wp-polls-loading { + display: none; + text-align: center; + height: 16px; + line-height: 16px; +} +.wp-polls-image { + border: 0px; +} +.wp-polls .Buttons { + border:1px solid #c8c8c8; + background-color: #f3f6f8; +} +/* Polls Archive Paging */ +.wp-polls-paging a, .wp-polls-paging a:link { + padding: 2px 4px 2px 4px; + margin: 2px; + text-decoration: none; + border: 1px solid #0066cc; + color: #0066cc; + background-color: #FFFFFF; +} +.wp-polls-paging a:visited { + padding: 2px 4px 2px 4px; + margin: 2px; + text-decoration: none; + border: 1px solid #0066cc; + color: #0066cc; + background-color: #FFFFFF; +} +.wp-polls-paging a:hover { + border: 1px solid #000000; + color: #000000; + background-color: #FFFFFF; +} +.wp-polls-paging a:active { + padding: 2px 4px 2px 4px; + margin: 2px; + text-decoration: none; + border: 1px solid #0066cc; + color: #0066cc; + background-color: #FFFFFF; +} +.wp-polls-paging span.pages { + padding: 2px 4px 2px 4px; + margin: 2px 2px 2px 2px; + color: #000000; + border: 1px solid #000000; + background-color: #FFFFFF; +} +.wp-polls-paging span.current { + padding: 2px 4px 2px 4px; + margin: 2px; + font-weight: bold; + border: 1px solid #000000; + color: #000000; + background-color: #FFFFFF; +} +.wp-polls-paging span.extend { + padding: 2px 4px 2px 4px; + margin: 2px; + border: 1px solid #000000; + color: #000000; + background-color: #FFFFFF; +} \ No newline at end of file diff --git a/plugins/wp-polls/polls-js.dev.js b/plugins/wp-polls/polls-js.dev.js new file mode 100644 index 0000000..21366cd --- /dev/null +++ b/plugins/wp-polls/polls-js.dev.js @@ -0,0 +1,143 @@ +// Variables +var poll_id = 0; +var poll_answer_id = ''; +var is_being_voted = false; +pollsL10n.show_loading = parseInt(pollsL10n.show_loading); +pollsL10n.show_fading = parseInt(pollsL10n.show_fading); + +// When User Vote For Poll +function poll_vote(current_poll_id) { + jQuery(document).ready(function($) { + if(!is_being_voted) { + set_is_being_voted(true); + poll_id = current_poll_id; + poll_answer_id = ''; + poll_multiple_ans = 0; + poll_multiple_ans_count = 0; + if($('#poll_multiple_ans_' + poll_id).length) { + poll_multiple_ans = parseInt($('#poll_multiple_ans_' + poll_id).val()); + } + $('#polls_form_' + poll_id + ' input:checkbox, #polls_form_' + poll_id + ' input:radio, #polls_form_' + poll_id + ' option').each(function(i){ + if ($(this).is(':checked') || $(this).is(':selected')) { + if(poll_multiple_ans > 0) { + poll_answer_id = $(this).val() + ',' + poll_answer_id; + poll_multiple_ans_count++; + } else { + poll_answer_id = parseInt($(this).val()); + } + } + }); + if(poll_multiple_ans > 0) { + if(poll_multiple_ans_count > 0 && poll_multiple_ans_count <= poll_multiple_ans) { + poll_answer_id = poll_answer_id.substring(0, (poll_answer_id.length-1)); + poll_process(); + } else if(poll_multiple_ans_count == 0) { + set_is_being_voted(false); + alert(pollsL10n.text_valid); + } else { + set_is_being_voted(false); + alert(pollsL10n.text_multiple + ' ' + poll_multiple_ans); + } + } else { + if(poll_answer_id > 0) { + poll_process(); + } else { + set_is_being_voted(false); + alert(pollsL10n.text_valid); + } + } + } else { + alert(pollsL10n.text_wait); + } + }); +} + +// Process Poll (User Click "Vote" Button) +function poll_process() { + jQuery(document).ready(function($) { + poll_nonce = $('#poll_' + poll_id + '_nonce').val(); + if(pollsL10n.show_fading) { + $('#polls-' + poll_id).fadeTo('def', 0); + if(pollsL10n.show_loading) { + $('#polls-' + poll_id + '-loading').show(); + } + $.ajax({type: 'POST', xhrFields: {withCredentials: true}, url: pollsL10n.ajax_url, data: 'action=polls&view=process&poll_id=' + poll_id + '&poll_' + poll_id + '=' + poll_answer_id + '&poll_' + poll_id + '_nonce=' + poll_nonce, cache: false, success: poll_process_success}); + } else { + if(pollsL10n.show_loading) { + $('#polls-' + poll_id + '-loading').show(); + } + $.ajax({type: 'POST', xhrFields: {withCredentials: true}, url: pollsL10n.ajax_url, data: 'action=polls&view=process&poll_id=' + poll_id + '&poll_' + poll_id + '=' + poll_answer_id + '&poll_' + poll_id + '_nonce=' + poll_nonce, cache: false, success: poll_process_success}); + } + }); +} + +// Poll's Result (User Click "View Results" Link) +function poll_result(current_poll_id) { + jQuery(document).ready(function($) { + if(!is_being_voted) { + set_is_being_voted(true); + poll_id = current_poll_id; + poll_nonce = $('#poll_' + poll_id + '_nonce').val(); + if(pollsL10n.show_fading) { + $('#polls-' + poll_id).fadeTo('def', 0); + if(pollsL10n.show_loading) { + $('#polls-' + poll_id + '-loading').show(); + } + $.ajax({type: 'POST', xhrFields: {withCredentials: true}, url: pollsL10n.ajax_url, data: 'action=polls&view=result&poll_id=' + poll_id + '&poll_' + poll_id + '_nonce=' + poll_nonce, cache: false, success: poll_process_success}); + } else { + if(pollsL10n.show_loading) { + $('#polls-' + poll_id + '-loading').show(); + } + $.ajax({type: 'POST', xhrFields: {withCredentials: true}, url: pollsL10n.ajax_url, data: 'action=polls&view=result&poll_id=' + poll_id + '&poll_' + poll_id + '_nonce=' + poll_nonce, cache: false, success: poll_process_success}); + } + } else { + alert(pollsL10n.text_wait); + } + }); +} + +// Poll's Voting Booth (User Click "Vote" Link) +function poll_booth(current_poll_id) { + jQuery(document).ready(function($) { + if(!is_being_voted) { + set_is_being_voted(true); + poll_id = current_poll_id; + poll_nonce = $('#poll_' + poll_id + '_nonce').val(); + if(pollsL10n.show_fading) { + $('#polls-' + poll_id).fadeTo('def', 0); + if(pollsL10n.show_loading) { + $('#polls-' + poll_id + '-loading').show(); + } + $.ajax({type: 'POST', xhrFields: {withCredentials: true}, url: pollsL10n.ajax_url, data: 'action=polls&view=booth&poll_id=' + poll_id + '&poll_' + poll_id + '_nonce=' + poll_nonce, cache: false, success: poll_process_success}); + } else { + if(pollsL10n.show_loading) { + $('#polls-' + poll_id + '-loading').show(); + } + $.ajax({type: 'POST', xhrFields: {withCredentials: true}, url: pollsL10n.ajax_url, data: 'action=polls&view=booth&poll_id=' + poll_id + '&poll_' + poll_id + '_nonce=' + poll_nonce, cache: false, success: poll_process_success}); + } + } else { + alert(pollsL10n.text_wait); + } + }); +} + +// Poll Process Successfully +function poll_process_success(data) { + jQuery(document).ready(function($) { + $('#polls-' + poll_id).replaceWith(data); + if(pollsL10n.show_loading) { + $('#polls-' + poll_id + '-loading').hide(); + } + if(pollsL10n.show_fading) { + $('#polls-' + poll_id).fadeTo('def', 1); + set_is_being_voted(false); + } else { + set_is_being_voted(false); + } + }); +} + +// Set is_being_voted Status +function set_is_being_voted(voted_status) { + is_being_voted = voted_status; +} \ No newline at end of file diff --git a/plugins/wp-polls/polls-js.js b/plugins/wp-polls/polls-js.js new file mode 100644 index 0000000..26cbb24 --- /dev/null +++ b/plugins/wp-polls/polls-js.js @@ -0,0 +1,7 @@ +var poll_id=0,poll_answer_id="",is_being_voted=!1;pollsL10n.show_loading=parseInt(pollsL10n.show_loading);pollsL10n.show_fading=parseInt(pollsL10n.show_fading); +function poll_vote(b){jQuery(document).ready(function(a){is_being_voted?alert(pollsL10n.text_wait):(set_is_being_voted(!0),poll_id=b,poll_answer_id="",poll_multiple_ans_count=poll_multiple_ans=0,a("#poll_multiple_ans_"+poll_id).length&&(poll_multiple_ans=parseInt(a("#poll_multiple_ans_"+poll_id).val())),a("#polls_form_"+poll_id+" input:checkbox, #polls_form_"+poll_id+" input:radio, #polls_form_"+poll_id+" option").each(function(b){if(a(this).is(":checked")||a(this).is(":selected"))0get_row( $wpdb->prepare( "SELECT pollq_multiple, pollq_question, pollq_totalvoters FROM $wpdb->pollsq WHERE pollq_id = %d", $poll_id ) ); +$poll_question = wp_kses_post( removeslashes( $poll_question_data->pollq_question ) ); +$poll_totalvoters = intval( $poll_question_data->pollq_totalvoters ); +$poll_multiple = intval( $poll_question_data->pollq_multiple ); +$poll_registered = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(pollip_userid) FROM $wpdb->pollsip WHERE pollip_qid = %d AND pollip_userid > 0", $poll_id ) ); +$poll_comments = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(pollip_user) FROM $wpdb->pollsip WHERE pollip_qid = %d AND pollip_user != %s AND pollip_userid = 0", $poll_id, __( 'Guest', 'wp-polls' ) ) ); +$poll_guest = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(pollip_user) FROM $wpdb->pollsip WHERE pollip_qid = %d AND pollip_user = %s", $poll_id, __( 'Guest', 'wp-polls' ) ) ); +$poll_totalrecorded = ( $poll_registered + $poll_comments + $poll_guest ); +list( $order_by, $sort_order ) = _polls_get_ans_sort(); +$poll_answers_data = $wpdb->get_results( $wpdb->prepare( "SELECT polla_aid, polla_answers FROM $wpdb->pollsa WHERE polla_qid = %d ORDER BY $order_by $sort_order", $poll_id ) ); +$poll_voters = $wpdb->get_col( $wpdb->prepare( "SELECT DISTINCT pollip_user FROM $wpdb->pollsip WHERE pollip_qid = %d AND pollip_user != %s ORDER BY pollip_user ASC", $poll_id, __( 'Guest', 'wp-polls' ) ) ); +$poll_logs_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(pollip_id) FROM $wpdb->pollsip WHERE pollip_qid = %d", $poll_id ) ); + +$exclude_registered = 0; +$exclude_comment = 0; +$exclude_guest = 0; + +$users_voted_for = null; +$what_user_voted = null; + +### Process Filters +if(!empty($_POST['do'])) { + check_admin_referer('wp-polls_logs'); + $registered_sql = ''; + $comment_sql = ''; + $guest_sql = ''; + $users_voted_for_sql = ''; + $what_user_voted_sql = ''; + $num_choices_sql = ''; + $num_choices_sign_sql = ''; + $order_by = ''; + switch(intval($_POST['filter'])) { + case 1: + $users_voted_for = intval( $_POST['users_voted_for'] ); + $exclude_registered = isset( $_POST['exclude_registered'] ) && intval( $_POST['exclude_registered'] ) === 1; + $exclude_comment = isset( $_POST['exclude_comment'] ) && intval( $_POST['exclude_comment'] ) === 1; + $exclude_guest = isset( $_POST['exclude_guest'] ) && intval( $_POST['exclude_guest'] ) === 1; + $users_voted_for_sql = "AND pollip_aid = $users_voted_for"; + if($exclude_registered) { + $registered_sql = 'AND pollip_userid = 0'; + } + if($exclude_comment) { + if(!$exclude_registered) { + $comment_sql = 'AND pollip_userid > 0'; + } else { + $comment_sql = 'AND pollip_user = \''.__('Guest', 'wp-polls').'\''; + } + } + if($exclude_guest) { + $guest_sql = 'AND pollip_user != \''.__('Guest', 'wp-polls').'\''; + } + $order_by = 'pollip_timestamp DESC'; + break; + case 2: + $exclude_registered_2 = intval( $_POST['exclude_registered_2'] ); + $exclude_comment_2 = intval( $_POST['exclude_comment_2'] ); + $num_choices = intval( $_POST['num_choices']); + $num_choices_sign = esc_sql( $_POST['num_choices_sign'] ); + switch($num_choices_sign) { + case 'more': + $num_choices_sign_sql = '>'; + break; + case 'more_exactly': + $num_choices_sign_sql = '>='; + break; + case 'exactly': + $num_choices_sign_sql = '='; + break; + case 'less_exactly': + $num_choices_sign_sql = '<='; + break; + case 'less': + $num_choices_sign_sql = '<'; + break; + } + if($exclude_registered_2) { + $registered_sql = 'AND pollip_userid = 0'; + } + if($exclude_comment_2) { + if(!$exclude_registered_2) { + $comment_sql = 'AND pollip_userid > 0'; + } else { + $comment_sql = 'AND pollip_user = \''.__('Guest', 'wp-polls').'\''; + } + } + $guest_sql = 'AND pollip_user != \''.__('Guest', 'wp-polls').'\''; + $num_choices_query = $wpdb->get_col("SELECT pollip_user, COUNT(pollip_ip) AS num_choices FROM $wpdb->pollsip WHERE pollip_qid = $poll_id GROUP BY pollip_ip, pollip_user HAVING num_choices $num_choices_sign_sql $num_choices"); + $num_choices_sql = 'AND pollip_user IN (\''.implode('\',\'',$num_choices_query).'\')'; + $order_by = 'pollip_user, pollip_ip'; + break; + case 3; + $what_user_voted = esc_sql( $_POST['what_user_voted'] ); + $what_user_voted_sql = "AND pollip_user = '$what_user_voted'"; + $order_by = 'pollip_user, pollip_ip'; + break; + } + $poll_ips = $wpdb->get_results("SELECT $wpdb->pollsip.* FROM $wpdb->pollsip WHERE pollip_qid = $poll_id $users_voted_for_sql $registered_sql $comment_sql $guest_sql $what_user_voted_sql $num_choices_sql ORDER BY $order_by"); +} else { + $poll_ips = $wpdb->get_results( $wpdb->prepare( "SELECT pollip_aid, pollip_ip, pollip_host, pollip_timestamp, pollip_user FROM $wpdb->pollsip WHERE pollip_qid = %d ORDER BY pollip_aid ASC, pollip_user ASC LIMIT %d", $poll_id, $max_records ) ); +} +?> +
        '.removeslashes($text).'
        '; } else { echo ''; } ?> +
        +

        +

        +

        + %s recorded vote for this poll.', 'There are a total of %s recorded votes for this poll.', $poll_totalrecorded, 'wp-polls'), number_format_i18n($poll_totalrecorded)); ?>
        + » %s vote is cast by registered users', '» %s votes are cast by registered users', $poll_registered, 'wp-polls'), number_format_i18n($poll_registered)); ?>
        + » %s vote is cast by comment authors', '» %s votes are cast by comment authors', $poll_comments, 'wp-polls'), number_format_i18n($poll_comments)); ?>
        + » %s vote is cast by guests', '» %s votes are cast by guests', $poll_guest, 'wp-polls'), number_format_i18n($poll_guest)); ?> +

        +
        + 0 && apply_filters( 'poll_log_show_log_filter', true )) { ?> +
        +

        + + + + + + + + + +
        +
        + +

        + + + + + + + + + + + + +
        + +
        + /> 
        + /> 
        + />  +
        +
        +
        + 0) { ?> +
        + +

        + + + + + + + + + + + + +
        + +    + +
        + /> 
        + /> 
        + +
        +
        + +   + -1) ?> +
        + +
        + +

        + + + + + + + + +
        + +
        +
        + +   + -1) ?> +
        +
        +

         

        + 0) ?> +
        +

        +
        + '.sprintf(__('This default filter is limited to display only %s records.', 'wp-polls'), number_format_i18n($max_records)).'

        '; + } + echo ''."\n"; + echo ""; + $k = 1; + $j = 0; + $poll_last_aid = -1; + $temp_pollip_user = null; + if(isset($_POST['filter']) && intval($_POST['filter']) > 1) { + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + foreach($poll_ips as $poll_ip) { + $pollip_aid = intval($poll_ip->pollip_aid); + $pollip_user = removeslashes($poll_ip->pollip_user); + $pollip_ip = $poll_ip->pollip_ip; + $pollip_host = $poll_ip->pollip_host; + $pollip_date = mysql2date(sprintf(__('%s @ %s', 'wp-polls'), get_option('date_format'), get_option('time_format')), gmdate('Y-m-d H:i:s', $poll_ip->pollip_timestamp)); + + $i = 0; + if($i % 2 == 0) { + $style = ''; + } else { + $style = 'class="alternate"'; + } + if($pollip_user != $temp_pollip_user) { + echo ''."\n"; + echo "\n"; + echo ''; + $k++; + } + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + $temp_pollip_user = $pollip_user; + $i++; + $j++; + } + } else { + foreach($poll_ips as $poll_ip) { + $pollip_aid = intval($poll_ip->pollip_aid); + $pollip_user = apply_filters( 'poll_log_secret_ballot', removeslashes($poll_ip->pollip_user) ); + $pollip_ip = $poll_ip->pollip_ip; + $pollip_host = $poll_ip->pollip_host; + $pollip_date = mysql2date(sprintf(__('%s @ %s', 'wp-polls'), get_option('date_format'), get_option('time_format')), gmdate('Y-m-d H:i:s', $poll_ip->pollip_timestamp)); + if($pollip_aid != $poll_last_aid) { + if($pollip_aid == 0) { + echo "\n\n\n"; + } else { + $polla_answer = ! empty( $pollip_answers[$pollip_aid] ) ? $pollip_answers[ $pollip_aid ] : $poll_answers_data[ $k-1 ]->polla_answers; + echo "\n\n\n"; + $k++; + } + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + $i = 1; + } + if($i%2 == 0) { + $style = ''; + } else { + $style = 'class="alternate"'; + } + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + $poll_last_aid = $pollip_aid; + $i++; + $j++; + } + } + echo "\n"; + echo ""; + echo "\n"; + echo '
        ". $poll_question . "
        ".__('Answer', 'wp-polls')."".__('IP', 'wp-polls')."".__('Host', 'wp-polls')."".__('Date', 'wp-polls')."
        ".__('User', 'wp-polls')." ".number_format_i18n($k).": $pollip_user
        {$pollip_answers[$pollip_aid]}$pollip_ip$pollip_host$pollip_date
        $pollip_answers[$pollip_aid]
        ".__('Answer', 'wp-polls')." ".number_format_i18n($k).": " . $polla_answer . "
        ".__('No.', 'wp-polls')."".__('User', 'wp-polls')."".__('IP/Host', 'wp-polls')."".__('Date', 'wp-polls')."
        ".number_format_i18n($i)."$pollip_user$pollip_ip / $pollip_host$pollip_date
        ".sprintf(__('Total number of records that matches this filter: %s', 'wp-polls'), number_format_i18n($j))."
        '."\n"; + } + ?> +
        + +
        + +
        + +
        +

         

        + + +
        +

        +
        +
        + +

        +  

        + + +
        +

        +
        diff --git a/plugins/wp-polls/polls-manager.php b/plugins/wp-polls/polls-manager.php new file mode 100644 index 0000000..dc054a7 --- /dev/null +++ b/plugins/wp-polls/polls-manager.php @@ -0,0 +1,513 @@ + current_time('timestamp')) { + $pollq_active = -1; + } + } + // Poll End Date + $pollq_expiry_no = isset( $_POST['pollq_expiry_no'] ) ? intval( $_POST['pollq_expiry_no'] ) : 0; + if($pollq_expiry_no == 1) { + $pollq_expiry = ''; + } else { + $pollq_expiry_day = intval($_POST['pollq_expiry_day']); + $pollq_expiry_month = intval($_POST['pollq_expiry_month']); + $pollq_expiry_year = intval($_POST['pollq_expiry_year']); + $pollq_expiry_hour = intval($_POST['pollq_expiry_hour']); + $pollq_expiry_minute = intval($_POST['pollq_expiry_minute']); + $pollq_expiry_second = intval($_POST['pollq_expiry_second']); + $pollq_expiry = gmmktime($pollq_expiry_hour, $pollq_expiry_minute, $pollq_expiry_second, $pollq_expiry_month, $pollq_expiry_day, $pollq_expiry_year); + if($pollq_expiry <= current_time('timestamp')) { + $pollq_active = 0; + } + if($edit_polltimestamp == 1) { + if($pollq_expiry < $pollq_timestamp) { + $pollq_active = 0; + } + } + } + // Mutilple Poll + $pollq_multiple_yes = intval($_POST['pollq_multiple_yes']); + $pollq_multiple = 0; + if($pollq_multiple_yes == 1) { + $pollq_multiple = intval($_POST['pollq_multiple']); + } else { + $pollq_multiple = 0; + } + // Update Poll's Question + $text = ''; + $edit_poll_question = $wpdb->update( + $wpdb->pollsq, + array( + 'pollq_question' => $pollq_question, + 'pollq_timestamp' => $pollq_timestamp, + 'pollq_totalvotes' => $pollq_totalvotes, + 'pollq_active' => $pollq_active, + 'pollq_expiry' => $pollq_expiry, + 'pollq_multiple' => $pollq_multiple, + 'pollq_totalvoters' => $pollq_totalvoters + ), + array( + 'pollq_id' => $pollq_id + ), + array( + '%s', + '%s', + '%d', + '%d', + '%s', + '%d', + '%d' + ), + array( + '%d' + ) + ); + if( ! $edit_poll_question ) { + $text = '

        '.sprintf(__('No Changes Had Been Made To Poll\'s Question \'%s\'.', 'wp-polls'), removeslashes($pollq_question)).'

        '; + } + // Update Polls' Answers + $polla_aids = array(); + $get_polla_aids = $wpdb->get_results( $wpdb->prepare( "SELECT polla_aid FROM $wpdb->pollsa WHERE polla_qid = %d ORDER BY polla_aid ASC", $pollq_id ) ); + if($get_polla_aids) { + foreach($get_polla_aids as $get_polla_aid) { + $polla_aids[] = intval($get_polla_aid->polla_aid); + } + foreach($polla_aids as $polla_aid) { + $polla_answers = wp_kses_post( trim( $_POST['polla_aid-'.$polla_aid] ) ); + $polla_votes = intval($_POST['polla_votes-'.$polla_aid]); + $edit_poll_answer = $wpdb->update( + $wpdb->pollsa, + array( + 'polla_answers' => $polla_answers, + 'polla_votes' => $polla_votes + ), + array( + 'polla_qid' => $pollq_id, + 'polla_aid' => $polla_aid + ), + array( + '%s', + '%d' + ), + array( + '%d', + '%d' + ) + ); + if( ! $edit_poll_answer ) { + $text .= '

        '.sprintf(__('No Changes Had Been Made To Poll\'s Answer \'%s\'.', 'wp-polls'), $polla_answers ).'

        '; + } else { + $text .= '

        '.sprintf(__('Poll\'s Answer \'%s\' Edited Successfully.', 'wp-polls'), $polla_answers ).'

        '; + } + } + } else { + $text .= '

        '.sprintf(__('Invalid Poll \'%s\'.', 'wp-polls'), removeslashes($pollq_question)).'

        '; + } + // Add Poll Answers (If Needed) + $polla_answers_new = isset($_POST['polla_answers_new']) ? $_POST['polla_answers_new'] : null; + if(!empty($polla_answers_new)) { + $i = 0; + $polla_answers_new_votes = $_POST['polla_answers_new_votes']; + foreach($polla_answers_new as $polla_answer_new) { + $polla_answer_new = wp_kses_post( trim( $polla_answer_new ) ); + if(!empty($polla_answer_new)) { + $polla_answer_new_vote = intval( $polla_answers_new_votes[$i] ); + $add_poll_answers = $wpdb->insert( + $wpdb->pollsa, + array( + 'polla_qid' => $pollq_id, + 'polla_answers' => $polla_answer_new, + 'polla_votes' => $polla_answer_new_vote + ), + array( + '%d', + '%s', + '%d' + ) + ); + if( ! $add_poll_answers ) { + $text .= '

        '.sprintf(__('Error In Adding Poll\'s Answer \'%s\'.', 'wp-polls'), $polla_answer_new).'

        '; + } else { + $text .= '

        '.sprintf(__('Poll\'s Answer \'%s\' Added Successfully.', 'wp-polls'), $polla_answer_new).'

        '; + } + } + $i++; + } + } + if(empty($text)) { + $text = '

        '.sprintf(__('Poll \'%s\' Edited Successfully.', 'wp-polls'), removeslashes($pollq_question)).'

        '; + } + // Update Lastest Poll ID To Poll Options + $latest_pollid = polls_latest_id(); + $update_latestpoll = update_option('poll_latestpoll', $latest_pollid); + do_action( 'wp_polls_update_poll', $latest_pollid ); + cron_polls_place(); + break; + } +} + +### Determines Which Mode It Is +switch($mode) { + // Poll Logging + case 'logs': + require('polls-logs.php'); + break; + // Edit A Poll + case 'edit': + $last_col_align = is_rtl() ? 'right' : 'left'; + $poll_question = $wpdb->get_row( $wpdb->prepare( "SELECT pollq_question, pollq_timestamp, pollq_totalvotes, pollq_active, pollq_expiry, pollq_multiple, pollq_totalvoters FROM $wpdb->pollsq WHERE pollq_id = %d", $poll_id ) ); + $poll_answers = $wpdb->get_results( $wpdb->prepare( "SELECT polla_aid, polla_answers, polla_votes FROM $wpdb->pollsa WHERE polla_qid = %d ORDER BY polla_aid ASC", $poll_id ) ); + $poll_noquestion = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(polla_aid) FROM $wpdb->pollsa WHERE polla_qid = %d", $poll_id ) ); + $poll_question_text = removeslashes($poll_question->pollq_question); + $poll_totalvotes = intval($poll_question->pollq_totalvotes); + $poll_timestamp = $poll_question->pollq_timestamp; + $poll_active = intval($poll_question->pollq_active); + $poll_expiry = trim($poll_question->pollq_expiry); + $poll_multiple = intval($poll_question->pollq_multiple); + $poll_totalvoters = intval($poll_question->pollq_totalvoters); +?> +
        '.removeslashes($text).'
        '; } else { echo ''; } ?> + + +
        + + + + +
        +

        + +

        + + + + + +
        + +

        + + + + + + + + + + polla_aid); + $polla_answers = removeslashes($poll_answer->polla_answers); + $polla_votes = intval($poll_answer->polla_votes); + $pollip_answers[$polla_aid] = $polla_answers; + echo "\n"; + echo ''."\n"; + echo "\n"; + echo '\n\n"; + $poll_actual_totalvotes += $polla_votes; + $i++; + } + } + ?> + + + + + + + + + + + + + +
        '.sprintf(__('Answer %s', 'wp-polls'), number_format_i18n($i)).'   "; + echo "'.number_format_i18n($polla_votes)."
         
          
        + +

        + + + + + + + + + +
        + +
        + +
        + +

        + + + + + + + + + +
        +
        +  
        + +
        + +
        + /> +
        + +
        +

        +    + + + +    +

        +
        +
        +get_results( "SELECT * FROM $wpdb->pollsq ORDER BY pollq_timestamp DESC" ); + $total_ans = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->pollsa" ); + $total_votes = 0; + $total_voters = 0; +?> + + + + +
        +

        +

        +
        + + + + + + + + + + + + + + pollq_id); + $poll_question = removeslashes($poll->pollq_question); + $poll_date = mysql2date(sprintf(__('%s @ %s', 'wp-polls'), get_option('date_format'), get_option('time_format')), gmdate('Y-m-d H:i:s', $poll->pollq_timestamp)); + $poll_totalvotes = intval($poll->pollq_totalvotes); + $poll_totalvoters = intval($poll->pollq_totalvoters); + $poll_active = intval($poll->pollq_active); + $poll_expiry = trim($poll->pollq_expiry); + if(empty($poll_expiry)) { + $poll_expiry_text = __('No Expiry', 'wp-polls'); + } else { + $poll_expiry_text = mysql2date(sprintf(__('%s @ %s', 'wp-polls'), get_option('date_format'), get_option('time_format')), gmdate('Y-m-d H:i:s', $poll_expiry)); + } + if($i%2 == 0) { + $style = 'class="alternate"'; + } else { + $style = ''; + } + if($current_poll > 0) { + if($current_poll == $poll_id) { + $style = 'class="highlight"'; + } + } elseif($current_poll == 0) { + if($poll_id == $latest_poll) { + $style = 'class="highlight"'; + } + } else if(in_array($poll_id, $multiple_polls)) { + $style = 'class="highlight"'; + } + echo "\n"; + echo ''."\n"; + echo '\n"; + echo '\n"; + echo "\n"; + echo "\n"; + echo '\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo ''; + $i++; + $total_votes+= $poll_totalvotes; + $total_voters+= $poll_totalvoters; + + } + } else { + echo ''; + } + ?> + +
        '.number_format_i18n($poll_id).''; + if($current_poll > 0) { + if($current_poll == $poll_id) { + echo ''.__('Displayed:', 'wp-polls').' '; + } + } elseif($current_poll == 0) { + if($poll_id == $latest_poll) { + echo ''.__('Displayed:', 'wp-polls').' '; + } + } else if(in_array($poll_id, $multiple_polls)) { + echo ''.__('Displayed:', 'wp-polls').' '; + } + echo wp_kses_post( $poll_question )."'.number_format_i18n($poll_totalvoters)."$poll_date$poll_expiry_text'; + if($poll_active == 1) { + _e('Open', 'wp-polls'); + } elseif($poll_active == -1) { + _e('Future', 'wp-polls'); + } else { + _e('Closed', 'wp-polls'); + } + echo "".__('Logs', 'wp-polls')."".__('Edit', 'wp-polls')."".__('Delete', 'wp-polls')."
        '.__('No Polls Found', 'wp-polls').'
        +
        +

         

        + + +
        +

        +
        + + + + + + + + + + + + + + + + + +
        +
        +

         

        + + +
        +

        +
        +
        + get_var( "SELECT COUNT(pollip_id) FROM $wpdb->pollsip" ) ); + if($poll_ips > 0) { + ?> +

        +  

        + + +
        +

        +
        + $poll_bar_style, + 'background' => $poll_bar_background, + 'border' => $poll_bar_border, + 'height' => $poll_bar_height + ); + $poll_ajax_style = array( + 'loading' => isset( $_POST['poll_ajax_style_loading'] ) ? intval( $_POST['poll_ajax_style_loading'] ) : 1, + 'fading' => isset( $_POST['poll_ajax_style_fading'] ) ? intval( $_POST['poll_ajax_style_fading'] ) : 1 + ); + $poll_ans_sortby = isset( $_POST['poll_ans_sortby'] ) && in_array( $_POST['poll_ans_sortby'], array( 'polla_aid', 'polla_answers', 'RAND()' ) ) ? $_POST['poll_ans_sortby'] : 'polla_aid'; + $poll_ans_sortorder = isset( $_POST['poll_ans_sortorder'] ) && in_array( $_POST['poll_ans_sortorder'], array( 'asc', 'desc' ) ) ? $_POST['poll_ans_sortorder'] : 'asc'; + $poll_ans_result_sortby = isset( $_POST['poll_ans_result_sortby'] ) && in_array( $_POST['poll_ans_result_sortby'], array( 'polla_votes', 'polla_aid', 'polla_answers', 'RAND()' ) ) ? $_POST['poll_ans_result_sortby'] : 'polla_votes'; + $poll_ans_result_sortorder = isset( $_POST['poll_ans_result_sortorder'] ) && in_array( $_POST['poll_ans_result_sortorder'], array( 'asc', 'desc' ) ) ? $_POST['poll_ans_result_sortorder'] : 'desc'; + $poll_archive_perpage = isset( $_POST['poll_archive_perpage'] ) ? intval( $_POST['poll_archive_perpage'] ) : 0; + $poll_archive_displaypoll = isset( $_POST['poll_archive_displaypoll'] ) ? intval( $_POST['poll_archive_displaypoll'] ) : 0; + $poll_archive_url = isset( $_POST['poll_archive_url'] ) ? esc_url_raw( strip_tags( trim( $_POST['poll_archive_url'] ) ) ) : ''; + $poll_currentpoll = isset( $_POST['poll_currentpoll'] ) ? intval( $_POST['poll_currentpoll'] ) : 0; + $poll_close = isset( $_POST['poll_close'] ) ? intval( $_POST['poll_close'] ) : 0; + $poll_logging_method = isset( $_POST['poll_logging_method'] ) ? intval( $_POST['poll_logging_method'] ) : 0; + $poll_cookielog_expiry = isset( $_POST['poll_cookielog_expiry'] ) ? intval ($_POST['poll_cookielog_expiry'] ) : 0; + $poll_allowtovote = isset( $_POST['poll_allowtovote'] ) ? intval( $_POST['poll_allowtovote'] ) : 0; + $update_poll_queries = array(); + $update_poll_text = array(); + $update_poll_queries[] = update_option('poll_bar', $poll_bar); + $update_poll_queries[] = update_option('poll_ajax_style', $poll_ajax_style); + $update_poll_queries[] = update_option('poll_ans_sortby', $poll_ans_sortby); + $update_poll_queries[] = update_option('poll_ans_sortorder', $poll_ans_sortorder); + $update_poll_queries[] = update_option('poll_ans_result_sortby', $poll_ans_result_sortby); + $update_poll_queries[] = update_option('poll_ans_result_sortorder', $poll_ans_result_sortorder); + $update_poll_queries[] = update_option('poll_archive_perpage', $poll_archive_perpage); + $update_poll_queries[] = update_option('poll_archive_displaypoll', $poll_archive_displaypoll); + $update_poll_queries[] = update_option('poll_archive_url', $poll_archive_url); + $update_poll_queries[] = update_option('poll_currentpoll', $poll_currentpoll); + $update_poll_queries[] = update_option('poll_close', $poll_close); + $update_poll_queries[] = update_option('poll_logging_method', $poll_logging_method); + $update_poll_queries[] = update_option('poll_cookielog_expiry', $poll_cookielog_expiry); + $update_poll_queries[] = update_option('poll_allowtovote', $poll_allowtovote); + $update_poll_text[] = __('Poll Bar Style', 'wp-polls'); + $update_poll_text[] = __('Poll AJAX Style', 'wp-polls'); + $update_poll_text[] = __('Sort Poll Answers By Option', 'wp-polls'); + $update_poll_text[] = __('Sort Order Of Poll Answers Option', 'wp-polls'); + $update_poll_text[] = __('Sort Poll Results By Option', 'wp-polls'); + $update_poll_text[] = __('Sort Order Of Poll Results Option', 'wp-polls'); + $update_poll_text[] = __('Number Of Polls Per Page To Display In Poll Archive Option', 'wp-polls'); + $update_poll_text[] = __('Type Of Polls To Display In Poll Archive Option', 'wp-polls'); + $update_poll_text[] = __('Poll Archive URL Option', 'wp-polls'); + $update_poll_text[] = __('Show Poll Achive Link Option', 'wp-polls'); + $update_poll_text[] = __('Current Active Poll Option', 'wp-polls'); + $update_poll_text[] = __('Poll Close Option', 'wp-polls'); + $update_poll_text[] = __('Logging Method', 'wp-polls'); + $update_poll_text[] = __('Cookie And Log Expiry Option', 'wp-polls'); + $update_poll_text[] = __('Allow To Vote Option', 'wp-polls'); + $i=0; + $text = ''; + foreach($update_poll_queries as $update_poll_query) { + if($update_poll_query) { + $text .= '

        '.$update_poll_text[$i].' '.__('Updated', 'wp-polls').'

        '; + } + $i++; + } + if(empty($text)) { + $text = '

        '.__('No Poll Option Updated', 'wp-polls').'

        '; + } + cron_polls_place(); +} +?> + +

        '.$text.'

        '; } ?> +
        + +
        +

        + +

        + + + + + + + + + + + + + + + + + + + + + + + +
        + 0 ) { + foreach( $poll_bars as $filename => $pollbar_info ) { + echo '

        '."\n"; + if($pollbar['style'] == $filename) { + echo ''; + } else { + echo ''; + } + echo ''; + echo '

        '."\n"; + } + } + ?> + onclick="update_pollbar('style');" /> +
        #
        #
        px
        + '."\n"; + } else { + echo '
        '."\n"; + } + ?> +
        + + + +

        + + + + + + + + + +
        + +
        + +
        + + +

        + + + + + + + + + +
        + +
        + +
        + + +

        + + + + + + + + + +
        + +
        + +
        + + +

        + + + + + +
        + +
        + + +

        + + + + + + + + + +
        + +
        + + +

        + + + + + + + + + + + + + + + + + +
        + +
        + + +

        + + + + + + + + + +
        : + +
        : + +
        + + +

        + +

        +
        +
        diff --git a/plugins/wp-polls/polls-templates.php b/plugins/wp-polls/polls-templates.php new file mode 100644 index 0000000..f1d7396 --- /dev/null +++ b/plugins/wp-polls/polls-templates.php @@ -0,0 +1,497 @@ +'.$update_poll_text[$i].' '.__('Updated', 'wp-polls').'

        '; + } + $i++; + } + if(empty($text)) { + $text = '

        '.__('No Poll Option Updated', 'wp-polls').'

        '; + } + wp_clear_scheduled_hook('polls_cron'); + if (!wp_next_scheduled('polls_cron')) { + wp_schedule_event(time(), 'daily', 'polls_cron'); + } +} +?> + +

        '.$text.'

        '; } ?> +
        + +
        +

        + +

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + %POLL_ID%
        + +
        + %POLL_ANSWER_ID%
        + +
        + %POLL_QUESTION%
        + +
        + %POLL_ANSWER%
        + +
        + %POLL_TOTALVOTES%
        + +
        + %POLL_ANSWER_TEXT%
        + +
        + %POLL_RESULT_URL%
        + +
        + %POLL_ANSWER_VOTES%
        + +
        + %POLL_MOST_ANSWER%
        + +
        + %POLL_ANSWER_PERCENTAGE%
        + +
        + %POLL_MOST_VOTES%
        + +
        + %POLL_ANSWER_IMAGEWIDTH%
        + +
        + %POLL_MOST_PERCENTAGE%
        + +
        + %POLL_LEAST_ANSWER%
        + +
        + %POLL_START_DATE%
        + +
        + %POLL_LEAST_VOTES%
        + +
        + %POLL_END_DATE%
        + +
        + %POLL_LEAST_PERCENTAGE%
        + +
        + %POLL_MULTIPLE_ANS_MAX%
        + +
        + %POLL_CHECKBOX_RADIO%
        + +
        + %POLL_TOTALVOTERS%
        + +
        + %POLL_ARCHIVE_URL%
        + +
        + %POLL_TOTALVOTES% and %POLL_TOTALVOTERS% will be different if your poll supports multiple answers. If your poll allows only single answer, both value will be the same.', 'wp-polls'); ?> +
        + + +

        + + + + + + + + + + + + + +
        +


        +
        +

        - %POLL_ID%

        +

        - %POLL_QUESTION%

        +

        - %POLL_START_DATE%

        +

        - %POLL_END_DATE%

        +

        - %POLL_TOTALVOTES%

        +

        - %POLL_TOTALVOTERS%

        +

        - %POLL_MULTIPLE_ANS_MAX%


        + +
        +


        +
        +

        - %POLL_ID%

        +

        - %POLL_ANSWER_ID%

        +

        - %POLL_ANSWER%

        +

        - %POLL_ANSWER_VOTES%

        +

        - %POLL_CHECKBOX_RADIO%


        + +
        +


        +
        +

        - %POLL_ID%

        +

        - %POLL_RESULT_URL%

        +

        - %POLL_MULTIPLE_ANS_MAX%


        + +
        + + +

        + + + + + + + + + + + + + + + + + + + + + +
        +


        +
        +

        - %POLL_ID%

        +

        - %POLL_QUESTION%

        +

        - %POLL_START_DATE%

        +

        - %POLL_END_DATE%

        +

        - %POLL_TOTALVOTES%

        +

        - %POLL_TOTALVOTERS%

        +

        - %POLL_MULTIPLE_ANS_MAX%


        + +
        +


        +
        +

        - %POLL_ID%

        +

        - %POLL_ANSWER_ID%

        +

        - %POLL_ANSWER%

        +

        - %POLL_ANSWER_TEXT%

        +

        - %POLL_ANSWER_VOTES%

        +

        - %POLL_ANSWER_PERCENTAGE%

        +

        - %POLL_ANSWER_IMAGEWIDTH%


        + +
        +


        +
        +

        - %POLL_ID%

        +

        - %POLL_ANSWER_ID%

        +

        - %POLL_ANSWER%

        +

        - %POLL_ANSWER_TEXT%

        +

        - %POLL_ANSWER_VOTES%

        + - %POLL_ANSWER_PERCENTAGE%

        +

        - %POLL_ANSWER_IMAGEWIDTH%


        + +
        +


        +
        +

        - %POLL_ID%

        +

        - %POLL_START_DATE%

        +

        - %POLL_END_DATE%

        +

        - %POLL_TOTALVOTES%

        +

        - %POLL_TOTALVOTERS%

        +

        - %POLL_MOST_ANSWER%

        +

        - %POLL_MOST_VOTES%

        +

        - %POLL_MOST_PERCENTAGE%

        +

        - %POLL_LEAST_ANSWER%

        +

        - %POLL_LEAST_VOTES%

        +

        - %POLL_LEAST_PERCENTAGE%

        +

        - %POLL_MULTIPLE_ANS_MAX%


        + +
        +


        +
        +

        - %POLL_ID%

        +

        - %POLL_START_DATE%

        +

        - %POLL_END_DATE%

        +

        - %POLL_TOTALVOTES%

        +

        - %POLL_TOTALVOTERS%

        +

        - %POLL_MOST_ANSWER%

        +

        - %POLL_MOST_VOTES%

        +

        - %POLL_MOST_PERCENTAGE%

        +

        - %POLL_LEAST_ANSWER%

        +

        - %POLL_LEAST_VOTES%

        +

        - %POLL_LEAST_PERCENTAGE%

        +

        - %POLL_MULTIPLE_ANS_MAX%


        + +
        + + +

        + + + + + + + + + + + + + + + + + + + + + +
        +


        +
        +

        - %POLL_ARCHIVE_URL%


        + +
        +


        +
        +

        -


        + +
        +


        +
        +

        - %POLL_START_DATE%

        +

        - %POLL_END_DATE%

        +

        - %POLL_TOTALVOTES%

        +

        - %POLL_TOTALVOTERS%

        +

        - %POLL_MOST_ANSWER%

        +

        - %POLL_MOST_VOTES%

        +

        - %POLL_MOST_PERCENTAGE%

        +

        - %POLL_LEAST_ANSWER%

        +

        - %POLL_LEAST_VOTES%

        +

        - %POLL_LEAST_PERCENTAGE%

        +

        - %POLL_MULTIPLE_ANS_MAX%


        + +
        +


        +
        +

        -


        + +
        +


        +
        +

        -


        + +
        + + +

        + + + + + + + + + +
        +


        +
        +

        -


        + +
        +


        +
        +

        -

        + +

        +

        + +

        +
        +
        \ No newline at end of file diff --git a/plugins/wp-polls/readme.txt b/plugins/wp-polls/readme.txt new file mode 100644 index 0000000..c7c55e3 --- /dev/null +++ b/plugins/wp-polls/readme.txt @@ -0,0 +1,194 @@ +=== WP-Polls === +Contributors: GamerZ +Donate link: http://lesterchan.net/site/donation/ +Tags: poll, polls, polling, vote, booth, democracy, ajax, survey, post, widget +Requires at least: 4.0 +Tested up to: 4.5 +Stable tag: 2.73.1 + +Adds an AJAX poll system to your WordPress blog. You can also easily add a poll into your WordPress's blog post/page. + +== Description == +WP-Polls is extremely customizable via templates and css styles and there are tons of options for you to choose to ensure that WP-Polls runs the way you wanted. It now supports multiple selection of answers. + += Build Status = +[![Build Status](https://travis-ci.org/lesterchan/wp-polls.svg?branch=master)](https://travis-ci.org/lesterchan/wp-polls) + += Development = +[https://github.com/lesterchan/wp-polls](https://github.com/lesterchan/wp-polls "https://github.com/lesterchan/wp-polls") + += Translations = +[http://dev.wp-plugins.org/browser/wp-polls/i18n/](http://dev.wp-plugins.org/browser/wp-polls/i18n/ "http://dev.wp-plugins.org/browser/wp-polls/i18n/") + += Credits = +* Plugin icon by [Freepik](http://www.freepik.com) from [Flaticon](http://www.flaticon.com) + += Donations = +I spent most of my free time creating, updating, maintaining and supporting these plugins, if you really love my plugins and could spare me a couple of bucks, I will really appreciate it. If not feel free to use it without any obligations. + +== Changelog == += Version 2.73.1 = +* FIXED: Allow local IP +* FIXED: XSS on Poll bar option. Props [Netsparker Web Application Security Scanner](https://www.netsparker.com/) +* FIXED: Stricter Poll pptions check + += Version 2.73 = +* NEW: Display Poll Questions at the top of the Poll Logs table +* FIXED: Remove slashes + += Version 2.72 = +* NEW: Use translate.wordpress.org to translate the plugin +* FIXED: SQL Injection fixes. Props [Jay Dansand](https://github.com/jaydansand) +* FIXED: Use $wpdb->insert(), $wpdb->update() and $wpdb->delete() as much as possible +* FIXED Remove poll_archive_show option from UI + += Version 2.71 = +* FIXED: Use wp_kses_post() to get filter always bad tags + += Version 2.70 = +* NEW: Add wp_polls_vote_poll_success action hook +* NEW: Add wp_polls_add_poll, wp_polls_update_poll, wp_polls_delete_poll action hooks +* FIXED: PHP Notices +* FIXED: Removed not needed wp_print_scripts +* FIXED: Use esc_attr() and esc_textarea() instead of htmlspecialchars(). Props [Govind Singh](https://in.linkedin.com/pub/govind-singh/21/1a9/bab) + +== Installation == + +1. Open `wp-content/plugins` Folder +2. Put: `Folder: wp-polls` +3. Activate `WP-Polls` Plugin +4. Go to `WP-Admin -> WP-Polls` + += General Usage (Without Widget) = +1. Open `wp-content/themes//sidebar.php` +2. Add: + +<?php if (function_exists('vote_poll') && !in_pollarchive()): ?> +  <li> +    <h2>Polls</h2> +    <ul> +      <li><?php get_poll();?></li> +    </ul> +    <?php display_polls_archive_link(); ?> +  </li> +<?php endif; ?> + + +* To show specific poll, use `` where 2 is your poll id. +* To show random poll, use `` +* To embed a specific poll in your post, use `[poll id="2"]` where 2 is your poll id. +* To embed a random poll in your post, use `[poll id="-2"]` +* To embed a specific poll's result in your post, use `[poll id="2" type="result"]` where 2 is your poll id. + += General Usage (With Widget) = +1. Go to `WP-Admin -> Appearance -> Widgets`. +2. You can add the Polls Widget by clicking on the 'Add' link besides it. +3. After adding, you can configure the Polls Widget by clicking on the 'Edit' link besides it. +4. Click 'Save Changes'. +5. Scroll down for instructions on how to create a Polls Archive. + +== Upgrading == + +1. Deactivate `WP-Polls` Plugin +2. Open `wp-content/plugins` Folder +3. Put/Overwrite: `Folder: wp-polls` +4. Activate `WP-Polls` Plugin +5. Go to `WP-Admin -> Polls -> Polls Templates` and restore all the template variables to `Default` +6. Go to `WP-Admin -> Appearance -> Widgets` and re-add the Poll Widget + +== Upgrade Notice == + +N/A + +== Screenshots == + +1. Admin - All Poll +2. Admin - Manage Polls +3. Admin - Poll Options +4. Admin - Poll Templates +5. Admin - Poll Widget +6. Admin - Uninstall Poll +7. Poll - Single Poll Answer +8. Poll - Mutiple Poll Answers +9. Poll - Results +10. Poll - Archive + +== Frequently Asked Questions == + + += How To Add A Polls Archive? = +1. Go to `WP-Admin -> Pages -> Add New`. +2. Type any title you like in the post's title area. +3. If you ARE using nice permalinks, after typing the title, WordPress will generate the permalink to the page. You will see an 'Edit' link just beside the permalink. +4. Click 'Edit' and type in `pollsarchive` in the text field and click 'Save'. +5. Type `[page_polls]` in the post's content area. +6. Click 'Publish'. + +* If you ARE NOT using nice permalinks, you need to go to `WP-Admin -> Polls -> Poll Options` and under `Poll Archive -> Polls Archive URL`, you need to fill in the URL to the Polls Archive Page you created above. + += Why doesn't my poll's answers add up to 100%? = +* It is because of rounding issues. To make it always round up to 100%, the last poll's answer will get the remainding percentage added to it. To enable this feature, add this to your theme's functions.php: `add_filter( 'wp_polls_round_percentage', '__return_true' );` + += How Does WP-Polls Load CSS? = +* WP-Polls will load `polls-css.css` from your theme's directory if it exists. +* If it doesn't exists, it will just load the default `polls-css.css` that comes with WP-Polls. +* This will allow you to upgrade WP-Polls without worrying about overwriting your polls styles that you have created. + += Why In Internet Explorer (IE) The poll's Text Appear Jagged? = +* To solve this issue, Open poll-css.css +* Find: `/* background-color: #ffffff; */` +* Replace: `background-color: #ffffff;` (where #ffffff should be your background color for the poll.) + += How Do I Have Individual Colors For Each Poll's Bar? = +* Courtesy Of [TreedBox.com](http://treedbox.com "TreedBox.com") +* Open poll-css.css +* Add to the end of the file: + + +.wp-polls-ul li:nth-child(01) .pollbar{ background:#8FA0C5} +.wp-polls-ul li:nth-child(02) .pollbar{ background:#FF8} +.wp-polls-ul li:nth-child(03) .pollbar{ background:#ff8a3b} +.wp-polls-ul li:nth-child(04) .pollbar{ background:#a61e2a} +.wp-polls-ul li:nth-child(05) .pollbar{ background:#4ebbff} +.wp-polls-ul li:nth-child(06) .pollbar{ background:#fbca54} +.wp-polls-ul li:nth-child(07) .pollbar{ background:#aad34f} +.wp-polls-ul li:nth-child(08) .pollbar{ background:#66cc9a} +.wp-polls-ul li:nth-child(09) .pollbar{ background:#98CBCB} +.wp-polls-ul li:nth-child(10) .pollbar{ background:#a67c52} +.wp-polls-ul li .pollbar{ transition: background 0.7s ease-in-out } +.wp-polls-ul li .pollbar:hover{ background:#F00 } + + += Polls Stats (Outside WP Loop) = + += To Display Total Polls = +* Use: + +<?php if (function_exists('get_pollquestions')): ?> +  <?php get_pollquestions(); ?> +<?php endif; ?> + + += To Display Total Poll Answers = +* Use: + +<?php if (function_exists('get_pollanswers')): ?> +  <?php get_pollanswers(); ?> +<?php endif; ?> + + += To Display Total Poll Votes = +* Use: + +<?php if (function_exists('get_pollvotes')): ?> +  <?php get_pollvotes(); ?> +<?php endif; ?> + + += To Display Total Poll Voters = +* Use: + +<?php if (function_exists('get_pollvoters')): ?> +  <?php get_pollvoters(); ?> +<?php endif; ?> + diff --git a/plugins/wp-polls/tinymce/plugins/polls/plugin.js b/plugins/wp-polls/tinymce/plugins/polls/plugin.js new file mode 100644 index 0000000..4c9a8a1 --- /dev/null +++ b/plugins/wp-polls/tinymce/plugins/polls/plugin.js @@ -0,0 +1,21 @@ +(function() { + tinymce.PluginManager.add('polls', function(editor) { + editor.addCommand('WP-Polls-Insert_Poll', function() { + var poll_id = jQuery.trim(prompt(tinymce.translate('Enter Poll ID'))); + while(isNaN(poll_id)) { + poll_id = jQuery.trim(prompt(tinymce.translate('Error: Poll ID must be numeric') + "\n\n" + tinymce.translate('Please enter Poll ID again'))); + } + if (poll_id >= -1 && poll_id != null && poll_id != "") { + editor.insertContent('[poll id="' + poll_id + '"]'); + } + }); + editor.addButton('polls', { + text: false, + tooltip: tinymce.translate('Insert Poll'), + icon: 'polls dashicons-before dashicons-chart-bar', + onclick: function() { + tinyMCE.activeEditor.execCommand('WP-Polls-Insert_Poll') + } + }); + }); +})(); \ No newline at end of file diff --git a/plugins/wp-polls/tinymce/plugins/polls/plugin.min.js b/plugins/wp-polls/tinymce/plugins/polls/plugin.min.js new file mode 100644 index 0000000..ec8e5d9 --- /dev/null +++ b/plugins/wp-polls/tinymce/plugins/polls/plugin.min.js @@ -0,0 +1 @@ +(function(){tinymce.PluginManager.add("polls",function(b){b.addCommand("WP-Polls-Insert_Poll",function(){for(var a=jQuery.trim(prompt(tinymce.translate("Enter Poll ID")));isNaN(a);)a=jQuery.trim(prompt(tinymce.translate("Error: Poll ID must be numeric")+"\n\n"+tinymce.translate("Please enter Poll ID again")));-1<=a&&null!=a&&""!=a&&b.insertContent('[poll id="'+a+'"]')});b.addButton("polls",{text:!1,tooltip:tinymce.translate("Insert Poll"),icon:"polls dashicons-before dashicons-chart-bar",onclick:function(){tinyMCE.activeEditor.execCommand("WP-Polls-Insert_Poll")}})})})(); \ No newline at end of file diff --git a/plugins/wp-polls/uninstall.php b/plugins/wp-polls/uninstall.php new file mode 100644 index 0000000..2b421c0 --- /dev/null +++ b/plugins/wp-polls/uninstall.php @@ -0,0 +1,84 @@ + 0 ) { + foreach( $option_names as $option_name ) { + delete_option( $option_name ); + plugin_uninstalled(); + } + } + } + } + + restore_current_blog(); +} else { + if( sizeof( $option_names ) > 0 ) { + foreach( $option_names as $option_name ) { + delete_option( $option_name ); + plugin_uninstalled(); + } + } +} + +/** + * Delete plugin table when uninstalled + * + * @access public + * @return void + */ +function plugin_uninstalled() { + global $wpdb; + + $table_names = array( 'pollsq', 'pollsa', 'pollsip' ); + if( sizeof( $table_names ) > 0 ) { + foreach( $table_names as $table_name ) { + $table = $wpdb->prefix . $table_name; + $wpdb->query( "DROP TABLE IF EXISTS $table" ); + } + } +} \ No newline at end of file diff --git a/plugins/wp-polls/wp-polls.php b/plugins/wp-polls/wp-polls.php new file mode 100644 index 0000000..a41a424 --- /dev/null +++ b/plugins/wp-polls/wp-polls.php @@ -0,0 +1,1888 @@ +pollsq = $wpdb->prefix.'pollsq'; +$wpdb->pollsa = $wpdb->prefix.'pollsa'; +$wpdb->pollsip = $wpdb->prefix.'pollsip'; + + +### Function: Poll Administration Menu +add_action( 'admin_menu', 'poll_menu' ); +function poll_menu() { + add_menu_page( __( 'Polls', 'wp-polls' ), __( 'Polls', 'wp-polls' ), 'manage_polls', 'wp-polls/polls-manager.php', '', 'dashicons-chart-bar' ); + + add_submenu_page( 'wp-polls/polls-manager.php', __( 'Manage Polls', 'wp-polls'), __( 'Manage Polls', 'wp-polls' ), 'manage_polls', 'wp-polls/polls-manager.php' ); + add_submenu_page( 'wp-polls/polls-manager.php', __( 'Add Poll', 'wp-polls'), __( 'Add Poll', 'wp-polls' ), 'manage_polls', 'wp-polls/polls-add.php' ); + add_submenu_page( 'wp-polls/polls-manager.php', __( 'Poll Options', 'wp-polls'), __( 'Poll Options', 'wp-polls' ), 'manage_polls', 'wp-polls/polls-options.php' ); + add_submenu_page( 'wp-polls/polls-manager.php', __( 'Poll Templates', 'wp-polls'), __( 'Poll Templates', 'wp-polls' ), 'manage_polls', 'wp-polls/polls-templates.php' ); +} + + +### Function: Get Poll +function get_poll($temp_poll_id = 0, $display = true) { + global $wpdb, $polls_loaded; + // Poll Result Link + if(isset($_GET['pollresult'])) { + $pollresult_id = intval($_GET['pollresult']); + } else { + $pollresult_id = 0; + } + $temp_poll_id = intval($temp_poll_id); + // Check Whether Poll Is Disabled + if(intval(get_option('poll_currentpoll')) == -1) { + if($display) { + echo removeslashes(get_option('poll_template_disable')); + return; + } else { + return removeslashes(get_option('poll_template_disable')); + } + // Poll Is Enabled + } else { + do_action('wp_polls_get_poll'); + // Hardcoded Poll ID Is Not Specified + switch($temp_poll_id) { + // Random Poll + case -2: + $poll_id = $wpdb->get_var("SELECT pollq_id FROM $wpdb->pollsq WHERE pollq_active = 1 ORDER BY RAND() LIMIT 1"); + break; + // Latest Poll + case 0: + // Random Poll + if(intval(get_option('poll_currentpoll')) == -2) { + $random_poll_id = $wpdb->get_var("SELECT pollq_id FROM $wpdb->pollsq WHERE pollq_active = 1 ORDER BY RAND() LIMIT 1"); + $poll_id = intval($random_poll_id); + if($pollresult_id > 0) { + $poll_id = $pollresult_id; + } elseif(intval($_POST['poll_id']) > 0) { + $poll_id = intval($_POST['poll_id']); + } + // Current Poll ID Is Not Specified + } elseif(intval(get_option('poll_currentpoll')) == 0) { + // Get Lastest Poll ID + $poll_id = intval(get_option('poll_latestpoll')); + } else { + // Get Current Poll ID + $poll_id = intval(get_option('poll_currentpoll')); + } + break; + // Take Poll ID From Arguments + default: + $poll_id = $temp_poll_id; + } + } + + // Assign All Loaded Poll To $polls_loaded + if(empty($polls_loaded)) { + $polls_loaded = array(); + } + if(!in_array($poll_id, $polls_loaded)) { + $polls_loaded[] = $poll_id; + } + + // User Click on View Results Link + if($pollresult_id == $poll_id) { + if($display) { + echo display_pollresult($poll_id); + return; + } else { + return display_pollresult($poll_id); + } + // Check Whether User Has Voted + } else { + $poll_active = $wpdb->get_var( $wpdb->prepare( "SELECT pollq_active FROM $wpdb->pollsq WHERE pollq_id = %d", $poll_id ) ); + $poll_active = intval($poll_active); + $check_voted = check_voted($poll_id); + if($poll_active == 0) { + $poll_close = intval(get_option('poll_close')); + } else { + $poll_close = 0; + } + if(intval($check_voted) > 0 || (is_array($check_voted) && sizeof($check_voted) > 0) || ($poll_active == 0 && $poll_close == 1)) { + if($display) { + echo display_pollresult($poll_id, $check_voted); + return; + } else { + return display_pollresult($poll_id, $check_voted); + } + } elseif(!check_allowtovote() || ($poll_active == 0 && $poll_close == 3)) { + $disable_poll_js = ''; + if($display) { + echo display_pollvote($poll_id).$disable_poll_js; + return; + } else { + return display_pollvote($poll_id).$disable_poll_js; + } + } elseif($poll_active == 1) { + if($display) { + echo display_pollvote($poll_id); + return; + } else { + return display_pollvote($poll_id); + } + } + } +} + + +### Function: Enqueue Polls JavaScripts/CSS +add_action('wp_enqueue_scripts', 'poll_scripts'); +function poll_scripts() { + if(@file_exists(get_stylesheet_directory().'/polls-css.css')) { + wp_enqueue_style('wp-polls', get_stylesheet_directory_uri().'/polls-css.css', false, WP_POLLS_VERSION, 'all'); + } else { + wp_enqueue_style('wp-polls', plugins_url('wp-polls/polls-css.css'), false, WP_POLLS_VERSION, 'all'); + } + if( is_rtl() ) { + if(@file_exists(get_stylesheet_directory().'/polls-css-rtl.css')) { + wp_enqueue_style('wp-polls-rtl', get_stylesheet_directory_uri().'/polls-css-rtl.css', false, WP_POLLS_VERSION, 'all'); + } else { + wp_enqueue_style('wp-polls-rtl', plugins_url('wp-polls/polls-css-rtl.css'), false, WP_POLLS_VERSION, 'all'); + } + } + $pollbar = get_option( 'poll_bar' ); + if( $pollbar['style'] === 'use_css' ) { + $pollbar_css = '.wp-polls .pollbar {'."\n"; + $pollbar_css .= "\t".'margin: 1px;'."\n"; + $pollbar_css .= "\t".'font-size: '.($pollbar['height']-2).'px;'."\n"; + $pollbar_css .= "\t".'line-height: '.$pollbar['height'].'px;'."\n"; + $pollbar_css .= "\t".'height: '.$pollbar['height'].'px;'."\n"; + $pollbar_css .= "\t".'background: #'.$pollbar['background'].';'."\n"; + $pollbar_css .= "\t".'border: 1px solid #'.$pollbar['border'].';'."\n"; + $pollbar_css .= '}'."\n"; + } else { + $pollbar_css = '.wp-polls .pollbar {'."\n"; + $pollbar_css .= "\t".'margin: 1px;'."\n"; + $pollbar_css .= "\t".'font-size: '.($pollbar['height']-2).'px;'."\n"; + $pollbar_css .= "\t".'line-height: '.$pollbar['height'].'px;'."\n"; + $pollbar_css .= "\t".'height: '.$pollbar['height'].'px;'."\n"; + $pollbar_css .= "\t".'background-image: url(\''.plugins_url('wp-polls/images/'.$pollbar['style'].'/pollbg.gif').'\');'."\n"; + $pollbar_css .= "\t".'border: 1px solid #'.$pollbar['border'].';'."\n"; + $pollbar_css .= '}'."\n"; + } + wp_add_inline_style( 'wp-polls', $pollbar_css ); + $poll_ajax_style = get_option('poll_ajax_style'); + wp_enqueue_script('wp-polls', plugins_url('wp-polls/polls-js.js'), array('jquery'), WP_POLLS_VERSION, true); + wp_localize_script('wp-polls', 'pollsL10n', array( + 'ajax_url' => admin_url('admin-ajax.php'), + 'text_wait' => __('Your last request is still being processed. Please wait a while ...', 'wp-polls'), + 'text_valid' => __('Please choose a valid poll answer.', 'wp-polls'), + 'text_multiple' => __('Maximum number of choices allowed: ', 'wp-polls'), + 'show_loading' => intval($poll_ajax_style['loading']), + 'show_fading' => intval($poll_ajax_style['fading']) + )); +} + + +### Function: Enqueue Polls Stylesheets/JavaScripts In WP-Admin +add_action('admin_enqueue_scripts', 'poll_scripts_admin'); +function poll_scripts_admin($hook_suffix) { + $poll_admin_pages = array('wp-polls/polls-manager.php', 'wp-polls/polls-add.php', 'wp-polls/polls-options.php', 'wp-polls/polls-templates.php', 'wp-polls/polls-uninstall.php'); + if(in_array($hook_suffix, $poll_admin_pages)) { + wp_enqueue_style('wp-polls-admin', plugins_url('wp-polls/polls-admin-css.css'), false, WP_POLLS_VERSION, 'all'); + wp_enqueue_script('wp-polls-admin', plugins_url('wp-polls/polls-admin-js.js'), array('jquery'), WP_POLLS_VERSION, true); + wp_localize_script('wp-polls-admin', 'pollsAdminL10n', array( + 'admin_ajax_url' => admin_url('admin-ajax.php'), + 'text_direction' => is_rtl() ? 'right' : 'left', + 'text_delete_poll' => __('Delete Poll', 'wp-polls'), + 'text_no_poll_logs' => __('No poll logs available.', 'wp-polls'), + 'text_delete_all_logs' => __('Delete All Logs', 'wp-polls'), + 'text_checkbox_delete_all_logs' => __('Please check the \\\'Yes\\\' checkbox if you want to delete all logs.', 'wp-polls'), + 'text_delete_poll_logs' => __('Delete Logs For This Poll Only', 'wp-polls'), + 'text_checkbox_delete_poll_logs' => __('Please check the \\\'Yes\\\' checkbox if you want to delete all logs for this poll ONLY.', 'wp-polls'), + 'text_delete_poll_ans' => __('Delete Poll Answer', 'wp-polls'), + 'text_open_poll' => __('Open Poll', 'wp-polls'), + 'text_close_poll' => __('Close Poll', 'wp-polls'), + 'text_answer' => __('Answer', 'wp-polls'), + 'text_remove_poll_answer' => __('Remove', 'wp-polls') + )); + } +} + + +### Function: Displays Polls Footer In WP-Admin +add_action('admin_footer-post-new.php', 'poll_footer_admin'); +add_action('admin_footer-post.php', 'poll_footer_admin'); +add_action('admin_footer-page-new.php', 'poll_footer_admin'); +add_action('admin_footer-page.php', 'poll_footer_admin'); +function poll_footer_admin() { +?> + += WordPress 2.5 +add_action('init', 'poll_tinymce_addbuttons'); +function poll_tinymce_addbuttons() { + if(!current_user_can('edit_posts') && ! current_user_can('edit_pages')) { + return; + } + if(get_user_option('rich_editing') == 'true') { + add_filter('mce_external_plugins', 'poll_tinymce_addplugin'); + add_filter('mce_buttons', 'poll_tinymce_registerbutton'); + add_filter('wp_mce_translation', 'poll_tinymce_translation'); + } +} +function poll_tinymce_registerbutton($buttons) { + array_push($buttons, 'separator', 'polls'); + return $buttons; +} +function poll_tinymce_addplugin($plugin_array) { + if(WP_DEBUG) { + $plugin_array['polls'] = plugins_url( 'wp-polls/tinymce/plugins/polls/plugin.js?v=' . WP_POLLS_VERSION ); + } else { + $plugin_array['polls'] = plugins_url( 'wp-polls/tinymce/plugins/polls/plugin.min.js?v=' . WP_POLLS_VERSION ); + } + return $plugin_array; +} +function poll_tinymce_translation($mce_translation) { + $mce_translation['Enter Poll ID'] = esc_js(__('Enter Poll ID', 'wp-polls')); + $mce_translation['Error: Poll ID must be numeric'] = esc_js(__('Error: Poll ID must be numeric', 'wp-polls')); + $mce_translation['Please enter Poll ID again'] = esc_js(__('Please enter Poll ID again', 'wp-polls')); + $mce_translation['Insert Poll'] = esc_js(__('Insert Poll', 'wp-polls')); + return $mce_translation; +} + + +### Function: Check Who Is Allow To Vote +function check_allowtovote() { + global $user_ID; + $user_ID = intval($user_ID); + $allow_to_vote = intval(get_option('poll_allowtovote')); + switch($allow_to_vote) { + // Guests Only + case 0: + if($user_ID > 0) { + return false; + } + return true; + break; + // Registered Users Only + case 1: + if($user_ID == 0) { + return false; + } + return true; + break; + // Registered Users And Guests + case 2: + default: + return true; + } +} + + +### Funcrion: Check Voted By Cookie Or IP +function check_voted($poll_id) { + $poll_logging_method = intval(get_option('poll_logging_method')); + switch($poll_logging_method) { + // Do Not Log + case 0: + return 0; + break; + // Logged By Cookie + case 1: + return check_voted_cookie($poll_id); + break; + // Logged By IP + case 2: + return check_voted_ip($poll_id); + break; + // Logged By Cookie And IP + case 3: + $check_voted_cookie = check_voted_cookie($poll_id); + if(!empty($check_voted_cookie)) { + return $check_voted_cookie; + } else { + return check_voted_ip($poll_id); + } + break; + // Logged By Username + case 4: + return check_voted_username($poll_id); + break; + } +} + + +### Function: Check Voted By Cookie +function check_voted_cookie($poll_id) { + if(!empty($_COOKIE["voted_$poll_id"])) { + $get_voted_aids = explode(',', $_COOKIE["voted_$poll_id"]); + } else { + $get_voted_aids = 0; + } + return $get_voted_aids; +} + + +### Function: Check Voted By IP +function check_voted_ip( $poll_id ) { + global $wpdb; + $log_expiry = intval( get_option( 'poll_cookielog_expiry' ) ); + $log_expiry_sql = ''; + if( $log_expiry > 0 ) { + $log_expiry_sql = 'AND (' . current_time('timestamp') . '-(pollip_timestamp+0)) < ' . $log_expiry; + } + // Check IP From IP Logging Database + $get_voted_aids = $wpdb->get_col( $wpdb->prepare( "SELECT pollip_aid FROM $wpdb->pollsip WHERE pollip_qid = %d AND pollip_ip = %s", $poll_id, get_ipaddress() ) . $log_expiry_sql ); + if( $get_voted_aids ) { + return $get_voted_aids; + } else { + return 0; + } +} + + +### Function: Check Voted By Username +function check_voted_username($poll_id) { + global $wpdb, $user_ID; + // Check IP If User Is Guest + if ( ! is_user_logged_in() ) { + return 1; + } + $pollsip_userid = intval( $user_ID ); + $log_expiry = intval( get_option( 'poll_cookielog_expiry' ) ); + $log_expiry_sql = ''; + if( $log_expiry > 0 ) { + $log_expiry_sql = 'AND (' . current_time('timestamp') . '-(pollip_timestamp+0)) < ' . $log_expiry; + } + // Check User ID From IP Logging Database + $get_voted_aids = $wpdb->get_col( $wpdb->prepare( "SELECT pollip_aid FROM $wpdb->pollsip WHERE pollip_qid = %d AND pollip_userid = %d", $poll_id, $pollsip_userid ) . $log_expiry_sql ); + if($get_voted_aids) { + return $get_voted_aids; + } else { + return 0; + } +} + +add_filter('poll_template_voteheader_markup', 'poll_template_vote_markup', 10, 3); +add_filter('poll_template_votebody_markup', 'poll_template_vote_markup', 10, 3); +add_filter('poll_template_votefooter_markup', 'poll_template_vote_markup', 10, 3); + +function poll_template_vote_markup($template, $poll_db_object, $variables) { + + foreach($variables as $placeholder => $value) { + $template = str_replace($placeholder, $value, $template); + } + + return $template; +} + + +### Function: Display Voting Form +function display_pollvote($poll_id, $display_loading = true) { + do_action('wp_polls_display_pollvote'); + global $wpdb; + // Temp Poll Result + $temp_pollvote = ''; + // Get Poll Question Data + $poll_question = $wpdb->get_row( $wpdb->prepare( "SELECT pollq_id, pollq_question, pollq_totalvotes, pollq_timestamp, pollq_expiry, pollq_multiple, pollq_totalvoters FROM $wpdb->pollsq WHERE pollq_id = %d LIMIT 1", $poll_id ) ); + + // Poll Question Variables + $poll_question_text = wp_kses_post( removeslashes( $poll_question->pollq_question ) ); + $poll_question_id = intval($poll_question->pollq_id); + $poll_question_totalvotes = intval($poll_question->pollq_totalvotes); + $poll_question_totalvoters = intval($poll_question->pollq_totalvoters); + $poll_start_date = mysql2date(sprintf(__('%s @ %s', 'wp-polls'), get_option('date_format'), get_option('time_format')), gmdate('Y-m-d H:i:s', $poll_question->pollq_timestamp)); + $poll_expiry = trim($poll_question->pollq_expiry); + if(empty($poll_expiry)) { + $poll_end_date = __('No Expiry', 'wp-polls'); + } else { + $poll_end_date = mysql2date(sprintf(__('%s @ %s', 'wp-polls'), get_option('date_format'), get_option('time_format')), gmdate('Y-m-d H:i:s', $poll_expiry)); + } + $poll_multiple_ans = intval($poll_question->pollq_multiple); + + $template_question = removeslashes(get_option('poll_template_voteheader')); + + $template_question = apply_filters('poll_template_voteheader_markup', $template_question, $poll_question, array( + '%POLL_QUESTION%' => $poll_question_text, + '%POLL_ID%' => $poll_question_id, + '%POLL_TOTALVOTES%' => $poll_question_totalvotes, + '%POLL_TOTALVOTERS%' => $poll_question_totalvoters, + '%POLL_START_DATE%' => $poll_start_date, + '%POLL_END_DATE%' => $poll_end_date, + '%POLL_MULTIPLE_ANS_MAX%' => $poll_multiple_ans > 0 ? $poll_multiple_ans : 1 + )); + + // Get Poll Answers Data + list($order_by, $sort_order) = _polls_get_ans_sort(); + $poll_answers = $wpdb->get_results( $wpdb->prepare( "SELECT polla_aid, polla_qid, polla_answers, polla_votes FROM $wpdb->pollsa WHERE polla_qid = %d ORDER BY $order_by $sort_order", $poll_question_id ) ); + // If There Is Poll Question With Answers + if($poll_question && $poll_answers) { + // Display Poll Voting Form + $temp_pollvote .= "
        \n"; + $temp_pollvote .= "\t
        \n"; + $temp_pollvote .= "\t\t

        \n"; + $temp_pollvote .= "\t\t

        \n"; + if($poll_multiple_ans > 0) { + $temp_pollvote .= "\t\t

        \n"; + } + // Print Out Voting Form Header Template + $temp_pollvote .= "\t\t$template_question\n"; + foreach($poll_answers as $poll_answer) { + // Poll Answer Variables + $poll_answer_id = intval($poll_answer->polla_aid); + $poll_answer_text = wp_kses_post( removeslashes( $poll_answer->polla_answers ) ); + $poll_answer_votes = intval($poll_answer->polla_votes); + $poll_answer_percentage = $poll_question_totalvoters > 0 ? round((($poll_answer_votes/$poll_question_totalvoters)*100)) : 0; + $template_answer = removeslashes(get_option('poll_template_votebody')); + + $template_answer = apply_filters('poll_template_votebody_markup', $template_answer, $poll_answer, array( + '%POLL_ID%' => $poll_question_id, + '%POLL_ANSWER_ID%' => $poll_answer_id, + '%POLL_ANSWER%' => $poll_answer_text, + '%POLL_ANSWER_VOTES%' => number_format_i18n($poll_answer_votes), + '%POLL_ANSWER_PERCENTAGE%' => $poll_answer_percentage, + "%POLL_CHECKBOX_RADIO%" => $poll_multiple_ans > 0 ? 'checkbox' : 'radio' + )); + + // Print Out Voting Form Body Template + $temp_pollvote .= "\t\t$template_answer\n"; + } + // Determine Poll Result URL + $poll_result_url = $_SERVER['REQUEST_URI']; + $poll_result_url = preg_replace('/pollresult=(\d+)/i', 'pollresult='.$poll_question_id, $poll_result_url); + if(isset($_GET['pollresult']) && intval($_GET['pollresult']) == 0) { + if(strpos($poll_result_url, '?') !== false) { + $poll_result_url = "$poll_result_url&pollresult=$poll_question_id"; + } else { + $poll_result_url = "$poll_result_url?pollresult=$poll_question_id"; + } + } + // Voting Form Footer Variables + $template_footer = removeslashes(get_option('poll_template_votefooter')); + + $template_footer = apply_filters('poll_template_votefooter_markup', $template_footer, $poll_question, array( + '%POLL_ID%' => $poll_question_id, + '%POLL_RESULT_URL%' => $poll_result_url, + '%POLL_START_DATE%' => $poll_start_date, + '%POLL_END_DATE%' => $poll_end_date, + '%POLL_MULTIPLE_ANS_MAX%' => $poll_multiple_ans > 0 ? $poll_multiple_ans : 1 + )); + + // Print Out Voting Form Footer Template + $temp_pollvote .= "\t\t$template_footer\n"; + $temp_pollvote .= "\t
        \n"; + $temp_pollvote .= "
        \n"; + if($display_loading) { + $poll_ajax_style = get_option('poll_ajax_style'); + if(intval($poll_ajax_style['loading']) == 1) { + $temp_pollvote .= "
        \"".__('Loading', ".__('Loading', 'wp-polls')." ...
        \n"; + } + } + } else { + $temp_pollvote .= removeslashes(get_option('poll_template_disable')); + } + // Return Poll Vote Template + return $temp_pollvote; +} + + +### Function: Display Results Form +function display_pollresult($poll_id, $user_voted = '', $display_loading = true) { + do_action('wp_polls_display_pollresult'); + global $wpdb; + $poll_id = intval($poll_id); + // User Voted + if(!is_array($user_voted)) { + $user_voted = array(); + } + // Temp Poll Result + $temp_pollresult = ''; + // Most/Least Variables + $poll_most_answer = ''; + $poll_most_votes = 0; + $poll_most_percentage = 0; + $poll_least_answer = ''; + $poll_least_votes = 0; + $poll_least_percentage = 0; + // Get Poll Question Data + $poll_question = $wpdb->get_row( $wpdb->prepare( "SELECT pollq_id, pollq_question, pollq_totalvotes, pollq_active, pollq_timestamp, pollq_expiry, pollq_multiple, pollq_totalvoters FROM $wpdb->pollsq WHERE pollq_id = %d LIMIT 1", $poll_id ) ); + // No poll could be loaded from the database + if (!$poll_question) { + return removeslashes(get_option('poll_template_disable')); + } + // Poll Question Variables + $poll_question_text = wp_kses_post( removeslashes( $poll_question->pollq_question ) ); + $poll_question_id = intval($poll_question->pollq_id); + $poll_question_totalvotes = intval($poll_question->pollq_totalvotes); + $poll_question_totalvoters = intval($poll_question->pollq_totalvoters); + $poll_question_active = intval($poll_question->pollq_active); + $poll_start_date = mysql2date(sprintf(__('%s @ %s', 'wp-polls'), get_option('date_format'), get_option('time_format')), gmdate('Y-m-d H:i:s', $poll_question->pollq_timestamp)); + $poll_expiry = trim($poll_question->pollq_expiry); + if(empty($poll_expiry)) { + $poll_end_date = __('No Expiry', 'wp-polls'); + } else { + $poll_end_date = mysql2date(sprintf(__('%s @ %s', 'wp-polls'), get_option('date_format'), get_option('time_format')), gmdate('Y-m-d H:i:s', $poll_expiry)); + } + $poll_multiple_ans = intval($poll_question->pollq_multiple); + $template_question = removeslashes(get_option('poll_template_resultheader')); + $template_question = str_replace("%POLL_QUESTION%", $poll_question_text, $template_question); + $template_question = str_replace("%POLL_ID%", $poll_question_id, $template_question); + $template_question = str_replace("%POLL_TOTALVOTES%", $poll_question_totalvotes, $template_question); + $template_question = str_replace("%POLL_TOTALVOTERS%", $poll_question_totalvoters, $template_question); + $template_question = str_replace("%POLL_START_DATE%", $poll_start_date, $template_question); + $template_question = str_replace("%POLL_END_DATE%", $poll_end_date, $template_question); + if($poll_multiple_ans > 0) { + $template_question = str_replace("%POLL_MULTIPLE_ANS_MAX%", $poll_multiple_ans, $template_question); + } else { + $template_question = str_replace("%POLL_MULTIPLE_ANS_MAX%", '1', $template_question); + } + // Get Poll Answers Data + list($order_by, $sort_order) = _polls_get_ans_result_sort(); + $poll_answers = $wpdb->get_results( $wpdb->prepare( "SELECT polla_aid, polla_answers, polla_votes FROM $wpdb->pollsa WHERE polla_qid = %d ORDER BY $order_by $sort_order", $poll_question_id ) ); + // If There Is Poll Question With Answers + if($poll_question && $poll_answers) { + // Store The Percentage Of The Poll + $poll_answer_percentage_array = array(); + // Is The Poll Total Votes 0? + $poll_totalvotes_zero = true; + if($poll_question_totalvotes > 0) { + $poll_totalvotes_zero = false; + } + // Print Out Result Header Template + $temp_pollresult .= "
        \n"; + $temp_pollresult .= "\t\t$template_question\n"; + foreach($poll_answers as $poll_answer) { + // Poll Answer Variables + $poll_answer_id = intval($poll_answer->polla_aid); + $poll_answer_text = wp_kses_post( removeslashes($poll_answer->polla_answers) ); + $poll_answer_votes = intval($poll_answer->polla_votes); + // Calculate Percentage And Image Bar Width + if(!$poll_totalvotes_zero) { + if($poll_answer_votes > 0) { + $poll_answer_percentage = round((($poll_answer_votes/$poll_question_totalvoters)*100)); + $poll_answer_imagewidth = round($poll_answer_percentage); + if($poll_answer_imagewidth == 100) { + $poll_answer_imagewidth = 99; + } + } else { + $poll_answer_percentage = 0; + $poll_answer_imagewidth = 1; + } + } else { + $poll_answer_percentage = 0; + $poll_answer_imagewidth = 1; + } + // Make Sure That Total Percentage Is 100% By Adding A Buffer To The Last Poll Answer + $round_percentage = apply_filters( 'wp_polls_round_percentage', false ); + if( $round_percentage ) { + if ( $poll_multiple_ans === 0 ) { + $poll_answer_percentage_array[] = $poll_answer_percentage; + if ( sizeof( $poll_answer_percentage_array ) === sizeof( $poll_answers ) ) { + $percentage_error_buffer = 100 - array_sum( $poll_answer_percentage_array ); + $poll_answer_percentage = $poll_answer_percentage + $percentage_error_buffer; + if ( $poll_answer_percentage < 0 ) { + $poll_answer_percentage = 0; + } + } + } + } + + // Let User See What Options They Voted + if(in_array($poll_answer_id, $user_voted)) { + // Results Body Variables + $template_answer = removeslashes(get_option('poll_template_resultbody2')); + $template_answer = str_replace("%POLL_ID%", $poll_question_id, $template_answer); + $template_answer = str_replace("%POLL_ANSWER_ID%", $poll_answer_id, $template_answer); + $template_answer = str_replace("%POLL_ANSWER%", $poll_answer_text, $template_answer); + $template_answer = str_replace("%POLL_ANSWER_TEXT%", htmlspecialchars(strip_tags($poll_answer_text)), $template_answer); + $template_answer = str_replace("%POLL_ANSWER_VOTES%", number_format_i18n($poll_answer_votes), $template_answer); + $template_answer = str_replace("%POLL_ANSWER_PERCENTAGE%", $poll_answer_percentage, $template_answer); + $template_answer = str_replace("%POLL_ANSWER_IMAGEWIDTH%", $poll_answer_imagewidth, $template_answer); + // Print Out Results Body Template + $temp_pollresult .= "\t\t$template_answer\n"; + } else { + // Results Body Variables + $template_answer = removeslashes(get_option('poll_template_resultbody')); + $template_answer = str_replace("%POLL_ID%", $poll_question_id, $template_answer); + $template_answer = str_replace("%POLL_ANSWER_ID%", $poll_answer_id, $template_answer); + $template_answer = str_replace("%POLL_ANSWER%", $poll_answer_text, $template_answer); + $template_answer = str_replace("%POLL_ANSWER_TEXT%", htmlspecialchars(strip_tags($poll_answer_text)), $template_answer); + $template_answer = str_replace("%POLL_ANSWER_VOTES%", number_format_i18n($poll_answer_votes), $template_answer); + $template_answer = str_replace("%POLL_ANSWER_PERCENTAGE%", $poll_answer_percentage, $template_answer); + $template_answer = str_replace("%POLL_ANSWER_IMAGEWIDTH%", $poll_answer_imagewidth, $template_answer); + // Print Out Results Body Template + $temp_pollresult .= "\t\t$template_answer\n"; + } + // Get Most Voted Data + if($poll_answer_votes > $poll_most_votes) { + $poll_most_answer = $poll_answer_text; + $poll_most_votes = $poll_answer_votes; + $poll_most_percentage = $poll_answer_percentage; + } + // Get Least Voted Data + if($poll_least_votes == 0) { + $poll_least_votes = $poll_answer_votes; + } + if($poll_answer_votes <= $poll_least_votes) { + $poll_least_answer = $poll_answer_text; + $poll_least_votes = $poll_answer_votes; + $poll_least_percentage = $poll_answer_percentage; + } + } + // Results Footer Variables + if(!empty($user_voted) || $poll_question_active == 0 || !check_allowtovote()) { + $template_footer = removeslashes(get_option('poll_template_resultfooter')); + } else { + $template_footer = removeslashes(get_option('poll_template_resultfooter2')); + } + $template_footer = str_replace("%POLL_START_DATE%", $poll_start_date, $template_footer); + $template_footer = str_replace("%POLL_END_DATE%", $poll_end_date, $template_footer); + $template_footer = str_replace("%POLL_ID%", $poll_question_id, $template_footer); + $template_footer = str_replace("%POLL_TOTALVOTES%", number_format_i18n($poll_question_totalvotes), $template_footer); + $template_footer = str_replace("%POLL_TOTALVOTERS%", number_format_i18n($poll_question_totalvoters), $template_footer); + $template_footer = str_replace("%POLL_MOST_ANSWER%", $poll_most_answer, $template_footer); + $template_footer = str_replace("%POLL_MOST_VOTES%", number_format_i18n($poll_most_votes), $template_footer); + $template_footer = str_replace("%POLL_MOST_PERCENTAGE%", $poll_most_percentage, $template_footer); + $template_footer = str_replace("%POLL_LEAST_ANSWER%", $poll_least_answer, $template_footer); + $template_footer = str_replace("%POLL_LEAST_VOTES%", number_format_i18n($poll_least_votes), $template_footer); + $template_footer = str_replace("%POLL_LEAST_PERCENTAGE%", $poll_least_percentage, $template_footer); + if($poll_multiple_ans > 0) { + $template_footer = str_replace("%POLL_MULTIPLE_ANS_MAX%", $poll_multiple_ans, $template_footer); + } else { + $template_footer = str_replace("%POLL_MULTIPLE_ANS_MAX%", '1', $template_footer); + } + // Print Out Results Footer Template + $temp_pollresult .= "\t\t$template_footer\n"; + $temp_pollresult .= "\t\t\n"; + $temp_pollresult .= "
        \n"; + if($display_loading) { + $poll_ajax_style = get_option('poll_ajax_style'); + if(intval($poll_ajax_style['loading']) == 1) { + $temp_pollresult .= "
        \"".__('Loading', ".__('Loading', 'wp-polls')." ...
        \n"; + } + } + } else { + $temp_pollresult .= removeslashes(get_option('poll_template_disable')); + } + // Return Poll Result + return $temp_pollresult; +} + + +### Function: Get IP Address +if(!function_exists('get_ipaddress')) { + function get_ipaddress() { + foreach ( array( 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR' ) as $key ) { + if ( array_key_exists( $key, $_SERVER ) === true ) { + foreach ( explode( ',', $_SERVER[$key] ) as $ip ) { + $ip = trim( $ip ); + if ( filter_var( $ip, FILTER_VALIDATE_IP ) !== false ) { + return esc_attr( $ip ); + } + } + } + } + } +} + + +### Function: Short Code For Inserting Polls Archive Into Page +add_shortcode('page_polls', 'poll_page_shortcode'); +function poll_page_shortcode($atts) { + return polls_archive(); +} + + +### Function: Short Code For Inserting Polls Into Posts +add_shortcode( 'poll', 'poll_shortcode' ); +function poll_shortcode( $atts ) { + $attributes = shortcode_atts( array( 'id' => 0, 'type' => 'vote' ), $atts ); + if( ! is_feed() ) { + $id = intval( $attributes['id'] ); + + // To maintain backward compatibility with [poll=1]. Props @tz-ua + if( ! $id && isset( $atts[0] ) ) { + $id = intval( trim( $atts[0], '="\'' ) ); + } + + if( $attributes['type'] === 'vote' ) { + return get_poll( $id, false ); + } elseif( $attributes['type'] === 'result' ) { + return display_pollresult( $id ); + } + } else { + return __( 'Note: There is a poll embedded within this post, please visit the site to participate in this post\'s poll.', 'wp-polls' ); + } +} + + +### Function: Get Poll Question Based On Poll ID +if(!function_exists('get_poll_question')) { + function get_poll_question($poll_id) { + global $wpdb; + $poll_id = intval( $poll_id ); + $poll_question = $wpdb->get_var( $wpdb->prepare( "SELECT pollq_question FROM $wpdb->pollsq WHERE pollq_id = %d LIMIT 1", $poll_id ) ); + return wp_kses_post( removeslashes( $poll_question ) ); + } +} + + +### Function: Get Poll Total Questions +if(!function_exists('get_pollquestions')) { + function get_pollquestions($display = true) { + global $wpdb; + $totalpollq = intval($wpdb->get_var("SELECT COUNT(pollq_id) FROM $wpdb->pollsq")); + if($display) { + echo $totalpollq; + } else { + return $totalpollq; + } + } +} + + +### Function: Get Poll Total Answers +if(!function_exists('get_pollanswers')) { + function get_pollanswers($display = true) { + global $wpdb; + $totalpolla = intval($wpdb->get_var("SELECT COUNT(polla_aid) FROM $wpdb->pollsa")); + if($display) { + echo $totalpolla; + } else { + return $totalpolla; + } + } +} + + +### Function: Get Poll Total Votes +if(!function_exists('get_pollvotes')) { + function get_pollvotes($display = true) { + global $wpdb; + $totalvotes = intval($wpdb->get_var("SELECT SUM(pollq_totalvotes) FROM $wpdb->pollsq")); + if($display) { + echo $totalvotes; + } else { + return $totalvotes; + } + } +} + + +### Function: Get Poll Total Voters +if(!function_exists('get_pollvoters')) { + function get_pollvoters($display = true) { + global $wpdb; + $totalvoters = intval($wpdb->get_var("SELECT SUM(pollq_totalvoters) FROM $wpdb->pollsq")); + if($display) { + echo $totalvoters; + } else { + return $totalvoters; + } + } +} + + +### Function: Check Voted To Get Voted Answer +function check_voted_multiple($poll_id, $polls_ips) { + if(!empty($_COOKIE["voted_$poll_id"])) { + return explode(',', $_COOKIE["voted_$poll_id"]); + } else { + if($polls_ips) { + return $polls_ips; + } else { + return array(); + } + } +} + + +### Function: Polls Archive Link +function polls_archive_link($page) { + $polls_archive_url = get_option('poll_archive_url'); + if($page > 0) { + if(strpos($polls_archive_url, '?') !== false) { + $polls_archive_url = "$polls_archive_url&poll_page=$page"; + } else { + $polls_archive_url = "$polls_archive_url?poll_page=$page"; + } + } + return $polls_archive_url; +} + + +### Function: Displays Polls Archive Link +function display_polls_archive_link($display = true) { + $template_pollarchivelink = removeslashes(get_option('poll_template_pollarchivelink')); + $template_pollarchivelink = str_replace("%POLL_ARCHIVE_URL%", get_option('poll_archive_url'), $template_pollarchivelink); + if($display) { + echo $template_pollarchivelink; + } else{ + return $template_pollarchivelink; + } +} + + +### Function: Display Polls Archive +function polls_archive() { + do_action('wp_polls_polls_archive'); + global $wpdb, $in_pollsarchive; + // Polls Variables + $in_pollsarchive = true; + $page = isset($_GET['poll_page']) ? intval($_GET['poll_page']) : 0; + $polls_questions = array(); + $polls_answers = array(); + $polls_ips = array(); + $polls_perpage = intval(get_option('poll_archive_perpage')); + $poll_questions_ids = '0'; + $poll_voted = false; + $poll_voted_aid = 0; + $poll_id = 0; + $pollsarchive_output_archive = ''; + $polls_type = intval(get_option('poll_archive_displaypoll')); + $polls_type_sql = ''; + // Determine What Type Of Polls To Show + switch($polls_type) { + case 1: + $polls_type_sql = 'pollq_active = 0'; + break; + case 2: + $polls_type_sql = 'pollq_active = 1'; + break; + case 3: + $polls_type_sql = 'pollq_active IN (0,1)'; + break; + } + // Get Total Polls + $total_polls = $wpdb->get_var("SELECT COUNT(pollq_id) FROM $wpdb->pollsq WHERE $polls_type_sql AND pollq_active != -1"); + + // Calculate Paging + $numposts = $total_polls; + $perpage = $polls_perpage; + $max_page = ceil($numposts/$perpage); + if(empty($page) || $page == 0) { + $page = 1; + } + $offset = ($page-1) * $perpage; + $pages_to_show = 10; + $pages_to_show_minus_1 = $pages_to_show-1; + $half_page_start = floor($pages_to_show_minus_1/2); + $half_page_end = ceil($pages_to_show_minus_1/2); + $start_page = $page - $half_page_start; + if($start_page <= 0) { + $start_page = 1; + } + $end_page = $page + $half_page_end; + if(($end_page - $start_page) != $pages_to_show_minus_1) { + $end_page = $start_page + $pages_to_show_minus_1; + } + if($end_page > $max_page) { + $start_page = $max_page - $pages_to_show_minus_1; + $end_page = $max_page; + } + if($start_page <= 0) { + $start_page = 1; + } + if(($offset + $perpage) > $numposts) { + $max_on_page = $numposts; + } else { + $max_on_page = ($offset + $perpage); + } + if (($offset + 1) > ($numposts)) { + $display_on_page = $numposts; + } else { + $display_on_page = ($offset + 1); + } + + // Get Poll Questions + $questions = $wpdb->get_results("SELECT * FROM $wpdb->pollsq WHERE $polls_type_sql ORDER BY pollq_id DESC LIMIT $offset, $polls_perpage"); + if($questions) { + foreach($questions as $question) { + $polls_questions[] = array('id' => intval($question->pollq_id), 'question' => wp_kses_post( removeslashes( $question->pollq_question ) ), 'timestamp' => $question->pollq_timestamp, 'totalvotes' => intval($question->pollq_totalvotes), 'start' => $question->pollq_timestamp, 'end' => trim($question->pollq_expiry), 'multiple' => intval($question->pollq_multiple), 'totalvoters' => intval($question->pollq_totalvoters)); + $poll_questions_ids .= intval($question->pollq_id).', '; + } + $poll_questions_ids = substr($poll_questions_ids, 0, -2); + } + + // Get Poll Answers + list($order_by, $sort_order) = _polls_get_ans_result_sort(); + $answers = $wpdb->get_results("SELECT polla_aid, polla_qid, polla_answers, polla_votes FROM $wpdb->pollsa WHERE polla_qid IN ($poll_questions_ids) ORDER BY $order_by $sort_order"); + if($answers) { + foreach($answers as $answer) { + $polls_answers[intval($answer->polla_qid)][] = array('aid' => intval($answer->polla_aid), 'qid' => intval($answer->polla_qid), 'answers' => wp_kses_post( removeslashes( $answer->polla_answers ) ), 'votes' => intval($answer->polla_votes)); + } + } + + // Get Poll IPs + $ips = $wpdb->get_results("SELECT pollip_qid, pollip_aid FROM $wpdb->pollsip WHERE pollip_qid IN ($poll_questions_ids) AND pollip_ip = '".get_ipaddress()."' ORDER BY pollip_qid ASC"); + if($ips) { + foreach($ips as $ip) { + $polls_ips[intval($ip->pollip_qid)][] = intval($ip->pollip_aid); + } + } + // Poll Archives + $pollsarchive_output_archive .= "
        \n"; + foreach($polls_questions as $polls_question) { + // Most/Least Variables + $poll_most_answer = ''; + $poll_most_votes = 0; + $poll_most_percentage = 0; + $poll_least_answer = ''; + $poll_least_votes = 0; + $poll_least_percentage = 0; + // Is The Poll Total Votes 0? + $poll_totalvotes_zero = true; + if($polls_question['totalvotes'] > 0) { + $poll_totalvotes_zero = false; + } + $poll_start_date = mysql2date(sprintf(__('%s @ %s', 'wp-polls'), get_option('date_format'), get_option('time_format')), gmdate('Y-m-d H:i:s', $polls_question['start'])); + if(empty($polls_question['end'])) { + $poll_end_date = __('No Expiry', 'wp-polls'); + } else { + $poll_end_date = mysql2date(sprintf(__('%s @ %s', 'wp-polls'), get_option('date_format'), get_option('time_format')), gmdate('Y-m-d H:i:s', $polls_question['end'])); + } + // Archive Poll Header + $template_archive_header = removeslashes(get_option('poll_template_pollarchiveheader')); + // Poll Question Variables + $template_question = removeslashes(get_option('poll_template_resultheader')); + $template_question = str_replace("%POLL_QUESTION%", $polls_question['question'], $template_question); + $template_question = str_replace("%POLL_ID%", $polls_question['id'], $template_question); + $template_question = str_replace("%POLL_TOTALVOTES%", number_format_i18n($polls_question['totalvotes']), $template_question); + $template_question = str_replace("%POLL_TOTALVOTERS%", number_format_i18n($polls_question['totalvoters']), $template_question); + $template_question = str_replace("%POLL_START_DATE%", $poll_start_date, $template_question); + $template_question = str_replace("%POLL_END_DATE%", $poll_end_date, $template_question); + if($polls_question['multiple'] > 0) { + $template_question = str_replace("%POLL_MULTIPLE_ANS_MAX%", $polls_question['multiple'], $template_question); + } else { + $template_question = str_replace("%POLL_MULTIPLE_ANS_MAX%", '1', $template_question); + } + // Print Out Result Header Template + $pollsarchive_output_archive .= $template_archive_header; + $pollsarchive_output_archive .= $template_question; + // Store The Percentage Of The Poll + $poll_answer_percentage_array = array(); + foreach($polls_answers[$polls_question['id']] as $polls_answer) { + // Calculate Percentage And Image Bar Width + if(!$poll_totalvotes_zero) { + if($polls_answer['votes'] > 0) { + $poll_answer_percentage = round((($polls_answer['votes']/$polls_question['totalvoters'])*100)); + $poll_answer_imagewidth = round($poll_answer_percentage*0.9); + } else { + $poll_answer_percentage = 0; + $poll_answer_imagewidth = 1; + } + } else { + $poll_answer_percentage = 0; + $poll_answer_imagewidth = 1; + } + // Make Sure That Total Percentage Is 100% By Adding A Buffer To The Last Poll Answer + if($polls_question['multiple'] == 0) { + $poll_answer_percentage_array[] = $poll_answer_percentage; + if(sizeof($poll_answer_percentage_array) == sizeof($polls_answers[$polls_question['id']])) { + $percentage_error_buffer = 100 - array_sum($poll_answer_percentage_array); + $poll_answer_percentage = $poll_answer_percentage + $percentage_error_buffer; + if($poll_answer_percentage < 0) { + $poll_answer_percentage = 0; + } + } + } + $polls_answer['answers'] = wp_kses_post( $polls_answer['answers'] ); + // Let User See What Options They Voted + if(isset($polls_ips[$polls_question['id']]) && in_array($polls_answer['aid'], check_voted_multiple($polls_question['id'], $polls_ips[$polls_question['id']]))) { + // Results Body Variables + $template_answer = removeslashes(get_option('poll_template_resultbody2')); + $template_answer = str_replace("%POLL_ID%", $polls_question['id'], $template_answer); + $template_answer = str_replace("%POLL_ANSWER_ID%", $polls_answer['aid'], $template_answer); + $template_answer = str_replace("%POLL_ANSWER%", $polls_answer['answers'], $template_answer); + $template_answer = str_replace("%POLL_ANSWER_TEXT%", htmlspecialchars(strip_tags($polls_answer['answers'])), $template_answer); + $template_answer = str_replace("%POLL_ANSWER_VOTES%", number_format_i18n($polls_answer['votes']), $template_answer); + $template_answer = str_replace("%POLL_ANSWER_PERCENTAGE%", $poll_answer_percentage, $template_answer); + $template_answer = str_replace("%POLL_ANSWER_IMAGEWIDTH%", $poll_answer_imagewidth, $template_answer); + // Print Out Results Body Template + $pollsarchive_output_archive .= $template_answer; + } else { + // Results Body Variables + $template_answer = removeslashes(get_option('poll_template_resultbody')); + $template_answer = str_replace("%POLL_ID%", $polls_question['id'], $template_answer); + $template_answer = str_replace("%POLL_ANSWER_ID%", $polls_answer['aid'], $template_answer); + $template_answer = str_replace("%POLL_ANSWER%", $polls_answer['answers'], $template_answer); + $template_answer = str_replace("%POLL_ANSWER_TEXT%", htmlspecialchars(strip_tags($polls_answer['answers'])), $template_answer); + $template_answer = str_replace("%POLL_ANSWER_VOTES%", number_format_i18n($polls_answer['votes']), $template_answer); + $template_answer = str_replace("%POLL_ANSWER_PERCENTAGE%", $poll_answer_percentage, $template_answer); + $template_answer = str_replace("%POLL_ANSWER_IMAGEWIDTH%", $poll_answer_imagewidth, $template_answer); + // Print Out Results Body Template + $pollsarchive_output_archive .= $template_answer; + } + // Get Most Voted Data + if($polls_answer['votes'] > $poll_most_votes) { + $poll_most_answer = $polls_answer['answers']; + $poll_most_votes = $polls_answer['votes']; + $poll_most_percentage = $poll_answer_percentage; + } + // Get Least Voted Data + if($poll_least_votes == 0) { + $poll_least_votes = $polls_answer['votes']; + } + if($polls_answer['votes'] <= $poll_least_votes) { + $poll_least_answer = $polls_answer['answers']; + $poll_least_votes = $polls_answer['votes']; + $poll_least_percentage = $poll_answer_percentage; + } + } + // Results Footer Variables + $template_footer = removeslashes(get_option('poll_template_resultfooter')); + $template_footer = str_replace("%POLL_ID%", $polls_question['id'], $template_footer); + $template_footer = str_replace("%POLL_START_DATE%", $poll_start_date, $template_footer); + $template_footer = str_replace("%POLL_END_DATE%", $poll_end_date, $template_footer); + $template_footer = str_replace("%POLL_TOTALVOTES%", number_format_i18n($polls_question['totalvotes']), $template_footer); + $template_footer = str_replace("%POLL_TOTALVOTERS%", number_format_i18n($polls_question['totalvoters']), $template_footer); + $template_footer = str_replace("%POLL_MOST_ANSWER%", $poll_most_answer, $template_footer); + $template_footer = str_replace("%POLL_MOST_VOTES%", number_format_i18n($poll_most_votes), $template_footer); + $template_footer = str_replace("%POLL_MOST_PERCENTAGE%", $poll_most_percentage, $template_footer); + $template_footer = str_replace("%POLL_LEAST_ANSWER%", $poll_least_answer, $template_footer); + $template_footer = str_replace("%POLL_LEAST_VOTES%", number_format_i18n($poll_least_votes), $template_footer); + $template_footer = str_replace("%POLL_LEAST_PERCENTAGE%", $poll_least_percentage, $template_footer); + if($polls_question['multiple'] > 0) { + $template_footer = str_replace("%POLL_MULTIPLE_ANS_MAX%", $polls_question['multiple'], $template_footer); + } else { + $template_footer = str_replace("%POLL_MULTIPLE_ANS_MAX%", '1', $template_footer); + } + // Archive Poll Footer + $template_archive_footer = removeslashes(get_option('poll_template_pollarchivefooter')); + $template_archive_footer = str_replace("%POLL_START_DATE%", $poll_start_date, $template_archive_footer); + $template_archive_footer = str_replace("%POLL_END_DATE%", $poll_end_date, $template_archive_footer); + $template_archive_footer = str_replace("%POLL_TOTALVOTES%", number_format_i18n($polls_question['totalvotes']), $template_archive_footer); + $template_archive_footer = str_replace("%POLL_TOTALVOTERS%", number_format_i18n($polls_question['totalvoters']), $template_archive_footer); + $template_archive_footer = str_replace("%POLL_MOST_ANSWER%", $poll_most_answer, $template_archive_footer); + $template_archive_footer = str_replace("%POLL_MOST_VOTES%", number_format_i18n($poll_most_votes), $template_archive_footer); + $template_archive_footer = str_replace("%POLL_MOST_PERCENTAGE%", $poll_most_percentage, $template_archive_footer); + $template_archive_footer = str_replace("%POLL_LEAST_ANSWER%", $poll_least_answer, $template_archive_footer); + $template_archive_footer = str_replace("%POLL_LEAST_VOTES%", number_format_i18n($poll_least_votes), $template_archive_footer); + $template_archive_footer = str_replace("%POLL_LEAST_PERCENTAGE%", $poll_least_percentage, $template_archive_footer); + if($polls_question['multiple'] > 0) { + $template_archive_footer = str_replace("%POLL_MULTIPLE_ANS_MAX%", $polls_question['multiple'], $template_archive_footer); + } else { + $template_archive_footer = str_replace("%POLL_MULTIPLE_ANS_MAX%", '1', $template_archive_footer); + } + // Print Out Results Footer Template + $pollsarchive_output_archive .= $template_footer; + // Print Out Archive Poll Footer Template + $pollsarchive_output_archive .= $template_archive_footer; + } + $pollsarchive_output_archive .= "
        \n"; + + // Polls Archive Paging + if($max_page > 1) { + $pollsarchive_output_archive .= removeslashes(get_option('poll_template_pollarchivepagingheader')); + if(function_exists('wp_pagenavi')) { + $pollsarchive_output_archive .= '
        '."\n"; + } else { + $pollsarchive_output_archive .= '
        '."\n"; + } + $pollsarchive_output_archive .= ' '.sprintf(__('Page %s of %s', 'wp-polls'), number_format_i18n($page), number_format_i18n($max_page)).' '; + if ($start_page >= 2 && $pages_to_show < $max_page) { + $pollsarchive_output_archive .= ' '.__('« First', 'wp-polls').' '; + $pollsarchive_output_archive .= '...'; + } + if($page > 1) { + $pollsarchive_output_archive .= ' '.__('«', 'wp-polls').' '; + } + for($i = $start_page; $i <= $end_page; $i++) { + if($i == $page) { + $pollsarchive_output_archive .= ' '.number_format_i18n($i).' '; + } else { + $pollsarchive_output_archive .= ' '.number_format_i18n($i).' '; + } + } + if(empty($page) || ($page+1) <= $max_page) { + $pollsarchive_output_archive .= ' '.__('»', 'wp-polls').' '; + } + if ($end_page < $max_page) { + $pollsarchive_output_archive .= '...'; + $pollsarchive_output_archive .= ' '.__('Last »', 'wp-polls').' '; + } + $pollsarchive_output_archive .= '
        '; + $pollsarchive_output_archive .= removeslashes(get_option('poll_template_pollarchivepagingfooter')); + } + + // Output Polls Archive Page + return apply_filters('polls_archive', $pollsarchive_output_archive); +} + + +// Edit Timestamp Options +function poll_timestamp($poll_timestamp, $fieldname = 'pollq_timestamp', $display = 'block') { + global $month; + echo '
        '."\n"; + $day = gmdate('j', $poll_timestamp); + echo '  '."\n"; + $month2 = gmdate('n', $poll_timestamp); + echo '  '."\n"; + $year = gmdate('Y', $poll_timestamp); + echo ' @'."\n"; + echo ''."\n"; + $hour = gmdate('H', $poll_timestamp); + echo ' :'."\n"; + $minute = gmdate('i', $poll_timestamp); + echo ' :'."\n"; + $second = gmdate('s', $poll_timestamp); + echo ''."\n"; + echo ''."\n"; + echo '
        '."\n"; +} + + +### Function: Place Cron +function cron_polls_place() { + wp_clear_scheduled_hook('polls_cron'); + if (!wp_next_scheduled('polls_cron')) { + wp_schedule_event(time(), 'twicedaily', 'polls_cron'); + } +} + + +### Funcion: Check All Polls Status To Check If It Expires +add_action('polls_cron', 'cron_polls_status'); +function cron_polls_status() { + global $wpdb; + // Close Poll + $close_polls = $wpdb->query("UPDATE $wpdb->pollsq SET pollq_active = 0 WHERE pollq_expiry < '".current_time('timestamp')."' AND pollq_expiry != '' AND pollq_active != 0"); + // Open Future Polls + $active_polls = $wpdb->query("UPDATE $wpdb->pollsq SET pollq_active = 1 WHERE pollq_timestamp <= '".current_time('timestamp')."' AND pollq_active = -1"); + // Update Latest Poll If Future Poll Is Opened + if($active_polls) { + $update_latestpoll = update_option('poll_latestpoll', polls_latest_id()); + } + return; +} + + +### Funcion: Get Latest Poll ID +function polls_latest_id() { + global $wpdb; + $poll_id = $wpdb->get_var("SELECT pollq_id FROM $wpdb->pollsq WHERE pollq_active = 1 ORDER BY pollq_timestamp DESC LIMIT 1"); + return intval($poll_id); +} + + +### Check If In Poll Archive Page +function in_pollarchive() { + $poll_archive_url = get_option('poll_archive_url'); + $poll_archive_url_array = explode('/', $poll_archive_url); + $poll_archive_url = $poll_archive_url_array[sizeof($poll_archive_url_array)-1]; + if(empty($poll_archive_url)) { + $poll_archive_url = $poll_archive_url_array[sizeof($poll_archive_url_array)-2]; + } + $current_url = $_SERVER['REQUEST_URI']; + if(strpos($current_url, $poll_archive_url) === false) { + return false; + } else { + return true; + } +} + + +### Function: Vote Poll +add_action('wp_ajax_polls', 'vote_poll'); +add_action('wp_ajax_nopriv_polls', 'vote_poll'); +function vote_poll() { + global $wpdb, $user_identity, $user_ID; + + if(isset($_REQUEST['action']) && $_REQUEST['action'] == 'polls') + { + // Load Headers + polls_textdomain(); + header('Content-Type: text/html; charset='.get_option('blog_charset').''); + + // Get Poll ID + $poll_id = (isset($_REQUEST['poll_id']) ? intval($_REQUEST['poll_id']) : 0); + + // Ensure Poll ID Is Valid + if($poll_id == 0) + { + _e('Invalid Poll ID', 'wp-polls'); + exit(); + } + + // Verify Referer + if(!check_ajax_referer('poll_'.$poll_id.'-nonce', 'poll_'.$poll_id.'_nonce', false)) + { + _e('Failed To Verify Referrer', 'wp-polls'); + exit(); + } + + // Which View + switch($_REQUEST['view']) + { + // Poll Vote + case 'process': + do_action('wp_polls_vote_poll'); + $poll_aid = $_POST["poll_$poll_id"]; + $poll_aid_array = array_unique(array_map('intval', explode(',', $poll_aid))); + if($poll_id > 0 && !empty($poll_aid_array) && check_allowtovote()) { + $is_poll_open = intval( $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->pollsq WHERE pollq_id = %d AND pollq_active = 1", $poll_id ) ) ); + if ( $is_poll_open > 0 ) { + $check_voted = check_voted($poll_id); + if ($check_voted == 0) { + if (!empty($user_identity)) { + $pollip_user = htmlspecialchars(addslashes($user_identity)); + } elseif (!empty($_COOKIE['comment_author_' . COOKIEHASH])) { + $pollip_user = htmlspecialchars(addslashes($_COOKIE['comment_author_' . COOKIEHASH])); + } else { + $pollip_user = __('Guest', 'wp-polls'); + } + $pollip_userid = intval($user_ID); + $pollip_ip = get_ipaddress(); + $pollip_host = @gethostbyaddr($pollip_ip); + $pollip_timestamp = current_time('timestamp'); + // Only Create Cookie If User Choose Logging Method 1 Or 2 + $poll_logging_method = intval(get_option('poll_logging_method')); + if ($poll_logging_method == 1 || $poll_logging_method == 3) { + $cookie_expiry = intval(get_option('poll_cookielog_expiry')); + if ($cookie_expiry == 0) { + $cookie_expiry = 30000000; + } + $vote_cookie = setcookie('voted_' . $poll_id, $poll_aid, ($pollip_timestamp + $cookie_expiry), apply_filters('wp_polls_cookiepath', SITECOOKIEPATH)); + } + $i = 0; + foreach ($poll_aid_array as $polla_aid) { + $update_polla_votes = $wpdb->query( "UPDATE $wpdb->pollsa SET polla_votes = (polla_votes + 1) WHERE polla_qid = $poll_id AND polla_aid = $polla_aid" ); + if (!$update_polla_votes) { + unset($poll_aid_array[$i]); + } + $i++; + } + $vote_q = $wpdb->query("UPDATE $wpdb->pollsq SET pollq_totalvotes = (pollq_totalvotes+" . sizeof( $poll_aid_array ) . "), pollq_totalvoters = (pollq_totalvoters + 1) WHERE pollq_id = $poll_id AND pollq_active = 1"); + if ($vote_q) { + foreach ($poll_aid_array as $polla_aid) { + $wpdb->insert( + $wpdb->pollsip, + array( + 'pollip_qid' => $poll_id, + 'pollip_aid' => $polla_aid, + 'pollip_ip' => $pollip_ip, + 'pollip_host' => $pollip_host, + 'pollip_timestamp' => $pollip_timestamp, + 'pollip_user' => $pollip_user, + 'pollip_userid' => $pollip_userid + ), + array( + '%s', + '%s', + '%s', + '%s', + '%s', + '%s', + '%d' + ) + ); + } + echo display_pollresult($poll_id, $poll_aid_array, false); + do_action( 'wp_polls_vote_poll_success' ); + } else { + printf(__('Unable To Update Poll Total Votes And Poll Total Voters. Poll ID #%s', 'wp-polls'), $poll_id); + } // End if($vote_a) + } else { + printf(__('You Had Already Voted For This Poll. Poll ID #%s', 'wp-polls'), $poll_id); + } // End if($check_voted) + } else { + printf( __( 'Poll ID #%s is closed', 'wp-polls' ), $poll_id ); + } // End if($is_poll_open > 0) + } else { + printf(__('Invalid Poll ID. Poll ID #%s', 'wp-polls'), $poll_id); + } // End if($poll_id > 0 && !empty($poll_aid_array) && check_allowtovote()) + break; + // Poll Result + case 'result': + echo display_pollresult($poll_id, 0, false); + break; + // Poll Booth Aka Poll Voting Form + case 'booth': + echo display_pollvote($poll_id, false); + break; + } // End switch($_REQUEST['view']) + } // End if(isset($_REQUEST['action']) && $_REQUEST['action'] == 'polls') + exit(); +} + + +### Function: Manage Polls +add_action('wp_ajax_polls-admin', 'manage_poll'); +function manage_poll() { + global $wpdb; + ### Form Processing + if(isset($_POST['action']) && $_POST['action'] == 'polls-admin') + { + if(!empty($_POST['do'])) { + // Set Header + header('Content-Type: text/html; charset='.get_option('blog_charset').''); + + // Decide What To Do + switch($_POST['do']) { + // Delete Polls Logs + case __('Delete All Logs', 'wp-polls'): + check_ajax_referer('wp-polls_delete-polls-logs'); + if(trim($_POST['delete_logs_yes']) == 'yes') { + $delete_logs = $wpdb->query("DELETE FROM $wpdb->pollsip"); + if($delete_logs) { + echo '

        '.__('All Polls Logs Have Been Deleted.', 'wp-polls').'

        '; + } else { + echo '

        '.__('An Error Has Occurred While Deleting All Polls Logs.', 'wp-polls').'

        '; + } + } + break; + // Delete Poll Logs For Individual Poll + case __('Delete Logs For This Poll Only', 'wp-polls'): + check_ajax_referer('wp-polls_delete-poll-logs'); + $pollq_id = intval($_POST['pollq_id']); + $pollq_question = $wpdb->get_var( $wpdb->prepare( "SELECT pollq_question FROM $wpdb->pollsq WHERE pollq_id = %d", $pollq_id ) ); + if(trim($_POST['delete_logs_yes']) == 'yes') { + $delete_logs = $wpdb->delete( $wpdb->pollsip, array( 'pollip_qid' => $pollq_id ), array( '%d' ) ); + if( $delete_logs ) { + echo '

        '.sprintf(__('All Logs For \'%s\' Has Been Deleted.', 'wp-polls'), wp_kses_post( removeslashes( $pollq_question ) ) ).'

        '; + } else { + echo '

        '.sprintf(__('An Error Has Occurred While Deleting All Logs For \'%s\'', 'wp-polls'), wp_kses_post( removeslashes( $pollq_question ) ) ).'

        '; + } + } + break; + // Delete Poll's Answer + case __('Delete Poll Answer', 'wp-polls'): + check_ajax_referer('wp-polls_delete-poll-answer'); + $pollq_id = intval($_POST['pollq_id']); + $polla_aid = intval($_POST['polla_aid']); + $poll_answers = $wpdb->get_row( $wpdb->prepare( "SELECT polla_votes, polla_answers FROM $wpdb->pollsa WHERE polla_aid = %d AND polla_qid = %d", $polla_aid, $pollq_id ) ); + $polla_votes = intval($poll_answers->polla_votes); + $polla_answers = wp_kses_post( removeslashes( trim( $poll_answers->polla_answers ) ) ); + $delete_polla_answers = $wpdb->delete( $wpdb->pollsa, array( 'polla_aid' => $polla_aid, 'polla_qid' => $pollq_id ), array( '%d', '%d' ) ); + $delete_pollip = $wpdb->delete( $wpdb->pollsip, array( 'pollip_qid' => $pollq_id, 'pollip_aid' => $polla_aid ), array( '%d', '%d' ) ); + $update_pollq_totalvotes = $wpdb->query( "UPDATE $wpdb->pollsq SET pollq_totalvotes = (pollq_totalvotes - $polla_votes) WHERE pollq_id = $pollq_id" ); + if($delete_polla_answers) { + echo '

        '.sprintf(__('Poll Answer \'%s\' Deleted Successfully.', 'wp-polls'), $polla_answers).'

        '; + } else { + echo '

        '.sprintf(__('Error In Deleting Poll Answer \'%s\'.', 'wp-polls'), $polla_answers).'

        '; + } + break; + // Open Poll + case __('Open Poll', 'wp-polls'): + check_ajax_referer('wp-polls_open-poll'); + $pollq_id = intval($_POST['pollq_id']); + $pollq_question = $wpdb->get_var( $wpdb->prepare( "SELECT pollq_question FROM $wpdb->pollsq WHERE pollq_id = %d", $pollq_id ) ); + $open_poll = $wpdb->update( + $wpdb->pollsq, + array( + 'pollq_active' => 1 + ), + array( + 'pollq_id' => $pollq_id + ), + array( + '%d' + ), + array( + '%d' + ) + ); + if( $open_poll ) { + echo '

        '.sprintf(__('Poll \'%s\' Is Now Opened', 'wp-polls'), wp_kses_post( removeslashes( $pollq_question ) ) ).'

        '; + } else { + echo '

        '.sprintf(__('Error Opening Poll \'%s\'', 'wp-polls'), wp_kses_post( removeslashes( $pollq_question ) ) ).'

        '; + } + break; + // Close Poll + case __('Close Poll', 'wp-polls'): + check_ajax_referer('wp-polls_close-poll'); + $pollq_id = intval($_POST['pollq_id']); + $pollq_question = $wpdb->get_var( $wpdb->prepare( "SELECT pollq_question FROM $wpdb->pollsq WHERE pollq_id = %d", $pollq_id ) ); + $close_poll = $wpdb->update( + $wpdb->pollsq, + array( + 'pollq_active' => 0 + ), + array( + 'pollq_id' => $pollq_id + ), + array( + '%d' + ), + array( + '%d' + ) + ); + if( $close_poll ) { + echo '

        '.sprintf(__('Poll \'%s\' Is Now Closed', 'wp-polls'), wp_kses_post( removeslashes( $pollq_question ) ) ).'

        '; + } else { + echo '

        '.sprintf(__('Error Closing Poll \'%s\'', 'wp-polls'), wp_kses_post( removeslashes( $pollq_question ) ) ).'

        '; + } + break; + // Delete Poll + case __('Delete Poll', 'wp-polls'): + check_ajax_referer('wp-polls_delete-poll'); + $pollq_id = intval($_POST['pollq_id']); + $pollq_question = $wpdb->get_var( $wpdb->prepare( "SELECT pollq_question FROM $wpdb->pollsq WHERE pollq_id = %d", $pollq_id ) ); + $delete_poll_question = $wpdb->delete( $wpdb->pollsq, array( 'pollq_id' => $pollq_id ), array( '%d' ) ); + $delete_poll_answers = $wpdb->delete( $wpdb->pollsa, array( 'polla_qid' => $pollq_id ), array( '%d' ) ); + $delete_poll_ip = $wpdb->delete( $wpdb->pollsip, array( 'pollip_qid' => $pollq_id ), array( '%d' ) ); + $poll_option_lastestpoll = $wpdb->get_var("SELECT option_value FROM $wpdb->options WHERE option_name = 'poll_latestpoll'"); + if(!$delete_poll_question) { + echo '

        '.sprintf(__('Error In Deleting Poll \'%s\' Question', 'wp-polls'), wp_kses_post( removeslashes( $pollq_question ) ) ).'

        '; + } + if(empty($text)) { + echo '

        '.sprintf(__('Poll \'%s\' Deleted Successfully', 'wp-polls'), wp_kses_post( removeslashes( $pollq_question ) ) ).'

        '; + } + // Update Lastest Poll ID To Poll Options + $latest_pollid = polls_latest_id(); + $update_latestpoll = update_option('poll_latestpoll', $latest_pollid); + do_action( 'wp_polls_delete_poll', $pollq_id ); + break; + } + exit(); + } + } +} + + +function _polls_get_ans_sort() { + $order_by = get_option( 'poll_ans_sortby' ); + switch( $order_by ) { + case 'polla_aid': + case 'polla_answers': + case 'RAND()': + break; + default: + $order_by = 'polla_aid'; + break; + } + $sort_order = get_option( 'poll_ans_sortorder' ) === 'desc' ? 'desc' : 'asc'; + return array( $order_by, $sort_order ); +} + +function _polls_get_ans_result_sort() { + $order_by = get_option( 'poll_ans_result_sortby' ); + switch( $order_by ) { + case 'polla_votes': + case 'polla_aid': + case 'polla_answers': + case 'RAND()': + break; + default: + $order_by = 'polla_aid'; + break; + } + $sort_order = get_option( 'poll_ans_result_sortorder' ) === 'desc' ? 'desc' : 'asc'; + return array( $order_by, $sort_order ); +} + + +### Function: Plug Into WP-Stats +add_action( 'plugins_loaded','polls_wp_stats' ); +function polls_wp_stats() { + add_filter( 'wp_stats_page_admin_plugins', 'polls_page_admin_general_stats' ); + add_filter( 'wp_stats_page_plugins', 'polls_page_general_stats' ); +} + + +### Function: Add WP-Polls General Stats To WP-Stats Page Options +function polls_page_admin_general_stats($content) { + $stats_display = get_option('stats_display'); + if($stats_display['polls'] == 1) { + $content .= '  
        '."\n"; + } else { + $content .= '  
        '."\n"; + } + return $content; +} + + +### Function: Add WP-Polls General Stats To WP-Stats Page +function polls_page_general_stats($content) { + $stats_display = get_option('stats_display'); + if($stats_display['polls'] == 1) { + $content .= '

        '.__('WP-Polls', 'wp-polls').'

        '."\n"; + $content .= '
          '."\n"; + $content .= '
        • '.sprintf(_n('%s poll was created.', '%s polls were created.', get_pollquestions(false), 'wp-polls'), number_format_i18n(get_pollquestions(false))).'
        • '."\n"; + $content .= '
        • '.sprintf(_n('%s polls\' answer was given.', '%s polls\' answers were given.', get_pollanswers(false), 'wp-polls'), number_format_i18n(get_pollanswers(false))).'
        • '."\n"; + $content .= '
        • '.sprintf(_n('%s vote was cast.', '%s votes were cast.', get_pollvotes(false), 'wp-polls'), number_format_i18n(get_pollvotes(false))).'
        • '."\n"; + $content .= '
        '."\n"; + } + return $content; +} + + +### Class: WP-Polls Widget + class WP_Widget_Polls extends WP_Widget { + // Constructor + function __construct() { + $widget_ops = array('description' => __('WP-Polls polls', 'wp-polls')); + parent::__construct('polls-widget', __('Polls', 'wp-polls'), $widget_ops); + } + + // Display Widget + function widget( $args, $instance ) { + $title = apply_filters( 'widget_title', esc_attr( $instance['title'] ) ); + $poll_id = intval( $instance['poll_id'] ); + $display_pollarchive = intval( $instance['display_pollarchive'] ); + echo $args['before_widget']; + if( ! empty( $title ) ) { + echo $args['before_title'] . $title . $args['after_title']; + } + get_poll( $poll_id ); + if( $display_pollarchive ) { + display_polls_archive_link(); + } + echo $args['after_widget']; + } + + // When Widget Control Form Is Posted + function update($new_instance, $old_instance) { + if (!isset($new_instance['submit'])) { + return false; + } + $instance = $old_instance; + $instance['title'] = strip_tags($new_instance['title']); + $instance['poll_id'] = intval($new_instance['poll_id']); + $instance['display_pollarchive'] = intval($new_instance['display_pollarchive']); + return $instance; + } + + // DIsplay Widget Control Form + function form($instance) { + global $wpdb; + $instance = wp_parse_args((array) $instance, array('title' => __('Polls', 'wp-polls'), 'poll_id' => 0, 'display_pollarchive' => 1)); + $title = esc_attr($instance['title']); + $poll_id = intval($instance['poll_id']); + $display_pollarchive = intval($instance['display_pollarchive']); +?> +

        + +

        +

        + +

        +

        + +

        + +has_cap( 'collation' ) ) { + if(!empty($wpdb->charset)) { + $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset"; + } + if(!empty($wpdb->collate)) { + $charset_collate .= " COLLATE $wpdb->collate"; + } + } + $create_table = array(); + $create_table['pollsq'] = "CREATE TABLE $wpdb->pollsq (". + "pollq_id int(10) NOT NULL auto_increment,". + "pollq_question varchar(200) character set utf8 NOT NULL default '',". + "pollq_timestamp varchar(20) NOT NULL default '',". + "pollq_totalvotes int(10) NOT NULL default '0',". + "pollq_active tinyint(1) NOT NULL default '1',". + "pollq_expiry varchar(20) NOT NULL default '',". + "pollq_multiple tinyint(3) NOT NULL default '0',". + "pollq_totalvoters int(10) NOT NULL default '0',". + "PRIMARY KEY (pollq_id)) $charset_collate;"; + $create_table['pollsa'] = "CREATE TABLE $wpdb->pollsa (". + "polla_aid int(10) NOT NULL auto_increment,". + "polla_qid int(10) NOT NULL default '0',". + "polla_answers varchar(200) character set utf8 NOT NULL default '',". + "polla_votes int(10) NOT NULL default '0',". + "PRIMARY KEY (polla_aid)) $charset_collate;"; + $create_table['pollsip'] = "CREATE TABLE $wpdb->pollsip (". + "pollip_id int(10) NOT NULL auto_increment,". + "pollip_qid varchar(10) NOT NULL default '',". + "pollip_aid varchar(10) NOT NULL default '',". + "pollip_ip varchar(100) NOT NULL default '',". + "pollip_host VARCHAR(200) NOT NULL default '',". + "pollip_timestamp varchar(20) NOT NULL default '0000-00-00 00:00:00',". + "pollip_user tinytext NOT NULL,". + "pollip_userid int(10) NOT NULL default '0',". + "PRIMARY KEY (pollip_id),". + "KEY pollip_ip (pollip_ip),". + "KEY pollip_qid (pollip_qid),". + "KEY pollip_ip_qid (pollip_ip, pollip_qid)". + ") $charset_collate;"; + maybe_create_table($wpdb->pollsq, $create_table['pollsq']); + maybe_create_table($wpdb->pollsa, $create_table['pollsa']); + maybe_create_table($wpdb->pollsip, $create_table['pollsip']); + // Check Whether It is Install Or Upgrade + $first_poll = $wpdb->get_var("SELECT pollq_id FROM $wpdb->pollsq LIMIT 1"); + // If Install, Insert 1st Poll Question With 5 Poll Answers + if(empty($first_poll)) { + // Insert Poll Question (1 Record) + $insert_pollq = $wpdb->query("INSERT INTO $wpdb->pollsq VALUES (1, '".__('How Is My Site?', 'wp-polls')."', '".current_time('timestamp')."', 0, 1, '', 0, 0);"); + if($insert_pollq) { + // Insert Poll Answers (5 Records) + $wpdb->query("INSERT INTO $wpdb->pollsa VALUES (1, 1, '".__('Good', 'wp-polls')."', 0);"); + $wpdb->query("INSERT INTO $wpdb->pollsa VALUES (2, 1, '".__('Excellent', 'wp-polls')."', 0);"); + $wpdb->query("INSERT INTO $wpdb->pollsa VALUES (3, 1, '".__('Bad', 'wp-polls')."', 0);"); + $wpdb->query("INSERT INTO $wpdb->pollsa VALUES (4, 1, '".__('Can Be Improved', 'wp-polls')."', 0);"); + $wpdb->query("INSERT INTO $wpdb->pollsa VALUES (5, 1, '".__('No Comments', 'wp-polls')."', 0);"); + } + } + // Add In Options (16 Records) + add_option('poll_template_voteheader', '

        %POLL_QUESTION%

        '. + '
        '. + '
          '); + add_option('poll_template_votebody', '
        • '); + add_option('poll_template_votefooter', '
        '. + '

        '. + '

        '.__('View Results', 'wp-polls').'

        '. + '
        '); + add_option('poll_template_resultheader', '

        %POLL_QUESTION%

        '. + '
        '. + '
          '); + add_option('poll_template_resultbody', '
        • %POLL_ANSWER% (%POLL_ANSWER_PERCENTAGE%%'.__(',', 'wp-polls').' %POLL_ANSWER_VOTES% '.__('Votes', 'wp-polls').')
        • '); + add_option('poll_template_resultbody2', '
        • %POLL_ANSWER% (%POLL_ANSWER_PERCENTAGE%%'.__(',', 'wp-polls').' %POLL_ANSWER_VOTES% '.__('Votes', 'wp-polls').')
        • '); + add_option('poll_template_resultfooter', '
        '. + '

        '.__('Total Voters', 'wp-polls').': %POLL_TOTALVOTERS%

        '. + '
        '); + add_option('poll_template_resultfooter2', ''. + '

        '.__('Total Voters', 'wp-polls').': %POLL_TOTALVOTERS%

        '. + '

        '.__('Vote', 'wp-polls').'

        '. + '
        '); + add_option('poll_template_disable', __('Sorry, there are no polls available at the moment.', 'wp-polls')); + add_option('poll_template_error', __('An error has occurred when processing your poll.', 'wp-polls')); + add_option('poll_currentpoll', 0); + add_option('poll_latestpoll', 1); + add_option('poll_archive_perpage', 5); + add_option('poll_ans_sortby', 'polla_aid'); + add_option('poll_ans_sortorder', 'asc'); + add_option('poll_ans_result_sortby', 'polla_votes'); + add_option('poll_ans_result_sortorder', 'desc'); + // Database Upgrade For WP-Polls 2.1 + add_option('poll_logging_method', '3'); + add_option('poll_allowtovote', '2'); + maybe_add_column($wpdb->pollsq, 'pollq_active', "ALTER TABLE $wpdb->pollsq ADD pollq_active TINYINT( 1 ) NOT NULL DEFAULT '1';"); + // Database Upgrade For WP-Polls 2.12 + maybe_add_column($wpdb->pollsip, 'pollip_userid', "ALTER TABLE $wpdb->pollsip ADD pollip_userid INT( 10 ) NOT NULL DEFAULT '0';"); + add_option('poll_archive_url', site_url('pollsarchive')); + // Database Upgrade For WP-Polls 2.13 + add_option('poll_bar', array('style' => 'default', 'background' => 'd8e1eb', 'border' => 'c8c8c8', 'height' => 8)); + // Database Upgrade For WP-Polls 2.14 + maybe_add_column($wpdb->pollsq, 'pollq_expiry', "ALTER TABLE $wpdb->pollsq ADD pollq_expiry varchar(20) NOT NULL default '';"); + add_option('poll_close', 1); + // Database Upgrade For WP-Polls 2.20 + add_option('poll_ajax_style', array('loading' => 1, 'fading' => 1)); + add_option('poll_template_pollarchivelink', ''); + add_option('poll_archive_displaypoll', 2); + add_option('poll_template_pollarchiveheader', ''); + add_option('poll_template_pollarchivefooter', '

        '.__('Start Date:', 'wp-polls').' %POLL_START_DATE%
        '.__('End Date:', 'wp-polls').' %POLL_END_DATE%

        '); + maybe_add_column($wpdb->pollsq, 'pollq_multiple', "ALTER TABLE $wpdb->pollsq ADD pollq_multiple TINYINT( 3 ) NOT NULL DEFAULT '0';"); + $pollq_totalvoters = maybe_add_column($wpdb->pollsq, 'pollq_totalvoters', "ALTER TABLE $wpdb->pollsq ADD pollq_totalvoters INT( 10 ) NOT NULL DEFAULT '0';"); + if($pollq_totalvoters) { + $pollq_totalvoters = intval($wpdb->get_var("SELECT SUM(pollq_totalvoters) FROM $wpdb->pollsq")); + if($pollq_totalvoters == 0) { + $wpdb->query("UPDATE $wpdb->pollsq SET pollq_totalvoters = pollq_totalvotes"); + } + } + // Database Upgrade For WP-Polls 2.30 + add_option('poll_cookielog_expiry', 0); + add_option('poll_template_pollarchivepagingheader', ''); + add_option('poll_template_pollarchivepagingfooter', ''); + // Database Upgrade For WP-Polls 2.50 + delete_option('poll_archive_show'); + + // Index + $index = $wpdb->get_results( "SHOW INDEX FROM $wpdb->pollsip;" ); + $key_name = array(); + if( sizeof( $index ) > 0 ) { + foreach( $index as $i ) { + $key_name[]= $i->Key_name; + } + } + if ( ! in_array( 'pollip_ip', $key_name ) ) { + $wpdb->query( "ALTER TABLE $wpdb->pollsip ADD INDEX pollip_ip (pollip_ip);" ); + } + if ( ! in_array( 'pollip_qid', $key_name ) ) { + $wpdb->query( "ALTER TABLE $wpdb->pollsip ADD INDEX pollip_qid (pollip_qid);" ); + } + if ( ! in_array( 'pollip_ip_qid_aid', $key_name ) ) { + $wpdb->query( "ALTER TABLE $wpdb->pollsip ADD INDEX pollip_ip_qid_aid (pollip_ip, pollip_qid, pollip_aid);" ); + } + // No longer needed index + if ( in_array( 'pollip_ip_qid', $key_name ) ) { + $wpdb->query( "ALTER TABLE $wpdb->pollsip DROP INDEX pollip_ip_qid;" ); + } + + // Set 'manage_polls' Capabilities To Administrator + $role = get_role( 'administrator' ); + if( ! $role->has_cap( 'manage_polls' ) ) { + $role->add_cap( 'manage_polls' ); + } + cron_polls_place(); +} diff --git a/plugins/wp-polls/wp-polls.pot b/plugins/wp-polls/wp-polls.pot new file mode 100644 index 0000000..b187ecf --- /dev/null +++ b/plugins/wp-polls/wp-polls.pot @@ -0,0 +1,1355 @@ +# Copyright (C) 2015 WP-Polls +# This file is distributed under the same license as the WP-Polls package. +msgid "" +msgstr "" +"Project-Id-Version: WP-Polls 2.69\n" +"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/wp-polls\n" +"POT-Creation-Date: 2015-06-06 05:39:11+00:00\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2015-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" + +#: polls-add.php:16 polls-add.php:104 polls-add.php:171 wp-polls.php:56 +msgid "Add Poll" +msgstr "" + +#: polls-add.php:62 +msgid "Error In Adding Poll '%s'." +msgstr "" + +#: polls-add.php:72 polls-manager.php:129 +msgid "Error In Adding Poll's Answer '%s'." +msgstr "" + +#: polls-add.php:75 +msgid "Poll's Answer is empty." +msgstr "" + +#: polls-add.php:82 +msgid "" +"Poll '%s' (ID: %s) added successfully. Embed this poll with the shortcode: " +"%s or go back to Manage Polls" +msgstr "" + +#: polls-add.php:85 +msgid "" +"Poll '%s' (ID: %s) (Shortcode: %s) added successfully, but there are some " +"errors with the Poll's Answers. Embed this poll with the shortcode: %s or go " +"back to Manage Polls" +msgstr "" + +#: polls-add.php:90 +msgid "Poll Question is empty." +msgstr "" + +#: polls-add.php:106 polls-manager.php:178 +msgid "Poll Question" +msgstr "" + +#: polls-add.php:109 polls-manager.php:181 polls-manager.php:332 +msgid "Question" +msgstr "" + +#: polls-add.php:114 polls-manager.php:186 +msgid "Poll Answers" +msgstr "" + +#: polls-add.php:119 polls-manager.php:221 +msgid "Add Answer" +msgstr "" + +#: polls-add.php:126 polls-manager.php:208 +msgid "Answer %s" +msgstr "" + +#: polls-add.php:127 wp-polls.php:245 +msgid "Remove" +msgstr "" + +#: polls-add.php:135 polls-manager.php:232 +msgid "Poll Multiple Answers" +msgstr "" + +#: polls-add.php:138 polls-manager.php:235 +msgid "Allows Users To Select More Than One Answer?" +msgstr "" + +#: polls-add.php:141 polls-manager.php:238 polls-options.php:199 +#: polls-options.php:208 polls-options.php:325 wp-polls.php:1582 +msgid "No" +msgstr "" + +#: polls-add.php:142 polls-logs.php:383 polls-manager.php:239 +#: polls-manager.php:461 polls-options.php:200 polls-options.php:209 +#: polls-options.php:326 wp-polls.php:1583 +msgid "Yes" +msgstr "" + +#: polls-add.php:147 polls-manager.php:244 +msgid "Maximum Number Of Selected Answers Allowed?" +msgstr "" + +#: polls-add.php:160 polls-manager.php:261 +msgid "Poll Start/End Date" +msgstr "" + +#: polls-add.php:163 polls-manager.php:264 polls-manager.php:334 +msgid "Start Date/Time" +msgstr "" + +#: polls-add.php:167 polls-manager.php:272 polls-manager.php:335 +msgid "End Date/Time" +msgstr "" + +#: polls-add.php:168 polls-manager.php:283 +msgid "Do NOT Expire This Poll" +msgstr "" + +#: polls-add.php:171 polls-manager.php:307 +msgid "Cancel" +msgstr "" + +#: polls-logs.php:34 polls-logs.php:35 polls-logs.php:38 polls-logs.php:70 +#: polls-logs.php:74 polls-logs.php:107 polls-logs.php:110 wp-polls.php:1334 +msgid "Guest" +msgstr "" + +#: polls-logs.php:128 +msgid "Poll's Logs" +msgstr "" + +#: polls-logs.php:131 +msgid "There are a total of %s recorded vote for this poll." +msgid_plural "" +"There are a total of %s recorded votes for this poll." +msgstr[0] "" +msgstr[1] "" + +#: polls-logs.php:132 +msgid "" +"» %s vote is cast by registered users" +msgid_plural "" +"» %s votes are cast by registered " +"users" +msgstr[0] "" +msgstr[1] "" + +#: polls-logs.php:133 +msgid "" +"» %s vote is cast by comment authors" +msgid_plural "" +"» %s votes are cast by comment " +"authors" +msgstr[0] "" +msgstr[1] "" + +#: polls-logs.php:134 +msgid "» %s vote is cast by guests" +msgid_plural "" +"» %s votes are cast by guests" +msgstr[0] "" +msgstr[1] "" + +#: polls-logs.php:139 +msgid "Filter Poll's Logs" +msgstr "" + +#: polls-logs.php:148 +msgid "Display All Users That Voted For" +msgstr "" + +#: polls-logs.php:169 polls-logs.php:217 +msgid "Voters To EXCLUDE" +msgstr "" + +#: polls-logs.php:171 polls-logs.php:219 +msgid "Registered Users" +msgstr "" + +#: polls-logs.php:172 polls-logs.php:220 +msgid "Comment Authors" +msgstr "" + +#: polls-logs.php:173 +msgid "Guests" +msgstr "" + +#: polls-logs.php:177 polls-logs.php:225 polls-logs.php:260 +msgid "Filter" +msgstr "" + +#: polls-logs.php:189 +msgid "Display Users That Voted For" +msgstr "" + +#: polls-logs.php:192 +msgid "More Than" +msgstr "" + +#: polls-logs.php:193 +msgid "More Than Or Exactly" +msgstr "" + +#: polls-logs.php:194 +msgid "Exactly" +msgstr "" + +#: polls-logs.php:195 +msgid "Less Than Or Exactly" +msgstr "" + +#: polls-logs.php:196 +msgid "Less Than" +msgstr "" + +#: polls-logs.php:203 +msgid "1 Answer" +msgstr "" + +#: polls-logs.php:206 polls-logs.php:208 +msgid "%s Answer" +msgid_plural "%s Answers" +msgstr[0] "" +msgstr[1] "" + +#: polls-logs.php:221 +msgid "Guests will automatically be excluded" +msgstr "" + +#: polls-logs.php:242 +msgid "Display What This User Has Voted" +msgstr "" + +#: polls-logs.php:268 +msgid "Clear Filter" +msgstr "" + +#: polls-logs.php:275 +msgid "Poll Logs" +msgstr "" + +#: polls-logs.php:280 +msgid "" +"This default filter is limited to display only %s records." +msgstr "" + +#: polls-logs.php:289 polls-logs.php:334 wp-polls.php:244 +msgid "Answer" +msgstr "" + +#: polls-logs.php:290 +msgid "IP" +msgstr "" + +#: polls-logs.php:291 +msgid "Host" +msgstr "" + +#: polls-logs.php:292 polls-logs.php:341 +msgid "Date" +msgstr "" + +#: polls-logs.php:299 polls-logs.php:329 polls-manager.php:266 +#: polls-manager.php:278 polls-manager.php:355 polls-manager.php:363 +#: wp-polls.php:445 wp-polls.php:450 wp-polls.php:568 wp-polls.php:573 +#: wp-polls.php:987 wp-polls.php:991 +msgid "%s @ %s" +msgstr "" + +#: polls-logs.php:309 polls-logs.php:339 +msgid "User" +msgstr "" + +#: polls-logs.php:338 +msgid "No." +msgstr "" + +#: polls-logs.php:340 +msgid "IP/Host" +msgstr "" + +#: polls-logs.php:362 +msgid "Total number of records that matches this filter: %s" +msgstr "" + +#: polls-logs.php:369 +msgid "No poll logs matches the filter." +msgstr "" + +#: polls-logs.php:371 polls-logs.php:387 +msgid "No poll logs available for this poll." +msgstr "" + +#: polls-logs.php:378 +msgid "Delete Poll Logs" +msgstr "" + +#: polls-logs.php:382 +msgid "Are You Sure You Want To Delete Logs For This Poll Only?" +msgstr "" + +#: polls-logs.php:384 wp-polls.php:239 wp-polls.php:1416 +msgid "Delete Logs For This Poll Only" +msgstr "" + +#: polls-logs.php:384 +msgid "" +"You are about to delete poll logs for this poll '%s' ONLY. This action is " +"not reversible." +msgstr "" + +#: polls-logs.php:391 polls-manager.php:469 +msgid "" +"Note: If your logging method is by IP and Cookie or by Cookie, users may " +"still be unable to vote if they have voted before as the cookie is still " +"stored in their computer." +msgstr "" + +#: polls-manager.php:36 polls-manager.php:176 polls-manager.php:295 +msgid "Edit Poll" +msgstr "" + +#: polls-manager.php:96 +msgid "No Changes Had Been Made To Poll's Question '%s'." +msgstr "" + +#: polls-manager.php:110 +msgid "No Changes Had Been Made To Poll's Answer '%s'." +msgstr "" + +#: polls-manager.php:112 +msgid "Poll's Answer '%s' Edited Successfully." +msgstr "" + +#: polls-manager.php:116 +msgid "Invalid Poll '%s'." +msgstr "" + +#: polls-manager.php:131 +msgid "Poll's Answer '%s' Added Successfully." +msgstr "" + +#: polls-manager.php:138 +msgid "Poll '%s' Edited Successfully." +msgstr "" + +#: polls-manager.php:190 +msgid "Answer No." +msgstr "" + +#: polls-manager.php:191 +msgid "Answer Text" +msgstr "" + +#: polls-manager.php:192 +msgid "No. Of Votes" +msgstr "" + +#: polls-manager.php:201 +msgid "Null Votes" +msgstr "" + +#: polls-manager.php:210 polls-manager.php:410 +msgid "Delete" +msgstr "" + +#: polls-manager.php:210 +msgid "You are about to delete this poll's answer '%s'." +msgstr "" + +#: polls-manager.php:222 +msgid "Total Votes:" +msgstr "" + +#: polls-manager.php:227 polls-manager.php:444 +msgid "Total Voters:" +msgstr "" + +#: polls-manager.php:267 +msgid "Edit Start Date/Time" +msgstr "" + +#: polls-manager.php:276 +msgid "This Poll Will Not Expire" +msgstr "" + +#: polls-manager.php:305 wp-polls.php:243 wp-polls.php:1459 +msgid "Close Poll" +msgstr "" + +#: polls-manager.php:305 +msgid "You are about to CLOSE this poll '%s'." +msgstr "" + +#: polls-manager.php:306 wp-polls.php:242 wp-polls.php:1447 +msgid "Open Poll" +msgstr "" + +#: polls-manager.php:306 +msgid "You are about to OPEN this poll '%s'." +msgstr "" + +#: polls-manager.php:325 wp-polls.php:55 +msgid "Manage Polls" +msgstr "" + +#: polls-manager.php:326 wp-polls.php:53 wp-polls.php:1536 wp-polls.php:1571 +msgid "Polls" +msgstr "" + +#: polls-manager.php:331 +msgid "ID" +msgstr "" + +#: polls-manager.php:333 polls-templates.php:121 polls-templates.php:124 +#: wp-polls.php:1735 wp-polls.php:1738 +msgid "Total Voters" +msgstr "" + +#: polls-manager.php:336 +msgid "Status" +msgstr "" + +#: polls-manager.php:337 +msgid "Action" +msgstr "" + +#: polls-manager.php:361 wp-polls.php:448 wp-polls.php:571 wp-polls.php:989 +msgid "No Expiry" +msgstr "" + +#: polls-manager.php:386 polls-manager.php:390 polls-manager.php:393 +msgid "Displayed:" +msgstr "" + +#: polls-manager.php:401 +msgid "Open" +msgstr "" + +#: polls-manager.php:403 +msgid "Future" +msgstr "" + +#: polls-manager.php:405 +msgid "Closed" +msgstr "" + +#: polls-manager.php:408 +msgid "Logs" +msgstr "" + +#: polls-manager.php:409 +msgid "Edit" +msgstr "" + +#: polls-manager.php:410 +msgid "You are about to delete this poll, '%s'." +msgstr "" + +#: polls-manager.php:418 +msgid "No Polls Found" +msgstr "" + +#: polls-manager.php:428 +msgid "Polls Stats:" +msgstr "" + +#: polls-manager.php:432 +msgid "Total Polls:" +msgstr "" + +#: polls-manager.php:436 +msgid "Total Polls' Answers:" +msgstr "" + +#: polls-manager.php:440 +msgid "Total Votes Cast:" +msgstr "" + +#: polls-manager.php:453 +msgid "Polls Logs" +msgstr "" + +#: polls-manager.php:460 +msgid "Are You Sure You Want To Delete All Polls Logs?" +msgstr "" + +#: polls-manager.php:462 wp-polls.php:237 wp-polls.php:1404 +msgid "Delete All Logs" +msgstr "" + +#: polls-manager.php:462 +msgid "You are about to delete all poll logs. This action is not reversible." +msgstr "" + +#: polls-manager.php:465 wp-polls.php:236 +msgid "No poll logs available." +msgstr "" + +#: polls-options.php:70 polls-options.php:130 polls-options.php:133 +msgid "Poll Bar Style" +msgstr "" + +#: polls-options.php:71 +msgid "Poll AJAX Style" +msgstr "" + +#: polls-options.php:72 +msgid "Sort Poll Answers By Option" +msgstr "" + +#: polls-options.php:73 +msgid "Sort Order Of Poll Answers Option" +msgstr "" + +#: polls-options.php:74 +msgid "Sort Poll Results By Option" +msgstr "" + +#: polls-options.php:75 +msgid "Sort Order Of Poll Results Option" +msgstr "" + +#: polls-options.php:76 +msgid "Number Of Polls Per Page To Display In Poll Archive Option" +msgstr "" + +#: polls-options.php:77 +msgid "Type Of Polls To Display In Poll Archive Option" +msgstr "" + +#: polls-options.php:78 +msgid "Poll Archive URL Option" +msgstr "" + +#: polls-options.php:79 +msgid "Show Poll Achive Link Option" +msgstr "" + +#: polls-options.php:80 +msgid "Current Active Poll Option" +msgstr "" + +#: polls-options.php:81 +msgid "Poll Close Option" +msgstr "" + +#: polls-options.php:82 polls-options.php:280 +msgid "Logging Method" +msgstr "" + +#: polls-options.php:83 +msgid "Cookie And Log Expiry Option" +msgstr "" + +#: polls-options.php:84 +msgid "Allow To Vote Option" +msgstr "" + +#: polls-options.php:89 polls-templates.php:84 +msgid "Updated" +msgstr "" + +#: polls-options.php:94 polls-templates.php:89 +msgid "No Poll Option Updated" +msgstr "" + +#: polls-options.php:128 wp-polls.php:57 +msgid "Poll Options" +msgstr "" + +#: polls-options.php:160 +msgid "Use CSS Style" +msgstr "" + +#: polls-options.php:164 +msgid "Poll Bar Background" +msgstr "" + +#: polls-options.php:169 +msgid "Poll Bar Border" +msgstr "" + +#: polls-options.php:174 +msgid "Poll Bar Height" +msgstr "" + +#: polls-options.php:178 +msgid "Your poll bar will look like this" +msgstr "" + +#: polls-options.php:193 +msgid "Polls AJAX Style" +msgstr "" + +#: polls-options.php:196 +msgid "Show Loading Image With Text" +msgstr "" + +#: polls-options.php:205 +msgid "Show Fading In And Fading Out Of Poll" +msgstr "" + +#: polls-options.php:216 +msgid "Sorting Of Poll Answers" +msgstr "" + +#: polls-options.php:219 +msgid "Sort Poll Answers By:" +msgstr "" + +#: polls-options.php:222 polls-options.php:247 +msgid "Exact Order" +msgstr "" + +#: polls-options.php:223 polls-options.php:248 +msgid "Alphabetical Order" +msgstr "" + +#: polls-options.php:224 polls-options.php:249 +msgid "Random Order" +msgstr "" + +#: polls-options.php:229 +msgid "Sort Order Of Poll Answers:" +msgstr "" + +#: polls-options.php:232 polls-options.php:257 +msgid "Ascending" +msgstr "" + +#: polls-options.php:233 polls-options.php:258 +msgid "Descending" +msgstr "" + +#: polls-options.php:240 +msgid "Sorting Of Poll Results" +msgstr "" + +#: polls-options.php:243 +msgid "Sort Poll Results By:" +msgstr "" + +#: polls-options.php:246 +msgid "Votes Cast" +msgstr "" + +#: polls-options.php:254 +msgid "Sort Order Of Poll Results:" +msgstr "" + +#: polls-options.php:265 +msgid "Allow To Vote" +msgstr "" + +#: polls-options.php:268 +msgid "Who Is Allowed To Vote?" +msgstr "" + +#: polls-options.php:271 +msgid "Guests Only" +msgstr "" + +#: polls-options.php:272 +msgid "Registered Users Only" +msgstr "" + +#: polls-options.php:273 +msgid "Registered Users And Guests" +msgstr "" + +#: polls-options.php:283 +msgid "Poll Logging Method:" +msgstr "" + +#: polls-options.php:286 +msgid "Do Not Log" +msgstr "" + +#: polls-options.php:287 +msgid "Logged By Cookie" +msgstr "" + +#: polls-options.php:288 +msgid "Logged By IP" +msgstr "" + +#: polls-options.php:289 +msgid "Logged By Cookie And IP" +msgstr "" + +#: polls-options.php:290 +msgid "Logged By Username" +msgstr "" + +#: polls-options.php:295 +msgid "Expiry Time For Cookie And Log:" +msgstr "" + +#: polls-options.php:296 +msgid "seconds (0 to disable)" +msgstr "" + +#: polls-options.php:301 +msgid "Poll Archive" +msgstr "" + +#: polls-options.php:304 +msgid "Number Of Polls Per Page:" +msgstr "" + +#: polls-options.php:308 +msgid "Type Of Polls To Display In Poll Archive:" +msgstr "" + +#: polls-options.php:311 +msgid "Closed Polls Only" +msgstr "" + +#: polls-options.php:312 +msgid "Opened Polls Only" +msgstr "" + +#: polls-options.php:313 +msgid "Closed And Opened Polls" +msgstr "" + +#: polls-options.php:318 +msgid "Poll Archive URL:" +msgstr "" + +#: polls-options.php:322 +msgid "Display Poll Archive Link Below Poll?" +msgstr "" + +#: polls-options.php:331 +msgid "Note" +msgstr "" + +#: polls-options.php:332 +msgid "" +"Only polls' results will be shown in the Poll Archive regardless of whether " +"the poll is closed or opened." +msgstr "" + +#: polls-options.php:337 polls-options.php:340 +msgid "Current Active Poll" +msgstr "" + +#: polls-options.php:343 wp-polls.php:1590 +msgid "Do NOT Display Poll (Disable)" +msgstr "" + +#: polls-options.php:344 wp-polls.php:1591 +msgid "Display Random Poll" +msgstr "" + +#: polls-options.php:345 wp-polls.php:1592 +msgid "Display Latest Poll" +msgstr "" + +#: polls-options.php:365 +msgid "When Poll Is Closed" +msgstr "" + +#: polls-options.php:368 +msgid "Display Poll's Results" +msgstr "" + +#: polls-options.php:369 +msgid "Display Disabled Poll's Voting Form" +msgstr "" + +#: polls-options.php:370 +msgid "Do Not Display Poll In Post/Sidebar" +msgstr "" + +#: polls-options.php:378 polls-templates.php:494 +msgid "Save Changes" +msgstr "" + +#: polls-templates.php:65 +msgid "Voting Form Header Template" +msgstr "" + +#: polls-templates.php:66 +msgid "Voting Form Body Template" +msgstr "" + +#: polls-templates.php:67 +msgid "Voting Form Footer Template" +msgstr "" + +#: polls-templates.php:68 +msgid "Result Header Template" +msgstr "" + +#: polls-templates.php:69 +msgid "Result Body Template" +msgstr "" + +#: polls-templates.php:70 +msgid "Result Body2 Template" +msgstr "" + +#: polls-templates.php:71 +msgid "Result Footer Template" +msgstr "" + +#: polls-templates.php:72 +msgid "Result Footer2 Template" +msgstr "" + +#: polls-templates.php:73 +msgid "Poll Archive Link Template" +msgstr "" + +#: polls-templates.php:74 +msgid "Poll Archive Poll Header Template" +msgstr "" + +#: polls-templates.php:75 +msgid "Poll Archive Poll Footer Template" +msgstr "" + +#: polls-templates.php:76 +msgid "Poll Archive Paging Header Template" +msgstr "" + +#: polls-templates.php:77 +msgid "Poll Archive Paging Footer Template" +msgstr "" + +#: polls-templates.php:78 +msgid "Poll Disabled Template" +msgstr "" + +#: polls-templates.php:79 +msgid "Poll Error Template" +msgstr "" + +#: polls-templates.php:109 polls-templates.php:124 wp-polls.php:1726 +#: wp-polls.php:1739 +msgid "Vote" +msgstr "" + +#: polls-templates.php:109 wp-polls.php:1727 +msgid "View Results Of This Poll" +msgstr "" + +#: polls-templates.php:109 wp-polls.php:1727 +msgid "View Results" +msgstr "" + +#: polls-templates.php:115 polls-templates.php:118 wp-polls.php:1732 +#: wp-polls.php:1733 +msgid "," +msgstr "" + +#: polls-templates.php:115 polls-templates.php:118 wp-polls.php:1732 +#: wp-polls.php:1733 +msgid "Votes" +msgstr "" + +#: polls-templates.php:118 wp-polls.php:1733 +msgid "You Have Voted For This Choice" +msgstr "" + +#: polls-templates.php:124 wp-polls.php:1739 +msgid "Vote For This Poll" +msgstr "" + +#: polls-templates.php:127 wp-polls.php:1765 +msgid "Polls Archive" +msgstr "" + +#: polls-templates.php:133 wp-polls.php:1769 +msgid "Start Date:" +msgstr "" + +#: polls-templates.php:133 wp-polls.php:1769 +msgid "End Date:" +msgstr "" + +#: polls-templates.php:142 wp-polls.php:1741 +msgid "Sorry, there are no polls available at the moment." +msgstr "" + +#: polls-templates.php:145 wp-polls.php:1742 +msgid "An error has occurred when processing your poll." +msgstr "" + +#: polls-templates.php:156 wp-polls.php:58 +msgid "Poll Templates" +msgstr "" + +#: polls-templates.php:158 +msgid "Template Variables" +msgstr "" + +#: polls-templates.php:163 +msgid "Display the poll's ID" +msgstr "" + +#: polls-templates.php:167 +msgid "Display the poll's answer ID" +msgstr "" + +#: polls-templates.php:173 +msgid "Display the poll's question" +msgstr "" + +#: polls-templates.php:177 +msgid "Display the poll's answer" +msgstr "" + +#: polls-templates.php:183 +msgid "" +"Display the poll's total votes NOT the number of people who voted for the " +"poll" +msgstr "" + +#: polls-templates.php:187 +msgid "Display the poll's answer without HTML formatting." +msgstr "" + +#: polls-templates.php:193 +msgid "Displays URL to poll's result" +msgstr "" + +#: polls-templates.php:197 +msgid "Display the poll's answer votes" +msgstr "" + +#: polls-templates.php:203 +msgid "Display the poll's most voted answer" +msgstr "" + +#: polls-templates.php:207 +msgid "Display the poll's answer percentage" +msgstr "" + +#: polls-templates.php:213 +msgid "Display the poll's answer votes for the most voted answer" +msgstr "" + +#: polls-templates.php:217 +msgid "Display the poll's answer image width" +msgstr "" + +#: polls-templates.php:223 +msgid "Display the poll's answer percentage for the most voted answer" +msgstr "" + +#: polls-templates.php:227 +msgid "Display the poll's least voted answer" +msgstr "" + +#: polls-templates.php:233 +msgid "Display the poll's start date/time" +msgstr "" + +#: polls-templates.php:237 +msgid "Display the poll's answer votes for the least voted answer" +msgstr "" + +#: polls-templates.php:243 +msgid "Display the poll's end date/time" +msgstr "" + +#: polls-templates.php:247 +msgid "Display the poll's answer percentage for the least voted answer" +msgstr "" + +#: polls-templates.php:253 +msgid "" +"Display the the maximum number of answers the user can choose if the poll " +"supports multiple answers" +msgstr "" + +#: polls-templates.php:257 +msgid "" +"Display \"checkbox\" or \"radio\" input types depending on the poll type" +msgstr "" + +#: polls-templates.php:263 +msgid "" +"Display the number of people who voted for the poll NOT the total votes of " +"the poll" +msgstr "" + +#: polls-templates.php:267 +msgid "Display the poll archive URL" +msgstr "" + +#: polls-templates.php:272 +msgid "" +"Note: %POLL_TOTALVOTES% and %POLL_TOTALVOTERS% will be different if your poll supports multiple answers. If your " +"poll allows only single answer, both value will be the same." +msgstr "" + +#: polls-templates.php:278 +msgid "Poll Voting Form Templates" +msgstr "" + +#: polls-templates.php:282 +msgid "Voting Form Header:" +msgstr "" + +#: polls-templates.php:283 polls-templates.php:298 polls-templates.php:311 +#: polls-templates.php:327 polls-templates.php:342 polls-templates.php:357 +#: polls-templates.php:372 polls-templates.php:392 polls-templates.php:417 +#: polls-templates.php:426 polls-templates.php:435 polls-templates.php:454 +#: polls-templates.php:463 polls-templates.php:477 polls-templates.php:486 +msgid "Allowed Variables:" +msgstr "" + +#: polls-templates.php:291 polls-templates.php:304 polls-templates.php:315 +#: polls-templates.php:335 polls-templates.php:350 polls-templates.php:365 +#: polls-templates.php:385 polls-templates.php:405 polls-templates.php:419 +#: polls-templates.php:428 polls-templates.php:447 polls-templates.php:456 +#: polls-templates.php:465 polls-templates.php:479 polls-templates.php:488 +msgid "Restore Default Template" +msgstr "" + +#: polls-templates.php:297 +msgid "Voting Form Body:" +msgstr "" + +#: polls-templates.php:310 +msgid "Voting Form Footer:" +msgstr "" + +#: polls-templates.php:322 +msgid "Poll Result Templates" +msgstr "" + +#: polls-templates.php:326 +msgid "Result Header:" +msgstr "" + +#: polls-templates.php:341 polls-templates.php:356 +msgid "Result Body:" +msgstr "" + +#: polls-templates.php:341 polls-templates.php:391 +msgid "Displayed When The User HAS NOT Voted" +msgstr "" + +#: polls-templates.php:356 polls-templates.php:371 +msgid "Displayed When The User HAS Voted" +msgstr "" + +#: polls-templates.php:371 polls-templates.php:391 +msgid "Result Footer:" +msgstr "" + +#: polls-templates.php:412 +msgid "Poll Archive Templates" +msgstr "" + +#: polls-templates.php:416 +msgid "Poll Archive Link" +msgstr "" + +#: polls-templates.php:416 +msgid "Template For Displaying Poll Archive Link" +msgstr "" + +#: polls-templates.php:425 +msgid "Individual Poll Header" +msgstr "" + +#: polls-templates.php:425 +msgid "Displayed Before Each Poll In The Poll Archive" +msgstr "" + +#: polls-templates.php:427 polls-templates.php:455 polls-templates.php:464 +#: polls-templates.php:478 polls-templates.php:487 +msgid "N/A" +msgstr "" + +#: polls-templates.php:434 +msgid "Individual Poll Footer" +msgstr "" + +#: polls-templates.php:434 +msgid "Displayed After Each Poll In The Poll Archive" +msgstr "" + +#: polls-templates.php:453 +msgid "Paging Header" +msgstr "" + +#: polls-templates.php:453 +msgid "Displayed Before Paging In The Poll Archive" +msgstr "" + +#: polls-templates.php:462 +msgid "Paging Footer" +msgstr "" + +#: polls-templates.php:462 +msgid "Displayed After Paging In The Poll Archive" +msgstr "" + +#: polls-templates.php:472 +msgid "Poll Misc Templates" +msgstr "" + +#: polls-templates.php:476 +msgid "Poll Disabled" +msgstr "" + +#: polls-templates.php:476 +msgid "Displayed When The Poll Is Disabled" +msgstr "" + +#: polls-templates.php:485 +msgid "Poll Error" +msgstr "" + +#: polls-templates.php:485 +msgid "Displayed When An Error Has Occured While Processing The Poll" +msgstr "" + +#: wp-polls.php:216 +msgid "Your last request is still being processed. Please wait a while ..." +msgstr "" + +#: wp-polls.php:217 +msgid "Please choose a valid poll answer." +msgstr "" + +#: wp-polls.php:218 +msgid "Maximum number of choices allowed: " +msgstr "" + +#: wp-polls.php:235 wp-polls.php:1471 +msgid "Delete Poll" +msgstr "" + +#: wp-polls.php:238 +msgid "Please check the \\'Yes\\' checkbox if you want to delete all logs." +msgstr "" + +#: wp-polls.php:240 +msgid "" +"Please check the \\'Yes\\' checkbox if you want to delete all logs for this " +"poll ONLY." +msgstr "" + +#: wp-polls.php:241 wp-polls.php:1430 +msgid "Delete Poll Answer" +msgstr "" + +#: wp-polls.php:259 +msgid "Poll" +msgstr "" + +#: wp-polls.php:260 wp-polls.php:297 +msgid "Enter Poll ID" +msgstr "" + +#: wp-polls.php:262 wp-polls.php:298 +msgid "Error: Poll ID must be numeric" +msgstr "" + +#: wp-polls.php:262 wp-polls.php:299 +msgid "Please enter Poll ID again" +msgstr "" + +#: wp-polls.php:300 +msgid "Insert Poll" +msgstr "" + +#: wp-polls.php:526 wp-polls.php:711 +msgid "Loading" +msgstr "" + +#: wp-polls.php:764 +msgid "" +"Note: There is a poll embedded within this post, please visit the site to " +"participate in this post's poll." +msgstr "" + +#: wp-polls.php:1130 +msgid "Page %s of %s" +msgstr "" + +#: wp-polls.php:1132 +msgid "« First" +msgstr "" + +#: wp-polls.php:1136 +msgid "«" +msgstr "" + +#: wp-polls.php:1146 +msgid "»" +msgstr "" + +#: wp-polls.php:1150 +msgid "Last »" +msgstr "" + +#: wp-polls.php:1305 +msgid "Invalid Poll ID" +msgstr "" + +#: wp-polls.php:1312 +msgid "Failed To Verify Referrer" +msgstr "" + +#: wp-polls.php:1364 +msgid "Unable To Update Poll Total Votes And Poll Total Voters. Poll ID #%s" +msgstr "" + +#: wp-polls.php:1367 +msgid "You Had Already Voted For This Poll. Poll ID #%s" +msgstr "" + +#: wp-polls.php:1370 +msgid "Poll ID #%s is closed" +msgstr "" + +#: wp-polls.php:1373 +msgid "Invalid Poll ID. Poll ID #%s" +msgstr "" + +#: wp-polls.php:1409 +msgid "All Polls Logs Have Been Deleted." +msgstr "" + +#: wp-polls.php:1411 +msgid "An Error Has Occurred While Deleting All Polls Logs." +msgstr "" + +#: wp-polls.php:1423 +msgid "All Logs For '%s' Has Been Deleted." +msgstr "" + +#: wp-polls.php:1425 +msgid "An Error Has Occurred While Deleting All Logs For '%s'" +msgstr "" + +#: wp-polls.php:1441 +msgid "Poll Answer '%s' Deleted Successfully." +msgstr "" + +#: wp-polls.php:1443 +msgid "Error In Deleting Poll Answer '%s'." +msgstr "" + +#: wp-polls.php:1453 +msgid "Poll '%s' Is Now Opened" +msgstr "" + +#: wp-polls.php:1455 +msgid "Error Opening Poll '%s'" +msgstr "" + +#: wp-polls.php:1465 +msgid "Poll '%s' Is Now Closed" +msgstr "" + +#: wp-polls.php:1467 +msgid "Error Closing Poll '%s'" +msgstr "" + +#: wp-polls.php:1480 +msgid "Error In Deleting Poll '%s' Question" +msgstr "" + +#: wp-polls.php:1483 +msgid "Poll '%s' Deleted Successfully" +msgstr "" + +#. #-#-#-#-# plugin.pot (WP-Polls 2.69) #-#-#-#-# +#. Plugin Name of the plugin/theme +#: wp-polls.php:1508 wp-polls.php:1510 wp-polls.php:1520 +msgid "WP-Polls" +msgstr "" + +#: wp-polls.php:1522 +msgid "%s poll was created." +msgid_plural "%s polls were created." +msgstr[0] "" +msgstr[1] "" + +#: wp-polls.php:1523 +msgid "%s polls' answer was given." +msgid_plural "%s polls' answers were given." +msgstr[0] "" +msgstr[1] "" + +#: wp-polls.php:1524 +msgid "%s vote was cast." +msgid_plural "%s votes were cast." +msgstr[0] "" +msgstr[1] "" + +#: wp-polls.php:1535 +msgid "WP-Polls polls" +msgstr "" + +#: wp-polls.php:1577 +msgid "Title:" +msgstr "" + +#: wp-polls.php:1580 +msgid "Display Polls Archive Link Below Poll?" +msgstr "" + +#: wp-polls.php:1588 +msgid "Poll To Display:" +msgstr "" + +#: wp-polls.php:1710 +msgid "How Is My Site?" +msgstr "" + +#: wp-polls.php:1713 +msgid "Good" +msgstr "" + +#: wp-polls.php:1714 +msgid "Excellent" +msgstr "" + +#: wp-polls.php:1715 +msgid "Bad" +msgstr "" + +#: wp-polls.php:1716 +msgid "Can Be Improved" +msgstr "" + +#: wp-polls.php:1717 +msgid "No Comments" +msgstr "" + +#. Plugin URI of the plugin/theme +msgid "http://lesterchan.net/portfolio/programming/php/" +msgstr "" + +#. Description of the plugin/theme +msgid "" +"Adds an AJAX poll system to your WordPress blog. You can easily include a " +"poll into your WordPress's blog post/page. WP-Polls is extremely " +"customizable via templates and css styles and there are tons of options for " +"you to choose to ensure that WP-Polls runs the way you wanted. It now " +"supports multiple selection of answers." +msgstr "" + +#. Author of the plugin/theme +msgid "Lester 'GaMerZ' Chan" +msgstr "" + +#. Author URI of the plugin/theme +msgid "http://lesterchan.net" +msgstr "" diff --git a/plugins/wp-statistics/ajax.php b/plugins/wp-statistics/ajax.php new file mode 100644 index 0000000..8ba45b1 --- /dev/null +++ b/plugins/wp-statistics/ajax.php @@ -0,0 +1,301 @@ +get_option('manage_capability', 'manage_options') ); + + if( current_user_can( $manage_cap ) ) { + $WP_Statistics->update_option( 'disable_donation_nag', true ); + } + + wp_die(); // this is required to terminate immediately and return a proper response +} +add_action( 'wp_ajax_wp_statistics_close_donation_nag', 'wp_statistics_close_donation_nag_action_callback' ); + +// Setup an AJAX action to delete an agent in the optimization page. +function wp_statistics_delete_agents_action_callback() { + GLOBAL $WP_Statistics, $wpdb; // this is how you get access to the database + + $manage_cap = wp_statistics_validate_capability( $WP_Statistics->get_option('manage_capability', 'manage_options') ); + + if( current_user_can( $manage_cap ) ) { + $agent = $_POST['agent-name']; + + if( $agent ) { + + $result = $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->prefix}statistics_visitor WHERE `agent` = %s", $agent )); + + if($result) { + echo sprintf(__('%s agent data deleted successfully.', 'wp_statistics'), '' . $agent . ''); + } + else { + _e('No agent data found to remove!', 'wp_statistics'); + } + + } else { + _e('Please select the desired items.', 'wp_statistics'); + } + } else { + _e('Access denied!', 'wp_statistics'); + } + + wp_die(); // this is required to terminate immediately and return a proper response +} +add_action( 'wp_ajax_wp_statistics_delete_agents', 'wp_statistics_delete_agents_action_callback' ); + +// Setup an AJAX action to delete a platform in the optimization page. +function wp_statistics_delete_platforms_action_callback() { + GLOBAL $WP_Statistics, $wpdb; // this is how you get access to the database + + $manage_cap = wp_statistics_validate_capability( $WP_Statistics->get_option('manage_capability', 'manage_options') ); + + if( current_user_can( $manage_cap ) ) { + $platform = $_POST['platform-name']; + + if( $platform ) { + + $result = $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->prefix}statistics_visitor WHERE `platform` = %s", $platform)); + + if($result) { + echo sprintf(__('%s platform data deleted successfully.', 'wp_statistics'), '' . htmlentities( $platform, ENT_QUOTES ) . ''); + } + else { + _e('No platform data found to remove!', 'wp_statistics'); + } + } else { + _e('Please select the desired items.', 'wp_statistics'); + } + } else { + _e('Access denied!', 'wp_statistics'); + } + + wp_die(); // this is required to terminate immediately and return a proper response +} +add_action( 'wp_ajax_wp_statistics_delete_platforms', 'wp_statistics_delete_platforms_action_callback' ); + +// Setup an AJAX action to empty a table in the optimization page. +function wp_statistics_empty_table_action_callback() { + GLOBAL $WP_Statistics, $wpdb; // this is how you get access to the database + + $manage_cap = wp_statistics_validate_capability( $WP_Statistics->get_option('manage_capability', 'manage_options') ); + + if( current_user_can( $manage_cap ) ) { + $table_name = $_POST['table-name']; + + if($table_name) { + + switch( $table_name ) { + case 'useronline': + echo wp_statitiscs_empty_table($wpdb->prefix . 'statistics_useronline'); + break; + case 'visit': + echo wp_statitiscs_empty_table($wpdb->prefix . 'statistics_visit'); + break; + case 'visitors': + echo wp_statitiscs_empty_table($wpdb->prefix . 'statistics_visitor'); + break; + case 'exclusions': + echo wp_statitiscs_empty_table($wpdb->prefix . 'statistics_exclusions'); + break; + case 'pages': + echo wp_statitiscs_empty_table($wpdb->prefix . 'statistics_pages'); + break; + case 'search': + echo wp_statitiscs_empty_table($wpdb->prefix . 'statistics_search'); + break; + case 'all': + $result_string = wp_statitiscs_empty_table($wpdb->prefix . 'statistics_useronline'); + $result_string .= '
        ' . wp_statitiscs_empty_table($wpdb->prefix . 'statistics_visit'); + $result_string .= '
        ' . wp_statitiscs_empty_table($wpdb->prefix . 'statistics_visitor'); + $result_string .= '
        ' . wp_statitiscs_empty_table($wpdb->prefix . 'statistics_exclusions'); + $result_string .= '
        ' . wp_statitiscs_empty_table($wpdb->prefix . 'statistics_pages'); + $result_string .= '
        ' . wp_statitiscs_empty_table($wpdb->prefix . 'statistics_search'); + + echo $result_string; + + break; + default: + _e('Please select the desired items.', 'wp_statistics'); + } + + $WP_Statistics->Primary_Values(); + + } else { + _e('Please select the desired items.', 'wp_statistics'); + } + } else { + _e('Access denied!', 'wp_statistics'); + } + + wp_die(); // this is required to terminate immediately and return a proper response +} +add_action( 'wp_ajax_wp_statistics_empty_table', 'wp_statistics_empty_table_action_callback' ); + +// Setup an AJAX action to purge old data in the optimization page. +function wp_statistics_purge_data_action_callback() { + GLOBAL $WP_Statistics, $wpdb; // this is how you get access to the database + + require($WP_Statistics->plugin_dir . '/includes/functions/purge.php'); + + $manage_cap = wp_statistics_validate_capability( $WP_Statistics->get_option('manage_capability', 'manage_options') ); + + if( current_user_can( $manage_cap ) ) { + $purge_days = 0; + + if( array_key_exists( 'purge-days', $_POST ) ) { + // Get the number of days to purge data before. + $purge_days = intval($_POST['purge-days']); + } + + echo wp_statistics_purge_data( $purge_days ); + } else { + _e('Access denied!', 'wp_statistics'); + } + + wp_die(); // this is required to terminate immediately and return a proper response +} +add_action( 'wp_ajax_wp_statistics_purge_data', 'wp_statistics_purge_data_action_callback' ); + +// Setup an AJAX action to purge visitors with more than a defined number of hits. +function wp_statistics_purge_visitor_hits_action_callback() { + GLOBAL $WP_Statistics, $wpdb; // this is how you get access to the database + + require($WP_Statistics->plugin_dir . '/includes/functions/purge-hits.php'); + + $manage_cap = wp_statistics_validate_capability( $WP_Statistics->get_option('manage_capability', 'manage_options') ); + + if( current_user_can( $manage_cap ) ) { + $purge_hits = 10; + + if( array_key_exists( 'purge-hits', $_POST ) ) { + // Get the number of days to purge data before. + $purge_hits = intval($_POST['purge-hits']); + } + + if( $purge_hits < 10 ) { + _e('Number of hits must be greater than or equal to 10!', 'wp_statistics'); + } + else { + echo wp_statistics_purge_visitor_hits( $purge_hits ); + } + } else { + _e('Access denied!', 'wp_statistics'); + } + + wp_die(); // this is required to terminate immediately and return a proper response +} +add_action( 'wp_ajax_wp_statistics_purge_visitor_hits', 'wp_statistics_purge_visitor_hits_action_callback' ); + +// Setup an AJAX action to purge visitors with more than a defined number of hits. +function wp_statistics_get_widget_contents_callback() { + GLOBAL $WP_Statistics, $wpdb; // this is how you get access to the database + + $widgets = array( 'about', 'browsers', 'map', 'countries', 'hits', 'hitsmap', 'page', 'pages', 'quickstats', 'recent', 'referring', 'search', 'summary', 'top.visitors', 'words' ); + + $view_cap = wp_statistics_validate_capability( $WP_Statistics->get_option('read_capability', 'manage_options') ); + + if( current_user_can( $view_cap ) ) { + $widget = ''; + + if( array_key_exists( 'widget', $_POST ) ) { + // Get the widget we're going to display. + + if( in_array( $_POST['widget'], $widgets ) ) { + $widget = $_POST['widget']; + } + } + + if( 'map' == $widget || 'hitsmap' == $widget ) { + $widget = 'jqv.map'; + } + + if( '' == $widget ) { + _e('No matching widget found!', 'wp_statistics'); + wp_die(); + } + + $ISOCountryCode = $WP_Statistics->get_country_codes(); + $search_engines = wp_statistics_searchengine_list(); + + require( $WP_Statistics->plugin_dir . '/includes/log/widgets/' . $widget . '.php' ); + + switch( $widget ) { + case 'summary': + wp_statistics_generate_summary_postbox_content($search_engines); + + break; + case 'quickstats': + wp_statistics_generate_quickstats_postbox_content($search_engines); + + break; + + case 'browsers': + wp_statistics_generate_browsers_postbox_content(); + + break; + case 'referring': + wp_statistics_generate_referring_postbox_content(); + + break; + case 'countries': + wp_statistics_generate_countries_postbox_content($ISOCountryCode); + + break; + case 'jqv.map': + wp_statistics_generate_map_postbox_content($ISOCountryCode); + + break; + case 'hits': + wp_statistics_generate_hits_postbox_content(); + + break; + case 'search': + wp_statistics_generate_search_postbox_content($search_engines); + + break; + case 'words': + wp_statistics_generate_words_postbox_content($ISOCountryCode); + + break; + case 'page': + if( array_key_exists( 'page-id', $_POST ) ) { + $pageid = (int)$_POST['page-id']; + wp_statistics_generate_page_postbox_content( null, $pageid ); + } + + break; + case 'pages': + list( $total, $uris ) = wp_statistics_get_top_pages(); + wp_statistics_generate_pages_postbox_content($total, $uris); + + break; + case 'recent': + wp_statistics_generate_recent_postbox_content($ISOCountryCode); + + break; + case 'top.visitors': + $format = null; + + if( array_key_exists( 'format', $_POST ) ) { + $format = 'compact'; + } + + wp_statistics_generate_top_visitors_postbox_content($ISOCountryCode, 'today', 10, $format); + + break; + case 'about': + wp_statistics_generate_about_postbox_content($ISOCountryCode); + + break; + default: + _e( 'ERROR: Widget not found!', 'wp_statistics' ); + } + } else { + _e('Access denied!', 'wp_statistics'); + } + + wp_die(); // this is required to terminate immediately and return a proper response +} +add_action( 'wp_ajax_wp_statistics_get_widget_contents', 'wp_statistics_get_widget_contents_callback' ); diff --git a/plugins/wp-statistics/assets/css/admin-old.css b/plugins/wp-statistics/assets/css/admin-old.css new file mode 100644 index 0000000..3281963 --- /dev/null +++ b/plugins/wp-statistics/assets/css/admin-old.css @@ -0,0 +1,9 @@ + +#adminmenu #toplevel_page_wps_overview_page div.wp-menu-image { + background: url("../images/icon.png") no-repeat scroll center center rgba(0, 0, 0, 0) !important; +} + + +#adminmenu #toplevel_page_wps_overview_page div.wp-menu-image:before { + content: ""; +} diff --git a/plugins/wp-statistics/assets/css/admin-old.min.css b/plugins/wp-statistics/assets/css/admin-old.min.css new file mode 100644 index 0000000..f0ebb63 --- /dev/null +++ b/plugins/wp-statistics/assets/css/admin-old.min.css @@ -0,0 +1 @@ +#adminmenu #toplevel_page_wps_overview_page div.wp-menu-image{background:url("../images/icon.png") no-repeat scroll center center rgba(0,0,0,0) !important}#adminmenu #toplevel_page_wps_overview_page div.wp-menu-image:before{content:""} diff --git a/plugins/wp-statistics/assets/css/admin.css b/plugins/wp-statistics/assets/css/admin.css new file mode 100644 index 0000000..2f24ca8 --- /dev/null +++ b/plugins/wp-statistics/assets/css/admin.css @@ -0,0 +1,11 @@ +#adminmenu #toplevel_page_wps_overview_page .wp-menu-image:before { + content: "\f184"; +} + +#wp-admin-bar-wp-statistic-menu .ab-icon:before{ + font-family: "dashicons" !important; + content: "\f184" !important; +} +.wps-center{ + text-align: center; +} \ No newline at end of file diff --git a/plugins/wp-statistics/assets/css/admin.min.css b/plugins/wp-statistics/assets/css/admin.min.css new file mode 100644 index 0000000..4eafac4 --- /dev/null +++ b/plugins/wp-statistics/assets/css/admin.min.css @@ -0,0 +1 @@ +#adminmenu #toplevel_page_wps_overview_page .wp-menu-image:before{content:"\f184"}#wp-admin-bar-wp-statistic-menu .ab-icon:before{font-family:"dashicons" !important;content:"\f184" !important}.wps-center{text-align:center} diff --git a/plugins/wp-statistics/assets/css/jquery-ui-1.10.4.custom.css b/plugins/wp-statistics/assets/css/jquery-ui-1.10.4.custom.css new file mode 100644 index 0000000..38bafed --- /dev/null +++ b/plugins/wp-statistics/assets/css/jquery-ui-1.10.4.custom.css @@ -0,0 +1,340 @@ +/*! jQuery UI - v1.10.4 - 2014-03-06 +* http://jqueryui.com +* Includes: jquery.ui.core.css, jquery.ui.progressbar.css, jquery.ui.tabs.css, jquery.ui.theme.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=0px&bgColorHeader=%2300ffff&bgTextureHeader=highlight_soft&bgImgOpacityHeader=100&borderColorHeader=%23aaaaaa&fcHeader=%23222222&iconColorHeader=%23222222&bgColorContent=%23ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=%23aaaaaa&fcContent=%23222222&iconColorContent=%23222222&bgColorDefault=%23e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=%23d3d3d3&fcDefault=%23555555&iconColorDefault=%23888888&bgColorHover=%23dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=%23999999&fcHover=%23212121&iconColorHover=%23454545&bgColorActive=%23ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=%23aaaaaa&fcActive=%23212121&iconColorActive=%23454545&bgColorHighlight=%23fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=%23fcefa1&fcHighlight=%23363636&iconColorHighlight=%232e83ff&bgColorError=%23fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=%23cd0a0a&fcError=%23cd0a0a&iconColorError=%23cd0a0a&bgColorOverlay=%23aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=%23aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px +* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { + display: none; +} +.ui-helper-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} +.ui-helper-reset { + margin: 0; + padding: 0; + border: 0; + outline: 0; + line-height: 1.3; + text-decoration: none; + font-size: 100%; + list-style: none; +} +.ui-helper-clearfix:before, +.ui-helper-clearfix:after { + content: ""; + display: table; + border-collapse: collapse; +} +.ui-helper-clearfix:after { + clear: both; +} +.ui-helper-clearfix { + min-height: 0; /* support: IE7 */ +} +.ui-helper-zfix { + width: 100%; + height: 100%; + top: 0; + left: 0; + position: absolute; + opacity: 0; + filter:Alpha(Opacity=0); +} + +.ui-front { + z-index: 100; +} + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { + cursor: default !important; +} + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; +} + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.ui-progressbar { + height: 2em; + text-align: left; + overflow: hidden; +} +.ui-progressbar .ui-progressbar-value { + margin: -1px; + height: 100%; +} +.ui-progressbar .ui-progressbar-overlay { + background: url("images/animated-overlay.gif"); + height: 100%; + filter: alpha(opacity=25); + opacity: 0.25; +} +.ui-progressbar-indeterminate .ui-progressbar-value { + background-image: none; +} + +#tabs { border:none; padding:0px; margin:0px; } + +.ui-tabs { + position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ + padding: .2em; +} +.ui-tabs .ui-tabs-nav { + margin: 0; + padding: .2em .2em 0; +} +.ui-tabs .ui-tabs-nav li { + list-style: none; + float: left; + position: relative; + top: 0; + margin: 1px .2em 0 0; + margin-right: 10px; + border-bottom-width: 0; + padding: 0; + white-space: nowrap; +} +.ui-tabs .ui-tabs-nav .ui-tabs-anchor { + float: left; + padding: .5em 1em; + text-decoration: none; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active { + margin-bottom: -1px; + padding-bottom: 1px; + margin-right: 10px; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor, +.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor, +.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor { + cursor: text; +} +.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor { + cursor: pointer; +} +.ui-tabs .ui-tabs-panel { + display: block; + border-width: 0; + padding: 1em 1.4em; + background: none; +} + +/* Component containers +----------------------------------*/ +.ui-widget { + font-family: Verdana,Arial,sans-serif; + font-size: 1.1em; +} +.ui-widget .ui-widget { + font-size: 1em; +} +.ui-widget input, +.ui-widget select, +.ui-widget textarea, +.ui-widget button { + font-family: Verdana,Arial,sans-serif; + font-size: 1em; +} +.ui-widget-content { + border: 1px solid #aaaaaa; + background: transparent; + color: #222222; +} +.ui-widget-content a { + color: #222222; +} +.ui-widget-header { + border-left: none; + border-top: none; + border-right: none; + border-bottom: 1px solid #aaaaaa; + background: transparent; + color: #222222; + font-weight: bold; +} +.ui-widget-header a { + color: #222222; +} + +/* Interaction states +----------------------------------*/ +.ui-state-default, +.ui-widget-content .ui-state-default, +.ui-widget-header .ui-state-default { + border: 1px solid #d3d3d3; + background: #e6e6e6; + font-weight: normal; + color: #555555; +} +.ui-state-default a, +.ui-state-default a:link, +.ui-state-default a:visited { + color: #555555; + text-decoration: none; +} +.ui-state-hover, +.ui-widget-content .ui-state-hover, +.ui-widget-header .ui-state-hover, +.ui-state-focus, +.ui-widget-content .ui-state-focus, +.ui-widget-header .ui-state-focus { + border: 1px solid #999999; + background: #dadada; + font-weight: normal; + color: #212121; +} +.ui-state-hover a, +.ui-state-hover a:hover, +.ui-state-hover a:link, +.ui-state-hover a:visited, +.ui-state-focus a, +.ui-state-focus a:hover, +.ui-state-focus a:link, +.ui-state-focus a:visited { + color: #212121; + text-decoration: none; +} +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active { + border: 1px solid #aaaaaa; + background: #ffffff; + font-weight: normal; + color: #212121; +} +.ui-state-active a, +.ui-state-active a:link, +.ui-state-active a:visited { + color: #212121; + text-decoration: none; +} + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, +.ui-widget-content .ui-state-highlight, +.ui-widget-header .ui-state-highlight { + border: 1px solid #fcefa1; + background: #fbf9ee; + color: #363636; +} +.ui-state-highlight a, +.ui-widget-content .ui-state-highlight a, +.ui-widget-header .ui-state-highlight a { + color: #363636; +} +.ui-state-error, +.ui-widget-content .ui-state-error, +.ui-widget-header .ui-state-error { + border: 1px solid #cd0a0a; + background: #fef1ec; + color: #cd0a0a; +} +.ui-state-error a, +.ui-widget-content .ui-state-error a, +.ui-widget-header .ui-state-error a { + color: #cd0a0a; +} +.ui-state-error-text, +.ui-widget-content .ui-state-error-text, +.ui-widget-header .ui-state-error-text { + color: #cd0a0a; +} +.ui-priority-primary, +.ui-widget-content .ui-priority-primary, +.ui-widget-header .ui-priority-primary { + font-weight: bold; +} +.ui-priority-secondary, +.ui-widget-content .ui-priority-secondary, +.ui-widget-header .ui-priority-secondary { + opacity: .7; + filter:Alpha(Opacity=70); + font-weight: normal; +} +.ui-state-disabled, +.ui-widget-content .ui-state-disabled, +.ui-widget-header .ui-state-disabled { + opacity: .35; + filter:Alpha(Opacity=35); + background-image: none; +} +.ui-state-disabled .ui-icon { + filter:Alpha(Opacity=35); /* For IE8 - See #6059 */ +} + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, +.ui-corner-top, +.ui-corner-left, +.ui-corner-tl { + border-top-left-radius: 0px; +} +.ui-corner-all, +.ui-corner-top, +.ui-corner-right, +.ui-corner-tr { + border-top-right-radius: 0px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-left, +.ui-corner-bl { + border-bottom-left-radius: 0px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-br { + border-bottom-right-radius: 0px; +} + +/* Overlays */ +.ui-widget-overlay { + background: #aaaaaa; + opacity: .3; + filter: Alpha(Opacity=30); +} +.ui-widget-shadow { + margin: -8px 0 0 -8px; + padding: 8px; + background: #aaaaaa; + opacity: .3; + filter: Alpha(Opacity=30); + border-radius: 8px; +} diff --git a/plugins/wp-statistics/assets/css/jquery-ui-1.10.4.custom.min.css b/plugins/wp-statistics/assets/css/jquery-ui-1.10.4.custom.min.css new file mode 100644 index 0000000..9ec25c5 --- /dev/null +++ b/plugins/wp-statistics/assets/css/jquery-ui-1.10.4.custom.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.10.4 - 2014-03-06 +* http://jqueryui.com +* Includes: jquery.ui.core.css, jquery.ui.progressbar.css, jquery.ui.tabs.css, jquery.ui.theme.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=0px&bgColorHeader=%2300ffff&bgTextureHeader=highlight_soft&bgImgOpacityHeader=100&borderColorHeader=%23aaaaaa&fcHeader=%23222222&iconColorHeader=%23222222&bgColorContent=%23ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=%23aaaaaa&fcContent=%23222222&iconColorContent=%23222222&bgColorDefault=%23e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=%23d3d3d3&fcDefault=%23555555&iconColorDefault=%23888888&bgColorHover=%23dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=%23999999&fcHover=%23212121&iconColorHover=%23454545&bgColorActive=%23ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=%23aaaaaa&fcActive=%23212121&iconColorActive=%23454545&bgColorHighlight=%23fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=%23fcefa1&fcHighlight=%23363636&iconColorHighlight=%232e83ff&bgColorError=%23fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=%23cd0a0a&fcError=%23cd0a0a&iconColorError=%23cd0a0a&bgColorOverlay=%23aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=%23aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px +* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default !important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("images/animated-overlay.gif");height:100%;filter:alpha(opacity=25);opacity:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}#tabs{border:0;padding:0;margin:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;margin-right:10px;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px;margin-right:10px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:0}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:transparent;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border-left:0;border-top:0;border-right:0;border-bottom:1px solid #aaa;background:transparent;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:0}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:0}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:0}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:0}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px} diff --git a/plugins/wp-statistics/assets/css/jquery-ui-smoothness.css b/plugins/wp-statistics/assets/css/jquery-ui-smoothness.css new file mode 100644 index 0000000..e251a61 --- /dev/null +++ b/plugins/wp-statistics/assets/css/jquery-ui-smoothness.css @@ -0,0 +1,1225 @@ +/*! jQuery UI - v1.11.4 - 2015-03-11 +* http://jqueryui.com +* Includes: core.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, draggable.css, menu.css, progressbar.css, resizable.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px +* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { + display: none; +} +.ui-helper-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} +.ui-helper-reset { + margin: 0; + padding: 0; + border: 0; + outline: 0; + line-height: 1.3; + text-decoration: none; + font-size: 100%; + list-style: none; +} +.ui-helper-clearfix:before, +.ui-helper-clearfix:after { + content: ""; + display: table; + border-collapse: collapse; +} +.ui-helper-clearfix:after { + clear: both; +} +.ui-helper-clearfix { + min-height: 0; /* support: IE7 */ +} +.ui-helper-zfix { + width: 100%; + height: 100%; + top: 0; + left: 0; + position: absolute; + opacity: 0; + filter:Alpha(Opacity=0); /* support: IE8 */ +} + +.ui-front { + z-index: 100; +} + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { + cursor: default !important; +} + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; +} + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.ui-accordion .ui-accordion-header { + display: block; + cursor: pointer; + position: relative; + margin: 2px 0 0 0; + padding: .5em .5em .5em .7em; + min-height: 0; /* support: IE7 */ + font-size: 100%; +} +.ui-accordion .ui-accordion-icons { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-icons .ui-accordion-icons { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-header .ui-accordion-header-icon { + position: absolute; + left: .5em; + top: 50%; + margin-top: -8px; +} +.ui-accordion .ui-accordion-content { + padding: 1em 2.2em; + border-top: 0; + overflow: auto; +} +.ui-autocomplete { + position: absolute; + top: 0; + left: 0; + cursor: default; +} +.ui-button { + display: inline-block; + position: relative; + padding: 0; + line-height: normal; + margin-right: .1em; + cursor: pointer; + vertical-align: middle; + text-align: center; + overflow: visible; /* removes extra width in IE */ +} +.ui-button, +.ui-button:link, +.ui-button:visited, +.ui-button:hover, +.ui-button:active { + text-decoration: none; +} +/* to make room for the icon, a width needs to be set here */ +.ui-button-icon-only { + width: 2.2em; +} +/* button elements seem to need a little more width */ +button.ui-button-icon-only { + width: 2.4em; +} +.ui-button-icons-only { + width: 3.4em; +} +button.ui-button-icons-only { + width: 3.7em; +} + +/* button text element */ +.ui-button .ui-button-text { + display: block; + line-height: normal; +} +.ui-button-text-only .ui-button-text { + padding: .4em 1em; +} +.ui-button-icon-only .ui-button-text, +.ui-button-icons-only .ui-button-text { + padding: .4em; + text-indent: -9999999px; +} +.ui-button-text-icon-primary .ui-button-text, +.ui-button-text-icons .ui-button-text { + padding: .4em 1em .4em 2.1em; +} +.ui-button-text-icon-secondary .ui-button-text, +.ui-button-text-icons .ui-button-text { + padding: .4em 2.1em .4em 1em; +} +.ui-button-text-icons .ui-button-text { + padding-left: 2.1em; + padding-right: 2.1em; +} +/* no icon support for input elements, provide padding by default */ +input.ui-button { + padding: .4em 1em; +} + +/* button icon element(s) */ +.ui-button-icon-only .ui-icon, +.ui-button-text-icon-primary .ui-icon, +.ui-button-text-icon-secondary .ui-icon, +.ui-button-text-icons .ui-icon, +.ui-button-icons-only .ui-icon { + position: absolute; + top: 50%; + margin-top: -8px; +} +.ui-button-icon-only .ui-icon { + left: 50%; + margin-left: -8px; +} +.ui-button-text-icon-primary .ui-button-icon-primary, +.ui-button-text-icons .ui-button-icon-primary, +.ui-button-icons-only .ui-button-icon-primary { + left: .5em; +} +.ui-button-text-icon-secondary .ui-button-icon-secondary, +.ui-button-text-icons .ui-button-icon-secondary, +.ui-button-icons-only .ui-button-icon-secondary { + right: .5em; +} + +/* button sets */ +.ui-buttonset { + margin-right: 7px; +} +.ui-buttonset .ui-button { + margin-left: 0; + margin-right: -.3em; +} + +/* workarounds */ +/* reset extra padding in Firefox, see h5bp.com/l */ +input.ui-button::-moz-focus-inner, +button.ui-button::-moz-focus-inner { + border: 0; + padding: 0; +} +.ui-datepicker { + width: 17em; + padding: .2em .2em 0; + display: none; +} +.ui-datepicker .ui-datepicker-header { + position: relative; + padding: .2em 0; +} +.ui-datepicker .ui-datepicker-prev, +.ui-datepicker .ui-datepicker-next { + position: absolute; + top: 2px; + width: 1.8em; + height: 1.8em; +} +.ui-datepicker .ui-datepicker-prev-hover, +.ui-datepicker .ui-datepicker-next-hover { + top: 1px; +} +.ui-datepicker .ui-datepicker-prev { + left: 2px; +} +.ui-datepicker .ui-datepicker-next { + right: 2px; +} +.ui-datepicker .ui-datepicker-prev-hover { + left: 1px; +} +.ui-datepicker .ui-datepicker-next-hover { + right: 1px; +} +.ui-datepicker .ui-datepicker-prev span, +.ui-datepicker .ui-datepicker-next span { + display: block; + position: absolute; + left: 50%; + margin-left: -8px; + top: 50%; + margin-top: -8px; +} +.ui-datepicker .ui-datepicker-title { + margin: 0 2.3em; + line-height: 1.8em; + text-align: center; +} +.ui-datepicker .ui-datepicker-title select { + font-size: 1em; + margin: 1px 0; +} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { + width: 45%; +} +.ui-datepicker table { + width: 100%; + font-size: .9em; + border-collapse: collapse; + margin: 0 0 .4em; +} +.ui-datepicker th { + padding: .7em .3em; + text-align: center; + font-weight: bold; + border: 0; +} +.ui-datepicker td { + border: 0; + padding: 1px; +} +.ui-datepicker td span, +.ui-datepicker td a { + display: block; + padding: .2em; + text-align: right; + text-decoration: none; +} +.ui-datepicker .ui-datepicker-buttonpane { + background-image: none; + margin: .7em 0 0 0; + padding: 0 .2em; + border-left: 0; + border-right: 0; + border-bottom: 0; +} +.ui-datepicker .ui-datepicker-buttonpane button { + float: right; + margin: .5em .2em .4em; + cursor: pointer; + padding: .2em .6em .3em .6em; + width: auto; + overflow: visible; +} +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { + float: left; +} + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { + width: auto; +} +.ui-datepicker-multi .ui-datepicker-group { + float: left; +} +.ui-datepicker-multi .ui-datepicker-group table { + width: 95%; + margin: 0 auto .4em; +} +.ui-datepicker-multi-2 .ui-datepicker-group { + width: 50%; +} +.ui-datepicker-multi-3 .ui-datepicker-group { + width: 33.3%; +} +.ui-datepicker-multi-4 .ui-datepicker-group { + width: 25%; +} +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { + border-left-width: 0; +} +.ui-datepicker-multi .ui-datepicker-buttonpane { + clear: left; +} +.ui-datepicker-row-break { + clear: both; + width: 100%; + font-size: 0; +} + +/* RTL support */ +.ui-datepicker-rtl { + direction: rtl; +} +.ui-datepicker-rtl .ui-datepicker-prev { + right: 2px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next { + left: 2px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-prev:hover { + right: 1px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next:hover { + left: 1px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane { + clear: right; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button { + float: left; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, +.ui-datepicker-rtl .ui-datepicker-group { + float: right; +} +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { + border-right-width: 0; + border-left-width: 1px; +} +.ui-dialog { + overflow: hidden; + position: absolute; + top: 0; + left: 0; + padding: .2em; + outline: 0; +} +.ui-dialog .ui-dialog-titlebar { + padding: .4em 1em; + position: relative; +} +.ui-dialog .ui-dialog-title { + float: left; + margin: .1em 0; + white-space: nowrap; + width: 90%; + overflow: hidden; + text-overflow: ellipsis; +} +.ui-dialog .ui-dialog-titlebar-close { + position: absolute; + right: .3em; + top: 50%; + width: 20px; + margin: -10px 0 0 0; + padding: 1px; + height: 20px; +} +.ui-dialog .ui-dialog-content { + position: relative; + border: 0; + padding: .5em 1em; + background: none; + overflow: auto; +} +.ui-dialog .ui-dialog-buttonpane { + text-align: left; + border-width: 1px 0 0 0; + background-image: none; + margin-top: .5em; + padding: .3em 1em .5em .4em; +} +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { + float: right; +} +.ui-dialog .ui-dialog-buttonpane button { + margin: .5em .4em .5em 0; + cursor: pointer; +} +.ui-dialog .ui-resizable-se { + width: 12px; + height: 12px; + right: -5px; + bottom: -5px; + background-position: 16px 16px; +} +.ui-draggable .ui-dialog-titlebar { + cursor: move; +} +.ui-draggable-handle { + -ms-touch-action: none; + touch-action: none; +} +.ui-menu { + list-style: none; + padding: 0; + margin: 0; + display: block; + outline: none; +} +.ui-menu .ui-menu { + position: absolute; +} +.ui-menu .ui-menu-item { + position: relative; + margin: 0; + padding: 3px 1em 3px .4em; + cursor: pointer; + min-height: 0; /* support: IE7 */ + /* support: IE10, see #8844 */ + list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"); +} +.ui-menu .ui-menu-divider { + margin: 5px 0; + height: 0; + font-size: 0; + line-height: 0; + border-width: 1px 0 0 0; +} +.ui-menu .ui-state-focus, +.ui-menu .ui-state-active { + margin: -1px; +} + +/* icon support */ +.ui-menu-icons { + position: relative; +} +.ui-menu-icons .ui-menu-item { + padding-left: 2em; +} + +/* left-aligned */ +.ui-menu .ui-icon { + position: absolute; + top: 0; + bottom: 0; + left: .2em; + margin: auto 0; +} + +/* right-aligned */ +.ui-menu .ui-menu-icon { + left: auto; + right: 0; +} +.ui-progressbar { + height: 2em; + text-align: left; + overflow: hidden; +} +.ui-progressbar .ui-progressbar-value { + margin: -1px; + height: 100%; +} +.ui-progressbar .ui-progressbar-overlay { + background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw=="); + height: 100%; + filter: alpha(opacity=25); /* support: IE8 */ + opacity: 0.25; +} +.ui-progressbar-indeterminate .ui-progressbar-value { + background-image: none; +} +.ui-resizable { + position: relative; +} +.ui-resizable-handle { + position: absolute; + font-size: 0.1px; + display: block; + -ms-touch-action: none; + touch-action: none; +} +.ui-resizable-disabled .ui-resizable-handle, +.ui-resizable-autohide .ui-resizable-handle { + display: none; +} +.ui-resizable-n { + cursor: n-resize; + height: 7px; + width: 100%; + top: -5px; + left: 0; +} +.ui-resizable-s { + cursor: s-resize; + height: 7px; + width: 100%; + bottom: -5px; + left: 0; +} +.ui-resizable-e { + cursor: e-resize; + width: 7px; + right: -5px; + top: 0; + height: 100%; +} +.ui-resizable-w { + cursor: w-resize; + width: 7px; + left: -5px; + top: 0; + height: 100%; +} +.ui-resizable-se { + cursor: se-resize; + width: 12px; + height: 12px; + right: 1px; + bottom: 1px; +} +.ui-resizable-sw { + cursor: sw-resize; + width: 9px; + height: 9px; + left: -5px; + bottom: -5px; +} +.ui-resizable-nw { + cursor: nw-resize; + width: 9px; + height: 9px; + left: -5px; + top: -5px; +} +.ui-resizable-ne { + cursor: ne-resize; + width: 9px; + height: 9px; + right: -5px; + top: -5px; +} +.ui-selectable { + -ms-touch-action: none; + touch-action: none; +} +.ui-selectable-helper { + position: absolute; + z-index: 100; + border: 1px dotted black; +} +.ui-selectmenu-menu { + padding: 0; + margin: 0; + position: absolute; + top: 0; + left: 0; + display: none; +} +.ui-selectmenu-menu .ui-menu { + overflow: auto; + /* Support: IE7 */ + overflow-x: hidden; + padding-bottom: 1px; +} +.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup { + font-size: 1em; + font-weight: bold; + line-height: 1.5; + padding: 2px 0.4em; + margin: 0.5em 0 0 0; + height: auto; + border: 0; +} +.ui-selectmenu-open { + display: block; +} +.ui-selectmenu-button { + display: inline-block; + overflow: hidden; + position: relative; + text-decoration: none; + cursor: pointer; +} +.ui-selectmenu-button span.ui-icon { + right: 0.5em; + left: auto; + margin-top: -8px; + position: absolute; + top: 50%; +} +.ui-selectmenu-button span.ui-selectmenu-text { + text-align: left; + padding: 0.4em 2.1em 0.4em 1em; + display: block; + line-height: 1.4; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.ui-slider { + position: relative; + text-align: left; +} +.ui-slider .ui-slider-handle { + position: absolute; + z-index: 2; + width: 1.2em; + height: 1.2em; + cursor: default; + -ms-touch-action: none; + touch-action: none; +} +.ui-slider .ui-slider-range { + position: absolute; + z-index: 1; + font-size: .7em; + display: block; + border: 0; + background-position: 0 0; +} + +/* support: IE8 - See #6727 */ +.ui-slider.ui-state-disabled .ui-slider-handle, +.ui-slider.ui-state-disabled .ui-slider-range { + filter: inherit; +} + +.ui-slider-horizontal { + height: .8em; +} +.ui-slider-horizontal .ui-slider-handle { + top: -.3em; + margin-left: -.6em; +} +.ui-slider-horizontal .ui-slider-range { + top: 0; + height: 100%; +} +.ui-slider-horizontal .ui-slider-range-min { + left: 0; +} +.ui-slider-horizontal .ui-slider-range-max { + right: 0; +} + +.ui-slider-vertical { + width: .8em; + height: 100px; +} +.ui-slider-vertical .ui-slider-handle { + left: -.3em; + margin-left: 0; + margin-bottom: -.6em; +} +.ui-slider-vertical .ui-slider-range { + left: 0; + width: 100%; +} +.ui-slider-vertical .ui-slider-range-min { + bottom: 0; +} +.ui-slider-vertical .ui-slider-range-max { + top: 0; +} +.ui-sortable-handle { + -ms-touch-action: none; + touch-action: none; +} +.ui-spinner { + position: relative; + display: inline-block; + overflow: hidden; + padding: 0; + vertical-align: middle; +} +.ui-spinner-input { + border: none; + background: none; + color: inherit; + padding: 0; + margin: .2em 0; + vertical-align: middle; + margin-left: .4em; + margin-right: 22px; +} +.ui-spinner-button { + width: 16px; + height: 50%; + font-size: .5em; + padding: 0; + margin: 0; + text-align: center; + position: absolute; + cursor: default; + display: block; + overflow: hidden; + right: 0; +} +/* more specificity required here to override default borders */ +.ui-spinner a.ui-spinner-button { + border-top: none; + border-bottom: none; + border-right: none; +} +/* vertically center icon */ +.ui-spinner .ui-icon { + position: absolute; + margin-top: -8px; + top: 50%; + left: 0; +} +.ui-spinner-up { + top: 0; +} +.ui-spinner-down { + bottom: 0; +} + +/* TR overrides */ +.ui-spinner .ui-icon-triangle-1-s { + /* need to fix icons sprite */ + background-position: -65px -16px; +} +.ui-tabs { + position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ + padding: .2em; +} +.ui-tabs .ui-tabs-nav { + margin: 0; + padding: .2em .2em 0; +} +.ui-tabs .ui-tabs-nav li { + list-style: none; + float: left; + position: relative; + top: 0; + margin: 1px .2em 0 0; + border-bottom-width: 0; + padding: 0; + white-space: nowrap; +} +.ui-tabs .ui-tabs-nav .ui-tabs-anchor { + float: left; + padding: .5em 1em; + text-decoration: none; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active { + margin-bottom: -1px; + padding-bottom: 1px; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor, +.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor, +.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor { + cursor: text; +} +.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor { + cursor: pointer; +} +.ui-tabs .ui-tabs-panel { + display: block; + border-width: 0; + padding: 1em 1.4em; + background: none; +} +.ui-tooltip { + padding: 8px; + position: absolute; + z-index: 9999; + max-width: 300px; + -webkit-box-shadow: 0 0 5px #aaa; + box-shadow: 0 0 5px #aaa; +} +body .ui-tooltip { + border-width: 2px; +} + +/* Component containers +----------------------------------*/ +.ui-widget { + font-family: Verdana,Arial,sans-serif; + font-size: 1.1em; +} +.ui-widget .ui-widget { + font-size: 1em; +} +.ui-widget input, +.ui-widget select, +.ui-widget textarea, +.ui-widget button { + font-family: Verdana,Arial,sans-serif; + font-size: 1em; +} +.ui-widget-content { + border: 1px solid #aaaaaa; + background: #ffffff url("../images/ui-bg_flat_75_ffffff_40x100.png") 50% 50% repeat-x; + color: #222222; +} +.ui-widget-content a { + color: #222222; +} +.ui-widget-header { + border: 1px solid #aaaaaa; + background: #cccccc url("../images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x; + color: #222222; + font-weight: bold; +} +.ui-widget-header a { + color: #222222; +} + +/* Interaction states +----------------------------------*/ +.ui-state-default, +.ui-widget-content .ui-state-default, +.ui-widget-header .ui-state-default { + border: 1px solid #d3d3d3; + background: #e6e6e6 url("../images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x; + font-weight: normal; + color: #555555; +} +.ui-state-default a, +.ui-state-default a:link, +.ui-state-default a:visited { + color: #555555; + text-decoration: none; +} +.ui-state-hover, +.ui-widget-content .ui-state-hover, +.ui-widget-header .ui-state-hover, +.ui-state-focus, +.ui-widget-content .ui-state-focus, +.ui-widget-header .ui-state-focus { + border: 1px solid #999999; + background: #dadada url("../images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x; + font-weight: normal; + color: #212121; +} +.ui-state-hover a, +.ui-state-hover a:hover, +.ui-state-hover a:link, +.ui-state-hover a:visited, +.ui-state-focus a, +.ui-state-focus a:hover, +.ui-state-focus a:link, +.ui-state-focus a:visited { + color: #212121; + text-decoration: none; +} +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active { + border: 1px solid #aaaaaa; + background: #ffffff url("../images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x; + font-weight: normal; + color: #212121; +} +.ui-state-active a, +.ui-state-active a:link, +.ui-state-active a:visited { + color: #212121; + text-decoration: none; +} + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, +.ui-widget-content .ui-state-highlight, +.ui-widget-header .ui-state-highlight { + border: 1px solid #fcefa1; + background: #fbf9ee url("../images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x; + color: #363636; +} +.ui-state-highlight a, +.ui-widget-content .ui-state-highlight a, +.ui-widget-header .ui-state-highlight a { + color: #363636; +} +.ui-state-error, +.ui-widget-content .ui-state-error, +.ui-widget-header .ui-state-error { + border: 1px solid #cd0a0a; + background: #fef1ec url("../images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x; + color: #cd0a0a; +} +.ui-state-error a, +.ui-widget-content .ui-state-error a, +.ui-widget-header .ui-state-error a { + color: #cd0a0a; +} +.ui-state-error-text, +.ui-widget-content .ui-state-error-text, +.ui-widget-header .ui-state-error-text { + color: #cd0a0a; +} +.ui-priority-primary, +.ui-widget-content .ui-priority-primary, +.ui-widget-header .ui-priority-primary { + font-weight: bold; +} +.ui-priority-secondary, +.ui-widget-content .ui-priority-secondary, +.ui-widget-header .ui-priority-secondary { + opacity: .7; + filter:Alpha(Opacity=70); /* support: IE8 */ + font-weight: normal; +} +.ui-state-disabled, +.ui-widget-content .ui-state-disabled, +.ui-widget-header .ui-state-disabled { + opacity: .35; + filter:Alpha(Opacity=35); /* support: IE8 */ + background-image: none; +} +.ui-state-disabled .ui-icon { + filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */ +} + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + width: 16px; + height: 16px; +} +.ui-icon, +.ui-widget-content .ui-icon { + background-image: url("../images/ui-icons_222222_256x240.png"); +} +.ui-widget-header .ui-icon { + background-image: url("../images/ui-icons_222222_256x240.png"); +} +.ui-state-default .ui-icon { + background-image: url("../images/ui-icons_888888_256x240.png"); +} +.ui-state-hover .ui-icon, +.ui-state-focus .ui-icon { + background-image: url("../images/ui-icons_454545_256x240.png"); +} +.ui-state-active .ui-icon { + background-image: url("../images/ui-icons_454545_256x240.png"); +} +.ui-state-highlight .ui-icon { + background-image: url("../images/ui-icons_2e83ff_256x240.png"); +} +.ui-state-error .ui-icon, +.ui-state-error-text .ui-icon { + background-image: url("../images/ui-icons_cd0a0a_256x240.png"); +} + +/* positioning */ +.ui-icon-blank { background-position: 16px 16px; } +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-on { background-position: -96px -144px; } +.ui-icon-radio-off { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, +.ui-corner-top, +.ui-corner-left, +.ui-corner-tl { + border-top-left-radius: 4px; +} +.ui-corner-all, +.ui-corner-top, +.ui-corner-right, +.ui-corner-tr { + border-top-right-radius: 4px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-left, +.ui-corner-bl { + border-bottom-left-radius: 4px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-br { + border-bottom-right-radius: 4px; +} + +/* Overlays */ +.ui-widget-overlay { + background: #aaaaaa url("../images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x; + opacity: .3; + filter: Alpha(Opacity=30); /* support: IE8 */ +} +.ui-widget-shadow { + margin: -8px 0 0 -8px; + padding: 8px; + background: #aaaaaa url("../images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x; + opacity: .3; + filter: Alpha(Opacity=30); /* support: IE8 */ + border-radius: 8px; +} diff --git a/plugins/wp-statistics/assets/css/jquery-ui-smoothness.min.css b/plugins/wp-statistics/assets/css/jquery-ui-smoothness.min.css new file mode 100644 index 0000000..6a81c51 --- /dev/null +++ b/plugins/wp-statistics/assets/css/jquery-ui-smoothness.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.11.4 - 2015-03-11 +* http://jqueryui.com +* Includes: core.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, draggable.css, menu.css, progressbar.css, resizable.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px +* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default !important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px .4em;margin:.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:.4em 2.1em .4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:0;background:0;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:0;border-bottom:0;border-right:0}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:0}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url("../images/ui-bg_flat_75_ffffff_40x100.png") 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url("../images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url("../images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url("../images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url("../images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url("../images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url("../images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("../images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("../images/ui-icons_222222_256x240.png")}.ui-state-default .ui-icon{background-image:url("../images/ui-icons_888888_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("../images/ui-icons_454545_256x240.png")}.ui-state-active .ui-icon{background-image:url("../images/ui-icons_454545_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("../images/ui-icons_2e83ff_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("../images/ui-icons_cd0a0a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url("../images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url("../images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px} diff --git a/plugins/wp-statistics/assets/css/log.css b/plugins/wp-statistics/assets/css/log.css new file mode 100644 index 0000000..f4d174c --- /dev/null +++ b/plugins/wp-statistics/assets/css/log.css @@ -0,0 +1,308 @@ +@media print { + #wpadminbar, + #adminmenuback, + #adminmenuwrap, + #show-settings-link { + display: none; + } + + #wpcontent, #wpfooter { + margin-left: 0px; + } +} + +#wps-postbox-container-1 { + width: 30%; + float: left; +} + +#wps-postbox-container-2 { + margin: 0 0 0 1%; + width: 68%; + float: right; +} + +@media screen and (max-width: 960px) { + #wps-postbox-container-1 { + width: 35%; + } + #wps-postbox-container-2 { + margin: 0 0 0 1%; + width: 63%; + } +} + +@media screen and (max-width: 758px) { + #wps-postbox-container-1 { + width: 100%; + } + #wps-postbox-container-2 { + margin: 0 0 0 1%; + width: 100%; + } +} + +@media screen and (max-width: 524px) { + #wps-postbox-container-1 { + width: 100%; + } + #wps-postbox-container-2 { + margin: 0 0 0 1%; + width: 100%; + } +} + +#last-log { + width: 100%; + direction: ltr; +} + +#wps-postbox-container-1 a, #wps-postbox-container-2 a, #last-log a { + text-decoration: none; +} + +#summary-stats { + background: none repeat scroll 0 0 rgba(0, 0, 0, 0); + border: 1px none; + margin: 0 0 10px; +} + +#summary-stats tr:first-child th { + border-top: 0 none; +} + +#summary-stats span { + color: #21759B !important; + font-family: Georgia,"Times New Roman","Bitstream Charter",Times,serif; + font-size: 21px; +} + +#th-colspan { + text-align: center; +} + +#th-colspan span { + color: #459605 !important; + font-size: 30px; +} + +#last-visitor tr { + text-align: center; +} + +#last-visitor tr:first-child { + background: none repeat scroll 0 0 #EEEEEE; + font-weight: bold; + text-align: center; +} + +#last-search tr { + text-align: center; +} + +#last-search tr:first-child { + background: none repeat scroll 0 0 #EEEEEE; + font-weight: bold; + text-align: center; +} + +#last-referrer tr { + text-align: left; +} + +#last-referrer tr:first-child { + background: none repeat scroll 0 0 #EEEEEE; + font-weight: bold; + text-align: center; +} + +.th-center { + text-align: center !important; +} + +.td-align { + text-align: left; +} + +.td-url { + color: #009936 !important; + direction: ltr; + font-size: 10px !important; + text-align: left; + white-space: nowrap; +} + +#map_canvas { + direction: ltr; + height: 380px; + width: 100%; +} + +.map-html-marker { + max-height: 170px; + width: 200px; +} + +.map-html-marker p { + border-bottom: 1px dashed #EFEFEF; + font-size: 10px; + margin: 2px 0; + padding: 3px 0; + text-align: left; +} + +.map-html-marker p:last-child { + border-bottom: 0 none; +} + +.log-latest { +} + +.log-item { + border-bottom: 1px solid #D3CDCD; + border-top: 1px solid #FFFFFF; + min-height: 46px; + padding: 3px 7px; +} + +.log-item:hover { + background: none repeat scroll 0 0 #EEEEEE; +} + +.show-map { + float: left; +} + +.log-referred { + float: left; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + width: auto; +} + +.log-page-title { + float: left; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + width: 100%; +} + +.log-ip { + direction: ltr; + float: right; + font-size: 10px; + margin-bottom: 5px; + white-space: pre; + overflow: hidden; + text-overflow: ellipsis; + text-align: right; +} + +.log-tools { + float: left; + margin: 0 2px; +} + +.log-agent { + float: left; +} + +.log-url { + direction: ltr; + float: left; + font-size: 10px; + margin: 0 0 0 2px; + white-space: nowrap; + width: 100%; + overflow: hidden; + text-overflow: ellipsis; +} + +.log-url img { +} + +.postbox { + overflow: hidden; +} + +#time_zone a { + font-size: 11px; + text-decoration: none; +} + +#visits-log { + direction: ltr; + height: 290px; + width: 100%; +} + +#search-engine-log { + direction: ltr; +} + +#browsers-log { + direction: ltr; + height: 330px; + margin: 0 auto; + width: 100%; +} + +#platform-log { + direction: ltr; +} + +#visits-stats { + direction: ltr; +} + +#exclusion-stats { + direction: ltr; +} + +#search-stats { + direction: ltr; +} + +#page-stats{ + direction: ltr; +} + +#about-links { + margin: 0 0 10px; +} + +#about-links p { + display: inline; + font-size: 11px; + margin: 0 2px; +} + +#about-links a { +} + +.left-div { + float: left; +} + +.right-div { + float: right; +} + +#donate-text { + float: left; +} + +#donate-button { + float: right; + margin: 12px 0 0; +} + +.jqvmap-label { + z-index: 10000; +} + +.ui-sortable { + min-height: 100px; +} \ No newline at end of file diff --git a/plugins/wp-statistics/assets/css/log.min.css b/plugins/wp-statistics/assets/css/log.min.css new file mode 100644 index 0000000..4c07c00 --- /dev/null +++ b/plugins/wp-statistics/assets/css/log.min.css @@ -0,0 +1 @@ +@media print{#wpadminbar,#adminmenuback,#adminmenuwrap,#show-settings-link{display:none}}#wps-postbox-container-1{width:30%;float:left}#wps-postbox-container-2{margin:0 0 0 1%;width:68%;float:right}@media screen and (max-width:960px){#wps-postbox-container-1{width:35%}#wps-postbox-container-2{margin:0 0 0 1%;width:63%}}@media screen and (max-width:758px){#wps-postbox-container-1{width:100%}#wps-postbox-container-2{margin:0 0 0 1%;width:100%}}@media screen and (max-width:524px){#wps-postbox-container-1{width:100%}#wps-postbox-container-2{margin:0 0 0 1%;width:100%}}#last-log{width:100%;direction:ltr}#wps-postbox-container-1 a,#wps-postbox-container-2 a,#last-log a{text-decoration:none}#summary-stats{background:none repeat scroll 0 0 rgba(0,0,0,0);border:1px none;margin:0 0 10px}#summary-stats tr:first-child th{border-top:0 none}#summary-stats span{color:#21759b !important;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-size:21px}#th-colspan{text-align:center}#th-colspan span{color:#459605 !important;font-size:30px}#last-visitor tr{text-align:center}#last-visitor tr:first-child{background:none repeat scroll 0 0 #eee;font-weight:bold;text-align:center}#last-search tr{text-align:center}#last-search tr:first-child{background:none repeat scroll 0 0 #eee;font-weight:bold;text-align:center}#last-referrer tr{text-align:left}#last-referrer tr:first-child{background:none repeat scroll 0 0 #eee;font-weight:bold;text-align:center}.th-center{text-align:center !important}.td-align{text-align:left}.td-url{color:#009936 !important;direction:ltr;font-size:10px !important;text-align:left;white-space:nowrap}#map_canvas{direction:ltr;height:380px;width:100%}.map-html-marker{max-height:170px;width:200px}.map-html-marker p{border-bottom:1px dashed #efefef;font-size:10px;margin:2px 0;padding:3px 0;text-align:left}.map-html-marker p:last-child{border-bottom:0 none}.log-item{border-bottom:1px solid #d3cdcd;border-top:1px solid #fff;min-height:46px;padding:3px 7px}.log-item:hover{background:none repeat scroll 0 0 #eee}.show-map{float:left}.log-referred{float:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:auto}.log-page-title{float:left;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%}.log-ip{direction:ltr;float:right;font-size:10px;margin-bottom:5px;white-space:pre;overflow:hidden;text-overflow:ellipsis;text-align:right}.log-tools{float:left;margin:0 2px}.log-agent{float:left}.log-url{direction:ltr;float:left;font-size:10px;margin:0 0 0 2px;white-space:nowrap;width:100%;overflow:hidden;text-overflow:ellipsis}.postbox{overflow:hidden}#time_zone a{font-size:11px;text-decoration:none}#visits-log{direction:ltr;height:290px;width:100%}#search-engine-log{direction:ltr}#browsers-log{direction:ltr;height:330px;margin:0 auto;width:100%}#platform-log{direction:ltr}#visits-stats{direction:ltr}#exclusion-stats{direction:ltr}#search-stats{direction:ltr}#page-stats{direction:ltr}#about-links{margin:0 0 10px}#about-links p{display:inline;font-size:11px;margin:0 2px}.left-div{float:left}.right-div{float:right}#donate-text{float:left}#donate-button{float:right;margin:12px 0 0}.jqvmap-label{z-index:10000}.ui-sortable{min-height:100px} diff --git a/plugins/wp-statistics/assets/css/pagination.css b/plugins/wp-statistics/assets/css/pagination.css new file mode 100644 index 0000000..6ef5bb5 --- /dev/null +++ b/plugins/wp-statistics/assets/css/pagination.css @@ -0,0 +1,49 @@ +.pagination-log { + border-top: 1px solid #f2f2f2; + direction: ltr; + padding: 14px 0 0; + text-align: center; +} +.pageOn { + background: none repeat scroll 0 0 #4dcdff; + border: 1px solid #60a8ff; + border-radius: 4px; + box-shadow: 0 1px 0 #c8e8ff inset; + color: #fff4f4; + margin: 2px; + padding: 5px 10px; +} +.pageOff { + background: none repeat scroll 0 0 #ffffff; + border: 1px solid #dadada; + border-radius: 4px; + color: #aaaaaa; + margin: 2px; + padding: 5px 9px; + text-shadow: 1px 1px #ffffff; +} +.pageOff:hover { +} +.pageOff a { + box-shadow: 0 1px 0 #ffffff inset; + color: #aaaaaa; + padding: 5px 8px; +} +.paginationSelect { + background: none repeat scroll 0 0 #eeeeee; +} +.paginationErrors { + background: none repeat scroll 0 0 #ffdd99; + border: 2px dashed #dd9900; + clear: both; + color: #aa4400; + margin: 40px auto; + padding: 10px; + text-align: left; + width: 70%; +} +#result-log { + color: #148e00; + direction: rtl; + font-weight: bold; +} \ No newline at end of file diff --git a/plugins/wp-statistics/assets/css/pagination.min.css b/plugins/wp-statistics/assets/css/pagination.min.css new file mode 100644 index 0000000..a810378 --- /dev/null +++ b/plugins/wp-statistics/assets/css/pagination.min.css @@ -0,0 +1 @@ +.pagination-log{border-top:1px solid #f2f2f2;direction:ltr;padding:14px 0 0;text-align:center}.pageOn{background:none repeat scroll 0 0 #4dcdff;border:1px solid #60a8ff;border-radius:4px;box-shadow:0 1px 0 #c8e8ff inset;color:#fff4f4;margin:2px;padding:5px 10px}.pageOff{background:none repeat scroll 0 0 #fff;border:1px solid #dadada;border-radius:4px;color:#aaa;margin:2px;padding:5px 9px;text-shadow:1px 1px #fff}.pageOff a{box-shadow:0 1px 0 #fff inset;color:#aaa;padding:5px 8px}.paginationSelect{background:none repeat scroll 0 0 #eee}.paginationErrors{background:none repeat scroll 0 0 #fd9;border:2px dashed #d90;clear:both;color:#a40;margin:40px auto;padding:10px;text-align:left;width:70%}#result-log{color:#148e00;direction:rtl;font-weight:bold} diff --git a/plugins/wp-statistics/assets/css/rtl.css b/plugins/wp-statistics/assets/css/rtl.css new file mode 100644 index 0000000..4e733cb --- /dev/null +++ b/plugins/wp-statistics/assets/css/rtl.css @@ -0,0 +1,36 @@ +#left-log { + margin: 0 1% 0 0; +} +.td-align { + text-align: right; +} +#donate-button { +} +.log-referred { + float: right; +} +.log-ip { + float: left; +} +#last-log{ + direction: rtl; +} +.ui-widget, .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button{ + font-family: tahoma; +} +.ui-tabs .ui-tabs-nav li{ + float: right; +} +.jqvmap-label{ + direction: ltr; +} +.jqplot-table-legend, .jqplot-highlighter-tooltip{ + direction: rtl; + font-family: tahoma; +} +#donate-text { + float: right; +} +#donate-button { + float: left; +} \ No newline at end of file diff --git a/plugins/wp-statistics/assets/css/rtl.min.css b/plugins/wp-statistics/assets/css/rtl.min.css new file mode 100644 index 0000000..ab2ad37 --- /dev/null +++ b/plugins/wp-statistics/assets/css/rtl.min.css @@ -0,0 +1 @@ +#left-log{margin:0 1% 0 0}.td-align{text-align:right}.log-referred{float:right}.log-ip{float:left}#last-log{direction:rtl}.ui-widget,.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:tahoma}.ui-tabs .ui-tabs-nav li{float:right}.jqvmap-label{direction:ltr}.jqplot-table-legend,.jqplot-highlighter-tooltip{direction:rtl;font-family:tahoma}#donate-text{float:right}#donate-button{float:left} diff --git a/plugins/wp-statistics/assets/css/style.css b/plugins/wp-statistics/assets/css/style.css new file mode 100644 index 0000000..b6a8d8f --- /dev/null +++ b/plugins/wp-statistics/assets/css/style.css @@ -0,0 +1,13 @@ +.note { + color: #FF0000; + font-size: 11px !important; + font-weight: bold; +} +.data { + border-top: 1px solid #CFCDCD; + font-size: 11px !important; + padding: 5px 0 0; +} +.data code { + border-radius: 2px 2px 2px 2px; +} \ No newline at end of file diff --git a/plugins/wp-statistics/assets/css/style.min.css b/plugins/wp-statistics/assets/css/style.min.css new file mode 100644 index 0000000..5af6e88 --- /dev/null +++ b/plugins/wp-statistics/assets/css/style.min.css @@ -0,0 +1 @@ +.note{color:red;font-size:11px !important;font-weight:bold}.data{border-top:1px solid #cfcdcd;font-size:11px !important;padding:5px 0 0}.data code{border-radius:2px 2px 2px 2px} diff --git a/plugins/wp-statistics/assets/images/Air.png b/plugins/wp-statistics/assets/images/Air.png new file mode 100644 index 0000000..085eaaf Binary files /dev/null and b/plugins/wp-statistics/assets/images/Air.png differ diff --git a/plugins/wp-statistics/assets/images/Android.png b/plugins/wp-statistics/assets/images/Android.png new file mode 100644 index 0000000..3d804d5 Binary files /dev/null and b/plugins/wp-statistics/assets/images/Android.png differ diff --git a/plugins/wp-statistics/assets/images/Chrome.png b/plugins/wp-statistics/assets/images/Chrome.png new file mode 100644 index 0000000..d7f88be Binary files /dev/null and b/plugins/wp-statistics/assets/images/Chrome.png differ diff --git a/plugins/wp-statistics/assets/images/Firefox.png b/plugins/wp-statistics/assets/images/Firefox.png new file mode 100644 index 0000000..552903a Binary files /dev/null and b/plugins/wp-statistics/assets/images/Firefox.png differ diff --git a/plugins/wp-statistics/assets/images/HTML.png b/plugins/wp-statistics/assets/images/HTML.png new file mode 100644 index 0000000..d34e508 Binary files /dev/null and b/plugins/wp-statistics/assets/images/HTML.png differ diff --git a/plugins/wp-statistics/assets/images/Ipad.png b/plugins/wp-statistics/assets/images/Ipad.png new file mode 100644 index 0000000..811746f Binary files /dev/null and b/plugins/wp-statistics/assets/images/Ipad.png differ diff --git a/plugins/wp-statistics/assets/images/MSIE.png b/plugins/wp-statistics/assets/images/MSIE.png new file mode 100644 index 0000000..899e25b Binary files /dev/null and b/plugins/wp-statistics/assets/images/MSIE.png differ diff --git a/plugins/wp-statistics/assets/images/ODT.png b/plugins/wp-statistics/assets/images/ODT.png new file mode 100644 index 0000000..9855dde Binary files /dev/null and b/plugins/wp-statistics/assets/images/ODT.png differ diff --git a/plugins/wp-statistics/assets/images/Opera Next.png b/plugins/wp-statistics/assets/images/Opera Next.png new file mode 100644 index 0000000..823d814 Binary files /dev/null and b/plugins/wp-statistics/assets/images/Opera Next.png differ diff --git a/plugins/wp-statistics/assets/images/Opera.png b/plugins/wp-statistics/assets/images/Opera.png new file mode 100644 index 0000000..823d814 Binary files /dev/null and b/plugins/wp-statistics/assets/images/Opera.png differ diff --git a/plugins/wp-statistics/assets/images/Safari.png b/plugins/wp-statistics/assets/images/Safari.png new file mode 100644 index 0000000..52b197f Binary files /dev/null and b/plugins/wp-statistics/assets/images/Safari.png differ diff --git a/plugins/wp-statistics/assets/images/ajax-loading.gif b/plugins/wp-statistics/assets/images/ajax-loading.gif new file mode 100644 index 0000000..8a2e5c6 Binary files /dev/null and b/plugins/wp-statistics/assets/images/ajax-loading.gif differ diff --git a/plugins/wp-statistics/assets/images/ask.png b/plugins/wp-statistics/assets/images/ask.png new file mode 100644 index 0000000..418dfb2 Binary files /dev/null and b/plugins/wp-statistics/assets/images/ask.png differ diff --git a/plugins/wp-statistics/assets/images/baidu.png b/plugins/wp-statistics/assets/images/baidu.png new file mode 100644 index 0000000..8a13c86 Binary files /dev/null and b/plugins/wp-statistics/assets/images/baidu.png differ diff --git a/plugins/wp-statistics/assets/images/bing.png b/plugins/wp-statistics/assets/images/bing.png new file mode 100644 index 0000000..9275fab Binary files /dev/null and b/plugins/wp-statistics/assets/images/bing.png differ diff --git a/plugins/wp-statistics/assets/images/clearch.png b/plugins/wp-statistics/assets/images/clearch.png new file mode 100644 index 0000000..8df72b4 Binary files /dev/null and b/plugins/wp-statistics/assets/images/clearch.png differ diff --git a/plugins/wp-statistics/assets/images/dashicons-migrate.png b/plugins/wp-statistics/assets/images/dashicons-migrate.png new file mode 100644 index 0000000..d8e9577 Binary files /dev/null and b/plugins/wp-statistics/assets/images/dashicons-migrate.png differ diff --git a/plugins/wp-statistics/assets/images/dashicons-update.png b/plugins/wp-statistics/assets/images/dashicons-update.png new file mode 100644 index 0000000..2f11a58 Binary files /dev/null and b/plugins/wp-statistics/assets/images/dashicons-update.png differ diff --git a/plugins/wp-statistics/assets/images/dashicons-visibility.png b/plugins/wp-statistics/assets/images/dashicons-visibility.png new file mode 100644 index 0000000..429d252 Binary files /dev/null and b/plugins/wp-statistics/assets/images/dashicons-visibility.png differ diff --git a/plugins/wp-statistics/assets/images/duckduckgo.png b/plugins/wp-statistics/assets/images/duckduckgo.png new file mode 100644 index 0000000..b6b8ceb Binary files /dev/null and b/plugins/wp-statistics/assets/images/duckduckgo.png differ diff --git a/plugins/wp-statistics/assets/images/flags/000.png b/plugins/wp-statistics/assets/images/flags/000.png new file mode 100644 index 0000000..d640c19 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/000.png differ diff --git a/plugins/wp-statistics/assets/images/flags/AD.png b/plugins/wp-statistics/assets/images/flags/AD.png new file mode 100644 index 0000000..9031e27 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/AD.png differ diff --git a/plugins/wp-statistics/assets/images/flags/AE.png b/plugins/wp-statistics/assets/images/flags/AE.png new file mode 100644 index 0000000..260700c Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/AE.png differ diff --git a/plugins/wp-statistics/assets/images/flags/AF.png b/plugins/wp-statistics/assets/images/flags/AF.png new file mode 100644 index 0000000..484c991 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/AF.png differ diff --git a/plugins/wp-statistics/assets/images/flags/AG.png b/plugins/wp-statistics/assets/images/flags/AG.png new file mode 100644 index 0000000..55dc94b Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/AG.png differ diff --git a/plugins/wp-statistics/assets/images/flags/AI.png b/plugins/wp-statistics/assets/images/flags/AI.png new file mode 100644 index 0000000..fc2c726 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/AI.png differ diff --git a/plugins/wp-statistics/assets/images/flags/AL.png b/plugins/wp-statistics/assets/images/flags/AL.png new file mode 100644 index 0000000..68b6144 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/AL.png differ diff --git a/plugins/wp-statistics/assets/images/flags/AM.png b/plugins/wp-statistics/assets/images/flags/AM.png new file mode 100644 index 0000000..5f7dc7b Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/AM.png differ diff --git a/plugins/wp-statistics/assets/images/flags/AN.png b/plugins/wp-statistics/assets/images/flags/AN.png new file mode 100644 index 0000000..163d334 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/AN.png differ diff --git a/plugins/wp-statistics/assets/images/flags/AO.png b/plugins/wp-statistics/assets/images/flags/AO.png new file mode 100644 index 0000000..d4fbe00 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/AO.png differ diff --git a/plugins/wp-statistics/assets/images/flags/AQ.png b/plugins/wp-statistics/assets/images/flags/AQ.png new file mode 100644 index 0000000..d62f32c Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/AQ.png differ diff --git a/plugins/wp-statistics/assets/images/flags/AR.png b/plugins/wp-statistics/assets/images/flags/AR.png new file mode 100644 index 0000000..8acaf68 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/AR.png differ diff --git a/plugins/wp-statistics/assets/images/flags/AS.png b/plugins/wp-statistics/assets/images/flags/AS.png new file mode 100644 index 0000000..a7c5cd7 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/AS.png differ diff --git a/plugins/wp-statistics/assets/images/flags/AT.png b/plugins/wp-statistics/assets/images/flags/AT.png new file mode 100644 index 0000000..2275896 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/AT.png differ diff --git a/plugins/wp-statistics/assets/images/flags/AU.png b/plugins/wp-statistics/assets/images/flags/AU.png new file mode 100644 index 0000000..a70c6b7 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/AU.png differ diff --git a/plugins/wp-statistics/assets/images/flags/AW.png b/plugins/wp-statistics/assets/images/flags/AW.png new file mode 100644 index 0000000..3a0684b Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/AW.png differ diff --git a/plugins/wp-statistics/assets/images/flags/AX.png b/plugins/wp-statistics/assets/images/flags/AX.png new file mode 100644 index 0000000..8fe63ee Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/AX.png differ diff --git a/plugins/wp-statistics/assets/images/flags/AZ.png b/plugins/wp-statistics/assets/images/flags/AZ.png new file mode 100644 index 0000000..8e90389 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/AZ.png differ diff --git a/plugins/wp-statistics/assets/images/flags/BA.png b/plugins/wp-statistics/assets/images/flags/BA.png new file mode 100644 index 0000000..040bacf Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/BA.png differ diff --git a/plugins/wp-statistics/assets/images/flags/BB.png b/plugins/wp-statistics/assets/images/flags/BB.png new file mode 100644 index 0000000..81ed981 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/BB.png differ diff --git a/plugins/wp-statistics/assets/images/flags/BD.png b/plugins/wp-statistics/assets/images/flags/BD.png new file mode 100644 index 0000000..4781f69 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/BD.png differ diff --git a/plugins/wp-statistics/assets/images/flags/BE.png b/plugins/wp-statistics/assets/images/flags/BE.png new file mode 100644 index 0000000..eebb0c4 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/BE.png differ diff --git a/plugins/wp-statistics/assets/images/flags/BF.png b/plugins/wp-statistics/assets/images/flags/BF.png new file mode 100644 index 0000000..c8739b0 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/BF.png differ diff --git a/plugins/wp-statistics/assets/images/flags/BG.png b/plugins/wp-statistics/assets/images/flags/BG.png new file mode 100644 index 0000000..4579f08 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/BG.png differ diff --git a/plugins/wp-statistics/assets/images/flags/BH.png b/plugins/wp-statistics/assets/images/flags/BH.png new file mode 100644 index 0000000..5e61b9c Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/BH.png differ diff --git a/plugins/wp-statistics/assets/images/flags/BI.png b/plugins/wp-statistics/assets/images/flags/BI.png new file mode 100644 index 0000000..8beac22 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/BI.png differ diff --git a/plugins/wp-statistics/assets/images/flags/BJ.png b/plugins/wp-statistics/assets/images/flags/BJ.png new file mode 100644 index 0000000..8ce7547 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/BJ.png differ diff --git a/plugins/wp-statistics/assets/images/flags/BM.png b/plugins/wp-statistics/assets/images/flags/BM.png new file mode 100644 index 0000000..fa4699f Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/BM.png differ diff --git a/plugins/wp-statistics/assets/images/flags/BN.png b/plugins/wp-statistics/assets/images/flags/BN.png new file mode 100644 index 0000000..8afbe1b Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/BN.png differ diff --git a/plugins/wp-statistics/assets/images/flags/BO.png b/plugins/wp-statistics/assets/images/flags/BO.png new file mode 100644 index 0000000..d9b4a78 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/BO.png differ diff --git a/plugins/wp-statistics/assets/images/flags/BR.png b/plugins/wp-statistics/assets/images/flags/BR.png new file mode 100644 index 0000000..7daab39 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/BR.png differ diff --git a/plugins/wp-statistics/assets/images/flags/BS.png b/plugins/wp-statistics/assets/images/flags/BS.png new file mode 100644 index 0000000..4fa2c4b Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/BS.png differ diff --git a/plugins/wp-statistics/assets/images/flags/BT.png b/plugins/wp-statistics/assets/images/flags/BT.png new file mode 100644 index 0000000..71b9ff5 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/BT.png differ diff --git a/plugins/wp-statistics/assets/images/flags/BW.png b/plugins/wp-statistics/assets/images/flags/BW.png new file mode 100644 index 0000000..551b48a Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/BW.png differ diff --git a/plugins/wp-statistics/assets/images/flags/BY.png b/plugins/wp-statistics/assets/images/flags/BY.png new file mode 100644 index 0000000..b5a2e3c Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/BY.png differ diff --git a/plugins/wp-statistics/assets/images/flags/BZ.png b/plugins/wp-statistics/assets/images/flags/BZ.png new file mode 100644 index 0000000..e150f0f Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/BZ.png differ diff --git a/plugins/wp-statistics/assets/images/flags/CA.png b/plugins/wp-statistics/assets/images/flags/CA.png new file mode 100644 index 0000000..1b90bea Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/CA.png differ diff --git a/plugins/wp-statistics/assets/images/flags/CD.png b/plugins/wp-statistics/assets/images/flags/CD.png new file mode 100644 index 0000000..5ac78b2 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/CD.png differ diff --git a/plugins/wp-statistics/assets/images/flags/CF.png b/plugins/wp-statistics/assets/images/flags/CF.png new file mode 100644 index 0000000..ee3a68c Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/CF.png differ diff --git a/plugins/wp-statistics/assets/images/flags/CH.png b/plugins/wp-statistics/assets/images/flags/CH.png new file mode 100644 index 0000000..c8dd942 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/CH.png differ diff --git a/plugins/wp-statistics/assets/images/flags/CI.png b/plugins/wp-statistics/assets/images/flags/CI.png new file mode 100644 index 0000000..b5f13a7 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/CI.png differ diff --git a/plugins/wp-statistics/assets/images/flags/CK.png b/plugins/wp-statistics/assets/images/flags/CK.png new file mode 100644 index 0000000..b24914b Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/CK.png differ diff --git a/plugins/wp-statistics/assets/images/flags/CL.png b/plugins/wp-statistics/assets/images/flags/CL.png new file mode 100644 index 0000000..4d9b548 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/CL.png differ diff --git a/plugins/wp-statistics/assets/images/flags/CM.png b/plugins/wp-statistics/assets/images/flags/CM.png new file mode 100644 index 0000000..1ae42f2 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/CM.png differ diff --git a/plugins/wp-statistics/assets/images/flags/CN.png b/plugins/wp-statistics/assets/images/flags/CN.png new file mode 100644 index 0000000..173b181 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/CN.png differ diff --git a/plugins/wp-statistics/assets/images/flags/CO.png b/plugins/wp-statistics/assets/images/flags/CO.png new file mode 100644 index 0000000..30476c4 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/CO.png differ diff --git a/plugins/wp-statistics/assets/images/flags/CR.png b/plugins/wp-statistics/assets/images/flags/CR.png new file mode 100644 index 0000000..399b9c4 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/CR.png differ diff --git a/plugins/wp-statistics/assets/images/flags/CS.png b/plugins/wp-statistics/assets/images/flags/CS.png new file mode 100644 index 0000000..72a4780 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/CS.png differ diff --git a/plugins/wp-statistics/assets/images/flags/CU.png b/plugins/wp-statistics/assets/images/flags/CU.png new file mode 100644 index 0000000..54ee2e5 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/CU.png differ diff --git a/plugins/wp-statistics/assets/images/flags/CV.png b/plugins/wp-statistics/assets/images/flags/CV.png new file mode 100644 index 0000000..fbf22df Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/CV.png differ diff --git a/plugins/wp-statistics/assets/images/flags/CY.png b/plugins/wp-statistics/assets/images/flags/CY.png new file mode 100644 index 0000000..9bbd09e Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/CY.png differ diff --git a/plugins/wp-statistics/assets/images/flags/CZ.png b/plugins/wp-statistics/assets/images/flags/CZ.png new file mode 100644 index 0000000..3e855a5 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/CZ.png differ diff --git a/plugins/wp-statistics/assets/images/flags/DE.png b/plugins/wp-statistics/assets/images/flags/DE.png new file mode 100644 index 0000000..63b86fd Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/DE.png differ diff --git a/plugins/wp-statistics/assets/images/flags/DJ.png b/plugins/wp-statistics/assets/images/flags/DJ.png new file mode 100644 index 0000000..335575c Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/DJ.png differ diff --git a/plugins/wp-statistics/assets/images/flags/DK.png b/plugins/wp-statistics/assets/images/flags/DK.png new file mode 100644 index 0000000..63db11d Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/DK.png differ diff --git a/plugins/wp-statistics/assets/images/flags/DM.png b/plugins/wp-statistics/assets/images/flags/DM.png new file mode 100644 index 0000000..28291b7 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/DM.png differ diff --git a/plugins/wp-statistics/assets/images/flags/DO.png b/plugins/wp-statistics/assets/images/flags/DO.png new file mode 100644 index 0000000..9434025 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/DO.png differ diff --git a/plugins/wp-statistics/assets/images/flags/DZ.png b/plugins/wp-statistics/assets/images/flags/DZ.png new file mode 100644 index 0000000..0d08e5f Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/DZ.png differ diff --git a/plugins/wp-statistics/assets/images/flags/EC.png b/plugins/wp-statistics/assets/images/flags/EC.png new file mode 100644 index 0000000..fcb9e33 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/EC.png differ diff --git a/plugins/wp-statistics/assets/images/flags/EE.png b/plugins/wp-statistics/assets/images/flags/EE.png new file mode 100644 index 0000000..7cedf4a Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/EE.png differ diff --git a/plugins/wp-statistics/assets/images/flags/EG.png b/plugins/wp-statistics/assets/images/flags/EG.png new file mode 100644 index 0000000..ebde625 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/EG.png differ diff --git a/plugins/wp-statistics/assets/images/flags/EH.png b/plugins/wp-statistics/assets/images/flags/EH.png new file mode 100644 index 0000000..ea55ea9 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/EH.png differ diff --git a/plugins/wp-statistics/assets/images/flags/ER.png b/plugins/wp-statistics/assets/images/flags/ER.png new file mode 100644 index 0000000..af4d27c Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/ER.png differ diff --git a/plugins/wp-statistics/assets/images/flags/ES.png b/plugins/wp-statistics/assets/images/flags/ES.png new file mode 100644 index 0000000..8d149a3 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/ES.png differ diff --git a/plugins/wp-statistics/assets/images/flags/ET.png b/plugins/wp-statistics/assets/images/flags/ET.png new file mode 100644 index 0000000..059cbe4 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/ET.png differ diff --git a/plugins/wp-statistics/assets/images/flags/FI.png b/plugins/wp-statistics/assets/images/flags/FI.png new file mode 100644 index 0000000..58ed9f6 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/FI.png differ diff --git a/plugins/wp-statistics/assets/images/flags/FJ.png b/plugins/wp-statistics/assets/images/flags/FJ.png new file mode 100644 index 0000000..c6fc3d3 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/FJ.png differ diff --git a/plugins/wp-statistics/assets/images/flags/FK.png b/plugins/wp-statistics/assets/images/flags/FK.png new file mode 100644 index 0000000..0f73dc4 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/FK.png differ diff --git a/plugins/wp-statistics/assets/images/flags/FM.png b/plugins/wp-statistics/assets/images/flags/FM.png new file mode 100644 index 0000000..66180a6 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/FM.png differ diff --git a/plugins/wp-statistics/assets/images/flags/FO.png b/plugins/wp-statistics/assets/images/flags/FO.png new file mode 100644 index 0000000..b8de107 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/FO.png differ diff --git a/plugins/wp-statistics/assets/images/flags/FR.png b/plugins/wp-statistics/assets/images/flags/FR.png new file mode 100644 index 0000000..3f16223 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/FR.png differ diff --git a/plugins/wp-statistics/assets/images/flags/GA.png b/plugins/wp-statistics/assets/images/flags/GA.png new file mode 100644 index 0000000..dfc5594 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/GA.png differ diff --git a/plugins/wp-statistics/assets/images/flags/GB.png b/plugins/wp-statistics/assets/images/flags/GB.png new file mode 100644 index 0000000..c7f7128 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/GB.png differ diff --git a/plugins/wp-statistics/assets/images/flags/GD.png b/plugins/wp-statistics/assets/images/flags/GD.png new file mode 100644 index 0000000..f1ebd7e Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/GD.png differ diff --git a/plugins/wp-statistics/assets/images/flags/GE.png b/plugins/wp-statistics/assets/images/flags/GE.png new file mode 100644 index 0000000..168c0e3 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/GE.png differ diff --git a/plugins/wp-statistics/assets/images/flags/GF.png b/plugins/wp-statistics/assets/images/flags/GF.png new file mode 100644 index 0000000..117f69e Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/GF.png differ diff --git a/plugins/wp-statistics/assets/images/flags/GG.png b/plugins/wp-statistics/assets/images/flags/GG.png new file mode 100644 index 0000000..42a0ee1 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/GG.png differ diff --git a/plugins/wp-statistics/assets/images/flags/GH.png b/plugins/wp-statistics/assets/images/flags/GH.png new file mode 100644 index 0000000..0775464 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/GH.png differ diff --git a/plugins/wp-statistics/assets/images/flags/GI.png b/plugins/wp-statistics/assets/images/flags/GI.png new file mode 100644 index 0000000..2df779c Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/GI.png differ diff --git a/plugins/wp-statistics/assets/images/flags/GL.png b/plugins/wp-statistics/assets/images/flags/GL.png new file mode 100644 index 0000000..aab099a Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/GL.png differ diff --git a/plugins/wp-statistics/assets/images/flags/GM.png b/plugins/wp-statistics/assets/images/flags/GM.png new file mode 100644 index 0000000..a8f96f7 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/GM.png differ diff --git a/plugins/wp-statistics/assets/images/flags/GN.png b/plugins/wp-statistics/assets/images/flags/GN.png new file mode 100644 index 0000000..aaa4254 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/GN.png differ diff --git a/plugins/wp-statistics/assets/images/flags/GP.png b/plugins/wp-statistics/assets/images/flags/GP.png new file mode 100644 index 0000000..ca40788 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/GP.png differ diff --git a/plugins/wp-statistics/assets/images/flags/GQ.png b/plugins/wp-statistics/assets/images/flags/GQ.png new file mode 100644 index 0000000..7b99fbc Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/GQ.png differ diff --git a/plugins/wp-statistics/assets/images/flags/GR.png b/plugins/wp-statistics/assets/images/flags/GR.png new file mode 100644 index 0000000..d52e9bd Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/GR.png differ diff --git a/plugins/wp-statistics/assets/images/flags/GT.png b/plugins/wp-statistics/assets/images/flags/GT.png new file mode 100644 index 0000000..cc1f6e7 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/GT.png differ diff --git a/plugins/wp-statistics/assets/images/flags/GU.png b/plugins/wp-statistics/assets/images/flags/GU.png new file mode 100644 index 0000000..42fde74 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/GU.png differ diff --git a/plugins/wp-statistics/assets/images/flags/GW.png b/plugins/wp-statistics/assets/images/flags/GW.png new file mode 100644 index 0000000..6d2cedf Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/GW.png differ diff --git a/plugins/wp-statistics/assets/images/flags/GY.png b/plugins/wp-statistics/assets/images/flags/GY.png new file mode 100644 index 0000000..7b4ce14 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/GY.png differ diff --git a/plugins/wp-statistics/assets/images/flags/HK.png b/plugins/wp-statistics/assets/images/flags/HK.png new file mode 100644 index 0000000..173b181 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/HK.png differ diff --git a/plugins/wp-statistics/assets/images/flags/HN.png b/plugins/wp-statistics/assets/images/flags/HN.png new file mode 100644 index 0000000..1d47eef Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/HN.png differ diff --git a/plugins/wp-statistics/assets/images/flags/HR.png b/plugins/wp-statistics/assets/images/flags/HR.png new file mode 100644 index 0000000..31c06b4 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/HR.png differ diff --git a/plugins/wp-statistics/assets/images/flags/HT.png b/plugins/wp-statistics/assets/images/flags/HT.png new file mode 100644 index 0000000..a99c371 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/HT.png differ diff --git a/plugins/wp-statistics/assets/images/flags/HU.png b/plugins/wp-statistics/assets/images/flags/HU.png new file mode 100644 index 0000000..c59f41f Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/HU.png differ diff --git a/plugins/wp-statistics/assets/images/flags/ID.png b/plugins/wp-statistics/assets/images/flags/ID.png new file mode 100644 index 0000000..c66335f Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/ID.png differ diff --git a/plugins/wp-statistics/assets/images/flags/IE.png b/plugins/wp-statistics/assets/images/flags/IE.png new file mode 100644 index 0000000..f3b94ac Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/IE.png differ diff --git a/plugins/wp-statistics/assets/images/flags/IL.png b/plugins/wp-statistics/assets/images/flags/IL.png new file mode 100644 index 0000000..cdf7c53 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/IL.png differ diff --git a/plugins/wp-statistics/assets/images/flags/IM.png b/plugins/wp-statistics/assets/images/flags/IM.png new file mode 100644 index 0000000..441ade4 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/IM.png differ diff --git a/plugins/wp-statistics/assets/images/flags/IN.png b/plugins/wp-statistics/assets/images/flags/IN.png new file mode 100644 index 0000000..d90456d Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/IN.png differ diff --git a/plugins/wp-statistics/assets/images/flags/IQ.png b/plugins/wp-statistics/assets/images/flags/IQ.png new file mode 100644 index 0000000..d5f361c Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/IQ.png differ diff --git a/plugins/wp-statistics/assets/images/flags/IR.png b/plugins/wp-statistics/assets/images/flags/IR.png new file mode 100644 index 0000000..79801bf Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/IR.png differ diff --git a/plugins/wp-statistics/assets/images/flags/IS.png b/plugins/wp-statistics/assets/images/flags/IS.png new file mode 100644 index 0000000..7d79389 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/IS.png differ diff --git a/plugins/wp-statistics/assets/images/flags/IT.png b/plugins/wp-statistics/assets/images/flags/IT.png new file mode 100644 index 0000000..9d4ce40 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/IT.png differ diff --git a/plugins/wp-statistics/assets/images/flags/JE.png b/plugins/wp-statistics/assets/images/flags/JE.png new file mode 100644 index 0000000..2dfc5fb Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/JE.png differ diff --git a/plugins/wp-statistics/assets/images/flags/JM.png b/plugins/wp-statistics/assets/images/flags/JM.png new file mode 100644 index 0000000..6c59518 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/JM.png differ diff --git a/plugins/wp-statistics/assets/images/flags/JO.png b/plugins/wp-statistics/assets/images/flags/JO.png new file mode 100644 index 0000000..899a4a8 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/JO.png differ diff --git a/plugins/wp-statistics/assets/images/flags/JP.png b/plugins/wp-statistics/assets/images/flags/JP.png new file mode 100644 index 0000000..0ce0a47 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/JP.png differ diff --git a/plugins/wp-statistics/assets/images/flags/KE.png b/plugins/wp-statistics/assets/images/flags/KE.png new file mode 100644 index 0000000..92897f7 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/KE.png differ diff --git a/plugins/wp-statistics/assets/images/flags/KG.png b/plugins/wp-statistics/assets/images/flags/KG.png new file mode 100644 index 0000000..8406fe3 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/KG.png differ diff --git a/plugins/wp-statistics/assets/images/flags/KH.png b/plugins/wp-statistics/assets/images/flags/KH.png new file mode 100644 index 0000000..dc2e557 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/KH.png differ diff --git a/plugins/wp-statistics/assets/images/flags/KI.png b/plugins/wp-statistics/assets/images/flags/KI.png new file mode 100644 index 0000000..4423050 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/KI.png differ diff --git a/plugins/wp-statistics/assets/images/flags/KM.png b/plugins/wp-statistics/assets/images/flags/KM.png new file mode 100644 index 0000000..d3fb7d9 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/KM.png differ diff --git a/plugins/wp-statistics/assets/images/flags/KN.png b/plugins/wp-statistics/assets/images/flags/KN.png new file mode 100644 index 0000000..febac13 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/KN.png differ diff --git a/plugins/wp-statistics/assets/images/flags/KP.png b/plugins/wp-statistics/assets/images/flags/KP.png new file mode 100644 index 0000000..f9852b5 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/KP.png differ diff --git a/plugins/wp-statistics/assets/images/flags/KR.png b/plugins/wp-statistics/assets/images/flags/KR.png new file mode 100644 index 0000000..4a4f8fb Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/KR.png differ diff --git a/plugins/wp-statistics/assets/images/flags/KW.png b/plugins/wp-statistics/assets/images/flags/KW.png new file mode 100644 index 0000000..727c69b Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/KW.png differ diff --git a/plugins/wp-statistics/assets/images/flags/KY.png b/plugins/wp-statistics/assets/images/flags/KY.png new file mode 100644 index 0000000..550f815 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/KY.png differ diff --git a/plugins/wp-statistics/assets/images/flags/KZ.png b/plugins/wp-statistics/assets/images/flags/KZ.png new file mode 100644 index 0000000..ca599c8 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/KZ.png differ diff --git a/plugins/wp-statistics/assets/images/flags/LA.png b/plugins/wp-statistics/assets/images/flags/LA.png new file mode 100644 index 0000000..4e3ce0b Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/LA.png differ diff --git a/plugins/wp-statistics/assets/images/flags/LB.png b/plugins/wp-statistics/assets/images/flags/LB.png new file mode 100644 index 0000000..08b6dd0 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/LB.png differ diff --git a/plugins/wp-statistics/assets/images/flags/LI.png b/plugins/wp-statistics/assets/images/flags/LI.png new file mode 100644 index 0000000..d99a12a Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/LI.png differ diff --git a/plugins/wp-statistics/assets/images/flags/LK.png b/plugins/wp-statistics/assets/images/flags/LK.png new file mode 100644 index 0000000..4a3aa64 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/LK.png differ diff --git a/plugins/wp-statistics/assets/images/flags/LR.png b/plugins/wp-statistics/assets/images/flags/LR.png new file mode 100644 index 0000000..026ebcb Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/LR.png differ diff --git a/plugins/wp-statistics/assets/images/flags/LS.png b/plugins/wp-statistics/assets/images/flags/LS.png new file mode 100644 index 0000000..5865b82 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/LS.png differ diff --git a/plugins/wp-statistics/assets/images/flags/LT.png b/plugins/wp-statistics/assets/images/flags/LT.png new file mode 100644 index 0000000..714784d Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/LT.png differ diff --git a/plugins/wp-statistics/assets/images/flags/LU.png b/plugins/wp-statistics/assets/images/flags/LU.png new file mode 100644 index 0000000..dcd2eda Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/LU.png differ diff --git a/plugins/wp-statistics/assets/images/flags/LV.png b/plugins/wp-statistics/assets/images/flags/LV.png new file mode 100644 index 0000000..3b2c2c8 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/LV.png differ diff --git a/plugins/wp-statistics/assets/images/flags/LY.png b/plugins/wp-statistics/assets/images/flags/LY.png new file mode 100644 index 0000000..dd7dbbb Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/LY.png differ diff --git a/plugins/wp-statistics/assets/images/flags/MA.png b/plugins/wp-statistics/assets/images/flags/MA.png new file mode 100644 index 0000000..cccbe6d Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/MA.png differ diff --git a/plugins/wp-statistics/assets/images/flags/MC.png b/plugins/wp-statistics/assets/images/flags/MC.png new file mode 100644 index 0000000..c66335f Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/MC.png differ diff --git a/plugins/wp-statistics/assets/images/flags/MD.png b/plugins/wp-statistics/assets/images/flags/MD.png new file mode 100644 index 0000000..92c934d Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/MD.png differ diff --git a/plugins/wp-statistics/assets/images/flags/ME.png b/plugins/wp-statistics/assets/images/flags/ME.png new file mode 100644 index 0000000..b265048 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/ME.png differ diff --git a/plugins/wp-statistics/assets/images/flags/MG.png b/plugins/wp-statistics/assets/images/flags/MG.png new file mode 100644 index 0000000..be1ce87 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/MG.png differ diff --git a/plugins/wp-statistics/assets/images/flags/MH.png b/plugins/wp-statistics/assets/images/flags/MH.png new file mode 100644 index 0000000..dcc39b1 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/MH.png differ diff --git a/plugins/wp-statistics/assets/images/flags/MK.png b/plugins/wp-statistics/assets/images/flags/MK.png new file mode 100644 index 0000000..253d929 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/MK.png differ diff --git a/plugins/wp-statistics/assets/images/flags/ML.png b/plugins/wp-statistics/assets/images/flags/ML.png new file mode 100644 index 0000000..2642d9e Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/ML.png differ diff --git a/plugins/wp-statistics/assets/images/flags/MM.png b/plugins/wp-statistics/assets/images/flags/MM.png new file mode 100644 index 0000000..7e58eb7 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/MM.png differ diff --git a/plugins/wp-statistics/assets/images/flags/MN.png b/plugins/wp-statistics/assets/images/flags/MN.png new file mode 100644 index 0000000..920ede4 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/MN.png differ diff --git a/plugins/wp-statistics/assets/images/flags/MO.png b/plugins/wp-statistics/assets/images/flags/MO.png new file mode 100644 index 0000000..e478154 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/MO.png differ diff --git a/plugins/wp-statistics/assets/images/flags/MP.png b/plugins/wp-statistics/assets/images/flags/MP.png new file mode 100644 index 0000000..ade07d2 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/MP.png differ diff --git a/plugins/wp-statistics/assets/images/flags/MQ.png b/plugins/wp-statistics/assets/images/flags/MQ.png new file mode 100644 index 0000000..44570c3 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/MQ.png differ diff --git a/plugins/wp-statistics/assets/images/flags/MR.png b/plugins/wp-statistics/assets/images/flags/MR.png new file mode 100644 index 0000000..245ca35 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/MR.png differ diff --git a/plugins/wp-statistics/assets/images/flags/MS.png b/plugins/wp-statistics/assets/images/flags/MS.png new file mode 100644 index 0000000..679cdad Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/MS.png differ diff --git a/plugins/wp-statistics/assets/images/flags/MT.png b/plugins/wp-statistics/assets/images/flags/MT.png new file mode 100644 index 0000000..d94b9e7 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/MT.png differ diff --git a/plugins/wp-statistics/assets/images/flags/MU.png b/plugins/wp-statistics/assets/images/flags/MU.png new file mode 100644 index 0000000..fa0aaa9 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/MU.png differ diff --git a/plugins/wp-statistics/assets/images/flags/MV.png b/plugins/wp-statistics/assets/images/flags/MV.png new file mode 100644 index 0000000..a294159 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/MV.png differ diff --git a/plugins/wp-statistics/assets/images/flags/MW.png b/plugins/wp-statistics/assets/images/flags/MW.png new file mode 100644 index 0000000..51b5e31 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/MW.png differ diff --git a/plugins/wp-statistics/assets/images/flags/MX.png b/plugins/wp-statistics/assets/images/flags/MX.png new file mode 100644 index 0000000..c1bd33b Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/MX.png differ diff --git a/plugins/wp-statistics/assets/images/flags/MY.png b/plugins/wp-statistics/assets/images/flags/MY.png new file mode 100644 index 0000000..4498960 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/MY.png differ diff --git a/plugins/wp-statistics/assets/images/flags/MZ.png b/plugins/wp-statistics/assets/images/flags/MZ.png new file mode 100644 index 0000000..e8d9b6a Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/MZ.png differ diff --git a/plugins/wp-statistics/assets/images/flags/NA.png b/plugins/wp-statistics/assets/images/flags/NA.png new file mode 100644 index 0000000..61cf1e0 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/NA.png differ diff --git a/plugins/wp-statistics/assets/images/flags/NATO.png b/plugins/wp-statistics/assets/images/flags/NATO.png new file mode 100644 index 0000000..a350da0 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/NATO.png differ diff --git a/plugins/wp-statistics/assets/images/flags/NC.png b/plugins/wp-statistics/assets/images/flags/NC.png new file mode 100644 index 0000000..7dc765d Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/NC.png differ diff --git a/plugins/wp-statistics/assets/images/flags/NE.png b/plugins/wp-statistics/assets/images/flags/NE.png new file mode 100644 index 0000000..31b8e43 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/NE.png differ diff --git a/plugins/wp-statistics/assets/images/flags/NF.png b/plugins/wp-statistics/assets/images/flags/NF.png new file mode 100644 index 0000000..1bbe095 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/NF.png differ diff --git a/plugins/wp-statistics/assets/images/flags/NG.png b/plugins/wp-statistics/assets/images/flags/NG.png new file mode 100644 index 0000000..7b30c22 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/NG.png differ diff --git a/plugins/wp-statistics/assets/images/flags/NI.png b/plugins/wp-statistics/assets/images/flags/NI.png new file mode 100644 index 0000000..7247d83 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/NI.png differ diff --git a/plugins/wp-statistics/assets/images/flags/NL.png b/plugins/wp-statistics/assets/images/flags/NL.png new file mode 100644 index 0000000..10e8ea0 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/NL.png differ diff --git a/plugins/wp-statistics/assets/images/flags/NO.png b/plugins/wp-statistics/assets/images/flags/NO.png new file mode 100644 index 0000000..f629dc4 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/NO.png differ diff --git a/plugins/wp-statistics/assets/images/flags/NP.png b/plugins/wp-statistics/assets/images/flags/NP.png new file mode 100644 index 0000000..6dfe9ea Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/NP.png differ diff --git a/plugins/wp-statistics/assets/images/flags/NR.png b/plugins/wp-statistics/assets/images/flags/NR.png new file mode 100644 index 0000000..8cffaca Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/NR.png differ diff --git a/plugins/wp-statistics/assets/images/flags/NZ.png b/plugins/wp-statistics/assets/images/flags/NZ.png new file mode 100644 index 0000000..810c8bc Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/NZ.png differ diff --git a/plugins/wp-statistics/assets/images/flags/OM.png b/plugins/wp-statistics/assets/images/flags/OM.png new file mode 100644 index 0000000..282aeed Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/OM.png differ diff --git a/plugins/wp-statistics/assets/images/flags/OPEC.png b/plugins/wp-statistics/assets/images/flags/OPEC.png new file mode 100644 index 0000000..0d09ad3 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/OPEC.png differ diff --git a/plugins/wp-statistics/assets/images/flags/PA.png b/plugins/wp-statistics/assets/images/flags/PA.png new file mode 100644 index 0000000..81d3fd5 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/PA.png differ diff --git a/plugins/wp-statistics/assets/images/flags/PE.png b/plugins/wp-statistics/assets/images/flags/PE.png new file mode 100644 index 0000000..8d2691e Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/PE.png differ diff --git a/plugins/wp-statistics/assets/images/flags/PF.png b/plugins/wp-statistics/assets/images/flags/PF.png new file mode 100644 index 0000000..117f69e Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/PF.png differ diff --git a/plugins/wp-statistics/assets/images/flags/PG.png b/plugins/wp-statistics/assets/images/flags/PG.png new file mode 100644 index 0000000..3f8143f Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/PG.png differ diff --git a/plugins/wp-statistics/assets/images/flags/PH.png b/plugins/wp-statistics/assets/images/flags/PH.png new file mode 100644 index 0000000..2225029 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/PH.png differ diff --git a/plugins/wp-statistics/assets/images/flags/PK.png b/plugins/wp-statistics/assets/images/flags/PK.png new file mode 100644 index 0000000..e9192a6 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/PK.png differ diff --git a/plugins/wp-statistics/assets/images/flags/PL.png b/plugins/wp-statistics/assets/images/flags/PL.png new file mode 100644 index 0000000..079871b Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/PL.png differ diff --git a/plugins/wp-statistics/assets/images/flags/PR.png b/plugins/wp-statistics/assets/images/flags/PR.png new file mode 100644 index 0000000..2469b57 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/PR.png differ diff --git a/plugins/wp-statistics/assets/images/flags/PS.png b/plugins/wp-statistics/assets/images/flags/PS.png new file mode 100644 index 0000000..bad0691 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/PS.png differ diff --git a/plugins/wp-statistics/assets/images/flags/PT.png b/plugins/wp-statistics/assets/images/flags/PT.png new file mode 100644 index 0000000..7a8ca65 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/PT.png differ diff --git a/plugins/wp-statistics/assets/images/flags/PW.png b/plugins/wp-statistics/assets/images/flags/PW.png new file mode 100644 index 0000000..f4425f7 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/PW.png differ diff --git a/plugins/wp-statistics/assets/images/flags/PY.png b/plugins/wp-statistics/assets/images/flags/PY.png new file mode 100644 index 0000000..21607d3 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/PY.png differ diff --git a/plugins/wp-statistics/assets/images/flags/QA.png b/plugins/wp-statistics/assets/images/flags/QA.png new file mode 100644 index 0000000..6442606 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/QA.png differ diff --git a/plugins/wp-statistics/assets/images/flags/RE.png b/plugins/wp-statistics/assets/images/flags/RE.png new file mode 100644 index 0000000..129cbb5 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/RE.png differ diff --git a/plugins/wp-statistics/assets/images/flags/RO.png b/plugins/wp-statistics/assets/images/flags/RO.png new file mode 100644 index 0000000..b7a4b87 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/RO.png differ diff --git a/plugins/wp-statistics/assets/images/flags/RS.png b/plugins/wp-statistics/assets/images/flags/RS.png new file mode 100644 index 0000000..a359144 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/RS.png differ diff --git a/plugins/wp-statistics/assets/images/flags/RU.png b/plugins/wp-statistics/assets/images/flags/RU.png new file mode 100644 index 0000000..30459ae Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/RU.png differ diff --git a/plugins/wp-statistics/assets/images/flags/RW.png b/plugins/wp-statistics/assets/images/flags/RW.png new file mode 100644 index 0000000..f593964 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/RW.png differ diff --git a/plugins/wp-statistics/assets/images/flags/SA.png b/plugins/wp-statistics/assets/images/flags/SA.png new file mode 100644 index 0000000..1b49e61 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/SA.png differ diff --git a/plugins/wp-statistics/assets/images/flags/SB.png b/plugins/wp-statistics/assets/images/flags/SB.png new file mode 100644 index 0000000..833d9c9 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/SB.png differ diff --git a/plugins/wp-statistics/assets/images/flags/SC.png b/plugins/wp-statistics/assets/images/flags/SC.png new file mode 100644 index 0000000..7597d86 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/SC.png differ diff --git a/plugins/wp-statistics/assets/images/flags/SD.png b/plugins/wp-statistics/assets/images/flags/SD.png new file mode 100644 index 0000000..4a54678 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/SD.png differ diff --git a/plugins/wp-statistics/assets/images/flags/SE.png b/plugins/wp-statistics/assets/images/flags/SE.png new file mode 100644 index 0000000..22f6e7e Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/SE.png differ diff --git a/plugins/wp-statistics/assets/images/flags/SG.png b/plugins/wp-statistics/assets/images/flags/SG.png new file mode 100644 index 0000000..aceea6d Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/SG.png differ diff --git a/plugins/wp-statistics/assets/images/flags/SI.png b/plugins/wp-statistics/assets/images/flags/SI.png new file mode 100644 index 0000000..2bc05e1 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/SI.png differ diff --git a/plugins/wp-statistics/assets/images/flags/SK.png b/plugins/wp-statistics/assets/images/flags/SK.png new file mode 100644 index 0000000..6c717be Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/SK.png differ diff --git a/plugins/wp-statistics/assets/images/flags/SL.png b/plugins/wp-statistics/assets/images/flags/SL.png new file mode 100644 index 0000000..3daf482 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/SL.png differ diff --git a/plugins/wp-statistics/assets/images/flags/SM.png b/plugins/wp-statistics/assets/images/flags/SM.png new file mode 100644 index 0000000..88cca4d Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/SM.png differ diff --git a/plugins/wp-statistics/assets/images/flags/SN.png b/plugins/wp-statistics/assets/images/flags/SN.png new file mode 100644 index 0000000..ebd84c0 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/SN.png differ diff --git a/plugins/wp-statistics/assets/images/flags/SO.png b/plugins/wp-statistics/assets/images/flags/SO.png new file mode 100644 index 0000000..b5cd16e Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/SO.png differ diff --git a/plugins/wp-statistics/assets/images/flags/SR.png b/plugins/wp-statistics/assets/images/flags/SR.png new file mode 100644 index 0000000..2f2a77b Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/SR.png differ diff --git a/plugins/wp-statistics/assets/images/flags/SS.png b/plugins/wp-statistics/assets/images/flags/SS.png new file mode 100644 index 0000000..4831146 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/SS.png differ diff --git a/plugins/wp-statistics/assets/images/flags/ST.png b/plugins/wp-statistics/assets/images/flags/ST.png new file mode 100644 index 0000000..9279a37 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/ST.png differ diff --git a/plugins/wp-statistics/assets/images/flags/SV.png b/plugins/wp-statistics/assets/images/flags/SV.png new file mode 100644 index 0000000..ccb8882 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/SV.png differ diff --git a/plugins/wp-statistics/assets/images/flags/SY.png b/plugins/wp-statistics/assets/images/flags/SY.png new file mode 100644 index 0000000..0b765cc Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/SY.png differ diff --git a/plugins/wp-statistics/assets/images/flags/SZ.png b/plugins/wp-statistics/assets/images/flags/SZ.png new file mode 100644 index 0000000..1ec4f63 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/SZ.png differ diff --git a/plugins/wp-statistics/assets/images/flags/TC.png b/plugins/wp-statistics/assets/images/flags/TC.png new file mode 100644 index 0000000..0d9791e Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/TC.png differ diff --git a/plugins/wp-statistics/assets/images/flags/TD.png b/plugins/wp-statistics/assets/images/flags/TD.png new file mode 100644 index 0000000..cace22f Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/TD.png differ diff --git a/plugins/wp-statistics/assets/images/flags/TG.png b/plugins/wp-statistics/assets/images/flags/TG.png new file mode 100644 index 0000000..7e9fd29 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/TG.png differ diff --git a/plugins/wp-statistics/assets/images/flags/TH.png b/plugins/wp-statistics/assets/images/flags/TH.png new file mode 100644 index 0000000..643665a Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/TH.png differ diff --git a/plugins/wp-statistics/assets/images/flags/TJ.png b/plugins/wp-statistics/assets/images/flags/TJ.png new file mode 100644 index 0000000..1270d45 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/TJ.png differ diff --git a/plugins/wp-statistics/assets/images/flags/TL.png b/plugins/wp-statistics/assets/images/flags/TL.png new file mode 100644 index 0000000..bb5e4d1 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/TL.png differ diff --git a/plugins/wp-statistics/assets/images/flags/TN.png b/plugins/wp-statistics/assets/images/flags/TN.png new file mode 100644 index 0000000..96549ae Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/TN.png differ diff --git a/plugins/wp-statistics/assets/images/flags/TO.png b/plugins/wp-statistics/assets/images/flags/TO.png new file mode 100644 index 0000000..1914b39 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/TO.png differ diff --git a/plugins/wp-statistics/assets/images/flags/TR.png b/plugins/wp-statistics/assets/images/flags/TR.png new file mode 100644 index 0000000..668f5f7 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/TR.png differ diff --git a/plugins/wp-statistics/assets/images/flags/TT.png b/plugins/wp-statistics/assets/images/flags/TT.png new file mode 100644 index 0000000..655e6eb Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/TT.png differ diff --git a/plugins/wp-statistics/assets/images/flags/TV.png b/plugins/wp-statistics/assets/images/flags/TV.png new file mode 100644 index 0000000..e25dc16 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/TV.png differ diff --git a/plugins/wp-statistics/assets/images/flags/TW.png b/plugins/wp-statistics/assets/images/flags/TW.png new file mode 100644 index 0000000..30f98a1 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/TW.png differ diff --git a/plugins/wp-statistics/assets/images/flags/TZ.png b/plugins/wp-statistics/assets/images/flags/TZ.png new file mode 100644 index 0000000..c7a2ec8 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/TZ.png differ diff --git a/plugins/wp-statistics/assets/images/flags/UA.png b/plugins/wp-statistics/assets/images/flags/UA.png new file mode 100644 index 0000000..9b05e4c Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/UA.png differ diff --git a/plugins/wp-statistics/assets/images/flags/UG.png b/plugins/wp-statistics/assets/images/flags/UG.png new file mode 100644 index 0000000..3fc5255 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/UG.png differ diff --git a/plugins/wp-statistics/assets/images/flags/US.png b/plugins/wp-statistics/assets/images/flags/US.png new file mode 100644 index 0000000..09c94a0 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/US.png differ diff --git a/plugins/wp-statistics/assets/images/flags/UY.png b/plugins/wp-statistics/assets/images/flags/UY.png new file mode 100644 index 0000000..bbd1f1a Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/UY.png differ diff --git a/plugins/wp-statistics/assets/images/flags/UZ.png b/plugins/wp-statistics/assets/images/flags/UZ.png new file mode 100644 index 0000000..ff9e70b Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/UZ.png differ diff --git a/plugins/wp-statistics/assets/images/flags/VA.png b/plugins/wp-statistics/assets/images/flags/VA.png new file mode 100644 index 0000000..fef6194 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/VA.png differ diff --git a/plugins/wp-statistics/assets/images/flags/VC.png b/plugins/wp-statistics/assets/images/flags/VC.png new file mode 100644 index 0000000..8de9ab8 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/VC.png differ diff --git a/plugins/wp-statistics/assets/images/flags/VE.png b/plugins/wp-statistics/assets/images/flags/VE.png new file mode 100644 index 0000000..e8af855 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/VE.png differ diff --git a/plugins/wp-statistics/assets/images/flags/VG.png b/plugins/wp-statistics/assets/images/flags/VG.png new file mode 100644 index 0000000..c751c25 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/VG.png differ diff --git a/plugins/wp-statistics/assets/images/flags/VI.png b/plugins/wp-statistics/assets/images/flags/VI.png new file mode 100644 index 0000000..fe75334 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/VI.png differ diff --git a/plugins/wp-statistics/assets/images/flags/VN.png b/plugins/wp-statistics/assets/images/flags/VN.png new file mode 100644 index 0000000..dedeb75 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/VN.png differ diff --git a/plugins/wp-statistics/assets/images/flags/VU.png b/plugins/wp-statistics/assets/images/flags/VU.png new file mode 100644 index 0000000..0b26c42 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/VU.png differ diff --git a/plugins/wp-statistics/assets/images/flags/WS.png b/plugins/wp-statistics/assets/images/flags/WS.png new file mode 100644 index 0000000..e1d7730 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/WS.png differ diff --git a/plugins/wp-statistics/assets/images/flags/YE.png b/plugins/wp-statistics/assets/images/flags/YE.png new file mode 100644 index 0000000..f2902a3 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/YE.png differ diff --git a/plugins/wp-statistics/assets/images/flags/ZA.png b/plugins/wp-statistics/assets/images/flags/ZA.png new file mode 100644 index 0000000..3ed5ce8 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/ZA.png differ diff --git a/plugins/wp-statistics/assets/images/flags/ZM.png b/plugins/wp-statistics/assets/images/flags/ZM.png new file mode 100644 index 0000000..918653f Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/ZM.png differ diff --git a/plugins/wp-statistics/assets/images/flags/ZW.png b/plugins/wp-statistics/assets/images/flags/ZW.png new file mode 100644 index 0000000..ac356e0 Binary files /dev/null and b/plugins/wp-statistics/assets/images/flags/ZW.png differ diff --git a/plugins/wp-statistics/assets/images/google.png b/plugins/wp-statistics/assets/images/google.png new file mode 100644 index 0000000..9e4330d Binary files /dev/null and b/plugins/wp-statistics/assets/images/google.png differ diff --git a/plugins/wp-statistics/assets/images/icon.png b/plugins/wp-statistics/assets/images/icon.png new file mode 100644 index 0000000..b0821ed Binary files /dev/null and b/plugins/wp-statistics/assets/images/icon.png differ diff --git a/plugins/wp-statistics/assets/images/link.png b/plugins/wp-statistics/assets/images/link.png new file mode 100644 index 0000000..b8edc12 Binary files /dev/null and b/plugins/wp-statistics/assets/images/link.png differ diff --git a/plugins/wp-statistics/assets/images/loading.gif b/plugins/wp-statistics/assets/images/loading.gif new file mode 100644 index 0000000..d60f1b8 Binary files /dev/null and b/plugins/wp-statistics/assets/images/loading.gif differ diff --git a/plugins/wp-statistics/assets/images/logo-250.png b/plugins/wp-statistics/assets/images/logo-250.png new file mode 100644 index 0000000..f2abd8d Binary files /dev/null and b/plugins/wp-statistics/assets/images/logo-250.png differ diff --git a/plugins/wp-statistics/assets/images/map.png b/plugins/wp-statistics/assets/images/map.png new file mode 100644 index 0000000..c74641e Binary files /dev/null and b/plugins/wp-statistics/assets/images/map.png differ diff --git a/plugins/wp-statistics/assets/images/marker.png b/plugins/wp-statistics/assets/images/marker.png new file mode 100644 index 0000000..9166162 Binary files /dev/null and b/plugins/wp-statistics/assets/images/marker.png differ diff --git a/plugins/wp-statistics/assets/images/ui-bg_flat_0_aaaaaa_40x100.png b/plugins/wp-statistics/assets/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100644 index 0000000..5b5dab2 Binary files /dev/null and b/plugins/wp-statistics/assets/images/ui-bg_flat_0_aaaaaa_40x100.png differ diff --git a/plugins/wp-statistics/assets/images/ui-bg_flat_75_ffffff_40x100.png b/plugins/wp-statistics/assets/images/ui-bg_flat_75_ffffff_40x100.png new file mode 100644 index 0000000..ac8b229 Binary files /dev/null and b/plugins/wp-statistics/assets/images/ui-bg_flat_75_ffffff_40x100.png differ diff --git a/plugins/wp-statistics/assets/images/ui-bg_glass_55_fbf9ee_1x400.png b/plugins/wp-statistics/assets/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100644 index 0000000..ad3d634 Binary files /dev/null and b/plugins/wp-statistics/assets/images/ui-bg_glass_55_fbf9ee_1x400.png differ diff --git a/plugins/wp-statistics/assets/images/ui-bg_glass_65_ffffff_1x400.png b/plugins/wp-statistics/assets/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100644 index 0000000..42ccba2 Binary files /dev/null and b/plugins/wp-statistics/assets/images/ui-bg_glass_65_ffffff_1x400.png differ diff --git a/plugins/wp-statistics/assets/images/ui-bg_glass_75_dadada_1x400.png b/plugins/wp-statistics/assets/images/ui-bg_glass_75_dadada_1x400.png new file mode 100644 index 0000000..5a46b47 Binary files /dev/null and b/plugins/wp-statistics/assets/images/ui-bg_glass_75_dadada_1x400.png differ diff --git a/plugins/wp-statistics/assets/images/ui-bg_glass_75_e6e6e6_1x400.png b/plugins/wp-statistics/assets/images/ui-bg_glass_75_e6e6e6_1x400.png new file mode 100644 index 0000000..5a69f8d Binary files /dev/null and b/plugins/wp-statistics/assets/images/ui-bg_glass_75_e6e6e6_1x400.png differ diff --git a/plugins/wp-statistics/assets/images/ui-bg_glass_95_fef1ec_1x400.png b/plugins/wp-statistics/assets/images/ui-bg_glass_95_fef1ec_1x400.png new file mode 100644 index 0000000..4443fdc Binary files /dev/null and b/plugins/wp-statistics/assets/images/ui-bg_glass_95_fef1ec_1x400.png differ diff --git a/plugins/wp-statistics/assets/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/plugins/wp-statistics/assets/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100644 index 0000000..28bb2a1 Binary files /dev/null and b/plugins/wp-statistics/assets/images/ui-bg_highlight-soft_75_cccccc_1x100.png differ diff --git a/plugins/wp-statistics/assets/images/ui-icons_222222_256x240.png b/plugins/wp-statistics/assets/images/ui-icons_222222_256x240.png new file mode 100644 index 0000000..e9c8e16 Binary files /dev/null and b/plugins/wp-statistics/assets/images/ui-icons_222222_256x240.png differ diff --git a/plugins/wp-statistics/assets/images/ui-icons_2e83ff_256x240.png b/plugins/wp-statistics/assets/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 0000000..f2bf838 Binary files /dev/null and b/plugins/wp-statistics/assets/images/ui-icons_2e83ff_256x240.png differ diff --git a/plugins/wp-statistics/assets/images/ui-icons_454545_256x240.png b/plugins/wp-statistics/assets/images/ui-icons_454545_256x240.png new file mode 100644 index 0000000..d6169e8 Binary files /dev/null and b/plugins/wp-statistics/assets/images/ui-icons_454545_256x240.png differ diff --git a/plugins/wp-statistics/assets/images/ui-icons_888888_256x240.png b/plugins/wp-statistics/assets/images/ui-icons_888888_256x240.png new file mode 100644 index 0000000..d3e6e02 Binary files /dev/null and b/plugins/wp-statistics/assets/images/ui-icons_888888_256x240.png differ diff --git a/plugins/wp-statistics/assets/images/ui-icons_cd0a0a_256x240.png b/plugins/wp-statistics/assets/images/ui-icons_cd0a0a_256x240.png new file mode 100644 index 0000000..4937018 Binary files /dev/null and b/plugins/wp-statistics/assets/images/ui-icons_cd0a0a_256x240.png differ diff --git a/plugins/wp-statistics/assets/images/unknown.png b/plugins/wp-statistics/assets/images/unknown.png new file mode 100644 index 0000000..0e41b83 Binary files /dev/null and b/plugins/wp-statistics/assets/images/unknown.png differ diff --git a/plugins/wp-statistics/assets/images/yahoo.png b/plugins/wp-statistics/assets/images/yahoo.png new file mode 100644 index 0000000..520bb3a Binary files /dev/null and b/plugins/wp-statistics/assets/images/yahoo.png differ diff --git a/plugins/wp-statistics/assets/images/yandex.png b/plugins/wp-statistics/assets/images/yandex.png new file mode 100644 index 0000000..01575f4 Binary files /dev/null and b/plugins/wp-statistics/assets/images/yandex.png differ diff --git a/plugins/wp-statistics/assets/index.php b/plugins/wp-statistics/assets/index.php new file mode 100644 index 0000000..a6ce9c8 --- /dev/null +++ b/plugins/wp-statistics/assets/index.php @@ -0,0 +1,2 @@ + and contained within this distribution for further information. + * + * The author would appreciate an email letting him know of any substantial + * use of jqPlot. You can reach the author at: chris at jqplot dot com + * or see http://www.jqplot.com/info.php. This is, of course, not required. + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php. + * + * sprintf functions contained in jqplot.sprintf.js by Ash Searle: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + * + * About: Introduction + * + * jqPlot requires jQuery (1.4+ required for certain features). jQuery 1.4.2 is included in the distribution. + * To use jqPlot include jQuery, the jqPlot jQuery plugin, the jqPlot css file and optionally + * the excanvas script for IE support in your web page: + * + * > + * > + * > + * > + * + * jqPlot can be customized by overriding the defaults of any of the objects which make + * up the plot. The general usage of jqplot is: + * + * > chart = $.jqplot('targetElemId', [dataArray,...], {optionsObject}); + * + * The options available to jqplot are detailed in in the jqPlotOptions.txt file. + * + * An actual call to $.jqplot() may look like the + * examples below: + * + * > chart = $.jqplot('chartdiv', [[[1, 2],[3,5.12],[5,13.1],[7,33.6],[9,85.9],[11,219.9]]]); + * + * or + * + * > dataArray = [34,12,43,55,77]; + * > chart = $.jqplot('targetElemId', [dataArray, ...], {title:'My Plot', axes:{yaxis:{min:20, max:100}}}); + * + * For more inforrmation, see . + * + * About: Usage + * + * See + * + * About: Available Options + * + * See for a list of options available thorugh the options object (not complete yet!) + * + * About: Options Usage + * + * See + * + * About: Changes + * + * See + * + */ + +(function($) { + // make sure undefined is undefined + var undefined; + + $.fn.emptyForce = function() { + for ( var i = 0, elem; (elem = $(this)[i]) != null; i++ ) { + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + $.cleanData( elem.getElementsByTagName("*") ); + } + + // Remove any remaining nodes + if ($.jqplot.use_excanvas) { + elem.outerHTML = ""; + } + else { + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + } + + elem = null; + } + + return $(this); + }; + + $.fn.removeChildForce = function(parent) { + while ( parent.firstChild ) { + this.removeChildForce( parent.firstChild ); + parent.removeChild( parent.firstChild ); + } + }; + + $.fn.jqplot = function() { + var datas = []; + var options = []; + // see how many data arrays we have + for (var i=0, l=arguments.length; i'+msg+'
        '); + $('#'+target).addClass('jqplot-error'); + document.getElementById(target).style.background = $.jqplot.config.errorBackground; + document.getElementById(target).style.border = $.jqplot.config.errorBorder; + document.getElementById(target).style.fontFamily = $.jqplot.config.errorFontFamily; + document.getElementById(target).style.fontSize = $.jqplot.config.errorFontSize; + document.getElementById(target).style.fontStyle = $.jqplot.config.errorFontStyle; + document.getElementById(target).style.fontWeight = $.jqplot.config.errorFontWeight; + } + } + else { + plot.init(target, _data, _options); + plot.draw(); + plot.themeEngine.init.call(plot); + return plot; + } + }; + + $.jqplot.version = "1.0.9"; + $.jqplot.revision = "c465c44"; + + $.jqplot.targetCounter = 1; + + // canvas manager to reuse canvases on the plot. + // Should help solve problem of canvases not being freed and + // problem of waiting forever for firefox to decide to free memory. + $.jqplot.CanvasManager = function() { + // canvases are managed globally so that they can be reused + // across plots after they have been freed + if (typeof $.jqplot.CanvasManager.canvases == 'undefined') { + $.jqplot.CanvasManager.canvases = []; + $.jqplot.CanvasManager.free = []; + } + + var myCanvases = []; + + this.getCanvas = function() { + var canvas; + var makeNew = true; + + if (!$.jqplot.use_excanvas) { + for (var i = 0, l = $.jqplot.CanvasManager.canvases.length; i < l; i++) { + if ($.jqplot.CanvasManager.free[i] === true) { + makeNew = false; + canvas = $.jqplot.CanvasManager.canvases[i]; + // $(canvas).removeClass('jqplot-canvasManager-free').addClass('jqplot-canvasManager-inuse'); + $.jqplot.CanvasManager.free[i] = false; + myCanvases.push(i); + break; + } + } + } + + if (makeNew) { + canvas = document.createElement('canvas'); + myCanvases.push($.jqplot.CanvasManager.canvases.length); + $.jqplot.CanvasManager.canvases.push(canvas); + $.jqplot.CanvasManager.free.push(false); + } + + return canvas; + }; + + // this method has to be used after settings the dimesions + // on the element returned by getCanvas() + this.initCanvas = function(canvas) { + if ($.jqplot.use_excanvas) { + return window.G_vmlCanvasManager.initElement(canvas); + } + + var cctx = canvas.getContext('2d'); + + var canvasBackingScale = 1; + if (window.devicePixelRatio > 1 && (cctx.webkitBackingStorePixelRatio === undefined || + cctx.webkitBackingStorePixelRatio < 2)) { + canvasBackingScale = window.devicePixelRatio; + } + var oldWidth = canvas.width; + var oldHeight = canvas.height; + + canvas.width = canvasBackingScale * canvas.width; + canvas.height = canvasBackingScale * canvas.height; + canvas.style.width = oldWidth + 'px'; + canvas.style.height = oldHeight + 'px'; + cctx.save(); + + cctx.scale(canvasBackingScale, canvasBackingScale); + + return canvas; + }; + + this.freeAllCanvases = function() { + for (var i = 0, l=myCanvases.length; i < l; i++) { + this.freeCanvas(myCanvases[i]); + } + myCanvases = []; + }; + + this.freeCanvas = function(idx) { + if ($.jqplot.use_excanvas && window.G_vmlCanvasManager.uninitElement !== undefined) { + // excanvas can't be reused, but properly unset + window.G_vmlCanvasManager.uninitElement($.jqplot.CanvasManager.canvases[idx]); + $.jqplot.CanvasManager.canvases[idx] = null; + } + else { + var canvas = $.jqplot.CanvasManager.canvases[idx]; + canvas.getContext('2d').clearRect(0, 0, canvas.width, canvas.height); + $(canvas).unbind().removeAttr('class').removeAttr('style'); + // Style attributes seemed to be still hanging around. wierd. Some ticks + // still retained a left: 0px attribute after reusing a canvas. + $(canvas).css({left: '', top: '', position: ''}); + // setting size to 0 may save memory of unused canvases? + canvas.width = 0; + canvas.height = 0; + $.jqplot.CanvasManager.free[idx] = true; + } + }; + + }; + + + // Convienence function that won't hang IE or FF without FireBug. + $.jqplot.log = function() { + if (window.console) { + window.console.log.apply(window.console, arguments); + } + }; + + $.jqplot.config = { + addDomReference: false, + enablePlugins:false, + defaultHeight:300, + defaultWidth:400, + UTCAdjust:false, + timezoneOffset: new Date(new Date().getTimezoneOffset() * 60000), + errorMessage: '', + errorBackground: '', + errorBorder: '', + errorFontFamily: '', + errorFontSize: '', + errorFontStyle: '', + errorFontWeight: '', + catchErrors: false, + defaultTickFormatString: "%.1f", + defaultColors: [ "#4bb2c5", "#EAA228", "#c5b47f", "#579575", "#839557", "#958c12", "#953579", "#4b5de4", "#d8b83f", "#ff5800", "#0085cc", "#c747a3", "#cddf54", "#FBD178", "#26B4E3", "#bd70c7"], + defaultNegativeColors: [ "#498991", "#C08840", "#9F9274", "#546D61", "#646C4A", "#6F6621", "#6E3F5F", "#4F64B0", "#A89050", "#C45923", "#187399", "#945381", "#959E5C", "#C7AF7B", "#478396", "#907294"], + dashLength: 4, + gapLength: 4, + dotGapLength: 2.5, + srcLocation: 'jqplot/src/', + pluginLocation: 'jqplot/src/plugins/' + }; + + + $.jqplot.arrayMax = function( array ){ + return Math.max.apply( Math, array ); + }; + + $.jqplot.arrayMin = function( array ){ + return Math.min.apply( Math, array ); + }; + + $.jqplot.enablePlugins = $.jqplot.config.enablePlugins; + + // canvas related tests taken from modernizer: + // Copyright (c) 2009 - 2010 Faruk Ates. + // http://www.modernizr.com + + $.jqplot.support_canvas = function() { + if (typeof $.jqplot.support_canvas.result == 'undefined') { + $.jqplot.support_canvas.result = !!document.createElement('canvas').getContext; + } + return $.jqplot.support_canvas.result; + }; + + $.jqplot.support_canvas_text = function() { + if (typeof $.jqplot.support_canvas_text.result == 'undefined') { + if (window.G_vmlCanvasManager !== undefined && window.G_vmlCanvasManager._version > 887) { + $.jqplot.support_canvas_text.result = true; + } + else { + $.jqplot.support_canvas_text.result = !!(document.createElement('canvas').getContext && typeof document.createElement('canvas').getContext('2d').fillText == 'function'); + } + + } + return $.jqplot.support_canvas_text.result; + }; + + $.jqplot.use_excanvas = ((!$.support.boxModel || !$.support.objectAll || !$support.leadingWhitespace) && !$.jqplot.support_canvas()) ? true : false; + + /** + * + * Hooks: jqPlot Pugin Hooks + * + * $.jqplot.preInitHooks - called before initialization. + * $.jqplot.postInitHooks - called after initialization. + * $.jqplot.preParseOptionsHooks - called before user options are parsed. + * $.jqplot.postParseOptionsHooks - called after user options are parsed. + * $.jqplot.preDrawHooks - called before plot draw. + * $.jqplot.postDrawHooks - called after plot draw. + * $.jqplot.preDrawSeriesHooks - called before each series is drawn. + * $.jqplot.postDrawSeriesHooks - called after each series is drawn. + * $.jqplot.preDrawLegendHooks - called before the legend is drawn. + * $.jqplot.addLegendRowHooks - called at the end of legend draw, so plugins + * can add rows to the legend table. + * $.jqplot.preSeriesInitHooks - called before series is initialized. + * $.jqplot.postSeriesInitHooks - called after series is initialized. + * $.jqplot.preParseSeriesOptionsHooks - called before series related options + * are parsed. + * $.jqplot.postParseSeriesOptionsHooks - called after series related options + * are parsed. + * $.jqplot.eventListenerHooks - called at the end of plot drawing, binds + * listeners to the event canvas which lays on top of the grid area. + * $.jqplot.preDrawSeriesShadowHooks - called before series shadows are drawn. + * $.jqplot.postDrawSeriesShadowHooks - called after series shadows are drawn. + * + */ + + $.jqplot.preInitHooks = []; + $.jqplot.postInitHooks = []; + $.jqplot.preParseOptionsHooks = []; + $.jqplot.postParseOptionsHooks = []; + $.jqplot.preDrawHooks = []; + $.jqplot.postDrawHooks = []; + $.jqplot.preDrawSeriesHooks = []; + $.jqplot.postDrawSeriesHooks = []; + $.jqplot.preDrawLegendHooks = []; + $.jqplot.addLegendRowHooks = []; + $.jqplot.preSeriesInitHooks = []; + $.jqplot.postSeriesInitHooks = []; + $.jqplot.preParseSeriesOptionsHooks = []; + $.jqplot.postParseSeriesOptionsHooks = []; + $.jqplot.eventListenerHooks = []; + $.jqplot.preDrawSeriesShadowHooks = []; + $.jqplot.postDrawSeriesShadowHooks = []; + + // A superclass holding some common properties and methods. + $.jqplot.ElemContainer = function() { + this._elem; + this._plotWidth; + this._plotHeight; + this._plotDimensions = {height:null, width:null}; + }; + + $.jqplot.ElemContainer.prototype.createElement = function(el, offsets, clss, cssopts, attrib) { + this._offsets = offsets; + var klass = clss || 'jqplot'; + var elem = document.createElement(el); + this._elem = $(elem); + this._elem.addClass(klass); + this._elem.css(cssopts); + this._elem.attr(attrib); + // avoid memory leak; + elem = null; + return this._elem; + }; + + $.jqplot.ElemContainer.prototype.getWidth = function() { + if (this._elem) { + return this._elem.outerWidth(true); + } + else { + return null; + } + }; + + $.jqplot.ElemContainer.prototype.getHeight = function() { + if (this._elem) { + return this._elem.outerHeight(true); + } + else { + return null; + } + }; + + $.jqplot.ElemContainer.prototype.getPosition = function() { + if (this._elem) { + return this._elem.position(); + } + else { + return {top:null, left:null, bottom:null, right:null}; + } + }; + + $.jqplot.ElemContainer.prototype.getTop = function() { + return this.getPosition().top; + }; + + $.jqplot.ElemContainer.prototype.getLeft = function() { + return this.getPosition().left; + }; + + $.jqplot.ElemContainer.prototype.getBottom = function() { + return this._elem.css('bottom'); + }; + + $.jqplot.ElemContainer.prototype.getRight = function() { + return this._elem.css('right'); + }; + + + /** + * Class: Axis + * An individual axis object. Cannot be instantiated directly, but created + * by the Plot object. Axis properties can be set or overridden by the + * options passed in from the user. + * + */ + function Axis(name) { + $.jqplot.ElemContainer.call(this); + // Group: Properties + // + // Axes options are specified within an axes object at the top level of the + // plot options like so: + // > { + // > axes: { + // > xaxis: {min: 5}, + // > yaxis: {min: 2, max: 8, numberTicks:4}, + // > x2axis: {pad: 1.5}, + // > y2axis: {ticks:[22, 44, 66, 88]} + // > } + // > } + // There are 2 x axes, 'xaxis' and 'x2axis', and + // 9 yaxes, 'yaxis', 'y2axis'. 'y3axis', ... Any or all of which may be specified. + this.name = name; + this._series = []; + // prop: show + // Wether to display the axis on the graph. + this.show = false; + // prop: tickRenderer + // A class of a rendering engine for creating the ticks labels displayed on the plot, + // See <$.jqplot.AxisTickRenderer>. + this.tickRenderer = $.jqplot.AxisTickRenderer; + // prop: tickOptions + // Options that will be passed to the tickRenderer, see <$.jqplot.AxisTickRenderer> options. + this.tickOptions = {}; + // prop: labelRenderer + // A class of a rendering engine for creating an axis label. + this.labelRenderer = $.jqplot.AxisLabelRenderer; + // prop: labelOptions + // Options passed to the label renderer. + this.labelOptions = {}; + // prop: label + // Label for the axis + this.label = null; + // prop: showLabel + // true to show the axis label. + this.showLabel = true; + // prop: min + // minimum value of the axis (in data units, not pixels). + this.min = null; + // prop: max + // maximum value of the axis (in data units, not pixels). + this.max = null; + // prop: autoscale + // DEPRECATED + // the default scaling algorithm produces superior results. + this.autoscale = false; + // prop: pad + // Padding to extend the range above and below the data bounds. + // The data range is multiplied by this factor to determine minimum and maximum axis bounds. + // A value of 0 will be interpreted to mean no padding, and pad will be set to 1.0. + this.pad = 1.2; + // prop: padMax + // Padding to extend the range above data bounds. + // The top of the data range is multiplied by this factor to determine maximum axis bounds. + // A value of 0 will be interpreted to mean no padding, and padMax will be set to 1.0. + this.padMax = null; + // prop: padMin + // Padding to extend the range below data bounds. + // The bottom of the data range is multiplied by this factor to determine minimum axis bounds. + // A value of 0 will be interpreted to mean no padding, and padMin will be set to 1.0. + this.padMin = null; + // prop: ticks + // 1D [val, val, ...] or 2D [[val, label], [val, label], ...] array of ticks for the axis. + // If no label is specified, the value is formatted into an appropriate label. + this.ticks = []; + // prop: numberTicks + // Desired number of ticks. Default is to compute automatically. + this.numberTicks; + // prop: tickInterval + // number of units between ticks. Mutually exclusive with numberTicks. + this.tickInterval; + // prop: renderer + // A class of a rendering engine that handles tick generation, + // scaling input data to pixel grid units and drawing the axis element. + this.renderer = $.jqplot.LinearAxisRenderer; + // prop: rendererOptions + // renderer specific options. See <$.jqplot.LinearAxisRenderer> for options. + this.rendererOptions = {}; + // prop: showTicks + // Wether to show the ticks (both marks and labels) or not. + // Will not override showMark and showLabel options if specified on the ticks themselves. + this.showTicks = true; + // prop: showTickMarks + // Wether to show the tick marks (line crossing grid) or not. + // Overridden by showTicks and showMark option of tick itself. + this.showTickMarks = true; + // prop: showMinorTicks + // Wether or not to show minor ticks. This is renderer dependent. + this.showMinorTicks = true; + // prop: drawMajorGridlines + // True to draw gridlines for major axis ticks. + this.drawMajorGridlines = true; + // prop: drawMinorGridlines + // True to draw gridlines for minor ticks. + this.drawMinorGridlines = false; + // prop: drawMajorTickMarks + // True to draw tick marks for major axis ticks. + this.drawMajorTickMarks = true; + // prop: drawMinorTickMarks + // True to draw tick marks for minor ticks. This is renderer dependent. + this.drawMinorTickMarks = true; + // prop: useSeriesColor + // Use the color of the first series associated with this axis for the + // tick marks and line bordering this axis. + this.useSeriesColor = false; + // prop: borderWidth + // width of line stroked at the border of the axis. Defaults + // to the width of the grid boarder. + this.borderWidth = null; + // prop: borderColor + // color of the border adjacent to the axis. Defaults to grid border color. + this.borderColor = null; + // prop: scaleToHiddenSeries + // True to include hidden series when computing axes bounds and scaling. + this.scaleToHiddenSeries = false; + // minimum and maximum values on the axis. + this._dataBounds = {min:null, max:null}; + // statistics (min, max, mean) as well as actual data intervals for each series attached to axis. + // holds collection of {intervals:[], min:, max:, mean: } objects for each series on axis. + this._intervalStats = []; + // pixel position from the top left of the min value and max value on the axis. + this._offsets = {min:null, max:null}; + this._ticks=[]; + this._label = null; + // prop: syncTicks + // true to try and synchronize tick spacing across multiple axes so that ticks and + // grid lines line up. This has an impact on autoscaling algorithm, however. + // In general, autoscaling an individual axis will work better if it does not + // have to sync ticks. + this.syncTicks = null; + // prop: tickSpacing + // Approximate pixel spacing between ticks on graph. Used during autoscaling. + // This number will be an upper bound, actual spacing will be less. + this.tickSpacing = 75; + // Properties to hold the original values for min, max, ticks, tickInterval and numberTicks + // so they can be restored if altered by plugins. + this._min = null; + this._max = null; + this._tickInterval = null; + this._numberTicks = null; + this.__ticks = null; + // hold original user options. + this._options = {}; + } + + Axis.prototype = new $.jqplot.ElemContainer(); + Axis.prototype.constructor = Axis; + + Axis.prototype.init = function() { + if ($.isFunction(this.renderer)) { + this.renderer = new this.renderer(); + } + // set the axis name + this.tickOptions.axis = this.name; + // if showMark or showLabel tick options not specified, use value of axis option. + // showTicks overrides showTickMarks. + if (this.tickOptions.showMark == null) { + this.tickOptions.showMark = this.showTicks; + } + if (this.tickOptions.showMark == null) { + this.tickOptions.showMark = this.showTickMarks; + } + if (this.tickOptions.showLabel == null) { + this.tickOptions.showLabel = this.showTicks; + } + + if (this.label == null || this.label == '') { + this.showLabel = false; + } + else { + this.labelOptions.label = this.label; + } + if (this.showLabel == false) { + this.labelOptions.show = false; + } + // set the default padMax, padMin if not specified + // special check, if no padding desired, padding + // should be set to 1.0 + if (this.pad == 0) { + this.pad = 1.0; + } + if (this.padMax == 0) { + this.padMax = 1.0; + } + if (this.padMin == 0) { + this.padMin = 1.0; + } + if (this.padMax == null) { + this.padMax = (this.pad-1)/2 + 1; + } + if (this.padMin == null) { + this.padMin = (this.pad-1)/2 + 1; + } + // now that padMin and padMax are correctly set, reset pad in case user has supplied + // padMin and/or padMax + this.pad = this.padMax + this.padMin - 1; + if (this.min != null || this.max != null) { + this.autoscale = false; + } + // if not set, sync ticks for y axes but not x by default. + if (this.syncTicks == null && this.name.indexOf('y') > -1) { + this.syncTicks = true; + } + else if (this.syncTicks == null){ + this.syncTicks = false; + } + this.renderer.init.call(this, this.rendererOptions); + + }; + + Axis.prototype.draw = function(ctx, plot) { + // Memory Leaks patch + if (this.__ticks) { + this.__ticks = null; + } + + return this.renderer.draw.call(this, ctx, plot); + + }; + + Axis.prototype.set = function() { + this.renderer.set.call(this); + }; + + Axis.prototype.pack = function(pos, offsets) { + if (this.show) { + this.renderer.pack.call(this, pos, offsets); + } + // these properties should all be available now. + if (this._min == null) { + this._min = this.min; + this._max = this.max; + this._tickInterval = this.tickInterval; + this._numberTicks = this.numberTicks; + this.__ticks = this._ticks; + } + }; + + // reset the axis back to original values if it has been scaled, zoomed, etc. + Axis.prototype.reset = function() { + this.renderer.reset.call(this); + }; + + Axis.prototype.resetScale = function(opts) { + $.extend(true, this, {min: null, max: null, numberTicks: null, tickInterval: null, _ticks: [], ticks: []}, opts); + this.resetDataBounds(); + }; + + Axis.prototype.resetDataBounds = function() { + // Go through all the series attached to this axis and find + // the min/max bounds for this axis. + var db = this._dataBounds; + db.min = null; + db.max = null; + var l, s, d; + // check for when to force min 0 on bar series plots. + var doforce = (this.show) ? true : false; + for (var i=0; i db.max) || db.max == null) { + db.max = d[j][0]; + } + } + else { + if ((d[j][minyidx] != null && d[j][minyidx] < db.min) || db.min == null) { + db.min = d[j][minyidx]; + } + if ((d[j][maxyidx] != null && d[j][maxyidx] > db.max) || db.max == null) { + db.max = d[j][maxyidx]; + } + } + } + + // Hack to not pad out bottom of bar plots unless user has specified a padding. + // every series will have a chance to set doforce to false. once it is set to + // false, it cannot be reset to true. + // If any series attached to axis is not a bar, wont force 0. + if (doforce && s.renderer.constructor !== $.jqplot.BarRenderer) { + doforce = false; + } + + else if (doforce && this._options.hasOwnProperty('forceTickAt0') && this._options.forceTickAt0 == false) { + doforce = false; + } + + else if (doforce && s.renderer.constructor === $.jqplot.BarRenderer) { + if (s.barDirection == 'vertical' && this.name != 'xaxis' && this.name != 'x2axis') { + if (this._options.pad != null || this._options.padMin != null) { + doforce = false; + } + } + + else if (s.barDirection == 'horizontal' && (this.name == 'xaxis' || this.name == 'x2axis')) { + if (this._options.pad != null || this._options.padMin != null) { + doforce = false; + } + } + + } + } + } + + if (doforce && this.renderer.constructor === $.jqplot.LinearAxisRenderer && db.min >= 0) { + this.padMin = 1.0; + this.forceTickAt0 = true; + } + }; + + /** + * Class: Legend + * Legend object. Cannot be instantiated directly, but created + * by the Plot object. Legend properties can be set or overridden by the + * options passed in from the user. + */ + function Legend(options) { + $.jqplot.ElemContainer.call(this); + // Group: Properties + + // prop: show + // Wether to display the legend on the graph. + this.show = false; + // prop: location + // Placement of the legend. one of the compass directions: nw, n, ne, e, se, s, sw, w + this.location = 'ne'; + // prop: labels + // Array of labels to use. By default the renderer will look for labels on the series. + // Labels specified in this array will override labels specified on the series. + this.labels = []; + // prop: showLabels + // true to show the label text on the legend. + this.showLabels = true; + // prop: showSwatch + // true to show the color swatches on the legend. + this.showSwatches = true; + // prop: placement + // "insideGrid" places legend inside the grid area of the plot. + // "outsideGrid" places the legend outside the grid but inside the plot container, + // shrinking the grid to accommodate the legend. + // "inside" synonym for "insideGrid", + // "outside" places the legend ouside the grid area, but does not shrink the grid which + // can cause the legend to overflow the plot container. + this.placement = "insideGrid"; + // prop: xoffset + // DEPRECATED. Set the margins on the legend using the marginTop, marginLeft, etc. + // properties or via CSS margin styling of the .jqplot-table-legend class. + this.xoffset = 0; + // prop: yoffset + // DEPRECATED. Set the margins on the legend using the marginTop, marginLeft, etc. + // properties or via CSS margin styling of the .jqplot-table-legend class. + this.yoffset = 0; + // prop: border + // css spec for the border around the legend box. + this.border; + // prop: background + // css spec for the background of the legend box. + this.background; + // prop: textColor + // css color spec for the legend text. + this.textColor; + // prop: fontFamily + // css font-family spec for the legend text. + this.fontFamily; + // prop: fontSize + // css font-size spec for the legend text. + this.fontSize ; + // prop: rowSpacing + // css padding-top spec for the rows in the legend. + this.rowSpacing = '0.5em'; + // renderer + // A class that will create a DOM object for the legend, + // see <$.jqplot.TableLegendRenderer>. + this.renderer = $.jqplot.TableLegendRenderer; + // prop: rendererOptions + // renderer specific options passed to the renderer. + this.rendererOptions = {}; + // prop: predraw + // Wether to draw the legend before the series or not. + // Used with series specific legend renderers for pie, donut, mekko charts, etc. + this.preDraw = false; + // prop: marginTop + // CSS margin for the legend DOM element. This will set an element + // CSS style for the margin which will override any style sheet setting. + // The default will be taken from the stylesheet. + this.marginTop = null; + // prop: marginRight + // CSS margin for the legend DOM element. This will set an element + // CSS style for the margin which will override any style sheet setting. + // The default will be taken from the stylesheet. + this.marginRight = null; + // prop: marginBottom + // CSS margin for the legend DOM element. This will set an element + // CSS style for the margin which will override any style sheet setting. + // The default will be taken from the stylesheet. + this.marginBottom = null; + // prop: marginLeft + // CSS margin for the legend DOM element. This will set an element + // CSS style for the margin which will override any style sheet setting. + // The default will be taken from the stylesheet. + this.marginLeft = null; + // prop: escapeHtml + // True to escape special characters with their html entity equivalents + // in legend text. "<" becomes < and so on, so html tags are not rendered. + this.escapeHtml = false; + this._series = []; + + $.extend(true, this, options); + } + + Legend.prototype = new $.jqplot.ElemContainer(); + Legend.prototype.constructor = Legend; + + Legend.prototype.setOptions = function(options) { + $.extend(true, this, options); + + // Try to emulate deprecated behaviour + // if user has specified xoffset or yoffset, copy these to + // the margin properties. + + if (this.placement == 'inside') { + this.placement = 'insideGrid'; + } + + if (this.xoffset >0) { + if (this.placement == 'insideGrid') { + switch (this.location) { + case 'nw': + case 'w': + case 'sw': + if (this.marginLeft == null) { + this.marginLeft = this.xoffset + 'px'; + } + this.marginRight = '0px'; + break; + case 'ne': + case 'e': + case 'se': + default: + if (this.marginRight == null) { + this.marginRight = this.xoffset + 'px'; + } + this.marginLeft = '0px'; + break; + } + } + else if (this.placement == 'outside') { + switch (this.location) { + case 'nw': + case 'w': + case 'sw': + if (this.marginRight == null) { + this.marginRight = this.xoffset + 'px'; + } + this.marginLeft = '0px'; + break; + case 'ne': + case 'e': + case 'se': + default: + if (this.marginLeft == null) { + this.marginLeft = this.xoffset + 'px'; + } + this.marginRight = '0px'; + break; + } + } + this.xoffset = 0; + } + + if (this.yoffset >0) { + if (this.placement == 'outside') { + switch (this.location) { + case 'sw': + case 's': + case 'se': + if (this.marginTop == null) { + this.marginTop = this.yoffset + 'px'; + } + this.marginBottom = '0px'; + break; + case 'ne': + case 'n': + case 'nw': + default: + if (this.marginBottom == null) { + this.marginBottom = this.yoffset + 'px'; + } + this.marginTop = '0px'; + break; + } + } + else if (this.placement == 'insideGrid') { + switch (this.location) { + case 'sw': + case 's': + case 'se': + if (this.marginBottom == null) { + this.marginBottom = this.yoffset + 'px'; + } + this.marginTop = '0px'; + break; + case 'ne': + case 'n': + case 'nw': + default: + if (this.marginTop == null) { + this.marginTop = this.yoffset + 'px'; + } + this.marginBottom = '0px'; + break; + } + } + this.yoffset = 0; + } + + // TO-DO: + // Handle case where offsets are < 0. + // + }; + + Legend.prototype.init = function() { + if ($.isFunction(this.renderer)) { + this.renderer = new this.renderer(); + } + this.renderer.init.call(this, this.rendererOptions); + }; + + Legend.prototype.draw = function(offsets, plot) { + for (var i=0; i<$.jqplot.preDrawLegendHooks.length; i++){ + $.jqplot.preDrawLegendHooks[i].call(this, offsets); + } + return this.renderer.draw.call(this, offsets, plot); + }; + + Legend.prototype.pack = function(offsets) { + this.renderer.pack.call(this, offsets); + }; + + /** + * Class: Title + * Plot Title object. Cannot be instantiated directly, but created + * by the Plot object. Title properties can be set or overridden by the + * options passed in from the user. + * + * Parameters: + * text - text of the title. + */ + function Title(text) { + $.jqplot.ElemContainer.call(this); + // Group: Properties + + // prop: text + // text of the title; + this.text = text; + // prop: show + // whether or not to show the title + this.show = true; + // prop: fontFamily + // css font-family spec for the text. + this.fontFamily; + // prop: fontSize + // css font-size spec for the text. + this.fontSize ; + // prop: textAlign + // css text-align spec for the text. + this.textAlign; + // prop: textColor + // css color spec for the text. + this.textColor; + // prop: renderer + // A class for creating a DOM element for the title, + // see <$.jqplot.DivTitleRenderer>. + this.renderer = $.jqplot.DivTitleRenderer; + // prop: rendererOptions + // renderer specific options passed to the renderer. + this.rendererOptions = {}; + // prop: escapeHtml + // True to escape special characters with their html entity equivalents + // in title text. "<" becomes < and so on, so html tags are not rendered. + this.escapeHtml = false; + } + + Title.prototype = new $.jqplot.ElemContainer(); + Title.prototype.constructor = Title; + + Title.prototype.init = function() { + if ($.isFunction(this.renderer)) { + this.renderer = new this.renderer(); + } + this.renderer.init.call(this, this.rendererOptions); + }; + + Title.prototype.draw = function(width) { + return this.renderer.draw.call(this, width); + }; + + Title.prototype.pack = function() { + this.renderer.pack.call(this); + }; + + + /** + * Class: Series + * An individual data series object. Cannot be instantiated directly, but created + * by the Plot object. Series properties can be set or overridden by the + * options passed in from the user. + */ + function Series(options) { + options = options || {}; + $.jqplot.ElemContainer.call(this); + // Group: Properties + // Properties will be assigned from a series array at the top level of the + // options. If you had two series and wanted to change the color and line + // width of the first and set the second to use the secondary y axis with + // no shadow and supply custom labels for each: + // > { + // > series:[ + // > {color: '#ff4466', lineWidth: 5, label:'good line'}, + // > {yaxis: 'y2axis', shadow: false, label:'bad line'} + // > ] + // > } + + // prop: show + // whether or not to draw the series. + this.show = true; + // prop: xaxis + // which x axis to use with this series, either 'xaxis' or 'x2axis'. + this.xaxis = 'xaxis'; + this._xaxis; + // prop: yaxis + // which y axis to use with this series, either 'yaxis' or 'y2axis'. + this.yaxis = 'yaxis'; + this._yaxis; + this.gridBorderWidth = 2.0; + // prop: renderer + // A class of a renderer which will draw the series, + // see <$.jqplot.LineRenderer>. + this.renderer = $.jqplot.LineRenderer; + // prop: rendererOptions + // Options to pass on to the renderer. + this.rendererOptions = {}; + this.data = []; + this.gridData = []; + // prop: label + // Line label to use in the legend. + this.label = ''; + // prop: showLabel + // true to show label for this series in the legend. + this.showLabel = true; + // prop: color + // css color spec for the series + this.color; + // prop: negativeColor + // css color spec used for filled (area) plots that are filled to zero and + // the "useNegativeColors" option is true. + this.negativeColor; + // prop: lineWidth + // width of the line in pixels. May have different meanings depending on renderer. + this.lineWidth = 2.5; + // prop: lineJoin + // Canvas lineJoin style between segments of series. + this.lineJoin = 'round'; + // prop: lineCap + // Canvas lineCap style at ends of line. + this.lineCap = 'round'; + // prop: linePattern + // line pattern 'dashed', 'dotted', 'solid', some combination + // of '-' and '.' characters such as '.-.' or a numerical array like + // [draw, skip, draw, skip, ...] such as [1, 10] to draw a dotted line, + // [1, 10, 20, 10] to draw a dot-dash line, and so on. + this.linePattern = 'solid'; + this.shadow = true; + // prop: shadowAngle + // Shadow angle in degrees + this.shadowAngle = 45; + // prop: shadowOffset + // Shadow offset from line in pixels + this.shadowOffset = 1.25; + // prop: shadowDepth + // Number of times shadow is stroked, each stroke offset shadowOffset from the last. + this.shadowDepth = 3; + // prop: shadowAlpha + // Alpha channel transparency of shadow. 0 = transparent. + this.shadowAlpha = '0.1'; + // prop: breakOnNull + // Wether line segments should be be broken at null value. + // False will join point on either side of line. + this.breakOnNull = false; + // prop: markerRenderer + // A class of a renderer which will draw marker (e.g. circle, square, ...) at the data points, + // see <$.jqplot.MarkerRenderer>. + this.markerRenderer = $.jqplot.MarkerRenderer; + // prop: markerOptions + // renderer specific options to pass to the markerRenderer, + // see <$.jqplot.MarkerRenderer>. + this.markerOptions = {}; + // prop: showLine + // whether to actually draw the line or not. Series will still be renderered, even if no line is drawn. + this.showLine = true; + // prop: showMarker + // whether or not to show the markers at the data points. + this.showMarker = true; + // prop: index + // 0 based index of this series in the plot series array. + this.index; + // prop: fill + // true or false, whether to fill under lines or in bars. + // May not be implemented in all renderers. + this.fill = false; + // prop: fillColor + // CSS color spec to use for fill under line. Defaults to line color. + this.fillColor; + // prop: fillAlpha + // Alpha transparency to apply to the fill under the line. + // Use this to adjust alpha separate from fill color. + this.fillAlpha; + // prop: fillAndStroke + // If true will stroke the line (with color this.color) as well as fill under it. + // Applies only when fill is true. + this.fillAndStroke = false; + // prop: disableStack + // true to not stack this series with other series in the plot. + // To render properly, non-stacked series must come after any stacked series + // in the plot's data series array. So, the plot's data series array would look like: + // > [stackedSeries1, stackedSeries2, ..., nonStackedSeries1, nonStackedSeries2, ...] + // disableStack will put a gap in the stacking order of series, and subsequent + // stacked series will not fill down through the non-stacked series and will + // most likely not stack properly on top of the non-stacked series. + this.disableStack = false; + // _stack is set by the Plot if the plot is a stacked chart. + // will stack lines or bars on top of one another to build a "mountain" style chart. + // May not be implemented in all renderers. + this._stack = false; + // prop: neighborThreshold + // how close or far (in pixels) the cursor must be from a point marker to detect the point. + this.neighborThreshold = 4; + // prop: fillToZero + // true will force bar and filled series to fill toward zero on the fill Axis. + this.fillToZero = false; + // prop: fillToValue + // fill a filled series to this value on the fill axis. + // Works in conjunction with fillToZero, so that must be true. + this.fillToValue = 0; + // prop: fillAxis + // Either 'x' or 'y'. Which axis to fill the line toward if fillToZero is true. + // 'y' means fill up/down to 0 on the y axis for this series. + this.fillAxis = 'y'; + // prop: useNegativeColors + // true to color negative values differently in filled and bar charts. + this.useNegativeColors = true; + this._stackData = []; + // _plotData accounts for stacking. If plots not stacked, _plotData and data are same. If + // stacked, _plotData is accumulation of stacking data. + this._plotData = []; + // _plotValues hold the individual x and y values that will be plotted for this series. + this._plotValues = {x:[], y:[]}; + // statistics about the intervals between data points. Used for auto scaling. + this._intervals = {x:{}, y:{}}; + // data from the previous series, for stacked charts. + this._prevPlotData = []; + this._prevGridData = []; + this._stackAxis = 'y'; + this._primaryAxis = '_xaxis'; + // give each series a canvas to draw on. This should allow for redrawing speedups. + this.canvas = new $.jqplot.GenericCanvas(); + this.shadowCanvas = new $.jqplot.GenericCanvas(); + this.plugins = {}; + // sum of y values in this series. + this._sumy = 0; + this._sumx = 0; + this._type = ''; + this.step = false; + } + + Series.prototype = new $.jqplot.ElemContainer(); + Series.prototype.constructor = Series; + + Series.prototype.init = function(index, gridbw, plot) { + // weed out any null values in the data. + this.index = index; + this.gridBorderWidth = gridbw; + var d = this.data; + var temp = [], i, l; + for (i=0, l=d.length; i. + this.renderer = $.jqplot.CanvasGridRenderer; + // prop: rendererOptions + // Options to pass on to the renderer, + // see <$.jqplot.CanvasGridRenderer>. + this.rendererOptions = {}; + this._offsets = {top:null, bottom:null, left:null, right:null}; + } + + Grid.prototype = new $.jqplot.ElemContainer(); + Grid.prototype.constructor = Grid; + + Grid.prototype.init = function() { + if ($.isFunction(this.renderer)) { + this.renderer = new this.renderer(); + } + this.renderer.init.call(this, this.rendererOptions); + }; + + Grid.prototype.createElement = function(offsets,plot) { + this._offsets = offsets; + return this.renderer.createElement.call(this, plot); + }; + + Grid.prototype.draw = function() { + this.renderer.draw.call(this); + }; + + $.jqplot.GenericCanvas = function() { + $.jqplot.ElemContainer.call(this); + this._ctx; + }; + + $.jqplot.GenericCanvas.prototype = new $.jqplot.ElemContainer(); + $.jqplot.GenericCanvas.prototype.constructor = $.jqplot.GenericCanvas; + + $.jqplot.GenericCanvas.prototype.createElement = function(offsets, clss, plotDimensions, plot) { + this._offsets = offsets; + var klass = 'jqplot'; + if (clss != undefined) { + klass = clss; + } + var elem; + + elem = plot.canvasManager.getCanvas(); + + // if new plotDimensions supplied, use them. + if (plotDimensions != null) { + this._plotDimensions = plotDimensions; + } + + elem.width = this._plotDimensions.width - this._offsets.left - this._offsets.right; + elem.height = this._plotDimensions.height - this._offsets.top - this._offsets.bottom; + this._elem = $(elem); + this._elem.css({ position: 'absolute', left: this._offsets.left, top: this._offsets.top }); + + this._elem.addClass(klass); + + elem = plot.canvasManager.initCanvas(elem); + + elem = null; + return this._elem; + }; + + $.jqplot.GenericCanvas.prototype.setContext = function() { + this._ctx = this._elem.get(0).getContext("2d"); + return this._ctx; + }; + + // Memory Leaks patch + $.jqplot.GenericCanvas.prototype.resetCanvas = function() { + if (this._elem) { + if ($.jqplot.use_excanvas && window.G_vmlCanvasManager.uninitElement !== undefined) { + window.G_vmlCanvasManager.uninitElement(this._elem.get(0)); + } + + //this._elem.remove(); + this._elem.emptyForce(); + } + + this._ctx = null; + }; + + $.jqplot.HooksManager = function () { + this.hooks =[]; + this.args = []; + }; + + $.jqplot.HooksManager.prototype.addOnce = function(fn, args) { + args = args || []; + var havehook = false; + for (var i=0, l=this.hooks.length; i { + // > axesDefaults:{min:0}, + // > series:[{color:'#6633dd'}], + // > title: 'A Plot' + // > } + // + + // prop: animate + // True to animate the series on initial plot draw (renderer dependent). + // Actual animation functionality must be supported in the renderer. + this.animate = false; + // prop: animateReplot + // True to animate series after a call to the replot() method. + // Use with caution! Replots can happen very frequently under + // certain circumstances (e.g. resizing, dragging points) and + // animation in these situations can cause problems. + this.animateReplot = false; + // prop: axes + // up to 4 axes are supported, each with its own options, + // See for axis specific options. + this.axes = {xaxis: new Axis('xaxis'), yaxis: new Axis('yaxis'), x2axis: new Axis('x2axis'), y2axis: new Axis('y2axis'), y3axis: new Axis('y3axis'), y4axis: new Axis('y4axis'), y5axis: new Axis('y5axis'), y6axis: new Axis('y6axis'), y7axis: new Axis('y7axis'), y8axis: new Axis('y8axis'), y9axis: new Axis('y9axis'), yMidAxis: new Axis('yMidAxis')}; + this.baseCanvas = new $.jqplot.GenericCanvas(); + // true to intercept right click events and fire a 'jqplotRightClick' event. + // this will also block the context menu. + this.captureRightClick = false; + // prop: data + // user's data. Data should *NOT* be specified in the options object, + // but be passed in as the second argument to the $.jqplot() function. + // The data property is described here soley for reference. + // The data should be in the form of an array of 2D or 1D arrays like + // > [ [[x1, y1], [x2, y2],...], [y1, y2, ...] ]. + this.data = []; + // prop: dataRenderer + // A callable which can be used to preprocess data passed into the plot. + // Will be called with 3 arguments: the plot data, a reference to the plot, + // and the value of dataRendererOptions. + this.dataRenderer; + // prop: dataRendererOptions + // Options that will be passed to the dataRenderer. + // Can be of any type. + this.dataRendererOptions; + this.defaults = { + // prop: axesDefaults + // default options that will be applied to all axes. + // see for axes options. + axesDefaults: {}, + axes: {xaxis:{}, yaxis:{}, x2axis:{}, y2axis:{}, y3axis:{}, y4axis:{}, y5axis:{}, y6axis:{}, y7axis:{}, y8axis:{}, y9axis:{}, yMidAxis:{}}, + // prop: seriesDefaults + // default options that will be applied to all series. + // see for series options. + seriesDefaults: {}, + series:[] + }; + // prop: defaultAxisStart + // 1-D data series are internally converted into 2-D [x,y] data point arrays + // by jqPlot. This is the default starting value for the missing x or y value. + // The added data will be a monotonically increasing series (e.g. [1, 2, 3, ...]) + // starting at this value. + this.defaultAxisStart = 1; + // this.doCustomEventBinding = true; + // prop: drawIfHidden + // True to execute the draw method even if the plot target is hidden. + // Generally, this should be false. Most plot elements will not be sized/ + // positioned correclty if renderered into a hidden container. To render into + // a hidden container, call the replot method when the container is shown. + this.drawIfHidden = false; + this.eventCanvas = new $.jqplot.GenericCanvas(); + // prop: fillBetween + // Fill between 2 line series in a plot. + // Options object: + // { + // series1: first index (0 based) of series in fill + // series2: second index (0 based) of series in fill + // color: color of fill [default fillColor of series1] + // baseSeries: fill will be drawn below this series (0 based index) + // fill: false to turn off fill [default true]. + // } + this.fillBetween = { + series1: null, + series2: null, + color: null, + baseSeries: 0, + fill: true + }; + // prop; fontFamily + // css spec for the font-family attribute. Default for the entire plot. + this.fontFamily; + // prop: fontSize + // css spec for the font-size attribute. Default for the entire plot. + this.fontSize; + // prop: grid + // See for grid specific options. + this.grid = new Grid(); + // prop: legend + // see <$.jqplot.TableLegendRenderer> + this.legend = new Legend(); + // prop: noDataIndicator + // Options to set up a mock plot with a data loading indicator if no data is specified. + this.noDataIndicator = { + show: false, + indicator: 'Loading Data...', + axes: { + xaxis: { + min: 0, + max: 10, + tickInterval: 2, + show: true + }, + yaxis: { + min: 0, + max: 12, + tickInterval: 3, + show: true + } + } + }; + // prop: negativeSeriesColors + // colors to use for portions of the line below zero. + this.negativeSeriesColors = $.jqplot.config.defaultNegativeColors; + // container to hold all of the merged options. Convienence for plugins. + this.options = {}; + this.previousSeriesStack = []; + // Namespace to hold plugins. Generally non-renderer plugins add themselves to here. + this.plugins = {}; + // prop: series + // Array of series object options. + // see for series specific options. + this.series = []; + // array of series indices. Keep track of order + // which series canvases are displayed, lowest + // to highest, back to front. + this.seriesStack = []; + // prop: seriesColors + // Ann array of CSS color specifications that will be applied, in order, + // to the series in the plot. Colors will wrap around so, if their + // are more series than colors, colors will be reused starting at the + // beginning. For pie charts, this specifies the colors of the slices. + this.seriesColors = $.jqplot.config.defaultColors; + // prop: sortData + // false to not sort the data passed in by the user. + // Many bar, stacked and other graphs as well as many plugins depend on + // having sorted data. + this.sortData = true; + // prop: stackSeries + // true or false, creates a stack or "mountain" plot. + // Not all series renderers may implement this option. + this.stackSeries = false; + // a shortcut for axis syncTicks options. Not implemented yet. + this.syncXTicks = true; + // a shortcut for axis syncTicks options. Not implemented yet. + this.syncYTicks = true; + // the jquery object for the dom target. + this.target = null; + // The id of the dom element to render the plot into + this.targetId = null; + // prop textColor + // css spec for the css color attribute. Default for the entire plot. + this.textColor; + // prop: title + // Title object. See for specific options. As a shortcut, you + // can specify the title option as just a string like: title: 'My Plot' + // and this will create a new title object with the specified text. + this.title = new Title(); + // Count how many times the draw method has been called while the plot is visible. + // Mostly used to test if plot has never been dran (=0), has been successfully drawn + // into a visible container once (=1) or draw more than once into a visible container. + // Can use this in tests to see if plot has been visibly drawn at least one time. + // After plot has been visibly drawn once, it generally doesn't need redrawing if its + // container is hidden and shown. + this._drawCount = 0; + // sum of y values for all series in plot. + // used in mekko chart. + this._sumy = 0; + this._sumx = 0; + // array to hold the cumulative stacked series data. + // used to ajust the individual series data, which won't have access to other + // series data. + this._stackData = []; + // array that holds the data to be plotted. This will be the series data + // merged with the the appropriate data from _stackData according to the stackAxis. + this._plotData = []; + this._width = null; + this._height = null; + this._plotDimensions = {height:null, width:null}; + this._gridPadding = {top:null, right:null, bottom:null, left:null}; + this._defaultGridPadding = {top:10, right:10, bottom:23, left:10}; + + this._addDomReference = $.jqplot.config.addDomReference; + + this.preInitHooks = new $.jqplot.HooksManager(); + this.postInitHooks = new $.jqplot.HooksManager(); + this.preParseOptionsHooks = new $.jqplot.HooksManager(); + this.postParseOptionsHooks = new $.jqplot.HooksManager(); + this.preDrawHooks = new $.jqplot.HooksManager(); + this.postDrawHooks = new $.jqplot.HooksManager(); + this.preDrawSeriesHooks = new $.jqplot.HooksManager(); + this.postDrawSeriesHooks = new $.jqplot.HooksManager(); + this.preDrawLegendHooks = new $.jqplot.HooksManager(); + this.addLegendRowHooks = new $.jqplot.HooksManager(); + this.preSeriesInitHooks = new $.jqplot.HooksManager(); + this.postSeriesInitHooks = new $.jqplot.HooksManager(); + this.preParseSeriesOptionsHooks = new $.jqplot.HooksManager(); + this.postParseSeriesOptionsHooks = new $.jqplot.HooksManager(); + this.eventListenerHooks = new $.jqplot.EventListenerManager(); + this.preDrawSeriesShadowHooks = new $.jqplot.HooksManager(); + this.postDrawSeriesShadowHooks = new $.jqplot.HooksManager(); + + this.colorGenerator = new $.jqplot.ColorGenerator(); + this.negativeColorGenerator = new $.jqplot.ColorGenerator(); + + this.canvasManager = new $.jqplot.CanvasManager(); + + this.themeEngine = new $.jqplot.ThemeEngine(); + + var seriesColorsIndex = 0; + + // Group: methods + // + // method: init + // sets the plot target, checks data and applies user + // options to plot. + this.init = function(target, data, options) { + options = options || {}; + for (var i=0; i<$.jqplot.preInitHooks.length; i++) { + $.jqplot.preInitHooks[i].call(this, target, data, options); + } + + for (var i=0; i<this.preInitHooks.hooks.length; i++) { + this.preInitHooks.hooks[i].call(this, target, data, options); + } + + this.targetId = '#'+target; + this.target = $('#'+target); + + ////// + // Add a reference to plot + ////// + if (this._addDomReference) { + this.target.data('jqplot', this); + } + // remove any error class that may be stuck on target. + this.target.removeClass('jqplot-error'); + if (!this.target.get(0)) { + throw new Error("No plot target specified"); + } + + // make sure the target is positioned by some means and set css + if (this.target.css('position') == 'static') { + this.target.css('position', 'relative'); + } + if (!this.target.hasClass('jqplot-target')) { + this.target.addClass('jqplot-target'); + } + + // if no height or width specified, use a default. + if (!this.target.height()) { + var h; + if (options && options.height) { + h = parseInt(options.height, 10); + } + else if (this.target.attr('data-height')) { + h = parseInt(this.target.attr('data-height'), 10); + } + else { + h = parseInt($.jqplot.config.defaultHeight, 10); + } + this._height = h; + this.target.css('height', h+'px'); + } + else { + this._height = h = this.target.height(); + } + if (!this.target.width()) { + var w; + if (options && options.width) { + w = parseInt(options.width, 10); + } + else if (this.target.attr('data-width')) { + w = parseInt(this.target.attr('data-width'), 10); + } + else { + w = parseInt($.jqplot.config.defaultWidth, 10); + } + this._width = w; + this.target.css('width', w+'px'); + } + else { + this._width = w = this.target.width(); + } + + for (var i=0, l=_axisNames.length; i<l; i++) { + this.axes[_axisNames[i]] = new Axis(_axisNames[i]); + } + + this._plotDimensions.height = this._height; + this._plotDimensions.width = this._width; + this.grid._plotDimensions = this._plotDimensions; + this.title._plotDimensions = this._plotDimensions; + this.baseCanvas._plotDimensions = this._plotDimensions; + this.eventCanvas._plotDimensions = this._plotDimensions; + this.legend._plotDimensions = this._plotDimensions; + if (this._height <=0 || this._width <=0 || !this._height || !this._width) { + throw new Error("Canvas dimension not set"); + } + + if (options.dataRenderer && $.isFunction(options.dataRenderer)) { + if (options.dataRendererOptions) { + this.dataRendererOptions = options.dataRendererOptions; + } + this.dataRenderer = options.dataRenderer; + data = this.dataRenderer(data, this, this.dataRendererOptions); + } + + if (options.noDataIndicator && $.isPlainObject(options.noDataIndicator)) { + $.extend(true, this.noDataIndicator, options.noDataIndicator); + } + + if (data == null || $.isArray(data) == false || data.length == 0 || $.isArray(data[0]) == false || data[0].length == 0) { + + if (this.noDataIndicator.show == false) { + throw new Error("No data specified"); + } + + else { + // have to be descructive here in order for plot to not try and render series. + // This means that $.jqplot() will have to be called again when there is data. + //delete options.series; + + for (var ax in this.noDataIndicator.axes) { + for (var prop in this.noDataIndicator.axes[ax]) { + this.axes[ax][prop] = this.noDataIndicator.axes[ax][prop]; + } + } + + this.postDrawHooks.add(function() { + var eh = this.eventCanvas.getHeight(); + var ew = this.eventCanvas.getWidth(); + var temp = $('<div class="jqplot-noData-container" style="position:absolute;"></div>'); + this.target.append(temp); + temp.height(eh); + temp.width(ew); + temp.css('top', this.eventCanvas._offsets.top); + temp.css('left', this.eventCanvas._offsets.left); + + var temp2 = $('<div class="jqplot-noData-contents" style="text-align:center; position:relative; margin-left:auto; margin-right:auto;"></div>'); + temp.append(temp2); + temp2.html(this.noDataIndicator.indicator); + var th = temp2.height(); + var tw = temp2.width(); + temp2.height(th); + temp2.width(tw); + temp2.css('top', (eh - th)/2 + 'px'); + }); + + } + } + + // make a copy of the data + this.data = $.extend(true, [], data); + + this.parseOptions(options); + + if (this.textColor) { + this.target.css('color', this.textColor); + } + if (this.fontFamily) { + this.target.css('font-family', this.fontFamily); + } + if (this.fontSize) { + this.target.css('font-size', this.fontSize); + } + + this.title.init(); + this.legend.init(); + this._sumy = 0; + this._sumx = 0; + this.computePlotData(); + for (var i=0; i<this.series.length; i++) { + // set default stacking order for series canvases + this.seriesStack.push(i); + this.previousSeriesStack.push(i); + this.series[i].shadowCanvas._plotDimensions = this._plotDimensions; + this.series[i].canvas._plotDimensions = this._plotDimensions; + for (var j=0; j<$.jqplot.preSeriesInitHooks.length; j++) { + $.jqplot.preSeriesInitHooks[j].call(this.series[i], target, this.data, this.options.seriesDefaults, this.options.series[i], this); + } + for (var j=0; j<this.preSeriesInitHooks.hooks.length; j++) { + this.preSeriesInitHooks.hooks[j].call(this.series[i], target, this.data, this.options.seriesDefaults, this.options.series[i], this); + } + // this.populatePlotData(this.series[i], i); + this.series[i]._plotDimensions = this._plotDimensions; + this.series[i].init(i, this.grid.borderWidth, this); + for (var j=0; j<$.jqplot.postSeriesInitHooks.length; j++) { + $.jqplot.postSeriesInitHooks[j].call(this.series[i], target, this.data, this.options.seriesDefaults, this.options.series[i], this); + } + for (var j=0; j<this.postSeriesInitHooks.hooks.length; j++) { + this.postSeriesInitHooks.hooks[j].call(this.series[i], target, this.data, this.options.seriesDefaults, this.options.series[i], this); + } + this._sumy += this.series[i]._sumy; + this._sumx += this.series[i]._sumx; + } + + var name, + axis; + for (var i=0, l=_axisNames.length; i<l; i++) { + name = _axisNames[i]; + axis = this.axes[name]; + axis._plotDimensions = this._plotDimensions; + axis.init(); + if (this.axes[name].borderColor == null) { + if (name.charAt(0) !== 'x' && axis.useSeriesColor === true && axis.show) { + axis.borderColor = axis._series[0].color; + } + else { + axis.borderColor = this.grid.borderColor; + } + } + } + + if (this.sortData) { + sortData(this.series); + } + this.grid.init(); + this.grid._axes = this.axes; + + this.legend._series = this.series; + + for (var i=0; i<$.jqplot.postInitHooks.length; i++) { + $.jqplot.postInitHooks[i].call(this, target, this.data, options); + } + + for (var i=0; i<this.postInitHooks.hooks.length; i++) { + this.postInitHooks.hooks[i].call(this, target, this.data, options); + } + }; + + // method: resetAxesScale + // Reset the specified axes min, max, numberTicks and tickInterval properties to null + // or reset these properties on all axes if no list of axes is provided. + // + // Parameters: + // axes - Boolean to reset or not reset all axes or an array or object of axis names to reset. + this.resetAxesScale = function(axes, options) { + var opts = options || {}; + var ax = axes || this.axes; + if (ax === true) { + ax = this.axes; + } + if ($.isArray(ax)) { + for (var i = 0; i < ax.length; i++) { + this.axes[ax[i]].resetScale(opts[ax[i]]); + } + } + else if (typeof(ax) === 'object') { + for (var name in ax) { + this.axes[name].resetScale(opts[name]); + } + } + }; + // method: reInitialize + // reinitialize plot for replotting. + // not called directly. + this.reInitialize = function (data, opts) { + // Plot should be visible and have a height and width. + // If plot doesn't have height and width for some + // reason, set it by other means. Plot must not have + // a display:none attribute, however. + + var options = $.extend(true, {}, this.options, opts); + + var target = this.targetId.substr(1); + var tdata = (data == null) ? this.data : data; + + for (var i=0; i<$.jqplot.preInitHooks.length; i++) { + $.jqplot.preInitHooks[i].call(this, target, tdata, options); + } + + for (var i=0; i<this.preInitHooks.hooks.length; i++) { + this.preInitHooks.hooks[i].call(this, target, tdata, options); + } + + this._height = this.target.height(); + this._width = this.target.width(); + + if (this._height <=0 || this._width <=0 || !this._height || !this._width) { + throw new Error("Target dimension not set"); + } + + this._plotDimensions.height = this._height; + this._plotDimensions.width = this._width; + this.grid._plotDimensions = this._plotDimensions; + this.title._plotDimensions = this._plotDimensions; + this.baseCanvas._plotDimensions = this._plotDimensions; + this.eventCanvas._plotDimensions = this._plotDimensions; + this.legend._plotDimensions = this._plotDimensions; + + var name, + t, + j, + axis; + + for (var i=0, l=_axisNames.length; i<l; i++) { + name = _axisNames[i]; + axis = this.axes[name]; + + // Memory Leaks patch : clear ticks elements + t = axis._ticks; + for (var j = 0, tlen = t.length; j < tlen; j++) { + var el = t[j]._elem; + if (el) { + // if canvas renderer + if ($.jqplot.use_excanvas && window.G_vmlCanvasManager.uninitElement !== undefined) { + window.G_vmlCanvasManager.uninitElement(el.get(0)); + } + el.emptyForce(); + el = null; + t._elem = null; + } + } + t = null; + + delete axis.ticks; + delete axis._ticks; + this.axes[name] = new Axis(name); + this.axes[name]._plotWidth = this._width; + this.axes[name]._plotHeight = this._height; + } + + if (data) { + if (options.dataRenderer && $.isFunction(options.dataRenderer)) { + if (options.dataRendererOptions) { + this.dataRendererOptions = options.dataRendererOptions; + } + this.dataRenderer = options.dataRenderer; + data = this.dataRenderer(data, this, this.dataRendererOptions); + } + + // make a copy of the data + this.data = $.extend(true, [], data); + } + + if (opts) { + this.parseOptions(options); + } + + this.title._plotWidth = this._width; + + if (this.textColor) { + this.target.css('color', this.textColor); + } + if (this.fontFamily) { + this.target.css('font-family', this.fontFamily); + } + if (this.fontSize) { + this.target.css('font-size', this.fontSize); + } + + this.title.init(); + this.legend.init(); + this._sumy = 0; + this._sumx = 0; + + this.seriesStack = []; + this.previousSeriesStack = []; + + this.computePlotData(); + for (var i=0, l=this.series.length; i<l; i++) { + // set default stacking order for series canvases + this.seriesStack.push(i); + this.previousSeriesStack.push(i); + this.series[i].shadowCanvas._plotDimensions = this._plotDimensions; + this.series[i].canvas._plotDimensions = this._plotDimensions; + for (var j=0; j<$.jqplot.preSeriesInitHooks.length; j++) { + $.jqplot.preSeriesInitHooks[j].call(this.series[i], target, this.data, this.options.seriesDefaults, this.options.series[i], this); + } + for (var j=0; j<this.preSeriesInitHooks.hooks.length; j++) { + this.preSeriesInitHooks.hooks[j].call(this.series[i], target, this.data, this.options.seriesDefaults, this.options.series[i], this); + } + // this.populatePlotData(this.series[i], i); + this.series[i]._plotDimensions = this._plotDimensions; + this.series[i].init(i, this.grid.borderWidth, this); + for (var j=0; j<$.jqplot.postSeriesInitHooks.length; j++) { + $.jqplot.postSeriesInitHooks[j].call(this.series[i], target, this.data, this.options.seriesDefaults, this.options.series[i], this); + } + for (var j=0; j<this.postSeriesInitHooks.hooks.length; j++) { + this.postSeriesInitHooks.hooks[j].call(this.series[i], target, this.data, this.options.seriesDefaults, this.options.series[i], this); + } + this._sumy += this.series[i]._sumy; + this._sumx += this.series[i]._sumx; + } + + for (var i=0, l=_axisNames.length; i<l; i++) { + name = _axisNames[i]; + axis = this.axes[name]; + + axis._plotDimensions = this._plotDimensions; + axis.init(); + if (axis.borderColor == null) { + if (name.charAt(0) !== 'x' && axis.useSeriesColor === true && axis.show) { + axis.borderColor = axis._series[0].color; + } + else { + axis.borderColor = this.grid.borderColor; + } + } + } + + if (this.sortData) { + sortData(this.series); + } + this.grid.init(); + this.grid._axes = this.axes; + + this.legend._series = this.series; + + for (var i=0, l=$.jqplot.postInitHooks.length; i<l; i++) { + $.jqplot.postInitHooks[i].call(this, target, this.data, options); + } + + for (var i=0, l=this.postInitHooks.hooks.length; i<l; i++) { + this.postInitHooks.hooks[i].call(this, target, this.data, options); + } + }; + + + + // method: quickInit + // + // Quick reinitialization plot for replotting. + // Does not parse options ore recreate axes and series. + // not called directly. + this.quickInit = function () { + // Plot should be visible and have a height and width. + // If plot doesn't have height and width for some + // reason, set it by other means. Plot must not have + // a display:none attribute, however. + + this._height = this.target.height(); + this._width = this.target.width(); + + if (this._height <=0 || this._width <=0 || !this._height || !this._width) { + throw new Error("Target dimension not set"); + } + + this._plotDimensions.height = this._height; + this._plotDimensions.width = this._width; + this.grid._plotDimensions = this._plotDimensions; + this.title._plotDimensions = this._plotDimensions; + this.baseCanvas._plotDimensions = this._plotDimensions; + this.eventCanvas._plotDimensions = this._plotDimensions; + this.legend._plotDimensions = this._plotDimensions; + + for (var n in this.axes) { + this.axes[n]._plotWidth = this._width; + this.axes[n]._plotHeight = this._height; + } + + this.title._plotWidth = this._width; + + if (this.textColor) { + this.target.css('color', this.textColor); + } + if (this.fontFamily) { + this.target.css('font-family', this.fontFamily); + } + if (this.fontSize) { + this.target.css('font-size', this.fontSize); + } + + this._sumy = 0; + this._sumx = 0; + this.computePlotData(); + for (var i=0; i<this.series.length; i++) { + // this.populatePlotData(this.series[i], i); + if (this.series[i]._type === 'line' && this.series[i].renderer.bands.show) { + this.series[i].renderer.initBands.call(this.series[i], this.series[i].renderer.options, this); + } + this.series[i]._plotDimensions = this._plotDimensions; + this.series[i].canvas._plotDimensions = this._plotDimensions; + //this.series[i].init(i, this.grid.borderWidth); + this._sumy += this.series[i]._sumy; + this._sumx += this.series[i]._sumx; + } + + var name; + + for (var j=0; j<12; j++) { + name = _axisNames[j]; + // Memory Leaks patch : clear ticks elements + var t = this.axes[name]._ticks; + for (var i = 0; i < t.length; i++) { + var el = t[i]._elem; + if (el) { + // if canvas renderer + if ($.jqplot.use_excanvas && window.G_vmlCanvasManager.uninitElement !== undefined) { + window.G_vmlCanvasManager.uninitElement(el.get(0)); + } + el.emptyForce(); + el = null; + t._elem = null; + } + } + t = null; + + this.axes[name]._plotDimensions = this._plotDimensions; + this.axes[name]._ticks = []; + // this.axes[name].renderer.init.call(this.axes[name], {}); + } + + if (this.sortData) { + sortData(this.series); + } + + this.grid._axes = this.axes; + + this.legend._series = this.series; + }; + + // sort the series data in increasing order. + function sortData(series) { + var d, sd, pd, ppd, ret; + for (var i=0; i<series.length; i++) { + var check; + var bat = [series[i].data, series[i]._stackData, series[i]._plotData, series[i]._prevPlotData]; + for (var n=0; n<4; n++) { + check = true; + d = bat[n]; + if (series[i]._stackAxis == 'x') { + for (var j = 0; j < d.length; j++) { + if (typeof(d[j][1]) != "number") { + check = false; + break; + } + } + if (check) { + d.sort(function(a,b) { return a[1] - b[1]; }); + } + } + else { + for (var j = 0; j < d.length; j++) { + if (typeof(d[j][0]) != "number") { + check = false; + break; + } + } + if (check) { + d.sort(function(a,b) { return a[0] - b[0]; }); + } + } + } + + } + } + + this.computePlotData = function() { + this._plotData = []; + this._stackData = []; + var series, + index, + l; + + + for (index=0, l=this.series.length; index<l; index++) { + series = this.series[index]; + this._plotData.push([]); + this._stackData.push([]); + var cd = series.data; + this._plotData[index] = $.extend(true, [], cd); + this._stackData[index] = $.extend(true, [], cd); + series._plotData = this._plotData[index]; + series._stackData = this._stackData[index]; + var plotValues = {x:[], y:[]}; + + if (this.stackSeries && !series.disableStack) { + series._stack = true; + /////////////////////////// + // have to check for nulls + /////////////////////////// + var sidx = (series._stackAxis === 'x') ? 0 : 1; + + for (var k=0, cdl=cd.length; k<cdl; k++) { + var temp = cd[k][sidx]; + if (temp == null) { + temp = 0; + } + this._plotData[index][k][sidx] = temp; + this._stackData[index][k][sidx] = temp; + + if (index > 0) { + for (var j=index; j--;) { + var prevval = this._plotData[j][k][sidx]; + // only need to sum up the stack axis column of data + // and only sum if it is of same sign. + // if previous series isn't same sign, keep looking + // at earlier series untill we find one of same sign. + if (temp * prevval >= 0) { + this._plotData[index][k][sidx] += prevval; + this._stackData[index][k][sidx] += prevval; + break; + } + } + } + } + + } + else { + for (var i=0; i<series.data.length; i++) { + plotValues.x.push(series.data[i][0]); + plotValues.y.push(series.data[i][1]); + } + this._stackData.push(series.data); + this.series[index]._stackData = series.data; + this._plotData.push(series.data); + series._plotData = series.data; + series._plotValues = plotValues; + } + if (index>0) { + series._prevPlotData = this.series[index-1]._plotData; + } + series._sumy = 0; + series._sumx = 0; + for (i=series.data.length-1; i>-1; i--) { + series._sumy += series.data[i][1]; + series._sumx += series.data[i][0]; + } + } + + }; + + // populate the _stackData and _plotData arrays for the plot and the series. + this.populatePlotData = function(series, index) { + // if a stacked chart, compute the stacked data + this._plotData = []; + this._stackData = []; + series._stackData = []; + series._plotData = []; + var plotValues = {x:[], y:[]}; + if (this.stackSeries && !series.disableStack) { + series._stack = true; + var sidx = (series._stackAxis === 'x') ? 0 : 1; + // var idx = sidx ? 0 : 1; + // push the current data into stackData + //this._stackData.push(this.series[i].data); + var temp = $.extend(true, [], series.data); + // create the data that will be plotted for this series + var plotdata = $.extend(true, [], series.data); + var tempx, tempy, dval, stackval, comparator; + // for first series, nothing to add to stackData. + for (var j=0; j<index; j++) { + var cd = this.series[j].data; + for (var k=0; k<cd.length; k++) { + dval = cd[k]; + tempx = (dval[0] != null) ? dval[0] : 0; + tempy = (dval[1] != null) ? dval[1] : 0; + temp[k][0] += tempx; + temp[k][1] += tempy; + stackval = (sidx) ? tempy : tempx; + // only need to sum up the stack axis column of data + // and only sum if it is of same sign. + if (series.data[k][sidx] * stackval >= 0) { + plotdata[k][sidx] += stackval; + } + } + } + for (var i=0; i<plotdata.length; i++) { + plotValues.x.push(plotdata[i][0]); + plotValues.y.push(plotdata[i][1]); + } + this._plotData.push(plotdata); + this._stackData.push(temp); + series._stackData = temp; + series._plotData = plotdata; + series._plotValues = plotValues; + } + else { + for (var i=0; i<series.data.length; i++) { + plotValues.x.push(series.data[i][0]); + plotValues.y.push(series.data[i][1]); + } + this._stackData.push(series.data); + this.series[index]._stackData = series.data; + this._plotData.push(series.data); + series._plotData = series.data; + series._plotValues = plotValues; + } + if (index>0) { + series._prevPlotData = this.series[index-1]._plotData; + } + series._sumy = 0; + series._sumx = 0; + for (i=series.data.length-1; i>-1; i--) { + series._sumy += series.data[i][1]; + series._sumx += series.data[i][0]; + } + }; + + // function to safely return colors from the color array and wrap around at the end. + this.getNextSeriesColor = (function(t) { + var idx = 0; + var sc = t.seriesColors; + + return function () { + if (idx < sc.length) { + return sc[idx++]; + } + else { + idx = 0; + return sc[idx++]; + } + }; + })(this); + + this.parseOptions = function(options){ + for (var i=0; i<this.preParseOptionsHooks.hooks.length; i++) { + this.preParseOptionsHooks.hooks[i].call(this, options); + } + for (var i=0; i<$.jqplot.preParseOptionsHooks.length; i++) { + $.jqplot.preParseOptionsHooks[i].call(this, options); + } + this.options = $.extend(true, {}, this.defaults, options); + var opts = this.options; + this.animate = opts.animate; + this.animateReplot = opts.animateReplot; + this.stackSeries = opts.stackSeries; + if ($.isPlainObject(opts.fillBetween)) { + + var temp = ['series1', 'series2', 'color', 'baseSeries', 'fill'], + tempi; + + for (var i=0, l=temp.length; i<l; i++) { + tempi = temp[i]; + if (opts.fillBetween[tempi] != null) { + this.fillBetween[tempi] = opts.fillBetween[tempi]; + } + } + } + + if (opts.seriesColors) { + this.seriesColors = opts.seriesColors; + } + if (opts.negativeSeriesColors) { + this.negativeSeriesColors = opts.negativeSeriesColors; + } + if (opts.captureRightClick) { + this.captureRightClick = opts.captureRightClick; + } + this.defaultAxisStart = (options && options.defaultAxisStart != null) ? options.defaultAxisStart : this.defaultAxisStart; + this.colorGenerator.setColors(this.seriesColors); + this.negativeColorGenerator.setColors(this.negativeSeriesColors); + // var cg = new this.colorGenerator(this.seriesColors); + // var ncg = new this.colorGenerator(this.negativeSeriesColors); + // this._gridPadding = this.options.gridPadding; + $.extend(true, this._gridPadding, opts.gridPadding); + this.sortData = (opts.sortData != null) ? opts.sortData : this.sortData; + for (var i=0; i<12; i++) { + var n = _axisNames[i]; + var axis = this.axes[n]; + axis._options = $.extend(true, {}, opts.axesDefaults, opts.axes[n]); + $.extend(true, axis, opts.axesDefaults, opts.axes[n]); + axis._plotWidth = this._width; + axis._plotHeight = this._height; + } + // if (this.data.length == 0) { + // this.data = []; + // for (var i=0; i<this.options.series.length; i++) { + // this.data.push(this.options.series.data); + // } + // } + + var normalizeData = function(data, dir, start) { + // return data as an array of point arrays, + // in form [[x1,y1...], [x2,y2...], ...] + var temp = []; + var i, l; + dir = dir || 'vertical'; + if (!$.isArray(data[0])) { + // we have a series of scalars. One line with just y values. + // turn the scalar list of data into a data array of form: + // [[1, data[0]], [2, data[1]], ...] + for (i=0, l=data.length; i<l; i++) { + if (dir == 'vertical') { + temp.push([start + i, data[i]]); + } + else { + temp.push([data[i], start+i]); + } + } + } + else { + // we have a properly formatted data series, copy it. + $.extend(true, temp, data); + } + return temp; + }; + + var colorIndex = 0; + this.series = []; + for (var i=0; i<this.data.length; i++) { + var sopts = $.extend(true, {index: i}, {seriesColors:this.seriesColors, negativeSeriesColors:this.negativeSeriesColors}, this.options.seriesDefaults, this.options.series[i], {rendererOptions:{animation:{show: this.animate}}}); + // pass in options in case something needs set prior to initialization. + var temp = new Series(sopts); + for (var j=0; j<$.jqplot.preParseSeriesOptionsHooks.length; j++) { + $.jqplot.preParseSeriesOptionsHooks[j].call(temp, this.options.seriesDefaults, this.options.series[i]); + } + for (var j=0; j<this.preParseSeriesOptionsHooks.hooks.length; j++) { + this.preParseSeriesOptionsHooks.hooks[j].call(temp, this.options.seriesDefaults, this.options.series[i]); + } + // Now go back and apply the options to the series. Really should just do this during initializaiton, but don't want to + // mess up preParseSeriesOptionsHooks at this point. + $.extend(true, temp, sopts); + var dir = 'vertical'; + if (temp.renderer === $.jqplot.BarRenderer && temp.rendererOptions && temp.rendererOptions.barDirection == 'horizontal') { + dir = 'horizontal'; + temp._stackAxis = 'x'; + temp._primaryAxis = '_yaxis'; + } + temp.data = normalizeData(this.data[i], dir, this.defaultAxisStart); + switch (temp.xaxis) { + case 'xaxis': + temp._xaxis = this.axes.xaxis; + break; + case 'x2axis': + temp._xaxis = this.axes.x2axis; + break; + default: + break; + } + temp._yaxis = this.axes[temp.yaxis]; + temp._xaxis._series.push(temp); + temp._yaxis._series.push(temp); + if (temp.show) { + temp._xaxis.show = true; + temp._yaxis.show = true; + } + else { + if (temp._xaxis.scaleToHiddenSeries) { + temp._xaxis.show = true; + } + if (temp._yaxis.scaleToHiddenSeries) { + temp._yaxis.show = true; + } + } + + // // parse the renderer options and apply default colors if not provided + // if (!temp.color && temp.show != false) { + // temp.color = cg.next(); + // colorIndex = cg.getIndex() - 1;; + // } + // if (!temp.negativeColor && temp.show != false) { + // temp.negativeColor = ncg.get(colorIndex); + // ncg.setIndex(colorIndex); + // } + if (!temp.label) { + temp.label = 'Series '+ (i+1).toString(); + } + // temp.rendererOptions.show = temp.show; + // $.extend(true, temp.renderer, {color:this.seriesColors[i]}, this.rendererOptions); + this.series.push(temp); + for (var j=0; j<$.jqplot.postParseSeriesOptionsHooks.length; j++) { + $.jqplot.postParseSeriesOptionsHooks[j].call(this.series[i], this.options.seriesDefaults, this.options.series[i]); + } + for (var j=0; j<this.postParseSeriesOptionsHooks.hooks.length; j++) { + this.postParseSeriesOptionsHooks.hooks[j].call(this.series[i], this.options.seriesDefaults, this.options.series[i]); + } + } + + // copy the grid and title options into this object. + $.extend(true, this.grid, this.options.grid); + // if axis border properties aren't set, set default. + for (var i=0, l=_axisNames.length; i<l; i++) { + var n = _axisNames[i]; + var axis = this.axes[n]; + if (axis.borderWidth == null) { + axis.borderWidth =this.grid.borderWidth; + } + } + + if (typeof this.options.title == 'string') { + this.title.text = this.options.title; + } + else if (typeof this.options.title == 'object') { + $.extend(true, this.title, this.options.title); + } + this.title._plotWidth = this._width; + this.legend.setOptions(this.options.legend); + + for (var i=0; i<$.jqplot.postParseOptionsHooks.length; i++) { + $.jqplot.postParseOptionsHooks[i].call(this, options); + } + for (var i=0; i<this.postParseOptionsHooks.hooks.length; i++) { + this.postParseOptionsHooks.hooks[i].call(this, options); + } + }; + + // method: destroy + // Releases all resources occupied by the plot + this.destroy = function() { + this.canvasManager.freeAllCanvases(); + if (this.eventCanvas && this.eventCanvas._elem) { + this.eventCanvas._elem.unbind(); + } + // Couple of posts on Stack Overflow indicate that empty() doesn't + // always cear up the dom and release memory. Sometimes setting + // innerHTML property to null is needed. Particularly on IE, may + // have to directly set it to null, bypassing $. + this.target.empty(); + + this.target[0].innerHTML = ''; + }; + + // method: replot + // Does a reinitialization of the plot followed by + // a redraw. Method could be used to interactively + // change plot characteristics and then replot. + // + // Parameters: + // options - Options used for replotting. + // + // Properties: + // clear - false to not clear (empty) the plot container before replotting (default: true). + // resetAxes - true to reset all axes min, max, numberTicks and tickInterval setting so axes will rescale themselves. + // optionally pass in list of axes to reset (e.g. ['xaxis', 'y2axis']) (default: false). + this.replot = function(options) { + var opts = options || {}; + var data = opts.data || null; + var clear = (opts.clear === false) ? false : true; + var resetAxes = opts.resetAxes || false; + delete opts.data; + delete opts.clear; + delete opts.resetAxes; + + this.target.trigger('jqplotPreReplot'); + + if (clear) { + this.destroy(); + } + // if have data or other options, full reinit. + // otherwise, quickinit. + if (data || !$.isEmptyObject(opts)) { + this.reInitialize(data, opts); + } + else { + this.quickInit(); + } + + if (resetAxes) { + this.resetAxesScale(resetAxes, opts.axes); + } + this.draw(); + this.target.trigger('jqplotPostReplot'); + }; + + // method: redraw + // Empties the plot target div and redraws the plot. + // This enables plot data and properties to be changed + // and then to comletely clear the plot and redraw. + // redraw *will not* reinitialize any plot elements. + // That is, axes will not be autoscaled and defaults + // will not be reapplied to any plot elements. redraw + // is used primarily with zooming. + // + // Parameters: + // clear - false to not clear (empty) the plot container before redrawing (default: true). + this.redraw = function(clear) { + clear = (clear != null) ? clear : true; + this.target.trigger('jqplotPreRedraw'); + if (clear) { + this.canvasManager.freeAllCanvases(); + this.eventCanvas._elem.unbind(); + // Dont think I bind any events to the target, this shouldn't be necessary. + // It will remove user's events. + // this.target.unbind(); + this.target.empty(); + } + for (var ax in this.axes) { + this.axes[ax]._ticks = []; + } + this.computePlotData(); + // for (var i=0; i<this.series.length; i++) { + // this.populatePlotData(this.series[i], i); + // } + this._sumy = 0; + this._sumx = 0; + for (var i=0, tsl = this.series.length; i<tsl; i++) { + this._sumy += this.series[i]._sumy; + this._sumx += this.series[i]._sumx; + } + this.draw(); + this.target.trigger('jqplotPostRedraw'); + }; + + // method: draw + // Draws all elements of the plot into the container. + // Does not clear the container before drawing. + this.draw = function(){ + if (this.drawIfHidden || this.target.is(':visible')) { + this.target.trigger('jqplotPreDraw'); + var i, + j, + l, + tempseries; + for (i=0, l=$.jqplot.preDrawHooks.length; i<l; i++) { + $.jqplot.preDrawHooks[i].call(this); + } + for (i=0, l=this.preDrawHooks.hooks.length; i<l; i++) { + this.preDrawHooks.hooks[i].apply(this, this.preDrawSeriesHooks.args[i]); + } + // create an underlying canvas to be used for special features. + this.target.append(this.baseCanvas.createElement({left:0, right:0, top:0, bottom:0}, 'jqplot-base-canvas', null, this)); + this.baseCanvas.setContext(); + this.target.append(this.title.draw()); + this.title.pack({top:0, left:0}); + + // make room for the legend between the grid and the edge. + // pass a dummy offsets object and a reference to the plot. + var legendElem = this.legend.draw({}, this); + + var gridPadding = {top:0, left:0, bottom:0, right:0}; + + if (this.legend.placement == "outsideGrid") { + // temporarily append the legend to get dimensions + this.target.append(legendElem); + switch (this.legend.location) { + case 'n': + gridPadding.top += this.legend.getHeight(); + break; + case 's': + gridPadding.bottom += this.legend.getHeight(); + break; + case 'ne': + case 'e': + case 'se': + gridPadding.right += this.legend.getWidth(); + break; + case 'nw': + case 'w': + case 'sw': + gridPadding.left += this.legend.getWidth(); + break; + default: // same as 'ne' + gridPadding.right += this.legend.getWidth(); + break; + } + legendElem = legendElem.detach(); + } + + var ax = this.axes; + var name; + // draw the yMidAxis first, so xaxis of pyramid chart can adjust itself if needed. + for (i=0; i<12; i++) { + name = _axisNames[i]; + this.target.append(ax[name].draw(this.baseCanvas._ctx, this)); + ax[name].set(); + } + if (ax.yaxis.show) { + gridPadding.left += ax.yaxis.getWidth(); + } + var ra = ['y2axis', 'y3axis', 'y4axis', 'y5axis', 'y6axis', 'y7axis', 'y8axis', 'y9axis']; + var rapad = [0, 0, 0, 0, 0, 0, 0, 0]; + var gpr = 0; + var n; + for (n=0; n<8; n++) { + if (ax[ra[n]].show) { + gpr += ax[ra[n]].getWidth(); + rapad[n] = gpr; + } + } + gridPadding.right += gpr; + if (ax.x2axis.show) { + gridPadding.top += ax.x2axis.getHeight(); + } + if (this.title.show) { + gridPadding.top += this.title.getHeight(); + } + if (ax.xaxis.show) { + gridPadding.bottom += ax.xaxis.getHeight(); + } + + // end of gridPadding adjustments. + + // if user passed in gridDimensions option, check against calculated gridPadding + if (this.options.gridDimensions && $.isPlainObject(this.options.gridDimensions)) { + var gdw = parseInt(this.options.gridDimensions.width, 10) || 0; + var gdh = parseInt(this.options.gridDimensions.height, 10) || 0; + var widthAdj = (this._width - gridPadding.left - gridPadding.right - gdw)/2; + var heightAdj = (this._height - gridPadding.top - gridPadding.bottom - gdh)/2; + + if (heightAdj >= 0 && widthAdj >= 0) { + gridPadding.top += heightAdj; + gridPadding.bottom += heightAdj; + gridPadding.left += widthAdj; + gridPadding.right += widthAdj; + } + } + var arr = ['top', 'bottom', 'left', 'right']; + for (var n in arr) { + if (this._gridPadding[arr[n]] == null && gridPadding[arr[n]] > 0) { + this._gridPadding[arr[n]] = gridPadding[arr[n]]; + } + else if (this._gridPadding[arr[n]] == null) { + this._gridPadding[arr[n]] = this._defaultGridPadding[arr[n]]; + } + } + + var legendPadding = this._gridPadding; + + if (this.legend.placement === 'outsideGrid') { + legendPadding = {top:this.title.getHeight(), left: 0, right: 0, bottom: 0}; + } + + ax.xaxis.pack({position:'absolute', bottom:this._gridPadding.bottom - ax.xaxis.getHeight(), left:0, width:this._width}, {min:this._gridPadding.left, max:this._width - this._gridPadding.right}); + ax.yaxis.pack({position:'absolute', top:0, left:this._gridPadding.left - ax.yaxis.getWidth(), height:this._height}, {min:this._height - this._gridPadding.bottom, max: this._gridPadding.top}); + ax.x2axis.pack({position:'absolute', top:this._gridPadding.top - ax.x2axis.getHeight(), left:0, width:this._width}, {min:this._gridPadding.left, max:this._width - this._gridPadding.right}); + for (i=8; i>0; i--) { + ax[ra[i-1]].pack({position:'absolute', top:0, right:this._gridPadding.right - rapad[i-1]}, {min:this._height - this._gridPadding.bottom, max: this._gridPadding.top}); + } + var ltemp = (this._width - this._gridPadding.left - this._gridPadding.right)/2.0 + this._gridPadding.left - ax.yMidAxis.getWidth()/2.0; + ax.yMidAxis.pack({position:'absolute', top:0, left:ltemp, zIndex:9, textAlign: 'center'}, {min:this._height - this._gridPadding.bottom, max: this._gridPadding.top}); + + this.target.append(this.grid.createElement(this._gridPadding, this)); + this.grid.draw(); + + var series = this.series; + var seriesLength = series.length; + // put the shadow canvases behind the series canvases so shadows don't overlap on stacked bars. + for (i=0, l=seriesLength; i<l; i++) { + // draw series in order of stacking. This affects only + // order in which canvases are added to dom. + j = this.seriesStack[i]; + this.target.append(series[j].shadowCanvas.createElement(this._gridPadding, 'jqplot-series-shadowCanvas', null, this)); + series[j].shadowCanvas.setContext(); + series[j].shadowCanvas._elem.data('seriesIndex', j); + } + + for (i=0, l=seriesLength; i<l; i++) { + // draw series in order of stacking. This affects only + // order in which canvases are added to dom. + j = this.seriesStack[i]; + this.target.append(series[j].canvas.createElement(this._gridPadding, 'jqplot-series-canvas', null, this)); + series[j].canvas.setContext(); + series[j].canvas._elem.data('seriesIndex', j); + } + // Need to use filled canvas to capture events in IE. + // Also, canvas seems to block selection of other elements in document on FF. + this.target.append(this.eventCanvas.createElement(this._gridPadding, 'jqplot-event-canvas', null, this)); + this.eventCanvas.setContext(); + this.eventCanvas._ctx.fillStyle = 'rgba(0,0,0,0)'; + this.eventCanvas._ctx.fillRect(0,0,this.eventCanvas._ctx.canvas.width, this.eventCanvas._ctx.canvas.height); + + // bind custom event handlers to regular events. + this.bindCustomEvents(); + + // draw legend before series if the series needs to know the legend dimensions. + if (this.legend.preDraw) { + this.eventCanvas._elem.before(legendElem); + this.legend.pack(legendPadding); + if (this.legend._elem) { + this.drawSeries({legendInfo:{location:this.legend.location, placement:this.legend.placement, width:this.legend.getWidth(), height:this.legend.getHeight(), xoffset:this.legend.xoffset, yoffset:this.legend.yoffset}}); + } + else { + this.drawSeries(); + } + } + else { // draw series before legend + this.drawSeries(); + if (seriesLength) { + $(series[seriesLength-1].canvas._elem).after(legendElem); + } + this.legend.pack(legendPadding); + } + + // register event listeners on the overlay canvas + for (var i=0, l=$.jqplot.eventListenerHooks.length; i<l; i++) { + // in the handler, this will refer to the eventCanvas dom element. + // make sure there are references back into plot objects. + this.eventCanvas._elem.bind($.jqplot.eventListenerHooks[i][0], {plot:this}, $.jqplot.eventListenerHooks[i][1]); + } + + // register event listeners on the overlay canvas + for (var i=0, l=this.eventListenerHooks.hooks.length; i<l; i++) { + // in the handler, this will refer to the eventCanvas dom element. + // make sure there are references back into plot objects. + this.eventCanvas._elem.bind(this.eventListenerHooks.hooks[i][0], {plot:this}, this.eventListenerHooks.hooks[i][1]); + } + + var fb = this.fillBetween; + if(typeof fb.series1 == 'number'){ + if(fb.fill&&fb.series1!==fb.series2&&fb.series1<seriesLength&&fb.series2<seriesLength&&series[fb.series1]._type==="line"&&series[fb.series2]._type==="line") + this.doFillBetweenLines(); + } + else{ + if(fb.series1 != null && fb.series2 != null){ + var doFb = false; + if(fb.series1.length === fb.series2.length){ + var tempSeries1 = 0; + var tempSeries2 = 0; + + for(var cnt = 0; cnt < fb.series1.length; cnt++){ + tempSeries1 = fb.series1[cnt]; + tempSeries2 = fb.series2[cnt]; + if(tempSeries1!==tempSeries2&&tempSeries1<seriesLength&&tempSeries2<seriesLength&&series[tempSeries1]._type==="line"&&series[tempSeries2]._type==="line"){ + doFb = true; + } + else{ + doFb = false; + break; + } + } + } + if(fb.fill && doFb){ + this.doFillBetweenLines(); + } + } + } + + for (var i=0, l=$.jqplot.postDrawHooks.length; i<l; i++) { + $.jqplot.postDrawHooks[i].call(this); + } + + for (var i=0, l=this.postDrawHooks.hooks.length; i<l; i++) { + this.postDrawHooks.hooks[i].apply(this, this.postDrawHooks.args[i]); + } + + if (this.target.is(':visible')) { + this._drawCount += 1; + } + + var temps, + tempr, + sel, + _els; + // ughh. ideally would hide all series then show them. + for (i=0, l=seriesLength; i<l; i++) { + temps = series[i]; + tempr = temps.renderer; + sel = '.jqplot-point-label.jqplot-series-'+i; + if (tempr.animation && tempr.animation._supported && tempr.animation.show && (this._drawCount < 2 || this.animateReplot)) { + _els = this.target.find(sel); + _els.stop(true, true).hide(); + temps.canvas._elem.stop(true, true).hide(); + temps.shadowCanvas._elem.stop(true, true).hide(); + temps.canvas._elem.jqplotEffect('blind', {mode: 'show', direction: tempr.animation.direction}, tempr.animation.speed); + temps.shadowCanvas._elem.jqplotEffect('blind', {mode: 'show', direction: tempr.animation.direction}, tempr.animation.speed); + _els.fadeIn(tempr.animation.speed*0.8); + } + } + _els = null; + + this.target.trigger('jqplotPostDraw', [this]); + } + }; + + jqPlot.prototype.doFillBetweenLines = function () { + var fb = this.fillBetween; + var series = this.series; + var sid1 = fb.series1; + var sid2 = fb.series2; + var id1 = 0, id2 = 0; + + function fill(id1, id2){ + var series1 = series[id1]; + var series2 = series[id2]; + if (series2.renderer.smooth) + var tempgd = series2.renderer._smoothedData.slice(0).reverse(); + else + var tempgd = series2.gridData.slice(0).reverse(); + if (series1.renderer.smooth) + var gd = series1.renderer._smoothedData.concat(tempgd); + else + var gd = series1.gridData.concat(tempgd); + var color = fb.color !== null ? fb.color : series[id1].fillColor; + var baseSeries = fb.baseSeries !== null ? fb.baseSeries : id1; + var sr = + series[baseSeries].renderer.shapeRenderer; + var opts = + { + fillStyle : color, + fill : true, + closePath : true + }; + sr.draw(series1.shadowCanvas._ctx, gd, opts) + } + + if(typeof sid1 == 'number' && typeof sid2 == 'number'){ + id1 = sid1 < sid2 ? sid1 : sid2; + id2 = sid2 > sid1 ? sid2 : sid1; + fill(id1, id2); + } + else{ + for(var cnt = 0; cnt < sid1.length ; cnt++){ + id1 = sid1[cnt] < sid2[cnt] ? sid1[cnt] : sid2[cnt]; + id2 = sid2[cnt] > sid1[cnt] ? sid2[cnt] : sid1[cnt]; + fill(id1, id2); + } + } + }; + + this.bindCustomEvents = function() { + this.eventCanvas._elem.bind('click', {plot:this}, this.onClick); + this.eventCanvas._elem.bind('dblclick', {plot:this}, this.onDblClick); + this.eventCanvas._elem.bind('mousedown', {plot:this}, this.onMouseDown); + this.eventCanvas._elem.bind('mousemove', {plot:this}, this.onMouseMove); + this.eventCanvas._elem.bind('mouseenter', {plot:this}, this.onMouseEnter); + this.eventCanvas._elem.bind('mouseleave', {plot:this}, this.onMouseLeave); + if (this.captureRightClick) { + this.eventCanvas._elem.bind('mouseup', {plot:this}, this.onRightClick); + this.eventCanvas._elem.get(0).oncontextmenu = function() { + return false; + }; + } + else { + this.eventCanvas._elem.bind('mouseup', {plot:this}, this.onMouseUp); + } + }; + + function getEventPosition(ev) { + var plot = ev.data.plot; + var go = plot.eventCanvas._elem.offset(); + var gridPos = {x:ev.pageX - go.left, y:ev.pageY - go.top}; + var dataPos = {xaxis:null, yaxis:null, x2axis:null, y2axis:null, y3axis:null, y4axis:null, y5axis:null, y6axis:null, y7axis:null, y8axis:null, y9axis:null, yMidAxis:null}; + var an = ['xaxis', 'yaxis', 'x2axis', 'y2axis', 'y3axis', 'y4axis', 'y5axis', 'y6axis', 'y7axis', 'y8axis', 'y9axis', 'yMidAxis']; + var ax = plot.axes; + var n, axis; + for (n=11; n>0; n--) { + axis = an[n-1]; + if (ax[axis].show) { + dataPos[axis] = ax[axis].series_p2u(gridPos[axis.charAt(0)]); + } + } + + return {offsets:go, gridPos:gridPos, dataPos:dataPos}; + } + + + // function to check if event location is over a area area + function checkIntersection(gridpos, plot) { + var series = plot.series; + var i, j, k, s, r, x, y, theta, sm, sa, minang, maxang; + var d0, d, p, pp, points, bw, hp; + var threshold, t; + for (k=plot.seriesStack.length-1; k>=0; k--) { + i = plot.seriesStack[k]; + s = series[i]; + hp = s._highlightThreshold; + switch (s.renderer.constructor) { + case $.jqplot.BarRenderer: + x = gridpos.x; + y = gridpos.y; + for (j=0; j<s._barPoints.length; j++) { + points = s._barPoints[j]; + p = s.gridData[j]; + if (x>points[0][0] && x<points[2][0] && (y>points[2][1] && y<points[0][1] || y<points[2][1] && y>points[0][1])) { + return {seriesIndex:s.index, pointIndex:j, gridData:p, data:s.data[j], points:s._barPoints[j]}; + } + } + break; + case $.jqplot.PyramidRenderer: + x = gridpos.x; + y = gridpos.y; + for (j=0; j<s._barPoints.length; j++) { + points = s._barPoints[j]; + p = s.gridData[j]; + if (x > points[0][0] + hp[0][0] && x < points[2][0] + hp[2][0] && y > points[2][1] && y < points[0][1]) { + return {seriesIndex:s.index, pointIndex:j, gridData:p, data:s.data[j], points:s._barPoints[j]}; + } + } + break; + + case $.jqplot.DonutRenderer: + sa = s.startAngle/180*Math.PI; + x = gridpos.x - s._center[0]; + y = gridpos.y - s._center[1]; + r = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)); + if (x > 0 && -y >= 0) { + theta = 2*Math.PI - Math.atan(-y/x); + } + else if (x > 0 && -y < 0) { + theta = -Math.atan(-y/x); + } + else if (x < 0) { + theta = Math.PI - Math.atan(-y/x); + } + else if (x == 0 && -y > 0) { + theta = 3*Math.PI/2; + } + else if (x == 0 && -y < 0) { + theta = Math.PI/2; + } + else if (x == 0 && y == 0) { + theta = 0; + } + if (sa) { + theta -= sa; + if (theta < 0) { + theta += 2*Math.PI; + } + else if (theta > 2*Math.PI) { + theta -= 2*Math.PI; + } + } + + sm = s.sliceMargin/180*Math.PI; + if (r < s._radius && r > s._innerRadius) { + for (j=0; j<s.gridData.length; j++) { + minang = (j>0) ? s.gridData[j-1][1]+sm : sm; + maxang = s.gridData[j][1]; + if (theta > minang && theta < maxang) { + return {seriesIndex:s.index, pointIndex:j, gridData:[gridpos.x,gridpos.y], data:s.data[j]}; + } + } + } + break; + + case $.jqplot.PieRenderer: + sa = s.startAngle/180*Math.PI; + x = gridpos.x - s._center[0]; + y = gridpos.y - s._center[1]; + r = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)); + if (x > 0 && -y >= 0) { + theta = 2*Math.PI - Math.atan(-y/x); + } + else if (x > 0 && -y < 0) { + theta = -Math.atan(-y/x); + } + else if (x < 0) { + theta = Math.PI - Math.atan(-y/x); + } + else if (x == 0 && -y > 0) { + theta = 3*Math.PI/2; + } + else if (x == 0 && -y < 0) { + theta = Math.PI/2; + } + else if (x == 0 && y == 0) { + theta = 0; + } + if (sa) { + theta -= sa; + if (theta < 0) { + theta += 2*Math.PI; + } + else if (theta > 2*Math.PI) { + theta -= 2*Math.PI; + } + } + + sm = s.sliceMargin/180*Math.PI; + if (r < s._radius) { + for (j=0; j<s.gridData.length; j++) { + minang = (j>0) ? s.gridData[j-1][1]+sm : sm; + maxang = s.gridData[j][1]; + if (theta > minang && theta < maxang) { + return {seriesIndex:s.index, pointIndex:j, gridData:[gridpos.x,gridpos.y], data:s.data[j]}; + } + } + } + break; + + case $.jqplot.BubbleRenderer: + x = gridpos.x; + y = gridpos.y; + var ret = null; + + if (s.show) { + for (var j=0; j<s.gridData.length; j++) { + p = s.gridData[j]; + d = Math.sqrt( (x-p[0]) * (x-p[0]) + (y-p[1]) * (y-p[1]) ); + if (d <= p[2] && (d <= d0 || d0 == null)) { + d0 = d; + ret = {seriesIndex: i, pointIndex:j, gridData:p, data:s.data[j]}; + } + } + if (ret != null) { + return ret; + } + } + break; + + case $.jqplot.FunnelRenderer: + x = gridpos.x; + y = gridpos.y; + var v = s._vertices, + vfirst = v[0], + vlast = v[v.length-1], + lex, + rex, + cv; + + // equations of right and left sides, returns x, y values given height of section (y value and 2 points) + + function findedge (l, p1 , p2) { + var m = (p1[1] - p2[1])/(p1[0] - p2[0]); + var b = p1[1] - m*p1[0]; + var y = l + p1[1]; + + return [(y - b)/m, y]; + } + + // check each section + lex = findedge(y, vfirst[0], vlast[3]); + rex = findedge(y, vfirst[1], vlast[2]); + for (j=0; j<v.length; j++) { + cv = v[j]; + if (y >= cv[0][1] && y <= cv[3][1] && x >= lex[0] && x <= rex[0]) { + return {seriesIndex:s.index, pointIndex:j, gridData:null, data:s.data[j]}; + } + } + break; + + case $.jqplot.LineRenderer: + x = gridpos.x; + y = gridpos.y; + r = s.renderer; + if (s.show) { + if ((s.fill || (s.renderer.bands.show && s.renderer.bands.fill)) && (!plot.plugins.highlighter || !plot.plugins.highlighter.show)) { + // first check if it is in bounding box + var inside = false; + if (x>s._boundingBox[0][0] && x<s._boundingBox[1][0] && y>s._boundingBox[1][1] && y<s._boundingBox[0][1]) { + // now check the crossing number + + var numPoints = s._areaPoints.length; + var ii; + var j = numPoints-1; + + for(var ii=0; ii < numPoints; ii++) { + var vertex1 = [s._areaPoints[ii][0], s._areaPoints[ii][1]]; + var vertex2 = [s._areaPoints[j][0], s._areaPoints[j][1]]; + + if (vertex1[1] < y && vertex2[1] >= y || vertex2[1] < y && vertex1[1] >= y) { + if (vertex1[0] + (y - vertex1[1]) / (vertex2[1] - vertex1[1]) * (vertex2[0] - vertex1[0]) < x) { + inside = !inside; + } + } + + j = ii; + } + } + if (inside) { + return {seriesIndex:i, pointIndex:null, gridData:s.gridData, data:s.data, points:s._areaPoints}; + } + break; + + } + + else { + t = s.markerRenderer.size/2+s.neighborThreshold; + threshold = (t > 0) ? t : 0; + for (var j=0; j<s.gridData.length; j++) { + p = s.gridData[j]; + // neighbor looks different to OHLC chart. + if (r.constructor == $.jqplot.OHLCRenderer) { + if (r.candleStick) { + var yp = s._yaxis.series_u2p; + if (x >= p[0]-r._bodyWidth/2 && x <= p[0]+r._bodyWidth/2 && y >= yp(s.data[j][2]) && y <= yp(s.data[j][3])) { + return {seriesIndex: i, pointIndex:j, gridData:p, data:s.data[j]}; + } + } + // if an open hi low close chart + else if (!r.hlc){ + var yp = s._yaxis.series_u2p; + if (x >= p[0]-r._tickLength && x <= p[0]+r._tickLength && y >= yp(s.data[j][2]) && y <= yp(s.data[j][3])) { + return {seriesIndex: i, pointIndex:j, gridData:p, data:s.data[j]}; + } + } + // a hi low close chart + else { + var yp = s._yaxis.series_u2p; + if (x >= p[0]-r._tickLength && x <= p[0]+r._tickLength && y >= yp(s.data[j][1]) && y <= yp(s.data[j][2])) { + return {seriesIndex: i, pointIndex:j, gridData:p, data:s.data[j]}; + } + } + + } + else if (p[0] != null && p[1] != null){ + d = Math.sqrt( (x-p[0]) * (x-p[0]) + (y-p[1]) * (y-p[1]) ); + if (d <= threshold && (d <= d0 || d0 == null)) { + d0 = d; + return {seriesIndex: i, pointIndex:j, gridData:p, data:s.data[j]}; + } + } + } + } + } + break; + + default: + x = gridpos.x; + y = gridpos.y; + r = s.renderer; + if (s.show) { + t = s.markerRenderer.size/2+s.neighborThreshold; + threshold = (t > 0) ? t : 0; + for (var j=0; j<s.gridData.length; j++) { + p = s.gridData[j]; + // neighbor looks different to OHLC chart. + if (r.constructor == $.jqplot.OHLCRenderer) { + if (r.candleStick) { + var yp = s._yaxis.series_u2p; + if (x >= p[0]-r._bodyWidth/2 && x <= p[0]+r._bodyWidth/2 && y >= yp(s.data[j][2]) && y <= yp(s.data[j][3])) { + return {seriesIndex: i, pointIndex:j, gridData:p, data:s.data[j]}; + } + } + // if an open hi low close chart + else if (!r.hlc){ + var yp = s._yaxis.series_u2p; + if (x >= p[0]-r._tickLength && x <= p[0]+r._tickLength && y >= yp(s.data[j][2]) && y <= yp(s.data[j][3])) { + return {seriesIndex: i, pointIndex:j, gridData:p, data:s.data[j]}; + } + } + // a hi low close chart + else { + var yp = s._yaxis.series_u2p; + if (x >= p[0]-r._tickLength && x <= p[0]+r._tickLength && y >= yp(s.data[j][1]) && y <= yp(s.data[j][2])) { + return {seriesIndex: i, pointIndex:j, gridData:p, data:s.data[j]}; + } + } + + } + else { + d = Math.sqrt( (x-p[0]) * (x-p[0]) + (y-p[1]) * (y-p[1]) ); + if (d <= threshold && (d <= d0 || d0 == null)) { + d0 = d; + return {seriesIndex: i, pointIndex:j, gridData:p, data:s.data[j]}; + } + } + } + } + break; + } + } + + return null; + } + + + + this.onClick = function(ev) { + // Event passed in is normalized and will have data attribute. + // Event passed out is unnormalized. + var positions = getEventPosition(ev); + var p = ev.data.plot; + var neighbor = checkIntersection(positions.gridPos, p); + var evt = $.Event('jqplotClick'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + $(this).trigger(evt, [positions.gridPos, positions.dataPos, neighbor, p]); + }; + + this.onDblClick = function(ev) { + // Event passed in is normalized and will have data attribute. + // Event passed out is unnormalized. + var positions = getEventPosition(ev); + var p = ev.data.plot; + var neighbor = checkIntersection(positions.gridPos, p); + var evt = $.Event('jqplotDblClick'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + $(this).trigger(evt, [positions.gridPos, positions.dataPos, neighbor, p]); + }; + + this.onMouseDown = function(ev) { + var positions = getEventPosition(ev); + var p = ev.data.plot; + var neighbor = checkIntersection(positions.gridPos, p); + var evt = $.Event('jqplotMouseDown'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + $(this).trigger(evt, [positions.gridPos, positions.dataPos, neighbor, p]); + }; + + this.onMouseUp = function(ev) { + var positions = getEventPosition(ev); + var evt = $.Event('jqplotMouseUp'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + $(this).trigger(evt, [positions.gridPos, positions.dataPos, null, ev.data.plot]); + }; + + this.onRightClick = function(ev) { + var positions = getEventPosition(ev); + var p = ev.data.plot; + var neighbor = checkIntersection(positions.gridPos, p); + if (p.captureRightClick) { + if (ev.which == 3) { + var evt = $.Event('jqplotRightClick'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + $(this).trigger(evt, [positions.gridPos, positions.dataPos, neighbor, p]); + } + else { + var evt = $.Event('jqplotMouseUp'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + $(this).trigger(evt, [positions.gridPos, positions.dataPos, neighbor, p]); + } + } + }; + + this.onMouseMove = function(ev) { + var positions = getEventPosition(ev); + var p = ev.data.plot; + var neighbor = checkIntersection(positions.gridPos, p); + var evt = $.Event('jqplotMouseMove'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + $(this).trigger(evt, [positions.gridPos, positions.dataPos, neighbor, p]); + }; + + this.onMouseEnter = function(ev) { + var positions = getEventPosition(ev); + var p = ev.data.plot; + var evt = $.Event('jqplotMouseEnter'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + evt.relatedTarget = ev.relatedTarget; + $(this).trigger(evt, [positions.gridPos, positions.dataPos, null, p]); + }; + + this.onMouseLeave = function(ev) { + var positions = getEventPosition(ev); + var p = ev.data.plot; + var evt = $.Event('jqplotMouseLeave'); + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + evt.relatedTarget = ev.relatedTarget; + $(this).trigger(evt, [positions.gridPos, positions.dataPos, null, p]); + }; + + // method: drawSeries + // Redraws all or just one series on the plot. No axis scaling + // is performed and no other elements on the plot are redrawn. + // options is an options object to pass on to the series renderers. + // It can be an empty object {}. idx is the series index + // to redraw if only one series is to be redrawn. + this.drawSeries = function(options, idx){ + var i, series, ctx; + // if only one argument passed in and it is a number, use it ad idx. + idx = (typeof(options) === "number" && idx == null) ? options : idx; + options = (typeof(options) === "object") ? options : {}; + // draw specified series + if (idx != undefined) { + series = this.series[idx]; + ctx = series.shadowCanvas._ctx; + ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); + series.drawShadow(ctx, options, this); + ctx = series.canvas._ctx; + ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); + series.draw(ctx, options, this); + if (series.renderer.constructor == $.jqplot.BezierCurveRenderer) { + if (idx < this.series.length - 1) { + this.drawSeries(idx+1); + } + } + } + + else { + // if call series drawShadow method first, in case all series shadows + // should be drawn before any series. This will ensure, like for + // stacked bar plots, that shadows don't overlap series. + for (i=0; i<this.series.length; i++) { + // first clear the canvas + series = this.series[i]; + ctx = series.shadowCanvas._ctx; + ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); + series.drawShadow(ctx, options, this); + ctx = series.canvas._ctx; + ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); + series.draw(ctx, options, this); + } + } + options = idx = i = series = ctx = null; + }; + + // method: moveSeriesToFront + // This method requires jQuery 1.4+ + // Moves the specified series canvas in front of all other series canvases. + // This effectively "draws" the specified series on top of all other series, + // although it is performed through DOM manipulation, no redrawing is performed. + // + // Parameters: + // idx - 0 based index of the series to move. This will be the index of the series + // as it was first passed into the jqplot function. + this.moveSeriesToFront = function (idx) { + idx = parseInt(idx, 10); + var stackIndex = $.inArray(idx, this.seriesStack); + // if already in front, return + if (stackIndex == -1) { + return; + } + if (stackIndex == this.seriesStack.length -1) { + this.previousSeriesStack = this.seriesStack.slice(0); + return; + } + var opidx = this.seriesStack[this.seriesStack.length -1]; + var serelem = this.series[idx].canvas._elem.detach(); + var shadelem = this.series[idx].shadowCanvas._elem.detach(); + this.series[opidx].shadowCanvas._elem.after(shadelem); + this.series[opidx].canvas._elem.after(serelem); + this.previousSeriesStack = this.seriesStack.slice(0); + this.seriesStack.splice(stackIndex, 1); + this.seriesStack.push(idx); + }; + + // method: moveSeriesToBack + // This method requires jQuery 1.4+ + // Moves the specified series canvas behind all other series canvases. + // + // Parameters: + // idx - 0 based index of the series to move. This will be the index of the series + // as it was first passed into the jqplot function. + this.moveSeriesToBack = function (idx) { + idx = parseInt(idx, 10); + var stackIndex = $.inArray(idx, this.seriesStack); + // if already in back, return + if (stackIndex == 0 || stackIndex == -1) { + return; + } + var opidx = this.seriesStack[0]; + var serelem = this.series[idx].canvas._elem.detach(); + var shadelem = this.series[idx].shadowCanvas._elem.detach(); + this.series[opidx].shadowCanvas._elem.before(shadelem); + this.series[opidx].canvas._elem.before(serelem); + this.previousSeriesStack = this.seriesStack.slice(0); + this.seriesStack.splice(stackIndex, 1); + this.seriesStack.unshift(idx); + }; + + // method: restorePreviousSeriesOrder + // This method requires jQuery 1.4+ + // Restore the series canvas order to its previous state. + // Useful to put a series back where it belongs after moving + // it to the front. + this.restorePreviousSeriesOrder = function () { + var i, j, serelem, shadelem, temp, move, keep; + // if no change, return. + if (this.seriesStack == this.previousSeriesStack) { + return; + } + for (i=1; i<this.previousSeriesStack.length; i++) { + move = this.previousSeriesStack[i]; + keep = this.previousSeriesStack[i-1]; + serelem = this.series[move].canvas._elem.detach(); + shadelem = this.series[move].shadowCanvas._elem.detach(); + this.series[keep].shadowCanvas._elem.after(shadelem); + this.series[keep].canvas._elem.after(serelem); + } + temp = this.seriesStack.slice(0); + this.seriesStack = this.previousSeriesStack.slice(0); + this.previousSeriesStack = temp; + }; + + // method: restoreOriginalSeriesOrder + // This method requires jQuery 1.4+ + // Restore the series canvas order to its original order + // when the plot was created. + this.restoreOriginalSeriesOrder = function () { + var i, j, arr=[], serelem, shadelem; + for (i=0; i<this.series.length; i++) { + arr.push(i); + } + if (this.seriesStack == arr) { + return; + } + this.previousSeriesStack = this.seriesStack.slice(0); + this.seriesStack = arr; + for (i=1; i<this.seriesStack.length; i++) { + serelem = this.series[i].canvas._elem.detach(); + shadelem = this.series[i].shadowCanvas._elem.detach(); + this.series[i-1].shadowCanvas._elem.after(shadelem); + this.series[i-1].canvas._elem.after(serelem); + } + }; + + this.activateTheme = function (name) { + this.themeEngine.activate(this, name); + }; + } + + + // conpute a highlight color or array of highlight colors from given colors. + $.jqplot.computeHighlightColors = function(colors) { + var ret; + if ($.isArray(colors)) { + ret = []; + for (var i=0; i<colors.length; i++){ + var rgba = $.jqplot.getColorComponents(colors[i]); + var newrgb = [rgba[0], rgba[1], rgba[2]]; + var sum = newrgb[0] + newrgb[1] + newrgb[2]; + for (var j=0; j<3; j++) { + // when darkening, lowest color component can be is 60. + newrgb[j] = (sum > 660) ? newrgb[j] * 0.85 : 0.73 * newrgb[j] + 90; + newrgb[j] = parseInt(newrgb[j], 10); + (newrgb[j] > 255) ? 255 : newrgb[j]; + } + // newrgb[3] = (rgba[3] > 0.4) ? rgba[3] * 0.4 : rgba[3] * 1.5; + // newrgb[3] = (rgba[3] > 0.5) ? 0.8 * rgba[3] - .1 : rgba[3] + 0.2; + newrgb[3] = 0.3 + 0.35 * rgba[3]; + ret.push('rgba('+newrgb[0]+','+newrgb[1]+','+newrgb[2]+','+newrgb[3]+')'); + } + } + else { + var rgba = $.jqplot.getColorComponents(colors); + var newrgb = [rgba[0], rgba[1], rgba[2]]; + var sum = newrgb[0] + newrgb[1] + newrgb[2]; + for (var j=0; j<3; j++) { + // when darkening, lowest color component can be is 60. + // newrgb[j] = (sum > 570) ? newrgb[j] * 0.8 : newrgb[j] + 0.3 * (255 - newrgb[j]); + // newrgb[j] = parseInt(newrgb[j], 10); + newrgb[j] = (sum > 660) ? newrgb[j] * 0.85 : 0.73 * newrgb[j] + 90; + newrgb[j] = parseInt(newrgb[j], 10); + (newrgb[j] > 255) ? 255 : newrgb[j]; + } + // newrgb[3] = (rgba[3] > 0.4) ? rgba[3] * 0.4 : rgba[3] * 1.5; + // newrgb[3] = (rgba[3] > 0.5) ? 0.8 * rgba[3] - .1 : rgba[3] + 0.2; + newrgb[3] = 0.3 + 0.35 * rgba[3]; + ret = 'rgba('+newrgb[0]+','+newrgb[1]+','+newrgb[2]+','+newrgb[3]+')'; + } + return ret; + }; + + $.jqplot.ColorGenerator = function(colors) { + colors = colors || $.jqplot.config.defaultColors; + var idx = 0; + + this.next = function () { + if (idx < colors.length) { + return colors[idx++]; + } + else { + idx = 0; + return colors[idx++]; + } + }; + + this.previous = function () { + if (idx > 0) { + return colors[idx--]; + } + else { + idx = colors.length-1; + return colors[idx]; + } + }; + + // get a color by index without advancing pointer. + this.get = function(i) { + var idx = i - colors.length * Math.floor(i/colors.length); + return colors[idx]; + }; + + this.setColors = function(c) { + colors = c; + }; + + this.reset = function() { + idx = 0; + }; + + this.getIndex = function() { + return idx; + }; + + this.setIndex = function(index) { + idx = index; + }; + }; + + // convert a hex color string to rgb string. + // h - 3 or 6 character hex string, with or without leading # + // a - optional alpha + $.jqplot.hex2rgb = function(h, a) { + h = h.replace('#', ''); + if (h.length == 3) { + h = h.charAt(0)+h.charAt(0)+h.charAt(1)+h.charAt(1)+h.charAt(2)+h.charAt(2); + } + var rgb; + rgb = 'rgba('+parseInt(h.slice(0,2), 16)+', '+parseInt(h.slice(2,4), 16)+', '+parseInt(h.slice(4,6), 16); + if (a) { + rgb += ', '+a; + } + rgb += ')'; + return rgb; + }; + + // convert an rgb color spec to a hex spec. ignore any alpha specification. + $.jqplot.rgb2hex = function(s) { + var pat = /rgba?\( *([0-9]{1,3}\.?[0-9]*%?) *, *([0-9]{1,3}\.?[0-9]*%?) *, *([0-9]{1,3}\.?[0-9]*%?) *(?:, *[0-9.]*)?\)/; + var m = s.match(pat); + var h = '#'; + for (var i=1; i<4; i++) { + var temp; + if (m[i].search(/%/) != -1) { + temp = parseInt(255*m[i]/100, 10).toString(16); + if (temp.length == 1) { + temp = '0'+temp; + } + } + else { + temp = parseInt(m[i], 10).toString(16); + if (temp.length == 1) { + temp = '0'+temp; + } + } + h += temp; + } + return h; + }; + + // given a css color spec, return an rgb css color spec + $.jqplot.normalize2rgb = function(s, a) { + if (s.search(/^ *rgba?\(/) != -1) { + return s; + } + else if (s.search(/^ *#?[0-9a-fA-F]?[0-9a-fA-F]/) != -1) { + return $.jqplot.hex2rgb(s, a); + } + else { + throw new Error('Invalid color spec'); + } + }; + + // extract the r, g, b, a color components out of a css color spec. + $.jqplot.getColorComponents = function(s) { + // check to see if a color keyword. + s = $.jqplot.colorKeywordMap[s] || s; + var rgb = $.jqplot.normalize2rgb(s); + var pat = /rgba?\( *([0-9]{1,3}\.?[0-9]*%?) *, *([0-9]{1,3}\.?[0-9]*%?) *, *([0-9]{1,3}\.?[0-9]*%?) *,? *([0-9.]* *)?\)/; + var m = rgb.match(pat); + var ret = []; + for (var i=1; i<4; i++) { + if (m[i].search(/%/) != -1) { + ret[i-1] = parseInt(255*m[i]/100, 10); + } + else { + ret[i-1] = parseInt(m[i], 10); + } + } + ret[3] = parseFloat(m[4]) ? parseFloat(m[4]) : 1.0; + return ret; + }; + + $.jqplot.colorKeywordMap = { + aliceblue: 'rgb(240, 248, 255)', + antiquewhite: 'rgb(250, 235, 215)', + aqua: 'rgb( 0, 255, 255)', + aquamarine: 'rgb(127, 255, 212)', + azure: 'rgb(240, 255, 255)', + beige: 'rgb(245, 245, 220)', + bisque: 'rgb(255, 228, 196)', + black: 'rgb( 0, 0, 0)', + blanchedalmond: 'rgb(255, 235, 205)', + blue: 'rgb( 0, 0, 255)', + blueviolet: 'rgb(138, 43, 226)', + brown: 'rgb(165, 42, 42)', + burlywood: 'rgb(222, 184, 135)', + cadetblue: 'rgb( 95, 158, 160)', + chartreuse: 'rgb(127, 255, 0)', + chocolate: 'rgb(210, 105, 30)', + coral: 'rgb(255, 127, 80)', + cornflowerblue: 'rgb(100, 149, 237)', + cornsilk: 'rgb(255, 248, 220)', + crimson: 'rgb(220, 20, 60)', + cyan: 'rgb( 0, 255, 255)', + darkblue: 'rgb( 0, 0, 139)', + darkcyan: 'rgb( 0, 139, 139)', + darkgoldenrod: 'rgb(184, 134, 11)', + darkgray: 'rgb(169, 169, 169)', + darkgreen: 'rgb( 0, 100, 0)', + darkgrey: 'rgb(169, 169, 169)', + darkkhaki: 'rgb(189, 183, 107)', + darkmagenta: 'rgb(139, 0, 139)', + darkolivegreen: 'rgb( 85, 107, 47)', + darkorange: 'rgb(255, 140, 0)', + darkorchid: 'rgb(153, 50, 204)', + darkred: 'rgb(139, 0, 0)', + darksalmon: 'rgb(233, 150, 122)', + darkseagreen: 'rgb(143, 188, 143)', + darkslateblue: 'rgb( 72, 61, 139)', + darkslategray: 'rgb( 47, 79, 79)', + darkslategrey: 'rgb( 47, 79, 79)', + darkturquoise: 'rgb( 0, 206, 209)', + darkviolet: 'rgb(148, 0, 211)', + deeppink: 'rgb(255, 20, 147)', + deepskyblue: 'rgb( 0, 191, 255)', + dimgray: 'rgb(105, 105, 105)', + dimgrey: 'rgb(105, 105, 105)', + dodgerblue: 'rgb( 30, 144, 255)', + firebrick: 'rgb(178, 34, 34)', + floralwhite: 'rgb(255, 250, 240)', + forestgreen: 'rgb( 34, 139, 34)', + fuchsia: 'rgb(255, 0, 255)', + gainsboro: 'rgb(220, 220, 220)', + ghostwhite: 'rgb(248, 248, 255)', + gold: 'rgb(255, 215, 0)', + goldenrod: 'rgb(218, 165, 32)', + gray: 'rgb(128, 128, 128)', + grey: 'rgb(128, 128, 128)', + green: 'rgb( 0, 128, 0)', + greenyellow: 'rgb(173, 255, 47)', + honeydew: 'rgb(240, 255, 240)', + hotpink: 'rgb(255, 105, 180)', + indianred: 'rgb(205, 92, 92)', + indigo: 'rgb( 75, 0, 130)', + ivory: 'rgb(255, 255, 240)', + khaki: 'rgb(240, 230, 140)', + lavender: 'rgb(230, 230, 250)', + lavenderblush: 'rgb(255, 240, 245)', + lawngreen: 'rgb(124, 252, 0)', + lemonchiffon: 'rgb(255, 250, 205)', + lightblue: 'rgb(173, 216, 230)', + lightcoral: 'rgb(240, 128, 128)', + lightcyan: 'rgb(224, 255, 255)', + lightgoldenrodyellow: 'rgb(250, 250, 210)', + lightgray: 'rgb(211, 211, 211)', + lightgreen: 'rgb(144, 238, 144)', + lightgrey: 'rgb(211, 211, 211)', + lightpink: 'rgb(255, 182, 193)', + lightsalmon: 'rgb(255, 160, 122)', + lightseagreen: 'rgb( 32, 178, 170)', + lightskyblue: 'rgb(135, 206, 250)', + lightslategray: 'rgb(119, 136, 153)', + lightslategrey: 'rgb(119, 136, 153)', + lightsteelblue: 'rgb(176, 196, 222)', + lightyellow: 'rgb(255, 255, 224)', + lime: 'rgb( 0, 255, 0)', + limegreen: 'rgb( 50, 205, 50)', + linen: 'rgb(250, 240, 230)', + magenta: 'rgb(255, 0, 255)', + maroon: 'rgb(128, 0, 0)', + mediumaquamarine: 'rgb(102, 205, 170)', + mediumblue: 'rgb( 0, 0, 205)', + mediumorchid: 'rgb(186, 85, 211)', + mediumpurple: 'rgb(147, 112, 219)', + mediumseagreen: 'rgb( 60, 179, 113)', + mediumslateblue: 'rgb(123, 104, 238)', + mediumspringgreen: 'rgb( 0, 250, 154)', + mediumturquoise: 'rgb( 72, 209, 204)', + mediumvioletred: 'rgb(199, 21, 133)', + midnightblue: 'rgb( 25, 25, 112)', + mintcream: 'rgb(245, 255, 250)', + mistyrose: 'rgb(255, 228, 225)', + moccasin: 'rgb(255, 228, 181)', + navajowhite: 'rgb(255, 222, 173)', + navy: 'rgb( 0, 0, 128)', + oldlace: 'rgb(253, 245, 230)', + olive: 'rgb(128, 128, 0)', + olivedrab: 'rgb(107, 142, 35)', + orange: 'rgb(255, 165, 0)', + orangered: 'rgb(255, 69, 0)', + orchid: 'rgb(218, 112, 214)', + palegoldenrod: 'rgb(238, 232, 170)', + palegreen: 'rgb(152, 251, 152)', + paleturquoise: 'rgb(175, 238, 238)', + palevioletred: 'rgb(219, 112, 147)', + papayawhip: 'rgb(255, 239, 213)', + peachpuff: 'rgb(255, 218, 185)', + peru: 'rgb(205, 133, 63)', + pink: 'rgb(255, 192, 203)', + plum: 'rgb(221, 160, 221)', + powderblue: 'rgb(176, 224, 230)', + purple: 'rgb(128, 0, 128)', + red: 'rgb(255, 0, 0)', + rosybrown: 'rgb(188, 143, 143)', + royalblue: 'rgb( 65, 105, 225)', + saddlebrown: 'rgb(139, 69, 19)', + salmon: 'rgb(250, 128, 114)', + sandybrown: 'rgb(244, 164, 96)', + seagreen: 'rgb( 46, 139, 87)', + seashell: 'rgb(255, 245, 238)', + sienna: 'rgb(160, 82, 45)', + silver: 'rgb(192, 192, 192)', + skyblue: 'rgb(135, 206, 235)', + slateblue: 'rgb(106, 90, 205)', + slategray: 'rgb(112, 128, 144)', + slategrey: 'rgb(112, 128, 144)', + snow: 'rgb(255, 250, 250)', + springgreen: 'rgb( 0, 255, 127)', + steelblue: 'rgb( 70, 130, 180)', + tan: 'rgb(210, 180, 140)', + teal: 'rgb( 0, 128, 128)', + thistle: 'rgb(216, 191, 216)', + tomato: 'rgb(255, 99, 71)', + turquoise: 'rgb( 64, 224, 208)', + violet: 'rgb(238, 130, 238)', + wheat: 'rgb(245, 222, 179)', + white: 'rgb(255, 255, 255)', + whitesmoke: 'rgb(245, 245, 245)', + yellow: 'rgb(255, 255, 0)', + yellowgreen: 'rgb(154, 205, 50)' + }; + + + + + // class: $.jqplot.AxisLabelRenderer + // Renderer to place labels on the axes. + $.jqplot.AxisLabelRenderer = function(options) { + // Group: Properties + $.jqplot.ElemContainer.call(this); + // name of the axis associated with this tick + this.axis; + // prop: show + // whether or not to show the tick (mark and label). + this.show = true; + // prop: label + // The text or html for the label. + this.label = ''; + this.fontFamily = null; + this.fontSize = null; + this.textColor = null; + this._elem; + // prop: escapeHTML + // true to escape HTML entities in the label. + this.escapeHTML = false; + + $.extend(true, this, options); + }; + + $.jqplot.AxisLabelRenderer.prototype = new $.jqplot.ElemContainer(); + $.jqplot.AxisLabelRenderer.prototype.constructor = $.jqplot.AxisLabelRenderer; + + $.jqplot.AxisLabelRenderer.prototype.init = function(options) { + $.extend(true, this, options); + }; + + $.jqplot.AxisLabelRenderer.prototype.draw = function(ctx, plot) { + // Memory Leaks patch + if (this._elem) { + this._elem.emptyForce(); + this._elem = null; + } + + this._elem = $('<div style="position:absolute;" class="jqplot-'+this.axis+'-label"></div>'); + + if (Number(this.label)) { + this._elem.css('white-space', 'nowrap'); + } + + if (!this.escapeHTML) { + this._elem.html(this.label); + } + else { + this._elem.text(this.label); + } + if (this.fontFamily) { + this._elem.css('font-family', this.fontFamily); + } + if (this.fontSize) { + this._elem.css('font-size', this.fontSize); + } + if (this.textColor) { + this._elem.css('color', this.textColor); + } + + return this._elem; + }; + + $.jqplot.AxisLabelRenderer.prototype.pack = function() { + }; + + // class: $.jqplot.AxisTickRenderer + // A "tick" object showing the value of a tick/gridline on the plot. + $.jqplot.AxisTickRenderer = function(options) { + // Group: Properties + $.jqplot.ElemContainer.call(this); + // prop: mark + // tick mark on the axis. One of 'inside', 'outside', 'cross', '' or null. + this.mark = 'outside'; + // name of the axis associated with this tick + this.axis; + // prop: showMark + // whether or not to show the mark on the axis. + this.showMark = true; + // prop: showGridline + // whether or not to draw the gridline on the grid at this tick. + this.showGridline = true; + // prop: isMinorTick + // if this is a minor tick. + this.isMinorTick = false; + // prop: size + // Length of the tick beyond the grid in pixels. + // DEPRECATED: This has been superceeded by markSize + this.size = 4; + // prop: markSize + // Length of the tick marks in pixels. For 'cross' style, length + // will be stoked above and below axis, so total length will be twice this. + this.markSize = 6; + // prop: show + // whether or not to show the tick (mark and label). + // Setting this to false requires more testing. It is recommended + // to set showLabel and showMark to false instead. + this.show = true; + // prop: showLabel + // whether or not to show the label. + this.showLabel = true; + this.label = null; + this.value = null; + this._styles = {}; + // prop: formatter + // A class of a formatter for the tick text. sprintf by default. + this.formatter = $.jqplot.DefaultTickFormatter; + // prop: prefix + // String to prepend to the tick label. + // Prefix is prepended to the formatted tick label. + this.prefix = ''; + // prop: suffix + // String to append to the tick label. + // Suffix is appended to the formatted tick label. + this.suffix = ''; + // prop: formatString + // string passed to the formatter. + this.formatString = ''; + // prop: fontFamily + // css spec for the font-family css attribute. + this.fontFamily; + // prop: fontSize + // css spec for the font-size css attribute. + this.fontSize; + // prop: textColor + // css spec for the color attribute. + this.textColor; + // prop: escapeHTML + // true to escape HTML entities in the label. + this.escapeHTML = false; + this._elem; + this._breakTick = false; + + $.extend(true, this, options); + }; + + $.jqplot.AxisTickRenderer.prototype.init = function(options) { + $.extend(true, this, options); + }; + + $.jqplot.AxisTickRenderer.prototype = new $.jqplot.ElemContainer(); + $.jqplot.AxisTickRenderer.prototype.constructor = $.jqplot.AxisTickRenderer; + + $.jqplot.AxisTickRenderer.prototype.setTick = function(value, axisName, isMinor) { + this.value = value; + this.axis = axisName; + if (isMinor) { + this.isMinorTick = true; + } + return this; + }; + + $.jqplot.AxisTickRenderer.prototype.draw = function() { + if (this.label === null) { + this.label = this.prefix + this.formatter(this.formatString, this.value) + this.suffix; + } + var style = {position: 'absolute'}; + if (Number(this.label)) { + style['whitSpace'] = 'nowrap'; + } + + // Memory Leaks patch + if (this._elem) { + this._elem.emptyForce(); + this._elem = null; + } + + this._elem = $(document.createElement('div')); + this._elem.addClass("jqplot-"+this.axis+"-tick"); + + if (!this.escapeHTML) { + this._elem.html(this.label); + } + else { + this._elem.text(this.label); + } + + this._elem.css(style); + + for (var s in this._styles) { + this._elem.css(s, this._styles[s]); + } + if (this.fontFamily) { + this._elem.css('font-family', this.fontFamily); + } + if (this.fontSize) { + this._elem.css('font-size', this.fontSize); + } + if (this.textColor) { + this._elem.css('color', this.textColor); + } + if (this._breakTick) { + this._elem.addClass('jqplot-breakTick'); + } + + return this._elem; + }; + + $.jqplot.DefaultTickFormatter = function (format, val) { + if (typeof val == 'number') { + if (!format) { + format = $.jqplot.config.defaultTickFormatString; + } + return $.jqplot.sprintf(format, val); + } + else { + return String(val); + } + }; + + $.jqplot.PercentTickFormatter = function (format, val) { + if (typeof val == 'number') { + val = 100 * val; + if (!format) { + format = $.jqplot.config.defaultTickFormatString; + } + return $.jqplot.sprintf(format, val); + } + else { + return String(val); + } + }; + + $.jqplot.AxisTickRenderer.prototype.pack = function() { + }; + + // Class: $.jqplot.CanvasGridRenderer + // The default jqPlot grid renderer, creating a grid on a canvas element. + // The renderer has no additional options beyond the <Grid> class. + $.jqplot.CanvasGridRenderer = function(){ + this.shadowRenderer = new $.jqplot.ShadowRenderer(); + }; + + // called with context of Grid object + $.jqplot.CanvasGridRenderer.prototype.init = function(options) { + this._ctx; + $.extend(true, this, options); + // set the shadow renderer options + var sopts = {lineJoin:'miter', lineCap:'round', fill:false, isarc:false, angle:this.shadowAngle, offset:this.shadowOffset, alpha:this.shadowAlpha, depth:this.shadowDepth, lineWidth:this.shadowWidth, closePath:false, strokeStyle:this.shadowColor}; + this.renderer.shadowRenderer.init(sopts); + }; + + // called with context of Grid. + $.jqplot.CanvasGridRenderer.prototype.createElement = function(plot) { + var elem; + // Memory Leaks patch + if (this._elem) { + if ($.jqplot.use_excanvas && window.G_vmlCanvasManager.uninitElement !== undefined) { + elem = this._elem.get(0); + window.G_vmlCanvasManager.uninitElement(elem); + elem = null; + } + + this._elem.emptyForce(); + this._elem = null; + } + + elem = plot.canvasManager.getCanvas(); + + var w = this._plotDimensions.width; + var h = this._plotDimensions.height; + elem.width = w; + elem.height = h; + this._elem = $(elem); + this._elem.addClass('jqplot-grid-canvas'); + this._elem.css({ position: 'absolute', left: 0, top: 0 }); + + elem = plot.canvasManager.initCanvas(elem); + + this._top = this._offsets.top; + this._bottom = h - this._offsets.bottom; + this._left = this._offsets.left; + this._right = w - this._offsets.right; + this._width = this._right - this._left; + this._height = this._bottom - this._top; + // avoid memory leak + elem = null; + return this._elem; + }; + + $.jqplot.CanvasGridRenderer.prototype.draw = function() { + this._ctx = this._elem.get(0).getContext("2d"); + var ctx = this._ctx; + var axes = this._axes; + // Add the grid onto the grid canvas. This is the bottom most layer. + ctx.save(); + ctx.clearRect(0, 0, this._plotDimensions.width, this._plotDimensions.height); + ctx.fillStyle = this.backgroundColor || this.background; + ctx.fillRect(this._left, this._top, this._width, this._height); + + ctx.save(); + ctx.lineJoin = 'miter'; + ctx.lineCap = 'butt'; + ctx.lineWidth = this.gridLineWidth; + ctx.strokeStyle = this.gridLineColor; + var b, e, s, m; + var ax = ['xaxis', 'yaxis', 'x2axis', 'y2axis']; + for (var i=4; i>0; i--) { + var name = ax[i-1]; + var axis = axes[name]; + var ticks = axis._ticks; + var numticks = ticks.length; + if (axis.show) { + if (axis.drawBaseline) { + var bopts = {}; + if (axis.baselineWidth !== null) { + bopts.lineWidth = axis.baselineWidth; + } + if (axis.baselineColor !== null) { + bopts.strokeStyle = axis.baselineColor; + } + switch (name) { + case 'xaxis': + drawLine (this._left, this._bottom, this._right, this._bottom, bopts); + break; + case 'yaxis': + drawLine (this._left, this._bottom, this._left, this._top, bopts); + break; + case 'x2axis': + drawLine (this._left, this._bottom, this._right, this._bottom, bopts); + break; + case 'y2axis': + drawLine (this._right, this._bottom, this._right, this._top, bopts); + break; + } + } + for (var j=numticks; j>0; j--) { + var t = ticks[j-1]; + if (t.show) { + var pos = Math.round(axis.u2p(t.value)) + 0.5; + switch (name) { + case 'xaxis': + // draw the grid line if we should + if (t.showGridline && this.drawGridlines && ((!t.isMinorTick && axis.drawMajorGridlines) || (t.isMinorTick && axis.drawMinorGridlines)) ) { + drawLine(pos, this._top, pos, this._bottom); + } + // draw the mark + if (t.showMark && t.mark && ((!t.isMinorTick && axis.drawMajorTickMarks) || (t.isMinorTick && axis.drawMinorTickMarks)) ) { + s = t.markSize; + m = t.mark; + var pos = Math.round(axis.u2p(t.value)) + 0.5; + switch (m) { + case 'outside': + b = this._bottom; + e = this._bottom+s; + break; + case 'inside': + b = this._bottom-s; + e = this._bottom; + break; + case 'cross': + b = this._bottom-s; + e = this._bottom+s; + break; + default: + b = this._bottom; + e = this._bottom+s; + break; + } + // draw the shadow + if (this.shadow) { + this.renderer.shadowRenderer.draw(ctx, [[pos,b],[pos,e]], {lineCap:'butt', lineWidth:this.gridLineWidth, offset:this.gridLineWidth*0.75, depth:2, fill:false, closePath:false}); + } + // draw the line + drawLine(pos, b, pos, e); + } + break; + case 'yaxis': + // draw the grid line + if (t.showGridline && this.drawGridlines && ((!t.isMinorTick && axis.drawMajorGridlines) || (t.isMinorTick && axis.drawMinorGridlines)) ) { + drawLine(this._right, pos, this._left, pos); + } + // draw the mark + if (t.showMark && t.mark && ((!t.isMinorTick && axis.drawMajorTickMarks) || (t.isMinorTick && axis.drawMinorTickMarks)) ) { + s = t.markSize; + m = t.mark; + var pos = Math.round(axis.u2p(t.value)) + 0.5; + switch (m) { + case 'outside': + b = this._left-s; + e = this._left; + break; + case 'inside': + b = this._left; + e = this._left+s; + break; + case 'cross': + b = this._left-s; + e = this._left+s; + break; + default: + b = this._left-s; + e = this._left; + break; + } + // draw the shadow + if (this.shadow) { + this.renderer.shadowRenderer.draw(ctx, [[b, pos], [e, pos]], {lineCap:'butt', lineWidth:this.gridLineWidth*1.5, offset:this.gridLineWidth*0.75, fill:false, closePath:false}); + } + drawLine(b, pos, e, pos, {strokeStyle:axis.borderColor}); + } + break; + case 'x2axis': + // draw the grid line + if (t.showGridline && this.drawGridlines && ((!t.isMinorTick && axis.drawMajorGridlines) || (t.isMinorTick && axis.drawMinorGridlines)) ) { + drawLine(pos, this._bottom, pos, this._top); + } + // draw the mark + if (t.showMark && t.mark && ((!t.isMinorTick && axis.drawMajorTickMarks) || (t.isMinorTick && axis.drawMinorTickMarks)) ) { + s = t.markSize; + m = t.mark; + var pos = Math.round(axis.u2p(t.value)) + 0.5; + switch (m) { + case 'outside': + b = this._top-s; + e = this._top; + break; + case 'inside': + b = this._top; + e = this._top+s; + break; + case 'cross': + b = this._top-s; + e = this._top+s; + break; + default: + b = this._top-s; + e = this._top; + break; + } + // draw the shadow + if (this.shadow) { + this.renderer.shadowRenderer.draw(ctx, [[pos,b],[pos,e]], {lineCap:'butt', lineWidth:this.gridLineWidth, offset:this.gridLineWidth*0.75, depth:2, fill:false, closePath:false}); + } + drawLine(pos, b, pos, e); + } + break; + case 'y2axis': + // draw the grid line + if (t.showGridline && this.drawGridlines && ((!t.isMinorTick && axis.drawMajorGridlines) || (t.isMinorTick && axis.drawMinorGridlines)) ) { + drawLine(this._left, pos, this._right, pos); + } + // draw the mark + if (t.showMark && t.mark && ((!t.isMinorTick && axis.drawMajorTickMarks) || (t.isMinorTick && axis.drawMinorTickMarks)) ) { + s = t.markSize; + m = t.mark; + var pos = Math.round(axis.u2p(t.value)) + 0.5; + switch (m) { + case 'outside': + b = this._right; + e = this._right+s; + break; + case 'inside': + b = this._right-s; + e = this._right; + break; + case 'cross': + b = this._right-s; + e = this._right+s; + break; + default: + b = this._right; + e = this._right+s; + break; + } + // draw the shadow + if (this.shadow) { + this.renderer.shadowRenderer.draw(ctx, [[b, pos], [e, pos]], {lineCap:'butt', lineWidth:this.gridLineWidth*1.5, offset:this.gridLineWidth*0.75, fill:false, closePath:false}); + } + drawLine(b, pos, e, pos, {strokeStyle:axis.borderColor}); + } + break; + default: + break; + } + } + } + t = null; + } + axis = null; + ticks = null; + } + // Now draw grid lines for additional y axes + ////// + // TO DO: handle yMidAxis + ////// + ax = ['y3axis', 'y4axis', 'y5axis', 'y6axis', 'y7axis', 'y8axis', 'y9axis', 'yMidAxis']; + for (var i=7; i>0; i--) { + var axis = axes[ax[i-1]]; + var ticks = axis._ticks; + if (axis.show) { + var tn = ticks[axis.numberTicks-1]; + var t0 = ticks[0]; + var left = axis.getLeft(); + var points = [[left, tn.getTop() + tn.getHeight()/2], [left, t0.getTop() + t0.getHeight()/2 + 1.0]]; + // draw the shadow + if (this.shadow) { + this.renderer.shadowRenderer.draw(ctx, points, {lineCap:'butt', fill:false, closePath:false}); + } + // draw the line + drawLine(points[0][0], points[0][1], points[1][0], points[1][1], {lineCap:'butt', strokeStyle:axis.borderColor, lineWidth:axis.borderWidth}); + // draw the tick marks + for (var j=ticks.length; j>0; j--) { + var t = ticks[j-1]; + s = t.markSize; + m = t.mark; + var pos = Math.round(axis.u2p(t.value)) + 0.5; + if (t.showMark && t.mark) { + switch (m) { + case 'outside': + b = left; + e = left+s; + break; + case 'inside': + b = left-s; + e = left; + break; + case 'cross': + b = left-s; + e = left+s; + break; + default: + b = left; + e = left+s; + break; + } + points = [[b,pos], [e,pos]]; + // draw the shadow + if (this.shadow) { + this.renderer.shadowRenderer.draw(ctx, points, {lineCap:'butt', lineWidth:this.gridLineWidth*1.5, offset:this.gridLineWidth*0.75, fill:false, closePath:false}); + } + // draw the line + drawLine(b, pos, e, pos, {strokeStyle:axis.borderColor}); + } + t = null; + } + t0 = null; + } + axis = null; + ticks = null; + } + + ctx.restore(); + + function drawLine(bx, by, ex, ey, opts) { + ctx.save(); + opts = opts || {}; + if (opts.lineWidth == null || opts.lineWidth != 0){ + $.extend(true, ctx, opts); + ctx.beginPath(); + ctx.moveTo(bx, by); + ctx.lineTo(ex, ey); + ctx.stroke(); + ctx.restore(); + } + } + + if (this.shadow) { + var points = [[this._left, this._bottom], [this._right, this._bottom], [this._right, this._top]]; + this.renderer.shadowRenderer.draw(ctx, points); + } + // Now draw border around grid. Use axis border definitions. start at + // upper left and go clockwise. + if (this.borderWidth != 0 && this.drawBorder) { + drawLine (this._left, this._top, this._right, this._top, {lineCap:'round', strokeStyle:axes.x2axis.borderColor, lineWidth:axes.x2axis.borderWidth}); + drawLine (this._right, this._top, this._right, this._bottom, {lineCap:'round', strokeStyle:axes.y2axis.borderColor, lineWidth:axes.y2axis.borderWidth}); + drawLine (this._right, this._bottom, this._left, this._bottom, {lineCap:'round', strokeStyle:axes.xaxis.borderColor, lineWidth:axes.xaxis.borderWidth}); + drawLine (this._left, this._bottom, this._left, this._top, {lineCap:'round', strokeStyle:axes.yaxis.borderColor, lineWidth:axes.yaxis.borderWidth}); + } + // ctx.lineWidth = this.borderWidth; + // ctx.strokeStyle = this.borderColor; + // ctx.strokeRect(this._left, this._top, this._width, this._height); + + ctx.restore(); + ctx = null; + axes = null; + }; + + // Class: $.jqplot.DivTitleRenderer + // The default title renderer for jqPlot. This class has no options beyond the <Title> class. + $.jqplot.DivTitleRenderer = function() { + }; + + $.jqplot.DivTitleRenderer.prototype.init = function(options) { + $.extend(true, this, options); + }; + + $.jqplot.DivTitleRenderer.prototype.draw = function() { + // Memory Leaks patch + if (this._elem) { + this._elem.emptyForce(); + this._elem = null; + } + + var r = this.renderer; + var elem = document.createElement('div'); + this._elem = $(elem); + this._elem.addClass('jqplot-title'); + + if (!this.text) { + this.show = false; + this._elem.height(0); + this._elem.width(0); + } + else if (this.text) { + var color; + if (this.color) { + color = this.color; + } + else if (this.textColor) { + color = this.textColor; + } + + // don't trust that a stylesheet is present, set the position. + var styles = {position:'absolute', top:'0px', left:'0px'}; + + if (this._plotWidth) { + styles['width'] = this._plotWidth+'px'; + } + if (this.fontSize) { + styles['fontSize'] = this.fontSize; + } + if (typeof this.textAlign === 'string') { + styles['textAlign'] = this.textAlign; + } + else { + styles['textAlign'] = 'center'; + } + if (color) { + styles['color'] = color; + } + if (this.paddingBottom) { + styles['paddingBottom'] = this.paddingBottom; + } + if (this.fontFamily) { + styles['fontFamily'] = this.fontFamily; + } + + this._elem.css(styles); + if (this.escapeHtml) { + this._elem.text(this.text); + } + else { + this._elem.html(this.text); + } + + + // styletext += (this._plotWidth) ? 'width:'+this._plotWidth+'px;' : ''; + // styletext += (this.fontSize) ? 'font-size:'+this.fontSize+';' : ''; + // styletext += (this.textAlign) ? 'text-align:'+this.textAlign+';' : 'text-align:center;'; + // styletext += (color) ? 'color:'+color+';' : ''; + // styletext += (this.paddingBottom) ? 'padding-bottom:'+this.paddingBottom+';' : ''; + // this._elem = $('<div class="jqplot-title" style="'+styletext+'">'+this.text+'</div>'); + // if (this.fontFamily) { + // this._elem.css('font-family', this.fontFamily); + // } + } + + elem = null; + + return this._elem; + }; + + $.jqplot.DivTitleRenderer.prototype.pack = function() { + // nothing to do here + }; + + + var dotlen = 0.1; + + $.jqplot.LinePattern = function (ctx, pattern) { + + var defaultLinePatterns = { + dotted: [ dotlen, $.jqplot.config.dotGapLength ], + dashed: [ $.jqplot.config.dashLength, $.jqplot.config.gapLength ], + solid: null + }; + + if (typeof pattern === 'string') { + if (pattern[0] === '.' || pattern[0] === '-') { + var s = pattern; + pattern = []; + for (var i=0, imax=s.length; i<imax; i++) { + if (s[i] === '.') { + pattern.push( dotlen ); + } + else if (s[i] === '-') { + pattern.push( $.jqplot.config.dashLength ); + } + else { + continue; + } + pattern.push( $.jqplot.config.gapLength ); + } + } + else { + pattern = defaultLinePatterns[pattern]; + } + } + + if (!(pattern && pattern.length)) { + return ctx; + } + + var patternIndex = 0; + var patternDistance = pattern[0]; + var px = 0; + var py = 0; + var pathx0 = 0; + var pathy0 = 0; + + var moveTo = function (x, y) { + ctx.moveTo( x, y ); + px = x; + py = y; + pathx0 = x; + pathy0 = y; + }; + + var lineTo = function (x, y) { + var scale = ctx.lineWidth; + var dx = x - px; + var dy = y - py; + var dist = Math.sqrt(dx*dx+dy*dy); + if ((dist > 0) && (scale > 0)) { + dx /= dist; + dy /= dist; + while (true) { + var dp = scale * patternDistance; + if (dp < dist) { + px += dp * dx; + py += dp * dy; + if ((patternIndex & 1) == 0) { + ctx.lineTo( px, py ); + } + else { + ctx.moveTo( px, py ); + } + dist -= dp; + patternIndex++; + if (patternIndex >= pattern.length) { + patternIndex = 0; + } + patternDistance = pattern[patternIndex]; + } + else { + px = x; + py = y; + if ((patternIndex & 1) == 0) { + ctx.lineTo( px, py ); + } + else { + ctx.moveTo( px, py ); + } + patternDistance -= dist / scale; + break; + } + } + } + }; + + var beginPath = function () { + ctx.beginPath(); + }; + + var closePath = function () { + lineTo( pathx0, pathy0 ); + }; + + return { + moveTo: moveTo, + lineTo: lineTo, + beginPath: beginPath, + closePath: closePath + }; + }; + + // Class: $.jqplot.LineRenderer + // The default line renderer for jqPlot, this class has no options beyond the <Series> class. + // Draws series as a line. + $.jqplot.LineRenderer = function(){ + this.shapeRenderer = new $.jqplot.ShapeRenderer(); + this.shadowRenderer = new $.jqplot.ShadowRenderer(); + }; + + // called with scope of series. + $.jqplot.LineRenderer.prototype.init = function(options, plot) { + // Group: Properties + // + options = options || {}; + this._type='line'; + this.renderer.animation = { + show: false, + direction: 'left', + speed: 2500, + _supported: true + }; + // prop: smooth + // True to draw a smoothed (interpolated) line through the data points + // with automatically computed number of smoothing points. + // Set to an integer number > 2 to specify number of smoothing points + // to use between each data point. + this.renderer.smooth = false; // true or a number > 2 for smoothing. + this.renderer.tension = null; // null to auto compute or a number typically > 6. Fewer points requires higher tension. + // prop: constrainSmoothing + // True to use a more accurate smoothing algorithm that will + // not overshoot any data points. False to allow overshoot but + // produce a smoother looking line. + this.renderer.constrainSmoothing = true; + // this is smoothed data in grid coordinates, like gridData + this.renderer._smoothedData = []; + // this is smoothed data in plot units (plot coordinates), like plotData. + this.renderer._smoothedPlotData = []; + this.renderer._hiBandGridData = []; + this.renderer._lowBandGridData = []; + this.renderer._hiBandSmoothedData = []; + this.renderer._lowBandSmoothedData = []; + + // prop: bandData + // Data used to draw error bands or confidence intervals above/below a line. + // + // bandData can be input in 3 forms. jqPlot will figure out which is the + // low band line and which is the high band line for all forms: + // + // A 2 dimensional array like [[yl1, yl2, ...], [yu1, yu2, ...]] where + // [yl1, yl2, ...] are y values of the lower line and + // [yu1, yu2, ...] are y values of the upper line. + // In this case there must be the same number of y data points as data points + // in the series and the bands will inherit the x values of the series. + // + // A 2 dimensional array like [[[xl1, yl1], [xl2, yl2], ...], [[xh1, yh1], [xh2, yh2], ...]] + // where [xl1, yl1] are x,y data points for the lower line and + // [xh1, yh1] are x,y data points for the high line. + // x values do not have to correspond to the x values of the series and can + // be of any arbitrary length. + // + // Can be of form [[yl1, yu1], [yl2, yu2], [yl3, yu3], ...] where + // there must be 3 or more arrays and there must be the same number of arrays + // as there are data points in the series. In this case, + // [yl1, yu1] specifies the lower and upper y values for the 1st + // data point and so on. The bands will inherit the x + // values from the series. + this.renderer.bandData = []; + + // Group: bands + // Banding around line, e.g error bands or confidence intervals. + this.renderer.bands = { + // prop: show + // true to show the bands. If bandData or interval is + // supplied, show will be set to true by default. + show: false, + hiData: [], + lowData: [], + // prop: color + // color of lines at top and bottom of bands [default: series color]. + color: this.color, + // prop: showLines + // True to show lines at top and bottom of bands [default: false]. + showLines: false, + // prop: fill + // True to fill area between bands [default: true]. + fill: true, + // prop: fillColor + // css color spec for filled area. [default: series color]. + fillColor: null, + _min: null, + _max: null, + // prop: interval + // User specified interval above and below line for bands [default: '3%'']. + // Can be a value like 3 or a string like '3%' + // or an upper/lower array like [1, -2] or ['2%', '-1.5%'] + interval: '3%' + }; + + + var lopts = {highlightMouseOver: options.highlightMouseOver, highlightMouseDown: options.highlightMouseDown, highlightColor: options.highlightColor}; + + delete (options.highlightMouseOver); + delete (options.highlightMouseDown); + delete (options.highlightColor); + + $.extend(true, this.renderer, options); + + this.renderer.options = options; + + // if we are given some band data, and bands aren't explicity set to false in options, turn them on. + if (this.renderer.bandData.length > 1 && (!options.bands || options.bands.show == null)) { + this.renderer.bands.show = true; + } + + // if we are given an interval, and bands aren't explicity set to false in options, turn them on. + else if (options.bands && options.bands.show == null && options.bands.interval != null) { + this.renderer.bands.show = true; + } + + // if plot is filled, turn off bands. + if (this.fill) { + this.renderer.bands.show = false; + } + + if (this.renderer.bands.show) { + this.renderer.initBands.call(this, this.renderer.options, plot); + } + + + // smoothing is not compatible with stacked lines, disable + if (this._stack) { + this.renderer.smooth = false; + } + + // set the shape renderer options + var opts = {lineJoin:this.lineJoin, lineCap:this.lineCap, fill:this.fill, isarc:false, strokeStyle:this.color, fillStyle:this.fillColor, lineWidth:this.lineWidth, linePattern:this.linePattern, closePath:this.fill}; + this.renderer.shapeRenderer.init(opts); + + var shadow_offset = options.shadowOffset; + // set the shadow renderer options + if (shadow_offset == null) { + // scale the shadowOffset to the width of the line. + if (this.lineWidth > 2.5) { + shadow_offset = 1.25 * (1 + (Math.atan((this.lineWidth/2.5))/0.785398163 - 1)*0.6); + // var shadow_offset = this.shadowOffset; + } + // for skinny lines, don't make such a big shadow. + else { + shadow_offset = 1.25 * Math.atan((this.lineWidth/2.5))/0.785398163; + } + } + + var sopts = {lineJoin:this.lineJoin, lineCap:this.lineCap, fill:this.fill, isarc:false, angle:this.shadowAngle, offset:shadow_offset, alpha:this.shadowAlpha, depth:this.shadowDepth, lineWidth:this.lineWidth, linePattern:this.linePattern, closePath:this.fill}; + this.renderer.shadowRenderer.init(sopts); + this._areaPoints = []; + this._boundingBox = [[],[]]; + + if (!this.isTrendline && this.fill || this.renderer.bands.show) { + // Group: Properties + // + // prop: highlightMouseOver + // True to highlight area on a filled plot when moused over. + // This must be false to enable highlightMouseDown to highlight when clicking on an area on a filled plot. + this.highlightMouseOver = true; + // prop: highlightMouseDown + // True to highlight when a mouse button is pressed over an area on a filled plot. + // This will be disabled if highlightMouseOver is true. + this.highlightMouseDown = false; + // prop: highlightColor + // color to use when highlighting an area on a filled plot. + this.highlightColor = null; + // if user has passed in highlightMouseDown option and not set highlightMouseOver, disable highlightMouseOver + if (lopts.highlightMouseDown && lopts.highlightMouseOver == null) { + lopts.highlightMouseOver = false; + } + + $.extend(true, this, {highlightMouseOver: lopts.highlightMouseOver, highlightMouseDown: lopts.highlightMouseDown, highlightColor: lopts.highlightColor}); + + if (!this.highlightColor) { + var fc = (this.renderer.bands.show) ? this.renderer.bands.fillColor : this.fillColor; + this.highlightColor = $.jqplot.computeHighlightColors(fc); + } + // turn off (disable) the highlighter plugin + if (this.highlighter) { + this.highlighter.show = false; + } + } + + if (!this.isTrendline && plot) { + plot.plugins.lineRenderer = {}; + plot.postInitHooks.addOnce(postInit); + plot.postDrawHooks.addOnce(postPlotDraw); + plot.eventListenerHooks.addOnce('jqplotMouseMove', handleMove); + plot.eventListenerHooks.addOnce('jqplotMouseDown', handleMouseDown); + plot.eventListenerHooks.addOnce('jqplotMouseUp', handleMouseUp); + plot.eventListenerHooks.addOnce('jqplotClick', handleClick); + plot.eventListenerHooks.addOnce('jqplotRightClick', handleRightClick); + } + + }; + + $.jqplot.LineRenderer.prototype.initBands = function(options, plot) { + // use bandData if no data specified in bands option + //var bd = this.renderer.bandData; + var bd = options.bandData || []; + var bands = this.renderer.bands; + bands.hiData = []; + bands.lowData = []; + var data = this.data; + bands._max = null; + bands._min = null; + // If 2 arrays, and each array greater than 2 elements, assume it is hi and low data bands of y values. + if (bd.length == 2) { + // Do we have an array of x,y values? + // like [[[1,1], [2,4], [3,3]], [[1,3], [2,6], [3,5]]] + if ($.isArray(bd[0][0])) { + // since an arbitrary array of points, spin through all of them to determine max and min lines. + + var p; + var bdminidx = 0, bdmaxidx = 0; + for (var i = 0, l = bd[0].length; i<l; i++) { + p = bd[0][i]; + if ((p[1] != null && p[1] > bands._max) || bands._max == null) { + bands._max = p[1]; + } + if ((p[1] != null && p[1] < bands._min) || bands._min == null) { + bands._min = p[1]; + } + } + for (var i = 0, l = bd[1].length; i<l; i++) { + p = bd[1][i]; + if ((p[1] != null && p[1] > bands._max) || bands._max == null) { + bands._max = p[1]; + bdmaxidx = 1; + } + if ((p[1] != null && p[1] < bands._min) || bands._min == null) { + bands._min = p[1]; + bdminidx = 1; + } + } + + if (bdmaxidx === bdminidx) { + bands.show = false; + } + + bands.hiData = bd[bdmaxidx]; + bands.lowData = bd[bdminidx]; + } + // else data is arrays of y values + // like [[1,4,3], [3,6,5]] + // must have same number of band data points as points in series + else if (bd[0].length === data.length && bd[1].length === data.length) { + var hi = (bd[0][0] > bd[1][0]) ? 0 : 1; + var low = (hi) ? 0 : 1; + for (var i=0, l=data.length; i < l; i++) { + bands.hiData.push([data[i][0], bd[hi][i]]); + bands.lowData.push([data[i][0], bd[low][i]]); + } + } + + // we don't have proper data array, don't show bands. + else { + bands.show = false; + } + } + + // if more than 2 arrays, have arrays of [ylow, yhi] values. + // note, can't distinguish case of [[ylow, yhi], [ylow, yhi]] from [[ylow, ylow], [yhi, yhi]] + // this is assumed to be of the latter form. + else if (bd.length > 2 && !$.isArray(bd[0][0])) { + var hi = (bd[0][0] > bd[0][1]) ? 0 : 1; + var low = (hi) ? 0 : 1; + for (var i=0, l=bd.length; i<l; i++) { + bands.hiData.push([data[i][0], bd[i][hi]]); + bands.lowData.push([data[i][0], bd[i][low]]); + } + } + + // don't have proper data, auto calculate + else { + var intrv = bands.interval; + var a = null; + var b = null; + var afunc = null; + var bfunc = null; + + if ($.isArray(intrv)) { + a = intrv[0]; + b = intrv[1]; + } + else { + a = intrv; + } + + if (isNaN(a)) { + // we have a string + if (a.charAt(a.length - 1) === '%') { + afunc = 'multiply'; + a = parseFloat(a)/100 + 1; + } + } + + else { + a = parseFloat(a); + afunc = 'add'; + } + + if (b !== null && isNaN(b)) { + // we have a string + if (b.charAt(b.length - 1) === '%') { + bfunc = 'multiply'; + b = parseFloat(b)/100 + 1; + } + } + + else if (b !== null) { + b = parseFloat(b); + bfunc = 'add'; + } + + if (a !== null) { + if (b === null) { + b = -a; + bfunc = afunc; + if (bfunc === 'multiply') { + b += 2; + } + } + + // make sure a always applies to hi band. + if (a < b) { + var temp = a; + a = b; + b = temp; + temp = afunc; + afunc = bfunc; + bfunc = temp; + } + + for (var i=0, l = data.length; i < l; i++) { + switch (afunc) { + case 'add': + bands.hiData.push([data[i][0], data[i][1] + a]); + break; + case 'multiply': + bands.hiData.push([data[i][0], data[i][1] * a]); + break; + } + switch (bfunc) { + case 'add': + bands.lowData.push([data[i][0], data[i][1] + b]); + break; + case 'multiply': + bands.lowData.push([data[i][0], data[i][1] * b]); + break; + } + } + } + + else { + bands.show = false; + } + } + + var hd = bands.hiData; + var ld = bands.lowData; + for (var i = 0, l = hd.length; i<l; i++) { + if ((hd[i][1] != null && hd[i][1] > bands._max) || bands._max == null) { + bands._max = hd[i][1]; + } + } + for (var i = 0, l = ld.length; i<l; i++) { + if ((ld[i][1] != null && ld[i][1] < bands._min) || bands._min == null) { + bands._min = ld[i][1]; + } + } + + // one last check for proper data + // these don't apply any more since allowing arbitrary x,y values + // if (bands.hiData.length != bands.lowData.length) { + // bands.show = false; + // } + + // if (bands.hiData.length != this.data.length) { + // bands.show = false; + // } + + if (bands.fillColor === null) { + var c = $.jqplot.getColorComponents(bands.color); + // now adjust alpha to differentiate fill + c[3] = c[3] * 0.5; + bands.fillColor = 'rgba(' + c[0] +', '+ c[1] +', '+ c[2] +', '+ c[3] + ')'; + } + }; + + function getSteps (d, f) { + return (3.4182054+f) * Math.pow(d, -0.3534992); + } + + function computeSteps (d1, d2) { + var s = Math.sqrt(Math.pow((d2[0]- d1[0]), 2) + Math.pow ((d2[1] - d1[1]), 2)); + return 5.7648 * Math.log(s) + 7.4456; + } + + function tanh (x) { + var a = (Math.exp(2*x) - 1) / (Math.exp(2*x) + 1); + return a; + } + + ////////// + // computeConstrainedSmoothedData + // An implementation of the constrained cubic spline interpolation + // method as presented in: + // + // Kruger, CJC, Constrained Cubic Spine Interpolation for Chemical Engineering Applications + // http://www.korf.co.uk/spline.pdf + // + // The implementation below borrows heavily from the sample Visual Basic + // implementation by CJC Kruger found in http://www.korf.co.uk/spline.xls + // + ///////// + + // called with scope of series + function computeConstrainedSmoothedData (gd) { + var smooth = this.renderer.smooth; + var dim = this.canvas.getWidth(); + var xp = this._xaxis.series_p2u; + var yp = this._yaxis.series_p2u; + var steps =null; + var _steps = null; + var dist = gd.length/dim; + var _smoothedData = []; + var _smoothedPlotData = []; + + if (!isNaN(parseFloat(smooth))) { + steps = parseFloat(smooth); + } + else { + steps = getSteps(dist, 0.5); + } + + var yy = []; + var xx = []; + + for (var i=0, l = gd.length; i<l; i++) { + yy.push(gd[i][1]); + xx.push(gd[i][0]); + } + + function dxx(x1, x0) { + if (x1 - x0 == 0) { + return Math.pow(10,10); + } + else { + return x1 - x0; + } + } + + var A, B, C, D; + // loop through each line segment. Have # points - 1 line segments. Nmber segments starting at 1. + var nmax = gd.length - 1; + for (var num = 1, gdl = gd.length; num<gdl; num++) { + var gxx = []; + var ggxx = []; + // point at each end of segment. + for (var j = 0; j < 2; j++) { + var i = num - 1 + j; // point number, 0 to # points. + + if (i == 0 || i == nmax) { + gxx[j] = Math.pow(10, 10); + } + else if (yy[i+1] - yy[i] == 0 || yy[i] - yy[i-1] == 0) { + gxx[j] = 0; + } + else if (((xx[i+1] - xx[i]) / (yy[i+1] - yy[i]) + (xx[i] - xx[i-1]) / (yy[i] - yy[i-1])) == 0 ) { + gxx[j] = 0; + } + else if ( (yy[i+1] - yy[i]) * (yy[i] - yy[i-1]) < 0 ) { + gxx[j] = 0; + } + + else { + gxx[j] = 2 / (dxx(xx[i + 1], xx[i]) / (yy[i + 1] - yy[i]) + dxx(xx[i], xx[i - 1]) / (yy[i] - yy[i - 1])); + } + } + + // Reset first derivative (slope) at first and last point + if (num == 1) { + // First point has 0 2nd derivative + gxx[0] = 3 / 2 * (yy[1] - yy[0]) / dxx(xx[1], xx[0]) - gxx[1] / 2; + } + else if (num == nmax) { + // Last point has 0 2nd derivative + gxx[1] = 3 / 2 * (yy[nmax] - yy[nmax - 1]) / dxx(xx[nmax], xx[nmax - 1]) - gxx[0] / 2; + } + + // Calc second derivative at points + ggxx[0] = -2 * (gxx[1] + 2 * gxx[0]) / dxx(xx[num], xx[num - 1]) + 6 * (yy[num] - yy[num - 1]) / Math.pow(dxx(xx[num], xx[num - 1]), 2); + ggxx[1] = 2 * (2 * gxx[1] + gxx[0]) / dxx(xx[num], xx[num - 1]) - 6 * (yy[num] - yy[num - 1]) / Math.pow(dxx(xx[num], xx[num - 1]), 2); + + // Calc constants for cubic interpolation + D = 1 / 6 * (ggxx[1] - ggxx[0]) / dxx(xx[num], xx[num - 1]); + C = 1 / 2 * (xx[num] * ggxx[0] - xx[num - 1] * ggxx[1]) / dxx(xx[num], xx[num - 1]); + B = (yy[num] - yy[num - 1] - C * (Math.pow(xx[num], 2) - Math.pow(xx[num - 1], 2)) - D * (Math.pow(xx[num], 3) - Math.pow(xx[num - 1], 3))) / dxx(xx[num], xx[num - 1]); + A = yy[num - 1] - B * xx[num - 1] - C * Math.pow(xx[num - 1], 2) - D * Math.pow(xx[num - 1], 3); + + var increment = (xx[num] - xx[num - 1]) / steps; + var temp, tempx; + + for (var j = 0, l = steps; j < l; j++) { + temp = []; + tempx = xx[num - 1] + j * increment; + temp.push(tempx); + temp.push(A + B * tempx + C * Math.pow(tempx, 2) + D * Math.pow(tempx, 3)); + _smoothedData.push(temp); + _smoothedPlotData.push([xp(temp[0]), yp(temp[1])]); + } + } + + _smoothedData.push(gd[i]); + _smoothedPlotData.push([xp(gd[i][0]), yp(gd[i][1])]); + + return [_smoothedData, _smoothedPlotData]; + } + + /////// + // computeHermiteSmoothedData + // A hermite spline smoothing of the plot data. + // This implementation is derived from the one posted + // by krypin on the jqplot-users mailing list: + // + // http://groups.google.com/group/jqplot-users/browse_thread/thread/748be6a445723cea?pli=1 + // + // with a blog post: + // + // http://blog.statscollector.com/a-plugin-renderer-for-jqplot-to-draw-a-hermite-spline/ + // + // and download of the original plugin: + // + // http://blog.statscollector.com/wp-content/uploads/2010/02/jqplot.hermiteSplineRenderer.js + ////////// + + // called with scope of series + function computeHermiteSmoothedData (gd) { + var smooth = this.renderer.smooth; + var tension = this.renderer.tension; + var dim = this.canvas.getWidth(); + var xp = this._xaxis.series_p2u; + var yp = this._yaxis.series_p2u; + var steps =null; + var _steps = null; + var a = null; + var a1 = null; + var a2 = null; + var slope = null; + var slope2 = null; + var temp = null; + var t, s, h1, h2, h3, h4; + var TiX, TiY, Ti1X, Ti1Y; + var pX, pY, p; + var sd = []; + var spd = []; + var dist = gd.length/dim; + var min, max, stretch, scale, shift; + var _smoothedData = []; + var _smoothedPlotData = []; + if (!isNaN(parseFloat(smooth))) { + steps = parseFloat(smooth); + } + else { + steps = getSteps(dist, 0.5); + } + if (!isNaN(parseFloat(tension))) { + tension = parseFloat(tension); + } + + for (var i=0, l = gd.length-1; i < l; i++) { + + if (tension === null) { + slope = Math.abs((gd[i+1][1] - gd[i][1]) / (gd[i+1][0] - gd[i][0])); + + min = 0.3; + max = 0.6; + stretch = (max - min)/2.0; + scale = 2.5; + shift = -1.4; + + temp = slope/scale + shift; + + a1 = stretch * tanh(temp) - stretch * tanh(shift) + min; + + // if have both left and right line segments, will use minimum tension. + if (i > 0) { + slope2 = Math.abs((gd[i][1] - gd[i-1][1]) / (gd[i][0] - gd[i-1][0])); + } + temp = slope2/scale + shift; + + a2 = stretch * tanh(temp) - stretch * tanh(shift) + min; + + a = (a1 + a2)/2.0; + + } + else { + a = tension; + } + for (t=0; t < steps; t++) { + s = t / steps; + h1 = (1 + 2*s)*Math.pow((1-s),2); + h2 = s*Math.pow((1-s),2); + h3 = Math.pow(s,2)*(3-2*s); + h4 = Math.pow(s,2)*(s-1); + + if (gd[i-1]) { + TiX = a * (gd[i+1][0] - gd[i-1][0]); + TiY = a * (gd[i+1][1] - gd[i-1][1]); + } else { + TiX = a * (gd[i+1][0] - gd[i][0]); + TiY = a * (gd[i+1][1] - gd[i][1]); + } + if (gd[i+2]) { + Ti1X = a * (gd[i+2][0] - gd[i][0]); + Ti1Y = a * (gd[i+2][1] - gd[i][1]); + } else { + Ti1X = a * (gd[i+1][0] - gd[i][0]); + Ti1Y = a * (gd[i+1][1] - gd[i][1]); + } + + pX = h1*gd[i][0] + h3*gd[i+1][0] + h2*TiX + h4*Ti1X; + pY = h1*gd[i][1] + h3*gd[i+1][1] + h2*TiY + h4*Ti1Y; + p = [pX, pY]; + + _smoothedData.push(p); + _smoothedPlotData.push([xp(pX), yp(pY)]); + } + } + _smoothedData.push(gd[l]); + _smoothedPlotData.push([xp(gd[l][0]), yp(gd[l][1])]); + + return [_smoothedData, _smoothedPlotData]; + } + + // setGridData + // converts the user data values to grid coordinates and stores them + // in the gridData array. + // Called with scope of a series. + $.jqplot.LineRenderer.prototype.setGridData = function(plot) { + // recalculate the grid data + var xp = this._xaxis.series_u2p; + var yp = this._yaxis.series_u2p; + var data = this._plotData; + var pdata = this._prevPlotData; + this.gridData = []; + this._prevGridData = []; + this.renderer._smoothedData = []; + this.renderer._smoothedPlotData = []; + this.renderer._hiBandGridData = []; + this.renderer._lowBandGridData = []; + this.renderer._hiBandSmoothedData = []; + this.renderer._lowBandSmoothedData = []; + var bands = this.renderer.bands; + var hasNull = false; + for (var i=0, l=data.length; i < l; i++) { + // if not a line series or if no nulls in data, push the converted point onto the array. + if (data[i][0] != null && data[i][1] != null) { + this.gridData.push([xp.call(this._xaxis, data[i][0]), yp.call(this._yaxis, data[i][1])]); + } + // else if there is a null, preserve it. + else if (data[i][0] == null) { + hasNull = true; + this.gridData.push([null, yp.call(this._yaxis, data[i][1])]); + } + else if (data[i][1] == null) { + hasNull = true; + this.gridData.push([xp.call(this._xaxis, data[i][0]), null]); + } + // if not a line series or if no nulls in data, push the converted point onto the array. + if (pdata[i] != null && pdata[i][0] != null && pdata[i][1] != null) { + this._prevGridData.push([xp.call(this._xaxis, pdata[i][0]), yp.call(this._yaxis, pdata[i][1])]); + } + // else if there is a null, preserve it. + else if (pdata[i] != null && pdata[i][0] == null) { + this._prevGridData.push([null, yp.call(this._yaxis, pdata[i][1])]); + } + else if (pdata[i] != null && pdata[i][0] != null && pdata[i][1] == null) { + this._prevGridData.push([xp.call(this._xaxis, pdata[i][0]), null]); + } + } + + // don't do smoothing or bands on broken lines. + if (hasNull) { + this.renderer.smooth = false; + if (this._type === 'line') { + bands.show = false; + } + } + + if (this._type === 'line' && bands.show) { + for (var i=0, l=bands.hiData.length; i<l; i++) { + this.renderer._hiBandGridData.push([xp.call(this._xaxis, bands.hiData[i][0]), yp.call(this._yaxis, bands.hiData[i][1])]); + } + for (var i=0, l=bands.lowData.length; i<l; i++) { + this.renderer._lowBandGridData.push([xp.call(this._xaxis, bands.lowData[i][0]), yp.call(this._yaxis, bands.lowData[i][1])]); + } + } + + // calculate smoothed data if enough points and no nulls + if (this._type === 'line' && this.renderer.smooth && this.gridData.length > 2) { + var ret; + if (this.renderer.constrainSmoothing) { + ret = computeConstrainedSmoothedData.call(this, this.gridData); + this.renderer._smoothedData = ret[0]; + this.renderer._smoothedPlotData = ret[1]; + + if (bands.show) { + ret = computeConstrainedSmoothedData.call(this, this.renderer._hiBandGridData); + this.renderer._hiBandSmoothedData = ret[0]; + ret = computeConstrainedSmoothedData.call(this, this.renderer._lowBandGridData); + this.renderer._lowBandSmoothedData = ret[0]; + } + + ret = null; + } + else { + ret = computeHermiteSmoothedData.call(this, this.gridData); + this.renderer._smoothedData = ret[0]; + this.renderer._smoothedPlotData = ret[1]; + + if (bands.show) { + ret = computeHermiteSmoothedData.call(this, this.renderer._hiBandGridData); + this.renderer._hiBandSmoothedData = ret[0]; + ret = computeHermiteSmoothedData.call(this, this.renderer._lowBandGridData); + this.renderer._lowBandSmoothedData = ret[0]; + } + + ret = null; + } + } + }; + + // makeGridData + // converts any arbitrary data values to grid coordinates and + // returns them. This method exists so that plugins can use a series' + // linerenderer to generate grid data points without overwriting the + // grid data associated with that series. + // Called with scope of a series. + $.jqplot.LineRenderer.prototype.makeGridData = function(data, plot) { + // recalculate the grid data + var xp = this._xaxis.series_u2p; + var yp = this._yaxis.series_u2p; + var gd = []; + var pgd = []; + this.renderer._smoothedData = []; + this.renderer._smoothedPlotData = []; + this.renderer._hiBandGridData = []; + this.renderer._lowBandGridData = []; + this.renderer._hiBandSmoothedData = []; + this.renderer._lowBandSmoothedData = []; + var bands = this.renderer.bands; + var hasNull = false; + for (var i=0; i<data.length; i++) { + // if not a line series or if no nulls in data, push the converted point onto the array. + if (data[i][0] != null && data[i][1] != null) { + if (this.step && i>0) { + gd.push([xp.call(this._xaxis, data[i][0]), yp.call(this._yaxis, data[i-1][1])]); + } + gd.push([xp.call(this._xaxis, data[i][0]), yp.call(this._yaxis, data[i][1])]); + } + // else if there is a null, preserve it. + else if (data[i][0] == null) { + hasNull = true; + gd.push([null, yp.call(this._yaxis, data[i][1])]); + } + else if (data[i][1] == null) { + hasNull = true; + gd.push([xp.call(this._xaxis, data[i][0]), null]); + } + } + + // don't do smoothing or bands on broken lines. + if (hasNull) { + this.renderer.smooth = false; + if (this._type === 'line') { + bands.show = false; + } + } + + if (this._type === 'line' && bands.show) { + for (var i=0, l=bands.hiData.length; i<l; i++) { + this.renderer._hiBandGridData.push([xp.call(this._xaxis, bands.hiData[i][0]), yp.call(this._yaxis, bands.hiData[i][1])]); + } + for (var i=0, l=bands.lowData.length; i<l; i++) { + this.renderer._lowBandGridData.push([xp.call(this._xaxis, bands.lowData[i][0]), yp.call(this._yaxis, bands.lowData[i][1])]); + } + } + + if (this._type === 'line' && this.renderer.smooth && gd.length > 2) { + var ret; + if (this.renderer.constrainSmoothing) { + ret = computeConstrainedSmoothedData.call(this, gd); + this.renderer._smoothedData = ret[0]; + this.renderer._smoothedPlotData = ret[1]; + + if (bands.show) { + ret = computeConstrainedSmoothedData.call(this, this.renderer._hiBandGridData); + this.renderer._hiBandSmoothedData = ret[0]; + ret = computeConstrainedSmoothedData.call(this, this.renderer._lowBandGridData); + this.renderer._lowBandSmoothedData = ret[0]; + } + + ret = null; + } + else { + ret = computeHermiteSmoothedData.call(this, gd); + this.renderer._smoothedData = ret[0]; + this.renderer._smoothedPlotData = ret[1]; + + if (bands.show) { + ret = computeHermiteSmoothedData.call(this, this.renderer._hiBandGridData); + this.renderer._hiBandSmoothedData = ret[0]; + ret = computeHermiteSmoothedData.call(this, this.renderer._lowBandGridData); + this.renderer._lowBandSmoothedData = ret[0]; + } + + ret = null; + } + } + return gd; + }; + + + // called within scope of series. + $.jqplot.LineRenderer.prototype.draw = function(ctx, gd, options, plot) { + var i; + // get a copy of the options, so we don't modify the original object. + var opts = $.extend(true, {}, options); + var shadow = (opts.shadow != undefined) ? opts.shadow : this.shadow; + var showLine = (opts.showLine != undefined) ? opts.showLine : this.showLine; + var fill = (opts.fill != undefined) ? opts.fill : this.fill; + var fillAndStroke = (opts.fillAndStroke != undefined) ? opts.fillAndStroke : this.fillAndStroke; + var xmin, ymin, xmax, ymax; + ctx.save(); + if (gd.length) { + if (showLine) { + // if we fill, we'll have to add points to close the curve. + if (fill) { + if (this.fillToZero) { + // have to break line up into shapes at axis crossings + var negativeColor = this.negativeColor; + if (! this.useNegativeColors) { + negativeColor = opts.fillStyle; + } + var isnegative = false; + var posfs = opts.fillStyle; + + // if stoking line as well as filling, get a copy of line data. + if (fillAndStroke) { + var fasgd = gd.slice(0); + } + // if not stacked, fill down to axis + if (this.index == 0 || !this._stack) { + + var tempgd = []; + var pd = (this.renderer.smooth) ? this.renderer._smoothedPlotData : this._plotData; + this._areaPoints = []; + var pyzero = this._yaxis.series_u2p(this.fillToValue); + var pxzero = this._xaxis.series_u2p(this.fillToValue); + + opts.closePath = true; + + if (this.fillAxis == 'y') { + tempgd.push([gd[0][0], pyzero]); + this._areaPoints.push([gd[0][0], pyzero]); + + for (var i=0; i<gd.length-1; i++) { + tempgd.push(gd[i]); + this._areaPoints.push(gd[i]); + // do we have an axis crossing? + if (pd[i][1] * pd[i+1][1] <= 0) { + if (pd[i][1] < 0) { + isnegative = true; + opts.fillStyle = negativeColor; + } + else { + isnegative = false; + opts.fillStyle = posfs; + } + + var xintercept = gd[i][0] + (gd[i+1][0] - gd[i][0]) * (pyzero-gd[i][1])/(gd[i+1][1] - gd[i][1]); + tempgd.push([xintercept, pyzero]); + this._areaPoints.push([xintercept, pyzero]); + // now draw this shape and shadow. + if (shadow) { + this.renderer.shadowRenderer.draw(ctx, tempgd, opts); + } + this.renderer.shapeRenderer.draw(ctx, tempgd, opts); + // now empty temp array and continue + tempgd = [[xintercept, pyzero]]; + // this._areaPoints = [[xintercept, pyzero]]; + } + } + if (pd[gd.length-1][1] < 0) { + isnegative = true; + opts.fillStyle = negativeColor; + } + else { + isnegative = false; + opts.fillStyle = posfs; + } + tempgd.push(gd[gd.length-1]); + this._areaPoints.push(gd[gd.length-1]); + tempgd.push([gd[gd.length-1][0], pyzero]); + this._areaPoints.push([gd[gd.length-1][0], pyzero]); + } + // now draw the last area. + if (shadow) { + this.renderer.shadowRenderer.draw(ctx, tempgd, opts); + } + this.renderer.shapeRenderer.draw(ctx, tempgd, opts); + + + // var gridymin = this._yaxis.series_u2p(0); + // // IE doesn't return new length on unshift + // gd.unshift([gd[0][0], gridymin]); + // len = gd.length; + // gd.push([gd[len - 1][0], gridymin]); + } + // if stacked, fill to line below + else { + var prev = this._prevGridData; + for (var i=prev.length; i>0; i--) { + gd.push(prev[i-1]); + // this._areaPoints.push(prev[i-1]); + } + if (shadow) { + this.renderer.shadowRenderer.draw(ctx, gd, opts); + } + this._areaPoints = gd; + this.renderer.shapeRenderer.draw(ctx, gd, opts); + } + } + ///////////////////////// + // Not filled to zero + //////////////////////// + else { + // if stoking line as well as filling, get a copy of line data. + if (fillAndStroke) { + var fasgd = gd.slice(0); + } + // if not stacked, fill down to axis + if (this.index == 0 || !this._stack) { + // var gridymin = this._yaxis.series_u2p(this._yaxis.min) - this.gridBorderWidth / 2; + var gridymin = ctx.canvas.height; + // IE doesn't return new length on unshift + gd.unshift([gd[0][0], gridymin]); + var len = gd.length; + gd.push([gd[len - 1][0], gridymin]); + } + // if stacked, fill to line below + else { + var prev = this._prevGridData; + for (var i=prev.length; i>0; i--) { + gd.push(prev[i-1]); + } + } + this._areaPoints = gd; + + if (shadow) { + this.renderer.shadowRenderer.draw(ctx, gd, opts); + } + + this.renderer.shapeRenderer.draw(ctx, gd, opts); + } + if (fillAndStroke) { + var fasopts = $.extend(true, {}, opts, {fill:false, closePath:false}); + this.renderer.shapeRenderer.draw(ctx, fasgd, fasopts); + ////////// + // TODO: figure out some way to do shadows nicely + // if (shadow) { + // this.renderer.shadowRenderer.draw(ctx, fasgd, fasopts); + // } + // now draw the markers + if (this.markerRenderer.show) { + if (this.renderer.smooth) { + fasgd = this.gridData; + } + for (i=0; i<fasgd.length; i++) { + var markerOptions = opts.markerOptions || {}; + if (this.markerOptionsCallback) { + markerOptions = $.extend(true, markerOptions, this.markerOptionsCallback(plot, this, i, this.data[i], gd[i]) || {}); + } + this.markerRenderer.draw(fasgd[i][0], fasgd[i][1], ctx, markerOptions); + } + } + } + } + else { + + if (this.renderer.bands.show) { + var bdat; + var bopts = $.extend(true, {}, opts); + if (this.renderer.bands.showLines) { + bdat = (this.renderer.smooth) ? this.renderer._hiBandSmoothedData : this.renderer._hiBandGridData; + this.renderer.shapeRenderer.draw(ctx, bdat, opts); + bdat = (this.renderer.smooth) ? this.renderer._lowBandSmoothedData : this.renderer._lowBandGridData; + this.renderer.shapeRenderer.draw(ctx, bdat, bopts); + } + + if (this.renderer.bands.fill) { + if (this.renderer.smooth) { + bdat = this.renderer._hiBandSmoothedData.concat(this.renderer._lowBandSmoothedData.reverse()); + } + else { + bdat = this.renderer._hiBandGridData.concat(this.renderer._lowBandGridData.reverse()); + } + this._areaPoints = bdat; + bopts.closePath = true; + bopts.fill = true; + bopts.fillStyle = this.renderer.bands.fillColor; + this.renderer.shapeRenderer.draw(ctx, bdat, bopts); + } + } + + if (shadow) { + this.renderer.shadowRenderer.draw(ctx, gd, opts); + } + + this.renderer.shapeRenderer.draw(ctx, gd, opts); + } + } + // calculate the bounding box + var xmin = xmax = ymin = ymax = null; + for (i=0; i<this._areaPoints.length; i++) { + var p = this._areaPoints[i]; + if (xmin > p[0] || xmin == null) { + xmin = p[0]; + } + if (ymax < p[1] || ymax == null) { + ymax = p[1]; + } + if (xmax < p[0] || xmax == null) { + xmax = p[0]; + } + if (ymin > p[1] || ymin == null) { + ymin = p[1]; + } + } + + if (this.type === 'line' && this.renderer.bands.show) { + ymax = this._yaxis.series_u2p(this.renderer.bands._min); + ymin = this._yaxis.series_u2p(this.renderer.bands._max); + } + + this._boundingBox = [[xmin, ymax], [xmax, ymin]]; + + // now draw the markers + if (this.markerRenderer.show && !fill) { + if (this.renderer.smooth) { + gd = this.gridData; + } + for (i=0; i<gd.length; i++) { + var markerOptions = opts.markerOptions || {}; + if (this.markerOptionsCallback) { + markerOptions = $.extend(true, markerOptions, this.markerOptionsCallback(plot, this, i, this.data[i], gd[i]) || {}); + } + if (gd[i][0] != null && gd[i][1] != null) { + this.markerRenderer.draw(gd[i][0], gd[i][1], ctx, markerOptions); + } + } + } + } + + ctx.restore(); + }; + + $.jqplot.LineRenderer.prototype.drawShadow = function(ctx, gd, options) { + // This is a no-op, shadows drawn with lines. + }; + + // called with scope of plot. + // make sure to not leave anything highlighted. + function postInit(target, data, options) { + for (var i=0; i<this.series.length; i++) { + if (this.series[i].renderer.constructor == $.jqplot.LineRenderer) { + // don't allow mouseover and mousedown at same time. + if (this.series[i].highlightMouseOver) { + this.series[i].highlightMouseDown = false; + } + } + } + } + + // called within context of plot + // create a canvas which we can draw on. + // insert it before the eventCanvas, so eventCanvas will still capture events. + function postPlotDraw() { + // Memory Leaks patch + if (this.plugins.lineRenderer && this.plugins.lineRenderer.highlightCanvas) { + this.plugins.lineRenderer.highlightCanvas.resetCanvas(); + this.plugins.lineRenderer.highlightCanvas = null; + } + + this.plugins.lineRenderer.highlightedSeriesIndex = null; + this.plugins.lineRenderer.highlightCanvas = new $.jqplot.GenericCanvas(); + + this.eventCanvas._elem.before(this.plugins.lineRenderer.highlightCanvas.createElement(this._gridPadding, 'jqplot-lineRenderer-highlight-canvas', this._plotDimensions, this)); + this.plugins.lineRenderer.highlightCanvas.setContext(); + this.eventCanvas._elem.bind('mouseleave', {plot:this}, function (ev) { unhighlight(ev.data.plot); }); + } + + function highlight (plot, sidx, pidx, points) { + var s = plot.series[sidx]; + var canvas = plot.plugins.lineRenderer.highlightCanvas; + canvas._ctx.clearRect(0,0,canvas._ctx.canvas.width, canvas._ctx.canvas.height); + s._highlightedPoint = pidx; + plot.plugins.lineRenderer.highlightedSeriesIndex = sidx; + var opts = {fillStyle: s.highlightColor}; + if (s.type === 'line' && s.renderer.bands.show) { + opts.fill = true; + opts.closePath = true; + } + s.renderer.shapeRenderer.draw(canvas._ctx, points, opts); + canvas = null; + } + + function unhighlight (plot) { + var canvas = plot.plugins.lineRenderer.highlightCanvas; + canvas._ctx.clearRect(0,0, canvas._ctx.canvas.width, canvas._ctx.canvas.height); + for (var i=0; i<plot.series.length; i++) { + plot.series[i]._highlightedPoint = null; + } + plot.plugins.lineRenderer.highlightedSeriesIndex = null; + plot.target.trigger('jqplotDataUnhighlight'); + canvas = null; + } + + + function handleMove(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + var evt1 = jQuery.Event('jqplotDataMouseOver'); + evt1.pageX = ev.pageX; + evt1.pageY = ev.pageY; + plot.target.trigger(evt1, ins); + if (plot.series[ins[0]].highlightMouseOver && !(ins[0] == plot.plugins.lineRenderer.highlightedSeriesIndex)) { + var evt = jQuery.Event('jqplotDataHighlight'); + evt.which = ev.which; + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + highlight (plot, neighbor.seriesIndex, neighbor.pointIndex, neighbor.points); + } + } + else if (neighbor == null) { + unhighlight (plot); + } + } + + function handleMouseDown(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + if (plot.series[ins[0]].highlightMouseDown && !(ins[0] == plot.plugins.lineRenderer.highlightedSeriesIndex)) { + var evt = jQuery.Event('jqplotDataHighlight'); + evt.which = ev.which; + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + highlight (plot, neighbor.seriesIndex, neighbor.pointIndex, neighbor.points); + } + } + else if (neighbor == null) { + unhighlight (plot); + } + } + + function handleMouseUp(ev, gridpos, datapos, neighbor, plot) { + var idx = plot.plugins.lineRenderer.highlightedSeriesIndex; + if (idx != null && plot.series[idx].highlightMouseDown) { + unhighlight(plot); + } + } + + function handleClick(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + var evt = jQuery.Event('jqplotDataClick'); + evt.which = ev.which; + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + } + } + + function handleRightClick(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + var idx = plot.plugins.lineRenderer.highlightedSeriesIndex; + if (idx != null && plot.series[idx].highlightMouseDown) { + unhighlight(plot); + } + var evt = jQuery.Event('jqplotDataRightClick'); + evt.which = ev.which; + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + } + } + + + + // class: $.jqplot.LinearAxisRenderer + // The default jqPlot axis renderer, creating a numeric axis. + $.jqplot.LinearAxisRenderer = function() { + }; + + // called with scope of axis object. + $.jqplot.LinearAxisRenderer.prototype.init = function(options){ + // prop: breakPoints + // EXPERIMENTAL!! Use at your own risk! + // Works only with linear axes and the default tick renderer. + // Array of [start, stop] points to create a broken axis. + // Broken axes have a "jump" in them, which is an immediate + // transition from a smaller value to a larger value. + // Currently, axis ticks MUST be manually assigned if using breakPoints + // by using the axis ticks array option. + this.breakPoints = null; + // prop: breakTickLabel + // Label to use at the axis break if breakPoints are specified. + this.breakTickLabel = "≈"; + // prop: drawBaseline + // True to draw the axis baseline. + this.drawBaseline = true; + // prop: baselineWidth + // width of the baseline in pixels. + this.baselineWidth = null; + // prop: baselineColor + // CSS color spec for the baseline. + this.baselineColor = null; + // prop: forceTickAt0 + // This will ensure that there is always a tick mark at 0. + // If data range is strictly positive or negative, + // this will force 0 to be inside the axis bounds unless + // the appropriate axis pad (pad, padMin or padMax) is set + // to 0, then this will force an axis min or max value at 0. + // This has know effect when any of the following options + // are set: autoscale, min, max, numberTicks or tickInterval. + this.forceTickAt0 = false; + // prop: forceTickAt100 + // This will ensure that there is always a tick mark at 100. + // If data range is strictly above or below 100, + // this will force 100 to be inside the axis bounds unless + // the appropriate axis pad (pad, padMin or padMax) is set + // to 0, then this will force an axis min or max value at 100. + // This has know effect when any of the following options + // are set: autoscale, min, max, numberTicks or tickInterval. + this.forceTickAt100 = false; + // prop: tickInset + // Controls the amount to inset the first and last ticks from + // the edges of the grid, in multiples of the tick interval. + // 0 is no inset, 0.5 is one half a tick interval, 1 is a full + // tick interval, etc. + this.tickInset = 0; + // prop: minorTicks + // Number of ticks to add between "major" ticks. + // Major ticks are ticks supplied by user or auto computed. + // Minor ticks cannot be created by user. + this.minorTicks = 0; + // prop: alignTicks + // true to align tick marks across opposed axes + // such as from the y2axis to yaxis. + this.alignTicks = false; + this._autoFormatString = ''; + this._overrideFormatString = false; + this._scalefact = 1.0; + $.extend(true, this, options); + if (this.breakPoints) { + if (!$.isArray(this.breakPoints)) { + this.breakPoints = null; + } + else if (this.breakPoints.length < 2 || this.breakPoints[1] <= this.breakPoints[0]) { + this.breakPoints = null; + } + } + if (this.numberTicks != null && this.numberTicks < 2) { + this.numberTicks = 2; + } + this.resetDataBounds(); + }; + + // called with scope of axis + $.jqplot.LinearAxisRenderer.prototype.draw = function(ctx, plot) { + if (this.show) { + // populate the axis label and value properties. + // createTicks is a method on the renderer, but + // call it within the scope of the axis. + this.renderer.createTicks.call(this, plot); + // fill a div with axes labels in the right direction. + // Need to pregenerate each axis to get its bounds and + // position it and the labels correctly on the plot. + var dim=0; + var temp; + // Added for theming. + if (this._elem) { + // Memory Leaks patch + //this._elem.empty(); + this._elem.emptyForce(); + this._elem = null; + } + + this._elem = $(document.createElement('div')); + this._elem.addClass('jqplot-axis jqplot-'+this.name); + this._elem.css('position', 'absolute'); + + + if (this.name == 'xaxis' || this.name == 'x2axis') { + this._elem.width(this._plotDimensions.width); + } + else { + this._elem.height(this._plotDimensions.height); + } + + // create a _label object. + this.labelOptions.axis = this.name; + this._label = new this.labelRenderer(this.labelOptions); + if (this._label.show) { + var elem = this._label.draw(ctx, plot); + elem.appendTo(this._elem); + elem = null; + } + + var t = this._ticks; + var tick; + for (var i=0; i<t.length; i++) { + tick = t[i]; + if (tick.show && tick.showLabel && (!tick.isMinorTick || this.showMinorTicks)) { + this._elem.append(tick.draw(ctx, plot)); + } + } + tick = null; + t = null; + } + return this._elem; + }; + + // called with scope of an axis + $.jqplot.LinearAxisRenderer.prototype.reset = function() { + this.min = this._options.min; + this.max = this._options.max; + this.tickInterval = this._options.tickInterval; + this.numberTicks = this._options.numberTicks; + this._autoFormatString = ''; + if (this._overrideFormatString && this.tickOptions && this.tickOptions.formatString) { + this.tickOptions.formatString = ''; + } + + // this._ticks = this.__ticks; + }; + + // called with scope of axis + $.jqplot.LinearAxisRenderer.prototype.set = function() { + var dim = 0; + var temp; + var w = 0; + var h = 0; + var lshow = (this._label == null) ? false : this._label.show; + if (this.show) { + var t = this._ticks; + var tick; + for (var i=0; i<t.length; i++) { + tick = t[i]; + if (!tick._breakTick && tick.show && tick.showLabel && (!tick.isMinorTick || this.showMinorTicks)) { + if (this.name == 'xaxis' || this.name == 'x2axis') { + temp = tick._elem.outerHeight(true); + } + else { + temp = tick._elem.outerWidth(true); + } + if (temp > dim) { + dim = temp; + } + } + } + tick = null; + t = null; + + if (lshow) { + w = this._label._elem.outerWidth(true); + h = this._label._elem.outerHeight(true); + } + if (this.name == 'xaxis') { + dim = dim + h; + this._elem.css({'height':dim+'px', left:'0px', bottom:'0px'}); + } + else if (this.name == 'x2axis') { + dim = dim + h; + this._elem.css({'height':dim+'px', left:'0px', top:'0px'}); + } + else if (this.name == 'yaxis') { + dim = dim + w; + this._elem.css({'width':dim+'px', left:'0px', top:'0px'}); + if (lshow && this._label.constructor == $.jqplot.AxisLabelRenderer) { + this._label._elem.css('width', w+'px'); + } + } + else { + dim = dim + w; + this._elem.css({'width':dim+'px', right:'0px', top:'0px'}); + if (lshow && this._label.constructor == $.jqplot.AxisLabelRenderer) { + this._label._elem.css('width', w+'px'); + } + } + } + }; + + // called with scope of axis + $.jqplot.LinearAxisRenderer.prototype.createTicks = function(plot) { + // we're are operating on an axis here + var ticks = this._ticks; + var userTicks = this.ticks; + var name = this.name; + // databounds were set on axis initialization. + var db = this._dataBounds; + var dim = (this.name.charAt(0) === 'x') ? this._plotDimensions.width : this._plotDimensions.height; + var interval; + var min, max; + var pos1, pos2; + var tt, i; + // get a copy of user's settings for min/max. + var userMin = this.min; + var userMax = this.max; + var userNT = this.numberTicks; + var userTI = this.tickInterval; + + var threshold = 30; + this._scalefact = (Math.max(dim, threshold+1) - threshold)/300.0; + + // if we already have ticks, use them. + // ticks must be in order of increasing value. + + if (userTicks.length) { + // ticks could be 1D or 2D array of [val, val, ,,,] or [[val, label], [val, label], ...] or mixed + for (i=0; i<userTicks.length; i++){ + var ut = userTicks[i]; + var t = new this.tickRenderer(this.tickOptions); + if ($.isArray(ut)) { + t.value = ut[0]; + if (this.breakPoints) { + if (ut[0] == this.breakPoints[0]) { + t.label = this.breakTickLabel; + t._breakTick = true; + t.showGridline = false; + t.showMark = false; + } + else if (ut[0] > this.breakPoints[0] && ut[0] <= this.breakPoints[1]) { + t.show = false; + t.showGridline = false; + t.label = ut[1]; + } + else { + t.label = ut[1]; + } + } + else { + t.label = ut[1]; + } + t.setTick(ut[0], this.name); + this._ticks.push(t); + } + + else if ($.isPlainObject(ut)) { + $.extend(true, t, ut); + t.axis = this.name; + this._ticks.push(t); + } + + else { + t.value = ut; + if (this.breakPoints) { + if (ut == this.breakPoints[0]) { + t.label = this.breakTickLabel; + t._breakTick = true; + t.showGridline = false; + t.showMark = false; + } + else if (ut > this.breakPoints[0] && ut <= this.breakPoints[1]) { + t.show = false; + t.showGridline = false; + } + } + t.setTick(ut, this.name); + this._ticks.push(t); + } + } + this.numberTicks = userTicks.length; + this.min = this._ticks[0].value; + this.max = this._ticks[this.numberTicks-1].value; + this.tickInterval = (this.max - this.min) / (this.numberTicks - 1); + } + + // we don't have any ticks yet, let's make some! + else { + if (name == 'xaxis' || name == 'x2axis') { + dim = this._plotDimensions.width; + } + else { + dim = this._plotDimensions.height; + } + + var _numberTicks = this.numberTicks; + + // if aligning this axis, use number of ticks from previous axis. + // Do I need to reset somehow if alignTicks is changed and then graph is replotted?? + if (this.alignTicks) { + if (this.name === 'x2axis' && plot.axes.xaxis.show) { + _numberTicks = plot.axes.xaxis.numberTicks; + } + else if (this.name.charAt(0) === 'y' && this.name !== 'yaxis' && this.name !== 'yMidAxis' && plot.axes.yaxis.show) { + _numberTicks = plot.axes.yaxis.numberTicks; + } + } + + min = ((this.min != null) ? this.min : db.min); + max = ((this.max != null) ? this.max : db.max); + + var range = max - min; + var rmin, rmax; + var temp; + + if (this.tickOptions == null || !this.tickOptions.formatString) { + this._overrideFormatString = true; + } + + // Doing complete autoscaling + if (this.min == null || this.max == null && this.tickInterval == null && !this.autoscale) { + // Check if user must have tick at 0 or 100 and ensure they are in range. + // The autoscaling algorithm will always place ticks at 0 and 100 if they are in range. + if (this.forceTickAt0) { + if (min > 0) { + min = 0; + } + if (max < 0) { + max = 0; + } + } + + if (this.forceTickAt100) { + if (min > 100) { + min = 100; + } + if (max < 100) { + max = 100; + } + } + + var keepMin = false, + keepMax = false; + + if (this.min != null) { + keepMin = true; + } + + else if (this.max != null) { + keepMax = true; + } + + // var threshold = 30; + // var tdim = Math.max(dim, threshold+1); + // this._scalefact = (tdim-threshold)/300.0; + var ret = $.jqplot.LinearTickGenerator(min, max, this._scalefact, _numberTicks, keepMin, keepMax); + // calculate a padded max and min, points should be less than these + // so that they aren't too close to the edges of the plot. + // User can adjust how much padding is allowed with pad, padMin and PadMax options. + // If min or max is set, don't pad that end of axis. + var tumin = (this.min != null) ? min : min + range*(this.padMin - 1); + var tumax = (this.max != null) ? max : max - range*(this.padMax - 1); + + // if they're equal, we shouldn't have to do anything, right? + // if (min <=tumin || max >= tumax) { + if (min <tumin || max > tumax) { + tumin = (this.min != null) ? min : min - range*(this.padMin - 1); + tumax = (this.max != null) ? max : max + range*(this.padMax - 1); + ret = $.jqplot.LinearTickGenerator(tumin, tumax, this._scalefact, _numberTicks, keepMin, keepMax); + } + + this.min = ret[0]; + this.max = ret[1]; + // if numberTicks specified, it should return the same. + this.numberTicks = ret[2]; + this._autoFormatString = ret[3]; + this.tickInterval = ret[4]; + } + + // User has specified some axis scale related option, can use auto algorithm + else { + + // if min and max are same, space them out a bit + if (min == max) { + var adj = 0.05; + if (min > 0) { + adj = Math.max(Math.log(min)/Math.LN10, 0.05); + } + min -= adj; + max += adj; + } + + // autoscale. Can't autoscale if min or max is supplied. + // Will use numberTicks and tickInterval if supplied. Ticks + // across multiple axes may not line up depending on how + // bars are to be plotted. + if (this.autoscale && this.min == null && this.max == null) { + var rrange, ti, margin; + var forceMinZero = false; + var forceZeroLine = false; + var intervals = {min:null, max:null, average:null, stddev:null}; + // if any series are bars, or if any are fill to zero, and if this + // is the axis to fill toward, check to see if we can start axis at zero. + for (var i=0; i<this._series.length; i++) { + var s = this._series[i]; + var faname = (s.fillAxis == 'x') ? s._xaxis.name : s._yaxis.name; + // check to see if this is the fill axis + if (this.name == faname) { + var vals = s._plotValues[s.fillAxis]; + var vmin = vals[0]; + var vmax = vals[0]; + for (var j=1; j<vals.length; j++) { + if (vals[j] < vmin) { + vmin = vals[j]; + } + else if (vals[j] > vmax) { + vmax = vals[j]; + } + } + var dp = (vmax - vmin) / vmax; + // is this sries a bar? + if (s.renderer.constructor == $.jqplot.BarRenderer) { + // if no negative values and could also check range. + if (vmin >= 0 && (s.fillToZero || dp > 0.1)) { + forceMinZero = true; + } + else { + forceMinZero = false; + if (s.fill && s.fillToZero && vmin < 0 && vmax > 0) { + forceZeroLine = true; + } + else { + forceZeroLine = false; + } + } + } + + // if not a bar and filling, use appropriate method. + else if (s.fill) { + if (vmin >= 0 && (s.fillToZero || dp > 0.1)) { + forceMinZero = true; + } + else if (vmin < 0 && vmax > 0 && s.fillToZero) { + forceMinZero = false; + forceZeroLine = true; + } + else { + forceMinZero = false; + forceZeroLine = false; + } + } + + // if not a bar and not filling, only change existing state + // if it doesn't make sense + else if (vmin < 0) { + forceMinZero = false; + } + } + } + + // check if we need make axis min at 0. + if (forceMinZero) { + // compute number of ticks + this.numberTicks = 2 + Math.ceil((dim-(this.tickSpacing-1))/this.tickSpacing); + this.min = 0; + userMin = 0; + // what order is this range? + // what tick interval does that give us? + ti = max/(this.numberTicks-1); + temp = Math.pow(10, Math.abs(Math.floor(Math.log(ti)/Math.LN10))); + if (ti/temp == parseInt(ti/temp, 10)) { + ti += temp; + } + this.tickInterval = Math.ceil(ti/temp) * temp; + this.max = this.tickInterval * (this.numberTicks - 1); + } + + // check if we need to make sure there is a tick at 0. + else if (forceZeroLine) { + // compute number of ticks + this.numberTicks = 2 + Math.ceil((dim-(this.tickSpacing-1))/this.tickSpacing); + var ntmin = Math.ceil(Math.abs(min)/range*(this.numberTicks-1)); + var ntmax = this.numberTicks - 1 - ntmin; + ti = Math.max(Math.abs(min/ntmin), Math.abs(max/ntmax)); + temp = Math.pow(10, Math.abs(Math.floor(Math.log(ti)/Math.LN10))); + this.tickInterval = Math.ceil(ti/temp) * temp; + this.max = this.tickInterval * ntmax; + this.min = -this.tickInterval * ntmin; + } + + // if nothing else, do autoscaling which will try to line up ticks across axes. + else { + if (this.numberTicks == null){ + if (this.tickInterval) { + this.numberTicks = 3 + Math.ceil(range / this.tickInterval); + } + else { + this.numberTicks = 2 + Math.ceil((dim-(this.tickSpacing-1))/this.tickSpacing); + } + } + + if (this.tickInterval == null) { + // get a tick interval + ti = range/(this.numberTicks - 1); + + if (ti < 1) { + temp = Math.pow(10, Math.abs(Math.floor(Math.log(ti)/Math.LN10))); + } + else { + temp = 1; + } + this.tickInterval = Math.ceil(ti*temp*this.pad)/temp; + } + else { + temp = 1 / this.tickInterval; + } + + // try to compute a nicer, more even tick interval + // temp = Math.pow(10, Math.floor(Math.log(ti)/Math.LN10)); + // this.tickInterval = Math.ceil(ti/temp) * temp; + rrange = this.tickInterval * (this.numberTicks - 1); + margin = (rrange - range)/2; + + if (this.min == null) { + this.min = Math.floor(temp*(min-margin))/temp; + } + if (this.max == null) { + this.max = this.min + rrange; + } + } + + // Compute a somewhat decent format string if it is needed. + // get precision of interval and determine a format string. + var sf = $.jqplot.getSignificantFigures(this.tickInterval); + + var fstr; + + // if we have only a whole number, use integer formatting + if (sf.digitsLeft >= sf.significantDigits) { + fstr = '%d'; + } + + else { + var temp = Math.max(0, 5 - sf.digitsLeft); + temp = Math.min(temp, sf.digitsRight); + fstr = '%.'+ temp + 'f'; + } + + this._autoFormatString = fstr; + } + + // Use the default algorithm which pads each axis to make the chart + // centered nicely on the grid. + else { + + rmin = (this.min != null) ? this.min : min - range*(this.padMin - 1); + rmax = (this.max != null) ? this.max : max + range*(this.padMax - 1); + range = rmax - rmin; + + if (this.numberTicks == null){ + // if tickInterval is specified by user, we will ignore computed maximum. + // max will be equal or greater to fit even # of ticks. + if (this.tickInterval != null) { + this.numberTicks = Math.ceil((rmax - rmin)/this.tickInterval)+1; + } + else if (dim > 100) { + this.numberTicks = parseInt(3+(dim-100)/75, 10); + } + else { + this.numberTicks = 2; + } + } + + if (this.tickInterval == null) { + this.tickInterval = range / (this.numberTicks-1); + } + + if (this.max == null) { + rmax = rmin + this.tickInterval*(this.numberTicks - 1); + } + if (this.min == null) { + rmin = rmax - this.tickInterval*(this.numberTicks - 1); + } + + // get precision of interval and determine a format string. + var sf = $.jqplot.getSignificantFigures(this.tickInterval); + + var fstr; + + // if we have only a whole number, use integer formatting + if (sf.digitsLeft >= sf.significantDigits) { + fstr = '%d'; + } + + else { + var temp = Math.max(0, 5 - sf.digitsLeft); + temp = Math.min(temp, sf.digitsRight); + fstr = '%.'+ temp + 'f'; + } + + + this._autoFormatString = fstr; + + this.min = rmin; + this.max = rmax; + } + + if (this.renderer.constructor == $.jqplot.LinearAxisRenderer && this._autoFormatString == '') { + // fix for misleading tick display with small range and low precision. + range = this.max - this.min; + // figure out precision + var temptick = new this.tickRenderer(this.tickOptions); + // use the tick formatString or, the default. + var fs = temptick.formatString || $.jqplot.config.defaultTickFormatString; + var fs = fs.match($.jqplot.sprintf.regex)[0]; + var precision = 0; + if (fs) { + if (fs.search(/[fFeEgGpP]/) > -1) { + var m = fs.match(/\%\.(\d{0,})?[eEfFgGpP]/); + if (m) { + precision = parseInt(m[1], 10); + } + else { + precision = 6; + } + } + else if (fs.search(/[di]/) > -1) { + precision = 0; + } + // fact will be <= 1; + var fact = Math.pow(10, -precision); + if (this.tickInterval < fact) { + // need to correct underrange + if (userNT == null && userTI == null) { + this.tickInterval = fact; + if (userMax == null && userMin == null) { + // this.min = Math.floor((this._dataBounds.min - this.tickInterval)/fact) * fact; + this.min = Math.floor(this._dataBounds.min/fact) * fact; + if (this.min == this._dataBounds.min) { + this.min = this._dataBounds.min - this.tickInterval; + } + // this.max = Math.ceil((this._dataBounds.max + this.tickInterval)/fact) * fact; + this.max = Math.ceil(this._dataBounds.max/fact) * fact; + if (this.max == this._dataBounds.max) { + this.max = this._dataBounds.max + this.tickInterval; + } + var n = (this.max - this.min)/this.tickInterval; + n = n.toFixed(11); + n = Math.ceil(n); + this.numberTicks = n + 1; + } + else if (userMax == null) { + // add one tick for top of range. + var n = (this._dataBounds.max - this.min) / this.tickInterval; + n = n.toFixed(11); + this.numberTicks = Math.ceil(n) + 2; + this.max = this.min + this.tickInterval * (this.numberTicks-1); + } + else if (userMin == null) { + // add one tick for bottom of range. + var n = (this.max - this._dataBounds.min) / this.tickInterval; + n = n.toFixed(11); + this.numberTicks = Math.ceil(n) + 2; + this.min = this.max - this.tickInterval * (this.numberTicks-1); + } + else { + // calculate a number of ticks so max is within axis scale + this.numberTicks = Math.ceil((userMax - userMin)/this.tickInterval) + 1; + // if user's min and max don't fit evenly in ticks, adjust. + // This takes care of cases such as user min set to 0, max set to 3.5 but tick + // format string set to %d (integer ticks) + this.min = Math.floor(userMin*Math.pow(10, precision))/Math.pow(10, precision); + this.max = Math.ceil(userMax*Math.pow(10, precision))/Math.pow(10, precision); + // this.max = this.min + this.tickInterval*(this.numberTicks-1); + this.numberTicks = Math.ceil((this.max - this.min)/this.tickInterval) + 1; + } + } + } + } + } + + } + + if (this._overrideFormatString && this._autoFormatString != '') { + this.tickOptions = this.tickOptions || {}; + this.tickOptions.formatString = this._autoFormatString; + } + + var t, to; + for (var i=0; i<this.numberTicks; i++){ + tt = this.min + i * this.tickInterval; + t = new this.tickRenderer(this.tickOptions); + // var t = new $.jqplot.AxisTickRenderer(this.tickOptions); + + t.setTick(tt, this.name); + this._ticks.push(t); + + if (i < this.numberTicks - 1) { + for (var j=0; j<this.minorTicks; j++) { + tt += this.tickInterval/(this.minorTicks+1); + to = $.extend(true, {}, this.tickOptions, {name:this.name, value:tt, label:'', isMinorTick:true}); + t = new this.tickRenderer(to); + this._ticks.push(t); + } + } + t = null; + } + } + + if (this.tickInset) { + this.min = this.min - this.tickInset * this.tickInterval; + this.max = this.max + this.tickInset * this.tickInterval; + } + + ticks = null; + }; + + // Used to reset just the values of the ticks and then repack, which will + // recalculate the positioning functions. It is assuemd that the + // number of ticks is the same and the values of the new array are at the + // proper interval. + // This method needs to be called with the scope of an axis object, like: + // + // > plot.axes.yaxis.renderer.resetTickValues.call(plot.axes.yaxis, yarr); + // + $.jqplot.LinearAxisRenderer.prototype.resetTickValues = function(opts) { + if ($.isArray(opts) && opts.length == this._ticks.length) { + var t; + for (var i=0; i<opts.length; i++) { + t = this._ticks[i]; + t.value = opts[i]; + t.label = t.formatter(t.formatString, opts[i]); + t.label = t.prefix + t.label; + t._elem.html(t.label); + } + t = null; + this.min = $.jqplot.arrayMin(opts); + this.max = $.jqplot.arrayMax(opts); + this.pack(); + } + // Not implemented yet. + // else if ($.isPlainObject(opts)) { + // + // } + }; + + // called with scope of axis + $.jqplot.LinearAxisRenderer.prototype.pack = function(pos, offsets) { + // Add defaults for repacking from resetTickValues function. + pos = pos || {}; + offsets = offsets || this._offsets; + + var ticks = this._ticks; + var max = this.max; + var min = this.min; + var offmax = offsets.max; + var offmin = offsets.min; + var lshow = (this._label == null) ? false : this._label.show; + + for (var p in pos) { + this._elem.css(p, pos[p]); + } + + this._offsets = offsets; + // pixellength will be + for x axes and - for y axes becasue pixels always measured from top left. + var pixellength = offmax - offmin; + var unitlength = max - min; + + // point to unit and unit to point conversions references to Plot DOM element top left corner. + if (this.breakPoints) { + unitlength = unitlength - this.breakPoints[1] + this.breakPoints[0]; + + this.p2u = function(p){ + return (p - offmin) * unitlength / pixellength + min; + }; + + this.u2p = function(u){ + if (u > this.breakPoints[0] && u < this.breakPoints[1]){ + u = this.breakPoints[0]; + } + if (u <= this.breakPoints[0]) { + return (u - min) * pixellength / unitlength + offmin; + } + else { + return (u - this.breakPoints[1] + this.breakPoints[0] - min) * pixellength / unitlength + offmin; + } + }; + + if (this.name.charAt(0) == 'x'){ + this.series_u2p = function(u){ + if (u > this.breakPoints[0] && u < this.breakPoints[1]){ + u = this.breakPoints[0]; + } + if (u <= this.breakPoints[0]) { + return (u - min) * pixellength / unitlength; + } + else { + return (u - this.breakPoints[1] + this.breakPoints[0] - min) * pixellength / unitlength; + } + }; + this.series_p2u = function(p){ + return p * unitlength / pixellength + min; + }; + } + + else { + this.series_u2p = function(u){ + if (u > this.breakPoints[0] && u < this.breakPoints[1]){ + u = this.breakPoints[0]; + } + if (u >= this.breakPoints[1]) { + return (u - max) * pixellength / unitlength; + } + else { + return (u + this.breakPoints[1] - this.breakPoints[0] - max) * pixellength / unitlength; + } + }; + this.series_p2u = function(p){ + return p * unitlength / pixellength + max; + }; + } + } + else { + this.p2u = function(p){ + return (p - offmin) * unitlength / pixellength + min; + }; + + this.u2p = function(u){ + return (u - min) * pixellength / unitlength + offmin; + }; + + if (this.name == 'xaxis' || this.name == 'x2axis'){ + this.series_u2p = function(u){ + return (u - min) * pixellength / unitlength; + }; + this.series_p2u = function(p){ + return p * unitlength / pixellength + min; + }; + } + + else { + this.series_u2p = function(u){ + return (u - max) * pixellength / unitlength; + }; + this.series_p2u = function(p){ + return p * unitlength / pixellength + max; + }; + } + } + + if (this.show) { + if (this.name == 'xaxis' || this.name == 'x2axis') { + for (var i=0; i<ticks.length; i++) { + var t = ticks[i]; + if (t.show && t.showLabel) { + var shim; + + if (t.constructor == $.jqplot.CanvasAxisTickRenderer && t.angle) { + // will need to adjust auto positioning based on which axis this is. + var temp = (this.name == 'xaxis') ? 1 : -1; + switch (t.labelPosition) { + case 'auto': + // position at end + if (temp * t.angle < 0) { + shim = -t.getWidth() + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; + } + // position at start + else { + shim = -t._textRenderer.height * Math.sin(t._textRenderer.angle) / 2; + } + break; + case 'end': + shim = -t.getWidth() + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; + break; + case 'start': + shim = -t._textRenderer.height * Math.sin(t._textRenderer.angle) / 2; + break; + case 'middle': + shim = -t.getWidth()/2 + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; + break; + default: + shim = -t.getWidth()/2 + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; + break; + } + } + else { + shim = -t.getWidth()/2; + } + var val = this.u2p(t.value) + shim + 'px'; + t._elem.css('left', val); + t.pack(); + } + } + if (lshow) { + var w = this._label._elem.outerWidth(true); + this._label._elem.css('left', offmin + pixellength/2 - w/2 + 'px'); + if (this.name == 'xaxis') { + this._label._elem.css('bottom', '0px'); + } + else { + this._label._elem.css('top', '0px'); + } + this._label.pack(); + } + } + else { + for (var i=0; i<ticks.length; i++) { + var t = ticks[i]; + if (t.show && t.showLabel) { + var shim; + if (t.constructor == $.jqplot.CanvasAxisTickRenderer && t.angle) { + // will need to adjust auto positioning based on which axis this is. + var temp = (this.name == 'yaxis') ? 1 : -1; + switch (t.labelPosition) { + case 'auto': + // position at end + case 'end': + if (temp * t.angle < 0) { + shim = -t._textRenderer.height * Math.cos(-t._textRenderer.angle) / 2; + } + else { + shim = -t.getHeight() + t._textRenderer.height * Math.cos(t._textRenderer.angle) / 2; + } + break; + case 'start': + if (t.angle > 0) { + shim = -t._textRenderer.height * Math.cos(-t._textRenderer.angle) / 2; + } + else { + shim = -t.getHeight() + t._textRenderer.height * Math.cos(t._textRenderer.angle) / 2; + } + break; + case 'middle': + // if (t.angle > 0) { + // shim = -t.getHeight()/2 + t._textRenderer.height * Math.sin(-t._textRenderer.angle) / 2; + // } + // else { + // shim = -t.getHeight()/2 - t._textRenderer.height * Math.sin(t._textRenderer.angle) / 2; + // } + shim = -t.getHeight()/2; + break; + default: + shim = -t.getHeight()/2; + break; + } + } + else { + shim = -t.getHeight()/2; + } + + var val = this.u2p(t.value) + shim + 'px'; + t._elem.css('top', val); + t.pack(); + } + } + if (lshow) { + var h = this._label._elem.outerHeight(true); + this._label._elem.css('top', offmax - pixellength/2 - h/2 + 'px'); + if (this.name == 'yaxis') { + this._label._elem.css('left', '0px'); + } + else { + this._label._elem.css('right', '0px'); + } + this._label.pack(); + } + } + } + + ticks = null; + }; + + + /** + * The following code was generaously given to me a while back by Scott Prahl. + * He did a good job at computing axes min, max and number of ticks for the + * case where the user has not set any scale related parameters (tickInterval, + * numberTicks, min or max). I had ignored this use case for a long time, + * focusing on the more difficult case where user has set some option controlling + * tick generation. Anyway, about time I got this into jqPlot. + * Thanks Scott!! + */ + + /** + * Copyright (c) 2010 Scott Prahl + * The next three routines are currently available for use in all personal + * or commercial projects under both the MIT and GPL version 2.0 licenses. + * This means that you can choose the license that best suits your project + * and use it accordingly. + */ + + // A good format string depends on the interval. If the interval is greater + // than 1 then there is no need to show any decimal digits. If it is < 1.0, then + // use the magnitude of the interval to determine the number of digits to show. + function bestFormatString (interval) + { + var fstr; + interval = Math.abs(interval); + if (interval >= 10) { + fstr = '%d'; + } + + else if (interval > 1) { + if (interval === parseInt(interval, 10)) { + fstr = '%d'; + } + else { + fstr = '%.1f'; + } + } + + else { + var expv = -Math.floor(Math.log(interval)/Math.LN10); + fstr = '%.' + expv + 'f'; + } + + return fstr; + } + + var _factors = [0.1, 0.2, 0.3, 0.4, 0.5, 0.8, 1, 2, 3, 4, 5]; + + var _getLowerFactor = function(f) { + var i = _factors.indexOf(f); + if (i > 0) { + return _factors[i-1]; + } + else { + return _factors[_factors.length - 1] / 100; + } + }; + + var _getHigherFactor = function(f) { + var i = _factors.indexOf(f); + if (i < _factors.length-1) { + return _factors[i+1]; + } + else { + return _factors[0] * 100; + } + }; + + // Given a fixed minimum and maximum and a target number ot ticks + // figure out the best interval and + // return min, max, number ticks, format string and tick interval + function bestConstrainedInterval(min, max, nttarget) { + // run through possible number to ticks and see which interval is best + var low = Math.floor(nttarget/2); + var hi = Math.ceil(nttarget*1.5); + var badness = Number.MAX_VALUE; + var r = (max - min); + var temp; + var sd; + var bestNT; + var gsf = $.jqplot.getSignificantFigures; + var fsd; + var fs; + var currentNT; + var bestPrec; + + for (var i=0, l=hi-low+1; i<l; i++) { + currentNT = low + i; + temp = r/(currentNT-1); + sd = gsf(temp); + + temp = Math.abs(nttarget - currentNT) + sd.digitsRight; + if (temp < badness) { + badness = temp; + bestNT = currentNT; + bestPrec = sd.digitsRight; + } + else if (temp === badness) { + // let nicer ticks trump number ot ticks + if (sd.digitsRight < bestPrec) { + bestNT = currentNT; + bestPrec = sd.digitsRight; + } + } + + } + + fsd = Math.max(bestPrec, Math.max(gsf(min).digitsRight, gsf(max).digitsRight)); + if (fsd === 0) { + fs = '%d'; + } + else { + fs = '%.' + fsd + 'f'; + } + temp = r / (bestNT - 1); + // min, max, number ticks, format string, tick interval + return [min, max, bestNT, fs, temp]; + } + + // This will return an interval of form 2 * 10^n, 5 * 10^n or 10 * 10^n + // it is based soley on the range and number of ticks. So if user specifies + // number of ticks, use this. + function bestInterval(range, numberTicks) { + numberTicks = numberTicks || 7; + var minimum = range / (numberTicks - 1); + var magnitude = Math.pow(10, Math.floor(Math.log(minimum) / Math.LN10)); + var residual = minimum / magnitude; + var interval; + // "nicest" ranges are 1, 2, 5 or powers of these. + // for magnitudes below 1, only allow these. + if (magnitude < 1) { + if (residual > 5) { + interval = 10 * magnitude; + } + else if (residual > 2) { + interval = 5 * magnitude; + } + else if (residual > 1) { + interval = 2 * magnitude; + } + else { + interval = magnitude; + } + } + // for large ranges (whole integers), allow intervals like 3, 4 or powers of these. + // this helps a lot with poor choices for number of ticks. + else { + if (residual > 5) { + interval = 10 * magnitude; + } + else if (residual > 4) { + interval = 5 * magnitude; + } + else if (residual > 3) { + interval = 4 * magnitude; + } + else if (residual > 2) { + interval = 3 * magnitude; + } + else if (residual > 1) { + interval = 2 * magnitude; + } + else { + interval = magnitude; + } + } + + return interval; + } + + // This will return an interval of form 2 * 10^n, 5 * 10^n or 10 * 10^n + // it is based soley on the range of data, number of ticks must be computed later. + function bestLinearInterval(range, scalefact) { + scalefact = scalefact || 1; + var expv = Math.floor(Math.log(range)/Math.LN10); + var magnitude = Math.pow(10, expv); + // 0 < f < 10 + var f = range / magnitude; + var fact; + // for large plots, scalefact will decrease f and increase number of ticks. + // for small plots, scalefact will increase f and decrease number of ticks. + f = f/scalefact; + + // for large plots, smaller interval, more ticks. + if (f<=0.38) { + fact = 0.1; + } + else if (f<=1.6) { + fact = 0.2; + } + else if (f<=4.0) { + fact = 0.5; + } + else if (f<=8.0) { + fact = 1.0; + } + // for very small plots, larger interval, less ticks in number ticks + else if (f<=16.0) { + fact = 2; + } + else { + fact = 5; + } + + return fact*magnitude; + } + + function bestLinearComponents(range, scalefact) { + var expv = Math.floor(Math.log(range)/Math.LN10); + var magnitude = Math.pow(10, expv); + // 0 < f < 10 + var f = range / magnitude; + var interval; + var fact; + // for large plots, scalefact will decrease f and increase number of ticks. + // for small plots, scalefact will increase f and decrease number of ticks. + f = f/scalefact; + + // for large plots, smaller interval, more ticks. + if (f<=0.38) { + fact = 0.1; + } + else if (f<=1.6) { + fact = 0.2; + } + else if (f<=4.0) { + fact = 0.5; + } + else if (f<=8.0) { + fact = 1.0; + } + // for very small plots, larger interval, less ticks in number ticks + else if (f<=16.0) { + fact = 2; + } + // else if (f<=20.0) { + // fact = 3; + // } + // else if (f<=24.0) { + // fact = 4; + // } + else { + fact = 5; + } + + interval = fact * magnitude; + + return [interval, fact, magnitude]; + } + + // Given the min and max for a dataset, return suitable endpoints + // for the graphing, a good number for the number of ticks, and a + // format string so that extraneous digits are not displayed. + // returned is an array containing [min, max, nTicks, format] + $.jqplot.LinearTickGenerator = function(axis_min, axis_max, scalefact, numberTicks, keepMin, keepMax) { + // Set to preserve EITHER min OR max. + // If min is preserved, max must be free. + keepMin = (keepMin === null) ? false : keepMin; + keepMax = (keepMax === null || keepMin) ? false : keepMax; + // if endpoints are equal try to include zero otherwise include one + if (axis_min === axis_max) { + axis_max = (axis_max) ? 0 : 1; + } + + scalefact = scalefact || 1.0; + + // make sure range is positive + if (axis_max < axis_min) { + var a = axis_max; + axis_max = axis_min; + axis_min = a; + } + + var r = []; + var ss = bestLinearInterval(axis_max - axis_min, scalefact); + + var gsf = $.jqplot.getSignificantFigures; + + if (numberTicks == null) { + + // Figure out the axis min, max and number of ticks + // the min and max will be some multiple of the tick interval, + // 1*10^n, 2*10^n or 5*10^n. This gaurantees that, if the + // axis min is negative, 0 will be a tick. + if (!keepMin && !keepMax) { + r[0] = Math.floor(axis_min / ss) * ss; // min + r[1] = Math.ceil(axis_max / ss) * ss; // max + r[2] = Math.round((r[1]-r[0])/ss+1.0); // number of ticks + r[3] = bestFormatString(ss); // format string + r[4] = ss; // tick Interval + } + + else if (keepMin) { + r[0] = axis_min; // min + r[2] = Math.ceil((axis_max - axis_min) / ss + 1.0); // number of ticks + r[1] = axis_min + (r[2] - 1) * ss; // max + var digitsMin = gsf(axis_min).digitsRight; + var digitsSS = gsf(ss).digitsRight; + if (digitsMin < digitsSS) { + r[3] = bestFormatString(ss); // format string + } + else { + r[3] = '%.' + digitsMin + 'f'; + } + r[4] = ss; // tick Interval + } + + else if (keepMax) { + r[1] = axis_max; // max + r[2] = Math.ceil((axis_max - axis_min) / ss + 1.0); // number of ticks + r[0] = axis_max - (r[2] - 1) * ss; // min + var digitsMax = gsf(axis_max).digitsRight; + var digitsSS = gsf(ss).digitsRight; + if (digitsMax < digitsSS) { + r[3] = bestFormatString(ss); // format string + } + else { + r[3] = '%.' + digitsMax + 'f'; + } + r[4] = ss; // tick Interval + } + } + + else { + var tempr = []; + + // Figure out the axis min, max and number of ticks + // the min and max will be some multiple of the tick interval, + // 1*10^n, 2*10^n or 5*10^n. This gaurantees that, if the + // axis min is negative, 0 will be a tick. + tempr[0] = Math.floor(axis_min / ss) * ss; // min + tempr[1] = Math.ceil(axis_max / ss) * ss; // max + tempr[2] = Math.round((tempr[1]-tempr[0])/ss+1.0); // number of ticks + tempr[3] = bestFormatString(ss); // format string + tempr[4] = ss; // tick Interval + + // first, see if we happen to get the right number of ticks + if (tempr[2] === numberTicks) { + r = tempr; + } + + else { + + var newti = bestInterval(tempr[1] - tempr[0], numberTicks); + + r[0] = tempr[0]; // min + r[2] = numberTicks; // number of ticks + r[4] = newti; // tick interval + r[3] = bestFormatString(newti); // format string + r[1] = r[0] + (r[2] - 1) * r[4]; // max + } + } + + return r; + }; + + $.jqplot.LinearTickGenerator.bestLinearInterval = bestLinearInterval; + $.jqplot.LinearTickGenerator.bestInterval = bestInterval; + $.jqplot.LinearTickGenerator.bestLinearComponents = bestLinearComponents; + $.jqplot.LinearTickGenerator.bestConstrainedInterval = bestConstrainedInterval; + + + // class: $.jqplot.MarkerRenderer + // The default jqPlot marker renderer, rendering the points on the line. + $.jqplot.MarkerRenderer = function(options){ + // Group: Properties + + // prop: show + // whether or not to show the marker. + this.show = true; + // prop: style + // One of diamond, circle, square, x, plus, dash, filledDiamond, filledCircle, filledSquare + this.style = 'filledCircle'; + // prop: lineWidth + // size of the line for non-filled markers. + this.lineWidth = 2; + // prop: size + // Size of the marker (diameter or circle, length of edge of square, etc.) + this.size = 9.0; + // prop: color + // color of marker. Will be set to color of series by default on init. + this.color = '#666666'; + // prop: shadow + // whether or not to draw a shadow on the line + this.shadow = true; + // prop: shadowAngle + // Shadow angle in degrees + this.shadowAngle = 45; + // prop: shadowOffset + // Shadow offset from line in pixels + this.shadowOffset = 1; + // prop: shadowDepth + // Number of times shadow is stroked, each stroke offset shadowOffset from the last. + this.shadowDepth = 3; + // prop: shadowAlpha + // Alpha channel transparency of shadow. 0 = transparent. + this.shadowAlpha = '0.07'; + // prop: shadowRenderer + // Renderer that will draws the shadows on the marker. + this.shadowRenderer = new $.jqplot.ShadowRenderer(); + // prop: shapeRenderer + // Renderer that will draw the marker. + this.shapeRenderer = new $.jqplot.ShapeRenderer(); + + $.extend(true, this, options); + }; + + function getShadowRendererOptions(opts) { + var sdopt = {angle:opts.shadowAngle, offset:opts.shadowOffset, alpha:opts.shadowAlpha, lineWidth:opts.lineWidth, depth:opts.shadowDepth, closePath:true}; + if (opts.style.indexOf('filled') != -1) { + sdopt.fill = true; + } + if (opts.style.indexOf('ircle') != -1) { + sdopt.isarc = true; + sdopt.closePath = false; + } + return $.extend(true, {}, sdopt); + } + + function getShapeRendererOptions(opts) { + var shopt = {fill:false, isarc:false, strokeStyle:opts.color, fillStyle:opts.color, lineWidth:opts.lineWidth, closePath:true}; + if (opts.style.indexOf('filled') != -1) { + shopt.fill = true; + } + if (opts.style.indexOf('ircle') != -1) { + shopt.isarc = true; + shopt.closePath = false; + } + return $.extend(true, {}, shopt); + } + + $.jqplot.MarkerRenderer.prototype.init = function(options) { + $.extend(true, this, options); + }; + + $.jqplot.MarkerRenderer.prototype.drawDiamond = function(x, y, ctx, fill, options) { + var opts; + if (options == null || $.isEmptyObject(options)) { + opts = this; + } else { + opts = $.extend(true, {}, this, options); + } + var stretch = 1.2; + var dx = this.size/2/stretch; + var dy = this.size/2*stretch; + var points = [[x-dx, y], [x, y+dy], [x+dx, y], [x, y-dy]]; + if (opts.shadow) { + this.shadowRenderer.draw(ctx, points, getShadowRendererOptions(opts)); + } + this.shapeRenderer.draw(ctx, points, getShapeRendererOptions(opts)); + }; + + $.jqplot.MarkerRenderer.prototype.drawPlus = function(x, y, ctx, fill, options) { + var opts = $.extend(true, {}, this, options, {closePath:false}); + var stretch = 1.0; + var dx = opts.size/2*stretch; + var dy = opts.size/2*stretch; + var points1 = [[x, y-dy], [x, y+dy]]; + var points2 = [[x+dx, y], [x-dx, y]]; + if (opts.shadow) { + this.shadowRenderer.draw(ctx, points1, getShadowRendererOptions(opts)); + this.shadowRenderer.draw(ctx, points2, getShadowRendererOptions(opts)); + } + this.shapeRenderer.draw(ctx, points1, opts); + this.shapeRenderer.draw(ctx, points2, opts); + }; + + $.jqplot.MarkerRenderer.prototype.drawX = function(x, y, ctx, fill, options) { + var opts = $.extend(true, {}, this, options, {closePath:false}); + var stretch = 1.0; + var dx = opts.size/2*stretch; + var dy = opts.size/2*stretch; + var points1 = [[x-dx, y-dy], [x+dx, y+dy]]; + var points2 = [[x-dx, y+dy], [x+dx, y-dy]]; + if (opts.shadow) { + this.shadowRenderer.draw(ctx, points1, getShadowRendererOptions(opts)); + this.shadowRenderer.draw(ctx, points2, getShadowRendererOptions(opts)); + } + this.shapeRenderer.draw(ctx, points1, getShapeRendererOptions(opts)); + this.shapeRenderer.draw(ctx, points2, getShapeRendererOptions(opts)); + }; + + $.jqplot.MarkerRenderer.prototype.drawDash = function(x, y, ctx, fill, options) { + var opts; + if (options == null || $.isEmptyObject(options)) { + opts = this; + } else { + opts = $.extend(true, {}, this, options); + } + var stretch = 1.0; + var dx = this.size/2*stretch; + var dy = this.size/2*stretch; + var points = [[x-dx, y], [x+dx, y]]; + if (opts.shadow) { + this.shadowRenderer.draw(ctx, points); + } + this.shapeRenderer.draw(ctx, points, getShapeRendererOptions(opts)); + }; + + $.jqplot.MarkerRenderer.prototype.drawLine = function(p1, p2, ctx, fill, options) { + var opts; + if (options == null || $.isEmptyObject(options)) { + opts = this; + } else { + opts = $.extend(true, {}, this, options); + } + var points = [p1, p2]; + if (opts.shadow) { + this.shadowRenderer.draw(ctx, points, getShadowRendererOptions(opts)); + } + this.shapeRenderer.draw(ctx, points, getShapeRendererOptions(opts)); + }; + + $.jqplot.MarkerRenderer.prototype.drawSquare = function(x, y, ctx, fill, options) { + var opts; + if (options == null || $.isEmptyObject(options)) { + opts = this; + } else { + opts = $.extend(true, {}, this, options); + } + var stretch = 1.0; + var dx = this.size/2/stretch; + var dy = this.size/2*stretch; + var points = [[x-dx, y-dy], [x-dx, y+dy], [x+dx, y+dy], [x+dx, y-dy]]; + if (opts.shadow) { + this.shadowRenderer.draw(ctx, points, getShadowRendererOptions(opts)); + } + this.shapeRenderer.draw(ctx, points, getShapeRendererOptions(opts)); + }; + + $.jqplot.MarkerRenderer.prototype.drawCircle = function(x, y, ctx, fill, options) { + var opts; + if (options == null || $.isEmptyObject(options)) { + opts = this; + } else { + opts = $.extend(true, {}, this, options); + } + var radius = this.size/2; + var end = 2*Math.PI; + var points = [x, y, radius, 0, end, true]; + if (opts.shadow) { + this.shadowRenderer.draw(ctx, points, getShadowRendererOptions(opts)); + } + this.shapeRenderer.draw(ctx, points, getShapeRendererOptions(opts)); + }; + + $.jqplot.MarkerRenderer.prototype.draw = function(x, y, ctx, options) { + options = options || {}; + // hack here b/c shape renderer uses canvas based color style options + // and marker uses css style names. + if (options.show == null || options.show != false) { + if (options.color && !options.fillStyle) { + options.fillStyle = options.color; + } + if (options.color && !options.strokeStyle) { + options.strokeStyle = options.color; + } + var style = options.style || this.style; + switch (style) { + case 'diamond': + this.drawDiamond(x,y,ctx, false, options); + break; + case 'filledDiamond': + this.drawDiamond(x,y,ctx, true, options); + break; + case 'circle': + this.drawCircle(x,y,ctx, false, options); + break; + case 'filledCircle': + this.drawCircle(x,y,ctx, true, options); + break; + case 'square': + this.drawSquare(x,y,ctx, false, options); + break; + case 'filledSquare': + this.drawSquare(x,y,ctx, true, options); + break; + case 'x': + this.drawX(x,y,ctx, true, options); + break; + case 'plus': + this.drawPlus(x,y,ctx, true, options); + break; + case 'dash': + this.drawDash(x,y,ctx, true, options); + break; + case 'line': + this.drawLine(x, y, ctx, false, options); + break; + default: + this.drawDiamond(x,y,ctx, false, options); + break; + } + } + }; + + + // class: $.jqplot.shadowRenderer + // The default jqPlot shadow renderer, rendering shadows behind shapes. + $.jqplot.ShadowRenderer = function(options){ + // Group: Properties + + // prop: angle + // Angle of the shadow in degrees. Measured counter-clockwise from the x axis. + this.angle = 45; + // prop: offset + // Pixel offset at the given shadow angle of each shadow stroke from the last stroke. + this.offset = 1; + // prop: alpha + // alpha transparency of shadow stroke. + this.alpha = 0.07; + // prop: lineWidth + // width of the shadow line stroke. + this.lineWidth = 1.5; + // prop: lineJoin + // How line segments of the shadow are joined. + this.lineJoin = 'miter'; + // prop: lineCap + // how ends of the shadow line are rendered. + this.lineCap = 'round'; + // prop; closePath + // whether line path segment is closed upon itself. + this.closePath = false; + // prop: fill + // whether to fill the shape. + this.fill = false; + // prop: depth + // how many times the shadow is stroked. Each stroke will be offset by offset at angle degrees. + this.depth = 3; + this.strokeStyle = 'rgba(0,0,0,0.1)'; + // prop: isarc + // whether the shadow is an arc or not. + this.isarc = false; + + $.extend(true, this, options); + }; + + $.jqplot.ShadowRenderer.prototype.init = function(options) { + $.extend(true, this, options); + }; + + // function: draw + // draws an transparent black (i.e. gray) shadow. + // + // ctx - canvas drawing context + // points - array of points or [x, y, radius, start angle (rad), end angle (rad)] + $.jqplot.ShadowRenderer.prototype.draw = function(ctx, points, options) { + ctx.save(); + var opts = (options != null) ? options : {}; + var fill = (opts.fill != null) ? opts.fill : this.fill; + var fillRect = (opts.fillRect != null) ? opts.fillRect : this.fillRect; + var closePath = (opts.closePath != null) ? opts.closePath : this.closePath; + var offset = (opts.offset != null) ? opts.offset : this.offset; + var alpha = (opts.alpha != null) ? opts.alpha : this.alpha; + var depth = (opts.depth != null) ? opts.depth : this.depth; + var isarc = (opts.isarc != null) ? opts.isarc : this.isarc; + var linePattern = (opts.linePattern != null) ? opts.linePattern : this.linePattern; + ctx.lineWidth = (opts.lineWidth != null) ? opts.lineWidth : this.lineWidth; + ctx.lineJoin = (opts.lineJoin != null) ? opts.lineJoin : this.lineJoin; + ctx.lineCap = (opts.lineCap != null) ? opts.lineCap : this.lineCap; + ctx.strokeStyle = opts.strokeStyle || this.strokeStyle || 'rgba(0,0,0,'+alpha+')'; + ctx.fillStyle = opts.fillStyle || this.fillStyle || 'rgba(0,0,0,'+alpha+')'; + for (var j=0; j<depth; j++) { + var ctxPattern = $.jqplot.LinePattern(ctx, linePattern); + ctx.translate(Math.cos(this.angle*Math.PI/180)*offset, Math.sin(this.angle*Math.PI/180)*offset); + ctxPattern.beginPath(); + if (isarc) { + ctx.arc(points[0], points[1], points[2], points[3], points[4], true); + } + else if (fillRect) { + if (fillRect) { + ctx.fillRect(points[0], points[1], points[2], points[3]); + } + } + else if (points && points.length){ + var move = true; + for (var i=0; i<points.length; i++) { + // skip to the first non-null point and move to it. + if (points[i][0] != null && points[i][1] != null) { + if (move) { + ctxPattern.moveTo(points[i][0], points[i][1]); + move = false; + } + else { + ctxPattern.lineTo(points[i][0], points[i][1]); + } + } + else { + move = true; + } + } + + } + if (closePath) { + ctxPattern.closePath(); + } + if (fill) { + ctx.fill(); + } + else { + ctx.stroke(); + } + } + ctx.restore(); + }; + + // class: $.jqplot.shapeRenderer + // The default jqPlot shape renderer. Given a set of points will + // plot them and either stroke a line (fill = false) or fill them (fill = true). + // If a filled shape is desired, closePath = true must also be set to close + // the shape. + $.jqplot.ShapeRenderer = function(options){ + + this.lineWidth = 1.5; + // prop: linePattern + // line pattern 'dashed', 'dotted', 'solid', some combination + // of '-' and '.' characters such as '.-.' or a numerical array like + // [draw, skip, draw, skip, ...] such as [1, 10] to draw a dotted line, + // [1, 10, 20, 10] to draw a dot-dash line, and so on. + this.linePattern = 'solid'; + // prop: lineJoin + // How line segments of the shadow are joined. + this.lineJoin = 'miter'; + // prop: lineCap + // how ends of the shadow line are rendered. + this.lineCap = 'round'; + // prop; closePath + // whether line path segment is closed upon itself. + this.closePath = false; + // prop: fill + // whether to fill the shape. + this.fill = false; + // prop: isarc + // whether the shadow is an arc or not. + this.isarc = false; + // prop: fillRect + // true to draw shape as a filled rectangle. + this.fillRect = false; + // prop: strokeRect + // true to draw shape as a stroked rectangle. + this.strokeRect = false; + // prop: clearRect + // true to cear a rectangle. + this.clearRect = false; + // prop: strokeStyle + // css color spec for the stoke style + this.strokeStyle = '#999999'; + // prop: fillStyle + // css color spec for the fill style. + this.fillStyle = '#999999'; + + $.extend(true, this, options); + }; + + $.jqplot.ShapeRenderer.prototype.init = function(options) { + $.extend(true, this, options); + }; + + // function: draw + // draws the shape. + // + // ctx - canvas drawing context + // points - array of points for shapes or + // [x, y, width, height] for rectangles or + // [x, y, radius, start angle (rad), end angle (rad)] for circles and arcs. + $.jqplot.ShapeRenderer.prototype.draw = function(ctx, points, options) { + ctx.save(); + var opts = (options != null) ? options : {}; + var fill = (opts.fill != null) ? opts.fill : this.fill; + var closePath = (opts.closePath != null) ? opts.closePath : this.closePath; + var fillRect = (opts.fillRect != null) ? opts.fillRect : this.fillRect; + var strokeRect = (opts.strokeRect != null) ? opts.strokeRect : this.strokeRect; + var clearRect = (opts.clearRect != null) ? opts.clearRect : this.clearRect; + var isarc = (opts.isarc != null) ? opts.isarc : this.isarc; + var linePattern = (opts.linePattern != null) ? opts.linePattern : this.linePattern; + var ctxPattern = $.jqplot.LinePattern(ctx, linePattern); + ctx.lineWidth = opts.lineWidth || this.lineWidth; + ctx.lineJoin = opts.lineJoin || this.lineJoin; + ctx.lineCap = opts.lineCap || this.lineCap; + ctx.strokeStyle = (opts.strokeStyle || opts.color) || this.strokeStyle; + ctx.fillStyle = opts.fillStyle || this.fillStyle; + ctx.beginPath(); + if (isarc) { + ctx.arc(points[0], points[1], points[2], points[3], points[4], true); + if (closePath) { + ctx.closePath(); + } + if (fill) { + ctx.fill(); + } + else { + ctx.stroke(); + } + ctx.restore(); + return; + } + else if (clearRect) { + ctx.clearRect(points[0], points[1], points[2], points[3]); + ctx.restore(); + return; + } + else if (fillRect || strokeRect) { + if (fillRect) { + ctx.fillRect(points[0], points[1], points[2], points[3]); + } + if (strokeRect) { + ctx.strokeRect(points[0], points[1], points[2], points[3]); + ctx.restore(); + return; + } + } + else if (points && points.length){ + var move = true; + for (var i=0; i<points.length; i++) { + // skip to the first non-null point and move to it. + if (points[i][0] != null && points[i][1] != null) { + if (move) { + ctxPattern.moveTo(points[i][0], points[i][1]); + move = false; + } + else { + ctxPattern.lineTo(points[i][0], points[i][1]); + } + } + else { + move = true; + } + } + if (closePath) { + ctxPattern.closePath(); + } + if (fill) { + ctx.fill(); + } + else { + ctx.stroke(); + } + } + ctx.restore(); + }; + + // class $.jqplot.TableLegendRenderer + // The default legend renderer for jqPlot. + $.jqplot.TableLegendRenderer = function(){ + // + }; + + $.jqplot.TableLegendRenderer.prototype.init = function(options) { + $.extend(true, this, options); + }; + + $.jqplot.TableLegendRenderer.prototype.addrow = function (label, color, pad, reverse) { + var rs = (pad) ? this.rowSpacing+'px' : '0px'; + var tr; + var td; + var elem; + var div0; + var div1; + elem = document.createElement('tr'); + tr = $(elem); + tr.addClass('jqplot-table-legend'); + elem = null; + + if (reverse){ + tr.prependTo(this._elem); + } + + else{ + tr.appendTo(this._elem); + } + + if (this.showSwatches) { + td = $(document.createElement('td')); + td.addClass('jqplot-table-legend jqplot-table-legend-swatch'); + td.css({textAlign: 'center', paddingTop: rs}); + + div0 = $(document.createElement('div')); + div0.addClass('jqplot-table-legend-swatch-outline'); + div1 = $(document.createElement('div')); + div1.addClass('jqplot-table-legend-swatch'); + div1.css({backgroundColor: color, borderColor: color}); + + tr.append(td.append(div0.append(div1))); + + // $('<td class="jqplot-table-legend" style="text-align:center;padding-top:'+rs+';">'+ + // '<div><div class="jqplot-table-legend-swatch" style="background-color:'+color+';border-color:'+color+';"></div>'+ + // '</div></td>').appendTo(tr); + } + if (this.showLabels) { + td = $(document.createElement('td')); + td.addClass('jqplot-table-legend jqplot-table-legend-label'); + td.css('paddingTop', rs); + tr.append(td); + + // elem = $('<td class="jqplot-table-legend" style="padding-top:'+rs+';"></td>'); + // elem.appendTo(tr); + if (this.escapeHtml) { + td.text(label); + } + else { + td.html(label); + } + } + td = null; + div0 = null; + div1 = null; + tr = null; + elem = null; + }; + + // called with scope of legend + $.jqplot.TableLegendRenderer.prototype.draw = function() { + if (this._elem) { + this._elem.emptyForce(); + this._elem = null; + } + + if (this.show) { + var series = this._series; + // make a table. one line label per row. + var elem = document.createElement('table'); + this._elem = $(elem); + this._elem.addClass('jqplot-table-legend'); + + var ss = {position:'absolute'}; + if (this.background) { + ss['background'] = this.background; + } + if (this.border) { + ss['border'] = this.border; + } + if (this.fontSize) { + ss['fontSize'] = this.fontSize; + } + if (this.fontFamily) { + ss['fontFamily'] = this.fontFamily; + } + if (this.textColor) { + ss['textColor'] = this.textColor; + } + if (this.marginTop != null) { + ss['marginTop'] = this.marginTop; + } + if (this.marginBottom != null) { + ss['marginBottom'] = this.marginBottom; + } + if (this.marginLeft != null) { + ss['marginLeft'] = this.marginLeft; + } + if (this.marginRight != null) { + ss['marginRight'] = this.marginRight; + } + + + var pad = false, + reverse = false, + s; + for (var i = 0; i< series.length; i++) { + s = series[i]; + if (s._stack || s.renderer.constructor == $.jqplot.BezierCurveRenderer){ + reverse = true; + } + if (s.show && s.showLabel) { + var lt = this.labels[i] || s.label.toString(); + if (lt) { + var color = s.color; + if (reverse && i < series.length - 1){ + pad = true; + } + else if (reverse && i == series.length - 1){ + pad = false; + } + this.renderer.addrow.call(this, lt, color, pad, reverse); + pad = true; + } + // let plugins add more rows to legend. Used by trend line plugin. + for (var j=0; j<$.jqplot.addLegendRowHooks.length; j++) { + var item = $.jqplot.addLegendRowHooks[j].call(this, s); + if (item) { + this.renderer.addrow.call(this, item.label, item.color, pad); + pad = true; + } + } + lt = null; + } + } + } + return this._elem; + }; + + $.jqplot.TableLegendRenderer.prototype.pack = function(offsets) { + if (this.show) { + if (this.placement == 'insideGrid') { + switch (this.location) { + case 'nw': + var a = offsets.left; + var b = offsets.top; + this._elem.css('left', a); + this._elem.css('top', b); + break; + case 'n': + var a = (offsets.left + (this._plotDimensions.width - offsets.right))/2 - this.getWidth()/2; + var b = offsets.top; + this._elem.css('left', a); + this._elem.css('top', b); + break; + case 'ne': + var a = offsets.right; + var b = offsets.top; + this._elem.css({right:a, top:b}); + break; + case 'e': + var a = offsets.right; + var b = (offsets.top + (this._plotDimensions.height - offsets.bottom))/2 - this.getHeight()/2; + this._elem.css({right:a, top:b}); + break; + case 'se': + var a = offsets.right; + var b = offsets.bottom; + this._elem.css({right:a, bottom:b}); + break; + case 's': + var a = (offsets.left + (this._plotDimensions.width - offsets.right))/2 - this.getWidth()/2; + var b = offsets.bottom; + this._elem.css({left:a, bottom:b}); + break; + case 'sw': + var a = offsets.left; + var b = offsets.bottom; + this._elem.css({left:a, bottom:b}); + break; + case 'w': + var a = offsets.left; + var b = (offsets.top + (this._plotDimensions.height - offsets.bottom))/2 - this.getHeight()/2; + this._elem.css({left:a, top:b}); + break; + default: // same as 'se' + var a = offsets.right; + var b = offsets.bottom; + this._elem.css({right:a, bottom:b}); + break; + } + + } + else if (this.placement == 'outside'){ + switch (this.location) { + case 'nw': + var a = this._plotDimensions.width - offsets.left; + var b = offsets.top; + this._elem.css('right', a); + this._elem.css('top', b); + break; + case 'n': + var a = (offsets.left + (this._plotDimensions.width - offsets.right))/2 - this.getWidth()/2; + var b = this._plotDimensions.height - offsets.top; + this._elem.css('left', a); + this._elem.css('bottom', b); + break; + case 'ne': + var a = this._plotDimensions.width - offsets.right; + var b = offsets.top; + this._elem.css({left:a, top:b}); + break; + case 'e': + var a = this._plotDimensions.width - offsets.right; + var b = (offsets.top + (this._plotDimensions.height - offsets.bottom))/2 - this.getHeight()/2; + this._elem.css({left:a, top:b}); + break; + case 'se': + var a = this._plotDimensions.width - offsets.right; + var b = offsets.bottom; + this._elem.css({left:a, bottom:b}); + break; + case 's': + var a = (offsets.left + (this._plotDimensions.width - offsets.right))/2 - this.getWidth()/2; + var b = this._plotDimensions.height - offsets.bottom; + this._elem.css({left:a, top:b}); + break; + case 'sw': + var a = this._plotDimensions.width - offsets.left; + var b = offsets.bottom; + this._elem.css({right:a, bottom:b}); + break; + case 'w': + var a = this._plotDimensions.width - offsets.left; + var b = (offsets.top + (this._plotDimensions.height - offsets.bottom))/2 - this.getHeight()/2; + this._elem.css({right:a, top:b}); + break; + default: // same as 'se' + var a = offsets.right; + var b = offsets.bottom; + this._elem.css({right:a, bottom:b}); + break; + } + } + else { + switch (this.location) { + case 'nw': + this._elem.css({left:0, top:offsets.top}); + break; + case 'n': + var a = (offsets.left + (this._plotDimensions.width - offsets.right))/2 - this.getWidth()/2; + this._elem.css({left: a, top:offsets.top}); + break; + case 'ne': + this._elem.css({right:0, top:offsets.top}); + break; + case 'e': + var b = (offsets.top + (this._plotDimensions.height - offsets.bottom))/2 - this.getHeight()/2; + this._elem.css({right:offsets.right, top:b}); + break; + case 'se': + this._elem.css({right:offsets.right, bottom:offsets.bottom}); + break; + case 's': + var a = (offsets.left + (this._plotDimensions.width - offsets.right))/2 - this.getWidth()/2; + this._elem.css({left: a, bottom:offsets.bottom}); + break; + case 'sw': + this._elem.css({left:offsets.left, bottom:offsets.bottom}); + break; + case 'w': + var b = (offsets.top + (this._plotDimensions.height - offsets.bottom))/2 - this.getHeight()/2; + this._elem.css({left:offsets.left, top:b}); + break; + default: // same as 'se' + this._elem.css({right:offsets.right, bottom:offsets.bottom}); + break; + } + } + } + }; + + /** + * Class: $.jqplot.ThemeEngine + * Theme Engine provides a programatic way to change some of the more + * common jqplot styling options such as fonts, colors and grid options. + * A theme engine instance is created with each plot. The theme engine + * manages a collection of themes which can be modified, added to, or + * applied to the plot. + * + * The themeEngine class is not instantiated directly. + * When a plot is initialized, the current plot options are scanned + * an a default theme named "Default" is created. This theme is + * used as the basis for other themes added to the theme engine and + * is always available. + * + * A theme is a simple javascript object with styling parameters for + * various entities of the plot. A theme has the form: + * + * + * > { + * > _name:f "Default", + * > target: { + * > backgroundColor: "transparent" + * > }, + * > legend: { + * > textColor: null, + * > fontFamily: null, + * > fontSize: null, + * > border: null, + * > background: null + * > }, + * > title: { + * > textColor: "rgb(102, 102, 102)", + * > fontFamily: "'Trebuchet MS',Arial,Helvetica,sans-serif", + * > fontSize: "19.2px", + * > textAlign: "center" + * > }, + * > seriesStyles: {}, + * > series: [{ + * > color: "#4bb2c5", + * > lineWidth: 2.5, + * > linePattern: "solid", + * > shadow: true, + * > fillColor: "#4bb2c5", + * > showMarker: true, + * > markerOptions: { + * > color: "#4bb2c5", + * > show: true, + * > style: 'filledCircle', + * > lineWidth: 1.5, + * > size: 4, + * > shadow: true + * > } + * > }], + * > grid: { + * > drawGridlines: true, + * > gridLineColor: "#cccccc", + * > gridLineWidth: 1, + * > backgroundColor: "#fffdf6", + * > borderColor: "#999999", + * > borderWidth: 2, + * > shadow: true + * > }, + * > axesStyles: { + * > label: {}, + * > ticks: {} + * > }, + * > axes: { + * > xaxis: { + * > borderColor: "#999999", + * > borderWidth: 2, + * > ticks: { + * > show: true, + * > showGridline: true, + * > showLabel: true, + * > showMark: true, + * > size: 4, + * > textColor: "", + * > whiteSpace: "nowrap", + * > fontSize: "12px", + * > fontFamily: "'Trebuchet MS',Arial,Helvetica,sans-serif" + * > }, + * > label: { + * > textColor: "rgb(102, 102, 102)", + * > whiteSpace: "normal", + * > fontSize: "14.6667px", + * > fontFamily: "'Trebuchet MS',Arial,Helvetica,sans-serif", + * > fontWeight: "400" + * > } + * > }, + * > yaxis: { + * > borderColor: "#999999", + * > borderWidth: 2, + * > ticks: { + * > show: true, + * > showGridline: true, + * > showLabel: true, + * > showMark: true, + * > size: 4, + * > textColor: "", + * > whiteSpace: "nowrap", + * > fontSize: "12px", + * > fontFamily: "'Trebuchet MS',Arial,Helvetica,sans-serif" + * > }, + * > label: { + * > textColor: null, + * > whiteSpace: null, + * > fontSize: null, + * > fontFamily: null, + * > fontWeight: null + * > } + * > }, + * > x2axis: {... + * > }, + * > ... + * > y9axis: {... + * > } + * > } + * > } + * + * "seriesStyles" is a style object that will be applied to all series in the plot. + * It will forcibly override any styles applied on the individual series. "axesStyles" is + * a style object that will be applied to all axes in the plot. It will also forcibly + * override any styles on the individual axes. + * + * The example shown above has series options for a line series. Options for other + * series types are shown below: + * + * Bar Series: + * + * > { + * > color: "#4bb2c5", + * > seriesColors: ["#4bb2c5", "#EAA228", "#c5b47f", "#579575", "#839557", "#958c12", "#953579", "#4b5de4", "#d8b83f", "#ff5800", "#0085cc", "#c747a3", "#cddf54", "#FBD178", "#26B4E3", "#bd70c7"], + * > lineWidth: 2.5, + * > shadow: true, + * > barPadding: 2, + * > barMargin: 10, + * > barWidth: 15.09375, + * > highlightColors: ["rgb(129,201,214)", "rgb(129,201,214)", "rgb(129,201,214)", "rgb(129,201,214)", "rgb(129,201,214)", "rgb(129,201,214)", "rgb(129,201,214)", "rgb(129,201,214)"] + * > } + * + * Pie Series: + * + * > { + * > seriesColors: ["#4bb2c5", "#EAA228", "#c5b47f", "#579575", "#839557", "#958c12", "#953579", "#4b5de4", "#d8b83f", "#ff5800", "#0085cc", "#c747a3", "#cddf54", "#FBD178", "#26B4E3", "#bd70c7"], + * > padding: 20, + * > sliceMargin: 0, + * > fill: true, + * > shadow: true, + * > startAngle: 0, + * > lineWidth: 2.5, + * > highlightColors: ["rgb(129,201,214)", "rgb(240,189,104)", "rgb(214,202,165)", "rgb(137,180,158)", "rgb(168,180,137)", "rgb(180,174,89)", "rgb(180,113,161)", "rgb(129,141,236)", "rgb(227,205,120)", "rgb(255,138,76)", "rgb(76,169,219)", "rgb(215,126,190)", "rgb(220,232,135)", "rgb(200,167,96)", "rgb(103,202,235)", "rgb(208,154,215)"] + * > } + * + * Funnel Series: + * + * > { + * > color: "#4bb2c5", + * > lineWidth: 2, + * > shadow: true, + * > padding: { + * > top: 20, + * > right: 20, + * > bottom: 20, + * > left: 20 + * > }, + * > sectionMargin: 6, + * > seriesColors: ["#4bb2c5", "#EAA228", "#c5b47f", "#579575", "#839557", "#958c12", "#953579", "#4b5de4", "#d8b83f", "#ff5800", "#0085cc", "#c747a3", "#cddf54", "#FBD178", "#26B4E3", "#bd70c7"], + * > highlightColors: ["rgb(147,208,220)", "rgb(242,199,126)", "rgb(220,210,178)", "rgb(154,191,172)", "rgb(180,191,154)", "rgb(191,186,112)", "rgb(191,133,174)", "rgb(147,157,238)", "rgb(231,212,139)", "rgb(255,154,102)", "rgb(102,181,224)", "rgb(221,144,199)", "rgb(225,235,152)", "rgb(200,167,96)", "rgb(124,210,238)", "rgb(215,169,221)"] + * > } + * + */ + $.jqplot.ThemeEngine = function(){ + // Group: Properties + // + // prop: themes + // hash of themes managed by the theme engine. + // Indexed by theme name. + this.themes = {}; + // prop: activeTheme + // Pointer to currently active theme + this.activeTheme=null; + + }; + + // called with scope of plot + $.jqplot.ThemeEngine.prototype.init = function() { + // get the Default theme from the current plot settings. + var th = new $.jqplot.Theme({_name:'Default'}); + var n, i, nn; + + for (n in th.target) { + if (n == "textColor") { + th.target[n] = this.target.css('color'); + } + else { + th.target[n] = this.target.css(n); + } + } + + if (this.title.show && this.title._elem) { + for (n in th.title) { + if (n == "textColor") { + th.title[n] = this.title._elem.css('color'); + } + else { + th.title[n] = this.title._elem.css(n); + } + } + } + + for (n in th.grid) { + th.grid[n] = this.grid[n]; + } + if (th.grid.backgroundColor == null && this.grid.background != null) { + th.grid.backgroundColor = this.grid.background; + } + if (this.legend.show && this.legend._elem) { + for (n in th.legend) { + if (n == 'textColor') { + th.legend[n] = this.legend._elem.css('color'); + } + else { + th.legend[n] = this.legend._elem.css(n); + } + } + } + var s; + + for (i=0; i<this.series.length; i++) { + s = this.series[i]; + if (s.renderer.constructor == $.jqplot.LineRenderer) { + th.series.push(new LineSeriesProperties()); + } + else if (s.renderer.constructor == $.jqplot.BarRenderer) { + th.series.push(new BarSeriesProperties()); + } + else if (s.renderer.constructor == $.jqplot.PieRenderer) { + th.series.push(new PieSeriesProperties()); + } + else if (s.renderer.constructor == $.jqplot.DonutRenderer) { + th.series.push(new DonutSeriesProperties()); + } + else if (s.renderer.constructor == $.jqplot.FunnelRenderer) { + th.series.push(new FunnelSeriesProperties()); + } + else if (s.renderer.constructor == $.jqplot.MeterGaugeRenderer) { + th.series.push(new MeterSeriesProperties()); + } + else { + th.series.push({}); + } + for (n in th.series[i]) { + th.series[i][n] = s[n]; + } + } + var a, ax; + for (n in this.axes) { + ax = this.axes[n]; + a = th.axes[n] = new AxisProperties(); + a.borderColor = ax.borderColor; + a.borderWidth = ax.borderWidth; + if (ax._ticks && ax._ticks[0]) { + for (nn in a.ticks) { + if (ax._ticks[0].hasOwnProperty(nn)) { + a.ticks[nn] = ax._ticks[0][nn]; + } + else if (ax._ticks[0]._elem){ + a.ticks[nn] = ax._ticks[0]._elem.css(nn); + } + } + } + if (ax._label && ax._label.show) { + for (nn in a.label) { + // a.label[nn] = ax._label._elem.css(nn); + if (ax._label[nn]) { + a.label[nn] = ax._label[nn]; + } + else if (ax._label._elem){ + if (nn == 'textColor') { + a.label[nn] = ax._label._elem.css('color'); + } + else { + a.label[nn] = ax._label._elem.css(nn); + } + } + } + } + } + this.themeEngine._add(th); + this.themeEngine.activeTheme = this.themeEngine.themes[th._name]; + }; + /** + * Group: methods + * + * method: get + * + * Get and return the named theme or the active theme if no name given. + * + * parameter: + * + * name - name of theme to get. + * + * returns: + * + * Theme instance of given name. + */ + $.jqplot.ThemeEngine.prototype.get = function(name) { + if (!name) { + // return the active theme + return this.activeTheme; + } + else { + return this.themes[name]; + } + }; + + function numericalOrder(a,b) { return a-b; } + + /** + * method: getThemeNames + * + * Return the list of theme names in this manager in alpha-numerical order. + * + * parameter: + * + * None + * + * returns: + * + * A the list of theme names in this manager in alpha-numerical order. + */ + $.jqplot.ThemeEngine.prototype.getThemeNames = function() { + var tn = []; + for (var n in this.themes) { + tn.push(n); + } + return tn.sort(numericalOrder); + }; + + /** + * method: getThemes + * + * Return a list of themes in alpha-numerical order by name. + * + * parameter: + * + * None + * + * returns: + * + * A list of themes in alpha-numerical order by name. + */ + $.jqplot.ThemeEngine.prototype.getThemes = function() { + var tn = []; + var themes = []; + for (var n in this.themes) { + tn.push(n); + } + tn.sort(numericalOrder); + for (var i=0; i<tn.length; i++) { + themes.push(this.themes[tn[i]]); + } + return themes; + }; + + $.jqplot.ThemeEngine.prototype.activate = function(plot, name) { + // sometimes need to redraw whole plot. + var redrawPlot = false; + if (!name && this.activeTheme && this.activeTheme._name) { + name = this.activeTheme._name; + } + if (!this.themes.hasOwnProperty(name)) { + throw new Error("No theme of that name"); + } + else { + var th = this.themes[name]; + this.activeTheme = th; + var val, checkBorderColor = false, checkBorderWidth = false; + var arr = ['xaxis', 'x2axis', 'yaxis', 'y2axis']; + + for (i=0; i<arr.length; i++) { + var ax = arr[i]; + if (th.axesStyles.borderColor != null) { + plot.axes[ax].borderColor = th.axesStyles.borderColor; + } + if (th.axesStyles.borderWidth != null) { + plot.axes[ax].borderWidth = th.axesStyles.borderWidth; + } + } + + for (var axname in plot.axes) { + var axis = plot.axes[axname]; + if (axis.show) { + var thaxis = th.axes[axname] || {}; + var thaxstyle = th.axesStyles; + var thax = $.jqplot.extend(true, {}, thaxis, thaxstyle); + val = (th.axesStyles.borderColor != null) ? th.axesStyles.borderColor : thax.borderColor; + if (thax.borderColor != null) { + axis.borderColor = thax.borderColor; + redrawPlot = true; + } + val = (th.axesStyles.borderWidth != null) ? th.axesStyles.borderWidth : thax.borderWidth; + if (thax.borderWidth != null) { + axis.borderWidth = thax.borderWidth; + redrawPlot = true; + } + if (axis._ticks && axis._ticks[0]) { + for (var nn in thax.ticks) { + // val = null; + // if (th.axesStyles.ticks && th.axesStyles.ticks[nn] != null) { + // val = th.axesStyles.ticks[nn]; + // } + // else if (thax.ticks[nn] != null){ + // val = thax.ticks[nn] + // } + val = thax.ticks[nn]; + if (val != null) { + axis.tickOptions[nn] = val; + axis._ticks = []; + redrawPlot = true; + } + } + } + if (axis._label && axis._label.show) { + for (var nn in thax.label) { + // val = null; + // if (th.axesStyles.label && th.axesStyles.label[nn] != null) { + // val = th.axesStyles.label[nn]; + // } + // else if (thax.label && thax.label[nn] != null){ + // val = thax.label[nn] + // } + val = thax.label[nn]; + if (val != null) { + axis.labelOptions[nn] = val; + redrawPlot = true; + } + } + } + + } + } + + for (var n in th.grid) { + if (th.grid[n] != null) { + plot.grid[n] = th.grid[n]; + } + } + if (!redrawPlot) { + plot.grid.draw(); + } + + if (plot.legend.show) { + for (n in th.legend) { + if (th.legend[n] != null) { + plot.legend[n] = th.legend[n]; + } + } + } + if (plot.title.show) { + for (n in th.title) { + if (th.title[n] != null) { + plot.title[n] = th.title[n]; + } + } + } + + var i; + for (i=0; i<th.series.length; i++) { + var opts = {}; + var redrawSeries = false; + for (n in th.series[i]) { + val = (th.seriesStyles[n] != null) ? th.seriesStyles[n] : th.series[i][n]; + if (val != null) { + opts[n] = val; + if (n == 'color') { + plot.series[i].renderer.shapeRenderer.fillStyle = val; + plot.series[i].renderer.shapeRenderer.strokeStyle = val; + plot.series[i][n] = val; + } + else if ((n == 'lineWidth') || (n == 'linePattern')) { + plot.series[i].renderer.shapeRenderer[n] = val; + plot.series[i][n] = val; + } + else if (n == 'markerOptions') { + merge (plot.series[i].markerOptions, val); + merge (plot.series[i].markerRenderer, val); + } + else { + plot.series[i][n] = val; + } + redrawPlot = true; + } + } + } + + if (redrawPlot) { + plot.target.empty(); + plot.draw(); + } + + for (n in th.target) { + if (th.target[n] != null) { + plot.target.css(n, th.target[n]); + } + } + } + + }; + + $.jqplot.ThemeEngine.prototype._add = function(theme, name) { + if (name) { + theme._name = name; + } + if (!theme._name) { + theme._name = Date.parse(new Date()); + } + if (!this.themes.hasOwnProperty(theme._name)) { + this.themes[theme._name] = theme; + } + else { + throw new Error("jqplot.ThemeEngine Error: Theme already in use"); + } + }; + + // method remove + // Delete the named theme, return true on success, false on failure. + + + /** + * method: remove + * + * Remove the given theme from the themeEngine. + * + * parameters: + * + * name - name of the theme to remove. + * + * returns: + * + * true on success, false on failure. + */ + $.jqplot.ThemeEngine.prototype.remove = function(name) { + if (name == 'Default') { + return false; + } + return delete this.themes[name]; + }; + + /** + * method: newTheme + * + * Create a new theme based on the default theme, adding it the themeEngine. + * + * parameters: + * + * name - name of the new theme. + * obj - optional object of styles to be applied to this new theme. + * + * returns: + * + * new Theme object. + */ + $.jqplot.ThemeEngine.prototype.newTheme = function(name, obj) { + if (typeof(name) == 'object') { + obj = obj || name; + name = null; + } + if (obj && obj._name) { + name = obj._name; + } + else { + name = name || Date.parse(new Date()); + } + // var th = new $.jqplot.Theme(name); + var th = this.copy(this.themes['Default']._name, name); + $.jqplot.extend(th, obj); + return th; + }; + + // function clone(obj) { + // return eval(obj.toSource()); + // } + + function clone(obj){ + if(obj == null || typeof(obj) != 'object'){ + return obj; + } + + var temp = new obj.constructor(); + for(var key in obj){ + temp[key] = clone(obj[key]); + } + return temp; + } + + $.jqplot.clone = clone; + + function merge(obj1, obj2) { + if (obj2 == null || typeof(obj2) != 'object') { + return; + } + for (var key in obj2) { + if (key == 'highlightColors') { + obj1[key] = clone(obj2[key]); + } + if (obj2[key] != null && typeof(obj2[key]) == 'object') { + if (!obj1.hasOwnProperty(key)) { + obj1[key] = {}; + } + merge(obj1[key], obj2[key]); + } + else { + obj1[key] = obj2[key]; + } + } + } + + $.jqplot.merge = merge; + + // Use the jQuery 1.3.2 extend function since behaviour in jQuery 1.4 seems problematic + $.jqplot.extend = function() { + // copy reference to target object + var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !toString.call(target) === "[object Function]" ) { + target = {}; + } + + for ( ; i < length; i++ ){ + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( var name in options ) { + var src = target[ name ], copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging object values + if ( deep && copy && typeof copy === "object" && !copy.nodeType ) { + target[ name ] = $.jqplot.extend( deep, + // Never move original objects, clone them + src || ( copy.length != null ? [ ] : { } ) + , copy ); + } + // Don't bring in undefined values + else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + // Return the modified object + return target; + }; + + /** + * method: rename + * + * Rename a theme. + * + * parameters: + * + * oldName - current name of the theme. + * newName - desired name of the theme. + * + * returns: + * + * new Theme object. + */ + $.jqplot.ThemeEngine.prototype.rename = function (oldName, newName) { + if (oldName == 'Default' || newName == 'Default') { + throw new Error ("jqplot.ThemeEngine Error: Cannot rename from/to Default"); + } + if (this.themes.hasOwnProperty(newName)) { + throw new Error ("jqplot.ThemeEngine Error: New name already in use."); + } + else if (this.themes.hasOwnProperty(oldName)) { + var th = this.copy (oldName, newName); + this.remove(oldName); + return th; + } + throw new Error("jqplot.ThemeEngine Error: Old name or new name invalid"); + }; + + /** + * method: copy + * + * Create a copy of an existing theme in the themeEngine, adding it the themeEngine. + * + * parameters: + * + * sourceName - name of the existing theme. + * targetName - name of the copy. + * obj - optional object of style parameter to apply to the new theme. + * + * returns: + * + * new Theme object. + */ + $.jqplot.ThemeEngine.prototype.copy = function (sourceName, targetName, obj) { + if (targetName == 'Default') { + throw new Error ("jqplot.ThemeEngine Error: Cannot copy over Default theme"); + } + if (!this.themes.hasOwnProperty(sourceName)) { + var s = "jqplot.ThemeEngine Error: Source name invalid"; + throw new Error(s); + } + if (this.themes.hasOwnProperty(targetName)) { + var s = "jqplot.ThemeEngine Error: Target name invalid"; + throw new Error(s); + } + else { + var th = clone(this.themes[sourceName]); + th._name = targetName; + $.jqplot.extend(true, th, obj); + this._add(th); + return th; + } + }; + + + $.jqplot.Theme = function(name, obj) { + if (typeof(name) == 'object') { + obj = obj || name; + name = null; + } + name = name || Date.parse(new Date()); + this._name = name; + this.target = { + backgroundColor: null + }; + this.legend = { + textColor: null, + fontFamily: null, + fontSize: null, + border: null, + background: null + }; + this.title = { + textColor: null, + fontFamily: null, + fontSize: null, + textAlign: null + }; + this.seriesStyles = {}; + this.series = []; + this.grid = { + drawGridlines: null, + gridLineColor: null, + gridLineWidth: null, + backgroundColor: null, + borderColor: null, + borderWidth: null, + shadow: null + }; + this.axesStyles = {label:{}, ticks:{}}; + this.axes = {}; + if (typeof(obj) == 'string') { + this._name = obj; + } + else if(typeof(obj) == 'object') { + $.jqplot.extend(true, this, obj); + } + }; + + var AxisProperties = function() { + this.borderColor = null; + this.borderWidth = null; + this.ticks = new AxisTicks(); + this.label = new AxisLabel(); + }; + + var AxisTicks = function() { + this.show = null; + this.showGridline = null; + this.showLabel = null; + this.showMark = null; + this.size = null; + this.textColor = null; + this.whiteSpace = null; + this.fontSize = null; + this.fontFamily = null; + }; + + var AxisLabel = function() { + this.textColor = null; + this.whiteSpace = null; + this.fontSize = null; + this.fontFamily = null; + this.fontWeight = null; + }; + + var LineSeriesProperties = function() { + this.color=null; + this.lineWidth=null; + this.linePattern=null; + this.shadow=null; + this.fillColor=null; + this.showMarker=null; + this.markerOptions = new MarkerOptions(); + }; + + var MarkerOptions = function() { + this.show = null; + this.style = null; + this.lineWidth = null; + this.size = null; + this.color = null; + this.shadow = null; + }; + + var BarSeriesProperties = function() { + this.color=null; + this.seriesColors=null; + this.lineWidth=null; + this.shadow=null; + this.barPadding=null; + this.barMargin=null; + this.barWidth=null; + this.highlightColors=null; + }; + + var PieSeriesProperties = function() { + this.seriesColors=null; + this.padding=null; + this.sliceMargin=null; + this.fill=null; + this.shadow=null; + this.startAngle=null; + this.lineWidth=null; + this.highlightColors=null; + }; + + var DonutSeriesProperties = function() { + this.seriesColors=null; + this.padding=null; + this.sliceMargin=null; + this.fill=null; + this.shadow=null; + this.startAngle=null; + this.lineWidth=null; + this.innerDiameter=null; + this.thickness=null; + this.ringMargin=null; + this.highlightColors=null; + }; + + var FunnelSeriesProperties = function() { + this.color=null; + this.lineWidth=null; + this.shadow=null; + this.padding=null; + this.sectionMargin=null; + this.seriesColors=null; + this.highlightColors=null; + }; + + var MeterSeriesProperties = function() { + this.padding=null; + this.backgroundColor=null; + this.ringColor=null; + this.tickColor=null; + this.ringWidth=null; + this.intervalColors=null; + this.intervalInnerRadius=null; + this.intervalOuterRadius=null; + this.hubRadius=null; + this.needleThickness=null; + this.needlePad=null; + }; + + + + + $.fn.jqplotChildText = function() { + return $(this).contents().filter(function() { + return this.nodeType == 3; // Node.TEXT_NODE not defined in I7 + }).text(); + }; + + // Returns font style as abbreviation for "font" property. + $.fn.jqplotGetComputedFontStyle = function() { + var css = window.getComputedStyle ? window.getComputedStyle(this[0], "") : this[0].currentStyle; + var attrs = css['font-style'] ? ['font-style', 'font-weight', 'font-size', 'font-family'] : ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily']; + var style = []; + + for (var i=0 ; i < attrs.length; ++i) { + var attr = String(css[attrs[i]]); + + if (attr && attr != 'normal') { + style.push(attr); + } + } + return style.join(' '); + }; + + /** + * Namespace: $.fn + * jQuery namespace to attach functions to jQuery elements. + * + */ + + $.fn.jqplotToImageCanvas = function(options) { + + options = options || {}; + var x_offset = (options.x_offset == null) ? 0 : options.x_offset; + var y_offset = (options.y_offset == null) ? 0 : options.y_offset; + var backgroundColor = (options.backgroundColor == null) ? 'rgb(255,255,255)' : options.backgroundColor; + + if ($(this).width() == 0 || $(this).height() == 0) { + return null; + } + + // excanvas and hence IE < 9 do not support toDataURL and cannot export images. + if ($.jqplot.use_excanvas) { + return null; + } + + var newCanvas = document.createElement("canvas"); + var h = $(this).outerHeight(true); + var w = $(this).outerWidth(true); + var offs = $(this).offset(); + var plotleft = offs.left; + var plottop = offs.top; + var transx = 0, transy = 0; + + // have to check if any elements are hanging outside of plot area before rendering, + // since changing width of canvas will erase canvas. + + var clses = ['jqplot-table-legend', 'jqplot-xaxis-tick', 'jqplot-x2axis-tick', 'jqplot-yaxis-tick', 'jqplot-y2axis-tick', 'jqplot-y3axis-tick', + 'jqplot-y4axis-tick', 'jqplot-y5axis-tick', 'jqplot-y6axis-tick', 'jqplot-y7axis-tick', 'jqplot-y8axis-tick', 'jqplot-y9axis-tick', + 'jqplot-xaxis-label', 'jqplot-x2axis-label', 'jqplot-yaxis-label', 'jqplot-y2axis-label', 'jqplot-y3axis-label', 'jqplot-y4axis-label', + 'jqplot-y5axis-label', 'jqplot-y6axis-label', 'jqplot-y7axis-label', 'jqplot-y8axis-label', 'jqplot-y9axis-label' ]; + + var temptop, templeft, tempbottom, tempright; + + for (var i = 0; i < clses.length; i++) { + $(this).find('.'+clses[i]).each(function() { + temptop = $(this).offset().top - plottop; + templeft = $(this).offset().left - plotleft; + tempright = templeft + $(this).outerWidth(true) + transx; + tempbottom = temptop + $(this).outerHeight(true) + transy; + if (templeft < -transx) { + w = w - transx - templeft; + transx = -templeft; + } + if (temptop < -transy) { + h = h - transy - temptop; + transy = - temptop; + } + if (tempright > w) { + w = tempright; + } + if (tempbottom > h) { + h = tempbottom; + } + }); + } + + newCanvas.width = w + Number(x_offset); + newCanvas.height = h + Number(y_offset); + + var newContext = newCanvas.getContext("2d"); + + newContext.save(); + newContext.fillStyle = backgroundColor; + newContext.fillRect(0,0, newCanvas.width, newCanvas.height); + newContext.restore(); + + newContext.translate(transx, transy); + newContext.textAlign = 'left'; + newContext.textBaseline = 'top'; + + function getLineheight(el) { + var lineheight = parseInt($(el).css('line-height'), 10); + + if (isNaN(lineheight)) { + lineheight = parseInt($(el).css('font-size'), 10) * 1.2; + } + return lineheight; + } + + function writeWrappedText (el, context, text, left, top, canvasWidth) { + var lineheight = getLineheight(el); + var tagwidth = $(el).innerWidth(); + var tagheight = $(el).innerHeight(); + var words = text.split(/\s+/); + var wl = words.length; + var w = ''; + var breaks = []; + var temptop = top; + var templeft = left; + + for (var i=0; i<wl; i++) { + w += words[i]; + if (context.measureText(w).width > tagwidth && w.length > words[i].length) { + breaks.push(i); + w = ''; + i--; + } + } + if (breaks.length === 0) { + // center text if necessary + if ($(el).css('textAlign') === 'center') { + templeft = left + (canvasWidth - context.measureText(w).width)/2 - transx; + } + context.fillText(text, templeft, top); + } + else { + w = words.slice(0, breaks[0]).join(' '); + // center text if necessary + if ($(el).css('textAlign') === 'center') { + templeft = left + (canvasWidth - context.measureText(w).width)/2 - transx; + } + context.fillText(w, templeft, temptop); + temptop += lineheight; + for (var i=1, l=breaks.length; i<l; i++) { + w = words.slice(breaks[i-1], breaks[i]).join(' '); + // center text if necessary + if ($(el).css('textAlign') === 'center') { + templeft = left + (canvasWidth - context.measureText(w).width)/2 - transx; + } + context.fillText(w, templeft, temptop); + temptop += lineheight; + } + w = words.slice(breaks[i-1], words.length).join(' '); + // center text if necessary + if ($(el).css('textAlign') === 'center') { + templeft = left + (canvasWidth - context.measureText(w).width)/2 - transx; + } + context.fillText(w, templeft, temptop); + } + + } + + function _jqpToImage(el, x_offset, y_offset) { + var tagname = el.tagName.toLowerCase(); + var p = $(el).position(); + var css = window.getComputedStyle ? window.getComputedStyle(el, "") : el.currentStyle; // for IE < 9 + var left = x_offset + p.left + parseInt(css.marginLeft, 10) + parseInt(css.borderLeftWidth, 10) + parseInt(css.paddingLeft, 10); + var top = y_offset + p.top + parseInt(css.marginTop, 10) + parseInt(css.borderTopWidth, 10)+ parseInt(css.paddingTop, 10); + var w = newCanvas.width; + // var left = x_offset + p.left + $(el).css('marginLeft') + $(el).css('borderLeftWidth') + + // somehow in here, for divs within divs, the width of the inner div should be used instead of the canvas. + + if ((tagname == 'div' || tagname == 'span') && !$(el).hasClass('jqplot-highlighter-tooltip') && !$(el).hasClass('jqplot-canvasOverlay-tooltip')) { + $(el).children().each(function() { + _jqpToImage(this, left, top); + }); + var text = $(el).jqplotChildText(); + + if (text) { + newContext.font = $(el).jqplotGetComputedFontStyle(); + newContext.fillStyle = $(el).css('color'); + + writeWrappedText(el, newContext, text, left, top, w); + } + } + + // handle the standard table legend + + else if (tagname === 'table' && $(el).hasClass('jqplot-table-legend')) { + newContext.strokeStyle = $(el).css('border-top-color'); + newContext.fillStyle = $(el).css('background-color'); + newContext.fillRect(left, top, $(el).innerWidth(), $(el).innerHeight()); + if (parseInt($(el).css('border-top-width'), 10) > 0) { + newContext.strokeRect(left, top, $(el).innerWidth(), $(el).innerHeight()); + } + + // find all the swatches + $(el).find('div.jqplot-table-legend-swatch-outline').each(function() { + // get the first div and stroke it + var elem = $(this); + newContext.strokeStyle = elem.css('border-top-color'); + var l = left + elem.position().left; + var t = top + elem.position().top; + newContext.strokeRect(l, t, elem.innerWidth(), elem.innerHeight()); + + // now fill the swatch + + l += parseInt(elem.css('padding-left'), 10); + t += parseInt(elem.css('padding-top'), 10); + var h = elem.innerHeight() - 2 * parseInt(elem.css('padding-top'), 10); + var w = elem.innerWidth() - 2 * parseInt(elem.css('padding-left'), 10); + + var swatch = elem.children('div.jqplot-table-legend-swatch'); + newContext.fillStyle = swatch.css('background-color'); + newContext.fillRect(l, t, w, h); + }); + + // now add text + + $(el).find('td.jqplot-table-legend-label').each(function(){ + var elem = $(this); + var l = left + elem.position().left; + var t = top + elem.position().top + parseInt(elem.css('padding-top'), 10); + newContext.font = elem.jqplotGetComputedFontStyle(); + newContext.fillStyle = elem.css('color'); + writeWrappedText(elem, newContext, elem.text(), l, t, w); + }); + + var elem = null; + } + + else if (tagname == 'canvas') { + newContext.drawImage(el, left, top); + } + } + $(this).children().each(function() { + _jqpToImage(this, x_offset, y_offset); + }); + return newCanvas; + }; + + // return the raw image data string. + // Should work on canvas supporting browsers. + $.fn.jqplotToImageStr = function(options) { + var imgCanvas = $(this).jqplotToImageCanvas(options); + if (imgCanvas) { + return imgCanvas.toDataURL("image/png"); + } + else { + return null; + } + }; + + // return a DOM <img> element and return it. + // Should work on canvas supporting browsers. + $.fn.jqplotToImageElem = function(options) { + var elem = document.createElement("img"); + var str = $(this).jqplotToImageStr(options); + elem.src = str; + return elem; + }; + + // return a string for an <img> element and return it. + // Should work on canvas supporting browsers. + $.fn.jqplotToImageElemStr = function(options) { + var str = '<img src='+$(this).jqplotToImageStr(options)+' />'; + return str; + }; + + // Not guaranteed to work, even on canvas supporting browsers due to + // limitations with location.href and browser support. + $.fn.jqplotSaveImage = function() { + var imgData = $(this).jqplotToImageStr({}); + if (imgData) { + window.location.href = imgData.replace("image/png", "image/octet-stream"); + } + + }; + + // Not guaranteed to work, even on canvas supporting browsers due to + // limitations with window.open and arbitrary data. + $.fn.jqplotViewImage = function() { + var imgStr = $(this).jqplotToImageElemStr({}); + var imgData = $(this).jqplotToImageStr({}); + if (imgStr) { + var w = window.open(''); + w.document.open("image/png"); + w.document.write(imgStr); + w.document.close(); + w = null; + } + }; + + + + + /** + * @description + * <p>Object with extended date parsing and formatting capabilities. + * This library borrows many concepts and ideas from the Date Instance + * Methods by Ken Snyder along with some parts of Ken's actual code.</p> + * + * <p>jsDate takes a different approach by not extending the built-in + * Date Object, improving date parsing, allowing for multiple formatting + * syntaxes and multiple and more easily expandable localization.</p> + * + * @author Chris Leonello + * @date #date# + * @version #VERSION# + * @copyright (c) 2010-2015 Chris Leonello + * jsDate is currently available for use in all personal or commercial projects + * under both the MIT and GPL version 2.0 licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * <p>Ken's original Date Instance Methods and copyright notice:</p> + * <pre> + * Ken Snyder (ken d snyder at gmail dot com) + * 2008-09-10 + * version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) + * </pre> + * + * @class + * @name jsDate + * @param {String | Number | Array | Date Object | Options Object} arguments Optional arguments, either a parsable date/time string, + * a JavaScript timestamp, an array of numbers of form [year, month, day, hours, minutes, seconds, milliseconds], + * a Date object, or an options object of form {syntax: "perl", date:some Date} where all options are optional. + */ + + var jsDate = function () { + + this.syntax = jsDate.config.syntax; + this._type = "jsDate"; + this.proxy = new Date(); + this.options = {}; + this.locale = jsDate.regional.getLocale(); + this.formatString = ''; + this.defaultCentury = jsDate.config.defaultCentury; + + switch ( arguments.length ) { + case 0: + break; + case 1: + // other objects either won't have a _type property or, + // if they do, it shouldn't be set to "jsDate", so + // assume it is an options argument. + if (get_type(arguments[0]) == "[object Object]" && arguments[0]._type != "jsDate") { + var opts = this.options = arguments[0]; + this.syntax = opts.syntax || this.syntax; + this.defaultCentury = opts.defaultCentury || this.defaultCentury; + this.proxy = jsDate.createDate(opts.date); + } + else { + this.proxy = jsDate.createDate(arguments[0]); + } + break; + default: + var a = []; + for ( var i=0; i<arguments.length; i++ ) { + a.push(arguments[i]); + } + // this should be the current date/time? + this.proxy = new Date(); + this.proxy.setFullYear.apply( this.proxy, a.slice(0,3) ); + if ( a.slice(3).length ) { + this.proxy.setHours.apply( this.proxy, a.slice(3) ); + } + break; + } + }; + + /** + * @namespace Configuration options that will be used as defaults for all instances on the page. + * @property {String} defaultLocale The default locale to use [en]. + * @property {String} syntax The default syntax to use [perl]. + * @property {Number} defaultCentury The default centry for 2 digit dates. + */ + jsDate.config = { + defaultLocale: 'en', + syntax: 'perl', + defaultCentury: 1900 + }; + + /** + * Add an arbitrary amount to the currently stored date + * + * @param {Number} number + * @param {String} unit + * @returns {jsDate} + */ + + jsDate.prototype.add = function(number, unit) { + var factor = multipliers[unit] || multipliers.day; + if (typeof factor == 'number') { + // Get the offset from the current time. + var oldOffset = this.proxy.getTimezoneOffset(); + + // Set the new time. + this.proxy.setTime(this.proxy.getTime() + (factor * number)); + + // Check to see if we've crossed a daylight savings time boundary, if so convert to a number of milliseconds to add back to the diff. + OffsetDiff = oldOffset - this.proxy.getTimezoneOffset(); + + // Reset the time to account for daylight savings time. + this.proxy.setTime(this.proxy.getTime() - (OffsetDiff * 60 * 1000)); + } else { + factor.add(this, number); + } + return this; + }; + + /** + * Create a new jqplot.date object with the same date + * + * @returns {jsDate} + */ + + jsDate.prototype.clone = function() { + return new jsDate(this.proxy.getTime()); + }; + + /** + * Get the UTC TimeZone Offset of this date in milliseconds. + * + * @returns {Number} + */ + + jsDate.prototype.getUtcOffset = function() { + return this.proxy.getTimezoneOffset() * 60000; + }; + + /** + * Find the difference between this jsDate and another date. + * + * @param {String| Number| Array| jsDate Object| Date Object} dateObj + * @param {String} unit + * @param {Boolean} allowDecimal + * @returns {Number} Number of units difference between dates. + */ + + jsDate.prototype.diff = function(dateObj, unit, allowDecimal) { + // ensure we have a Date object + dateObj = new jsDate(dateObj); + if (dateObj === null) { + return null; + } + // get the multiplying factor integer or factor function + var factor = multipliers[unit] || multipliers.day; + if (typeof factor == 'number') { + // multiply + + // Check to see if we've crossed a daylight savings time boundary, if so convert to a number of milliseconds to add back to the diff. + var OffsetDiff = (dateObj.proxy.getTimezoneOffset() - this.proxy.getTimezoneOffset()) * 60 * 1000; + + // Now find the difference, add back in the offset and then divide by the factor. + var unitDiff = (this.proxy.getTime() - dateObj.proxy.getTime() + OffsetDiff) / factor; + } else { + // run function + var unitDiff = factor.diff(this.proxy, dateObj.proxy); + } + // if decimals are not allowed, round toward zero + return (allowDecimal ? unitDiff : Math[unitDiff > 0 ? 'floor' : 'ceil'](unitDiff)); + }; + + /** + * Get the abbreviated name of the current week day + * + * @returns {String} + */ + + jsDate.prototype.getAbbrDayName = function() { + return jsDate.regional[this.locale]["dayNamesShort"][this.proxy.getDay()]; + }; + + /** + * Get the abbreviated name of the current month + * + * @returns {String} + */ + + jsDate.prototype.getAbbrMonthName = function() { + return jsDate.regional[this.locale]["monthNamesShort"][this.proxy.getMonth()]; + }; + + /** + * Get UPPER CASE AM or PM for the current time + * + * @returns {String} + */ + + jsDate.prototype.getAMPM = function() { + return this.proxy.getHours() >= 12 ? 'PM' : 'AM'; + }; + + /** + * Get lower case am or pm for the current time + * + * @returns {String} + */ + + jsDate.prototype.getAmPm = function() { + return this.proxy.getHours() >= 12 ? 'pm' : 'am'; + }; + + /** + * Get the century (19 for 20th Century) + * + * @returns {Integer} Century (19 for 20th century). + */ + jsDate.prototype.getCentury = function() { + return parseInt(this.proxy.getFullYear()/100, 10); + }; + + /** + * Implements Date functionality + */ + jsDate.prototype.getDate = function() { + return this.proxy.getDate(); + }; + + /** + * Implements Date functionality + */ + jsDate.prototype.getDay = function() { + return this.proxy.getDay(); + }; + + /** + * Get the Day of week 1 (Monday) thru 7 (Sunday) + * + * @returns {Integer} Day of week 1 (Monday) thru 7 (Sunday) + */ + jsDate.prototype.getDayOfWeek = function() { + var dow = this.proxy.getDay(); + return dow===0?7:dow; + }; + + /** + * Get the day of the year + * + * @returns {Integer} 1 - 366, day of the year + */ + jsDate.prototype.getDayOfYear = function() { + var d = this.proxy; + var ms = d - new Date('' + d.getFullYear() + '/1/1 GMT'); + ms += d.getTimezoneOffset()*60000; + d = null; + return parseInt(ms/60000/60/24, 10)+1; + }; + + /** + * Get the name of the current week day + * + * @returns {String} + */ + + jsDate.prototype.getDayName = function() { + return jsDate.regional[this.locale]["dayNames"][this.proxy.getDay()]; + }; + + /** + * Get the week number of the given year, starting with the first Sunday as the first week + * @returns {Integer} Week number (13 for the 13th full week of the year). + */ + jsDate.prototype.getFullWeekOfYear = function() { + var d = this.proxy; + var doy = this.getDayOfYear(); + var rdow = 6-d.getDay(); + var woy = parseInt((doy+rdow)/7, 10); + return woy; + }; + + /** + * Implements Date functionality + */ + jsDate.prototype.getFullYear = function() { + return this.proxy.getFullYear(); + }; + + /** + * Get the GMT offset in hours and minutes (e.g. +06:30) + * + * @returns {String} + */ + + jsDate.prototype.getGmtOffset = function() { + // divide the minutes offset by 60 + var hours = this.proxy.getTimezoneOffset() / 60; + // decide if we are ahead of or behind GMT + var prefix = hours < 0 ? '+' : '-'; + // remove the negative sign if any + hours = Math.abs(hours); + // add the +/- to the padded number of hours to : to the padded minutes + return prefix + addZeros(Math.floor(hours), 2) + ':' + addZeros((hours % 1) * 60, 2); + }; + + /** + * Implements Date functionality + */ + jsDate.prototype.getHours = function() { + return this.proxy.getHours(); + }; + + /** + * Get the current hour on a 12-hour scheme + * + * @returns {Integer} + */ + + jsDate.prototype.getHours12 = function() { + var hours = this.proxy.getHours(); + return hours > 12 ? hours - 12 : (hours == 0 ? 12 : hours); + }; + + + jsDate.prototype.getIsoWeek = function() { + var d = this.proxy; + var woy = this.getWeekOfYear(); + var dow1_1 = (new Date('' + d.getFullYear() + '/1/1')).getDay(); + // First week is 01 and not 00 as in the case of %U and %W, + // so we add 1 to the final result except if day 1 of the year + // is a Monday (then %W returns 01). + // We also need to subtract 1 if the day 1 of the year is + // Friday-Sunday, so the resulting equation becomes: + var idow = woy + (dow1_1 > 4 || dow1_1 <= 1 ? 0 : 1); + if(idow == 53 && (new Date('' + d.getFullYear() + '/12/31')).getDay() < 4) + { + idow = 1; + } + else if(idow === 0) + { + d = new jsDate(new Date('' + (d.getFullYear()-1) + '/12/31')); + idow = d.getIsoWeek(); + } + d = null; + return idow; + }; + + /** + * Implements Date functionality + */ + jsDate.prototype.getMilliseconds = function() { + return this.proxy.getMilliseconds(); + }; + + /** + * Implements Date functionality + */ + jsDate.prototype.getMinutes = function() { + return this.proxy.getMinutes(); + }; + + /** + * Implements Date functionality + */ + jsDate.prototype.getMonth = function() { + return this.proxy.getMonth(); + }; + + /** + * Get the name of the current month + * + * @returns {String} + */ + + jsDate.prototype.getMonthName = function() { + return jsDate.regional[this.locale]["monthNames"][this.proxy.getMonth()]; + }; + + /** + * Get the number of the current month, 1-12 + * + * @returns {Integer} + */ + + jsDate.prototype.getMonthNumber = function() { + return this.proxy.getMonth() + 1; + }; + + /** + * Implements Date functionality + */ + jsDate.prototype.getSeconds = function() { + return this.proxy.getSeconds(); + }; + + /** + * Return a proper two-digit year integer + * + * @returns {Integer} + */ + + jsDate.prototype.getShortYear = function() { + return this.proxy.getYear() % 100; + }; + + /** + * Implements Date functionality + */ + jsDate.prototype.getTime = function() { + return this.proxy.getTime(); + }; + + /** + * Get the timezone abbreviation + * + * @returns {String} Abbreviation for the timezone + */ + jsDate.prototype.getTimezoneAbbr = function() { + return this.proxy.toString().replace(/^.*\(([^)]+)\)$/, '$1'); + }; + + /** + * Get the browser-reported name for the current timezone (e.g. MDT, Mountain Daylight Time) + * + * @returns {String} + */ + jsDate.prototype.getTimezoneName = function() { + var match = /(?:\((.+)\)$| ([A-Z]{3}) )/.exec(this.toString()); + return match[1] || match[2] || 'GMT' + this.getGmtOffset(); + }; + + /** + * Implements Date functionality + */ + jsDate.prototype.getTimezoneOffset = function() { + return this.proxy.getTimezoneOffset(); + }; + + + /** + * Get the week number of the given year, starting with the first Monday as the first week + * @returns {Integer} Week number (13 for the 13th week of the year). + */ + jsDate.prototype.getWeekOfYear = function() { + var doy = this.getDayOfYear(); + var rdow = 7 - this.getDayOfWeek(); + var woy = parseInt((doy+rdow)/7, 10); + return woy; + }; + + /** + * Get the current date as a Unix timestamp + * + * @returns {Integer} + */ + + jsDate.prototype.getUnix = function() { + return Math.round(this.proxy.getTime() / 1000, 0); + }; + + /** + * Implements Date functionality + */ + jsDate.prototype.getYear = function() { + return this.proxy.getYear(); + }; + + /** + * Return a date one day ahead (or any other unit) + * + * @param {String} unit Optional, year | month | day | week | hour | minute | second | millisecond + * @returns {jsDate} + */ + + jsDate.prototype.next = function(unit) { + unit = unit || 'day'; + return this.clone().add(1, unit); + }; + + /** + * Set the jsDate instance to a new date. + * + * @param {String | Number | Array | Date Object | jsDate Object | Options Object} arguments Optional arguments, + * either a parsable date/time string, + * a JavaScript timestamp, an array of numbers of form [year, month, day, hours, minutes, seconds, milliseconds], + * a Date object, jsDate Object or an options object of form {syntax: "perl", date:some Date} where all options are optional. + */ + jsDate.prototype.set = function() { + switch ( arguments.length ) { + case 0: + this.proxy = new Date(); + break; + case 1: + // other objects either won't have a _type property or, + // if they do, it shouldn't be set to "jsDate", so + // assume it is an options argument. + if (get_type(arguments[0]) == "[object Object]" && arguments[0]._type != "jsDate") { + var opts = this.options = arguments[0]; + this.syntax = opts.syntax || this.syntax; + this.defaultCentury = opts.defaultCentury || this.defaultCentury; + this.proxy = jsDate.createDate(opts.date); + } + else { + this.proxy = jsDate.createDate(arguments[0]); + } + break; + default: + var a = []; + for ( var i=0; i<arguments.length; i++ ) { + a.push(arguments[i]); + } + // this should be the current date/time + this.proxy = new Date(); + this.proxy.setFullYear.apply( this.proxy, a.slice(0,3) ); + if ( a.slice(3).length ) { + this.proxy.setHours.apply( this.proxy, a.slice(3) ); + } + break; + } + return this; + }; + + /** + * Sets the day of the month for a specified date according to local time. + * @param {Integer} dayValue An integer from 1 to 31, representing the day of the month. + */ + jsDate.prototype.setDate = function(n) { + this.proxy.setDate(n); + return this; + }; + + /** + * Sets the full year for a specified date according to local time. + * @param {Integer} yearValue The numeric value of the year, for example, 1995. + * @param {Integer} monthValue Optional, between 0 and 11 representing the months January through December. + * @param {Integer} dayValue Optional, between 1 and 31 representing the day of the month. If you specify the dayValue parameter, you must also specify the monthValue. + */ + jsDate.prototype.setFullYear = function() { + this.proxy.setFullYear.apply(this.proxy, arguments); + return this; + }; + + /** + * Sets the hours for a specified date according to local time. + * + * @param {Integer} hoursValue An integer between 0 and 23, representing the hour. + * @param {Integer} minutesValue Optional, An integer between 0 and 59, representing the minutes. + * @param {Integer} secondsValue Optional, An integer between 0 and 59, representing the seconds. + * If you specify the secondsValue parameter, you must also specify the minutesValue. + * @param {Integer} msValue Optional, A number between 0 and 999, representing the milliseconds. + * If you specify the msValue parameter, you must also specify the minutesValue and secondsValue. + */ + jsDate.prototype.setHours = function() { + this.proxy.setHours.apply(this.proxy, arguments); + return this; + }; + + /** + * Implements Date functionality + */ + jsDate.prototype.setMilliseconds = function(n) { + this.proxy.setMilliseconds(n); + return this; + }; + + /** + * Implements Date functionality + */ + jsDate.prototype.setMinutes = function() { + this.proxy.setMinutes.apply(this.proxy, arguments); + return this; + }; + + /** + * Implements Date functionality + */ + jsDate.prototype.setMonth = function() { + this.proxy.setMonth.apply(this.proxy, arguments); + return this; + }; + + /** + * Implements Date functionality + */ + jsDate.prototype.setSeconds = function() { + this.proxy.setSeconds.apply(this.proxy, arguments); + return this; + }; + + /** + * Implements Date functionality + */ + jsDate.prototype.setTime = function(n) { + this.proxy.setTime(n); + return this; + }; + + /** + * Implements Date functionality + */ + jsDate.prototype.setYear = function() { + this.proxy.setYear.apply(this.proxy, arguments); + return this; + }; + + /** + * Provide a formatted string representation of this date. + * + * @param {String} formatString A format string. + * See: {@link jsDate.formats}. + * @returns {String} Date String. + */ + + jsDate.prototype.strftime = function(formatString) { + formatString = formatString || this.formatString || jsDate.regional[this.locale]['formatString']; + return jsDate.strftime(this, formatString, this.syntax); + }; + + /** + * Return a String representation of this jsDate object. + * @returns {String} Date string. + */ + + jsDate.prototype.toString = function() { + return this.proxy.toString(); + }; + + /** + * Convert the current date to an 8-digit integer (%Y%m%d) + * + * @returns {Integer} + */ + + jsDate.prototype.toYmdInt = function() { + return (this.proxy.getFullYear() * 10000) + (this.getMonthNumber() * 100) + this.proxy.getDate(); + }; + + /** + * @namespace Holds localizations for month/day names. + * <p>jsDate attempts to detect locale when loaded and defaults to 'en'. + * If a localization is detected which is not available, jsDate defaults to 'en'. + * Additional localizations can be added after jsDate loads. After adding a localization, + * call the jsDate.regional.getLocale() method. Currently, en, fr and de are defined.</p> + * + * <p>Localizations must be an object and have the following properties defined: monthNames, monthNamesShort, dayNames, dayNamesShort and Localizations are added like:</p> + * <pre class="code"> + * jsDate.regional['en'] = { + * monthNames : 'January February March April May June July August September October November December'.split(' '), + * monthNamesShort : 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'.split(' '), + * dayNames : 'Sunday Monday Tuesday Wednesday Thursday Friday Saturday'.split(' '), + * dayNamesShort : 'Sun Mon Tue Wed Thu Fri Sat'.split(' ') + * }; + * </pre> + * <p>After adding localizations, call <code>jsDate.regional.getLocale();</code> to update the locale setting with the + * new localizations.</p> + */ + + jsDate.regional = { + 'en': { + monthNames: ['January','February','March','April','May','June','July','August','September','October','November','December'], + monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun','Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], + dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], + dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + formatString: '%Y-%m-%d %H:%M:%S' + }, + + 'fr': { + monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre'], + monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun','Jul','Aoû','Sep','Oct','Nov','Déc'], + dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'], + dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'], + formatString: '%Y-%m-%d %H:%M:%S' + }, + + 'de': { + monthNames: ['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'], + monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'], + dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'], + dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'], + formatString: '%Y-%m-%d %H:%M:%S' + }, + + 'es': { + monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio', 'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'], + monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun', 'Jul','Ago','Sep','Oct','Nov','Dic'], + dayNames: ['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado'], + dayNamesShort: ['Dom','Lun','Mar','Mié','Juv','Vie','Sáb'], + formatString: '%Y-%m-%d %H:%M:%S' + }, + + 'ru': { + monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'], + monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн','Июл','Авг','Сен','Окт','Ноя','Дек'], + dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'], + dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'], + formatString: '%Y-%m-%d %H:%M:%S' + }, + + 'ar': { + monthNames: ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'آذار', 'حزيران','تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'], + monthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'], + dayNames: ['السبت', 'الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة'], + dayNamesShort: ['سبت', 'أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة'], + formatString: '%Y-%m-%d %H:%M:%S' + }, + + 'pt': { + monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'], + monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun','Jul','Ago','Set','Out','Nov','Dez'], + dayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'], + dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], + formatString: '%Y-%m-%d %H:%M:%S' + }, + + 'pt-BR': { + monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho', 'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'], + monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun','Jul','Ago','Set','Out','Nov','Dez'], + dayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'], + dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], + formatString: '%Y-%m-%d %H:%M:%S' + }, + + 'pl': { + monthNames: ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec','Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'], + monthNamesShort: ['Sty', 'Lut', 'Mar', 'Kwi', 'Maj', 'Cze','Lip', 'Sie', 'Wrz', 'Paź', 'Lis', 'Gru'], + dayNames: ['Niedziela', 'Poniedziałek', 'Wtorek', 'Środa', 'Czwartek', 'Piątek', 'Sobota'], + dayNamesShort: ['Ni', 'Pn', 'Wt', 'Śr', 'Cz', 'Pt', 'Sb'], + formatString: '%Y-%m-%d %H:%M:%S' + }, + + 'nl': { + monthNames: ['Januari','Februari','Maart','April','Mei','Juni','July','Augustus','September','Oktober','November','December'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun','Jul','Aug','Sep','Okt','Nov','Dec'], + dayNames:','['Zondag','Maandag','Dinsdag','Woensdag','Donderdag','Vrijdag','Zaterdag'], + dayNamesShort: ['Zo','Ma','Di','Wo','Do','Vr','Za'], + formatString: '%Y-%m-%d %H:%M:%S' + }, + + 'sv': { + monthNames: ['januari','februari','mars','april','maj','juni','juli','augusti','september','oktober','november','december'], + monthNamesShort: ['jan','feb','mar','apr','maj','jun','jul','aug','sep','okt','nov','dec'], + dayNames: ['söndag','måndag','tisdag','onsdag','torsdag','fredag','lördag'], + dayNamesShort: ['sön','mån','tis','ons','tor','fre','lör'], + formatString: '%Y-%m-%d %H:%M:%S' + }, + + 'it': { + monthNames: ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'], + monthNamesShort: ['Gen','Feb','Mar','Apr','Mag','Giu','Lug','Ago','Set','Ott','Nov','Dic'], + dayNames: ['Domenica','Lunedi','Martedi','Mercoledi','Giovedi','Venerdi','Sabato'], + dayNamesShort: ['Dom','Lun','Mar','Mer','Gio','Ven','Sab'], + formatString: '%d-%m-%Y %H:%M:%S' + } + + }; + + // Set english variants to 'en' + jsDate.regional['en-US'] = jsDate.regional['en-GB'] = jsDate.regional['en']; + + /** + * Try to determine the users locale based on the lang attribute of the html page. Defaults to 'en' + * if it cannot figure out a locale of if the locale does not have a localization defined. + * @returns {String} locale + */ + + jsDate.regional.getLocale = function () { + var l = jsDate.config.defaultLocale; + + if ( document && document.getElementsByTagName('html') && document.getElementsByTagName('html')[0].lang ) { + l = document.getElementsByTagName('html')[0].lang; + if (!jsDate.regional.hasOwnProperty(l)) { + l = jsDate.config.defaultLocale; + } + } + + return l; + }; + + // ms in day + var day = 24 * 60 * 60 * 1000; + + // padd a number with zeros + var addZeros = function(num, digits) { + num = String(num); + var i = digits - num.length; + var s = String(Math.pow(10, i)).slice(1); + return s.concat(num); + }; + + // representations used for calculating differences between dates. + // This borrows heavily from Ken Snyder's work. + var multipliers = { + millisecond: 1, + second: 1000, + minute: 60 * 1000, + hour: 60 * 60 * 1000, + day: day, + week: 7 * day, + month: { + // add a number of months + add: function(d, number) { + // add any years needed (increments of 12) + multipliers.year.add(d, Math[number > 0 ? 'floor' : 'ceil'](number / 12)); + // ensure that we properly wrap betwen December and January + // 11 % 12 = 11 + // 12 % 12 = 0 + var prevMonth = d.getMonth() + (number % 12); + if (prevMonth == 12) { + prevMonth = 0; + d.setYear(d.getFullYear() + 1); + } else if (prevMonth == -1) { + prevMonth = 11; + d.setYear(d.getFullYear() - 1); + } + d.setMonth(prevMonth); + }, + // get the number of months between two Date objects (decimal to the nearest day) + diff: function(d1, d2) { + // get the number of years + var diffYears = d1.getFullYear() - d2.getFullYear(); + // get the number of remaining months + var diffMonths = d1.getMonth() - d2.getMonth() + (diffYears * 12); + // get the number of remaining days + var diffDays = d1.getDate() - d2.getDate(); + // return the month difference with the days difference as a decimal + return diffMonths + (diffDays / 30); + } + }, + year: { + // add a number of years + add: function(d, number) { + d.setYear(d.getFullYear() + Math[number > 0 ? 'floor' : 'ceil'](number)); + }, + // get the number of years between two Date objects (decimal to the nearest day) + diff: function(d1, d2) { + return multipliers.month.diff(d1, d2) / 12; + } + } + }; + // + // Alias each multiplier with an 's' to allow 'year' and 'years' for example. + // This comes from Ken Snyders work. + // + for (var unit in multipliers) { + if (unit.substring(unit.length - 1) != 's') { // IE will iterate newly added properties :| + multipliers[unit + 's'] = multipliers[unit]; + } + } + + // + // take a jsDate instance and a format code and return the formatted value. + // This is a somewhat modified version of Ken Snyder's method. + // + var format = function(d, code, syntax) { + // if shorcut codes are used, recursively expand those. + if (jsDate.formats[syntax]["shortcuts"][code]) { + return jsDate.strftime(d, jsDate.formats[syntax]["shortcuts"][code], syntax); + } else { + // get the format code function and addZeros() argument + var getter = (jsDate.formats[syntax]["codes"][code] || '').split('.'); + var nbr = d['get' + getter[0]] ? d['get' + getter[0]]() : ''; + if (getter[1]) { + nbr = addZeros(nbr, getter[1]); + } + return nbr; + } + }; + + /** + * @static + * Static function for convert a date to a string according to a given format. Also acts as namespace for strftime format codes. + * <p>strftime formatting can be accomplished without creating a jsDate object by calling jsDate.strftime():</p> + * <pre class="code"> + * var formattedDate = jsDate.strftime('Feb 8, 2006 8:48:32', '%Y-%m-%d %H:%M:%S'); + * </pre> + * @param {String | Number | Array | jsDate Object | Date Object} date A parsable date string, JavaScript time stamp, Array of form [year, month, day, hours, minutes, seconds, milliseconds], jsDate Object or Date object. + * @param {String} formatString String with embedded date formatting codes. + * See: {@link jsDate.formats}. + * @param {String} syntax Optional syntax to use [default perl]. + * @param {String} locale Optional locale to use. + * @returns {String} Formatted representation of the date. + */ + // + // Logic as implemented here is very similar to Ken Snyder's Date Instance Methods. + // + jsDate.strftime = function(d, formatString, syntax, locale) { + var syn = 'perl'; + var loc = jsDate.regional.getLocale(); + + // check if syntax and locale are available or reversed + if (syntax && jsDate.formats.hasOwnProperty(syntax)) { + syn = syntax; + } + else if (syntax && jsDate.regional.hasOwnProperty(syntax)) { + loc = syntax; + } + + if (locale && jsDate.formats.hasOwnProperty(locale)) { + syn = locale; + } + else if (locale && jsDate.regional.hasOwnProperty(locale)) { + loc = locale; + } + + if (get_type(d) != "[object Object]" || d._type != "jsDate") { + d = new jsDate(d); + d.locale = loc; + } + if (!formatString) { + formatString = d.formatString || jsDate.regional[loc]['formatString']; + } + // default the format string to year-month-day + var source = formatString || '%Y-%m-%d', + result = '', + match; + // replace each format code + while (source.length > 0) { + if (match = source.match(jsDate.formats[syn].codes.matcher)) { + result += source.slice(0, match.index); + result += (match[1] || '') + format(d, match[2], syn); + source = source.slice(match.index + match[0].length); + } else { + result += source; + source = ''; + } + } + return result; + }; + + /** + * @namespace + * Namespace to hold format codes and format shortcuts. "perl" and "php" format codes + * and shortcuts are defined by default. Additional codes and shortcuts can be + * added like: + * + * <pre class="code"> + * jsDate.formats["perl"] = { + * "codes": { + * matcher: /someregex/, + * Y: "fullYear", // name of "get" method without the "get", + * ..., // more codes + * }, + * "shortcuts": { + * F: '%Y-%m-%d', + * ..., // more shortcuts + * } + * }; + * </pre> + * + * <p>Additionally, ISO and SQL shortcuts are defined and can be accesses via: + * <code>jsDate.formats.ISO</code> and <code>jsDate.formats.SQL</code> + */ + + jsDate.formats = { + ISO:'%Y-%m-%dT%H:%M:%S.%N%G', + SQL:'%Y-%m-%d %H:%M:%S' + }; + + /** + * Perl format codes and shortcuts for strftime. + * + * A hash (object) of codes where each code must be an array where the first member is + * the name of a Date.prototype or jsDate.prototype function to call + * and optionally a second member indicating the number to pass to addZeros() + * + * <p>The following format codes are defined:</p> + * + * <pre class="code"> + * Code Result Description + * == Years == + * %Y 2008 Four-digit year + * %y 08 Two-digit year + * + * == Months == + * %m 09 Two-digit month + * %#m 9 One or two-digit month + * %B September Full month name + * %b Sep Abbreviated month name + * + * == Days == + * %d 05 Two-digit day of month + * %#d 5 One or two-digit day of month + * %e 5 One or two-digit day of month + * %A Sunday Full name of the day of the week + * %a Sun Abbreviated name of the day of the week + * %w 0 Number of the day of the week (0 = Sunday, 6 = Saturday) + * + * == Hours == + * %H 23 Hours in 24-hour format (two digits) + * %#H 3 Hours in 24-hour integer format (one or two digits) + * %I 11 Hours in 12-hour format (two digits) + * %#I 3 Hours in 12-hour integer format (one or two digits) + * %p PM AM or PM + * + * == Minutes == + * %M 09 Minutes (two digits) + * %#M 9 Minutes (one or two digits) + * + * == Seconds == + * %S 02 Seconds (two digits) + * %#S 2 Seconds (one or two digits) + * %s 1206567625723 Unix timestamp (Seconds past 1970-01-01 00:00:00) + * + * == Milliseconds == + * %N 008 Milliseconds (three digits) + * %#N 8 Milliseconds (one to three digits) + * + * == Timezone == + * %O 360 difference in minutes between local time and GMT + * %Z Mountain Standard Time Name of timezone as reported by browser + * %G 06:00 Hours and minutes between GMT + * + * == Shortcuts == + * %F 2008-03-26 %Y-%m-%d + * %T 05:06:30 %H:%M:%S + * %X 05:06:30 %H:%M:%S + * %x 03/26/08 %m/%d/%y + * %D 03/26/08 %m/%d/%y + * %#c Wed Mar 26 15:31:00 2008 %a %b %e %H:%M:%S %Y + * %v 3-Sep-2008 %e-%b-%Y + * %R 15:31 %H:%M + * %r 03:31:00 PM %I:%M:%S %p + * + * == Characters == + * %n \n Newline + * %t \t Tab + * %% % Percent Symbol + * </pre> + * + * <p>Formatting shortcuts that will be translated into their longer version. + * Be sure that format shortcuts do not refer to themselves: this will cause an infinite loop.</p> + * + * <p>Format codes and format shortcuts can be redefined after the jsDate + * module is imported.</p> + * + * <p>Note that if you redefine the whole hash (object), you must supply a "matcher" + * regex for the parser. The default matcher is:</p> + * + * <code>/()%(#?(%|[a-z]))/i</code> + * + * <p>which corresponds to the Perl syntax used by default.</p> + * + * <p>By customizing the matcher and format codes, nearly any strftime functionality is possible.</p> + */ + + jsDate.formats.perl = { + codes: { + // + // 2-part regex matcher for format codes + // + // first match must be the character before the code (to account for escaping) + // second match must be the format code character(s) + // + matcher: /()%(#?(%|[a-z]))/i, + // year + Y: 'FullYear', + y: 'ShortYear.2', + // month + m: 'MonthNumber.2', + '#m': 'MonthNumber', + B: 'MonthName', + b: 'AbbrMonthName', + // day + d: 'Date.2', + '#d': 'Date', + e: 'Date', + A: 'DayName', + a: 'AbbrDayName', + w: 'Day', + // hours + H: 'Hours.2', + '#H': 'Hours', + I: 'Hours12.2', + '#I': 'Hours12', + p: 'AMPM', + // minutes + M: 'Minutes.2', + '#M': 'Minutes', + // seconds + S: 'Seconds.2', + '#S': 'Seconds', + s: 'Unix', + // milliseconds + N: 'Milliseconds.3', + '#N': 'Milliseconds', + // timezone + O: 'TimezoneOffset', + Z: 'TimezoneName', + G: 'GmtOffset' + }, + + shortcuts: { + // date + F: '%Y-%m-%d', + // time + T: '%H:%M:%S', + X: '%H:%M:%S', + // local format date + x: '%m/%d/%y', + D: '%m/%d/%y', + // local format extended + '#c': '%a %b %e %H:%M:%S %Y', + // local format short + v: '%e-%b-%Y', + R: '%H:%M', + r: '%I:%M:%S %p', + // tab and newline + t: '\t', + n: '\n', + '%': '%' + } + }; + + /** + * PHP format codes and shortcuts for strftime. + * + * A hash (object) of codes where each code must be an array where the first member is + * the name of a Date.prototype or jsDate.prototype function to call + * and optionally a second member indicating the number to pass to addZeros() + * + * <p>The following format codes are defined:</p> + * + * <pre class="code"> + * Code Result Description + * === Days === + * %a Sun through Sat An abbreviated textual representation of the day + * %A Sunday - Saturday A full textual representation of the day + * %d 01 to 31 Two-digit day of the month (with leading zeros) + * %e 1 to 31 Day of the month, with a space preceding single digits. + * %j 001 to 366 Day of the year, 3 digits with leading zeros + * %u 1 - 7 (Mon - Sun) ISO-8601 numeric representation of the day of the week + * %w 0 - 6 (Sun - Sat) Numeric representation of the day of the week + * + * === Week === + * %U 13 Full Week number, starting with the first Sunday as the first week + * %V 01 through 53 ISO-8601:1988 week number, starting with the first week of the year + * with at least 4 weekdays, with Monday being the start of the week + * %W 46 A numeric representation of the week of the year, + * starting with the first Monday as the first week + * === Month === + * %b Jan through Dec Abbreviated month name, based on the locale + * %B January - December Full month name, based on the locale + * %h Jan through Dec Abbreviated month name, based on the locale (an alias of %b) + * %m 01 - 12 (Jan - Dec) Two digit representation of the month + * + * === Year === + * %C 19 Two digit century (year/100, truncated to an integer) + * %y 09 for 2009 Two digit year + * %Y 2038 Four digit year + * + * === Time === + * %H 00 through 23 Two digit representation of the hour in 24-hour format + * %I 01 through 12 Two digit representation of the hour in 12-hour format + * %l 1 through 12 Hour in 12-hour format, with a space preceeding single digits + * %M 00 through 59 Two digit representation of the minute + * %p AM/PM UPPER-CASE 'AM' or 'PM' based on the given time + * %P am/pm lower-case 'am' or 'pm' based on the given time + * %r 09:34:17 PM Same as %I:%M:%S %p + * %R 00:35 Same as %H:%M + * %S 00 through 59 Two digit representation of the second + * %T 21:34:17 Same as %H:%M:%S + * %X 03:59:16 Preferred time representation based on locale, without the date + * %z -0500 or EST Either the time zone offset from UTC or the abbreviation + * %Z -0500 or EST The time zone offset/abbreviation option NOT given by %z + * + * === Time and Date === + * %D 02/05/09 Same as %m/%d/%y + * %F 2009-02-05 Same as %Y-%m-%d (commonly used in database datestamps) + * %s 305815200 Unix Epoch Time timestamp (same as the time() function) + * %x 02/05/09 Preferred date representation, without the time + * + * === Miscellaneous === + * %n --- A newline character (\n) + * %t --- A Tab character (\t) + * %% --- A literal percentage character (%) + * </pre> + */ + + jsDate.formats.php = { + codes: { + // + // 2-part regex matcher for format codes + // + // first match must be the character before the code (to account for escaping) + // second match must be the format code character(s) + // + matcher: /()%((%|[a-z]))/i, + // day + a: 'AbbrDayName', + A: 'DayName', + d: 'Date.2', + e: 'Date', + j: 'DayOfYear.3', + u: 'DayOfWeek', + w: 'Day', + // week + U: 'FullWeekOfYear.2', + V: 'IsoWeek.2', + W: 'WeekOfYear.2', + // month + b: 'AbbrMonthName', + B: 'MonthName', + m: 'MonthNumber.2', + h: 'AbbrMonthName', + // year + C: 'Century.2', + y: 'ShortYear.2', + Y: 'FullYear', + // time + H: 'Hours.2', + I: 'Hours12.2', + l: 'Hours12', + p: 'AMPM', + P: 'AmPm', + M: 'Minutes.2', + S: 'Seconds.2', + s: 'Unix', + O: 'TimezoneOffset', + z: 'GmtOffset', + Z: 'TimezoneAbbr' + }, + + shortcuts: { + D: '%m/%d/%y', + F: '%Y-%m-%d', + T: '%H:%M:%S', + X: '%H:%M:%S', + x: '%m/%d/%y', + R: '%H:%M', + r: '%I:%M:%S %p', + t: '\t', + n: '\n', + '%': '%' + } + }; + // + // Conceptually, the logic implemented here is similar to Ken Snyder's Date Instance Methods. + // I use his idea of a set of parsers which can be regular expressions or functions, + // iterating through those, and then seeing if Date.parse() will create a date. + // The parser expressions and functions are a little different and some bugs have been + // worked out. Also, a lot of "pre-parsing" is done to fix implementation + // variations of Date.parse() between browsers. + // + jsDate.createDate = function(date) { + // if passing in multiple arguments, try Date constructor + if (date == null) { + return new Date(); + } + // If the passed value is already a date object, return it + if (date instanceof Date) { + return date; + } + // if (typeof date == 'number') return new Date(date * 1000); + // If the passed value is an integer, interpret it as a javascript timestamp + if (typeof date == 'number') { + return new Date(date); + } + + // Before passing strings into Date.parse(), have to normalize them for certain conditions. + // If strings are not formatted staccording to the EcmaScript spec, results from Date parse will be implementation dependent. + // + // For example: + // * FF and Opera assume 2 digit dates are pre y2k, Chome assumes <50 is pre y2k, 50+ is 21st century. + // * Chrome will correctly parse '1984-1-25' into localtime, FF and Opera will not parse. + // * Both FF, Chrome and Opera will parse '1984/1/25' into localtime. + + // remove leading and trailing spaces + var parsable = String(date).replace(/^\s*(.+)\s*$/g, '$1'); + + // replace dahses (-) with slashes (/) in dates like n[nnn]/n[n]/n[nnn] + parsable = parsable.replace(/^([0-9]{1,4})-([0-9]{1,2})-([0-9]{1,4})/, "$1/$2/$3"); + + ///////// + // Need to check for '15-Dec-09' also. + // FF will not parse, but Chrome will. + // Chrome will set date to 2009 as well. + ///////// + + // first check for 'dd-mmm-yyyy' or 'dd/mmm/yyyy' like '15-Dec-2010' + parsable = parsable.replace(/^(3[01]|[0-2]?\d)[-\/]([a-z]{3,})[-\/](\d{4})/i, "$1 $2 $3"); + + // Now check for 'dd-mmm-yy' or 'dd/mmm/yy' and normalize years to default century. + var match = parsable.match(/^(3[01]|[0-2]?\d)[-\/]([a-z]{3,})[-\/](\d{2})\D*/i); + if (match && match.length > 3) { + var m3 = parseFloat(match[3]); + var ny = jsDate.config.defaultCentury + m3; + ny = String(ny); + + // now replace 2 digit year with 4 digit year + parsable = parsable.replace(/^(3[01]|[0-2]?\d)[-\/]([a-z]{3,})[-\/](\d{2})\D*/i, match[1] +' '+ match[2] +' '+ ny); + + } + + // Check for '1/19/70 8:14PM' + // where starts with mm/dd/yy or yy/mm/dd and have something after + // Check if 1st postiion is greater than 31, assume it is year. + // Assme all 2 digit years are 1900's. + // Finally, change them into US style mm/dd/yyyy representations. + match = parsable.match(/^([0-9]{1,2})[-\/]([0-9]{1,2})[-\/]([0-9]{1,2})[^0-9]/); + + function h1(parsable, match) { + var m1 = parseFloat(match[1]); + var m2 = parseFloat(match[2]); + var m3 = parseFloat(match[3]); + var cent = jsDate.config.defaultCentury; + var ny, nd, nm, str; + + if (m1 > 31) { // first number is a year + nd = m3; + nm = m2; + ny = cent + m1; + } + + else { // last number is the year + nd = m2; + nm = m1; + ny = cent + m3; + } + + str = nm+'/'+nd+'/'+ny; + + // now replace 2 digit year with 4 digit year + return parsable.replace(/^([0-9]{1,2})[-\/]([0-9]{1,2})[-\/]([0-9]{1,2})/, str); + + } + + if (match && match.length > 3) { + parsable = h1(parsable, match); + } + + // Now check for '1/19/70' with nothing after and do as above + var match = parsable.match(/^([0-9]{1,2})[-\/]([0-9]{1,2})[-\/]([0-9]{1,2})$/); + + if (match && match.length > 3) { + parsable = h1(parsable, match); + } + + + var i = 0; + var length = jsDate.matchers.length; + var pattern, + ms, + current = parsable, + obj; + while (i < length) { + ms = Date.parse(current); + if (!isNaN(ms)) { + return new Date(ms); + } + pattern = jsDate.matchers[i]; + if (typeof pattern == 'function') { + obj = pattern.call(jsDate, current); + if (obj instanceof Date) { + return obj; + } + } else { + current = parsable.replace(pattern[0], pattern[1]); + } + i++; + } + return NaN; + }; + + + /** + * @static + * Handy static utility function to return the number of days in a given month. + * @param {Integer} year Year + * @param {Integer} month Month (1-12) + * @returns {Integer} Number of days in the month. + */ + // + // handy utility method Borrowed right from Ken Snyder's Date Instance Mehtods. + // + jsDate.daysInMonth = function(year, month) { + if (month == 2) { + return new Date(year, 1, 29).getDate() == 29 ? 29 : 28; + } + return [undefined,31,undefined,31,30,31,30,31,31,30,31,30,31][month]; + }; + + + // + // An Array of regular expressions or functions that will attempt to match the date string. + // Functions are called with scope of a jsDate instance. + // + jsDate.matchers = [ + // convert dd.mmm.yyyy to mm/dd/yyyy (world date to US date). + [/(3[01]|[0-2]\d)\s*\.\s*(1[0-2]|0\d)\s*\.\s*([1-9]\d{3})/, '$2/$1/$3'], + // convert yyyy-mm-dd to mm/dd/yyyy (ISO date to US date). + [/([1-9]\d{3})\s*-\s*(1[0-2]|0\d)\s*-\s*(3[01]|[0-2]\d)/, '$2/$3/$1'], + // Handle 12 hour or 24 hour time with milliseconds am/pm and optional date part. + function(str) { + var match = str.match(/^(?:(.+)\s+)?([012]?\d)(?:\s*\:\s*(\d\d))?(?:\s*\:\s*(\d\d(\.\d*)?))?\s*(am|pm)?\s*$/i); + // opt. date hour opt. minute opt. second opt. msec opt. am or pm + if (match) { + if (match[1]) { + var d = this.createDate(match[1]); + if (isNaN(d)) { + return; + } + } else { + var d = new Date(); + d.setMilliseconds(0); + } + var hour = parseFloat(match[2]); + if (match[6]) { + hour = match[6].toLowerCase() == 'am' ? (hour == 12 ? 0 : hour) : (hour == 12 ? 12 : hour + 12); + } + d.setHours(hour, parseInt(match[3] || 0, 10), parseInt(match[4] || 0, 10), ((parseFloat(match[5] || 0)) || 0)*1000); + return d; + } + else { + return str; + } + }, + // Handle ISO timestamp with time zone. + function(str) { + var match = str.match(/^(?:(.+))[T|\s+]([012]\d)(?:\:(\d\d))(?:\:(\d\d))(?:\.\d+)([\+\-]\d\d\:\d\d)$/i); + if (match) { + if (match[1]) { + var d = this.createDate(match[1]); + if (isNaN(d)) { + return; + } + } else { + var d = new Date(); + d.setMilliseconds(0); + } + var hour = parseFloat(match[2]); + d.setHours(hour, parseInt(match[3], 10), parseInt(match[4], 10), parseFloat(match[5])*1000); + return d; + } + else { + return str; + } + }, + // Try to match ambiguous strings like 12/8/22. + // Use FF date assumption that 2 digit years are 20th century (i.e. 1900's). + // This may be redundant with pre processing of date already performed. + function(str) { + var match = str.match(/^([0-3]?\d)\s*[-\/.\s]{1}\s*([a-zA-Z]{3,9})\s*[-\/.\s]{1}\s*([0-3]?\d)$/); + if (match) { + var d = new Date(); + var cent = jsDate.config.defaultCentury; + var m1 = parseFloat(match[1]); + var m3 = parseFloat(match[3]); + var ny, nd, nm; + if (m1 > 31) { // first number is a year + nd = m3; + ny = cent + m1; + } + + else { // last number is the year + nd = m1; + ny = cent + m3; + } + + var nm = inArray(match[2], jsDate.regional[jsDate.regional.getLocale()]["monthNamesShort"]); + + if (nm == -1) { + nm = inArray(match[2], jsDate.regional[jsDate.regional.getLocale()]["monthNames"]); + } + + d.setFullYear(ny, nm, nd); + d.setHours(0,0,0,0); + return d; + } + + else { + return str; + } + } + ]; + + // + // I think John Reisig published this method on his blog, ejohn. + // + function inArray( elem, array ) { + if ( array.indexOf ) { + return array.indexOf( elem ); + } + + for ( var i = 0, length = array.length; i < length; i++ ) { + if ( array[ i ] === elem ) { + return i; + } + } + + return -1; + } + + // + // Thanks to Kangax, Christian Sciberras and Stack Overflow for this method. + // + function get_type(thing){ + if(thing===null) return "[object Null]"; // special case + return Object.prototype.toString.call(thing); + } + + $.jsDate = jsDate; + + + /** + * JavaScript printf/sprintf functions. + * + * This code has been adapted from the publicly available sprintf methods + * by Ash Searle. His original header follows: + * + * This code is unrestricted: you are free to use it however you like. + * + * The functions should work as expected, performing left or right alignment, + * truncating strings, outputting numbers with a required precision etc. + * + * For complex cases, these functions follow the Perl implementations of + * (s)printf, allowing arguments to be passed out-of-order, and to set the + * precision or length of the output based on arguments instead of fixed + * numbers. + * + * See http://perldoc.perl.org/functions/sprintf.html for more information. + * + * Implemented: + * - zero and space-padding + * - right and left-alignment, + * - base X prefix (binary, octal and hex) + * - positive number prefix + * - (minimum) width + * - precision / truncation / maximum width + * - out of order arguments + * + * Not implemented (yet): + * - vector flag + * - size (bytes, words, long-words etc.) + * + * Will not implement: + * - %n or %p (no pass-by-reference in JavaScript) + * + * @version 2007.04.27 + * @author Ash Searle + * + * You can see the original work and comments on his blog: + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + */ + + /** + * @Modifications 2009.05.26 + * @author Chris Leonello + * + * Added %p %P specifier + * Acts like %g or %G but will not add more significant digits to the output than present in the input. + * Example: + * Format: '%.3p', Input: 0.012, Output: 0.012 + * Format: '%.3g', Input: 0.012, Output: 0.0120 + * Format: '%.4p', Input: 12.0, Output: 12.0 + * Format: '%.4g', Input: 12.0, Output: 12.00 + * Format: '%.4p', Input: 4.321e-5, Output: 4.321e-5 + * Format: '%.4g', Input: 4.321e-5, Output: 4.3210e-5 + * + * Example: + * >>> $.jqplot.sprintf('%.2f, %d', 23.3452, 43.23) + * "23.35, 43" + * >>> $.jqplot.sprintf("no value: %n, decimal with thousands separator: %'d", 23.3452, 433524) + * "no value: , decimal with thousands separator: 433,524" + */ + $.jqplot.sprintf = function() { + function pad(str, len, chr, leftJustify) { + var padding = (str.length >= len) ? '' : Array(1 + len - str.length >>> 0).join(chr); + return leftJustify ? str + padding : padding + str; + + } + + function thousand_separate(value) { + var value_str = new String(value); + for (var i=10; i>0; i--) { + if (value_str == (value_str = value_str.replace(/^(\d+)(\d{3})/, "$1"+$.jqplot.sprintf.thousandsSeparator+"$2"))) break; + } + return value_str; + } + + function justify(value, prefix, leftJustify, minWidth, zeroPad, htmlSpace) { + var diff = minWidth - value.length; + if (diff > 0) { + var spchar = ' '; + if (htmlSpace) { spchar = ' '; } + if (leftJustify || !zeroPad) { + value = pad(value, minWidth, spchar, leftJustify); + } else { + value = value.slice(0, prefix.length) + pad('', diff, '0', true) + value.slice(prefix.length); + } + } + return value; + } + + function formatBaseX(value, base, prefix, leftJustify, minWidth, precision, zeroPad, htmlSpace) { + // Note: casts negative numbers to positive ones + var number = value >>> 0; + prefix = prefix && number && {'2': '0b', '8': '0', '16': '0x'}[base] || ''; + value = prefix + pad(number.toString(base), precision || 0, '0', false); + return justify(value, prefix, leftJustify, minWidth, zeroPad, htmlSpace); + } + + function formatString(value, leftJustify, minWidth, precision, zeroPad, htmlSpace) { + if (precision != null) { + value = value.slice(0, precision); + } + return justify(value, '', leftJustify, minWidth, zeroPad, htmlSpace); + } + + var a = arguments, i = 0, format = a[i++]; + + return format.replace($.jqplot.sprintf.regex, function(substring, valueIndex, flags, minWidth, _, precision, type) { + if (substring == '%%') { return '%'; } + + // parse flags + var leftJustify = false, positivePrefix = '', zeroPad = false, prefixBaseX = false, htmlSpace = false, thousandSeparation = false; + for (var j = 0; flags && j < flags.length; j++) switch (flags.charAt(j)) { + case ' ': positivePrefix = ' '; break; + case '+': positivePrefix = '+'; break; + case '-': leftJustify = true; break; + case '0': zeroPad = true; break; + case '#': prefixBaseX = true; break; + case '&': htmlSpace = true; break; + case '\'': thousandSeparation = true; break; + } + + // parameters may be null, undefined, empty-string or real valued + // we want to ignore null, undefined and empty-string values + + if (!minWidth) { + minWidth = 0; + } + else if (minWidth == '*') { + minWidth = +a[i++]; + } + else if (minWidth.charAt(0) == '*') { + minWidth = +a[minWidth.slice(1, -1)]; + } + else { + minWidth = +minWidth; + } + + // Note: undocumented perl feature: + if (minWidth < 0) { + minWidth = -minWidth; + leftJustify = true; + } + + if (!isFinite(minWidth)) { + throw new Error('$.jqplot.sprintf: (minimum-)width must be finite'); + } + + if (!precision) { + precision = 'fFeE'.indexOf(type) > -1 ? 6 : (type == 'd') ? 0 : void(0); + } + else if (precision == '*') { + precision = +a[i++]; + } + else if (precision.charAt(0) == '*') { + precision = +a[precision.slice(1, -1)]; + } + else { + precision = +precision; + } + + // grab value using valueIndex if required? + var value = valueIndex ? a[valueIndex.slice(0, -1)] : a[i++]; + + switch (type) { + case 's': { + if (value == null) { + return ''; + } + return formatString(String(value), leftJustify, minWidth, precision, zeroPad, htmlSpace); + } + case 'c': return formatString(String.fromCharCode(+value), leftJustify, minWidth, precision, zeroPad, htmlSpace); + case 'b': return formatBaseX(value, 2, prefixBaseX, leftJustify, minWidth, precision, zeroPad,htmlSpace); + case 'o': return formatBaseX(value, 8, prefixBaseX, leftJustify, minWidth, precision, zeroPad, htmlSpace); + case 'x': return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad, htmlSpace); + case 'X': return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad, htmlSpace).toUpperCase(); + case 'u': return formatBaseX(value, 10, prefixBaseX, leftJustify, minWidth, precision, zeroPad, htmlSpace); + case 'i': { + var number = parseInt(+value, 10); + if (isNaN(number)) { + return ''; + } + var prefix = number < 0 ? '-' : positivePrefix; + var number_str = thousandSeparation ? thousand_separate(String(Math.abs(number))): String(Math.abs(number)); + value = prefix + pad(number_str, precision, '0', false); + //value = prefix + pad(String(Math.abs(number)), precision, '0', false); + return justify(value, prefix, leftJustify, minWidth, zeroPad, htmlSpace); + } + case 'd': { + var number = Math.round(+value); + if (isNaN(number)) { + return ''; + } + var prefix = number < 0 ? '-' : positivePrefix; + var number_str = thousandSeparation ? thousand_separate(String(Math.abs(number))): String(Math.abs(number)); + value = prefix + pad(number_str, precision, '0', false); + return justify(value, prefix, leftJustify, minWidth, zeroPad, htmlSpace); + } + case 'e': + case 'E': + case 'f': + case 'F': + case 'g': + case 'G': + { + var number = +value; + if (isNaN(number)) { + return ''; + } + var prefix = number < 0 ? '-' : positivePrefix; + var method = ['toExponential', 'toFixed', 'toPrecision']['efg'.indexOf(type.toLowerCase())]; + var textTransform = ['toString', 'toUpperCase']['eEfFgG'.indexOf(type) % 2]; + var number_str = Math.abs(number)[method](precision); + + // Apply the decimal mark properly by splitting the number by the + // decimalMark, applying thousands separator, and then placing it + // back in. + var parts = number_str.toString().split('.'); + parts[0] = thousandSeparation ? thousand_separate(parts[0]) : parts[0]; + number_str = parts.join($.jqplot.sprintf.decimalMark); + + value = prefix + number_str; + var justified = justify(value, prefix, leftJustify, minWidth, zeroPad, htmlSpace)[textTransform](); + + return justified; + } + case 'p': + case 'P': + { + // make sure number is a number + var number = +value; + if (isNaN(number)) { + return ''; + } + var prefix = number < 0 ? '-' : positivePrefix; + + var parts = String(Number(Math.abs(number)).toExponential()).split(/e|E/); + var sd = (parts[0].indexOf('.') != -1) ? parts[0].length - 1 : String(number).length; + var zeros = (parts[1] < 0) ? -parts[1] - 1 : 0; + + if (Math.abs(number) < 1) { + if (sd + zeros <= precision) { + value = prefix + Math.abs(number).toPrecision(sd); + } + else { + if (sd <= precision - 1) { + value = prefix + Math.abs(number).toExponential(sd-1); + } + else { + value = prefix + Math.abs(number).toExponential(precision-1); + } + } + } + else { + var prec = (sd <= precision) ? sd : precision; + value = prefix + Math.abs(number).toPrecision(prec); + } + var textTransform = ['toString', 'toUpperCase']['pP'.indexOf(type) % 2]; + return justify(value, prefix, leftJustify, minWidth, zeroPad, htmlSpace)[textTransform](); + } + case 'n': return ''; + default: return substring; + } + }); + }; + + $.jqplot.sprintf.thousandsSeparator = ','; + // Specifies the decimal mark for floating point values. By default a period '.' + // is used. If you change this value to for example a comma be sure to also + // change the thousands separator or else this won't work since a simple String + // replace is used (replacing all periods with the mark specified here). + $.jqplot.sprintf.decimalMark = '.'; + + $.jqplot.sprintf.regex = /%%|%(\d+\$)?([-+#0&\' ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([nAscboxXuidfegpEGP])/g; + + $.jqplot.getSignificantFigures = function(number) { + var parts = String(Number(Math.abs(number)).toExponential()).split(/e|E/); + // total significant digits + var sd = (parts[0].indexOf('.') != -1) ? parts[0].length - 1 : parts[0].length; + var zeros = (parts[1] < 0) ? -parts[1] - 1 : 0; + // exponent + var expn = parseInt(parts[1], 10); + // digits to the left of the decimal place + var dleft = (expn + 1 > 0) ? expn + 1 : 0; + // digits to the right of the decimal place + var dright = (sd <= dleft) ? 0 : sd - expn - 1; + return {significantDigits: sd, digitsLeft: dleft, digitsRight: dright, zeros: zeros, exponent: expn} ; + }; + + $.jqplot.getPrecision = function(number) { + return $.jqplot.getSignificantFigures(number).digitsRight; + }; + + + + + var backCompat = $.uiBackCompat !== false; + + $.jqplot.effects = { + effect: {} + }; + + // prefix used for storing data on .data() + var dataSpace = "jqplot.storage."; + + /******************************************************************************/ + /*********************************** EFFECTS **********************************/ + /******************************************************************************/ + + $.extend( $.jqplot.effects, { + version: "1.9pre", + + // Saves a set of properties in a data storage + save: function( element, set ) { + for( var i=0; i < set.length; i++ ) { + if ( set[ i ] !== null ) { + element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] ); + } + } + }, + + // Restores a set of previously saved properties from a data storage + restore: function( element, set ) { + for( var i=0; i < set.length; i++ ) { + if ( set[ i ] !== null ) { + element.css( set[ i ], element.data( dataSpace + set[ i ] ) ); + } + } + }, + + setMode: function( el, mode ) { + if (mode === "toggle") { + mode = el.is( ":hidden" ) ? "show" : "hide"; + } + return mode; + }, + + // Wraps the element around a wrapper that copies position properties + createWrapper: function( element ) { + + // if the element is already wrapped, return it + if ( element.parent().is( ".ui-effects-wrapper" )) { + return element.parent(); + } + + // wrap the element + var props = { + width: element.outerWidth(true), + height: element.outerHeight(true), + "float": element.css( "float" ) + }, + wrapper = $( "<div></div>" ) + .addClass( "ui-effects-wrapper" ) + .css({ + fontSize: "100%", + background: "transparent", + border: "none", + margin: 0, + padding: 0 + }), + // Store the size in case width/height are defined in % - Fixes #5245 + size = { + width: element.width(), + height: element.height() + }, + active = document.activeElement; + + element.wrap( wrapper ); + + // Fixes #7595 - Elements lose focus when wrapped. + if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { + $( active ).focus(); + } + + wrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually loose the reference to the wrapped element + + // transfer positioning properties to the wrapper + if ( element.css( "position" ) === "static" ) { + wrapper.css({ position: "relative" }); + element.css({ position: "relative" }); + } else { + $.extend( props, { + position: element.css( "position" ), + zIndex: element.css( "z-index" ) + }); + $.each([ "top", "left", "bottom", "right" ], function(i, pos) { + props[ pos ] = element.css( pos ); + if ( isNaN( parseInt( props[ pos ], 10 ) ) ) { + props[ pos ] = "auto"; + } + }); + element.css({ + position: "relative", + top: 0, + left: 0, + right: "auto", + bottom: "auto" + }); + } + element.css(size); + + return wrapper.css( props ).show(); + }, + + removeWrapper: function( element ) { + var active = document.activeElement; + + if ( element.parent().is( ".ui-effects-wrapper" ) ) { + element.parent().replaceWith( element ); + + // Fixes #7595 - Elements lose focus when wrapped. + if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { + $( active ).focus(); + } + } + + + return element; + } + }); + + // return an effect options object for the given parameters: + function _normalizeArguments( effect, options, speed, callback ) { + + // short path for passing an effect options object: + if ( $.isPlainObject( effect ) ) { + return effect; + } + + // convert to an object + effect = { effect: effect }; + + // catch (effect) + if ( options === undefined ) { + options = {}; + } + + // catch (effect, callback) + if ( $.isFunction( options ) ) { + callback = options; + speed = null; + options = {}; + } + + // catch (effect, speed, ?) + if ( $.type( options ) === "number" || $.fx.speeds[ options ]) { + callback = speed; + speed = options; + options = {}; + } + + // catch (effect, options, callback) + if ( $.isFunction( speed ) ) { + callback = speed; + speed = null; + } + + // add options to effect + if ( options ) { + $.extend( effect, options ); + } + + speed = speed || options.duration; + effect.duration = $.fx.off ? 0 : typeof speed === "number" + ? speed : speed in $.fx.speeds ? $.fx.speeds[ speed ] : $.fx.speeds._default; + + effect.complete = callback || options.complete; + + return effect; + } + + function standardSpeed( speed ) { + // valid standard speeds + if ( !speed || typeof speed === "number" || $.fx.speeds[ speed ] ) { + return true; + } + + // invalid strings - treat as "normal" speed + if ( typeof speed === "string" && !$.jqplot.effects.effect[ speed ] ) { + // TODO: remove in 2.0 (#7115) + if ( backCompat && $.jqplot.effects[ speed ] ) { + return false; + } + return true; + } + + return false; + } + + $.fn.extend({ + jqplotEffect: function( effect, options, speed, callback ) { + var args = _normalizeArguments.apply( this, arguments ), + mode = args.mode, + queue = args.queue, + effectMethod = $.jqplot.effects.effect[ args.effect ], + + // DEPRECATED: remove in 2.0 (#7115) + oldEffectMethod = !effectMethod && backCompat && $.jqplot.effects[ args.effect ]; + + if ( $.fx.off || !( effectMethod || oldEffectMethod ) ) { + // delegate to the original method (e.g., .show()) if possible + if ( mode ) { + return this[ mode ]( args.duration, args.complete ); + } else { + return this.each( function() { + if ( args.complete ) { + args.complete.call( this ); + } + }); + } + } + + function run( next ) { + var elem = $( this ), + complete = args.complete, + mode = args.mode; + + function done() { + if ( $.isFunction( complete ) ) { + complete.call( elem[0] ); + } + if ( $.isFunction( next ) ) { + next(); + } + } + + // if the element is hiddden and mode is hide, + // or element is visible and mode is show + if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) { + done(); + } else { + effectMethod.call( elem[0], args, done ); + } + } + + // TODO: remove this check in 2.0, effectMethod will always be true + if ( effectMethod ) { + return queue === false ? this.each( run ) : this.queue( queue || "fx", run ); + } else { + // DEPRECATED: remove in 2.0 (#7115) + return oldEffectMethod.call(this, { + options: args, + duration: args.duration, + callback: args.complete, + mode: args.mode + }); + } + } + }); + + + + + var rvertical = /up|down|vertical/, + rpositivemotion = /up|left|vertical|horizontal/; + + $.jqplot.effects.effect.blind = function( o, done ) { + // Create element + var el = $( this ), + props = [ "position", "top", "bottom", "left", "right", "height", "width" ], + mode = $.jqplot.effects.setMode( el, o.mode || "hide" ), + direction = o.direction || "up", + vertical = rvertical.test( direction ), + ref = vertical ? "height" : "width", + ref2 = vertical ? "top" : "left", + motion = rpositivemotion.test( direction ), + animation = {}, + show = mode === "show", + wrapper, distance, top; + + // // if already wrapped, the wrapper's properties are my property. #6245 + if ( el.parent().is( ".ui-effects-wrapper" ) ) { + $.jqplot.effects.save( el.parent(), props ); + } else { + $.jqplot.effects.save( el, props ); + } + el.show(); + top = parseInt(el.css('top'), 10); + wrapper = $.jqplot.effects.createWrapper( el ).css({ + overflow: "hidden" + }); + + distance = vertical ? wrapper[ ref ]() + top : wrapper[ ref ](); + + animation[ ref ] = show ? String(distance) : '0'; + if ( !motion ) { + el + .css( vertical ? "bottom" : "right", 0 ) + .css( vertical ? "top" : "left", "" ) + .css({ position: "absolute" }); + animation[ ref2 ] = show ? '0' : String(distance); + } + + // // start at 0 if we are showing + if ( show ) { + wrapper.css( ref, 0 ); + if ( ! motion ) { + wrapper.css( ref2, distance ); + } + } + + // // Animate + wrapper.animate( animation, { + duration: o.duration, + easing: o.easing, + queue: false, + complete: function() { + if ( mode === "hide" ) { + el.hide(); + } + $.jqplot.effects.restore( el, props ); + $.jqplot.effects.removeWrapper( el ); + done(); + } + }); + + }; + +})(jQuery); diff --git a/plugins/wp-statistics/assets/jqplot/jquery.jqplot.min.css b/plugins/wp-statistics/assets/jqplot/jquery.jqplot.min.css new file mode 100644 index 0000000..036bd16 --- /dev/null +++ b/plugins/wp-statistics/assets/jqplot/jquery.jqplot.min.css @@ -0,0 +1 @@ +.jqplot-xaxis,.jqplot-xaxis-label{margin-top:10px}.jqplot-x2axis,.jqplot-x2axis-label{margin-bottom:10px}.jqplot-target{position:relative;color:#666;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;font-size:1em}.jqplot-axis{font-size:.75em}.jqplot-yaxis{margin-right:10px}.jqplot-y2axis,.jqplot-y3axis,.jqplot-y4axis,.jqplot-y5axis,.jqplot-y6axis,.jqplot-y7axis,.jqplot-y8axis,.jqplot-y9axis,.jqplot-yMidAxis{margin-left:10px;margin-right:10px}.jqplot-axis-tick,.jqplot-x2axis-tick,.jqplot-xaxis-tick,.jqplot-y2axis-tick,.jqplot-y3axis-tick,.jqplot-y4axis-tick,.jqplot-y5axis-tick,.jqplot-y6axis-tick,.jqplot-y7axis-tick,.jqplot-y8axis-tick,.jqplot-y9axis-tick,.jqplot-yMidAxis-tick,.jqplot-yaxis-tick{position:absolute;white-space:pre}.jqplot-xaxis-tick{top:0;left:15px;vertical-align:top}.jqplot-x2axis-tick{bottom:0;left:15px;vertical-align:bottom}.jqplot-yaxis-tick{right:0;top:15px;text-align:right}.jqplot-yaxis-tick.jqplot-breakTick{right:-20px;margin-right:0;padding:1px 5px;z-index:2;font-size:1.5em}.jqplot-x2axis-label,.jqplot-xaxis-label,.jqplot-yMidAxis-label,.jqplot-yaxis-label{font-size:11pt;position:absolute}.jqplot-y2axis-tick,.jqplot-y3axis-tick,.jqplot-y4axis-tick,.jqplot-y5axis-tick,.jqplot-y6axis-tick,.jqplot-y7axis-tick,.jqplot-y8axis-tick,.jqplot-y9axis-tick{left:0;top:15px;text-align:left}.jqplot-yMidAxis-tick{text-align:center;white-space:nowrap}.jqplot-yaxis-label{margin-right:10px}.jqplot-y2axis-label,.jqplot-y3axis-label,.jqplot-y4axis-label,.jqplot-y5axis-label,.jqplot-y6axis-label,.jqplot-y7axis-label,.jqplot-y8axis-label,.jqplot-y9axis-label{font-size:11pt;margin-left:10px;position:absolute}.jqplot-meterGauge-tick{font-size:.75em;color:#999}.jqplot-meterGauge-label{font-size:1em;color:#999}table.jqplot-table-legend{margin:12px}table.jqplot-cursor-legend,table.jqplot-table-legend{background-color:rgba(255,255,255,.6);border:1px solid #ccc;position:absolute;font-size:.75em}td.jqplot-table-legend{vertical-align:middle}td.jqplot-seriesToggle:active,td.jqplot-seriesToggle:hover{cursor:pointer}.jqplot-table-legend .jqplot-series-hidden{text-decoration:line-through}div.jqplot-table-legend-swatch-outline{border:1px solid #ccc;padding:1px}div.jqplot-table-legend-swatch{width:0;height:0;border-width:5px 6px;border-style:solid}.jqplot-title{top:0;left:0;padding-bottom:.5em;font-size:1.2em}table.jqplot-cursor-tooltip{border:1px solid #ccc;font-size:.75em}.jqplot-canvasOverlay-tooltip,.jqplot-cursor-tooltip,.jqplot-highlighter-tooltip{border:1px solid #ccc;font-size:.75em;white-space:nowrap;background:rgba(208,208,208,.5);padding:1px}.jqplot-point-label{font-size:.75em;z-index:2}td.jqplot-cursor-legend-swatch{vertical-align:middle;text-align:center}div.jqplot-cursor-legend-swatch{width:1.2em;height:.7em}.jqplot-error{text-align:center}.jqplot-error-message{position:relative;top:46%;display:inline-block}div.jqplot-bubble-label{font-size:.8em;padding-left:2px;padding-right:2px;color:rgb(20%,20%,20%)}div.jqplot-bubble-label.jqplot-bubble-label-highlight{background:rgba(90%,90%,90%,.7)}div.jqplot-noData-container{text-align:center;background-color:rgba(96%,96%,96%,.3)} \ No newline at end of file diff --git a/plugins/wp-statistics/assets/jqplot/jquery.jqplot.min.js b/plugins/wp-statistics/assets/jqplot/jquery.jqplot.min.js new file mode 100644 index 0000000..6cda2b0 --- /dev/null +++ b/plugins/wp-statistics/assets/jqplot/jquery.jqplot.min.js @@ -0,0 +1,8 @@ +/* jqplot 1.0.9 | (c) 2009-2016 Chris Leonello | jqplot.com + jsDate | (c) 2010-2016 Chris Leonello + */ +!function(a){function b(b){a.jqplot.ElemContainer.call(this),this.name=b,this._series=[],this.show=!1,this.tickRenderer=a.jqplot.AxisTickRenderer,this.tickOptions={},this.labelRenderer=a.jqplot.AxisLabelRenderer,this.labelOptions={},this.label=null,this.showLabel=!0,this.min=null,this.max=null,this.autoscale=!1,this.pad=1.2,this.padMax=null,this.padMin=null,this.ticks=[],this.numberTicks,this.tickInterval,this.renderer=a.jqplot.LinearAxisRenderer,this.rendererOptions={},this.showTicks=!0,this.showTickMarks=!0,this.showMinorTicks=!0,this.drawMajorGridlines=!0,this.drawMinorGridlines=!1,this.drawMajorTickMarks=!0,this.drawMinorTickMarks=!0,this.useSeriesColor=!1,this.borderWidth=null,this.borderColor=null,this.scaleToHiddenSeries=!1,this._dataBounds={min:null,max:null},this._intervalStats=[],this._offsets={min:null,max:null},this._ticks=[],this._label=null,this.syncTicks=null,this.tickSpacing=75,this._min=null,this._max=null,this._tickInterval=null,this._numberTicks=null,this.__ticks=null,this._options={}}function c(b){a.jqplot.ElemContainer.call(this),this.show=!1,this.location="ne",this.labels=[],this.showLabels=!0,this.showSwatches=!0,this.placement="insideGrid",this.xoffset=0,this.yoffset=0,this.border,this.background,this.textColor,this.fontFamily,this.fontSize,this.rowSpacing="0.5em",this.renderer=a.jqplot.TableLegendRenderer,this.rendererOptions={},this.preDraw=!1,this.marginTop=null,this.marginRight=null,this.marginBottom=null,this.marginLeft=null,this.escapeHtml=!1,this._series=[],a.extend(!0,this,b)}function d(b){a.jqplot.ElemContainer.call(this),this.text=b,this.show=!0,this.fontFamily,this.fontSize,this.textAlign,this.textColor,this.renderer=a.jqplot.DivTitleRenderer,this.rendererOptions={},this.escapeHtml=!1}function e(b){b=b||{},a.jqplot.ElemContainer.call(this),this.show=!0,this.xaxis="xaxis",this._xaxis,this.yaxis="yaxis",this._yaxis,this.gridBorderWidth=2,this.renderer=a.jqplot.LineRenderer,this.rendererOptions={},this.data=[],this.gridData=[],this.label="",this.showLabel=!0,this.color,this.negativeColor,this.lineWidth=2.5,this.lineJoin="round",this.lineCap="round",this.linePattern="solid",this.shadow=!0,this.shadowAngle=45,this.shadowOffset=1.25,this.shadowDepth=3,this.shadowAlpha="0.1",this.breakOnNull=!1,this.markerRenderer=a.jqplot.MarkerRenderer,this.markerOptions={},this.showLine=!0,this.showMarker=!0,this.index,this.fill=!1,this.fillColor,this.fillAlpha,this.fillAndStroke=!1,this.disableStack=!1,this._stack=!1,this.neighborThreshold=4,this.fillToZero=!1,this.fillToValue=0,this.fillAxis="y",this.useNegativeColors=!0,this._stackData=[],this._plotData=[],this._plotValues={x:[],y:[]},this._intervals={x:{},y:{}},this._prevPlotData=[],this._prevGridData=[],this._stackAxis="y",this._primaryAxis="_xaxis",this.canvas=new a.jqplot.GenericCanvas,this.shadowCanvas=new a.jqplot.GenericCanvas,this.plugins={},this._sumy=0,this._sumx=0,this._type="",this.step=!1}function f(){a.jqplot.ElemContainer.call(this),this.drawGridlines=!0,this.gridLineColor="#cccccc",this.gridLineWidth=1,this.background="#fffdf6",this.borderColor="#999999",this.borderWidth=2,this.drawBorder=!0,this.shadow=!0,this.shadowAngle=45,this.shadowOffset=1.5,this.shadowWidth=3,this.shadowDepth=3,this.shadowColor=null,this.shadowAlpha="0.07",this._left,this._top,this._right,this._bottom,this._width,this._height,this._axes=[],this.renderer=a.jqplot.CanvasGridRenderer,this.rendererOptions={},this._offsets={top:null,bottom:null,left:null,right:null}}function g(){function h(a){for(var b,c=0;c<a.length;c++)for(var d,e=[a[c].data,a[c]._stackData,a[c]._plotData,a[c]._prevPlotData],f=0;f<4;f++)if(d=!0,b=e[f],"x"==a[c]._stackAxis){for(var g=0;g<b.length;g++)if("number"!=typeof b[g][1]){d=!1;break}d&&b.sort(function(a,b){return a[1]-b[1]})}else{for(var g=0;g<b.length;g++)if("number"!=typeof b[g][0]){d=!1;break}d&&b.sort(function(a,b){return a[0]-b[0]})}}function i(a){var b,c,d=a.data.plot,e=d.eventCanvas._elem.offset(),f={x:a.pageX-e.left,y:a.pageY-e.top},g={xaxis:null,yaxis:null,x2axis:null,y2axis:null,y3axis:null,y4axis:null,y5axis:null,y6axis:null,y7axis:null,y8axis:null,y9axis:null,yMidAxis:null},h=["xaxis","yaxis","x2axis","y2axis","y3axis","y4axis","y5axis","y6axis","y7axis","y8axis","y9axis","yMidAxis"],i=d.axes;for(b=11;b>0;b--)c=h[b-1],i[c].show&&(g[c]=i[c].series_p2u(f[c.charAt(0)]));return{offsets:e,gridPos:f,dataPos:g}}function j(b,c){function d(a,b,c){var d=(b[1]-c[1])/(b[0]-c[0]),e=b[1]-d*b[0],f=a+b[1];return[(f-e)/d,f]}var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x=c.series;for(g=c.seriesStack.length-1;g>=0;g--)switch(e=c.seriesStack[g],h=x[e],u=h._highlightThreshold,h.renderer.constructor){case a.jqplot.BarRenderer:for(j=b.x,k=b.y,f=0;f<h._barPoints.length;f++)if(t=h._barPoints[f],s=h.gridData[f],j>t[0][0]&&j<t[2][0]&&(k>t[2][1]&&k<t[0][1]||k<t[2][1]&&k>t[0][1]))return{seriesIndex:h.index,pointIndex:f,gridData:s,data:h.data[f],points:h._barPoints[f]};break;case a.jqplot.PyramidRenderer:for(j=b.x,k=b.y,f=0;f<h._barPoints.length;f++)if(t=h._barPoints[f],s=h.gridData[f],j>t[0][0]+u[0][0]&&j<t[2][0]+u[2][0]&&k>t[2][1]&&k<t[0][1])return{seriesIndex:h.index,pointIndex:f,gridData:s,data:h.data[f],points:h._barPoints[f]};break;case a.jqplot.DonutRenderer:if(n=h.startAngle/180*Math.PI,j=b.x-h._center[0],k=b.y-h._center[1],i=Math.sqrt(Math.pow(j,2)+Math.pow(k,2)),j>0&&-k>=0?l=2*Math.PI-Math.atan(-k/j):j>0&&-k<0?l=-Math.atan(-k/j):j<0?l=Math.PI-Math.atan(-k/j):0==j&&-k>0?l=3*Math.PI/2:0==j&&-k<0?l=Math.PI/2:0==j&&0==k&&(l=0),n&&(l-=n,l<0?l+=2*Math.PI:l>2*Math.PI&&(l-=2*Math.PI)),m=h.sliceMargin/180*Math.PI,i<h._radius&&i>h._innerRadius)for(f=0;f<h.gridData.length;f++)if(o=f>0?h.gridData[f-1][1]+m:m,p=h.gridData[f][1],l>o&&l<p)return{seriesIndex:h.index,pointIndex:f,gridData:[b.x,b.y],data:h.data[f]};break;case a.jqplot.PieRenderer:if(n=h.startAngle/180*Math.PI,j=b.x-h._center[0],k=b.y-h._center[1],i=Math.sqrt(Math.pow(j,2)+Math.pow(k,2)),j>0&&-k>=0?l=2*Math.PI-Math.atan(-k/j):j>0&&-k<0?l=-Math.atan(-k/j):j<0?l=Math.PI-Math.atan(-k/j):0==j&&-k>0?l=3*Math.PI/2:0==j&&-k<0?l=Math.PI/2:0==j&&0==k&&(l=0),n&&(l-=n,l<0?l+=2*Math.PI:l>2*Math.PI&&(l-=2*Math.PI)),m=h.sliceMargin/180*Math.PI,i<h._radius)for(f=0;f<h.gridData.length;f++)if(o=f>0?h.gridData[f-1][1]+m:m,p=h.gridData[f][1],l>o&&l<p)return{seriesIndex:h.index,pointIndex:f,gridData:[b.x,b.y],data:h.data[f]};break;case a.jqplot.BubbleRenderer:j=b.x,k=b.y;var y=null;if(h.show){for(var f=0;f<h.gridData.length;f++)s=h.gridData[f],r=Math.sqrt((j-s[0])*(j-s[0])+(k-s[1])*(k-s[1])),r<=s[2]&&(r<=q||null==q)&&(q=r,y={seriesIndex:e,pointIndex:f,gridData:s,data:h.data[f]});if(null!=y)return y}break;case a.jqplot.FunnelRenderer:j=b.x,k=b.y;var z,A,B,C=h._vertices,D=C[0],E=C[C.length-1];for(z=d(k,D[0],E[3]),A=d(k,D[1],E[2]),f=0;f<C.length;f++)if(B=C[f],k>=B[0][1]&&k<=B[3][1]&&j>=z[0]&&j<=A[0])return{seriesIndex:h.index,pointIndex:f,gridData:null,data:h.data[f]};break;case a.jqplot.LineRenderer:if(j=b.x,k=b.y,i=h.renderer,h.show){if(!(!(h.fill||h.renderer.bands.show&&h.renderer.bands.fill)||c.plugins.highlighter&&c.plugins.highlighter.show)){var F=!1;if(j>h._boundingBox[0][0]&&j<h._boundingBox[1][0]&&k>h._boundingBox[1][1]&&k<h._boundingBox[0][1])for(var G,H=h._areaPoints.length,f=H-1,G=0;G<H;G++){var I=[h._areaPoints[G][0],h._areaPoints[G][1]],J=[h._areaPoints[f][0],h._areaPoints[f][1]];(I[1]<k&&J[1]>=k||J[1]<k&&I[1]>=k)&&I[0]+(k-I[1])/(J[1]-I[1])*(J[0]-I[0])<j&&(F=!F),f=G}if(F)return{seriesIndex:e,pointIndex:null,gridData:h.gridData,data:h.data,points:h._areaPoints};break}w=h.markerRenderer.size/2+h.neighborThreshold,v=w>0?w:0;for(var f=0;f<h.gridData.length;f++)if(s=h.gridData[f],i.constructor==a.jqplot.OHLCRenderer)if(i.candleStick){var K=h._yaxis.series_u2p;if(j>=s[0]-i._bodyWidth/2&&j<=s[0]+i._bodyWidth/2&&k>=K(h.data[f][2])&&k<=K(h.data[f][3]))return{seriesIndex:e,pointIndex:f,gridData:s,data:h.data[f]}}else if(i.hlc){var K=h._yaxis.series_u2p;if(j>=s[0]-i._tickLength&&j<=s[0]+i._tickLength&&k>=K(h.data[f][1])&&k<=K(h.data[f][2]))return{seriesIndex:e,pointIndex:f,gridData:s,data:h.data[f]}}else{var K=h._yaxis.series_u2p;if(j>=s[0]-i._tickLength&&j<=s[0]+i._tickLength&&k>=K(h.data[f][2])&&k<=K(h.data[f][3]))return{seriesIndex:e,pointIndex:f,gridData:s,data:h.data[f]}}else if(null!=s[0]&&null!=s[1]&&(r=Math.sqrt((j-s[0])*(j-s[0])+(k-s[1])*(k-s[1])),r<=v&&(r<=q||null==q)))return q=r,{seriesIndex:e,pointIndex:f,gridData:s,data:h.data[f]}}break;default:if(j=b.x,k=b.y,i=h.renderer,h.show){w=h.markerRenderer.size/2+h.neighborThreshold,v=w>0?w:0;for(var f=0;f<h.gridData.length;f++)if(s=h.gridData[f],i.constructor==a.jqplot.OHLCRenderer)if(i.candleStick){var K=h._yaxis.series_u2p;if(j>=s[0]-i._bodyWidth/2&&j<=s[0]+i._bodyWidth/2&&k>=K(h.data[f][2])&&k<=K(h.data[f][3]))return{seriesIndex:e,pointIndex:f,gridData:s,data:h.data[f]}}else if(i.hlc){var K=h._yaxis.series_u2p;if(j>=s[0]-i._tickLength&&j<=s[0]+i._tickLength&&k>=K(h.data[f][1])&&k<=K(h.data[f][2]))return{seriesIndex:e,pointIndex:f,gridData:s,data:h.data[f]}}else{var K=h._yaxis.series_u2p;if(j>=s[0]-i._tickLength&&j<=s[0]+i._tickLength&&k>=K(h.data[f][2])&&k<=K(h.data[f][3]))return{seriesIndex:e,pointIndex:f,gridData:s,data:h.data[f]}}else if(r=Math.sqrt((j-s[0])*(j-s[0])+(k-s[1])*(k-s[1])),r<=v&&(r<=q||null==q))return q=r,{seriesIndex:e,pointIndex:f,gridData:s,data:h.data[f]}}}return null}this.animate=!1,this.animateReplot=!1,this.axes={xaxis:new b("xaxis"),yaxis:new b("yaxis"),x2axis:new b("x2axis"),y2axis:new b("y2axis"),y3axis:new b("y3axis"),y4axis:new b("y4axis"),y5axis:new b("y5axis"),y6axis:new b("y6axis"),y7axis:new b("y7axis"),y8axis:new b("y8axis"),y9axis:new b("y9axis"),yMidAxis:new b("yMidAxis")},this.baseCanvas=new a.jqplot.GenericCanvas,this.captureRightClick=!1,this.data=[],this.dataRenderer,this.dataRendererOptions,this.defaults={axesDefaults:{},axes:{xaxis:{},yaxis:{},x2axis:{},y2axis:{},y3axis:{},y4axis:{},y5axis:{},y6axis:{},y7axis:{},y8axis:{},y9axis:{},yMidAxis:{}},seriesDefaults:{},series:[]},this.defaultAxisStart=1,this.drawIfHidden=!1,this.eventCanvas=new a.jqplot.GenericCanvas,this.fillBetween={series1:null,series2:null,color:null,baseSeries:0,fill:!0},this.fontFamily,this.fontSize,this.grid=new f,this.legend=new c,this.noDataIndicator={show:!1,indicator:"Loading Data...",axes:{xaxis:{min:0,max:10,tickInterval:2,show:!0},yaxis:{min:0,max:12,tickInterval:3,show:!0}}},this.negativeSeriesColors=a.jqplot.config.defaultNegativeColors,this.options={},this.previousSeriesStack=[],this.plugins={},this.series=[],this.seriesStack=[],this.seriesColors=a.jqplot.config.defaultColors,this.sortData=!0,this.stackSeries=!1,this.syncXTicks=!0,this.syncYTicks=!0,this.target=null,this.targetId=null,this.textColor,this.title=new d,this._drawCount=0,this._sumy=0,this._sumx=0,this._stackData=[],this._plotData=[],this._width=null,this._height=null,this._plotDimensions={height:null,width:null},this._gridPadding={top:null,right:null,bottom:null,left:null},this._defaultGridPadding={top:10,right:10,bottom:23,left:10},this._addDomReference=a.jqplot.config.addDomReference,this.preInitHooks=new a.jqplot.HooksManager,this.postInitHooks=new a.jqplot.HooksManager,this.preParseOptionsHooks=new a.jqplot.HooksManager,this.postParseOptionsHooks=new a.jqplot.HooksManager,this.preDrawHooks=new a.jqplot.HooksManager,this.postDrawHooks=new a.jqplot.HooksManager,this.preDrawSeriesHooks=new a.jqplot.HooksManager,this.postDrawSeriesHooks=new a.jqplot.HooksManager,this.preDrawLegendHooks=new a.jqplot.HooksManager,this.addLegendRowHooks=new a.jqplot.HooksManager,this.preSeriesInitHooks=new a.jqplot.HooksManager,this.postSeriesInitHooks=new a.jqplot.HooksManager,this.preParseSeriesOptionsHooks=new a.jqplot.HooksManager,this.postParseSeriesOptionsHooks=new a.jqplot.HooksManager,this.eventListenerHooks=new a.jqplot.EventListenerManager,this.preDrawSeriesShadowHooks=new a.jqplot.HooksManager,this.postDrawSeriesShadowHooks=new a.jqplot.HooksManager,this.colorGenerator=new a.jqplot.ColorGenerator,this.negativeColorGenerator=new a.jqplot.ColorGenerator,this.canvasManager=new a.jqplot.CanvasManager,this.themeEngine=new a.jqplot.ThemeEngine;this.init=function(c,d,e){e=e||{};for(var f=0;f<a.jqplot.preInitHooks.length;f++)a.jqplot.preInitHooks[f].call(this,c,d,e);for(var f=0;f<this.preInitHooks.hooks.length;f++)this.preInitHooks.hooks[f].call(this,c,d,e);if(this.targetId="#"+c,this.target=a("#"+c),this._addDomReference&&this.target.data("jqplot",this),this.target.removeClass("jqplot-error"),!this.target.get(0))throw new Error("No plot target specified");if("static"==this.target.css("position")&&this.target.css("position","relative"),this.target.hasClass("jqplot-target")||this.target.addClass("jqplot-target"),this.target.height())this._height=g=this.target.height();else{var g;g=e&&e.height?parseInt(e.height,10):this.target.attr("data-height")?parseInt(this.target.attr("data-height"),10):parseInt(a.jqplot.config.defaultHeight,10),this._height=g,this.target.css("height",g+"px")}if(this.target.width())this._width=i=this.target.width();else{var i;i=e&&e.width?parseInt(e.width,10):this.target.attr("data-width")?parseInt(this.target.attr("data-width"),10):parseInt(a.jqplot.config.defaultWidth,10),this._width=i,this.target.css("width",i+"px")}for(var f=0,j=I.length;f<j;f++)this.axes[I[f]]=new b(I[f]);if(this._plotDimensions.height=this._height,this._plotDimensions.width=this._width,this.grid._plotDimensions=this._plotDimensions,this.title._plotDimensions=this._plotDimensions,this.baseCanvas._plotDimensions=this._plotDimensions,this.eventCanvas._plotDimensions=this._plotDimensions,this.legend._plotDimensions=this._plotDimensions,this._height<=0||this._width<=0||!this._height||!this._width)throw new Error("Canvas dimension not set");if(e.dataRenderer&&a.isFunction(e.dataRenderer)&&(e.dataRendererOptions&&(this.dataRendererOptions=e.dataRendererOptions),this.dataRenderer=e.dataRenderer,d=this.dataRenderer(d,this,this.dataRendererOptions)),e.noDataIndicator&&a.isPlainObject(e.noDataIndicator)&&a.extend(!0,this.noDataIndicator,e.noDataIndicator),null==d||0==a.isArray(d)||0==d.length||0==a.isArray(d[0])||0==d[0].length){if(0==this.noDataIndicator.show)throw new Error("No data specified");for(var k in this.noDataIndicator.axes)for(var l in this.noDataIndicator.axes[k])this.axes[k][l]=this.noDataIndicator.axes[k][l];this.postDrawHooks.add(function(){var b=this.eventCanvas.getHeight(),c=this.eventCanvas.getWidth(),d=a('<div class="jqplot-noData-container" style="position:absolute;"></div>');this.target.append(d),d.height(b),d.width(c),d.css("top",this.eventCanvas._offsets.top),d.css("left",this.eventCanvas._offsets.left);var e=a('<div class="jqplot-noData-contents" style="text-align:center; position:relative; margin-left:auto; margin-right:auto;"></div>');d.append(e),e.html(this.noDataIndicator.indicator);var f=e.height(),g=e.width();e.height(f),e.width(g),e.css("top",(b-f)/2+"px")})}this.data=a.extend(!0,[],d),this.parseOptions(e),this.textColor&&this.target.css("color",this.textColor),this.fontFamily&&this.target.css("font-family",this.fontFamily),this.fontSize&&this.target.css("font-size",this.fontSize),this.title.init(),this.legend.init(),this._sumy=0,this._sumx=0,this.computePlotData();for(var f=0;f<this.series.length;f++){this.seriesStack.push(f),this.previousSeriesStack.push(f),this.series[f].shadowCanvas._plotDimensions=this._plotDimensions,this.series[f].canvas._plotDimensions=this._plotDimensions;for(var m=0;m<a.jqplot.preSeriesInitHooks.length;m++)a.jqplot.preSeriesInitHooks[m].call(this.series[f],c,this.data,this.options.seriesDefaults,this.options.series[f],this);for(var m=0;m<this.preSeriesInitHooks.hooks.length;m++)this.preSeriesInitHooks.hooks[m].call(this.series[f],c,this.data,this.options.seriesDefaults,this.options.series[f],this);this.series[f]._plotDimensions=this._plotDimensions,this.series[f].init(f,this.grid.borderWidth,this);for(var m=0;m<a.jqplot.postSeriesInitHooks.length;m++)a.jqplot.postSeriesInitHooks[m].call(this.series[f],c,this.data,this.options.seriesDefaults,this.options.series[f],this);for(var m=0;m<this.postSeriesInitHooks.hooks.length;m++)this.postSeriesInitHooks.hooks[m].call(this.series[f],c,this.data,this.options.seriesDefaults,this.options.series[f],this);this._sumy+=this.series[f]._sumy,this._sumx+=this.series[f]._sumx}for(var n,o,f=0,j=I.length;f<j;f++)n=I[f],o=this.axes[n],o._plotDimensions=this._plotDimensions,o.init(),null==this.axes[n].borderColor&&("x"!==n.charAt(0)&&o.useSeriesColor===!0&&o.show?o.borderColor=o._series[0].color:o.borderColor=this.grid.borderColor);this.sortData&&h(this.series),this.grid.init(),this.grid._axes=this.axes,this.legend._series=this.series;for(var f=0;f<a.jqplot.postInitHooks.length;f++)a.jqplot.postInitHooks[f].call(this,c,this.data,e);for(var f=0;f<this.postInitHooks.hooks.length;f++)this.postInitHooks.hooks[f].call(this,c,this.data,e)},this.resetAxesScale=function(b,c){var d=c||{},e=b||this.axes;if(e===!0&&(e=this.axes),a.isArray(e))for(var f=0;f<e.length;f++)this.axes[e[f]].resetScale(d[e[f]]);else if("object"==typeof e)for(var g in e)this.axes[g].resetScale(d[g])},this.reInitialize=function(c,d){for(var e=a.extend(!0,{},this.options,d),f=this.targetId.substr(1),g=null==c?this.data:c,i=0;i<a.jqplot.preInitHooks.length;i++)a.jqplot.preInitHooks[i].call(this,f,g,e);for(var i=0;i<this.preInitHooks.hooks.length;i++)this.preInitHooks.hooks[i].call(this,f,g,e);if(this._height=this.target.height(),this._width=this.target.width(),this._height<=0||this._width<=0||!this._height||!this._width)throw new Error("Target dimension not set");this._plotDimensions.height=this._height,this._plotDimensions.width=this._width,this.grid._plotDimensions=this._plotDimensions,this.title._plotDimensions=this._plotDimensions,this.baseCanvas._plotDimensions=this._plotDimensions,this.eventCanvas._plotDimensions=this._plotDimensions,this.legend._plotDimensions=this._plotDimensions;for(var j,k,l,m,i=0,n=I.length;i<n;i++){j=I[i],m=this.axes[j],k=m._ticks;for(var l=0,o=k.length;l<o;l++){var p=k[l]._elem;p&&(a.jqplot.use_excanvas&&window.G_vmlCanvasManager.uninitElement!==H&&window.G_vmlCanvasManager.uninitElement(p.get(0)),p.emptyForce(),p=null,k._elem=null)}k=null,delete m.ticks,delete m._ticks,this.axes[j]=new b(j),this.axes[j]._plotWidth=this._width,this.axes[j]._plotHeight=this._height}c&&(e.dataRenderer&&a.isFunction(e.dataRenderer)&&(e.dataRendererOptions&&(this.dataRendererOptions=e.dataRendererOptions),this.dataRenderer=e.dataRenderer,c=this.dataRenderer(c,this,this.dataRendererOptions)),this.data=a.extend(!0,[],c)),d&&this.parseOptions(e),this.title._plotWidth=this._width,this.textColor&&this.target.css("color",this.textColor),this.fontFamily&&this.target.css("font-family",this.fontFamily),this.fontSize&&this.target.css("font-size",this.fontSize),this.title.init(),this.legend.init(),this._sumy=0,this._sumx=0,this.seriesStack=[],this.previousSeriesStack=[],this.computePlotData();for(var i=0,n=this.series.length;i<n;i++){this.seriesStack.push(i),this.previousSeriesStack.push(i),this.series[i].shadowCanvas._plotDimensions=this._plotDimensions,this.series[i].canvas._plotDimensions=this._plotDimensions;for(var l=0;l<a.jqplot.preSeriesInitHooks.length;l++)a.jqplot.preSeriesInitHooks[l].call(this.series[i],f,this.data,this.options.seriesDefaults,this.options.series[i],this);for(var l=0;l<this.preSeriesInitHooks.hooks.length;l++)this.preSeriesInitHooks.hooks[l].call(this.series[i],f,this.data,this.options.seriesDefaults,this.options.series[i],this);this.series[i]._plotDimensions=this._plotDimensions,this.series[i].init(i,this.grid.borderWidth,this);for(var l=0;l<a.jqplot.postSeriesInitHooks.length;l++)a.jqplot.postSeriesInitHooks[l].call(this.series[i],f,this.data,this.options.seriesDefaults,this.options.series[i],this);for(var l=0;l<this.postSeriesInitHooks.hooks.length;l++)this.postSeriesInitHooks.hooks[l].call(this.series[i],f,this.data,this.options.seriesDefaults,this.options.series[i],this);this._sumy+=this.series[i]._sumy,this._sumx+=this.series[i]._sumx}for(var i=0,n=I.length;i<n;i++)j=I[i],m=this.axes[j],m._plotDimensions=this._plotDimensions,m.init(),null==m.borderColor&&("x"!==j.charAt(0)&&m.useSeriesColor===!0&&m.show?m.borderColor=m._series[0].color:m.borderColor=this.grid.borderColor);this.sortData&&h(this.series),this.grid.init(),this.grid._axes=this.axes,this.legend._series=this.series;for(var i=0,n=a.jqplot.postInitHooks.length;i<n;i++)a.jqplot.postInitHooks[i].call(this,f,this.data,e);for(var i=0,n=this.postInitHooks.hooks.length;i<n;i++)this.postInitHooks.hooks[i].call(this,f,this.data,e)},this.quickInit=function(){if(this._height=this.target.height(),this._width=this.target.width(),this._height<=0||this._width<=0||!this._height||!this._width)throw new Error("Target dimension not set");this._plotDimensions.height=this._height,this._plotDimensions.width=this._width,this.grid._plotDimensions=this._plotDimensions,this.title._plotDimensions=this._plotDimensions,this.baseCanvas._plotDimensions=this._plotDimensions,this.eventCanvas._plotDimensions=this._plotDimensions,this.legend._plotDimensions=this._plotDimensions;for(var b in this.axes)this.axes[b]._plotWidth=this._width,this.axes[b]._plotHeight=this._height;this.title._plotWidth=this._width,this.textColor&&this.target.css("color",this.textColor),this.fontFamily&&this.target.css("font-family",this.fontFamily),this.fontSize&&this.target.css("font-size",this.fontSize),this._sumy=0,this._sumx=0,this.computePlotData();for(var c=0;c<this.series.length;c++)"line"===this.series[c]._type&&this.series[c].renderer.bands.show&&this.series[c].renderer.initBands.call(this.series[c],this.series[c].renderer.options,this),this.series[c]._plotDimensions=this._plotDimensions,this.series[c].canvas._plotDimensions=this._plotDimensions,this._sumy+=this.series[c]._sumy,this._sumx+=this.series[c]._sumx;for(var d,e=0;e<12;e++){d=I[e];for(var f=this.axes[d]._ticks,c=0;c<f.length;c++){var g=f[c]._elem;g&&(a.jqplot.use_excanvas&&window.G_vmlCanvasManager.uninitElement!==H&&window.G_vmlCanvasManager.uninitElement(g.get(0)),g.emptyForce(),g=null,f._elem=null)}f=null,this.axes[d]._plotDimensions=this._plotDimensions,this.axes[d]._ticks=[]}this.sortData&&h(this.series),this.grid._axes=this.axes,this.legend._series=this.series},this.computePlotData=function(){this._plotData=[],this._stackData=[];var b,c,d;for(c=0,d=this.series.length;c<d;c++){b=this.series[c],this._plotData.push([]),this._stackData.push([]);var e=b.data;this._plotData[c]=a.extend(!0,[],e),this._stackData[c]=a.extend(!0,[],e),b._plotData=this._plotData[c],b._stackData=this._stackData[c];var f={x:[],y:[]};if(this.stackSeries&&!b.disableStack){b._stack=!0;for(var g="x"===b._stackAxis?0:1,h=0,i=e.length;h<i;h++){var j=e[h][g];if(null==j&&(j=0),this._plotData[c][h][g]=j,this._stackData[c][h][g]=j,c>0)for(var k=c;k--;){var l=this._plotData[k][h][g];if(j*l>=0){this._plotData[c][h][g]+=l,this._stackData[c][h][g]+=l;break}}}}else{for(var m=0;m<b.data.length;m++)f.x.push(b.data[m][0]),f.y.push(b.data[m][1]);this._stackData.push(b.data),this.series[c]._stackData=b.data,this._plotData.push(b.data),b._plotData=b.data,b._plotValues=f}for(c>0&&(b._prevPlotData=this.series[c-1]._plotData),b._sumy=0,b._sumx=0,m=b.data.length-1;m>-1;m--)b._sumy+=b.data[m][1],b._sumx+=b.data[m][0]}},this.populatePlotData=function(b,c){this._plotData=[],this._stackData=[],b._stackData=[],b._plotData=[];var d={x:[],y:[]};if(this.stackSeries&&!b.disableStack){b._stack=!0;for(var e,f,g,h,i="x"===b._stackAxis?0:1,j=a.extend(!0,[],b.data),k=a.extend(!0,[],b.data),l=0;l<c;l++)for(var m=this.series[l].data,n=0;n<m.length;n++)g=m[n],e=null!=g[0]?g[0]:0,f=null!=g[1]?g[1]:0,j[n][0]+=e,j[n][1]+=f,h=i?f:e,b.data[n][i]*h>=0&&(k[n][i]+=h);for(var o=0;o<k.length;o++)d.x.push(k[o][0]),d.y.push(k[o][1]);this._plotData.push(k),this._stackData.push(j),b._stackData=j,b._plotData=k,b._plotValues=d}else{for(var o=0;o<b.data.length;o++)d.x.push(b.data[o][0]),d.y.push(b.data[o][1]);this._stackData.push(b.data),this.series[c]._stackData=b.data,this._plotData.push(b.data),b._plotData=b.data,b._plotValues=d}for(c>0&&(b._prevPlotData=this.series[c-1]._plotData),b._sumy=0,b._sumx=0,o=b.data.length-1;o>-1;o--)b._sumy+=b.data[o][1],b._sumx+=b.data[o][0]},this.getNextSeriesColor=function(a){var b=0,c=a.seriesColors;return function(){return b<c.length?c[b++]:(b=0,c[b++])}}(this),this.parseOptions=function(b){for(var c=0;c<this.preParseOptionsHooks.hooks.length;c++)this.preParseOptionsHooks.hooks[c].call(this,b);for(var c=0;c<a.jqplot.preParseOptionsHooks.length;c++)a.jqplot.preParseOptionsHooks[c].call(this,b);this.options=a.extend(!0,{},this.defaults,b);var d=this.options;if(this.animate=d.animate,this.animateReplot=d.animateReplot,this.stackSeries=d.stackSeries,a.isPlainObject(d.fillBetween))for(var f,g=["series1","series2","color","baseSeries","fill"],c=0,h=g.length;c<h;c++)f=g[c],null!=d.fillBetween[f]&&(this.fillBetween[f]=d.fillBetween[f]);d.seriesColors&&(this.seriesColors=d.seriesColors),d.negativeSeriesColors&&(this.negativeSeriesColors=d.negativeSeriesColors),d.captureRightClick&&(this.captureRightClick=d.captureRightClick),this.defaultAxisStart=b&&null!=b.defaultAxisStart?b.defaultAxisStart:this.defaultAxisStart,this.colorGenerator.setColors(this.seriesColors),this.negativeColorGenerator.setColors(this.negativeSeriesColors),a.extend(!0,this._gridPadding,d.gridPadding),this.sortData=null!=d.sortData?d.sortData:this.sortData;for(var c=0;c<12;c++){var i=I[c],j=this.axes[i];j._options=a.extend(!0,{},d.axesDefaults,d.axes[i]),a.extend(!0,j,d.axesDefaults,d.axes[i]),j._plotWidth=this._width,j._plotHeight=this._height}var k=function(b,c,d){var e,f,g=[];if(c=c||"vertical",a.isArray(b[0]))a.extend(!0,g,b);else for(e=0,f=b.length;e<f;e++)"vertical"==c?g.push([d+e,b[e]]):g.push([b[e],d+e]);return g};this.series=[];for(var c=0;c<this.data.length;c++){for(var l=a.extend(!0,{index:c},{seriesColors:this.seriesColors,negativeSeriesColors:this.negativeSeriesColors},this.options.seriesDefaults,this.options.series[c],{rendererOptions:{animation:{show:this.animate}}}),g=new e(l),m=0;m<a.jqplot.preParseSeriesOptionsHooks.length;m++)a.jqplot.preParseSeriesOptionsHooks[m].call(g,this.options.seriesDefaults,this.options.series[c]);for(var m=0;m<this.preParseSeriesOptionsHooks.hooks.length;m++)this.preParseSeriesOptionsHooks.hooks[m].call(g,this.options.seriesDefaults,this.options.series[c]);a.extend(!0,g,l);var n="vertical";switch(g.renderer===a.jqplot.BarRenderer&&g.rendererOptions&&"horizontal"==g.rendererOptions.barDirection&&(n="horizontal",g._stackAxis="x",g._primaryAxis="_yaxis"),g.data=k(this.data[c],n,this.defaultAxisStart),g.xaxis){case"xaxis":g._xaxis=this.axes.xaxis;break;case"x2axis":g._xaxis=this.axes.x2axis}g._yaxis=this.axes[g.yaxis],g._xaxis._series.push(g),g._yaxis._series.push(g),g.show?(g._xaxis.show=!0,g._yaxis.show=!0):(g._xaxis.scaleToHiddenSeries&&(g._xaxis.show=!0),g._yaxis.scaleToHiddenSeries&&(g._yaxis.show=!0)),g.label||(g.label="Series "+(c+1).toString()),this.series.push(g);for(var m=0;m<a.jqplot.postParseSeriesOptionsHooks.length;m++)a.jqplot.postParseSeriesOptionsHooks[m].call(this.series[c],this.options.seriesDefaults,this.options.series[c]);for(var m=0;m<this.postParseSeriesOptionsHooks.hooks.length;m++)this.postParseSeriesOptionsHooks.hooks[m].call(this.series[c],this.options.seriesDefaults,this.options.series[c])}a.extend(!0,this.grid,this.options.grid);for(var c=0,h=I.length;c<h;c++){var i=I[c],j=this.axes[i];null==j.borderWidth&&(j.borderWidth=this.grid.borderWidth)}"string"==typeof this.options.title?this.title.text=this.options.title:"object"==typeof this.options.title&&a.extend(!0,this.title,this.options.title),this.title._plotWidth=this._width,this.legend.setOptions(this.options.legend);for(var c=0;c<a.jqplot.postParseOptionsHooks.length;c++)a.jqplot.postParseOptionsHooks[c].call(this,b);for(var c=0;c<this.postParseOptionsHooks.hooks.length;c++)this.postParseOptionsHooks.hooks[c].call(this,b)},this.destroy=function(){this.canvasManager.freeAllCanvases(),this.eventCanvas&&this.eventCanvas._elem&&this.eventCanvas._elem.unbind(),this.target.empty(),this.target[0].innerHTML=""},this.replot=function(b){var c=b||{},d=c.data||null,e=c.clear!==!1,f=c.resetAxes||!1;delete c.data,delete c.clear,delete c.resetAxes,this.target.trigger("jqplotPreReplot"),e&&this.destroy(),d||!a.isEmptyObject(c)?this.reInitialize(d,c):this.quickInit(),f&&this.resetAxesScale(f,c.axes),this.draw(),this.target.trigger("jqplotPostReplot")},this.redraw=function(a){a=null==a||a,this.target.trigger("jqplotPreRedraw"),a&&(this.canvasManager.freeAllCanvases(),this.eventCanvas._elem.unbind(),this.target.empty());for(var b in this.axes)this.axes[b]._ticks=[];this.computePlotData(),this._sumy=0,this._sumx=0;for(var c=0,d=this.series.length;c<d;c++)this._sumy+=this.series[c]._sumy,this._sumx+=this.series[c]._sumx;this.draw(),this.target.trigger("jqplotPostRedraw")},this.draw=function(){if(this.drawIfHidden||this.target.is(":visible")){this.target.trigger("jqplotPreDraw");var b,c,d;for(b=0,d=a.jqplot.preDrawHooks.length;b<d;b++)a.jqplot.preDrawHooks[b].call(this);for(b=0,d=this.preDrawHooks.hooks.length;b<d;b++)this.preDrawHooks.hooks[b].apply(this,this.preDrawSeriesHooks.args[b]);this.target.append(this.baseCanvas.createElement({left:0,right:0,top:0,bottom:0},"jqplot-base-canvas",null,this)),this.baseCanvas.setContext(),this.target.append(this.title.draw()),this.title.pack({top:0,left:0});var e=this.legend.draw({},this),f={top:0,left:0,bottom:0,right:0};if("outsideGrid"==this.legend.placement){switch(this.target.append(e),this.legend.location){case"n":f.top+=this.legend.getHeight();break;case"s":f.bottom+=this.legend.getHeight();break;case"ne":case"e":case"se":f.right+=this.legend.getWidth();break;case"nw":case"w":case"sw":f.left+=this.legend.getWidth();break;default:f.right+=this.legend.getWidth()}e=e.detach()}var g,h=this.axes;for(b=0;b<12;b++)g=I[b],this.target.append(h[g].draw(this.baseCanvas._ctx,this)),h[g].set();h.yaxis.show&&(f.left+=h.yaxis.getWidth());var i,j=["y2axis","y3axis","y4axis","y5axis","y6axis","y7axis","y8axis","y9axis"],k=[0,0,0,0,0,0,0,0],l=0;for(i=0;i<8;i++)h[j[i]].show&&(l+=h[j[i]].getWidth(),k[i]=l);if(f.right+=l,h.x2axis.show&&(f.top+=h.x2axis.getHeight()),this.title.show&&(f.top+=this.title.getHeight()),h.xaxis.show&&(f.bottom+=h.xaxis.getHeight()),this.options.gridDimensions&&a.isPlainObject(this.options.gridDimensions)){var m=parseInt(this.options.gridDimensions.width,10)||0,n=parseInt(this.options.gridDimensions.height,10)||0,o=(this._width-f.left-f.right-m)/2,p=(this._height-f.top-f.bottom-n)/2;p>=0&&o>=0&&(f.top+=p,f.bottom+=p,f.left+=o,f.right+=o)}var q=["top","bottom","left","right"];for(var i in q)null==this._gridPadding[q[i]]&&f[q[i]]>0?this._gridPadding[q[i]]=f[q[i]]:null==this._gridPadding[q[i]]&&(this._gridPadding[q[i]]=this._defaultGridPadding[q[i]]);var r=this._gridPadding;for("outsideGrid"===this.legend.placement&&(r={top:this.title.getHeight(),left:0,right:0,bottom:0}),h.xaxis.pack({position:"absolute",bottom:this._gridPadding.bottom-h.xaxis.getHeight(),left:0,width:this._width},{min:this._gridPadding.left,max:this._width-this._gridPadding.right}),h.yaxis.pack({position:"absolute",top:0,left:this._gridPadding.left-h.yaxis.getWidth(),height:this._height},{min:this._height-this._gridPadding.bottom,max:this._gridPadding.top}),h.x2axis.pack({position:"absolute",top:this._gridPadding.top-h.x2axis.getHeight(),left:0,width:this._width},{min:this._gridPadding.left,max:this._width-this._gridPadding.right}),b=8;b>0;b--)h[j[b-1]].pack({position:"absolute",top:0,right:this._gridPadding.right-k[b-1]},{min:this._height-this._gridPadding.bottom,max:this._gridPadding.top});var s=(this._width-this._gridPadding.left-this._gridPadding.right)/2+this._gridPadding.left-h.yMidAxis.getWidth()/2;h.yMidAxis.pack({position:"absolute",top:0,left:s,zIndex:9,textAlign:"center"},{min:this._height-this._gridPadding.bottom,max:this._gridPadding.top}),this.target.append(this.grid.createElement(this._gridPadding,this)), +this.grid.draw();var t=this.series,u=t.length;for(b=0,d=u;b<d;b++)c=this.seriesStack[b],this.target.append(t[c].shadowCanvas.createElement(this._gridPadding,"jqplot-series-shadowCanvas",null,this)),t[c].shadowCanvas.setContext(),t[c].shadowCanvas._elem.data("seriesIndex",c);for(b=0,d=u;b<d;b++)c=this.seriesStack[b],this.target.append(t[c].canvas.createElement(this._gridPadding,"jqplot-series-canvas",null,this)),t[c].canvas.setContext(),t[c].canvas._elem.data("seriesIndex",c);this.target.append(this.eventCanvas.createElement(this._gridPadding,"jqplot-event-canvas",null,this)),this.eventCanvas.setContext(),this.eventCanvas._ctx.fillStyle="rgba(0,0,0,0)",this.eventCanvas._ctx.fillRect(0,0,this.eventCanvas._ctx.canvas.width,this.eventCanvas._ctx.canvas.height),this.bindCustomEvents(),this.legend.preDraw?(this.eventCanvas._elem.before(e),this.legend.pack(r),this.legend._elem?this.drawSeries({legendInfo:{location:this.legend.location,placement:this.legend.placement,width:this.legend.getWidth(),height:this.legend.getHeight(),xoffset:this.legend.xoffset,yoffset:this.legend.yoffset}}):this.drawSeries()):(this.drawSeries(),u&&a(t[u-1].canvas._elem).after(e),this.legend.pack(r));for(var b=0,d=a.jqplot.eventListenerHooks.length;b<d;b++)this.eventCanvas._elem.bind(a.jqplot.eventListenerHooks[b][0],{plot:this},a.jqplot.eventListenerHooks[b][1]);for(var b=0,d=this.eventListenerHooks.hooks.length;b<d;b++)this.eventCanvas._elem.bind(this.eventListenerHooks.hooks[b][0],{plot:this},this.eventListenerHooks.hooks[b][1]);var v=this.fillBetween;if("number"==typeof v.series1)v.fill&&v.series1!==v.series2&&v.series1<u&&v.series2<u&&"line"===t[v.series1]._type&&"line"===t[v.series2]._type&&this.doFillBetweenLines();else if(null!=v.series1&&null!=v.series2){var w=!1;if(v.series1.length===v.series2.length)for(var x=0,y=0,z=0;z<v.series1.length;z++){if(x=v.series1[z],y=v.series2[z],!(x!==y&&x<u&&y<u&&"line"===t[x]._type&&"line"===t[y]._type)){w=!1;break}w=!0}v.fill&&w&&this.doFillBetweenLines()}for(var b=0,d=a.jqplot.postDrawHooks.length;b<d;b++)a.jqplot.postDrawHooks[b].call(this);for(var b=0,d=this.postDrawHooks.hooks.length;b<d;b++)this.postDrawHooks.hooks[b].apply(this,this.postDrawHooks.args[b]);this.target.is(":visible")&&(this._drawCount+=1);var A,B,C,D;for(b=0,d=u;b<d;b++)A=t[b],B=A.renderer,C=".jqplot-point-label.jqplot-series-"+b,B.animation&&B.animation._supported&&B.animation.show&&(this._drawCount<2||this.animateReplot)&&(D=this.target.find(C),D.stop(!0,!0).hide(),A.canvas._elem.stop(!0,!0).hide(),A.shadowCanvas._elem.stop(!0,!0).hide(),A.canvas._elem.jqplotEffect("blind",{mode:"show",direction:B.animation.direction},B.animation.speed),A.shadowCanvas._elem.jqplotEffect("blind",{mode:"show",direction:B.animation.direction},B.animation.speed),D.fadeIn(.8*B.animation.speed));D=null,this.target.trigger("jqplotPostDraw",[this])}},g.prototype.doFillBetweenLines=function(){function a(a,d){var e=c[a],f=c[d];if(f.renderer.smooth)var g=f.renderer._smoothedData.slice(0).reverse();else var g=f.gridData.slice(0).reverse();if(e.renderer.smooth)var h=e.renderer._smoothedData.concat(g);else var h=e.gridData.concat(g);var i=null!==b.color?b.color:c[a].fillColor,j=null!==b.baseSeries?b.baseSeries:a,k=c[j].renderer.shapeRenderer,l={fillStyle:i,fill:!0,closePath:!0};k.draw(e.shadowCanvas._ctx,h,l)}var b=this.fillBetween,c=this.series,d=b.series1,e=b.series2,f=0,g=0;if("number"==typeof d&&"number"==typeof e)f=d<e?d:e,g=e>d?e:d,a(f,g);else for(var h=0;h<d.length;h++)f=d[h]<e[h]?d[h]:e[h],g=e[h]>d[h]?e[h]:d[h],a(f,g)},this.bindCustomEvents=function(){this.eventCanvas._elem.bind("click",{plot:this},this.onClick),this.eventCanvas._elem.bind("dblclick",{plot:this},this.onDblClick),this.eventCanvas._elem.bind("mousedown",{plot:this},this.onMouseDown),this.eventCanvas._elem.bind("mousemove",{plot:this},this.onMouseMove),this.eventCanvas._elem.bind("mouseenter",{plot:this},this.onMouseEnter),this.eventCanvas._elem.bind("mouseleave",{plot:this},this.onMouseLeave),this.captureRightClick?(this.eventCanvas._elem.bind("mouseup",{plot:this},this.onRightClick),this.eventCanvas._elem.get(0).oncontextmenu=function(){return!1}):this.eventCanvas._elem.bind("mouseup",{plot:this},this.onMouseUp)},this.onClick=function(b){var c=i(b),d=b.data.plot,e=j(c.gridPos,d),f=a.Event("jqplotClick");f.pageX=b.pageX,f.pageY=b.pageY,a(this).trigger(f,[c.gridPos,c.dataPos,e,d])},this.onDblClick=function(b){var c=i(b),d=b.data.plot,e=j(c.gridPos,d),f=a.Event("jqplotDblClick");f.pageX=b.pageX,f.pageY=b.pageY,a(this).trigger(f,[c.gridPos,c.dataPos,e,d])},this.onMouseDown=function(b){var c=i(b),d=b.data.plot,e=j(c.gridPos,d),f=a.Event("jqplotMouseDown");f.pageX=b.pageX,f.pageY=b.pageY,a(this).trigger(f,[c.gridPos,c.dataPos,e,d])},this.onMouseUp=function(b){var c=i(b),d=a.Event("jqplotMouseUp");d.pageX=b.pageX,d.pageY=b.pageY,a(this).trigger(d,[c.gridPos,c.dataPos,null,b.data.plot])},this.onRightClick=function(b){var c=i(b),d=b.data.plot,e=j(c.gridPos,d);if(d.captureRightClick)if(3==b.which){var f=a.Event("jqplotRightClick");f.pageX=b.pageX,f.pageY=b.pageY,a(this).trigger(f,[c.gridPos,c.dataPos,e,d])}else{var f=a.Event("jqplotMouseUp");f.pageX=b.pageX,f.pageY=b.pageY,a(this).trigger(f,[c.gridPos,c.dataPos,e,d])}},this.onMouseMove=function(b){var c=i(b),d=b.data.plot,e=j(c.gridPos,d),f=a.Event("jqplotMouseMove");f.pageX=b.pageX,f.pageY=b.pageY,a(this).trigger(f,[c.gridPos,c.dataPos,e,d])},this.onMouseEnter=function(b){var c=i(b),d=b.data.plot,e=a.Event("jqplotMouseEnter");e.pageX=b.pageX,e.pageY=b.pageY,e.relatedTarget=b.relatedTarget,a(this).trigger(e,[c.gridPos,c.dataPos,null,d])},this.onMouseLeave=function(b){var c=i(b),d=b.data.plot,e=a.Event("jqplotMouseLeave");e.pageX=b.pageX,e.pageY=b.pageY,e.relatedTarget=b.relatedTarget,a(this).trigger(e,[c.gridPos,c.dataPos,null,d])},this.drawSeries=function(b,c){var d,e,f;if(c="number"==typeof b&&null==c?b:c,b="object"==typeof b?b:{},c!=H)e=this.series[c],f=e.shadowCanvas._ctx,f.clearRect(0,0,f.canvas.width,f.canvas.height),e.drawShadow(f,b,this),f=e.canvas._ctx,f.clearRect(0,0,f.canvas.width,f.canvas.height),e.draw(f,b,this),e.renderer.constructor==a.jqplot.BezierCurveRenderer&&c<this.series.length-1&&this.drawSeries(c+1);else for(d=0;d<this.series.length;d++)e=this.series[d],f=e.shadowCanvas._ctx,f.clearRect(0,0,f.canvas.width,f.canvas.height),e.drawShadow(f,b,this),f=e.canvas._ctx,f.clearRect(0,0,f.canvas.width,f.canvas.height),e.draw(f,b,this);b=c=d=e=f=null},this.moveSeriesToFront=function(b){b=parseInt(b,10);var c=a.inArray(b,this.seriesStack);if(c!=-1){if(c==this.seriesStack.length-1)return void(this.previousSeriesStack=this.seriesStack.slice(0));var d=this.seriesStack[this.seriesStack.length-1],e=this.series[b].canvas._elem.detach(),f=this.series[b].shadowCanvas._elem.detach();this.series[d].shadowCanvas._elem.after(f),this.series[d].canvas._elem.after(e),this.previousSeriesStack=this.seriesStack.slice(0),this.seriesStack.splice(c,1),this.seriesStack.push(b)}},this.moveSeriesToBack=function(b){b=parseInt(b,10);var c=a.inArray(b,this.seriesStack);if(0!=c&&c!=-1){var d=this.seriesStack[0],e=this.series[b].canvas._elem.detach(),f=this.series[b].shadowCanvas._elem.detach();this.series[d].shadowCanvas._elem.before(f),this.series[d].canvas._elem.before(e),this.previousSeriesStack=this.seriesStack.slice(0),this.seriesStack.splice(c,1),this.seriesStack.unshift(b)}},this.restorePreviousSeriesOrder=function(){var a,b,c,d,e,f;if(this.seriesStack!=this.previousSeriesStack){for(a=1;a<this.previousSeriesStack.length;a++)e=this.previousSeriesStack[a],f=this.previousSeriesStack[a-1],b=this.series[e].canvas._elem.detach(),c=this.series[e].shadowCanvas._elem.detach(),this.series[f].shadowCanvas._elem.after(c),this.series[f].canvas._elem.after(b);d=this.seriesStack.slice(0),this.seriesStack=this.previousSeriesStack.slice(0),this.previousSeriesStack=d}},this.restoreOriginalSeriesOrder=function(){var a,b,c,d=[];for(a=0;a<this.series.length;a++)d.push(a);if(this.seriesStack!=d)for(this.previousSeriesStack=this.seriesStack.slice(0),this.seriesStack=d,a=1;a<this.seriesStack.length;a++)b=this.series[a].canvas._elem.detach(),c=this.series[a].shadowCanvas._elem.detach(),this.series[a-1].shadowCanvas._elem.after(c),this.series[a-1].canvas._elem.after(b)},this.activateTheme=function(a){this.themeEngine.activate(this,a)}}function h(a,b){return(3.4182054+b)*Math.pow(a,-.3534992)}function i(a){var b=(Math.exp(2*a)-1)/(Math.exp(2*a)+1);return b}function j(a){function b(a,b){return a-b==0?Math.pow(10,10):a-b}var c=this.renderer.smooth,d=this.canvas.getWidth(),e=this._xaxis.series_p2u,f=this._yaxis.series_p2u,g=null,i=a.length/d,j=[],k=[];g=isNaN(parseFloat(c))?h(i,.5):parseFloat(c);for(var l=[],m=[],n=0,o=a.length;n<o;n++)l.push(a[n][1]),m.push(a[n][0]);for(var p,q,r,s,t=a.length-1,u=1,v=a.length;u<v;u++){for(var w=[],x=[],y=0;y<2;y++){var n=u-1+y;0==n||n==t?w[y]=Math.pow(10,10):l[n+1]-l[n]==0||l[n]-l[n-1]==0?w[y]=0:(m[n+1]-m[n])/(l[n+1]-l[n])+(m[n]-m[n-1])/(l[n]-l[n-1])==0?w[y]=0:(l[n+1]-l[n])*(l[n]-l[n-1])<0?w[y]=0:w[y]=2/(b(m[n+1],m[n])/(l[n+1]-l[n])+b(m[n],m[n-1])/(l[n]-l[n-1]))}1==u?w[0]=1.5*(l[1]-l[0])/b(m[1],m[0])-w[1]/2:u==t&&(w[1]=1.5*(l[t]-l[t-1])/b(m[t],m[t-1])-w[0]/2),x[0]=-2*(w[1]+2*w[0])/b(m[u],m[u-1])+6*(l[u]-l[u-1])/Math.pow(b(m[u],m[u-1]),2),x[1]=2*(2*w[1]+w[0])/b(m[u],m[u-1])-6*(l[u]-l[u-1])/Math.pow(b(m[u],m[u-1]),2),s=1/6*(x[1]-x[0])/b(m[u],m[u-1]),r=.5*(m[u]*x[0]-m[u-1]*x[1])/b(m[u],m[u-1]),q=(l[u]-l[u-1]-r*(Math.pow(m[u],2)-Math.pow(m[u-1],2))-s*(Math.pow(m[u],3)-Math.pow(m[u-1],3)))/b(m[u],m[u-1]),p=l[u-1]-q*m[u-1]-r*Math.pow(m[u-1],2)-s*Math.pow(m[u-1],3);for(var z,A,B=(m[u]-m[u-1])/g,y=0,o=g;y<o;y++)z=[],A=m[u-1]+y*B,z.push(A),z.push(p+q*A+r*Math.pow(A,2)+s*Math.pow(A,3)),j.push(z),k.push([e(z[0]),f(z[1])])}return j.push(a[n]),k.push([e(a[n][0]),f(a[n][1])]),[j,k]}function k(a){var b,c,d,e,f,g,j,k,l,m,n,o,p,q,r,s,t,u,v=this.renderer.smooth,w=this.renderer.tension,x=this.canvas.getWidth(),y=this._xaxis.series_p2u,z=this._yaxis.series_p2u,A=null,B=null,C=null,D=null,E=null,F=null,G=null,H=a.length/x,I=[],J=[];A=isNaN(parseFloat(v))?h(H,.5):parseFloat(v),isNaN(parseFloat(w))||(w=parseFloat(w));for(var K=0,L=a.length-1;K<L;K++)for(null===w?(E=Math.abs((a[K+1][1]-a[K][1])/(a[K+1][0]-a[K][0])),q=.3,r=.6,s=(r-q)/2,t=2.5,u=-1.4,G=E/t+u,C=s*i(G)-s*i(u)+q,K>0&&(F=Math.abs((a[K][1]-a[K-1][1])/(a[K][0]-a[K-1][0]))),G=F/t+u,D=s*i(G)-s*i(u)+q,B=(C+D)/2):B=w,b=0;b<A;b++)c=b/A,d=(1+2*c)*Math.pow(1-c,2),e=c*Math.pow(1-c,2),f=Math.pow(c,2)*(3-2*c),g=Math.pow(c,2)*(c-1),a[K-1]?(j=B*(a[K+1][0]-a[K-1][0]),k=B*(a[K+1][1]-a[K-1][1])):(j=B*(a[K+1][0]-a[K][0]),k=B*(a[K+1][1]-a[K][1])),a[K+2]?(l=B*(a[K+2][0]-a[K][0]),m=B*(a[K+2][1]-a[K][1])):(l=B*(a[K+1][0]-a[K][0]),m=B*(a[K+1][1]-a[K][1])),n=d*a[K][0]+f*a[K+1][0]+e*j+g*l,o=d*a[K][1]+f*a[K+1][1]+e*k+g*m,p=[n,o],I.push(p),J.push([y(n),z(o)]);return I.push(a[L]),J.push([y(a[L][0]),z(a[L][1])]),[I,J]}function l(b,c,d){for(var e=0;e<this.series.length;e++)this.series[e].renderer.constructor==a.jqplot.LineRenderer&&this.series[e].highlightMouseOver&&(this.series[e].highlightMouseDown=!1)}function m(){this.plugins.lineRenderer&&this.plugins.lineRenderer.highlightCanvas&&(this.plugins.lineRenderer.highlightCanvas.resetCanvas(),this.plugins.lineRenderer.highlightCanvas=null),this.plugins.lineRenderer.highlightedSeriesIndex=null,this.plugins.lineRenderer.highlightCanvas=new a.jqplot.GenericCanvas,this.eventCanvas._elem.before(this.plugins.lineRenderer.highlightCanvas.createElement(this._gridPadding,"jqplot-lineRenderer-highlight-canvas",this._plotDimensions,this)),this.plugins.lineRenderer.highlightCanvas.setContext(),this.eventCanvas._elem.bind("mouseleave",{plot:this},function(a){o(a.data.plot)})}function n(a,b,c,d){var e=a.series[b],f=a.plugins.lineRenderer.highlightCanvas;f._ctx.clearRect(0,0,f._ctx.canvas.width,f._ctx.canvas.height),e._highlightedPoint=c,a.plugins.lineRenderer.highlightedSeriesIndex=b;var g={fillStyle:e.highlightColor};"line"===e.type&&e.renderer.bands.show&&(g.fill=!0,g.closePath=!0),e.renderer.shapeRenderer.draw(f._ctx,d,g),f=null}function o(a){var b=a.plugins.lineRenderer.highlightCanvas;b._ctx.clearRect(0,0,b._ctx.canvas.width,b._ctx.canvas.height);for(var c=0;c<a.series.length;c++)a.series[c]._highlightedPoint=null;a.plugins.lineRenderer.highlightedSeriesIndex=null,a.target.trigger("jqplotDataUnhighlight"),b=null}function p(a,b,c,d,e){if(d){var f=[d.seriesIndex,d.pointIndex,d.data],g=jQuery.Event("jqplotDataMouseOver");if(g.pageX=a.pageX,g.pageY=a.pageY,e.target.trigger(g,f),e.series[f[0]].highlightMouseOver&&f[0]!=e.plugins.lineRenderer.highlightedSeriesIndex){var h=jQuery.Event("jqplotDataHighlight");h.which=a.which,h.pageX=a.pageX,h.pageY=a.pageY,e.target.trigger(h,f),n(e,d.seriesIndex,d.pointIndex,d.points)}}else null==d&&o(e)}function q(a,b,c,d,e){if(d){var f=[d.seriesIndex,d.pointIndex,d.data];if(e.series[f[0]].highlightMouseDown&&f[0]!=e.plugins.lineRenderer.highlightedSeriesIndex){var g=jQuery.Event("jqplotDataHighlight");g.which=a.which,g.pageX=a.pageX,g.pageY=a.pageY,e.target.trigger(g,f),n(e,d.seriesIndex,d.pointIndex,d.points)}}else null==d&&o(e)}function r(a,b,c,d,e){var f=e.plugins.lineRenderer.highlightedSeriesIndex;null!=f&&e.series[f].highlightMouseDown&&o(e)}function s(a,b,c,d,e){if(d){var f=[d.seriesIndex,d.pointIndex,d.data],g=jQuery.Event("jqplotDataClick");g.which=a.which,g.pageX=a.pageX,g.pageY=a.pageY,e.target.trigger(g,f)}}function t(a,b,c,d,e){if(d){var f=[d.seriesIndex,d.pointIndex,d.data],g=e.plugins.lineRenderer.highlightedSeriesIndex;null!=g&&e.series[g].highlightMouseDown&&o(e);var h=jQuery.Event("jqplotDataRightClick");h.which=a.which,h.pageX=a.pageX,h.pageY=a.pageY,e.target.trigger(h,f)}}function u(a){var b;if(a=Math.abs(a),a>=10)b="%d";else if(a>1)b=a===parseInt(a,10)?"%d":"%.1f";else{var c=-Math.floor(Math.log(a)/Math.LN10);b="%."+c+"f"}return b}function v(b,c,d){for(var e,f,g,h,i,j,k,l=Math.floor(d/2),m=Math.ceil(1.5*d),n=Number.MAX_VALUE,o=c-b,p=a.jqplot.getSignificantFigures,q=0,r=m-l+1;q<r;q++)j=l+q,e=o/(j-1),f=p(e),e=Math.abs(d-j)+f.digitsRight,e<n?(n=e,g=j,k=f.digitsRight):e===n&&f.digitsRight<k&&(g=j,k=f.digitsRight);return h=Math.max(k,Math.max(p(b).digitsRight,p(c).digitsRight)),i=0===h?"%d":"%."+h+"f",e=o/(g-1),[b,c,g,i,e]}function w(a,b){b=b||7;var c,d=a/(b-1),e=Math.pow(10,Math.floor(Math.log(d)/Math.LN10)),f=d/e;return c=e<1?f>5?10*e:f>2?5*e:f>1?2*e:e:f>5?10*e:f>4?5*e:f>3?4*e:f>2?3*e:f>1?2*e:e}function x(a,b){b=b||1;var c,d=Math.floor(Math.log(a)/Math.LN10),e=Math.pow(10,d),f=a/e;return f/=b,c=f<=.38?.1:f<=1.6?.2:f<=4?.5:f<=8?1:f<=16?2:5,c*e}function y(a,b){var c,d,e=Math.floor(Math.log(a)/Math.LN10),f=Math.pow(10,e),g=a/f;return g/=b,d=g<=.38?.1:g<=1.6?.2:g<=4?.5:g<=8?1:g<=16?2:5,c=d*f,[c,d,f]}function z(b){var c={angle:b.shadowAngle,offset:b.shadowOffset,alpha:b.shadowAlpha,lineWidth:b.lineWidth,depth:b.shadowDepth,closePath:!0};return b.style.indexOf("filled")!=-1&&(c.fill=!0),b.style.indexOf("ircle")!=-1&&(c.isarc=!0,c.closePath=!1),a.extend(!0,{},c)}function A(b){var c={fill:!1,isarc:!1,strokeStyle:b.color,fillStyle:b.color,lineWidth:b.lineWidth,closePath:!0};return b.style.indexOf("filled")!=-1&&(c.fill=!0),b.style.indexOf("ircle")!=-1&&(c.isarc=!0,c.closePath=!1),a.extend(!0,{},c)}function B(a,b){return a-b}function C(a){if(null==a||"object"!=typeof a)return a;var b=new a.constructor;for(var c in a)b[c]=C(a[c]);return b}function D(a,b){if(null!=b&&"object"==typeof b)for(var c in b)"highlightColors"==c&&(a[c]=C(b[c])),null!=b[c]&&"object"==typeof b[c]?(a.hasOwnProperty(c)||(a[c]={}),D(a[c],b[c])):a[c]=b[c]}function E(a,b){if(b.indexOf)return b.indexOf(a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1}function F(a){return null===a?"[object Null]":Object.prototype.toString.call(a)}function G(b,c,d,e){return a.isPlainObject(b)?b:(b={effect:b},c===H&&(c={}),a.isFunction(c)&&(e=c,d=null,c={}),("number"===a.type(c)||a.fx.speeds[c])&&(e=d,d=c,c={}),a.isFunction(d)&&(e=d,d=null),c&&a.extend(b,c),d=d||c.duration,b.duration=a.fx.off?0:"number"==typeof d?d:d in a.fx.speeds?a.fx.speeds[d]:a.fx.speeds._default,b.complete=e||c.complete,b)}var H;a.fn.emptyForce=function(){for(var b,c=0;null!=(b=a(this)[c]);c++){if(1===b.nodeType&&a.cleanData(b.getElementsByTagName("*")),a.jqplot.use_excanvas)b.outerHTML="";else for(;b.firstChild;)b.removeChild(b.firstChild);b=null}return a(this)},a.fn.removeChildForce=function(a){for(;a.firstChild;)this.removeChildForce(a.firstChild),a.removeChild(a.firstChild)},a.fn.jqplot=function(){for(var b=[],c=[],d=0,e=arguments.length;d<e;d++)a.isArray(arguments[d])?b.push(arguments[d]):a.isPlainObject(arguments[d])&&c.push(arguments[d]);return this.each(function(d){var e,f,g,h,i=a(this),j=b.length,k=c.length;g=d<j?b[d]:j?b[j-1]:null,h=d<k?c[d]:k?c[k-1]:null,e=i.attr("id"),e===H&&(e="jqplot_target_"+a.jqplot.targetCounter++,i.attr("id",e)),f=a.jqplot(e,g,h),i.data("jqplot",f)})},a.jqplot=function(b,c,d){var e=null,f=null;3===arguments.length?(e=c,f=d):2===arguments.length&&(a.isArray(c)?e=c:a.isPlainObject(c)&&(f=c)),null===e&&null!==f&&f.data&&(e=f.data);var h=new g;if(a("#"+b).removeClass("jqplot-error"),!a.jqplot.config.catchErrors)return h.init(b,e,f),h.draw(),h.themeEngine.init.call(h),h;try{return h.init(b,e,f),h.draw(),h.themeEngine.init.call(h),h}catch(c){var i=a.jqplot.config.errorMessage||c.message;a("#"+b).append('<div class="jqplot-error-message">'+i+"</div>"),a("#"+b).addClass("jqplot-error"),document.getElementById(b).style.background=a.jqplot.config.errorBackground,document.getElementById(b).style.border=a.jqplot.config.errorBorder,document.getElementById(b).style.fontFamily=a.jqplot.config.errorFontFamily,document.getElementById(b).style.fontSize=a.jqplot.config.errorFontSize,document.getElementById(b).style.fontStyle=a.jqplot.config.errorFontStyle,document.getElementById(b).style.fontWeight=a.jqplot.config.errorFontWeight}},a.jqplot.version="1.0.9",a.jqplot.revision="c465c44",a.jqplot.targetCounter=1,a.jqplot.CanvasManager=function(){"undefined"==typeof a.jqplot.CanvasManager.canvases&&(a.jqplot.CanvasManager.canvases=[],a.jqplot.CanvasManager.free=[]);var b=[];this.getCanvas=function(){var c,d=!0;if(!a.jqplot.use_excanvas)for(var e=0,f=a.jqplot.CanvasManager.canvases.length;e<f;e++)if(a.jqplot.CanvasManager.free[e]===!0){d=!1,c=a.jqplot.CanvasManager.canvases[e],a.jqplot.CanvasManager.free[e]=!1,b.push(e);break}return d&&(c=document.createElement("canvas"),b.push(a.jqplot.CanvasManager.canvases.length),a.jqplot.CanvasManager.canvases.push(c),a.jqplot.CanvasManager.free.push(!1)),c},this.initCanvas=function(b){if(a.jqplot.use_excanvas)return window.G_vmlCanvasManager.initElement(b);var c=b.getContext("2d"),d=1;window.devicePixelRatio>1&&(c.webkitBackingStorePixelRatio===H||c.webkitBackingStorePixelRatio<2)&&(d=window.devicePixelRatio);var e=b.width,f=b.height;return b.width=d*b.width,b.height=d*b.height,b.style.width=e+"px",b.style.height=f+"px",c.save(),c.scale(d,d),b},this.freeAllCanvases=function(){for(var a=0,c=b.length;a<c;a++)this.freeCanvas(b[a]);b=[]},this.freeCanvas=function(b){if(a.jqplot.use_excanvas&&window.G_vmlCanvasManager.uninitElement!==H)window.G_vmlCanvasManager.uninitElement(a.jqplot.CanvasManager.canvases[b]),a.jqplot.CanvasManager.canvases[b]=null;else{var c=a.jqplot.CanvasManager.canvases[b];c.getContext("2d").clearRect(0,0,c.width,c.height),a(c).unbind().removeAttr("class").removeAttr("style"),a(c).css({left:"",top:"",position:""}),c.width=0,c.height=0,a.jqplot.CanvasManager.free[b]=!0}}},a.jqplot.log=function(){window.console&&window.console.log.apply(window.console,arguments)},a.jqplot.config={addDomReference:!1,enablePlugins:!1,defaultHeight:300,defaultWidth:400,UTCAdjust:!1,timezoneOffset:new Date(6e4*(new Date).getTimezoneOffset()),errorMessage:"",errorBackground:"",errorBorder:"",errorFontFamily:"",errorFontSize:"",errorFontStyle:"",errorFontWeight:"",catchErrors:!1,defaultTickFormatString:"%.1f",defaultColors:["#4bb2c5","#EAA228","#c5b47f","#579575","#839557","#958c12","#953579","#4b5de4","#d8b83f","#ff5800","#0085cc","#c747a3","#cddf54","#FBD178","#26B4E3","#bd70c7"],defaultNegativeColors:["#498991","#C08840","#9F9274","#546D61","#646C4A","#6F6621","#6E3F5F","#4F64B0","#A89050","#C45923","#187399","#945381","#959E5C","#C7AF7B","#478396","#907294"],dashLength:4,gapLength:4,dotGapLength:2.5,srcLocation:"jqplot/src/",pluginLocation:"jqplot/src/plugins/"},a.jqplot.arrayMax=function(a){return Math.max.apply(Math,a)},a.jqplot.arrayMin=function(a){return Math.min.apply(Math,a)},a.jqplot.enablePlugins=a.jqplot.config.enablePlugins,a.jqplot.support_canvas=function(){return"undefined"==typeof a.jqplot.support_canvas.result&&(a.jqplot.support_canvas.result=!!document.createElement("canvas").getContext),a.jqplot.support_canvas.result},a.jqplot.support_canvas_text=function(){return"undefined"==typeof a.jqplot.support_canvas_text.result&&(window.G_vmlCanvasManager!==H&&window.G_vmlCanvasManager._version>887?a.jqplot.support_canvas_text.result=!0:a.jqplot.support_canvas_text.result=!(!document.createElement("canvas").getContext||"function"!=typeof document.createElement("canvas").getContext("2d").fillText)),a.jqplot.support_canvas_text.result},a.jqplot.use_excanvas=!(a.support.boxModel&&a.support.objectAll&&$support.leadingWhitespace||a.jqplot.support_canvas()),a.jqplot.preInitHooks=[],a.jqplot.postInitHooks=[],a.jqplot.preParseOptionsHooks=[],a.jqplot.postParseOptionsHooks=[],a.jqplot.preDrawHooks=[],a.jqplot.postDrawHooks=[],a.jqplot.preDrawSeriesHooks=[],a.jqplot.postDrawSeriesHooks=[],a.jqplot.preDrawLegendHooks=[],a.jqplot.addLegendRowHooks=[],a.jqplot.preSeriesInitHooks=[],a.jqplot.postSeriesInitHooks=[],a.jqplot.preParseSeriesOptionsHooks=[],a.jqplot.postParseSeriesOptionsHooks=[],a.jqplot.eventListenerHooks=[],a.jqplot.preDrawSeriesShadowHooks=[],a.jqplot.postDrawSeriesShadowHooks=[],a.jqplot.ElemContainer=function(){this._elem,this._plotWidth,this._plotHeight,this._plotDimensions={height:null,width:null}},a.jqplot.ElemContainer.prototype.createElement=function(b,c,d,e,f){this._offsets=c;var g=d||"jqplot",h=document.createElement(b);return this._elem=a(h),this._elem.addClass(g),this._elem.css(e),this._elem.attr(f),h=null,this._elem},a.jqplot.ElemContainer.prototype.getWidth=function(){return this._elem?this._elem.outerWidth(!0):null},a.jqplot.ElemContainer.prototype.getHeight=function(){return this._elem?this._elem.outerHeight(!0):null},a.jqplot.ElemContainer.prototype.getPosition=function(){return this._elem?this._elem.position():{top:null,left:null,bottom:null,right:null}},a.jqplot.ElemContainer.prototype.getTop=function(){return this.getPosition().top},a.jqplot.ElemContainer.prototype.getLeft=function(){return this.getPosition().left},a.jqplot.ElemContainer.prototype.getBottom=function(){return this._elem.css("bottom")},a.jqplot.ElemContainer.prototype.getRight=function(){return this._elem.css("right")},b.prototype=new a.jqplot.ElemContainer,b.prototype.constructor=b,b.prototype.init=function(){a.isFunction(this.renderer)&&(this.renderer=new this.renderer),this.tickOptions.axis=this.name,null==this.tickOptions.showMark&&(this.tickOptions.showMark=this.showTicks),null==this.tickOptions.showMark&&(this.tickOptions.showMark=this.showTickMarks),null==this.tickOptions.showLabel&&(this.tickOptions.showLabel=this.showTicks),null==this.label||""==this.label?this.showLabel=!1:this.labelOptions.label=this.label,0==this.showLabel&&(this.labelOptions.show=!1),0==this.pad&&(this.pad=1),0==this.padMax&&(this.padMax=1),0==this.padMin&&(this.padMin=1),null==this.padMax&&(this.padMax=(this.pad-1)/2+1),null==this.padMin&&(this.padMin=(this.pad-1)/2+1),this.pad=this.padMax+this.padMin-1,null==this.min&&null==this.max||(this.autoscale=!1),null==this.syncTicks&&this.name.indexOf("y")>-1?this.syncTicks=!0:null==this.syncTicks&&(this.syncTicks=!1),this.renderer.init.call(this,this.rendererOptions)},b.prototype.draw=function(a,b){return this.__ticks&&(this.__ticks=null),this.renderer.draw.call(this,a,b)},b.prototype.set=function(){this.renderer.set.call(this)},b.prototype.pack=function(a,b){this.show&&this.renderer.pack.call(this,a,b),null==this._min&&(this._min=this.min,this._max=this.max,this._tickInterval=this.tickInterval,this._numberTicks=this.numberTicks,this.__ticks=this._ticks)},b.prototype.reset=function(){this.renderer.reset.call(this)},b.prototype.resetScale=function(b){a.extend(!0,this,{min:null,max:null,numberTicks:null,tickInterval:null,_ticks:[],ticks:[]},b),this.resetDataBounds()},b.prototype.resetDataBounds=function(){var b=this._dataBounds;b.min=null,b.max=null;for(var c,d,e,f=!!this.show,g=0;g<this._series.length;g++)if(d=this._series[g],d.show||this.scaleToHiddenSeries){e=d._plotData,"line"===d._type&&d.renderer.bands.show&&"x"!==this.name.charAt(0)&&(e=[[0,d.renderer.bands._min],[1,d.renderer.bands._max]]);var h=1,i=1;null!=d._type&&"ohlc"==d._type&&(h=3,i=2);for(var j=0,c=e.length;j<c;j++)"xaxis"==this.name||"x2axis"==this.name?((null!=e[j][0]&&e[j][0]<b.min||null==b.min)&&(b.min=e[j][0]),(null!=e[j][0]&&e[j][0]>b.max||null==b.max)&&(b.max=e[j][0])):((null!=e[j][h]&&e[j][h]<b.min||null==b.min)&&(b.min=e[j][h]),(null!=e[j][i]&&e[j][i]>b.max||null==b.max)&&(b.max=e[j][i]));f&&d.renderer.constructor!==a.jqplot.BarRenderer?f=!1:f&&this._options.hasOwnProperty("forceTickAt0")&&0==this._options.forceTickAt0?f=!1:f&&d.renderer.constructor===a.jqplot.BarRenderer&&("vertical"==d.barDirection&&"xaxis"!=this.name&&"x2axis"!=this.name?null==this._options.pad&&null==this._options.padMin||(f=!1):"horizontal"!=d.barDirection||"xaxis"!=this.name&&"x2axis"!=this.name||null==this._options.pad&&null==this._options.padMin||(f=!1))}f&&this.renderer.constructor===a.jqplot.LinearAxisRenderer&&b.min>=0&&(this.padMin=1,this.forceTickAt0=!0)},c.prototype=new a.jqplot.ElemContainer,c.prototype.constructor=c,c.prototype.setOptions=function(b){if(a.extend(!0,this,b),"inside"==this.placement&&(this.placement="insideGrid"),this.xoffset>0){if("insideGrid"==this.placement)switch(this.location){case"nw":case"w":case"sw":null==this.marginLeft&&(this.marginLeft=this.xoffset+"px"),this.marginRight="0px";break;case"ne":case"e":case"se":default:null==this.marginRight&&(this.marginRight=this.xoffset+"px"),this.marginLeft="0px"}else if("outside"==this.placement)switch(this.location){case"nw":case"w":case"sw":null==this.marginRight&&(this.marginRight=this.xoffset+"px"),this.marginLeft="0px";break;case"ne":case"e":case"se":default:null==this.marginLeft&&(this.marginLeft=this.xoffset+"px"),this.marginRight="0px"}this.xoffset=0}if(this.yoffset>0){if("outside"==this.placement)switch(this.location){case"sw":case"s":case"se":null==this.marginTop&&(this.marginTop=this.yoffset+"px"),this.marginBottom="0px";break;case"ne":case"n":case"nw":default:null==this.marginBottom&&(this.marginBottom=this.yoffset+"px"),this.marginTop="0px"}else if("insideGrid"==this.placement)switch(this.location){case"sw":case"s":case"se":null==this.marginBottom&&(this.marginBottom=this.yoffset+"px"),this.marginTop="0px";break;case"ne":case"n":case"nw":default:null==this.marginTop&&(this.marginTop=this.yoffset+"px"),this.marginBottom="0px"}this.yoffset=0}},c.prototype.init=function(){a.isFunction(this.renderer)&&(this.renderer=new this.renderer),this.renderer.init.call(this,this.rendererOptions)},c.prototype.draw=function(b,c){for(var d=0;d<a.jqplot.preDrawLegendHooks.length;d++)a.jqplot.preDrawLegendHooks[d].call(this,b);return this.renderer.draw.call(this,b,c)},c.prototype.pack=function(a){this.renderer.pack.call(this,a)},d.prototype=new a.jqplot.ElemContainer,d.prototype.constructor=d,d.prototype.init=function(){a.isFunction(this.renderer)&&(this.renderer=new this.renderer),this.renderer.init.call(this,this.rendererOptions)},d.prototype.draw=function(a){return this.renderer.draw.call(this,a)},d.prototype.pack=function(){this.renderer.pack.call(this)},e.prototype=new a.jqplot.ElemContainer,e.prototype.constructor=e,e.prototype.init=function(b,c,d){this.index=b,this.gridBorderWidth=c;var e,f,g=this.data,h=[];for(e=0,f=g.length;e<f;e++)if(this.breakOnNull)h.push(g[e]);else{if(null==g[e]||null==g[e][0]||null==g[e][1])continue;h.push(g[e])}if(this.data=h,this.color||(this.color=d.colorGenerator.get(this.index)),this.negativeColor||(this.negativeColor=d.negativeColorGenerator.get(this.index)),this.fillColor||(this.fillColor=this.color),this.fillAlpha){var i=a.jqplot.normalize2rgb(this.fillColor),i=a.jqplot.getColorComponents(i);this.fillColor="rgba("+i[0]+","+i[1]+","+i[2]+","+this.fillAlpha+")"}a.isFunction(this.renderer)&&(this.renderer=new this.renderer),this.renderer.init.call(this,this.rendererOptions,d),this.markerRenderer=new this.markerRenderer,this.markerOptions.color||(this.markerOptions.color=this.color),null==this.markerOptions.show&&(this.markerOptions.show=this.showMarker),this.showMarker=this.markerOptions.show,this.markerRenderer.init(this.markerOptions)},e.prototype.draw=function(b,c,d){var e=c==H?{}:c;b=b==H?this.canvas._ctx:b;var f,g,h;for(f=0;f<a.jqplot.preDrawSeriesHooks.length;f++)a.jqplot.preDrawSeriesHooks[f].call(this,b,e);for(this.show&&(this.renderer.setGridData.call(this,d),e.preventJqPlotSeriesDrawTrigger||a(b.canvas).trigger("jqplotSeriesDraw",[this.data,this.gridData]),g=[],g=e.data?e.data:this._stack?this._plotData:this.data,h=e.gridData||this.renderer.makeGridData.call(this,g,d),"line"===this._type&&this.renderer.smooth&&this.renderer._smoothedData.length&&(h=this.renderer._smoothedData),this.renderer.draw.call(this,b,h,e,d)),f=0;f<a.jqplot.postDrawSeriesHooks.length;f++)a.jqplot.postDrawSeriesHooks[f].call(this,b,e,d);b=c=d=f=g=h=null},e.prototype.drawShadow=function(b,c,d){var e=c==H?{}:c;b=b==H?this.shadowCanvas._ctx:b;var f,g,h;for(f=0;f<a.jqplot.preDrawSeriesShadowHooks.length;f++)a.jqplot.preDrawSeriesShadowHooks[f].call(this,b,e);for(this.shadow&&(this.renderer.setGridData.call(this,d),g=[],g=e.data?e.data:this._stack?this._plotData:this.data,h=e.gridData||this.renderer.makeGridData.call(this,g,d),this.renderer.drawShadow.call(this,b,h,e,d)),f=0;f<a.jqplot.postDrawSeriesShadowHooks.length;f++)a.jqplot.postDrawSeriesShadowHooks[f].call(this,b,e);b=c=d=f=g=h=null},e.prototype.toggleDisplay=function(a,b){var c,d;c=a.data.series?a.data.series:this,a.data.speed&&(d=a.data.speed),d?c.canvas._elem.is(":hidden")||!c.show?(c.show=!0,c.canvas._elem.removeClass("jqplot-series-hidden"),c.shadowCanvas._elem&&c.shadowCanvas._elem.fadeIn(d),c.canvas._elem.fadeIn(d,b),c.canvas._elem.nextAll(".jqplot-point-label.jqplot-series-"+c.index).fadeIn(d)):(c.show=!1,c.canvas._elem.addClass("jqplot-series-hidden"),c.shadowCanvas._elem&&c.shadowCanvas._elem.fadeOut(d),c.canvas._elem.fadeOut(d,b),c.canvas._elem.nextAll(".jqplot-point-label.jqplot-series-"+c.index).fadeOut(d)):c.canvas._elem.is(":hidden")||!c.show?(c.show=!0,c.canvas._elem.removeClass("jqplot-series-hidden"),c.shadowCanvas._elem&&c.shadowCanvas._elem.show(),c.canvas._elem.show(0,b),c.canvas._elem.nextAll(".jqplot-point-label.jqplot-series-"+c.index).show()):(c.show=!1,c.canvas._elem.addClass("jqplot-series-hidden"),c.shadowCanvas._elem&&c.shadowCanvas._elem.hide(),c.canvas._elem.hide(0,b),c.canvas._elem.nextAll(".jqplot-point-label.jqplot-series-"+c.index).hide())},f.prototype=new a.jqplot.ElemContainer,f.prototype.constructor=f,f.prototype.init=function(){a.isFunction(this.renderer)&&(this.renderer=new this.renderer),this.renderer.init.call(this,this.rendererOptions)},f.prototype.createElement=function(a,b){return this._offsets=a,this.renderer.createElement.call(this,b)},f.prototype.draw=function(){this.renderer.draw.call(this)},a.jqplot.GenericCanvas=function(){a.jqplot.ElemContainer.call(this),this._ctx},a.jqplot.GenericCanvas.prototype=new a.jqplot.ElemContainer,a.jqplot.GenericCanvas.prototype.constructor=a.jqplot.GenericCanvas,a.jqplot.GenericCanvas.prototype.createElement=function(b,c,d,e){this._offsets=b;var f="jqplot";c!=H&&(f=c);var g;return g=e.canvasManager.getCanvas(),null!=d&&(this._plotDimensions=d),g.width=this._plotDimensions.width-this._offsets.left-this._offsets.right, +g.height=this._plotDimensions.height-this._offsets.top-this._offsets.bottom,this._elem=a(g),this._elem.css({position:"absolute",left:this._offsets.left,top:this._offsets.top}),this._elem.addClass(f),g=e.canvasManager.initCanvas(g),g=null,this._elem},a.jqplot.GenericCanvas.prototype.setContext=function(){return this._ctx=this._elem.get(0).getContext("2d"),this._ctx},a.jqplot.GenericCanvas.prototype.resetCanvas=function(){this._elem&&(a.jqplot.use_excanvas&&window.G_vmlCanvasManager.uninitElement!==H&&window.G_vmlCanvasManager.uninitElement(this._elem.get(0)),this._elem.emptyForce()),this._ctx=null},a.jqplot.HooksManager=function(){this.hooks=[],this.args=[]},a.jqplot.HooksManager.prototype.addOnce=function(a,b){b=b||[];for(var c=!1,d=0,e=this.hooks.length;d<e;d++)this.hooks[d]==a&&(c=!0);c||(this.hooks.push(a),this.args.push(b))},a.jqplot.HooksManager.prototype.add=function(a,b){b=b||[],this.hooks.push(a),this.args.push(b)},a.jqplot.EventListenerManager=function(){this.hooks=[]},a.jqplot.EventListenerManager.prototype.addOnce=function(a,b){for(var c,d,e=!1,d=0,f=this.hooks.length;d<f;d++)c=this.hooks[d],c[0]==a&&c[1]==b&&(e=!0);e||this.hooks.push([a,b])},a.jqplot.EventListenerManager.prototype.add=function(a,b){this.hooks.push([a,b])};var I=["yMidAxis","xaxis","yaxis","x2axis","y2axis","y3axis","y4axis","y5axis","y6axis","y7axis","y8axis","y9axis"];a.jqplot.computeHighlightColors=function(b){var c;if(a.isArray(b)){c=[];for(var d=0;d<b.length;d++){for(var e=a.jqplot.getColorComponents(b[d]),f=[e[0],e[1],e[2]],g=f[0]+f[1]+f[2],h=0;h<3;h++)f[h]=g>660?.85*f[h]:.73*f[h]+90,f[h]=parseInt(f[h],10),f[h]>255?255:f[h];f[3]=.3+.35*e[3],c.push("rgba("+f[0]+","+f[1]+","+f[2]+","+f[3]+")")}}else{for(var e=a.jqplot.getColorComponents(b),f=[e[0],e[1],e[2]],g=f[0]+f[1]+f[2],h=0;h<3;h++)f[h]=g>660?.85*f[h]:.73*f[h]+90,f[h]=parseInt(f[h],10),f[h]>255?255:f[h];f[3]=.3+.35*e[3],c="rgba("+f[0]+","+f[1]+","+f[2]+","+f[3]+")"}return c},a.jqplot.ColorGenerator=function(b){b=b||a.jqplot.config.defaultColors;var c=0;this.next=function(){return c<b.length?b[c++]:(c=0,b[c++])},this.previous=function(){return c>0?b[c--]:(c=b.length-1,b[c])},this.get=function(a){var c=a-b.length*Math.floor(a/b.length);return b[c]},this.setColors=function(a){b=a},this.reset=function(){c=0},this.getIndex=function(){return c},this.setIndex=function(a){c=a}},a.jqplot.hex2rgb=function(a,b){a=a.replace("#",""),3==a.length&&(a=a.charAt(0)+a.charAt(0)+a.charAt(1)+a.charAt(1)+a.charAt(2)+a.charAt(2));var c;return c="rgba("+parseInt(a.slice(0,2),16)+", "+parseInt(a.slice(2,4),16)+", "+parseInt(a.slice(4,6),16),b&&(c+=", "+b),c+=")"},a.jqplot.rgb2hex=function(a){for(var b=/rgba?\( *([0-9]{1,3}\.?[0-9]*%?) *, *([0-9]{1,3}\.?[0-9]*%?) *, *([0-9]{1,3}\.?[0-9]*%?) *(?:, *[0-9.]*)?\)/,c=a.match(b),d="#",e=1;e<4;e++){var f;c[e].search(/%/)!=-1?(f=parseInt(255*c[e]/100,10).toString(16),1==f.length&&(f="0"+f)):(f=parseInt(c[e],10).toString(16),1==f.length&&(f="0"+f)),d+=f}return d},a.jqplot.normalize2rgb=function(b,c){if(b.search(/^ *rgba?\(/)!=-1)return b;if(b.search(/^ *#?[0-9a-fA-F]?[0-9a-fA-F]/)!=-1)return a.jqplot.hex2rgb(b,c);throw new Error("Invalid color spec")},a.jqplot.getColorComponents=function(b){b=a.jqplot.colorKeywordMap[b]||b;for(var c=a.jqplot.normalize2rgb(b),d=/rgba?\( *([0-9]{1,3}\.?[0-9]*%?) *, *([0-9]{1,3}\.?[0-9]*%?) *, *([0-9]{1,3}\.?[0-9]*%?) *,? *([0-9.]* *)?\)/,e=c.match(d),f=[],g=1;g<4;g++)e[g].search(/%/)!=-1?f[g-1]=parseInt(255*e[g]/100,10):f[g-1]=parseInt(e[g],10);return f[3]=parseFloat(e[4])?parseFloat(e[4]):1,f},a.jqplot.colorKeywordMap={aliceblue:"rgb(240, 248, 255)",antiquewhite:"rgb(250, 235, 215)",aqua:"rgb( 0, 255, 255)",aquamarine:"rgb(127, 255, 212)",azure:"rgb(240, 255, 255)",beige:"rgb(245, 245, 220)",bisque:"rgb(255, 228, 196)",black:"rgb( 0, 0, 0)",blanchedalmond:"rgb(255, 235, 205)",blue:"rgb( 0, 0, 255)",blueviolet:"rgb(138, 43, 226)",brown:"rgb(165, 42, 42)",burlywood:"rgb(222, 184, 135)",cadetblue:"rgb( 95, 158, 160)",chartreuse:"rgb(127, 255, 0)",chocolate:"rgb(210, 105, 30)",coral:"rgb(255, 127, 80)",cornflowerblue:"rgb(100, 149, 237)",cornsilk:"rgb(255, 248, 220)",crimson:"rgb(220, 20, 60)",cyan:"rgb( 0, 255, 255)",darkblue:"rgb( 0, 0, 139)",darkcyan:"rgb( 0, 139, 139)",darkgoldenrod:"rgb(184, 134, 11)",darkgray:"rgb(169, 169, 169)",darkgreen:"rgb( 0, 100, 0)",darkgrey:"rgb(169, 169, 169)",darkkhaki:"rgb(189, 183, 107)",darkmagenta:"rgb(139, 0, 139)",darkolivegreen:"rgb( 85, 107, 47)",darkorange:"rgb(255, 140, 0)",darkorchid:"rgb(153, 50, 204)",darkred:"rgb(139, 0, 0)",darksalmon:"rgb(233, 150, 122)",darkseagreen:"rgb(143, 188, 143)",darkslateblue:"rgb( 72, 61, 139)",darkslategray:"rgb( 47, 79, 79)",darkslategrey:"rgb( 47, 79, 79)",darkturquoise:"rgb( 0, 206, 209)",darkviolet:"rgb(148, 0, 211)",deeppink:"rgb(255, 20, 147)",deepskyblue:"rgb( 0, 191, 255)",dimgray:"rgb(105, 105, 105)",dimgrey:"rgb(105, 105, 105)",dodgerblue:"rgb( 30, 144, 255)",firebrick:"rgb(178, 34, 34)",floralwhite:"rgb(255, 250, 240)",forestgreen:"rgb( 34, 139, 34)",fuchsia:"rgb(255, 0, 255)",gainsboro:"rgb(220, 220, 220)",ghostwhite:"rgb(248, 248, 255)",gold:"rgb(255, 215, 0)",goldenrod:"rgb(218, 165, 32)",gray:"rgb(128, 128, 128)",grey:"rgb(128, 128, 128)",green:"rgb( 0, 128, 0)",greenyellow:"rgb(173, 255, 47)",honeydew:"rgb(240, 255, 240)",hotpink:"rgb(255, 105, 180)",indianred:"rgb(205, 92, 92)",indigo:"rgb( 75, 0, 130)",ivory:"rgb(255, 255, 240)",khaki:"rgb(240, 230, 140)",lavender:"rgb(230, 230, 250)",lavenderblush:"rgb(255, 240, 245)",lawngreen:"rgb(124, 252, 0)",lemonchiffon:"rgb(255, 250, 205)",lightblue:"rgb(173, 216, 230)",lightcoral:"rgb(240, 128, 128)",lightcyan:"rgb(224, 255, 255)",lightgoldenrodyellow:"rgb(250, 250, 210)",lightgray:"rgb(211, 211, 211)",lightgreen:"rgb(144, 238, 144)",lightgrey:"rgb(211, 211, 211)",lightpink:"rgb(255, 182, 193)",lightsalmon:"rgb(255, 160, 122)",lightseagreen:"rgb( 32, 178, 170)",lightskyblue:"rgb(135, 206, 250)",lightslategray:"rgb(119, 136, 153)",lightslategrey:"rgb(119, 136, 153)",lightsteelblue:"rgb(176, 196, 222)",lightyellow:"rgb(255, 255, 224)",lime:"rgb( 0, 255, 0)",limegreen:"rgb( 50, 205, 50)",linen:"rgb(250, 240, 230)",magenta:"rgb(255, 0, 255)",maroon:"rgb(128, 0, 0)",mediumaquamarine:"rgb(102, 205, 170)",mediumblue:"rgb( 0, 0, 205)",mediumorchid:"rgb(186, 85, 211)",mediumpurple:"rgb(147, 112, 219)",mediumseagreen:"rgb( 60, 179, 113)",mediumslateblue:"rgb(123, 104, 238)",mediumspringgreen:"rgb( 0, 250, 154)",mediumturquoise:"rgb( 72, 209, 204)",mediumvioletred:"rgb(199, 21, 133)",midnightblue:"rgb( 25, 25, 112)",mintcream:"rgb(245, 255, 250)",mistyrose:"rgb(255, 228, 225)",moccasin:"rgb(255, 228, 181)",navajowhite:"rgb(255, 222, 173)",navy:"rgb( 0, 0, 128)",oldlace:"rgb(253, 245, 230)",olive:"rgb(128, 128, 0)",olivedrab:"rgb(107, 142, 35)",orange:"rgb(255, 165, 0)",orangered:"rgb(255, 69, 0)",orchid:"rgb(218, 112, 214)",palegoldenrod:"rgb(238, 232, 170)",palegreen:"rgb(152, 251, 152)",paleturquoise:"rgb(175, 238, 238)",palevioletred:"rgb(219, 112, 147)",papayawhip:"rgb(255, 239, 213)",peachpuff:"rgb(255, 218, 185)",peru:"rgb(205, 133, 63)",pink:"rgb(255, 192, 203)",plum:"rgb(221, 160, 221)",powderblue:"rgb(176, 224, 230)",purple:"rgb(128, 0, 128)",red:"rgb(255, 0, 0)",rosybrown:"rgb(188, 143, 143)",royalblue:"rgb( 65, 105, 225)",saddlebrown:"rgb(139, 69, 19)",salmon:"rgb(250, 128, 114)",sandybrown:"rgb(244, 164, 96)",seagreen:"rgb( 46, 139, 87)",seashell:"rgb(255, 245, 238)",sienna:"rgb(160, 82, 45)",silver:"rgb(192, 192, 192)",skyblue:"rgb(135, 206, 235)",slateblue:"rgb(106, 90, 205)",slategray:"rgb(112, 128, 144)",slategrey:"rgb(112, 128, 144)",snow:"rgb(255, 250, 250)",springgreen:"rgb( 0, 255, 127)",steelblue:"rgb( 70, 130, 180)",tan:"rgb(210, 180, 140)",teal:"rgb( 0, 128, 128)",thistle:"rgb(216, 191, 216)",tomato:"rgb(255, 99, 71)",turquoise:"rgb( 64, 224, 208)",violet:"rgb(238, 130, 238)",wheat:"rgb(245, 222, 179)",white:"rgb(255, 255, 255)",whitesmoke:"rgb(245, 245, 245)",yellow:"rgb(255, 255, 0)",yellowgreen:"rgb(154, 205, 50)"},a.jqplot.AxisLabelRenderer=function(b){a.jqplot.ElemContainer.call(this),this.axis,this.show=!0,this.label="",this.fontFamily=null,this.fontSize=null,this.textColor=null,this._elem,this.escapeHTML=!1,a.extend(!0,this,b)},a.jqplot.AxisLabelRenderer.prototype=new a.jqplot.ElemContainer,a.jqplot.AxisLabelRenderer.prototype.constructor=a.jqplot.AxisLabelRenderer,a.jqplot.AxisLabelRenderer.prototype.init=function(b){a.extend(!0,this,b)},a.jqplot.AxisLabelRenderer.prototype.draw=function(b,c){return this._elem&&(this._elem.emptyForce(),this._elem=null),this._elem=a('<div style="position:absolute;" class="jqplot-'+this.axis+'-label"></div>'),Number(this.label)&&this._elem.css("white-space","nowrap"),this.escapeHTML?this._elem.text(this.label):this._elem.html(this.label),this.fontFamily&&this._elem.css("font-family",this.fontFamily),this.fontSize&&this._elem.css("font-size",this.fontSize),this.textColor&&this._elem.css("color",this.textColor),this._elem},a.jqplot.AxisLabelRenderer.prototype.pack=function(){},a.jqplot.AxisTickRenderer=function(b){a.jqplot.ElemContainer.call(this),this.mark="outside",this.axis,this.showMark=!0,this.showGridline=!0,this.isMinorTick=!1,this.size=4,this.markSize=6,this.show=!0,this.showLabel=!0,this.label=null,this.value=null,this._styles={},this.formatter=a.jqplot.DefaultTickFormatter,this.prefix="",this.suffix="",this.formatString="",this.fontFamily,this.fontSize,this.textColor,this.escapeHTML=!1,this._elem,this._breakTick=!1,a.extend(!0,this,b)},a.jqplot.AxisTickRenderer.prototype.init=function(b){a.extend(!0,this,b)},a.jqplot.AxisTickRenderer.prototype=new a.jqplot.ElemContainer,a.jqplot.AxisTickRenderer.prototype.constructor=a.jqplot.AxisTickRenderer,a.jqplot.AxisTickRenderer.prototype.setTick=function(a,b,c){return this.value=a,this.axis=b,c&&(this.isMinorTick=!0),this},a.jqplot.AxisTickRenderer.prototype.draw=function(){null===this.label&&(this.label=this.prefix+this.formatter(this.formatString,this.value)+this.suffix);var b={position:"absolute"};Number(this.label)&&(b.whitSpace="nowrap"),this._elem&&(this._elem.emptyForce(),this._elem=null),this._elem=a(document.createElement("div")),this._elem.addClass("jqplot-"+this.axis+"-tick"),this.escapeHTML?this._elem.text(this.label):this._elem.html(this.label),this._elem.css(b);for(var c in this._styles)this._elem.css(c,this._styles[c]);return this.fontFamily&&this._elem.css("font-family",this.fontFamily),this.fontSize&&this._elem.css("font-size",this.fontSize),this.textColor&&this._elem.css("color",this.textColor),this._breakTick&&this._elem.addClass("jqplot-breakTick"),this._elem},a.jqplot.DefaultTickFormatter=function(b,c){return"number"==typeof c?(b||(b=a.jqplot.config.defaultTickFormatString),a.jqplot.sprintf(b,c)):String(c)},a.jqplot.PercentTickFormatter=function(b,c){return"number"==typeof c?(c*=100,b||(b=a.jqplot.config.defaultTickFormatString),a.jqplot.sprintf(b,c)):String(c)},a.jqplot.AxisTickRenderer.prototype.pack=function(){},a.jqplot.CanvasGridRenderer=function(){this.shadowRenderer=new a.jqplot.ShadowRenderer},a.jqplot.CanvasGridRenderer.prototype.init=function(b){this._ctx,a.extend(!0,this,b);var c={lineJoin:"miter",lineCap:"round",fill:!1,isarc:!1,angle:this.shadowAngle,offset:this.shadowOffset,alpha:this.shadowAlpha,depth:this.shadowDepth,lineWidth:this.shadowWidth,closePath:!1,strokeStyle:this.shadowColor};this.renderer.shadowRenderer.init(c)},a.jqplot.CanvasGridRenderer.prototype.createElement=function(b){var c;this._elem&&(a.jqplot.use_excanvas&&window.G_vmlCanvasManager.uninitElement!==H&&(c=this._elem.get(0),window.G_vmlCanvasManager.uninitElement(c),c=null),this._elem.emptyForce(),this._elem=null),c=b.canvasManager.getCanvas();var d=this._plotDimensions.width,e=this._plotDimensions.height;return c.width=d,c.height=e,this._elem=a(c),this._elem.addClass("jqplot-grid-canvas"),this._elem.css({position:"absolute",left:0,top:0}),c=b.canvasManager.initCanvas(c),this._top=this._offsets.top,this._bottom=e-this._offsets.bottom,this._left=this._offsets.left,this._right=d-this._offsets.right,this._width=this._right-this._left,this._height=this._bottom-this._top,c=null,this._elem},a.jqplot.CanvasGridRenderer.prototype.draw=function(){function b(b,d,e,f,g){c.save(),g=g||{},null!=g.lineWidth&&0==g.lineWidth||(a.extend(!0,c,g),c.beginPath(),c.moveTo(b,d),c.lineTo(e,f),c.stroke(),c.restore())}this._ctx=this._elem.get(0).getContext("2d");var c=this._ctx,d=this._axes;c.save(),c.clearRect(0,0,this._plotDimensions.width,this._plotDimensions.height),c.fillStyle=this.backgroundColor||this.background,c.fillRect(this._left,this._top,this._width,this._height),c.save(),c.lineJoin="miter",c.lineCap="butt",c.lineWidth=this.gridLineWidth,c.strokeStyle=this.gridLineColor;for(var e,f,g,h,i=["xaxis","yaxis","x2axis","y2axis"],j=4;j>0;j--){var k=i[j-1],l=d[k],m=l._ticks,n=m.length;if(l.show){if(l.drawBaseline){var o={};switch(null!==l.baselineWidth&&(o.lineWidth=l.baselineWidth),null!==l.baselineColor&&(o.strokeStyle=l.baselineColor),k){case"xaxis":b(this._left,this._bottom,this._right,this._bottom,o);break;case"yaxis":b(this._left,this._bottom,this._left,this._top,o);break;case"x2axis":b(this._left,this._bottom,this._right,this._bottom,o);break;case"y2axis":b(this._right,this._bottom,this._right,this._top,o)}}for(var p=n;p>0;p--){var q=m[p-1];if(q.show){var r=Math.round(l.u2p(q.value))+.5;switch(k){case"xaxis":if(q.showGridline&&this.drawGridlines&&(!q.isMinorTick&&l.drawMajorGridlines||q.isMinorTick&&l.drawMinorGridlines)&&b(r,this._top,r,this._bottom),q.showMark&&q.mark&&(!q.isMinorTick&&l.drawMajorTickMarks||q.isMinorTick&&l.drawMinorTickMarks)){g=q.markSize,h=q.mark;var r=Math.round(l.u2p(q.value))+.5;switch(h){case"outside":e=this._bottom,f=this._bottom+g;break;case"inside":e=this._bottom-g,f=this._bottom;break;case"cross":e=this._bottom-g,f=this._bottom+g;break;default:e=this._bottom,f=this._bottom+g}this.shadow&&this.renderer.shadowRenderer.draw(c,[[r,e],[r,f]],{lineCap:"butt",lineWidth:this.gridLineWidth,offset:.75*this.gridLineWidth,depth:2,fill:!1,closePath:!1}),b(r,e,r,f)}break;case"yaxis":if(q.showGridline&&this.drawGridlines&&(!q.isMinorTick&&l.drawMajorGridlines||q.isMinorTick&&l.drawMinorGridlines)&&b(this._right,r,this._left,r),q.showMark&&q.mark&&(!q.isMinorTick&&l.drawMajorTickMarks||q.isMinorTick&&l.drawMinorTickMarks)){g=q.markSize,h=q.mark;var r=Math.round(l.u2p(q.value))+.5;switch(h){case"outside":e=this._left-g,f=this._left;break;case"inside":e=this._left,f=this._left+g;break;case"cross":e=this._left-g,f=this._left+g;break;default:e=this._left-g,f=this._left}this.shadow&&this.renderer.shadowRenderer.draw(c,[[e,r],[f,r]],{lineCap:"butt",lineWidth:1.5*this.gridLineWidth,offset:.75*this.gridLineWidth,fill:!1,closePath:!1}),b(e,r,f,r,{strokeStyle:l.borderColor})}break;case"x2axis":if(q.showGridline&&this.drawGridlines&&(!q.isMinorTick&&l.drawMajorGridlines||q.isMinorTick&&l.drawMinorGridlines)&&b(r,this._bottom,r,this._top),q.showMark&&q.mark&&(!q.isMinorTick&&l.drawMajorTickMarks||q.isMinorTick&&l.drawMinorTickMarks)){g=q.markSize,h=q.mark;var r=Math.round(l.u2p(q.value))+.5;switch(h){case"outside":e=this._top-g,f=this._top;break;case"inside":e=this._top,f=this._top+g;break;case"cross":e=this._top-g,f=this._top+g;break;default:e=this._top-g,f=this._top}this.shadow&&this.renderer.shadowRenderer.draw(c,[[r,e],[r,f]],{lineCap:"butt",lineWidth:this.gridLineWidth,offset:.75*this.gridLineWidth,depth:2,fill:!1,closePath:!1}),b(r,e,r,f)}break;case"y2axis":if(q.showGridline&&this.drawGridlines&&(!q.isMinorTick&&l.drawMajorGridlines||q.isMinorTick&&l.drawMinorGridlines)&&b(this._left,r,this._right,r),q.showMark&&q.mark&&(!q.isMinorTick&&l.drawMajorTickMarks||q.isMinorTick&&l.drawMinorTickMarks)){g=q.markSize,h=q.mark;var r=Math.round(l.u2p(q.value))+.5;switch(h){case"outside":e=this._right,f=this._right+g;break;case"inside":e=this._right-g,f=this._right;break;case"cross":e=this._right-g,f=this._right+g;break;default:e=this._right,f=this._right+g}this.shadow&&this.renderer.shadowRenderer.draw(c,[[e,r],[f,r]],{lineCap:"butt",lineWidth:1.5*this.gridLineWidth,offset:.75*this.gridLineWidth,fill:!1,closePath:!1}),b(e,r,f,r,{strokeStyle:l.borderColor})}}}}q=null}l=null,m=null}i=["y3axis","y4axis","y5axis","y6axis","y7axis","y8axis","y9axis","yMidAxis"];for(var j=7;j>0;j--){var l=d[i[j-1]],m=l._ticks;if(l.show){var s=m[l.numberTicks-1],t=m[0],u=l.getLeft(),v=[[u,s.getTop()+s.getHeight()/2],[u,t.getTop()+t.getHeight()/2+1]];this.shadow&&this.renderer.shadowRenderer.draw(c,v,{lineCap:"butt",fill:!1,closePath:!1}),b(v[0][0],v[0][1],v[1][0],v[1][1],{lineCap:"butt",strokeStyle:l.borderColor,lineWidth:l.borderWidth});for(var p=m.length;p>0;p--){var q=m[p-1];g=q.markSize,h=q.mark;var r=Math.round(l.u2p(q.value))+.5;if(q.showMark&&q.mark){switch(h){case"outside":e=u,f=u+g;break;case"inside":e=u-g,f=u;break;case"cross":e=u-g,f=u+g;break;default:e=u,f=u+g}v=[[e,r],[f,r]],this.shadow&&this.renderer.shadowRenderer.draw(c,v,{lineCap:"butt",lineWidth:1.5*this.gridLineWidth,offset:.75*this.gridLineWidth,fill:!1,closePath:!1}),b(e,r,f,r,{strokeStyle:l.borderColor})}q=null}t=null}l=null,m=null}if(c.restore(),this.shadow){var v=[[this._left,this._bottom],[this._right,this._bottom],[this._right,this._top]];this.renderer.shadowRenderer.draw(c,v)}0!=this.borderWidth&&this.drawBorder&&(b(this._left,this._top,this._right,this._top,{lineCap:"round",strokeStyle:d.x2axis.borderColor,lineWidth:d.x2axis.borderWidth}),b(this._right,this._top,this._right,this._bottom,{lineCap:"round",strokeStyle:d.y2axis.borderColor,lineWidth:d.y2axis.borderWidth}),b(this._right,this._bottom,this._left,this._bottom,{lineCap:"round",strokeStyle:d.xaxis.borderColor,lineWidth:d.xaxis.borderWidth}),b(this._left,this._bottom,this._left,this._top,{lineCap:"round",strokeStyle:d.yaxis.borderColor,lineWidth:d.yaxis.borderWidth})),c.restore(),c=null,d=null},a.jqplot.DivTitleRenderer=function(){},a.jqplot.DivTitleRenderer.prototype.init=function(b){a.extend(!0,this,b)},a.jqplot.DivTitleRenderer.prototype.draw=function(){this._elem&&(this._elem.emptyForce(),this._elem=null);var b=(this.renderer,document.createElement("div"));if(this._elem=a(b),this._elem.addClass("jqplot-title"),this.text){if(this.text){var c;this.color?c=this.color:this.textColor&&(c=this.textColor);var d={position:"absolute",top:"0px",left:"0px"};this._plotWidth&&(d.width=this._plotWidth+"px"),this.fontSize&&(d.fontSize=this.fontSize),"string"==typeof this.textAlign?d.textAlign=this.textAlign:d.textAlign="center",c&&(d.color=c),this.paddingBottom&&(d.paddingBottom=this.paddingBottom),this.fontFamily&&(d.fontFamily=this.fontFamily),this._elem.css(d),this.escapeHtml?this._elem.text(this.text):this._elem.html(this.text)}}else this.show=!1,this._elem.height(0),this._elem.width(0);return b=null,this._elem},a.jqplot.DivTitleRenderer.prototype.pack=function(){};var J=.1;a.jqplot.LinePattern=function(b,c){var d={dotted:[J,a.jqplot.config.dotGapLength],dashed:[a.jqplot.config.dashLength,a.jqplot.config.gapLength],solid:null};if("string"==typeof c)if("."===c[0]||"-"===c[0]){var e=c;c=[];for(var f=0,g=e.length;f<g;f++){if("."===e[f])c.push(J);else{if("-"!==e[f])continue;c.push(a.jqplot.config.dashLength)}c.push(a.jqplot.config.gapLength)}}else c=d[c];if(!c||!c.length)return b;var h=0,i=c[0],j=0,k=0,l=0,m=0,n=function(a,c){b.moveTo(a,c),j=a,k=c,l=a,m=c},o=function(a,d){var e=b.lineWidth,f=a-j,g=d-k,l=Math.sqrt(f*f+g*g);if(l>0&&e>0)for(f/=l,g/=l;;){var m=e*i;if(!(m<l)){j=a,k=d,0==(1&h)?b.lineTo(j,k):b.moveTo(j,k),i-=l/e;break}j+=m*f,k+=m*g,0==(1&h)?b.lineTo(j,k):b.moveTo(j,k),l-=m,h++,h>=c.length&&(h=0),i=c[h]}},p=function(){b.beginPath()},q=function(){o(l,m)};return{moveTo:n,lineTo:o,beginPath:p,closePath:q}},a.jqplot.LineRenderer=function(){this.shapeRenderer=new a.jqplot.ShapeRenderer,this.shadowRenderer=new a.jqplot.ShadowRenderer},a.jqplot.LineRenderer.prototype.init=function(b,c){b=b||{},this._type="line",this.renderer.animation={show:!1,direction:"left",speed:2500,_supported:!0},this.renderer.smooth=!1,this.renderer.tension=null,this.renderer.constrainSmoothing=!0,this.renderer._smoothedData=[],this.renderer._smoothedPlotData=[],this.renderer._hiBandGridData=[],this.renderer._lowBandGridData=[],this.renderer._hiBandSmoothedData=[],this.renderer._lowBandSmoothedData=[],this.renderer.bandData=[],this.renderer.bands={show:!1,hiData:[],lowData:[],color:this.color,showLines:!1,fill:!0,fillColor:null,_min:null,_max:null,interval:"3%"};var d={highlightMouseOver:b.highlightMouseOver,highlightMouseDown:b.highlightMouseDown,highlightColor:b.highlightColor};delete b.highlightMouseOver,delete b.highlightMouseDown,delete b.highlightColor,a.extend(!0,this.renderer,b),this.renderer.options=b,this.renderer.bandData.length>1&&(!b.bands||null==b.bands.show)?this.renderer.bands.show=!0:b.bands&&null==b.bands.show&&null!=b.bands.interval&&(this.renderer.bands.show=!0),this.fill&&(this.renderer.bands.show=!1),this.renderer.bands.show&&this.renderer.initBands.call(this,this.renderer.options,c),this._stack&&(this.renderer.smooth=!1);var e={lineJoin:this.lineJoin,lineCap:this.lineCap,fill:this.fill,isarc:!1,strokeStyle:this.color,fillStyle:this.fillColor,lineWidth:this.lineWidth,linePattern:this.linePattern,closePath:this.fill};this.renderer.shapeRenderer.init(e);var f=b.shadowOffset;null==f&&(f=this.lineWidth>2.5?1.25*(1+.6*(Math.atan(this.lineWidth/2.5)/.785398163-1)):1.25*Math.atan(this.lineWidth/2.5)/.785398163);var g={lineJoin:this.lineJoin,lineCap:this.lineCap,fill:this.fill,isarc:!1,angle:this.shadowAngle,offset:f,alpha:this.shadowAlpha,depth:this.shadowDepth,lineWidth:this.lineWidth,linePattern:this.linePattern,closePath:this.fill};if(this.renderer.shadowRenderer.init(g),this._areaPoints=[],this._boundingBox=[[],[]],!this.isTrendline&&this.fill||this.renderer.bands.show){if(this.highlightMouseOver=!0,this.highlightMouseDown=!1,this.highlightColor=null,d.highlightMouseDown&&null==d.highlightMouseOver&&(d.highlightMouseOver=!1),a.extend(!0,this,{highlightMouseOver:d.highlightMouseOver,highlightMouseDown:d.highlightMouseDown,highlightColor:d.highlightColor}),!this.highlightColor){var h=this.renderer.bands.show?this.renderer.bands.fillColor:this.fillColor;this.highlightColor=a.jqplot.computeHighlightColors(h)}this.highlighter&&(this.highlighter.show=!1)}!this.isTrendline&&c&&(c.plugins.lineRenderer={},c.postInitHooks.addOnce(l),c.postDrawHooks.addOnce(m),c.eventListenerHooks.addOnce("jqplotMouseMove",p),c.eventListenerHooks.addOnce("jqplotMouseDown",q),c.eventListenerHooks.addOnce("jqplotMouseUp",r),c.eventListenerHooks.addOnce("jqplotClick",s),c.eventListenerHooks.addOnce("jqplotRightClick",t))},a.jqplot.LineRenderer.prototype.initBands=function(b,c){var d=b.bandData||[],e=this.renderer.bands;e.hiData=[],e.lowData=[];var f=this.data;if(e._max=null,e._min=null,2==d.length)if(a.isArray(d[0][0])){for(var g,h=0,i=0,j=0,k=d[0].length;j<k;j++)g=d[0][j],(null!=g[1]&&g[1]>e._max||null==e._max)&&(e._max=g[1]),(null!=g[1]&&g[1]<e._min||null==e._min)&&(e._min=g[1]);for(var j=0,k=d[1].length;j<k;j++)g=d[1][j],(null!=g[1]&&g[1]>e._max||null==e._max)&&(e._max=g[1],i=1),(null!=g[1]&&g[1]<e._min||null==e._min)&&(e._min=g[1],h=1);i===h&&(e.show=!1),e.hiData=d[i],e.lowData=d[h]}else if(d[0].length===f.length&&d[1].length===f.length)for(var l=d[0][0]>d[1][0]?0:1,m=l?0:1,j=0,k=f.length;j<k;j++)e.hiData.push([f[j][0],d[l][j]]),e.lowData.push([f[j][0],d[m][j]]);else e.show=!1;else if(d.length>2&&!a.isArray(d[0][0]))for(var l=d[0][0]>d[0][1]?0:1,m=l?0:1,j=0,k=d.length;j<k;j++)e.hiData.push([f[j][0],d[j][l]]),e.lowData.push([f[j][0],d[j][m]]);else{var n=e.interval,o=null,p=null,q=null,r=null;if(a.isArray(n)?(o=n[0],p=n[1]):o=n,isNaN(o)?"%"===o.charAt(o.length-1)&&(q="multiply",o=parseFloat(o)/100+1):(o=parseFloat(o),q="add"),null!==p&&isNaN(p)?"%"===p.charAt(p.length-1)&&(r="multiply",p=parseFloat(p)/100+1):null!==p&&(p=parseFloat(p),r="add"),null!==o){if(null===p&&(p=-o,r=q,"multiply"===r&&(p+=2)),o<p){var s=o;o=p,p=s,s=q,q=r,r=s}for(var j=0,k=f.length;j<k;j++){switch(q){case"add":e.hiData.push([f[j][0],f[j][1]+o]);break;case"multiply":e.hiData.push([f[j][0],f[j][1]*o])}switch(r){case"add":e.lowData.push([f[j][0],f[j][1]+p]);break;case"multiply":e.lowData.push([f[j][0],f[j][1]*p])}}}else e.show=!1}for(var t=e.hiData,u=e.lowData,j=0,k=t.length;j<k;j++)(null!=t[j][1]&&t[j][1]>e._max||null==e._max)&&(e._max=t[j][1]);for(var j=0,k=u.length;j<k;j++)(null!=u[j][1]&&u[j][1]<e._min||null==e._min)&&(e._min=u[j][1]);if(null===e.fillColor){var v=a.jqplot.getColorComponents(e.color);v[3]=.5*v[3],e.fillColor="rgba("+v[0]+", "+v[1]+", "+v[2]+", "+v[3]+")"}},a.jqplot.LineRenderer.prototype.setGridData=function(a){var b=this._xaxis.series_u2p,c=this._yaxis.series_u2p,d=this._plotData,e=this._prevPlotData;this.gridData=[],this._prevGridData=[],this.renderer._smoothedData=[],this.renderer._smoothedPlotData=[],this.renderer._hiBandGridData=[],this.renderer._lowBandGridData=[],this.renderer._hiBandSmoothedData=[],this.renderer._lowBandSmoothedData=[];for(var f=this.renderer.bands,g=!1,h=0,i=d.length;h<i;h++)null!=d[h][0]&&null!=d[h][1]?this.gridData.push([b.call(this._xaxis,d[h][0]),c.call(this._yaxis,d[h][1])]):null==d[h][0]?(g=!0,this.gridData.push([null,c.call(this._yaxis,d[h][1])])):null==d[h][1]&&(g=!0,this.gridData.push([b.call(this._xaxis,d[h][0]),null])),null!=e[h]&&null!=e[h][0]&&null!=e[h][1]?this._prevGridData.push([b.call(this._xaxis,e[h][0]),c.call(this._yaxis,e[h][1])]):null!=e[h]&&null==e[h][0]?this._prevGridData.push([null,c.call(this._yaxis,e[h][1])]):null!=e[h]&&null!=e[h][0]&&null==e[h][1]&&this._prevGridData.push([b.call(this._xaxis,e[h][0]),null]);if(g&&(this.renderer.smooth=!1,"line"===this._type&&(f.show=!1)),"line"===this._type&&f.show){for(var h=0,i=f.hiData.length;h<i;h++)this.renderer._hiBandGridData.push([b.call(this._xaxis,f.hiData[h][0]),c.call(this._yaxis,f.hiData[h][1])]);for(var h=0,i=f.lowData.length;h<i;h++)this.renderer._lowBandGridData.push([b.call(this._xaxis,f.lowData[h][0]),c.call(this._yaxis,f.lowData[h][1])])}if("line"===this._type&&this.renderer.smooth&&this.gridData.length>2){var l;this.renderer.constrainSmoothing?(l=j.call(this,this.gridData),this.renderer._smoothedData=l[0],this.renderer._smoothedPlotData=l[1],f.show&&(l=j.call(this,this.renderer._hiBandGridData),this.renderer._hiBandSmoothedData=l[0],l=j.call(this,this.renderer._lowBandGridData),this.renderer._lowBandSmoothedData=l[0]),l=null):(l=k.call(this,this.gridData),this.renderer._smoothedData=l[0],this.renderer._smoothedPlotData=l[1],f.show&&(l=k.call(this,this.renderer._hiBandGridData),this.renderer._hiBandSmoothedData=l[0],l=k.call(this,this.renderer._lowBandGridData),this.renderer._lowBandSmoothedData=l[0]),l=null)}},a.jqplot.LineRenderer.prototype.makeGridData=function(a,b){var c=this._xaxis.series_u2p,d=this._yaxis.series_u2p,e=[];this.renderer._smoothedData=[],this.renderer._smoothedPlotData=[],this.renderer._hiBandGridData=[],this.renderer._lowBandGridData=[],this.renderer._hiBandSmoothedData=[],this.renderer._lowBandSmoothedData=[];for(var f=this.renderer.bands,g=!1,h=0;h<a.length;h++)null!=a[h][0]&&null!=a[h][1]?(this.step&&h>0&&e.push([c.call(this._xaxis,a[h][0]),d.call(this._yaxis,a[h-1][1])]),e.push([c.call(this._xaxis,a[h][0]),d.call(this._yaxis,a[h][1])])):null==a[h][0]?(g=!0,e.push([null,d.call(this._yaxis,a[h][1])])):null==a[h][1]&&(g=!0,e.push([c.call(this._xaxis,a[h][0]),null]));if(g&&(this.renderer.smooth=!1,"line"===this._type&&(f.show=!1)),"line"===this._type&&f.show){for(var h=0,i=f.hiData.length;h<i;h++)this.renderer._hiBandGridData.push([c.call(this._xaxis,f.hiData[h][0]),d.call(this._yaxis,f.hiData[h][1])]);for(var h=0,i=f.lowData.length;h<i;h++)this.renderer._lowBandGridData.push([c.call(this._xaxis,f.lowData[h][0]),d.call(this._yaxis,f.lowData[h][1])])}if("line"===this._type&&this.renderer.smooth&&e.length>2){var l;this.renderer.constrainSmoothing?(l=j.call(this,e),this.renderer._smoothedData=l[0],this.renderer._smoothedPlotData=l[1],f.show&&(l=j.call(this,this.renderer._hiBandGridData),this.renderer._hiBandSmoothedData=l[0],l=j.call(this,this.renderer._lowBandGridData),this.renderer._lowBandSmoothedData=l[0]),l=null):(l=k.call(this,e),this.renderer._smoothedData=l[0],this.renderer._smoothedPlotData=l[1],f.show&&(l=k.call(this,this.renderer._hiBandGridData),this.renderer._hiBandSmoothedData=l[0],l=k.call(this,this.renderer._lowBandGridData),this.renderer._lowBandSmoothedData=l[0]),l=null)}return e},a.jqplot.LineRenderer.prototype.draw=function(b,c,d,e){var f,g,h,i,j,k=a.extend(!0,{},d),l=k.shadow!=H?k.shadow:this.shadow,m=k.showLine!=H?k.showLine:this.showLine,n=k.fill!=H?k.fill:this.fill,o=k.fillAndStroke!=H?k.fillAndStroke:this.fillAndStroke;if(b.save(),c.length){if(m)if(n){if(this.fillToZero){var p=this.negativeColor;this.useNegativeColors||(p=k.fillStyle);var q=!1,r=k.fillStyle;if(o)var s=c.slice(0);if(0!=this.index&&this._stack){for(var t=this._prevGridData,f=t.length;f>0;f--)c.push(t[f-1]);l&&this.renderer.shadowRenderer.draw(b,c,k),this._areaPoints=c,this.renderer.shapeRenderer.draw(b,c,k)}else{var u=[],v=this.renderer.smooth?this.renderer._smoothedPlotData:this._plotData;this._areaPoints=[];var w=this._yaxis.series_u2p(this.fillToValue);this._xaxis.series_u2p(this.fillToValue);if(k.closePath=!0,"y"==this.fillAxis){u.push([c[0][0],w]),this._areaPoints.push([c[0][0],w]);for(var f=0;f<c.length-1;f++)if(u.push(c[f]),this._areaPoints.push(c[f]),v[f][1]*v[f+1][1]<=0){v[f][1]<0?(q=!0,k.fillStyle=p):(q=!1,k.fillStyle=r);var x=c[f][0]+(c[f+1][0]-c[f][0])*(w-c[f][1])/(c[f+1][1]-c[f][1]);u.push([x,w]),this._areaPoints.push([x,w]),l&&this.renderer.shadowRenderer.draw(b,u,k),this.renderer.shapeRenderer.draw(b,u,k),u=[[x,w]]}v[c.length-1][1]<0?(q=!0,k.fillStyle=p):(q=!1,k.fillStyle=r),u.push(c[c.length-1]),this._areaPoints.push(c[c.length-1]),u.push([c[c.length-1][0],w]),this._areaPoints.push([c[c.length-1][0],w])}l&&this.renderer.shadowRenderer.draw(b,u,k),this.renderer.shapeRenderer.draw(b,u,k)}}else{if(o)var s=c.slice(0);if(0!=this.index&&this._stack)for(var t=this._prevGridData,f=t.length;f>0;f--)c.push(t[f-1]);else{var y=b.canvas.height;c.unshift([c[0][0],y]);var z=c.length;c.push([c[z-1][0],y])}this._areaPoints=c,l&&this.renderer.shadowRenderer.draw(b,c,k),this.renderer.shapeRenderer.draw(b,c,k)}if(o){var A=a.extend(!0,{},k,{fill:!1,closePath:!1});if(this.renderer.shapeRenderer.draw(b,s,A),this.markerRenderer.show)for(this.renderer.smooth&&(s=this.gridData),f=0;f<s.length;f++){var B=k.markerOptions||{};this.markerOptionsCallback&&(B=a.extend(!0,B,this.markerOptionsCallback(e,this,f,this.data[f],c[f])||{})),this.markerRenderer.draw(s[f][0],s[f][1],b,B)}}}else{if(this.renderer.bands.show){var C,D=a.extend(!0,{},k);this.renderer.bands.showLines&&(C=this.renderer.smooth?this.renderer._hiBandSmoothedData:this.renderer._hiBandGridData,this.renderer.shapeRenderer.draw(b,C,k),C=this.renderer.smooth?this.renderer._lowBandSmoothedData:this.renderer._lowBandGridData,this.renderer.shapeRenderer.draw(b,C,D)),this.renderer.bands.fill&&(C=this.renderer.smooth?this.renderer._hiBandSmoothedData.concat(this.renderer._lowBandSmoothedData.reverse()):this.renderer._hiBandGridData.concat(this.renderer._lowBandGridData.reverse()),this._areaPoints=C,D.closePath=!0,D.fill=!0,D.fillStyle=this.renderer.bands.fillColor,this.renderer.shapeRenderer.draw(b,C,D))}l&&this.renderer.shadowRenderer.draw(b,c,k),this.renderer.shapeRenderer.draw(b,c,k)}var g=i=h=j=null;for(f=0;f<this._areaPoints.length;f++){var E=this._areaPoints[f];(g>E[0]||null==g)&&(g=E[0]),(j<E[1]||null==j)&&(j=E[1]),(i<E[0]||null==i)&&(i=E[0]),(h>E[1]||null==h)&&(h=E[1])}if("line"===this.type&&this.renderer.bands.show&&(j=this._yaxis.series_u2p(this.renderer.bands._min),h=this._yaxis.series_u2p(this.renderer.bands._max)),this._boundingBox=[[g,j],[i,h]],this.markerRenderer.show&&!n)for(this.renderer.smooth&&(c=this.gridData),f=0;f<c.length;f++){var B=k.markerOptions||{};this.markerOptionsCallback&&(B=a.extend(!0,B,this.markerOptionsCallback(e,this,f,this.data[f],c[f])||{})), +null!=c[f][0]&&null!=c[f][1]&&this.markerRenderer.draw(c[f][0],c[f][1],b,B)}}b.restore()},a.jqplot.LineRenderer.prototype.drawShadow=function(a,b,c){},a.jqplot.LinearAxisRenderer=function(){},a.jqplot.LinearAxisRenderer.prototype.init=function(b){this.breakPoints=null,this.breakTickLabel="≈",this.drawBaseline=!0,this.baselineWidth=null,this.baselineColor=null,this.forceTickAt0=!1,this.forceTickAt100=!1,this.tickInset=0,this.minorTicks=0,this.alignTicks=!1,this._autoFormatString="",this._overrideFormatString=!1,this._scalefact=1,a.extend(!0,this,b),this.breakPoints&&(a.isArray(this.breakPoints)?(this.breakPoints.length<2||this.breakPoints[1]<=this.breakPoints[0])&&(this.breakPoints=null):this.breakPoints=null),null!=this.numberTicks&&this.numberTicks<2&&(this.numberTicks=2),this.resetDataBounds()},a.jqplot.LinearAxisRenderer.prototype.draw=function(b,c){if(this.show){this.renderer.createTicks.call(this,c);if(this._elem&&(this._elem.emptyForce(),this._elem=null),this._elem=a(document.createElement("div")),this._elem.addClass("jqplot-axis jqplot-"+this.name),this._elem.css("position","absolute"),"xaxis"==this.name||"x2axis"==this.name?this._elem.width(this._plotDimensions.width):this._elem.height(this._plotDimensions.height),this.labelOptions.axis=this.name,this._label=new this.labelRenderer(this.labelOptions),this._label.show){var d=this._label.draw(b,c);d.appendTo(this._elem),d=null}for(var e,f=this._ticks,g=0;g<f.length;g++)e=f[g],e.show&&e.showLabel&&(!e.isMinorTick||this.showMinorTicks)&&this._elem.append(e.draw(b,c));e=null,f=null}return this._elem},a.jqplot.LinearAxisRenderer.prototype.reset=function(){this.min=this._options.min,this.max=this._options.max,this.tickInterval=this._options.tickInterval,this.numberTicks=this._options.numberTicks,this._autoFormatString="",this._overrideFormatString&&this.tickOptions&&this.tickOptions.formatString&&(this.tickOptions.formatString="")},a.jqplot.LinearAxisRenderer.prototype.set=function(){var b,c=0,d=0,e=0,f=null!=this._label&&this._label.show;if(this.show){for(var g,h=this._ticks,i=0;i<h.length;i++)g=h[i],g._breakTick||!g.show||!g.showLabel||g.isMinorTick&&!this.showMinorTicks||(b="xaxis"==this.name||"x2axis"==this.name?g._elem.outerHeight(!0):g._elem.outerWidth(!0),b>c&&(c=b));g=null,h=null,f&&(d=this._label._elem.outerWidth(!0),e=this._label._elem.outerHeight(!0)),"xaxis"==this.name?(c+=e,this._elem.css({height:c+"px",left:"0px",bottom:"0px"})):"x2axis"==this.name?(c+=e,this._elem.css({height:c+"px",left:"0px",top:"0px"})):"yaxis"==this.name?(c+=d,this._elem.css({width:c+"px",left:"0px",top:"0px"}),f&&this._label.constructor==a.jqplot.AxisLabelRenderer&&this._label._elem.css("width",d+"px")):(c+=d,this._elem.css({width:c+"px",right:"0px",top:"0px"}),f&&this._label.constructor==a.jqplot.AxisLabelRenderer&&this._label._elem.css("width",d+"px"))}},a.jqplot.LinearAxisRenderer.prototype.createTicks=function(b){var c,d,e,f,g=this._ticks,h=this.ticks,i=this.name,j=this._dataBounds,k="x"===this.name.charAt(0)?this._plotDimensions.width:this._plotDimensions.height,l=this.min,m=this.max,n=this.numberTicks,o=this.tickInterval,p=30;if(this._scalefact=(Math.max(k,p+1)-p)/300,h.length){for(f=0;f<h.length;f++){var q=h[f],r=new this.tickRenderer(this.tickOptions);a.isArray(q)?(r.value=q[0],this.breakPoints?q[0]==this.breakPoints[0]?(r.label=this.breakTickLabel,r._breakTick=!0,r.showGridline=!1,r.showMark=!1):q[0]>this.breakPoints[0]&&q[0]<=this.breakPoints[1]?(r.show=!1,r.showGridline=!1,r.label=q[1]):r.label=q[1]:r.label=q[1],r.setTick(q[0],this.name),this._ticks.push(r)):a.isPlainObject(q)?(a.extend(!0,r,q),r.axis=this.name,this._ticks.push(r)):(r.value=q,this.breakPoints&&(q==this.breakPoints[0]?(r.label=this.breakTickLabel,r._breakTick=!0,r.showGridline=!1,r.showMark=!1):q>this.breakPoints[0]&&q<=this.breakPoints[1]&&(r.show=!1,r.showGridline=!1)),r.setTick(q,this.name),this._ticks.push(r))}this.numberTicks=h.length,this.min=this._ticks[0].value,this.max=this._ticks[this.numberTicks-1].value,this.tickInterval=(this.max-this.min)/(this.numberTicks-1)}else{k="xaxis"==i||"x2axis"==i?this._plotDimensions.width:this._plotDimensions.height;var s=this.numberTicks;this.alignTicks&&("x2axis"===this.name&&b.axes.xaxis.show?s=b.axes.xaxis.numberTicks:"y"===this.name.charAt(0)&&"yaxis"!==this.name&&"yMidAxis"!==this.name&&b.axes.yaxis.show&&(s=b.axes.yaxis.numberTicks)),c=null!=this.min?this.min:j.min,d=null!=this.max?this.max:j.max;var t,u,v,w=d-c;if(null!=this.tickOptions&&this.tickOptions.formatString||(this._overrideFormatString=!0),null==this.min||null==this.max&&null==this.tickInterval&&!this.autoscale){this.forceTickAt0&&(c>0&&(c=0),d<0&&(d=0)),this.forceTickAt100&&(c>100&&(c=100),d<100&&(d=100));var x=!1,y=!1;null!=this.min?x=!0:null!=this.max&&(y=!0);var z=a.jqplot.LinearTickGenerator(c,d,this._scalefact,s,x,y),A=null!=this.min?c:c+w*(this.padMin-1),B=null!=this.max?d:d-w*(this.padMax-1);(c<A||d>B)&&(A=null!=this.min?c:c-w*(this.padMin-1),B=null!=this.max?d:d+w*(this.padMax-1),z=a.jqplot.LinearTickGenerator(A,B,this._scalefact,s,x,y)),this.min=z[0],this.max=z[1],this.numberTicks=z[2],this._autoFormatString=z[3],this.tickInterval=z[4]}else{if(c==d){var C=.05;c>0&&(C=Math.max(Math.log(c)/Math.LN10,.05)),c-=C,d+=C}if(this.autoscale&&null==this.min&&null==this.max){for(var D,E,F,G=!1,H=!1,f=0;f<this._series.length;f++){var I=this._series[f],J="x"==I.fillAxis?I._xaxis.name:I._yaxis.name;if(this.name==J){for(var K=I._plotValues[I.fillAxis],L=K[0],M=K[0],N=1;N<K.length;N++)K[N]<L?L=K[N]:K[N]>M&&(M=K[N]);var O=(M-L)/M;I.renderer.constructor==a.jqplot.BarRenderer?L>=0&&(I.fillToZero||O>.1)?G=!0:(G=!1,H=!!(I.fill&&I.fillToZero&&L<0&&M>0)):I.fill?L>=0&&(I.fillToZero||O>.1)?G=!0:L<0&&M>0&&I.fillToZero?(G=!1,H=!0):(G=!1,H=!1):L<0&&(G=!1)}}if(G)this.numberTicks=2+Math.ceil((k-(this.tickSpacing-1))/this.tickSpacing),this.min=0,l=0,E=d/(this.numberTicks-1),v=Math.pow(10,Math.abs(Math.floor(Math.log(E)/Math.LN10))),E/v==parseInt(E/v,10)&&(E+=v),this.tickInterval=Math.ceil(E/v)*v,this.max=this.tickInterval*(this.numberTicks-1);else if(H){this.numberTicks=2+Math.ceil((k-(this.tickSpacing-1))/this.tickSpacing);var P=Math.ceil(Math.abs(c)/w*(this.numberTicks-1)),Q=this.numberTicks-1-P;E=Math.max(Math.abs(c/P),Math.abs(d/Q)),v=Math.pow(10,Math.abs(Math.floor(Math.log(E)/Math.LN10))),this.tickInterval=Math.ceil(E/v)*v,this.max=this.tickInterval*Q,this.min=-this.tickInterval*P}else null==this.numberTicks&&(this.tickInterval?this.numberTicks=3+Math.ceil(w/this.tickInterval):this.numberTicks=2+Math.ceil((k-(this.tickSpacing-1))/this.tickSpacing)),null==this.tickInterval?(E=w/(this.numberTicks-1),v=E<1?Math.pow(10,Math.abs(Math.floor(Math.log(E)/Math.LN10))):1,this.tickInterval=Math.ceil(E*v*this.pad)/v):v=1/this.tickInterval,D=this.tickInterval*(this.numberTicks-1),F=(D-w)/2,null==this.min&&(this.min=Math.floor(v*(c-F))/v),null==this.max&&(this.max=this.min+D);var R,S=a.jqplot.getSignificantFigures(this.tickInterval);if(S.digitsLeft>=S.significantDigits)R="%d";else{var v=Math.max(0,5-S.digitsLeft);v=Math.min(v,S.digitsRight),R="%."+v+"f"}this._autoFormatString=R}else{t=null!=this.min?this.min:c-w*(this.padMin-1),u=null!=this.max?this.max:d+w*(this.padMax-1),w=u-t,null==this.numberTicks&&(null!=this.tickInterval?this.numberTicks=Math.ceil((u-t)/this.tickInterval)+1:k>100?this.numberTicks=parseInt(3+(k-100)/75,10):this.numberTicks=2),null==this.tickInterval&&(this.tickInterval=w/(this.numberTicks-1)),null==this.max&&(u=t+this.tickInterval*(this.numberTicks-1)),null==this.min&&(t=u-this.tickInterval*(this.numberTicks-1));var R,S=a.jqplot.getSignificantFigures(this.tickInterval);if(S.digitsLeft>=S.significantDigits)R="%d";else{var v=Math.max(0,5-S.digitsLeft);v=Math.min(v,S.digitsRight),R="%."+v+"f"}this._autoFormatString=R,this.min=t,this.max=u}if(this.renderer.constructor==a.jqplot.LinearAxisRenderer&&""==this._autoFormatString){w=this.max-this.min;var T=new this.tickRenderer(this.tickOptions),U=T.formatString||a.jqplot.config.defaultTickFormatString,U=U.match(a.jqplot.sprintf.regex)[0],V=0;if(U){if(U.search(/[fFeEgGpP]/)>-1){var W=U.match(/\%\.(\d{0,})?[eEfFgGpP]/);V=W?parseInt(W[1],10):6}else U.search(/[di]/)>-1&&(V=0);var X=Math.pow(10,-V);if(this.tickInterval<X&&null==n&&null==o)if(this.tickInterval=X,null==m&&null==l){this.min=Math.floor(this._dataBounds.min/X)*X,this.min==this._dataBounds.min&&(this.min=this._dataBounds.min-this.tickInterval),this.max=Math.ceil(this._dataBounds.max/X)*X,this.max==this._dataBounds.max&&(this.max=this._dataBounds.max+this.tickInterval);var Y=(this.max-this.min)/this.tickInterval;Y=Y.toFixed(11),Y=Math.ceil(Y),this.numberTicks=Y+1}else if(null==m){var Y=(this._dataBounds.max-this.min)/this.tickInterval;Y=Y.toFixed(11),this.numberTicks=Math.ceil(Y)+2,this.max=this.min+this.tickInterval*(this.numberTicks-1)}else if(null==l){var Y=(this.max-this._dataBounds.min)/this.tickInterval;Y=Y.toFixed(11),this.numberTicks=Math.ceil(Y)+2,this.min=this.max-this.tickInterval*(this.numberTicks-1)}else this.numberTicks=Math.ceil((m-l)/this.tickInterval)+1,this.min=Math.floor(l*Math.pow(10,V))/Math.pow(10,V),this.max=Math.ceil(m*Math.pow(10,V))/Math.pow(10,V),this.numberTicks=Math.ceil((this.max-this.min)/this.tickInterval)+1}}}this._overrideFormatString&&""!=this._autoFormatString&&(this.tickOptions=this.tickOptions||{},this.tickOptions.formatString=this._autoFormatString);for(var r,Z,f=0;f<this.numberTicks;f++){if(e=this.min+f*this.tickInterval,r=new this.tickRenderer(this.tickOptions),r.setTick(e,this.name),this._ticks.push(r),f<this.numberTicks-1)for(var N=0;N<this.minorTicks;N++)e+=this.tickInterval/(this.minorTicks+1),Z=a.extend(!0,{},this.tickOptions,{name:this.name,value:e,label:"",isMinorTick:!0}),r=new this.tickRenderer(Z),this._ticks.push(r);r=null}}this.tickInset&&(this.min=this.min-this.tickInset*this.tickInterval,this.max=this.max+this.tickInset*this.tickInterval),g=null},a.jqplot.LinearAxisRenderer.prototype.resetTickValues=function(b){if(a.isArray(b)&&b.length==this._ticks.length){for(var c,d=0;d<b.length;d++)c=this._ticks[d],c.value=b[d],c.label=c.formatter(c.formatString,b[d]),c.label=c.prefix+c.label,c._elem.html(c.label);c=null,this.min=a.jqplot.arrayMin(b),this.max=a.jqplot.arrayMax(b),this.pack()}},a.jqplot.LinearAxisRenderer.prototype.pack=function(b,c){b=b||{},c=c||this._offsets;var d=this._ticks,e=this.max,f=this.min,g=c.max,h=c.min,i=null!=this._label&&this._label.show;for(var j in b)this._elem.css(j,b[j]);this._offsets=c;var k=g-h,l=e-f;if(this.breakPoints?(l=l-this.breakPoints[1]+this.breakPoints[0],this.p2u=function(a){return(a-h)*l/k+f},this.u2p=function(a){return a>this.breakPoints[0]&&a<this.breakPoints[1]&&(a=this.breakPoints[0]),a<=this.breakPoints[0]?(a-f)*k/l+h:(a-this.breakPoints[1]+this.breakPoints[0]-f)*k/l+h},"x"==this.name.charAt(0)?(this.series_u2p=function(a){return a>this.breakPoints[0]&&a<this.breakPoints[1]&&(a=this.breakPoints[0]),a<=this.breakPoints[0]?(a-f)*k/l:(a-this.breakPoints[1]+this.breakPoints[0]-f)*k/l},this.series_p2u=function(a){return a*l/k+f}):(this.series_u2p=function(a){return a>this.breakPoints[0]&&a<this.breakPoints[1]&&(a=this.breakPoints[0]),a>=this.breakPoints[1]?(a-e)*k/l:(a+this.breakPoints[1]-this.breakPoints[0]-e)*k/l},this.series_p2u=function(a){return a*l/k+e})):(this.p2u=function(a){return(a-h)*l/k+f},this.u2p=function(a){return(a-f)*k/l+h},"xaxis"==this.name||"x2axis"==this.name?(this.series_u2p=function(a){return(a-f)*k/l},this.series_p2u=function(a){return a*l/k+f}):(this.series_u2p=function(a){return(a-e)*k/l},this.series_p2u=function(a){return a*l/k+e})),this.show)if("xaxis"==this.name||"x2axis"==this.name){for(var m=0;m<d.length;m++){var n=d[m];if(n.show&&n.showLabel){var o;if(n.constructor==a.jqplot.CanvasAxisTickRenderer&&n.angle){var p="xaxis"==this.name?1:-1;switch(n.labelPosition){case"auto":o=p*n.angle<0?-n.getWidth()+n._textRenderer.height*Math.sin(-n._textRenderer.angle)/2:-n._textRenderer.height*Math.sin(n._textRenderer.angle)/2;break;case"end":o=-n.getWidth()+n._textRenderer.height*Math.sin(-n._textRenderer.angle)/2;break;case"start":o=-n._textRenderer.height*Math.sin(n._textRenderer.angle)/2;break;case"middle":o=-n.getWidth()/2+n._textRenderer.height*Math.sin(-n._textRenderer.angle)/2;break;default:o=-n.getWidth()/2+n._textRenderer.height*Math.sin(-n._textRenderer.angle)/2}}else o=-n.getWidth()/2;var q=this.u2p(n.value)+o+"px";n._elem.css("left",q),n.pack()}}if(i){var r=this._label._elem.outerWidth(!0);this._label._elem.css("left",h+k/2-r/2+"px"),"xaxis"==this.name?this._label._elem.css("bottom","0px"):this._label._elem.css("top","0px"),this._label.pack()}}else{for(var m=0;m<d.length;m++){var n=d[m];if(n.show&&n.showLabel){var o;if(n.constructor==a.jqplot.CanvasAxisTickRenderer&&n.angle){var p="yaxis"==this.name?1:-1;switch(n.labelPosition){case"auto":case"end":o=p*n.angle<0?-n._textRenderer.height*Math.cos(-n._textRenderer.angle)/2:-n.getHeight()+n._textRenderer.height*Math.cos(n._textRenderer.angle)/2;break;case"start":o=n.angle>0?-n._textRenderer.height*Math.cos(-n._textRenderer.angle)/2:-n.getHeight()+n._textRenderer.height*Math.cos(n._textRenderer.angle)/2;break;case"middle":o=-n.getHeight()/2;break;default:o=-n.getHeight()/2}}else o=-n.getHeight()/2;var q=this.u2p(n.value)+o+"px";n._elem.css("top",q),n.pack()}}if(i){var s=this._label._elem.outerHeight(!0);this._label._elem.css("top",g-k/2-s/2+"px"),"yaxis"==this.name?this._label._elem.css("left","0px"):this._label._elem.css("right","0px"),this._label.pack()}}d=null};a.jqplot.LinearTickGenerator=function(b,c,d,e,f,g){if(f=null!==f&&f,g=null!==g&&!f&&g,b===c&&(c=c?0:1),d=d||1,c<b){var h=c;c=b,b=h}var i=[],j=x(c-b,d),k=a.jqplot.getSignificantFigures;if(null==e)if(f||g){if(f){i[0]=b,i[2]=Math.ceil((c-b)/j+1),i[1]=b+(i[2]-1)*j;var l=k(b).digitsRight,m=k(j).digitsRight;l<m?i[3]=u(j):i[3]="%."+l+"f",i[4]=j}else if(g){i[1]=c,i[2]=Math.ceil((c-b)/j+1),i[0]=c-(i[2]-1)*j;var n=k(c).digitsRight,m=k(j).digitsRight;n<m?i[3]=u(j):i[3]="%."+n+"f",i[4]=j}}else i[0]=Math.floor(b/j)*j,i[1]=Math.ceil(c/j)*j,i[2]=Math.round((i[1]-i[0])/j+1),i[3]=u(j),i[4]=j;else{var o=[];if(o[0]=Math.floor(b/j)*j,o[1]=Math.ceil(c/j)*j,o[2]=Math.round((o[1]-o[0])/j+1),o[3]=u(j),o[4]=j,o[2]===e)i=o;else{var p=w(o[1]-o[0],e);i[0]=o[0],i[2]=e,i[4]=p,i[3]=u(p),i[1]=i[0]+(i[2]-1)*i[4]}}return i},a.jqplot.LinearTickGenerator.bestLinearInterval=x,a.jqplot.LinearTickGenerator.bestInterval=w,a.jqplot.LinearTickGenerator.bestLinearComponents=y,a.jqplot.LinearTickGenerator.bestConstrainedInterval=v,a.jqplot.MarkerRenderer=function(b){this.show=!0,this.style="filledCircle",this.lineWidth=2,this.size=9,this.color="#666666",this.shadow=!0,this.shadowAngle=45,this.shadowOffset=1,this.shadowDepth=3,this.shadowAlpha="0.07",this.shadowRenderer=new a.jqplot.ShadowRenderer,this.shapeRenderer=new a.jqplot.ShapeRenderer,a.extend(!0,this,b)},a.jqplot.MarkerRenderer.prototype.init=function(b){a.extend(!0,this,b)},a.jqplot.MarkerRenderer.prototype.drawDiamond=function(b,c,d,e,f){var g;g=null==f||a.isEmptyObject(f)?this:a.extend(!0,{},this,f);var h=1.2,i=this.size/2/h,j=this.size/2*h,k=[[b-i,c],[b,c+j],[b+i,c],[b,c-j]];g.shadow&&this.shadowRenderer.draw(d,k,z(g)),this.shapeRenderer.draw(d,k,A(g))},a.jqplot.MarkerRenderer.prototype.drawPlus=function(b,c,d,e,f){var g=a.extend(!0,{},this,f,{closePath:!1}),h=1,i=g.size/2*h,j=g.size/2*h,k=[[b,c-j],[b,c+j]],l=[[b+i,c],[b-i,c]];g.shadow&&(this.shadowRenderer.draw(d,k,z(g)),this.shadowRenderer.draw(d,l,z(g))),this.shapeRenderer.draw(d,k,g),this.shapeRenderer.draw(d,l,g)},a.jqplot.MarkerRenderer.prototype.drawX=function(b,c,d,e,f){var g=a.extend(!0,{},this,f,{closePath:!1}),h=1,i=g.size/2*h,j=g.size/2*h,k=[[b-i,c-j],[b+i,c+j]],l=[[b-i,c+j],[b+i,c-j]];g.shadow&&(this.shadowRenderer.draw(d,k,z(g)),this.shadowRenderer.draw(d,l,z(g))),this.shapeRenderer.draw(d,k,A(g)),this.shapeRenderer.draw(d,l,A(g))},a.jqplot.MarkerRenderer.prototype.drawDash=function(b,c,d,e,f){var g;g=null==f||a.isEmptyObject(f)?this:a.extend(!0,{},this,f);var h=1,i=this.size/2*h,j=(this.size/2*h,[[b-i,c],[b+i,c]]);g.shadow&&this.shadowRenderer.draw(d,j),this.shapeRenderer.draw(d,j,A(g))},a.jqplot.MarkerRenderer.prototype.drawLine=function(b,c,d,e,f){var g;g=null==f||a.isEmptyObject(f)?this:a.extend(!0,{},this,f);var h=[b,c];g.shadow&&this.shadowRenderer.draw(d,h,z(g)),this.shapeRenderer.draw(d,h,A(g))},a.jqplot.MarkerRenderer.prototype.drawSquare=function(b,c,d,e,f){var g;g=null==f||a.isEmptyObject(f)?this:a.extend(!0,{},this,f);var h=1,i=this.size/2/h,j=this.size/2*h,k=[[b-i,c-j],[b-i,c+j],[b+i,c+j],[b+i,c-j]];g.shadow&&this.shadowRenderer.draw(d,k,z(g)),this.shapeRenderer.draw(d,k,A(g))},a.jqplot.MarkerRenderer.prototype.drawCircle=function(b,c,d,e,f){var g;g=null==f||a.isEmptyObject(f)?this:a.extend(!0,{},this,f);var h=this.size/2,i=2*Math.PI,j=[b,c,h,0,i,!0];g.shadow&&this.shadowRenderer.draw(d,j,z(g)),this.shapeRenderer.draw(d,j,A(g))},a.jqplot.MarkerRenderer.prototype.draw=function(a,b,c,d){if(d=d||{},null==d.show||0!=d.show){d.color&&!d.fillStyle&&(d.fillStyle=d.color),d.color&&!d.strokeStyle&&(d.strokeStyle=d.color);var e=d.style||this.style;switch(e){case"diamond":this.drawDiamond(a,b,c,!1,d);break;case"filledDiamond":this.drawDiamond(a,b,c,!0,d);break;case"circle":this.drawCircle(a,b,c,!1,d);break;case"filledCircle":this.drawCircle(a,b,c,!0,d);break;case"square":this.drawSquare(a,b,c,!1,d);break;case"filledSquare":this.drawSquare(a,b,c,!0,d);break;case"x":this.drawX(a,b,c,!0,d);break;case"plus":this.drawPlus(a,b,c,!0,d);break;case"dash":this.drawDash(a,b,c,!0,d);break;case"line":this.drawLine(a,b,c,!1,d);break;default:this.drawDiamond(a,b,c,!1,d)}}},a.jqplot.ShadowRenderer=function(b){this.angle=45,this.offset=1,this.alpha=.07,this.lineWidth=1.5,this.lineJoin="miter",this.lineCap="round",this.closePath=!1,this.fill=!1,this.depth=3,this.strokeStyle="rgba(0,0,0,0.1)",this.isarc=!1,a.extend(!0,this,b)},a.jqplot.ShadowRenderer.prototype.init=function(b){a.extend(!0,this,b)},a.jqplot.ShadowRenderer.prototype.draw=function(b,c,d){b.save();var e=null!=d?d:{},f=null!=e.fill?e.fill:this.fill,g=null!=e.fillRect?e.fillRect:this.fillRect,h=null!=e.closePath?e.closePath:this.closePath,i=null!=e.offset?e.offset:this.offset,j=null!=e.alpha?e.alpha:this.alpha,k=null!=e.depth?e.depth:this.depth,l=null!=e.isarc?e.isarc:this.isarc,m=null!=e.linePattern?e.linePattern:this.linePattern;b.lineWidth=null!=e.lineWidth?e.lineWidth:this.lineWidth,b.lineJoin=null!=e.lineJoin?e.lineJoin:this.lineJoin,b.lineCap=null!=e.lineCap?e.lineCap:this.lineCap,b.strokeStyle=e.strokeStyle||this.strokeStyle||"rgba(0,0,0,"+j+")",b.fillStyle=e.fillStyle||this.fillStyle||"rgba(0,0,0,"+j+")";for(var n=0;n<k;n++){var o=a.jqplot.LinePattern(b,m);if(b.translate(Math.cos(this.angle*Math.PI/180)*i,Math.sin(this.angle*Math.PI/180)*i),o.beginPath(),l)b.arc(c[0],c[1],c[2],c[3],c[4],!0);else if(g)g&&b.fillRect(c[0],c[1],c[2],c[3]);else if(c&&c.length)for(var p=!0,q=0;q<c.length;q++)null!=c[q][0]&&null!=c[q][1]?p?(o.moveTo(c[q][0],c[q][1]),p=!1):o.lineTo(c[q][0],c[q][1]):p=!0;h&&o.closePath(),f?b.fill():b.stroke()}b.restore()},a.jqplot.ShapeRenderer=function(b){this.lineWidth=1.5,this.linePattern="solid",this.lineJoin="miter",this.lineCap="round",this.closePath=!1,this.fill=!1,this.isarc=!1,this.fillRect=!1,this.strokeRect=!1,this.clearRect=!1,this.strokeStyle="#999999",this.fillStyle="#999999",a.extend(!0,this,b)},a.jqplot.ShapeRenderer.prototype.init=function(b){a.extend(!0,this,b)},a.jqplot.ShapeRenderer.prototype.draw=function(b,c,d){b.save();var e=null!=d?d:{},f=null!=e.fill?e.fill:this.fill,g=null!=e.closePath?e.closePath:this.closePath,h=null!=e.fillRect?e.fillRect:this.fillRect,i=null!=e.strokeRect?e.strokeRect:this.strokeRect,j=null!=e.clearRect?e.clearRect:this.clearRect,k=null!=e.isarc?e.isarc:this.isarc,l=null!=e.linePattern?e.linePattern:this.linePattern,m=a.jqplot.LinePattern(b,l);if(b.lineWidth=e.lineWidth||this.lineWidth,b.lineJoin=e.lineJoin||this.lineJoin,b.lineCap=e.lineCap||this.lineCap,b.strokeStyle=e.strokeStyle||e.color||this.strokeStyle,b.fillStyle=e.fillStyle||this.fillStyle,b.beginPath(),k)return b.arc(c[0],c[1],c[2],c[3],c[4],!0),g&&b.closePath(),f?b.fill():b.stroke(),void b.restore();if(j)return b.clearRect(c[0],c[1],c[2],c[3]),void b.restore();if(h||i){if(h&&b.fillRect(c[0],c[1],c[2],c[3]),i)return b.strokeRect(c[0],c[1],c[2],c[3]),void b.restore()}else if(c&&c.length){for(var n=!0,o=0;o<c.length;o++)null!=c[o][0]&&null!=c[o][1]?n?(m.moveTo(c[o][0],c[o][1]),n=!1):m.lineTo(c[o][0],c[o][1]):n=!0;g&&m.closePath(),f?b.fill():b.stroke()}b.restore()},a.jqplot.TableLegendRenderer=function(){},a.jqplot.TableLegendRenderer.prototype.init=function(b){a.extend(!0,this,b)},a.jqplot.TableLegendRenderer.prototype.addrow=function(b,c,d,e){var f,g,h,i,j,k=d?this.rowSpacing+"px":"0px";h=document.createElement("tr"),f=a(h),f.addClass("jqplot-table-legend"),h=null,e?f.prependTo(this._elem):f.appendTo(this._elem),this.showSwatches&&(g=a(document.createElement("td")),g.addClass("jqplot-table-legend jqplot-table-legend-swatch"),g.css({textAlign:"center",paddingTop:k}),i=a(document.createElement("div")),i.addClass("jqplot-table-legend-swatch-outline"),j=a(document.createElement("div")),j.addClass("jqplot-table-legend-swatch"),j.css({backgroundColor:c,borderColor:c}),f.append(g.append(i.append(j)))),this.showLabels&&(g=a(document.createElement("td")),g.addClass("jqplot-table-legend jqplot-table-legend-label"),g.css("paddingTop",k),f.append(g),this.escapeHtml?g.text(b):g.html(b)),g=null,i=null,j=null,f=null,h=null},a.jqplot.TableLegendRenderer.prototype.draw=function(){if(this._elem&&(this._elem.emptyForce(),this._elem=null),this.show){var b=this._series,c=document.createElement("table");this._elem=a(c),this._elem.addClass("jqplot-table-legend");var d={position:"absolute"};this.background&&(d.background=this.background),this.border&&(d.border=this.border),this.fontSize&&(d.fontSize=this.fontSize),this.fontFamily&&(d.fontFamily=this.fontFamily),this.textColor&&(d.textColor=this.textColor),null!=this.marginTop&&(d.marginTop=this.marginTop),null!=this.marginBottom&&(d.marginBottom=this.marginBottom),null!=this.marginLeft&&(d.marginLeft=this.marginLeft),null!=this.marginRight&&(d.marginRight=this.marginRight);for(var e,f=!1,g=!1,h=0;h<b.length;h++)if(e=b[h],(e._stack||e.renderer.constructor==a.jqplot.BezierCurveRenderer)&&(g=!0),e.show&&e.showLabel){var i=this.labels[h]||e.label.toString();if(i){var j=e.color;g&&h<b.length-1?f=!0:g&&h==b.length-1&&(f=!1),this.renderer.addrow.call(this,i,j,f,g),f=!0}for(var k=0;k<a.jqplot.addLegendRowHooks.length;k++){var l=a.jqplot.addLegendRowHooks[k].call(this,e);l&&(this.renderer.addrow.call(this,l.label,l.color,f),f=!0)}i=null}}return this._elem},a.jqplot.TableLegendRenderer.prototype.pack=function(a){if(this.show)if("insideGrid"==this.placement)switch(this.location){case"nw":var b=a.left,c=a.top;this._elem.css("left",b),this._elem.css("top",c);break;case"n":var b=(a.left+(this._plotDimensions.width-a.right))/2-this.getWidth()/2,c=a.top;this._elem.css("left",b),this._elem.css("top",c);break;case"ne":var b=a.right,c=a.top;this._elem.css({right:b,top:c});break;case"e":var b=a.right,c=(a.top+(this._plotDimensions.height-a.bottom))/2-this.getHeight()/2;this._elem.css({right:b,top:c});break;case"se":var b=a.right,c=a.bottom;this._elem.css({right:b,bottom:c});break;case"s":var b=(a.left+(this._plotDimensions.width-a.right))/2-this.getWidth()/2,c=a.bottom;this._elem.css({left:b,bottom:c});break;case"sw":var b=a.left,c=a.bottom;this._elem.css({left:b,bottom:c});break;case"w":var b=a.left,c=(a.top+(this._plotDimensions.height-a.bottom))/2-this.getHeight()/2;this._elem.css({left:b,top:c});break;default:var b=a.right,c=a.bottom;this._elem.css({right:b,bottom:c})}else if("outside"==this.placement)switch(this.location){case"nw":var b=this._plotDimensions.width-a.left,c=a.top;this._elem.css("right",b),this._elem.css("top",c);break;case"n":var b=(a.left+(this._plotDimensions.width-a.right))/2-this.getWidth()/2,c=this._plotDimensions.height-a.top;this._elem.css("left",b),this._elem.css("bottom",c);break;case"ne":var b=this._plotDimensions.width-a.right,c=a.top;this._elem.css({left:b,top:c});break;case"e":var b=this._plotDimensions.width-a.right,c=(a.top+(this._plotDimensions.height-a.bottom))/2-this.getHeight()/2;this._elem.css({left:b,top:c});break;case"se":var b=this._plotDimensions.width-a.right,c=a.bottom;this._elem.css({left:b,bottom:c});break;case"s":var b=(a.left+(this._plotDimensions.width-a.right))/2-this.getWidth()/2,c=this._plotDimensions.height-a.bottom;this._elem.css({left:b,top:c});break;case"sw":var b=this._plotDimensions.width-a.left,c=a.bottom;this._elem.css({right:b,bottom:c});break;case"w":var b=this._plotDimensions.width-a.left,c=(a.top+(this._plotDimensions.height-a.bottom))/2-this.getHeight()/2;this._elem.css({right:b,top:c});break;default:var b=a.right,c=a.bottom;this._elem.css({right:b,bottom:c})}else switch(this.location){case"nw":this._elem.css({left:0,top:a.top});break;case"n":var b=(a.left+(this._plotDimensions.width-a.right))/2-this.getWidth()/2;this._elem.css({left:b,top:a.top});break;case"ne":this._elem.css({right:0,top:a.top});break;case"e":var c=(a.top+(this._plotDimensions.height-a.bottom))/2-this.getHeight()/2;this._elem.css({right:a.right,top:c});break;case"se":this._elem.css({right:a.right,bottom:a.bottom});break;case"s":var b=(a.left+(this._plotDimensions.width-a.right))/2-this.getWidth()/2;this._elem.css({left:b,bottom:a.bottom});break;case"sw":this._elem.css({left:a.left,bottom:a.bottom});break;case"w":var c=(a.top+(this._plotDimensions.height-a.bottom))/2-this.getHeight()/2;this._elem.css({left:a.left,top:c});break;default:this._elem.css({right:a.right,bottom:a.bottom})}},a.jqplot.ThemeEngine=function(){this.themes={},this.activeTheme=null},a.jqplot.ThemeEngine.prototype.init=function(){var b,c,d,e=new a.jqplot.Theme({_name:"Default"});for(b in e.target)"textColor"==b?e.target[b]=this.target.css("color"):e.target[b]=this.target.css(b);if(this.title.show&&this.title._elem)for(b in e.title)"textColor"==b?e.title[b]=this.title._elem.css("color"):e.title[b]=this.title._elem.css(b);for(b in e.grid)e.grid[b]=this.grid[b];if(null==e.grid.backgroundColor&&null!=this.grid.background&&(e.grid.backgroundColor=this.grid.background),this.legend.show&&this.legend._elem)for(b in e.legend)"textColor"==b?e.legend[b]=this.legend._elem.css("color"):e.legend[b]=this.legend._elem.css(b);var f;for(c=0;c<this.series.length;c++){f=this.series[c],f.renderer.constructor==a.jqplot.LineRenderer?e.series.push(new N):f.renderer.constructor==a.jqplot.BarRenderer?e.series.push(new P):f.renderer.constructor==a.jqplot.PieRenderer?e.series.push(new Q):f.renderer.constructor==a.jqplot.DonutRenderer?e.series.push(new R):f.renderer.constructor==a.jqplot.FunnelRenderer?e.series.push(new S):f.renderer.constructor==a.jqplot.MeterGaugeRenderer?e.series.push(new T):e.series.push({});for(b in e.series[c])e.series[c][b]=f[b]}var g,h;for(b in this.axes){if(h=this.axes[b],g=e.axes[b]=new K,g.borderColor=h.borderColor,g.borderWidth=h.borderWidth,h._ticks&&h._ticks[0])for(d in g.ticks)h._ticks[0].hasOwnProperty(d)?g.ticks[d]=h._ticks[0][d]:h._ticks[0]._elem&&(g.ticks[d]=h._ticks[0]._elem.css(d));if(h._label&&h._label.show)for(d in g.label)h._label[d]?g.label[d]=h._label[d]:h._label._elem&&("textColor"==d?g.label[d]=h._label._elem.css("color"):g.label[d]=h._label._elem.css(d))}this.themeEngine._add(e),this.themeEngine.activeTheme=this.themeEngine.themes[e._name]},a.jqplot.ThemeEngine.prototype.get=function(a){return a?this.themes[a]:this.activeTheme},a.jqplot.ThemeEngine.prototype.getThemeNames=function(){var a=[];for(var b in this.themes)a.push(b);return a.sort(B)},a.jqplot.ThemeEngine.prototype.getThemes=function(){var a=[],b=[];for(var c in this.themes)a.push(c);a.sort(B);for(var d=0;d<a.length;d++)b.push(this.themes[a[d]]);return b},a.jqplot.ThemeEngine.prototype.activate=function(b,c){var d=!1;if(!c&&this.activeTheme&&this.activeTheme._name&&(c=this.activeTheme._name),!this.themes.hasOwnProperty(c))throw new Error("No theme of that name");var e=this.themes[c];this.activeTheme=e;var f,g=["xaxis","x2axis","yaxis","y2axis"];for(p=0;p<g.length;p++){var h=g[p];null!=e.axesStyles.borderColor&&(b.axes[h].borderColor=e.axesStyles.borderColor),null!=e.axesStyles.borderWidth&&(b.axes[h].borderWidth=e.axesStyles.borderWidth)}for(var i in b.axes){var j=b.axes[i];if(j.show){var k=e.axes[i]||{},l=e.axesStyles,m=a.jqplot.extend(!0,{},k,l);if(f=null!=e.axesStyles.borderColor?e.axesStyles.borderColor:m.borderColor,null!=m.borderColor&&(j.borderColor=m.borderColor,d=!0),f=null!=e.axesStyles.borderWidth?e.axesStyles.borderWidth:m.borderWidth,null!=m.borderWidth&&(j.borderWidth=m.borderWidth,d=!0),j._ticks&&j._ticks[0])for(var n in m.ticks)f=m.ticks[n],null!=f&&(j.tickOptions[n]=f,j._ticks=[],d=!0);if(j._label&&j._label.show)for(var n in m.label)f=m.label[n],null!=f&&(j.labelOptions[n]=f,d=!0)}}for(var o in e.grid)null!=e.grid[o]&&(b.grid[o]=e.grid[o]);if(d||b.grid.draw(),b.legend.show)for(o in e.legend)null!=e.legend[o]&&(b.legend[o]=e.legend[o]);if(b.title.show)for(o in e.title)null!=e.title[o]&&(b.title[o]=e.title[o]);var p;for(p=0;p<e.series.length;p++){var q={};for(o in e.series[p])f=null!=e.seriesStyles[o]?e.seriesStyles[o]:e.series[p][o],null!=f&&(q[o]=f,"color"==o?(b.series[p].renderer.shapeRenderer.fillStyle=f,b.series[p].renderer.shapeRenderer.strokeStyle=f,b.series[p][o]=f):"lineWidth"==o||"linePattern"==o?(b.series[p].renderer.shapeRenderer[o]=f,b.series[p][o]=f):"markerOptions"==o?(D(b.series[p].markerOptions,f),D(b.series[p].markerRenderer,f)):b.series[p][o]=f,d=!0)}d&&(b.target.empty(),b.draw());for(o in e.target)null!=e.target[o]&&b.target.css(o,e.target[o])},a.jqplot.ThemeEngine.prototype._add=function(a,b){if(b&&(a._name=b),a._name||(a._name=Date.parse(new Date)),this.themes.hasOwnProperty(a._name))throw new Error("jqplot.ThemeEngine Error: Theme already in use");this.themes[a._name]=a},a.jqplot.ThemeEngine.prototype.remove=function(a){return"Default"!=a&&delete this.themes[a]},a.jqplot.ThemeEngine.prototype.newTheme=function(b,c){"object"==typeof b&&(c=c||b,b=null),b=c&&c._name?c._name:b||Date.parse(new Date);var d=this.copy(this.themes.Default._name,b);return a.jqplot.extend(d,c),d},a.jqplot.clone=C,a.jqplot.merge=D,a.jqplot.extend=function(){var b,c=arguments[0]||{},d=1,e=arguments.length,f=!1;for("boolean"==typeof c&&(f=c,c=arguments[1]||{},d=2),"object"!=typeof c&&"[object Function]"===!toString.call(c)&&(c={});d<e;d++)if(null!=(b=arguments[d]))for(var g in b){var h=c[g],i=b[g];c!==i&&(f&&i&&"object"==typeof i&&!i.nodeType?c[g]=a.jqplot.extend(f,h||(null!=i.length?[]:{}),i):i!==H&&(c[g]=i))}return c},a.jqplot.ThemeEngine.prototype.rename=function(a,b){if("Default"==a||"Default"==b)throw new Error("jqplot.ThemeEngine Error: Cannot rename from/to Default");if(this.themes.hasOwnProperty(b))throw new Error("jqplot.ThemeEngine Error: New name already in use.");if(this.themes.hasOwnProperty(a)){var c=this.copy(a,b);return this.remove(a),c}throw new Error("jqplot.ThemeEngine Error: Old name or new name invalid")},a.jqplot.ThemeEngine.prototype.copy=function(b,c,d){if("Default"==c)throw new Error("jqplot.ThemeEngine Error: Cannot copy over Default theme");if(!this.themes.hasOwnProperty(b)){var e="jqplot.ThemeEngine Error: Source name invalid";throw new Error(e)}if(this.themes.hasOwnProperty(c)){var e="jqplot.ThemeEngine Error: Target name invalid";throw new Error(e)}var f=C(this.themes[b]);return f._name=c,a.jqplot.extend(!0,f,d),this._add(f),f},a.jqplot.Theme=function(b,c){"object"==typeof b&&(c=c||b,b=null),b=b||Date.parse(new Date),this._name=b,this.target={backgroundColor:null},this.legend={textColor:null,fontFamily:null,fontSize:null,border:null,background:null},this.title={textColor:null,fontFamily:null,fontSize:null,textAlign:null},this.seriesStyles={},this.series=[],this.grid={drawGridlines:null,gridLineColor:null,gridLineWidth:null,backgroundColor:null,borderColor:null,borderWidth:null, +shadow:null},this.axesStyles={label:{},ticks:{}},this.axes={},"string"==typeof c?this._name=c:"object"==typeof c&&a.jqplot.extend(!0,this,c)};var K=function(){this.borderColor=null,this.borderWidth=null,this.ticks=new L,this.label=new M},L=function(){this.show=null,this.showGridline=null,this.showLabel=null,this.showMark=null,this.size=null,this.textColor=null,this.whiteSpace=null,this.fontSize=null,this.fontFamily=null},M=function(){this.textColor=null,this.whiteSpace=null,this.fontSize=null,this.fontFamily=null,this.fontWeight=null},N=function(){this.color=null,this.lineWidth=null,this.linePattern=null,this.shadow=null,this.fillColor=null,this.showMarker=null,this.markerOptions=new O},O=function(){this.show=null,this.style=null,this.lineWidth=null,this.size=null,this.color=null,this.shadow=null},P=function(){this.color=null,this.seriesColors=null,this.lineWidth=null,this.shadow=null,this.barPadding=null,this.barMargin=null,this.barWidth=null,this.highlightColors=null},Q=function(){this.seriesColors=null,this.padding=null,this.sliceMargin=null,this.fill=null,this.shadow=null,this.startAngle=null,this.lineWidth=null,this.highlightColors=null},R=function(){this.seriesColors=null,this.padding=null,this.sliceMargin=null,this.fill=null,this.shadow=null,this.startAngle=null,this.lineWidth=null,this.innerDiameter=null,this.thickness=null,this.ringMargin=null,this.highlightColors=null},S=function(){this.color=null,this.lineWidth=null,this.shadow=null,this.padding=null,this.sectionMargin=null,this.seriesColors=null,this.highlightColors=null},T=function(){this.padding=null,this.backgroundColor=null,this.ringColor=null,this.tickColor=null,this.ringWidth=null,this.intervalColors=null,this.intervalInnerRadius=null,this.intervalOuterRadius=null,this.hubRadius=null,this.needleThickness=null,this.needlePad=null};a.fn.jqplotChildText=function(){return a(this).contents().filter(function(){return 3==this.nodeType}).text()},a.fn.jqplotGetComputedFontStyle=function(){for(var a=window.getComputedStyle?window.getComputedStyle(this[0],""):this[0].currentStyle,b=a["font-style"]?["font-style","font-weight","font-size","font-family"]:["fontStyle","fontWeight","fontSize","fontFamily"],c=[],d=0;d<b.length;++d){var e=String(a[b[d]]);e&&"normal"!=e&&c.push(e)}return c.join(" ")},a.fn.jqplotToImageCanvas=function(b){function c(b){var c=parseInt(a(b).css("line-height"),10);return isNaN(c)&&(c=1.2*parseInt(a(b).css("font-size"),10)),c}function d(b,d,e,f,g,h){for(var i=c(b),j=a(b).innerWidth(),k=(a(b).innerHeight(),e.split(/\s+/)),l=k.length,m="",n=[],o=g,p=f,q=0;q<l;q++)m+=k[q],d.measureText(m).width>j&&m.length>k[q].length&&(n.push(q),m="",q--);if(0===n.length)"center"===a(b).css("textAlign")&&(p=f+(h-d.measureText(m).width)/2-s),d.fillText(e,p,g);else{m=k.slice(0,n[0]).join(" "),"center"===a(b).css("textAlign")&&(p=f+(h-d.measureText(m).width)/2-s),d.fillText(m,p,o),o+=i;for(var q=1,r=n.length;q<r;q++)m=k.slice(n[q-1],n[q]).join(" "),"center"===a(b).css("textAlign")&&(p=f+(h-d.measureText(m).width)/2-s),d.fillText(m,p,o),o+=i;m=k.slice(n[q-1],k.length).join(" "),"center"===a(b).css("textAlign")&&(p=f+(h-d.measureText(m).width)/2-s),d.fillText(m,p,o)}}function e(b,c,f){var g=b.tagName.toLowerCase(),h=a(b).position(),i=window.getComputedStyle?window.getComputedStyle(b,""):b.currentStyle,j=c+h.left+parseInt(i.marginLeft,10)+parseInt(i.borderLeftWidth,10)+parseInt(i.paddingLeft,10),k=f+h.top+parseInt(i.marginTop,10)+parseInt(i.borderTopWidth,10)+parseInt(i.paddingTop,10),l=m.width;if("div"!=g&&"span"!=g||a(b).hasClass("jqplot-highlighter-tooltip")||a(b).hasClass("jqplot-canvasOverlay-tooltip"))if("table"===g&&a(b).hasClass("jqplot-table-legend")){w.strokeStyle=a(b).css("border-top-color"),w.fillStyle=a(b).css("background-color"),w.fillRect(j,k,a(b).innerWidth(),a(b).innerHeight()),parseInt(a(b).css("border-top-width"),10)>0&&w.strokeRect(j,k,a(b).innerWidth(),a(b).innerHeight()),a(b).find("div.jqplot-table-legend-swatch-outline").each(function(){var b=a(this);w.strokeStyle=b.css("border-top-color");var c=j+b.position().left,d=k+b.position().top;w.strokeRect(c,d,b.innerWidth(),b.innerHeight()),c+=parseInt(b.css("padding-left"),10),d+=parseInt(b.css("padding-top"),10);var e=b.innerHeight()-2*parseInt(b.css("padding-top"),10),f=b.innerWidth()-2*parseInt(b.css("padding-left"),10),g=b.children("div.jqplot-table-legend-swatch");w.fillStyle=g.css("background-color"),w.fillRect(c,d,f,e)}),a(b).find("td.jqplot-table-legend-label").each(function(){var b=a(this),c=j+b.position().left,e=k+b.position().top+parseInt(b.css("padding-top"),10);w.font=b.jqplotGetComputedFontStyle(),w.fillStyle=b.css("color"),d(b,w,b.text(),c,e,l)})}else"canvas"==g&&w.drawImage(b,j,k);else{a(b).children().each(function(){e(this,j,k)});var n=a(b).jqplotChildText();n&&(w.font=a(b).jqplotGetComputedFontStyle(),w.fillStyle=a(b).css("color"),d(b,w,n,j,k,l))}}b=b||{};var f=null==b.x_offset?0:b.x_offset,g=null==b.y_offset?0:b.y_offset,h=null==b.backgroundColor?"rgb(255,255,255)":b.backgroundColor;if(0==a(this).width()||0==a(this).height())return null;if(a.jqplot.use_excanvas)return null;for(var i,j,k,l,m=document.createElement("canvas"),n=a(this).outerHeight(!0),o=a(this).outerWidth(!0),p=a(this).offset(),q=p.left,r=p.top,s=0,t=0,u=["jqplot-table-legend","jqplot-xaxis-tick","jqplot-x2axis-tick","jqplot-yaxis-tick","jqplot-y2axis-tick","jqplot-y3axis-tick","jqplot-y4axis-tick","jqplot-y5axis-tick","jqplot-y6axis-tick","jqplot-y7axis-tick","jqplot-y8axis-tick","jqplot-y9axis-tick","jqplot-xaxis-label","jqplot-x2axis-label","jqplot-yaxis-label","jqplot-y2axis-label","jqplot-y3axis-label","jqplot-y4axis-label","jqplot-y5axis-label","jqplot-y6axis-label","jqplot-y7axis-label","jqplot-y8axis-label","jqplot-y9axis-label"],v=0;v<u.length;v++)a(this).find("."+u[v]).each(function(){i=a(this).offset().top-r,j=a(this).offset().left-q,l=j+a(this).outerWidth(!0)+s,k=i+a(this).outerHeight(!0)+t,j<-s&&(o=o-s-j,s=-j),i<-t&&(n=n-t-i,t=-i),l>o&&(o=l),k>n&&(n=k)});m.width=o+Number(f),m.height=n+Number(g);var w=m.getContext("2d");return w.save(),w.fillStyle=h,w.fillRect(0,0,m.width,m.height),w.restore(),w.translate(s,t),w.textAlign="left",w.textBaseline="top",a(this).children().each(function(){e(this,f,g)}),m},a.fn.jqplotToImageStr=function(b){var c=a(this).jqplotToImageCanvas(b);return c?c.toDataURL("image/png"):null},a.fn.jqplotToImageElem=function(b){var c=document.createElement("img"),d=a(this).jqplotToImageStr(b);return c.src=d,c},a.fn.jqplotToImageElemStr=function(b){var c="<img src="+a(this).jqplotToImageStr(b)+" />";return c},a.fn.jqplotSaveImage=function(){var b=a(this).jqplotToImageStr({});b&&(window.location.href=b.replace("image/png","image/octet-stream"))},a.fn.jqplotViewImage=function(){var b=a(this).jqplotToImageElemStr({});a(this).jqplotToImageStr({});if(b){var c=window.open("");c.document.open("image/png"),c.document.write(b),c.document.close(),c=null}};var U=function(){switch(this.syntax=U.config.syntax,this._type="jsDate",this.proxy=new Date,this.options={},this.locale=U.regional.getLocale(),this.formatString="",this.defaultCentury=U.config.defaultCentury,arguments.length){case 0:break;case 1:if("[object Object]"==F(arguments[0])&&"jsDate"!=arguments[0]._type){var a=this.options=arguments[0];this.syntax=a.syntax||this.syntax,this.defaultCentury=a.defaultCentury||this.defaultCentury,this.proxy=U.createDate(a.date)}else this.proxy=U.createDate(arguments[0]);break;default:for(var b=[],c=0;c<arguments.length;c++)b.push(arguments[c]);this.proxy=new Date,this.proxy.setFullYear.apply(this.proxy,b.slice(0,3)),b.slice(3).length&&this.proxy.setHours.apply(this.proxy,b.slice(3))}};U.config={defaultLocale:"en",syntax:"perl",defaultCentury:1900},U.prototype.add=function(a,b){var c=X[b]||X.day;if("number"==typeof c){var d=this.proxy.getTimezoneOffset();this.proxy.setTime(this.proxy.getTime()+c*a),OffsetDiff=d-this.proxy.getTimezoneOffset(),this.proxy.setTime(this.proxy.getTime()-60*OffsetDiff*1e3)}else c.add(this,a);return this},U.prototype.clone=function(){return new U(this.proxy.getTime())},U.prototype.getUtcOffset=function(){return 6e4*this.proxy.getTimezoneOffset()},U.prototype.diff=function(a,b,c){if(a=new U(a),null===a)return null;var d=X[b]||X.day;if("number"==typeof d)var e=60*(a.proxy.getTimezoneOffset()-this.proxy.getTimezoneOffset())*1e3,f=(this.proxy.getTime()-a.proxy.getTime()+e)/d;else var f=d.diff(this.proxy,a.proxy);return c?f:Math[f>0?"floor":"ceil"](f)},U.prototype.getAbbrDayName=function(){return U.regional[this.locale].dayNamesShort[this.proxy.getDay()]},U.prototype.getAbbrMonthName=function(){return U.regional[this.locale].monthNamesShort[this.proxy.getMonth()]},U.prototype.getAMPM=function(){return this.proxy.getHours()>=12?"PM":"AM"},U.prototype.getAmPm=function(){return this.proxy.getHours()>=12?"pm":"am"},U.prototype.getCentury=function(){return parseInt(this.proxy.getFullYear()/100,10)},U.prototype.getDate=function(){return this.proxy.getDate()},U.prototype.getDay=function(){return this.proxy.getDay()},U.prototype.getDayOfWeek=function(){var a=this.proxy.getDay();return 0===a?7:a},U.prototype.getDayOfYear=function(){var a=this.proxy,b=a-new Date(""+a.getFullYear()+"/1/1 GMT");return b+=6e4*a.getTimezoneOffset(),a=null,parseInt(b/6e4/60/24,10)+1},U.prototype.getDayName=function(){return U.regional[this.locale].dayNames[this.proxy.getDay()]},U.prototype.getFullWeekOfYear=function(){var a=this.proxy,b=this.getDayOfYear(),c=6-a.getDay(),d=parseInt((b+c)/7,10);return d},U.prototype.getFullYear=function(){return this.proxy.getFullYear()},U.prototype.getGmtOffset=function(){var a=this.proxy.getTimezoneOffset()/60,b=a<0?"+":"-";return a=Math.abs(a),b+W(Math.floor(a),2)+":"+W(a%1*60,2)},U.prototype.getHours=function(){return this.proxy.getHours()},U.prototype.getHours12=function(){var a=this.proxy.getHours();return a>12?a-12:0==a?12:a},U.prototype.getIsoWeek=function(){var a=this.proxy,b=this.getWeekOfYear(),c=new Date(""+a.getFullYear()+"/1/1").getDay(),d=b+(c>4||c<=1?0:1);return 53==d&&new Date(""+a.getFullYear()+"/12/31").getDay()<4?d=1:0===d&&(a=new U(new Date(""+(a.getFullYear()-1)+"/12/31")),d=a.getIsoWeek()),a=null,d},U.prototype.getMilliseconds=function(){return this.proxy.getMilliseconds()},U.prototype.getMinutes=function(){return this.proxy.getMinutes()},U.prototype.getMonth=function(){return this.proxy.getMonth()},U.prototype.getMonthName=function(){return U.regional[this.locale].monthNames[this.proxy.getMonth()]},U.prototype.getMonthNumber=function(){return this.proxy.getMonth()+1},U.prototype.getSeconds=function(){return this.proxy.getSeconds()},U.prototype.getShortYear=function(){return this.proxy.getYear()%100},U.prototype.getTime=function(){return this.proxy.getTime()},U.prototype.getTimezoneAbbr=function(){return this.proxy.toString().replace(/^.*\(([^)]+)\)$/,"$1")},U.prototype.getTimezoneName=function(){var a=/(?:\((.+)\)$| ([A-Z]{3}) )/.exec(this.toString());return a[1]||a[2]||"GMT"+this.getGmtOffset()},U.prototype.getTimezoneOffset=function(){return this.proxy.getTimezoneOffset()},U.prototype.getWeekOfYear=function(){var a=this.getDayOfYear(),b=7-this.getDayOfWeek(),c=parseInt((a+b)/7,10);return c},U.prototype.getUnix=function(){return Math.round(this.proxy.getTime()/1e3,0)},U.prototype.getYear=function(){return this.proxy.getYear()},U.prototype.next=function(a){return a=a||"day",this.clone().add(1,a)},U.prototype.set=function(){switch(arguments.length){case 0:this.proxy=new Date;break;case 1:if("[object Object]"==F(arguments[0])&&"jsDate"!=arguments[0]._type){var a=this.options=arguments[0];this.syntax=a.syntax||this.syntax,this.defaultCentury=a.defaultCentury||this.defaultCentury,this.proxy=U.createDate(a.date)}else this.proxy=U.createDate(arguments[0]);break;default:for(var b=[],c=0;c<arguments.length;c++)b.push(arguments[c]);this.proxy=new Date,this.proxy.setFullYear.apply(this.proxy,b.slice(0,3)),b.slice(3).length&&this.proxy.setHours.apply(this.proxy,b.slice(3))}return this},U.prototype.setDate=function(a){return this.proxy.setDate(a),this},U.prototype.setFullYear=function(){return this.proxy.setFullYear.apply(this.proxy,arguments),this},U.prototype.setHours=function(){return this.proxy.setHours.apply(this.proxy,arguments),this},U.prototype.setMilliseconds=function(a){return this.proxy.setMilliseconds(a),this},U.prototype.setMinutes=function(){return this.proxy.setMinutes.apply(this.proxy,arguments),this},U.prototype.setMonth=function(){return this.proxy.setMonth.apply(this.proxy,arguments),this},U.prototype.setSeconds=function(){return this.proxy.setSeconds.apply(this.proxy,arguments),this},U.prototype.setTime=function(a){return this.proxy.setTime(a),this},U.prototype.setYear=function(){return this.proxy.setYear.apply(this.proxy,arguments),this},U.prototype.strftime=function(a){return a=a||this.formatString||U.regional[this.locale].formatString,U.strftime(this,a,this.syntax)},U.prototype.toString=function(){return this.proxy.toString()},U.prototype.toYmdInt=function(){return 1e4*this.proxy.getFullYear()+100*this.getMonthNumber()+this.proxy.getDate()},U.regional={en:{monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],formatString:"%Y-%m-%d %H:%M:%S"},fr:{monthNames:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],monthNamesShort:["Jan","Fév","Mar","Avr","Mai","Jun","Jul","Aoû","Sep","Oct","Nov","Déc"],dayNames:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],dayNamesShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],formatString:"%Y-%m-%d %H:%M:%S"},de:{monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],formatString:"%Y-%m-%d %H:%M:%S"},es:{monthNames:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],monthNamesShort:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],dayNames:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"],dayNamesShort:["Dom","Lun","Mar","Mié","Juv","Vie","Sáb"],formatString:"%Y-%m-%d %H:%M:%S"},ru:{monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],dayNamesShort:["вск","пнд","втр","срд","чтв","птн","сбт"],formatString:"%Y-%m-%d %H:%M:%S"},ar:{monthNames:["كانون الثاني","شباط","آذار","نيسان","آذار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["السبت","الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة"],dayNamesShort:["سبت","أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة"],formatString:"%Y-%m-%d %H:%M:%S"},pt:{monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],formatString:"%Y-%m-%d %H:%M:%S"},"pt-BR":{monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],formatString:"%Y-%m-%d %H:%M:%S"},pl:{monthNames:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],monthNamesShort:["Sty","Lut","Mar","Kwi","Maj","Cze","Lip","Sie","Wrz","Paź","Lis","Gru"],dayNames:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],dayNamesShort:["Ni","Pn","Wt","Śr","Cz","Pt","Sb"],formatString:"%Y-%m-%d %H:%M:%S"},nl:{monthNames:["Januari","Februari","Maart","April","Mei","Juni","July","Augustus","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:",".Zaterdag,dayNamesShort:["Zo","Ma","Di","Wo","Do","Vr","Za"],formatString:"%Y-%m-%d %H:%M:%S"},sv:{monthNames:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],monthNamesShort:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],dayNames:["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],dayNamesShort:["sön","mån","tis","ons","tor","fre","lör"],formatString:"%Y-%m-%d %H:%M:%S"},it:{monthNames:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthNamesShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],dayNames:["Domenica","Lunedi","Martedi","Mercoledi","Giovedi","Venerdi","Sabato"],dayNamesShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],formatString:"%d-%m-%Y %H:%M:%S"}},U.regional["en-US"]=U.regional["en-GB"]=U.regional.en,U.regional.getLocale=function(){var a=U.config.defaultLocale;return document&&document.getElementsByTagName("html")&&document.getElementsByTagName("html")[0].lang&&(a=document.getElementsByTagName("html")[0].lang,U.regional.hasOwnProperty(a)||(a=U.config.defaultLocale)),a};var V=864e5,W=function(a,b){a=String(a);var c=b-a.length,d=String(Math.pow(10,c)).slice(1);return d.concat(a)},X={millisecond:1,second:1e3,minute:6e4,hour:36e5,day:V,week:7*V,month:{add:function(a,b){X.year.add(a,Math[b>0?"floor":"ceil"](b/12));var c=a.getMonth()+b%12;12==c?(c=0,a.setYear(a.getFullYear()+1)):c==-1&&(c=11,a.setYear(a.getFullYear()-1)),a.setMonth(c)},diff:function(a,b){var c=a.getFullYear()-b.getFullYear(),d=a.getMonth()-b.getMonth()+12*c,e=a.getDate()-b.getDate();return d+e/30}},year:{add:function(a,b){a.setYear(a.getFullYear()+Math[b>0?"floor":"ceil"](b))},diff:function(a,b){return X.month.diff(a,b)/12}}};for(var Y in X)"s"!=Y.substring(Y.length-1)&&(X[Y+"s"]=X[Y]);var Z=function(a,b,c){if(U.formats[c].shortcuts[b])return U.strftime(a,U.formats[c].shortcuts[b],c);var d=(U.formats[c].codes[b]||"").split("."),e=a["get"+d[0]]?a["get"+d[0]]():"";return d[1]&&(e=W(e,d[1])),e};U.strftime=function(a,b,c,d){var e="perl",f=U.regional.getLocale();c&&U.formats.hasOwnProperty(c)?e=c:c&&U.regional.hasOwnProperty(c)&&(f=c),d&&U.formats.hasOwnProperty(d)?e=d:d&&U.regional.hasOwnProperty(d)&&(f=d),"[object Object]"==F(a)&&"jsDate"==a._type||(a=new U(a),a.locale=f),b||(b=a.formatString||U.regional[f].formatString);for(var g,h=b||"%Y-%m-%d",i="";h.length>0;)(g=h.match(U.formats[e].codes.matcher))?(i+=h.slice(0,g.index),i+=(g[1]||"")+Z(a,g[2],e),h=h.slice(g.index+g[0].length)):(i+=h,h="");return i},U.formats={ISO:"%Y-%m-%dT%H:%M:%S.%N%G",SQL:"%Y-%m-%d %H:%M:%S"},U.formats.perl={codes:{matcher:/()%(#?(%|[a-z]))/i,Y:"FullYear",y:"ShortYear.2",m:"MonthNumber.2","#m":"MonthNumber",B:"MonthName",b:"AbbrMonthName",d:"Date.2","#d":"Date",e:"Date",A:"DayName",a:"AbbrDayName",w:"Day",H:"Hours.2","#H":"Hours",I:"Hours12.2","#I":"Hours12",p:"AMPM",M:"Minutes.2","#M":"Minutes",S:"Seconds.2","#S":"Seconds",s:"Unix",N:"Milliseconds.3","#N":"Milliseconds",O:"TimezoneOffset",Z:"TimezoneName",G:"GmtOffset"},shortcuts:{F:"%Y-%m-%d",T:"%H:%M:%S",X:"%H:%M:%S",x:"%m/%d/%y",D:"%m/%d/%y","#c":"%a %b %e %H:%M:%S %Y",v:"%e-%b-%Y",R:"%H:%M",r:"%I:%M:%S %p",t:"\t",n:"\n","%":"%"}},U.formats.php={codes:{matcher:/()%((%|[a-z]))/i,a:"AbbrDayName",A:"DayName",d:"Date.2",e:"Date",j:"DayOfYear.3",u:"DayOfWeek",w:"Day",U:"FullWeekOfYear.2",V:"IsoWeek.2",W:"WeekOfYear.2",b:"AbbrMonthName",B:"MonthName",m:"MonthNumber.2",h:"AbbrMonthName",C:"Century.2",y:"ShortYear.2",Y:"FullYear",H:"Hours.2",I:"Hours12.2",l:"Hours12",p:"AMPM",P:"AmPm",M:"Minutes.2",S:"Seconds.2",s:"Unix",O:"TimezoneOffset",z:"GmtOffset",Z:"TimezoneAbbr"},shortcuts:{D:"%m/%d/%y",F:"%Y-%m-%d",T:"%H:%M:%S",X:"%H:%M:%S",x:"%m/%d/%y",R:"%H:%M",r:"%I:%M:%S %p",t:"\t",n:"\n","%":"%"}},U.createDate=function(a){function b(a,b){var c,d,e,f,g=parseFloat(b[1]),h=parseFloat(b[2]),i=parseFloat(b[3]),j=U.config.defaultCentury;return g>31?(d=i,e=h,c=j+g):(d=h,e=g,c=j+i),f=e+"/"+d+"/"+c,a.replace(/^([0-9]{1,2})[-\/]([0-9]{1,2})[-\/]([0-9]{1,2})/,f)}if(null==a)return new Date;if(a instanceof Date)return a;if("number"==typeof a)return new Date(a);var c=String(a).replace(/^\s*(.+)\s*$/g,"$1");c=c.replace(/^([0-9]{1,4})-([0-9]{1,2})-([0-9]{1,4})/,"$1/$2/$3"),c=c.replace(/^(3[01]|[0-2]?\d)[-\/]([a-z]{3,})[-\/](\d{4})/i,"$1 $2 $3");var d=c.match(/^(3[01]|[0-2]?\d)[-\/]([a-z]{3,})[-\/](\d{2})\D*/i);if(d&&d.length>3){var e=parseFloat(d[3]),f=U.config.defaultCentury+e;f=String(f),c=c.replace(/^(3[01]|[0-2]?\d)[-\/]([a-z]{3,})[-\/](\d{2})\D*/i,d[1]+" "+d[2]+" "+f)}d=c.match(/^([0-9]{1,2})[-\/]([0-9]{1,2})[-\/]([0-9]{1,2})[^0-9]/),d&&d.length>3&&(c=b(c,d));var d=c.match(/^([0-9]{1,2})[-\/]([0-9]{1,2})[-\/]([0-9]{1,2})$/);d&&d.length>3&&(c=b(c,d));for(var g,h,i,j=0,k=U.matchers.length,l=c;j<k;){if(h=Date.parse(l),!isNaN(h))return new Date(h);if(g=U.matchers[j],"function"==typeof g){if(i=g.call(U,l),i instanceof Date)return i}else l=c.replace(g[0],g[1]);j++}return NaN},U.daysInMonth=function(a,b){return 2==b?29==new Date(a,1,29).getDate()?29:28:[H,31,H,31,30,31,30,31,31,30,31,30,31][b]},U.matchers=[[/(3[01]|[0-2]\d)\s*\.\s*(1[0-2]|0\d)\s*\.\s*([1-9]\d{3})/,"$2/$1/$3"],[/([1-9]\d{3})\s*-\s*(1[0-2]|0\d)\s*-\s*(3[01]|[0-2]\d)/,"$2/$3/$1"],function(a){var b=a.match(/^(?:(.+)\s+)?([012]?\d)(?:\s*\:\s*(\d\d))?(?:\s*\:\s*(\d\d(\.\d*)?))?\s*(am|pm)?\s*$/i);if(b){if(b[1]){var c=this.createDate(b[1]);if(isNaN(c))return}else{var c=new Date;c.setMilliseconds(0)}var d=parseFloat(b[2]);return b[6]&&(d="am"==b[6].toLowerCase()?12==d?0:d:12==d?12:d+12),c.setHours(d,parseInt(b[3]||0,10),parseInt(b[4]||0,10),1e3*(parseFloat(b[5]||0)||0)),c}return a},function(a){var b=a.match(/^(?:(.+))[T|\s+]([012]\d)(?:\:(\d\d))(?:\:(\d\d))(?:\.\d+)([\+\-]\d\d\:\d\d)$/i);if(b){if(b[1]){var c=this.createDate(b[1]);if(isNaN(c))return}else{var c=new Date;c.setMilliseconds(0)}var d=parseFloat(b[2]);return c.setHours(d,parseInt(b[3],10),parseInt(b[4],10),1e3*parseFloat(b[5])),c}return a},function(a){var b=a.match(/^([0-3]?\d)\s*[-\/.\s]{1}\s*([a-zA-Z]{3,9})\s*[-\/.\s]{1}\s*([0-3]?\d)$/);if(b){var c,d,e,f=new Date,g=U.config.defaultCentury,h=parseFloat(b[1]),i=parseFloat(b[3]);h>31?(d=i,c=g+h):(d=h,c=g+i);var e=E(b[2],U.regional[U.regional.getLocale()].monthNamesShort);return e==-1&&(e=E(b[2],U.regional[U.regional.getLocale()].monthNames)),f.setFullYear(c,e,d),f.setHours(0,0,0,0),f}return a}],a.jsDate=U,a.jqplot.sprintf=function(){function b(a,b,c,d){var e=a.length>=b?"":Array(1+b-a.length>>>0).join(c);return d?a+e:e+a}function c(b){for(var c=new String(b),d=10;d>0&&c!=(c=c.replace(/^(\d+)(\d{3})/,"$1"+a.jqplot.sprintf.thousandsSeparator+"$2"));d--);return c}function d(a,c,d,e,f,g){var h=e-a.length;if(h>0){var i=" ";g&&(i=" "),a=d||!f?b(a,e,i,d):a.slice(0,c.length)+b("",h,"0",!0)+a.slice(c.length)}return a}function e(a,c,e,f,g,h,i,j){var k=a>>>0;return e=e&&k&&{2:"0b",8:"0",16:"0x"}[c]||"",a=e+b(k.toString(c),h||0,"0",!1),d(a,e,f,g,i,j)}function f(a,b,c,e,f,g){return null!=e&&(a=a.slice(0,e)),d(a,"",b,c,f,g)}var g=arguments,h=0,i=g[h++];return i.replace(a.jqplot.sprintf.regex,function(i,j,k,l,m,n,o){if("%%"==i)return"%";for(var p=!1,q="",r=!1,s=!1,t=!1,u=!1,v=0;k&&v<k.length;v++)switch(k.charAt(v)){case" ":q=" ";break;case"+":q="+";break;case"-":p=!0;break;case"0":r=!0;break;case"#":s=!0;break;case"&":t=!0;break;case"'":u=!0}if(l=l?"*"==l?+g[h++]:"*"==l.charAt(0)?+g[l.slice(1,-1)]:+l:0,l<0&&(l=-l,p=!0),!isFinite(l))throw new Error("$.jqplot.sprintf: (minimum-)width must be finite");n=n?"*"==n?+g[h++]:"*"==n.charAt(0)?+g[n.slice(1,-1)]:+n:"fFeE".indexOf(o)>-1?6:"d"==o?0:void 0;var w=j?g[j.slice(0,-1)]:g[h++];switch(o){case"s":return null==w?"":f(String(w),p,l,n,r,t);case"c":return f(String.fromCharCode(+w),p,l,n,r,t);case"b":return e(w,2,s,p,l,n,r,t);case"o":return e(w,8,s,p,l,n,r,t);case"x":return e(w,16,s,p,l,n,r,t);case"X":return e(w,16,s,p,l,n,r,t).toUpperCase();case"u":return e(w,10,s,p,l,n,r,t);case"i":var x=parseInt(+w,10);if(isNaN(x))return"";var y=x<0?"-":q,z=u?c(String(Math.abs(x))):String(Math.abs(x));return w=y+b(z,n,"0",!1),d(w,y,p,l,r,t);case"d":var x=Math.round(+w);if(isNaN(x))return"";var y=x<0?"-":q,z=u?c(String(Math.abs(x))):String(Math.abs(x));return w=y+b(z,n,"0",!1),d(w,y,p,l,r,t);case"e":case"E":case"f":case"F":case"g":case"G":var x=+w;if(isNaN(x))return"";var y=x<0?"-":q,A=["toExponential","toFixed","toPrecision"]["efg".indexOf(o.toLowerCase())],B=["toString","toUpperCase"]["eEfFgG".indexOf(o)%2],z=Math.abs(x)[A](n),C=z.toString().split(".");C[0]=u?c(C[0]):C[0],z=C.join(a.jqplot.sprintf.decimalMark),w=y+z;var D=d(w,y,p,l,r,t)[B]();return D;case"p":case"P":var x=+w;if(isNaN(x))return"";var y=x<0?"-":q,C=String(Number(Math.abs(x)).toExponential()).split(/e|E/),E=C[0].indexOf(".")!=-1?C[0].length-1:String(x).length,F=C[1]<0?-C[1]-1:0;if(Math.abs(x)<1)w=E+F<=n?y+Math.abs(x).toPrecision(E):E<=n-1?y+Math.abs(x).toExponential(E-1):y+Math.abs(x).toExponential(n-1);else{var G=E<=n?E:n;w=y+Math.abs(x).toPrecision(G)}var B=["toString","toUpperCase"]["pP".indexOf(o)%2];return d(w,y,p,l,r,t)[B]();case"n":return"";default:return i}})},a.jqplot.sprintf.thousandsSeparator=",",a.jqplot.sprintf.decimalMark=".",a.jqplot.sprintf.regex=/%%|%(\d+\$)?([-+#0&\' ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([nAscboxXuidfegpEGP])/g,a.jqplot.getSignificantFigures=function(a){var b=String(Number(Math.abs(a)).toExponential()).split(/e|E/),c=b[0].indexOf(".")!=-1?b[0].length-1:b[0].length,d=b[1]<0?-b[1]-1:0,e=parseInt(b[1],10),f=e+1>0?e+1:0,g=c<=f?0:c-e-1;return{significantDigits:c,digitsLeft:f,digitsRight:g,zeros:d,exponent:e}},a.jqplot.getPrecision=function(b){return a.jqplot.getSignificantFigures(b).digitsRight};var $=a.uiBackCompat!==!1;a.jqplot.effects={effect:{}};var _="jqplot.storage.";a.extend(a.jqplot.effects,{version:"1.9pre",save:function(a,b){for(var c=0;c<b.length;c++)null!==b[c]&&a.data(_+b[c],a[0].style[b[c]])},restore:function(a,b){for(var c=0;c<b.length;c++)null!==b[c]&&a.css(b[c],a.data(_+b[c]))},setMode:function(a,b){return"toggle"===b&&(b=a.is(":hidden")?"show":"hide"),b},createWrapper:function(b){if(b.parent().is(".ui-effects-wrapper"))return b.parent();var c={width:b.outerWidth(!0),height:b.outerHeight(!0),float:b.css("float")},d=a("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e={width:b.width(),height:b.height()},f=document.activeElement;return b.wrap(d),(b[0]===f||a.contains(b[0],f))&&a(f).focus(),d=b.parent(),"static"===b.css("position")?(d.css({position:"relative"}),b.css({position:"relative"})):(a.extend(c,{position:b.css("position"),zIndex:b.css("z-index")}),a.each(["top","left","bottom","right"],function(a,d){c[d]=b.css(d),isNaN(parseInt(c[d],10))&&(c[d]="auto")}),b.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),b.css(e),d.css(c).show()},removeWrapper:function(b){var c=document.activeElement;return b.parent().is(".ui-effects-wrapper")&&(b.parent().replaceWith(b),(b[0]===c||a.contains(b[0],c))&&a(c).focus()),b}}),a.fn.extend({jqplotEffect:function(b,c,d,e){function f(b){function c(){a.isFunction(e)&&e.call(d[0]),a.isFunction(b)&&b()}var d=a(this),e=g.complete,f=g.mode;(d.is(":hidden")?"hide"===f:"show"===f)?c():j.call(d[0],g,c)}var g=G.apply(this,arguments),h=g.mode,i=g.queue,j=a.jqplot.effects.effect[g.effect],k=!j&&$&&a.jqplot.effects[g.effect];return a.fx.off||!j&&!k?h?this[h](g.duration,g.complete):this.each(function(){g.complete&&g.complete.call(this)}):j?i===!1?this.each(f):this.queue(i||"fx",f):k.call(this,{options:g,duration:g.duration,callback:g.complete,mode:g.mode})}});var aa=/up|down|vertical/,ba=/up|left|vertical|horizontal/;a.jqplot.effects.effect.blind=function(b,c){var d,e,f,g=a(this),h=["position","top","bottom","left","right","height","width"],i=a.jqplot.effects.setMode(g,b.mode||"hide"),j=b.direction||"up",k=aa.test(j),l=k?"height":"width",m=k?"top":"left",n=ba.test(j),o={},p="show"===i;g.parent().is(".ui-effects-wrapper")?a.jqplot.effects.save(g.parent(),h):a.jqplot.effects.save(g,h),g.show(),f=parseInt(g.css("top"),10),d=a.jqplot.effects.createWrapper(g).css({overflow:"hidden"}),e=k?d[l]()+f:d[l](),o[l]=p?String(e):"0",n||(g.css(k?"bottom":"right",0).css(k?"top":"left","").css({position:"absolute"}),o[m]=p?"0":String(e)),p&&(d.css(l,0),n||d.css(m,e)),d.animate(o,{duration:b.duration,easing:b.easing,queue:!1,complete:function(){"hide"===i&&g.hide(),a.jqplot.effects.restore(g,h),a.jqplot.effects.removeWrapper(g),c()}})}}(jQuery); \ No newline at end of file diff --git a/plugins/wp-statistics/assets/jqplot/plugins/jqplot.canvasAxisLabelRenderer.js b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.canvasAxisLabelRenderer.js new file mode 100644 index 0000000..3f027f2 --- /dev/null +++ b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.canvasAxisLabelRenderer.js @@ -0,0 +1,203 @@ +/** + * jqPlot + * Pure JavaScript plotting plugin using jQuery + * + * Version: 1.0.9 + * Revision: c465c44 + * + * Copyright (c) 2009-2016 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot dot com or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * sprintf functions contained in jqplot.sprintf.js by Ash Searle: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function($) { + /** + * Class: $.jqplot.CanvasAxisLabelRenderer + * Renderer to draw axis labels with a canvas element to support advanced + * featrues such as rotated text. This renderer uses a separate rendering engine + * to draw the text on the canvas. Two modes of rendering the text are available. + * If the browser has native font support for canvas fonts (currently Mozila 3.5 + * and Safari 4), you can enable text rendering with the canvas fillText method. + * You do so by setting the "enableFontSupport" option to true. + * + * Browsers lacking native font support will have the text drawn on the canvas + * using the Hershey font metrics. Even if the "enableFontSupport" option is true + * non-supporting browsers will still render with the Hershey font. + * + */ + $.jqplot.CanvasAxisLabelRenderer = function(options) { + // Group: Properties + + // prop: angle + // angle of text, measured clockwise from x axis. + this.angle = 0; + // name of the axis associated with this tick + this.axis; + // prop: show + // whether or not to show the tick (mark and label). + this.show = true; + // prop: showLabel + // whether or not to show the label. + this.showLabel = true; + // prop: label + // label for the axis. + this.label = ''; + // prop: fontFamily + // CSS spec for the font-family css attribute. + // Applies only to browsers supporting native font rendering in the + // canvas tag. Currently Mozilla 3.5 and Safari 4. + this.fontFamily = '"Trebuchet MS", Arial, Helvetica, sans-serif'; + // prop: fontSize + // CSS spec for font size. + this.fontSize = '11pt'; + // prop: fontWeight + // CSS spec for fontWeight: normal, bold, bolder, lighter or a number 100 - 900 + this.fontWeight = 'normal'; + // prop: fontStretch + // Multiplier to condense or expand font width. + // Applies only to browsers which don't support canvas native font rendering. + this.fontStretch = 1.0; + // prop: textColor + // css spec for the color attribute. + this.textColor = '#666666'; + // prop: enableFontSupport + // true to turn on native canvas font support in Mozilla 3.5+ and Safari 4+. + // If true, label will be drawn with canvas tag native support for fonts. + // If false, label will be drawn with Hershey font metrics. + this.enableFontSupport = true; + // prop: pt2px + // Point to pixel scaling factor, used for computing height of bounding box + // around a label. The labels text renderer has a default setting of 1.4, which + // should be suitable for most fonts. Leave as null to use default. If tops of + // letters appear clipped, increase this. If bounding box seems too big, decrease. + // This is an issue only with the native font renderering capabilities of Mozilla + // 3.5 and Safari 4 since they do not provide a method to determine the font height. + this.pt2px = null; + + this._elem; + this._ctx; + this._plotWidth; + this._plotHeight; + this._plotDimensions = {height:null, width:null}; + + $.extend(true, this, options); + + if (options.angle == null && this.axis != 'xaxis' && this.axis != 'x2axis') { + this.angle = -90; + } + + var ropts = {fontSize:this.fontSize, fontWeight:this.fontWeight, fontStretch:this.fontStretch, fillStyle:this.textColor, angle:this.getAngleRad(), fontFamily:this.fontFamily}; + if (this.pt2px) { + ropts.pt2px = this.pt2px; + } + + if (this.enableFontSupport) { + if ($.jqplot.support_canvas_text()) { + this._textRenderer = new $.jqplot.CanvasFontRenderer(ropts); + } + + else { + this._textRenderer = new $.jqplot.CanvasTextRenderer(ropts); + } + } + else { + this._textRenderer = new $.jqplot.CanvasTextRenderer(ropts); + } + }; + + $.jqplot.CanvasAxisLabelRenderer.prototype.init = function(options) { + $.extend(true, this, options); + this._textRenderer.init({fontSize:this.fontSize, fontWeight:this.fontWeight, fontStretch:this.fontStretch, fillStyle:this.textColor, angle:this.getAngleRad(), fontFamily:this.fontFamily}); + }; + + // return width along the x axis + // will check first to see if an element exists. + // if not, will return the computed text box width. + $.jqplot.CanvasAxisLabelRenderer.prototype.getWidth = function(ctx) { + if (this._elem) { + return this._elem.outerWidth(true); + } + else { + var tr = this._textRenderer; + var l = tr.getWidth(ctx); + var h = tr.getHeight(ctx); + var w = Math.abs(Math.sin(tr.angle)*h) + Math.abs(Math.cos(tr.angle)*l); + return w; + } + }; + + // return height along the y axis. + $.jqplot.CanvasAxisLabelRenderer.prototype.getHeight = function(ctx) { + if (this._elem) { + return this._elem.outerHeight(true); + } + else { + var tr = this._textRenderer; + var l = tr.getWidth(ctx); + var h = tr.getHeight(ctx); + var w = Math.abs(Math.cos(tr.angle)*h) + Math.abs(Math.sin(tr.angle)*l); + return w; + } + }; + + $.jqplot.CanvasAxisLabelRenderer.prototype.getAngleRad = function() { + var a = this.angle * Math.PI/180; + return a; + }; + + $.jqplot.CanvasAxisLabelRenderer.prototype.draw = function(ctx, plot) { + // Memory Leaks patch + if (this._elem) { + if ($.jqplot.use_excanvas && window.G_vmlCanvasManager.uninitElement !== undefined) { + window.G_vmlCanvasManager.uninitElement(this._elem.get(0)); + } + + this._elem.emptyForce(); + this._elem = null; + } + + // create a canvas here, but can't draw on it untill it is appended + // to dom for IE compatability. + var elem = plot.canvasManager.getCanvas(); + + this._textRenderer.setText(this.label, ctx); + var w = this.getWidth(ctx); + var h = this.getHeight(ctx); + elem.width = w; + elem.height = h; + elem.style.width = w; + elem.style.height = h; + + elem = plot.canvasManager.initCanvas(elem); + + this._elem = $(elem); + this._elem.css({ position: 'absolute'}); + this._elem.addClass('jqplot-'+this.axis+'-label'); + + elem = null; + return this._elem; + }; + + $.jqplot.CanvasAxisLabelRenderer.prototype.pack = function() { + this._textRenderer.draw(this._elem.get(0).getContext("2d"), this.label); + }; + +})(jQuery); \ No newline at end of file diff --git a/plugins/wp-statistics/assets/jqplot/plugins/jqplot.canvasAxisLabelRenderer.min.js b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.canvasAxisLabelRenderer.min.js new file mode 100644 index 0000000..f61d9b3 --- /dev/null +++ b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.canvasAxisLabelRenderer.min.js @@ -0,0 +1,4 @@ +/* jqplot 1.0.9 | (c) 2009-2016 Chris Leonello | jqplot.com + jsDate | (c) 2010-2016 Chris Leonello + */ +!function(a){a.jqplot.CanvasAxisLabelRenderer=function(b){this.angle=0,this.axis,this.show=!0,this.showLabel=!0,this.label="",this.fontFamily='"Trebuchet MS", Arial, Helvetica, sans-serif',this.fontSize="11pt",this.fontWeight="normal",this.fontStretch=1,this.textColor="#666666",this.enableFontSupport=!0,this.pt2px=null,this._elem,this._ctx,this._plotWidth,this._plotHeight,this._plotDimensions={height:null,width:null},a.extend(!0,this,b),null==b.angle&&"xaxis"!=this.axis&&"x2axis"!=this.axis&&(this.angle=-90);var c={fontSize:this.fontSize,fontWeight:this.fontWeight,fontStretch:this.fontStretch,fillStyle:this.textColor,angle:this.getAngleRad(),fontFamily:this.fontFamily};this.pt2px&&(c.pt2px=this.pt2px),this.enableFontSupport&&a.jqplot.support_canvas_text()?this._textRenderer=new a.jqplot.CanvasFontRenderer(c):this._textRenderer=new a.jqplot.CanvasTextRenderer(c)},a.jqplot.CanvasAxisLabelRenderer.prototype.init=function(b){a.extend(!0,this,b),this._textRenderer.init({fontSize:this.fontSize,fontWeight:this.fontWeight,fontStretch:this.fontStretch,fillStyle:this.textColor,angle:this.getAngleRad(),fontFamily:this.fontFamily})},a.jqplot.CanvasAxisLabelRenderer.prototype.getWidth=function(a){if(this._elem)return this._elem.outerWidth(!0);var b=this._textRenderer,c=b.getWidth(a),d=b.getHeight(a),e=Math.abs(Math.sin(b.angle)*d)+Math.abs(Math.cos(b.angle)*c);return e},a.jqplot.CanvasAxisLabelRenderer.prototype.getHeight=function(a){if(this._elem)return this._elem.outerHeight(!0);var b=this._textRenderer,c=b.getWidth(a),d=b.getHeight(a),e=Math.abs(Math.cos(b.angle)*d)+Math.abs(Math.sin(b.angle)*c);return e},a.jqplot.CanvasAxisLabelRenderer.prototype.getAngleRad=function(){var a=this.angle*Math.PI/180;return a},a.jqplot.CanvasAxisLabelRenderer.prototype.draw=function(b,c){this._elem&&(a.jqplot.use_excanvas&&void 0!==window.G_vmlCanvasManager.uninitElement&&window.G_vmlCanvasManager.uninitElement(this._elem.get(0)),this._elem.emptyForce(),this._elem=null);var d=c.canvasManager.getCanvas();this._textRenderer.setText(this.label,b);var e=this.getWidth(b),f=this.getHeight(b);return d.width=e,d.height=f,d.style.width=e,d.style.height=f,d=c.canvasManager.initCanvas(d),this._elem=a(d),this._elem.css({position:"absolute"}),this._elem.addClass("jqplot-"+this.axis+"-label"),d=null,this._elem},a.jqplot.CanvasAxisLabelRenderer.prototype.pack=function(){this._textRenderer.draw(this._elem.get(0).getContext("2d"),this.label)}}(jQuery); \ No newline at end of file diff --git a/plugins/wp-statistics/assets/jqplot/plugins/jqplot.canvasAxisTickRenderer.js b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.canvasAxisTickRenderer.js new file mode 100644 index 0000000..91f5050 --- /dev/null +++ b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.canvasAxisTickRenderer.js @@ -0,0 +1,253 @@ +/** + * jqPlot + * Pure JavaScript plotting plugin using jQuery + * + * Version: 1.0.9 + * Revision: c465c44 + * + * Copyright (c) 2009-2016 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot dot com or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * sprintf functions contained in jqplot.sprintf.js by Ash Searle: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function($) { + /** + * Class: $.jqplot.CanvasAxisTickRenderer + * Renderer to draw axis ticks with a canvas element to support advanced + * featrues such as rotated text. This renderer uses a separate rendering engine + * to draw the text on the canvas. Two modes of rendering the text are available. + * If the browser has native font support for canvas fonts (currently Mozila 3.5 + * and Safari 4), you can enable text rendering with the canvas fillText method. + * You do so by setting the "enableFontSupport" option to true. + * + * Browsers lacking native font support will have the text drawn on the canvas + * using the Hershey font metrics. Even if the "enableFontSupport" option is true + * non-supporting browsers will still render with the Hershey font. + */ + $.jqplot.CanvasAxisTickRenderer = function(options) { + // Group: Properties + + // prop: mark + // tick mark on the axis. One of 'inside', 'outside', 'cross', '' or null. + this.mark = 'outside'; + // prop: showMark + // whether or not to show the mark on the axis. + this.showMark = true; + // prop: showGridline + // whether or not to draw the gridline on the grid at this tick. + this.showGridline = true; + // prop: isMinorTick + // if this is a minor tick. + this.isMinorTick = false; + // prop: angle + // angle of text, measured clockwise from x axis. + this.angle = 0; + // prop: markSize + // Length of the tick marks in pixels. For 'cross' style, length + // will be stoked above and below axis, so total length will be twice this. + this.markSize = 4; + // prop: show + // whether or not to show the tick (mark and label). + this.show = true; + // prop: showLabel + // whether or not to show the label. + this.showLabel = true; + // prop: labelPosition + // 'auto', 'start', 'middle' or 'end'. + // Whether tick label should be positioned so the start, middle, or end + // of the tick mark. + this.labelPosition = 'auto'; + this.label = ''; + this.value = null; + this._styles = {}; + // prop: formatter + // A class of a formatter for the tick text. + // The default $.jqplot.DefaultTickFormatter uses sprintf. + this.formatter = $.jqplot.DefaultTickFormatter; + // prop: formatString + // string passed to the formatter. + this.formatString = ''; + // prop: prefix + // String to prepend to the tick label. + // Prefix is prepended to the formatted tick label. + this.prefix = ''; + // prop: fontFamily + // css spec for the font-family css attribute. + this.fontFamily = '"Trebuchet MS", Arial, Helvetica, sans-serif'; + // prop: fontSize + // CSS spec for font size. + this.fontSize = '10pt'; + // prop: fontWeight + // CSS spec for fontWeight + this.fontWeight = 'normal'; + // prop: fontStretch + // Multiplier to condense or expand font width. + // Applies only to browsers which don't support canvas native font rendering. + this.fontStretch = 1.0; + // prop: textColor + // css spec for the color attribute. + this.textColor = '#666666'; + // prop: enableFontSupport + // true to turn on native canvas font support in Mozilla 3.5+ and Safari 4+. + // If true, tick label will be drawn with canvas tag native support for fonts. + // If false, tick label will be drawn with Hershey font metrics. + this.enableFontSupport = true; + // prop: pt2px + // Point to pixel scaling factor, used for computing height of bounding box + // around a label. The labels text renderer has a default setting of 1.4, which + // should be suitable for most fonts. Leave as null to use default. If tops of + // letters appear clipped, increase this. If bounding box seems too big, decrease. + // This is an issue only with the native font renderering capabilities of Mozilla + // 3.5 and Safari 4 since they do not provide a method to determine the font height. + this.pt2px = null; + + this._elem; + this._ctx; + this._plotWidth; + this._plotHeight; + this._plotDimensions = {height:null, width:null}; + + $.extend(true, this, options); + + var ropts = {fontSize:this.fontSize, fontWeight:this.fontWeight, fontStretch:this.fontStretch, fillStyle:this.textColor, angle:this.getAngleRad(), fontFamily:this.fontFamily}; + if (this.pt2px) { + ropts.pt2px = this.pt2px; + } + + if (this.enableFontSupport) { + if ($.jqplot.support_canvas_text()) { + this._textRenderer = new $.jqplot.CanvasFontRenderer(ropts); + } + + else { + this._textRenderer = new $.jqplot.CanvasTextRenderer(ropts); + } + } + else { + this._textRenderer = new $.jqplot.CanvasTextRenderer(ropts); + } + }; + + $.jqplot.CanvasAxisTickRenderer.prototype.init = function(options) { + $.extend(true, this, options); + this._textRenderer.init({fontSize:this.fontSize, fontWeight:this.fontWeight, fontStretch:this.fontStretch, fillStyle:this.textColor, angle:this.getAngleRad(), fontFamily:this.fontFamily}); + }; + + // return width along the x axis + // will check first to see if an element exists. + // if not, will return the computed text box width. + $.jqplot.CanvasAxisTickRenderer.prototype.getWidth = function(ctx) { + if (this._elem) { + return this._elem.outerWidth(true); + } + else { + var tr = this._textRenderer; + var l = tr.getWidth(ctx); + var h = tr.getHeight(ctx); + var w = Math.abs(Math.sin(tr.angle)*h) + Math.abs(Math.cos(tr.angle)*l); + return w; + } + }; + + // return height along the y axis. + $.jqplot.CanvasAxisTickRenderer.prototype.getHeight = function(ctx) { + if (this._elem) { + return this._elem.outerHeight(true); + } + else { + var tr = this._textRenderer; + var l = tr.getWidth(ctx); + var h = tr.getHeight(ctx); + var w = Math.abs(Math.cos(tr.angle)*h) + Math.abs(Math.sin(tr.angle)*l); + return w; + } + }; + + // return top. + $.jqplot.CanvasAxisTickRenderer.prototype.getTop = function(ctx) { + if (this._elem) { + return this._elem.position().top; + } + else { + return null; + } + }; + + $.jqplot.CanvasAxisTickRenderer.prototype.getAngleRad = function() { + var a = this.angle * Math.PI/180; + return a; + }; + + + $.jqplot.CanvasAxisTickRenderer.prototype.setTick = function(value, axisName, isMinor) { + this.value = value; + if (isMinor) { + this.isMinorTick = true; + } + return this; + }; + + $.jqplot.CanvasAxisTickRenderer.prototype.draw = function(ctx, plot) { + if (!this.label) { + this.label = this.prefix + this.formatter(this.formatString, this.value); + } + + // Memory Leaks patch + if (this._elem) { + if ($.jqplot.use_excanvas && window.G_vmlCanvasManager.uninitElement !== undefined) { + window.G_vmlCanvasManager.uninitElement(this._elem.get(0)); + } + + this._elem.emptyForce(); + this._elem = null; + } + + // create a canvas here, but can't draw on it untill it is appended + // to dom for IE compatability. + + var elem = plot.canvasManager.getCanvas(); + + this._textRenderer.setText(this.label, ctx); + var w = this.getWidth(ctx); + var h = this.getHeight(ctx); + // canvases seem to need to have width and heigh attributes directly set. + elem.width = w; + elem.height = h; + elem.style.width = w; + elem.style.height = h; + elem.style.textAlign = 'left'; + elem.style.position = 'absolute'; + + elem = plot.canvasManager.initCanvas(elem); + + this._elem = $(elem); + this._elem.css(this._styles); + this._elem.addClass('jqplot-'+this.axis+'-tick'); + + elem = null; + return this._elem; + }; + + $.jqplot.CanvasAxisTickRenderer.prototype.pack = function() { + this._textRenderer.draw(this._elem.get(0).getContext("2d"), this.label); + }; + +})(jQuery); \ No newline at end of file diff --git a/plugins/wp-statistics/assets/jqplot/plugins/jqplot.canvasAxisTickRenderer.min.js b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.canvasAxisTickRenderer.min.js new file mode 100644 index 0000000..66475cf --- /dev/null +++ b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.canvasAxisTickRenderer.min.js @@ -0,0 +1,4 @@ +/* jqplot 1.0.9 | (c) 2009-2016 Chris Leonello | jqplot.com + jsDate | (c) 2010-2016 Chris Leonello + */ +!function(a){a.jqplot.CanvasAxisTickRenderer=function(b){this.mark="outside",this.showMark=!0,this.showGridline=!0,this.isMinorTick=!1,this.angle=0,this.markSize=4,this.show=!0,this.showLabel=!0,this.labelPosition="auto",this.label="",this.value=null,this._styles={},this.formatter=a.jqplot.DefaultTickFormatter,this.formatString="",this.prefix="",this.fontFamily='"Trebuchet MS", Arial, Helvetica, sans-serif',this.fontSize="10pt",this.fontWeight="normal",this.fontStretch=1,this.textColor="#666666",this.enableFontSupport=!0,this.pt2px=null,this._elem,this._ctx,this._plotWidth,this._plotHeight,this._plotDimensions={height:null,width:null},a.extend(!0,this,b);var c={fontSize:this.fontSize,fontWeight:this.fontWeight,fontStretch:this.fontStretch,fillStyle:this.textColor,angle:this.getAngleRad(),fontFamily:this.fontFamily};this.pt2px&&(c.pt2px=this.pt2px),this.enableFontSupport&&a.jqplot.support_canvas_text()?this._textRenderer=new a.jqplot.CanvasFontRenderer(c):this._textRenderer=new a.jqplot.CanvasTextRenderer(c)},a.jqplot.CanvasAxisTickRenderer.prototype.init=function(b){a.extend(!0,this,b),this._textRenderer.init({fontSize:this.fontSize,fontWeight:this.fontWeight,fontStretch:this.fontStretch,fillStyle:this.textColor,angle:this.getAngleRad(),fontFamily:this.fontFamily})},a.jqplot.CanvasAxisTickRenderer.prototype.getWidth=function(a){if(this._elem)return this._elem.outerWidth(!0);var b=this._textRenderer,c=b.getWidth(a),d=b.getHeight(a),e=Math.abs(Math.sin(b.angle)*d)+Math.abs(Math.cos(b.angle)*c);return e},a.jqplot.CanvasAxisTickRenderer.prototype.getHeight=function(a){if(this._elem)return this._elem.outerHeight(!0);var b=this._textRenderer,c=b.getWidth(a),d=b.getHeight(a),e=Math.abs(Math.cos(b.angle)*d)+Math.abs(Math.sin(b.angle)*c);return e},a.jqplot.CanvasAxisTickRenderer.prototype.getTop=function(a){return this._elem?this._elem.position().top:null},a.jqplot.CanvasAxisTickRenderer.prototype.getAngleRad=function(){var a=this.angle*Math.PI/180;return a},a.jqplot.CanvasAxisTickRenderer.prototype.setTick=function(a,b,c){return this.value=a,c&&(this.isMinorTick=!0),this},a.jqplot.CanvasAxisTickRenderer.prototype.draw=function(b,c){this.label||(this.label=this.prefix+this.formatter(this.formatString,this.value)),this._elem&&(a.jqplot.use_excanvas&&void 0!==window.G_vmlCanvasManager.uninitElement&&window.G_vmlCanvasManager.uninitElement(this._elem.get(0)),this._elem.emptyForce(),this._elem=null);var d=c.canvasManager.getCanvas();this._textRenderer.setText(this.label,b);var e=this.getWidth(b),f=this.getHeight(b);return d.width=e,d.height=f,d.style.width=e,d.style.height=f,d.style.textAlign="left",d.style.position="absolute",d=c.canvasManager.initCanvas(d),this._elem=a(d),this._elem.css(this._styles),this._elem.addClass("jqplot-"+this.axis+"-tick"),d=null,this._elem},a.jqplot.CanvasAxisTickRenderer.prototype.pack=function(){this._textRenderer.draw(this._elem.get(0).getContext("2d"),this.label)}}(jQuery); \ No newline at end of file diff --git a/plugins/wp-statistics/assets/jqplot/plugins/jqplot.canvasTextRenderer.js b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.canvasTextRenderer.js new file mode 100644 index 0000000..bbe5fef --- /dev/null +++ b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.canvasTextRenderer.js @@ -0,0 +1,449 @@ +/** + * jqPlot + * Pure JavaScript plotting plugin using jQuery + * + * Version: 1.0.9 + * Revision: c465c44 + * + * Copyright (c) 2009-2016 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot dot com or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * sprintf functions contained in jqplot.sprintf.js by Ash Searle: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + * included jsDate library by Chris Leonello: + * + * Copyright (c) 2010-2015 Chris Leonello + * + * jsDate is currently available for use in all personal or commercial projects + * under both the MIT and GPL version 2.0 licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * jsDate borrows many concepts and ideas from the Date Instance + * Methods by Ken Snyder along with some parts of Ken's actual code. + * + * Ken's original Date Instance Methods and copyright notice: + * + * Ken Snyder (ken d snyder at gmail dot com) + * 2008-09-10 + * version 2.0.2 (http://kendsnyder.com/sandbox/date/) + * Creative Commons Attribution License 3.0 (http://creativecommons.org/licenses/by/3.0/) + * + * jqplotToImage function based on Larry Siden's export-jqplot-to-png.js. + * Larry has generously given permission to adapt his code for inclusion + * into jqPlot. + * + * Larry's original code can be found here: + * + * https://github.com/lsiden/export-jqplot-to-png + * + * + */ + +(function($) { + // This code is a modified version of the canvastext.js code, copyright below: + // + // This code is released to the public domain by Jim Studt, 2007. + // He may keep some sort of up to date copy at http://www.federated.com/~jim/canvastext/ + // + $.jqplot.CanvasTextRenderer = function(options){ + this.fontStyle = 'normal'; // normal, italic, oblique [not implemented] + this.fontVariant = 'normal'; // normal, small caps [not implemented] + this.fontWeight = 'normal'; // normal, bold, bolder, lighter, 100 - 900 + this.fontSize = '10px'; + this.fontFamily = 'sans-serif'; + this.fontStretch = 1.0; + this.fillStyle = '#666666'; + this.angle = 0; + this.textAlign = 'start'; + this.textBaseline = 'alphabetic'; + this.text; + this.width; + this.height; + this.pt2px = 1.28; + + $.extend(true, this, options); + this.normalizedFontSize = this.normalizeFontSize(this.fontSize); + this.setHeight(); + }; + + $.jqplot.CanvasTextRenderer.prototype.init = function(options) { + $.extend(true, this, options); + this.normalizedFontSize = this.normalizeFontSize(this.fontSize); + this.setHeight(); + }; + + // convert css spec into point size + // returns float + $.jqplot.CanvasTextRenderer.prototype.normalizeFontSize = function(sz) { + sz = String(sz); + var n = parseFloat(sz); + if (sz.indexOf('px') > -1) { + return n/this.pt2px; + } + else if (sz.indexOf('pt') > -1) { + return n; + } + else if (sz.indexOf('em') > -1) { + return n*12; + } + else if (sz.indexOf('%') > -1) { + return n*12/100; + } + // default to pixels; + else { + return n/this.pt2px; + } + }; + + + $.jqplot.CanvasTextRenderer.prototype.fontWeight2Float = function(w) { + // w = normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 + // return values adjusted for Hershey font. + if (Number(w)) { + return w/400; + } + else { + switch (w) { + case 'normal': + return 1; + break; + case 'bold': + return 1.75; + break; + case 'bolder': + return 2.25; + break; + case 'lighter': + return 0.75; + break; + default: + return 1; + break; + } + } + }; + + $.jqplot.CanvasTextRenderer.prototype.getText = function() { + return this.text; + }; + + $.jqplot.CanvasTextRenderer.prototype.setText = function(t, ctx) { + this.text = t; + this.setWidth(ctx); + return this; + }; + + $.jqplot.CanvasTextRenderer.prototype.getWidth = function(ctx) { + return this.width; + }; + + $.jqplot.CanvasTextRenderer.prototype.setWidth = function(ctx, w) { + if (!w) { + this.width = this.measure(ctx, this.text); + } + else { + this.width = w; + } + return this; + }; + + // return height in pixels. + $.jqplot.CanvasTextRenderer.prototype.getHeight = function(ctx) { + return this.height; + }; + + // w - height in pt + // set heigh in px + $.jqplot.CanvasTextRenderer.prototype.setHeight = function(w) { + if (!w) { + //height = this.fontSize /0.75; + this.height = this.normalizedFontSize * this.pt2px; + } + else { + this.height = w; + } + return this; + }; + + $.jqplot.CanvasTextRenderer.prototype.letter = function (ch) + { + return this.letters[ch]; + }; + + $.jqplot.CanvasTextRenderer.prototype.ascent = function() + { + return this.normalizedFontSize; + }; + + $.jqplot.CanvasTextRenderer.prototype.descent = function() + { + return 7.0*this.normalizedFontSize/25.0; + }; + + $.jqplot.CanvasTextRenderer.prototype.measure = function(ctx, str) + { + var total = 0; + var len = str.length; + + for (var i = 0; i < len; i++) { + var c = this.letter(str.charAt(i)); + if (c) { + total += c.width * this.normalizedFontSize / 25.0 * this.fontStretch; + } + } + return total; + }; + + $.jqplot.CanvasTextRenderer.prototype.draw = function(ctx,str) + { + var x = 0; + // leave room at bottom for descenders. + var y = this.height*0.72; + var total = 0; + var len = str.length; + var mag = this.normalizedFontSize / 25.0; + + ctx.save(); + var tx, ty; + + // 1st quadrant + if ((-Math.PI/2 <= this.angle && this.angle <= 0) || (Math.PI*3/2 <= this.angle && this.angle <= Math.PI*2)) { + tx = 0; + ty = -Math.sin(this.angle) * this.width; + } + // 4th quadrant + else if ((0 < this.angle && this.angle <= Math.PI/2) || (-Math.PI*2 <= this.angle && this.angle <= -Math.PI*3/2)) { + tx = Math.sin(this.angle) * this.height; + ty = 0; + } + // 2nd quadrant + else if ((-Math.PI < this.angle && this.angle < -Math.PI/2) || (Math.PI <= this.angle && this.angle <= Math.PI*3/2)) { + tx = -Math.cos(this.angle) * this.width; + ty = -Math.sin(this.angle) * this.width - Math.cos(this.angle) * this.height; + } + // 3rd quadrant + else if ((-Math.PI*3/2 < this.angle && this.angle < Math.PI) || (Math.PI/2 < this.angle && this.angle < Math.PI)) { + tx = Math.sin(this.angle) * this.height - Math.cos(this.angle)*this.width; + ty = -Math.cos(this.angle) * this.height; + } + + ctx.strokeStyle = this.fillStyle; + ctx.fillStyle = this.fillStyle; + ctx.translate(tx, ty); + ctx.rotate(this.angle); + ctx.lineCap = "round"; + // multiplier was 2.0 + var fact = (this.normalizedFontSize > 30) ? 2.0 : 2 + (30 - this.normalizedFontSize)/20; + ctx.lineWidth = fact * mag * this.fontWeight2Float(this.fontWeight); + + for ( var i = 0; i < len; i++) { + var c = this.letter( str.charAt(i)); + if ( !c) { + continue; + } + + ctx.beginPath(); + + var penUp = 1; + var needStroke = 0; + for ( var j = 0; j < c.points.length; j++) { + var a = c.points[j]; + if ( a[0] == -1 && a[1] == -1) { + penUp = 1; + continue; + } + if ( penUp) { + ctx.moveTo( x + a[0]*mag*this.fontStretch, y - a[1]*mag); + penUp = false; + } else { + ctx.lineTo( x + a[0]*mag*this.fontStretch, y - a[1]*mag); + } + } + ctx.stroke(); + x += c.width*mag*this.fontStretch; + } + ctx.restore(); + return total; + }; + + $.jqplot.CanvasTextRenderer.prototype.letters = { + ' ': { width: 16, points: [] }, + '!': { width: 10, points: [[5,21],[5,7],[-1,-1],[5,2],[4,1],[5,0],[6,1],[5,2]] }, + '"': { width: 16, points: [[4,21],[4,14],[-1,-1],[12,21],[12,14]] }, + '#': { width: 21, points: [[11,25],[4,-7],[-1,-1],[17,25],[10,-7],[-1,-1],[4,12],[18,12],[-1,-1],[3,6],[17,6]] }, + '$': { width: 20, points: [[8,25],[8,-4],[-1,-1],[12,25],[12,-4],[-1,-1],[17,18],[15,20],[12,21],[8,21],[5,20],[3,18],[3,16],[4,14],[5,13],[7,12],[13,10],[15,9],[16,8],[17,6],[17,3],[15,1],[12,0],[8,0],[5,1],[3,3]] }, + '%': { width: 24, points: [[21,21],[3,0],[-1,-1],[8,21],[10,19],[10,17],[9,15],[7,14],[5,14],[3,16],[3,18],[4,20],[6,21],[8,21],[10,20],[13,19],[16,19],[19,20],[21,21],[-1,-1],[17,7],[15,6],[14,4],[14,2],[16,0],[18,0],[20,1],[21,3],[21,5],[19,7],[17,7]] }, + '&': { width: 26, points: [[23,12],[23,13],[22,14],[21,14],[20,13],[19,11],[17,6],[15,3],[13,1],[11,0],[7,0],[5,1],[4,2],[3,4],[3,6],[4,8],[5,9],[12,13],[13,14],[14,16],[14,18],[13,20],[11,21],[9,20],[8,18],[8,16],[9,13],[11,10],[16,3],[18,1],[20,0],[22,0],[23,1],[23,2]] }, + '\'': { width: 10, points: [[5,19],[4,20],[5,21],[6,20],[6,18],[5,16],[4,15]] }, + '(': { width: 14, points: [[11,25],[9,23],[7,20],[5,16],[4,11],[4,7],[5,2],[7,-2],[9,-5],[11,-7]] }, + ')': { width: 14, points: [[3,25],[5,23],[7,20],[9,16],[10,11],[10,7],[9,2],[7,-2],[5,-5],[3,-7]] }, + '*': { width: 16, points: [[8,21],[8,9],[-1,-1],[3,18],[13,12],[-1,-1],[13,18],[3,12]] }, + '+': { width: 26, points: [[13,18],[13,0],[-1,-1],[4,9],[22,9]] }, + ',': { width: 10, points: [[6,1],[5,0],[4,1],[5,2],[6,1],[6,-1],[5,-3],[4,-4]] }, + '-': { width: 18, points: [[6,9],[12,9]] }, + '.': { width: 10, points: [[5,2],[4,1],[5,0],[6,1],[5,2]] }, + '/': { width: 22, points: [[20,25],[2,-7]] }, + '0': { width: 20, points: [[9,21],[6,20],[4,17],[3,12],[3,9],[4,4],[6,1],[9,0],[11,0],[14,1],[16,4],[17,9],[17,12],[16,17],[14,20],[11,21],[9,21]] }, + '1': { width: 20, points: [[6,17],[8,18],[11,21],[11,0]] }, + '2': { width: 20, points: [[4,16],[4,17],[5,19],[6,20],[8,21],[12,21],[14,20],[15,19],[16,17],[16,15],[15,13],[13,10],[3,0],[17,0]] }, + '3': { width: 20, points: [[5,21],[16,21],[10,13],[13,13],[15,12],[16,11],[17,8],[17,6],[16,3],[14,1],[11,0],[8,0],[5,1],[4,2],[3,4]] }, + '4': { width: 20, points: [[13,21],[3,7],[18,7],[-1,-1],[13,21],[13,0]] }, + '5': { width: 20, points: [[15,21],[5,21],[4,12],[5,13],[8,14],[11,14],[14,13],[16,11],[17,8],[17,6],[16,3],[14,1],[11,0],[8,0],[5,1],[4,2],[3,4]] }, + '6': { width: 20, points: [[16,18],[15,20],[12,21],[10,21],[7,20],[5,17],[4,12],[4,7],[5,3],[7,1],[10,0],[11,0],[14,1],[16,3],[17,6],[17,7],[16,10],[14,12],[11,13],[10,13],[7,12],[5,10],[4,7]] }, + '7': { width: 20, points: [[17,21],[7,0],[-1,-1],[3,21],[17,21]] }, + '8': { width: 20, points: [[8,21],[5,20],[4,18],[4,16],[5,14],[7,13],[11,12],[14,11],[16,9],[17,7],[17,4],[16,2],[15,1],[12,0],[8,0],[5,1],[4,2],[3,4],[3,7],[4,9],[6,11],[9,12],[13,13],[15,14],[16,16],[16,18],[15,20],[12,21],[8,21]] }, + '9': { width: 20, points: [[16,14],[15,11],[13,9],[10,8],[9,8],[6,9],[4,11],[3,14],[3,15],[4,18],[6,20],[9,21],[10,21],[13,20],[15,18],[16,14],[16,9],[15,4],[13,1],[10,0],[8,0],[5,1],[4,3]] }, + ':': { width: 10, points: [[5,14],[4,13],[5,12],[6,13],[5,14],[-1,-1],[5,2],[4,1],[5,0],[6,1],[5,2]] }, + ';': { width: 10, points: [[5,14],[4,13],[5,12],[6,13],[5,14],[-1,-1],[6,1],[5,0],[4,1],[5,2],[6,1],[6,-1],[5,-3],[4,-4]] }, + '<': { width: 24, points: [[20,18],[4,9],[20,0]] }, + '=': { width: 26, points: [[4,12],[22,12],[-1,-1],[4,6],[22,6]] }, + '>': { width: 24, points: [[4,18],[20,9],[4,0]] }, + '?': { width: 18, points: [[3,16],[3,17],[4,19],[5,20],[7,21],[11,21],[13,20],[14,19],[15,17],[15,15],[14,13],[13,12],[9,10],[9,7],[-1,-1],[9,2],[8,1],[9,0],[10,1],[9,2]] }, + '@': { width: 27, points: [[18,13],[17,15],[15,16],[12,16],[10,15],[9,14],[8,11],[8,8],[9,6],[11,5],[14,5],[16,6],[17,8],[-1,-1],[12,16],[10,14],[9,11],[9,8],[10,6],[11,5],[-1,-1],[18,16],[17,8],[17,6],[19,5],[21,5],[23,7],[24,10],[24,12],[23,15],[22,17],[20,19],[18,20],[15,21],[12,21],[9,20],[7,19],[5,17],[4,15],[3,12],[3,9],[4,6],[5,4],[7,2],[9,1],[12,0],[15,0],[18,1],[20,2],[21,3],[-1,-1],[19,16],[18,8],[18,6],[19,5]] }, + 'A': { width: 18, points: [[9,21],[1,0],[-1,-1],[9,21],[17,0],[-1,-1],[4,7],[14,7]] }, + 'B': { width: 21, points: [[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,15],[17,13],[16,12],[13,11],[-1,-1],[4,11],[13,11],[16,10],[17,9],[18,7],[18,4],[17,2],[16,1],[13,0],[4,0]] }, + 'C': { width: 21, points: [[18,16],[17,18],[15,20],[13,21],[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5]] }, + 'D': { width: 21, points: [[4,21],[4,0],[-1,-1],[4,21],[11,21],[14,20],[16,18],[17,16],[18,13],[18,8],[17,5],[16,3],[14,1],[11,0],[4,0]] }, + 'E': { width: 19, points: [[4,21],[4,0],[-1,-1],[4,21],[17,21],[-1,-1],[4,11],[12,11],[-1,-1],[4,0],[17,0]] }, + 'F': { width: 18, points: [[4,21],[4,0],[-1,-1],[4,21],[17,21],[-1,-1],[4,11],[12,11]] }, + 'G': { width: 21, points: [[18,16],[17,18],[15,20],[13,21],[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[18,8],[-1,-1],[13,8],[18,8]] }, + 'H': { width: 22, points: [[4,21],[4,0],[-1,-1],[18,21],[18,0],[-1,-1],[4,11],[18,11]] }, + 'I': { width: 8, points: [[4,21],[4,0]] }, + 'J': { width: 16, points: [[12,21],[12,5],[11,2],[10,1],[8,0],[6,0],[4,1],[3,2],[2,5],[2,7]] }, + 'K': { width: 21, points: [[4,21],[4,0],[-1,-1],[18,21],[4,7],[-1,-1],[9,12],[18,0]] }, + 'L': { width: 17, points: [[4,21],[4,0],[-1,-1],[4,0],[16,0]] }, + 'M': { width: 24, points: [[4,21],[4,0],[-1,-1],[4,21],[12,0],[-1,-1],[20,21],[12,0],[-1,-1],[20,21],[20,0]] }, + 'N': { width: 22, points: [[4,21],[4,0],[-1,-1],[4,21],[18,0],[-1,-1],[18,21],[18,0]] }, + 'O': { width: 22, points: [[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[19,8],[19,13],[18,16],[17,18],[15,20],[13,21],[9,21]] }, + 'P': { width: 21, points: [[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,14],[17,12],[16,11],[13,10],[4,10]] }, + 'Q': { width: 22, points: [[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[19,8],[19,13],[18,16],[17,18],[15,20],[13,21],[9,21],[-1,-1],[12,4],[18,-2]] }, + 'R': { width: 21, points: [[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,15],[17,13],[16,12],[13,11],[4,11],[-1,-1],[11,11],[18,0]] }, + 'S': { width: 20, points: [[17,18],[15,20],[12,21],[8,21],[5,20],[3,18],[3,16],[4,14],[5,13],[7,12],[13,10],[15,9],[16,8],[17,6],[17,3],[15,1],[12,0],[8,0],[5,1],[3,3]] }, + 'T': { width: 16, points: [[8,21],[8,0],[-1,-1],[1,21],[15,21]] }, + 'U': { width: 22, points: [[4,21],[4,6],[5,3],[7,1],[10,0],[12,0],[15,1],[17,3],[18,6],[18,21]] }, + 'V': { width: 18, points: [[1,21],[9,0],[-1,-1],[17,21],[9,0]] }, + 'W': { width: 24, points: [[2,21],[7,0],[-1,-1],[12,21],[7,0],[-1,-1],[12,21],[17,0],[-1,-1],[22,21],[17,0]] }, + 'X': { width: 20, points: [[3,21],[17,0],[-1,-1],[17,21],[3,0]] }, + 'Y': { width: 18, points: [[1,21],[9,11],[9,0],[-1,-1],[17,21],[9,11]] }, + 'Z': { width: 20, points: [[17,21],[3,0],[-1,-1],[3,21],[17,21],[-1,-1],[3,0],[17,0]] }, + '[': { width: 14, points: [[4,25],[4,-7],[-1,-1],[5,25],[5,-7],[-1,-1],[4,25],[11,25],[-1,-1],[4,-7],[11,-7]] }, + '\\': { width: 14, points: [[0,21],[14,-3]] }, + ']': { width: 14, points: [[9,25],[9,-7],[-1,-1],[10,25],[10,-7],[-1,-1],[3,25],[10,25],[-1,-1],[3,-7],[10,-7]] }, + '^': { width: 16, points: [[6,15],[8,18],[10,15],[-1,-1],[3,12],[8,17],[13,12],[-1,-1],[8,17],[8,0]] }, + '_': { width: 16, points: [[0,-2],[16,-2]] }, + '`': { width: 10, points: [[6,21],[5,20],[4,18],[4,16],[5,15],[6,16],[5,17]] }, + 'a': { width: 19, points: [[15,14],[15,0],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] }, + 'b': { width: 19, points: [[4,21],[4,0],[-1,-1],[4,11],[6,13],[8,14],[11,14],[13,13],[15,11],[16,8],[16,6],[15,3],[13,1],[11,0],[8,0],[6,1],[4,3]] }, + 'c': { width: 18, points: [[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] }, + 'd': { width: 19, points: [[15,21],[15,0],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] }, + 'e': { width: 18, points: [[3,8],[15,8],[15,10],[14,12],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] }, + 'f': { width: 12, points: [[10,21],[8,21],[6,20],[5,17],[5,0],[-1,-1],[2,14],[9,14]] }, + 'g': { width: 19, points: [[15,14],[15,-2],[14,-5],[13,-6],[11,-7],[8,-7],[6,-6],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] }, + 'h': { width: 19, points: [[4,21],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0]] }, + 'i': { width: 8, points: [[3,21],[4,20],[5,21],[4,22],[3,21],[-1,-1],[4,14],[4,0]] }, + 'j': { width: 10, points: [[5,21],[6,20],[7,21],[6,22],[5,21],[-1,-1],[6,14],[6,-3],[5,-6],[3,-7],[1,-7]] }, + 'k': { width: 17, points: [[4,21],[4,0],[-1,-1],[14,14],[4,4],[-1,-1],[8,8],[15,0]] }, + 'l': { width: 8, points: [[4,21],[4,0]] }, + 'm': { width: 30, points: [[4,14],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0],[-1,-1],[15,10],[18,13],[20,14],[23,14],[25,13],[26,10],[26,0]] }, + 'n': { width: 19, points: [[4,14],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0]] }, + 'o': { width: 19, points: [[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3],[16,6],[16,8],[15,11],[13,13],[11,14],[8,14]] }, + 'p': { width: 19, points: [[4,14],[4,-7],[-1,-1],[4,11],[6,13],[8,14],[11,14],[13,13],[15,11],[16,8],[16,6],[15,3],[13,1],[11,0],[8,0],[6,1],[4,3]] }, + 'q': { width: 19, points: [[15,14],[15,-7],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]] }, + 'r': { width: 13, points: [[4,14],[4,0],[-1,-1],[4,8],[5,11],[7,13],[9,14],[12,14]] }, + 's': { width: 17, points: [[14,11],[13,13],[10,14],[7,14],[4,13],[3,11],[4,9],[6,8],[11,7],[13,6],[14,4],[14,3],[13,1],[10,0],[7,0],[4,1],[3,3]] }, + 't': { width: 12, points: [[5,21],[5,4],[6,1],[8,0],[10,0],[-1,-1],[2,14],[9,14]] }, + 'u': { width: 19, points: [[4,14],[4,4],[5,1],[7,0],[10,0],[12,1],[15,4],[-1,-1],[15,14],[15,0]] }, + 'v': { width: 16, points: [[2,14],[8,0],[-1,-1],[14,14],[8,0]] }, + 'w': { width: 22, points: [[3,14],[7,0],[-1,-1],[11,14],[7,0],[-1,-1],[11,14],[15,0],[-1,-1],[19,14],[15,0]] }, + 'x': { width: 17, points: [[3,14],[14,0],[-1,-1],[14,14],[3,0]] }, + 'y': { width: 16, points: [[2,14],[8,0],[-1,-1],[14,14],[8,0],[6,-4],[4,-6],[2,-7],[1,-7]] }, + 'z': { width: 17, points: [[14,14],[3,0],[-1,-1],[3,14],[14,14],[-1,-1],[3,0],[14,0]] }, + '{': { width: 14, points: [[9,25],[7,24],[6,23],[5,21],[5,19],[6,17],[7,16],[8,14],[8,12],[6,10],[-1,-1],[7,24],[6,22],[6,20],[7,18],[8,17],[9,15],[9,13],[8,11],[4,9],[8,7],[9,5],[9,3],[8,1],[7,0],[6,-2],[6,-4],[7,-6],[-1,-1],[6,8],[8,6],[8,4],[7,2],[6,1],[5,-1],[5,-3],[6,-5],[7,-6],[9,-7]] }, + '|': { width: 8, points: [[4,25],[4,-7]] }, + '}': { width: 14, points: [[5,25],[7,24],[8,23],[9,21],[9,19],[8,17],[7,16],[6,14],[6,12],[8,10],[-1,-1],[7,24],[8,22],[8,20],[7,18],[6,17],[5,15],[5,13],[6,11],[10,9],[6,7],[5,5],[5,3],[6,1],[7,0],[8,-2],[8,-4],[7,-6],[-1,-1],[8,8],[6,6],[6,4],[7,2],[8,1],[9,-1],[9,-3],[8,-5],[7,-6],[5,-7]] }, + '~': { width: 24, points: [[3,6],[3,8],[4,11],[6,12],[8,12],[10,11],[14,8],[16,7],[18,7],[20,8],[21,10],[-1,-1],[3,8],[4,10],[6,11],[8,11],[10,10],[14,7],[16,6],[18,6],[20,7],[21,10],[21,12]] } + }; + + $.jqplot.CanvasFontRenderer = function(options) { + options = options || {}; + if (!options.pt2px) { + options.pt2px = 1.5; + } + $.jqplot.CanvasTextRenderer.call(this, options); + }; + + $.jqplot.CanvasFontRenderer.prototype = new $.jqplot.CanvasTextRenderer({}); + $.jqplot.CanvasFontRenderer.prototype.constructor = $.jqplot.CanvasFontRenderer; + + $.jqplot.CanvasFontRenderer.prototype.measure = function(ctx, str) + { + // var fstyle = this.fontStyle+' '+this.fontVariant+' '+this.fontWeight+' '+this.fontSize+' '+this.fontFamily; + var fstyle = this.fontSize+' '+this.fontFamily; + ctx.save(); + ctx.font = fstyle; + var w = ctx.measureText(str).width; + ctx.restore(); + return w; + }; + + $.jqplot.CanvasFontRenderer.prototype.draw = function(ctx, str) + { + var x = 0; + // leave room at bottom for descenders. + var y = this.height*0.72; + //var y = 12; + + ctx.save(); + var tx, ty; + + // 1st quadrant + if ((-Math.PI/2 <= this.angle && this.angle <= 0) || (Math.PI*3/2 <= this.angle && this.angle <= Math.PI*2)) { + tx = 0; + ty = -Math.sin(this.angle) * this.width; + } + // 4th quadrant + else if ((0 < this.angle && this.angle <= Math.PI/2) || (-Math.PI*2 <= this.angle && this.angle <= -Math.PI*3/2)) { + tx = Math.sin(this.angle) * this.height; + ty = 0; + } + // 2nd quadrant + else if ((-Math.PI < this.angle && this.angle < -Math.PI/2) || (Math.PI <= this.angle && this.angle <= Math.PI*3/2)) { + tx = -Math.cos(this.angle) * this.width; + ty = -Math.sin(this.angle) * this.width - Math.cos(this.angle) * this.height; + } + // 3rd quadrant + else if ((-Math.PI*3/2 < this.angle && this.angle < Math.PI) || (Math.PI/2 < this.angle && this.angle < Math.PI)) { + tx = Math.sin(this.angle) * this.height - Math.cos(this.angle)*this.width; + ty = -Math.cos(this.angle) * this.height; + } + ctx.strokeStyle = this.fillStyle; + ctx.fillStyle = this.fillStyle; + // var fstyle = this.fontStyle+' '+this.fontVariant+' '+this.fontWeight+' '+this.fontSize+' '+this.fontFamily; + var fstyle = this.fontSize+' '+this.fontFamily; + ctx.font = fstyle; + ctx.translate(tx, ty); + ctx.rotate(this.angle); + ctx.fillText(str, x, y); + // ctx.strokeText(str, x, y); + + ctx.restore(); + }; + +})(jQuery); \ No newline at end of file diff --git a/plugins/wp-statistics/assets/jqplot/plugins/jqplot.canvasTextRenderer.min.js b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.canvasTextRenderer.min.js new file mode 100644 index 0000000..db9ec50 --- /dev/null +++ b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.canvasTextRenderer.min.js @@ -0,0 +1,4 @@ +/* jqplot 1.0.9 | (c) 2009-2016 Chris Leonello | jqplot.com + jsDate | (c) 2010-2016 Chris Leonello + */ +!function(a){a.jqplot.CanvasTextRenderer=function(b){this.fontStyle="normal",this.fontVariant="normal",this.fontWeight="normal",this.fontSize="10px",this.fontFamily="sans-serif",this.fontStretch=1,this.fillStyle="#666666",this.angle=0,this.textAlign="start",this.textBaseline="alphabetic",this.text,this.width,this.height,this.pt2px=1.28,a.extend(!0,this,b),this.normalizedFontSize=this.normalizeFontSize(this.fontSize),this.setHeight()},a.jqplot.CanvasTextRenderer.prototype.init=function(b){a.extend(!0,this,b),this.normalizedFontSize=this.normalizeFontSize(this.fontSize),this.setHeight()},a.jqplot.CanvasTextRenderer.prototype.normalizeFontSize=function(a){a=String(a);var b=parseFloat(a);return a.indexOf("px")>-1?b/this.pt2px:a.indexOf("pt")>-1?b:a.indexOf("em")>-1?12*b:a.indexOf("%")>-1?12*b/100:b/this.pt2px},a.jqplot.CanvasTextRenderer.prototype.fontWeight2Float=function(a){if(Number(a))return a/400;switch(a){case"normal":return 1;case"bold":return 1.75;case"bolder":return 2.25;case"lighter":return.75;default:return 1}},a.jqplot.CanvasTextRenderer.prototype.getText=function(){return this.text},a.jqplot.CanvasTextRenderer.prototype.setText=function(a,b){return this.text=a,this.setWidth(b),this},a.jqplot.CanvasTextRenderer.prototype.getWidth=function(a){return this.width},a.jqplot.CanvasTextRenderer.prototype.setWidth=function(a,b){return b?this.width=b:this.width=this.measure(a,this.text),this},a.jqplot.CanvasTextRenderer.prototype.getHeight=function(a){return this.height},a.jqplot.CanvasTextRenderer.prototype.setHeight=function(a){return a?this.height=a:this.height=this.normalizedFontSize*this.pt2px,this},a.jqplot.CanvasTextRenderer.prototype.letter=function(a){return this.letters[a]},a.jqplot.CanvasTextRenderer.prototype.ascent=function(){return this.normalizedFontSize},a.jqplot.CanvasTextRenderer.prototype.descent=function(){return 7*this.normalizedFontSize/25},a.jqplot.CanvasTextRenderer.prototype.measure=function(a,b){for(var c=0,d=b.length,e=0;e<d;e++){var f=this.letter(b.charAt(e));f&&(c+=f.width*this.normalizedFontSize/25*this.fontStretch)}return c},a.jqplot.CanvasTextRenderer.prototype.draw=function(a,b){var c=0,d=.72*this.height,e=0,f=b.length,g=this.normalizedFontSize/25;a.save();var h,i;-Math.PI/2<=this.angle&&this.angle<=0||3*Math.PI/2<=this.angle&&this.angle<=2*Math.PI?(h=0,i=-Math.sin(this.angle)*this.width):0<this.angle&&this.angle<=Math.PI/2||2*-Math.PI<=this.angle&&this.angle<=3*-Math.PI/2?(h=Math.sin(this.angle)*this.height,i=0):-Math.PI<this.angle&&this.angle<-Math.PI/2||Math.PI<=this.angle&&this.angle<=3*Math.PI/2?(h=-Math.cos(this.angle)*this.width,i=-Math.sin(this.angle)*this.width-Math.cos(this.angle)*this.height):(3*-Math.PI/2<this.angle&&this.angle<Math.PI||Math.PI/2<this.angle&&this.angle<Math.PI)&&(h=Math.sin(this.angle)*this.height-Math.cos(this.angle)*this.width,i=-Math.cos(this.angle)*this.height),a.strokeStyle=this.fillStyle,a.fillStyle=this.fillStyle,a.translate(h,i),a.rotate(this.angle),a.lineCap="round";var j=this.normalizedFontSize>30?2:2+(30-this.normalizedFontSize)/20;a.lineWidth=j*g*this.fontWeight2Float(this.fontWeight);for(var k=0;k<f;k++){var l=this.letter(b.charAt(k));if(l){a.beginPath();for(var m=1,n=0;n<l.points.length;n++){var o=l.points[n];o[0]!=-1||o[1]!=-1?m?(a.moveTo(c+o[0]*g*this.fontStretch,d-o[1]*g),m=!1):a.lineTo(c+o[0]*g*this.fontStretch,d-o[1]*g):m=1}a.stroke(),c+=l.width*g*this.fontStretch}}return a.restore(),e},a.jqplot.CanvasTextRenderer.prototype.letters={" ":{width:16,points:[]},"!":{width:10,points:[[5,21],[5,7],[-1,-1],[5,2],[4,1],[5,0],[6,1],[5,2]]},'"':{width:16,points:[[4,21],[4,14],[-1,-1],[12,21],[12,14]]},"#":{width:21,points:[[11,25],[4,-7],[-1,-1],[17,25],[10,-7],[-1,-1],[4,12],[18,12],[-1,-1],[3,6],[17,6]]},$:{width:20,points:[[8,25],[8,-4],[-1,-1],[12,25],[12,-4],[-1,-1],[17,18],[15,20],[12,21],[8,21],[5,20],[3,18],[3,16],[4,14],[5,13],[7,12],[13,10],[15,9],[16,8],[17,6],[17,3],[15,1],[12,0],[8,0],[5,1],[3,3]]},"%":{width:24,points:[[21,21],[3,0],[-1,-1],[8,21],[10,19],[10,17],[9,15],[7,14],[5,14],[3,16],[3,18],[4,20],[6,21],[8,21],[10,20],[13,19],[16,19],[19,20],[21,21],[-1,-1],[17,7],[15,6],[14,4],[14,2],[16,0],[18,0],[20,1],[21,3],[21,5],[19,7],[17,7]]},"&":{width:26,points:[[23,12],[23,13],[22,14],[21,14],[20,13],[19,11],[17,6],[15,3],[13,1],[11,0],[7,0],[5,1],[4,2],[3,4],[3,6],[4,8],[5,9],[12,13],[13,14],[14,16],[14,18],[13,20],[11,21],[9,20],[8,18],[8,16],[9,13],[11,10],[16,3],[18,1],[20,0],[22,0],[23,1],[23,2]]},"'":{width:10,points:[[5,19],[4,20],[5,21],[6,20],[6,18],[5,16],[4,15]]},"(":{width:14,points:[[11,25],[9,23],[7,20],[5,16],[4,11],[4,7],[5,2],[7,-2],[9,-5],[11,-7]]},")":{width:14,points:[[3,25],[5,23],[7,20],[9,16],[10,11],[10,7],[9,2],[7,-2],[5,-5],[3,-7]]},"*":{width:16,points:[[8,21],[8,9],[-1,-1],[3,18],[13,12],[-1,-1],[13,18],[3,12]]},"+":{width:26,points:[[13,18],[13,0],[-1,-1],[4,9],[22,9]]},",":{width:10,points:[[6,1],[5,0],[4,1],[5,2],[6,1],[6,-1],[5,-3],[4,-4]]},"-":{width:18,points:[[6,9],[12,9]]},".":{width:10,points:[[5,2],[4,1],[5,0],[6,1],[5,2]]},"/":{width:22,points:[[20,25],[2,-7]]},0:{width:20,points:[[9,21],[6,20],[4,17],[3,12],[3,9],[4,4],[6,1],[9,0],[11,0],[14,1],[16,4],[17,9],[17,12],[16,17],[14,20],[11,21],[9,21]]},1:{width:20,points:[[6,17],[8,18],[11,21],[11,0]]},2:{width:20,points:[[4,16],[4,17],[5,19],[6,20],[8,21],[12,21],[14,20],[15,19],[16,17],[16,15],[15,13],[13,10],[3,0],[17,0]]},3:{width:20,points:[[5,21],[16,21],[10,13],[13,13],[15,12],[16,11],[17,8],[17,6],[16,3],[14,1],[11,0],[8,0],[5,1],[4,2],[3,4]]},4:{width:20,points:[[13,21],[3,7],[18,7],[-1,-1],[13,21],[13,0]]},5:{width:20,points:[[15,21],[5,21],[4,12],[5,13],[8,14],[11,14],[14,13],[16,11],[17,8],[17,6],[16,3],[14,1],[11,0],[8,0],[5,1],[4,2],[3,4]]},6:{width:20,points:[[16,18],[15,20],[12,21],[10,21],[7,20],[5,17],[4,12],[4,7],[5,3],[7,1],[10,0],[11,0],[14,1],[16,3],[17,6],[17,7],[16,10],[14,12],[11,13],[10,13],[7,12],[5,10],[4,7]]},7:{width:20,points:[[17,21],[7,0],[-1,-1],[3,21],[17,21]]},8:{width:20,points:[[8,21],[5,20],[4,18],[4,16],[5,14],[7,13],[11,12],[14,11],[16,9],[17,7],[17,4],[16,2],[15,1],[12,0],[8,0],[5,1],[4,2],[3,4],[3,7],[4,9],[6,11],[9,12],[13,13],[15,14],[16,16],[16,18],[15,20],[12,21],[8,21]]},9:{width:20,points:[[16,14],[15,11],[13,9],[10,8],[9,8],[6,9],[4,11],[3,14],[3,15],[4,18],[6,20],[9,21],[10,21],[13,20],[15,18],[16,14],[16,9],[15,4],[13,1],[10,0],[8,0],[5,1],[4,3]]},":":{width:10,points:[[5,14],[4,13],[5,12],[6,13],[5,14],[-1,-1],[5,2],[4,1],[5,0],[6,1],[5,2]]},";":{width:10,points:[[5,14],[4,13],[5,12],[6,13],[5,14],[-1,-1],[6,1],[5,0],[4,1],[5,2],[6,1],[6,-1],[5,-3],[4,-4]]},"<":{width:24,points:[[20,18],[4,9],[20,0]]},"=":{width:26,points:[[4,12],[22,12],[-1,-1],[4,6],[22,6]]},">":{width:24,points:[[4,18],[20,9],[4,0]]},"?":{width:18,points:[[3,16],[3,17],[4,19],[5,20],[7,21],[11,21],[13,20],[14,19],[15,17],[15,15],[14,13],[13,12],[9,10],[9,7],[-1,-1],[9,2],[8,1],[9,0],[10,1],[9,2]]},"@":{width:27,points:[[18,13],[17,15],[15,16],[12,16],[10,15],[9,14],[8,11],[8,8],[9,6],[11,5],[14,5],[16,6],[17,8],[-1,-1],[12,16],[10,14],[9,11],[9,8],[10,6],[11,5],[-1,-1],[18,16],[17,8],[17,6],[19,5],[21,5],[23,7],[24,10],[24,12],[23,15],[22,17],[20,19],[18,20],[15,21],[12,21],[9,20],[7,19],[5,17],[4,15],[3,12],[3,9],[4,6],[5,4],[7,2],[9,1],[12,0],[15,0],[18,1],[20,2],[21,3],[-1,-1],[19,16],[18,8],[18,6],[19,5]]},A:{width:18,points:[[9,21],[1,0],[-1,-1],[9,21],[17,0],[-1,-1],[4,7],[14,7]]},B:{width:21,points:[[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,15],[17,13],[16,12],[13,11],[-1,-1],[4,11],[13,11],[16,10],[17,9],[18,7],[18,4],[17,2],[16,1],[13,0],[4,0]]},C:{width:21,points:[[18,16],[17,18],[15,20],[13,21],[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5]]},D:{width:21,points:[[4,21],[4,0],[-1,-1],[4,21],[11,21],[14,20],[16,18],[17,16],[18,13],[18,8],[17,5],[16,3],[14,1],[11,0],[4,0]]},E:{width:19,points:[[4,21],[4,0],[-1,-1],[4,21],[17,21],[-1,-1],[4,11],[12,11],[-1,-1],[4,0],[17,0]]},F:{width:18,points:[[4,21],[4,0],[-1,-1],[4,21],[17,21],[-1,-1],[4,11],[12,11]]},G:{width:21,points:[[18,16],[17,18],[15,20],[13,21],[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[18,8],[-1,-1],[13,8],[18,8]]},H:{width:22,points:[[4,21],[4,0],[-1,-1],[18,21],[18,0],[-1,-1],[4,11],[18,11]]},I:{width:8,points:[[4,21],[4,0]]},J:{width:16,points:[[12,21],[12,5],[11,2],[10,1],[8,0],[6,0],[4,1],[3,2],[2,5],[2,7]]},K:{width:21,points:[[4,21],[4,0],[-1,-1],[18,21],[4,7],[-1,-1],[9,12],[18,0]]},L:{width:17,points:[[4,21],[4,0],[-1,-1],[4,0],[16,0]]},M:{width:24,points:[[4,21],[4,0],[-1,-1],[4,21],[12,0],[-1,-1],[20,21],[12,0],[-1,-1],[20,21],[20,0]]},N:{width:22,points:[[4,21],[4,0],[-1,-1],[4,21],[18,0],[-1,-1],[18,21],[18,0]]},O:{width:22,points:[[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[19,8],[19,13],[18,16],[17,18],[15,20],[13,21],[9,21]]},P:{width:21,points:[[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,14],[17,12],[16,11],[13,10],[4,10]]},Q:{width:22,points:[[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[19,8],[19,13],[18,16],[17,18],[15,20],[13,21],[9,21],[-1,-1],[12,4],[18,-2]]},R:{width:21,points:[[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,15],[17,13],[16,12],[13,11],[4,11],[-1,-1],[11,11],[18,0]]},S:{width:20,points:[[17,18],[15,20],[12,21],[8,21],[5,20],[3,18],[3,16],[4,14],[5,13],[7,12],[13,10],[15,9],[16,8],[17,6],[17,3],[15,1],[12,0],[8,0],[5,1],[3,3]]},T:{width:16,points:[[8,21],[8,0],[-1,-1],[1,21],[15,21]]},U:{width:22,points:[[4,21],[4,6],[5,3],[7,1],[10,0],[12,0],[15,1],[17,3],[18,6],[18,21]]},V:{width:18,points:[[1,21],[9,0],[-1,-1],[17,21],[9,0]]},W:{width:24,points:[[2,21],[7,0],[-1,-1],[12,21],[7,0],[-1,-1],[12,21],[17,0],[-1,-1],[22,21],[17,0]]},X:{width:20,points:[[3,21],[17,0],[-1,-1],[17,21],[3,0]]},Y:{width:18,points:[[1,21],[9,11],[9,0],[-1,-1],[17,21],[9,11]]},Z:{width:20,points:[[17,21],[3,0],[-1,-1],[3,21],[17,21],[-1,-1],[3,0],[17,0]]},"[":{width:14,points:[[4,25],[4,-7],[-1,-1],[5,25],[5,-7],[-1,-1],[4,25],[11,25],[-1,-1],[4,-7],[11,-7]]},"\\":{width:14,points:[[0,21],[14,-3]]},"]":{width:14,points:[[9,25],[9,-7],[-1,-1],[10,25],[10,-7],[-1,-1],[3,25],[10,25],[-1,-1],[3,-7],[10,-7]]},"^":{width:16,points:[[6,15],[8,18],[10,15],[-1,-1],[3,12],[8,17],[13,12],[-1,-1],[8,17],[8,0]]},_:{width:16,points:[[0,-2],[16,-2]]},"`":{width:10,points:[[6,21],[5,20],[4,18],[4,16],[5,15],[6,16],[5,17]]},a:{width:19,points:[[15,14],[15,0],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},b:{width:19,points:[[4,21],[4,0],[-1,-1],[4,11],[6,13],[8,14],[11,14],[13,13],[15,11],[16,8],[16,6],[15,3],[13,1],[11,0],[8,0],[6,1],[4,3]]},c:{width:18,points:[[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},d:{width:19,points:[[15,21],[15,0],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},e:{width:18,points:[[3,8],[15,8],[15,10],[14,12],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},f:{width:12,points:[[10,21],[8,21],[6,20],[5,17],[5,0],[-1,-1],[2,14],[9,14]]},g:{width:19,points:[[15,14],[15,-2],[14,-5],[13,-6],[11,-7],[8,-7],[6,-6],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},h:{width:19,points:[[4,21],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0]]},i:{width:8,points:[[3,21],[4,20],[5,21],[4,22],[3,21],[-1,-1],[4,14],[4,0]]},j:{width:10,points:[[5,21],[6,20],[7,21],[6,22],[5,21],[-1,-1],[6,14],[6,-3],[5,-6],[3,-7],[1,-7]]},k:{width:17,points:[[4,21],[4,0],[-1,-1],[14,14],[4,4],[-1,-1],[8,8],[15,0]]},l:{width:8,points:[[4,21],[4,0]]},m:{width:30,points:[[4,14],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0],[-1,-1],[15,10],[18,13],[20,14],[23,14],[25,13],[26,10],[26,0]]},n:{width:19,points:[[4,14],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0]]},o:{width:19,points:[[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3],[16,6],[16,8],[15,11],[13,13],[11,14],[8,14]]},p:{width:19,points:[[4,14],[4,-7],[-1,-1],[4,11],[6,13],[8,14],[11,14],[13,13],[15,11],[16,8],[16,6],[15,3],[13,1],[11,0],[8,0],[6,1],[4,3]]},q:{width:19,points:[[15,14],[15,-7],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},r:{width:13,points:[[4,14],[4,0],[-1,-1],[4,8],[5,11],[7,13],[9,14],[12,14]]},s:{width:17,points:[[14,11],[13,13],[10,14],[7,14],[4,13],[3,11],[4,9],[6,8],[11,7],[13,6],[14,4],[14,3],[13,1],[10,0],[7,0],[4,1],[3,3]]},t:{width:12,points:[[5,21],[5,4],[6,1],[8,0],[10,0],[-1,-1],[2,14],[9,14]]},u:{width:19,points:[[4,14],[4,4],[5,1],[7,0],[10,0],[12,1],[15,4],[-1,-1],[15,14],[15,0]]},v:{width:16,points:[[2,14],[8,0],[-1,-1],[14,14],[8,0]]},w:{width:22,points:[[3,14],[7,0],[-1,-1],[11,14],[7,0],[-1,-1],[11,14],[15,0],[-1,-1],[19,14],[15,0]]},x:{width:17,points:[[3,14],[14,0],[-1,-1],[14,14],[3,0]]},y:{width:16,points:[[2,14],[8,0],[-1,-1],[14,14],[8,0],[6,-4],[4,-6],[2,-7],[1,-7]]},z:{width:17,points:[[14,14],[3,0],[-1,-1],[3,14],[14,14],[-1,-1],[3,0],[14,0]]},"{":{width:14,points:[[9,25],[7,24],[6,23],[5,21],[5,19],[6,17],[7,16],[8,14],[8,12],[6,10],[-1,-1],[7,24],[6,22],[6,20],[7,18],[8,17],[9,15],[9,13],[8,11],[4,9],[8,7],[9,5],[9,3],[8,1],[7,0],[6,-2],[6,-4],[7,-6],[-1,-1],[6,8],[8,6],[8,4],[7,2],[6,1],[5,-1],[5,-3],[6,-5],[7,-6],[9,-7]]},"|":{width:8,points:[[4,25],[4,-7]]},"}":{width:14,points:[[5,25],[7,24],[8,23],[9,21],[9,19],[8,17],[7,16],[6,14],[6,12],[8,10],[-1,-1],[7,24],[8,22],[8,20],[7,18],[6,17],[5,15],[5,13],[6,11],[10,9],[6,7],[5,5],[5,3],[6,1],[7,0],[8,-2],[8,-4],[7,-6],[-1,-1],[8,8],[6,6],[6,4],[7,2],[8,1],[9,-1],[9,-3],[8,-5],[7,-6],[5,-7]]},"~":{width:24,points:[[3,6],[3,8],[4,11],[6,12],[8,12],[10,11],[14,8],[16,7],[18,7],[20,8],[21,10],[-1,-1],[3,8],[4,10],[6,11],[8,11],[10,10],[14,7],[16,6],[18,6],[20,7],[21,10],[21,12]]}},a.jqplot.CanvasFontRenderer=function(b){b=b||{},b.pt2px||(b.pt2px=1.5),a.jqplot.CanvasTextRenderer.call(this,b)},a.jqplot.CanvasFontRenderer.prototype=new a.jqplot.CanvasTextRenderer({}),a.jqplot.CanvasFontRenderer.prototype.constructor=a.jqplot.CanvasFontRenderer,a.jqplot.CanvasFontRenderer.prototype.measure=function(a,b){var c=this.fontSize+" "+this.fontFamily;a.save(),a.font=c;var d=a.measureText(b).width;return a.restore(),d},a.jqplot.CanvasFontRenderer.prototype.draw=function(a,b){var c=0,d=.72*this.height;a.save();var e,f;-Math.PI/2<=this.angle&&this.angle<=0||3*Math.PI/2<=this.angle&&this.angle<=2*Math.PI?(e=0,f=-Math.sin(this.angle)*this.width):0<this.angle&&this.angle<=Math.PI/2||2*-Math.PI<=this.angle&&this.angle<=3*-Math.PI/2?(e=Math.sin(this.angle)*this.height,f=0):-Math.PI<this.angle&&this.angle<-Math.PI/2||Math.PI<=this.angle&&this.angle<=3*Math.PI/2?(e=-Math.cos(this.angle)*this.width,f=-Math.sin(this.angle)*this.width-Math.cos(this.angle)*this.height):(3*-Math.PI/2<this.angle&&this.angle<Math.PI||Math.PI/2<this.angle&&this.angle<Math.PI)&&(e=Math.sin(this.angle)*this.height-Math.cos(this.angle)*this.width,f=-Math.cos(this.angle)*this.height),a.strokeStyle=this.fillStyle,a.fillStyle=this.fillStyle;var g=this.fontSize+" "+this.fontFamily;a.font=g,a.translate(e,f),a.rotate(this.angle),a.fillText(b,c,d),a.restore()}}(jQuery); \ No newline at end of file diff --git a/plugins/wp-statistics/assets/jqplot/plugins/jqplot.dateAxisRenderer.js b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.dateAxisRenderer.js new file mode 100644 index 0000000..3465db3 --- /dev/null +++ b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.dateAxisRenderer.js @@ -0,0 +1,741 @@ +/** + * jqPlot + * Pure JavaScript plotting plugin using jQuery + * + * Version: 1.0.9 + * Revision: c465c44 + * + * Copyright (c) 2009-2016 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot dot com or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * sprintf functions contained in jqplot.sprintf.js by Ash Searle: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function($) { + /** + * Class: $.jqplot.DateAxisRenderer + * A plugin for a jqPlot to render an axis as a series of date values. + * This renderer has no options beyond those supplied by the <Axis> class. + * It supplies its own tick formatter, so the tickOptions.formatter option + * should not be overridden. + * + * Thanks to Ken Synder for his enhanced Date instance methods which are + * included with this code <http://kendsnyder.com/sandbox/date/>. + * + * To use this renderer, include the plugin in your source + * > <script type="text/javascript" language="javascript" src="plugins/jqplot.dateAxisRenderer.js"></script> + * + * and supply the appropriate options to your plot + * + * > {axes:{xaxis:{renderer:$.jqplot.DateAxisRenderer}}} + * + * Dates can be passed into the axis in almost any recognizable value and + * will be parsed. They will be rendered on the axis in the format + * specified by tickOptions.formatString. e.g. tickOptions.formatString = '%Y-%m-%d'. + * + * Accecptable format codes + * are: + * + * > Code Result Description + * > == Years == + * > %Y 2008 Four-digit year + * > %y 08 Two-digit year + * > == Months == + * > %m 09 Two-digit month + * > %#m 9 One or two-digit month + * > %B September Full month name + * > %b Sep Abbreviated month name + * > == Days == + * > %d 05 Two-digit day of month + * > %#d 5 One or two-digit day of month + * > %e 5 One or two-digit day of month + * > %A Sunday Full name of the day of the week + * > %a Sun Abbreviated name of the day of the week + * > %w 0 Number of the day of the week (0 = Sunday, 6 = Saturday) + * > %o th The ordinal suffix string following the day of the month + * > == Hours == + * > %H 23 Hours in 24-hour format (two digits) + * > %#H 3 Hours in 24-hour integer format (one or two digits) + * > %I 11 Hours in 12-hour format (two digits) + * > %#I 3 Hours in 12-hour integer format (one or two digits) + * > %p PM AM or PM + * > == Minutes == + * > %M 09 Minutes (two digits) + * > %#M 9 Minutes (one or two digits) + * > == Seconds == + * > %S 02 Seconds (two digits) + * > %#S 2 Seconds (one or two digits) + * > %s 1206567625723 Unix timestamp (Seconds past 1970-01-01 00:00:00) + * > == Milliseconds == + * > %N 008 Milliseconds (three digits) + * > %#N 8 Milliseconds (one to three digits) + * > == Timezone == + * > %O 360 difference in minutes between local time and GMT + * > %Z Mountain Standard Time Name of timezone as reported by browser + * > %G -06:00 Hours and minutes between GMT + * > == Shortcuts == + * > %F 2008-03-26 %Y-%m-%d + * > %T 05:06:30 %H:%M:%S + * > %X 05:06:30 %H:%M:%S + * > %x 03/26/08 %m/%d/%y + * > %D 03/26/08 %m/%d/%y + * > %#c Wed Mar 26 15:31:00 2008 %a %b %e %H:%M:%S %Y + * > %v 3-Sep-2008 %e-%b-%Y + * > %R 15:31 %H:%M + * > %r 3:31:00 PM %I:%M:%S %p + * > == Characters == + * > %n \n Newline + * > %t \t Tab + * > %% % Percent Symbol + */ + $.jqplot.DateAxisRenderer = function() { + $.jqplot.LinearAxisRenderer.call(this); + this.date = new $.jsDate(); + }; + + var second = 1000; + var minute = 60 * second; + var hour = 60 * minute; + var day = 24 * hour; + var week = 7 * day; + + // these are less definitive + var month = 30.4368499 * day; + var year = 365.242199 * day; + + var daysInMonths = [31,28,31,30,31,30,31,30,31,30,31,30]; + // array of consistent nice intervals. Longer intervals + // will depend on days in month, days in year, etc. + var niceFormatStrings = ['%M:%S.%#N', '%M:%S.%#N', '%M:%S.%#N', '%M:%S', '%M:%S', '%M:%S', '%M:%S', '%H:%M:%S', '%H:%M:%S', '%H:%M', '%H:%M', '%H:%M', '%H:%M', '%H:%M', '%H:%M', '%a %H:%M', '%a %H:%M', '%b %e %H:%M', '%b %e %H:%M', '%b %e %H:%M', '%b %e %H:%M', '%v', '%v', '%v', '%v', '%v', '%v', '%v']; + var niceIntervals = [0.1*second, 0.2*second, 0.5*second, second, 2*second, 5*second, 10*second, 15*second, 30*second, minute, 2*minute, 5*minute, 10*minute, 15*minute, 30*minute, hour, 2*hour, 4*hour, 6*hour, 8*hour, 12*hour, day, 2*day, 3*day, 4*day, 5*day, week, 2*week]; + + var niceMonthlyIntervals = []; + + function bestDateInterval(min, max, titarget) { + // iterate through niceIntervals to find one closest to titarget + var badness = Number.MAX_VALUE; + var temp, bestTi, bestfmt; + for (var i=0, l=niceIntervals.length; i < l; i++) { + temp = Math.abs(titarget - niceIntervals[i]); + if (temp < badness) { + badness = temp; + bestTi = niceIntervals[i]; + bestfmt = niceFormatStrings[i]; + } + } + + return [bestTi, bestfmt]; + } + + $.jqplot.DateAxisRenderer.prototype = new $.jqplot.LinearAxisRenderer(); + $.jqplot.DateAxisRenderer.prototype.constructor = $.jqplot.DateAxisRenderer; + + $.jqplot.DateTickFormatter = function(format, val) { + if (!format) { + format = '%Y/%m/%d'; + } + return $.jsDate.strftime(val, format); + }; + + $.jqplot.DateAxisRenderer.prototype.init = function(options){ + // prop: tickRenderer + // A class of a rendering engine for creating the ticks labels displayed on the plot, + // See <$.jqplot.AxisTickRenderer>. + // this.tickRenderer = $.jqplot.AxisTickRenderer; + // this.labelRenderer = $.jqplot.AxisLabelRenderer; + this.tickOptions.formatter = $.jqplot.DateTickFormatter; + // prop: tickInset + // Controls the amount to inset the first and last ticks from + // the edges of the grid, in multiples of the tick interval. + // 0 is no inset, 0.5 is one half a tick interval, 1 is a full + // tick interval, etc. + this.tickInset = 0; + // prop: drawBaseline + // True to draw the axis baseline. + this.drawBaseline = true; + // prop: baselineWidth + // width of the baseline in pixels. + this.baselineWidth = null; + // prop: baselineColor + // CSS color spec for the baseline. + this.baselineColor = null; + this.daTickInterval = null; + this._daTickInterval = null; + + $.extend(true, this, options); + + var db = this._dataBounds, + stats, + sum, + s, + d, + pd, + sd, + intv; + + // Go through all the series attached to this axis and find + // the min/max bounds for this axis. + for (var i=0; i<this._series.length; i++) { + stats = {intervals:[], frequencies:{}, sortedIntervals:[], min:null, max:null, mean:null}; + sum = 0; + s = this._series[i]; + d = s.data; + pd = s._plotData; + sd = s._stackData; + intv = 0; + + for (var j=0; j<d.length; j++) { + if (this.name == 'xaxis' || this.name == 'x2axis') { + d[j][0] = new $.jsDate(d[j][0]).getTime(); + pd[j][0] = new $.jsDate(pd[j][0]).getTime(); + sd[j][0] = new $.jsDate(sd[j][0]).getTime(); + if ((d[j][0] != null && d[j][0] < db.min) || db.min == null) { + db.min = d[j][0]; + } + if ((d[j][0] != null && d[j][0] > db.max) || db.max == null) { + db.max = d[j][0]; + } + if (j>0) { + intv = Math.abs(d[j][0] - d[j-1][0]); + stats.intervals.push(intv); + if (stats.frequencies.hasOwnProperty(intv)) { + stats.frequencies[intv] += 1; + } + else { + stats.frequencies[intv] = 1; + } + } + sum += intv; + + } + else { + d[j][1] = new $.jsDate(d[j][1]).getTime(); + pd[j][1] = new $.jsDate(pd[j][1]).getTime(); + sd[j][1] = new $.jsDate(sd[j][1]).getTime(); + if ((d[j][1] != null && d[j][1] < db.min) || db.min == null) { + db.min = d[j][1]; + } + if ((d[j][1] != null && d[j][1] > db.max) || db.max == null) { + db.max = d[j][1]; + } + if (j>0) { + intv = Math.abs(d[j][1] - d[j-1][1]); + stats.intervals.push(intv); + if (stats.frequencies.hasOwnProperty(intv)) { + stats.frequencies[intv] += 1; + } + else { + stats.frequencies[intv] = 1; + } + } + } + sum += intv; + } + + if (s.renderer.bands) { + if (s.renderer.bands.hiData.length) { + var bd = s.renderer.bands.hiData; + for (var j=0, l=bd.length; j < l; j++) { + if (this.name === 'xaxis' || this.name === 'x2axis') { + bd[j][0] = new $.jsDate(bd[j][0]).getTime(); + if ((bd[j][0] != null && bd[j][0] > db.max) || db.max == null) { + db.max = bd[j][0]; + } + } + else { + bd[j][1] = new $.jsDate(bd[j][1]).getTime(); + if ((bd[j][1] != null && bd[j][1] > db.max) || db.max == null) { + db.max = bd[j][1]; + } + } + } + } + if (s.renderer.bands.lowData.length) { + var bd = s.renderer.bands.lowData; + for (var j=0, l=bd.length; j < l; j++) { + if (this.name === 'xaxis' || this.name === 'x2axis') { + bd[j][0] = new $.jsDate(bd[j][0]).getTime(); + if ((bd[j][0] != null && bd[j][0] < db.min) || db.min == null) { + db.min = bd[j][0]; + } + } + else { + bd[j][1] = new $.jsDate(bd[j][1]).getTime(); + if ((bd[j][1] != null && bd[j][1] < db.min) || db.min == null) { + db.min = bd[j][1]; + } + } + } + } + } + + var tempf = 0, + tempn=0; + for (var n in stats.frequencies) { + stats.sortedIntervals.push({interval:n, frequency:stats.frequencies[n]}); + } + stats.sortedIntervals.sort(function(a, b){ + return b.frequency - a.frequency; + }); + + stats.min = $.jqplot.arrayMin(stats.intervals); + stats.max = $.jqplot.arrayMax(stats.intervals); + stats.mean = sum/d.length; + this._intervalStats.push(stats); + stats = sum = s = d = pd = sd = null; + } + db = null; + + }; + + // called with scope of an axis + $.jqplot.DateAxisRenderer.prototype.reset = function() { + this.min = this._options.min; + this.max = this._options.max; + this.tickInterval = this._options.tickInterval; + this.numberTicks = this._options.numberTicks; + this._autoFormatString = ''; + if (this._overrideFormatString && this.tickOptions && this.tickOptions.formatString) { + this.tickOptions.formatString = ''; + } + this.daTickInterval = this._daTickInterval; + // this._ticks = this.__ticks; + }; + + $.jqplot.DateAxisRenderer.prototype.createTicks = function(plot) { + // we're are operating on an axis here + var ticks = this._ticks; + var userTicks = this.ticks; + var name = this.name; + // databounds were set on axis initialization. + var db = this._dataBounds; + var iv = this._intervalStats; + var dim = (this.name.charAt(0) === 'x') ? this._plotDimensions.width : this._plotDimensions.height; + var interval; + var min, max; + var pos1, pos2; + var tt, i; + var threshold = 30; + var insetMult = 1; + var daTickInterval = null; + + // if user specified a tick interval, convert to usable. + if (this.tickInterval != null) + { + // if interval is a number or can be converted to one, use it. + // Assume it is in SECONDS!!! + if (Number(this.tickInterval)) { + daTickInterval = [Number(this.tickInterval), 'seconds']; + } + // else, parse out something we can build from. + else if (typeof this.tickInterval == "string") { + var parts = this.tickInterval.split(' '); + if (parts.length == 1) { + daTickInterval = [1, parts[0]]; + } + else if (parts.length == 2) { + daTickInterval = [parts[0], parts[1]]; + } + } + } + + var tickInterval = this.tickInterval; + + // if we already have ticks, use them. + // ticks must be in order of increasing value. + + min = new $.jsDate((this.min != null) ? this.min : db.min).getTime(); + max = new $.jsDate((this.max != null) ? this.max : db.max).getTime(); + + // see if we're zooming. if we are, don't use the min and max we're given, + // but compute some nice ones. They will be reset later. + + var cursor = plot.plugins.cursor; + + if (cursor && cursor._zoom && cursor._zoom.zooming) { + this.min = null; + this.max = null; + } + + var range = max - min; + + if (this.tickOptions == null || !this.tickOptions.formatString) { + this._overrideFormatString = true; + } + + if (userTicks.length) { + // ticks could be 1D or 2D array of [val, val, ,,,] or [[val, label], [val, label], ...] or mixed + for (i=0; i<userTicks.length; i++){ + var ut = userTicks[i]; + var t = new this.tickRenderer(this.tickOptions); + if (ut.constructor == Array) { + t.value = new $.jsDate(ut[0]).getTime(); + t.label = ut[1]; + if (!this.showTicks) { + t.showLabel = false; + t.showMark = false; + } + else if (!this.showTickMarks) { + t.showMark = false; + } + t.setTick(t.value, this.name); + this._ticks.push(t); + } + + else { + t.value = new $.jsDate(ut).getTime(); + if (!this.showTicks) { + t.showLabel = false; + t.showMark = false; + } + else if (!this.showTickMarks) { + t.showMark = false; + } + t.setTick(t.value, this.name); + this._ticks.push(t); + } + } + this.numberTicks = userTicks.length; + this.min = this._ticks[0].value; + this.max = this._ticks[this.numberTicks-1].value; + this.daTickInterval = [(this.max - this.min) / (this.numberTicks - 1)/1000, 'seconds']; + } + + //////// + // We don't have any ticks yet, let's make some! + //////// + + // special case when there is only one point, make three tick marks to center the point + else if (this.min == null && this.max == null && db.min == db.max) + { + var onePointOpts = $.extend(true, {}, this.tickOptions, {name: this.name, value: null}); + var delta = 300000; + this.min = db.min - delta; + this.max = db.max + delta; + this.numberTicks = 3; + + for(var i=this.min;i<=this.max;i+= delta) + { + onePointOpts.value = i; + + var t = new this.tickRenderer(onePointOpts); + + if (this._overrideFormatString && this._autoFormatString != '') { + t.formatString = this._autoFormatString; + } + + t.showLabel = false; + t.showMark = false; + + this._ticks.push(t); + } + + if(this.showTicks) { + this._ticks[1].showLabel = true; + } + if(this.showTickMarks) { + this._ticks[1].showTickMarks = true; + } + } + // if user specified min and max are null, we set those to make best ticks. + else if (this.min == null && this.max == null) { + + var opts = $.extend(true, {}, this.tickOptions, {name: this.name, value: null}); + + // want to find a nice interval + var nttarget, + titarget; + + // if no tickInterval or numberTicks options specified, make a good guess. + if (!this.tickInterval && !this.numberTicks) { + var tdim = Math.max(dim, threshold+1); + // how many ticks to put on the axis? + // date labels tend to be long. If ticks not rotated, + // don't use too many and have a high spacing factor. + // If we are rotating ticks, use a lower factor. + var spacingFactor = 115; + if (this.tickRenderer === $.jqplot.CanvasAxisTickRenderer && this.tickOptions.angle) { + spacingFactor = 115 - 40 * Math.abs(Math.sin(this.tickOptions.angle/180*Math.PI)); + } + + nttarget = Math.ceil((tdim-threshold)/spacingFactor + 1); + titarget = (max - min) / (nttarget - 1); + } + + // If tickInterval is specified, we'll try to honor it. + // Not guaranteed to get this interval, but we'll get as close as + // we can. + // tickInterval will be used before numberTicks, that is if + // both are specified, numberTicks will be ignored. + else if (this.tickInterval) { + titarget = new $.jsDate(0).add(daTickInterval[0], daTickInterval[1]).getTime(); + } + + // if numberTicks specified, try to honor it. + // Not guaranteed, but will try to get close. + else if (this.numberTicks) { + nttarget = this.numberTicks; + titarget = (max - min) / (nttarget - 1); + } + + // If we can use an interval of 2 weeks or less, pick best one + if (titarget <= 19*day) { + var ret = bestDateInterval(min, max, titarget); + var tempti = ret[0]; + this._autoFormatString = ret[1]; + + min = new $.jsDate(min); + min = Math.floor((min.getTime() - min.getUtcOffset())/tempti) * tempti + min.getUtcOffset(); + + nttarget = Math.ceil((max - min) / tempti) + 1; + this.min = min; + this.max = min + (nttarget - 1) * tempti; + + // if max is less than max, add an interval + if (this.max < max) { + this.max += tempti; + nttarget += 1; + } + this.tickInterval = tempti; + this.numberTicks = nttarget; + + for (var i=0; i<nttarget; i++) { + opts.value = this.min + i * tempti; + t = new this.tickRenderer(opts); + + if (this._overrideFormatString && this._autoFormatString != '') { + t.formatString = this._autoFormatString; + } + if (!this.showTicks) { + t.showLabel = false; + t.showMark = false; + } + else if (!this.showTickMarks) { + t.showMark = false; + } + this._ticks.push(t); + } + + insetMult = this.tickInterval; + } + + // should we use a monthly interval? + else if (titarget <= 9 * month) { + + this._autoFormatString = '%v'; + + // how many months in an interval? + var intv = Math.round(titarget/month); + if (intv < 1) { + intv = 1; + } + else if (intv > 6) { + intv = 6; + } + + // figure out the starting month and ending month. + var mstart = new $.jsDate(min).setDate(1).setHours(0,0,0,0); + + // See if max ends exactly on a month + var tempmend = new $.jsDate(max); + var mend = new $.jsDate(max).setDate(1).setHours(0,0,0,0); + + if (tempmend.getTime() !== mend.getTime()) { + mend = mend.add(1, 'month'); + } + + var nmonths = mend.diff(mstart, 'month'); + + nttarget = Math.ceil(nmonths/intv) + 1; + + this.min = mstart.getTime(); + this.max = mstart.clone().add((nttarget - 1) * intv, 'month').getTime(); + this.numberTicks = nttarget; + + for (var i=0; i<nttarget; i++) { + if (i === 0) { + opts.value = mstart.getTime(); + } + else { + opts.value = mstart.add(intv, 'month').getTime(); + } + t = new this.tickRenderer(opts); + + if (this._overrideFormatString && this._autoFormatString != '') { + t.formatString = this._autoFormatString; + } + if (!this.showTicks) { + t.showLabel = false; + t.showMark = false; + } + else if (!this.showTickMarks) { + t.showMark = false; + } + this._ticks.push(t); + } + + insetMult = intv * month; + } + + // use yearly intervals + else { + + this._autoFormatString = '%v'; + + // how many years in an interval? + var intv = Math.round(titarget/year); + if (intv < 1) { + intv = 1; + } + + // figure out the starting and ending years. + var mstart = new $.jsDate(min).setMonth(0, 1).setHours(0,0,0,0); + var mend = new $.jsDate(max).add(1, 'year').setMonth(0, 1).setHours(0,0,0,0); + + var nyears = mend.diff(mstart, 'year'); + + nttarget = Math.ceil(nyears/intv) + 1; + + this.min = mstart.getTime(); + this.max = mstart.clone().add((nttarget - 1) * intv, 'year').getTime(); + this.numberTicks = nttarget; + + for (var i=0; i<nttarget; i++) { + if (i === 0) { + opts.value = mstart.getTime(); + } + else { + opts.value = mstart.add(intv, 'year').getTime(); + } + t = new this.tickRenderer(opts); + + if (this._overrideFormatString && this._autoFormatString != '') { + t.formatString = this._autoFormatString; + } + if (!this.showTicks) { + t.showLabel = false; + t.showMark = false; + } + else if (!this.showTickMarks) { + t.showMark = false; + } + this._ticks.push(t); + } + + insetMult = intv * year; + } + } + + //////// + // Some option(s) specified, work around that. + //////// + + else { + if (name == 'xaxis' || name == 'x2axis') { + dim = this._plotDimensions.width; + } + else { + dim = this._plotDimensions.height; + } + + // if min, max and number of ticks specified, user can't specify interval. + if (this.min != null && this.max != null && this.numberTicks != null) { + this.tickInterval = null; + } + + if (this.tickInterval != null && daTickInterval != null) { + this.daTickInterval = daTickInterval; + } + + // if min and max are same, space them out a bit + if (min == max) { + var adj = 24*60*60*500; // 1/2 day + min -= adj; + max += adj; + } + + range = max - min; + + var optNumTicks = 2 + parseInt(Math.max(0, dim-100)/100, 10); + + + var rmin, rmax; + + rmin = (this.min != null) ? new $.jsDate(this.min).getTime() : min - range/2*(this.padMin - 1); + rmax = (this.max != null) ? new $.jsDate(this.max).getTime() : max + range/2*(this.padMax - 1); + this.min = rmin; + this.max = rmax; + range = this.max - this.min; + + if (this.numberTicks == null){ + // if tickInterval is specified by user, we will ignore computed maximum. + // max will be equal or greater to fit even # of ticks. + if (this.daTickInterval != null) { + var nc = new $.jsDate(this.max).diff(this.min, this.daTickInterval[1], true); + this.numberTicks = Math.ceil(nc/this.daTickInterval[0]) +1; + // this.max = new $.jsDate(this.min).add(this.numberTicks-1, this.daTickInterval[1]).getTime(); + this.max = new $.jsDate(this.min).add((this.numberTicks-1) * this.daTickInterval[0], this.daTickInterval[1]).getTime(); + } + else if (dim > 200) { + this.numberTicks = parseInt(3+(dim-200)/100, 10); + } + else { + this.numberTicks = 2; + } + } + + insetMult = range / (this.numberTicks-1)/1000; + + if (this.daTickInterval == null) { + this.daTickInterval = [insetMult, 'seconds']; + } + + + for (var i=0; i<this.numberTicks; i++){ + var min = new $.jsDate(this.min); + tt = min.add(i*this.daTickInterval[0], this.daTickInterval[1]).getTime(); + var t = new this.tickRenderer(this.tickOptions); + // var t = new $.jqplot.AxisTickRenderer(this.tickOptions); + if (!this.showTicks) { + t.showLabel = false; + t.showMark = false; + } + else if (!this.showTickMarks) { + t.showMark = false; + } + t.setTick(tt, this.name); + this._ticks.push(t); + } + } + + if (this.tickInset) { + this.min = this.min - this.tickInset * insetMult; + this.max = this.max + this.tickInset * insetMult; + } + + if (this._daTickInterval == null) { + this._daTickInterval = this.daTickInterval; + } + + ticks = null; + }; + +})(jQuery); + diff --git a/plugins/wp-statistics/assets/jqplot/plugins/jqplot.dateAxisRenderer.min.js b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.dateAxisRenderer.min.js new file mode 100644 index 0000000..cb2edbd --- /dev/null +++ b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.dateAxisRenderer.min.js @@ -0,0 +1,4 @@ +/* jqplot 1.0.9 | (c) 2009-2016 Chris Leonello | jqplot.com + jsDate | (c) 2010-2016 Chris Leonello + */ +!function(a){function b(a,b,c){for(var d,e,f,g=Number.MAX_VALUE,h=0,i=k.length;h<i;h++)d=Math.abs(c-k[h]),d<g&&(g=d,e=k[h],f=j[h]);return[e,f]}a.jqplot.DateAxisRenderer=function(){a.jqplot.LinearAxisRenderer.call(this),this.date=new a.jsDate};var c=1e3,d=60*c,e=60*d,f=24*e,g=7*f,h=30.4368499*f,i=365.242199*f,j=["%M:%S.%#N","%M:%S.%#N","%M:%S.%#N","%M:%S","%M:%S","%M:%S","%M:%S","%H:%M:%S","%H:%M:%S","%H:%M","%H:%M","%H:%M","%H:%M","%H:%M","%H:%M","%a %H:%M","%a %H:%M","%b %e %H:%M","%b %e %H:%M","%b %e %H:%M","%b %e %H:%M","%v","%v","%v","%v","%v","%v","%v"],k=[.1*c,.2*c,.5*c,c,2*c,5*c,10*c,15*c,30*c,d,2*d,5*d,10*d,15*d,30*d,e,2*e,4*e,6*e,8*e,12*e,f,2*f,3*f,4*f,5*f,g,2*g];a.jqplot.DateAxisRenderer.prototype=new a.jqplot.LinearAxisRenderer,a.jqplot.DateAxisRenderer.prototype.constructor=a.jqplot.DateAxisRenderer,a.jqplot.DateTickFormatter=function(b,c){return b||(b="%Y/%m/%d"),a.jsDate.strftime(c,b)},a.jqplot.DateAxisRenderer.prototype.init=function(b){this.tickOptions.formatter=a.jqplot.DateTickFormatter,this.tickInset=0,this.drawBaseline=!0,this.baselineWidth=null,this.baselineColor=null,this.daTickInterval=null,this._daTickInterval=null,a.extend(!0,this,b);for(var c,d,e,f,g,h,i,j=this._dataBounds,k=0;k<this._series.length;k++){c={intervals:[],frequencies:{},sortedIntervals:[],min:null,max:null,mean:null},d=0,e=this._series[k],f=e.data,g=e._plotData,h=e._stackData,i=0;for(var l=0;l<f.length;l++)"xaxis"==this.name||"x2axis"==this.name?(f[l][0]=new a.jsDate(f[l][0]).getTime(),g[l][0]=new a.jsDate(g[l][0]).getTime(),h[l][0]=new a.jsDate(h[l][0]).getTime(),(null!=f[l][0]&&f[l][0]<j.min||null==j.min)&&(j.min=f[l][0]),(null!=f[l][0]&&f[l][0]>j.max||null==j.max)&&(j.max=f[l][0]),l>0&&(i=Math.abs(f[l][0]-f[l-1][0]),c.intervals.push(i),c.frequencies.hasOwnProperty(i)?c.frequencies[i]+=1:c.frequencies[i]=1),d+=i):(f[l][1]=new a.jsDate(f[l][1]).getTime(),g[l][1]=new a.jsDate(g[l][1]).getTime(),h[l][1]=new a.jsDate(h[l][1]).getTime(),(null!=f[l][1]&&f[l][1]<j.min||null==j.min)&&(j.min=f[l][1]),(null!=f[l][1]&&f[l][1]>j.max||null==j.max)&&(j.max=f[l][1]),l>0&&(i=Math.abs(f[l][1]-f[l-1][1]),c.intervals.push(i),c.frequencies.hasOwnProperty(i)?c.frequencies[i]+=1:c.frequencies[i]=1)),d+=i;if(e.renderer.bands){if(e.renderer.bands.hiData.length)for(var m=e.renderer.bands.hiData,l=0,n=m.length;l<n;l++)"xaxis"===this.name||"x2axis"===this.name?(m[l][0]=new a.jsDate(m[l][0]).getTime(),(null!=m[l][0]&&m[l][0]>j.max||null==j.max)&&(j.max=m[l][0])):(m[l][1]=new a.jsDate(m[l][1]).getTime(),(null!=m[l][1]&&m[l][1]>j.max||null==j.max)&&(j.max=m[l][1]));if(e.renderer.bands.lowData.length)for(var m=e.renderer.bands.lowData,l=0,n=m.length;l<n;l++)"xaxis"===this.name||"x2axis"===this.name?(m[l][0]=new a.jsDate(m[l][0]).getTime(),(null!=m[l][0]&&m[l][0]<j.min||null==j.min)&&(j.min=m[l][0])):(m[l][1]=new a.jsDate(m[l][1]).getTime(),(null!=m[l][1]&&m[l][1]<j.min||null==j.min)&&(j.min=m[l][1]))}for(var o in c.frequencies)c.sortedIntervals.push({interval:o,frequency:c.frequencies[o]});c.sortedIntervals.sort(function(a,b){return b.frequency-a.frequency}),c.min=a.jqplot.arrayMin(c.intervals),c.max=a.jqplot.arrayMax(c.intervals),c.mean=d/f.length,this._intervalStats.push(c),c=d=e=f=g=h=null}j=null},a.jqplot.DateAxisRenderer.prototype.reset=function(){this.min=this._options.min,this.max=this._options.max,this.tickInterval=this._options.tickInterval,this.numberTicks=this._options.numberTicks,this._autoFormatString="",this._overrideFormatString&&this.tickOptions&&this.tickOptions.formatString&&(this.tickOptions.formatString=""),this.daTickInterval=this._daTickInterval},a.jqplot.DateAxisRenderer.prototype.createTicks=function(c){var d,e,g,j,k=this._ticks,l=this.ticks,m=this.name,n=this._dataBounds,o=(this._intervalStats,"x"===this.name.charAt(0)?this._plotDimensions.width:this._plotDimensions.height),p=30,q=1,r=null;if(null!=this.tickInterval)if(Number(this.tickInterval))r=[Number(this.tickInterval),"seconds"];else if("string"==typeof this.tickInterval){var s=this.tickInterval.split(" ");1==s.length?r=[1,s[0]]:2==s.length&&(r=[s[0],s[1]])}this.tickInterval;d=new a.jsDate(null!=this.min?this.min:n.min).getTime(),e=new a.jsDate(null!=this.max?this.max:n.max).getTime();var t=c.plugins.cursor;t&&t._zoom&&t._zoom.zooming&&(this.min=null,this.max=null);var u=e-d;if(null!=this.tickOptions&&this.tickOptions.formatString||(this._overrideFormatString=!0),l.length){for(j=0;j<l.length;j++){var v=l[j],w=new this.tickRenderer(this.tickOptions);v.constructor==Array?(w.value=new a.jsDate(v[0]).getTime(),w.label=v[1],this.showTicks?this.showTickMarks||(w.showMark=!1):(w.showLabel=!1,w.showMark=!1),w.setTick(w.value,this.name),this._ticks.push(w)):(w.value=new a.jsDate(v).getTime(),this.showTicks?this.showTickMarks||(w.showMark=!1):(w.showLabel=!1,w.showMark=!1),w.setTick(w.value,this.name),this._ticks.push(w))}this.numberTicks=l.length,this.min=this._ticks[0].value,this.max=this._ticks[this.numberTicks-1].value,this.daTickInterval=[(this.max-this.min)/(this.numberTicks-1)/1e3,"seconds"]}else if(null==this.min&&null==this.max&&n.min==n.max){var x=a.extend(!0,{},this.tickOptions,{name:this.name,value:null}),y=3e5;this.min=n.min-y,this.max=n.max+y,this.numberTicks=3;for(var j=this.min;j<=this.max;j+=y){x.value=j;var w=new this.tickRenderer(x);this._overrideFormatString&&""!=this._autoFormatString&&(w.formatString=this._autoFormatString),w.showLabel=!1,w.showMark=!1,this._ticks.push(w)}this.showTicks&&(this._ticks[1].showLabel=!0),this.showTickMarks&&(this._ticks[1].showTickMarks=!0)}else if(null==this.min&&null==this.max){var z,A,B=a.extend(!0,{},this.tickOptions,{name:this.name,value:null});if(this.tickInterval||this.numberTicks)this.tickInterval?A=new a.jsDate(0).add(r[0],r[1]).getTime():this.numberTicks&&(z=this.numberTicks,A=(e-d)/(z-1));else{var C=Math.max(o,p+1),D=115;this.tickRenderer===a.jqplot.CanvasAxisTickRenderer&&this.tickOptions.angle&&(D=115-40*Math.abs(Math.sin(this.tickOptions.angle/180*Math.PI))),z=Math.ceil((C-p)/D+1),A=(e-d)/(z-1)}if(A<=19*f){var E=b(d,e,A),F=E[0];this._autoFormatString=E[1],d=new a.jsDate(d),d=Math.floor((d.getTime()-d.getUtcOffset())/F)*F+d.getUtcOffset(),z=Math.ceil((e-d)/F)+1,this.min=d,this.max=d+(z-1)*F,this.max<e&&(this.max+=F,z+=1),this.tickInterval=F,this.numberTicks=z;for(var j=0;j<z;j++)B.value=this.min+j*F,w=new this.tickRenderer(B),this._overrideFormatString&&""!=this._autoFormatString&&(w.formatString=this._autoFormatString),this.showTicks?this.showTickMarks||(w.showMark=!1):(w.showLabel=!1,w.showMark=!1),this._ticks.push(w);q=this.tickInterval}else if(A<=9*h){this._autoFormatString="%v";var G=Math.round(A/h);G<1?G=1:G>6&&(G=6);var H=new a.jsDate(d).setDate(1).setHours(0,0,0,0),I=new a.jsDate(e),J=new a.jsDate(e).setDate(1).setHours(0,0,0,0);I.getTime()!==J.getTime()&&(J=J.add(1,"month"));var K=J.diff(H,"month");z=Math.ceil(K/G)+1,this.min=H.getTime(),this.max=H.clone().add((z-1)*G,"month").getTime(),this.numberTicks=z;for(var j=0;j<z;j++)0===j?B.value=H.getTime():B.value=H.add(G,"month").getTime(),w=new this.tickRenderer(B),this._overrideFormatString&&""!=this._autoFormatString&&(w.formatString=this._autoFormatString),this.showTicks?this.showTickMarks||(w.showMark=!1):(w.showLabel=!1,w.showMark=!1),this._ticks.push(w);q=G*h}else{this._autoFormatString="%v";var G=Math.round(A/i);G<1&&(G=1);var H=new a.jsDate(d).setMonth(0,1).setHours(0,0,0,0),J=new a.jsDate(e).add(1,"year").setMonth(0,1).setHours(0,0,0,0),L=J.diff(H,"year");z=Math.ceil(L/G)+1,this.min=H.getTime(),this.max=H.clone().add((z-1)*G,"year").getTime(),this.numberTicks=z;for(var j=0;j<z;j++)0===j?B.value=H.getTime():B.value=H.add(G,"year").getTime(),w=new this.tickRenderer(B),this._overrideFormatString&&""!=this._autoFormatString&&(w.formatString=this._autoFormatString),this.showTicks?this.showTickMarks||(w.showMark=!1):(w.showLabel=!1,w.showMark=!1),this._ticks.push(w);q=G*i}}else{if(o="xaxis"==m||"x2axis"==m?this._plotDimensions.width:this._plotDimensions.height,null!=this.min&&null!=this.max&&null!=this.numberTicks&&(this.tickInterval=null),null!=this.tickInterval&&null!=r&&(this.daTickInterval=r),d==e){var M=432e5;d-=M,e+=M}u=e-d;var N,O;2+parseInt(Math.max(0,o-100)/100,10);if(N=null!=this.min?new a.jsDate(this.min).getTime():d-u/2*(this.padMin-1),O=null!=this.max?new a.jsDate(this.max).getTime():e+u/2*(this.padMax-1),this.min=N,this.max=O,u=this.max-this.min,null==this.numberTicks)if(null!=this.daTickInterval){var P=new a.jsDate(this.max).diff(this.min,this.daTickInterval[1],!0);this.numberTicks=Math.ceil(P/this.daTickInterval[0])+1,this.max=new a.jsDate(this.min).add((this.numberTicks-1)*this.daTickInterval[0],this.daTickInterval[1]).getTime()}else o>200?this.numberTicks=parseInt(3+(o-200)/100,10):this.numberTicks=2;q=u/(this.numberTicks-1)/1e3,null==this.daTickInterval&&(this.daTickInterval=[q,"seconds"]);for(var j=0;j<this.numberTicks;j++){var d=new a.jsDate(this.min);g=d.add(j*this.daTickInterval[0],this.daTickInterval[1]).getTime();var w=new this.tickRenderer(this.tickOptions);this.showTicks?this.showTickMarks||(w.showMark=!1):(w.showLabel=!1,w.showMark=!1),w.setTick(g,this.name),this._ticks.push(w)}}this.tickInset&&(this.min=this.min-this.tickInset*q,this.max=this.max+this.tickInset*q),null==this._daTickInterval&&(this._daTickInterval=this.daTickInterval),k=null}}(jQuery); \ No newline at end of file diff --git a/plugins/wp-statistics/assets/jqplot/plugins/jqplot.enhancedLegendRenderer.js b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.enhancedLegendRenderer.js new file mode 100644 index 0000000..cff3111 --- /dev/null +++ b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.enhancedLegendRenderer.js @@ -0,0 +1,305 @@ +/** + * jqPlot + * Pure JavaScript plotting plugin using jQuery + * + * Version: 1.0.9 + * Revision: c465c44 + * + * Copyright (c) 2009-2016 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot dot com or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * sprintf functions contained in jqplot.sprintf.js by Ash Searle: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function($) { + // class $.jqplot.EnhancedLegendRenderer + // Legend renderer which can specify the number of rows and/or columns in the legend. + $.jqplot.EnhancedLegendRenderer = function(){ + $.jqplot.TableLegendRenderer.call(this); + }; + + $.jqplot.EnhancedLegendRenderer.prototype = new $.jqplot.TableLegendRenderer(); + $.jqplot.EnhancedLegendRenderer.prototype.constructor = $.jqplot.EnhancedLegendRenderer; + + // called with scope of legend. + $.jqplot.EnhancedLegendRenderer.prototype.init = function(options) { + // prop: numberRows + // Maximum number of rows in the legend. 0 or null for unlimited. + this.numberRows = null; + // prop: numberColumns + // Maximum number of columns in the legend. 0 or null for unlimited. + this.numberColumns = null; + // prop: seriesToggle + // false to not enable series on/off toggling on the legend. + // true or a fadein/fadeout speed (number of milliseconds or 'fast', 'normal', 'slow') + // to enable show/hide of series on click of legend item. + this.seriesToggle = 'normal'; + // prop: seriesToggleReplot + // True to replot the chart after toggling series on/off. + // This will set the series show property to false. + // This allows for rescaling or other maniplation of chart. + // Set to an options object (e.g. {resetAxes: true}) for replot options. + this.seriesToggleReplot = false; + // prop: disableIEFading + // true to toggle series with a show/hide method only and not allow fading in/out. + // This is to overcome poor performance of fade in some versions of IE. + this.disableIEFading = true; + $.extend(true, this, options); + + if (this.seriesToggle) { + $.jqplot.postDrawHooks.push(postDraw); + } + }; + + // called with scope of legend + $.jqplot.EnhancedLegendRenderer.prototype.draw = function(offsets, plot) { + var legend = this; + if (this.show) { + var series = this._series; + var s; + var ss = 'position:absolute;'; + ss += (this.background) ? 'background:'+this.background+';' : ''; + ss += (this.border) ? 'border:'+this.border+';' : ''; + ss += (this.fontSize) ? 'font-size:'+this.fontSize+';' : ''; + ss += (this.fontFamily) ? 'font-family:'+this.fontFamily+';' : ''; + ss += (this.textColor) ? 'color:'+this.textColor+';' : ''; + ss += (this.marginTop != null) ? 'margin-top:'+this.marginTop+';' : ''; + ss += (this.marginBottom != null) ? 'margin-bottom:'+this.marginBottom+';' : ''; + ss += (this.marginLeft != null) ? 'margin-left:'+this.marginLeft+';' : ''; + ss += (this.marginRight != null) ? 'margin-right:'+this.marginRight+';' : ''; + this._elem = $('<table class="jqplot-table-legend" style="'+ss+'"></table>'); + if (this.seriesToggle) { + this._elem.css('z-index', '3'); + } + + var pad = false, + reverse = false, + nr, nc; + if (this.numberRows) { + nr = this.numberRows; + if (!this.numberColumns){ + nc = Math.ceil(series.length/nr); + } + else{ + nc = this.numberColumns; + } + } + else if (this.numberColumns) { + nc = this.numberColumns; + nr = Math.ceil(series.length/this.numberColumns); + } + else { + nr = series.length; + nc = 1; + } + + var i, j, tr, td1, td2, lt, rs, div, div0, div1; + var idx = 0; + // check to see if we need to reverse + for (i=series.length-1; i>=0; i--) { + if (nc == 1 && series[i]._stack || series[i].renderer.constructor == $.jqplot.BezierCurveRenderer){ + reverse = true; + } + } + + for (i=0; i<nr; i++) { + tr = $(document.createElement('tr')); + tr.addClass('jqplot-table-legend'); + if (reverse){ + tr.prependTo(this._elem); + } + else{ + tr.appendTo(this._elem); + } + for (j=0; j<nc; j++) { + if (idx < series.length && (series[idx].show || series[idx].showLabel)){ + s = series[idx]; + lt = this.labels[idx] || s.label.toString(); + if (lt) { + var color = s.color; + if (!reverse){ + if (i>0){ + pad = true; + } + else{ + pad = false; + } + } + else{ + if (i == nr -1){ + pad = false; + } + else{ + pad = true; + } + } + rs = (pad) ? this.rowSpacing : '0'; + + td1 = $(document.createElement('td')); + td1.addClass('jqplot-table-legend jqplot-table-legend-swatch'); + td1.css({textAlign: 'center', paddingTop: rs}); + + div0 = $(document.createElement('div')); + div0.addClass('jqplot-table-legend-swatch-outline'); + div1 = $(document.createElement('div')); + div1.addClass('jqplot-table-legend-swatch'); + div1.css({backgroundColor: color, borderColor: color}); + + td1.append(div0.append(div1)); + + td2 = $(document.createElement('td')); + td2.addClass('jqplot-table-legend jqplot-table-legend-label'); + td2.css('paddingTop', rs); + + // td1 = $('<td class="jqplot-table-legend" style="text-align:center;padding-top:'+rs+';">'+ + // '<div><div class="jqplot-table-legend-swatch" style="background-color:'+color+';border-color:'+color+';"></div>'+ + // '</div></td>'); + // td2 = $('<td class="jqplot-table-legend" style="padding-top:'+rs+';"></td>'); + if (this.escapeHtml){ + td2.text(lt); + } + else { + td2.html(lt); + } + if (reverse) { + if (this.showLabels) {td2.prependTo(tr);} + if (this.showSwatches) {td1.prependTo(tr);} + } + else { + if (this.showSwatches) {td1.appendTo(tr);} + if (this.showLabels) {td2.appendTo(tr);} + } + + if (this.seriesToggle) { + + // add an overlay for clicking series on/off + // div0 = $(document.createElement('div')); + // div0.addClass('jqplot-table-legend-overlay'); + // div0.css({position:'relative', left:0, top:0, height:'100%', width:'100%'}); + // tr.append(div0); + + var speed; + if (typeof(this.seriesToggle) === 'string' || typeof(this.seriesToggle) === 'number') { + if (!$.jqplot.use_excanvas || !this.disableIEFading) { + speed = this.seriesToggle; + } + } + if (this.showSwatches) { + td1.bind('click', {series:s, speed:speed, plot: plot, replot:this.seriesToggleReplot}, handleToggle); + td1.addClass('jqplot-seriesToggle'); + } + if (this.showLabels) { + td2.bind('click', {series:s, speed:speed, plot: plot, replot:this.seriesToggleReplot}, handleToggle); + td2.addClass('jqplot-seriesToggle'); + } + + // for series that are already hidden, add the hidden class + if (!s.show && s.showLabel) { + td1.addClass('jqplot-series-hidden'); + td2.addClass('jqplot-series-hidden'); + } + } + + pad = true; + } + } + idx++; + } + + td1 = td2 = div0 = div1 = null; + } + } + return this._elem; + }; + + var handleToggle = function (ev) { + var d = ev.data, + s = d.series, + replot = d.replot, + plot = d.plot, + speed = d.speed, + sidx = s.index, + showing = false; + + if (s.canvas._elem.is(':hidden') || !s.show) { + showing = true; + } + + var doLegendToggle = function() { + + if (replot) { + var opts = {}; + + if ($.isPlainObject(replot)) { + $.extend(true, opts, replot); + } + + plot.replot(opts); + // if showing, there was no canvas element to fade in, so hide here + // and then do a fade in. + if (showing && speed) { + var s = plot.series[sidx]; + + if (s.shadowCanvas._elem) { + s.shadowCanvas._elem.hide().fadeIn(speed); + } + s.canvas._elem.hide().fadeIn(speed); + s.canvas._elem.nextAll('.jqplot-point-label.jqplot-series-'+s.index).hide().fadeIn(speed); + } + + } + + else { + var s = plot.series[sidx]; + + if (s.canvas._elem.is(':hidden') || !s.show) { + // Not sure if there is a better way to check for showSwatches and showLabels === true. + // Test for "undefined" since default values for both showSwatches and showLables is true. + if (typeof plot.options.legend.showSwatches === 'undefined' || plot.options.legend.showSwatches === true) { + plot.legend._elem.find('td').eq(sidx * 2).addClass('jqplot-series-hidden'); + } + if (typeof plot.options.legend.showLabels === 'undefined' || plot.options.legend.showLabels === true) { + plot.legend._elem.find('td').eq((sidx * 2) + 1).addClass('jqplot-series-hidden'); + } + } + else { + if (typeof plot.options.legend.showSwatches === 'undefined' || plot.options.legend.showSwatches === true) { + plot.legend._elem.find('td').eq(sidx * 2).removeClass('jqplot-series-hidden'); + } + if (typeof plot.options.legend.showLabels === 'undefined' || plot.options.legend.showLabels === true) { + plot.legend._elem.find('td').eq((sidx * 2) + 1).removeClass('jqplot-series-hidden'); + } + } + + } + + }; + + s.toggleDisplay(ev, doLegendToggle); + }; + + // called with scope of plot. + var postDraw = function () { + if (this.legend.renderer.constructor == $.jqplot.EnhancedLegendRenderer && this.legend.seriesToggle){ + var e = this.legend._elem.detach(); + this.eventCanvas._elem.after(e); + } + }; +})(jQuery); diff --git a/plugins/wp-statistics/assets/jqplot/plugins/jqplot.enhancedLegendRenderer.min.js b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.enhancedLegendRenderer.min.js new file mode 100644 index 0000000..68740c8 --- /dev/null +++ b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.enhancedLegendRenderer.min.js @@ -0,0 +1,4 @@ +/* jqplot 1.0.9 | (c) 2009-2016 Chris Leonello | jqplot.com + jsDate | (c) 2010-2016 Chris Leonello + */ +!function(a){a.jqplot.EnhancedLegendRenderer=function(){a.jqplot.TableLegendRenderer.call(this)},a.jqplot.EnhancedLegendRenderer.prototype=new a.jqplot.TableLegendRenderer,a.jqplot.EnhancedLegendRenderer.prototype.constructor=a.jqplot.EnhancedLegendRenderer,a.jqplot.EnhancedLegendRenderer.prototype.init=function(b){this.numberRows=null,this.numberColumns=null,this.seriesToggle="normal",this.seriesToggleReplot=!1,this.disableIEFading=!0,a.extend(!0,this,b),this.seriesToggle&&a.jqplot.postDrawHooks.push(c)},a.jqplot.EnhancedLegendRenderer.prototype.draw=function(c,d){if(this.show){var e,f=this._series,g="position:absolute;";g+=this.background?"background:"+this.background+";":"",g+=this.border?"border:"+this.border+";":"",g+=this.fontSize?"font-size:"+this.fontSize+";":"",g+=this.fontFamily?"font-family:"+this.fontFamily+";":"",g+=this.textColor?"color:"+this.textColor+";":"",g+=null!=this.marginTop?"margin-top:"+this.marginTop+";":"",g+=null!=this.marginBottom?"margin-bottom:"+this.marginBottom+";":"",g+=null!=this.marginLeft?"margin-left:"+this.marginLeft+";":"",g+=null!=this.marginRight?"margin-right:"+this.marginRight+";":"",this._elem=a('<table class="jqplot-table-legend" style="'+g+'"></table>'),this.seriesToggle&&this._elem.css("z-index","3");var h,i,j=!1,k=!1;this.numberRows?(h=this.numberRows,i=this.numberColumns?this.numberColumns:Math.ceil(f.length/h)):this.numberColumns?(i=this.numberColumns,h=Math.ceil(f.length/this.numberColumns)):(h=f.length,i=1);var l,m,n,o,p,q,r,s,t,u=0;for(l=f.length-1;l>=0;l--)(1==i&&f[l]._stack||f[l].renderer.constructor==a.jqplot.BezierCurveRenderer)&&(k=!0);for(l=0;l<h;l++){for(n=a(document.createElement("tr")),n.addClass("jqplot-table-legend"),k?n.prependTo(this._elem):n.appendTo(this._elem),m=0;m<i;m++){if(u<f.length&&(f[u].show||f[u].showLabel)&&(e=f[u],q=this.labels[u]||e.label.toString())){var v=e.color;if(j=k?l!=h-1:l>0,r=j?this.rowSpacing:"0",o=a(document.createElement("td")),o.addClass("jqplot-table-legend jqplot-table-legend-swatch"),o.css({textAlign:"center",paddingTop:r}),s=a(document.createElement("div")),s.addClass("jqplot-table-legend-swatch-outline"),t=a(document.createElement("div")),t.addClass("jqplot-table-legend-swatch"),t.css({backgroundColor:v,borderColor:v}),o.append(s.append(t)),p=a(document.createElement("td")),p.addClass("jqplot-table-legend jqplot-table-legend-label"),p.css("paddingTop",r),this.escapeHtml?p.text(q):p.html(q),k?(this.showLabels&&p.prependTo(n),this.showSwatches&&o.prependTo(n)):(this.showSwatches&&o.appendTo(n),this.showLabels&&p.appendTo(n)),this.seriesToggle){var w;"string"!=typeof this.seriesToggle&&"number"!=typeof this.seriesToggle||a.jqplot.use_excanvas&&this.disableIEFading||(w=this.seriesToggle),this.showSwatches&&(o.bind("click",{series:e,speed:w,plot:d,replot:this.seriesToggleReplot},b),o.addClass("jqplot-seriesToggle")),this.showLabels&&(p.bind("click",{series:e,speed:w,plot:d,replot:this.seriesToggleReplot},b),p.addClass("jqplot-seriesToggle")),!e.show&&e.showLabel&&(o.addClass("jqplot-series-hidden"),p.addClass("jqplot-series-hidden"))}j=!0}u++}o=p=s=t=null}}return this._elem};var b=function(b){var c=b.data,d=c.series,e=c.replot,f=c.plot,g=c.speed,h=d.index,i=!1;!d.canvas._elem.is(":hidden")&&d.show||(i=!0);var j=function(){if(e){var b={};if(a.isPlainObject(e)&&a.extend(!0,b,e),f.replot(b),i&&g){var c=f.series[h];c.shadowCanvas._elem&&c.shadowCanvas._elem.hide().fadeIn(g),c.canvas._elem.hide().fadeIn(g),c.canvas._elem.nextAll(".jqplot-point-label.jqplot-series-"+c.index).hide().fadeIn(g)}}else{var c=f.series[h];c.canvas._elem.is(":hidden")||!c.show?("undefined"!=typeof f.options.legend.showSwatches&&f.options.legend.showSwatches!==!0||f.legend._elem.find("td").eq(2*h).addClass("jqplot-series-hidden"),"undefined"!=typeof f.options.legend.showLabels&&f.options.legend.showLabels!==!0||f.legend._elem.find("td").eq(2*h+1).addClass("jqplot-series-hidden")):("undefined"!=typeof f.options.legend.showSwatches&&f.options.legend.showSwatches!==!0||f.legend._elem.find("td").eq(2*h).removeClass("jqplot-series-hidden"),"undefined"!=typeof f.options.legend.showLabels&&f.options.legend.showLabels!==!0||f.legend._elem.find("td").eq(2*h+1).removeClass("jqplot-series-hidden"))}};d.toggleDisplay(b,j)},c=function(){if(this.legend.renderer.constructor==a.jqplot.EnhancedLegendRenderer&&this.legend.seriesToggle){var b=this.legend._elem.detach();this.eventCanvas._elem.after(b)}}}(jQuery); \ No newline at end of file diff --git a/plugins/wp-statistics/assets/jqplot/plugins/jqplot.enhancedPieLegendRenderer.js b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.enhancedPieLegendRenderer.js new file mode 100644 index 0000000..5624a22 --- /dev/null +++ b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.enhancedPieLegendRenderer.js @@ -0,0 +1,261 @@ +/** + * jqPlot + * Pure JavaScript plotting plugin using jQuery + * + * Version: 1.0.9 + * Revision: c465c44 + * + * Copyright (c) 2009-2016 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot dot com or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * sprintf functions contained in jqplot.sprintf.js by Ash Searle: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function($) { + // class $.jqplot.EnhancedPieLegendRenderer + // Legend renderer which can specify the number of rows and/or columns in the legend + // Similar to EnhancedLegendRenderer, but for pie charts + $.jqplot.EnhancedPieLegendRenderer = function(){ + $.jqplot.TableLegendRenderer.call(this); + }; + + $.jqplot.EnhancedPieLegendRenderer.prototype = new $.jqplot.TableLegendRenderer(); + $.jqplot.EnhancedPieLegendRenderer.prototype.constructor = $.jqplot.EnhancedPieLegendRenderer; + + // called with scope of legend. + $.jqplot.EnhancedPieLegendRenderer.prototype.init = function(options) { + // prop: numberRows + // Maximum number of rows in the legend. 0 or null for unlimited. + this.numberRows = null; + // prop: numberColumns + // Maximum number of columns in the legend. 0 or null for unlimited. + this.numberColumns = null; + // prop: seriesToggle + // false to not enable series on/off toggling on the legend. + // true or a fadein/fadeout speed (number of milliseconds or 'fast', 'normal', 'slow') + // to enable show/hide of series on click of legend item. + this.seriesToggle = 'normal'; + // prop: seriesToggleReplot + // True to replot the chart after toggling series on/off. + // This will set the series show property to false. + // This allows for rescaling or other maniplation of chart. + // Set to an options object (e.g. {resetAxes: true}) for replot options. + this.seriesToggleReplot = false; + // prop: disableIEFading + // true to toggle series with a show/hide method only and not allow fading in/out. + // This is to overcome poor performance of fade in some versions of IE. + this.disableIEFading = true; + // prop: toolTips + // optional array of toolTip text corresponding to each pie slice + this.toolTips = []; + $.extend(true, this, options); + + if (this.seriesToggle) { + $.jqplot.postDrawHooks.push(postDraw); + } + }; + + // called with scope of legend + $.jqplot.EnhancedPieLegendRenderer.prototype.draw = function(offsets, plot) { + var legend = this; + if (this.show) { + var series = this._series; + var s; + var ss = 'position:absolute;'; + ss += (this.background) ? 'background:'+this.background+';' : ''; + ss += (this.border) ? 'border:'+this.border+';' : ''; + ss += (this.fontSize) ? 'font-size:'+this.fontSize+';' : ''; + ss += (this.fontFamily) ? 'font-family:'+this.fontFamily+';' : ''; + ss += (this.textColor) ? 'color:'+this.textColor+';' : ''; + ss += (this.marginTop != null) ? 'margin-top:'+this.marginTop+';' : ''; + ss += (this.marginBottom != null) ? 'margin-bottom:'+this.marginBottom+';' : ''; + ss += (this.marginLeft != null) ? 'margin-left:'+this.marginLeft+';' : ''; + ss += (this.marginRight != null) ? 'margin-right:'+this.marginRight+';' : ''; + this._elem = $('<table class="jqplot-table-legend" style="'+ss+'"></table>'); + if (this.seriesToggle) { + this._elem.css('z-index', '3'); + } + + var pad = false, + reverse = false, + nr, nc; + var s = series[0]; + var slen = s.data.length; + var colorGenerator = new $.jqplot.ColorGenerator(s.seriesColors); + + if (this.numberRows) { + nr = this.numberRows; + if (!this.numberColumns){ + nc = Math.ceil(slen/nr); + } + else{ + nc = this.numberColumns; + } + } + else if (this.numberColumns) { + nc = this.numberColumns; + nr = Math.ceil(slen/this.numberColumns); + } + else { + nr = slen; + nc = 1; + } + + var i, j, tr, td1, td2, lt, rs, div, div0, div1; + var idx = 0; + // check to see if we need to reverse + for (i=series.length-1; i>=0; i--) { + if (nc == 1 && series[i]._stack || series[i].renderer.constructor == $.jqplot.BezierCurveRenderer){ + reverse = true; + } + } + + for (i=0; i<nr; i++) { + tr = $(document.createElement('tr')); + tr.addClass('jqplot-table-legend'); + if (reverse){ + tr.prependTo(this._elem); + } + else{ + tr.appendTo(this._elem); + } + for (j=0; j<nc; j++) { + if (idx < slen){ + lt = this.labels[idx] || s.data[idx][0].toString(); + tt = this.toolTips[idx]; + if (lt) { + var color = colorGenerator.next(); + if (!reverse){ + if (i>0){ + pad = true; + } + else{ + pad = false; + } + } + else{ + if (i == nr -1){ + pad = false; + } + else{ + pad = true; + } + } + rs = (pad) ? this.rowSpacing : '0'; + + td1 = $(document.createElement('td')); + td1.addClass('jqplot-table-legend jqplot-table-legend-swatch'); + td1.css({textAlign: 'center', paddingTop: rs}); + + div0 = $(document.createElement('div')); + div0.addClass('jqplot-table-legend-swatch-outline'); + if (tt !== undefined) { + div0.attr("title", tt); + } + + div1 = $(document.createElement('div')); + div1.addClass('jqplot-table-legend-swatch'); + div1.css({backgroundColor: color, borderColor: color}); + + td1.append(div0.append(div1)); + + td2 = $(document.createElement('td')); + td2.addClass('jqplot-table-legend jqplot-table-legend-label'); + td2.css('paddingTop', rs); + if (tt !== undefined) { + td2.attr("title", tt); + } + + if (this.escapeHtml){ + td2.text(lt); + } + else { + td2.html(lt); + } + if (reverse) { + if (this.showLabels) {td2.prependTo(tr);} + if (this.showSwatches) {td1.prependTo(tr);} + } + else { + if (this.showSwatches) {td1.appendTo(tr);} + if (this.showLabels) {td2.appendTo(tr);} + } + + if (this.seriesToggle) { + + var speed; + if (typeof(this.seriesToggle) === 'string' || typeof(this.seriesToggle) === 'number') { + if (!$.jqplot.use_excanvas || !this.disableIEFading) { + speed = this.seriesToggle; + } + } + if (this.showSwatches) { + td1.bind('click', {series:s, index:idx, speed:speed, plot: plot, replot:this.seriesToggleReplot}, handleToggle); + td1.addClass('jqplot-seriesToggle'); + } + if (this.showLabels) { + td2.bind('click', {series:s, index:idx, speed:speed, plot: plot, replot:this.seriesToggleReplot}, handleToggle); + td2.addClass('jqplot-seriesToggle'); + } + + // for slices that are already hidden, add the hidden class + if (s.showSlice[idx] === false && s.showLabel) { + td1.addClass('jqplot-series-hidden'); + td2.addClass('jqplot-series-hidden'); + } + } + + pad = true; + } + } + idx++; + } + + td1 = td2 = div0 = div1 = null; + } + } + return this._elem; + }; + + var handleToggle = function (ev) { + var d = ev.data, + replot = d.replot, + plot = d.plot, + idx = d.index; + + d.series.showSlice[idx] = (d.series.showSlice[idx] === false) ? true : false; + + var opts = {}; + + if ($.isPlainObject(replot)) { + $.extend(true, opts, replot); + } + + plot.replot(opts); + }; + + // called with scope of plot. + var postDraw = function () { + if (this.legend.renderer.constructor == $.jqplot.EnhancedPieLegendRenderer && this.legend.seriesToggle) { + var e = this.legend._elem.detach(); + this.eventCanvas._elem.after(e); + } + }; +})(jQuery); diff --git a/plugins/wp-statistics/assets/jqplot/plugins/jqplot.enhancedPieLegendRenderer.min.js b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.enhancedPieLegendRenderer.min.js new file mode 100644 index 0000000..e8dd16a --- /dev/null +++ b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.enhancedPieLegendRenderer.min.js @@ -0,0 +1,4 @@ +/* jqplot 1.0.9 | (c) 2009-2016 Chris Leonello | jqplot.com + jsDate | (c) 2010-2016 Chris Leonello + */ +!function(a){a.jqplot.EnhancedPieLegendRenderer=function(){a.jqplot.TableLegendRenderer.call(this)},a.jqplot.EnhancedPieLegendRenderer.prototype=new a.jqplot.TableLegendRenderer,a.jqplot.EnhancedPieLegendRenderer.prototype.constructor=a.jqplot.EnhancedPieLegendRenderer,a.jqplot.EnhancedPieLegendRenderer.prototype.init=function(b){this.numberRows=null,this.numberColumns=null,this.seriesToggle="normal",this.seriesToggleReplot=!1,this.disableIEFading=!0,this.toolTips=[],a.extend(!0,this,b),this.seriesToggle&&a.jqplot.postDrawHooks.push(c)},a.jqplot.EnhancedPieLegendRenderer.prototype.draw=function(c,d){if(this.show){var e,f=this._series,g="position:absolute;";g+=this.background?"background:"+this.background+";":"",g+=this.border?"border:"+this.border+";":"",g+=this.fontSize?"font-size:"+this.fontSize+";":"",g+=this.fontFamily?"font-family:"+this.fontFamily+";":"",g+=this.textColor?"color:"+this.textColor+";":"",g+=null!=this.marginTop?"margin-top:"+this.marginTop+";":"",g+=null!=this.marginBottom?"margin-bottom:"+this.marginBottom+";":"",g+=null!=this.marginLeft?"margin-left:"+this.marginLeft+";":"",g+=null!=this.marginRight?"margin-right:"+this.marginRight+";":"",this._elem=a('<table class="jqplot-table-legend" style="'+g+'"></table>'),this.seriesToggle&&this._elem.css("z-index","3");var h,i,j=!1,k=!1,e=f[0],l=e.data.length,m=new a.jqplot.ColorGenerator(e.seriesColors);this.numberRows?(h=this.numberRows,i=this.numberColumns?this.numberColumns:Math.ceil(l/h)):this.numberColumns?(i=this.numberColumns,h=Math.ceil(l/this.numberColumns)):(h=l,i=1);var n,o,p,q,r,s,t,u,v,w=0;for(n=f.length-1;n>=0;n--)(1==i&&f[n]._stack||f[n].renderer.constructor==a.jqplot.BezierCurveRenderer)&&(k=!0);for(n=0;n<h;n++){for(p=a(document.createElement("tr")),p.addClass("jqplot-table-legend"),k?p.prependTo(this._elem):p.appendTo(this._elem),o=0;o<i;o++){if(w<l&&(s=this.labels[w]||e.data[w][0].toString(),tt=this.toolTips[w],s)){var x=m.next();if(j=k?n!=h-1:n>0,t=j?this.rowSpacing:"0",q=a(document.createElement("td")),q.addClass("jqplot-table-legend jqplot-table-legend-swatch"),q.css({textAlign:"center",paddingTop:t}),u=a(document.createElement("div")),u.addClass("jqplot-table-legend-swatch-outline"),void 0!==tt&&u.attr("title",tt),v=a(document.createElement("div")),v.addClass("jqplot-table-legend-swatch"),v.css({backgroundColor:x,borderColor:x}),q.append(u.append(v)),r=a(document.createElement("td")),r.addClass("jqplot-table-legend jqplot-table-legend-label"),r.css("paddingTop",t),void 0!==tt&&r.attr("title",tt),this.escapeHtml?r.text(s):r.html(s),k?(this.showLabels&&r.prependTo(p),this.showSwatches&&q.prependTo(p)):(this.showSwatches&&q.appendTo(p),this.showLabels&&r.appendTo(p)),this.seriesToggle){var y;"string"!=typeof this.seriesToggle&&"number"!=typeof this.seriesToggle||a.jqplot.use_excanvas&&this.disableIEFading||(y=this.seriesToggle),this.showSwatches&&(q.bind("click",{series:e,index:w,speed:y,plot:d,replot:this.seriesToggleReplot},b),q.addClass("jqplot-seriesToggle")),this.showLabels&&(r.bind("click",{series:e,index:w,speed:y,plot:d,replot:this.seriesToggleReplot},b),r.addClass("jqplot-seriesToggle")),e.showSlice[w]===!1&&e.showLabel&&(q.addClass("jqplot-series-hidden"),r.addClass("jqplot-series-hidden"))}j=!0}w++}q=r=u=v=null}}return this._elem};var b=function(b){var c=b.data,d=c.replot,e=c.plot,f=c.index;c.series.showSlice[f]=c.series.showSlice[f]===!1;var g={};a.isPlainObject(d)&&a.extend(!0,g,d),e.replot(g)},c=function(){if(this.legend.renderer.constructor==a.jqplot.EnhancedPieLegendRenderer&&this.legend.seriesToggle){var b=this.legend._elem.detach();this.eventCanvas._elem.after(b)}}}(jQuery); \ No newline at end of file diff --git a/plugins/wp-statistics/assets/jqplot/plugins/jqplot.highlighter.js b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.highlighter.js new file mode 100644 index 0000000..694ff7d --- /dev/null +++ b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.highlighter.js @@ -0,0 +1,484 @@ +/** + * jqPlot + * Pure JavaScript plotting plugin using jQuery + * + * Version: 1.0.9 + * Revision: c465c44 + * + * Copyright (c) 2009-2016 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot dot com or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * sprintf functions contained in jqplot.sprintf.js by Ash Searle: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function($) { + $.jqplot.eventListenerHooks.push(['jqplotMouseMove', handleMove]); + + /** + * Class: $.jqplot.Highlighter + * Plugin which will highlight data points when they are moused over. + * + * To use this plugin, include the js + * file in your source: + * + * > <script type="text/javascript" src="plugins/jqplot.highlighter.js"></script> + * + * A tooltip providing information about the data point is enabled by default. + * To disable the tooltip, set "showTooltip" to false. + * + * You can control what data is displayed in the tooltip with various + * options. The "tooltipAxes" option controls whether the x, y or both + * data values are displayed. + * + * Some chart types (e.g. hi-low-close) have more than one y value per + * data point. To display the additional values in the tooltip, set the + * "yvalues" option to the desired number of y values present (3 for a hlc chart). + * + * By default, data values will be formatted with the same formatting + * specifiers as used to format the axis ticks. A custom format code + * can be supplied with the tooltipFormatString option. This will apply + * to all values in the tooltip. + * + * For more complete control, the "formatString" option can be set. This + * Allows conplete control over tooltip formatting. Values are passed to + * the format string in an order determined by the "tooltipAxes" and "yvalues" + * options. So, if you have a hi-low-close chart and you just want to display + * the hi-low-close values in the tooltip, you could set a formatString like: + * + * > highlighter: { + * > tooltipAxes: 'y', + * > yvalues: 3, + * > formatString:'<table class="jqplot-highlighter"> + * > <tr><td>hi:</td><td>%s</td></tr> + * > <tr><td>low:</td><td>%s</td></tr> + * > <tr><td>close:</td><td>%s</td></tr></table>' + * > } + * + */ + $.jqplot.Highlighter = function(options) { + // Group: Properties + // + //prop: show + // true to show the highlight. + this.show = $.jqplot.config.enablePlugins; + // prop: markerRenderer + // Renderer used to draw the marker of the highlighted point. + // Renderer will assimilate attributes from the data point being highlighted, + // so no attributes need set on the renderer directly. + // Default is to turn off shadow drawing on the highlighted point. + this.markerRenderer = new $.jqplot.MarkerRenderer({shadow:false}); + // prop: showMarker + // true to show the marker + this.showMarker = true; + // prop: lineWidthAdjust + // Pixels to add to the lineWidth of the highlight. + this.lineWidthAdjust = 2.5; + // prop: sizeAdjust + // Pixels to add to the overall size of the highlight. + this.sizeAdjust = 5; + // prop: showTooltip + // Show a tooltip with data point values. + this.showTooltip = true; + // prop: tooltipLocation + // Where to position tooltip, 'n', 'ne', 'e', 'se', 's', 'sw', 'w', 'nw' + this.tooltipLocation = 'nw'; + // prop: fadeTooltip + // true = fade in/out tooltip, flase = show/hide tooltip + this.fadeTooltip = true; + // prop: tooltipFadeSpeed + // 'slow', 'def', 'fast', or number of milliseconds. + this.tooltipFadeSpeed = "fast"; + // prop: tooltipOffset + // Pixel offset of tooltip from the highlight. + this.tooltipOffset = 2; + // prop: tooltipAxes + // Which axes to display in tooltip, 'x', 'y' or 'both', 'xy' or 'yx' + // 'both' and 'xy' are equivalent, 'yx' reverses order of labels. + this.tooltipAxes = 'both'; + // prop; tooltipSeparator + // String to use to separate x and y axes in tooltip. + this.tooltipSeparator = ', '; + // prop; tooltipContentEditor + // Function used to edit/augment/replace the formatted tooltip contents. + // Called as str = tooltipContentEditor(str, seriesIndex, pointIndex) + // where str is the generated tooltip html and seriesIndex and pointIndex identify + // the data point being highlighted. Should return the html for the tooltip contents. + this.tooltipContentEditor = null; + // prop: useAxesFormatters + // Use the x and y axes formatters to format the text in the tooltip. + this.useAxesFormatters = true; + // prop: tooltipFormatString + // sprintf format string for the tooltip. + // Uses Ash Searle's javascript sprintf implementation + // found here: http://hexmen.com/blog/2007/03/printf-sprintf/ + // See http://perldoc.perl.org/functions/sprintf.html for reference. + // Additional "p" and "P" format specifiers added by Chris Leonello. + this.tooltipFormatString = '%.5P'; + // prop: formatString + // alternative to tooltipFormatString + // will format the whole tooltip text, populating with x, y values as + // indicated by tooltipAxes option. So, you could have a tooltip like: + // 'Date: %s, number of cats: %d' to format the whole tooltip at one go. + // If useAxesFormatters is true, values will be formatted according to + // Axes formatters and you can populate your tooltip string with + // %s placeholders. + this.formatString = null; + // prop: yvalues + // Number of y values to expect in the data point array. + // Typically this is 1. Certain plots, like OHLC, will + // have more y values in each data point array. + this.yvalues = 1; + // prop: bringSeriesToFront + // This option requires jQuery 1.4+ + // True to bring the series of the highlighted point to the front + // of other series. + this.bringSeriesToFront = false; + this._tooltipElem; + this.isHighlighting = false; + this.currentNeighbor = null; + + $.extend(true, this, options); + }; + + var locations = ['nw', 'n', 'ne', 'e', 'se', 's', 'sw', 'w']; + var locationIndicies = {'nw':0, 'n':1, 'ne':2, 'e':3, 'se':4, 's':5, 'sw':6, 'w':7}; + var oppositeLocations = ['se', 's', 'sw', 'w', 'nw', 'n', 'ne', 'e']; + + // axis.renderer.tickrenderer.formatter + + // called with scope of plot + $.jqplot.Highlighter.init = function (target, data, opts){ + var options = opts || {}; + // add a highlighter attribute to the plot + this.plugins.highlighter = new $.jqplot.Highlighter(options.highlighter); + }; + + // called within scope of series + $.jqplot.Highlighter.parseOptions = function (defaults, options) { + // Add a showHighlight option to the series + // and set it to true by default. + this.showHighlight = true; + }; + + // called within context of plot + // create a canvas which we can draw on. + // insert it before the eventCanvas, so eventCanvas will still capture events. + $.jqplot.Highlighter.postPlotDraw = function() { + // Memory Leaks patch + if (this.plugins.highlighter && this.plugins.highlighter.highlightCanvas) { + this.plugins.highlighter.highlightCanvas.resetCanvas(); + this.plugins.highlighter.highlightCanvas = null; + } + + if (this.plugins.highlighter && this.plugins.highlighter._tooltipElem) { + this.plugins.highlighter._tooltipElem.emptyForce(); + this.plugins.highlighter._tooltipElem = null; + } + + this.plugins.highlighter.highlightCanvas = new $.jqplot.GenericCanvas(); + + this.eventCanvas._elem.before(this.plugins.highlighter.highlightCanvas.createElement(this._gridPadding, 'jqplot-highlight-canvas', this._plotDimensions, this)); + this.plugins.highlighter.highlightCanvas.setContext(); + + var elem = document.createElement('div'); + this.plugins.highlighter._tooltipElem = $(elem); + elem = null; + this.plugins.highlighter._tooltipElem.addClass('jqplot-highlighter-tooltip'); + this.plugins.highlighter._tooltipElem.css({position:'absolute', display:'none'}); + + this.eventCanvas._elem.before(this.plugins.highlighter._tooltipElem); + }; + + $.jqplot.preInitHooks.push($.jqplot.Highlighter.init); + $.jqplot.preParseSeriesOptionsHooks.push($.jqplot.Highlighter.parseOptions); + $.jqplot.postDrawHooks.push($.jqplot.Highlighter.postPlotDraw); + + function draw(plot, neighbor) { + var hl = plot.plugins.highlighter; + var s = plot.series[neighbor.seriesIndex]; + var smr = s.markerRenderer; + var mr = hl.markerRenderer; + mr.style = smr.style; + mr.lineWidth = smr.lineWidth + hl.lineWidthAdjust; + mr.size = smr.size + hl.sizeAdjust; + var rgba = $.jqplot.getColorComponents(smr.color); + var newrgb = [rgba[0], rgba[1], rgba[2]]; + var alpha = (rgba[3] >= 0.6) ? rgba[3]*0.6 : rgba[3]*(2-rgba[3]); + mr.color = 'rgba('+newrgb[0]+','+newrgb[1]+','+newrgb[2]+','+alpha+')'; + mr.init(); + var x_pos = s.gridData[neighbor.pointIndex][0]; + var y_pos = s.gridData[neighbor.pointIndex][1]; + // Adjusting with s._barNudge + if (s.renderer.constructor == $.jqplot.BarRenderer) { + if (s.barDirection == "vertical") { + x_pos += s._barNudge; + } + else { + y_pos -= s._barNudge; + } + } + mr.draw(x_pos, y_pos, hl.highlightCanvas._ctx); + } + + function showTooltip(plot, series, neighbor) { + // neighbor looks like: {seriesIndex: i, pointIndex:j, gridData:p, data:s.data[j]} + // gridData should be x,y pixel coords on the grid. + // add the plot._gridPadding to that to get x,y in the target. + var hl = plot.plugins.highlighter; + var elem = hl._tooltipElem; + var serieshl = series.highlighter || {}; + + var opts = $.extend(true, {}, hl, serieshl); + + if (opts.useAxesFormatters) { + var xf = series._xaxis._ticks[0].formatter; + var yf = series._yaxis._ticks[0].formatter; + var xfstr = series._xaxis._ticks[0].formatString; + var yfstr = series._yaxis._ticks[0].formatString; + var str; + var xstr = xf(xfstr, neighbor.data[0]); + var ystrs = []; + for (var i=1; i<opts.yvalues+1; i++) { + ystrs.push(yf(yfstr, neighbor.data[i])); + } + if (typeof opts.formatString === 'string') { + switch (opts.tooltipAxes) { + case 'both': + case 'xy': + ystrs.unshift(xstr); + ystrs.unshift(opts.formatString); + str = $.jqplot.sprintf.apply($.jqplot.sprintf, ystrs); + break; + case 'yx': + ystrs.push(xstr); + ystrs.unshift(opts.formatString); + str = $.jqplot.sprintf.apply($.jqplot.sprintf, ystrs); + break; + case 'x': + str = $.jqplot.sprintf.apply($.jqplot.sprintf, [opts.formatString, xstr]); + break; + case 'y': + ystrs.unshift(opts.formatString); + str = $.jqplot.sprintf.apply($.jqplot.sprintf, ystrs); + break; + default: // same as xy + ystrs.unshift(xstr); + ystrs.unshift(opts.formatString); + str = $.jqplot.sprintf.apply($.jqplot.sprintf, ystrs); + break; + } + } + else { + switch (opts.tooltipAxes) { + case 'both': + case 'xy': + str = xstr; + for (var i=0; i<ystrs.length; i++) { + str += opts.tooltipSeparator + ystrs[i]; + } + break; + case 'yx': + str = ''; + for (var i=0; i<ystrs.length; i++) { + str += ystrs[i] + opts.tooltipSeparator; + } + str += xstr; + break; + case 'x': + str = xstr; + break; + case 'y': + str = ystrs.join(opts.tooltipSeparator); + break; + default: // same as 'xy' + str = xstr; + for (var i=0; i<ystrs.length; i++) { + str += opts.tooltipSeparator + ystrs[i]; + } + break; + + } + } + } + else { + var str; + if (typeof opts.formatString === 'string') { + str = $.jqplot.sprintf.apply($.jqplot.sprintf, [opts.formatString].concat(neighbor.data)); + } + + else { + if (opts.tooltipAxes == 'both' || opts.tooltipAxes == 'xy') { + str = $.jqplot.sprintf(opts.tooltipFormatString, neighbor.data[0]) + opts.tooltipSeparator + $.jqplot.sprintf(opts.tooltipFormatString, neighbor.data[1]); + } + else if (opts.tooltipAxes == 'yx') { + str = $.jqplot.sprintf(opts.tooltipFormatString, neighbor.data[1]) + opts.tooltipSeparator + $.jqplot.sprintf(opts.tooltipFormatString, neighbor.data[0]); + } + else if (opts.tooltipAxes == 'x') { + str = $.jqplot.sprintf(opts.tooltipFormatString, neighbor.data[0]); + } + else if (opts.tooltipAxes == 'y') { + str = $.jqplot.sprintf(opts.tooltipFormatString, neighbor.data[1]); + } + } + } + if ($.isFunction(opts.tooltipContentEditor)) { + // args str, seriesIndex, pointIndex are essential so the hook can look up + // extra data for the point. + str = opts.tooltipContentEditor(str, neighbor.seriesIndex, neighbor.pointIndex, plot); + } + elem.html(str); + var gridpos = {x:neighbor.gridData[0], y:neighbor.gridData[1]}; + var ms = 0; + var fact = 0.707; + if (series.markerRenderer.show == true) { + ms = (series.markerRenderer.size + opts.sizeAdjust)/2; + } + + var loc = locations; + if (series.fillToZero && series.fill && neighbor.data[1] < 0) { + loc = oppositeLocations; + } + + switch (loc[locationIndicies[opts.tooltipLocation]]) { + case 'nw': + var x = gridpos.x + plot._gridPadding.left - elem.outerWidth(true) - opts.tooltipOffset - fact * ms; + var y = gridpos.y + plot._gridPadding.top - opts.tooltipOffset - elem.outerHeight(true) - fact * ms; + break; + case 'n': + var x = gridpos.x + plot._gridPadding.left - elem.outerWidth(true)/2; + var y = gridpos.y + plot._gridPadding.top - opts.tooltipOffset - elem.outerHeight(true) - ms; + break; + case 'ne': + var x = gridpos.x + plot._gridPadding.left + opts.tooltipOffset + fact * ms; + var y = gridpos.y + plot._gridPadding.top - opts.tooltipOffset - elem.outerHeight(true) - fact * ms; + break; + case 'e': + var x = gridpos.x + plot._gridPadding.left + opts.tooltipOffset + ms; + var y = gridpos.y + plot._gridPadding.top - elem.outerHeight(true)/2; + break; + case 'se': + var x = gridpos.x + plot._gridPadding.left + opts.tooltipOffset + fact * ms; + var y = gridpos.y + plot._gridPadding.top + opts.tooltipOffset + fact * ms; + break; + case 's': + var x = gridpos.x + plot._gridPadding.left - elem.outerWidth(true)/2; + var y = gridpos.y + plot._gridPadding.top + opts.tooltipOffset + ms; + break; + case 'sw': + var x = gridpos.x + plot._gridPadding.left - elem.outerWidth(true) - opts.tooltipOffset - fact * ms; + var y = gridpos.y + plot._gridPadding.top + opts.tooltipOffset + fact * ms; + break; + case 'w': + var x = gridpos.x + plot._gridPadding.left - elem.outerWidth(true) - opts.tooltipOffset - ms; + var y = gridpos.y + plot._gridPadding.top - elem.outerHeight(true)/2; + break; + default: // same as 'nw' + var x = gridpos.x + plot._gridPadding.left - elem.outerWidth(true) - opts.tooltipOffset - fact * ms; + var y = gridpos.y + plot._gridPadding.top - opts.tooltipOffset - elem.outerHeight(true) - fact * ms; + break; + } + if (series.renderer.constructor == $.jqplot.BarRenderer) { + if (series.barDirection == 'vertical') { + x += series._barNudge; + } + else { + y -= series._barNudge; + } + } + elem.css('left', x); + elem.css('top', y); + if (opts.fadeTooltip) { + // Fix for stacked up animations. Thnanks Trevor! + elem.stop(true,true).fadeIn(opts.tooltipFadeSpeed); + } + else { + elem.show(); + } + elem = null; + + } + + function handleMove(ev, gridpos, datapos, neighbor, plot) { + var hl = plot.plugins.highlighter; + var c = plot.plugins.cursor; + if (hl.show) { + if (neighbor == null && hl.isHighlighting) { + var evt = jQuery.Event('jqplotHighlighterUnhighlight'); + plot.target.trigger(evt); + + var ctx = hl.highlightCanvas._ctx; + ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); + if (hl.fadeTooltip) { + hl._tooltipElem.fadeOut(hl.tooltipFadeSpeed); + } + else { + hl._tooltipElem.hide(); + } + if (hl.bringSeriesToFront) { + plot.restorePreviousSeriesOrder(); + } + hl.isHighlighting = false; + hl.currentNeighbor = null; + ctx = null; + } + else if (neighbor != null && plot.series[neighbor.seriesIndex].showHighlight && !hl.isHighlighting) { + var evt = jQuery.Event('jqplotHighlighterHighlight'); + evt.which = ev.which; + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data, plot]; + plot.target.trigger(evt, ins); + + hl.isHighlighting = true; + hl.currentNeighbor = neighbor; + if (hl.showMarker) { + draw(plot, neighbor); + } + if (plot.series[neighbor.seriesIndex].show && hl.showTooltip && (!c || !c._zoom.started)) { + showTooltip(plot, plot.series[neighbor.seriesIndex], neighbor); + } + if (hl.bringSeriesToFront) { + plot.moveSeriesToFront(neighbor.seriesIndex); + } + } + // check to see if we're highlighting the wrong point. + else if (neighbor != null && hl.isHighlighting && hl.currentNeighbor != neighbor) { + // highlighting the wrong point. + + // if new series allows highlighting, highlight new point. + if (plot.series[neighbor.seriesIndex].showHighlight) { + var ctx = hl.highlightCanvas._ctx; + ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); + hl.isHighlighting = true; + hl.currentNeighbor = neighbor; + if (hl.showMarker) { + draw(plot, neighbor); + } + if (plot.series[neighbor.seriesIndex].show && hl.showTooltip && (!c || !c._zoom.started)) { + showTooltip(plot, plot.series[neighbor.seriesIndex], neighbor); + } + if (hl.bringSeriesToFront) { + plot.moveSeriesToFront(neighbor.seriesIndex); + } + } + } + } + } +})(jQuery); \ No newline at end of file diff --git a/plugins/wp-statistics/assets/jqplot/plugins/jqplot.highlighter.min.js b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.highlighter.min.js new file mode 100644 index 0000000..8a40a25 --- /dev/null +++ b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.highlighter.min.js @@ -0,0 +1,4 @@ +/* jqplot 1.0.9 | (c) 2009-2016 Chris Leonello | jqplot.com + jsDate | (c) 2010-2016 Chris Leonello + */ +!function(a){function b(b,c){var d=b.plugins.highlighter,e=b.series[c.seriesIndex],f=e.markerRenderer,g=d.markerRenderer;g.style=f.style,g.lineWidth=f.lineWidth+d.lineWidthAdjust,g.size=f.size+d.sizeAdjust;var h=a.jqplot.getColorComponents(f.color),i=[h[0],h[1],h[2]],j=h[3]>=.6?.6*h[3]:h[3]*(2-h[3]);g.color="rgba("+i[0]+","+i[1]+","+i[2]+","+j+")",g.init();var k=e.gridData[c.pointIndex][0],l=e.gridData[c.pointIndex][1];e.renderer.constructor==a.jqplot.BarRenderer&&("vertical"==e.barDirection?k+=e._barNudge:l-=e._barNudge),g.draw(k,l,d.highlightCanvas._ctx)}function c(b,c,d){var h=b.plugins.highlighter,i=h._tooltipElem,j=c.highlighter||{},k=a.extend(!0,{},h,j);if(k.useAxesFormatters){for(var l,m=c._xaxis._ticks[0].formatter,n=c._yaxis._ticks[0].formatter,o=c._xaxis._ticks[0].formatString,p=c._yaxis._ticks[0].formatString,q=m(o,d.data[0]),r=[],s=1;s<k.yvalues+1;s++)r.push(n(p,d.data[s]));if("string"==typeof k.formatString)switch(k.tooltipAxes){case"both":case"xy":r.unshift(q),r.unshift(k.formatString),l=a.jqplot.sprintf.apply(a.jqplot.sprintf,r);break;case"yx":r.push(q),r.unshift(k.formatString),l=a.jqplot.sprintf.apply(a.jqplot.sprintf,r);break;case"x":l=a.jqplot.sprintf.apply(a.jqplot.sprintf,[k.formatString,q]);break;case"y":r.unshift(k.formatString),l=a.jqplot.sprintf.apply(a.jqplot.sprintf,r);break;default:r.unshift(q),r.unshift(k.formatString),l=a.jqplot.sprintf.apply(a.jqplot.sprintf,r)}else switch(k.tooltipAxes){case"both":case"xy":l=q;for(var s=0;s<r.length;s++)l+=k.tooltipSeparator+r[s];break;case"yx":l="";for(var s=0;s<r.length;s++)l+=r[s]+k.tooltipSeparator;l+=q;break;case"x":l=q;break;case"y":l=r.join(k.tooltipSeparator);break;default:l=q;for(var s=0;s<r.length;s++)l+=k.tooltipSeparator+r[s]}}else{var l;"string"==typeof k.formatString?l=a.jqplot.sprintf.apply(a.jqplot.sprintf,[k.formatString].concat(d.data)):"both"==k.tooltipAxes||"xy"==k.tooltipAxes?l=a.jqplot.sprintf(k.tooltipFormatString,d.data[0])+k.tooltipSeparator+a.jqplot.sprintf(k.tooltipFormatString,d.data[1]):"yx"==k.tooltipAxes?l=a.jqplot.sprintf(k.tooltipFormatString,d.data[1])+k.tooltipSeparator+a.jqplot.sprintf(k.tooltipFormatString,d.data[0]):"x"==k.tooltipAxes?l=a.jqplot.sprintf(k.tooltipFormatString,d.data[0]):"y"==k.tooltipAxes&&(l=a.jqplot.sprintf(k.tooltipFormatString,d.data[1]))}a.isFunction(k.tooltipContentEditor)&&(l=k.tooltipContentEditor(l,d.seriesIndex,d.pointIndex,b)),i.html(l);var t={x:d.gridData[0],y:d.gridData[1]},u=0,v=.707;1==c.markerRenderer.show&&(u=(c.markerRenderer.size+k.sizeAdjust)/2);var w=e;switch(c.fillToZero&&c.fill&&d.data[1]<0&&(w=g),w[f[k.tooltipLocation]]){case"nw":var x=t.x+b._gridPadding.left-i.outerWidth(!0)-k.tooltipOffset-v*u,y=t.y+b._gridPadding.top-k.tooltipOffset-i.outerHeight(!0)-v*u;break;case"n":var x=t.x+b._gridPadding.left-i.outerWidth(!0)/2,y=t.y+b._gridPadding.top-k.tooltipOffset-i.outerHeight(!0)-u;break;case"ne":var x=t.x+b._gridPadding.left+k.tooltipOffset+v*u,y=t.y+b._gridPadding.top-k.tooltipOffset-i.outerHeight(!0)-v*u;break;case"e":var x=t.x+b._gridPadding.left+k.tooltipOffset+u,y=t.y+b._gridPadding.top-i.outerHeight(!0)/2;break;case"se":var x=t.x+b._gridPadding.left+k.tooltipOffset+v*u,y=t.y+b._gridPadding.top+k.tooltipOffset+v*u;break;case"s":var x=t.x+b._gridPadding.left-i.outerWidth(!0)/2,y=t.y+b._gridPadding.top+k.tooltipOffset+u;break;case"sw":var x=t.x+b._gridPadding.left-i.outerWidth(!0)-k.tooltipOffset-v*u,y=t.y+b._gridPadding.top+k.tooltipOffset+v*u;break;case"w":var x=t.x+b._gridPadding.left-i.outerWidth(!0)-k.tooltipOffset-u,y=t.y+b._gridPadding.top-i.outerHeight(!0)/2;break;default:var x=t.x+b._gridPadding.left-i.outerWidth(!0)-k.tooltipOffset-v*u,y=t.y+b._gridPadding.top-k.tooltipOffset-i.outerHeight(!0)-v*u}c.renderer.constructor==a.jqplot.BarRenderer&&("vertical"==c.barDirection?x+=c._barNudge:y-=c._barNudge),i.css("left",x),i.css("top",y),k.fadeTooltip?i.stop(!0,!0).fadeIn(k.tooltipFadeSpeed):i.show(),i=null}function d(a,d,e,f,g){var h=g.plugins.highlighter,i=g.plugins.cursor;if(h.show)if(null==f&&h.isHighlighting){var j=jQuery.Event("jqplotHighlighterUnhighlight");g.target.trigger(j);var k=h.highlightCanvas._ctx;k.clearRect(0,0,k.canvas.width,k.canvas.height),h.fadeTooltip?h._tooltipElem.fadeOut(h.tooltipFadeSpeed):h._tooltipElem.hide(),h.bringSeriesToFront&&g.restorePreviousSeriesOrder(),h.isHighlighting=!1,h.currentNeighbor=null,k=null}else if(null!=f&&g.series[f.seriesIndex].showHighlight&&!h.isHighlighting){var j=jQuery.Event("jqplotHighlighterHighlight");j.which=a.which,j.pageX=a.pageX,j.pageY=a.pageY;var l=[f.seriesIndex,f.pointIndex,f.data,g];g.target.trigger(j,l),h.isHighlighting=!0,h.currentNeighbor=f,h.showMarker&&b(g,f),!g.series[f.seriesIndex].show||!h.showTooltip||i&&i._zoom.started||c(g,g.series[f.seriesIndex],f),h.bringSeriesToFront&&g.moveSeriesToFront(f.seriesIndex)}else if(null!=f&&h.isHighlighting&&h.currentNeighbor!=f&&g.series[f.seriesIndex].showHighlight){var k=h.highlightCanvas._ctx;k.clearRect(0,0,k.canvas.width,k.canvas.height),h.isHighlighting=!0,h.currentNeighbor=f,h.showMarker&&b(g,f),!g.series[f.seriesIndex].show||!h.showTooltip||i&&i._zoom.started||c(g,g.series[f.seriesIndex],f),h.bringSeriesToFront&&g.moveSeriesToFront(f.seriesIndex)}}a.jqplot.eventListenerHooks.push(["jqplotMouseMove",d]),a.jqplot.Highlighter=function(b){this.show=a.jqplot.config.enablePlugins,this.markerRenderer=new a.jqplot.MarkerRenderer({shadow:!1}),this.showMarker=!0,this.lineWidthAdjust=2.5,this.sizeAdjust=5,this.showTooltip=!0,this.tooltipLocation="nw",this.fadeTooltip=!0,this.tooltipFadeSpeed="fast",this.tooltipOffset=2,this.tooltipAxes="both",this.tooltipSeparator=", ",this.tooltipContentEditor=null,this.useAxesFormatters=!0,this.tooltipFormatString="%.5P",this.formatString=null,this.yvalues=1,this.bringSeriesToFront=!1,this._tooltipElem,this.isHighlighting=!1,this.currentNeighbor=null,a.extend(!0,this,b)};var e=["nw","n","ne","e","se","s","sw","w"],f={nw:0,n:1,ne:2,e:3,se:4,s:5,sw:6,w:7},g=["se","s","sw","w","nw","n","ne","e"];a.jqplot.Highlighter.init=function(b,c,d){var e=d||{};this.plugins.highlighter=new a.jqplot.Highlighter(e.highlighter)},a.jqplot.Highlighter.parseOptions=function(a,b){this.showHighlight=!0},a.jqplot.Highlighter.postPlotDraw=function(){this.plugins.highlighter&&this.plugins.highlighter.highlightCanvas&&(this.plugins.highlighter.highlightCanvas.resetCanvas(),this.plugins.highlighter.highlightCanvas=null),this.plugins.highlighter&&this.plugins.highlighter._tooltipElem&&(this.plugins.highlighter._tooltipElem.emptyForce(),this.plugins.highlighter._tooltipElem=null),this.plugins.highlighter.highlightCanvas=new a.jqplot.GenericCanvas,this.eventCanvas._elem.before(this.plugins.highlighter.highlightCanvas.createElement(this._gridPadding,"jqplot-highlight-canvas",this._plotDimensions,this)),this.plugins.highlighter.highlightCanvas.setContext();var b=document.createElement("div");this.plugins.highlighter._tooltipElem=a(b),b=null,this.plugins.highlighter._tooltipElem.addClass("jqplot-highlighter-tooltip"),this.plugins.highlighter._tooltipElem.css({position:"absolute",display:"none"}),this.eventCanvas._elem.before(this.plugins.highlighter._tooltipElem)},a.jqplot.preInitHooks.push(a.jqplot.Highlighter.init),a.jqplot.preParseSeriesOptionsHooks.push(a.jqplot.Highlighter.parseOptions),a.jqplot.postDrawHooks.push(a.jqplot.Highlighter.postPlotDraw)}(jQuery); \ No newline at end of file diff --git a/plugins/wp-statistics/assets/jqplot/plugins/jqplot.pieRenderer.js b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.pieRenderer.js new file mode 100644 index 0000000..ae30246 --- /dev/null +++ b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.pieRenderer.js @@ -0,0 +1,946 @@ +/** + * jqPlot + * Pure JavaScript plotting plugin using jQuery + * + * Version: 1.0.9 + * Revision: c465c44 + * + * Copyright (c) 2009-2016 Chris Leonello + * jqPlot is currently available for use in all personal or commercial projects + * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL + * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can + * choose the license that best suits your project and use it accordingly. + * + * Although not required, the author would appreciate an email letting him + * know of any substantial use of jqPlot. You can reach the author at: + * chris at jqplot dot com or see http://www.jqplot.com/info.php . + * + * If you are feeling kind and generous, consider supporting the project by + * making a donation at: http://www.jqplot.com/donate.php . + * + * sprintf functions contained in jqplot.sprintf.js by Ash Searle: + * + * version 2007.04.27 + * author Ash Searle + * http://hexmen.com/blog/2007/03/printf-sprintf/ + * http://hexmen.com/js/sprintf.js + * The author (Ash Searle) has placed this code in the public domain: + * "This code is unrestricted: you are free to use it however you like." + * + */ +(function($) { + /** + * Class: $.jqplot.PieRenderer + * Plugin renderer to draw a pie chart. + * x values, if present, will be used as slice labels. + * y values give slice size. + * + * To use this renderer, you need to include the + * pie renderer plugin, for example: + * + * > <script type="text/javascript" src="plugins/jqplot.pieRenderer.js"></script> + * + * Properties described here are passed into the $.jqplot function + * as options on the series renderer. For example: + * + * > plot2 = $.jqplot('chart2', [s1, s2], { + * > seriesDefaults: { + * > renderer:$.jqplot.PieRenderer, + * > rendererOptions:{ + * > sliceMargin: 2, + * > startAngle: -90 + * > } + * > } + * > }); + * + * A pie plot will trigger events on the plot target + * according to user interaction. All events return the event object, + * the series index, the point (slice) index, and the point data for + * the appropriate slice. + * + * 'jqplotDataMouseOver' - triggered when user mouseing over a slice. + * 'jqplotDataHighlight' - triggered the first time user mouses over a slice, + * if highlighting is enabled. + * 'jqplotDataUnhighlight' - triggered when a user moves the mouse out of + * a highlighted slice. + * 'jqplotLegendHighlight' - triggered the first time user mouses over a legend, + * if highlighting is enabled. + * 'jqplotLegendUnhighlight' - triggered when a user moves the mouse out of + * a highlighted legend. + * 'jqplotDataClick' - triggered when the user clicks on a slice. + * 'jqplotDataRightClick' - tiggered when the user right clicks on a slice if + * the "captureRightClick" option is set to true on the plot. + */ + $.jqplot.PieRenderer = function(){ + $.jqplot.LineRenderer.call(this); + }; + + $.jqplot.PieRenderer.prototype = new $.jqplot.LineRenderer(); + $.jqplot.PieRenderer.prototype.constructor = $.jqplot.PieRenderer; + + // called with scope of a series + $.jqplot.PieRenderer.prototype.init = function(options, plot) { + // Group: Properties + // + // prop: diameter + // Outer diameter of the pie, auto computed by default + this.diameter = null; + // prop: padding + // padding between the pie and plot edges, legend, etc. + this.padding = 20; + // prop: sliceMargin + // angular spacing between pie slices in degrees. + this.sliceMargin = 0; + // prop: fill + // true or false, whether to fil the slices. + this.fill = true; + // prop: shadowOffset + // offset of the shadow from the slice and offset of + // each succesive stroke of the shadow from the last. + this.shadowOffset = 2; + // prop: shadowAlpha + // transparency of the shadow (0 = transparent, 1 = opaque) + this.shadowAlpha = 0.07; + // prop: shadowDepth + // number of strokes to apply to the shadow, + // each stroke offset shadowOffset from the last. + this.shadowDepth = 5; + // prop: highlightMouseOver + // True to highlight slice when moused over. + // This must be false to enable highlightMouseDown to highlight when clicking on a slice. + this.highlightMouseOver = true; + // prop: highlightMouseDown + // True to highlight when a mouse button is pressed over a slice. + // This will be disabled if highlightMouseOver is true. + this.highlightMouseDown = false; + // prop: highlightColors + // an array of colors to use when highlighting a slice. + this.highlightColors = []; + // prop: dataLabels + // Either 'label', 'value', 'percent' or an array of labels to place on the pie slices. + // Defaults to percentage of each pie slice. + this.dataLabels = 'percent'; + // prop: showDataLabels + // true to show data labels on slices. + this.showDataLabels = false; + // prop: dataLabelFormatString + // Format string for data labels. If none, '%s' is used for "label" and for arrays, '%d' for value and '%d%%' for percentage. + this.dataLabelFormatString = null; + // prop: dataLabelThreshold + // Threshhold in percentage (0-100) of pie area, below which no label will be displayed. + // This applies to all label types, not just to percentage labels. + this.dataLabelThreshold = 3; + // prop: dataLabelPositionFactor + // A Multiplier (0-1) of the pie radius which controls position of label on slice. + // Increasing will slide label toward edge of pie, decreasing will slide label toward center of pie. + this.dataLabelPositionFactor = 0.52; + // prop: dataLabelNudge + // Number of pixels to slide the label away from (+) or toward (-) the center of the pie. + this.dataLabelNudge = 2; + // prop: dataLabelCenterOn + // True to center the data label at its position. + // False to set the inside facing edge of the label at its position. + this.dataLabelCenterOn = true; + // prop: startAngle + // Angle to start drawing pie in degrees. + // According to orientation of canvas coordinate system: + // 0 = on the positive x axis + // -90 = on the positive y axis. + // 90 = on the negaive y axis. + // 180 or - 180 = on the negative x axis. + this.startAngle = 0; + this.tickRenderer = $.jqplot.PieTickRenderer; + // prop: showSlice + // Array for whether the pie chart slice for a data element should be displayed. + // Containsg true or false for each data element. If not specified, defaults to true. + this.showSlice = []; + // Used as check for conditions where pie shouldn't be drawn. + this._drawData = true; + this._type = 'pie'; + + // if user has passed in highlightMouseDown option and not set highlightMouseOver, disable highlightMouseOver + if (options.highlightMouseDown && options.highlightMouseOver == null) { + options.highlightMouseOver = false; + } + + $.extend(true, this, options); + + if (this.sliceMargin < 0) { + this.sliceMargin = 0; + } + + this._diameter = null; + this._radius = null; + // array of [start,end] angles arrays, one for each slice. In radians. + this._sliceAngles = []; + // index of the currenty highlighted point, if any + this._highlightedPoint = null; + + // set highlight colors if none provided + if (this.highlightColors.length == 0) { + for (var i=0; i<this.seriesColors.length; i++){ + var rgba = $.jqplot.getColorComponents(this.seriesColors[i]); + var newrgb = [rgba[0], rgba[1], rgba[2]]; + var sum = newrgb[0] + newrgb[1] + newrgb[2]; + for (var j=0; j<3; j++) { + // when darkening, lowest color component can be is 60. + newrgb[j] = (sum > 570) ? newrgb[j] * 0.8 : newrgb[j] + 0.3 * (255 - newrgb[j]); + newrgb[j] = parseInt(newrgb[j], 10); + } + this.highlightColors.push('rgb('+newrgb[0]+','+newrgb[1]+','+newrgb[2]+')'); + } + } + + this.highlightColorGenerator = new $.jqplot.ColorGenerator(this.highlightColors); + + plot.postParseOptionsHooks.addOnce(postParseOptions); + plot.postInitHooks.addOnce(postInit); + plot.eventListenerHooks.addOnce('jqplotMouseMove', handleMove); + plot.eventListenerHooks.addOnce('jqplotMouseDown', handleMouseDown); + plot.eventListenerHooks.addOnce('jqplotMouseUp', handleMouseUp); + plot.eventListenerHooks.addOnce('jqplotClick', handleClick); + plot.eventListenerHooks.addOnce('jqplotRightClick', handleRightClick); + plot.postDrawHooks.addOnce(postPlotDraw); + }; + + $.jqplot.PieRenderer.prototype.setGridData = function(plot) { + // set gridData property. This will hold angle in radians of each data point. + var stack = []; + var td = []; + var sa = this.startAngle/180*Math.PI; + var tot = 0; + // don't know if we have any valid data yet, so set plot to not draw. + this._drawData = false; + for (var i=0; i<this.data.length; i++){ + if (this.data[i][1] != 0) { + // we have data, O.K. to draw. + this._drawData = true; + if (this.showSlice[i] === undefined) { + this.showSlice[i] = true; + } + } + stack.push(this.data[i][1]); + td.push([this.data[i][0]]); + if (i>0) { + stack[i] += stack[i-1]; + } + tot += this.data[i][1]; + } + var fact = Math.PI*2/stack[stack.length - 1]; + + for (var i=0; i<stack.length; i++) { + td[i][1] = stack[i] * fact; + td[i][2] = this.data[i][1]/tot; + } + this.gridData = td; + }; + + $.jqplot.PieRenderer.prototype.makeGridData = function(data, plot) { + var stack = []; + var td = []; + var tot = 0; + var sa = this.startAngle/180*Math.PI; + // don't know if we have any valid data yet, so set plot to not draw. + this._drawData = false; + for (var i=0; i<data.length; i++){ + if (this.data[i][1] != 0) { + // we have data, O.K. to draw. + this._drawData = true; + } + stack.push(data[i][1]); + td.push([data[i][0]]); + if (i>0) { + stack[i] += stack[i-1]; + } + tot += data[i][1]; + } + var fact = Math.PI*2/stack[stack.length - 1]; + + for (var i=0; i<stack.length; i++) { + td[i][1] = stack[i] * fact; + td[i][2] = data[i][1]/tot; + } + return td; + }; + + function calcRadiusAdjustment(ang) { + return Math.sin((ang - (ang-Math.PI) / 8 / Math.PI )/2.0); + } + + function calcRPrime(ang1, ang2, sliceMargin, fill, lineWidth) { + var rprime = 0; + var ang = ang2 - ang1; + var absang = Math.abs(ang); + var sm = sliceMargin; + if (fill == false) { + sm += lineWidth; + } + + if (sm > 0 && absang > 0.01 && absang < 6.282) { + rprime = parseFloat(sm) / 2.0 / calcRadiusAdjustment(ang); + } + + return rprime; + } + + $.jqplot.PieRenderer.prototype.drawSlice = function (ctx, ang1, ang2, color, isShadow) { + if (this._drawData) { + var r = this._radius; + var fill = this.fill; + var lineWidth = this.lineWidth; + var sm = this.sliceMargin; + if (this.fill == false) { + sm += this.lineWidth; + } + ctx.save(); + ctx.translate(this._center[0], this._center[1]); + + var rprime = calcRPrime(ang1, ang2, this.sliceMargin, this.fill, this.lineWidth); + + var transx = rprime * Math.cos((ang1 + ang2) / 2.0); + var transy = rprime * Math.sin((ang1 + ang2) / 2.0); + + if ((ang2 - ang1) <= Math.PI) { + r -= rprime; + } + else { + r += rprime; + } + + ctx.translate(transx, transy); + + if (isShadow) { + for (var i=0, l=this.shadowDepth; i<l; i++) { + ctx.save(); + ctx.translate(this.shadowOffset*Math.cos(this.shadowAngle/180*Math.PI), this.shadowOffset*Math.sin(this.shadowAngle/180*Math.PI)); + doDraw(r); + } + for (var i=0, l=this.shadowDepth; i<l; i++) { + ctx.restore(); + } + } + + else { + doDraw(r); + } + ctx.restore(); + } + + function doDraw (rad) { + // Fix for IE and Chrome that can't seem to draw circles correctly. + // ang2 should always be <= 2 pi since that is the way the data is converted. + // 2Pi = 6.2831853, Pi = 3.1415927 + if (ang2 > 6.282 + this.startAngle) { + ang2 = 6.282 + this.startAngle; + if (ang1 > ang2) { + ang1 = 6.281 + this.startAngle; + } + } + // Fix for IE, where it can't seem to handle 0 degree angles. Also avoids + // ugly line on unfilled pies. + if (ang1 >= ang2) { + return; + } + + ctx.beginPath(); + ctx.fillStyle = color; + ctx.strokeStyle = color; + ctx.lineWidth = lineWidth; + ctx.arc(0, 0, rad, ang1, ang2, false); + ctx.lineTo(0,0); + ctx.closePath(); + + if (fill) { + ctx.fill(); + } + else { + ctx.stroke(); + } + } + }; + + // called with scope of series + $.jqplot.PieRenderer.prototype.draw = function (ctx, gd, options, plot) { + var i; + var opts = (options != undefined) ? options : {}; + // offset and direction of offset due to legend placement + var offx = 0; + var offy = 0; + var trans = 1; + var colorGenerator = new $.jqplot.ColorGenerator(this.seriesColors); + var sliceColor; + + if (options.legendInfo && options.legendInfo.placement == 'insideGrid') { + var li = options.legendInfo; + switch (li.location) { + case 'nw': + offx = li.width + li.xoffset; + break; + case 'w': + offx = li.width + li.xoffset; + break; + case 'sw': + offx = li.width + li.xoffset; + break; + case 'ne': + offx = li.width + li.xoffset; + trans = -1; + break; + case 'e': + offx = li.width + li.xoffset; + trans = -1; + break; + case 'se': + offx = li.width + li.xoffset; + trans = -1; + break; + case 'n': + offy = li.height + li.yoffset; + break; + case 's': + offy = li.height + li.yoffset; + trans = -1; + break; + default: + break; + } + } + + var shadow = (opts.shadow != undefined) ? opts.shadow : this.shadow; + var fill = (opts.fill != undefined) ? opts.fill : this.fill; + + //see http://stackoverflow.com/questions/20221461/hidpi-retina-plot-drawing + var cw = parseInt(ctx.canvas.style.width); + var ch = parseInt(ctx.canvas.style.height); + // + + var w = cw - offx - 2 * this.padding; + var h = ch - offy - 2 * this.padding; + var mindim = Math.min(w,h); + var d = mindim; + + // Fixes issue #272. Thanks hugwijst! + // reset slice angles array. + this._sliceAngles = []; + + var sm = this.sliceMargin; + if (this.fill == false) { + sm += this.lineWidth; + } + + var rprime; + var maxrprime = 0; + + var ang, ang1, ang2, shadowColor; + var sa = this.startAngle / 180 * Math.PI; + + // have to pre-draw shadows, so loop throgh here and calculate some values also. + for (var i=0, l=gd.length; i<l; i++) { + ang1 = (i == 0) ? sa : gd[i-1][1] + sa; + ang2 = gd[i][1] + sa; + + this._sliceAngles.push([ang1, ang2]); + + rprime = calcRPrime(ang1, ang2, this.sliceMargin, this.fill, this.lineWidth); + + if (Math.abs(ang2-ang1) > Math.PI) { + maxrprime = Math.max(rprime, maxrprime); + } + } + + if (this.diameter != null && this.diameter > 0) { + this._diameter = this.diameter - 2*maxrprime; + } + else { + this._diameter = d - 2*maxrprime; + } + + // Need to check for undersized pie. This can happen if + // plot area too small and legend is too big. + if (this._diameter < 6) { + $.jqplot.log('Diameter of pie too small, not rendering.'); + return; + } + + var r = this._radius = this._diameter/2; + + this._center = [(cw - trans * offx)/2 + trans * offx + maxrprime * Math.cos(sa), (ch - trans*offy)/2 + trans * offy + maxrprime * Math.sin(sa)]; + + if (this.shadow) { + for (var i=0, l=gd.length; i<l; i++) { + shadowColor = 'rgba(0,0,0,'+this.shadowAlpha+')'; + this.renderer.drawSlice.call (this, ctx, this._sliceAngles[i][0], this._sliceAngles[i][1], shadowColor, true); + } + } + + for (var i=0; i<gd.length; i++) { + + sliceColor = colorGenerator.next(); + + if (this.showSlice[i]) { + this.renderer.drawSlice.call (this, ctx, this._sliceAngles[i][0], this._sliceAngles[i][1], sliceColor, false); + + if (this.showDataLabels && gd[i][2]*100 >= this.dataLabelThreshold) { + var fstr, avgang = (this._sliceAngles[i][0] + this._sliceAngles[i][1])/2, label; + + if (this.dataLabels == 'label') { + fstr = this.dataLabelFormatString || '%s'; + label = $.jqplot.sprintf(fstr, gd[i][0]); + } + else if (this.dataLabels == 'value') { + fstr = this.dataLabelFormatString || '%d'; + label = $.jqplot.sprintf(fstr, this.data[i][1]); + } + else if (this.dataLabels == 'percent') { + fstr = this.dataLabelFormatString || '%d%%'; + label = $.jqplot.sprintf(fstr, gd[i][2]*100); + } + else if (this.dataLabels.constructor == Array) { + fstr = this.dataLabelFormatString || '%s'; + label = $.jqplot.sprintf(fstr, this.dataLabels[i]); + } + + var fact = (this._radius ) * this.dataLabelPositionFactor + this.sliceMargin + this.dataLabelNudge; + + var x = this._center[0] + Math.cos(avgang) * fact + this.canvas._offsets.left; + var y = this._center[1] + Math.sin(avgang) * fact + this.canvas._offsets.top; + + var labelelem = $('<div class="jqplot-pie-series jqplot-data-label" style="position:absolute;">' + label + '</div>').insertBefore(plot.eventCanvas._elem); + if (this.dataLabelCenterOn) { + x -= labelelem.width()/2; + y -= labelelem.height()/2; + } + else { + x -= labelelem.width() * Math.sin(avgang/2); + y -= labelelem.height()/2; + } + x = Math.round(x); + y = Math.round(y); + labelelem.css({left: x, top: y}); + } + } + } + }; + + $.jqplot.PieAxisRenderer = function() { + $.jqplot.LinearAxisRenderer.call(this); + }; + + $.jqplot.PieAxisRenderer.prototype = new $.jqplot.LinearAxisRenderer(); + $.jqplot.PieAxisRenderer.prototype.constructor = $.jqplot.PieAxisRenderer; + + + // There are no traditional axes on a pie chart. We just need to provide + // dummy objects with properties so the plot will render. + // called with scope of axis object. + $.jqplot.PieAxisRenderer.prototype.init = function(options){ + // + this.tickRenderer = $.jqplot.PieTickRenderer; + $.extend(true, this, options); + // I don't think I'm going to need _dataBounds here. + // have to go Axis scaling in a way to fit chart onto plot area + // and provide u2p and p2u functionality for mouse cursor, etc. + // for convienence set _dataBounds to 0 and 100 and + // set min/max to 0 and 100. + this._dataBounds = {min:0, max:100}; + this.min = 0; + this.max = 100; + this.showTicks = false; + this.ticks = []; + this.showMark = false; + this.show = false; + }; + + + + + $.jqplot.PieLegendRenderer = function(){ + $.jqplot.TableLegendRenderer.call(this); + }; + + $.jqplot.PieLegendRenderer.prototype = new $.jqplot.TableLegendRenderer(); + $.jqplot.PieLegendRenderer.prototype.constructor = $.jqplot.PieLegendRenderer; + + /** + * Class: $.jqplot.PieLegendRenderer + * Legend Renderer specific to pie plots. Set by default + * when user creates a pie plot. + */ + $.jqplot.PieLegendRenderer.prototype.init = function(options) { + // Group: Properties + // + // prop: numberRows + // Maximum number of rows in the legend. 0 or null for unlimited. + this.numberRows = null; + // prop: numberColumns + // Maximum number of columns in the legend. 0 or null for unlimited. + this.numberColumns = null; + // prop: width + // Fixed with of legend. 0 or null for auto size + this.width = null; + $.extend(true, this, options); + }; + + // called with context of legend + $.jqplot.PieLegendRenderer.prototype.draw = function() { + var legend = this; + if (this.show) { + var series = this._series; + + + this._elem = $(document.createElement('table')); + this._elem.addClass('jqplot-table-legend'); + + var ss = {position:'absolute'}; + if (this.background) { + ss['background'] = this.background; + } + if (this.border) { + ss['border'] = this.border; + } + if (this.fontSize) { + ss['fontSize'] = this.fontSize; + } + if (this.fontFamily) { + ss['fontFamily'] = this.fontFamily; + } + if (this.textColor) { + ss['textColor'] = this.textColor; + } + if (this.marginTop != null) { + ss['marginTop'] = this.marginTop; + } + if (this.marginBottom != null) { + ss['marginBottom'] = this.marginBottom; + } + if (this.marginLeft != null) { + ss['marginLeft'] = this.marginLeft; + } + if (this.marginRight != null) { + ss['marginRight'] = this.marginRight; + } + + this._elem.css(ss); + + // Pie charts legends don't go by number of series, but by number of data points + // in the series. Refactor things here for that. + + var pad = false, + reverse = false, + nr, + nc; + var s = series[0]; + var colorGenerator = new $.jqplot.ColorGenerator(s.seriesColors); + + if (s.show) { + var pd = s.data; + if (this.numberRows) { + nr = this.numberRows; + if (!this.numberColumns){ + nc = Math.ceil(pd.length/nr); + } + else{ + nc = this.numberColumns; + } + } + else if (this.numberColumns) { + nc = this.numberColumns; + nr = Math.ceil(pd.length/this.numberColumns); + } + else { + nr = pd.length; + nc = 1; + } + + var i, j; + var tr, td1, td2; + var lt, tt, rs, color; + var idx = 0; + var div0, div1; + + for (i=0; i<nr; i++) { + tr = $(document.createElement('tr')); + tr.addClass('jqplot-table-legend'); + + if (reverse){ + tr.prependTo(this._elem); + } + + else{ + tr.appendTo(this._elem); + } + + for (j=0; j<nc; j++) { + if (idx < pd.length) { + tt = ''; + if (this.labels[idx]) { + lt = this.labels[idx]; + } + else { + if (typeof pd[idx][0] === 'object') { + lt = pd[idx][0][0].toString(); + tt = pd[idx][0][1].toString(); + } + else { + lt = pd[idx][0].toString(); + } + } + //lt = this.labels[idx] || pd[idx][0].toString(); + color = colorGenerator.next(); + if (!reverse){ + if (i>0){ + pad = true; + } + else{ + pad = false; + } + } + else{ + if (i == nr -1){ + pad = false; + } + else{ + pad = true; + } + } + rs = (pad) ? this.rowSpacing : '0'; + + + + td1 = $(document.createElement('td')); + td1.addClass('jqplot-table-legend jqplot-table-legend-swatch'); + td1.css({textAlign: 'center', paddingTop: rs}); + + div0 = $(document.createElement('div')); + div0.addClass('jqplot-table-legend-swatch-outline'); + if (tt !== '') { + div0.attr("title", tt); + } + div1 = $(document.createElement('div')); + div1.addClass('jqplot-table-legend-swatch'); + div1.css({backgroundColor: color, borderColor: color}); + td1.append(div0.append(div1)); + + td2 = $(document.createElement('td')); + td2.addClass('jqplot-table-legend jqplot-table-legend-label'); + td2.css('paddingTop', rs); + + if (this.escapeHtml){ + td2.text(lt); + } + else { + td2.html('<a title="' + tt + '">' + lt + "</a>"); + } + if (reverse) { + td2.prependTo(tr); + td1.prependTo(tr); + } + else { + td1.appendTo(tr); + td2.appendTo(tr); + } + pad = true; + } + idx++; + } + } + } + } + return this._elem; + }; + + $.jqplot.PieRenderer.prototype.handleMove = function(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + plot.target.trigger('jqplotDataMouseOver', ins); + if (plot.series[ins[0]].highlightMouseOver && !(ins[0] == plot.plugins.pieRenderer.highlightedSeriesIndex && ins[1] == plot.series[ins[0]]._highlightedPoint)) { + plot.target.trigger('jqplotDataHighlight', ins); + highlight (plot, ins[0], ins[1]); + } + } + else if (neighbor == null) { + unhighlight (plot); + } + }; + + + // this.eventCanvas._elem.bind($.jqplot.eventListenerHooks[i][0], {plot:this}, $.jqplot.eventListenerHooks[i][1]); + + // setup default renderers for axes and legend so user doesn't have to + // called with scope of plot + function preInit(target, data, options) { + options = options || {}; + options.axesDefaults = options.axesDefaults || {}; + options.legend = options.legend || {}; + options.seriesDefaults = options.seriesDefaults || {}; + // only set these if there is a pie series + var setopts = false; + if (options.seriesDefaults.renderer == $.jqplot.PieRenderer) { + setopts = true; + } + else if (options.series) { + for (var i=0; i < options.series.length; i++) { + if (options.series[i].renderer == $.jqplot.PieRenderer) { + setopts = true; + } + } + } + + if (setopts) { + options.axesDefaults.renderer = $.jqplot.PieAxisRenderer; + options.legend.renderer = options.legend.renderer || $.jqplot.PieLegendRenderer; + options.legend.preDraw = true; + options.seriesDefaults.pointLabels = {show: false}; + } + } + + function postInit(target, data, options) { + for (var i=0; i<this.series.length; i++) { + if (this.series[i].renderer.constructor == $.jqplot.PieRenderer) { + // don't allow mouseover and mousedown at same time. + if (this.series[i].highlightMouseOver) { + this.series[i].highlightMouseDown = false; + } + } + } + } + + // called with scope of plot + function postParseOptions(options) { + for (var i=0; i<this.series.length; i++) { + this.series[i].seriesColors = this.seriesColors; + this.series[i].colorGenerator = $.jqplot.colorGenerator; + } + } + + function highlight (plot, sidx, pidx) { + if (plot.series[sidx].showSlice[pidx]) { + var s = plot.series[sidx]; + var canvas = plot.plugins.pieRenderer.highlightCanvas; + canvas._ctx.clearRect(0,0,canvas._ctx.canvas.width, canvas._ctx.canvas.height); + s._highlightedPoint = pidx; + plot.plugins.pieRenderer.highlightedSeriesIndex = sidx; + s.renderer.drawSlice.call(s, canvas._ctx, s._sliceAngles[pidx][0], s._sliceAngles[pidx][1], s.highlightColorGenerator.get(pidx), false); + } + } + + function unhighlight (plot) { + var canvas = plot.plugins.pieRenderer.highlightCanvas; + canvas._ctx.clearRect(0,0, canvas._ctx.canvas.width, canvas._ctx.canvas.height); + for (var i=0; i<plot.series.length; i++) { + plot.series[i]._highlightedPoint = null; + } + plot.plugins.pieRenderer.highlightedSeriesIndex = null; + plot.target.trigger('jqplotDataUnhighlight'); + } + + function handleMove(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + var evt1 = jQuery.Event('jqplotDataMouseOver'); + evt1.pageX = ev.pageX; + evt1.pageY = ev.pageY; + plot.target.trigger(evt1, ins); + if (plot.series[ins[0]].highlightMouseOver && !(ins[0] == plot.plugins.pieRenderer.highlightedSeriesIndex && ins[1] == plot.series[ins[0]]._highlightedPoint)) { + var evt = jQuery.Event('jqplotDataHighlight'); + evt.which = ev.which; + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + highlight (plot, ins[0], ins[1]); + } + } + else if (neighbor == null) { + unhighlight (plot); + } + } + + function handleMouseDown(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + if (plot.series[ins[0]].highlightMouseDown && !(ins[0] == plot.plugins.pieRenderer.highlightedSeriesIndex && ins[1] == plot.series[ins[0]]._highlightedPoint)) { + var evt = jQuery.Event('jqplotDataHighlight'); + evt.which = ev.which; + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + highlight (plot, ins[0], ins[1]); + } + } + else if (neighbor == null) { + unhighlight (plot); + } + } + + function handleMouseUp(ev, gridpos, datapos, neighbor, plot) { + var idx = plot.plugins.pieRenderer.highlightedSeriesIndex; + if (idx != null && plot.series[idx].highlightMouseDown) { + unhighlight(plot); + } + } + + function handleClick(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + var evt = jQuery.Event('jqplotDataClick'); + evt.which = ev.which; + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + } + } + + function handleRightClick(ev, gridpos, datapos, neighbor, plot) { + if (neighbor) { + var ins = [neighbor.seriesIndex, neighbor.pointIndex, neighbor.data]; + var idx = plot.plugins.pieRenderer.highlightedSeriesIndex; + if (idx != null && plot.series[idx].highlightMouseDown) { + unhighlight(plot); + } + var evt = jQuery.Event('jqplotDataRightClick'); + evt.which = ev.which; + evt.pageX = ev.pageX; + evt.pageY = ev.pageY; + plot.target.trigger(evt, ins); + } + } + + // called within context of plot + // create a canvas which we can draw on. + // insert it before the eventCanvas, so eventCanvas will still capture events. + function postPlotDraw() { + // Memory Leaks patch + if (this.plugins.pieRenderer && this.plugins.pieRenderer.highlightCanvas) { + this.plugins.pieRenderer.highlightCanvas.resetCanvas(); + this.plugins.pieRenderer.highlightCanvas = null; + } + + this.plugins.pieRenderer = {highlightedSeriesIndex:null}; + this.plugins.pieRenderer.highlightCanvas = new $.jqplot.GenericCanvas(); + + // do we have any data labels? if so, put highlight canvas before those + var labels = $(this.targetId+' .jqplot-data-label'); + if (labels.length) { + $(labels[0]).before(this.plugins.pieRenderer.highlightCanvas.createElement(this._gridPadding, 'jqplot-pieRenderer-highlight-canvas', this._plotDimensions, this)); + } + // else put highlight canvas before event canvas. + else { + this.eventCanvas._elem.before(this.plugins.pieRenderer.highlightCanvas.createElement(this._gridPadding, 'jqplot-pieRenderer-highlight-canvas', this._plotDimensions, this)); + } + + var hctx = this.plugins.pieRenderer.highlightCanvas.setContext(); + this.eventCanvas._elem.bind('mouseleave', {plot:this}, function (ev) { unhighlight(ev.data.plot); }); + } + + $.jqplot.preInitHooks.push(preInit); + + $.jqplot.PieTickRenderer = function() { + $.jqplot.AxisTickRenderer.call(this); + }; + + $.jqplot.PieTickRenderer.prototype = new $.jqplot.AxisTickRenderer(); + $.jqplot.PieTickRenderer.prototype.constructor = $.jqplot.PieTickRenderer; + +})(jQuery); + + \ No newline at end of file diff --git a/plugins/wp-statistics/assets/jqplot/plugins/jqplot.pieRenderer.min.js b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.pieRenderer.min.js new file mode 100644 index 0000000..f14bfe4 --- /dev/null +++ b/plugins/wp-statistics/assets/jqplot/plugins/jqplot.pieRenderer.min.js @@ -0,0 +1,4 @@ +/* jqplot 1.0.9 | (c) 2009-2016 Chris Leonello | jqplot.com + jsDate | (c) 2010-2016 Chris Leonello + */ +!function(a){function b(a){return Math.sin((a-(a-Math.PI)/8/Math.PI)/2)}function c(a,c,d,e,f){var g=0,h=c-a,i=Math.abs(h),j=d;return 0==e&&(j+=f),j>0&&i>.01&&i<6.282&&(g=parseFloat(j)/2/b(h)),g}function d(b,c,d){d=d||{},d.axesDefaults=d.axesDefaults||{},d.legend=d.legend||{},d.seriesDefaults=d.seriesDefaults||{};var e=!1;if(d.seriesDefaults.renderer==a.jqplot.PieRenderer)e=!0;else if(d.series)for(var f=0;f<d.series.length;f++)d.series[f].renderer==a.jqplot.PieRenderer&&(e=!0);e&&(d.axesDefaults.renderer=a.jqplot.PieAxisRenderer,d.legend.renderer=d.legend.renderer||a.jqplot.PieLegendRenderer,d.legend.preDraw=!0,d.seriesDefaults.pointLabels={show:!1})}function e(b,c,d){for(var e=0;e<this.series.length;e++)this.series[e].renderer.constructor==a.jqplot.PieRenderer&&this.series[e].highlightMouseOver&&(this.series[e].highlightMouseDown=!1)}function f(b){for(var c=0;c<this.series.length;c++)this.series[c].seriesColors=this.seriesColors,this.series[c].colorGenerator=a.jqplot.colorGenerator}function g(a,b,c){if(a.series[b].showSlice[c]){var d=a.series[b],e=a.plugins.pieRenderer.highlightCanvas;e._ctx.clearRect(0,0,e._ctx.canvas.width,e._ctx.canvas.height),d._highlightedPoint=c,a.plugins.pieRenderer.highlightedSeriesIndex=b,d.renderer.drawSlice.call(d,e._ctx,d._sliceAngles[c][0],d._sliceAngles[c][1],d.highlightColorGenerator.get(c),!1)}}function h(a){var b=a.plugins.pieRenderer.highlightCanvas;b._ctx.clearRect(0,0,b._ctx.canvas.width,b._ctx.canvas.height);for(var c=0;c<a.series.length;c++)a.series[c]._highlightedPoint=null;a.plugins.pieRenderer.highlightedSeriesIndex=null,a.target.trigger("jqplotDataUnhighlight")}function i(a,b,c,d,e){if(d){var f=[d.seriesIndex,d.pointIndex,d.data],i=jQuery.Event("jqplotDataMouseOver");if(i.pageX=a.pageX,i.pageY=a.pageY,e.target.trigger(i,f),e.series[f[0]].highlightMouseOver&&(f[0]!=e.plugins.pieRenderer.highlightedSeriesIndex||f[1]!=e.series[f[0]]._highlightedPoint)){var j=jQuery.Event("jqplotDataHighlight");j.which=a.which,j.pageX=a.pageX,j.pageY=a.pageY,e.target.trigger(j,f),g(e,f[0],f[1])}}else null==d&&h(e)}function j(a,b,c,d,e){if(d){var f=[d.seriesIndex,d.pointIndex,d.data];if(e.series[f[0]].highlightMouseDown&&(f[0]!=e.plugins.pieRenderer.highlightedSeriesIndex||f[1]!=e.series[f[0]]._highlightedPoint)){var i=jQuery.Event("jqplotDataHighlight");i.which=a.which,i.pageX=a.pageX,i.pageY=a.pageY,e.target.trigger(i,f),g(e,f[0],f[1])}}else null==d&&h(e)}function k(a,b,c,d,e){var f=e.plugins.pieRenderer.highlightedSeriesIndex;null!=f&&e.series[f].highlightMouseDown&&h(e)}function l(a,b,c,d,e){if(d){var f=[d.seriesIndex,d.pointIndex,d.data],g=jQuery.Event("jqplotDataClick");g.which=a.which,g.pageX=a.pageX,g.pageY=a.pageY,e.target.trigger(g,f)}}function m(a,b,c,d,e){if(d){var f=[d.seriesIndex,d.pointIndex,d.data],g=e.plugins.pieRenderer.highlightedSeriesIndex;null!=g&&e.series[g].highlightMouseDown&&h(e);var i=jQuery.Event("jqplotDataRightClick");i.which=a.which,i.pageX=a.pageX,i.pageY=a.pageY,e.target.trigger(i,f)}}function n(){this.plugins.pieRenderer&&this.plugins.pieRenderer.highlightCanvas&&(this.plugins.pieRenderer.highlightCanvas.resetCanvas(),this.plugins.pieRenderer.highlightCanvas=null),this.plugins.pieRenderer={highlightedSeriesIndex:null},this.plugins.pieRenderer.highlightCanvas=new a.jqplot.GenericCanvas;var b=a(this.targetId+" .jqplot-data-label");b.length?a(b[0]).before(this.plugins.pieRenderer.highlightCanvas.createElement(this._gridPadding,"jqplot-pieRenderer-highlight-canvas",this._plotDimensions,this)):this.eventCanvas._elem.before(this.plugins.pieRenderer.highlightCanvas.createElement(this._gridPadding,"jqplot-pieRenderer-highlight-canvas",this._plotDimensions,this));this.plugins.pieRenderer.highlightCanvas.setContext();this.eventCanvas._elem.bind("mouseleave",{plot:this},function(a){h(a.data.plot)})}a.jqplot.PieRenderer=function(){a.jqplot.LineRenderer.call(this)},a.jqplot.PieRenderer.prototype=new a.jqplot.LineRenderer,a.jqplot.PieRenderer.prototype.constructor=a.jqplot.PieRenderer,a.jqplot.PieRenderer.prototype.init=function(b,c){if(this.diameter=null,this.padding=20,this.sliceMargin=0,this.fill=!0,this.shadowOffset=2,this.shadowAlpha=.07,this.shadowDepth=5,this.highlightMouseOver=!0,this.highlightMouseDown=!1,this.highlightColors=[],this.dataLabels="percent",this.showDataLabels=!1,this.dataLabelFormatString=null,this.dataLabelThreshold=3,this.dataLabelPositionFactor=.52,this.dataLabelNudge=2,this.dataLabelCenterOn=!0,this.startAngle=0,this.tickRenderer=a.jqplot.PieTickRenderer,this.showSlice=[],this._drawData=!0,this._type="pie",b.highlightMouseDown&&null==b.highlightMouseOver&&(b.highlightMouseOver=!1),a.extend(!0,this,b),this.sliceMargin<0&&(this.sliceMargin=0),this._diameter=null,this._radius=null,this._sliceAngles=[],this._highlightedPoint=null,0==this.highlightColors.length)for(var d=0;d<this.seriesColors.length;d++){for(var g=a.jqplot.getColorComponents(this.seriesColors[d]),h=[g[0],g[1],g[2]],o=h[0]+h[1]+h[2],p=0;p<3;p++)h[p]=o>570?.8*h[p]:h[p]+.3*(255-h[p]),h[p]=parseInt(h[p],10);this.highlightColors.push("rgb("+h[0]+","+h[1]+","+h[2]+")")}this.highlightColorGenerator=new a.jqplot.ColorGenerator(this.highlightColors),c.postParseOptionsHooks.addOnce(f),c.postInitHooks.addOnce(e),c.eventListenerHooks.addOnce("jqplotMouseMove",i),c.eventListenerHooks.addOnce("jqplotMouseDown",j),c.eventListenerHooks.addOnce("jqplotMouseUp",k),c.eventListenerHooks.addOnce("jqplotClick",l),c.eventListenerHooks.addOnce("jqplotRightClick",m),c.postDrawHooks.addOnce(n)},a.jqplot.PieRenderer.prototype.setGridData=function(a){var b=[],c=[],d=(this.startAngle/180*Math.PI,0);this._drawData=!1;for(var e=0;e<this.data.length;e++)0!=this.data[e][1]&&(this._drawData=!0,void 0===this.showSlice[e]&&(this.showSlice[e]=!0)),b.push(this.data[e][1]),c.push([this.data[e][0]]),e>0&&(b[e]+=b[e-1]),d+=this.data[e][1];for(var f=2*Math.PI/b[b.length-1],e=0;e<b.length;e++)c[e][1]=b[e]*f,c[e][2]=this.data[e][1]/d;this.gridData=c},a.jqplot.PieRenderer.prototype.makeGridData=function(a,b){var c=[],d=[],e=0;this.startAngle/180*Math.PI;this._drawData=!1;for(var f=0;f<a.length;f++)0!=this.data[f][1]&&(this._drawData=!0),c.push(a[f][1]),d.push([a[f][0]]),f>0&&(c[f]+=c[f-1]),e+=a[f][1];for(var g=2*Math.PI/c[c.length-1],f=0;f<c.length;f++)d[f][1]=c[f]*g,d[f][2]=a[f][1]/e;return d},a.jqplot.PieRenderer.prototype.drawSlice=function(a,b,d,e,f){function g(c){d>6.282+this.startAngle&&(d=6.282+this.startAngle,b>d&&(b=6.281+this.startAngle)),b>=d||(a.beginPath(),a.fillStyle=e,a.strokeStyle=e,a.lineWidth=j,a.arc(0,0,c,b,d,!1),a.lineTo(0,0),a.closePath(),i?a.fill():a.stroke())}if(this._drawData){var h=this._radius,i=this.fill,j=this.lineWidth,k=this.sliceMargin;0==this.fill&&(k+=this.lineWidth),a.save(),a.translate(this._center[0],this._center[1]);var l=c(b,d,this.sliceMargin,this.fill,this.lineWidth),m=l*Math.cos((b+d)/2),n=l*Math.sin((b+d)/2);if(d-b<=Math.PI?h-=l:h+=l,a.translate(m,n),f){for(var o=0,p=this.shadowDepth;o<p;o++)a.save(),a.translate(this.shadowOffset*Math.cos(this.shadowAngle/180*Math.PI),this.shadowOffset*Math.sin(this.shadowAngle/180*Math.PI)),g(h);for(var o=0,p=this.shadowDepth;o<p;o++)a.restore()}else g(h);a.restore()}},a.jqplot.PieRenderer.prototype.draw=function(b,d,e,f){var g,h,i=void 0!=e?e:{},j=0,k=0,l=1,m=new a.jqplot.ColorGenerator(this.seriesColors);if(e.legendInfo&&"insideGrid"==e.legendInfo.placement){var n=e.legendInfo;switch(n.location){case"nw":j=n.width+n.xoffset;break;case"w":j=n.width+n.xoffset;break;case"sw":j=n.width+n.xoffset;break;case"ne":j=n.width+n.xoffset,l=-1;break;case"e":j=n.width+n.xoffset,l=-1;break;case"se":j=n.width+n.xoffset,l=-1;break;case"n":k=n.height+n.yoffset;break;case"s":k=n.height+n.yoffset,l=-1}}var o=(void 0!=i.shadow?i.shadow:this.shadow,void 0!=i.fill?i.fill:this.fill,parseInt(b.canvas.style.width)),p=parseInt(b.canvas.style.height),q=o-j-2*this.padding,r=p-k-2*this.padding,s=Math.min(q,r),t=s;this._sliceAngles=[];var u=this.sliceMargin;0==this.fill&&(u+=this.lineWidth);for(var v,w,x,y,z=0,A=this.startAngle/180*Math.PI,g=0,B=d.length;g<B;g++)w=0==g?A:d[g-1][1]+A,x=d[g][1]+A,this._sliceAngles.push([w,x]),v=c(w,x,this.sliceMargin,this.fill,this.lineWidth),Math.abs(x-w)>Math.PI&&(z=Math.max(v,z));if(null!=this.diameter&&this.diameter>0?this._diameter=this.diameter-2*z:this._diameter=t-2*z,this._diameter<6)return void a.jqplot.log("Diameter of pie too small, not rendering.");this._radius=this._diameter/2;if(this._center=[(o-l*j)/2+l*j+z*Math.cos(A),(p-l*k)/2+l*k+z*Math.sin(A)],this.shadow)for(var g=0,B=d.length;g<B;g++)y="rgba(0,0,0,"+this.shadowAlpha+")",this.renderer.drawSlice.call(this,b,this._sliceAngles[g][0],this._sliceAngles[g][1],y,!0);for(var g=0;g<d.length;g++)if(h=m.next(),this.showSlice[g]&&(this.renderer.drawSlice.call(this,b,this._sliceAngles[g][0],this._sliceAngles[g][1],h,!1),this.showDataLabels&&100*d[g][2]>=this.dataLabelThreshold)){var C,D,E=(this._sliceAngles[g][0]+this._sliceAngles[g][1])/2;"label"==this.dataLabels?(C=this.dataLabelFormatString||"%s",D=a.jqplot.sprintf(C,d[g][0])):"value"==this.dataLabels?(C=this.dataLabelFormatString||"%d",D=a.jqplot.sprintf(C,this.data[g][1])):"percent"==this.dataLabels?(C=this.dataLabelFormatString||"%d%%",D=a.jqplot.sprintf(C,100*d[g][2])):this.dataLabels.constructor==Array&&(C=this.dataLabelFormatString||"%s",D=a.jqplot.sprintf(C,this.dataLabels[g]));var F=this._radius*this.dataLabelPositionFactor+this.sliceMargin+this.dataLabelNudge,G=this._center[0]+Math.cos(E)*F+this.canvas._offsets.left,H=this._center[1]+Math.sin(E)*F+this.canvas._offsets.top,I=a('<div class="jqplot-pie-series jqplot-data-label" style="position:absolute;">'+D+"</div>").insertBefore(f.eventCanvas._elem);this.dataLabelCenterOn?(G-=I.width()/2,H-=I.height()/2):(G-=I.width()*Math.sin(E/2),H-=I.height()/2),G=Math.round(G),H=Math.round(H),I.css({left:G,top:H})}},a.jqplot.PieAxisRenderer=function(){a.jqplot.LinearAxisRenderer.call(this)},a.jqplot.PieAxisRenderer.prototype=new a.jqplot.LinearAxisRenderer,a.jqplot.PieAxisRenderer.prototype.constructor=a.jqplot.PieAxisRenderer,a.jqplot.PieAxisRenderer.prototype.init=function(b){this.tickRenderer=a.jqplot.PieTickRenderer,a.extend(!0,this,b),this._dataBounds={min:0,max:100},this.min=0,this.max=100,this.showTicks=!1,this.ticks=[],this.showMark=!1,this.show=!1},a.jqplot.PieLegendRenderer=function(){a.jqplot.TableLegendRenderer.call(this)},a.jqplot.PieLegendRenderer.prototype=new a.jqplot.TableLegendRenderer,a.jqplot.PieLegendRenderer.prototype.constructor=a.jqplot.PieLegendRenderer,a.jqplot.PieLegendRenderer.prototype.init=function(b){this.numberRows=null,this.numberColumns=null,this.width=null,a.extend(!0,this,b)},a.jqplot.PieLegendRenderer.prototype.draw=function(){if(this.show){var b=this._series;this._elem=a(document.createElement("table")),this._elem.addClass("jqplot-table-legend");var c={position:"absolute"};this.background&&(c.background=this.background),this.border&&(c.border=this.border),this.fontSize&&(c.fontSize=this.fontSize),this.fontFamily&&(c.fontFamily=this.fontFamily),this.textColor&&(c.textColor=this.textColor),null!=this.marginTop&&(c.marginTop=this.marginTop),null!=this.marginBottom&&(c.marginBottom=this.marginBottom),null!=this.marginLeft&&(c.marginLeft=this.marginLeft),null!=this.marginRight&&(c.marginRight=this.marginRight),this._elem.css(c);var d,e,f=!1,g=!1,h=b[0],i=new a.jqplot.ColorGenerator(h.seriesColors);if(h.show){var j=h.data;this.numberRows?(d=this.numberRows,e=this.numberColumns?this.numberColumns:Math.ceil(j.length/d)):this.numberColumns?(e=this.numberColumns,d=Math.ceil(j.length/this.numberColumns)):(d=j.length,e=1);var k,l,m,n,o,p,q,r,s,t,u,v=0;for(k=0;k<d;k++)for(m=a(document.createElement("tr")),m.addClass("jqplot-table-legend"),g?m.prependTo(this._elem):m.appendTo(this._elem),l=0;l<e;l++)v<j.length&&(q="",this.labels[v]?p=this.labels[v]:"object"==typeof j[v][0]?(p=j[v][0][0].toString(),q=j[v][0][1].toString()):p=j[v][0].toString(),s=i.next(),f=g?k!=d-1:k>0,r=f?this.rowSpacing:"0",n=a(document.createElement("td")),n.addClass("jqplot-table-legend jqplot-table-legend-swatch"),n.css({textAlign:"center",paddingTop:r}),t=a(document.createElement("div")),t.addClass("jqplot-table-legend-swatch-outline"),""!==q&&t.attr("title",q),u=a(document.createElement("div")),u.addClass("jqplot-table-legend-swatch"),u.css({backgroundColor:s,borderColor:s}),n.append(t.append(u)),o=a(document.createElement("td")),o.addClass("jqplot-table-legend jqplot-table-legend-label"),o.css("paddingTop",r),this.escapeHtml?o.text(p):o.html('<a title="'+q+'">'+p+"</a>"),g?(o.prependTo(m),n.prependTo(m)):(n.appendTo(m),o.appendTo(m)),f=!0),v++}}return this._elem},a.jqplot.PieRenderer.prototype.handleMove=function(a,b,c,d,e){if(d){var f=[d.seriesIndex,d.pointIndex,d.data];e.target.trigger("jqplotDataMouseOver",f),!e.series[f[0]].highlightMouseOver||f[0]==e.plugins.pieRenderer.highlightedSeriesIndex&&f[1]==e.series[f[0]]._highlightedPoint||(e.target.trigger("jqplotDataHighlight",f),g(e,f[0],f[1]))}else null==d&&h(e)},a.jqplot.preInitHooks.push(d),a.jqplot.PieTickRenderer=function(){a.jqplot.AxisTickRenderer.call(this)},a.jqplot.PieTickRenderer.prototype=new a.jqplot.AxisTickRenderer,a.jqplot.PieTickRenderer.prototype.constructor=a.jqplot.PieTickRenderer}(jQuery); \ No newline at end of file diff --git a/plugins/wp-statistics/assets/jqvmap/jquery.vmap.js b/plugins/wp-statistics/assets/jqvmap/jquery.vmap.js new file mode 100644 index 0000000..caac440 --- /dev/null +++ b/plugins/wp-statistics/assets/jqvmap/jquery.vmap.js @@ -0,0 +1,1281 @@ +/*! + * JQVMap: jQuery Vector Map Library + * @author JQVMap <me@peterschmalfeldt.com> + * @version 1.5.1 + * @link http://jqvmap.com + * @license https://github.com/manifestinteractive/jqvmap/blob/master/LICENSE + * @builddate 2016/05/18 + */ + +var VectorCanvas = function (width, height, params) { + this.mode = window.SVGAngle ? 'svg' : 'vml'; + this.params = params; + + if (this.mode === 'svg') { + this.createSvgNode = function (nodeName) { + return document.createElementNS(this.svgns, nodeName); + }; + } else { + try { + if (!document.namespaces.rvml) { + document.namespaces.add('rvml', 'urn:schemas-microsoft-com:vml'); + } + this.createVmlNode = function (tagName) { + return document.createElement('<rvml:' + tagName + ' class="rvml">'); + }; + } catch (e) { + this.createVmlNode = function (tagName) { + return document.createElement('<' + tagName + ' xmlns="urn:schemas-microsoft.com:vml" class="rvml">'); + }; + } + + document.createStyleSheet().addRule('.rvml', 'behavior:url(#default#VML)'); + } + + if (this.mode === 'svg') { + this.canvas = this.createSvgNode('svg'); + } else { + this.canvas = this.createVmlNode('group'); + this.canvas.style.position = 'absolute'; + } + + this.setSize(width, height); +}; + +VectorCanvas.prototype = { + svgns: 'http://www.w3.org/2000/svg', + mode: 'svg', + width: 0, + height: 0, + canvas: null +}; + +var ColorScale = function (colors, normalizeFunction, minValue, maxValue) { + if (colors) { + this.setColors(colors); + } + if (normalizeFunction) { + this.setNormalizeFunction(normalizeFunction); + } + if (minValue) { + this.setMin(minValue); + } + if (minValue) { + this.setMax(maxValue); + } +}; + +ColorScale.prototype = { + colors: [] +}; + +var JQVMap = function (params) { + params = params || {}; + var map = this; + var mapData = JQVMap.maps[params.map]; + var mapPins; + + if( !mapData){ + throw new Error('Invalid "' + params.map + '" map parameter. Please make sure you have loaded this map file in your HTML.'); + } + + this.selectedRegions = []; + this.multiSelectRegion = params.multiSelectRegion; + + this.container = params.container; + + this.defaultWidth = mapData.width; + this.defaultHeight = mapData.height; + + this.color = params.color; + this.selectedColor = params.selectedColor; + this.hoverColor = params.hoverColor; + this.hoverColors = params.hoverColors; + this.hoverOpacity = params.hoverOpacity; + this.setBackgroundColor(params.backgroundColor); + + this.width = params.container.width(); + this.height = params.container.height(); + + this.resize(); + + jQuery(window).resize(function () { + var newWidth = params.container.width(); + var newHeight = params.container.height(); + + if(newWidth && newHeight){ + map.width = newWidth; + map.height = newHeight; + map.resize(); + map.canvas.setSize(map.width, map.height); + map.applyTransform(); + + var resizeEvent = jQuery.Event('resize.jqvmap'); + jQuery(params.container).trigger(resizeEvent, [newWidth, newHeight]); + + if(mapPins){ + jQuery('.jqvmap-pin').remove(); + map.pinHandlers = false; + map.placePins(mapPins.pins, mapPins.mode); + } + } + }); + + this.canvas = new VectorCanvas(this.width, this.height, params); + params.container.append(this.canvas.canvas); + + this.makeDraggable(); + + this.rootGroup = this.canvas.createGroup(true); + + this.index = JQVMap.mapIndex; + this.label = jQuery('<div/>').addClass('jqvmap-label').appendTo(jQuery('body')).hide(); + + if (params.enableZoom) { + jQuery('<div/>').addClass('jqvmap-zoomin').text('+').appendTo(params.container); + jQuery('<div/>').addClass('jqvmap-zoomout').html('−').appendTo(params.container); + } + + map.countries = []; + + for (var key in mapData.paths) { + var path = this.canvas.createPath({ + path: mapData.paths[key].path + }); + + path.setFill(this.color); + path.id = map.getCountryId(key); + map.countries[key] = path; + + if (this.canvas.mode === 'svg') { + path.setAttribute('class', 'jqvmap-region'); + } else { + jQuery(path).addClass('jqvmap-region'); + } + + jQuery(this.rootGroup).append(path); + } + + jQuery(params.container).delegate(this.canvas.mode === 'svg' ? 'path' : 'shape', 'mouseover mouseout', function (e) { + var containerPath = e.target, + code = e.target.id.split('_').pop(), + labelShowEvent = jQuery.Event('labelShow.jqvmap'), + regionMouseOverEvent = jQuery.Event('regionMouseOver.jqvmap'); + + code = code.toLowerCase(); + + if (e.type === 'mouseover') { + jQuery(params.container).trigger(regionMouseOverEvent, [code, mapData.paths[code].name]); + if (!regionMouseOverEvent.isDefaultPrevented()) { + map.highlight(code, containerPath); + } + if (params.showTooltip) { + map.label.text(mapData.paths[code].name); + jQuery(params.container).trigger(labelShowEvent, [map.label, code]); + + if (!labelShowEvent.isDefaultPrevented()) { + map.label.show(); + map.labelWidth = map.label.width(); + map.labelHeight = map.label.height(); + } + } + } else { + map.unhighlight(code, containerPath); + + map.label.hide(); + jQuery(params.container).trigger('regionMouseOut.jqvmap', [code, mapData.paths[code].name]); + } + }); + + jQuery(params.container).delegate(this.canvas.mode === 'svg' ? 'path' : 'shape', 'click', function (regionClickEvent) { + + var targetPath = regionClickEvent.target; + var code = regionClickEvent.target.id.split('_').pop(); + var mapClickEvent = jQuery.Event('regionClick.jqvmap'); + + code = code.toLowerCase(); + + jQuery(params.container).trigger(mapClickEvent, [code, mapData.paths[code].name]); + + if ( !params.multiSelectRegion && !mapClickEvent.isDefaultPrevented()) { + for (var keyPath in mapData.paths) { + map.countries[keyPath].currentFillColor = map.countries[keyPath].getOriginalFill(); + map.countries[keyPath].setFill(map.countries[keyPath].getOriginalFill()); + } + } + + if ( !mapClickEvent.isDefaultPrevented()) { + if (map.isSelected(code)) { + map.deselect(code, targetPath); + } else { + map.select(code, targetPath); + } + } + }); + + if (params.showTooltip) { + params.container.mousemove(function (e) { + if (map.label.is(':visible')) { + var left = e.pageX - 15 - map.labelWidth; + var top = e.pageY - 15 - map.labelHeight; + + if(left < 0) { + left = e.pageX + 15; + } + if(top < 0) { + top = e.pageY + 15; + } + + map.label.css({ + left: left, + top: top + }); + } + }); + } + + this.setColors(params.colors); + + this.canvas.canvas.appendChild(this.rootGroup); + + this.applyTransform(); + + this.colorScale = new ColorScale(params.scaleColors, params.normalizeFunction, params.valueMin, params.valueMax); + + if (params.values) { + this.values = params.values; + this.setValues(params.values); + } + + if (params.selectedRegions) { + if (params.selectedRegions instanceof Array) { + for(var k in params.selectedRegions) { + this.select(params.selectedRegions[k].toLowerCase()); + } + } else { + this.select(params.selectedRegions.toLowerCase()); + } + } + + this.bindZoomButtons(); + + if(params.pins) { + mapPins = { + pins: params.pins, + mode: params.pinMode + }; + + this.pinHandlers = false; + this.placePins(params.pins, params.pinMode); + } + + if(params.showLabels){ + this.pinHandlers = false; + + var pins = {}; + for (key in map.countries){ + if (typeof map.countries[key] !== 'function') { + if( !params.pins || !params.pins[key] ){ + pins[key] = key.toUpperCase(); + } + } + } + + mapPins = { + pins: pins, + mode: 'content' + }; + + this.placePins(pins, 'content'); + } + + JQVMap.mapIndex++; +}; + +JQVMap.prototype = { + transX: 0, + transY: 0, + scale: 1, + baseTransX: 0, + baseTransY: 0, + baseScale: 1, + width: 0, + height: 0, + countries: {}, + countriesColors: {}, + countriesData: {}, + zoomStep: 1.4, + zoomMaxStep: 4, + zoomCurStep: 1 +}; + +JQVMap.xlink = 'http://www.w3.org/1999/xlink'; +JQVMap.mapIndex = 1; +JQVMap.maps = {}; + +(function(){ + + var apiParams = { + colors: 1, + values: 1, + backgroundColor: 1, + scaleColors: 1, + normalizeFunction: 1, + enableZoom: 1, + showTooltip: 1, + borderColor: 1, + borderWidth: 1, + borderOpacity: 1, + selectedRegions: 1, + multiSelectRegion: 1 + }; + + var apiEvents = { + onLabelShow: 'labelShow', + onLoad: 'load', + onRegionOver: 'regionMouseOver', + onRegionOut: 'regionMouseOut', + onRegionClick: 'regionClick', + onRegionSelect: 'regionSelect', + onRegionDeselect: 'regionDeselect', + onResize: 'resize' + }; + + jQuery.fn.vectorMap = function (options) { + + var defaultParams = { + map: 'world_en', + backgroundColor: '#a5bfdd', + color: '#f4f3f0', + hoverColor: '#c9dfaf', + hoverColors: {}, + selectedColor: '#c9dfaf', + scaleColors: ['#b6d6ff', '#005ace'], + normalizeFunction: 'linear', + enableZoom: true, + showTooltip: true, + borderColor: '#818181', + borderWidth: 1, + borderOpacity: 0.25, + selectedRegions: null, + multiSelectRegion: false + }, map = this.data('mapObject'); + + if (options === 'addMap') { + JQVMap.maps[arguments[1]] = arguments[2]; + } else if (options === 'set' && apiParams[arguments[1]]) { + map['set' + arguments[1].charAt(0).toUpperCase() + arguments[1].substr(1)].apply(map, Array.prototype.slice.call(arguments, 2)); + } else if (typeof options === 'string' && + typeof map[options] === 'function') { + return map[options].apply(map, Array.prototype.slice.call(arguments, 1)); + } else { + jQuery.extend(defaultParams, options); + defaultParams.container = this; + this.css({ position: 'relative', overflow: 'hidden' }); + + map = new JQVMap(defaultParams); + + this.data('mapObject', map); + + this.unbind('.jqvmap'); + + for (var e in apiEvents) { + if (defaultParams[e]) { + this.bind(apiEvents[e] + '.jqvmap', defaultParams[e]); + } + } + + var loadEvent = jQuery.Event('load.jqvmap'); + jQuery(defaultParams.container).trigger(loadEvent, map); + + return map; + } + }; + +})(jQuery); + +ColorScale.arrayToRgb = function (ar) { + var rgb = '#'; + var d; + for (var i = 0; i < ar.length; i++) { + d = ar[i].toString(16); + rgb += d.length === 1 ? '0' + d : d; + } + return rgb; +}; + +ColorScale.prototype.getColor = function (value) { + if (typeof this.normalize === 'function') { + value = this.normalize(value); + } + + var lengthes = []; + var fullLength = 0; + var l; + + for (var i = 0; i < this.colors.length - 1; i++) { + l = this.vectorLength(this.vectorSubtract(this.colors[i + 1], this.colors[i])); + lengthes.push(l); + fullLength += l; + } + + var c = (this.maxValue - this.minValue) / fullLength; + + for (i = 0; i < lengthes.length; i++) { + lengthes[i] *= c; + } + + i = 0; + value -= this.minValue; + + while (value - lengthes[i] >= 0) { + value -= lengthes[i]; + i++; + } + + var color; + if (i === this.colors.length - 1) { + color = this.vectorToNum(this.colors[i]).toString(16); + } else { + color = (this.vectorToNum(this.vectorAdd(this.colors[i], this.vectorMult(this.vectorSubtract(this.colors[i + 1], this.colors[i]), (value) / (lengthes[i]))))).toString(16); + } + + while (color.length < 6) { + color = '0' + color; + } + return '#' + color; +}; + +ColorScale.rgbToArray = function (rgb) { + rgb = rgb.substr(1); + return [parseInt(rgb.substr(0, 2), 16), parseInt(rgb.substr(2, 2), 16), parseInt(rgb.substr(4, 2), 16)]; +}; + +ColorScale.prototype.setColors = function (colors) { + for (var i = 0; i < colors.length; i++) { + colors[i] = ColorScale.rgbToArray(colors[i]); + } + this.colors = colors; +}; + +ColorScale.prototype.setMax = function (max) { + this.clearMaxValue = max; + if (typeof this.normalize === 'function') { + this.maxValue = this.normalize(max); + } else { + this.maxValue = max; + } +}; + +ColorScale.prototype.setMin = function (min) { + this.clearMinValue = min; + + if (typeof this.normalize === 'function') { + this.minValue = this.normalize(min); + } else { + this.minValue = min; + } +}; + +ColorScale.prototype.setNormalizeFunction = function (f) { + if (f === 'polynomial') { + this.normalize = function (value) { + return Math.pow(value, 0.2); + }; + } else if (f === 'linear') { + delete this.normalize; + } else { + this.normalize = f; + } + this.setMin(this.clearMinValue); + this.setMax(this.clearMaxValue); +}; + +ColorScale.prototype.vectorAdd = function (vector1, vector2) { + var vector = []; + for (var i = 0; i < vector1.length; i++) { + vector[i] = vector1[i] + vector2[i]; + } + return vector; +}; + +ColorScale.prototype.vectorLength = function (vector) { + var result = 0; + for (var i = 0; i < vector.length; i++) { + result += vector[i] * vector[i]; + } + return Math.sqrt(result); +}; + +ColorScale.prototype.vectorMult = function (vector, num) { + var result = []; + for (var i = 0; i < vector.length; i++) { + result[i] = vector[i] * num; + } + return result; +}; + +ColorScale.prototype.vectorSubtract = function (vector1, vector2) { + var vector = []; + for (var i = 0; i < vector1.length; i++) { + vector[i] = vector1[i] - vector2[i]; + } + return vector; +}; + +ColorScale.prototype.vectorToNum = function (vector) { + var num = 0; + for (var i = 0; i < vector.length; i++) { + num += Math.round(vector[i]) * Math.pow(256, vector.length - i - 1); + } + return num; +}; + +JQVMap.prototype.applyTransform = function () { + var maxTransX, maxTransY, minTransX, minTransY; + if (this.defaultWidth * this.scale <= this.width) { + maxTransX = (this.width - this.defaultWidth * this.scale) / (2 * this.scale); + minTransX = (this.width - this.defaultWidth * this.scale) / (2 * this.scale); + } else { + maxTransX = 0; + minTransX = (this.width - this.defaultWidth * this.scale) / this.scale; + } + + if (this.defaultHeight * this.scale <= this.height) { + maxTransY = (this.height - this.defaultHeight * this.scale) / (2 * this.scale); + minTransY = (this.height - this.defaultHeight * this.scale) / (2 * this.scale); + } else { + maxTransY = 0; + minTransY = (this.height - this.defaultHeight * this.scale) / this.scale; + } + + if (this.transY > maxTransY) { + this.transY = maxTransY; + } else if (this.transY < minTransY) { + this.transY = minTransY; + } + if (this.transX > maxTransX) { + this.transX = maxTransX; + } else if (this.transX < minTransX) { + this.transX = minTransX; + } + + this.canvas.applyTransformParams(this.scale, this.transX, this.transY); +}; + +JQVMap.prototype.bindZoomButtons = function () { + var map = this; + this.container.find('.jqvmap-zoomin').click(function(){ + map.zoomIn(); + }); + this.container.find('.jqvmap-zoomout').click(function(){ + map.zoomOut(); + }); +}; + +JQVMap.prototype.deselect = function (cc, path) { + cc = cc.toLowerCase(); + path = path || jQuery('#' + this.getCountryId(cc))[0]; + + if (this.isSelected(cc)) { + this.selectedRegions.splice(this.selectIndex(cc), 1); + + jQuery(this.container).trigger('regionDeselect.jqvmap', [cc]); + path.currentFillColor = path.getOriginalFill(); + path.setFill(path.getOriginalFill()); + } else { + for (var key in this.countries) { + this.selectedRegions.splice(this.selectedRegions.indexOf(key), 1); + this.countries[key].currentFillColor = this.color; + this.countries[key].setFill(this.color); + } + } +}; + +JQVMap.prototype.getCountryId = function (cc) { + return 'jqvmap' + this.index + '_' + cc; +}; + +JQVMap.prototype.getPin = function(cc){ + var pinObj = jQuery('#' + this.getPinId(cc)); + return pinObj.html(); +}; + +JQVMap.prototype.getPinId = function (cc) { + return this.getCountryId(cc) + '_pin'; +}; + +JQVMap.prototype.getPins = function(){ + var pins = this.container.find('.jqvmap-pin'); + var ret = {}; + jQuery.each(pins, function(index, pinObj){ + pinObj = jQuery(pinObj); + var cc = pinObj.attr('for').toLowerCase(); + var pinContent = pinObj.html(); + ret[cc] = pinContent; + }); + return JSON.stringify(ret); +}; + +JQVMap.prototype.highlight = function (cc, path) { + path = path || jQuery('#' + this.getCountryId(cc))[0]; + if (this.hoverOpacity) { + path.setOpacity(this.hoverOpacity); + } else if (this.hoverColors && (cc in this.hoverColors)) { + path.currentFillColor = path.getFill() + ''; + path.setFill(this.hoverColors[cc]); + } else if (this.hoverColor) { + path.currentFillColor = path.getFill() + ''; + path.setFill(this.hoverColor); + } +}; + +JQVMap.prototype.isSelected = function(cc) { + return this.selectIndex(cc) >= 0; +}; + +JQVMap.prototype.makeDraggable = function () { + var mouseDown = false; + var oldPageX, oldPageY; + var self = this; + + self.isMoving = false; + self.isMovingTimeout = false; + + var lastTouchCount; + var touchCenterX; + var touchCenterY; + var touchStartDistance; + var touchStartScale; + var touchX; + var touchY; + + this.container.mousemove(function (e) { + + if (mouseDown) { + self.transX -= (oldPageX - e.pageX) / self.scale; + self.transY -= (oldPageY - e.pageY) / self.scale; + + self.applyTransform(); + + oldPageX = e.pageX; + oldPageY = e.pageY; + + self.isMoving = true; + if (self.isMovingTimeout) { + clearTimeout(self.isMovingTimeout); + } + + self.container.trigger('drag'); + } + + return false; + + }).mousedown(function (e) { + + mouseDown = true; + oldPageX = e.pageX; + oldPageY = e.pageY; + + return false; + + }).mouseup(function () { + + mouseDown = false; + + clearTimeout(self.isMovingTimeout); + self.isMovingTimeout = setTimeout(function () { + self.isMoving = false; + }, 100); + + return false; + + }).mouseout(function () { + + if(mouseDown && self.isMoving){ + + clearTimeout(self.isMovingTimeout); + self.isMovingTimeout = setTimeout(function () { + mouseDown = false; + self.isMoving = false; + }, 100); + + return false; + } + }); + + jQuery(this.container).bind('touchmove', function (e) { + + var offset; + var scale; + var touches = e.originalEvent.touches; + var transformXOld; + var transformYOld; + + if (touches.length === 1) { + if (lastTouchCount === 1) { + + if(touchX === touches[0].pageX && touchY === touches[0].pageY){ + return; + } + + transformXOld = self.transX; + transformYOld = self.transY; + + self.transX -= (touchX - touches[0].pageX) / self.scale; + self.transY -= (touchY - touches[0].pageY) / self.scale; + + self.applyTransform(); + + if (transformXOld !== self.transX || transformYOld !== self.transY) { + e.preventDefault(); + } + + self.isMoving = true; + if (self.isMovingTimeout) { + clearTimeout(self.isMovingTimeout); + } + } + + touchX = touches[0].pageX; + touchY = touches[0].pageY; + + } else if (touches.length === 2) { + + if (lastTouchCount === 2) { + scale = Math.sqrt( + Math.pow(touches[0].pageX - touches[1].pageX, 2) + + Math.pow(touches[0].pageY - touches[1].pageY, 2) + ) / touchStartDistance; + + self.setScale( + touchStartScale * scale, + touchCenterX, + touchCenterY + ); + + e.preventDefault(); + + } else { + + offset = jQuery(self.container).offset(); + if (touches[0].pageX > touches[1].pageX) { + touchCenterX = touches[1].pageX + (touches[0].pageX - touches[1].pageX) / 2; + } else { + touchCenterX = touches[0].pageX + (touches[1].pageX - touches[0].pageX) / 2; + } + + if (touches[0].pageY > touches[1].pageY) { + touchCenterY = touches[1].pageY + (touches[0].pageY - touches[1].pageY) / 2; + } else { + touchCenterY = touches[0].pageY + (touches[1].pageY - touches[0].pageY) / 2; + } + + touchCenterX -= offset.left; + touchCenterY -= offset.top; + touchStartScale = self.scale; + + touchStartDistance = Math.sqrt( + Math.pow(touches[0].pageX - touches[1].pageX, 2) + + Math.pow(touches[0].pageY - touches[1].pageY, 2) + ); + } + } + + lastTouchCount = touches.length; + }); + + jQuery(this.container).bind('touchstart', function () { + lastTouchCount = 0; + }); + + jQuery(this.container).bind('touchend', function () { + lastTouchCount = 0; + }); +}; + +JQVMap.prototype.placePins = function(pins, pinMode){ + var map = this; + + if(!pinMode || (pinMode !== 'content' && pinMode !== 'id')) { + pinMode = 'content'; + } + + if(pinMode === 'content') {//treat pin as content + jQuery.each(pins, function(index, pin){ + if(jQuery('#' + map.getCountryId(index)).length === 0){ + return; + } + + var pinIndex = map.getPinId(index); + var $pin = jQuery('#' + pinIndex); + if($pin.length > 0){ + $pin.remove(); + } + map.container.append('<div id="' + pinIndex + '" for="' + index + '" class="jqvmap-pin" style="position:absolute">' + pin + '</div>'); + }); + } else { //treat pin as id of an html content + jQuery.each(pins, function(index, pin){ + if(jQuery('#' + map.getCountryId(index)).length === 0){ + return; + } + var pinIndex = map.getPinId(index); + var $pin = jQuery('#' + pinIndex); + if($pin.length > 0){ + $pin.remove(); + } + map.container.append('<div id="' + pinIndex + '" for="' + index + '" class="jqvmap-pin" style="position:absolute"></div>'); + $pin.append(jQuery('#' + pin)); + }); + } + + this.positionPins(); + if(!this.pinHandlers){ + this.pinHandlers = true; + var positionFix = function(){ + map.positionPins(); + }; + this.container.bind('zoomIn', positionFix) + .bind('zoomOut', positionFix) + .bind('drag', positionFix); + } +}; + +JQVMap.prototype.positionPins = function(){ + var map = this; + var pins = this.container.find('.jqvmap-pin'); + jQuery.each(pins, function(index, pinObj){ + pinObj = jQuery(pinObj); + var countryId = map.getCountryId(pinObj.attr('for').toLowerCase()); + var countryObj = jQuery('#' + countryId); + + var bbox = document.getElementById(countryId).getBBox(); + var position = countryObj.position(); + + var scale = map.scale; + + var left = position.left + (bbox.width / 2) * scale - pinObj.width() / 2, + top = position.top + (bbox.height / 2) * scale - pinObj.height() / 2; + + pinObj.css('left', left).css('top', top); + }); +}; + +JQVMap.prototype.removePin = function(cc) { + cc = cc.toLowerCase(); + jQuery('#' + this.getPinId(cc)).remove(); +}; + +JQVMap.prototype.removePins = function(){ + this.container.find('.jqvmap-pin').remove(); +}; + +JQVMap.prototype.reset = function () { + for (var key in this.countries) { + this.countries[key].setFill(this.color); + } + this.scale = this.baseScale; + this.transX = this.baseTransX; + this.transY = this.baseTransY; + this.applyTransform(); +}; + +JQVMap.prototype.resize = function () { + var curBaseScale = this.baseScale; + if (this.width / this.height > this.defaultWidth / this.defaultHeight) { + this.baseScale = this.height / this.defaultHeight; + this.baseTransX = Math.abs(this.width - this.defaultWidth * this.baseScale) / (2 * this.baseScale); + } else { + this.baseScale = this.width / this.defaultWidth; + this.baseTransY = Math.abs(this.height - this.defaultHeight * this.baseScale) / (2 * this.baseScale); + } + this.scale *= this.baseScale / curBaseScale; + this.transX *= this.baseScale / curBaseScale; + this.transY *= this.baseScale / curBaseScale; +}; + +JQVMap.prototype.select = function (cc, path) { + cc = cc.toLowerCase(); + path = path || jQuery('#' + this.getCountryId(cc))[0]; + + if (!this.isSelected(cc)) { + if (this.multiSelectRegion) { + this.selectedRegions.push(cc); + } else { + this.selectedRegions = [cc]; + } + + jQuery(this.container).trigger('regionSelect.jqvmap', [cc]); + if (this.selectedColor && path) { + path.currentFillColor = this.selectedColor; + path.setFill(this.selectedColor); + } + } +}; + +JQVMap.prototype.selectIndex = function (cc) { + cc = cc.toLowerCase(); + for (var i = 0; i < this.selectedRegions.length; i++) { + if (cc === this.selectedRegions[i]) { + return i; + } + } + return -1; +}; + +JQVMap.prototype.setBackgroundColor = function (backgroundColor) { + this.container.css('background-color', backgroundColor); +}; + +JQVMap.prototype.setColors = function (key, color) { + if (typeof key === 'string') { + this.countries[key].setFill(color); + this.countries[key].setAttribute('original', color); + } else { + var colors = key; + + for (var code in colors) { + if (this.countries[code]) { + this.countries[code].setFill(colors[code]); + this.countries[code].setAttribute('original', colors[code]); + } + } + } +}; + +JQVMap.prototype.setNormalizeFunction = function (f) { + this.colorScale.setNormalizeFunction(f); + + if (this.values) { + this.setValues(this.values); + } +}; + +JQVMap.prototype.setScale = function (scale) { + this.scale = scale; + this.applyTransform(); +}; + +JQVMap.prototype.setScaleColors = function (colors) { + this.colorScale.setColors(colors); + + if (this.values) { + this.setValues(this.values); + } +}; + +JQVMap.prototype.setValues = function (values) { + var max = 0, + min = Number.MAX_VALUE, + val; + + for (var cc in values) { + cc = cc.toLowerCase(); + val = parseFloat(values[cc]); + + if (isNaN(val)) { + continue; + } + if (val > max) { + max = values[cc]; + } + if (val < min) { + min = val; + } + } + + if (min === max) { + max++; + } + + this.colorScale.setMin(min); + this.colorScale.setMax(max); + + var colors = {}; + for (cc in values) { + cc = cc.toLowerCase(); + val = parseFloat(values[cc]); + colors[cc] = isNaN(val) ? this.color : this.colorScale.getColor(val); + } + this.setColors(colors); + this.values = values; +}; + +JQVMap.prototype.unhighlight = function (cc, path) { + cc = cc.toLowerCase(); + path = path || jQuery('#' + this.getCountryId(cc))[0]; + path.setOpacity(1); + if (path.currentFillColor) { + path.setFill(path.currentFillColor); + } +}; + +JQVMap.prototype.zoomIn = function () { + var map = this; + var sliderDelta = (jQuery('#zoom').innerHeight() - 6 * 2 - 15 * 2 - 3 * 2 - 7 - 6) / (this.zoomMaxStep - this.zoomCurStep); + + if (map.zoomCurStep < map.zoomMaxStep) { + map.transX -= (map.width / map.scale - map.width / (map.scale * map.zoomStep)) / 2; + map.transY -= (map.height / map.scale - map.height / (map.scale * map.zoomStep)) / 2; + map.setScale(map.scale * map.zoomStep); + map.zoomCurStep++; + + var $slider = jQuery('#zoomSlider'); + + $slider.css('top', parseInt($slider.css('top'), 10) - sliderDelta); + + map.container.trigger('zoomIn'); + } +}; + +JQVMap.prototype.zoomOut = function () { + var map = this; + var sliderDelta = (jQuery('#zoom').innerHeight() - 6 * 2 - 15 * 2 - 3 * 2 - 7 - 6) / (this.zoomMaxStep - this.zoomCurStep); + + if (map.zoomCurStep > 1) { + map.transX += (map.width / (map.scale / map.zoomStep) - map.width / map.scale) / 2; + map.transY += (map.height / (map.scale / map.zoomStep) - map.height / map.scale) / 2; + map.setScale(map.scale / map.zoomStep); + map.zoomCurStep--; + + var $slider = jQuery('#zoomSlider'); + + $slider.css('top', parseInt($slider.css('top'), 10) + sliderDelta); + + map.container.trigger('zoomOut'); + } +}; + +VectorCanvas.prototype.applyTransformParams = function (scale, transX, transY) { + if (this.mode === 'svg') { + this.rootGroup.setAttribute('transform', 'scale(' + scale + ') translate(' + transX + ', ' + transY + ')'); + } else { + this.rootGroup.coordorigin = (this.width - transX) + ',' + (this.height - transY); + this.rootGroup.coordsize = this.width / scale + ',' + this.height / scale; + } +}; + +VectorCanvas.prototype.createGroup = function (isRoot) { + var node; + if (this.mode === 'svg') { + node = this.createSvgNode('g'); + } else { + node = this.createVmlNode('group'); + node.style.width = this.width + 'px'; + node.style.height = this.height + 'px'; + node.style.left = '0px'; + node.style.top = '0px'; + node.coordorigin = '0 0'; + node.coordsize = this.width + ' ' + this.height; + } + + if (isRoot) { + this.rootGroup = node; + } + return node; +}; + +VectorCanvas.prototype.createPath = function (config) { + var node; + if (this.mode === 'svg') { + node = this.createSvgNode('path'); + node.setAttribute('d', config.path); + + if (this.params.borderColor !== null) { + node.setAttribute('stroke', this.params.borderColor); + } + if (this.params.borderWidth > 0) { + node.setAttribute('stroke-width', this.params.borderWidth); + node.setAttribute('stroke-linecap', 'round'); + node.setAttribute('stroke-linejoin', 'round'); + } + if (this.params.borderOpacity > 0) { + node.setAttribute('stroke-opacity', this.params.borderOpacity); + } + + node.setFill = function (color) { + this.setAttribute('fill', color); + if (this.getAttribute('original') === null) { + this.setAttribute('original', color); + } + }; + + node.getFill = function () { + return this.getAttribute('fill'); + }; + + node.getOriginalFill = function () { + return this.getAttribute('original'); + }; + + node.setOpacity = function (opacity) { + this.setAttribute('fill-opacity', opacity); + }; + } else { + node = this.createVmlNode('shape'); + node.coordorigin = '0 0'; + node.coordsize = this.width + ' ' + this.height; + node.style.width = this.width + 'px'; + node.style.height = this.height + 'px'; + node.fillcolor = JQVMap.defaultFillColor; + node.stroked = false; + node.path = VectorCanvas.pathSvgToVml(config.path); + + var scale = this.createVmlNode('skew'); + scale.on = true; + scale.matrix = '0.01,0,0,0.01,0,0'; + scale.offset = '0,0'; + + node.appendChild(scale); + + var fill = this.createVmlNode('fill'); + node.appendChild(fill); + + node.setFill = function (color) { + this.getElementsByTagName('fill')[0].color = color; + if (this.getAttribute('original') === null) { + this.setAttribute('original', color); + } + }; + + node.getFill = function () { + return this.getElementsByTagName('fill')[0].color; + }; + node.getOriginalFill = function () { + return this.getAttribute('original'); + }; + node.setOpacity = function (opacity) { + this.getElementsByTagName('fill')[0].opacity = parseInt(opacity * 100, 10) + '%'; + }; + } + return node; +}; + +VectorCanvas.prototype.pathSvgToVml = function (path) { + var result = ''; + var cx = 0, cy = 0, ctrlx, ctrly; + + return path.replace(/([MmLlHhVvCcSs])((?:-?(?:\d+)?(?:\.\d+)?,?\s?)+)/g, function (segment, letter, coords) { + coords = coords.replace(/(\d)-/g, '$1,-').replace(/\s+/g, ',').split(','); + if (!coords[0]) { + coords.shift(); + } + + for (var i = 0, l = coords.length; i < l; i++) { + coords[i] = Math.round(100 * coords[i]); + } + + switch (letter) { + case 'm': + cx += coords[0]; + cy += coords[1]; + result = 't' + coords.join(','); + break; + + case 'M': + cx = coords[0]; + cy = coords[1]; + result = 'm' + coords.join(','); + break; + + case 'l': + cx += coords[0]; + cy += coords[1]; + result = 'r' + coords.join(','); + break; + + case 'L': + cx = coords[0]; + cy = coords[1]; + result = 'l' + coords.join(','); + break; + + case 'h': + cx += coords[0]; + result = 'r' + coords[0] + ',0'; + break; + + case 'H': + cx = coords[0]; + result = 'l' + cx + ',' + cy; + break; + + case 'v': + cy += coords[0]; + result = 'r0,' + coords[0]; + break; + + case 'V': + cy = coords[0]; + result = 'l' + cx + ',' + cy; + break; + + case 'c': + ctrlx = cx + coords[coords.length - 4]; + ctrly = cy + coords[coords.length - 3]; + cx += coords[coords.length - 2]; + cy += coords[coords.length - 1]; + result = 'v' + coords.join(','); + break; + + case 'C': + ctrlx = coords[coords.length - 4]; + ctrly = coords[coords.length - 3]; + cx = coords[coords.length - 2]; + cy = coords[coords.length - 1]; + result = 'c' + coords.join(','); + break; + + case 's': + coords.unshift(cy - ctrly); + coords.unshift(cx - ctrlx); + ctrlx = cx + coords[coords.length - 4]; + ctrly = cy + coords[coords.length - 3]; + cx += coords[coords.length - 2]; + cy += coords[coords.length - 1]; + result = 'v' + coords.join(','); + break; + + case 'S': + coords.unshift(cy + cy - ctrly); + coords.unshift(cx + cx - ctrlx); + ctrlx = coords[coords.length - 4]; + ctrly = coords[coords.length - 3]; + cx = coords[coords.length - 2]; + cy = coords[coords.length - 1]; + result = 'c' + coords.join(','); + break; + + default: + break; + } + + return result; + + }).replace(/z/g, ''); +}; + +VectorCanvas.prototype.setSize = function (width, height) { + if (this.mode === 'svg') { + this.canvas.setAttribute('width', width); + this.canvas.setAttribute('height', height); + } else { + this.canvas.style.width = width + 'px'; + this.canvas.style.height = height + 'px'; + this.canvas.coordsize = width + ' ' + height; + this.canvas.coordorigin = '0 0'; + if (this.rootGroup) { + var paths = this.rootGroup.getElementsByTagName('shape'); + for (var i = 0, l = paths.length; i < l; i++) { + paths[i].coordsize = width + ' ' + height; + paths[i].style.width = width + 'px'; + paths[i].style.height = height + 'px'; + } + this.rootGroup.coordsize = width + ' ' + height; + this.rootGroup.style.width = width + 'px'; + this.rootGroup.style.height = height + 'px'; + } + } + this.width = width; + this.height = height; +}; diff --git a/plugins/wp-statistics/assets/jqvmap/jquery.vmap.min.js b/plugins/wp-statistics/assets/jqvmap/jquery.vmap.min.js new file mode 100644 index 0000000..ea44ea6 --- /dev/null +++ b/plugins/wp-statistics/assets/jqvmap/jquery.vmap.min.js @@ -0,0 +1,10 @@ +/*! + * JQVMap: jQuery Vector Map Library + * @author JQVMap <me@peterschmalfeldt.com> + * @version 1.5.1 + * @link http://jqvmap.com + * @license https://github.com/manifestinteractive/jqvmap/blob/master/LICENSE + * @builddate 2016/05/18 + */ + +var VectorCanvas=function(a,b,c){if(this.mode=window.SVGAngle?"svg":"vml",this.params=c,"svg"===this.mode)this.createSvgNode=function(a){return document.createElementNS(this.svgns,a)};else{try{document.namespaces.rvml||document.namespaces.add("rvml","urn:schemas-microsoft-com:vml"),this.createVmlNode=function(a){return document.createElement("<rvml:"+a+' class="rvml">')}}catch(d){this.createVmlNode=function(a){return document.createElement("<"+a+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}document.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)")}"svg"===this.mode?this.canvas=this.createSvgNode("svg"):(this.canvas=this.createVmlNode("group"),this.canvas.style.position="absolute"),this.setSize(a,b)};VectorCanvas.prototype={svgns:"http://www.w3.org/2000/svg",mode:"svg",width:0,height:0,canvas:null};var ColorScale=function(a,b,c,d){a&&this.setColors(a),b&&this.setNormalizeFunction(b),c&&this.setMin(c),c&&this.setMax(d)};ColorScale.prototype={colors:[]};var JQVMap=function(a){a=a||{};var b,c=this,d=JQVMap.maps[a.map];if(!d)throw new Error('Invalid "'+a.map+'" map parameter. Please make sure you have loaded this map file in your HTML.');this.selectedRegions=[],this.multiSelectRegion=a.multiSelectRegion,this.container=a.container,this.defaultWidth=d.width,this.defaultHeight=d.height,this.color=a.color,this.selectedColor=a.selectedColor,this.hoverColor=a.hoverColor,this.hoverColors=a.hoverColors,this.hoverOpacity=a.hoverOpacity,this.setBackgroundColor(a.backgroundColor),this.width=a.container.width(),this.height=a.container.height(),this.resize(),jQuery(window).resize(function(){var d=a.container.width(),e=a.container.height();if(d&&e){c.width=d,c.height=e,c.resize(),c.canvas.setSize(c.width,c.height),c.applyTransform();var f=jQuery.Event("resize.jqvmap");jQuery(a.container).trigger(f,[d,e]),b&&(jQuery(".jqvmap-pin").remove(),c.pinHandlers=!1,c.placePins(b.pins,b.mode))}}),this.canvas=new VectorCanvas(this.width,this.height,a),a.container.append(this.canvas.canvas),this.makeDraggable(),this.rootGroup=this.canvas.createGroup(!0),this.index=JQVMap.mapIndex,this.label=jQuery("<div/>").addClass("jqvmap-label").appendTo(jQuery("body")).hide(),a.enableZoom&&(jQuery("<div/>").addClass("jqvmap-zoomin").text("+").appendTo(a.container),jQuery("<div/>").addClass("jqvmap-zoomout").html("−").appendTo(a.container)),c.countries=[];for(var e in d.paths){var f=this.canvas.createPath({path:d.paths[e].path});f.setFill(this.color),f.id=c.getCountryId(e),c.countries[e]=f,"svg"===this.canvas.mode?f.setAttribute("class","jqvmap-region"):jQuery(f).addClass("jqvmap-region"),jQuery(this.rootGroup).append(f)}if(jQuery(a.container).delegate("svg"===this.canvas.mode?"path":"shape","mouseover mouseout",function(b){var e=b.target,f=b.target.id.split("_").pop(),g=jQuery.Event("labelShow.jqvmap"),h=jQuery.Event("regionMouseOver.jqvmap");f=f.toLowerCase(),"mouseover"===b.type?(jQuery(a.container).trigger(h,[f,d.paths[f].name]),h.isDefaultPrevented()||c.highlight(f,e),a.showTooltip&&(c.label.text(d.paths[f].name),jQuery(a.container).trigger(g,[c.label,f]),g.isDefaultPrevented()||(c.label.show(),c.labelWidth=c.label.width(),c.labelHeight=c.label.height()))):(c.unhighlight(f,e),c.label.hide(),jQuery(a.container).trigger("regionMouseOut.jqvmap",[f,d.paths[f].name]))}),jQuery(a.container).delegate("svg"===this.canvas.mode?"path":"shape","click",function(b){var e=b.target,f=b.target.id.split("_").pop(),g=jQuery.Event("regionClick.jqvmap");if(f=f.toLowerCase(),jQuery(a.container).trigger(g,[f,d.paths[f].name]),!a.multiSelectRegion&&!g.isDefaultPrevented())for(var h in d.paths)c.countries[h].currentFillColor=c.countries[h].getOriginalFill(),c.countries[h].setFill(c.countries[h].getOriginalFill());g.isDefaultPrevented()||(c.isSelected(f)?c.deselect(f,e):c.select(f,e))}),a.showTooltip&&a.container.mousemove(function(a){if(c.label.is(":visible")){var b=a.pageX-15-c.labelWidth,d=a.pageY-15-c.labelHeight;0>b&&(b=a.pageX+15),0>d&&(d=a.pageY+15),c.label.css({left:b,top:d})}}),this.setColors(a.colors),this.canvas.canvas.appendChild(this.rootGroup),this.applyTransform(),this.colorScale=new ColorScale(a.scaleColors,a.normalizeFunction,a.valueMin,a.valueMax),a.values&&(this.values=a.values,this.setValues(a.values)),a.selectedRegions)if(a.selectedRegions instanceof Array)for(var g in a.selectedRegions)this.select(a.selectedRegions[g].toLowerCase());else this.select(a.selectedRegions.toLowerCase());if(this.bindZoomButtons(),a.pins&&(b={pins:a.pins,mode:a.pinMode},this.pinHandlers=!1,this.placePins(a.pins,a.pinMode)),a.showLabels){this.pinHandlers=!1;var h={};for(e in c.countries)"function"!=typeof c.countries[e]&&(a.pins&&a.pins[e]||(h[e]=e.toUpperCase()));b={pins:h,mode:"content"},this.placePins(h,"content")}JQVMap.mapIndex++};JQVMap.prototype={transX:0,transY:0,scale:1,baseTransX:0,baseTransY:0,baseScale:1,width:0,height:0,countries:{},countriesColors:{},countriesData:{},zoomStep:1.4,zoomMaxStep:4,zoomCurStep:1},JQVMap.xlink="http://www.w3.org/1999/xlink",JQVMap.mapIndex=1,JQVMap.maps={},function(){var a={colors:1,values:1,backgroundColor:1,scaleColors:1,normalizeFunction:1,enableZoom:1,showTooltip:1,borderColor:1,borderWidth:1,borderOpacity:1,selectedRegions:1,multiSelectRegion:1},b={onLabelShow:"labelShow",onLoad:"load",onRegionOver:"regionMouseOver",onRegionOut:"regionMouseOut",onRegionClick:"regionClick",onRegionSelect:"regionSelect",onRegionDeselect:"regionDeselect",onResize:"resize"};jQuery.fn.vectorMap=function(c){var d={map:"world_en",backgroundColor:"#a5bfdd",color:"#f4f3f0",hoverColor:"#c9dfaf",hoverColors:{},selectedColor:"#c9dfaf",scaleColors:["#b6d6ff","#005ace"],normalizeFunction:"linear",enableZoom:!0,showTooltip:!0,borderColor:"#818181",borderWidth:1,borderOpacity:.25,selectedRegions:null,multiSelectRegion:!1},e=this.data("mapObject");if("addMap"===c)JQVMap.maps[arguments[1]]=arguments[2];else{if("set"!==c||!a[arguments[1]]){if("string"==typeof c&&"function"==typeof e[c])return e[c].apply(e,Array.prototype.slice.call(arguments,1));jQuery.extend(d,c),d.container=this,this.css({position:"relative",overflow:"hidden"}),e=new JQVMap(d),this.data("mapObject",e),this.unbind(".jqvmap");for(var f in b)d[f]&&this.bind(b[f]+".jqvmap",d[f]);var g=jQuery.Event("load.jqvmap");return jQuery(d.container).trigger(g,e),e}e["set"+arguments[1].charAt(0).toUpperCase()+arguments[1].substr(1)].apply(e,Array.prototype.slice.call(arguments,2))}}}(jQuery),ColorScale.arrayToRgb=function(a){for(var b,c="#",d=0;d<a.length;d++)b=a[d].toString(16),c+=1===b.length?"0"+b:b;return c},ColorScale.prototype.getColor=function(a){"function"==typeof this.normalize&&(a=this.normalize(a));for(var b,c=[],d=0,e=0;e<this.colors.length-1;e++)b=this.vectorLength(this.vectorSubtract(this.colors[e+1],this.colors[e])),c.push(b),d+=b;var f=(this.maxValue-this.minValue)/d;for(e=0;e<c.length;e++)c[e]*=f;for(e=0,a-=this.minValue;a-c[e]>=0;)a-=c[e],e++;var g;for(g=e===this.colors.length-1?this.vectorToNum(this.colors[e]).toString(16):this.vectorToNum(this.vectorAdd(this.colors[e],this.vectorMult(this.vectorSubtract(this.colors[e+1],this.colors[e]),a/c[e]))).toString(16);g.length<6;)g="0"+g;return"#"+g},ColorScale.rgbToArray=function(a){return a=a.substr(1),[parseInt(a.substr(0,2),16),parseInt(a.substr(2,2),16),parseInt(a.substr(4,2),16)]},ColorScale.prototype.setColors=function(a){for(var b=0;b<a.length;b++)a[b]=ColorScale.rgbToArray(a[b]);this.colors=a},ColorScale.prototype.setMax=function(a){this.clearMaxValue=a,"function"==typeof this.normalize?this.maxValue=this.normalize(a):this.maxValue=a},ColorScale.prototype.setMin=function(a){this.clearMinValue=a,"function"==typeof this.normalize?this.minValue=this.normalize(a):this.minValue=a},ColorScale.prototype.setNormalizeFunction=function(a){"polynomial"===a?this.normalize=function(a){return Math.pow(a,.2)}:"linear"===a?delete this.normalize:this.normalize=a,this.setMin(this.clearMinValue),this.setMax(this.clearMaxValue)},ColorScale.prototype.vectorAdd=function(a,b){for(var c=[],d=0;d<a.length;d++)c[d]=a[d]+b[d];return c},ColorScale.prototype.vectorLength=function(a){for(var b=0,c=0;c<a.length;c++)b+=a[c]*a[c];return Math.sqrt(b)},ColorScale.prototype.vectorMult=function(a,b){for(var c=[],d=0;d<a.length;d++)c[d]=a[d]*b;return c},ColorScale.prototype.vectorSubtract=function(a,b){for(var c=[],d=0;d<a.length;d++)c[d]=a[d]-b[d];return c},ColorScale.prototype.vectorToNum=function(a){for(var b=0,c=0;c<a.length;c++)b+=Math.round(a[c])*Math.pow(256,a.length-c-1);return b},JQVMap.prototype.applyTransform=function(){var a,b,c,d;this.defaultWidth*this.scale<=this.width?(a=(this.width-this.defaultWidth*this.scale)/(2*this.scale),c=(this.width-this.defaultWidth*this.scale)/(2*this.scale)):(a=0,c=(this.width-this.defaultWidth*this.scale)/this.scale),this.defaultHeight*this.scale<=this.height?(b=(this.height-this.defaultHeight*this.scale)/(2*this.scale),d=(this.height-this.defaultHeight*this.scale)/(2*this.scale)):(b=0,d=(this.height-this.defaultHeight*this.scale)/this.scale),this.transY>b?this.transY=b:this.transY<d&&(this.transY=d),this.transX>a?this.transX=a:this.transX<c&&(this.transX=c),this.canvas.applyTransformParams(this.scale,this.transX,this.transY)},JQVMap.prototype.bindZoomButtons=function(){var a=this;this.container.find(".jqvmap-zoomin").click(function(){a.zoomIn()}),this.container.find(".jqvmap-zoomout").click(function(){a.zoomOut()})},JQVMap.prototype.deselect=function(a,b){if(a=a.toLowerCase(),b=b||jQuery("#"+this.getCountryId(a))[0],this.isSelected(a))this.selectedRegions.splice(this.selectIndex(a),1),jQuery(this.container).trigger("regionDeselect.jqvmap",[a]),b.currentFillColor=b.getOriginalFill(),b.setFill(b.getOriginalFill());else for(var c in this.countries)this.selectedRegions.splice(this.selectedRegions.indexOf(c),1),this.countries[c].currentFillColor=this.color,this.countries[c].setFill(this.color)},JQVMap.prototype.getCountryId=function(a){return"jqvmap"+this.index+"_"+a},JQVMap.prototype.getPin=function(a){var b=jQuery("#"+this.getPinId(a));return b.html()},JQVMap.prototype.getPinId=function(a){return this.getCountryId(a)+"_pin"},JQVMap.prototype.getPins=function(){var a=this.container.find(".jqvmap-pin"),b={};return jQuery.each(a,function(a,c){c=jQuery(c);var d=c.attr("for").toLowerCase(),e=c.html();b[d]=e}),JSON.stringify(b)},JQVMap.prototype.highlight=function(a,b){b=b||jQuery("#"+this.getCountryId(a))[0],this.hoverOpacity?b.setOpacity(this.hoverOpacity):this.hoverColors&&a in this.hoverColors?(b.currentFillColor=b.getFill()+"",b.setFill(this.hoverColors[a])):this.hoverColor&&(b.currentFillColor=b.getFill()+"",b.setFill(this.hoverColor))},JQVMap.prototype.isSelected=function(a){return this.selectIndex(a)>=0},JQVMap.prototype.makeDraggable=function(){var a,b,c=!1,d=this;d.isMoving=!1,d.isMovingTimeout=!1;var e,f,g,h,i,j,k;this.container.mousemove(function(e){return c&&(d.transX-=(a-e.pageX)/d.scale,d.transY-=(b-e.pageY)/d.scale,d.applyTransform(),a=e.pageX,b=e.pageY,d.isMoving=!0,d.isMovingTimeout&&clearTimeout(d.isMovingTimeout),d.container.trigger("drag")),!1}).mousedown(function(d){return c=!0,a=d.pageX,b=d.pageY,!1}).mouseup(function(){return c=!1,clearTimeout(d.isMovingTimeout),d.isMovingTimeout=setTimeout(function(){d.isMoving=!1},100),!1}).mouseout(function(){return c&&d.isMoving?(clearTimeout(d.isMovingTimeout),d.isMovingTimeout=setTimeout(function(){c=!1,d.isMoving=!1},100),!1):void 0}),jQuery(this.container).bind("touchmove",function(a){var b,c,l,m,n=a.originalEvent.touches;if(1===n.length){if(1===e){if(j===n[0].pageX&&k===n[0].pageY)return;l=d.transX,m=d.transY,d.transX-=(j-n[0].pageX)/d.scale,d.transY-=(k-n[0].pageY)/d.scale,d.applyTransform(),(l!==d.transX||m!==d.transY)&&a.preventDefault(),d.isMoving=!0,d.isMovingTimeout&&clearTimeout(d.isMovingTimeout)}j=n[0].pageX,k=n[0].pageY}else 2===n.length&&(2===e?(c=Math.sqrt(Math.pow(n[0].pageX-n[1].pageX,2)+Math.pow(n[0].pageY-n[1].pageY,2))/h,d.setScale(i*c,f,g),a.preventDefault()):(b=jQuery(d.container).offset(),f=n[0].pageX>n[1].pageX?n[1].pageX+(n[0].pageX-n[1].pageX)/2:n[0].pageX+(n[1].pageX-n[0].pageX)/2,g=n[0].pageY>n[1].pageY?n[1].pageY+(n[0].pageY-n[1].pageY)/2:n[0].pageY+(n[1].pageY-n[0].pageY)/2,f-=b.left,g-=b.top,i=d.scale,h=Math.sqrt(Math.pow(n[0].pageX-n[1].pageX,2)+Math.pow(n[0].pageY-n[1].pageY,2))));e=n.length}),jQuery(this.container).bind("touchstart",function(){e=0}),jQuery(this.container).bind("touchend",function(){e=0})},JQVMap.prototype.placePins=function(a,b){var c=this;if((!b||"content"!==b&&"id"!==b)&&(b="content"),"content"===b?jQuery.each(a,function(a,b){if(0!==jQuery("#"+c.getCountryId(a)).length){var d=c.getPinId(a),e=jQuery("#"+d);e.length>0&&e.remove(),c.container.append('<div id="'+d+'" for="'+a+'" class="jqvmap-pin" style="position:absolute">'+b+"</div>")}}):jQuery.each(a,function(a,b){if(0!==jQuery("#"+c.getCountryId(a)).length){var d=c.getPinId(a),e=jQuery("#"+d);e.length>0&&e.remove(),c.container.append('<div id="'+d+'" for="'+a+'" class="jqvmap-pin" style="position:absolute"></div>'),e.append(jQuery("#"+b))}}),this.positionPins(),!this.pinHandlers){this.pinHandlers=!0;var d=function(){c.positionPins()};this.container.bind("zoomIn",d).bind("zoomOut",d).bind("drag",d)}},JQVMap.prototype.positionPins=function(){var a=this,b=this.container.find(".jqvmap-pin");jQuery.each(b,function(b,c){c=jQuery(c);var d=a.getCountryId(c.attr("for").toLowerCase()),e=jQuery("#"+d),f=document.getElementById(d).getBBox(),g=e.position(),h=a.scale,i=g.left+f.width/2*h-c.width()/2,j=g.top+f.height/2*h-c.height()/2;c.css("left",i).css("top",j)})},JQVMap.prototype.removePin=function(a){a=a.toLowerCase(),jQuery("#"+this.getPinId(a)).remove()},JQVMap.prototype.removePins=function(){this.container.find(".jqvmap-pin").remove()},JQVMap.prototype.reset=function(){for(var a in this.countries)this.countries[a].setFill(this.color);this.scale=this.baseScale,this.transX=this.baseTransX,this.transY=this.baseTransY,this.applyTransform()},JQVMap.prototype.resize=function(){var a=this.baseScale;this.width/this.height>this.defaultWidth/this.defaultHeight?(this.baseScale=this.height/this.defaultHeight,this.baseTransX=Math.abs(this.width-this.defaultWidth*this.baseScale)/(2*this.baseScale)):(this.baseScale=this.width/this.defaultWidth,this.baseTransY=Math.abs(this.height-this.defaultHeight*this.baseScale)/(2*this.baseScale)),this.scale*=this.baseScale/a,this.transX*=this.baseScale/a,this.transY*=this.baseScale/a},JQVMap.prototype.select=function(a,b){a=a.toLowerCase(),b=b||jQuery("#"+this.getCountryId(a))[0],this.isSelected(a)||(this.multiSelectRegion?this.selectedRegions.push(a):this.selectedRegions=[a],jQuery(this.container).trigger("regionSelect.jqvmap",[a]),this.selectedColor&&b&&(b.currentFillColor=this.selectedColor,b.setFill(this.selectedColor)))},JQVMap.prototype.selectIndex=function(a){a=a.toLowerCase();for(var b=0;b<this.selectedRegions.length;b++)if(a===this.selectedRegions[b])return b;return-1},JQVMap.prototype.setBackgroundColor=function(a){this.container.css("background-color",a)},JQVMap.prototype.setColors=function(a,b){if("string"==typeof a)this.countries[a].setFill(b),this.countries[a].setAttribute("original",b);else{var c=a;for(var d in c)this.countries[d]&&(this.countries[d].setFill(c[d]),this.countries[d].setAttribute("original",c[d]))}},JQVMap.prototype.setNormalizeFunction=function(a){this.colorScale.setNormalizeFunction(a),this.values&&this.setValues(this.values)},JQVMap.prototype.setScale=function(a){this.scale=a,this.applyTransform()},JQVMap.prototype.setScaleColors=function(a){this.colorScale.setColors(a),this.values&&this.setValues(this.values)},JQVMap.prototype.setValues=function(a){var b,c=0,d=Number.MAX_VALUE;for(var e in a)e=e.toLowerCase(),b=parseFloat(a[e]),isNaN(b)||(b>c&&(c=a[e]),d>b&&(d=b));d===c&&c++,this.colorScale.setMin(d),this.colorScale.setMax(c);var f={};for(e in a)e=e.toLowerCase(),b=parseFloat(a[e]),f[e]=isNaN(b)?this.color:this.colorScale.getColor(b);this.setColors(f),this.values=a},JQVMap.prototype.unhighlight=function(a,b){a=a.toLowerCase(),b=b||jQuery("#"+this.getCountryId(a))[0],b.setOpacity(1),b.currentFillColor&&b.setFill(b.currentFillColor)},JQVMap.prototype.zoomIn=function(){var a=this,b=(jQuery("#zoom").innerHeight()-12-30-6-7-6)/(this.zoomMaxStep-this.zoomCurStep);if(a.zoomCurStep<a.zoomMaxStep){a.transX-=(a.width/a.scale-a.width/(a.scale*a.zoomStep))/2,a.transY-=(a.height/a.scale-a.height/(a.scale*a.zoomStep))/2,a.setScale(a.scale*a.zoomStep),a.zoomCurStep++;var c=jQuery("#zoomSlider");c.css("top",parseInt(c.css("top"),10)-b),a.container.trigger("zoomIn")}},JQVMap.prototype.zoomOut=function(){var a=this,b=(jQuery("#zoom").innerHeight()-12-30-6-7-6)/(this.zoomMaxStep-this.zoomCurStep);if(a.zoomCurStep>1){a.transX+=(a.width/(a.scale/a.zoomStep)-a.width/a.scale)/2,a.transY+=(a.height/(a.scale/a.zoomStep)-a.height/a.scale)/2,a.setScale(a.scale/a.zoomStep),a.zoomCurStep--;var c=jQuery("#zoomSlider");c.css("top",parseInt(c.css("top"),10)+b),a.container.trigger("zoomOut")}},VectorCanvas.prototype.applyTransformParams=function(a,b,c){"svg"===this.mode?this.rootGroup.setAttribute("transform","scale("+a+") translate("+b+", "+c+")"):(this.rootGroup.coordorigin=this.width-b+","+(this.height-c),this.rootGroup.coordsize=this.width/a+","+this.height/a)},VectorCanvas.prototype.createGroup=function(a){var b;return"svg"===this.mode?b=this.createSvgNode("g"):(b=this.createVmlNode("group"),b.style.width=this.width+"px",b.style.height=this.height+"px",b.style.left="0px",b.style.top="0px",b.coordorigin="0 0",b.coordsize=this.width+" "+this.height),a&&(this.rootGroup=b),b},VectorCanvas.prototype.createPath=function(a){var b;if("svg"===this.mode)b=this.createSvgNode("path"),b.setAttribute("d",a.path),null!==this.params.borderColor&&b.setAttribute("stroke",this.params.borderColor),this.params.borderWidth>0&&(b.setAttribute("stroke-width",this.params.borderWidth),b.setAttribute("stroke-linecap","round"),b.setAttribute("stroke-linejoin","round")),this.params.borderOpacity>0&&b.setAttribute("stroke-opacity",this.params.borderOpacity),b.setFill=function(a){this.setAttribute("fill",a),null===this.getAttribute("original")&&this.setAttribute("original",a)},b.getFill=function(){return this.getAttribute("fill")},b.getOriginalFill=function(){return this.getAttribute("original")},b.setOpacity=function(a){this.setAttribute("fill-opacity",a)};else{b=this.createVmlNode("shape"),b.coordorigin="0 0",b.coordsize=this.width+" "+this.height,b.style.width=this.width+"px",b.style.height=this.height+"px",b.fillcolor=JQVMap.defaultFillColor,b.stroked=!1,b.path=VectorCanvas.pathSvgToVml(a.path);var c=this.createVmlNode("skew");c.on=!0,c.matrix="0.01,0,0,0.01,0,0",c.offset="0,0",b.appendChild(c);var d=this.createVmlNode("fill");b.appendChild(d),b.setFill=function(a){this.getElementsByTagName("fill")[0].color=a,null===this.getAttribute("original")&&this.setAttribute("original",a)},b.getFill=function(){return this.getElementsByTagName("fill")[0].color},b.getOriginalFill=function(){return this.getAttribute("original")},b.setOpacity=function(a){this.getElementsByTagName("fill")[0].opacity=parseInt(100*a,10)+"%"}}return b},VectorCanvas.prototype.pathSvgToVml=function(a){var b,c,d="",e=0,f=0;return a.replace(/([MmLlHhVvCcSs])((?:-?(?:\d+)?(?:\.\d+)?,?\s?)+)/g,function(a,g,h){h=h.replace(/(\d)-/g,"$1,-").replace(/\s+/g,",").split(","),h[0]||h.shift();for(var i=0,j=h.length;j>i;i++)h[i]=Math.round(100*h[i]);switch(g){case"m":e+=h[0],f+=h[1],d="t"+h.join(",");break;case"M":e=h[0],f=h[1],d="m"+h.join(",");break;case"l":e+=h[0],f+=h[1],d="r"+h.join(",");break;case"L":e=h[0],f=h[1],d="l"+h.join(",");break;case"h":e+=h[0],d="r"+h[0]+",0";break;case"H":e=h[0],d="l"+e+","+f;break;case"v":f+=h[0],d="r0,"+h[0];break;case"V":f=h[0],d="l"+e+","+f;break;case"c":b=e+h[h.length-4],c=f+h[h.length-3],e+=h[h.length-2],f+=h[h.length-1],d="v"+h.join(",");break;case"C":b=h[h.length-4],c=h[h.length-3],e=h[h.length-2],f=h[h.length-1],d="c"+h.join(",");break;case"s":h.unshift(f-c),h.unshift(e-b),b=e+h[h.length-4],c=f+h[h.length-3],e+=h[h.length-2],f+=h[h.length-1],d="v"+h.join(",");break;case"S":h.unshift(f+f-c),h.unshift(e+e-b),b=h[h.length-4],c=h[h.length-3],e=h[h.length-2],f=h[h.length-1],d="c"+h.join(",")}return d}).replace(/z/g,"")},VectorCanvas.prototype.setSize=function(a,b){if("svg"===this.mode)this.canvas.setAttribute("width",a),this.canvas.setAttribute("height",b);else if(this.canvas.style.width=a+"px",this.canvas.style.height=b+"px",this.canvas.coordsize=a+" "+b,this.canvas.coordorigin="0 0",this.rootGroup){for(var c=this.rootGroup.getElementsByTagName("shape"),d=0,e=c.length;e>d;d++)c[d].coordsize=a+" "+b,c[d].style.width=a+"px",c[d].style.height=b+"px";this.rootGroup.coordsize=a+" "+b,this.rootGroup.style.width=a+"px",this.rootGroup.style.height=b+"px"}this.width=a,this.height=b}; \ No newline at end of file diff --git a/plugins/wp-statistics/assets/jqvmap/jqvmap.css b/plugins/wp-statistics/assets/jqvmap/jqvmap.css new file mode 100644 index 0000000..7e122d2 --- /dev/null +++ b/plugins/wp-statistics/assets/jqvmap/jqvmap.css @@ -0,0 +1,50 @@ +.jqvmap-label +{ + position: absolute; + display: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + background: #292929; + color: white; + font-family: sans-serif, Verdana; + font-size: smaller; + padding: 3px; + pointer-events:none; +} +.jqvmap-pin { + pointer-events:none; +} +.jqvmap-zoomin, .jqvmap-zoomout +{ + position: absolute; + left: 10px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + background: #000000; + padding: 3px; + color: white; + width: 10px; + height: 10px; + cursor: pointer; + line-height: 10px; + text-align: center; +} +.jqvmap-zoomin +{ + top: 10px; +} +.jqvmap-zoomout +{ + top: 30px; +} +.jqvmap-region +{ + cursor: pointer; +} +.jqvmap-ajax_response +{ + width: 100%; + height: 500px; +} diff --git a/plugins/wp-statistics/assets/jqvmap/jqvmap.min.css b/plugins/wp-statistics/assets/jqvmap/jqvmap.min.css new file mode 100644 index 0000000..a3a93a4 --- /dev/null +++ b/plugins/wp-statistics/assets/jqvmap/jqvmap.min.css @@ -0,0 +1 @@ +.jqvmap-label,.jqvmap-pin{pointer-events:none}.jqvmap-label{position:absolute;display:none;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background:#292929;color:#fff;font-family:sans-serif,Verdana;font-size:smaller;padding:3px}.jqvmap-zoomin,.jqvmap-zoomout{position:absolute;left:10px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background:#000;padding:3px;color:#fff;width:10px;height:10px;cursor:pointer;line-height:10px;text-align:center}.jqvmap-zoomin{top:10px}.jqvmap-zoomout{top:30px}.jqvmap-region{cursor:pointer}.jqvmap-ajax_response{width:100%;height:500px} diff --git a/plugins/wp-statistics/assets/jqvmap/maps/jquery.vmap.world.js b/plugins/wp-statistics/assets/jqvmap/maps/jquery.vmap.world.js new file mode 100644 index 0000000..6fc1849 --- /dev/null +++ b/plugins/wp-statistics/assets/jqvmap/maps/jquery.vmap.world.js @@ -0,0 +1,2 @@ +/** Add World Map Data Points */ +jQuery.fn.vectorMap('addMap', 'world_en', {"width":950,"height":550,"paths":{"id":{"path":"M781.68,324.4l-2.31,8.68l-12.53,4.23l-3.75-4.4l-1.82,0.5l3.4,13.12l5.09,0.57l6.79,2.57v2.57l3.11-0.57l4.53-6.27v-5.13l2.55-5.13l2.83,0.57l-3.4-7.13l-0.52-4.59L781.68,324.4L781.68,324.4M722.48,317.57l-0.28,2.28l6.79,11.41h1.98l14.15,23.67l5.66,0.57l2.83-8.27l-4.53-2.85l-0.85-4.56L722.48,317.57L722.48,317.57M789.53,349.11l2.26,2.77l-1.47,4.16v0.79h3.34l1.18-10.4l1.08,0.3l1.96,9.5l1.87,0.5l1.77-4.06l-1.77-6.14l-1.47-2.67l4.62-3.37l-1.08-1.49l-4.42,2.87h-1.18l-2.16-3.17l0.69-1.39l3.64-1.78l5.5,1.68l1.67-0.1l4.13-3.86l-1.67-1.68l-3.83,2.97h-2.46l-3.73-1.78l-2.65,0.1l-2.95,4.75l-1.87,8.22L789.53,349.11L789.53,349.11M814.19,330.5l-1.87,4.55l2.95,3.86h0.98l1.28-2.57l0.69-0.89l-1.28-1.39l-1.87-0.69L814.19,330.5L814.19,330.5M819.99,345.45l-4.03,0.89l-1.18,1.29l0.98,1.68l2.65-0.99l1.67-0.99l2.46,1.98l1.08-0.89l-1.96-2.38L819.99,345.45L819.99,345.45M753.17,358.32l-2.75,1.88l0.59,1.58l8.75,1.98l4.42,0.79l1.87,1.98l5.01,0.4l2.36,1.98l2.16-0.5l1.97-1.78l-3.64-1.68l-3.14-2.67l-8.16-1.98L753.17,358.32L753.17,358.32M781.77,366.93l-2.16,1.19l1.28,1.39l3.14-1.19L781.77,366.93L781.77,366.93M785.5,366.04l0.39,1.88l2.26,0.59l0.88-1.09l-0.98-1.49L785.5,366.04L785.5,366.04M790.91,370.99l-2.75,0.4l2.46,2.08h1.96L790.91,370.99L790.91,370.99M791.69,367.72l-0.59,1.19l4.42,0.69l3.44-1.98l-1.96-0.59l-3.14,0.89l-1.18-0.99L791.69,367.72L791.69,367.72M831.93,339.34l-4.17,0.47l-2.68,1.96l1.11,2.24l4.54,0.84v0.84l-2.87,2.33l1.39,4.85l1.39,0.09l1.2-4.76h2.22l0.93,4.66l10.83,8.96l0.28,7l3.7,4.01l1.67-0.09l0.37-24.72l-6.29-4.38l-5.93,4.01l-2.13,1.31l-3.52-2.24l-0.09-7.09L831.93,339.34L831.93,339.34z","name":"Indonesia"},"pg":{"path":"M852.76,348.29l-0.37,24.44l3.52-0.19l4.63-5.41l3.89,0.19l2.5,2.24l0.83,6.9l7.96,4.2l2.04-0.75v-2.52l-6.39-5.32l-3.15-7.28l2.5-1.21l-1.85-4.01l-3.7-0.09l-0.93-4.29l-9.81-6.62L852.76,348.29L852.76,348.29M880.48,349l-0.88,1.25l4.81,4.26l0.66,2.5l1.31-0.15l0.15-2.57l-1.46-1.32L880.48,349L880.48,349M882.89,355.03l-0.95,0.22l-0.58,2.57l-1.82,1.18l-5.47,0.96l0.22,2.06l5.76-0.29l3.65-2.28l-0.22-3.97L882.89,355.03L882.89,355.03M889.38,359.51l1.24,3.45l2.19,2.13l0.66-0.59l-0.22-2.28l-2.48-3.01L889.38,359.51L889.38,359.51z","name":"Papua New Guinea"},"mx":{"path":"M137.49,225.43l4.83,15.21l-2.25,1.26l0.25,3.02l4.25,3.27v6.05l5.25,5.04l-2.25-14.86l-3-9.83l0.75-6.8l2.5,0.25l1,2.27l-1,5.79l13,25.44v9.07l10.5,12.34l11.5,5.29l4.75-2.77l6.75,5.54l4-4.03l-1.75-4.54l5.75-1.76l1.75,1.01l1.75-1.76h2.75l5-8.82l-2.5-2.27l-9.75,2.27l-2.25,6.55l-5.75,1.01l-6.75-2.77l-3-9.57l2.27-12.07l-4.64-2.89l-2.21-11.59l-1.85-0.79l-3.38,3.43l-3.88-2.07l-1.52-7.73l-15.37-1.61l-7.94-5.97L137.49,225.43L137.49,225.43z","name":"Mexico"},"ee":{"path":"M517.77,143.66l-5.6-0.2l-3.55,2.17l-0.05,1.61l2.3,2.17l7.15,1.21L517.77,143.66L517.77,143.66M506.76,147.64l-1.55-0.05l-0.9,0.91l0.65,0.96l1.55,0.1l0.8-1.16L506.76,147.64L506.76,147.64z","name":"Estonia"},"dz":{"path":"M473.88,227.49l-4.08-1.37l-16.98,3.19l-3.7,2.81l2.26,11.67l-6.75,0.27l-4.06,6.53l-9.67,2.32l0.03,4.75l31.85,24.35l5.43,0.46l18.11-14.15l-1.81-2.28l-3.4-0.46l-2.04-3.42v-14.15l-1.36-1.37l0.23-3.65l-3.62-3.65l-0.45-3.88l1.58-1.14l-0.68-4.11L473.88,227.49L473.88,227.49z","name":"Algeria"},"ma":{"path":"M448.29,232.28h-11.55l-2.26,5.02l-5.21,2.51l-4.3,11.64l-8.38,5.02l-11.77,19.39l11.55-0.23l0.45-5.7h2.94v-7.76h10.19l0.23-10.04l9.74-2.28l4.08-6.62l6.34-0.23L448.29,232.28L448.29,232.28z","name":"Morocco"},"mr":{"path":"M404.9,276.66l2.18,2.85l-0.45,12.32l3.17-2.28l2.26-0.46l3.17,1.14l3.62,5.02l3.4-2.28l16.53-0.23l-4.08-27.61l4.38-0.02l-8.16-6.25l0.01,4.06l-10.33,0.01l-0.05,7.75l-2.97-0.01l-0.38,5.72L404.9,276.66L404.9,276.66z","name":"Mauritania"},"sn":{"path":"M412.03,289.84L410.12,290.31L406.18,293.18L405.28,294.78L405,296.37L406.43,297.40L411.28,297.34L414.40,296.5L414.75,298.03L414.46,300.06L414.53,300.09L406.78,300.21L408.03,303.21L408.71,301.37L418,302.15L418.06,302.21L419.03,302.25L422,302.37L422.12,300.62L418.53,296.31L414.53,290.87L412.03,289.84z","name":"Senegal"},"gm":{"path":"M406.89,298.34l-0.13,1.11l6.92-0.1l0.35-1.03l-0.15-1.04l-1.99,0.81L406.89,298.34L406.89,298.34z","name":"Gambia"},"gw":{"path":"M408.6,304.53l1.4,2.77l3.93-3.38l0.04-1.04l-4.63-0.67L408.6,304.53L408.6,304.53z","name":"Guinea-Bissau"},"gn":{"path":"M410.42,307.94l3.04,4.68l3.96-3.44l4.06-0.18l3.38,4.49l2.87,1.89l1.08-2.1l0.96-0.54l-0.07-4.62l-1.91-5.48l-5.86,0.65l-7.25-0.58l-0.04,1.86L410.42,307.94L410.42,307.94z","name":"Guinea"},"sl":{"path":"M413.93,313.13l5.65,5.46l4.03-4.89l-2.52-3.95l-3.47,0.35L413.93,313.13L413.93,313.13z","name":"Sierra Leone"},"lr":{"path":"M420.17,319.19l10.98,7.34l-0.26-5.56l-3.32-3.91l-3.24-2.87L420.17,319.19L420.17,319.19z","name":"Liberia"},"ci":{"path":"M432.07,326.75l4.28-3.03l5.32-0.93l5.43,1.17l-2.77-4.19l-0.81-2.56l0.81-7.57l-4.85,0.23l-2.2-2.1l-4.62,0.12l-2.2,0.35l0.23,5.12l-1.16,0.47l-1.39,2.56l3.58,4.19L432.07,326.75L432.07,326.75z","name":"Cote d'Ivoire"},"ml":{"path":"M419.46,295.84l3.08-2.11l17.12-0.1l-3.96-27.54l4.52-0.13l21.87,16.69l2.94,0.42l-1.11,9.28l-13.75,1.25l-10.61,7.92l-1.93,5.42l-7.37,0.31l-1.88-5.41l-5.65,0.4l0.22-1.77L419.46,295.84L419.46,295.84z","name":"Mali"},"bf":{"path":"M450.59,294.28l3.64-0.29l5.97,8.44l-5.54,4.18l-4.01-1.03l-5.39,0.07l-0.87,3.16l-4.52,0.22l-1.24-1.69l1.6-5.14L450.59,294.28L450.59,294.28z","name":"Burkina Faso"},"ne":{"path":"M460.89,302l2.55-0.06l2.3-3.45l3.86-0.69l4.11,2.51l8.77,0.25l6.78-2.76l2.55-2.19l0.19-2.88l4.73-4.77l1.25-10.53l-3.11-6.52l-7.96-1.94l-18.42,14.36l-2.61-0.25l-1.12,9.97l-9.4,0.94L460.89,302L460.89,302z","name":"Niger"},"gh":{"path":"M444.34,317.05l1.12,2.63l2.92,4.58l1.62-0.06l4.42-2.51l-0.31-14.29l-3.42-1l-4.79,0.13L444.34,317.05L444.34,317.05z","name":"Ghana"},"tg":{"path":"M455.22,321.25l2.68-1.57l-0.06-10.35l-1.74-2.82l-1.12,0.94L455.22,321.25L455.22,321.25z","name":"Togo"},"bj":{"path":"M458.71,319.49h2.12l0.12-6.02l2.68-3.89l-0.12-6.77l-2.43-0.06l-4.17,3.26l1.74,3.32L458.71,319.49L458.71,319.49z","name":"Benin"},"ng":{"path":"M461.57,319.37l3.92,0.19l4.73,5.27l2.3,0.63l1.8-0.88l2.74-0.38l0.93-3.82l3.73-2.45l4.04-0.19l7.4-13.61l-0.12-3.07l-3.42-2.63l-6.84,3.01l-9.15-0.13l-4.36-2.76l-3.11,0.69l-1.62,2.82l-0.12,7.96l-2.61,3.7L461.57,319.37L461.57,319.37z","name":"Nigeria"},"tn":{"path":"M474.91,227.33l5.53-2.23l1.82,1.18l0.07,1.44l-0.85,1.11l0.13,1.97l0.85,0.46v3.54l-0.98,1.64l0.13,1.05l3.71,1.31l-2.99,4.65l-1.17-0.07l-0.2,3.74l-1.3,0.2l-1.11-0.98l0.26-3.8l-3.64-3.54l-0.46-3.08l1.76-1.38L474.91,227.33L474.91,227.33z","name":"Tunisia"},"ly":{"path":"M480.05,248.03l1.56-0.26l0.46-3.6h0.78l3.19-5.24l7.87,2.29l2.15,3.34l7.74,3.54l4.03-1.7l-0.39-1.7l-1.76-1.7l0.2-1.18l2.86-2.42h5.66l2.15,2.88l4.55,0.66l0.59,36.89l-3.38-0.13l-20.42-10.62l-2.21,1.25l-8.39-2.1l-2.28-3.01l-3.32-0.46l-1.69-3.01L480.05,248.03L480.05,248.03z","name":"Libya"},"eg":{"path":"M521.93,243.06l2.67,0.07l5.2,1.44l2.47,0.07l3.06-2.56h1.43l2.6,1.44h3.29l0.59-0.04l2.08,5.98l0.59,1.93l0.55,2.89l-0.98,0.72l-1.69-0.85l-1.95-6.36l-1.76-0.13l-0.13,2.16l1.17,3.74l9.37,11.6l0.2,4.98l-2.73,3.15L522.32,273L521.93,243.06L521.93,243.06z","name":"Egypt"},"td":{"path":"M492.79,296l0.13-2.95l4.74-4.61l1.27-11.32l-3.16-6.04l2.21-1.13l21.4,11.15l-0.13,10.94l-3.77,3.21v5.64l2.47,4.78h-4.36l-7.22,7.14l-0.19,2.16l-5.33-0.07l-0.07,0.98l-3.04-0.4l-2.08-3.93l-1.56-0.77l0.2-1.2l1.96-1.5v-7.02l-2.71-0.42l-3.27-2.43L492.79,296L492.79,296L492.79,296z","name":"Chad"},"sd":{"path":"M520.15,292.43l0.18-11.83l2.46,0.07l-0.28-6.57l25.8,0.23l3.69-3.72l7.96,12.73l-4.36,5.14v7.85l-6.86,14.75l-2.36,1.04l0.75,4.11h2.94l3.99,5.79l-3.2,0.41l-0.82,1.49l-0.08,2.15l-9.6-0.17l-0.98-1.49l-6.71-0.38l-12.32-12.68l1.23-0.74l0.33-2.98l-2.95-1.74l-2.69-5.31l0.15-4.94L520.15,292.43L520.15,292.43z","name":"Sudan"},"cm":{"path":"M477.82,324.28l3.22,2.96l-0.23,4.58l17.66-0.41l1.44-1.62l-5.06-5.45l-0.75-1.97l3.22-6.03l-2.19-4l-1.84-0.99v-2.03l2.13-1.39l0.12-6.32l-1.69-0.19l-0.03,3.32l-7.42,13.85l-4.54,0.23l-3.11,2.14L477.82,324.28L477.82,324.28z","name":"Cameroon"},"er":{"path":"M556.71,294.7l-0.25-5.89l3.96-4.62l1.07,0.82l1.95,6.52l9.36,6.97l-1.7,2.09l-6.85-5.89H556.71L556.71,294.7z","name":"Eritrea"},"dj":{"path":"M571.48,301.54l-0.57,3.36l3.96-0.06l0.06-4.94l-1.45-0.89L571.48,301.54L571.48,301.54z","name":"Djibouti"},"et":{"path":"M549.49,311.76l7.28-16.2l7.23,0.04l6.41,5.57l-0.45,4.59h4.97l0.51,2.76l8.04,4.81l4.96,0.25l-9.43,10.13l-12.95,3.99h-3.21l-5.72-4.88l-2.26-0.95l-4.38-6.45l-2.89,0.04l-0.34-2.96L549.49,311.76L549.49,311.76z","name":"Ethiopia"},"so":{"path":"M575.74,305.04l4.08,2.78l1.21-0.06l10.13-3.48l1.15,3.71l-0.81,3.13l-2.19,1.74l-5.47-0.35l-7.83-4.81L575.74,305.04L575.74,305.04M591.97,304.05l4.37-1.68l1.55,0.93l-0.17,3.88l-4.03,11.48l-21.81,23.36l-2.53-1.74l-0.17-9.86l3.28-3.77l6.96-2.15l10.21-10.78l2.67-2.38l0.75-3.48L591.97,304.05L591.97,304.05z","name":"Somalia"},"ye":{"path":"M599.62,299.65l2.13,2.38l2.88-1.74l1.04-0.35l-1.32-1.28l-2.53,0.75L599.62,299.65L599.62,299.65M571.99,289.23l1.44,4.28v4.18l3.46,3.14l24.38-9.93l0.23-2.73l-3.91-7.02l-9.81,3.13l-5.63,5.54l-6.53-3.86L571.99,289.23L571.99,289.23z","name":"Yemen"},"cf":{"path":"M495.66,324.05l4.66,5.04l1.84-2.38l2.93,0.12l0.63-2.32l2.88-1.8l5.98,4.12l3.45-3.42l13.39,0.59L519,311.18l1.67-1.04l0.23-2.26l-2.82-1.33h-4.14l-6.67,6.61l-0.23,2.72l-5.29-0.17l-0.17,1.16l-3.45-0.35l-3.11,5.91L495.66,324.05L495.66,324.05z","name":"Central African Republic"},"st":{"path":"M470.74,337.15l1.15-0.58l0.86,0.7l-0.86,1.33l-1.04-0.41L470.74,337.15L470.74,337.15M473.05,333.5l1.73-0.29l0.58,1.1l-0.86,0.93l-0.86-0.12L473.05,333.5L473.05,333.5z","name":"Sao Tome and Principe"},"gq":{"path":"M476.84,327.41l-0.46,1.97l1.38,0.75l1.32-0.99l-0.46-2.03L476.84,327.41L476.84,327.41M480.99,332.69l-0.06,1.39l4.54,0.23l-0.06-1.57L480.99,332.69L480.99,332.69z","name":"Equatorial Guinea"},"ga":{"path":"M486.39,332.63l-0.12,2.49l-5.64-0.12l-3.45,6.67l8.11,8.87l2.01-1.68l-0.06-1.74l-1.38-0.64v-1.22l3.11-1.97l2.76,2.09l3.05,0.06l-0.06-10.49l-4.83-0.23l-0.06-2.2L486.39,332.63L486.39,332.63z","name":"Gabon"},"cg":{"path":"M491,332.52l-0.06,1.45l4.78,0.12l0.17,12.41l-4.37-0.12l-2.53-1.97l-1.96,1.1l-0.09,0.55l1.01,0.49l0.29,2.55l-2.7,2.32l0.58,1.22l2.99-2.32h1.44l0.46,1.39l1.9,0.81l6.1-5.16l-0.12-3.77l1.27-3.07l3.91-2.9l1.05-9.81l-2.78,0.01l-3.22,4.41L491,332.52L491,332.52z","name":"Congo"},"ao":{"path":"M486.55,353.23l1.74,2.26l2.25-2.13l-0.66-2.21l-0.56-0.04L486.55,353.23L486.55,353.23M488.62,356.71l3.41,12.73l-0.08,4.02l-4.99,5.36l-0.75,8.71l19.2,0.17l6.24,2.26l5.15-0.67l-3-3.76l0.01-10.74l5.9-0.25v-4.19l-4.79-0.2l-0.96-9.92l-2.02,0.03l-1.09-0.98l-1.19,0.06l-1.58,3.06H502l-1.41-1.42l0.42-2.01l-1.66-2.43L488.62,356.71L488.62,356.71z","name":"Angola"},"cd":{"path":"M489.38,355.71l10.31-0.18l2.09,2.97l-0.08,2.19l0.77,0.7h5.12l1.47-2.89h2.09l0.85,0.86l2.87-0.08l0.85,10.08l4.96,0.16v0.78l13.33,6.01l0.62,1.17h2.79l-0.31-4.22l-5.04-2.42l0.31-3.2l2.17-5.08l4.96-0.16l-4.26-14.14l0.08-6.01l6.74-10.54l0.08-1.48l-1.01-0.55l0.04-2.86l-1.23-0.11l-1.24-1.58l-20.35-0.92l-3.73,3.63l-6.11-4.02l-2.15,1.32l-1.56,13.13l-3.86,2.98l-1.16,2.64l0.21,3.91l-6.96,5.69l-1.85-0.84l0.25,1.09L489.38,355.71L489.38,355.71z","name":"Congo"},"rw":{"path":"M537.82,339.9l2.81,2.59l-0.12,2.77l-4.36,0.09v-3.06L537.82,339.9L537.82,339.9z","name":"Rwanda"},"bi":{"path":"M536.21,346.21l4.27-0.09l-1.11,3.74l-1.08,0.94h-1.32l-0.94-2.53L536.21,346.21L536.21,346.21z","name":"Burundi"},"ug":{"path":"M538.3,339.09l3.03,2.84l1.9-1.21l5.14-0.84l0.88,0.09l0.33-1.95l2.9-6.1l-2.44-5.08l-7.91,0.05l-0.05,2.09l1.06,1.02l-0.16,2.09L538.3,339.09L538.3,339.09z","name":"Uganda"},"ke":{"path":"M550.83,326.52l2.66,5.19l-3.19,6.69l-0.42,2.03l15.93,9.85l4.94-7.76l-2.5-2.03l-0.05-10.22l3.13-3.42l-4.99,1.66l-3.77,0.05l-5.9-4.98l-1.86-0.8l-3.45,0.32l-0.61,1.02L550.83,326.52L550.83,326.52z","name":"Kenya"},"tz":{"path":"M550.57,371.42l17.47-2.14l-3.93-7.6l-0.21-7.28l1.27-3.48l-16.62-10.44l-5.21,0.86l-1.81,1.34l-0.16,3.05l-1.17,4.23l-1.22,1.45l-1.75,0.16l3.35,11.61l5.47,2.57l3.77,0.11L550.57,371.42L550.57,371.42z","name":"Tanzania"},"zm":{"path":"M514.55,384.7l3.17,4.4l4.91,0.3l1.74,0.96l5.14,0.06l4.43-6.21l12.38-5.54l1.08-4.88l-1.44-6.99l-6.46-3.68l-4.31,0.3l-2.15,4.76l0.06,2.17l5.08,2.47l0.3,5.37l-4.37,0.24l-1.08-1.81l-12.14-5.18l-0.36,3.98l-5.74,0.18L514.55,384.7L514.55,384.7z","name":"Zambia"},"mw":{"path":"M547.16,379.4l3.11,3.25l-0.06,4.16l0.6,1.75l4.13-4.46l-0.48-5.67l-2.21-1.69l-1.97-9.95l-3.41-0.12l1.55,7.17L547.16,379.4L547.16,379.4z","name":"Malawi"},"mz":{"path":"M541.17,413.28l2.69,2.23l6.34-3.86l1.02-5.73v-9.46l10.17-8.32l1.74,0.06l6.16-5.91l-0.96-12.18L552,372.17l0.48,3.68l2.81,2.17l0.66,6.63l-5.5,5.37l-1.32-3.01l0.24-3.98l-3.17-3.44l-7.78,3.62l7.24,3.68l0.24,10.73l-4.79,7.11L541.17,413.28L541.17,413.28z","name":"Mozambique"},"zw":{"path":"M524.66,392.3l8.97,10.13l6.88,1.75l4.61-7.23l-0.36-9.58l-7.48-3.86l-2.81,1.27l-4.19,6.39l-5.8-0.06L524.66,392.3L524.66,392.3z","name":"Zimbabwe"},"na":{"path":"M496.55,421.96l3.35,0.24l1.97,1.99l4.67,0.06l1.14-13.26v-8.68l2.99-0.6l1.14-9.1l7.6-0.24l2.69-2.23l-4.55-0.18l-6.16,0.84l-6.64-2.41h-18.66l0.48,5.3l6.22,9.16l-1.08,4.7l0.06,2.47L496.55,421.96L496.55,421.96z","name":"Namibia"},"bw":{"path":"M508.51,411.23l2.15,0.66l-0.3,6.15l2.21,0.3l5.08-4.58l6.1,0.66l1.62-4.1l7.72-7.05l-9.27-10.67l-0.12-1.75l-1.02-0.3l-2.81,2.59l-7.3,0.18l-1.02,9.1l-2.87,0.66L508.51,411.23L508.51,411.23z","name":"Botswana"},"sz":{"path":"M540.87,414l-2.51,0.42l-1.08,2.95l1.92,1.75h2.33l1.97-2.83L540.87,414L540.87,414z","name":"Swaziland"},"ls":{"path":"M527.41,425.39l3.05-2.35l1.44,0.06l1.74,2.17l-0.18,2.17l-2.93,1.08v0.84l-3.23-0.18l-0.78-2.35L527.41,425.39L527.41,425.39z","name":"Lesotho"},"za":{"path":"M534.16,403.63l-7.9,7.3l-1.88,4.51l-6.26-0.78l-5.21,4.63l-3.46-0.34l0.28-6.4l-1.23-0.43l-0.86,13.09l-6.14-0.06l-1.85-2.18l-2.71-0.03l2.47,7.09l4.41,4.17l-3.15,3.67l2.04,4.6l4.72,1.8l3.76-3.2l10.77,0.06l0.77-0.96l4.78-0.84l16.17-16.1l-0.06-5.07l-1.73,2.24h-2.59l-3.15-2.64l1.6-3.98l2.75-0.56l-0.25-8.18L534.16,403.63L534.16,403.63z M530.37,422.13l1.51-0.06l2.45,2.66l-0.07,3.08l-2.87,1.45l-0.18,1.02l-4.38,0.05l-1.37-3.3l1.25-2.42L530.37,422.13L530.37,422.13z","name":"South Africa"},"gl":{"path":"M321.13,50.07l-1.36,2.17l2.45,2.45l-1.09,2.45l3.54,4.62l4.35-1.36l5.71-0.54l6.53,7.07l4.35,11.69l-3.53,7.34l4.89-0.82l2.72,1.63l0.27,3.54l-5.98,0.27l3.26,3.26l4.08,0.82l-8.97,11.96l-1.09,7.34l1.9,5.98l-1.36,3.54l2.45,7.61l4.62,5.17l1.36-0.27l2.99-0.82l0.27,4.35l1.9,2.72l3.53-0.27l2.72-10.06l8.16-10.06l12.24-4.89l7.61-9.52l3.53,1.63h7.34l5.98-5.98l7.34-2.99l0.82-4.62l-4.62-4.08l-4.08-1.36l-2.18-5.71l5.17-2.99l8.16,4.35l2.72-2.99l-4.35-2.45l9.25-12.51l-1.63-5.44l-4.35-0.27l1.63-4.89l5.44-2.45l11.15-9.79l-3.26-3.53l-12.51,1.09l-6.53,6.53l3.81-8.43l-4.35-1.09l-2.45,4.35l-3.53-2.99l-9.79,1.09l2.72-4.35l16.04-0.54l-4.08-5.44l-17.4-3.26l-7.07,1.09l0.27,3.54l-7.34-2.45l0.27-2.45l-5.17,1.09l-1.09,2.72l5.44,1.9l-5.71,4.08l-4.08-4.62l-5.71-1.63l-0.82,4.35h-5.71l-2.18-4.62l-8.97-1.36l-4.89,2.45l-0.27,3.26l-6.25-0.82l-3.81,1.63l0.27,3.81v1.9l-7.07,1.36l-3.26-2.17l-2.18,3.53l3.26,3.54l6.8-0.82l0.54,2.18l-5.17,2.45L321.13,50.07L321.13,50.07M342.89,92.49l1.63,2.45l-0.82,2.99h-1.63l-2.18-2.45l0.54-1.9L342.89,92.49L342.89,92.49M410.87,85.69l4.62,1.36l-0.27,3.81l-4.89-2.45l-1.09-1.36L410.87,85.69L410.87,85.69z","name":"Greenland"},"au":{"path":"M761.17,427.98l-0.35,25.38l-3.9,2.86l-0.35,2.5l5.32,3.57l13.13-2.5h6.74l2.48-3.58l14.9-2.86l10.64,3.22l-0.71,4.29l1.42,4.29l8.16-1.43l0.35,2.14l-5.32,3.93l1.77,1.43l3.9-1.43l-1.06,11.8l7.45,5.72l4.26-1.43l2.13,2.14l12.42-1.79l11.71-18.95l4.26-1.07l8.51-15.73l2.13-13.58l-5.32-6.79l2.13-1.43l-4.26-13.23l-4.61-3.22l0.71-17.87l-4.26-3.22l-1.06-10.01h-2.13l-7.1,23.59l-3.9,0.36l-8.87-8.94l4.97-13.23l-9.22-1.79l-10.29,2.86l-2.84,8.22l-4.61,1.07l-0.35-5.72l-18.8,11.44l0.35,4.29l-2.84,3.93h-7.1l-15.26,6.43L761.17,427.98L761.17,427.98M825.74,496.26l-1.77,7.15l0.35,5l5.32-0.36l6.03-9.29L825.74,496.26L825.74,496.26z","name":"Australia"},"nz":{"path":"M913.02,481.96l1.06,11.8l-1.42,5.36l-5.32,3.93l0.35,4.65v5l1.42,1.79l14.55-12.51v-2.86h-3.55l-4.97-16.8L913.02,481.96L913.02,481.96M902.38,507.7l2.84,5.36l-7.81,7.51l-0.71,3.93l-5.32,0.71l-8.87,8.22l-8.16-3.93l-0.71-2.86l14.9-6.43L902.38,507.7L902.38,507.7z","name":"New Zealand"},"nc":{"path":"M906.64,420.47l-0.35,1.79l4.61,6.43l2.48,1.07l0.35-2.5L906.64,420.47L906.64,420.47z","name":"New Caledonia"},"my":{"path":"M764.14,332.92l3.02,3.49l11.58-4.01l2.29-8.84l5.16-0.37l4.72-3.42l-6.12-4.46l-1.4-2.45l-3.02,5.57l1.11,3.2l-1.84,2.67l-3.47-0.89l-8.41,6.17l0.22,3.57L764.14,332.92L764.14,332.92M732.71,315.45l2.01,4.51l0.45,5.86l2.69,4.17l6.49,3.94l2.46,0.23l-0.45-4.06l-2.13-5.18l-3.12-6.63l-0.26,1.16l-3.76-0.17l-2.7-3.88L732.71,315.45L732.71,315.45z","name":"Malaysia"},"bn":{"path":"M779.77,319.25l-2.88,3.49l2.36,0.74l1.33-1.86L779.77,319.25L779.77,319.25z","name":"Brunei Darussalam"},"tl":{"path":"M806.14,368.42l-5.11,4.26l0.49,1.09l2.16-0.4l2.55-2.38l5.01-0.69l-0.98-1.68L806.14,368.42L806.14,368.42z","name":"Timor-Leste"},"sb":{"path":"M895.43,364.65l0.15,2.28l1.39,1.32l1.31-0.81l-1.17-2.43L895.43,364.65L895.43,364.65M897.18,370.31l-1.17,1.25l1.24,2.28l1.46,0.44l-0.07-1.54L897.18,370.31L897.18,370.31M900.03,368.99l1.02,2.5l1.97,2.35l1.09-1.76l-1.46-2.5L900.03,368.99L900.03,368.99M905.14,372.74l0.58,3.09l1.39,1.91l1.17-2.42L905.14,372.74L905.14,372.74M906.74,379.65l-0.51,0.88l1.68,2.21l1.17,0.07l-0.73-2.87L906.74,379.65L906.74,379.65M903.02,384.05l-1.75,0.81l1.53,2.13l1.31-0.74L903.02,384.05L903.02,384.05z","name":"Solomon Islands"},"vu":{"path":"M920.87,397.22l-1.24,1.66l0.52,1.87l0.62,0.42l1.13-1.46L920.87,397.22L920.87,397.22M921.49,402.31l0.1,1.35l1.34,0.42l0.93-0.52l-0.93-1.46L921.49,402.31L921.49,402.31M923.45,414.37l-0.62,0.94l0.93,1.04l1.55-0.52L923.45,414.37L923.45,414.37z","name":"Vanuatu"},"fj":{"path":"M948.62,412.29l-1.24,1.66l-0.1,1.87l1.44,1.46L948.62,412.29L948.62,412.29z","name":"Fiji"},"ph":{"path":"M789.37,297.53l-0.86,1.64l-0.48,2.02l-4.78,6.07l0.29,1.25l2.01-0.29l6.21-6.94L789.37,297.53L789.37,297.53M797.11,295.22l-0.1,5.01l1.82,1.83l0.67,3.56l1.82,0.39l0.86-2.22l-1.43-1.06l-0.38-6.26L797.11,295.22L797.11,295.22M802.28,297.15l-0.1,4.43l1.05,1.73l1.82-2.12l-0.48-3.85L802.28,297.15L802.28,297.15M803.42,293.29l1.82,2.41l0.86,2.31h1.63l-0.29-3.95l-1.82-1.25L803.42,293.29L803.42,293.29M806.96,302.35l0.38,2.89l-3.35,2.7l-2.77,0.29l-2.96,3.18l0.1,1.45l2.77-0.87l1.91-1.25l1.63,4.14l2.87,2.02l1.15-0.39l1.05-1.25l-2.29-2.31l1.34-1.06l1.53,1.25l1.05-1.73l-1.05-2.12l-0.19-4.72L806.96,302.35L806.96,302.35M791.38,272.97l-2.58,1.83l-0.29,5.78l4.02,7.8l1.34,1.06l1.72-1.16l2.96,0.48l0.57,2.6l2.2,0.19l1.05-1.44l-1.34-1.83l-1.63-1.54l-3.44-0.38l-1.82-2.99l2.1-3.18l0.19-2.79l-1.43-3.56L791.38,272.97L791.38,272.97M792.72,290.21l0.76,2.7l1.34,0.87l0.96-1.25l-1.53-2.12L792.72,290.21L792.72,290.21z","name":"Philippines"},"cn":{"path":"M759.83,270.17l-2.39,0.67l-1.72,2.12l1.43,2.79l2.1,0.19l2.39-2.12l0.57-2.79L759.83,270.17L759.83,270.17M670.4,170.07l-3.46,8.7l-4.77-0.25l-5.03,11.01l4.27,5.44l-8.8,12.15l-4.52-0.76l-3.02,3.8l0.75,2.28l3.52,0.25l1.76,4.05l3.52,0.76l10.81,13.93v7.09l5.28,3.29l5.78-1.01l7.29,4.3l8.8,2.53l4.27-0.51l4.78-0.51l10.05-6.58l3.27,0.51l1.25,2.97l2.77,0.83l3.77,5.57l-2.51,5.57l1.51,3.8l4.27,1.52l0.75,4.56l5.03,0.51l0.75-2.28l7.29-3.8l4.52,0.25l5.28,5.82l3.52-1.52l2.26,0.25l1.01,2.79l1.76,0.25l2.51-3.54l10.05-3.8l9.05-10.89l3.02-10.38l-0.25-6.84l-3.77-0.76l2.26-2.53l-0.5-4.05l-9.55-9.62v-4.81l2.76-3.54l2.76-1.27l0.25-2.79h-7.04l-1.26,3.8l-3.27-0.76l-4.02-4.3l2.51-6.58l3.52-3.8l3.27,0.25l-0.5,5.82l1.76,1.52l4.27-4.3l1.51-0.25l-0.5-3.29l4.02-4.81l3.02,0.25l1.76-5.57l2.06-1.09l0.21-3.47l-2-2.1l-0.17-5.48l3.85-0.25l-0.25-14.13l-2.7,1.62l-1.01,3.62l-4.51-0.01l-13.07-7.35l-9.44-11.38l-9.58-0.1l-2.44,2.12l3.1,7.1l-1.08,6.66l-3.86,1.6l-2.17-0.17l-0.16,6.59l2.26,0.51l4.02-1.77l5.28,2.53v2.53l-3.77,0.25l-3.02,6.58l-2.76,0.25l-9.8,12.91l-10.3,4.56l-7.04,0.51l-4.77-3.29l-6.79,3.55l-7.29-2.28l-1.76-4.81l-12.31-0.76l-6.53-10.63h-2.76l-2.22-4.93L670.4,170.07z","name":"China"},"tw":{"path":"M787.46,248.31l-3.54,2.7l-0.19,5.2l3.06,3.56l0.76-0.67L787.46,248.31L787.46,248.31z","name":"Taiwan"},"jp":{"path":"M803.23,216.42l-1.63,1.64l0.67,2.31l1.43,0.1l0.96,5.01l1.15,1.25l2.01-1.83l0.86-3.28l-2.49-3.56L803.23,216.42L803.23,216.42M812.03,213.15l-2.77,2.6l-0.1,2.99l0.67,0.87l3.73-3.18l-0.29-3.18L812.03,213.15L812.03,213.15M808.2,206.98l-4.88,5.59l0.86,1.35l2.39,0.29l4.49-3.47l3.16-0.58l2.87,3.37l2.2-0.77l0.86-3.28l4.11-0.1l4.02-4.82l-2.1-8l-0.96-4.24l2.1-1.73l-4.78-7.22l-1.24,0.1l-2.58,2.89v2.41l1.15,1.35l0.38,6.36l-2.96,3.66l-1.72-1.06l-1.34,2.99l-0.29,2.79l1.05,1.64l-0.67,1.25l-2.2-1.83h-1.53l-1.34,0.77L808.2,206.98L808.2,206.98M816.43,163.44l-1.53,1.35l0.77,2.89l1.34,1.35l-0.1,4.43l-1.72,0.67l-1.34,2.99l3.92,5.39l2.58-0.87l0.48-1.35l-2.77-2.5l1.72-2.22l1.82,0.29l1.43,1.54l0.1-3.18l3.92-3.18l2.2-0.58l-1.82-3.08l-0.86-1.35l-1.43,0.96l-1.24,1.54l-2.68-0.58l-2.77-1.83L816.43,163.44L816.43,163.44z","name":"Japan"},"ru":{"path":"M506.61,151.72l-1.5-0.15l-2.7,3.23v1.51l0.9,0.35l1.75,0.05l2.9-2.37l0.4-0.81L506.61,151.72L506.61,151.72M830.86,160.45l-2.68,3.76l0.19,1.83l1.34-0.58l3.15-3.95L830.86,160.45L830.86,160.45M834.4,154.96l-0.96,2.6l0.1,1.73l1.63-1.06l1.53-3.08V154L834.4,154.96L834.4,154.96M840.04,132.03l-1.24,1.54l0.1,2.41l1.15-0.1l1.91-3.37L840.04,132.03L840.04,132.03M837.75,137.91v4.24l1.34,0.48l0.96-1.54v-3.27L837.75,137.91L837.75,137.91M798.64,122.59l-0.09,6.17l7.74,11.95l2.77,10.4l4.88,9.25l1.91,0.67l1.63-1.35l0.76-2.22l-6.98-7.61l0.19-3.95l1.53-0.67l0.38-2.31l-13.67-19.36L798.64,122.59L798.64,122.59M852.57,103.42l-1.91,0.19l1.15,1.64l2.39,1.64l0.67-0.77L852.57,103.42L852.57,103.42M856.29,104.58l0.29,1.64l2.96,0.87l0.29-1.16L856.29,104.58L856.29,104.58M547.82,38.79l1.72,0.69l-1.21,2.08v2.95l-2.58,1.56H543l-1.55-1.91l0.17-2.08l1.21-1.56h2.41L547.82,38.79L547.82,38.79M554.36,36.88v2.08l1.72,1.39l2.41-0.17l2.07-1.91v-1.39h-1.89l-1.55,0.52l-1.21-1.39L554.36,36.88L554.36,36.88M564.18,37.06l1.21,2.6l2.41,0.17l1.72-0.69l-0.86-2.43l-2.24-0.52L564.18,37.06L564.18,37.06M573.99,33.59l-1.89-0.35l-1.72,1.74l0.86,1.56l0.52,2.43l2.24-1.73l0.52-1.91L573.99,33.59L573.99,33.59M584.49,51.98l-0.52,2.43l-3.96,3.47l-8.44,1.91l-6.89,11.45l-1.21,3.3l6.89,1.74l1.03-4.16l2.07-6.42l5.34-2.78l4.48-3.47l3.27-1.39h1.72v-4.68L584.49,51.98L584.49,51.98M562.28,77.31l4.65,0.52l1.55,5.38l3.96,4.16l-1.38,2.78h-2.41l-2.24-2.6l-4.99-0.17l-2.07-2.78v-1.91l3.1-0.87L562.28,77.31L562.28,77.31M634.95,18.15l-2.24-1.39h-2.58l-0.52,1.56l-2.75,1.56l-2.07,0.69l-0.34,2.08l4.82,0.35L634.95,18.15L634.95,18.15M640.28,18.67l-1.21,2.6l-2.41-0.17l-3.79,2.78l-1.03,3.47h2.41l1.38-2.26l3.27,2.43l3.1-1.39l2.24-1.91l-0.86-2.95l-1.21-2.08L640.28,18.67L640.28,18.67M645.28,20.58l1.21,4.86l1.89,4.51l2.07-3.64l3.96-0.87v-2.6l-2.58-1.91L645.28,20.58L645.28,20.58M739.76,12.8l2.69,2.26l1.91-0.79l0.56-3.17L741,8.39l-2.58,1.7l-6.28,0.57v2.83l-6.62,0.11v4.63l7.74,5.76l2.02-1.47l-0.45-4.07l4.94-1.24l-1.01-1.92l-1.79-1.81L739.76,12.8L739.76,12.8M746.94,10.09l1.79,3.39l6.96-0.79l1.91-2.49l-0.45-2.15l-1.91-0.79l-1.79,1.36l-5.16,1.13L746.94,10.09L746.94,10.09M746.49,23.31l-3.48-0.9L741,24.56l-0.9,2.94l4.71-0.45l3.59-1.81L746.49,23.31L746.49,23.31M836.68,3.76l-2.92-0.9L830.4,4.1l-1.68,2.49l2.13,2.83l5.61-2.49l1.12-1.24L836.68,3.76L836.68,3.76M817.97,72.93l1.76,6.08l3.52,1.01l3.52-5.57l-2.01-3.8l0.75-3.29h5.28l-1.26,2.53l0.5,9.12l-7.54,18.74l0.75,4.05l-0.25,6.84l14.07,20.51l2.76,0.76l0.25-16.71l2.76-2.53l-3.02-6.58l2.51-2.79l-5.53-7.34l-3.02,0.25l-1-12.15l7.79-2.03l0.5-3.55l4.02-1.01l2.26,2.03l2.76-11.14l4.77-8.1l3.77-2.03l3.27,0.25v-3.8l-5.28-1.01l-7.29-6.08l3.52-4.05l-3.02-6.84l2.51-2.53l3.02,4.05l7.54,2.79l8.29,0.76l1.01-3.54l-4.27-4.3l4.77-6.58l-10.81-3.8l-2.76,5.57l-3.52-4.56l-19.85-6.84l-18.85,3.29l-2.76,1.52v1.52l4.02,2.03l-0.5,4.81l-7.29-3.04l-16.08,6.33l-2.76-5.82h-11.06l-5.03,5.32l-17.84-4.05l-16.33,3.29l-2.01,5.06l2.51,0.76l-0.25,3.8l-15.83,1.77l1.01,5.06l-14.58-2.53l3.52-6.58l-14.83-0.76l1.26,6.84l-4.77,2.28l-4.02-3.8l-16.33,2.79l-6.28,5.82l-0.25,3.54l-4.02,0.25l-0.5-4.05l12.82-11.14v-7.6l-8.29-2.28l-10.81,3.54l-4.52-4.56h-2.01l-2.51,5.06l2.01,2.28l-14.33,7.85l-12.31,9.37l-7.54,10.38v4.3l8.04,3.29l-4.02,3.04l-8.54-3.04l-3.52,3.04l-5.28-6.08l-1.01,2.28l5.78,18.23l1.51,0.51l4.02-2.03l2.01,1.52v3.29l-3.77-1.52l-2.26,1.77l1.51,3.29l-1.26,8.61l-7.79,0.76l-0.5-2.79l4.52-2.79l1.01-7.6l-5.03-6.58l-1.76-11.39l-8.04-1.27l-0.75,4.05l1.51,2.03l-3.27,2.79l1.26,7.6l4.77,2.03l1.01,5.57l-4.78-3.04l-12.31-2.28l-1.51,4.05l-9.8,3.54l-1.51-2.53l-12.82,7.09l-0.25,4.81l-5.03,0.76l1.51-3.54v-3.54l-5.03-1.77l-3.27,1.27l2.76,5.32l2.01,3.54v2.79l-3.77-0.76l-0.75-0.76l-3.77,4.05l2.01,3.54l-8.54-0.25l2.76,3.55l-0.75,1.52h-4.52l-3.27-2.28l-0.75-6.33l-5.28-2.03v-2.53l11.06,2.28l6.03,0.51l2.51-3.8l-2.26-4.05l-16.08-6.33l-5.55,1.38l-1.9,1.63l0.59,3.75l2.36,0.41l-0.55,5.9l7.28,17.1l-5.26,8.34l-0.36,1.88l2.67,1.88l-2.41,1.59l-1.6,0.03l0.3,7.35l2.21,3.13l0.03,3.04l2.83,0.26l4.33,1.65l4.58,6.3l0.05,1.66l-1.49,2.55l3.42-0.19l3.33,0.96l4.5,6.37l11.08,1.01l-0.48,7.58l-3.82,3.27l0.79,1.28l-3.77,4.05l-1,3.8l2.26,3.29l7.29,2.53l3.02-1.77l19.35,7.34l0.75-2.03l-4.02-3.8v-4.81l-2.51-0.76l0.5-4.05l4.02-4.81l-7.21-5.4l0.5-7.51l7.71-5.07l9.05,0.51l1.51,2.79l9.3,0.51l6.79-3.8l-3.52-3.8l0.75-7.09l17.59-8.61l13.53,6.1l4.52-4.05l13.32,12.66l10.05-1.01l3.52,3.54l9.55,1.01l6.28-8.61l8.04,3.55l4.27,0.76l4.27-3.8l-3.77-2.53l3.27-5.06l9.3,3.04l2.01,4.05l4.02,0.25l2.51-1.77l6.79-0.25l0.75,1.77l7.79,0.51l5.28-5.57l10.81,1.27l3.27-1.27l1-6.08l-3.27-7.34l3.27-2.79h10.3l9.8,11.65l12.56,7.09h3.77l0.5-3.04l4.52-2.79l0.5,16.46l-4.02,0.25v4.05l2.26,2.79l-0.42,3.62l1.67,0.69l1.01-2.53l1.51,0.51l1,1.01l4.52-1.01l4.52-13.17l0.5-16.46l-5.78-13.17l-7.29-8.86l-3.52,0.51v2.79l-8.54-3.29l3.27-7.09l2.76-18.74l11.56-3.54l5.53-3.54h6.03L805.86,96l1.51,2.53l5.28-5.57l3.02,0.25l-0.5-3.29l-4.78-1.01l3.27-11.9L817.97,72.93L817.97,72.93z","name":"Russian Federation"},"us":{"path":"M69.17,53.35l3.46,6.47l2.22-0.5v-2.24L69.17,53.35L69.17,53.35M49.66,110.26l-0.17,3.01l2.16-0.5v-1.34L49.66,110.26L49.66,110.26M46.34,111.6l-4.32,2.18l0.67,2.34l1.66-1.34l3.32-1.51L46.34,111.6L46.34,111.6M28.39,114.44l-2.99-0.67l-0.5,1.34l0.33,2.51L28.39,114.44L28.39,114.44M22.07,114.28l-2.83-1.17l-1,1.84l1.83,1.84L22.07,114.28L22.07,114.28M12.27,111.6l-1.33-1.84l-1.33,0.5v2.51l1.5,1L12.27,111.6L12.27,111.6M1.47,99.71l1.66,1.17l-0.5,1.34H1.47V99.71L1.47,99.71M10,248.7l-0.14,2.33l2.04,1.37l1.22-1.09L10,248.7L10,248.7M15.29,252.13l-1.9,1.37l1.63,2.05l1.9-1.64L15.29,252.13L15.29,252.13M19.1,255.41l-1.63,2.19l0.54,1.37l2.31-1.09L19.1,255.41L19.1,255.41M21.81,259.65l-0.95,5.47l0.95,2.05l3.12-0.96l1.63-2.74l-3.4-3.15L21.81,259.65L21.81,259.65M271.05,281.06l-2.64-0.89l-2.12,1.33l1.06,1.24l3.61,0.53L271.05,281.06L271.05,281.06M93.11,44.89l-8.39,1.99l1.73,9.45l9.13,2.49l0.49,1.99L82.5,65.04l-7.65,12.68l2.71,13.43L82,94.13l3.46-3.23l0.99,1.99l-4.2,4.97l-16.29,7.46l-10.37,2.49l-0.25,3.73l23.94-6.96l9.87-2.74l9.13-11.19l10.12-6.71l-5.18,8.7l5.68,0.75l9.63-4.23l1.73,6.96l6.66,1.49l6.91,6.71l0.49,4.97l-0.99,1.24l1.23,4.72h1.73l0.25-7.96h1.97l0.49,19.64l4.94-4.23l-3.46-20.39h-5.18l-5.68-7.21l27.89-47.25l-27.64-21.63l-30.85,5.97l-1.23,9.45l6.66,3.98l-2.47,6.47L93.11,44.89L93.11,44.89M148.76,158.34l-1,4.02l-3.49-2.26h-1.74l-1,4.27l-12.21,27.36l3.24,23.84l3.99,2.01l0.75,6.53h8.22l7.97,6.02l15.69,1.51l1.74,8.03l2.49,1.76l3.49-3.51l2.74,1.25l2.49,11.54l4.23,2.76l3.49-6.53l10.71-7.78l6.97,3.26l5.98,0.5l0.25-3.76l12.45,0.25l2.49,2.76l0.5,6.27l-1.49,3.51l1.74,6.02h3.74l3.74-5.77l-1.49-2.76l-1.49-6.02l2.24-6.78l10.21-8.78l7.72-2.26l-1-7.28l10.71-11.55l10.71-1.76L272.8,199l10.46-6.02v-8.03l-1-0.5l-3.74,1.25l-0.5,4.92l-12.43,0.15l-9.74,6.47l-15.29,5l-2.44-2.99l6.94-10.5l-3.43-3.27l-2.33-4.44l-4.83-3.88l-5.25-0.44l-9.92-6.77L148.76,158.34L148.76,158.34z","name":"United States of America"},"mu":{"path":"M613.01,398.99l-1.52,1.99l0.3,2.15l3.2-2.61L613.01,398.99L613.01,398.99z","name":"Mauritius"},"re":{"path":"M607.38,402.37l-2.28,0.15l-0.15,1.99l1.52,0.31l2.28-1.07L607.38,402.37L607.38,402.37z","name":"Reunion"},"mg":{"path":"M592.3,372.92l-2.13,5.06l-3.65,6.44l-6.39,0.46l-2.74,3.22l0.46,9.82l-3.96,4.6l0.46,7.82l3.35,3.83l3.96-0.46l3.96-2.92l-0.91-4.6l9.13-15.8l-1.83-1.99l1.83-3.83l1.98,0.61l0.61-1.53l-1.83-7.82l-1.07-3.22L592.3,372.92L592.3,372.92z","name":"Madagascar"},"km":{"path":"M577.69,371.23l0.46,1.53l1.98,0.31l0.76-1.99L577.69,371.23L577.69,371.23M580.58,374.3l0.76,1.69h1.22l0.61-2.15L580.58,374.3L580.58,374.3z","name":"Comoros"},"sc":{"path":"M602.35,358.34l-0.61,1.23l1.67,1.38l1.22-1.38L602.35,358.34L602.35,358.34M610.88,349.14l-1.83,1.23l1.37,2.15h1.83L610.88,349.14L610.88,349.14M611.64,354.51l-1.22,1.38l0.91,1.38l1.67,0.31l0.15-2.92L611.64,354.51L611.64,354.51z","name":"Seychelles"},"mv":{"path":"M656.4,320.76l0.3,2.61l1.67,0.61l0.3-2.3L656.4,320.76L656.4,320.76M658.53,326.28l-0.15,3.22l1.22,0.61l1.07-2.15L658.53,326.28L658.53,326.28M658.84,332.57l-1.07,1.07l1.22,1.07l1.52-1.07L658.84,332.57L658.84,332.57z","name":"Maldives"},"pt":{"path":"M372.64,217.02l-1.36,1.37l2.44,1.37l0.27-1.91L372.64,217.02L372.64,217.02M379.97,216.2l-1.63,1.09l1.36,1.09l2.17-0.55L379.97,216.2L379.97,216.2M381.05,220.03l-0.81,2.19l1.08,1.37l1.36-1.09L381.05,220.03L381.05,220.03M387.56,224.4l-0.54,1.37l0.81,0.82l2.17-1.37L387.56,224.4L387.56,224.4M408.18,236.42l-1.08,1.37l1.08,1.37l1.63-0.82L408.18,236.42L408.18,236.42M430.93,211.24l-0.62,8.65l-1.77,1.6l0.18,0.98l1.24,2.05l-0.8,2.5l1.33,0.45l3.1-0.36l-0.18-2.5l2.03-11.59l-0.44-1.6L430.93,211.24L430.93,211.24z","name":"Portugal"},"es":{"path":"M415.62,253.73l-1.75,1.01l0.81,0.82L415.62,253.73L415.62,253.73M409.54,253.92l-2.17,0.55l1.08,1.64h1.63L409.54,253.92L409.54,253.92M404.38,252.28l-1.36,1.37l1.9,1.64l1.08-2.46L404.38,252.28L404.38,252.28M448.36,205h-12.74l-2.57-1.16l-1.24,0.09l-1.5,3.12l0.53,3.21l4.87,0.45l0.62,2.05l-2.12,11.95l0.09,2.14l3.45,1.87l3.98,0.27l7.96-1.96l3.89-4.9l0.09-4.99l6.9-6.24l0.35-2.76l-6.28-0.09L448.36,205L448.36,205M461.1,217.21l-1.59,0.54l0.35,1.43h2.3l0.97-1.07L461.1,217.21L461.1,217.21z","name":"Spain"},"cv":{"path":"M387.56,290.54l-1.9,1.09l1.36,1.09l1.63-0.82L387.56,290.54L387.56,290.54M392.23,292.74l-1.24,1.1l0.88,1.63l2.12-0.95L392.23,292.74L392.23,292.74M389.52,295.83l-1.59,0.95l1.71,2.29l1.35-0.71L389.52,295.83L389.52,295.83z","name":"Cape Verde"},"pf":{"path":"M27.25,402.68l-1.9-0.14l-0.14,1.78l1.49,0.96l1.77-1.09L27.25,402.68L27.25,402.68M33.77,404.6l-2.72,1.78l2.04,2.46l1.77-0.41l0.95-1.23L33.77,404.6L33.77,404.6z","name":"French Polynesia"},"kn":{"path":"M276.6,283.37l-1.5,0.62l0.53,1.33l1.76-1.15l-0.35-0.36L276.6,283.37L276.6,283.37z","name":"Saint Kitts and Nevis"},"ag":{"path":"M279.07,284.88l-0.88,1.87l1.06,1.42l1.32-1.15L279.07,284.88L279.07,284.88z","name":"Antigua and Barbuda"},"dm":{"path":"M282.07,290.03l-1.06,0.98l0.79,1.6l1.5-0.44L282.07,290.03L282.07,290.03z","name":"Dominica"},"lc":{"path":"M281.98,294.03l-0.71,1.51l1.15,1.24l1.5-0.8L281.98,294.03L281.98,294.03z","name":"Saint Lucia"},"bb":{"path":"M282.07,297.85l-1.23,0.89l0.97,1.78l1.59-0.89L282.07,297.85L282.07,297.85z","name":"Barbados"},"gd":{"path":"M280.57,301.31l-1.15,1.15l0.44,0.71h1.41l0.44-1.16L280.57,301.31L280.57,301.31z","name":"Grenada"},"tt":{"path":"M282.24,304.78l-1.06,0.98l-1.15,0.18v1.42l2.12,1.95l0.88-1.42l0.53-1.6l-0.18-1.33L282.24,304.78L282.24,304.78z","name":"Trinidad and Tobago"},"do":{"path":"M263.11,280.44l-5.29-3.46l-2.5-0.85l-0.84,6l0.88,1.69l1.15-1.33l3.35-0.89l2.91,0.62L263.11,280.44L263.11,280.44z","name":"Dominican Republic"},"ht":{"path":"M250.86,275.38l3.44,0.36l-0.41,4.22l-0.34,2.22l-4.01-0.22l-0.71,1.07l-1.23-0.09l-0.44-2.31l4.23-0.35l-0.26-2.4l-1.94-0.8L250.86,275.38L250.86,275.38z","name":"Haiti"},"fk":{"path":"M307.95,508.18l-2.63-0.29l-2.62,1.76l1.9,2.06L307.95,508.18L307.95,508.18M310.57,506.86l-0.87,2.79l-2.48,2.2l0.15,0.73l4.23-1.62l1.75-2.2L310.57,506.86L310.57,506.86z","name":"Falkland Islands"},"is":{"path":"M406.36,117.31l-1.96-1.11l-2.64,1.67l-2.27,2.1l0.06,1.17l2.94,0.37l-0.18,2.1l-1.04,1.05l0.25,0.68l2.94,0.19v3.4l4.23,0.74l2.51,1.42l2.82,0.12l4.84-2.41l3.74-4.94l0.06-3.34l-2.27-1.92l-1.9-1.61l-0.86,0.62l-1.29,1.67l-1.47-0.19l-1.47-1.61l-1.9,0.18l-2.76,2.29l-1.66,1.79l-0.92-0.8l-0.06-1.98l0.92-0.62L406.36,117.31L406.36,117.31z","name":"Iceland"},"no":{"path":"M488.26,53.96l-1.65-1.66l-3.66,1.78h-6.72L475.17,58l3.77,3.33l1.65-0.24l2.36-4.04l2,1.43l-1.42,2.85l-0.71,4.16l1.65,2.61l3.54-5.94l4.6-5.59l-1.77-1.54L488.26,53.96L488.26,53.96M490.26,46.83l-2.95,2.73l1.77,2.73h3.18l1.3,1.78l3.89,2.02l4.48-2.61l3.07-2.61l-1.06-2.14l-3.07-1.78l-2.24,2.02l-1.53-1.9l-1.18,0.12l-1.53,3.33l-2.24-2.26l-0.24-1.54L490.26,46.83L490.26,46.83M496.98,59.07l-2.36,2.14l-2,1.54l0.94,1.66l1.89,0.59l3.07-1.43l1.42-1.78l-1.3-2.14L496.98,59.07L496.98,59.07M515.46,102.14l2.02-1.48L517.3,99l-1.28-0.74l0.18-2.03h1.1v-1.11l-4.77-1.29l-7.15,0.74l-0.73,3.14L503,97.16l-1.1-1.85l-3.49,0.18L498.04,99l-1.65,0.74l-0.92-1.85l-7.34,5.91l1.47,1.66l-2.75,1.29l-6.24,12.38l-2.2,1.48l0.18,1.11l2.2,1.11l-0.55,2.4l-3.67-0.19l-1.1-1.29l-2.38,2.77l-1.47,1.11l-0.37,2.59l-1.28,0.74l-3.3,0.74l-1.65,5.18l1.1,8.5l1.28,3.88l1.47,1.48l3.3-0.18l4.77-4.62l1.83-3.14l0.55,4.62l3.12-5.54l0.18-15.53l2.54-1.6l0.76-8.57l7.7-11.09l3.67-1.29l1.65-2.03l5.5,1.29l2.75,1.66l0.92-4.62l4.59-2.77L515.46,102.14L515.46,102.14z","name":"Norway"},"lk":{"path":"M680.54,308.05l0.25,2.72l0.25,1.98l-1.47,0.25l0.74,4.45l2.21,1.24l3.43-1.98l-0.98-4.69l0.25-1.73l-3.19-2.96L680.54,308.05L680.54,308.05z","name":"Sri Lanka"},"cu":{"path":"M220.85,266.92v1.27l5.32,0.1l2.51-1.46l0.39,1.07l5.22,1.27l4.64,4.19l-1.06,1.46l0.19,1.66l3.87,0.97l3.87-1.75l1.74-1.75l-2.51-1.27l-12.95-7.6l-4.54-0.49L220.85,266.92L220.85,266.92z","name":"Cuba"},"bs":{"path":"M239.61,259.13l-1.26-0.39l-0.1,2.43l1.55,1.56l1.06-1.56L239.61,259.13L239.61,259.13M242.12,262.93l-1.74,0.97l1.64,2.34l0.87-1.17L242.12,262.93L242.12,262.93M247.73,264.68l-1.84-0.1l0.19,1.17l1.35,1.95l1.16-1.27L247.73,264.68L247.73,264.68M246.86,262.35l-3-1.27l-0.58-3.02l1.16-0.49l1.16,2.34l1.16,0.88L246.86,262.35L246.86,262.35M243.96,256.21l-1.55-0.39l-0.29-1.95l-1.64-0.58l1.06-1.07l1.93,0.68l1.45,0.88L243.96,256.21L243.96,256.21z","name":"Bahamas"},"jm":{"path":"M238.93,279.59l-3.48,0.88v0.97l2.03,1.17h2.13l1.35-1.56L238.93,279.59L238.93,279.59z","name":"Jamaica"},"ec":{"path":"M230.2,335.85l-4.73,2.94l-0.34,4.36l-0.95,1.43l2.98,2.86l-1.29,1.41l0.3,3.6l5.33,1.27l8.07-9.55l-0.02-3.33l-3.87-0.25L230.2,335.85L230.2,335.85z","name":"Ecuador"},"ca":{"path":"M203.73,35.89l0.22,4.02l-7.98,8.27l2,6.7l5.76-1.56l3.33-4.92l8.42-3.13l6.87-0.45l-5.32-5.81l-2.66,2.01l-2-0.67l-1.11-2.46l-2.44-2.46L203.73,35.89L203.73,35.89M214.15,24.05l-1.77,3.13l8.65,3.13l3.1-4.69l1.33,3.13h2.22l4.21-4.69l-5.1-1.34l-2-1.56l-2.66,2.68L214.15,24.05L214.15,24.05M229.23,30.31l-6.87,2.9v2.23l8.87,3.35l-2,2.23l1.33,2.9l5.54-2.46h4.66l2.22,3.57l3.77-3.8l-0.89-3.58l-3.1,1.12l-0.44-4.47l1.55-2.68h-1.55l-2.44,1.56l-1.11,0.89l0.67,3.13l-1.77,1.34l-2.66-0.22l-0.67-4.02L229.23,30.31L229.23,30.31M238.32,23.38l-0.67,2.23l4.21,2.01l3.1-1.79l-0.22-1.34L238.32,23.38L238.32,23.38M241.64,19.58l-3.1,1.12l0.22,1.56l6.87-0.45l-0.22-1.56L241.64,19.58L241.64,19.58M256.5,23.38l-0.44,1.56l-1.11,1.56v2.23l4.21-0.67l4.43,3.8h1.55v-3.8l-4.43-4.92L256.5,23.38L256.5,23.38M267.81,27.85l1.77,2.01l-1.55,2.68l1.11,2.9l4.88-2.68v-2.01l-2.88-3.35L267.81,27.85L267.81,27.85M274.24,22.71l0.22,3.57h5.99l1.55,1.34l-0.22,1.56l-5.32,0.67l3.77,5.14l5.1,0.89l7.09-3.13l-10.2-15.42l-3.1,2.01l0.22,2.68l-3.55-1.34L274.24,22.71L274.24,22.71M222.58,47.96l-8.42,2.23l-4.88,4.25l0.44,4.69l8.87,2.68l-2,4.47l-6.43-4.02l-1.77,3.35l4.21,2.9l-0.22,4.69l6.43,1.79l7.76-0.45l1.33-2.46l5.76,6.48l3.99-1.34l0.67-4.47l2.88,2.01l0.44-4.47l-3.55-2.23l0.22-14.07l-3.1-2.46L231.89,56L222.58,47.96L222.58,47.96M249.63,57.79l-2.88-1.34l-1.55,2.01l3.1,4.92l0.22,4.69l6.65-4.02v-5.81l2.44-2.46l-2.44-1.79h-3.99L249.63,57.79L249.63,57.79M263.82,55.78l-4.66,3.8l1.11,4.69h2.88l1.33-2.46l2,2.01l2-0.22l5.32-4.47L263.82,55.78L263.82,55.78M263.37,48.4l-1.11,2.23l4.88,1.79l1.33-2.01L263.37,48.4L263.37,48.4M260.49,39.91l-4.88,0.67l-2.88,2.68l5.32,0.22l-1.55,4.02l1.11,1.79l1.55-0.22l3.77-6.03L260.49,39.91L260.49,39.91M268.92,38.35l-2.66,0.89l0.44,3.57l4.43,2.9l0.22,2.23l-1.33,1.34l0.67,4.47l17.07,5.58l4.66,1.56l4.66-4.02l-5.54-4.47l-5.1,1.34l-7.09-0.67l-2.66-2.68l-0.67-7.37l-4.43-2.23L268.92,38.35L268.92,38.35M282.88,61.59L278,61.14l-5.76,2.23l-3.1,4.24l0.89,11.62l9.53,0.45l9.09,4.47l6.43,7.37l4.88-0.22l-1.33,6.92l-4.43,7.37l-4.88,2.23l-3.55-0.67l-1.77-1.56l-2.66,3.57l1.11,3.57l3.77,0.22l4.66-2.23l3.99,10.28l9.98,6.48l6.87-8.71l-5.76-9.38l3.33-3.8l4.66,7.82l8.42-7.37l-1.55-3.35l-5.76,1.79l-3.99-10.95l3.77-6.25l-7.54-8.04l-4.21,2.9l-3.99-8.71l-8.42,1.12l-2.22-10.5l-6.87,4.69l-0.67,5.81h-3.77l0.44-5.14L282.88,61.59L282.88,61.59M292.86,65.61l-1.77,1.79l1.55,2.46l7.32,0.89l-4.66-4.92L292.86,65.61L292.86,65.61M285.77,40.36v2.01l-4.88,1.12l1.33,2.23l5.54,2.23l6.21,0.67l4.43,3.13l4.43-2.46l-3.1-3.13h3.99l2.44-2.68l5.99-0.89v-1.34l-3.33-2.23l0.44-2.46l9.31,1.56l13.75-5.36l-5.1-1.56l1.33-1.79h10.64l1.77-1.79l-21.51-7.6l-5.1-1.79l-5.54,4.02l-6.21-5.14l-3.33-0.22l-0.67,4.25l-4.21-3.8l-4.88,1.56l0.89,2.46l7.32,1.56l-0.44,3.57l3.99,2.46l9.76-2.46l0.22,3.35l-7.98,3.8l-4.88-3.8l-4.43,0.45l4.43,6.26l-2.22,1.12l-3.33-2.9l-2.44,1.56l2.22,4.24h3.77l-0.89,4.02l-3.1-0.45l-3.99-4.25L285.77,40.36L285.77,40.36M266.01,101.85l-4.23,5.32l-0.26,5.86l3.7-2.13h4.49l3.17,2.93l2.91-2.4L266.01,101.85L266.01,101.85M317.52,171.05l-10.57,10.12l1.06,2.4l12.94,4.79l1.85-3.19l-1.06-5.32l-4.23,0.53l-2.38-2.66l3.96-3.99L317.52,171.05L317.52,171.05M158.22,48.66l1.99,3.01l1,4.02l4.98,1.25l3.49-3.76l2.99,1.51l8.47,0.75l5.98-2.51l1,8.28h3.49V57.7l3.49,0.25l8.72,10.29l5.73,3.51l-2.99,4.77l1.25,1.25L219,80.03l0.25,5.02l2.99,0.5l0.75-7.53l4.73-1.25l3.49,5.27l7.47,3.51l3.74,0.75l2.49-3.01l0.25-4.77l4.48-2.76l1.49,4.02l-3.99,7.03l0.5,3.51l2.24-3.51l4.48-4.02l0.25-5.27l-2.49-4.02l0.75-3.26l5.98-3.01l2.74,2.01l0.5,17.57l4.23-3.76l2.49,1.51l-3.49,6.02l4.48,1l6.48-10.04l5.48,5.77l-2.24,10.29l-5.48,3.01l-5.23-2.51l-9.46,2.01l1,3.26l-2.49,4.02l-7.72,1.76l-8.72,6.78l-7.72,10.29l-1,3.26l5.23,2.01l1.99,5.02l7.22,7.28l11.46,5.02l-2.49,11.54l-0.25,3.26l2.99,2.01l3.99-5.27l0.5-10.04l6.23-0.25l2.99-5.77l0.5-8.78l7.97-15.56l9.96,3.51l5.23,7.28l-2.24,7.28l3.99,2.26l9.71-6.53l2.74,17.82l8.97,10.79l0.25,5.52l-9.96,2.51l-4.73,5.02l-9.96-2.26l-4.98-0.25l-8.72,6.78l5.23-1.25l6.48-1.25l1.25,1.51l-1.74,5.52l0.25,5.02l2.99,2.01l2.99-0.75l1.5-2.26h1.99l-3.24,6.02l-6.23,0.25l-2.74,4.02h-3.49l-1-3.01l4.98-5.02l-5.98,2.01l-0.27-8.53l-1.72-1l-5.23,2.26l-0.5,4.27h-11.96l-10.21,7.03l-13.7,4.52l-1.49-2.01l6.9-10.3l-3.92-3.77l-2.49-4.78l-5.07-3.87l-5.44-0.45l-9.75-6.83l-70.71-11.62l-1.17-4.79l-6.48-6.02v-5.02l1-4.52l-0.5-2.51l-2.49-2.51l-0.5-4.02l6.48-4.52l-3.99-21.58l-5.48-0.25l-4.98-6.53L158.22,48.66L158.22,48.66M133.83,128.41l-1.7,3.26l0.59,2.31l1.11,0.69l-0.26,0.94l-1.19,0.34l0.34,3.43l1.28,1.29l1.02-1.11l-1.28-3.34l0.76-2.66l1.87-2.49l-1.36-2.31L133.83,128.41L133.83,128.41M139.45,147.95l-1.53,0.6l2.81,3.26l0.68,3.86l2.81,3l2.38-0.43v-3.94l-2.89-1.8L139.45,147.95L139.45,147.95z","name":"Canada"},"gt":{"path":"M194.88,291.52l5.93,4.34l5.98-7.43l-1.02-1.54l-2.04-0.07v-4.35l-1.53-0.93l-4.63,1.38l1.77,4.08L194.88,291.52L194.88,291.52z","name":"Guatemala"},"hn":{"path":"M207.55,288.78l9.24-0.35l2.74,3.26l-1.71-0.39l-3.29,0.14l-4.3,4.04l-1.84,4.09l-1.21-0.64l-0.01-4.48l-2.66-1.78L207.55,288.78L207.55,288.78z","name":"Honduras"},"sv":{"path":"M201.65,296.27l4.7,2.34l-0.07-3.71l-2.41-1.47L201.65,296.27L201.65,296.27z","name":"El Salvador"},"ni":{"path":"M217.74,292.11l2.19,0.44l0.07,4.49l-2.55,7.28l-6.87-0.68l-1.53-3.51l2.04-4.26l3.87-3.6L217.74,292.11L217.74,292.11z","name":"Nicaragua"},"cr":{"path":"M217.38,304.98l1.39,2.72l1.13,1.5l-1.52,4.51l-2.9-2.04l-4.74-4.34v-2.87L217.38,304.98L217.38,304.98z","name":"Costa Rica"},"pa":{"path":"M220.59,309.61l-1.46,4.56l4.82,1.25l2.99,0.59l0.51-3.53l3.21-1.62l2.85,1.47l1.12,1.79l1.36-0.16l1.07-3.25l-3.56-1.47l-2.7-1.47l-2.7,1.84l-3.21,1.62l-3.28-1.32L220.59,309.61L220.59,309.61z","name":"Panama"},"co":{"path":"M253.73,299.78l-2.06-0.21l-13.62,11.23l-1.44,3.95l-1.86,0.21l0.83,8.73l-4.75,11.65l5.16,4.37l6.61,0.42l4.54,6.66l6.6,0.21l-0.21,4.99H256l2.68-9.15l-2.48-3.12l0.62-5.82l5.16-0.42l-0.62-13.52l-11.56-3.74l-2.68-7.28L253.73,299.78L253.73,299.78z","name":"Colombia"},"ve":{"path":"M250.46,305.92l0.44,2.59l3.25,1.03l0.74-4.77l3.43-3.55l3.43,4.02l7.89,2.15l6.68-1.4l4.55,5.61l3.43,2.15l-3.76,5.73l1.26,4.34l-2.15,2.66l-2.23,1.87l-4.83-2.43l-1.11,1.12v3.46l3.53,1.68l-2.6,2.81l-2.6,2.81l-3.43-0.28l-3.45-3.79l-0.73-14.26l-11.78-4.02l-2.14-6.27L250.46,305.92L250.46,305.92z","name":"Venezuela"},"gy":{"path":"M285.05,314.13l7.22,6.54l-2.87,3.32l-0.23,1.97l3.77,3.89l-0.09,3.74l-6.56,2.5l-3.93-5.31l0.84-6.38l-1.68-4.75L285.05,314.13L285.05,314.13z","name":"Guyana"},"sr":{"path":"M293.13,321.14l2.04,1.87l3.16-1.96l2.88,0.09l-0.37,1.12l-1.21,2.52l-0.19,6.27l-5.75,2.34l0.28-4.02l-3.71-3.46l0.19-1.78L293.13,321.14L293.13,321.14z","name":"Suriname"},"gf":{"path":"M302.13,321.8l5.85,3.65l-3.06,6.08l-1.11,1.4l-3.25-1.87l0.09-6.55L302.13,321.8L302.13,321.8z","name":"French Guiana"},"pe":{"path":"M225.03,349.52l-1.94,1.96l0.13,3.13l16.94,30.88l17.59,11.34l2.72-4.56l0.65-10.03l-1.42-6.25l-4.79-8.08l-2.85,0.91l-1.29,1.43l-5.69-6.52l1.42-7.69l6.6-4.3l-0.52-4.04l-6.72-0.26l-3.49-5.86l-1.94-0.65l0.13,3.52l-8.66,10.29l-6.47-1.56L225.03,349.52L225.03,349.52z","name":"Peru"},"bo":{"path":"M258.71,372.79l8.23-3.59l2.72,0.26l1.81,7.56l12.54,4.17l2.07,6.39l5.17,0.65l2.2,5.47l-1.55,4.95l-8.41,0.65l-3.1,7.95l-6.6-0.13l-2.07-0.39l-3.81,3.7l-1.88-0.18l-6.47-14.99l1.79-2.68l0.63-10.6l-1.6-6.31L258.71,372.79L258.71,372.79z","name":"Bolivia"},"py":{"path":"M291.76,399.51l2.2,2.4l-0.26,5.08l6.34-0.39l4.79,6.13l-0.39,5.47l-3.1,4.69l-6.34,0.26l-0.26-2.61l1.81-4.3l-6.21-3.91h-5.17l-3.88-4.17l2.82-8.06L291.76,399.51L291.76,399.51z","name":"Paraguay"},"uy":{"path":"M300.36,431.93l-2.05,2.19l0.85,11.78l6.44,1.87l8.19-8.21L300.36,431.93L300.36,431.93z","name":"Uruguay"},"ar":{"path":"M305.47,418.2l1.94,1.82l-7.37,10.95l-2.59,2.87l0.9,12.51l5.69,6.91l-4.78,8.34l-3.62,1.56h-4.14l1.16,6.51l-6.47,2.22l1.55,5.47l-3.88,12.38l4.79,3.91l-2.59,6.38l-4.4,6.91l2.33,4.82l-5.69,0.91l-4.66-5.73l-0.78-17.85l-7.24-30.32l2.19-10.6l-4.66-13.55l3.1-17.59l2.85-3.39l-0.7-2.57l3.66-3.34l8.16,0.56l4.56,4.87l5.27,0.09l5.4,3.3l-1.59,3.72l0.38,3.76l7.65-0.36L305.47,418.2L305.47,418.2M288.92,518.79l0.26,5.73l4.4-0.39l3.75-2.48l-6.34-1.3L288.92,518.79L288.92,518.79z","name":"Argentina"},"cl":{"path":"M285.04,514.1l-4.27,9.38l7.37,0.78l0.13-6.25L285.04,514.1L285.04,514.1M283.59,512.63l-3.21,3.55l-0.39,4.17l-6.21-3.52l-6.6-9.51l-1.94-3.39l2.72-3.52l-0.26-4.43l-3.1-1.3l-2.46-1.82l0.52-2.48l3.23-0.91l0.65-14.33l-5.04-2.87l-3.29-74.59l0.85-1.48l6.44,14.85l2.06,0.04l0.67,2.37l-2.74,3.32l-3.15,17.87l4.48,13.76l-2.07,10.42l7.3,30.64l0.77,17.92l5.23,6.05L283.59,512.63L283.59,512.63M262.28,475.14l-1.29,1.95l0.65,3.39l1.29,0.13l0.65-4.3L262.28,475.14L262.28,475.14z","name":"Chile"},"br":{"path":"M314.24,438.85l6.25-12.02l0.23-10.1l11.66-7.52h6.53l5.13-8.69l0.93-16.68l-2.1-4.46l12.36-11.28l0.47-12.45l-16.79-8.22l-20.28-6.34l-9.56-0.94l2.57-5.4l-0.7-8.22l-2.09-0.69l-3.09,6.14l-1.62,2.03l-4.16-1.84l-13.99,4.93l-4.66-5.87l0.75-6.13l-4.4,4.48l-4.86-2.62l-0.49,0.69l0.01,2.13l4.19,2.25l-6.29,6.63l-3.97-0.04l-4.02-4.09l-4.55,0.14l-0.56,4.86l2.61,3.17l-3.08,9.87l-3.6,0.28l-5.73,3.62l-1.4,7.11l4.97,5.32l0.91-1.03l3.49-0.94l2.98,5.02l8.53-3.66l3.31,0.19l2.28,8.07l12.17,3.86l2.1,6.44l5.18,0.62l2.47,6.15l-1.67,5.47l2.18,2.86l-0.32,4.26l5.84-0.55l5.35,6.76l-0.42,4.75l3.17,2.68l-7.6,11.51L314.24,438.85L314.24,438.85z","name":"Brazil"},"bz":{"path":"M204.56,282.4l-0.05,3.65h0.84l2.86-5.34h-1.94L204.56,282.4L204.56,282.4z","name":"Belize"},"mn":{"path":"M673.8,170.17l5.82-7.72l6.99,3.23l4.75,1.27l5.82-5.34l-3.95-2.91l2.6-3.67l7.76,2.74l2.69,4.41l4.86,0.13l2.54-1.89l5.23-0.21l1.14,1.94l8.69,0.44l5.5-5.61l7.61,0.8l-0.44,7.64l3.33,0.76l4.09-1.86l4.33,2.14l-0.1,1.08l-3.14,0.09l-3.27,6.86l-2.54,0.25l-9.88,12.91l-10.09,4.45l-6.31,0.49l-5.24-3.38l-6.7,3.58l-6.6-2.05l-1.87-4.79l-12.5-0.88l-6.4-10.85l-3.11-0.2L673.8,170.17L673.8,170.17z","name":"Mongolia"},"kp":{"path":"M778.28,194.27l1.84,0.77l0.56,6.44l3.65,0.21l3.44-4.03l-1.19-1.06l0.14-4.32l3.16-3.82l-1.61-2.9l1.05-1.2l0.58-3l-1.83-0.83l-1.56,0.79l-1.93,5.86l-3.12-0.27l-3.61,4.26L778.28,194.27L778.28,194.27z","name":"North Korea"},"kr":{"path":"M788.34,198.2l6.18,5.04l1.05,4.88l-0.21,2.62l-3.02,3.4l-2.6,0.14l-2.95-6.37l-1.12-3.04l1.19-0.92l-0.28-1.27l-1.47-0.66L788.34,198.2L788.34,198.2z","name":"South Korea"},"kz":{"path":"M576.69,188.62l4.1-1.75l4.58-0.16l0.32,7h-2.68l-2.05,3.34l2.68,4.45l3.95,2.23l0.36,2.55l1.45-0.48l1.34-1.59l2.21,0.48l1.11,2.23h2.84v-2.86l-1.74-5.09l-0.79-4.13l5.05-2.23l6.79,1.11l4.26,4.29l9.63-0.95l5.37,7.63l6.31,0.32l1.74-2.86l2.21-0.48l0.32-3.18l3.31-0.16l1.74,2.07l1.74-4.13l14.99,2.07l2.52-3.34l-4.26-5.25l5.68-12.4l4.58,0.32l3.16-7.63l-6.31-0.64l-3.63-3.5l-10,1.16l-12.88-12.45l-4.54,4.03l-13.77-6.25l-16.89,8.27l-0.47,5.88l3.95,4.61l-7.7,4.35l-9.99-0.22l-2.09-3.07l-7.83-0.43l-7.42,4.77l-0.16,6.52L576.69,188.62L576.69,188.62z","name":"Kazakhstan"},"tm":{"path":"M593.85,207.59l-0.62,2.63h-4.15v3.56l4.46,2.94l-1.38,4.03v1.86l1.85,0.31l2.46-3.25l5.54-1.24l11.84,4.49l0.15,3.25l6.61,0.62l7.38-7.75l-0.92-2.48l-4.92-1.08l-13.84-8.99l-0.62-3.25h-5.23l-2.31,4.34h-2.31L593.85,207.59L593.85,207.59z","name":"Turkmenistan"},"uz":{"path":"M628.92,219.06l3.08,0.16v-5.27l-2.92-1.7l4.92-6.2h2l2,2.33l5.23-2.01l-7.23-2.48l-0.28-1.5l-1.72,0.42l-1.69,2.94l-7.29-0.24l-5.35-7.57l-9.4,0.93l-4.48-4.44l-6.2-1.05l-4.5,1.83l2.61,8.68l0.03,2.92l1.9,0.04l2.33-4.44l6.2,0.08l0.92,3.41l13.29,8.82l5.14,1.18L628.92,219.06L628.92,219.06z","name":"Uzbekistan"},"tj":{"path":"M630.19,211.84l4.11-5.1h1.55l0.54,1.14l-1.9,1.38v1.14l1.25,0.9l6.01,0.36l1.96-0.84l0.89,0.18l0.6,1.92l3.57,0.36l1.79,3.78l-0.54,1.14l-0.71,0.06l-0.71-1.44l-1.55-0.12l-2.68,0.36l-0.18,2.52l-2.68-0.18l0.12-3.18l-1.96-1.92l-2.98,2.46l0.06,1.62l-2.62,0.9h-1.55l0.12-5.58L630.19,211.84L630.19,211.84z","name":"Tajikistan"},"kg":{"path":"M636.81,199.21l-0.31,2.53l0.25,1.56l8.7,2.92l-7.64,3.08l-0.87-0.72l-1.65,1.06l0.08,0.58l0.88,0.4l5.36,0.14l2.72-0.82l3.49-4.4l4.37,0.76l5.27-7.3l-14.1-1.92l-1.95,4.73l-2.46-2.64L636.81,199.21L636.81,199.21z","name":"Kyrgyz Republic"},"af":{"path":"M614.12,227.05l1.59,12.46l3.96,0.87l0.37,2.24l-2.84,2.37l5.29,4.27l10.28-3.7l0.82-4.38l6.47-4.04l2.48-9.36l1.85-1.99l-1.92-3.34l6.26-3.87l-0.8-1.12l-2.89,0.18l-0.26,2.66l-3.88-0.04l-0.07-3.55l-1.25-1.49l-2.1,1.91l0.06,1.75l-3.17,1.2l-5.85-0.37l-7.6,7.96L614.12,227.05L614.12,227.05z","name":"Afghanistan"},"pk":{"path":"M623.13,249.84l2.6,3.86l-0.25,1.99l-3.46,1.37l-0.25,3.24h3.96l1.36-1.12h7.54l6.8,5.98l0.87-2.87h5.07l0.12-3.61l-5.19-4.98l1.11-2.74l5.32-0.37l7.17-14.95l-3.96-3.11l-1.48-5.23l9.64-0.87l-5.69-8.1l-3.03-0.82l-1.24,1.5l-0.93,0.07l-5.69,3.61l1.86,3.12l-2.1,2.24l-2.6,9.59l-6.43,4.11l-0.87,4.49L623.13,249.84L623.13,249.84z","name":"Pakistan"},"in":{"path":"M670.98,313.01l4.58-2.24l2.72-9.84l-0.12-12.08l15.58-16.82v-3.99l3.21-1.25l-0.12-4.61l-3.46-6.73l1.98-3.61l4.33,3.99l5.56,0.25v2.24l-1.73,1.87l0.37,1l2.97,0.12l0.62,3.36h0.87l2.23-3.99l1.11-10.46l3.71-2.62l0.12-3.61l-1.48-2.87l-2.35-0.12l-9.2,6.08l0.58,3.91l-6.46-0.02l-2.28-2.79l-1.24,0.16l0.42,3.88l-13.97-1l-8.66-3.86l-0.46-4.75l-5.77-3.58l-0.07-7.37l-3.96-4.53l-9.1,0.87l0.99,3.96l4.46,3.61l-7.71,15.78l-5.16,0.39l-0.85,1.9l5.08,4.7l-0.25,4.75l-5.19-0.08l-0.56,2.36l4.31-0.19l0.12,1.87l-3.09,1.62l1.98,3.74l3.83,1.25l2.35-1.74l1.11-3.11l1.36-0.62l1.61,1.62l-0.49,3.99l-1.11,1.87l0.25,3.24L670.98,313.01L670.98,313.01z","name":"India"},"np":{"path":"M671.19,242.56l0.46,4.27l8.08,3.66l12.95,0.96l-0.49-3.13l-8.65-2.38l-7.34-4.37L671.19,242.56L671.19,242.56z","name":"Nepal"},"bt":{"path":"M695.4,248.08l1.55,2.12l5.24,0.04l-0.53-2.9L695.4,248.08L695.4,248.08z","name":"Bhutan"},"bd":{"path":"M695.57,253.11l-1.31,2.37l3.4,6.46l0.1,5.04l0.62,1.35l3.99,0.07l2.26-2.17l1.64,0.99l0.33,3.07l1.31-0.82l0.08-3.92l-1.1-0.13l-0.69-3.33l-2.78-0.1l-0.69-1.85l1.7-2.27l0.03-1.12h-4.94L695.57,253.11L695.57,253.11z","name":"Bangladesh"},"mm":{"path":"M729.44,303.65l-2.77-4.44l2.01-2.82l-1.9-3.49l-1.79-0.34l-0.34-5.86l-2.68-5.19l-0.78,1.24l-1.79,3.04l-2.24,0.34l-1.12-1.47l-0.56-3.95l-1.68-3.16l-6.84-6.45l1.68-1.11l0.31-4.67l2.5-4.2l1.08-10.45l3.62-2.47l0.12-3.81l2.17,0.72l3.42,4.95l-2.54,5.44l1.71,4.27l4.23,1.66l0.77,4.65l5.68,0.88l-1.57,2.71l-7.16,2.82l-0.78,4.62l5.26,6.76l0.22,3.61l-1.23,1.24l0.11,1.13l3.92,5.75l0.11,5.97L729.44,303.65L729.44,303.65z","name":"Myanmar"},"th":{"path":"M730.03,270.47l3.24,4.17v5.07l1.12,0.56l5.15-2.48l1.01,0.34l6.15,7.1l-0.22,4.85l-2.01-0.34l-1.79-1.13l-1.34,0.11l-2.35,3.94l0.45,2.14l1.9,1.01l-0.11,2.37l-1.34,0.68l-4.59-3.16v-2.82l-1.9-0.11l-0.78,1.24l-0.4,12.62l2.97,5.42l5.26,5.07l-0.22,1.47l-2.8-0.11l-2.57-3.83h-2.69l-3.36-2.71l-1.01-2.82l1.45-2.37l0.5-2.14l1.58-2.8l-0.07-6.44l-3.86-5.58l-0.16-0.68l1.25-1.26l-0.29-4.43l-5.14-6.51l0.6-3.75L730.03,270.47L730.03,270.47z","name":"Thailand"},"kh":{"path":"M740.48,299.47l4.09,4.37l7.61-5.64l0.67-8.9l-3.93,2.71l-2.04-1.14l-2.77-0.37l-1.55-1.09l-0.75,0.04l-2.03,3.33l0.33,1.54l2.06,1.15l-0.25,3.13L740.48,299.47L740.48,299.47z","name":"Cambodia"},"la":{"path":"M735.47,262.93l-2.42,1.23l-2.01,5.86l3.36,4.28l-0.56,4.73l0.56,0.23l5.59-2.71l7.5,8.38l-0.18,5.28l1.63,0.88l4.03-3.27l-0.33-2.59l-11.63-11.05l0.11-1.69l1.45-1.01l-1.01-2.82l-4.81-0.79L735.47,262.93L735.47,262.93z","name":"Lao People's Democratic Republic"},"vn":{"path":"M745.06,304.45l1.19,1.87l0.22,2.14l3.13,0.34l3.8-5.07l3.58-1.01l1.9-5.18l-0.89-8.34l-3.69-5.07l-3.89-3.11l-4.95-8.5l3.55-5.94l-5.08-5.83l-4.07-0.18l-3.66,1.97l1.09,4.71l4.88,0.86l1.31,3.63l-1.72,1.12l0.11,0.9l11.45,11.2l0.45,3.29l-0.69,10.4L745.06,304.45L745.06,304.45z","name":"Vietnam"},"ge":{"path":"M555.46,204.16l3.27,4.27l4.08,1.88l2.51-0.01l4.31-1.17l1.08-1.69l-12.75-4.77L555.46,204.16L555.46,204.16z","name":"Georgia"},"am":{"path":"M569.72,209.89l4.8,6.26l-1.41,1.65l-3.4-0.59l-4.22-3.78l0.23-2.48L569.72,209.89L569.72,209.89z","name":"Armenia"},"az":{"path":"M571.41,207.72l-1.01,1.72l4.71,6.18l1.64-0.53l2.7,2.83l1.17-4.96l2.93,0.47l-0.12-1.42l-4.82-4.22l-0.92,2.48L571.41,207.72L571.41,207.72z","name":"Azerbaijan"},"ir":{"path":"M569.65,217.95l-1.22,1.27l0.12,2.01l1.52,2.13l5.39,5.9l-0.82,2.36h-0.94l-0.47,2.36l3.05,3.9l2.81,0.24l5.63,7.79l3.16,0.24l2.46,1.77l0.12,3.54l9.73,5.67h3.63l2.23-1.89l2.81-0.12l1.64,3.78l10.51,1.46l0.31-3.86l3.48-1.26l0.16-1.38l-2.77-3.78l-6.17-4.96l3.24-2.95l-0.23-1.3l-4.06-0.63l-1.72-13.7l-0.2-3.15l-11.01-4.21l-4.88,1.1l-2.73,3.35l-2.42-0.16l-0.7,0.59l-5.39-0.35l-6.8-4.96l-2.53-2.77l-1.16,0.28l-2.09,2.39L569.65,217.95L569.65,217.95z","name":"Iran"},"tr":{"path":"M558.7,209.19l-2.23,2.36l-8.2-0.24l-4.92-2.95l-4.8-0.12l-5.51,3.9l-5.16,0.24l-0.47,2.95h-5.86l-2.34,2.13v1.18l1.41,1.18v1.3l-0.59,1.54l0.59,1.3l1.88-0.94l1.88,2.01l-0.47,1.42l-0.7,0.95l1.05,1.18l5.16,1.06l3.63-1.54v-2.24l1.76,0.35l4.22,2.48l4.57-0.71l1.99-1.89l1.29,0.47v2.13h1.76l1.52-2.95l13.36-1.42l5.83-0.71l-1.54-2.02l-0.03-2.73l1.17-1.4l-4.26-3.42l0.23-2.95h-2.34L558.7,209.19L558.7,209.19M523.02,209.7l-0.16,3.55l3.1-0.95l1.42-0.95l-0.42-1.54l-1.47-1.17L523.02,209.7L523.02,209.7z","name":"Turkey"},"om":{"path":"M598.38,280.84l7.39-4.26l1.31-6.25l-1.62-0.93l0.67-6.7l1.41-0.82l1.51,2.37l8.99,4.7v2.61l-10.89,16.03l-5.01,0.17L598.38,280.84L598.38,280.84z","name":"Oman"},"ae":{"path":"M594.01,264.94l0.87,3.48l9.86,0.87l0.69-7.14l1.9-1.04l0.52-2.61l-3.11,0.87l-3.46,5.23L594.01,264.94L594.01,264.94z","name":"United Arab Emirates"},"qa":{"path":"M592.63,259.02l-0.52,4.01l1.54,1.17l1.4-0.13l0.52-5.05l-1.21-0.87L592.63,259.02L592.63,259.02z","name":"Qatar"},"kw":{"path":"M583.29,247.17l-2.25-1.22l-1.56,1.57l0.17,3.14l3.63,1.39L583.29,247.17L583.29,247.17z","name":"Kuwait"},"sa":{"path":"M584,253.24l7.01,9.77l2.26,1.8l1.01,4.38l10.79,0.85l1.22,0.64l-1.21,5.4l-7.09,4.18l-10.37,3.14l-5.53,5.4l-6.57-3.83l-3.98,3.48L566,279.4l-3.8-1.74l-1.38-2.09v-4.53l-13.83-16.72l-0.52-2.96h3.98l4.84-4.18l0.17-2.09l-1.38-1.39l2.77-2.26l5.88,0.35l10.03,8.36l5.92-0.27l0.38,1.46L584,253.24L584,253.24z","name":"Saudi Arabia"},"sy":{"path":"M546.67,229.13l-0.35,2.54l2.82,1.18l-0.12,7.04l2.82-0.06l2.82-2.13l1.06-0.18l6.4-5.09l1.29-7.39l-12.79,1.3l-1.35,2.96L546.67,229.13L546.67,229.13z","name":"Syrian Arab Republic"},"iq":{"path":"M564.31,225.03l-1.56,7.71l-6.46,5.38l0.41,2.54l6.31,0.43l10.05,8.18l5.62-0.16l0.15-1.89l2.06-2.21l2.88,1.63l0.38-0.36l-5.57-7.41l-2.64-0.16l-3.51-4.51l0.7-3.32l1.07-0.14l0.37-1.47l-4.78-5.03L564.31,225.03L564.31,225.03z","name":"Iraq"},"jo":{"path":"M548.9,240.78l-2.46,8.58l-0.11,1.31h3.87l4.33-3.82l0.11-1.45l-1.77-1.81l3.17-2.63l-0.46-2.44l-0.87,0.2l-2.64,1.89L548.9,240.78L548.9,240.78z","name":"Jordan"},"lb":{"path":"M546.2,232.44l0.06,1.95l-0.82,2.96l2.82,0.24l0.18-4.2L546.2,232.44L546.2,232.44z","name":"Lebanon"},"il":{"path":"M545.32,238.06l-1.58,5.03l2.05,6.03l2.35-8.81v-1.89L545.32,238.06L545.32,238.06z","name":"Israel"},"cy":{"path":"M543.21,229.84l1.23,0.89l-3.81,3.61l-1.82-0.06l-1.35-0.95l0.18-1.77l2.76-0.18L543.21,229.84L543.21,229.84z","name":"Cyprus"},"gb":{"path":"M446.12,149.08l-1.83,2.77l0.73,1.11h4.22v1.85l-1.1,1.48l0.73,3.88l2.38,4.62l1.83,4.25l2.93,1.11l1.28,2.22l-0.18,2.03l-1.83,1.11l-0.18,0.92l1.28,0.74l-1.1,1.48l-2.57,1.11l-4.95-0.55l-7.71,3.51l-2.57-1.29l7.34-4.25l-0.92-0.55l-3.85-0.37l2.38-3.51l0.37-2.96l3.12-0.37l-0.55-5.73l-3.67-0.18l-1.1-1.29l0.18-4.25l-2.2,0.18l2.2-7.39l4.04-2.96L446.12,149.08L446.12,149.08M438.42,161.47l-3.3,0.37l-0.18,2.96l2.2,1.48l2.38-0.55l0.92-1.66L438.42,161.47L438.42,161.47z","name":"United Kingdom"},"ie":{"path":"M439.51,166.55l-0.91,6l-8.07,2.96h-2.57l-1.83-1.29v-1.11l4.04-2.59l-1.1-2.22l0.18-3.14l3.49,0.18l1.6-3.76l-0.21,3.34l2.71,2.15L439.51,166.55L439.51,166.55z","name":"Ireland"},"se":{"path":"M497.72,104.58l1.96,1.81h3.67l2.02,3.88l0.55,6.65l-4.95,3.51v3.51l-3.49,4.81l-2.02,0.18l-2.75,4.62l0.18,4.44l4.77,3.51l-0.37,2.03l-1.83,2.77l-2.75,2.4l0.18,7.95l-4.22,1.48l-1.47,3.14h-2.02l-1.1-5.54l-4.59-7.04l3.77-6.31l0.26-15.59l2.6-1.43l0.63-8.92l7.41-10.61L497.72,104.58L497.72,104.58M498.49,150.17l-2.11,1.67l1.06,2.45l1.87-1.82L498.49,150.17L498.49,150.17z","name":"Sweden"},"fi":{"path":"M506.79,116.94l2.07,0.91l1.28,2.4l-1.28,1.66l-6.42,7.02l-1.1,3.7l1.47,5.36l4.95,3.7l6.6-3.14l5.32-0.74l4.95-7.95l-3.67-8.69l-3.49-8.32l0.55-5.36l-2.2-0.37l-0.57-3.91l-2.96-4.83l-3.28,2.27l-1.29,5.27l-3.48-2.09l-4.84-1.18l-1.08,1.26l1.86,1.68l3.39-0.06l2.73,4.41L506.79,116.94L506.79,116.94z","name":"Finland"},"lv":{"path":"M518.07,151.37l-6.85-1.11l0.15,3.83l6.35,3.88l2.6-0.76l-0.15-2.92L518.07,151.37L518.07,151.37z","name":"Latvia"},"lt":{"path":"M510.81,154.7l-2.15-0.05l-2.95,2.82h-2.5l0.15,3.53l-1.5,2.77l5.4,0.05l1.55-0.2l1.55,1.87l3.55-0.15l3.4-4.33l-0.2-2.57L510.81,154.7L510.81,154.7z","name":"Lithuania"},"by":{"path":"M510.66,166.29l1.5,2.47l-0.6,1.97l0.1,1.56l0.55,1.87l3.1-1.76l3.85,0.1l2.7,1.11h6.85l2-4.79l1.2-1.81v-1.21l-4.3-6.05l-3.8-1.51l-3.1-0.35l-2.7,0.86l0.1,2.72l-3.75,4.74L510.66,166.29L510.66,166.29z","name":"Belarus"},"pl":{"path":"M511.46,174.76l0.85,1.56l0.2,1.66l-0.7,1.61l-1.6,3.08l-1.35,0.61l-1.75-0.76l-1.05,0.05l-2.55,0.96l-2.9-0.86l-4.7-3.33l-4.6-2.47l-1.85-2.82l-0.35-6.65l3.6-3.13l4.7-1.56l1.75-0.2l-0.7,1.41l0.45,0.55l7.91,0.15l1.7-0.05l2.8,4.29l-0.7,1.76l0.3,2.07L511.46,174.76L511.46,174.76z","name":"Poland"},"it":{"path":"M477.56,213.38l-2.65,1.34l0.35,5.17l2.12,0.36l1.59-1.52v-4.9L477.56,213.38L477.56,213.38M472.27,196.98l-0.62,1.57l0.17,1.71l2.39,2.79l3.76-0.13l8.3,9.64l5.18,1.5l3.06,2.89l0.73,6.59l1.64-0.96l1.42-3.59l-0.35-2.58l2.43-0.22l0.35-1.46l-6.85-3.28l-6.5-6.39l-2.59-3.82l-0.63-3.63l3.31-0.79l-0.85-2.39l-2.03-1.71l-1.75-0.08l-2.44,0.67l-2.3,3.22l-1.39,0.92l-2.15-1.32L472.27,196.98L472.27,196.98M492.44,223.02l-1.45-0.78l-4.95,0.78l0.17,1.34l4.45,2.24l0.67,0.73l1.17,0.17L492.44,223.02L492.44,223.02z","name":"Italy"},"fr":{"path":"M477.83,206.96l-1.95,1.96l-0.18,1.78l1.59,0.98l0.62-0.09l0.35-2.59L477.83,206.96L477.83,206.96M460.4,178.7l-2.21,0.54l-4.42,4.81l-1.33,0.09l-1.77-1.25l-1.15,0.27l-0.88,2.76l-6.46,0.18l0.18,1.43l4.42,2.94l5.13,4.1l-0.09,4.9l-2.74,4.81l5.93,2.85l6.02,0.18l1.86-2.14l3.8,0.09l1.06,0.98l3.8-0.27l1.95-2.5l-2.48-2.94l-0.18-1.87l0.53-2.05l-1.24-1.78l-2.12,0.62l-0.27-1.6l4.69-5.17v-3.12l-3.1-1.78l-1.59-0.27L460.4,178.7L460.4,178.7z","name":"France"},"nl":{"path":"M470.09,168.27l-4.53,2.23l0.96,0.87l0.1,2.23l-0.96-0.19l-1.06-1.65l-2.53,4.01l3.89,0.81l1.45,1.53l0.77,0.02l0.51-3.46l2.45-1.03L470.09,168.27L470.09,168.27z","name":"Netherlands"},"be":{"path":"M461.61,176.52l-0.64,1.6l6.88,4.54l1.98,0.47l0.07-2.15l-1.73-1.94h-1.06l-1.45-1.65L461.61,176.52L461.61,176.52z","name":"Belgium"},"de":{"path":"M471.14,167.88l3.57-0.58v-2.52l2.99-0.49l1.64,1.65l1.73,0.19l2.7-1.17l2.41,0.68l2.12,1.84l0.29,6.89l2.12,2.82l-2.79,0.39l-4.63,2.91l0.39,0.97l4.14,3.88l-0.29,1.94l-3.85,1.94l-3.57,0.1l-0.87,1.84h-1.83l-0.87-1.94l-3.18-0.78l-0.1-3.2l-2.7-1.84l0.29-2.33l-1.83-2.52l0.48-3.3l2.5-1.17L471.14,167.88L471.14,167.88z","name":"Germany"},"dk":{"path":"M476.77,151.5l-4.15,4.59l-0.15,2.99l1.89,4.93l2.96-0.56l-0.37-4.03l2.04-2.28l-0.04-1.79l-1.44-3.73L476.77,151.5L476.77,151.5M481.44,159.64l-0.93-0.04l-1.22,1.12l0.15,1.75l2.89,0.08l0.15-1.98L481.44,159.64L481.44,159.64z","name":"Denmark"},"ch":{"path":"M472.91,189.38l-4.36,4.64l0.09,0.47l1.79-0.56l1.61,2.24l2.72-0.96l1.88,1.46l0.77-0.44l2.32-3.64l-0.59-0.56l-2.29-0.06l-1.11-2.27L472.91,189.38L472.91,189.38z","name":"Switzerland"},"cz":{"path":"M488.43,184.87h2.97h1.46l2.37,1.69l4.39-3.65l-4.26-3.04l-4.22-2.04l-2.89,0.52l-3.92,2.52L488.43,184.87L488.43,184.87z","name":"Czech Republic"},"sk":{"path":"M495.84,187.13l0.69,0.61l0.09,1.04l7.63-0.17l5.64-2.43l-0.09-2.47l-1.08,0.48l-1.55-0.83l-0.95-0.04l-2.5,1l-3.4-0.82L495.84,187.13L495.84,187.13z","name":"Slovakia"},"at":{"path":"M480.63,190.12l-0.65,1.35l0.56,0.96l2.33-0.48h1.98l2.15,1.82l4.57-0.83l3.36-2l0.86-1.35l-0.13-1.74l-3.02-2.26l-4.05,0.04l-0.34,2.3l-4.26,2.08L480.63,190.12L480.63,190.12z","name":"Austria"},"hu":{"path":"M496.74,189.6l-1.16,1.82l0.09,2.78l1.85,0.95l5.69,0.17l7.93-6.68l0.04-1.48l-0.86-0.43l-5.73,2.6L496.74,189.6L496.74,189.6z","name":"Hungary"},"si":{"path":"M494.8,191.99l-2.54,1.52l-4.74,1.04l0.95,2.74l3.32,0.04l3.06-2.56L494.8,191.99L494.8,191.99z","name":"Slovenia"},"hr":{"path":"M495.62,195.16l-3.53,2.91h-3.58l-0.43,2.52l1.64,0.43l0.82-1.22l1.29,1.13l1.03,3.6l7.07,3.3l0.7-0.8l-7.17-7.4l0.73-1.35l6.81-0.26l0.69-2.17l-4.44,0.13L495.62,195.16L495.62,195.16z","name":"Croatia"},"ba":{"path":"M494.8,198.94l-0.37,0.61l6.71,6.92l2.46-3.62l-0.09-1.43l-2.15-2.61L494.8,198.94L494.8,198.94z","name":"Bosnia and Herzegovina"},"mt":{"path":"M492.61,230.47l-1.67,0.34l0.06,1.85l1.5,0.5l0.67-0.56L492.61,230.47L492.61,230.47z","name":"Malta"},"ua":{"path":"M515.57,173.15l-2.9,1.63l0.72,3.08l-2.68,5.65l0.02,2.49l1.26,0.8l8.08,0.4l2.26-1.87l2.42,0.81l3.47,4.63l-2.54,4.56l3.02,0.88l3.95-4.55l2.26,0.41l2.1,1.46l-1.85,2.44l2.5,3.9h2.66l1.37-2.6l2.82-0.57l0.08-2.11l-5.24-0.81l0.16-2.27h5.08l5.48-4.39l2.42-2.11l0.4-6.66l-10.8-0.97l-4.43-6.25l-3.06-1.05l-3.71,0.16l-1.67,4.13l-7.6,0.1l-2.47-1.14L515.57,173.15L515.57,173.15z","name":"Ukraine"},"md":{"path":"M520.75,187.71l3.1,4.77l-0.26,2.7l1.11,0.05l2.63-4.45l-3.16-3.92l-1.79-0.74L520.75,187.71L520.75,187.71z","name":"Moldova"},"ro":{"path":"M512.18,187.6l-0.26,1.48l-5.79,4.82l4.84,7.1l3.1,2.17h5.58l1.84-1.54l2.47-0.32l1.84,1.11l3.26-3.71l-0.63-1.86l-3.31-0.85l-2.26-0.11l0.11-3.18l-3-4.72L512.18,187.6L512.18,187.6z","name":"Romania"},"rs":{"path":"M505.55,194.54l-2.05,1.54h-1l-0.68,2.12l2.42,2.81l0.16,2.23l-3,4.24l0.42,1.27l1.74,0.32l1.37-1.86l0.74-0.05l1.26,1.22l3.84-1.17l-0.32-5.46L505.55,194.54L505.55,194.54z","name":"Serbia"},"bg":{"path":"M511.44,202.39l0.16,4.98l1.68,3.5l6.31,0.11l2.84-2.01l2.79-1.11l-0.68-3.18l0.63-1.7l-1.42-0.74l-1.95,0.16l-1.53,1.54l-6.42,0.05L511.44,202.39L511.44,202.39z","name":"Bulgaria"},"al":{"path":"M504.02,209.76v4.61l1.32,2.49l0.95-0.11l1.63-2.97l-0.95-1.33l-0.37-3.29l-1.26-1.17L504.02,209.76L504.02,209.76z","name":"Albania"},"mk":{"path":"M510.92,208.01l-3.37,1.11l0.16,2.86l0.79,1.01l4-1.86L510.92,208.01L510.92,208.01z","name":"Macedonia"},"gr":{"path":"M506.71,217.6l-0.11,1.33l4.63,2.33l2.21,0.85l-1.16,1.22l-2.58,0.26l-0.37,1.17l0.89,2.01l2.89,1.54l1.26,0.11l0.16-3.45l1.89-2.28l-5.16-6.1l0.68-2.07l1.21-0.05l1.84,1.48l1.16-0.58l0.37-2.07l5.42,0.05l0.21-3.18l-2.26,1.59l-6.63-0.16l-4.31,2.23L506.71,217.6L506.71,217.6M516.76,230.59l1.63,0.05l0.68,1.01h2.37l1.58-0.58l0.53,0.64l-1.05,1.38l-4.63,0.16l-0.84-1.11l-0.89-0.53L516.76,230.59L516.76,230.59z","name":"Greece"}}}); diff --git a/plugins/wp-statistics/assets/jqvmap/maps/jquery.vmap.world.min.js b/plugins/wp-statistics/assets/jqvmap/maps/jquery.vmap.world.min.js new file mode 100644 index 0000000..643296c --- /dev/null +++ b/plugins/wp-statistics/assets/jqvmap/maps/jquery.vmap.world.min.js @@ -0,0 +1,2 @@ +jQuery.fn.vectorMap("addMap","world_en",{width:950,height:550,paths:{id:{path:"M781.68,324.4l-2.31,8.68l-12.53,4.23l-3.75-4.4l-1.82,0.5l3.4,13.12l5.09,0.57l6.79,2.57v2.57l3.11-0.57l4.53-6.27v-5.13l2.55-5.13l2.83,0.57l-3.4-7.13l-0.52-4.59L781.68,324.4L781.68,324.4M722.48,317.57l-0.28,2.28l6.79,11.41h1.98l14.15,23.67l5.66,0.57l2.83-8.27l-4.53-2.85l-0.85-4.56L722.48,317.57L722.48,317.57M789.53,349.11l2.26,2.77l-1.47,4.16v0.79h3.34l1.18-10.4l1.08,0.3l1.96,9.5l1.87,0.5l1.77-4.06l-1.77-6.14l-1.47-2.67l4.62-3.37l-1.08-1.49l-4.42,2.87h-1.18l-2.16-3.17l0.69-1.39l3.64-1.78l5.5,1.68l1.67-0.1l4.13-3.86l-1.67-1.68l-3.83,2.97h-2.46l-3.73-1.78l-2.65,0.1l-2.95,4.75l-1.87,8.22L789.53,349.11L789.53,349.11M814.19,330.5l-1.87,4.55l2.95,3.86h0.98l1.28-2.57l0.69-0.89l-1.28-1.39l-1.87-0.69L814.19,330.5L814.19,330.5M819.99,345.45l-4.03,0.89l-1.18,1.29l0.98,1.68l2.65-0.99l1.67-0.99l2.46,1.98l1.08-0.89l-1.96-2.38L819.99,345.45L819.99,345.45M753.17,358.32l-2.75,1.88l0.59,1.58l8.75,1.98l4.42,0.79l1.87,1.98l5.01,0.4l2.36,1.98l2.16-0.5l1.97-1.78l-3.64-1.68l-3.14-2.67l-8.16-1.98L753.17,358.32L753.17,358.32M781.77,366.93l-2.16,1.19l1.28,1.39l3.14-1.19L781.77,366.93L781.77,366.93M785.5,366.04l0.39,1.88l2.26,0.59l0.88-1.09l-0.98-1.49L785.5,366.04L785.5,366.04M790.91,370.99l-2.75,0.4l2.46,2.08h1.96L790.91,370.99L790.91,370.99M791.69,367.72l-0.59,1.19l4.42,0.69l3.44-1.98l-1.96-0.59l-3.14,0.89l-1.18-0.99L791.69,367.72L791.69,367.72M831.93,339.34l-4.17,0.47l-2.68,1.96l1.11,2.24l4.54,0.84v0.84l-2.87,2.33l1.39,4.85l1.39,0.09l1.2-4.76h2.22l0.93,4.66l10.83,8.96l0.28,7l3.7,4.01l1.67-0.09l0.37-24.72l-6.29-4.38l-5.93,4.01l-2.13,1.31l-3.52-2.24l-0.09-7.09L831.93,339.34L831.93,339.34z",name:"Indonesia"},pg:{path:"M852.76,348.29l-0.37,24.44l3.52-0.19l4.63-5.41l3.89,0.19l2.5,2.24l0.83,6.9l7.96,4.2l2.04-0.75v-2.52l-6.39-5.32l-3.15-7.28l2.5-1.21l-1.85-4.01l-3.7-0.09l-0.93-4.29l-9.81-6.62L852.76,348.29L852.76,348.29M880.48,349l-0.88,1.25l4.81,4.26l0.66,2.5l1.31-0.15l0.15-2.57l-1.46-1.32L880.48,349L880.48,349M882.89,355.03l-0.95,0.22l-0.58,2.57l-1.82,1.18l-5.47,0.96l0.22,2.06l5.76-0.29l3.65-2.28l-0.22-3.97L882.89,355.03L882.89,355.03M889.38,359.51l1.24,3.45l2.19,2.13l0.66-0.59l-0.22-2.28l-2.48-3.01L889.38,359.51L889.38,359.51z",name:"Papua New Guinea"},mx:{path:"M137.49,225.43l4.83,15.21l-2.25,1.26l0.25,3.02l4.25,3.27v6.05l5.25,5.04l-2.25-14.86l-3-9.83l0.75-6.8l2.5,0.25l1,2.27l-1,5.79l13,25.44v9.07l10.5,12.34l11.5,5.29l4.75-2.77l6.75,5.54l4-4.03l-1.75-4.54l5.75-1.76l1.75,1.01l1.75-1.76h2.75l5-8.82l-2.5-2.27l-9.75,2.27l-2.25,6.55l-5.75,1.01l-6.75-2.77l-3-9.57l2.27-12.07l-4.64-2.89l-2.21-11.59l-1.85-0.79l-3.38,3.43l-3.88-2.07l-1.52-7.73l-15.37-1.61l-7.94-5.97L137.49,225.43L137.49,225.43z",name:"Mexico"},ee:{path:"M517.77,143.66l-5.6-0.2l-3.55,2.17l-0.05,1.61l2.3,2.17l7.15,1.21L517.77,143.66L517.77,143.66M506.76,147.64l-1.55-0.05l-0.9,0.91l0.65,0.96l1.55,0.1l0.8-1.16L506.76,147.64L506.76,147.64z",name:"Estonia"},dz:{path:"M473.88,227.49l-4.08-1.37l-16.98,3.19l-3.7,2.81l2.26,11.67l-6.75,0.27l-4.06,6.53l-9.67,2.32l0.03,4.75l31.85,24.35l5.43,0.46l18.11-14.15l-1.81-2.28l-3.4-0.46l-2.04-3.42v-14.15l-1.36-1.37l0.23-3.65l-3.62-3.65l-0.45-3.88l1.58-1.14l-0.68-4.11L473.88,227.49L473.88,227.49z",name:"Algeria"},ma:{path:"M448.29,232.28h-11.55l-2.26,5.02l-5.21,2.51l-4.3,11.64l-8.38,5.02l-11.77,19.39l11.55-0.23l0.45-5.7h2.94v-7.76h10.19l0.23-10.04l9.74-2.28l4.08-6.62l6.34-0.23L448.29,232.28L448.29,232.28z",name:"Morocco"},mr:{path:"M404.9,276.66l2.18,2.85l-0.45,12.32l3.17-2.28l2.26-0.46l3.17,1.14l3.62,5.02l3.4-2.28l16.53-0.23l-4.08-27.61l4.38-0.02l-8.16-6.25l0.01,4.06l-10.33,0.01l-0.05,7.75l-2.97-0.01l-0.38,5.72L404.9,276.66L404.9,276.66z",name:"Mauritania"},sn:{path:"M412.03,289.84L410.12,290.31L406.18,293.18L405.28,294.78L405,296.37L406.43,297.40L411.28,297.34L414.40,296.5L414.75,298.03L414.46,300.06L414.53,300.09L406.78,300.21L408.03,303.21L408.71,301.37L418,302.15L418.06,302.21L419.03,302.25L422,302.37L422.12,300.62L418.53,296.31L414.53,290.87L412.03,289.84z",name:"Senegal"},gm:{path:"M406.89,298.34l-0.13,1.11l6.92-0.1l0.35-1.03l-0.15-1.04l-1.99,0.81L406.89,298.34L406.89,298.34z",name:"Gambia"},gw:{path:"M408.6,304.53l1.4,2.77l3.93-3.38l0.04-1.04l-4.63-0.67L408.6,304.53L408.6,304.53z",name:"Guinea-Bissau"},gn:{path:"M410.42,307.94l3.04,4.68l3.96-3.44l4.06-0.18l3.38,4.49l2.87,1.89l1.08-2.1l0.96-0.54l-0.07-4.62l-1.91-5.48l-5.86,0.65l-7.25-0.58l-0.04,1.86L410.42,307.94L410.42,307.94z",name:"Guinea"},sl:{path:"M413.93,313.13l5.65,5.46l4.03-4.89l-2.52-3.95l-3.47,0.35L413.93,313.13L413.93,313.13z",name:"Sierra Leone"},lr:{path:"M420.17,319.19l10.98,7.34l-0.26-5.56l-3.32-3.91l-3.24-2.87L420.17,319.19L420.17,319.19z",name:"Liberia"},ci:{path:"M432.07,326.75l4.28-3.03l5.32-0.93l5.43,1.17l-2.77-4.19l-0.81-2.56l0.81-7.57l-4.85,0.23l-2.2-2.1l-4.62,0.12l-2.2,0.35l0.23,5.12l-1.16,0.47l-1.39,2.56l3.58,4.19L432.07,326.75L432.07,326.75z",name:"Cote d'Ivoire"},ml:{path:"M419.46,295.84l3.08-2.11l17.12-0.1l-3.96-27.54l4.52-0.13l21.87,16.69l2.94,0.42l-1.11,9.28l-13.75,1.25l-10.61,7.92l-1.93,5.42l-7.37,0.31l-1.88-5.41l-5.65,0.4l0.22-1.77L419.46,295.84L419.46,295.84z",name:"Mali"},bf:{path:"M450.59,294.28l3.64-0.29l5.97,8.44l-5.54,4.18l-4.01-1.03l-5.39,0.07l-0.87,3.16l-4.52,0.22l-1.24-1.69l1.6-5.14L450.59,294.28L450.59,294.28z",name:"Burkina Faso"},ne:{path:"M460.89,302l2.55-0.06l2.3-3.45l3.86-0.69l4.11,2.51l8.77,0.25l6.78-2.76l2.55-2.19l0.19-2.88l4.73-4.77l1.25-10.53l-3.11-6.52l-7.96-1.94l-18.42,14.36l-2.61-0.25l-1.12,9.97l-9.4,0.94L460.89,302L460.89,302z",name:"Niger"},gh:{path:"M444.34,317.05l1.12,2.63l2.92,4.58l1.62-0.06l4.42-2.51l-0.31-14.29l-3.42-1l-4.79,0.13L444.34,317.05L444.34,317.05z",name:"Ghana"},tg:{path:"M455.22,321.25l2.68-1.57l-0.06-10.35l-1.74-2.82l-1.12,0.94L455.22,321.25L455.22,321.25z",name:"Togo"},bj:{path:"M458.71,319.49h2.12l0.12-6.02l2.68-3.89l-0.12-6.77l-2.43-0.06l-4.17,3.26l1.74,3.32L458.71,319.49L458.71,319.49z",name:"Benin"},ng:{path:"M461.57,319.37l3.92,0.19l4.73,5.27l2.3,0.63l1.8-0.88l2.74-0.38l0.93-3.82l3.73-2.45l4.04-0.19l7.4-13.61l-0.12-3.07l-3.42-2.63l-6.84,3.01l-9.15-0.13l-4.36-2.76l-3.11,0.69l-1.62,2.82l-0.12,7.96l-2.61,3.7L461.57,319.37L461.57,319.37z",name:"Nigeria"},tn:{path:"M474.91,227.33l5.53-2.23l1.82,1.18l0.07,1.44l-0.85,1.11l0.13,1.97l0.85,0.46v3.54l-0.98,1.64l0.13,1.05l3.71,1.31l-2.99,4.65l-1.17-0.07l-0.2,3.74l-1.3,0.2l-1.11-0.98l0.26-3.8l-3.64-3.54l-0.46-3.08l1.76-1.38L474.91,227.33L474.91,227.33z",name:"Tunisia"},ly:{path:"M480.05,248.03l1.56-0.26l0.46-3.6h0.78l3.19-5.24l7.87,2.29l2.15,3.34l7.74,3.54l4.03-1.7l-0.39-1.7l-1.76-1.7l0.2-1.18l2.86-2.42h5.66l2.15,2.88l4.55,0.66l0.59,36.89l-3.38-0.13l-20.42-10.62l-2.21,1.25l-8.39-2.1l-2.28-3.01l-3.32-0.46l-1.69-3.01L480.05,248.03L480.05,248.03z",name:"Libya"},eg:{path:"M521.93,243.06l2.67,0.07l5.2,1.44l2.47,0.07l3.06-2.56h1.43l2.6,1.44h3.29l0.59-0.04l2.08,5.98l0.59,1.93l0.55,2.89l-0.98,0.72l-1.69-0.85l-1.95-6.36l-1.76-0.13l-0.13,2.16l1.17,3.74l9.37,11.6l0.2,4.98l-2.73,3.15L522.32,273L521.93,243.06L521.93,243.06z",name:"Egypt"},td:{path:"M492.79,296l0.13-2.95l4.74-4.61l1.27-11.32l-3.16-6.04l2.21-1.13l21.4,11.15l-0.13,10.94l-3.77,3.21v5.64l2.47,4.78h-4.36l-7.22,7.14l-0.19,2.16l-5.33-0.07l-0.07,0.98l-3.04-0.4l-2.08-3.93l-1.56-0.77l0.2-1.2l1.96-1.5v-7.02l-2.71-0.42l-3.27-2.43L492.79,296L492.79,296L492.79,296z",name:"Chad"},sd:{path:"M520.15,292.43l0.18-11.83l2.46,0.07l-0.28-6.57l25.8,0.23l3.69-3.72l7.96,12.73l-4.36,5.14v7.85l-6.86,14.75l-2.36,1.04l0.75,4.11h2.94l3.99,5.79l-3.2,0.41l-0.82,1.49l-0.08,2.15l-9.6-0.17l-0.98-1.49l-6.71-0.38l-12.32-12.68l1.23-0.74l0.33-2.98l-2.95-1.74l-2.69-5.31l0.15-4.94L520.15,292.43L520.15,292.43z",name:"Sudan"},cm:{path:"M477.82,324.28l3.22,2.96l-0.23,4.58l17.66-0.41l1.44-1.62l-5.06-5.45l-0.75-1.97l3.22-6.03l-2.19-4l-1.84-0.99v-2.03l2.13-1.39l0.12-6.32l-1.69-0.19l-0.03,3.32l-7.42,13.85l-4.54,0.23l-3.11,2.14L477.82,324.28L477.82,324.28z",name:"Cameroon"},er:{path:"M556.71,294.7l-0.25-5.89l3.96-4.62l1.07,0.82l1.95,6.52l9.36,6.97l-1.7,2.09l-6.85-5.89H556.71L556.71,294.7z",name:"Eritrea"},dj:{path:"M571.48,301.54l-0.57,3.36l3.96-0.06l0.06-4.94l-1.45-0.89L571.48,301.54L571.48,301.54z",name:"Djibouti"},et:{path:"M549.49,311.76l7.28-16.2l7.23,0.04l6.41,5.57l-0.45,4.59h4.97l0.51,2.76l8.04,4.81l4.96,0.25l-9.43,10.13l-12.95,3.99h-3.21l-5.72-4.88l-2.26-0.95l-4.38-6.45l-2.89,0.04l-0.34-2.96L549.49,311.76L549.49,311.76z",name:"Ethiopia"},so:{path:"M575.74,305.04l4.08,2.78l1.21-0.06l10.13-3.48l1.15,3.71l-0.81,3.13l-2.19,1.74l-5.47-0.35l-7.83-4.81L575.74,305.04L575.74,305.04M591.97,304.05l4.37-1.68l1.55,0.93l-0.17,3.88l-4.03,11.48l-21.81,23.36l-2.53-1.74l-0.17-9.86l3.28-3.77l6.96-2.15l10.21-10.78l2.67-2.38l0.75-3.48L591.97,304.05L591.97,304.05z",name:"Somalia"},ye:{path:"M599.62,299.65l2.13,2.38l2.88-1.74l1.04-0.35l-1.32-1.28l-2.53,0.75L599.62,299.65L599.62,299.65M571.99,289.23l1.44,4.28v4.18l3.46,3.14l24.38-9.93l0.23-2.73l-3.91-7.02l-9.81,3.13l-5.63,5.54l-6.53-3.86L571.99,289.23L571.99,289.23z",name:"Yemen"},cf:{path:"M495.66,324.05l4.66,5.04l1.84-2.38l2.93,0.12l0.63-2.32l2.88-1.8l5.98,4.12l3.45-3.42l13.39,0.59L519,311.18l1.67-1.04l0.23-2.26l-2.82-1.33h-4.14l-6.67,6.61l-0.23,2.72l-5.29-0.17l-0.17,1.16l-3.45-0.35l-3.11,5.91L495.66,324.05L495.66,324.05z",name:"Central African Republic"},st:{path:"M470.74,337.15l1.15-0.58l0.86,0.7l-0.86,1.33l-1.04-0.41L470.74,337.15L470.74,337.15M473.05,333.5l1.73-0.29l0.58,1.1l-0.86,0.93l-0.86-0.12L473.05,333.5L473.05,333.5z",name:"Sao Tome and Principe"},gq:{path:"M476.84,327.41l-0.46,1.97l1.38,0.75l1.32-0.99l-0.46-2.03L476.84,327.41L476.84,327.41M480.99,332.69l-0.06,1.39l4.54,0.23l-0.06-1.57L480.99,332.69L480.99,332.69z",name:"Equatorial Guinea"},ga:{path:"M486.39,332.63l-0.12,2.49l-5.64-0.12l-3.45,6.67l8.11,8.87l2.01-1.68l-0.06-1.74l-1.38-0.64v-1.22l3.11-1.97l2.76,2.09l3.05,0.06l-0.06-10.49l-4.83-0.23l-0.06-2.2L486.39,332.63L486.39,332.63z",name:"Gabon"},cg:{path:"M491,332.52l-0.06,1.45l4.78,0.12l0.17,12.41l-4.37-0.12l-2.53-1.97l-1.96,1.1l-0.09,0.55l1.01,0.49l0.29,2.55l-2.7,2.32l0.58,1.22l2.99-2.32h1.44l0.46,1.39l1.9,0.81l6.1-5.16l-0.12-3.77l1.27-3.07l3.91-2.9l1.05-9.81l-2.78,0.01l-3.22,4.41L491,332.52L491,332.52z",name:"Congo"},ao:{path:"M486.55,353.23l1.74,2.26l2.25-2.13l-0.66-2.21l-0.56-0.04L486.55,353.23L486.55,353.23M488.62,356.71l3.41,12.73l-0.08,4.02l-4.99,5.36l-0.75,8.71l19.2,0.17l6.24,2.26l5.15-0.67l-3-3.76l0.01-10.74l5.9-0.25v-4.19l-4.79-0.2l-0.96-9.92l-2.02,0.03l-1.09-0.98l-1.19,0.06l-1.58,3.06H502l-1.41-1.42l0.42-2.01l-1.66-2.43L488.62,356.71L488.62,356.71z",name:"Angola"},cd:{path:"M489.38,355.71l10.31-0.18l2.09,2.97l-0.08,2.19l0.77,0.7h5.12l1.47-2.89h2.09l0.85,0.86l2.87-0.08l0.85,10.08l4.96,0.16v0.78l13.33,6.01l0.62,1.17h2.79l-0.31-4.22l-5.04-2.42l0.31-3.2l2.17-5.08l4.96-0.16l-4.26-14.14l0.08-6.01l6.74-10.54l0.08-1.48l-1.01-0.55l0.04-2.86l-1.23-0.11l-1.24-1.58l-20.35-0.92l-3.73,3.63l-6.11-4.02l-2.15,1.32l-1.56,13.13l-3.86,2.98l-1.16,2.64l0.21,3.91l-6.96,5.69l-1.85-0.84l0.25,1.09L489.38,355.71L489.38,355.71z",name:"Congo"},rw:{path:"M537.82,339.9l2.81,2.59l-0.12,2.77l-4.36,0.09v-3.06L537.82,339.9L537.82,339.9z",name:"Rwanda"},bi:{path:"M536.21,346.21l4.27-0.09l-1.11,3.74l-1.08,0.94h-1.32l-0.94-2.53L536.21,346.21L536.21,346.21z",name:"Burundi"},ug:{path:"M538.3,339.09l3.03,2.84l1.9-1.21l5.14-0.84l0.88,0.09l0.33-1.95l2.9-6.1l-2.44-5.08l-7.91,0.05l-0.05,2.09l1.06,1.02l-0.16,2.09L538.3,339.09L538.3,339.09z",name:"Uganda"},ke:{path:"M550.83,326.52l2.66,5.19l-3.19,6.69l-0.42,2.03l15.93,9.85l4.94-7.76l-2.5-2.03l-0.05-10.22l3.13-3.42l-4.99,1.66l-3.77,0.05l-5.9-4.98l-1.86-0.8l-3.45,0.32l-0.61,1.02L550.83,326.52L550.83,326.52z",name:"Kenya"},tz:{path:"M550.57,371.42l17.47-2.14l-3.93-7.6l-0.21-7.28l1.27-3.48l-16.62-10.44l-5.21,0.86l-1.81,1.34l-0.16,3.05l-1.17,4.23l-1.22,1.45l-1.75,0.16l3.35,11.61l5.47,2.57l3.77,0.11L550.57,371.42L550.57,371.42z",name:"Tanzania"},zm:{path:"M514.55,384.7l3.17,4.4l4.91,0.3l1.74,0.96l5.14,0.06l4.43-6.21l12.38-5.54l1.08-4.88l-1.44-6.99l-6.46-3.68l-4.31,0.3l-2.15,4.76l0.06,2.17l5.08,2.47l0.3,5.37l-4.37,0.24l-1.08-1.81l-12.14-5.18l-0.36,3.98l-5.74,0.18L514.55,384.7L514.55,384.7z",name:"Zambia"},mw:{path:"M547.16,379.4l3.11,3.25l-0.06,4.16l0.6,1.75l4.13-4.46l-0.48-5.67l-2.21-1.69l-1.97-9.95l-3.41-0.12l1.55,7.17L547.16,379.4L547.16,379.4z",name:"Malawi"},mz:{path:"M541.17,413.28l2.69,2.23l6.34-3.86l1.02-5.73v-9.46l10.17-8.32l1.74,0.06l6.16-5.91l-0.96-12.18L552,372.17l0.48,3.68l2.81,2.17l0.66,6.63l-5.5,5.37l-1.32-3.01l0.24-3.98l-3.17-3.44l-7.78,3.62l7.24,3.68l0.24,10.73l-4.79,7.11L541.17,413.28L541.17,413.28z",name:"Mozambique"},zw:{path:"M524.66,392.3l8.97,10.13l6.88,1.75l4.61-7.23l-0.36-9.58l-7.48-3.86l-2.81,1.27l-4.19,6.39l-5.8-0.06L524.66,392.3L524.66,392.3z",name:"Zimbabwe"},na:{path:"M496.55,421.96l3.35,0.24l1.97,1.99l4.67,0.06l1.14-13.26v-8.68l2.99-0.6l1.14-9.1l7.6-0.24l2.69-2.23l-4.55-0.18l-6.16,0.84l-6.64-2.41h-18.66l0.48,5.3l6.22,9.16l-1.08,4.7l0.06,2.47L496.55,421.96L496.55,421.96z",name:"Namibia"},bw:{path:"M508.51,411.23l2.15,0.66l-0.3,6.15l2.21,0.3l5.08-4.58l6.1,0.66l1.62-4.1l7.72-7.05l-9.27-10.67l-0.12-1.75l-1.02-0.3l-2.81,2.59l-7.3,0.18l-1.02,9.1l-2.87,0.66L508.51,411.23L508.51,411.23z",name:"Botswana"},sz:{path:"M540.87,414l-2.51,0.42l-1.08,2.95l1.92,1.75h2.33l1.97-2.83L540.87,414L540.87,414z",name:"Swaziland"},ls:{path:"M527.41,425.39l3.05-2.35l1.44,0.06l1.74,2.17l-0.18,2.17l-2.93,1.08v0.84l-3.23-0.18l-0.78-2.35L527.41,425.39L527.41,425.39z",name:"Lesotho"},za:{path:"M534.16,403.63l-7.9,7.3l-1.88,4.51l-6.26-0.78l-5.21,4.63l-3.46-0.34l0.28-6.4l-1.23-0.43l-0.86,13.09l-6.14-0.06l-1.85-2.18l-2.71-0.03l2.47,7.09l4.41,4.17l-3.15,3.67l2.04,4.6l4.72,1.8l3.76-3.2l10.77,0.06l0.77-0.96l4.78-0.84l16.17-16.1l-0.06-5.07l-1.73,2.24h-2.59l-3.15-2.64l1.6-3.98l2.75-0.56l-0.25-8.18L534.16,403.63L534.16,403.63z M530.37,422.13l1.51-0.06l2.45,2.66l-0.07,3.08l-2.87,1.45l-0.18,1.02l-4.38,0.05l-1.37-3.3l1.25-2.42L530.37,422.13L530.37,422.13z",name:"South Africa"},gl:{path:"M321.13,50.07l-1.36,2.17l2.45,2.45l-1.09,2.45l3.54,4.62l4.35-1.36l5.71-0.54l6.53,7.07l4.35,11.69l-3.53,7.34l4.89-0.82l2.72,1.63l0.27,3.54l-5.98,0.27l3.26,3.26l4.08,0.82l-8.97,11.96l-1.09,7.34l1.9,5.98l-1.36,3.54l2.45,7.61l4.62,5.17l1.36-0.27l2.99-0.82l0.27,4.35l1.9,2.72l3.53-0.27l2.72-10.06l8.16-10.06l12.24-4.89l7.61-9.52l3.53,1.63h7.34l5.98-5.98l7.34-2.99l0.82-4.62l-4.62-4.08l-4.08-1.36l-2.18-5.71l5.17-2.99l8.16,4.35l2.72-2.99l-4.35-2.45l9.25-12.51l-1.63-5.44l-4.35-0.27l1.63-4.89l5.44-2.45l11.15-9.79l-3.26-3.53l-12.51,1.09l-6.53,6.53l3.81-8.43l-4.35-1.09l-2.45,4.35l-3.53-2.99l-9.79,1.09l2.72-4.35l16.04-0.54l-4.08-5.44l-17.4-3.26l-7.07,1.09l0.27,3.54l-7.34-2.45l0.27-2.45l-5.17,1.09l-1.09,2.72l5.44,1.9l-5.71,4.08l-4.08-4.62l-5.71-1.63l-0.82,4.35h-5.71l-2.18-4.62l-8.97-1.36l-4.89,2.45l-0.27,3.26l-6.25-0.82l-3.81,1.63l0.27,3.81v1.9l-7.07,1.36l-3.26-2.17l-2.18,3.53l3.26,3.54l6.8-0.82l0.54,2.18l-5.17,2.45L321.13,50.07L321.13,50.07M342.89,92.49l1.63,2.45l-0.82,2.99h-1.63l-2.18-2.45l0.54-1.9L342.89,92.49L342.89,92.49M410.87,85.69l4.62,1.36l-0.27,3.81l-4.89-2.45l-1.09-1.36L410.87,85.69L410.87,85.69z",name:"Greenland"},au:{path:"M761.17,427.98l-0.35,25.38l-3.9,2.86l-0.35,2.5l5.32,3.57l13.13-2.5h6.74l2.48-3.58l14.9-2.86l10.64,3.22l-0.71,4.29l1.42,4.29l8.16-1.43l0.35,2.14l-5.32,3.93l1.77,1.43l3.9-1.43l-1.06,11.8l7.45,5.72l4.26-1.43l2.13,2.14l12.42-1.79l11.71-18.95l4.26-1.07l8.51-15.73l2.13-13.58l-5.32-6.79l2.13-1.43l-4.26-13.23l-4.61-3.22l0.71-17.87l-4.26-3.22l-1.06-10.01h-2.13l-7.1,23.59l-3.9,0.36l-8.87-8.94l4.97-13.23l-9.22-1.79l-10.29,2.86l-2.84,8.22l-4.61,1.07l-0.35-5.72l-18.8,11.44l0.35,4.29l-2.84,3.93h-7.1l-15.26,6.43L761.17,427.98L761.17,427.98M825.74,496.26l-1.77,7.15l0.35,5l5.32-0.36l6.03-9.29L825.74,496.26L825.74,496.26z",name:"Australia"},nz:{path:"M913.02,481.96l1.06,11.8l-1.42,5.36l-5.32,3.93l0.35,4.65v5l1.42,1.79l14.55-12.51v-2.86h-3.55l-4.97-16.8L913.02,481.96L913.02,481.96M902.38,507.7l2.84,5.36l-7.81,7.51l-0.71,3.93l-5.32,0.71l-8.87,8.22l-8.16-3.93l-0.71-2.86l14.9-6.43L902.38,507.7L902.38,507.7z",name:"New Zealand"},nc:{path:"M906.64,420.47l-0.35,1.79l4.61,6.43l2.48,1.07l0.35-2.5L906.64,420.47L906.64,420.47z",name:"New Caledonia"},my:{path:"M764.14,332.92l3.02,3.49l11.58-4.01l2.29-8.84l5.16-0.37l4.72-3.42l-6.12-4.46l-1.4-2.45l-3.02,5.57l1.11,3.2l-1.84,2.67l-3.47-0.89l-8.41,6.17l0.22,3.57L764.14,332.92L764.14,332.92M732.71,315.45l2.01,4.51l0.45,5.86l2.69,4.17l6.49,3.94l2.46,0.23l-0.45-4.06l-2.13-5.18l-3.12-6.63l-0.26,1.16l-3.76-0.17l-2.7-3.88L732.71,315.45L732.71,315.45z",name:"Malaysia"},bn:{path:"M779.77,319.25l-2.88,3.49l2.36,0.74l1.33-1.86L779.77,319.25L779.77,319.25z",name:"Brunei Darussalam"},tl:{path:"M806.14,368.42l-5.11,4.26l0.49,1.09l2.16-0.4l2.55-2.38l5.01-0.69l-0.98-1.68L806.14,368.42L806.14,368.42z",name:"Timor-Leste"},sb:{path:"M895.43,364.65l0.15,2.28l1.39,1.32l1.31-0.81l-1.17-2.43L895.43,364.65L895.43,364.65M897.18,370.31l-1.17,1.25l1.24,2.28l1.46,0.44l-0.07-1.54L897.18,370.31L897.18,370.31M900.03,368.99l1.02,2.5l1.97,2.35l1.09-1.76l-1.46-2.5L900.03,368.99L900.03,368.99M905.14,372.74l0.58,3.09l1.39,1.91l1.17-2.42L905.14,372.74L905.14,372.74M906.74,379.65l-0.51,0.88l1.68,2.21l1.17,0.07l-0.73-2.87L906.74,379.65L906.74,379.65M903.02,384.05l-1.75,0.81l1.53,2.13l1.31-0.74L903.02,384.05L903.02,384.05z",name:"Solomon Islands"},vu:{path:"M920.87,397.22l-1.24,1.66l0.52,1.87l0.62,0.42l1.13-1.46L920.87,397.22L920.87,397.22M921.49,402.31l0.1,1.35l1.34,0.42l0.93-0.52l-0.93-1.46L921.49,402.31L921.49,402.31M923.45,414.37l-0.62,0.94l0.93,1.04l1.55-0.52L923.45,414.37L923.45,414.37z",name:"Vanuatu"},fj:{path:"M948.62,412.29l-1.24,1.66l-0.1,1.87l1.44,1.46L948.62,412.29L948.62,412.29z",name:"Fiji"},ph:{path:"M789.37,297.53l-0.86,1.64l-0.48,2.02l-4.78,6.07l0.29,1.25l2.01-0.29l6.21-6.94L789.37,297.53L789.37,297.53M797.11,295.22l-0.1,5.01l1.82,1.83l0.67,3.56l1.82,0.39l0.86-2.22l-1.43-1.06l-0.38-6.26L797.11,295.22L797.11,295.22M802.28,297.15l-0.1,4.43l1.05,1.73l1.82-2.12l-0.48-3.85L802.28,297.15L802.28,297.15M803.42,293.29l1.82,2.41l0.86,2.31h1.63l-0.29-3.95l-1.82-1.25L803.42,293.29L803.42,293.29M806.96,302.35l0.38,2.89l-3.35,2.7l-2.77,0.29l-2.96,3.18l0.1,1.45l2.77-0.87l1.91-1.25l1.63,4.14l2.87,2.02l1.15-0.39l1.05-1.25l-2.29-2.31l1.34-1.06l1.53,1.25l1.05-1.73l-1.05-2.12l-0.19-4.72L806.96,302.35L806.96,302.35M791.38,272.97l-2.58,1.83l-0.29,5.78l4.02,7.8l1.34,1.06l1.72-1.16l2.96,0.48l0.57,2.6l2.2,0.19l1.05-1.44l-1.34-1.83l-1.63-1.54l-3.44-0.38l-1.82-2.99l2.1-3.18l0.19-2.79l-1.43-3.56L791.38,272.97L791.38,272.97M792.72,290.21l0.76,2.7l1.34,0.87l0.96-1.25l-1.53-2.12L792.72,290.21L792.72,290.21z",name:"Philippines"},cn:{path:"M759.83,270.17l-2.39,0.67l-1.72,2.12l1.43,2.79l2.1,0.19l2.39-2.12l0.57-2.79L759.83,270.17L759.83,270.17M670.4,170.07l-3.46,8.7l-4.77-0.25l-5.03,11.01l4.27,5.44l-8.8,12.15l-4.52-0.76l-3.02,3.8l0.75,2.28l3.52,0.25l1.76,4.05l3.52,0.76l10.81,13.93v7.09l5.28,3.29l5.78-1.01l7.29,4.3l8.8,2.53l4.27-0.51l4.78-0.51l10.05-6.58l3.27,0.51l1.25,2.97l2.77,0.83l3.77,5.57l-2.51,5.57l1.51,3.8l4.27,1.52l0.75,4.56l5.03,0.51l0.75-2.28l7.29-3.8l4.52,0.25l5.28,5.82l3.52-1.52l2.26,0.25l1.01,2.79l1.76,0.25l2.51-3.54l10.05-3.8l9.05-10.89l3.02-10.38l-0.25-6.84l-3.77-0.76l2.26-2.53l-0.5-4.05l-9.55-9.62v-4.81l2.76-3.54l2.76-1.27l0.25-2.79h-7.04l-1.26,3.8l-3.27-0.76l-4.02-4.3l2.51-6.58l3.52-3.8l3.27,0.25l-0.5,5.82l1.76,1.52l4.27-4.3l1.51-0.25l-0.5-3.29l4.02-4.81l3.02,0.25l1.76-5.57l2.06-1.09l0.21-3.47l-2-2.1l-0.17-5.48l3.85-0.25l-0.25-14.13l-2.7,1.62l-1.01,3.62l-4.51-0.01l-13.07-7.35l-9.44-11.38l-9.58-0.1l-2.44,2.12l3.1,7.1l-1.08,6.66l-3.86,1.6l-2.17-0.17l-0.16,6.59l2.26,0.51l4.02-1.77l5.28,2.53v2.53l-3.77,0.25l-3.02,6.58l-2.76,0.25l-9.8,12.91l-10.3,4.56l-7.04,0.51l-4.77-3.29l-6.79,3.55l-7.29-2.28l-1.76-4.81l-12.31-0.76l-6.53-10.63h-2.76l-2.22-4.93L670.4,170.07z",name:"China"},tw:{path:"M787.46,248.31l-3.54,2.7l-0.19,5.2l3.06,3.56l0.76-0.67L787.46,248.31L787.46,248.31z",name:"Taiwan"},jp:{path:"M803.23,216.42l-1.63,1.64l0.67,2.31l1.43,0.1l0.96,5.01l1.15,1.25l2.01-1.83l0.86-3.28l-2.49-3.56L803.23,216.42L803.23,216.42M812.03,213.15l-2.77,2.6l-0.1,2.99l0.67,0.87l3.73-3.18l-0.29-3.18L812.03,213.15L812.03,213.15M808.2,206.98l-4.88,5.59l0.86,1.35l2.39,0.29l4.49-3.47l3.16-0.58l2.87,3.37l2.2-0.77l0.86-3.28l4.11-0.1l4.02-4.82l-2.1-8l-0.96-4.24l2.1-1.73l-4.78-7.22l-1.24,0.1l-2.58,2.89v2.41l1.15,1.35l0.38,6.36l-2.96,3.66l-1.72-1.06l-1.34,2.99l-0.29,2.79l1.05,1.64l-0.67,1.25l-2.2-1.83h-1.53l-1.34,0.77L808.2,206.98L808.2,206.98M816.43,163.44l-1.53,1.35l0.77,2.89l1.34,1.35l-0.1,4.43l-1.72,0.67l-1.34,2.99l3.92,5.39l2.58-0.87l0.48-1.35l-2.77-2.5l1.72-2.22l1.82,0.29l1.43,1.54l0.1-3.18l3.92-3.18l2.2-0.58l-1.82-3.08l-0.86-1.35l-1.43,0.96l-1.24,1.54l-2.68-0.58l-2.77-1.83L816.43,163.44L816.43,163.44z",name:"Japan"},ru:{path:"M506.61,151.72l-1.5-0.15l-2.7,3.23v1.51l0.9,0.35l1.75,0.05l2.9-2.37l0.4-0.81L506.61,151.72L506.61,151.72M830.86,160.45l-2.68,3.76l0.19,1.83l1.34-0.58l3.15-3.95L830.86,160.45L830.86,160.45M834.4,154.96l-0.96,2.6l0.1,1.73l1.63-1.06l1.53-3.08V154L834.4,154.96L834.4,154.96M840.04,132.03l-1.24,1.54l0.1,2.41l1.15-0.1l1.91-3.37L840.04,132.03L840.04,132.03M837.75,137.91v4.24l1.34,0.48l0.96-1.54v-3.27L837.75,137.91L837.75,137.91M798.64,122.59l-0.09,6.17l7.74,11.95l2.77,10.4l4.88,9.25l1.91,0.67l1.63-1.35l0.76-2.22l-6.98-7.61l0.19-3.95l1.53-0.67l0.38-2.31l-13.67-19.36L798.64,122.59L798.64,122.59M852.57,103.42l-1.91,0.19l1.15,1.64l2.39,1.64l0.67-0.77L852.57,103.42L852.57,103.42M856.29,104.58l0.29,1.64l2.96,0.87l0.29-1.16L856.29,104.58L856.29,104.58M547.82,38.79l1.72,0.69l-1.21,2.08v2.95l-2.58,1.56H543l-1.55-1.91l0.17-2.08l1.21-1.56h2.41L547.82,38.79L547.82,38.79M554.36,36.88v2.08l1.72,1.39l2.41-0.17l2.07-1.91v-1.39h-1.89l-1.55,0.52l-1.21-1.39L554.36,36.88L554.36,36.88M564.18,37.06l1.21,2.6l2.41,0.17l1.72-0.69l-0.86-2.43l-2.24-0.52L564.18,37.06L564.18,37.06M573.99,33.59l-1.89-0.35l-1.72,1.74l0.86,1.56l0.52,2.43l2.24-1.73l0.52-1.91L573.99,33.59L573.99,33.59M584.49,51.98l-0.52,2.43l-3.96,3.47l-8.44,1.91l-6.89,11.45l-1.21,3.3l6.89,1.74l1.03-4.16l2.07-6.42l5.34-2.78l4.48-3.47l3.27-1.39h1.72v-4.68L584.49,51.98L584.49,51.98M562.28,77.31l4.65,0.52l1.55,5.38l3.96,4.16l-1.38,2.78h-2.41l-2.24-2.6l-4.99-0.17l-2.07-2.78v-1.91l3.1-0.87L562.28,77.31L562.28,77.31M634.95,18.15l-2.24-1.39h-2.58l-0.52,1.56l-2.75,1.56l-2.07,0.69l-0.34,2.08l4.82,0.35L634.95,18.15L634.95,18.15M640.28,18.67l-1.21,2.6l-2.41-0.17l-3.79,2.78l-1.03,3.47h2.41l1.38-2.26l3.27,2.43l3.1-1.39l2.24-1.91l-0.86-2.95l-1.21-2.08L640.28,18.67L640.28,18.67M645.28,20.58l1.21,4.86l1.89,4.51l2.07-3.64l3.96-0.87v-2.6l-2.58-1.91L645.28,20.58L645.28,20.58M739.76,12.8l2.69,2.26l1.91-0.79l0.56-3.17L741,8.39l-2.58,1.7l-6.28,0.57v2.83l-6.62,0.11v4.63l7.74,5.76l2.02-1.47l-0.45-4.07l4.94-1.24l-1.01-1.92l-1.79-1.81L739.76,12.8L739.76,12.8M746.94,10.09l1.79,3.39l6.96-0.79l1.91-2.49l-0.45-2.15l-1.91-0.79l-1.79,1.36l-5.16,1.13L746.94,10.09L746.94,10.09M746.49,23.31l-3.48-0.9L741,24.56l-0.9,2.94l4.71-0.45l3.59-1.81L746.49,23.31L746.49,23.31M836.68,3.76l-2.92-0.9L830.4,4.1l-1.68,2.49l2.13,2.83l5.61-2.49l1.12-1.24L836.68,3.76L836.68,3.76M817.97,72.93l1.76,6.08l3.52,1.01l3.52-5.57l-2.01-3.8l0.75-3.29h5.28l-1.26,2.53l0.5,9.12l-7.54,18.74l0.75,4.05l-0.25,6.84l14.07,20.51l2.76,0.76l0.25-16.71l2.76-2.53l-3.02-6.58l2.51-2.79l-5.53-7.34l-3.02,0.25l-1-12.15l7.79-2.03l0.5-3.55l4.02-1.01l2.26,2.03l2.76-11.14l4.77-8.1l3.77-2.03l3.27,0.25v-3.8l-5.28-1.01l-7.29-6.08l3.52-4.05l-3.02-6.84l2.51-2.53l3.02,4.05l7.54,2.79l8.29,0.76l1.01-3.54l-4.27-4.3l4.77-6.58l-10.81-3.8l-2.76,5.57l-3.52-4.56l-19.85-6.84l-18.85,3.29l-2.76,1.52v1.52l4.02,2.03l-0.5,4.81l-7.29-3.04l-16.08,6.33l-2.76-5.82h-11.06l-5.03,5.32l-17.84-4.05l-16.33,3.29l-2.01,5.06l2.51,0.76l-0.25,3.8l-15.83,1.77l1.01,5.06l-14.58-2.53l3.52-6.58l-14.83-0.76l1.26,6.84l-4.77,2.28l-4.02-3.8l-16.33,2.79l-6.28,5.82l-0.25,3.54l-4.02,0.25l-0.5-4.05l12.82-11.14v-7.6l-8.29-2.28l-10.81,3.54l-4.52-4.56h-2.01l-2.51,5.06l2.01,2.28l-14.33,7.85l-12.31,9.37l-7.54,10.38v4.3l8.04,3.29l-4.02,3.04l-8.54-3.04l-3.52,3.04l-5.28-6.08l-1.01,2.28l5.78,18.23l1.51,0.51l4.02-2.03l2.01,1.52v3.29l-3.77-1.52l-2.26,1.77l1.51,3.29l-1.26,8.61l-7.79,0.76l-0.5-2.79l4.52-2.79l1.01-7.6l-5.03-6.58l-1.76-11.39l-8.04-1.27l-0.75,4.05l1.51,2.03l-3.27,2.79l1.26,7.6l4.77,2.03l1.01,5.57l-4.78-3.04l-12.31-2.28l-1.51,4.05l-9.8,3.54l-1.51-2.53l-12.82,7.09l-0.25,4.81l-5.03,0.76l1.51-3.54v-3.54l-5.03-1.77l-3.27,1.27l2.76,5.32l2.01,3.54v2.79l-3.77-0.76l-0.75-0.76l-3.77,4.05l2.01,3.54l-8.54-0.25l2.76,3.55l-0.75,1.52h-4.52l-3.27-2.28l-0.75-6.33l-5.28-2.03v-2.53l11.06,2.28l6.03,0.51l2.51-3.8l-2.26-4.05l-16.08-6.33l-5.55,1.38l-1.9,1.63l0.59,3.75l2.36,0.41l-0.55,5.9l7.28,17.1l-5.26,8.34l-0.36,1.88l2.67,1.88l-2.41,1.59l-1.6,0.03l0.3,7.35l2.21,3.13l0.03,3.04l2.83,0.26l4.33,1.65l4.58,6.3l0.05,1.66l-1.49,2.55l3.42-0.19l3.33,0.96l4.5,6.37l11.08,1.01l-0.48,7.58l-3.82,3.27l0.79,1.28l-3.77,4.05l-1,3.8l2.26,3.29l7.29,2.53l3.02-1.77l19.35,7.34l0.75-2.03l-4.02-3.8v-4.81l-2.51-0.76l0.5-4.05l4.02-4.81l-7.21-5.4l0.5-7.51l7.71-5.07l9.05,0.51l1.51,2.79l9.3,0.51l6.79-3.8l-3.52-3.8l0.75-7.09l17.59-8.61l13.53,6.1l4.52-4.05l13.32,12.66l10.05-1.01l3.52,3.54l9.55,1.01l6.28-8.61l8.04,3.55l4.27,0.76l4.27-3.8l-3.77-2.53l3.27-5.06l9.3,3.04l2.01,4.05l4.02,0.25l2.51-1.77l6.79-0.25l0.75,1.77l7.79,0.51l5.28-5.57l10.81,1.27l3.27-1.27l1-6.08l-3.27-7.34l3.27-2.79h10.3l9.8,11.65l12.56,7.09h3.77l0.5-3.04l4.52-2.79l0.5,16.46l-4.02,0.25v4.05l2.26,2.79l-0.42,3.62l1.67,0.69l1.01-2.53l1.51,0.51l1,1.01l4.52-1.01l4.52-13.17l0.5-16.46l-5.78-13.17l-7.29-8.86l-3.52,0.51v2.79l-8.54-3.29l3.27-7.09l2.76-18.74l11.56-3.54l5.53-3.54h6.03L805.86,96l1.51,2.53l5.28-5.57l3.02,0.25l-0.5-3.29l-4.78-1.01l3.27-11.9L817.97,72.93L817.97,72.93z",name:"Russian Federation"},us:{path:"M69.17,53.35l3.46,6.47l2.22-0.5v-2.24L69.17,53.35L69.17,53.35M49.66,110.26l-0.17,3.01l2.16-0.5v-1.34L49.66,110.26L49.66,110.26M46.34,111.6l-4.32,2.18l0.67,2.34l1.66-1.34l3.32-1.51L46.34,111.6L46.34,111.6M28.39,114.44l-2.99-0.67l-0.5,1.34l0.33,2.51L28.39,114.44L28.39,114.44M22.07,114.28l-2.83-1.17l-1,1.84l1.83,1.84L22.07,114.28L22.07,114.28M12.27,111.6l-1.33-1.84l-1.33,0.5v2.51l1.5,1L12.27,111.6L12.27,111.6M1.47,99.71l1.66,1.17l-0.5,1.34H1.47V99.71L1.47,99.71M10,248.7l-0.14,2.33l2.04,1.37l1.22-1.09L10,248.7L10,248.7M15.29,252.13l-1.9,1.37l1.63,2.05l1.9-1.64L15.29,252.13L15.29,252.13M19.1,255.41l-1.63,2.19l0.54,1.37l2.31-1.09L19.1,255.41L19.1,255.41M21.81,259.65l-0.95,5.47l0.95,2.05l3.12-0.96l1.63-2.74l-3.4-3.15L21.81,259.65L21.81,259.65M271.05,281.06l-2.64-0.89l-2.12,1.33l1.06,1.24l3.61,0.53L271.05,281.06L271.05,281.06M93.11,44.89l-8.39,1.99l1.73,9.45l9.13,2.49l0.49,1.99L82.5,65.04l-7.65,12.68l2.71,13.43L82,94.13l3.46-3.23l0.99,1.99l-4.2,4.97l-16.29,7.46l-10.37,2.49l-0.25,3.73l23.94-6.96l9.87-2.74l9.13-11.19l10.12-6.71l-5.18,8.7l5.68,0.75l9.63-4.23l1.73,6.96l6.66,1.49l6.91,6.71l0.49,4.97l-0.99,1.24l1.23,4.72h1.73l0.25-7.96h1.97l0.49,19.64l4.94-4.23l-3.46-20.39h-5.18l-5.68-7.21l27.89-47.25l-27.64-21.63l-30.85,5.97l-1.23,9.45l6.66,3.98l-2.47,6.47L93.11,44.89L93.11,44.89M148.76,158.34l-1,4.02l-3.49-2.26h-1.74l-1,4.27l-12.21,27.36l3.24,23.84l3.99,2.01l0.75,6.53h8.22l7.97,6.02l15.69,1.51l1.74,8.03l2.49,1.76l3.49-3.51l2.74,1.25l2.49,11.54l4.23,2.76l3.49-6.53l10.71-7.78l6.97,3.26l5.98,0.5l0.25-3.76l12.45,0.25l2.49,2.76l0.5,6.27l-1.49,3.51l1.74,6.02h3.74l3.74-5.77l-1.49-2.76l-1.49-6.02l2.24-6.78l10.21-8.78l7.72-2.26l-1-7.28l10.71-11.55l10.71-1.76L272.8,199l10.46-6.02v-8.03l-1-0.5l-3.74,1.25l-0.5,4.92l-12.43,0.15l-9.74,6.47l-15.29,5l-2.44-2.99l6.94-10.5l-3.43-3.27l-2.33-4.44l-4.83-3.88l-5.25-0.44l-9.92-6.77L148.76,158.34L148.76,158.34z",name:"United States of America"},mu:{path:"M613.01,398.99l-1.52,1.99l0.3,2.15l3.2-2.61L613.01,398.99L613.01,398.99z",name:"Mauritius"},re:{path:"M607.38,402.37l-2.28,0.15l-0.15,1.99l1.52,0.31l2.28-1.07L607.38,402.37L607.38,402.37z",name:"Reunion"},mg:{path:"M592.3,372.92l-2.13,5.06l-3.65,6.44l-6.39,0.46l-2.74,3.22l0.46,9.82l-3.96,4.6l0.46,7.82l3.35,3.83l3.96-0.46l3.96-2.92l-0.91-4.6l9.13-15.8l-1.83-1.99l1.83-3.83l1.98,0.61l0.61-1.53l-1.83-7.82l-1.07-3.22L592.3,372.92L592.3,372.92z",name:"Madagascar"},km:{path:"M577.69,371.23l0.46,1.53l1.98,0.31l0.76-1.99L577.69,371.23L577.69,371.23M580.58,374.3l0.76,1.69h1.22l0.61-2.15L580.58,374.3L580.58,374.3z",name:"Comoros"},sc:{path:"M602.35,358.34l-0.61,1.23l1.67,1.38l1.22-1.38L602.35,358.34L602.35,358.34M610.88,349.14l-1.83,1.23l1.37,2.15h1.83L610.88,349.14L610.88,349.14M611.64,354.51l-1.22,1.38l0.91,1.38l1.67,0.31l0.15-2.92L611.64,354.51L611.64,354.51z",name:"Seychelles"},mv:{path:"M656.4,320.76l0.3,2.61l1.67,0.61l0.3-2.3L656.4,320.76L656.4,320.76M658.53,326.28l-0.15,3.22l1.22,0.61l1.07-2.15L658.53,326.28L658.53,326.28M658.84,332.57l-1.07,1.07l1.22,1.07l1.52-1.07L658.84,332.57L658.84,332.57z",name:"Maldives"},pt:{path:"M372.64,217.02l-1.36,1.37l2.44,1.37l0.27-1.91L372.64,217.02L372.64,217.02M379.97,216.2l-1.63,1.09l1.36,1.09l2.17-0.55L379.97,216.2L379.97,216.2M381.05,220.03l-0.81,2.19l1.08,1.37l1.36-1.09L381.05,220.03L381.05,220.03M387.56,224.4l-0.54,1.37l0.81,0.82l2.17-1.37L387.56,224.4L387.56,224.4M408.18,236.42l-1.08,1.37l1.08,1.37l1.63-0.82L408.18,236.42L408.18,236.42M430.93,211.24l-0.62,8.65l-1.77,1.6l0.18,0.98l1.24,2.05l-0.8,2.5l1.33,0.45l3.1-0.36l-0.18-2.5l2.03-11.59l-0.44-1.6L430.93,211.24L430.93,211.24z",name:"Portugal"},es:{path:"M415.62,253.73l-1.75,1.01l0.81,0.82L415.62,253.73L415.62,253.73M409.54,253.92l-2.17,0.55l1.08,1.64h1.63L409.54,253.92L409.54,253.92M404.38,252.28l-1.36,1.37l1.9,1.64l1.08-2.46L404.38,252.28L404.38,252.28M448.36,205h-12.74l-2.57-1.16l-1.24,0.09l-1.5,3.12l0.53,3.21l4.87,0.45l0.62,2.05l-2.12,11.95l0.09,2.14l3.45,1.87l3.98,0.27l7.96-1.96l3.89-4.9l0.09-4.99l6.9-6.24l0.35-2.76l-6.28-0.09L448.36,205L448.36,205M461.1,217.21l-1.59,0.54l0.35,1.43h2.3l0.97-1.07L461.1,217.21L461.1,217.21z",name:"Spain"},cv:{path:"M387.56,290.54l-1.9,1.09l1.36,1.09l1.63-0.82L387.56,290.54L387.56,290.54M392.23,292.74l-1.24,1.1l0.88,1.63l2.12-0.95L392.23,292.74L392.23,292.74M389.52,295.83l-1.59,0.95l1.71,2.29l1.35-0.71L389.52,295.83L389.52,295.83z",name:"Cape Verde"},pf:{path:"M27.25,402.68l-1.9-0.14l-0.14,1.78l1.49,0.96l1.77-1.09L27.25,402.68L27.25,402.68M33.77,404.6l-2.72,1.78l2.04,2.46l1.77-0.41l0.95-1.23L33.77,404.6L33.77,404.6z",name:"French Polynesia"},kn:{path:"M276.6,283.37l-1.5,0.62l0.53,1.33l1.76-1.15l-0.35-0.36L276.6,283.37L276.6,283.37z",name:"Saint Kitts and Nevis"},ag:{path:"M279.07,284.88l-0.88,1.87l1.06,1.42l1.32-1.15L279.07,284.88L279.07,284.88z",name:"Antigua and Barbuda"},dm:{path:"M282.07,290.03l-1.06,0.98l0.79,1.6l1.5-0.44L282.07,290.03L282.07,290.03z",name:"Dominica"},lc:{path:"M281.98,294.03l-0.71,1.51l1.15,1.24l1.5-0.8L281.98,294.03L281.98,294.03z",name:"Saint Lucia"},bb:{path:"M282.07,297.85l-1.23,0.89l0.97,1.78l1.59-0.89L282.07,297.85L282.07,297.85z",name:"Barbados"},gd:{path:"M280.57,301.31l-1.15,1.15l0.44,0.71h1.41l0.44-1.16L280.57,301.31L280.57,301.31z",name:"Grenada"},tt:{path:"M282.24,304.78l-1.06,0.98l-1.15,0.18v1.42l2.12,1.95l0.88-1.42l0.53-1.6l-0.18-1.33L282.24,304.78L282.24,304.78z",name:"Trinidad and Tobago"},do:{path:"M263.11,280.44l-5.29-3.46l-2.5-0.85l-0.84,6l0.88,1.69l1.15-1.33l3.35-0.89l2.91,0.62L263.11,280.44L263.11,280.44z",name:"Dominican Republic"},ht:{path:"M250.86,275.38l3.44,0.36l-0.41,4.22l-0.34,2.22l-4.01-0.22l-0.71,1.07l-1.23-0.09l-0.44-2.31l4.23-0.35l-0.26-2.4l-1.94-0.8L250.86,275.38L250.86,275.38z",name:"Haiti"},fk:{path:"M307.95,508.18l-2.63-0.29l-2.62,1.76l1.9,2.06L307.95,508.18L307.95,508.18M310.57,506.86l-0.87,2.79l-2.48,2.2l0.15,0.73l4.23-1.62l1.75-2.2L310.57,506.86L310.57,506.86z",name:"Falkland Islands"},is:{path:"M406.36,117.31l-1.96-1.11l-2.64,1.67l-2.27,2.1l0.06,1.17l2.94,0.37l-0.18,2.1l-1.04,1.05l0.25,0.68l2.94,0.19v3.4l4.23,0.74l2.51,1.42l2.82,0.12l4.84-2.41l3.74-4.94l0.06-3.34l-2.27-1.92l-1.9-1.61l-0.86,0.62l-1.29,1.67l-1.47-0.19l-1.47-1.61l-1.9,0.18l-2.76,2.29l-1.66,1.79l-0.92-0.8l-0.06-1.98l0.92-0.62L406.36,117.31L406.36,117.31z",name:"Iceland"},no:{path:"M488.26,53.96l-1.65-1.66l-3.66,1.78h-6.72L475.17,58l3.77,3.33l1.65-0.24l2.36-4.04l2,1.43l-1.42,2.85l-0.71,4.16l1.65,2.61l3.54-5.94l4.6-5.59l-1.77-1.54L488.26,53.96L488.26,53.96M490.26,46.83l-2.95,2.73l1.77,2.73h3.18l1.3,1.78l3.89,2.02l4.48-2.61l3.07-2.61l-1.06-2.14l-3.07-1.78l-2.24,2.02l-1.53-1.9l-1.18,0.12l-1.53,3.33l-2.24-2.26l-0.24-1.54L490.26,46.83L490.26,46.83M496.98,59.07l-2.36,2.14l-2,1.54l0.94,1.66l1.89,0.59l3.07-1.43l1.42-1.78l-1.3-2.14L496.98,59.07L496.98,59.07M515.46,102.14l2.02-1.48L517.3,99l-1.28-0.74l0.18-2.03h1.1v-1.11l-4.77-1.29l-7.15,0.74l-0.73,3.14L503,97.16l-1.1-1.85l-3.49,0.18L498.04,99l-1.65,0.74l-0.92-1.85l-7.34,5.91l1.47,1.66l-2.75,1.29l-6.24,12.38l-2.2,1.48l0.18,1.11l2.2,1.11l-0.55,2.4l-3.67-0.19l-1.1-1.29l-2.38,2.77l-1.47,1.11l-0.37,2.59l-1.28,0.74l-3.3,0.74l-1.65,5.18l1.1,8.5l1.28,3.88l1.47,1.48l3.3-0.18l4.77-4.62l1.83-3.14l0.55,4.62l3.12-5.54l0.18-15.53l2.54-1.6l0.76-8.57l7.7-11.09l3.67-1.29l1.65-2.03l5.5,1.29l2.75,1.66l0.92-4.62l4.59-2.77L515.46,102.14L515.46,102.14z", +name:"Norway"},lk:{path:"M680.54,308.05l0.25,2.72l0.25,1.98l-1.47,0.25l0.74,4.45l2.21,1.24l3.43-1.98l-0.98-4.69l0.25-1.73l-3.19-2.96L680.54,308.05L680.54,308.05z",name:"Sri Lanka"},cu:{path:"M220.85,266.92v1.27l5.32,0.1l2.51-1.46l0.39,1.07l5.22,1.27l4.64,4.19l-1.06,1.46l0.19,1.66l3.87,0.97l3.87-1.75l1.74-1.75l-2.51-1.27l-12.95-7.6l-4.54-0.49L220.85,266.92L220.85,266.92z",name:"Cuba"},bs:{path:"M239.61,259.13l-1.26-0.39l-0.1,2.43l1.55,1.56l1.06-1.56L239.61,259.13L239.61,259.13M242.12,262.93l-1.74,0.97l1.64,2.34l0.87-1.17L242.12,262.93L242.12,262.93M247.73,264.68l-1.84-0.1l0.19,1.17l1.35,1.95l1.16-1.27L247.73,264.68L247.73,264.68M246.86,262.35l-3-1.27l-0.58-3.02l1.16-0.49l1.16,2.34l1.16,0.88L246.86,262.35L246.86,262.35M243.96,256.21l-1.55-0.39l-0.29-1.95l-1.64-0.58l1.06-1.07l1.93,0.68l1.45,0.88L243.96,256.21L243.96,256.21z",name:"Bahamas"},jm:{path:"M238.93,279.59l-3.48,0.88v0.97l2.03,1.17h2.13l1.35-1.56L238.93,279.59L238.93,279.59z",name:"Jamaica"},ec:{path:"M230.2,335.85l-4.73,2.94l-0.34,4.36l-0.95,1.43l2.98,2.86l-1.29,1.41l0.3,3.6l5.33,1.27l8.07-9.55l-0.02-3.33l-3.87-0.25L230.2,335.85L230.2,335.85z",name:"Ecuador"},ca:{path:"M203.73,35.89l0.22,4.02l-7.98,8.27l2,6.7l5.76-1.56l3.33-4.92l8.42-3.13l6.87-0.45l-5.32-5.81l-2.66,2.01l-2-0.67l-1.11-2.46l-2.44-2.46L203.73,35.89L203.73,35.89M214.15,24.05l-1.77,3.13l8.65,3.13l3.1-4.69l1.33,3.13h2.22l4.21-4.69l-5.1-1.34l-2-1.56l-2.66,2.68L214.15,24.05L214.15,24.05M229.23,30.31l-6.87,2.9v2.23l8.87,3.35l-2,2.23l1.33,2.9l5.54-2.46h4.66l2.22,3.57l3.77-3.8l-0.89-3.58l-3.1,1.12l-0.44-4.47l1.55-2.68h-1.55l-2.44,1.56l-1.11,0.89l0.67,3.13l-1.77,1.34l-2.66-0.22l-0.67-4.02L229.23,30.31L229.23,30.31M238.32,23.38l-0.67,2.23l4.21,2.01l3.1-1.79l-0.22-1.34L238.32,23.38L238.32,23.38M241.64,19.58l-3.1,1.12l0.22,1.56l6.87-0.45l-0.22-1.56L241.64,19.58L241.64,19.58M256.5,23.38l-0.44,1.56l-1.11,1.56v2.23l4.21-0.67l4.43,3.8h1.55v-3.8l-4.43-4.92L256.5,23.38L256.5,23.38M267.81,27.85l1.77,2.01l-1.55,2.68l1.11,2.9l4.88-2.68v-2.01l-2.88-3.35L267.81,27.85L267.81,27.85M274.24,22.71l0.22,3.57h5.99l1.55,1.34l-0.22,1.56l-5.32,0.67l3.77,5.14l5.1,0.89l7.09-3.13l-10.2-15.42l-3.1,2.01l0.22,2.68l-3.55-1.34L274.24,22.71L274.24,22.71M222.58,47.96l-8.42,2.23l-4.88,4.25l0.44,4.69l8.87,2.68l-2,4.47l-6.43-4.02l-1.77,3.35l4.21,2.9l-0.22,4.69l6.43,1.79l7.76-0.45l1.33-2.46l5.76,6.48l3.99-1.34l0.67-4.47l2.88,2.01l0.44-4.47l-3.55-2.23l0.22-14.07l-3.1-2.46L231.89,56L222.58,47.96L222.58,47.96M249.63,57.79l-2.88-1.34l-1.55,2.01l3.1,4.92l0.22,4.69l6.65-4.02v-5.81l2.44-2.46l-2.44-1.79h-3.99L249.63,57.79L249.63,57.79M263.82,55.78l-4.66,3.8l1.11,4.69h2.88l1.33-2.46l2,2.01l2-0.22l5.32-4.47L263.82,55.78L263.82,55.78M263.37,48.4l-1.11,2.23l4.88,1.79l1.33-2.01L263.37,48.4L263.37,48.4M260.49,39.91l-4.88,0.67l-2.88,2.68l5.32,0.22l-1.55,4.02l1.11,1.79l1.55-0.22l3.77-6.03L260.49,39.91L260.49,39.91M268.92,38.35l-2.66,0.89l0.44,3.57l4.43,2.9l0.22,2.23l-1.33,1.34l0.67,4.47l17.07,5.58l4.66,1.56l4.66-4.02l-5.54-4.47l-5.1,1.34l-7.09-0.67l-2.66-2.68l-0.67-7.37l-4.43-2.23L268.92,38.35L268.92,38.35M282.88,61.59L278,61.14l-5.76,2.23l-3.1,4.24l0.89,11.62l9.53,0.45l9.09,4.47l6.43,7.37l4.88-0.22l-1.33,6.92l-4.43,7.37l-4.88,2.23l-3.55-0.67l-1.77-1.56l-2.66,3.57l1.11,3.57l3.77,0.22l4.66-2.23l3.99,10.28l9.98,6.48l6.87-8.71l-5.76-9.38l3.33-3.8l4.66,7.82l8.42-7.37l-1.55-3.35l-5.76,1.79l-3.99-10.95l3.77-6.25l-7.54-8.04l-4.21,2.9l-3.99-8.71l-8.42,1.12l-2.22-10.5l-6.87,4.69l-0.67,5.81h-3.77l0.44-5.14L282.88,61.59L282.88,61.59M292.86,65.61l-1.77,1.79l1.55,2.46l7.32,0.89l-4.66-4.92L292.86,65.61L292.86,65.61M285.77,40.36v2.01l-4.88,1.12l1.33,2.23l5.54,2.23l6.21,0.67l4.43,3.13l4.43-2.46l-3.1-3.13h3.99l2.44-2.68l5.99-0.89v-1.34l-3.33-2.23l0.44-2.46l9.31,1.56l13.75-5.36l-5.1-1.56l1.33-1.79h10.64l1.77-1.79l-21.51-7.6l-5.1-1.79l-5.54,4.02l-6.21-5.14l-3.33-0.22l-0.67,4.25l-4.21-3.8l-4.88,1.56l0.89,2.46l7.32,1.56l-0.44,3.57l3.99,2.46l9.76-2.46l0.22,3.35l-7.98,3.8l-4.88-3.8l-4.43,0.45l4.43,6.26l-2.22,1.12l-3.33-2.9l-2.44,1.56l2.22,4.24h3.77l-0.89,4.02l-3.1-0.45l-3.99-4.25L285.77,40.36L285.77,40.36M266.01,101.85l-4.23,5.32l-0.26,5.86l3.7-2.13h4.49l3.17,2.93l2.91-2.4L266.01,101.85L266.01,101.85M317.52,171.05l-10.57,10.12l1.06,2.4l12.94,4.79l1.85-3.19l-1.06-5.32l-4.23,0.53l-2.38-2.66l3.96-3.99L317.52,171.05L317.52,171.05M158.22,48.66l1.99,3.01l1,4.02l4.98,1.25l3.49-3.76l2.99,1.51l8.47,0.75l5.98-2.51l1,8.28h3.49V57.7l3.49,0.25l8.72,10.29l5.73,3.51l-2.99,4.77l1.25,1.25L219,80.03l0.25,5.02l2.99,0.5l0.75-7.53l4.73-1.25l3.49,5.27l7.47,3.51l3.74,0.75l2.49-3.01l0.25-4.77l4.48-2.76l1.49,4.02l-3.99,7.03l0.5,3.51l2.24-3.51l4.48-4.02l0.25-5.27l-2.49-4.02l0.75-3.26l5.98-3.01l2.74,2.01l0.5,17.57l4.23-3.76l2.49,1.51l-3.49,6.02l4.48,1l6.48-10.04l5.48,5.77l-2.24,10.29l-5.48,3.01l-5.23-2.51l-9.46,2.01l1,3.26l-2.49,4.02l-7.72,1.76l-8.72,6.78l-7.72,10.29l-1,3.26l5.23,2.01l1.99,5.02l7.22,7.28l11.46,5.02l-2.49,11.54l-0.25,3.26l2.99,2.01l3.99-5.27l0.5-10.04l6.23-0.25l2.99-5.77l0.5-8.78l7.97-15.56l9.96,3.51l5.23,7.28l-2.24,7.28l3.99,2.26l9.71-6.53l2.74,17.82l8.97,10.79l0.25,5.52l-9.96,2.51l-4.73,5.02l-9.96-2.26l-4.98-0.25l-8.72,6.78l5.23-1.25l6.48-1.25l1.25,1.51l-1.74,5.52l0.25,5.02l2.99,2.01l2.99-0.75l1.5-2.26h1.99l-3.24,6.02l-6.23,0.25l-2.74,4.02h-3.49l-1-3.01l4.98-5.02l-5.98,2.01l-0.27-8.53l-1.72-1l-5.23,2.26l-0.5,4.27h-11.96l-10.21,7.03l-13.7,4.52l-1.49-2.01l6.9-10.3l-3.92-3.77l-2.49-4.78l-5.07-3.87l-5.44-0.45l-9.75-6.83l-70.71-11.62l-1.17-4.79l-6.48-6.02v-5.02l1-4.52l-0.5-2.51l-2.49-2.51l-0.5-4.02l6.48-4.52l-3.99-21.58l-5.48-0.25l-4.98-6.53L158.22,48.66L158.22,48.66M133.83,128.41l-1.7,3.26l0.59,2.31l1.11,0.69l-0.26,0.94l-1.19,0.34l0.34,3.43l1.28,1.29l1.02-1.11l-1.28-3.34l0.76-2.66l1.87-2.49l-1.36-2.31L133.83,128.41L133.83,128.41M139.45,147.95l-1.53,0.6l2.81,3.26l0.68,3.86l2.81,3l2.38-0.43v-3.94l-2.89-1.8L139.45,147.95L139.45,147.95z",name:"Canada"},gt:{path:"M194.88,291.52l5.93,4.34l5.98-7.43l-1.02-1.54l-2.04-0.07v-4.35l-1.53-0.93l-4.63,1.38l1.77,4.08L194.88,291.52L194.88,291.52z",name:"Guatemala"},hn:{path:"M207.55,288.78l9.24-0.35l2.74,3.26l-1.71-0.39l-3.29,0.14l-4.3,4.04l-1.84,4.09l-1.21-0.64l-0.01-4.48l-2.66-1.78L207.55,288.78L207.55,288.78z",name:"Honduras"},sv:{path:"M201.65,296.27l4.7,2.34l-0.07-3.71l-2.41-1.47L201.65,296.27L201.65,296.27z",name:"El Salvador"},ni:{path:"M217.74,292.11l2.19,0.44l0.07,4.49l-2.55,7.28l-6.87-0.68l-1.53-3.51l2.04-4.26l3.87-3.6L217.74,292.11L217.74,292.11z",name:"Nicaragua"},cr:{path:"M217.38,304.98l1.39,2.72l1.13,1.5l-1.52,4.51l-2.9-2.04l-4.74-4.34v-2.87L217.38,304.98L217.38,304.98z",name:"Costa Rica"},pa:{path:"M220.59,309.61l-1.46,4.56l4.82,1.25l2.99,0.59l0.51-3.53l3.21-1.62l2.85,1.47l1.12,1.79l1.36-0.16l1.07-3.25l-3.56-1.47l-2.7-1.47l-2.7,1.84l-3.21,1.62l-3.28-1.32L220.59,309.61L220.59,309.61z",name:"Panama"},co:{path:"M253.73,299.78l-2.06-0.21l-13.62,11.23l-1.44,3.95l-1.86,0.21l0.83,8.73l-4.75,11.65l5.16,4.37l6.61,0.42l4.54,6.66l6.6,0.21l-0.21,4.99H256l2.68-9.15l-2.48-3.12l0.62-5.82l5.16-0.42l-0.62-13.52l-11.56-3.74l-2.68-7.28L253.73,299.78L253.73,299.78z",name:"Colombia"},ve:{path:"M250.46,305.92l0.44,2.59l3.25,1.03l0.74-4.77l3.43-3.55l3.43,4.02l7.89,2.15l6.68-1.4l4.55,5.61l3.43,2.15l-3.76,5.73l1.26,4.34l-2.15,2.66l-2.23,1.87l-4.83-2.43l-1.11,1.12v3.46l3.53,1.68l-2.6,2.81l-2.6,2.81l-3.43-0.28l-3.45-3.79l-0.73-14.26l-11.78-4.02l-2.14-6.27L250.46,305.92L250.46,305.92z",name:"Venezuela"},gy:{path:"M285.05,314.13l7.22,6.54l-2.87,3.32l-0.23,1.97l3.77,3.89l-0.09,3.74l-6.56,2.5l-3.93-5.31l0.84-6.38l-1.68-4.75L285.05,314.13L285.05,314.13z",name:"Guyana"},sr:{path:"M293.13,321.14l2.04,1.87l3.16-1.96l2.88,0.09l-0.37,1.12l-1.21,2.52l-0.19,6.27l-5.75,2.34l0.28-4.02l-3.71-3.46l0.19-1.78L293.13,321.14L293.13,321.14z",name:"Suriname"},gf:{path:"M302.13,321.8l5.85,3.65l-3.06,6.08l-1.11,1.4l-3.25-1.87l0.09-6.55L302.13,321.8L302.13,321.8z",name:"French Guiana"},pe:{path:"M225.03,349.52l-1.94,1.96l0.13,3.13l16.94,30.88l17.59,11.34l2.72-4.56l0.65-10.03l-1.42-6.25l-4.79-8.08l-2.85,0.91l-1.29,1.43l-5.69-6.52l1.42-7.69l6.6-4.3l-0.52-4.04l-6.72-0.26l-3.49-5.86l-1.94-0.65l0.13,3.52l-8.66,10.29l-6.47-1.56L225.03,349.52L225.03,349.52z",name:"Peru"},bo:{path:"M258.71,372.79l8.23-3.59l2.72,0.26l1.81,7.56l12.54,4.17l2.07,6.39l5.17,0.65l2.2,5.47l-1.55,4.95l-8.41,0.65l-3.1,7.95l-6.6-0.13l-2.07-0.39l-3.81,3.7l-1.88-0.18l-6.47-14.99l1.79-2.68l0.63-10.6l-1.6-6.31L258.71,372.79L258.71,372.79z",name:"Bolivia"},py:{path:"M291.76,399.51l2.2,2.4l-0.26,5.08l6.34-0.39l4.79,6.13l-0.39,5.47l-3.1,4.69l-6.34,0.26l-0.26-2.61l1.81-4.3l-6.21-3.91h-5.17l-3.88-4.17l2.82-8.06L291.76,399.51L291.76,399.51z",name:"Paraguay"},uy:{path:"M300.36,431.93l-2.05,2.19l0.85,11.78l6.44,1.87l8.19-8.21L300.36,431.93L300.36,431.93z",name:"Uruguay"},ar:{path:"M305.47,418.2l1.94,1.82l-7.37,10.95l-2.59,2.87l0.9,12.51l5.69,6.91l-4.78,8.34l-3.62,1.56h-4.14l1.16,6.51l-6.47,2.22l1.55,5.47l-3.88,12.38l4.79,3.91l-2.59,6.38l-4.4,6.91l2.33,4.82l-5.69,0.91l-4.66-5.73l-0.78-17.85l-7.24-30.32l2.19-10.6l-4.66-13.55l3.1-17.59l2.85-3.39l-0.7-2.57l3.66-3.34l8.16,0.56l4.56,4.87l5.27,0.09l5.4,3.3l-1.59,3.72l0.38,3.76l7.65-0.36L305.47,418.2L305.47,418.2M288.92,518.79l0.26,5.73l4.4-0.39l3.75-2.48l-6.34-1.3L288.92,518.79L288.92,518.79z",name:"Argentina"},cl:{path:"M285.04,514.1l-4.27,9.38l7.37,0.78l0.13-6.25L285.04,514.1L285.04,514.1M283.59,512.63l-3.21,3.55l-0.39,4.17l-6.21-3.52l-6.6-9.51l-1.94-3.39l2.72-3.52l-0.26-4.43l-3.1-1.3l-2.46-1.82l0.52-2.48l3.23-0.91l0.65-14.33l-5.04-2.87l-3.29-74.59l0.85-1.48l6.44,14.85l2.06,0.04l0.67,2.37l-2.74,3.32l-3.15,17.87l4.48,13.76l-2.07,10.42l7.3,30.64l0.77,17.92l5.23,6.05L283.59,512.63L283.59,512.63M262.28,475.14l-1.29,1.95l0.65,3.39l1.29,0.13l0.65-4.3L262.28,475.14L262.28,475.14z",name:"Chile"},br:{path:"M314.24,438.85l6.25-12.02l0.23-10.1l11.66-7.52h6.53l5.13-8.69l0.93-16.68l-2.1-4.46l12.36-11.28l0.47-12.45l-16.79-8.22l-20.28-6.34l-9.56-0.94l2.57-5.4l-0.7-8.22l-2.09-0.69l-3.09,6.14l-1.62,2.03l-4.16-1.84l-13.99,4.93l-4.66-5.87l0.75-6.13l-4.4,4.48l-4.86-2.62l-0.49,0.69l0.01,2.13l4.19,2.25l-6.29,6.63l-3.97-0.04l-4.02-4.09l-4.55,0.14l-0.56,4.86l2.61,3.17l-3.08,9.87l-3.6,0.28l-5.73,3.62l-1.4,7.11l4.97,5.32l0.91-1.03l3.49-0.94l2.98,5.02l8.53-3.66l3.31,0.19l2.28,8.07l12.17,3.86l2.1,6.44l5.18,0.62l2.47,6.15l-1.67,5.47l2.18,2.86l-0.32,4.26l5.84-0.55l5.35,6.76l-0.42,4.75l3.17,2.68l-7.6,11.51L314.24,438.85L314.24,438.85z",name:"Brazil"},bz:{path:"M204.56,282.4l-0.05,3.65h0.84l2.86-5.34h-1.94L204.56,282.4L204.56,282.4z",name:"Belize"},mn:{path:"M673.8,170.17l5.82-7.72l6.99,3.23l4.75,1.27l5.82-5.34l-3.95-2.91l2.6-3.67l7.76,2.74l2.69,4.41l4.86,0.13l2.54-1.89l5.23-0.21l1.14,1.94l8.69,0.44l5.5-5.61l7.61,0.8l-0.44,7.64l3.33,0.76l4.09-1.86l4.33,2.14l-0.1,1.08l-3.14,0.09l-3.27,6.86l-2.54,0.25l-9.88,12.91l-10.09,4.45l-6.31,0.49l-5.24-3.38l-6.7,3.58l-6.6-2.05l-1.87-4.79l-12.5-0.88l-6.4-10.85l-3.11-0.2L673.8,170.17L673.8,170.17z",name:"Mongolia"},kp:{path:"M778.28,194.27l1.84,0.77l0.56,6.44l3.65,0.21l3.44-4.03l-1.19-1.06l0.14-4.32l3.16-3.82l-1.61-2.9l1.05-1.2l0.58-3l-1.83-0.83l-1.56,0.79l-1.93,5.86l-3.12-0.27l-3.61,4.26L778.28,194.27L778.28,194.27z",name:"North Korea"},kr:{path:"M788.34,198.2l6.18,5.04l1.05,4.88l-0.21,2.62l-3.02,3.4l-2.6,0.14l-2.95-6.37l-1.12-3.04l1.19-0.92l-0.28-1.27l-1.47-0.66L788.34,198.2L788.34,198.2z",name:"South Korea"},kz:{path:"M576.69,188.62l4.1-1.75l4.58-0.16l0.32,7h-2.68l-2.05,3.34l2.68,4.45l3.95,2.23l0.36,2.55l1.45-0.48l1.34-1.59l2.21,0.48l1.11,2.23h2.84v-2.86l-1.74-5.09l-0.79-4.13l5.05-2.23l6.79,1.11l4.26,4.29l9.63-0.95l5.37,7.63l6.31,0.32l1.74-2.86l2.21-0.48l0.32-3.18l3.31-0.16l1.74,2.07l1.74-4.13l14.99,2.07l2.52-3.34l-4.26-5.25l5.68-12.4l4.58,0.32l3.16-7.63l-6.31-0.64l-3.63-3.5l-10,1.16l-12.88-12.45l-4.54,4.03l-13.77-6.25l-16.89,8.27l-0.47,5.88l3.95,4.61l-7.7,4.35l-9.99-0.22l-2.09-3.07l-7.83-0.43l-7.42,4.77l-0.16,6.52L576.69,188.62L576.69,188.62z",name:"Kazakhstan"},tm:{path:"M593.85,207.59l-0.62,2.63h-4.15v3.56l4.46,2.94l-1.38,4.03v1.86l1.85,0.31l2.46-3.25l5.54-1.24l11.84,4.49l0.15,3.25l6.61,0.62l7.38-7.75l-0.92-2.48l-4.92-1.08l-13.84-8.99l-0.62-3.25h-5.23l-2.31,4.34h-2.31L593.85,207.59L593.85,207.59z",name:"Turkmenistan"},uz:{path:"M628.92,219.06l3.08,0.16v-5.27l-2.92-1.7l4.92-6.2h2l2,2.33l5.23-2.01l-7.23-2.48l-0.28-1.5l-1.72,0.42l-1.69,2.94l-7.29-0.24l-5.35-7.57l-9.4,0.93l-4.48-4.44l-6.2-1.05l-4.5,1.83l2.61,8.68l0.03,2.92l1.9,0.04l2.33-4.44l6.2,0.08l0.92,3.41l13.29,8.82l5.14,1.18L628.92,219.06L628.92,219.06z",name:"Uzbekistan"},tj:{path:"M630.19,211.84l4.11-5.1h1.55l0.54,1.14l-1.9,1.38v1.14l1.25,0.9l6.01,0.36l1.96-0.84l0.89,0.18l0.6,1.92l3.57,0.36l1.79,3.78l-0.54,1.14l-0.71,0.06l-0.71-1.44l-1.55-0.12l-2.68,0.36l-0.18,2.52l-2.68-0.18l0.12-3.18l-1.96-1.92l-2.98,2.46l0.06,1.62l-2.62,0.9h-1.55l0.12-5.58L630.19,211.84L630.19,211.84z",name:"Tajikistan"},kg:{path:"M636.81,199.21l-0.31,2.53l0.25,1.56l8.7,2.92l-7.64,3.08l-0.87-0.72l-1.65,1.06l0.08,0.58l0.88,0.4l5.36,0.14l2.72-0.82l3.49-4.4l4.37,0.76l5.27-7.3l-14.1-1.92l-1.95,4.73l-2.46-2.64L636.81,199.21L636.81,199.21z",name:"Kyrgyz Republic"},af:{path:"M614.12,227.05l1.59,12.46l3.96,0.87l0.37,2.24l-2.84,2.37l5.29,4.27l10.28-3.7l0.82-4.38l6.47-4.04l2.48-9.36l1.85-1.99l-1.92-3.34l6.26-3.87l-0.8-1.12l-2.89,0.18l-0.26,2.66l-3.88-0.04l-0.07-3.55l-1.25-1.49l-2.1,1.91l0.06,1.75l-3.17,1.2l-5.85-0.37l-7.6,7.96L614.12,227.05L614.12,227.05z",name:"Afghanistan"},pk:{path:"M623.13,249.84l2.6,3.86l-0.25,1.99l-3.46,1.37l-0.25,3.24h3.96l1.36-1.12h7.54l6.8,5.98l0.87-2.87h5.07l0.12-3.61l-5.19-4.98l1.11-2.74l5.32-0.37l7.17-14.95l-3.96-3.11l-1.48-5.23l9.64-0.87l-5.69-8.1l-3.03-0.82l-1.24,1.5l-0.93,0.07l-5.69,3.61l1.86,3.12l-2.1,2.24l-2.6,9.59l-6.43,4.11l-0.87,4.49L623.13,249.84L623.13,249.84z",name:"Pakistan"},in:{path:"M670.98,313.01l4.58-2.24l2.72-9.84l-0.12-12.08l15.58-16.82v-3.99l3.21-1.25l-0.12-4.61l-3.46-6.73l1.98-3.61l4.33,3.99l5.56,0.25v2.24l-1.73,1.87l0.37,1l2.97,0.12l0.62,3.36h0.87l2.23-3.99l1.11-10.46l3.71-2.62l0.12-3.61l-1.48-2.87l-2.35-0.12l-9.2,6.08l0.58,3.91l-6.46-0.02l-2.28-2.79l-1.24,0.16l0.42,3.88l-13.97-1l-8.66-3.86l-0.46-4.75l-5.77-3.58l-0.07-7.37l-3.96-4.53l-9.1,0.87l0.99,3.96l4.46,3.61l-7.71,15.78l-5.16,0.39l-0.85,1.9l5.08,4.7l-0.25,4.75l-5.19-0.08l-0.56,2.36l4.31-0.19l0.12,1.87l-3.09,1.62l1.98,3.74l3.83,1.25l2.35-1.74l1.11-3.11l1.36-0.62l1.61,1.62l-0.49,3.99l-1.11,1.87l0.25,3.24L670.98,313.01L670.98,313.01z",name:"India"},np:{path:"M671.19,242.56l0.46,4.27l8.08,3.66l12.95,0.96l-0.49-3.13l-8.65-2.38l-7.34-4.37L671.19,242.56L671.19,242.56z",name:"Nepal"},bt:{path:"M695.4,248.08l1.55,2.12l5.24,0.04l-0.53-2.9L695.4,248.08L695.4,248.08z",name:"Bhutan"},bd:{path:"M695.57,253.11l-1.31,2.37l3.4,6.46l0.1,5.04l0.62,1.35l3.99,0.07l2.26-2.17l1.64,0.99l0.33,3.07l1.31-0.82l0.08-3.92l-1.1-0.13l-0.69-3.33l-2.78-0.1l-0.69-1.85l1.7-2.27l0.03-1.12h-4.94L695.57,253.11L695.57,253.11z",name:"Bangladesh"},mm:{path:"M729.44,303.65l-2.77-4.44l2.01-2.82l-1.9-3.49l-1.79-0.34l-0.34-5.86l-2.68-5.19l-0.78,1.24l-1.79,3.04l-2.24,0.34l-1.12-1.47l-0.56-3.95l-1.68-3.16l-6.84-6.45l1.68-1.11l0.31-4.67l2.5-4.2l1.08-10.45l3.62-2.47l0.12-3.81l2.17,0.72l3.42,4.95l-2.54,5.44l1.71,4.27l4.23,1.66l0.77,4.65l5.68,0.88l-1.57,2.71l-7.16,2.82l-0.78,4.62l5.26,6.76l0.22,3.61l-1.23,1.24l0.11,1.13l3.92,5.75l0.11,5.97L729.44,303.65L729.44,303.65z",name:"Myanmar"},th:{path:"M730.03,270.47l3.24,4.17v5.07l1.12,0.56l5.15-2.48l1.01,0.34l6.15,7.1l-0.22,4.85l-2.01-0.34l-1.79-1.13l-1.34,0.11l-2.35,3.94l0.45,2.14l1.9,1.01l-0.11,2.37l-1.34,0.68l-4.59-3.16v-2.82l-1.9-0.11l-0.78,1.24l-0.4,12.62l2.97,5.42l5.26,5.07l-0.22,1.47l-2.8-0.11l-2.57-3.83h-2.69l-3.36-2.71l-1.01-2.82l1.45-2.37l0.5-2.14l1.58-2.8l-0.07-6.44l-3.86-5.58l-0.16-0.68l1.25-1.26l-0.29-4.43l-5.14-6.51l0.6-3.75L730.03,270.47L730.03,270.47z",name:"Thailand"},kh:{path:"M740.48,299.47l4.09,4.37l7.61-5.64l0.67-8.9l-3.93,2.71l-2.04-1.14l-2.77-0.37l-1.55-1.09l-0.75,0.04l-2.03,3.33l0.33,1.54l2.06,1.15l-0.25,3.13L740.48,299.47L740.48,299.47z",name:"Cambodia"},la:{path:"M735.47,262.93l-2.42,1.23l-2.01,5.86l3.36,4.28l-0.56,4.73l0.56,0.23l5.59-2.71l7.5,8.38l-0.18,5.28l1.63,0.88l4.03-3.27l-0.33-2.59l-11.63-11.05l0.11-1.69l1.45-1.01l-1.01-2.82l-4.81-0.79L735.47,262.93L735.47,262.93z",name:"Lao People's Democratic Republic"},vn:{path:"M745.06,304.45l1.19,1.87l0.22,2.14l3.13,0.34l3.8-5.07l3.58-1.01l1.9-5.18l-0.89-8.34l-3.69-5.07l-3.89-3.11l-4.95-8.5l3.55-5.94l-5.08-5.83l-4.07-0.18l-3.66,1.97l1.09,4.71l4.88,0.86l1.31,3.63l-1.72,1.12l0.11,0.9l11.45,11.2l0.45,3.29l-0.69,10.4L745.06,304.45L745.06,304.45z",name:"Vietnam"},ge:{path:"M555.46,204.16l3.27,4.27l4.08,1.88l2.51-0.01l4.31-1.17l1.08-1.69l-12.75-4.77L555.46,204.16L555.46,204.16z",name:"Georgia"},am:{path:"M569.72,209.89l4.8,6.26l-1.41,1.65l-3.4-0.59l-4.22-3.78l0.23-2.48L569.72,209.89L569.72,209.89z",name:"Armenia"},az:{path:"M571.41,207.72l-1.01,1.72l4.71,6.18l1.64-0.53l2.7,2.83l1.17-4.96l2.93,0.47l-0.12-1.42l-4.82-4.22l-0.92,2.48L571.41,207.72L571.41,207.72z",name:"Azerbaijan"},ir:{path:"M569.65,217.95l-1.22,1.27l0.12,2.01l1.52,2.13l5.39,5.9l-0.82,2.36h-0.94l-0.47,2.36l3.05,3.9l2.81,0.24l5.63,7.79l3.16,0.24l2.46,1.77l0.12,3.54l9.73,5.67h3.63l2.23-1.89l2.81-0.12l1.64,3.78l10.51,1.46l0.31-3.86l3.48-1.26l0.16-1.38l-2.77-3.78l-6.17-4.96l3.24-2.95l-0.23-1.3l-4.06-0.63l-1.72-13.7l-0.2-3.15l-11.01-4.21l-4.88,1.1l-2.73,3.35l-2.42-0.16l-0.7,0.59l-5.39-0.35l-6.8-4.96l-2.53-2.77l-1.16,0.28l-2.09,2.39L569.65,217.95L569.65,217.95z",name:"Iran"},tr:{path:"M558.7,209.19l-2.23,2.36l-8.2-0.24l-4.92-2.95l-4.8-0.12l-5.51,3.9l-5.16,0.24l-0.47,2.95h-5.86l-2.34,2.13v1.18l1.41,1.18v1.3l-0.59,1.54l0.59,1.3l1.88-0.94l1.88,2.01l-0.47,1.42l-0.7,0.95l1.05,1.18l5.16,1.06l3.63-1.54v-2.24l1.76,0.35l4.22,2.48l4.57-0.71l1.99-1.89l1.29,0.47v2.13h1.76l1.52-2.95l13.36-1.42l5.83-0.71l-1.54-2.02l-0.03-2.73l1.17-1.4l-4.26-3.42l0.23-2.95h-2.34L558.7,209.19L558.7,209.19M523.02,209.7l-0.16,3.55l3.1-0.95l1.42-0.95l-0.42-1.54l-1.47-1.17L523.02,209.7L523.02,209.7z",name:"Turkey"},om:{path:"M598.38,280.84l7.39-4.26l1.31-6.25l-1.62-0.93l0.67-6.7l1.41-0.82l1.51,2.37l8.99,4.7v2.61l-10.89,16.03l-5.01,0.17L598.38,280.84L598.38,280.84z",name:"Oman"},ae:{path:"M594.01,264.94l0.87,3.48l9.86,0.87l0.69-7.14l1.9-1.04l0.52-2.61l-3.11,0.87l-3.46,5.23L594.01,264.94L594.01,264.94z",name:"United Arab Emirates"},qa:{path:"M592.63,259.02l-0.52,4.01l1.54,1.17l1.4-0.13l0.52-5.05l-1.21-0.87L592.63,259.02L592.63,259.02z",name:"Qatar"},kw:{path:"M583.29,247.17l-2.25-1.22l-1.56,1.57l0.17,3.14l3.63,1.39L583.29,247.17L583.29,247.17z",name:"Kuwait"},sa:{path:"M584,253.24l7.01,9.77l2.26,1.8l1.01,4.38l10.79,0.85l1.22,0.64l-1.21,5.4l-7.09,4.18l-10.37,3.14l-5.53,5.4l-6.57-3.83l-3.98,3.48L566,279.4l-3.8-1.74l-1.38-2.09v-4.53l-13.83-16.72l-0.52-2.96h3.98l4.84-4.18l0.17-2.09l-1.38-1.39l2.77-2.26l5.88,0.35l10.03,8.36l5.92-0.27l0.38,1.46L584,253.24L584,253.24z",name:"Saudi Arabia"},sy:{path:"M546.67,229.13l-0.35,2.54l2.82,1.18l-0.12,7.04l2.82-0.06l2.82-2.13l1.06-0.18l6.4-5.09l1.29-7.39l-12.79,1.3l-1.35,2.96L546.67,229.13L546.67,229.13z",name:"Syrian Arab Republic"},iq:{path:"M564.31,225.03l-1.56,7.71l-6.46,5.38l0.41,2.54l6.31,0.43l10.05,8.18l5.62-0.16l0.15-1.89l2.06-2.21l2.88,1.63l0.38-0.36l-5.57-7.41l-2.64-0.16l-3.51-4.51l0.7-3.32l1.07-0.14l0.37-1.47l-4.78-5.03L564.31,225.03L564.31,225.03z",name:"Iraq"},jo:{path:"M548.9,240.78l-2.46,8.58l-0.11,1.31h3.87l4.33-3.82l0.11-1.45l-1.77-1.81l3.17-2.63l-0.46-2.44l-0.87,0.2l-2.64,1.89L548.9,240.78L548.9,240.78z",name:"Jordan"},lb:{path:"M546.2,232.44l0.06,1.95l-0.82,2.96l2.82,0.24l0.18-4.2L546.2,232.44L546.2,232.44z",name:"Lebanon"},il:{path:"M545.32,238.06l-1.58,5.03l2.05,6.03l2.35-8.81v-1.89L545.32,238.06L545.32,238.06z",name:"Israel"},cy:{path:"M543.21,229.84l1.23,0.89l-3.81,3.61l-1.82-0.06l-1.35-0.95l0.18-1.77l2.76-0.18L543.21,229.84L543.21,229.84z",name:"Cyprus"},gb:{path:"M446.12,149.08l-1.83,2.77l0.73,1.11h4.22v1.85l-1.1,1.48l0.73,3.88l2.38,4.62l1.83,4.25l2.93,1.11l1.28,2.22l-0.18,2.03l-1.83,1.11l-0.18,0.92l1.28,0.74l-1.1,1.48l-2.57,1.11l-4.95-0.55l-7.71,3.51l-2.57-1.29l7.34-4.25l-0.92-0.55l-3.85-0.37l2.38-3.51l0.37-2.96l3.12-0.37l-0.55-5.73l-3.67-0.18l-1.1-1.29l0.18-4.25l-2.2,0.18l2.2-7.39l4.04-2.96L446.12,149.08L446.12,149.08M438.42,161.47l-3.3,0.37l-0.18,2.96l2.2,1.48l2.38-0.55l0.92-1.66L438.42,161.47L438.42,161.47z",name:"United Kingdom"},ie:{path:"M439.51,166.55l-0.91,6l-8.07,2.96h-2.57l-1.83-1.29v-1.11l4.04-2.59l-1.1-2.22l0.18-3.14l3.49,0.18l1.6-3.76l-0.21,3.34l2.71,2.15L439.51,166.55L439.51,166.55z",name:"Ireland"},se:{path:"M497.72,104.58l1.96,1.81h3.67l2.02,3.88l0.55,6.65l-4.95,3.51v3.51l-3.49,4.81l-2.02,0.18l-2.75,4.62l0.18,4.44l4.77,3.51l-0.37,2.03l-1.83,2.77l-2.75,2.4l0.18,7.95l-4.22,1.48l-1.47,3.14h-2.02l-1.1-5.54l-4.59-7.04l3.77-6.31l0.26-15.59l2.6-1.43l0.63-8.92l7.41-10.61L497.72,104.58L497.72,104.58M498.49,150.17l-2.11,1.67l1.06,2.45l1.87-1.82L498.49,150.17L498.49,150.17z",name:"Sweden"},fi:{path:"M506.79,116.94l2.07,0.91l1.28,2.4l-1.28,1.66l-6.42,7.02l-1.1,3.7l1.47,5.36l4.95,3.7l6.6-3.14l5.32-0.74l4.95-7.95l-3.67-8.69l-3.49-8.32l0.55-5.36l-2.2-0.37l-0.57-3.91l-2.96-4.83l-3.28,2.27l-1.29,5.27l-3.48-2.09l-4.84-1.18l-1.08,1.26l1.86,1.68l3.39-0.06l2.73,4.41L506.79,116.94L506.79,116.94z",name:"Finland"},lv:{path:"M518.07,151.37l-6.85-1.11l0.15,3.83l6.35,3.88l2.6-0.76l-0.15-2.92L518.07,151.37L518.07,151.37z",name:"Latvia"},lt:{path:"M510.81,154.7l-2.15-0.05l-2.95,2.82h-2.5l0.15,3.53l-1.5,2.77l5.4,0.05l1.55-0.2l1.55,1.87l3.55-0.15l3.4-4.33l-0.2-2.57L510.81,154.7L510.81,154.7z",name:"Lithuania"},by:{path:"M510.66,166.29l1.5,2.47l-0.6,1.97l0.1,1.56l0.55,1.87l3.1-1.76l3.85,0.1l2.7,1.11h6.85l2-4.79l1.2-1.81v-1.21l-4.3-6.05l-3.8-1.51l-3.1-0.35l-2.7,0.86l0.1,2.72l-3.75,4.74L510.66,166.29L510.66,166.29z",name:"Belarus"},pl:{path:"M511.46,174.76l0.85,1.56l0.2,1.66l-0.7,1.61l-1.6,3.08l-1.35,0.61l-1.75-0.76l-1.05,0.05l-2.55,0.96l-2.9-0.86l-4.7-3.33l-4.6-2.47l-1.85-2.82l-0.35-6.65l3.6-3.13l4.7-1.56l1.75-0.2l-0.7,1.41l0.45,0.55l7.91,0.15l1.7-0.05l2.8,4.29l-0.7,1.76l0.3,2.07L511.46,174.76L511.46,174.76z",name:"Poland"},it:{path:"M477.56,213.38l-2.65,1.34l0.35,5.17l2.12,0.36l1.59-1.52v-4.9L477.56,213.38L477.56,213.38M472.27,196.98l-0.62,1.57l0.17,1.71l2.39,2.79l3.76-0.13l8.3,9.64l5.18,1.5l3.06,2.89l0.73,6.59l1.64-0.96l1.42-3.59l-0.35-2.58l2.43-0.22l0.35-1.46l-6.85-3.28l-6.5-6.39l-2.59-3.82l-0.63-3.63l3.31-0.79l-0.85-2.39l-2.03-1.71l-1.75-0.08l-2.44,0.67l-2.3,3.22l-1.39,0.92l-2.15-1.32L472.27,196.98L472.27,196.98M492.44,223.02l-1.45-0.78l-4.95,0.78l0.17,1.34l4.45,2.24l0.67,0.73l1.17,0.17L492.44,223.02L492.44,223.02z",name:"Italy"},fr:{path:"M477.83,206.96l-1.95,1.96l-0.18,1.78l1.59,0.98l0.62-0.09l0.35-2.59L477.83,206.96L477.83,206.96M460.4,178.7l-2.21,0.54l-4.42,4.81l-1.33,0.09l-1.77-1.25l-1.15,0.27l-0.88,2.76l-6.46,0.18l0.18,1.43l4.42,2.94l5.13,4.1l-0.09,4.9l-2.74,4.81l5.93,2.85l6.02,0.18l1.86-2.14l3.8,0.09l1.06,0.98l3.8-0.27l1.95-2.5l-2.48-2.94l-0.18-1.87l0.53-2.05l-1.24-1.78l-2.12,0.62l-0.27-1.6l4.69-5.17v-3.12l-3.1-1.78l-1.59-0.27L460.4,178.7L460.4,178.7z",name:"France"},nl:{path:"M470.09,168.27l-4.53,2.23l0.96,0.87l0.1,2.23l-0.96-0.19l-1.06-1.65l-2.53,4.01l3.89,0.81l1.45,1.53l0.77,0.02l0.51-3.46l2.45-1.03L470.09,168.27L470.09,168.27z",name:"Netherlands"},be:{path:"M461.61,176.52l-0.64,1.6l6.88,4.54l1.98,0.47l0.07-2.15l-1.73-1.94h-1.06l-1.45-1.65L461.61,176.52L461.61,176.52z",name:"Belgium"},de:{path:"M471.14,167.88l3.57-0.58v-2.52l2.99-0.49l1.64,1.65l1.73,0.19l2.7-1.17l2.41,0.68l2.12,1.84l0.29,6.89l2.12,2.82l-2.79,0.39l-4.63,2.91l0.39,0.97l4.14,3.88l-0.29,1.94l-3.85,1.94l-3.57,0.1l-0.87,1.84h-1.83l-0.87-1.94l-3.18-0.78l-0.1-3.2l-2.7-1.84l0.29-2.33l-1.83-2.52l0.48-3.3l2.5-1.17L471.14,167.88L471.14,167.88z",name:"Germany"},dk:{path:"M476.77,151.5l-4.15,4.59l-0.15,2.99l1.89,4.93l2.96-0.56l-0.37-4.03l2.04-2.28l-0.04-1.79l-1.44-3.73L476.77,151.5L476.77,151.5M481.44,159.64l-0.93-0.04l-1.22,1.12l0.15,1.75l2.89,0.08l0.15-1.98L481.44,159.64L481.44,159.64z",name:"Denmark"},ch:{path:"M472.91,189.38l-4.36,4.64l0.09,0.47l1.79-0.56l1.61,2.24l2.72-0.96l1.88,1.46l0.77-0.44l2.32-3.64l-0.59-0.56l-2.29-0.06l-1.11-2.27L472.91,189.38L472.91,189.38z",name:"Switzerland"},cz:{path:"M488.43,184.87h2.97h1.46l2.37,1.69l4.39-3.65l-4.26-3.04l-4.22-2.04l-2.89,0.52l-3.92,2.52L488.43,184.87L488.43,184.87z",name:"Czech Republic"},sk:{path:"M495.84,187.13l0.69,0.61l0.09,1.04l7.63-0.17l5.64-2.43l-0.09-2.47l-1.08,0.48l-1.55-0.83l-0.95-0.04l-2.5,1l-3.4-0.82L495.84,187.13L495.84,187.13z",name:"Slovakia"},at:{path:"M480.63,190.12l-0.65,1.35l0.56,0.96l2.33-0.48h1.98l2.15,1.82l4.57-0.83l3.36-2l0.86-1.35l-0.13-1.74l-3.02-2.26l-4.05,0.04l-0.34,2.3l-4.26,2.08L480.63,190.12L480.63,190.12z",name:"Austria"},hu:{path:"M496.74,189.6l-1.16,1.82l0.09,2.78l1.85,0.95l5.69,0.17l7.93-6.68l0.04-1.48l-0.86-0.43l-5.73,2.6L496.74,189.6L496.74,189.6z",name:"Hungary"},si:{path:"M494.8,191.99l-2.54,1.52l-4.74,1.04l0.95,2.74l3.32,0.04l3.06-2.56L494.8,191.99L494.8,191.99z",name:"Slovenia"},hr:{path:"M495.62,195.16l-3.53,2.91h-3.58l-0.43,2.52l1.64,0.43l0.82-1.22l1.29,1.13l1.03,3.6l7.07,3.3l0.7-0.8l-7.17-7.4l0.73-1.35l6.81-0.26l0.69-2.17l-4.44,0.13L495.62,195.16L495.62,195.16z",name:"Croatia"},ba:{path:"M494.8,198.94l-0.37,0.61l6.71,6.92l2.46-3.62l-0.09-1.43l-2.15-2.61L494.8,198.94L494.8,198.94z",name:"Bosnia and Herzegovina"},mt:{path:"M492.61,230.47l-1.67,0.34l0.06,1.85l1.5,0.5l0.67-0.56L492.61,230.47L492.61,230.47z",name:"Malta"},ua:{path:"M515.57,173.15l-2.9,1.63l0.72,3.08l-2.68,5.65l0.02,2.49l1.26,0.8l8.08,0.4l2.26-1.87l2.42,0.81l3.47,4.63l-2.54,4.56l3.02,0.88l3.95-4.55l2.26,0.41l2.1,1.46l-1.85,2.44l2.5,3.9h2.66l1.37-2.6l2.82-0.57l0.08-2.11l-5.24-0.81l0.16-2.27h5.08l5.48-4.39l2.42-2.11l0.4-6.66l-10.8-0.97l-4.43-6.25l-3.06-1.05l-3.71,0.16l-1.67,4.13l-7.6,0.1l-2.47-1.14L515.57,173.15L515.57,173.15z",name:"Ukraine"},md:{path:"M520.75,187.71l3.1,4.77l-0.26,2.7l1.11,0.05l2.63-4.45l-3.16-3.92l-1.79-0.74L520.75,187.71L520.75,187.71z",name:"Moldova"},ro:{path:"M512.18,187.6l-0.26,1.48l-5.79,4.82l4.84,7.1l3.1,2.17h5.58l1.84-1.54l2.47-0.32l1.84,1.11l3.26-3.71l-0.63-1.86l-3.31-0.85l-2.26-0.11l0.11-3.18l-3-4.72L512.18,187.6L512.18,187.6z",name:"Romania"},rs:{path:"M505.55,194.54l-2.05,1.54h-1l-0.68,2.12l2.42,2.81l0.16,2.23l-3,4.24l0.42,1.27l1.74,0.32l1.37-1.86l0.74-0.05l1.26,1.22l3.84-1.17l-0.32-5.46L505.55,194.54L505.55,194.54z",name:"Serbia"},bg:{path:"M511.44,202.39l0.16,4.98l1.68,3.5l6.31,0.11l2.84-2.01l2.79-1.11l-0.68-3.18l0.63-1.7l-1.42-0.74l-1.95,0.16l-1.53,1.54l-6.42,0.05L511.44,202.39L511.44,202.39z",name:"Bulgaria"},al:{path:"M504.02,209.76v4.61l1.32,2.49l0.95-0.11l1.63-2.97l-0.95-1.33l-0.37-3.29l-1.26-1.17L504.02,209.76L504.02,209.76z",name:"Albania"},mk:{path:"M510.92,208.01l-3.37,1.11l0.16,2.86l0.79,1.01l4-1.86L510.92,208.01L510.92,208.01z",name:"Macedonia"},gr:{path:"M506.71,217.6l-0.11,1.33l4.63,2.33l2.21,0.85l-1.16,1.22l-2.58,0.26l-0.37,1.17l0.89,2.01l2.89,1.54l1.26,0.11l0.16-3.45l1.89-2.28l-5.16-6.1l0.68-2.07l1.21-0.05l1.84,1.48l1.16-0.58l0.37-2.07l5.42,0.05l0.21-3.18l-2.26,1.59l-6.63-0.16l-4.31,2.23L506.71,217.6L506.71,217.6M516.76,230.59l1.63,0.05l0.68,1.01h2.37l1.58-0.58l0.53,0.64l-1.05,1.38l-4.63,0.16l-0.84-1.11l-0.89-0.53L516.76,230.59L516.76,230.59z",name:"Greece"}}}); \ No newline at end of file diff --git a/plugins/wp-statistics/assets/js/dashboard.js b/plugins/wp-statistics/assets/js/dashboard.js new file mode 100644 index 0000000..7e3d290 --- /dev/null +++ b/plugins/wp-statistics/assets/js/dashboard.js @@ -0,0 +1,74 @@ +/* + Function to handle the loading of widget content +*/ + +function wp_statistics_get_widget_contents( widget, container_id ) { + var data = { + 'action': 'wp_statistics_get_widget_contents', + 'widget': widget, + 'format': 'dashboard' + }; + + container = jQuery("#" + container_id); + + if( container.is( ':visible' ) ) { + jQuery.ajax({ url: ajaxurl, + type: 'post', + data: data, + datatype: 'json', + }) + .always(function(result){ + // Take the returned result and add it to the DOM. + jQuery("#" + container_id).html("").html(result); + }) + .fail(function(result){ + // If we failed for some reason, like a timeout, try again. + container.html(wp_statistics_loading_image); + wp_statistics_get_widget_contents( widget, coontaier_id ); + }); + + } +} + +function wp_statistics_refresh_widget() { + var container_id = this.id.replace( '_refresh_button', '' ); + container_id = container_id.replace( '-widget', '-div' ); + + var widget = container_id.replace( 'wp-statistics-', '' ); + widget = widget.replace( '-div', '' ); + widget = widget.replace( '-', '.' ); + + container = jQuery("#" + container_id); + + if( container.is( ':visible' ) ) { + container.html(wp_statistics_loading_image); + + wp_statistics_get_widget_contents( widget, container_id ); + } + + return false; +} + +function wp_statistics_refresh_on_toggle_widget() { + if( this.value.substring(0, 14) != 'wp-statistics-' ) { + return; + } + + var container_id = this.value.replace( '-widget', '-div' ); + var widget = container_id.replace( 'wp-statistics-', '' ); + widget = widget.replace( '-div', '' ); + widget = widget.replace( '-', '.' ); + + wp_statistics_get_widget_contents( widget, container_id ); +} + +function wp_statistics_goto_more() { + var widget = this.id; + + if( wp_statistics_destinations[widget] !== undefined ) { + window.location.href = wp_statistics_destinations[widget]; + } + + return false; +} + diff --git a/plugins/wp-statistics/assets/js/dashboard.min.js b/plugins/wp-statistics/assets/js/dashboard.min.js new file mode 100644 index 0000000..3c3c101 --- /dev/null +++ b/plugins/wp-statistics/assets/js/dashboard.min.js @@ -0,0 +1 @@ +function wp_statistics_get_widget_contents(t,i){var s={action:"wp_statistics_get_widget_contents",widget:t,format:"dashboard"};container=jQuery("#"+i),container.is(":visible")&&jQuery.ajax({url:ajaxurl,type:"post",data:s,datatype:"json"}).always(function(t){jQuery("#"+i).html("").html(t)}).fail(function(i){container.html(wp_statistics_loading_image),wp_statistics_get_widget_contents(t,coontaier_id)})}function wp_statistics_refresh_widget(){var t=this.id.replace("_refresh_button","");t=t.replace("-widget","-div");var i=t.replace("wp-statistics-","");return i=i.replace("-div",""),i=i.replace("-","."),container=jQuery("#"+t),container.is(":visible")&&(container.html(wp_statistics_loading_image),wp_statistics_get_widget_contents(i,t)),!1}function wp_statistics_refresh_on_toggle_widget(){if("wp-statistics-"==this.value.substring(0,14)){var t=this.value.replace("-widget","-div"),i=t.replace("wp-statistics-","");i=i.replace("-div",""),i=i.replace("-","."),wp_statistics_get_widget_contents(i,t)}}function wp_statistics_goto_more(){var t=this.id;return void 0!==wp_statistics_destinations[t]&&(window.location.href=wp_statistics_destinations[t]),!1} \ No newline at end of file diff --git a/plugins/wp-statistics/assets/js/editor.js b/plugins/wp-statistics/assets/js/editor.js new file mode 100644 index 0000000..d62f115 --- /dev/null +++ b/plugins/wp-statistics/assets/js/editor.js @@ -0,0 +1,65 @@ +/* + Function to handle the loading of widget content +*/ + +function wp_statistics_get_widget_contents( widget, container_id ) { + var data = { + 'action': 'wp_statistics_get_widget_contents', + 'widget': widget, + 'page-id': wp_statistics_current_id, + }; + + container = jQuery("#" + container_id); + + if( container.is( ':visible' ) ) { + jQuery.ajax({ url: ajaxurl, + type: 'post', + data: data, + datatype: 'json', + }) + .always(function(result){ + // Take the returned result and add it to the DOM. + jQuery("#" + container_id).html("").html(result); + }) + .fail(function(result){ + // If we failed for some reason, like a timeout, try again. + container.html(wp_statistics_loading_image); + wp_statistics_get_widget_contents( widget, coontaier_id ); + }); + + } +} + +function wp_statistics_refresh_widget() { + var container_id = 'wp-statistics-page-div'; + var widget = 'page'; + + container = jQuery("#" + container_id); + container.html(wp_statistics_loading_image); + + wp_statistics_get_widget_contents( widget, container_id ); + + return false; +} + +function wp_statistics_refresh_on_toggle_widget() { + if( this.value != 'wp_statistics_editor_meta_box' ) { + return; + } + + var container_id = 'wp-statistics-page-div'; + var widget = 'page'; + + wp_statistics_get_widget_contents( widget, container_id ); +} + +function wp_statistics_goto_more() { + var widget = this.id; + + if( wp_statistics_destinations[widget] !== undefined ) { + window.location.href = wp_statistics_destinations[widget] + wp_statistics_current_id; + } + + return false; +} + diff --git a/plugins/wp-statistics/assets/js/editor.min.js b/plugins/wp-statistics/assets/js/editor.min.js new file mode 100644 index 0000000..6f22121 --- /dev/null +++ b/plugins/wp-statistics/assets/js/editor.min.js @@ -0,0 +1 @@ +function wp_statistics_get_widget_contents(t,i){var s={action:"wp_statistics_get_widget_contents",widget:t,"page-id":wp_statistics_current_id};container=jQuery("#"+i),container.is(":visible")&&jQuery.ajax({url:ajaxurl,type:"post",data:s,datatype:"json"}).always(function(t){jQuery("#"+i).html("").html(t)}).fail(function(i){container.html(wp_statistics_loading_image),wp_statistics_get_widget_contents(t,coontaier_id)})}function wp_statistics_refresh_widget(){var t="wp-statistics-page-div",i="page";return container=jQuery("#"+t),container.html(wp_statistics_loading_image),wp_statistics_get_widget_contents(i,t),!1}function wp_statistics_refresh_on_toggle_widget(){if("wp_statistics_editor_meta_box"==this.value){var t="wp-statistics-page-div",i="page";wp_statistics_get_widget_contents(i,t)}}function wp_statistics_goto_more(){var t=this.id;return void 0!==wp_statistics_destinations[t]&&(window.location.href=wp_statistics_destinations[t]+wp_statistics_current_id),!1} \ No newline at end of file diff --git a/plugins/wp-statistics/assets/js/log.js b/plugins/wp-statistics/assets/js/log.js new file mode 100644 index 0000000..13d19fc --- /dev/null +++ b/plugins/wp-statistics/assets/js/log.js @@ -0,0 +1,68 @@ +/* + Function to handle the loading of widget content +*/ + +function wp_statistics_get_widget_contents( widget, container_id ) { + var data = { + 'action': 'wp_statistics_get_widget_contents', + 'widget': widget, + }; + + container = jQuery("#" + container_id); + + if( container.is( ':visible' ) ) { + jQuery.ajax({ url: ajaxurl, + type: 'post', + data: data, + datatype: 'json', + }) + .always(function(result){ + // Take the returned result and add it to the DOM. + jQuery("#" + container_id).html("").html(result); + }) + .fail(function(result){ + // If we failed for some reason, like a timeout, try again. + container.html(wp_statistics_loading_image); + wp_statistics_get_widget_contents( widget, coontaier_id ); + }); + + } +} + +function wp_statistics_refresh_widget() { + var widget = this.id.replace( 'wps_', '' ); + widget = widget.replace( '_refresh_button', '' ); + container_id = widget.replace( '.', '_' ) + '_postbox'; + + container = jQuery("#" + container_id); + + if( container.is( ':visible' ) ) { + container.html(wp_statistics_loading_image); + + wp_statistics_get_widget_contents( widget, container_id ); + } + + return false; +} + +function wp_statistics_refresh_on_toggle_widget() { + if( this.value.substring(0, 4) != 'wps_' ) { + return; + } + + var container_id = this.value.replace( 'wps_', '' ); + var widget = container_id.replace( '_postbox', '' ); + + wp_statistics_get_widget_contents( widget, container_id ); +} + +function wp_statistics_goto_more() { + var widget = this.id; + + if( wp_statistics_destinations[widget] !== undefined ) { + window.location.href = wp_statistics_destinations[widget]; + } + + return false; +} + diff --git a/plugins/wp-statistics/assets/js/log.min.js b/plugins/wp-statistics/assets/js/log.min.js new file mode 100644 index 0000000..e94f477 --- /dev/null +++ b/plugins/wp-statistics/assets/js/log.min.js @@ -0,0 +1 @@ +function wp_statistics_get_widget_contents(t,i){var s={action:"wp_statistics_get_widget_contents",widget:t};container=jQuery("#"+i),container.is(":visible")&&jQuery.ajax({url:ajaxurl,type:"post",data:s,datatype:"json"}).always(function(t){jQuery("#"+i).html("").html(t)}).fail(function(i){container.html(wp_statistics_loading_image),wp_statistics_get_widget_contents(t,coontaier_id)})}function wp_statistics_refresh_widget(){var t=this.id.replace("wps_","");return t=t.replace("_refresh_button",""),container_id=t.replace(".","_")+"_postbox",container=jQuery("#"+container_id),container.is(":visible")&&(container.html(wp_statistics_loading_image),wp_statistics_get_widget_contents(t,container_id)),!1}function wp_statistics_refresh_on_toggle_widget(){if("wps_"==this.value.substring(0,4)){var t=this.value.replace("wps_",""),i=t.replace("_postbox","");wp_statistics_get_widget_contents(i,t)}}function wp_statistics_goto_more(){var t=this.id;return void 0!==wp_statistics_destinations[t]&&(window.location.href=wp_statistics_destinations[t]),!1} \ No newline at end of file diff --git a/plugins/wp-statistics/composer.json b/plugins/wp-statistics/composer.json new file mode 100644 index 0000000..9d38d14 --- /dev/null +++ b/plugins/wp-statistics/composer.json @@ -0,0 +1,6 @@ +{ + "require": { + "geoip2/geoip2": "2.*", + "s1lentium/iptools": "*" + } +} \ No newline at end of file diff --git a/plugins/wp-statistics/dashboard.php b/plugins/wp-statistics/dashboard.php new file mode 100644 index 0000000..bd10653 --- /dev/null +++ b/plugins/wp-statistics/dashboard.php @@ -0,0 +1,202 @@ +<?php + add_action( 'wp_dashboard_setup', 'wp_statistics_dashboard_widget_load' ); + add_action( 'admin_footer', 'wp_statistics_dashboard_inline_javascript' ); + + function wp_statistics_dashboard_widget_load() { + GLOBAL $WP_Statistics; + + $WP_Statistics->load_user_options(); + + // We need to fudge the display settings for first time users so not all of the widgets are displayed, we only want to do this on + // the first time they visit the dashboard though so check to see if we've been here before. + if( !$WP_Statistics->get_user_option('dashboard_set') ) { + $WP_Statistics->update_user_option('dashboard_set', WP_STATISTICS_VERSION); + + $hidden_widgets = get_user_meta($WP_Statistics->user_id, 'metaboxhidden_dashboard', true); + if( !is_array( $hidden_widgets ) ) { $hidden_widgets = array(); } + + $default_hidden = array('wp-statistics-browsers-widget','wp-statistics-countries-widget','wp-statistics-hitsmap-widget', + 'wp-statistics-hits-widget','wp-statistics-pages-widget','wp-statistics-recent-widget','wp-statistics-referring-widget', + 'wp-statistics-search-widget','wp-statistics-summary-widget','wp-statistics-words-widget', 'wp-statistics-top-visitors-widget' ); + + foreach( $default_hidden as $widget ) { + if( !in_array( $widget, $hidden_widgets ) ) { + $hidden_widgets[] = $widget; + } + } + + update_user_meta( $WP_Statistics->user_id, 'metaboxhidden_dashboard', $hidden_widgets ); + } + else if( $WP_Statistics->get_user_option('dashboard_set') != WP_STATISTICS_VERSION ) { + // We also have to fudge things when we add new widgets to the code base. + if( version_compare( $WP_Statistics->get_user_option('dashboard_set'), '8.7', '<' ) ) { + + $WP_Statistics->update_user_option('dashboard_set', WP_STATISTICS_VERSION); + + $hidden_widgets = get_user_meta($WP_Statistics->user_id, 'metaboxhidden_dashboard', true); + if( !is_array( $hidden_widgets ) ) { $hidden_widgets = array(); } + + $default_hidden = array('wp-statistics-top-visitors-widget' ); + + foreach( $default_hidden as $widget ) { + if( !in_array( $widget, $hidden_widgets ) ) { + $hidden_widgets[] = $widget; + } + } + + update_user_meta( $WP_Statistics->user_id, 'metaboxhidden_dashboard', $hidden_widgets ); + } + } + + // If the user does not have at least read access to the status plugin, just return without adding the widgets. + if (!current_user_can(wp_statistics_validate_capability($WP_Statistics->get_option('read_capability', 'manage_option')))) { return; } + + // If the admin has disabled the widgets, don't display them. + if (!$WP_Statistics->get_option('disable_dashboard')) { + wp_add_dashboard_widget( 'wp-statistics-quickstats-widget', __('Quick Stats', 'wp_statistics'), 'wp_statistics_generate_dashboard_postbox_contents', $control_callback = null, array( 'widget' => 'quickstats' ) ); + if( $WP_Statistics->get_option('visitors') ) { wp_add_dashboard_widget( 'wp-statistics-browsers-widget', __('Top 10 Browsers', 'wp_statistics'), 'wp_statistics_generate_dashboard_postbox_contents', $control_callback = null, array( 'widget' => 'browsers' ) ); } + if( $WP_Statistics->get_option('geoip') && $WP_Statistics->get_option('visitors') ) { wp_add_dashboard_widget( 'wp-statistics-countries-widget', __('Top 10 Countries', 'wp_statistics'), 'wp_statistics_generate_dashboard_postbox_contents', $control_callback = null, array( 'widget' => 'countries' ) ); } + if( $WP_Statistics->get_option('visitors') ) { wp_add_dashboard_widget( 'wp-statistics-hitsmap-widget', __('Today\'s Visitor Map', 'wp_statistics'), 'wp_statistics_generate_dashboard_postbox_contents', $control_callback = null, array( 'widget' => 'hitsmap' ) ); } + if( $WP_Statistics->get_option('visits') ) { wp_add_dashboard_widget( 'wp-statistics-hits-widget', __('Hit Statistics', 'wp_statistics'), 'wp_statistics_generate_dashboard_postbox_contents', $control_callback = null, array( 'widget' => 'hits' ) ); } + if( $WP_Statistics->get_option('pages') ) { wp_add_dashboard_widget( 'wp-statistics-pages-widget', __('Top 10 Pages', 'wp_statistics'), 'wp_statistics_generate_dashboard_postbox_contents', $control_callback = null, array( 'widget' => 'pages' ) ); } + if( $WP_Statistics->get_option('visitors') ) { wp_add_dashboard_widget( 'wp-statistics-recent-widget', __('Recent Visitors', 'wp_statistics'), 'wp_statistics_generate_dashboard_postbox_contents', $control_callback = null, array( 'widget' => 'recent' ) ); } + if( $WP_Statistics->get_option('visitors') ) { wp_add_dashboard_widget( 'wp-statistics-referring-widget', __('Top Referring Sites', 'wp_statistics'), 'wp_statistics_generate_dashboard_postbox_contents', $control_callback = null, array( 'widget' => 'referring' ) ); } + if( $WP_Statistics->get_option('visitors') ) { wp_add_dashboard_widget( 'wp-statistics-search-widget', __('Search Engine Referrals', 'wp_statistics'), 'wp_statistics_generate_dashboard_postbox_contents', $control_callback = null, array( 'widget' => 'search' ) ); } + wp_add_dashboard_widget( 'wp-statistics-summary-widget', __('Summary', 'wp_statistics'), 'wp_statistics_generate_dashboard_postbox_contents', $control_callback = null, array( 'widget' => 'summary' ) ); + if( $WP_Statistics->get_option('visitors') ) { wp_add_dashboard_widget( 'wp-statistics-words-widget', __('Latest Search Words', 'wp_statistics'), 'wp_statistics_generate_dashboard_postbox_contents', $control_callback = null, array( 'widget' => 'words' ) ); } + if( $WP_Statistics->get_option('visitors') ) { wp_add_dashboard_widget( 'wp-statistics-top-visitors-widget', __('Top 10 Visitors Today', 'wp_statistics'), 'wp_statistics_generate_dashboard_postbox_contents', $control_callback = null, array( 'widget' => 'top.visitors' ) ); } + } + } + + function wp_statistics_load_widget_css_and_scripts() { + GLOBAL $WP_Statistics; + + // Load the css we use for the statistics pages. + wp_enqueue_style('log-css', plugin_dir_url(__FILE__) . 'assets/css/log' . WP_STATISTICS_MIN_EXT . '.css', true, '1.1'); + wp_enqueue_style('jqplot-css', plugin_dir_url(__FILE__) . 'assets/jqplot/jquery.jqplot' . WP_STATISTICS_MIN_EXT . '.css', true, '1.0.9'); + + // Don't forget the right to left support. + if( is_rtl() ) { + wp_enqueue_style('rtl-css', plugin_dir_url(__FILE__) . 'assets/css/rtl' . WP_STATISTICS_MIN_EXT . '.css', true, '1.1'); + } + + // Load the charts code. + wp_enqueue_script('jqplot', plugin_dir_url(__FILE__) . 'assets/jqplot/jquery.jqplot' . WP_STATISTICS_MIN_EXT . '.js', true, '1.0.9'); + wp_enqueue_script('jqplot-daterenderer', plugin_dir_url(__FILE__) . 'assets/jqplot/plugins/jqplot.dateAxisRenderer' . WP_STATISTICS_MIN_EXT . '.js', true, '1.0.9'); + wp_enqueue_script('jqplot-tickrenderer', plugin_dir_url(__FILE__) . 'assets/jqplot/plugins/jqplot.canvasAxisTickRenderer' . WP_STATISTICS_MIN_EXT . '.js', true, '1.0.9'); + wp_enqueue_script('jqplot-axisrenderer', plugin_dir_url(__FILE__) . 'assets/jqplot/plugins/jqplot.canvasAxisLabelRenderer' . WP_STATISTICS_MIN_EXT . '.js', true, '1.0.9'); + wp_enqueue_script('jqplot-textrenderer', plugin_dir_url(__FILE__) . 'assets/jqplot/plugins/jqplot.canvasTextRenderer' . WP_STATISTICS_MIN_EXT . '.js', true, '1.0.9'); + wp_enqueue_script('jqplot-tooltip', plugin_dir_url(__FILE__) . 'assets/jqplot/plugins/jqplot.highlighter' . WP_STATISTICS_MIN_EXT . '.js', true, '1.0.9'); + wp_enqueue_script('jqplot-pierenderer', plugin_dir_url(__FILE__) . 'assets/jqplot/plugins/jqplot.pieRenderer' . WP_STATISTICS_MIN_EXT . '.js', true, '1.0.9'); + wp_enqueue_script('jqplot-enhancedlengend', plugin_dir_url(__FILE__) . 'assets/jqplot/plugins/jqplot.enhancedLegendRenderer' . WP_STATISTICS_MIN_EXT . '.js', true, '1.0.9'); + wp_enqueue_script('jqplot-enhancedpielengend', plugin_dir_url(__FILE__) . 'assets/jqplot/plugins/jqplot.enhancedPieLegendRenderer' . WP_STATISTICS_MIN_EXT . '.js', true, '1.0.9'); + + wp_enqueue_style('jqvmap-css', plugin_dir_url(__FILE__) . 'assets/jqvmap/jqvmap' . WP_STATISTICS_MIN_EXT . '.css', true, '1.5.1'); + wp_enqueue_script('jquery-vmap', plugin_dir_url(__FILE__) . 'assets/jqvmap/jquery.vmap' . WP_STATISTICS_MIN_EXT . '.js', true, '1.5.1'); + wp_enqueue_script('jquery-vmap-world', plugin_dir_url(__FILE__) . 'assets/jqvmap/maps/jquery.vmap.world' . WP_STATISTICS_MIN_EXT . '.js', true, '1.5.1'); + + $screen = get_current_screen(); + + // Load our custom widgets handling javascript. + if( 'post' == $screen->id || 'page' == $screen->id) { + wp_enqueue_script('wp_statistics_editor', plugin_dir_url(__FILE__) . 'assets/js/editor' . WP_STATISTICS_MIN_EXT . '.js'); + } else { + wp_enqueue_script('wp_statistics_dashboard', plugin_dir_url(__FILE__) . 'assets/js/dashboard' . WP_STATISTICS_MIN_EXT . '.js'); + } + } + + function wp_statistics_generate_dashboard_postbox_contents( $post, $args ) { + $loading_img = '<div style="width: 100%; text-align: center;"><img src=" ' . plugins_url('wp-statistics/assets/images/') . 'ajax-loading.gif" alt="' . __( 'Loading...', 'wp_statistics' ) . '"></div>'; + $widget = $args['args']['widget']; + $container_id = 'wp-statistics-' . str_replace( '.', '-', $widget ) . '-div'; + + echo '<div id="' . $container_id . '">' . $loading_img .'</div>'; + wp_statistics_generate_widget_load_javascript( $widget, $container_id ); + } + + + function wp_statistics_dashboard_inline_javascript() { + $screen = get_current_screen(); + + if( 'dashboard' != $screen->id ) { + return; + } + + wp_statistics_load_widget_css_and_scripts(); + + $loading_img = '<div style="width: 100%; text-align: center;"><img src=" ' . plugins_url('wp-statistics/assets/images/') . 'ajax-loading.gif" alt="' . __( 'Reloading...', 'wp_statistics' ) . '"></div>'; + + $new_buttons = '</button><button class="handlediv button-link wps-refresh" type="button" id="{{refreshid}}">' . wp_statistics_icons( 'dashicons-update' ) . '</button><button class="handlediv button-link wps-more" type="button" id="{{moreid}}">' . wp_statistics_icons( 'dashicons-migrate' ) . '</button>'; + $new_button = '</button><button class="handlediv button-link wps-refresh" type="button" id="{{refreshid}}">' . wp_statistics_icons( 'dashicons-update' ) . '</button>'; + + $admin_url = get_admin_url() . "/admin.php?page="; + + $page_urls = array(); + + $page_urls['wp-statistics-browsers-widget_more_button'] = $admin_url . WP_STATISTICS_BROWSERS_PAGE; + $page_urls['wp-statistics-countries-widget_more_button'] = $admin_url . WP_STATISTICS_COUNTRIES_PAGE; + $page_urls['wp-statistics-exclusions-widget_more_button'] = $admin_url . WP_STATISTICS_EXCLUSIONS_PAGE; + $page_urls['wp-statistics-hits-widget_more_button'] = $admin_url . WP_STATISTICS_HITS_PAGE; + $page_urls['wp-statistics-online-widget_more_button'] = $admin_url . WP_STATISTICS_ONLINE_PAGE; + $page_urls['wp-statistics-pages-widget_more_button'] = $admin_url . WP_STATISTICS_PAGES_PAGE; + $page_urls['wp-statistics-referring-widget_more_button'] = $admin_url . WP_STATISTICS_REFERRERS_PAGE; + $page_urls['wp-statistics-search-widget_more_button'] = $admin_url . WP_STATISTICS_SEARCHES_PAGE; + $page_urls['wp-statistics-words-widget_more_button'] = $admin_url . WP_STATISTICS_WORDS_PAGE; + $page_urls['wp-statistics-top-visitors-widget_more_button'] = $admin_url . WP_STATISTICS_TOP_VISITORS_PAGE; + $page_urls['wp-statistics-visitors-widget_more_button'] = $admin_url . WP_STATISTICS_VISITORS_PAGE; + $page_urls['wp-statistics-quickstats-widget_more_button'] = $admin_url . WP_STATISTICS_OVERVIEW_PAGE; + +?> +<script type="text/javascript"> + var wp_statistics_destinations = <?php echo json_encode( $page_urls ); ?>; + var wp_statistics_loading_image = '<?php echo $loading_img; ?>' + + function wp_statistics_wait_for_postboxes() { + + if( ! jQuery('#show-settings-link').is( ':visible') ) { + setTimeout( wp_statistics_wait_for_postboxes, 500 ); + } + + jQuery('.wps-refresh').unbind('click').on('click', wp_statistics_refresh_widget ); + jQuery('.wps-more').unbind('click').on('click', wp_statistics_goto_more ); + + jQuery('.hide-postbox-tog').on('click', wp_statistics_refresh_on_toggle_widget ); + } + + jQuery(document).ready(function(){ + + // Add the "more" and "refresh" buttons. + jQuery('.postbox').each( function () { + var temp = jQuery( this ); + var temp_id = temp.attr( 'id' ); + + if( temp_id.substr( 0, 14 ) != 'wp-statistics-' ) { + return; + } + + var temp_html = temp.html(); + + if( temp_id == 'wp-statistics-summary-widget' ) { + new_text = '<?php echo $new_button;?>'; + new_text = new_text.replace( '{{refreshid}}', temp_id + '_refresh_button' ); + + temp_html = temp_html.replace( '</button>', new_text ); + } else { + new_text = '<?php echo $new_buttons;?>'; + new_text = new_text.replace( '{{refreshid}}', temp_id + '_refresh_button' ); + new_text = new_text.replace( '{{moreid}}', temp_id + '_more_button' ); + + temp_html = temp_html.replace( '</button>', new_text ); + } + + temp.html( temp_html ); + }); + + // We have use a timeout here because we don't now what order this code will run in comparison to the postbox code. + // Any timeout value should work as the timeout won't run until the rest of the javascript as run through once. + setTimeout( wp_statistics_wait_for_postboxes, 100 ); + }); +</script> +<?php + } +?> \ No newline at end of file diff --git a/plugins/wp-statistics/editor.php b/plugins/wp-statistics/editor.php new file mode 100644 index 0000000..87a919e --- /dev/null +++ b/plugins/wp-statistics/editor.php @@ -0,0 +1,141 @@ +<?php +/* + Adds a box to the main column on the Post and Page edit screens. + */ +function wp_statistics_add_editor_meta_box() { + GLOBAL $WP_Statistics; + + $WP_Statistics->load_user_options(); + + // We need to fudge the display settings for first time users so not all of the widgets are displayed, we only want to do this on + // the first time they visit the dashboard though so check to see if we've been here before. + if( !$WP_Statistics->get_user_option('editor_set') ) { + $WP_Statistics->update_user_option('editor_set', WP_STATISTICS_VERSION); + + $hidden_widgets = get_user_meta($WP_Statistics->user_id, 'metaboxhidden_post', true); + if( !is_array( $hidden_widgets ) ) { $hidden_widgets = array(); } + + if( !in_array( 'wp_statistics_editor_meta_box', $hidden_widgets ) ) { + $hidden_widgets[] = 'wp_statistics_editor_meta_box'; + } + + update_user_meta( $WP_Statistics->user_id, 'metaboxhidden_post', $hidden_widgets ); + + $hidden_widgets = get_user_meta($WP_Statistics->user_id, 'metaboxhidden_page', true); + if( !is_array( $hidden_widgets ) ) { $hidden_widgets = array(); } + + if( !in_array( 'wp_statistics_editor_meta_box', $hidden_widgets ) ) { + $hidden_widgets[] = 'wp_statistics_editor_meta_box'; + } + + update_user_meta( $WP_Statistics->user_id, 'metaboxhidden_page', $hidden_widgets ); + } + + // If the user does not have at least read access to the status plugin, just return without adding the widgets. + if (!current_user_can(wp_statistics_validate_capability($WP_Statistics->get_option('read_capability', 'manage_option')))) { return; } + + // If the admin has disabled the widgets don't display them. + if ($WP_Statistics->get_option('disable_editor')) { return; } + + $screens = array( 'post', 'page' ); + + foreach ( $screens as $screen ) { + + add_meta_box( + 'wp_statistics_editor_meta_box', + __( 'Hit Statistics', 'wp_statistics' ), + 'wp_statistics_editor_meta_box', + $screen, + 'normal', + 'high' + ); + } + } +add_action( 'add_meta_boxes', 'wp_statistics_add_editor_meta_box' ); + +function wp_statistics_editor_meta_box( $post ) { + // If the post isn't published yet, don't output the stats as they take too much memory and CPU to compute for no reason. + if( $post->post_status != 'publish' && $post->post_status != 'private' ) { _e('This post is not yet published.', 'wp_statistics'); return; } + + add_action( 'admin_footer', 'wp_statistics_editor_inline_javascript' ); + + wp_statistics_generate_editor_postbox_contents( $post->ID, array( 'args' => array( 'widget' => 'page' ) ) ); + } + +function wp_statistics_generate_editor_postbox_contents( $post, $args ) { + $loading_img = '<div style="width: 100%; text-align: center;"><img src=" ' . plugins_url('wp-statistics/assets/images/') . 'ajax-loading.gif" alt="' . __( 'Loading...', 'wp_statistics' ) . '"></div>'; + $widget = $args['args']['widget']; + $container_id = 'wp-statistics-' . str_replace( '.', '-', $widget ) . '-div'; + + echo '<div id="' . $container_id . '">' . $loading_img .'</div>'; + echo '<script type="text/javascript">var wp_statistics_current_id = \'' . $post . '\';</script>'; + wp_statistics_generate_widget_load_javascript( $widget, $container_id ); +} + +function wp_statistics_editor_inline_javascript() { + $screen = get_current_screen(); + + if( 'post' != $screen->id && 'page' != $screen->id) { + return; + } + + wp_statistics_load_widget_css_and_scripts(); + + $loading_img = '<div style="width: 100%; text-align: center;"><img src=" ' . plugins_url('wp-statistics/assets/images/') . 'ajax-loading.gif" alt="' . __( 'Reloading...', 'wp_statistics' ) . '"></div>'; + + $new_buttons = '</button><button class="handlediv button-link wps-refresh" type="button" id="{{refreshid}}">' . wp_statistics_icons( 'dashicons-update' ) . '</button><button class="handlediv button-link wps-more" type="button" id="{{moreid}}">' . wp_statistics_icons( 'dashicons-migrate' ) . '</button>'; + $new_button = '</button><button class="handlediv button-link wps-refresh" type="button" id="{{refreshid}}">' . wp_statistics_icons( 'dashicons-update' ) . '</button>'; + + $admin_url = get_admin_url() . "/admin.php?page="; + + $page_urls = array(); + + $page_urls['wp_statistics_editor_meta_box_more_button'] = $admin_url . WP_STATISTICS_PAGES_PAGE . '&page-id='; + +?> +<script type="text/javascript"> + var wp_statistics_destinations = <?php echo json_encode( $page_urls ); ?>; + var wp_statistics_loading_image = '<?php echo $loading_img; ?>' + + function wp_statistics_wait_for_postboxes() { + + if( ! jQuery('#show-settings-link').is( ':visible') ) { + setTimeout( wp_statistics_wait_for_postboxes, 500 ); + } + + jQuery('.wps-refresh').unbind('click').on('click', wp_statistics_refresh_widget ); + jQuery('.wps-more').unbind('click').on('click', wp_statistics_goto_more ); + + jQuery('.hide-postbox-tog').on('click', wp_statistics_refresh_on_toggle_widget ); + } + + jQuery(document).ready(function(){ + + // Add the "more" and "refresh" buttons. + jQuery('.postbox').each( function () { + var temp = jQuery( this ); + var temp_id = temp.attr( 'id' ); + + if( temp_id == 'wp_statistics_editor_meta_box' ) { + + var temp_html = temp.html(); + + new_text = '<?php echo $new_buttons;?>'; + new_text = new_text.replace( '{{refreshid}}', temp_id + '_refresh_button' ); + new_text = new_text.replace( '{{moreid}}', temp_id + '_more_button' ); + + temp_html = temp_html.replace( '</button>', new_text ); + + temp.html( temp_html ); + } + }); + + // We have use a timeout here because we don't now what order this code will run in comparison to the postbox code. + // Any timeout value should work as the timeout won't run until the rest of the javascript as run through once. + setTimeout( wp_statistics_wait_for_postboxes, 100 ); + }); +</script> +<?php + } + +?> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/classes/hits.class.php b/plugins/wp-statistics/includes/classes/hits.class.php new file mode 100644 index 0000000..f7f48d2 --- /dev/null +++ b/plugins/wp-statistics/includes/classes/hits.class.php @@ -0,0 +1,634 @@ +<?php +/* + This is the primary class for recording hits on the WordPress site. It extends the WP_Statistics class and is itself extended by the GeoIPHits class. + + This class handles; visits, visitors and pages. +*/ + +// The GeoIP library from MaxMind and the IP Tools library are complex and have many dependencies, use the autoload.php file to handle them all. +require_once( plugin_dir_path( __FILE__ ) . '../../vendor/autoload.php' ); + +use phpbrowscap\Browscap; +use IPTools\IP; +use IPTools\Network; +use IPTools\Range; + +class Hits extends WP_Statistics { + + // Setup our public/private/protected variables. + public $result = null; + + protected $location = '000'; + protected $exclusion_match = FALSE; + protected $exclusion_reason = ''; + + private $exclusion_record = FALSE; + private $timestamp; + private $second; + private $current_page_id; + + // Construction function. + public function __construct() { + global $wp_version, $WP_Statistics; + + // Call the parent constructor (WP_Statistics::__construct) + parent::__construct(); + + // Set the timestamp value. + $this->timestamp = $this->current_date( 'U' ); + + // Set the default seconds a user needs to visit the site before they are considered offline. + $this->second = 30; + + // Get the user set value for seconds to check for users online. + if( $this->get_option('check_online') ) { + $this->second = $this->get_option( 'check_online' ); + } + + // Check to see if the user wants us to record why we're excluding hits. + if( $this->get_option( 'record_exclusions' ) ) { + $this->exclusion_record = TRUE; + } + + // Create a IP Tools instance from the current IP address for use later. + // Fall back to the localhost if it can't be parsed. + try { + $ip = new IP( $this->ip ); + } + catch( Exception $e ) { + $ip = new IP( '127.0.0.1' ); + } + + // Let's check to see if our subnet matches a private IP address range, if so go ahead and set the location information now. + if( $this->get_option( 'private_country_code' ) != '000' && $this->get_option( 'private_country_code' ) != '' ) { + $private_subnets = array( '10.0.0.0/8', '172.16.0.0/12', '192.168.0.0/16', '127.0.0.1/24', 'fc00::/7' ); + + foreach( $private_subnets as $psub ) { + $contains_ip = false; + + try { + $contains_ip = Range::parse( $psub )->contains( $ip ); + } + catch( Exception $e ) { + $contains_ip = false; + } + + if( $contains_ip ) { + $this->location = $this->get_option( 'private_country_code' ); + break; + } + } + } + + // The follow exclusion checks are done during the class construction so we don't have to execute them twice if we're tracking visits and visitors. + // + // Order of exclusion checks is: + // 1 - Robots + // 2 - IP/Subnets + // 3 - Self Referrals, Referrer Spam & login page + // 4 - User roles + // 5 - Host name list + // + // The GoeIP exclusions will be processed in the GeoIP hits class constructor. + // + + $crawler = false; + $ua_string = ''; + + if( array_key_exists( 'HTTP_USER_AGENT', $_SERVER ) ) { + $ua_string = $_SERVER['HTTP_USER_AGENT']; + } + + if( $this->get_option('last_browscap_dl') > 1 && $this->get_option('browscap') ) { + // Get the upload directory from WordPress. + $upload_dir = wp_upload_dir(); + + // Create a variable with the name of the database file to download. + $BrowscapFile = $upload_dir['basedir'] . '/wp-statistics'; + + // Get the Browser Capabilities use Browscap. + $bc = new Browscap( $BrowscapFile ); + $bc->doAutoUpdate = false; // We don't want to auto update. + try { + $current_browser = $bc->getBrowser(); + // Make sure we got an object back and it has the Crawler property before accessing it. + if( is_object( $current_browser ) && property_exists( $current_browser, 'Crawler') ) { + $crawler = $current_browser->Crawler; + } + else { + $crawler = false; + } + } + catch( Exception $e ) { + $crawler = false; + } + } + else { + $this->update_option( 'update_browscap', true ); + } + + // If we're a crawler as per browscap, exclude us, otherwise double check based on the WP Statistics robot list. + if( $crawler == true ) { + $this->exclusion_match = TRUE; + $this->exclusion_reason = 'browscap'; + } + else { + // Pull the robots from the database. + $robots = explode( "\n", $this->get_option( 'robotlist' ) ); + + // Check to see if we match any of the robots. + foreach($robots as $robot) { + $robot = trim( $robot ); + + // If the match case is less than 4 characters long, it might match too much so don't execute it. + if( strlen( $robot ) > 3 ) { + if( stripos( $ua_string, $robot ) !== FALSE ) { + $this->exclusion_match = TRUE; + $this->exclusion_reason = 'robot'; + + break; + } + } + } + + // Finally check to see if we have corrupt header information. + if( !$this->exclusion_match && $this->get_option( 'corrupt_browser_info' ) ) { + if( $ua_string == '' || $this->ip == '' ) { + $this->exclusion_match = TRUE; + $this->exclusion_reason = 'robot'; + } + } + } + + // If we didn't match a robot, check ip subnets. + if( !$this->exclusion_match ) { + // Pull the subnets from the database. + $subnets = explode( "\n", $this->get_option( 'exclude_ip' ) ); + + // Check to see if we match any of the excluded addresses. + foreach( $subnets as $subnet ) { + $subnet = trim( $subnet ); + + // The shortest ip address is 1.1.1.1, anything less must be a malformed entry. + if( strlen( $subnet ) > 6 ) { + $range_prased = false; + + try { + $range_prased = Range::parse( $subnet )->contains( $ip ); + } + catch( Exception $e ) { + $range_parased = false; + } + + if( $range_prased ) { + $this->exclusion_match = TRUE; + $this->exclusion_reason = 'ip match'; + + break; + } + } + } + + // Check to see if we are being referred to ourselves. + if( !$this->exclusion_match ) { + if( $ua_string == 'WordPress/' . $wp_version . '; ' . get_home_url( null, '/' ) || $ua_string == 'WordPress/' . $wp_version . '; ' . get_home_url() ) { + $this->exclusion_match = TRUE; + $this->exclusion_reason = 'self referral'; + } + + if( $this->get_option( 'exclude_loginpage' ) ) { + $protocol = strpos( strtolower( $_SERVER['SERVER_PROTOCOL'] ), 'https' ) === FALSE ? 'http' : 'https'; + $host = $_SERVER['HTTP_HOST']; + $script = $_SERVER['SCRIPT_NAME']; + + $currentURL = $protocol . '://' . $host . $script; + $loginURL = wp_login_url(); + + if( $currentURL == $loginURL ) { + $this->exclusion_match = TRUE; + $this->exclusion_reason = 'login page'; + } + } + + if( $this->get_option( 'exclude_adminpage' ) && ! $this->exclusion_match ) { + $protocol = strpos( strtolower( $_SERVER['SERVER_PROTOCOL'] ), 'https' ) === FALSE ? 'http' : 'https'; + $host = $_SERVER['HTTP_HOST']; + $script = $_SERVER['SCRIPT_NAME']; + + $currentURL = $protocol . '://' . $host . $script; + $adminURL = get_admin_url(); + + $currentURL = substr( $currentURL, 0, strlen( $adminURL ) ); + + if( $currentURL == $adminURL ) { + $this->exclusion_match = TRUE; + $this->exclusion_reason = 'admin page'; + } + } + + if( $this->get_option( 'referrerspam' ) && ! $this->exclusion_match ) { + $referrer = $this->get_Referred(); + + // Pull the referrer spam list from the database. + $referrerspamlist = explode( "\n", $this->get_option( 'referrerspamlist' ) ); + + // Check to see if we match any of the robots. + foreach( $referrerspamlist as $item ) { + $item = trim( $item ); + + // If the match case is less than 4 characters long, it might match too much so don't execute it. + if( strlen( $item ) > 3) { + if( stripos( $referrer, $item ) !== FALSE ) { + $this->exclusion_match = TRUE; + $this->exclusion_reason = 'referrer_spam'; + + break; + } + } + } + } + + if( $this->get_option( 'exclude_feeds' ) && ! $this->exclusion_match ) { + if( is_object( $WP_Statistics ) ) { + if( $WP_Statistics->check_feed() ) { + $this->exclusion_match = TRUE; + $this->exclusion_reason = 'feed'; + } + } + } + + if( $this->get_option( 'exclude_404s' ) && ! $this->exclusion_match ) { + if( is_404() ) { + $this->exclusion_match = TRUE; + $this->exclusion_reason = '404'; + } + } + + if( $this->get_option( 'excluded_urls' ) && ! $this->exclusion_match ) { + $script = $_SERVER['REQUEST_URI']; + $delimiter = strpos( $script, '?' ); + if( $delimiter > 0 ) { + $script = substr( $script, 0, $delimiter ); + } + + $excluded_urls = explode( "\n", $this->get_option( 'excluded_urls' ) ); + + foreach( $excluded_urls as $url ) { + $this_url = trim( $url ); + + if( strlen( $this_url ) > 2 ) { + if( stripos( $script, $this_url ) === 0 ) { + $this->exclusion_match = TRUE; + $this->exclusion_reason = 'excluded url'; + + break; + } + } + } + } + + // Check to see if we are excluding based on the user role. + if( !$this->exclusion_match ) { + if( is_user_logged_in() ) { + $current_user = wp_get_current_user(); + + foreach( $current_user->roles as $role ) { + $option_name = 'exclude_' . str_replace( ' ', '_', strtolower( $role ) ); + if( $this->get_option( $option_name ) == TRUE ) { + $this->exclusion_match = TRUE; + $this->exclusion_reason = 'user role'; + + break; + } + } + } + + // Check to see if we are excluded by the host name. + if( !$this->exclusion_match ) { + $excluded_host = explode( "\n", $this->get_option( 'excluded_hosts' ) ); + + // If there's nothing in the excluded host list, don't do anything. + if( count( $excluded_host ) > 0 ) { + $transient_name = 'wps_excluded_hostname_to_ip_cache'; + + // Get the transient with the hostname cache. + $hostname_cache = get_transient( $transient_name ); + + // If the transient has expired (or has never been set), create one now. + if( $hostname_cache === false ) { + // Flush the failed cache variable. + $hostname_cache = array(); + + // Loop through the list of hosts and look them up. + foreach( $excluded_host as $host ) { + if( strpos( $host, '.' ) > 0 ) { + // We add the extra period to the end of the host name to make sure we don't append the local dns suffix to the resolution cycle. + $hostname_cache[$host] = gethostbyname( $host . '.' ); + } + } + + // Set the transient and store it for 1 hour. + set_transient( $transient_name, $hostname_cache, 360 ); + } + + // Check if the current IP address matches one of the ones in the excluded hosts list. + if( in_array( $this->ip, $hostname_cache ) ) { + $this->exclusion_match = TRUE; + $this->exclusion_reason = 'hostname'; + } + } + } + } + } + } + } + + // This function records visits to the site. + public function Visits() { + + // If we're a webcrawler or referral from ourselves or an excluded address don't record the visit. + if( !$this->exclusion_match ) { + + // Check to see if we're a returning visitor. + $this->result = $this->db->get_row( "SELECT * FROM {$this->tb_prefix}statistics_visit ORDER BY `{$this->tb_prefix}statistics_visit`.`ID` DESC" ); + + // If we're a returning visitor, update the current record in the database, otherwise, create a new one. + if( $this->result->last_counter != $this->Current_Date( 'Y-m-d' ) ) { + // We'd normally use the WordPress insert function, but since we may run in to a race condition where another hit to the site has already created a new entry in the database + // for this IP address we want to do an "INSERT ... ON DUPLICATE KEY" which WordPress doesn't support. + $sqlstring = $this->db->prepare( 'INSERT INTO ' . $this->tb_prefix . 'statistics_visit (last_visit, last_counter, visit) VALUES ( %s, %s, %d) ON DUPLICATE KEY UPDATE visit = visit + ' . $this->coefficient, $this->Current_Date(), $this->Current_date( 'Y-m-d' ), $this->coefficient ); + + $this->db->query( $sqlstring ); + } else { + $sqlstring = $this->db->prepare( 'UPDATE ' . $this->tb_prefix . 'statistics_visit SET `visit` = `visit` + %d, `last_visit` = %s WHERE `last_counter` = %s', $this->coefficient, $this->Current_Date(), $this->result->last_counter ); + + $this->db->query( $sqlstring ); + } + } + } + + // This function records unique visitors to the site. + public function Visitors() { + global $wp_query, $WP_Statistics; + + // Get the pages or posts ID if it exists. + if( is_object( $wp_query ) ) { + $this->current_page_id = $wp_query->get_queried_object_id(); + } + + if( $this->get_option( 'use_honeypot' ) && $this->get_option( 'honeypot_postid') > 0 && $this->get_option( 'honeypot_postid' ) == $this->current_page_id && $this->current_page_id > 0 ) { + $this->exclusion_match = TRUE; + $this->exclusion_reason = 'honeypot'; + } + + // If we're a webcrawler or referral from ourselves or an excluded address don't record the visit. + // The exception here is if we've matched a honey page, we want to lookup the user and flag them + // as having been trapped in the honey pot for later exclusions. + if( $this->exclusion_reason == 'honeypot' || ! $this->exclusion_match ) { + + // Check to see if we already have an entry in the database. + if( $this->ip_hash != false ) { + $this->result = $this->db->get_row( "SELECT * FROM {$this->tb_prefix}statistics_visitor WHERE `last_counter` = '{$this->Current_Date('Y-m-d')}' AND `ip` = '{$this->ip_hash}'" ); + } + else { + $this->result = $this->db->get_row( "SELECT * FROM {$this->tb_prefix}statistics_visitor WHERE `last_counter` = '{$this->Current_Date('Y-m-d')}' AND `ip` = '{$this->ip}' AND `agent` = '{$this->agent['browser']}' AND `platform` = '{$this->agent['platform']}' AND `version` = '{$this->agent['version']}'" ); + } + + // Check to see if this is a visit to the honey pot page, flag it when we create the new entry. + $honeypot = 0; + if( $this->exclusion_reason == 'honeypot' ) { $honeypot = 1; } + + // If we don't create a new one, otherwise update the old one. + if( !$this->result ) { + + // If we've been told to store the entire user agent, do so. + if( $this->get_option( 'store_ua' ) == true ) { + $ua = $_SERVER['HTTP_USER_AGENT']; + } else { + $ua = ''; + } + + // Store the result. + // We'd normally use the WordPress insert function, but since we may run in to a race condition where another hit to the site has already created a new entry in the database + // for this IP address we want to do an "INSERT IGNORE" which WordPress doesn't support. + $sqlstring = $this->db->prepare( 'INSERT IGNORE INTO ' . $this->tb_prefix . 'statistics_visitor (last_counter, referred, agent, platform, version, ip, location, UAString, hits, honeypot) VALUES ( %s, %s, %s, %s, %s, %s, %s, %s, 1, %s )', $this->Current_date( 'Y-m-d' ), $this->get_Referred(), $this->agent['browser'], $this->agent['platform'], $this->agent['version'], $this->ip_hash ? $this->ip_hash : $this->ip, $this->location, $ua, $honeypot ); + + $this->db->query( $sqlstring ); + + // Now parse the referrer and store the results in the search table if the database has been converted. + // Also make sure we actually inserted a row on the INSERT IGNORE above or we'll create duplicate entries. + if( $this->get_option( 'search_converted' ) && $this->db->insert_id ) { + + $search_engines = wp_statistics_searchengine_list(); + $referred = $this->get_Referred(); + + // Parse the URL in to it's component parts. + $parts = parse_url( $referred ); + + // Loop through the SE list until we find which search engine matches. + foreach( $search_engines as $key => $value ) { + $search_regex = wp_statistics_searchengine_regex( $key ); + + preg_match( '/' . $search_regex . '/', $parts['host'], $matches); + + if( isset($matches[1]) ) { + $data['last_counter'] = $this->Current_date( 'Y-m-d' ); + $data['engine'] = $key; + $data['words'] = $WP_Statistics->Search_Engine_QueryString( $referred ); + $data['host'] = $parts['host']; + $data['visitor'] = $this->db->insert_id ; + + if( $data['words'] == 'No search query found!' ) { $data['words'] = ''; } + + $this->db->insert( $this->db->prefix . 'statistics_search', $data ); + } + } + } + } + else { + // Normally we've done all of our exclusion matching during the class creation, however for the robot threshold is calculated here to avoid another call the database. + if( $this->get_option( 'robot_threshold' ) > 0 && $this->result->hits + 1 > $this->get_option( 'robot_threshold' ) ) { + $this->exclusion_match = TRUE; + $this->exclusion_reason = 'robot_threshold'; + } + else if( $this->result->honeypot ) { + $this->exclusion_match = TRUE; + $this->exclusion_reason = 'honeypot'; + } + else { + + $sqlstring = $this->db->prepare( 'UPDATE ' . $this->tb_prefix . 'statistics_visitor SET `hits` = `hits` + %d, `honeypot` = %d WHERE `ID` = %d', 1 - $honeypot, $honeypot, $this->result->ID ); + + $this->db->query( $sqlstring ); + } + } + } + + if( $this->exclusion_match ) { + $this->RecordExclusion(); + } + } + + private function RecordExclusion() { + // If we're not storing exclusions, just return. + if( $this->exclusion_record != TRUE ) { + return; + } + + $this->result = $this->db->query( "UPDATE {$this->tb_prefix}statistics_exclusions SET `count` = `count` + 1 WHERE `date` = '{$this->Current_Date( 'Y-m-d' )}' AND `reason` = '{$this->exclusion_reason}'" ); + + if( !$this->result ) { + $this->db->insert( + $this->tb_prefix . 'statistics_exclusions', + array( + 'date' => $this->Current_date( 'Y-m-d' ), + 'reason' => $this->exclusion_reason, + 'count' => 1 + ) + ); + } + } + + // This function records page hits. + public function Pages() { + global $wp_query; + + // If we're a webcrawler or referral from ourselves or an excluded address don't record the page hit. + if( !$this->exclusion_match ) { + + // Don't track anything but actual pages and posts, unless we've been told to. + if( $this->get_option('track_all_pages') || is_page() || is_single() || is_front_page() ) { + // Get the pages or posts ID if it exists and we haven't set it in the visitors code. + if( ! $this->current_page_id && is_object( $wp_query ) ) { + $this->current_page_id = $wp_query->get_queried_object_id(); + } + + // If we didn't find a page id, we don't have anything else to do. + if( ! $this->current_page_id ) { + return; + } + + // Get the current page URI. + $page_uri = wp_statistics_get_uri(); + + if( $this->get_option( 'strip_uri_parameters' ) ) { + $temp = explode( '?', $page_uri ); + if( $temp !== false ) { + $page_uri = $temp[0]; + } + } + + // Limit the URI length to 255 characters, otherwise we may overrun the SQL field size. + $page_uri = substr( $page_uri, 0, 255); + + // If we have already been to this page today (a likely scenario), just update the count on the record. + $sql = $this->db->prepare( "UPDATE {$this->tb_prefix}statistics_pages SET `count` = `count` + 1 WHERE `date` = '{$this->Current_Date( 'Y-m-d' )}' AND `uri` = %s", $page_uri ); + $this->result = $this->db->query($sql); + + // If the update failed (aka the record doesn't exist), insert a new one. Note this may drop a page hit if a race condition + // exists where two people load the same page a the roughly the same time. In that case two inserts would be attempted but + // there is a unique index requirement on the database and one of them would fail. + if( !$this->result ) { + + $this->db->insert( + $this->tb_prefix . 'statistics_pages', + array( + 'uri' => $page_uri, + 'date' => $this->Current_date( 'Y-m-d' ), + 'count' => 1, + 'id' => $this->current_page_id + ) + ); + } + } + } + } + + // This function checks to see if the current user (as defined by their IP address) has an entry in the database. + // Note we set the $this->result variable so we don't have to re-execute the query when we do the user update. + public function Is_user() { + + if( $this->ip_hash != false ) { + $this->result = $this->db->query( "SELECT * FROM {$this->tb_prefix}statistics_useronline WHERE `ip` = '{$this->ip_hash}'" ); + } + else { + $this->result = $this->db->query( "SELECT * FROM {$this->tb_prefix}statistics_useronline WHERE `ip` = '{$this->ip}' AND `agent` = '{$this->agent['browser']}' AND `platform` = '{$this->agent['platform']}' AND `version` = '{$this->agent['version']}'" ); + } + + if( $this->result ) + return true; + } + + // This function add/update/delete the online users in the database. + public function Check_online() { + // If we're a webcrawler or referral from ourselves or an excluded address don't record the user as online, unless we've been told to anyway. + if( ! $this->exclusion_match || $this->get_option( 'all_online' )) { + + // If the current user exists in the database already, just update them, otherwise add them + if( $this->Is_user() ) { + $this->Update_user(); + } else { + $this->Add_user(); + } + } + + // Remove users that have gone offline since the last check. + $this->Delete_user(); + } + + // This function adds a user to the database. + public function Add_user() { + if(!$this->Is_user()) { + + // Insert the user in to the database. + $this->db->insert( + $this->tb_prefix . 'statistics_useronline', + array( + 'ip' => $this->ip_hash ? $this->ip_hash : $this->ip, + 'timestamp' => $this->timestamp, + 'created' => $this->timestamp, + 'date' => $this->Current_Date(), + 'referred' => $this->get_Referred(), + 'agent' => $this->agent['browser'], + 'platform' => $this->agent['platform'], + 'version' => $this->agent['version'], + 'location' => $this->location, + ) + ); + } + + } + + // This function updates a user in the database. + public function Update_user() { + // Make sure we found the user earlier when we called Is_user(). + if( $this->result) { + + // Update the database with the new information. + $this->db->update( + $this->tb_prefix . 'statistics_useronline', + array( + 'timestamp' => $this->timestamp, + 'date' => $this->Current_Date(), + 'referred' => $this->get_Referred(), + ), + array( + 'ip' => $this->ip_hash ? $this->ip_hash : $this->ip, + 'agent' => $this->agent['browser'], + 'platform' => $this->agent['platform'], + 'version' => $this->agent['version'], + 'location' => $this->location, + ) + ); + } + } + + // This function removes expired users. + public function Delete_user() { + // We want to delete users that are over the number of seconds set by the admin. + $timediff = $this->timestamp - $this->second; + + // Call the deletion query. + $this->db->query( "DELETE FROM {$this->tb_prefix}statistics_useronline WHERE timestamp < '{$timediff}'" ); + } +} \ No newline at end of file diff --git a/plugins/wp-statistics/includes/classes/hits.geoip.class.php b/plugins/wp-statistics/includes/classes/hits.geoip.class.php new file mode 100644 index 0000000..01a07b5 --- /dev/null +++ b/plugins/wp-statistics/includes/classes/hits.geoip.class.php @@ -0,0 +1,65 @@ +<?php +/* + This is the class for recording GeoIP information for hits on the WordPress site. It extends the Hits class. +*/ + +// Load the classes. +use GeoIp2\Database\Reader; + +class GeoIPHits extends Hits { + public function __construct() { + + // Call the parent constructor (WP_Statistics::__constructor). + parent::__construct(); + + // We may have set the location based on a private IP address in the hits class, if so, don't bother looking it up again. + if( $this->location == '000' ) { + + // Now get the location information from the MaxMind database. + try + { + // Get the WordPress upload directory information, which is where we have stored the MaxMind database. + $upload_dir = wp_upload_dir(); + + // Create a new Reader and point it to the database. + $reader = new Reader( $upload_dir['basedir'] . '/wp-statistics/GeoLite2-Country.mmdb' ); + + // Look up the IP address + $record = $reader->country( $this->ip ); + + // Get the location. + $location = $record->country->isoCode; + + // MaxMind returns a blank for location if it can't find it, but we want to use 000 so replace it. + if( $location == "" ) { $location = "000"; } + } + catch( Exception $e ) + { + $location = "000"; + } + + // Store the location in the protected $location variable from the parent class. + $this->location = $location; + } + + // Check to see if we are excluded by the GeoIP rules. + if( !$this->exclusion_match ) { + // Grab the excluded/included countries lists, force the country codes to be in upper case to match what the GeoIP code uses. + $excluded_countries = explode( "\n", strtoupper( str_replace( "\r\n", "\n", $this->get_option('excluded_countries') ) ) ); + $included_countries_string = trim( strtoupper( str_replace( "\r\n", "\n", $this->get_option('included_countries') ) ) ); + + // We need to be really sure this isn't an empty string or explode will return an array with one entry instead of none. + if( $included_countries_string == '' ) { $included_countries = array(); } else { $included_countries = explode( "\n", $included_countries_string ); } + + // Check to see if the current location is in the excluded countries list. + if( in_array( $this->location, $excluded_countries ) ) { + $this->exclusion_match = TRUE; + $this->exclusion_reason = "geoip"; + } // Check to see if the current location is not the included countries list. + else if( !in_array( $this->location, $included_countries ) && count( $included_countries ) > 0 ) { + $this->exclusion_match = TRUE; + $this->exclusion_reason = "geoip"; + } + } + } +} \ No newline at end of file diff --git a/plugins/wp-statistics/includes/classes/pagination.class.php b/plugins/wp-statistics/includes/classes/pagination.class.php new file mode 100644 index 0000000..a660bed --- /dev/null +++ b/plugins/wp-statistics/includes/classes/pagination.class.php @@ -0,0 +1,550 @@ +<?php +/** +* Pagination Class +* +* This class displays a pagination navigation bar complete with links to first, last, +* previous, next, and all pages. This class handles cookie setting, page bounds checking/ +* redirection, appropriate error reporting, CSS styling, and POST/GET retrieval all +* internally. +* +* PHP version 5 +* +* @author Dane Gardow <dane.g87@gmail.com> +* @copyright 2013 Dane Gardow +* @date 01 January 2013 +* @version 1.0 +* @license Free +* +******************************************************************************************/ + +if(!class_exists("WP_Statistics_Pagination")): // Prevent multiple class definitions + +class WP_Statistics_Pagination +{ + /******************************************************* + PROPERTIES / DATA MEMBERS + *******************************************************/ + + // Edit these as you desire + const DEFAULT_ENTRIES_DISPLAY = 10; // Default number of entries to display per page + const PAGE_GETVAR_NAME = "page"; // Name of GET variable name for page values (i.e., example.php?page=1) + + private $_paginationID = "pagination"; // ID Name of pagination object "pagination" is default + // used also for form name for select options + + // Do not edit these values; they are simply null initializations + private $_totalEntries = null; // Total number of entries (usually supplied by MySQL query) + private $_pagesPerSection = null; // Total number of pages displayed per section (supplied by admin) + private $_entriesPerPage = null; // Total number of entries displayed per page (supplied by user) + private $_currentPage = null; // Current page viewed by user + private $_displayOptions = array(); // Array of options for viewing how many entries per page (supplied by user) + private $_errors = array(); // Array of encountered error messages + private $_styles = array(); // Array of CSS styles for pagination navigation display + + + + + /******************************************************* + CONSTRUCTOR + *******************************************************/ + + function __construct($totalEntries, $pagesPerSection, $options = "", $paginationID = "", $stylePageOff = "", + $stylePageOn = "", $styleErrors = "", $styleSelect = "") + { + $this->setPaginationID($paginationID); // Set ID name of pagination object + $this->setTotalEntries($totalEntries); // Set total entries + $this->setPagesPerSection($pagesPerSection); // Set pages per section + $this->setDisplayOptions($options); // Set viewing display options + $this->setEntriesPerPage(); // Set entries per page (input from POST or cookies) + $this->setCurrentPage(); // Set current page (input from GET) + // ! This function must follow after setEntriesPerPage() + $this->setStyles($stylePageOff, $stylePageOn, + $styleSelect, $styleErrors); // Set CSS styles for pagination navigation display + } + + + + /******************************************************* + UTILITY FUNCTIONS + *******************************************************/ + + public function deleteCookie() // deletes the cookie if it exists + { + $cookieVar = $this->_getPOSTVarName(); + + if(isset($_COOKIE[$cookieVar])) // If cookie is set + { + $_COOKIE[$cookieVar] = ""; // Clear cookie + setcookie($cookieVar, "", time()-3600, "/"); // Delete cookie + } + } + + private function _getURL($input = 1) // returns appropriate URL with all GET variables intact + { // updates only the particular GET variable in question + $getVars = $_GET; // Get all GET variables + + /* Uncomment this if you need to exclude any GET variables (due to HTACCESS issues, for example) from being + * processed in the ensuing URL. Simply enter in the GET variable name in the unset(...) function below. + unset($getVars["foo"], $getVars["bar"], ... ); // Remove any so they do not appear in URL + */ + + $output = '?'.http_build_query(array_merge($getVars, array($this->_getIDGETVarName()=>$input))); + $output .= '#'. $this->getPaginationID(); // Add #xxx at the end of URL for auto-scrolling + + return $output; + } + + private function _isError() // determines if an error exists and registers any errors + { + if($this->_errors) // If error already exists, return + return true; + + if(!$this->_totalEntries) // If total entries not set + $this->_errors[] = "The value for <strong>total entries</strong> has not been specified."; + + if(!$this->_displayOptions) // If display options not set + $this->_errors[] = "The values for <strong>display options</strong> have not been specified."; + + if(!$this->_entriesPerPage) // If entries per page not set + $this->_errors[] = "The value for <strong>entries per page</strong> has not been specified."; + + if(!$this->_currentPage) // If current page not set + $this->_errors[] = "The value for <strong>current page</strong> has not been specified."; + + return ($this->_errors) ? true : false; + } + + private function _validEntry($input) // determines if input is valid + { + if(is_array($input)) // If array + { + foreach($input as $element) + { // Recursion: evaluate each array element + if(!$this->_validEntry($element)) // If invalid + return false; + } + + return true; // If function makes it to this point, it is valid + } + else // If not array + { + if( (preg_match("/^\d+$/",$input) && $input > 0) || strtolower($input) == "all") // If positive digit or "all" + return true; + else + return false; + } + } + + private function _navBox($text, $destinationPage, $end = 0) // returns span-encased link for pagination bar + { + switch($end) + { + case 1: + $title = "First page"; + break; + case 2: + $title = "Previous page"; + break; + case 3: + $title = "Next page"; + break; + case 4: + $title = "Last page (". $this->getTotalPages() .")"; + break; + default: + $title = ""; + break; + } + + $title = ($end > 0 && $title != "") ? 'title="' . $title . '"' : ''; + + $style = $this->_styles["pageOff"]; + + // Determine Style + $style = ($this->_currentPage == $destinationPage && !$end) ? $this->_styles["pageOn"] : $this->_styles["pageOff"]; + + // Determine Link URL/Text + $url = ""; + + if($this->_currentPage != $destinationPage // If current page is not same as destination page + && $destinationPage <= $this->getTotalPages() // and destination page does not exceed last page + && $destinationPage >= 1) // and destination page is not less than first page + { + $text = '<a href="'. $this->_getURL($destinationPage) .'">'. $text .'</a>'; // then make $text a link + } + + if($style) + $style = 'class="'. $style .'"'; + + $onClick = ($url) ? "onclick=\"location.href='". $url ."'\"" : ""; // Determine if span element is clickable + + return '<span '. $style . $title .' '. $onClick .'>'. $text .'</span>'; + } + + + + /******************************************************* + DISPLAY FUNCTIONS + *******************************************************/ + + public function display() // displays the pagination bar + { + if($this->_isError()) // If error encountered, do not display, but display errors + return $this->displayErrors(); + + $firstPage = 1; + $previousPage = $this->_currentPage - 1; + $nextPage = $this->_currentPage + 1; + $lastPage = $this->getTotalPages(); + + $totalpages = $this->getTotalPages(); + + $pagesPerSection = $this->getPagesPerSection(); + + $sectionStart = $this->_currentPage - floor($pagesPerSection / 2); // Section start is current page # minus half the # of pages per section + + if($sectionStart <= 0) // Adjust section start to 1 (first page) if # pages between 1st page + $sectionStart = 1; // and current page is less than half the # of pages per section + + $sectionEnd = $sectionStart + $pagesPerSection - 1; // Section end is # pages per section after section start, + // minus 1 (otherwise # of pages per section will exceed given amount by 1) + + if($sectionEnd > $lastPage) // Adjust section end to last page if section end exceeds last page + $sectionEnd = $lastPage; + + $sectionStart = $sectionEnd - $pagesPerSection + 1; // Adjust section start to # of pages behind section end + + $output = $this->_navBox("<<", $firstPage, 1); // First page + $output .= $this->_navBox("<", $previousPage, 2); // Previous page + + for($i = $sectionStart; $i <= $sectionEnd; ++$i) + $output .= $this->_navBox($i, $i); // Pagination + + $output .= $this->_navBox(">", $nextPage, 3); // Next Page + $output .= $this->_navBox(">>", $lastPage, 4); // Last Page + + return $output; + } + + public function displayErrors() // displays the errors encountered + { + if(!$this->_errors) + return "No errors were encountered."; + + $words = (count($this->_errors) > 1) ? "errors were" : "error was"; + + // Determine CSS styling for error reporting + if($this->_styles["errors"]) + $css = 'class="'. $this->_styles["errors"] .'"'; + else + $css = ''; + + $output = ' + <div '. $css .'> + The following '. $words .' encountered while using the '. get_class($this) .' class:<br/><br/> + <ul>'; + + foreach($this->_errors as $error) + $output .= '<li>'. $error .'</li>'; + + $output .= ' + </ul> + </div>'; + + return $output; + } + + public function displaySelectInterface() // displays the <select> interface for choosing display amount + { + if(count($this->_displayOptions) < 2) // If only 1 or fewer options, do not display + return; + + if($this->_isError()) // If error encountered, do not display + return; + + static $count = 0; // This counts how many times function is run. + // This variable value is tacked on the end of the form name which + // will enable multiple instances of the display interface form + + $paginationID = $this->getPaginationID(); + + $formName = $paginationID. '_select_form'; + + // Determine CSS styling for <select> + if($this->_styles["select"]) + $css = 'class="'. $this->_styles["select"] .'"'; + else + $css = ""; + + $formNumber = ($count) ? $count : ""; + + $output = ' + <form name="'. $formName . $formNumber .'" method="post" style="display:inline-block;" action="'. $this->_getURL($this->_currentPage) .'"> + Show: + <select '. $css .' name="'. $this->_getPOSTVarName() .'" OnChange ="'. $formName . $formNumber .'.submit()">'; + + foreach($this->_displayOptions as $line) + { + if($this->_entriesPerPage == $line || $this->_entriesPerPage == $this->_totalEntries) // If option equals entries per page + $selected = "selected"; // or entries per page equals total entries + else // then select option, otherwise + $selected = ""; // leave unselected + + $output .= '<option value="'. $line .'" '. $selected .'>'. $line .'</option>'; + } + + $output .= ' + </select> + <noscript><input type="submit" name="paginationDisplaySubmit" value="Display"/></noscript> + </form>'; + + ++$count; // Increase # of times this function has run + + return $output; + } + + + + /******************************************************* + SET FUNCTIONS + *******************************************************/ + + public function setCurrentPage() // sets the currently accessed page from GET value + { + $idVar = $this->_getIDGETVarName(); + + if(isset($_GET[$idVar])) // If GET set + $page = $_GET[$idVar]; // Retrieve page from GET + else + $page = 1; // Otherwise use first page + + if($page < 1 || !preg_match("/^\d+$/", $page)) // If page is less than 1 or page value not a digit + { + header("Location: ". $this->_getURL()); // No argument for _getURL() sets it to 1 (first page) + exit; + } + + if($page > $this->getTotalPages() && $this->getTotalPages() != 0) // If page exceeds last page + { // 2nd condition prevents infinite loop should it equal 0 + header("Location: ". $this->_getURL($this->getTotalPages())); + exit; + } + + $this->_currentPage = $page; + } + + public function setDisplayOptions($input) // sets the user-specified display amount + { + if(!$this->_validEntry($input)) // If invalid entry encountered, register error and exit function + { + if(is_array($input)) // If array + { + $argument = ""; + + foreach($input as $key=>$element) + { + if($key > 0) + $argument .= ", "; + + $argument .= $element; // Save all elements in string + } + } + else // If not array + { + $argument = $input; + } + + $this->_errors[] = "The value(s) set for <strong>display options</strong> is/are invalid: ". $argument; + + return; + } + + if(!is_array($input) && strtolower($input) == "all") // If Not Array and "All" selected + $input = $this->_totalEntries; // Set total entries value + + $this->_displayOptions = $input; + } + + public function setEntriesPerPage() // sets entries per page amount from POST or COOKIE values + { + if($this->_errors) // If an error, quit + return; + + $varName = $this->_getPOSTVarName(); + + if(count($this->_displayOptions) > 1) // If more than 1 display option + { + $value = $this->_displayOptions[0]; // Default is first selection + + if(isset($_POST[$varName])) // If POST is set + { + if(in_array($_POST[$varName], $this->_displayOptions)) // Check for valid post value + { + $value = $_POST[$varName]; + setcookie($varName, $value, 604800 + time(), "/"); // Set cookie + $_COOKIE[$varName] = $value; + } + else // If invalid post value + { + $value = self::DEFAULT_ENTRIES_DISPLAY; // Set to default if invalid + } + } + elseif(isset($_COOKIE[$varName])) // If POST not set, but COOKIE set + { + // Check for valid cookie value + if(in_array($_COOKIE[$varName], $this->_displayOptions)) // Check for valid cookie value + { + $value = $_COOKIE[$varName]; // Set to value if valid + } + else + { + $value = self::DEFAULT_ENTRIES_DISPLAY; // Set to default if invalid + $this->deleteCookie(); // Delete invalid cookie + } + } + } + else // If only one option, set either to default or displayOptions value + { + $value = ($this->_displayOptions) ? $this->_displayOptions : self::DEFAULT_ENTRIES_DISPLAY; + } + + if(strtolower($value) == "all") // If set to "All", use total entries + $value = $this->_totalEntries; + + $this->_entriesPerPage = $value; + } + + public function setPagesPerSection($input) // sets # of pages per section + { + if(!$this->_validEntry($input)) + { + $this->_errors[] = "The value set for <strong>pages per section</strong> is invalid: ". $input; + return; + } + + $this->_pagesPerSection = $input; + } + + public function setPaginationID($input) + { + if($input) + { + if(preg_match("/^\d+$/",$input[0])) // Check if first character is a digit + { + $this->_errors[] = "The first character of the <strong>pagination ID</strong> cannot be a number: ". $input; + return; // cannot be a digit because variable names cannot start with digits, + } // and this value will be used as a variable name + + $this->_paginationID = $input; + } + } + + public function setStyles($pageOff = "", $pageOn = "", $select = "", $errors = "") // sets CSS style class names + { + $this->_styles = array( + "pageOff" => $pageOff, + "pageOn" => $pageOn, + "select" => $select, + "errors" => $errors + ); + } + + public function setTotalEntries($input) // sets total number of entries + { + if(!$this->_validEntry($input)) + { + $this->_errors[] = "The value set for <strong>total entries</strong> is invalid: ". $input; + return; + } + + $this->_totalEntries = $input; + } + + + + + /******************************************************* + GET FUNCTIONS + *******************************************************/ + + private function _getIDGETVarName() // returns GET variable name for pagination pages + { + return $this->getPaginationID() .'-'. self::PAGE_GETVAR_NAME; + } + + private function _getPOSTVarName() // returns POST variable name for select/cookie entities + { + return $this->getPaginationID().'Display'; + } + + public function getCurrentPage() // returns the currently accessed page number + { + if(!$this->_currentPage) // If not set, return first page + return 1; + else + return $this->_currentPage; + } + + public function getPagesPerSection() // returns the # of pages per section + { + if(!$this->_pagesPerSection) // If not set, set error and return 0 + { + $this->_errors[] = "The value for <strong>pages per section</strong> has not been set."; + return 0; + } + + if($this->_pagesPerSection > $this->getTotalPages()) // If per section is greater than total pages + return $this->getTotalPages(); // Return total pages + else + return $this->_pagesPerSection; // Otherwise return per section + } + + public function getPaginationID() // returns ID name for pagination object + { + return $this->_paginationID; + } + + public function getTotalPages() // returns total pages + { + if($this->_errors) // If there is an error, return 0 + return 0; + + if($this->_entriesPerPage == 0) // Prevent division by zero + return 0; + + return ceil($this->_totalEntries / $this->_entriesPerPage); // Total pages: total # of entries divided by total entries per page + } + + public function getEntryStart() // returns the start entry for the page + { + if($this->_isError()) // If error encountered + return 0; + + return ($this->_currentPage - 1) * $this->_entriesPerPage; // Entry start: 1 less than current page multiplied by total entries per page + } + + public function getEntryEnd() // returns the last entry for the page + { + if($this->_isError()) // If error encountered + return 0; + + if($this->_currentPage == $this->getTotalPages()) // If current page is last page + return $this->_totalEntries - $this->getEntryStart(); // then entry end is total entries minus start entry + else + return $this->_entriesPerPage; // otherwise entry end is # of entries per page + } + + public function getEntryEndFF() // Flat-file version of the above getEntryEnd() function + { + if($this->_isError()) // If error encountered + return 0; + + if($this->_currentPage == $this->getTotalPages()) // If current page is last page + return $this->_totalEntries; // then entry end is total entries minus start entry + else + return $this->getEntryStart() + $this->_entriesPerPage; // otherwise entry end is # of entries per page after start + } +} + +endif; // Prevent multiple class definitions +?> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/classes/php-export-data.class.php b/plugins/wp-statistics/includes/classes/php-export-data.class.php new file mode 100644 index 0000000..d983cf7 --- /dev/null +++ b/plugins/wp-statistics/includes/classes/php-export-data.class.php @@ -0,0 +1,242 @@ +<?php +// php-export-data by Eli Dickinson, http://github.com/elidickinson/php-export-data + +/** + * ExportData is the base class for exporters to specific file formats. See other + * classes below. + */ +abstract class ExportData { + protected $exportTo; // Set in constructor to one of 'browser', 'file', 'string' + protected $stringData; // stringData so far, used if export string mode + protected $tempFile; // handle to temp file (for export file mode) + protected $tempFilename; // temp file name and path (for export file mode) + + public $filename; // file mode: the output file name; browser mode: file name for download; string mode: not used + + public function __construct($exportTo = "browser", $filename = "exportdata") { + if(!in_array($exportTo, array('browser','file','string') )) { + throw new Exception("$exportTo is not a valid ExportData export type"); + } + $this->exportTo = $exportTo; + $this->filename = $filename; + } + + public function initialize() { + + switch($this->exportTo) { + case 'browser': + $this->sendHttpHeaders(); + break; + case 'string': + $this->stringData = ''; + break; + case 'file': + $this->tempFilename = tempnam(sys_get_temp_dir(), 'exportdata'); + $this->tempFile = fopen($this->tempFilename, "w"); + break; + } + + $this->write($this->generateHeader()); + } + + public function addRow($row) { + $this->write($this->generateRow($row)); + } + + public function finalize() { + + $this->write($this->generateFooter()); + + switch($this->exportTo) { + case 'browser': + flush(); + break; + case 'string': + // do nothing + break; + case 'file': + // close temp file and move it to correct location + fclose($this->tempFile); + rename($this->tempFilename, $this->filename); + break; + } + } + + public function getString() { + return $this->stringData; + } + + abstract public function sendHttpHeaders(); + + protected function write($data) { + switch($this->exportTo) { + case 'browser': + echo $data; + break; + case 'string': + $this->stringData .= $data; + break; + case 'file': + fwrite($this->tempFile, $data); + break; + } + } + + protected function generateHeader() { + // can be overridden by subclass to return any data that goes at the top of the exported file + } + + protected function generateFooter() { + // can be overridden by subclass to return any data that goes at the bottom of the exported file + } + + // In subclasses generateRow will take $row array and return string of it formatted for export type + abstract protected function generateRow($row); + +} + +/** + * ExportDataTSV - Exports to TSV (tab separated value) format. + */ +class ExportDataTSV extends ExportData { + + function generateRow($row) { + foreach ($row as $key => $value) { + // Escape inner quotes and wrap all contents in new quotes. + // Note that we are using \" to escape double quote not "" + $row[$key] = '"'. str_replace('"', '\"', $value) .'"'; + } + return implode("\t", $row) . "\n"; + } + + function sendHttpHeaders() { + header("Content-type: text/tab-separated-values"); + header("Content-Disposition: attachment; filename=".basename($this->filename)); + } +} + +/** + * ExportDataCSV - Exports to CSV (comma separated value) format. + */ +class ExportDataCSV extends ExportData { + + function generateRow($row) { + foreach ($row as $key => $value) { + // Escape inner quotes and wrap all contents in new quotes. + // Note that we are using \" to escape double quote not "" + $row[$key] = '"'. str_replace('"', '\"', $value) .'"'; + } + return implode(",", $row) . "\n"; + } + + function sendHttpHeaders() { + header("Content-type: text/csv"); + header("Content-Disposition: attachment; filename=".basename($this->filename)); + } +} + + +/** + * ExportDataExcel exports data into an XML format (spreadsheetML) that can be + * read by MS Excel 2003 and newer as well as OpenOffice + * + * Creates a workbook with a single worksheet (title specified by + * $title). + * + * Note that using .XML is the "correct" file extension for these files, but it + * generally isn't associated with Excel. Using .XLS is tempting, but Excel 2007 will + * throw a scary warning that the extension doesn't match the file type. + * + * Based on Excel XML code from Excel_XML (http://github.com/oliverschwarz/php-excel) + * by Oliver Schwarz + */ +class ExportDataExcel extends ExportData { + + const XmlHeader = "<?xml version=\"1.0\" encoding=\"%s\"?\>\n<Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:x=\"urn:schemas-microsoft-com:office:excel\" xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:html=\"http://www.w3.org/TR/REC-html40\">"; + const XmlFooter = "</Workbook>"; + + public $encoding = 'UTF-8'; // encoding type to specify in file. + // Note that you're on your own for making sure your data is actually encoded to this encoding + + public $title = 'Sheet1'; // title for Worksheet + + function generateHeader() { + + // workbook header + $output = stripslashes(sprintf(self::XmlHeader, $this->encoding)) . "\n"; + + // Set up styles + $output .= "<Styles>\n"; + $output .= "<Style ss:ID=\"sDT\"><NumberFormat ss:Format=\"Short Date\"/></Style>\n"; + $output .= "</Styles>\n"; + + // worksheet header + $output .= sprintf("<Worksheet ss:Name=\"%s\">\n <Table>\n", htmlentities($this->title)); + + return $output; + } + + function generateFooter() { + $output = ''; + + // worksheet footer + $output .= " </Table>\n</Worksheet>\n"; + + // workbook footer + $output .= self::XmlFooter; + + return $output; + } + + function generateRow($row) { + $output = ''; + $output .= " <Row>\n"; + foreach ($row as $k => $v) { + $output .= $this->generateCell($v); + } + $output .= " </Row>\n"; + return $output; + } + + private function generateCell($item) { + $output = ''; + $style = ''; + + // Tell Excel to treat as a number. Note that Excel only stores roughly 15 digits, so keep + // as text if number is longer than that. + if(preg_match("/^-?\d+(?:[.,]\d+)?$/",$item) && (strlen($item) < 15)) { + $type = 'Number'; + } + // Sniff for valid dates; should look something like 2010-07-14 or 7/14/2010 etc. Can + // also have an optional time after the date. + // + // Note we want to be very strict in what we consider a date. There is the possibility + // of really screwing up the data if we try to reformat a string that was not actually + // intended to represent a date. + elseif(preg_match("/^(\d{1,2}|\d{4})[\/\-]\d{1,2}[\/\-](\d{1,2}|\d{4})([^\d].+)?$/",$item) && + ($timestamp = strtotime($item)) && + ($timestamp > 0) && + ($timestamp < strtotime('+500 years'))) { + $type = 'DateTime'; + $item = strftime("%Y-%m-%dT%H:%M:%S",$timestamp); + $style = 'sDT'; // defined in header; tells excel to format date for display + } + else { + $type = 'String'; + } + + $item = str_replace(''', ''', htmlspecialchars($item, ENT_QUOTES)); + $output .= " "; + $output .= $style ? "<Cell ss:StyleID=\"$style\">" : "<Cell>"; + $output .= sprintf("<Data ss:Type=\"%s\">%s</Data>", $type, $item); + $output .= "</Cell>\n"; + + return $output; + } + + function sendHttpHeaders() { + header("Content-Type: application/vnd.ms-excel; charset=" . $this->encoding); + header("Content-Disposition: inline; filename=\"" . basename($this->filename) . "\""); + } + +} \ No newline at end of file diff --git a/plugins/wp-statistics/includes/classes/statistics.class.php b/plugins/wp-statistics/includes/classes/statistics.class.php new file mode 100644 index 0000000..28522db --- /dev/null +++ b/plugins/wp-statistics/includes/classes/statistics.class.php @@ -0,0 +1,651 @@ +<?php +/* + This is the primary class for WP Statistics recording hits on the WordPress site. It is extended by the Hits class and the GeoIPHits class. + + This class handles; visits, visitors and pages. +*/ + +class WP_Statistics { + + // Setup our protected, private and public variables. + protected $db; + protected $tb_prefix; + protected $ip = false; + protected $ip_hash = false; + protected $agent; + + private $result; + private $historical; + private $user_options_loaded = false; + private $is_feed = false; + private $tz_offset = 0; + private $country_codes = false; + private $referrer = false; + + public $coefficient = 1; + public $plugin_dir = ''; + public $plugin_url = ''; + public $user_id = 0; + public $options = array(); + public $user_options = array(); + public $menu_slugs = array(); + + // Construction function. + public function __construct() { + + global $wpdb; + + if( get_option('timezone_string') ) { + $this->tz_offset = timezone_offset_get( timezone_open( get_option('timezone_string') ), new DateTime() ); + } else if( get_option('gmt_offset') ) { + $this->tz_offset = get_option('gmt_offset') * 60 * 60; + } + + $this->db = $wpdb; + $this->tb_prefix = $wpdb->prefix; + $this->agent = $this->get_UserAgent(); + $this->historical = array(); + + // Load the options from the database + $this->options = get_option( 'wp_statistics' ); + + // Set the default co-efficient. + $this->coefficient = $this->get_option('coefficient', 1); + + // Double check the co-efficient setting to make sure it's not been set to 0. + if( $this->coefficient <= 0 ) { $this->coefficient = 1; } + + // This is a bit of a hack, we strip off the "includes/classes" at the end of the current class file's path. + $this->plugin_dir = substr( dirname( __FILE__ ), 0, -17 ); + $this->plugin_url = substr( plugin_dir_url( __FILE__ ), 0, -17 ); + + $this->get_IP(); + + if( $this->get_option('hash_ips') == true ) { $this->ip_hash = '#hash#' . sha1( $this->ip + $_SERVER['HTTP_USER_AGENT'] ); } + + } + + // This function sets the current WordPress user id for the class. + public function set_user_id() { + if( $this->user_id == 0 ) { + $this->user_id = get_current_user_id(); + } + } + + // This function loads the options from WordPress, it is included here for completeness as the options are loaded automatically in the class constructor. + public function load_options() { + $this->options = get_option( 'wp_statistics' ); + } + + // This function loads the user options from WordPress. It is NOT called during the class constructor. + public function load_user_options( $force = false) { + if( $this->user_options_loaded == true && $force != true ) { return; } + + $this->set_user_id(); + + // Not sure why, but get_user_meta() is returning an array or array's unless $single is set to true. + $this->user_options = get_user_meta( $this->user_id, 'wp_statistics', true ); + + $this->user_options_loaded = true; + } + + // The function mimics WordPress's get_option() function but uses the array instead of individual options. + public function get_option($option, $default = null) { + // If no options array exists, return FALSE. + if( !is_array($this->options) ) { return FALSE; } + + // if the option isn't set yet, return the $default if it exists, otherwise FALSE. + if( !array_key_exists($option, $this->options) ) { + if( isset( $default ) ) { + return $default; + } else { + return FALSE; + } + } + + // Return the option. + return $this->options[$option]; + } + + // This function mimics WordPress's get_user_meta() function but uses the array instead of individual options. + public function get_user_option($option, $default = null) { + // If the user id has not been set or no options array exists, return FALSE. + if( $this->user_id == 0 ) {return FALSE; } + if( !is_array($this->user_options) ) { return FALSE; } + + // if the option isn't set yet, return the $default if it exists, otherwise FALSE. + if( !array_key_exists($option, $this->user_options) ) { + if( isset( $default ) ) { + return $default; + } else { + return FALSE; + } + } + + // Return the option. + return $this->user_options[$option]; + } + + // The function mimics WordPress's update_option() function but uses the array instead of individual options. + public function update_option($option, $value) { + // Store the value in the array. + $this->options[$option] = $value; + + // Write the array to the database. + update_option('wp_statistics', $this->options); + } + + // The function mimics WordPress's update_user_meta() function but uses the array instead of individual options. + public function update_user_option($option, $value) { + // If the user id has not been set return FALSE. + if( $this->user_id == 0 ) { return FALSE; } + + // Store the value in the array. + $this->user_options[$option] = $value; + + // Write the array to the database. + update_user_meta( $this->user_id, 'wp_statistics', $this->user_options ); + } + + // This function is similar to update_option, but it only stores the option in the array. This save some writing to the database if you have multiple values to update. + public function store_option($option, $value) { + $this->options[$option] = $value; + } + + // This function is similar to update_user_option, but it only stores the option in the array. This save some writing to the database if you have multiple values to update. + public function store_user_option($option, $value) { + // If the user id has not been set return FALSE. + if( $this->user_id == 0 ) { return FALSE; } + + $this->user_options[$option] = $value; + } + + // This function saves the current options array to the database. + public function save_options() { + update_option('wp_statistics', $this->options); + } + + // This function saves the current user options array to the database. + public function save_user_options() { + if( $this->user_id == 0 ) { return FALSE; } + + update_user_meta( $this->user_id, 'wp_statistics', $this->user_options ); + } + + // This function check to see if an option is currently set or not. + public function isset_option($option) { + if( !is_array($this->options) ) { return FALSE; } + + return array_key_exists( $option, $this->options ); + } + + // This function check to see if a user option is currently set or not. + public function isset_user_option($option) { + if( $this->user_id == 0 ) { return FALSE; } + if( !is_array($this->user_options) ) { return FALSE; } + + return array_key_exists( $option, $this->user_options ); + } + + // During installation of WP Statistics some inital data needs to be loaded in to the database so errors are not displayed. + // This function will add some inital data if the tables are empty. + public function Primary_Values() { + + $this->result = $this->db->query("SELECT * FROM {$this->tb_prefix}statistics_useronline"); + + if( !$this->result ) { + + $this->db->insert( + $this->tb_prefix . "statistics_useronline", + array( + 'ip' => $this->get_IP(), + 'timestamp' => $this->Current_Date('U'), + 'date' => $this->Current_Date(), + 'referred' => $this->get_Referred(), + 'agent' => $this->agent['browser'], + 'platform' => $this->agent['platform'], + 'version' => $this->agent['version'] + ) + ); + } + + $this->result = $this->db->query("SELECT * FROM {$this->tb_prefix}statistics_visit"); + + if( !$this->result ) { + + $this->db->insert( + $this->tb_prefix . "statistics_visit", + array( + 'last_visit' => $this->Current_Date(), + 'last_counter' => $this->Current_date('Y-m-d'), + 'visit' => 1 + ) + ); + } + + $this->result = $this->db->query("SELECT * FROM {$this->tb_prefix}statistics_visitor"); + + if( !$this->result ) { + + $this->db->insert( + $this->tb_prefix . "statistics_visitor", + array( + 'last_counter' => $this->Current_date('Y-m-d'), + 'referred' => $this->get_Referred(), + 'agent' => $this->agent['browser'], + 'platform' => $this->agent['platform'], + 'version' => $this->agent['version'], + 'ip' => $this->get_IP(), + 'location' => '000' + ) + ); + } + } + + // This function processes a string that represents an IP address and returns either FALSE if it's invalid or a valid IP4 address. + private function get_ip_value( $ip ) { + // Reject anything that's not a string. + if( ! is_string( $ip ) ) { + return false; + } + + // Trim off any spaces. + $ip = trim( $ip ); + + // Process IPv4 and v6 addresses separately. + if( $this->isValidIPv6( $ip ) ) { + // Reject any IPv6 addresses if IPv6 is not compiled in to this version of PHP. + if( ! defined( 'AF_INET6' ) ) { + return false; + } + } else { + // Trim off any port values that exist. + if( strstr( $ip, ':' ) !== FALSE ) { + $temp = explode( ':', $ip ); + $ip = $temp[0]; + } + + // Check to make sure the http header is actually an IP address and not some kind of SQL injection attack. + $long = ip2long( $ip ); + + // ip2long returns either -1 or FALSE if it is not a valid IP address depending on the PHP version, so check for both. + if( $long == -1 || $long === FALSE ) { + return false; + } + } + + // If the ip address is blank, reject it. + if( $ip == '' ) { + return false; + } + + // We're got a real IP address, return it. + return $ip; + + } + + // This function returns the current IP address of the remote client. + public function get_IP() { + + // Check to see if we've already retrieved the IP address and if so return the last result. + if( $this->ip !== FALSE ) { + return $this->ip; + } + + // By default we use the remote address the server has. + if( array_key_exists( 'REMOTE_ADDR', $_SERVER ) ) { + $temp_ip = $this->get_ip_value( $_SERVER['REMOTE_ADDR'] ); + } else { + $temp_ip = '127.0.0.1'; + } + + if( FALSE !== $temp_ip ) { + $this->ip = $temp_ip; + } + + /* Check to see if any of the HTTP headers are set to identify the remote user. + * These often give better results as they can identify the remote user even through firewalls etc, + * but are sometimes used in SQL injection attacks. + * + * We only want to take the first one we find, so search them in order and break when we find the first + * one. + * + */ + $envs = array( 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED' ); + + foreach( $envs as $env ) { + $temp_ip = $this->get_ip_value( getenv( $env ) ); + + if( FALSE !== $temp_ip ) { + $this->ip = $temp_ip; + + break; + } + } + + // If no valid ip address has been found, use 127.0.0.1 (aka localhost). + if( FALSE === $this->ip ) { + $this->ip = '127.0.0.1'; + } + + return $this->ip; + } + + /** + * Validate an IPv6 IP address + * + * @param string $ip + * @return boolean - true/false + */ + private function isValidIPv6( $ip ) { + if( false === filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6 ) ) { + return false; + } else { + return true; + } + } + + // This function calls the user agent parsing code. + public function get_UserAgent() { + + // Parse the agent stirng. + try + { + $agent = parse_user_agent(); + } + catch( Exception $e ) + { + $agent = array( 'browser' => 'Unknown', 'platform' => 'Unknown', 'version' => 'Unknown' ); + } + + // null isn't a very good default, so set it to Unknown instead. + if( $agent['browser'] == null ) { $agent['browser'] = "Unknown"; } + if( $agent['platform'] == null ) { $agent['platform'] = "Unknown"; } + if( $agent['version'] == null ) { $agent['version'] = "Unknown"; } + + // Uncommon browsers often have some extra cruft, like brackets, http:// and other strings that we can strip out. + $strip_strings = array('"', "'", '(', ')', ';', ':', '/', '[', ']', '{', '}', 'http' ); + foreach( $agent as $key => $value ) { + $agent[$key] = str_replace( $strip_strings, '', $agent[$key] ); + } + + return $agent; + } + + // This function will return the referrer link for the current user. + public function get_Referred($default_referrer = false) { + + if( $this->referrer !== false ) { return $this->referrer; } + + $this->referrer = ''; + + if( isset($_SERVER['HTTP_REFERER']) ) { $this->referrer = $_SERVER['HTTP_REFERER']; } + if( $default_referrer ) { $this->referrer = $default_referrer; } + + $this->referrer = esc_sql(strip_tags($this->referrer) ); + + if( !$this->referrer ) { $this->referrer = get_bloginfo('url'); } + + if( $this->get_option( 'addsearchwords', false ) ) { + // Check to see if this is a search engine referrer + $SEInfo = $this->Search_Engine_Info( $this->referrer ); + + if( is_array( $SEInfo ) ) { + // If we're a known SE, check the query string + if( $SEInfo['tag'] != '' ) { + $result = $this->Search_Engine_QueryString( $this->referrer ); + + // If there were no search words, let's add the page title + if( $result == '' || $result == 'No search query found!' ) { + $result = wp_title('', false); + if( $result != '' ) { + $this->referrer = esc_url( add_query_arg( $SEInfo['querykey'], urlencode( '~"' . $result . '"' ), $this->referrer ) ); + } + } + } + } + } + + return $this->referrer; + } + + // This function returns a date string in the desired format with a passed in timestamp. + public function Local_Date($format, $timestamp ) { + return date( $format, $timestamp + $this->tz_offset ); + } + + // This function returns a date string in the desired format. + public function Current_Date($format = 'Y-m-d H:i:s', $strtotime = null, $relative = null) { + + if( $strtotime ) { + if( $relative ) { + return date($format, strtotime("{$strtotime} day", $relative) + $this->tz_offset ); + } + else { + return date($format, strtotime("{$strtotime} day") + $this->tz_offset ); + } + } else { + return date($format, time() + $this->tz_offset); + } + } + + // This function returns a date string in the desired format. + public function Real_Current_Date($format = 'Y-m-d H:i:s', $strtotime = null, $relative = null) { + + if( $strtotime ) { + if( $relative ) { + return date($format, strtotime("{$strtotime} day", $relative) ); + } + else { + return date($format, strtotime("{$strtotime} day") ); + } + } else { + return date($format, time()); + } + } + + // This function returns an internationalized date string in the desired format. + public function Current_Date_i18n($format = 'Y-m-d H:i:s', $strtotime = null, $day=' day') { + + if( $strtotime ) { + return date_i18n($format, strtotime("{$strtotime}{$day}") + $this->tz_offset ); + } else { + return date_i18n($format, time() + $this->tz_offset); + } + } + + public function strtotimetz( $timestring ) { + return strtotime( $timestring ) + $this->tz_offset; + } + + public function timetz() { + return time() + $this->tz_offset; + } + + // This function checks to see if a search engine exists in the current list of search engines. + public function Check_Search_Engines ($search_engine_name, $search_engine = null) { + + if( strstr($search_engine, $search_engine_name) ) { + return 1; + } + } + + // This function returns an array of information about a given search engine based on the url passed in. + // It is used in several places to get the SE icon or the sql query to select an individual SE from the database. + public function Search_Engine_Info($url = false) { + + // If no URL was passed in, get the current referrer for the session. + if(!$url) { + $url = isset($_SERVER['HTTP_REFERER']) ? $this->get_Referred() : false; + } + + // If there is no URL and no referrer, always return false. + if($url == false) { + return false; + } + + // Parse the URL in to it's component parts. + $parts = parse_url($url); + + // Get the list of search engines we currently support. + $search_engines = wp_statistics_searchengine_list(); + + // Loop through the SE list until we find which search engine matches. + foreach( $search_engines as $key => $value ) { + $search_regex = wp_statistics_searchengine_regex($key); + + preg_match( '/' . $search_regex . '/', $parts['host'], $matches); + + if( isset($matches[1]) ) + { + // Return the first matched SE. + return $value; + } + } + + // If no SE matched, return some defaults. + return array('name' => 'Unknown', 'tag' => '', 'sqlpattern' => '', 'regexpattern' => '', 'querykey' => 'q', 'image' => 'unknown.png' ); + } + + // This function returns an array of information about a given search engine based on the url passed in. + // It is used in several places to get the SE icon or the sql query to select an individual SE from the database. + public function Search_Engine_Info_By_Engine($engine = false) { + + // If there is no URL and no referrer, always return false. + if($engine == false) { + return false; + } + + // Get the list of search engines we currently support. + $search_engines = wp_statistics_searchengine_list(); + + if( array_key_exists( $engine, $search_engines ) ) { + return $search_engines[$engine]; + } + + // If no SE matched, return some defaults. + return array('name' => 'Unknown', 'tag' => '', 'sqlpattern' => '', 'regexpattern' => '', 'querykey' => 'q', 'image' => 'unknown.png' ); + } + + // This function will parse a URL from a referrer and return the search query words used. + public function Search_Engine_QueryString($url = false) { + + // If no URL was passed in, get the current referrer for the session. + if(!$url) { + $url = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : false; + } + + // If there is no URL and no referrer, always return false. + if($url == false) { + return false; + } + + // Parse the URL in to it's component parts. + $parts = parse_url($url); + + // Check to see if there is a query component in the URL (everything after the ?). If there isn't one + // set an empty array so we don't get errors later. + if( array_key_exists('query',$parts) ) { parse_str($parts['query'], $query); } else { $query = array(); } + + // Get the list of search engines we currently support. + $search_engines = wp_statistics_searchengine_list(); + + // Loop through the SE list until we find which search engine matches. + foreach( $search_engines as $key => $value ) { + $search_regex = wp_statistics_searchengine_regex($key); + + preg_match( '/' . $search_regex . '/', $parts['host'], $matches); + + if( isset($matches[1]) ) + { + // Check to see if the query key the SE uses exists in the query part of the URL. + if( array_key_exists($search_engines[$key]['querykey'], $query) ) { + $words = strip_tags($query[$search_engines[$key]['querykey']]); + } + else { + $words = ''; + } + + // If no words were found, return a pleasant default. + if( $words == '' ) { $words = 'No search query found!'; } + return $words; + } + } + + // We should never actually get to this point, but let's make sure we return something + // just in case something goes terribly wrong. + return 'No search query found!'; + } + + public function Get_Historical_Data($type, $id = '') { + + $count = 0; + + switch( $type ) { + case 'visitors': + if( array_key_exists( 'visitors', $this->historical ) ) { + return $this->historical['visitors']; + } + else { + $result = $this->db->get_var("SELECT value FROM {$this->tb_prefix}statistics_historical WHERE category = 'visitors'"); + if( $result > $count ) { $count = $result; } + $this->historical['visitors'] = $count; + } + + break; + case 'visits': + if( array_key_exists( 'visits', $this->historical ) ) { + return $this->historical['visits']; + } + else { + $result = $this->db->get_var("SELECT value FROM {$this->tb_prefix}statistics_historical WHERE category = 'visits'"); + if( $result > $count ) { $count = $result; } + $this->historical['visits'] = $count; + } + + break; + case 'uri': + if( array_key_exists( $id, $this->historical ) ) { + return $this->historical[$id]; + } + else { + $result = $this->db->get_var($this->db->prepare("SELECT value FROM {$this->tb_prefix}statistics_historical WHERE category = 'uri' AND uri = %s", $id)); + if( $result > $count ) { $count = $result; } + $this->historical[$id] = $count; + } + + break; + case 'page': + if( array_key_exists( $id, $this->historical ) ) { + return $this->historical[$id]; + } + else { + $result = $this->db->get_var($this->db->prepare("SELECT value FROM {$this->tb_prefix}statistics_historical WHERE category = 'uri' AND page_id = %d", $id)); + if( $result > $count ) { $count = $result; } + $this->historical[$id] = $count; + } + + break; + } + + return $count; + } + + public function feed_detected() { + $this->is_feed = true; + } + + public function check_feed() { + return $this->is_feed; + } + + public function get_country_codes() { + if( $this->country_codes == false ) { + $ISOCountryCode = array(); + include( $this->plugin_dir . "/includes/functions/country-codes.php"); + $this->country_codes = $ISOCountryCode; + } + + return $this->country_codes; + } +} \ No newline at end of file diff --git a/plugins/wp-statistics/includes/functions/country-codes.php b/plugins/wp-statistics/includes/functions/country-codes.php new file mode 100644 index 0000000..f9357b7 --- /dev/null +++ b/plugins/wp-statistics/includes/functions/country-codes.php @@ -0,0 +1,287 @@ +<?php +/* + This is a list of all known country codes and their country names. + + It is used in several places in the plugin and is therefore centralized here for ease of update. +*/ +$ISOCountryCode['000'] = "Unknown"; +$ISOCountryCode['AF'] = "Afghanistan"; +$ISOCountryCode['AX'] = "land Islands"; +$ISOCountryCode['AL'] = "Albania"; +$ISOCountryCode['DZ'] = "Algeria"; +$ISOCountryCode['AS'] = "American Samoa"; +$ISOCountryCode['AD'] = "Andorra"; +$ISOCountryCode['AO'] = "Angola"; +$ISOCountryCode['AI'] = "Anguilla"; +$ISOCountryCode['AQ'] = "Antarctica"; +$ISOCountryCode['AG'] = "Antigua and Barbuda"; +$ISOCountryCode['AR'] = "Argentina"; +$ISOCountryCode['AM'] = "Armenia"; +$ISOCountryCode['AW'] = "Aruba"; +$ISOCountryCode['AU'] = "Australia"; +$ISOCountryCode['AT'] = "Austria"; +$ISOCountryCode['AZ'] = "Azerbaijan"; +$ISOCountryCode['BS'] = "Bahamas"; +$ISOCountryCode['BH'] = "Bahrain"; +$ISOCountryCode['BD'] = "Bangladesh"; +$ISOCountryCode['BB'] = "Barbados"; +$ISOCountryCode['BY'] = "Belarus"; +$ISOCountryCode['BE'] = "Belgium"; +$ISOCountryCode['BZ'] = "Belize"; +$ISOCountryCode['BJ'] = "Benin"; +$ISOCountryCode['BM'] = "Bermuda"; +$ISOCountryCode['BT'] = "Bhutan"; +$ISOCountryCode['BO'] = "Bolivia, Plurinational State of"; +$ISOCountryCode['BQ'] = "Bonaire, Sint Eustatius and Saba"; +$ISOCountryCode['BA'] = "Bosnia and Herzegovina"; +$ISOCountryCode['BW'] = "Botswana"; +$ISOCountryCode['BV'] = "Bouvet Island"; +$ISOCountryCode['BR'] = "Brazil"; +$ISOCountryCode['BQ'] = "British Antarctic Territory"; +$ISOCountryCode['IO'] = "British Indian Ocean Territory"; +$ISOCountryCode['BN'] = "Brunei Darussalam"; +$ISOCountryCode['BG'] = "Bulgaria"; +$ISOCountryCode['BF'] = "Burkina Faso"; +$ISOCountryCode['BU'] = "Burma"; +$ISOCountryCode['BI'] = "Burundi"; +$ISOCountryCode['BY'] = "Byelorussian SSR"; +$ISOCountryCode['KH'] = "Cambodia"; +$ISOCountryCode['CM'] = "Cameroon"; +$ISOCountryCode['CA'] = "Canada"; +$ISOCountryCode['CT'] = "Canton and Enderbury Islands"; +$ISOCountryCode['CV'] = "Cape Verde"; +$ISOCountryCode['KY'] = "Cayman Islands"; +$ISOCountryCode['CF'] = "Central African Republic"; +$ISOCountryCode['TD'] = "Chad"; +$ISOCountryCode['CL'] = "Chile"; +$ISOCountryCode['CN'] = "China"; +$ISOCountryCode['CX'] = "Christmas Island"; +$ISOCountryCode['CC'] = "Cocos (Keeling) Islands"; +$ISOCountryCode['CO'] = "Colombia"; +$ISOCountryCode['KM'] = "Comoros"; +$ISOCountryCode['CG'] = "Congo"; +$ISOCountryCode['CD'] = "Congo (the Democratic Republic of the)"; +$ISOCountryCode['CK'] = "Cook Islands"; +$ISOCountryCode['CR'] = "Costa Rica"; +$ISOCountryCode['CI'] = "Cte d'Ivoire"; +$ISOCountryCode['HR'] = "Croatia"; +$ISOCountryCode['CU'] = "Cuba"; +$ISOCountryCode['CW'] = "Curaao"; +$ISOCountryCode['CY'] = "Cyprus"; +$ISOCountryCode['CZ'] = "Czech Republic"; +$ISOCountryCode['CS'] = "Czechoslovakia"; +$ISOCountryCode['DY'] = "Dahomey"; +$ISOCountryCode['DK'] = "Denmark"; +$ISOCountryCode['DJ'] = "Djibouti"; +$ISOCountryCode['DM'] = "Dominica"; +$ISOCountryCode['DO'] = "Dominican Republic"; +$ISOCountryCode['NQ'] = "Dronning Maud Land"; +$ISOCountryCode['TP'] = "East Timor"; +$ISOCountryCode['EC'] = "Ecuador"; +$ISOCountryCode['EG'] = "Egypt"; +$ISOCountryCode['SV'] = "El Salvador"; +$ISOCountryCode['GQ'] = "Equatorial Guinea"; +$ISOCountryCode['ER'] = "Eritrea"; +$ISOCountryCode['EE'] = "Estonia"; +$ISOCountryCode['ET'] = "Ethiopia"; +$ISOCountryCode['FK'] = "Falkland Islands [Malvinas]"; +$ISOCountryCode['FO'] = "Faroe Islands"; +$ISOCountryCode['FJ'] = "Fiji"; +$ISOCountryCode['FI'] = "Finland"; +$ISOCountryCode['FR'] = "France"; +$ISOCountryCode['FX'] = "France, Metropolitan"; +$ISOCountryCode['AI'] = "French Afars and Issas"; +$ISOCountryCode['GF'] = "French Guiana"; +$ISOCountryCode['PF'] = "French Polynesia"; +$ISOCountryCode['FQ'] = "French Southern and Antarctic Territories"; +$ISOCountryCode['TF'] = "French Southern Territories"; +$ISOCountryCode['GA'] = "Gabon"; +$ISOCountryCode['GM'] = "Gambia"; +$ISOCountryCode['GE'] = "Georgia"; +$ISOCountryCode['DD'] = "German Democratic Republic"; +$ISOCountryCode['DE'] = "Germany"; +$ISOCountryCode['GH'] = "Ghana"; +$ISOCountryCode['GI'] = "Gibraltar"; +$ISOCountryCode['GR'] = "Greece"; +$ISOCountryCode['GL'] = "Greenland"; +$ISOCountryCode['GD'] = "Grenada"; +$ISOCountryCode['GP'] = "Guadeloupe"; +$ISOCountryCode['GU'] = "Guam"; +$ISOCountryCode['GT'] = "Guatemala"; +$ISOCountryCode['GG'] = "Guernsey"; +$ISOCountryCode['GN'] = "Guinea"; +$ISOCountryCode['GW'] = "Guinea-Bissau"; +$ISOCountryCode['GY'] = "Guyana"; +$ISOCountryCode['HT'] = "Haiti"; +$ISOCountryCode['HM'] = "Heard Island and McDonald Islands"; +$ISOCountryCode['VA'] = "Holy See [Vatican City State]"; +$ISOCountryCode['HN'] = "Honduras"; +$ISOCountryCode['HK'] = "Hong Kong"; +$ISOCountryCode['HU'] = "Hungary"; +$ISOCountryCode['IS'] = "Iceland"; +$ISOCountryCode['IN'] = "India"; +$ISOCountryCode['ID'] = "Indonesia"; +$ISOCountryCode['IR'] = "Iran (the Islamic Republic of)"; +$ISOCountryCode['IQ'] = "Iraq"; +$ISOCountryCode['IE'] = "Ireland"; +$ISOCountryCode['IM'] = "Isle of Man"; +$ISOCountryCode['IL'] = "Israel"; +$ISOCountryCode['IT'] = "Italy"; +$ISOCountryCode['JM'] = "Jamaica"; +$ISOCountryCode['JP'] = "Japan"; +$ISOCountryCode['JE'] = "Jersey"; +$ISOCountryCode['JT'] = "Johnston Island"; +$ISOCountryCode['JO'] = "Jordan"; +$ISOCountryCode['KZ'] = "Kazakhstan"; +$ISOCountryCode['KE'] = "Kenya"; +$ISOCountryCode['KI'] = "Kiribati"; +$ISOCountryCode['KP'] = "Korea (the Democratic People's Republic of)"; +$ISOCountryCode['KR'] = "Korea (the Republic of)"; +$ISOCountryCode['KW'] = "Kuwait"; +$ISOCountryCode['KG'] = "Kyrgyzstan"; +$ISOCountryCode['LA'] = "Lao People's Democratic Republic"; +$ISOCountryCode['LV'] = "Latvia"; +$ISOCountryCode['LB'] = "Lebanon"; +$ISOCountryCode['LS'] = "Lesotho"; +$ISOCountryCode['LR'] = "Liberia"; +$ISOCountryCode['LY'] = "Libya"; +$ISOCountryCode['LI'] = "Liechtenstein"; +$ISOCountryCode['LT'] = "Lithuania"; +$ISOCountryCode['LU'] = "Luxembourg"; +$ISOCountryCode['MO'] = "Macao"; +$ISOCountryCode['MK'] = "Macedonia (the former Yugoslav Republic of)"; +$ISOCountryCode['MG'] = "Madagascar"; +$ISOCountryCode['MW'] = "Malawi"; +$ISOCountryCode['MY'] = "Malaysia"; +$ISOCountryCode['MV'] = "Maldives"; +$ISOCountryCode['ML'] = "Mali"; +$ISOCountryCode['MT'] = "Malta"; +$ISOCountryCode['MH'] = "Marshall Islands"; +$ISOCountryCode['MQ'] = "Martinique"; +$ISOCountryCode['MR'] = "Mauritania"; +$ISOCountryCode['MU'] = "Mauritius"; +$ISOCountryCode['YT'] = "Mayotte"; +$ISOCountryCode['MX'] = "Mexico"; +$ISOCountryCode['FM'] = "Micronesia (the Federated States of)"; +$ISOCountryCode['MI'] = "Midway Islands"; +$ISOCountryCode['MD'] = "Moldova (the Republic of)"; +$ISOCountryCode['MC'] = "Monaco"; +$ISOCountryCode['MN'] = "Mongolia"; +$ISOCountryCode['ME'] = "Montenegro"; +$ISOCountryCode['MS'] = "Montserrat"; +$ISOCountryCode['MA'] = "Morocco"; +$ISOCountryCode['MZ'] = "Mozambique"; +$ISOCountryCode['MM'] = "Myanmar"; +$ISOCountryCode['NA'] = "Namibia"; +$ISOCountryCode['NR'] = "Nauru"; +$ISOCountryCode['NP'] = "Nepal"; +$ISOCountryCode['NL'] = "Netherlands"; +$ISOCountryCode['AN'] = "Netherlands Antilles"; +$ISOCountryCode['NT'] = "Neutral Zone"; +$ISOCountryCode['NC'] = "New Caledonia"; +$ISOCountryCode['NH'] = "New Hebrides"; +$ISOCountryCode['NZ'] = "New Zealand"; +$ISOCountryCode['NI'] = "Nicaragua"; +$ISOCountryCode['NE'] = "Niger"; +$ISOCountryCode['NG'] = "Nigeria"; +$ISOCountryCode['NU'] = "Niue"; +$ISOCountryCode['NF'] = "Norfolk Island"; +$ISOCountryCode['MP'] = "Northern Mariana Islands"; +$ISOCountryCode['NO'] = "Norway"; +$ISOCountryCode['OM'] = "Oman"; +$ISOCountryCode['PC'] = "Pacific Islands (Trust Territory)"; +$ISOCountryCode['PK'] = "Pakistan"; +$ISOCountryCode['PW'] = "Palau"; +$ISOCountryCode['PS'] = "Palestine, State of"; +$ISOCountryCode['PA'] = "Panama"; +$ISOCountryCode['PZ'] = "Panama Canal Zone"; +$ISOCountryCode['PG'] = "Papua New Guinea"; +$ISOCountryCode['PY'] = "Paraguay"; +$ISOCountryCode['PE'] = "Peru"; +$ISOCountryCode['PH'] = "Philippines"; +$ISOCountryCode['PN'] = "Pitcairn"; +$ISOCountryCode['PL'] = "Poland"; +$ISOCountryCode['PT'] = "Portugal"; +$ISOCountryCode['PR'] = "Puerto Rico"; +$ISOCountryCode['QA'] = "Qatar"; +$ISOCountryCode['RE'] = "Runion"; +$ISOCountryCode['RO'] = "Romania"; +$ISOCountryCode['RU'] = "Russian Federation"; +$ISOCountryCode['RW'] = "Rwanda"; +$ISOCountryCode['BL'] = "Saint Barthlemy"; +$ISOCountryCode['SH'] = "Saint Helena, Ascension and Tristan da Cunha"; +$ISOCountryCode['KN'] = "Saint Kitts and Nevis"; +$ISOCountryCode['LC'] = "Saint Lucia"; +$ISOCountryCode['MF'] = "Saint Martin (French part)"; +$ISOCountryCode['PM'] = "Saint Pierre and Miquelon"; +$ISOCountryCode['VC'] = "Saint Vincent and the Grenadines"; +$ISOCountryCode['WS'] = "Samoa"; +$ISOCountryCode['SM'] = "San Marino"; +$ISOCountryCode['ST'] = "Sao Tome and Principe"; +$ISOCountryCode['SA'] = "Saudi Arabia"; +$ISOCountryCode['SN'] = "Senegal"; +$ISOCountryCode['RS'] = "Serbia"; +$ISOCountryCode['CS'] = "Serbia and Montenegro"; +$ISOCountryCode['SC'] = "Seychelles"; +$ISOCountryCode['SL'] = "Sierra Leone"; +$ISOCountryCode['SK'] = "Sikkim"; +$ISOCountryCode['SG'] = "Singapore"; +$ISOCountryCode['SX'] = "Sint Maarten (Dutch part)"; +$ISOCountryCode['SK'] = "Slovakia"; +$ISOCountryCode['SI'] = "Slovenia"; +$ISOCountryCode['SB'] = "Solomon Islands"; +$ISOCountryCode['SO'] = "Somalia"; +$ISOCountryCode['ZA'] = "South Africa"; +$ISOCountryCode['GS'] = "South Georgia and the South Sandwich Islands"; +$ISOCountryCode['SS'] = "South Sudan "; +$ISOCountryCode['RH'] = "Southern Rhodesia"; +$ISOCountryCode['ES'] = "Spain"; +$ISOCountryCode['LK'] = "Sri Lanka"; +$ISOCountryCode['SD'] = "Sudan"; +$ISOCountryCode['SR'] = "Suriname"; +$ISOCountryCode['SJ'] = "Svalbard and Jan Mayen"; +$ISOCountryCode['SZ'] = "Swaziland"; +$ISOCountryCode['SE'] = "Sweden"; +$ISOCountryCode['CH'] = "Switzerland"; +$ISOCountryCode['SY'] = "Syrian Arab Republic"; +$ISOCountryCode['TW'] = "Taiwan (Province of China)"; +$ISOCountryCode['TJ'] = "Tajikistan"; +$ISOCountryCode['TZ'] = "Tanzania, United Republic of"; +$ISOCountryCode['TH'] = "Thailand"; +$ISOCountryCode['TL'] = "Timor-Leste"; +$ISOCountryCode['TG'] = "Togo"; +$ISOCountryCode['TK'] = "Tokelau"; +$ISOCountryCode['TO'] = "Tonga"; +$ISOCountryCode['TT'] = "Trinidad and Tobago"; +$ISOCountryCode['TN'] = "Tunisia"; +$ISOCountryCode['TR'] = "Turkey"; +$ISOCountryCode['TM'] = "Turkmenistan"; +$ISOCountryCode['TC'] = "Turks and Caicos Islands"; +$ISOCountryCode['TV'] = "Tuvalu"; +$ISOCountryCode['UG'] = "Uganda"; +$ISOCountryCode['UA'] = "Ukraine"; +$ISOCountryCode['AE'] = "United Arab Emirates"; +$ISOCountryCode['GB'] = "United Kingdom"; +$ISOCountryCode['US'] = "United States"; +$ISOCountryCode['UM'] = "United States Minor Outlying Islands"; +$ISOCountryCode['PU'] = "United States Miscellaneous Pacific Islands"; +$ISOCountryCode['HV'] = "Upper Volta"; +$ISOCountryCode['UY'] = "Uruguay"; +$ISOCountryCode['SU'] = "USSR"; +$ISOCountryCode['UZ'] = "Uzbekistan"; +$ISOCountryCode['VU'] = "Vanuatu"; +$ISOCountryCode['VE'] = "Venezuela, Bolivarian Republic of "; +$ISOCountryCode['VN'] = "Viet Nam"; +$ISOCountryCode['VD'] = "Viet-Nam, Democratic Republic of"; +$ISOCountryCode['VG'] = "Virgin Islands (British)"; +$ISOCountryCode['VI'] = "Virgin Islands (U.S.)"; +$ISOCountryCode['WK'] = "Wake Island"; +$ISOCountryCode['WF'] = "Wallis and Futuna"; +$ISOCountryCode['EH'] = "Western Sahara"; +$ISOCountryCode['YE'] = "Yemen"; +$ISOCountryCode['YD'] = "Yemen, Democratic"; +$ISOCountryCode['YU'] = "Yugoslavia"; +$ISOCountryCode['ZR'] = "Zaire"; +$ISOCountryCode['ZM'] = "Zambia"; +$ISOCountryCode['ZW'] = "Zimbabwe"; +?> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/functions/country-coordinates.php b/plugins/wp-statistics/includes/functions/country-coordinates.php new file mode 100644 index 0000000..a026e0e --- /dev/null +++ b/plugins/wp-statistics/includes/functions/country-coordinates.php @@ -0,0 +1,250 @@ +<?php +/* + This is a list of all known country codes and their latitue/longitude values. + + It is used for the map in the overview page. +*/ +$CountryCoordinates["AF"] = array("lat" => "33", "lng" => "65"); +$CountryCoordinates["AL"] = array("lat" => "41", "lng" => "20"); +$CountryCoordinates["DZ"] = array("lat" => "28", "lng" => "3"); +$CountryCoordinates["AS"] = array("lat" => "-14.3333", "lng" => "-170"); +$CountryCoordinates["AD"] = array("lat" => "42.5", "lng" => "1.6"); +$CountryCoordinates["AO"] = array("lat" => "-12.5", "lng" => "18.5"); +$CountryCoordinates["AI"] = array("lat" => "18.25", "lng" => "-63.1667"); +$CountryCoordinates["AQ"] = array("lat" => "-90", "lng" => "0"); +$CountryCoordinates["AG"] = array("lat" => "17.05", "lng" => "-61.8"); +$CountryCoordinates["AR"] = array("lat" => "-34", "lng" => "-64"); +$CountryCoordinates["AM"] = array("lat" => "40", "lng" => "45"); +$CountryCoordinates["AW"] = array("lat" => "12.5", "lng" => "-69.9667"); +$CountryCoordinates["AU"] = array("lat" => "-27", "lng" => "133"); +$CountryCoordinates["AT"] = array("lat" => "47.3333", "lng" => "13.3333"); +$CountryCoordinates["AZ"] = array("lat" => "40.5", "lng" => "47.5"); +$CountryCoordinates["BS"] = array("lat" => "24.25", "lng" => "-76"); +$CountryCoordinates["BH"] = array("lat" => "26", "lng" => "50.55"); +$CountryCoordinates["BD"] = array("lat" => "24", "lng" => "90"); +$CountryCoordinates["BB"] = array("lat" => "13.1667", "lng" => "-59.5333"); +$CountryCoordinates["BY"] = array("lat" => "53", "lng" => "28"); +$CountryCoordinates["BE"] = array("lat" => "50.8333", "lng" => "4"); +$CountryCoordinates["BZ"] = array("lat" => "17.25", "lng" => "-88.75"); +$CountryCoordinates["BJ"] = array("lat" => "9.5", "lng" => "2.25"); +$CountryCoordinates["BM"] = array("lat" => "32.3333", "lng" => "-64.75"); +$CountryCoordinates["BT"] = array("lat" => "27.5", "lng" => "90.5"); +$CountryCoordinates["BO"] = array("lat" => "-17", "lng" => "-65"); +$CountryCoordinates["BA"] = array("lat" => "44", "lng" => "18"); +$CountryCoordinates["BW"] = array("lat" => "-22", "lng" => "24"); +$CountryCoordinates["BV"] = array("lat" => "-54.4333", "lng" => "3.4"); +$CountryCoordinates["BR"] = array("lat" => "-10", "lng" => "-55"); +$CountryCoordinates["IO"] = array("lat" => "-6", "lng" => "71.5"); +$CountryCoordinates["BN"] = array("lat" => "4.5", "lng" => "114.6667"); +$CountryCoordinates["BG"] = array("lat" => "43", "lng" => "25"); +$CountryCoordinates["BF"] = array("lat" => "13", "lng" => "-2"); +$CountryCoordinates["BI"] = array("lat" => "-3.5", "lng" => "30"); +$CountryCoordinates["KH"] = array("lat" => "13", "lng" => "105"); +$CountryCoordinates["CM"] = array("lat" => "6", "lng" => "12"); +$CountryCoordinates["CA"] = array("lat" => "60", "lng" => "-95"); +$CountryCoordinates["CV"] = array("lat" => "16", "lng" => "-24"); +$CountryCoordinates["KY"] = array("lat" => "19.5", "lng" => "-80.5"); +$CountryCoordinates["CF"] = array("lat" => "7", "lng" => "21"); +$CountryCoordinates["TD"] = array("lat" => "15", "lng" => "19"); +$CountryCoordinates["CL"] = array("lat" => "-30", "lng" => "-71"); +$CountryCoordinates["CN"] = array("lat" => "35", "lng" => "105"); +$CountryCoordinates["CX"] = array("lat" => "-10.5", "lng" => "105.6667"); +$CountryCoordinates["CC"] = array("lat" => "-12.5", "lng" => "96.8333"); +$CountryCoordinates["CO"] = array("lat" => "4", "lng" => "-72"); +$CountryCoordinates["KM"] = array("lat" => "-12.1667", "lng" => "44.25"); +$CountryCoordinates["CG"] = array("lat" => "-1", "lng" => "15"); +$CountryCoordinates["CD"] = array("lat" => "0", "lng" => "25"); +$CountryCoordinates["CK"] = array("lat" => "-21.2333", "lng" => "-159.7667"); +$CountryCoordinates["CR"] = array("lat" => "10", "lng" => "-84"); +$CountryCoordinates["CI"] = array("lat" => "8", "lng" => "-5"); +$CountryCoordinates["HR"] = array("lat" => "45.1667", "lng" => "15.5"); +$CountryCoordinates["CU"] = array("lat" => "21.5", "lng" => "-80"); +$CountryCoordinates["CY"] = array("lat" => "35", "lng" => "33"); +$CountryCoordinates["CZ"] = array("lat" => "49.75", "lng" => "15.5"); +$CountryCoordinates["DK"] = array("lat" => "56", "lng" => "10"); +$CountryCoordinates["DJ"] = array("lat" => "11.5", "lng" => "43"); +$CountryCoordinates["DM"] = array("lat" => "15.4167", "lng" => "-61.3333"); +$CountryCoordinates["DO"] = array("lat" => "19", "lng" => "-70.6667"); +$CountryCoordinates["EC"] = array("lat" => "-2", "lng" => "-77.5"); +$CountryCoordinates["EG"] = array("lat" => "27", "lng" => "30"); +$CountryCoordinates["SV"] = array("lat" => "13.8333", "lng" => "-88.9167"); +$CountryCoordinates["GQ"] = array("lat" => "2", "lng" => "10"); +$CountryCoordinates["ER"] = array("lat" => "15", "lng" => "39"); +$CountryCoordinates["EE"] = array("lat" => "59", "lng" => "26"); +$CountryCoordinates["ET"] = array("lat" => "8", "lng" => "38"); +$CountryCoordinates["FK"] = array("lat" => "-51.75", "lng" => "-59"); +$CountryCoordinates["FO"] = array("lat" => "62", "lng" => "-7"); +$CountryCoordinates["FJ"] = array("lat" => "-18", "lng" => "175"); +$CountryCoordinates["FI"] = array("lat" => "64", "lng" => "26"); +$CountryCoordinates["FR"] = array("lat" => "46", "lng" => "2"); +$CountryCoordinates["GF"] = array("lat" => "4", "lng" => "-53"); +$CountryCoordinates["PF"] = array("lat" => "-15", "lng" => "-140"); +$CountryCoordinates["TF"] = array("lat" => "-43", "lng" => "67"); +$CountryCoordinates["GA"] = array("lat" => "-1", "lng" => "11.75"); +$CountryCoordinates["GM"] = array("lat" => "13.4667", "lng" => "-16.5667"); +$CountryCoordinates["GE"] = array("lat" => "42", "lng" => "43.5"); +$CountryCoordinates["DE"] = array("lat" => "51", "lng" => "9"); +$CountryCoordinates["GH"] = array("lat" => "8", "lng" => "-2"); +$CountryCoordinates["GI"] = array("lat" => "36.1833", "lng" => "-5.3667"); +$CountryCoordinates["GR"] = array("lat" => "39", "lng" => "22"); +$CountryCoordinates["GL"] = array("lat" => "72", "lng" => "-40"); +$CountryCoordinates["GD"] = array("lat" => "12.1167", "lng" => "-61.6667"); +$CountryCoordinates["GP"] = array("lat" => "16.25", "lng" => "-61.5833"); +$CountryCoordinates["GU"] = array("lat" => "13.4667", "lng" => "144.7833"); +$CountryCoordinates["GT"] = array("lat" => "15.5", "lng" => "-90.25"); +$CountryCoordinates["GG"] = array("lat" => "49.5", "lng" => "-2.56"); +$CountryCoordinates["GN"] = array("lat" => "11", "lng" => "-10"); +$CountryCoordinates["GW"] = array("lat" => "12", "lng" => "-15"); +$CountryCoordinates["GY"] = array("lat" => "5", "lng" => "-59"); +$CountryCoordinates["HT"] = array("lat" => "19", "lng" => "-72.4167"); +$CountryCoordinates["HM"] = array("lat" => "-53.1", "lng" => "72.5167"); +$CountryCoordinates["VA"] = array("lat" => "41.9", "lng" => "12.45"); +$CountryCoordinates["HN"] = array("lat" => "15", "lng" => "-86.5"); +$CountryCoordinates["HK"] = array("lat" => "22.25", "lng" => "114.1667"); +$CountryCoordinates["HU"] = array("lat" => "47", "lng" => "20"); +$CountryCoordinates["IS"] = array("lat" => "65", "lng" => "-18"); +$CountryCoordinates["IN"] = array("lat" => "20", "lng" => "77"); +$CountryCoordinates["ID"] = array("lat" => "-5", "lng" => "120"); +$CountryCoordinates["IR"] = array("lat" => "32", "lng" => "53"); +$CountryCoordinates["IQ"] = array("lat" => "33", "lng" => "44"); +$CountryCoordinates["IE"] = array("lat" => "53", "lng" => "-8"); +$CountryCoordinates["IM"] = array("lat" => "54.23", "lng" => "-4.55"); +$CountryCoordinates["IL"] = array("lat" => "31.5", "lng" => "34.75"); +$CountryCoordinates["IT"] = array("lat" => "42.8333", "lng" => "12.8333"); +$CountryCoordinates["JM"] = array("lat" => "18.25", "lng" => "-77.5"); +$CountryCoordinates["JP"] = array("lat" => "36", "lng" => "138"); +$CountryCoordinates["JE"] = array("lat" => "49.21", "lng" => "-2.13"); +$CountryCoordinates["JO"] = array("lat" => "31", "lng" => "36"); +$CountryCoordinates["KZ"] = array("lat" => "48", "lng" => "68"); +$CountryCoordinates["KE"] = array("lat" => "1", "lng" => "38"); +$CountryCoordinates["KI"] = array("lat" => "1.4167", "lng" => "173"); +$CountryCoordinates["KP"] = array("lat" => "40", "lng" => "127"); +$CountryCoordinates["KR"] = array("lat" => "37", "lng" => "127.5"); +$CountryCoordinates["KW"] = array("lat" => "29.3375", "lng" => "47.6581"); +$CountryCoordinates["KG"] = array("lat" => "41", "lng" => "75"); +$CountryCoordinates["LA"] = array("lat" => "18", "lng" => "105"); +$CountryCoordinates["LV"] = array("lat" => "57", "lng" => "25"); +$CountryCoordinates["LB"] = array("lat" => "33.8333", "lng" => "35.8333"); +$CountryCoordinates["LS"] = array("lat" => "-29.5", "lng" => "28.5"); +$CountryCoordinates["LR"] = array("lat" => "6.5", "lng" => "-9.5"); +$CountryCoordinates["LY"] = array("lat" => "25", "lng" => "17"); +$CountryCoordinates["LI"] = array("lat" => "47.1667", "lng" => "9.5333"); +$CountryCoordinates["LT"] = array("lat" => "56", "lng" => "24"); +$CountryCoordinates["LU"] = array("lat" => "49.75", "lng" => "6.1667"); +$CountryCoordinates["MO"] = array("lat" => "22.1667", "lng" => "113.55"); +$CountryCoordinates["MK"] = array("lat" => "41.8333", "lng" => "22"); +$CountryCoordinates["MG"] = array("lat" => "-20", "lng" => "47"); +$CountryCoordinates["MW"] = array("lat" => "-13.5", "lng" => "34"); +$CountryCoordinates["MY"] = array("lat" => "2.5", "lng" => "112.5"); +$CountryCoordinates["MV"] = array("lat" => "3.25", "lng" => "73"); +$CountryCoordinates["ML"] = array("lat" => "17", "lng" => "-4"); +$CountryCoordinates["MT"] = array("lat" => "35.8333", "lng" => "14.5833"); +$CountryCoordinates["MH"] = array("lat" => "9", "lng" => "168"); +$CountryCoordinates["MQ"] = array("lat" => "14.6667", "lng" => "-61"); +$CountryCoordinates["MR"] = array("lat" => "20", "lng" => "-12"); +$CountryCoordinates["MU"] = array("lat" => "-20.2833", "lng" => "57.55"); +$CountryCoordinates["YT"] = array("lat" => "-12.8333", "lng" => "45.1667"); +$CountryCoordinates["MX"] = array("lat" => "23", "lng" => "-102"); +$CountryCoordinates["FM"] = array("lat" => "6.9167", "lng" => "158.25"); +$CountryCoordinates["MD"] = array("lat" => "47", "lng" => "29"); +$CountryCoordinates["MC"] = array("lat" => "43.7333", "lng" => "7.4"); +$CountryCoordinates["MN"] = array("lat" => "46", "lng" => "105"); +$CountryCoordinates["ME"] = array("lat" => "42", "lng" => "19"); +$CountryCoordinates["MS"] = array("lat" => "16.75", "lng" => "-62.2"); +$CountryCoordinates["MA"] = array("lat" => "32", "lng" => "-5"); +$CountryCoordinates["MZ"] = array("lat" => "-18.25", "lng" => "35"); +$CountryCoordinates["MM"] = array("lat" => "22", "lng" => "98"); +$CountryCoordinates["NA"] = array("lat" => "-22", "lng" => "17"); +$CountryCoordinates["NR"] = array("lat" => "-0.5333", "lng" => "166.9167"); +$CountryCoordinates["NP"] = array("lat" => "28", "lng" => "84"); +$CountryCoordinates["NL"] = array("lat" => "52.5", "lng" => "5.75"); +$CountryCoordinates["AN"] = array("lat" => "12.25", "lng" => "-68.75"); +$CountryCoordinates["NC"] = array("lat" => "-21.5", "lng" => "165.5"); +$CountryCoordinates["NZ"] = array("lat" => "-41", "lng" => "174"); +$CountryCoordinates["NI"] = array("lat" => "13", "lng" => "-85"); +$CountryCoordinates["NE"] = array("lat" => "16", "lng" => "8"); +$CountryCoordinates["NG"] = array("lat" => "10", "lng" => "8"); +$CountryCoordinates["NU"] = array("lat" => "-19.0333", "lng" => "-169.8667"); +$CountryCoordinates["NF"] = array("lat" => "-29.0333", "lng" => "167.95"); +$CountryCoordinates["MP"] = array("lat" => "15.2", "lng" => "145.75"); +$CountryCoordinates["NO"] = array("lat" => "62", "lng" => "10"); +$CountryCoordinates["OM"] = array("lat" => "21", "lng" => "57"); +$CountryCoordinates["PK"] = array("lat" => "30", "lng" => "70"); +$CountryCoordinates["PW"] = array("lat" => "7.5", "lng" => "134.5"); +$CountryCoordinates["PS"] = array("lat" => "32", "lng" => "35.25"); +$CountryCoordinates["PA"] = array("lat" => "9", "lng" => "-80"); +$CountryCoordinates["PG"] = array("lat" => "-6", "lng" => "147"); +$CountryCoordinates["PY"] = array("lat" => "-23", "lng" => "-58"); +$CountryCoordinates["PE"] = array("lat" => "-10", "lng" => "-76"); +$CountryCoordinates["PH"] = array("lat" => "13", "lng" => "122"); +$CountryCoordinates["PN"] = array("lat" => "-24.7", "lng" => "-127.4"); +$CountryCoordinates["PL"] = array("lat" => "52", "lng" => "20"); +$CountryCoordinates["PT"] = array("lat" => "39.5", "lng" => "-8"); +$CountryCoordinates["PR"] = array("lat" => "18.25", "lng" => "-66.5"); +$CountryCoordinates["QA"] = array("lat" => "25.5", "lng" => "51.25"); +$CountryCoordinates["RE"] = array("lat" => "-21.1", "lng" => "55.6"); +$CountryCoordinates["RO"] = array("lat" => "46", "lng" => "25"); +$CountryCoordinates["RU"] = array("lat" => "60", "lng" => "100"); +$CountryCoordinates["RW"] = array("lat" => "-2", "lng" => "30"); +$CountryCoordinates["SH"] = array("lat" => "-15.9333", "lng" => "-5.7"); +$CountryCoordinates["KN"] = array("lat" => "17.3333", "lng" => "-62.75"); +$CountryCoordinates["LC"] = array("lat" => "13.8833", "lng" => "-61.1333"); +$CountryCoordinates["PM"] = array("lat" => "46.8333", "lng" => "-56.3333"); +$CountryCoordinates["VC"] = array("lat" => "13.25", "lng" => "-61.2"); +$CountryCoordinates["WS"] = array("lat" => "-13.5833", "lng" => "-172.3333"); +$CountryCoordinates["SM"] = array("lat" => "43.7667", "lng" => "12.4167"); +$CountryCoordinates["ST"] = array("lat" => "1", "lng" => "7"); +$CountryCoordinates["SA"] = array("lat" => "25", "lng" => "45"); +$CountryCoordinates["SN"] = array("lat" => "14", "lng" => "-14"); +$CountryCoordinates["RS"] = array("lat" => "44", "lng" => "21"); +$CountryCoordinates["SC"] = array("lat" => "-4.5833", "lng" => "55.6667"); +$CountryCoordinates["SL"] = array("lat" => "8.5", "lng" => "-11.5"); +$CountryCoordinates["SG"] = array("lat" => "1.3667", "lng" => "103.8"); +$CountryCoordinates["SK"] = array("lat" => "48.6667", "lng" => "19.5"); +$CountryCoordinates["SI"] = array("lat" => "46", "lng" => "15"); +$CountryCoordinates["SB"] = array("lat" => "-8", "lng" => "159"); +$CountryCoordinates["SO"] = array("lat" => "10", "lng" => "49"); +$CountryCoordinates["ZA"] = array("lat" => "-29", "lng" => "24"); +$CountryCoordinates["GS"] = array("lat" => "-54.5", "lng" => "-37"); +$CountryCoordinates["ES"] = array("lat" => "40", "lng" => "-4"); +$CountryCoordinates["LK"] = array("lat" => "7", "lng" => "81"); +$CountryCoordinates["SD"] = array("lat" => "15", "lng" => "30"); +$CountryCoordinates["SR"] = array("lat" => "4", "lng" => "-56"); +$CountryCoordinates["SJ"] = array("lat" => "78", "lng" => "20"); +$CountryCoordinates["SZ"] = array("lat" => "-26.5", "lng" => "31.5"); +$CountryCoordinates["SE"] = array("lat" => "62", "lng" => "15"); +$CountryCoordinates["CH"] = array("lat" => "47", "lng" => "8"); +$CountryCoordinates["SY"] = array("lat" => "35", "lng" => "38"); +$CountryCoordinates["TW"] = array("lat" => "23.5", "lng" => "121"); +$CountryCoordinates["TJ"] = array("lat" => "39", "lng" => "71"); +$CountryCoordinates["TZ"] = array("lat" => "-6", "lng" => "35"); +$CountryCoordinates["TH"] = array("lat" => "15", "lng" => "100"); +$CountryCoordinates["TL"] = array("lat" => "-8.55", "lng" => "125.5167"); +$CountryCoordinates["TG"] = array("lat" => "8", "lng" => "1.1667"); +$CountryCoordinates["TK"] = array("lat" => "-9", "lng" => "-172"); +$CountryCoordinates["TO"] = array("lat" => "-20", "lng" => "-175"); +$CountryCoordinates["TT"] = array("lat" => "11", "lng" => "-61"); +$CountryCoordinates["TN"] = array("lat" => "34", "lng" => "9"); +$CountryCoordinates["TR"] = array("lat" => "39", "lng" => "35"); +$CountryCoordinates["TM"] = array("lat" => "40", "lng" => "60"); +$CountryCoordinates["TC"] = array("lat" => "21.75", "lng" => "-71.5833"); +$CountryCoordinates["TV"] = array("lat" => "-8", "lng" => "178"); +$CountryCoordinates["UG"] = array("lat" => "1", "lng" => "32"); +$CountryCoordinates["UA"] = array("lat" => "49", "lng" => "32"); +$CountryCoordinates["AE"] = array("lat" => "24", "lng" => "54"); +$CountryCoordinates["GB"] = array("lat" => "54", "lng" => "-2"); +$CountryCoordinates["US"] = array("lat" => "38", "lng" => "-97"); +$CountryCoordinates["UM"] = array("lat" => "19.2833", "lng" => "166.6"); +$CountryCoordinates["UY"] = array("lat" => "-33", "lng" => "-56"); +$CountryCoordinates["UZ"] = array("lat" => "41", "lng" => "64"); +$CountryCoordinates["VU"] = array("lat" => "-16", "lng" => "167"); +$CountryCoordinates["VE"] = array("lat" => "8", "lng" => "-66"); +$CountryCoordinates["VN"] = array("lat" => "16", "lng" => "106"); +$CountryCoordinates["VG"] = array("lat" => "18.5", "lng" => "-64.5"); +$CountryCoordinates["VI"] = array("lat" => "18.3333", "lng" => "-64.8333"); +$CountryCoordinates["WF"] = array("lat" => "-13.3", "lng" => "-176.2"); +$CountryCoordinates["EH"] = array("lat" => "24.5", "lng" => "-13"); +$CountryCoordinates["YE"] = array("lat" => "15", "lng" => "48"); +$CountryCoordinates["ZM"] = array("lat" => "-15", "lng" => "30"); +$CountryCoordinates["ZW"] = array("lat" => "-20", "lng" => "30"); +?> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/functions/export.php b/plugins/wp-statistics/includes/functions/export.php new file mode 100644 index 0000000..8354de1 --- /dev/null +++ b/plugins/wp-statistics/includes/functions/export.php @@ -0,0 +1,84 @@ +<?php + function wp_statistics_export_data() { + GLOBAL $WP_Statistics, $wpdb; // this is how you get access to the database + + $manage_cap = wp_statistics_validate_capability( $WP_Statistics->get_option('manage_capability', 'manage_options') ); + + if( current_user_can( $manage_cap ) ) { + $table = $_POST['table-to-export']; + $type = $_POST['export-file-type']; + $headers = $_POST['export-headers']; + + // Validate the table name the user passed to us. + if( !( $table == "useronline" || $table == "visit" || $table == "visitor" || $table == "exclusions" || $table == "pages" || $table == "search" ) ) { $table = FALSE; } + + // Validate the file type the user passed to us. + if( !( $type == "xml" || $type == "csv" || $type == "tsv" ) ) { $table = FALSE; } + + if($table && $type) { + + require($WP_Statistics->plugin_dir . '/includes/classes/php-export-data.class.php'); + + $file_name = WPS_EXPORT_FILE_NAME . '-' . $WP_Statistics->Current_Date('Y-m-d-H-i'); + + switch($type) { + case 'xml': + $exporter = new ExportDataExcel('browser', "{$file_name}.xml"); + + break; + case 'csv': + $exporter = new ExportDataCSV('browser', "{$file_name}.csv"); + + break; + case 'tsv': + $exporter = new ExportDataTSV('browser', "{$file_name}.tsv"); + + break; + } + + $exporter->initialize(); + + // We need to limit the number of results we retrieve to ensure we don't run out of memory + $query_base = "SELECT * FROM {$wpdb->prefix}statistics_{$table}"; + $query = $query_base . ' LIMIT 0,1000'; + + $i = 1; + $more_results = true; + $result = $wpdb->get_results($query, ARRAY_A); + + // If we didn't get any rows, don't output anything. + if( count( $result ) < 1 ) { echo "No data in table!"; exit; } + + if( $headers ) { + foreach( $result[0] as $key => $col ) { $columns[] = $key; } + $exporter->addRow($columns); + } + + + while( $more_results ) { + foreach($result as $row) { + $exporter->addRow($row); + + // Make sure we've flushed the output buffer so we don't run out of memory on large exports. + ob_flush(); + flush(); + } + + unset( $result ); + $wpdb->flush(); + + $query = $query_base . ' LIMIT ' . ($i * 1000) . ',1000'; + $result = $wpdb->get_results($query, ARRAY_A); + + if( count( $result ) == 0 ) { $more_results = false; } + + $i++; + } + + $exporter->finalize(); + + exit; + } + } + } +?> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/functions/functions.php b/plugins/wp-statistics/includes/functions/functions.php new file mode 100644 index 0000000..2c939fa --- /dev/null +++ b/plugins/wp-statistics/includes/functions/functions.php @@ -0,0 +1,1022 @@ +<?php +/* + This is the primary set of functions used to calculate the statistics, they are available for other developers to call. + + NOTE: Many of the functions return an MySQL result object, using this object like a variable (ie. echo $result) will output + the number of rows returned, but you can also use it an a foreach loop to to get the details of the rows. +*/ + + // This function returns the current users online. + function wp_statistics_useronline() { + + global $wpdb; + + return $wpdb->query( "SELECT * FROM {$wpdb->prefix}statistics_useronline"); + } + + // This function get the visit statistics for a given time frame. + function wp_statistics_visit( $time, $daily = null ) { + + // We need database and the global $WP_Statistics object access. + global $wpdb, $WP_Statistics; + + // If we've been asked to do a daily count, it's a slightly different SQL query, so handle it separately. + if( $daily == true ) { + + // Fetch the results from the database. + $result = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}statistics_visit WHERE `last_counter` = '{$WP_Statistics->Current_Date( 'Y-m-d', $time )}'" ); + + // If we have a result, return it, otherwise force a 0 to be returned instead of the logical FALSE that would otherwise be the case. + if( $result) { + return $result->visit; + } else { + return 0; + } + + } else { + + // This function accepts several options for time parameter, each one has a unique SQL query string. + // They're pretty self explanatory. + + switch( $time ) { + case 'today': + $result = $wpdb->get_var( "SELECT SUM(visit) FROM {$wpdb->prefix}statistics_visit WHERE `last_counter` = '{$WP_Statistics->Current_Date( 'Y-m-d' )}'" ); + break; + + case 'yesterday': + $result = $wpdb->get_var( "SELECT SUM(visit) FROM {$wpdb->prefix}statistics_visit WHERE `last_counter` = '{$WP_Statistics->Current_Date( 'Y-m-d', -1 )}'" ); + break; + + case 'week': + $result = $wpdb->get_var( "SELECT SUM(visit) FROM {$wpdb->prefix}statistics_visit WHERE `last_counter` BETWEEN '{$WP_Statistics->Current_Date( 'Y-m-d', -7 )}' AND '{$WP_Statistics->Current_Date( 'Y-m-d' )}'" ); + break; + + case 'month': + $result = $wpdb->get_var( "SELECT SUM(visit) FROM {$wpdb->prefix}statistics_visit WHERE `last_counter` BETWEEN '{$WP_Statistics->Current_Date( 'Y-m-d', -30 )}' AND '{$WP_Statistics->Current_Date( 'Y-m-d' )}'" ); + break; + + case 'year': + $result = $wpdb->get_var( "SELECT SUM(visit) FROM {$wpdb->prefix}statistics_visit WHERE `last_counter` BETWEEN '{$WP_Statistics->Current_Date( 'Y-m-d', -365 )}' AND '{$WP_Statistics->Current_Date( 'Y-m-d' )}'" ); + break; + + case 'total': + $result = $wpdb->get_var( "SELECT SUM(visit) FROM {$wpdb->prefix}statistics_visit" ); + $result += $WP_Statistics->Get_Historical_Data( 'visits' ); + break; + + default: + $result = $wpdb->get_var( "SELECT SUM(visit) FROM {$wpdb->prefix}statistics_visit WHERE `last_counter` BETWEEN '{$WP_Statistics->Current_Date( 'Y-m-d', $time )}' AND '{$WP_Statistics->Current_Date( 'Y-m-d' )}'" ); + break; + } + } + + // If we have a result, return it, otherwise force a 0 to be returned instead of the logical FALSE that would otherwise be the case. + if( $result == null ) { $result = 0; } + + return $result; + } + + // This function gets the visitor statistics for a given time frame. + function wp_statistics_visitor( $time, $daily = null, $countonly = false ) { + + // We need database and the global $WP_Statistics object access. + global $wpdb, $WP_Statistics; + + $history = 0; + $select = '*'; + $sqlstatement = ''; + + // We often don't need the complete results but just the count of rows, if that's the case, let's have MySQL just count the results for us. + if( $countonly == true ) { $select = 'count(last_counter)'; } + + // If we've been asked to do a daily count, it's a slightly different SQL query, so handle it seperatly. + if( $daily == true ) { + + // Fetch the results from the database. + $result = $wpdb->query( "SELECT {$select} FROM {$wpdb->prefix}statistics_visitor WHERE `last_counter` = '{$WP_Statistics->Current_Date( 'Y-m-d', $time )}'"); + + return $result; + + } else { + + // This function accepts several options for time parameter, each one has a unique SQL query string. + // They're pretty self explanatory. + switch( $time ) { + case 'today': + $sqlstatement = "SELECT {$select} FROM {$wpdb->prefix}statistics_visitor WHERE `last_counter` = '{$WP_Statistics->Current_Date( 'Y-m-d' )}'"; + break; + + case 'yesterday': + $sqlstatement = "SELECT {$select} FROM {$wpdb->prefix}statistics_visitor WHERE `last_counter` = '{$WP_Statistics->Current_Date( 'Y-m-d', -1 )}'"; + break; + + case 'week': + $sqlstatement = "SELECT {$select} FROM {$wpdb->prefix}statistics_visitor WHERE `last_counter` BETWEEN '{$WP_Statistics->Current_Date( 'Y-m-d', -7 )}' AND '{$WP_Statistics->Current_Date( 'Y-m-d' )}'"; + break; + + case 'month': + $sqlstatement = "SELECT {$select} FROM {$wpdb->prefix}statistics_visitor WHERE `last_counter` BETWEEN '{$WP_Statistics->Current_Date( 'Y-m-d', -30 )}' AND '{$WP_Statistics->Current_Date( 'Y-m-d' )}'"; + break; + + case 'year': + $sqlstatement = "SELECT {$select} FROM {$wpdb->prefix}statistics_visitor WHERE `last_counter` BETWEEN '{$WP_Statistics->Current_Date( 'Y-m-d', -365 )}' AND '{$WP_Statistics->Current_Date( 'Y-m-d' )}'"; + break; + + case 'total': + $sqlstatement = "SELECT {$select} FROM {$wpdb->prefix}statistics_visitor"; + $history = $WP_Statistics->Get_Historical_Data( 'visitors' ); + break; + + default: + $sqlstatement = "SELECT {$select} FROM {$wpdb->prefix}statistics_visitor WHERE `last_counter` BETWEEN '{$WP_Statistics->Current_Date( 'Y-m-d', $time )}' AND '{$WP_Statistics->Current_Date( 'Y-m-d' )}'"; + break; + } + } + + // Execute the SQL call, if we're only counting we can use get_var(), otherwise we use query(). + if( $countonly == true ) { + $result = $wpdb->get_var( $sqlstatement ); + $result += $history; + } + else { + $result = $wpdb->query( $sqlstatement ); + } + + return $result; + } + + // This function returns the statistics for a given page. + function wp_statistics_pages( $time, $page_uri = '', $id = -1, $rangestartdate = null, $rangeenddate = null ) { + + // We need database and the global $WP_Statistics object access. + global $wpdb, $WP_Statistics; + + $history = 0; + $sqlstatement = ''; + + // If no page URI has been passed in, get the current page URI. + if( $page_uri == '' ) { $page_uri = wp_statistics_get_uri(); } + + $page_uri_sql = esc_sql( $page_uri ); + + // If a page/post ID has been passed, use it to select the rows, otherwise use the URI. + // Note that a single page/post ID can have multiple URI's associated with it. + if( $id != -1 ) { + $page_sql = '`id` = ' . $id; + $history_key = 'page'; + $history_id = $id; + } else { + $page_sql = "`URI` = '{$page_uri_sql}'"; + $history_key = 'uri'; + $history_id = $page_uri; + } + + // This function accepts several options for time parameter, each one has a unique SQL query string. + // They're pretty self explanatory. + switch($time) { + case 'today': + $sqlstatement = "SELECT SUM(count) FROM {$wpdb->prefix}statistics_pages WHERE `date` = '{$WP_Statistics->Current_Date( 'Y-m-d' )}' AND {$page_sql}"; + break; + + case 'yesterday': + $sqlstatement = "SELECT SUM(count) FROM {$wpdb->prefix}statistics_pages WHERE `date` = '{$WP_Statistics->Current_Date( 'Y-m-d', -1 )}' AND {$page_sql}"; + break; + + case 'week': + $sqlstatement = "SELECT SUM(count) FROM {$wpdb->prefix}statistics_pages WHERE `date` BETWEEN '{$WP_Statistics->Current_Date( 'Y-m-d', -7 )}' AND '{$WP_Statistics->Current_Date( 'Y-m-d' )}' AND {$page_sql}"; + break; + + case 'month': + $sqlstatement = "SELECT SUM(count) FROM {$wpdb->prefix}statistics_pages WHERE `date` BETWEEN '{$WP_Statistics->Current_Date( 'Y-m-d', -30 )}' AND '{$WP_Statistics->Current_Date( 'Y-m-d' )}' AND {$page_sql}"; + break; + + case 'year': + $sqlstatement = "SELECT SUM(count) FROM {$wpdb->prefix}statistics_pages WHERE `date` BETWEEN '{$WP_Statistics->Current_Date( 'Y-m-d', -365 )}' AND '{$WP_Statistics->Current_Date( 'Y-m-d' )}' AND {$page_sql}"; + break; + + case 'total': + $sqlstatement = "SELECT SUM(count) FROM {$wpdb->prefix}statistics_pages WHERE {$page_sql}"; + $history = $WP_Statistics->Get_Historical_Data( $history_key, $history_id ); + break; + case 'range': + $sqlstatement = "SELECT SUM(count) FROM {$wpdb->prefix}statistics_pages WHERE `date` BETWEEN '" . $WP_Statistics->Current_Date( 'Y-m-d', '-0', strtotime( $rangestartdate ) ) . "' AND '" . $WP_Statistics->Current_Date( 'Y-m-d', '-0', strtotime( $rangeenddate ) ) . "' AND {$page_sql}"; + + break; + default: + $sqlstatement = "SELECT SUM(count) FROM {$wpdb->prefix}statistics_pages WHERE `date` = '{$WP_Statistics->Current_Date( 'Y-m-d', $time )}' AND {$page_sql}"; + break; + } + + // Since this function only every returns a count, just use get_var(). + $result = $wpdb->get_var( $sqlstatement ); + $result += $history; + + // If we have an empty result, return 0 instead of a blank. + if( $result == '' ) { $result = 0; } + + return $result; + } + + // This function converts a page URI to a page/post ID. It does this by looking up in the pages database + // the URI and getting the associated ID. This will only work if the page has been visited at least once. + function wp_statistics_uri_to_id( $uri ) { + global $wpdb; + + // Create the SQL query to use. + $sqlstatement = $wpdb->prepare( "SELECT id FROM {$wpdb->prefix}statistics_pages WHERE `URI` = %s AND id > 0", $uri ); + + // Execute the query. + $result = $wpdb->get_var( $sqlstatement ); + + // If we returned a false or some other 0 equivalent value, make sure $result is set to an integer 0. + if( $result == 0 ) { $result = 0; } + + return $result; + } + + // We need a quick function to pass to usort to properly sort the most popular pages. + function wp_stats_compare_uri_hits( $a, $b ) { + return $a[1] < $b[1]; + } + + // This function returns a multi-dimensional array, with the total number of pages and an array or URI's sorted in order with their URI, count, id and title. + function wp_statistics_get_top_pages( $rangestartdate = null, $rangeenddate = null ) { + global $wpdb; + + // Get every unique URI from the pages database. + if( $rangestartdate != null && $rangeenddate != null ) { + $result = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT uri FROM {$wpdb->prefix}statistics_pages WHERE `date` BETWEEN %s AND %s", $rangestartdate, $rangeenddate ), ARRAY_N); + } else { + $result = $wpdb->get_results( "SELECT DISTINCT uri FROM {$wpdb->prefix}statistics_pages", ARRAY_N ); + } + + $total = 0; + $uris = array(); + + // Now get the total page visit count for each unique URI. + foreach( $result as $out ) { + // Increment the total number of results. + $total ++; + + // Retreive the post ID for the URI. + $id = wp_statistics_uri_to_id( $out[0] ); + + // Lookup the post title. + $post = get_post($id); + + if( is_object( $post ) ) { + $title = $post->post_title; + } + else { + if( $out[0] == '/' ) { + $title = get_bloginfo(); + } + else { + $title = ''; + } + } + + // Add the current post to the array. + if( $rangestartdate != null && $rangeenddate != null ) { + $uris[] = array( $out[0], wp_statistics_pages( 'range', $out[0], -1, $rangestartdate, $rangeenddate ), $id, $title ); + } else { + $uris[] = array( $out[0], wp_statistics_pages( 'total', $out[0] ), $id, $title ); + } + } + + // If we have more than one result, let's sort them using usort. + if( count( $uris ) > 1 ) { + // Sort the URI's based on their hit count. + usort( $uris, 'wp_stats_compare_uri_hits'); + } + + return array( $total, $uris ); + } + + // This function gets the current page URI. + function wp_statistics_get_uri() { + // Get the site's path from the URL. + $site_uri = parse_url( site_url(), PHP_URL_PATH ); + + // Get the current page URI. + $page_uri = $_SERVER["REQUEST_URI"]; + + // Strip the site's path from the URI. + $page_uri = str_ireplace( $site_uri, '', $page_uri ); + + // If we're at the root (aka the URI is blank), let's make sure to indicate it. + if( $page_uri == '' ) { $page_uri = '/'; } + + return $page_uri; + } + + // This function returns all unique user agents in the database. + function wp_statistics_ua_list( $rangestartdate = null, $rangeenddate = null ) { + + global $wpdb; + + if( $rangestartdate != null && $rangeenddate != null ) { + $result = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT agent FROM {$wpdb->prefix}statistics_visitor AND `last_counter` BETWEEN %s AND %s", $rangestartdate, $rangeenddate ), ARRAY_N); + } else { + $result = $wpdb->get_results( "SELECT DISTINCT agent FROM {$wpdb->prefix}statistics_visitor", ARRAY_N); + } + + $Browers = array(); + + foreach( $result as $out ) + { + $Browsers[] = $out[0]; + } + + return $Browsers; + } + + // This function returns the count of a given user agent in the database. + function wp_statistics_useragent( $agent, $rangestartdate = null, $rangeenddate = null ) { + + global $wpdb; + + if( $rangestartdate != null && $rangeenddate != null ) { + $result = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(agent) FROM {$wpdb->prefix}statistics_visitor WHERE `agent` = %s AND `last_counter` BETWEEN %s AND %s", $agent, $rangestartdate, $rangeenddate ) ); + } else { + $result = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(agent) FROM {$wpdb->prefix}statistics_visitor WHERE `agent` = %s", $agent ) ); + } + + return $result; + } + + // This function returns all unique platform types from the database. + function wp_statistics_platform_list( $rangestartdate = null, $rangeenddate = null ) { + + global $wpdb; + + if( $rangestartdate != null && $rangeenddate != null ) { + $result = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT platform FROM {$wpdb->prefix}statistics_visitor WHERE `last_counter` BETWEEN %s AND %s", $rangestartdate, $rangeenddate ), ARRAY_N); + } else { + $result = $wpdb->get_results("SELECT DISTINCT platform FROM {$wpdb->prefix}statistics_visitor", ARRAY_N); + } + + $Platforms = array(); + + foreach( $result as $out ) + { + $Platforms[] = $out[0]; + } + + return $Platforms; + } + + // This function returns the count of a given platform in the database. + function wp_statistics_platform( $platform, $rangestartdate = null, $rangeenddate = null ) { + + global $wpdb; + + if( $rangestartdate != null && $rangeenddate != null ) { + $result = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(platform) FROM {$wpdb->prefix}statistics_visitor WHERE `platform` = %s AND `last_counter` BETWEEN %s AND %s", $platform, $rangestartdate, $rangeenddate ) ); + } else { + $result = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(platform) FROM {$wpdb->prefix}statistics_visitor WHERE `platform` = %s", $platform ) ); + } + + return $result; + } + + // This function returns all unique versions for a given agent from the database. + function wp_statistics_agent_version_list( $agent, $rangestartdate = null, $rangeenddate = null ) { + + global $wpdb; + + if( $rangestartdate != null && $rangeenddate != null ) { + $result = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT version FROM {$wpdb->prefix}statistics_visitor WHERE agent = %s AND `last_counter` BETWEEN %s AND %s", $agent, $rangestartdate, $rangeenddate ), ARRAY_N ); + } else { + $result = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT version FROM {$wpdb->prefix}statistics_visitor WHERE agent = %s", $agent ), ARRAY_N ); + } + + $Versions = array(); + + foreach( $result as $out ) + { + $Versions[] = $out[0]; + } + + return $Versions; + } + + // This function returns the statistcs for a given agent/version pair from the database. + function wp_statistics_agent_version( $agent, $version, $rangestartdate = null, $rangeenddate = null ) { + + global $wpdb; + + if( $rangestartdate != null && $rangeenddate != null ) { + $result = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(version) FROM {$wpdb->prefix}statistics_visitor WHERE agent = %s AND version = %s AND `last_counter` BETWEEN %s AND %s", $agent, $version, $rangestartdate, $rangeenddate ) ); + } else { + $result = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(version) FROM {$wpdb->prefix}statistics_visitor WHERE agent = %s AND version = %s", $agent, $version ) ); + } + + return $result; + } + + // This function returns an array or array's which define what search engines we should look for. + // + // By default will only return ones that have not been disabled by the user, this can be overridden by the $all parameter. + // + // Each sub array is made up of the following items: + // name = The proper name of the search engine + // translated = The proper name translated to the local language + // tag = a short one word, all lower case, representation of the search engine + // sqlpattern = either a single SQL style search pattern OR an array or search patterns to match the hostname in a URL against + // regexpattern = either a single regex style search pattern OR an array or search patterns to match the hostname in a URL against + // querykey = the URL key that contains the search string for the search engine + // image = the name of the image file to associate with this search engine (just the filename, no path info) + // + function wp_statistics_searchengine_list( $all = false ) { + GLOBAL $WP_Statistics; + + $default = $engines = array ( + 'ask' => array( 'name' => 'Ask.com', 'translated' => __( 'Ask.com', 'wp_statistics' ), 'tag' => 'ask', 'sqlpattern' => '%ask.com%', 'regexpattern' => 'ask\.com', 'querykey' => 'q', 'image' => 'ask.png' ), + 'baidu' => array( 'name' => 'Baidu', 'translated' => __( 'Baidu', 'wp_statistics' ), 'tag' => 'baidu', 'sqlpattern' => '%baidu.com%', 'regexpattern' => 'baidu\.com', 'querykey' => 'wd', 'image' => 'baidu.png' ), + 'bing' => array( 'name' => 'Bing', 'translated' => __( 'Bing', 'wp_statistics' ), 'tag' => 'bing', 'sqlpattern' => '%bing.com%', 'regexpattern' => 'bing\.com', 'querykey' => 'q', 'image' => 'bing.png' ), + 'clearch' => array( 'name' => 'clearch.org', 'translated' => __( 'clearch.org', 'wp_statistics' ), 'tag' => 'clearch', 'sqlpattern' => '%clearch.org%', 'regexpattern' => 'clearch\.org', 'querykey' => 'q', 'image' => 'clearch.png' ), + 'duckduckgo' => array( 'name' => 'DuckDuckGo', 'translated' => __( 'DuckDuckGo', 'wp_statistics' ), 'tag' => 'duckduckgo', 'sqlpattern' => array('%duckduckgo.com%', '%ddg.gg%' ), 'regexpattern' => array('duckduckgo\.com','ddg\.gg' ), 'querykey' => 'q', 'image' => 'duckduckgo.png' ), + 'google' => array( 'name' => 'Google', 'translated' => __( 'Google', 'wp_statistics' ), 'tag' => 'google', 'sqlpattern' => '%google.%', 'regexpattern' => 'google\.', 'querykey' => 'q', 'image' => 'google.png' ), + 'yahoo' => array( 'name' => 'Yahoo!', 'translated' => __( 'Yahoo!', 'wp_statistics' ), 'tag' => 'yahoo', 'sqlpattern' => '%yahoo.com%', 'regexpattern' => 'yahoo\.com', 'querykey' => 'p', 'image' => 'yahoo.png' ), + 'yandex' => array( 'name' => 'Yandex', 'translated' => __( 'Yandex', 'wp_statistics' ), 'tag' => 'yandex', 'sqlpattern' => '%yandex.ru%', 'regexpattern' => 'yandex\.ru', 'querykey' => 'text', 'image' => 'yandex.png' ) + ); + + if( $all == false ) { + foreach( $engines as $key => $engine ) { + if( $WP_Statistics->get_option( 'disable_se_' . $engine['tag'] ) ) { unset( $engines[$key] ); } + } + + // If we've disabled all the search engines, reset the list back to default. + if( count( $engines ) == 0 ) { $engines = $default; } + } + + return $engines; + } + + // This function will return the SQL WHERE clause for getting the search words for a given search engine. + function wp_statistics_searchword_query( $search_engine = 'all' ) { + GLOBAL $WP_Statistics; + + // Get a complete list of search engines + $searchengine_list = wp_statistics_searchengine_list(); + $search_query = ''; + + if( $WP_Statistics->get_option( 'search_converted' ) ) { + // Are we getting results for all search engines or a specific one? + if( strtolower( $search_engine ) == 'all' ) { + // For all of them? Ok, look through the search engine list and create a SQL query string to get them all from the database. + foreach( $searchengine_list as $key => $se ) { + $search_query .= "( `engine` = '{$key}' AND `words` <> '' ) OR "; + } + + // Trim off the last ' OR ' for the loop above. + $search_query = substr( $search_query, 0, strlen( $search_query ) - 4 ); + } else { + $search_query .= "`engine` = '{$search_engine}' AND `words` <> ''"; + } + } else { + // Are we getting results for all search engines or a specific one? + if( strtolower( $search_engine ) == 'all' ) { + // For all of them? Ok, look through the search engine list and create a SQL query string to get them all from the database. + // NOTE: This SQL query can be *VERY* long. + foreach( $searchengine_list as $se ) { + // The SQL pattern for a search engine may be an array if it has to handle multiple domains (like google.com and google.ca) or other factors. + if( is_array( $se['sqlpattern'] ) ) { + foreach( $se['sqlpattern'] as $subse ) { + $search_query .= "(`referred` LIKE '{$subse}{$se['querykey']}=%' AND `referred` NOT LIKE '{$subse}{$se['querykey']}=&%' AND `referred` NOT LIKE '{$subse}{$se['querykey']}=') OR "; + } + } else { + $search_query .= "(`referred` LIKE '{$se['sqlpattern']}{$se['querykey']}=%' AND `referred` NOT LIKE '{$se['sqlpattern']}{$se['querykey']}=&%' AND `referred` NOT LIKE '{$se['sqlpattern']}{$se['querykey']}=') OR "; + } + } + + // Trim off the last ' OR ' for the loop above. + $search_query = substr( $search_query, 0, strlen( $search_query ) - 4 ); + } else { + // For just one? Ok, the SQL pattern for a search engine may be an array if it has to handle multiple domains (like google.com and google.ca) or other factors. + if( is_array( $searchengine_list[$search_engine]['sqlpattern'] ) ) { + foreach( $searchengine_list[$search_engine]['sqlpattern'] as $se ) { + $search_query .= "(`referred` LIKE '{$se}{$searchengine_list[$search_engine]['querykey']}=%' AND `referred` NOT LIKE '{$se}{$searchengine_list[$search_engine]['querykey']}=&%' AND `referred` NOT LIKE '{$se}{$searchengine_list[$search_engine]['querykey']}=') OR "; + } + + // Trim off the last ' OR ' for the loop above. + $search_query = substr( $search_query, 0, strlen( $search_query ) - 4 ); + } else { + $search_query .= "(`referred` LIKE '{$searchengine_list[$search_engine]['sqlpattern']}{$searchengine_list[$search_engine]['querykey']}=%' AND `referred` NOT LIKE '{$searchengine_list[$search_engine]['sqlpattern']}{$searchengine_list[$search_engine]['querykey']}=&%' AND `referred` NOT LIKE '{$searchengine_list[$search_engine]['sqlpattern']}{$searchengine_list[$search_engine]['querykey']}=')"; + } + } + } + + return $search_query; + } + + // This function will return the SQL WHERE clause for getting the search engine. + function wp_statistics_searchengine_query( $search_engine = 'all' ) { + GLOBAL $WP_Statistics; + + // Get a complete list of search engines + $searchengine_list = wp_statistics_searchengine_list(); + $search_query = ''; + + if( $WP_Statistics->get_option( 'search_converted' ) ) { + // Are we getting results for all search engines or a specific one? + if( strtolower( $search_engine ) == 'all' ) { + // For all of them? Ok, look through the search engine list and create a SQL query string to get them all from the database. + foreach( $searchengine_list as $key => $se ) { + $search_query .= "`engine` = '{$key}' OR "; + } + + // Trim off the last ' OR ' for the loop above. + $search_query = substr( $search_query, 0, strlen( $search_query ) - 4 ); + } else { + $search_query .= "`engine` = '{$search_engine}'"; + } + } else { + // Are we getting results for all search engines or a specific one? + if( strtolower( $search_engine ) == 'all' ) { + // For all of them? Ok, look through the search engine list and create a SQL query string to get them all from the database. + // NOTE: This SQL query can be long. + foreach( $searchengine_list as $se ) { + // The SQL pattern for a search engine may be an array if it has to handle multiple domains (like google.com and google.ca) or other factors. + if( is_array( $se['sqlpattern'] ) ) { + foreach( $se['sqlpattern'] as $subse ) { + $search_query .= "`referred` LIKE '{$subse}' OR "; + } + } else { + $search_query .= "`referred` LIKE '{$se['sqlpattern']}' OR "; + } + } + + // Trim off the last ' OR ' for the loop above. + $search_query = substr( $search_query, 0, strlen( $search_query ) - 4 ); + } else { + // For just one? Ok, the SQL pattern for a search engine may be an array if it has to handle multiple domains (like google.com and google.ca) or other factors. + if( is_array( $searchengine_list[$search_engine]['sqlpattern'] ) ) { + foreach( $searchengine_list[$search_engine]['sqlpattern'] as $se ) { + $search_query .= "`referred` LIKE '{$se}' OR "; + } + + // Trim off the last ' OR ' for the loop above. + $search_query = substr( $search_query, 0, strlen( $search_query ) - 4 ); + } + else { + $search_query .= "`referred` LIKE '{$searchengine_list[$search_engine]['sqlpattern']}'"; + } + } + } + + return $search_query; + } + + // This function will return a regular expression clause for matching one or more search engines. + function wp_statistics_searchengine_regex( $search_engine = 'all' ) { + + // Get a complete list of search engines + $searchengine_list = wp_statistics_searchengine_list(); + $search_query = ''; + + // Are we getting results for all search engines or a specific one? + if( strtolower( $search_engine ) == 'all' ) { + foreach( $searchengine_list as $se ) { + // The SQL pattern for a search engine may be an array if it has to handle multiple domains (like google.com and google.ca) or other factors. + if( is_array( $se['regexpattern'] ) ) { + foreach( $se['regexpattern'] as $subse ) { + $search_query .= "{$subse}|"; + } + } else { + $search_query .= "{$se['regexpattern']}|"; + } + } + + // Trim off the last '|' for the loop above. + $search_query = substr( $search_query, 0, strlen( $search_query ) - 1 ); + } else { + // For just one? Ok, the SQL pattern for a search engine may be an array if it has to handle multiple domains (like google.com and google.ca) or other factors. + if( is_array( $searchengine_list[$search_engine]['regexpattern'] ) ) { + foreach( $searchengine_list[$search_engine]['regexpattern'] as $se ) { + $search_query .= "{$se}|"; + } + + // Trim off the last '|' for the loop above. + $search_query = substr( $search_query, 0, strlen( $search_query ) - 1 ); + } else { + $search_query .= $searchengine_list[$search_engine]['regexpattern']; + } + } + + // Add the brackets and return + return "({$search_query})"; + } + + // This function will return the statistics for a given search engine. + function wp_statistics_searchengine( $search_engine = 'all', $time = 'total' ) { + + global $wpdb, $WP_Statistics; + + // Determine if we're using the old or new method of storing search engine info and build the appropriate table name. + $tablename = $wpdb->prefix . 'statistics_'; + + if( $WP_Statistics->get_option('search_converted') ) { + $tablename .= 'search'; + } else { + $tablename .= 'visitor'; + } + + // Get a complete list of search engines + $search_query = wp_statistics_searchengine_query( $search_engine ); + + // This function accepts several options for time parameter, each one has a unique SQL query string. + // They're pretty self explanatory. + switch( $time ) { + case 'today': + $result = $wpdb->query( "SELECT * FROM `{$tablename}` WHERE `last_counter` = '{$WP_Statistics->Current_Date( 'Y-m-d' )}' AND {$search_query}"); + break; + + case 'yesterday': + $result = $wpdb->query( "SELECT * FROM `{$tablename}` WHERE `last_counter` = '{$WP_Statistics->Current_Date( 'Y-m-d', -1 )}' AND {$search_query}"); + + break; + + case 'week': + $result = $wpdb->query( "SELECT * FROM `{$tablename}` WHERE `last_counter` = '{$WP_Statistics->Current_Date( 'Y-m-d', -7 )}' AND {$search_query}"); + + break; + + case 'month': + $result = $wpdb->query( "SELECT * FROM `{$tablename}` WHERE `last_counter` = '{$WP_Statistics->Current_Date( 'Y-m-d', -30 )}' AND {$search_query}"); + + break; + + case 'year': + $result = $wpdb->query( "SELECT * FROM `{$tablename}` WHERE `last_counter` = '{$WP_Statistics->Current_Date( 'Y-m-d', -365 )}' AND {$search_query}"); + + break; + + case 'total': + $result = $wpdb->query( "SELECT * FROM `{$tablename}` WHERE {$search_query}"); + + break; + + default: + $result = $wpdb->query( "SELECT * FROM `{$tablename}` WHERE `last_counter` = '{$WP_Statistics->Current_Date( 'Y-m-d', $time)}' AND {$search_query}"); + + break; + } + + return $result; + } + + // This function will return the statistics for a given search engine for a given time frame. + function wp_statistics_searchword( $search_engine = 'all', $time = 'total' ) { + + global $wpdb, $WP_Statistics; + + // Determine if we're using the old or new method of storing search engine info and build the appropriate table name. + $tablename = $wpdb->prefix . 'statistics_'; + + if( $WP_Statistics->get_option( 'search_converted' ) ) { + $tablename .= 'search'; + } else { + $tablename .= 'visitor'; + } + + // Get a complete list of search engines + $search_query = wp_statistics_searchword_query( $search_engine ); + + // This function accepts several options for time parameter, each one has a unique SQL query string. + // They're pretty self explanatory. + switch( $time ) { + case 'today': + $result = $wpdb->query( "SELECT * FROM `{$tablename}` WHERE `last_counter` = '{$WP_Statistics->Current_Date( 'Y-m-d' )}' AND {$search_query}"); + break; + + case 'yesterday': + $result = $wpdb->query( "SELECT * FROM `{$tablename}` WHERE `last_counter` = '{$WP_Statistics->Current_Date( 'Y-m-d', -1 )}' AND {$search_query}"); + + break; + + case 'week': + $result = $wpdb->query( "SELECT * FROM `{$tablename}` WHERE `last_counter` = '{$WP_Statistics->Current_Date( 'Y-m-d', -7 )}' AND {$search_query}"); + + break; + + case 'month': + $result = $wpdb->query( "SELECT * FROM `{$tablename}` WHERE `last_counter` = '{$WP_Statistics->Current_Date( 'Y-m-d', -30 )}' AND {$search_query}"); + + break; + + case 'year': + $result = $wpdb->query( "SELECT * FROM `{$tablename}` WHERE `last_counter` = '{$WP_Statistics->Current_Date( 'Y-m-d', -365 )}' AND {$search_query}"); + + break; + + case 'total': + $result = $wpdb->query( "SELECT * FROM `{$tablename}` WHERE {$search_query}"); + + break; + + default: + $result = $wpdb->query( "SELECT * FROM `{$tablename}` WHERE `last_counter` = '{$WP_Statistics->Current_Date( 'Y-m-d', $time )}' AND {$search_query}"); + + break; + } + + return $result; + } + + // This function will return the total number of posts in WordPress. + function wp_statistics_countposts() { + + $count_posts = wp_count_posts( 'post' ); + + $ret = 0; + + if( is_object( $count_posts ) ) { $ret = $count_posts->publish; } + + return $ret; + } + + // This function will return the total number of pages in WordPress. + function wp_statistics_countpages() { + + $count_pages = wp_count_posts( 'page' ); + + $ret = 0; + + if( is_object( $count_pages ) ) { $ret = $count_pages->publish; } + + return $ret; + } + + // This function will return the total number of comments in WordPress. + function wp_statistics_countcomment() { + + global $wpdb; + + $countcomms = $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->comments} WHERE comment_approved = '1'" ); + + return $countcomms; + } + + // This function will return the total number of spam comments *IF* akismet is installed. + function wp_statistics_countspam() { + + return number_format_i18n( get_option( 'akismet_spam_count' ) ); + } + + // This function will return the total number of users in WordPress. + function wp_statistics_countusers() { + + $result = count_users(); + return $result['total_users']; + } + + // This function will return the last date a post was published on your site. + function wp_statistics_lastpostdate() { + + global $wpdb, $WP_Statistics; + + $db_date = $wpdb->get_var( "SELECT post_date FROM {$wpdb->posts} WHERE post_type='post' AND post_status='publish' ORDER BY post_date DESC LIMIT 1" ); + + $date_format = get_option( 'date_format' ); + + return $WP_Statistics->Current_Date_i18n( $date_format, $db_date, false ); + } + + // This function will return the average number of posts per day that are published on your site. + // Alternatively if $days is set to true it returns the average number of days between posts on your site. + function wp_statistics_average_post( $days = false ) { + + global $wpdb; + + $get_first_post = $wpdb->get_var( "SELECT post_date FROM {$wpdb->posts} WHERE post_status = 'publish' ORDER BY post_date LIMIT 1" ); + $get_total_post = $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_status = 'publish' AND post_type = 'post'" ); + + $days_spend = intval( ( time() - strtotime( $get_first_post ) ) / 86400 ); // 86400 = 60 * 60 * 24 = number of seconds in a day + + if( $days == true ) { + if( $get_total_post == 0 ) { $get_total_post = 1; } // Avoid divide by zero errors. + return round( $days_spend / $get_total_post, 0 ); + } + else { + if( $days_spend == 0 ) { $days_spend = 1; } // Avoid divide by zero errors. + return round( $get_total_post / $days_spend, 2 ); + } + } + + // This function will return the average number of comments per day that are published on your site. + // Alternatively if $days is set to true it returns the average number of days between comments on your site. + function wp_statistics_average_comment( $days = false ) { + + global $wpdb; + + $get_first_comment = $wpdb->get_var( "SELECT comment_date FROM {$wpdb->comments} ORDER BY comment_date LIMIT 1" ); + $get_total_comment = $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->comments} WHERE comment_approved = '1'" ); + + $days_spend = intval( ( time() - strtotime( $get_first_comment ) ) / 86400 ); // 86400 = 60 * 60 * 24 = number of seconds in a day + + if( $days == true ) { + if( $get_total_comment == 0 ) { $get_total_comment = 1; } // Avoid divide by zero errors. + return round( $days_spend / $get_total_comment, 0 ); + } + else { + if( $days_spend == 0 ) { $days_spend = 1; } // Avoid divide by zero errors. + return round( $get_total_comment / $days_spend, 2 ); + } + } + + // This function will return the average number of users per day that are registered on your site. + // Alternatively if $days is set to true it returns the average number of days between user registrations on your site. + function wp_statistics_average_registeruser( $days = false ) { + + global $wpdb; + + $get_first_user = $wpdb->get_var( "SELECT user_registered FROM {$wpdb->users} ORDER BY user_registered LIMIT 1" ); + $get_total_user = $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->users}" ); + + $days_spend = intval( ( time() - strtotime( $get_first_user ) ) / 86400 ); // 86400 = 60 * 60 * 24 = number of seconds in a day + + if( $days == true ) { + if( $get_total_user == 0 ) { $get_total_user = 1; } // Avoid divide by zero errors. + return round( $days_spend / $get_total_user, 0 ); + } + else { + if( $days_spend == 0 ) { $days_spend = 1; } // Avoid divide by zero errors. + return round( $get_total_user / $days_spend, 2 ); + } + } + + // This function handle's the dashicons in the overview page. + function wp_statistics_icons( $dashicons, $icon_name = null ) { + + global $wp_version; + + if( null == $icon_name ) { $icon_name = $dashicons; } + + // Since versions of WordPress before 3.8 didn't have dashicons, don't use them in those versions. + if( version_compare( $wp_version, '3.8-RC', '>=' ) || version_compare( $wp_version, '3.8', '>=' ) ) { + return '<span class="dashicons ' . $dashicons . '"></span>'; + } else { + return '<img src="' . plugins_url('wp-statistics/assets/images/') . $icon_name . '.png"/>'; + } + } + + // This function checks to see if all the PHP modules we need for GeoIP exists. + function wp_statistics_geoip_supported() { + // Check to see if we can support the GeoIP code, requirements are: + $enabled = true; + + // PHP 5.3 + if( ! version_compare( phpversion(), WP_STATISTICS_REQUIRED_GEOIP_PHP_VERSION, '>' ) ) { $enabled = false; } + + // PHP's cURL extension installed + if( ! function_exists( 'curl_init' ) ) { $enabled = false; } + + // PHP NOT running in safe mode + if( ini_get('safe_mode') ) { + // Double check php version, 5.4 and above don't support safe mode but the ini value may still be set after an upgrade. + if( ! version_compare( phpversion(), '5.4', '<' ) ) { $enabled = false; } + } + + return $enabled; + } + + // This function creates the date range selector 'widget' used in the various statistics pages. + function wp_statistics_date_range_selector( $page, $current, $range = array(), $desc = array(), $extrafields = '' ) { + GLOBAL $WP_Statistics; + + wp_enqueue_script( 'jquery-ui-datepicker' ); + wp_register_style( 'jquery-ui-smoothness-css', $WP_Statistics->plugin_url . 'assets/css/jquery-ui-smoothness' . WP_STATISTICS_MIN_EXT . '.css' ); + wp_enqueue_style( 'jquery-ui-smoothness-css' ); + + if( count( $range ) == 0 ) { + $range = array( 10, 20, 30, 60, 90, 180, 270, 365 ); + $desc = array( __( '10 Days', 'wp_statistics' ), __( '20 Days', 'wp_statistics' ), __( '30 Days', 'wp_statistics' ), __( '2 Months', 'wp_statistics' ), __( '3 Months', 'wp_statistics' ), __( '6 Months', 'wp_statistics' ), __( '9 Months', 'wp_statistics' ), __( '1 Year', 'wp_statistics' ) ); + } + + if( count( $desc ) == 0 ) { + $desc = $range; + } + + $rcount = count( $range ); + + $bold = true; + + // Check to see if there's a range in the URL, if so set it, otherwise use the default. + if( array_key_exists( 'rangestart', $_GET ) ) { $rangestart = $_GET['rangestart']; } else { $rangestart = $WP_Statistics->Current_Date( 'm/d/Y', '-' . $current ); } + if( array_key_exists( 'rangeend', $_GET ) ) { $rangeend = $_GET['rangeend']; } else { $rangeend = $WP_Statistics->Current_Date( 'm/d/Y' ); } + + // Now get the number of days in the range. + $rangestart_utime = $WP_Statistics->strtotimetz( $rangestart ); + $rangeend_utime = $WP_Statistics->strtotimetz( $rangeend ); + $daysToDisplay = (int)( ( $rangeend_utime - $rangestart_utime ) / 24 / 60 / 60 ); + $today = $WP_Statistics->Current_Date( 'm/d/Y' ); + + // If the rangeend isn't today OR it is but not one of the standard range values, then it's a custom selected value and we need to flag it as such. + if( $rangeend != $today || ( $rangeend == $today && ! in_array( $current, $range ) ) ) { + $current = -1; + } else { + // If on the other hand we are a standard range, let's reset the custom range selector to match it. + $rangestart = $WP_Statistics->Current_Date( 'm/d/Y', '-' . $current ); + $rangeend = $WP_Statistics->Current_Date( 'm/d/Y' ); + } + + echo '<form method="get"><ul class="subsubsub">' . "\r\n"; + + for( $i = 0; $i < $rcount; $i ++ ) { + echo ' <li class="all"><a '; + + if( $current == $range[$i] ) { echo 'class="current" '; $bold = false;} + + // Dont' bother adding he date range to the standard links as they're not needed any may confuse the custom range selector. + echo 'href="?page=' . $page . '&hitdays=' . $range[$i] . $extrafields . '">' . $desc[$i] . '</a></li>'; + + if( $i < $rcount - 1 ) { + echo ' | '; + } + + echo "\r\n"; + } + + echo ' | '; + + echo '<input type="hidden" name="hitdays" value="-1"><input type="hidden" name="page" value="' . $page . '">'; + + parse_str( $extrafields, $parse ); + + foreach( $parse as $key => $value ) { + echo '<input type="hidden" name="' . $key . '" value="' . $value . '">'; + } + + if( $bold ) { + echo ' <b>' . __( 'Range', 'wp_statistics' ) . ':</b> '; + } + else { + echo ' ' . __( 'Range', 'wp_statistics' ) . ': '; + } + + echo '<input type="text" size="10" name="rangestart" id="datestartpicker" value="' . $rangestart . '" placeholder="' . __( 'MM/DD/YYYY', 'wp_statistics' ) . '"> ' . __( 'to', 'wp_statistics' ) . ' <input type="text" size="10" name="rangeend" id="dateendpicker" value="' . $rangeend . '" placeholder="' . __( 'MM/DD/YYYY', 'wp_statistics' ) . '"> <input type="submit" value="'.__( 'Go', 'wp_statistics' ).'" class="button-primary">' . "\r\n"; + + echo '</ul><form>' . "\r\n"; + + echo '<script>jQuery(function() { jQuery( "#datestartpicker" ).datepicker(); jQuery( "#dateendpicker" ).datepicker(); });</script>' . "\r\n"; + } + + // This function is used to calculate the number of days and thier respective unix timestamps. + function wp_statistics_date_range_calculator( $days, $start, $end ) { + GLOBAL $WP_Statistics; + + $daysToDisplay = $days; + $rangestart = $start; + $rangeend = $end; + + if( $daysToDisplay == -1 ) { + $rangestart_utime = $WP_Statistics->strtotimetz( $rangestart ); + $rangeend_utime = $WP_Statistics->strtotimetz( $rangeend ); + $daysToDisplay = (int)( ( $rangeend_utime - $rangestart_utime ) / 24 / 60 / 60 ); + + if( $rangestart_utime == FALSE || $rangeend_utime == FALSE ) { + $daysToDisplay = 20; + $rangeend_utime = $WP_Statistics->timetz(); + $rangestart_utime = $rangeend_utime - ( $daysToDisplay * 24 * 60 * 60 ); + } + } + else { + $rangeend_utime = $WP_Statistics->timetz(); + $rangestart_utime = $rangeend_utime - ( $daysToDisplay * 24 * 60 * 60 ); + } + + return array( $daysToDisplay, $rangestart_utime, $rangeend_utime ); + } + + // This function will empty a table based on the table name. + function wp_statitiscs_empty_table( $table_name = FALSE ) { + global $wpdb; + + if( $table_name ) { + $result = $wpdb->query( 'DELETE FROM ' . $table_name ); + + if($result) { + return sprintf( __( '%s table data deleted successfully.', 'wp_statistics' ), '<code>' . $table_name . '</code>' ); + } + } + + return sprintf( __( 'Error, %s not emptied!', 'wp_statistics' ), $table_name ); + } + + // This function creates a small JavaScript snipit that will load the contents of a overview or dashboard widget. + function wp_statistics_generate_widget_load_javascript( $widget, $container_id = null ) { + if( null == $container_id ) { + $container_id = str_replace( '.', '_', $widget . '_postbox' ); + } +?> +<script type="text/javascript"> + jQuery(document).ready(function() { + wp_statistics_get_widget_contents( '<?php echo $widget; ?>', '<?php echo $container_id; ?>' ); + }); +</script> +<?php + } + + \ No newline at end of file diff --git a/plugins/wp-statistics/includes/functions/geoip-populate.php b/plugins/wp-statistics/includes/functions/geoip-populate.php new file mode 100644 index 0000000..a0c68b9 --- /dev/null +++ b/plugins/wp-statistics/includes/functions/geoip-populate.php @@ -0,0 +1,50 @@ +<?php +/* + This file contains the code required to populate GeoIP infomration in to the database. + + It is used in two different parts of the plugin; when a user manual requests the update to happen and after a new GeoIP database has been download (if the option is selected). +*/ + + // Include the MaxMind library and use it. + include_once( plugin_dir_path( __FILE__ ) . '../../vendor/autoload.php' ); + use GeoIp2\Database\Reader; + + // This function does all the work. + function wp_statistics_populate_geoip_info() { + global $wpdb; + + // Find all rows in the table that currently don't have GeoIP info or have an unknown ('000') location. + $result = $wpdb->get_results("SELECT id,ip FROM `{$wpdb->prefix}statistics_visitor` WHERE location = '' or location = '000' or location IS NULL"); + + // Try create a new reader instance. + try { + $upload_dir = wp_upload_dir(); + $reader = new Reader( $upload_dir['basedir'] . '/wp-statistics/GeoLite2-Country.mmdb' ); + } catch( Exception $e ) { + return "<div class='updated settings-error'><p><strong>" . __('Unable to load the GeoIP database, make sure you have downloaded it in the settings page.', 'wp_statistics') . "</strong></p></div>"; + } + + $count = 0; + + // Loop through all the missing rows and update them if we find a locaiton for them. + foreach( $result as $item ) { + $count++; + + // If the IP address is only a hash, don't bother updating the record. + if( substr( $item->ip, 0, 6 ) != '#hash#' ) { + try { + $record = $reader->country( $item->ip ); + $location = $record->country->isoCode; + if( $location == "" ) { $location = "000"; } + } catch( Exception $e ) { + $location = "000"; + } + + // Update the row in the database. + $wpdb->update( $wpdb->prefix . "statistics_visitor", array( 'location' => $location ), array( 'id' => $item->id) ); + } + } + + return "<div class='updated settings-error'><p><strong>" . sprintf(__('Updated %s GeoIP records in the visitors database.', 'wp_statistics'), $count) . "</strong></p></div>"; + } +?> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/functions/manual.php b/plugins/wp-statistics/includes/functions/manual.php new file mode 100644 index 0000000..c5cfe05 --- /dev/null +++ b/plugins/wp-statistics/includes/functions/manual.php @@ -0,0 +1,39 @@ +<?php + function wp_statistics_download_manual() { + GLOBAL $WP_Statistics, $wpdb; // this is how you get access to the database + + $manage_cap = wp_statistics_validate_capability( $WP_Statistics->get_option( 'manage_capability', 'manage_options') ); + + if( current_user_can( $manage_cap ) ) { + + $type = $_GET['type']; + + if( $type == 'odt' || $type == 'html' ) { + + $filepath = $WP_Statistics->plugin_dir . '/manual'; + $filename = ''; + $ext = '.' . $type; + + // open this directory + $dir = opendir( $filepath ); + + // get each entry + while( $entry = readdir( $dir ) ) { + if( substr( $entry, -strlen( $ext ) ) == $ext ) { + $filename = $entry; + } + } + + // close directory + closedir( $dir ); + + if( $filename != '' ) { + header('Content-Type: application/octet-stream;'); + header('Content-Disposition: attachment; filename="' . $filename . '"'); + + readfile( $filepath . '/' . $filename ); + } + } + } + } +?> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/functions/purge-hits.php b/plugins/wp-statistics/includes/functions/purge-hits.php new file mode 100644 index 0000000..68e44cd --- /dev/null +++ b/plugins/wp-statistics/includes/functions/purge-hits.php @@ -0,0 +1,50 @@ +<?php + function wp_statistics_purge_visitor_hits( $purge_hits ) { + GLOBAL $wpdb, $WP_Statistics; + + // If it's less than 10 hits, don't do anything. + if( $purge_hits > 9 ) { + // Purge the visitor's with more than the defined hits. + $result = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}statistics_visitor WHERE `hits` > %s", $purge_hits ) ); + + $to_delete = array(); + + // Loop through the results and store the requried information in an array. We don't just process it now as deleting + // the rows from the visitor table will mess up the results from our first query. + foreach( $result as $row ) { + $to_delete[] = array( $row->ID, $row->last_counter, $row->hits ); + } + if( count( $to_delete ) > 0 ) { + foreach( $to_delete as $item ) { + // First update the daily hit count. + $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->prefix}statistics_visit SET `visit` = `visit` - %d WHERE `last_counter` = %s;", $item[2], $item[1] ) ); + // Next remove the visitor. Note we can't do both in a single query, looks like $wpdb doesn't like executing them together. + $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}statistics_visitor WHERE `id` = %s;", $item[0] ) ); + } + + $result_string = sprintf(__('%s records purged successfully.', 'wp_statistics'), '<code>' . count( $to_delete ) . '</code>'); + } + else { + $result_string = __('No visitors found to purge.', 'wp_statistics' ); + } + } + else { + $result_string = __('Number of hits must be greater than or equal to 10!', 'wp_statistics'); + } + + if( $WP_Statistics->get_option('prune_report') == true ) { + $blogname = get_bloginfo('name'); + $blogemail = get_bloginfo('admin_email'); + + $headers[] = "From: $blogname <$blogemail>"; + $headers[] = "MIME-Version: 1.0"; + $headers[] = "Content-type: text/html; charset=utf-8"; + + if( $WP_Statistics->get_option('email_list') == '' ) { $WP_Statistics->update_option( 'email_list', $blogemail ); } + + wp_mail( $WP_Statistics->get_option('email_list'), __('Database pruned on', 'wp_statistics') . ' ' . $blogname, $result_string, $headers ); + } + + return $result_string; + } +?> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/functions/purge.php b/plugins/wp-statistics/includes/functions/purge.php new file mode 100644 index 0000000..24e5047 --- /dev/null +++ b/plugins/wp-statistics/includes/functions/purge.php @@ -0,0 +1,117 @@ +<?php + function wp_statistics_purge_data( $purge_days ) { + GLOBAL $wpdb, $WP_Statistics; + + // If it's less than 30 days, don't do anything. + if($purge_days > 30) { + // Purge the visit data. + $table_name = $wpdb->prefix . 'statistics_visit'; + $date_string = $WP_Statistics->current_date( 'Y-m-d', '-' . $purge_days); + + $result = $wpdb->query( $wpdb->prepare( "DELETE FROM {$table_name} WHERE `last_counter` < %s", $date_string ) ); + + if($result) { + // Update the historical count with what we purged. + $historical_result = $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->prefix}statistics_historical SET value = value + %d WHERE `category` = 'visits'", $result ) ); + + if( $historical_result == 0 ) { + $wpdb->insert( $wpdb->prefix . "statistics_historical", array( 'value' => $result, 'category' => 'visits', 'page_id' => -2, 'uri' => '-2' ) ); + } + + $result_string = sprintf(__('%s data older than %s days purged successfully.', 'wp_statistics'), '<code>' . $table_name . '</code>', '<code>' . $purge_days . '</code>'); + } else { + $result_string = sprintf(__('No records found to purge from %s!', 'wp_statistics'), '<code>' . $table_name . '</code>' ); + } + + // Purge the visitors data. + $table_name = $wpdb->prefix . 'statistics_visitor'; + + $result = $wpdb->query( $wpdb->prepare( "DELETE FROM {$table_name} WHERE `last_counter` < %s", $date_string ) ); + + if($result) { + // Update the historical count with what we purged. + $historical_result = $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->prefix}statistics_historical SET value = value + %d WHERE `category` = 'visitors'", $result ) ); + + if( $historical_result == 0 ) { + $wpdb->insert( $wpdb->prefix . "statistics_historical", array( 'value' => $result, 'category' => 'visitors', 'page_id' => -1, 'uri' => '-1' ) ); + } + + $result_string .= '<br>' . sprintf(__('%s data older than %s days purged successfully.', 'wp_statistics'), '<code>' . $table_name . '</code>', '<code>' . $purge_days . '</code>'); + } else { + $result_string .= '<br>' . sprintf(__('No records found to purge from %s!', 'wp_statistics'), '<code>' . $table_name . '</code>' ); + } + + // Purge the exclusions data. + $table_name = $wpdb->prefix . 'statistics_exclusions'; + + $result = $wpdb->query( $wpdb->prepare( "DELETE FROM {$table_name} WHERE `date` < %s", $date_string ) ); + + if($result) { + $result_string .= '<br>' . sprintf(__('%s data older than %s days purged successfully.', 'wp_statistics'), '<code>' . $table_name . '</code>', '<code>' . $purge_days . '</code>'); + } else { + $result_string .= '<br>' . sprintf(__('No records found to purge from %s!', 'wp_statistics'), '<code>' . $table_name . '</code>' ); + } + + // Purge the search data. + $table_name = $wpdb->prefix . 'statistics_search'; + + $result = $wpdb->query( $wpdb->prepare( "DELETE FROM {$table_name} WHERE `last_counter` < %s", $date_string ) ); + + if($result) { + $result_string .= '<br>' . sprintf(__('%s data older than %s days purged successfully.', 'wp_statistics'), '<code>' . $table_name . '</code>', '<code>' . $purge_days . '</code>'); + } else { + $result_string .= '<br>' . sprintf(__('No records found to purge from %s!', 'wp_statistics'), '<code>' . $table_name . '</code>' ); + } + + // Purge the pages data, this is more complex as we want to save the historical data per page. + $table_name = $wpdb->prefix . 'statistics_pages'; + $historical = 0; + + // The first thing we need to do is update the historical data by finding all the unique pages. + $result = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT uri FROM {$table_name} WHERE `date` < %s", $date_string ) ); + + // If we have a result, let's store the historical data. + if( $result ) { + // Loop through all the unique rows that were returned. + foreach( $result as $row ) { + // Use the unique rows to get a total count from the database of all the data from the given URIs/Pageids that we're going to delete later. + $historical = $wpdb->get_var( $wpdb->prepare( "SELECT sum(count) FROM {$table_name} WHERE `uri` = %s AND `date` < %s", $row->uri, $date_string)); + + // Do an update of the historical data. + $uresult = $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->prefix}statistics_historical SET `value` = value + %d WHERE `uri` = %s AND `category` = 'uri'", $historical, $row->uri, $date_string ) ); + + // If we failed it's because this is the first time we've seen this URI/pageid so let's create a historical row for it. + if( $uresult == 0 ) { + $wpdb->insert( $wpdb->prefix . "statistics_historical", array( 'value' => $historical, 'category' => 'uri', 'uri' => $row->uri, 'page_id' => wp_statistics_uri_to_id($row->uri) ) ); + } + } + } + + // Now that we've done all of the required historical data storage, we can actually delete the data from the database. + $result = $wpdb->query( $wpdb->prepare( "DELETE FROM {$table_name} WHERE `date` < %s", $date_string ) ); + + if($result) { + $result_string .= '<br>' . sprintf(__('%s data older than %s days purged successfully.', 'wp_statistics'), '<code>' . $table_name . '</code>', '<code>' . $purge_days . '</code>'); + } else { + $result_string .= '<br>' . sprintf(__('No records found to purge from %s!', 'wp_statistics'), '<code>' . $table_name . '</code>' ); + } + + if( $WP_Statistics->get_option('prune_report') == true ) { + $blogname = get_bloginfo('name'); + $blogemail = get_bloginfo('admin_email'); + + $headers[] = "From: $blogname <$blogemail>"; + $headers[] = "MIME-Version: 1.0"; + $headers[] = "Content-type: text/html; charset=utf-8"; + + if( $WP_Statistics->get_option('email_list') == '' ) { $WP_Statistics->update_option( 'email_list', $blogemail ); } + + wp_mail( $WP_Statistics->get_option('email_list'), __('Database pruned on', 'wp_statistics') . ' ' . $blogname, $result_string, $headers ); + } + + return $result_string; + } else { + return __('Please select a value over 30 days.', 'wp_statistics'); + } + } +?> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/index.php b/plugins/wp-statistics/includes/index.php new file mode 100644 index 0000000..a6ce9c8 --- /dev/null +++ b/plugins/wp-statistics/includes/index.php @@ -0,0 +1,2 @@ +<?php +# Silence is golden. diff --git a/plugins/wp-statistics/includes/log/all-browsers.php b/plugins/wp-statistics/includes/log/all-browsers.php new file mode 100644 index 0000000..1c10e0e --- /dev/null +++ b/plugins/wp-statistics/includes/log/all-browsers.php @@ -0,0 +1,321 @@ +<script type="text/javascript"> + jQuery(document).ready(function(){ + postboxes.add_postbox_toggles(pagenow); + }); +</script> +<?php + $daysToDisplay = 20; + if( array_key_exists('hitdays',$_GET) ) { $daysToDisplay = intval($_GET['hitdays']); } + + if( array_key_exists('rangestart', $_GET ) ) { $rangestart = $_GET['rangestart']; } else { $rangestart = ''; } + if( array_key_exists('rangeend', $_GET ) ) { $rangeend = $_GET['rangeend']; } else { $rangeend = ''; } + + list( $daysToDisplay, $rangestart_utime, $rangeend_utime ) = wp_statistics_date_range_calculator( $daysToDisplay, $rangestart, $rangeend ); + + $rangestartdate = $WP_Statistics->real_current_date('Y-m-d', '-0', $rangestart_utime ); + $rangeenddate = $WP_Statistics->real_current_date('Y-m-d', '-0', $rangeend_utime ); + +?> +<div class="wrap"> + <?php screen_icon('options-general'); ?> + <h2><?php _e('Browser Statistics', 'wp_statistics'); ?></h2> + + <div><?php wp_statistics_date_range_selector( WP_STATISTICS_BROWSERS_PAGE, $daysToDisplay ); ?></div> + + <div class="postbox-container" style="width: 48%; float: left; margin-right:20px"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <div class="handlediv" title="<?php _e('Click to toggle', 'wp_statistics'); ?>"><br /></div> + <h3 class="hndle"><span><?php _e('Browsers', 'wp_statistics'); ?></span></h3> + <div class="inside"> + <script type="text/javascript"> + jQuery(function () { + var browser_chart; + jQuery(document).ready(function() { +<?php + $Browsers = wp_statistics_ua_list(); + if( !is_array( $Browsers ) ) { $Browsers = array(); } + + natcasesort( $Browsers ); + + echo "var browser_data = ["; + + foreach( $Browsers as $Browser ) + { + $count = wp_statistics_useragent( $Browser, $rangestartdate, $rangeenddate ); + echo "['" . substr( $Browser, 0, 15 ) . " (" . number_format_i18n($count) . ")'," . $count . "], "; + } + + echo "];\n"; + + +?> + + browser_chart = jQuery.jqplot('browsers-log', [browser_data], { + title: { + text: '<b>' + <?php echo json_encode(__('Browsers by type', 'wp_statistics')); ?> + '</b>', + fontSize: '12px', + fontFamily: 'Tahoma', + textColor: '#000000', + }, + seriesDefaults: { + // Make this a pie chart. + renderer: jQuery.jqplot.PieRenderer, + rendererOptions: { + // Put data labels on the pie slices. + // By default, labels show the percentage of the slice. + dataLabels: 'percent', + showDataLabels: true, + shadowOffset: 0, + } + }, + legend: { + show:true, + location: 's', + renderer: jQuery.jqplot.EnhancedPieLegendRenderer, + rendererOptions: + { + numberColumns: 3, + disableIEFading: false, + border: 'none', + }, + }, + grid: { background: 'transparent', borderWidth: 0, shadow: false }, + highlighter: { + show: true, + formatString:'%s', + tooltipLocation:'n', + useAxesFormatters:false, + }, + } ); + }); + + jQuery(window).resize(function() { + browser_chart.replot( {resetAxes: true } ); + }); + + }); + + </script> + + <div id="browsers-log" style="height: <?php $height = ( ceil( count($Browsers) / 3) * 27 ) + 400; if( $height < 400 ) { $height = 400; } echo $height; ?>px;"></div> + </div> + </div> + </div> + </div> + </div> + + <div class="postbox-container" style="width: 48%; float: left; margin-right:20px"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <div class="handlediv" title="<?php _e('Click to toggle', 'wp_statistics'); ?>"><br /></div> + <h3 class="hndle"><span><?php _e('Platform', 'wp_statistics'); ?></span></h3> + <div class="inside"> + <script type="text/javascript"> + jQuery(function () { + var platform_chart; + jQuery(document).ready(function() { +<?php + $Platforms = wp_statistics_platform_list( null, $rangestartdate, $rangeenddate ); + if( !is_array( $Platforms ) ) { $Platforms = array(); } + + natcasesort( $Platforms ); + + echo "var platform_data = ["; + + foreach( $Platforms as $Platform ) + { + $count = wp_statistics_platform( $Platform ); + echo "['" . substr( $Platform, 0, 15) . " (" . number_format_i18n($count) . ")'," . $count . "], "; + } + + echo "];\n"; + + +?> + + platform_chart = jQuery.jqplot('platform-log', [platform_data], { + title: { + text: '<b>' + <?php echo json_encode(__('Browsers by platform', 'wp_statistics')); ?> + '</b>', + fontSize: '12px', + fontFamily: 'Tahoma', + textColor: '#000000', + }, + seriesDefaults: { + // Make this a pie chart. + renderer: jQuery.jqplot.PieRenderer, + rendererOptions: { + // Put data labels on the pie slices. + // By default, labels show the percentage of the slice. + dataLabels: 'percent', + showDataLabels: true, + shadowOffset: 0, + } + }, + legend: { + show:true, + location: 's', + renderer: jQuery.jqplot.EnhancedPieLegendRenderer, + rendererOptions: { + numberColumns: 3, + disableIEFading: false, + border: 'none', + }, + }, + grid: { background: 'transparent', borderWidth: 0, shadow: false }, + highlighter: { + show: true, + formatString:'%s', + tooltipLocation:'n', + useAxesFormatters:false, + }, + } ); + }); + + jQuery(window).resize(function() { + platform_chart.replot( {resetAxes: true } ); + }); + + }); + + </script> + + <div id="platform-log" style="height: <?php $height = ( ceil( count($Platforms) / 3 ) * 27 ) + 400; if( $height < 400 ) { $height = 400; } echo $height; ?>px;"></div> + + </div> + </div> + </div> + </div> + </div> + + <div style="width: 100%; clear: both;"> + <hr /> + </div> + + <div class="postbox-container" style="width: 30%; float: left; margin-right: 20px;"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <?php + for( $BrowserCount = 0; $BrowserCount < count( $Browsers ); $BrowserCount++ ) + { + if( $BrowserCount % 3 == 0 ) + { + BrowserVersionStats($Browsers[$BrowserCount]); + } + } + ?> + </div> + </div> + </div> + + <div class="postbox-container" style="width: 30%; float: left; margin-right: 20px;"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <?php + for( $BrowserCount = 0; $BrowserCount < count( $Browsers ); $BrowserCount++ ) + { + if( $BrowserCount % 3 == 1 ) + { + BrowserVersionStats($Browsers[$BrowserCount]); + } + } + ?> + </div> + </div> + </div> + + <div class="postbox-container" style="width: 30%; float: left"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <?php + for( $BrowserCount = 0; $BrowserCount < count( $Browsers ); $BrowserCount++ ) + { + if( $BrowserCount % 3 == 2 ) + { + BrowserVersionStats($Browsers[$BrowserCount]); + } + } + ?> + </div> + </div> + </div> +</div> + +<?php function BrowserVersionStats( $Browser, $rangestartdate = null, $rangeenddate = null ) { $Browser_tag = strtolower(preg_replace('/[^a-zA-Z]/', '', $Browser)); ?> + <div class="postbox"> + <div class="handlediv" title="<?php _e('Click to toggle', 'wp_statistics'); ?>"><br /></div> + <h3 class="hndle"><span><?php echo sprintf(__('%s Version', 'wp_statistics'), $Browser); ?></span></h3> + <div class="inside"> + <script type="text/javascript"> + jQuery(function () { + var <?php echo $Browser_tag;?>_chart; + jQuery(document).ready(function() { +<?php + $Versions = wp_statistics_agent_version_list( $Browser, $rangestartdate, $rangeenddate ); + if( !is_array( $Versions ) ) { $Versions = array(); } + + natcasesort( $Versions ); + + echo "var " . $Browser_tag . "_version_data = ["; + + foreach( $Versions as $Version ) + { + $count = wp_statistics_agent_version( $Browser, $Version, $rangestartdate, $rangeenddate ); + echo "['" . $Version . " (" . number_format_i18n($count) . ")'," . $count . "], "; + } + + echo "];\n"; + + +?> + <?php echo $Browser_tag;?>_chart = jQuery.jqplot('version-<?php echo $Browser_tag;?>-log', [<?php echo $Browser_tag;?>_version_data], { + title: { + text: '<b><?php echo $Browser; ?></b>', + fontSize: '12px', + fontFamily: 'Tahoma', + textColor: '#000000', + }, + seriesDefaults: { + // Make this a pie chart. + renderer: jQuery.jqplot.PieRenderer, + rendererOptions: { + // Put data labels on the pie slices. + // By default, labels show the percentage of the slice. + dataLabels: 'percent', + showDataLabels: true, + shadowOffset: 0, + } + }, + legend: { + show:true, + location: 's', + renderer: jQuery.jqplot.EnhancedLegendPieRenderer, + rendererOptions: + { + numberColumns: 2, + disableIEFading: false, + border: 'none', + }, + }, + grid: { background: 'transparent', borderWidth: 0, shadow: false }, + highlighter: { + show: true, + formatString:'%s', + tooltipLocation:'n', + useAxesFormatters:false, + }, + } ); + }); + + jQuery(window).resize(function() { + <?php echo $Browser_tag;?>_chart.replot( {resetAxes: true } ); + }); + + }); + </script> + <div class="ltr" id="version-<?php echo $Browser_tag;?>-log" style="height: <?php $height = ( ceil( count($Versions) / 2 ) * 27 ) + 237; if( $height < 300 ) { $height = 300; } echo $height; ?>px;"></div> + </div> + </div> +<?php } ?> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/log/exclusions.php b/plugins/wp-statistics/includes/log/exclusions.php new file mode 100644 index 0000000..c921bda --- /dev/null +++ b/plugins/wp-statistics/includes/log/exclusions.php @@ -0,0 +1,217 @@ +<script type="text/javascript"> + jQuery(document).ready(function(){ + postboxes.add_postbox_toggles(pagenow); + }); +</script> +<?php + if( $WP_Statistics->get_option( 'record_exclusions' ) != 1 ) { + echo "<div class='updated settings-error'><p><strong>" . __('Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!', 'wp_statistics') . "</strong></p></div>"; + } + + $daysToDisplay = 20; + if( array_key_exists('hitdays',$_GET) ) { $daysToDisplay = intval($_GET['hitdays']); } + + if( array_key_exists('rangestart', $_GET ) ) { $rangestart = $_GET['rangestart']; } else { $rangestart = ''; } + if( array_key_exists('rangeend', $_GET ) ) { $rangeend = $_GET['rangeend']; } else { $rangeend = ''; } + + list( $daysToDisplay, $rangestart_utime, $rangeend_utime ) = wp_statistics_date_range_calculator( $daysToDisplay, $rangestart, $rangeend ); + + $total_stats = $WP_Statistics->get_option( 'chart_totals' ); + + $excluded_reasons = array('Robot','Browscap','IP Match','Self Referral','Login Page','Admin Page','User Role','GeoIP','Hostname', 'Robot Threshold','Honey Pot','Feeds', 'Excluded URL', '404 Pages', 'Referrer Spam'); + $excluded_reason_tags = array('Robot' => 'robot','Browscap' => 'browscap','IP Match' => 'ipmatch','Self Referral' => 'selfreferral','Login Page' => 'loginpage','Admin Page' => 'adminpage','User Role' => 'userrole','Total' => 'total','GeoIP' => 'geoip','Hostname' => 'hostname','Robot Threshold' => 'robot_threshold','Honey Pot' => 'honeypot','Feeds' => 'feed', 'Excluded URL' => 'excluded_url', '404 Pages' => 'excluded_404s', 'Referrer Spam' => 'referrer_spam' ); + $excluded_reason_db = array('Robot' => 'robot','Browscap' => 'browscap','IP Match' => 'ip match','Self Referral' => 'self referral','Login Page' => 'login page','Admin Page' => 'admin page','User Role' => 'user role','Total' => 'total','GeoIP' => 'geoip','Hostname' => 'hostname','Robot Threshold' => 'robot_threshold','Honey Pot' => 'honeypot','Feeds' => 'feed', 'Excluded URL' => 'excluded url', '404 Pages' => '404', 'Referrer Spam' => 'referrer_spam'); + $excluded_reason_translate = array( 'Robot' => json_encode(__('Robot', 'wp_statistics')), 'Browscap' => json_encode(__('Browscap', 'wp_statistics')), 'IP Match' => json_encode(__('IP Match', 'wp_statistics')), 'Self Referral' => json_encode(__('Self Referral', 'wp_statistics')), 'Login Page' => json_encode(__('Login Page', 'wp_statistics')), 'Admin Page' => json_encode(__('Admin Page', 'wp_statistics')), 'User Role' => json_encode(__('User Role', 'wp_statistics')), 'Total' => json_encode(__('Total', 'wp_statistics')), 'GeoIP' => json_encode(__('GeoIP', 'wp_statistics')), 'Hostname' => json_encode(__('Hostname', 'wp_statistics')), 'Robot Threshold' => json_encode(__('Robot Threshold', 'wp_statistics')), 'Honey Pot' => json_encode(__('Honey Pot', 'wp_statistics')), 'Feeds' => json_encode(__('Feeds', 'wp_statistics') ), 'Excluded URL' => json_encode(__('Excluded URL', 'wp_statistics') ),'404 Pages' => json_encode(__('404 Pages', 'wp_statistics') ), 'Referrer Spam' => json_encode(__('Referrer Spam', 'wp_statistics') ) ); + $excluded_results = array('Total' => array() ); + $excluded_total = 0; + + foreach( $excluded_reasons as $reason ) { + + // The reasons array above is used both for display and internal purposes. Internally the values are all lower case but the array + // is created with mixed case so it looks nice to the user. Therefore we have to convert it to lower case here. + $thisreason = $excluded_reason_db[$reason]; + + for( $i=$daysToDisplay; $i>=0; $i--) { + + // We're looping through the days backwards, so let's fine out what date we want to look at. + $thisdate = $WP_Statistics->real_current_date('Y-m-d', '-'.$i, $rangeend_utime ); + + // Create the SQL query string to get the data. + $query = $wpdb->prepare( "SELECT count FROM {$wpdb->prefix}statistics_exclusions WHERE reason = %s AND date = %s", $thisreason, $thisdate ); + + // Execute the query. + $excluded_results[$reason][$i] = $wpdb->get_var( $query ); + + // If we're returned an error or a FALSE value, then let's make sure it's set to a numerical 0. + if( $excluded_results[$reason][$i] < 1 ) { $excluded_results[$reason][$i] = 0; } + + // Make sure to initialize the results so we don't get warnings when WP_DEBUG is enabled. + if( !array_key_exists( $i, $excluded_results['Total'] ) ) { $excluded_results['Total'][$i] = 0; } + + // We're totalling things up here for use later. + $excluded_results['Total'][$i] += $excluded_results[$reason][$i]; + $excluded_total += $excluded_results[$reason][$i]; + } + } + + $excuded_all_time = $wpdb->get_var( "SELECT SUM(count) FROM {$wpdb->prefix}statistics_exclusions" ); + + // If the chart totals is enabled, cheat a little and just add another reason category to the list so it get's generated later. + if( $total_stats == 1 ) { $excluded_reasons[] = 'Total'; } +?> +<div class="wrap"> + <?php screen_icon('options-general'); ?> + <h2><?php _e('Exclusions Statistics', 'wp_statistics'); ?></h2> + + <?php wp_statistics_date_range_selector( WP_STATISTICS_EXCLUSIONS_PAGE, $daysToDisplay ); ?> + + <div class="postbox-container" style="width: 100%; float: left; margin-right:20px"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <div class="handlediv" title="<?php _e('Click to toggle', 'wp_statistics'); ?>"><br /></div> + <h3 class="hndle"><span><?php _e('Exclusions Statistical Chart', 'wp_statistics'); ?></span></h3> + <div class="inside"> + <script type="text/javascript"> + var visit_chart; + jQuery(document).ready(function() { +<?php + foreach( $excluded_reasons as $reason ) { + + echo "var excluded_data_line_" . $excluded_reason_tags[$reason] . " = ["; + + for( $i=$daysToDisplay; $i>=0; $i--) { + echo "['" . $WP_Statistics->Real_Current_Date('Y-m-d', '-'.$i, $rangeend_utime) . "'," . $excluded_results[$reason][$i] . "], "; + } + + echo "];\n"; + } + + $tickInterval = $daysToDisplay / 20; + if( $tickInterval < 1 ) { $tickInterval = 1; } +?> + visit_chart = jQuery.jqplot('exclusion-stats', [<?php foreach( $excluded_reasons as $reason ) { echo "excluded_data_line_" . $excluded_reason_tags[$reason] . ", "; } ?>], { + title: { + text: '<b>' + <?php echo json_encode(__('Excluded hits in the last', 'wp_statistics') . ' ' . $daysToDisplay . ' ' . __('days', 'wp_statistics')); ?> + '</b>', + fontSize: '12px', + fontFamily: 'Tahoma', + textColor: '#000000', + }, + axes: { + xaxis: { + min: '<?php echo $WP_Statistics->Real_Current_Date('Y-m-d', '-'.$daysToDisplay, $rangeend_utime);?>', + max: '<?php echo $WP_Statistics->Real_Current_Date('Y-m-d', '-0', $rangeend_utime);?>', + tickInterval: '<?php echo $tickInterval?> day', + renderer:jQuery.jqplot.DateAxisRenderer, + tickRenderer: jQuery.jqplot.CanvasAxisTickRenderer, + tickOptions: { + angle: -45, + formatString:'%b %#d', + showGridline: false, + }, + }, + yaxis: { + min: 0, + padMin: 1.0, + label: <?php echo json_encode(__('Number of excluded hits', 'wp_statistics')); ?>, + labelRenderer: jQuery.jqplot.CanvasAxisLabelRenderer, + labelOptions: { + angle: -90, + fontSize: '12px', + fontFamily: 'Tahoma', + fontWeight: 'bold', + }, + } + }, + legend: { + show: true, + location: 's', + placement: 'outsideGrid', + labels: [<?php foreach( $excluded_reasons as $reason ) { echo $excluded_reason_translate[$reason] . ", "; } ?>], + renderer: jQuery.jqplot.EnhancedLegendRenderer, + rendererOptions: + { + numberColumns: <?php echo count($excluded_reasons) + 1; ?>, + disableIEFading: false, + border: 'none', + }, + }, + highlighter: { + show: true, + bringSeriesToFront: true, + tooltipAxes: 'xy', + formatString: '%s: <b>%i</b> ', + tooltipContentEditor: tooltipContentEditor, + }, + grid: { + drawGridlines: true, + borderColor: 'transparent', + shadow: false, + drawBorder: false, + shadowColor: 'transparent' + }, + } ); + + function tooltipContentEditor(str, seriesIndex, pointIndex, plot) { + // display series_label, x-axis_tick, y-axis value + return plot.legend.labels[seriesIndex] + ", " + str;; + } + + jQuery(window).resize(function() { + JQPlotExclusionChartLengendClickRedraw() + }); + + function JQPlotExclusionChartLengendClickRedraw() { + visit_chart.replot( {resetAxes: ['yaxis'] } ); + jQuery('div[id="exclusion-stats"] .jqplot-table-legend').click(function() { + JQPlotExclusionChartLengendClickRedraw(); + }); + } + + jQuery('div[id="exclusion-stats"] .jqplot-table-legend').click(function() { + JQPlotExclusionChartLengendClickRedraw() + }); + + }); + </script> + + <div id="exclusion-stats" style="height:500px;"></div> + + </div> + </div> + </div> + </div> + </div> + + <div class="postbox-container" style="width: 100%; float: left; margin-right:20px"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <div class="handlediv" title="<?php _e('Click to toggle', 'wp_statistics'); ?>"><br /></div> + <h3 class="hndle"><span><?php _e('Hits Statistics Summary', 'wp_statistics'); ?></span></h3> + <div class="inside"> + <table width="auto" class="widefat table-stats" id="summary-stats"> + <tbody> + <tr> + <th></th> + <th class="th-center"><?php _e('Exclusions', 'wp_statistics'); ?></th> + </tr> + + <tr> + <th><?php _e('Chart Total', 'wp_statistics'); ?>:</th> + <th class="th-center"><span><?php echo number_format_i18n($excluded_total); ?></span></th> + </tr> + + <tr> + <th><?php _e('All Time Total', 'wp_statistics'); ?>:</th> + <th class="th-center"><span><?php echo number_format_i18n($excuded_all_time); ?></span></th> + </tr> + </tbody> + </table> + </div> + </div> + </div> + </div> + </div> + +</div> diff --git a/plugins/wp-statistics/includes/log/hit-statistics.php b/plugins/wp-statistics/includes/log/hit-statistics.php new file mode 100644 index 0000000..48fbbd9 --- /dev/null +++ b/plugins/wp-statistics/includes/log/hit-statistics.php @@ -0,0 +1,193 @@ +<script type="text/javascript"> + jQuery( document ).ready( function() { + postboxes.add_postbox_toggles( pagenow ); + } ); +</script> +<div class="wrap"> + <?php screen_icon('options-general'); ?> + <h2><?php _e( 'Hit Statistics', 'wp_statistics' ); ?></h2> + + <?php + $daysToDisplay = 20; + if( array_key_exists( 'hitdays',$_GET ) ) { $daysToDisplay = intval( $_GET['hitdays'] ); } + + if( array_key_exists( 'rangestart', $_GET ) ) { $rangestart = $_GET['rangestart']; } else { $rangestart = ''; } + if( array_key_exists( 'rangeend', $_GET ) ) { $rangeend = $_GET['rangeend']; } else { $rangeend = ''; } + + list( $daysToDisplay, $rangestart_utime, $rangeend_utime ) = wp_statistics_date_range_calculator( $daysToDisplay, $rangestart, $rangeend ); + + wp_statistics_date_range_selector( WP_STATISTICS_HITS_PAGE, $daysToDisplay ); + ?> + + <div class="postbox-container" style="width: 100%; float: left; margin-right:20px"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <div class="handlediv" title="<?php _e( 'Click to toggle', 'wp_statistics' ); ?>"><br /></div> + <h3 class="hndle"><span><?php _e( 'Hits Statistics Chart', 'wp_statistics' ); ?></span></h3> + <div class="inside"> + <script type="text/javascript"> + var visit_chart; + jQuery( document ).ready( function() { +<?php + $visit_total = 0; + $visitor_total = 0; + $daysInThePast = ( time() - $rangeend_utime ) / 86400; + + echo "var visit_data_line = ["; + + for( $i = $daysToDisplay; $i >= 0; $i-- ) { + $working_date = $WP_Statistics->Real_Current_Date( 'Y-m-d', '-' . $i, $rangeend_utime ); + $stat = wp_statistics_visit( '-' . (int)( $i + $daysInThePast ), true ); + $visit_total += $stat; + + echo "['" . $working_date . "'," . $stat . "], "; + } + + echo "];\n"; + + echo "var visitor_data_line = ["; + + for( $i = $daysToDisplay; $i >= 0; $i-- ) { + $working_date = $WP_Statistics->Real_Current_Date( 'Y-m-d', '-' . $i, $rangeend_utime ); + $stat = wp_statistics_visitor( '-' . (int)( $i + $daysInThePast ), true ); + $visitor_total += $stat; + + echo "['" . $working_date . "'," . $stat . "], "; + } + + echo "];\n"; + + $tickInterval = $daysToDisplay / 20; + if( $tickInterval < 1 ) { $tickInterval = 1; } +?> + visit_chart = jQuery.jqplot( 'visits-stats', [visit_data_line, visitor_data_line], { + title: { + text: '<b>' + <?php echo json_encode( __( 'Hits in the last', 'wp_statistics' ) . ' ' . $daysToDisplay . ' ' . __( 'days', 'wp_statistics' ) ); ?> + '</b>', + fontSize: '12px', + fontFamily: 'Tahoma', + textColor: '#000000', + }, + axes: { + xaxis: { + min: '<?php echo $WP_Statistics->Real_Current_Date( 'Y-m-d', '-'.$daysToDisplay, $rangeend_utime ); ?>', + max: '<?php echo $WP_Statistics->Real_Current_Date( 'Y-m-d', '-0', $rangeend_utime ); ?>', + tickInterval: '<?php echo $tickInterval; ?> day', + renderer:jQuery.jqplot.DateAxisRenderer, + tickRenderer: jQuery.jqplot.CanvasAxisTickRenderer, + tickOptions: { + angle: -45, + formatString:'%b %#d', + showGridline: false, + }, + }, + yaxis: { + min: 0, + padMin: 1.0, + label: <?php echo json_encode( __( 'Number of visits and visitors', 'wp_statistics' ) ); ?>, + labelRenderer: jQuery.jqplot.CanvasAxisLabelRenderer, + labelOptions: { + angle: -90, + fontSize: '12px', + fontFamily: 'Tahoma', + fontWeight: 'bold', + }, + } + }, + legend: { + show: true, + location: 's', + placement: 'outsideGrid', + labels: [<?php echo json_encode( __( 'Visit', 'wp_statistics' ) ); ?>, <?php echo json_encode( __( 'Visitor', 'wp_statistics' ) ); ?>], + renderer: jQuery.jqplot.EnhancedLegendRenderer, + rendererOptions: + { + numberColumns: 2, + disableIEFading: false, + border: 'none', + }, + }, + highlighter: { + show: true, + bringSeriesToFront: true, + tooltipAxes: 'xy', + formatString: '%s: <b>%i</b> ', + tooltipContentEditor: tooltipContentEditor, + }, + grid: { + drawGridlines: true, + borderColor: 'transparent', + shadow: false, + drawBorder: false, + shadowColor: 'transparent' + }, + } ); + + function tooltipContentEditor( str, seriesIndex, pointIndex, plot ) { + // display series_label, x-axis_tick, y-axis value + return plot.legend.labels[seriesIndex] + ", " + str;; + } + + jQuery(window).resize(function() { + JQPlotVisitChartLengendClickRedraw() + }); + + function JQPlotVisitChartLengendClickRedraw() { + visit_chart.replot( {resetAxes: ['yaxis'] } ); + + jQuery('div[id="visits-stats"] .jqplot-table-legend').click( function() { + JQPlotVisitChartLengendClickRedraw(); + }); + } + + jQuery('div[id="visits-stats"] .jqplot-table-legend').click( function() { + JQPlotVisitChartLengendClickRedraw() + }); + + }); + + </script> + + <div id="visits-stats" style="height:500px;"></div> + + </div> + </div> + </div> + </div> + </div> + + <div class="postbox-container" style="width: 100%; float: left; margin-right:20px"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <div class="handlediv" title="<?php _e( 'Click to toggle', 'wp_statistics' ); ?>"><br /></div> + <h3 class="hndle"><span><?php _e( 'Hits Statistics Summary', 'wp_statistics' ); ?></span></h3> + <div class="inside"> + <table width="auto" class="widefat table-stats" id="summary-stats"> + <tbody> + <tr> + <th></th> + <th class="th-center"><?php _e( 'Visit', 'wp_statistics' ); ?></th> + <th class="th-center"><?php _e( 'Visitor', 'wp_statistics' ); ?></th> + </tr> + + <tr> + <th><?php _e('Chart Total', 'wp_statistics'); ?>:</th> + <th class="th-center"><span><?php echo number_format_i18n( $visit_total ); ?></span></th> + <th class="th-center"><span><?php echo number_format_i18n( $visitor_total ); ?></span></th> + </tr> + + <tr> + <th><?php _e('All Time Total', 'wp_statistics'); ?>:</th> + <th class="th-center"><span><?php echo number_format_i18n( wp_statistics_visit( 'total' ) ); ?></span></th> + <th class="th-center"><span><?php echo number_format_i18n( wp_statistics_visitor( 'total', null, true ) ); ?></span></th> + </tr> + </tbody> + </table> + </div> + </div> + </div> + </div> + </div> + +</div> diff --git a/plugins/wp-statistics/includes/log/last-search.php b/plugins/wp-statistics/includes/log/last-search.php new file mode 100644 index 0000000..4b6967a --- /dev/null +++ b/plugins/wp-statistics/includes/log/last-search.php @@ -0,0 +1,165 @@ +<script type="text/javascript"> + jQuery(document).ready(function(){ + postboxes.add_postbox_toggles(pagenow); + }); +</script> +<?php + $search_engines = wp_statistics_searchengine_list(); + + $search_result['All'] = wp_statistics_searchword('all','total'); + + foreach( $search_engines as $key => $se ) { + $search_result[$key] = wp_statistics_searchword($key,'total'); + } + + if( array_key_exists('referred',$_GET) ) { + if( $_GET['referred'] != '' ) { + $referred = $_GET['referred']; + } + else { + $referred = 'All'; + } + } + else { + $referred = 'All'; + } + + $total = $search_result[$referred]; +?> +<div class="wrap"> + <?php screen_icon('options-general'); ?> + <h2><?php _e('Latest Search Words', 'wp_statistics'); ?></h2> + <ul class="subsubsub"> +<?php + $search_result_count = count( $search_result ); + $i = 0; + $separator = ' | '; + + foreach( $search_result as $key => $value ) { + $i++; + + if( $i == $search_result_count ) { $separator = ''; } + + if( $key == 'All' ) + { + $tag = ''; + $name = 'All'; + $translate = __('All', 'wp_statistics'); + } + else + { + $tag = $search_engines[$key]['tag']; + $name = $search_engines[$key]['name']; + $translate = $search_engines[$key]['translated']; + } + + echo "<li><a href='?page=" . WP_STATISTICS_WORDS_PAGE . "&referred={$tag}'>" . $translate . " <span class='count'>({$value})</span></a></li>{$separator}"; + } +?> + </ul> + <div class="postbox-container" id="last-log"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <div class="handlediv" title="<?php _e('Click to toggle', 'wp_statistics'); ?>"><br /></div> + <h3 class="hndle"><span><?php _e('Latest Search Word Statistics', 'wp_statistics'); ?></span></h3> + <div class="inside"> + <div class='log-latest'> + <?php + if( $total > 0 ) { + // Instantiate pagination object with appropriate arguments + $pagesPerSection = 10; + $options = array(25, "All"); + $stylePageOff = "pageOff"; + $stylePageOn = "pageOn"; + $styleErrors = "paginationErrors"; + $styleSelect = "paginationSelect"; + + $Pagination = new WP_Statistics_Pagination($total, $pagesPerSection, $options, false, $stylePageOff, $stylePageOn, $styleErrors, $styleSelect); + + $start = $Pagination->getEntryStart(); + $end = $Pagination->getEntryEnd(); + + // Retrieve MySQL data + if( $referred && $referred != '') { + $search_query = wp_statistics_searchword_query($referred); + } else { + $search_query = wp_statistics_searchword_query('all'); + } + + // Determine if we're using the old or new method of storing search engine info and build the appropriate table name. + $tablename = $wpdb->prefix . 'statistics_'; + + if( $WP_Statistics->get_option('search_converted') ) { + $tabletwo = $tablename . 'visitor'; + $tablename .= 'search'; + $result = $wpdb->get_results("SELECT * FROM `{$tablename}` INNER JOIN `{$tabletwo}` on {$tablename}.`visitor` = {$tabletwo}.`ID` WHERE {$search_query} ORDER BY `{$tablename}`.`ID` DESC LIMIT {$start}, {$end}"); + } else { + $tablename .= 'visitor'; + $result = $wpdb->get_results("SELECT * FROM `{$tablename}` WHERE {$search_query} ORDER BY `{$tablename}`.`ID` DESC LIMIT {$start}, {$end}"); + } + + $ISOCountryCode = $WP_Statistics->get_country_codes(); + + $dash_icon = wp_statistics_icons('dashicons-location-alt', 'map'); + + foreach($result as $items) { + if( !$WP_Statistics->Search_Engine_QueryString($items->referred) ) continue; + + if( substr( $items->ip, 0, 6 ) == '#hash#' ) { + $ip_string = __('#hash#', 'wp_statistics'); + $map_string = ""; + } + else { + $ip_string = "<a href='http://www.geoiptool.com/en/?IP={$items->ip}' target='_blank'>{$items->ip}</a>"; + $map_string = "<a class='show-map' href='http://www.geoiptool.com/en/?IP={$items->ip}' target='_blank' title='".__('Map', 'wp_statistics')."'>{$dash_icon}</a>"; + } + + if( $WP_Statistics->get_option('search_converted') ) { + $this_search_engine = $WP_Statistics->Search_Engine_Info_By_Engine($items->engine); + $words = $items->words; + } else { + $this_search_engine = $WP_Statistics->Search_Engine_Info($items->referred); + $words = $WP_Statistics->Search_Engine_QueryString($items->referred); + } + + echo "<div class='log-item'>"; + echo "<div class='log-referred'>".$words."</div>"; + echo "<div class='log-ip'>" . date(get_option('date_format'), strtotime($items->last_counter)) . " - {$ip_string}</div>"; + echo "<div class='clear'></div>"; + echo "<div class='log-url'>"; + echo $map_string; + + if($WP_Statistics->get_option('geoip')) { + echo "<img src='".plugins_url('wp-statistics/assets/images/flags/' . $items->location . '.png')."' title='{$ISOCountryCode[$items->location]}' class='log-tools'/>"; + } + + echo "<a href='?page=" . WP_STATISTICS_OVERVIEW_PAGE . "&type=last-all-search&referred={$this_search_engine['tag']}'><img src='".plugins_url('wp-statistics/assets/images/' . $this_search_engine['image'])."' class='log-tools' title='".__($this_search_engine['name'], 'wp_statistics')."'/></a>"; + + if( array_search( strtolower( $items->agent ), array( "chrome", "firefox", "msie", "opera", "safari" ) ) !== FALSE ){ + $agent = "<img src='".plugins_url('wp-statistics/assets/images/').$items->agent.".png' class='log-tools' title='{$items->agent}'/>"; + } else { + $agent = wp_statistics_icons('dashicons-editor-help', 'unknown'); + } + + echo "<a href='?page=" . WP_STATISTICS_OVERVIEW_PAGE . "&type=last-all-visitor&agent={$items->agent}'>{$agent}</a>"; + + echo "<a href='" . htmlentities($items->referred,ENT_QUOTES) . "' title='" . htmlentities($items->referred,ENT_QUOTES) . "'>".wp_statistics_icons('dashicons-admin-links', 'link') . " " . htmlentities($items->referred,ENT_QUOTES) . "</a></div>"; + echo "</div>"; + } + } + + echo "</div>"; + ?> + </div> + </div> + + <div class="pagination-log"> + <?php if( $total > 0 ) { echo $Pagination->display(); ?> + <p id="result-log"><?php echo ' ' . __('Page', 'wp_statistics') . ' ' . $Pagination->getCurrentPage() . ' ' . __('From', 'wp_statistics') . ' ' . $Pagination->getTotalPages(); ?></p> + <?php }?> + </div> + </div> + </div> + </div> +</div> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/log/last-visitor.php b/plugins/wp-statistics/includes/log/last-visitor.php new file mode 100644 index 0000000..5540d9d --- /dev/null +++ b/plugins/wp-statistics/includes/log/last-visitor.php @@ -0,0 +1,144 @@ +<script type="text/javascript"> + jQuery(document).ready(function(){ + postboxes.add_postbox_toggles(pagenow); + }); +</script> +<?php + $ISOCountryCode = $WP_Statistics->get_country_codes(); + + $_var = 'agent'; + $_get = '%'; + $title = 'All'; + + if( array_key_exists( 'agent', $_GET ) ) { + $_var = 'agent'; + $_get = '%' . $_GET['agent'] . '%'; + $title = htmlentities( $_GET['agent'], ENT_QUOTES ); + } + + if( array_key_exists( 'ip', $_GET ) ) { + $_var = 'ip'; + $_get = '%' . $_GET['ip'] . '%'; + $title = htmlentities( $_GET['ip'], ENT_QUOTES ); + } + + $total_visitor = $wpdb->get_var("SELECT COUNT(*) FROM `{$wpdb->prefix}statistics_visitor`"); + + if( $_get != '%' ) { + $total = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM `{$wpdb->prefix}statistics_visitor` WHERE `{$_var}` LIKE %s", $_get)); + } else { + $total = $total_visitor; + } + +?> +<div class="wrap"> + <?php screen_icon('options-general'); ?> + <h2><?php _e('Recent Visitors', 'wp_statistics'); ?></h2> + <ul class="subsubsub"> + <li class="all"><a <?php if($_get == '%') { echo 'class="current"'; } ?>href="?page=<?php echo WP_STATISTICS_VISITORS_PAGE; ?>"><?php _e('All', 'wp_statistics'); ?> <span class="count">(<?php echo $total_visitor; ?>)</span></a></li> + <?php + if( isset( $_var ) ) { + $spacer = " | "; + + if($_var == 'agent') { + $Browsers = wp_statistics_ua_list(); + $i = 0; + $Total = count( $Browsers ); + + foreach( $Browsers as $Browser ) { + if($Browser == null) continue; + + $i++; + if($title == $Browser) { $current = 'class="current" '; } else { $current = ""; } + if( $i == $Total ) { $spacer = ""; } + echo $spacer . "<li><a " . $current . "href='?page=" . WP_STATISTICS_VISITORS_PAGE . "&agent=" . $Browser . "'> " . __($Browser, 'wp_statistics') ." <span class='count'>(" . number_format_i18n(wp_statistics_useragent($Browser)) .")</span></a></li>"; + } + } else { + if($_get != '%') { $current = 'class="current" '; } else { $current = ""; } + echo $spacer . "<li><a {$current} href='?page=" . WP_STATISTICS_VISITORS_PAGE . "&{$_var}={$_get}'>{$title} <span class='count'>({$total})</span></a></li>"; + } + } + ?> + </ul> + <div class="postbox-container" id="last-log"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <div class="handlediv" title="<?php _e('Click to toggle', 'wp_statistics'); ?>"><br /></div> + <h3 class="hndle"><span><?php _e('Recent Visitor Statistics', 'wp_statistics'); if($_get != '%') { echo ' [' . __('Filtered by', 'wp_statistics') . ': ' . $title . ']'; } ?></span></h3> + + <div class="inside"> + <?php + // Instantiate pagination object with appropriate arguments + $pagesPerSection = 10; + $options = array(25, "All"); + $stylePageOff = "pageOff"; + $stylePageOn = "pageOn"; + $styleErrors = "paginationErrors"; + $styleSelect = "paginationSelect"; + + $Pagination = new WP_Statistics_Pagination($total, $pagesPerSection, $options, false, $stylePageOff, $stylePageOn, $styleErrors, $styleSelect); + + $start = $Pagination->getEntryStart(); + $end = $Pagination->getEntryEnd(); + + // Retrieve MySQL data + if( $_get != '%' ) { + $result = $wpdb->get_results($wpdb->prepare("SELECT * FROM `{$wpdb->prefix}statistics_visitor` WHERE `{$_var}` LIKE %s ORDER BY `{$wpdb->prefix}statistics_visitor`.`ID` DESC LIMIT {$start}, {$end}", $_get)); + } else { + $result = $wpdb->get_results("SELECT * FROM `{$wpdb->prefix}statistics_visitor` ORDER BY `{$wpdb->prefix}statistics_visitor`.`ID` DESC LIMIT {$start}, {$end}"); + } + + // Check to see if User Agent logging is enabled. + $DisplayUA = $WP_Statistics->get_option( "store_ua" ); + + echo "<div class='log-latest'>"; + + $dash_icon = wp_statistics_icons('dashicons-visibility', 'visibility'); + + foreach($result as $items) { + if( substr( $items->ip, 0, 6 ) == '#hash#' ) { + $ip_string = __('#hash#', 'wp_statistics'); + $map_string = ""; + } + else { + $ip_string = "<a href='?page=" . WP_STATISTICS_VISITORS_PAGE . "&ip={$items->ip}'>{$dash_icon}{$items->ip}</a>"; + $map_string = "<a class='show-map' href='http://www.geoiptool.com/en/?IP={$items->ip}' target='_blank' title='".__('Map', 'wp_statistics')."'>".wp_statistics_icons('dashicons-location-alt', 'map')."</a>"; + } + + echo "<div class='log-item'>"; + echo "<div class='log-referred'>{$ip_string}</div>"; + echo "<div class='log-ip'>" . date(get_option('date_format'), strtotime($items->last_counter)) . "</div>"; + echo "<div class='clear'></div>"; + echo "<div class='log-url'>"; + echo $map_string; + + if($WP_Statistics->get_option('geoip')) { + echo "<img src='".plugins_url('wp-statistics/assets/images/flags/' . $items->location . '.png')."' title='{$ISOCountryCode[$items->location]}' class='log-tools'/>"; + } + + if( array_search( strtolower( $items->agent ), array( "chrome", "firefox", "msie", "opera", "safari" ) ) !== FALSE ){ + $agent = "<img src='".plugins_url('wp-statistics/assets/images/').$items->agent.".png' class='log-tools' title='{$items->agent}'/>"; + } else { + $agent = wp_statistics_icons('dashicons-editor-help', 'unknown'); + } + + echo "<a href='?page=" . WP_STATISTICS_VISITORS_PAGE . "&agent={$items->agent}'>{$agent}</a>"; + + echo "<a href='" . htmlentities($items->referred,ENT_QUOTES) . "' title='" . htmlentities($items->referred,ENT_QUOTES) . "'>" . wp_statistics_icons('dashicons-admin-links', 'link') . " " . htmlentities($items->referred,ENT_QUOTES) . "</a></div>"; + echo "</div>"; + } + + echo "</div>"; + ?> + </div> + </div> + + <div class="pagination-log"> + <?php echo $Pagination->display(); ?> + <p id="result-log"><?php echo ' ' . __('Page', 'wp_statistics') . ' ' . $Pagination->getCurrentPage() . ' ' . __('From', 'wp_statistics') . ' ' . $Pagination->getTotalPages(); ?></p> + </div> + </div> + </div> + </div> +</div> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/log/log.php b/plugins/wp-statistics/includes/log/log.php new file mode 100644 index 0000000..8126738 --- /dev/null +++ b/plugins/wp-statistics/includes/log/log.php @@ -0,0 +1,122 @@ +<?php + $loading_img = '<div style="width: 100%; text-align: center;"><img src=" ' . plugins_url('wp-statistics/assets/images/') . 'ajax-loading.gif" alt="' . __( 'Reloading...', 'wp_statistics' ) . '"></div>'; + + $nag_html = ''; + if( ! $WP_Statistics->get_option( 'disable_donation_nag', false ) ) { + $nag_html = '<div id="wps_nag" class="update-nag" style="width: 90%;"><div id="donate-text"><p>' . __('Have you thought about donating to WP Statistics?', 'wp_statistics') . ' <a href="http://wp-statistics.com/donate/" target="_blank">'.__('Donate Now!', 'wp_statistics').'</a></p></div><div id="donate-button"><a class="button-primary" id="wps_close_nag">' . __('Close', 'wp_statistics') . '</a></div></div>'; + } + + // WP Statistics 10.0 had a bug which could corrupt the metabox display if the user re-ordered the widgets. Check to see if the meta data is corrupt and if so delete it. + $widget_order = get_user_meta($WP_Statistics->user_id, 'meta-box-order_toplevel_page_wps_overview_page', true); + + if( is_array( $widget_order ) && count( $widget_order ) > 2 ) { + delete_user_meta( $WP_Statistics->user_id, 'meta-box-order_toplevel_page_wps_overview_page'); + } + + // Add the about box here as metaboxes added on the actual page load cannot be closed. + add_meta_box( 'wps_about_postbox', sprintf(__('About WP Statistics Version %s', 'wp_statistics'), WP_STATISTICS_VERSION), 'wp_statistics_generate_overview_postbox_contents', $WP_Statistics->menu_slugs['overview'], 'side', null, array( 'widget' =>'about' ) ); + + function wp_statistics_generate_overview_postbox_contents( $post, $args ) { + $loading_img = '<div style="width: 100%; text-align: center;"><img src=" ' . plugins_url('wp-statistics/assets/images/') . 'ajax-loading.gif" alt="' . __( 'Loading...', 'wp_statistics' ) . '"></div>'; + $widget = $args['args']['widget']; + $container_id = str_replace( '.', '_', $widget . '_postbox' ); + + echo '<div id="' . $container_id . '">' . $loading_img .'</div>'; + wp_statistics_generate_widget_load_javascript( $widget, $container_id ); + } +?> +<div class="wrap"> + <?php echo $nag_html; ?> + <?php screen_icon('options-general'); ?> + <h2><?php echo get_admin_page_title(); ?></h2> + <?php wp_nonce_field('closedpostboxes', 'closedpostboxesnonce', false ); ?> + <?php wp_nonce_field('meta-box-order', 'meta-box-order-nonce', false ); ?> + + <div class="metabox-holder" id="overview-widgets"> + <div class="postbox-container" id="wps-postbox-container-1"> + <?php do_meta_boxes( $WP_Statistics->menu_slugs['overview'], 'side', '' ); ?> + </div> + + <div class="postbox-container" id="wps-postbox-container-2"> + <?php do_meta_boxes( $WP_Statistics->menu_slugs['overview'], 'normal', '' ); ?> + </div> + </div> +</div> +<?php + $new_buttons = '</button><button class="handlediv button-link wps-refresh" type="button" id="{{refreshid}}">' . wp_statistics_icons( 'dashicons-update' ) . '</button><button class="handlediv button-link wps-more" type="button" id="{{moreid}}">' . wp_statistics_icons( 'dashicons-migrate' ) . '</button>'; + $new_button = '</button><button class="handlediv button-link wps-refresh" type="button" id="{{refreshid}}">' . wp_statistics_icons( 'dashicons-update' ) . '</button>'; + + $admin_url = get_admin_url() . "/admin.php?page="; + + $page_urls = array(); + + $page_urls['wps_browsers_more_button'] = $admin_url . WP_STATISTICS_BROWSERS_PAGE; + $page_urls['wps_countries_more_button'] = $admin_url . WP_STATISTICS_COUNTRIES_PAGE; + $page_urls['wps_exclusions_more_button'] = $admin_url . WP_STATISTICS_EXCLUSIONS_PAGE; + $page_urls['wps_hits_more_button'] = $admin_url . WP_STATISTICS_HITS_PAGE; + $page_urls['wps_online_more_button'] = $admin_url . WP_STATISTICS_ONLINE_PAGE; + $page_urls['wps_pages_more_button'] = $admin_url . WP_STATISTICS_PAGES_PAGE; + $page_urls['wps_referring_more_button'] = $admin_url . WP_STATISTICS_REFERRERS_PAGE; + $page_urls['wps_search_more_button'] = $admin_url . WP_STATISTICS_SEARCHES_PAGE; + $page_urls['wps_words_more_button'] = $admin_url . WP_STATISTICS_WORDS_PAGE; + $page_urls['wps_top_visitors_more_button'] = $admin_url . WP_STATISTICS_TOP_VISITORS_PAGE; + $page_urls['wps_recent_more_button'] = $admin_url . WP_STATISTICS_VISITORS_PAGE; + +?> +<script type="text/javascript"> + var wp_statistics_destinations = <?php echo json_encode( $page_urls ); ?>; + var wp_statistics_loading_image = '<?php echo $loading_img; ?>' + + jQuery(document).ready(function(){ + + // Add the "more" and "refresh" buttons. + jQuery('.postbox').each( function () { + var temp = jQuery( this ); + var temp_id = temp.attr( 'id' ); + var temp_html = temp.html(); + if( temp_id == 'wps_summary_postbox' || temp_id == 'wps_map_postbox' || temp_id == 'wps_about_postbox' ) { + if( temp_id != 'wps_about_postbox' ) { + new_text = '<?php echo $new_button;?>'; + new_text = new_text.replace( '{{refreshid}}', temp_id.replace( '_postbox', '_refresh_button' ) ); + + temp_html = temp_html.replace( '</button>', new_text ); + } + } else { + new_text = '<?php echo $new_buttons;?>'; + new_text = new_text.replace( '{{refreshid}}', temp_id.replace( '_postbox', '_refresh_button' ) ); + new_text = new_text.replace( '{{moreid}}', temp_id.replace( '_postbox', '_more_button' ) ); + + temp_html = temp_html.replace( '</button>', new_text ); + } + + temp.html( temp_html ); + }); + + // close postboxes that should be closed + jQuery('.if-js-closed').removeClass('if-js-closed').addClass('closed'); + + // postboxes setup + postboxes.add_postbox_toggles('<?php echo $WP_Statistics->menu_slugs['overview']; ?>'); + + jQuery('.wps-refresh').unbind('click').on('click', wp_statistics_refresh_widget ); + jQuery('.wps-more').unbind('click').on('click', wp_statistics_goto_more ); + + jQuery('.hide-postbox-tog').on('click', wp_statistics_refresh_on_toggle_widget ); + + jQuery('#wps_close_nag').click( function(){ + var data = { + 'action': 'wp_statistics_close_donation_nag', + 'query': '', + }; + + jQuery.ajax({ url: ajaxurl, + type: 'get', + data: data, + datatype: 'json', + }); + + jQuery('#wps_nag').hide(); + }); + + }); +</script> diff --git a/plugins/wp-statistics/includes/log/online.php b/plugins/wp-statistics/includes/log/online.php new file mode 100644 index 0000000..94f381b --- /dev/null +++ b/plugins/wp-statistics/includes/log/online.php @@ -0,0 +1,115 @@ +<script type="text/javascript"> + jQuery(document).ready(function(){ + postboxes.add_postbox_toggles(pagenow); + }); +</script> +<?php + +?> +<div class="wrap"> + <?php screen_icon('options-general'); ?> + <h2><?php _e('Online Users', 'wp_statistics'); ?></h2> + <div class="postbox-container" id="last-log"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + + <div class="postbox"> + <div class="handlediv" title="<?php _e('Click to toggle', 'wp_statistics'); ?>"><br /></div> + <h3 class="hndle"><span><?php _e('Online Users', 'wp_statistics'); ?></span></h3> + <div class="inside"> + <?php + $ISOCountryCode = $WP_Statistics->get_country_codes(); + + $result = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}statistics_useronline;" ); + $total = count( $result ); + + if( $total > 0 ) { + // Instantiate pagination object with appropriate arguments + $pagesPerSection = 10; + $options = 10; + $stylePageOff = "pageOff"; + $stylePageOn = "pageOn"; + $styleErrors = "paginationErrors"; + $styleSelect = "paginationSelect"; + + $Pagination = new WP_Statistics_Pagination($total, $pagesPerSection, $options, false, $stylePageOff, $stylePageOn, $styleErrors, $styleSelect); + + $start = $Pagination->getEntryStart(); + $end = $Pagination->getEntryEnd(); + + echo "<div class='log-latest'>"; + $count = 0; + + $dash_icon = wp_statistics_icons('dashicons-visibility', 'visibility'); + + foreach($result as $items) { + $count++; + + if( $count >= $start ) { + if( substr( $items->ip, 0, 6 ) == '#hash#' ) { + $ip_string = __('#hash#', 'wp_statistics'); + $map_string = ""; + } + else { + $ip_string = "<a href='?page=" . WP_STATISTICS_OVERVIEW_PAGE . "&type=last-all-visitor&ip={$items->ip}'>{$dash_icon}{$items->ip}</a>"; + $map_string = "<a class='show-map' href='http://www.geoiptool.com/en/?IP={$items->ip}' target='_blank' title='".__('Map', 'wp_statistics')."'>".wp_statistics_icons('dashicons-location-alt', 'map')."</a>"; + } + + echo "<div class='log-item'>"; + echo "<div class='log-url'>"; + echo $map_string; + + if($WP_Statistics->get_option('geoip')) { + echo "<img src='".plugins_url('wp-statistics/assets/images/flags/' . $items->location . '.png')."' title='{$ISOCountryCode[$items->location]}' class='log-tools'/>"; + } + + if( array_search( strtolower( $items->agent ), array( "chrome", "firefox", "msie", "opera", "safari" ) ) !== FALSE ){ + $agent = "<img src='".plugins_url('wp-statistics/assets/images/').$items->agent.".png' class='log-tools' title='{$items->agent}'/>"; + } else { + $agent = wp_statistics_icons('dashicons-editor-help', 'unknown'); + } + + echo "<a href='?page=" . WP_STATISTICS_OVERVIEW_PAGE . "&type=last-all-visitor&agent={$items->agent}'>{$agent}</a> {$items->ip}"; + echo "<br>"; + + echo __('Online for ', 'wp_statistics'); + $timediff = ($items->timestamp - $items->created); + + if( $timediff > 3600 ) { + echo date( "H:i:s", ($items->timestamp - $items->created) ); + } + else if( $timediff > 60 ) { + echo "00:" . date( "i:s", ($items->timestamp - $items->created) ); + } + else { + echo "00:00:" . date( "s", ($items->timestamp - $items->created) ); + } + + echo " (HH:MM:SS)"; + + echo "</div>"; + echo "</div>"; + } + + if( $count == $start + 10 ) { break; } + + } + + echo "</div>"; + } else { + echo "<div class='wps-center'>".__('Currently there are no users online in the site.', 'wp_statistics')."</div>"; + } + ?> + </div> + </div> + +<?php if( $total > 0 ) {?> + <div class="pagination-log"> + <?php echo $Pagination->display(); ?> + <p id="result-log"><?php echo ' ' . __('Page', 'wp_statistics') . ' ' . $Pagination->getCurrentPage() . ' ' . __('From', 'wp_statistics') . ' ' . $Pagination->getTotalPages(); ?></p> + </div> +<?php } ?> + </div> + </div> + </div> +</div> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/log/page-statistics.php b/plugins/wp-statistics/includes/log/page-statistics.php new file mode 100644 index 0000000..e959dc9 --- /dev/null +++ b/plugins/wp-statistics/includes/log/page-statistics.php @@ -0,0 +1,43 @@ +<script type="text/javascript"> + jQuery(document).ready(function(){ + postboxes.add_postbox_toggles(pagenow); + }); +</script> +<?php + if( array_key_exists( 'page-uri', $_GET ) ) { $pageuri = $_GET['page-uri']; } else { $pageuri = null; } + if( array_key_exists( 'page-id', $_GET ) ) { $pageid = (int) $_GET['page-id']; } else { $pageid = null; } + + if( $pageuri && !$pageid ) { $pageid = wp_statistics_uri_to_id( $pageuri ); } + + $post = get_post($pageid); + if( is_object($post) ) { $title = $post->post_title; } else { $title = ""; } + + $urlfields = "&page-id={$pageid}"; + if( $pageuri ) { $urlfields .= "&page-uri={$pageuri}"; } + + $daysToDisplay = 20; + if( array_key_exists('hitdays',$_GET) ) { $daysToDisplay = intval($_GET['hitdays']); } + + if( array_key_exists('rangestart', $_GET ) ) { $rangestart = $_GET['rangestart']; } else { $rangestart = ''; } + if( array_key_exists('rangeend', $_GET ) ) { $rangeend = $_GET['rangeend']; } else { $rangeend = ''; } +?> +<div class="wrap"> + <?php screen_icon('options-general'); ?> + <h2><?php echo __('Page Trend for Post ID', 'wp_statistics') . ' ' . $pageid . ' - ' . $title; ?></h2> + + <?php wp_statistics_date_range_selector( WP_STATISTICS_PAGES_PAGE, $daysToDisplay, null, null, $urlfields ); ?> + + <div class="postbox-container" id="last-log"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <div class="handlediv" title="<?php _e('Click to toggle', 'wp_statistics'); ?>"><br /></div> + <h3 class="hndle"><span><?php _e('Page Trend', 'wp_statistics'); ?></span></h3> + <div class="inside"> + <?php include_once( dirname( __FILE__ ) . '/widgets/page.php'); wp_statistics_generate_page_postbox_content( $pageuri, $pageid, $daysToDisplay, null, $rangestart, $rangeend ); ?> + </div> + </div> + </div> + </div> + </div> +</div> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/log/search-statistics.php b/plugins/wp-statistics/includes/log/search-statistics.php new file mode 100644 index 0000000..bbaab67 --- /dev/null +++ b/plugins/wp-statistics/includes/log/search-statistics.php @@ -0,0 +1,161 @@ +<script type="text/javascript"> + jQuery(document).ready(function(){ + postboxes.add_postbox_toggles(pagenow); + }); +</script> +<?php + $search_engines = wp_statistics_searchengine_list(); + + $daysToDisplay = 20; + if( array_key_exists('hitdays',$_GET) ) { $daysToDisplay = intval($_GET['hitdays']); } + + if( array_key_exists('rangestart', $_GET ) ) { $rangestart = $_GET['rangestart']; } else { $rangestart = ''; } + if( array_key_exists('rangeend', $_GET ) ) { $rangeend = $_GET['rangeend']; } else { $rangeend = ''; } + + list( $daysToDisplay, $rangestart_utime, $rangeend_utime ) = wp_statistics_date_range_calculator( $daysToDisplay, $rangestart, $rangeend ); + $daysInThePast = round( ( time() - $rangeend_utime ) / 86400 ,0 ); +?> +<div class="wrap"> + <?php screen_icon('options-general'); ?> + <h2><?php _e('Search Engine Referral Statistics', 'wp_statistics'); ?></h2> + + <?php wp_statistics_date_range_selector( WP_STATISTICS_SEARCHES_PAGE, $daysToDisplay ); ?> + + <div class="postbox-container" style="width: 100%; float: left; margin-right:20px"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <div class="handlediv" title="<?php _e('Click to toggle', 'wp_statistics'); ?>"><br /></div> + <h3 class="hndle"><span><?php _e('Search Engine Referral Statistics', 'wp_statistics'); ?></span></h3> + <div class="inside"> + <script type="text/javascript"> + var visit_chart; + jQuery( document ).ready( function() { +<?php + $total_stats = $WP_Statistics->get_option( 'chart_totals' ); + $total_daily = array(); + + foreach( $search_engines as $se ) { + + echo "var searches_data_line_" . $se['tag'] . " = ["; + + for( $i = $daysToDisplay; $i >= 0; $i-- ) { + if( !array_key_exists( $i, $total_daily ) ) { $total_daily[$i] = 0; } + + $stat = wp_statistics_searchengine( $se['tag'], '-' . ( $i + $daysInThePast ) ); + $total_daily[$i] += $stat; + + echo "['" . $WP_Statistics->Real_Current_Date( 'Y-m-d', '-' . $i, $rangeend_utime ) . "'," . $stat . "], "; + + } + + echo "];\n"; + } + + if( $total_stats == 1 ) { + echo "var searches_data_line_total = ["; + + for( $i = $daysToDisplay; $i >= 0; $i-- ) { + echo "['" . $WP_Statistics->Real_Current_Date( 'Y-m-d', '-' . $i, $rangeend_utime ) . "'," . $total_daily[$i] . "], "; + } + + echo "];\n"; + } + + $tickInterval = $daysToDisplay / 20; + if( $tickInterval < 1 ) { $tickInterval = 1; } +?> + visit_chart = jQuery.jqplot( 'search-stats', [<?php foreach( $search_engines as $se ) { echo "searches_data_line_" . $se['tag'] . ", "; } if( $total_stats == 1 ) { echo 'searches_data_line_total'; }?>], { + title: { + text: '<b>' + <?php echo json_encode( __( 'Search engine referrals in the last', 'wp_statistics' ) . ' ' . $daysToDisplay . ' ' . __( 'days', 'wp_statistics' ) ); ?> + '</b>', + fontSize: '12px', + fontFamily: 'Tahoma', + textColor: '#000000', + }, + axes: { + xaxis: { + min: '<?php echo $WP_Statistics->Real_Current_Date( 'Y-m-d', '-' . $daysToDisplay, $rangeend_utime ); ?>', + max: '<?php echo $WP_Statistics->Real_Current_Date( 'Y-m-d', '-0', $rangeend_utime ); ?>', + tickInterval: '<?php echo $tickInterval; ?> day', + renderer:jQuery.jqplot.DateAxisRenderer, + tickRenderer: jQuery.jqplot.CanvasAxisTickRenderer, + tickOptions: { + angle: -45, + formatString:'%b %#d', + showGridline: false, + }, + }, + yaxis: { + min: 0, + padMin: 1.0, + label: '<?php echo addslashes( __( 'Number of referrals', 'wp_statistics' ) ); ?>', + labelRenderer: jQuery.jqplot.CanvasAxisLabelRenderer, + labelOptions: { + angle: -90, + fontSize: '12px', + fontFamily: 'Tahoma', + fontWeight: 'bold', + }, + } + }, + legend: { + show: true, + location: 's', + placement: 'outsideGrid', + labels: [<?php foreach( $search_engines as $se ) { echo "'" . addslashes( $se['translated']) . "', "; } if( $total_stats == 1 ) { echo "'" . addslashes( __( 'Total', 'wp_statistics' ) ) . "'"; } ?>], + renderer: jQuery.jqplot.EnhancedLegendRenderer, + rendererOptions: + { + numberColumns: <?php echo count( $search_engines ) + 1; ?>, + disableIEFading: false, + border: 'none', + }, + }, + highlighter: { + show: true, + bringSeriesToFront: true, + tooltipAxes: 'xy', + formatString: '%s: <b>%i</b> ', + tooltipContentEditor: tooltipContentEditor, + }, + grid: { + drawGridlines: true, + borderColor: 'transparent', + shadow: false, + drawBorder: false, + shadowColor: 'transparent' + }, + } ); + + function tooltipContentEditor( str, seriesIndex, pointIndex, plot ) { + // display series_label, x-axis_tick, y-axis value + return plot.legend.labels[seriesIndex] + ", " + str;; + } + + jQuery(window).resize( function() { + JQPlotSearchChartLengendClickRedraw() + }); + + function JQPlotSearchChartLengendClickRedraw() { + visit_chart.replot( {resetAxes: ['yaxis'] } ); + jQuery('div[id="search-stats"] .jqplot-table-legend').click( function() { + JQPlotSearchChartLengendClickRedraw(); + }); + } + + jQuery('div[id="search-stats"] .jqplot-table-legend').click( function() { + JQPlotSearchChartLengendClickRedraw() + }); + + }); + + </script> + + <div id="search-stats" style="height:500px;"></div> + + </div> + </div> + </div> + </div> + </div> +</div> diff --git a/plugins/wp-statistics/includes/log/top-countries.php b/plugins/wp-statistics/includes/log/top-countries.php new file mode 100644 index 0000000..b035b54 --- /dev/null +++ b/plugins/wp-statistics/includes/log/top-countries.php @@ -0,0 +1,72 @@ +<script type="text/javascript"> + jQuery(document).ready(function(){ + postboxes.add_postbox_toggles(pagenow); + }); +</script> +<?php + $daysToDisplay = 20; + if( array_key_exists('hitdays',$_GET) ) { $daysToDisplay = intval($_GET['hitdays']); } + + if( array_key_exists('rangestart', $_GET ) ) { $rangestart = $_GET['rangestart']; } else { $rangestart = ''; } + if( array_key_exists('rangeend', $_GET ) ) { $rangeend = $_GET['rangeend']; } else { $rangeend = ''; } + + list( $daysToDisplay, $rangestart_utime, $rangeend_utime ) = wp_statistics_date_range_calculator( $daysToDisplay, $rangestart, $rangeend ); + +?> +<div class="wrap"> + <?php screen_icon('options-general'); ?> + <h2><?php _e('Top Countries', 'wp_statistics'); ?></h2> + + <?php wp_statistics_date_range_selector( WP_STATISTICS_COUNTRIES_PAGE, $daysToDisplay ); ?> + + <div class="postbox-container" id="last-log" style="width: 100%;"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <div class="handlediv" title="<?php _e('Click to toggle', 'wp_statistics'); ?>"><br /></div> + <h3 class="hndle"><span><?php _e('Top Countries', 'wp_statistics'); ?></span></h3> + <div class="inside"> + <table class="widefat table-stats" id="last-referrer" style="width: 100%;"> + <tr> + <td><?php _e('Rank', 'wp_statistics'); ?></td> + <td><?php _e('Flag', 'wp_statistics'); ?></td> + <td><?php _e('Country', 'wp_statistics'); ?></td> + <td><?php _e('Visitor Count', 'wp_statistics'); ?></td> + </tr> + + <?php + $ISOCountryCode = $WP_Statistics->get_country_codes(); + + $result = $wpdb->get_results("SELECT DISTINCT `location` FROM `{$wpdb->prefix}statistics_visitor`"); + + $rangestartdate = $WP_Statistics->real_current_date('Y-m-d', '-0', $rangestart_utime ); + $rangeenddate = $WP_Statistics->real_current_date('Y-m-d', '-0', $rangeend_utime ); + + foreach( $result as $item ) + { + $Countries[$item->location] = $wpdb->get_var( $wpdb->prepare( "SELECT count(location) FROM `{$wpdb->prefix}statistics_visitor` WHERE location=%s AND `last_counter` BETWEEN %s AND %s", $item->location, $rangestartdate, $rangeenddate ) ); + } + + arsort($Countries); + $i = 0; + + foreach( $Countries as $item => $value) { + $i++; + + $item = strtoupper($item); + + echo "<tr>"; + echo "<td style='text-align: center;'>$i</td>"; + echo "<td style='text-align: center;'><img src='".plugins_url('wp-statistics/assets/images/flags/' . $item . '.png')."' title='{$ISOCountryCode[$item]}'/></td>"; + echo "<td style='text-align: left; direction: ltr;'>{$ISOCountryCode[$item]}</td>"; + echo "<td style='text-align: center;'>" . number_format_i18n($value) . "</td>"; + echo "</tr>"; + } + ?> + </table> + </div> + </div> + </div> + </div> + </div> +</div> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/log/top-pages.php b/plugins/wp-statistics/includes/log/top-pages.php new file mode 100644 index 0000000..a8f796f --- /dev/null +++ b/plugins/wp-statistics/includes/log/top-pages.php @@ -0,0 +1,212 @@ +<script type="text/javascript"> + jQuery(document).ready(function(){ + postboxes.add_postbox_toggles(pagenow); + }); +</script> +<?php + $daysToDisplay = 20; + if( array_key_exists('hitdays',$_GET) ) { $daysToDisplay = intval( $_GET['hitdays'] ); } + + if( array_key_exists('rangestart', $_GET ) ) { $rangestart = $_GET['rangestart']; } else { $rangestart = ''; } + if( array_key_exists('rangeend', $_GET ) ) { $rangeend = $_GET['rangeend']; } else { $rangeend = ''; } + + list( $daysToDisplay, $rangestart_utime, $rangeend_utime ) = wp_statistics_date_range_calculator( $daysToDisplay, $rangestart, $rangeend ); + $daysInThePast = round( ( time() - $rangeend_utime ) / 86400 , 0 ); + + list( $total, $uris ) = wp_statistics_get_top_pages( $WP_Statistics->Real_Current_Date( 'Y-m-d', '-0', $rangestart_utime ), $WP_Statistics->Real_Current_Date( 'Y-m-d', '-0', $rangeend_utime ) ); + +?> +<div class="wrap"> + <?php screen_icon('options-general'); ?> + <h2><?php _e('Top Pages', 'wp_statistics'); ?></h2> + + <?php wp_statistics_date_range_selector( WP_STATISTICS_PAGES_PAGE, $daysToDisplay ); ?> + + <div class="postbox-container" id="last-log"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + + <div class="postbox"> + <div class="handlediv" title="<?php _e( 'Click to toggle', 'wp_statistics' ); ?>"><br /></div> + <h3 class="hndle"><span><?php _e( 'Top 5 Pages Trends', 'wp_statistics' ); ?></span></h3> + <div class="inside"> + <script type="text/javascript"> + var pages_jqchart; + jQuery(document).ready( function() { +<?php + $count = 0; + + foreach( $uris as $uri ) { + + $count++; + + echo "var pages_data_line" . $count . " = ["; + + for( $i = $daysToDisplay; $i >= 0; $i--) { + $stat = wp_statistics_pages( '-' . ( $i + $daysInThePast ), $uri[0] ); + + echo "['" . $WP_Statistics->Real_Current_Date( 'Y-m-d', '-' . $i, $rangeend_utime ) . "'," . $stat . "], "; + + } + + echo "];\n"; + if( $count > 4 ) { break; } + } + + if( $count < 6 ) { + for( $i = $count + 1 ; $i < 6; $i++ ) { + echo "var pages_data_line" . $i . " = [];\n"; + } + } + + $tickInterval = $daysToDisplay / 20; + if( $tickInterval < 1 ) { $tickInterval = 1; } +?> + + pages_jqchart = jQuery.jqplot('jqpage-stats', [pages_data_line1, pages_data_line2, pages_data_line3, pages_data_line4, pages_data_line5], { + title: { + text: '<b><?php echo htmlentities( __( 'Top 5 Page Trending Stats', 'wp_statistics' ), ENT_QUOTES ); ?></b>', + fontSize: '12px', + fontFamily: 'Tahoma', + textColor: '#000000', + }, + axes: { + xaxis: { + min: '<?php echo $WP_Statistics->Real_Current_Date( 'Y-m-d', '-' . $daysToDisplay, $rangeend_utime ); ?>', + max: '<?php echo $WP_Statistics->Real_Current_Date( 'Y-m-d', '-0', $rangeend_utime ); ?>', + tickInterval: '<?php echo $tickInterval; ?> day', + renderer:jQuery.jqplot.DateAxisRenderer, + tickRenderer: jQuery.jqplot.CanvasAxisTickRenderer, + tickOptions: { + angle: -45, + formatString:'%b %#d', + showGridline: false, + }, + }, + yaxis: { + min: 0, + padMin: 1.0, + label: <?php echo json_encode( __( 'Number of Hits', 'wp_statistics' ) ); ?>, + labelRenderer: jQuery.jqplot.CanvasAxisLabelRenderer, + labelOptions: { + angle: -90, + fontSize: '12px', + fontFamily: 'Tahoma', + fontWeight: 'bold', + }, + } + }, + legend: { + show: true, + location: 's', + placement: 'outsideGrid', + labels: [ <?php echo json_encode( __('Rank #1', 'wp_statistics' ) ); ?>, <?php echo json_encode( __( 'Rank #2', 'wp_statistics' ) ); ?>, <?php echo json_encode( __( 'Rank #3', 'wp_statistics' ) ); ?>, <?php echo json_encode( __( 'Rank #4', 'wp_statistics' ) ); ?>, <?php echo json_encode( __( 'Rank #5', 'wp_statistics' ) ); ?> ], + renderer: jQuery.jqplot.EnhancedLegendRenderer, + rendererOptions: + { + numberColumns: 5, + disableIEFading: false, + border: 'none', + }, + }, + highlighter: { + show: true, + bringSeriesToFront: true, + tooltipAxes: 'xy', + formatString: '%s: <b>%i</b> ', + tooltipContentEditor: tooltipContentEditor, + }, + grid: { + drawGridlines: true, + borderColor: 'transparent', + shadow: false, + drawBorder: false, + shadowColor: 'transparent' + }, + } ); + + function tooltipContentEditor( str, seriesIndex, pointIndex, plot ) { + // display series_label, x-axis_tick, y-axis value + return plot.legend.labels[seriesIndex] + ", " + str;; + } + + jQuery(window).resize( function() { + JQPlotPagesChartLengendClickRedraw() + }); + + function JQPlotPagesChartLengendClickRedraw() { + pages_jqchart.replot( {resetAxes: ['yaxis'] } ); + jQuery('div[id="jqpage-stats"] .jqplot-table-legend').click( function() { + JQPlotPagesChartLengendClickRedraw(); + }); + } + + jQuery('div[id="jqpage-stats"] .jqplot-table-legend').click( function() { + JQPlotPagesChartLengendClickRedraw() + }); + }); + </script> + + <div id="jqpage-stats" style="height:500px;"></div> + + </div> + </div> + + <div class="postbox"> + <div class="handlediv" title="<?php _e( 'Click to toggle', 'wp_statistics' ); ?>"><br /></div> + <h3 class="hndle"><span><?php _e( 'Top Pages', 'wp_statistics' ); ?></span></h3> + <div class="inside"> + <?php + if( $total > 0 ) { + // Instantiate pagination object with appropriate arguments + $pagesPerSection = 10; + $options = 10; + $stylePageOff = "pageOff"; + $stylePageOn = "pageOn"; + $styleErrors = "paginationErrors"; + $styleSelect = "paginationSelect"; + + $Pagination = new WP_Statistics_Pagination( $total, $pagesPerSection, $options, false, $stylePageOff, $stylePageOn, $styleErrors, $styleSelect ); + + $start = $Pagination->getEntryStart(); + $end = $Pagination->getEntryEnd(); + + $site_url = site_url(); + + echo "<div class='log-latest'>"; + $count = 0; + + foreach( $uris as $uri ) { + $count++; + + if( $count >= $start ) { + echo "<div class='log-item'>"; + + if( $uri[3] == '' ) { $uri[3] = '[' . htmlentities( __( 'No page title found', 'wp_statistics' ), ENT_QUOTES ) . ']'; } + + echo "<div class='log-page-title'>{$count} - {$uri[3]}</div>"; + echo "<div class='right-div'>".__('Visits', 'wp_statistics').": <a href='?page=" . WP_STATISTICS_PAGES_PAGE . "&page-uri={$uri[0]}'>" . number_format_i18n($uri[1]) . "</a></div>"; + echo "<div class='left-div'><a dir='ltr' href='" . htmlentities( $site_url . $uri[0], ENT_QUOTES ) . "'>" . htmlentities( urldecode( $uri[0] ), ENT_QUOTES ) . "</a></div>"; + echo "</div>"; + } + + if( $count == $start + 10 ) { break; } + + } + + echo "</div>"; + } + ?> + </div> + </div> + +<?php if( $total > 0 ) {?> + <div class="pagination-log"> + <?php echo $Pagination->display(); ?> + <p id="result-log"><?php echo ' ' . __( 'Page', 'wp_statistics' ) . ' ' . $Pagination->getCurrentPage() . ' ' . __( 'From', 'wp_statistics' ) . ' ' . $Pagination->getTotalPages(); ?></p> + </div> +<?php } ?> + </div> + </div> + </div> +</div> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/log/top-referring.php b/plugins/wp-statistics/includes/log/top-referring.php new file mode 100644 index 0000000..b288be6 --- /dev/null +++ b/plugins/wp-statistics/includes/log/top-referring.php @@ -0,0 +1,159 @@ +<script type="text/javascript"> + jQuery(document).ready(function(){ + jQuery('.show-map').click(function(){ + alert('<?php _e('To be added soon', 'wp_statistics'); ?>'); + }); + + postboxes.add_postbox_toggles(pagenow); + }); +</script> +<?php + $daysToDisplay = 20; + if( array_key_exists('hitdays',$_GET) ) { $daysToDisplay = intval($_GET['hitdays']); } + + if( array_key_exists('rangestart', $_GET ) ) { $rangestart = $_GET['rangestart']; } else { $rangestart = ''; } + if( array_key_exists('rangeend', $_GET ) ) { $rangeend = $_GET['rangeend']; } else { $rangeend = ''; } + + list( $daysToDisplay, $rangestart_utime, $rangeend_utime ) = wp_statistics_date_range_calculator( $daysToDisplay, $rangestart, $rangeend ); + + $rangestartdate = $WP_Statistics->real_current_date('Y-m-d', '-0', $rangestart_utime ); + $rangeenddate = $WP_Statistics->real_current_date('Y-m-d', '-0', $rangeend_utime ); + + if( array_key_exists('referr',$_GET) ) { + $referr = $_GET['referr']; + $title = $_GET['referr']; + } + else { + $referr = ''; + } + + $get_urls = array(); + $total = 0; + + if( $referr ) { + $result = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM `{$wpdb->prefix}statistics_visitor` WHERE `referred` LIKE %s AND referred <> '' AND `last_counter` BETWEEN %s AND %s ORDER BY `{$wpdb->prefix}statistics_visitor`.`ID` DESC", '%' . $referr . '%', $rangestartdate, $rangeenddate ) ); + + $total = count( $result ); + } else { + $result = $wpdb->get_results( $wpdb->prepare( "SELECT referred FROM {$wpdb->prefix}statistics_visitor WHERE referred <> '' AND `last_counter` BETWEEN %s AND %s", $rangestartdate, $rangeenddate ) ); + + $urls = array(); + foreach( $result as $item ) { + + $url = parse_url($item->referred); + + if( empty($url['host']) || stristr(get_bloginfo('url'), $url['host']) ) + continue; + + $urls[] = $url['host']; + } + + $get_urls = array_count_values($urls); + + $total = count( $get_urls ); + } + +?> +<div class="wrap"> + <?php screen_icon('options-general'); ?> + <h2><?php _e('Top Referring Sites', 'wp_statistics'); ?></h2> + + <div><?php wp_statistics_date_range_selector( WP_STATISTICS_REFERRERS_PAGE, $daysToDisplay ); ?></div> + + <div class="clear"/> + + <ul class="subsubsub"> + <?php if($referr) { ?> + <li class="all"><a <?php if(!$referr) { echo 'class="current"'; } ?>href="?page=<?php echo WP_STATISTICS_REFERRERS_PAGE; ?>"><?php _e('All', 'wp_statistics'); ?></a></li> + | <li><a class="current" href="?page=<?php echo WP_STATISTICS_REFERRERS_PAGE; ?>&referr=<?php echo htmlentities($referr, ENT_QUOTES); ?>"> <?php echo htmlentities( $title, ENT_QUOTES ); ?> <span class="count">(<?php echo $total; ?>)</span></a></li> + <?php } else { ?> + <li class="all"><a <?php if(!$referr) { echo 'class="current"'; } ?>href="?page=<?php echo WP_STATISTICS_REFERRERS_PAGE; ?>"><?php _e('All', 'wp_statistics'); ?> <span class="count">(<?php echo $total; ?>)</span></a></li> + <?php }?> + </ul> + <div class="postbox-container" id="last-log"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <div class="handlediv" title="<?php _e('Click to toggle', 'wp_statistics'); ?>"><br /></div> + <?php if($referr) { ?> + <h3 class="hndle"><span><?php _e('Referring sites from', 'wp_statistics'); ?>: <?php echo htmlentities($referr, ENT_QUOTES); ?></span></h3> + <?php } else { ?> + <h3 class="hndle"><span><?php _e('Top Referring Sites', 'wp_statistics'); ?></span></h3> + <?php } ?> + <div class="inside"> + <?php + echo "<div class='log-latest'>"; + + if( $total > 0 ) { + // Initiate pagination object with appropriate arguments + $pagesPerSection = 10; + $options = array(25, "All"); + $stylePageOff = "pageOff"; + $stylePageOn = "pageOn"; + $styleErrors = "paginationErrors"; + $styleSelect = "paginationSelect"; + + $Pagination = new WP_Statistics_Pagination($total, $pagesPerSection, $options, false, $stylePageOff, $stylePageOn, $styleErrors, $styleSelect); + + $start = $Pagination->getEntryStart(); + $end = $Pagination->getEntryEnd(); + + if( $WP_Statistics->get_option('search_converted') ) { + $result = $wpdb->get_results($wpdb->prepare("SELECT * FROM `{$wpdb->prefix}statistics_search` INNER JOIN `{$wpdb->prefix}statistics_visitor` on {$wpdb->prefix}statistics_search.`visitor` = {$wpdb->prefix}statistics_visitor.`ID` WHERE `host` = %s AND {$wpdb->prefix}statistics_visitor.`last_counter` BETWEEN %s AND %s ORDER BY `{$wpdb->prefix}statistics_search`.`ID` DESC LIMIT %d, %d", $referr, $rangestartdate, $rangeenddate, $start, $end ) ); + } + + if( $referr ) { + foreach($result as $item) { + + echo "<div class='log-item'>"; + echo "<div class='log-referred'><a href='?page=" . WP_STATISTICS_OVERVIEW_PAGE . "&type=last-all-visitor&ip={$item->ip}'>".wp_statistics_icons('dashicons-visibility', 'visibility')."{$item->ip}</a></div>"; + echo "<div class='log-ip'>" . date(get_option('date_format'), strtotime($item->last_counter)) . " - <a href='http://www.geoiptool.com/en/?IP={$item->ip}' target='_blank'>{$item->ip}</a></div>"; + echo "<div class='clear'></div>"; + echo "<a class='show-map' title='".__('Map', 'wp_statistics')."'><div class='dashicons dashicons-location-alt'></div></a>"; + + if( array_search( strtolower( $item->agent ), array( "chrome", "firefox", "msie", "opera", "safari" ) ) !== FALSE ){ + $agent = "<img src='".plugins_url('wp-statistics/assets/images/').$item->agent.".png' class='log-tools' title='{$item->agent}'/>"; + } else { + $agent = "<div class='dashicons dashicons-editor-help'></div>"; + } + + echo "<div class='log-agent'><a href='?page=" . WP_STATISTICS_OVERVIEW_PAGE . "&type=last-all-visitor&agent={$item->agent}'>{$agent}</a>"; + + echo "<a href='" . htmlentities($item->referred,ENT_QUOTES) . "'><div class='dashicons dashicons-admin-links'></div> " . htmlentities(substr($item->referred, 0, 100),ENT_QUOTES) . "[...]</a></div>"; + echo "</div>"; + + } + } else { + arsort( $get_urls ); + $get_urls = array_slice($get_urls, $start, $end); + + $i = 0; + foreach( $get_urls as $items => $value) { + + $i++; + + echo "<div class='log-item'>"; + echo "<div class='log-referred'>{$i} - <a href='?page=" . WP_STATISTICS_REFERRERS_PAGE . "&referr={$items}'>{$items}</a></div>"; + echo "<div class='log-ip'>".__('References', 'wp_statistics').": " . number_format_i18n($value) . "</div>"; + echo "<div class='clear'></div>"; + echo "<div class='log-url'><a href='http://" . htmlentities($items,ENT_QUOTES) . "/' title='" . htmlentities($items,ENT_QUOTES) . "'><div class='dashicons dashicons-admin-links'></div> http://" . htmlentities($items,ENT_QUOTES) . "/</a></div>"; + echo "</div>"; + + } + } + } + + echo "</div>"; + ?> + </div> + </div> + + <div class="pagination-log"> + <?php if( $total > 0 ) { echo $Pagination->display(); ?> + <p id="result-log"><?php echo ' ' . __('Page', 'wp_statistics') . ' ' . $Pagination->getCurrentPage() . ' ' . __('From', 'wp_statistics') . ' ' . $Pagination->getTotalPages(); ?></p> + <?php } ?> + </div> + </div> + </div> + </div> +</div> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/log/top-visitors.php b/plugins/wp-statistics/includes/log/top-visitors.php new file mode 100644 index 0000000..9626d32 --- /dev/null +++ b/plugins/wp-statistics/includes/log/top-visitors.php @@ -0,0 +1,51 @@ +<script type="text/javascript"> + jQuery(document).ready(function(){ + postboxes.add_postbox_toggles(pagenow); + }); +</script> +<?php + $ISOCountryCode = $WP_Statistics->get_country_codes(); + include_once( dirname( __FILE__ ) . '/widgets/top.visitors.php' ); +?> +<div class="wrap"> + <?php screen_icon('options-general'); ?> + <h2><?php _e('Top 100 Visitors Today', 'wp_statistics'); ?></h2> +<?php + wp_enqueue_script('jquery-ui-datepicker'); + wp_register_style("jquery-ui-smoothness-css", $WP_Statistics->plugin_url . "assets/css/jquery-ui-smoothness' . WP_STATISTICS_MIN_EXT . '.css"); + wp_enqueue_style("jquery-ui-smoothness-css"); + + $current = 0; + + $statsdate = $WP_Statistics->Current_Date('m/d/Y', '-' . $current); + + if( array_key_exists( 'statsdate', $_GET ) ) { $statsdate = $_GET['statsdate']; } + + echo '<br><form method="get">' . "\r\n"; + + echo ' ' . __('Date', 'wp_statistics' ) . ': '; + + echo '<input type="hidden" name="page" value="' . WP_STATISTICS_TOP_VISITORS_PAGE . '">' . "\r\n"; + echo '<input type="text" size="10" name="statsdate" id="statsdate" value="' . htmlentities( $statsdate, ENT_QUOTES ) . '" placeholder="' . __('MM/DD/YYYY', 'wp_statistics') .'"> <input type="submit" value="'.__('Go', 'wp_statistics').'" class="button-primary">' . "\r\n"; + + echo '</form>' . "\r\n"; + + echo '<script>jQuery(function() { jQuery( "#statsdate" ).datepicker(); } );</script>' . "\r\n"; + +?> + <div class="postbox-container" id="last-log" style="width: 100%;"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <div class="handlediv" title="<?php _e('Click to toggle', 'wp_statistics'); ?>"><br /></div> + <h3 class="hndle"><span><?php _e('Top Visitors', 'wp_statistics'); ?></span></h3> + <div class="inside"> + + <?php wp_statistics_generate_top_visitors_postbox_content($ISOCountryCode, $statsdate, 100, false); ?> + + </div> + </div> + </div> + </div> + </div> +</div> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/log/widgets/about.php b/plugins/wp-statistics/includes/log/widgets/about.php new file mode 100644 index 0000000..9a6378d --- /dev/null +++ b/plugins/wp-statistics/includes/log/widgets/about.php @@ -0,0 +1,29 @@ +<?php + function wp_statistics_generate_about_postbox_content() { + + global $wpdb, $WP_Statistics; +?> + <div style="text-align: center;"> + <a href="http://wp-statistics.com" target="_blank"><img src="<?php echo plugins_url('wp-statistics/assets/images/logo-250.png'); ?>"></a> + </div> + + <div id="about-links" style="text-align: center;"> + <p><a href="http://wp-statistics.com" target="_blank"><?php _e('Website', 'wp_statistics'); ?></a></p> + | <p><a href="http://wordpress.org/support/view/plugin-reviews/wp-statistics" target="_blank"><?php _e('Rate and Review', 'wp_statistics'); ?></a></p> +<?php + if(current_user_can(wp_statistics_validate_capability($WP_Statistics->get_option('manage_capability', 'manage_options')))) { +?> + | <p><a href="?page=<?php echo WP_STATISTICS_SETTINGS_PAGE; ?>&tab=about"><?php _e('More Information', 'wp_statistics'); ?></a></p> +<?php + } +?> + </div> + + <hr /> + + <div> + <?php echo sprintf(__('This product includes GeoLite2 data created by MaxMind, available from %s.', 'wp_statistics'), '<a href="http://www.maxmind.com" target=_blank>http://www.maxmind.com</a>'); ?> + </div> +<?php + } + diff --git a/plugins/wp-statistics/includes/log/widgets/browsers.php b/plugins/wp-statistics/includes/log/widgets/browsers.php new file mode 100644 index 0000000..05f2c4b --- /dev/null +++ b/plugins/wp-statistics/includes/log/widgets/browsers.php @@ -0,0 +1,88 @@ +<?php + function wp_statistics_generate_browsers_postbox_content() { + + global $wpdb, $WP_Statistics; +?> + <script type="text/javascript"> + jQuery(function () { + var browser_chart; + jQuery(document).ready(function() { +<?php + $Browsers = wp_statistics_ua_list(); + $BrowserVisits = array(); + $total = 0; + + foreach( $Browsers as $Browser ) { + $BrowserVisits[$Browser] = wp_statistics_useragent( $Browser ); + $total += $BrowserVisits[$Browser]; + } + + arsort( $BrowserVisits ); + + echo "var browser_data = ["; + $count = 0; + $topten = 0; + + foreach( $BrowserVisits as $key => $value ) { + echo "['" . substr( $key, 0, 15 ) . " (" . number_format_i18n($value) . ")'," . $value . "], "; + + $topten += $value; + $count++; + if( $count > 9 ) { break; } + } + + echo "['" . json_encode(__('Other', 'wp_statistics')) . " (" . number_format_i18n($total - $topten) . ")'," . ( $total - $topten ) . "], "; + + echo "];\n"; +?> + + browser_chart = jQuery.jqplot('browsers-log', [browser_data], { + title: { + text: '<b>' + <?php echo json_encode(__('Top 10 Browsers', 'wp_statistics')); ?> + '</b>', + fontSize: '12px', + fontFamily: 'Tahoma', + textColor: '#000000', + }, + seriesDefaults: { + // Make this a pie chart. + renderer: jQuery.jqplot.PieRenderer, + rendererOptions: { + // Put data labels on the pie slices. + // By default, labels show the percentage of the slice. + dataLabels: 'percent', + showDataLabels: true, + shadowOffset: 0, + } + }, + legend: { + show: true, + location: 's', + renderer: jQuery.jqplot.EnhancedPieLegendRenderer, + rendererOptions: + { + numberColumns: 2, + disableIEFading: false, + border: 'none', + }, + }, + grid: { background: 'transparent', borderWidth: 0, shadow: false }, + highlighter: { + show: true, + formatString:'%s', + tooltipLocation:'n', + useAxesFormatters:false, + }, + } ); + }); + + jQuery(window).resize(function() { + browser_chart.replot( {resetAxes: true } ); + }); + }); + + </script> + + <div id="browsers-log" style="height: <?php $height = ( count($Browsers) / 2 * 27 ) + 300; if( $height > 462 ) { $height = 462; } echo $height; ?>px;"></div> +<?php + } + diff --git a/plugins/wp-statistics/includes/log/widgets/countries.php b/plugins/wp-statistics/includes/log/widgets/countries.php new file mode 100644 index 0000000..45887ef --- /dev/null +++ b/plugins/wp-statistics/includes/log/widgets/countries.php @@ -0,0 +1,46 @@ +<?php + function wp_statistics_generate_countries_postbox_content($ISOCountryCode, $count = 10) { + + global $wpdb, $WP_Statistics; + +?> + <table width="100%" class="widefat table-stats" id="last-referrer"> + <tr> + <td width="10%" style='text-align: left'><?php _e('Rank', 'wp_statistics'); ?></td> + <td width="10%" style='text-align: left'><?php _e('Flag', 'wp_statistics'); ?></td> + <td width="40%" style='text-align: left'><?php _e('Country', 'wp_statistics'); ?></td> + <td width="40%" style='text-align: left'><?php _e('Visitor Count', 'wp_statistics'); ?></td> + </tr> + + <?php + $Countries = array(); + + $result = $wpdb->get_results("SELECT DISTINCT `location` FROM `{$wpdb->prefix}statistics_visitor`"); + + foreach( $result as $item ) + { + $Countries[$item->location] = $wpdb->get_var( $wpdb->prepare( "SELECT count(location) FROM `{$wpdb->prefix}statistics_visitor` WHERE location=%s", $item->location ) ); + } + + arsort($Countries); + $i = 0; + + foreach( $Countries as $item => $value) { + $i++; + + $item = strtoupper($item); + + echo "<tr>"; + echo "<td style='text-align: left'>$i</td>"; + echo "<td style='text-align: left'><img src='".plugins_url('wp-statistics/assets/images/flags/' . $item . '.png')."' title='{$ISOCountryCode[$item]}'/></td>"; + echo "<td style='text-align: left'>{$ISOCountryCode[$item]}</td>"; + echo "<td style='text-align: left'>" . number_format_i18n($value) . "</td>"; + echo "</tr>"; + + if( $i == $count ) { break; } + } + ?> + </table> +<?php + } + diff --git a/plugins/wp-statistics/includes/log/widgets/hits.php b/plugins/wp-statistics/includes/log/widgets/hits.php new file mode 100644 index 0000000..7d8d62a --- /dev/null +++ b/plugins/wp-statistics/includes/log/widgets/hits.php @@ -0,0 +1,129 @@ +<?php + function wp_statistics_generate_hits_postbox_content($size="300px", $days=20) { + + global $wpdb, $WP_Statistics; +?> + <script type="text/javascript"> + var visit_chart; + jQuery(document).ready(function() { +<?php + $data_lines = array(); + + if( $WP_Statistics->get_option( 'visits' ) ) { + echo "var visit_data_line = ["; + + for( $i=$days; $i>=0; $i--) { + $stat = wp_statistics_visit('-'.$i, true); + + echo "['" . $WP_Statistics->Current_Date('Y-m-d', '-'.$i) . "'," . $stat . "], "; + + } + + echo "];\n"; + + $data_lines[] = 'visit_data_line'; + } + + if( $WP_Statistics->get_option( 'visitors' ) ) { + echo "var visitor_data_line = ["; + + for( $i=$days; $i>=0; $i--) { + $stat = wp_statistics_visitor('-'.$i, true); + + echo "['" . $WP_Statistics->Current_Date('Y-m-d', '-'.$i) . "'," . $stat . "], "; + + } + + echo "];\n"; + + $data_lines[] = 'visitor_data_line'; + } +?> + visit_chart = jQuery.jqplot('visits-stats', [<?php echo implode( ',', $data_lines); ?>], { + title: { + text: '<b>' + <?php echo json_encode(__('Hits in the last', 'wp_statistics') . ' ' . $days . ' ' . __('days', 'wp_statistics')); ?> + '</b>', + fontSize: '12px', + fontFamily: 'Tahoma', + textColor: '#000000', + }, + axes: { + xaxis: { + min: '<?php echo $WP_Statistics->Current_Date('Y-m-d', '-' . $days);?>', + max: '<?php echo $WP_Statistics->Current_Date('Y-m-d', '');?>', + tickInterval: '1 day', + renderer:jQuery.jqplot.DateAxisRenderer, + tickRenderer: jQuery.jqplot.CanvasAxisTickRenderer, + tickOptions: { + angle: -45, + formatString:'%b %#d', + showGridline: false, + }, + }, + yaxis: { + min: 0, + padMin: 1.0, + label: <?php echo json_encode(__('Number of visits and visitors', 'wp_statistics')); ?>, + labelRenderer: jQuery.jqplot.CanvasAxisLabelRenderer, + labelOptions: { + angle: -90, + fontSize: '12px', + fontFamily: 'Tahoma', + fontWeight: 'bold', + }, + } + }, + legend: { + show: true, + location: 's', + placement: 'outsideGrid', + labels: [<?php echo implode( ',', array( json_encode( __( 'Visit', 'wp_statistics' ) ), json_encode( __('Visitor', 'wp_statistics') ) ) ); ?>], + renderer: jQuery.jqplot.EnhancedLegendRenderer, + rendererOptions: + { + numberColumns: 2, + disableIEFading: false, + border: 'none', + }, + }, + highlighter: { + show: true, + bringSeriesToFront: true, + tooltipAxes: 'xy', + formatString: '%s: <b>%i</b> ', + tooltipContentEditor: tooltipContentEditor, + }, + grid: { + drawGridlines: true, + borderColor: 'transparent', + shadow: false, + drawBorder: false, + shadowColor: 'transparent' + }, + } ); + + function tooltipContentEditor(str, seriesIndex, pointIndex, plot) { + // display series_label, x-axis_tick, y-axis value + return plot.legend.labels[seriesIndex] + ", " + str;; + } + + jQuery(window).resize(function() { + JQPlotVisitChartLengendClickRedraw() + }); + + function JQPlotVisitChartLengendClickRedraw() { + visit_chart.replot( {resetAxes: ['yaxis'] } ); + jQuery('div[id="visits-stats"] .jqplot-table-legend').click(function() { + JQPlotVisitChartLengendClickRedraw(); + }); + } + + jQuery('div[id="visits-stats"] .jqplot-table-legend').click(function() { + JQPlotVisitChartLengendClickRedraw() + }); + }); + </script> + + <div id="visits-stats" style="height:<?php echo $size; ?>;"></div> + +<?php + } diff --git a/plugins/wp-statistics/includes/log/widgets/jqv.map.php b/plugins/wp-statistics/includes/log/widgets/jqv.map.php new file mode 100644 index 0000000..04c8996 --- /dev/null +++ b/plugins/wp-statistics/includes/log/widgets/jqv.map.php @@ -0,0 +1,102 @@ +<?php + function wp_statistics_generate_map_postbox_content($ISOCountryCode) { + + global $wpdb, $WP_Statistics; + + if($WP_Statistics->get_option('geoip') && !$WP_Statistics->get_option('disable_map') ) { ?> + <div id="map_canvas"></div> + + <?php $result = $wpdb->get_row("SELECT * FROM `{$wpdb->prefix}statistics_visitor` WHERE last_counter = '{$WP_Statistics->Current_Date('Y-m-d')}'"); ?> + <script type="text/javascript"> + var country_pin = Array(); + var country_color = Array(); + + jQuery(document).ready(function(){ + + <?php + $result = $wpdb->get_results("SELECT * FROM `{$wpdb->prefix}statistics_visitor` WHERE last_counter = '{$WP_Statistics->Current_Date('Y-m-d')}'"); + $final_result = array(); + $final_result['000'] = array(); + + if( $result ) { + foreach($result as $new_r) { + $new_r->location = strtolower( $new_r->location ); + + $final_result[$new_r->location][] = array + ( + 'location' => $new_r->location, + 'agent' => $new_r->agent, + 'ip' => $new_r->ip + ); + } + } + + $final_total = count( $result ) - count( $final_result['000'] ); + + unset($final_result['000']); + + $startColor = array(200, 238, 255); + $endColor = array(0, 100, 145); + + foreach($final_result as $items) { + + foreach($items as $markets) { + + if($markets['location'] == '000') continue; + + $flag = "<img src='".plugins_url('wp-statistics/assets/images/flags/' . strtoupper($markets['location']) . '.png')."' title='{$ISOCountryCode[strtoupper($markets['location'])]}' class='log-tools'/> {$ISOCountryCode[strtoupper($markets['location'])]}"; + + if( array_search( strtolower($markets['agent']), array( "chrome", "firefox", "msie", "opera", "safari" ) ) !== FALSE ){ + $agent = "<img src='".plugins_url('wp-statistics/assets/images/').$markets['agent'].".png' class='log-tools' title='{$markets['agent']}'/>"; + } else { + $agent = "<img src='".plugins_url('wp-statistics/assets/images/unknown.png')."' class='log-tools' title='{$markets['agent']}'/>"; + } + + if( substr( $markets['ip'], 0, 6 ) == '#hash#' ) { $markets['ip'] = __('#hash#', 'wp_statistics'); } + + $get_ipp[$markets['location']][] = "<p>{$agent} {$markets['ip']}</p>"; + } + + $market_total = count($get_ipp[$markets['location']]); + $last_five = ""; + + // Only show the last five visitors, more just makes the map a mess. + for( $i = $market_total; $i > $market_total - 6; $i-- ) { + if( array_key_exists( $i, $get_ipp[$markets['location']]) ) { + $last_five .= $get_ipp[$markets['location']][$i]; + } + } + + $summary = ' [' . $market_total . ']'; + + $color = sprintf( "#%02X%02X%02X", round($startColor[0] + ($endColor[0] - $startColor[0]) * $market_total / $final_total), round($startColor[1] + ($endColor[1] - $startColor[1]) * $market_total / $final_total), round($startColor[2] + ($endColor[2] - $startColor[2]) * $market_total / $final_total)); + ?> + country_pin['<?php echo $markets['location'];?>'] = "<div class='map-html-marker'><?php echo $flag . $summary . '<hr />' . $last_five; ?></div>"; + country_color['<?php echo $markets['location'];?>'] = "<?php echo $color;?>"; + <?php + } + ?> + var data_total = <?php echo $final_total;?>; + + jQuery('#map_canvas').vectorMap({ + map: 'world_en', + colors: country_color, + onLabelShow: function(element, label, code) + { + if( country_pin[code] !== undefined ) + { + label.html( country_pin[code] ); + } + else + { + label.html( label.html() + ' [0]<hr />'); + } + }, + }); + + + }); + </script> +<?php + } + } \ No newline at end of file diff --git a/plugins/wp-statistics/includes/log/widgets/page.php b/plugins/wp-statistics/includes/log/widgets/page.php new file mode 100644 index 0000000..10e1387 --- /dev/null +++ b/plugins/wp-statistics/includes/log/widgets/page.php @@ -0,0 +1,127 @@ +<?php + + function wp_statistics_generate_page_postbox_content($pageuri, $pageid, $days = 20, $chart_title = null, $rangestart = '', $rangeend = '' ) { + GLOBAL $WP_Statistics; + + if( ! $WP_Statistics->get_option('pages') ) { return; } + + if( $chart_title == null ) { $chart_title = __('Page Trending Stats', 'wp_statistics'); } + + if( $pageuri && !$pageid ) { $pageid = wp_statistics_uri_to_id( $pageuri ); } + + $post = get_post($pageid); + if( is_object($post) ) { $title = esc_html( $post->post_title ); } else { $title = ""; } + + $urlfields = "&page-id={$pageid}"; + if( $pageuri ) { $urlfields .= "&page-uri={$pageuri}"; } + + list( $daysToDisplay, $rangestart_utime, $rangeend_utime ) = wp_statistics_date_range_calculator( $days, $rangestart, $rangeend ); + $daysInThePast = round( ( time() - $rangeend_utime ) / 86400 , 0 ); + +?> + <script type="text/javascript"> + var pages_chart; + jQuery(document).ready( function() { +<?php + echo 'var page_data_line = ['; + + for( $i = $daysToDisplay; $i >= 0; $i-- ) { + $stat = wp_statistics_pages( '-' . ( $i + $daysInThePast ), $pageuri, $pageid ); + + echo "['" . $WP_Statistics->Real_Current_Date( 'Y-m-d', '-' . $i, $rangeend_utime ) . "'," . $stat . "], "; + } + + echo "];\n"; + + $tickInterval = $daysToDisplay / 20; + if( $tickInterval < 1 ) { $tickInterval = 1; } + +?> + pages_jqchart = jQuery.jqplot( 'page-stats', [page_data_line], { + title: { + text: '<b>' + <?php echo json_encode( __( $chart_title, 'wp_statistics' ) ); ?> + '</b>', + fontSize: '12px', + fontFamily: 'Tahoma', + textColor: '#000000', + }, + axes: { + xaxis: { + min: '<?php echo $WP_Statistics->Real_Current_Date( 'Y-m-d', '-' . $daysToDisplay, $rangeend_utime );?>', + max: '<?php echo $WP_Statistics->Real_Current_Date( 'Y-m-d', '-0', $rangeend_utime );?>', + tickInterval: '<?php echo $tickInterval; ?> day', + renderer:jQuery.jqplot.DateAxisRenderer, + tickRenderer: jQuery.jqplot.CanvasAxisTickRenderer, + tickOptions: { + angle: -45, + formatString:'%b %#d', + showGridline: false, + }, + }, + yaxis: { + min: 0, + padMin: 1.0, + label: <?php echo json_encode( __('Number of Hits', 'wp_statistics' ) ); ?>, + labelRenderer: jQuery.jqplot.CanvasAxisLabelRenderer, + labelOptions: { + angle: -90, + fontSize: '12px', + fontFamily: 'Tahoma', + fontWeight: 'bold', + }, + } + }, + legend: { + show: true, + location: 's', + placement: 'outsideGrid', + labels: [ '<?php echo (int) $pageid . ' - ' . $title; ?>' ], + renderer: jQuery.jqplot.EnhancedLegendRenderer, + rendererOptions: + { + numberColumns: 5, + disableIEFading: false, + border: 'none', + }, + }, + highlighter: { + show: true, + bringSeriesToFront: true, + tooltipAxes: 'xy', + formatString: '%s: <b>%i</b> ', + tooltipContentEditor: tooltipContentEditor, + }, + grid: { + drawGridlines: true, + borderColor: 'transparent', + shadow: false, + drawBorder: false, + shadowColor: 'transparent' + }, + } ); + + function tooltipContentEditor(str, seriesIndex, pointIndex, plot) { + // display series_label, x-axis_tick, y-axis value + return plot.legend.labels[seriesIndex] + ", " + str;; + } + + jQuery(window).resize(function() { + JQPlotPagesChartLengendClickRedraw() + }); + + function JQPlotPagesChartLengendClickRedraw() { + pages_jqchart.replot( {resetAxes: ['yaxis'] } ); + jQuery('div[id="page-stats"] .jqplot-table-legend').click( function() { + JQPlotPagesChartLengendClickRedraw(); + }); + } + + jQuery('div[id="page-stats"] .jqplot-table-legend').click( function() { + JQPlotPagesChartLengendClickRedraw() + }); + }); + </script> + + <div id="page-stats" style="height:500px;"></div> + +<?php + } \ No newline at end of file diff --git a/plugins/wp-statistics/includes/log/widgets/pages.php b/plugins/wp-statistics/includes/log/widgets/pages.php new file mode 100644 index 0000000..1578896 --- /dev/null +++ b/plugins/wp-statistics/includes/log/widgets/pages.php @@ -0,0 +1,24 @@ +<?php + function wp_statistics_generate_pages_postbox_content( $total, $uris ) { + + echo '<div class="log-latest">'; + + $i = 0; + $site_url = site_url(); + + foreach( $uris as $uri ) { + $i++; + echo '<div class="log-item">'; + + if( empty( $uri[3] ) ) { $uri[3] = '[' . __( 'No page title found', 'wp_statistics' ) . ']'; } + + echo "<div class=\"log-page-title\">{$i} - {$uri[3]}</div>"; + echo '<div class="right-div">' . __( 'Visits', 'wp_statistics' ) . ': <a href="?page=' . WP_STATISTICS_PAGES_PAGE . '&page-uri=' . $uri[0] . '">' . number_format_i18n( $uri[1] ) . '</a></div>'; + echo '<div><a href="' . $site_url . $uri[0] . '">' . htmlentities( urldecode( $uri[0] ), ENT_QUOTES ) . '</a></div>'; + echo '</div>'; + + if( $i > 9 ) { break; } + } + + echo '</div>'; + } diff --git a/plugins/wp-statistics/includes/log/widgets/quickstats.php b/plugins/wp-statistics/includes/log/widgets/quickstats.php new file mode 100644 index 0000000..66b77a5 --- /dev/null +++ b/plugins/wp-statistics/includes/log/widgets/quickstats.php @@ -0,0 +1,142 @@ +<?php + function wp_statistics_generate_quickstats_postbox_content($search_engines, $search = false, $time = false) { + + global $wpdb, $WP_Statistics; + + $show_visitors = $WP_Statistics->get_option('visitor'); +?> + <table width="100%" class="widefat table-stats" id="summary-stats"> + <tbody> +<?php if( $WP_Statistics->get_option('useronline') ) {?> + <tr> + <th><?php _e('User(s) Online', 'wp_statistics'); ?>:</th> + <th colspan="2" id="th-colspan"> + <span><a href="admin.php?page=<?php echo WP_STATISTICS_ONLINE_PAGE; ?>"><?php echo wp_statistics_useronline(); ?></a></span> + </th> + </tr> +<?php } + +if( $WP_Statistics->get_option('visitors') || $WP_Statistics->get_option('visits') ) { +?> + <tr> + <th width="60%"></th> + <th class="th-center"><?php if( $WP_Statistics->get_option('visitors') ) { _e('Visitor', 'wp_statistics'); } else { echo ''; }?></th> + <th class="th-center"><?php if( $WP_Statistics->get_option('visits') ) { _e('Visit', 'wp_statistics'); } else { echo ''; }?></th> + </tr> + + <tr> + <th><?php _e('Today', 'wp_statistics'); ?>:</th> + <th class="th-center"><?php if( $WP_Statistics->get_option('visitors') ) { echo '<a href="admin.php?page=' . WP_STATISTICS_VISITORS_PAGE . '&hitdays=1"><span>' . number_format_i18n(wp_statistics_visitor('today',null,true)) . '</span></a>'; } else { echo ''; }?></th> + <th class="th-center"><?php if( $WP_Statistics->get_option('visits') ) { echo '<a href="admin.php?page='. WP_STATISTICS_HITS_PAGE . '&hitdays=1"><span>' . number_format_i18n(wp_statistics_visit('today')) . '</span></a>'; } else { echo ''; }?></th> + </tr> + + <tr> + <th><?php _e('Yesterday', 'wp_statistics'); ?>:</th> + <th class="th-center"><?php if( $WP_Statistics->get_option('visitors') ) { echo '<a href="admin.php?page=' . WP_STATISTICS_VISITORS_PAGE . '&hitdays=1"><span>' . number_format_i18n(wp_statistics_visitor('yesterday',null,true)) . '</span></a>'; } else { echo ''; }?></th> + <th class="th-center"><?php if( $WP_Statistics->get_option('visits') ) { echo '<a href="admin.php?page=' . WP_STATISTICS_HITS_PAGE . '&hitdays=1"><span>' . number_format_i18n(wp_statistics_visit('yesterday')) . '</span></a>'; } else { echo ''; }?></th> + </tr> + + <tr> + <th><?php _e('Last 7 Days (Week)', 'wp_statistics'); ?>:</th> + <th class="th-center"><?php if( $WP_Statistics->get_option('visitors') ) { echo '<a href="admin.php?page=' . WP_STATISTICS_VISITORS_PAGE . '&hitdays=7"><span>' . number_format_i18n(wp_statistics_visitor('week',null,true)) . '</span></a>'; } else { echo ''; }?></th> + <th class="th-center"><?php if( $WP_Statistics->get_option('visits') ) { echo '<a href="admin.php?page=' . WP_STATISTICS_HITS_PAGE .'&hitdays=7"><span>' . number_format_i18n(wp_statistics_visit('week')) . '</span></a>'; } else { echo ''; }?></th> + </tr> + + <tr> + <th><?php _e('Last 30 Days (Month)', 'wp_statistics'); ?>:</th> + <th class="th-center"><?php if( $WP_Statistics->get_option('visitors') ) { echo '<a href="admin.php?page=' . WP_STATISTICS_VISITORS_PAGE . '&hitdays=30"><span>' . number_format_i18n(wp_statistics_visitor('month',null,true)) . '</span></a>'; } else { echo ''; }?></th> + <th class="th-center"><?php if( $WP_Statistics->get_option('visits') ) { echo '<a href="admin.php?page=' . WP_STATISTICS_HITS_PAGE . '&hitdays=30"><span>' . number_format_i18n(wp_statistics_visit('month')) . '</span></a>'; } else { echo ''; }?></th> + </tr> + + <tr> + <th><?php _e('Last 365 Days (Year)', 'wp_statistics'); ?>:</th> + <th class="th-center"><?php if( $WP_Statistics->get_option('visitors') ) { echo '<a href="admin.php?page=' . WP_STATISTICS_VISITORS_PAGE . '&hitdays=365"><span>' . number_format_i18n(wp_statistics_visitor('year',null,true)) . '</span></a>'; } else { echo ''; }?></th> + <th class="th-center"><?php if( $WP_Statistics->get_option('visits') ) { echo '<a href="admin.php?page=' . WP_STATISTICS_HITS_PAGE . '&hitdays=365"><span>' . number_format_i18n(wp_statistics_visit('year')) . '</span></a>'; } else { echo ''; }?></th> + </tr> + + <tr> + <th><?php _e('Total', 'wp_statistics'); ?>:</th> + <th class="th-center"><?php if( $WP_Statistics->get_option('visitors') ) { echo '<a href="admin.php?page=' . WP_STATISTICS_VISITORS_PAGE . '&hitdays=365"><span>' . number_format_i18n(wp_statistics_visitor('total',null,true)) . '</span></a>'; } else { echo ''; }?></th> + <th class="th-center"><?php if( $WP_Statistics->get_option('visits') ) { echo '<a href="admin.php?page=' . WP_STATISTICS_HITS_PAGE . '&hitdays=365"><span>' . number_format_i18n(wp_statistics_visit('total')) . '</span></a>'; } else { echo ''; }?></th> + </tr> + +<?php + } + +if( $search == true && $WP_Statistics->get_option('visitors' )) { + + if( $WP_Statistics->get_option('visitors') || $WP_Statistics->get_option('visits') || $WP_Statistics->get_option('useronline') ) { +?> + <tr> + <th colspan="3"><br><hr></th> + </tr> +<?php }?> + <tr> + <th colspan="3" style="text-align: center;"><?php _e('Search Engine Referrals', 'wp_statistics'); ?></th> + </tr> + + <tr> + <th width="60%"></th> + <th class="th-center"><?php _e('Today', 'wp_statistics'); ?></th> + <th class="th-center"><?php _e('Yesterday', 'wp_statistics'); ?></th> + </tr> + + <?php + $se_today_total = 0; + $se_yesterday_total = 0; + foreach( $search_engines as $se ) { + ?> + <tr> + <th><img src='<?php echo plugins_url('wp-statistics/assets/images/' . $se['image'] );?>'> <?php _e($se['name'], 'wp_statistics'); ?>:</th> + <th class="th-center"><span><?php $se_temp = wp_statistics_searchengine($se['tag'], 'today'); $se_today_total += $se_temp; echo number_format_i18n($se_temp);?></span></th> + <th class="th-center"><span><?php $se_temp = wp_statistics_searchengine($se['tag'], 'yesterday'); $se_yesterday_total += $se_temp; echo number_format_i18n($se_temp);?></span></th> + </tr> + + <?php + } + ?> + <tr> + <th><?php _e('Daily Total', 'wp_statistics'); ?>:</th> + <td id="th-colspan" class="th-center"><span><?php echo number_format_i18n($se_today_total); ?></span></td> + <td id="th-colspan" class="th-center"><span><?php echo number_format_i18n($se_yesterday_total); ?></span></td> + </tr> + + <tr> + <th><?php _e('Total', 'wp_statistics'); ?>:</th> + <th colspan="2" id="th-colspan"><span><?php echo number_format_i18n(wp_statistics_searchengine('all')); ?></span></th> + </tr> +<?php + } + +if( $time == true ) { +?> + <tr> + <th colspan="3"><br><hr></th> + </tr> + + <tr> + <th colspan="3" style="text-align: center;"><?php _e('Current Time and Date', 'wp_statistics'); ?> <span id="time_zone"><a href="<?php echo admin_url('options-general.php'); ?>"><?php _e('(Adjustment)', 'wp_statistics'); ?></a></span></th> + </tr> + + <tr> + <th colspan="3"><?php echo sprintf(__('Date: %s', 'wp_statistics'), '<code dir="ltr">' . $WP_Statistics->Current_Date_i18n(get_option('date_format')) . '</code>'); ?></th> + </tr> + + <tr> + <th colspan="3"><?php echo sprintf(__('Time: %s', 'wp_statistics'), '<code dir="ltr">' .$WP_Statistics->Current_Date_i18n(get_option('time_format')) . '</code>'); ?></th> + </tr> +<?php }?> + </tbody> + </table> + + <br> + <hr width="80%"/> + <br> +<?php + + // Include the hits chart widget, we're going to display the last 10 days only as the WordPress columns are kind of small to do much else. + include_once( dirname( __FILE__ ) . "/hits.php"); + + wp_statistics_generate_hits_postbox_content("300px", 10); + } + diff --git a/plugins/wp-statistics/includes/log/widgets/recent.php b/plugins/wp-statistics/includes/log/widgets/recent.php new file mode 100644 index 0000000..0c5ac22 --- /dev/null +++ b/plugins/wp-statistics/includes/log/widgets/recent.php @@ -0,0 +1,46 @@ +<?php + function wp_statistics_generate_recent_postbox_content($ISOCountryCode, $count = 10) { + + global $wpdb, $WP_Statistics; + + $result = $wpdb->get_results("SELECT * FROM `{$wpdb->prefix}statistics_visitor` ORDER BY `{$wpdb->prefix}statistics_visitor`.`ID` DESC LIMIT 0, {$count}"); + + echo "<div class='log-latest'>"; + + $dash_icon = wp_statistics_icons('dashicons-visibility', 'visibility'); + + foreach($result as $items) { + if( substr( $items->ip, 0, 6 ) == '#hash#' ) { + $ip_string = __('#hash#', 'wp_statistics'); + $map_string = ""; + } + else { + $ip_string = "<a href='?page=" . WP_STATISTICS_VISITORS_PAGE . "&type=last-all-visitor&ip={$items->ip}'>{$dash_icon}{$items->ip}</a>"; + $map_string = "<a class='show-map' href='http://www.geoiptool.com/en/?IP={$items->ip}' target='_blank' title='".__('Map', 'wp_statistics')."'>".wp_statistics_icons('dashicons-location-alt', 'map')."</a>"; + } + + echo "<div class='log-item'>"; + echo "<div class='log-referred'>{$ip_string}</div>"; + echo "<div class='log-ip'>" . date(get_option('date_format'), strtotime($items->last_counter)) . "</div>"; + echo "<div class='clear'></div>"; + echo "<div class='log-url'>"; + echo $map_string; + + if($WP_Statistics->get_option('geoip')) { + echo "<img src='".plugins_url('wp-statistics/assets/images/flags/' . $items->location . '.png')."' title='{$ISOCountryCode[$items->location]}' class='log-tools'/>"; + } + + if( array_search( strtolower( $items->agent ), array( "chrome", "firefox", "msie", "opera", "safari" ) ) !== FALSE ){ + $agent = "<img src='".plugins_url('wp-statistics/assets/images/').$items->agent.".png' class='log-tools' title='{$items->agent}'/>"; + } else { + $agent = wp_statistics_icons('dashicons-editor-help', 'unknown'); + } + + echo "<a href='?page=" . WP_STATISTICS_OVERVIEW_PAGE . "&type=last-all-visitor&agent={$items->agent}'>{$agent}</a>"; + + echo "<a href='" . htmlentities($items->referred,ENT_QUOTES) . "' title='" . htmlentities($items->referred,ENT_QUOTES) . "'>".wp_statistics_icons('dashicons-admin-links', 'link') . " " . htmlentities($items->referred,ENT_QUOTES) . "</a></div>"; + echo "</div>"; + } + + echo "</div>"; + } diff --git a/plugins/wp-statistics/includes/log/widgets/referring.php b/plugins/wp-statistics/includes/log/widgets/referring.php new file mode 100644 index 0000000..e844af1 --- /dev/null +++ b/plugins/wp-statistics/includes/log/widgets/referring.php @@ -0,0 +1,51 @@ +<?php + function wp_statistics_generate_referring_postbox_content($count = 10) { + + global $wpdb, $WP_Statistics; + + $get_urls = array(); + $urls = array(); + $start = 0; + + do { + $result = $wpdb->get_results( "SELECT referred FROM {$wpdb->prefix}statistics_visitor WHERE referred <> '' LIMIT {$start}, 10000" ); + + $start += count( $result ); + + foreach( $result as $item ) { + + $url = parse_url($item->referred); + + if( empty($url['host']) || stristr(get_bloginfo('url'), $url['host']) ) + continue; + + $urls[] = $url['host']; + } + + } while( 10000 == count( $result ) ); + + $get_urls = array_count_values($urls); + + arsort( $get_urls ); + $get_urls = array_slice($get_urls, 0, $count); + +?> + <table width="100%" class="widefat table-stats" id="last-referrer"> + <tr> + <td width="10%"><?php _e('References', 'wp_statistics'); ?></td> + <td width="90%"><?php _e('Address', 'wp_statistics'); ?></td> + </tr> + + <?php + + foreach( $get_urls as $items => $value) { + + echo "<tr>"; + echo "<td><a href='?page=" . WP_STATISTICS_REFERRERS_PAGE . "&referr=" . htmlentities($items,ENT_QUOTES) . "'>" . number_format_i18n($value) . "</a></td>"; + echo "<td><a href='http://" . htmlentities($items,ENT_QUOTES) . "' target='_blank'>" . htmlentities($items,ENT_QUOTES) . " " . wp_statistics_icons('dashicons-admin-links', 'link') . "</a></td>"; + echo "</tr>"; + } + ?> + </table> +<?php + } \ No newline at end of file diff --git a/plugins/wp-statistics/includes/log/widgets/search.php b/plugins/wp-statistics/includes/log/widgets/search.php new file mode 100644 index 0000000..db75491 --- /dev/null +++ b/plugins/wp-statistics/includes/log/widgets/search.php @@ -0,0 +1,130 @@ +<?php + function wp_statistics_generate_search_postbox_content($search_engines, $size = "300px", $days = 20) { + + global $wpdb, $WP_Statistics; +?> + <script type="text/javascript"> + var referral_chart; + jQuery(document).ready(function() { +<?php + $total_stats = $WP_Statistics->get_option( 'chart_totals' ); + $total_daily = array(); + + foreach( $search_engines as $se ) { + + echo "var searches_data_line_" . $se['tag'] . " = ["; + + for( $i=$days; $i>=0; $i--) { + if( !array_key_exists( $i, $total_daily ) ) { $total_daily[$i] = 0; } + $stat = wp_statistics_searchengine($se['tag'], '-'.$i); + $total_daily[$i] += $stat; + + echo "['" . $WP_Statistics->Current_Date('Y-m-d', '-'.$i) . "'," . $stat . "], "; + + } + + echo "];\n"; + } + + if( $total_stats == 1 ) { + echo "var searches_data_line_total = ["; + + for( $i=$days; $i>=0; $i--) { + echo "['" . $WP_Statistics->Current_Date('Y-m-d', '-'.$i) . "'," . $total_daily[$i] . "], "; + } + + echo "];\n"; + } + +?> + referral_chart = jQuery.jqplot('search-stats', [<?php foreach( $search_engines as $se ) { echo "searches_data_line_" . $se['tag'] . ", "; } if( $total_stats == 1 ) { echo 'searches_data_line_total'; }?>], { + title: { + text: '<b>' + <?php echo json_encode(__('Search engine referrals in the last', 'wp_statistics') . ' ' . $days . ' ' . __('days', 'wp_statistics')); ?> + '</b>', + fontSize: '12px', + fontFamily: 'Tahoma', + textColor: '#000000', + }, + axes: { + xaxis: { + min: '<?php echo $WP_Statistics->Current_Date('Y-m-d', '-' . $days);?>', + max: '<?php echo $WP_Statistics->Current_Date('Y-m-d', '');?>', + tickInterval: '1 day', + renderer:jQuery.jqplot.DateAxisRenderer, + tickRenderer: jQuery.jqplot.CanvasAxisTickRenderer, + tickOptions: { + angle: -45, + formatString:'%b %#d', + showGridline: false, + }, + }, + yaxis: { + min: 0, + padMin: 1.0, + label: <?php echo json_encode(__('Number of referrals', 'wp_statistics')); ?>, + labelRenderer: jQuery.jqplot.CanvasAxisLabelRenderer, + labelOptions: { + angle: -90, + fontSize: '12px', + fontFamily: 'Tahoma', + fontWeight: 'bold', + }, + } + }, + legend: { + show: true, + location: 's', + placement: 'outsideGrid', + labels: [<?php foreach( $search_engines as $se ) { echo json_encode($se['translated']) . ", "; } if( $total_stats == 1 ) { echo "'" . json_encode(__('Total', 'wp_statistics')) . "'"; }?>], + renderer: jQuery.jqplot.EnhancedLegendRenderer, + rendererOptions: + { + numberColumns: <?php echo count( $search_engines ) + 1;?>, + disableIEFading: false, + border: 'none', + }, + }, + highlighter: { + show: true, + bringSeriesToFront: true, + tooltipAxes: 'xy', + formatString: '%s: <b>%i</b> ', + tooltipContentEditor: tooltipContentEditor, + }, + grid: { + drawGridlines: true, + borderColor: 'transparent', + shadow: false, + drawBorder: false, + shadowColor: 'transparent' + }, + } ); + + function tooltipContentEditor(str, seriesIndex, pointIndex, plot) { + // display series_label, x-axis_tick, y-axis value + return plot.legend.labels[seriesIndex] + ", " + str;; + } + + jQuery(window).resize(function() { + JQPlotReferralChartLengendClickRedraw() + }); + + function JQPlotReferralChartLengendClickRedraw() { + referral_chart.replot( {resetAxes: ['yaxis'] } ); + jQuery('div[id="search-stats"] .jqplot-table-legend').click(function() { + JQPlotReferralChartLengendClickRedraw(); + }); + } + + jQuery('div[id="search-stats"] .jqplot-table-legend').click(function() { + JQPlotReferralChartLengendClickRedraw() + }); + + }); + + </script> + + <div id="search-stats" style="height:<?php echo $size; ?>;"></div> + +<?php + } + diff --git a/plugins/wp-statistics/includes/log/widgets/summary.php b/plugins/wp-statistics/includes/log/widgets/summary.php new file mode 100644 index 0000000..fc9c4d4 --- /dev/null +++ b/plugins/wp-statistics/includes/log/widgets/summary.php @@ -0,0 +1,133 @@ +<?php + function wp_statistics_generate_summary_postbox_content($search_engines, $search = true, $time = true) { + + global $wpdb, $WP_Statistics; + + $show_visitors = $WP_Statistics->get_option('visitor'); +?> + <table width="100%" class="widefat table-stats" id="summary-stats"> + <tbody> +<?php if( $WP_Statistics->get_option('useronline') ) {?> + <tr> + <th><?php _e('Users Online', 'wp_statistics'); ?>:</th> + <th colspan="2" id="th-colspan"> + <span><a href="admin.php?page=<?php echo WP_STATISTICS_ONLINE_PAGE; ?>"><?php echo wp_statistics_useronline(); ?></a></span> + </th> + </tr> +<?php } + +if( $WP_Statistics->get_option('visitors') || $WP_Statistics->get_option('visits') ) { +?> + <tr> + <th width="60%"></th> + <th class="th-center"><?php if( $WP_Statistics->get_option('visitors') ) { _e('Visitor', 'wp_statistics'); } else { echo ''; }?></th> + <th class="th-center"><?php if( $WP_Statistics->get_option('visits') ) { _e('Visit', 'wp_statistics'); } else { echo ''; }?></th> + </tr> + + <tr> + <th><?php _e('Today', 'wp_statistics'); ?>:</th> + <th class="th-center"><?php if( $WP_Statistics->get_option('visitors') ) { echo '<a href="admin.php?page=' . WP_STATISTICS_VISITORS_PAGE . '&hitdays=1"><span>' . number_format_i18n(wp_statistics_visitor('today',null,true)) . '</span></a>'; } else { echo ''; }?></th> + <th class="th-center"><?php if( $WP_Statistics->get_option('visits') ) { echo '<a href="admin.php?page='. WP_STATISTICS_HITS_PAGE . '&hitdays=1"><span>' . number_format_i18n(wp_statistics_visit('today')) . '</span></a>'; } else { echo ''; }?></th> + </tr> + + <tr> + <th><?php _e('Yesterday', 'wp_statistics'); ?>:</th> + <th class="th-center"><?php if( $WP_Statistics->get_option('visitors') ) { echo '<a href="admin.php?page=' . WP_STATISTICS_VISITORS_PAGE . '&hitdays=1"><span>' . number_format_i18n(wp_statistics_visitor('yesterday',null,true)) . '</span></a>'; } else { echo ''; }?></th> + <th class="th-center"><?php if( $WP_Statistics->get_option('visits') ) { echo '<a href="admin.php?page=' . WP_STATISTICS_HITS_PAGE . '&hitdays=1"><span>' . number_format_i18n(wp_statistics_visit('yesterday')) . '</span></a>'; } else { echo ''; }?></th> + </tr> + + <tr> + <th><?php _e('Last 7 Days', 'wp_statistics'); ?>:</th> + <th class="th-center"><?php if( $WP_Statistics->get_option('visitors') ) { echo '<a href="admin.php?page=' . WP_STATISTICS_VISITORS_PAGE . '&hitdays=7"><span>' . number_format_i18n(wp_statistics_visitor('week',null,true)) . '</span></a>'; } else { echo ''; }?></th> + <th class="th-center"><?php if( $WP_Statistics->get_option('visits') ) { echo '<a href="admin.php?page=' . WP_STATISTICS_HITS_PAGE .'&hitdays=7"><span>' . number_format_i18n(wp_statistics_visit('week')) . '</span></a>'; } else { echo ''; }?></th> + </tr> + + <tr> + <th><?php _e('Last 30 Days', 'wp_statistics'); ?>:</th> + <th class="th-center"><?php if( $WP_Statistics->get_option('visitors') ) { echo '<a href="admin.php?page=' . WP_STATISTICS_VISITORS_PAGE . '&hitdays=30"><span>' . number_format_i18n(wp_statistics_visitor('month',null,true)) . '</span></a>'; } else { echo ''; }?></th> + <th class="th-center"><?php if( $WP_Statistics->get_option('visits') ) { echo '<a href="admin.php?page=' . WP_STATISTICS_HITS_PAGE . '&hitdays=30"><span>' . number_format_i18n(wp_statistics_visit('month')) . '</span></a>'; } else { echo ''; }?></th> + </tr> + + <tr> + <th><?php _e('Last 365 Days', 'wp_statistics'); ?>:</th> + <th class="th-center"><?php if( $WP_Statistics->get_option('visitors') ) { echo '<a href="admin.php?page=' . WP_STATISTICS_VISITORS_PAGE . '&hitdays=365"><span>' . number_format_i18n(wp_statistics_visitor('year',null,true)) . '</span></a>'; } else { echo ''; }?></th> + <th class="th-center"><?php if( $WP_Statistics->get_option('visits') ) { echo '<a href="admin.php?page=' . WP_STATISTICS_HITS_PAGE . '&hitdays=365"><span>' . number_format_i18n(wp_statistics_visit('year')) . '</span></a>'; } else { echo ''; }?></th> + </tr> + + <tr> + <th><?php _e('Total', 'wp_statistics'); ?>:</th> + <th class="th-center"><?php if( $WP_Statistics->get_option('visitors') ) { echo '<a href="admin.php?page=' . WP_STATISTICS_VISITORS_PAGE . '&hitdays=365"><span>' . number_format_i18n(wp_statistics_visitor('total',null,true)) . '</span></a>'; } else { echo ''; }?></th> + <th class="th-center"><?php if( $WP_Statistics->get_option('visits') ) { echo '<a href="admin.php?page=' . WP_STATISTICS_HITS_PAGE . '&hitdays=365"><span>' . number_format_i18n(wp_statistics_visit('total')) . '</span></a>'; } else { echo ''; }?></th> + </tr> + +<?php + } + +if( $search == true && $WP_Statistics->get_option('visitors' )) { + + if( $WP_Statistics->get_option('visitors') || $WP_Statistics->get_option('visits') || $WP_Statistics->get_option('useronline') ) { +?> + <tr> + <th colspan="3"><br><hr></th> + </tr> +<?php }?> + <tr> + <th colspan="3" style="text-align: center;"><?php _e('Search Engine Referrals', 'wp_statistics'); ?></th> + </tr> + + <tr> + <th width="60%"></th> + <th class="th-center"><?php _e('Today', 'wp_statistics'); ?></th> + <th class="th-center"><?php _e('Yesterday', 'wp_statistics'); ?></th> + </tr> + + <?php + $se_today_total = 0; + $se_yesterday_total = 0; + foreach( $search_engines as $se ) { + ?> + <tr> + <th><img src='<?php echo plugins_url('wp-statistics/assets/images/' . $se['image'] );?>'> <?php _e($se['name'], 'wp_statistics'); ?>:</th> + <th class="th-center"><span><?php $se_temp = wp_statistics_searchengine($se['tag'], 'today'); $se_today_total += $se_temp; echo number_format_i18n($se_temp);?></span></th> + <th class="th-center"><span><?php $se_temp = wp_statistics_searchengine($se['tag'], 'yesterday'); $se_yesterday_total += $se_temp; echo number_format_i18n($se_temp);?></span></th> + </tr> + + <?php + } + ?> + <tr> + <th><?php _e('Daily Total', 'wp_statistics'); ?>:</th> + <td id="th-colspan" class="th-center"><span><?php echo number_format_i18n($se_today_total); ?></span></td> + <td id="th-colspan" class="th-center"><span><?php echo number_format_i18n($se_yesterday_total); ?></span></td> + </tr> + + <tr> + <th><?php _e('Total', 'wp_statistics'); ?>:</th> + <th colspan="2" id="th-colspan"><span><?php echo number_format_i18n(wp_statistics_searchengine('all')); ?></span></th> + </tr> +<?php + } + +if( $time == true ) { +?> + <tr> + <th colspan="3"><br><hr></th> + </tr> + + <tr> + <th colspan="3" style="text-align: center;"><?php _e('Current Time and Date', 'wp_statistics'); ?> <span id="time_zone"><a href="<?php echo admin_url('options-general.php'); ?>"><?php _e('(Adjustment)', 'wp_statistics'); ?></a></span></th> + </tr> + + <tr> + <th colspan="3"><?php echo sprintf(__('Date: %s', 'wp_statistics'), '<code dir="ltr">' . $WP_Statistics->Current_Date_i18n(get_option('date_format')) . '</code>'); ?></th> + </tr> + + <tr> + <th colspan="3"><?php echo sprintf(__('Time: %s', 'wp_statistics'), '<code dir="ltr">' .$WP_Statistics->Current_Date_i18n(get_option('time_format')) . '</code>'); ?></th> + </tr> +<?php }?> + </tbody> + </table> +<?php + } + diff --git a/plugins/wp-statistics/includes/log/widgets/top.visitors.php b/plugins/wp-statistics/includes/log/widgets/top.visitors.php new file mode 100644 index 0000000..ca15161 --- /dev/null +++ b/plugins/wp-statistics/includes/log/widgets/top.visitors.php @@ -0,0 +1,52 @@ +<?php + function wp_statistics_generate_top_visitors_postbox_content($ISOCountryCode, $day='today', $count=10, $compact=false) { + + global $wpdb, $WP_Statistics; + + if( $day == 'today' ) { $sql_time = $WP_Statistics->Current_Date('Y-m-d'); } else { $sql_time = date( 'Y-m-d', strtotime( $day ) ); } + +?> + <table width="100%" class="widefat table-stats" id="last-referrer"> + <tr> + <td style='text-align: left'><?php _e('Rank', 'wp_statistics'); ?></td> + <td style='text-align: left'><?php _e('Hits', 'wp_statistics'); ?></td> + <td style='text-align: left'><?php _e('Flag', 'wp_statistics'); ?></td> + <td style='text-align: left'><?php _e('Country', 'wp_statistics'); ?></td> + <td style='text-align: left'><?php _e('IP', 'wp_statistics'); ?></td> +<?php if( $compact == false ) { ?> + <td style='text-align: left'><?php _e('Agent', 'wp_statistics'); ?></td> + <td style='text-align: left'><?php _e('Platform', 'wp_statistics'); ?></td> + <td style='text-align: left'><?php _e('Version', 'wp_statistics'); ?></td> +<?php } ?> + </tr> + + <?php + $result = $wpdb->get_results("SELECT * FROM `{$wpdb->prefix}statistics_visitor` WHERE last_counter = '{$sql_time}' ORDER BY hits DESC"); + + $i = 0; + + foreach( $result as $visitor) { + $i++; + + $item = strtoupper($visitor->location); + + echo "<tr>"; + echo "<td style='text-align: left'>$i</td>"; + echo "<td style='text-align: left'>" . (int)$visitor->hits . "</td>"; + echo "<td style='text-align: left'><img src='".plugins_url('wp-statistics/assets/images/flags/' . $item . '.png')."' title='{$ISOCountryCode[$item]}'/></td>"; + echo "<td style='text-align: left'>{$ISOCountryCode[$item]}</td>"; + echo "<td style='text-align: left'>{$visitor->ip}</td>"; + + if( $compact == false ) { + echo "<td style='text-align: left'>{$visitor->agent}</td>"; + echo "<td style='text-align: left'>{$visitor->platform}</td>"; + echo "<td style='text-align: left'>{$visitor->version}</td>"; + } + echo "</tr>"; + + if( $i == $count ) { break; } + } + ?> + </table> +<?php + } diff --git a/plugins/wp-statistics/includes/log/widgets/words.php b/plugins/wp-statistics/includes/log/widgets/words.php new file mode 100644 index 0000000..f557b9c --- /dev/null +++ b/plugins/wp-statistics/includes/log/widgets/words.php @@ -0,0 +1,66 @@ +<?php + function wp_statistics_generate_words_postbox_content($ISOCountryCode, $count = 10) { + + global $wpdb, $WP_Statistics; + + // Retrieve MySQL data for the search words. + $search_query = wp_statistics_searchword_query('all'); + + // Determine if we're using the old or new method of storing search engine info and build the appropriate table name. + $tablename = $wpdb->prefix . 'statistics_'; + + if( $WP_Statistics->get_option('search_converted') ) { + $tabletwo = $tablename . 'visitor'; + $tablename .= 'search'; + $result = $wpdb->get_results("SELECT * FROM `{$tablename}` INNER JOIN `{$tabletwo}` on {$tablename}.`visitor` = {$tabletwo}.`ID` WHERE {$search_query} ORDER BY `{$tablename}`.`ID` DESC LIMIT 0, {$count}"); + } else { + $tablename .= 'visitor'; + $result = $wpdb->get_results("SELECT * FROM `{$tablename}` WHERE {$search_query} ORDER BY `{$tablename}`.`ID` DESC LIMIT 0, {$count}"); + } + + if( sizeof($result) > 0 ) { + echo "<div class='log-latest'>"; + + foreach($result as $items) { + if( !$WP_Statistics->Search_Engine_QueryString($items->referred) ) continue; + + if( substr( $items->ip, 0, 6 ) == '#hash#' ) { $ip_string = __('#hash#', 'wp_statistics'); } else { $ip_string = "<a href='http://www.geoiptool.com/en/?IP={$items->ip}' target='_blank'>{$items->ip}</a>"; } + + if( $WP_Statistics->get_option('search_converted') ) { + $this_search_engine = $WP_Statistics->Search_Engine_Info_By_Engine($items->engine); + $words = $items->words; + } else { + $this_search_engine = $WP_Statistics->Search_Engine_Info($items->referred); + $words = $WP_Statistics->Search_Engine_QueryString($items->referred); + } + + echo "<div class='log-item'>"; + echo "<div class='log-referred'>".$words."</div>"; + echo "<div class='log-ip'>" . date(get_option('date_format'), strtotime($items->last_counter)) . " - {$ip_string}</div>"; + echo "<div class='clear'></div>"; + echo "<div class='log-url'>"; + echo "<a class='show-map' href='http://www.geoiptool.com/en/?IP={$items->ip}' target='_blank' title='".__('Map', 'wp_statistics')."'>".wp_statistics_icons('dashicons-location-alt', 'map')."</a>"; + + if($WP_Statistics->get_option('geoip')) { + echo "<img src='".plugins_url('wp-statistics/assets/images/flags/' . $items->location . '.png')."' title='{$ISOCountryCode[$items->location]}' class='log-tools'/>"; + } + + $this_search_engine = $WP_Statistics->Search_Engine_Info($items->referred); + echo "<a href='?page=" . WP_STATISTICS_OVERVIEW_PAGE . "&type=last-all-search&referred={$this_search_engine['tag']}'><img src='".plugins_url('wp-statistics/assets/images/' . $this_search_engine['image'])."' class='log-tools' title='".$this_search_engine['translated']."'/></a>"; + + if( array_search( strtolower( $items->agent ), array( "chrome", "firefox", "msie", "opera", "safari" ) ) !== FALSE ){ + $agent = "<img src='".plugins_url('wp-statistics/assets/images/').$items->agent.".png' class='log-tools' title='{$items->agent}'/>"; + } else { + $agent = wp_statistics_icons('dashicons-editor-help', 'unknown'); + } + + echo "<a href='?page=" . WP_STATISTICS_OVERVIEW_PAGE . "&type=last-all-visitor&agent={$items->agent}'>{$agent}</a>"; + + echo "<a href='" . htmlentities($items->referred,ENT_QUOTES) . "' title='" . htmlentities($items->referred,ENT_QUOTES) . "'>" . wp_statistics_icons('dashicons-admin-links', 'link') . " " . htmlentities($items->referred,ENT_QUOTES) . "</a></div>"; + echo "</div>"; + } + + echo "</div>"; + } + } + diff --git a/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-database.php b/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-database.php new file mode 100644 index 0000000..dfb04da --- /dev/null +++ b/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-database.php @@ -0,0 +1,124 @@ +<div class="wrap"> + <table class="form-table"> + <tbody> + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Database Setup', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="index-submit"><?php _e('Re-run Install', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="install-submit" class="button button-primary" type="button" value="<?php _e('Install Now!', 'wp_statistics'); ?>" name="install-submit" onclick="location.href=document.URL+'&install=1&tab=database'"> + <p class="description"><?php _e('If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Database Index', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="index-submit"><?php _e('Countries', 'wp_statistics'); ?>:</label> + </th> + + <td> +<?php + GLOBAL $wpdb, $WP_Statistics; + $wp_prefix = $wpdb->prefix; + + $dbupdates = $WP_Statistics->get_option('pending_db_updates'); + + // Check the number of index's on the visitors table, if it's only 5 we need to check for duplicate entries and remove them + $result = $wpdb->query("SHOW INDEX FROM {$wp_prefix}statistics_visitor WHERE Key_name = 'date_ip_agent'"); + + // Note, the result will be the number of fields contained in the index, so in our case 5. + if( $result != 5 ) { + $dbupdates['date_ip_agent'] = true; +?> + <input id="index-submit" class="button button-primary" type="button" value="<?php _e('Update Now!', 'wp_statistics'); ?>" name="index-submit" onclick="location.href=document.URL+'&index=1&tab=database'"> + <p class="description"><?php _e('Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking "Update Now" will scan the vistitors table, delete duplicate entries and add the index.', 'wp_statistics'); ?></p> + <p class="description"><?php _e('This operation could take a long time on installs with many rows in the visitors table.', 'wp_statistics'); ?></p> +<?php + } + else { + $dbupdates['date_ip_agent'] = false; +?> + <p class="description"><?php _e('Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table.', 'wp_statistics'); ?></p> + <p class="description"><?php _e('Congratulations, your installation is already up to date, nothing to do.', 'wp_statistics'); ?></p> +<?php + } +?> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="index-submit"><?php _e('Visits Table', 'wp_statistics'); ?>:</label> + </th> + <td> +<?php + GLOBAL $wpdb; + $wp_prefix = $wpdb->prefix; + + // Check the number of index's on the visits table, if it's only 5 we need to check for duplicate entries and remove them + $result = $wpdb->query("SHOW INDEX FROM {$wp_prefix}statistics_visit WHERE Key_name = 'unique_date'"); + + // Note, the result will be the number of fields contained in the index, so in our case 1. + if( $result != 1 ) { + $dbupdates['unique_date'] = true; +?> + <input id="visits-submit" class="button button-primary" type="button" value="<?php _e('Update Now!', 'wp_statistics'); ?>" name="visit-submit" onclick="location.href=document.URL+'&visits=1&tab=database'"> + <p class="description"><?php _e('Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking "Update Now" will scan the vistits table, delete duplicate entries and add the index.', 'wp_statistics'); ?></p> + <p class="description"><?php _e('This operation could take a long time on installs with many rows in the visits table.', 'wp_statistics'); ?></p> +<?php + } + else { + $dbupdates['unique_date'] = false; +?> + <p class="description"><?php _e('Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table.', 'wp_statistics'); ?></p> + <p class="description"><?php _e('Congratulations, your installation is already up to date, nothing to do.', 'wp_statistics'); ?></p> +<?php + } + + $WP_Statistics->update_option('pending_db_updates', $dbupdates); +?> + </td> + + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Search Table', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="index-submit"><?php _e('Convert', 'wp_statistics'); ?>:</label> + </th> + <td> +<?php + // Note, the result will be the number of fields contained in the index, so in our case 1. + if( $WP_Statistics->get_option('search_converted') != 1 ) { +?> + <input id="visits-submit" class="button button-primary" type="button" value="<?php _e('Convert Now!', 'wp_statistics'); ?>" name="search-submit" onclick="location.href=document.URL+'&search=1&tab=database'"> + <p class="description"><?php _e('Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used.', 'wp_statistics'); ?></p> + <p class="description"><?php _e('This operation could take a long time on installs with many rows in the visitors table.', 'wp_statistics'); ?></p> +<?php + } + else { +?> + <p class="description"><?php _e('Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion.', 'wp_statistics'); ?></p> + <p class="description"><?php _e('Congratulations, your installation is already up to date, nothing to do.', 'wp_statistics'); ?></p> +<?php + } +?> + </td> + + </tr> + + </tbody> + </table> +</div> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-export.php b/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-export.php new file mode 100644 index 0000000..c0b1739 --- /dev/null +++ b/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-export.php @@ -0,0 +1,61 @@ +<div class="wrap"> + + <form method="post"> + <input type="hidden" name="wps_export" value="true"> + <table class="form-table"> + <tbody> + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Export', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="table-to-export"><?php _e('Export from', 'wp_statistics'); ?>:</label> + </th> + + <td> + <select id="table-to-export" name="table-to-export"> + <option value="0"><?php _e('Please select', 'wp_statistics'); ?></option> + <option value="useronline"><?php echo $wpdb->prefix . 'statistics_useronline'; ?></option> + <option value="visit"><?php echo $wpdb->prefix . 'statistics_visit'; ?></option> + <option value="visitor"><?php echo $wpdb->prefix . 'statistics_visitor'; ?></option> + <option value="exclusions"><?php echo $wpdb->prefix . 'statistics_exclusions'; ?></option> + <option value="pages"><?php echo $wpdb->prefix . 'statistics_pages'; ?></option> + <option value="search"><?php echo $wpdb->prefix . 'statistics_search'; ?></option> + </select> + <p class="description"><?php _e('Select the table for the output file.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="export-file-type"><?php _e('Export To', 'wp_statistics'); ?>:</label> + </th> + + <td> + <select id="export-file-type" name="export-file-type"> + <option value="0"><?php _e('Please select', 'wp_statistics'); ?></option> + <option value="xml">XML</option> + <option value="csv">CSV</option> + <option value="tsv">TSV</option> + </select> + <p class="description"><?php _e('Select the output file type.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="export-headers"><?php _e('Include Header Row', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="export-headers" type="checkbox" value="1" name="export-headers"> + <p class="description"><?php _e('Include a header row as the first line of the exported file.', 'wp_statistics'); ?></p> + <?php submit_button(__('Start Now!', 'wp_statistics'), 'primary', 'export-file-submit'); ?> + </td> + </tr> + + </tbody> + </table> + </form> +</div> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-historical.php b/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-historical.php new file mode 100644 index 0000000..23bd7c1 --- /dev/null +++ b/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-historical.php @@ -0,0 +1,58 @@ +<?php + // Get the historical number of visitors to the site + $historical_visitors = $WP_Statistics->Get_Historical_Data( 'visitors' ); + + // Get the historical number of visits to the site + $historical_visits = $WP_Statistics->Get_Historical_Data( 'visits' ); + +?> + <div class="wrap"> + <form id="wps_historical_form" method="post"> + <?php wp_nonce_field('historical_form', 'wp-statistics-nonce');?> + <table class="form-table"> + <tbody> + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Historical Values', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top" id="wps_historical_purge" style="display: none"> + <th scope="row" colspan=2> + <?php _e('Note: As you have just purged the database you must reload this page for these numbers to be correct.', 'wp_statistics'); ?> + </th> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e('Visitors', 'wp_statistics'); ?>: + </th> + + <td> + <input type="text" size="10" value="<?php echo $historical_visitors; ?>" id="wps_historical_visitors" name="wps_historical_visitors"> + <p class="description"><?php echo sprintf( __('Number of historical number of visitors to the site (current value is %s).', 'wp_statistics'), number_format_i18n( $historical_visitors )); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e('Visits', 'wp_statistics'); ?>: + </th> + + <td> + <input type="text" size="10" value="<?php echo $historical_visits; ?>" id="wps_historical_visits" name="wps_historical_visits"> + <p class="description"><?php echo sprintf( __('Number of historical number of visits to the site (current value is %s).', 'wp_statistics'), number_format_i18n( $historical_visits )); ?></p> + </td> + </tr> + + <tr valign="top"> + <td colspan=2> + <input id="historical-submit" class="button button-primary" type="submit" value="<?php _e('Update now!', 'wp_statistics'); ?>" name="historical-submit"/> + </td> + </tr> + + </tbody> + + </table> + + </form> + + </div> diff --git a/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-purging.php b/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-purging.php new file mode 100644 index 0000000..24b550b --- /dev/null +++ b/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-purging.php @@ -0,0 +1,284 @@ +<script type="text/javascript"> + jQuery(document).ready(function() { + jQuery("#purge-data-submit").click(function(){ + + var action = jQuery('#purge-data').val(); + + if(action == 0) + return false; + + var agree = confirm('<?php _e('Are you sure?', 'wp_statistics'); ?>'); + + if(!agree) + return false; + + jQuery("#purge-data-submit").attr("disabled", "disabled"); + jQuery("#purge-data-status").html("<img src='<?php echo plugins_url('wp-statistics'); ?>/assets/images/loading.gif'/>"); + + var data = { + 'action': 'wp_statistics_purge_data', + 'purge-days': action, + }; + + jQuery.ajax({ url: ajaxurl, + type: 'post', + data: data, + datatype: 'json', + }) + .always(function(result){ + jQuery("#purge-data-status").html(""); + jQuery("#purge-data-result").html(result); + jQuery("#purge-data-submit").removeAttr("disabled"); + jQuery("#wps_historical_purge").show(); + }); + }); + + jQuery("#purge-visitor-hits-submit").click(function(){ + + var action = jQuery('#purge-visitor-hits').val(); + + if(action == 0) + return false; + + var agree = confirm('<?php _e('Are you sure?', 'wp_statistics'); ?>'); + + if(!agree) + return false; + + jQuery("#purge-visitor-hits-submit").attr("disabled", "disabled"); + jQuery("#purge-visitor-hits-status").html("<img src='<?php echo plugins_url('wp-statistics'); ?>/assets/images/loading.gif'/>"); + + var data = { + 'action': 'wp_statistics_purge_visitor_hits', + 'purge-hits': action, + }; + + jQuery.ajax({ url: ajaxurl, + type: 'post', + data: data, + datatype: 'json', + }) + .always(function(result){ + jQuery("#purge-visitor-hits-status").html(""); + jQuery("#purge-visitor-hits-result").html(result); + jQuery("#purge-visitor-hits-submit").removeAttr("disabled"); + }); + }); + + jQuery("#empty-table-submit").click(function(){ + + var action = jQuery('#empty-table').val(); + + if(action == 0) + return false; + + var agree = confirm('<?php _e('Are you sure?', 'wp_statistics'); ?>'); + + if(!agree) + return false; + + jQuery("#empty-table-submit").attr("disabled", "disabled"); + jQuery("#empty-status").html("<img src='<?php echo plugins_url('wp-statistics'); ?>/assets/images/loading.gif'/>"); + + var data = { + 'action': 'wp_statistics_empty_table', + 'table-name': action, + }; + + jQuery.ajax({ url: ajaxurl, + type: 'post', + data: data, + datatype: 'json', + }) + .always(function(result){ + jQuery("#empty-status").html(""); + jQuery("#empty-result").html(result); + jQuery("#empty-table-submit").removeAttr("disabled"); + }); + }); + + jQuery("#delete-agents-submit").click(function(){ + + var action = jQuery('#delete-agent').val(); + + if(action == 0) + return false; + + var agree = confirm('<?php _e('Are you sure?', 'wp_statistics'); ?>'); + + if(!agree) + return false; + + jQuery("#delete-agents-submit").attr("disabled", "disabled"); + jQuery("#delete-agents-status").html("<img src='<?php echo plugins_url('wp-statistics'); ?>/assets/images/loading.gif'/>"); + + var data = { + 'action': 'wp_statistics_delete_agents', + 'agent-name': action, + }; + + jQuery.ajax({ url: ajaxurl, + type: 'post', + data: data, + datatype: 'json', + }) + .always(function(result){ + jQuery("#delete-agents-status").html(""); + jQuery("#delete-agents-result").html(result); + jQuery("#delete-agents-submit").removeAttr("disabled"); + aid = data['agent-name'].replace(/[^a-zA-Z]/g, ""); + jQuery("#agent-" + aid + "-id").remove(); + }); + }); + + jQuery("#delete-platforms-submit").click(function(){ + + var action = jQuery('#delete-platform').val(); + + if(action == 0) + return false; + + var agree = confirm('<?php _e('Are you sure?', 'wp_statistics'); ?>'); + + if(!agree) + return false; + + jQuery("#delete-platforms-submit").attr("disabled", "disabled"); + jQuery("#delete-platforms-status").html("<img src='<?php echo plugins_url('wp-statistics'); ?>/assets/images/loading.gif'/>"); + + var data = { + 'action': 'wp_statistics_delete_platforms', + 'platform-name': action, + }; + + jQuery.ajax({ url: ajaxurl, + type: 'post', + data: data, + datatype: 'json', + }) + .always(function(result){ + jQuery("#delete-platforms-status").html(""); + jQuery("#delete-platforms-result").html(result); + jQuery("#delete-platforms-submit").removeAttr("disabled"); + pid = data['platform-name'].replace(/[^a-zA-Z]/g, ""); + jQuery("#platform-" + pid + "-id").remove(); + }); + }); + + }); +</script> + +<div class="wrap"> + <table class="form-table"> + <tbody> + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Data', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="empty-table"><?php _e('Empty Table', 'wp_statistics'); ?>:</label> + </th> + + <td> + <select id="empty-table" name="empty-table"> + <option value="0"><?php _e('Please select', 'wp_statistics'); ?></option> + <option value="useronline"><?php echo $wpdb->prefix . 'statistics_useronline'; ?></option> + <option value="visit"><?php echo $wpdb->prefix . 'statistics_visit'; ?></option> + <option value="visitor"><?php echo $wpdb->prefix . 'statistics_visitor'; ?></option> + <option value="exclusions"><?php echo $wpdb->prefix . 'statistics_exclusions'; ?></option> + <option value="pages"><?php echo $wpdb->prefix . 'statistics_pages'; ?></option> + <option value="search"><?php echo $wpdb->prefix . 'statistics_search'; ?></option> + <option value="all"><?php echo __('All','wp_statistics'); ?></option> + </select> + <p class="description"><?php _e('All data table will be lost.', 'wp_statistics'); ?></p> + <input id="empty-table-submit" class="button button-primary" type="submit" value="<?php _e('Clear now!', 'wp_statistics'); ?>" name="empty-table-submit" Onclick="return false;"/> + <span id="empty-status"></span> + <div id="empty-result"></div> + </td> + </tr> + + <tr> + <th scope="row"> + <label for="purge-data"><?php _e('Purge records older than', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input type="text" class="small-text code" id="purge-data" name="wps_purge_data" value="365"/> + <label for="purge-data"><?php _e('days', 'wp_statistics'); ?></label> + <p class="description"><?php _e('Deleted user statistics data older than the selected number of days. Minimum value is 30 days.', 'wp_statistics'); ?></p> + <input id="purge-data-submit" class="button button-primary" type="submit" value="<?php _e('Purge now!', 'wp_statistics'); ?>" name="purge-data-submit" Onclick="return false;"/> + <span id="purge-data-status"></span> + <div id="purge-data-result"></div> + </td> + </tr> + + <tr> + <th scope="row"> + <label for="purge-visitor-hits"><?php _e('Purge visitors with more than', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input type="text" class="small-text code" id="purge-visitor-hits" name="wps_purge_visitor_hits" value="10"/> + <label for="purge-visitor-hits"><?php _e('hits', 'wp_statistics'); ?></label> + <p class="description"><?php _e('Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits.', 'wp_statistics'); ?></p> + <input id="purge-visitor-hits-submit" class="button button-primary" type="submit" value="<?php _e('Purge now!', 'wp_statistics'); ?>" name="purge-visitor-hits-submit" Onclick="return false;"/> + <span id="purge-visitor-hits-status"></span> + <div id="purge-visitor-hits-result"></div> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Delete User Agent Types', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="delete-agent"><?php _e('Delete Agents', 'wp_statistics'); ?>:</label> + </th> + + <td> + <select id="delete-agent" name="delete-agent"> + <option value="0"><?php _e('Please select', 'wp_statistics'); ?></option> + <?php + $agents = wp_statistics_ua_list(); + + foreach($agents as $agent) { + $aid = preg_replace( "/[^a-zA-Z]/", "", $agent ); + echo "<option value='$agent' id='agent-" . $aid . "-id'>" . $agent . "</option>"; + } + ?> + </select> + <p class="description"><?php _e('All visitor data will be lost for this agent type.', 'wp_statistics'); ?></p> + <input id="delete-agents-submit" class="button button-primary" type="submit" value="<?php _e('Delete now!', 'wp_statistics'); ?>" name="delete-agents-submit" Onclick="return false;"> + <span id="delete-agents-status"></span> + <div id="delete-agents-result"></div> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="delete-platform"><?php _e('Delete Platforms', 'wp_statistics'); ?>:</label> + </th> + + <td> + <select id="delete-platform" name="delete-platform"> + <option value="0"><?php _e('Please select', 'wp_statistics'); ?></option> + <?php + $platforms = wp_statistics_platform_list(); + + foreach($platforms as $platform) { + $pid = preg_replace( "/[^a-zA-Z]/", "", $platform ); + echo "<option value='$platform' id='platform-" . $pid . "-id'>" . $platform . "</option>"; + } + ?> + </select> + <p class="description"><?php _e('All visitor data will be lost for this platform type.', 'wp_statistics'); ?></p> + <input id="delete-platforms-submit" class="button button-primary" type="submit" value="<?php _e('Delete now!', 'wp_statistics'); ?>" name="delete-platforms-submit" Onclick="return false;"> + <span id="delete-platforms-status"></span> + <div id="delete-platforms-result"></div> + </td> + </tr> + </tbody> + </table> +</div> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-resources.php b/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-resources.php new file mode 100644 index 0000000..6fca02f --- /dev/null +++ b/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-resources.php @@ -0,0 +1,324 @@ +<?php + /* format size of file + * @author Mike Zriel + * @date 7 March 2011 + * @website www.zriel.com + */ + function formatSize($size) { + $sizes = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB"); + if ($size == 0) { return('n/a'); } else { + return (round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $sizes[$i]); } + } +?> +<div class="wrap"> + <table class="form-table"> + <tbody> + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Resources', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e('Memory usage in PHP', 'wp_statistics'); ?>: + </th> + + <td> + <strong><?php echo number_format_i18n(memory_get_usage()); ?></strong> <?php _e('Byte', 'wp_statistics'); ?> + <p class="description"><?php _e('Memory usage in PHP', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e('PHP Memory Limit', 'wp_statistics'); ?>: + </th> + + <td> + <strong><?php echo ini_get('memory_limit'); ?></strong> + <p class="description"><?php _e('The memory limit a script is allowed to consume, set in php.ini.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php echo sprintf(__('Number of rows in the %s table', 'wp_statistics'), '<code>' . $wpdb->prefix . 'statistics_' . 'useronline' . '</code>'); ?>: + </th> + + <td> + <strong><?php echo number_format_i18n($result['useronline']); ?></strong> <?php _e('Row', 'wp_statistics'); ?> + <p class="description"><?php _e('Number of rows', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php echo sprintf(__('Number of rows in the %s table', 'wp_statistics'), '<code>' . $wpdb->prefix . 'statistics_' . 'visit' . '</code>'); ?>: + </th> + + <td> + <strong><?php echo number_format_i18n($result['visit']); ?></strong> <?php _e('Row', 'wp_statistics'); ?> + <p class="description"><?php _e('Number of rows', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php echo sprintf(__('Number of rows in the %s table', 'wp_statistics'), '<code>' . $wpdb->prefix . 'statistics_' . 'visitor' . '</code>'); ?>: + </th> + + <td> + <strong><?php echo number_format_i18n($result['visitor']); ?></strong> <?php _e('Row', 'wp_statistics'); ?> + <p class="description"><?php _e('Number of rows', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php echo sprintf(__('Number of rows in the %s table', 'wp_statistics'), '<code>' . $wpdb->prefix . 'statistics_' . 'exclusions' . '</code>'); ?>: + </th> + + <td> + <strong><?php echo number_format_i18n($result['exclusions']); ?></strong> <?php _e('Row', 'wp_statistics'); ?> + <p class="description"><?php _e('Number of rows', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php echo sprintf(__('Number of rows in the %s table', 'wp_statistics'), '<code>' . $wpdb->prefix . 'statistics_' . 'pages' . '</code>'); ?>: + </th> + + <td> + <strong><?php echo number_format_i18n($result['pages']); ?></strong> <?php _e('Row', 'wp_statistics'); ?> + <p class="description"><?php _e('Number of rows', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php echo sprintf(__('Number of rows in the %s table', 'wp_statistics'), '<code>' . $wpdb->prefix . 'statistics_' . 'historical' . '</code>'); ?>: + </th> + + <td> + <strong><?php echo number_format_i18n($result['historical']); ?></strong> <?php _e('Row', 'wp_statistics'); ?> + <p class="description"><?php _e('Number of rows', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php echo sprintf(__('Number of rows in the %s table', 'wp_statistics'), '<code>' . $wpdb->prefix . 'statistics_' . 'search' . '</code>'); ?>: + </th> + + <td> + <strong><?php echo number_format_i18n($result['search']); ?></strong> <?php _e('Row', 'wp_statistics'); ?> + <p class="description"><?php _e('Number of rows', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Version Info', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e('WP Statistics Version', 'wp_statistics'); ?>: + </th> + + <td> + <strong><?php echo WP_STATISTICS_VERSION; ?></strong> + <p class="description"><?php _e('The WP Statistics version you are running.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e('PHP Version', 'wp_statistics'); ?>: + </th> + + <td> + <strong><?php echo phpversion(); ?></strong> + <p class="description"><?php _e('The PHP version you are running.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e('PHP Safe Mode', 'wp_statistics'); ?>: + </th> + + <td> + <strong><?php if( ini_get('safe_mode') ) { echo 'Yes'; } else { echo 'No'; } ?></strong> + <p class="description"><?php _e('Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e('PHP IPv6 Enabled', 'wp_statistics'); ?>: + </th> + + <td> + <strong><?php if( defined( 'AF_INET6' ) ) { echo 'Yes'; } else { echo 'No'; } ?></strong> + <p class="description"><?php _e('Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e('jQuery Version', 'wp_statistics'); ?>: + </th> + + <td> + <strong><script type="text/javascript">document.write(jQuery().jquery);</script></strong> + <p class="description"><?php _e('The jQuery version you are running.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e('cURL Version', 'wp_statistics'); ?>: + </th> + + <td> + <strong><?php if( function_exists('curl_version') ) { $curl_ver = curl_version(); echo $curl_ver['version']; } else { _e('cURL not installed', 'wp_statistics'); }?></strong> + <p class="description"><?php _e('The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e('Zlib gzopen()', 'wp_statistics'); ?>: + </th> + + <td> + <strong><?php if( function_exists('gzopen') ) { _e('Installed','wp_statistics'); } else { _e('Not installed', 'wp_statistics'); }?></strong> + <p class="description"><?php _e('If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('File Info', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e('GeoIP Database', 'wp_statistics'); ?>: + </th> + + <td> + <strong><?php $upload_dir = wp_upload_dir(); + $GeoIP_filename = $upload_dir['basedir'] . '/wp-statistics/GeoLite2-Country.mmdb'; + $GeoIP_filedate = @filemtime( $GeoIP_filename ); + + if( $GeoIP_filedate === FALSE ) { + _e('Database file does not exist.', 'wp_statistics'); + } else { + echo formatSize( @filesize( $GeoIP_filename ) ) . __(', created on ', 'wp_statistics') . date_i18n(get_option('date_format') . ' @ ' . get_option('time_format'), $GeoIP_filedate); + }?></strong> + <p class="description"><?php _e('The file size and date of the GeoIP database.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e('browscap.ini File', 'wp_statistics'); ?>: + </th> + + <td> + <strong><?php + $browscap_filename = $upload_dir['basedir'] . '/wp-statistics/browscap.ini'; + $browscap_filedate = @filemtime( $browscap_filename ); + + if( $browscap_filedate === FALSE ) { + _e('browscap.ini file does not exist.', 'wp_statistics'); + } else { + echo formatSize( @filesize( $browscap_filename ) ) . __(', created on ', 'wp_statistics') . date_i18n(get_option('date_format') . ' @ ' . get_option('time_format'), $browscap_filedate); + }?></strong> + <p class="description"><?php _e('The file size and date of the browscap.ini file.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e('browscap Cache File', 'wp_statistics'); ?>: + </th> + + <td> + <strong><?php + $browscap_filename = $upload_dir['basedir'] . '/wp-statistics/cache.php'; + $browscap_filedate = @filemtime( $browscap_filename ); + + if( $browscap_filedate === FALSE ) { + _e('browscap cache file does not exist.', 'wp_statistics'); + } else { + echo formatSize( @filesize( $browscap_filename ) ) . __(', created on ', 'wp_statistics') . date_i18n(get_option('date_format') . ' @ ' . get_option('time_format'), $browscap_filedate); + }?></strong> + <p class="description"><?php _e('The file size and date of the browscap cache file.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Client Info', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e('Client IP', 'wp_statistics'); ?>: + </th> + + <td> + <strong><?php echo $WP_Statistics->get_IP(); ?></strong> + <p class="description"><?php _e('The client IP address.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e('User Agent', 'wp_statistics'); ?>: + </th> + + <td> + <strong><?php echo htmlentities( $_SERVER['HTTP_USER_AGENT'], ENT_QUOTES ); ?></strong> + <p class="description"><?php _e('The client user agent string.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e('Browser', 'wp_statistics'); ?>: + </th> + + <td> + <strong><?php $agent = $WP_Statistics->get_UserAgent(); + echo $agent['browser']; + ?></strong> + <p class="description"><?php _e('The detected client browser.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e('Version', 'wp_statistics'); ?>: + </th> + + <td> + <strong><?php echo $agent['version'];?></strong> + <p class="description"><?php _e('The detected client browser version.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e('Platform', 'wp_statistics'); ?>: + </th> + + <td> + <strong><?php echo $agent['platform'];?></strong> + <p class="description"><?php _e('The detected client platform.', 'wp_statistics'); ?></p> + </td> + </tr> + + </tbody> + </table> +</div> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-updates.php b/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-updates.php new file mode 100644 index 0000000..8f6f5fa --- /dev/null +++ b/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-updates.php @@ -0,0 +1,47 @@ +<script type="text/javascript"> + jQuery(document).ready(function() { + jQuery("#hash-ips-submit").click(function(){ + var agree = confirm('<?php _e('This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?', 'wp_statistics'); ?>'); + + if(agree) + location.href=document.URL+'&tab=updates&hash-ips=1'; + + }); + }); +</script> +<div class="wrap"> + <table class="form-table"> + <tbody> + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('GeoIP Options', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="populate-submit"><?php _e('Countries', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="populate-submit" class="button button-primary" type="button" value="<?php _e('Update Now!', 'wp_statistics'); ?>" name="populate-submit" onclick="location.href=document.URL+'&tab=updates&populate=1'"> + <p class="description"><?php _e('Updates any unknown location data in the database, this may take a while', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('IP Addresses', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="populate-submit"><?php _e('Hash IP Addresses', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="hash-ips-submit" class="button button-primary" type="button" value="<?php _e('Update Now!', 'wp_statistics'); ?>" name="hash-ips-submit"> + <p class="description"><?php _e('Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while', 'wp_statistics'); ?></p> + </td> + </tr> + + </tbody> + </table> +</div> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/optimization/wps-optimization.php b/plugins/wp-statistics/includes/optimization/wps-optimization.php new file mode 100644 index 0000000..f9cf53d --- /dev/null +++ b/plugins/wp-statistics/includes/optimization/wps-optimization.php @@ -0,0 +1,267 @@ +<?php + GLOBAL $wpdb, $WP_Statistics; + $wp_prefix = $wpdb->prefix; + + if( !is_super_admin() ) + wp_die(__('Access denied!', 'wp_statistics')); + + if( array_key_exists( 'populate', $_GET ) ) { + if( intval($_GET['populate']) == 1 ) { + require_once( plugin_dir_path( __FILE__ ) . '../functions/geoip-populate.php' ); + echo wp_statistics_populate_geoip_info(); + } + } + + if( array_key_exists( 'hash-ips', $_GET ) ) { + if( intval($_GET['hash-ips']) == 1 ) { + // Generate a random salt + $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + $randomString = ''; + for ($i = 0; $i < 50; $i++) { + $randomString .= $characters[rand(0, strlen($characters) - 1)]; + } + + // Get the rows from the Visitors table. + $result = $wpdb->get_results( "SELECT DISTINCT ip FROM {$wp_prefix}statistics_visitor" ); + + foreach( $result as $row ) { + + if( substr( $row->ip, 0, 6 ) != '#hash#' ) { + + $wpdb->update( + $wp_prefix . "statistics_visitor", + array( + 'ip' => '#hash#' . sha1( $row->ip . $randomString ), + ), + array( + 'ip' => $row->ip, + ) + ); + } + } + + echo "<div class='updated settings-error'><p><strong>" . __('IP Addresses replaced with hash values.', 'wp_statistics') . "</strong></p></div>"; + } + } + + if( array_key_exists( 'install', $_GET ) ) { + if( intval($_GET['install']) == 1 ) { + $WPS_Installed = "1.0"; + include( plugin_dir_path( __FILE__ ) . "../../wps-install.php" ); + echo "<div class='updated settings-error'><p><strong>" . __('Install routine complete.', 'wp_statistics') . "</strong></p></div>"; + } + } + + if( array_key_exists( 'index', $_GET ) ) { + if( intval($_GET['index']) == 1 ) { + // Check the number of index's on the visitors table, if it's only 5 we need to check for duplicate entries and remove them + $result = $wpdb->query("SHOW INDEX FROM {$wp_prefix}statistics_visitor WHERE Key_name = 'date_ip'"); + + if( $result != 5 ) { + // We have to loop through all the rows in the visitors table to check for duplicates that may have been created in error. + $result = $wpdb->get_results( "SELECT ID, last_counter, ip FROM {$wp_prefix}statistics_visitor ORDER BY last_counter, ip" ); + + // Setup the inital values. + $lastrow = array( 'last_counter' => '', 'ip' => '' ); + $deleterows = array(); + + // Ok, now iterate over the results. + foreach( $result as $row ) { + // if the last_counter (the date) and IP is the same as the last row, add the row to be deleted. + if( $row->last_counter == $lastrow['last_counter'] && $row->ip == $lastrow['ip'] ) { $deleterows[] .= $row->ID;} + + // Update the lastrow data. + $lastrow['last_counter'] = $row->last_counter; + $lastrow['ip'] = $row->ip; + } + + // Now do the acutal deletions. + foreach( $deleterows as $row ) { + $wpdb->delete( $wp_prefix . 'statistics_visitor', array( 'ID' => $row ) ); + } + + // The table should be ready to be updated now with the new index, so let's do it. + $result = $wpdb->get_results( "ALTER TABLE " . $wp_prefix . 'statistics_visitor' . " ADD UNIQUE `date_ip_agent` ( `last_counter`, `ip`, `agent` (75), `platform` (75), `version` (75) )" ); + + // We might have an old index left over from 7.1-7.3 so lets make sure to delete it. + $wpdb->query( "DROP INDEX `date_ip` ON {$wp_prefix}statistics_visitor" ); + + // Record in the options that we've done this update. + $dbupdates = $WP_Statistics->get_option('pending_db_updates'); + $dbupdates['date_ip_agent'] = false; + $WP_Statistics->update_option('pending_db_updates', $dbupdates); + } + } + } + + if( array_key_exists( 'visits', $_GET ) ) { + if( intval($_GET['visits']) == 1 ) { + // Check the number of index's on the visits table, if it's only 5 we need to check for duplicate entries and remove them + $result = $wpdb->query("SHOW INDEX FROM {$wp_prefix}statistics_visit WHERE Key_name = 'unique_date'"); + + // Note, the result will be the number of fields contained in the index, so in our case 1. + if( $result != 1 ) { + // We have to loop through all the rows in the visitors table to check for duplicates that may have been created in error. + $result = $wpdb->get_results( "SELECT ID, last_counter, visit FROM {$wp_prefix}statistics_visit ORDER BY last_counter, visit DESC" ); + + // Setup the initial values. + $lastrow = array( 'last_counter' => '', 'visit' => 0, 'id' => 0 ); + $deleterows = array(); + + // Ok, now iterate over the results. + foreach( $result as $row ) { + // if the last_counter (the date) and IP is the same as the last row, add the row to be deleted. + if( $row->last_counter == $lastrow['last_counter'] ) { $deleterows[] .= $row->ID; } + + // Update the lastrow data. + $lastrow['last_counter'] = $row->last_counter; + $lastrow['id'] = $row->ID; + $lastrow['visit'] = $row->visit; + } + + // Now do the acutal deletions. + foreach( $deleterows as $row ) { + $wpdb->delete( $wp_prefix . 'statistics_visit', array( 'ID' => $row ) ); + } + + // The table should be ready to be updated now with the new index, so let's do it. + $result = $wpdb->get_results( "ALTER TABLE " . $wp_prefix . 'statistics_visit' . " ADD UNIQUE `unique_date` ( `last_counter` )" ); + + // Record in the options that we've done this update. + $dbupdates = $WP_Statistics->get_option('pending_db_updates'); + $dbupdates['unique_date'] = false; + $WP_Statistics->update_option('pending_db_updates', $dbupdates); + } + } + } + + if( array_key_exists( 'historical-submit', $_POST ) ) { + + if( array_key_exists( 'wps_historical_visitors', $_POST ) ) { + $result = $wpdb->update( $wp_prefix . "statistics_historical", array( 'value' => $_POST['wps_historical_visitors'] ), array( 'category' => 'visitors' ) ); + + if( $result == 0 ) { + $result = $wpdb->insert( $wp_prefix . "statistics_historical", array( 'value' => $_POST['wps_historical_visitors'], 'category' => 'visitors', 'page_id' => -1, 'uri' => '-1' ) ); + } + } + + if( array_key_exists( 'wps_historical_visits', $_POST ) ) { + $result = $wpdb->update( $wp_prefix . "statistics_historical", array( 'value' => $_POST['wps_historical_visits'] ), array( 'category' => 'visits' ) ); + + if( $result == 0 ) { + $result = $wpdb->insert( $wp_prefix . "statistics_historical", array( 'value' => $_POST['wps_historical_visits'], 'category' => 'visits', 'page_id' => -2, 'uri' => '-2' ) ); + } + } + + } + + if( array_key_exists( 'search', $_GET ) ) { + + // Make sure we get all the search engines, even the ones the disabled ones. + $se_list = wp_statistics_searchengine_list(); + $total = 0; + $limitsize = 10000; + + foreach( $se_list as $key => $se ) { + + $sql = wp_statistics_searchengine_query( $key ); + $rowcount = $wpdb->get_var( "SELECT count(*) FROM `{$wpdb->prefix}statistics_visitor` WHERE {$sql}" ); + $offset = 0; + + while( $rowcount > 0 ) { + + $result = $wpdb->get_results( "SELECT * FROM `{$wpdb->prefix}statistics_visitor` WHERE {$sql} LIMIT {$offset}, {$limitsize}" ); + + foreach( $result as $row ) { + $parts = parse_url( $row->referred ); + + $data['last_counter'] = $row->last_counter; + $data['engine'] = $key; + $data['host'] = $parts['host']; + $data['words'] = $WP_Statistics->Search_Engine_QueryString( $row->referred ); + $data['visitor'] = $row->ID; + + if( $data['words'] == 'No search query found!' ) { $data['words'] = ''; } + + $wpdb->insert( $wpdb->prefix . 'statistics_search', $data ); + $total++; + } + + $rowcount -= $limitsize; + $offset += $limitsize; + } + } + + $WP_Statistics->update_option('search_converted', 1); + echo "<div class='updated settings-error'><p><strong>" . sprintf( __('Search table conversion complete, %d rows added.', 'wp_statistics'), $total ) . "</strong></p></div>"; + + } + +$selected_tab = ""; +if( array_key_exists( 'tab', $_GET ) ) { $selected_tab = $_GET['tab']; } + +switch( $selected_tab ) + { + case 'export': + $current_tab = 1; + break; + case 'purging': + $current_tab = 2; + break; + case 'database': + $current_tab = 3; + break; + case 'updates': + $current_tab = 4; + break; + case 'historical': + $current_tab = 5; + break; + default: + $current_tab = 0; + + } +?> +<script type="text/javascript"> + jQuery(document).ready(function() { + jQuery("#tabs").tabs(); + <?php if( $current_tab != 0 ) { echo 'jQuery("#tabs").tabs("option", "active",' . $current_tab. ');' . "\n"; }?> + } ); +</script> +<div class="wrap"> + <div id="tabs" class="ui-tabs ui-widget ui-widget-content ui-corner-all"> + <ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"> + <li class="ui-state-default ui-corner-top"><a href="#resources" class="ui-tabs-anchor"><span><?php _e('Resources/Information', 'wp_statistics'); ?></span></a></li> + <li class="ui-state-default ui-corner-top"><a href="#export" class="ui-tabs-anchor"><span><?php _e('Export', 'wp_statistics'); ?></span></a></li> + <li class="ui-state-default ui-corner-top"><a href="#purging" class="ui-tabs-anchor"><span><?php _e('Purging', 'wp_statistics'); ?></span></a></li> + <li class="ui-state-default ui-corner-top"><a href="#database" class="ui-tabs-anchor"><span><?php _e('Database', 'wp_statistics'); ?></span></a></li> + <li class="ui-state-default ui-corner-top"><a href="#updates" class="ui-tabs-anchor"><span><?php _e('Updates', 'wp_statistics'); ?></span></a></li> + <li class="ui-state-default ui-corner-top"><a href="#historical" class="ui-tabs-anchor"><span><?php _e('Historical', 'wp_statistics'); ?></span></a></li> + </ul> + + <div id="resources"> + <?php include( dirname( __FILE__ ) . '/tabs/wps-optimization-resources.php' ); ?> + </div> + + <div id="export"> + <?php include( dirname( __FILE__ ) . '/tabs/wps-optimization-export.php' ); ?> + </div> + + <div id="purging"> + <?php include( dirname( __FILE__ ) . '/tabs/wps-optimization-purging.php' ); ?> + </div> + + <div id="database"> + <?php include( dirname( __FILE__ ) . '/tabs/wps-optimization-database.php' ); ?> + </div> + + <div id="updates"> + <?php include( dirname( __FILE__ ) . '/tabs/wps-optimization-updates.php' ); ?> + </div> + + <div id="historical"> + <?php include( dirname( __FILE__ ) . '/tabs/wps-optimization-historical.php' ); ?> + </div> + + </div> +</div> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/settings/tabs/wps-about.php b/plugins/wp-statistics/includes/settings/tabs/wps-about.php new file mode 100644 index 0000000..13e29ec --- /dev/null +++ b/plugins/wp-statistics/includes/settings/tabs/wps-about.php @@ -0,0 +1,88 @@ +<table class="form-table"> + <tbody> + <tr valign="top"> + <td scope="row" align="center"><img src="<?php echo plugins_url('wp-statistics/assets/images/logo-250.png'); ?>"></td> + </tr> + + <tr valign="top"> + <td scope="row" align="center"><h2><?php echo sprintf(__('WP Statistics V%s', 'wp_statistics'), WP_STATISTICS_VERSION); ?></h2></td> + </tr> + + <tr valign="top"> + <td scope="row" align="center"><?php echo sprintf(__('This product includes GeoLite2 data created by MaxMind, available from %s.', 'wp_statistics'), '<a href="http://www.maxmind.com" target=_blank>http://www.maxmind.com</a>'); ?></td> + </tr> + + <tr valign="top"> + <td scope="row" align="center"><hr /></td> + </tr> + + <tr valign="top"> + <td scope="row" colspan="2"><h2><?php _e('Donate', 'wp_statistics'); ?></h2></td> + </tr> + + <tr valign="top"> + <td scope="row" colspan="2"><?php echo sprintf( __('Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!', 'wp_statistics'), '<a href="http://wp-statistics.com/donate" target="_blank">' . __('donation', 'wp_statistics') . '</a>');?></td> + </tr> + + <tr valign="top"> + <td scope="row" colspan="2"><h2><?php _e('Visit Us Online', 'wp_statistics'); ?></h2></td> + </tr> + + <tr valign="top"> + <td scope="row" colspan="2"><?php echo sprintf( __('Come visit our great new %s and keep up to date on the latest news about WP Statistics.', 'wp_statistics'), '<a href="http://wp-statistics.com" target="_blank">' . __('website', 'wp_statistics') . '</a>');?></td> + </tr> + + <tr valign="top"> + <td scope="row" colspan="2"><h2><?php _e('Rate and Review at WordPress.org', 'wp_statistics'); ?></h2></td> + </tr> + + <tr valign="top"> + <td scope="row" colspan="2"><?php _e('Thanks for installing WP Statistics, we encourage you to submit a ', 'wp_statistics');?> <a href="http://wordpress.org/support/view/plugin-reviews/wp-statistics" target="_blank"><?php _e('rating and review', 'wp_statistics'); ?></a> <?php _e('over at WordPress.org. Your feedback is greatly appreciated!','wp_statistics');?></td> + </tr> + + <tr valign="top"> + <td scope="row" colspan="2"><h2><?php _e('Translations', 'wp_statistics'); ?></h2></td> + </tr> + + <tr valign="top"> + <td scope="row" colspan="2"><?php echo sprintf( __('WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help.', 'wp_statistics'), '<a href="http://wp-statistics.com/translations/" target="_blank">' . __('translation collaboration site', 'wp_statistics') . '</a>', '<a href="http://wp-statistics.com/contact/" target="_blank">' . __( 'drop us a line', 'wp_statistics') . '</a>');?></td> + </tr> + + <tr valign="top"> + <td scope="row" colspan="2"><h2><?php _e('Support', 'wp_statistics'); ?></h2></td> + </tr> + + <tr valign="top"> + <td scope="row" colspan="2"> + <p><?php _e("We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:", 'wp_statistics'); ?></p> + + <ul style="list-style-type: disc; list-style-position: inside; padding-left: 25px;"> + <li><?php echo sprintf( __('Have you read the %s?', 'wp_statistics' ), '<a title="' . __('FAQs', 'wp_statistics') . '" href="http://wp-statistics.com/?page_id=19" target="_blank">' . __('FAQs', 'wp_statistics'). '</a>');?></li> + <li><?php echo sprintf( __('Have you read the %s?', 'wp_statistics' ), '<a title="' . __('manual', 'wp_statistics') . '" href="?page=' . WP_STATISTICS_MANUAL_PAGE . '">' . __('manual', 'wp_statistics') . '</a>');?></li> + <li><?php echo sprintf( __('Have you search the %s for a similar issue?', 'wp_statistics' ), '<a href="http://wordpress.org/support/plugin/wp-statistics" target="_blank">' . __('support forum', 'wp_statistics') . '</a>');?></li> + <li><?php _e('Have you search the Internet for any error messages you are receiving?', 'wp_statistics' );?></li> + <li><?php _e('Make sure you have access to your PHP error logs.', 'wp_statistics' );?></li> + </ul> + + <p><?php _e('And a few things to double-check:', 'wp_statistics' );?></p> + + <ul style="list-style-type: disc; list-style-position: inside; padding-left: 25px;"> + <li><?php _e('How\'s your memory_limit in php.ini?', 'wp_statistics' );?></li> + <li><?php _e('Have you tried disabling any other plugins you may have installed?', 'wp_statistics' );?></li> + <li><?php _e('Have you tried using the default WordPress theme?', 'wp_statistics' );?></li> + <li><?php _e('Have you double checked the plugin settings?', 'wp_statistics' );?></li> + <li><?php _e('Do you have all the required PHP extensions installed?', 'wp_statistics' );?></li> + <li><?php _e('Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?', 'wp_statistics' );?></li> + <li><?php _e('Have you checked your PHP and web server error logs?', 'wp_statistics' );?></li> + </ul> + + <p><?php _e('Still not having any luck?', 'wp_statistics' );?> <?php echo sprintf(__('Then please open a new thread on the %s and we\'ll respond as soon as possible.', 'wp_statistics' ), '<a href="http://wordpress.org/support/plugin/wp-statistics" target="_blank">' . __('WordPress.org support forum', 'wp_statistics') . '</a>');?></p> + + <p><br /></p> + + <p><?php echo sprintf( __('Alternatively %s support is available as well.', 'wp_statistics' ), '<a href="http://forum.wp-parsi.com/forum/17-%D9%85%D8%B4%DA%A9%D9%84%D8%A7%D8%AA-%D8%AF%DB%8C%DA%AF%D8%B1/" target="_blank">' . __('Farsi', 'wp_statistics' ) .'</a>');?></p> + </td> + </tr> + + </tbody> +</table> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/settings/tabs/wps-access-level.php b/plugins/wp-statistics/includes/settings/tabs/wps-access-level.php new file mode 100644 index 0000000..b76e802 --- /dev/null +++ b/plugins/wp-statistics/includes/settings/tabs/wps-access-level.php @@ -0,0 +1,85 @@ +<?php +global $wp_roles; + +$role_list = $wp_roles->get_names(); + +if( $wps_nonce_valid ) { + + $wps_option_list = array_merge( $wps_option_list, array('wps_read_capability','wps_manage_capability' ) ); + + foreach( $wps_option_list as $option ) { + $new_option = str_replace( "wps_", "", $option ); + + if( array_key_exists( $option, $_POST ) ) { $value = $_POST[$option]; } else { $value = ''; } + $WP_Statistics->store_option($new_option, $value); + } +} + +?> + +<table class="form-table"> + <tbody> + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Access Levels', 'wp_statistics'); ?></h3></th> + </tr> + <?php + global $wp_roles; + + $role_list = $wp_roles->get_names(); + + foreach( $wp_roles->roles as $role ) { + + $cap_list = $role['capabilities']; + + foreach( $cap_list as $key => $cap ) { + if( substr($key,0,6) != 'level_' ) { + $all_caps[$key] = 1; + } + } + } + + ksort( $all_caps ); + + $read_cap = $WP_Statistics->get_option('read_capability','manage_options'); + $option_list = ''; + + foreach( $all_caps as $key => $cap ) { + if( $key == $read_cap ) { $selected = " SELECTED"; } else { $selected = ""; } + $option_list .= "<option value='{$key}'{$selected}>{$key}</option>"; + } + ?> + <tr valign="top"> + <th scope="row"><label for="wps_read_capability"><?php _e('Required user level to view WP Statistics', 'wp_statistics')?>:</label></th> + <td> + <select id="wps_read_capability" name="wps_read_capability"><?php echo $option_list;?></select> + </td> + </tr> + + <?php + $manage_cap = $WP_Statistics->get_option('manage_capability','manage_options'); + + foreach( $all_caps as $key => $cap ) { + if( $key == $manage_cap ) { $selected = " SELECTED"; } else { $selected = ""; } + $option_list .= "<option value='{$key}'{$selected}>{$key}</option>"; + } + ?> + <tr valign="top"> + <th scope="row"><label for="wps_manage_capability"><?php _e('Required user level to manage WP Statistics', 'wp_statistics')?>:</label></th> + <td> + <select id="wps_manage_capability" name="wps_manage_capability"><?php echo $option_list;?></select> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"> + <p class="description"><?php echo sprintf(__('See the %s for details on capability levels.', 'wp_statistics'), '<a target=_blank href="http://codex.wordpress.org/Roles_and_Capabilities">' . __('WordPress Roles and Capabilities page', 'wp_statistics') . '</a>'); ?></p> + <p class="description"><?php echo __('Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone.', 'wp_statistics'); ?></p> + <p class="description"><?php echo __('Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins.', 'wp_statistics'); ?></p> + <p class="description"><?php echo sprintf(__('If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory.', 'wp_statistics'), '<a href="http://wordpress.org/plugins/capability-manager-enhanced/" target=_blank>Capability Manager Enhanced</a>'); ?></p> + </th> + </tr> + + </tbody> +</table> + +<?php submit_button(__('Update', 'wp_statistics'), 'primary', 'submit'); ?> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/settings/tabs/wps-exclusions.php b/plugins/wp-statistics/includes/settings/tabs/wps-exclusions.php new file mode 100644 index 0000000..cc92bb6 --- /dev/null +++ b/plugins/wp-statistics/includes/settings/tabs/wps-exclusions.php @@ -0,0 +1,237 @@ +<?php +global $wp_roles; + +$role_list = $wp_roles->get_names(); + +if( $wps_nonce_valid ) { + + foreach( $role_list as $role ) { + $role_post = 'wps_exclude_' . str_replace(" ", "_", strtolower($role) ); + + if( array_key_exists( $role_post, $_POST ) ) { $value = $_POST[$role_post]; } else { $value = ''; } + + $new_option = str_replace( "wps_", "", $role_post ); + $WP_Statistics->store_option($new_option, $value); + + } + + if( array_key_exists( 'wps_create_honeypot', $_POST ) ) { + $my_post = array( + 'post_type' => 'page', + 'post_title' => __('WP Statistics Honey Pot Page', 'wp_statistics' ) . ' [' . $WP_Statistics->Current_Date() . ']', + 'post_content' => __('This is the honey pot for WP Statistics to use, do not delete.', 'wp_statistics' ), + 'post_status' => 'publish', + 'post_author' => 1, + ); + + $_POST['wps_honeypot_postid'] = wp_insert_post( $my_post ); + } + + $wps_option_list = array_merge( $wps_option_list, array('wps_record_exclusions','wps_robotlist','wps_exclude_ip','wps_exclude_loginpage','wps_exclude_adminpage','wps_force_robot_update','wps_excluded_countries','wps_included_countries','wps_excluded_hosts','wps_robot_threshold','wps_use_honeypot','wps_honeypot_postid','wps_exclude_feeds','wps_excluded_urls','wps_exclude_404s', 'wps_corrupt_browser_info' ) ); + + foreach( $wps_option_list as $option ) { + $new_option = str_replace( "wps_", "", $option ); + + if( array_key_exists( $option, $_POST ) ) { $value = $_POST[$option]; } else { $value = ''; } + $WP_Statistics->store_option($new_option, $value); + } +} + +?> + +<table class="form-table"> + <tbody> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Exclusions', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"><label for="wps-exclusions"><?php _e('Record exclusions', 'wp_statistics'); ?></label>:</th> + <td> + <input id="wps-exclusions" type="checkbox" value="1" name="wps_record_exclusions" <?php echo $WP_Statistics->get_option('record_exclusions')==true? "checked='checked'":'';?>><label for="wps-exclusions"><?php _e('Enable', 'wp_statistics'); ?></label> + <p class="description"><?php _e('This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Exclude User Roles', 'wp_statistics'); ?></h3></th> + </tr> + <?php + $role_option_list = ''; + + foreach( $role_list as $role ) { + $store_name = 'exclude_' . str_replace(" ", "_", strtolower($role) ); + $option_name = 'wps_' . $store_name; + $role_option_list .= $option_name . ','; + + $translated_role_name = translate_user_role($role); + ?> + + <tr valign="top"> + <th scope="row"><label for="<?php echo $option_name;?>"><?php echo $translated_role_name; ?>:</label></th> + <td> + <input id="<?php echo $option_name;?>" type="checkbox" value="1" name="<?php echo $option_name;?>" <?php echo $WP_Statistics->get_option($store_name)==true? "checked='checked'":'';?>><label for="<?php echo $option_name;?>"><?php _e('Exclude', 'wp_statistics'); ?></label> + <p class="description"><?php echo sprintf(__('Exclude %s role from data collection.', 'wp_statistics'), $translated_role_name); ?></p> + </td> + </tr> + <?php } ?> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('IP/Robot Exclusions', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"><?php _e('Robot list', 'wp_statistics'); ?>:</th> + <td> + <textarea name="wps_robotlist" class="code" dir="ltr" rows="10" cols="60" id="wps_robotlist"><?php + $robotlist = $WP_Statistics->get_option('robotlist'); + + include_once(dirname( __FILE__ ) . '/../../../robotslist.php'); + + if( $robotlist == '' ) { + $robotlist = $wps_robotlist; + update_option( 'wps_robotlist', $robotlist ); + } + + echo htmlentities( $robotlist, ENT_QUOTES );?></textarea> + <p class="description"><?php echo __('A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored.', 'wp_statistics'); ?></p> + <a onclick="var wps_robotlist = getElementById('wps_robotlist'); wps_robotlist.value = '<?php echo implode('\n', $wps_robotarray);?>';" class="button"><?php _e('Reset to Default', 'wp_statistics');?></a> + </td> + </tr> + + <tr valign="top"> + <th scope="row"><label for="force_robot_update"><?php _e('Force robot list update after upgrades', 'wp_statistics'); ?>:</label></th> + <td> + <input id="force_robot_update" type="checkbox" value="1" name="wps_force_robot_update" <?php echo $WP_Statistics->get_option('force_robot_update')==true? "checked='checked'":'';?>><label for="force_robot_update"><?php _e('Enable', 'wp_statistics'); ?></label> + <p class="description"><?php echo sprintf(__('Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost.', 'wp_statistics'), $role); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"><label for="wps_robot_threshold"><?php _e('Robot visit threshold', 'wp_statistics'); ?>:</label></th> + <td> + <input id="wps_robot_threshold" type="text" size="5" name="wps_robot_threshold" value="<?php echo $WP_Statistics->get_option('robot_threshold');?>"> + <p class="description"><?php echo __('Treat visitors with more than this number of visits per day as robots. 0 = disabled.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"><?php _e('Excluded IP address list', 'wp_statistics'); ?>:</th> + <td> + <textarea id="wps_exclude_ip" name="wps_exclude_ip" rows="5" cols="60" class="code" dir="ltr"><?php echo htmlentities( $WP_Statistics->get_option('exclude_ip'), ENT_QUOTES );?></textarea> + <p class="description"><?php echo __('A list of IP addresses and subnet masks (one per line) to exclude from statistics collection.', 'wp_statistics'); ?></p> + <p class="description"><?php echo __('For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255.', 'wp_statistics'); ?></p> + <p class="description"><?php echo __('For IPv6 addresses use the fc00::/7 format.', 'wp_statistics'); ?></p> + <a onclick="var wps_exclude_ip = getElementById('wps_exclude_ip'); if( wps_exclude_ip != null ) { wps_exclude_ip.value = jQuery.trim( wps_exclude_ip.value + '\n10.0.0.0/8' ); }" class="button"><?php _e('Add 10.0.0.0', 'wp_statistics');?></a> + <a onclick="var wps_exclude_ip = getElementById('wps_exclude_ip'); if( wps_exclude_ip != null ) { wps_exclude_ip.value = jQuery.trim( wps_exclude_ip.value + '\n172.16.0.0/12' ); }" class="button"><?php _e('Add 172.16.0.0', 'wp_statistics');?></a> + <a onclick="var wps_exclude_ip = getElementById('wps_exclude_ip'); if( wps_exclude_ip != null ) { wps_exclude_ip.value = jQuery.trim( wps_exclude_ip.value + '\n192.168.0.0/16' ); }" class="button"><?php _e('Add 192.168.0.0', 'wp_statistics');?></a> + <a onclick="var wps_exclude_ip = getElementById('wps_exclude_ip'); if( wps_exclude_ip != null ) { wps_exclude_ip.value = jQuery.trim( wps_exclude_ip.value + '\nfc00::/7' ); }" class="button"><?php _e('Add fc00::/7', 'wp_statistics');?></a> + </td> + </tr> + + <tr valign="top"> + <th scope="row"><?php _e('Use honey pot', 'wp_statistics'); ?>:</th> + <td> + <input id="use_honeypot" type="checkbox" value="1" name="wps_use_honeypot" <?php echo $WP_Statistics->get_option('use_honeypot')==true? "checked='checked'":'';?>><label for="wps_use_honeypot"><?php _e('Enable', 'wp_statistics'); ?></label> + <p class="description"><?php echo __('Use a honey pot page to identify robots.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"><label for="honeypot_postid"><?php _e('Honey pot post id', 'wp_statistics'); ?>:</label></th> + <td> + <input id="honeypot_postid" type="text" value="<?php echo htmlentities( $WP_Statistics->get_option('honeypot_postid'), ENT_QUOTES );?>" size="5" name="wps_honeypot_postid"> + <p class="description"><?php echo __('The post id to use for the honeypot page.', 'wp_statistics'); ?></p> + <input id="wps_create_honeypot" type="checkbox" value="1" name="wps_create_honeypot"><label for="wps_create_honeypot"><?php _e('Create a new honey pot page', 'wp_statistics'); ?></label> + </td> + </tr> + + <tr valign="top"> + <th scope="row"><label for="corrupt_browser_info"><?php _e('Treat corrupt browser info as a bot', 'wp_statistics'); ?>:</label></th> + <td> + <input id="corrupt_browser_info" type="checkbox" value="1" name="wps_corrupt_browser_info" <?php echo $WP_Statistics->get_option('corrupt_browser_info')==true? "checked='checked'":'';?>><label for="wps_corrupt_browser_info"><?php _e('Enable', 'wp_statistics'); ?></label> + <p class="description"><?php echo __('Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('GeoIP Exclusions', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"><?php _e('Excluded countries list', 'wp_statistics'); ?>:</th> + <td> + <textarea id="wps_excluded_countries" name="wps_excluded_countries" rows="5" cols="10" class="code" dir="ltr"><?php echo htmlentities( $WP_Statistics->get_option('excluded_countries'), ENT_QUOTES );?></textarea> + <p class="description"><?php echo __('A list of country codes (one per line, two letters each) to exclude from statistics collection. Use "000" (three zeros) to exclude unknown countries.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"><?php _e('Included countries list', 'wp_statistics'); ?>:</th> + <td> + <textarea id="wps_included_countries" name="wps_included_countries" rows="5" cols="10" class="code" dir="ltr"><?php echo htmlentities( $WP_Statistics->get_option('included_countries'), ENT_QUOTES );?></textarea> + <p class="description"><?php echo __('A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use "000" (three zeros) to exclude unknown countries.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Host Exclusions', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"><?php _e('Excluded hosts list', 'wp_statistics'); ?>:</th> + <td> + <textarea id="wps_excluded_hosts" name="wps_excluded_hosts" rows="5" cols="80" class="code" dir="ltr"><?php echo htmlentities( $WP_Statistics->get_option('excluded_hosts'), ENT_QUOTES );?></textarea> + <p class="description"><?php echo __('A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection.', 'wp_statistics'); ?></p> + <br> + <p class="description"><?php echo __('Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it\'s IP address and when the cache is updated resulting in some hits recorded.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Site URL Exclusions', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"><?php _e('Excluded login page', 'wp_statistics'); ?>:</th> + <td> + <input id="wps-exclude-loginpage" type="checkbox" value="1" name="wps_exclude_loginpage" <?php echo $WP_Statistics->get_option('exclude_loginpage')==true? "checked='checked'":'';?>><label for="wps-exclude-loginpage"><?php _e('Exclude', 'wp_statistics'); ?></label> + <p class="description"><?php _e('Exclude the login page for registering as a hit.', 'wp_statistics'); ?></p> + </td> + </tr> + <tr valign="top"> + <th scope="row"><?php _e('Excluded admin pages', 'wp_statistics'); ?>:</th> + <td> + <input id="wps-exclude-adminpage" type="checkbox" value="1" name="wps_exclude_adminpage" <?php echo $WP_Statistics->get_option('exclude_adminpage')==true? "checked='checked'":'';?>><label for="wps-exclude-adminpage"><?php _e('Exclude', 'wp_statistics'); ?></label> + <p class="description"><?php _e('Exclude the admin pages for registering as a hit.', 'wp_statistics'); ?></p> + </td> + </tr> + <tr valign="top"> + <th scope="row"><?php _e('Excluded RSS feeds', 'wp_statistics'); ?>:</th> + <td> + <input id="wps-exclude-feeds" type="checkbox" value="1" name="wps_exclude_feeds" <?php echo $WP_Statistics->get_option('exclude_feeds')==true? "checked='checked'":'';?>><label for="wps-exclude-feeds"><?php _e('Exclude', 'wp_statistics'); ?></label> + <p class="description"><?php _e('Exclude the RSS feeds for registering as a hit.', 'wp_statistics'); ?></p> + </td> + </tr> + <tr valign="top"> + <th scope="row"><?php _e('Excluded 404 pages', 'wp_statistics'); ?>:</th> + <td> + <input id="wps-exclude-404s" type="checkbox" value="1" name="wps_exclude_404s" <?php echo $WP_Statistics->get_option('exclude_404s')==true? "checked='checked'":'';?>><label for="wps-exclude-404s"><?php _e('Exclude', 'wp_statistics'); ?></label> + <p class="description"><?php _e('Exclude any URL that returns a "404 - Not Found" message.', 'wp_statistics'); ?></p> + </td> + </tr> + <tr valign="top"> + <th scope="row"><?php _e('Excluded URLs list', 'wp_statistics'); ?>:</th> + <td> + <textarea id="wps_excluded_urls" name="wps_excluded_urls" rows="5" cols="80" class="code" dir="ltr"><?php echo htmlentities( $WP_Statistics->get_option('excluded_urls'), ENT_QUOTES );?></textarea> + <p class="description"><?php echo __('A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection.', 'wp_statistics'); ?></p> + <br> + <p class="description"><?php echo __('Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored.', 'wp_statistics'); ?></p> + </td> + </tr> + + </tbody> +</table> + +<?php submit_button(__('Update', 'wp_statistics'), 'primary', 'submit'); ?> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/settings/tabs/wps-externals.php b/plugins/wp-statistics/includes/settings/tabs/wps-externals.php new file mode 100644 index 0000000..55e14a0 --- /dev/null +++ b/plugins/wp-statistics/includes/settings/tabs/wps-externals.php @@ -0,0 +1,286 @@ +<?php +if( $wps_nonce_valid ) { + + $wps_option_list = array('wps_geoip','wps_update_geoip','wps_schedule_geoip','wps_auto_pop','wps_private_country_code','wps_browscap','wps_update_browscap','wps_schedule_browscap','wps_referrerspam','wps_update_referrerspam','wps_schedule_referrerspam'); + + // For country codes we always use upper case, otherwise default to 000 which is 'unknown'. + if( array_key_exists( 'wps_private_country_code', $_POST ) ) { + $_POST['wps_private_country_code'] = trim( strtoupper( $_POST['wps_private_country_code'] ) ); + } + else { + $_POST['wps_private_country_code'] = '000'; + } + + if( $_POST['wps_private_country_code'] == '' ) { $_POST['wps_private_country_code'] = '000'; } + + foreach( $wps_option_list as $option ) { + $new_option = str_replace( "wps_", "", $option ); + if( array_key_exists( $option, $_POST ) ) { $value = $_POST[$option]; } else { $value = ''; } + $WP_Statistics->store_option($new_option, $value); + } + + // If we're focing the download of the browscap.ini file, make sure to flush the last download time from the options. + if( array_key_exists( 'wps_update_browscap', $_POST ) ) { + $WP_Statistics->store_option('last_browscap_dl', 0); + } +} + +?> +<table class="form-table"> + <tbody> + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('GeoIP settings', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"> + <?php echo sprintf(__('IP location services provided by GeoLite2 data created by MaxMind, available from %s.', 'wp_statistics'), '<a href="http://www.maxmind.com" target=_blank>http://www.maxmind.com</a>'); ?> + </th> + </tr> + + <?php + if( wp_statistics_geoip_supported() ) + { + ?> + <tr valign="top"> + <th scope="row"> + <label for="geoip-enable"><?php _e('GeoIP collection', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="geoip-enable" type="checkbox" name="wps_geoip" <?php echo $WP_Statistics->get_option('geoip')==true? "checked='checked'":'';?>> + <label for="geoip-enable"><?php _e('Active', 'wp_statistics'); ?></label> + <p class="description"><?php _e('For get more information and location (country) from visitor, enable this feature.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="geoip-update"><?php _e('Update GeoIP Info', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="geoip-update" type="checkbox" name="wps_update_geoip" <?php echo $WP_Statistics->get_option('update_geoip')==true? "checked='checked'":'';?>> + <label for="geoip-update"><?php _e('Download GeoIP Database', 'wp_statistics'); ?></label> + <p class="description"><?php _e('Save changes on this page to download the update.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="geoip-schedule"><?php _e('Schedule monthly update of GeoIP DB', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="geoip-schedule" type="checkbox" name="wps_schedule_geoip" <?php echo $WP_Statistics->get_option('schedule_geoip')==true? "checked='checked'":'';?>> + <label for="geoip-schedule"><?php _e('Active', 'wp_statistics'); ?></label> + <?php + if( $WP_Statistics->get_option('schedule_geoip') ) { + echo '<p class="description">' . __('Next update will be') .': <code>'; + $last_update = $WP_Statistics->get_option('last_geoip_dl'); + $this_month = strtotime('First Tuesday of this month'); + + if( $last_update > $this_month ) { $next_update = strtotime('First Tuesday of next month') + (86400 * 2);} + else { $next_update = $this_month + (86400 * 2); } + + $next_schedule = wp_next_scheduled('wp_statistics_geoip_hook'); + + if( $next_schedule ) { + echo $WP_Statistics->Local_Date( get_option('date_format'), $next_update ) . ' @ ' . $WP_Statistics->Local_Date( get_option('time_format'), $next_schedule ); + } else { + echo $WP_Statistics->Local_Date( get_option('date_format'), $next_update ) . ' @ ' . $WP_Statistics->Local_Date( get_option('time_format'), time() ); + } + + echo '</code></p>'; + } + ?> + <p class="description"><?php _e('Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month.', 'wp_statistics'); ?></p> + <p class="description"><?php _e('This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place).', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="geoip-schedule"><?php _e('Populate missing GeoIP after update of GeoIP DB', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="geoip-auto-pop" type="checkbox" name="wps_auto_pop" <?php echo $WP_Statistics->get_option('auto_pop')==true? "checked='checked'":'';?>> + <label for="geoip-auto-pop"><?php _e('Active', 'wp_statistics'); ?></label> + <p class="description"><?php _e('Update any missing GeoIP data after downloading a new database.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="geoip-schedule"><?php _e('Country code for private IP addresses', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input type="text" size="3" id="geoip-private-country-code" name="wps_private_country_code" value="<?php echo htmlentities( $WP_Statistics->get_option('private_country_code', '000'), ENT_QUOTES );?>"> + <p class="description"><?php _e('The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use "000" (three zeros) to use "Unknown" as the country code.', 'wp_statistics'); ?></p> + </td> + </tr> +<?php + } + else + { +?> + <tr valign="top"> + <th scope="row" colspan="2"> + <?php + echo __('GeoIP collection is disabled due to the following reasons:', 'wp_statistics') . '<br><br>'; + + if( !version_compare(phpversion(), WP_STATISTICS_REQUIRED_GEOIP_PHP_VERSION, '>') ) { + printf( '    * ' . __('GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being ', 'wp_statistics'), '<code>' . WP_STATISTICS_REQUIRED_GEOIP_PHP_VERSION . '</code>' ); echo '<code>' . phpversion() . '</code>.<br>'; + } + + if( !function_exists('curl_init') ) { + echo '<br>    * '; + _e('GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!','wp_statistics'); + echo '<br>'; + } + + if( !function_exists('bcadd') ) { + echo '<br>    * '; + _e('GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!','wp_statistics'); + echo '<br>'; + } + + if( ini_get('safe_mode') ) { + echo '<br>    * '; + _e('PHP safe mode detected! GeoIP collection is not supported with PHP\'s safe mode enabled!','wp_statistics'); + echo '<br>'; + } + ?> + </th> + </tr> + <?php + } ?> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('browscap settings', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="browscap-enable"><?php _e('browscap usage', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="browscap-enable" type="checkbox" name="wps_browscap" <?php echo $WP_Statistics->get_option('browscap')==true? "checked='checked'":'';?>> + <label for="browscap-enable"><?php _e('Active', 'wp_statistics'); ?></label> + <p class="description"><?php _e('The browscap database will be downloaded and used to detect robots.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="browscap-update"><?php _e('Update browscap Info', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="browscap-update" type="checkbox" name="wps_update_browscap" <?php echo $WP_Statistics->get_option('update_browscap')==true? "checked='checked'":'';?>> + <label for="browscap-update"><?php _e('Download browscap Database', 'wp_statistics'); ?></label> + <p class="description"><?php _e('Save changes on this page to download the update.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="browscap-schedule"><?php _e('Schedule weekly update of browscap DB', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="browscap-schedule" type="checkbox" name="wps_schedule_browscap" <?php echo $WP_Statistics->get_option('schedule_browscap')==true? "checked='checked'":'';?>> + <label for="browscap-schedule"><?php _e('Active', 'wp_statistics'); ?></label> + <?php + if( $WP_Statistics->get_option('schedule_browscap') ) { + echo '<p class="description">' . __('Next update will be') .': <code>'; + $last_update = $WP_Statistics->get_option('last_browscap_dl'); + if( $last_update == 0 ) { $last_update = time(); } + $next_update = $last_update + (86400 * 7); + + $next_schedule = wp_next_scheduled('wp_statistics_browscap_hook'); + + if( $next_schedule ) { + echo date( get_option('date_format'), $next_schedule ) . ' @ ' . date( get_option('time_format'), $next_schedule ); + } else { + echo date( get_option('date_format'), $next_update ) . ' @ ' . date( get_option('time_format'), time() ); + } + + echo '</code></p>'; + } + ?> + <p class="description"><?php _e('Download of the browscap database will be scheduled for once a week.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Piwik Referrer Spam Blacklist settings', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"> + <?php echo sprintf(__('Referrer spam blacklist is provided by Piwik, available from %s.', 'wp_statistics'), '<a href="https://github.com/piwik/referrer-spam-blacklist" target=_blank>https://github.com/piwik/referrer-spam-blacklist</a>'); ?> + </th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="referrerspam-enable"><?php _e('Piwik Referrer Spam Blacklist usage', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="referrerspam-enable" type="checkbox" name="wps_referrerspam" <?php echo $WP_Statistics->get_option('referrerspam')==true? "checked='checked'":'';?>> + <label for="referrerspam-enable"><?php _e('Active', 'wp_statistics'); ?></label> + <p class="description"><?php _e('The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="geoip-update"><?php _e('Update Piwik Referrer Spam Blacklist Info', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="referrerspam-update" type="checkbox" name="wps_update_referrerspam" <?php echo $WP_Statistics->get_option('update_referrerspam')==true? "checked='checked'":'';?>> + <label for="referrerspam-update"><?php _e('Download Piwik Referrer Spam Blacklist Database', 'wp_statistics'); ?></label> + <p class="description"><?php _e('Save changes on this page to download the update.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="referrerspam-schedule"><?php _e('Schedule weekly update of Piwik Referrer Spam Blacklist DB', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="referrerspam-schedule" type="checkbox" name="wps_schedule_referrerspam" <?php echo $WP_Statistics->get_option('schedule_referrerspam')==true? "checked='checked'":'';?>> + <label for="referrerspam-schedule"><?php _e('Active', 'wp_statistics'); ?></label> + <?php + if( $WP_Statistics->get_option('schedule_referrerspam') ) { + echo '<p class="description">' . __('Next update will be') .': <code>'; + $last_update = $WP_Statistics->get_option('schedule_referrerspam'); + if( $last_update == 0 ) { $last_update = time(); } + $next_update = $last_update + (86400 * 7); + + $next_schedule = wp_next_scheduled('wp_statistics_referrerspam_hook'); + + if( $next_schedule ) { + echo date( get_option('date_format'), $next_schedule ) . ' @ ' . date( get_option('time_format'), $next_schedule ); + } else { + echo date( get_option('date_format'), $next_update ) . ' @ ' . date( get_option('time_format'), time() ); + } + + echo '</code></p>'; + } + ?> + <p class="description"><?php _e('Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week.', 'wp_statistics'); ?></p> + </td> + </tr> + + </tbody> +</table> + +<?php submit_button(__('Update', 'wp_statistics'), 'primary', 'submit'); ?> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/settings/tabs/wps-general.php b/plugins/wp-statistics/includes/settings/tabs/wps-general.php new file mode 100644 index 0000000..a251113 --- /dev/null +++ b/plugins/wp-statistics/includes/settings/tabs/wps-general.php @@ -0,0 +1,349 @@ +<?php +$selist = wp_statistics_searchengine_list( true ); + +$permalink = get_option( 'permalink_structure' ); + +$disable_strip_uri_parameters = false; +if( $permalink == '' || strpos( $permalink, '?' ) !== false ) { + $disable_strip_uri_parameters = true; +} + +if( $wps_nonce_valid ) { + foreach( $selist as $se ) { + $se_post = 'wps_disable_se_' . $se['tag']; + + if( array_key_exists( $se_post, $_POST ) ) { $value = $_POST[$se_post]; } else { $value = ''; } + $new_option = str_replace( "wps_", "", $se_post ); + $WP_Statistics->store_option($new_option, $value); + } + + $wps_option_list = array('wps_useronline','wps_visits','wps_visitors','wps_pages','wps_track_all_pages','wps_disable_column','wps_check_online','wps_menu_bar','wps_coefficient','wps_chart_totals','wps_store_ua','wps_hide_notices','wps_delete_manual','wps_hash_ips', 'wps_all_online', 'wps_strip_uri_parameters', 'wps_override_language','wps_addsearchwords' ); + + // If the IP hash's are enabled, disable storing the complete user agent. + if( array_key_exists( 'wps_hash_ips', $_POST ) ) { $_POST['wps_store_ua'] = ''; } + + // We need to check the permalink format for the strip_uri_parameters option, if the permalink is the default or contains uri parameters, we can't strip them. + if( $disable_strip_uri_parameters ) { $_POST['wps_strip_uri_parameters'] = ''; } + + foreach( $wps_option_list as $option ) { + if( array_key_exists( $option, $_POST ) ) { $value = $_POST[$option]; } else { $value = ''; } + $new_option = str_replace( "wps_", "", $option ); + $WP_Statistics->store_option($new_option, $value); + } + + if( $WP_Statistics->get_option('delete_manual') == true ) { + $filepath = realpath( plugin_dir_path(__FILE__) . "../../../" ) . "/"; + + if( file_exists( $filepath . WP_STATISTICS_MANUAL . 'html' ) ) { unlink( $filepath . WP_STATISTICS_MANUAL . 'html' ); } + if( file_exists( $filepath . WP_STATISTICS_MANUAL . 'odt' ) ) { unlink( $filepath . WP_STATISTICS_MANUAL . 'odt' ); } + } + +} + +?> +<script type="text/javascript"> + jQuery(document).ready(function() { + jQuery("#delete_manual").click(function(){ + if(!this.checked) + return; + + var agree = confirm('<?php _e('This will delete the manual when you save the settings, are you sure?', 'wp_statistics'); ?>'); + + if(!agree) + jQuery("#delete_manual").attr("checked", false); + + }); + }); + + function ToggleStatOptions() { + jQuery('[id^="wps_stats_report_option"]').fadeToggle(); + } +</script> + +<table class="form-table"> + <tbody> + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('IP Addresses', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="useronline"><?php _e('Hash IP Addresses', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="hash_ips" type="checkbox" value="1" name="wps_hash_ips" <?php echo $WP_Statistics->get_option('hash_ips')==true? "checked='checked'":'';?>> + <label for="hash_ips"><?php _e('Active', 'wp_statistics'); ?></label> + <p class="description"><?php _e('This feature will not store IP addresses in the database but instead used a unique hash. The "Store entire user agent string" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Users Online', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="useronline"><?php _e('User online', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="useronline" type="checkbox" value="1" name="wps_useronline" <?php echo $WP_Statistics->get_option('useronline')==true? "checked='checked'":'';?>> + <label for="useronline"><?php _e('Active', 'wp_statistics'); ?></label> + <p class="description"><?php _e('Enable or disable this feature', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="check_online"><?php _e('Check for online users every', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input type="text" class="small-text code" id="check_online" name="wps_check_online" value="<?php echo htmlentities($WP_Statistics->get_option('check_online'), ENT_QUOTES ); ?>"/> + <?php _e('Second', 'wp_statistics'); ?> + <p class="description"><?php echo sprintf(__('Time for the check accurate online user in the site. Now: %s Second', 'wp_statistics'), $WP_Statistics->get_option('check_online')); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="useronline"><?php _e('Record all user', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="allonline" type="checkbox" value="1" name="wps_all_online" <?php echo $WP_Statistics->get_option('all_online')==true? "checked='checked'":'';?>> + <label for="allonline"><?php _e('Active', 'wp_statistics'); ?></label> + <p class="description"><?php _e('Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Visits', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="visits"><?php _e('Visits', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="visits" type="checkbox" value="1" name="wps_visits" <?php echo $WP_Statistics->get_option('visits')==true? "checked='checked'":'';?>> + <label for="visits"><?php _e('Active', 'wp_statistics'); ?></label> + <p class="description"><?php _e('Enable or disable this feature', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Visitors', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="visitors"><?php _e('Visitors', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="visitors" type="checkbox" value="1" name="wps_visitors" <?php echo $WP_Statistics->get_option('visitors')==true? "checked='checked'":'';?>> + <label for="visitors"><?php _e('Active', 'wp_statistics'); ?></label> + <p class="description"><?php _e('Enable or disable this feature', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="visitors"><?php _e('Store entire user agent string', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="store_ua" type="checkbox" value="1" name="wps_store_ua" <?php echo $WP_Statistics->get_option('store_ua')==true? "checked='checked'":'';?>> + <label for="store_ua"><?php _e('Active', 'wp_statistics'); ?></label> + <p class="description"><?php _e('Only enabled for debugging', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="coefficient"><?php _e('Coefficient per visitor', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input type="text" class="small-text code" id="coefficient" name="wps_coefficient" value="<?php echo htmlentities($WP_Statistics->get_option('coefficient'), ENT_QUOTES ); ?>"/> + <p class="description"><?php echo sprintf(__('For each visit to account for several hits. Currently %s.', 'wp_statistics'), $WP_Statistics->get_option('coefficient')); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Pages', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="pages"><?php _e('Pages', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="pages" type="checkbox" value="1" name="wps_pages" <?php echo $WP_Statistics->get_option('pages')==true? "checked='checked'":'';?>> + <label for="pages"><?php _e('Active', 'wp_statistics'); ?></label> + <p class="description"><?php _e('Enable or disable this feature', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="pages"><?php _e('Track all pages', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="all_pages" type="checkbox" value="1" name="wps_track_all_pages" <?php echo $WP_Statistics->get_option('track_all_pages')==true? "checked='checked'":'';?>> + <label for="all_pages"><?php _e('Active', 'wp_statistics'); ?></label> + <p class="description"><?php _e('Enable or disable this feature', 'wp_statistics'); ?></p> + </td> + </tr> + +<?php + if( !$disable_strip_uri_parameters ) { +?> + <tr valign="top"> + <th scope="row"> + <label for="pages"><?php _e('Strip parameters from URI', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="strip_uri_parameters" type="checkbox" value="1" name="wps_strip_uri_parameters" <?php echo $WP_Statistics->get_option('strip_uri_parameters')==true? "checked='checked'":'';?>> + <label for="strip_uri_parameters"><?php _e('Active', 'wp_statistics'); ?></label> + <p class="description"><?php _e('This will remove anything after the ? in a URL.', 'wp_statistics'); ?></p> + </td> + </tr> +<?php + } +?> + <tr valign="top"> + <th scope="row"> + <label for="pages"><?php _e('Disable hits column in post/pages list', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="disable_column" type="checkbox" value="1" name="wps_disable_column" <?php echo $WP_Statistics->get_option('disable_column')==true? "checked='checked'":'';?>> + <label for="disable_column"><?php _e('Active', 'wp_statistics'); ?></label> + <p class="description"><?php _e('Enable or disable this feature', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Miscellaneous', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="menu-bar"><?php _e('Show stats in menu bar', 'wp_statistics'); ?>:</label> + </th> + + <td> + <select name="wps_menu_bar" id="menu-bar"> + <option value="0" <?php selected($WP_Statistics->get_option('menu_bar'), '0'); ?>><?php _e('No', 'wp_statistics'); ?></option> + <option value="1" <?php selected($WP_Statistics->get_option('menu_bar'), '1'); ?>><?php _e('Yes', 'wp_statistics'); ?></option> + </select> + <p class="description"><?php _e('Show stats in admin menu bar', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="hide_notices"><?php _e('Hide admin notices about non active features', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="hide_notices" type="checkbox" value="1" name="wps_hide_notices" <?php echo $WP_Statistics->get_option('hide_notices')==true? "checked='checked'":'';?>> + <label for="store_ua"><?php _e('Active', 'wp_statistics'); ?></label> + <p class="description"><?php _e('By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="hide_notices"><?php _e('Delete the manual', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="delete_manual" type="checkbox" value="1" name="wps_delete_manual" <?php echo $WP_Statistics->get_option('delete_manual')==true? "checked='checked'":'';?>> + <label for="delete_manual"><?php _e('Active', 'wp_statistics'); ?></label> + <p class="description"><?php _e('By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Search Engines', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="hide_notices"><?php _e('Add page title to empty search words', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="addsearchwords" type="checkbox" value="1" name="wps_addsearchwords" <?php echo $WP_Statistics->get_option('addsearchwords')==true? "checked='checked'":'';?>> + <label for="addsearchwords"><?php _e('Active', 'wp_statistics'); ?></label> + <p class="description"><?php _e('If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by "~:" as the search query to help identify what the user may have been searching for.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"> + <p class="description"><?php _e('Disabling all search engines is not allowed, doing so will result in all search engines being active.', 'wp_statistics');?></p> + </th> + </tr> + <?php + $se_option_list = ''; + + foreach( $selist as $se ) { + $option_name = 'wps_disable_se_' . $se['tag']; + $store_name = 'disable_se_' . $se['tag']; + $se_option_list .= $option_name . ','; + ?> + + <tr valign="top"> + <th scope="row"><label for="<?php echo $option_name;?>"><?php _e($se['name'], 'wp_statistics'); ?>:</label></th> + <td> + <input id="<?php echo $option_name;?>" type="checkbox" value="1" name="<?php echo $option_name;?>" <?php echo $WP_Statistics->get_option($store_name)==true? "checked='checked'":'';?>><label for="<?php echo $option_name;?>"><?php _e('disable', 'wp_statistics'); ?></label> + <p class="description"><?php echo sprintf(__('Disable %s from data collection and reporting.', 'wp_statistics'), $se['name']); ?></p> + </td> + </tr> + <?php } ?> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Charts', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="chart-totals"><?php _e('Include totals', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="chart-totals" type="checkbox" value="1" name="wps_chart_totals" <?php echo $WP_Statistics->get_option('chart_totals')==true? "checked='checked'":'';?>> + <label for="chart-totals"><?php _e('Active', 'wp_statistics'); ?></label> + <p class="description"><?php _e('Add a total line to charts with multiple values, like the search engine referrals', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Languages', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="chart-totals"><?php _e('Force English', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="override-language" type="checkbox" value="1" name="wps_override_language" <?php echo $WP_Statistics->get_option('override_language')==true? "checked='checked'":'';?>> + <label for="override-language"><?php _e('Active', 'wp_statistics'); ?></label> + <p class="description"><?php _e('Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)', 'wp_statistics'); ?></p> + </td> + </tr> + + </tbody> +</table> + +<?php submit_button(__('Update', 'wp_statistics'), 'primary', 'submit'); ?> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/settings/tabs/wps-maintenance.php b/plugins/wp-statistics/includes/settings/tabs/wps-maintenance.php new file mode 100644 index 0000000..0580a9f --- /dev/null +++ b/plugins/wp-statistics/includes/settings/tabs/wps-maintenance.php @@ -0,0 +1,88 @@ +<?php +if( $wps_nonce_valid ) { + + $wps_option_list = array('wps_schedule_dbmaint', 'wps_schedule_dbmaint_days', 'wps_schedule_dbmaint_visitor', 'wps_schedule_dbmaint_visitor_hits'); + + foreach( $wps_option_list as $option ) { + $new_option = str_replace( "wps_", "", $option ); + if( array_key_exists( $option, $_POST ) ) { $value = $_POST[$option]; } else { $value = ''; } + $WP_Statistics->store_option($new_option, $value); + } +} + +?> +<script type="text/javascript"> + function DBMaintWarning() { + var checkbox = jQuery('#wps_schedule_dbmaint'); + + if( checkbox.attr('checked') == 'checked' ) + { + if(!confirm('<?php _e('This will permanently delete data from the database each day, are you sure you want to enable this option?', 'wp_statistics'); ?>')) + checkbox.attr('checked', false); + } + + + } +</script> +<table class="form-table"> + <tbody> + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Purge Old Data Daily', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="wps_schedule_dbmaint"><?php _e('Enabled', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="wps_schedule_dbmaint" type="checkbox" name="wps_schedule_dbmaint" <?php echo $WP_Statistics->get_option('schedule_dbmaint')==true? "checked='checked'":'';?> onclick='DBMaintWarning();'> + <label for="wps_schedule_dbmaint"><?php _e('Active', 'wp_statistics'); ?></label> + <p class="description"><?php _e('A WP Cron job will be run daily to purge any data older than a set number of days.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="wps_schedule_dbmaint_days"><?php _e('Purge data older than', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input type="text" class="small-text code" id="wps_schedule_dbmaint_days" name="wps_schedule_dbmaint_days" value="<?php echo htmlentities( $WP_Statistics->get_option('schedule_dbmaint_days', "365"), ENT_QUOTES ); ?>"/> + <?php _e('Days', 'wp_statistics'); ?> + <p class="description"><?php echo __('The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Purge High Hit Count Visitors Daily', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="wps_schedule_dbmaint_visitor"><?php _e('Enabled', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="wps_schedule_dbmaint_visitor" type="checkbox" name="wps_schedule_dbmaint_visitor" <?php echo $WP_Statistics->get_option('schedule_dbmaint_visitor')==true? "checked='checked'":'';?> onclick='DBMaintWarning();'> + <label for="wps_schedule_dbmaint_visitor"><?php _e('Active', 'wp_statistics'); ?></label> + <p class="description"><?php _e('A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot).', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="wps_schedule_dbmaint_visitor_hits"><?php _e('Purge visitors with more than', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input type="text" class="small-text code" id="wps_schedule_dbmaint_visitor_hits" name="wps_schedule_dbmaint_visitor_hits" value="<?php echo htmlentities( $WP_Statistics->get_option('schedule_dbmaint_visitor_hits', '50'), ENT_QUOTES ); ?>"/> + <?php _e('Hits', 'wp_statistics'); ?> + <p class="description"><?php echo __('The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance.', 'wp_statistics'); ?></p> + </td> + </tr> + + </tbody> +</table> + +<?php submit_button(__('Update', 'wp_statistics'), 'primary', 'submit'); ?> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/settings/tabs/wps-notifications.php b/plugins/wp-statistics/includes/settings/tabs/wps-notifications.php new file mode 100644 index 0000000..3a43112 --- /dev/null +++ b/plugins/wp-statistics/includes/settings/tabs/wps-notifications.php @@ -0,0 +1,201 @@ +<?php +$selist = wp_statistics_searchengine_list( true ); + +if( $wps_nonce_valid ) { + + // We need to handle a change in the report schedule manually, so check to see it has been set. + if( array_key_exists( 'wps_time_report', $_POST ) ) { + // If the report has been changed, we need to update the schedule. + if( $WP_Statistics->get_option('time_report') != $_POST['wps_time_report'] ) { + // Remove the old schedule if it exists. + if( wp_next_scheduled('report_hook') ) { + wp_unschedule_event(wp_next_scheduled('report_hook'), 'report_hook'); + } + + // Setup the new schedule, we could just let this fall through and let the code in schedule.php deal with it + // but that would require an extra page load to start the schedule so do it here instead. + wp_schedule_event(time(), $_POST['wps_time_report'], 'report_hook'); + } + } + + $wps_option_list = array("wps_stats_report","wps_time_report","wps_send_report","wps_content_report","wps_email_list","wps_browscap_report","wps_geoip_report","wps_prune_report","wps_upgrade_report"); + + foreach( $wps_option_list as $option ) { + if( array_key_exists( $option, $_POST ) ) { $value = $_POST[$option]; } else { $value = ''; } + + // WordPress escapes form data no matter what the setting of magic quotes is in PHP (http://www.theblog.ca/wordpress-addslashes-magic-quotes). + $value = stripslashes($value); + + $new_option = str_replace( "wps_", "", $option ); + $WP_Statistics->store_option($new_option, $value); + } +} + +?> +<script type="text/javascript"> + function ToggleStatOptions() { + jQuery('[id^="wps_stats_report_option"]').fadeToggle(); + } +</script> + +<table class="form-table"> + <tbody> + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Common Report Options', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <td scope="row" style="vertical-align: top;"> + <label for="email-report"><?php _e('E-mail addresses', 'wp_statistics'); ?>:</label> + </td> + + <td> + <input type="text" id="email_list" name="wps_email_list" size="30" value="<?php if( $WP_Statistics->get_option('email_list') == '' ) { $WP_Statistics->store_option('email_list', get_bloginfo('admin_email')); } echo htmlentities( $WP_Statistics->get_option('email_list'), ENT_QUOTES ); ?>"/> + <p class="description"><?php _e('A comma separated list of e-mail addresses to send reports to.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Update Reports', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <td scope="row"> + <label for="browscap-report"><?php _e('Browscap', 'wp_statistics'); ?>:</label> + </td> + + <td> + <input id="browscap-report" type="checkbox" value="1" name="wps_browscap_report" <?php echo $WP_Statistics->get_option('browscap_report')==true? "checked='checked'":'';?>> + <label for="browscap-report"><?php _e('Active', 'wp_statistics'); ?></label> + <p class="description"><?php _e('Send a report whenever the browscap.ini is updated.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <td scope="row"> + <label for="geoip-report"><?php _e('GeoIP', 'wp_statistics'); ?>:</label> + </td> + + <td> + <input id="geoip-report" type="checkbox" value="1" name="wps_geoip_report" <?php echo $WP_Statistics->get_option('geoip_report')==true? "checked='checked'":'';?>> + <label for="geoip-report"><?php _e('Active', 'wp_statistics'); ?></label> + <p class="description"><?php _e('Send a report whenever the GeoIP database is updated.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <td scope="row"> + <label for="prune-report"><?php _e('Pruning', 'wp_statistics'); ?>:</label> + </td> + + <td> + <input id="prune-report" type="checkbox" value="1" name="wps_prune_report" <?php echo $WP_Statistics->get_option('prune_report')==true? "checked='checked'":'';?>> + <label for="prune-report"><?php _e('Active', 'wp_statistics'); ?></label> + <p class="description"><?php _e('Send a report whenever the pruning of database is run.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <td scope="row"> + <label for="upgrade-report"><?php _e('Upgrade', 'wp_statistics'); ?>:</label> + </td> + + <td> + <input id="upgrade-report" type="checkbox" value="1" name="wps_upgrade_report" <?php echo $WP_Statistics->get_option('upgrade_report')==true? "checked='checked'":'';?>> + <label for="upgrade-report"><?php _e('Active', 'wp_statistics'); ?></label> + <p class="description"><?php _e('Send a report whenever the plugin is upgraded.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('Statistical reporting', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="stats-report"><?php _e('Statistical reporting', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="stats-report" type="checkbox" value="1" name="wps_stats_report" <?php echo $WP_Statistics->get_option('stats_report')==true? "checked='checked'":'';?> onClick='ToggleStatOptions();'> + <label for="stats-report"><?php _e('Active', 'wp_statistics'); ?></label> + <p class="description"><?php _e('Enable or disable this feature', 'wp_statistics'); ?></p> + </td> + </tr> + + <?php if( $WP_Statistics->get_option('stats_report') ) { $hidden=""; } else { $hidden=" style='display: none;'"; }?> + <tr valign="top"<?php echo $hidden;?> id='wps_stats_report_option'> + <td scope="row" style="vertical-align: top;"> + <label for="time-report"><?php _e('Schedule', 'wp_statistics'); ?>:</label> + </td> + + <td> + <select name="wps_time_report" id="time-report"> + <option value="0" <?php selected($WP_Statistics->get_option('time_report'), '0'); ?>><?php _e('Please select', 'wp_statistics'); ?></option> +<?php + function wp_statistics_schedule_sort( $a, $b ) { + if ($a['interval'] == $b['interval']) { + return 0; + } + + return ($a['interval'] < $b['interval']) ? -1 : 1; + } + + $schedules = wp_get_schedules(); + + uasort( $schedules, 'wp_statistics_schedule_sort' ); + + foreach( $schedules as $key => $value ) { + echo ' <option value="' . $key . '" ' . selected($WP_Statistics->get_option('time_report'), $key) . '>' . $value['display'] . '</option>'; + } +?> + </select> + <p class="description"><?php _e('Select how often to receive statistical report.', 'wp_statistics'); ?></p> + </td> + </tr> + + <tr valign="top"<?php echo $hidden;?> id='wps_stats_report_option'> + <td scope="row" style="vertical-align: top;"> + <label for="send-report"><?php _e('Send reports via', 'wp_statistics'); ?>:</label> + </td> + + <td> + <select name="wps_send_report" id="send-report"> + <option value="0" <?php selected($WP_Statistics->get_option('send_report'), '0'); ?>><?php _e('Please select', 'wp_statistics'); ?></option> + <option value="mail" <?php selected($WP_Statistics->get_option('send_report'), 'mail'); ?>><?php _e('Email', 'wp_statistics'); ?></option> + <?php if( is_plugin_active('wp-sms/wp-sms.php') || is_plugin_active('wp-sms-pro/wp-sms.php') ) { ?> + <option value="sms" <?php selected($WP_Statistics->get_option('send_report'), 'sms'); ?>><?php _e('SMS', 'wp_statistics'); ?></option> + <?php } ?> + </select> + <p class="description"><?php _e('Select delivery method for statistical report.', 'wp_statistics'); ?></p> + + <?php if( !is_plugin_active('wp-sms/wp-sms.php') ) { ?> + <p class="description note"><?php echo sprintf(__('Note: To send SMS text messages please install the %s plugin.', 'wp_statistics'), '<a href="http://wordpress.org/extend/plugins/wp-sms/" target="_blank">' . __('WordPress SMS', 'wp_statistics') . '</a>'); ?></p> + <?php } ?> + </td> + </tr> + + <tr valign="top"<?php echo $hidden;?> id='wps_stats_report_option'> + <td scope="row" style="vertical-align: top;"> + <label for="content-report"><?php _e('Report body', 'wp_statistics'); ?>:</label> + </td> + + <td> + <?php wp_editor( $WP_Statistics->get_option('content_report'), 'content-report', array('media_buttons' => false, 'textarea_name' => 'wps_content_report', 'textarea_rows' => 5) ); ?> + <p class="description"><?php _e('Enter the contents of the report.', 'wp_statistics'); ?></p> + <p class="description data"> + <?php _e('Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:', 'wp_statistics'); ?><br><br> +     <?php _e('User Online', 'wp_statistics'); ?>: <code>[wpstatistics stat=usersonline]</code><br> +     <?php _e('Today Visitor', 'wp_statistics'); ?>: <code>[wpstatistics stat=visitors time=today]</code><br> +     <?php _e('Today Visit', 'wp_statistics'); ?>: <code>[wpstatistics stat=visits time=today]</code><br> +     <?php _e('Yesterday Visitor', 'wp_statistics'); ?>: <code>[wpstatistics stat=visitors time=yesterday]</code><br> +     <?php _e('Yesterday Visit', 'wp_statistics'); ?>: <code>[wpstatistics stat=visits time=yesterday]</code><br> +     <?php _e('Total Visitor', 'wp_statistics'); ?>: <code>[wpstatistics stat=visitors time=total]</code><br> +     <?php _e('Total Visit', 'wp_statistics'); ?>: <code>[wpstatistics stat=visits time=total]</code><br> + </p> + </td> + </tr> + </tbody> +</table> + +<?php submit_button(__('Update', 'wp_statistics'), 'primary', 'submit'); ?> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/settings/tabs/wps-overview-display.php b/plugins/wp-statistics/includes/settings/tabs/wps-overview-display.php new file mode 100644 index 0000000..d90259f --- /dev/null +++ b/plugins/wp-statistics/includes/settings/tabs/wps-overview-display.php @@ -0,0 +1,86 @@ +<?php + if( $wps_nonce_valid ) { + $wps_option_list = array( 'wps_disable_map','wps_disable_dashboard','wps_disable_editor' ); + + foreach( $wps_option_list as $option ) { + $new_option = str_replace( 'wps_', '', $option ); + + if( array_key_exists( $option, $_POST ) ) { $value = $_POST[$option]; } else { $value = ''; } + + $WP_Statistics->store_option( $new_option, $value ); + } + } + +// Only display the global options if the user is an administrator. +if( $wps_admin ) { +?> +<table class="form-table"> + <tbody> + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Dashboard', 'wp_statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <td scope="row" colspan="2"><?php _e( 'The following items are global to all users.', 'wp_statistics' );?></td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="disable-map"><?php _e( 'Disable dashboard widgets', 'wp_statistics' ); ?>:</label> + </th> + + <td> + <input id="disable-dashboard" type="checkbox" value="1" name="wps_disable_dashboard" <?php echo $WP_Statistics->get_option( 'disable_dashboard' ) == true ? "checked='checked'" : ''; ?>> + <label for="disable-dashboard"><?php _e( 'Active', 'wp_statistics' ); ?></label> + <p class="description"><?php _e( 'Disable the dashboard widgets.', 'wp_statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Page/Post Editor', 'wp_statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <td scope="row" colspan="2"><?php _e( 'The following items are global to all users.', 'wp_statistics' );?></td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="disable-map"><?php _e( 'Disable post/page editor widget', 'wp_statistics' ); ?>:</label> + </th> + + <td> + <input id="disable-editor" type="checkbox" value="1" name="wps_disable_editor" <?php echo $WP_Statistics->get_option( 'disable_editor' ) == true ? "checked='checked'" : ''; ?>> + <label for="disable-editor"><?php _e( 'Active', 'wp_statistics' ); ?></label> + <p class="description"><?php _e( 'Disable the page/post editor widget.', 'wp_statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Map', 'wp_statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <td scope="row" colspan="2"><?php _e( 'The following items are global to all users.', 'wp_statistics' );?></td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="disable-map"><?php _e( 'Disable map', 'wp_statistics' ); ?>:</label> + </th> + + <td> + <input id="disable-map" type="checkbox" value="1" name="wps_disable_map" <?php echo $WP_Statistics->get_option( 'disable_map' ) == true ? "checked='checked'" : ''; ?>> + <label for="disable-map"><?php _e( 'Active', 'wp_statistics' ); ?></label> + <p class="description"><?php _e( 'Disable the map display', 'wp_statistics' ); ?></p> + </td> + </tr> + + </tbody> +</table> +<?php + } + +submit_button( __( 'Update', 'wp_statistics' ), 'primary', 'submit' ); + +?> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/settings/tabs/wps-removal.php b/plugins/wp-statistics/includes/settings/tabs/wps-removal.php new file mode 100644 index 0000000..bc1f314 --- /dev/null +++ b/plugins/wp-statistics/includes/settings/tabs/wps-removal.php @@ -0,0 +1,42 @@ +<?php +if( $wps_nonce_valid ) { + + if( array_key_exists( 'wps_remove_plugin', $_POST ) ) { + if( is_super_admin() ) { + update_option('wp_statistics_removal', 'true' ); + } + } +} + +?> +<table class="form-table"> + <tbody> + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e('WP Statisitcs Removal', 'wp_statistics'); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"> + <?php echo __('Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin.', 'wp_statistics'); ?> + <br> + <br> + <?php echo __('Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed.', 'wp_statistics'); ?> + </th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="remove-plugin"><?php _e('Remove data and settings', 'wp_statistics'); ?>:</label> + </th> + + <td> + <input id="remove-plugin" type="checkbox" name="wps_remove_plugin"> + <label for="remove-plugin"><?php _e('Remove', 'wp_statistics'); ?></label> + <p class="description"><?php _e('Remove data and settings, this action cannot be undone.', 'wp_statistics'); ?></p> + </td> + </tr> + + </tbody> +</table> + +<?php submit_button(__('Update', 'wp_statistics'), 'primary', 'submit'); ?> \ No newline at end of file diff --git a/plugins/wp-statistics/includes/settings/wps-settings.php b/plugins/wp-statistics/includes/settings/wps-settings.php new file mode 100644 index 0000000..ab46b50 --- /dev/null +++ b/plugins/wp-statistics/includes/settings/wps-settings.php @@ -0,0 +1,154 @@ +<?php +$wps_nonce_valid = false; + +if( array_key_exists( 'wp-statistics-nonce', $_POST ) ) { + if( wp_verify_nonce( $_POST['wp-statistics-nonce'], 'update-options' ) ) { $wps_nonce_valid = true; } +} + +$wps_admin = false; + +if(current_user_can(wp_statistics_validate_capability($WP_Statistics->get_option('manage_capability', 'manage_options')))) { + $wps_admin = true; +} + +if( $wps_admin === false ) { $wps_admin = 0; } + +$selected_tab = ""; +if( array_key_exists( 'tab', $_GET ) ) { $selected_tab = $_GET['tab']; } + +switch( $selected_tab ) + { + case 'notifications': + if( $wps_admin ) { $current_tab = 1; } else { $current_tab = 0; } + break; + case 'overview': + if( $wps_admin ) { $current_tab = 2; } else { $current_tab = 0; } + break; + case 'access': + if( $wps_admin ) { $current_tab = 3; } else { $current_tab = 0; } + break; + case 'exclusions': + if( $wps_admin ) { $current_tab = 4; } else { $current_tab = 0; } + break; + case 'externals': + if( $wps_admin ) { $current_tab = 5; } else { $current_tab = 0; } + break; + case 'maintenance': + if( $wps_admin ) { $current_tab = 6; } else { $current_tab = 0; } + break; + case 'removal': + if( $wps_admin ) { $current_tab = 7; } else { $current_tab = 0; } + break; + case 'about': + if( $wps_admin ) { $current_tab = 8; } else { $current_tab = 1; } + break; + default: + $current_tab = 0; + + } +?> +<script type="text/javascript"> + jQuery(document).ready(function() { + jQuery("#tabs").tabs(); + <?php if( $current_tab != 0 ) { echo 'jQuery("#tabs").tabs("option", "active",' . $current_tab. ');' . "\n"; }?> + jQuery("#wps_update_button").click(function() { + var wps_admin = <?php echo $wps_admin;?>; + var tab = ''; + + switch( jQuery("#tabs").tabs("option", "active") ) { + case 0: + if( wps_admin == 1 ) { tab = 'general'; } else { tab = 'overview'; } + break; + case 1: + if( wps_admin == 1 ) { tab = 'notifications'; } else { tab = 'about'; } + break; + case 2: + if( wps_admin == 1 ) { tab = 'overview'; } else { tab = 'about'; } + break; + case 3: + if( wps_admin == 1 ) { tab = 'access'; } else { tab = 'about'; } + break; + case 4: + if( wps_admin == 1 ) { tab = 'exclusions'; } else { tab = 'about'; } + break; + case 5: + if( wps_admin == 1 ) { tab = 'Externals'; } else { tab = 'about'; } + break; + case 6: + if( wps_admin == 1 ) { tab = 'maintenance'; } else { tab = 'about'; } + break; + case 7: + if( wps_admin == 1 ) { tab = 'removal'; } else { tab = 'about'; } + break; + case 8: + tab = 'about'; + break; + } + + var clickurl = jQuery(location).attr('href') + '&tab=' + tab; + + jQuery('#wps_settings_form').attr('action', clickurl).submit(); + }); + } ); +</script> +<a name="top"></a> +<div class="wrap"> + <form id="wps_settings_form" method="post"> + <?php wp_nonce_field('update-options', 'wp-statistics-nonce');?> + <div id="tabs" class="ui-tabs ui-widget ui-widget-content ui-corner-all"> + <ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"> +<?php if( $wps_admin ) { ?> <li class="ui-state-default ui-corner-top"><a class="ui-tabs-anchor" href="#general-settings"><span><?php _e('General', 'wp_statistics'); ?></span></a></li><?php } ?> +<?php if( $wps_admin ) { ?> <li class="ui-state-default ui-corner-top"><a class="ui-tabs-anchor" href="#notifications-settings"><span><?php _e('Notifications', 'wp_statistics'); ?></span></a></li><?php } ?> + <li class="ui-state-default ui-corner-top"><a class="ui-tabs-anchor" href="#overview-display-settings"><span><?php _e('Dashboard/Overview', 'wp_statistics'); ?></span></a></li> +<?php if( $wps_admin ) { ?> <li class="ui-state-default ui-corner-top"><a class="ui-tabs-anchor" href="#access-settings"><span><?php _e('Access Levels', 'wp_statistics'); ?></span></a></li><?php } ?> +<?php if( $wps_admin ) { ?> <li class="ui-state-default ui-corner-top"><a class="ui-tabs-anchor" href="#exclusions-settings"><span><?php _e('Exclusions', 'wp_statistics'); ?></span></a></li><?php } ?> +<?php if( $wps_admin ) { ?> <li class="ui-state-default ui-corner-top"><a class="ui-tabs-anchor" href="#externals-settings"><span><?php _e('Externals', 'wp_statistics'); ?></span></a></li><?php } ?> +<?php if( $wps_admin ) { ?> <li class="ui-state-default ui-corner-top"><a class="ui-tabs-anchor" href="#maintenance-settings"><span><?php _e('Maintenance', 'wp_statistics'); ?></span></a></li><?php } ?> +<?php if( $wps_admin ) { ?> <li class="ui-state-default ui-corner-top"><a class="ui-tabs-anchor" href="#removal-settings"><span><?php _e('Removal', 'wp_statistics'); ?></span></a></li><?php } ?> + <li class="ui-state-default ui-corner-top"><a class="ui-tabs-anchor" href="#about"><span><?php _e('About', 'wp_statistics'); ?></span></a></li> + </ul> + + <div id="general-settings"> + <?php if( $wps_admin ) { include( dirname( __FILE__ ) . '/tabs/wps-general.php' ); } ?> + </div> + + <div id="notifications-settings"> + <?php if( $wps_admin ) { include( dirname( __FILE__ ) . '/tabs/wps-notifications.php' ); } ?> + </div> + + <div id="overview-display-settings"> + <?php include( dirname( __FILE__ ) . '/tabs/wps-overview-display.php' ); ?> + </div> + + <div id="access-settings"> + <?php if( $wps_admin ) { include( dirname( __FILE__ ) . '/tabs/wps-access-level.php' ); } ?> + </div> + + <div id="exclusions-settings"> + <?php if( $wps_admin ) { include( dirname( __FILE__ ) . '/tabs/wps-exclusions.php' ); } ?> + </div> + + <div id="externals-settings"> + <?php if( $wps_admin ) { include( dirname( __FILE__ ) . '/tabs/wps-externals.php' ); } ?> + </div> + + <div id="maintenance-settings"> + <?php if( $wps_admin ) { include( dirname( __FILE__ ) . '/tabs/wps-maintenance.php' ); } ?> + </div> + + <div id="removal-settings"> + <?php if( $wps_admin ) { include( dirname( __FILE__ ) . '/tabs/wps-removal.php' ); } ?> + </div> + + <div id="about"> + <?php include( dirname( __FILE__ ) . '/tabs/wps-about.php' ); ?> + </div> + </div> + </form> +</div> + +<?php +if( $wps_nonce_valid ) { + if( $wps_admin ) { $WP_Statistics->save_options(); } + $WP_Statistics->save_user_options(); +} diff --git a/plugins/wp-statistics/index.php b/plugins/wp-statistics/index.php new file mode 100644 index 0000000..a6ce9c8 --- /dev/null +++ b/plugins/wp-statistics/index.php @@ -0,0 +1,2 @@ +<?php +# Silence is golden. diff --git a/plugins/wp-statistics/languages/default.mo b/plugins/wp-statistics/languages/default.mo new file mode 100644 index 0000000..13b4669 Binary files /dev/null and b/plugins/wp-statistics/languages/default.mo differ diff --git a/plugins/wp-statistics/languages/default.po b/plugins/wp-statistics/languages/default.po new file mode 100644 index 0000000..50f6757 --- /dev/null +++ b/plugins/wp-statistics/languages/default.po @@ -0,0 +1,2869 @@ +# Copyright (C) 2016 WP Statistics +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"Project-Id-Version: WP Statistics 10.3\n" +"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-statistics\n" +"POT-Creation-Date: 2016-10-28 20:16:17+00:00\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2016-10-28 16:17-0400\n" +"Last-Translator: \n" +"Language-Team: \n" +"X-Generator: Poedit 1.8.4\n" + +#: ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "" + +#: ajax.php:34 +msgid "No agent data found to remove!" +msgstr "" + +#: ajax.php:38 ajax.php:68 ajax.php:120 ajax.php:126 +msgid "Please select the desired items." +msgstr "" + +#: ajax.php:41 ajax.php:71 ajax.php:129 ajax.php:154 ajax.php:184 ajax.php:296 +#: includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "" + +#: ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "" + +#: ajax.php:65 +msgid "No platform data found to remove!" +msgstr "" + +#: ajax.php:178 includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "" + +#: ajax.php:215 +msgid "No matching widget found!" +msgstr "" + +#: ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "" + +#: dashboard.php:56 +msgid "Quick Stats" +msgstr "" + +#: dashboard.php:57 includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "" + +#: dashboard.php:58 wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "" + +#: dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "" + +#: dashboard.php:60 editor.php:46 includes/log/hit-statistics.php:8 +#: wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "" + +#: dashboard.php:61 wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "" + +#: dashboard.php:62 includes/log/last-visitor.php:36 wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "" + +#: dashboard.php:63 includes/log/top-referring.php:59 +#: includes/log/top-referring.php:81 wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "" + +#: dashboard.php:64 includes/log/widgets/quickstats.php:75 +#: includes/log/widgets/summary.php:75 widget.php:293 wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "" + +#: dashboard.php:65 wp-statistics.php:468 +msgid "Summary" +msgstr "" + +#: dashboard.php:66 includes/log/last-search.php:31 wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "" + +#: dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "" + +#: dashboard.php:109 editor.php:66 includes/log/log.php:20 +msgid "Loading..." +msgstr "" + +#: dashboard.php:127 editor.php:84 includes/log/log.php:2 +msgid "Reloading..." +msgstr "" + +#: editor.php:58 +msgid "This post is not yet published." +msgstr "" + +#: includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "" + +#: includes/functions/functions.php:436 +msgid "Baidu" +msgstr "" + +#: includes/functions/functions.php:437 +msgid "Bing" +msgstr "" + +#: includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "" + +#: includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "" + +#: includes/functions/functions.php:440 +msgid "Google" +msgstr "" + +#: includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "" + +#: includes/functions/functions.php:442 +msgid "Yandex" +msgstr "" + +#: includes/functions/functions.php:895 +msgid "10 Days" +msgstr "" + +#: includes/functions/functions.php:895 +msgid "20 Days" +msgstr "" + +#: includes/functions/functions.php:895 +msgid "30 Days" +msgstr "" + +#: includes/functions/functions.php:895 +msgid "2 Months" +msgstr "" + +#: includes/functions/functions.php:895 +msgid "3 Months" +msgstr "" + +#: includes/functions/functions.php:895 +msgid "6 Months" +msgstr "" + +#: includes/functions/functions.php:895 +msgid "9 Months" +msgstr "" + +#: includes/functions/functions.php:895 +msgid "1 Year" +msgstr "" + +#: includes/functions/functions.php:953 includes/functions/functions.php:956 +msgid "Range" +msgstr "" + +#: includes/functions/functions.php:959 includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "" + +#: includes/functions/functions.php:959 +msgid "to" +msgstr "" + +#: includes/functions/functions.php:959 includes/log/top-visitors.php:29 +msgid "Go" +msgstr "" + +#: includes/functions/functions.php:1001 +msgid "%s table data deleted successfully." +msgstr "" + +#: includes/functions/functions.php:1005 +msgid "Error, %s not emptied!" +msgstr "" + +#: includes/functions/geoip-populate.php:24 +msgid "" +"Unable to load the GeoIP database, make sure you have downloaded it in the " +"settings page." +msgstr "" + +#: includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "" + +#: includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "" + +#: includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "" + +#: includes/functions/purge-hits.php:45 includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "" + +#: includes/functions/purge.php:21 includes/functions/purge.php:39 +#: includes/functions/purge.php:50 includes/functions/purge.php:61 +#: includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "" + +#: includes/functions/purge.php:23 includes/functions/purge.php:41 +#: includes/functions/purge.php:52 includes/functions/purge.php:63 +#: includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "" + +#: includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "" + +#: includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "" + +#: includes/log/all-browsers.php:29 includes/log/all-browsers.php:113 +#: includes/log/all-browsers.php:248 includes/log/exclusions.php:72 +#: includes/log/exclusions.php:190 includes/log/hit-statistics.php:26 +#: includes/log/hit-statistics.php:163 includes/log/last-search.php:64 +#: includes/log/last-visitor.php:67 includes/log/online.php:17 +#: includes/log/page-statistics.php:34 includes/log/search-statistics.php:28 +#: includes/log/top-countries.php:26 includes/log/top-pages.php:30 +#: includes/log/top-pages.php:156 includes/log/top-referring.php:77 +#: includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "" + +#: includes/log/all-browsers.php:30 wp-statistics.php:415 wp-statistics.php:469 +#: wp-statistics.php:529 +msgid "Browsers" +msgstr "" + +#: includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "" + +#: includes/log/all-browsers.php:114 includes/log/widgets/top.visitors.php:18 +#: includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "" + +#: includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "" + +#: includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "" + +#: includes/log/exclusions.php:8 +msgid "" +"Attention: Exclusion are not currently set to be recorded, the results below " +"may not reflect current statistics!" +msgstr "" + +#: includes/log/exclusions.php:24 +msgid "Robot" +msgstr "" + +#: includes/log/exclusions.php:24 +#: includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "" + +#: includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "" + +#: includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "" + +#: includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "" + +#: includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "" + +#: includes/log/exclusions.php:24 +msgid "User Role" +msgstr "" + +#: includes/log/exclusions.php:24 includes/log/search-statistics.php:105 +#: includes/log/widgets/quickstats.php:58 +#: includes/log/widgets/quickstats.php:105 includes/log/widgets/search.php:77 +#: includes/log/widgets/summary.php:58 includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "" + +#: includes/log/exclusions.php:24 +#: includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "" + +#: includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "" + +#: includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "" + +#: includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "" + +#: includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "" + +#: includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "" + +#: includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "" + +#: includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "" + +#: includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "" + +#: includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "" + +#: includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "" + +#: includes/log/exclusions.php:95 includes/log/hit-statistics.php:66 +#: includes/log/search-statistics.php:70 includes/log/widgets/hits.php:44 +#: includes/log/widgets/search.php:42 +#: includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "" + +#: includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "" + +#: includes/log/exclusions.php:191 includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "" + +#: includes/log/exclusions.php:197 includes/settings/tabs/wps-exclusions.php:46 +#: includes/settings/wps-settings.php:104 wp-statistics.php:417 +#: wp-statistics.php:531 +msgid "Exclusions" +msgstr "" + +#: includes/log/exclusions.php:201 includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "" + +#: includes/log/exclusions.php:206 includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "" + +#: includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "" + +#: includes/log/hit-statistics.php:66 includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "" + +#: includes/log/hit-statistics.php:87 includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "" + +#: includes/log/hit-statistics.php:101 includes/log/hit-statistics.php:170 +#: includes/log/widgets/hits.php:79 includes/log/widgets/quickstats.php:24 +#: includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "" + +#: includes/log/hit-statistics.php:101 includes/log/hit-statistics.php:171 +#: includes/log/widgets/hits.php:79 includes/log/widgets/quickstats.php:23 +#: includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "" + +#: includes/log/last-search.php:47 includes/log/last-visitor.php:38 +#: includes/log/top-referring.php:67 includes/log/top-referring.php:70 +#: includes/optimization/tabs/wps-optimization-purging.php:192 widget.php:309 +msgid "All" +msgstr "" + +#: includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "" + +#: includes/log/last-search.php:110 includes/log/last-visitor.php:101 +#: includes/log/online.php:50 includes/log/widgets/jqv.map.php:55 +#: includes/log/widgets/recent.php:14 includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "" + +#: includes/log/last-search.php:115 includes/log/last-visitor.php:106 +#: includes/log/online.php:55 includes/log/top-referring.php:112 +#: includes/log/widgets/recent.php:19 includes/log/widgets/words.php:42 +#: includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "" + +#: includes/log/last-search.php:159 includes/log/last-visitor.php:139 +#: includes/log/online.php:109 includes/log/top-pages.php:206 +#: includes/log/top-referring.php:153 +msgid "Page" +msgstr "" + +#: includes/log/last-search.php:159 includes/log/last-visitor.php:139 +#: includes/log/online.php:109 includes/log/top-pages.php:206 +#: includes/log/top-referring.php:153 +msgid "From" +msgstr "" + +#: includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "" + +#: includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "" + +#: includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "" + +#: includes/log/log.php:6 +msgid "Donate Now!" +msgstr "" + +#: includes/log/log.php:6 +msgid "Close" +msgstr "" + +#: includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "" + +#: includes/log/online.php:11 includes/log/online.php:18 +msgid "Online Users" +msgstr "" + +#: includes/log/online.php:75 +msgid "Online for " +msgstr "" + +#: includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "" + +#: includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "" + +#: includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "" + +#: includes/log/search-statistics.php:20 includes/log/search-statistics.php:29 +msgid "Search Engine Referral Statistics" +msgstr "" + +#: includes/log/search-statistics.php:70 includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "" + +#: includes/log/search-statistics.php:91 includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "" + +#: includes/log/top-countries.php:18 includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "" + +#: includes/log/top-countries.php:31 includes/log/widgets/countries.php:9 +#: includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "" + +#: includes/log/top-countries.php:32 includes/log/widgets/countries.php:10 +#: includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "" + +#: includes/log/top-countries.php:33 includes/log/widgets/countries.php:11 +#: includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "" + +#: includes/log/top-countries.php:34 includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "" + +#: includes/log/top-pages.php:21 includes/log/top-pages.php:157 +msgid "Top Pages" +msgstr "" + +#: includes/log/top-pages.php:31 +msgid "Top 5 Pages Trends" +msgstr "" + +#: includes/log/top-pages.php:68 +msgid "Top 5 Page Trending Stats" +msgstr "" + +#: includes/log/top-pages.php:89 includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "" + +#: includes/log/top-pages.php:103 +msgid "Rank #1" +msgstr "" + +#: includes/log/top-pages.php:103 +msgid "Rank #2" +msgstr "" + +#: includes/log/top-pages.php:103 +msgid "Rank #3" +msgstr "" + +#: includes/log/top-pages.php:103 +msgid "Rank #4" +msgstr "" + +#: includes/log/top-pages.php:103 +msgid "Rank #5" +msgstr "" + +#: includes/log/top-pages.php:185 includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "" + +#: includes/log/top-pages.php:188 includes/log/widgets/pages.php:16 +#: includes/optimization/tabs/wps-optimization-historical.php:37 +#: includes/settings/tabs/wps-general.php:122 +#: includes/settings/tabs/wps-general.php:127 shortcode.php:139 +msgid "Visits" +msgstr "" + +#: includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "" + +#: includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "" + +#: includes/log/top-referring.php:137 includes/log/widgets/referring.php:35 +msgid "References" +msgstr "" + +#: includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "" + +#: includes/log/top-visitors.php:26 +msgid "Date" +msgstr "" + +#: includes/log/top-visitors.php:41 wp-statistics.php:452 +msgid "Top Visitors" +msgstr "" + +#: includes/log/widgets/about.php:11 +msgid "Website" +msgstr "" + +#: includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "" + +#: includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "" + +#: includes/log/widgets/about.php:25 includes/settings/tabs/wps-about.php:12 +msgid "" +"This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "" + +#: includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "" + +#: includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "" + +#: includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "" + +#: includes/log/widgets/quickstats.php:28 +#: includes/log/widgets/quickstats.php:80 includes/log/widgets/summary.php:28 +#: includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "" + +#: includes/log/widgets/quickstats.php:34 +#: includes/log/widgets/quickstats.php:81 includes/log/widgets/summary.php:34 +#: includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "" + +#: includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "" + +#: includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "" + +#: includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "" + +#: includes/log/widgets/quickstats.php:99 includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "" + +#: includes/log/widgets/quickstats.php:118 includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "" + +#: includes/log/widgets/quickstats.php:118 includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "" + +#: includes/log/widgets/quickstats.php:122 includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "" + +#: includes/log/widgets/quickstats.php:126 includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "" + +#: includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "" + +#: includes/log/widgets/summary.php:12 +#: includes/settings/tabs/wps-general.php:82 shortcode.php:138 widget.php:39 +#: widget.php:260 +msgid "Users Online" +msgstr "" + +#: includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "" + +#: includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "" + +#: includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "" + +#: includes/log/widgets/top.visitors.php:12 +#: includes/settings/tabs/wps-maintenance.php:80 wp-statistics.php:339 +#: wp-statistics.php:418 wp-statistics.php:532 +msgid "Hits" +msgstr "" + +#: includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "" + +#: includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "" + +#: includes/log/widgets/top.visitors.php:19 +#: includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-database.php:15 +msgid "" +"If for some reason your installation of WP Statistics is missing the " +"database tables or other core items, this will re-execute the install " +"process." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-database.php:25 +#: includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics.php:416 wp-statistics.php:530 +msgid "Countries" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-database.php:42 +#: includes/optimization/tabs/wps-optimization-database.php:74 +#: includes/optimization/tabs/wps-optimization-updates.php:25 +#: includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-database.php:43 +msgid "" +"Older installs of WP Statistics allow for duplicate entries in the visitors " +"table in a corner case. Newer installs protect against this with a unique " +"index on the table. To create the index on the older installs duplicate " +"entries must be deleted first. Clicking \"Update Now\" will scan the " +"vistitors table, delete duplicate entries and add the index." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-database.php:44 +#: includes/optimization/tabs/wps-optimization-database.php:108 +msgid "" +"This operation could take a long time on installs with many rows in the " +"visitors table." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-database.php:50 +msgid "" +"Older installs of WP Statistics allow for duplicate entries in the visitors " +"table in a corner case. Newer installs protect against this with a unique " +"index on the table." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-database.php:51 +#: includes/optimization/tabs/wps-optimization-database.php:83 +#: includes/optimization/tabs/wps-optimization-database.php:114 +msgid "" +"Congratulations, your installation is already up to date, nothing to do." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-database.php:75 +msgid "" +"Older installs of WP Statistics allow for duplicate entries in the visits " +"table in a corner case. Newer installs protect against this with a unique " +"index on the table. To create the index on the older installs duplicate " +"entries must be deleted first. Clicking \"Update Now\" will scan the " +"vistits table, delete duplicate entries and add the index." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-database.php:76 +msgid "" +"This operation could take a long time on installs with many rows in the " +"visits table." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-database.php:82 +msgid "" +"Older installs of WP Statistics allow for duplicate entries in the visits " +"table in a corner case. Newer installs protect against this with a unique " +"index on the table." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-database.php:107 +msgid "" +"Older installs of WP Statistics store details of searches in the visitors " +"table which can become a performance issue on large datasets. A new table " +"has been created to hold this information in a more scalable fashion, " +"however the old data must first be converted to the new format before it can " +"be used." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-database.php:113 +msgid "" +"Older installs of WP Statistics store details of searches in the visitors " +"table which can become a performance issue on large datasets. A new table " +"has been created to hold this information in a more scalable fashion." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-export.php:8 +#: includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-export.php:18 +#: includes/optimization/tabs/wps-optimization-export.php:37 +#: includes/optimization/tabs/wps-optimization-purging.php:185 +#: includes/optimization/tabs/wps-optimization-purging.php:242 +#: includes/optimization/tabs/wps-optimization-purging.php:266 +#: includes/settings/tabs/wps-notifications.php:134 +#: includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "" +"Note: As you have just purged the database you must reload this page for " +"these numbers to be correct." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-historical.php:26 +#: includes/settings/tabs/wps-general.php:138 +#: includes/settings/tabs/wps-general.php:143 shortcode.php:140 +#: wp-statistics.php:425 wp-statistics.php:539 +msgid "Visitors" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "" +"Number of historical number of visitors to the site (current value is %s)." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "" +"Number of historical number of visits to the site (current value is %s)." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-purging.php:10 +#: includes/optimization/tabs/wps-optimization-purging.php:43 +#: includes/optimization/tabs/wps-optimization-purging.php:75 +#: includes/optimization/tabs/wps-optimization-purging.php:107 +#: includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "" +"Deleted user statistics data older than the selected number of days. " +"Minimum value is 30 days." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-purging.php:210 +#: includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-purging.php:218 +#: includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "" +"Deleted user statistics data where the user has more than the defined number " +"of hits in a day. This can be useful to clear up old data when your site " +"has been hit by a bot. This will remove the visitor and their hits to the " +"site, however it will not remove individual page hits as that data is not " +"recorded on a per use basis. Minimum value is 10 hits." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-purging.php:253 +#: includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:22 +#: includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:44 +#: includes/optimization/tabs/wps-optimization-resources.php:55 +#: includes/optimization/tabs/wps-optimization-resources.php:66 +#: includes/optimization/tabs/wps-optimization-resources.php:77 +#: includes/optimization/tabs/wps-optimization-resources.php:88 +#: includes/optimization/tabs/wps-optimization-resources.php:99 +#: includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:48 +#: includes/optimization/tabs/wps-optimization-resources.php:59 +#: includes/optimization/tabs/wps-optimization-resources.php:70 +#: includes/optimization/tabs/wps-optimization-resources.php:81 +#: includes/optimization/tabs/wps-optimization-resources.php:92 +#: includes/optimization/tabs/wps-optimization-resources.php:103 +#: includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:49 +#: includes/optimization/tabs/wps-optimization-resources.php:60 +#: includes/optimization/tabs/wps-optimization-resources.php:71 +#: includes/optimization/tabs/wps-optimization-resources.php:82 +#: includes/optimization/tabs/wps-optimization-resources.php:93 +#: includes/optimization/tabs/wps-optimization-resources.php:104 +#: includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "" +"Is PHP compiled with IPv6 support. You may see warning messages in your PHP " +"log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "" +"The PHP cURL Extension version you are running. cURL is required for the " +"GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "" +"If the gzopen() function is installed. gzopen() is required for the GeoIP " +"database to be downloaded successfully." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:217 +#: includes/optimization/tabs/wps-optimization-resources.php:236 +#: includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "" + +#: includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "" +"This will replace all IP addresses in the database with hash values and " +"cannot be undo, are you sure?" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "" +"Updates any unknown location data in the database, this may take a while" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-updates.php:31 +#: includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-updates.php:36 +#: includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "" + +#: includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "" +"Replace IP addresses in the database with hash values, you will not be able " +"to recover the IP addresses in the future to populate location information " +"afterwards and this may take a while" +msgstr "" + +#: includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "" + +#: includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "" + +#: includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "" + +#: includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "" + +#: includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "" + +#: includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "" + +#: includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "" + +#: includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "" + +#: includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "" + +#: includes/settings/tabs/wps-about.php:20 wp-statistics.php:431 +msgid "Donate" +msgstr "" + +#: includes/settings/tabs/wps-about.php:24 +msgid "" +"Fell like showing us how much you enjoy WP Statistics? Drop by our %s page " +"and show us some love!" +msgstr "" + +#: includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "" + +#: includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "" + +#: includes/settings/tabs/wps-about.php:32 +msgid "" +"Come visit our great new %s and keep up to date on the latest news about WP " +"Statistics." +msgstr "" + +#: includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "" + +#: includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "" + +#: includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "" + +#: includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "" + +#: includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "" + +#: includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "" + +#: includes/settings/tabs/wps-about.php:48 +msgid "" +"WP Statistics supports internationalization and we encourage our users to " +"submit translations, please visit our %s to see the current status and %s if " +"you would like to help." +msgstr "" + +#: includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "" + +#: includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "" + +#: includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "" + +#: includes/settings/tabs/wps-about.php:57 +msgid "" +"We're sorry you're having problem with WP Statistics and we're happy to help " +"out. Here are a few things to do before contacting us:" +msgstr "" + +#: includes/settings/tabs/wps-about.php:60 +#: includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "" + +#: includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "" + +#: includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "" + +#: includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "" + +#: includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "" + +#: includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "" + +#: includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "" + +#: includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "" + +#: includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "" + +#: includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "" + +#: includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "" + +#: includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "" + +#: includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "" + +#: includes/settings/tabs/wps-about.php:75 +msgid "" +"Are you getting a blank or incomplete page displayed in your browser? Did " +"you view the source for the page and check for any fatal errors?" +msgstr "" + +#: includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "" + +#: includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "" + +#: includes/settings/tabs/wps-about.php:79 +msgid "" +"Then please open a new thread on the %s and we'll respond as soon as " +"possible." +msgstr "" + +#: includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "" + +#: includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "" + +#: includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "" + +#: includes/settings/tabs/wps-access-level.php:23 +#: includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "" + +#: includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "" + +#: includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "" + +#: includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "" + +#: includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "" + +#: includes/settings/tabs/wps-access-level.php:76 +msgid "" +"Hint: manage_network = Super Admin Network, manage_options = Administrator, " +"edit_others_posts = Editor, publish_posts = Author, edit_posts = " +"Contributor, read = Everyone." +msgstr "" + +#: includes/settings/tabs/wps-access-level.php:77 +msgid "" +"Each of the above casscades the rights upwards in the default WordPress " +"configuration. So for example selecting publish_posts grants the right to " +"Authors, Editors, Admins and Super Admins." +msgstr "" + +#: includes/settings/tabs/wps-access-level.php:78 +msgid "" +"If you need a more robust solution to delegate access you might want to look " +"at %s in the WordPress plugin directory." +msgstr "" + +#: includes/settings/tabs/wps-access-level.php:85 +#: includes/settings/tabs/wps-exclusions.php:237 +#: includes/settings/tabs/wps-externals.php:286 +#: includes/settings/tabs/wps-general.php:349 +#: includes/settings/tabs/wps-maintenance.php:88 +#: includes/settings/tabs/wps-notifications.php:201 +#: includes/settings/tabs/wps-overview-display.php:84 +#: includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:52 +#: includes/settings/tabs/wps-exclusions.php:106 +#: includes/settings/tabs/wps-exclusions.php:136 +#: includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:53 +msgid "" +"This will record all the excluded hits in a separate table with the reasons " +"why it was excluded but no other information. This will generate a lot of " +"data but is useful if you want to see the total number of hits your site " +"gets, not just actual user visits." +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:74 +#: includes/settings/tabs/wps-exclusions.php:199 +#: includes/settings/tabs/wps-exclusions.php:206 +#: includes/settings/tabs/wps-exclusions.php:213 +#: includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:98 +msgid "" +"A list of words (one per line) to match against to detect robots. Entries " +"must be at least 4 characters long or they will be ignored." +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:107 +msgid "" +"Force the robot list to be reset to the default after an update to WP " +"Statistics takes place. Note if this option is enabled any custom robots " +"you have added to the list will be lost." +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:115 +msgid "" +"Treat visitors with more than this number of visits per day as robots. 0 = " +"disabled." +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:123 +msgid "" +"A list of IP addresses and subnet masks (one per line) to exclude from " +"statistics collection." +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:124 +msgid "" +"For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 " +"formats are accepted. To specify an IP address only, use a subnet value of " +"32 or 255.255.255.255." +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:154 +msgid "" +"Treat any visitor with corrupt browser info (missing IP address or empty " +"user agent string) as a robot." +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:166 +msgid "" +"A list of country codes (one per line, two letters each) to exclude from " +"statistics collection. Use \"000\" (three zeros) to exclude unknown " +"countries." +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:174 +msgid "" +"A list of country codes (one per line, two letters each) to include in " +"statistics collection, if this list is not empty, only visitors from the " +"included countries will be recorded. Use \"000\" (three zeros) to exclude " +"unknown countries." +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:186 +msgid "" +"A list of fully qualified host names (ie. server.example.com, one per line) " +"to exclude from statistics collection." +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:188 +msgid "" +"Note: this option will NOT perform a reverse DNS lookup on each page load " +"but instead cache the IP address for the provided hostnames for one hour. " +"If you are excluding dynamically assigned hosts you may find some degree of " +"overlap when the host changes it's IP address and when the cache is updated " +"resulting in some hits recorded." +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:228 +msgid "" +"A list of local urls (ie. /wordpress/about, one per line) to exclude from " +"statistics collection." +msgstr "" + +#: includes/settings/tabs/wps-exclusions.php:230 +msgid "" +"Note: this option will NOT handle url parameters (anything after the ?), " +"only to the script name. Entries less than two characters will be ignored." +msgstr "" + +#: includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "" + +#: includes/settings/tabs/wps-externals.php:37 +msgid "" +"IP location services provided by GeoLite2 data created by MaxMind, available " +"from %s." +msgstr "" + +#: includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "" + +#: includes/settings/tabs/wps-externals.php:52 +#: includes/settings/tabs/wps-externals.php:76 +#: includes/settings/tabs/wps-externals.php:109 +#: includes/settings/tabs/wps-externals.php:172 +#: includes/settings/tabs/wps-externals.php:196 +#: includes/settings/tabs/wps-externals.php:236 +#: includes/settings/tabs/wps-externals.php:260 +#: includes/settings/tabs/wps-general.php:76 +#: includes/settings/tabs/wps-general.php:92 +#: includes/settings/tabs/wps-general.php:116 +#: includes/settings/tabs/wps-general.php:132 +#: includes/settings/tabs/wps-general.php:148 +#: includes/settings/tabs/wps-general.php:160 +#: includes/settings/tabs/wps-general.php:187 +#: includes/settings/tabs/wps-general.php:199 +#: includes/settings/tabs/wps-general.php:214 +#: includes/settings/tabs/wps-general.php:228 +#: includes/settings/tabs/wps-general.php:258 +#: includes/settings/tabs/wps-general.php:270 +#: includes/settings/tabs/wps-general.php:286 +#: includes/settings/tabs/wps-general.php:325 +#: includes/settings/tabs/wps-general.php:341 +#: includes/settings/tabs/wps-maintenance.php:40 +#: includes/settings/tabs/wps-maintenance.php:68 +#: includes/settings/tabs/wps-notifications.php:69 +#: includes/settings/tabs/wps-notifications.php:81 +#: includes/settings/tabs/wps-notifications.php:93 +#: includes/settings/tabs/wps-notifications.php:105 +#: includes/settings/tabs/wps-notifications.php:121 +#: includes/settings/tabs/wps-overview-display.php:34 +#: includes/settings/tabs/wps-overview-display.php:54 +#: includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "" + +#: includes/settings/tabs/wps-externals.php:53 +msgid "" +"For get more information and location (country) from visitor, enable this " +"feature." +msgstr "" + +#: includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "" + +#: includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "" + +#: includes/settings/tabs/wps-externals.php:65 +#: includes/settings/tabs/wps-externals.php:185 +#: includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "" + +#: includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "" + +#: includes/settings/tabs/wps-externals.php:79 +#: includes/settings/tabs/wps-externals.php:199 +#: includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "" + +#: includes/settings/tabs/wps-externals.php:97 +msgid "" +"Download of the GeoIP database will be scheduled for 2 days after the first " +"Tuesday of the month." +msgstr "" + +#: includes/settings/tabs/wps-externals.php:98 +msgid "" +"This option will also download the database if the local filesize is less " +"than 1k (which usually means the stub that comes with the plugin is still in " +"place)." +msgstr "" + +#: includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "" + +#: includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "" + +#: includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "" + +#: includes/settings/tabs/wps-externals.php:121 +msgid "" +"The international standard two letter country code (ie. US = United States, " +"CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, " +"192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" " +"as the country code." +msgstr "" + +#: includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "" + +#: includes/settings/tabs/wps-externals.php:135 +msgid "" +"GeoIP collection requires PHP %s or above, it is currently disabled due to " +"the installed PHP version being " +msgstr "" + +#: includes/settings/tabs/wps-externals.php:140 +msgid "" +"GeoIP collection requires the cURL PHP extension and it is not loaded on " +"your version of PHP!" +msgstr "" + +#: includes/settings/tabs/wps-externals.php:146 +msgid "" +"GeoIP collection requires the BC Math PHP extension and it is not loaded on " +"your version of PHP!" +msgstr "" + +#: includes/settings/tabs/wps-externals.php:152 +msgid "" +"PHP safe mode detected! GeoIP collection is not supported with PHP's safe " +"mode enabled!" +msgstr "" + +#: includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "" + +#: includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "" + +#: includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "" + +#: includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "" + +#: includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "" + +#: includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "" + +#: includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "" + +#: includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "" + +#: includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "" + +#: includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "" + +#: includes/settings/tabs/wps-externals.php:237 +msgid "" +"The Piwik Referrer Spam Blacklist database will be downloaded and used to " +"detect referrer spam." +msgstr "" + +#: includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "" + +#: includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "" + +#: includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "" + +#: includes/settings/tabs/wps-externals.php:279 +msgid "" +"Download of the Piwik Referrer Spam Blacklist database will be scheduled for " +"once a week." +msgstr "" + +#: includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "" + +#: includes/settings/tabs/wps-general.php:77 +msgid "" +"This feature will not store IP addresses in the database but instead used a " +"unique hash. The \"Store entire user agent string\" setting will be " +"disabled if this is selected. You will not be able to recover the IP " +"addresses in the future to recover location information if this is enabled." +msgstr "" + +#: includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "" + +#: includes/settings/tabs/wps-general.php:93 +#: includes/settings/tabs/wps-general.php:133 +#: includes/settings/tabs/wps-general.php:149 +#: includes/settings/tabs/wps-general.php:188 +#: includes/settings/tabs/wps-general.php:200 +#: includes/settings/tabs/wps-general.php:229 +#: includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "" + +#: includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "" + +#: includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "" + +#: includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "" + +#: includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "" + +#: includes/settings/tabs/wps-general.php:117 +msgid "" +"Ignores the exclusion settings and records all users that are online " +"(including self referrals and robots). Should only be used for " +"troubleshooting." +msgstr "" + +#: includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "" + +#: includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "" + +#: includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "" + +#: includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "" + +#: includes/settings/tabs/wps-general.php:177 +#: includes/settings/tabs/wps-general.php:182 wp-statistics.php:420 +#: wp-statistics.php:534 +msgid "Pages" +msgstr "" + +#: includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "" + +#: includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "" + +#: includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "" + +#: includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "" + +#: includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "" + +#: includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "" + +#: includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "" + +#: includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "" + +#: includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "" + +#: includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "" + +#: includes/settings/tabs/wps-general.php:259 +msgid "" +"By default WP Statistics displays an alert if any of the core features are " +"disabled on every admin page, this option will disable these notices." +msgstr "" + +#: includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "" + +#: includes/settings/tabs/wps-general.php:271 +msgid "" +"By default WP Statistics stores the admin manual in the plugin directory (~5 " +"meg), if this option is enabled it will be deleted now and during upgrades " +"in the future." +msgstr "" + +#: includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "" + +#: includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "" + +#: includes/settings/tabs/wps-general.php:287 +msgid "" +"If a search engine is identified as the referrer but it does not include the " +"search query this option will substitute the page title in quotes preceded " +"by \"~:\" as the search query to help identify what the user may have been " +"searching for." +msgstr "" + +#: includes/settings/tabs/wps-general.php:293 +msgid "" +"Disabling all search engines is not allowed, doing so will result in all " +"search engines being active." +msgstr "" + +#: includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "" + +#: includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "" + +#: includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "" + +#: includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "" + +#: includes/settings/tabs/wps-general.php:326 +msgid "" +"Add a total line to charts with multiple values, like the search engine " +"referrals" +msgstr "" + +#: includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "" + +#: includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "" + +#: includes/settings/tabs/wps-general.php:342 +msgid "" +"Do not use the translations and instead use the English defaults for WP " +"Statistics (requires two page loads)" +msgstr "" + +#: includes/settings/tabs/wps-maintenance.php:20 +msgid "" +"This will permanently delete data from the database each day, are you sure " +"you want to enable this option?" +msgstr "" + +#: includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "" + +#: includes/settings/tabs/wps-maintenance.php:35 +#: includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "" + +#: includes/settings/tabs/wps-maintenance.php:41 +msgid "" +"A WP Cron job will be run daily to purge any data older than a set number of " +"days." +msgstr "" + +#: includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "" + +#: includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "" + +#: includes/settings/tabs/wps-maintenance.php:53 +msgid "" +"The number of days to keep statistics for. Minimum value is 30 days. " +"Invalid values will disable the daily maintenance." +msgstr "" + +#: includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "" + +#: includes/settings/tabs/wps-maintenance.php:69 +msgid "" +"A WP Cron job will be run daily to purge any users statistics data where the " +"user has more than the defined number of hits in a day (aka they are " +"probably a bot)." +msgstr "" + +#: includes/settings/tabs/wps-maintenance.php:81 +msgid "" +"The number of hits required to delete the visitor. Minimum value is 10 " +"hits. Invalid values will disable the daily maintenance." +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:111 +#: includes/settings/tabs/wps-notifications.php:116 schedule.php:221 +msgid "Statistical reporting" +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:187 +msgid "" +"Any shortcode supported by your installation of WordPress, include all " +"shortcodes for WP Statistics (see the admin manual for a list of codes " +"available) are supported in the body of the message. Here are some examples:" +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:188 wp-statistics.php:639 +msgid "User Online" +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "" + +#: includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "" + +#: includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "" + +#: includes/settings/tabs/wps-overview-display.php:24 +#: includes/settings/tabs/wps-overview-display.php:44 +#: includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "" + +#: includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "" + +#: includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "" + +#: includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "" + +#: includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "" + +#: includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "" + +#: includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "" + +#: includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "" + +#: includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "" + +#: includes/settings/tabs/wps-removal.php:20 +msgid "" +"Uninstalling WP Statistics will not remove the data and settings, you can " +"use this option to remove the WP Statistics data from your install before " +"uninstalling the plugin." +msgstr "" + +#: includes/settings/tabs/wps-removal.php:23 +msgid "" +"Once you submit this form the settings will be deleted during the page load, " +"however WP Statistics will still show up in your Admin menu until another " +"page load is executed." +msgstr "" + +#: includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "" + +#: includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "" + +#: includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "" + +#: includes/settings/wps-settings.php:100 +msgid "General" +msgstr "" + +#: includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "" + +#: includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "" + +#: includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "" + +#: includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "" + +#: includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "" + +#: includes/settings/wps-settings.php:108 +msgid "About" +msgstr "" + +#: schedule.php:10 +msgid "Once Weekly" +msgstr "" + +#: schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "" + +#: schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "" + +#: shortcode.php:132 +msgid "Statistic" +msgstr "" + +#: shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "" + +#: shortcode.php:141 +msgid "Page Visits" +msgstr "" + +#: shortcode.php:142 wp-statistics.php:422 wp-statistics.php:536 +msgid "Searches" +msgstr "" + +#: shortcode.php:143 +msgid "Post Count" +msgstr "" + +#: shortcode.php:144 +msgid "Page Count" +msgstr "" + +#: shortcode.php:145 +msgid "Comment Count" +msgstr "" + +#: shortcode.php:146 +msgid "Spam Count" +msgstr "" + +#: shortcode.php:147 +msgid "User Count" +msgstr "" + +#: shortcode.php:148 +msgid "Post Average" +msgstr "" + +#: shortcode.php:149 +msgid "Comment Average" +msgstr "" + +#: shortcode.php:150 +msgid "User Average" +msgstr "" + +#: shortcode.php:151 widget.php:180 widget.php:337 +msgid "Last Post Date" +msgstr "" + +#: shortcode.php:155 +msgid "Time Frame" +msgstr "" + +#: shortcode.php:158 +msgid "" +"The time frame to get the statistic for, strtotime() (http://php.net/manual/" +"en/datetime.formats.php) will be used to calculate it. Use \"total\" to get " +"all recorded dates." +msgstr "" + +#: shortcode.php:162 +msgid "Search Provider" +msgstr "" + +#: shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "" + +#: shortcode.php:169 +msgid "Number Format" +msgstr "" + +#: shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "" + +#: shortcode.php:175 +msgid "None" +msgstr "" + +#: shortcode.php:176 +msgid "English" +msgstr "" + +#: shortcode.php:177 +msgid "International" +msgstr "" + +#: shortcode.php:181 +msgid "Post/Page ID" +msgstr "" + +#: shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "" + +#: widget.php:14 wp-statistics.php:410 wp-statistics.php:487 +msgid "Statistics" +msgstr "" + +#: widget.php:15 +msgid "Show site stats in sidebar." +msgstr "" + +#: widget.php:46 widget.php:263 +msgid "Todays Visits" +msgstr "" + +#: widget.php:53 widget.php:266 +msgid "Todays Visitors" +msgstr "" + +#: widget.php:60 +msgid "Yesterdays Visits" +msgstr "" + +#: widget.php:67 widget.php:272 +msgid "Yesterdays Visitors" +msgstr "" + +#: widget.php:74 widget.php:275 +msgid "Last 7 Days Visits" +msgstr "" + +#: widget.php:81 widget.php:278 +msgid "Last 30 Days Visits" +msgstr "" + +#: widget.php:88 widget.php:281 +msgid "Last 365 Days Visits" +msgstr "" + +#: widget.php:95 widget.php:284 +msgid "Total Visits" +msgstr "" + +#: widget.php:102 widget.php:287 +msgid "Total Visitors" +msgstr "" + +#: widget.php:109 widget.php:290 +msgid "Total Page Views" +msgstr "" + +#: widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: widget.php:124 widget.php:313 +msgid "Total Posts" +msgstr "" + +#: widget.php:131 widget.php:316 +msgid "Total Pages" +msgstr "" + +#: widget.php:138 widget.php:319 +msgid "Total Comments" +msgstr "" + +#: widget.php:145 widget.php:322 +msgid "Total Spams" +msgstr "" + +#: widget.php:152 widget.php:325 +msgid "Total Users" +msgstr "" + +#: widget.php:159 widget.php:328 +msgid "Average Posts" +msgstr "" + +#: widget.php:166 widget.php:331 +msgid "Average Comments" +msgstr "" + +#: widget.php:173 widget.php:334 +msgid "Average Users" +msgstr "" + +#: widget.php:253 +msgid "Name" +msgstr "" + +#: widget.php:257 +msgid "Items" +msgstr "" + +#: widget.php:269 +msgid "Yesterdays visits" +msgstr "" + +#: widget.php:296 +msgid "Select type of search engine" +msgstr "" + +#. Plugin Name of the plugin/theme +#: wp-statistics.php:56 +msgid "WP Statistics" +msgstr "" + +#. Description of the plugin/theme +#: wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "" + +#: wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "" + +#: wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "" + +#: wp-statistics.php:101 +msgid "" +"WP Statistics has detected PHP version %s which is unsupported, WP " +"Statistics requires PHP Version %s or higher!" +msgstr "" + +#: wp-statistics.php:103 +msgid "" +"Please contact your hosting provider to upgrade to a supported version or " +"disable WP Statistics to remove this message." +msgstr "" + +#: wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "" + +#: wp-statistics.php:180 +msgid "online user tracking" +msgstr "" + +#: wp-statistics.php:181 +msgid "hit tracking" +msgstr "" + +#: wp-statistics.php:182 +msgid "visitor tracking" +msgstr "" + +#: wp-statistics.php:183 +msgid "geoip collection" +msgstr "" + +#: wp-statistics.php:186 +msgid "" +"The following features are disabled, please go to %s and enable them: %s" +msgstr "" + +#: wp-statistics.php:186 +msgid "settings page" +msgstr "" + +#: wp-statistics.php:186 wp-statistics.php:208 +msgid "," +msgstr "" + +#: wp-statistics.php:192 +msgid "search table" +msgstr "" + +#: wp-statistics.php:199 +msgid "countries database index" +msgstr "" + +#: wp-statistics.php:199 +msgid "visit database index" +msgstr "" + +#: wp-statistics.php:208 +msgid "" +"Database updates are required, please go to %s and update the following: %s" +msgstr "" + +#: wp-statistics.php:208 +msgid "optimization page" +msgstr "" + +#: wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "" + +#: wp-statistics.php:315 wp-statistics.php:430 wp-statistics.php:541 +msgid "Settings" +msgstr "" + +#: wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "" + +#: wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "" + +#: wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "" + +#: wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "" + +#: wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "" + +#: wp-statistics.php:413 wp-statistics.php:490 wp-statistics.php:528 +msgid "Overview" +msgstr "" + +#: wp-statistics.php:419 wp-statistics.php:533 +msgid "Online" +msgstr "" + +#: wp-statistics.php:421 wp-statistics.php:535 +msgid "Referrers" +msgstr "" + +#: wp-statistics.php:423 wp-statistics.php:537 +msgid "Search Words" +msgstr "" + +#: wp-statistics.php:424 wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "" + +#: wp-statistics.php:429 wp-statistics.php:540 +msgid "Optimization" +msgstr "" + +#: wp-statistics.php:435 wp-statistics.php:504 +msgid "Manual" +msgstr "" + +#: wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "" + +#: wp-statistics.php:519 +msgid "Site" +msgstr "" + +#: wp-statistics.php:520 +msgid "Options" +msgstr "" + +#: wp-statistics.php:646 +msgid "Today visitor" +msgstr "" + +#: wp-statistics.php:652 +msgid "Today visit" +msgstr "" + +#: wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "" + +#: wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "" + +#: wp-statistics.php:670 +msgid "View Stats" +msgstr "" + +#: wp-statistics.php:694 +msgid "Download ODF file" +msgstr "" + +#: wp-statistics.php:695 +msgid "Download HTML file" +msgstr "" + +#: wp-statistics.php:699 +msgid "Manual file not found." +msgstr "" + +#: wp-statistics.php:766 wp-statistics.php:893 wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "" + +#: wp-statistics.php:793 +msgid "" +"The following plugin table(s) do not exist in the database, please re-run " +"the %s install routine %s: " +msgstr "" + +#: wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "" + +#: wps-updates.php:37 +msgid "" +"Error creating GeoIP database directory, make sure your web server has " +"permissions to create directories in : %s" +msgstr "" + +#: wps-updates.php:45 +msgid "" +"Error setting permissions of the GeoIP database directory, make sure your " +"web server has permissions to write to directories in : %s" +msgstr "" + +#: wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "" + +#: wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "" + +#: wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "" + +#: wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "" + +#: wps-updates.php:113 +msgid "GeoIP update on" +msgstr "" + +#: wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "" + +#: wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "" + +#: wps-updates.php:299 +msgid "" +"browscap database updated failed! Cache file too large, reverting to " +"previous browscap.ini." +msgstr "" + +#: wps-updates.php:307 +msgid "" +"browscap database updated failed! New browscap.ini is mis-identifing user " +"agents as crawlers, reverting to previous browscap.ini." +msgstr "" + +#: wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "" + +#: wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "" + +#. Plugin URI of the plugin/theme +#. Author URI of the plugin/theme +msgid "http://wp-statistics.com/" +msgstr "" + +#. Author of the plugin/theme +msgid "Mostafa Soufi & Greg Ross" +msgstr "" diff --git a/plugins/wp-statistics/languages/wp_statistics-ar.mo b/plugins/wp-statistics/languages/wp_statistics-ar.mo new file mode 100644 index 0000000..1bfc50d Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-ar.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-ar.po b/plugins/wp-statistics/languages/wp_statistics-ar.po new file mode 100644 index 0000000..d3d0b04 --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-ar.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in Arabic +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-03-26 05:58:31+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: ar\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "لايوجد ودجات متطابق!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "Zlib gzopen()" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "إذا الدالة gzopen() منصبة. قاعدة بيانات GeoIP تتطلب gzopen() للتحميل بنجاح." + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "خطأ في download_url() أو gzopen() الوظائف لا وجود لها." + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "خطأ في صلاحيات دليل قاعدة بيانات GeoIP, تأكد من أن الخادم يعطي صلاحيات الكتابة للدليل في: %s" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "— أنت تقوم بتشغيل إصدار PHP غير معتمد." + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "إحصائيات ووردبريس معطلة" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "إحصائيات ووردبريس وجدت إصدار PHP %s غير معتمد, الإضافة تتطلب إصدار PHP %s أو أعلى!" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "يرجى الاتصال بموفر خدمة الاستضافة للترقية إلى إصدار معتمد أو عطل إحصائيات ووردبريس لإزالة هذه الرسالة." + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "خطأ: القطعة غير موجود!" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "تحميل..." + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "إعادة تحميل ..." + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "كبار الزوار" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "صفحة التحسين" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "تمكين" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "تطهير البيانات اليومية القديمة" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "سيتم تشغيل المهام المجدولة لووردبريس يوميا لتطهير أي بيانات قديمة من عدد محدد من الأيام." + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "تطهير البيانات الأقدم من" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "تطهير النقرات العالية لعدد الزوار اليومي" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "سيتم تشغيل مهام ووردبريس المجدولة يوميا لتطهير أي إحصائيات بيانات مستخدمين حيث أن المستخدم لديه أكثر من عدد محدد من الزيارات في اليوم الواحد (الملقب أنها ربما تكون بوت)." + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "عدد الزيارات المطلوبة لحذف الزائر. قيمة الحد الأدنى هو 10 نقرات. والقيم الغير صالحة ستعطل في وضع الصيانة اليومي." + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "رقم المقال/الصفحة للحصول على احصائياتها." + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "رقم المقال/الصفحة" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "Ask.com" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "الجدول الزمني للحصول على إحصائية لـ, strtotime() (http://php.net/manual/en/datetime.formats.php) سيتم استخدامها لحساب ذلك. استخدام \"المجموع\" للحصول على كل التواريخ المسجلة." + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "تتبع الزوار" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "مجموعة geoip" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "زيارة فهرس قاعدة البيانات" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "يجب تحديث قاعدة البيانات، يرجى الذهاب إلى %s وتحديث التالي: %s" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "دول فهرس قاعدة البيانات" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "جدول البحث" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "صفحة الإعدادات" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "،" + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "الميزات التالية معطلة، يرجى الذهاب إلى %s وتمكينها: %s" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "تتبع النقرات" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "تتبع المستخدم المتصل" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "جدول الإضافة التالية غير موجود في قاعدة البيانات, يرجى إعادة تشغيل %s للتثبيت الروتيني %s:" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "بحث تحويل الجدول المكتمل، الصفوف %d أضيفت." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "التثبيت القديمة من احصائيات ووردبريس تخزن تفاصيل البحث في جدول آخر التي يمكن أن تصبح مشكلة على أداء مجموعات البيانات الكبيرة. تم إنشاء جدول جديد لإجراء هذه المعلومات بطريقة أفضل للتحجيم." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "جدول البحث" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "التحويل" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "تحويل الآن!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "التثبيت القديمة من احصائيات ووردبريس تخزن تفاصيل البحث في جدول آخر التي يمكن أن تصبح مشكلة على أداء مجموعات البيانات الكبيرة. تم إنشاء جدول جديد لإجراء هذه المعلومات بطريقة أفضل للتدرج، ولكن يجب أولا تحويل البيانات القديمة إلى الشكل الجديد قبل أن تتمكن من استخدامها." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "إحالات البريد المزعج" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "سيتم جدولة التحميل من قاعدة البيانات Piwik لإحالات الرسائل الغير مرغوب فيها بالقائمة السوداء لمرة واحدة في الأسبوع." + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "الجهات الخارجية" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "إعدادات القائمة السوداء Piwik لإحالات الرسائل الغير مرغوب فيها" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "جدولة التحديث الأسبوعي لـ Piwik لإحالات الرسائل الغير مرغوب فيها بقاعدة بيانات القائمة السوداء" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "تحميل قاعدة البيانات Piwik لإحالات الرسائل الغير مرغوب فيها من القائمة السوداء" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "تحديث Piwik لإحالات الرسائل الغير مرغوب فيها بمعلومات القائمة السوداء" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "سيتم تحميل قاعدة البيانات Piwik لإحالات الرسائل الغير مرغوب فيها بالقائمة السوداء واستخدامها للكشف عن مرجعية البريد المزعج." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "يتم توفير إحالات الرسائل الغير مرغوب فيها بالقائمة السوداء من قبل Piwik، وهي متاحة من %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "المرجع Piwik للرسائل الغير المرغوب فيها باستخدام القائمة السوداء" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "علاج معلومات المتصفح فاسدة بوت" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "404 صفحات" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "تاريخ" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "علاج أي زائر مع معلومات الفاسدة المتصفح (عنوان IP مفقود أو فارغة سلسلة عامل المستخدم) على الروبوت." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "استبعاد 404 صفحات" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "استبعاد أي URL التي تقوم بإرجاع - رسالة "404 لم يتم العثور على"." + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "خطأ في إنشاء GeoIP دليل قاعدة البيانات، تأكد من خادم الويب الخاص بك لديه أذونات لإنشاء الدلائل في:٪ الصورة" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "إضافة عنوان الصفحة على كلمات بحث فارغة" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "إذا تم التعرف على محرك بحث باسم المرجع لكنه لا يشمل استعلام البحث هذا الخيار يوجب استبدال عنوان الصفحة في الاقتباس الذي يسبقه \"~:\" كما طلب البحث للمساعدة في تحديد ما قد تم البحث عنه من قبل المستخدم." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "الزوار المطهرين مع أكثر من" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "مشاهدات" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "حذف بيانات إحصائيات المستخدم حيث أن المستخدم لديه أكثر من عدد محدد من الزيارات في يوم واحد. هذا يمكن أن يكون مفيد لتوضيح البيانات القديمة عندما يتم زيارة موقعك من خلال بوت. سيؤدي ذلك إلى إزالة الزوار ونقراتهم في الموقع، على كل حال هذا لن يزيل النقرات الفردية للصفحة كما لم يتم تسجيل تلك البيانات على أساس كل استخدام. قيمة الحد الأدنى هو 10 نقرات." + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "لم يتم إيجاد زوار في التطهير." + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "%s سجلات طهرت بنجاح." + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "عدد الزيارات يجب أن يكون أكبر من أو يساوي 10!" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "عدد زيارات هذه الصفحة" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "عدد الصفحة" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "عدد التعليق" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "عدد السبام" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "عدد المستخدم" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "متوسط المشاركة" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "متوسط التعليق" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "متوسط المستخدم" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "محرك البحث" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "مزود البحث للحصول على إحصائيات عن." + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "صيغة الرقم" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "صيغة الأرقام للعرض في: I18N، الانجليزية، لا شيء." + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "الإنجليزية" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "دولي" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "موجز إحصائيات المشاهدات" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "إجمالي الرسم البياني" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "مجموع كل الوقت" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "هل فكرت في التبرع لإحصائيات ووردبريس؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "التبرع" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "صف لنا مدى إستمتاعك في منتج إحصائيات ووردبريس؟ واضغط صفحة %s وبيّن لنا بعض الحب!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "التبرعات" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "تبرع الآن!" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "إغلاق" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "حدد الإحصائية التي ترغب في عرضها." + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "إحصائية" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "عدد المقال" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "الإطار الزمني" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "إلى" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "إذهب" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "المرتبة #5" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "المرتبة #4" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "المرتبة #3" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "المرتبة #1" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "المرتبة #2" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "جدول الزيارات" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "التثبيتات القديمة من احصائيات ووردبريس تسمح للإدخالات المكررة في جدول الزيارات في كل مرة. بتثبيت أحدث حماية مقابل هذا الفهرس الفريد على الجدول. و لإنشاء فهرس على الإصدارات القديمة المثبتة يجب أن يتم حذف الإدخالات المكررة أولا. أنقر على \"التحديث الآن\" لفحص جدول الزيارات، وحذف الإدخالات المكررة وإضافة الفهرس." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "هذه العملية يمكن أن تستغرق وقتا طويلا لتثبيت العديد من الصفوف في جدول الزيارات." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "التثبيتات القديمة من احصائيات ووردبريس تسمح للإدخالات المكررة في جدول الزيارات. للحماية من ذلك ثبت الفهرس الفريد في الجدول." + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "تمت تصفيتها من قبل" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "المدى" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "MM/DD/YYYY" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "لا تستخدم الترجمات واستخدام بدلاً من ذلك الإعدادات الافتراضية الإنجليزية لإحصائيات ووردبريس (يتطلب تحميل صفحتين)" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "إجبار اللغة الإنجليزية" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "اللغات" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "ملاحظة: هذا الخيار لن يتعامل مع معايير عنوان URL، (أي شيء بعد علامة؟) إلا اسم البرنامج النصي . سيتم تجاهل إدخالات أقل من حرفين." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "قائمة عناوين المواقع المحلية (اتصل بنا,حول, واحد في كل سطر) للإستبعاد من جمع الإحصائيات." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "قائمة عناوين المواقع المستبعدة" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "العناوين المستبعدة" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "مشاركة 365 يوم (السنة)" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "آخر 30 يوم (شهر)" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "آخر 7 أيام (أسبوع)" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "ياهو!" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "ياندكس" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "clearch.org" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "دك دك غو" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "بينج" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "بايدو" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "التغذيات" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "دور المستخدم" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "صفحة تسجيل الدخول" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "صفحة الإدارة" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "الإحالة الذاتية" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "المتطابق IP" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "روبوت" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "حالياً هناك مستخدمين متواجدين في الموقع." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "الحد من الروبوت" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "وعاء العسل" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "صفحة الإحصائيات الأكثر رواجاً" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "اسم المضيف" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "تمكين أو تعطيل هذه الميزة" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "تحقق من المتصلين في الموقع في كل" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "ثانية" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "وقت التحقق من المستخدمين المتصلين في الموقع. الآن: %s ثانية" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "تسجيل جميع المستخدمين" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "يتجاهل إعدادات الإقصاء ويسجل كل المستخدمين التي يتم على الانترنت (بما في ذلك الإحالة الذاتية والروبوتات). وينبغي أن تستخدم فقط لاستكشاف الأخطاء وإصلاحها." + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "تخزين كامل سلسلة عامل المستخدم" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "تمكين فقط من أجل التصحيح" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "درجة لكل زائر" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "حساب توجيه النقرات لكل زائر. حالياً %s." + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "الصفحات" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "تتبع جميع الصفحات" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "معايير الشريط من URI" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "سيؤدي هذا إلى إزالة أي شيء بعد؟ في URL." + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "تعطيل عمود النقرات في قائمة المقال/الصفحات" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "متفرقات" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "إظهار الاحصائيات في شريط القوائم" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "لا" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "نعم" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "اظهار الاحصائيات في شريط القوائم الإداري" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "اخفاء إشعارات المشرف حول الميزات غير نشطة" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "افتراضيا احصائيات ووردبريس يعرض تنبيها إذا تم تعطيل أي من الميزات الأساسية في صفحة المشرف، وهذا الخيار لتعطيل هذه الإشعارات." + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "حذف الدليل" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "افتراضيا احصائيات ووردبريس يخزن دليل المشرف في الدليل المساعد (~ 5 ميج)، إذا تم تمكين هذا الخيار سيتم حذفه الآن، وخلال الترقيات في المستقبل." + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "محركات البحث" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "تعطيل جميع محركات البحث غير مسموح, سيؤدي ذلك الى تنشيط جميع محركات البحث." + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "تعطيل" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "تعطيل %s من جمع البيانات وإعداد التقارير." + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "الرسوم البيانية" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "تتضمن الاجماليات" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "إضافة سطر مجموع المخططات مع قيم متعددة، مثل إحالات محرك البحث" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "إعدادات GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "خدمات الموقع IP المقدمة من البيانات GeoLite2 التي أنشأتها MaxMind، المتاحة من %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "مجموعة GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "للحصول على مزيد من المعلومات، والمكان (البلد) من الزوار، تمكين هذه الميزة." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "تحديث معلومات GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "تحميل قاعدة بيانات GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "جدولة التحديث الشهري لGeoIP DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "سيتم جدولة التحميل من قاعدة البيانات GeoIP لمدة 2 يوما بعد يوم الثلاثاء الأول من الشهر." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "وهذا الخيار أيضا تحميل قاعدة البيانات إذا كان حجم الملف المحلي أقل من 1K (الذي يعني عادة أن طرف البرنامج التي تأتي مع البرنامج المساعد لا يزال في مكانه)." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "تعبئة GeoIP في عداد المفقودين بعد التحديث من GeoIP DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "تحديث أي بيانات GeoIP مفقودة بعد تحميل قاعدة البيانات الجديدة." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "رمز البلد لعناوين IP خاصة" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "المعيار اثنين الرمز الدولي بلد إلكتروني (أي الولايات المتحدة = الولايات المتحدة الأمريكية، CA = كندا، الخ) ل(غير قابل للتوجيه) عناوين IP خاصة (أي. 10.0.0.1، 192.158.1.1، 127.0.0.1، وما إلى ذلك). استخدام \"000\" (ثلاثة أصفار) لاستخدام \"غير معروف\"، كما رمز البلد." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "تم تعطيل مجموعة GeoIP وذلك للأسباب التالية:" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "جمع GeoIP يتطلب PHP %s أو أعلى، يتم تعطيله حاليا نظرا لكونها نسخة PHP مثبتة" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "مجموعة GeoIP تتطلب الملحق cURL PHP و هو غير مفعل على إصدار الـ PHP!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "مجموعة GeoIP تتطلب الملحق BC Math PHP و هو غير مفعل على إصدار الـ PHP!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "تم الكشف عن الوضع الآمن في PHP! مجموعة GeoIP غير معتمدة عند تمكين الوضع الآمن في PHP!" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "سيؤدي ذلك إلى حذف البيانات من قاعدة البيانات بشكل دائم كل يوم، هل أنت متأكد من أنك تريد تمكين هذا الخيار؟" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "أيام" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "عدد الأيام للحفاظ على الإحصاءات المتعلقة. قيمة الحد الأدنى هو 30 يوما. سيتم تعطيل الصيانة اليومية في حال ادخال قيم غير صالحة." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "خيارات تقرير المشترك" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "عناوين البريد الإلكتروني" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "أفصل قائمة عناوين البريد الإلكتروني بفاصلة لإرسال التقارير إلى." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "تقارير التحديث" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "Browscap" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "إرسال تقرير كلما يتم تحديث browscap.ini." + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "إرسال تقرير كلما يتم تحديث قاعدة البيانات GeoIP." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "تنقيح" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "إرسال تقرير كلما يتم تشغيل التنقيح في قاعدة البيانات." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "ترقية" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "إرسال تقرير كلما تتم ترقية البرنامج المساعد." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "تقارير الإحصائيات" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "جدول" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "حدد عدد المرات لتلقي تقرير إحصائي." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "إرسال التقارير عن طريق" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "البريد الإلكتروني" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "رسائل نصية" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "حدد طريقة التسليم للتقرير الإحصائي." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "ملاحظة: لإرسال رسائل نصية SMS الرجاء تثبيت إضافة %s." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "الرسائل النصية" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "تقرير الهيئة" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "أدخل محتويات التقرير." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "أي رمز قصير بدعم من مثبت ووردبريس، وتشمل جميع الاكواد المختصرة لاحصائيات ووردبريس (انظر دليل المشرف للحصول على قائمة رموز المتاحة) معتمدة في نص الرسالة. وهنا بعض الأمثلة:" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "المتواجدين الآن" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "زوار اليوم" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "زيارات اليوم" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "زوار الأمس" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "زيارات الأمس" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "مجموع الزوار" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "مجموع الزيارات" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "لا شيء" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "حول" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "لوحة القيادة" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "العناصر التالية هي عالمية لجميع المستخدمين." + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "تعطيل قطع لوحة القيادة" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "تعطيل القطع للوحة القيادة" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "محرر الصفحة/المشاركة" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "تعطيل قطعة محرر الصفحة/المشاركة" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "تعطيل القطع لمحرر الصفحة/المشاركة" + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "جوجل" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "تعطيل الخريطة" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "تعطيل عرض الخريطة" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "إزالة احصائيات ووردبريس" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "إزالة احصائيات ووردبريس لن تقوم بإزالة البيانات والإعدادات، يمكنك استخدام هذا الخيار لإزالة البيانات الخاصة بك قبل إلغاء تثبيت البرنامج المساعد." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "بمجرد التقدم في هذا الخيار سيتم حذف الإعدادات أثناء تحميل صفحة هذا النموذج، ولكن سوف تزال تظهر احصائيات ووردبريس في قائمة المشرف الخاص بك حتى يتم تحميل الصفحة مرة أخرى." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "إزالة البيانات والإعدادات" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "إزالة" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "إزالة البيانات والإعدادات، لا يمكنك التراجع مستقبلاً." + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "عام" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "الإشعارات" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "اللوحة/نظرة عامة" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "صيانة" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "الإزالة" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "تحديث" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "مرة كل أسبوع" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "مرة كل 2 أسابيع" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "مرة كل 4 أسابيع" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "الاحصائيات" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "عرض احصائيات الموقع في الشريط الجانبي." + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "مجموع مشاهدات الصفحة" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "إجمالي المشاركات" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "إجمالي الصفحات" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "إجمالي التعليقات" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "إجمالي السبام" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "عدد الاعضاء" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "متوسط المشاركات" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "متوسط التعليقات" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "متوسط الاعضاء" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "تاريخ آخر مشاركة" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "الأسم" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "البنود" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "زيارات الأمس" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "حدد نوع من محرك البحث" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "تمت إزالة احصائيات ووردبريس، يرجى التعطيل والحذف." + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "احصائيات ووردبريس" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "إحصاءات كاملة لموقع ووردبريس الخاص بك." + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "الإعدادات" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "انقر هنا لزيارة صفحة الإضافة على WordPress.org" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "زيارة صفحة WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "أنقر هنا لمراجهة وتقييم الإضافة على WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "ضع تقييمك لهذه الاضافة" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "احصائيات ووردبريس - الزيارات" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "نظرة عامة" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "المتواجدون" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "الدعوات" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "عمليات البحث" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "كلمات البحث" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "أعلى زوار اليوم" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "التحسين" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "الدليل" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "موقع" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "خيارات" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "زوار اليوم" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "زيارات اليوم" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "زيارات الأمس" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "عرض الإحصائيات" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "تحميل ملف ODF" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "تحميل ملف HTML" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "لم يتم العثور على ملف الدليل." + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "ليس لديك الصلاحيات الكافية لدخول هذه الصفحة." + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "احصائيات ووردبريس %s مثبتة على" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "خطأ تحميل قاعدة بيانات GeoIP من: %s - %s" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "خطأ لا يمكن فتح قاعدة البيانات GeoIP التي تم تحميلها للقراءة: %s" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "خطأ لا يمكن فتح قاعدة البيانات GeoIP لجهة الكتابة %s" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "تم تحديث قاعدة بيانات GeoIP بنجاح!" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "تحديث GeoIP على" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "خطأ في قاعدة بيانات browscap تحميل من: %s - %s" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "قاعدة بيانات browscap تم تحديثها بنجاح!" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "تحديث قاعدة بيانات browscap فشل! ملف الكاش كبير جدا، تم الرجوع إلى browscap.ini السابق." + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "تحديث قاعدة بيانات browscap فشل! لم تتم تحديد هوية browscap.ini الجديدة لكلا من المستخدم والزواحف، وتم الرجوع إلى browscap.ini السابق." + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "browscap بالفعل في النسخة الحالية!" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "تحديث Browscap.ini على" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "إحصائيات سريعة" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "أفضل 10 متصفحات" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "أعلى 10 دول" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "خريطة زوار اليوم" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "احصائية النقرات" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "أفضل 10 صفحات" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "الزيارات الأخيرة" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "أعلى المواقع اشارة" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "إحالات محرك البحث" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "ملخص" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "أحدث كلمات البحث" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "أفضل 10 زوار اليوم" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "لم يتم نشر هذا المقال حتى الآن." + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "غير قادر على تحميل قاعدة البيانات GeoIP، تأكد من أنك قمت بتنزيلها في صفحة الإعدادات." + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "تحديث السجلات %s GeoIP في قاعدة بيانات الزوار." + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "البيانات %s مضى عليها أكثر من %s أيام طهرت فيه بنجاح." + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "لا توجد سجلات للتخلص من %s!" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "قاعدة بيانات مجردة على" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "يرجى تحديد قيمة أكثر من 30 يوما." + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "إحصائيات المتصفح" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "انقر للتبديل" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "المتصفحات" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "حسب نوع المتصفحات" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "المنصة" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "حسب نوع المنصة" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "الإصدار %s" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "تنبيه: لم يتم تعيين الاستثناءات حاليا ليتم تسجيلها، قد لا تستطيع عكس نتائج الإحصائيات الحالية أدناه!" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "استثناءات الاحصائيات" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "10 أيام" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "20 يوم" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "30 يو م" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "شهرين" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "3 أشهر" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "6 أشهر" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "9 أشهر" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "سنة" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "الرسم البياني لإحصائيات الاستثناءات" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "استبعاد النقرات في الأخير" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "أيام" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "عدد الزيارات المستبعدة" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "الرسم البياني لاحصائيات النقرات" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "آخر النقرات" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "عدد الزيارات والزوار" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "زيارة" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "زائر" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "أحصائيات أحدث كلمات البحث" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "#hash#" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "خريطة" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "صفحة" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "من" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "الكل" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "آخر إحصائيات الزوار" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "المستخدمين على الانترنت" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "متصل لـ" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "صفحة الأكثر رواجاً بمعرف المشاركة" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "الصفحة الأكثر رواجاً" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "إحصائيات مرجعية محرك البحث" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "إحالات محرك البحث في الأخير" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "عدد الإحالات" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "المجموع" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "أفضل الدول" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "الترتيب" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "العلم" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "الدولة" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "عدد الزوار" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "أفضل الصفحات" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "الصفحات الـ5 الأكثر رواجاً" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "احصائيات الصفحات الـ5 الأكثر رواجاً" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "عدد الزيارات" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "لم يتم العثور على عنوان الصفحة" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "الزيارات" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "تضاف قريبا" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "مواقع اشارة من" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "المراجع" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "أفضل 100 زائر اليوم" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "حول إصدار احصائيات ووردبريس %s" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "الموقع" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "التقييم والمراجعة" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "مزيد من المعلومات" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "يتضمن هذا المنتج البيانات GeoLite2 التي أنشأتها MaxMind، المتاحة من %s." + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "أخرى" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "خريطة زوار اليوم" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "العنوان" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "المتصلين على الانترنت" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "اليوم" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "الأمس" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "المجموع اليومي" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "التوقيت الحالي و التاريخ" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "(التوافق)" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "التاريخ: %s" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "التوقيت: %s" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "نقرات" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "IP" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "وكيل" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "الإصدار" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "تم رفض الوصول!" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "%s تم حذف بيانات الوكيل بنجاح." + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "لا توجد بيانات وكيل لإزالتها!" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "يرجى تحديد العناصر المطلوبة." + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "%s تم حذف بيانات المنصة بنجاح." + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "لا توجد بيانات منصة لإزالتها!" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "%s تم حذف بيانات الجدول بنجاح." + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "خطأ, %s لم يتم التفريغ!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "إعداد قاعدة البيانات" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "إعادة تشغيل التثبيت" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "تثبيت الآن!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "لسبب ما اذا فقدت بيانات في قاعدة البيانات أو احد العناصر الأساسية, هذا الأمر سيعيد تنفيذ العملية مرة أخرى." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "فهرس قاعدة بيانات" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "الدول" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "تحديث الآن!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "المنصب القديم لإضافة احصائيات ووردبريس تسمح للإدخالات المتكررة في جداول الزوار في بعض الحالات. بتثبيت أحدث منتج يجب تواجد الفهرس في الجداول. لإنشاء فهرس لمنتج قديم يجب أن يتم حذف الإدخالات المكررة أولاً. أنقر على \"تحديث الآن\" وسيقوم تلقائيا بفحص جدول الزوار وحذف كافة الإدخالات المكررة وإضافة الفهرس." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "هذه العملية يمكن أن تستغرق وقتا طويلا على تثبيت مع العديد من الصفوف في جدول الزوار." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "الإصدارات القديمة من منتج احصائيات ووردبريس تسمح للإدخالات المكررة في جدول الزوار في بعض الحالات. عند تثبيت إصدارات أحدث من ذلك سيتم إضافة فهرس فريد على الجدول." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "تهانينا، التثبيت موجود بالفعل حتى الآن، لا شيء للقيام به." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "تصدير" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "التصدير من" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "الرجاء تحديد" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "حدد الجدول لملف الإخراج." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "التصدير لـ" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "حدد نوع ملف الإخراج." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "تضمين رأس الصف" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "تضمين صف الرأس كما في السطر الأول من الملف الذي تم تصديره." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "ابدأ الآن!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "القيم التاريخية" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "ملاحظة: كلما قمت بتطهير قاعدة البيانات يجب تحميل هذه الصفحة لتكون الأرقام صحيحة." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "الزوار" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "العدد التاريخي لزوار الموقع (القيمة الحالية هي %s)." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "العدد التاريخي لزيارات الموقع (القيمة الحالية هي %s)." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "تحديث الآن!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "هل أنت متأكد؟" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "المعطيات" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "تفريغ الجدول" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "سيتم فقدان جميع البيانات الجدول." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "مسح الآن!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "سجلات الضخ أقدم من" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "بيانات الاحصائيات المستخدم المحذوف أقدم من الرقم المحدد من الأيام. قيمة الحد الأدنى هو 30 يوما." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "ضخ الآن!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "حذف أنواع وكيل العضو" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "حذف الوكلاء" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "سيتم فقد جميع البيانات الزائر لهذا النوع." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "حذف الآن!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "حذف المنصات" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "سيتم فقد جميع البيانات الزائر لنوع هذه المنصة." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "الموارد" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "استخدام الذاكرة في PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "بايت" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "حدود ذاكرة PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "حدود الذاكرة تسمح للبرنامج النصي باستهلاك حد معين، قم بتعيين ملف php.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "عدد الصفوف في جدول %s" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "صف" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "عدد الصفوف" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "معلومات الإصدار" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "نسخة WP Statistics" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "إصدار WP Statistics." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "نسخة PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "إصدار PHP." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "الوضع الآمن PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "هل الوضع الآمن نشط. الكود GeoIP غير معتمد في الوضع الآمن." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "نسخة jQuery" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "إصدار jQuery." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "إصدار cURL" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "cURL غير مثبت" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "نسخة الملحق PHP cURL تعمل. الملحق cURL مطلوب لعمل كود GeoIP, وإذا لم يتم تثبيته يتم تعطيل GeoIP." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "مثبت" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "غير مثبت" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "معلومات عن الملف" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "قاعدة بيانات GeoIP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "لا وجود لملف قاعدة البيانات." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr "، التي تم إنشاؤها على" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "حجم الملف والتاريخ من قاعدة بيانات GeoIP." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "ملف browscap.ini" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "لا وجود لملف browscap.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "حجم الملف وتاريخ الملف browscap.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "browscap ملف ذاكرة التخزين المؤقت" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "لا وجود لملف ذاكرة التخزين المؤقت browscap." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "حجم الملف وتاريخ الملف المؤقت browscap." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "معلومات العميل" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "IP العميل" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "عنوان IP للعميل." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "وكيل المستخدم" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "سلسلة عامل المستخدم العميل." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "المتصفح" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "مستكشف مستعرض العميل." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "إصدار مستكشف مستعرض العميل." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "مستكشف منصة العميل" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "سيؤدي ذلك إلى استبدال جميع عناوين IP في قاعدة البيانات مع قيم التجزئة ولا يمكن التراجع، هل أنت متأكد؟" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "خيارات GeoIP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "تحديث أي بيانات الموقع غير معروفة في قاعدة البيانات, هذا قد يستغرق بعض الوقت" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "عناوين IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "عناوين IP المجزئة" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "استبدال عناوين IP في قاعدة البيانات مع قيم التجزئة، فإنك لن تكون قادرا على استرداد عناوين IP في المستقبل لتجميع معلومات عن الموقع بعد ذلك وهذا قد يستغرق بعض الوقت" + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "استبدال عناوين IP مع قيم التجزئة." + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "التثبيت الكامل الروتيني." + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "الموارد/معلومات" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "تطهير" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "قاعدة البيانات" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "تحديثات" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "التاريخي" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "WP Statistics V%s" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "زورونا على الإنترنت" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "قم بزيارة موقعنا الجديد كلياً على %s وأبقى على إطلاع دائم حول أخبار احصائيات ووردبريس." + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "الموقع" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "التقييم و المراجعة في WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "كل الشكر لتثبيت احصائيات ووردبريس، ونحن نشجعكم على تقديم" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "التقييم و المراجعة" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "في WordPress.org. حيث أن ملاحظاتكم في موضع تقدير دائماً!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "الترجمات" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "احصائيات ووردبريس تدعم التدويل ونحن نشجع مستخدمينا على تقديم الترجمات، يرجى زيارة موقعنا %s لرؤية الوضع الحالي و %s إذا كنت ترغب في المساعدة." + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "الموقع التعاوني للترجمة" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "اترك لنا رسالة" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "دعم" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "نحن آسفون إن كنت تواجه مشكلة مع احصائيات ووردبريس ونحن سعداء للمساعدة. وهنا عدد قليل من الأشياء للقيام بها قبل الاتصال بنا:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "هل قرأت %s؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "أسئلة وأجوبة" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "الدليل" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "هل بحثت في %s لمشكلة مشابهة؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "منتدى الدعم" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "هل بحثت في الإنترنت عن أي رسائل خطأ التي تظهر لك؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "تأكد أن لديك الوصول إلى سجلات الخطأ PHP الخاص بك." + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "وعدد قليل من الأشياء الأخرى:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "كيف حال memory_limit الخاصة بك في ملف php.ini؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "هل حاولت تعطيل أي إضافات أخرى التي قد تم تثبيتها؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "هل حاولت استخدام المظهر الافتراضي للوردبريس؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "هل ضاعفت الفحص على إعدادات البرنامج المساعد؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "هل قمت بتثبيت جميع ملحقات PHP المطلوبة؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "أنت تحصل على صفحة فارغة أو غير مكتملة العرض في المستعرض الخاص بك؟ قم بعرض المصدر للصفحة وتحقق من وجود أية أخطاء قاتلة؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "هل راجعت سجل أخطاء الـPHP الخاص بك؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "لم يحالفك الحظ حتى الآن؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "الرجاء فتح موضوع جديد في %s، وسنقوم بالرد في أقرب وقت ممكن." + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "منتدى الدعم" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "كما أنه يتوفر دعم للغة %s كذلك." + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "الفارسية" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "الفسفور الابيض الاحصائيات عاء العسل الصفحة" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "هذا هو وعاء العسل لاحصائيات ووردبريس المستخدم, لا تحذف" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "مستويات الوصول" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "مطلوب مستوى المستخدم لعرض الاحصائيات" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "مطلوب مستوى المستخدم لإدارة الاحصائيات" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "اطلع على %s لمزيد من التفاصيل على مستويات القدرة." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "أدوار وقدرات صفحة ووردبريس" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "تلميح: manage_network = مسؤول, manage_options = مدير, edit_others_posts = محرر, publish_posts = كاتب, edit_posts = مساهم, read = الجميع" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "كل ما سبق من الكاسكيدز هي حقوق تكوين الووردبريس الافتراضي. على سبيل المثال عند اختيار publish_posts يمنح حقوق المؤلف,المحرر,المدير,المسؤول." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "إذا كنت في حاجة الى حل أكثر قوة لتفويض الوصول التي قد ترغب في النظر في %s الدليل المساعد لووردبريس." + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "الاستثناءات" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "سجل الاستثناءات" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "تمكين" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "يقوم هذا الخيار بتسجيل جميع النقرات المستبعدة في جدول منفصل مع أسباب الأستبعاد، ولكن بدون معلومات أخرى. وهذا قد يولد الكثير من البيانات ولكن هو مفيد إذا كنت تريد أن ترى العدد الكلي من المشاهدات التي يحصل عليها موقعك، وليس فقط المستخدم الفعلي للموقع." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "استبعاد أدوار المستخدم" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "منع" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "استبعاد دور %s من جمع البيانات." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "استثناءات IP/Robot" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "قائمة الروبوت" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "قائمة من الكلمات (واحد في كل سطر) لمطابقة ضد للكشف عن الروبوتات. يجب أن تكون إدخالات 4 أحرف على الأقل أو أنها سيتم تجاهلها." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "إعادة تعيين إلى الافتراضي" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "إجبار تحديث قائمة الربوت بعد الترقيات" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "إجبار قائمة الروبوت لإعادة تعيين إلى الافتراضي بعد تحديث احصائيات ووردبريس لتأخذ مكان. ملاحظة إذا تم تمكين هذا الخيار أي روبوتات تم تخصيصها في القائمة سوف تضيع." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "الحد الأدنى بزيارة الروبوت" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "تعامل للزوار أكثر من هذا العدد من مرة في اليوم الواحد كما الروبوتات. 0 = تعطيل." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "قائمة عناوين IP المستبعدة" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "إضافة 10.0.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "إضافة 172.16.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "إضافة 192.168.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "استخدام وعاء العسل" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "استخدام صفحة وعاء العسل لتحديد الروبوتات." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "معرف مقال وعاء العسل" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "رقم المشاركة لاستخدامها في صفحة المصيدة." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "إنشاء صفحة وعاء عسل جديدة" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "استثناءات GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "قائمة الدول المستثناة" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "قائمة رموز البلد (واحد في كل سطر، رسالتين لكل منهما) لاستبعاد من جمع الإحصاءات. استخدام \"000\" (ثلاثة أصفار) لاستبعاد بلدان غير معروفة." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "قائمة البلدان المدرجة" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "قائمة رموز البلد (واحد في كل سطر، رسالتين لكل منهما) لتشمل في جمع الإحصاءات، إذا كانت هذه القائمة ليست فارغة، سيتم تسجيل الزوار فقط من الدول المدرجة. استخدام \"000\" (ثلاثة أصفار) لاستبعاد بلدان غير معروفة." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "استثناءات المضيف" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "قائمة المضيفين المستبعدين" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "قائمة أسماء المضيف المؤهل بالكامل (أي. server.example.com، سطر واحد في المائة) لاستبعاد من جمع الإحصاءات." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "ملاحظة: هذا الخيار لإجراء بحث DNS عكسي على تحميل كل صفحة ولكن بدلا من ذلك بالتخزين المؤقت لعنوان الـIP لأسماء المضيفين المنصوص عليها هي ساعة واحدة. إذا كنت استبعدت المضيفين وقم بتعيين حيوي قد تجد بعض الدرجات من التداخل عندما يتغير عنوان IP للمضيف وذلك وعندما يتم تحديث ذاكرة التخزين المؤقت قد يؤدي في بعض الزيارات المسجلة." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "رابط الموقع المستثنى" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "استبعاد صفحة تسجيل الدخول" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "استبعاد صفحة الدخول للتسجيل كنقرة." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "استبعاد الصفحات الإدارية" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "استبعاد الصفحات الادارية للتسجيل كنقرة." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "آر إس إس مستبعدة" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "استبعاد آر إس إس لتسجيل كما ضرب." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "إعدادات browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "استخدام browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "تفعيل" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "سيتم تحميل قاعدة البيانات browscap وتستخدم للكشف عن الروبوتات." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "تحديث معلومات browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "تحميل قاعدة بيانات browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "حفظ التغييرات على هذه الصفحة لتحميل التحديث." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "جدولة التحديث الأسبوعي لـ browscap DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "التحديث القادم سيكون في" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "سيتم تحديد موعد تحميل قاعدة بيانات browscap لمرة واحدة في الأسبوع." + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "سيؤدي ذلك إلى حذف الدليل عند حفظ الإعدادات، هل أنت متأكد؟" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "هذه الميزة لتخزين عناوين IP في قاعدة البيانات ولكن بدلا من ذلك تستخدم تجزئة فريدة من نوعها. سيتم تعطيل \"مخزن سلسلة عامل المستخدم بأكمله\" إذا تم تحديد هذا. أنت لن تكون قادر على استرداد عناوين IP في المستقبل لاسترداد معلومات الموقع إذا تم تمكين هذا." + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "الإعضاء المتواجدين" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "المتواجدين الآن" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-ary.mo b/plugins/wp-statistics/languages/wp_statistics-ary.mo new file mode 100644 index 0000000..94528fe Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-ary.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-ary.po b/plugins/wp-statistics/languages/wp_statistics-ary.po new file mode 100644 index 0000000..0037ef4 --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-ary.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in Moroccan Arabic +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-04-05 21:10:28+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: ar_MA\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "" + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "" + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "" + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "تفعيل" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "" + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "رقم المقال/الصفحة للحصول على احصائياتها." + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "رقم المقال/الصفحة" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "Ask.com" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "الجدول الزمني للحصول على إحصائية لـ, strtotime() (http://php.net/manual/en/datetime.formats.php) سيتم استخدامها لحساب ذلك. استخدام \"المجموع\" للحصول على كل التواريخ المسجلة." + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "تتبع الزوار" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "مجموعة geoip" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "زيارة فهرس قاعدة البيانات" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "يجب تحديث قاعدة البيانات، يرجى الذهاب إلى %s وتحديث التالي: %s" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "دول فهرس قاعدة البيانات" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "جدول البحث" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "صفحة الإعدادات" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "،" + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "الميزات التالية معطلة، يرجى الذهاب إلى %s وتمكينها: %s" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "تتبع النقرات" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "تتبع المستخدم المتصل" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "جدول الإضافة التالية غير موجود في قاعدة البيانات, يرجى إعادة تشغيل %s للتثبيت الروتيني %s:" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "بحث تحويل الجدول المكتمل، الصفوف %d أضيفت." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "التثبيت القديمة من احصائيات ووردبريس تخزن تفاصيل البحث في جدول آخر التي يمكن أن تصبح مشكلة على أداء مجموعات البيانات الكبيرة. تم إنشاء جدول جديد لإجراء هذه المعلومات بطريقة أفضل للتحجيم." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "جدول البحث" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "التحويل" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "تحويل الآن!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "التثبيت القديمة من احصائيات ووردبريس تخزن تفاصيل البحث في جدول آخر التي يمكن أن تصبح مشكلة على أداء مجموعات البيانات الكبيرة. تم إنشاء جدول جديد لإجراء هذه المعلومات بطريقة أفضل للتدرج، ولكن يجب أولا تحويل البيانات القديمة إلى الشكل الجديد قبل أن تتمكن من استخدامها." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "إحالات البريد المزعج" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "سيتم جدولة التحميل من قاعدة البيانات Piwik لإحالات الرسائل الغير مرغوب فيها بالقائمة السوداء لمرة واحدة في الأسبوع." + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "الجهات الخارجية" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "إعدادات القائمة السوداء Piwik لإحالات الرسائل الغير مرغوب فيها" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "جدولة التحديث الأسبوعي لـ Piwik لإحالات الرسائل الغير مرغوب فيها بقاعدة بيانات القائمة السوداء" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "تحميل قاعدة البيانات Piwik لإحالات الرسائل الغير مرغوب فيها من القائمة السوداء" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "تحديث Piwik لإحالات الرسائل الغير مرغوب فيها بمعلومات القائمة السوداء" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "سيتم تحميل قاعدة البيانات Piwik لإحالات الرسائل الغير مرغوب فيها بالقائمة السوداء واستخدامها للكشف عن مرجعية البريد المزعج." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "يتم توفير إحالات الرسائل الغير مرغوب فيها بالقائمة السوداء من قبل Piwik، وهي متاحة من %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "المرجع Piwik للرسائل الغير المرغوب فيها باستخدام القائمة السوداء" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "علاج معلومات المتصفح فاسدة بوت" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "404 صفحات" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "تاريخ" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "علاج أي زائر مع معلومات الفاسدة المتصفح (عنوان IP مفقود أو فارغة سلسلة عامل المستخدم) على الروبوت." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "استبعاد 404 صفحات" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "استبعاد أي URL التي تقوم بإرجاع - رسالة "404 لم يتم العثور على"." + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "خطأ في إنشاء GeoIP دليل قاعدة البيانات، تأكد من خادم الويب الخاص بك لديه أذونات لإنشاء الدلائل في:٪ الصورة" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "إضافة عنوان الصفحة على كلمات بحث فارغة" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "إذا تم التعرف على محرك بحث باسم المرجع لكنه لا يشمل استعلام البحث هذا الخيار يوجب استبدال عنوان الصفحة في الاقتباس الذي يسبقه \"~:\" كما طلب البحث للمساعدة في تحديد ما قد تم البحث عنه من قبل المستخدم." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "الزوار المطهرين مع أكثر من" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "مشاهدات" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "حذف بيانات إحصائيات المستخدم حيث أن المستخدم لديه أكثر من عدد محدد من الزيارات في يوم واحد. هذا يمكن أن يكون مفيد لتوضيح البيانات القديمة عندما يتم زيارة موقعك من خلال بوت. سيؤدي ذلك إلى إزالة الزوار ونقراتهم في الموقع، على كل حال هذا لن يزيل النقرات الفردية للصفحة كما لم يتم تسجيل تلك البيانات على أساس كل استخدام. قيمة الحد الأدنى هو 10 نقرات." + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "لم يتم إيجاد زوار في التطهير." + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "%s سجلات طهرت بنجاح." + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "عدد الزيارات يجب أن يكون أكبر من أو يساوي 10!" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "عدد زيارات هذه الصفحة" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "عدد الصفحة" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "عدد التعليق" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "عدد السبام" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "عدد المستخدم" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "متوسط المشاركة" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "متوسط التعليق" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "متوسط المستخدم" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "محرك البحث" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "مزود البحث للحصول على إحصائيات عن." + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "صيغة الرقم" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "صيغة الأرقام للعرض في: I18N، الانجليزية، لا شيء." + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "الإنجليزية" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "دولي" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "موجز إحصائيات المشاهدات" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "إجمالي الرسم البياني" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "مجموع كل الوقت" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "هل فكرت في التبرع لإحصائيات ووردبريس؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "التبرع" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "صف لنا مدى إستمتاعك في منتج إحصائيات ووردبريس؟ واضغط صفحة %s وبيّن لنا بعض الحب!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "التبرعات" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "تبرع الآن!" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "إغلاق" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "حدد الإحصائية التي ترغب في عرضها." + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "إحصائية" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "عدد المقال" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "الإطار الزمني" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "إلى" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "إذهب" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "المرتبة #5" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "المرتبة #4" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "المرتبة #3" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "المرتبة #1" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "المرتبة #2" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "جدول الزيارات" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "التثبيتات القديمة من احصائيات ووردبريس تسمح للإدخالات المكررة في جدول الزيارات في كل مرة. بتثبيت أحدث حماية مقابل هذا الفهرس الفريد على الجدول. و لإنشاء فهرس على الإصدارات القديمة المثبتة يجب أن يتم حذف الإدخالات المكررة أولا. أنقر على \"التحديث الآن\" لفحص جدول الزيارات، وحذف الإدخالات المكررة وإضافة الفهرس." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "هذه العملية يمكن أن تستغرق وقتا طويلا لتثبيت العديد من الصفوف في جدول الزيارات." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "التثبيتات القديمة من احصائيات ووردبريس تسمح للإدخالات المكررة في جدول الزيارات. للحماية من ذلك ثبت الفهرس الفريد في الجدول." + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "تمت تصفيتها من قبل" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "المدى" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "MM/DD/YYYY" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "لا تستخدم الترجمات واستخدام بدلاً من ذلك الإعدادات الافتراضية الإنجليزية لإحصائيات ووردبريس (يتطلب تحميل صفحتين)" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "إجبار اللغة الإنجليزية" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "اللغات" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "ملاحظة: هذا الخيار لن يتعامل مع معايير عنوان URL، (أي شيء بعد علامة؟) إلا اسم البرنامج النصي . سيتم تجاهل إدخالات أقل من حرفين." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "قائمة عناوين المواقع المحلية (اتصل بنا,حول, واحد في كل سطر) للإستبعاد من جمع الإحصائيات." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "قائمة عناوين المواقع المستبعدة" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "العناوين المستبعدة" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "مشاركة 365 يوم (السنة)" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "آخر 30 يوم (شهر)" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "آخر 7 أيام (أسبوع)" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "ياهو!" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "ياندكس" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "clearch.org" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "دك دك غو" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "بينج" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "بايدو" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "التغذيات" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "دور المستخدم" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "صفحة تسجيل الدخول" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "صفحة الإدارة" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "الإحالة الذاتية" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "المتطابق IP" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "روبوت" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "حالياً هناك مستخدمين متواجدين في الموقع." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "الحد من الروبوت" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "وعاء العسل" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "صفحة الإحصائيات الأكثر رواجاً" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "اسم المضيف" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "تمكين أو تعطيل هذه الميزة" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "تحقق من المتصلين في الموقع في كل" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "ثانية" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "وقت التحقق من المستخدمين المتصلين في الموقع. الآن: %s ثانية" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "تسجيل جميع المستخدمين" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "يتجاهل إعدادات الإقصاء ويسجل كل المستخدمين التي يتم على الانترنت (بما في ذلك الإحالة الذاتية والروبوتات). وينبغي أن تستخدم فقط لاستكشاف الأخطاء وإصلاحها." + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "تخزين كامل سلسلة عامل المستخدم" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "تمكين فقط من أجل التصحيح" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "درجة لكل زائر" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "حساب توجيه النقرات لكل زائر. حالياً %s." + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "الصفحات" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "تتبع جميع الصفحات" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "معايير الشريط من URI" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "سيؤدي هذا إلى إزالة أي شيء بعد؟ في URL." + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "تعطيل عمود النقرات في قائمة المقال/الصفحات" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "متفرقات" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "إظهار الاحصائيات في شريط القوائم" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "لا" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "نعم" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "اظهار الاحصائيات في شريط القوائم الإداري" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "اخفاء إشعارات المشرف حول الميزات غير نشطة" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "افتراضيا احصائيات ووردبريس يعرض تنبيها إذا تم تعطيل أي من الميزات الأساسية في صفحة المشرف، وهذا الخيار لتعطيل هذه الإشعارات." + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "حذف الدليل" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "افتراضيا احصائيات ووردبريس يخزن دليل المشرف في الدليل المساعد (~ 5 ميج)، إذا تم تمكين هذا الخيار سيتم حذفه الآن، وخلال الترقيات في المستقبل." + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "محركات البحث" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "تعطيل جميع محركات البحث غير مسموح, سيؤدي ذلك الى تنشيط جميع محركات البحث." + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "تعطيل" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "تعطيل %s من جمع البيانات وإعداد التقارير." + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "الرسوم البيانية" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "تتضمن الاجماليات" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "إضافة سطر مجموع المخططات مع قيم متعددة، مثل إحالات محرك البحث" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "إعدادات GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "خدمات الموقع IP المقدمة من البيانات GeoLite2 التي أنشأتها MaxMind، المتاحة من %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "مجموعة GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "للحصول على مزيد من المعلومات، والمكان (البلد) من الزوار، تمكين هذه الميزة." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "تحديث معلومات GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "تحميل قاعدة بيانات GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "جدولة التحديث الشهري لGeoIP DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "سيتم جدولة التحميل من قاعدة البيانات GeoIP لمدة 2 يوما بعد يوم الثلاثاء الأول من الشهر." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "وهذا الخيار أيضا تحميل قاعدة البيانات إذا كان حجم الملف المحلي أقل من 1K (الذي يعني عادة أن طرف البرنامج التي تأتي مع البرنامج المساعد لا يزال في مكانه)." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "تعبئة GeoIP في عداد المفقودين بعد التحديث من GeoIP DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "تحديث أي بيانات GeoIP مفقودة بعد تحميل قاعدة البيانات الجديدة." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "رمز البلد لعناوين IP خاصة" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "المعيار اثنين الرمز الدولي بلد إلكتروني (أي الولايات المتحدة = الولايات المتحدة الأمريكية، CA = كندا، الخ) ل(غير قابل للتوجيه) عناوين IP خاصة (أي. 10.0.0.1، 192.158.1.1، 127.0.0.1، وما إلى ذلك). استخدام \"000\" (ثلاثة أصفار) لاستخدام \"غير معروف\"، كما رمز البلد." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "تم تعطيل مجموعة GeoIP وذلك للأسباب التالية:" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "جمع GeoIP يتطلب PHP %s أو أعلى، يتم تعطيله حاليا نظرا لكونها نسخة PHP مثبتة" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "مجموعة GeoIP تتطلب الملحق cURL PHP و هو غير مفعل على إصدار الـ PHP!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "مجموعة GeoIP تتطلب الملحق BC Math PHP و هو غير مفعل على إصدار الـ PHP!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "تم الكشف عن الوضع الآمن في PHP! مجموعة GeoIP غير معتمدة عند تمكين الوضع الآمن في PHP!" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "سيؤدي ذلك إلى حذف البيانات من قاعدة البيانات بشكل دائم كل يوم، هل أنت متأكد من أنك تريد تمكين هذا الخيار؟" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "أيام" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "عدد الأيام للحفاظ على الإحصاءات المتعلقة. قيمة الحد الأدنى هو 30 يوما. سيتم تعطيل الصيانة اليومية في حال ادخال قيم غير صالحة." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "خيارات تقرير المشترك" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "عناوين البريد الإلكتروني" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "أفصل قائمة عناوين البريد الإلكتروني بفاصلة لإرسال التقارير إلى." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "تقارير التحديث" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "Browscap" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "إرسال تقرير كلما يتم تحديث browscap.ini." + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "إرسال تقرير كلما يتم تحديث قاعدة البيانات GeoIP." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "تنقيح" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "إرسال تقرير كلما يتم تشغيل التنقيح في قاعدة البيانات." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "ترقية" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "إرسال تقرير كلما تتم ترقية البرنامج المساعد." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "تقارير الإحصائيات" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "جدول" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "حدد عدد المرات لتلقي تقرير إحصائي." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "إرسال التقارير عن طريق" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "البريد الإلكتروني" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "رسائل نصية" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "حدد طريقة التسليم للتقرير الإحصائي." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "ملاحظة: لإرسال رسائل نصية SMS الرجاء تثبيت إضافة %s." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "الرسائل النصية" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "تقرير الهيئة" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "أدخل محتويات التقرير." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "أي رمز قصير بدعم من مثبت ووردبريس، وتشمل جميع الاكواد المختصرة لاحصائيات ووردبريس (انظر دليل المشرف للحصول على قائمة رموز المتاحة) معتمدة في نص الرسالة. وهنا بعض الأمثلة:" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "المتواجدين الآن" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "زوار اليوم" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "زيارات اليوم" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "زوار الأمس" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "زيارات الأمس" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "مجموع الزوار" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "مجموع الزيارات" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "لا شيء" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "حول" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "لوحة القيادة" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "العناصر التالية هي عالمية لجميع المستخدمين." + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "تعطيل قطع لوحة القيادة" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "تعطيل القطع للوحة القيادة" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "محرر الصفحة/المشاركة" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "تعطيل قطعة محرر الصفحة/المشاركة" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "تعطيل القطع لمحرر الصفحة/المشاركة" + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "جوجل" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "تعطيل الخريطة" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "تعطيل عرض الخريطة" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "إزالة احصائيات ووردبريس" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "إزالة احصائيات ووردبريس لن تقوم بإزالة البيانات والإعدادات، يمكنك استخدام هذا الخيار لإزالة البيانات الخاصة بك قبل إلغاء تثبيت البرنامج المساعد." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "بمجرد التقدم في هذا الخيار سيتم حذف الإعدادات أثناء تحميل صفحة هذا النموذج، ولكن سوف تزال تظهر احصائيات ووردبريس في قائمة المشرف الخاص بك حتى يتم تحميل الصفحة مرة أخرى." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "إزالة البيانات والإعدادات" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "إزالة" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "إزالة البيانات والإعدادات، لا يمكنك التراجع مستقبلاً." + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "عام" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "الإشعارات" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "اللوحة/نظرة عامة" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "صيانة" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "الإزالة" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "تحديث" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "مرة كل أسبوع" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "مرة كل 2 أسابيع" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "مرة كل 4 أسابيع" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "الاحصائيات" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "عرض احصائيات الموقع في الشريط الجانبي." + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "مجموع مشاهدات الصفحة" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "إجمالي المشاركات" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "إجمالي الصفحات" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "إجمالي التعليقات" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "إجمالي السبام" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "عدد الاعضاء" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "متوسط المشاركات" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "متوسط التعليقات" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "متوسط الاعضاء" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "تاريخ آخر مشاركة" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "الأسم" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "البنود" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "زيارات الأمس" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "حدد نوع من محرك البحث" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "تمت إزالة احصائيات ووردبريس، يرجى التعطيل والحذف." + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "احصائيات ووردبريس" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "إحصاءات كاملة لموقع ووردبريس الخاص بك." + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "الإعدادات" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "انقر هنا لزيارة صفحة الإضافة على WordPress.org" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "زيارة صفحة WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "أنقر هنا لمراجهة وتقييم الإضافة على WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "ضع تقييمك لهذه الاضافة" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "احصائيات ووردبريس - الزيارات" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "نظرة عامة" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "المتواجدون" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "الدعوات" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "عمليات البحث" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "كلمات البحث" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "أعلى زوار اليوم" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "التحسين" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "الدليل" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "موقع" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "خيارات" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "زوار اليوم" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "زيارات اليوم" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "زيارات الأمس" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "عرض الإحصائيات" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "تحميل ملف ODF" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "تحميل ملف HTML" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "لم يتم العثور على ملف الدليل." + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "ليس لديك الصلاحيات الكافية لدخول هذه الصفحة." + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "احصائيات ووردبريس %s مثبتة على" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "خطأ تحميل قاعدة بيانات GeoIP من: %s - %s" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "خطأ لا يمكن فتح قاعدة البيانات GeoIP التي تم تحميلها للقراءة: %s" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "خطأ لا يمكن فتح قاعدة البيانات GeoIP لجهة الكتابة %s" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "تم تحديث قاعدة بيانات GeoIP بنجاح!" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "تحديث GeoIP على" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "خطأ في قاعدة بيانات browscap تحميل من: %s - %s" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "قاعدة بيانات browscap تم تحديثها بنجاح!" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "تحديث قاعدة بيانات browscap فشل! ملف الكاش كبير جدا، تم الرجوع إلى browscap.ini السابق." + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "تحديث قاعدة بيانات browscap فشل! لم تتم تحديد هوية browscap.ini الجديدة لكلا من المستخدم والزواحف، وتم الرجوع إلى browscap.ini السابق." + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "browscap بالفعل في النسخة الحالية!" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "تحديث Browscap.ini على" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "إحصائيات سريعة" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "أفضل 10 متصفحات" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "أعلى 10 دول" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "خريطة زوار اليوم" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "احصائية النقرات" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "أفضل 10 صفحات" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "الزيارات الأخيرة" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "أعلى المواقع اشارة" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "إحالات محرك البحث" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "ملخص" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "أحدث كلمات البحث" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "أفضل 10 زوار اليوم" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "لم يتم نشر هذا المقال حتى الآن." + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "غير قادر على تحميل قاعدة البيانات GeoIP، تأكد من أنك قمت بتنزيلها في صفحة الإعدادات." + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "تحديث السجلات %s GeoIP في قاعدة بيانات الزوار." + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "البيانات %s مضى عليها أكثر من %s أيام طهرت فيه بنجاح." + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "لا توجد سجلات للتخلص من %s!" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "قاعدة بيانات مجردة على" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "يرجى تحديد قيمة أكثر من 30 يوما." + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "إحصائيات المتصفح" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "انقر للتبديل" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "المتصفحات" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "حسب نوع المتصفحات" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "المنصة" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "حسب نوع المنصة" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "الإصدار %s" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "تنبيه: لم يتم تعيين الاستثناءات حاليا ليتم تسجيلها، قد لا تستطيع عكس نتائج الإحصائيات الحالية أدناه!" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "استثناءات الاحصائيات" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "10 أيام" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "20 يوم" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "30 يو م" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "شهرين" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "3 أشهر" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "6 أشهر" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "9 أشهر" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "سنة" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "الرسم البياني لإحصائيات الاستثناءات" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "استبعاد النقرات في الأخير" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "أيام" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "عدد الزيارات المستبعدة" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "الرسم البياني لاحصائيات النقرات" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "آخر النقرات" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "عدد الزيارات والزوار" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "زيارة" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "زائر" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "أحصائيات أحدث كلمات البحث" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "#hash#" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "خريطة" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "صفحة" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "من" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "الكل" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "آخر إحصائيات الزوار" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "المستخدمين على الانترنت" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "متصل لـ" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "صفحة الأكثر رواجاً بمعرف المشاركة" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "الصفحة الأكثر رواجاً" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "إحصائيات مرجعية محرك البحث" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "إحالات محرك البحث في الأخير" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "عدد الإحالات" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "المجموع" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "أفضل الدول" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "الترتيب" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "العلم" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "الدولة" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "عدد الزوار" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "أفضل الصفحات" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "الصفحات الـ5 الأكثر رواجاً" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "احصائيات الصفحات الـ5 الأكثر رواجاً" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "عدد الزيارات" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "لم يتم العثور على عنوان الصفحة" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "الزيارات" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "تضاف قريبا" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "مواقع اشارة من" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "المراجع" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "أفضل 100 زائر اليوم" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "حول إصدار احصائيات ووردبريس %s" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "الموقع" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "التقييم والمراجعة" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "مزيد من المعلومات" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "يتضمن هذا المنتج البيانات GeoLite2 التي أنشأتها MaxMind، المتاحة من %s." + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "أخرى" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "خريطة زوار اليوم" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "العنوان" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "المتصلين على الانترنت" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "اليوم" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "الأمس" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "المجموع اليومي" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "التوقيت الحالي و التاريخ" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "(التوافق)" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "التاريخ: %s" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "التوقيت: %s" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "نقرات" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "IP" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "وكيل" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "الإصدار" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "تم رفض الوصول!" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "%s تم حذف بيانات الوكيل بنجاح." + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "لا توجد بيانات وكيل لإزالتها!" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "يرجى تحديد العناصر المطلوبة." + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "%s تم حذف بيانات المنصة بنجاح." + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "لا توجد بيانات منصة لإزالتها!" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "%s تم حذف بيانات الجدول بنجاح." + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "خطأ, %s لم يتم التفريغ!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "إعداد قاعدة البيانات" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "إعادة تشغيل التثبيت" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "تثبيت الآن!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "لسبب ما اذا فقدت بيانات في قاعدة البيانات أو احد العناصر الأساسية, هذا الأمر سيعيد تنفيذ العملية مرة أخرى." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "فهرس قاعدة بيانات" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "الدول" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "تحديث الآن!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "المنصب القديم لإضافة احصائيات ووردبريس تسمح للإدخالات المتكررة في جداول الزوار في بعض الحالات. بتثبيت أحدث منتج يجب تواجد الفهرس في الجداول. لإنشاء فهرس لمنتج قديم يجب أن يتم حذف الإدخالات المكررة أولاً. أنقر على \"تحديث الآن\" وسيقوم تلقائيا بفحص جدول الزوار وحذف كافة الإدخالات المكررة وإضافة الفهرس." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "هذه العملية يمكن أن تستغرق وقتا طويلا على تثبيت مع العديد من الصفوف في جدول الزوار." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "الإصدارات القديمة من منتج احصائيات ووردبريس تسمح للإدخالات المكررة في جدول الزوار في بعض الحالات. عند تثبيت إصدارات أحدث من ذلك سيتم إضافة فهرس فريد على الجدول." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "تهانينا، التثبيت موجود بالفعل حتى الآن، لا شيء للقيام به." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "تصدير" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "التصدير من" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "الرجاء تحديد" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "حدد الجدول لملف الإخراج." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "التصدير لـ" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "حدد نوع ملف الإخراج." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "تضمين رأس الصف" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "تضمين صف الرأس كما في السطر الأول من الملف الذي تم تصديره." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "ابدأ الآن!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "القيم التاريخية" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "ملاحظة: كلما قمت بتطهير قاعدة البيانات يجب تحميل هذه الصفحة لتكون الأرقام صحيحة." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "الزوار" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "العدد التاريخي لزوار الموقع (القيمة الحالية هي %s)." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "العدد التاريخي لزيارات الموقع (القيمة الحالية هي %s)." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "تحديث الآن!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "هل أنت متأكد؟" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "المعطيات" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "تفريغ الجدول" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "سيتم فقدان جميع البيانات الجدول." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "مسح الآن!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "سجلات الضخ أقدم من" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "بيانات الاحصائيات المستخدم المحذوف أقدم من الرقم المحدد من الأيام. قيمة الحد الأدنى هو 30 يوما." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "ضخ الآن!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "حذف أنواع وكيل العضو" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "حذف الوكلاء" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "سيتم فقد جميع البيانات الزائر لهذا النوع." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "حذف الآن!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "حذف المنصات" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "سيتم فقد جميع البيانات الزائر لنوع هذه المنصة." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "الموارد" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "استخدام الذاكرة في PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "بايت" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "حدود ذاكرة PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "حدود الذاكرة تسمح للبرنامج النصي باستهلاك حد معين، قم بتعيين ملف php.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "عدد الصفوف في جدول %s" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "صف" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "عدد الصفوف" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "معلومات الإصدار" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "نسخة WP Statistics" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "إصدار WP Statistics." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "نسخة PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "إصدار PHP." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "الوضع الآمن PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "هل الوضع الآمن نشط. الكود GeoIP غير معتمد في الوضع الآمن." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "نسخة jQuery" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "إصدار jQuery." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "إصدار cURL" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "cURL غير مثبت" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "نسخة الملحق PHP cURL تعمل. الملحق cURL مطلوب لعمل كود GeoIP, وإذا لم يتم تثبيته يتم تعطيل GeoIP." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "مثبت" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "غير مثبت" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "معلومات عن الملف" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "قاعدة بيانات GeoIP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "لا وجود لملف قاعدة البيانات." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr "، التي تم إنشاؤها على" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "حجم الملف والتاريخ من قاعدة بيانات GeoIP." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "ملف browscap.ini" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "لا وجود لملف browscap.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "حجم الملف وتاريخ الملف browscap.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "browscap ملف ذاكرة التخزين المؤقت" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "لا وجود لملف ذاكرة التخزين المؤقت browscap." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "حجم الملف وتاريخ الملف المؤقت browscap." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "معلومات العميل" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "IP العميل" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "عنوان IP للعميل." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "وكيل المستخدم" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "سلسلة عامل المستخدم العميل." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "المتصفح" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "مستكشف مستعرض العميل." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "إصدار مستكشف مستعرض العميل." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "مستكشف منصة العميل" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "سيؤدي ذلك إلى استبدال جميع عناوين IP في قاعدة البيانات مع قيم التجزئة ولا يمكن التراجع، هل أنت متأكد؟" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "خيارات GeoIP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "تحديث أي بيانات الموقع غير معروفة في قاعدة البيانات, هذا قد يستغرق بعض الوقت" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "عناوين IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "عناوين IP المجزئة" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "استبدال عناوين IP في قاعدة البيانات مع قيم التجزئة، فإنك لن تكون قادرا على استرداد عناوين IP في المستقبل لتجميع معلومات عن الموقع بعد ذلك وهذا قد يستغرق بعض الوقت" + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "استبدال عناوين IP مع قيم التجزئة." + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "التثبيت الكامل الروتيني." + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "الموارد/معلومات" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "تطهير" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "قاعدة البيانات" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "تحديثات" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "التاريخي" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "WP Statistics V%s" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "زورونا على الإنترنت" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "قم بزيارة موقعنا الجديد كلياً على %s وأبقى على إطلاع دائم حول أخبار احصائيات ووردبريس." + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "الموقع" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "التقييم و المراجعة في WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "كل الشكر لتثبيت احصائيات ووردبريس، ونحن نشجعكم على تقديم" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "التقييم و المراجعة" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "في WordPress.org. حيث أن ملاحظاتكم في موضع تقدير دائماً!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "الترجمات" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "احصائيات ووردبريس تدعم التدويل ونحن نشجع مستخدمينا على تقديم الترجمات، يرجى زيارة موقعنا %s لرؤية الوضع الحالي و %s إذا كنت ترغب في المساعدة." + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "الموقع التعاوني للترجمة" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "اترك لنا رسالة" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "دعم" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "نحن آسفون إن كنت تواجه مشكلة مع احصائيات ووردبريس ونحن سعداء للمساعدة. وهنا عدد قليل من الأشياء للقيام بها قبل الاتصال بنا:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "هل قرأت %s؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "أسئلة وأجوبة" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "الدليل" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "هل بحثت في %s لمشكلة مشابهة؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "منتدى الدعم" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "هل بحثت في الإنترنت عن أي رسائل خطأ التي تظهر لك؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "تأكد أن لديك الوصول إلى سجلات الخطأ PHP الخاص بك." + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "وعدد قليل من الأشياء الأخرى:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "كيف حال memory_limit الخاصة بك في ملف php.ini؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "هل حاولت تعطيل أي إضافات أخرى التي قد تم تثبيتها؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "هل حاولت استخدام المظهر الافتراضي للوردبريس؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "هل ضاعفت الفحص على إعدادات البرنامج المساعد؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "هل قمت بتثبيت جميع ملحقات PHP المطلوبة؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "أنت تحصل على صفحة فارغة أو غير مكتملة العرض في المستعرض الخاص بك؟ قم بعرض المصدر للصفحة وتحقق من وجود أية أخطاء قاتلة؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "هل راجعت سجل أخطاء الـPHP الخاص بك؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "لم يحالفك الحظ حتى الآن؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "الرجاء فتح موضوع جديد في %s، وسنقوم بالرد في أقرب وقت ممكن." + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "منتدى الدعم" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "كما أنه يتوفر دعم للغة %s كذلك." + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "الفارسية" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "الفسفور الابيض الاحصائيات عاء العسل الصفحة" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "هذا هو وعاء العسل لاحصائيات ووردبريس المستخدم, لا تحذف" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "مستويات الوصول" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "مطلوب مستوى المستخدم لعرض الاحصائيات" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "مطلوب مستوى المستخدم لإدارة الاحصائيات" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "اطلع على %s لمزيد من التفاصيل على مستويات القدرة." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "أدوار وقدرات صفحة ووردبريس" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "تلميح: manage_network = مسؤول, manage_options = مدير, edit_others_posts = محرر, publish_posts = كاتب, edit_posts = مساهم, read = الجميع" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "كل ما سبق من الكاسكيدز هي حقوق تكوين الووردبريس الافتراضي. على سبيل المثال عند اختيار publish_posts يمنح حقوق المؤلف,المحرر,المدير,المسؤول." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "إذا كنت في حاجة الى حل أكثر قوة لتفويض الوصول التي قد ترغب في النظر في %s الدليل المساعد لووردبريس." + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "الاستثناءات" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "سجل الاستثناءات" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "تمكين" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "يقوم هذا الخيار بتسجيل جميع النقرات المستبعدة في جدول منفصل مع أسباب الأستبعاد، ولكن بدون معلومات أخرى. وهذا قد يولد الكثير من البيانات ولكن هو مفيد إذا كنت تريد أن ترى العدد الكلي من المشاهدات التي يحصل عليها موقعك، وليس فقط المستخدم الفعلي للموقع." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "استبعاد أدوار المستخدم" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "منع" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "استبعاد دور %s من جمع البيانات." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "استثناءات IP/Robot" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "قائمة الروبوت" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "قائمة من الكلمات (واحد في كل سطر) لمطابقة ضد للكشف عن الروبوتات. يجب أن تكون إدخالات 4 أحرف على الأقل أو أنها سيتم تجاهلها." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "إعادة تعيين إلى الافتراضي" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "إجبار تحديث قائمة الربوت بعد الترقيات" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "إجبار قائمة الروبوت لإعادة تعيين إلى الافتراضي بعد تحديث احصائيات ووردبريس لتأخذ مكان. ملاحظة إذا تم تمكين هذا الخيار أي روبوتات تم تخصيصها في القائمة سوف تضيع." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "الحد الأدنى بزيارة الروبوت" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "تعامل للزوار أكثر من هذا العدد من مرة في اليوم الواحد كما الروبوتات. 0 = تعطيل." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "قائمة عناوين IP المستبعدة" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "إضافة 10.0.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "إضافة 172.16.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "إضافة 192.168.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "استخدام وعاء العسل" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "استخدام صفحة وعاء العسل لتحديد الروبوتات." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "معرف مقال وعاء العسل" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "رقم المشاركة لاستخدامها في صفحة المصيدة." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "إنشاء صفحة وعاء عسل جديدة" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "استثناءات GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "قائمة الدول المستثناة" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "قائمة رموز البلد (واحد في كل سطر، رسالتين لكل منهما) لاستبعاد من جمع الإحصاءات. استخدام \"000\" (ثلاثة أصفار) لاستبعاد بلدان غير معروفة." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "قائمة البلدان المدرجة" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "قائمة رموز البلد (واحد في كل سطر، رسالتين لكل منهما) لتشمل في جمع الإحصاءات، إذا كانت هذه القائمة ليست فارغة، سيتم تسجيل الزوار فقط من الدول المدرجة. استخدام \"000\" (ثلاثة أصفار) لاستبعاد بلدان غير معروفة." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "استثناءات المضيف" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "قائمة المضيفين المستبعدين" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "قائمة أسماء المضيف المؤهل بالكامل (أي. server.example.com، سطر واحد في المائة) لاستبعاد من جمع الإحصاءات." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "ملاحظة: هذا الخيار لإجراء بحث DNS عكسي على تحميل كل صفحة ولكن بدلا من ذلك بالتخزين المؤقت لعنوان الـIP لأسماء المضيفين المنصوص عليها هي ساعة واحدة. إذا كنت استبعدت المضيفين وقم بتعيين حيوي قد تجد بعض الدرجات من التداخل عندما يتغير عنوان IP للمضيف وذلك وعندما يتم تحديث ذاكرة التخزين المؤقت قد يؤدي في بعض الزيارات المسجلة." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "رابط الموقع المستثنى" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "استبعاد صفحة تسجيل الدخول" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "استبعاد صفحة الدخول للتسجيل كنقرة." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "استبعاد الصفحات الإدارية" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "استبعاد الصفحات الادارية للتسجيل كنقرة." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "آر إس إس مستبعدة" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "استبعاد آر إس إس لتسجيل كما ضرب." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "إعدادات browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "استخدام browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "تفعيل" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "سيتم تحميل قاعدة البيانات browscap وتستخدم للكشف عن الروبوتات." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "تحديث معلومات browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "تحميل قاعدة بيانات browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "حفظ التغييرات على هذه الصفحة لتحميل التحديث." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "جدولة التحديث الأسبوعي لـ browscap DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "التحديث القادم سيكون في" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "سيتم تحديد موعد تحميل قاعدة بيانات browscap لمرة واحدة في الأسبوع." + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "سيؤدي ذلك إلى حذف الدليل عند حفظ الإعدادات، هل أنت متأكد؟" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "هذه الميزة لتخزين عناوين IP في قاعدة البيانات ولكن بدلا من ذلك تستخدم تجزئة فريدة من نوعها. سيتم تعطيل \"مخزن سلسلة عامل المستخدم بأكمله\" إذا تم تحديد هذا. أنت لن تكون قادر على استرداد عناوين IP في المستقبل لاسترداد معلومات الموقع إذا تم تمكين هذا." + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "الإعضاء المتواجدين" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "المتواجدين الآن" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-bg_BG.mo b/plugins/wp-statistics/languages/wp_statistics-bg_BG.mo new file mode 100644 index 0000000..8cb0ff4 Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-bg_BG.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-bg_BG.po b/plugins/wp-statistics/languages/wp_statistics-bg_BG.po new file mode 100644 index 0000000..234220f --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-bg_BG.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in Bulgarian +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2015-04-22 00:38:16+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: bg\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "" + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "" + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "" + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "" + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "" + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "" + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "" + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "" + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "" + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "MM/DD/YYYY" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "Разрешаване или забраняване на тази функция" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "Проверявай за онлайн потребители на всеки" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "Секунда" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "Времето за точна проверка онлайн потребителя в сайта. Сега: %s втори" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "Съхранява цялата потребител фактор канап" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "Разрешена за отстраняване на грешки" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "Коефициент за потребител" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "За всяко посещение на сметка за няколко хитове. В момента %s." + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "Страници" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "Проследяване на всички страници" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "Забрани хитове колона пост/страници списък" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "Разни" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "Покажи статистиките в менюто" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "Не" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "Да" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "Покажи статистиките в админ менюто" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "Скрий администратор обявления за не са активни функции" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "По подразбиране WP Statistics показва предупреждение, ако някой от основните функции са забранени на всяка страница, Админ, тази опция ще забраните тези съобщения." + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "Изтриване на наръчника" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "По подразбиране WP Statistics съхранява администратор ръководство в плъгин директорията (~ 5 Мег), ако тази опция е включена тя ще бъде изтрита сега и по време на ъпгрейд в бъдеще." + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "Деактивирането на всички търсещи машини не е позволено, това ще доведе до всички търсещи машини са активни." + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "забрани" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "Изключете %s от събирането на данни и докладване." + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "Диаграми" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "Включва общи суми" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "Добавяне на обща линия за диаграми с множество стойности, като търсене двигател референции" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "GeoIP настройки" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "IP местоположение услуги, предоставяни от GeoLite2 данни, създадени от MaxMind, достъпни от %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "GeoIP колекция" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "За да получите повече информация и местоположението (страната) от посетител, активирате тази функция." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "GeoIP информация актуализация" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "Изтегли GeoIP база данни" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "Месечна актуализация график на GeoIP DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "Изтегляне на GeoIP базата данни ще бъде насрочено за 2 дни след първия вторник на месеца." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "Тази опция ще изтеглите базата данни ако местните големина е по-малко от 1k, (което обикновено означава пън, която идва с приставката е все още на място)." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "Попълни липсващите GeoIP след актуализация на GeoIP DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "Липсващи GeoIP данни се актуализира след свалянето на нова база данни." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "GeoIP колекция е забранена поради следните причини:" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "GeoIP колекция изисква PHP %s или по-горе, в момента е забранен поради инсталирани PHP версия са " + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "GeoIP колекция изисква разширение на PHP къдря и тя не е заредена на вашата версия на PHP!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "GeoIP колекция изисква ПР.н.е математика PHP продължаване и то не е заредена на вашата версия на PHP!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "Безопасен режим PHP открити! GeoIP колекция не се поддържа на PHP защитен режим!" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "Това ще изтрие данни от базата данни всеки ден, наистина ли искате да разрешите тази опция?" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "Дни" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "Броят на дните за запазване на статистика за. Минималната стойност е 30 дни. Невалидни стойности ще забрани ежедневна поддръжка." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "Имейл адреси" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "Статистическата отчетност" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "График" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "Изпрати отчетите чрез" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "Имейл" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "Забележка: За да изпратите SMS текстови съобщения моля инсталирайте %s плъгин." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "WordPress SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "Тялото на доклада" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "Онлайн потребители" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "Днес посетителите" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "Посещения от днес" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "Вчера посетител" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "Вчерашни посещения" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "Общо посетител" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "Общо посещения" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "Няма" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "За" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "" + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "Google" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "Забраняване на картата" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "Забраняване на показването на картите" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "Общи" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "Поддръжка" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "Актуализация" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "Веднъж седмично" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "Веднъж на всеки 2 седмици" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "Веднъж на всеки 4 седмици" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "Статистики" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "Показване на статистика на сайт в страничната лента." + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "Общо изгледи на страница" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "Общо публикации" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "Общо страници" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "Общо коментари" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "Общо спам" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "Общо потребители" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "Средно публикации" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "Средно коментари" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "Средно потребители" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "Последно добавена публикация" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "Име" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "Броя" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "Вчерашни посещения" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "Изберете тип търсачка" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "" + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "WP Statistics" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "Пълна статистика за вашия сайт WordPress." + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "Настройки" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "Щракнете тук, за да посетите плъгин от WordPress.org" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "Посетете страницата на WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "Щракнете тук, за да оцените и да преразгледа този плъгин от WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "Оцени този плъгин" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "WP-статистика - хитове" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "Общ преглед" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "Търсения" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "Думи за търсене" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "Оптимизация" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "Ръководство" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "Днес посетителите" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "Днес, посетете" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "Вчера посетител" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "Преглед на статистиките" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "Изтегляне на ODF файл" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "Изтегли HTML файл" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "Ръчно файлът не е намерен." + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "Нямате права за тази страница" + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "Грешка при изтегляне на базата от данни от GeoIP: %s - %s" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "Грешка не може да отвори изтегления GeoIP база данни за четене: %s" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "Грешка не може да отвори GeoIP база данни местоназначение за писане на %s" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "GeoIP базата данни се актуализира успешно!" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "Грешка при изтегляне на browscap база данни от: %s - %s" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "browscap база данни, актуализирани успешно!" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "browscap вече в текущата версия!" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "Топ 10 браузъри" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "Топ 10 страни" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "Удари статистика" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "Топ 10 страници" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "Последните посетители" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "Топ Препращащи сайтове" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "Търсене двигател референции" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "Резюме" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "Последни думи за търсене" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "" + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "Не може да зареди GeoIP базата данни, се уверете, че сте го изтеглили в страницата Настройки." + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "Актуализиран %s GeoIP записи в базата данни на посетителите." + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "%s данни по-стари от %s дни, прочистват успешно." + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "Няма намерени за продухване от %s записи!" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "Моля изберете стойност над 30 дни." + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "Браузър статистика" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "Щракнете за превключване" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "Браузъри" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "Браузъри по вид" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "Платформа" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "Браузъри по платформа" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "версия на %s" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "Внимание: Изключване не са в момента зададени да се отчита, по-долу резултатите може да не отразява текущата статистика!" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "Изключения статистика" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "10 дни" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "20 дни" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "30 дни" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "2 месеца" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "3 месеца" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "6 месеца" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "9 месеца" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "1 година" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "Изключения статистически диаграма" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "Изключени хитове през последните" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "дни" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "Броя на изключените хитове" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "Хитове статистика диаграма" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "Хитове през последните" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "Броят на посещенията и посетителите" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "Посетете" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "Посетител" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "Последни Търсене дума статистика" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "#hash #" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "Карта" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "Страница" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "От" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "Всички" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "Последните посетител статистика" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "Страница тенденция за пост номер" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "Страница тенденция" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "Търсене двигател сезиране статистика" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "Търсене двигател референции в последните" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "Брой препращания" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "Общо" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "Топ страни" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "Ранг" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "Флаг" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "Страна" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "Посетител брой" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "Топ страници" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "Топ 5 страници тенденции" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "Топ 5 страница тенденция статистика" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "Брой посещения" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "Няма намерени заглавието на страницата" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "Посещения" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "Да бъде добавена скоро" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "Препращащи сайтове от" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "Препратки" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "За WP Statistics версия %s" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "Уебсайт" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "И преглед" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "Повече информация" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "Този продукт съдържа GeoLite2 данни, създадени от MaxMind, достъпни от %s." + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "Други" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "Днес посетителите карта" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "Адрес" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "Потребител(и) онлайн" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "Днес" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "Вчера" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "Ежедневно общо" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "Текущия час и дата" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "(Корекция)" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "Дата: %s" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "Време: %s" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "Посещения" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "Отказан достъп!" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "%s агент данни изтрито успешно." + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "Моля изберете желаните елементи." + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "%s платформа данни изтрито успешно." + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "%s таблични данни изтрито успешно." + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "Грешка, %s не се изпразва!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "Настройка на база данни" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "Изпълнете отново инсталиране" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "Инсталирай сега!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "Ако по някаква причина вашата инсталация на WP Statistics липсва таблиците в базата данни или други основни елементи, това отново ще изпълни процеса на инсталиране." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "Индекс на база данни" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "Страни" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "Актуализирай сега!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "По-старите инсталации на WP Statistics позволяват дублиране на записи в таблицата на посетителите в ъгъла случай. По-новите инсталира защита срещу това с уникален индекс на масата. За да създадете индекса на на по-старите инсталира дублираните записи трябва да бъдат изтрити първи. Щракнете върху \"Update Now\" ще сканира таблицата vistitors, изтриване на дублиращи се записи и да добавите към индекса." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "Тази операция може да отнеме много време на настанявам с много редове в таблицата на посетителите." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "По-старите инсталации на WP Statistics позволяват дублиране на записи в таблицата на посетителите в ъгъла случай. По-новите инсталира защита срещу това с уникален индекс на масата." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "Поздравления вашата инсталация е вече до дата, нищо общо." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "Износ" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "Износ от" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "Моля изберете" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "Изберете таблицата за изходния файл." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "Експортиране в" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "Изберете типа на изходния файл." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "Включва заглавен ред" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "Включва заглавен ред на първия ред от експортирания файл." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "Започнете сега!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "Посетители" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "Сигурни ли сте?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "Данни" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "Празна таблица" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "Таблица с всички данни ще бъдат загубени." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "Изчистване сега!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "Изтриване на записи по-стари от" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "Изтрит потребител статистика данни по-стари от определен брой дни. Минималната стойност е 30 дни." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "Чистка сега!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "Изтриване на потребителски агент типове" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "Изтриване на агенти" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "Всички посетител данни ще бъдат загубени за този агент тип." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "Изтриване сега!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "Изтриване на платформи" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "Всички посетител данни ще бъдат загубени за тази платформа тип." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "Ресурси" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "Памет отнасяне в PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "Байт" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "PHP памет граница" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "Памет граница скрипт е разрешено да се консумират, определени в php.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "Брой редове в таблицата на %s" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "Ред" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "Брой редове" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "Информация за версията" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "Статистика на WP версия" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "Версията на WP Statistics, която изпълнявате." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "PHP версия" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "Версията на PHP, която изпълнявате." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "PHP безопасен режим" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "Се сигурния режим на PHP активни. GeoIP код не се поддържа в безопасен режим." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "jQuery версия" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "JQuery версия, която изпълнявате." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "Навийте версия" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "Навийте не е инсталиран" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "PHP къдря версия на разширение, която изпълнявате. Навийте се изисква за GeoIP код, ако не е инсталиран GeoIP ще бъде забранена." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "Инсталирани" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "Не е инсталиран" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "Инфо за файла" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "GeoIP база данни" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "Файл от база данни не съществува." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr ", създаден на " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "Размера на файла и датата на GeoIP базата данни." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "browscap.ini файл" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "browscap.ini файл не съществува." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "Размера на файла и датата на файла browscap.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "browscap кеш файл" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "browscap кеш файл не съществува." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "Размера на файла и датата на кеш файла на browscap." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "Информация за клиента" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "Клиент IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "IP адреса на клиента." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "Потребителски агент" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "Клиент потребител фактор канап." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "Това ще замести всички IP адреси в базата данни с хашиш стойности и не може да се отмени, сигурен ли сте?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "GeoIP опции" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "Актуализира неизвестно местоположение данни в базата данни, това може да отнеме известно време" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "IP адреси" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "Хеш IP адреси" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "Замени IP адреси в базата данни с хашиш стойности, вие няма да можете да възстановите IP адресите в бъдеще да попълните местоположението информация след това и това може да отнеме известно време" + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "IP адреси се заменят с хеш стойности." + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "Инсталиране на ежедневието пълна." + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "Ресурси/информация" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "Прочистване" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "База данни" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "Актуализации" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "WP Statistics V %s" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "Посетете ни онлайн" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "Елате ни голям нов %s и поддържа актуална с последните новини за WP Statistics." + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "уебсайт" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "И преглед в WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "Благодаря за инсталиране на WP Statistics, ние ви препоръчваме да изпратите " + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "Оценка и преглед" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "над в WordPress.org. Вашето мнение е много оценявам!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "Преводи" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "WP Statistics подкрепя интернационализацията и ние насърчаваме потребителите да представят преводи, моля посетете нашия %s да видите текущото състояние и %s, ако искате да помогне." + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "сайт за съвместна работа на превод" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "пишете ни линия" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "Поддръжка" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "Ние сме съжалявам, имате проблем с WP Statistics и ние сме щастливи да помогне. Ето няколко неща, за да направите преди да се свържете с нас:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "Чели ли сте на %s?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "Често задавани въпроси" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "ръководство" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "Имате ли търси %s за подобен проблем?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "подкрепа форум" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "Има ли търсене в интернет за всички съобщения за грешка, получавате?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "И няколко неща, за да проверете отново:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "Как е вашата memory_limit в php.ini?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "Били ли сте опитвали Деактивирането на всички други плъгини, които сте инсталирали?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "Били ли сте опитвали използване на подразбиране WordPress тема?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "Имате ли двойно проверени настройките на плъгин?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "Имате ли всички необходими PHP разширения инсталирани?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "Получавате ли празни или непълни страница показва в браузъра си? Видя ли преглед на източника на страницата и проверете за фатални грешки?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "Проверихте ли вашия PHP и уеб сървър грешка логове?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "Все още не е късм?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "След това отворете нова тема на %s и ние ще отговорим възможно най-скоро." + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "WordPress.org подкрепа форум" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "Алтернативно %s поддръжка е наличен." + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "Фарси" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "Нива на достъп" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "Изисква ниво на потребител за да видите статистика за WP" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "Изисква потребителско ниво, за да управлявате WP Statistics" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "Вижте %s за повече информация на способности." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "Страница WordPress роли и възможности" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "Съвет: manage_network = супер администратор мрежа, manage_options = администратор, edit_others_posts = редактор, publish_posts = автор, edit_posts = сътрудник, прочетете = всеки." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "Всяка една от горните casscades правата нагоре в конфигурацията по подразбиране на WordPress. Така например избора на publish_posts предоставя правото на автори, редактори, администратори и супер администратори." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "Ако имате нужда от по-силен решение за делегиране на достъп, може да искате да погледнете %s в WordPress плъгин директорията." + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "Изключения" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "Запис изключения" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "Разреши" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "Това ще запише всички изключени хитове в отделна таблица с причините, защо е изключен, но никаква друга информация. Това ще генерира много данни, но е полезно, ако искате да видите общия брой на посещения вашия сайт получава, не само действителен потребител посещения." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "Изключване на потребителски роли" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "Изключи" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "%S роля да изключат от събирането на данни." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "IP/робот изключвания" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "Робот списък" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "Списък на думи, (по един на ред) за мач срещу за откриване на роботи. Записите трябва да бъдат най-малко 4 символа или те ще бъдат игнорирани." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "Възстанови по подразбиране" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "Сила робот списък актуализация след ъпгрейд" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "Сила списъка на робот, за да се възстанови по подразбиране след актуализация на WP Statistics се провежда. Забележка Ако тази опция е разрешена по потребителски роботи, вие сте добавили към списъка ще бъдат загубени." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "Изключените IP адресен списък" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "Добави 10.0.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "Добави 172.16.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "Добави 192.168.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "Сайт URL изключения" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "Изключените вход страница" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "Изключване на страницата за вход за регистриране като хит." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "Изключените администратор страници" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "Изключи администратор страници за регистриране като хит." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "browscap настройки" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "използване на browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "Активен" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "Базата данни на browscap ще бъдат изтеглени и използвани за откриване на роботи." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "Актуализиране на browscap информация" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "Изтегли browscap база данни" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "Запишете промените на тази страница, за да изтеглите актуализацията." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "Планиране на седмична актуализация на browscap DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "Следващата актуализация ще бъде" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "Изтегляне на базата данни на browscap ще бъде насрочено за един път седмично." + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "Това ще изтрие ръчно, когато запишете настройките, сигурен ли сте?" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "Тази функция няма да съхранява IP адреси в базата данни, но вместо това използва уникален хашиш. \"Store целия потребителски агент string\" настройка ще бъде забранена, ако тази опция е избрана. Вие няма да можете да възстановите IP адресите в бъдеще да се възстанови информацията за местоположението, ако това е разрешено." + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "Потребители онлайн" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "Потребител онлайн" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-bn_BD.mo b/plugins/wp-statistics/languages/wp_statistics-bn_BD.mo new file mode 100644 index 0000000..44a876f Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-bn_BD.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-bn_BD.po b/plugins/wp-statistics/languages/wp_statistics-bn_BD.po new file mode 100644 index 0000000..b1d523e --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-bn_BD.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in Bengali +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2015-04-22 00:42:10+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: bn\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "" + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "" + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "" + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "" + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "" + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "" + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "" + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "" + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "" + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "MM/DD/YYYY" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "অনলাইনের ব্যবহারকারী চেক করবে" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "দর্শকের সুদক্ষতা" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "স্টাটস মেনুবারে দেখাও" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "না" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "হ্যা" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "স্টাটস অ্যাডমিনের মেনুবারে দেখাও" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "এখন দেখছে" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "আজ দেখেছে" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "গতকাল দেখেছে" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "মোট দেখা হয়েছে" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "" + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "গুগল" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "পরিসংখ্যান" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "" + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "মোট পোষ্ট" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "মোট পাতা" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "মোট মন্তব্য" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "মোট স্প্যাম" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "মোট ব্যবহারকারী" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "গড় পোষ্ট" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "গড় মন্তব্য" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "গড় ব্যবহারকারী" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "শেষ পোষ্টের তারিখ" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "নাম" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "আইটেম" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "গতকাল দেখেছে" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "সার্চ ইঞ্জিন নির্বাচন করুন" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "" + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "" + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "সেটিসং" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "" + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "" + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "আপনার এই পেজ দেখার মত পর্যাপ্ত অনুমতি নেই।" + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "" + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "" + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "" + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "" + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "সকল" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "" + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "আইপি" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "" + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "" + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "" + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "" + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-bs.mo b/plugins/wp-statistics/languages/wp_statistics-bs.mo new file mode 100644 index 0000000..feb61af Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-bs.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-bs.po b/plugins/wp-statistics/languages/wp_statistics-bs.po new file mode 100644 index 0000000..4751d47 --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-bs.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in Bosnian +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-11-04 15:40:15+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: bs_BA\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "Posljednjih 365 dana" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "Zadnjih 30 dana" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "Zadnjih 7 dana" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "Za IPv6 adrese koriste fc00 :: / 7 formatu." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "Dodaj fc00 :: / 7" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "Današnji Poseta" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "Današnji posjetitelji" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "Zadnjih 7 dana Poseta" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "Zadnjih 30 dana Poseta" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "Ukupno posjeta" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "Ukupno posjetitelja" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "Nije pronađen odgovarajući dodatak!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "Zlib gzopen ()" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "Ako je gzopen() funkcija instalirana, gzopen() je obavezan da bi GeoIP baza bila uspješno skinuta." + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "Error download_url () ili gzopen () funkcije ne postoje!" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "Greška pri postavljanju permisija GeoIP baze, pobrinite se da vaš web sever ima permisiju da zapisuje u direktorij: %s" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "Koristite nepodržanu verziju PHP-a." + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "WP Statistics isključen" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "WP Statistics je detektova PHP verziju %s koja nije podržana, zahtjeva %s ili noviju verziju kako bi funkcionisao!" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "Molimo kontaktirajte vašu hosting firmu da urade update na podržanu verziju ili isključite WP Statistics da bi sklonili ovu poruku." + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "GREŠKA: Widget nije pronađen!" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "Loading ..." + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "Ponovo učitavam..." + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "Top posjetitelji" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "optimizacijska stranica" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "omogućeno" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "Poništi zastarjele podatke dnevno" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "WP Cron će biti pokrenut na serveru svakodnevno kako bi obrisao podatke starije od postavljenog broja dana." + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "Obriši podatke starije od" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "Dnevno poništi brojač najaktivnijih posjetilaca" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "WP Cron će biti pokrenut na serveru svakodnevno kako bi obrisao podatke o korisnicima sa više od predefinisanog broja aktivnosti na stranici (vjerovatno se radi o bot-u)." + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "Broj klikova potrebnih za brisanje posjetioca. Minimalna vrijednost je 10 klikova. Nevažeće vrijednosti će onemogućiti dnevno održavanje." + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "ID članka / stranice na kojoj želite statistiku" + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "Post / Page ID" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "Ask.com" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "Vremenski okvir da biste dobili statistiku za, strtotime() (http://php.net/manual/en/datetime.formats.php) će se koristiti za izračunavanje. Koristite \\\"total\\\"; da bi ste dobili sve snimljene datume." + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "praćenje posjetitelja" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "kolekcija geoip" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "posjeta indeks baze podataka" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "Nadogradnja baze je obavezno, molimo vas posjetite %s i nadogradite sljedece: %s" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "indeks baze podataka zemalja" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "stranica postavke" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "" + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "" + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "" + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "" + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "Po defaultu WP Statistika pokazuje upozorenje ako bilo koji od glavnih karakteristika su isključeni na svakoj admin stranici, ova opcija će ove obavijesti onemogućiti." + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "tražilice" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "Onemogućiti\"%\".strtolower($m[1]) od prikupljanja podataka i izvještavanja." + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "Dodajte ukupno linije za grafikone sa višestrukim vrijednostima, kao što su referali tražilica" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "postavke GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "usluge IP lokacija koje GeoLite2 podaci stvorio MaxMind, dostupan od\"%\".strtolower($m[1])." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "GeoIP kolekcije" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "Za više informacija i lokacija (Država) od posjetitelja, omogućili ovu funkciju." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "Download GeoIP baza" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "Zakazati mjesečno ažuriranje GeoIP DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "Preuzimanje baze podataka GeoIP će biti zakazana za 2 dana nakon prvog utorka u mjesecu." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "Pozivni broj za privatne IP adrese" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "Međunarodni standard dva slova kod zemlje (npr. SAD = Sjedinjene Države, CA = Kanada, itd) za privatne (nerutabilne) IP adrese (npr. 10.0.0.1, 192.158.1.1, 127.0.0.1, itd). Koristite "000" (tri nule) za korištenje "Unknown" kao kod zemlje." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "kolekcija GeoIP je onemogućen zbog sljedećih razloga:" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "GeoIP kolekcije zahtijeva cURL PHP proširenje i nije učitan na vašu verziju PHP-a!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "GeoIP kolekcije zahtijeva BC Math PHP ekstenzija i nije učitan na vašu verziju PHP-a!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "Zajednički izvještaj opcije" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "E-mail adrese" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "Browscap" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "Pošalji izvještaj kad god se ažurira na browscap.ini." + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "Pošalji izvještaj kad god se ažurira baze podataka GeoIP." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "nadogradnja" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "Pošalji izvještaj kad god je nadograđen plugina." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "Raspored" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "E-mail" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "Izaberite način isporuke za statistički izvještaj." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "Napomena: Da biste poslali SMS tekstualne poruke instalirajte\"%\".strtolower($m[1]) plugin." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "WordPress SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "Unesite sadržaj izvještaja." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "Danas Posjeta" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "Jučer Posjeta" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "komandna tabla" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "Sljedeće stavke su globalni svim korisnicima." + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "Onemogućiti dashboard widgeti" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "Onemogućite dashboard widgeti." + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "Stranica / Post Urednik" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "Isključi post / urednik stranice widget" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "Onemogućite stranicu / post urednik widget." + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "Google" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "Onemogućiti prikaz mape" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "WP Statisitcs uklanjanje" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "Nakon što pošaljete ovaj obrazac postavke će biti izbrisana tokom učitavanje stranice, međutim WP Statistika i dalje se pojavi u vašem Admin meniju dok drugi učitavanje stranice se izvršava." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "Uklonite podataka i postavki" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "ukloniti" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "Uklonite podataka i podešavanja, ova akcija se ne može poništiti." + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "Obavijesti" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "Dashboard / Pregled" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "održavanje" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "uklanjanje" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "ažuriranje" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "jednom nedeljno" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "Jednom u 2 tjedna" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "Jednom svake 4 nedelje" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "statistika" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "" + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "Ukupno postova" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "Ukupno Komentari" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "Ukupno spamovi" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "Ukupno korisnika" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "ime" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "Predmeti" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "Izaberite tip tražilice" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "WP Statistika je uklonjen, molimo vas onemogućiti i izbrisati." + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "WP Statistika" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "Kompletna statistika za WordPress site." + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "Postavke" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "Kliknite ovdje da posjetite plugin na WordPress.org" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "Kliknite ovdje da biste ocijenili i komentar o ovom plugin na WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "Ocijenite ovaj plugin" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "pregled" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "online" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "pretrage" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "riječi za pretraživanje" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "Top Posjetioci Danas" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "optimizacija" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "priručnik" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "mogućnosti" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "Danas posjeta" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "Pogledaj statistiku" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "Preuzmite ODF datoteku" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "Preuzmite HTML datoteke" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "" + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "Ti nemaju dovoljno dozvolu da pristupite ovoj stranici." + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "WP Statistika\"%\".strtolower($m[1]) instaliran na" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "Greška pri preuzimanju GeoIP baze podataka iz:\"%\".strtolower($m[1]) -\"%\".strtolower($m[1])" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "Greška nije mogao otvoriti preuzete GeoIP baze podataka za čitanje:\"%\".strtolower($m[1])" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "GeoIP baza ažurirana uspješno!" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "GeoIP ažurirati na" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "browscap ažuriranje baze podataka uspješno!" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "browscap ažuriranje baze podataka nije uspjelo! Cache datoteka prevelika, vraćanja na prethodni browscap.ini." + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "browscap ažuriranje baze podataka nije uspjelo! Novi browscap.ini je mis-identifing korisnički agenti kao crawlers, vraćanja na prethodni browscap.ini." + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "Top 10 preglednici" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "Top 10 zemalja" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "Današnji posetilaca" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "hit Statistika" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "Top 10 Stranice" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "Nedavni posjetitelji" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "Sažetak" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "Top 10 Posjetioci Danas" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "" + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "" + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "Ažurirano\"%\".strtolower($m[1]) GeoIP zapisa u bazi podataka posjetitelja." + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "" + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "Podaci nisu pronađeni da očisti od\"%\".strtolower($m[1])!" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "Kliknite za prebacivanje" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "Isključenja Statistika" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "2 mjeseci" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "3 mjeseca" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "6 mjeseci" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "9 mjeseci" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "1 godina" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "Isključeni hitova u posljednjih" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "dani" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "Hitova u posljednjih" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "Broj posjeta i posjetitelja" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "posjeta" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "posjetilac" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "# Hash #" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "karta" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "stranica" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "od" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "sve" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "online za" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "Broj referala" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "Top Zemlje" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "rang" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "zastava" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "zemlja" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "Top 5 stranica Trendovi" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "Bez naslova stranica pronađena" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "posjeta" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "Treba dodati uskoro" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "reference" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "sajt" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "Više informacija" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "Ovaj proizvod sadrži GeoLite2 podataka nastala MaxMind, dostupan od\"%\".strtolower($m[1])." + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "adresa" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "Korisnik (a) online" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "danas" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "juče" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "Dnevno Ukupno" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "Trenutno vrijeme i datum" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "(Podešavanje)" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "Datum:\"%\".strtolower($m[1])" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "IP" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "agent" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "verzija" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "Pristup odbijen!" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "" + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "" + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "" + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "" + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "Greška,\"%\".strtolower($m[1]) ne prazni!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "Instalirati sada!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "Indeks baza" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "zemlje" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "izvoz" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "izvoz iz" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "Molimo odaberite" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "Odaberite tablicu za izlaznu datoteku." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "izvoz u" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "Odaberite vrstu izlazne datoteke." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "Uključiti Header Row" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "Uključiti redak zaglavlja kao prva linija izvezene datoteke." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "Povijesni Vrijednosti" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "Posjetitelja" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "Update sada!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "Jesi li siguran?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "podaci" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "Sve sto podaci će biti izgubljeni." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "Purge zapise starije od" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "Purge sada!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "Brisanje korisnika Tipovi agenta" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "Svi podaci posjetitelja će biti izgubljen za ovu vrstu agent." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "Izbriši sada!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "Brisanje Platforme" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "Svi podaci posjetitelja će biti izgubljen za ovu vrstu platforme." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "sredstva" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "korištenje memorije u PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "bajt" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "PHP ograničenje memorije" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "Ograničenje memorije skripte je dozvoljeno konzumirati, postavljen u php.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "red" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "Broj redova" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "verzija Info" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "PHP Safe Mode" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "jQuery verzija" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "JQuery verzija radite." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "instalirana" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "nije instaliran" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "GeoIP baza" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr ", Stvoreno na" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "Veličina datoteke i datum baze podataka GeoIP." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "browscap.ini File" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "browscap.ini datoteka ne postoji." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "Veličina datoteke i datum browscap.ini datoteke." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "browscap cache datoteka ne postoji." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "klijent Info" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "klijent IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "Pretraživač" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "Otkriveni verzija web pregledniku." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "Otkrivenih klijent platformi." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "GeoIP Mogućnosti" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "IP adrese" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "Hash IP adrese" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "Zamijenite IP adrese u bazi podataka sa hash vrijednosti, nećete biti u mogućnosti da se oporavim IP adrese u budućnosti nakon toga popunite informacije o lokaciji i to može potrajati" + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "IP adrese zamijenio sa hash vrijednosti." + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "Resources / Informacije" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "baza podataka" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "ažuriranja" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "istorijski" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "WP Statistika V\"%\".strtolower($m[1])" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "Posjetite nas online" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "sajt" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "Hvala za instaliranje WP statistiku, preporučujemo vam da podnese" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "preporuku i pregled" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "Prijevodi" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "podrška" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "Pitanja i odgovori" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "priručnik" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "forum podrške" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "Jeste li pretraživati ​​Internet za bilo kakvu grešku primate?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "I nekoliko stvari da proverim:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "Kako ti je memory_limit u php.ini?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "Da li ste pokušali onemogućiti bilo koji drugi plugin ste možda instaliran?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "Jeste li pokušali koristeći zadani WordPress temu?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "Jeste li proverili postavke plugin?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "Da li instalirali sve potrebne ekstenzije PHP?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "Da li dobiti praznu ili nepotpune stranice prikazuju u vašem browser? Da li ste videli izvor za stranicu i provjerite za bilo kakve fatalne greške?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "Jesi li proverio PHP i web server greška za rezanje?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "Ipak nemaju nikakve sreće?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "Onda molim te otvori novu temu na\"%\".strtolower($m[1]), a mi ćemo odgovoriti u najkraćem mogućem roku." + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "WordPress.org forum podrške" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "Perzijski" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "WP Statistika Honey Pot Page" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "Potreban nivo korisniku da vidi WP statistiku" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "Potreban nivo korisniku da upravlja WP statistiku" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "omogućiti" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "isključiti" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "IP / Robot Isključenja" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "lista Robot" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "Vrati na Uobičajeno" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "Izuzete IP adresa lista" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "Dodaj 10.0.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "Dodaj 172.16.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "Dodaj 192.168.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "Koristite Honey Pot" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "Honey Pot post id" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "Post id koristiti za stranicu Honeypot." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "Lista kodova zemlje (jedan po liniji, dva pisma svaki) da isključi iz kolekcije statistika. Koristite "000" (tri nule) da isključi nepoznate zemlje." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "Isključuje stranicu za prijavu za registraciju kao hit." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "Isključeni RSS feed" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "Isključi RSS feed za registraciju kao hit." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "postavke browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "browscap korištenje" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "aktivan" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "Baza podataka browscap će se preuzeti i koristiti za otkrivanje robota." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "Preuzimanje browscap baza" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "Sačuvajte promjene na ovoj stranici za preuzimanje ažuriranja." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "Zakazati nedeljni ažuriranje browscap DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "Sljedeći update će biti" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "Preuzimanje baze podataka browscap će biti zakazana za jednom tjedno." + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "Ovo će izbrisati priručnik kada ste sačuvali postavke, jesi li siguran?" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "Ova funkcija neće čuvati IP adrese u bazi podataka, ali umjesto toga koristi jedinstveni hash. "Pohranite čitav korisnički agent string" postavka će biti onemogućen ako je odabrana ova. Nećete biti u mogućnosti da se oporavim IP adrese u budućnosti da se oporavi informacije o lokaciji ako je to omogućeno." + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "korisnici Online" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "korisnika online" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-ckb.mo b/plugins/wp-statistics/languages/wp_statistics-ckb.mo new file mode 100644 index 0000000..ba23863 Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-ckb.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-ckb.po b/plugins/wp-statistics/languages/wp_statistics-ckb.po new file mode 100644 index 0000000..1c388b5 --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-ckb.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in Kurdish (Sorani) +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-01-06 14:47:53+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: ku_IQ\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "" + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "ئێوە خەریکی کارکردن بە وشانی پاڵپشتی نەکراویphpین" + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "ئامار ناچالاک بووە" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "WP ئاماری PHP وشانی٪ s ناسراوە کە پاڵپشتی ناکرێت WP پێویستی PHP وشانی ٪ s و سەرتر هەیە!" + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "هەڵە : ویجیت پەیدا نەبوو" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "خرمەخرم......" + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "لە کاتی هەڵگرساندەوە...." + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "دوایین سەردانەکان" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "پەڕەی چاکسازی" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "چالاک کرا" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "سڕینەوەی زانیاری ڕۆژانە" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "سڕینەوەی زانیاری کۆنەتتر" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "" + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "" + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "" + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "هیچ سەردانێک پەیدا نەبو" + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "%s گوزارش بە سەرکەوتوویی پاککران." + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "ژمارەی گوزارشەکانی سەرەوە ١٠ یان سەرت لەو بن." + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "سەردانی پەڕە" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "ژمارەی بەرگە" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "ژمارەی بۆچوون" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "ژمارەی سپام" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "ژمارەی بەکارهێنەر" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "مامناوەندی نووسراوە" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "مامناوەندی لێدوان" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "مامناوەندی بەکارهێنەر" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "سرویسی گەڕان" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "خزمەتگوزاری گەڕان بۆ ئامارەکان" + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "فۆرماتی ژمارە" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "فۆرماتی ژمارەکان بۆ نیشاندانی : i18n, ئینگلیزی یان هیچ." + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "ئینگلیزی" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "نێودەوڵەتی" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "کورتەی ئامار" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "تەواو هێڵیکاریەکان" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "گشتی کاتەکان" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "ئایا لە بارەی پاڵپستی لە زیادکراوەی ئاماری وۆردپرێس تێفکراوی" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "یارمەتی" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "ئایا لە زیادکراوەی ئاماری وۆردپرێس سودت وەرگرتووە دەتوانیت لە پەڕەی %s خوازی خۆتمان پێ نیشان بدەی" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "یارمەتی" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "ئێستا پاڵپستی بکەن" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "داخستن" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "هەڵبژاردنی ئامارێک کە پێت خۆشە نیشانبدرێت" + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "ئامار" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "ژمارەی ناردراوە" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "ڕوخساری کات" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "تا" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "بڕۆ" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "پلە#5" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "پلەی #٤" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "پلەی #3" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "پلای #١" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "پلای #٢" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "خشتی سەردان" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "پێڵاوە بە" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "پلە" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "MM/DD/YYYY" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "وەرگێرانەکان بەکارمەهێنە و لە جیاتی ئەوە ئینگلیزی وەکو زمانی بنچینەیی بۆ WP Statistics بەکاربهێنە (پێویستی بە بارکردنی دوو پەڕ هەیە)" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "ئئنگلیزی بەزۆر" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "زمانەکان" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "تێبینی: ئەم هەڵبژاردنە هیچ پارامێتەری بەستەرێک لە ئەستۆناگرێت ( هەر شتێک لەدوای ؟)، تەنها بۆ ناوی سکریپتەکە. هەر تێنوسراوێک کەمتر لە دوو پیت پشتگوێ دەخرێت." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "لیستێک لە بەستەرە ناوخۆییەکان (نمونە /wordpress/about بۆ هەر دێڕێک یەک) بۆ دەرکردنی لە کۆکراوەی ئامارەکان." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "لیستی بەستەرە دەرکراوەکان" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "بەستەری دەرکراو" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "٣٦٥ ڕۆژ ڕابردوو(ساڵ)" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "٣٠ ڕۆژ ڕابردوو (مانگ)" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "٧ ڕۆژی ڕابردوو(هەفتە)" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "یاهو" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "یاندیکس" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "clearch.org" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "دەک دەک گۆو" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "بینگ" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "بەیدوو" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "پێشبردنەکان" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "ڕۆڵی بەرکارهێنەر" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "پەڕی چوونەژوورەوە" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "پەڕی بەڕێوەبەر" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "ئاراستەکردنی خۆیی" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "یەکگرتنەوەی ئایپی" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "ڕۆبۆت" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr ".لە ئێستادا هیچ بەکارهێنەرێک بۆ ئەم ماڵپەڕ لەسەرهێڵ نییە" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "لێواری ڕۆبۆت" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "مەنجەڵی هەنگوین" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "ئامارەکانی پەڕی زۆر خوازراو" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "ناوی خانەخوێ" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "ئەم تایبەتمەندیە چالاک یان ناچالاک بکە" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "پشکنین بۆ بەکارهێنەرانی سەرهێڵ بکە هەموو" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "چرکەیەک" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "کات بۆ پشکنینی دروستی بەکارهێنەری سەرهیڵ لەم ماڵپەڕە. ئێستا %s چرکەیە" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "تۆمارکردنی گشت بەکارهێنەر" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "ڕێکخستنی دەرکردەکان و تۆمارەکانی هەموو بەکارهێنەرانی سەرهێڵ پشتگوێ بخە ( بەلەخۆگرتنی ئاراستەکردنی خۆیی و ڕۆبۆتەکان). پێویستە تەنها بۆ دیاریکردنی کێشە بەکاربهێندرێت." + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "تەواوی زنجیرەی بەکارهێنەری بریکار پاشەکەوت بکە" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "تەنها چالاک بکرێت بۆ هەڵەدۆزین" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "هاوچوستی بۆ هەر سەردانکارێک" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "بۆ هەر سەردانێک بۆ هەژمارکردنی ژمارەیەک هەڵدانەوە. لە ئێستادا %s." + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "پەڕەكان" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "شوێن پێی هەموو پەڕەکان بکە" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "لابردنی پارامێتەرەکان لە بەستەرەکە" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "ئەمە هەموو شتێک دەسڕێتەوە لە دوای ؟ لە بەستەرێکدا" + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "ستونی هەڵدانەوەکان لە لیستی بابەت\\پەڕەکان ناچالاک بکە" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "هەمەجۆر" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "ئامارەكان لە لیست ئامراز پێشان بدە" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "نەخێر" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "بەڵێ" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "ئامارەكان لە لیست ئامرازی بەڕێوەبەر پێشان بدە" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "ئاگاداركردنەوەكانی بەڕێوەبەر بشارەوە سەبارەت بە تایبەتمەندییە ناچالاكەكان" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "لە بنەرەت زیادکراوەی ئاماری وۆردپرێس تواناییەکانی ناچالاکی زیاد کراوە بە شێوەی هەڵە لە پەڕەی بەڕێوەبەر نیشان ئەدات.ئەم هەڵبژاردە ئەم تایبەتمەندییە ناچالاک دەکات" + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "سڕینەوەی پەڕگەی ڕینمایی" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "لە بنەرەت پەرگەی ڕینمایی بەکارهێنەرزیادکراوەی ئامار لە بوخچەی زیادکراوەی ئامار بە قەبارەی(٥مێگابایت) دانراوە.گەر ئەم هەڵبژاردە چالاک بێت هەر ئێستا سڕایەوە و لەکاتی بەڕۆژ بوونەوەس نامێنێت." + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "مەکینەکانی گەڕان" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "ناچاڵاککردنی مەکینەکانی گەڕان کە پێویستت پێیان نییە..ئەم کارە لە ئاکامی گشتی مەکینەکان کارگێڕی هەیە." + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "ناچالاک" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "ناچالاککردنی %s کۆکردنەوەی داتا و گوزارشەکان." + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "هێڵکاریەکان" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "کۆی گشتی" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "زیادکردنی کۆی گشتی بە هێڵکاری ئاماری تێپەڕبوونلە مەکینەکانی گەڕان" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "ڕێکخستنه‌کانیGeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "خزمەتگوزاری نیشاندانی شوێن IPلەگەڵ GeoLite2 دابینکراوە و لەلایانMaxMind درووستکراوە و لە %s توانایی دەستپێگەیشتنی بۆ هەیە." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "کۆی GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "بۆ وەرگرتنی زانیاری زۆرتر و شوێنی(وەڵاتی) میوان.ئەم جێگا چالاک بکە." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "بەڕۆژ بونی زانیاریەکان GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "داگرتنی بنکەداراوەی GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "برنامە دانان بۆ بەڕۆژ کردنی مانگانەی بنکەدراوەی GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "وەرگرتنی بنکەدراوەی GeoIP لە دوو ڕۆژ پاش یەکەمین سێ شەممەی هەر مانگ." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "ئەم هەڵبژاردە تەنانەت زانیاریەکانی کەمتر لە ١ کیلۆبایتیش دادگرێت(کە بەمانای زانیارییەکانی هاورێی زیادکراوەیە)." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "خەڵکی لەدەست چوو GeoIP پاش لە بەڕۆژ کردنی بنکەی دراوە GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "بەڕۆژ کردنی هەر داتاییک لەدەست چوو GeoIP پاش لە داگرتنی بنکە دراوەی نوێ" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "کۆدی وەڵآت بۆ نیشانەکانی IP تایبەت" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "ستانداردی دوو کۆدی نێودەوڵەتی نامە (بۆ وێنە. ئەمریکا= وەڵآتی ئەمریکا، CA = کەنەدا، و هتد) بۆ تایبەت (یوانایی دەتپێگەیشتنی نییە) ناونیشانیIP (بۆ وێنە. 10.0.0.1، 192.158.1.1، 127.0.0.1،و هتد). بەکارهێنان لە "000" (سێ سفر) به استفاده از "نەناسراو" بە عینوانی کۆدی وەڵات." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "کۆی GeoIP بەهۆکاری خوارەوە ناچالاک بووە" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "کۆی GeoIP به PHP وەشانی%s یان سەرترەوە پێویستی هەیە، لە ئێستا بە هۆی کەم بوونی وەشانی PHPئێوە ناچالاکە." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "کۆی GeoIPپێویستی بە پێوەکراوەی BC Math لەPHP هەیە وە ناتوانێت لە وەشانی ئێوە PHPدابین بکرێت!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "کۆی GeoIPپێویستی بە پێوەکراوەی BC Math لەPHP هەیە وە ناتوانێت لە وەشانی ئێوە PHPدابین بکرێت!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "شێوازی پاراستنی PHP نەدۆزراوە! کۆیGeoIP لەلایەن شیوازی پاراستنی PHP پاڵپشتی نابێت!" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "ئەم کردارە داتا کۆنەکان بۆ هەمیشە دەسڕێتەوە. بۆ چالاککردنی دەڵنیای؟" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "ڕۆژ" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "ژمارەی ڕۆژەکان بۆ هێشتنەوەی ئامار. کەمترین ژمارە ٣٠ ڕۆژە.ڕۆژانە ژمارەی نادرووست ناچالاک دکرێتەوە." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "ڕێکخستنی گوزارشی گشتی" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "ناونیشانەکانی ئیمەیل" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "بۆ وەرگرتنی ئیمەیلی گوزارش،ناونیشانی ئیمەیلەکان بە کۆما جودابکەنەوە." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "بەڕۆژکردنی گوزارشەکان" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "Browscap" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "ناردنی گوزارش کاتێک browscap.ini بەڕۆژ دەبێت" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "ناردنی گوزارش کاتێک GeoIP بەڕۆژ دەبێت" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "سڕینەوە" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "ناردنی گوزارش کاتێک بنکەی دراوە بەڕۆژ دەبێت" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "بەڕۆژبوون" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "سڕینەوە" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "گوزارشی ئاماری" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "کات دیاریکردن" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "چۆنیەتی وەرگرتنی گوزارشی ئامار هەلبژێرە" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "ناردنی گوزارش لە رێگای" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "ئیمەیل" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "کۆرتە پەیام" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "شێوازی وەرگرتنی گوزارشی ئاماری هەڵبژێرە" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "خاڵ: بۆناردنی کورتە پەیام تکایە زیادکراوەی %s دامەرزێنە." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "کورتەپەیامی وۆردپرێس" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "ناوەرۆکی دەقی گوزارش" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "ناوەرۆکی گوزارش بنووسە" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "هەر کورتە کۆدێک لە لایەن وۆردپرێسی ئێوە پاڵپشتی دەبێت. کورتەکۆدەکان لە زیادکراوەی ئامار(لیستی کۆدەکان لە رینمایی بەکارهینەردا هەیە) لە جەستە پشتیبانی دەکرێت. بۆ وێنە :" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "بەکارهینەری سەرهێڵ" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "میوانی ئەمڕۆ" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "سەردانی ئەمڕۆ" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "میوانی دوێنێ" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "سەردانی دوێنێ" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "کۆی میوانەکان" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "کۆی سەردانەکان" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "هیچ" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "دەربارە" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "داشبۆرد" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "بەڕگەکانی خوارەوە جیهانین بۆ تەواو بەکارهینەران" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "ناچاڵاککردنی ئامرازی داشبۆرد" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "ناچاڵاککردنی ئامرازی داشبۆرد" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "دەستکاری پەڕەو/نوسراوە" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "ناچالاککردنی ئامرازی(ویدجێت) سەردانی پەرەو/نوسراوە" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "ناچالاککردنی ئامرازی(ویدجێت) سەردانی پەرەو/نوسراوە" + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "گووگڵ" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "ناچالاککردنی نخشە" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "ناچالاککردنی نیشاندانی نەخشە" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "سڕینەوەی زیادکراوەی ئامار" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "سڕینەوەی زیادکراوەی ئاماری وۆردپرێس،سڕینەوەی ڕیکخستنەکانی زیادکراوەی نییە.ئەم هەڵبژاردە دەتوانن تەواوی زانیاری(خشت و داتا)ی زیادکراوە بسڕنەوە." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "پاکسازی لە کاتی بارکردنی پەڕە پاس بارێک لە تۆمارکردنی ڕێکخستنەکان ئەنجام دەبێت.بەڵام زیادکراوەی ئاماری وۆردپرێس لە پێرستی بەڕێوەبەر تاکاتێک بەشەکانی دیکەی پەڕە هەڵگرسابێت نیشان دەدرێت." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "سڕینەوە داتاو ڕێکخستنەکان" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "سڕینەوە" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "سڕینەوە داتاو ڕێکخستنەکان .ئەم کردارە ناگەرێتەوە." + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "گشتی" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "ئاگادارییەکان" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "داشبۆرد/لەچاوپێکەوتنێک" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "پاراستن/چاککردن" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "سڕینەوە" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "بەڕۆژکردن" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "جارێک لە هەفتە" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "هەر ٢ هەفتە" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "هەر ٤ هەفتە" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "ئامار" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "نیشاندانی ئاماری ماڵپەر لە (ئامرازی) لاتەنیشت" + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "کۆی گشتی سەردانی پەڕگە" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "کۆی نووسراوەکان" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "کۆی پەڕەکان" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "کۆی بۆچونەکان(لێدوانەکان)" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "کۆی بێزارکەرەکان" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "کۆی بەکارهێنەران" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "مامناوەندی نووسراوەکان" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "مامناوەندی بۆچوونەکان" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "مامناوەندی بەکارهێنەران" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "ڕێکەوتی بەڕۆژبوونی ماڵپەڕ" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "ناو" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "بڕگە" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "سەردانی دوێنێ" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "هەڵبژاردنی جۆری مەکینەی گەڕان" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "زیادکراوە ئاماری وۆردپرێس سڕاوەتەوە .تکایە ناچالاک یان بیشرەوە." + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "ئاماری وۆردپرێس" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "ئامری گشتی بۆ ماڵپەڕی وۆردپرێسەکەت" + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "ڕیکخستن" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "بۆ دیتنی زیادکراوەی لە WordPress.org کرتەیێک بکە" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "دیتنی پەرەی WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "بۆ ]لەدانان بە ئەم زیادکراوە لە سەر ماڵپەڕی Wordpress.org کرتە بکە " + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "پلەدانان بۆ ئەم زیادکراوە" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "ئاماری وۆردپرێس-سەردان" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "پیشاندانی گشتی" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "سەرهێڵ" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "هاتنەژوورەوەکان" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "گەرانەکان" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "گەرانی وەشەکان" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "بەرزترین میوانەکانی ئەمڕۆ" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "باشینەسازی)هەژیکردن)" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "ڕێنمایی" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "مالپەڕ" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "ڕێکخستنه‌کان " + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "کۆی میوان" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "میوانی ئەمڕؤ" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "میوانی دوێنێ" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "نیشاندانی ئامار" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "داگرتنی پەڕگەی ODF" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "داگرتنی پەڕگەی HTML" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "ڕێنمایی پەیدا نەبوو" + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "تۆ مۆڵەتت بۆ دەستپێگەیشتنی ئەم پەڕەیە نییە." + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "زیادکراوەی ئاماری وۆردپرێس %s دامەزراوە" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "هەڵەی داگرتنی بنکەدراوەی GeoIP لە %s: - %s" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "هەڵەی کردنەوە لە کاتی داگرتنی GeoIPبۆ خوێندن %s" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "هەڵەی کردنەوە لە کاتی داگرتنی GeoIP بۆ نووسینی: %s" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "بنکەیدراوەی GeoIP بە سەرکەوتوویی بە ڕۆژ بوو" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "GeoIP بەڕۆژ بوو لە" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "داگرتنی بنکەی دراوە لە browscapهەڵە لە: %s - %s" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "browscap بنکەی بە سەرکەوتوویی بەڕۆژ بوو." + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "بنکەدراوەی browscap بۆ بەڕۆژ بوون سەرکەوتوو نەبووە! پەڕگەی باشکەوتکردن قەبارەی گەورەیە! بڕۆ بۆ browscap.ini پێشتر." + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "بنکەدراوەی browscap بۆ بەڕۆژ بوون سەرکەوتوو نەبووە! browscap.iniنوێ هەڵەیە identifing بریکاری بەکارهێنەر بەمانای وێبخشۆک بڕۆ بۆ browscap.ini پێشتر." + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "browscap لە ئێستا ئامادەیە بۆ ئەم وەشانە!" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "Browscap.ini بەڕۆژکرا" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "ئاماری خێرا" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "١٠ وێبگەڕی لووتکە" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "١٠ وەڵاتی لووتکە" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "میوانەکانی ئەمڕۆ" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "ئامری سەردان" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "بەرزترین ١٠ پەرە" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "دوایین میوانەکان" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "زۆرترین ماڵپەڕی هاتن" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "مەکینەی گەڕان هاتنەژوور" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "کورتە" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "دوایین وەشەی گەڕان" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "١٠ میوانی لوتکەی ئەمڕۆ" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "ئەم نووسراوە هێشتا بڵاو نەکراوەتەوە" + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "توانایی گەڕانەوەی بنکەدراوەی GeoIP نییە، دەڵنیا بە لە پەرگەی ڕێکخستنەکان وەردەگیرێت." + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "%s ڕیکۆردی GeoIP لە بنکەی دراوە بەڕۆژ بوو." + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "%s داتای کۆنەتر لە ڕۆژی %s بە سەرکەوتوویی پاکسازی بوو." + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr " هیچ ریکۆردێک پەیدانەبوو بۆ %s! پاکسازی" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "بنکەی دراوە پاکسازی لە" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "تکایە زۆرتر لە ٣٠ ڕۆژ هەڵبژێرن" + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "ئاماری وێبگەرەکان" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "بۆ بەستن و داخستن کرتە بکە" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "وێبگەڕەکان" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "وێبگڕەکان لە سەر بنەمای جۆری" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "سەکۆ" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "وێبگەڕەکان لە سەر بنەمای سەکۆ" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "%s وەشان" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "خاڵ: تائێستا جیاکاری بۆ ریکۆردەکان جیاکاری نەکراوە. ئاکامەکانی خوارەوە لەوانەیە ئاماری کۆتایی ڕەنگدانەوەی نەکات." + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "ئاماری جیاکاریەکان" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "١٠ ڕۆژی ڕابردوو" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "٢٠ ڕۆژی ڕابردوو" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "٣٠ ڕۆژی ڕابردوو" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "٢ مانگی ڕابردوو" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "٣ مانگی ڕابردوو" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "٦مانگی ڕابردوو" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "٩ مانگی ڕابردوو" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "١ ساڵی ڕابردوو" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "هێڵکاری ئاماری جیاکراوەکان" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "سەردانی دوایین جیاکردنەوە" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "ڕۆژی ڕابردوو" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "ژمارەی سەردانی جیاکاری" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "هێڵکاری ئاماری سەردانەکان" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "دوایین سەردانەکان لە" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "ژمارەی سەردان و میوانەکان" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "سەردان" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "میوان" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "دوایین ئاماری گەڕانی وشە" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "#hash#" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "نەخشە" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "پەڕە" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "لە" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "گشتی" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "دوایین ئاماری میوان" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "بەکار‌هێنەرانی سەرهێڵ" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "سەرهێڵ بۆ" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "پەرە بۆ جووڵانەوە شناسنامەی نووسراوە" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "جووڵانەوە پەرە" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "ئاماری هاتنەوە لە مەکەینەی گەڕان" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "دوایین هاتنەکان لە مەکەینەی گەڕان" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "ژمارەی هاتنەکان" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "کۆ" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "لوتکەی وەڵاتەکان" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "پلە" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "ئاڵا" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "وەڵات" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "ژمارەی میوان" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "پەڕەکانی لووتکە" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "لوتکەی ٥ پەرە" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "لوتکەی باشترینی ٥ پەڕە" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "ژمارەی سەردان" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "سەردێڕی پەرە پەیدا نەبوو" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "سەردانەکان" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "بە خێرایی زیاد دەبێت" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "ماڵپەرەکانی هاتن لە" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "سەرچاوە" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "لوتکەی ١٠٠ میوانی ئەمڕۆ" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "دەربارەی زیاد کراوەی ئاماری وۆردپرێس،وەشانی %s" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "ماڵپەڕەکان" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "پلەدانان و پێداچوونەوە" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "زانیاری زۆرتر" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "ائەم بەرهەمە بریتیە لە داتا GeoLite2 ە کە لەلایەن MaxMind،درووستبووە وە لە %s توانایی دەستپێگەیشتنت هەیە." + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "ئەوی " + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "میوانەکانی ئەمڕۆ لە سەر نەخشە" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "ناونیشان" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "بەکارهێنەر(ەکان) سەرهێڵ" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "ئەمڕۆ" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "دوێنێ" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "کۆی ئەمڕۆ" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "کات و رێکەوتی ئەمڕۆ" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "(ڕێکخستن)" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "رێکەوت: %s" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "کات: %s" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "سەردانەکان" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "IP" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "بریکار" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "وەشان" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "دەستپێگەیشتنی بێمۆڵەت" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "%s بریکاری داتا بە سەرکەوتوویی سڕایەوە." + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "داتای وێبگەڕەکە بۆ سڕینەوە پەیدا نەبوو" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "تکایە بڕگەی داخوازی خوارەوە هەڵبژێرە." + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "ازانیارەکانی سەکۆ %s بە سەرکەوتوویی سڕایەوە.." + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "سەکۆی وێبگەڕ بۆ سڕینەوە پەیدا نەبوو." + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "داتای خەشتی %s بە سەرکەوتوویی سڕایەوە" + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "هەڵە! %s بەتاڵ نییە!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "دامەزراندنی بنکە دراوە" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "دامەزراندنی دوبار" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "دامەزراندن ئێستا" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "گەر بە هەر هۆکارێک دامەزراندنی زیادکراوەی ئاماری وۆردپرێس یان خشتەکان بنکە دراوە یان بڕگەکانی دیکەی ناوەڕۆک لەدەست چووە ئەم پرۆسە دامەزراندن دووپات دەکات" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "پێنوێنی بنکەدراوە" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "وەڵآتەکان" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "بەڕۆژکردن ئێستا" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "لە وەشانی کۆنەی زیادکراوەئامار داتای دووبارە لە سوچێکی خشتی میوان دووپات دەکرایەوە.وەشانی نوێ لەم بارەیە لە پێرستێک چاکسازیان بۆ بووە.بۆ درووستکردنی پێرست لە وەشانی کۆنە سەرەتا دەبێت دتاکنا بسڕنەوە.بە کرتە لەسەر بەڕۆژ بوون سەرەتا خشتی میوانان چاودێری ئینجا داتای دووبارودووپات دەسڕنەوەو پێرست زیاد دەکەن." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "ئەم هەڵبژاردە کاتیکی زۆر بۆ بۆ دامەزراندنی ژمارەی رێزەکان لەخشتی میوانەکان بەخۆیەوە ترخان دەکات." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "لە وەشانی کۆنەی زیادکراوەئامار داتای دووبارە لە سوچێکی خشتی میوان دووپات دەکرایەوە.وەشانی نوێ لەم بارەیە لە پێرستێک چاکسازیان بۆ بووە." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "پیرۆز بێت.تائێستا دامەزراوەی ئێوە بەڕۆژە و کێشەی نییە." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "هەناردەکردن" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "هەناردن لە" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "تکایە هەڵبژێرە" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "خشتی داخواز بۆ چونەدەرەڤەی پەڕگە هەڵبژێرە" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "ناردنەدەرەوە بۆ" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "جۆری چونەدەرەڤەی پەڕگە هەڵبژێرە" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "تایبەتبوونی سەردێری رێز" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "بریتیە لە سەردێڕی رێز لە هێڵی یەکەمی پەڕگەی هەنارەکراوە." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "دەستپێکە" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "ژمارەی مێژوویی" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "خاڵ:هەر وا کە بنکەی دراوەتان پاکسازی کرد بۆ نیشاندانی ژمارە بە تەنیایی دەبیت پەڕە نوێ بکەنەوە." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "میوانەکان" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "ژمارەی مێژووی میوانەکان (ژمارەی ئێستا %s یە)." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "ژمارەی مێژووی سەردانەکان (ژمارەی ئێستا %s یە)." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "بەڕۆژکردن" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "دەڵنیای ؟" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "رێکەوت" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "بەتاڵ بوونی خشت" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "گشتی زانیاریەکانی خشت لەدەست دەچێت" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "پاککردنەە" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "پاکسازی ریکۆردی کۆنەتر لە" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "هەڵبژاردنی ڕۆژەکانی پێشتر بۆ سڕینەوەی داتاکانی بەکارهێنەر. کەمترین ژمارە ٣٠ رۆژ.." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "ئێستا پاکسازیبکە" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "سڕینەوەی جۆری سیستەمی کارپێکردنی بەکارهینەر" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "سڕینەوەی سیستەمی کارپێکردنەکان" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "گشتی داتای میوان لەجۆری بریکار لەدەستدەچن" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "ئێستا بیسڕەوە" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "سڕینەوەی سەکۆ" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "تەواوی داتاکانی سەکۆی سەردان لەدەست دەچن." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "سەرچاوەکان" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "بیرگەی بەکارهینان لە PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "بایت" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "سنووری بیرگەی PHP " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "ڕێکخستنی سنووری بیرگە بۆ سکریپتی php.iniلە دابینکراوە." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "ژمارەی رێز لە خشت %s" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "رێز" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "ژمارەی رێزەکان" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "زانیاری وەشان" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "وەشانی زیادکراوەی ئامار" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "وەشانی زیادکراوەی ئاماری ئێستای ئێوە" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "وەشانیPHP " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "وەشانی PHPی ئێوە لە کاتی ئیشکردن" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "شیوازی پاراستنیPHP " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "پاراسنی دۆخی PHP چالاکە.کۆدەکانی GeoIP لەدۆخی ئسایش پشتیوانی نابن" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "وەشانی jQuery " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "وەشانی jQuery ئێوە کە لە ئێستا بەکارتهێناوە" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "وەشانیcURL" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "cURL دانەمزراوە" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "پێوەکراوەی cURL لە PHP ئێوە لەکاتی ڕاکردنە. گەر دانەمەزراوە GeoIP ناچالاک دەبێت" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "دامەزرا" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "دانەمەزرا" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "زانیاری پەڕگە" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "بنکەدراوەی GeoIP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "پەڕگەی بنکەدراوە بوونی نییە" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr "درووستکراوە لە" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "قەبارە پەڕگە ورێکەوتی بنکەیدراوەی GeoIP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "پەرگەی browscap.ini" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "پەڕگەی browscap.ini بوونی نییە" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "قەباری و رێکەوتی پەڕگەی browscap.ini" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "بیرگەی نهێنی browscap " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "بیرگەی نهێنی browscap بوونی نییە" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "قەبارە پەڕگە ورێکەوتی بیرگەی نژێنی browscap ." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "زانیاری بەکارهینەر" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "IP بەکارهێنەر" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "ناونیشانی IP بەکارهینەر" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "بریکاری بەکارهێنەر" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "رێزبەندی بریکاری بەکارهینەر" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "وەبگەڕ" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "وەبگەڕی ناسراوەی بەکارهینەر" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "وەشانی ناسراوەی وێبگەڕی بەکارهینەر" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "سەکۆی ناسراوەی بەکارهینەر" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "تەواوی ناونیشانەکانی لە بنکەدراوە دەگؤڕدڕێنە سەر هەش وە ناگەڕێنەوە ،دەڵنیای ؟" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "رێکخستنی GeoIP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "وەرگرتنی بەرۆژکردنی شوێنی وەڵآتەکان لە بنکەی درواە.لەوانەیە ئەم کردارە کەمێ کات بەخۆیەوە ترخان بکات" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "ناونیشانەکانی IP " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "هەشکردنی ناونیشانی IP " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "تەواوی ناونیشانەکانی IP لە بنکەی دراوە بە هەش دەگۆردرێن و توانایی گەڕانەوەیان نییە.بۆ ئەم کردارە دەڵنیای ؟" + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "ناونیشانەکانی IP لەگەڵ بەهای هەش دەگۆڕدرێت" + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "دامەزراندن تەواوبوو" + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "سەرچاوەکان/زانیاری" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "پاکسازی" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "بنکەدراوە" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "بەڕۆژبونەکان" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "مێژوویی" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "ئاماری وۆردپرێس وشانی %s" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "دیتنی ئێمە" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "بۆ %s نوێی ئێمە بڕۆن تا لە زانیاریەکان و هەواڵەکانی زیادکراوەی ئاماری وۆردپرێس ئاگادار بن." + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "ماڵپەڕ" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "پلەدانان و پێداچوونەوە لە WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "سپاس و پێزانین بۆ دامەزراندنی زیادکراوەی ئاماری وۆردپرێس.ئێوە ئێوە هاندەدەین بۆ ناردنی " + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "پلەدانان و پێداچوونەوە" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "سەردانی ماڵپەڕی وۆردپرێش بکەن .بۆچوونەکانتان جێگای پێزانینە." + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "وەرگێڕانەکان" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "زیادکراوەی ئاماری وۆردپرێش بۆ بوون بە نێودەوڵەتی هانتان ئەدات تاکوو وەرگێڕانی لە سەر بکەن., بۆ دیتنی دۆخی وەرگێڕاوەکان %s سەردانی بکەن و گەر پێت خۆشە یارمەتیمان بدەی %s سەردانی بکە." + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "مالپەڕی هاوکار لە وەرگێڕان" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "پەیوەندی لەگەڵ ئێمە" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "پشتیوانی" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "گەر لە گەڵ زیادکراوەی ئاماری وۆردپرێس کێشەت هەیە !پێمان خۆشە یارمەتیت بدەین.لە خوارەوە دەتوانیت لە تاقمەکانی سوود وەربگریت و پەیوەندیمان پی بکەی : " + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "ئێوە %s ت خوێندوەتەوە ؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "پرسیارەکان" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "ڕێنمایی" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "لە %s بۆ بابەتەکانی هاوتا گڕانتان کردووە ؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "سەکۆی پشتیوانی" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "ئایا بۆ هەر هەڵە لە ئینتەرنێت گەڕاوی ؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "دەڵنیای PHP بە هەڵەکانی دەستپێگەیشتنت هەیە؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "سەرنج بەم چەند خاڵە بدەن :" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "ژمارەی memory_limit لەphp.ini چاو پێکەوتووە ؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "هەوڵت داوە زیادکراوەکانی دیکە ناچالللاک بکەی ؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "هەوڵت داوا ڕکاری بنەڕەتی وۆردپرێس بکاربێنیت ؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "ئایا ڕێکخستنەکانی زیادکراوەت چاودێری کردووە ؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "ئایا پێویستیەکانی دەستپیگەیشتنی PHP دامەزراندووە؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "ئایا پەرەییکی بەتاڵ لە وێبگەڕەکەت بینڕاوە ؟ئایا هەڵەکانت لە کۆدەکان بینیوە ئان پشکنینت بۆ کردووە /" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "ئایا PHP گوزارشی هەڵەکانی سێرڤێری وێبەکەت پشکنین کردووە ؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "هێشتا شآنسو بەختێکت بۆ نییە ؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "تکایە تیکێتێکی نوێ لە %s بنووسن تا لە کەمترین کات وەڵامەت بدەینەوە ." + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "سەکۆی پشتیوانی WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "مەکۆی پشتیوانی %s ئێمە ،ڕێگایێکی ترە بۆ دەستپێگەیشتن بە ئێمە" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "فارسی" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "پەڕەی ئاماری وۆردپرێسی مەنجەڵە هەنگوین" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "ئەم مەنجەڵە هەنگوێنە بۆ بەکارهێنانی ئاماری WPیە،نەبۆ سڕینەوە" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "ئاستی دەستپێگەیشتن" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "ئاستی بەکارهێنەری پێویست بۆ دیتنی ئاماری وۆردپرێس" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "ئاستی بەکارهێنەری پێویست بۆ بەڕێوەبردنی ئاماری وۆردپرێس" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "دیتنی وردەکاری %s لە سەر ئاستی تواناییەکان." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "پەڕەی ڕۆڵەکان و تواناییەکانی وۆردپرێس" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "خاڵ: manage_network =بەڕێوەبەری تۆڕ، manage_options = بەڕیوەبەر، edit_others_posts = سەرنووسەر، publish_posts = نووسەر، edit_posts = هاوبەش، read = گشتی." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "هەر ئەکێک لە بڕگەکان بە شێوازی بنەڕەتی لە وۆردپرێس دابین کراوە. بۆ وێنە بە هەڵبژاردنی publish_posts به نویسنده‌گاه، سەرنووسەرەکان، بەڕێوەبەرو بەرێوەبەری گشتی دەستپێگەیشتن دەدەیت." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "گەر پێویستت بە ڕێگاییک دیکە بۆ پەیوەندی لەگەڵ ڕۆڵی بەکارهینەرانی وۆردپرێس هەیە، نچاو لەم زیادکراوە %s بکەن" + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "جیاکاریەکان" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "تۆمارکردنی جیاکاریەکان" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "چالاک" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "جیاکردنی چینیک لە سەردانی ئامارەکە و هەڵگرتنی ئەان بە نووسینی هۆکارەکەیان لە خشتێکی تر.دەتوانێت ژمارەیێکی زۆر داتا درووستکرێت.بەسوودە دەتوانن ئامارێکی پتوتر لە سەردانەکان بەدەت بێنن." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "دوورخستنەوەی ڕۆڵی بەکارهێنەر" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "دوورخستنەوەکان" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "دوورخستنی ڕۆڵی بەکارهێنەر %s لە ژمارەی ئامار" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "جیاکردنی ڕۆبۆت/ئای پی" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "لیستی ڕۆبۆتەکان" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "پیرستێک لە وەشەکان بۆ هەڵسەنگاندن و ناسینی ڕۆبۆتەکان (لە هەر هێڵ وەشەیێک بنووسن). چوونەژوورەوەکان دەبێت ٤ پیت بن." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "ڕێکخستنەوه بۆ شێوازی بنەڕەتی" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "بەڕۆژکردنی لیستی ڕۆبۆتەکان پێش بەرزکردنەوە" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "پێرستی ڕۆبۆتەکان پاش بەڕۆژ بوونەوە ڕێکدەخرینەە.گەر ئەم برگە هەڵبژیرن پێرست لەدەست دەچێت" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "لێواری سەفەری ڕۆبۆت" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "هەڵسوکەوتکردنی میوانان زۆرتر لەم ژمارە سەردانە لەهەر ڕۆژ بە عینوانی ڕۆبۆت 0 = ناچالاکە." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "جیاکردنی پێرستی ناونیشانیIP" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "زیادکردنی10.0.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "زۆرکردنی172.16.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "زیادکردنی192.168.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "بەکارهینانی مەنجەڵە هەنگوین" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "بەکارهینانی پەڕەیێک لە مەنجەڵە هەنگوین بۆ ناساندنی ڕۆبۆتەکان" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "مەنجەڵە هەنگوین ناردنی ناسنامە" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "ناردنی ناسنامە بۆ بەکارهێنانی پەڕەی مەنجەڵە هەنگوین" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "درووستکردنی پەڕەی نوێی مەنجەڵە هەنگوین" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "جیاکراوەکانی GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "لیستی وەڵاتە جیاکراوەکان" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "لیستێک لە کۆدی وەڵاتەکان (ئەکدانە لە هەر هێڵ، هەر دوو نامە) لە کۆی ئامار بریتیە بەکارهێنان لە "000" (سێ سفر) رد بۆ وەڵاتە نەناسراوەکانە." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "لیستی وەڵاتەکان بریتین لە" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "لیستێک لە کۆدی وەڵاتەکان (لەهەر هێڵ یەکێک، هەر دوو نامە)لە کۆ ئامار بریتییە، گەر ئەم لیستە بەتاڵ نییە، تەنیا میوانەکان لە وەڵاتەکان تۆمار دەبن. بەکارهێنان لە "000" (سێ سفر) بۆ قەبووڵ نەکردنی وەڵاتە نەناسراوەکانە." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "جیاکاری هۆست" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "جیاکاری لیستی هۆستەکان" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "لیستێک لە ناونیشانەکانی خۆماڵی (بۆ وێنە: /wordpress/about، هەر هێڵ) لە کۆی ئامار دووردەخرێت." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "ئاگاداربە:ئەم بڕگە dns پێچەوانە لە هەر نوێکردنی پەڕە بۆ هەر ipێک کە لە سەر شەکرەی هەر سێرڤێرێک لە کاتژمێر بەکاردێت . گەر ئێوە بەرگیری بکەن لە هەر هۆستێکی تایبەتلەوانەیە کە ءیوە پەیدا بکەن پلەی هاوئاهەنگی لە نێوانگۆڕانی هۆست کە بە ناونیشانی ئایپی و بەڕۆژ بوونی ئاکامی سەردانەکان لە بوونی شەکرە لە وێبگەر." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "جیاکاری ئادرەسی ماڵپەڕ" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "جیاکاری پەڕگەی هاتنە ژوور" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "جیاکاری پەڕەی چوونەژوورەوە بۆ ناونووسی لە ژماردنی ئامار" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "جیاکاری پەڕەی بەڕێوەبەر" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "جیاکاری پەڕەی بەڕێوەبەر بۆ ناونووسی لە ژماردنی ئامار" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "جیاکاری فیدی RSS " + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "جیاکاری پەڕەی فیدیRSS بۆ ناونووسی لە ژماردنی ئامار" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "ڕێکخستنەکانی browscap " + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "سودوەرگرتن لە browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "چالاک" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "بنکەی دراوە browscap داگرە بۆ بهەرە وەرگرتن لە رۆبۆت." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "Browscap بەڕۆژکردنی زانیاریەکانی" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "داگرتنی browscapبنکەدراوە" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "پاشکەوتی گۆڕانکاری لەم پەرگە و داگرتنی بەڕۆژکراوەکان" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "ببەرنامەی بەڕۆژ کردنی هەفتانە browscap دسی بی" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "بەڕۆژ بوونی داهاتوو هەیە." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "داگرتنی بنکەدراوەی browscap بۆبارێک لە حەفتە" + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "پاش پاشکەتکردنی ڕێکخستنەکان پەڕگەی ڕینمایی دەسڕێتەوە ،دەڵنیای ؟" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "ئەم تایبەتمەندییە ناونیشانی IP لە بنکەی دراوە پاشکەوت دەکات بەڵآم بە جێگای لە هەشی تایبەت بەهرە وەردەگرێت. String بریکاری بەکارهێنەر کۆی \"Store\" ڕێکخستن ناچالاک دەبێت گەر ئەم بڕگە هەڵبژێردرێت. ئێوە دەتوانن بۆ گەڕانەوەی ناونیشان IP لەداهاتو گە ڕانەوەی زانیاریەکانی شوێن چالاک بکەن.." + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "بەکارهێنەری سەرهێڵ" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "بەکارهێنەری سەرهێڵ" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-cs_CZ.mo b/plugins/wp-statistics/languages/wp_statistics-cs_CZ.mo new file mode 100644 index 0000000..56aa3ac Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-cs_CZ.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-cs_CZ.po b/plugins/wp-statistics/languages/wp_statistics-cs_CZ.po new file mode 100644 index 0000000..4778b3a --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-cs_CZ.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in Czech +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2015-04-22 00:40:36+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: cs_CZ\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "" + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "" + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "" + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "" + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "" + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "" + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "" + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "" + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "" + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "MM/DD/YYYY" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "Zapnout nebo vypnout tuto vlastnost" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "Kontrola online uživatelů každých" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "Sekunda" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "Čas pro kontrolu přesné online uživatele v síti. Nyní: %s druhé" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "Uložení celé identifikační řetězec prohlížeče" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "Jen zapnout pro debugging" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "Koeficient na návštěvníka" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "Pro každou návštěvu k účtu pro několik hitů. V současné době %s." + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "Stránky" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "Sledovat všechny stránky" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "Zakázat hity sloupec v seznamu post/stránky" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "Různé" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "Zobrazit statistiky v menu baru" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "Ne" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "Ano" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "Zobrazit statistiku v admin menu baru" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "SKrýt admin oznámení o neaktivních vlastnostech" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "Ve výchozím nastavení WP Statistics zobrazí výstrahu, pokud některý ze základních funkcí jsou zakázány na každé stránce správce, tato možnost zakáže tato oznámení." + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "Odstranit manuál" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "Ve výchozím nastavení ukládá statistiky WP admin ruční v adresáři plugin (~ 5 meg), je-li tato možnost povolena, bude odstraněn dnes a během upgrade v budoucnu." + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "Zakázání všech vyhledávačů není dovoleno, to povede ve všech vyhledávačích je aktivní." + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "vypnout" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "Zakážete %s ze shromažďování údajů a výkaznictví." + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "Grafy" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "Zahrnout součty" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "Přidání řádku Celkem se grafy s více hodnotami, jako je hledání vyhledávač doporučováním" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "GeoIP nastavení" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "IP umístění služby poskytované GeoLite2 data vytvořená MaxMind, k dispozici od %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "GeoIP kolekce" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "Zapněte tuto vlastnost pro získání více informací a lokace (země) návštěvníka." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "Aktualizovat GeoIP Info" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "Stáhnout GeoIP Databázi" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "Naplánovat měsíční aktualizaci GeoIP DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "Stažení databáze GeoIP bude naplánováno na 2 dny po první úterý v měsíci." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "Tato možnost bude také stáhnout databáze, je-li místní velikost souboru je menší než 1 KB (což obvykle znamená, že se zakázaným inzerováním, který je dodáván s plugin je stále na svém místě)." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "Vyplnit chybějící GeoIP po aktualizaci GeoIP DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "Aktualizovat chybějící GeoIP data po stažení nové databáze." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "Kolekce GeoIP je zakázáno z následujících důvodů:" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "GeoIP kolekce vyžaduje PHP %s nebo vyšš, z důvodu instalované verze PHP je vlastnost vypnuta" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "GeoIP kolekce vyžaduje cURL PHP rozšíření a to není nahrané ve Vaší verzi PHP!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "GeoIP kolekce vyžaduje BC Math PHP rozšíření a to není nahrané ve Vaší verzi PHP!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "PHP nouzový režim zjištěn! GeoIP kolekce není podporován s PHP je nouzový režim povolen!" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "To bude trvale odstranit data z databáze každý den, jste si jisti, že chcete povolit tuto možnost?" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "Dny" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "Počet dnů zachovat statistiky. Minimální hodnota je 30 dní. Neplatné hodnoty zakáže každodenní údržbu." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "E-mail adresy" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "Statistický reporting" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "Plán" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "Zaslat reporty via" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "Email" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "Poznámka: Poslat SMS textové zprávy prosím nainstalovat zásuvný modul %s." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "WordPress SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "Tělo reportu" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "Online uživatelé" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "Dnešní návštěvník" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "Dnešní návštěva" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "Včerejší návštěvník" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "Včerejší návštěva" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "Celkem návštěvníků" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "Celkem návštěv" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "Žádný" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "O" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "" + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "Google" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "Vypnout mapu" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "Vypnout zobrazení mapy" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "Obecné" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "Údržba" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "Aktualizovat" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "Jednou týdně" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "Jednou za 2 týdny" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "Jednou za 4 týdny" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "Statistiky" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "Zobrazit statistiky stránek v postranním panelu." + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "Celkový počet zobrazení stránky" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "Celkem příspěvků" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "Celkem stránek" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "Celkem komentářů" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "Celkem Spamů" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "Celkem uživatelů" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "Průměr příspěvků" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "Průměr komentářů" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "Průměr uživatelů" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "Datum posledního příspěvku" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "Jméno" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "Položky" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "Včera návštěv" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "Vyberte typ vyhledávače" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "" + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "WP Statistiky" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "Kompletní statistiky pro váš web WordPress." + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "Nastavení" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "Chcete-li navštívit plugin WordPress.org" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "Navštivte stránku WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "Klikněte zde pro hodnocení a recenzování tento plugin na WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "Ohodnoť tento plugin" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "WP Statistics - Hits" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "Přehled" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "Vyhledávání" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "Hledaná slova" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "Optimalizace" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "Manuál" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "Dnešní návštěvník" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "Dnešní návštěva" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "Včera návštěvníků" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "Zobrazit statistiky" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "Stáhnout soubor ODF" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "Stáhnout HTML soubor" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "Ruční soubor nebyl nalezen." + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "Nemáte dostatečná práva pro přístup na tuto stránku." + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "Chyba při stahování GeoIP databáze od: %s - %s" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "Chyba nelze otevřít stažené GeoIP databázi pro čtení: %s" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "Chyba nelze otevřít cílovou databázi GeoIP pro psaní %s" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "GeoIP Databáze byla úspěšně aktualizována!" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "Chyba při stahování browscap databáze od: %s - %s" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "Browscap databáze úspěšně aktualizován!" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "Browscap již v aktuální verzi!" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "Top 10 Prohlížečů" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "Pořadí" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "Statistika hitů" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "Top 10 stránek" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "Aktuální návštěvníci" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "Nejlepší odkazující stránky" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "Vyhledávací Engine odkazy" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "Souhrn" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "Poslední vyhledávaný slova" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "" + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "Nemožné nahrát GeoIP databázi, zajistěte stažení v nastavení." + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "Aktualizovat %s GeoIP záznamy v databázi návětěvníků." + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "%s data starší než %s dnφ úspěšně vyprázdněna." + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "Žádné záznamy nalezeny očistit od %s!" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "Prosím vyber hodnotu nad 30 dní." + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "Statistiky prohlížečů" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "Klik na vypínač" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "Prohlížeče" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "Prohlížeče podle typu" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "Platforma" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "Platforma prohlížečů" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "%s Verze" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "Pozor: Vyloučení nejsou nastaveny v současnosti zaznamenávají, výsledky níže nemusí odrážet aktuální statistiky!" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "Vyloučení statistiky" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "10 Dnů" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "20 Dnů" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "30 Dnů" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "2 Měsíce" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "3 Měsíce" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "6 Měsíců" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "9 Měsíců" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "1 Rok" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "Statistický graf vyjímek" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "Vyloučené hity v posledních" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "dnů" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "Počet vyjmutých hitů" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "Graf statistiky přístupů" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "Hity v posledních" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "Počet návštěv a návštěvníků" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "Návštěva" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "Návštěvník" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "Stastiky posledně vyhledávaných slov" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "#hash #" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "Mapa" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "Stránka" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "Od" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "Všechno" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "Nedávné statistiky návštěvnosti" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "Stránky Trend pro ID příspěvku" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "Stránky Trend" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "Vyhledávací Engine referenční Statistika" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "Vyhledávací stroj doporučení v posledních" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "Počet odkazů" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "Celkem" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "Top zemí" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "Vlajka" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "Počet návštěvníků" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "Země" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "Počet návštěvníků" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "Nejlepší stránky" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "Top 5 stránek trendy" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "Top 5 stránek trendy statistiky" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "Počet přístupů" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "Žádný titulek stránky nalézt" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "Návštěvy" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "Brzy bude přidáno" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "Odkazující stránky od" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "Odkazy" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "O WP Statistics Verze %s" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "Web stránky" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "Hodnotit a recenzovat" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "Více informací" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "Tento produkt obsahuje GeoLite2 data vytvořená MaxMind, k dispozici od %s." + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "Jiný" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "Dnešní mapa návštšvníků" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "Adresa" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "Online uživatelé" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "Dnes" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "Včera" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "Denně celkem" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "Aktuální čas a datum" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "(Nastavení)" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "Datum: %s" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "Čas: %s" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "Hity" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "Přístup zakázán!" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "%s agenta data úspěšně smazána." + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "Prosím vyber požadované položky." + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "údaje platforma %s úspěšně smazána." + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "data tabulky %s úspěšně smazána." + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "Chyba, %s není vyprázdněno!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "Nastavení databáze" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "Spusťte znovu instalaci" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "Nainstalujte nyní!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "Pokud z nějakého důvodu instalace WP Statistics chybí, databázové tabulky nebo jiné položky jádro, to bude znovu provést instalačního procesu." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "Databáze Index" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "Země" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "!Aktualizovat nyní" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "Starší instalace WP Statistics umožňují Duplicitní položky v tabulce návštěvníků v případě rohové. Novější instalace se proti tomu bránit s jedinečný index v tabulce. Chcete-li vytvořit index na starší instaluje duplicitní položky musí být odstraněny jako první. Klepnutím na \"Update Now\" prohledá tabulku vistitors, odstranit duplicitní položky a přidat indexu." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "Tato operace může trvat dlouhou dobu na nainstaluje s mnoha řádků v tabulce návštěvníků." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "Starší instalace WP Statistics umožňují Duplicitní položky v tabulce návštěvníků v případě rohové. Novější instalace se proti tomu bránit s jedinečný index v tabulce." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "Gratulujeme vaše instalace je již datum, nic společného." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "Export" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "Export od" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "Prosím vyber" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "Vyberte tabulku pro výstupní soubor." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "Exportovat do" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "Vyber typ výstupní souboru." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "Zahrnout řádek záhlaví" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "Zahrnout řádek záhlaví jako první řádek v exportovaném souboru." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "Start Nyní!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "Návštěvníci" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "Jste si jistý?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "Data" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "Prázdná tabulka" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "Všechna data budou ztracena!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "Vyčistit nyní!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "Pročistit záznamy starší než" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "Odstraněný uživatel statistická data starší než zvolený počet dní. Minimální hodnota je 30 dní." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "Pročistit nyní!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "Odstranit typy uživatelských agentů" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "Smazat Agenty" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "Všechna data návštěvníků budou ztraceny pro tento typ agenta." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "Smazat nyní!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "Vymazat platformy" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "Všechna data návštěvníků budou ztraceny pro tento typ platformy." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "Zdroje" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "Využití paměti v PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "Bytů" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "PHP Paměť Limit" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "Limit paměti skriptu je dovoleno konzumovat, v php.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "Počet řádků v tabulce %s" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "Řádek" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "Počet řádků" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "Verze info" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "WP Statistics Verze" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "Používáte verzi WP Statistics." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "PHP Verze" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "PHP verze kterou používáte." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "PHP Bezpečný mód" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "Je PHP nouzovém režimu aktivní. GeoIP kód není podporován v nouzovém režimu." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "jQuery Verze" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr " Query verze kterou používáte." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "cURL Verze" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "cURL není instalováno" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "PHP cURL Extension verze kterou používáte. cURL je požadováno pro GeoIP kód, jestliže neni instalování GeoIP bude vypnuté." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "Instalováno" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "Neinstalováno" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "Informace o souboru" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "GeoIP databáze" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "Databáze neexistuje" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr ", na " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "Velikost souboru a datum GeoIP databáze." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "Soubor Browscap.ini" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "Soubor Browscap.ini neexistuje." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "Velikost souboru a datum souboru browscap.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "Browscap soubor mezipaměti" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "Browscap cache soubor neexistuje." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "Velikost souboru a datum tohoto souboru browscap." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "Klient Info" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "Klient IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "Klientovo IP adresa" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "Uživatelský agent" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "Řetězec agenta uživatele klienta." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "To nahradí všechny IP adresy v databázi hodnoty hash a nemůže být zpět, jste si jisti?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "GeoIP Vlastnosti" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "Aktualizuje všechny neznámé lokalizační údaje v databázi, to může chvíli trvat" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "Adresy IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "Algoritmus hash IP adresy" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "Nahradit hodnoty hash, adresy IP v databázi nebude možné obnovit adresy IP v budoucnu k vyplnění informací o umístění později a to může chvíli trvat" + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "IP adresy nahrazeny hodnoty hash." + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "Instalujte kompletní rutina." + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "Zdroje/Informace" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "Pročištění" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "Databáze" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "Aktualizace" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "WP Statistiky V%s" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "Navštivte nás Online" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "Přijďte navštívit naše skvělé nové %s a aktualizuje na nejnovější zprávy o WP Statistics." + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "webové stránky" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "Ohodnoť a prohlédni WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "Děkujeme za instalaci WP Stastiky, doporučujeme ti zaslat" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "Hodnocení a recenze" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "více než na WordPress.org. Vaše zpětná vazba je velmi ceněn!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "Překlady" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "WP Statistics podporuje internacionalizaci a doporučujeme našim uživatelům odeslat překlady, navštivte prosím naši %s Chcete-li zobrazit aktuální stav a %s, pokud byste chtěli pomoci." + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "Web pro spolupráci Překlad" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "Podejte nám zprávu" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "Podpora" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "Omlouváme se, máte problémy s WP Statistics a my jsme rádi pomohli. Zde je pár věci na práci než se obrátíte na nás:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "Četli jste %s?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "Nejčastější dotazy" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "manuál" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "Už jste Hledat %s pro podobný problém?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "fórum podpory" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "Už jste Hledat na internetu pro všechny chybové zprávy, které obdržíte?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "A pár věcí na dvakrát:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "Jak máš nastaven memory_limit v php.ini?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "Už jste vyzkoušeli, zakázání jiné pluginy, které jste nainstalovali?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "Už jste vyzkoušeli pomocí výchozí WordPress téma?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "Zkontrolovali jste dvojí nastavení pluginu?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "Máte instalované všechny vyžadované PHP rozšíření?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "Dostáváš prázdné nebo neúplné stránky zobrazené v prohlížeči? Jste zobrazit zdroj jazyk pro stránku a zkontrolujte případné závažné chyby?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "Zkontrolovali jste protokolů chyb serveru PHP a web?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "Ještě nemají žádné štěstí?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "Pak prosím otevřít nové vlákno na %s a odpovíme co nejdříve." + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "Fórum podpory WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "Další možností %s podpora je k dispozici také." + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "Farsi" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "Úrovně přístupů" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "Požadována uživatelská úrověn k prohlížení WP Statistik" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "Uživatelská úroveň pro správu statistiky WP" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "Viz %s další informace o úrovních schopností." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "Stránky WordPress rolí a funkcí" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "Tip: manage_network = Super Admin síť, manage_options = správce, edit_others_posts = Editor, publish_posts = autor, edit_posts = přispěvatel, číst = všichni." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "Každý z výše uvedených casscades práva směrem nahoru v WordPress výchozí konfiguraci. Tak například výběrem publish_posts uděluje právo autorů, redaktoři, administrátoři a Super Admins." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "Pokud budete potřebovat robustnější řešení pro přístup delegáta budete chtít podívat na %s do WordPress plugin adresáři." + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "Vyjímky" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "Vyloučení záznamů" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "Zapnout" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "To bude zaznamenávat všechny vyloučené hity v samostatné tabulce s důvody, proč byla vyloučena, ale žádné další informace. To bude generovat velké množství dat, ale je užitečné, pokud chcete zobrazit celkový počet přístupů vašich stránek dostane, ne jen skutečné uživatele návštěvy." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "Vyloučení rolí uživatelů" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "Vyjímka" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "Vylučte úlohu %s ze sběru údajů." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "IP/Robot vyjímky" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "Seznam robotů" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "Seznam slov, (jeden na řádek) porovnávat odhalit roboty. Položky musí být dlouhé nejméně 4 znaky, nebo budou ignorovány." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "Reset do Defaultního nastavení" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "Vynutit robota seznamu aktualizaci po inovaci" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "Platnost seznamu robota tak, aby obnovit na výchozí po aktualizaci statistiky WP se koná. Poznámka: je-li tato možnost povolena, žádné vlastní roboty, které jste přidali do seznamu budou ztraceny." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "Vyloučené seznam adres IP" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "Přidat 10.0.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "Přidat 172.16.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "Přidat 192.168.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "URL vyjímky" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "Vyloučené přihlašovací stránka" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "Vylučte přihlašovací stránku pro registraci jako hit." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "Vyloučené admin stránky" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "Vylučte admin stránky pro registraci jako hit." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "Browscap nastavení" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "Browscap využití" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "Aktivní" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "Browscap databáze bude stáhnout a slouží k detekci roboty." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "Aktualizovat browscap Info" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "Stáhnout browscap databáze" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "Uložte změny na této stránce můžete stáhnout aktualizaci." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "Rozvrh týdenní aktualizace browscap DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "Další update bude" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "Ke stažení browscap databáze bude naplánován pro jednou za týden." + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "To odstraní ruční, když uložíte nastavení, jste si jisti?" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "Tato funkce nebude ukládat IP adresy do databáze, ale místo toho používá jedinečný algoritmus hash. \"Store celé uživatelské agent string\" nastavení bude zakázáno, pokud je vybrána tato možnost. Nebude schopen obnovit adresy IP v budoucnosti obnovit informace o poloze, pokud je to povoleno." + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "Uživatelé online" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "Uživatel online" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-da_DK.mo b/plugins/wp-statistics/languages/wp_statistics-da_DK.mo new file mode 100644 index 0000000..16a34a6 Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-da_DK.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-da_DK.po b/plugins/wp-statistics/languages/wp_statistics-da_DK.po new file mode 100644 index 0000000..811ae3b --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-da_DK.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in Danish +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: +0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: da_DK\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "" + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "" + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "" + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "" + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "" + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "" + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "" + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "" + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "" + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "" + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "" + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "" + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "" + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "" + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "" + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "" + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "" + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "" + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "" + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "" + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "" + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "" + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "" + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "" + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "" + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-de_DE.mo b/plugins/wp-statistics/languages/wp_statistics-de_DE.mo new file mode 100644 index 0000000..0db8920 Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-de_DE.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-de_DE.po b/plugins/wp-statistics/languages/wp_statistics-de_DE.po new file mode 100644 index 0000000..006f383 --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-de_DE.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in German +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-10-21 23:20:14+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: de\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "Letzte 365 Tage" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "Letzte 30 Tage" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "Letzte 7 Tage" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "PHP IPv6 aktiviert" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "Ist PHP mit IPv6-Unterstützung kompiliert. Sie können Warnmeldungen in Ihrem PHP-Protokoll sehen, ob es nicht ist und Sie erhalten HTTP-Header mit IPv6 in ihnen anspricht." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "Eine Liste von IP-Adressen und Subnet-Masken (eine pro Zeile), die von der Statistik ausgeschlossen werden sollen." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "Für IPv4-Adressen werden sowohl die Formate 192.168.0.0/24 und 192.168.0.0/255.255.255.0 akzeptiert. Um nur eine einzelne IP-Adresse anzugeben, verwende eine Subnet-Maske von /32 oder /255.255.255.255." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "Benutze das fc00::/7-Format für IPv6-Adressen." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "In FC00::/7" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "Aufrufe heute" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "Besucher heute" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "Aufrufe gestern" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "Besucher gestern" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "Besuche in den letzten 7 Tagen" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "Besuche in den letzten 30 Tagen" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "Besuche in den letzten 365 Tagen" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "Aufrufe gesamt" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "Besucher gesamt" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "Aufrufe gestern" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "Kein passendes Widget gefunden!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "Zlib gzopen()" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "" + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "Fehler! DOWNLOAD_URL() oder die gzopen()-Funktion gibt es nicht!" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "Fehler beim Setzen von Berechtigungen für das GeoIP-Datenbank-Verzeichnis. Stellen Sie sicher, dass Ihr Webserver die Berechtigung zum Schreiben auf Verzeichnisse in %s hat." + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "- Sie haben eine nicht unterstützte Version von PHP im Einsatz." + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "WP Statistics deaktiviert" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "WP Statistics hat PHP Version %s erkannt, welche nicht unterstützt wird. WP Statistics benötigt PHP Version %s oder höher!" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "Bitte kontaktieren Sie Ihren Hosting-Anbieter, um auf eine unterstützte Version zu aktualisieren oder dekativieren Sie WP Statistics, um diese Meldung zu entfernen." + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "Fehler! Widget nicht gefunden!" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "Laden..." + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "Neu laden..." + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "Top Besucher" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "Einstellungen" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "Aktiviert" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "Alte Daten täglich löschen" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "Ein WordPress Cron-Job wird täglich ausgeführt, um Daten zu löschen die älter sind als die nachfolgend angegebene Anzahl an Tagen." + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "Lösche Daten älter als" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "Hohe Aufrufe täglich löschen" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "Ein WordPress Cron-Job wird täglich ausgeführt, um Daten von Besuchern zu löschen die mehr Aufrufe pro Tag aufweisen als nachfolgend angegeben (eventuelle Robots)." + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "Anzahl der Aufrufe (pro Tag), um als vermeintlicher Robot eingestuft zu werden. Minimum-Wert ist 10 Aufrufe. Ungültige Werte deaktivieren die automatisierte tägliche Wartung." + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "Statistiken dieser Beitrags- / Seiten-ID anzeigen" + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "Beitrags- / Seiten-ID" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "Ask.com" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "Statistik für diesen Zeitraum anzeigen; strtotime() (http://php.net/manual/en/datetime.formats.php) wird verwendet, um sie zu berechnen. Verwenden Sie "total", um alle aufgezeichneten Daten zu bekommen." + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "Besucher-Tracking" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "GeoIP-Aufzeichnung" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "Index der Aufrufe-Tabelle" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "Eine Datenbank-Aktualisierung ist notwendig, bitte geh zu %s und führe folgende Aktionen durch: %s" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "Index der Länder-Tabelle" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "Tabelle für Suchanfragen" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "Einstellungen" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "," + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "Die folgenden Funktionen sind deaktiviert, bitte gehen zur %s und aktiviere sie: %s" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "Aufrufe-Tracking" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "Online-User-Tracking" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "Die folgenden Plugin-Tabellen existieren nicht in der Datenbank. Bitte führe die %s-Installationsroutine erneut durch %s: " + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "Konvertierung der Tabelle für Suchanfragen durchgeführt - %d Zeilen hinzugefügt." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "Bei älteren Versionen von WP Statistics werden detaillierte Informationen zu Suchanfragen in der Besucher-Tabelle gespeichert. Das kann bei großen Datensätzen zu Leistungseinbußen führen. Daher wurde eine neue Tabelle implementiert, die diese Informationen in einem besser skalierbaren Format enthält." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "Tabelle für Suchanfragen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "Konvertieren" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "Jetzt konvertieren" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "Bei älteren Versionen von WP Statistics werden detaillierte Informationen zu Suchanfragen in der Besucher-Tabelle gespeichert. Das kann bei großen Datensätzen zu Leistungseinbußen führen. Daher wurde eine neue Tabelle implementiert, die diese Informationen in einem besser skalierbaren Format enthält. Die alten Daten müssen dafür jedoch konvertiert werden, bevor sie verwendet werden können." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "Referrer Spam" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "Die Aktualisierung der \"Piwik Referrer Spam\"-Blacklist wird ein Mal wöchentlich durchgeführt." + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "Externe Quellen" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "\"Piwik Referrer Spam\" Blacklist-Einstellungen" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "Automat. Aktualisierung der \"Piwik Referrer Spam\" Blacklist" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "\"Piwik Referrer Spam\" Blacklist herunterladen" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "\"Piwik Referrer Spam\" Blacklist aktualisieren" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "Die \"Piwik Referrer Spam\" Blacklist wird heruntergeladen und zur Erkennung von Referrer Spam verwendet." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "Diese Spam-Blacklist wird von Piwik auf %s zur Verfügung gestellt." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "\"Piwik Referrer Spam\" Blacklist verwenden" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "Falsche/fehlerhafte Browserkennung berücksichtigen" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "404-Fehlerseiten" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "Wähle den gewünschten Tag" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "Behandle Besucher mit einer falschen oder fehlerhaften Browserkennung (fehlende IP-Adresse oder leere User-Agent-Kennung) als Robot." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "404-Fehlerseiten" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "Alle Seiten, die einen Fehler-404 erzeugen, von der Statistik ausschließen." + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "Fehler beim Erstellen des GeoIP Datenbank-Verzeichnisses. Stelle sicher, dass dein Webserver die Berechtigung zum Erstellen von Verzeichnissen in %s hat." + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "Seiten-Titel bei leeren Suchanfragen hinzufügen" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "Wenn eine Suchmaschine als Referrer identifiziert wird, diese jedoch die vorangegangene Suchanfrage nicht sendet, wird diese Option bei Aktivierung den Seiten-Titel mit einem vorangestellten \"~:\" als Suchanfrage ausweisen. Das kann dabei helfen herauszufinden, wonach der Besucher gesucht haben könnte." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "Lösche Besucher mit mehr als" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "Zugriffen pro Tag" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "Daten von Besuchern mit mehr als den hier definierten Zugriffen an einem Tag werden gelöscht. Das kann hilfreich sein, wenn du z.B. Daten nach einer Robot-Attacke löschen willst. Diese Option löscht die entsprechenden Besucher und die mit ihnen verbunden Zugriffe auf deine Website, aktualisiert jedoch nicht die individuellen Seitenaufrufe da diese Daten nicht pro Besucher aufgezeichnet werden. Minimum-Wert ist 10 Zugriffe pro Tag." + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "Keine Besucher zum Löschen gefunden." + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "%s Einträge erfolgreich gelöscht." + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "Zugriffe muss größer als oder gleich 10 sein!" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "Seitenbesuche" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "Seitenanzahl" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "Kommentaranzahl" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "Spam-Anzahl" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "Benutzeranzahl" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "Suchanbieter" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "Statistiken von folgendem Suchanbieter anzeigen." + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "Zahlenformat" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "Das Format, um Zahlen anzuzeigen: i18n, english, none" + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "Englisch" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "International" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "Website-Aufrufe - Zusammenfassung" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "Gesamt im gewählten Diagramm-Zeitraum" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "Gesamt seit Statistik-Beginn" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "Hast du schon über eine Spende für WP Statistics nachgedacht?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "Spenden" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "Möchtest du uns zeigen, wieviel Spaß du mit WP Statistics hast? Besuche unsere %s-Seite und unterstütze uns!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "Spenden" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "Jetzt spenden!" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "Schließen" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "Wähle, welche Statistik angezeigt werden soll." + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "Statistik" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "Beitragszahl" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "Zeitraum" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "bis" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "Los" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "Rang #5" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "Rang #4" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "Rang #3" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "Rang #1" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "Rang #2" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "Aufrufe" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "Bei älteren Versionen von WP Statistics können in seltenen Fällen duplizierte Einträge in der Aufrufe-Tabelle entstehen. Neuere Installationen verhindern das mit einem eindeutigen Index für diese Tabelle. Um diesen eindeutigen Index zu erstellen, müssen zuerst die Duplikate entfernt werden - klicke dazu auf \"Jetzt aktualisieren\"." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "Die Durchführung kann bei Installationen mit vielen Zeilen in der Aufrufe-Tabelle länger dauern." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "Bei älteren Versionen von WP Statistics können in seltenen Fällen duplizierte Einträge in der Aufrufe-Tabelle entstehen. Neuere Installationen verhindern das mit einem eindeutigen Index für diese Tabelle." + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "Filtern nach" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "Zeitraum von" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "MM/DD/YYYY" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "Verwende keine Übersetzungen innerhalb des Plugins sondern stattdessen die Englischen Standard-Texte (benötigt zwei Mal ein Neuladen der Seite)." + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "Englisch erzwingen" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "Sprachen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "Hinweis: Diese Option berücksichtigt KEINE Parameter nach einem \"?\" in URLs. Einträge mit weniger als zwei zeichen werden ignoriert." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "Eine Liste an lokalen URLs (z.B. \"/wordpress/about\", eine pro Zeile), die aus der Statistik ausgeschlossen werden sollen." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "Ausgeschlossene URLs" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "Ausgeschlossene URL" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "In den letzten 365 Tagen" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "In den letzten 30 Tagen" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "In den letzten 7 Tagen" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "Yahoo!" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "Yandex" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "clearch.org" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "DuckDuckGo" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "Bing" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "Baidu" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "Feeds" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "Benutzer-Rolle" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "Login-Seite" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "Admin-Seite" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "Self-Referral" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "IP-Adresse" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "Robot" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "Zurzeit sind keine (anderen) Benutzer online auf deiner Website." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "Robot-Erkennschwelle" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "Honey Pot" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "Verlauf der Aufrufe" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "Hostname" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "Feature aktivieren oder deaktivieren" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "Auf neue Besucher überprüfen alle" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "Sekunden" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "Zeit, um auf neue Besucher zu überprüfen. Aktuell: %s Sekunden." + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "Alle Besucher aufzeichnen" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "Ignoriert etwaige gesetzte Ausnahmen und zeichnet alle Besucheraktivitäten auf (inkl. Self-Referrals und Robots). Diese Option sollte nur zur Problembehebung aktiviert werden!" + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "Gesamten User Agent-String speichern" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "Sollte nur bei Problemen bei der Bestimmung der User Agent-Strings aktiviert werden." + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "Koeffizient pro Besucher" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "Koeffizient - ein Besucher zählt \"X\" Aufrufe. Aktuell: %s." + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "Seitenaufrufe" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "Alle Seiten (Kategorien, Archive, etc.) berücksichtigen" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "Parameter aus URLs entfernen" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "Diese Option entfernt alle Parameter nach einem \"?\" in URLs." + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "\"Aufrufe\"-Spalte in Beiträgen/Seiten-Listen im Admin-Bereich deaktivieren" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "Sonstige Einstellungen" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "Statistiken in der Menüleiste anzeigen" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "Nein" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "Ja" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "Zeige Statistiken in der Admin-Menüleiste" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "Benachrichtigungen im Admin-Bereich verstecken" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "WP Statistics zeigt standardmäßig eine Benachrichtigung auf allen Admin-Seiten an, wenn eines der Basis-Features deaktiviert ist. Diese Option schaltet diese Benachrichtigungen aus." + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "Benutzerdokumentation löschen" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "WP Statistics speichert standardmäßig die Benutzerdokumentation im Plugin-Verzeichnis (ca. 5 MB). Diese Option löscht diese Dateien." + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "Suchmaschinen" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "Es ist nicht erlaubt, alle Suchmaschinen zu deaktivieren. Wenn hier alle Suchmaschinen deaktiviert werden, ignoriert WP Statistics diese Einstellung." + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "Deaktivieren" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "Daten von %s aus der Statistik ausschließen." + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "Diagramme" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "Gesamt-Zähler zeigen" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "Zeige eine Linie mit dem Gesamt-Zähler in Diagrammen mit mehreren Verläufen." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "GeoIP-Einstellungen" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "IP-Standorbestimmung mittels GeoLite2, zur Verfügung gestellt von MaxMind - %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "GeoIP verwenden" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "Wenn aktiviert, ermittelt WP Statistics Standort-Informationen (zumindest das Land) aus der IP-Adresse der Besucher." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "GeoIP aktualisieren" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "GeoIP-Datenbank herunterladen" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "Automat. Aktualisierung von GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "Die Aktualisierung der GeoIP-Datenbank wird monatlich zwei Tage nach dem ersten Dienstag durchgeführt." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "Diese Option lädt die GeoIP-Datenbank auch dann herunter, wenn die Dateigröße der lokalen Datenbank kleiner als 1 kB ist (was in den meisten Fällen bedeutet, dass die Datei bisher noch nicht heruntergeladen wurde)." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "Fehlende GeoIP-Daten nach Aktualisierung einpflegen" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "Aktualisiert alle fehlenden GeoIP-Daten nachdem eine neue GeoIP-Datenbank herunter geladen wurde." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "Länderkennung für private IP-Adressen" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "Die internationale Standard-Länderkennung (zwei Buchstaben, z.B. US = United States, CA = Canada, etc.) für private, nicht-routbare IP-Adressen wie 10.0.0.1, 192.158.1.1, 127.0.0.1 usw. Verwende \"000\" (drei Nullen), um private IP-Adressen als \"unbekannt\" zu definieren." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "Die GeoIP-Funktion ist aus den folgenden Gründen deaktiviert:" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "GeoIP benötigt die PHP-Version %s oder höher, die installierte PHP-Version ist " + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "GeoIP benötigt die cURL PHP-Erweiterung, die mit deiner PHP Version nicht geladen wird!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "GeoIP benötigt die BC Math PHP-Erweiterung, die mit deiner PHP Version nicht geladen wird!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "PHP Safe Mode wurde erkannt! GeoIP funktioniert mit aktiviertem PHP Safe Mode nicht!" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "Diese Einstellung löscht täglich Daten aus der Datenbank. Bist du sicher, dass du diese Option aktivieren willst?" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "Tage" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "Anzahl der Tage, für die die Statistik-Daten gespeichert werden sollen. Minimum-Wert ist 30 Tage, ungültige Werte deaktivieren die automatisierte tägliche Wartung." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "Allgemeine Einstellungen" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "E-Mail-Adressen" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "Komma-getrennte Liste an E-Mail-Adressen, an die Benachrichtigungen versendet werden sollen." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "Update-Benachrichtigungen" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "browscap.ini" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "Bei Update der \"browscap.ini\"-Datei benachrichtigen" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "Bei Update der GeoIP-Datenbank benachrichtigen" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "DB-Bereinigung" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "Bei Datenbank-Bereinigung benachrichtigen" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "Plugin-Update" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "Bei Update des Plugins benachrichtigen" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "Statistik-Reports" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "Zeitplan" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "Wähle, wie oft ein Statistik-Report versendet werden soll." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "Reports senden via" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "E-Mail" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "Wähle die Art der Statistik-Reports." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "Hinweis: Um Statistik-Reports per SMS versenden zu können, muss das Plugin %s installiert werden." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "WordPress SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "Report-Text" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "Gib den gewünschten Inhalt der Statistik-Reports hier ein." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "Alle Shortcodes deiner WordPress-Installation und die eigenen Shortcodes von WP Statistics (siehe Benutzerdokumentation) können im Nachrichtentext verwendet werden. Hier sind ein paar Beispiele:" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "Besucher aktuell" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "Besucher heute" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "Aufrufe heute" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "Besucher gestern" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "Aufrufe gestern" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "Besucher gesamt" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "Aufrufe gesamt" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "Keine" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "Über das Plugin" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "Admin-Übersicht" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "Diese Einstellungen sind global für alle Benutzer gültig." + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "Admin-Widgets deaktivieren" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "Feature aktivieren oder deaktivieren" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "Seiten-/Beitrags-Editor" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "Editor-Widget deaktivieren" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "Feature aktivieren oder deaktivieren" + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "Google" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "Karte deaktivieren" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "Anzeige der Weltkarte auf der Statistik-Übersicht deaktiveren." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "WP Statistics - Daten entfernen" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "Das normale Deaktivieren und Löschen von WP Statistics führt keine Änderungen an deiner Datenbank und den Plugin-Einstellungen durch. Wenn du alle Daten des Plugins also tatsächlich löschen willst, kannst du das mit dieser Funktion tun." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "Die Daten werden aus der Datenbank gelöscht, sobald dieses Formular abgeschickt wird. WP Statistics wird danach noch so lange in deinem Admin-Menü angezeigt, bis du eine andere Admin-Seite aufrufst." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "Daten und Einstellungen entfernen" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "Entfernen" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "Alle Daten und Plugin-Einstellungen werden aus der Datenbank gelöscht. ACHTUNG: Diese Aktion kann nicht rückgängig gemacht werden!" + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "Allgemeines" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "Benachrichtigungen" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "Admin- & Statistik-Übersicht" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "Datenbank-Wartung" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "Deinstallation" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "Einstellungen speichern" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "Ein Mal wöchentlich" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "Alle zwei Wochen" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "Alle vier Wochen" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "Statistik" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "Website-Statistiken in der Sidebar anzeigen." + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "Gesamt Seitenaufrufe" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "Von Suchmaschinen-Verweis" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "Gesamt Beiträge" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "Gesamt Seiten" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "Gesamt Kommentare" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "Gesamt Spam" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "Gesamt Benutzer" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "Durchschnittliche Artikel" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "Durchschnittliche Kommentare" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "Durchschnittliche Benutzer" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "Letztes Beitrags-Datum" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "Name" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "Elemente" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "Aufrufe gestern" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "Wähle die Suchmaschine" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "WP Statistics wurde entfernt, du kannst das Plugin jetzt deaktivieren und löschen." + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "WP Statistics" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "Umfangreiche Statistik für WordPress." + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "Einstellungen" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "Klicke hier, um die Plugin-Seite auf WordPress.org zu besuchen" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "Besuch die Plugin-Seite auf WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "Klicke hier, um das Plugin auf WordPress.org zu bewerten und zu rezensieren" + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "Bewerte das Plugin" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "WP Statistics - Aufrufe bisher" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "Übersicht" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "Zurzeit online" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "Verw. Websites" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "Suchmaschinen" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "Suchbegriffe" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "Top 100 Besucher" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "Optimierung" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "Benutzerhandbuch" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "Website" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "Optionen" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "Besucher heute" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "Aufrufe heute" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "Besucher gestern" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "Statistiken" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "ODF-Datei herunterladen" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "HTML-Datei herunterladen" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "Benutzerdokumentation nicht gefunden." + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "Du hast keine Zugriffsrechte, um diese Seite zu sehen." + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "WP Statistics %s installiert am" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "Fehler beim Herunterladen der GeoIP-Datenbank von: %s - %s" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "Fehler beim Öffnen der heruntergeladenen GeoIP-Datenbank von: %s" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "Fehler beim Schreiben in die GeoIP-Datenbank: %s" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "GeoIP-Datenbank erfolgreich aktualisiert!" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "Update von GeoIP am" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "Fehler beim Herunterladen der browscap.ini-Datenbank von: %s - %s" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "browscap.ini-Datenbank erfolgreich aktualisiert!" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "Fehler bei der Aktualisierung der browscap.ini-Datenbank. Cache-Datei zu groß, stelle die alte browscap.ini wieder her." + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "Fehler bei der Aktualisierung der browscap.ini-Datenbank. Die neue browscap.ini identifiziert User Agents als Crawlers, stelle die alte browscap.ini wieder her." + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "Die browscap.ini ist aktuell!" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "Update der browscap.ini am" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "Kurzstatistik" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "Top 10 Browser" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "Top 10 Länder" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "Karte Besucher heute" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "Website-Aufrufe" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "Top 10 Seiten" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "Letzte Besucher" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "Top verweisende Websites" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "Suchmaschinen-Verweise" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "Zusammenfassung" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "Suchbegriffe" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "Top 10 Besucher heute" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "Dieser Beitrag ist noch nicht veröffentlicht." + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "GeoIP-Datenbank konnte nicht geladen werden. Bitte prüfe in den Einstellungen, ob diese erfolgreich heruntergeladen wurde." + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "%s GeoIP-Einträge in der Besucher-Tabelle aktualisiert." + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "%s Daten älter als %s Tage erfolgreich gelöscht." + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "Keine Daten zum Löschen gefunden von %s!" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "Datenbank bereinigt auf" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "Bitte wähle einen Wert größer als 30 Tage." + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "Browser-Statistiken" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "Klicken, um umzuschalten" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "Browser" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "Browser-Typen" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "Plattform" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "Browser-Plattformen" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "%s-Version" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "ACHTUNG: Die Aufzeichnung von Ausnahmen ist aktuell deaktiviert. Die nachfolgenden Ergebnisse spiegeln also nicht die aktuelle Statistik wider!" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "Ausnahmenstatistik" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "10 Tage" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "20 Tage" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "30 Tage" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "2 Monate" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "3 Monate" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "6 Monate" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "9 Monate" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "1 Jahr" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "Ausnahmen - Verlauf" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "Ausnahmen in den letzten" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "Tagen" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "Anzahl der Ausnahmen" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "Website-Aufrufe - Verlauf" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "Aufrufe in den letzten" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "Anzahl der Aufrufe und Besucher" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "Aufrufe" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "Besucher" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "Verwendete Suchbegriffe" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "#anonymisiert#" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "Weltkarte" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "Seite" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "von" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "Alle" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "Letzte Besucher" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "Zurzeit online" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "Besucher ist online seit " + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "Verlauf der Aufrufe für Seiten-ID" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "Seitenaufrufe - Verlauf" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "Suchmaschinen-Verweise" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "Suchmaschinen-Verweise in den letzten" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "Anzahl der Verweise" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "Gesamt" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "Top Länder" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "Rang" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "Flagge" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "Land" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "Besucherzähler" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "Seitenaufrufe" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "Top 5 Seitenaufrufe - Verlauf" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "Aufrufe der Top 5 Seiten" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "Anzahl der Aufrufe" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "Kein Titel verfügbar / Fehler 404" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "Aufrufe" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "In Kürze verfügbar" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "Verweise von" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "Verweise" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "Top 100 Besucher" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "Über WP Statistics - Version %s" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "Website" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "Bewerten und Rezensieren" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "Weitere Informationen" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "Dieses Plugin verwendet GeoLite2, zur Verfügung gestellt von MaxMind - %s." + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "Andere" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "Herkunft Besucher heute" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "Adresse" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "Besucher online" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "Heute" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "Gestern" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "Heute gesamt" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "Aktuelle Uhrzeit/aktuelles Datum" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "(ändern)" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "Datum: %s" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "Zeit: %s" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "Website-Aufrufe" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "IP" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "User Agent" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "Version" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "Zugriff verweigert." + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "%s User Agent Daten erfolgreich gelöscht." + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "Keine User Agent Daten zum Löschen gefunden!" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "Bitte wähle die gewünschten Einträge aus." + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "%s Plattform-Daten erfolgreich gelöscht." + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "Keine Plattform-Daten zum Löschen gefunden!" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "%s Tabelleneinträge erfolgreich gelöscht." + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "Fehler - %s nicht geleert!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "Datenbank-Setup" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "Erneut installieren" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "Installationsroutine starten!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "Wenn deine Installation von WP Statistics unvollständig oder fehlerhaft sein sollte, kannst du hier die Installationsroutine erneut ausführen." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "Datenbank-Index" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "Länder" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "Jetzt aktualisieren" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "Bei älteren Versionen von WP Statistics können in seltenen Fällen duplizierte Einträge in der Besucher-Tabelle entstehen. Neuere Installationen verhindern das mit einem eindeutigen Index für diese Tabelle. Um diesen eindeutigen Index zu erstellen, müssen zuerst die Duplikate entfernt werden - klicke dazu auf \"Jetzt aktualisieren\"." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "Die Durchführung kann bei Installationen mit vielen Zeilen in der Besucher-Tabelle länger dauern." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "Bei älteren Versionen von WP Statistics können in seltenen Fällen duplizierte Einträge in der Besucher-Tabelle entstehen. Neuere Installationen verhindern das mit einem eindeutigen Index für diese Tabelle." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "Glückwunsch! Deine Installation ist aktuell, es gibt hier nichts zu tun..." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "Export" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "Exportieren von" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "Bitte auswählen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "DB-Tabelle auswählen, die exportiert werden soll." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "Exportieren nach" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "Dateityp für die exportierte Datei auswählen." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "Kopfzeile hinzufügen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "Fügt eine Kopfzeile als erste Zeile der exportierten Datei hinzu." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "Export jetzt starten" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "Historische Angaben" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "Hinweis: Da du Daten gerade erst gelöscht hast, musst du diese Seite neu laden um aktualisierte und korrekte Zahlen angezeigt zu bekommen." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "Besucher" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "Anzahl früherer Besucher der Seite (vor WP Statistics). Aktuell: %s" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "Anzahl früherer Seitenaufrufe (vor WP Statistics). Aktuell: %s" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "Jetzt aktualisieren" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "Bist du sicher?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "Daten" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "Tabelle leeren" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "Alle Daten in der Tabelle werden unwiderruflich gelöscht!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "Daten jetzt löschen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "Lösche Daten älter als" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "Daten, die älter sind als hier angegeben, werden unwiderruflich gelöscht. Minimum-Wert ist 30 Tage." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "Daten jetzt löschen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "User Agents" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "Browser-Typ" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "Alle Daten für diesen Browser-Typ werden unwiderruflich gelöscht." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "Daten jetzt löschen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "Plattform" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "Alle Daten für diesen Plattform-Typ werden unwiderruflich gelöscht." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "Ressourcen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "PHP-Speichernutzung" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "Byte" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "PHP-Speicherlimit" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "Max. Speicher, den ein Skript zur Ausführung verwenden darf; gesetzt in <code>php.ini</code>." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "Anzahl der Zeilen in der %s-Tabelle" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "Zeile(n)" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "Anzahl der Zeilen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "Versions-Informationen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "Version von WP Statistics" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "Version des Plugins, die auf der Seite läuft." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "PHP-Version" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "PHP-Version, die auf der Seite läuft." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "PHP \"Safe Mode\"" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "PHP \"Safe Mode\" aktiviert ja/nein. GeoIP funktioniert nur bei deaktiviertem \"Safe Mode\"." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "jQuery-Version" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "jQuery-Version, die auf der Seite läuft." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "cURL-Version" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "cURL ist nicht installiert" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "Version der PHP \"cURL\"-Erweiterung. Die Funktion von GeoIP wird deaktiviert, wenn die Erweiterung nicht installiert ist." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "Installiert" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "Nicht installiert" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "Datei-Informationen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "GeoIP-Datenbank" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "Die GeoIP-Datenbankdatei existiert nicht!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr ", erstellt am " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "Dateigröße und -datum der GeoIP-Datenbank" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "browscap.ini" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "Die Datei \"browscap.ini\" existiert nicht!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "Dateigröße und -datum der \"browscap.ini\"-Datei" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "browscap.ini Cache-Datei" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "Die browscap.ini Cache-Datei existiert nicht!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "Dateigröße und -datum der browscap.ini Cache-Datei" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "Client-Informationen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "Client-IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "IP-Adresse des zurzeit aktiven Clients" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "User Agent" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "User Agent-Kennung des zurzeit aktiven Clients" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "Browser" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "Browser des zurzeit aktiven Clients" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "Browser-Version des zurzeit aktiven Clients" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "Erkannte Plattform des zurzeit aktiven Clients" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "Diese Operation ersetzt alle IP-Adressen in der Datenbank und kann nicht rückgängig gemacht werden. Bist du sicher?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "GeoIP-Optionen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "Führt eine Aktualisierung der bisher unbekannten Standort-Informationen in der Datenbank durch. Dies kann eine Weile dauern." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "IP-Adressen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "IP-Adressen anonymisieren" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "Ersetzt die bisher gespeicherten IP-Adressen in der Datenbank durch anonymisierte Werte. Wenn diese Operation durchgeführt wird, ist es später nicht mehr möglich die IP-Adressen für Standort-Ermittlungen wiederherzustellen!" + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "IP-Adressen erfolgreich anonymisiert." + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "Installationsroutine erfolgreich abgeschlossen." + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "Ressourcen/Information" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "Daten löschen" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "Datenbank" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "Aktualisierungen" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "Historie" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "WP Statistics v%s" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "Besuche uns online" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "Besuche unsere neue %s und bleib auf dem Laufenden, was WP Statistics betrifft." + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "Website" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "Bewerte und rezensiere WP Statistics auf WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "Danke, dass du WP Statistics installiert hast. Wir würden uns freuen, wenn du eine " + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "Bewertung oder Rezension" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "auf WordPress.org abgibst. Dein Feedback ist uns wichtig!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "Übersetzungen" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "WP Statistics unterstützt Internationalisierung und wir ermuntern unsere Benutzer, uns ihre Übersetzungen zu übermitteln. Besuche unsere %s, um den aktuellen Stand der Übersetzungen einzusehen und %s, wenn du dich beteiligen willst." + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "gemeinschaftliche Übersetzungs-Website" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "kontaktiere uns" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "Support" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "Es tut uns leid, dass du ein Problem mit WP Statistics hast und wir wollen dir helfen. Bevor du uns kontaktierst, stelle sicher dass:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "Hast du die %s gelesen?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "FAQ" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "Benutzerdokumentation" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "Hast du im %s nach dem Thema gesucht?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "Support-Forum" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "Hast du im Internet nach Erklärungen zu Fehlermeldungen gesucht, die du angezeigt bekommst?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "Stelle sicher, dass du Zugriff auf deine PHP-Logs hast." + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "Noch ein paar nützliche Hinweise vorab:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "Wie ist dein PHP-Speicherlimit in der <code>php.ini</code>?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "Hast du versucht, andere installierte Plugins zu deaktivieren?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "Hast du versucht, das Standard WordPress-Theme zu verwenden?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "Hast du die Plugin-Einstellungen geprüft?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "Hast du alle benötigten PHP-Erweiterungen installiert?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "Bekommst du eine leere oder unvollständige Seite in deinem Browser angezeigt? Hast du den Seiten-Quelltext angesehen und auf eventuelle schwere Fehler geprüft?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "Hast du deine PHP- und Server-Logs kontrolliert?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "Es funktioniert noch immer nicht?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "Dann eröffne bitte einen neuen Thread im %s und wir werden so schnell wie möglich darauf antworten." + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "WordPress.org Support-Forum" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "Alternativ ist auch %s-Unterstützung verfügbar." + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "Farsi" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "WP Statistics Honey Pot-Seite" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "Das ist die Honey Pot-Seite, die WP Statistics benutzt. Nicht löschen!" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "Zugriffsrechte" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "Min. Rechte zum Einsehen der Statistik" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "Min. Rechte zum Verwalten der Statistik" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "Siehe %s, um Details der WordPress-Benutzerrechte zu erfahren." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "WordPress Rollen und Berechtigungen-Seite" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "Hinweis: manage_network = Super-Admininistrator (Multisite), manage_options = Administrator, edit_others_posts = Redakteur, publish_posts = Autor, edit_posts = Mitarbeiter, read = Abonnent (jeder)." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "Jede dieser Berechtigungen vererbt ihre Rechte \"nach oben\" in einer standardmäßigen WordPress-Konfiguration. Wird z.B. \"publish_posts\" gewählt, werden die Rechte an Autoren, Redakteure, Administratoren und Super-Administratoren vererbt." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "Um mehr Freiheiten beim Verwalten von Rollen und Berechtigungen zu haben, empfiehlt sich die Verwendung entspr. Plugins - z.B. %s im WordPress Plugin-Verzeichnis." + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "Ausnahmen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "Ausnahmen aufzeichnen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "Aktivieren" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "Diese Option zeichnet Ausnahmen für Zugriffe und den Grund, warum der Zugriff als Ausnahme zählt (z.B. Zugriff erfolgte durch einen Robot, durch eine definierte Benutzerrolle, o.Ä.), in einer eigenen Tabelle auf. Hierbei wird eine große Menge an Daten generiert. Diese kann aber hilfreich sein, um die Gesamt-Zahl an Zugriffen auf deine Seite zu verfolgen, und nicht nur reine Besucher-Zugriffe." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "Benutzerrollen ausschließen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "Ausschließen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "Daten der Rolle %s aus der Statistik ausschließen." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "Robots/IP-Adressen ausschließen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "Robots-Liste" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "Eine Liste an Namensmustern (ein Name pro Zeile), die verwendet werden um Robots zu erkennen. Ein Eintrag muss mindestens vier Zeichen lang sein, ansonsten wird er ignoriert." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "Auf Standardwerte zurücksetzen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "Robots-Liste bei Update aktualisieren" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "Erzwingt das Zurücksetzen der Robots-Liste auf die Standardwerte nach einem Update von WP Statistics. Wenn diese Option aktiviert ist, gehen alle benutzerdefinierten Robots, die zur Liste hinzugefügt wurden, verloren!" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "Robot-Erkennschwelle" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "Behandle Besucher mit mehr Besuchen pro Tag als hier angegeben als Robots. 0 = deaktiviert" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "IP-Adressen-Liste" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "10.0.0.0 hinzufügen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "172.16.0.0 hinzufügen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "192.168.0.0 hinzufügen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "Honey Pot" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "Verwende eine Honey Pot Seite, um Robots zu identifizieren." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "Honey Pot Seiten-ID" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "Die Seiten-ID, die für die Honey Pot Seite verwendet wird." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "Erstelle eine neue Honey Pot Seite" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "GeoIP-Ausnahmen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "Exkludierte Länder" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "Eine Liste an Länder-Kennungen (eine pro Zeile, zwei Buchstaben pro Kennung), deren Besucher aus der Statistik ausgenommen werden sollen. Verwende \"000\" (drei Nullen), um unbekannte Länder auszuschließen." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "Inkludierte Länder" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "Eine Liste an Länder-Kennungen (eine pro Zeile, zwei Buchstaben pro Kennung), deren Besucher in die Statistik mit einbezogen werden sollen. Wenn diese Liste Einträge enthält, werden NUR Benutzer aus den hier definierten Ländern berücksichtigt. Verwende \"000\" (drei Nullen), um unbekannte Länder mit einzubeziehen." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "Hostname-Ausnahmen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "Ausgeschlossene Hostnamen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "Eine Liste an vollständigen Hostnamen (z.B. \"server.example.com\", einer pro Zeile), die aus der Statistik ausgeschlossen werden sollen." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "Hinweis: Diese Option führt keine Rückwärts-DNS-Anfragen bei jedem Seitenaufruf durch, sondern speichert die jeweilige IP-Adresse für die gelisteten Hostnamen für eine Stunde. Wenn hier also dynamisch zugewiesene Hostnamen gelistet werden, kann es zu Überlappungen beim Wechsel der IP-Adressen kommen und einige Zugriffe von diesen Hostnamen dennoch in die Statistik mit einbezogen werden." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "URL-Ausnahmen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "Login-Seite" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "Die Login-Seite von der Statistik ausschließen." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "Admin-Seiten" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "Alle Seiten des Administrationsbereichs von der Statistik ausschließen." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "RSS-Feeds" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "RSS-Feeds von der Statistik ausschließen." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "browscap.ini-Einstellungen" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "browscap.ini verwenden" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "Aktiv" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "Wenn aktiviert, verwendet WP Statistics die \"browsap.ini\" zum Erkennen von Robots." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "browscap.ini aktualisieren" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "browscap.ini-Datei herunterladen" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "Speichere die Änderungen auf dieser Seite, um eine Aktualisierung herunterzuladen." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "Automat. Aktualisierung von browscap.ini" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "Nächste Aktualisierung am" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "Die Aktualisierung der \"browscap.ini\"-Datei wird ein Mal wöchentlich durchgeführt." + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "Diese Einstellung löscht das Benutzerhandbuch unwiderruflich, wenn die Einstellungen gespeichert werden. Bist du sicher??" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "Dieses Feature ersetzt IP-Adressen in der Datenbank durch generierte, eindeutige Hash-Werte. Die Einstellung \"Gesamten User Agent-String speichern\" wird automatisch deaktiviert, wenn die Einstellung zum Anonymisieren der IP-Adressen aktiviert wird. ACHTUNG: Einmal anonymisierte IP-Adressen können zu keinem späteren Zeitpunkt wiederhergestellt werden!" + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "Besucher online" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "Benutzer online" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-de_de_formal.mo b/plugins/wp-statistics/languages/wp_statistics-de_de_formal.mo new file mode 100644 index 0000000..0a062ba Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-de_de_formal.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-de_de_formal.po b/plugins/wp-statistics/languages/wp_statistics-de_de_formal.po new file mode 100644 index 0000000..92d1555 --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-de_de_formal.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in German +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-10-28 20:13:31+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: de\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "Letzte 365 Tage" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "Letzte 30 Tage" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "Letzte 7 Tage" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "PHP IPv6 aktiviert" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "Eine Liste von IP-Adressen und Subnet-Masken (eine pro Zeile), die von der Statistik ausgeschlossen werden sollen." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "Für IPv4-Adressen werden sowohl die Formate 192.168.0.0/24 und 192.168.0.0/255.255.255.0 akzeptiert. Um nur eine einzelne IP-Adresse anzugeben, verwende eine Subnet-Maske von /32 oder /255.255.255.255." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "Benutze das fc00::/7-Format für IPv6-Adressen." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "Aufrufe heute" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "Besucher heute" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "Aufrufe gestern" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "Besucher gestern" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "Besuche in den letzten 7 Tagen" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "Besuche in den letzten 30 Tagen" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "Besuche in den letzten 365 Tagen" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "Aufrufe gesamt" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "Besucher gesamt" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "Aufrufe gestern" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "Kein passendes Widget gefunden!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "Zlib gzopen()" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "Wenn die gzopen () Funktion installiert ist. gzopen () ist erforderlich um die GeoIP-Datenbank erfolgreich herunterzuladen." + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "Fehler! Die DOWNLOAD_URL() oder die gzopen() Funktionen gibt es nicht!" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "Fehler beim Setzen der Berechtigungen für das GeoIP-Datenbank-Verzeichnis. Stellen Sie sicher, dass Ihr Web-Server über Schreibberechtigungen für das Verzeichnis: %s verfügt." + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "- Sie benutzen eine nicht unterstützte Version von PHP." + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "WP Statistiken deaktiviert" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "WP Statistik hat die PHP-Version %s erkannt welche nicht unterstützt wird. WP Statistiken benötigt PHP Version %s oder höher!" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "Bitte kontaktieren Sie Ihren Hosting-Anbieter für eine unterstützte Version oder deaktivieren Sie WP Statistics um diese Meldung zu entfernen." + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "Fehler! Das Widget wurde nicht gefunden!" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "Laden..." + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "Neuladen..." + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "Top Besucher" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "Einstellungen" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "Aktiviert" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "Alte Daten täglich löschen" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "Ein WordPress Cron-Job wird täglich ausgeführt, um Daten zu löschen die älter sind als die nachfolgend angegebene Anzahl an Tagen." + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "Lösche Daten älter als" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "Hohe Aufrufe täglich löschen" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "Ein WordPress Cron-Job wird täglich ausgeführt, um Daten von Besuchern zu löschen die mehr Aufrufe pro Tag aufweisen als nachfolgend angegeben (eventuelle Robots)." + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "Anzahl der Aufrufe (pro Tag), um als vermeintlicher Robot eingestuft zu werden. Minimum-Wert ist 10 Aufrufe. Ungültige Werte deaktivieren die automatisierte tägliche Wartung." + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "Statistiken dieser Beitrags- / Seiten-ID anzeigen" + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "Beitrags- / Seiten-ID" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "Ask.com" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "Statistik für diesen Zeitraum anzeigen; strtotime() (http://php.net/manual/en/datetime.formats.php) wird verwendet, um sie zu berechnen. Verwenden Sie "total", um alle aufgezeichneten Daten zu bekommen." + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "Besucher-Tracking" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "GeoIP-Aufzeichnung" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "Index der Aufrufe-Tabelle" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "Eine Datenbank-Aktualisierung ist notwendig, bitte gehen Sie zu %s und führen folgende Aktionen durch: %s" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "Index der Länder-Tabelle" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "Tabelle für Suchanfragen" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "Einstellungen" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "," + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "Die folgenden Funktionen sind deaktiviert, bitte gehen zur %s und aktiviere sie: %s" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "Aufrufe-Tracking" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "Online-User-Tracking" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "Die folgenden Plugin-Tabellen existieren nicht in der Datenbank. Bitte führe die %s-Installationsroutine erneut durch %s: " + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "Konvertierung der Tabelle für Suchanfragen durchgeführt - %d Zeilen hinzugefügt." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "Bei älteren Versionen von WP Statistics werden detaillierte Informationen zu Suchanfragen in der Besucher-Tabelle gespeichert. Das kann bei großen Datensätzen zu Leistungseinbußen führen. Daher wurde eine neue Tabelle implementiert, die diese Informationen in einem besser skalierbaren Format enthält." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "Tabelle für Suchanfragen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "Konvertieren" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "Jetzt konvertieren" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "Bei älteren Versionen von WP Statistics werden detaillierte Informationen zu Suchanfragen in der Besucher-Tabelle gespeichert. Das kann bei großen Datensätzen zu Leistungseinbußen führen. Daher wurde eine neue Tabelle implementiert, die diese Informationen in einem besser skalierbaren Format enthält. Die alten Daten müssen dafür jedoch konvertiert werden, bevor sie verwendet werden können." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "Referrer Spam" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "Die Aktualisierung der \"Piwik Referrer Spam\"-Blacklist wird ein Mal wöchentlich durchgeführt." + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "Externe Quellen" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "\"Piwik Referrer Spam\" Blacklist-Einstellungen" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "Automat. Aktualisierung der \"Piwik Referrer Spam\" Blacklist" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "\"Piwik Referrer Spam\" Blacklist herunterladen" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "\"Piwik Referrer Spam\" Blacklist aktualisieren" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "Die \"Piwik Referrer Spam\" Blacklist wird heruntergeladen und zur Erkennung von Referrer Spam verwendet." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "Diese Spam-Blacklist wird von Piwik auf %s zur Verfügung gestellt." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "\"Piwik Referrer Spam\" Blacklist verwenden" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "Falsche/fehlerhafte Browserkennung berücksichtigen" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "404-Fehlerseiten" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "Datum" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "Behandle Besucher mit einer falschen oder fehlerhaften Browserkennung (fehlende IP-Adresse oder leere User-Agent-Kennung) als Robot." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "404-Fehlerseiten" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "Alle Seiten, die einen Fehler-404 erzeugen, von der Statistik ausschließen." + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "Fehler beim Erstellen des GeoIP Datenbank-Verzeichnisses. Stelle sicher, dass dein Webserver die Berechtigung zum Erstellen von Verzeichnissen in %s hat." + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "Seiten-Titel bei leeren Suchanfragen hinzufügen" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "Wenn eine Suchmaschine als Referrer identifiziert wird, diese jedoch die vorangegangene Suchanfrage nicht sendet, wird diese Option bei Aktivierung den Seiten-Titel mit einem vorangestellten \"~:\" als Suchanfrage ausweisen. Das kann dabei helfen herauszufinden, wonach der Besucher gesucht haben könnte." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "Lösche Besucher mit mehr als" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "Zugriffen pro Tag" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "Daten von Besuchern mit mehr als den hier definierten Zugriffen an einem Tag werden gelöscht. Das kann hilfreich sein, wenn Sie z.B. Daten nach einer Robot-Attacke löschen wollen. Diese Option löscht die entsprechenden Besucher und die mit ihnen verbunden Zugriffe auf Ihre Website, aktualisiert jedoch nicht die individuellen Seitenaufrufe da diese Daten nicht pro Besucher aufgezeichnet werden. Minimum-Wert ist 10 Zugriffe pro Tag." + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "Keine Besucher zum Löschen gefunden." + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "%s Einträge erfolgreich gelöscht." + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "Zugriffe muss größer als oder gleich 10 sein!" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "Seitenbesuche" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "Seitenanzahl" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "Kommentaranzahl" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "Spam-Anzahl" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "Benutzeranzahl" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "Beitrags Durchschnitt" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "Kommentar Durchschnitt" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "User Durchschnitt" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "Suchanbieter" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "Statistiken von folgendem Suchanbieter anzeigen." + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "Zahlenformat" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "Das Format, um Zahlen anzuzeigen: i18n, english, none" + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "Englisch" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "International" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "Website-Aufrufe - Zusammenfassung" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "Gesamt im gewählten Diagramm-Zeitraum" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "Gesamt seit Statistik-Beginn" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "Haben Sieschon über eine Spende für WP Statistics nachgedacht?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "Spenden" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "Möchten Sie uns zeigen wieviel Spaß Sie mit WP Statistics haben? Besuchen Sie unsere %s-Seite und unterstützen Sie uns!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "Spenden" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "Jetzt spenden!" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "Schließen" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "Wähle, welche Statistik angezeigt werden soll." + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "Statistik" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "Beitragszahl" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "Zeitraum" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "bis" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "Los" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "Rang #5" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "Rang #4" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "Rang #3" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "Rang #1" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "Rang #2" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "Aufrufe" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "Bei älteren Versionen von WP Statistics können in seltenen Fällen duplizierte Einträge in der Aufrufe-Tabelle entstehen. Neuere Installationen verhindern das mit einem eindeutigen Index für diese Tabelle. Um diesen eindeutigen Index zu erstellen, müssen zuerst die Duplikate entfernt werden - klicke dazu auf \"Jetzt aktualisieren\"." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "Die Durchführung kann bei Installationen mit vielen Zeilen in der Aufrufe-Tabelle länger dauern." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "Bei älteren Versionen von WP Statistics können in seltenen Fällen duplizierte Einträge in der Aufrufe-Tabelle entstehen. Neuere Installationen verhindern das mit einem eindeutigen Index für diese Tabelle." + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "Filtern nach" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "Zeitraum von" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "MM/DD/YYYY" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "Verwende keine Übersetzungen innerhalb des Plugins sondern stattdessen die Englischen Standard-Texte (benötigt zwei Mal ein Neuladen der Seite)." + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "Englisch erzwingen" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "Sprachen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "Hinweis: Diese Option berücksichtigt KEINE Parameter nach einem \"?\" in URLs. Einträge mit weniger als zwei zeichen werden ignoriert." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "Eine Liste an lokalen URLs (z.B. \"/wordpress/about\", eine pro Zeile), die aus der Statistik ausgeschlossen werden sollen." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "Ausgeschlossene URLs" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "Ausgeschlossene URL" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "In den letzten 365 Tagen" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "In den letzten 30 Tagen" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "In den letzten 7 Tagen" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "Yahoo!" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "Yandex" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "clearch.org" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "DuckDuckGo" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "Bing" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "Baidu" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "Feeds" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "Benutzer-Rolle" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "Login-Seite" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "Admin-Seite" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "Self-Referral" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "IP-Adresse" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "Robot" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "Zurzeit sind auf Ihrer Webseite keine (anderen) Benutzer online." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "Robot-Erkennschwelle" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "Honey Pot" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "Verlauf der Aufrufe" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "Hostname" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "Feature aktivieren oder deaktivieren" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "Auf neue Besucher überprüfen alle" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "Sekunden" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "Zeit, um auf neue Besucher zu überprüfen. Aktuell: %s Sekunden." + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "Alle Besucher aufzeichnen" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "Ignoriert etwaige gesetzte Ausnahmen und zeichnet alle Besucheraktivitäten auf (inkl. Self-Referrals und Robots). Diese Option sollte nur zur Problembehebung aktiviert werden!" + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "Gesamten User Agent-String speichern" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "Sollte nur bei Problemen bei der Bestimmung der User Agent-Strings aktiviert werden." + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "Koeffizient pro Besucher" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "Koeffizient - ein Besucher zählt \"X\" Aufrufe. Aktuell: %s." + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "Seitenaufrufe" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "Alle Seiten (Kategorien, Archive, etc.) berücksichtigen" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "Parameter aus URLs entfernen" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "Diese Option entfernt alle Parameter nach einem \"?\" in URLs." + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "\"Aufrufe\"-Spalte in Beiträgen/Seiten-Listen im Admin-Bereich deaktivieren" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "Sonstige Einstellungen" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "Statistiken in der Menüleiste anzeigen" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "Nein" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "Ja" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "Zeige Statistiken in der Admin-Menüleiste" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "Benachrichtigungen im Admin-Bereich verstecken" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "WP Statistics zeigt standardmäßig eine Benachrichtigung auf allen Admin-Seiten an, wenn eines der Basis-Features deaktiviert ist. Diese Option schaltet diese Benachrichtigungen aus." + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "Benutzerdokumentation löschen" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "WP Statistics speichert standardmäßig die Benutzerdokumentation im Plugin-Verzeichnis (ca. 5 MB). Diese Option löscht diese Dateien." + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "Suchmaschinen" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "Es ist nicht erlaubt, alle Suchmaschinen zu deaktivieren. Wenn hier alle Suchmaschinen deaktiviert werden, ignoriert WP Statistics diese Einstellung." + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "Deaktivieren" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "Daten von %s aus der Statistik ausschließen." + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "Diagramme" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "Gesamt-Zähler zeigen" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "Zeige eine Linie mit dem Gesamt-Zähler in Diagrammen mit mehreren Verläufen." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "GeoIP-Einstellungen" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "IP-Standorbestimmung mittels GeoLite2, zur Verfügung gestellt von MaxMind - %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "GeoIP verwenden" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "Wenn aktiviert, ermittelt WP Statistics Standort-Informationen (zumindest das Land) aus der IP-Adresse der Besucher." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "GeoIP aktualisieren" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "GeoIP-Datenbank herunterladen" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "Automat. Aktualisierung von GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "Die Aktualisierung der GeoIP-Datenbank wird monatlich zwei Tage nach dem ersten Dienstag durchgeführt." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "Diese Option lädt die GeoIP-Datenbank auch dann herunter, wenn die Dateigröße der lokalen Datenbank kleiner als 1 kB ist (was in den meisten Fällen bedeutet, dass die Datei bisher noch nicht heruntergeladen wurde)." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "Fehlende GeoIP-Daten nach Aktualisierung einpflegen" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "Aktualisiert alle fehlenden GeoIP-Daten nachdem eine neue GeoIP-Datenbank herunter geladen wurde." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "Länderkennung für private IP-Adressen" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "Die internationale Standard-Länderkennung (zwei Buchstaben, z.B. US = United States, CA = Canada, etc.) für private, nicht-routbare IP-Adressen wie 10.0.0.1, 192.158.1.1, 127.0.0.1 usw. Verwende \"000\" (drei Nullen), um private IP-Adressen als \"unbekannt\" zu definieren." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "Die GeoIP-Funktion ist aus den folgenden Gründen deaktiviert:" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "GeoIP benötigt die PHP-Version %s oder höher, die installierte PHP-Version ist " + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "GeoIP benötigt die cURL PHP-Erweiterung, die mit Ihrer PHP Version nicht geladen wird!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "GeoIP benötigt die BC Math PHP-Erweiterung, die mit deiner PHP Version nicht geladen wird!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "PHP Safe Mode wurde erkannt! GeoIP funktioniert mit aktiviertem PHP Safe Mode nicht!" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "Diese Einstellung löscht täglich Daten aus der Datenbank. Bist du sicher, dass du diese Option aktivieren willst?" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "Tage" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "Anzahl der Tage, für die die Statistik-Daten gespeichert werden sollen. Minimum-Wert ist 30 Tage, ungültige Werte deaktivieren die automatisierte tägliche Wartung." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "Allgemeine Einstellungen" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "E-Mail-Adressen" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "Komma-getrennte Liste an E-Mail-Adressen, an die Benachrichtigungen versendet werden sollen." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "Update-Benachrichtigungen" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "browscap.ini" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "Bei Update der \"browscap.ini\"-Datei benachrichtigen" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "Bei Update der GeoIP-Datenbank benachrichtigen" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "DB-Bereinigung" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "Bei Datenbank-Bereinigung benachrichtigen" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "Plugin-Update" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "Bei Update des Plugins benachrichtigen" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "Statistik-Reports" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "Zeitplan" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "Wähle, wie oft ein Statistik-Report versendet werden soll." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "Reports senden via" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "E-Mail" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "Wähle die Art der Statistik-Reports." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "Hinweis: Um Statistik-Reports per SMS versenden zu können, muss das Plugin %s installiert werden." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "WordPress SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "Report-Text" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "Gib den gewünschten Inhalt der Statistik-Reports hier ein." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "Alle Shortcodes Ihrer WordPress-Installation und die eigenen Shortcodes von WP Statistics (siehe Benutzerdokumentation) können im Nachrichtentext verwendet werden. Hier sind ein paar Beispiele:" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "Besucher aktuell" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "Besucher heute" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "Aufrufe heute" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "Besucher gestern" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "Aufrufe gestern" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "Besucher gesamt" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "Aufrufe gesamt" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "Keine" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "Über das Plugin" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "Admin-Übersicht" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "Diese Einstellungen sind global für alle Benutzer gültig." + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "Admin-Widgets deaktivieren" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "Feature aktivieren oder deaktivieren" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "Seiten-/Beitrags-Editor" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "Editor-Widget deaktivieren" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "Feature aktivieren oder deaktivieren" + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "Google" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "Karte deaktivieren" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "Anzeige der Weltkarte auf der Statistik-Übersicht deaktiveren." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "WP Statistics - Daten entfernen" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "Das normale Deaktivieren und Löschen von WP Statistics führt keine Änderungen an Ihrer Datenbank und den Plugin-Einstellungen durch. Wenn Sie alle Daten des Plugins also tatsächlich löschen wollen, können Sie das mit dieser Funktion tun." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "Die Daten werden aus der Datenbank gelöscht, sobald dieses Formular abgeschickt wird. WP Statistics wird danach noch so lange in deinem Admin-Menü angezeigt, bis du eine andere Admin-Seite aufrufst." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "Daten und Einstellungen entfernen" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "Entfernen" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "Alle Daten und Plugin-Einstellungen werden aus der Datenbank gelöscht. ACHTUNG: Diese Aktion kann nicht rückgängig gemacht werden!" + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "Allgemeines" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "Benachrichtigungen" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "Admin- & Statistik-Übersicht" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "Datenbank-Wartung" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "Deinstallation" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "Einstellungen speichern" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "Ein Mal wöchentlich" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "Alle zwei Wochen" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "Alle vier Wochen" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "Statistik" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "Website-Statistiken in der Sidebar anzeigen." + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "Gesamt Seitenaufrufe" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "Gesamt Beiträge" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "Gesamt Seiten" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "Gesamt Kommentare" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "Gesamt Spam" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "Gesamt Benutzer" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "Durchschnittliche Artikel" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "Durchschnittliche Kommentare" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "Durchschnittliche Benutzer" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "Letztes Beitrags-Datum" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "Name" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "Elemente" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "Aufrufe gestern" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "Wähle die Suchmaschine" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "WP Statistics wurde entfernt, Sie können das Plugin jetzt deaktivieren und löschen." + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "WP Statistics" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "Umfangreiche Statistik für WordPress." + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "Einstellungen" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "Klicke hier, um die Plugin-Seite auf WordPress.org zu besuchen" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "Besuch die Plugin-Seite auf WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "Klicke hier, um das Plugin auf WordPress.org zu bewerten und zu rezensieren" + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "Bewerte das Plugin" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "WP Statistics - Aufrufe bisher" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "Übersicht" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "Zurzeit online" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "Verw. Websites" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "Suchmaschinen" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "Suchbegriffe" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "Top 100 Besucher" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "Optimierung" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "Benutzerhandbuch" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "Website" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "Optionen" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "Besucher heute" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "Aufrufe heute" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "Besucher gestern" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "Statistiken" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "ODF-Datei herunterladen" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "HTML-Datei herunterladen" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "Benutzerdokumentation nicht gefunden." + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "Sie haben keine Zugriffsrechte um diese Seite zu sehen." + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "WP Statistics %s installiert am" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "Fehler beim Herunterladen der GeoIP-Datenbank von: %s - %s" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "Fehler beim Öffnen der heruntergeladenen GeoIP-Datenbank von: %s" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "Fehler beim Schreiben in die GeoIP-Datenbank: %s" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "GeoIP-Datenbank erfolgreich aktualisiert!" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "Update von GeoIP am" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "Fehler beim Herunterladen der browscap.ini-Datenbank von: %s - %s" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "browscap.ini-Datenbank erfolgreich aktualisiert!" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "Fehler bei der Aktualisierung der browscap.ini-Datenbank. Cache-Datei zu groß, stelle die alte browscap.ini wieder her." + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "Fehler bei der Aktualisierung der browscap.ini-Datenbank. Die neue browscap.ini identifiziert User Agents als Crawlers, stelle die alte browscap.ini wieder her." + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "Die browscap.ini ist aktuell!" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "Update der browscap.ini am" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "Kurzstatistik" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "Top 10 Browser" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "Top 10 Länder" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "Karte Besucher heute" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "Website-Aufrufe" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "Top 10 Seiten" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "Letzte Besucher" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "Top verweisende Websites" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "Suchmaschinen-Verweise" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "Zusammenfassung" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "Suchbegriffe" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "Top 10 Besucher heute" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "Dieser Beitrag ist noch nicht veröffentlicht." + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "GeoIP-Datenbank konnte nicht geladen werden. Bitte prüfe in den Einstellungen, ob diese erfolgreich heruntergeladen wurde." + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "%s GeoIP-Einträge in der Besucher-Tabelle aktualisiert." + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "%s Daten älter als %s Tage erfolgreich gelöscht." + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "Keine Daten zum Löschen gefunden von %s!" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "Datenbank bereinigt auf" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "Bitte wähle einen Wert größer als 30 Tage." + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "Browser-Statistiken" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "Klicken, um umzuschalten" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "Browser" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "Browser-Typen" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "Plattform" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "Browser-Plattformen" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "%s-Version" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "ACHTUNG: Die Aufzeichnung von Ausnahmen ist aktuell deaktiviert. Die nachfolgenden Ergebnisse spiegeln also nicht die aktuelle Statistik wider!" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "Ausnahmenstatistik" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "10 Tage" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "20 Tage" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "30 Tage" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "2 Monate" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "3 Monate" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "6 Monate" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "9 Monate" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "1 Jahr" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "Ausnahmen - Verlauf" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "Ausnahmen in den letzten" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "Tagen" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "Anzahl der Ausnahmen" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "Website-Aufrufe - Verlauf" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "Aufrufe in den letzten" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "Anzahl der Aufrufe und Besucher" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "Aufrufe" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "Besucher" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "Verwendete Suchbegriffe" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "#anonymisiert#" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "Weltkarte" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "Seite" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "von" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "Alle" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "Letzte Besucher" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "Zurzeit online" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "Besucher ist online seit " + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "Verlauf der Aufrufe für Seiten-ID" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "Seitenaufrufe - Verlauf" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "Suchmaschinen-Verweise" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "Suchmaschinen-Verweise in den letzten" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "Anzahl der Verweise" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "Gesamt" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "Top Länder" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "Rang" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "Flagge" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "Land" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "Besucherzähler" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "Seitenaufrufe" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "Top 5 Seitenaufrufe - Verlauf" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "Aufrufe der Top 5 Seiten" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "Anzahl der Aufrufe" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "Kein Titel verfügbar / Fehler 404" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "Aufrufe" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "In Kürze verfügbar" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "Verweise von" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "Verweise" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "Top 100 Besucher" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "Über WP Statistics - Version %s" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "Website" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "Bewerten und Rezensieren" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "Weitere Informationen" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "Dieses Plugin verwendet GeoLite2, zur Verfügung gestellt von MaxMind - %s." + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "Andere" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "Herkunft Besucher heute" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "Adresse" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "Besucher online" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "Heute" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "Gestern" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "Heute gesamt" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "Aktuelle Uhrzeit/aktuelles Datum" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "(ändern)" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "Datum: %s" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "Zeit: %s" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "Website-Aufrufe" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "IP" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "User Agent" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "Version" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "Zugriff verweigert." + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "%s User Agent Daten erfolgreich gelöscht." + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "Keine User Agent Daten zum Löschen gefunden!" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "Bitte wähle die gewünschten Einträge aus." + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "%s Plattform-Daten erfolgreich gelöscht." + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "Keine Plattform-Daten zum Löschen gefunden!" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "%s Tabelleneinträge erfolgreich gelöscht." + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "Fehler - %s nicht geleert!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "Datenbank-Setup" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "Erneut installieren" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "Installationsroutine starten!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "Wenn Ihre Installation von WP Statistics unvollständig oder fehlerhaft sein sollte, können Sie hier die Installationsroutine erneut ausführen." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "Datenbank-Index" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "Länder" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "Jetzt aktualisieren" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "Bei älteren Versionen von WP Statistics können in seltenen Fällen duplizierte Einträge in der Besucher-Tabelle entstehen. Neuere Installationen verhindern das mit einem eindeutigen Index für diese Tabelle. Um diesen eindeutigen Index zu erstellen, müssen zuerst die Duplikate entfernt werden - klicke dazu auf \"Jetzt aktualisieren\"." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "Die Durchführung kann bei Installationen mit vielen Zeilen in der Besucher-Tabelle länger dauern." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "Bei älteren Versionen von WP Statistics können in seltenen Fällen duplizierte Einträge in der Besucher-Tabelle entstehen. Neuere Installationen verhindern das mit einem eindeutigen Index für diese Tabelle." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "Glückwunsch! Ihre Installation ist aktuell, es gibt hier nichts zu tun..." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "Export" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "Exportieren von" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "Bitte auswählen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "DB-Tabelle auswählen, die exportiert werden soll." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "Exportieren nach" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "Dateityp für die exportierte Datei auswählen." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "Kopfzeile hinzufügen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "Fügt eine Kopfzeile als erste Zeile der exportierten Datei hinzu." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "Export jetzt starten" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "Historische Angaben" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "Hinweis: Da Sie gerade erst Daten gelöscht haben, müssen Siediese Seite neu laden um aktualisierte und korrekte Zahlen angezeigt zu bekommen." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "Besucher" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "Anzahl früherer Besucher der Seite (vor WP Statistics). Aktuell: %s" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "Anzahl früherer Seitenaufrufe (vor WP Statistics). Aktuell: %s" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "Jetzt aktualisieren" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "Sind Sie sicher?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "Daten" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "Tabelle leeren" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "Alle Daten in der Tabelle werden unwiderruflich gelöscht!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "Daten jetzt löschen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "Lösche Daten älter als" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "Daten, die älter sind als hier angegeben, werden unwiderruflich gelöscht. Minimum-Wert ist 30 Tage." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "Daten jetzt löschen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "User Agents" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "Browser-Typ" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "Alle Daten für diesen Browser-Typ werden unwiderruflich gelöscht." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "Daten jetzt löschen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "Plattform" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "Alle Daten für diesen Plattform-Typ werden unwiderruflich gelöscht." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "Ressourcen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "PHP-Speichernutzung" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "Byte" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "PHP-Speicherlimit" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "Max. Speicher den ein Skript zur Ausführung verwenden darf; gesetzt in der <code>php.ini</code>." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "Anzahl der Zeilen in der %s-Tabelle" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "Zeile(n)" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "Anzahl der Zeilen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "Versions-Informationen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "Version von WP Statistics" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "Version des Plugins, die auf der Seite läuft." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "PHP-Version" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "PHP-Version, die auf der Seite läuft." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "PHP \"Safe Mode\"" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "PHP \"Safe Mode\" aktiviert ja/nein. GeoIP funktioniert nur bei deaktiviertem \"Safe Mode\"." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "jQuery-Version" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "jQuery-Version, die auf der Seite läuft." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "cURL-Version" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "cURL ist nicht installiert" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "Version der PHP \"cURL\"-Erweiterung. Die Funktion von GeoIP wird deaktiviert, wenn die Erweiterung nicht installiert ist." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "Installiert" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "Nicht installiert" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "Datei-Informationen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "GeoIP-Datenbank" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "Die GeoIP-Datenbankdatei existiert nicht!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr ", erstellt am " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "Dateigröße und -datum der GeoIP-Datenbank" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "browscap.ini" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "Die Datei \"browscap.ini\" existiert nicht!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "Dateigröße und -datum der \"browscap.ini\"-Datei" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "browscap.ini Cache-Datei" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "Die browscap.ini Cache-Datei existiert nicht!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "Dateigröße und -datum der browscap.ini Cache-Datei" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "Client-Informationen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "Client-IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "IP-Adresse des zurzeit aktiven Clients" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "User Agent" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "User Agent-Kennung des zurzeit aktiven Clients" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "Browser" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "Browser des zurzeit aktiven Clients" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "Browser-Version des zurzeit aktiven Clients" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "Erkannte Plattform des zurzeit aktiven Clients" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "Diese Operation ersetzt alle IP-Adressen in der Datenbank und kann nicht rückgängig gemacht werden. Sind Sie sicher?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "GeoIP-Optionen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "Führt eine Aktualisierung der bisher unbekannten Standort-Informationen in der Datenbank durch. Dies kann eine Weile dauern." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "IP-Adressen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "IP-Adressen anonymisieren" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "Ersetzt die bisher gespeicherten IP-Adressen in der Datenbank durch anonymisierte Werte. Wenn diese Operation durchgeführt wird, ist es später nicht mehr möglich die IP-Adressen für Standort-Ermittlungen wiederherzustellen!" + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "IP-Adressen erfolgreich anonymisiert." + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "Installationsroutine erfolgreich abgeschlossen." + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "Ressourcen/Information" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "Daten löschen" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "Datenbank" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "Aktualisierungen" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "Historie" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "WP Statistics v%s" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "Besuche uns online" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "Besuche unsere neue %s und bleib auf dem Laufenden, was WP Statistics betrifft." + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "Website" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "Bewerte und rezensiere WP Statistics auf WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "Danke, dass Sie WP Statistics installiert haben. Wir würden uns freuen, wenn Sie ein " + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "Bewertung oder Rezension" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "auf WordPress.org abgibst. Dein Feedback ist uns wichtig!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "Übersetzungen" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "WP Statistics unterstützt Internationalisierung und wir ermuntern unsere Benutzer, uns ihre Übersetzungen zu übermitteln. Besuche unsere %s, um den aktuellen Stand der Übersetzungen einzusehen und %s, wenn Sie sich beteiligen wollen." + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "gemeinschaftliche Übersetzungs-Website" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "kontaktiere uns" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "Support" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "Es tut uns leid, dass Sie ein Problem mit WP Statistics haben und wir wollen Ihnen helfen. Bevor Sie uns kontaktieren, stellen Sie sicher dass:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "Haben Sie die %s gelesen?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "FAQ" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "Benutzerdokumentation" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "Haben Sie im %s nach dem Thema gesucht?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "Support-Forum" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "Hast du im Internet nach Erklärungen zu Fehlermeldungen gesucht, die du angezeigt bekommst?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "Stelle sicher, dass du Zugriff auf deine PHP-Logs hast." + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "Noch ein paar nützliche Hinweise vorab:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "Wie ist Ihr PHP-Speicherlimit in der <code>php.ini</code>?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "Hast du versucht, andere installierte Plugins zu deaktivieren?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "Hast du versucht, das Standard WordPress-Theme zu verwenden?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "Hast du die Plugin-Einstellungen geprüft?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "Hast du alle benötigten PHP-Erweiterungen installiert?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "Bekommen Sie eine leere oder unvollständige Seite in Ihrem Browser angezeigt? Haben Sie den Seiten-Quelltext angesehen und auf eventuelle schwere Fehler geprüft?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "Haben Sie Ihre PHP- und Server-Logs kontrolliert?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "Es funktioniert noch immer nicht?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "Dann eröffne bitte einen neuen Thread im %s und wir werden so schnell wie möglich darauf antworten." + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "WordPress.org Support-Forum" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "Alternativ ist auch %s-Unterstützung verfügbar." + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "Farsi" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "WP Statistics Honey Pot-Seite" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "Das ist die Honey Pot-Seite, die WP Statistics benutzt. Nicht löschen!" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "Zugriffsrechte" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "Min. Rechte zum Einsehen der Statistik" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "Min. Rechte zum Verwalten der Statistik" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "Siehe %s, um Details der WordPress-Benutzerrechte zu erfahren." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "WordPress Rollen und Berechtigungen-Seite" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "Hinweis: manage_network = Super-Admininistrator (Multisite), manage_options = Administrator, edit_others_posts = Redakteur, publish_posts = Autor, edit_posts = Mitarbeiter, read = Abonnent (jeder)." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "Jede dieser Berechtigungen vererbt ihre Rechte \"nach oben\" in einer standardmäßigen WordPress-Konfiguration. Wird z.B. \"publish_posts\" gewählt, werden die Rechte an Autoren, Redakteure, Administratoren und Super-Administratoren vererbt." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "Um mehr Freiheiten beim Verwalten von Rollen und Berechtigungen zu haben, empfiehlt sich die Verwendung eines entspr. Plugins - z.B. %s aus dem WordPress Plugin-Verzeichnis." + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "Ausnahmen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "Ausnahmen aufzeichnen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "Aktivieren" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "Diese Option zeichnet Ausnahmen für Zugriffe und den Grund, warum der Zugriff als Ausnahme zählt (z.B. Zugriff erfolgte durch einen Robot, durch eine definierte Benutzerrolle, o.Ä.), in einer eigenen Tabelle auf. Hierbei wird eine große Menge an Daten generiert. Diese kann aber hilfreich sein, um die Gesamt-Zahl an Zugriffen auf Ihre Seite zu verfolgen, und nicht nur reine Besucher-Zugriffe." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "Benutzerrollen ausschließen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "Ausschließen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "Daten der Rolle %s aus der Statistik ausschließen." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "Robots/IP-Adressen ausschließen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "Robots-Liste" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "Eine Liste an Namensmustern (ein Name pro Zeile), die verwendet werden um Robots zu erkennen. Ein Eintrag muss mindestens vier Zeichen lang sein, ansonsten wird er ignoriert." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "Auf Standardwerte zurücksetzen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "Robots-Liste bei Update aktualisieren" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "Erzwingt das Zurücksetzen der Robots-Liste auf die Standardwerte nach einem Update von WP Statistics. Wenn diese Option aktiviert ist, gehen alle benutzerdefinierten Robots, die zur Liste hinzugefügt wurden, verloren!" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "Robot-Erkennschwelle" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "Behandle Besucher mit mehr Besuchen pro Tag als hier angegeben als Robots. 0 = deaktiviert" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "IP-Adressen-Liste" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "10.0.0.0 hinzufügen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "172.16.0.0 hinzufügen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "192.168.0.0 hinzufügen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "Honey Pot" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "Verwende eine Honey Pot Seite, um Robots zu identifizieren." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "Honey Pot Seiten-ID" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "Die Seiten-ID, die für die Honey Pot Seite verwendet wird." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "Erstelle eine neue Honey Pot Seite" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "GeoIP-Ausnahmen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "Exkludierte Länder" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "Eine Liste an Länder-Kennungen (eine pro Zeile, zwei Buchstaben pro Kennung), deren Besucher aus der Statistik ausgenommen werden sollen. Verwende \"000\" (drei Nullen), um unbekannte Länder auszuschließen." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "Inkludierte Länder" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "Eine Liste an Länder-Kennungen (eine pro Zeile, zwei Buchstaben pro Kennung), deren Besucher in die Statistik mit einbezogen werden sollen. Wenn diese Liste Einträge enthält, werden NUR Benutzer aus den hier definierten Ländern berücksichtigt. Verwende \"000\" (drei Nullen), um unbekannte Länder mit einzubeziehen." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "Hostname-Ausnahmen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "Ausgeschlossene Hostnamen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "Eine Liste an vollständigen Hostnamen (z.B. \"server.example.com\", einer pro Zeile), die aus der Statistik ausgeschlossen werden sollen." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "Hinweis: Diese Option führt keine Rückwärts-DNS-Anfragen bei jedem Seitenaufruf durch, sondern speichert die jeweilige IP-Adresse für die gelisteten Hostnamen für eine Stunde. Wenn hier also dynamisch zugewiesene Hostnamen gelistet werden, kann es zu Überlappungen beim Wechsel der IP-Adressen kommen und einige Zugriffe von diesen Hostnamen dennoch in die Statistik mit einbezogen werden." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "URL-Ausnahmen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "Login-Seite" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "Die Login-Seite von der Statistik ausschließen." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "Admin-Seiten" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "Alle Seiten des Administrationsbereichs von der Statistik ausschließen." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "RSS-Feeds" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "RSS-Feeds von der Statistik ausschließen." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "browscap.ini-Einstellungen" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "browscap.ini verwenden" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "Aktiv" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "Wenn aktiviert, verwendet WP Statistics die \"browsap.ini\" zum Erkennen von Robots." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "browscap.ini aktualisieren" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "browscap.ini-Datei herunterladen" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "Speichere die Änderungen auf dieser Seite, um eine Aktualisierung herunterzuladen." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "Automat. Aktualisierung von browscap.ini" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "Nächste Aktualisierung am" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "Die Aktualisierung der \"browscap.ini\"-Datei wird ein Mal wöchentlich durchgeführt." + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "Diese Einstellung löscht das Benutzerhandbuch unwiderruflich, wenn die Einstellungen gespeichert werden. Bist du sicher??" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "Dieses Feature ersetzt IP-Adressen in der Datenbank durch generierte, eindeutige Hash-Werte. Die Einstellung \"Gesamten User Agent-String speichern\" wird automatisch deaktiviert, wenn die Einstellung zum Anonymisieren der IP-Adressen aktiviert wird. ACHTUNG: Einmal anonymisierte IP-Adressen können zu keinem späteren Zeitpunkt wiederhergestellt werden!" + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "Besucher online" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "Benutzer online" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-eo.mo b/plugins/wp-statistics/languages/wp_statistics-eo.mo new file mode 100644 index 0000000..8d1feb3 Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-eo.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-eo.po b/plugins/wp-statistics/languages/wp_statistics-eo.po new file mode 100644 index 0000000..aeea9bb --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-eo.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in Esperanto +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: +0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: eo\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "" + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "" + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "" + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "" + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "" + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "" + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "" + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "" + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "" + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "" + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "" + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "" + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "" + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "" + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "" + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "" + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "" + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "" + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "" + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "" + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "" + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "" + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "" + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "" + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "" + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-es_ES.mo b/plugins/wp-statistics/languages/wp_statistics-es_ES.mo new file mode 100644 index 0000000..85e0b7d Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-es_ES.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-es_ES.po b/plugins/wp-statistics/languages/wp_statistics-es_ES.po new file mode 100644 index 0000000..19d7a17 --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-es_ES.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in Spanish (Spain) +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-07-11 13:14:02+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: es\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "" + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "" + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "" + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "" + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "" + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "Índice de base de datos de visitas" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "Índice de paises" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "tabla de búsqueda" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "página de configuración" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "," + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "seguimiento de accesos" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "¡Convertir ahora!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "Externos" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "Piwik provee la blacklist de spamers. Está disponible en %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "Uso de la blacklist de Piwik" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "Tratar información corrupta del navegador como un bot" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "Páginas 404" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "Fecha" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "Páginas 404 excluidas" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "Excluir cualquier URL que devuelva un mensaje del tipo \" 404 - Not found\"." + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "Purgar los visitantes con más de" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "No se encontraron visitantes para purgar." + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "%s registros purgados con éxito." + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "¡El número de accesos debe ser mayor que o igual a 10!" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "Visitas a la página" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "Número de páginas" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "Número de comentarios" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "Número de spams" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "Número de usuarios" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "Promedio de posts" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "Promedio de comentarios" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "Promedio de usuarios" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "Formato del número" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "" + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "Inglés" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "Resumen de hitos" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "¿Has pensado en hacer una donación a WP Statistics?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "¡Donar ahora!" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "Cerrar" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "Seleccione la estadística que desea mostrar." + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "Nº de post" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "Período de tiempo" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "Puesto # 5" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "Puesto # 4" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "Puesto # 3" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "Puesto # 1" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "Puesto # 2" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "Tabla de visitas" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "Filtrado por" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "Alcance" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "MM/DD/AAAA" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "Forzar Inglés" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "Lista de URL omitidas" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "URL omitida" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "Últimos 365 días (año)" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "Últimos 30 Días (Mes)" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "Últimos 7 días (Semana)" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "Yahoo!" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "Yandex" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "clearch.org" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "DuckDuckGo" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "Bing" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "Baidu" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "Página de Acceso" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "Página de Administración" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "Robot" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "Nombre del host" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "Habilitar o deshabilitar esta característica" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "Buscar usuarios en línea en todos los" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "Segundo" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "Tiempo para el usuario en línea exacta verificación en el sitio. Ahora: %s segundo" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "Cadena de agente de usuario toda tienda" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "Solamente habilitado para la depuración" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "Coeficiente por visitante" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "Por cada visita para tener en cuenta varios golpes. Actualmente %s." + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "Páginas" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "Rastrear todas las páginas" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "Desactivar la columna de hits en la lista de correos/páginas" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "Misceláneo" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "Mostrar estadísticas en barra de menú" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "No" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "Si" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "Muestra las estadísticas en la barra de menú de administración" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "Ocultar admin avisos acerca de características no activos" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "Por defecto WP Statistics muestra una alerta si cualquiera de las funciones del núcleo están deshabilitado en cada página de admin, esta opción desactivará estos avisos." + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "Eliminar el manual" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "Por defecto las estadísticas WP almacena el admin manual en el directorio del plugin (~ 5 meg), si esta opción está activada se borrará ahora y durante las actualizaciones en el futuro." + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "Deshabilitar todos los buscadores no está permitido, haciendo así que generará en todos los buscadores siendo activos." + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "desactivar" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "Deshabilitar %s de recopilación de datos y presentación de informes." + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "Cartas" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "Incluir totales" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "Añada una línea total a listas con varios valores, como las referencias del motor de búsqueda" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "Configuración de GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "Servicios de localización de IP proporcionados por GeoLite2 datos creados por MaxMind, disponible desde %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "Colección GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "Para obtener más información y ubicación (país) de visitante, activar esta función." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "Actualizar su información GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "Descargar GeoIP Database" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "Actualización mensual de GeoIP DB de la programación" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "La descarga de la base de datos GeoIP programará durante 2 días después del primer martes del mes." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "Esta opción también descargará la base de datos si el tamaño del archivo local es menos de 1k (lo que generalmente significa el talón que viene con el plugin está todavía en su lugar)." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "Poblar GeoIP desaparecido después de la actualización de GeoIP DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "Actualizar cualquier dato GeoIP desaparecido después de descargar una nueva base de datos." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "Colección GeoIP está deshabilitado debido a las razones siguientes:" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "Colección GeoIP requiere PHP %s o por encima, está actualmente deshabilitado debido a la versión instalada PHP es " + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "Colección GeoIP requiere la extensión PHP cURL y no está cargada en su versión de PHP." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "Colección GeoIP requiere la extensión PHP matemáticas BC y no está cargada en su versión de PHP!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "Modo seguro de PHP detectado! GeoIP colección no es compatible con el modo seguro de PHP está activado!" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "Esto se eliminarán permanentemente los datos de la base de datos cada día, ¿estás seguro de que desea activar esta opción?" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "Días" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "El número de días para mantener estadísticas. Valor mínimo es de 30 días. Valores no válidos desactivará el mantenimiento diario." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "Direcciones de correo electrónico" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "Informes de Actualización" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "Informes estadísticos" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "Horario" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "Enviar informes a través de" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "Correo electrónico" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "Nota: Para enviar mensajes de texto SMS mensajes por favor instalación el plugin %s." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "SMS WordPress" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "Informe cuerpo" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "Usuarios conectados" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "Visitante de hoy" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "Visitas hoy" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "Ayer visitante" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "Visitas Ayer" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "Visitantes total" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "Total de visitas" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "Ninguno" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "Acerca de" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "" + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "Google" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "Desactivar el mapa" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "Desactivar la pantalla de mapa" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "General" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "Mantenimiento" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "Actualización" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "Una vez semanal" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "Una vez cada 2 semanas" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "Una vez cada 4 semanas" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "Estadísticas" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "Mostrar las estadísticas del sitio en la barra lateral." + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "Total páginas vistas" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "Total entradas" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "Total páginas" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "Total comentarios" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "Total spam" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "Total usuarios" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "Medía por artículos" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "Media por comentarios" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "Media por usuarios" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "Fecha de última entrada" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "Nombre" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "Elementos" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "Visitas ayer" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "Selecciona el tipo de motor de búsqueda" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "" + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "Estadísticas de WP" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "Estadísticas completas para su sitio de WordPress." + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "Configuración" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "Haga clic aquí para visitar el plugin en WordPress.org" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "Visita la página de WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "Haga clic aquí para calificar y revisar este plugin en WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "Tasa de este plugin" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "Estadísticas de WP - Hitos" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "Resumen" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "Búsquedas" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "Palabras de búsqueda" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "Lista de visitantes de hoy" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "Optimización" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "Manual" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "Visitante de hoy" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "Visite hoy" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "Ayer visitante" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "Ver estadísticas" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "Descargar archivo ODF" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "Descargar archivo HTML" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "Manual archivo no encontrado." + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "No tienes permisos suficientes para acceder a esta página." + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "Error al descargar GeoIP base de datos: %s - %s" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "Error no pudo abrir descargado GeoIP de base de datos para la lectura: %s" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "Error no pudo abrir la base de datos de GeoIP destino para escribir %s" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "GeoIP de base de datos actualizada!" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "Error al descargar el browscap base de datos: %s - %s" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "browscap base de datos actualizada!" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "browscap ya en la versión actual." + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "Actualización Browscap.ini en" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "10 mejores navegadores" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "Top 10 países" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "Estadística de hitos" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "Top 10 páginas" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "Visitantes recientes" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "Principales sitios de referencia" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "Referencias por motores de búsqueda" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "Resumen" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "Las últimas palabras de búsqueda" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "Top 10 de visitas de hoy" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "" + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "No se puede cargar la base de datos GeoIP, asegúrese de que lo hayas descargado en la página de configuración." + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "Actualizados %s registros GeoIP en la base de datos de visitantes." + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "datos de %s mayores de %s días purgadas con éxito." + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "No hay registros encontrados para purgar de %s!" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "Purgado de la base de datos activado" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "Por favor, seleccione un valor de más de 30 días." + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "Estadísticas de navegador" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "Haga clic para alternar" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "Navegadores" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "Navegadores por tipo" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "Plataforma" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "Navegadores por plataforma" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "versión de %s" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "Atención: La exclusión no son actualmente establecido en grabarse, abajo los resultados pueden no reflejar estadísticas actuales!" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "Estadísticas de exclusiones" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "10 días" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "20 días" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "30 días" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "2 meses" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "3 meses" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "6 meses" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "9 meses" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "1 año" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "Tabla estadística de exclusiones" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "Excluir accesos en los últimos" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "días" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "Número de golpes excluidos" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "Tabla de estadísticas Hits" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "Golpes en los últimos" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "Número de visitas y visitantes" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "Visita" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "Visitante" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "Últimas estadísticas de la palabra de búsqueda" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "#hash #" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "Mapa" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "Página" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "De" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "Todo" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "Estadísticas recientes de visitante" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "Página de tendencia para Post ID" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "Página de tendencia" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "Estadística de referencias por motores de búsqueda" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "Motores de búsqueda de los últimos" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "Referencias" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "Total" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "Principales países" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "Puesto" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "Bandera" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "País" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "Páginas principales" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "Principales tendencias de 5 páginas" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "Top 5 página tendencias estadísticas" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "Número de accesos" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "No encontró el título de página" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "Visitas" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "Agregarse pronto" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "Sitios de referencia" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "Referencias" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "Acerca de las WP Statistics Versión %s" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "Sitio web" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "Tasa y revisión" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "Más información" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "Este producto incluye datos GeoLite2 creados por MaxMind, disponible desde %s." + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "Otros" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "Mapa de visitantes diarios" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "Dirección" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "Usuarios en línea" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "Hoy" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "Ayer" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "Total diaria" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "Fecha y hora actual" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "(Ajuste)" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "Fecha: %s" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "Tiempo: %s" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "Hitos" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "Acceso denegado!" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "datos de %s agente eliminados satisfactoriamente." + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "Por favor, seleccione los elementos deseados." + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "datos de %s plataforma eliminados satisfactoriamente." + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "datos de la tabla de %s eliminados satisfactoriamente." + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "Error, %s no vaciado." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "Configuración de base de datos" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "Vuelva a ejecutar Install" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "Instale ahora!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "Si por alguna razón tu instalación de WP Statistics faltan las tablas de base de datos u otros elementos fundamentales, esto se volver a ejecutar el proceso de instalación." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "Índice de base de datos" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "Países" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "¡Actualiza ahora!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "Mayores instalaciones de WP Statistics permiten entradas duplicadas en la tabla de visitantes en un caso de esquina. Instala nuevo protegerse de esto con un índice único sobre la mesa. Para crear el índice en el instala mayor entradas duplicadas debe ser suprimido primero. Haga clic en \"Update Now\" explorará la mesa de los visitantes, eliminar entradas duplicadas y añadir el índice." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "Esta operación podría tomar mucho tiempo en instalaciones con muchas filas en la tabla de visitantes." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "Mayores instalaciones de WP Statistics permiten entradas duplicadas en la tabla de visitantes en un caso de esquina. Instala nuevo protegerse de esto con un índice único sobre la mesa." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "Felicitaciones, su instalación es ya hasta la fecha, nada que ver." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "Exportación" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "La exportación de" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "Por favor, seleccione" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "Seleccione la tabla para el archivo de salida." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "Exportar a" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "Seleccione el tipo de archivo de salida." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "Incluyen la fila de encabezado" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "Incluyen una fila de encabezado como la primera línea del archivo exportado." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "¡ Empiece ahora!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "Visitantes" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "¿Estás seguro?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "Datos" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "Mesa vacía" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "Tabla de todos los datos se perderá." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "Claro ahora!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "Purgar registros más" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "Datos de las estadísticas de usuario eliminado mayor que la cantidad de días seleccionados. Valor mínimo es de 30 días." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "Purga ahora!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "Eliminar tipos de agente de usuario" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "Eliminar agentes" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "Se perderán todos los datos de visitante para este tipo de agente." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "Eliminar ahora!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "Eliminar las plataformas" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "Se perderán todos los datos de visitante para este tipo de plataforma." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "Recursos" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "Uso de memoria en PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "Byte" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "Límite de memoria del PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "El límite de memoria un guión está autorizado a consumir, situado en php.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "Número de filas en la tabla de %s" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "Fila" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "Número de filas" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "Información de versión" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "Versión WP Statistics" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "La versión de WP Statistics que se está ejecutando." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "Versión de PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "La versión de PHP que se está ejecutando." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "Modo seguro de PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "Modo seguro de PHP está activo. No se admite el código GeoIP en modo seguro." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "Versión de jQuery" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "La versión de jQuery que se está ejecutando." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "Versión del enrollamiento" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "Enrollamiento no instalado" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "El PHP cURL versión de extensión se está ejecutando. Rizo es necesaria para el código GeoIP, si no se instala que GeoIP estará desactivada." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "Instalado" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "No está instalada" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "Información de archivo" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "Base de datos de GeoIP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "No existe archivo de base de datos." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr ", creado en " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "El tamaño del archivo y la fecha de la base de datos GeoIP." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "Archivo browscap.ini" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "archivo browscap.ini no existe." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "El tamaño del archivo y la fecha del archivo browscap.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "browscap archivo de caché" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "archivo de caché Browscap no existe." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "El tamaño del archivo y la fecha del archivo de caché browscap." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "Información del cliente" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "Cliente IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "La dirección IP del cliente." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "Agente de usuario" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "La cadena de agente de usuario cliente." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "Navegador" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "Navegador del cliente detectado" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "Versión del navegador del cliente detectada." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "Esto reemplazará todas las direcciones IP en la base de datos con los valores hash y no se puede deshacer, ¿estás seguro?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "Opciones de GeoIP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "Actualiza los datos de ubicación desconocida en la base de datos, esto puede tardar un poco" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "Direcciones IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "Direcciones IP hash" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "Reemplace las direcciones IP en la base de datos con los valores hash, usted no será capaz de recuperar las direcciones IP en el futuro para rellenar la información de ubicación después y esto puede tomar un tiempo" + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "Direcciones IP reemplazado con valores hash." + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "Instale la rutina completa." + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "Recursos e información" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "Purga" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "Base de datos" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "Actualizaciones" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "WP Statistics V %s" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "Visítenos" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "Visite nuestra nueva %s y manténgase al día sobre las últimas novedades acerca de WP Statistics." + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "sitio web" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "Tasa y revisión en WordPress.org." + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "Gracias por instalar WP Statistics, os animamos a presentar un " + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "calificación y revisión" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "encima de WordPress.org. Su opinión es muy apreciada!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "Traducciones" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "WP Statistics soporta internacionalización y animamos a nuestros usuarios a presentar las traducciones, por favor visite nuestro %s para ver el estado actual y %s si desea ayudar." + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "sitio de traducción en colaboración" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "Escríbanos" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "Apoyo" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "Sentimos que estás teniendo problemas con WP Statistics y estamos muy contentos de ayudar. Aquí están algunas cosas que hacer antes de contactarnos:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "¿Has leído el %s?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "Preguntas frecuentes" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "Manual" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "¿Ha buscado en %s sobre un problema similar?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "Foro de soporte" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "¿Tienes que buscar en Internet para cualquier mensaje de error que está recibiendo?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "Asegúrese de tener acceso a su registro de errores de PHP." + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "Y un par de cosas a revisar:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "¿Cómo está tu memory_limit en php.ini?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "¿Has intentado desactivar cualquier otros plugins que han instalado?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "¿Has probado con el tema de WordPress por defecto?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "Doble ¿has revisado la configuración del plugin?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "¿Tienes todas las extensiones PHP necesarias instaladas?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "¿Obtienes una página en blanco o incompleta Visualiza en su navegador? ¿Ver el origen de la página y buscar cualquier error fatal?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "¿Has revisado tus logs de errores de servidor web y PHP?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "¿Todavía no ha habido suerte?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "Entonces por favor abre un nuevo hilo en el %s y responderemos tan pronto como sea posible." + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "Foro de soporte de WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "Alternativamente %s ayuda también está disponible." + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "Farsi" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "Estadísticas WP de la página Honey Pot" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "Niveles de acceso" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "Requiere nivel de usuario para ver las estadísticas de WP" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "Nivel de usuario necesarios para gestionar las estadísticas WP" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "Ver el %s para obtener información detallada sobre los niveles de capacidad." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "Página de capacidades y funciones de WordPress" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "Sugerencia: manage_network = Super Admin red, manage_options = administrador, edit_others_posts = Editor, publish_posts = autor, edit_posts = contribuyente, leer = todo el mundo." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "Cada uno de los casscades arriba los derechos hacia arriba en la configuración predeterminada de WordPress. Tan por ejemplo seleccionando publish_posts concede el derecho a autores, editores, administradores y administradores de Super." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "Si usted necesita una solución más robusta para delegar el acceso que tal vez quieras ver %s en el directorio del plugin de WordPress." + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "Exclusiones" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "Exclusiones récord" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "Enable" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "Esto registrará todos los golpes excluidos en una tabla separada con las razones de por qué fue excluido, pero ninguna otra información. Esto va a generar un montón de datos pero es útil si quieres ver el número total de hits de su sitio obtiene, usuario no sólo real visitas." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "Excluir Roles de usuario" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "Excluir" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "Excluir %s papel de recopilación de datos." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "Exclusiones de IP/Robot" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "Lista de robot" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "Una lista de palabras (una por línea) que partido contra para detectar los robots. Las entradas deben tener por lo menos 4 caracteres o ignorarán." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "Restablecer por defecto" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "Actualización de la lista de fuerza robot después de actualizaciones" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "La lista de robot a restablecer por defecto después de una actualización de las estadísticas de WP lleva a cabo la fuerza. Nota Si esta opción está activada ninguna medida ha agregado a la lista de los robots se perderán." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "Tratar a los visitantes con más de esta cantidad de visitas por día como robots. 0 = desactivado." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "Lista de direcciones IP excluida" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "Añadir 10.0.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "Añadir 172.16.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "Añadir 192.168.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "Usar honeypot" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "Use la página honeypot para identificar robots." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "ID del post Honeypot" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "ID del mensaje utilizado para la página honeypot." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "Crear una nueva página honeypot" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "Sitio URL exclusiones" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "Página de login excluidas" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "Excluyen a la página de inicio de sesión para registrarse como un éxito." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "Páginas de admin excluidas" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "Excluir las páginas admin para registrarse como un éxito." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "Excluir los RSS en el registro de accesos." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "configuración de Browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "uso Browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "Activo" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "La base de datos browscap será descargado y utilizado para detectar los robots." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "Actualización browscap información" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "Descargar browscap base de datos" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "Guardar cambios en esta página para descargar la actualización." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "Actualización semanal de horario de browscap DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "Próxima actualización será" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "La descarga de la base de datos browscap se programarán por primera vez a la semana." + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "Esto eliminará el manual cuando usted guardar los ajustes, ¿estás seguro?" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "Esta característica no almacenará direcciones IP en la base de datos pero en su lugar utiliza un hash único. La string \"Store todo usuario agente\" ajuste estará desactivada si éste está seleccionado. Usted no será capaz de recuperar las direcciones IP en el futuro para recuperar información de ubicación si esta opción está activada." + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "Usuarios en línea" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "Usuario en línea" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-fa_IR.mo b/plugins/wp-statistics/languages/wp_statistics-fa_IR.mo new file mode 100644 index 0000000..49a7972 Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-fa_IR.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-fa_IR.po b/plugins/wp-statistics/languages/wp_statistics-fa_IR.po new file mode 100644 index 0000000..12cf395 --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-fa_IR.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in Persian +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2015-08-30 08:23:39+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: fa\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "" + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "" + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "" + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "" + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "شناسه برگه/نوشته برای دریافت آمار." + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "شناسه نوشته/برگه" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "ask.com" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "برای محاسبه آمارر از چارچوب زمانی strtotime () (http://php.net/manual/en/datetime.formats.php) استفاده می‌شود." + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "ردیابی بازدیدکننده" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "مجموعه GeoIP" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "شاخص پایگاه داده بازدید" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "نیازمند به روزرسانی پایگاه های داده ، لطفاً به %s رفته و %s را آپدیت نمایید." + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "شاخص پایگاه داده کشور ها" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "جستجوی جدول" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "صفحه تنظیمات" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "،" + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "ویژگی ذیل غیرفعّال شده است ، لطفاً به %s برید و %s را فعّال کنید." + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "ردیابی رکورد" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "ردیابی آنلاین کاربر" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "جدول داده های افزونه های درخواستی در پایگاه های داده وجود ندارد ، لطفاً %s را دوباره اجرا و دوباره نصب کنید %s:" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "تبدیل جدول جستجو های کامل شد ، %d ردیف اضافه شد." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "نسخه های قدیمی آمار وردپرس جستجو ها را در جدول بازدید کنندگان ثبت میکردند که میتوانید در داده های عظیم مشکلاتی ایجاد نماید. یک جدول جدید برای نگهداری این اطلاعات به روش بهینه تر ایجاد شد." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "جدول جستجو ها" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "تبدیل" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "تبدیل فوری!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "نسخه های قدیمی آمار وردپرس جستجو ها را در جدول بازدید کنندگان ثبت میکردند که میتوانید در داده های عظیم مشکلاتی ایجاد نماید. یک جدول جدید برای نگهداری این اطلاعات به روش بهینه تر ایجاد شد ، اگرچه داده های قدیمی ابتدا باید به فرمت جدید تبدیل شوند برای آنکه بتوان از آن ها استفاده نمود." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "شناسایی جفنگ" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "دریافت لیست سیاه هرزنامه های Piwik برنامه ریزی شد برای یک بار در هفته." + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "دیگر" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "تنظیمات لیست سیاه هرزنامه های Piwik." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "جدول زمان بندی هفتگی بروزرسانی پایگاه داده لیست سیاه هرزنامه های Piwik." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "دریافت پایگاه داده لیست سیاه هرزنامه های Piwik" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "بروزرسانی اطلاعات لیست سیاه هرزنامه های Piwik" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "پایگاه داده های لیست سیاه هرزنامه های Piwik دانلود و استفاده خواهد شد برای شناسایی جفنگ ها" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "لیست سیاه هرزنامه ها ارائه شده توسط Piwik از %s در دسترس است." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "استفاده از لیست سیاه هرزنامه های Piwik" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "شناسایی مرورگر های مشکوک به عنوان یک ربات" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "صفحات 404" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "تاریخ" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "شناسایی بازدید های مشکوک (بدون آدرس آی‌پی یا با اطلاعات کاربری ناقص) به عنوان یک ربات." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "نادیده گرفتن صفحات 404" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "نادیده گرفتن هر آدرسی که با خطای 404 رو به رو شده است." + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "خطا هنگام ساخت پایگاه داده GeoIP ، مطمئن شوید که شما اجازه ساخت دایرکتوری ها را در %s دارید." + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "اضافه کردن عنوان برگه به جستجو های بدون کلمه" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "پاک‌سازی بازدیدکنندگان بزرگتر از" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "رکورد" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "پاک‌سازی داده های یک بازدیدکننده زمانی که از تعداد مشخص شده بیشتر بازدید داشته باشد. این ابزار هنگامی مفید است که سایت شما بار ها توسط یک ربات مورد بازدید قرار می گیرد. این ابزار این بازدیدکننده و بازدید هایش را پاک خواهد کرد ، اگرچه بر روی بازدید صفحات تأثیری نخواهد داشت. حداقل مقدار 10 بازدید است." + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "هیچ بازدیدکننده‌ای یافت نشد." + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "%s رکورد با موفقیت پاک‌سازی شدند." + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "تعداد رکورد باید بالا تر از 10 یا مساوی آن باشد!" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "بازدید برگه‌ها" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "تعداد برگه‌ها" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "تعداد دیدگاه‌ها" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "تعداد جفنگ‌ها" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "تعداد کاربرها" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "میانگین نوشته" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "میانگین دیدگاه" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "میانگین کاربر" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "سرویس جستجو" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "سرویس دهنده جستجو برای گرفتن آمار." + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "قالب شماره" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "فرمت شماره ها برای نمایش: i18n، انگلیسی یا هیچ‌کدام." + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "انگلیسی" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "بین المللی" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "خلاصه آمار نمودار" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "کل نمودار" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "کل زمان ها" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "آیا در مورد حمایت به آمار وردپرس فکر کرده‌اید؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "حمایت مالی" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "آیا از افزونه آمار وردپرس لذت برده‌اید؟ می‌توانید علاقه خود را به افزونه در صفحه %s به ما نشان دهید!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "حمایت" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "هم‌اکنون حمایت می‌کنم!" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "بستن" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "بازدید را برای نوع نمایش انتخاب کنید." + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "آمار" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "تعداد نوشته‌ها" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "قاب زمان" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "تا" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "برو" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "رتبه #5" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "رتبه #4" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "رتبه #3" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "رتبه #1" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "رتبه #2" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "جدول بازدید‌ها" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "در نصب‌های قبلی‌تر محتواهای تکراری در جدول بازدید‌ها وجود دارد. نصب جدید با شاخص محنصر به فرد در این جدول محافظت می‌شود. برای ایجاد شاخص ابتدا باید شاخص محتواهای تکراری حذف شود. با کلیک برروی \"به‌روز رسانی\" جدول بازدید ها بررسی میشود و شاخص را اضافه می‌کند." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "این عملیات می‌تواند به دلیل ردیف‌های زیاد جدول بازدید ها کمی طول بکشد." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "نصب‌های قدیمی از آمار وردپرس به محتواهای تکراری در جدول بازدید ها اجازه نشتن می‌دهد. نصب جدید در برابر این شاخص منحصر به فرد محافظت شده است." + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "فیلتر توسط" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "از" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "MM/DD/YYYY" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "اگر نمیخواهید افزونه برای شما ترجمه شود و از زبان پیش‌فرض انگلیسی استفاده شود فعال کنید. (نیازمند بارگزاری صفحه است)" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "اجبار به انگلیسی" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "زبان‌ها" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "نکته: این گزینه از پارامتر های آدرس پشتیبانی نخواهد کرد (هرچیزی بعد از ؟)، تنها نام اسکریپت ها. ورودی های کمتر از 2 حرف نادیده گرفته خواهد شد." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "یه لیست از آدرس های محلی (به عنوان مثال /wordpress/about ، در هر خط یک مورد) برای نادیده گرفتن از مجموع آمار ها" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "لیست آدرس های نادیده گرفته شده" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "آدرس‌های محاسبه نشده" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "365 روز گذشته (سال)" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "30 روز گذشته (ماه)" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "7 روز گذشته (هفته)" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "یاهو!" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "یاندکس" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "clearch.org" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "داک‌داک‌گو" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "بینگ" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "بایدو" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "خوراک‌ها" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "نقش کاربری" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "صفحه ورود" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "صفحه مدیریت" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "ورودی‌های خودی" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "تطبیق آی‌پی" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "روبات" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "در حال حاضر هیچ کاربری در سایت آنلاین نیست." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "روبات" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "Honey Pot" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "روند آمار برگه‌ها" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "نام میزبان" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "فعال یا غیرفعال کردن این محدودیت" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "زمان بررسی برای محاسبه کاربران آنلاین هر" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "ثانیه" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "زمان برای بررسی دقیق کاربران حاضر در سایت. فعلا %s ثانیه است" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "ضبط تمام کاربر" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "نادیده گرفتن تمام تنظیمات لیست سیاه و تمامی رکورد های کاربرانی که آنلاین هستن (از جمله خودارجاع ها و ربات ها). باید تنها برای عیب یابی استفاده شود." + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "ذخیره تمامی مرورگر های کاربر" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "فعال فقط برای اشکال زدایی" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "ضریب محاسبه هر بازدیدکننده" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "ضریب محاسبه هر بازدید کننده را در آمار مشخص می‌کند. درحال حاضر %s است." + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "برگه‌ها" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "رهگیری همه برگه‌ها" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "پارامترهای نوار از URI" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "این امکان هرچیزی را پس از ؟ در URL حذف میکند." + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "غیرفعال کردن ستون بازدید در لیست برگه/نوشته(ها)" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "متفرقه" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "نمایش آمار در منوبار" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "خیر" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "بله" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "نمایش آمار در منوبار مدیریت" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "غیرفعال شدن اطلاعیه‌های مدیریت درمورد فعال بودن امکانات" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "به‌طور پیش‌فرض افزونه آمار وردپرس امکاناتی که در افزونه غیرفعال باشد را به صورت اخطار در برگه‌های مدیریت نمایان می‌کند، این گزینه این ویژگی را غیرفعال می‌کند." + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "حذف فایل راهنما" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "به طور پیش‌فرض فایل راهنمای کاربری افزونه آمار در شاخه افزونه با حجم (تقریباً 5 مگابایت) وجود دارد. اگر این گزینه فعال باشد این فایل هم اکنون حذف و هنگام بروزرسانی نیز حذف خواهد گردید." + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "موتورهای جستجو" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "از کار انداختن ثبت آمار موتورهای جستجویی که نیازی به آنها نیست، این عمل در نتیجه کل موتورهای جستجو تأثیر می‌گذارد." + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "غیرفعال" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "غیرفعال کردن %s از جمع آوری داده‌ها و گزارش." + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "نمودار" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "جمع کل" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "اضافه شدن جمع کل به نمودار آمار ورودی از موتور های جستجو" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "تنظیمات GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "سرویس ارائه‌دهنده مکان‌نمای IP با GeoLite2 ایجاد شده و توسط MaxMind ساخته شده است و در %s قابل دسترس است." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "مجموعه GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "برای دریافت اطلاعات بیشتر و موقعیت (کشور) بازدیدکننده، این امکان را فعال کنید." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "به روز رسانی اطلاعات GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "دریافت پایگاه‌داده GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "برنامه‌ریزی به‌روزرسانی ماهیانه پایگاه‌داده‌ی GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "دریافت پایگاه‌داده‌ی GeoIP در 2 روز بعد از اولین سه‌شنبه در هرماه." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "این امکان حتی داده‌های کمتر از 1 کیلوبایت را نیز دریافت می‌کند (که به معنای داده‌های همراه افزونه است)." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "جمعیت‌های از دست رفته GeoIP بعد از به‌روز سانی پایگاه‌داده‌ی GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "بروزرسانی هر داده GeoIP فراموش شده ای بعد از دانلود یک پایگاه داده جدید" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "کد کشور برای آدرس های IP خصوصی" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "استاندارد دو کد بین المللی نامه کشور (به عنوان مثال. ایالات متحده = ایالات متحده، CA = کانادا، و غیره) برای خصوصی (غیر قابل دسترسی) آدرس IP (به عنوان مثال. 10.0.0.1، 192.158.1.1، 127.0.0.1، و غیره). استفاده از "000" (سه صفر) به استفاده از "ناشناخته" به عنوان کد کشور." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "مجموعه GeoIP با توجه به دلایل زیر غیرفعال شده است:" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "مجموعه GeoIP به PHP نسخه %s و بالاتر نیاز دارد، در حال حاضر با توجه به پایین بودن نسخه PHP شما، غیرفعال است" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "مجموعه‌ی GeoIP نیاز به ماژول cURL در PHP دارد و نمی‌تواند در نگارش PHP شما بارگزاری شود!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "مجموعه‌ی GeoIP نیاز به ماژول BC Math در PHP دارد و نمی‌تواند در نگارش PHP شما بارگزاری شود!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "حالت ایمنی PHP شناسایی نشد! مجموعه GeoIP توسط حالت ایمنی PHP پشتیبانی نمی‌شود!" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "این درخواست داده‌های قدیمی را برای همیشه پاک می‌کند. برای فعال سازی آن مطمئن هستید؟" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "روز" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "تعداد روزها برای حفظ آمار. حداقل مقدار 30 روز است. مقدارهای نامعتبر روزانه غیرفعال می‌شوند." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "تنظیمات متداول گزارش" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "آدرس‌های پست‌الکترونیک" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "برای دریافت ایمیل گزارش، آدرس های ایمیل را با ویرگول لاتین جدا کنید." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "بروزرسانی گزارش" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "Browscap" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "ارسال گزارش زمانیکه browscap.ini به‌روز شد." + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "ارسال گزارش زمانیکه پایگاه‌داده GeoIP به‌روز شد." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "پاک‌سازی" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "ارسال گزارش زمانیکه پایگاه‌داده پاک‌سازی شد." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "ارتقاء" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "ارسال گزارش زمانیکه افزونه به‌روز شد." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "گزارش آماری" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "زمان‌بندی" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "چگونگی دریافت گزارش آمار را انتخاب کنید." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "ارسال از طریق" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "پست الکترونیک" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "پیامک" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "روش تحویل گزارش آمار را انتخاب کنید." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "توجه: برای ارسال اس ام اس متن پیام لطفا پلاگین %s نصب کنید." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "اس ام اس وردپرس" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "متن بدنه گزارش" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "محتوای گزارش را وارد کنید." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "هر کدکوتاهی توسط وردپرس شما پشتیبانی میشود. کدهای کوتاه در افزونه آمار (لیست کدها در راهنمای کاربری موجود است) در بدنه‌ی متن پشتیبانی می‌شوند. نمونه‌هایی برای مثال:" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "کاربران حاضر" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "بازدیدکننده امروز" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "بازدید امروز" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "بازدید کننده دیروز" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "بازدید دیروز" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "کل بازدیدکنند‌گان" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "کل بازدید ها" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "هیچ" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "درباره" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "پیشخوان" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "موارد ذیل برای تمامی کاربران همگانی هست." + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "غیرفعال کردن ابزارک پیشخوان" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "غیرفعال کردن ابزارک‌ها در پیشخوان" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "ویرایش برگه/نوشته" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "غیرفعال کردن ابزارک بازدید در برگه/نوشته" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "غیرفعال ابزارک در نوشته/برگه" + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "گوگل" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "غیرفعال کردن نقشه" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "غیرفعال کردن نمایش نقشه" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "حذف افزونه آمار وردپرس" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "حذف‌کردن افزونه آمار وردپرس پاک کردن تنظیمات داده‌ها نخواهد بود، با استفاده از این گزینه می‌توانید تمامی اطلاعات (داده‌ها و جدول‌ها)ی افزونه را پاک کنید." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "پاک سازی در هنگام بارگزاری صفحه پس از یک‌بار ثبت تنظیمات انجام می شود. به هرحال افزونه آمار وردپرس در منوی مدیریت تا زمانی که بقیه صفحه اجرا شده باشد، نشان داده می‌شود." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "پاک کردن داده‌ها و تنظیمات" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "حذف" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "حذف داده‌ها و تنظیمات، این عمل غیرقابل برگشت است." + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "عمومی" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "اطلاعیه‌ها" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "پیشخوان/در یک نگاه" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "تعمیر و نگه‌داری" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "حذف" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "به‌روز رسانی" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "یکبار در هفته" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "هر 2 هفته" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "هر 4 هفته" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "آمار" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "نمایش آمار سایت در ابزارک." + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "کل بازدید برگه‌ها" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "کل نوشته‌ها" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "کل برگه‌ها" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "کل دیدگاه‌ها" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "کل جفنگ‌ها" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "کل کاربرها" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "میانگین نوشته‌ها" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "میانگین دیدگاه‌ها" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "میانگین کاربرها" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "تاریخ به‌روزشدن سایت" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "نام" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "آیتم‌ها" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "بازدید دیروز" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "انتخاب نوع موتورجستجو" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "افزونه آمار وردپرس حذف شد، لطفاً افزونه را غیرفعال و پاک کنید." + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "آمار وردپرس" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "آماری کامل برای سایت وردپرسی شما." + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "تنظیمات" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "برای مشاهده افزونه در Wordpress.org کلیک کنید." + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "مشاهده برگه‌ی Wordpress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "برای دادن امتیاز و بررسی افزونه در Wordpress.org کلیک کنید." + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "امتیاز به افزونه" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "آمار وردپرس - بازدید" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "مرور کلی" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "آنلاین" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "ارجاع‌دهنده‌ها" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "جستجوها" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "کلمات جستجو شده" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "برترین بازدیدکنندگان" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "بهینه سازی" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "راهنما" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "سایت" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "تنظیمات" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "بازدید کننده امروز" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "بازدید امروز" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "بازدید کننده دیروز" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "نمایش آمار" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "دریافت فایل ODF" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "دریافت فایل HTML" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "راهنما یافت نشد." + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "شما مجوز کافی برای مشاهده‌ی این قسمت را ندارید." + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "افزونه آمار وردپرس نگارش %s نصب شده است" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "خطای دریافت پایگاه‌داده GeoIP از %s: - %s" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "خطای بازشدن در هنگام دریافت پایگاه‌داده GeoIP برای خواندن: %s" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "خطای بازشدن در هنگام دریافت پایگاه‌داده GeoIP برای نوشتن: %s" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "پایگاه‌داده GeoIP با موفقیت به‌روز شد!" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "GeoIP به‌روز شد در" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "دانلود پایگاه داده browscap از خطا: %s - %s" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "browscap پایگاه داده با موفقیت به روز!" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "پایگاه داده browscap به روز شکست خورده! فایل ذخیره سازی بیش از حد بزرگ، رجوع به browscap.ini قبلی." + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "پایگاه داده browscap به روز شکست خورده! browscap.ini جدید است اشتباه identifing عوامل کاربر به عنوان خزنده، رجوع به browscap.ini قبلی." + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "browscap در حال حاضر در نسخه فعلی!" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "Browscap.ini به روز رسانی شد" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "بازدید دریک نگاه" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "10 مرورگر برتر" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "10 کشور برتر" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "بازدیدکنندگان امروز" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "آمار بازدید ها" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "10 برگه برتر" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "آخرین بازدیدکنندگان" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "برترین ارجاع دهنده‌ها" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "ورودی‌ موتور های جستجو" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "خلاصه" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "آخرین کلمات جستجو شده" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "10 بازدیدکنندگان برتر امروز" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "این پست هنوز منتشر نشده است." + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "قادر به بارگزاری پایگاه‌داده GeoIP نیست، مطمئن شوید در برگه‌ی تنظیمات دریافت می‌شود." + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "%s رکورد GeoIP در پایگاه داده به‌روز شد." + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "%s داده های قدیمی تر از روز %s با موفقیت پاک‌سازی است." + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "هیچ رکورد یافت نشد برای پاک‌سازی از %s!" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "بانک اطلاعات هرس در" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "لطفاً مقدار بیشتر از 30 روز انتخاب کنید." + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "آمار مرورگر ها" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "برای باز و بستن کلیک کنید" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "مرورگر ها" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "مرورگر ها براساس نوع آن ها" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "پلت‌فرم" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "مرورگر ها براساس پلت‌فرم" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "نسخه %s" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "توجه: در حال حاضر استثنائات برای رکوردها تنظیم نشده‌اند. نتایج زیر ممکن است آمار فعلی را منعکس نکند." + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "استثنائات آمار" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "10 روز گذشته" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "20 روز گذشته" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "30 روز گذشته" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "2 ماهه گذشته" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "3 ماهه گذشته" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "6 ماهه گذشته" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "9 ماهه گذشته" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "1 ساله گذشته" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "نمودار آمار استثنائات" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "بازدید آخرین استثنائات" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "روز گذشته" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "تعداد بازدید استثنائات" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "نمودار آمار بازدید ها" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "آخرین بازدید ها در" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "تعداد بازدید و بازدید کننده" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "بازدید" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "بازدیدکننده" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "آخرین آمار کلمات جستجو شده" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "#hash#" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "نقشه" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "صفحه" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "از" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "همه" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "آخرین آمار بازدیدکنندگان" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "کاربران حاضر" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "آنلاین شده در" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "برگه تمایل برای شناسه نوشته‌ها" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "برگه تمایل" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "آمار ورودی از موتورهای جستجو" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "آخرین ورودی‌‌ها از موتور های جستجو در" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "تعداد ورودی‌ها" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "کل" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "برترین کشورها" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "رتبه" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "پرچم" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "کشور" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "تعداد بازدیدکننده" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "برترین برگه‌ها" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "5 برگه برتر" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "برترین بازدید 5 برگه" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "تعداد بازدید" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "عنوان برگه یافت نشد" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "بازدید ها" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "به زودی اضافه می شود" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "سایت های ارجاع دهنده از" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "ارجاع" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "100 بازدیدکنندگان برتر امروز" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "درباره افزونه آمار وردپرس، نسخه %s" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "وب‌سایت" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "رتبه بندی و بازبینی" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "اطلاعات بیشتر" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "این محصول شامل داده‌های GeoLite2 می‌باشد که توسط MaxMind، ایجاد شده و در %s قابل دسترس می‌باشد." + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "دیگر" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "بازدیدکنندگان امروز برروی نقشه" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "آدرس" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "کاربر(های) حاضر" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "امروز" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "دیروز" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "کل امروز" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "تاریخ و زمان امروز" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "(تنظیم)" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "تاریخ: %s" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "زمان: %s" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "بازدید ها" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "آی‌پی" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "عامل کاربر" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "نگارش" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "دسترسی غیرمجاز!" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "%s عامل داده ها با موفقیت حذف." + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "داده‌های مرورگر برای حذف شدن یافت نشد!" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "لطفا موارد مورد نظر را انتخاب کنید." + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "%s از اطلاعات پلت‌فرم ها پاک شد." + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "پلت‌فرم های مرورگر برای حذف شدن یافت نشد!" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "اطلاعات جدول %s با موفقیت حذف." + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "خطا! %s خالی نیست!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "راه اندازی پایگاه داده" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "دوباره نصب کردن" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "نصب فوری!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "اگر به دلایلی نصب افزونه آمار ناقص انجام شده است و پایگاه های داده یا دیگر هسته ها وجود ندارد، این ابزار دوباره روند نصب را اجرا خواهد کرد." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "شاخص پایگاه‌داده" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "کشورها" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "بروزرسانی کن!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "در نصب‌های قدیمی افزونه آمارگیر داده‌های تکراری در گوشه‌ای از جدول بازدیدکنند‌‌گان ایجاد می‌شدند. نصب‌های جدیدتر در رابطه با این مورد توسط یک فهرست شاخص محافظت شده‌اند. برای ایجاد یک فهرست شاخص در نصب‌های قدیمی ابتدا باید داده‌های تکراری را پاک کنید. با کلیک برروی \"به روز رسانی\" ابتدا جدول بازدیدکننده‌گان را بررسی و سپس داده‌های تکراری را حذف و فهرست را اضافه می‌کند." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "این عملیات زمان زیادی برای نصب تعدادی ردیف‌ها در جدل بازدیدکنندگان صرف می کند." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "در نصب‌های قدیمی افزونه آمارگیر داده‌های تکراری در گوشه‌ای از جدول بازدیدکنند‌‌گان ایجاد می‌شدند. نصب‌های جدیدتر در رابطه با این مورد توسط یک فهرست شاخص محافظت شده‌اند." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "تبریک می‌گویم، در حال حاضر نصب شما به‌روز است و مشکلی ندارد." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "استخراج" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "استخراج از" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "لطفا انتخاب کنید" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "جدول مورد نظر برای تهیه فایل خروجی را انتخاب کنید." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "استخراج به شکل" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "نوع فایل خروجی را انتخاب کنید." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "شامل بودن سربرگ ردیف" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "شامل شدن سربرگ ردیف در خط اول فایل برون‌بری شده." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "شروع کن!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "مقادیر تاریخچه" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "نکته: همانطوری که پایگاه‌داده را پاک سازی کردید، برای نمایش اعداد صحیح باید صفحه را مجدداً بارگزاری کنید." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "بازدیدکنندگان" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "تعداد تاریخچه بازدیدکنندگان (مقدار فعلی %s است)." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "تعداد تاریخچه بازدید ها (مقدار فعلی %s است)." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "بروزرسانی کن!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "آیا مطمئن هستید؟" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "داده ها" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "خالی کردن جدول" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "تمامی داده های جدول از بین خواهد رفت." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "پاک کن!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "پاک‌سازی رکوردهای قدیمی‌تر از" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "انتخاب روزهای قبل برای حذف داده‌های آماری کاربری. حداقل مقدار 30 روز است." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "هم‌اکنون پاک‌سازی کن!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "حذف نوع سیستم عامل کاربر" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "حذف سیستم عاملها" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "تمامی داده های مرورگر بازدیدکننده از بین خواهد رفت." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "پاک کن!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "حذف پلت‌فرم ها" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "تمامی داده های پلت‌فرم های بازدیدکننده از بین خواهد رفت." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "منابع" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "حافظه استفاده شده در PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "بایت" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "محدودیت حافظه PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "تنظیم محدودیت حافظه برای اسکریپت در php.ini قرار دارد." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "تعداد ردیف ها در جدول %s" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "ردیف" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "تعداد ردیف‌های موجود" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "اطلاعات نگارش" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "نگارش افزونه آمار" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "نگارش افزونه آمار در حال اجرای شما." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "نگارش PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "نگارش PHP در حال اجرای شما." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "حالت ایمن PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "حالت ایمنی PHP فعال است. کدهای GeoIP در حالت امن پشتیبانی نمی‌شوند." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "نگارش جی‌کوئری" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "نگارش جی‌کوئری در حال اجرای شما." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "نسخه cURL" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "cURL نصب نیست" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "ماژول cURL در PHP شما در حال اجراست. اگر نصب نیست GeoIP غیرفعال خواهد شد." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "نصب شده" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "نصب نشده" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "اطلاعات پرونده" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "پایگاه داده GeoIP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "فایل پایگاه‌داده وجود ندارد." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr "، در ایجاد " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "اندازه پرونده و تاریخ پایگاه داده GeoIP." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "فایل browscap.ini" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "فایل browscap.ini وجود ندارد." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "اندازه فایل و تاریخ فایل browscap.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "فایل حافظه پنهان browscap" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "پرونده حافظه پنهان در browscap وجود ندارد." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "اندازه فایل و تاریخ فایل حافظه پنهان browscap." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "اطلاعات کاربری" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "آی‌پی کاربر" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "آدرس آی‌پی کاربر." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "عامل کاربری" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "رشته‌ی عامل کاربری" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "مرورگر" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "مرورگر شناسایی شده کاربر." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "نسخه شناسایی شده مرورگر کاربر." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "پلت‌فرم شناسایی شده کاربر." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "همه آدرس‌های آی‌پی در پایگاه‌داده با مقادیر هش جایگزین می‌شود و قابل برگشت نیست، آیا مطمئن هستید؟" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "تنظیمات GeoIP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "دریافت بروزرسانی برای موقعیت ها و کشور ها، ممکن است انجام این عمل کمی طول بکشد." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "آدرس های آی‌پی" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "هش‌کردن آدرس آی‌پی" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "جایگزینی آدرس آی‌پی ها با مقادیر هش شده ، شما قادر به بازیابی آدرس آی‌پی ها در آینده نخواهید بود. همچنین این روند ممکن است مدتی به طول بینجامد." + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "آدرس آی‌پی با مقادیر هش جایگزین می‌شود." + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "نصب کامل شد." + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "منابع/اطلاعات" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "پاک‌سازی" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "پایگاه‌داده" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "به‌روز رسانی‌ها" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "تاریخچه" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "آمار وردپرس نگارش %s" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "مشاهده ما" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "به %s جدید ما مراجعه کنید تا از آخرین اخبار و اطلاعیه‌های افزونه آمار وردپرس مطلع شوید." + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "وب سایت" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "امتیاز و بررسی در Wordpress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "با تشکر از شما بابت نصب افزونه آمار وردپرس، توصیه می‌کنیم به" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "رتبه بندی و بازبینی" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "سر بزنید. نقطه نظرات شما قابل قدردانیست!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "ترجمه‌ها" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "افزونه آمار وردپرس از بین المللی شدن حمایت می کند و ما شما را به ارائه ترجمه تشویق می‌کنیم, برای مشاهده وضعیت ترجمه‌ها به %s مراجعه کنید و اگر میخواهید به ما کمک کنید به %s مراجعه کنید." + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "سایت همکاری در ترجمه" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "تماس با ما" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "پشتیبانی" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "اگر با افزونه آمار وردپرس مشکل دارید، ما متأسفیم و خوشحال می‌شویم شما را کمک کنیم. می‌توانید از بخش‌های زیر اقدام کنید:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "آیا شما %s را خونده‌اید؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "سوالات متداول" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "کتابچه راهنمای کاربر" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "در %s برای موضوع‌های مشابه جستجو کرده‌اید؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "انجمن پشتیبانی" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "آیا برای هر خطا در اینترنت جستجو کرده‌اید؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "آیا مطمئن هستید به گزارش‌ خطاهای PHP دسترسی دارید؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "و به چند نکته دقت کنید:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "مقدار memory_limit در php.ini را بررسی کرده‌اید؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "سعی کردید افزونه‌های نصب شده دیگر را غیرفعال کنید؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "سعی کردید پوسته پیش‌فرض وردپرس را استفاده کنید؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "آیا تنظیمات افزونه را مجدد بررسی کرده‌اید؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "آیا الزامات مربوط به اکستنشن‌های PHP را نصب کرده‌اید؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "آیا یک صفحه خالی یا یک صفحه ناقص در مروگر شما مشاهده می‌شود؟ آیا سورس صفحه را مشاهده و خطای رخ داده را بررسی کرده‌اید؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "آیا PHP و گزارش‌ خطاهای سرور وب خود را بررسی کرده‌اید؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "با این حال، شانشی برایتان نیست؟" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "سپس لطفا یک تاپیک جدید در %s را باز کنید تا به سوال شما در اسرع پاسخ داده شود." + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "انجمن پشتیبانی WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "انجمن پشتیبانی %s ما، راه دیگری است که همیشه در دسترس است." + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "فارسی" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "صفحه آمار WP دیگ عسل" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "این گلدان عسل برای آمار WP برای استفاده، حذف نمی باشد." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "سطح دسترسی" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "سطح کاربری مورد نیاز برای مشاهده آمارگیر وردپرس" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "سطح کاربری مورد نیاز برای مدیریت آمارگیر وردپرس" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "مشاهده جزئیات %s سطح توانایی." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "صفحه وردپرس نقش و توانایی" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "نکته: manage_network = مدیر شبکه، manage_options = مدیر، edit_others_posts = ویرایشگر، publish_posts = نویسنده، edit_posts = مشارکت‌کننده، read = همه." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "هریک از موارد به‌صورت پیش‌فرض در وردپرس تعریف شده‌اند. به‌عنوان مثال با انتخاب publish_posts به نویسنده‌گاه، ویرایشگر‌ها، مدیر و مدیرکلی دسترسی اعطا می‌گردد." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "اگر نیاز به راه‌حل‌های بیشتری در رابطه با نقش‌های کاربری وردپرس داشتید، نگاهی به افزونه %s بیندازید." + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "استثنائات" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "رکوردهای استثناء" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "فعال" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "نادیده گرفتن یکسری از بازدید ها از آمار و نگه‌داری از آنها با ذکر دلیل در یک جدول دیگر. می‌تواند مقدار زیادی داده تولید شود، درعوض مفید خواهد بود و می‌توانید آمار دقیق بازدید و بازدیدکنندتان را به دست آورید." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "محروم‌کردن نقش‌های کاربری" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "محروم" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "محروم کردن نقش کاربری %s از محاسبه در آمار" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "محرومیت‌های آی‌پی/ربات" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "لیست روبات‌ها" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "یک لیست از کلمات برای مقایسه و شناسایی ربات‌ها (در هر خط یک کلمه وارد شود). ورودی‌ها باید حداقل دارای 4 حرف باشد." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "بازگشت به حالت پیش‌فرض" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "بروزرسانی لیست روبات‌ها پس از ارتقاء" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "لیست روبات‌ها بعد از بروزرسانی ریست می‌شود. توجه داشته باشید اگر این گزینه فعال باشد لیست سفارشی شما از دست خواهد رفت." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "آستانه سفر ربات" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "در نظر گرفتن بازدیدکنندگان دارای بیشتر از این تعداد در روز به عنوان یک ربات. 0 = غیرفعال" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "لیست آدرس آی‌پی‌های محروم" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "افزودن 10.0.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "افزودن 172.16.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "افزودن 192.168.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "استفاده از تله گلدان عسل" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "استفاده از یه صفحه به عنوان تله گلدان عسل برای شناسایی ربات ها." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "شناسه نوشته تله گلدان عسل" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "استفاده از شناسه نوشته برای صفحه تله گلدان عسل." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "ایجاد یک صفحه تله گلدان عسل جدید" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "GeoIP با استثنائات" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "لیست کشورهای نادیده گرفته شده" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "لیستی از کد های کشور ها (یک کد در هر خط ، هرکدام دو حرف) برای نادیده گرفتن در آمار ها. استفاده از \"000\" (سه صفر) برای نادیده گرفتن کشور های مجهول" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "لیست کشورها شامل" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "لیستی از کد های کشور ها (یک کد در هر خط ، هرکدام دو حرف) برای شامل شدن در آمار ها، اگر این لیست خالی نباید، تنها بازدیدکنندگان از کشور های مشخص شده محاسبه خواهند شد. استفاده از \"000\" (سه صفر) برای نادیده گرفتن کشور های مجهول" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "محرومیت هاست" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "لیست هاست های نادیده گرفته شده" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "یک لیست واجد شرایط از هاستینگ ها (به عنوان مثال: server.example.com ، یک مورد در هر خط) برای نادیده گرفته شدن در مجموع آمار ها." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "توجه: این گزینه جستجوی DNS نخواهد کرد برای هرصفحه ای که بارگزاری میشود اما در عوض حافظه پنهان آدرس آی‌پی هاستینگ ارائه خواهد شد برای یک ساعت. اگر شما به صورت داینامیکی نادیده میگیرید هاست ها را ممکن است شما پیدا کنید درجه هایی از همپوشانی را زمانی که هاست تغییر دهد آدرس آی‌پی اش را و زمانی که حافظه پنهان بروزرسانی میشود چند محاسبه بازدید را نتیجه میدهد" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "استثنائات آدرس" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "نادیده گرفتن صفحه ورود" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "نادیده گرفتن برگه‌ی ورود برای نام‌نویسی به‌عنوان محاسبه در آمار" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "نادیده گرفتن صفحات مدیریت" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "نادیده گرفتن برگه‌های مدیریت برای نام‌نویسی به‌عنوان محاسبه در آمار" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "نادیده گرفتن خوراک RSS" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "حذف RSS خوراک برای ثبت نام به عنوان یک رسید." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "تنظیمات browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "استفاده از browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "فعال" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "پایگاه داده browscap را دانلود و استفاده برای شناسایی ربات." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "Browscap به روز رسانی اطلاعات" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "دانلود browscap پایگاه داده" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "ذخیره‌ی تغییرات در این برگه و دریافت به‌روز رسانی" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "برنامه به روز رسانی هفتگی browscap دسی بل" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "بروزرسانی بعدی خواهد بود" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "دانلود بانک اطلاعاتی browscap برای یک بار در هفته طوری زمانبندی خواهد شد." + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "پس از ذخیره‌ی صفحه، فایل راهنما حذف خواهد شد، آیا مطمئن هستید؟" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "این ابزار ذخیره نخواهد کرد آدرس های آی‌پی را در پایگاه داده ها اما در عوض استفاده خواهد کرد از یک هش منحصر به فرد. اگر این ابزار انتخاب شود نمایش داده خواهد شد \"ذخیره تمام رشته عامل های کاربری\". شما قادر به بازگردانی اطلاعات نخواهید بود اگر این امکان فعال باشد." + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "کاربران حاضر" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "کاربران حاضر" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-fr_FR.mo b/plugins/wp-statistics/languages/wp_statistics-fr_FR.mo new file mode 100644 index 0000000..93c3926 Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-fr_FR.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-fr_FR.po b/plugins/wp-statistics/languages/wp_statistics-fr_FR.po new file mode 100644 index 0000000..2387260 --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-fr_FR.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in French (France) +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-10-18 19:43:13+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: fr\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "Les 365 derniers jours" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "Les 30 derniers jours" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "Les 7 derniers jours" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "PHP IPv6 actif" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "Est-ce que PHP est compilé avec le support de IPv6. Si ce n’est pas le cas, vous pourrez trouver des messages d’alertes dans vos logs PHP quand vous recevrez des headers HTTP contenant des adresses IPv6." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "Liste des adresses IP ou subnet masks (un par ligne) à exclure de la collecte des statistiques." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "Pour les adresses IPv4, les formats 192.168.0.0/24 et 192.168.0.0/255.255.255.0 sont acceptés. Pour spécifier une adresse IP seule, utilisez une valeur de subnet de 32 ou 255.255.255.255." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "Pour les adresses IPv6 utiliser le format fc00::/7." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "Ajouter fc00::/7" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "Visites du jour" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "Visiteurs du jour" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "Visites d'hier" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "Visiteurs d'hier" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "Visites des 7 derniers jours" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "Visites des 30 derniers jours" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "Visites des 365 derniers jours" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "Total des visites" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "Total des visiteurs" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "Visites d’hier" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "Aucun widget correspondant n’a été trouvé !" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "Zlib gzopen()" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "Si la fonction gzopen() est installée. gzopen() est nécessaire pour que la base de données GeoIP puisse être téléchargée avec succès." + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "Erreur, les fonctions download_url() ou gzopen() n’existent pas !" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "Erreur de réglage des permissions du dossier de la base de données GeoIP, assurez-vous que votre serveur web a la permission d’écrire dans les dossiers de : %s" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "— Vous utilisez une version de PHP non prise en charge." + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "WP Statistics Désactivé" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "WP Statistics a détecté une version %s de PHP, qui n’est pas prise en charge, WP Statistics requiert PHP version %s ou supérieure !" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "Veuillez contacter votre fournisseur d’hébergement pour passer à une version prise en charge, ou désactiver WP Statistics pour supprimer ce message." + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "Erreur : Widget non trouvé !" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "Chargement en cours…" + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "Rechargement en cours…" + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "Top Visiteurs" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "page optimisation" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "Activé" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "Purger les données anciennes tous les jours" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "Une routine WP Cron sera exécutée tous les jours pour purger toutes les données de plus de un certain nombre de jours." + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "Purger les données de plus de" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "Purger le compte de visiteurs à grand nombre de hits tous les jours" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "Une routine WP Cron sera exécutée tous les jours pour purger toutes les données statistiques des utilisateurs lorsque ces utilisateurs ont plus que le nombre défini de hits en un jour (donc ils sont probablement des bot)." + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "Le nombre de hits nécessaires pour supprimer le visiteur. La valeur minimale est 10 hits. Les valeurs non valides désactiveront la maintenance quotidienne." + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "L’ID de l’article/page dont on veut obtenir les statistiques." + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "ID d’article/page" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "Ask.com" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "La plage de temps pour laquelle on veut obtenir des statistiques, strtotime() (http://php.net/manual/fr/datetime.formats.php) sera utilisé pour la calculer. Utiliser \"total\" pour obtenir toutes les dates enregistrées." + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "suivi des visiteurs" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "collecte GeoIP" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "index de la base de données des visites" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "Des mises à jour de la base de données sont nécessaires, veuillez aller à %s et mettre à jour les éléments suivants : %s" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "Index de la base de données des pays" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "table de recherche" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "page de " + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "," + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "Les options suivantes sont désactivées, veuillez aller à %s et les activer : %s" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "suivi des hits" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "suivi des utilisateurs en ligne" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "Le(s) table(s) des extensions suivantes n’existent pas dans la base de données, veuillez réexécuter la routine d’installation %s : %s" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "Conversion de la table des recherches terminée, %d rangs ajoutés." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "Les versions anciennes de WP Statistiques stockent les détails des recherches des visiteurs, ce qui peut provoquer des problèmes de performances sur les grosses bases de données. Une nouvelle table a été créée pour contenir cette information d’une manière plus optimisée" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "Table de recherche" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "Convertir" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "Convertir maintenant !" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "Les versions anciennes de WP Statistiques stockent les détails des recherches des visiteurs, ce qui peut provoquer des problèmes de performances sur les grosses bases de données. Une nouvelle table a été créée pour contenir cette information d’une manière plus optimisée, néanmoins les anciennes données doivent tout d’abord être converties dans le nouveau format avant de pouvoir utiliser la nouvelle table." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "Spam de référent" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "Le téléchargement de la base de données de liste noire de référents spammeurs Piwik sera programmé une fois par semaine." + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "Externes" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "Réglages de liste noire de référents spammeurs Piwik" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "Programmer une mise à jour hebdomadaire de la base de données de liste noire de référents spammeurs Piwik" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "Télécharger la liste noire de référents spammeurs Piwik" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "Mettre à jour l’information de liste noire de référents spammeurs Piwik" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "La liste noire de référents spammeurs de Piwik sera téléchargée et utilisée pour détecter le spam de référents." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "La liste noire de référents spammeurs est fournie par Piwik, disponible sur %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "Utilisation de la liste noire de référents spammeurs de Piwik" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "Traiter les navigateurs corrompus comme des bots" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "Pages 404" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "Date" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "Traiter tout visiteur avec une information sur le navigateur corrompue (adresse IP manquante ou chaîne agent utilisateur vide) comme un robot." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "Pages d’erreur 404 exclues" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "Exclure toute URL qui retourne un message \"404 - Not Found\"." + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "Erreur en créant le dossier de la base de données GeoIP, assurez-vous que votre serveur web a la permission de créer des dossiers dans : %s" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "Ajouter le titre de la page aux mots recherchés vides" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "Si un moteur de recherche est identifié comme le référent mais qu’il n’inclut pas la requête de recherche, cette option affichera le titre de la page entouré de guillemets et précédé de \"~:\" comme requête de recherche pour aider à identifier ce que le visiteur pouvait rechercher." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "Purger tous les visiteurs avec plus que" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "hits" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "Effacer les données de statistiques utilisateurs quand un utilisateur a plus que le nombre défini de hits par jour. Cela peut être utile pour nettoyer des données anciennes quand votre site a été visité par un bot. Cela supprimera le visiteur et ses hits sur le site, mais cela ne supprimera pas les hits individuels sur les pages parce que cette donnée n’est pas enregistrée en fonction de l’utilisateur. La valeur minimum est 10 hits." + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "Pas de visiteurs à purger trouvés." + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "%s enregistrements purgés avec succès." + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "Le nombre de hits doit être égal ou supérieur à 10 !" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "Visites sur les pages" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "Compte des pages" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "Compte des commentaires" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "Compte du spam" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "Compte des utilisateurs" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "Moyenne des articles" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "Moyenne des commentaires" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "Moyenne des utilisateurs" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "Fournisseur de recherche" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "Le fournisseur de recherche sur lequel faire des statistiques." + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "Format des nombres" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "Le format dans lequel afficher les nombres : i18n, anglais, aucun." + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "Anglais" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "International" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "Résumé des statistiques de hits" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "Total du graphique" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "Total depuis le début" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "Avez-vous pensé à faire un don à WP Statistics ?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "Faire un don" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "Vous avez envie de montrer votre appréciation de WP Statistics ? Visitez notre page %s et démontrez-nous votre affection !" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "don" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "Faites un don maintenant !" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "Fermer" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "Sélectionnez la statistique que vous voulez afficher." + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "Statistique" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "Compte des articles" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "Période de temps" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "jusqu'à" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "Aller" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "Rang #5" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "Rang #4" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "Rang #3" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "Rang #1" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "Rang #2" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "Tableau des visites" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "Les versions anciennes de WP Statistics comptabilisent des doublons dans le tableau des visites dans certains cas particuliers. Les versions plus récentes disposent d’un index pour éviter ces doublons. Pour créer l’index sur l'ancienne version, les entrées en double doivent être d'abord supprimées. En cliquant sur \"Mettre à jour maintenant !\" vous allez analyser la table des visiteurs, supprimer les entrées dupliquées et ajouter l’index." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "Cette opération peut prendre un certain temps sur les installations avec de nombreuses lignes dans la table de visites." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "Les versions anciennes de WP Statistics comptabilisent des doublons dans le tableau des visites dans certains cas particuliers. Les versions plus récentes disposent d’un index pour éviter ces doublons." + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "Filtré par" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "Intervalle" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "MM/JJ/AAAA" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "Ne pas utiliser les traductions et utiliser la version anglaise par défaut pour WP Statistics à la place (nécessite deux rechargements de page)" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "Forcer l’anglais" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "Langues" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "Remarque : cette option ne prendra pas en compte les paramètres de l'URL (tout ce qui est après le ?), seulement le nom du script. Les entrées comprenant moins de deux caractères seront ignorées." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "Une liste d’URL locales (ex. /wordpress/about, une par ligne) à exclure de la collecte des statistiques." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "Liste des URL Exclues" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "URL Exclues" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "365 derniers jours (Année)" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "30 derniers jours (Mois)" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "7 derniers jours (Semaine)" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "Yahoo!" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "Yandex" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "clearch.org" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "DuckDuckGo" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "Bing" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "Baidu" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "Feeds" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "Rôle Utilisateur" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "Page de Connexion" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "Page d'Admin" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "Auto-référence" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "Concordance IP" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "Robot" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "Actuellement, il n’y a aucun utilisateur en ligne sur le site." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "Seuil de détection de robot" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "Pot de miel" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "Statistique des pages les plus tendance" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "Nom de l’hôte" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "Activer ou désactiver cette fonction" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "Rechercher les utilisateurs en ligne toutes les" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "Seconde" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "Laps de temps pour vérifier la présence d'un utilisateur sur le site. Actuellement : %s seconde" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "Enregistrer tous les utilisateurs" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "Ignorer les réglages d'exclusion et enregistrer tous les utilisateurs en ligne (incluant soi-même et les robots). Doit être utilisé uniquement pour le repérage de problèmes." + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "Stocker la chaîne d'agent utilisateur entièrement" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "Activé uniquement pour le débogage" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "Coefficient par visiteur" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "Pour chaque visite tenir compte de plusieurs hits. Actuellement %s." + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "Pages" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "Suivre toutes les pages" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "Retirer des paramètres de l'URL" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "Cela va retirer tout ce qui est après le ? dans une URL" + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "Désactiver la colonne hits dans la liste des articles/pages" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "Divers" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "Voir les statistiques dans la barre de menu" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "Non" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "Oui" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "Voir les statistiques dans la barre de menu admin" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "Masquer les notifications aux administrateurs pour les fonctionnalités inactives" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "Par défaut, WP Statistics affiche une alerte si des fonctionnalités principales sur chaque page d'administration sont désactivées. Cette option désactive ces alertes." + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "Supprimer le manuel d'utilisation" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "Par défaut, WP Statistics stocke le manuel d'administration dans le répertoire de l’extension (~ 5 Mo). Si cette option est activée, il sera supprimé maintenant et lors des mises à jour futures." + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "Moteurs de recherche" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "Désactiver la totalité des moteurs de recherche n'est pas autorisé. Le faire aura pour conséquence de les considérer comme tous autorisés." + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "désactiver" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "Exclure %s de la collecte de données et du reporting." + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "Graphiques" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "Inclure les totaux" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "Ajouter une ligne total dans les graphiques avec des valeurs multiples, comme les référents de moteur de recherche" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "Réglages GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "Services de localisation IP fournis par GeoLite2 créé par MaxMind, disponible à l'adresse %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "Collecte GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "Pour obtenir plus de renseignements sur le visiteur et sa localisation (pays), activer cette fonctionnalité." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "Mise à jour des informations GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "Télécharger la base de données GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "Programmer la mise à jour mensuelle de la base de données GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "Le téléchargement de la base de données GeoIP est programmé 2 jours après le premier mardi du mois." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "Cette option va également télécharger la base de données si la taille du fichier local est inférieur à 1k (ce qui signifie généralement que le stub qui s'installe avec l’extension est encore présent)." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "Compléter les données GeoIP manquantes après la mise à jour de la base de données GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "Mettre à jour les données GeoIP manquantes après le téléchargement d'une nouvelle base de données." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "Code pays pour des adresses IP privées" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "La norme code à deux lettres du pays internationale (ie. US = États-Unis, CA = Canada, etc.) pour les adresses IP privées (non routables) (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Utilisez \"000\" (trois zéros) pour spécifier \"Inconnu\" en tant que code du pays." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "La collecte GeoIP est désactivée pour les raisons suivantes :" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "La collecte GeoIP nécessite une version PHP %s ou supérieure. Elle est actuellement désactivée en raison de la version PHP installée en " + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "La collecte GeoIP nécessite l'extension PHP cURL et elle n'est pas activée avec votre installation de PHP actuelle !" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "La collecte GeoIP nécessite l'extension PHP Math BC et elle n'est pas activée sur votre installation PHP actuelle !" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "Mode sans échec de PHP détecté ! La collecte GeoIP n'est pas prise en charge lorsque le mode sécurisé de PHP est activé !" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "Ceci supprimera définitivement les données de la base de données chaque jour. Etes vous sûr de que vouloir activer cette option ?" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "Jours" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "Le nombre de jours pendant lesquels les statistiques sont conservées. La valeur minimale est de 30 jours. Une valeur non valide désactivera la maintenance quotidienne." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "Options communes des rapports" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "Adresses de messagerie" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "Pour envoyer les rapports à plusieurs adresses e-mails, les séparer par des virgules." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "Actualiser les rapports" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "Browscap" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "Envoyer un rapport quand browscap.ini est actualisé." + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "Envoyer une notification si la base GeoIP est actualisée" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "Purge" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "Envoyer un rapport quand la purge de la base de donnée se lance." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "Mettre à jour" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "Envoyer une notification lorsque l’extension est mise à jour." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "Rapports statistiques" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "Planifier" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "Choisir à quelle fréquence les rapports statistiques sont envoyés." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "Envoyer les rapports via" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "E-mail" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "Sélectionner la méthode d'envoi des rapports statistiques" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "Remarque : Pour envoyer des SMS, veuillez installer l’extension %s." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "WordPress SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "Corps du rapport" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "Entrez le contenu du rapport" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "N'importe quel code pris en charge par votre installation de Wordpress, incluant tous les codes de WP Statistics (voir le manuel d'administrateur pour obtenir une liste des codes disponibles) sont supportés dans le message. Voici quelques exemples :" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "Utilisateur en ligne" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "Visiteurs du jour" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "Visites du jour" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "Nombre de visiteurs hier" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "Nombre de visites hier" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "Nombre total de visiteurs" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "Nombre total de visites" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "Aucun" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "A propos" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "Tableau de bord" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "Les éléments suivants sont identiques pour tous les utilisateurs." + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "Désactiver les widgets de tableau de bord" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "Désactive les widgets dans le tableau de bord." + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "Éditeur de page/article" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "Désactiver le widget d’éditeur de page/article" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "Désactive le widget de l'éditeur de page/article." + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "Google" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "Désactiver la carte" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "Désactiver l'affichage de la carte" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "Suppression de WP Statistics" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "La désinstallation de WP Statistics ne supprimera pas les données et les réglages, vous pouvez utiliser cette option pour supprimer les données de WP Statistics de votre installation avant de désinstaller l’extension." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "Une fois que vous validez ce formulaire, les réglages seront supprimés pendant le chargement de la page, mais WP Statistics apparaîtra toujours dans le menu Admin jusqu'à ce qu'un nouveau chargement de page soit effectué." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "Supprimer les données et réglages" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "Supprimer" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "Supprimer les données et réglages. Cette action ne peut pas être annulée." + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "Générales" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "Notifications" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "Tableau de bord/Vue globale" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "Maintenance" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "Suppression" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "Mise à jour" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "Une fois par semaine" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "Une fois toutes les 2 semaines" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "Une fois toutes les 4 semaines" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "Statistiques" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "Voir les statistiques de site dans la barre latérale." + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "Total des pages vues" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "Amenés par des Moteurs de recherche" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "Total des articles" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "Total des pages" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "Total des commentaires" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "Total des spams" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "Total des utilisateurs" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "Moyenne d'articles" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "Moyenne des commentaires" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "Moyenne des utilisateurs" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "Date du dernier article" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "Nom" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "Éléments" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "Visite d'hier" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "Sélectionnez le type de moteur de recherche" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "WP Statistics a été désinstallé. Merci de le désactiver et de le supprimer." + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "WP Statistics" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "Statistiques complètes pour votre site WordPress." + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "Réglages" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "Cliquez ici pour visiter l’extension sur WordPress.org" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "Visitez la page WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "Cliquez ici pour évaluer et noter cette extension sur WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "Noter cette extension" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "WP Statistics - Hits" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "Vue globale" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "En ligne" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "Référents" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "Recherches" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "Recherche par mots" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "Top des visiteurs du jour" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "Optimisation" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "Manuel" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "Site" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "Options" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "Visiteur aujourd'hui" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "Visite aujourd’hui" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "Visiteur hier" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "Voir les Stats" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "Télécharger fichier ODF" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "Télécharger le fichier HTML" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "Fichier du manuel non trouvé." + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "Vous n'avez pas les autorisations suffisantes pour accéder à cette page." + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "WP Statistics %s installé sur" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "Erreur lors du téléchargement de base de données GeoIP sur : %s - %s" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "Erreur : Impossible d'ouvrir la base de données GeoIP téléchargée pour la lecture : %s" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "Erreur : Impossible d'ouvrir la base de données GeoIP de destination pour l'écriture de %s" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "Base de données GeoIP mis à jour avec succès !" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "GeoIP mis à jour sur" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "Erreur lors du téléchargement de base de données de browscap sur : %s - %s" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "Base de données browscap mise à jour avec succès !" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "Mise à jour de la base de donnée browscap ratée ! Le fichier cache est trop gros, retour à l'ancien browscap.ini." + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "Erreur lors de la mise à jour de la base de donnée browscap ! Le nouveau browscap.ini n'identifie pas les agents utilisateurs comme crawlers, retour à l'ancien browscap.ini." + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "browscap est déjà en version actuelle !" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "Browscap.in mis à jour sur" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "Stats rapides" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "Top 10 des navigateurs" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "Top 10 des pays" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "Carte des visiteurs aujourd'hui" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "Statistiques de hits" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "Top 10 des pages" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "Visiteurs récents" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "Top des Sites référents" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "Référents de moteur de recherche" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "Résumé" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "Derniers mots recherchés" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "Top 10 des visiteurs aujourd'hui" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "Cet article n'est pas encore publié." + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "Impossible de charger la base de données GeoIP, assurez-vous que vous l’avez téléchargée dans la page réglages." + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "Mise à jour de %s enregistrements GeoIP dans la base de données de visiteurs." + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "%s données plus anciennes que les %s derniers jours purgées avec succès." + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "Aucun enregistrement trouvé à purger de %s !" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "Base de données purgée le" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "Veuillez sélectionner une valeur de plus de 30 jours." + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "Statistiques de navigateur" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "Cliquez ici pour activer/désactiver" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "Navigateurs" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "Navigateurs par type" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "Plate-forme" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "Navigateurs par plate-forme" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "version %s" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "Attention : Les exclusion ne sont pas actuellement réglées pour être enregistrées, les résultats ci-dessous peuvent ne pas refléter les statistiques actuelles !" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "Statistiques d'exclusions" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "10 jours" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "20 jours" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "30 jours" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "2 mois" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "3 mois" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "6 mois" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "9 mois" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "1 an" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "Graphique statistique des exclusions" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "Hits exclus dans le dernier" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "jours" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "Nombre de visites exclues" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "Graphique statistique des hits" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "Hits dans les derniers" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "Nombre de visites et visiteurs" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "Visite" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "Visiteur" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "Statistiques des mots recherchés les plus récents" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "#hash#" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "Carte" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "Page" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "De" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "Tous les" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "Statistiques récentes de visiteurs" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "Utilisateurs en ligne" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "En ligne depuis" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "Tendance des pages pour l'ID d’article" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "Tendance des Pages" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "Statistiques de Référents de Moteurs de recherche" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "Référents de moteur de recherche dans le dernier" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "Nombre de référents" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "Total" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "Top des Pays" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "Rang" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "Drapeau" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "Pays" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "Nombre de visiteurs" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "Top des Pages" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "Top 5 des Pages Tendance" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "Statistiques des 5 Pages les plus Tendance" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "Nombre de Hits" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "Aucun titre de page trouvé" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "Visites" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "Seront ajoutées prochainement" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "Site référents de" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "Références" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "Top 100 des visiteurs aujourd'hui" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "À propos de WP Statistics Version %s" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "Site web" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "Évaluer et noter" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "Plus d'informations" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "Ce produit inclut des données de GeoLite2 créées par MaxMind, disponible sur %s." + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "Autres" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "Carte des Visiteurs Aujourd’hui" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "Adresse" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "Utilisateur(s) en ligne" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "Aujourd'hui" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "Hier" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "Total journalier" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "Date et heure courante" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "(Ajustement)" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "Date : %s" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "Temps : %s" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "Hits" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "IP" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "Agent" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "Version" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "Accès refusé !" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "%s données d'agent supprimées avec succès." + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "Pas de données d'agent à supprimer trouvées !" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "Veuillez sélectionner les éléments souhaités." + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr " %s données de plate-forme supprimées avec succès." + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "Pas de plateforme de donnée à supprimer trouvée !" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "données de la table %s supprimées avec succès." + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "Erreur, %s n'a pas été vidé !" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "Configuration de la base de données" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "Réexécutez l'installation" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "Installer maintenant !" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "Si pour une raison quelconque votre installation de WP Statistics n’a pas les tables de base de données ou autres éléments de base, cela ré-exécutera le processus d'installation." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "Index de base de données" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "Pays" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "Mettre à jour maintenant !" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "Les versions anciennes de WP Statistics comptabilisent des doublons dans le tableau des visites dans certains cas particuliers. Les versions plus récentes disposent d’un index pour éviter ces doublons. Pour créer l’index sur l'ancienne version, les entrées en double doivent être d'abord supprimées. En cliquant sur \"Mettre à jour maintenant !\" vous allez analyser la table des visiteurs, supprimer les entrées dupliquées et ajouter l’index." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "Cette opération peut prendre un certain temps sur les installations avec un grand nombre de lignes dans la table des visiteurs." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "Les versions anciennes de WP Statistics comptabilisent des doublons dans le tableau des visites dans certains cas particuliers. Les versions plus récentes disposent d’un index pour éviter ces doublons." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "Félicitations, votre installation est déjà à jour, rien à faire." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "Exportation" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "Exporter à partir de" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "Veuillez sélectionner" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "Sélectionnez la table pour le fichier de sortie." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "Exporter vers" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "Sélectionnez le type de fichier de sortie." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "Inclure la ligne d'en-tête" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "Incluez une ligne qui sera la première ligne du fichier exporté." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "Commencez dès maintenant !" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "Valeurs historiques" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "Note : comme vous venez de purger la base de données, vous devez recharger cette page pour que ces valeurs soient correctes." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "Visiteurs" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "Nombre de valeurs historiques du nombre de visiteurs sur le site (actuellement %s)." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "Nombre de valeurs historiques du nombre de visiteurs sur le site (actuellement %s)." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "Mettre à jour maintenant !" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "Êtes-vous sûr?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "Données" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "Vider la table" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "Toutes les tables de données seront perdues." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "Effacer maintenant !" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "Purger les enregistrements âgés de plus de" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "Les données de statistiques d’utilisateur supprimées seront antérieures au nombre de jours sélectionné. La valeur minimale est de 30 jours." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "Purger maintenant !" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "Supprimez les types d'Agent utilisateur" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "Supprimer des Agents" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "Toutes les données des visiteurs seront perdues pour ce type d'agent." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "Supprimer maintenant !" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "Supprimer les plates-formes" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "Toutes les données des visiteurs seront perdues pour ce type de plate-forme." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "Ressources" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "Utilisation de la mémoire en PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "Octets" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "Limite de mémoire PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "La limite de mémoire qu’un script est autorisé à consommer, définie dans le fichier php.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "Nombre de lignes dans la table %s" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "Ligne" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "Nombre de lignes" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "Info de Version" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "WP Statistics Version" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "La version de WP Statistics que vous utilisez." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "Version PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "La version de PHP que vous utilisez." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "PHP Safe Mode" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "Est-ce que PHP Safe Mode (Mode sans échec) est activé. Le code de GeoIP n'est pas pris en charge en Safe Mode." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "Version jQuery" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "La version jQuery que vous utilisez." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "Version de cURL" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "cURL n’est pas installé" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "La version de l’extension PHP cURL que vous utilisez. cURL est requis pour obtenir le code GeoIP, s'il n'est pas installé GeoIP sera désactivé." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "Installé" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "Pas installé" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "Info du fichier" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "Base de données GeoIP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "Le fichier de base de données n'existe pas." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr ", créé le " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "La taille du fichier et la date de la base de données GeoIP." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "fichier browscap.ini" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "fichier browscap.ini n'existe pas." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "La taille du fichier et la date du fichier browscap.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "fichier cache de browscap" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "le fichier cache browscap n'existe pas." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "La taille et la date du fichier cache browscap." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "Info client" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "IP client" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "L'adresse IP du client." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "Agent Utilisateur" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "La chaîne agent utilisateur (User Agent) du client." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "Navigateur" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "Le navigateur client détecté." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "La version du navigateur client détecté." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "La plateforme client détectée." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "Cela remplacera toutes les adresses IP dans la base de données avec les valeurs de hachage et ne peut pas être annulé, êtes-vous sûr ?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "Options de GeoIP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "Met à jour des données de localisation inconnues dans la base de données, cela peut prendre un certain temps" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "Adresses IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "Adresses IP de hachage" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "Remplacer les adresses IP dans la base de données avec les valeurs de hachage, vous ne serez pas en mesure de récupérer les adresses IP dans le futur pour remplir ensuite les informations de localisation et cela peut prendre un certain temps" + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "Adresses IP remplacées par des valeurs de hachage." + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "Processus d’installation terminé." + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "Ressources/Informations" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "Purge" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "Base de données" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "Mises à jour" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "Historique" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "WP Statistics V %s" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "Retrouvez-nous en ligne" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "Visitez notre superbe nouveau %s et tenez-vous à jour des dernières nouveautés de WP Statistics." + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "site web" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "Évaluer et Noter sur WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "Merci pour l'installation de WP Statistics, nous vous encourageons à soumettre une " + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "Évaluation et note" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "sur WordPress.org. Vos commentaires sont grandement appréciés !" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "Traductions" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "WP Statistics est compatible avec l'internationalisation, et nous encourageons nos utilisateurs à soumettre les traductions, veuillez visiter notre %s pour connaître l'état actuel et %s si vous voulez aider." + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "site de traduction collaborative" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "nous laisser un message" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "Support" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "Nous sommes navrés que vous rencontrez un problème avec WP Statistics, et nous sommes heureux d'aider. Voici quelques petites choses à faire avant de nous contacter :" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "Avez-vous lu le %s ?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "Foire aux questions" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "manuel" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "Avez-vous cherché des problèmes semblables sur %s ?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "forum de support" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "Avez-vous recherché sur Internet les messages d'erreur que vous recevez ?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "Vérifiez que vous avez accès à vos logs d'erreurs PHP." + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "Et quelques petites choses à vérifier :" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "Quelle est votre memory_limit dans php.ini ?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "Avez-vous essayé de désactiver les autres extensions que vous pouvez avoir installé ?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "Avez-vous essayé d'utiliser le thème WordPress par défaut ?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "Avez-vous vérifié deux fois les réglages de l’extension ?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "Avez-vous toutes les extensions PHP requises installées ?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "Êtes-vous une page vide ou incomplète affichée dans votre navigateur ? Avez-vous affiché le code source de la page et recherché une erreur fatale ?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "Avez-vous vérifié vos journaux d'erreurs de serveur web et PHP ?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "Toujours pas de chance ?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "Ensuite, veuillez ouvrir un nouveau sujet sur %s et nous vous répondrons dès que possible." + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "Forum de support de WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "Le support %s est également disponible." + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "Farsi" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "Page du pot de miel de WP Statistics" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "Il s'agit de la page pot de miel utilisée par WP Statistics, ne pas supprimer." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "Niveaux d'accès" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "Requis de niveau utilisateur pour afficher les WP Statistics" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "Niveau d'utilisateur requis pour gérer les WP Statistics" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "Voir la %s pour plus d'informations sur les niveaux de capacité." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "Page Rôles et Capacités WordPress" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "Remarque : manage_network = Super Admin Réseau, manage_options = Administrateur, edit_others_posts = Éditeur, publish_posts = Auteur, edit_posts = Contributeur, lu = Tout le monde." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "Chaque élément ci-dessus fait remonter les droits dans la configuration de WordPress par défaut. Ainsi, par exemple en sélectionnant publish_posts on accorde le droit aux Auteurs, Éditeurs, Admins et Super Admins." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "Si vous avez besoin d'une solution plus robuste pour déléguer l'accès vous pouvez regarder %s dans le répertoire d’extensions WordPress." + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "Exclusions" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "Enregistrer les exclusions" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "Activer" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "Ceci enregistrera tous les hits exclus dans une table distincte, avec les raisons pourquoi il a été exclu, mais aucune autre information. Cela va générer une grande quantité de données mais est utile si vous souhaitez afficher le nombre total de visites que votre site reçoit, et non seulement les visites d'utilisateurs réels." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "Exclure les rôles d'utilisateur" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "Exclure" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "Exclure le rôle %s de la collecte de données." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "Exclusions IP/Robot" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "Liste de robot" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "Une liste de mots (un par ligne) auxquels comparer pour détecter les robots. Les entrées doivent comporter au moins 4 caractères, sinon elles seront ignorées." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "Réinitialiser à défaut" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "Force une mise à jour de la liste des robots après les mises à niveau" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "Force la liste de robot pour être remis à la valeur par défaut quand une mise à jour de WP Statistics a lieu. Remarque : si cette option est activée tout robot personnalisé que vous avez ajouté à la liste de robots sera perdu." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "Limite de visite des robots" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "Considérer les visiteurs qui ont plus que ce nombre de visites par jour comme des robots. 0=désactivé" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "Liste d'adresses IP exclues" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "Ajouter 10.0.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "Ajouter 172.16.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "Ajouter 192.168.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "Utiliser le pot de miel" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "Utiliser une page pot de miel (\"honey pot\") pour identifier les robots." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "ID de l’article pot de miel" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "Identifiant d’article à utiliser pour la page pot de miel." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "Créer une nouvelle page pot de miel" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "Exclusions Geo-IP" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "Liste des pays exclus" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "Une liste de codes de pays (un par ligne, deux lettres chacun) à exclure des statistiques. Utilisez \"000\" (trois zéros) pour exclure les pays inconnus." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "Liste des pays inclus" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "Une liste de codes de pays (un par ligne, deux lettres chacun) à inclure dans les statistiques. Si cette liste n'est pas vide, seuls les visiteurs des pays inclus vont être enregistrés. Utilisez \"000\" (trois zéros) pour exclure les pays inconnus. " + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "Exclusions d'hôtes" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "Liste des hôtes exclus" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "Une liste des noms d'hôtes complètement définis (exemple : serveur.exemple.com, un par ligne) à exclure de la collection de statistiques" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "Note : cette option n'effectuera pas une recherche DNS inversée sur chaque chargement de page mais mettra plutôt en cache l'adresse IP des noms d'hôtes fournis pendant une heure. Si vous excluez l'assignation dynamique des hôtes, vous pourrez trouver un certain nombre de doublons quand l'hôte change d'adresse IP et que le cache est mis à jour, ce qui provoque des enregistrements de hits." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "Exclusions des URL du site" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "Page de connexion exclue" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "Exclure la page de connexion du comptage des hits." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "Pages admin exclues" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "Exclure les pages administratives du comptage des hits." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "Flux RSS exclus" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "Exclure les flux RSS du comptage des hits." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "réglages de browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "utilisation de browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "Active" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "La base de données browscap sera téléchargée et utilisée pour détecter les robots." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "Mise à jour les infos browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "Télécharger la Base de Données browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "Enregistrer les modifications sur cette page pour télécharger la mise à jour." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "Programmer une mise à jour hebdomadaire de browscap DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "La prochaine mise à jour sera" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "Le téléchargement de la base de données de browscap sera programmé pour une fois par semaine." + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "Cela supprimera le manuel lorsque vous enregistrez les réglages, êtes-vous sûr ?" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "Cette fonctionnalité ne stocke pas les adresses IP dans la base de données, mais utilise à la place un hachage unique. Le réglage \"Stocker la chaîne d'agent utilisateur entièrement\" sera désactivé si ce champ est sélectionné. Vous ne serez pas en mesure de récupérer les adresses IP à l'avenir pour obtenir des informations de localisation si cette option est activée." + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "Utilisateurs en ligne" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "Utilisateur en ligne" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-hi.mo b/plugins/wp-statistics/languages/wp_statistics-hi.mo new file mode 100644 index 0000000..8085e9e Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-hi.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-hi.po b/plugins/wp-statistics/languages/wp_statistics-hi.po new file mode 100644 index 0000000..24d8e9a --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-hi.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in Hindi +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-07-20 20:12:24+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: hi_IN\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "कोई भी समान विजेट नही मिला!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "" + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "" + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "" + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "" + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "" + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "" + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "" + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "" + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "" + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "" + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "" + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "" + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "" + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "" + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "" + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "" + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "" + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "" + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "" + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "" + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "" + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "" + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "" + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "" + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "" + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-hu_HU.mo b/plugins/wp-statistics/languages/wp_statistics-hu_HU.mo new file mode 100644 index 0000000..2434ff1 Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-hu_HU.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-hu_HU.po b/plugins/wp-statistics/languages/wp_statistics-hu_HU.po new file mode 100644 index 0000000..7d23f7b --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-hu_HU.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in Hungarian +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-04-03 17:00:56+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: hu\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "Zlib gzopen()" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "" + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "— - Nem támogatott PHP verziót használsz." + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "WP Statisztika nem elérhető" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "WP Statisztika szerint %s verziójú PHP-t használsz, amely nem támogatott. Kérlek frissítsd %s vagy magasabb verzióra a helyes működéshez!" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "Kérjük, forduljon a tárhelyszolgáltatójához, hogy frissítse a támogatott verzióra vagy tiltsa le a WP Statisztikát eltávolítva ezt az üzenetet." + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "HIBA: Widget nem található!" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "Töltés..." + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "Újratöltés ..." + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "Top látogatók" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "Engedélyezve" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "" + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "Ask.com" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "" + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "látogató-követés" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "Adatbázis frissítésre van szükség. Kérjük, látogasson el: %s és frissítise a következőt: %s" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "keresési tábla" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "beállítások oldal" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "," + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "Keresés táblázat átalakítás befejeződött,%d sor hozzáadva" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "Régebbi WP Statisztika telepítések keresések részletei tárolják a látogatói táblázatban, amely ronthatja a teljesítményt nagy adatbázis esetén. Egy új táblázat jött létre hogy ezeket az információkat jobban skálázható módon tárolja." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "Keresési tábla" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "Konvertálás" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "Konvertálás indítása" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "A Piwik Referrer Spam Blacklist adatbázis letöltésének ütemezése heti egy alkalommal." + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "Piwik Hivatkozó Spam Blacklist adatbázis letöltése" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "Piwik Hivatkozó Spam Blacklist frissítése" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "A Piwik Referrer Spam Blacklist adatbázis le lesz töltve és használva lesz hivatkozó spam észlelésére" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "A hivatkozó spam feketelistát a Piwik biztosítja, elérhető innen:%s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "Nem megfelelő böngésző információ esetén bot-ként kezelés" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "404 Oldalak" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "Dátum" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "Nem megfelelő böngésző információ (hiányzó IP-cím vagy üres user agent) esetén a látogató kezelése robotként" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "Kizárt 404 oldalak" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "Minden URL kizárása, ami "404 - Not Found" üzenetet ad." + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "találatok" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "Nem található látogató amit meg kell tisztítani" + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "%s bejegyzés kitisztítása sikeres." + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "Találatok számának nagyobbnak vagy egyenlőnek kell lennie, mint 10!" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "Oldallátogatások" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "Hozzászólás számláló" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "Spam számláló" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "Felhasználó számláló" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "Hozzászólás átlag" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "Megjegyzés átlag" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "Felhasználói átlag" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "Keresési szolgáltató" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "Szám formátum" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "" + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "Angol" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "Nemzetközi" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "Összesített találati statisztika" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "Kiválasztott időtartam" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "Összesen" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "Gondolt már arra, hogy adományozzon a WP Statisztikának?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "Adományoz" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "Megosztanád velünk, hogy mennyire tetszik a WP Statisztika? Ugorj a %s oldalra és jelezd tetszésedet!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "adomány" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "Adományozzon most!" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "Bezárás" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "Válassza ki a megjeleníteni kívánt statisztikát." + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "Statisztikai" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "Bejegyzés számláló" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "Időkeret" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "Menj" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "Rang # 5" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "Rang # 4" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "Rang # 3" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "Rang # 1" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "Rang # 2" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "Ez a művelet sokáig tarthat olyan telepítés esetében, ahol sok sor van a látogatások táblázatban." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "Szűrés" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "Tartomány" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "HH/NN/ÉÉÉÉ" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "Ne használja a beállított fordítást, helyette az angol legyen a WP Statisztika alapértelmezett nyelve (két oldalbetöltés szükséges)" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "Angol nyelv kényszerítése" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "Nyelvek" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "Azon helyi URL-ek listája, melyeket a statisztikai gyűjtésből kizár (Pl.: /wordpress/about, soronként egy)" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "Blokkolt URL-ek listája" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "Blokkolt URL" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "Az utolsó 365 nap (év)" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "Utolsó 30 nap (hónap)" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "Utolsó 7 nap (hét)" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "Yahoo!" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "Yandex" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "clearch.org" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "DuckDuckGo" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "Bing" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "Baidu" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "Hírcsatornák" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "Felhasználói szerepkör" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "Bejelentkező oldal" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "Admin oldal" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "Önhivatkozás" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "IP egyezés" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "Robot" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "Jelenleg nincs aktív felhasználó az oldalon." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "Hostname" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "Engedélyezi vagy letiltja ezt a funkciót" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "Minden jelenlegi felhasználó ellenőrzése" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "másodperc" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "Itt az ideje a pontos jelenlévő felhasználók ellenőrzésére az oldalon. Most: %s másodperc" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "Rögzíti az összes felhasználó" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "Figyelmen kívül hagyja a blokkolási beállításokat és rögzíti az összes online felhasználót (beleértve az önhivatkozásokat és robotokat). Csak hibaelhárításra érdemes használni." + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "Tárolja a teljes felhasználói eszköz karakterláncot" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "Csak hibakeresésre engedélyezett" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "Látogatókénti egységesítés" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "Egy azonosított felhasználó minden egyes találatának egységesítése. Jelenleg %s." + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "Oldal" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "Nyomon követi az összes oldalak" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "Az URI-ból paraméterek kivágása" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "Ez mindent eltávolít az URL-ben lévő \"?\" után." + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "Tiltsa le a post/oldal lista oszlopának találat" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "Egyéb" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "Statisztikák megjelenítése a menüsorban" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "Nem" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "Igen" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "Statisztikák megjelenítése az admin menüben" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "Admin értesítéseket nem aktív funkciók elrejtése" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "Mellett hiba WP Statistics figyelmeztetést jelenít meg, ha az alapvető funkciók le vannak tiltva, minden admin oldalon, ez a lehetőség letiltja ezeket az értesítéseket." + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "A használati utasítás törlése" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "Mellett hiba WP Statistics tárolja az admin kézi a plugin könyvtárban (~ 5 meg), ha ez a beállítás engedélyezve van, törlésre kerül most és a jövőben a frissítések során." + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "Keresőmotorok" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "Megbénít minden keresők nem engedélyezett, csinál tehát eredményez minden keresőmotorok, hogy aktív." + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "kikapcsolás" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "%s adatgyűjtés és jelentéstétel kikapcsolása." + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "Ábra" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "Összegek szerepeltethetők" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "Adjunk hozzá egy teljes sort térképek több értéket, mint a search engine áttételek" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "GeoIP beállítások" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "Az IP helymeghatározó szolgáltatásokat a GeoLite2 adat biztosítja, készítette a MaxMind, elérhető: %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "GeoIP gyűjtés" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "Ha szeretne a látogatóról több információt és helyinformációt (ország) kapni, engedélyezze ezt a funkciót" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "GeoIP információ frissítése" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "GeoIP adatbázis letöltése" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "GeoIP adatbázis havi frissítés ütemezése" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "GeoIP adatbázis letöltés ütemezése minden hónap első keddi napja után 2 nappal." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "Ez a beállítás is letölti az adatbázist, ha a helyi file méret kevesebb, mint 1k (ami általában azt jelenti, hogy a csonk amivel a bővítménnyel jön, még mindig a helyén van)" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "Hiányzó GeoIP betöltése a GeoIP adatbázis frissítése után" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "Bármely hiányzó GeoIP adat frissítése új adatbázis letöltése után." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "privát IP-címek ország kódja" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "A nemzetközi szabvány szerinti kétbetűs országkód (Pl.: US = Egyesült Államok, HU = Magyarország, stb) magán (nem átirányítható) IP-címeknek (pl. 10.0.0.1, 192.158.1.1, 127.0.0.1, stb). Használd a "000" (három nullát) "Ismeretlen", ország kód jelzéshez." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "GeoIP-gyűjtés le van tiltva, az alábbi okokból:" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "GeoIP gyűjtéshez szükséges PHP (%s) vagy a újabb, ezért jelenleg kikapcsolva, mert a telepített PHP verzió" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "GeoIP gyűjtéshez cURL PHP kiterjesztés szükséges, és az nincs betöltve az Ön PHP-verziójában!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "GeoIP gyűjtéshez a BC Math PHP kiterjesztés szükséges, és az nincs betöltve az Ön PHP-verziójában!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "PHP safe mód-ot észletünk! GeoIP gyűjtés nem támogatott ha a PHP safe mód engedélyezve van!" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "Ez véglegesen törli az adatokat az adatbázisból minden nap, biztos benne, hogy engedélyezi ezt a beállítást?" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "nap" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "És tartsa statisztikájának napok száma. Minimális érték 30 napok. Érvénytelen érték letiltja a napi karbantartás." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "E-mail címek" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "E-mail címek vesszővel elválasztott listája, ahová a jelentéseket küldjük." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "Jelentések frissítése" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "Browscap" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "Jelentést küld, ha a browscap.ini frissül." + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "Jelentést küld, ha a GeoIP adatbázis frissül." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "Tisztítás" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "Jelentést küld, ha adatbázis tisztítás fut." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "Frissítés" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "Jelentést küld, ha a plugint frissítették." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "Statisztikai adatszolgáltatás" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "Menetrend" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "Válaszd ki, hogy milyen gyakran kérsz statisztikai jelentést." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "Via jelentést küld" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "Email" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "Válassz ki egy kézbesítési módot a statisztikai jelentésekről." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "Megjegyzés: SMS küldéshez kérjük telepítse a %s plugint." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "WordPress SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "Jelentés törzsében" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "Írd be a jelentés tartalmát." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "Bármilyen rövid kód (shortcode) támogatott a WordPress levél törzsében, beleértve az összes WP Statisztika rövid kódot (rendelkezésre álló kódokat ld. admin kézikönyv). Íme néhány példa:" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "Jelenlévő felhasználó" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "Mai Látogató" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "Mai látogatás" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "Tegnapi Látogató" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "Tegnapi látogatás" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "Összes Látogató" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "Összes látogatás" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "Egyik sem" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "Rólunk" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "Vezérlőpult" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "A következő elemek minden felhasználó számára globálisak." + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "Vezérlőpult widgetek kikapcsolása" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr " A vezérlőpult widgetek kikapcsolása." + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "Oldal/ Bejegyzés szerkesztő" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "Bejegyzés/ oldal szerkesztő widget kikapcsolása" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "Oldal / Hozzászólás-szerkesztő widget tiltása." + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "Google" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "Térkép kikapcsolása" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "A térkép megjelenítésének kikapcsolása" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "WP Statisitcs eltávolítása" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "A WP Statisztika eltávolítása nem távolítja el az adatokat és beállításokat, akkor használd ezt a lehetőséget, ha el akarod távolítani a tárolt adatokat a Bővítmény eltávolítása előtt." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "Adatok és beállítások eltávolítása" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "Eltávolítás" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "Adatok és beállítások eltávolítása, ez a művelet nem vonható vissza." + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "Általános" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "Értesítések" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "Vezérlőpult/ áttekintés" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "Karbantartás" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "Eltávolítás" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "Frissítés" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "Egyszer hetente" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "2 hetente egyszer" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "4 hetente egyszer" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "Statisztikák" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "Megjeleníti az oldal statisztikáit a sidebaron." + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "Összes oldal megtekintése" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "Összes bejegyzés" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "Összes oldal" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "Összes hozzászólás" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "Összes spam" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "Összes felhasználó" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "Átlagos bejegyzés" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "Átlagos hozzászólás" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "Átlagos felhasználó" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "Utolsó bejegyzés dátuma" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "Név" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "Tételek" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "Tegnapi látogatás" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "Keresőmotor típusának kiválasztása" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "WP Statistics el lett távolítva, kérjük, kapcsolja ki és törölje." + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "WP Statisztika" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "Teljes statisztikája a WordPress telek." + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "Beállítások" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "Kattintson ide a bővítmény megtekintéséhez a WordPress.org-on" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "WordPress.org oldal megtekintése" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "Kattintson ide a bővítményértékeléséhez és áttekintéséhez a WordPress.org-on." + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "Bővítmény értékelése" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "WP Statisztika - találatok" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "Áttekintés" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "Elérhető" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "Hivatkozók" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "Keresések" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "Kereső szavak" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "Top mai látogatók" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "Optimalizálás" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "Kézikönyv" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "Oldal" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "Opciók" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "Mai Látogató" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "Mai látogatás" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "Tegnapi látogató" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "Statisztikák megtekintése" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "ODF fájl letöltése" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "HTML fájl letöltése" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "Kézikönyv nem található." + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "Nincs megfelelő jogosultság az oldal megtekintéséhez." + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "WP Statisztika %s telepítve a(z)" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "GeoIP adatbázis letöltési hiba: %s - %s" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "Hiba nem lehet megnyitni a letöltött GeoIP adatbázis olvasásra: %s" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "Hiba nem nyitható meg írásra a(z) %s GeoIP céladatbázis" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "A GeoIP adatbázis frissítése sikeresen megtörtént!" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "Geoip frissítés:" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "Letöltés browscap adatbázis hiba: %s - %s" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "browscap adatbázis sikeresen frissítve!" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "browscap adatbázis frissítve nem sikerült! A cache fájl túl nagy, visszaállítjuk az előző browscap.ini-re." + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "browscap adatbázis frissítése nem sikerült! Új browscap.ini a mis-identifing felhasználói alkalmazások, mint bejárók, visszatérve az előző browscap.ini." + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "browscap már az aktuális verzió!" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "Browscap.ini frissítés" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "Gyors statisztikák" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "Böngészők toplistája" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "A 10 leggyakoribb ország" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "Mai látogatói térkép" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "Találatok statisztikái" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "Top 10 oldal" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "Előző Látogató" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "Top hivatkozó webhelyek" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "Keresőmotor hivatkozás" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "Összefoglaló" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "Utolsó keresett szavak" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "Mai top 10 látogató" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "Ezt a bejegyzést még nem tették közzé." + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "Képtelen-hoz teher a GeoIP adatbázis, győződj meg Önnek van letöltött ez-ban elintézés oldal." + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "Frissíti %s GeoIP adatbázisrekordok látogatók." + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "a(z) %s adatait sikerült törölni a(z) %s napnál régebbi." + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "Nincs rekord törlése: %s!" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "Kérjük, válasszon 30 napnál magasabb értéket." + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "Böngésző statisztikák" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "Bővebben kikapcsolás/bekapcsolás" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "Böngészők" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "Böngésző-típus" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "Platform" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "Böngésző platform" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "%s verzió" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "Figyelem: Kizárások jelenleg nem kerülnek rögzítésre, lehet, hogy az alábbi eredmény nem tükrözi a jelenlegi statisztikát!" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "Kizárás statisztika" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "10 nap" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "20 nap" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "30 nap" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "2 hónap" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "3 hónap" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "6 hónap" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "9 hónap" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "1 év" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "Kizárások statisztikai diagram" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "Kizárt találatok az utolsó" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "napban" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "Kizárt találatok száma" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "Találatok statisztikák diagram" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "Találatok száma az elmúlt" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "Látogatások és a látogatók száma" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "Megtekintés" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "Látogató" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "Legutolsó keresési szavak statisztikája" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "#hash#" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "Térkép" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "Oldal" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "/" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "Mind" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "Legutóbbi látogatói statisztika" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "Jelenlévő felhasználók" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "Oldal Trend a felad azonosítás" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "Oldal Trend" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "Keresőmotor Hivatkozás Statisztika" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "Keresőmotor hivatkozások az utolsó" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "Átirányítások száma" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "Összes" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "Leggyakoribb országok" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "Helyezés" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "Zászló" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "Ország" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "Látogató számláló" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "Legjobb oldalak" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "Top 5 oldal trendek" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "Top 5 oldal trend statisztika" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "Találatok száma" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "Az oldal címe nem található" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "Látogatások" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "Hamarosan kiegészül" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "Webhelyekre hivatkozás" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "Referenciák" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "Top 100 mai látogató" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "A WP Statistics Verziója %s" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "Honlap" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "Értékelés és megtekintés" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "További információ" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "Ez a termék tartalmaz GeoLite2 adatokat, amit a MaxMind készített, elérhetősége: %s." + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "Egyéb" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "Mai látogatók térképe" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "Cím" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "Jelenlévő felhasználók" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "Ma" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "Tegnap" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "Napi összes" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "Jelenlegi dátum, idő" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "(beállítás)" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "Időpont: %s" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "Idő: %s" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "Találatok" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "IP" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "Agent" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "Verzió" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "Hozzáférés megtagadva!" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "%s agent adatai sikeresen törölve." + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "Nincs eltávolítható agent adat!" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "Kérjük válassza ki a kívánt elemeket." + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "a(z) %s platform adatok sikeresen törölve." + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "Nincs eltávolítható platform adat!" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "%s tábla adatai sikeresen törölve." + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "Hiba, %s nincs ürítve!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "Adatbázis-beállítások" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "Újratelepítés" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "Telepítés most!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "Ha valamilyen oknál fogva a WP Statistics hiányolja az adatbázis táblákat vagy más alap összetevőt, ez újra elindítja a telepítési folyamatot." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "Adatbázis index" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "Országok" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "Frissítés most!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "Régi installálók WP Statistics ismétlődő bejegyzések a látogatók tábla sarok esetben teszi lehetővé. Újabb telepíti véd ez a táblázat egyedi indexet. Létrehozni az index a régi installálók ismétlődő bejegyzéseket kell törölni először. Kattintson a \"Update Now\" a vistitors táblázat scan, törölje ismétlődő bejegyzéseket, és hozzá az index." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "Ez a művelet hosszú ideig eltarthat, ha sok sora van a látogatók táblának." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "Régi installálók WP Statistics ismétlődő bejegyzések a látogatók tábla sarok esetben teszi lehetővé. Újabb telepíti véd ez a táblázat egyedi indexet." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "Gratulálunk a telepítés befejeződött, nincs további teendője." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "Exportálás" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "Adatbázis exportálás" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "Kérjük válasszon" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "Vállasza ki a táblát amit exportálni szeretne." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "Export formátuma" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "Válassza ki a kimeti fájl típusát." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "Fejléc sor" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "Fejléc a kimeneti fájl első sorában" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "Indítás most!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "Történeti értékek" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "Megjegyzés: mivel az imént tisztította meg az adatbázist, újra be kell töltenie ezt az oldalt, ezek a számok helyesen jelenjenek meg." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "Megtekintések" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "Frissítse most!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "Biztos benne?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "Adat" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "Táblázat kiürítése" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "A táblázat minden adata el fog veszni." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "Kiürítés most!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "Régebbi bejegyzések törlése" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "Törölt felhasználói statisztikai adatokat a kiválasztott számú napnál régebbi. Minimális érték 30 napok." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "Tisztítás most!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "User Agent típusok törlése" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "Eszközök törlése" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "Ennek az eszköz típusnak minden látogatói adata el fog veszni." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "Töröljük most!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "Platformok törlése" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "Ennek a platform típusnak minden látogatói adata el fog veszni." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "Erőforrás" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "Memória használat van a PHP-ben" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "Byte" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "PHP memória limit" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "Egy script által használható memória korlátozása, beállítva a php.ini-ben." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "A %s tábla sorainak száma" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "Sor" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "Sorok száma" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "Verzió információ" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "WP Statistics verzió" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "A jelenleg futó WP Statisztika változata." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "PHP verzió" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "A jelenleg futó PHP változata." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "PHP Safe Mode" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "PHP Safe Mode aktív. A GeoIP kód biztonságos üzemmódban nem támogatott." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "jQuery verzió" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "A jelenleg futó jQuery változata." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "cURL verzió" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "cURL nincs telepítve" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "A PHP cURL kiterjesztése verzióját futtatja. cURL szükség a GeoIP-kód, ha ez nincs telepítve GeoIP le lesz tiltva." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "Telepítve" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "Nincs telepítve" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "Fájlinformációk" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "GeoIP-adatbázis" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "Adatbázis fájl nem létezik." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr ", létre hozva" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "a GeoIP adatbázis fájl mérete és dátuma " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "browscap.ini fájlt" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "browscap.ini fájlt nem létezik." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "A fájl méretét és browscap.ini fájlt." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "browscap gyorsítótár-fájl" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "browscap gyorsítótár-fájl nem létezik." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "A browscap gyorsítótár-fájl mérete és dátuma." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "Ügyfél infó" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "Ügyfél IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "Az ügyfél IP-címe." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "User Agent" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "A kliens User Agent beállítása" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "Böngésző" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "Az észlelt kliens böngésző." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "Az észlelt kliens böngésző verzió." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "Az észlelt kliens platform." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "Ez lecseréli az összes IP-címét, az adatbázis a vagdalék érték, és nem lehet visszavonás, biztos vagy benne?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "GeoIP opciók" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "Minden ismeretlen hely adatait frissíti az adatbázisban, ez eltarthat egy ideig" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "IP-címek" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "Hash IP-címek" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "Cserélje ki az adatbázisban szereplő IP-címek vagdalék érték, nem lesz képes helyreállítani az IP-címeket a jövőben, hogy feltölti a Helyinformáció utána, és ez eltarthat egy ideig" + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "IP-címek helyett vagdalék érték." + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "Felszerel rutin teljes." + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "Erőforrás/információ" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "Tisztítás" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "Adatbázis" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "Frissítések" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "Történeti" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "WP Statistics V%s" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "Látogasson el hozzánk Online" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "Látogasson el a mi új %s-unkra, és legyen naprakész a WP Statistics legújabb híreiről." + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "honlap" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "A WordPress.org értékelése és megtekintése" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "Köszönjük, hogy telepítette a WP Statisztikákat, azt javasoljuk, hogy küldjön be egy " + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "értékelést és áttekintést" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "a WordPress.org-on. Az Ön visszajelzését előre is köszönjük!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "Fordítások" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "WP Statistics támogatja a honosítást és bátorítjuk felhasználóinkat, hogy nyújtsanak be fordítási javaslatokat. Kérjük, látogasson el a jelenlegi a %s és %s, ha szeretnél segítseni nekünk." + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "fordítási együttműködés webhely" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "írjon egy sort nekünk" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "Támogatás" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "Sajnáljuk, hogy problémába ütközött a WP Statisticssal, és örülünk, hogy segíthetünk. Itt van pár dolog, mielőtt kapcsolatba lépne velünk:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "Olvasd el ezt: %s?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "Gyakran Ismételt Kérdések" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "kézikönyv" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "Hasonló kérdéseket a problémával kapcsolatban a %s-on is kereshetsz." + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "Fórum" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "Keress az interneten, ha valamilyen hibaüzenetet kapsz." + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "Győződjön meg róla, hogy van hozzáférése a PHP hibanaplóhoz." + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "Az alábbi pár dolgot ellenőrizze:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "Mennyi a memory_limit a php.ini fájlban?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "Próbálta már kikapcsolni bármelyik másik bővítményt, amit telepített?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "Próbálta már az alapértelmezett WordPress témát beállítani?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "Kétszer is ellenőrozte a bővítmény beállításait?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "Minden szükséges PHP kiterjesztést telepített?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "Egy üres vagy hiányosan kitöltött oldal jelenik meg a böngészőjében? Megnézte az oldal forrását és ellenőrizze a végzetes hibákat?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "Ellenőrizte a PHP és a web szerver hiba naplóját?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "Még mindig nincs megoldva?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "Kérjük nyisson egy új beszélgetést itt: %s, és mi válaszolni fogunk amilyen hamar csak tudunk." + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "WordPress.org fórum" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "Alternatív %s támogatás is rendelkezésre áll." + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "Farsi" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "Hozzáférési szintek" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "Szükséges felhasználói szinten WP Statistics megtekintése" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "Szükséges felhasználói szinten kezelhető WP Statistics" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "Lásd a részleteket a(z) %s képesség szinten." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "WordPress szerepeit és képességeit oldal" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "Tipp: manage_network = Super Admin Network, manage_options = adminisztrátor, edit_others_posts = szerkesztő, publish_posts szerző, edit_posts = = közreműködői, olvassa el = mindenki." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "Minden a fenti casscades a jogok felfelé az alapértelmezett WordPress beállítás. Így például kiválasztja az publish_posts megadja a jogot, hogy a szerzők, szerkesztők, adminok és szuper adminok." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "Ha szüksége van a meghatalmazást erőteljesebb megoldást érdemes nézni a WordPress plugin könyvtárban (% s)." + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "Kizárások" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "Rekord kizárások" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "Engedélyezés" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "Ez rögzíti a kizárt találatok egy külön táblában az okokat, miért nem került, de nincs más információ. Ez létrehoz egy csomó adatot, de hasznos, ha azt szeretné, hogy a találatok teljes száma a webhely jelentkeznek, nem csak a tényleges felhasználói látogatások." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "Zárja ki a felhasználói szerepkörök" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "Blokkolás" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "%S szerepe kizárja az adatgyűjtés." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "IP/Robot kizárások" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "Robot lista" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "A listát a szavak (soronként egyet), felismerni a robotok elleni mérkőzésen. Tételek legalább 4 karakter hosszúnak kell lennie, vagy azokat nem veszi figyelembe." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "Alapállapot visszaállítása" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "Kényszerít robot lista frissítése után frissítések" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "Erő a robot lista alaphelyzetbe kell állítani az alapértelmezett WP Statistics frissítése után kerül sor. Megjegyzés: Ha ezt a beállítást engedélyezve van minden egyéni robotok a listára felvett lesz elveszett." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "Robot látogatási küszöb" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "Azon látogatók robotként kezelése, akiknek a napi látogatásuk magasabb, mint ez a szám (0 = kikapcsolva.)" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "Blokkolt IP-cím lista" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "10.0.0.0 hozzáadása" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "172.16.0.0 hozzáadása" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "192.168.0.0 hozzáadása" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "Honey pot post id" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "Új honey pot oldal létrehozása" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "GeoIP blokkolások" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "Blokkolt országok listája" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "Blokkolt országkódok listája (soronként csak két betű) a statisztikák adatgyűjtéshez. Használd a "000" (három nullát) hogy az ismeretlen országokat blokkold." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "Beleszámított országok listája" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "Engedélyezett országkódok listája (soronként csak két betű) a statisztikai adatgyűjtéshez, ha ez a lista nem üres, csak az engedélyezett országok látogatói kerülnek rögzítésre. Használd a "000" (három nullát), hogy az ismeretlen országokat letiltsd." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "Host blokkolások" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "Blokkolt hostok listája" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "Azon teljes host nevek listája, ahol kizárja a statisztikai adatok gyűjtését. (pl.: server.example.com, soronként egy)" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "Webhely URL-kivételek" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "Blokkolt login oldal" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "Blokkolja a login oldal találatként való regisztrálását." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "Blokkolt admin oldalak" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "Zárja ki az admin oldalak találatként való regisztrálását." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "Blokkolt RSS hírcsatornák" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "Blokkolja az RSS csatornák találatként való regisztrálását. " + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "browscap beállítások" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "browscap használat" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "Aktív" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "A browscap adatbázis le lesz töltve és robotok detektálására lesz használva." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "Frissítés browscap Info" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "Letölti a browscap adatbázist" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr " Kérjük mentse el módosításait ezen az oldalon a frissítéshez." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "Browscap DB heti frissítés ütemezése" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "Következő frissítés lesz" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "Hetente egyszer a browscap adatbázis letölthető lesz ütemezve." + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "Ez letörli a kézikönyvet a beállítások mentésekor, biztos benne?" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "Ez a szolgáltatás IP-címeket nem tárolja az adatbázisban, de ehelyett használható egyedi kivonatokat. A \"Store teljes felhasználói ügynök string\" beállítás ki lesz kapcsolva, ha ez be van jelölve. Nem lesz képes-hoz visszaszerez a jövőben, hogy visszaszerezze a helyadatokat, ha ez engedélyezve van az IP-címek." + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "Jelenlévő látogatók" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "Jelenlévő látogató" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-id_ID.mo b/plugins/wp-statistics/languages/wp_statistics-id_ID.mo new file mode 100644 index 0000000..29ad8a8 Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-id_ID.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-id_ID.po b/plugins/wp-statistics/languages/wp_statistics-id_ID.po new file mode 100644 index 0000000..943337c --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-id_ID.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in Indonesian +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-03-28 09:00:58+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: id\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "Jika fungsi gzopen () diinstal. gzopen () diperlukan agar database GeoIP bisa diunduh dengan sukses." + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "Kesalahan: fungsi download_url() atau gzopen () tidak ditemukan!" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "" + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "ERROR: Widget tidak ditemukan!" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "Memuat..." + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "Memuat ulang ..." + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "Pengunjung Tertinggi" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "Halaman optimasi" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "Diaktifkan" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "Hapus data lama per hari" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "WP Cron Job akan dijalankan setiap hari untuk membersihkan data lebih tua dari jumlah hari yang ditetapkan." + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "Hapus data lebih lama dari" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "" + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "ID Post / Halaman" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "Ask.com" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "" + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "Perbarui database yang diperlukan, kunjungi %s dan perbarui:%s" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "indeks database negara" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "tabel pencarian" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "halaman pengaturan" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "Fitur berikut dinonaktifkan, silakan pergi ke%s dan aktifkan:%s" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "Pencarian konversi tabel selesai,%d baris ditambahkan." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "Instalasi WP Statistics versi lama menyimpan hasil pencarian di tabel pengunjung an bisa mengakibatkan masalah performa pada data berukuran besar. Sebuah tabel baru telah dibuat untuk menyimpan informasi ini secara lebih rapi." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "Cari Tabel" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "Konversi" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "Lakukan konversi sekarang!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "Halaman 404" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "Tanggal" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "" + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "%s catatan berhasil dibersihkan." + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "Jumlah kunjungan harus lebih besar dari atau sama dengan 10!" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "Jumlah Kunjungan Halaman" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "Jumlah Halaman" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "Jumlah Komentar" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "Jumlah Spam" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "Jumlah Pengguna" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "Penyedia Layanan Pencarian" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "Format Angka" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "" + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "Internasional" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "Ringkasan Statistik Hits" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "Ingin menunjukkan kepada kami betapa Anda menikmati WP Statistics? Mampir halaman %s kami dan tunjukkan cinta Anda!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "donasi" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "Kirim Donasi Sekarang!" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "Tutup" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "Pilih statistik yang ingin ditampilkan." + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "Statistik" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "Jumlah Posting" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "Rentang Waktu" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "sampai" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "Mulai" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "Peringkat 5" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "Peringkat 4" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "Peringkat 3" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "Peringkat 1" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "Peringkat 2" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "Tabel Kunjungan" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "Disaring berdasarkan" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "Rentang" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "MM/DD/YYYY" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "Gunakan bahasa Inggris" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "Bahasa" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "365 Hari Terakhir (Tahun)" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "30 Hari Terakhir (Bulan)" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "7 Hari Terakhir (Minggu)" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "Yahoo!" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "Yandex" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "clearch.org" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "DuckDuckGo" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "Bing" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "Baidu" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "Halaman Login" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "Halaman Admin" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "Pencocokan IP" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "Robot" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "Saat ini tidak ada pengguna yang online." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "Mengaktifkan atau menonaktifkan fitur ini" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "Mengecek user online setiap" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "Detik" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "Waktu untuk cek akurat pengguna online di situs. Sekarang: %s detik" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "Rekam semua pengguna" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "Menyimpan seluruh pengguna agen string" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "Hanya diaktifkan untuk debugging" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "Koefisiensi per pengunjung" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "Untuk setiap kunjungan untuk mendata beberapa hit. Saat ini %s." + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "Halaman" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "Melacak semua halaman" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "Buang parameter dari URI" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "Anda akan menghapus semua setelah ? dalam URL." + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "Menonaktifkan hits kolom di daftar posting/halaman" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "Lain-lain" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "Tampilkan statistik pada menu bar" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "Tidak" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "Ya" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "Menampilkan statistik pada halaman admin" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "Sembunyikan pemberitahuan untuk admin tentang fitur yang tidak aktif" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "Secara default WP Statistics menampilkan peringatan jika salah satu fitur inti dinonaktifkan pada setiap halaman admin, opsi ini akan menonaktifkan pemberitahuan ini." + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "Hapus manual" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "Secara default WP Statistics toko admin manual dalam direktori plugin (~ 5 meg), jika opsi ini diaktifkan akan dihapus sekarang dan selama upgrade di masa depan." + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "Menonaktifkan semua mesin pencari tidak diperbolehkan. Apabila dilakukan, semua mesin pencari akan aktif." + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "menonaktifkan" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "Mematikan %s dari pengumpulan data dan pelaporan." + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "Grafik" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "Termasuk Total" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "Menambahkan baris total grafik dengan beberapa nilai, seperti arahan mesin pencarian" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "Pengaturan GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "IP lokasi layanan yang disediakan oleh GeoLite2 data yang dibuat oleh MaxMind, tersedia dari %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "GeoIP koleksi" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "Untuk mendapatkan informasi lebih lanjut dan lokasi (negara) dari pengunjung, mengaktifkan fitur ini." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "Memperbarui GeoIP Info" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "Ambil GeoIP Database" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "Jadwal bulanan pembaruan GeoIP DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "Download GeoIP database akan dijadwalkan selama 2 hari setelah hari Selasa pertama bulan." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "Opsi ini juga akan download database jika filesize lokal adalah kurang dari 1k (yang biasanya berarti rintisan yang datang dengan plugin ini masih di tempat)." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "Mengisi GeoIP hilang setelah update GeoIP DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "Memperbarui data GeoIP hilang setelah men-download database baru." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "Koleksi GeoIP dinonaktifkan karena alasan berikut:" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "Koleksi GeoIP memerlukan PHP %s atau di atas, saat ini dinonaktifkan karena menjadi versi PHP diinstal " + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "Koleksi GeoIP memerlukan ekstensi PHP cURL dan tidak diambil pada versi PHP!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "Koleksi GeoIP memerlukan ekstensi PHP matematika BC dan tidak diambil pada versi PHP!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "Mode PHP aman terdeteksi! Koleksi GeoIP tidak didukung dengan PHP mode aman diaktifkan!" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "Ini akan secara permanen menghapus data dari database setiap hari, Apakah Anda yakin Anda ingin mengaktifkan opsi ini?" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "Hari" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "Jumlah hari untuk menjaga statistik untuk. Nilai minimum adalah 30 hari. Nilai-nilai yang tidak valid akan menonaktifkan pemeliharaan harian." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "Alamat e-mail" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "Laporan Statistik" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "Jadwal" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "Mengirim laporan melalui" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "Email" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "Catatan: Untuk mengirim SMS teks pesan silahkan install %s plugin." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "WordPress SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "Laporan tubuh" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "User sedang online" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "Pengunjung hari ini" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "Pengunjung Hari ini" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "Pengunjung kemarin" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "Kemarin" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "Total pengunjung" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "Jumlah Pengunjung" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "Tidak ada" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "Tentang" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "" + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "Google" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "Menonaktifkan peta" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "Menonaktifkan tampilan peta" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "Umum" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "Pemeliharaan" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "Update" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "Sekali seminggu" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "Setiap 2 minggu sekali" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "Setiap 4 minggu" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "Statistik" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "Tampilkan statistik situs di sidebar." + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "Total tampilan halaman" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "Jumlah Posting" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "Jumlah Halaman" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "Jumlah Komentar" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "Jumlah Spam" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "Jumlah Anggota" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "Rata-rata Posting" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "Rata-rata Komentar" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "Rata-rata Anggota" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "Tanggal Posting Terakhir" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "Nama" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "Butir" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "Pengunjung Kemarin" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "Pilih opsi untuk mesin pencari" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "" + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "WP Statistics" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "Statistik lengkap untuk situs WordPress Anda." + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "Pengaturan" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "Klik di sini untuk mengunjungi plugin di WordPress.org" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "Kunjungi halaman WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "Klik di sini untuk menilai dan meninjau plugin ini di WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "Menilai plugin ini" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "WP Statistics - Hits" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "Ikhtisar" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "Pencarian" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "Kata-kata pencarian" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "Optimasi" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "Manual" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "Pengunjung hari ini" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "Hari ini mengunjungi" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "Pengunjung kemarin" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "Lihat statistik" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "Men-download ODF file" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "Men-download HTML file" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "Manual file tidak ditemukan." + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "Anda tidak mempunyai akses yang cukup untuk halaman ini" + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "Men-download GeoIP database dari kesalahan: %s - %s" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "Kesalahan tidak dapat membuka database GeoIP download untuk membaca: %s" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "Kesalahan tidak dapat membuka tujuan GeoIP database untuk menulis %s" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "GeoIP Database diperbarui berhasil!" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "Men-download browscap database dari kesalahan: %s - %s" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "database browscap yang berhasil!" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "browscap sudah di versi saat ini!" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "Top 10 browser" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "Top 10 negara" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "Statistik hit" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "Top 10 halaman" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "Pengunjung terkini" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "Top merujuk situs" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "Cari mesin arahan" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "Ringkasan" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "Kata-kata pencarian terbaru" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "" + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "Tidak dapat memuat GeoIP database, pastikan Anda telah men-download di halaman pengaturan." + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "Diperbarui %s GeoIP record di database pengunjung." + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "data %s lebih tua dari %s hari dibersihkan berhasil." + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "Tidak ada catatan ditemukan untuk membersihkan dari %s!" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "Silakan pilih nilai lebih dari 30 hari." + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "Browser Statistik" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "Klik untuk beralih" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "Browser" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "Browser berdasarkan jenis" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "Platform" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "Browser oleh platform" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "Versi %s" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "Perhatian: Pengecualian tidak saat ini diatur untuk direkam, hasil di bawah ini mungkin tidak mencerminkan Statistik!" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "Pengecualian Statistik" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "10 hari" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "20 hari" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "30 hari" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "2 bulan" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "3 bulan" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "6 bulan" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "9 bulan" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "1 tahun" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "Grafik Statistik pengecualian" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "Dikecualikan hits di terakhir" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "hari" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "Jumlah hit dikecualikan" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "Grafik Statistik hits" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "Hits di terakhir" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "Jumlah kunjungan dan pengunjung" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "Kunjungi" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "Pengunjung" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "Cari kata Statistik terbaru" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "#hash #" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "Peta" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "Halaman" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "Dari" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "Semua" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "Statistik pengunjung terkini" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "Halaman tren untuk posting ID" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "Halaman tren" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "Cari mesin arahan Statistik" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "Cari mesin arahan dalam terakhir" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "Jumlah arahan" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "Total" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "Negara teratas" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "Peringkat" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "Bendera" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "Negara" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "Jumlah pengunjung" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "Atas halaman" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "Atas 5 Halaman tren" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "Top 5 halaman statistik tren" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "Jumlah Hits" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "Judul Halaman tidak ditemukan" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "Kunjungan" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "Akan ditambahkan segera" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "Merujuk situs dari" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "Referensi" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "Tentang WP Statistics Versi %s" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "Situs web" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "Tingkat dan Review" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "Informasi lebih lanjut" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "Produk ini termasuk data GeoLite2 yang dibuat oleh MaxMind, tersedia dari %s." + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "Lainnya" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "Hari peta pengunjung" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "Alamat" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "Pengguna Online" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "Hari ini" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "Kemarin" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "Harian Total" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "Saat ini waktu dan tanggal" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "(Penyesuaian)" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "Tanggal: %s" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "Waktu: %s" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "Hits" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "Akses ditolak!" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "%s agen data dihapus berhasil." + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "Pilih item yang dikehendaki." + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "%s platform data dihapus berhasil." + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "data tabel %s berhasil dihapus." + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "Kesalahan, %s tidak dikosongkan!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "Database Setup" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "Kembali menjalankan instalasi" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "Instal sekarang!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "Jika untuk beberapa alasan Anda instalasi WP Statistics tidak ada tabel database atau item inti lainnya, ini akan mengeksekusi ulang pernyataan proses instalasi." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "Indeks database" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "Negara" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "Perbarui sekarang!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "Remaja menginstal WP Statistics memungkinkan untuk entri duplikat dalam tabel pengunjung dalam kasus sudut. Menginstall baru melindungi terhadap ini dengan indeks unik di atas meja. Untuk membuat indeks di menginstall remaja entri duplikat harus dihapus terlebih dahulu. Mengklik \"Update Now\" akan memindai tabel vistitors, menghapus entri duplikat dan menambahkan indeks." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "Operasi ini dapat mengambil waktu lama untuk menginstal dengan banyak baris dalam tabel pengunjung." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "Remaja menginstal WP Statistics memungkinkan untuk entri duplikat dalam tabel pengunjung dalam kasus sudut. Menginstall baru melindungi terhadap ini dengan indeks unik di atas meja." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "Selamat, instalasi ini sudah sampai tanggal, tidak ada hubungannya." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "Ekspor" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "Ekspor dari" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "Silakan pilih" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "Pilih tabel untuk output file." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "Ekspor ke" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "Pilih jenis file output." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "Termasuk baris Header" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "Sertakan baris header sebagai baris pertama dari file yang diekspor." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "Mulai sekarang!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "Pengunjung" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "Kamu yakin?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "Data" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "Meja kosong" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "Semua tabel data akan hilang." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "Jelas sekarang!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "Membersihkan lebih tua dari catatan" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "Dihapus pengguna data statistik lebih tua dari nomor yang dipilih hari. Nilai minimum adalah 30 hari." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "Membersihkan sekarang!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "Menghapus jenis agen pengguna" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "Hapus agen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "Semua data pengunjung akan hilang untuk jenis agen ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "Menghapus sekarang!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "Menghapus platform" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "Semua data pengunjung akan hilang untuk jenis platform ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "Sumber daya" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "Penggunaan memori di PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "Byte" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "Batas memori PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "Batas memori script diperbolehkan mengkonsumsi, mengatur dalam php.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "Jumlah baris dalam tabel %s" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "Baris" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "Jumlah baris" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "Versi Info" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "Versi WP Statistics" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "Versi WP Statistics Anda menjalankan." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "Versi PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "Versi PHP yang Anda jalankan." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "Mode PHP aman" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "Adalah Mode PHP aman aktif. Kode GeoIP tidak didukung dalam Mode aman." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "jQuery versi" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "Versi jQuery Anda menjalankan." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "cURL versi" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "cURL tidak diinstal" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "PHP cURL versi ekstensi Anda menjalankan. cURL diperlukan untuk kode GeoIP, jika tidak diinstal GeoIP akan dinonaktifkan." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "Diinstal" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "Tidak diinstal" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "Informasi file" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "GeoIP Database" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "Database file tidak ada." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr ", dibuat pada " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "Ukuran file dan tanggal GeoIP database." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "browscap.ini File" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "browscap.ini file tidak ada." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "Ukuran file dan tanggal berkas browscap.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "browscap Cache File" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "browscap cache file tidak ada." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "Ukuran file dan tanggal browscap cache file." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "Info klien" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "Klien IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "Alamat IP klien." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "Agen pengguna" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "Klien user agent string." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "Ini akan mengganti semua alamat IP di database dengan nilai hash dan tidak bisa membatalkan, Apakah Anda yakin?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "GeoIP pilihan" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "Update data lokasi tak diketahui dalam database, ini mungkin berlangsung agak lama" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "Alamat IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "Alamat IP hash" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "Mengganti alamat IP dalam database dengan nilai hash, Anda tidak akan dapat memulihkan alamat IP di masa depan untuk mengisi informasi lokasi setelah itu dan ini mungkin berlangsung agak lama" + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "Alamat IP diganti dengan nilai hash." + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "Menginstal rutin lengkap." + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "Sumber-sumber/informasi" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "Membersihkan" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "Database" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "Update" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "WP Statistics V %s" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "Kunjungi kami secara Online" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "Datang mengunjungi kami %s baru yang besar dan tetap up to date berita terbaru tentang WP Statistics." + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "situs web" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "Menilai dan meninjau di WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "Terima kasih untuk menginstal WP Statistics, kami mendorong Anda untuk mengirimkan " + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "peringkat dan ulasan" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "lebih di WordPress.org. Tanggapan Anda sangat dihargai!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "Terjemahan" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "WP Statistics mendukung internasionalisasi dan kami menghimbau para pengguna untuk mengirimkan terjemahan, silakan kunjungi kami %s untuk melihat status saat ini dan %s jika Anda ingin membantu." + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "situs terjemahan kolaborasi" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "drop kami baris" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "Dukungan" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "Kami minta maaf Anda mengalami masalah dengan WP Statistics dan kami senang untuk membantu. Berikut adalah beberapa hal yang harus dilakukan sebelum menghubungi kami:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "Apakah Anda membaca %s?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "Tanya jawab" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "manual" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "Apakah Anda mencari %s untuk masalah serupa?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "dukungan forum" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "Apakah Anda mencari di Internet untuk setiap pesan error yang Anda terima?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "Dan beberapa hal untuk Periksa:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "Bagaimana Apakah Anda memory_limit dalam php.ini?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "Apakah Anda mencoba menonaktifkan plugin lain yang Anda mungkin telah menginstal?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "Apakah Anda mencoba menggunakan default WordPress theme?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "Apakah Anda memeriksa pengaturan plugin?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "Apakah Anda memiliki semua ekstensi PHP diperlukan diinstal?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "Apakah Anda mendapatkan halaman kosong atau tidak lengkap yang ditampilkan dalam browser Anda? Apakah Anda lihat sumber halaman dan memeriksa kesalahan fatal?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "Apakah Anda memeriksa Anda PHP dan web log kesalahan server?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "Masih tidak memiliki keberuntungan?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "Kemudian silahkan buka thread baru pada %s dan kami akan merespon secepat mungkin." + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "WordPress.org dukungan forum" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "Atau %s dukungan tersedia juga." + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "Farsi" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "Tingkat akses" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "Diperlukan tingkat pengguna untuk melihat WP Statistics" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "Tingkat pengguna diperlukan untuk mengelola WP Statistics" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "Lihat %s untuk rincian pada tingkat kemampuan." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "Halaman WordPress peran dan kemampuan" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "Petunjuk: manage_network = Super Admin jaringan, manage_options = Administrator, edit_others_posts = Editor, publish_posts = penulis, edit_posts = kontributor, membaca = semua orang." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "Masing-masing casscades di atas hak-hak ke atas dalam konfigurasi default WordPress. Jadi misalnya memilih publish_posts hibah hak untuk penulis, editor, admin dan Super admin." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "Jika Anda memerlukan solusi yang lebih kuat untuk mendelegasikan akses Anda mungkin ingin melihat %s di WordPress plugin direktori." + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "Pengecualian" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "Catatan pengecualian" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "Mengaktifkan" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "Ini akan merekam semua hits dikecualikan didalam table yang terpisah dengan alasan mengapa itu dikeluarkan tetapi tanpa informasi lain. Ini akan menghasilkan banyak data tetapi berguna jika Anda ingin melihat jumlah hits situs Anda mendapat, kunjungan pengguna tidak hanya aktual." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "Mengecualikan peran pengguna" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "Mengecualikan" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "Mengecualikan peranan dari pengumpulan data." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "IP Robot pengecualian" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "Daftar robot" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "Daftar kata (satu per baris) untuk mencocokkan terhadap untuk mendeteksi robot. Entri harus minimal 4 karakter atau mereka akan diabaikan." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "Reset ke Default" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "Kekuatan robot daftar update setelah upgrade" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "Kekuatan Daftar robot diatur ulang ke default setelah update ke WP Statistics berlangsung. Catatan Jika opsi ini diaktifkan setiap kustom robot Anda telah ditambahkan ke daftar akan hilang." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "Daftar alamat IP dikecualikan" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "Tambahkan 10.0.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "Tambahkan 172.16.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "Tambahkan 192.168.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "Situs URL pengecualian" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "Halaman login dikecualikan" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "Mengecualikan halaman login untuk mendaftar sebagai hit." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "Halaman admin dikecualikan" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "Mengecualikan halaman admin untuk mendaftar sebagai hit." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "pengaturan browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "browscap penggunaan" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "Aktif" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "Browscap database akan didownload dan digunakan untuk mendeteksi robot." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "Memperbarui browscap Info" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "Men-download browscap Database" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "Simpan perubahan pada Halaman ini untuk men-download pembaruan." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "Jadwal mingguan update dari browscap DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "Update berikutnya akan" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "Download browscap database akan dijadwalkan untuk sekali seminggu." + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "Ini akan menghapus manual ketika Anda menyimpan pengaturan, Anda yakin?" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "Fitur ini tidak akan menyimpan alamat IP dalam database tetapi sebaliknya digunakan hash unik. \"Store seluruh pengguna agen string\" pengaturan akan dinonaktifkan jika ini dipilih. Anda tidak akan dapat memulihkan alamat IP di masa depan untuk memulihkan informasi lokasi jika ini diaktifkan." + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "Pengguna Online" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "Pengguna online" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-it_IT.mo b/plugins/wp-statistics/languages/wp_statistics-it_IT.mo new file mode 100644 index 0000000..aa5bfea Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-it_IT.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-it_IT.po b/plugins/wp-statistics/languages/wp_statistics-it_IT.po new file mode 100644 index 0000000..8d86fc6 --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-it_IT.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in Italian +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2015-04-22 00:41:25+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: it\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "" + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "" + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "" + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "" + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "" + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "" + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "" + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "" + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "" + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "MM/DD/YYYY" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "Attivare o disattivare questa caratteristica" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "Check per utenti online ogni" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "Secondo" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "Time per il controllo preciso utente online nel sito. Ora: %s secondo " + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "Memorizza per intero la stringa agente dell'utente" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "Abilitata solo per il debug" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "Coefficiente per ogni visitatore" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "Per ogni visita tenere conto di parecchi Hits. Attualmente %s." + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "Pagine" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "Tenere traccia di tutte le pagine" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "Disabilita la colonna con il conteggio dei post/pagine" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "Varie" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "Statistiche Visualizza nella barra dei menu" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "No" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "Sì" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "Visualizza statistiche nella barra dei menu admin" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "Nascondi gli avvisi sulle funzionalità non attive" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "Di default Wp Statistics mostra un'avviso, su ogni pagina dell'amministrazione, se una o più delle funzioni principali sono disabilitate. Questa opzione disattiverà gli avvisi" + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "Cancella la documentazione" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "Di default Wp Statistics memorizza il manual nella directory dei plugins (Circa 5 Mb). Se questa opzione è abilitata, verrà eliminato anche dai future aggiornamenti." + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "Non è consentita la disattivazione di tutti i motori di ricerca. Deselezionarli tutti comporterà l'attivazione di tutti i motori di ricerca." + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "Disabilta" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "Disabilita %s dalla raccolta dei dati e reporting." + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "Grafici" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "Includi totali" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "Aggiunge una riga con i totali dei grafici." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "impostazioni GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "Servizi di localizzazione IP forniti da GeoLite2 dati creati da MaxMind, disponibili da %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "Per ottenere ulteriori informazioni e luogo (nazione) dal visitatore, attivare questa funzione." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "Aggiorna info GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "Scarica Database GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "Pianificazione aggiornamento mensile di GeoIP DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "Download del database GeoIP sarà programmato per 2 giorni dopo il primo" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "Questa opzione scaricherà anche il database se la dimensione del file locale è minore di 1k." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "Popola i dati mancanti di GeoIP dopo l'aggiornamento del DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "Aggiornare dati GeoIP mancanti dopo aver scaricato un nuovo database." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "Collezione GeoIP è disabilitata per i seguenti motivi:" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "GeoIP richiede PHP %s o superiore. Attualmente è disabilitato a causa della versione non corretta di PHP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "Raccolta di GeoIP richiede l'estensione PHP cURL che attualmente non è presente sul tuo Sistema." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "Raccolta di GeoIP richiede l'estensione PHP Math BC che attualmente non è presente sul Sistema." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "PHP safe mode rilevata! GeoIP non è supportata con di questa modalità di PHP attivata!" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "Questo eliminerà permanentemente i dati dal database ogni giorno, sei sicuro di abilitare questa opzione?" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "Giorni" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "Il numero di giorni per mantenere le statistiche. Valore minimo è di 30 giorni. " + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "Indirizzi di posta elettronica" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "Segnalazione statistica" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "Calendario" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "Invia report tramite" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "E-mail" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "Nota: Per inviare messaggi di testo SMS si prega di installare il plugin %s." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "SMS WordPress" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "Corpo del Report" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "Utenti Online" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "Visitatori Oggi" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "Visite Oggi" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "Visitatori Ieri" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "Visite Ieri" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "Visitatori Totali" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "Visite Totali" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "Nessuo" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "Su di noi" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "" + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "Google" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "Disabilita mappa" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "Disattivare la visualizzazione della mappa" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "Generale" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "Manutenzione" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "Aggiorna" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "Una volta alla settimana" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "Una volta ogni 2 settimane" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "Una volta ogni 4 settimane" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "Statistiche" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "Visualizza statistiche del sito nella barra laterale." + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "Totale Pagine Viste" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "Messaggi Totali" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "Totale Pagine" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "Totale Commenti" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "Spam Totale" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "Totale Utenti" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "Media Messaggi" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "Media Commenti" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "Utenti Medi" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "Data Ultimo Post" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "Nome" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "Oggetti" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "Visite di ieri" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "Selezionare il tipo di motore di ricerca" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "" + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "WP Statistics" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "Statistiche complete per il tuo sito WordPress." + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "Impostazioni" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "Clicca qui per vedere il plugin su WordPress.org" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "Pagina visita WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "Clicca qui per votare e vedere questo plugin su WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "Vota questo plugin" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "WP Statistics – Hits" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "Panoramica" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "Ricerche" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "Parole di Ricerca" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "Top Visite Odierne" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "Ottimizzazione" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "Manuale" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "Visitatori di oggi" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "Visite di oggi" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "Visitatori di ieri" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "Vedi Statistiche" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "Scarica file ODF" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "Scarica file HTML" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "File con il manuale non trovato." + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "Non si dispone delle autorizzazioni sufficienti per accedere a questa pagina." + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "Errore download database GeoIP da: %s - %s" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "Errore impossibile aprire in lettura il database di GeoIP scaricato: %s" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "Errore impossibile aprire in scrittura il database di GeoIP selezionato: %s" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "Database GeoIP aggiornato con successo!" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "Errore download browscap database da: %s - %s" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr ":Errore download browscap database da" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "browscap è già alla versione corrente!" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "Top 10 Browsers" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "Top 10 Paesi" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "Statistiche Hits" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "Top 10 Pagine" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "Visitatori Recenti" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "Top Siti Referrals" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "Cerca tra i Referrals nei motori di ricerca:" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "Sommario" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "Ultime Parole di Ricerca" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "" + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "Impossibile caricare il database GeoIP, assicurarsi che lo sia stato scaricato dalla pagina di configurazione." + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "Aggiornati %s record GeoIP nel database visitatori." + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "dati %s meno %s giorni eliminati con successo." + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "Nessun record trovato per pulire da %s!" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "selezionare un valore di oltre 30 giorni." + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "Statistiche Browser" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "Fare clic per attivare" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "Browsers" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "Tipo di Browser" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "Piattaforma" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "Browser di piattaforma" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "%s Versione" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "Attenzione!!: Le Esclusioni al monento non sono registrate. I risultati potrebbero non essere in linea con le statistiche correnti." + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "Statistiche Esclusioni" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "10 Giorni" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "20 Giorni" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "30 Giorni" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "2 Mesi" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "3 Mesi" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "6 Mesi" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "9 Mesi" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "1 Anno" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "Grafico Statistico delle Esclusioni" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "Hits non conteggiati negli ultimi" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "giorni" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "Numero di esclusioni per Hits" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "Grafico Statistiche Hits" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "Hits negli ultimi" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "Numero di visite e visitatori" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "Visita" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "Visitatore" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "Ultime Statistiche Parola di Ricerca" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "#hash#" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "Mappa" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "Pagina" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "Da" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "Tutti" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "Recenti Statistiche dei Visitatori" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "Trend per Post ID Della Tua Pagina" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "Tendenza delle pagine" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "Statistiche Referral dai Motori di Ricerca" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "Rinvii dai motori di ricerca negli ultimi" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "Numero di rinvii" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "Totale" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "Top Nazioni" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "Rango" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "Bandiera" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "Paese" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "Conteggio visitatori" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "Top Pagine" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "Top 5 Pagine di tendenza" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "Top 5 statistiche sulle pagine di tendenza" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "Numero di Hits" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "Nessun titolo di pagina trovato" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "Visite" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "Verranno aggiunte presto" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "Siti Referral da" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "Riferimenti" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "Riguardo la versione di WP Statistics %s" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "Sito Web" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "Tasso e Review" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "Ulteriori Informazioni" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "Questo prodotto comprende I dati GeoLite2 creati da MaxMind, disponibili da %s." + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "Altri" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "Mappa Visitatori di Oggi" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "Indirizzo" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "Utenti Online" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "Oggi" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "Ieri" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "Totale giornaliero" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "Ora e data attuale" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "(Regolazione)" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "Data: %s" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "Ora: %s" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "Hits" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "Accesso negato!" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "%s dati agente cancellati con successo." + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "Selezionare le voci desiderate." + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "%s dati piattaforma eliminati con successo." + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "dati di tabella %s cancellati con successo." + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "Errore, %s non svuotato!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "Configurazione Database" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "Eseguire nuovamente l'installazione" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "Installa ora!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "Se per qualche motivo l'installazione di statistiche WP non troverà delle tabelle su DB o altri oggetti funzionali, questa funzione ripeterà il processo di installativo." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "Database Index" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "Paesi" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "Aggiorna Ora!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "Le vecchie installazioni di Wp Statistics permettevano la registrazione di dati duplicate nella tabella dei visitatori. Le nuove installazioni proteggono la tabella grazie ad un indice unico. Per creare questo indice devi cancellare tutte le entries duplicate. Cliccando \"Update Now\" inizierai la scansione della tabella vistitors, eliminerai le voci duplicate e verrà aggiunto l'indice." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "Questa operazione potrebbe richiedere molto tempo su siti che hanno molti dati nelle tabelle dei visitatori." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "Le vecchie installazioni di Wp Statistics permettevano la registrazione di dati duplicate nella tabella dei visitatori. Le nuove installazioni proteggono la tabella grazie ad un indice unico." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "Congratulazioni, l'installazione è già aggiornata all'ultima versione, non devi fare altro." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "Esporta" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "Esporta da" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "Selezionare" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "Selezionare la tabella per il file di output." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "Export su" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "Selezionare il tipo di file di output." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "Include la riga di intestazione" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "Include una riga di intestazione come prima riga del file esportato." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "Inizia Ora!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "Visitatori" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "Sei sicuro?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "Dati" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "Tabella Vuota" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "Tutti i dati nelle tabelle selezionate andranno persi." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "Pulisci ora!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "Eliminazione dei record più vecchi" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "Ho eliminato i dati statistici richiesti più vecchi del numero di giorni richiesto. Il valore minimo è di 30 giorni." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "Pulisci ora!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "Eliminare i Tipi di Agente Utente" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "Cancella Agenti" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "Tutti i dati del visitatore saranno perduti per questo tipo di agente." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "Cancella ora!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "Cancella Piattaforme" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "Tutti i dati del visitatore saranno perduti per questo tipo di piattaforma." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "Risorse" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "Utilizzo della memoria in PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "Byte" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "PHP Memory Limit" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "Il limite di memoria per cui uno script è consentito funzionare, imposta il file php. ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "Numero di righe della tabella di %s" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "Riga" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "Numero di righe" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "Informazioni sulla Versione" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "Versione WP Statistics" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "La versione di WP Statistics è in esecuzione." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "Versione PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "La versione PHP è in esecuzione." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "PHP Safe Mode" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "PHP Safe Mode è attivo. Il codice di GeoIP non è supportato in modalità provvisoria." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "Versione di jQuery" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "La versione di jQuery è in esecuzione." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "cURL Versione" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "cURL non installato" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "La versione di PHP cURL che stai eseguendo. cURL è richiesto per GeoIP, se non è installato GeoIPverrà disabilitato." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "Installato" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "Non installato" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "Info File" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "GeoIP Database" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "Il File Database non esiste." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr ", creato su " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "La dimensione del file e la data del database GeoIP." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "browscap.ini File" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "File browscap.ini non esiste." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "La dimensione del file e la data del file browscap.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "browscap Cache File" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "browscap cache file non esistente." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "La dimensione del file e la data del file della cache browscap." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "Informazioni Client" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "IP Client" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "L'indirizzo IP del client." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "User Agent" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "Stringa agente del client utente" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "Questa operazione andrà a sostituire tutti gli indirizzi IP del database con i valori hash e non può essere annullata, sei sicuro?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "Opzioni GeoIP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "Aggiorna i dati di provenienza sconosciuta (Località) nel database, l'operazione potrebbe richiedere un pò di tempo." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "Indirizzi IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "Hash indirizzi IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "Sostituire gli indirizzi IP del database con i valori di hash, non sarai più in grado di recuperare gli indirizzi IP in futuro per completare le informazioni sulla posizione (Località). Questa operazione può richiedere diverso tempo." + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "Indirizzi IP sostituiti con i valori hash." + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "Installazione completa della routine." + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "Risorse/informazioni" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "Pulisci" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "Database" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "Aggiornamenti" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "WP Statistics V%s" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "Vieni a visitarci Online" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "Vieni a visitare il nostro nuovo %s e teniti aggiornato sulle ultime novità e sulle statistiche WP." + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "sito Web" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "Tasso e revisione presso WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "Grazie per l'installazione di WP statistics, ti invitiamo a inviare una" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "valutazione e recensione" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "oltre a WordPress.org. Il tuo feedback è molto apprezzato!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "Traduzioni" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "WP Statistics supporta l'internazionalizzazione del linguaggio ed incoraggiamo i nostri utenti a proporci le traduzioni da loro realizzate, si prega di visitare il nostro %s per controllare lo stato corrente delle traduzioni o %s se volete aiutarci." + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "sito di collaborazione per traduzioni" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "Mandaci un" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "Supporto" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "Siamo spiacenti, se stai avendo dei problemi con WP statistics, saremo felici di aiutarti. Prima di contattarci prova con: " + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "Hai letto il %s?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "FAQ" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "Manuale" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "Avete ricercato %s per un problema simile?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "forum di supporto" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "Hai cercato su internet per gli errori che hai ricevuto?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "E alcune cose da controllare bene:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "Com'è configuration il tuo memory_limit nel php. ini?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "Hai provato a disabilitare qualsiasi altro plugin ?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "Hai provato ad usare il tema di WordPress di default?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "Hai controllato le impostazioni del plugin?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "Hai tutte le estensioni PHP necessarie installate?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "Hai ricevuto una pagina Bianca o incomplete nel tuo browser? Hai controllato il source code della pagina e verificato errori?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "Hai controllato i log di errore del server PHP e web?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "Non hai ancora una soluzione ?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "Si prega di aprire un nuovo thread su %s e risponderemo appena possibile." + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "Forum di supporto di WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "In alternativa %s è disponibile anche il supporto." + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "Farsi" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "Livelli di accesso" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "Livello utente richiesto per visualizzare le WP Statistics" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "Livello utente richiesto per gestire le WP Statistics" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "Vedere il %s per ulteriori informazioni sui livelli di funzionalità." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "Pagina WordPress ruoli e funzionalità" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "Suggerimento: manage_network = rete di Super Admin, manage_options = Administrator,edit_others_posts = Editor, publish_posts = autore, edit_posts =Collaboratore, leggere = tutti." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "Ciascuno dei menu' a tendina gestiscono I diritti nelle configurazioni di WordPress. Ad esempio selezionando publish_posts fornisce I diritti a Autori, Editori, Amministratori e Super Amministratori." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "Se avete bisogno di una soluzione più sicura per delegare l'accesso, potresti guardare %s nella WordPress plugin directory." + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "Esclusioni" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "Esclusioni dei Record" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "Abilita" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "Questo registrerà tutti gli Hits esclusi in una tabella separata con le motivazioni dell'esclusione. Questo genererà molti dati ma è da considerarsi utile se vuoi sapere il numero degli hits che il tuo sito riceve e non soltanto le visite." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "Escludi ruoli utente" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "Escludi" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "Excludi %s ruolo dalla collection dei dati." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "Esclusioni IP/Robot" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "Elenco dei Robot" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "Un elenco di parole (una per linea) da inserire per rilevare i robots. Le parole devono essere di almeno 4 caratteri o verranno ignorate." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "Riporta a configurazione standard" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "Aggiorna la lista dei robots dopo gli aggiornamenti." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "Forza il ripristino della lista dei robots di default dopo un aggiornamento di Wp Statistics. Se hai abilitato questa funzione, eventuali aggiunte manuali presenti nella lista, verranno perse." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "Elenco indirizzi IP esclusi" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "Aggiungi 10.0.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "Aggiungi 172.16.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "Aggiungi 192.168.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "Sito URL esclusioni" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "Pagina di Login Esclusa" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "Escludi la pagina di login a seguito di registrazione con successo." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "Pagine Admin escluse" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "Escludi le pagine di amministrazione dal conteggio Hits" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "Impostazioni di browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "Utilizzo di browsca" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "Active" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "Il database di browscap sarà scaricato e utilizzato per rilevare i robots." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "Aggiornamento browscap Info" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "Scarica browscap Database" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "Salva i cambiamenti in questa pagina per scaricare l'aggiornamento." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "Pianificare l'aggiornamento settimanale del browscap DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "il prossimo aggiornamento sarà" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "Il download del database browscap sarà programmato per essere eseguito una volta a settimana." + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "Questo eliminerà la documentazione quando si salveranno le impostazioni, sei sicuro?" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "Questa caratteristica non memorizza gli indirizzi IP nel database ma invece utilizza un hash univoco. l'impostazione \"Archivia per intero la stringa dello user agent\" verrà disabilitata se si seleziona questa opzione. WP Statistic non sarà più in grado, da questo momento, di recuperare gli indirizzi IP e gli altri dati associati." + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "Utenti Online" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "Utenti online" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-ja.mo b/plugins/wp-statistics/languages/wp_statistics-ja.mo new file mode 100644 index 0000000..8a2c616 Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-ja.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-ja.po b/plugins/wp-statistics/languages/wp_statistics-ja.po new file mode 100644 index 0000000..2e38707 --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-ja.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in Japanese +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2015-09-06 11:23:01+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: ja_JP\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "" + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "" + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "" + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "有効" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "古いデータを消去する" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "WP cronを毎日実行し, 設定された日数よりも古いデータをすべて消去します。" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "これより古いデータを消去" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "ヒット数が多すぎる訪問者を除去する" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "WP Cronを毎日実行し, 1日のヒット数が設定された数よりも多いユーザー(おそらくボットです)の統計データを除去します." + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "訪問者を消去するために必要なヒット数. 最小値は10回です. 無効な値は, 毎日のメンテナンスを行わないようにします." + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "ページの統計情報を取得する投稿/ページID。" + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "投稿/ページID" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "Ask.com" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "統計を取得する時間を計算するために, 関数strtotime() (http://php.net/manual/en/datetime.formats.php) が使用されます. 記録された日付すべてを取得するには「合計」を使用してください." + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "訪問者追跡" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "geoipのコレクション" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "訪問データベース索引" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "データベースの更新が必要です. %sに移動し, 次のアップデートを実行してください: %s" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "国データベース索引" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "検索テーブル" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "設定ページ" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr ", " + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "次の機能が無効になっています. %sに移動して, それらを有効にしてください: %s" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "ヒットの追跡" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "オンラインユーザ追跡" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "次のプラグインテーブルがデータベースに存在しません. %sを再実行して%sをインストールしてください." + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "検索テーブル変換が完了しました. %d行が追加されました." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "古いWP Statisticsは検索の詳細情報を訪問者テーブルに保存しており, 大規模データではパフォーマンス上の問題が生じることがあります. よりスケーラブルな方法でこの情報を保存する新しいテーブルが作成されました." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "検索テーブル" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "変換" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "今すぐ変換!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "古いWP Statisticsは検索の詳細情報を訪問者テーブルに保存しており, 大規模データではパフォーマンス上の問題が生じることがあります. よりスケーラブルな方法でこの情報を保存する新しいテーブルが作成されましたが, 過去のデータを利用できるように最初に変換しなければなりません." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "リファラースパム" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "Piwikリファラースパムブラックリストデータベースのダウンロードは, 週に一度スケジュールされます." + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "外部" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "Piwikリファラースパムブラックリストの設定" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "PiwikリファラースパムブラックリストDBの毎週更新のスケジュールを設定" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "Piwikリファラースパムブラックリストデータベースをダウンロード" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "Piwikリファラースパムのブラックリスト情報を更新" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "Piwikリファラースパムのブラックリストデータベースがダウンロードされ, リファラースパムを検出するために使用されます." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "リファラースパムのブラックリストはPiwikによって提供され, %sで入手可能です." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "Piwikリファラースパムブラックリストの使用" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "破損しているブラウザ情報をボットとして扱います" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "404ページ" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "日付" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "破損したブラウザ情報(欠落しているIPアドレスまたは空のユーザーエージェント文字列)を持つ訪問者を全てロボットとして扱います。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "除外された404ページ" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "”404 -Not Found”メッセージを返す全てのURLを除外します。" + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "GeoIPデータベースディレクトリの作成中にエラーが発生しました。Webサーバーがこの中にディレクトリを作成する権限を持っていることを確認してください: %s" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "空の検索語にページタイトルを追加します。" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "検索エンジンが参照元であるにも関わらず検索問い合わせが含まれていない場合、このオプションは、ユーザーが探しているかもしれないものを識別するために役立つようにページタイトルを\"~:\"で始まる引用で置き換えます。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "これ以上の訪問者を除去" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "ヒット" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "一日に定義された数よりも多くヒットしたために削除されたユーザの統計データ。これはあなたのサイトがボットにアクセスされたときに古いデータをクリアするのに役立ちます。これは、訪問者とそのサイトへのヒットを削除しますが、個々のページのヒットは利用毎には記録されないので削除しません。最小値は10ヒットです。" + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "パージすべきユーザは見つかりませんでした。" + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "%s のレコードが正常にパージされました。" + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "ヒット数は10以上でなければなりません!" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "ページ訪問数" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "ページ数" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "コメント数" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "スパム数" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "ユーザ数" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "投稿数の平均" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "コメント数の平均" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "ユーザ数の平均" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "検索プロバイダ" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "統計情報を取得するための検索プロバイダ" + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "数の書式" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "数値を表示する形式: 国際化, 英語, なし​​" + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "英語" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "インターナショナル" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "ヒット数統計の概要" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "チャート合計" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "全時間の合計" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "WP Statisticsへの寄付について考えたことはありますか?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "寄付します" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "あなたがWP Statisticsにどれくらい喜んでいるか私たちに教えてもらえませんか? 私たちの%sページで援助して, 私たちに愛の手を!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "寄付" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "今すぐ寄付します!" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "クローズ" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "表示したい統計情報を選択します。" + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "統計" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "投稿数" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "時間範囲" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "〜" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "行く" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "ランキング#5" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "ランキング#4" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "ランキング#3" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "ランキング#1" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "ランキング#2" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "訪問数の表" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "古いWP Statisticsは境界状態で訪問者テーブルに重複エントリを許容します。新しいインストールでは、テーブルに一意の索引を作成しこれを防止します。古いインストールに索引を作成するには、最初に重複エントリを削除する必要があります。「今すぐ更新」をクリックすると、訪問者テーブルをスキャンし、重複エントリを削除し、索引を追加します。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "インストール済みの訪問テーブル内に多くの行がある場合、この操作には長い時間がかかることがあります。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "WP Statisticsの古いインストールは境界状態で訪問テーブルに重複エントリを許容します。新しいインストールは、テーブルに一意の索引を作成しこれを防止します。" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "によってフィルタ" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "範囲" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "MM/DD/YYYY" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "翻訳を使用せず、代わりにWP Statisticsの英語版デフォルトを使用する(2ページの読み込みが必要です)" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "英語を使う" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "言語" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "注: このオプションは、URLパラメータ (?の以降全て) を処理せずスクリプト名のみ処理します。2文字未満のエントリは無視されます。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "統計収集から除外するローカルURLのリスト(すなわち /wordpress/about, 1行に1つずつ)" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "除外URLリスト" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "除外URL" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "最近の365日 (年)" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "最近の30日 (月)" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "最近の7日間 (1週間)" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "Yahoo!" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "Yandex" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "clearch.org" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "DuckDuckGo" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "Bing" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "百度" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "フィード" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "ユーザーの役割" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "ログインページ" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "管理者ページ" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "自己参照" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "IPマッチ" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "ロボット" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "現在、オンライン中のユーザはいません。" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "ロボットのしきい値" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "ハニーポット" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "ページ傾向統計" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "ホスト名" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "この機能を有効または無効にします" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "すべてのオンライン·ユーザーの確認" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "秒" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "サイト内のオンライン·ユーザーを正確にチェックするための時間。現在値: %s秒" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "すべてのユーザーを記録" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "除外設定を無視し、すべてのオンライン(自己参照とロボットを含む)ユーザーを記録します。トラブルシューティングにのみ使用されるべきです。" + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "全ユーザーエージェント文字列を格納します" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "デバッグ時のみ有効にする" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "訪問者あたりの係数" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "それぞれの訪問について複数のヒットを考慮する。現在値は%s。" + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "ページ" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "すべてのページを追跡" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "URIからパラメータを除去する" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "URLの?以降を除去します。" + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "投稿/ページリストのヒット列を無効にします" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "各種" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "メニューバーに統計を表示する" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "いいえ" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "はい" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "統計情報を管理者メニューバーに表示します" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "有効でない機能に関する管理者への通知を非表示にします" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "コア機能のいずれかが無効になっている場合は、デフォルトではWP Statisticsはすべての管理ページで警告を表示しますが、このオプションは、これらの通知を無効にします。" + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "マニュアルの削除" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "デフォルトではWP Statisticsは管理マニュアルをプラグインディレクトリ(~5 MB)に格納しますが、このオプションを有効にすると現在および将来のアップグレード時に削除されます。" + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "サーチエンジン" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "すべての検索エンジンを無効にすることは許されません。そうすると全ての検索エンジンが有効になります。" + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "無効にします" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "データ収集およびレポートにおいて%sを無効にします。" + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "チャート" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "合計を含めます" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "検索エンジンへの参照のように、複数の値を持つチャートについて全行を追加します。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "GeoIPの設定" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "MaxMindによって作成されたGeoLite2データによって提供されるIPロケーションサービス, %sから入手可能" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "GeoIPコレクション" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "訪問者からより多くの情報と場所(国)を取得するために、この機能を有効にしてください。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "GeoIP情報を更新" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "GeoIPデータベースをダウンロード" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "GeoIP DBの毎月更新をスケジュールします" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "GeoIPデータベースのダウンロードは月の最初の火曜日の2日後にスケジュールされます。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "このオプションは、ローカルのファイルサイズが1K以下である場合(これは通常プラグイン付属のスタブが所定の位置にまだあることを意味します)にもデータベースをダウンロードします。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "GeoIP DBの更新後に不足のGeoIPを移入します。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "新しいデータベースをダウンロードした後、不足のGeoIPデータを更新します。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "プライベートIPアドレスの国コード" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "(ルーティング不可の)プライベートIPアドレス(すなわち10.0.0.1, 192.158.1.1, 127.0.0.1など)に使う国際標準2文字国コード(すなわちUS = 米国、CA = カナダなど)。国コードとして”Unknown”を使用するには、\"000\"(ゼロ3つ)を使用します。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "GeoIPコレクションは、以下の理由により無効になっています:" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "GeoIPコレクションはPHP %s かそれ以降が必要です. インストールされているPHPのバージョンのため現在無効になっています." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "GeoIPコレクションには、cURL PHP拡張モジュールが必要ですが、あなたがお使いのPHPにはロードされていません!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "GeoIPコレクションにはBC Math PHP拡張モジュールが必要ですが, あなたがお使いのPHPにはロードされていません!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "PHPセーフモードが検出されました! GeoIPコレクションはセーフモードが有効なPHPをサポートしません!" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "これは恒久的に毎日のデータベースからデータを削除します。このオプションを有効にしてもよろしいですか?" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "日" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "統計情報を保持する日数。最小値は30日です。無効な値は日常のメンテナンスを無効にします。" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "共通レポートオプション" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "Eメールアドレス" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "レポートを送信する電子メールアドレスのコンマ区切りリスト。" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "更新レポート" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "Browscap" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "browscap.iniが更新されるたびにレポートを送信します。" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "GeoIPデータベースが更新されるたびにレポートを送信します。" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "整理" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "データベースの整理が実行されるたびにレポートを送信します。" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "更新" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "プラグインを更新するたびにレポートを送信します。" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "統計レポート" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "スケジュール" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "統計レポートを受信する頻度を選択します。" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "経由でレポー​​トを送信" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "Eメール" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "統計レポートの配信方法を選択します。" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "注: SMSテキストメッセージを送信するには%sのプラグインをインストールしてください。" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "WordPress SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "レポート本文" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "レポートの内容を入力してください。" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "WP Statisticsのためのショートコード(使用可能なコードのリストについては, 管理マニュアルを参照してください)全てを含む, インストールされているWordPressでサポートされている全てのショートコードが, メッセージの本文でサポートされています​. ここではいくつかの例を示します." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "オンラインユーザー" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "今日の訪問者" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "今日の訪問数" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "昨日の訪問者数" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "昨日の訪問数" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "総訪問者数" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "総訪問数" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "なし" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "アバウト" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "ダッシュボード" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "以下の項目はすべてのユーザーに対して共通です。" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "ダッシュボードのウィジェットを無効にします" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "ダッシュボードのウィジェットを無効にします。" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "ページ/投稿エディタ" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "ページ/投稿エディタウィジェットを無効にします" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "ページ/投稿エディタウィジェットを無効にします。" + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "グーグル" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "地図を無効にします" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "地図表示を無効にします" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "WP Statisitcsの削除" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "WP Statisticsを削除してもデータと設定は削除されません。プラグインを削除する前にWP Statisticsのデータを削除するために、このオプションを使用することができます。" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "このフォームを送信すると、ページの読み込み時に設定が削除されます。しかし別のページの読み込みが実行されるまでは、WP Statisticsは[管理]メニューに表示されます。" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "データと設定を削除" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "削除" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "データと設定を削除し、このアクションは元に戻すことはできません。" + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "一般" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "お知らせ" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "ダッシュボード/概要" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "保守" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "削除" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "更新" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "週1回" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "2週間毎に1回" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "4週間毎に1回" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "統計" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "サイドバーにサイトの統計を表示します。" + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "総ページビュー数" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "総投稿数" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "総ページ数" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "総コメント数" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "合計スパム数" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "総ユーザー数" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "平均投稿数" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "平均コメント数" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "平均ユーザー数" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "最終投稿日" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "名" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "アイテム" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "昨日の訪問数" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "検索エンジンの種類を選択" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "WP Statisticsは削除されています。無効にして削除してください。" + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "WP Statistics" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "Word Pressサイトのための完全な統計情報を表示します。" + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "設定" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "ここをクリックして、WordPress.orgのプラグインを訪問してください" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "WordPress.orgページを訪問します" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "ここをクリックして、WordPress.orgでこのプラグインの評価とレビューをしてください。" + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "このプラグインを評価する" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "WP Statistics - ヒット" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "概要" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "オンライン" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "参照元" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "検索" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "検索ワード" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "今日のトップ訪問者" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "最適化" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "マニュアル" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "サイト" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "オプション" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "今日の訪問者" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "今日の訪問" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "昨日の訪問者" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "統計を見る" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "ODFファイルをダウンロード" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "HTMLファイルをダウンロード" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "マニュアルファイルが見つかりません。" + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "あなたがこのページにアクセスするための十分な権限がありません。" + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "WPの統計は、%s上に設置されています" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "エラー GeoIPデータベースのダウンロード中: %s - %sから" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "エラー ダウンロードしたGeoIPデータベースを読み取り時に開くことができませんでした: %s" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "エラー %sを書き込む際GeoIPデータベースをオープンできませんでした" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "GeoIPデータベースが正常に更新されました!" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "GeoIP更新" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "エラー browscapデータベースのダウンロード中: %s - %sから" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "browscapデータベースが正常に更新されました!" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "browscapデータベースの更新に失敗しました! キャッシュファイルが大きすぎます。前のbrowscap.iniに戻します。" + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "browscapデータベースの更新に失敗しました! 新しいbrowscap.iniはユーザーエージェントをクローラとして誤認識しています。前のbrowscap.iniに戻します。" + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "browscapは既に最新バージョンです!" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "Browscap.ini更新" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "クイック統計" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "トップ10ブラウザ" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "上位10カ国" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "今日の訪問者マップ" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "ヒット統計" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "トップ10ページ" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "最近の訪問者" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "トップ参照サイト" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "参照元検索エンジン" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "概要" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "最新の検索ワード" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "今日のトップ10訪問者" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "この記事はまだ公開されていません。" + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "GeoIPデータベースを読み込むことができません。設定ページでそれをダウンロードしていることを確認してください。" + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "訪問者データベースで%sのGeoIPレコードを更新しました。" + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "%sの%s日以上古いデータを正常に削除しました。" + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "%sから削除すべきレコードはありません!" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "データベース整理" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "30日以上の値を選択してください。" + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "ブラウザの統計" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "クリックして切り替えます" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "ブラウザ" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "ブラウザのタイプ別" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "プラットフォーム" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "プラットフォーム別" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "%sのバージョン" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "注意: 現在、除外を記録するように設定されていません。以下の結果が現在の統計を反映していない可能性があります!" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "除外統計" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "10日" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "20日" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "30日" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "2ヶ月" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "3ヶ月" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "6ヶ月" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "9ヶ月" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "1年" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "除外統計グラフ" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "最近除外されたヒット" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "日" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "除外ヒット数" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "ヒット数統計のチャート" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "最近のヒット" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "訪問数と訪問者数" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "訪問" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "訪問者" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "最近の検索ワード統計" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "#ハッシュ#" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "マップ" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "ページ" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "から" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "すべて" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "最近の訪問統計" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "オンラインユーザー" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "のためのオンライン" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "ポストIDのページトレンド" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "ページトレンド" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "参照元検索エンジンの統計" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "最後の参照元検索エンジン" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "参照数" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "合計" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "トップ国" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "ランク" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "フラグ" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "国" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "訪問者数" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "トップページ" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "トップ5ページのトレンド" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "トップ5ページのトレンド統計" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "ヒット数" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "ページのタイトルが見つかりません" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "訪問" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "近日追加します" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "参照サイト" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "参照" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "今日のトップ100訪問者" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "WP Statistics Version %s について" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "ウェブサイト" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "評価とレビュー" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "詳細情報" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "この製品は、%sから入手できるMaxMindによって作成されたGeoLite2データを含んでいます。" + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "その他" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "今日の訪問者マップ" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "アドレス" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "オンラインのユーザー" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "今日" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "昨日" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "毎日の合計" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "現在の日付と時刻" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "(調整)" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "日付: %s" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "時間: %sの" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "ヒット数" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "IP" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "エージェント" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "バージョン" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "アクセスが拒否されました!" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "%sのエージェントデータが正常に削除されました。" + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "削除すべきエージェントのデータはありません!" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "希望の項目を選択してください。" + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "%sのプラットフォームのデータが正常に削除されました。" + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "削除すべきプラットフォームのデータはありません!" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "%sのテーブルデータが正常に削除されました。" + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "エラー %sが空ではありません!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "データベースのセットアップ" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "インストールを再実行します" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "今すぐインストール!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "何らかの理由であなたがインストールしたWP Statisticsにデータベーステーブルまたは他の重要な項目が欠落している場合に、インストール処理を再実行します。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "データベースのインデックス" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "国" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "今すぐ更新!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "古いWP Statisticsは境界ケースで訪問者テーブルに重複エントリを許容します。新しいものは、テーブルの一意索引によりこれを防止します。古いものに索引を作成するには、最初に重複したエントリを削除する必要があります。\"今すぐ更新\"をクリックすると、訪問者テーブルをスキャンし、重複したエントリを削除し、索引を追加します。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "訪問者テーブルに多くの行がある場合、この操作によりインストールに長い時間がかかることがあります。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "古いWP Statisticsは境界ケースで訪問者テーブルに重複エントリを許容します. 新しいバージョンでは, テーブルの一意索引によりこれを防止します." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "おめでとうございます、あなたのインストールは既に最新になり、すべきことは何もありません。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "エクスポート" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "エクスポート対象" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "選択してください" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "ファイルに出力するテーブルを選択します." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "エクスポート先" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "出力ファイルの種類を選択します。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "ヘッダー行を含める" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "ヘッダー行をエクスポートするファイルの最初の行として含めます." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "今すぐスタート!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "履歴" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "注: データベースからパージしたばかりなので、番号を正しくするためにこのページをリロードする必要があります。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "訪問者" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "サイトへの訪問者数履歴の数 (現在値は%sです)。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "サイトへの訪問数履歴の数 (現在値は%sです)。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "今すぐ更新!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "本当によろしいですか?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "データ" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "テーブルを空にする" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "すべてのテーブルデータが失われます." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "今すぐクリア!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "よりも古いレコードを削除します" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "選択された日数よりも古いユーザー統計データを削除しました。最小値は30日です。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "今すぐパージ!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "ユーザーエージェントの種類を削除" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "エージェントの削除" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "このエージェントの全訪問者データは失われます。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "今すぐ削除!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "プラットフォームを削除" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "このプラットフォームの全訪問者データは失われます。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "リソース" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "PHPでのメモリ使用量" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "バイト" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "PHP使用メモリの制限" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "スクリプトが消費できるメモリの制限、php.iniで設定します。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "%sのテーブルの行数" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "行" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "行数" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "バージョン情報" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "WP Statisticsのバージョン" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "実行中のWP Statisticsのバージョン." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "PHPのバージョン" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "実行中のPHPのバージョン." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "PHPセーフモード" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "PHPセーフモードが有効かどうか示します. GeoIPのコードはセーフモードをサポートしていません." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "jQueryのバージョン" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "実行中のjQueryのバージョン." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "cURLのバージョン" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "cURLがインストールされていません" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "実行中のPHP cURL拡張のバージョン. GeoIPのコードにはcURLが必要です. インストールされていない場合, GeoIPは無効化されます." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "インストール済み" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "未インストール" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "ファイル情報" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "GeoIPデータベース" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "データベースファイルが存在しません。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr "作成日" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "GeoIPデータベースのファイルサイズと日付。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "browscap.iniファイル" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "browscap.iniファイルが存在しません。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "browscap.iniファイルのサイズと日付。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "browscapキャッシュファイル" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "browscapキャッシュファイルが存在しません。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "browscapキャッシュファイルのサイズと日付。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "クライアント情報" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "クライアントのIP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "クライアントのIPアドレス。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "ユーザーエージェント" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "クライアントのユーザーエージェント文字列。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "ブラウザ" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "検出されたクライアントのブラウザ。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "検出されたクライアントブラウザのバージョン." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "検出されたクライアントのプラットフォーム。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "これは、データベース内のすべてのIPアドレスをハッシュ値に置き換え、元に戻すことができません。本当に良いですか?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "GeoIPのオプション" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "データベース内にある未知の位置データをすべて更新します。これは時間がかかる場合があります" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "IPアドレス" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "ハッシュIPアドレス" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "データベース内のIPアドレスをハッシュ値に置き換えます。将来、位置情報を移入するためにIPアドレスを回復することはできません。これは時間がかかる場合があります" + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "IPアドレスをハッシュ値に置き換えます。" + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "イ​​ンストールルーチンが完了しました。" + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "リソース/情報" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "削除" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "データベース" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "更新" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "履歴" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "WP Statistics V%s" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "オンラインで我々を訪問します" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "是非、我々の偉大な新しい%sを訪問して、WP Statisticsについての最新ニュースを入手してください。" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "ウェブサイト" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "WordPress.orgで評価とレビュー" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "WP Statisticsをインストールいただきありがとうございます。" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "の評価とレビュー" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "をWordPress.orgで提出することをお勧めします。あなたのフィードバックは大歓迎です!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "翻訳" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "WP Statisticsは国際化をサポートしており, 私たちはユーザーに翻訳の提出をお願いしています. 現在の状態を確認するために私達の%sをご訪問いただき, 助けてもよいとお考えなら%s." + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "翻訳協力サイト" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "私たちにご連絡ください" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "サポート" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "申し訳ありませんがあなたのWP Statisticsは問題があるようですので, お助けしたいと思います. 私たちに連絡していただく前にいくつか行っていただきたいことがあります: " + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "%sを読みましたか?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "よくある質問" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "マニュアル" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "同様の問題を%sで検索しましたか?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "サポートフォーラム" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "受信したすべてのエラーメッセージをインターネットで検索しましたか?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "PHPエラーログへのアクセス権を持っていることを確認してください。" + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "ダブルチェックすること:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "php.iniのmemory_limitはどうですか?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "インストール済みの他のプラグインを無効にすることを試みたことがありますか?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "WordPressのデフォルトテーマを使用してみましたか?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "プラグインの設定をもう一度チェックしましたか?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "必要なすべてのPHP拡張モジュールがインストールされていますか?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "ブラウザに空白または不完全なページが表示されましたか? ページのソースを表示し、致命的なエラーを確認しましたか?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "PHPとWebサーバのエラーログをチェックしましたか?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "まだ足りないものはありませんか?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "それでは%sに新しいスレッドを開いてください。できるだけ早く応答します。" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "WordPress.orgのサポートフォーラム" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "あるいは, %sのサポートも利用できます." + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "Farsi" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "WP Statisticsハニーポットページ" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "これはWP Statisticsで利用するハニーポットです。削除しないでください。" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "アクセスレベル" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "WP Statisticsを表示するために必要なユーザレベル" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "WP Statisticsを管理するために必要なユーザレベル" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "権限レベルの詳細については、%sを参照してください。" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "WordPressの役割と権限のページ" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "ヒント: manage_network =スーパー管理ネットワーク、manage_options =管理者、edit_others_posts =編集者、publish_posts =投稿者、edit_posts =寄稿者、read=Everyone" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "上記のそれぞれは、デフォルトのWordPress設定では上の権限を継承します。従って例えばpublish_postsを選択すると投稿者、編集者、管理者およびスーパー管理者の権利を付与します。" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "あなたがアクセス権を委任するより堅牢なソリューションが必要な場合は、WordPressのプラグインディレクトリ内の%sで見たいと思うかもしれません。" + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "除外" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "レコードの除外" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "有効にします" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "これは, すべての除外ヒットを除外された理由だけと共に別のテーブルに記録します. これは, 大量のデータを生成しますが, 単に実際のユーザーの訪問だけでなく, あなたのサイトが取得したヒットの合計数を表示したければ便利でしょう." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "除外するユーザ役割" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "除外する" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "データ収集から%sの役割を除外します。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "IP/ロボット除外" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "ロボットリスト" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "ロボットを検出するために照合する単語のリスト(1行につき1つ)。エントリーは少なくとも4文字以上でなければ無視されます。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "デフォルトにリセット" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "アップグレード後にロボットリストを強制更新します" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "WP Statisticsの更新が行われた後にロボットリストを強制的にデフォルトにリセットします。このオプションが有効になっている場合は、リストに追加したカスタムロボットが失われることに注意してください。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "ロボット訪問の閾値" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "一日あたりの訪問がこの数以上の訪問者をロボットとして扱います。 0=無効。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "除外されたIPアドレスリスト" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "10.0.0.0を追加します。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "172.16.0.0を追加" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "192.168.0.0を追加" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "ハニーポットの使用" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "ロボットを識別するためにハニーポットのページを使用します。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "ハニーポット投稿ID" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "ハニーポットのページに使用する投稿ID。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "新しいハニーポットのページを作成します。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "GeoIPの除外" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "除外国のリスト" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "統計情報収集から除外する国コードのリスト (1行に1つずつ、2文字ずつ) です。未知の国を除外するためには「000」 (ゼロ3つ) を使用します。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "含まれる国のリスト" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "統計情報収集に含める国コードのリスト (1行に1つずつ、2文字ずつ) で、このリストが空でない場合には、リストに含まれる国からの訪問者だけが記録されます。未知の国を除外するためには「000」(ゼロ3つ) を使用します。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "ホストの除外" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "除外されたホストのリスト" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "統計収集から除外する完全修飾ホスト名 (すなわち。server.example.com、1行に1つずつ) のリストです。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "注: このオプションは、各ページの読み込みにDNS逆引き参照を実行する代わりに、提供されたホスト名のIPアドレスを、1時間キャッシュします。あなたが動的に割り当てられたホストを除外している場合、ホストがIPアドレスを変更し、記録されたヒットの結果としてキャッシュが更新されるときに、ある程度の重複が見られるかもしれません。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "サイトのURLの除外" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "除外されたログインページ" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "登録中のログインページを除外します。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "管理ページの除外" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "管理ページをヒットの登録から除外します。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "RSSフィードの除外" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "RSSフィードをヒットの登録から除外します。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "browscap設定" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "browscap利用" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "有効" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "browscapデータベースがダウンロードされ、ロボットを検出するために使用されます。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "browscap情報を更新" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "browscapデータベースのダウンロード" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "更新をダウンロードするには、このページの変更を保存します。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "browscap DBを毎週更新する" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "次の更新は" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "browscapデータベースのダウンロードが、毎週一回にスケジュールされます。" + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "これは設定を保存するときマニュアルを削除しますが、よろしいですか?" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "この機能は、データベース内にIPアドレスを格納せず、代わりに一意のハッシュを使用します。これが選択されている場合は、「全ユーザーエージェント文字列を保存」の設定は無効となります。これが有効になっている場合は、将来的に位置情報を回復するためにIPアドレスを回復することはできません。" + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "オンラインユーザ" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "オンラインユーザー" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-nl_NL.mo b/plugins/wp-statistics/languages/wp_statistics-nl_NL.mo new file mode 100644 index 0000000..c48840e Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-nl_NL.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-nl_NL.po b/plugins/wp-statistics/languages/wp_statistics-nl_NL.po new file mode 100644 index 0000000..5eedb3d --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-nl_NL.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in Dutch +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-10-19 14:18:25+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: nl\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "Laatste 365 dagen" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "Laatste 30 dagen" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "Laatste 7 dagen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "PHP IPv6 ingeschakeld" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "Is PHP gecompileerd met IPv6 support. Zo niet, dan kun je een waarschuwing zien in je PHP-log en krijg je HTTP-headers met IPv6-adresen erin." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "Een lijst met IP-adressen en subnet-maskers (een per regel) die uitgezonderd zullen worden van de statistieken." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "Zowel 192.168.0.0/24 en 192.168.0.0/255.255.255.0 formaten worden geaccepteerd voor IPv4-adressen. Gebruik een subnet-waarde van 32 of 255.255.255.255 om alleen een IP-adres te specificeren." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "Gebruik het fc00::/7 formaat voor IPv6 adressen." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "Voeg toe fc00::/7" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "Bezoeken vandaag" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "Bezoekers vandaag" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "Bezoeken gisteren" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "Bezoekers gisteren" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "Bezoeken laatste 7 dagen" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "Bezoeken laatste 30 dagen" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "Bezoeken laatste 365 dagen" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "Totaal aantal bezoeken" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "Totaal aantal bezoekers" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "Bezoeken gisteren" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "Geen overeenkomende widget gevonden!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "Zlib gzopen()" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "Als de functie gzopen() is geïnstalleerd. gzopen() is vereist om de GeoIP-databank succesvol te kunnen downloaden." + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "Fout. De download_url() of gzopen() functies bestaan ​​niet!" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "Fout bij de instellingsmachtigingen van de GeoIP database-directory. Zorg ervoor dat uw webserver machtigingen heeft om te schrijven naar mappen: %s" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "- U gebruikt een niet-ondersteunde versie van PHP." + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "WP Statistics uitgeschakeld" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "WP Statistics heeft PHP-versie %s vastgesteld, die niet wordt ondersteund WP Statistics vereist PHP-versie %s of hoger!" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "Neem contact op met uw hosting provider om naar een ondersteunde versie te upgraden of schakel WP Statistics uit om dit bericht te verwijderen." + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "FOUT: Widget niet gevonden!" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "Laden ..." + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "Herladen ..." + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "Top Bezoekers" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "optimalisatiepagina" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "Ingeschakeld" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "Verwijder dagelijks oude gegevens" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "Een WP Cron job zal dagelijks worden uitgevoerd om alle gegevens die ouder zijn dan een bepaald aantal dagen te zuiveren." + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "Verwijder data ouder dan" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "Verwijder dagelijks hoge bezoekerhits teller " + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "Een WP Cron job zal dagelijks worden uitgevoerd om eventuele statistische gegevens van gebruikers, waar de gebruiker meer hits heeft dan het gedefinieerde aantal hits in een dag, te verwijderen (oftewel het is waarschijnlijk een bot)." + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "Het aantal hits dat nodig is om de bezoeker te verwijderen. Minimale waarde is 10 hits. Ongeldige waarden zal het dagelijks onderhoud uitschakelen." + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "De bericht/pagina ID van de pagina waarop de statistieken verschijnen." + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "Bericht/Pagina-ID" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "Ask.com" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "Het tijdsspanne voor de statistieken, strtotime() (http://php.net/manual/en/datetime.formats.php) zal worden gebruikt bij het berekenen. Gebruik "totaal" om alle opgeslagen data te verkrijgen." + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "bezoeker bijhouden" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "geoIP collectie" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "bezoeker database-index" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "Database updates zijn nodig, ga naar %s en update het volgende: %s" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "landen database-index" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "zoektabel" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "instellingenpagina" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "," + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "De volgende functies zijn uitgeschakeld, ga naar %s en activeer ze: %s" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "hits volgen" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "online gebruiker volgen" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "De volgende plugin-tabel(len) bestaan niet ​​in de database, voer opnieuw de %s installatieroutine %s uit:" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "Conversie van de zoektabel compleet,%d rijen toegevoegd." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "Oudere installaties van WP Statistics slaan details van zoekopdrachten in de bezoekerstabel op. Dit kan een performance probleem voor grote datasets worden. Een nieuwe tabel is gecreëerd om deze informatie op een meer schaalbare wijze op te slaan." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "Zoektabel" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "Converteren" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "Converteer nu!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "Oudere installaties van WP Statistics slaan details van zoekopdrachten in de bezoekerstabel op. Dit kan een performance probleem voor grote datasets worden. Een nieuwe tabel is gecreëerd om deze informatie op een meer schaalbare wijze op te slaan. De oude gegevens worden eerst omgezet naar het nieuwe formaat voordat deze kunnen worden gebruikt." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "Referrer Spam" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "Download van de Piwik Referrer Spam Blacklist database is gepland voor eens per week." + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "Externe" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "Piwik Referrer Spam Blacklist instellingen" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "Plan wekelijkse een update van Piwik Referrer Spam Blacklist DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "Download Piwik Referrer Spam Blacklist Database" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "Bijwerken Piwik Referrer Spam Blacklist info" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "De Piwik Referrer Spam Blacklist database wordt gedownload en gebruikt om referrer spam te detecteren." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "Referrer spam blacklist wordt geleverd door Piwik, beschikbaar vanaf%s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "Piwik Referrer Spam Blacklist gebruik" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "Behandel corrupte browser info als een bot" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "404 Pagina's" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "Datum" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "Behandel elke bezoeker met corrupte browser info (ontbrekend IP-adres of lege user agent string) als een robot." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "Uitgesloten 404 pagina's" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "Sluit elke URL uit die een "404 - Not Found" bericht geeft." + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "Fout bij het maken van de GeoIP database-directory. Zorg ervoor dat uw webserver machtigingen heeft om mappen te maken in: %s" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "Voeg paginatitel toe om zoekwoorden te verwijderen" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "Als een zoekmachine wordt geïdentificeerd als de verwijzer maar het bevat niet de zoekopdracht, dan zal deze optie de paginatitel tussen aanhalingstekens en voorafgegaan door "~:" als zoekopdracht geven. Dit om de gebruiker te helpen bij het identificeren waar de bezoeker naar gezocht kan hebben." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "Verwijder bezoekers met meer dan" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "hits" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "Verwijderde gebruikersstatistiek-data van de gebruikers met meer dan het gedefinieerde aantal hits in een dag. Dit kan nuttig zijn voor het opruimen van oude gegevens wanneer uw site is bezocht is door een bot. Dit zal de bezoeker en de bijbehorende hits op de site te verwijderen, maar het zal niet de individuele pagina-hits verwijderen als die data niet is opgenomen op een per use basis. Minimale waarde is 10 hits." + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "Geen bezoekers gevonden om te verwijderen." + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "%s records succesvol verwijderd." + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "Aantal hits moet groter of gelijk aan 10 zijn!" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "Paginabezoeken" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "Aantal pagina's" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "Aantal commentaren" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "Spam aantal" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "Aantal gebruikers" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "Gemiddeld aantal berichten" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "Gemiddeld aantal commentaren" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "Gebruikergemiddelde" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "Zoekmachine" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "De zoekmachine waarvan de statistieken verkregen worden." + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "Getalformaat" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "Het formaat om getallen weer te geven in: i18n, Engels, geen." + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "Engels" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "Internationaal" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "Samenvatting hit-statistieken" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "Totaal van de grafiek" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "Alles" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "Heb je nagedacht om te doneren aan WP Statistics?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "Doneren" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "Zin om uw waardering voor WP-Statistics te tonen? Kom langs op onze %s pagina!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "donatie" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "Doneer nu!" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "Afsluiten" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "Selecteer de statistiek die u wilt weergeven." + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "Statistisch" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "Berichten teller" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "Tijdsduur" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "naar" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "Ga" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "Positie # 5" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "Positie # 4" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "Positie # 3" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "Positie # 1" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "Positie # 2" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "Bezoekerstabel" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "Oudere installaties van WP-statistics staan in sommige gevallen dubbele vermeldingen toe in de bezoekerstabel. Nieuwere installaties beschermen hiertegen met een unieke index. Om deze index in een oudere installatie te creëren, moeten eerst de dubbele vermeldingen verwijderd worden. Door op \"Bijwerken\" te klikken wordt de bezoekerstabel doorzocht op dubbele vermeldingen, worden de dubbele vermeldingen verwijderd en de wordt de index gecreëerd." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "Als er veel rijen in de tabel aanwezig zijn kan deze operatie enige tijd duren." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "Oudere installaties van WP-statistics staan in sommige gevallen dubbele vermeldingen toe in de bezoekerstabel. Nieuwere installaties beschermen hiertegen met een unieke index in de tabel." + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "Gefilterd op" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "Reeks" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "MM/DD/YYYY" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "Gebruik de vertalingen niet. Gebruik in plaats daarvan de standaard Engelse teksten voor WP Statistics (vereist het herladen van twee pagina's)" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "Forceer Engels" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "Talen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "Opmerking: Deze optie zal URL-parameters (alles na de ?) niet verwerken, alleen de naam van het script. Minder dan twee tekens wordt genegeerd." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "Een lijst van de lokale URL's (zoals /wordpress/over, één per regel) die uitgesloten worden van de statistieken." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "Lijst uitgesloten URL's" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "Uitgesloten URL" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "Laatste 365 Dagen (Jaar)" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "Laatste 30 dagen (maand)" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "Laatste 7 dagen (week)" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "Yahoo!" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "Yandex" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "clearch.org" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "DuckDuckGo" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "Bing" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "Baidu" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "Feeds" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "Gebruikersrol" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "Login-pagina" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "Beheerderspagina" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "Zelf-verwijzing" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "IP-match" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "Robot" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "Er zijn momenteel geen bezoekers online op de site." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "Robot Threshold" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "Honingpot" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "Pagina trending statistieken" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "Host-naam" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "In- of uitschakelen van deze functie" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "Controleer voor online bezoekers elke" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "Seconden" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "Tijd voor nauwkeurige controle van bezoekers op de site. Nu: %s seconden" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "Registreer alle bezoekers" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "Dit negeert de uitsluitingsinstellingen en registreert alle bezoekers die online zijn (waaronder zelf-verwijzingen en robots). Het is aanbevolen om dit alleen te gebruiken voor het oplossen van problemen." + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "Opslaan hele tekenreeks van de gebruikersagent" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "Alleen ingeschakeld voor foutopsporing" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "Coëfficiënt per bezoeker" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "Voor elk bezoek meerdere hits tellen. Momenteel %s." + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "Pagina 's" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "Alle pagina's bijhouden" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "Verwijder parameters van URI" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "Hierdoor wordt alles na het ? in een URL verwijderd." + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "Uitschakelen hitskolom in bericht/pagina's lijst" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "Diversen" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "Statistieken in menubalk" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "Nee" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "Ja" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "Statistieken in beheerdersmenubalk weergeven" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "Verbergen van de beheerdermededelingen over niet actieve functies" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "Standaard geeft WP Statistics een waarschuwing op elke beheerderpagina als een kernfunctie is uitgeschakeld. Met deze optie schakelt u deze mededelingen uit." + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "Verwijderen van de handleiding" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "Standaard slaat WP Statistics de beheerdershandleiding op in de plug-inmap (~ 5 meg). Als deze optie is ingeschakeld wordt deze verwijderd, nu en tijdens toekomstige upgrades." + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "Zoekmachines" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "Uitschakelen van alle zoekmachines is niet toegestaan. Het resulteert in een activering van alle zoekmachines." + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "uitschakelen" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "%s van gegevensverzameling en rapportage uitschakelen." + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "Grafieken" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "Totalen opnemen" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "Een totale lijn met meerdere waarden toevoegen aan grafieken, zoals de verwijzingen van de zoekmachine" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "GeoIP instellingen" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "IP-locatie diensten van GeoLite2-data (door MaxMind), zijn beschikbaar op %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "GeoIP-collectie" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "Deze functie inschakelen om meer informatie over de bezoeker en locatie (land) te krijgen." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "GeoIP Info bijwerken" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "GeoIP-Database downloaden" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "Maandelijkse update voor GeoIP DB plannen" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "Downloaden van de GeoIP-database zal worden gepland voor 2 dagen na de eerste dinsdag van de maand." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "Deze optie zal de database ook downloaden als de lokale bestandsgrootte minder dan 1k is (wat meestal betekent de stub die wordt geleverd met de plugin is nog steeds in plaats)." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "Ontbrekende GeoIP vullen na actualisering van GeoIP DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "Eventuele ontbrekende GeoIP gegevens bijwerken na het downloaden van een nieuwe database." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "Landcode voor privé IP-adressen" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "De internationale standaard tweeletterige landcode (bijv. US = Verenigde Staten, CA = Canada, enz.) Voor de privé (niet-routeerbare) IP-adressen (bijv. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Gebruik \"000\" (drie nullen) om \"Onbekend\" als landcode te gebruiken." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "GeoIP collectie is uitgeschakeld om de volgende redenen:" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "GeoIP collectie vereist PHP %s of boven, is het momenteel uitgeschakeld als gevolg van de geïnstalleerde PHP versie wordt " + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "GeoIP collectie vereist de PHP cURL-extentie en het is niet geladen op uw versie van PHP!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "GeoIP collectie vereist de BC Math PHP-extensie en deze is niet beschikbaar in uw PHP-versie!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "PHP veilige modus gedetecteerd! GeoIP-collectie wordt niet ondersteund met PHP veilige modus ingeschakeld!" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "Dit zal gegevens permanent worden verwijderd uit de database elke dag, weet u zeker dat u wilt inschakelen deze optie?" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "Dagen" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "Het aantal dagen dat de statistieken bewaard moeten blijven. Minimumwaarde is 30 dagen. Ongeldige waarden zullen het dagelijks onderhoud deactiveren." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "Gemeenschappelijke rapportage-opties" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "E-mailadressen" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "Een door komma's gescheiden lijst van e-mailadressen om rapporten naar te sturen." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "Rapporten-update" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "Browscap" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "Stuur een bericht wanneer de Browscap.ini is bijgewerkt." + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "Stuur een bericht wanneer de GeoIP database is bijgewerkt." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "Opschonen" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "Stuur een bericht zodra de database is opgeschoond." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "Bijwerken" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "Stuur een bericht wanneer de plug-in is bijgewerkt." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "Statistieken rapportage" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "Schema" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "Selecteer de hoe vak u een statistiekverslag wilt ontvangen" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "Versturen van rapporten via" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "E-mail" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "Selecteer een verzendmethode voor een statistiekrapport." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "Opmerking: Voor het verzenden van SMS-tekstberichten, installeer de plug-in %s." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "WordPress SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "Verslag lichaam" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "Voer de inhoud van het rapport in." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "Elke shortcode die ondersteund worden door uw WordPress-installatie, inclusief alle shortcodes van WP Statistics (zie de beheerdershandleiding voor een lijst van beschikbare codes) wordt ondersteund in de inhoud van het bericht. Hier zijn enkele voorbeelden:" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "Gebruiker Online" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "Vandaag bezoeker" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "Vandaag bezoek" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "Gisteren bezoeker" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "Gisteren bezoek" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "Totaal aantal bezoekers" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "Totale bezoek" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "Geen" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "Over" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "Dashboard" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "De volgende items gelden voor alle bezoekers." + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "Schakel dashboard-widgets uit" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "Uitschakelen van de dashboard widgets." + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "Pagina / Post bewerker" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "Uitschakelen pagina/bericht-bewerker widget" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "Uitschakelen van de pagina/bericht-bewerker widget." + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "Google" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "Kaart uitschakelen" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "De kaartweergave uitschakelen" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "Verwijdering WP Statistics" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "Het verwijderen van WP Statistics zal de gegevens en instellingen niet verwijderen. U kunt onderstaande optie gebruiken om de WP Statistics-gegevens uit uw database te verwijderen voordat u de plug-in verwijdert." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "Zodra u kiest voor 'Verwijderen' en op 'Opslaan' klikt, worden de instellingen verwijderd. Echter, WP Statistics zal nog steeds in het beheerdersmenu verschijnen totdat een andere pagina geladen wordt." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "Gegevens en instellingen verwijderen" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "Verwijderen" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "Gegevens en instellingen verwijderen, deze actie kan niet ongedaan gemaakt worden." + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "Algemeen" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "Rapportage" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "Dashboard/overzicht" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "Onderhoud" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "Verwijdering" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "Opslaan" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "Eenmaal per" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "Eenmaal per 2 weken" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "Eenmaal per 4 weken" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "Statistieken" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "Sitestatistieken in zijbalk weergeven." + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "Totale pageviews" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "Zoekmachine verwijzingen" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "Totaal aantal berichten" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "Totaal aantal pagina 's" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "Totaal commentaren" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "Totale Spams" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "Totaal aantal bezoekers" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "Gemiddelde berichten" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "Gemiddelde reacties" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "Gemiddelde bezoekers" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "Datum laatste bericht" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "Naam" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "Artikelen" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "Bezoek gisteren" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "Selecteer type zoekmachine" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "WP CBS is verwijderd, u kunt het nu uitschakelen en verwijderen." + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "WP Statistics" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "Volledige statistieken voor uw WordPress site." + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "Instellingen" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "Klik hier om naar de plug-in op WordPress.org te gaan" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "Bezoek WordPress.org pagina" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "Klik hier om deze plug-in op WordPress.org te beoordelen en waardering te geven." + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "Waardeer deze plug-in" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "WP statistiek - Hits" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "Overzicht" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "Online" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "Verwijzers" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "Zoekopdrachten" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "Zoekwoorden" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "Topbezoekers vandaag" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "Optimalisatie" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "Handleiding" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "Site" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "Opties" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "Bezoeker vandaag" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "Bezoek vandaag" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "Bezoeker gisteren" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "Weergave Statistieken" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "ODF bestand downloaden" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "Het HTML-bestand downloaden" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "Handleiding-bestand niet gevonden." + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "U hoeft niet voldoende rechten om deze pagina te openen." + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "WP Statistics%s geïnstalleerd op" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "Fout GeoIP-database downloaden: %s - %s" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "Fout. Kon de gedownloade GeoIP-database niet inlezen: %s" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "Fout. Kon de GeoIP-database niet openen om te schrijven %s" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "GeoIP-Database succesvol bijgewerkt!" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "GeoIP bijwerken op" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "Fout browscap database van downloaden: %s - %s" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "Browscap database succesvol bijgewerkt!" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "browscap databank bijwerken mislukt! Cache-bestand is te groot, terugkeren naar de vorige Browscap.ini." + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "browscap-database bijwerken is mislukt! De nieuwe browscap.ini herkent de user-agents als crawlers. Er wordt terug gegaan naar de vorige browscap.ini." + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "Browscap al op de huidige versie!" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "Browscap.ini update over" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "Samenvatting statistieken" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "Top 10-Browsers" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "Top 10-landen" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "Kaart bezoekers vandaag" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "Hit statistieken" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "Top 10-pagina 's" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "Recente bezoekers" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "Top 10-verwijzende sites" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "Zoekmachineverwijzingen" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "Samenvatting" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "Laatste zoektermen" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "Top 10-bezoekers vandaag" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "Dit bericht is nog niet gepubliceerd." + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "Kan niet de GeoIP-database laden, zorg ervoor dat u het hebt gedownload in de pagina-instellingen." + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "%s-GeoIP records bijgewerkt in de bezoekers-database." + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "%s gegevens ouder dan %s dagen met succes verwijderd." + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "Geen records gevonden om te zuiveren van %s!" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "Database opgeschoond op" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "Selecteer een waarde meer dan 30 dagen." + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "Browser statistieken" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "Klik hierop om te schakelen" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "Browsers" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "Browsers door type" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "Platform" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "Browsers door platform" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "%s versie" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "Let op: Uitsluitingen worden momenteel niet geregistreerd. Onderstaande resultaten geven mogelijk niet de huidige statistieken weer!" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "Statistieken uitsluitingen" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "10 dagen" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "20 dagen" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "30 dagen" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "2 maanden" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "3 maanden" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "6 maanden" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "9 maanden" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "1 jaar" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "Uitsluitingen statistieken grafiek" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "Uitgesloten hits in de laatste" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "dagen" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "Aantal uitgesloten hits" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "Hits statistieken grafiek" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "Hits in de laatste" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "Aantal bezoeken en bezoekers" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "Bezoeken" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "Bezoekers" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "Laatste zoekwoorden statistieken" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "#hash #" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "Kaart" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "Pagina" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "Van" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "Alle" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "Recente bezoekersstatistieken" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "Bezoekers online" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "Online gedurende" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "Pagina Trend voor Post-ID" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "Pagina Trend" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "Zoekmachineverwijzing statistieken" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "Zoekmachineverwijzingen in de laatste" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "Aantal verwijzingen" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "Totaal" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "Toplanden" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "Rang" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "Vlag" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "Land" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "Aantal bezoekers" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "Toppagina 's" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "Top 5-pagina trends" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "Top 5-pagina trending statistieken" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "Aantal Hits" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "Geen paginatitel gevonden" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "Bezoeken" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "Binnenkort worden toegevoegd" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "Verwijzende sites van" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "Verwijzingen" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "Top 100-bezoekers vandaag" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "Over WP Statistics Versie %s" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "Website" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "Oordeel en review" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "Meer informatie" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "Dit product bevat GeoLite2 gegevens gemaakt door MaxMind, zie %s." + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "Andere" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "Overzicht bezoekers vandaag" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "Adres" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "Gebruiker(s) online" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "Vandaag" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "Gisteren" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "Dagelijks totaal" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "Huidige tijd en datum" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "(Aanpassen)" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "Datum: %s" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "Tijd: %s" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "Hits" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "IP-" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "Agent" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "Versie" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "Toegang geweigerd!" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "%s agent gegevens verwijderd." + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "Geen agent-gegevens gevonden om te verwijderen!" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "Selecteer de gewenste objecten." + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "%s platform gegevens verwijderd." + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "Geen platform-gegevens gevonden om te verwijderen!" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "tabelgegevens %s succesvol verwijderd." + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "Fout, %s niet leeggemaakt!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "Database Setup" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "Herinstalleren" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "Installeer nu!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "Als om enige reden de databasetabellen of andere items in uw installatie van WP Statistics ontbreken, zal dit het installatieproces opnieuw uitvoeren." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "Database Index" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "Landen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "Nu bijwerken!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "Oudere installaties van WP Statistics staan in sommige gevallen dubbele vermeldingen toe in de bezoekerstabel. Nieuwere installaties beschermen hiertegen met een unieke index in de tabel. Als u in de oudere installatie deze index wilt creëren, moeten eerst de dubbele vermeldingen worden verwijderd. Door op \"Update Now\" te klikken, wordt de bezoekerstabel gescand, dubbele vermeldingen verwijderd en de index toegevoegd." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "Deze bewerking kan lang duren op installeert met vele rijen in de tabel van de bezoekers." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "Oudere installaties van WP Statistics staan in sommige gevallen dubbele vermeldingen toe in de bezoekerstabel. Nieuwere installaties beschermen hiertegen met een unieke index in de tabel." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "Gefeliciteerd, is uw installatie al up-to-date. Er is hier niets te doen." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "Exporteren" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "Exporteren vanuit" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "Gelieve te selecteren" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "Selecteer de tabel voor het downloadbestand." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "Exporteren naar" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "Selecteer het output-bestandstype." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "Rij met kolomkoppen opnemen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "Een rij met kolomkoppen opnemen op de eerste regel van het geëxporteerde bestand." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "Start nu!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "Historische Waarden" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "Opmerking: Omdat de database net opgeschoond is, moet u deze pagina herladen voordat deze nummers correct zijn." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "Bezoekers" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "Historisch aantal bezoekers aan de website (huidige waarde %s)." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "Historisch aantal bezoeken aan de website (huidige waarde %s)." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "Update nu!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "Weet je het zeker?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "Gegevens" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "Lege tabel" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "Alle gegevens van de geselecteerde tabel zullen verwijderd worden." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "Nu leegmaken!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "Verwijder gegevens ouder dan" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "Verwijder gegevens die ouder zijn dan het geselecteerde aantal dagen. Minimumwaarde is 30 dagen." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "Verwijder nu!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "Verwijderen van User Agent typen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "Verwijderen van user-agents" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "Alle bezoekersgegevens voor dit type user-agent zullen verloren gaan." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "Verwijder nu!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "Verwijderen van Platforms" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "Alle bezoekersgegevens voor dit platformtype zullen verloren gaan." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "Middelen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "Geheugengebruik in PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "Byte" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "PHP-geheugenlimiet" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "De geheugenlimiet voor PHP-scripts, ingesteld in php.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "Aantal rijen in de tabel %s" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "Rij" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "Aantal rijen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "Versieinfo" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "WP Statistics versie" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "De versie van WP-Statistics die u gebruikt." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "PHP versie" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "De gebruikte PHP-versie." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "PHP veilige modus" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "Is de veilige modus van PHP actief? De GeoIP-code wordt niet ondersteund in de veilige modus." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "jQuery versie" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "De gebruikte jQuery-versie." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "cURL versie" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "cURL niet geïnstalleerd" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "De versie van de PHP cURL-extensie u gebruikt. cURL is vereist voor de GeoIP-code, als het niet is geïnstalleerd wordt gGoIP uitgeschakeld." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "Geïnstalleerd" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "Niet geïnstalleerd" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "Bestandsinfo" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "GeoIP-Database" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "Databasebestand bestaat niet." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr ", gemaakt op " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "De bestandsgrootte en de datum van de GeoIP-database." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "Browscap.ini bestand" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "bestand Browscap.ini bestaat niet." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "De bestandsgrootte en de datum van het bestand browscap.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "Browscap cachebestand" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "Browscap cachebestand bestaat niet." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "De bestandsgrootte en de datum van het browscap cachebestand." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "Client Info" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "Client IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "Het IP-adres van de bezoeker." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "User-Agent" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "User-agent van de browser." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "Browser" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "De gedetecteerde bezoekersbrowser." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "De gedetecteerde bezoeker-browserversie." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "Het gedetecteerde platform van de bezoeker." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "Dit vervangt alle IP-adressen in de database met hash-waarden en kan niet worden ongedaan maken, bent u zeker?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "GeoIP opties" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "Alle onbekende locatiegegevens in de database bijwerken. Dit kan even duren." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "IP-adressen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "Hash-IP-adressen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "IP-adressen in de database vervangen door hash-waarden. Eenmaal uitgevoerd, is dit niet meer terug te draaien en de locatiegegevens van deze IP-adressen zijn daarna niet meer te achterhalen. Dit kan even duren." + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "IP-adressen vervangen met hash-waarden." + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "Installeren volledige routine." + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "Middelen/informatie" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "Systeemaanpassingen" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "Database" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "Updates" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "Historie" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "WP Statistics V %s" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "Bezoek ons online" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "Bezoek onze mooie, nieuwe %s en blijf op de hoogte van het laatste nieuws over WP Statistics." + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "website" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "Tarief en Review op WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "Bedankt voor het installeren van WP Statistics, we stellen het op prijs als u een " + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "waardering en/of beoordeling geeft" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr " op WordPress.org. Uw feedback wordt zeer gewaardeerd!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "Vertalingen" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "WP Statistics ondersteunt internationalisatie en wij moedigen onze gebruikers aan om vertalingen te sturen. Bezoek onze %s om de huidige status te bekijken en %s als u zou willen helpen." + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "vertaling samenwerkingssite" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "stuur ons een bericht" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "Ondersteuning" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "We vinden het jammer als u problemen met WP Statistics ondervindt en willen u graag helpen. Hier zijn enkele controles die u kunt uitvoeren voordat u ons contacteert:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "Heeft u de %s gelezen?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "Veelgestelde vragen" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "Handleiding" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "Heeft u het %s voor een soortgelijk probleem bezocht?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "ondersteuningsforum" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "Heeft u op het internet gezocht voor eventuele foutmeldingen die u ontvangt?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "Zorg ervoor dat u toegang tot uw PHP fouten-logs heeft." + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "En een paar dingen om te nog eens te controleren:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "Wat is uw memory_limit in php.ini?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "Heeft u andere geïnstalleerde plug-ins gedeactiveerd?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "Heeft u het geprobeerd met behulp van het standaard WordPress-thema?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "Hebt u nogmaals de plug-in-instellingen gecontroleerd?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "Hebt u alle vereiste PHP-extensies geïnstalleerd?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "Krijgt u een blanco of onvolledige pagina te zien in uw browser? Heeft u de broncode van de pagina gezien en gecontroleerd op eventuele fatale fouten?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "Heeft u uw PHP en web server foutenlogboeken gecontroleerd?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "Nog steeds geen succes?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "Open dan een nieuwe onderwerp op het %s en wij zullen zo spoedig mogelijk reageren." + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "WordPress.org ondersteuningsforum" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "Er is ook ondersteuning in het %s beschikbaar." + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "Farsi" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "WP Statistics honingpot-pagina" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "Dit is de honingpot die door WP Statistics gebruikt wordt. Niet verwijderen." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "Toegangsniveaus" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "Vereist gebruikersniveau WP Statistics bekijken" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "Nodig gebruikersniveau voor het beheren van WP Statistics" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "Zie de %s voor details over toegangsrechten." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "Pagina WordPress rollen en capaciteiten" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "Tip: manage_network = Super-netwerkbeheerder, manage_options = Beheerder, edit_others_posts = Redacteur, publish_posts = Auteur, edit_posts = Schrijver, read = Iedereen." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "Bovenstaande keuze geeft ook de rechten 'naar boven' in de standaardconfiguratie voor WordPress. Dus door bijvoorbeeld 'publish_posts' te selecteren wordt het recht gegeven aan auteurs, redacteurs, beheerders en superbeheerders." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "Als u een robuustere oplossing voor gemachtigden-toegang wilt,kunt u kijken naar %s in de WordPress plug-inmap." + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "Uitsluitingen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "Registreer uitsluitingen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "Inschakelen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "Dit zal alle uitgesloten hits opnemen in een aparte tabel, inclusief de reden waarom het was uitgesloten, maar geen andere informatie. Dit zal veel gegevens genereren, maar is handig als u het totale aantal hits op uw site wilt zien en niet alleen de feitelijke bezoekers." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "Uitsluiten van gebruikersrollen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "Uitsluiten" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "%s-rol van gegevensverzameling uitsluiten." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "IP-/ Robot uitsluitingen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "Robotlijst" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "Een lijst van woorden (een per regel) die met de te detecteren robots overeenkomen. Woorden moeten minimaal 4 tekens lang zijn of ze zullen worden genegeerd." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "Standaardinstellingen herstellen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "Gedwongen bijwerken van de robotlijst na upgrades" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "Forceer na een update van WP Statistics een reset van de robotlijst, terug naar de standaardinstelling. Opmerking: als deze optie is ingeschakeld zullen de robots die u zelf aan de lijst hebt toegevoegd verloren gaan." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "Robotbezoek-drempel" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "Behandel bezoekers met meer dan dit aantal bezoeken per dag als robots. 0 = uitgeschakeld." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "Lijst van uitgesloten IP-adres" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "10.0.0.0 toevoegen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "172.16.0.0 toevoegen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "192.168.0.0 toevoegen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "Gebruik honingpot" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "Gebruik een honingpot-pagina om robots te identificeren." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "Honingpot-bericht ID" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "Bericht ID om voor de honingpot-pagina te gebruiken." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "Maak een nieuwe honingpot-pagina" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "GeoIP uitsluitingen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "Uitgesloten landenlijst" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "Een lijst van landencodes (één per regel, twee letters per land) die uitgesloten worden van de te verzamelen statistieken. Gebruik \"000\" (drie nullen) om onbekende landen uit te sluiten." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "Opgenomen landenlijst" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "Een lijst van landencodes (één per regel, twee letters per land) om op te nemen in de te verzamelen statistieken. Indien deze lijst niet leeg is, worden alleen bezoekers uit de opgenomen landen geregistreerd. Gebruik \"000\" (drie nullen) om onbekende landen uit te sluiten." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "Host-uitsluitingen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "Uitgesloten hosts-lijst" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "Een lijst van volledig gekwalificeerde host-namen (dwz. server.example.com, één per regel) die uitgesloten worden van de te verzamelen statistieken." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "Opmerking: Deze optie zal geen reverse DNS lookup uitvoeren op elke paginavertoning, maar in plaats daarvan het IP-adres opslaan voor de host-namen gedurende een uur. Als je dynamisch toegewezen hosts wilt uitsluiten, kunt je een zekere mate van overlap vinden wanneer de host z'n IP-adres wijzigt en ook wanneer de cache wordt bijgewerkt. Dit zal dan in enkele geregistreerde hits resulteren." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "Website URL uitsluitingen" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "Uitsluiten login-pagina" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "Uitsluiten van de login-pagina voor het registreren als een hit." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "Uitsluiten beheerderspagina 's" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "Uitsluiten van de beheerderspagina's voor het registreren als een hit." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "Uitsluiten RSS-feeds" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "Sluit de registratie van RSS-feed hit uit." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "Browscap instellingen" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "Browscap gebruik" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "Actief" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "De browscap database zal worden gedownload en gebruikt voor het opsporen van robots." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "Update browscap Info" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "Browscap-database downloaden" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "Sla de wijzigingen op deze pagina op om de update te downloaden." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "Plan wekelijkse update van browscap DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "Volgende update zal worden" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "Download van de browscap-database is gepland voor één keer per week." + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "Dit zal de handleiding verwijderen wanneer u de instellingen opslaan, bent u zeker?" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "Deze functie zal IP-adressen niet in de database opslaan maar zal in plaats daarvan een unieke hash gebruiken. De \"hele gebruikers-agent-string opslaan\"-instelling wordt uitgeschakeld als deze optie is geselecteerd. U kan de IP-adressen dan niet meer herleiden tot locatie-informatie." + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "Gebruikers Online" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "Gebruiker online" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-pl_PL.mo b/plugins/wp-statistics/languages/wp_statistics-pl_PL.mo new file mode 100644 index 0000000..1649f24 Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-pl_PL.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-pl_PL.po b/plugins/wp-statistics/languages/wp_statistics-pl_PL.po new file mode 100644 index 0000000..e7b1c1b --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-pl_PL.po @@ -0,0 +1,2752 @@ +# Translation of WP Statistics in Polish +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-10-10 16:26:09+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: pl\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "Nie znaleziono pasującego widgetu!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "Zlib gzopen()" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "Jeśli funkcja gzopen() jest zainstalowana. Gzopen() jest wymagana, by baza GeoIP mogła być pobrana." + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "Błąd:funkcja download_url() albo gzopen() nie istnieje!" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "Błąd ustawiania uprawnień dla folderu z bazą GeoIP, upewnij się, że serwer www ma prawa zapisu do folderów w: %s" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "— Używasz niewspieranej wersji PHP." + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "Plugin WP Statistics wyłączony" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "WP Statistics wykrył PHP w wersji %s, która jest niewspierana, WP Statistics wymaga PHP w wersji %s albo wyższej!" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "Skontaktuj się z dostawcą hostingu, żeby zaktualizować PHP albo wyłącz plugin WP Statistics, żeby usunąć tę wiadomość." + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "BŁĄD: Widget nie znaleziony!" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "Ładowanie..." + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "Przeładowanie..." + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "Najlepsi odwiedzający" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "Strona optymalizji" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "Włączone" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "Codzienne czyszczenie starych danych" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "WP Cron uruchomi codziennie zadanie, aby wyczyścić wszystkie dane starsze niż przez określoną liczbę dni." + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "Wyczyść starsze dane niż" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "Wyczyść codziennie tabelę najbardziej aktywnych odwiedzających" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "WP Cron uruchomi codziennie zadanie, aby wyczyścić wszystkie dane, statystyk użytkowników, gdzie użytkownik ma więcej niż określoną liczbę odsłon w ciągu dnia (są one prawdopodobnie botem)." + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "Liczba wymaganych wejść, aby usunąć odwiedzającego. Minimalna wartość to 10 wejść. Nieprawidłowe wartości wyłączą codzienną konserwację." + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "ID posta/strony do wygenerowania statystyk." + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "ID posta/strony" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "Ask.com" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "Przedział czasu do uzyskania statystyk, funkcja strtotime () (http://php.net/manual/en/datetime.formats.php) będzie użyta do obliczeń. Użyj "wszystko", aby uwzględnić wszystkie zapisane dane." + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "śledzenie odwiedzających" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "kolekcja geoip" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "indeks w bazie wizyt" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "Aktualizacje bazy danych są wymagane, przejdź do %s i zaktualizuj: %s" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "indeks w bazie krajów" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "tabela wyszukiwania" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "strona z ustawieniami" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "," + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "Następujące funkcje są wyłączone, przejdź do %s i włącz je: %s" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "śledzenie trafień" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "śledzenie użytkowników online" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "Następująca tabela wtyczki nie istnieje w bazie danych, należy ponownie uruchomić instalację %s z algorytmem %s:" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "Przeszukiwanie konwersji tabeli ukończone, %d wierszy dodanych." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "Starsze instalacje WP Statystyki przechowują szczegóły wyszukiwania w tabeli odwiedzających, co może powodować problemy z wydajnością w często odwiedzanych stronach. Utworzono nową tabelę, żeby przechowywać te informacje w bardziej skalowalny sposób." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "Tabela wyszukiwania" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "Konwertuj" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "Konwertuj!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "Starsze instalacje WP Statystyki przechowują szczegóły wyszukiwania w tabeli odwiedzających, co może powodować problemy z wydajnością w często odwiedzanych stronach. Trzeba utworzyć nową tabelę, żeby przechowywać te informacje w bardziej skalowalny sposób, ale dotychczasowe dane muszą zostać przekonwertowane do nowego formatu, zanim zostaną użyte." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "Odsyłający spam" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "Bazy danych czarnej listy Piwik Spam odsyłających będzie pobierana co tydzień." + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "Zewnętrzne" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "Ustawienia czarnej listy Piwik Spam odsyłających" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "Harmonogram tygodniowej aktualizacji bazy danych czarnej listy Piwik Spam odsyłających" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "Pobierz bazę danych czarnej listy Piwik Spam odsyłających " + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "Zaktualizuj informacje bazy danych czarnej listy Piwik Spam odsyłających" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "Baza danych czarnej listy Piwik Spam odsyłająych będzie pobierana i wykorzystywana do wykrywania spamu w stronach odsyłających." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "Czarna lista spamu polecających jest udostępniana przez Piwik, dostępna od %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "Wykorzystanie czarnej listy Spamu polecających Piwik" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "Traktuj uszkodzone informacje przeglądarki, jak bota" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "Strony 404" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "Data" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "Traktuj każdego odwiedzającego z uszkodzoną informacją przeglądarki (brakiem adresu IP lub pustym ciągiem agenta użytkownika), jak robota." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "Wykluczone strony 404" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "Wyklucz adres URL, który zwraca - komunikat \"Błąd 404: Nic nie znaleziono\"." + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "Błąd podczas tworzenia katalogu bazy danych GeoIP, upewnij się, że twój serwer ma uprawnienia do tworzenia katalogów w: %s" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "Dodaj tytuł strony do pustych słów wyszukiwania" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "Jeśli wyszukiwarka jest zidentyfikowana jako odsyłająca, ale nie widać zapytania, opcja ta zastąpi tytuł strony w cudzysłowie poprzedzony przez "~" jako wyszukiwane hasło, aby pomóc ustalić, co użytkownik mógł szukać." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "Wyczyść odwiedzających posiadających więcej niż" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "wejść" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "" +" \n" +"Usuwanie dane użytkowników, którzy mieli więcej odsłon dziennie niż zadana wartość. Jest to przydatne do uporządkowania statystyk, kiedy strona została odwiedzona przez aktywnego bota. Zostaną poprawione dane ilości odwiedzających i ich odsłon, ale nie liczba wyświetleń konkretnych stron, gdyż te nie zawierają danych użytkowników. Minimalna wartość to 10." + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "Brak znalezionych odwiedzających, aby wyczyścić." + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "%s rekordów pomyślnie wyczyszczonych." + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "Liczba wejść musi być większa lub równa 10!" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "Strona odwiedzin" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "Ilość stron" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "Ilość komentarzy" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "Ilość spamów" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "Ilość użytkowników" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "Średnia wpisu" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "Średnia komentarza" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "Średnia użytkownika" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "Dostawca wyszukiwania" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "Znajdź dostawcę, aby otrzymać statystyki." + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "Format liczby" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "Format wyświetla liczby w: i18n, angielski, żaden." + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "Angielski" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "Międzynarodowy" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "Podsumowanie statystyk" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "Cały wykres" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "Cały czas" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "Czy myślałeś o wsparciu WP Statistics?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "Wsparcie" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "Lubimy, że okazujesz nam, jak bardzo lubisz WP Statistics? Odwiedź naszą stronę %s i okaż trochę uczucia!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "ze wsparciem" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "Wesprzyj!" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "Zamknij" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "Wybierz statystykę, aby ją wyświetlić." + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "Statystyka" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "Ilość wpisów" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "Rama czasowa" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "do" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "Przejdź" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "Pozycja #5" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "Pozycja#4" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "Pozycja #3" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "Pozycja #1" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "Pozycja #2" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "Tabela odwiedzin" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "Starsze instalacje WP Statistics pozwalają na duplikaty wpisów w tabeli odwiedzających użytkowników w razie przypadku. Nowe instalacje chronią przed tym z unikalnym indeksem na tabeli. Aby utworzyć indeks na starszych instalacjach, zdublowane wpisy muszą być najpierw usunięte. Kliknij \\\"Zaktualizuj\\\", aby przeskanować tabelę odwiedzających użytkowników, usunąć zdublowane wpisy i dodać indeks." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "Ta operacja może zająć dużo czasu przy instalacjach z wieloma wierszami w tabeli odwiedzin." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "Starsze instalacje WP Statistics pozwalają na podwójne wpisy w tabeli odwiedzin w przypadku narożnika. Nowsze instalacje chronią przed tym z unikalnym indeksem w tabeli." + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "Filtrowane wg" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "Zakres" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "MM/DD/YYYY" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "Nie używaj tłumaczeń i w zamian użyj domyślnego języka angielskiego dla WP Statistics (potrzebne są dwie strony załadowań)" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "Wymuś Angielski" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "Języki" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "Uwaga: Ta opcja nie będzie obsługiwać parametrów URL, tylko do nazwy skryptu (wszystko po sobie?). Wpisy mniej niż z dwoma znakami będą ignorowane." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "Lista lokalnych adresów (np. /Wordpress/about, jeden na linię), aby wykluczyć z gromadzenia statystyk." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "Lista wykluczonych adresów URL" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "Wykluczone adresy URL" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "W ciągu 365 dni (roku)" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "W ciągu 30 dni (miesiąca)" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "W ciągu 7 dni (tygodnia)" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "Yahoo!" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "Yandex" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "clearch.org" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "DuckDuckGo" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "Bing" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "Baidu" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "Kanały RSS" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "Rola uzytkownika" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "Strona logowania" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "Strona administracyjna" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "Własne odesłanie" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "IP Match" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "Robot" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "Aktualnie nie ma użytkowników na stronie." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "Próg robota" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "Honey Pot" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "Statystyki analiz stron" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "Nazwa hostu" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "Włącz lub wyłącz tą funkcję" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "Sprawdź aktywne osoby co" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "Sekund" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "Czas sprawdzania liczby użytkowników online. Aktualnie: %s sekund." + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "Zarejetruj wszystkich użytkowników" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "Ignoruje ustawienia wykluczeń i rejestruje wszystkich użytkowników, którzy są dostępni w Internecie (w tym własne odwołania i roboty). Powinno być używane tylko do rozwiązywania problemów." + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "Przechowuj cały ciąg agenta użytkownika" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "Włączone tylko do debugowania" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "Współczynnik dla odwiedzającego" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "Dla każdej odwiedziny z jednego konta. Aktualnie %s." + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "Strony" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "Śledź wszystkie strony" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "Parametry paska z URI" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "To usunie wszystko po? w adresie URL." + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "Wyłącz kolumnę wejść w liście postu/stron" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "Różne" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "Wyświetl statystyki w pasku menu" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "Nie" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "Tak" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "Pokaż statystyki w pasku menu administratora" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "Ukryj uwagi administratora o niekatywnych funkcjach" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "Domyślnie WP Statistics wyświetla ostrzeżenie, jeśli któraś z podstawowych funkcji jest wyłączona na każdej stronie administratora, opcja ta będzie wyłączyć te powiadomienia." + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "Usuń podręcznik" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "Domyślnie WP Statistics przechowuje podręcznik administratora w katalogu wtyczek (~5 meg), jeśli ta opcja jest włączona to zostanie usunięty w czasie aktualizacji i teraz w przyszłości." + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "Wyszukiwarki" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "Wyłączenie wszystkich wyszukiwarek jest zabronione, spowoduje to wynik we wszystkich aktywnych wyszukiwarkach." + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "wyłącz" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "Wyłącz %s z zbierania danych i raportowania." + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "Wykresy" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "Razem dołączonych" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "Dodaj całkowitą linię do wykresów z wieloma wartościami, takimi jak odwołania w wyszukiwarkach" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "Ustawienia GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "Usługi lokalizacyjne IP świadczone przez dane GeoLite2 utworzone przez MediaWiki, dostępne z %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "Biblioteka GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "Dla uzyskania dodatkowych informacji i lokalizacji (kraju) z odwiedzającym, włącz tą funkcję." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "Aktualizacja informacji GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "Pobierz bazę danych GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "Kalendarz miesięczny aktualizacji GeoIP DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "Pobranie bazy danych GeoIP będzie zaplanowane na 2 dni po pierwszym Wtorku każdego miesiąca." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "Ta opcja również pobiera bazę danych, jeśli lokalny rozmiar pliku jest mniejszy niż 1k (który zazwyczaj oznacza odcinek, pochodzący z tej wtyczk jest nadal w tym miejscu)." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "Wypełnienie brakujących GeoIP po aktualizacji bazy danych GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "Zaktualizuj wszelkie brakujące dane GeoIP po pobraniu nowej bazy danych." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "Numer kierunkowy do prywatnych adresów IP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "Międzynarodowy standard kod dwuliterowy kraju (tj. US = Stany Zjednoczone, CA = Kanada, itp) dla prywatnych (bez routingu) adresów IP (np. 10.0.0.1, 192.158.1.1, 127.0.0.1, itp). Użyj \"000\" (trzy zera) do korzystania z \"Nieznany\" jako kod kraju." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "Biblioteka GeoIP jest wyłączona z powodu następujących przyczyn:" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "Biblioteka GeoIP wymaga PHP %s lub nowszego, obecnie jest wyłączona z powodu zainstalowanej istniejącej wersji PHP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "Gromadzony GeoIP wymaga rozszerzenia cURL PHP i nie jest uruchomiony w Twojej wersji PHP!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "Gromadzony GeoIP wymaga rozszerzenia BC Math PHP i nie jest uruchomiony w Twojej wersji PHP!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "Wykryty PHP Safe Mode! Biblioteka GeoIP nie jest obsługiwana w trybie bezpiecznym PHP!" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "Spowoduje trwałe usunięcie danych z bazy danych każdego dnia, czy na pewno chcesz włączyć tą opcję?" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "Dni" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "Liczba dni dla przechowujących statystyk. Minimalna wartość to 30 dni. Nieprawidłowe wartości wyłączy codzienną konserwację." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "Opcje raportu" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "Adresy e-mail" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "Rozdziel przecinkami listę adresów e-mail, aby wysłać raporty." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "Aktualizacja raportów" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "Browscap" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "Wyślij raport, gdy browscap.ini jest aktualizowany." + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "Wyślij raport, gdy baza danych GeoIP jest aktualizowana." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "Wyczyść" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "Wyślij raport, gdy czyszczenie bazy danych jest uruchomione." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "Zaktualizuj" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "Wyślij raport, gdy wtyczka jest uaktualniania." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "Raporty statystyk" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "Harmonogram" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "Wybierz jak często otrzymywać raport statystyczny." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "Wyślij raporty za pomocą" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "E-mail" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "Wybierz sposób dostawy dla raportu statystycznego." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "Uwaga: Aby wysłać tekst wiadomości SMS należy zainstalować wtyczkę %s." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "WordPress SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "Zgłoś grupę" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "Wpisz treść raportu." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "Dowolny krótki kod obsługiwany przez Twoją instalację WordPressa, obejmuje wszystkie krótkie kody dla WP Statistics (zobacz podręcznik administratora uzyskując listę dostępnych kodów), które są obsługiwane w treści wiadomości. Oto kilka przykładów:" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "Osób online" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "Odwiedziło dzisiaj" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "Odwiedzin dzisiaj" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "Odwiedziło wczoraj" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "Odwiedzin wczoraj" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "Razem odwiedzających" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "Razem odwiedzin" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "Żaden" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "Informacje" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "Panel główny" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "Następujące pozycje są globalne dla wszystkich użytkowników." + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "Wyłącz widgety panelu głównego" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "Wyłącz widgety panelu głównego." + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "Edytor strony/wpisu" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "Wyłącz widget edytora wpisu/strony" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "Wyłącz widget edytora strony/wpisu." + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "Google" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "Wyłącz mapę" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "Wyłącz wyświetlanie mapy" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "Usunięcie WP Statisitcs" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "Odinstalowywanie WP Statistics nie usunie danych i ustawień, możesz użyć tej opcji, aby usunąć dane WP Statistics z Twojej instalacji przed odinstalowaniem wtyczki." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "Po przesłaniu tego formularza ustawienia zostaną usunięte w czasie ładowania strony, jednak WP Statistics wciąż pojawi się w menu Admin, aż kolejne załadowanie strony zostanie wykonywane." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "Usuń dane i ustawienia" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "Usuń" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "Usuń dane i ustawienia, ta akcja nie może być cofnięta." + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "Ogólne" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "Powiadomienia" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "Panel główny/Przegląd" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "Zarządzanie" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "Usunięcie" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "Zaktualizuj" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "Raz na tydzień" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "Raz na 2 tygodnie" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "Raz na 4 tygodnie" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "Statystyki" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "Pokaż stronę Statystyki w pasku bocznym." + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "Razem odwiedzonych stron" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "Razem wpisów" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "Razem stron" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "Razem komentarzy" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "Razem spamów" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "Razem uzytkowników" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "Średnio wpisów" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "Średnio komentarzy" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "Średnio użytkowników" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "Data ostatniego wpisu" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "Nazwa" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "Wpisów" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "Wczoraj odwiedzin" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "Wybierz typ wyszukiwarki" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "WP Statistics został usunięty, proszę wyłączyć i usunąć go." + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "WP Statistics" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "Uzupełnij statystyki dla Twojej strony WordPress." + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "Ustawienia" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "Kliknij tutaj, aby odwiedzić wtyczkę WordPress.org" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "Odwiedź stronę WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "Kliknij tutaj, aby ocenić i opisać tę wtyczkę na WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "Oceń tę wtyczkę" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "WP Statistics - Wejścia" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "Przegląd" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "Dostępni użytkownicy" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "Referenci" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "Wyszukiwarki" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "Wyszukiwane frazy" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "Najlepsi dzisiejsi odwiedzający" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "Optymizacja" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "Podręcznik" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "Teren" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "Opcje" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "Dzisiaj odwiedziło" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "Dzisiaj odwiedzin" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "Wczoraj odwiedziło" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "Zobacz statystyki" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "Pobierz plik ODF" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "Pobierz plik HTML" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "Plik podręcznika nie znaleziony." + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "Nie posiadasz wystarczających uprawnień by wyświetlić tę stronę." + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "WP Statistics %s zainstalował się" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "Błąd pobierania bazy danych GeoIP z: %s - %s" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "Nie mogę otworzyć pobranej bazy danych GeoIP odnoszącej się do: %s" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "Nie mogę otworzyć pobranej bazy danych GeoIP zapisanej w %s" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "Baza danych GeoIP zaktualizowana pomyślnie!" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "GeoIP zaktualizował się" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "Błąd pobierania bazy danych browscap z: %s - %s" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "Baza danych browscap zaktualizowana pomyślnie!" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "Błąd zaktualizowanej bazy danych browscap! Plik pamięci jest zbyt duży, wróć do poprzedniego browscap.ini." + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "Błąd zaktualizowanej bazy danych browscap! Nowy browscap.ini błędnie identyfikuje agentów użytkownika jako roboty, wróć do poprzedniego browscap.ini." + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "browscap już w aktualnej wersji!" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "Browscap.ini zaktualizował się" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "Szybkie statystyki" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "Najlepsza 10 przeglądarek" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "Najlepszych 10 państw" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "Mapa dzisiejszych odwiedzających" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "Statystyki odsłon" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "Najlepsza 10 stron" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "Ostatni odwiedzający" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "Najlepsze odsłyłające strony" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "Polecone w wyszukiwarkach" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "Podsumowanie" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "Najnowsze wyszukane frazy" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "Najlepsza 10 dzisiejszych odwiedzających" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "Ten wpis nie jest jeszcze opublikowany." + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "Nie można załadować bazy danych GeoIP, upewnij się, że pobrałeś ją na stronie ustawień." + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "Zaktualizowano %s rekordów GeoIP w bazie danych odwiedzających. " + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "%s danych starszych niż %s dni pomyślnie usuniętych." + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "Nie ma rekordów do przeczyszczenia %s!" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "Baza danych wyczyszczona" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "Proszę wybrać wartość w ciągu 30 dni." + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "Statystyki przeglądarki" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "Kliknij, aby przełączyć" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "Przeglądarki" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "Wg typu przeglądarek" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "Platforma" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "Wg platformy przeglądarek" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "Wersja %s" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "Uwaga: Wykluczenia nie są obecnie ustawione na zapisywanie, poniższe wyniki mogą nie odzwierciedlać aktualnej statystyki!" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "Statytyki wykluczeń" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "10 dni" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "20 dni" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "30 dni" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "2 miesiące" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "3 miesiące" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "6 miesięcy" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "9 miesięcy" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "Rok" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "Statystyczny wykres odsłon" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "Wykluczonych wejść w ostatnich" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "dniach" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "Liczba wykluczonych wejść" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "Wykres statystyki odsłon" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "Wejść w ostatnich" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "Liczba odwiedzin i odwiedzających" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "Odwiedzin" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "Odwiedziło" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "Najnowsze statystyki szukanych fraz" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "#hash#" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "Mapa" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "Strona" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "z" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "Wszystkie" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "Ostatnie statystyki odwiedzin" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "Dostępni użytkownicy" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "Dostępny o " + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "Wątek strony dla ID postu" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "Wątek strony" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "Statystyki odsyłań wyszukiwarki" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "Odsyłań wyszukiwarki w ostatnich" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "Liczba odsyłań" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "Razem" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "Najlepsze kraje" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "Pozycja" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "Flaga" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "Kraj" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "Odwiedzin" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "Najlepsze strony" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "Najlepszych 5 wątków stron" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "Statystyki najlepszych 5 wątków stron" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "Liczba wejść" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "Tytuł strony nie znaleziony" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "Odwiedzin" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "Wkrótce dodany" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "Strony odsyłające z" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "Odniesienia" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "Najlepsza 100 dzisiejszych odwiedzających" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "O wersji WP Statistics %s" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "Strona internetowa" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "Oceń i opisz wtyczkę" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "Więcej informacji" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "Produkt ten zawiera dane GeoLite2 utworzone przez MediaWiki, dostępne z %s." + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "Inne" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "Mapa dzisiejszych odwiedzających" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "Adres" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "Przegląda" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "Dzisiaj" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "Wczoraj" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "Razem codziennie" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "Bieżący czas i data" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "(Wyrównanie)" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "Data: %s" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "Czas: %s" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "Wejścia" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "IP" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "Agent" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "Wersja" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "Dostęp zabroniony!" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "Dane agenta %s pomyślnie usunięte." + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "Nie znaleziono danych agenta, aby usunąć!" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "Proszę wybierz odpowiednie wpisy." + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "Dane platformy %s pomyślnie usunięte." + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "Nie znaleziono danych platform, aby usunąć!" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "Dane tabeli %s pomyślnie usunięte." + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "Błąd, %s nie opróźniono!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "Ustawienia bazy danych" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "Zainstaluj ponownie" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "Zainstaluj" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "Jeśli z jakiegoś powodu Twojej instalacji WP Statistics brakło tabel bazy danych lub innych kluczowych pozycji, ponownie uruchomi się proces instalacji." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "Indeks bazy danych" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "Kraje" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "Zaktualizuj" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "Starsze instalacje WP Statistics pozwalają na duplikaty wpisów w tabeli odwiedzających użytkowników w razie przypadku. Nowe instalacje chronią przed tym z unikalnym indeksem na tabeli. Aby utworzyć indeks na starszych instalacjach, zdublowane wpisy muszą być najpierw usunięte. Kliknij \"Zaktualizuj\", aby przeskanować tabelę odwiedzających użytkowników, usunąć zdublowane wpisy i dodać indeks." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "Ta operacja może zająć dużo czasu przy instalacji z wieloma wierszami w tabeli odwiedzających użytkowników." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "Starsze instalacje WP Statistics pozwalają na duplikaty wpisów w tabeli odwiedzających użytkowników w razie przypadku. Nowe instalacje chronią przed tym z unikalnym indeksem na tabeli." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "Gratulacje, instalacja jest już aktualna, nic nie rób." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "Eksportuj" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "Eksportuj z" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "Proszę wybrać" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "Wybierż tablę dla pliku wyjściowego." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "Eksportuj do" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "Wybierz typ liku wyjściowego." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "Dołącz wierz nagłówka" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "Dołącz wiersz nagłówka w pierwszym wierszu eksportowanego pliku." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "Rozpocznij" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "Wartości historyczne" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "Uwaga: Ponieważ właśnie usunięto bazę danych, należy załadować tę stronę dla tych numerów, które są poprawne." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "Odzwiedzający" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "Ilość liczby historycznej odwiedzających witrynę (aktualna wartość to %s)." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "Liczba liczby historycznej odwiedzin strony (aktualna wartość to %s)." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "Zaktualizuj" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "Czy na pewno?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "Dane" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "Opróżnij tabelę" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "Wszystkie dane tabeli będą utracone." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "Wyczyść" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "Wyczyść rekordy stasrze niż" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "Usunięto dane statystyk użytkownika starszych niż wybrana liczba dni. Minimalna wartość to 30 dni." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "Wyczyść" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "Usuń typy agentów użytkownika" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "Usuń agentów" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "Wszystkie dane odwiedzających będą utracone dla tego typu agenta." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "Usuń" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "Usuń platformy" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "Wszystkie dane odwiedzających będą utracone dla tego typu platformy." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "Zasoby" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "Zużycie pamięci w PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "Bajt" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "Limit pamięci PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "Limit pamięci skryptu może się zużywać, ustaw w pliku php.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "Liczba wierszy w tabeli %s" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "Rzędów" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "Liczba rzędów" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "Informacje o wersji" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "Wersja WP Statistics" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "Używasz wersji WP Statistics." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "Wersja PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "Używasz wersji PHP." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "PHP Safe Mode" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "PHP Safe Mode jest aktywny. Kod GeoIP nie jest obsługiwany w trybie awaryjnym." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "Wersja jQuery" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "Używasz wersji jQuery." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "Wersja cURL" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "cURL nie zainstalowane" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "Użyawsz uruchomionej wersji rozszerzenia PHP cURL. cURL wymaga kodu GeoIP, jeśli nie jest zainstalowane GeoIP zostanie wyłączone." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "Zainstalowany" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "Nie zainstalowany" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "Informacje pliku" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "Baza danych GeoIP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "Plik bazy danych nie istnieje." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr ", utworzono w " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "Rozmiar pliku i danych bazy danych GeoIP." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "Plik browscap.ini" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "plik browscap.ini nie istnieje." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "Rozmiar pliku i danych pliku browscap.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "Plik pamięci podręcznej Browscap" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "Plik pamięci podręcznej Browscap nie istnieje." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "Rozmiar pliku i data pliku pamięci podręcznej browscap." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "Informacje o kliencie" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "Adres IP klienta" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "Adres IP Klienta." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "Agent uzytkownika" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "Ciąg agenta użytkownika klienta." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "Przeglądarka" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "Wykryto przeglądarkę klienta." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "Wykryto wersję przeglądarki klienta" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "Wykryto platformę klienta." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "Spowoduje zastąpienie wszystkich adresów IP w bazie danych z wartościami skrótu i nie może być cofnięte, czy na pewno?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "Opcje GeoIP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "Aktualizuje jakiekolwiek nieznane dane o lokalizacji w bazie danych, to może trochę potrwać" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "Adresy IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "Skrót adresów IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "Wymieniając adresy IP w bazie danych z wartościami skrótu, nie będziesz stanie odzyskać adresów IP w przyszłości, aby wypełnić informacji o lokalizacji i może to trochę potrwać" + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "Adresy IP zastąpione wartościami skrótu." + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "Zainstaluj rutynowe zakończona." + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "Zasoby/Informacje" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "Wyczyść" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "Baza danych" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "Zaktualizuj" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "Historyczny" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "WP Statistics V%s" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "Odwiedź nas" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "Odwiedź naszą nową %s i bądź na bieżąco z aktualnościami o WP Statistics." + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "stronę internetową" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "Oceń i opisz wtyczkę w WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "Dziękujemy za instalację WP Statistics, zachęcamy do złożenia" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "oceny i opisu wtyczki" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "na WordPress.org. Twoja opinia jest bardzo mile widziana!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "Tłumaczenia" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "WP Statistics obsługuje internacjonalizację i zachęca naszych użytkowników, aby przesłać tłumaczenia, prosimy odwiedzić naszą %s, aby zobaczyć aktualny stan %s jeśli chcesz pomóc." + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "stronę ze współpracą tłumaczenia" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "napisz do nas" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "Pomoc techniczna" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "Przepraszamy, że masz problem z WP Statistics i cieszymy się, że możemy pomóc. Oto kilka uwag do zrobienia, zanim się skontaktujesz z nami:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "Czy przeczytałeś %s?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "Najczęściej zadawane pytania" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "podręcznik" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "Czy przeszukałeś %s, aby uzyskać podobny problem?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "forum wsparcia" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "Czy wyszukałeś w Internecie jakiekolwiek komunikaty o błędach, które odbierasz?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "Upewniłeś się, czy masz dostęp do Twojego dziennika błędów PHP." + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "I sprawdź dokładnie kilka uwag:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "Jaki jest Twój memory_limit w php.ini?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "Czy próbowałeś wyłączyć wszystkie inne wtyczki, które masz zainstalowane?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "Czy próbowałeś użyć domyślnego motywu WordPressa?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "Czy dwukrotnie sprawdziłeś ustawienia wtyczki?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "Czy zainstalowałeś wszystkie wymagane rozszerzenia PHP?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "Czy otrzymujesz pustą lub niekompletną wyświetlaną stronę w przeglądarce? Czy wyświetlić źródło na stronie i sprawdzić jakiekolwiek błędy krytyczne?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "Czy sprawdziłeś Twoje dzienniki błędów PHP i serwera sieci web?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "Nadal nie natknąłeś się na problem?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "Należy otworzyć nowy wątek na %s a my odpowiemy jak najszybciej." + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "Forum wsparcia WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "Alternatywne wsparcie %s jest dostępne." + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "Farsi" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "Strona WP Statystyki Honey Pot" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "To jest pełna pula dla WP Statistics, aby użyć, nie usunąć." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "Dostęp do poziomów" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "Wymagany poziom użytkownika, aby wyświetlić WP Statistics" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "Wymagany poziom użytkownika, aby zarządzać WP Statistics" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "Zobacz %s szczegółowe informacje na temat poziomów dotyczących zdolności." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "Zasady i funkcje strony WordPress" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "Porada: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "Każdy z powyższych górnych praw z góry ustawia domyślną konfigurację WordPress. Na przykład wybierając publish_posts daje prawo dla Autorów, Redaktorów, Administratorów i Super Administratorów." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "Jeśli potrzebujesz bardziej niezawodne rozwiązanie do delegowania dostępu, możesz zajrzeć do %s w katalogu wtyczek WordPress." + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "Wykluczenia" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "Wykluczenia rekordów" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "Włącz" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "Będzie to rekord wszystkich wykluczonych odsłon w oddzielnej tabeli z powodu, dla których zostały wykluczone z pominięciem innych informacji. Dzięki temu uzyskasz sporo danych, jeśli chcesz zobaczyć łączną liczbę odsłon strony otrzymując, nie tylko rzeczywiste odwiedziny użytkowników." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "Wyklucz zasady użytkownika" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "Wyklucz" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "Wyklucz regułę %s z gromadzonych danych." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "Wykluczenia adresów IP/robotów" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "Lista robotów" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "Lista słów (po jednym w wierszu) tak, aby zgadzały się z wykrytymi robotami. Wpisy muszą być co najmniej z 4 znakami lub będą one ignorowane." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "Przywróć domyślne" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "Wymuś aktualizację listy robotów po uaktualnieniach" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "Wymuś listę robotów, aby przywrócić do domyślnych po odbytej aktualizacji WP Statistics. Uwaga: Jeśli ta opcja jest włączona wszystkie niestandardowe roboty dodane do listy zostaną utracone." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "Próg wizyty robota" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "Traktuj odwiedzających z większą niż tę liczbę odwiedzin dziennie jak roboty. 0 = wyłączone." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "Lista wykluczonych adresów IP" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "Dodaj 10.0.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "Dodaj 172.16.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "Dodaj 192.168.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "Użyj pełnej puli" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "Użyj pełnej puli strony, aby zidentyfikować roboty." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "Id wpisu pełnej puli" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "Id wpisu, aby użyć dla strony honeypot." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "Utwórz nową stronę pełnej puli" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "Wykluczenia GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "Lista wykluczonych krajów" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "Lista kodów krajów (jedna linia, dwie litery każda), aby wykluczyć z zbierania statystyk. Użyj \"000\" (trzy zera), aby wykluczyć nieznane kraje." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "Lista dołączonych krajów" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "Lista kodów krajów (jedna linia, dwie litery każda) w celu włączenia przy zbieraniu statystyk, jeśli ta lista nie jest pusta, tylko odwiedzający z uwzględnionych krajów będą rejestrowani. Użyj \"000 \" (trzy zera), aby wykluczyć nieznane kraje." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "Wykluczenia hostu" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "Lista wykluczonych hostów" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "Wykaz w pełni kwalifikowanych nazw hostów (np. server.example.com, jeden na linię), aby wyłączyć z zbierania statystyk." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "Uwaga: Ta opcja nie wykona wyszukiwania wstecznego DNS na każdej obciążonej stronie lecz w pamięci podręcznej adresu IP dla określonych hostów w ciągu jednej godziny. Z wyjątkiem dynamicznego przypisania hostów można znaleźć jakiś stopień nałożenia się, gdy host zmienia jego adres IP, a gdy bufor jest aktualizowany w wyniku niektórych zarejestrowanych wejść." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "Wykluczenia adresów URL" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "Wykluczona strona logowania" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "Wyklucz stronę logowania do rejestracji jako wejście." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "Wykluczone strony administracji" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "Wyklucz strony administracji do rejestracji jako wejście." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "Wykluczone kanały RSS" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "Wyklucza RSS rejestracji jako trafienie." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "Ustawienia browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "Użycie browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "Uaktywnij" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "Baza danych browscap będzie pobierana i wykorzystywana do wykrywania robotów." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "Zaktualizuj informacje browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "Pobierz bazę danych browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "Zapisz zmiany na tej stronie, aby pobrać aktualizację." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "Harmonogram tygodniowy aktualizacji bazy danych browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "Następna aktualizacja będzie za" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "Pobieranie bazy danych browscap planowane będzie raz w tygodniu." + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "Spowoduje to usunięcie instrukcji po zapisaniu ustawień, czy na pewno?" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "Ta funkcja nie będzie przechowywać adresów IP w bazie danych, ale zamiast tego stosować unikalny hash. Ustawienie \"Przechowuj cały ciąg agenta użytkownika\" zostanie wyłączone, jeśli ta opcja jest zaznaczona. Nie będzie w stanie odzyskać adresów IP w przyszłości w celu odzyskania informacji o lokalizacji, jeśli ta jest włączona." + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "Aktywni użytkownicy" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "Aktywny użytkownik" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-pt_BR.mo b/plugins/wp-statistics/languages/wp_statistics-pt_BR.mo new file mode 100644 index 0000000..f8ae161 Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-pt_BR.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-pt_BR.po b/plugins/wp-statistics/languages/wp_statistics-pt_BR.po new file mode 100644 index 0000000..649fd4d --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-pt_BR.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in Portuguese (Brazil) +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2015-04-22 00:39:13+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: pt_BR\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "" + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "" + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "" + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "" + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "" + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "" + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "" + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "" + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "" + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "MM/DD/YYYY" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "Habilitar ou desabilitar esse recurso" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "Verificar se usuários on-line todos os" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "Segundo" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "Tempo para o usuário on-line precisa de verificar no site. Agora: %s segundo" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "Armazenar a seqüência de agente do usuário inteiro" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "Habilitado somente para depuração" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "Coeficiente por visitante" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "Para cada visita contabilizar vários hits. Atualmente a %s." + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "Páginas" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "Rastrear todas as páginas" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "Desativar coluna hits na lista de post/páginas" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "Diversos" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "Mostrar estatísticas na barra de menu" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "Não" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "Sim" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "Mostrar estatísticas na barra de menu do admin" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "Esconder admin avisos sobre recursos não-ativos" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "Por padrão o WP Statistics exibe um alerta se qualquer um dos recursos principais estão desabilitadas em cada página de admin, esta opção irá desativar esses avisos." + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "Excluir o manual" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "Por padrão o WP Statistics armazena o admin manual no diretório plugin (~ 5 meg), se esta opção estiver habilitada, será excluído agora e durante as atualizações no futuro." + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "Desabilitar todos os motores de busca não é permitido, isso irá resultar em todos os motores de busca, sendo ativo." + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "desativar" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "Desabilite %s de coleta de dados e geração de relatórios." + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "Gráficos" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "Incluir totais" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "Adicione uma linha total para gráficos com vários valores, como as referências do motor de busca" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "GeoIP configurações" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "Serviços de localização de IP fornecidos pelo GeoLite2 dados criados pela MaxMind, disponível a partir de %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "Coleção GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "Para obter mais informações e localização (país) do visitante, habilitar esse recurso." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "Atualizar informações de GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "Baixar GeoIP Database" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "Agendar a atualização mensal do GeoIP DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "Download do banco de dados GeoIP será agendado para 2 dias após a primeira terça-feira do mês." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "Esta opção também vai baixar o banco de dados, se o tamanho do arquivo local é menos de 1k (o que geralmente significa que o esboço que vem com o plugin ainda está em vigor)." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "Preencher GeoIP ausente após a atualização do GeoIP DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "Atualize quaisquer dados GeoIP desaparecidos depois de baixar um novo banco de dados." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "Coleção GeoIP está desativada devido às seguintes razões:" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "Coleção GeoIP requer PHP %s ou acima, está atualmente desativado devido a ser de versão PHP instalado " + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "Coleção GeoIP requer a extensão PHP cURL e não está em sua versão de PHP!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "Coleção GeoIP requer a extensão PHP de matemática do BC e não está em sua versão de PHP!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "Modo de segurança PHP detectado! GeoIP coleção não é compatível com o modo de segurança do PHP habilitado!" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "Isto irá apagar permanentemente dados de banco de dados de cada dia, você tem certeza que você deseja habilitar esta opção?" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "Dias" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "O número de dias para manter estatísticas para. Valor mínimo é de 30 dias. Valores inválidos desativará a manutenção diária." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "Endereços de email" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "Emissão de relatórios estatísticos" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "Agenda" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "Enviar relatórios via" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "Email" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "Nota: Para enviar SMS texto mensagens por favor instale o plugin %s." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "WordPress SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "Corpo do relatório" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "Usuário on-line" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "Visitantes hoje" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "Visita hoje" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "Ontem o visitante" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "Ontem visitar" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "Total visitantes" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "Visita total" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "Nenhum" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "Sobre" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "" + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "Google" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "Desativar mapa" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "Desativar a exibição de mapa" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "Geral" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "Manutenção" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "Atualização" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "Uma vez semanal" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "Uma vez a cada 2 semanas" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "Uma vez a cada 4 semanas" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "Estatísticas" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "Mostre estatísticas do site na barra lateral." + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "Total Page Views" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "Total de mensagens" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "Total de páginas" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "Comentários totais" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "Total de Spams" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "Total de usuários" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "Média de Posts" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "Médios comentários" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "Média de usuários" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "Data último Post" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "Nome" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "Itens" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "Visita de ontem" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "Seleccione o tipo de motor de busca" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "" + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "Estatísticas da WP" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "Estatísticas completas para o seu site WordPress." + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "Configurações" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "Clique aqui para visitar o plugin no WordPress.org" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "Visite a página do WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "Clique aqui para avaliar e revisar este plugin no WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "Classifique este plugin" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "WP-Statistics - Hits" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "Visão geral" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "Pesquisas" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "Palavras de pesquisa" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "Otimização" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "Manual" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "Visitantes hoje" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "Hoje visitamos" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "Ontem o visitante" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "View Stats" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "Baixar arquivo ODF" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "Baixar arquivo HTML" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "Manual arquivo não encontrado." + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "Você não tem permissões suficientes para acessar esta página." + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "Erro ao fazer download de dados GeoIP de: %s - %s" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "Erro não foi possível abrir o banco de dados GeoIP baixado para leitura: %s" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "Erro não foi possível abrir o banco de dados do destino GeoIP para escrever %s" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "GeoIP Database atualizado com sucesso!" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "Erro ao fazer download de dados browscap de: %s - %s" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "browscap, banco de dados atualizado com sucesso!" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "browscap já na versão atual!" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "Top 10 navegadores" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "Top 10 países" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "Bater as estatísticas" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "Top 10 páginas" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "Visitantes recentes" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "Top Sites referentes" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "Referências de motor de busca" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "Resumo" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "Últimas palavras de pesquisa" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "" + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "Não é possível carregar o banco de dados GeoIP, certifique-se de que ter baixado ele na página de configurações." + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "Atualizado %s GeoIP registros no banco de dados de visitantes." + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "dados de %s mais de %s dias purgados com êxito." + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "Nenhum registro encontrado para a purga de %s!" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "Por favor, selecione um valor de mais de 30 dias." + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "Estatísticas do navegador" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "Clique para alternar entre" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "Navegadores" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "Navegadores pelo tipo" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "Plataforma" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "Navegadores pela plataforma" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "versão de %s" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "Atenção: Exclusão não estão atualmente definidas para ser gravado, os resultados abaixo podem não refletir as estatísticas atuais!" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "Estatísticas de exclusões" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "10 dias" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "20 dias" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "30 dias" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "2 meses" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "3 meses" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "6 meses" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "9 meses" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "1 ano" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "Gráfico estatístico de exclusões" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "Excluídos os sucessos nos últimos" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "dias" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "Número de acertos excluídos" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "Gráfico de estatísticas de acessos" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "Sucessos nos últimos" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "Número de visitas e visitantes" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "Visite" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "Visitante" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "Últimas estatísticas de palavra de busca" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "#hash #" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "Mapa" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "Página de vídeo" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "De" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "Todos os" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "Estatísticas de visitantes recentes" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "Tendência de página para identificação do borne" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "Tendência de página" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "Estatísticas de referência Search Engine" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "Referências de motor de pesquisa nos últimos" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "Número de referências" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "Total" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "Top países" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "Rank" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "Bandeira" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "País" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "Número de visitantes" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "Top páginas" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "Top 5 tendências de páginas" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "Top 5 página tendências estatísticas" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "Número de acertos" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "title da página não encontrado" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "Visitas" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "Para ser adicionado em breve" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "Referindo-se a sites de" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "Referências" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "Sobre a Versão do WP Statistics %s" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "Site" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "Taxa e revisão" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "Mais informações" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "Este produto inclui dados de GeoLite2 criados por MaxMind, disponível a partir de %s." + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "Outros" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "Hoje os visitantes mapa" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "Endereço" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "Usuário (s) Online" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "Hoje" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "Ontem" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "Total diária" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "Data e hora atual" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "(Ajuste)" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "Data: %s" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "Tempo: %s" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "Hits" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "Acesso negado!" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "dados de %s agente excluídos com sucesso." + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "Por favor, selecione os itens desejados." + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "dados de %s plataformas excluídos com sucesso." + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "dados da tabela %s excluídos com sucesso." + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "Erro, %s não esvaziado!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "Instalação de banco de dados" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "Execute novamente a instalação" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "Instale agora!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "Se por algum motivo a instalação do WP Statistics está faltando as tabelas de banco de dados ou outros itens de núcleo, esta re-irá executar o processo de instalação." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "Índice de banco de dados" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "Países" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "Atualizar agora!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "Instala mais velhas de estatísticas WP permite entradas duplicadas na tabela de visitantes em um caso de canto. Instala mais recente protege contra isso, com um índice exclusivo na tabela. Para criar o índice o mais velho instala entradas duplicadas deve ser eliminado primeiro. \"Update Now, clicando em\" irá examinar a tabela de vistitors, exclua as entradas duplicadas e adicionar o índice." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "Esta operação pode levar um longo tempo em instalações com muitas linhas na tabela de visitantes." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "Instala mais velhas de estatísticas WP permite entradas duplicadas na tabela de visitantes em um caso de canto. Instala mais recente protege contra isso, com um índice exclusivo na tabela." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "Parabéns, sua instalação é já até à data, nada a fazer." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "Exportação" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "Exportação de" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "Por favor selecione" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "Selecione a tabela para o arquivo de saída." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "Exportar para" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "Selecione o tipo de arquivo de saída." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "Incluem a linha de cabeçalho" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "Inclua uma linha de cabeçalho, como a primeira linha do arquivo exportado." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "Comece agora!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "Visitantes" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "Tem certeza?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "Dados" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "Mesa vazia" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "Tabela de todos os dados serão perdidos." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "Claro agora!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "Limpar os registros mais antigos do que" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "Dados de estatísticas do usuário excluído mais velho do que o número de dias selecionado. Valor mínimo é de 30 dias." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "Purifique-se agora!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "Excluir tipos de agente do usuário" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "Excluir agentes" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "Todos os dados do visitante será perdidos para este tipo de agente." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "Exclua agora!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "Excluir as plataformas" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "Todos os dados do visitante será perdidos para este tipo de plataforma." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "Recursos" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "Uso de memória no PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "Byte" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "Limite de memória do PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "O limite de memória, um script pode consumir, definido no php. ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "Número de linhas na tabela de %s" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "Linha" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "Número de linhas" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "Informação de versão" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "Versão do WP-estatísticas" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "A versão do WP Statistics que você está executando." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "Versão do PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "A versão do PHP que você está executando." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "Modo seguro do PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "Modo seguro do PHP está ativo. O código do GeoIP não é suportado no modo de segurança." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "jQuery versão" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "A versão do jQuery que você está executando." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "cURL versão" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "cURL não instalado" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "O PHP cURL versão de extensão que você está executando. cURL é necessária para o código do GeoIP, se ele não estiver instalado que GeoIP será desativado." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "Instalado" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "Não instalado" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "Informação de arquivo" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "GeoIP Database" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "Arquivo de banco de dados não existir." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr ", criado em " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "O tamanho do arquivo e a data do banco de dados GeoIP." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "Arquivo browscap. ini" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "arquivo browscap ini não existe." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "O tamanho do arquivo e a data do arquivo browscap. ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "browscap arquivo de Cache" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "Não existe um arquivo de cache browscap." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "O tamanho do arquivo e a data do arquivo de cache browscap." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "Informação do cliente" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "Cliente IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "O endereço IP do cliente." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "Agente do usuário" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "Seqüência de agente do usuário cliente." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "Isto irá substituir todos os endereços IP no banco de dados com valores de hash e não pode ser desfazer, tem certeza?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "GeoIP opções" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "Atualiza os dados de localização desconhecida no banco de dados, isso pode demorar um pouco" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "Endereços IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "Endereços IP de hash" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "Substituir endereços IP no banco de dados com valores de hash, você não será capaz de recuperar os endereços IP no futuro para preencher informações de localização depois e isso pode demorar um pouco" + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "Endereços IP substituído com valores de hash." + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "Instale a rotina completa." + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "Recursos/informação" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "Purga" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "Banco de dados" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "Atualizações" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "Estatísticas da WP V %s" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "Visite-nos Online" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "Venha visitar nosso grande %s novas e manter-se atualizado sobre as últimas notícias sobre estatísticas do WP." + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "site" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "Taxa e revisão no WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "Obrigado por instalar o WP Statistics, encorajamo-lo a apresentar um " + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "avaliação e revisão" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "lá no WordPress.org. Seu feedback é muito apreciado!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "Traduções" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "Estatísticas da WP suporta internacionalização e nós incentivamos nossos usuários para enviar traduções, por favor visite o nosso %s para ver o status atual e %s se você gostaria de ajudar." + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "site de colaboração de tradução" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "Deixe-nos cair uma linha" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "Suporte" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "Lamentamos que você está tendo problema com as estatísticas da WP e estamos felizes em ajudar. Aqui estão algumas coisas para fazer antes de nos contactar:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "Você já leu o %s?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "Perguntas freqüentes" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "Manual" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "Você tem que procurar o %s para um problema semelhante?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "Fórum de suporte" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "Você tem que pesquisar na Internet para quaisquer mensagens de erro que você está recebendo?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "E algumas coisas para verificar:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "Como está seu memory_limit do php. ini?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "Você já tentou desabilitar qualquer outros plugins que você pode ter instalado?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "Você já tentou usar do tema padrão do WordPress?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "Duplo você verificou as configurações do plugin?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "Você tem todas as extensões PHP necessárias instaladas?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "Você está em uma página em branco ou incompleta, exibida no seu navegador? Você exibir a fonte para a página e verificar se há quaisquer erros fatais?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "Você verificou seus logs de erro do servidor PHP e web?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "Ainda não tendo alguma sorte?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "Então por favor, abra um novo tópico sobre o %s... e vou responder logo que possível." + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "Fórum de suporte do WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "Alternativamente %s Suporte também está disponível." + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "Farsi" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "Níveis de acesso" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "Necessário nível de usuário para exibir estatísticas WP" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "Nível de usuário necessário para gerenciar estatísticas WP" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "Consulte o %s para obter detalhes sobre os níveis de capacidade." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "Página de recursos e funções do WordPress" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "Dica: manage_network = Super Admin rede, manage_options = administrador, edit_others_posts = Editor, publish_posts = autor, edit_posts = contribuinte, ler = todos." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "Cada um do casscades acima os direitos para cima na configuração padrão WordPress. Assim, por exemplo, selecionar publish_posts concede o direito de autores, editores, administradores e Super administradores." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "Se você precisa de uma solução mais robusta para delegar acesso, que você pode querer olhar para %s no diretório plugin WordPress." + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "Exclusões" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "Exclusões de registro" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "Enable" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "Isto irá gravar todos os hits excluídos em uma tabela separada, com as razões por que foi excluída, mas nenhuma outra informação. Isto irá gerar uma grande quantidade de dados, mas é útil se você quiser ver o número total de visitas seu site recebe, visitas do usuário não só real." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "Excluir funções de usuário" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "Excluir" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "Exclua %s papel de coleta de dados." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "Exclusões de IP/robô" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "Lista de robô" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "Uma lista de palavras (um por linha) para que correspondam para detectar os robôs. As entradas devem ter pelo menos 4 caracteres ou eles serão ignorados." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "Redefinir para padrão" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "Actualização da lista de força robô depois de upgrades" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "A lista de robôs sejam redefinidas para o padrão, depois de uma atualização de estatísticas WP tem lugar de força. Observação Se essa opção estiver habilitada qualquer personalizado robôs que você adicionou à lista serão perdidos." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "Lista de endereços IP excluída" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "Adicionar 10.0.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "Adicionar 172.16.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "Adicionar 192.168.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "Exclusões de URL do site" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "Página de login excluídos" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "Exclua a página de login para se registrar como um sucesso." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "Páginas admin excluídos" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "Exclua as páginas admin para se registrar como um sucesso." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "browscap configurações" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "uso browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "Ativo" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "Banco de dados browscap vai ser baixado e usado para detectar os robôs." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "Atualização browscap informação" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "Baixar browscap banco de dados" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "Salve as alterações nesta página para baixar a atualização." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "Agendar a atualização semanal do browscap DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "Próxima atualização será" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "Download do banco de dados browscap será agendado pelo menos uma vez por semana." + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "Isso excluirá o manual quando você salvar as configurações, você tem certeza?" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "Esse recurso não irá armazenar endereços IP no banco de dados, mas em vez disso, usou um hash exclusivo. O string de agente de usuário inteira \"Store\" configuração será desabilitada se esta opção estiver seleccionada. Você não será capaz de recuperar os endereços IP no futuro para recuperar informações de localização, se essa opção estiver habilitada." + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "Usuários on-line" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "Usuário on-line" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-ro_RO.mo b/plugins/wp-statistics/languages/wp_statistics-ro_RO.mo new file mode 100644 index 0000000..fd7723f Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-ro_RO.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-ro_RO.po b/plugins/wp-statistics/languages/wp_statistics-ro_RO.po new file mode 100644 index 0000000..050b0d3 --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-ro_RO.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in Romanian +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2015-04-22 00:39:36+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2);\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: ro\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "" + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "" + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "" + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "" + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "" + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "" + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "" + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "" + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "" + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "MM/DD/YYYY" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "Activa sau dezactiva această facilitate" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "Verificaţi pentru utilizatorii online, fiecare" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "Al doilea" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "Timp pentru a verifica exacte online utilizator în site-ul. Acum: %s a doua" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "Magazin întregul user agenţie fibros" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "Doar activat pentru depanare" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "Coeficientul pe vizitator" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "Pentru fiecare vizita a ţine cont de mai multe hit-uri. În prezent %s." + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "Pagini" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "Urmări toate paginile" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "Dezactivaţi coloana de hit-uri în post/pagini lista" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "Diverse" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "Statisticile arată, în bara de meniu" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "nu" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "Da" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "Statisticile arată, în bara de meniu admin" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "Ascunde admin notificări despre caracteristici non-activă" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "Implicit WP Statistics afişează o avertizare în cazul în care oricare dintre caracteristicile de bază sunt dezactivate pe fiecare pagina de admin, această opţiune va dezactiva aceste notificări." + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "Ştergeţi manual" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "În mod implicit WP Statistics magazine admin manual în directorul de plugin-ul (~ 5 meg), dacă această opţiune este activată va fi şters acum şi în timpul upgrade-uri în viitor." + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "Dezactivarea toate motoarele de căutare nu este permis, face deci va duce la toate motoarele de căutare, fiind activi." + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "nu fi de acord" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "Dezactivaţi %s de colectare a datelor şi raportare." + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "Diagrame" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "Include totaluri" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "Adăugaţi o linie total grafice cu valori multiple, cum ar fi căutare motor de recomandări" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "Setările de GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "IP locaţie servicii oferite de GeoLite2 de date creat de MaxMind, disponibil de la %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "Colectia GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "Pentru a lua mai multe informaţii şi locația (ţara) la vizitator, activaţi această caracteristică." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "Actualizare GeoIP Info" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "Download baza de date GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "Programa actualizarea lunara a GeoIP DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "Download de date GeoIP va fi programat pentru 2 zile de la prima zi de marţi a lunii." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "Această opţiune va descărca, de asemenea, baza de date în cazul în care filesize locale este mai puţin 1k (care de obicei înseamnă ciot care vine cu plugin-ul este încă în vigoare)." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "Popula GeoIP lipsă după actualizare de GeoIP DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "Actualizaţi orice date lipsă GeoIP după descărcarea o nouă bază de date." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "GeoIP colecţie este dezactivat din următoarele motive:" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "GeoIP Colectia necesită PHP %s sau mai sus, aceasta este în prezent dezactivată datorită instalat PHP versiune fiind " + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "GeoIP Colectia necesită extensia PHP buclat şi nu este încărcat pe versiunea dumneavoastră a PHP!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "GeoIP Colectia necesită extensia PHP de matematica BC şi nu este încărcat pe versiunea dumneavoastră a PHP!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "Modul de siguranţă PHP detectat! GeoIP colecția nu este acceptată cu modul de siguranţă PHP activat!" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "Aceasta va șterge definitiv datele din baza de date fiecare zi, sunteţi sigur că doriţi să activaţi această opţiune?" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "Zile" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "Numărul de zile să păstreze statistici pentru. Valoarea minimă este de 30 de zile. Valori nevalide va dezactiva zilnică de întreţinere." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "Adresele de poştă electronică" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "Raportarea statistică" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "Programul" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "Trimite rapoarte prin" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "E-mail" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "SMS-URI" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "Notă: Pentru a trimite SMS text mesaj vă rugăm să instalaţi plugin-ul %s." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "WordPress SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "Raportul corpului" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "Useri online" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "Vizitatori astăzi" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "Vizite azi" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "Ieri vizitator" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "Vizitaţi ieri" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "Total vizitatori" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "Vizite pe an" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "Nici unul" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "Despre" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "" + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "Google" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "Dezactivează harta" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "Nu fi de acord display-ului" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "Generale" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "Intretinere" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "Actualizare" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "O dată săptămânal" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "O dată la 2 săptămâni" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "O dată la 4 săptămâni" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "Statistici" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "Arată Statistici site în bara laterală." + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "Total de vizualizări" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "Postari totale" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "Pagini totale" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "Comentarii totale" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "Spam total" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "Useri totali" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "Postari in medie" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "Comentarii in medie" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "Useri in medie" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "Data ultimei postari" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "Nume" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "Elemente" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "Vizite ieri" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "Selectaţi tipul de motor de căutare" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "" + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "WP Statistics" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "Complet de statistici pentru site-ul WordPress." + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "Setări" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "Click aici pentru a vizita plugin-ul pe WordPress.org" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "Vizitaţi pagina de WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "Click aici pentru a evalua şi revizui acest plug-in pe WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "Rata de acest plugin" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "WP Statistics - hit-uri" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "Privire de ansamblu" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "Căutări" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "Căutare cuvinte" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "Optimizare" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "Manual de" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "Azi vizitatori" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "Astăzi vizita" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "Ieri vizitator" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "Vezi statisticile" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "Descarcă ODF" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "Descărcaţi fişierul HTML" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "Manualul fişier negăsit." + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "Nu aveți suficiente permisiuni pentru a accesa această pagină." + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "Eroare de descărcare GeoIP bazei de date: %s - %s" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "Eroare nu a putut deschide descărcat GeoIP date pentru lectură: %s" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "Eroare nu pot deschide baza de date destinaţie GeoIP pentru scrierea %s" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "GeoIP baza de date actualizată cu succes!" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "Eroare de descărcare browscap bazei de date: %s - %s" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "browscap baza de date actualizată cu succes!" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "browscap deja la versiunea curentă!" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "Top 10 browsere" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "Top 10 tari" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "Lovit statistici" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "Top 10 pagini" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "Vizitatori recente" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "Top referindu-se site-uri" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "Recomandări de motor de căutare" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "Rezumat" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "Ultimele cuvinte de căutare" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "" + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "Imposibilitatea de a încărca baza GeoIP de date, asiguraţi-vă că aţi descărcat-o în pagina de setări." + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "Actualizat %s GeoIP înregistrările bazei de date de vizitatori." + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "%s date mai vechi de %s zile curăţit cu succes." + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "Înregistrări găsite epurare din %s!" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "Vă rugăm să selectaţi o valoare de peste 30 de zile." + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "Statistici browser" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "Faceţi clic pentru a comuta" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "Browsere" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "Browsere de tip" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "Platforma" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "Browsere de platforma" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "versiunea de %s" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "Atentie: Excluderea nu sunt în prezent stabilite pentru a fi înregistrate, rezultatele de mai jos să nu reflecte statisticile actuale!" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "Excluderi statistici" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "10 zile" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "20 de zile" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "30 de zile" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "2 luni" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "3 luni" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "6 luni" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "9 luni" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "1 an" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "Excluderi statistice diagramă" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "Exclus hit-uri în ultima" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "zile" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "Număr de hit-uri excluse" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "Graficul de statistici afisari" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "Hit-uri în ultima" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "Numărul de vizite şi vizitatori" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "Vizitaţi" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "Vizitator" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "Cele mai recente căutare cuvânt statistici" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "#hash #" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "Hartă" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "Filme" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "La" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "Toate" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "Statisticile recente vizitator" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "Pagina Trend pentru ID-ul Post" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "Pagina Trend" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "Căutare motor de recomandare statistici" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "Căutare motor de recomandări în ultima" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "Numărul de accesări" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "Total" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "Top tari" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "Protopopiat" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "Pavilion" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "Tara" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "Vizitatorul conta" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "Top pagini" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "Top 5 tendinţe de pagini" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "Top 5 filme Trend-Stats" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "Număr de hit-uri" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "Nici a title de pagina găsit" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "Vizite" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "Pentru a fi adăugate în curând" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "Referindu-se site-uri din" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "Referințe" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "Despre WP Statistics Versiunea %s" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "Site-ul" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "Rata şi revizuirea" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "Mai multe informaţii" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "Acest produs include date GeoLite2 creat de MaxMind, disponibil de la %s." + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "Alte" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "Azi vizitatori hartă" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "Adresa" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "Utilizator(i) Online" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "Astăzi" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "Ieri" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "Total zilnic" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "Ora şi data" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "(Adaptare)" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "Data: %s" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "Timp: %s" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "Hit-uri" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "Accent denied!" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "%s agent de date şters cu succes." + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "Vă rugăm să selectaţi elementele dorite." + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "platforma de date %s şters cu succes." + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "date de tabel %s şters cu succes." + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "Eroare, %s nu golite!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "Baza de date de configurare" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "Executați din nou instalare" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "Instalaţi acum!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "Dacă pentru un motiv oarecare instalarea WP Statistics lipseşte tabelele bazei de date sau alte elemente de bază, acest lucru va re-executa procesul de instalare." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "Indicele de baze de date" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "Ţări" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "actualizaţi acum!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "Instalări mai vechi de WP Statistics permit intrările dublate în tabelul de vizitatori într-un caz de colţ. Mai nou se instalează proteja cu un index unic pe masă. Pentru a crea indexul pe instalează mai vechi intrările dublate trebuie șters în primul rând. Clic pe \"Update Now\" va scana tabelul vistitors, Ştergeţi intrările dublate şi adăugaţi index." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "Această operaţiune ar putea dura mult timp pe instalează cu multe rânduri din tabelul de vizitatori." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "Instalări mai vechi de WP Statistics permit intrările dublate în tabelul de vizitatori într-un caz de colţ. Mai nou se instalează proteja cu un index unic pe masă." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "Felicitări, instalarea este deja până la data, nimic de a face." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "Export" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "Exportul din" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "Vă rugăm să selectaţi" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "Selectaţi tabelul pentru fişierul de ieşire." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "Export" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "Selectaţi tipul de fişier de ieşire." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "Includeţi rândul antet" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "Includeţi un rând ca prima linie de fişierul exportat." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "Începe acum!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "Vizitatori" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "eşti sigur?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "Date" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "Tabel gol" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "Tabel de date cu toate vor fi pierdute." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "Clar acum!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "Epurare înregistrările mai vechi" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "Elimină datele utilizatorului statistici mai vechi decât numărul de zile selectate. Valoarea minimă este de 30 de zile." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "Epurare acum!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "Ştergeţi tipuri de Agent de utilizator" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "Ştergeţi agenţi" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "Toate vizitator datele vor fi pierdute pentru acest tip de agent." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "Ştergeţi acum!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "Ştergeţi platforme" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "Toate vizitator datele vor fi pierdute pentru acest tip de platforma." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "Resurse" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "Memorie usage în PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "Octet" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "PHP memorie limită" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "Limita de memorie, un script poate consuma, stabilit în php.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "Numărul de rânduri din tabelul %s" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "Rând" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "Numărul de rânduri" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "Info versiune" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "Versiune WP Statistics" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "Versiunea WP Statistics se execută." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "Versiunea PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "Versiunea de PHP se execută." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "PHP Safe Mode" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "PHP Safe Mode este activ. GeoIP codul nu este acceptat în modul de siguranţă." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "jQuery Traducere" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "Versiune de jQuery se execută." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "cURL versiune" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "cURL neinstalată" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "PHP buclat versiune de extensie se execută. cURL este necesar pentru codul GeoIP, dacă nu este instalat GeoIP va fi dezactivat." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "Instalat" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "Nu a instala" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "Informaţii fişier" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "Baza de date GeoIP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "Fişier bază de date nu exista." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr ", creat pe " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "Dimensiunea fişierului şi data GeoIP bazei de date." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "browscap.ini fişier" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "browscap.ini fişierul nu există." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "Dimensiunea fişierului şi data de fişier browscap.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "browscap fișierul Cache" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "browscap cache dosar nu exista." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "Dimensiunea fişierului şi data fișierul cache al browscap." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "Client Info" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "Client IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "IP-ul client." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "Agent utilizator" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "Şirul de agent utilizator clientului." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "Aceasta va înlocui toate adresele de IP în baza de date cu valorile hash şi nu poate fi anulare, eşti sigur?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "Opţiuni de GeoIP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "Actualizări orice date de locaţie necunoscută în baza de date, aceasta poate dura un timp" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "Adrese IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "Adrese de IP hash" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "Înlocuiţi adrese de IP în baza de date cu valorile hash, nu va fi capabil de a recupera adresele IP în viitor pentru a popula informatii de localizare după aceea şi acest lucru poate dura un timp" + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "Adrese IP înlocuite cu valorile hash." + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "Instalarea completă de rutină." + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "Resurse/informatii" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "Epurare" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "Baza de date" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "Actualizări" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "WP Statistics V %s" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "Vizitaţi-ne Online" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "Vino vizita noastră mare %s noi şi să păstreze până la data de pe cele mai recente ştiri despre WP Statistics." + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "site-ul" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "Rata şi revizuirea la WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "Vă mulţumim pentru instalarea WP Statistics, vă încurajăm să prezinte o " + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "rating şi revizuire" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "peste la WordPress.org. Feedback-ul dumneavoastră este apreciat foarte mult!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "Traduceri" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "WP Statistics sprijină internaţionalizare şi încurajăm utilizatorii noştri să prezinte traduceri, vă rugăm să vizitaţi nostru %s pentru a vedea starea curentă şi %s dacă doriţi pentru a ajuta." + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "traducerea site-ul de colaborare" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "Drop-ne o linie" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "Suport" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "Ne pare rău, sunteţi având problemă cu WP Statistics şi suntem bucuroşi să ajute. Aici sunt câteva lucruri de făcut înainte de a ne contacta:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "Ai citit %s?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "Întrebări frecvente" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "manual de" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "Aţi căuta %s pentru o problemă similară?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "suport forum" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "Aţi fost căutaţi pe Internet pentru orice mesaje de eroare care le primesc?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "Şi câteva lucruri să verificaţi:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "Cum este vă memory_limit în php.ini?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "Aţi încercat dezactivarea orice alte plugin-uri le-aţi instalat?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "Aţi încercat, folosind WordPress tema implicită?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "Ai dublu verificat setările plugin-ul?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "Ai toate extensiile necesare de PHP instalat?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "Sunt Noţiuni de bază o pagină necompletată sau incomplete afişate în browser-ul? Ai Vezi sursa pentru pagină şi a verifica pentru orice erori fatale?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "Have tu a verifica jurnalele de eroare server PHP şi web?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "Încă nu au nici un noroc?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "Apoi, vă rugăm să deschideţi un nou thread pe %s şi ne veţi răspunde cât de curând posibil." + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "Forum de sprijin WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "Alternativ suport %s este disponibil, de asemenea." + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "Farsi" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "Nivele de acces" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "Necesare la nivel de utilizator pentru a vizualiza statistica WP" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "La nivel de utilizator necesare pentru a gestiona WP Statistics" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "Vedea %s pentru detalii pe capacitatea de niveluri." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "Roluri de WordPress şi capabilităţile filme" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "Sugestie: manage_network = Super Admin retea, manage_options = Administrator, edit_others_posts = Editor, publish_posts = autor, edit_posts = contribuitor, citi = toată lumea." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "Fiecare dintre floremtina mai sus drepturile în sus în configuraţia implicită WordPress. Deci, de exemplu, selectând publish_posts acordă dreptul de la autori, editori, administratori şi Super administratori." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "Dacă aveţi nevoie de o soluţie mai robust pentru a delega acces aţi putea dori să se uite la %s în WordPress plug-in directorul." + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "Excluderi" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "Înregistrare excluderi" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "Permite" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "Acest lucru va înregistra toate hit-uri excluse dintr-un tabel separat cu motive de ce acesta a fost exclus, dar fără alte informaţii. Acest lucru va genera o mulţime de date, dar este util dacă doriţi să vedeţi numărul total de hit-uri site-ul devine, vizite de utilizator nu doar real." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "Exclude rolurile de utilizator" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "Exclude" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "Exclude rolul %s la culegerea datelor." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "IP/Robot excluderi" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "Lista de robot" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "O listă de cuvinte (una pe linie) pentru a se potrivi împotriva pentru a detecta roboţi. Intrările trebuie să fie cel puţin 4 caractere sau ele vor fi ignorate." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "Resetare la valorile implicite" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "Vigoare robot lista actualizare după upgrade-uri" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "Vigoare lista de robot pentru a fi resetat la valorile implicite din după o actualizare a WP Statistics are loc. Notă Dacă această opţiune este activată orice personalizat roboti ai adăugat în listă vor fi pierdute." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "Lista de adrese IP excluse" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "Adauga 10.0.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "Adauga 172.16.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "Adauga 192.168.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "Excluderile de URL-ul site-ului" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "Pagina de login excluse" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "Exclude pagina de login pentru înregistrarea ca un hit." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "Exclus admin pagini" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "Excludeţi pagini de admin pentru înregistrarea ca un hit." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "Setări browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "browscap de utilizare" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "Activ" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "Browscap baza de date va fi descărcate şi utilizate pentru a detecta roboţi." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "Actualizare browscap Info" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "Descarca browscap baza de date" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "Salvați modificările pe această pagină pentru a descărca actualizarea." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "Orarul săptămânal update de browscap DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "Următoarea actualizare va fi" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "Descarca browscap bazei de date va fi programat pentru o dată pe săptămână." + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "Aceasta va şterge manual când salvaţi setările, sigur?" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "Această caracteristică nu va stoca adrese IP în baza de date, dar în schimb folosit un hash unic. \"Store întreaga utilizator agent string\" setarea va fi dezactivat dacă aceasta este bifată. Nu va fi capabil de a recupera adresele IP în viitor pentru a recupera informatii de localizare dacă acest lucru este permis." + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "Utilizatori Online" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "Utilizator online" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-ru_RU.mo b/plugins/wp-statistics/languages/wp_statistics-ru_RU.mo new file mode 100644 index 0000000..19126d0 Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-ru_RU.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-ru_RU.po b/plugins/wp-statistics/languages/wp_statistics-ru_RU.po new file mode 100644 index 0000000..192c95e --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-ru_RU.po @@ -0,0 +1,2752 @@ +# Translation of WP Statistics in Russian +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-03-26 02:10:51+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: ru\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "Соответствующий виджет не найден!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "Zlib gzopen()" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "Если функция gzopen() доступна. gzopen() требуется для загрузки базы данных GeoIP." + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "Ошибка: функции download_url() или gzopen() недоступны!" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "Ошибка установки прав на директорию базы данных GeoIP, убедитесь, что ваш вебсервер имеет права на запись в директорию: %s" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "— Ваша версия PHP не поддерживается плагином." + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "Плагин WP Statistics отключен" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "Вы пытаетесь запустить плагин WP Statistics на версии PHP %s, которая не поддерживается. Для работы плагина требуется версия PHP %s или выше!" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "Пожалуйста, обратитесь к вашему хостинг-провайдеру с вопросом об обновлении на поддерживаемую версию или отключите плагин WP-Statistics." + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "ОШИБКА: Виджет не найден!" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "Загрузка..." + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "Перезагрузка..." + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "Топ посетителей" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "страницу оптимизации" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "Включено" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "Удаление устаревших данных о дневной статистике" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "Задание WP Cron будет ежедневно удалять любые данные, старше указанного количества дней." + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "Удалять данные старше" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "Ежедневное удаление посетителей с большим количеством обращений" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "Задание WP Cron будет ежедневно удалять всех посетителей, у которых число обращений к страницам выше указанного количества (или они боты)." + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "Число обращений к страницам, после чего посетитель будет удален. Минимальное значение - 10 обращений. Недопустимое количество вызовет отключение задачи." + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "ID сообщения/страницы для вывода статистики." + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "ID сообщения/страницы" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "Ask.com" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "Период времени для получения статистики. Для расчета используется функция strtotime() (http://php.net/manual/en/datetime.formats.php). Используйте \\\"total\\\" для получения всех записанных дат" + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "отслеживание посетителей" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "сбор geoip данных" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "индекс таблицы посещений" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "Требуется обновление базы данных, пожалуйста перейдите на %s и обновите следующее: %s" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "индекс таблицы стран" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "таблица поисковых запросов" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "страница настроек" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "," + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "Следующие функции отключены, перейдите на %s и включите их: %s" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "отслеживание переходов" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "отслеживание пользователей на сайте" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "Следующие таблицы плагина не существуют в базе данных, пожалуйста запустите снова установку %s по ссылке %s:" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "Конвертация таблицы поисковых запросов завершена, %d строк(и) добавлено." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "Прежние версии Wp Statistics хранили производили поиск по таблице посетителей не оптимально, что могло привести к ущербу производительности на больших базах данных. Новые таблицы лишены этого недостатка." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "Таблица поисковых запросов" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "Конвертация" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "Конвертировать!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "Прежние версии Wp Statistics хранили производили поиск по таблице посетителей не оптимально, что могло привести к ущербу производительности на больших базах данных. Новые таблицы лишены этого недостатка, поэтому требуется конвертировать таблицы старого формата в новый." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "Спам переходы" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "Еженедельно загружать черные списки спам-реферреров от Piwik." + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "Внешнее" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "Настройки черного списка спам-реферреров от Piwik." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "Еженедельно обновлять черный список спам-реферров" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "Обновит базу данных спам-реферров Piwik" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "Обновить черный список спам-реферров Piwik" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "Будет загружена и использована база данных спам-реферров от Piwik, для обнаружения спама." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "Черный список спам-реферреров предоставлен Piwik и доступен %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "Использовать черный список спам-реферров Piwik" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "Расценивать неверные данные браузера как робота" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "Страницы 404" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "Дата" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "Расценивать любого посетителя с неверными данными браузера (отсутствие IP-адреса или User Agent`а) как робота." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "Исключить страницы 404" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "Не учитывать просмотры любых страниц, которые возвращают "404 Not Found"." + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "Ошибка при создании директории базы данных GeoIP, убедитесь, что ваш вебсервер имеет достаточно прав на создание директорий в: %s" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "Добавлять заголовок страницы для пустых поисковых фраз" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "Если поисковая система зафиксировала переход, но не указала поисковый запрос, эта опция заменит поисковый запрос на заголовок страницы с \"~:\". Это позволяет предположить, что искал пользователь." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "Удалить посетителей с более чем" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "просмотрами" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "Удалит данные о посетителях, которые имеют количество просмотров за день больше указанного количества. Это необходимо для удаления старых данных, например, после множественного посещения ботами. Это удалит посетителя и его просмотры на сайте, но не удалит индивидуальную страницу просмотров. Минимальное значение - 10 просмотров." + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "Не найдено посетителей для удаления." + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "%s записей успешно удалено." + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "Количество просмотров должно быть больше или равно 10!" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "Просмотров страницы" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "Количество страниц" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "Количество комментариев" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "Количество спама" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "Количество пользователей" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "Сообщений в среднем" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "Комментариев в среднем" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "Пользователей в среднем" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "Поисковый провайдер" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "" +"Поставщик поиска, чтобы получить статистику по.\n" +"Поисковая система для получения статистики." + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "Формат чисел" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "Формат отображения числе: i18n, английский, нет" + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "Английский" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "Международный" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "Общая статистика просмотров" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "Изображено на графике" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "За все время" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "Задумывались ли вы о пожертвовании в пользу WP Statistics?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "Пожертвовать" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "Покажите насколько вам нравится WP Statistics. Пожертвуйте на развитие проекта на странице %s." + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "пожертвований" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "Пожертвовать сейчас!" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "Закрыть" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "Выберите статистику, которую хотите увидеть." + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "Статистика" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "Количество записей" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "Период времени" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "для" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "Перейти" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "Позиция #5" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "Позиция #4" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "Позиция #3" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "Позиция #1" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "Позиция #2" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "Таблица посещений" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "Прежние версии WP Statistics позволяли дублирование записей в таблице посещений. Новые версии содержат уникальный индекс в таблице. Чтобы создать индекс в таблицах старого формата, нужно сначала удалить дублирующиеся записи. Нажмите на кнопку \"Обновить сейчас\", чтобы удалить дублирующиеся записи и добавить индекс." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "Эта операция может занять много времени на таблицах посещений с большим количеством данных." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "Прежние версии WP Statistics позволяли дублирование записей в таблице посещений. Новые версии содержат уникальный индекс в таблице." + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "Отфильтровано по" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "Диапазон" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "ММ/ДД/ГГГГ" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "Отключит переводы и будет показывать только английский вариант WP Statistics (обновите страницу два раза, чтобы переключить язык)" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "Принудительно использовать английский" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "Языки" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "Примечание: опция учитывает только имя скрипта, его параметры (все, что после ?) НЕ учитывается. Записи менее двух символов будут проигнорированы." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "Список внутренних адресов (например /wordpress/about, один адрес на строку), которые нужно исключить из статистики." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "Список исключенных URL-адресов" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "Исключенные URL" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "Последние 365 дней (год)" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "Последние 30 дней (месяц)" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "Последние 7 дней (неделя)" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "Yahoo!" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "Яндекс" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "clearch.org" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "DuckDuckGo" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "Bing" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "Baidu" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "Ленты" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "Роль пользователя" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "Страница авторизации" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "Админпанель" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "Переход с этого сайта" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "Совпадение IP" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "Робот" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "В настоящее время на сайт нет пользователей онлайн." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "Порог роботов" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "Страница приманка" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "Статистика трендов страниц" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "Имя хоста" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "Включить или отключить эту функцию" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "Проверять пользователей онлайн каждые" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "секунд(ы)" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "Периодичность проверки пользователей на сайте. Сейчас: %s секунд(ы)" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "Регистрировать всех пользователей" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "Игнорировать настройки исключения и регистрировать всех пользователей, которые находятся на сайте (в том числе рефералов и роботов). Следует использовать только для устранения неполадок." + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "Сохранять строку UserAgent" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "Включайте только для отладки" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "Коэффициент на посетителя" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "Для каждого посещения за несколько просмотров. Сейчас %s." + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "Страницы" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "Отслеживать все страницы" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "Удалять параметры из URL" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "Удалять все, после знака ? в URL." + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "Скрыть столбец посещений в списке записей/страниц" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "Прочее" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "Показывать статистику в меню" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "Нет" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "Да" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "Показывать статистику в админ-баре" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "Скрыть уведомления администратору о неактивных компонентах" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "По умолчанию WP Statistics отображает предупреждение на каждой странице администратора, если любая из основных функций отключена . Этот параметр отключит эти уведомления." + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "Удалить руководство" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "По умолчанию WP Statistics хранит руководство пользователя в директории плагина (~ 5 Мб). Если эта опция включена, файл будет удален сейчас и во время обновлений в будущем." + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "Поисковые системы" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "Отключение всех поисковых системах не допускается, поэтому это оставит все поисковые системы активными." + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "отключить" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "Отключит сбор данных и ответ от %s." + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "Графики" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "Включить общие данные" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "Добавить в диаграмму линию с общими данными и несколькими значениями, например переходы из поисковых систем" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "Настройки GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "Данные предоставлены GeoLite2 от MaxMind, доступны %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "Сбор GeoIP данных" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "Для получения дополнительной информации и местоположения (страны) о посетителе, включите эту функцию." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "Обновить данные GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "Скачать базу данных GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "Ежемесячно обновлять базу данных GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "Загружать базу данных GeoIP через 2 дня, после первого вторника месяца." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "Также эта опция загрузить базу данных, если ее размер на диске менее 1кб" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "Обновить неизвестные данные GeoIP, после его обновления" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "Обновит любые недостающие GeoIP данные, после загрузки новой базы данных." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "Код страны, для внутренних IP-адресов" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "Международные стандарты регламентируют двухбуквенный код страны (например US = США, RU = Россия и т.д.) для указания внутренних IP-адресов (например 10.0.0.1, 192.158.1.1, 127.0.0.1 и т.д.). Используйте \"000\" в качестве кода страны (три нуля) для указания \"Неизвестно\" в поле Страна." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "Работа GeoIP отключена по следующим причинам:" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "Для GeoIP требуется PHP версии %s или выше, обновите версию PHP." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "Для GeoIP требуется расширение PHP cURL и оно недоступно в вашей версии PHP!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "Для GeoIP требуется расширение PHP BC Math и оно недоступно в вашей версии PHP!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "Включен безопасный режим PHP! Работа GeoIP невозможна при включенном безопасном режиме PHP!" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "Это удалит все данные из базы данных за каждый из дней, вы уверены, что хотите включить эту опцию?" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "дней" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "Количество дней хранения статистики. Минимальное значение составляет 30 дней. Недопустимые значения отключат удаление." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "Общие настройки уведомлений" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "E-mail адреса" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "Список E-mail адресов для уведомления, разделяйте запятыми" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "Уведомления об обновлениях" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "Browscap" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "Отправлять уведомление при обновлении browscap.ini." + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "Отправлять уведомление при обновлении базы данных GeoIP." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "Очистка" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "Отправлять уведомление при очистке старых записей базы данных." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "Обновление" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "Отправлять уведомление при обновлении плагина." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "Статистические уведомления" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "Расписание" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "Выберите частоту получения статистических отчетов." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "Отправлять сообщения через" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "E-mail" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "Выберите метод доставки статистических отчетов." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "Примечание: чтобы отправлять текстовые SMS-сообщения, необходимо установить плагин %s." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "WordPress SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "Тело отчета" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "Введите содержание отчета." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "Любые шорткоды поддерживаемые вашей версией WordPress, включая все шорткоды плагина WP Statistics (список доступных кодов вы можете найти в руководстве администратора) могут быть использованы в теле сообщения. Пример:" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "Посетителей онлайн" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "Посетителей сегодня" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "Посещений сегодня" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "Посетителей вчера" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "Посещений вчера" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "Всего посетителей" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "Всего посещений" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "Нет" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "О плагине" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "Консоль" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "Следующие пункты влияют на всех пользователей." + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "Отключить виджеты консоли" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "Отключит виджеты в консоли WordPress" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "Редактор страниц/записей" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "Отключить виджет в редакторе страниц/записей" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "Отключить виджет в редакторе страниц/записей." + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "Google" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "Отключить карту" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "Отключит отображение карты" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "Удаление WP Statisitcs" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "Удаление плагина WP Statisitcs не удалит его данные и настройки, но вы можете использовать эту опцию, чтобы удалить все данные плагина перед его удалением." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "После отправки этой формы все настройки будут удалены при первой загрузке страницы, однако WP-Statistics будет отображаться в меню администратора, пока не будет открыта новая страница" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "Удалить данные и настройки" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "Удалить" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "Это удалит все данные и настройки. Действие отменить невозможно." + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "Общее" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "Уведомления" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "Консоль/Обзор" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "Обслуживание" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "Очистка" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "Обновить" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "Раз в неделю" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "Раз в 2 недели" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "Раз в 4 недели" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "Статистика" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "Показать статистику сайта в боковой панели." + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "Всего просмотров страниц" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "Всего записей" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "Всего страниц" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "Всего комментариев" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "Всего спама" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "Всего пользователей" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "Среднее число записей" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "Среднее число комментариев" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "Среднее число пользователей" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "Дата последней записи" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "Название" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "Элементы" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "Посетителей за вчера" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "Выберите тип поисковой системы" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "Плагин WP-Statistics был удален, пожалуйста отключите его и удалите." + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "WP Statistics" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "Полная статистика для вашего WordPress сайта." + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "Настройки" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "Нажмите здесь, чтобы посетить страницу плагина на WordPress.org" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "Посетите страницу WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "Нажмите здесь, чтобы оценить плагин и оставить отзыв на WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "Оценить плагин" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "WP Statistics - Переходы" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "Обзор" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "Пользователи на сайте" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "Источники переходов" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "Поисковых запросов" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "Поисковые запросы" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "Топ посетителей за сегодня" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "Оптимизация" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "Руководство" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "Сайт" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "Опции" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "Посетителей за сегодня" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "Посещений за сегодня" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "Посетителей за вчера" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "Статистика" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "Скачать ODF файл" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "Скачать HTML файл" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "Файл руководства не найден." + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "У вас недостаточно прав для доступа к этой странице." + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "WP Statistics %s установлен" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "Ошибка при загрузке базы данных GeoIP: %s - %s" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "Ошибка, не удалось открыть загруженную базу данных GeoIP: %s" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "Ошибка, не удалось записать обновленную базу данных GeoIP %s" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "База данных GeoIP успешно обновлена!" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "GeoIP обновлен" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "Ошибка загрузки базы данных browscap с: %s - %s" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "База данных browscap успешно обновлена!" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "обновление базы данных browscap не удалось! Файл кеша слишком большой, возврат к предыдущей версии browscap.ini." + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "обновление базы данных browscap не удалось! Новый файл browscap.ini имеет неверную структуру юзерагентов, возврат к предыдущей версии browscap.ini." + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "browscap уже этой версии!" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "Browscap.ini обновлен" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "Краткая статистика" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "Топ 10 браузеров" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "Топ 10 стран" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "Карта посетителей за сегодня" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "Статистика просмотров" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "Топ 10 страниц" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "Недавние посетители" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "Топ ссылающихся на вас сайтов" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "Топ поисковых систем" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "Общие данные" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "Последние поисковые фразы" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "Топ 10 посетителей за сегодня" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "Это сообщение еще не опубликовано." + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "Не удается загрузить базу данных GeoIP, убедитесь, что вы загрузили её на странице настроек." + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "Обновлено %s GeoIP записей в базе данных посетителей." + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "%s данные старше дней %s успешно очищены." + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "Не найдено записей для удаления из %s!" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "База данных уменьшена на" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "Пожалуйста, выберите значение более 30 дней." + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "Статистика браузеров" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "Нажмите для переключения" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "Браузеры" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "Браузеры по типу" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "Платформа" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "Браузеры по платформе" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "Версии %s" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "Внимание: исключения не записываются в данный момент, результаты ниже могут не соответствовать действительности!" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "Статистика исключений" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "10 дней" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "20 дней" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "30 дней" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "2 месяца" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "3 месяца" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "6 месяцев" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "9 месяцев" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "1 год" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "Диаграмма статистики исключений" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "Исключенные просмотры за последние" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "дней" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "Количество исключенных просмотров" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "Диаграммы статистики просмотров" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "Просмотры за последние" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "Количество посещений и посетителей" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "Посещение" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "Посетитель" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "Статистика последних поисковых фраз" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "#hash #" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "Карта" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "Страница" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "От" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "Все" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "Статистика недавних посетителей" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "Сейчас на сайте" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "Время на сайте" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "Тренд страница для записи с ID" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "Тренд страница" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "Статистика переходов из поисковых систем" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "Статистика переходов из поисковых систем за последние" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "Количество переходов" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "Всего" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "Топ стран" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "Позиция" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "Флаг" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "Страна" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "Количество посетителей" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "Топ страниц" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "Топ 5 Трендов страниц" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "Статистика Топ 5 Трендов страниц" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "Количество просмотров" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "Заголовок страницы не найден" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "Посещений" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "Скоро будут добавлены" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "Ссылающиеся сайты с" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "Ссылается" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "Топ 100 посетителей за сегодня" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "О WP Statistics версии %s" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "Сайт" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "Оценить и оставить отзыв" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "Подробнее" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "Используются данные GeoLite2, созданные MaxMind, доступны на %s." + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "Другие" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "Карта посетителей за сегодня" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "Адрес" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "Сейчас на сайте" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "Сегодня" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "Вчера" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "Всего за день" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "Текущее дата и время" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "(Корректировка)" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "Дата: %s" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "Время: %s" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "Просмотров" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "IP" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "User Agent" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "Версия" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "Доступ запрещен!" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "Данные агента %s успешно удалены." + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "Не найдено данных для удаления!" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "Пожалуйста, выберите требуемые элементы." + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "Данные о платформе %s успешно удалены." + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "Не найдено данных для удаления!" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "Данные таблицы %s успешно удалены." + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "Ошибка, %s не очищена!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "Установка базы данных" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "Повторно запустите установку" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "Установить сейчас!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "Если, по каким-либо причинам будут отсутствовать таблицы базы данных WP Statistics или иные важные компоненты, здесь вы можете перезапустить процесс установки." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "Индекс базы данных" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "Страны" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "Обновить сейчас!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "Прежние версии WP Statistics позволяли дублирование записей в таблице посетителей. Новые версии содержат уникальный индекс в таблице. Чтобы создать индекс в таблицах старого формата, нужно сначала удалить дублирующиеся записи. Нажмите на кнопку \"Обновить сейчас\", чтобы удалить дублирующиеся записи и добавить индекс." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "Эта операция может занять много времени на таблицах посетителей с большим количеством данных." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "Прежние версии WP Statistics позволяли дублирование записей в таблице посетителей. Новые версии содержат уникальный индекс в таблице." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "Поздравляем, ваша база данных актуальной версии, ничего не нужно предпринимать." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "Экспорт" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "Экспортировать из" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "Пожалуйста, выберите" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "Выберите исходную таблицу." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "Экспортировать в" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "Выберите тип файла." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "Добавить строку заголовка" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "Добавляет строку заголовка в первой строке экспортируемого файла." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "Начать экспорт!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "Исторические значения" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "Примечание: после очистки базы данных вы должны обновить эту страницу, чтобы числа стали правильными." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "Посетителей" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "Историческое количество посетителей сайта (текущее значение %s)." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "Историческое количество посещений сайта (текущее значение %s)." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "Обновить!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "Вы уверены?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "Данные" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "Очистить таблицу" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "Все данные в таблице будут удалены." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "Очистить!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "Удалить записи старше" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "Удалит данные старше указанного количества дней. Минимальное значение - 30 дней." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "Удалить!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "Удаление User Agent`ов" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "Удалить!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "Будут удалены все данные по посещениям с этим User Agent." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "Удалить!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "Удаление платформы" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "Будут удалены все данные по посещениям с этой платформой." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "Ресурсы" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "Использование памяти в PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "Байт" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "Лимит памяти PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "Лимит памяти, ограничивающий потребление памяти скриптами, устанавливается в php.ini" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "Количество строк в таблице %s" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "строк(и)" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "Количество строк" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "Информация о версииях" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "Версия WP Statistics" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "Версия WP Statistics на которой вы работаете." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "Версия PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "Версия PHP, на которой вы работаете." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "Безопасный режим PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "Активен ли безопасный режим в PHP. GeoIP код в безопасном режиме не поддерживается." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "Версия jQuery" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "Версия jQuery на которой вы работаете." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "Версия cURL" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "cURL не установлен" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "Версия PHP расширения cURL. cURL требуется для GeoIP, если cURL не установлен, то GeoIP будет отключен." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "Установлено" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "Не установлено" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "Информация о файлах" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "База данных GeoIP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "Файл базы данных не существует." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr ", создан " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "Размер и дата создания базы данных GeoIP." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "Файл browscap.ini" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "Файл browscap.ini не существует." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "Размер и дата создания файла browscap.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "Файл кеша browscap" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "Файл кеша browscap не существует." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "Размер и дата создания файла кеша browscap." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "Информация о клиенте" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "IP клиента" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "IP-адрес клиента." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "User Agent" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "Строка идентификации браузера (User Agent)" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "Браузер" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "Браузер клиента." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "Версия браузера клиента." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "Платформа (операционная система) клиента." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "Это заменит все IP-адреса в базе данных на хеш-значения. Операцию невозможно отменить, вы уверены?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "Опции GeoIP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "Обновляет все неизвестные данные о странах в базе данных , это может занять некоторое время." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "IP-адреса" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "Хешировать IP-адреса" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "Заменит IP-адреса в базе данных на хеш-значения, обратная операция невозможна и она может занять некоторое время." + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "IP-адреса заменяются хеш-значениями." + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "Переустановка завершена." + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "Ресурсы/Информация" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "Очистка" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "База данных" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "Обновления" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "История" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "WP Statistics V %s" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "Посетите наш сайт" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "Приходите на наш новый %s и будьте в курсе последних новостей WP Statistics." + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "сайт" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "Оценить и оставьте отзыв на WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "Спасибо за установку WP Statistics, пожалуйста" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "оцените и оставьте отзыв о плагине" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "на WordPress.org. Ваши отзывы очень важны для нас!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "Локализации" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "WP Statistics имеет поддержку множества языков и мы призываем наших пользователей расширять доступные языки. Посетите наш %s, чтобы увидеть текущее состояние перевода и %s, если вы хотите помочь." + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "сайт локализации" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "напишите нам" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "Поддержка" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "Нам очень жаль, что у вас возникли проблемы с WP Statistics и мы будем рады вам помочь. Вот несколько вещей, которые нужно сделать, прежде чем связаться с нами:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "Вы читали %s?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "Часто задаваемые вопросы" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "руководство" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "Вы искали подобную проблему на %s?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "форуме поддержки" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "Вы искали в интернете по поводу получаемых вами сообщениях об ошибках." + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "Убедитесь, что у вас есть доступ к журналам ошибок PHP." + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "И проверьте еще раз:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "Какой memory_limit установлен в php.ini?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "Вы пробовали отключить другие плагины, которые у вас установлены?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "Вы пробовали использовать стандартную тему оформления Wordpress?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "Проверили еще раз настройки плагина?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "У вас установлены все необходимые расширения PHP?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "Вы получаете пустую или неполная страница отображается в браузере? Вы можете просмотреть исходный код страницы и проверить на наличие любых критических ошибок?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "Вы проверили ваш PHP и журналы ошибок вебсервера?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "До сих пор не удалось исправить проблему?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "Тогда, пожалуйста, откройте новую тему на %s и мы ответим вам, как только это будет возможно" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "форуме поддержки WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "Также есть поддержка %s." + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "Фарси" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "Страница-приманка WP Statistics" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "Эта страница-приманка используется WP Statistics, не удаляйте её." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "Уровни доступа" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "Требуемый уровень пользователя для просмотра WP Statistics" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "Требуемый уровень пользователя для управления WP Statistics" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "Подробнее о возможных уровнях доступа: %s." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "Роли и возможностей пользователей Wordpress" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "Подсказка: manage_network = Cупер администратор сети, manage_options = Администратор, edit_others_posts = Редактор, publish_posts = Автор, edit_posts = Корректор, читать = Все остальные." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "Каждый уровень прав по умолчанию в Wordpress каскадно доступен высшим уровням. Например, publish_posts дает право Авторам, Редактора, Администраторам и Супер Администраторам." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "Если вам требуется более надежное решение, для распределения прав доступа, посмотрите в сторону %s в каталоге плагинов Wordpress." + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "Исключения" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "Записывать исключения" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "Да" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "Будет записывать записывать исключенные записи в отдельной таблице, с причиной исключения. При этом генерируется много данных, но если вам нужно общее количество просмотров сайта, а не актуальное значение, тогда используйте эту опцию." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "Исключение ролей пользоваетелей" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "Исключить" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "Исключить роль %s из статистики." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "Исключение IP/Роботов" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "Список роботов" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "Список слов (одно на строку), позволяющих идентифицировать роботов. Записи должны быть длиной минимум 4 символа, иначе они будут проигнорированы." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "Сбросить изменения" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "Обновление списка роботов после обновления плагина" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "Список роботов будет сброшен до стандартного после обновления WP Statistics. Если данная опция включена, все добавленные вручную записи будут утеряны после обновления." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "Количество визитов для робота" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "Расценивать посетителей с числом посещений больше указанного количества в день, как роботов. 0 отключит эту функцию." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "Список исключенных IP-адресов" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "Добавить 10.0.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "Добавить 172.16.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "Добавить 192.168.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "Использовать приманку" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "Использовать страницу-приманку, для определения роботов." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "ID страницы-приманки" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "ID сообщения (записи), используемого в качестве приманки." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "Создать новую страницу-приманку" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "Исключения GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "Список исключенных стран" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "Список кодов стран (по одному в каждой строке, по два символа каждый), которые требуется исключить из статистики. Используйте "000" (три нуля), чтобы исключить неизвестные страны." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "Список включенных стран" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "Список кодов стран (по одному в каждой строке, по два символа каждый), которые требуется включить в статистику, если этот список не пуст, то только посетители из этих стран будут добавлены в статистику. Используйте "000" (три нуля), чтобы исключить неизвестные страны." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "DNS исключения" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "Список DNS-имен" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "Список полных DNS-имен серверов (например server.example.com, по одному в строке), которые требуется исключить из статистики." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "Примечание: эта опция не выполняет поиск обратного DNS-имя при каждой загрузке страницы, вместо этого она кеширует DNS-имя соответствующее IP-адресу на час. Если вы исключили динамически назначаемые DNS-имена, могут случиться наложения, связанные с одинаковыми данными в кеше и измененным IP-адресе." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "Исключение адресов сайтов" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "Исключить страницу авторизации" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "Не учитывать просмотры страницы авторизации." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "Исключить страницы админпанели" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "Не учитывать просмотры страниц админпанели." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "Исключить RSS ленты" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "Не учитывать просмотры RSS ленты." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "Настройки browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "Использовать browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "Активно" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "Будет загружена и использована база данных browscap для детектирования роботов." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "Обновить данные browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "Скачать базу данных browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "Сохраните изменения на этой странице для загрузки обновления." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "Еженедельно обновлять базу данных browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "Следующее обновление будет" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "Автоматически обновлять базу данных browscap каждую неделю." + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "Это приведет к удалению руководства при сохранении настроек, вы уверены?" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "Данная функция будет сохранять в базе данных уникальный хэш вместо IP-адреса. Функция \"Сохранять user-агенты\" будет отключена. Так же вы не сможете использовать IP-адреса для определения информации о местоположении." + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "Пользователи онлайн" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "Показ пользователей онлайн" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-ru_UA.mo b/plugins/wp-statistics/languages/wp_statistics-ru_UA.mo new file mode 100644 index 0000000..923fbab Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-ru_UA.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-ru_UA.po b/plugins/wp-statistics/languages/wp_statistics-ru_UA.po new file mode 100644 index 0000000..ebbf308 --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-ru_UA.po @@ -0,0 +1,2729 @@ +# Translation of WP Statistics in Russian (Ukraine) +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2015-05-13 12:06:12+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: GlotPress/1.0.2\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/ajax.php:220 +msgid "No matching widget found!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "Zlib gzopen()" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "" + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:95 +msgid "— You are running an unsupported version of PHP." +msgstr "" + +#: wp-statistics/wp-statistics.php:95 +msgid "WP Statistics Disabled" +msgstr "" + +#: wp-statistics/wp-statistics.php:99 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "" + +#: wp-statistics/wp-statistics.php:101 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "" + +#: wp-statistics/ajax.php:299 +msgid "ERROR: Widget not found!" +msgstr "" + +#: wp-statistics/dashboard.php:111 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "" + +#: wp-statistics/dashboard.php:129 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:447 +msgid "Top Visitors" +msgstr "" + +#: wp-statistics/wp-statistics.php:206 +msgid "optimization page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "" + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "" + +#: wp-statistics/wp-statistics.php:180 +msgid "visitor tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:181 +msgid "geoip collection" +msgstr "" + +#: wp-statistics/wp-statistics.php:197 +msgid "visit database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:206 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:197 +msgid "countries database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:190 +msgid "search table" +msgstr "" + +#: wp-statistics/wp-statistics.php:184 +msgid "settings page" +msgstr "" + +#: wp-statistics/wp-statistics.php:184 wp-statistics/wp-statistics.php:206 +msgid "," +msgstr "" + +#: wp-statistics/wp-statistics.php:184 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:179 +msgid "hit tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:178 +msgid "online user tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:775 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:148 +msgid "Treat corrupt browser info as a bot" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:215 +msgid "Excluded 404 pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "" + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "Добавить заголовок страницы пустые слова для поиска" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "" + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "" + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:429 +msgid "Donate" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "" + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:1032 +msgid "to" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:1032 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "Ранг #1" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "Ранг # 2" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:1026 +#: wp-statistics/includes/functions/functions.php:1029 +msgid "Range" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:1032 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:227 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:222 +msgid "Excluded URLs list" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days (Year)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days (Month)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days (Week)" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:418 wp-statistics/wp-statistics.php:516 +msgid "Pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/widget.php:38 wp-statistics/widget.php:247 +#: wp-statistics/wp-statistics.php:621 +msgid "User Online" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +#: wp-statistics/widget.php:52 wp-statistics/widget.php:253 +msgid "Today Visitor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +#: wp-statistics/widget.php:45 wp-statistics/widget.php:250 +msgid "Today Visit" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +#: wp-statistics/widget.php:66 wp-statistics/widget.php:259 +msgid "Yesterday Visitor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +#: wp-statistics/widget.php:59 +msgid "Yesterday Visit" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +#: wp-statistics/widget.php:101 wp-statistics/widget.php:274 +msgid "Total Visitor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +#: wp-statistics/widget.php:94 wp-statistics/widget.php:271 +msgid "Total Visit" +msgstr "" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Map type" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:440 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Google" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "JQVMap" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:82 +msgid "The \"Google\" option will use Google's mapping service to plot the recent visitors (requires access to Google)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:83 +msgid "The \"JQVMap\" option will use JQVMap javascript mapping library to plot the recent visitors (requires no extenral services)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:89 +msgid "Disable map" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:95 +msgid "Disable the map display" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:101 +msgid "Get country location from Google" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:107 +msgid "This feature may cause a performance degradation when viewing statistics and is only valid if the map type is set to \"Google\"." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:234 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:116 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:408 +#: wp-statistics/wp-statistics.php:469 +msgid "Statistics" +msgstr "" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "" + +#: wp-statistics/widget.php:73 wp-statistics/widget.php:262 +msgid "Week Visit" +msgstr "" + +#: wp-statistics/widget.php:80 wp-statistics/widget.php:265 +msgid "Month Visit" +msgstr "" + +#: wp-statistics/widget.php:87 wp-statistics/widget.php:268 +msgid "Years Visit" +msgstr "" + +#: wp-statistics/widget.php:108 wp-statistics/widget.php:277 +msgid "Total Page Views" +msgstr "" + +#: wp-statistics/widget.php:116 +msgid "Search Engine referred" +msgstr "" + +#: wp-statistics/widget.php:123 wp-statistics/widget.php:300 +msgid "Total Posts" +msgstr "" + +#: wp-statistics/widget.php:130 wp-statistics/widget.php:303 +msgid "Total Pages" +msgstr "" + +#: wp-statistics/widget.php:137 wp-statistics/widget.php:306 +msgid "Total Comments" +msgstr "" + +#: wp-statistics/widget.php:144 wp-statistics/widget.php:309 +msgid "Total Spams" +msgstr "" + +#: wp-statistics/widget.php:151 wp-statistics/widget.php:312 +msgid "Total Users" +msgstr "" + +#: wp-statistics/widget.php:158 wp-statistics/widget.php:315 +msgid "Average Posts" +msgstr "" + +#: wp-statistics/widget.php:165 wp-statistics/widget.php:318 +msgid "Average Comments" +msgstr "" + +#: wp-statistics/widget.php:172 wp-statistics/widget.php:321 +msgid "Average Users" +msgstr "" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:179 +#: wp-statistics/widget.php:324 +msgid "Last Post Date" +msgstr "" + +#: wp-statistics/widget.php:240 +msgid "Name" +msgstr "" + +#: wp-statistics/widget.php:244 +msgid "Items" +msgstr "" + +#: wp-statistics/widget.php:256 wp-statistics/wp-statistics.php:646 +msgid "Yesterday visit" +msgstr "" + +#: wp-statistics/widget.php:280 +msgid "Search Engine Referred" +msgstr "" + +#: wp-statistics/widget.php:283 +msgid "Select type of search engine" +msgstr "" + +#: wp-statistics/wp-statistics.php:122 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "" + +#: wp-statistics/wp-statistics.php:54 +msgid "WP Statistics" +msgstr "" + +#: wp-statistics/wp-statistics.php:55 +msgid "Complete statistics for your WordPress site." +msgstr "" + +#: wp-statistics/wp-statistics.php:313 wp-statistics/wp-statistics.php:428 +#: wp-statistics/wp-statistics.php:523 +msgid "Settings" +msgstr "" + +#: wp-statistics/wp-statistics.php:325 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "" + +#: wp-statistics/wp-statistics.php:325 +msgid "Visit WordPress.org page" +msgstr "" + +#: wp-statistics/wp-statistics.php:328 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "" + +#: wp-statistics/wp-statistics.php:328 +msgid "Rate this plugin" +msgstr "" + +#: wp-statistics/wp-statistics.php:372 +msgid "WP Statistics - Hits" +msgstr "" + +#: wp-statistics/wp-statistics.php:411 wp-statistics/wp-statistics.php:472 +#: wp-statistics/wp-statistics.php:510 +msgid "Overview" +msgstr "" + +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:515 +msgid "Online" +msgstr "" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:517 +msgid "Referrers" +msgstr "" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:420 +#: wp-statistics/wp-statistics.php:518 +msgid "Searches" +msgstr "" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:519 +msgid "Search Words" +msgstr "" + +#: wp-statistics/wp-statistics.php:422 wp-statistics/wp-statistics.php:520 +msgid "Top Visitors Today" +msgstr "" + +#: wp-statistics/wp-statistics.php:427 wp-statistics/wp-statistics.php:522 +msgid "Optimization" +msgstr "" + +#: wp-statistics/wp-statistics.php:433 wp-statistics/wp-statistics.php:486 +msgid "Manual" +msgstr "" + +#: wp-statistics/wp-statistics.php:501 +msgid "Site" +msgstr "" + +#: wp-statistics/wp-statistics.php:502 +msgid "Options" +msgstr "" + +#: wp-statistics/wp-statistics.php:628 +msgid "Today visitor" +msgstr "" + +#: wp-statistics/wp-statistics.php:634 +msgid "Today visit" +msgstr "" + +#: wp-statistics/wp-statistics.php:640 +msgid "Yesterday visitor" +msgstr "" + +#: wp-statistics/wp-statistics.php:652 +msgid "View Stats" +msgstr "" + +#: wp-statistics/wp-statistics.php:676 +msgid "Download ODF file" +msgstr "" + +#: wp-statistics/wp-statistics.php:677 +msgid "Download HTML file" +msgstr "" + +#: wp-statistics/wp-statistics.php:681 +msgid "Manual file not found." +msgstr "" + +#: wp-statistics/wp-statistics.php:748 wp-statistics/wp-statistics.php:880 +#: wp-statistics/wp-statistics.php:915 +msgid "You do not have sufficient permissions to access this page." +msgstr "" + +#: wp-statistics/wp-statistics.php:301 +msgid "WP Statistics %s installed on" +msgstr "" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:457 +msgid "Top 10 Countries" +msgstr "" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:446 +msgid "Hit Statistics" +msgstr "" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:450 +msgid "Top 10 Pages" +msgstr "" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:451 +msgid "Recent Visitors" +msgstr "" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:456 +msgid "Top Referring Sites" +msgstr "" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/wp-statistics.php:448 +msgid "Search Engine Referrals" +msgstr "" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:454 +msgid "Summary" +msgstr "" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:449 +msgid "Latest Search Words" +msgstr "" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "" + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "" + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "" + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "" + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:455 +#: wp-statistics/wp-statistics.php:511 +msgid "Browsers" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Platform" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:970 +msgid "10 Days" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:970 +msgid "20 Days" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:970 +msgid "30 Days" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:970 +msgid "2 Months" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:970 +msgid "3 Months" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:970 +msgid "6 Months" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:970 +msgid "9 Months" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:970 +msgid "1 Year" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:42 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:42 +msgid "Hits in the last" +msgstr "" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:63 +msgid "Number of visits and visitors" +msgstr "" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:77 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:77 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/google.map.php:60 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:296 +msgid "All" +msgstr "" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "" + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "" + +#: wp-statistics/wp-statistics.php:445 +msgid "Today Visitors Map" +msgstr "" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +#: wp-statistics/includes/log/widgets/summary.php:12 +msgid "User(s) Online" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:337 wp-statistics/wp-statistics.php:416 +#: wp-statistics/wp-statistics.php:514 +msgid "Hits" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:291 +msgid "Version" +msgstr "" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:302 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "" + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "" + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "" + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:1074 +msgid "%s table data deleted successfully." +msgstr "" + +#: wp-statistics/includes/functions/functions.php:1078 +msgid "Error, %s not emptied!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:414 wp-statistics/wp-statistics.php:512 +msgid "Countries" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:423 +#: wp-statistics/wp-statistics.php:521 +msgid "Visitors" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "jQuery Version" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "The jQuery version you are running." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "cURL Version" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:173 +msgid "cURL not installed" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "Installed" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "Not installed" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:190 +msgid "File Info" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "GeoIP Database" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:204 +msgid "Database file does not exist." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid ", created on " +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:208 +msgid "The file size and date of the GeoIP database." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:214 +msgid "browscap.ini File" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:223 +msgid "browscap.ini file does not exist." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:227 +msgid "The file size and date of the browscap.ini file." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:233 +msgid "browscap Cache File" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:242 +msgid "browscap cache file does not exist." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:246 +msgid "The file size and date of the browscap cache file." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:251 +msgid "Client Info" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:256 +msgid "Client IP" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:261 +msgid "The client IP address." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "User Agent" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client user agent string." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "Browser" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:285 +msgid "The detected client browser." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser version." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client platform." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:513 +msgid "Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:133 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:150 +msgid "Enable" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:196 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:203 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:210 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:217 +msgid "Exclude" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection (both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted). To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "Add 10.0.0.0" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "Add 172.16.0.0" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 192.168.0.0" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:131 +msgid "Use honey pot" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use a honey pot page to identify robots." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:139 +msgid "Honey pot post id" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "The post id to use for the honeypot page." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:143 +msgid "Create a new honey pot page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:156 +msgid "GeoIP Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:160 +msgid "Excluded countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:168 +msgid "Included countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:176 +msgid "Host Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:180 +msgid "Excluded hosts list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:185 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:190 +msgid "Site URL Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:194 +msgid "Excluded login page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Exclude the login page for registering as a hit." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:201 +msgid "Excluded admin pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Exclude the admin pages for registering as a hit." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:208 +msgid "Excluded RSS feeds" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:94 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:106 +msgid "Active" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 +msgid "Users Online" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-sk_SK.mo b/plugins/wp-statistics/languages/wp_statistics-sk_SK.mo new file mode 100644 index 0000000..39d34f6 Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-sk_SK.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-sk_SK.po b/plugins/wp-statistics/languages/wp_statistics-sk_SK.po new file mode 100644 index 0000000..55315fd --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-sk_SK.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in Slovak +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2015-08-31 09:48:39+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: sk\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "" + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "" + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "" + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "" + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "ID príspevku / stránky" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "Ask.com" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "Na výpočet štatistiky bude použitý časový rámec strtotime() (http://php.net/manual/en/datetime.formats.php). Použite "celkom", pre získanie všetkých zaznamenaných dát." + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "kolekcia GeoIP" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "databázový index návštev" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "Je potrebná aktualizácia databázy, prejdite do%s a aktualizujte nasledovné:%s" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "databázový index krajín" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "," + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "Nasledujúce funkcie sú vypnuté, prejdite do %s, a aktivujte ich: %s" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "sledovanie zobrazení" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "on-line sledovanie používateľov" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "Nasledujúca tabuľka(ky) zásuvného modulu neexistuje v databáze, prosím, znova spustite inštaláčnú %s rutinu %s:" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "Konverzia vyhľadavacej tabuľky dokončená, pridaných %d riadkov." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "Staršie inštalácie WP Štatistiky ukladajú detaily z vyhľadávania v tabuľke návštevníkov, čo môže spôsobovať výkonostné problémy pri veľkých objemoch dát. Bola preto vytvorená nová tabuľka pre uchovanie týchto informácií lepšie škálovateľným spôsobom." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "Vyhľadávacia Tabuľka" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "Konvertovať" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "Konvertovať teraz!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "Staršie inštalácie WP Štatistiky ukladajú detaily z vyhľadávania v tabuľke návštevníkov, čo môže spôsobovať výkonostné problémy pri veľkých objemoch dát. Bola preto vytvorená nová tabuľka pre uchovanie týchto informácií lepšie škálovateľným spôsobom. Predtým ako staré dáta bude môžné použiť, musia byť najskôr konvertované na nový formát." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "Referrer Spam" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "Sťahovanie databázy Piwik Referrer Spam Blacklist bude naplánovaná raz týždenne." + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "Externé špecifikácie" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "Nastavenia Piwik Referrer Spam Blacklist" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "Naplánovať týždennú aktualizáciu Piwik Referrer Spam Blacklist DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "Stiahnite si Piwik Referrer Spam Blacklist databázu" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "Aktualizácia Piwik Referrer Spam Blacklist informácií" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "Bude stiahnutá Piwik Referrer Spam Blacklist databáza, ktorá sa používa na určenie spamu odkazovača." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "Referrer spam blacklist poskytuje Piwik, dostupný z %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "Využitie Piwik Referrer Spam Blacklist " + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "Zaobchádzať s narušenými informáciami prehliadača ako s robotom" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "Stránky 404" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "Dátum" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "Považovať každého návštevníka s nekompletnými informáciami prehliadača (chýbajúce IP adresy alebo prázdny reťazca agenta) za robota." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "Vylúčené stránky 404" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "Vylúčiť ľubovoľnú URL, ktorá vracia - správa \"404 - Not Found\"." + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "Chyba pri vytváraní adresára GeoIP databázy, uistite sa, že váš webový server má oprávnenie na vytvorenie adresárov v : %s" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "Zadajte názov stránky do prázdnych vyhľadávacích slóv" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "Ak je vyhľadávač identifikovaný ako refferer (označenie pre URI, z kterého bola webová stránka navštívená), ale nezahŕňa vyhľadávací dotaz, táto voľba nahradí názov stránky v úvodzovkách, ktorému predchádza \"~:\", ako vyhľadávací dotaz a tak pomôže určiť čo používateľ hľadal." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "Odstrániť návštevníkov s viac ako" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "zobrazenia" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "Zmazané používateľské štatistiky, kde má používateľ viac zobrazení za deň ako definovaný počet. Môže byť užitočné vymazať staré dáta, keď boli vaše stránky zobrazované robotom. Tým sa odstráni návštevník a jeho zobrazenia stránok, ale neodstráni to jednotlivé zobrazenia stránok, kedže dáta nie sú zaznamenavané podľa použitia. Minimálna hodnota je 10 zobrazení." + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "Neboli nájdení žiadni návštevníci na odstránenie." + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "%s záznamov úspešne uvoľnených." + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "Počet zobrazení musí byť väčší alebo rovný 10!" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "Návštev stránok" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "Počet stránok" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "Počet komentárov" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "Počet spamu" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "Počet používateľov" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "Priemerne príspevkov" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "Komentárov priemerne" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "Poskytovateľ vyhľadávania" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "Poskytovateľ vyhľadávania pre získanie štatistických údajov." + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "Číselný formát" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "Formát zobrazenia čísla v: i18n, angličtina, nič." + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "Angličtina" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "Medzinárodný" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "Súhrn štatistík zobrazení" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "Sumárny graf" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "Celkovo" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "Už ste premýšľali o podpore pre WP Statistics?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "Prispejte" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "Chcete sa s námi podeliť o to ako sa vám páči WP Statistics? Prejdite na našu stránku %s a ukážte nám trochu lásky!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "dar" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "Prispejte práve teraz!" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "Zavrieť" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "Vyberte štatistiku, ktorú chcete zobraziť." + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "Štatistický" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "Počet príspevkov" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "Časový rámec" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "do" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "Prejsť" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "Rank #5" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "Rank #4" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "Rank #3" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "Rank #1" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "Rank #2" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "Tabuľka návštev" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "Staršie inštalácie WP Statistics umožňujú v hraničnom prípade duplicitné záznamy v tabuľke návštev. Novšie inštalácie zabraňujú tomu použitím jedinečného indexu v tabuľke. Ak chcete vytvoriť index na staršie inštalácie, musíte najkôr duplicitné položky odstrániť. Kliknutím \"Aktualizovať teraz\" sa vykoná kontrola tabuľky návštev, odstránia sa duplicitné záznamy a pridá sa index." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "Ak je veľa riadkov v tabuľke návštev, táto operácia môže trvať počas inštalácie dlhú dobu." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "Staršie inštalácie WP Statistics umožňujú v hraničnom prípade duplicitné záznamy v tabuľke návštev. Novšie inštalácie zabraňujú tomu použitím jedinečného indexu v tabuľke. " + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "Filtrované podľa" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "Rozsah" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "MM/DD/RRRR" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "Nepoužívajte preklady a namiesto toho použite predvolenú Angličtinu pre WP Statistics (vyžaduje dve načítania stránky)" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "Vynútiť Angličtinu" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "Jazyky" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "Poznámka: Táto voľba nebude spracovávať parametre URL (hocičo za ?), len po meno skriptu. Položky s menej ako dvoma znakmi budú ignorované." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "Zoznam lokálnych adries URL (napr. /wordpress /about, jedna na riadok), vylúčených zo zberu štatistických údajov." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "Zoznam vylúčených URL-adries" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "Vylúčené URL" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "Posledných 365 dní (Rok)" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "Posledných 30 dní (Mesiac)" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "Posledných 7 dní (Týždeň)" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "Yahoo!" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "Yandex" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "clearch.org" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "DuckDuckGo" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "Bing" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "Baidu" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "Prísuny (Feeds)" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "Rola používateľa" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "Prihlasovacia stránka" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "Administrátorska stránka" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "Seba odkazujúci" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "IP zhoda" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "Robot" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "Aktuálne nie sú na webe žiadni aktívni používatelia." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "Prah pre roboty" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "Honey Pot" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "Štatistika trendov stránky" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "Meno hostiteľa" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "Zapnúť alebo vypnúť túto funkciu" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "Kontrolovať aktívnych používateľov každých" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "Sekúnd" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "Čas pre presnú kontrolu on-line pužívateľov na stránke. Teraz: %s sekúnd" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "Zaznamenať všetkých používateľov" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "Ignoruje nastavenia pre vylúčenie a zaznamenáva všetkých aktívnych používateľov (vrátane svojich reffererov a robotov). Malo by byť použité iba pri riešení problémov." + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "Uložiť celý reťazec agenta používateľa" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "Aktivované len pre ladenie" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "Koeficient na návštevníka" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "Za každú návštevu započítať niekoľko zobrazení. Momentálne %s." + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "Stránky" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "Sledovať všetky stránky" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "Získať parametre z URI" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "Týmto sa odstráni v URL všetko nasledujúce po?." + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "Zakázať stĺpec zobrazení vo výpise príspevkov/stránok" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "Rôzne" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "Zobraziť štatistiky v menu" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "Nie" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "Áno" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "Zobraziť štatistiky v administrátorskom menu" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "Skryť administrátorské oznámenia o neaktívnych funkciách" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "Ak sú základné funkcie deaktivované, v predvolenom nastavení WP Statistics zobrazuje výstrahu na každej admin stránke, táto voľba vypne zobrazovanie týchto výstrah." + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "Odstrániť manuál" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "V predvolenom nastavení WP Statistics ukladá administrátorsky manuál v plugin adresári (~ 5 meg), ak je táto možnosť povolená, bude teraz manuál zmazaný a aj počas aktualizácii v budúcnosti." + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "Vyhľadávače" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "Vypnutie všetkých vyhľadávačov nie je povolené, vykonanie tohto spôsobí zmenu vo všetkých aktívnych vyhľadávačoch." + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "vypnúť" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "Vypnúť %s zo zberu údajov a hlásení." + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "Grafy" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "Zahrnúť súčty" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "Pridanie sumárneho riadku na grafy s viacerými hodnotami, ako referencie vyhľadávača" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "GeoIP nastavenia" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "IP služby polohy poskytované GeoLite2 Data, vytvoril MaxMind, dostupné z %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "Zber údajov GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "Pre získanie ďalších informácií a lokácie (krajiny) návštevníka, aktivujte túto funkciu." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "Aktualizácia GeoIP Info" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "Stiahnuť GeoIP databázu" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "Naplánovať mesačnú aktualizáciu GeoIP DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "Sťahovanie GeoIP databázy bude naplánované 2 dni po prvom utorku v mesiaci." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "Ak veľkosť lokálneho súboru je menej ako 1k, táto voľba tiež stiahne databázu (čo zvyčajne znamená že pozostatok, pochádzajúci zo zásuvného modulu zostávna na svojom mieste)." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "Vyplňte chýbajúce GeoIP po aktualizácii GeoIP DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "Aktualizovať chýbajúce GeoIP údaje po stiahnutí novej databázy." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "Kód krajiny pre súkromné ​​IP adresy" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "Štandardný medzinárodný kód krajiny zložený z dvoch písmen (napr. US = Spojené štáty, CA = Kanada, atď.) pre súkromné ​​(nepoužité na smerovanie) IP adresy (napr. 10.0.0.1, 192.158.1.1, 127.0.0.1, atď.). Zadajte \"000\" (tri nuly) na použitie \"Unknown\" (Neznáma) ako kód krajiny." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "Zber údajov GeoIP je zakázaný z nasledujúcich príčin:" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "Zber údajov GeoIP vyžaduje PHP %s alebo vyššie, je preto zakázaný kvôli aktuálne nainštalovanej PHP verzii " + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "Zber údajov GeoIP vyžaduje rozšírenie PHP cURL a to nie je zavedené vo vašej verzii PHP!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "Zber údajov GeoIP vyžaduje BC Math PHP rozšírenie a to nie je zavedené vo vašej verzii PHP!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "Zistený PHP núdzový režim! Zber GeoIP údajov nie je podporovaný s PHP v núdzovom režime!" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "To bude natrvalo odstrániť dáta z databázy každý deň, ste si istí, že chcete povoliť túto možnosť?" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "Dní" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "Počet dní pre uchovanie štatistík. Minimálna hodnota je 30 dní. Neplatné hodnoty znemožnia dennú údržbu." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "Všeobecné nastavenia záznamov" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "E-mailové adresy" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "Čiarkou oddelený zoznam e-mailových adries pre odoslanie hlásení." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "Správy o aktualizácii" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "Browscap" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "Poslať správu, kedykoľvek je browscap.ini aktualizovaný." + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "Poslať správu, kedykoľvek je databáza GeoIP aktualizovaná." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "Odstránenie" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "Poslať správu, kedykoľvek sa spustí čistenie databázy." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "Aktualizácia" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "Poslať správu, kedykoľvek je zásuvný modul aktualizovaný." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "Štatistické vykazovanie" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "Plánovanie" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "Vyberte, ako často chcete dostávať štatistický záznam." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "Odoslať správy prostredníctvom" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "E-mail" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "Zvoliť spôsob doručenia pre štatistický záznam." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "Poznámka: Pre odosielanie SMS textových správ nainštalujte %s zásuvný modul." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "WordPress SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "Telo správy" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "Zadajte obsah správy." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "Akýkoľvek skrátený kód (shortcode) podporovaný inštaláciou WordPress, zahŕňa všetky skrátené kódy pre WP Statistics (viď. administrátorsky návod pre zoznam dostupných kódov), sú podporované v tele správy. Tu je niekoľko príkladov:" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "Používateľ online" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "Dnes návštevníkov" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "Dnes návštev" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "Včera Návštevníkov" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "Včera Návštev" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "Celkom návštevníkov" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "Návštev celkom" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "Žiadna" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "O aplikácii" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "Prehľadový panel" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "Nasledujúce položky sú globálne pre všetkých používateľov." + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "Zakázať Widgety prehľadového panelu" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "Zakázať widgety prehľadového panelu." + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "Editor Stránky/Príspevku" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "Zakázať Widget editora príspevku/stránky" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "Zakázať widget editora stránky/príspevku." + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "Google" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "Zakázať mapu" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "Vypnúť zobrazovanie máp" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "Odstránenie WP Statisitcs" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "Odinštalovanie WP Statistics neodstráni dáta a nastavenia, môžete použiť túto možnosť na odstránenie dát WP Statistics z vášej inštalácie pred odinštalovaním zásuvného modulu." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "Po odoslaní tohto formulára budú počas načítavania stránky zmazané nastavenia, avšak WP Statistics ich bude aj naďalej zobrazovať v ponuke pre správu, až pokiaľ sa neudeje načítanie ďalšej stránky." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "Odstrániť dáta a nastavenia" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "Odstrániť" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "Odstrániť dáta a nastavenia, túto operáciu nie je možno vratiť späť." + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "Všeobecne" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "Notifikácie" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "Prehľadový panel/Prehľad" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "Údržba" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "Odstránenie" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "Aktualizácia" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "Raz týždenne" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "Raz za 2 týždne" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "Raz za 4 týždne" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "Štatistiky" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "Zobraziť štatistiky stránok v bočnom paneli." + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "Celkový počet zobrazení stránky" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "Celkom prispevkov" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "Celkom stránok" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "Komentárov celkovo" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "Celkom spamy" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "Celkom používateľov" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "Priemer príspevkov" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "Priemer komentárov" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "Priemerny Uzivatelske" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "Dátum posledného príspevku" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "Meno" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "Položky" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "Včera návštev" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "Vyberte typ vyhladávača" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "Aplikácia WP Statistics bola odstránená, prosím, vypnite a zmažte ju." + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "WP Statistics" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "Kompletné štatistiky pre vaše WordPress stránky." + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "Nastavenia" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "Kliknite tu pre návštevu pluginu na WordPress.org" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "Navštívte stránku WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "Kliknite tu pre ohodnotenie a posúdenie tohto pluginu na WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "Hodnotiť tento zásuvný modul (plugin)" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "WP Statistics - hity" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "Prehľad" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "Online" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "Odkazovače" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "Vyhľadávanie" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "Hľadané slová" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "Top návštevníci dnes" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "Optimalizácia" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "Manuál" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "Stránka" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "Možnosti" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "Dnes návštevníkov" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "Dnes navštíviť" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "Včera návštevníkov" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "Zobrazenie štatistiky" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "Stiahnuť ODF súbor" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "Stiahnuť súbor vo formáte HTML" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "Súbor manuálu nebol nájdený." + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "Nemáte dostatočné oprávnenia pre prístup k tejto stránke." + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "WP Statistics %s inštalovaný na" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "Chyba pri sťahovaní GeoIP databázy z: %s - %s" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "Nepodarilo sa otvoriť stiahnutú GeoIP databázu pre čítanie: %s" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "Nemožno otvoriť cieľovú GeoIP databázu pre zápis %s" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "GeoIP databáza aktualizovaná úspešne!" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "GeoIP aktualizované na" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "Chyba pri sťahovaní browscap databázy z: %s - %s" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "browscap databáza je aktualizovaná úspešne!" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "browscap aktualizácia databázy zlyhala! Súbor vyrovnávacej pamäte (Cache) je príliš veľký, návrat k predchádzajúcemu browscap.ini." + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "browscap aktualizácia databázy zlyhala! Nový browscap.ini chybne identifikuje pužívateľských agentov ako skenery, návrat k predchádzajúcemu browscap.ini." + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "browscap už v aktuálnej verzii!" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "Browscap.ini aktualizovaný na" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "Rýchle štatistiky" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "Top 10 prehliadačov" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "Top 10 krajín" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "Dnešná mapa návštevníkov" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "Štatistiky zobrazenia" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "Top 10 stránok" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "Nedávni návštevníci" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "Top odkazujúce stránky" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "Odkazovače vyhľadávača" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "Zhrnutie" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "Naposledy hľadané slová" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "Top 10 Návštevníkov dnes" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "Tento príspevok ešte nie je uverejnený." + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "Nepodarilo sa načítať GeoIP databázy, uistite sa, že ste si stiahli na stránke nastavení." + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "Aktualizovať %s GeoIP záznamov v databáze návštevníkov." + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "%s údaje staršie ako %s dní úspešne vymazané." + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "Žiadne záznamy nenájdené na odstránenie z %s!" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "Databáza vyčistená" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "Vyberte hodnotu viac ako 30 dní." + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "Štatistiky prehliadačov" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "Kliknutím prepnúť" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "Prehliadače" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "Prehliadače podľa typu" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "Platforma" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "Prehliadače podľa platformy" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "Verzia %s" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "Pozor: Vylúčenia nie sú aktuálne nastavené na zaznamenávanie, výsledky nižšie nemusia odrážať aktuálne štatistiky!" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "Štatistiky vylúčení" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "10 dní" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "20 dní" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "30 dní" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "2 mesiace" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "3 mesiace" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "6 mesiacov" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "9 mesiacov" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "1 rok" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "Štatistický graf vylúčení" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "Vylúčené zobrazenia naposledy" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "dní" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "Počet vylúčených zobrazení" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "Graf štatistík zobrazení" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "Zobrazenia posledých" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "Návštevy a návštevníci" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "Návštev" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "Návštevníkov" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "Najnovšie štatistiky vyhľadávania slóv" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "#hash#" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "Mapa" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "Strana" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "z" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "Všetko" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "Nedávne štatistiky návštevnosti" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "Online používatelia" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "Online už" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "Trend stránok pre ID príspevku" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "Trend stránok" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "Štatistiky odkazovačov vyhľadávača" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "Odkazovače vyhľadávača posledných" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "Počet odkazovačov " + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "Celkom" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "Top krajiny" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "Hodnotenie" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "Vlajka" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "Krajina" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "Počet návštev" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "Top stránky" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "Top 5 stránok trendy" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "Top 5 štatistiky stránka trendy" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "Počet zobrazení" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "Nenašiel sa názov stránky" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "Návštevy" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "Bude pridané čoskoro" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "Odkazujúce stránky z" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "Referencie" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "Top 100 Návštevníkov dnes" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "O WP Statistics Verzia %s" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "Webové stránky" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "Hodnotiť a recenzovať" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "Ďalšie informácie" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "Tento produkt obsahuje GeoLite2 údaje vytvorené MaxMind, dostupné z %s." + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "Ostatné" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "Dnešná mapa návštevníkov" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "Adresa" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "Používatelia online" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "Dnes" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "Včera" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "Denne spolu" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "Aktuálny čas a dátum" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "(Prispôsobiť)" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "Dátum: %s" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "Čas: %s" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "Zobrazenia" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "IP" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "Agent" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "Verzia" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "Prístup zamietnutý!" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "údaje agenta %s úspešne vymazaná." + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "Neboli nájdené žiadne údaje agentov na odstránenie!" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "Vyberte požadované položky." + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "údaje platformy %s úspešne vymazané." + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "Neboli nájdené žiadne údaje platformy na odstránenie!" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "%s údaje tabuľky úspešne vymazané." + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "Chyba, %s nie je vyprázdnený!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "Nastavenie databázy" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "Spustiť znovu inštaláciu" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "Inštalovať teraz!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "Ak z nejakého dôvodu vašej inštalácii WP Statistics chýbajú databázové tabuľky alebo iné kľúčové časti, toto spustí opätovne inštalačný proces." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "Index databázy" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "Krajiny" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "Aktualizovať teraz!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "Staršie inštalácie WP Statistics umožňujú v hraničnom prípade duplicitné záznamy v tabuľke návštevníkov. Novšie inštalácie zabraňujú tomu použitím jedinečného indexu v tabuľke. Ak chcete vytvoriť index na staršie inštalácie, musíte najkôr duplicitné položky odstrániť. Kliknutím \"Aktualizovať teraz\" sa vykoná kontrola tabuľky návštevníkov, odstránia sa duplicitné záznamy a pridá sa index." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "Ak je veľa riadkov v tabuľke návštevníkov, táto operácia môže trvať počas inštalácie dlhú dobu." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "Staršie inštalácie WP Statistics umožňujú v hraničnom prípade duplicitné záznamy v tabuľke návštevníkov. Novšie inštalácie zabraňujú tomu použitím jedinečného indexu v tabuľke." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "Gratulujeme, vaša inštalácia je už aktuálna, nič nebude vykonané." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "Export" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "Export z" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "Prosím, vyberte" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "Vyberte tabuľku pre výstupný súbor." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "Export do" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "Vyberte typ výstupného súboru." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "Zahrnúť riadok hlavičky" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "Zahrnúť hlavičku ako prvý riadok exportovaného súboru." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "Začnite teraz!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "Historické hodnoty" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "Poznámka: Ako ste práve vyčistili databázu, musíte znova načítať túto stránku aby boli tieto čísla správne." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "Návštevníci" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "Historický počet návštevníkov stránok (aktuálna hodnota je %s)." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "Historický počet návštev stránok (aktuálna hodnota je %s)." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "Aktualizovať teraz!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "Ste si istý?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "Údaje" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "Prázdna tabuľka" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "Celá tabuľka údajov bude stratená." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "Vyčistiť teraz!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "Odstrániť záznamy staršie ako" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "Odstránené používateľské štatistiky staršie ako je vybraný počet dní. Minimálna hodnota je 30 dní." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "Odstrániť teraz!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "Odstrániť typy používateľských agentov" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "Odstráňte agentov" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "Všetky údaje návštevníka budú stratené pre tento typ agenta." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "Odstrániť teraz!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "Odstrániť platformy" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "Všetky údaje návštevníka budú stratené pre tento typ platformy." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "Zdroje" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "Využitie pamäte v PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "Bajt" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "PHP Limit pamäte" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "Limit pamäte, ktorú môže skript spotrebovať, nastavené v php.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "Počet riadkov v tabuľke %s" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "Riadok" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "Počet riadkov" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "Informácie o verzii" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "Verzia WP Statistics" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "Používate verziu WP Statistics." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "PHP verzia" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "Používate verziu PHP." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "PHP núdzový režim" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "Je PHP núdzový režim (Safe Mode) aktívny? GeoIP kód nie je podporovaný v núdzovom režime." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "Verzia jQuery" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "JQuery verziu používate." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "cURL verzia" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "cURL nie je nainštalovaný" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "Používaná verzia PHP cURL rozšírenia. cURL je potrebné pre určenie GeoIP kódu, ak nie je nainštalované, funkcia GeoIP bude vypnutá." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "Inštalované" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "Nie je nainštalovaný" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "Informácie o súbore" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "GeoIP databáza" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "Databázový súbor neexistuje." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr ", vytvorené na " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "Veľkosť súboru a dátum GeoIP databázy." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "browscap.ini súbor" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "browscap.ini súbor neexistuje." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "Veľkosť súboru a dátum súboru browscap.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "browscap súbor vyrovnávacej pamäte" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "browscap súbor vyrovnávacej pamäte neexistuje." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "Veľkosť súboru a dátum súboru cache browscap." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "Info o klientovi" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "IP klienta" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "Adresa IP klienta." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "User Agent" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "Identifikačný reťazec klienta." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "Prehliadač" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "Zistený prehliadač klienta." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "Zistená verzia prehliadača klienta." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "Zistená platforma klienta." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "To nahradí všetky IP adresy z databázy s hash hodnoty a nie je možné vrátiť späť, ste si istí?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "Možnosti GeoIP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "Aktualizuje všetky neznáme miesto údaje v databáze, to môže chvíľu trvať," + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "IP adresy" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "Hash IP adries" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "IP adresy v databáze nahradiť hodnotami hash. Nebudete potom schopní obnoviť IP adresy v budúcnosti a získať lokalizačné informácie. Táto operácia môže chvíľu trvať" + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "IP adresy nahradené hodnotami hash." + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "Inštalačná rutina kompletná." + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "Zdroje/Informácie" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "Odstraňujem" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "Databáza" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "Aktualizácie" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "Historický" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "WP Statistics V %s" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "Navštívte nás Online" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "Príďte navštíviť náše skvelé nové %s a zostaňte informovaní o najnovších novinkách ohľadom WP Statistics." + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "webové stránky" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "Hodnotiť a recenzovať na WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "Vďaka za inštaláciu WP Statistics, odporúčame vám podať " + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "hodnotenie a recenzia" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "na WordPress.org. Vaša spätná väzba je veľmi cenná!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "Preklady" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "WP Statistics podporuje internacionalizáciu a žiadame našich užívateľov, aby predložili preklady, prosím navštívte naše %s Ak chcete zobraziť aktuálny stav a %s ak by ste chceli pomôcť." + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "preklad spolupracujúca lokalita" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "Napíšte nám" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "Podpora" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "Ľutujeme, že máte problém s WP Statistics, radi vám pomôžeme. Tu je niekoľko vecí, ktoré je potrebné urobiť, než nás budete kontaktovať:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "Čítali ste %s?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "Často kladené otázky" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "manuál" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "Hľadali ste v %s podobný problém?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "diskusné fórum" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "Hľadali ste na Internete chybové hlásenia, ktoré dostávate?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "Uistite sa, že máte prístup k PHP chybovým záznamom." + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "A pár vecí skontrolovať:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "Ako je váš memory_limit v php.ini?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "Skúšali ste vypnúť nejaké iné zásuvné moduly (pluginy), ktoré máte nainštalované?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "Vyskúšali ste s pomocou predvolenej WordPress témy?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "Prekontrolovali ste nastavenia zásuvného modulu (pluginu)?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "Máte všetky potrebné PHP rozšírenia nainštalované?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "Ste stále nevyplnené alebo neúplné stránky zobrazujú v prehliadači? Môžete zobraziť zdrojový kód stránky a skontrolovať prípadné fatálne chyby?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "Skontrolovali ste svoje PHP a chybové hlásenia webového servera?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "Stále bez trochy šťastia?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "Potom prosím otvoriť nové vlákno na %s, budeme odpovedať čo najskôr." + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "WordPress.org fórum podpory" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "Alternatívne je tu k dispozícii podpora v jazyku %s ." + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "Perzština" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "Stránka WP Statistics Honey Pot " + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "Toto je honey pot používaný WP Statistics, neodstraňujte ho." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "Úrovne prístupu" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "Požadovaná pužívateľská úroveň potrebná pre zobrazenie WP Statistics" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "Požadovaná pužívateľská úroveň potrebná pre správu WP Statistics" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "Pozrite si %s podrobnosti o úrovniach spôsobilosti." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "WordPress funkcie a možnosti stránka" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "Tip: manage_network = Superadministrátor siete, manage_options = Administrátor, edit_others_posts = Editor, publish_posts = Autor, edit_posts = Prispievateľ, read = všetci." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "Každé z vyššie uvedených mení v predvolenom nastavení WordPress kaskádne práva smerom nahor. Tak napríklad výberom publish_posts udeľujete právo autorom, editorom, administrátorom a super administrátorom." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "Ak potrebujete viacej robustné riešenie na delegovanie prístupu, asi sa budete chcieť pozrieť na %s v adresári WordPress zasúvného modulu." + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "Vylúčenia" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "Vylúčenie záznamov" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "Zapnúť" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "To bude zaznamenávať všetky vylúčené hity v samostatnej tabuľke dôvody prečo to bolo vylúčené, ale žiadne ďalšie informácie. To bude generovať veľa údajov, ale je užitočné, ak chcete zobraziť celkový počet hitov vaše stránky dostane, nie len skutočný užívateľ návštev." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "Vylúčiť používateľské role" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "Vylúčiť" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "Vylúčiť %s rolu zo zberu údajov." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "IP/Robot vylúčenia" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "Zoznam robotov" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "Zoznam slov (jedno na riadok) pre porovnanie na detekciu robotov. Položky musia mať aspoň 4 znaky alebo sa budú ignorovať." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "Obnoviť predvolené" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "Po aktualizáciach vynútiť aj aktualizáciu zoznamu robotov" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "Po aktualizácii WP Statistics vynútiť obnovenie zoznamu robotov na prednastavenú hodnotu. Poznámka: Ak je táto vlastnosť povolená, vami pridané roboty do zoznamu sa stratia." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "Prah pre návštevy robotov" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "Rozlišuj návštevníkov s počet návštev za deň viac ako toto číslo ako robotov. 0 = vypnuté." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "Zoznam vylúčených IP adries " + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "Pridať 10.0.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "Pridať 172.16.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "Pridať 192.168.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "Použiť Honey Pot" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "Použite stránku Honey Pot na identifikáciu robotov." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "Id Honey pot príspevku" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "Id príspevku použité pre stránku Honeypot." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "Vytvorenie novej Honey Pot stránky" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "GeoIP Vylúčenia" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "Zoznam vylúčených krajín" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "Zoznam kódov krajín (jeden na riadok, dve písmená) vylúčených zo zberu štatistických údajov. Pomocou "000" (tri nuly) vylúčite neznáme krajiny." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "Zahrnuté zoznamy krajín" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "Zoznam kódov krajín (jeden na riadok, dve písmená) zahrnutých do zberu štatistických údajov, ak nie je tento zoznam prázdny, budú zaznamenaní iba návštevníci zo zoznamu krajín. Pomocou "000" (tri nuly) vylúčite neznáme krajiny." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "Hostiteľské vylúčenia" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "Vylúčený zoznam hostiteľov" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "Zoznam plne kvalifikovaných názvov hostiteľov (to je. server.example.com, jeden na riadok) vylúčených zo zberu štatistických údajov." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "Poznámka: Táto voľba nebude vykonávať spätné DNS vyhľadávanie pri každom načítaní stránky, ale namiesto toho si pre poskytnuté mená hostiteľov ukladá do pamäte IP adresy po dobu jednej hodiny. Ak ste vylúčili dynamicky prideľených hostiteľov, môžete objaviť nejaký stupeň prekrývania, keď hostiteľ mení svoju IP adresu a keď je pamäť aktualizovaná zaznamenaním nejakého zobrazenia. " + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "Stránky URL vylúčenia" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "Vylúčená prihlasovacia stránka" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "Vylúčiť prihlasovaciu stránku z registrácie zobrazenia." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "Vylúčené admin stránky" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "Vylúčiť admin stránky z registrácie zobrazenia." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "Vylúčené RSS kanály" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "Vylúčiť RSS kanály z registrácie zobrazenia." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "browscap nastavenia" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "browscap použitie" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "Aktívne" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "Browscap databáza bude stiahnutá a použitá na detekciu robotov." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "Aktualizácia browscap Info" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "Stiahnuť browscap databázu" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "Uložite zmeny na tejto stránke aby sa začalo sťahovanie aktualizácie." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "Naplánovať týždennú aktualizáciu browscap DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "Ďalšia aktualizácia bude" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "Sťahovanie browscap databázy bude naplánované raz týždenne." + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "To odstráni manuálne uložíte nastavenia, sú si istí?" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "Táto funkcia nebude ukladať IP adresy v databáze, ale namiesto toho použije jedinečné hodnoty hash. Ak je táto možnosť vybratá, nastavenie \"Uložiť celý reťazec agenta používateľa\" sa vypne. Pri tomto nastavení nebudete môcť v budúcnosti obnoviť IP adresy a získať tak informácie o polohe." + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "Používatelia online" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "Používateľ online" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-sr_RS.mo b/plugins/wp-statistics/languages/wp_statistics-sr_RS.mo new file mode 100644 index 0000000..c287416 Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-sr_RS.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-sr_RS.po b/plugins/wp-statistics/languages/wp_statistics-sr_RS.po new file mode 100644 index 0000000..e1a1cdf --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-sr_RS.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in Serbian +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-01-06 17:13:48+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: sr_RS\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "" + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "Ваша верзија ПХП-а није подржана" + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "Статистика искључена" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "Статистика је открила ПХП верзију %s која није подржана, Статистици је потребна ПХП верзија %s или више!" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "Молимо контактирајте вашег хостинг провајдера за надоградњу на подржану верзију или онемогућите ВП Статистика како бисте уклонили ову поруку." + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "ГРЕШКА: Виџет није пронађен!" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "Учитавање ..." + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "Поновно учитавање..." + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "Топ Посетиоци" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "Страница оптимизације" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "Омогућено" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "Дневно чишћење старих података" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "УП Црон ће се покретати свакодневно да би се ослободили свих података који су старији од одређеног броја дана." + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "Обриши податке старије од" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "Обриши велики број посетилаца дневно" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "УП Црон ће се покретати свакодневно да би се ослободили свих статистичких података корисника где корисник има више од дефинисаног броја погодака у једном дану (тј. вероватно су бот)." + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "Број прегледа потребних за брисање посетиоца. Минимална вредност је 10 погодака. Неважеће вредности ће онемогућити дневно одржавање." + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "ИД чланка / странице на којој желите статистику" + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "ИД чланака / странице" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "Ask.com" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "Временски оквир да бисте добили статистику за, strtotime() (http://php.net/manual/en/datetime.formats.php) ће се користити за израчунавање. Користите \\\"total\\\"; да би сте добили све снимљене датуме." + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "праћење посетилаца" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "ГеоИП колекција" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "Посета индекса база података" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "Потребна је исправке Датабазе, посетите%s и ажурирајте следеће:%s" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "Индекс земаља база података" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "Претрага табела" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "Страница поставки" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "," + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "Следеће функције су искључене, посетите%s и омогући те их:%s" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "Праћење посета" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "Праћење онлајн корисника" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "Следећа табела/е додатака не постоји у бази података, поново покрените%s процес инсталације%s:" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "Конверзија претраге завршена, додаје%d редова." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "Старије инсталације ВП Статистике чувају детаље претрага у Табели посетилаца која временом може постати проблем због количине података. Нова табела је направљена да чува ову информације на бољи начин." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "Табела претраге" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "Претворити" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "Претвори Сада!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "Старије инсталације ВП Статистике чувају детаље претрага у Табели посетилаца која временом може постати проблем због количине података. Нова табела је направљена да чува ову информације на бољи начин., међутим стари подаци се прво морају претворити у нови формат пре него што се могу користити." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "Референтни спам" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "Преузимање Пивик спам Црне листе базе података ће бити заказано за једном недељно." + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "Спољни" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "Подешавања Пивик Спам Црне листе" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "Планирајте недељни упдате базе Пивик Спам Црнелисте" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "Скините базу Пивик Спам Црнелисте " + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "Освежите информације Пивик спам Црне листе" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "Пивик Стринг Пријава База база података ће бити преузета и користи за откривање реферрер спам." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "Стринг Спам Блацклист је обезбеђена од стране Пивик, доступан од%s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "Пивик Стринг Спам Блацклист употреба" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "Tретирај корумпиране бровсер информације као да су бот" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "404 страница" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "Датум" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "Третирај било ког посетиоца са корумпираном информације о претраживачу (нема ИП адресу или празан усер агент стринг), као робот." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "Искључена 404 страница" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "Искључи све адресе које враћају \\\"404 - Not Found\\\" поруку." + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "Грешка при прављењу ГеоИП базе података директоријума, проверите да ли ваш веб сервер има дозволу за креирање директоријума у%s" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "Додај наслов странице у празне речи за претрагу" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "Ако претраживач је идентификован као реферрер, али не укључује упит за претрагу ова опција ће заменити наслов странице у наводницима претходи \\\"~:\\\" као упит за помоћ у идентификацији шта корисник може бити у потрази за." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "Бриши посетиоце са више од" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "Посете" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "Обрисана Статистика корисничких података где корисник има више од дефинисаног броја погодака у једном дану. Ово може бити корисно да обришете старе податке када је ваш сајт погодио бот. Ово ће уклонити посетиоца и њихове хитове на сајту, међутим, то неће уклонити појединачне посете странице. Минимална вредност је 10 погодака." + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "Нема посетилаца за брисање." + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "%s уноса успешно обрисан" + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "Број погодака мора бити већи или једнак 10!" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "Посета странице" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "Број страница" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "Број коментара" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "Број спам порука" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "Број корисника" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "Просечно порука" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "Просечно коментара" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "Просечно корисника" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "Провајдер претраге" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "Статистика за провајдера претраге" + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "Формат броја" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "Формат за приказ бројева у: и18н, енглески, нико." + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "Енглески" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "Међународни" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "Статистика погодака" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "Графикон Укупно" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "Све време Укупно" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "Да ли сте размишљали о донацији за ВП статистику?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "Донирајте" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "Колико уживате у ВП Статистици? Свратите %s и покажите нам мало љубави!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "донација" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "Донирајте сада!" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "Затворено" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "Изаберите статистику коју желите да прикажете." + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "Статистички" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "Број чланака" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "Временски оквир" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "на" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "Иди" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "Место # 5" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "Место # 4" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "Место # 3" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "Место # 1" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "Место # 2" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "Табела посета " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "Старија инсталација ВП статистике дозвољава дуплиране ставке у табели посета. Новија инсталација штити од тога са јединственим индексом. Да би добили индекс у старијим верзијама дупли уноси морају бити избрисани. Кликом \\\"Update Now\\\" ће скенирати табелу са посетама, обрисати дуплиране ставке и додати индекс." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "Ова операција може узети много времена за инсталацију ако постоји много уноса у табели посета." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "Старија инсталација ВП статистике дозвољава дуплиране ставке у табели посета. Новија инсталација штити од тога са јединственим индексом." + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "Филтрира" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "Домет" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "ММ / ДД / ГГГГ" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "Не користите преводе и уместо тога користе енглеске основе за Вордпрес статистику (захтева две странице за учитавање)" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "Обавезан енглески" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "Језици" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "Напомена: Ова опција неће руковати урл параметре, само на име скрипта (све после?). Уноси мање од два карактера ће бити игнорисани." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "Списак локалних урлс (тј. / ВордПресс / о, један по линији) да искључи из статистике колекције." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "Листа изузетих УРЛ-ова" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "Изузета УРЛ адреса" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "Последњих 365 дана (Год)" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "Последњих 30 дана (месец)" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "Последњих 7 дана (недеља)" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "Yahoo!" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "Yandex" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "clearch.org" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "DuckDuckGo" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "Bing" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "Baidu" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "Фидови" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "Улога корисника" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "Страница за пријаву" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "Администраторска страница" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "Само упућивање" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "Поклапање ИП" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "Робот" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "Тренутно нема активних корисника на сајту." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "Робот праг" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "Ћуп са медом" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "Странице у тренду" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "Hostname" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "Активирај или деактивирај ову опцију" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "Провери активне кориснике сваке" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "Секунде" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "Време за проверу тачног броја активних корисника на сајту. Тренутно %s секунди" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "Снимите све корисника" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "Игнорише поставке искључење и бележи све кориснике који су на мрежи (укључујући самостално упућивање и роботе). Треба користити само за решавање проблема." + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "Сачувај цео низ корисничког агента" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "Активирано само за отклањање грешака" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "Коефицијент по посетиоцу" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "За сваког посетиоца броји се по неколико захтева. Тренутно %s." + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "Странице" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "Прати све странице" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "Параметри из УРИ" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "Ово ће уклонити све после \\\" ? \\\" у УРЛ адреси." + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "Деактивирија захтеве колоне на чланцима и страницама" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "Разно" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "Прикажи статистику у менију" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "Не" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "Да" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "Прикажи статистику на траци са менијем за администраторе" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "Сакриј администраторске белешке о неактивним функционалностима" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "По стандарду, WP Statistics приказује упозорење ако је било која суштинска карактеристика деактивирана на свакој администраторској страници. Ова опција ће деактивирати та обавештења." + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "Обриши упутство" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "Po standardu, WP Statistics čuva uputstvo administratora u direktorijumu plugin-a (~5 meg). Ako je ova opcija deaktivirana, sada će biti obrisano, kao i tokom ažuriranja u budućnosti." + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "Deaktiviranje svih pretraživača nije dozvoljeno. Takav potez rezultiraće aktiviranjem svih pretraživača." + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "deaktiviraj" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "Deaktiviraj %s iz kolekcije podataka i izveštavanja" + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "Grafikoni" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "Uključujući ukupne vrednosti" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "Dodaj red za ukupne vrednosti grafikonima, kao što su uputi pretraživača." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "GeoIP podešavanja" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "IP servis lokacija obezbeđuju GeoLite2 podaci koje je kreirao MaxMind, raspoloživ sa %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "GeoIP kolekcija" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "Da biste dobili više informacija i lokaciju (državu) posetilaca, aktivirajte ovu funkcionalnost." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "Ažuriraj GeoIP Info" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "Preuzmi GeoIP bazu podataka" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "Planiraj ažuriranje GeoIP baze podataka jednom mesečno" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "Preuzimanje GeoIP baze podataka biće planirano 2 dana posle prvog utorka u mesecu." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "Ova opcija će, takođe, preuzeti bazu podataka ako je veličina lokalne datoteke manja od 1k (što obično znači da je stub koji dolazi uz plugin još na svom mestu)." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "Ubacite nedostajući GeoIP nakon ažuriranja GeoIP baze podataka" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "Ažurirajte bilo koji nedostajući GeoIP podatak nakon preuzimanja nove baze podataka." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "GeoIP kolekcija deaktivirana je iz sledećih razloga:" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "GeoIP kolekcija zahteva PHP verziju %s ili noviju. Trenutno je deaktivirana jer je instalirana PHP verzija " + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "GeoIP kolekcija zahteva cURL PHP ekstenziju i nije otpremljena na vašoj PHP verziji!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "GeoIP kolekcija zahteva BC Math PHP ekstenziju i nije otpremljena na vašoj PHP verziji!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "Otkriven je PHP bezbedni režim! GeoIP kolekcija nije podržana kad je aktiviran PHP bezbedni režim!" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "Ovako ćete trajno obrisati podatke iz baze podataka za svaki dan. Jeste li sigurni da želite da aktivirate ovu opciju?" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "Dana" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "Broj dana za čuvanje statistike. Minimalna vrednost je 30 dana. Nevažeće vrednosti će onemogućiti svakodnevno održavanje." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "E-mail adrese" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "Statistički izveštaji" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "Planer" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "Pošalji izveštaje putem" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "Email" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "Напомена: Да бисте послали СМС текстуалне поруке инсталирајте %s плугинВП" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "ВордПресс СМС" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "Tekst izveštaja" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "Online korisnici" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "Današnji posetioci" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "Današnja poseta" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "Jučerašnji posetioci" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "Jučerašnja poseta" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "Ukupno posetilaca" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "Ukupna poseta" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "Nijedan" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "O" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "" + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "Google" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "Deaktiviraj mapu" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "Deaktiviraj prikaz mape" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "Opšti" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "Održavanje" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "Ažuriraj" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "Jednom nedeljno" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "Jednom u 2 nedelje" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "Jednom u 4 nedelje" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "Statistike" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "Prikaži statistiku site-a u bočnoj traci sa menijem" + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "Ukupan broj pregleda stranice" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "Ukupno postova" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "Ukupno stranica" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "Ukupno komentara" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "Ukupno spam-ova" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "Ukupno korisnika" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "Prosečno postova" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "Prosečno komentara" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "Prosečno korisnika" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "Datum poslednjeg posta" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "Naziv" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "Stavke" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "Jučerašnja poseta" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "Odaberite vrstu pretraživača" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "" + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "WP Statistics" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "Kompletirajte statistiku za svoj WordPress site." + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "Podešavanja" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "Kliknite ovde da biste posetili plugin na WordPress.org" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "Posetite stranicu WordPress.org " + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "Kliknite ovde da biste ocenili i komentarisali ovaj plugin na WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "Ocenite ovaj plugin" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "WP Statistics - Zahtevi" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "Pregled" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "Pretrage" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "Reči za pretragu" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "Optimizacija" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "Uputstvo" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "Broj posetilaca danas" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "Broj poseta danas" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "Broj poseta juče" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "Vidi statistiku" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "Preuzmi ODF datoteku" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "Preuzmi HTML datoteku" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "Datoteka sa uputstvom nije pronađena" + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "Nemate odgovarajuće dozvole za pristup ovoj stranici" + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "Došlo je do greške prilikom preuzimanja GeoIP baze podataka sa %s - %s" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "Došlo je do greške. Preuzeta GeoIP baza podataka %s ne može da se otvori za čitanje" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "Došlo je do greške. Destinacija GeoIP baza podataka ne može da se otvori za pisanje %s." + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "GeoIP baza podataka uspešno ažurirana!" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "Грешка при преузимању бровсцап базу података: %s - %s" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "бровсцап База%је успешно ажуриранаили!" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "бровсцап већ у тренутној верзији" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "10 vrhunskih pretraživača" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "Prvih 10 zemalja" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "Statistika zahteva" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "Prvih 10 stranica" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "Nedavni posetioci" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "Site-ovi sa najvećim brojem uputa" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "Uputi pretraživača" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "Kratak pregled" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "Poslednje reči u pretrazi" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "" + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "Nije moguće učitati GeoIP bazu podataka. Proverite na stranici podešavanja da li ste je preuzeli. " + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "GeoIP zapisi %s ažurirani u bazi podataka posetilaca" + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "обрисан %s подаци старији од %s дана успешно очишћен" + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "Не са намерени цистка од %s Фајл!." + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "Odaberite vrednost preko 30 dana." + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "Statistika pretraživača" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "Klikni za aktiviranje/deaktiviranje" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "Pretraživači" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "Pretraživači po vrsti" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "Platforma" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "Pretraživači po platformi" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "%s verzija" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "Pažnja: Trenutno se izuzeci ne beleže, rezultati koji slede možda ne odražavaju tačnu statistiku!" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "Statistika izuzetaka" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "10 dana" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "20 dana" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "30 dana" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "2 meseca" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "3 meseca" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "6 meseci" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "9 meseci" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "1 godina" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "Statistička karta izuzetaka" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "Broj izuzetih zahteva u poslednjih:" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "dana" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "Broj isključenih zahteva" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "Statistička karta zahteva" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "Broja zahteva u poslednjih" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "Broj poseta i posetilaca" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "Poseta" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "Posetilac" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "Statistika pretrage poslednjih reči" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "#hash#" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "Mapa" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "Stranica" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "Iz" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "Svi" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "Statistika o nedavnim posetiocima" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "Trend stranice za ID posta" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "Trend stranice" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "Statistika upućivanja pretraživača" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "Upućivanje pretraživača u poslednjih" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "Broj uputa" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "Ukupno" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "Najveći broj iz država" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "Rang" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "Zastava" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "Država" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "Broj posetilaca" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "Najposećenije stranice" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "Trendovi za prvih 5 stranica" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "Statistika trendova na prvih 5 stranica" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "Broj zahteva" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "Nije pronađen naslov stranice " + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "Posete" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "Uskoro će biti dodati" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "Upućuje site-ove sa" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "Reference" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "О ВП Статистика версион %s" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "Website" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "Ocenite i napišite pregled" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "Više informacija" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "Ovaj proizvod sadrži GeoLite2 podatke koje je kreirao MaxMind, raspoložive sa %s." + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "Ostali" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "Mapa današnjih posetilaca" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "Adresa" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "Online(s) korisnika" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "Danas" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "Juče" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "Ukupno dnevno" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "Trenutno vreme i datum" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "(Prilagođavanje)" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "Датум: %s" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "Тиме: %s подаци" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "Zahtevi" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "Pristup odbijen" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "%s сагентизбрисани успешно евиденцији." + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "Molimo odaberite željene stavke" + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "платформаза податке %s успешно обрисан" + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "подаци Табела %s успешно" + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "Greška, %s nije ispražnjen!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "База Сетуп" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "Ре-рун Инсталл" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "Инсталл Сада," + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "ако из неког разлога ваш инсталација ВП статистику недостаје табела базе података друге основне ставке, то ће поново извршити процес инсталирањаЕктенсион.." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "Indeks baze podataka" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "Države" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "Ažuriraj sada!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "Starije WP Statistics instalacije dozvoljavaju dupliranje unosa u tabeli posetilaca u izuzetnim slučajevima. Novije instalacije štite se od toga jedinstvenim indeksom na tabeli. Da biste kreirali indeks na starijim instalacijama, prvo morate obrisati duple unose. Ako kliknete na opciju \"Ažuriraj sad\", tabele posetilaca biće skenirane, dupli unosi će biti obrisani i indeksi će biti dodati tabeli." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "Ova operacija mogla bi da potraje malo duže ako u tabeli posetilaca ima mnogo redova." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "Starije WP Statistics instalacije dozvoljavaju dupliranje unosa u tabeli posetilaca u izuzetnim slučajevima. Novije instalacije štite se od toga jedinstvenim indeksom na tabeli." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "Čestitamo! Vaša instalacija već je ažurirana, nemate šta da radite." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "Izvezi" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "Izvezi iz" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "Odaberite" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "Odaberite tabelu za izlaznu datoteku." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "Izvezi u" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "Odaberite vrstu izlazne datoteke." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "Uključi red u zaglavlju" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "Uključi red u zaglavlju kao prvi red izvezene datoteke" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "Počni sad!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "Posetioci" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "Jeste li sigurni?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "Podaci" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "Isprazni tabelu" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "Svi podaci će se izgubiti" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "Obriši sad!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "Obriši zapise starije od" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "Podaci o statistici korisnika stariji od određenog broja dana su obrisani. Minimalna vrednost je 30 dana." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "Obriši sad!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "Obriši vrste korisničkih agenata" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "Obriši agente" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "Svi podaci o posetiocima za ovu vrstu agenta biće izgubljeni" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "Obriši sad!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "Obriši platforme" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "Svi podaci o posetiocima za ovu vrstu platforme biće izgubljeni." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "Izvori" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "Upotreba memorije u PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "Bajt" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "PHP ograničenje memorije" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "Ograničenje memorije koje je dozvoljeno skripti da utroši, podešeno u php.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "Број редова у %s табели" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "Red" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "Broj redova" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "Podaci o verziji" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "WP Statistics verzija" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "WP Statistics verzija koju vi imate" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "PHP verzija" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "PHP verzija koju vi imate" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "PHP bezbedan režim" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "Da li je PHP bezbedni režim aktivan? GeoIP kod nije podržan u bezbednom režimu." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "jQuery verzija" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "jQuery verzija koju vi imate" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "cURL verzija" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "cURL nije instaliran" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "Verzija PHP cURL ekstenzije koju vi imate. Za GeoIP kod cURL je obavezan. Ako nije instaliran, GeoIP će se deaktivirati." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "Instaliran" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "Nije instaliran" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "Филе Инфо" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "ГеоИП" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "Datoteka baze podataka ne postoji." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr "Датабасе,створено од " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "величине фајла и датум базе ГеоИП." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "Бровсцап.ини Филе" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "бровсцап.ини датотека не постоји." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "Филе величину и датум бровсцап.ини фајлаће" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "бровсцап Цацхе Филе" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "бровсцап кеш датотека не постоји." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "величина и датум бровсцап кеш Дођите" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "Podaci o klijentu" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "IP klijenta" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "IP adresa klijenta" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "Korisnički agent" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "Niz korisničkog agenta klijenta" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "Ovo će zameniti sve IP adrese u bazi podataka hash vrednostima i ne može se poništiti. Jeste li sigurni?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "GeoIP opcije" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "Ažurira bilo koju nepoznatu lokaciju podataka u bazi podataka. Može potrajati izvesno vreme" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "IP adrese" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "Hash IP adrese" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "Zamenjuje IP adrese u bazi podataka hash vrednostima. Nećete moći da vratite IP adrese da biste ispunili informacije o lokaciji u budućnosti. Može potrajati izvesno vreme." + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "IP adrese zamenjene hash vrednostima." + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "Инсталл рутинску ЦОМПЛЕТЕбровсцап..." + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "Izvori/Informacije" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "Brisanje" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "Baza podataka" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "Ažuriranja" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "WP Statistics Verzija V%s" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "Posetite nas online" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "посетите нашу велику нову %s и држе до датума на најновије вести Око ВП статистику." + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "аутора" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "Ocenite i napišite pregled na WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "Hvala što ste instalirali WP Statistics. Slobodno ga" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr " ocenite i napišite komentar na " + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "WordPress.org. Vaše povratne informacije mnogo nam znače!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "Prevodi" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "ВП статистику подржава интернационализацију и охрабрујемо наше кориснике да доставе преводе, посетите наш %s да бисте видели тренутни статус и %s ако желите да помогнете." + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "превод сарадња сајт" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "пошаљите нам линију" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "Podrška" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "Žao nam je što vam WP Statistics zadaje problem i srećni smo što možemo da vam pomognemo. Evo šta treba da uradite pre nego što nam se obratite:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "Да ли сте прочитали %s?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "ФАК" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "Упутству" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "имају претражујете %s за сличан проблем?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "Форум" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "Jeste li pretražili internet da uporedite poruke o grešci koje dobijate?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "Još jednom proverite sledeće:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "Kako stojite sa ograničenjem_memorije u php.ini?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "Jeste li pokušali da deaktivirate bilo koji drugi plugin koji ste, možda, instalirali?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "Jeste li pokušali da upotrebite podrazumevanu WordPress temu?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "Jeste li ponovo proverili podešavanja plugin-a?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "Imate li instalirane sve potrebne PHP ekstenzije? " + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "Da li vam se u pretraživaču prikazuje prazna ili nekompletna stranica? Jeste li potražili stranicu u izvoru i proverili ima li fatalnih grešaka?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "Jeste li proverili svoj PHP i dnevnike grešaka web servera?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "Niste imali sreće?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "Затим отворите нову тему о %s, а ми ћемо одговорити у најкраћем могућем року." + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "ВордПресс.орг Форум" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "Алтернативно помагања %s је доступан као и ." + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "Фарси" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "Nivoi pristupa" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "Neophodan korisnički nivo za pregled plugin-a WP Statistics." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "Neophodan korisnički nivo za upravljanje plugin-om WP Statistics." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "Видети %s за детаље о нивоима способности." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "ВордПресс улоге и способности Паге" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "Savet: upravljaj_mrežom = Super Admin Mreža, upravljaj_opcijama = Administrator, uredi_tuđe_postove = Urednik, objavi_postove = Autor, uredi_postove = Saradnik, čitaj = Svi." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "Sve navedene kaskade prikazuju kompetencije u podrazumevanoj WordPress konfiguraciji. Na primer, kada odaberete objavi_postove, prava na to imaju autori, urednici, administratori i super administratori." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "Ako vam je potrebno striktnije rešenje za raspodelu pristupa, možda ćete hteti da pogledate %s u WordPress plugin direktorijumu." + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "Izuzeci" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "Izuzeci zapisa" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "Aktiviraj" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "Na ovaj način zabeležiće se svi izuzeti zahtevi u odvojenoj tabeli zajedno sa razlozima zbog kojih su izuzeti, ali bez ijedne druge informacije. Na ovaj način generisaće se veliki broj podataka, ali koriristiće vam kad budete hteli da vidite ukupan broj zahteva koje dobija vaš site, a ne samo broj poseta trenutnih korisnika." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "Isključi korisničke uloge" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "Isključi" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "Isključi %s ulogu iz kolekcije podataka." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "IP/Robot izuzeci" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "Lista robota" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "Lista reči (po jedna reč u svakom redu) za detektovanje robota. Unosi moraju biti dugački najmanje 4 karaktera. U suprotnom, biće ignorisani. " + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "Vrati na podrazumevane vrednosti" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "Ažuriraj listu robota nakon nadgradnje" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "Vratite listu robota na podrazumevane vrednosti posle WP Statistics ažuriranja. Obratite pažnju na to da li je ova opcija aktivirana ili će bilo koji prilagođeni roboti dodati ovoj listi biti izgubljeni." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "Isključena lista IP adresa" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "Dodaj 10.0.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "Dodaj 172.16.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "Dodaj 192.168.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "Izuzeci URL site-a" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "Izuzeta stranica za prijavljivanje" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "Izuzmi stranicu za prijavljivanje i nemoj je registrovati kao zahtev" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "Isključene stranice administratora" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "Isključi stranice administratora i nemoj ih registrovati kao zahtev." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "бровсцап Сеттингс" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "бровсцап Употреба" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "Aktivan" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "база података бровсцап ће бити преузета и користити за детекцију роботе" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "Упдате бровсцап Инфо" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "Довнлоад бровсцап база" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "Sačuvaj izmene na ovoj stranici radi preuzimanja ažuriranja." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "Распоред недељно ажурирање бровсцап ДБ" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "Naredno ažuriranje biće" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "преузимање базе бити заказана једном недељно." + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "Kad sačuvate podešavanja, obrisaćete priručnik. Jeste li sigurni?" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "Ова функција неће чувати ИП адресе у бази података, али уместо тога користи јединствену хасх. \"Сторе цела Прелистувач стринг \" Постављање ће бити онемогућен ако је он изабран. Нећете бити у стању да се опорави ИП адресе у будућности да се опорави информације о локацији, ако је то омогућено." + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "Online korisnici" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "Korisnik online" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-sv_SE.mo b/plugins/wp-statistics/languages/wp_statistics-sv_SE.mo new file mode 100644 index 0000000..d866cc3 Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-sv_SE.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-sv_SE.po b/plugins/wp-statistics/languages/wp_statistics-sv_SE.po new file mode 100644 index 0000000..c57d7e8 --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-sv_SE.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in Swedish +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-10-17 11:40:56+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: sv_SE\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "Senaste 365 dagarna" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "Senaste 30 dagarna" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "Senaste 7 dagarna" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "PHP IPv6 aktiverat" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "Är PHP kompilerad med stöd för IPv6? I annat fall kan du se varningsmeddelanden i PHP-loggen när du mottagit IPv6-adresser i HTTP-huvuden." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "En lista med IP-adresser och subnätsmaskar (en per rad) som ska uteslutas ur statistikinsamlingen." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "Både formatet: 192.168.0.0/24 och formatet: 192.168.0.0/255.255.255.0 accepteras för IPv4-adresser. Använd ett subnätsvärde typ 32 eller 255.255.255.255 för att specificera enbart en IP-adress." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "Använd formatet: fc00::/7 för IPv6-adresser" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "Lägg till fc00::/7" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "Dagens antal besök" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "Dagens antal besökare" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "Gårdagens antal besök" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "Gårdagens antal besökare" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "Senaste 7 dagarnas antal besök" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "Senaste 30 dagarnas antal besök" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "Senaste 365 dagarnas antal besök" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "Totalt antal besök" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "Totalt antal besökare" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "Gårdagens antal besök" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "Hittar ingen widget som pasar in!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "Zlib gzopen()" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "Om funktionen gzopen() är installerad. Funktionen krävs för att databasen för GeoIP ska kunna laddas ner." + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "FEL: Varken funktionen download_url() eller gzopen() finns!" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "Fel behörighetsinställning till GeoIP-databaskatalogen, försäkra dig om att din webbserver har behörighet att skriva i katalogerna i: %s" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "— PHP-versionen som används fungerar inte med WP Statistics." + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "WP Statistics ej aktiverad" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "WP Statistics har detekterat PHP-version %s, som inte stöds, förutsätter PHP-version %s eller högre!" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "Kontakta serverleverantören för uppgradering till en version som stöds eller inaktivera WP Statistics för att stänga av det här meddelandet." + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "FEL: Widget hittas inte!" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "Laddar..." + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "Ny laddning..." + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "Mest populära besökare" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "optimeringssida" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "Aktiverad" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "Rensa bort gamla uppgifter dagligen" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "Ett WP-Cron-jobb kommer att köras dagligen för att städa bort alla data som är äldre än ett visst antal dagar." + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "Rensa bort uppgifter som är äldre än" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "Rensa besökartoppräknaren dagligen" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "Ett WP-Cron-jobb kommer att köras dagligen för att rensa bort alla användarstatistik där användaren har mer än det definierade antalet träffar på en dag (troligen en robot)." + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "Antalet träffar som krävs för att ta bort besökaren. Minsta antal är 10 träffar. Ett ogiltigt värde stänger av det dagliga underhållet." + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "ID för inlägg/sida att samla sidstatistik om." + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "ID för inlägg/sida" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "Ask.com" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "Tidsramen för statistikinsamlingen, strtotime() (http://php.net/manual/en/datetime.formats.php) används för beräkningen. Ange \"total\" för att få med alla insamlade dagar." + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "spårning av besökare" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "geoip-insamling" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "databasindex för besök" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "Uppdateringar av databasen är nödvändiga, vänligen gå till %s och uppdatera följande: %s" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "databasindex för länder" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "sök tabellen" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "inställningssidan" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "," + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "Följande funktioner är inaktiverade, vänligen gå till %s och aktivera dem: %s" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "spårning av träff" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "spårning av uppkopplade användare " + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "Följande tilläggstabell(er) saknas i databasen, vänligen kör %s installeringsrutin %s:" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "Konvertering av söktabell klar, ökade med %d rader." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "Äldre installationer av WP Statistics lagrar information om sökningar i besökartabellen som kan leda till prestandaproblem vid stora datamängder. En ny tabell har skapats för att samla informationen mer effektivt." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "Söktabell" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "Konvertera" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "Konvertera nu!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "Äldre installationer av WP Statistics sätt att lagra information om sökningar i besökartabellen kan leda till prestandaproblem vid stora datamängder. En ny tabell har skapats för att samla informationen mer effektivt, men de gamla uppgifterna måste först konverteras till det nya formatet innan den kan användas." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "Manipulerade referenskällor" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "Nedladdning av Piwiks svartlistade skräpreferenser kommer att schemaläggas en gång per vecka." + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "Externa" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "Inställningar för svarta listan från Piwik med skräpreferenser" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "Schemalägg veckovis uppdatering av svarta listan från Piwik med skräpreferenser" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "Hämta svarta skräpreferenslistan från Piwik" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "Uppdatera information om Piwiks svartlistade skräpreferenser" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "Svartlistade skräpreferenser hämtas från Piwiks databas och används för att detektera s.k. \"referrer spam\"." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "Svarta listan med skräpreferenser tillhandahålls av Piwik, som är tillgänglig från %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "Användning av Piwiks svarta lista med skräpreferenser" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "Betrakta förvrängd webbläsarinformation som robotgenererad" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "404-sidor" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "Datum" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "Betrakta alla besökare med förvrängd webbläsarinformation (såsom saknad ip-adress eller utebliven user-agent-sträng) som en robot." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "Uteslutna 404-sidor" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "Uteslut alla URL:er som returnerar felmeddelandet 404 (sidan kan inte hittas)." + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "Fel vid skapandet av katalogen för GeoIP-databasen, kontrollera om din webbserver har rättigheten att skapa kataloger i %s" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "Lägg till sidtitel till tomma sökord" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "Om länkningen utförts av en sökmotor utan att sökbegreppet finns med sätter det här alternativet in sidtiteln inom citationstecken föregått av \"~:\" som sökbegrepp, för att underlätta identifiering av användarens sökning." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "Städa bort besökare med mer än" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "träffar" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "Raderad användarstatistik när användaren överstiger det definierade antalet träffar per dag. Detta kan vara användbart för att rensa ut äldre uppgifter när webbplatsen har attackerats av en robot. Detta tar bort besökaren och träffarna på webbplatsen, men det kommer inte att ta bort enskilda sidträffar, eftersom dessa uppgifter inte sparas på användarbasis. Minvärdet är 10 träffar." + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "Inga besökare att rensa bort." + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "%s registreringar framgångsrikt bortstädade." + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "Antal träffar måste vara större än eller lika med 10!" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "Sidbesök" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "Antal sidor" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "Antal kommentarer" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "Antal spam" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "Antal användare" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "Genomsnittligt antal inlägg" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "Genomsnittligt antal kommentarer" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "Genomsnittligt antal användare" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "Sökleverantör" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "Sökleverantören att få statistik för." + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "Sifferformat" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "Formatet för att visa värden: i18n, engelska, inget." + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "Engelska" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "Internationell" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "Statistiksammanfattning för träffar" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "Totalt i diagrammet" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "Totalt under hela tidsperioden" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "Kan du tänka dig en donation till WP Statistics?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "Donera" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "Vill du visa oss hur mycket du gillar WP statistics? Ta vägen förbi vår %s sida och visa oss lite uppskattning!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "donation" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "Donera nu!" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "Stäng" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "Välj vilken statistik du vill visa." + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "Statistik" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "Antal inlägg" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "Tidsram" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "till" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "start" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "Rankning 5" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "Rankning 4" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "Rankning 3" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "Rankning 1" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "Rankning 2" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "Besökstabell" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "I äldre installationer av WP Statistics kan dubbletter i besökstabellen uppstå. Nyare installationer har skydd mot detta med hjälp av unika index. För att skapa index på en äldre installation måste dubbletterna raderas. Klicka på \"Uppdatera nu\" för att granska besökstabellen, radera dubbletter och skapa index." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "Operationen kan ta lång tid om det finns många rader i besökstabellen." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "I äldre installationer av WP Statistics kan dubbletter i besökstabellen uppstå. Nyare installationer har skydd mot detta med hjälp av unika index." + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "Filtrerat med" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "Område" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "MM/DD/YYYY" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "Använd ingen översättning, utan istället de engelska defaulttexterna för WP Statistics (språket ändras först efter ytterligare en sidladdning)" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "Alltid engelska" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "Språk" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "Obs! Detta alternativ hanterar inte URL-parametrarna (allt efter ?), bara skriptnamnet. Kortare uppgift än två tecken ignoreras." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "En lista över lokala webbadresser som ska undantas från statistiken (t.ex. /wordpress/about, en per rad)." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "Lista över uteslutna webbadresser" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "Utesluten webbadress" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "Senaste året (365 dagar)" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "Senaste månaden (30 dagar)" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "Senaste veckan (7 dagar)" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "Yahoo" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "Yandex" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "clearch.org" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "DuckDuckGo" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "Bing" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "Baidu" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "Feeds" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "Användarroll" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "Inloggningssida" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "Administrationssida" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "Länk till sig själv" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "Matchande IP" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "Robot" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "Ingen uppkopplad till webbplatsen för närvarande." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "Gränsvärde för robotar" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "Honey Pot" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "Sidans statistiktrend" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "Värdnamn" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "Lägg till eller ta bort funktionen" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "Checka uppkopplingar varje" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr ":e sekund" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "Tid fram till nästa check av antal uppkopplade användare på webbplatsen. Just nu:%s sekunder" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "Räkna alla användare" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "Ignorerar uteslutningsinställningarna och räknar alla uppkopplingar (inklusive egen och robotar). Bör endast användas för felsökning." + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "Registrera hela användaragentsträngen" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "Bara påslagen för felsökning" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "Faktor per besökare" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "Faktor för varje besök vid flera träffar. För närvarande %s." + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "Sidor" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "Spåra alla sidor" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "Skala bort parametrar från URI:n" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "Tar bort allt efter ? i URL:en." + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "Ta bort antal träffar i inlägg/sidlistan" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "Diverse" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "Visa statistik på menylisten" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "Nej" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "Ja" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "Visa statistik på administrationsmenylisten" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "Dölj administrationsmeddelanden om inaktiva funktioner" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "Enligt defaultalternativet larmar WP Statistics om någon av de centrala funktionerna är avslagen på alla administrationssidor, detta alternativ stänger av dessa meddelanden." + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "Ta bort manualen" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "Enligt defaultalternativet lagrar WP Statistics administrationsmanualen i tilläggskatalogen (~ 5 MB), detta alternativ tar bort den omedelbart och vid alla uppgraderingar framöver." + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "Sökmotorer" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "Det fungerar inte att ta bort alla sökmotorer, i det fallet medges alla sökmotorer." + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "Ta bort" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "Ta bort %s från datainsamling och rapportering." + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "Diagram" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "Inkludera totalvärden" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "Lägger till en totalvärdesrad till diagram med flera värden, som exempelvis sökmotorlänkningar" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "Inställningar för GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "IP-platstjänster levererade från GeoLite2 data, skapat av MaxMind, tillgänglig från %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "GeoIP-insamling" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "Lägg till den här funktionen för att få mer besökarinformation och -plats (land)." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "Uppdatera information med GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "Hämta databasen med GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "Schemalägg månadsvis uppdatering av databasen med GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "Hämtning av databasen med GeoIP schemaläggs till 2 dagar efter första tisdagen i månaden." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "Detta alternativ hämtar även databasen när den lokala storleken är mindre än 1k (vilket i regel betyder att minidatabasen som bifogats tillägget finns kvar)." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "Komplettera GeoIP efter uppdatering av databasen med GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "Uppdaterar GeoIP-data som saknas när en ny databas hämtats." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "Landskod för privata IP-adresser" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "Den internationella standarden med två bokstäver (t.ex. US = USA, CA = Kanada, etc.) för privata (icke-routningsbara) IP-adresser (t.ex. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Använd "000" (tre nollor) för att ange "okänd" landskod." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "GeoIP-insamlingen är inaktiverad på grund av följande skäl:" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "GeoIP-insamling kräver PHP %s eller senare, den är just nu avstängd på grund av att den installerade PHP versionen är för gammal" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "GeoIP insamling behöver tillägget cURL i PHP vilket saknas i din version av PHP!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "GeoIP insamling behöver tillägget BC Math i PHP vilket saknas i din version av PHP!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "PHP \"säkert läge\" detekterat! GeoIP insamling saknar stöd för aktiverat \"säkert läge\" i PHP." + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "Denna funktion tar dagligen bort data från databasen permanent, är du säker på att du vill det?" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "Dagar" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "Antalet dagar att samla statistik för, minst 30 dagar. Ogiltigt antal kopplar bort det dagliga underhållet." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "Gemensamma rapportalternativ" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "E-postadresser" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "En kommaseparerad lista med e-postadresser att skicka rapporterna till." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "Uppdateringsrapporter" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "Browscap" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "Rapporterar när browscap.ini har uppdaterats." + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "Rapporterar när databasen för GeoIP har uppdaterats." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "Rensning" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "Rapporterar när databasen har rensats." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "Uppgradering" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "Rapporterar när tillägget WP Statistics har uppgraderats." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "Statistikrapportering" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "Schema" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "Välj hur ofta du vill ha statistikrapporter." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "Skicka via" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "E-post" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "Välj hur statistikrapporterna ska skickas." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "Obs! För att skicka via SMS behöver tillägget %s vara installerat." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "WordPress SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "Rapportens innehåll" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "Välj ut vad som ska rapporteras." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "Använd \"shortcode\" som stöds i WordPress för att ange innehållet. Se i administrationsmanualen för WP Statistics vilka koder som kan användas. Här följer ett par exempel:" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "Uppkopplade användare" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "Besökare idag" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "Besök idag" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "Besökare igår" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "Besök igår" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "Besökare totalt" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "Besök totalt" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "Tomt" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "Om" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "Panel" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "Följande övergripande alternativ gäller alla användare." + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "Inga \"widgets\" på panelen" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "Inaktivera alla eventuella panel-widgets." + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "Redigering av sidor/inlägg" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "Inga redigerings-widget" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "Inaktivera eventuellt redigerings-widget." + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "Google" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "Ta bort karta" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "Inga kartor visas" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "Radering av data och inställningar för WP Statistics" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "När tillägget WP Statistics avinstalleras raderas inte dess data och inställningar, använd det här alternativet för att radera all data före avinstallation av tillägget." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "Inställningarna raderas när det här alternativet väljs, men WP Statistics kommer att finnas kvar på administrationsmenyn tills dess nästa sida laddas." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "Radera data och inställningar" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "Radera" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "Raderar all data och alla inställningar, åtgärden kan inte ångras." + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "Generellt" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "Meddelanden" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "Översiktspanel" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "Underhåll" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "Radering" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "Uppdatering" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "Varje vecka" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "Varannan vecka" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "Var fjärde vecka" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "Statistik" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "Visa sajtens statistik i sidopanelen." + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "Totalt antal sidvisningar" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "Totalt antal inlägg" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "Totalt antal sidor" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "Totalt antal kommentarer" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "Totalt antal spammar" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "Totalt antal användare" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "Genomsnittligt antal inlägg" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "Genomsnittligt antal kommentarer" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "Genomsnittligt antal användare" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "Senaste inläggsdatum" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "Namn" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "Enheter" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "Besök igår" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "Välj sökmotor" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "WP Statistik har tagits bort, var vänlig inaktivera och radera det." + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "WP Statistics" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "Komplett statistik för din Wordpress-sajt." + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "Inställningar" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "Klicka här för att besöka tillägget hos WordPress.org" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "Besök sidan WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "Klicka här för att betygsätta och recensera detta tillägg hos WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "Betygsätt detta tillägg" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "WP Statistics - träffar" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "Översikt" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "Uppkopplingar" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "Länkreferenser" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "Sökningar" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "Sökord" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "Besökartopp idag" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "Optimering" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "Manual" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "Sajt" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "Alternativ" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "Besökare idag" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "Besök idag" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "Besökare igår" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "Visa statistik" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "Hämta ODF-fil" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "Hämta HTML-fil" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "Manualfilen hittades inte." + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "Du har inte behörighet för åtkomst till den här sidan." + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "WP Statistics %s installerad på" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "Fel vid hämtning av databasen för GeoIP från:%s - %s" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "Fel, kunde inte öppna hämtad databas för GeoIP för läsning: %s" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "Fel, kunde inte öppna destinationsdatabas för GeoIP för att skriva %s" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "Databasen för GeoIP har uppdaterats!" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "Uppdatering av GeoIP pågår" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "Fel vid hämtning av databasen för browscap från: %s - %s" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "Databasen för browscap har uppdaterats!" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "Uppdateringen av databasen för browscap misslyckades! Cache-filen är för stor, återgår till föregående Browscap.ini." + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "Uppdateringen av databasen för browscap misslyckades! Den nya browscap.ini-filen misstolkar användaragenter som sökrobotar, återgår till föregående browscap.ini." + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "browscap har redan den senaste versionen!" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "Uppdatering av browscap.ini pågår" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "Snabbstatistik" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "Webbläsarnas 10 i topp" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "Länders 10 i topp" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "Dagens besökskarta" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "Träffstatistik" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "Mest besökta sidor" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "Senaste besökarna" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "Länkkällornas 10 i topp" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "Sökmotorlänkningar" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "Sammanfattning" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "Senaste sökorden" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "Besökarnas 10 i topp idag" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "Detta inlägg är ännu inte publicerat." + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "Det gick inte att läsa in databasen för GeoIP, se till att du har hämtat den på inställningssidan." + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "Uppdaterat %s GeoIP poster i besökardatabasen." + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "%s data äldre än %s dagar har städats bort." + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "Inga dataposter att städa bort från %s!" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "Databasrensning pågår" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "Var vänlig välj minst 30 dagar." + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "Webbläsarstatistik" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "Klicka för att växla" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "Webbläsare" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "Typer av webbläsare" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "Plattform" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "Plattformar för webbläsare" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "%s-versioner" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "Lystring: Uteslutning är för närvarande inte inställd för att lagras, resultatet nedan kanske inte återger aktuell statistik!" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "Uteslutningsstatistik" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "10 dagar" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "20 dagar" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "30 dagar" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "2 månader" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "3 månader" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "6 månader" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "9 månader" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "1 år" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "Statistik över uteslutningar" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "Uteslutna träffar under de senaste" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "dagarna" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "Antal uteslutna träffar" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "Statistik över träffar" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "Träffar under de senaste" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "Antal besök och besökare" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "Besök" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "Besökare" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "Statistik över senaste sökorden" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "#hash#" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "Karta" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "Sida" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "Från" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "Allt" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "Senaste besökarna" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "Uppkopplade användare" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "Uppkopplingstid " + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "Sidtrend för Post-ID" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "Sidtrend" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "Sökmotorlänkningar" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "Sökmotorlänkningar under de senaste" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "Antal länkningar" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "Totalt" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "Topplacerade länder" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "Rankning" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "Flagga" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "Land" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "Antal besökare" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "Mest besökta sidor" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "5 sidor i topptrend" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "5 sidor i topptrend under de senaste 20 dagarna" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "Antal träffar" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "Sidtiteln saknas" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "Besök" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "Kommer att läggas till snart" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "Länkande webbplatser från" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "Länkningar" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "Besökarnas 100 i topp idag" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "Om WP Statistics version %s" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "Webbsajten" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "Betyg och recension" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "Mer information" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "Denna produkt använder data från GeoLite2 skapat av MaxMind, tillgängligt från %s." + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "Annat" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "Karta över dagens besökare" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "Adress" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "Uppkopplingar" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "Idag" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "Igår" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "Dagstotal" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "Nuvarande datum och tid" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "(Inställning)" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "Datum:%s" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "Tid:%s" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "Träffar" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "IP" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "Agent" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "Version" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "Åtkomst nekad!" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "%s agentdata har raderats." + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "Ingen agentdata finns att ta bort!" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "Välj önskade alternativ" + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "%s plattformsdata har raderats." + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "Ingen plattformsdata finns att ta bort!" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "%s tabelldata har raderats." + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "Fel, %s inte tömd!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "Databasstruktur" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "Gör om installationen" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "Installera nu!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "Om installationen av WP Statistics råkar sakna någon databastabell eller komponent, kan detta användas för att upprepa installationen." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "Databasindex" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "Länder" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "Uppdatera nu!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "I äldre installationer av WP Statistics kan dubbletter i besökartabellen uppstå. Nyare installationer har skydd mot detta med hjälp av unika index. För att skapa index på en äldre installation måste dubbletterna raderas. Klicka på \"Uppdatera nu\" för att granska besökartabellen, radera dubbletter och skapa index." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "Operationen kan ta lång tid om det finns många rader i besökartabellen." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "I äldre installationer av WP Statistics kan dubbletter i besökartabellen uppstå. Nyare installationer har skydd mot detta med hjälp av unika index." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "Grattis, din installation är redan sjyst, ingen åtgärd behövs." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "Exportera" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "Exportera från" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "Vänligen välj" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "Välj tabell som ska exporteras" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "Exportera till" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "Välj formattyp för datafilen som skapas." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "Inkludera rubrikrad" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "Placerar en rubrikrad överst i den skapade datafilen." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "Börja nu!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "Historikvärden" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "Obs! Om du nyligen har städat i databasen måste du ladda om denna sida för att dessa värden ska bli korrekta." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "Besökare" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "Antal webbplatsbesökare i historiken (nuvarande antal är %s)." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "Antal webbplatsbesök i historiken (nuvarande antal är %s)." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "Uppdatera nu!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "Är du säker på det?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "Data" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "Töm tabell" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "Allt data försvinner." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "Radera nu!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "Städa bort uppgifter äldre än" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "Raderar användarstatistik som är äldre än det valda antalet dagar. Minst 30 dagar." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "Städa nu!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "Radera agenter" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "Radera användaragent" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "All besökardata med denna agent kommer försvinna." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "Radera nu!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "Radera plattformsagenter" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "All besökardata med denna plattform kommer försvinna." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "Resurser" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "Minnesanvändning för PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "Byte" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "Minnesgräns för PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "Över minnesgräns att användas för skript, angivet i php.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "Antal rader i tabellen %s" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "Rad(er)" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "Antal rader" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "Versionsinformation" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "WP Statistics version" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "Den version av WP Statistics som nu används." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "PHP-version" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "Den PHP-version som nu används." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "PHP säkerhetsläge" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "Rutinerna för GeoIP saknar stöd för säkerhetsläget i PHP." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "jQuery-version" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "JQuery-versionen som nu används." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "cURL-version" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "cURL ej installerat" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "Den version av PHP-tillägget cURL som nu används. cURL är nödvändig för GeoIP-koden, utan den inaktiveras GeoIP." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "Installerad" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "Ej installerad" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "Filinformation" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "Databasen för GeoIP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "Databasfilen saknas." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr ", skapade av" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "Filstorlek och datum för GeoIP-databasen." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "Filen browscap.ini" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "Filen browscap.ini saknas." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "Storlek och datum för filen browscap.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "Cache-fil för browscap" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "Cache-filen för browscap saknas." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "Storlek och datum för cache-filen för browscap." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "Klientinformation" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "Klientens IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "Användarens IP-adress." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "Användaragent" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "Klientens användaragentsträng." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "Webbläsare" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "Detekterad klientwebbläsaren." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "Detekterad version på klientwebbläsaren" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "Detekterad klientplattform." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "Detta ersätter alla IP-adresser i databasen med hash-värden och kommer inte att kunna inte återställas, är du säker på att du vill det?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "Alternativ för GeoIP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "Uppdaterar alla okända lokaliseringsuppgifter i databasen, vilket kan ta en stund" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "IP-adresser" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "Hashade IP-adresser" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "Byter IP-adresserna i databasen till hashade värden, det blir inte möjligt att återställa IP-adresserna framöver för att återskapa platsinformationen och bytet kommer att ta en stund" + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "IP-adresserna har ersatts med hashade värden." + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "Installationen är klar." + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "Resurser/information" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "Städning" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "Databas" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "Uppdateringar" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "Historik" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "WP Statistics V%s" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "Besök vår webbsajt" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "Besök vår fantastiska nya %s och hålla dig uppdaterad om senaste nytt från WP Statistics." + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "webbsajt" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "Betyg och recensioner hos WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "Tack för installeringen av WP Statistics, vi ber dig att skicka in en" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "betygsättning och recension" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "på WordPress.org. Ditt gensvar uppskattas mycket!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "Översättningar" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "WP Statistics vill gynna internationalisering och uppmuntrar våra användare att bidra med översättningar, besök vår %s för att se nuvarande status och %s om du vill hjälpa till." + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "sajt för översättningssamarbete" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "hör av dig" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "Support" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "Vi beklagar att du ska ha problem med WP Statistics och vi är glada att hjälpa till. Här är några saker att göra innan du kontaktar oss:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "Har du läst %s?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "Vanliga frågor" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "manual" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "Har du sökt efter %s för ett liknande problem?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "supportforum" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "Har du sökt på internet efter eventuella felmeddelanden du fått?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "Kontrollera att du har åtkomst till felloggar för PHP." + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "Och ett par saker att dubbelkolla:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "Vilken minnesbegränsning anges i php.ini?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "Har du provat att inaktivera något annat installerat tillägg?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "Har du försökt att använda defaulttemat från WordPress?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "Har du dubbelcheckat tilläggets inställningar?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "Har du alla nödvändiga PHP-tillägg installerade?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "Visas en blank eller ofullständig sida i din webbläsare? Tog du reda på varifrån sidan hämtades och checkade om det fanns fatala fel?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "Har du kollat felloggarna för PHP och webbservern?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "Går det fortfarande åt pipan?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "I så fall ber vi dig öppna en ny tråd på %s, vi försöker svara så fort som möjligt." + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "WordPress.org supportforum" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "Alternativt finns även %s support." + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "Farsi" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr " Honey Pot-sidan från WP Statistics" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "Detta är en \"syltburk\" som WP Statistics använder, ta inte bort den." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "Åtkomstnivåer" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "Nödvändig användarnivå för att se statistiken" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "Nödvändig användarnivå för att administrera WP Statistics" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "Detaljer för kravnivåerna finns på %s." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "WordPress Roles and Capabilities page" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "Förtydligande: manage_network motsvarar Superadministratör, manage_options motsvarar Administratör, edit_others_posts motsvarar Redaktör, publish_posts motsvarar Författare, edit_posts motsvarar Medarbetare, read motsvarar Alla." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "Uppräkningen är prioritetsordnad uppifrån och ner. Exempelvis omfattar alternativet publish_posts följande: Författare, Redaktörer, Administratörer och Superadministratörer." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "Om du behöver en mer genomgripande lösning för att delegera åtkomst kanske du är hjälpt av %s i Tilläggskatalogen för WordPress." + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "Uteslutningar" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "Registrera uteslutningar" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "Lägg till" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "Alla träffar som utesluts registreras i en separat tabell tillsammans med orsaken till uteslutningen, enbart. Det blir mycket data men är användbart om det finns behov av att se det totala antalet träffar på webbplatsen, inte enbart normala besök." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "Uteslutna användarroller" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "Uteslut" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "Uteslut rollen %s från statistiken." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "Uteslutna IP-adresser och robotar" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "Robotlista" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "En lista med uttryck (ett per rad) att matcha mot för att upptäcka robotar. Varje uttryck måste vara minst 4 tecken långt för att inte ignoreras." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "Återställ till default" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "Genomför uppdatering av robotlistan vid uppgradering" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "Robotlistan återställs till default vid uppgradering av WP Statistics. Notera att egna uttryck tas bort ur robotlistan om det här alternativet är aktiverat." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "Tröskel för robotbesök" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "Betrakta besökare med fler besök per dag som robotar. 0 = aldrig." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "Uteslutna IP-adresser" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "Lägg till 10.0.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "Lägg till 172.16.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "Lägg till 192.168.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "Använd en Honey Pot" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "Använd en Honey Pot-sida (motsvarar en syltburk som man gärna smakarav) för att identifiera robotar." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "Id för Honey Pot-inlägget" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "ID-koden för inlägget som används av syltburk-sidan." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "Skapa en ny Honey Pot-sida" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "Uteslutningar för GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "Lista med uteslutna länder" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "En lista över landskoder (en per rad, två bokstäver i varje) att utesluta från statistikinsamling. Använd \"000\" (tre nollor) för att utesluta okända länder." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "Lista med inkluderade länder" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "En lista över landskoder (ett per rad, två bokstäver vardera) att inkluderas i statistikinsamlingen. Om listan inte är tom registreras endast besökare från de inkluderade länderna. Använd \"000\" (tre nollor) för att utesluta okända länder." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "Uteslutna värddatorer " + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "Lista över uteslutna värddatorer" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "En lista över kompletta värddatornamn (t.ex. server.example.com, en per rad) att utesluta från statistikinsamlingen." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "Obs! Detta alternativ gör ingen omvänd DNS-sökning vid varje sidladdning utan cachar IP-adressen för listat värddatornamn under en timme. Om dynamiskt tilldelade värdar utesluts uppträder en viss grad av överlappning när värden ändrar IP-adressen och när cachen uppdateras, vilket resulterar i ytterligare några registrerade träffar." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "Uteslutna webbadresser" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "Uteslut inloggningssidan" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "Uteslut inloggningssidan från att registreras som en träff." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "Uteslut administrationssidor" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "Uteslut administrationssidor från att registreras som träff." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "Uteslut RSS feed" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "Uteslut RSS-feeds från att registreras som träff." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "Inställningar för browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "Användning av browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "Aktiv" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "Databasen för browscap hämtas och används för att upptäcka robotar." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "Uppdatera information för browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "Hämta Databasen för browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "Spara ändringar på denna sida för att hämta uppdateringen." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "Schemalägg veckovis uppdatering av databasen för browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "Nästa uppdatering kommer att vara" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "Nedladdningen av browscap databas kommer att planeras till en gång i veckan." + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "Detta kommer att ta bort den manuella när du sparar inställningarna, är du säker?" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "Den här funktionen kommer inte att lagra IP-adresser i databasen utan använde en unik hash. Den "Lagra hela user agent string" inställningen inaktiveras om detta är valt. Du kommer inte att kunna återställa IP-adresserna i framtiden att återvinna platsinformation om det är aktiverat." + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "Uppkopplingar" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "Uppkopplade användare" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-tr_TR.mo b/plugins/wp-statistics/languages/wp_statistics-tr_TR.mo new file mode 100644 index 0000000..365c3ca Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-tr_TR.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-tr_TR.po b/plugins/wp-statistics/languages/wp_statistics-tr_TR.po new file mode 100644 index 0000000..815c56d --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-tr_TR.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in Turkish +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2015-01-23 13:09:33+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: tr\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "" + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "" + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "" + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "" + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "" + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "" + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "" + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "" + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "" + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "Geçerli veya Geçersiz Kılma" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "Anlık Kullanıcıyı Kontrol Et" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "Saniye" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "Sitedeki Anlık Kullanıcıyı Kontrol Zamanı. Varsayılan: %s Saniye" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "Kullanıcı Giriş Bilgisini Kaydet" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "Ayıklama Yöntemini Geçerli Yap" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "Ziyaretci Katsayısı" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "Muhtelif ziyaretleri olan kayıtlı üyeler. ŞuAnda %s." + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "Sayfalar" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "Tüm sayfaları izlemek" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "Mesaj/sayfa listesinde sütun sayısı devre dışı bırakma" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "Çeşitli" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "İstatistikleri Menü Çubuğunda Göster" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "Hayır" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "Evet" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "İstatistikleri yönetici menü çubuğunda göster" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "Aktif olmayan özellikler hakkındaki yönetici notlarını Gizle." + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "Her Yönetici sayfasında herhangi bir çekirdek özelliği devre dışı bırakılmışsa, varsayılan WP Statistics uyarı görüntüler, bu seçenek, bu gibi bildirimleri devre dışı bırakır." + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "Kılavuz Sil" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "Varsayılan admin WP Statistics depolar manuel plugin dizinine (~ 5 meg), bu seçenek etkinse, şimdi ve gelecekte yükseltmeler sırasında silinecektir." + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "Bütün Arama Motorları Geçersiz Kılınamaz. Bunu yapmak Bütün Arama Motorlarını Aktifleştirecektir." + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "geçersiz" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "Data koleksiyonundan ve raporlamadan %s Geçersiz Kılınsın." + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "Tablolar" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "Toplam İçerik" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "Arama Motorları Referansları gibi, Çoklu Verilerle Kartlara Bir Toplam Satırı Ekle" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "IP Coğrafyası Kurgusu" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "GeoLite2 veri MaxMind, %s üzerinden kullanılabilir tarafından oluşturulan tarafından sağlanan IP konum servisleri." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "IP Coğrafyası Koleksiyonu" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "Ziyaret ve Yer Bilgisi Hakkında Geniş Bilgi İçin Aktif Yapın." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "IP Coğrafyası Bilgisi Güncelleme" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "IP Coğrafyası Bilgisini İndir" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "Aylık Olarak IP Coğrafyası Bilgilerini Güncelle" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "Her Ayın İlk Çarşambasından Sonra 2 Gün IP Coğrafyası Bilgisini İndir" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "1k Altındaki Bilgileri İndirme Seçeneği" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "Kayıp IP Coğrafyası Bilgilerini Güncelleme Sonunda Doldur" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "Kayıp IP Coğrafyası Bilgilerini Yeni Bilgilerle Güncelle." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "GeoIP koleksiyonu şu sebepler yüzünden geçersiz kılındı:" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "IP Coğrafyası Koleksiyonu için %s veya Daha Üzeri PHP Versiyonu Gerekir." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "GeoIP Koleksiyonu, cURL PHP Eklentisini gerektirir ve bu PHP versiyonunuzda yüklenmemiştir." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "GeoIP Koleksiyonu, BC Math (Toplama) PHP Eklentisini gerektirir ve bu PHP versiyonunuzda yüklenmemiştir." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "PHP Güvenli Modu belirlendi! Güvenli PHP Modu geçerli kılındığında GeoIP Koleksiyonu desteklenmek." + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "Günlük Olarak Bütün Bilgiler Silinecek, Aktif Hale Getirmeye Hazır mısınız?" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "Gün" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "İstatistik Tutulacak Gün Sayısı. EnAz Değer 30 Gün Olmalıdır." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "E-posta adresleri" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "IP Coğrafyası" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "İstatistiki Raporlama" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "Zamanlama" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "Raporlar yoluyla göndermek" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "EPosta" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "Not: Göndermek SMS metin mesajları lütfen %s eklentisi yüklemek için." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "WordPress SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "Rapor gövdesi" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "WordPress kurgunuz tarafından desteklenen kısakodlar ve WP İstatistik için kullanılan bütün kısakodları da desteklemektedir. Bu konudaki örnekler için bakınız:" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "ŞuAnda Kullanıcı" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "Bugünkü Ziyaretciler" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "Bugünkü Ziyaret" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "Dünkü Ziyaretci" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "Dünkü Ziyaret" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "Toplam Ziyaretci" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "Toplam Ziyaret" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "Hiçbiri" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "Hakkında" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "" + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "Google" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "Harita Geçersiz" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "Harita Görüntülemesi Geçersiz" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "WP İstatistik Kaldırma" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "WP İstatistik eklentisini kaldırmanız, veri ve kurguları kaldırmaz. Verileri ve kurguları da kaldırmak istiyorsanız, eklentiyi kaldırmadan önce bu seçeneği aktif hale getiriniz." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "Bu formu bir kez girerseniz, sayfanın yenilenmesi ile birlikte kurgular silinecektir. Nitekim, WP İstatistik kaldırılıncaya kadar AnaYönetim sayfanızdaki menüde göreceksiniz." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "Verileri ve kurguyu da temizle" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "Sil Kaldır" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "Veri ve kurgunun silinmesi işlemi geri alınamaz." + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "Genel" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "Bakım" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "Kaldırma işlemi" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "Güncelle" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "Bir kez haftalık" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "Bir kez her 2 hafta" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "4 haftada bir kez" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "İstatistikler" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "Site istatistikleri kenar çubuğunda göster." + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "Sayfa Görülme Toplamı" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "Toplam Postalar" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "Toplam Sayfalar" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "Toplam Yorumlar" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "Toplam Gereksizler" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "Toplam Kullanıcı" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "Ortalama Posta Sayısı" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "Ortalama Yorum Sayısı" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "Ortalama Kullanıcı Sayısı" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "Son Posta Tarihi" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "İsim" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "Ürünler" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "Dünkü Ziyaret" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "Arama motoru türü seçin" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "WP İstatistik silinip kaldırıldı, eklentiyi pasif hale getirip siliniz." + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "WP Statistics" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "WordPress site tam istatistikleri." + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "Ayarlar" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "Eklenti WordPress.org ziyaret etmek için tıklayın" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "WordPress.org sayfasını ziyaret edin" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "Oranı ve bu eklenti WordPress.org üzerinde incelemek için tıklayınız" + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "Bu eklenti oranı" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "WP Statisticsleri - Hits" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "Genel Bakış" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "Aramalar" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "Arama Kelimeleri" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "İyileştirme" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "Manuel" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "Bugünkü Ziyaretciler" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "Bugünkü Ziyaretler" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "Dünkü Ziyaretci" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "İstatistiklere Bak" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "ODF Dosyası indir" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "HTML Dosyası indir" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "Manuel Dosya bulunmadı." + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "Bu sayfaya girme yetkiniz yok." + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "GeoIP veritabanı yükleme hatası: %s - %s" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "Alınan IP Coğrafyası Bilgisi Açılamadı: %s" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "Hedef IP Coğrafyası Bilgisi Yazılamadı %s" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "IP Coğrafyası Bilgisi Başarıyla Güncellendi!" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "Browscap veritabanından yükleme hatası: %s - %s" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "browscap veritabanı başarıyla güncelleştirildi." + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "Geçerli sürüm de zaten Browscap!" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "10 top tarayıcılar" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "EnÇok 10 Ülke" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "Sayfa Ziyaret İstatistikleri" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "En iyi 10 sayfaları" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "Son Ziyaretciler" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "Üst yönlendiren siteler" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "Arama Motoru Referansları" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "Özet" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "En son arama kelimeleri" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "" + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "GeoIP bilgilerinin yüklenmemiş, Kurgu sayfanızda yüklenmiş olduğundan emin olun." + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "%s IP Coğrafyası Bilgisi Ziyaretci Kayıtlarında Güncellendi." + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "%s veri başarıyla temizlendi %s günden daha eski." + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "Kayıt %s öğesinden temizlemek için bulunamadı!" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "Lütfen 30 Gün Üzerinde Bir Değer Seçin." + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "Tarayıcı İstatistikleri" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "Geçiş yapmak için tıklayın" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "Tarayıcılar" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "Tarayıcı türüne göre" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "Platform" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "Tarayıcı platformu tarafından" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "%s Sürümü" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "Dikkat: İstisnalar henüz belirlenmedi ve sonuçlar mevcut istatistiklere yansımayabilir!" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "İstatistik İstisnaları" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "10 Günlük" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "20 Günlük" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "30 Günlük" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "2 Aylık" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "3 Aylık" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "6 Aylık" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "9 Aylık" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "1 Yıllık" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "İstisnalar Tablosu" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "Sayısı son hariç" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "gün" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "İstisna Ziyaret Sayı" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "Sayısı istatistiklerini grafik" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "Son hits" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "Ziyaret ve Ziyaretci Sayıları" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "Ziyaretler" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "Ziyaretci" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "En son arama Word istatistik" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "#hash #" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "Harita" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "Sayfa" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "/" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "Hepsi" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "Son ziyaretçi istatistikleri" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "Sayfa eğilim için posta ID" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "Sayfa Trend" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "Arama motoru başvuru istatistikleri" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "Son arama motoru tavsiyeler" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "Başvuru sayısı" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "Toplam" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "Başlıca Ülkeler" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "Sıralama" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "Bayrak" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "Ülke" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "Ziyaretci Sayısı" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "EnFaz Ziyaret Edilen Sayfalar" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "EnFazla Ziyaret Edilen 5 Sayfanın İndeksi" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "EnFazla Ziyaret Edilen 5 Sayfanın Verileri" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "Ziyaret Sayısı" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "Sayfa Başlığı bulunmadı" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "Ziyaretler" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "Yakında Eklenecekler" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "Referans Verenler" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "Referanslar" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "WP Statistics sürüm %s hakkında" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "Web sitesi" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "Oranı ve inceleme" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "Daha fazla bilgi" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "Bu ürün, MaxMind, %s üzerinden kullanılabilir tarafından oluşturulan GeoLite2 verileri içerir." + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "Diğer" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "Bugün Ziyaretçi Haritası" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "Adres" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "Üye Online" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "Bugünkü" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "Dünkü" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "Günlük Toplam" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "Güncel Zaman ve Tarih" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "(Kurgu)" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "Tarih: %s" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "Süre: %s" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "Ziyaretler" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "Versiyon" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "Giriş Yasak!" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "%s Aracısı verileri başarıyla silindi." + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "Kaldırılacak herhangi bir giriş bilgisi yok!" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "İstediklerinizi Seçin." + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "%s platformu verileri başarıyla silindi." + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "Kaldırılacak herhangi bir platform bilgisi yok!" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "%s tablo verileri başarıyla silindi." + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "Hata, %s Bilgi Var!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "Veritabanı Kurulumu" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "Yüklemeyi yeniden çalıştırması" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "Şimdi yükleyin!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "Nedense WP Statistics yüklemesini veritabanı tablo veya diğer temel öğeleri eksikse, bu yükleme işlemini yeniden çalıştırır." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "Veritabanı dizini" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "Ülkeler" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "Şimdi Güncelle" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "WP Statistics büyük yükler gibi bir köşe halinde ziyaretçi tablodaki yinelenen girişleri sağlar. Daha yeni yükler tablo üzerinde benzersiz dizin ile buna karşı korumak. Dizin üzerinde büyük yükler yinelenen girdileri oluşturmak için ilk önce silinmelidir. \"Update Now tıklatarak\" vistitors tablo tarar, yinelenen kayıtları silmek ve dizin ekleyin." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "Bu işlem yükler ziyaretçi tablosunda birçok satır içeren üzerinde uzun zaman alabilir." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "WP Statistics büyük yükler gibi bir köşe halinde ziyaretçi tablodaki yinelenen girişleri sağlar. Daha yeni yükler tablo üzerinde benzersiz dizin ile buna karşı korumak." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "Tebrikler, yüklemenizin zaten tarihine kadar hiçbir durumda." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "Dışarı Verme" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "Dışarı aktarılacak veriler" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "Lütfen seçin" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "İstenen Tabloyu Seçiniz" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "Dışarı aktarma dosya türü" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "Dışarı Çıkarılacak Dosya" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "Başlık Satırı Dahil" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "Dışa aktarılan dosyanın ilk satırı Başlık bilgisidir." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "Şimde Başla" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "Geçmiş Değerler" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "Not: Data temizliğini yeni yaptınız, sayfayı yenilerseniz verileri doğru görürsünüz." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "Ziyaretciler" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "Geçmiş site ziyaretçileri sayısı (Mevcut değer %s)." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "Geçmiş site ziyaretleri sayısı (Mevcut değer %s)." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "Şimdi Güncelle!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "Emin misiniz?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "Bilgi" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "Boşaltılacak Tablo" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "Bütün bilgiler kaybedilecek." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "Şimdi Temizle" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "Kalacak veriler" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "Belirlenen gün sayısından daha eskiler silinecek. EnAz Değer 30 Gündür." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "Şimdi Temizle" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "Kullanıcı Girişlerini Temizle" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "Girişleri Sil" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "Belirlenen ziyaret girişleri silinecek." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "Şimdi Sil" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "Platformu Sil" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "Girilen ziyaret platformları silinecek." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "Kaynaklar" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "PHP Hafıza Kullanımı" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "Bayt" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "PHP bellek limiti" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "Bir komut dosyası bellek sınırı tüketmek, php.ini içinde ayarlamak için izin verilir." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "%S tablodaki satırların sayısı" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "Satır" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "Satır Sayısı" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "Versiyon Bilgisi" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "WP İstatistik Versiyonu" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "WP İstatistik Versiyonunu Kullanıyorsunuz." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "PHP Versiyonu" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "PHP Versiyonunu Kullanıyorsunuz." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "PHP Güvenli Mod" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "PHP Güvenli Mod aktif mi? GeoIP kodu Güvenli Modda desteklenmez. " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "JQuery Sorgusu Versiyonu" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "JQuery Sorgusu Versiyonunu Kullanıyorsunuz." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "cURL Versiyon" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "cURL yüklenmedi." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "PHP cURL Eklenti versiyonu çalışıyor. cURL, GeoIP kodu için gereklidir. Eğer cURL yüklenmemişse, GeoIP geçersiz olacaktır." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "Yüklendi" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "Yüklenmedi" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "Dosya bilgileri" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "GeoIP veritabanı" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "Database dosyası yok." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr ", Tarihinde yaratılmıştır " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "Tarih GeoIP veritabanı ve dosya boyutu." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "Browscap.ini dosyası" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "Browscap.ini dosyası yok." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "Browscap.ini dosyasının tarihini ve dosya boyutu." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "Browscap önbellek dosyası" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "Browscap önbellek dosyası yok." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "Dosya boyutu ve Tarih browscap önbellek dosyası." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "Kullanıcı Bilgisi" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "Kullanıcı IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "Kullanıcı IP Adresi" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "Kullanıcı Yöntemi" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "Kullanıcı Yöntem Dizini" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "Tarayıcı" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "Belirlenen Tarayıcı" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "Belirlenen tarayıcı versiyonu" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "Belirlenen kullanıcı platformu" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "Bu veritabanındaki tüm IP adresleri karma değerleri ile değiştirir ve geri alma, sen olamaz mı?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "IP Coğrafyası Seçenekleri" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "Herhangi bir bilinmeyen konum verileri güncelleştirir veritabanı, bu biraz zaman alabilir" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "IP adresleri" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "Karma IP adresleri" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "IP adresleri veritabanındaki karma değerleriyle değiştirin gelecekte konum bilgileri daha sonra doldurmak için IP adreslerini kurtarmak mümkün olmayacaktır ve bu biraz zaman alabilir" + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "IP adresleri karma değerleri ile değiştirilir." + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "Rutin tam yükleyin." + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "Kaynaklar / Bilgiler" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "Temizleme" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "Veritabanı" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "Güncelleme" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "Geçmiş" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "WP Statistics V %s" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "Bize Online ziyaret" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "Gel bizim büyük yeni %s ziyaret ve WP Statisticsleri hakkında en son haberleri güncel tutun." + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "Web sitesi" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "WordPress.org gözden geçirin ve oranı" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "WP Statistics kurulumu için teşekkür ederiz, biz teşvik göndermek için size bir " + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "değerlendirme ve gözden geçirme" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "WordPress.org üzerinden. Görüşlerinizi büyük beğeni topluyor!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "Çeviriler" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "Uluslararası duruma getirme WP Statisticslerini destekler ve çevirileri gönderin, lütfen yardım ederseniz geçerli durumu görmek için bizim %s ve %s ziyaret bizim kullanıcı öneririz." + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "Çeviri işbirliği sitesi" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "bize yazın" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "Destek" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "WP Statisticsleri ile sorun yaşıyorsanız ve biz yardımcı olmaktan mutluluk özür dileriz. Bize başvurmadan önce yapmak için bir kaç şey vardır:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "%S okudun mu?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "Sıkça sorulan sorular" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "El ile" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "Arama %s için benzer bir sorun var mı?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "Destek Forumu" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "Herhangi bir hata iletisi aldığınız için internette arama var mı?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "PHP hata kayıtlarına erişiminiz olduğundan emin olun." + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "Ve tekrar kontrol için bir kaç şey:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "Senin php.ini memory_limit nasıl?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "Yüklemiş olabilecek diğer tüm eklentileri devre dışı bırakmayı denediniz mi?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "Varsayılan WordPress Tema kullanarak denediniz mi?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "Çift eklenti ayarları kontrol ettiniz mi?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "Yüklü tüm gerekli PHP eklentileri var mı?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "Eğer tarayıcınızda görüntülenen boş ya da tamamlanmamış bir sayfa alıyorsunuz? Sayfanın kaynağını görüntüleyin yaptım ve herhangi bir ölümcül hata olup olmadığını denetleyin." + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "PHP ve web sunucusu hata günlükleri kontrol ettiniz mi?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "Hala herhangi bir şans sahip değil mi?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "O zaman lütfen %s üzerinde yeni bir konu açmak ve en kısa zamanda cevap veririz." + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "WordPress.org destek forumu" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "Alternatif olarak %s desteği de verilmektedir." + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "Farsca" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "Giriş Seviyeleri" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "WP İstatistiklerini Görme Yetkisi" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "WP İstatistiklerini Yönetme Yetkisi" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "Ayrıntılar için %s üzerinde yetenek düzeylerini görmek." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "WordPress rolleri ve özellikleri sayfası" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "Not: manage_network = Tam Yetkili, manage_options = Yetkili, edit_others_posts = Editör, publish_posts = Yazar, edit_posts = Destekleyen, read = Herkes." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "Temel Kurgu Yukarıdaki Gibidir. Buna Göre Yetkileri Belirleyiniz." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "Daha Sağlıklı Bilgiler İçin Eklenti Dizinine Bakınız : %s " + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "İstisnalar" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "Kayıt istisnalar" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "Geçerli Kıl" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "İstisna Ziyaretleriniz Ayrı Bir Tabloya Kaydedilecektir. Verileriniz Büyüyebilir Fakat Ziyaretlerinizi Görmek Açısından Faydalı Olabilir." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "İstisna Kullanıcı Durumu" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "İstisna Yap" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "%s Durumunu İstisna Yap." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "IP/Robot İstisnaları" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "Robot listesi" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "Robot Aramalarına Karşı Kullanılacak Kelimeler Listesi. EnAz 4 Karakterlik Kelimeler Girmelisiniz." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "Temel Kurguya Dön" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "Kuvvet robot liste güncelleme yükseltme sonra" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "Kuvvet WP Statisticsleri güncelleştirme sonra varsayılana sıfırlamak için robot listesi yer alır. Not Bu seçenek, herhangi bir özel etkin, listeye eklediğiniz robotlar kaybolacak." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "Dışlanan IP adres listesi" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "Ekle 10.0.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "Ekle 172.16.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "Ekle 192.168.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "Site URL İstisnaları" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "Dışlanan giriş sayfası" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "Giriş Sayfasını bir Ziyaret olarak sayma, hariç tut." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "Dışlanan yönetici sayfalar" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "Yönetici sayfalarına girişi bir Ziyaret olarak algılama, hariç tut." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "Browscap ayarları" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "Browscap kullanımı" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "Aktif" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "Browscap veritabanı indirilebilir ve robotlar tespit etmek için kullanılır." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "Browscap bilgi güncelleme" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "Browscap veritabanı indir" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "İndirilen Güncelleme Değişikliklerini Kaydet" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "Browscap DB ve haftalık güncelleme planı" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "Bir Sonraki Güncelleme Tarihi" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "Download browscap veritabanı için haftada planlanır." + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "Bu ayarları kaydettiğinizde-ecek silmek belgili tanımlık elle yapılan, emin misin?" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "Bu özellik, IP adresleri veritabanında depolamaz ancak benzersiz bir karma değeri kullanılır. \"Store tüm kullanıcı aracısı string\" ayar devre dışı bırakılır Bu seçiliyse. Gelecekte bu etkin konum bilgileri kurtarmak için IP adresleri kurtarmanız mümkün olmayacaktır." + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "Online kullanıcılar" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "Kullanıcılar online" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-uk.mo b/plugins/wp-statistics/languages/wp_statistics-uk.mo new file mode 100644 index 0000000..9dd5382 Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-uk.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-uk.po b/plugins/wp-statistics/languages/wp_statistics-uk.po new file mode 100644 index 0000000..166f751 --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-uk.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in Ukrainian +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-04-05 21:25:10+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: uk_UA\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "" + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "" + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "" + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "Увімкнено" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "" + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "ID повідомлення/сторінки для отримання статистики." + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "ID повідомлення/сторінки для статистики на сторінці. " + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "Ask.com" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "Строк отримання статистики, strtotime() (http://php.net/manual/en/datetime.formats.php) використовуватиметься для її розрахунку. Використовуйте \"total\", щоб отримати всі записані дати." + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "відстеження відвідувачів" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "Колекція geoip " + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "Індекс бази даних щодо відвідувань" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "Потрібно оновлення баз даних , перейдіть до %s і оновіть наступне: %s" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr " Індекс бази даних країн" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "Таблиця пошуку" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "сторінка налаштувань" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "," + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "Наступні функції відключені, перейдіть до %s і включіть їх:%s" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "Відстеження переглядів" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "Відстеження користувачів онлайн" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "Конвертування пошукової таблиці завершено, %d рядків додано." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "Старі програми установки WP Statistics зберігають інформацію про пошуки в таблиці відвідувачів, які можуть стати проблемою продуктивності при великих наборах даних. Нова таблиця створена, щоб тримати цю інформацію в більших масштабах." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "Пошукова таблиця" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "Конвертувати" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "Конвертувати зараз!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "Старі установки WP Statistics зберігають інформацію про пошуки в таблиці відвідувачів, які можуть стати проблемою продуктивності при великих наборах даних. Нова таблиця була створена, щоб тримати цю інформацію в більших масштабах, однак старі дані повинні треба спочатку конвертувати в новий формат перед початком використання." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "Referrer Spam" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "Завантаження бази даних Piwik Referrer Spam Blacklist заплановано один раз на тиждень." + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "Зовнішні специфікації" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "Налаштування Piwik Referrer Spam Blacklist " + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "Графік щотижневих оновлень Piwik Referrer Spam Blacklist DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "Хавантажити базу даних Piwik Referrer Spam Blacklist " + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "Оновити інформацію Piwik Referrer Spam Blacklist" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "База даних Piwik Referrer Spam Blacklist буде завантажена та буде використовуватись для виявлення спаму. " + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "Referrer spam blacklist від Piwik, доступний з %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "Використання Piwik Referrer Spam Blacklist " + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "Вважати пошкоджені дані браузера ботами" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "Сторінки 404" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "Дата" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "Вважати будь-якого відвідувача з пошкодженою інформацією браузера (без ІР адреси або пустим рядком про користувача) роботом." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "Виключені сторінки 404 " + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "Вилучити будь-який URL який повертає повідомлення \"404-не знайдено\"" + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "Помилка при створенні каталога бази даних GeoIP , переконайтеся, що ваш веб-сервер має права на створення каталогів в: %s" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "Додати заголовок сторінки до порожніх пошукових слів" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "Якщо пошукова система визначена як реферер, але вона не включає пошуковий запит, цей варіант замінить заголовок сторінки в лапках, після \"~:\" як пошуковий запит, щоб допомогти визначити, що користувач міг шукати." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "Очистити відвідувачів з більш ніж" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "переглядів" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "Видалені статистичні дані, де користувач має більш ніж певне число переглядів в день. Це може бути корисно для очищення старих даних, коли ваш сайт переглядався ботами. Це дозволить видалити відвідувача і його перегляди на сайті, однак не видаляться перегляди окремих сторінок , оскільки, такі дані не записуються на основі використання. Мінімальне значення 10 переглядів." + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "Не знайдено жодного відвідувача для очищення." + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "%s записів успішно очищено." + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "Число переглядів повинно бути більше або дорівнювати 10!" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "Відвідування сторінки" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "Кількість сторінок" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "Кількість коментарів" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "Кількість спаму" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "Кількість користувачів" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "середня кількість публікацій" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "середня кількість коментарів" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "Середня кількість користувачів" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "Пошуковий провайдер" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "Пошуковий провайдер для отримання статистики" + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "Числовий формат" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "Формат для відображення чисел в: i18n, англйська, нічого." + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "Англійська" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "Міжнародна" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "Підсумкова статистика переглядів" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "Сумарний Графік" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "Увесь сумарний час" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "Чи замислювалися ви про пожертвування для WP Statistics?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "Пожертвувати" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "Хочете поділитися з нами, наскільки вам подобається WP Statistics? Перейдіть до нашої %s сторінки і покажіть нам вашу любов!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "пожертвування" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "Пожертвувати зараз!" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "Закрити" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "Вибрати статистику, яку хочете відображати." + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "Статистика" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "Кількість публікацій" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "Інтервал часу" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "до" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "перейти" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "Ранг #5" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "Ранг #4" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "Ранг #3" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "Ранг #1" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "Ранг #2" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "Таблиця переглядів" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "Старі установки WP Statistics дублювали записи у таблиці відвідувань у тупиковій ситуації. Нові установки захищені проти цього унікальним індексом в таблиці. Щоб створити індекс для старих установок, дубльовані записи мають бути видалені спочатку. Натиснувши на \"Оновити зараз\", почнеться сканування таблиці переглядів, видаляться дублікати записів і додадуться індекси." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "Ця операція може зайняти багато часу на установки з кількістю рядків у таблиці відвідувань." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "Старі установки WP Statistics дублювали записи у таблиці відвідувань у тупиковій ситуації. Нові установки захищені проти цього унікальним індексом в таблиці." + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "Відфільтровано по" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "Діапазон" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "ММ/ДД/РРРР" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "Не використовуйте переклади і замість застосовуйте англійську за замовчуванням для WP Statistics (потрібно два завантаження сторінки)" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "примусова англійська" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "Мови" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "Примітка: Ця опція не оброблятиме параметри URL-адреси (будь-що після ?) , тільки ім'я скрипта. Записи менше двох символів будуть пропущені." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "Список локальних URL-адрес (тобто /wordpress/about, по одному в рядку), щоб вилучити зі списку статистики." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "Список вилучених URL-адрес" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "Вилучена URL-адреса" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "Останні 365 днів (рік)" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "Останні 30 днів (місяць)" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "Останні 7 днів (тиждень)" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "Yahoo!" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "Yandex" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "clearch.org" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "DuckDuckGo" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "Bing" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "Baidu" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "Потоки" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "Роль користувача" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "Сторінка входу" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "Сторінка адміністратора" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "самостійний реферал" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "IP-матч" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "Робот" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "В даний час на сайті немає користувачів онлайн ." + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "Граничне значення робота" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "Система-пастка" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "Статистика відсліковування тенденцій" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "Ім'я хоста" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "Включити або виключити функцію" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "Перевіряти користувачів онлайн кожну" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "секунду" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "Час для перевірки достовірного онлайн користувача на сайті. Зараз:%s секунд" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "Запис всіх користувачів" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "Ігнорує параметри виключення і реєструє всіх користувачів онлайн (у тому числі самостійних рефералів і роботів). Слід використовувати тільки для усунення неполадок." + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "Зберігає весь рядок користувача" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "Тільки включено для налагодження" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "Коефіціент на відвідувача" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "На кожен візит декілька переглядів. В даний час %s" + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "Сторінки" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "Відслідковувати всі сторінки" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "Параметри смуги з URI" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "Це видалить все після ? в URL-адресі." + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "Виключити колонку переглядів у списку публікацій/сторінок" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "Різне" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "Показати статистику в меню" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "Ні" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "Так" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "Показати статистику в адмін меню" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "Приховати повідомлення адміністратора про неактивні функції" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "За замовчуванням WP Statistics показує попередження, якщо яка-небудь з основних функцій виключена, на кожній сторінці адміністратора, цей параметр відключить ці повідомлення." + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "Видалити інструкцію" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "За замовчуванням WP Statistics зберігає інструкцію в папці плагіна (~ 5 мб), якщо ця опція включена, вона буде видалена хараз і протягом оновлень в майбутньому." + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "Пошуковики" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "Відключення всіх пошукових систем не допускається, це призведе до активації всіх пошукових систем ." + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "Відключити" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "Відключити%s з колекції даних і звітності." + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "Графіки" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "Включити загальні дані" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "Додати загальний рядок в графік з декількома значеннями, як пошукові реферали" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "GeoIP налаштування" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "Послуги розміщення IP, наданих GeoLite2 від MaxMind, доступні з %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "GeoIP колекція" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "Для отримання більш детальної інформації та місцезнаходження (країна) від відвідувача, включіть цю функцію." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "Відновити GeoIP інфо" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "Завантажити GeoIP базу даних" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "Графік щомісячного оновлення БД GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "Завантаження бази даних GeoIP будуть заплановані протягом 2 днів після першого вівторка місяця." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "Ця опця також завантажить базу даних, якщо локальний розмір файлу менше, ніж 1k (це, як правило, означає, що заглушка, яка поставляється з плагіном, все ще перебуває на місці)." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "Заповніть відсутні GeoIP після оновлення БД GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "Оновити відсутні дані Geoip після завантаження нової бази даних." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "Код країни для приватних IP-адрес" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "Міжнародний стандарт двох літерний код країни (тобто, США = Сполучені Штати, Канада CA =, і т.д.) для приватних (не маршрутизованих) IP-адрес (тобто 10.0.0.1, 192.158.1.1, 127.0.0.1 і т.д.). Використовуйте \"000\" (три нуля), щоб застосовувати \"невідомо\" в якості коду країни." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "Колекція GeoIP відключена через наступні причини:" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "Колекції GeoIP потрібно PHP %s або вище, в даний час відключена у зв'язку з встановленою версією PHP " + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "Колекції GeoIP потрібне розширення cURL PHP і вона не завантажується на вашій версії PHP!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "Колекції GeoIP потрібне розширення BC Math PHP і вона не завантажується на вашій версії PHP!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "Безпечний режим PHP виявлено! Колекція GeoIP не підтримує включений безпечний режим PHP!" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "Це буде видаляти дані з бази даних кожен день, ви впевнені, що ви хочете включити цю опцію?" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "днів" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "Кількість днів, щоб зберегти статистику. Мінімальне значення становить 30 днів. Неприпустимі значення відключатимуть щоденне обслуговування." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "Загальні параметри звіту" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "Адреса електронної пошти" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "Розділений комами список адрес електронної пошти для відправки звітів." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "Відновити звіти" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "Browscap" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "Відправляти звіт щоразу, коли browscap.ini оновлюється." + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "Відправляти звіт щоразу, коли база даних GeoIP оновлюється." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "Очищення" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "Відправляти звіт щоразу, коли база даних очищується." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "Оновлення" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "Відправляти звіт щоразу, коли плагін оновлюється." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "Статистична звітність" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "Графік" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "Виберіть, як часто отримувати статистичний звіт." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "Відправляти звітів через" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "Email" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "Виберіть спосіб доставки для статистичного звіту." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "Примітка: Для відправки SMS текстового повідомлення, будь ласка, встановіть %s плагін." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "WordPress SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "Структура робота" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "Введіть вміст звіту." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "Будь-який шорткод, що підтримується вашою установкою WordPress, включає всі шорткоди для WP Statistics (див інструкцію адміністратора для списку доступних кодів), підтримувані в тілі повідомлення. Ось деякі приклади:" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "Користувач онлайн" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "Сьогодняшній відвідувач" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "Сьогоднішнє відвідування" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "Вчорашній відвідувач" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "Вчорашнє відвідування" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "Всього відвідувачів" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "Всього відвідувань" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "Жодного" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "Про" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "Приладова панель" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "Наступні пункти застосовуються для всіх користувачів." + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "Відключити віджети приладової панелі" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "Відключити ці віджети приладової панелі" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "Редактор сторінки/публікації" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "Відключити віджет-редактор сторінки/публікації" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "Відключити цей віджет-редактор сторінки/публікації" + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "Google" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "Відключити карту" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "Відключити картове відображення" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "Видалення WP Statisitcs" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "Видалення WP Statistics не видалить дані і налаштування, ви можете використати цю опцію для видалення даних WP Statistics з установки перед видаленням плагіна." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "Після відправлення цієї форми, налаштування будуть видалені під час завантаження сторінки, однак WP Statistics буде все ще показуватись в меню адміністратора, поки не буде виконане інше завантаження сторінки." + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "Видалити дані та налаштування" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "Видалити" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "Видалення даних та налаштувань, цю дію скасувати не можна." + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "Загальні" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "Сповіщення" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "Приладова панель/перегляд" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "Обслуговування" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "Видалення" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "Оновлення" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "Один раз в тиждень" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "Один раз кожні 2 тижні" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "Один раз на 4 тижні" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "Статистика" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "Відображати статистику сайту у бічній панелі." + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "Усього переглядів сторінки" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "Всього публікацій" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "Всього сторінок" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "Всього коментарів" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "Всього спаму" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "Всього користувачів" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "Середня кількість публікацій" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "Середня кількість коментарів" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "Середня кількість користувачів" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "Останні зміни в публікації" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "Ім'я" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "Об'єкти" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "Вчорашнє відвідування" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "Вибрати тип пошуковика" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "WP Statistics видалено, будь ласка відключіть і видаліть його." + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "WP Statistics" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "Повна статистика для вашого сайту WordPress." + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "Налаштування" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "Натисніть тут, щоб відвідати плагін на WordPress.org" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "Відвідайте плагін на WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "Натисніть тут, щоб оцінити і переглянути цей плагін на WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "Оцінити цей плагін" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "WP Statistics - перегляди" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "Перегляд" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "Онлайн" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "Рефери" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "Пошуки" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "Пошукові слова" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "Топ відвідувачі за сьогодні" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "Оптимізація" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "Інструкція" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "Сайт" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "Опції" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "Сьогодняшній відвідувач" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "Сьогоднішнє відвідування" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "Вчорашній відвідувач" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "Переглянути статистику" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "Завантажити файл ODF " + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "Завантажити файл HTML " + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "Інструкцію не знайдено." + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "Ви не маєте достатніх прав для доступу до цієї сторінки." + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "WP Statistics %s установлений на" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "Помилка під час завантаження GeoIP бази даних із: %s - %s" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "Помилка не вдалося відкрити завантажену GeoIP базу даних для читання: %s" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "Помилка не вдалося відкрити шлях бази даних GeoIP для написання %s" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "GeoIP база даних успішно оновлена!" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "GeoIP оновлена на" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "Помилка під час завантаження browscap бази даних із: %s - %s" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "browscap база даних успішно оновлена!" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "Оновлення browscap бази даних не вдалося! Кеш-файл занадто великий, повернено до попереднього browscap.ini." + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "Оновлення browscap бази даних не вдалося! Новий browscap.ini помилково розпізнає користувачів як сканерів, повернено до попереднього browscap.ini." + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "browscap вже в поточній версії!" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "Browscap.ini оновлено на" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "Швидка статистика" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "Топ 10 браузерів" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "Топ 10 країн" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "Карта сьогодняшніх відвідувачів" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "Статистика переглядів" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "Топ 10 сторінок" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "Нещодавні відвідувачі" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "Топ реферних сайтів" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "Пошукові реферали" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "Підсумок" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "Останні пошукові слова" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "Топ 10 відвідувачів за сьогодні" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "Ця публікація ще не опублікована." + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "Не вдалося завантажити GeoIP бази даних, переконайтеся, що ви завантажили його на сторінку налаштувань." + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "Оновлено %s GeoIP записів бази даних відвідувачів." + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "%s даних старіше %s днів успішно очищено." + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "Записів не знайдено для очищення з %s!" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "База даних, відсічена на" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "Будь ласка, виберіть значення протягом 30 днів." + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "Статистика браузерів" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "Натисніть для переміщення" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "Браузери" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "Браузери за типом" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "Платформа" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "Браузери за платформою" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "Версія %s" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "Увага: Виключення наразі не записуються, нижче результати можуть не відображати поточної статистики!" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "Виключення в статистиці" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "10 днів" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "20 днів" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "30 днів" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "2 місяці" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "3 місяці" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "6 місяців" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "9 місяців" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "1 рік" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "Графік виключень в статистиці" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "Виключено переглядів за останні" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "днів" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "Кількість виключених переглядів" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "Графік переглядів" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "Переглядів за останні" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "Кількість відвідувань та відвідувачів" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "Відвідування" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "Відвідувач" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "Статистика останніх пошукових слів" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "#хеш#" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "Карта" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "Сторінка" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "Від" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "Все" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "Статистика нещодавніх відвідувачів" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "Користувачі онлайн" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "Онлайн за" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "Тренд сторінки для публікації ID" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "Тренд сторінки" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "Статистика пошукових реферів" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "Пошукові реферали за останні" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "Кількість рефералів" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "Всього " + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "Топ країни" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "Ранг" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "Флаг" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "Країна" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "Кількість відвідувачів" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "Топ сторінки" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "Топ 5 трендів сторінок" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "Статистика топ 5 трендоваих сторінок" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "Кількість переглядів " + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "Не знайдено назви сторінки" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "Відвідування" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "Скоро будуть додані" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "Реферні сайти від" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "Посилання" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "Топ 100 відвідувачів за сьогодні" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "Про WP Statistics версію %s" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "Веб-сайт" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "Оцінювання та перегляд" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "Більше інформації" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "Цей продукт містить GeoLite2 дані, створені MaxMind, доступні з %s." + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "Інший" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "Карта сьогодняшніх відвідувачів" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "Адреса" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "Користувач (ів) онлайн" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "Сьогодні" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "Учора" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "Всього за день" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "Поточний час та дата" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "(Корегування)" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "Дата: %s" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "Час: %s" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "Перегляди" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "IP" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "Агент" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "Версія" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "В доступі відмовлено!" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "%s дані агента успішно видалені." + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "Даних агента для видалення не знайдено!" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "Будь ласка, виберіть бажані об'єкти." + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "%s даних платформи видалені успішно." + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "Даних платформи для видалення не знайдено!" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "%s даних таблиці успішно видалено." + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "Помилка %s не очищено!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "Налаштування бази даних" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "Перезапустіть програму установки" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "Встановити зараз!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "Якщо з якоїсь причини в установці WP Statistics відсутні таблиці бази даних або інші основні елементи, це перезапустить ще раз процес установки." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "Індекс бази даних" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "Країни" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "Оновіть зараз!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "Старі установки WP Statistics дублювали записи у таблиці відвідувань. Нові установки захищені проти цього унікальним індексом в таблиці. Щоб створити індекс для старих установок, дубльовані записи мають бути видалені спочатку. Натиснувши на \"Оновити зараз\", почнеться сканування таблиці переглядів, видаляться дублікати записів і додадуться індекси." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "Ця операція може зайняти багато часу на установки з кількістю рядків у таблиці відвідувань." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "Старі установки WP Statistics дублювали записи у таблиці відвідувань у кутку корпусу. Нові установки захищені проти цього унікальним індексом в таблиці." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "Вітаємо, установка вже оновлена, нічого не треба робити." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "Експорт" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "Експорт з" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "Будь ласка виберіть" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "Виділіть таблицю для вихідного файлу." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "Експорт до" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "Виберіть тип вихідного файлу." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "Включити рядок заголовка" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "Включити рядок заголовка у першому рядку експортованого файлу." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "Почати зараз!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "Історичні значення" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "Примітка: оскільки ви тільки що очистили базу даних, ви маєте перезавантажити сторінку, щоб числа були вірними." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "Відвідувачі" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "Історична кількість відвідувачів сайту (поточне значення — %s)." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "Історична кількість відвідувань сайту (поточне значення — %s)." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "Оновіть зараз!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "Ви впевнені?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "Дані" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "Пуста таблиця" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "Всі дані таблиці будуть втрачені." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "Тепер чисто!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "Очистити записи старіші ніж" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "Видалено статистику даних користувача старішу за вибрану кількість днів. Мінімальне значення - 30 днів." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "Очистити зараз!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "Видалити типи агента користувача" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "Видалити агентів" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "Всі дані відвідувачів буде втрачено для даного типу агента." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "Видалити зараз!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "Видалити платформ" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "Всі дані відвідувачів буде втрачено для даного типу платформи." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "Джерела" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "Використано пам'яті в PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "Байт" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "PHP Обмеження пам'яті" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "Обмежена пам'ять, яку скрипт може споживати, встановлена в php.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "Кількість рядків у таблиці %s" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "Рядок" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "Кількість рядків" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "Інформація про версію" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "Версія WP Statistics" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "Версія WP Statistics, якою ви користуєтесь" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "Версія PHP " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "Версія PHP , якою ви користуєтесь" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "Безпечний режим PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "Безпечний режим PHP активовано? Код GeoIP не підтримується в безпечному режимі." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "Версія jQuery " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "Версія jQuery , якою ви користуєтесь" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "Версія cURL " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "cURL не встановлено" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "Версія розширення PHP cURL не встановлено. cURL вимагається для коду GeoIP , якщо він не встановлений, GeoIP буде відключено." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "Встановлено" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "Не встановлено" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "Інформація файлу" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "GeoIP база даних" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "Файлу бази даних не існує." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr ", створено на" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "Розмір файлу і дата GeoIP бази даних." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "browscap.ini файл" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "browscap.ini файл не існує." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "Розмір і дата файлу browscap.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "browscap кеш-файл" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "browscap кеш-файл не існує." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "Розмір і дата browscap кеш-файлу." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "Клієнтська інформація" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "Клієнтське IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "IP адреса клієнта." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "Агент користувача" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "рядок агента користувача." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "Браузер" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "Виявлений браузер користувача." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "Виявлена версія браузера користувача." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "Виявлена клієнтська платформа." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "Це замінить всі IP-адреси в базі хеш-значеннями, і цю дію не можна скасувати,: ви впевнені?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "GeoIP параметри" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "Оновлює будь-які дані невідомого розташування в базі даних, це може зайняти деякий час" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "IP-адреси" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "Хеш IP-адреси" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "Замінить IP-адреси в базі хеш-значеннями, ви не зможете відновити IP-адреси в майбутньому, щоб заповнити інформацію про місцезнаходження потім, і це може зайняти деякий час" + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "IP-адреси замінені хеш значеннями." + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "Установка завершена." + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "Джерела/інформація" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "Очищення" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "База даних" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "Оновлення" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "Історичні" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "WP Statistics V%s" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "Відвідайте нашу сторінку" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "Відвідайте наш новий %s та залишайтесь в курсі останніх новин про WP Statistics." + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "Веб-сайт" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "Оцінювання та відгук на WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "Дякуємо за установку WP Statistics, ми заохочуємо вас на" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "оцінку і відгук" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "на WordPress.org. Ми цінуємо вашу думку!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "Переклади" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "WP Statistics підтримує інтернаціоналізацію і ми заохочуємо користувачів висилати переклади, будь ласка, відвідайте наш %s, щоб побачити поточний статус і %s, якщо ви хочете допомогти." + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "Сайт спільного перекладу" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "Напишіть нам пару рядків" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "Підтримка" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "Нам жаль, що у вас виникли проблеми з WP Statistics, але ми раді допомогти. Ось декілька речей, які потрібно зробити, перед тим як зв'язатися з нами." + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "Ви читали %s?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "Питання та відповіді" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "Інструкція" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "Чи дивились ви %s подібне питання?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "Форум підтримки" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "Чи шукали ви в Інтернеті інформацію про помилки, що ви отримуєте?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "Переконайтеся, що ви маєте доступ до ваших PHP журналів помилок." + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "І кілька речей перевірити ще раз:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "Що з вашим memory_limit в php.ini?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "Ви пробували відключити будь-які інші встановлені у вас плагіни?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "Ви намагалися використовувати за замовчуванням WordPress теми?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "Ви перевірили ще раз налаштування плагіна?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "У вас установлені всі необхідні PHP розширення ?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "Ви отримуєте пусту або неповну сторінку у браузері? Чи переглянули ви джерело сторінки та перевірили наявність фатальних помилок?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "Ви вже перевірили ваш PHP і веб-журнали помилок сервера?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "І досі безуспішно?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "Тоді відкривайте новий запит в %s і ми відповімо вам якомога швидше." + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "WordPress.org форум підтримки" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "Як альтернатива %s підтримка також доступна." + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "Фарсі" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "WP Statistics сторінка-ловушка" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "Це сторінка-ловушка для WP Statistics , не видаляйте." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "Рівні доступа" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "Вимагається рівень користувача для перегляду WP Statistics" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "Вимагається рівень користувача для управління WP Statistics" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "Пергляньте %s за подробицями про необхідний рівень." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "Ролі WordPress та сторінка повноважень" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "Перегляд: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "Кожна з перерахованих каскад має права за замовчуванням в налаштуваннях WordPress. Том, наприклад, при виборі publish_posts, надаються права атора, редактора, адміністраторів та супер адміністраторів. " + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "Якщо вам потрібне більш стійке рішення для делегування доступу, перегляньте %s в каталозі плагіну в WordPress." + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "Вилучення" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "Вилучення записів" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "Включити" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "Це запише всі вилучені перегляди в окрему таблицю з причиною вилучення, але без будь-яких інших деталей. Це згенерує багато даних, але корисне, якщо ви хочете побачити загальну кількість всіх переглядів на вашому сайті, а не тільки потенційних користувачів." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "Вилучити ролі користувачів" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "Вилучити" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "Вилучити %s з колекції даних і звітності." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "Вилучення IP/Робота" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "Список роботів" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "Список слів (одне на рядок), щоб допомогти виявити роботів. Записи мають бути найменш 4 символи, інакше вони будуть пропущені. " + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "Повернути всі початкові налаштування" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "Оновити список роботів після оновлення" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "Повернути початкові дані в списку роботів після оновлення WP Statistics. Примітка, якщо опція включена, всі дані роботів, які ви додали до списку, будуть втрачені." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "Ліміт відвідувань робота" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "Вважати відвідувачів з кількістю відвідувань в день більше цього числа, роботами. 0 = відключено." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "Список вилучених IP -адрес" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "Додати 10.0.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "Додати 172.16.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "Додати 192.168.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "Використовуйте ловушку" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "Використовуйте сторінку ловушку, щоб визначити роботів." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr " ідентифікатор публікації ловушки" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "Ідентифікатор публікації, щоб використовувати для сторінки-ловушки." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "Створити нову сторінку-ловушку" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "GeoIP виключення" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "Список вилучених країн" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "Список кодів країн (по одному в рядку, дві літери кожен), щоб виключити зі збору статистики. Використовуйте \"000\" (три нуля), щоб виключити невідомі країни." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "Список включених країн" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "Список кодів країн (по одному в рядку, дві літери кожен), щоб включити в збір статистики, якщо цей список не порожній, будуть записані лише відвідувачі з включених країн. Використовуйте \"000\" (три нуля), щоб виключити невідомі країни." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "Виключення хостів" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "Список вилучених хостів" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "Список повних імен хоста (тобто, server.example.com, по одному в рядку), щоб виключити зі збору статистики." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "Примітка: ця опція не буде виконувати зворотний пошук DNS при кожному завантаженні сторінки, але замість того, буде кешувати IP-адреса за наданими хостами протягом однієї години. Якщо ви вилучаєте динамічно призначені хости, ви можете знайти деяку ступінь перекриття, коли хост міняє свою IP-адресу, і коли кеш оновлюється, в результаті чого деякі перегляди записуються." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "Винятки URL сайтів" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "Вілучені сторінки входу" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "Вилучити сторінку входу з реєстрації як перегляд." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "Вилучені адмін сторінки" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "Виучити адмін сторінки з реєстрації як перегляд." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "Вилучені RSS потоки" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "Вилучити RSS потоки з реєстрації як перегляд." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "Browscap налаштування" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "browscap використання" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "Активний" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "База даних browscap буде завантажена та використовуватись для виявлення роботів." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "Оновити інформацію browscap " + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "Завантажити базу даних browscap " + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "Зберегти зміни на цій сторінці для завантаження оновлень." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "Запланувати щотижневе оновлення для БД browscap " + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "Наступне оновлення буде" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "Завантаження бази даних browscap заплановано один раз на тиждень." + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "Це видалить інструкцію при збереженні налаштувань, ви впевнені?" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "Ця функція не зберігатиме IP адреси в базі даних, але замість цььго, використані унікальні хеши. Налаштування \"Зберігати весь рядок агента користувача\" буде виключене, якщо ви виберете цю функцію. Ви не зможете повернути IP адреси в майбутньому для повернення деталей розташування, якщо ви активуєте цю функцію." + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "Користувачі онлайн" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "Користувач онлайн" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-vi.mo b/plugins/wp-statistics/languages/wp_statistics-vi.mo new file mode 100644 index 0000000..2946ba1 Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-vi.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-vi.po b/plugins/wp-statistics/languages/wp_statistics-vi.po new file mode 100644 index 0000000..02ba9fb --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-vi.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in Vietnamese +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2015-04-22 00:41:48+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: vi_VN\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "" + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "" + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "" + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "" + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "" + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "" + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "" + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "" + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "" + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "MM/DD/YYYY" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "Bật hoặc tắt chức năng này" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "Thường xuyên kiểm tra số lượng người online" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "Giây" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr " Thời gian kiểm tra số người online trên trang web.Là %s giây" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "Lưu trữ chuỗi nhân người dùng toàn bộ" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "Chỉ được kích hoạt để gỡ lỗi" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "Hệ số tính cho mỗi người truy cập" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "Cho mỗi truy cập vào tài khoản cho một số lượt truy cập. Hiện nay %s." + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "Trang" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "Theo dõi tất cả các trang" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "Vô hiệu hóa truy cập cột trong danh sách bài/trang" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "Linh tinh" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "Hiện trạng thái trên thanh menu chính" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "Không" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "Có" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr " Hiện trạng thái trên thanh menu chính phần quản trị" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "Ẩn admin thông báo về các tính năng không hoạt động" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "Theo mặc định WP Statistics Hiển thị cảnh báo nếu bất kỳ tính năng cốt lõi bị vô hiệu hoá trên mỗi trang admin, tùy chọn này sẽ vô hiệu hóa các thông báo này." + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "Xóa sổ tay" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "Theo mặc định WP Statistics mua sắm các quản trị bằng tay trong thư mục plugin (~ 5 meg), nếu tùy chọn này được kích hoạt nó sẽ được xóa bây giờ và trong quá trình nâng cấp trong tương lai." + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "Vô hiệu hóa tất cả các công cụ tìm kiếm không được phép, làm như vậy sẽ dẫn đến trong tất cả công cụ tìm kiếm đang hoạt động." + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "vô hiệu hoá" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "Vô hiệu hoá %s từ thu thập dữ liệu và báo cáo." + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "Bảng xếp hạng" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "Tổng cộng bao gồm" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "Thêm một dòng tất cả vào bảng xếp hạng với nhiều giá trị, như tìm kiếm giới thiệu" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "GeoIP cài đặt" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "Dịch vụ vị trí IP cung cấp bởi dữ liệu GeoLite2 tạo bởi MaxMind, có sẵn từ %s." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "GeoIP bộ sưu tập" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "Để có thêm thông tin và vị trí (đất nước) từ khách truy cập, kích hoạt tính năng này." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "Cập nhật thông tin GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "Tải về GeoIP cơ sở dữ liệu" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "Lịch trình hàng tháng Cập Nhật của GeoIP DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "Tải về phần GeoIP cơ sở dữ liệu sẽ được sắp xếp cho 2 ngày sau khi thứ ba đầu tiên của tháng." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "Tùy chọn này cũng sẽ tải về cơ sở dữ liệu nếu filesize địa phương là ít hơn 1k (mà thường có nghĩa là ngẫu nhiên mà đi kèm với các plugin là vẫn còn tại chỗ)." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "Cư GeoIP mất tích sau khi cập nhật của GeoIP DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "Cập Nhật bất kỳ dữ liệu GeoIP mất tích sau khi tải về cơ sở dữ liệu mới." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "Bộ sưu tập GeoIP bị vô hiệu hoá do những lý do sau:" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "Yêu cầu bộ sưu tập GeoIP PHP %s hoặc ở trên, nó hiện đang vô hiệu hoá do cài đặt PHP phiên bản " + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "Thư viện GeoIP cần có phần mở rộng cURL nhưng phần mở rộng này không có trên phiên bản PHP của bạn!" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "Thư viện GeoIP cần có phần mở rộng BC Math nhưng phần mở rộng này không có trên phiên bản PHP của bạn" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "PHP phát hiện chế độ an toàn! Bộ sưu tập GeoIP không được hỗ trợ với chế độ an toàn của PHP được kích hoạt!" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "Điều này sẽ xoá vĩnh viễn dữ liệu từ cơ sở dữ liệu mỗi ngày, bạn có chắc bạn muốn bật tùy chọn này?" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "Ngày" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "Số ngày giữ số liệu thống kê cho. Giá trị tối thiểu là 30 ngày. Giá trị không hợp lệ sẽ vô hiệu hóa việc duy trì hàng ngày." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "Địa chỉ e-mail" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "Đang báo cáo thống kê" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "Lịch trình" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "Gửi báo cáo qua" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "Email" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "Tin nhắn điện thoại" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "Lưu ý: Để gửi tin nhắn văn bản tin nhắn xin vui lòng cài đặt %s plugin." + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "WordPress tin nhắn SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "Báo cáo cơ thể" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "Người online" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "Số người truy câp hôm nay" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "Lượt truy cập hôm nay" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "Số người truy câp hôm qua" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "Lượt truy cập hôm qua" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "Số lượt truy cập" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "Tất cả chuyến thăm" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "Không có" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "Về" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "" + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "Google" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "Tắt bản đồ" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "Tắt hiển thị bản đồ" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "Cơ bản" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "Duy trì" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "Cập nhật" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "Một lần lượt" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "Một lần mỗi 2 tuần" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "Một lần mỗi tuần 4" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "Thống kê" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "Hiển thị thống kê trang web trong thanh bên." + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "Xem tất cả trang" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "Tổng số bài viết" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "Tất cả trang" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "Tổng số bình" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "Tất cả spam" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "Tất cả người dùng" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "Trung bình là bài viết" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "Ý kiến trung bình" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "Người dùng trung bình" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "Cuối ngày đăng" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "Tên" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "Mục" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "Lượt truy cập hôm qua" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "Chọn loại cỗ máy tìm kiếm" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "" + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "Thống kê WP" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "Hoàn thành các thống kê cho trang web WordPress của bạn." + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "Cài đặt" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "Click vào đây để truy cập vào các plugin trên WordPress.org" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "Truy cập WordPress.org Trang" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "Click vào đây để đánh giá và xem xét này plugin trên WordPress.org" + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "Tỷ lệ này plugin" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "Thống kê WP - lượt truy cập" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "Tổng quan" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "Lượt tìm kiếm" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "Từ được tìm kiếm" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "Tối ưu hóa" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "Hướng dẫn sử dụng" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "Số người truy câp hôm nay" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "Lượt truy cập hôm nay" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "Số người truy cập hôm qua" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "Xem số liệu thống kê" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "Tải về tập tin ODF" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "Tải xuống tệp HTML" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "Hướng dẫn sử dụng tập tin không tìm thấy." + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr ".Bạn không có quyền truy cập trang này" + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "Lỗi tải GeoIP cơ sở dữ liệu từ: %s - %s" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "Lỗi không thể mở được CSDL GeoIP để đọc: %s" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "Không thể mở CSDL GeoIP để viết %s" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "! CSDL GeoIP cập nhật thành công" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "Lỗi tải browscap cơ sở dữ liệu từ: %s - %s" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "browscap cơ sở dữ liệu Cập Nhật thành công!" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "browscap đã có tại phiên bản hiện tại!" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "Top 10 trình duyệt" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "Top 10 quốc gia" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "Thống kê Lượt đếm" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "Top 10 trang" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "Số người truy cập gần đây nhất" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "Trang web giới thiệu hàng đầu" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "Tìm kiếm giới thiệu" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "Tóm tắt" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "Từ tìm kiếm mới nhất" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "" + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr ".hông thể nạp được CSDL GeoIP,hãy chắc chắn rằng bạn đã tải nó trong phần thiết lập" + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "Cập Nhật bản ghi GeoIP %s trong cơ sở dữ liệu số lượt truy cập." + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "%s dữ liệu cũ hơn %s ngày thanh trừng thành công." + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "Không có hồ sơ tìm thấy để tẩy từ %s!" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr ".Hãy chọn giá trị lớn hơn 30 ngày" + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "Thống kê trình duyệt" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "Nhấn vào đây để chuyển đổi" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "Trình duyệt" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "Trình duyệt theo loại" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "Hệ điều hành" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "Trình duyệt bởi nền tảng" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "Phiên bản %s " + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "Chú ý: Loại trừ không hiện đang được thiết lập để được ghi lại, kết quả dưới đây có thể không phản ánh số liệu thống kê hiện tại!" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "Loại trừ số liệu thống kê" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "10 ngày" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "20 ngày" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "30 ngày" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "2 tháng" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "3 tháng" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "6 tháng" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "9 tháng" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "1 năm" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "Loại trừ biểu đồ thống kê" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "Loại trừ lượt truy cập trong" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "Ngày" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "Số lượt truy cập bị loại trừ" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "Biểu đồ thống kê lượt truy cập" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "Lượt truy cập trong" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "Số lượt truy cập và số người truy cập" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "Lượt truy cập" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "Số người truy cập" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "Thống kê từ tìm kiếm mới nhất" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "#hash #" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "Bản đồ" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "Trang" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "Từ" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "Tất cả" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "Thống kê lượt truy cập gần đây" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "Xu hướng trang Post ID" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "Xu hướng trang" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "Tìm kiếm giới thiệu thống kê" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "Tìm kiếm giới thiệu trong" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "Số lượng giới thiệu" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "Tổng cộng" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "Quốc gia hàng đầu" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "Xếp hạng" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "Lá cờ" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "Quốc gia" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "Số lượt truy cập" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "Trang đầu" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "Top 5 trang xu hướng" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "Top 5 trang có xu hướng thống kê" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "Số lượt truy cập" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "Tiêu đề trang không tìm thấy" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "Các lượt truy cập" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "Sẽ được bổ sung " + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "Nguồn từ" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "Tài liệu tham khảo" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "Về số WP Statistics Phiên bản %s" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "Trang web" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "Tỷ lệ và nhận xét" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "Biết thêm thông tin" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "Sản phẩm này bao gồm dữ liệu GeoLite2 tạo bởi MaxMind, có sẵn từ %s." + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "Khác" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "Hôm nay truy cập bản đồ" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "Địa chỉ" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "() Người dùng trực tuyến" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "Hôm nay" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "Hôm qua" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "Tổng số hàng ngày" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "Tất cả thời gian và ngày tháng" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "(Điều chỉnh)" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "Ngày: %s" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "Thời gian: %s" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "Lượt đếm" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "Truy nhập bị Cấm!" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "dữ liệu đại lý %s đã xóa thành công." + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "Hãy chọn các mục bạn muốn." + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "%s nền tảng dữ liệu đã xóa thành công." + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "%s bảng dữ liệu đã xóa thành công." + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "Lỗi, %s không trống" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "Thiết lập cơ sở dữ liệu" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "Chạy lại cài đặt" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "Cài đặt bây giờ!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "Nếu vì một lý do của bạn cài đặt WP Statistics thiếu các bảng cơ sở dữ liệu hoặc các mặt hàng cốt lõi, điều này sẽ tái thực hiện quá trình cài đặt." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "Cơ sở dữ liệu chỉ mục" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "Quốc gia" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "Cập nhật bây giờ!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "Các cài đặt cũ hơn của WP Statistics cho phép cho các trùng lặp mục trong bảng số lượt truy cập trong một trường hợp góc. Tiến trình cài đặt mới hơn bảo vệ chống lại điều này với một chỉ số duy nhất trên bàn. Để tạo chỉ mục trên các cài đặt cũ hơn mục trùng lặp phải được xóa lần đầu tiên. Cách nhấn vào \"Update Now\" sẽ quét bảng vistitors, xóa mục trùng lặp và thêm chỉ mục." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "Thao tác này có thể mất một thời gian dài ngày cài đặt với nhiều hàng trong bảng số lượt truy cập." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "Các cài đặt cũ hơn của WP Statistics cho phép cho các trùng lặp mục trong bảng số lượt truy cập trong một trường hợp góc. Tiến trình cài đặt mới hơn bảo vệ chống lại điều này với một chỉ số duy nhất trên bàn." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "Xin chúc mừng, cài đặt là đã đến nay, không có gì để làm." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "Xuất khẩu" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "Xuất khẩu từ" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "Vui lòng chọn" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "Chọn bảng cho các tập tin đầu ra." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "Xuất khẩu để" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "Chọn loại tệp đầu ra." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "Bao gồm hàng tiêu đề" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "Bao gồm một dòng tiêu đề như là dòng đầu tiên của tập tin xuất khẩu." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "Bắt đầu bây giờ!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "Lượng người truy cập" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "Bạn có chắc không?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "Dữ liệu" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "Sản phẩm nào bảng" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "Tất cả các bảng dữ liệu sẽ bị mất." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "Rõ ràng bây giờ!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "Lọc những bản ghi cũ hơn" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "Xoá dữ liệu thống kê cũ hơn một ngày quy định.Tối đa là 30 ngày" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "Thực hiện lọc" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "Xóa loại tác nhân người dùng" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "Xóa đại lý" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "Tất cả khách truy cập dữ liệu sẽ bị mất đối với tác nhân loại." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "Xóa bây giờ!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "Xóa nền tảng" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "Tất cả khách truy cập dữ liệu sẽ bị mất cho loại nền tảng." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "Tài nguyên" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "Sử dụng bộ nhớ trong PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "Byte" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "Giới hạn bộ nhớ PHP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "Giới hạn bộ nhớ một kịch bản được cho phép để tiêu thụ, thiết lập trong php.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "Số lượng các hàng trong bảng %s" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "Hàng" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "Số lượng hàng" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "Phiên bản thông tin" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "Thống kê WP Phiên bản" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "Thống kê WP Phiên bản bạn đang chạy." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "PHP phiên bản" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr ".Phiên bản PHP bạn đang dùng" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "PHP chế độ an toàn" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "Là PHP chế độ an toàn hoạt động. Mã GeoIP không được hỗ trợ trong chế độ an toàn." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "phiên bản jQuery" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr " .Phiên bản jQuery bạn đang dùng" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "Phiên Bản cURL" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "cURL chưa được cài đặt" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "Phiên bản phần mở rộng cURL mà bạn đang chạy.cURL cần thiết cho mã GeoIP.Nếu nó không được cài đặt GeoIP se bị tắt." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "Đã cài đặt" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "Chưa cài đặt" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "Thông tin tập tin" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "GeoIP cơ sở dữ liệu" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "Cơ sở dữ liệu không tồn tại." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr ", thành lập ngày " + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "Kích thước tập tin và ngày của GeoIP cơ sở dữ liệu." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "browscap.ini tập tin" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "browscap.ini tập tin không tồn tại." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "Kích thước tập tin và ngày của các tập tin browscap.ini." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "browscap tập tin bộ nhớ Cache" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "browscap bộ nhớ cache tập tin không tồn tại." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "Kích thước tập tin và ngày của tập tin bộ nhớ cache browscap." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "Thông tin máy khách" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "IP máy khách" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr ".Địa chỉ IP máy khách" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "Tác nhân người dùng" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "Chuỗi nhân người dùng khách hàng." + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "Điều này sẽ thay thế tất cả các địa chỉ IP trong cơ sở dữ liệu với các băm giá trị và không thể là hoàn tác, bạn có chắc chắn?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "GeoIP tùy chọn" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "Cập Nhật bất kỳ dữ liệu không rõ vị trí trong cơ sở dữ liệu, điều này có thể mất một lúc" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "Địa chỉ IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "Địa chỉ IP băm" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "Thay thế địa chỉ IP trong cơ sở dữ liệu với các băm giá trị, bạn sẽ không thể phục hồi các địa chỉ IP trong tương lai để đưa thông tin vị trí sau đó và điều này có thể mất một lúc" + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "Địa chỉ IP thay thế với giá trị hash." + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "Cài đặt hoàn thành thói quen." + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "Tài nguyên/thông tin" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "Lọc" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "Cơ sở dữ liệu" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "Cập Nhật" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "Thống kê WP V %s" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "Ghé thăm chúng tôi trực tuyến" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "Hãy đến thăm chúng tôi %s mới tuyệt vời và giữ đến ngày về những tin tức mới nhất về số WP Statistics." + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "Trang web" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "Đánh giá và xem xét tại WordPress.org" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "Cảm ơn bạn đã cài đặt WP Statistics, chúng tôi khuyến khích bạn gửi một " + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "đánh giá và xem xét" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "qua tại WordPress.org. Phản hồi của bạn được đánh giá rất nhiều!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "Phiên dịch" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "WP Statistics hỗ trợ quốc tế và chúng tôi khuyến khích người dùng gửi bản dịch, xin vui lòng ghé thăm chúng tôi %s để xem trạng thái hiện tại và %s nếu bạn muốn giúp đỡ." + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "bản dịch hợp tác trang web" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "thả chúng tôi một dòng" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "Hỗ trợ" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "Chúng tôi xin lỗi bạn đang gặp vấn đề với WP Statistics và chúng tôi đang hạnh phúc để giúp đỡ. Dưới đây là một số điều cần làm trước khi liên hệ với chúng tôi:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "Bạn đã đọc %s?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "Câu hỏi thường gặp" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "hướng dẫn sử dụng" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "Quý vị tìm kiếm %s cho một vấn đề tương tự?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "hỗ trợ diễn đàn" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "Có bạn tìm kiếm trên Internet cho bất kỳ thông báo lỗi bạn nhận được?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "Và một số điều cần kiểm tra:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "Làm thế nào là của bạn memory_limit trong php.ini?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "Có bạn đã cố gắng vô hiệu hóa bất kỳ bổ sung khác mà bạn có thể cài đặt?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "Bạn đã thử bằng cách sử dụng WordPress theme mặc định?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "Bạn đôi đã kiểm tra các cài đặt plugin?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "Bạn có tất cả các yêu cầu PHP mở rộng cài đặt?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "Bạn đang nhận được một trang trống hoặc không đầy đủ Hiển thị trong trình duyệt của bạn? Đã làm bạn xem mã nguồn cho trang và kiểm tra bất kỳ lỗi nghiêm trọng?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "Bạn đã kiểm tra của bạn PHP và web máy chủ bản ghi lỗi?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "Vẫn không có bất kỳ may mắn?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "Sau đó, xin vui lòng mở một chủ đề mới trên %s và chúng tôi sẽ trả lời càng sớm càng tốt." + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "WordPress.org hỗ trợ diễn đàn" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "Ngoài ra %s hỗ trợ có sẵn là tốt." + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "Tiếng Farsi" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "Cấp độ truy cập" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "Yêu cầu độ người dùng để xem số liệu thống kê WP" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "Yêu cầu người sử dụng nhằm mục đích quản lý số liệu thống kê WP" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "Xem abnj %s để biết chi tiết về mức độ khả năng." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "WordPress vai trò và khả năng trang" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "Gợi ý: manage_network = Super quản trị mạng, manage_options = người quản trị, edit_others_posts = trình biên tập, publish_posts = tác giả, edit_posts = đóng góp, đọc = tất cả mọi người." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "Mỗi casscades trên quyền trở lên trong cấu hình mặc định WordPress. Vì vậy, ví dụ chọn publish_posts cấp quyền tác giả, biên tập viên, quản trị viên và quản trị viên Super." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "Nếu bạn cần một giải pháp mạnh mẽ hơn để đại biểu truy cập bạn có thể muốn nhìn vào %s trong thư mục plugin WordPress." + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "Ngoại trừ" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "Ghi lại loại trừ" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "Bật" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "Điều này sẽ ghi lại tất cả các số truy cập bị loại trừ trong một bảng riêng biệt với những lý do tại sao nó được loại trừ, nhưng không có thông tin khác. Điều này sẽ tạo ra rất nhiều dữ liệu nhưng rất hữu ích nếu bạn muốn xem tổng số lượt truy cập trang web của bạn được, không chỉ thực tế người dùng truy cập." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "Loại trừ các vai trò người dùng" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "Loại trừ" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "Loại trừ các vai trò %s từ thu thập dữ liệu." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "Loại trừ IP/Robot" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "Danh sách Robot" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "Một danh sách các từ (một mỗi dòng) để phù hợp với chống lại để phát hiện các robot. Mục phải là ít nhất 4 ký tự hoặc họ sẽ bị bỏ qua." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "Đặt lại về mặc định" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "Cập nhật danh sách robot quân sau khi nâng cấp" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "Lực lượng danh sách robot để được đặt lại về mặc định sau khi một bản Cập Nhật để thống kê WP diễn ra. Lưu ý Nếu tùy chọn này được kích hoạt bất kỳ tùy chỉnh robot bạn đã thêm vào danh sách sẽ bị mất." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "Danh sách địa chỉ IP bị loại trừ" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "Thêm 10.0.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "Thêm 172.16.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "Thêm 192.168.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "Trang web URL loại trừ" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "Trang đăng nhập bị loại trừ" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "Bị loại trừ admin trang" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "cài đặt browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "sử dụng browscap" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "Hoạt động" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "Cơ sở dữ liệu browscap sẽ được tải về và sử dụng để phát hiện các robot." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "Cập Nhật browscap thông tin" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "Tải về browscap cơ sở dữ liệu" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "Lưu các thay đổi trên Trang này để tải xuống bản Cập Nhật." + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "Lịch trình cập nhật hàng tuần của browscap DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "Cập Nhật tiếp theo sẽ" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "Tải về phần browscap cơ sở dữ liệu sẽ được sắp xếp để có một lần một tuần." + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "Điều này sẽ xóa sổ tay khi bạn lưu cài đặt, bạn có chắc chắn?" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "Tính năng này sẽ không lưu trữ địa chỉ IP trong cơ sở dữ liệu nhưng thay vào đó sử dụng một băm duy nhất. \"Store người dùng toàn bộ đại lý string\" cài đặt sẽ bị vô hiệu nếu điều này được chọn. Bạn sẽ không thể phục hồi các địa chỉ IP trong tương lai để phục hồi thông tin vị trí nếu điều này được kích hoạt." + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "Người dùng trực tuyến" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "Người dùng trực tuyến" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-zh_CN.mo b/plugins/wp-statistics/languages/wp_statistics-zh_CN.mo new file mode 100644 index 0000000..007cb64 Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-zh_CN.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-zh_CN.po b/plugins/wp-statistics/languages/wp_statistics-zh_CN.po new file mode 100644 index 0000000..1ebb384 --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-zh_CN.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in Chinese (China) +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2015-04-22 00:36:23+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: zh_CN\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "" + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "" + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "" + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "" + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "" + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "" + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "" + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "" + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "" + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "" + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "" + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "" + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "MM/DD/YYYY" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "启用或停用这功能" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "检查在线用户间隔" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "秒" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "检查有效在线用户的间隔。现在:每 %s 秒" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "记录所有的用户" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "保存所有用户代理信息" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "只用于调试" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "访客系数" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "每一个访问计算多少位访客,现时 %s " + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "页" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "跟踪所有页" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "禁用命中邮政/页列表中的列" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "杂项" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "在菜单中显示" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "否" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "是" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "在管理菜单中显示" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "不向管理员同志未启用的特性" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "默认情况下 WP 统计显示一条警报,如果任何核心功能被禁用每个管理员页面上,此选项将禁用这些通告。" + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "删除手册 》" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "默认情况下 WP 统计数据存储管理员手动在插件目录 (~ 5 meg),如果启用了此选项,则将删除它现在和将来的升级期间。" + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "搜索引擎" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "不允许禁用所有搜索引擎,这样做会使所有的搜索引擎启用。" + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "禁用" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "禁用来自%s的数据收集和报告。" + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "图表" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "包含总数" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "用多个不用的值在图表中增加一个总行,例如像搜索引擎引用数" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "GeoIP设置" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "提供创建的 MaxMind,可从 %s 的 GeoLite2 数据的 IP 位置服务。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "GeoIP收集" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "为了得到更多关于访客的信息和地理位置(国家),请使能该特性。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "更新GeoIP信息" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "下载GeoIP数据库" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "计划每月更新GeoIP数据库" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "计划每月第一个周二的未来两天用来下载GeoIP数据库。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "这个选项将会在本地文件不足1K的前提下依然下载数据库" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "更新GeoIP数据库后丢失GeoIP信息" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "更新任何因为下载新数据而丢失的GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "GeoIP因为以下原因被禁用:" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "GeoIP需要以上%s以上的PHP版本,目前GeoIP未启用使用为当前安装的PHP版本为" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "GeoIP需要cURL PHP扩展,但是在您目前的PHP版本中,该扩展没有被加载。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "GeoIP需要BC Math PHP扩展,但是在您目前的PHP版本中,该扩展没有被加载。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "检测到目前处于PHP safe模式。该模式下GeoIP无法运行。" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "该选项会将每天数据库的信息永久删除,你确定要使能该选项吗?" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "天" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "保留统计信息的天数。最小值为30天。不合法的值代表不使用日常维护功能。" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "电子邮件地址" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "升级报告" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "基于IP的地理位置查询(GeoIP)" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "升级" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "当插件被更新时发送一个报告" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "统计报告" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "附表" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "发送通过报告" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "电子邮件" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "短讯" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "注意: 若要发送 SMS 文本消息请安装 %s 插件。" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "WordPress 短信" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "报告正文" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "输入报告的内容" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "在线用户" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "今日访客" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "今日访问" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "昨日访客" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "昨日访问" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "累计访客" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "累计访问" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "没有一个" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "关于" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "仪表盘" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "以下项目对所有用户有效" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "" + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "谷歌 (Google)" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "禁用map" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "禁用map显示" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "通用设置" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "维护" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "更新" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "一次每周" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "每隔 2 周" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "每隔 4 周" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "统计" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "在侧边栏中显示网站的统计资料。" + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "页面访问总数" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "总计文章" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "总计页面" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "总计回响" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "总计垃圾" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "总计用户" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "平均文章" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "平均回响" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "平均用户" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "最后发表日期" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "名称" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "条目" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "昨日访问" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "选择搜寻引擎种类" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "" + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "WP 统计" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "完整的统计资料,为你的 WordPress 站点的。" + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "设定" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "点击这里访问插件上好" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "访问好页面" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "单击此处打分和评论这上好的插件" + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "率这个插件" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "WP 统计-命中" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "总览" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "搜索" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "词语搜索" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "优化" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "手动" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "累计访客" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "累计访问" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "昨日访客" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "检阅统计数据" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "ODF 文件下载" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "下载 HTML 文件" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "手动文件找不到。" + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "你没有足够权限访问此页" + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "下载 GeoIP 数据库时出错: %s-%s" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "无法读取已下载的GeoIP数据库:%s" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "错误:无法打开%s进行GeoIP数据库读写" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "GeoIP数据库更新成功!" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "下载 browscap 数据库时出错: %s-%s" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "browscap 数据库已成功更新 !" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "已经在当前版本的 browscap!" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "排名前十的浏览器" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "前十个国家" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "今日访问者地图" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "点击统计" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "前 10 页" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "最近访客" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "引用站点排名" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "搜索引擎引用次数" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "摘要" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "最新的搜索词" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "访问量前十名" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "" + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "无法打开GeoIP数据库,请确保你已经在设置页面下载该数据库。" + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "在访客数据库中更新%s GeoIP。" + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "%s 的数据超过 %s 天成功清除。" + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "没有找到要从 %s 清除的记录 !" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "请选择一个大于30天的值" + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "浏览器统计" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "点击切换" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "浏览器" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "浏览器类型" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "平台" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "通过平台的浏览器" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "%s 版本" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "小心:现在没有设定记录过滤信息,所以下面的结果可能不是当前的统计信息。" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "排除统计" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "10 天" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "20 天" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "30 天" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "2个月" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "3个月" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "6个月" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "9个月" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "一年" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "过滤统计表" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "排除在最后一击中" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "天" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "过滤掉的点击数" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "点击率统计图表" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "在最后一击中" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "访客或点击数量" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "访问" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "访客" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "最新搜索词的统计信息" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "#hash #" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "地图" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "页面" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "由" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "全部" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "近期访客统计" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "在线用户" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "帖子 ID 页趋势" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "页的趋势" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "搜索引擎推荐统计" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "在最后一次搜索引擎推荐" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "转介的数目" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "总计" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "前几名的国家" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "排名" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "标志" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "国家" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "访客技术" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "顶级页面" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "顶尖的 5 页趋势" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "顶尖的 5 页趋势统计" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "点击次数" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "发现没有页面标题" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "点击" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "功能快将加入" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "来自网址的引用" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "引用" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "关于 WP Statistics版本 %s" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "网站" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "率和审查" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "更多的信息" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "本产品包含由 MaxMind,可从 %s 创建的 GeoLite2 数据。" + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "其他" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "今天访客地图" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "网址" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "用户在线" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "今天" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "昨日" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "每日总计" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "当前时间和日期:" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "(调整)" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "日期: %s" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "时间: %s" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "点击数" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "浏览器代理" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "拒绝访问" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "%s 已成功删除的代理数据。" + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "请选择期望的条目" + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "%s 平台数据已成功删除。" + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "%s 已成功删除的表数据。" + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "错误,%s 未清空。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "数据库安装程序" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "重新运行安装程序" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "现在安装 !" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "如果由于某种原因您安装可湿性粉剂统计缺少数据库表或其他核心项目,这将会重新执行安装过程。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "数据库索引" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "国家" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "现在更新!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "WP 统计的老式安装允许访客表中一个角落案例中的重复条目。更新安装保护免受这与上表的唯一索引。要创建索引的老式安装重复条目,必须删除第一次。单击 \"Update Now\"将扫描该访客表、 删除重复的条目和添加索引。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "此操作可能需要很长时间,安装与游客表中的多行上。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "WP 统计的老式安装允许访客表中一个角落案例中的重复条目。更新安装保护免受这与上表的唯一索引。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "恭喜,您的安装是已经到目前为止,什么都不做。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "导出" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "导出来源" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "请选择" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "导出格式" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "导出到" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "选择导出文件格式" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "包含头信息" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "将头信息作为导出文件的第一行" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "开始!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "访客" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "确定?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "数据" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "空表" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "所有的表数据将丢失。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "马上清除!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "清除记录条件选择" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "清除比所选日期更加久远的统计数据。日期最小值为30天。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "现在清除。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "删除用户代理类型" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "删除代理" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "该类型的所有访客信息将被删除。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "现在删除!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "删除平台" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "该平台的所有访客数据都将被删除。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "资源" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "PHP中内存使用" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "字节" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "PHP 内存限制" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "内存限制脚本允许消费,在 php.ini 文件中设置。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "%S 表中的行数" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "行" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "行数" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "版本信息" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "WP Statistics 版本" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "你运行的WP Statistics版本" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "PHP版本" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "你使用的PHP版本" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "PHP安全模式" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "PHP安全模式是否开启。GeoIP代码在安全模式下不能工作。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "jQuery版本" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "你使用的jQuery版本" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "cURL版本" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "cURL未安装" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "你使用的PHP cURL扩展版本。GeoIP代码需要cURL,如果cURL没有安装,GeoIP将被禁用。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "已安装" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "未安装" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "文件信息" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "GeoIP 数据库" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "数据库文件不存在" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr "在上创建" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "文件的大小和日期的 GeoIP 数据库。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "browscap.ini 文件" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "browscap.ini 文件不存在。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "文件的大小和 browscap.ini 文件的日期。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "browscap 高速缓存文件" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "browscap 高速缓存文件不存在。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "文件的大小和 browscap 缓存文件的日期。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "客户端信息" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "客户端IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "客户端IP地址" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "用户代理" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "用户代理信息" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "这将替换数据库中的所有 IP 地址的哈希值,无法撤消,是吗?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "GeoIP选项" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "更新任何未知的位置数据在数据库中,这可能需要一段时间" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "IP 地址" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "散列 IP 地址" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "在数据库中的 IP 地址替换为哈希值,您将不能恢复的 IP 地址,在将来要填充位置信息之后,这可能需要一段时间" + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "IP 地址替换为哈希值。" + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "安装例行完成。" + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "资源/信息" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "清除" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "数据库" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "更新" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "WP 统计 V %s" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "访问我们的在线" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "来参观我们伟大的新的 %s 并且保持最新关于 WP Statistics的最新消息。" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "网站" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "打分和评论在好" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "感谢您安装可湿性粉剂统计,我们鼓励您提交" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "评级和审查" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "在好的结束。非常感谢您的反馈 !" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "翻译" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "WP Statistics支持国际化,我们鼓励用户提交的翻译,如果你想要帮助,请访问我们的 %s 可查看当前的状态和 %s。" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "翻译协作站点" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "给我们写信。" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "帮助" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "我们很抱歉你在 WP 统计的问题,我们很高兴能帮忙。这里有一些事情要做之前与我们联系:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "你读过 %s 吗?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "常见问题解答" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "手动" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "你们搜索 %s 的一个类似问题吗?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "支持论坛" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "您收到任何错误消息在互联网上搜索你有吗?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "和几件事要仔细检查:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "如何是你在 php.ini 文件中的 memory_limit?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "禁用任何其他您可能已安装的插件,你试过吗?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "使用默认的 WordPress 主题,你试过吗?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "你双检查插件设置过吗?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "你有安装的所有所需的 PHP 扩展吗?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "你有在浏览器中显示一个空白或不完整的页面吗?你查看网页的源代码并检查是否有任何致命的错误吗?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "你检查过你的 PHP 和 web 服务器错误日志吗?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "仍然没有任何的运气吗?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "然后请打开 %s 上的一个新的线程,我们会尽快回复。" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "好支持论坛" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "或者 %s 支持也是可用的。" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "波斯语" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "访问等级" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "查看WP Statistics信息需要的用户等级" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "管理WP Statistics所需的用户等级" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "在能力水平见到 %s 的详细信息。" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "WordPress 的角色和功能的页" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "提示:manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "在WordPress默认的设置中,上面的每个权限都是向下包含的。所以,比如你选择将publish_posts权限授予某人,那么他将拥有以下权限:作者,编辑者,管理员和超级管理员。" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "如果你需要一个更加稳妥的解决方案来优雅的访问,那么你可以在WordPress的插件目录看一下 %s。" + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "过滤" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "记录排除" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "使能" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "这样会在一个单独的表里面记录所有被过滤掉的点击,但是他不包含其他任何信息。这样虽然会产生很多数据,但是却是非常有用的,特别是当你想知道你的网站总的点击数时。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "过滤用户角色" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "过滤" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "从收集到的数据过滤%s." + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "IP/机器人过滤" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "机器人列表" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "每行的词语用于检测机器人。每个词语必须至少包含4个字符,否则会被忽略掉。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "恢复初始值" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "升级后的强制机器人列表更新" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "要更新到 WP 统计后将重置为默认值的机器人列表生效后才能发生。注意是否启用任何自定义此选项已添加到列表中的机器人将会丢失。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "被排除的 IP 地址列表" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "增加 10.0.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "增加 172.16.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "增加 192.168.1.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "排除的国家列表" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "包括的国家列表" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "排除的主机列表" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "网址过滤" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "被排除在外的登录页" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "将注册页面的点击过滤掉。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "被排除在外的管理页面" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "将管理界面的那次注册点击过滤掉。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "browscap 设置" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "browscap 使用" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "启动" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "Browscap 数据库将下载,并可以用来检测机器人。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "更新 browscap 信息" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "下载 browscap 数据库" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "保存这个页面的更改来下载更新。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "安排每周的更新的 browscap DB" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "下一次更新" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "下载 browscap 数据库将会安排一次一周。" + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "这将删除手册 》,当您保存设置时,你确定吗?" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "此功能不会将 IP 地址存储在数据库中,但相反用唯一的哈希。\"Store 整个用户代理 string\"设置将被禁用,如果选择了此选项。你将不能恢复的 IP 地址在将来恢复位置的信息,如果启用此选项。" + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "用户在线" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "用户在线" \ No newline at end of file diff --git a/plugins/wp-statistics/languages/wp_statistics-zh_TW.mo b/plugins/wp-statistics/languages/wp_statistics-zh_TW.mo new file mode 100644 index 0000000..c6f0b1b Binary files /dev/null and b/plugins/wp-statistics/languages/wp_statistics-zh_TW.mo differ diff --git a/plugins/wp-statistics/languages/wp_statistics-zh_TW.po b/plugins/wp-statistics/languages/wp_statistics-zh_TW.po new file mode 100644 index 0000000..d717477 --- /dev/null +++ b/plugins/wp-statistics/languages/wp_statistics-zh_TW.po @@ -0,0 +1,2750 @@ +# Translation of WP Statistics in Chinese (Taiwan) +# This file is distributed under the same license as the WP Statistics package. +msgid "" +msgstr "" +"PO-Revision-Date: 2016-10-28 20:13:51+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: GlotPress/2.3.0-alpha\n" +"Language: zh_TW\n" +"Project-Id-Version: WP Statistics\n" + +#: wp-statistics/includes/log/widgets/summary.php:52 +msgid "Last 365 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:46 +msgid "Last 30 Days" +msgstr "" + +#: wp-statistics/includes/log/widgets/summary.php:40 +msgid "Last 7 Days" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:158 +msgid "PHP IPv6 Enabled" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:163 +msgid "Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:123 +msgid "A list of IP addresses and subnet masks (one per line) to exclude from statistics collection." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:124 +msgid "For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:125 +msgid "For IPv6 addresses use the fc00::/7 format." +msgstr "" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:129 +msgid "Add fc00::/7" +msgstr "" + +#: wp-statistics/widget.php:46 wp-statistics/widget.php:263 +msgid "Todays Visits" +msgstr "" + +#: wp-statistics/widget.php:53 wp-statistics/widget.php:266 +msgid "Todays Visitors" +msgstr "" + +#: wp-statistics/widget.php:60 +msgid "Yesterdays Visits" +msgstr "" + +#: wp-statistics/widget.php:67 wp-statistics/widget.php:272 +msgid "Yesterdays Visitors" +msgstr "" + +#: wp-statistics/widget.php:74 wp-statistics/widget.php:275 +msgid "Last 7 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:81 wp-statistics/widget.php:278 +msgid "Last 30 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:88 wp-statistics/widget.php:281 +msgid "Last 365 Days Visits" +msgstr "" + +#: wp-statistics/widget.php:95 wp-statistics/widget.php:284 +msgid "Total Visits" +msgstr "" + +#: wp-statistics/widget.php:102 wp-statistics/widget.php:287 +msgid "Total Visitors" +msgstr "" + +#: wp-statistics/widget.php:269 +msgid "Yesterdays visits" +msgstr "" + +#: wp-statistics/ajax.php:215 +msgid "No matching widget found!" +msgstr "沒有發現符合的小工具" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:191 +msgid "Zlib gzopen()" +msgstr "" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:196 +msgid "If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully." +msgstr "如果安裝了gzopen()函數。 gzopen()是成功下載GeoIP資料庫所必需的。" + +#: wp-statistics/wps-updates.php:16 +msgid "Error the download_url() or gzopen() functions do not exist!" +msgstr "錯誤的 download_url()或 gzopen()函數不存在!" + +#: wp-statistics/wps-updates.php:45 +msgid "Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s" +msgstr "設置GeoIP資料庫目錄的權限時出錯,請確保您的Web服務器有該目錄 %s 的寫入權限。" + +#: wp-statistics/wp-statistics.php:97 +msgid "— You are running an unsupported version of PHP." +msgstr "— 您運行的是不被支援的PHP版本。" + +#: wp-statistics/wp-statistics.php:97 +msgid "WP Statistics Disabled" +msgstr "禁用 WP 統計" + +#: wp-statistics/wp-statistics.php:101 +msgid "WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!" +msgstr "WP統計檢測到 PHP %s 版本不支援,WP統計需要PHP %s 版本或更高版本!" + +#: wp-statistics/wp-statistics.php:103 +msgid "Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message." +msgstr "請與您的託管服務提供商聯繫以升級到支持的版本或禁用WP統計數據刪除此消息。" + +#: wp-statistics/ajax.php:293 +msgid "ERROR: Widget not found!" +msgstr "錯誤: 未發現小具" + +#: wp-statistics/dashboard.php:109 wp-statistics/editor.php:66 +#: wp-statistics/includes/log/log.php:20 +msgid "Loading..." +msgstr "載入中..." + +#: wp-statistics/dashboard.php:127 wp-statistics/editor.php:84 +#: wp-statistics/includes/log/log.php:2 +msgid "Reloading..." +msgstr "重新載入..." + +#: wp-statistics/includes/log/top-visitors.php:41 +#: wp-statistics/wp-statistics.php:452 +msgid "Top Visitors" +msgstr "頭號訪客" + +#: wp-statistics/wp-statistics.php:208 +msgid "optimization page" +msgstr "優化頁面" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:35 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:63 +msgid "Enabled" +msgstr "啟用" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:30 +msgid "Purge Old Data Daily" +msgstr "清除每日的舊數據" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:41 +msgid "A WP Cron job will be run daily to purge any data older than a set number of days." +msgstr "WP 排程工具將會每日執行超過設定的日數的舊資料。" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:47 +msgid "Purge data older than" +msgstr "清除舊於...的資料" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:58 +msgid "Purge High Hit Count Visitors Daily" +msgstr "清除每日高點擊次數訪客" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:69 +msgid "A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot)." +msgstr "每天運行WP Cron作業以清除任何用戶的統計數據,其中用戶在一天中的命中次數超過了定義的次數(也就是他們可能是機器人)。" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:81 +msgid "The number of hits required to delete the visitor. Minimum value is 10 hits. Invalid values will disable the daily maintenance." +msgstr "刪除訪問者所需的門檻數值。 最小值為10次點擊。 無效的值將禁用於日常維護。" + +#: wp-statistics/shortcode.php:184 +msgid "The post/page id to get page statistics on." +msgstr "用於獲取頁面統計信息的文章/頁面ID。" + +#: wp-statistics/shortcode.php:181 +msgid "Post/Page ID" +msgstr "文章/頁面ID" + +#: wp-statistics/includes/functions/functions.php:435 +msgid "Ask.com" +msgstr "" + +#: wp-statistics/shortcode.php:158 +msgid "The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use \"total\" to get all recorded dates." +msgstr "獲取統計信息的時間範圍為:strtotime()(http://php.net/manual/en/datetime.formats.php)將用於計算。 使用 \"total\" 獲取所有記錄的日期。" + +#: wp-statistics/wp-statistics.php:182 +msgid "visitor tracking" +msgstr "訪客追蹤" + +#: wp-statistics/wp-statistics.php:183 +msgid "geoip collection" +msgstr "GeoIP 集合" + +#: wp-statistics/wp-statistics.php:199 +msgid "visit database index" +msgstr "訪問資料庫索引" + +#: wp-statistics/wp-statistics.php:208 +msgid "Database updates are required, please go to %s and update the following: %s" +msgstr "需要進行資料庫更新,請到 %s 並更新以下內容:%s" + +#: wp-statistics/wp-statistics.php:199 +msgid "countries database index" +msgstr "國家資料庫索引" + +#: wp-statistics/wp-statistics.php:192 +msgid "search table" +msgstr "搜尋表" + +#: wp-statistics/wp-statistics.php:186 +msgid "settings page" +msgstr "設置頁面" + +#: wp-statistics/wp-statistics.php:186 wp-statistics/wp-statistics.php:208 +msgid "," +msgstr "" + +#: wp-statistics/wp-statistics.php:186 +msgid "The following features are disabled, please go to %s and enable them: %s" +msgstr "以下功能被禁用,請到 %s 並啟用它們:%s" + +#: wp-statistics/wp-statistics.php:181 +msgid "hit tracking" +msgstr "點擊追蹤" + +#: wp-statistics/wp-statistics.php:180 +msgid "online user tracking" +msgstr "在線用戶追蹤" + +#: wp-statistics/wp-statistics.php:793 +msgid "The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: " +msgstr "以下外掛表不存在於資料庫中,請重新運行 %s 安裝例序 %s:" + +#: wp-statistics/includes/optimization/wps-optimization.php:196 +msgid "Search table conversion complete, %d rows added." +msgstr "搜尋表轉換完成, %s 列已新增。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:113 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion." +msgstr "早期安裝的 WP Statistics 會在訪客表中存儲搜索的詳細資訊,這在大型資料庫上可能會有性能問題。 已創建一個新表以更可擴展的方式保存此資訊。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:94 +msgid "Search Table" +msgstr "搜尋表" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:99 +msgid "Convert" +msgstr "轉換" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:106 +msgid "Convert Now!" +msgstr "立即轉換" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:107 +msgid "Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets. A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used." +msgstr "早期安裝的 WP Statistics 會在訪客表中存儲搜索的詳細資訊,這在大型資料庫上可能會有性能問題。創建了一個新表,以便以更可擴展的方式保存此信息,但是舊資料必須首先轉換為新格式,然後才能使用。" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Referrer Spam" +msgstr "垃圾爬蟲" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:279 +msgid "Download of the Piwik Referrer Spam Blacklist database will be scheduled for once a week." +msgstr "將會排程每週一次下載 Piwik Referrer 垃圾爬蟲黑名單資料庫。" + +#: wp-statistics/includes/settings/wps-settings.php:105 +msgid "Externals" +msgstr "外部" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:220 +msgid "Piwik Referrer Spam Blacklist settings" +msgstr "Piwik Referrer 垃圾爬蟲黑名單資料庫" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:255 +msgid "Schedule weekly update of Piwik Referrer Spam Blacklist DB" +msgstr "排程每週一次下載 Piwik Referrer 垃圾爬蟲黑名單資料庫。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:248 +msgid "Download Piwik Referrer Spam Blacklist Database" +msgstr "下載 Piwik Referrer 垃圾爬蟲黑名單資料庫。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:243 +msgid "Update Piwik Referrer Spam Blacklist Info" +msgstr "更新 Piwik Referrer 垃圾爬蟲黑名單資料庫。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:237 +msgid "The Piwik Referrer Spam Blacklist database will be downloaded and used to detect referrer spam." +msgstr "此 Piwik Referrer 垃圾爬蟲黑名單資料庫將會下載並用於檢測垃圾爬蟲。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:225 +msgid "Referrer spam blacklist is provided by Piwik, available from %s." +msgstr "垃圾爬蟲黑名單由 Piwik 提供,可用 %s。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:231 +msgid "Piwik Referrer Spam Blacklist usage" +msgstr "Piwik Referrer 垃圾爬蟲黑名單用法" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:151 +msgid "Treat corrupt browser info as a bot" +msgstr "將不正確的瀏覽器資訊視為 bot" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "404 Pages" +msgstr "404 頁面" + +#: wp-statistics/includes/log/top-visitors.php:26 +msgid "Date" +msgstr "日期" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:154 +msgid "Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot." +msgstr "將任何具有損壞的瀏覽器信息(缺少IP地址或空的用戶代理字串)的訪問者視為機器人。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:218 +msgid "Excluded 404 pages" +msgstr "排除 404 頁面" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:221 +msgid "Exclude any URL that returns a \"404 - Not Found\" message." +msgstr "排除任何返回\"404 - 未找到\"消息的網址。" + +#: wp-statistics/wps-updates.php:37 +msgid "Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s" +msgstr "創建GeoIP數據庫目錄時出錯,請確保您的Web服務器有權限在:%s 中創建目錄" + +#: wp-statistics/includes/settings/tabs/wps-general.php:281 +msgid "Add page title to empty search words" +msgstr "將頁面標題以清空搜索字詞" + +#: wp-statistics/includes/settings/tabs/wps-general.php:287 +msgid "If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by \"~:\" as the search query to help identify what the user may have been searching for." +msgstr "如果搜索引擎被標識為引薦來源網址但不包含搜索查詢,則此選項將以\"~:\"前面的引號替換網頁標題作為搜索查詢,以幫助識別用戶可能搜索的內容。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:218 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:75 +msgid "Purge visitors with more than" +msgstr "清除訪客當超過" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:223 +msgid "hits" +msgstr "點擊數" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:224 +msgid "Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot. This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis. Minimum value is 10 hits." +msgstr "已刪除的用戶統計數據,其中用戶在一天中的點擊次數超過了定義的次數。 這可以用來清除舊的數據,當您的網站被機器人點擊。 這將刪除訪問者及其對網站的點擊,但不會刪除單個網頁點擊,因為該數據未按每次使用記錄。 最小值為10次點擊。" + +#: wp-statistics/includes/functions/purge-hits.php:28 +msgid "No visitors found to purge." +msgstr "未找到需清除的訪問者。" + +#: wp-statistics/includes/functions/purge-hits.php:25 +msgid "%s records purged successfully." +msgstr "%s 筆記錄已成功清除。" + +#: wp-statistics/ajax.php:178 +#: wp-statistics/includes/functions/purge-hits.php:32 +msgid "Number of hits must be greater than or equal to 10!" +msgstr "匹配數必須大於或等於10!" + +#: wp-statistics/shortcode.php:141 +msgid "Page Visits" +msgstr "網頁訪問" + +#: wp-statistics/shortcode.php:144 +msgid "Page Count" +msgstr "頁面計數" + +#: wp-statistics/shortcode.php:145 +msgid "Comment Count" +msgstr "評論計數" + +#: wp-statistics/shortcode.php:146 +msgid "Spam Count" +msgstr "垃圾爬蟲計數" + +#: wp-statistics/shortcode.php:147 +msgid "User Count" +msgstr "用戶計數" + +#: wp-statistics/shortcode.php:148 +msgid "Post Average" +msgstr "文章平均" + +#: wp-statistics/shortcode.php:149 +msgid "Comment Average" +msgstr "評論平均" + +#: wp-statistics/shortcode.php:150 +msgid "User Average" +msgstr "用戶平均" + +#: wp-statistics/shortcode.php:162 +msgid "Search Provider" +msgstr "搜尋提供商" + +#: wp-statistics/shortcode.php:165 +msgid "The search provider to get statistics on." +msgstr "獲取搜尋供應商統計信息。" + +#: wp-statistics/shortcode.php:169 +msgid "Number Format" +msgstr "數值格式" + +#: wp-statistics/shortcode.php:172 +msgid "The format to display numbers in: i18n, english, none." +msgstr "顯示數字的格式: i18n, english, none." + +#: wp-statistics/shortcode.php:176 +msgid "English" +msgstr "En" + +#: wp-statistics/shortcode.php:177 +msgid "International" +msgstr "國際" + +#: wp-statistics/includes/log/exclusions.php:191 +#: wp-statistics/includes/log/hit-statistics.php:164 +msgid "Hits Statistics Summary" +msgstr "點擊統計總計" + +#: wp-statistics/includes/log/exclusions.php:201 +#: wp-statistics/includes/log/hit-statistics.php:175 +msgid "Chart Total" +msgstr "圖表合計" + +#: wp-statistics/includes/log/exclusions.php:206 +#: wp-statistics/includes/log/hit-statistics.php:181 +msgid "All Time Total" +msgstr "全時統計" + +#: wp-statistics/includes/log/log.php:6 +msgid "Have you thought about donating to WP Statistics?" +msgstr "你考慮過捐款給WP統計嗎?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:20 +#: wp-statistics/wp-statistics.php:431 +msgid "Donate" +msgstr "捐款" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "Fell like showing us how much you enjoy WP Statistics? Drop by our %s page and show us some love!" +msgstr "告訴我們你有多喜愛WP統計? 請來我們的 %s 網站頁面,並告訴我們一些您的感覺!" + +#: wp-statistics/includes/settings/tabs/wps-about.php:24 +msgid "donation" +msgstr "捐款" + +#: wp-statistics/includes/log/log.php:6 +msgid "Donate Now!" +msgstr "立即捐款!" + +#: wp-statistics/includes/log/log.php:6 +msgid "Close" +msgstr "關閉" + +#: wp-statistics/shortcode.php:135 +msgid "Select the statistic you wish to display." +msgstr "選擇要顯示的統計。" + +#: wp-statistics/shortcode.php:132 +msgid "Statistic" +msgstr "統計" + +#: wp-statistics/shortcode.php:143 +msgid "Post Count" +msgstr "文章計數" + +#: wp-statistics/shortcode.php:155 +msgid "Time Frame" +msgstr "時限" + +#: wp-statistics/includes/functions/functions.php:957 +msgid "to" +msgstr "到" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "Go" +msgstr "執行" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #5" +msgstr "第5名" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #4" +msgstr "第4名" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #3" +msgstr "第3名" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #1" +msgstr "第1名" + +#: wp-statistics/includes/log/top-pages.php:102 +msgid "Rank #2" +msgstr "第2名" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:60 +msgid "Visits Table" +msgstr "訪問表" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:75 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistits table, delete duplicate entries and add the index." +msgstr "早期安裝的WP統計資訊允許重複項目。 較新的安裝使用表上的唯一索引來防範此問題。 要在舊安裝上創建索引,必須首先刪除重複項目。 單擊\"立即更新\"將掃描 vistits 表,刪除重複的項目並添加索引。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:76 +msgid "This operation could take a long time on installs with many rows in the visits table." +msgstr "此操作在安裝時可能需要很長時間,且在訪問表中會新增很多筆資料。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:82 +msgid "Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "早期安裝的WP統計資訊允許重複項目。 較新的安裝使用表上的唯一索引來防範此問題。 " + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Filtered by" +msgstr "篩選" + +#: wp-statistics/includes/functions/functions.php:951 +#: wp-statistics/includes/functions/functions.php:954 +msgid "Range" +msgstr "範圍" + +#: wp-statistics/includes/functions/functions.php:957 +#: wp-statistics/includes/log/top-visitors.php:29 +msgid "MM/DD/YYYY" +msgstr "MM/DD/YYYY" + +#: wp-statistics/includes/settings/tabs/wps-general.php:342 +msgid "Do not use the translations and instead use the English defaults for WP Statistics (requires two page loads)" +msgstr "不要使用翻譯,而是在 WP Statistics 使用英語預設值(需要載入2次頁面)" + +#: wp-statistics/includes/settings/tabs/wps-general.php:336 +msgid "Force English" +msgstr "強制使用英語" + +#: wp-statistics/includes/settings/tabs/wps-general.php:331 +msgid "Languages" +msgstr "語言" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:230 +msgid "Note: this option will NOT handle url parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored." +msgstr "注意:這個選項不會處理 url ?後面的任何參數,只有腳本名稱。 小於兩個字串的項目將被忽略。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:228 +msgid "A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection." +msgstr "要從統計資訊收集中排除的本地網址列表(例: /wordpress/about, 每行一筆)" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:225 +msgid "Excluded URLs list" +msgstr "排除 URLs 列表" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Excluded URL" +msgstr "排除 URL" + +#: wp-statistics/includes/log/widgets/quickstats.php:52 +msgid "Last 365 Days (Year)" +msgstr "最近365天(年)" + +#: wp-statistics/includes/log/widgets/quickstats.php:46 +msgid "Last 30 Days (Month)" +msgstr "最近30天(月)" + +#: wp-statistics/includes/log/widgets/quickstats.php:40 +msgid "Last 7 Days (Week)" +msgstr "最近7天(週)" + +#: wp-statistics/includes/functions/functions.php:441 +msgid "Yahoo!" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:442 +msgid "Yandex" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:438 +msgid "clearch.org" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:439 +msgid "DuckDuckGo" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:437 +msgid "Bing" +msgstr "" + +#: wp-statistics/includes/functions/functions.php:436 +msgid "Baidu" +msgstr "" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Feeds" +msgstr "饋送" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "User Role" +msgstr "用戶角色" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Login Page" +msgstr "登入頁面" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Admin Page" +msgstr "管理頁面" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Self Referral" +msgstr "自我推薦" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "IP Match" +msgstr "IP匹配" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot" +msgstr "機器人" + +#: wp-statistics/includes/log/online.php:100 +msgid "Currently there are no users online in the site." +msgstr "目前在網站上沒有用戶在線。" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Robot Threshold" +msgstr "機器人門檻值" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Honey Pot" +msgstr "誘導" + +#: wp-statistics/includes/log/widgets/page.php:8 +msgid "Page Trending Stats" +msgstr "頁面趨勢統計" + +#: wp-statistics/includes/log/exclusions.php:24 +msgid "Hostname" +msgstr "主機名稱" + +#: wp-statistics/includes/settings/tabs/wps-general.php:93 +#: wp-statistics/includes/settings/tabs/wps-general.php:133 +#: wp-statistics/includes/settings/tabs/wps-general.php:149 +#: wp-statistics/includes/settings/tabs/wps-general.php:188 +#: wp-statistics/includes/settings/tabs/wps-general.php:200 +#: wp-statistics/includes/settings/tabs/wps-general.php:229 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:122 +msgid "Enable or disable this feature" +msgstr "啟用或停用這功能" + +#: wp-statistics/includes/settings/tabs/wps-general.php:99 +msgid "Check for online users every" +msgstr "檢查在線用戶間隔" + +#: wp-statistics/includes/settings/tabs/wps-general.php:104 +msgid "Second" +msgstr "第二次" + +#: wp-statistics/includes/settings/tabs/wps-general.php:105 +msgid "Time for the check accurate online user in the site. Now: %s Second" +msgstr "檢查有效在線用戶的間隔。 現在:每 %s 秒" + +#: wp-statistics/includes/settings/tabs/wps-general.php:111 +msgid "Record all user" +msgstr "記錄全部使用者" + +#: wp-statistics/includes/settings/tabs/wps-general.php:117 +msgid "Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting." +msgstr "忽略排除設置,並記錄所有在線用戶(包括自我引薦和漫遊器)。 應僅用於故障排除。" + +#: wp-statistics/includes/settings/tabs/wps-general.php:155 +msgid "Store entire user agent string" +msgstr "存儲完整的使用者代理字串" + +#: wp-statistics/includes/settings/tabs/wps-general.php:161 +msgid "Only enabled for debugging" +msgstr "僅啟用調試" + +#: wp-statistics/includes/settings/tabs/wps-general.php:167 +msgid "Coefficient per visitor" +msgstr "訪客係數" + +#: wp-statistics/includes/settings/tabs/wps-general.php:172 +msgid "For each visit to account for several hits. Currently %s." +msgstr "每一個訪問計算多少位訪客,現時 %s " + +#: wp-statistics/includes/settings/tabs/wps-general.php:177 +#: wp-statistics/includes/settings/tabs/wps-general.php:182 +#: wp-statistics/wp-statistics.php:420 wp-statistics/wp-statistics.php:534 +msgid "Pages" +msgstr "頁" + +#: wp-statistics/includes/settings/tabs/wps-general.php:194 +msgid "Track all pages" +msgstr "跟蹤所有頁" + +#: wp-statistics/includes/settings/tabs/wps-general.php:209 +msgid "Strip parameters from URI" +msgstr "從URI剝離參數" + +#: wp-statistics/includes/settings/tabs/wps-general.php:215 +msgid "This will remove anything after the ? in a URL." +msgstr "這將刪除在URL ? 後的任何東西。" + +#: wp-statistics/includes/settings/tabs/wps-general.php:223 +msgid "Disable hits column in post/pages list" +msgstr "禁止點擊文章/頁面清單中的直欄" + +#: wp-statistics/includes/settings/tabs/wps-general.php:234 +msgid "Miscellaneous" +msgstr "雜項" + +#: wp-statistics/includes/settings/tabs/wps-general.php:239 +msgid "Show stats in menu bar" +msgstr "在菜單中顯示" + +#: wp-statistics/includes/settings/tabs/wps-general.php:244 +msgid "No" +msgstr "否" + +#: wp-statistics/includes/settings/tabs/wps-general.php:245 +msgid "Yes" +msgstr "是" + +#: wp-statistics/includes/settings/tabs/wps-general.php:247 +msgid "Show stats in admin menu bar" +msgstr "在管理選單中顯示" + +#: wp-statistics/includes/settings/tabs/wps-general.php:253 +msgid "Hide admin notices about non active features" +msgstr "隱藏管理員通知有關未啟動功能" + +#: wp-statistics/includes/settings/tabs/wps-general.php:259 +msgid "By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices." +msgstr "預設情況下 WP 統計顯示一條警報,如果任何核心功能被禁用每個管理員頁面上,此選項將禁用這些通告。" + +#: wp-statistics/includes/settings/tabs/wps-general.php:265 +msgid "Delete the manual" +msgstr "刪除手冊 》" + +#: wp-statistics/includes/settings/tabs/wps-general.php:271 +msgid "By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future." +msgstr "預設情況下 WP 統計資料存儲管理員手動在外掛程式目錄 (~ 5 meg),如果啟用了此選項,則將刪除它現在和將來的升級期間。" + +#: wp-statistics/includes/settings/tabs/wps-general.php:276 +msgid "Search Engines" +msgstr "搜尋引擎" + +#: wp-statistics/includes/settings/tabs/wps-general.php:293 +msgid "Disabling all search engines is not allowed, doing so will result in all search engines being active." +msgstr "禁用所有搜尋引擎不允許的這樣做會導致所有活躍的搜尋引擎。" + +#: wp-statistics/includes/settings/tabs/wps-general.php:308 +msgid "disable" +msgstr "禁用" + +#: wp-statistics/includes/settings/tabs/wps-general.php:309 +msgid "Disable %s from data collection and reporting." +msgstr "禁用將 %s 從資料收集和報告。" + +#: wp-statistics/includes/settings/tabs/wps-general.php:315 +msgid "Charts" +msgstr "圖表" + +#: wp-statistics/includes/settings/tabs/wps-general.php:320 +msgid "Include totals" +msgstr "包括總計" + +#: wp-statistics/includes/settings/tabs/wps-general.php:326 +msgid "Add a total line to charts with multiple values, like the search engine referrals" +msgstr "將總時間表添加到圖表具有多個值,比如搜尋引擎推薦" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:32 +msgid "GeoIP settings" +msgstr "GeoIP 設置" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:37 +msgid "IP location services provided by GeoLite2 data created by MaxMind, available from %s." +msgstr "提供創建的 MaxMind,可從 %s 的 GeoLite2 資料的 IP 位置服務。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:47 +msgid "GeoIP collection" +msgstr "GeoIP 集合" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:53 +msgid "For get more information and location (country) from visitor, enable this feature." +msgstr "為獲得更多的資訊和位置 (國家) 從訪客,啟用此功能。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:59 +msgid "Update GeoIP Info" +msgstr "更新 GeoIP 資訊" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:64 +msgid "Download GeoIP Database" +msgstr "下載 GeoIP 資料庫" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:71 +msgid "Schedule monthly update of GeoIP DB" +msgstr "GeoIP DB 每月更新安排" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:97 +msgid "Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month." +msgstr "下載 GeoIP 資料庫將定于這個月的第一個星期二後 2 天。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:98 +msgid "This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place)." +msgstr "此選項還會下載資料庫,如果本地檔案大小小於 1k (這通常意味著帶有該外掛程式的存根是仍然存在)。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:104 +msgid "Populate missing GeoIP after update of GeoIP DB" +msgstr "填充缺失的 GeoIP GeoIP 資料庫更新後" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:110 +msgid "Update any missing GeoIP data after downloading a new database." +msgstr "下載一個新的資料庫後,更新任何缺失的 GeoIP 資料。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:116 +msgid "Country code for private IP addresses" +msgstr "私有IP位址的國碼" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:121 +msgid "The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use \"000\" (three zeros) to use \"Unknown\" as the country code." +msgstr "國際標準是2個字元國碼(例: US = United States, CA = Canada, 等等) 如果是私有IP位址(無法追蹤路由,例:10.0.0.1, 192.158.1.1, 127.0.0.1 等),便使用\"000\" (3個0) 代表\"未知\"的國碼。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:132 +msgid "GeoIP collection is disabled due to the following reasons:" +msgstr "GeoIP 集合被禁用以下原因:" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:135 +msgid "GeoIP collection requires PHP %s or above, it is currently disabled due to the installed PHP version being " +msgstr "GeoIP 集合需要 PHP %s 或以上,它目前禁用,原因是已安裝的 PHP 版本正在" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:140 +msgid "GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!" +msgstr "GeoIP 集合需要 cURL PHP 擴展,而它並沒有載入到您的 PHP 版本 !" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:146 +msgid "GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!" +msgstr "GeoIP 收集需要 BC 數學 PHP 擴展和它載入您的 PHP 版本 !" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:152 +msgid "PHP safe mode detected! GeoIP collection is not supported with PHP's safe mode enabled!" +msgstr "PHP 安全模式下檢測到 !啟用了 PHP 的安全模式,不支援 GeoIP 集合 !" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:20 +msgid "This will permanently delete data from the database each day, are you sure you want to enable this option?" +msgstr "這將永久刪除資料庫每日資料,您確定您想要啟用此選項嗎?" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:52 +msgid "Days" +msgstr "天" + +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:53 +msgid "The number of days to keep statistics for. Minimum value is 30 days. Invalid values will disable the daily maintenance." +msgstr "天保持統計數。最小值為 30 天。無效值將禁用的日常維護。" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:44 +msgid "Common Report Options" +msgstr "常見報表選項" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:49 +msgid "E-mail addresses" +msgstr "電子郵件地址" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:54 +msgid "A comma separated list of e-mail addresses to send reports to." +msgstr "以逗號分隔的要向其發送報告的電子郵件地址列表。" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:59 +msgid "Update Reports" +msgstr "更新報告" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:64 +msgid "Browscap" +msgstr "Browscap" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:70 +msgid "Send a report whenever the browscap.ini is updated." +msgstr "每當browscap.ini更新時發送報告。" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:76 +msgid "GeoIP" +msgstr "GeoIP" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:82 +msgid "Send a report whenever the GeoIP database is updated." +msgstr "每當更新GeoIP資料庫時發送報告。" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:88 +msgid "Pruning" +msgstr "清除中" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:94 +msgid "Send a report whenever the pruning of database is run." +msgstr "每當運行清除資料庫時發送報告。" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:100 +msgid "Upgrade" +msgstr "升級" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:106 +msgid "Send a report whenever the plugin is upgraded." +msgstr "每當外掛升級時發送報告。" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:111 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:116 +#: wp-statistics/schedule.php:221 +msgid "Statistical reporting" +msgstr "統計報告" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:129 +msgid "Schedule" +msgstr "排程" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:153 +msgid "Select how often to receive statistical report." +msgstr "選擇接收統計報告的頻率。" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:159 +msgid "Send reports via" +msgstr "發送報告透過" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:165 +msgid "Email" +msgstr "電子郵件" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:167 +msgid "SMS" +msgstr "SMS" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:170 +msgid "Select delivery method for statistical report." +msgstr "選擇統計報表的傳送方式。" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "Note: To send SMS text messages please install the %s plugin." +msgstr "注意: 若要發送 SMS 簡訊請安裝 %s 外掛程式。" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:173 +msgid "WordPress SMS" +msgstr "WordPress SMS 簡訊" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:180 +msgid "Report body" +msgstr "報告本文" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:185 +msgid "Enter the contents of the report." +msgstr "輸入報告的內容。" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:187 +msgid "Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the admin manual for a list of codes available) are supported in the body of the message. Here are some examples:" +msgstr "安裝WordPress支持的任何短代碼,包括WP統計的所有短代碼(請參閱管理手冊的可用代碼列表)在文章本文中被支援。 這裡有些例子:" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:188 +#: wp-statistics/wp-statistics.php:639 +msgid "User Online" +msgstr "在線用戶" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:189 +msgid "Today Visitor" +msgstr "累計訪客" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:190 +msgid "Today Visit" +msgstr "累計點擊" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:191 +msgid "Yesterday Visitor" +msgstr "昨日訪客" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:192 +msgid "Yesterday Visit" +msgstr "昨日點擊" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:193 +msgid "Total Visitor" +msgstr "累計訪客" + +#: wp-statistics/includes/settings/tabs/wps-notifications.php:194 +msgid "Total Visit" +msgstr "累計點擊" + +#: wp-statistics/shortcode.php:175 +msgid "None" +msgstr "一個也沒有" + +#: wp-statistics/includes/settings/wps-settings.php:108 +msgid "About" +msgstr "關於" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:20 +msgid "Dashboard" +msgstr "儀表" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:24 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:44 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:64 +msgid "The following items are global to all users." +msgstr "以下項目對所有用戶都是全局的。" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:29 +msgid "Disable dashboard widgets" +msgstr "禁用儀表板小工具" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:35 +msgid "Disable the dashboard widgets." +msgstr "禁用此儀表板小工具" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:40 +msgid "Page/Post Editor" +msgstr "頁面/文章編輯器" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:49 +msgid "Disable post/page editor widget" +msgstr "禁用頁面/文章編輯器" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:55 +msgid "Disable the page/post editor widget." +msgstr "禁用此頁面/文章編輯器" + +#: wp-statistics/includes/functions/functions.php:440 +msgid "Google" +msgstr "谷歌 (Google)" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:69 +msgid "Disable map" +msgstr "禁用地圖" + +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:75 +msgid "Disable the map display" +msgstr "禁用地圖顯示" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:15 +msgid "WP Statisitcs Removal" +msgstr "WP 統計卸載" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:20 +msgid "Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin." +msgstr "卸載 WP Statistics 不會刪除數據和設置,您可以使用此選項從安裝中刪除 WP Statistics 數據,然後再安裝外掛。" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:23 +msgid "Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed." +msgstr "提交此表單後,網頁加載過程中的設置將被刪除,但WP統計信息仍會顯示在您的管理菜單中,直到執行其他網頁加載為止。" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:29 +msgid "Remove data and settings" +msgstr "刪除資料與設置" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:34 +msgid "Remove" +msgstr "刪除" + +#: wp-statistics/includes/settings/tabs/wps-removal.php:35 +msgid "Remove data and settings, this action cannot be undone." +msgstr "刪除數據和設置,此操作無法撤消。" + +#: wp-statistics/includes/settings/wps-settings.php:100 +msgid "General" +msgstr "一般" + +#: wp-statistics/includes/settings/wps-settings.php:101 +msgid "Notifications" +msgstr "通知" + +#: wp-statistics/includes/settings/wps-settings.php:102 +msgid "Dashboard/Overview" +msgstr "儀表板/概述" + +#: wp-statistics/includes/settings/wps-settings.php:106 +msgid "Maintenance" +msgstr "維護" + +#: wp-statistics/includes/settings/wps-settings.php:107 +msgid "Removal" +msgstr "刪除" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:85 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:237 +#: wp-statistics/includes/settings/tabs/wps-externals.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:349 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:88 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:201 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:84 +#: wp-statistics/includes/settings/tabs/wps-removal.php:42 +msgid "Update" +msgstr "更新" + +#: wp-statistics/schedule.php:10 +msgid "Once Weekly" +msgstr "每週一次" + +#: wp-statistics/schedule.php:17 +msgid "Once Every 2 Weeks" +msgstr "每隔 2 周" + +#: wp-statistics/schedule.php:24 +msgid "Once Every 4 Weeks" +msgstr "每隔 4 周" + +#: wp-statistics/widget.php:14 wp-statistics/wp-statistics.php:410 +#: wp-statistics/wp-statistics.php:487 +msgid "Statistics" +msgstr "統計" + +#: wp-statistics/widget.php:15 +msgid "Show site stats in sidebar." +msgstr "在側邊欄中顯示網站的統計資料。" + +#: wp-statistics/widget.php:109 wp-statistics/widget.php:290 +msgid "Total Page Views" +msgstr "頁面訪問總數" + +#: wp-statistics/widget.php:117 +msgid "Search Engine referrals" +msgstr "" + +#: wp-statistics/widget.php:124 wp-statistics/widget.php:313 +msgid "Total Posts" +msgstr "文章總計" + +#: wp-statistics/widget.php:131 wp-statistics/widget.php:316 +msgid "Total Pages" +msgstr "頁面總計" + +#: wp-statistics/widget.php:138 wp-statistics/widget.php:319 +msgid "Total Comments" +msgstr "迴響總計" + +#: wp-statistics/widget.php:145 wp-statistics/widget.php:322 +msgid "Total Spams" +msgstr "垃圾訊息總計" + +#: wp-statistics/widget.php:152 wp-statistics/widget.php:325 +msgid "Total Users" +msgstr "用戶總計" + +#: wp-statistics/widget.php:159 wp-statistics/widget.php:328 +msgid "Average Posts" +msgstr "平均文章" + +#: wp-statistics/widget.php:166 wp-statistics/widget.php:331 +msgid "Average Comments" +msgstr "平均迴響" + +#: wp-statistics/widget.php:173 wp-statistics/widget.php:334 +msgid "Average Users" +msgstr "平均用戶" + +#: wp-statistics/shortcode.php:151 wp-statistics/widget.php:180 +#: wp-statistics/widget.php:337 +msgid "Last Post Date" +msgstr "上次發表日期" + +#: wp-statistics/widget.php:253 +msgid "Name" +msgstr "名稱" + +#: wp-statistics/widget.php:257 +msgid "Items" +msgstr "項目" + +#: wp-statistics/wp-statistics.php:664 +msgid "Yesterday visit" +msgstr "昨日參訪" + +#: wp-statistics/widget.php:296 +msgid "Select type of search engine" +msgstr "選擇搜尋引擎類型" + +#: wp-statistics/wp-statistics.php:124 +msgid "WP Statistics has been removed, please disable and delete it." +msgstr "WP 統計已被刪除,請禁用並刪除它。" + +#: wp-statistics/wp-statistics.php:56 +msgid "WP Statistics" +msgstr "WP 統計" + +#: wp-statistics/wp-statistics.php:57 +msgid "Complete statistics for your WordPress site." +msgstr "完整的統計資料,為你的 WordPress 網站的。" + +#: wp-statistics/wp-statistics.php:315 wp-statistics/wp-statistics.php:430 +#: wp-statistics/wp-statistics.php:541 +msgid "Settings" +msgstr "設定" + +#: wp-statistics/wp-statistics.php:327 +msgid "Click here to visit the plugin on WordPress.org" +msgstr "點擊這裡訪問在 WordPress.org 的外掛程式" + +#: wp-statistics/wp-statistics.php:327 +msgid "Visit WordPress.org page" +msgstr "訪問 WordPress.org 頁面" + +#: wp-statistics/wp-statistics.php:330 +msgid "Click here to rate and review this plugin on WordPress.org" +msgstr "按一下此處評價和評論這 WordPress.org 的外掛程式" + +#: wp-statistics/wp-statistics.php:330 +msgid "Rate this plugin" +msgstr "評價這個外掛" + +#: wp-statistics/wp-statistics.php:374 +msgid "WP Statistics - Hits" +msgstr "WP 統計-點擊" + +#: wp-statistics/wp-statistics.php:413 wp-statistics/wp-statistics.php:490 +#: wp-statistics/wp-statistics.php:528 +msgid "Overview" +msgstr "概述" + +#: wp-statistics/wp-statistics.php:419 wp-statistics/wp-statistics.php:533 +msgid "Online" +msgstr "在線" + +#: wp-statistics/wp-statistics.php:421 wp-statistics/wp-statistics.php:535 +msgid "Referrers" +msgstr "參照網址" + +#: wp-statistics/shortcode.php:142 wp-statistics/wp-statistics.php:422 +#: wp-statistics/wp-statistics.php:536 +msgid "Searches" +msgstr "搜索" + +#: wp-statistics/wp-statistics.php:423 wp-statistics/wp-statistics.php:537 +msgid "Search Words" +msgstr "搜索字詞" + +#: wp-statistics/wp-statistics.php:424 wp-statistics/wp-statistics.php:538 +msgid "Top Visitors Today" +msgstr "今日排名在前的訪客" + +#: wp-statistics/wp-statistics.php:429 wp-statistics/wp-statistics.php:540 +msgid "Optimization" +msgstr "優化" + +#: wp-statistics/wp-statistics.php:435 wp-statistics/wp-statistics.php:504 +msgid "Manual" +msgstr "手動" + +#: wp-statistics/wp-statistics.php:519 +msgid "Site" +msgstr "網站" + +#: wp-statistics/wp-statistics.php:520 +msgid "Options" +msgstr "選項" + +#: wp-statistics/wp-statistics.php:646 +msgid "Today visitor" +msgstr "累計訪客" + +#: wp-statistics/wp-statistics.php:652 +msgid "Today visit" +msgstr "累計點擊" + +#: wp-statistics/wp-statistics.php:658 +msgid "Yesterday visitor" +msgstr "昨日訪客" + +#: wp-statistics/wp-statistics.php:670 +msgid "View Stats" +msgstr "檢閱統計數據" + +#: wp-statistics/wp-statistics.php:694 +msgid "Download ODF file" +msgstr "ODF 檔下載" + +#: wp-statistics/wp-statistics.php:695 +msgid "Download HTML file" +msgstr "下載 HTML 檔案" + +#: wp-statistics/wp-statistics.php:699 +msgid "Manual file not found." +msgstr "手動檔找不到。" + +#: wp-statistics/wp-statistics.php:766 wp-statistics/wp-statistics.php:893 +#: wp-statistics/wp-statistics.php:929 +msgid "You do not have sufficient permissions to access this page." +msgstr "你沒有足夠權限訪問此頁" + +#: wp-statistics/wp-statistics.php:303 +msgid "WP Statistics %s installed on" +msgstr "WP 統計 %s 已安裝" + +#: wp-statistics/wps-updates.php:54 +msgid "Error downloading GeoIP database from: %s - %s" +msgstr "下載 GeoIP 資料庫時出錯: %s-%s" + +#: wp-statistics/wps-updates.php:65 +msgid "Error could not open downloaded GeoIP database for reading: %s" +msgstr "錯誤: 不能打開閱讀下載的 GeoIP 資料庫: %s" + +#: wp-statistics/wps-updates.php:72 +msgid "Error could not open destination GeoIP database for writing %s" +msgstr "錯誤: 不能打開target GeoIP 資料庫寫入 %s" + +#: wp-statistics/wps-updates.php:88 +msgid "GeoIP Database updated successfully!" +msgstr "GeoIP 資料庫已成功更新 !" + +#: wp-statistics/wps-updates.php:113 +msgid "GeoIP update on" +msgstr "GeoIP 已更新" + +#: wp-statistics/wps-updates.php:180 +msgid "Error downloading browscap database from: %s - %s" +msgstr "下載 browscap 資料庫時出錯: %s-%s" + +#: wp-statistics/wps-updates.php:289 +msgid "browscap database updated successfully!" +msgstr "browscap 資料庫已成功更新 !" + +#: wp-statistics/wps-updates.php:299 +msgid "browscap database updated failed! Cache file too large, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:307 +msgid "browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini." +msgstr "" + +#: wp-statistics/wps-updates.php:329 +msgid "browscap already at current version!" +msgstr "已經在當前版本的 browscap !" + +#: wp-statistics/wps-updates.php:342 +msgid "Browscap.ini update on" +msgstr "" + +#: wp-statistics/dashboard.php:56 +msgid "Quick Stats" +msgstr "快速統計" + +#: wp-statistics/dashboard.php:57 +#: wp-statistics/includes/log/widgets/browsers.php:41 +msgid "Top 10 Browsers" +msgstr "排名前 10 的瀏覽器" + +#: wp-statistics/dashboard.php:58 wp-statistics/wp-statistics.php:473 +msgid "Top 10 Countries" +msgstr "排名前 10 的國家" + +#: wp-statistics/dashboard.php:59 +msgid "Today's Visitor Map" +msgstr "今日訪客分佈圖" + +#: wp-statistics/dashboard.php:60 wp-statistics/editor.php:46 +#: wp-statistics/includes/log/hit-statistics.php:8 +#: wp-statistics/wp-statistics.php:448 +msgid "Hit Statistics" +msgstr "點擊統計" + +#: wp-statistics/dashboard.php:61 wp-statistics/wp-statistics.php:463 +msgid "Top 10 Pages" +msgstr "排名前 10 頁" + +#: wp-statistics/dashboard.php:62 +#: wp-statistics/includes/log/last-visitor.php:36 +#: wp-statistics/wp-statistics.php:455 +msgid "Recent Visitors" +msgstr "最近訪客" + +#: wp-statistics/dashboard.php:63 +#: wp-statistics/includes/log/top-referring.php:59 +#: wp-statistics/includes/log/top-referring.php:81 +#: wp-statistics/wp-statistics.php:470 +msgid "Top Referring Sites" +msgstr "引用網站排名" + +#: wp-statistics/dashboard.php:64 +#: wp-statistics/includes/log/widgets/quickstats.php:75 +#: wp-statistics/includes/log/widgets/summary.php:75 +#: wp-statistics/widget.php:293 wp-statistics/wp-statistics.php:453 +msgid "Search Engine Referrals" +msgstr "搜尋引擎參照" + +#: wp-statistics/dashboard.php:65 wp-statistics/wp-statistics.php:468 +msgid "Summary" +msgstr "摘要" + +#: wp-statistics/dashboard.php:66 wp-statistics/includes/log/last-search.php:31 +#: wp-statistics/wp-statistics.php:454 +msgid "Latest Search Words" +msgstr "最近使用搜索字詞" + +#: wp-statistics/dashboard.php:67 +msgid "Top 10 Visitors Today" +msgstr "今日排名前 10 名訪客" + +#: wp-statistics/editor.php:58 +msgid "This post is not yet published." +msgstr "此文章尚未發佈" + +#: wp-statistics/includes/functions/geoip-populate.php:24 +msgid "Unable to load the GeoIP database, make sure you have downloaded it in the settings page." +msgstr "無法載入 GeoIP 資料庫,請確保您已經下載了它在設置頁。" + +#: wp-statistics/includes/functions/geoip-populate.php:48 +msgid "Updated %s GeoIP records in the visitors database." +msgstr "更新 %s GeoIP 訪問資料庫中的記錄。" + +#: wp-statistics/includes/functions/purge.php:21 +#: wp-statistics/includes/functions/purge.php:39 +#: wp-statistics/includes/functions/purge.php:50 +#: wp-statistics/includes/functions/purge.php:61 +#: wp-statistics/includes/functions/purge.php:94 +msgid "%s data older than %s days purged successfully." +msgstr "%s 的資料超過 %s 天成功清除。" + +#: wp-statistics/includes/functions/purge.php:23 +#: wp-statistics/includes/functions/purge.php:41 +#: wp-statistics/includes/functions/purge.php:52 +#: wp-statistics/includes/functions/purge.php:63 +#: wp-statistics/includes/functions/purge.php:96 +msgid "No records found to purge from %s!" +msgstr "沒有找到要從 %s 清除的記錄 !" + +#: wp-statistics/includes/functions/purge-hits.php:45 +#: wp-statistics/includes/functions/purge.php:109 +msgid "Database pruned on" +msgstr "資料庫已清除" + +#: wp-statistics/includes/functions/purge.php:114 +msgid "Please select a value over 30 days." +msgstr "請選擇一個值超過 30 天。" + +#: wp-statistics/includes/log/all-browsers.php:21 +msgid "Browser Statistics" +msgstr "瀏覽器統計" + +#: wp-statistics/includes/log/all-browsers.php:29 +#: wp-statistics/includes/log/all-browsers.php:113 +#: wp-statistics/includes/log/all-browsers.php:248 +#: wp-statistics/includes/log/exclusions.php:72 +#: wp-statistics/includes/log/exclusions.php:190 +#: wp-statistics/includes/log/hit-statistics.php:26 +#: wp-statistics/includes/log/hit-statistics.php:163 +#: wp-statistics/includes/log/last-search.php:64 +#: wp-statistics/includes/log/last-visitor.php:67 +#: wp-statistics/includes/log/online.php:17 +#: wp-statistics/includes/log/page-statistics.php:34 +#: wp-statistics/includes/log/search-statistics.php:27 +#: wp-statistics/includes/log/top-countries.php:26 +#: wp-statistics/includes/log/top-pages.php:29 +#: wp-statistics/includes/log/top-pages.php:155 +#: wp-statistics/includes/log/top-referring.php:77 +#: wp-statistics/includes/log/top-visitors.php:40 +msgid "Click to toggle" +msgstr "按一下可切換" + +#: wp-statistics/includes/log/all-browsers.php:30 +#: wp-statistics/wp-statistics.php:415 wp-statistics/wp-statistics.php:469 +#: wp-statistics/wp-statistics.php:529 +msgid "Browsers" +msgstr "瀏覽器" + +#: wp-statistics/includes/log/all-browsers.php:57 +msgid "Browsers by type" +msgstr "瀏覽器類型" + +#: wp-statistics/includes/log/all-browsers.php:114 +#: wp-statistics/includes/log/widgets/top.visitors.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:313 +msgid "Platform" +msgstr "平臺" + +#: wp-statistics/includes/log/all-browsers.php:141 +msgid "Browsers by platform" +msgstr "通過平臺的瀏覽器" + +#: wp-statistics/includes/log/all-browsers.php:249 +msgid "%s Version" +msgstr "%s 版本" + +#: wp-statistics/includes/log/exclusions.php:8 +msgid "Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!" +msgstr "注意:尚未設定排除項目,接下來的報告可能無法反映當前統計資訊 !" + +#: wp-statistics/includes/log/exclusions.php:64 +msgid "Exclusions Statistics" +msgstr "排除統計" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "10 Days" +msgstr "10 天" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "20 Days" +msgstr "20 天" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "30 Days" +msgstr "30 天" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "2 Months" +msgstr "2 個月" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "3 Months" +msgstr "3 個月" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "6 Months" +msgstr "6 個月" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "9 Months" +msgstr "9 個月" + +#: wp-statistics/includes/functions/functions.php:895 +msgid "1 Year" +msgstr "1 年" + +#: wp-statistics/includes/log/exclusions.php:73 +msgid "Exclusions Statistical Chart" +msgstr "排除統計圖表" + +#: wp-statistics/includes/log/exclusions.php:95 +msgid "Excluded hits in the last" +msgstr "排除最後點擊" + +#: wp-statistics/includes/log/exclusions.php:95 +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/hits.php:44 +#: wp-statistics/includes/log/widgets/search.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:208 +msgid "days" +msgstr "天" + +#: wp-statistics/includes/log/exclusions.php:116 +msgid "Number of excluded hits" +msgstr "被排除在外的點擊次數" + +#: wp-statistics/includes/log/hit-statistics.php:27 +msgid "Hits Statistics Chart" +msgstr "點擊率統計圖表" + +#: wp-statistics/includes/log/hit-statistics.php:66 +#: wp-statistics/includes/log/widgets/hits.php:44 +msgid "Hits in the last" +msgstr "最後點擊" + +#: wp-statistics/includes/log/hit-statistics.php:87 +#: wp-statistics/includes/log/widgets/hits.php:65 +msgid "Number of visits and visitors" +msgstr "訪客或點擊數量" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:170 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:24 +#: wp-statistics/includes/log/widgets/summary.php:24 +msgid "Visit" +msgstr "點擊" + +#: wp-statistics/includes/log/hit-statistics.php:101 +#: wp-statistics/includes/log/hit-statistics.php:171 +#: wp-statistics/includes/log/widgets/hits.php:79 +#: wp-statistics/includes/log/widgets/quickstats.php:23 +#: wp-statistics/includes/log/widgets/summary.php:23 +msgid "Visitor" +msgstr "訪客" + +#: wp-statistics/includes/log/last-search.php:65 +msgid "Latest Search Word Statistics" +msgstr "最新搜索字詞的統計資訊" + +#: wp-statistics/includes/log/last-search.php:110 +#: wp-statistics/includes/log/last-visitor.php:101 +#: wp-statistics/includes/log/online.php:50 +#: wp-statistics/includes/log/widgets/jqv.map.php:55 +#: wp-statistics/includes/log/widgets/recent.php:14 +#: wp-statistics/includes/log/widgets/words.php:27 +msgid "#hash#" +msgstr "#hash #" + +#: wp-statistics/includes/log/last-search.php:115 +#: wp-statistics/includes/log/last-visitor.php:106 +#: wp-statistics/includes/log/online.php:55 +#: wp-statistics/includes/log/top-referring.php:112 +#: wp-statistics/includes/log/widgets/recent.php:19 +#: wp-statistics/includes/log/widgets/words.php:42 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:60 +msgid "Map" +msgstr "分佈圖" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "Page" +msgstr "頁面" + +#: wp-statistics/includes/log/last-search.php:159 +#: wp-statistics/includes/log/last-visitor.php:139 +#: wp-statistics/includes/log/online.php:109 +#: wp-statistics/includes/log/top-pages.php:205 +#: wp-statistics/includes/log/top-referring.php:153 +msgid "From" +msgstr "由" + +#: wp-statistics/includes/log/last-search.php:47 +#: wp-statistics/includes/log/last-visitor.php:38 +#: wp-statistics/includes/log/top-referring.php:67 +#: wp-statistics/includes/log/top-referring.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:192 +#: wp-statistics/widget.php:309 +msgid "All" +msgstr "全部" + +#: wp-statistics/includes/log/last-visitor.php:68 +msgid "Recent Visitor Statistics" +msgstr "近期訪客統計" + +#: wp-statistics/includes/log/online.php:11 +#: wp-statistics/includes/log/online.php:18 +msgid "Online Users" +msgstr "在線使用者" + +#: wp-statistics/includes/log/online.php:75 +msgid "Online for " +msgstr "在線" + +#: wp-statistics/includes/log/page-statistics.php:26 +msgid "Page Trend for Post ID" +msgstr "頁面趨勢(文章 ID)" + +#: wp-statistics/includes/log/page-statistics.php:35 +msgid "Page Trend" +msgstr "頁面趨勢" + +#: wp-statistics/includes/log/search-statistics.php:19 +#: wp-statistics/includes/log/search-statistics.php:28 +msgid "Search Engine Referral Statistics" +msgstr "搜尋引擎推薦統計" + +#: wp-statistics/includes/log/search-statistics.php:69 +#: wp-statistics/includes/log/widgets/search.php:42 +msgid "Search engine referrals in the last" +msgstr "最近的搜尋引擎推薦" + +#: wp-statistics/includes/log/search-statistics.php:90 +#: wp-statistics/includes/log/widgets/search.php:63 +msgid "Number of referrals" +msgstr "推薦數量" + +#: wp-statistics/includes/log/exclusions.php:24 +#: wp-statistics/includes/log/search-statistics.php:104 +#: wp-statistics/includes/log/widgets/quickstats.php:58 +#: wp-statistics/includes/log/widgets/quickstats.php:105 +#: wp-statistics/includes/log/widgets/search.php:77 +#: wp-statistics/includes/log/widgets/summary.php:58 +#: wp-statistics/includes/log/widgets/summary.php:105 +msgid "Total" +msgstr "總計" + +#: wp-statistics/includes/log/top-countries.php:18 +#: wp-statistics/includes/log/top-countries.php:27 +msgid "Top Countries" +msgstr "前面排名國家" + +#: wp-statistics/includes/log/top-countries.php:31 +#: wp-statistics/includes/log/widgets/countries.php:9 +#: wp-statistics/includes/log/widgets/top.visitors.php:11 +msgid "Rank" +msgstr "級別" + +#: wp-statistics/includes/log/top-countries.php:32 +#: wp-statistics/includes/log/widgets/countries.php:10 +#: wp-statistics/includes/log/widgets/top.visitors.php:13 +msgid "Flag" +msgstr "國旗" + +#: wp-statistics/includes/log/top-countries.php:33 +#: wp-statistics/includes/log/widgets/countries.php:11 +#: wp-statistics/includes/log/widgets/top.visitors.php:14 +msgid "Country" +msgstr "國家" + +#: wp-statistics/includes/log/top-countries.php:34 +#: wp-statistics/includes/log/widgets/countries.php:12 +msgid "Visitor Count" +msgstr "訪客計數" + +#: wp-statistics/includes/log/top-pages.php:20 +#: wp-statistics/includes/log/top-pages.php:156 +msgid "Top Pages" +msgstr "前面排名頁面" + +#: wp-statistics/includes/log/top-pages.php:30 +msgid "Top 5 Pages Trends" +msgstr "排名前 5 頁趨勢" + +#: wp-statistics/includes/log/top-pages.php:67 +msgid "Top 5 Page Trending Stats" +msgstr "排名前 5 頁趨勢統計" + +#: wp-statistics/includes/log/top-pages.php:88 +#: wp-statistics/includes/log/widgets/page.php:63 +msgid "Number of Hits" +msgstr "點擊次數" + +#: wp-statistics/includes/log/top-pages.php:184 +#: wp-statistics/includes/log/widgets/pages.php:13 +msgid "No page title found" +msgstr "沒有發現頁面標題" + +#: wp-statistics/includes/log/top-pages.php:187 +#: wp-statistics/includes/log/widgets/pages.php:16 +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:37 +#: wp-statistics/includes/settings/tabs/wps-general.php:122 +#: wp-statistics/includes/settings/tabs/wps-general.php:127 +#: wp-statistics/shortcode.php:139 +msgid "Visits" +msgstr "點擊" + +#: wp-statistics/includes/log/top-referring.php:4 +msgid "To be added soon" +msgstr "即將加入" + +#: wp-statistics/includes/log/top-referring.php:79 +msgid "Referring sites from" +msgstr "由網站推薦" + +#: wp-statistics/includes/log/top-referring.php:137 +#: wp-statistics/includes/log/widgets/referring.php:35 +msgid "References" +msgstr "引用" + +#: wp-statistics/includes/log/top-visitors.php:12 +msgid "Top 100 Visitors Today" +msgstr "今日排名前 100 位訪客" + +#: wp-statistics/includes/log/log.php:17 +msgid "About WP Statistics Version %s" +msgstr "關於 WP Statistics 版本 %s" + +#: wp-statistics/includes/log/widgets/about.php:11 +msgid "Website" +msgstr "網站" + +#: wp-statistics/includes/log/widgets/about.php:12 +msgid "Rate and Review" +msgstr "評價與評論" + +#: wp-statistics/includes/log/widgets/about.php:16 +msgid "More Information" +msgstr "更多的資訊" + +#: wp-statistics/includes/log/widgets/about.php:25 +#: wp-statistics/includes/settings/tabs/wps-about.php:12 +msgid "This product includes GeoLite2 data created by MaxMind, available from %s." +msgstr "本產品包含由 MaxMind,可從 %s 創建的 GeoLite2 資料。" + +#: wp-statistics/includes/log/widgets/browsers.php:34 +msgid "Other" +msgstr "其他" + +#: wp-statistics/wp-statistics.php:458 +msgid "Today Visitors Map" +msgstr "今天訪客地圖" + +#: wp-statistics/includes/log/widgets/referring.php:36 +msgid "Address" +msgstr "網址" + +#: wp-statistics/includes/log/widgets/quickstats.php:12 +msgid "User(s) Online" +msgstr "使用者線上" + +#: wp-statistics/includes/log/widgets/quickstats.php:28 +#: wp-statistics/includes/log/widgets/quickstats.php:80 +#: wp-statistics/includes/log/widgets/summary.php:28 +#: wp-statistics/includes/log/widgets/summary.php:80 +msgid "Today" +msgstr "今天" + +#: wp-statistics/includes/log/widgets/quickstats.php:34 +#: wp-statistics/includes/log/widgets/quickstats.php:81 +#: wp-statistics/includes/log/widgets/summary.php:34 +#: wp-statistics/includes/log/widgets/summary.php:81 +msgid "Yesterday" +msgstr "昨日" + +#: wp-statistics/includes/log/widgets/quickstats.php:99 +#: wp-statistics/includes/log/widgets/summary.php:99 +msgid "Daily Total" +msgstr "每日合計" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "Current Time and Date" +msgstr "目前時間和日期" + +#: wp-statistics/includes/log/widgets/quickstats.php:118 +#: wp-statistics/includes/log/widgets/summary.php:118 +msgid "(Adjustment)" +msgstr "(調整)" + +#: wp-statistics/includes/log/widgets/quickstats.php:122 +#: wp-statistics/includes/log/widgets/summary.php:122 +msgid "Date: %s" +msgstr "日期: %s" + +#: wp-statistics/includes/log/widgets/quickstats.php:126 +#: wp-statistics/includes/log/widgets/summary.php:126 +msgid "Time: %s" +msgstr "時間: %s" + +#: wp-statistics/includes/log/widgets/top.visitors.php:12 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:80 +#: wp-statistics/wp-statistics.php:339 wp-statistics/wp-statistics.php:418 +#: wp-statistics/wp-statistics.php:532 +msgid "Hits" +msgstr "點擊" + +#: wp-statistics/includes/log/widgets/top.visitors.php:15 +msgid "IP" +msgstr "IP" + +#: wp-statistics/includes/log/widgets/top.visitors.php:17 +msgid "Agent" +msgstr "代理" + +#: wp-statistics/includes/log/widgets/top.visitors.php:19 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:302 +msgid "Version" +msgstr "版本" + +#: wp-statistics/ajax.php:41 wp-statistics/ajax.php:71 +#: wp-statistics/ajax.php:129 wp-statistics/ajax.php:154 +#: wp-statistics/ajax.php:184 wp-statistics/ajax.php:296 +#: wp-statistics/includes/optimization/wps-optimization.php:6 +msgid "Access denied!" +msgstr "訪問被拒絕 !" + +#: wp-statistics/ajax.php:31 +msgid "%s agent data deleted successfully." +msgstr "%s 已成功刪除的代理資料。" + +#: wp-statistics/ajax.php:34 +msgid "No agent data found to remove!" +msgstr "找不到可刪除的代理數據!" + +#: wp-statistics/ajax.php:38 wp-statistics/ajax.php:68 +#: wp-statistics/ajax.php:120 wp-statistics/ajax.php:126 +msgid "Please select the desired items." +msgstr "請選擇所需的專案。" + +#: wp-statistics/ajax.php:62 +msgid "%s platform data deleted successfully." +msgstr "%s 平臺資料已成功刪除。" + +#: wp-statistics/ajax.php:65 +msgid "No platform data found to remove!" +msgstr "找不到可刪除的平台數據!" + +#: wp-statistics/includes/functions/functions.php:999 +msgid "%s table data deleted successfully." +msgstr "%s 已成功刪除的表資料。" + +#: wp-statistics/includes/functions/functions.php:1003 +msgid "Error, %s not emptied!" +msgstr "錯誤,%s 不為空 !" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:5 +msgid "Database Setup" +msgstr "資料庫安裝程式" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:10 +msgid "Re-run Install" +msgstr "重新運行安裝程式" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:14 +msgid "Install Now!" +msgstr "現在安裝 !" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:15 +msgid "If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process." +msgstr "如果由於某種原因您安裝WP統計缺少資料庫表或其他核心專案,這將會重新執行安裝過程。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:20 +msgid "Database Index" +msgstr "資料庫索引" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:21 +#: wp-statistics/wp-statistics.php:416 wp-statistics/wp-statistics.php:530 +msgid "Countries" +msgstr "國家" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:42 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:74 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:25 +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:40 +msgid "Update Now!" +msgstr "立即更新!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:43 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table. To create the index on the older installs duplicate entries must be deleted first. Clicking \"Update Now\" will scan the vistitors table, delete duplicate entries and add the index." +msgstr "WP 統計的老式安裝允許訪客表中一個角落案例中的重複條目。更新安裝保護免受這與上表的唯一索引。要創建索引的老式安裝重複條目,必須刪除第一次。按一下 \"Update Now\"將掃描該訪客表、 刪除重複的條目和添加索引。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:108 +msgid "This operation could take a long time on installs with many rows in the visitors table." +msgstr "此操作可能需要很長時間,安裝與遊客表中的多行上。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:50 +msgid "Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case. Newer installs protect against this with a unique index on the table." +msgstr "WP 統計的老式安裝允許訪客表中一個角落案例中的重複項目。更新安裝保護免受這與上表的唯一索引。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:51 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:83 +#: wp-statistics/includes/optimization/tabs/wps-optimization-database.php:114 +msgid "Congratulations, your installation is already up to date, nothing to do." +msgstr "恭喜,您的安裝是已經到目前為止,什麼都不做。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:8 +#: wp-statistics/includes/optimization/wps-optimization.php:235 +msgid "Export" +msgstr "出口" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:13 +msgid "Export from" +msgstr "從匯出" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:18 +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:37 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:185 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:242 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:266 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:134 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:164 +msgid "Please select" +msgstr "請選擇" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:26 +msgid "Select the table for the output file." +msgstr "選擇用於輸出檔案的表。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:32 +msgid "Export To" +msgstr "匯出到" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:42 +msgid "Select the output file type." +msgstr "選擇輸出檔案類型。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:48 +msgid "Include Header Row" +msgstr "包括標題列" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:53 +msgid "Include a header row as the first line of the exported file." +msgstr "作為匯出的檔的第一行包含標題列。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-export.php:54 +msgid "Start Now!" +msgstr "從現在開始 !" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:15 +msgid "Historical Values" +msgstr "歷史數值" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:20 +msgid "Note: As you have just purged the database you must reload this page for these numbers to be correct." +msgstr "注意:由於您剛剛清除數據庫,您必須重新加載此頁面,以使這些數字正確。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:26 +#: wp-statistics/includes/settings/tabs/wps-general.php:138 +#: wp-statistics/includes/settings/tabs/wps-general.php:143 +#: wp-statistics/shortcode.php:140 wp-statistics/wp-statistics.php:425 +#: wp-statistics/wp-statistics.php:539 +msgid "Visitors" +msgstr "訪客" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:31 +msgid "Number of historical number of visitors to the site (current value is %s)." +msgstr "網站的歷史訪問者數( 當前值為 %s )。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:42 +msgid "Number of historical number of visits to the site (current value is %s)." +msgstr "網站的歷史訪問次數(當前值為 %s )。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-historical.php:48 +msgid "Update now!" +msgstr "現在更新!" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:10 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:43 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:75 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:107 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:141 +msgid "Are you sure?" +msgstr "是否確定?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:175 +msgid "Data" +msgstr "資料" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:180 +msgid "Empty Table" +msgstr "空表" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:194 +msgid "All data table will be lost." +msgstr "所有的資料表格將會丟失。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:195 +msgid "Clear now!" +msgstr "現在清除了 !" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:203 +msgid "Purge records older than" +msgstr "清除記錄,早於" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:209 +msgid "Deleted user statistics data older than the selected number of days. Minimum value is 30 days." +msgstr "刪除比所指定天數更早的使用者統計資料。最小值為 30 天。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:210 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:225 +msgid "Purge now!" +msgstr "現在清除 !" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:232 +msgid "Delete User Agent Types" +msgstr "刪除使用者代理型別" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:237 +msgid "Delete Agents" +msgstr "刪除代理" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:252 +msgid "All visitor data will be lost for this agent type." +msgstr "所有該代理型別訪客資料將會丟失。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:253 +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:277 +msgid "Delete now!" +msgstr "現在將其刪除 !" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:261 +msgid "Delete Platforms" +msgstr "刪除平臺" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-purging.php:276 +msgid "All visitor data will be lost for this platform type." +msgstr "所有訪客資料將會丟失對此類型的平臺。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:17 +msgid "Resources" +msgstr "資源" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:22 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:27 +msgid "Memory usage in PHP" +msgstr "在 PHP 中的記憶體使用方式" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:26 +msgid "Byte" +msgstr "位元組" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:33 +msgid "PHP Memory Limit" +msgstr "PHP 記憶體限制" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:38 +msgid "The memory limit a script is allowed to consume, set in php.ini." +msgstr "記憶體限制腳本允許在 php.ini 檔案中自訂設置。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:44 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:55 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:66 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:77 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:88 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:99 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:110 +msgid "Number of rows in the %s table" +msgstr "%S 表中的行數" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:48 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:59 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:70 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:81 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:92 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:103 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:114 +msgid "Row" +msgstr "行" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:49 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:60 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:71 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:82 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:93 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:104 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:115 +msgid "Number of rows" +msgstr "行數" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:120 +msgid "Version Info" +msgstr "版本資訊" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:125 +msgid "WP Statistics Version" +msgstr "WP 統計版本" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:130 +msgid "The WP Statistics version you are running." +msgstr "WP 統計版本正在運行。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:136 +msgid "PHP Version" +msgstr "PHP 版本" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:141 +msgid "The PHP version you are running." +msgstr "您正在運行的 PHP 版本。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:147 +msgid "PHP Safe Mode" +msgstr "PHP 的安全模式" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:152 +msgid "Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode." +msgstr "PHP 的安全模式是活動的。在安全模式下不支援 GeoIP 的代碼。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:169 +msgid "jQuery Version" +msgstr "jQuery 版本" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:174 +msgid "The jQuery version you are running." +msgstr "您正在運行 jQuery 版本。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:180 +msgid "cURL Version" +msgstr "cURL 版本" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:184 +msgid "cURL not installed" +msgstr "cURL 未安裝" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:185 +msgid "The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled." +msgstr "你已正在執行 PHP cURL 擴展, GeoIP 代碼需要 cURL ,如果它沒有安裝 GeoIP 將被禁用。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Installed" +msgstr "安裝" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:195 +msgid "Not installed" +msgstr "未安裝" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:201 +msgid "File Info" +msgstr "檔資訊" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:206 +msgid "GeoIP Database" +msgstr "GeoIP 資料庫" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:215 +msgid "Database file does not exist." +msgstr "資料庫檔案不存在。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:217 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:236 +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:255 +msgid ", created on " +msgstr ",創建於" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:219 +msgid "The file size and date of the GeoIP database." +msgstr "檔的大小和日期的 GeoIP 資料庫。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:225 +msgid "browscap.ini File" +msgstr "browscap.ini 檔案" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:234 +msgid "browscap.ini file does not exist." +msgstr "browscap.ini 檔案不存在。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:238 +msgid "The file size and date of the browscap.ini file." +msgstr "檔的大小和 browscap.ini 檔案的日期。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:244 +msgid "browscap Cache File" +msgstr "browscap 高速快取檔案" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:253 +msgid "browscap cache file does not exist." +msgstr "browscap 高速快取檔案不存在。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:257 +msgid "The file size and date of the browscap cache file." +msgstr "檔的大小和 browscap 快取檔案的日期。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:262 +msgid "Client Info" +msgstr "用戶端資訊" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:267 +msgid "Client IP" +msgstr "用戶端 IP" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:272 +msgid "The client IP address." +msgstr "用戶端 IP 位址。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:278 +msgid "User Agent" +msgstr "使用者代理" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:283 +msgid "The client user agent string." +msgstr "用戶端使用者代理字串。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:289 +msgid "Browser" +msgstr "瀏覽器" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:296 +msgid "The detected client browser." +msgstr "檢測到的用戶瀏覽器" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:307 +msgid "The detected client browser version." +msgstr "檢測到的瀏覽器" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-resources.php:318 +msgid "The detected client platform." +msgstr "檢測到的用戶端平台。" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:4 +msgid "This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?" +msgstr "這將替換資料庫中的所有 IP 位址的雜湊值,無法撤銷,是嗎?" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:16 +msgid "GeoIP Options" +msgstr "GeoIP 選項" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:26 +msgid "Updates any unknown location data in the database, this may take a while" +msgstr "更新任何未知的位置資料在資料庫中,這可能需要一段時間" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:31 +#: wp-statistics/includes/settings/tabs/wps-general.php:66 +msgid "IP Addresses" +msgstr "IP 位址" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:36 +#: wp-statistics/includes/settings/tabs/wps-general.php:71 +msgid "Hash IP Addresses" +msgstr "雜湊 IP 位址" + +#: wp-statistics/includes/optimization/tabs/wps-optimization-updates.php:41 +msgid "Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while" +msgstr "在資料庫中的 IP 位址替換為雜湊值,您將不能恢復的 IP 位址,在將來要填充位置資訊之後,這可能需要一段時間" + +#: wp-statistics/includes/optimization/wps-optimization.php:43 +msgid "IP Addresses replaced with hash values." +msgstr "IP 位址替換為雜湊值。" + +#: wp-statistics/includes/optimization/wps-optimization.php:51 +msgid "Install routine complete." +msgstr "完成安裝程序。" + +#: wp-statistics/includes/optimization/wps-optimization.php:234 +msgid "Resources/Information" +msgstr "資源/資訊" + +#: wp-statistics/includes/optimization/wps-optimization.php:236 +msgid "Purging" +msgstr "清除" + +#: wp-statistics/includes/optimization/wps-optimization.php:237 +msgid "Database" +msgstr "資料庫" + +#: wp-statistics/includes/optimization/wps-optimization.php:238 +msgid "Updates" +msgstr "更新" + +#: wp-statistics/includes/optimization/wps-optimization.php:239 +msgid "Historical" +msgstr "歷史" + +#: wp-statistics/includes/settings/tabs/wps-about.php:8 +msgid "WP Statistics V%s" +msgstr "WP 統計 V %s" + +#: wp-statistics/includes/settings/tabs/wps-about.php:28 +msgid "Visit Us Online" +msgstr "訪問我們的線上" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "Come visit our great new %s and keep up to date on the latest news about WP Statistics." +msgstr "來參觀我們偉大的新的 %s 並且保持最新關於 WP Statistics 的最新消息。" + +#: wp-statistics/includes/settings/tabs/wps-about.php:32 +msgid "website" +msgstr "網站" + +#: wp-statistics/includes/settings/tabs/wps-about.php:36 +msgid "Rate and Review at WordPress.org" +msgstr "在 WordPress.org 網站為此外掛評價和評論" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "Thanks for installing WP Statistics, we encourage you to submit a " +msgstr "感謝您安裝 WP 統計,我們鼓勵您提交" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "rating and review" +msgstr "評分與評論" + +#: wp-statistics/includes/settings/tabs/wps-about.php:40 +msgid "over at WordPress.org. Your feedback is greatly appreciated!" +msgstr "在好的結束。非常感謝您的回饋 !" + +#: wp-statistics/includes/settings/tabs/wps-about.php:44 +msgid "Translations" +msgstr "翻譯" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "WP Statistics supports internationalization and we encourage our users to submit translations, please visit our %s to see the current status and %s if you would like to help." +msgstr "WP Statistics 支援國際化,我們鼓勵使用者提交的翻譯,如果你想要説明,請訪問我們的 %s 可查看當前的狀態和 %s。" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "translation collaboration site" +msgstr "翻譯協作網站" + +#: wp-statistics/includes/settings/tabs/wps-about.php:48 +msgid "drop us a line" +msgstr "給我們寫信。" + +#: wp-statistics/includes/settings/tabs/wps-about.php:52 +msgid "Support" +msgstr "幫助" + +#: wp-statistics/includes/settings/tabs/wps-about.php:57 +msgid "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:" +msgstr "我們很抱歉你在 WP 統計的問題,我們很高興能幫忙。這裡有一些事情要做之前與我們聯繫:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "Have you read the %s?" +msgstr "你讀過 %s 嗎?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:60 +msgid "FAQs" +msgstr "常見問題解答" + +#: wp-statistics/includes/settings/tabs/wps-about.php:61 +msgid "manual" +msgstr "手動" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "Have you search the %s for a similar issue?" +msgstr "你有搜索此 %s 類似問題嗎?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:62 +msgid "support forum" +msgstr "支援論壇" + +#: wp-statistics/includes/settings/tabs/wps-about.php:63 +msgid "Have you search the Internet for any error messages you are receiving?" +msgstr "您收到任何錯誤訊息在互聯網上搜索你有嗎?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:64 +msgid "Make sure you have access to your PHP error logs." +msgstr "確保您可以訪問您的PHP錯誤日誌。" + +#: wp-statistics/includes/settings/tabs/wps-about.php:67 +msgid "And a few things to double-check:" +msgstr "和幾件事要仔細檢查:" + +#: wp-statistics/includes/settings/tabs/wps-about.php:70 +msgid "How's your memory_limit in php.ini?" +msgstr "如何是你在 php.ini 檔案中的 memory_limit?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:71 +msgid "Have you tried disabling any other plugins you may have installed?" +msgstr "禁用任何其他您可能已安裝的外掛程式,你試過嗎?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:72 +msgid "Have you tried using the default WordPress theme?" +msgstr "使用預設的 WordPress 主題,你試過嗎?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:73 +msgid "Have you double checked the plugin settings?" +msgstr "你雙檢查外掛程式設置過嗎?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:74 +msgid "Do you have all the required PHP extensions installed?" +msgstr "你有安裝的所有所需的 PHP 擴展嗎?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:75 +msgid "Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors?" +msgstr "你有在瀏覽器中顯示一個空白或不完整的頁面嗎?你查看網頁的原始程式碼並檢查是否有任何致命的錯誤嗎?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:76 +msgid "Have you checked your PHP and web server error logs?" +msgstr "你檢查過你的 PHP 和 web 伺服器錯誤日誌嗎?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Still not having any luck?" +msgstr "仍然沒有任何的運氣嗎?" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "Then please open a new thread on the %s and we'll respond as soon as possible." +msgstr "然後請打開 %s 上的一個新的執行緒,我們會儘快回復。" + +#: wp-statistics/includes/settings/tabs/wps-about.php:79 +msgid "WordPress.org support forum" +msgstr "WordPress.org 支援論壇" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Alternatively %s support is available as well." +msgstr "或者 %s 支援也是可用的。" + +#: wp-statistics/includes/settings/tabs/wps-about.php:83 +msgid "Farsi" +msgstr "波斯文" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:21 +msgid "WP Statistics Honey Pot Page" +msgstr "WP 統計誘導頁面" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:22 +msgid "This is the honey pot for WP Statistics to use, do not delete." +msgstr "這是 WP 統計用於誘導的頁面,請勿刪除" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:23 +#: wp-statistics/includes/settings/wps-settings.php:103 +msgid "Access Levels" +msgstr "存取層級" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:52 +msgid "Required user level to view WP Statistics" +msgstr "查看 WP 統計資訊所需的用戶級別" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:67 +msgid "Required user level to manage WP Statistics" +msgstr "管理 WP 統計資訊所需的用戶級別" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "See the %s for details on capability levels." +msgstr "在能力水準見到 %s 的詳細資訊。" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:75 +msgid "WordPress Roles and Capabilities page" +msgstr "WordPress 的角色和功能的頁" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:76 +msgid "Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone." +msgstr "提示: manage_network = 超級管理員網路,manage_options = 管理員,edit_others_posts = 編輯,publish_posts = 作者,edit_posts = 投稿者,Read = 每個人。" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:77 +msgid "Each of the above casscades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins." +msgstr "每個上述 casscades 向上在 WordPress 預設配置的權利。因此,例如選擇 publish_posts 授予向作者、 編輯、 管理員和超級管理員的權利。" + +#: wp-statistics/includes/settings/tabs/wps-access-level.php:78 +msgid "If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory." +msgstr "如果你需要一個更加健壯的解決方案,委派你可能想看看在 WordPress 外掛程式目錄中 %s 的存取權限。" + +#: wp-statistics/includes/log/exclusions.php:197 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:46 +#: wp-statistics/includes/settings/wps-settings.php:104 +#: wp-statistics/wp-statistics.php:417 wp-statistics/wp-statistics.php:531 +msgid "Exclusions" +msgstr "排除" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:50 +msgid "Record exclusions" +msgstr "記錄排除" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:52 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:106 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:136 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:153 +msgid "Enable" +msgstr "啟用" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:53 +msgid "This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information. This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits." +msgstr "這將記錄所有被排除在外的點擊率在一個單獨的表,為什麼它被排除在外的原因,但沒有其他資訊。這將生成大量的資料,但很有用,如果您想要查看的命中總數您的網站獲取,不只是實際的使用者訪問。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:58 +msgid "Exclude User Roles" +msgstr "排除使用者角色" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:74 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:199 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:206 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:213 +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:220 +msgid "Exclude" +msgstr "排除" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:75 +msgid "Exclude %s role from data collection." +msgstr "從資料集合中排除 %s 的作用。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:81 +msgid "IP/Robot Exclusions" +msgstr "IP/機器人排除" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:85 +msgid "Robot list" +msgstr "機器人清單" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:98 +msgid "A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored." +msgstr "一個單詞 (每行一個) 清單以匹配來檢測機器人。參賽作品必須是至少 4 個字元長,否則他們將被忽略。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:99 +msgid "Reset to Default" +msgstr "重置為預設值" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:104 +msgid "Force robot list update after upgrades" +msgstr "升級後的強制機器人清單更新" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:107 +msgid "Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost." +msgstr "要更新到 WP 統計後將重置為預設值的機器人清單生效後才能發生。注意是否啟用任何自訂此選項已添加到清單中的機器人將會丟失。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:112 +msgid "Robot visit threshold" +msgstr "機器人訪客次數門檻" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:115 +msgid "Treat visitors with more than this number of visits per day as robots. 0 = disabled." +msgstr "將每天訪問次數超過此數量的訪問者視為機器人。 0 =禁用。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:120 +msgid "Excluded IP address list" +msgstr "排除的 IP 位址清單" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:126 +msgid "Add 10.0.0.0" +msgstr "添加 10.0.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:127 +msgid "Add 172.16.0.0" +msgstr "添加 172.16.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:128 +msgid "Add 192.168.0.0" +msgstr "添加 192.168.0.0" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:134 +msgid "Use honey pot" +msgstr "使用誘導頁面" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:137 +msgid "Use a honey pot page to identify robots." +msgstr "使用誘導頁面的文章ID以視別機器人" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:142 +msgid "Honey pot post id" +msgstr "誘導頁面的文章ID" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:145 +msgid "The post id to use for the honeypot page." +msgstr "用於誘導的文章ID" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:146 +msgid "Create a new honey pot page" +msgstr "新增誘導頁面" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:159 +msgid "GeoIP Exclusions" +msgstr "GeoIP 排除" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:163 +msgid "Excluded countries list" +msgstr "排除國家列表" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:166 +msgid "A list of country codes (one per line, two letters each) to exclude from statistics collection. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "國家代碼列表(每行一個,每個兩個字母),以從統計信息收集中排除。 使用\"000\"(三個0)排除未知國家。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:171 +msgid "Included countries list" +msgstr "包括國家列表" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:174 +msgid "A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded. Use \"000\" (three zeros) to exclude unknown countries." +msgstr "國家代碼列表(每行一個,每個兩個字母)要包括在統計信息收集中,如果此列表不為空,則只會記錄來自包括的國家/地區的訪問者。 使用\"000\"(三個0)排除未知國家。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:179 +msgid "Host Exclusions" +msgstr "主機排除" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:183 +msgid "Excluded hosts list" +msgstr "排除主機列表" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:186 +msgid "A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection." +msgstr "要從統計信息收集中排除的完全限定主機名(例如,server.example.com,每行一個)的列表。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:188 +msgid "Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded." +msgstr "注意:此選項不會對每個頁面加載執行反向DNS查找,而是緩存提供的主機名的IP地址一小時。 如果你排除動態分配的主機,你可能會發現一些重疊,當主機更改它的IP地址,當緩存更新導致一些命中記錄。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:193 +msgid "Site URL Exclusions" +msgstr "排除網站 URL " + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:197 +msgid "Excluded login page" +msgstr "排除登入頁" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:200 +msgid "Exclude the login page for registering as a hit." +msgstr "排除點擊登入頁面的統計登載。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:204 +msgid "Excluded admin pages" +msgstr "排除管理頁面" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:207 +msgid "Exclude the admin pages for registering as a hit." +msgstr "排除點擊管理頁面的統計登載。" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:211 +msgid "Excluded RSS feeds" +msgstr "排除 RSS 饋送" + +#: wp-statistics/includes/settings/tabs/wps-exclusions.php:214 +msgid "Exclude the RSS feeds for registering as a hit." +msgstr "排除此 RSS 饋送" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:162 +msgid "browscap settings" +msgstr "browscap 設置" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:167 +msgid "browscap usage" +msgstr "browscap 使用" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:52 +#: wp-statistics/includes/settings/tabs/wps-externals.php:76 +#: wp-statistics/includes/settings/tabs/wps-externals.php:109 +#: wp-statistics/includes/settings/tabs/wps-externals.php:172 +#: wp-statistics/includes/settings/tabs/wps-externals.php:196 +#: wp-statistics/includes/settings/tabs/wps-externals.php:236 +#: wp-statistics/includes/settings/tabs/wps-externals.php:260 +#: wp-statistics/includes/settings/tabs/wps-general.php:76 +#: wp-statistics/includes/settings/tabs/wps-general.php:92 +#: wp-statistics/includes/settings/tabs/wps-general.php:116 +#: wp-statistics/includes/settings/tabs/wps-general.php:132 +#: wp-statistics/includes/settings/tabs/wps-general.php:148 +#: wp-statistics/includes/settings/tabs/wps-general.php:160 +#: wp-statistics/includes/settings/tabs/wps-general.php:187 +#: wp-statistics/includes/settings/tabs/wps-general.php:199 +#: wp-statistics/includes/settings/tabs/wps-general.php:214 +#: wp-statistics/includes/settings/tabs/wps-general.php:228 +#: wp-statistics/includes/settings/tabs/wps-general.php:258 +#: wp-statistics/includes/settings/tabs/wps-general.php:270 +#: wp-statistics/includes/settings/tabs/wps-general.php:286 +#: wp-statistics/includes/settings/tabs/wps-general.php:325 +#: wp-statistics/includes/settings/tabs/wps-general.php:341 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:40 +#: wp-statistics/includes/settings/tabs/wps-maintenance.php:68 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:69 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:81 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:93 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:105 +#: wp-statistics/includes/settings/tabs/wps-notifications.php:121 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:34 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:54 +#: wp-statistics/includes/settings/tabs/wps-overview-display.php:74 +msgid "Active" +msgstr "啟動" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:173 +msgid "The browscap database will be downloaded and used to detect robots." +msgstr "Browscap 資料庫將下載,並可以用來檢測機器人。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:179 +msgid "Update browscap Info" +msgstr "更新 browscap 資訊" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:184 +msgid "Download browscap Database" +msgstr "下載 browscap 資料庫" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:65 +#: wp-statistics/includes/settings/tabs/wps-externals.php:185 +#: wp-statistics/includes/settings/tabs/wps-externals.php:249 +msgid "Save changes on this page to download the update." +msgstr "將更改保存在此頁面下載更新程式。" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:191 +msgid "Schedule weekly update of browscap DB" +msgstr "安排每週更新 browscap 資料庫" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:79 +#: wp-statistics/includes/settings/tabs/wps-externals.php:199 +#: wp-statistics/includes/settings/tabs/wps-externals.php:263 +msgid "Next update will be" +msgstr "下一次更新將會" + +#: wp-statistics/includes/settings/tabs/wps-externals.php:215 +msgid "Download of the browscap database will be scheduled for once a week." +msgstr "將會安排一次一周下載 browscap 資料庫。" + +#: wp-statistics/includes/settings/tabs/wps-general.php:50 +msgid "This will delete the manual when you save the settings, are you sure?" +msgstr "當你儲存此配置時將會手動刪除,你確定嗎?" + +#: wp-statistics/includes/settings/tabs/wps-general.php:77 +msgid "This feature will not store IP addresses in the database but instead used a unique hash. The \"Store entire user agent string\" setting will be disabled if this is selected. You will not be able to recover the IP addresses in the future to recover location information if this is enabled." +msgstr "此功能不會在數據庫中存儲IP地址,而是使用唯一的雜湊。 如果選擇了\"存儲整個用戶代理字串\"設置將被禁用。 您將無法恢復IP地址以恢復位置資訊(如果已啟用)。" + +#: wp-statistics/includes/log/widgets/summary.php:12 +#: wp-statistics/includes/settings/tabs/wps-general.php:82 +#: wp-statistics/shortcode.php:138 wp-statistics/widget.php:39 +#: wp-statistics/widget.php:260 +msgid "Users Online" +msgstr "使用者線上" + +#: wp-statistics/includes/settings/tabs/wps-general.php:87 +msgid "User online" +msgstr "使用者線上" \ No newline at end of file diff --git a/plugins/wp-statistics/license.txt b/plugins/wp-statistics/license.txt new file mode 100644 index 0000000..818433e --- /dev/null +++ b/plugins/wp-statistics/license.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. diff --git a/plugins/wp-statistics/manual/WP Statistics Admin Manual.html b/plugins/wp-statistics/manual/WP Statistics Admin Manual.html new file mode 100644 index 0000000..55aad39 --- /dev/null +++ b/plugins/wp-statistics/manual/WP Statistics Admin Manual.html @@ -0,0 +1,886 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><!--This file was converted to xhtml by LibreOffice - see http://cgit.freedesktop.org/libreoffice/core/tree/filter/source/xslt for the code.--><head profile="http://dublincore.org/documents/dcmi-terms/"><meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/><title xml:lang="en-US">- no title specified

         

         

         

         

         

         

         

         

         

         

         

        WP Statistics

         

         

         

        Administrator Manual

         

         

         

        Version 11.0

        Table of Contents

        Introduction

        Features

        Requirements

        Frequently Asked Questions

        Support

        Installation

        Removal

        Manual Removal

        Main Interface

        Dashboard Widgets

        Manual Page

        Settings Page

        Optimization Page

        Overview Page

        Browsers Page

        Countries Page

        Exclusions Page

        Hits Page

        Online Page

        Pages Page

        Referrers Page

        Searches Page

        Search Words Page

        Top Visitors Today

        Visitors Page

        Multi-Site

        The Widget

        Shortcodes

        Function API

         

        Introduction

        Welcome to WP Statistics!

        This plug-in is designed to track your visitor statistics in WordPress, completely locally without any external services.

        You can find us on the web at http://wp-statistics.com.

        There are several key items to note about WP Statistics:

        • No external services are required, all code and data runs locally on your system. 

        • Aggregate data is stored whenever possible, when specific data is required (like IP addresses for visitors) only the date is stored with the hit, not the time. 

        • This product includes GeoLite2 data created by MaxMind, available from http://www.maxmind.com. 

         

        This document will use a couple of conventions you should be aware of:

        • Screen shots will generally exclude all of the WordPress admin menus to keep them concise. 

        • Menu selections and other actions to be taken will be indicated with italics. 

        • If multiple menu selections are required, they will be separated with ->, so for example if you are to go to the settings page, this document will indicate it with Statistics->Settings. 

        • If a page has tabs on it, they will be treated as menu items, so for example, if you are to go to the GeoIP tab on the Settings page, this document will indicate it with Statistics->Settings->GeoIP. 

        • In some sections you will find a “Developers Note”, these are items that a developer may find useful if they are looking to work with WP Statistics, normal administrators or users can safely ignore these items. 

        Features

        WP Statistics has many features:

        Requirements

        WP Statistics requires a few things to work:

         

        WP Statistics might work on older versions of the above software, but then again, it might not (it does NOT function on any PHP versions before 5.3).

         

        The GeoIP support also requires a few additional items to function:

         

        WP Statistics requires a significant amount of RAM for the statistics pages, especially the overview page, make sure to set your PHP memory limit high enough to support it.  While every site has different memory requirements, a reasonable rule of thumb is at least 36 megabytes and significantly higher is not unreasonable (128-256 megabytes).

        Frequently Asked Questions

        Where's the Admin Manual?

        The admin manual is installed as part of the plugin, simply go to Statistics->Manual to view it.  At the top of the page will also be two icons that will allow you to download it in either ODT or HTML formats.

        What do I do if the plug does not work?

        Disable / Enable the plugin.  You may also want to remove and re-install it.

        All visitors are being set to unknown for their location?

        Make sure you've downloaded the GeoIP database and the GeoIP code is enabled.  

        Also, if your running an internal test site with non-routable IP addresses (like 192.168.x.x or 172.28.x.x or 10.x.x.x), these addresses will come up as unknown always.

        GeoIP is enabled but no hits are being counted?

        The GeoIP code requires several things to function, PHP 5.3 or above, the bcmath extension, the cURL extension and PHP cannot be running in safe mode.  All of these conditions are checked for but there may be additional items required.  Check your PHP log files and see if there are any fatal errors listed.

        How much memory does PHP Statistics require?

        This depends on how many hits your site gets.  The data collection code is very light weight, however the reporting and statistics code can take a lot of memory to process.  The longer you collect data for the more memory you will need to process it.  At a bare minimum, a basic WordPress site with WP Statistics should have at least 32 meg of RAM available for a page load.  Sites with lots of plugins and high traffic should look at significantly increasing that (128 to 256 meg is not unreasonable).

        I've enabled IP subnet exclusions and now no visitors are recorded?

        Be very careful to set the subnet mask correctly on the subnet list, it is very easy to catch too much traffic.  Likewise if you are excluding a single IP address make sure to include a subnet mask of 32 or 255.255.255.255 otherwise the default subnet of 0 will be used, catching all ip addresses.

        I'm not receiving e-mail reports?

        Make sure you have WordPress configured correctly for SMTP and also check your WP Cron is working correctly.  You can use Cron View to examine your WP Cron table and see if there are any issues.

        Does WP Statistics support multi-site?

        WP Statistics doesn't officially support multi-site however it does have limited functionally associated with it and should function without issue.  However no support is provided at this time.

        Version 8.8 is the first release that should install, upgrade and remove correctly on mutli-site as well as have some very basic support for the network admin menu.  This should not be taken as an indication that WP Statistics fully support for multi-site, but only as a very preliminary first step.

        Does WP Statistics report on post hits?

        Yes, version 6.0 has introduced page hit statistics!

        Does WP Statistics track the time of the hits?

        No.

        The GeoIP database isn't downloading and when I force a download through the settings page I get the following error: "Error downloading GeoIP database from: http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz – Forbidden"

        This means that MaxMind has block the IP address of your webserver, this is often the case if it has been blacklisted in the past due to abuse.

        You have two options:

        • Contact MaxMind and have them unblock your IP address 

        • Manually download the database 


        To manually download the database and install it take the following steps:

        • On another system (any PC will do) download the maxmind database from http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz 

        • Decompress the database 

        • Connect to your web host and create a "wp-statistics" directory in your wordpress uploads folder (usually it is located in wp-content, so you would create a directory "wp-content/uploads/wp-statistics"). 

        • Upload the GeoLite-Country.mmdb file to the folder you just created. 


        You can also ask MaxMind to unblock your host.  Note that automatic updates will not function until you can successfully download the database from your web server.

        I've activated the plugin but the menus don't show up and nothing happens?

        WP Statistics requires PHP 5.3, if it has detected an older version of PHP installed it will active but it will display an error on your plugin list just below the WP Statistics entry to let you know.

        If there is no error message there may be something else wrong, your first thing to try is disabling your other plugins as they can sometimes cause conflicts.

        If you still don't see the menus, go to the support forums and open a new thread and we'll try to help out.

        I'm using another statistics plugin/service and get different numbers for them, why?


        Pretty much every plugin/service is going to give you different results for visits and vistors, there are several reasons for this:

        • Web crawler detection 

        • Detection method (javascript vs server side PHP) 

        • Centralized exclusions
           

        Services that use centralized databases, like Google Analytics, for spam and robot detection have better detection than WP Statistics can.  The trade off of course is relaying on an external service.

        Something has gone horribly wrong and my site no longer loads, how can I disable the plugin without access to the admin area?


        You can manually disable plugins in WordPress by simply renaming the folder they are installed in.  Using FTP or your hosting providers file manager, go to your WordPress directory, from ther go to wp-content/plugins and rename or delete the wp-statistics folder.

        I'm getting an error in my PHP log like: Fatal error: Call to undefined method Composer\Autoload\ClassLoader::set()


        We use several libraries and use a utility called Composer to manage the dependencies between them.  We try and keep our Composer library up to date but not all plugins do and sometimes we find conflicts with other plugins.  Try disabling your other plugins until the error goes away and then contact that plugin developer to update their Composer files.

        The search words and search engine referrals are zero or very low, what's wrong?


        Search Engine Referrals and Words are highly dependent on the search engine providing the information to us and that often is not the case.  Unfortunately there is nothing we can do about this, we report on everything we receive.

        Why did my visits suddenly jump way up today?


        There can be many reasons for this, but the most common reason is a botnet has decided to visit your site and we have been unable to filter it out.  You usually see your visits spike for a few days and then they give up.

        What’s the difference between Visits and Visitors?


        Visits is the number of page hits your site has received.

        Visitors is the number of unique users that have visited your site.

        Visits should always be greater than Visitors (though there are a few times when this won’t be true on very low usage sites due to how the exclusion code works).

        The average number of pages a visitor views on your site is Visits/Visitors.

        My overview screen is blank, what's wrong?


        This is usually caused by a PHP fatal error, check the page source and PHP logs.

        The most common fatal error is an out of memory error. Check the Statistics->Optimization page and see how much memory is currently assigned to PHP and how much the overview is using.

        If it is a memory issue you have two choices:
        - Increase PHP's memory allocation
        - Delete some of your historical data.

        See http://php.net/manual/en/ini.core.php#ini.memory-limit for information about PHP's memory limit.

        To remove historical data you can use the Statistics->Optimization->Purging->Purge records older than.

        Not all referrals are showing up in the search words list, why?


        Unfortunate we're completely dependent on the search engine sending use the search parameters as part of the referrer header, which they do not always do.

        Does WP Statistics work with caching plugins?


        Probably not, most caching plugins don't execute the standard WordPress loop for a page it has already cached (by design of course) which means the WP Statistics code never runs for that page.

        This means WP Statistics can't record the page hit or visitor information, which defeats the purpose of WP Statistics.

        We do not recommend using a caching plugin along with WP Statistics.

        I get an error message like "PHP Fatal error: Function name must be a string in /../parse-user-agent.php"


        Do you have eAccelerator installed?  If so this is a known issue with eAccelerator and PHP's "anonymous" functions, which are used in the user agent parsing library.  As no new versions of eAccelerator have been released for over 3 years, you should look to replace it or disable it.

        I've installed WP Statistics for the first time on a site and when I go to the statistics pages I get an error saying like "The following plugin table(s) do not exist in the database"


        This is because something has gone wrong during the installation.  

        At the end of the message will be a list of tables that are missing, you can use the provided link to re-run the installation routine.  If that does not resolve the issue and the visitors table is the only table listed, you may want to check your MySQL version.  Some older versions of MySQL (in the 5.0.x series) have issues with complex compound indexes, which we use on the visitors table.  If this is the case, check with your hosting provider and see if they can upgrade to a newer version of MySQL.

        If you still have issues open a new thread on the support forum and we'll try and resolve it for you.

        I see error messages in my PHP log like "WordPress database error Duplicate entry 'YYYY-MM-DD' for key 'unique_date' for ..."

        This is caused by a race condition in the code, it's safe to ignore (it shouldn't be labeled as an error really, but that is part of WordPress that we can't control).

        It happens when a new day starts and two visitors hit the site at nearly the same time for the first visit of the day. Both try and create a new row in the table to track the days visits, but only one of them success and the other throws this warning.

        PHP 7 Support

        WP Statistics is PHP 7 compliant, however some versions of PHP 7 have bugs that can cause issues.  One know issue is with PHP 7.0.4 causing memory exhaustion errors, newer versions of PHP 7 do not have this issue.

        At this time (August 2016) WP Statistics seems to run fine with PHP 7.0.10, however you may experience issues that we haven't found yet.  If you do, feel free to report it after you've confirmed it is not a problem with PHP.

        IPv6 Support

        WP Statistics supports IPv6 as of version 11.0, however PHP must be compiled with IPv6 support enabled, otherwise you may see warnings when a visitor from an IPv6 address hits your site.

        You can check if IPv6 support is enabled in PHP by visiting the "Optimization->Resources/Information->Version Info->PHP IPv6 Enabled" section.

        If IPv6 is not enabled, you may see an warning like:

        Warning: inet_pton() [function.inet-pton]: Unrecognized address 2003:0006:1507:5d71:6114:d8bd:80c2:1090

        Support

        We're sorry you're having problem with WP Statistics and we're happy to help out.  Here are a few things to do before contacting us:

        And a few things to double-check:

        • How's your memory_limit in php.ini? 

        • Have you tried disabling any other plugins you may have installed? 

        • Have you tried using the default WordPress theme? 

        • Have you double checked the plugin settings? 

        • Do you have all the required PHP extensions installed? 

        • Are you getting a blank or incomplete page displayed in your browser?  Did you view the source for the page and check for any fatal errors? 

        • Have you checked your PHP and web server error logs? 

           

        Still not having any luck?  Open a new thread on one of the support forums and we'll respond as soon as possible.

        Installation

        Installation is straight forward, you can either use WordPress' built in installation process or manually upload the files to the WordPress plugin directory.

        Once installed, go to the WordPress plugin page and activate WP Statistics.

        You should then configure the settings found in the following sections, at a minimum, check the sections on the GeoIP, browscap and exclusions.

        Removal

        If you wish to remove WP Statistics, you can do so using the standard WordPress tools, however WP Statistics will NOT delete the statistical data or settings from the database using this method.

        You can remove the data and settings by going in to the Statistics->Settings->Removal tab and checking the “Remove data and settings” option.  This will delete all tables and settings and effectively disable the plugin.

        You can then go to WordPress plugins page and disable/delete it completely from your site.

        Manual Removal

        If you have to manually delete the plugin you can do so if you have access to phpMyAdmin or another SQL management tool on your hosting provider.  

        NOTE: You should not attempt to manually remove the plugin unless it is absolutely necessary and only if you understand all the steps involved.

        First, delete the plugin files which can be found in your WordPress/wp-content/plugins/wp-statistics folder.

        Next remove the data from the database, for this example we will assume you have not changed your WordPress database prefix and are not running multi-site.  If your prefix is different or you are running multi-site you will need to run each of the commands with the appropriate database table names.

        Execute the following SQL commands:

        Main Interface

        WP Statistics adds a top level menu to your admin interface in PHP, you should see like this in your main admin page:

        The Statistics menu will be located near the bottom of the list, clicking on it should bring up the following additional items:

        In addition, if you've enabled the option, you may also see the WP Statistics menu icon in the main admin bar of your site as such:

        This menu gives you a quick summary of what is going on with your site and direct access to the overview page of WP Statistics.

         

         

        Dashboard Widgets

        WP Statistics includes a number of dashboard widgets you can add if you have read access to WP Statistics.  

        By default, the dashboard widgets are not displayed, with the exception of the Quick Stats widget.  Users can individually enable them through the “Screen Options” drop down in the WordPress dashboard.

        The dashboard widgets mirror the Overview page widgets with the following exceptions/notes:

         

        Widget

        Description

        Quick Stats

        This combines the visit/visitor stats from the summary widget and the hits graph for the last ten days.  

        About

        This widget is not available on the dashboard.

        Manual Page

        The manual page gives you access to the release version of this document.

        You will be given access to the online version of the document which you can read, or the two icons at the top of the page will allow you to download a copy of the manual to read offline or print for your reference.

        There are two formats available to download, the first is a OpenOffice/LibreOffice ODT file and the second is an HTML file.

         

        Settings Page

        The first thing you should do after installing WP Statistics is configure the plug-in, this is accomplished through the settings page.

        Simply go to Statistics->Settings to get there.  The main settings page looks like this:

        At the top are nine tabs, each one will be addressed separately.  

        General Settings

        The General Settings page has 9 subsections to it; Users Online, Visits, Visitors, Pages, Miscellaneous, Search Engines, Charts, Map and Statistical reporting.

        IP Addresses

        The IP Addresses section contains the configuration items IP storage in WP Statistics.  Note has a long term impact to your site.

        Setting

        Values

        Description

        Hash IP Addresses

        On/Off

        This feature will not store IP addresses in the database but instead used a unique hash. The "Store entire user agent string" setting will be disabled if this is selected.

         

        You will not be able to recover the IP addresses in the future to recover location information if this is enabled.

         

        Once enabled all new visitors to your site will have their IP addresses stored as a hash, however previous visits will not be converted and you may want to purge your old data.

         

        You can also got to Statistics->Optimization->Updates and select “Hash IP Addresses” to update old entires in the database.

        Users Online

        The Users Online section contains the configuration items tracking online users in WP Statistics.  

        Setting

        Values

        Description

        User Online

        On/Off

        This enables/disables the tracking of users that are online for your site.

        Check for online users every

        Number

        If you have enabled Users Online tracking, this is how often they are checked for.  If a user has not visited a page within this number of seconds, they will be considered offline.

         

        Visits

        The Visits section contains the configuration items for tracking visits (hits) to your site.

        Setting

        Values

        Description

        Visits

        On/Off

        This enables/disables the tracking of visits (hits) for your site.

         

        Visitors

        The Visitors section contains the configuration items for the visitor tracking for your site.

        Setting

        Values

        Description

        Visitors

        On/Off

        This enables/disables the tracking of visitors for your site.

        Store entire user agent string

        On/Off

        If you have enabled Visitors, by default it stores the browser make, version and platform in the database by parsing the user agent (UA) string.  However UA strings are very complex and parsing sometimes does not work correctly.  You can store the entire UA string in the database so that it can used to troubleshoot issues.

        Coefficient per visitor

        Number

        This is the number of hits each visitor records for.  Usually is 1, however if you have another plug-in that causes visitors to effectively connect to to your site more than once for each page view, this can be set to a lower value to account for that.

         

        Pages

        The Pages section contains the configuration items for the page tracking code.

        Setting

        Values

        Description

        Pages

        On/Off

        This enables/disables the tracking of individual page hits.

        Track all pages

        On/Off

        By default, page tracking only tracks WordPress pages and posts, however you can enabled tracking of all pages (like category pages, RSS feeds, etc.) with this option.  

         

        Note: this will significantly increase the pages table and may make the top pages chart less useful as many system pages will likely be near the top.

        Strip parameters from URI

        On/Off

        By default the page tracking code tracks every unique URI, including the parameters after the ?. This can cause the same page to be tracked as multiple unique URI's which may not be appropriate.

         

        This option cannot be activated if you are using the default setting for permalinks in WordPress. Likewise if your permalink setting contains a ? then this option will not be available.

         

        You should only enable this option if you fully understand the consequences.  For example, the default behaviour of WP Statistics is to track multi-page posts separately so you can see if a user reads more than one page.  Enabling this option will not track these pages separately.

        Disable hits column in post/pages list

        On/Off

        By default, if Pages is enabled, WP Statistics will add a column to the post and pages lists in WordPress and display the number of hits each one has had.  This does have a performance impact and this option will disable this behaviour.

         

        Miscellaneous

        The Miscellaneous section contains configuration items for WP Statistics.

        Setting

        Values

        Description

        Show stats in menu bar

        Yes/No

        This enables/disables the admin menu bar for WP Statistics.  

         

        Note: As the WP Statistics menu bar displays visitor stats, it adds load to your database for each admin page load.

        Hide admin notices about non active features

        On/Off

        By default, WP Statistics will warn you about any primary features that have been disabled (Online Users, Visits, Visitors, Pages and GeoIP).  If you have disabled a feature on purpose or cannot support the GeoIP code, this option will remove the warning.

        Delete the manual

        On/Off

        By default WP Statistics stores the admin manual in the plugin directory (~5 meg), if this option is enabled it will be deleted now and during upgrades in the future.

         

        Search Engines

        The Search Engines section contains the options for which search engines you want to track as well as controlling search quires that do not contain any values.  By default all supported search engines are enabled, you may disable individual ones as required.

        Note however that disabling all search engines is not allowed, doing so will result in all search engines being active.

        Setting

        Values

        Description

        Add page title to empty search words

        On/Off

        If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by "~:" as the search query to help identify what the user may have been searching for.

        Baidu

        On/Off

        Enable/disable Baidu.

        Bing

        On/Off

        Enable/disable Bing.

        clearch.org

        On/Off

        Enable/disable clearch.org.

        DuckDuckGo

        On/Off

        Enable/disable DuckDuckGo.

        Google

        On/Off

        Enable/disable Google.

        Yahoo!

        On/Off

        Enable/disable Yahoo!.

        Yandex

        On/Off

        Enable/disable Yandex.

         

        Also note that geographic versions of the search engines are supported, so Google will include google.com as well as google.ca and other variations.

        Developers Note:

        The search engine list can be found in wp-statistics\includes\functions\functions.php in the function called wp_statistics_searchengine_list() (should be around line 297).  You can add additional search engines by editing the $engines array, details are contained in the comments above the function.  All other aspects of the search engine code relies on this array and no other aspects of WP Statistics needs to be changed to support the addition or removal of search engines.

        Charts

        The Charts section contains the options for the display of charts in WP Statistics.

        Setting

        Values

        Description

        Include totals

        On/Off

        By default WP Statistics does not include totals in charts that have multiple values in them, this options enables a total value on any chart that supports them.

         

        Languages

        The Languages section contains the options for the language used in WP Statistics.

        Setting

        Values

        Description

        Force English

        On/Off

        By default WP Statistics uses the language that the WordPress administrative console is set to to display all strings.  This setting will override that behaviour and instead use English.

         

        Notifications

        Common Report Options

        The Common Report Options section contains options that are common to all of the sections that follow.

        Setting

        Values

        Description

        E-mail addresses

        Comma separated list

        This is a comma separated list of e-mail addresses to send the report too if e-mail was selected in the option above.  By default this will be the WordPress admin e-mail address.

         

        Update Reports

        The Update Reports section contains options for when to send e-mail notifications when various update actions occur.

        Setting

        Values

        Description

        Browscap

        On/Off

        Send a report whenever the browscap.ini is updated.  See the browscap tab to enable automatic updates.

        GeoIP

        On/Off

        Send a report whenever the GeoIP database is updated.  See the GeoIP tab to enable automatic updates.

        Pruning

        On/Off

        Send a report whenever the pruning of database is run.  See the Maintenance tab to enable automatic pruning.

        Upgrade

        On/Off

        Send a report whenever the plugin is upgraded.

         

        Statistical Reporting

        The Statistical Reporting section contains the options to email the administrators the statistics.

        Note if reporting is disabled, all other related fields will be hidden in the user interface.

        Setting

        Values

        Description

        Statistical reporting

        On/Off

        Enable/disable the reporting.

        Schedule

        Hourly/

        Twice Daily/

        Daily/

        Weekly/

        Bi-Weekly/

        Every 4 Weeks

        How often to send the report.

        Send reports via

        Email/SMS

        How to send the report, the blog's admin email address is used if email is selected.

         

        To support SMS you must have WordPress SMS (http://wordpress.org/plug-ins/wp-sms/) installed as well.

        Report body

        Text

        This is the report text which will be sent, you can use any short codes supported by your installation of WordPress, including the ones from WP Statistics.

         

        As of WP Statistics 8.0 the old variables have been removed and the upgrade process will automatically replace them with the appropriate short codes.

         

        Dashboard/Overview

        The Overview page has 3 subsections to it; Map, Post/Page Editor and Widgets to Display.

        Dashboard

        The Dashboard section contains the options for the display of the dashboard widgets.

        Setting

        Values

        Description

        Disable dashboard widgets

        On/Off

        If you wish to disable the dashboard widgets for all users, you can do so by enabling this option.

        Post/Page Editor

        The Post/Page Editor section contains the option for the widget on the post/page editor in WordPress.

        Setting

        Values

        Description

        Disable post/page editor widget

        On/Off

        WP Statistics will include a 20 days page hit chart on the post and page editor screens in WordPress.  This option will disable this for your site.

        Map

        The Maps section contains the options for the display of the GeoIP map in the overview page of WP Statistics.

        Setting

        Values

        Description

        Disable map

        On/Off

        By default the map is displayed in the overview page, however it can be disabled with this option.

         

        Access/Exclusions

        The Access/Exclusions page has 5 subsections to it; Access Levels, Exclusions, Excluded User Roles, IP/Robot Exclusions and Site URL Exclusions.

        Access Levels

        The Access Levels section contains the settings to control who can view and manage the WP Statistics plug-in.

        What roles are available to set is dependent on your installation of WordPress, some plug-ins add roles.

        The default roles in WordPress map as follows:

        Note, each of the above cascades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins.

        For more information about WordPress roles, you can visit the “WordPress Roles and Capabilities” page at http://codex.wordpress.org/Roles_and_Capabilities.

        There are also several good plug-ins to extend the roles and capabilities of WordPress, one such plug-in is Capability Manager Enhanced (http://wordpress.org/plug-ins/capability-manager-enhanced/).

        Setting

        Values

        Description

        Required user level to view WP Statistics

        WordPress Role

        This will be the minimum role required to access the statistics pages.  This will not provide access to the settings or optimization pages.

        Required user level to manage WP Statistics

        WordPress Role

        This will be the minimum role required to fully administrate WP Statistics.

        Exclusions

        The Exclusions page has 6 subsections to it; Exclusions, Excluded User Roles, IP/Robot Exclusions, GeoIP Exclusions, Host Exclusions and Site URL Exclusions.

        Exclusions

        The Exclusions section contains the settings to control if exclusions are recorded or not.

        Setting

        Values

        Description

        Record exclusions

        On/Off

        If a page hit is excluded for any of the settings in the next several sections it is dropped silently by default.  This setting will enable aggregate recording of these exclusions so you can track spikes in the different types of exclusions.

        Exclude User Roles

        The Exclude User Roles section contains the settings to control if different user roles are excluded from the statistics.

         

        Note, by default WordPress comes with the following roles, however plug-ins can extend the roles available so you may see a different list in your installation.  Also, the Everyone role is excluded from this list as excluding it would effectively disable WP Statistics.

        Setting

        Values

        Description

        Administrator

        On/Off

        The Administrator role.

        Editor

        On/Off

        The Editor role.

        Author

        On/Off

        The Author role.

        Contributor

        On/Off

        The Contributor role.

        Subscriber

        On/Off

        The Subscriber role.

         

        Developers Note:

         

        WP Statistics builds this list dynamically, if you are writing a plug-in that adds a role to WordPress you do not need to make any changes to WP Statistics to have it supported.

        IP/Robot Exclusions

        The IP/Robot Exclusions section contains the settings to control if IP subnets and Robots are excluded from the statistics.

        Setting

        Values

        Description

        Robot list

        Text

        A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored.

         

        By default, when WP Statistics is upgraded, if this list has not been altered, new robots will be automatically added.  However if you have added your own robots to the list, you will have to manually add any new entries (which can be found in the upgrade section of the readme) to this list.

        Force robot list update after upgrades

        On/Off

        Force the robot list to be reset to the default after an update to WP Statistics takes place.

         

        Note if this option is enabled any custom robots you have added to the list will be lost.

        Robot visit threshold

        Number

        Treat visitors with more than this number of visits per day as robots. 0 = disabled.

         

        Be careful of setting this number too low as you may exclude too many people from the statistics.  

        Excluded IP address list

        Text

        A list of IP addresses and subnet masks (one per line) to exclude from statistics collection (both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted). To specify an IP address only, use a subnet value of 32 or 255.255.255.255.

         

        IPv6 addresses can also be added in the format of fc00::/7.

         

        WARNING: This is a VERY powerful feature which can be miss configured to exclude too many hits.  Be careful to use the right subnet for the addresses you want to exclude.

         

         

        Use honey pot

        On/Off

        WP Statistics can use a honey pot trap page which normal visitors will never visit to identify robots and crawlers.  Once identified, hits from these visitors will be excluded for the rest of the day.

        Honey pot post id

        Number

        The post ID of the page/post you wish to use as the honey pot, a hidden link will be added near the bottom of each page on your site.  Users will not see this link but crawlers which simply parse the HTML will and then follow it.

         

        WP Statistics can create a new honey pot post by simply checking the “Create a new honey pot pageoption.

        Treat corrupt browser info as a bot

        On/Off

        If WP Statistics finds corrupt or missing information for the IP address or User Agent string, enabling this option will exclude the visitor/visit from the statistics.

         

        GeoIP Exclusions

        The GeoIP Exclusions section contains the settings to control if hits are excluded based on their GeoIP information from the statistics.

        Setting

        Values

        Description

        Excluded countries list

        Text

        A list of country codes (one per line, two letters each) to exclude from statistics collection.

         

        Use "000" (three zeros) to exclude unknown countries.

        Included countries list

        Text

        A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded.

         

        Use "000" (three zeros) to exclude unknown countries.

         

        Host Exclusions

        The Host Exclusions section contains the settings to control if hits are excluded based on their host name information.

        Setting

        Values

        Description

        Excluded countries list

        Text

        A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection.

         

        Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it's IP address and when the cache is updated resulting in some hits recorded.

        Site URL Exclusions

        The Site URL Exclusions section contains the settings to control if some of the WordPress pages are excluded from the statistics.

        Note, self referrals from your own site are ALWAYS excluded from the stats.  These are most commonly ajax requests by WordPress.

        Setting

        Values

        Description

        Excluded Login Page

        On/Off

        Exclude the login page.

        Excluded Admin Pages

        On/Off

        Exclude all admin pages.

        Excluded RSS feeds

        On/Off

        Exclude all RSS pages from the statistics.  This includes the primary site feed as well as individual post comment feeds.  It should also include any custom RSS feeds that have been configured for your WordPress install.

        Excluded 404 pages

        On/Off

        Exclude any URL that returns a "404 - Not Found" message.

        Excluded URLs list

        Text

        A list of URL's (one per line) to exclude from the statistics collection.  

         

        These should NOT include any GET parameters they may not match the URL you expect.

        Externals

        The Externals page contains the settings to control the optional third party services, including GeoIP data collection, browscap robot exclusions and Piwik Referrer Spam Blacklist.

        GeoIP Settings

        The GeoIP settings allow you to configure the recording of country information for your visitors.  This requires the download and use of an external database and is disabled by default.

         

        Note: IP location services provided by GeoLite2 data created by MaxMind, available from http://www.maxmind.com.

        Note: Referrer spam blacklist is provided by Piwik, available from https://github.com/piwik/referrer-spam-blacklist.

        Setting

        Values

        Description

        GeoIP collection

        On/Off

        Enable/disable the collection of GeoIP information.

        Update GeoIP Info

        On/Off

        The GeoIP database is updated monthly by MaxMind, checking this option and saving the settings will download the latest database.  If you want to manually download the database, you can do so and store it in wordpress/wp-content/upload/wp-statistics.  Make sure to decompress it.

        Schedule monthly update of GeoIP DB

        On/Off

        WP Statistics can automatically download the new database each month by enabling this option.

         

        Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month (which is when the new database is released by MaxMind).

        Populate missing GeoIP after update of GeoIP DB

        On/Off

        After an update to the database is done, you can have WP Statistics automatically try and find missing geolocation information for visitors in the database.

        Country code for private IP addresses

        Text

        The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.). Use "000" (three zeros) to use "Unknown" as the country code.

        Borwscap Settings

        The browscap page contains the settings to control the use of the browscap.ini file for robot detection.  More information about browscap.ini can be found at browscap.org.

        The browscap.ini database is used to detect robots and crawlers to your site, however the normal distribution is quite large as it can identify any browser, not just robots.  To use the normal distribution of browscap would require and additional 5-6 meg of ram per page load.

        To avoid this, WP Statistics will process the browscap.ini file and strip out all non-robot based entries.  This reduces the overhead to approximately 200k per page load.  However there must be enough free disk space available to download and process the complete browscap.ini file.

        Setting

        Values

        Description

        browscap usage

        On/Off

        Enable/disable the use of the browscap.ini file.

        Update browscap Info

        On/Off

        The browscap.ini file is update on an irregular basis, checking this option and saving the settings will download the latest file.  Manually downloading the database is not recommended as it is quite large and WP Statistics removes unused items from it for performance reasons.

        Schedule weekly update of browscap DB

        On/Off

        WP Statistics can automatically download the new browscap.ini file on a weekly basis by enabling this option.

        Piwik Referrer Spam Blacklist settings

        Referrer spam is unwanted hits to your site by robots that impersonate users trying to insert spam links to your statsitcs, Piwik maintains a list of sites that use this technique and WP Statistics can exclude these from the data collection.

        Note: Referrer spam blacklist is provided by Piwik, available from https://github.com/piwik/referrer-spam-blacklist.

         

        Setting

        Values

        Description

        Piwik Referrer Spam Blacklist  usage

        On/Off

        Enable/disable the use of the Piwik Referrer Spam Blacklist.

        Update Piwik Referrer Spam Blacklist  Info

        On/Off

        The Piwik Referrer Spam Blacklist file is update on a weekly basis, checking this option and saving the settings will download the latest file immediately.  

        Schedule weekly update of Piwik Referrer Spam Blacklist  DB

        On/Off

        The Piwik Referrer Spam Blacklist file is update on a weekly basis, checking this option and saving the settings will download the latest file each week.  

        Maintenance

        The Database Maintenance page contains the settings to control if the database is pruned of older data.

        Setting

        Values

        Description

        Run a daily WP Cron job to prune the databases

        On/Off

        Enable/disable the running of a daily job to prune the database of old data.  Since WP Statistics 8.2 the pruned data will be summarized in to the historical database.

        Prune data older than

        Number

        The number of days to keep statistics for. Minimum value is 30 days. This means a number above 30 must be entered here.

         

        Invalid values will disable the daily maintenance.

        Run a daily WP Cron job to prune the databases

        On/Off

        Enable/disable the running of a daily job to prune the database of visitors with more than a dfined number of hits per day.  These hits will be removed and not added to the historical database.

        Prune visitors with more than

        Number

        The number of hits to remove statistics for. Minimum value is 10 hits.

         

        Invalid values will disable the daily maintenance.

         

         

        Removal

        The Removal page allows you to remove the data and settings before uninstalling the plugin.

        Setting

        Values

        Description

        Remove data and settings

        On/Off

        Remove data and settings, this action cannot be undone.

        About

        The About page contains version information and other details of the plugin you may find useful.

         

        Optimization Page

        The Optimization page will allow you to do some basic maintenance tasks related to WP Statistics.

         

        The optimization page looks like this:

        It has six tabs; Resources/Information, Export, Purging, Database, Updates and Historical.

        Resources/Information

        The Resources/Information page has 4 subsections to it; Resources, Version Info, File Info and Client Info.

        Resources

        The Resources section contains some resource usage information.

        Setting

        Values

        Description

        Memory usage in PHP

        Bytes

        The number of bytes of memory WordPress is currently using.  This number is highly transitive and should only be used as a genera guide line.  Pages like the overview page use more memory than others.

        PHP Memory Limit

        N/A

        The maximum amount of memory that PHP will allow a script to use before terminating the script.  This value is set in the php.ini file and must be set high enough to allow WP Statistics to load and manipulate data in the statistics charts.

        Number of rows in the wp_statistics_useronline table

        Rows

        The number of rows in the users online table.

        Number of rows in the wp_statistics_visit table

        Rows

        The number of rows in the visits table.

        Number of rows in the wp_statistics_visitor table

        Rows

        The number of rows in the visitors table.

        Number of rows in the wp_statistics_exclusions table

        Rows

        The number of rows in the exclusions table.

        Number of rows in the wp_statistics_pages table

        Rows

        The number of rows in the pages table.

        Number of rows in the wp_statistics_historical table

        Rows

        The number of rows in the historical table.

         

        Version Info

        The Version Info section contains the various versions of the software installed on your server.

        Setting

        Values

        Description

        WP Statistics Version

        Version

        The version of the plug-in.

        PHP Version

        Version

        The version of PHP.

        PHP Safe Mode

        Yes/No

        Is PHP running in safe mode.  Note this is the value in php.ini, so even though PHP 5.4 and above deprecated safe mode, you may still have the value set in php.ini.  If you do, you should remove it.

        PHP IPv6 Enabled

        Yes/No

        Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them.

        jQuery Version

        Version

        The version of jQuery.

        cURL Version

        Version

        The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled.If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully.

        Zlib gzopen()

        Yes/No

        If the gzopen() function is installed. gzopen() is required for the GeoIP database to be downloaded successfully.

         

        File Info

        The File Info section contains information about the GeoIP and browscap files.  Browscap has two files, the raw ini file downloaded from browscap.org and a cache file generated by the browscap library to improve performance on loading and lookups.

        Setting

        Values

        Description

        GeoIP Database

        Size/Date

        The file size and date of the GeoIP database installed on your system.

        browscap.ini File

        Size/Date

        The file size and date of the browscap.ini installed on your system.

        browscap Cache File

        Size/Date

        The file size and date of the browscap cache file installed on your system.

        Client Info

        The Client Info section contains some information about your current session.

        Setting

        Values

        Description

        Client IP

        IP Address

        The IP address you are currently connected from.

        User Agent

        String

        Your user agent string.

        Browser

        String

        The detected browser you are running.

        Version

        String

        The detected browser version you are running.

        Platform

        String

        The detected platform you have.

        Export

        The Export page allows you to export the data from the database to a flat file.  This is useful if you want to do additional analysis on the data or need to migrate to another statistics plug-in.

        Setting

        Values

        Description

        Export from

        Table name

        You can export from the three primary data tables.

        Export To:

        XML, CSV, TSV

        The format to export to.  

         

        XML will export an XML formatted file.

         

        CSV will export a comma separated value file.

         

        TSV will export a tab separated value file.

        Include Header Row

        On/Off

        Include a header row as the first line of the exported file.

         

         

        Purging

        The Purging page has 2 subsections to it; Data and Delete User Agent Types.

        Data

        The Data section allows you to purge information from the database..

        Setting

        Values

        Description

        Empty Table

        Table name

        This will delete ALL data from the selected tables.  Only do this if you are absolutely sure you want to reset all of your statistics.

        Purge records older than

        Number

        Deleted user statistics data older than the selected number of days. Minimum value is 30 days.  Since WP Statistics 8.2 the pruned data will be summarized in to the historical database.

        Purge visitors with more than

        Number

        Deleted user statistics data where the user has more than the defined number of hits in a day. This can be useful to clear up old data when your site has been hit by a bot.

         

        This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis.

         

        Minimum value is 10 hits.

         

        Delete User Agent Types

        The Delete User Agent Types section allows you to delete various user agent types from the database.  This can be used to remove robots or other types of agents that are not real users.

        Setting

        Values

        Description

        Delete Agents

        Agent name

        This will delete ALL visitors with the selected agent type.

        Delete Platforms

        Platform name

        This will delete ALL visitors with the selected platform.

        Database

        The Database page allows you to rerun the install routine or add a unique index to the Visitors table to protect against duplicate entries.  

        Database Setup

        If for some reason you have had to delete one or more tables from the database server (perhaps a corrupt table or recovering from an incomplete backup) WP Statistics will warn you that the tables are missing however it will only run the database install/upgrade code during a version change.

        This option will let you re-run the WP Statistics setup routine without having to manipulate the WordPress options table or the WP Statistics code.

        This should only be done as a last resort.

        Database Index

        There are two indexes that older installs of WP Statistics do not have on the tables in the database.  Adding these during the setup process can cause timeout's and so they are available to be added manually by the administrator.

        If you do not have these indexes you will be presented with a button to add each index to the table.

        Search Table

        WP Statistics 9.5 added a new table and code to better handle referrers and search words, however converting older installs requires a manual upgrade, presented here if required.  

        Updates

        The Updates page allows you to update data in the database for GeoIP and Hash IP addresses.

        GeoIP Options

        Setting

        Values

        Description

        Countries

        N/A

        Selecting the “Update Now!” button will try and update any missing geolocation information in the visitors table.  This can also be automated with the Statistics->Settings->GeoIP->Populate missing GeoIP after update of GeoIP DB setting.

         

        Note if you have selected to hash the IP addresses then this will not function for those entires with hashed values.

         

        IP Addresses

        Setting

        Values

        Description

        Hash IP Addresses

        N/A

        Selecting the “Update Now!” button will replace all IP addresses in the database with hash values.

         

        You will not be able to recover the IP addresses in the future to populate location information if this is selected.

        Historical

        The Historical page allows you to configure the values to add to the total visits and visitors for your site.  These values are auto incremented when any purging of data is done.  Purging data also records page hits, however there is no user interface available for changing the values for page entries.

        Note that if you use the purge function in the optimization page you should reload the page before editing these numbers as they will not be accurate.

        Historical Values

        Setting

        Values

        Description

        Visitors

        Number

        A number of visitors to add to the total number of visitors to your site.  This is useful if you have migrated from another statistics plugin or have purged data in the past to give an accurate total visitors count for your site.

        Visits

        Number

        A number of visits to add to the total number of visits to your site.  This is useful if you have migrated from another statistics plugin or have purged data in the past to give an accurate total visits count for your site.

         

        Overview Page

        The Overview page gives you a quick summary of all the statistics available, it looks like this:

        It contains several “widgets” to display information, these are; Summary Statistics, Browsers, Top referring sites, Top 10 Countries, About, Top visitors on map, Hits Statistical Chart, Search Engine Referrals Statistical Chart, Latest Search Words, Top Pages Visited and Recent Visitors.

        Each widget is comprised of a header bar and a statistical body.  The header contains two areas:

        The details button will take you to a separate page with additional or more comprehensive statistics on the related items.

        The refresh button will reload the widgets contents.

        The “Minimize/Maximize” control will collapse/expand the widget.  Note that the state of the widget is not saved between page views so they will re-expand the next time you visit the overview page.

        The widgets are as follows:

        Widget

        Description

        Quick Statistics

        This combines some information from the Summary widget and the Hits widget in to a compact display of activity on your site.

        Summary Statistics

        This displays today's and yesterday's statistics for the site.  This includes the number of users currently online, visits, visitors and search engine referrals.

        This widget also displays the current date and time (at page load).  WP Statistics relies on the correct date and time as well as timezone being set on the server and in WordPress to display the correct information.

        Top 10 Browsers

        This displays a pie chart (not configurable) of the top ten browser types that have visited your site.

        Top Referring Sites

        This displays the top 10 sites that have referred visitors to your site.

        Top 10 Countries

        This displays the top 10 countries of the visitors to your site.

        About

        This provides some details about the plug-in and the donation links.

        Today Visitors Map

        This displays your visitors today on a Google map.  This requires the GeoIP code to be enabled.   You can use either Google or JQVMap mapping libraries (see Statistics->Settings->Overview->Maps).  To keep the maps readable, the last five visitors per country are displayed on the map.

        Hits Statistics

        This displays your visit and visitor counts in a graph format for the last 20 days.

        Search Engine Referrals

        This displays the number of referrals you have received from search engines for the last 20 days.

        Latest Search Words

        This displays the last 10 search words referred to your site by search engines.  Note that this is highly dependent on the search engine providing the information, some do not.

        Top 10 Pages

        This displays the top 10 pages that are visited for your site.

        Recent Visitors

        This displays the last 10 visitors to your site.  This includes options to map their location, what country they came from and what browser they are using.

        Top 10 Visitors Today

        This displays the top 10 visitors today based on the number of times they have visited the site today.  The display includes the visitors location, ip and browser details.

        Browsers Page

        The first two pie charts provide details on the browser type and platform used.  The rest of the pie charts identify different version of browsers used.

        Countries Page

        This page provides details about the countries of users that have visited your site.

        This chart will list all countries and includes the number of visitors from each.

         

        Exclusions Page

        This page provides a trending chart for the exclusion reasons if Statistics->Settings->Record Exclusions is enabled.

        The top part of the page allows you to select from

        Note that the longer the increment is the more data that is required to be processed.  Large site with long increments can take significant time and memory to process.

        Hits Page

        This page provides a trending chart for the total visitors to your site over a selectable time line.

        The top part of the page allows you to select from

        Note that the longer the increment is the more data that is required to be processed.  Large site with long increments can take significant time and memory to process.

         

        Online Page

        This page provides a list of users that are currently online and how long they have been online for.

        Pages Page

        This page provides trending graph of your top five pages over the last 20 days as well as a complete list of all your page rankings divided up in to groups of 10.

        The top part of the page allows you to select from

        Note that the longer the increment is the more data that is required to be processed.  Large site with long increments can take significant time and memory to process.

        The time selection only effects the display of the chart on this page and not the page list at the bottom of the page.

        The list of pages contains the rank, page title (not all pages will have titles), the URI of the page and the number of visits.  The number of visits is a link to a more detailed trending graph for that page.

        The detailed trending page looks like:

        The time frame is selectable by the links at the top of the page.  This trending view is available to all pages in the pages list as well as, if not disabled, the hits count in the page/posts list and editor in WordPress.

        Referrers Page

        This page provides a complete list of all referrers to your site.

        It is divided up in to pages of 10 entries each for easy browsing.

        Searches Page

        This page provides a trending graph of all incoming search engine traffic to your site.

        The top part of the page allows you to select from

         

        Note that the longer the increment is the more data that is required to be processed.  Large site with long increments can take significant time and memory to process.

        Search Words Page

        This page provides a list of all search words from search engines to your site.

        It is divided up in to pages of 20 entries each for easy browsing.

        Top Visitors Today

        This page provides a list of the top 100 visitors to your site today.

        It is divided up in to pages of 20 entries each for easy browsing.

        Visitors Page

        This page provides a list of all vistors to your site.

        It is divided up in to pages of 20 entries each for easy browsing.

        Multi-Site

        WordPress multi-site allows you to run multiple independent sites from a single WordPress installation.  

        WP Statistics does not fully support multi-site at this time but does have some basic options available for multi-site installations.

        The key areas of support are currently:

        Multi-Site Installation

        Installing WP Statistics on a multi-site installation is much like on a standalone WordPress setup.  Each  site will have it's own database tables and options for WP Statistics which can be configured on the site dashboard.

        As long as you install WP Statistics with an account that has rights across the network, the database tables will be automatically created for each site.  If your installation account does not have rights to one or more of the child sites, you can manually run the installation routine by logging in with an account that does have rights and re-running the install process manually from the Statistics->Settings menu for the site.

        Multi-Site Updates

        Much like instllation, updates will automatically update any database tables and settings as required as long as the account you are using to upgrade with has rights to the child sites.  If your account does not have rights to one or more of the child sites, you can manually run the installation routine by logging in with an account that does have rights and re-running the install process manually from the Statistics->Settings menu for the site.

        Removal

        Removal is accomplished the same way as for single installs and supports multi-site.

        Network Menu

        The network admin page looks much like the standard WordPress admin page, however it has some significant differences.  WP Statistics has a basic implementation of the network menu to allow an administrator some additional functions that may be of use in multi-site installations.

        The primary WP Statistics menu in the network admin page looks like this:

        The first entry is the overview page, it will be discussed later.
         

        The next set of entries are each of your sites in the network, up to a maximum of 15.  Clicking on any of these menu entries will take you to the overview page on the sites admin page.

        The final entry is the manual, if it is installed.

        Network Menu Overview Page

        The Network Menu Overview Page provides a list of all your sites as well as quick links to the vairous WP Statistics pages for each.

         

        This page is not limited to 15 entries and will show you all of your sites no matter how many you have.

        The Widget

        WP Statistics comes with a WordPress widget to display some statistical information to your front end.  The widget is still supported, however you may find the shortcodes to be more useful as they can be used in an HTML widget with any custom formatting you may like to apply.

         

        The widget is called “Statistics” and the configuration page looks as follows:

        The name field at the top will be displayed in the header of the widget on your site.  Each option that is enabled will be displayed on a single line in the widget and display the indicated information.

        Shortcodes

        WP Statistics supports shortcodes in WordPress, these can be used in either a post and page body as well as an HTML widget.

        The general shortcode format is:

         [wpstatistics stat=xxx time=xxxx provider=xxxx format=xxxxxx id=xxx]

        Where:

        Item

        Description

        stat

        The statistic you want, see the next table for available options.

        time

        Is the time frame for the statistic.  This value uses the strtotime() PHP function (http://php.net/manual/en/datetime.formats.php) format, some acceptable values include:

        • today 

        • yesterday 

        • week 

        • month 

        • year 

        • total  

        • "-x" (i.e., "-10" for the past 10 days) 

        Please refer to the PHP manual link above for a complete description.

        provider

        The search provider to get stats on (ask/bing/clearch/duckduckgo/google/yahoo/yandex).

        format

        The format to use for numbers, the options are i18n (uses the format of the current country as set in WordPress), english (uses 1,000.00 style formats) or none (the default will return an number without any formating)

        Id

        The page/post ID to get statistics on.  Only used on pagevisits.

         

        The “stat” field can be any of the following:

        Stat

        Description

        usersonline

        The number of users online right now.

        visits

        The number of hits to the site.

        visitors

        The number of visitors to the site.

        pagevisits

        The number of times the current page has been visited

        searches

        The number of search engine referrals.

        postcount

        The total number of posts on the site.

        pagecount

        The total number of pages on the site.

        commentcount

        The total number of comments on the site.

        spamcount

        The total number of spam comments on the site.

        usercount

        The total number of users on the site.

        postaverage

        The average posts per user on the site.

        commentaverage

        The average comments per user on the site.

        useraverage

        The average number of users on the site.

        lpd

        The last post date for the site.


        Examples:

        Function API

        WP Statistics supports several functions for other plug-in and theme authors to use to retrieve statistics about the site.  All of the external functions can be found in:

         wp-statistics\includes\functions\functions.php

         

        Function

        Description

        wp_statistics_useronline()

        Get the number of users online

        wp_statistics_visitor(time)

        Get the number of visitors

        wp_statistics_visit(time)

        Get the number of visits (hits)

        wp_statistics_pages(time,uri,id)

        Get the page views for a given page

        wp_statistics_uri_to_id(uri)

        Get the page ID of a given uri

        wp_statistics_get_top_pages()

        Get all pages sorted by number of hits (high to low)

        wp_statistics_get_uri()

        Get the current page's uri

         wp_statistics_searchengine(provider, time)

        Get the number of search engine referrals

        wp_statistics_ua_list()

        Retrieve a list of all visitors user agents

        wp_statistics_useragent(agent)

        Retrieve the number of visits from users with a specific user agent

        wp_statistics_platform_list()

        Retrieve a list of all visitors platforms

        wp_statistics_platform(platform)

        Retrieve the number of visits from users with a specific platform

        wp_statistics_agent_version_list(agent)

        Retrieve a list of all visitors agent versions

        wp_statistics_agent_version(agent, version)

        Retrieve the number of visits from users with a specific agent version

        wp_statistics_searchengine_list(all)

        Retrieve a list of search engines, by default this only returns search engines that are active, setting all to TRUE will return ALL search engines

        wp_statistics_searchword_query (search_engine)

        Returns the SQL query portion to find all search word queries for a given search engine

        wp_statistics_searchengine_query (search_engine)

        Returns the SQL query portion to find all search engine results for a given search engine

        wp_statistics_searchengine_regex (search_engine')

        Returns the regex to determine if a Referral URL is from a search engine

        wp_statistics_countposts()

        Total number of posts on your site

        wp_statistics_countpages()

        Total number of pages on your site

        wp_statistics_countcomment()

        Total number of comments on your site

        wp_statistics_countspam()

        Total number of spams items on your site

        wp_statistics_countusers()

        Total number of users on your site

        wp_statistics_lastpostdate()

        Last post date

        wp_statistics_average_post()

        Average number of posts

        wp_statistics_average_comment()

        Average number of comments

        wp_statistics_average_registeruser()

        Average number of users

         

        Where:

         

        Item

        Description

        time

        Is the time frame for the statistic.  This value uses the strtotime() PHP function (http://php.net/manual/en/datetime.formats.php) format, some acceptable values include:

        • today 

        • yesterday 

        • week 

        • month 

        • year 

        • total  

        • "-x" (i.e., "-10" for the past 10 days) 

        Please refer to the PHP manual link above for a complete description.

        provider

        The search provider to get stats on (bing/duckduckgo/google/yahoo/yandex).

        uri

        The uri of the page you want to get statistics for.  This should only be the portion of the URI after your WordPress base directory.  So if the full URL of the page you want is:

        http://example.com/wordpress/index.php?p=5

        then the uri field should be:

        /index.php?p=5

        id

        The post or page id you want to get statistics for.

         

        \ No newline at end of file diff --git a/plugins/wp-statistics/manual/WP Statistics Admin Manual.odt b/plugins/wp-statistics/manual/WP Statistics Admin Manual.odt new file mode 100644 index 0000000..bb6b903 Binary files /dev/null and b/plugins/wp-statistics/manual/WP Statistics Admin Manual.odt differ diff --git a/plugins/wp-statistics/readme.txt b/plugins/wp-statistics/readme.txt new file mode 100644 index 0000000..ff5282e --- /dev/null +++ b/plugins/wp-statistics/readme.txt @@ -0,0 +1,1260 @@ +=== WP Statistics === +Contributors: GregRoss, mostafa.s1990 +Donate link: http://wp-statistics.com/donate/ +Tags: statistics, stats, visit, visitors, chart, browser, blog, today, yesterday, week, month, year, total, post, page, sidebar, summary, feedburner, hits, pagerank, google, alexa, live visit +Requires at least: 3.0 +Tested up to: 4.6.1 +Stable tag: 11.0.1 +License: GPL3 + +Complete statistics for your WordPress site. + +== Description == +A comprehensive plugin for your WordPress visitor statistics, come visit us at our [website](http://wp-statistics.com) for all the latest news and information. + +Track statistics for your WordPress site without depending on external services and uses arrogate data whenever possible to respect your users privacy. + +On screen statistics presented as graphs are easily viewed through the WordPress admin interface. + +This product includes GeoLite2 data created by MaxMind, available from http://www.maxmind.com. + += Features = +* Online users, visits, visitors and page statistics +* Search Engines, see search queries and redirects from popular search engines like Google, Bing, DuckDuckGo, Yahoo, Yandex and Baidu +* Overview and detail pages for all kinds of data, including; browser versions, country stats, hits, exclusions, referrers, searches, search words and visitors +* GeoIP location by Country +* Support for hashing IP addresses in the database to protect your users privacy +* Interactive map of visitors location +* E-mail reports of statistics +* Set access level for view and manage roles based on WordPress roles +* Exclude users from statistics collection based on various criteria, including; user roles, common robots, IP subnets, page URL, login page, RSS pages, admin pages, Country, number of visits per day, hostname +* Record statistics on exclusions +* Automatic updates to the GeoIP database +* Automatically prune the databases of old data +* Export the data to XML, CSV or TSV files +* Widget to provide information to your users +* Shortcodes for many different types of data in both widgets and posts/pages +* Dashboard widgets for the admin area +* Comprehensive Admin Manual + += Translations = +WP Statistics has been translated in to many languages, for the current list and contributors, please visit the [translators](https://wp-statistics.com/translators/) page on [wp-statistics.com](https://wp-statistics.com/). + +Translations are done by people just like you, help make WP Statistics available to more people around the world and [do a translation](http://wp-statistics.com/translations/) today! + += Support = +We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us: + +* Have you read the [FAQs](http://wordpress.org/plugins/wp-statistics/faq/)? +* Have you read the [manual](http://plugins.svn.wordpress.org/wp-statistics/trunk/manual/WP%20Statistics%20Admin%20Manual.html)? +* Have you search the [support forum](http://wordpress.org/support/plugin/wp-statistics) for a similar issue? +* Have you search the Internet for any error messages you are receiving? +* Make sure you have access to your PHP error logs. + +And a few things to double-check: + +* How's your memory_limit in php.ini? +* Have you tried disabling any other plugins you may have installed? +* Have you tried using the default WordPress theme? +* Have you double checked the plugin settings? +* Do you have all the required PHP extensions installed? +* Are you getting a blank or incomplete page displayed in your browser? Did you view the source for the page and check for any fatal errors? +* Have you checked your PHP and web server error logs? + +Still not having any luck? Open a new thread on one of the support forums and we'll respond as soon as possible. + +* [English Support Forum](http://wordpress.org/support/plugin/wp-statistics) +* [Persian Support Forum](http://forum.wp-parsi.com/forum/17-%D9%85%D8%B4%DA%A9%D9%84%D8%A7%D8%AA-%D8%AF%DB%8C%DA%AF%D8%B1/) + +== Installation == +1. Upload `wp-statistics` to the `/wp-content/plugins/` directory. +2. Activate the plugin through the 'Plugins' menu in WordPress. +3. Make sure the Date and Time is set correctly in WordPress. +4. Go to the plugin settings page and configure as required (note this will also download the GeoIP database for the fist time). + +== Frequently Asked Questions == += Where's the Admin Manual? = +The admin manual is installed as part of the plugin, simply go to Statistics->Manual to view it. At the top of the page will also be two icons that will allow you to download it in either ODT or HTML formats. + += What do I do if the plug does not work? = +Disable / Enable the plugin. You may also want to try removing and re-installing it as well. If it is still not working, please open a new support thread on the [WordPress support forums](http://wordpress.org/support/plugin/wp-statistics). + += All visitors are being set to unknown for their location? = +Make sure you've downloaded the GeoIP database and the GeoIP code is enabled. + +Also, if your running an internal test site with non-routable IP addresses (like 192.168.x.x or 172.28.x.x or 10.x.x.x), these addresses will come up as unknown always unless you have defined a location in the "Country code for private IP addresses" setting. + += GeoIP is enabled but no hits are being counted? = +The GeoIP code requires several things to function, PHP 5.3 or above, the cURL extension and PHP cannot be running in safe mode. All of these conditions are checked for but there may be additional items required. Check your PHP log files and see if there are any fatal errors listed. + += How much memory does PHP Statistics require? = +This depends on how many hits your site gets. The data collection code is very light weight, however the reporting and statistics code can take a lot of memory to process. The longer you collect data for the more memory you will need to process it. At a bare minimum, a basic WordPress site with WP Statistics should have at least 32 meg of RAM available for a page load. Sites with lots of plugins and high traffic should look at significantly increasing that (128 to 256 meg is not unreasonable). + += I've enabled IP subnet exclusions and now no visitors are recorded? = +Be very careful to set the subnet mask correctly on the subnet list, it is very easy to catch too much traffic. Likewise if you are excluding a single IP address make sure to include a subnet mask of 32 or 255.255.255.255 otherwise you may not get the expected results. + += I'm not receiving e-mail reports? = +Make sure you have WordPress configured correctly for SMTP and also check your WP Cron is working correctly. You can use [Cron View](http://wordpress.org/plugins/cron-view) to examine your WP Cron table and see if there are any issues. + += Does WP Statistics support multi-site? = +WP Statistics doesn't officially support multi-site however it does have limited functionally associated with it and should function without issue. However no support is provided at this time. + +Version 8.8 is the first release that should install, upgrade and remove correctly on mutli-site as well as have some very basic support for the network admin menu. This should not be taken as an indication that WP Statistics fully supports multi-site, but only as a very preliminary first step. + += Does WP Statistics report on post hits? = +Yes, version 6.0 has introduced page hit statistics! + += Does WP Statistics track the time of the hits? = +No. + += The GeoIP database isn't downloading and when I force a download through the settings page I get the following error: "Error downloading GeoIP database from: http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz - Forbidden" = +This means that MaxMind has block the IP address of your webserver, this is often the case if it has been blacklisted in the past due to abuse. + +You have two options: +- Contact MaxMind and have them unblock your IP address +- Manually download the database + +To manually download the database and install it take the following steps: + +- On another system (any PC will do) download the maxmind database from http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz +- Decompress the database +- Connect to your web host and create a "wp-statistics" directory in your wordpress uploads folder (usually it is located in wp-content, so you would create a directory "wp-content/uploads/wp-statistics"). +- Upload the GeoLite-Country.mmdb file to the folder you just created. + +You can also ask MaxMind to unblock your host. Note that automatic updates will not function until you can successfully download the database from your web server. + += I've activated the plugin but the menus don't show up and nothing happens? = + +WP Statistics requires PHP 5.4, if it has detected an older version of PHP installed it will active cleanly in WordPress but disable all functionality, you will have to upgrade to PHP 5.4 or above for it to function. WP Statistics will display an error on your plugin list just below the WP Statistics entry to let you know. + +If there is no error message there may be something else wrong, your first thing to try is disabling your other plugins as they can sometimes cause conflicts. + +If you still don't see the menus, go to the support forums and open a new thread and we'll try to help out. + += I'm using another statistics plugin/service and get different numbers for them, why? = + +Pretty much every plugin/service is going to give you different results for visits and visitors, there are several reasons for this: + +* Web crawler detection +* Detection method (javascript vs server side PHP) +* Centralized exclusions + +Services that use centralized databases, like Google Analytics, for spam and robot detection have better detection than WP Statistics can. The trade off of course is relaying on an external service. + += When I upgrade or install WP Statistics I get an error message like "Parse error: syntax error, unexpected T_STRING, expecting T_CONSTANT_ENCAPSED_STRING or '('" = + +Since WP Statistics 8.0, PHP 5.3 or above has been required. If you are using an older version of PHP it cannot understand the new syntax included in WP Statistics 8.0 and generates a parse error. + +Your hosting provider should have a newer version of PHP available, sometimes you must activate it through your hosting control panel. + +Since the last release of PHP 5.2 is over 5 years ago (Jan 2011) and is no longer supported or receiving security fixes, if your provider does not support a newer version you should probably be moving hosting providers. + +If you have done an upgrade and you can no longer access your site due to the parse error you will have to manually delete the wp-statistics directory from your wordpress/wp-content/plugins directory, either through your hosting providers control panel or FTP. + +Do not use older versions of WP Statistics as they have know security issues and will leave your site vulnerable to attack. + += I've decided to stay with WP Statistics 7.4 even though its a bad idea but now WordPress continuously reports there are updates available, how can I stop that? = + +Don't, upgrade immediately to the latest version of WP Statistics. + += Something has gone horribly wrong and my site no longer loads, how can I disable the plugin without access to the admin area? = + +You can manually disable plugins in WordPress by simply renaming the folder they are installed in. Using FTP or your hosting providers file manager, go to your WordPress directory, from there go to wp-content/plugins and rename or delete the wp-statistics folder. + += I'm getting an error in my PHP log like: Fatal error: Call to undefined method Composer\Autoload\ClassLoader::set() = + +We use several libraries and use a utility called Composer to manage the dependencies between them. We try and keep our Composer library up to date but not all plugins do and sometimes we find conflicts with other plugins. Try disabling your other plugins until the error goes away and then contact that plugin developer to update their Composer files. + += The search words and search engine referrals are zero or very low, what's wrong? = + +Search Engine Referrals and Words are highly dependent on the search engine providing the information to us and that often is not the case. Unfortunately there is nothing we can do about this, we report on everything we receive. + += Why did my visits suddenly jump way up today? = + +There can be many reasons for this, but the most common reason is a botnet has decided to visit your site and we have been unable to filter it out. You usually see your visits spike for a few days and then they give up. + += What’s the difference between Visits and Visitors? = + +Visits is the number of page hits your site has received. + +Visitors is the number of unique users that have visited your site. + +Visits should always be greater than Visitors (though there are a few times when this won’t be true on very low usage sites due to how the exclusion code works). + +The average number of pages a visitor views on your site is Visits/Visitors. + += My overview screen is blank, what's wrong? = + +This is usually caused by a PHP fatal error, check the page source and PHP logs. + +The most common fatal error is an out of memory error. Check the Statistics->Optimization page and see how much memory is currently assigned to PHP. + +If it is a memory issue you have two choices: + - Increase PHP's memory allocation + - Delete some of your historical data. + +See http://php.net/manual/en/ini.core.php#ini.memory-limit for information about PHP's memory limit. + +To remove historical data you can use the Statistics->Optimization->Purging->Purge records older than. + += Not all referrals are showing up in the search words list, why? = + +Unfortunate we're completely dependent on the search engine sending use the search parameters as part of the referrer header, which they do not always do. + += Does WP Statistics work with caching plugins? = + +Probably not, most caching plugins don't execute the standard WordPress loop for a page it has already cached (by design of course) which means the WP Statistics code never runs for that page. + +This means WP Statistics can't record the page hit or visitor information, which defeats the purpose of WP Statistics. + +We do not recommend using a caching plugin along with WP Statistics. + += I get an error message like "PHP Fatal error: Function name must be a string in /../parse-user-agent.php" = + +Do you have eAccelerator installed? If so this is a known issue with eAccelerator and PHP's "anonymous" functions, which are used in the user agent parsing library. As no new versions of eAccelerator have been released for over 6 years (since January 2010), you should look to replace it or disable it. + += I've installed WP Statistics for the first time on a site and when I go to the statistics pages I get an error saying like "The following plugin table(s) do not exist in the database" = + +This is because something has gone wrong during the installation. + +At the end of the message will be a list of tables that are missing, you can use the provided link to re-run the installation routine. If that does not resolve the issue and the visitors table is the only table listed, you may want to check your MySQL version. Some older versions of MySQL (in the 5.0.x series) have issues with complex compound indexes, which we use on the visitors table. If this is the case, check with your hosting provider and see if they can upgrade to a newer version of MySQL. + +If you still have issues open a new thread on the support forum and we'll try and resolve it for you. + += I've changed the permissions for WP Statistics access and now I've lost access to it myself, how to I fix it? = + +If you have access to phpMyAdmin (or similar tool) you can query the wp_options table: + + SELECT * FROM wp_options WHERE option_name = 'wp_statistics'; + +Then edit the value, inside the string will be something like (note: "edit_plugins" will be whatever permission you selected): + + s:15:"read_capability";s:12:"edit_plugins";s:17:"manage_capability";s:12:"edit_plugins"; + +Replace it with: + + s:15:"read_capability";s:14:"manage_options";s:17:"manage_capability";s:14:"manage_options"; + += I see error messages in my PHP log like "WordPress database error Duplicate entry 'YYYY-MM-DD' for key 'unique_date' for ..." = + +This is caused by a race condition in the code, it's safe to ignore (it shouldn't be labeled as an error really, but that is part of WordPress that we can't control). + +It happens when a new day starts and two visitors hit the site at nearly the same time for the first visit of the day. Both try and create a new row in the table to track the days visits, but only one of them success and the other throws this warning. + += PHP 7 Support = + +WP Statistics is PHP 7 compliant, however some versions of PHP 7 have bugs that can cause issues. One know issue is with PHP 7.0.4 causing memory exhaustion errors, newer versions of PHP 7 do not have this issue. + +At this time (August 2016) WP Statistics seems to run fine with PHP 7.0.10, however you may experience issues that we haven't found yet. If you do, feel free to report it after you've confirmed it is not a problem with PHP. + += IPv6 Support = + +WP Statistics supports IPv6 as of version 11.0, however PHP must be compiled with IPv6 support enabled, otherwise you may see warnings when a visitor from an IPv6 address hits your site. + +You can check if IPv6 support is enabled in PHP by visiting the "Optimization->Resources/Information->Version Info->PHP IPv6 Enabled" section. + +If IPv6 is not enabled, you may see an warning like: + + Warning: inet_pton() [function.inet-pton]: Unrecognized address 2003:0006:1507:5d71:6114:d8bd:80c2:1090 + += When I upgrade or install WP Statistics 11.0 I get an error message like "Parse error: syntax error, unexpected T_USE, expecting T_FUNCTION in..." = + +Since WP Statistics 11.0, PHP 5.4 or above has been required. If you are using an older version of PHP it cannot understand the new syntax included in WP Statistics 11.0 and generates a parse error. + +Your hosting provider should have a newer version of PHP available, sometimes you must activate it through your hosting control panel. + +Since the last release of PHP 5.3 is over 2 years ago (Aug 2014) and is no longer supported or receiving security fixes, if your provider does not support a newer version you should probably be moving hosting providers. + +If you have done an upgrade and you can no longer access your site due to the parse error you will have to manually delete the wp-statistics directory from your wordpress/wp-content/plugins directory, either through your hosting providers control panel or FTP. + +You may also downgrade to WP Statistics 10.3 as a temporary measure, but no new fixes or features will be added to that version and you should move to a newer version of PHP as soon as possible. You can download the 10.3 here: https://downloads.wordpress.org/plugin/wp-statistics.10.3.zip + +== Screenshots == +1. View stats page. +2. View latest search words. +3. View recent visitors page. +4. View top referrer site page. +5. Optimization page. +6. Settings page. +7. Widget page. +8. View Top Browsers page. +9. View latest Hits Statistics page. +10. View latest search engine referrers Statistics page. + +== Upgrade Notice == += 11.0 = +PHP 5.4 is now required for version 11.0 and above! IPv6 is now supported if you have IPv6 support complied in to PHP, if you don't you may see warning messages if you receive visitors from IPv6 addresses (see the FAQ for more information). + +== Changelog == += 11.0.1 = +* Release Date: November 7, 2016 +* Fixed: Don't refresh a widget if it's not visible, fixes the widget being replaced by a spinner that never goes away. +* Updated: Minimum PHP version is now 5.4. +* Updated: Additional error checks for new IP code. +* Updated: jqPlot library to version development version and added DST fix. + += 11.0 = +* Release Date: October 28, 2016 +* Added: IPv6 Support. +* Added: Time attribute to searches shortcode. +* Added: Basic print styles for the overview and log pages. +* Fixed: Default provider for searches shortcode. +* Fixed: Display of top sites list when the display port is very small would . +* Fixed: CSS for date picker not loading. +* Fixed: Incorrect stats on some pages for date ranges that end in the past. +* Fixed: Date range selector on stats now properly displays a custom range after it has been set. +* Fixed: "Empty" log widget columns could not have widgets added to them. +* Updated: GeoIP library to version 1.1.1. +* Updated: phpUserAgent library to 0.5.2. +* Updated: Language on the front end widget to match the summary widget in the admin. +* Removed: Check for bc math. +* Removed: Last bits of google maps code. + += 10.3 = +* Release Date: August 19, 2016 +* Added: Support for minified css/js files and the SCRIPT_DEBUG WordPress define. +* Added: '; + + $get_bloginfo_url = get_admin_url() . "admin.php?page=" . WP_STATISTICS_OPTIMIZATION_PAGE . "&tab=database"; + + $dbupdatestodo = array(); + + if(!$WP_Statistics->get_option('search_converted')) { $dbupdatestodo[] = __('search table', 'wp_statistics'); } + + // Check to see if there are any database changes the user hasn't done yet. + $dbupdates = $WP_Statistics->get_option('pending_db_updates', false); + + // The database updates are stored in an array so loop thorugh it and output some notices. + if( is_array( $dbupdates ) ) { + $dbstrings = array( 'date_ip_agent' => __('countries database index', 'wp_statistics'), 'unique_date' => __('visit database index', 'wp_statistics') ); + + foreach( $dbupdates as $key => $update ) { + if( $update == true ) { + $dbupdatestodo[] = $dbstrings[$key]; + } + } + + if( count( $dbupdatestodo ) > 0 ) + echo '
        '.sprintf(__('Database updates are required, please go to %s and update the following: %s', 'wp_statistics'), '' . __( 'optimization page', 'wp_statistics') . '', implode(__(',', 'wp_statistics'), $dbupdatestodo)).'
        '; + + } + } + } + + // Display the admin notices if we should. + if( isset( $pagenow ) && array_key_exists( 'page', $_GET ) ) { + if( $pagenow == "admin.php" && substr( $_GET['page'], 0, 14) == 'wp-statistics/') { + add_action('admin_notices', 'wp_statistics_not_enable'); + } + } + + // Add the honey trap code in the footer. + add_action('wp_footer', 'wp_statistics_footer_action'); + + function wp_statistics_footer_action() { + GLOBAL $WP_Statistics; + + if( $WP_Statistics->get_option( 'use_honeypot' ) && $WP_Statistics->get_option( 'honeypot_postid' ) > 0 ) { + $post_url = get_permalink( $WP_Statistics->get_option( 'honeypot_postid' ) ); + echo ' '; + } + } + + // If we've been told to exclude the feeds from the statistics add a detection hook when WordPress generates the RSS feed. + if( $WP_Statistics->get_option('exclude_feeds') ) { + add_filter('the_title_rss', 'wp_statistics_check_feed_title' ); + } + + function wp_statistics_check_feed_title( $title ) { + GLOBAL $WP_Statistics; + + $WP_Statistics->feed_detected(); + + return $title; + } + + // We can wait until the very end of the page to process the statistics, that way the page loads and displays + // quickly. + add_action('shutdown', 'wp_statistics_shutdown_action'); + + function wp_statistics_shutdown_action() { + GLOBAL $WP_Statistics; + + // If something has gone horribly wrong and $WP_Statistics isn't an object, bail out. This seems to happen sometimes with WP Cron calls. + if( !is_object( $WP_Statistics ) ) { return; } + + // Create a new hit class, if we're GeoIP enabled, use GeoIPHits(). + if( class_exists( 'GeoIPHits' ) ) { + $h = new GeoIPHits(); + } else { + $h = new Hits(); + } + + // Call the online users tracking code. + if( $WP_Statistics->get_option('useronline') ) + $h->Check_online(); + + // Call the visitor tracking code. + if( $WP_Statistics->get_option('visitors') ) + $h->Visitors(); + + // Call the visit tracking code. + if( $WP_Statistics->get_option('visits') ) + $h->Visits(); + + // Call the page tracking code. + if( $WP_Statistics->get_option('pages') ) + $h->Pages(); + + // Check to see if the GeoIP database needs to be downloaded and do so if required. + if( $WP_Statistics->get_option('update_geoip') ) + wp_statistics_download_geoip(); + + // Check to see if the browscap database needs to be downloaded and do so if required. + if( $WP_Statistics->get_option('update_browscap') ) + wp_statistics_download_browscap(); + + // Check to see if the referrerspam database needs to be downloaded and do so if required. + if( $WP_Statistics->get_option('update_referrerspam') ) + wp_statistics_download_referrerspam(); + + if( $WP_Statistics->get_option('send_upgrade_email') ) { + $WP_Statistics->update_option( 'send_upgrade_email', false ); + + $blogname = get_bloginfo('name'); + $blogemail = get_bloginfo('admin_email'); + + $headers[] = "From: $blogname <$blogemail>"; + $headers[] = "MIME-Version: 1.0"; + $headers[] = "Content-type: text/html; charset=utf-8"; + + if( $WP_Statistics->get_option('email_list') == '' ) { $WP_Statistics->update_option( 'email_list', $blogemail ); } + + wp_mail( $WP_Statistics->get_option('email_list'), sprintf( __('WP Statistics %s installed on', 'wp_statistics'), WP_STATISTICS_VERSION ) . ' ' . $blogname, "Installation/upgrade complete!", $headers ); + } + + } + + // Add a settings link to the plugin list. + function wp_statistics_settings_links( $links, $file ) { + GLOBAL $WP_Statistics; + + $manage_cap = wp_statistics_validate_capability( $WP_Statistics->get_option('manage_capability', 'manage_options') ); + + if( current_user_can( $manage_cap ) ) { + array_unshift( $links, '' . __( 'Settings', 'wp_statistics' ) . '' ); + } + + return $links; + } + add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), 'wp_statistics_settings_links', 10, 2 ); + + // Add a WordPress plugin page and rating links to the meta information to the plugin list. + function wp_statistics_add_meta_links($links, $file) { + if( $file == plugin_basename(__FILE__) ) { + $plugin_url = 'http://wordpress.org/plugins/wp-statistics/'; + + $links[] = ''. __('Visit WordPress.org page', 'wp_statistics') .''; + + $rate_url = 'http://wordpress.org/support/view/plugin-reviews/wp-statistics?rate=5#postform'; + $links[] = ''. __('Rate this plugin', 'wp_statistics') .''; + } + + return $links; + } + add_filter('plugin_row_meta', 'wp_statistics_add_meta_links', 10, 2); + + // Add a custom column to post/pages for hit statistics. + function wp_statistics_add_column( $columns ) { + $columns['wp-statistics'] = __('Hits', 'wp_statistics'); + + return $columns; + } + + // Render the custom column on the post/pages lists. + function wp_statistics_render_column( $column_name, $post_id ) { + if( $column_name == 'wp-statistics' ) { + echo "" . wp_statistics_pages( 'total', "", $post_id ) . ""; + } + } + + // Call the add/render functions at the appropriate times. + function wp_statistics_load_edit_init() { + GLOBAL $WP_Statistics; + + $read_cap = wp_statistics_validate_capability( $WP_Statistics->get_option('read_capability', 'manage_options') ); + + if( current_user_can( $read_cap ) && $WP_Statistics->get_option('pages') && !$WP_Statistics->get_option('disable_column') ) { + $post_types = (array)get_post_types( array( 'show_ui' => true ), 'object' ); + + foreach( $post_types as $type ) { + add_action( 'manage_' . $type->name . '_posts_columns', 'wp_statistics_add_column', 10, 2 ); + add_action( 'manage_' . $type->name . '_posts_custom_column', 'wp_statistics_render_column', 10, 2 ); + } + } + } + add_action( 'load-edit.php', 'wp_statistics_load_edit_init' ); + + // Add the hit count to the publish widget in the post/pages editor. + function wp_statistics_post_init() { + global $post; + + $id = $post->ID; + + echo "
        " . __( 'WP Statistics - Hits', 'wp_statistics') . ": " . wp_statistics_pages( 'total', "", $id ) . "
        "; + } + if( $WP_Statistics->get_option('pages') && !$WP_Statistics->get_option('disable_column') ) { + add_action( 'post_submitbox_misc_actions', 'wp_statistics_post_init' ); + } + + // This function will validate that a capability exists, if not it will default to returning the 'manage_options' capability. + function wp_statistics_validate_capability( $capability ) { + + global $wp_roles; + + $role_list = $wp_roles->get_names(); + + if( !is_object( $wp_roles ) || !is_array( $wp_roles->roles) ) { return 'manage_options'; } + + foreach( $wp_roles->roles as $role ) { + + $cap_list = $role['capabilities']; + + foreach( $cap_list as $key => $cap ) { + if( $capability == $key ) { return $capability; } + } + } + + return 'manage_options'; + } + + // This function adds the primary menu to WordPress. + function wp_statistics_menu() { + GLOBAL $WP_Statistics; + + // Get the read/write capabilities required to view/manage the plugin as set by the user. + $read_cap = wp_statistics_validate_capability( $WP_Statistics->get_option('read_capability', 'manage_options') ); + $manage_cap = wp_statistics_validate_capability( $WP_Statistics->get_option('manage_capability', 'manage_options') ); + + // Add the top level menu. + $WP_Statistics->menu_slugs['top'] = add_menu_page(__('Statistics', 'wp_statistics'), __('Statistics', 'wp_statistics'), $read_cap, WP_STATISTICS_OVERVIEW_PAGE, 'wp_statistics_log'); + + // Add the sub items. + $WP_Statistics->menu_slugs['overview'] = add_submenu_page(WP_STATISTICS_OVERVIEW_PAGE, __('Overview', 'wp_statistics'), __('Overview', 'wp_statistics'), $read_cap, WP_STATISTICS_OVERVIEW_PAGE, 'wp_statistics_log'); + + if( $WP_Statistics->get_option('visitors') ) { $WP_Statistics->menu_slugs['browsers'] = add_submenu_page(WP_STATISTICS_OVERVIEW_PAGE, __('Browsers', 'wp_statistics'), __('Browsers', 'wp_statistics'), $read_cap, WP_STATISTICS_BROWSERS_PAGE, 'wp_statistics_log'); } + if( $WP_Statistics->get_option('geoip') && $WP_Statistics->get_option('visitors') ) { $WP_Statistics->menu_slugs['countries'] = add_submenu_page(WP_STATISTICS_OVERVIEW_PAGE, __('Countries', 'wp_statistics'), __('Countries', 'wp_statistics'), $read_cap, WP_STATISTICS_COUNTRIES_PAGE, 'wp_statistics_log'); } + if( $WP_Statistics->get_option('record_exclusions') ) { $WP_Statistics->menu_slugs['exclusions'] = add_submenu_page(WP_STATISTICS_OVERVIEW_PAGE, __('Exclusions', 'wp_statistics'), __('Exclusions', 'wp_statistics'), $read_cap, WP_STATISTICS_EXCLUSIONS_PAGE, 'wp_statistics_log'); } + if( $WP_Statistics->get_option('visits') ) { $WP_Statistics->menu_slugs['hits'] = add_submenu_page(WP_STATISTICS_OVERVIEW_PAGE, __('Hits', 'wp_statistics'), __('Hits', 'wp_statistics'), $read_cap, WP_STATISTICS_HITS_PAGE, 'wp_statistics_log'); } + if( $WP_Statistics->get_option('useronline') ) { $WP_Statistics->menu_slugs['online'] = add_submenu_page(WP_STATISTICS_OVERVIEW_PAGE, __('Online', 'wp_statistics'), __('Online', 'wp_statistics'), $read_cap, WP_STATISTICS_ONLINE_PAGE, 'wp_statistics_log'); } + if( $WP_Statistics->get_option('pages') ) { $WP_Statistics->menu_slugs['pages'] = add_submenu_page(WP_STATISTICS_OVERVIEW_PAGE, __('Pages', 'wp_statistics'), __('Pages', 'wp_statistics'), $read_cap, WP_STATISTICS_PAGES_PAGE, 'wp_statistics_log'); } + if( $WP_Statistics->get_option('visitors') ) { $WP_Statistics->menu_slugs['referrers'] = add_submenu_page(WP_STATISTICS_OVERVIEW_PAGE, __('Referrers', 'wp_statistics'), __('Referrers', 'wp_statistics'), $read_cap, WP_STATISTICS_REFERRERS_PAGE, 'wp_statistics_log'); } + if( $WP_Statistics->get_option('visitors') ) { $WP_Statistics->menu_slugs['searches'] = add_submenu_page(WP_STATISTICS_OVERVIEW_PAGE, __('Searches', 'wp_statistics'), __('Searches', 'wp_statistics'), $read_cap, WP_STATISTICS_SEARCHES_PAGE, 'wp_statistics_log'); } + if( $WP_Statistics->get_option('visitors') ) { $WP_Statistics->menu_slugs['words'] = add_submenu_page(WP_STATISTICS_OVERVIEW_PAGE, __('Search Words', 'wp_statistics'), __('Search Words', 'wp_statistics'), $read_cap, WP_STATISTICS_WORDS_PAGE, 'wp_statistics_log'); } + if( $WP_Statistics->get_option('visitors') ) { $WP_Statistics->menu_slugs['top.visotors'] = add_submenu_page(WP_STATISTICS_OVERVIEW_PAGE, __('Top Visitors Today', 'wp_statistics'), __('Top Visitors Today', 'wp_statistics'), $read_cap, WP_STATISTICS_TOP_VISITORS_PAGE, 'wp_statistics_log'); } + if( $WP_Statistics->get_option('visitors') ) { $WP_Statistics->menu_slugs['visitors'] = add_submenu_page(WP_STATISTICS_OVERVIEW_PAGE, __('Visitors', 'wp_statistics'), __('Visitors', 'wp_statistics'), $read_cap, WP_STATISTICS_VISITORS_PAGE, 'wp_statistics_log'); } + + $WP_Statistics->menu_slugs['break'] = add_submenu_page(WP_STATISTICS_OVERVIEW_PAGE, '', '', $read_cap, 'wps_break_menu', 'wp_statistics_log'); + + $WP_Statistics->menu_slugs['optimize'] = add_submenu_page(WP_STATISTICS_OVERVIEW_PAGE, __('Optimization', 'wp_statistics'), __('Optimization', 'wp_statistics'), $manage_cap, WP_STATISTICS_OPTIMIZATION_PAGE, 'wp_statistics_optimization'); + $WP_Statistics->menu_slugs['settings'] = add_submenu_page(WP_STATISTICS_OVERVIEW_PAGE, __('Settings', 'wp_statistics'), __('Settings', 'wp_statistics'), $read_cap, WP_STATISTICS_SETTINGS_PAGE, 'wp_statistics_settings'); + $WP_Statistics->menu_slugs['donate'] = add_submenu_page(WP_STATISTICS_OVERVIEW_PAGE, __('Donate', 'wp_statistics'), __('Donate', 'wp_statistics'), $read_cap, WP_STATISTICS_DONATE_PAGE, 'wp_statistics_donate'); + + // Only add the manual entry if it hasn't been deleted. + if( $WP_Statistics->get_option('delete_manual') != true ) { + $WP_Statistics->menu_slugs['manual'] = add_submenu_page(WP_STATISTICS_OVERVIEW_PAGE, __('Manual', 'wp_statistics'), __('Manual', 'wp_statistics'), $manage_cap, WP_STATISTICS_MANUAL_PAGE, 'wp_statistics_manual'); + } + + // Add action to load the meta boxes to the overview page. + add_action('load-' . $WP_Statistics->menu_slugs['overview'], 'wp_statistics_load_overview_page'); + } + add_action('admin_menu', 'wp_statistics_menu'); + + function wp_statistics_load_overview_page() { + GLOBAL $WP_Statistics; + + // Right side "wide" widgets + if( $WP_Statistics->get_option('visits') ) { + add_meta_box( 'wps_hits_postbox', __( 'Hit Statistics', 'wp_statistics' ), 'wp_statistics_generate_overview_postbox_contents', $WP_Statistics->menu_slugs['overview'], 'normal', null, array( 'widget' => 'hits' ) ); + } + + if( $WP_Statistics->get_option('visitors') ) { + add_meta_box( 'wps_top_visitors_postbox', __( 'Top Visitors', 'wp_statistics' ), 'wp_statistics_generate_overview_postbox_contents', $WP_Statistics->menu_slugs['overview'], 'normal', null, array( 'widget' => 'top.visitors' ) ); + add_meta_box( 'wps_search_postbox', __( 'Search Engine Referrals', 'wp_statistics' ), 'wp_statistics_generate_overview_postbox_contents', $WP_Statistics->menu_slugs['overview'], 'normal', null, array( 'widget' => 'search' ) ); + add_meta_box( 'wps_words_postbox', __( 'Latest Search Words', 'wp_statistics' ), 'wp_statistics_generate_overview_postbox_contents', $WP_Statistics->menu_slugs['overview'], 'normal', null, array( 'widget' => 'words' ) ); + add_meta_box( 'wps_recent_postbox', __( 'Recent Visitors', 'wp_statistics' ), 'wp_statistics_generate_overview_postbox_contents', $WP_Statistics->menu_slugs['overview'], 'normal', null, array( 'widget' => 'recent' ) ); + + if( $WP_Statistics->get_option('geoip') ) { + add_meta_box( 'wps_map_postbox', __( 'Today Visitors Map', 'wp_statistics' ), 'wp_statistics_generate_overview_postbox_contents', $WP_Statistics->menu_slugs['overview'], 'normal', null, array( 'widget' => 'map' ) ); + } + } + + if( $WP_Statistics->get_option('pages') ) { + add_meta_box( 'wps_pages_postbox', __( 'Top 10 Pages', 'wp_statistics' ), 'wp_statistics_generate_overview_postbox_contents', $WP_Statistics->menu_slugs['overview'], 'normal', null, array( 'widget' => 'pages' ) ); + } + + // Left side "thin" widgets. + if( $WP_Statistics->get_option('visitors') ) { + add_meta_box( 'wps_summary_postbox', __( 'Summary', 'wp_statistics'), 'wp_statistics_generate_overview_postbox_contents', $WP_Statistics->menu_slugs['overview'], 'side', null, array( 'widget' => 'summary' ) ); + add_meta_box( 'wps_browsers_postbox', __( 'Browsers', 'wp_statistics'), 'wp_statistics_generate_overview_postbox_contents', $WP_Statistics->menu_slugs['overview'], 'side', null, array( 'widget' => 'browsers' ) ); + add_meta_box( 'wps_referring_postbox', __( 'Top Referring Sites', 'wp_statistics'), 'wp_statistics_generate_overview_postbox_contents', $WP_Statistics->menu_slugs['overview'], 'side', null, array( 'widget' => 'referring' ) ); + + if( $WP_Statistics->get_option('geoip') ) { + add_meta_box( 'wps_countries_postbox', __( 'Top 10 Countries', 'wp_statistics'), 'wp_statistics_generate_overview_postbox_contents', $WP_Statistics->menu_slugs['overview'], 'side', null, array( 'widget' => 'countries' ) ); + } + } + } + + // This function adds the primary menu to WordPress network. + function wp_statistics_networkmenu() { + GLOBAL $WP_Statistics; + + // Get the read/write capabilities required to view/manage the plugin as set by the user. + $read_cap = wp_statistics_validate_capability( $WP_Statistics->get_option('read_capability', 'manage_options') ); + $manage_cap = wp_statistics_validate_capability( $WP_Statistics->get_option('manage_capability', 'manage_options') ); + + // Add the top level menu. + add_menu_page(__('Statistics', 'wp_statistics'), __('Statistics', 'wp_statistics'), $read_cap, __FILE__, 'wp_statistics_network_overview'); + + // Add the sub items. + add_submenu_page(__FILE__, __('Overview', 'wp_statistics'), __('Overview', 'wp_statistics'), $read_cap, __FILE__, 'wp_statistics_network_overview'); + + $count = 0; + foreach( wp_get_sites() as $blog ) { + $details = get_blog_details( $blog['blog_id'] ); + add_submenu_page(__FILE__, $details->blogname, $details->blogname, $manage_cap, 'wp_statistics_blogid_' . $blog['blog_id'], 'wp_statistics_goto_network_blog'); + + $count++; + if( $count > 15 ) { break; } + } + + // Only add the manual entry if it hasn't been deleted. + if( $WP_Statistics->get_option('delete_manual') != true ) { + add_submenu_page(__FILE__, '', '', $read_cap, 'wps_break_menu', 'wp_statistics_log_overview'); + add_submenu_page(__FILE__, __('Manual', 'wp_statistics'), __('Manual', 'wp_statistics'), $manage_cap, WP_STATISTICS_MANUAL_PAGE, 'wp_statistics_manual'); + } + } + + if( is_multisite() ) { add_action('network_admin_menu', 'wp_statistics_networkmenu'); } + + function wp_statistics_network_overview() { + +?> +
        +
        + + + + + + + + + + + WP_STATISTICS_OVERVIEW_PAGE, + __('Browsers', 'wp_statistics') => WP_STATISTICS_BROWSERS_PAGE, + __('Countries', 'wp_statistics') => WP_STATISTICS_COUNTRIES_PAGE, + __('Exclusions', 'wp_statistics') => WP_STATISTICS_EXCLUSIONS_PAGE, + __('Hits', 'wp_statistics') => WP_STATISTICS_HITS_PAGE, + __('Online', 'wp_statistics') => WP_STATISTICS_ONLINE_PAGE, + __('Pages', 'wp_statistics') => WP_STATISTICS_PAGES_PAGE, + __('Referrers', 'wp_statistics') => WP_STATISTICS_REFERRERS_PAGE, + __('Searches', 'wp_statistics') => WP_STATISTICS_SEARCHES_PAGE, + __('Search Words', 'wp_statistics') => WP_STATISTICS_WORDS_PAGE, + __('Top Visitors Today', 'wp_statistics') => WP_STATISTICS_TOP_VISITORS_PAGE, + __('Visitors', 'wp_statistics') => WP_STATISTICS_VISITORS_PAGE, + __('Optimization', 'wp_statistics') => WP_STATISTICS_OPTIMIZATION_PAGE, + __('Settings', 'wp_statistics') => WP_STATISTICS_SETTINGS_PAGE + ); + + foreach( wp_get_sites() as $blog ) { + $details = get_blog_details( $blog['blog_id'] ); + $url = get_admin_url($blog['blog_id'], '/') . "admin.php?page=";; + $alternate = ""; + if( $i % 2 == 0 ) { $alternate = ' class="alternate"'; } +?> + + > + + + + + +
        + blogname; ?> + + $value ) { + echo '' . $key . ''; + $j ++; + if( $j < $options_len ) { echo ' - '; } + } +?> +
        +
        +window.location.href = '$url';"; + } + + function wp_statistics_donate() { + $url = get_admin_url() . "/admin.php?page=" . WP_STATISTICS_SETTINGS_PAGE . "&tab=about"; + + echo ""; + } + + // This function adds the menu icon to the top level menu. WordPress 3.8 changed the style of the menu a bit and so a different css file is loaded. + function wp_statistics_menu_icon() { + + global $wp_version; + + if( version_compare( $wp_version, '3.8-RC', '>=' ) || version_compare( $wp_version, '3.8', '>=' ) ) { + wp_enqueue_style('wpstatistics-admin-css', plugin_dir_url(__FILE__) . 'assets/css/admin' . WP_STATISTICS_MIN_EXT . '.css', true, '1.0'); + } else { + wp_enqueue_style('wpstatistics-admin-css', plugin_dir_url(__FILE__) . 'assets/css/admin-old' . WP_STATISTICS_MIN_EXT . '.css', true, '1.0'); + } + } + add_action('admin_head', 'wp_statistics_menu_icon'); + + // This function adds the admin bar menu if the user has selected it. + function wp_statistics_menubar() { + GLOBAL $wp_admin_bar, $wp_version, $WP_Statistics; + + // Find out if the user can read or manage statistics. + $read = current_user_can( wp_statistics_validate_capability( $WP_Statistics->get_option('read_capability', 'manage_options') ) ); + $manage = current_user_can( wp_statistics_validate_capability( $WP_Statistics->get_option('manage_capability', 'manage_options') ) ); + + if( is_admin_bar_showing() && ( $read || $manage ) ) { + + $AdminURL = get_admin_url(); + + if( version_compare( $wp_version, '3.8-RC', '>=' ) || version_compare( $wp_version, '3.8', '>=' ) ) { + $wp_admin_bar->add_menu( array( + 'id' => 'wp-statistic-menu', + 'title' => '', + 'href' => $AdminURL . 'admin.php?page=' . WP_STATISTICS_OVERVIEW_PAGE + )); + } else { + $wp_admin_bar->add_menu( array( + 'id' => 'wp-statistic-menu', + 'title' => '', + 'href' => $AdminURL . 'admin.php?page=' . WP_STATISTICS_OVERVIEW_PAGE + )); + } + + $wp_admin_bar->add_menu( array( + 'id' => 'wp-statistics-menu-useronline', + 'parent' => 'wp-statistic-menu', + 'title' => __('User Online', 'wp_statistics') . ": " . wp_statistics_useronline(), + 'href' => $AdminURL . 'admin.php?page=' . WP_STATISTICS_ONLINE_PAGE + )); + + $wp_admin_bar->add_menu( array( + 'id' => 'wp-statistics-menu-todayvisitor', + 'parent' => 'wp-statistic-menu', + 'title' => __('Today visitor', 'wp_statistics') . ": " . wp_statistics_visitor('today') + )); + + $wp_admin_bar->add_menu( array( + 'id' => 'wp-statistics-menu-todayvisit', + 'parent' => 'wp-statistic-menu', + 'title' => __('Today visit', 'wp_statistics') . ": " . wp_statistics_visit('today') + )); + + $wp_admin_bar->add_menu( array( + 'id' => 'wp-statistics-menu-yesterdayvisitor', + 'parent' => 'wp-statistic-menu', + 'title' => __('Yesterday visitor', 'wp_statistics') . ": " . wp_statistics_visitor('yesterday') + )); + + $wp_admin_bar->add_menu( array( + 'id' => 'wp-statistics-menu-yesterdayvisit', + 'parent' => 'wp-statistic-menu', + 'title' => __('Yesterday visit', 'wp_statistics') . ": " . wp_statistics_visit('yesterday') + )); + + $wp_admin_bar->add_menu( array( + 'id' => 'wp-statistics-menu-viewstats', + 'parent' => 'wp-statistic-menu', + 'title' => __('View Stats', 'wp_statistics'), + 'href' => $AdminURL . 'admin.php?page=' . WP_STATISTICS_OVERVIEW_PAGE + )); + } + } + + if( $WP_Statistics->get_option('menu_bar') ) { + add_action('admin_bar_menu', 'wp_statistics_menubar', 20); + } + + // This function creates the HTML for the manual page. The manual is a seperate HTML file that is contained inside of an iframe. + // There is a bit of JavaScript included to resize the iframe so that the scroll bars can be hidden and it looks like everything + // is in the same page. + function wp_statistics_manual() { + if( file_exists(plugin_dir_path(__FILE__) . WP_STATISTICS_MANUAL . 'html') ) { + echo '' . "\n"; + + echo '
        '; + echo '' . __('Download ODF file', 'wp_statistics') . ' '; + echo '' . __('Download HTML file', 'wp_statistics') . '
        '; + + echo ''; + } else { + echo '


        ' . __("Manual file not found.", 'wp_statistics') . '

        '; + } + } + + // This is the main statistics display function. + function wp_statistics_log( $log_type = "" ) { + GLOBAL $wpdb, $WP_Statistics, $plugin_page; + + switch( $plugin_page ) { + case WP_STATISTICS_BROWSERS_PAGE: + $log_type = 'all-browsers'; + + break; + case WP_STATISTICS_COUNTRIES_PAGE: + $log_type = 'top-countries'; + + break; + case WP_STATISTICS_EXCLUSIONS_PAGE: + $log_type = 'exclusions'; + + break; + case WP_STATISTICS_HITS_PAGE: + $log_type = 'hit-statistics'; + + break; + case WP_STATISTICS_ONLINE_PAGE: + $log_type = 'online'; + + break; + case WP_STATISTICS_PAGES_PAGE: + $log_type = 'top-pages'; + + break; + case WP_STATISTICS_REFERRERS_PAGE: + $log_type = 'top-referring-site'; + + break; + case WP_STATISTICS_SEARCHES_PAGE: + $log_type = 'search-statistics'; + + break; + case WP_STATISTICS_WORDS_PAGE: + $log_type = 'last-all-search'; + + break; + case WP_STATISTICS_TOP_VISITORS_PAGE: + $log_type = 'top-visitors'; + + break; + case WP_STATISTICS_VISITORS_PAGE: + $log_type = 'last-all-visitor'; + + break; + default: + $log_type = ""; + } + + // When we create $WP_Statistics the user has not been authenticated yet so we cannot load the user preferences + // during the creation of the class. Instead load them now that the user exists. + $WP_Statistics->load_user_options(); + + // We allow for a get style variable to be passed to define which function to use. + if( $log_type == "" && array_key_exists('type', $_GET)) + $log_type = $_GET['type']; + + // Verify the user has the rights to see the statistics. + if (!current_user_can(wp_statistics_validate_capability($WP_Statistics->get_option('read_capability', 'manage_option')))) { + wp_die(__('You do not have sufficient permissions to access this page.')); + } + + // We want to make sure the tables actually exist before we blindly start access them. + $dbname = DB_NAME; + $result = $wpdb->query("SHOW TABLES WHERE `Tables_in_{$dbname}` = '{$wpdb->prefix}statistics_visitor' OR `Tables_in_{$dbname}` = '{$wpdb->prefix}statistics_visit' OR `Tables_in_{$dbname}` = '{$wpdb->prefix}statistics_exclusions' OR `Tables_in_{$dbname}` = '{$wpdb->prefix}statistics_historical' OR `Tables_in_{$dbname}` = '{$wpdb->prefix}statistics_pages' OR `Tables_in_{$dbname}` = '{$wpdb->prefix}statistics_useronline' OR `Tables_in_{$dbname}` = '{$wpdb->prefix}statistics_search'" ); + + if( $result != 7 ) { + $get_bloginfo_url = get_admin_url() . "admin.php?page=" . WP_STATISTICS_OPTIMIZATION_PAGE . "&tab=database"; + + $missing_tables = array(); + + $result = $wpdb->query("SHOW TABLES WHERE `Tables_in_{$dbname}` = '{$wpdb->prefix}statistics_visitor'" ); + if( $result != 1 ) { $missing_tables[] = $wpdb->prefix . 'statistics_visitor'; } + $result = $wpdb->query("SHOW TABLES WHERE `Tables_in_{$dbname}` = '{$wpdb->prefix}statistics_visit'" ); + if( $result != 1 ) { $missing_tables[] = $wpdb->prefix . 'statistics_visit'; } + $result = $wpdb->query("SHOW TABLES WHERE `Tables_in_{$dbname}` = '{$wpdb->prefix}statistics_exclusions'" ); + if( $result != 1 ) { $missing_tables[] = $wpdb->prefix . 'statistics_exclusions'; } + $result = $wpdb->query("SHOW TABLES WHERE `Tables_in_{$dbname}` = '{$wpdb->prefix}statistics_historical'" ); + if( $result != 1 ) { $missing_tables[] = $wpdb->prefix . 'statistics_historical'; } + $result = $wpdb->query("SHOW TABLES WHERE `Tables_in_{$dbname}` = '{$wpdb->prefix}statistics_useronline'" ); + if( $result != 1 ) { $missing_tables[] = $wpdb->prefix . 'statistics_useronline'; } + $result = $wpdb->query("SHOW TABLES WHERE `Tables_in_{$dbname}` = '{$wpdb->prefix}statistics_pages'" ); + if( $result != 1 ) { $missing_tables[] = $wpdb->prefix . 'statistics_pages'; } + $result = $wpdb->query("SHOW TABLES WHERE `Tables_in_{$dbname}` = '{$wpdb->prefix}statistics_search'" ); + if( $result != 1 ) { $missing_tables[] = $wpdb->prefix . 'statistics_search'; } + + wp_die('

        ' . sprintf(__('The following plugin table(s) do not exist in the database, please re-run the %s install routine %s: ', 'wp_statistics'),'','') . implode(', ', $missing_tables) . '

        '); + } + + // Load the postbox script that provides the widget style boxes. + wp_enqueue_script('common'); + wp_enqueue_script('wp-lists'); + wp_enqueue_script('postbox'); + + // Load the css we use for the statistics pages. + wp_enqueue_style('log-css', plugin_dir_url(__FILE__) . 'assets/css/log' . WP_STATISTICS_MIN_EXT . '.css', true, '1.1'); + wp_enqueue_style('pagination-css', plugin_dir_url(__FILE__) . 'assets/css/pagination' . WP_STATISTICS_MIN_EXT . '.css', true, '1.0'); + wp_enqueue_style('jqplot-css', plugin_dir_url(__FILE__) . 'assets/jqplot/jquery.jqplot' . WP_STATISTICS_MIN_EXT . '.css', true, '1.0.9'); + + // Don't forget the right to left support. + if( is_rtl() ) + wp_enqueue_style('rtl-css', plugin_dir_url(__FILE__) . 'assets/css/rtl' . WP_STATISTICS_MIN_EXT . '.css', true, '1.1'); + + // Load the charts code. + wp_enqueue_script('jqplot', plugin_dir_url(__FILE__) . 'assets/jqplot/jquery.jqplot' . WP_STATISTICS_MIN_EXT . '.js', true, '1.0.9' ); + wp_enqueue_script('jqplot-daterenderer', plugin_dir_url(__FILE__) . 'assets/jqplot/plugins/jqplot.dateAxisRenderer' . WP_STATISTICS_MIN_EXT . '.js', true, '1.0.9'); + wp_enqueue_script('jqplot-tickrenderer', plugin_dir_url(__FILE__) . 'assets/jqplot/plugins/jqplot.canvasAxisTickRenderer' . WP_STATISTICS_MIN_EXT . '.js', true, '1.0.9'); + wp_enqueue_script('jqplot-axisrenderer', plugin_dir_url(__FILE__) . 'assets/jqplot/plugins/jqplot.canvasAxisLabelRenderer' . WP_STATISTICS_MIN_EXT . '.js', true, '1.0.9'); + wp_enqueue_script('jqplot-textrenderer', plugin_dir_url(__FILE__) . 'assets/jqplot/plugins/jqplot.canvasTextRenderer' . WP_STATISTICS_MIN_EXT . '.js', true, '1.0.9'); + wp_enqueue_script('jqplot-tooltip', plugin_dir_url(__FILE__) . 'assets/jqplot/plugins/jqplot.highlighter' . WP_STATISTICS_MIN_EXT . '.js', true, '1.0.9'); + wp_enqueue_script('jqplot-pierenderer', plugin_dir_url(__FILE__) . 'assets/jqplot/plugins/jqplot.pieRenderer' . WP_STATISTICS_MIN_EXT . '.js', true, '1.0.9'); + wp_enqueue_script('jqplot-enhancedlengend', plugin_dir_url(__FILE__) . 'assets/jqplot/plugins/jqplot.enhancedLegendRenderer' . WP_STATISTICS_MIN_EXT . '.js', true, '1.0.9'); + + // Load the pagination code. + include_once dirname( __FILE__ ) . '/includes/classes/pagination.class.php'; + + // The different pages have different files to load. + if( $log_type == 'last-all-search' ) { + + include_once dirname( __FILE__ ) . '/includes/log/last-search.php'; + + } else if( $log_type == 'last-all-visitor' ) { + + include_once dirname( __FILE__ ) . '/includes/log/last-visitor.php'; + + } else if( $log_type == 'top-referring-site' ) { + + include_once dirname( __FILE__ ) . '/includes/log/top-referring.php'; + + } else if( $log_type == 'all-browsers' ) { + + include_once dirname( __FILE__ ) . '/includes/log/all-browsers.php'; + + } else if( $log_type == 'top-countries' ) { + + include_once dirname( __FILE__ ) . '/includes/log/top-countries.php'; + + } else if( $log_type == 'hit-statistics' ) { + + include_once dirname( __FILE__ ) . '/includes/log/hit-statistics.php'; + + } else if( $log_type == 'search-statistics' ) { + + include_once dirname( __FILE__ ) . '/includes/log/search-statistics.php'; + + } else if( $log_type == 'exclusions' ) { + + include_once dirname( __FILE__ ) . '/includes/log/exclusions.php'; + + } else if( $log_type == 'online' ) { + + include_once dirname( __FILE__ ) . '/includes/log/online.php'; + + } else if( $log_type == 'top-visitors' ) { + + include_once dirname( __FILE__ ) . '/includes/log/top-visitors.php'; + + } else if( $log_type == 'top-pages' ) { + + // If we've been given a page id or uri to get statistics for, load the page stats, otherwise load the page stats overview page. + if( array_key_exists( 'page-id', $_GET ) || array_key_exists( 'page-uri', $_GET ) ) { + include_once dirname( __FILE__ ) . '/includes/log/page-statistics.php'; + } else { + include_once dirname( __FILE__ ) . '/includes/log/top-pages.php'; + } + + } else { + + wp_enqueue_style('jqvmap-css', plugin_dir_url(__FILE__) . 'assets/jqvmap/jqvmap' . WP_STATISTICS_MIN_EXT . '.css', true, '1.5.1'); + wp_enqueue_script('jquery-vmap', plugin_dir_url(__FILE__) . 'assets/jqvmap/jquery.vmap' . WP_STATISTICS_MIN_EXT . '.js', true, '1.5.1'); + wp_enqueue_script('jquery-vmap-world', plugin_dir_url(__FILE__) . 'assets/jqvmap/maps/jquery.vmap.world' . WP_STATISTICS_MIN_EXT . '.js', true, '1.5.1'); + + // Load our custom widgets handling javascript. + wp_enqueue_script('wp_statistics_log', plugin_dir_url(__FILE__) . 'assets/js/log' . WP_STATISTICS_MIN_EXT . '.js'); + + include_once dirname( __FILE__ ) . '/includes/log/log.php'; + } + } + + // This function loads the optimization page code. + function wp_statistics_optimization() { + + GLOBAL $wpdb, $WP_Statistics; + + // Check the current user has the rights to be here. + if (!current_user_can(wp_statistics_validate_capability($WP_Statistics->get_option('manage_capability', 'manage_options')))) { + wp_die(__('You do not have sufficient permissions to access this page.')); + } + + // When we create $WP_Statistics the user has not been authenticated yet so we cannot load the user preferences + // during the creation of the class. Instead load them now that the user exists. + $WP_Statistics->load_user_options(); + + // Load the jQuery UI code to create the tabs. + wp_register_style("jquery-ui-css", plugin_dir_url(__FILE__) . 'assets/css/jquery-ui-1.10.4.custom' . WP_STATISTICS_MIN_EXT . '.css'); + wp_enqueue_style("jquery-ui-css"); + + wp_enqueue_script('jquery-ui-core'); + wp_enqueue_script('jquery-ui-tabs'); + + if( is_rtl() ) { + wp_enqueue_style('rtl-css', plugin_dir_url(__FILE__) . 'assets/css/rtl' . WP_STATISTICS_MIN_EXT . '.css', true, '1.1'); + } + + // Get the row count for each of the tables, we'll use this later on in the wps_optimization.php file. + $result['useronline'] = $wpdb->get_var("SELECT COUNT(ID) FROM `{$wpdb->prefix}statistics_useronline`"); + $result['visit'] = $wpdb->get_var("SELECT COUNT(ID) FROM `{$wpdb->prefix}statistics_visit`"); + $result['visitor'] = $wpdb->get_var("SELECT COUNT(ID) FROM `{$wpdb->prefix}statistics_visitor`"); + $result['exclusions'] = $wpdb->get_var("SELECT COUNT(ID) FROM `{$wpdb->prefix}statistics_exclusions`"); + $result['pages'] = $wpdb->get_var("SELECT COUNT(uri) FROM `{$wpdb->prefix}statistics_pages`"); + $result['historical'] = $wpdb->get_Var("SELECT COUNT(ID) FROM `{$wpdb->prefix}statistics_historical`"); + $result['search'] = $wpdb->get_Var("SELECT COUNT(ID) FROM `{$wpdb->prefix}statistics_search`"); + + include_once dirname( __FILE__ ) . "/includes/optimization/wps-optimization.php"; + } + + // This function displays the HTML for the settings page. + function wp_statistics_settings() { + GLOBAL $WP_Statistics; + + // Check the current user has the rights to be here. + if (!current_user_can(wp_statistics_validate_capability($WP_Statistics->get_option('read_capability', 'manage_options')))) { + wp_die(__('You do not have sufficient permissions to access this page.')); + } + + // When we create $WP_Statistics the user has not been authenticated yet so we cannot load the user preferences + // during the creation of the class. Instead load them now that the user exists. + $WP_Statistics->load_user_options(); + + // Load our CSS to be used. + wp_enqueue_style('log-css', plugin_dir_url(__FILE__) . 'assets/css/style' . WP_STATISTICS_MIN_EXT . '.css', true, '1.0'); + + // Load the jQuery UI code to create the tabs. + wp_register_style("jquery-ui-css", plugin_dir_url(__FILE__) . 'assets/css/jquery-ui-1.10.4.custom' . WP_STATISTICS_MIN_EXT . '.css'); + wp_enqueue_style("jquery-ui-css"); + + wp_enqueue_script('jquery-ui-core'); + wp_enqueue_script('jquery-ui-tabs'); + + if( is_rtl() ) { + wp_enqueue_style('rtl-css', plugin_dir_url(__FILE__) . 'assets/css/rtl' . WP_STATISTICS_MIN_EXT . '.css', true, '1.1'); + } + + // We could let the download happen at the end of the page, but this way we get to give some + // feedback to the users about the result. + if( $WP_Statistics->get_option('update_geoip') == true ) { + echo wp_statistics_download_geoip(); + } + + include_once dirname( __FILE__ ) . "/includes/settings/wps-settings.php"; + } \ No newline at end of file diff --git a/plugins/wp-statistics/wps-install.php b/plugins/wp-statistics/wps-install.php new file mode 100644 index 0000000..7a49d4f --- /dev/null +++ b/plugins/wp-statistics/wps-install.php @@ -0,0 +1,360 @@ +prefix; + + // The follow variables are used to define the table structure for new and upgrade installations. + $create_useronline_table = ("CREATE TABLE {$wp_prefix}statistics_useronline ( + ID int(11) NOT NULL AUTO_INCREMENT, + ip varchar(60) NOT NULL, + created int(11), + timestamp int(10) NOT NULL, + date datetime NOT NULL, + referred text CHARACTER SET utf8 NOT NULL, + agent varchar(255) NOT NULL, + platform varchar(255), + version varchar(255), + location varchar(10), + PRIMARY KEY (ID) + ) CHARSET=utf8"); + + $create_visit_table = ("CREATE TABLE {$wp_prefix}statistics_visit ( + ID int(11) NOT NULL AUTO_INCREMENT, + last_visit datetime NOT NULL, + last_counter date NOT NULL, + visit int(10) NOT NULL, + PRIMARY KEY (ID), + UNIQUE KEY unique_date (last_counter) + ) CHARSET=utf8"); + + $create_visitor_table = ("CREATE TABLE {$wp_prefix}statistics_visitor ( + ID int(11) NOT NULL AUTO_INCREMENT, + last_counter date NOT NULL, + referred text NOT NULL, + agent varchar(255) NOT NULL, + platform varchar(255), + version varchar(255), + UAString varchar(255), + ip varchar(60) NOT NULL, + location varchar(10), + hits int(11), + honeypot int(11), + PRIMARY KEY (ID), + UNIQUE KEY date_ip_agent (last_counter,ip,agent(75),platform(75),version(75)), + KEY agent (agent), + KEY platform (platform), + KEY version (version), + KEY location (location) + ) CHARSET=utf8"); + + $create_visitor_table_old = ("CREATE TABLE {$wp_prefix}statistics_visitor ( + ID int(11) NOT NULL AUTO_INCREMENT, + last_counter date NOT NULL, + referred text NOT NULL, + agent varchar(255) NOT NULL, + platform varchar(255), + version varchar(255), + UAString varchar(255), + ip varchar(60) NOT NULL, + location varchar(10), + hits int(11), + honeypot int(11), + PRIMARY KEY (ID), + UNIQUE KEY date_ip_agent (last_counter,ip,agent (75),platform (75),version (75)), + KEY agent (agent), + KEY platform (platform), + KEY version (version), + KEY location (location) + ) CHARSET=utf8"); + + $create_exclusion_table = ("CREATE TABLE {$wp_prefix}statistics_exclusions ( + ID int(11) NOT NULL AUTO_INCREMENT, + date date NOT NULL, + reason varchar(255) DEFAULT NULL, + count bigint(20) NOT NULL, + PRIMARY KEY (ID), + KEY date (date), + KEY reason (reason) + ) CHARSET=utf8"); + + $create_pages_table = ("CREATE TABLE {$wp_prefix}statistics_pages ( + uri varchar(255) NOT NULL, + date date NOT NULL, + count int(11) NOT NULL, + id int(11) NOT NULL, + UNIQUE KEY date_2 (date,uri), + KEY url (uri), + KEY date (date), + KEY id (id) + ) CHARSET=utf8"); + + $create_historical_table = ("CREATE TABLE {$wp_prefix}statistics_historical ( + ID bigint(20) NOT NULL AUTO_INCREMENT, + category varchar(25) NOT NULL, + page_id bigint(20) NOT NULL, + uri varchar(255) NOT NULL, + value bigint(20) NOT NULL, + PRIMARY KEY (ID), + KEY category (category), + UNIQUE KEY page_id (page_id), + UNIQUE KEY uri (uri) + ) CHARSET=utf8"); + + $create_search_table = ("CREATE TABLE {$wp_prefix}statistics_search ( + ID bigint(20) NOT NULL AUTO_INCREMENT, + last_counter date NOT NULL, + engine varchar(64) NOT NULL, + host varchar(255), + words varchar(255), + visitor bigint(20), + PRIMARY KEY (ID), + KEY last_counter (last_counter), + KEY engine (engine), + KEY host (host) + ) CHARSET=utf8"); + + // Before we update the historical table, check to see if it exists with the old keys + $result = $wpdb->query( "SHOW COLUMNS FROM {$wp_prefix}statistics_historical LIKE 'key'" ); + + if( $result > 0 ) { + $wpdb->query( "ALTER TABLE `{$wp_prefix}statistics_historical` CHANGE `id` `page_id` bigint(20)" ); + $wpdb->query( "ALTER TABLE `{$wp_prefix}statistics_historical` CHANGE `key` `ID` bigint(20)" ); + $wpdb->query( "ALTER TABLE `{$wp_prefix}statistics_historical` CHANGE `type` `category` varchar(25)" ); + } + + // This includes the dbDelta function from WordPress. + require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); + + // Create/update the plugin tables. + dbDelta($create_useronline_table); + dbDelta($create_visit_table); + dbDelta($create_visitor_table); + dbDelta($create_exclusion_table); + dbDelta($create_pages_table); + dbDelta($create_historical_table); + dbDelta($create_search_table); + + // Some old versions (in the 5.0.x line) of MySQL have issue with the compound index on the visitor table + // so let's make sure it was created, if not, use the older format to create the table manually instead of + // using the dbDelta() call. + $dbname = DB_NAME; + $result = $wpdb->query("SHOW TABLES WHERE `Tables_in_{$dbname}` = '{$wpdb->prefix}statistics_visitor'" ); + + if( $result != 1 ) { + $wpdb->query( $create_visitor_table_old ); + } + + // Check to see if the date_ip index still exists, if so get rid of it. + $result = $wpdb->query("SHOW INDEX FROM {$wp_prefix}statistics_visitor WHERE Key_name = 'date_ip'"); + + // Note, the result will be the number of fields contained in the index. + if( $result > 1 ) { + $wpdb->query( "DROP INDEX `date_ip` ON {$wp_prefix}statistics_visitor" ); + } + + // One final database change, drop the 'AString' column from visitors if it exists as it's a typo from an old version. + $result = $wpdb->query( "SHOW COLUMNS FROM {$wp_prefix}statistics_visitor LIKE 'AString'" ); + + if( $result > 0 ) { + $wpdb->query( "ALTER TABLE `{$wp_prefix}statistics_visitor` DROP `AString`" ); + } + + // Store the new version information. + update_option('wp_statistics_plugin_version', WP_STATISTICS_VERSION); + update_option('wp_statistics_db_version', WP_STATISTICS_VERSION); + + // Now check to see what database updates may be required and record them for a user notice later. + $dbupdates = array( 'date_ip_agent' => false, 'unique_date' => false ); + + // Check the number of index's on the visitors table, if it's only 5 we need to check for duplicate entries and remove them + $result = $wpdb->query("SHOW INDEX FROM {$wp_prefix}statistics_visitor WHERE Key_name = 'date_ip_agent'"); + + // Note, the result will be the number of fields contained in the index, so in our case 5. + if( $result != 5 ) { + $dbupdates['date_ip_agent'] = true; + } + + // Check the number of index's on the visits table, if it's only 5 we need to check for duplicate entries and remove them + $result = $wpdb->query("SHOW INDEX FROM {$wp_prefix}statistics_visit WHERE Key_name = 'unique_date'"); + + // Note, the result will be the number of fields contained in the index, so in our case 1. + if( $result != 1 ) { + $dbupdates['unique_date'] = true; + } + + $WP_Statistics->update_option( 'pending_db_updates', $dbupdates ); + + // Get the robots list, we'll use this for both upgrades and new installs. + include_once('robotslist.php'); + + if( $WPS_Installed == false ) { + + // If this is a first time install, we just need to setup the primary values in the tables. + + $WP_Statistics->Primary_Values(); + + // By default, on new installs, use the new search table. + $WP_Statistics->update_option('search_converted', 1); + + } else { + + // If this is an upgrade, we need to check to see if we need to convert anything from old to new formats. + + // Check to see if the "new" settings code is in place or not, if not, upgrade the old settings to the new system. + if( get_option('wp_statistics') === FALSE ) { + $core_options = array('wps_disable_map', 'wps_map_location', 'wps_google_coordinates', 'wps_schedule_dbmaint', 'wps_schedule_dbmaint_days', 'wps_geoip', 'wps_update_geoip', 'wps_schedule_geoip', 'wps_last_geoip_dl', 'wps_auto_pop', 'wps_useronline', 'wps_check_online', 'wps_visits', 'wps_visitors', 'wps_store_ua', 'wps_coefficient', 'wps_pages', 'wps_track_all_pages', 'wps_disable_column', 'wps_menu_bar', 'wps_hide_notices', 'wps_chart_totals', 'wps_stats_report', 'wps_time_report', 'wps_send_report', 'wps_content_report', 'wps_read_capability', 'wps_manage_capability', 'wps_record_exclusions', 'wps_robotlist', 'wps_exclude_ip', 'wps_exclude_loginpage', 'wps_exclude_adminpage'); + $var_options = array('wps_disable_se_%', 'wps_exclude_%'); + $widget_options = array( 'name_widget', 'useronline_widget', 'tvisit_widget', 'tvisitor_widget', 'yvisit_widget', 'yvisitor_widget', 'wvisit_widget', 'mvisit_widget', 'ysvisit_widget', 'ttvisit_widget', 'ttvisitor_widget', 'tpviews_widget', 'ser_widget', 'select_se', 'tp_widget', 'tpg_widget', 'tc_widget', 'ts_widget', 'tu_widget', 'ap_widget', 'ac_widget', 'au_widget', 'lpd_widget', 'select_lps'); + + // Handle the core options, we're going to strip off the 'wps_' header as we store them in the new settings array. + foreach( $core_options as $option ) { + $new_name = substr( $option, 4 ); + + $WP_Statistics->store_option($new_name, get_option( $option )); + + delete_option($option); + } + + $wiget = array(); + + // Handle the widget options, we're goin to store them in a subarray. + foreach( $widget_options as $option ) { + $widget[$option] = get_option($option); + + delete_option($option); + } + + $WP_Statistics->store_option('widget', $widget); + + foreach( $var_options as $option ) { + // Handle the special variables options. + $result = $wpdb->get_results("SELECT * FROM {$wp_prefix}options WHERE option_name LIKE '{$option}'"); + + foreach( $result as $opt ) { + $new_name = substr( $opt->option_name, 4 ); + + $WP_Statistics->store_option($new_name, $opt->option_value); + + delete_option($opt->option_name); + } + } + + $WP_Statistics->save_options(); + } + + // If the robot list is empty, fill in the defaults. + $wps_temp_robotslist = $WP_Statistics->get_option('robotlist'); + + if(trim($wps_temp_robotslist) == "" || $WP_Statistics->get_option('force_robot_update') == TRUE) { + $WP_Statistics->update_option('robotlist', $wps_robotslist); + } + + // WP Statistics V4.2 and below automatically exclude the administrator for statistics collection + // newer versions allow the option to be set for any role in WordPress, however we should mimic + // 4.2 behaviour when we upgrade, so see if the option exists in the database and if not, set it. + // This will not work correctly on a WordPress install that has removed the administrator role. + // However that seems VERY unlikely. + $exclude_admins = $WP_Statistics->get_option('exclude_administrator', '2'); + if( $exclude_admins == '2' ) { $WP_Statistics->update_option('exclude_administrator', '1'); } + + // WordPress 4.3 broke the diplay of the sidebar widget because it no longer accepted a null value + // to be returned from the widget update function, let's look to see if we need to update any + // occurances in the options table. + $widget_options = get_option( 'widget_wpstatistics_widget' ); + if( is_array( $widget_options ) ) { + foreach( $widget_options as $key => $value ) { + // We want to update all null array keys that are integers. + if( $value === null && is_int( $key ) ) { $widget_options[$key] = array(); } + } + + // Store the widget options back to the database. + update_option( 'widget_wpstatistics_widget', $widget_options ); + } + } + + // If this is a first time install or an upgrade and we've added options, set some intelligent defaults. + if( $WP_Statistics->get_option('geoip') === FALSE ) { $WP_Statistics->store_option('geoip',FALSE); } + if( $WP_Statistics->get_option('browscap') === FALSE ) { $WP_Statistics->store_option('browscap',FALSE); } + if( $WP_Statistics->get_option('useronline') === FALSE ) { $WP_Statistics->store_option('useronline',TRUE); } + if( $WP_Statistics->get_option('visits') === FALSE ) { $WP_Statistics->store_option('visits',TRUE); } + if( $WP_Statistics->get_option('visitors') === FALSE ) { $WP_Statistics->store_option('visitors',TRUE); } + if( $WP_Statistics->get_option('pages') === FALSE ) { $WP_Statistics->store_option('pages',TRUE); } + if( $WP_Statistics->get_option('check_online') === FALSE ) { $WP_Statistics->store_option('check_online','30'); } + if( $WP_Statistics->get_option('menu_bar') === FALSE ) { $WP_Statistics->store_option('menu_bar',FALSE); } + if( $WP_Statistics->get_option('coefficient') === FALSE ) { $WP_Statistics->store_option('coefficient','1'); } + if( $WP_Statistics->get_option('stats_report') === FALSE ) { $WP_Statistics->store_option('stats_report',FALSE); } + if( $WP_Statistics->get_option('time_report') === FALSE ) { $WP_Statistics->store_option('time_report','daily'); } + if( $WP_Statistics->get_option('send_report') === FALSE ) { $WP_Statistics->store_option('send_report','mail'); } + if( $WP_Statistics->get_option('content_report') === FALSE ) { $WP_Statistics->store_option('content_report',''); } + if( $WP_Statistics->get_option('update_geoip') === FALSE ) { $WP_Statistics->store_option('update_geoip',TRUE); } + if( $WP_Statistics->get_option('store_ua') === FALSE ) { $WP_Statistics->store_option('store_ua',FALSE); } + if( $WP_Statistics->get_option('robotlist') === FALSE ) { $WP_Statistics->store_option('robotlist',$wps_robotslist); } + if( $WP_Statistics->get_option('exclude_administrator') === FALSE ) { $WP_Statistics->store_option('exclude_administrator',TRUE); } + if( $WP_Statistics->get_option('disable_se_clearch') === FALSE ) { $WP_Statistics->store_option('disable_se_clearch',TRUE); } + if( $WP_Statistics->get_option('disable_se_ask') === FALSE ) { $WP_Statistics->store_option('disable_se_ask',TRUE); } + if( $WP_Statistics->get_option('map_type') === FALSE ) { $WP_Statistics->store_option('map_type','jqvmap'); } + + if( $WPS_Installed == false ) { + // We now need to set the robot list to update during the next release. This is only done for new installs to ensure we don't overwrite existing custom robot lists. + $WP_Statistics->store_option('force_robot_update',TRUE); + } + + // For version 8.0, we're removing the old %option% types from the reports, so let's upgrade anyone who still has them to short codes. + $report_content = $WP_Statistics->get_option('content_report'); + + // Check to make sure we have a report to process. + if( trim( $report_content ) == '' ) { + // These are the variables we can replace in the template and the short codes we're going to replace them with. + $template_vars = array( + 'user_online' => '[wpstatistics stat=usersonline]', + 'today_visitor' => '[wpstatistics stat=visitors time=today]', + 'today_visit' => '[wpstatistics stat=visits time=today]', + 'yesterday_visitor' => '[wpstatistics stat=visitors time=yesterday]', + 'yesterday_visit' => '[wpstatistics stat=visits time=yesterday]', + 'total_visitor' => '[wpstatistics stat=visitors time=total]', + 'total_visit' => '[wpstatistics stat=visits time=total]', + ); + + // Replace the items in the template. + $final_report = preg_replace_callback('/%(.*?)%/im', function($m) { return $template_vars[$m[1]]; }, $report_content); + + // Store the updated report content. + $WP_Statistics->store_option('content_report', $final_report); + } + + // Save the settings now that we've set them. + $WP_Statistics->save_options(); + + // If the manual has been set to auto delete, do that now. + if( $WP_Statistics->get_option('delete_manual') == true ) { + $filepath = realpath( plugin_dir_path(__FILE__) ) . "/"; + + if( file_exists( $filepath . WP_STATISTICS_MANUAL . 'html' ) ) { unlink( $filepath . WP_STATISTICS_MANUAL . 'html' ); } + if( file_exists( $filepath . WP_STATISTICS_MANUAL . 'odt' ) ) { unlink( $filepath . WP_STATISTICS_MANUAL . 'odt' ); } + } + + if( $WP_Statistics->get_option('upgrade_report') == true ) { + $WP_Statistics->update_option( 'send_upgrade_email', true ); + } + + // Handle multi site implementations + if( is_multisite() ) { + + // Loop through each of the sites. + foreach( wp_get_sites() as $blog ) { + + // Since we've just upgraded/installed the current blog, don't execute a remote call for us. + if( $blog['blog_id'] != get_current_blog_id() ) { + + // Get the admin url for the current site. + $url = get_admin_url($blog['blog_id']); + + // Go and visit the admin url of the site, this will rerun the install script for each site. + // We turn blocking off because we don't really care about the response so why wait for it. + wp_remote_request($url, array( 'blocking' => false ) ); + } + } + } + } +?> \ No newline at end of file diff --git a/plugins/wp-statistics/wps-uninstall.php b/plugins/wp-statistics/wps-uninstall.php new file mode 100644 index 0000000..b7a082d --- /dev/null +++ b/plugins/wp-statistics/wps-uninstall.php @@ -0,0 +1,42 @@ +prefix ); + } + + restore_current_blog(); + } + else { + + wp_statistics_site_removal( $wpdb->prefix ); + + } + + // Make sure we don't try and remove the data more than once. + update_option( 'wp_statistics_removal', 'done'); + } + + function wp_statistics_site_removal( $wp_prefix ) { + GLOBAL $wpdb; + + // Delete the options from the WordPress options table. + delete_option('wp_statistics'); + delete_option('wp_statistics_db_version'); + delete_option('wp_statistics_plugin_version'); + + // Delete the user options. + $wpdb->query("DELETE FROM {$wp_prefix}usermeta WHERE meta_key LIKE 'wp_statistics%'"); + + // Drop the tables + $wpdb->query("DROP TABLE IF EXISTS {$wp_prefix}statistics_useronline, {$wp_prefix}statistics_visit, {$wp_prefix}statistics_visitor, {$wp_prefix}statistics_exclusions, {$wp_prefix}statistics_pages, {$wp_prefix}statistics_historical"); + } + +?> \ No newline at end of file diff --git a/plugins/wp-statistics/wps-updates.php b/plugins/wp-statistics/wps-updates.php new file mode 100644 index 0000000..a0f89e6 --- /dev/null +++ b/plugins/wp-statistics/wps-updates.php @@ -0,0 +1,369 @@ +update_option('update_geoip', false); + + $result = "

        " . __('Error the download_url() or gzopen() functions do not exist!', 'wp_statistics') . "

        "; + return $result; + } + + // If GeoIP is disabled, bail out. + if( $WP_Statistics->get_option('geoip') == false ) { return '';} + + // This is the location of the file to download. + $download_url = 'http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz'; + + // Get the upload directory from WordPRess. + $upload_dir = wp_upload_dir(); + + // Create a variable with the name of the database file to download. + $DBFile = $upload_dir['basedir'] . '/wp-statistics/GeoLite2-Country.mmdb'; + + // Check to see if the subdirectory we're going to upload to exists, if not create it. + if( !file_exists($upload_dir['basedir'] . '/wp-statistics') ) { + if( !@mkdir($upload_dir['basedir'] . '/wp-statistics', 0755 ) ) { + $WP_Statistics->update_option('update_geoip', false); + + $result = "

        " . sprintf(__('Error creating GeoIP database directory, make sure your web server has permissions to create directories in : %s', 'wp_statistics'), $upload_dir['basedir'] ) . "

        "; + return $result; + } + } + + if( !is_writable( $upload_dir['basedir'] . '/wp-statistics' ) ) { + $WP_Statistics->update_option('update_geoip', false); + + $result = "

        " . sprintf(__('Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s', 'wp_statistics'), $upload_dir['basedir'] ) . "

        "; + return $result; + } + + // Download the file from MaxMind, this places it in a temporary location. + $TempFile = download_url( $download_url ); + + // If we failed, through a message, otherwise proceed. + if (is_wp_error( $TempFile ) ) { + $result = "

        " . sprintf(__('Error downloading GeoIP database from: %s - %s', 'wp_statistics'), $download_url, $TempFile->get_error_message() ) . "

        "; + } + else { + // Open the downloaded file to unzip it. + $ZipHandle = gzopen( $TempFile, 'rb' ); + + // Create th new file to unzip to. + $DBfh = fopen( $DBFile, 'wb' ); + + // If we failed to open the downloaded file, through an error and remove the temporary file. Otherwise do the actual unzip. + if( ! $ZipHandle ) { + $result = "

        " . sprintf(__('Error could not open downloaded GeoIP database for reading: %s', 'wp_statistics'), $TempFile) . "

        "; + + unlink( $TempFile ); + } + else { + // If we failed to open the new file, throw and error and remove the temporary file. Otherwise actually do the unzip. + if( !$DBfh ) { + $result = "

        " . sprintf(__('Error could not open destination GeoIP database for writing %s', 'wp_statistics'), $DBFile) . "

        "; + unlink( $TempFile ); + } + else { + while( ( $data = gzread( $ZipHandle, 4096 ) ) != false ) { + fwrite( $DBfh, $data ); + } + + // Close the files. + gzclose( $ZipHandle ); + fclose( $DBfh ); + + // Delete the temporary file. + unlink( $TempFile ); + + // Display the success message. + $result = "

        " . __('GeoIP Database updated successfully!', 'wp_statistics') . "

        "; + + // Update the options to reflect the new download. + $WP_Statistics->update_option('last_geoip_dl', time()); + $WP_Statistics->update_option('update_geoip', false); + + // Populate any missing GeoIP information if the user has selected the option. + if( $WP_Statistics->get_option('geoip') && wp_statistics_geoip_supported() && $WP_Statistics->get_option('auto_pop')) { + include_once dirname( __FILE__ ) . '/includes/functions/geoip-populate.php'; + $result .= wp_statistics_populate_geoip_info(); + } + } + } + } + + if( $WP_Statistics->get_option('geoip_report') == true ) { + $blogname = get_bloginfo('name'); + $blogemail = get_bloginfo('admin_email'); + + $headers[] = "From: $blogname <$blogemail>"; + $headers[] = "MIME-Version: 1.0"; + $headers[] = "Content-type: text/html; charset=utf-8"; + + if( $WP_Statistics->get_option('email_list') == '' ) { $WP_Statistics->update_option( 'email_list', $blogemail ); } + + wp_mail( $WP_Statistics->get_option('email_list'), __('GeoIP update on', 'wp_statistics') . ' ' . $blogname, $result, $headers ); + } + + // All of the messages displayed above are stored in a stirng, now it's time to actually output the messages. + return $result; + } + + // This function downloads the browscap database from browscap.org. + function wp_statistics_download_browscap() { + + GLOBAL $WP_Statistics; + + // We need the download_url() function, it should exists on virtually all installs of PHP, but if it doesn't for some reason, bail out. + if( !function_exists( 'download_url' ) ) { return ''; } + + // If browscap is disabled, bail out. + if( $WP_Statistics->get_option('browscap') == false ) { return '';} + + // This is the location of the file to download. + $download_url = 'http://browscap.org/stream?q=Full_PHP_BrowsCapINI'; + $download_version = 'http://browscap.org/version-number'; + + // Get the upload directory from WordPress. + $upload_dir = wp_upload_dir(); + + // Check to see if the subdirectory we're going to upload to exists, if not create it. + if( !file_exists($upload_dir['basedir'] . '/wp-statistics') ) { mkdir($upload_dir['basedir'] . '/wp-statistics'); } + + $LocalVersion = 0; + + // Get the Browscap object, tell it NOT to autoupdate. + $bc = new Browscap($upload_dir['basedir'] . '/wp-statistics'); + $bc->doAutoUpdate = false; // We don't want to auto update. + + // If we already have a browscap.ini file (aka we're already done a download in the past) we can get it's version number. + // We can't execute this code if no browscap.ini exists as then the library will automatically download a full version, even + // though we've told it not to autoupdate above. + if( $WP_Statistics->get_option('last_browscap_dl') > 1 ) { + // Get the current browser so that the version information is populated. + try { + $bc->getBrowser(); + $LocalVersion = $bc->getSourceVersion(); + } + catch( Exception $e ) { + $crawler = false; + $LocalVersion = 0; + } + + } + + // Get the remote version info from browscap.org. + $TempVersionFile = download_url( $download_version ); + + // Read the version we just downloaded in to a string. + $RemoteVersion = file_get_contents($TempVersionFile); + + // Get rid of the temporary file. + unlink( $TempVersionFile ); + + // If there is a new version, let's go get it. + if( intval($RemoteVersion) > $LocalVersion ) { + + // Download the file from browscap.org, this places it in a temporary location. + $TempFile = download_url( $download_url ); + + // If we failed, through a message, otherwise proceed. + if (is_wp_error( $TempFile ) ) { + $result = "

        " . sprintf(__('Error downloading browscap database from: %s - %s', 'wp_statistics'), $download_url, $TempFile->get_error_message() ) . "

        "; + } + else { + // Keep the current version just in case by renaming it. + if( file_exists( $upload_dir['basedir'] . '/wp-statistics/browscap.old' ) ) { unlink( $upload_dir['basedir'] . '/wp-statistics/browscap.old' ); } + if( file_exists( $upload_dir['basedir'] . '/wp-statistics/cache.old' ) ) { unlink( $upload_dir['basedir'] . '/wp-statistics/cache.old' ); } + if( file_exists( $upload_dir['basedir'] . '/wp-statistics/browscap.ini' ) ) { rename( $upload_dir['basedir'] . '/wp-statistics/browscap.ini', $upload_dir['basedir'] . '/wp-statistics/browscap.old' ); } + if( file_exists( $upload_dir['basedir'] . '/wp-statistics/cache.php' ) ) { rename( $upload_dir['basedir'] . '/wp-statistics/cache.php', $upload_dir['basedir'] . '/wp-statistics/cache.old' ); } + + // Setup our file handles. + $infile = fopen($TempFile, 'r' ); + $outfile = fopen($upload_dir['basedir'] . '/wp-statistics/browscap.ini', 'w'); + + // We're going to need some variables to use as we process the new browscap.ini. + // $crawler has three possible settings: + // 0 = no setting found + // 1 = setting found but not a crawler + // 2 = setting found and a crawler + $parent = ''; + $title = ''; + $crawler = 0; + $parents = array( '' => false ); + + // Now read in the browscap.ini file we downloaded one line at a time. + while( ( $buffer = fgets($infile) ) !== false) + { + // Let's get rid of the tailing carriage return extra spaces. + $buffer = trim($buffer); + + // We're going to do some things based on the first charater on the line so let's just get it once. + $firstchar = substr( $buffer, 0, 1 ); + + // The first character will tell us what kind of line we're dealing with. + switch( $firstchar ) + { + // A square bracket means it's a section title. + case '[': + + // We have three sections we need to copy verbatium so don't do the standard processing for them. + if( $title != 'GJK_Browscap_Version' && $title != 'DefaultProperties' && $title != '*' && $title != '') + { + // Write out the section if: + // the current section is a crawler and there is no parent + // OR + // the current section is a crawler, has a parent and the parent is a crawler as well (Note, this will drop some crawlers who's parent's aren't because we haven't written out all the parent's that aren't crawlers this could cause mis-identificaton of some users as crawlers). + // OR + // the current section isn't a crawler but the parent is + // + if( ( $crawler == 2 && $parent == '' ) || + ( $crawler == 2 && $parent != '' && array_key_exists( $parent, $parents ) ) || + ( $crawler == 0 && array_key_exists( $parent, $parents ) ) ) + { + // Write out the section with just the parent/crawler setting saved. + fwrite( $outfile, "[" . $title . "]\n" ); + fwrite( $outfile, "Crawler=\"true\"\n" ); + } + } + + // Reset our variables. + $crawler = 0; + $parent = ''; + $title = substr( $buffer, 1, strlen($buffer) - 2 ); + + // We have three sections we need to copy verbatium so write out their headings immediatly instead of waiting to see if they are a crawler. + if( $title == 'GJK_Browscap_Version' || $title == 'DefaultProperties' || $title == "*" ) { fwrite($outfile,"[" . $title . "]\n"); } + + break; + // A space or semi-colan means it's a comment. + case ' ': + case ';': + // Since we're hacking out lots of data the only comments we want to keep are the first few in the file before the first section is processed. + if( $title == '' ) { fwrite( $outfile, $buffer . "\n" ); } + + break; + // Otherwise its a real setting line. + default: + // If the setting is for the crawler let's inidicate we found it and it's true. We can also set the parents array. + if( $buffer == 'Crawler="true"' ) { $crawler = 2; $parents[$title] = true;} + + // If the setting for the parent then set it now. + if( substr( $buffer, 0, 7 ) == 'Parent=' ) { $parent = substr( $buffer, 8, -1 ); } + + // We have three sections we need to copy verbatium so write out their settings. + if( $title == 'GJK_Browscap_Version' || $title == 'DefaultProperties' || $title == "*" ) { fwrite( $outfile, $buffer . "\n" ); } + } + } + + // Close the files. + fclose( $outfile ); + fclose( $infile ); + + // Delete the temporary file. + unlink( $TempFile ); + + // Check to see if an old (more than a minute old) lock file exists, if so delete it. + $cache_lock = $upload_dir['basedir'] . '/wp-statistics/cache.lock'; + if( file_exists( $cache_lock ) ) { + if( time() - filemtime( $cache_lock ) > 60 ) { + unlink( $cache_lock ); + } + } + + // Force the cache to be updated. + $bc->updateCache(); + + // Update the options to reflect the new download. + $WP_Statistics->update_option('last_browscap_dl', time()); + $WP_Statistics->update_option('update_browscap', false); + + $result = "

        " . __('browscap database updated successfully!', 'wp_statistics') . "

        "; + + // Do some sanity checks on the new ini/cache file + $ini_fs = filesize( $upload_dir['basedir'] . '/wp-statistics/browscap.ini' ); + $cache_fs = filesize( $upload_dir['basedir'] . '/wp-statistics/cache.php' ); + $fail = false; + + // Check to make sure the cache file isn't any more than 15% larger than then ini file + if( $cache_fs - $ini_fs > $ini_fs * 0.15 ) { + $fail = true; + $result = "

        " . __('browscap database updated failed! Cache file too large, reverting to previous browscap.ini.', 'wp_statistics') . "

        "; + } else { + // Check to make sure we don't resolve a typical user agent as a robot. + $test_browser = $bc->getBrowser("Mozilla/5.0 (Windows NT 6.3; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0"); + $crawler = $test_browser->Crawler; + + if( $crawler == true ) { + $fail = true; + $result = "

        " . __('browscap database updated failed! New browscap.ini is mis-identifing user agents as crawlers, reverting to previous browscap.ini.', 'wp_statistics') . "

        "; + } + } + + // If we failed, roll back the update, otherwise just delete the old files. + if( $fail == true ) { + if( file_exists( $upload_dir['basedir'] . '/wp-statistics/browscap.ini' ) ) { unlink( $upload_dir['basedir'] . '/wp-statistics/browscap.ini' ); } + if( file_exists( $upload_dir['basedir'] . '/wp-statistics/cache.php' ) ) { unlink( $upload_dir['basedir'] . '/wp-statistics/cache.php' ); } + if( file_exists( $upload_dir['basedir'] . '/wp-statistics/browscap.old' ) ) { rename( $upload_dir['basedir'] . '/wp-statistics/browscap.old', $upload_dir['basedir'] . '/wp-statistics/browscap.ini' ); } + if( file_exists( $upload_dir['basedir'] . '/wp-statistics/cache.old' ) ) { rename( $upload_dir['basedir'] . '/wp-statistics/cache.old', $upload_dir['basedir'] . '/wp-statistics/cache.php' ); } + } + else { + if( file_exists( $upload_dir['basedir'] . '/wp-statistics/browscap.old' ) ) { unlink( $upload_dir['basedir'] . '/wp-statistics/browscap.old' ); } + if( file_exists( $upload_dir['basedir'] . '/wp-statistics/cache.old' ) ) { unlink( $upload_dir['basedir'] . '/wp-statistics/cache.old' ); } + } + } + } + else { + // Update the options to reflect the new download. + $WP_Statistics->update_option('last_browscap_dl', time()); + $WP_Statistics->update_option('update_browscap', false); + + $result = "

        " . __('browscap already at current version!', 'wp_statistics') . "

        "; + } + + if( $WP_Statistics->get_option('browscap_report') == true ) { + $blogname = get_bloginfo('name'); + $blogemail = get_bloginfo('admin_email'); + + $headers[] = "From: $blogname <$blogemail>"; + $headers[] = "MIME-Version: 1.0"; + $headers[] = "Content-type: text/html; charset=utf-8"; + + if( $WP_Statistics->get_option('email_list') == '' ) { $WP_Statistics->update_option( 'email_list', $blogemail ); } + + wp_mail( $WP_Statistics->get_option('email_list'), __('Browscap.ini update on', 'wp_statistics') . ' ' . $blogname, $result, $headers ); + } + + // All of the messages displayed above are stored in a stirng, now it's time to actually output the messages. + return $result; + } + + // This function downloads the referrerspam database from https://github.com/piwik/referrer-spam-blacklist. + function wp_statistics_download_referrerspam() { + + GLOBAL $WP_Statistics; + + // If referrerspam is disabled, bail out. + if( $WP_Statistics->get_option('referrerspam') == false ) { return '';} + + // This is the location of the file to download. + $download_url = 'https://raw.githubusercontent.com/piwik/referrer-spam-blacklist/master/spammers.txt'; + + // Download the file from MaxMind, this places it in a temporary location. + $referrerspamlist = file_get_contents( $download_url ); + if( $referrerspamlist === FALSE ) { $referrerspamlist = ''; } + + if( $referrerspamlist != '' || $WP_Statistics->get_option('referrerspamlist') != '' ) { + $WP_Statistics->update_option('referrerspamlist', $referrerspamlist); + } + + $WP_Statistics->update_option('update_referrerspam', false); + } \ No newline at end of file diff --git a/themes/fruitful/404.php b/themes/fruitful/404.php new file mode 100644 index 0000000..fa29c1c --- /dev/null +++ b/themes/fruitful/404.php @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/themes/fruitful/archive.php b/themes/fruitful/archive.php new file mode 100644 index 0000000..7423cae --- /dev/null +++ b/themes/fruitful/archive.php @@ -0,0 +1,18 @@ + + + + + \ No newline at end of file diff --git a/themes/fruitful/author-bio.php b/themes/fruitful/author-bio.php new file mode 100644 index 0000000..a00a848 --- /dev/null +++ b/themes/fruitful/author-bio.php @@ -0,0 +1,24 @@ + + + \ No newline at end of file diff --git a/themes/fruitful/author.php b/themes/fruitful/author.php new file mode 100644 index 0000000..1d8ca72 --- /dev/null +++ b/themes/fruitful/author.php @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/themes/fruitful/category.php b/themes/fruitful/category.php new file mode 100644 index 0000000..2df88f9 --- /dev/null +++ b/themes/fruitful/category.php @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/themes/fruitful/comments.php b/themes/fruitful/comments.php new file mode 100644 index 0000000..c72d6cc --- /dev/null +++ b/themes/fruitful/comments.php @@ -0,0 +1,77 @@ + + + + +
        + + + + +

        + ' . get_the_title() . '' ); + ?> +

        + + 1 && get_option( 'page_comments' ) ) : // are there comments to navigate through ?> + + + +
          + 'fruitful_comment' ) ); + ?> +
        + + 1 && get_option( 'page_comments' ) ) : // are there comments to navigate through ?> + + + + + + +

        + + + + +
        diff --git a/themes/fruitful/content-404.php b/themes/fruitful/content-404.php new file mode 100644 index 0000000..ac71821 --- /dev/null +++ b/themes/fruitful/content-404.php @@ -0,0 +1,20 @@ + + +
        > +
        +

        +
        + +
        +

        + +
        +
        diff --git a/themes/fruitful/content-aside.php b/themes/fruitful/content-aside.php new file mode 100644 index 0000000..e0fa86c --- /dev/null +++ b/themes/fruitful/content-aside.php @@ -0,0 +1,50 @@ + + +
        > + +
        + + +
        + +
        +
        + +

        + +

        + +

        + +
        + +
        + →', 'fruitful' ) ); ?> + '', 'link_before' => '', 'link_after' => '' ) ); ?> +
        + +
        + + + ', '' ); ?> + + + + + + + ', '' ); ?> + +
        + +
        diff --git a/themes/fruitful/content-audio.php b/themes/fruitful/content-audio.php new file mode 100644 index 0000000..4008a94 --- /dev/null +++ b/themes/fruitful/content-audio.php @@ -0,0 +1,46 @@ + + +
        > + +
        + + +
        + +
        +
        + +

        + +

        + +

        + +
        + +
        +
        + →', 'fruitful' ) ); ?> + '', 'link_before' => '', 'link_after' => '' ) ); ?> +
        +
        + +
        + + + + + ', '' ); ?> +
        +
        +
        diff --git a/themes/fruitful/content-chat.php b/themes/fruitful/content-chat.php new file mode 100644 index 0000000..0823f88 --- /dev/null +++ b/themes/fruitful/content-chat.php @@ -0,0 +1,41 @@ + + +
        > + +
        + + +
        + +
        +
        +

        + +
        + +
        + +
        + + +
        + + '', 'link_before' => '', 'link_after' => '' ) ); ?> +
        + +
        + + ', '' ); ?> +
        +
        +
        diff --git a/themes/fruitful/content-gallery.php b/themes/fruitful/content-gallery.php new file mode 100644 index 0000000..e1a7343 --- /dev/null +++ b/themes/fruitful/content-gallery.php @@ -0,0 +1,52 @@ + + +
        > + +
        + + +
        +
        +
        + +

        + +

        + +

        + +
        + +
        + + →', 'fruitful' ) ); ?> + '', 'link_before' => '', 'link_after' => '' ) ); ?> + + + +
        + +
        + + + + + + + + + + ', '' ); ?> +
        +
        +
        diff --git a/themes/fruitful/content-image.php b/themes/fruitful/content-image.php new file mode 100644 index 0000000..a89ab74 --- /dev/null +++ b/themes/fruitful/content-image.php @@ -0,0 +1,52 @@ + + +
        > + +
        + + +
        + +
        +
        + +

        + +

        + +

        + +
        + + +
        + →', 'fruitful' ) ); ?> + '', 'link_before' => '', 'link_after' => '' ) ); ?> +
        + +
        + + + + + ' . __( 'Leave a comment', 'fruitful' ) . '', __( 'One comment so far', 'fruitful' ), __( 'View all % comments', 'fruitful' ) ); ?> + + + + + + + ', '' ); ?> +
        +
        +
        diff --git a/themes/fruitful/content-link.php b/themes/fruitful/content-link.php new file mode 100644 index 0000000..e0a9692 --- /dev/null +++ b/themes/fruitful/content-link.php @@ -0,0 +1,46 @@ + + +
        > + +
        + + +
        + +
        +
        + +

        + +

        + +

        + +
        + +
        + →', 'fruitful' ) ); ?> + '', 'link_before' => '', 'link_after' => '' ) ); ?> +
        + + +
        + + + + ', '' ); ?> + +
        + +
        +
        diff --git a/themes/fruitful/content-page.php b/themes/fruitful/content-page.php new file mode 100644 index 0000000..9768549 --- /dev/null +++ b/themes/fruitful/content-page.php @@ -0,0 +1,25 @@ + + +
        > + +
        + + +
        +

        +
        + +
        + + '' ) ); ?> + ', '' ); ?> +
        +
        diff --git a/themes/fruitful/content-quote.php b/themes/fruitful/content-quote.php new file mode 100644 index 0000000..5f2e353 --- /dev/null +++ b/themes/fruitful/content-quote.php @@ -0,0 +1,46 @@ + + +
        > + + +
        + + +
        + +
        +
        +

        + +
        + +
        + +
        + +
        + →', 'fruitful' ) ); ?> + '', 'link_before' => '', 'link_after' => '' ) ); ?> +
        + +
        + + + + ' . __( 'Leave a comment', 'fruitful' ) . '', __( 'One comment so far', 'fruitful' ), __( 'View all % comments', 'fruitful' ) ); ?> + + + ', '' ); ?> +
        +
        +
        diff --git a/themes/fruitful/content-single.php b/themes/fruitful/content-single.php new file mode 100644 index 0000000..27e06f5 --- /dev/null +++ b/themes/fruitful/content-single.php @@ -0,0 +1,41 @@ + + +
        > + +
        + + +
        + +
        + +
        +

        + + +
        + +
        + +
        + + +
        + + '' ) ); ?> +
        + +
        + + ', '' ); ?> +
        +
        +
        diff --git a/themes/fruitful/content-status.php b/themes/fruitful/content-status.php new file mode 100644 index 0000000..ac5083a --- /dev/null +++ b/themes/fruitful/content-status.php @@ -0,0 +1,43 @@ + + +
        > + +
        + + +
        + +
        +
        + +

        + +

        + +

        + +
        + +
        + →', 'fruitful' ) ); ?> + '', 'link_before' => '', 'link_after' => '' ) ); ?> +
        + +
        + + + + +
        +
        +
        diff --git a/themes/fruitful/content-video.php b/themes/fruitful/content-video.php new file mode 100644 index 0000000..3bfd569 --- /dev/null +++ b/themes/fruitful/content-video.php @@ -0,0 +1,51 @@ + + +
        > + +
        + + +
        + +
        +
        + +

        + +

        + +

        + +
        + +
        + →', 'fruitful' ) ); ?> + '', 'link_before' => '', 'link_after' => '' ) ); ?> +
        + +
        + + + + + ' . __( 'Leave a comment', 'fruitful' ) . '', __( 'One comment so far', 'fruitful' ), __( 'View all % comments', 'fruitful' ) ); ?> + + + + + + + ', '' ); ?> +
        +
        +
        \ No newline at end of file diff --git a/themes/fruitful/content.php b/themes/fruitful/content.php new file mode 100644 index 0000000..7dfca17 --- /dev/null +++ b/themes/fruitful/content.php @@ -0,0 +1,78 @@ + + + +
        > + + + + + +
        + + +
        + +
        + + +
        +
        + +

        + + +

        + +

        + + + + + + +
        + +
        + + + +
        + +
        + + +
        + + +
        + +
        + +
        + →', 'fruitful' ) ); ?> + '' ) ); ?> +
        + + +
        + + + + + + + ', '' ); ?> +
        +
        +
        diff --git a/themes/fruitful/css/editor-style.css b/themes/fruitful/css/editor-style.css new file mode 100644 index 0000000..c1ad9ce --- /dev/null +++ b/themes/fruitful/css/editor-style.css @@ -0,0 +1,578 @@ +/* +Theme Name: FruitFul Theme +Description: Used to style the TinyMCE editor. +*/ + + +/** + * Table of Contents: + * + * 1.0 - Body + * 2.0 - Headings + * 3.0 - Text Elements + * 4.0 - Links + * 5.0 - Alignment + * 6.0 - Tables + * 7.0 - Images + * 8.0 - Post Formats + * 9.0 - RTL + * ---------------------------------------------------------------------------- + */ + + +/** + * 1.0 Body + * ---------------------------------------------------------------------------- + */ + +html .mceContentBody { + font-size: 100%; + max-width: 604px; +} + +body { + color: #141412; + font-family: "Source Sans Pro", Helvetica, sans-serif; + line-height: 1.5; + text-rendering: optimizeLegibility; + vertical-align: baseline; +} + + +/** + * 2.0 Headings + * ---------------------------------------------------------------------------- + */ + +h1, +h2, +h3, +h4, +h5, +h6 { + clear: both; + font-family: Bitter, Georgia, serif; + line-height: 1.3; +} + +h1 { + font-size: 48px; + margin: 33px 0; +} + +h2 { + font-size: 30px; + margin: 25px 0; +} + +h3 { + font-size: 22px; + margin: 22px 0; +} + +h4 { + font-size: 20px; + margin: 25px 0; +} + +h5 { + font-size: 18px; + margin: 30px 0; +} + +h6 { + font-size: 16px; + margin: 36px 0; +} + +hr { + background: url(../images/dotted-line.png) repeat center top; + background-size: 4px 4px; + border: 0; + height: 1px; + margin: 0 0 24px; +} + + +/** + * 3.0 Text Elements + * ---------------------------------------------------------------------------- + */ + +p { + margin: 0 0 24px; +} + +ol, +ul { + margin: 16px 0; + padding: 0 0 0 40px; +} + +ul { + list-style-type: square; +} + +ol { + list-style: decimal outside; +} + +li > ul, +li > ol { + margin: 0; +} + +dl { + margin: 0 20px; +} + +dt { + font-weight: bold; +} + +dd { + margin: 0 0 20px; +} + +strong { + font-weight: bold; +} + +code, +kbd, +pre, +samp { + font-family: monospace, serif; + font-size: 14px; +} + +pre { + background: #f5f5f5; + color: #666; + font-family: monospace; + font-size: 14px; + margin: 20px 0; + overflow: auto; + padding: 20px; + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; +} + +blockquote, +q { + quotes: none; +} + +blockquote:before, +blockquote:after, +q:before, +q:after { + content: ""; + content: none; +} + +blockquote { + font-size: 24px; + font-style: italic; + font-weight: 300; + margin: 24px 40px; +} + +blockquote blockquote { + margin-right: 0; +} + +blockquote cite, +blockquote small { + font-size: 14px; + font-weight: normal; + text-transform: uppercase; +} + +cite { + border-bottom: 0; +} + +abbr[title] { + border-bottom: 1px dotted; +} + +address { + font-style: italic; + margin: 0 0 24px; +} + +del { + color: #333; +} + +ins { + background: #fff9c0; + border: none; + color: #333; + text-decoration: none; +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + + +/** + * 4.0 Links + * ---------------------------------------------------------------------------- + */ + +a { + color: #ca3c08; + text-decoration: none; +} + +a:visited { + color: #ac0404; +} + +a:focus { + outline: thin dotted; +} + +a:active, +a:hover { + color: #ea9629; + outline: 0; +} + +a:hover { + text-decoration: underline; +} + + +/** + * 5.0 Alignment + * ---------------------------------------------------------------------------- + */ + +.alignleft { + float: left; + margin: 5px 20px 5px 0; +} + +.alignright { + float: right; + margin: 5px 0 5px 20px; +} + +.aligncenter { + display: block; + margin: 5px auto; +} + +img.alignnone { + margin: 5px 0; +} + + +/** + * 6.0 Tables + * ---------------------------------------------------------------------------- + */ + +table { + border-bottom: 1px solid #ededed; + border-collapse: collapse; + border-spacing: 0; + font-size: 14px; + line-height: 2; + margin: 0 0 20px; + width: 100%; +} + +caption, +th, +td { + font-weight: normal; + text-align: left; +} + +caption { + font-size: 16px; + margin: 20px 0; +} + +th { + font-weight: bold; + text-transform: uppercase; +} + +td { + border-top: 1px solid #ededed; + padding: 6px 10px 6px 0; +} + + +/** + * 7.0 Images + * ---------------------------------------------------------------------------- + */ + +img { + height: auto; + max-width: 100%; + vertical-align: middle; +} + +.wp-caption { + background: transparent; + border: none; + margin: 0; + padding: 0; + text-align: left; +} + +.wp-caption.alignleft { + margin: 5px 10px 5px 0; +} + +.wp-caption.alignright { + margin: 5px 0 5px 10px; +} + +.wp-caption-dt { + margin: 0; +} + +.wp-caption .wp-caption-text, +.wp-caption-dd { + color: #220e10; + font-size: 18px; + font-style: italic; + font-weight: 300; + line-height: 1.5; + margin-bottom: 24px; + padding: 0; +} + +.mceTemp + ul, +.mceTemp + ol { + list-style-position: inside; +} + + +/** + * 8.0 Post Formats + * ---------------------------------------------------------------------------- + */ + +/* Aside */ +.post-format-aside { + background-color: #f7f5e7; +} + +.post-format-aside blockquote { + font-size: 100%; + font-weight: normal; +} + +.post-format-aside cite { + font-size: 100%; + text-transform: none; +} + +.post-format-aside cite:before { + content: "\2014"; + margin-right: 5px; +} + +/* Audio */ +.post-format-audio { + background-color: #db572f; +} + +.post-format-audio a { + color: #fbfaf3; +} + +.post-format-audio:before { + background: url(../images/dotted-line.png) repeat-y 85px 0; + background-size: 4px 4px; + content: "\f109"; + display: block; + float: left; + font-family: Genericons; + font-size: 64px; + -webkit-font-smoothing: antialiased; + height: 100%; + line-height: 1; + width: 120px; +} + +/* Chat */ +.post-format-chat { + background-color: #eadaa6; +} + +.post-format-chat a { + color: #722d19; +} + +/* Gallery */ +.post-format-gallery { + background-color: #fbca3c; +} + +.post-format-gallery a { + color: #722d19; +} + +/* Image: same as Standard/Defaults */ + +/* Link */ +.post-format-link { + background-color: #f7f5e7; +} + +/* Quote */ +.post-format-quote { + background-color: #210d10; + color: #f7f5e7; +} + +.post-format-quote a { + color: #e63f2a; +} + +.post-format-quote blockquote { + font-size: 28px; + font-style: italic; + font-weight: 300; + margin: 0; + padding-left: 75px; + position: relative; +} + +.post-format-quote blockquote:before { + content: '\201C'; + font-size: 140px; + font-weight: 400; + line-height: .8; + padding-right: 25px; + position: absolute; + left: -15px; + top: -3px; +} + +.post-format-quote blockquote small, +.post-format-quote blockquote cite { + display: block; + font-size: 16px; +} + +.format-quote .entry-content cite a { + border-bottom: 1px dotted #fff; + color: #fff; +} + +.format-quote .entry-content cite a:hover { + text-decoration: none; +} + + +/* Status */ +.post-format-status { + background-color: #722d19; + color: #f7f5e7; + font-style: italic; + font-weight: 300; + padding: 0; + padding-left: 35px; +} + +.post-format-status.mceContentBody { + font-size: 24px; +} + +.post-format-status:before { + background: url(../images/dotted-line.png) repeat-y left bottom; + background-size: 4px 4px; + content: ""; + display: block; + float: left; + height: 100%; + position: relative; + left: -30px; + width: 1px; +} + +.post-format-status > p:first-child:before { + background-color: rgba(0, 0, 0, 0.65); + content: ""; + height: 3px; + width: 13px; + margin-top: 13px; + position: absolute; + left: 9px; +} + +.post-format-status a { + color: #eadaa6; +} + +/* Video */ +.post-format-video { + background-color: #db572f; +} + +.post-format-video a { + color: #fbfaf3; +} + + +/** + * 9.0 RTL + * ---------------------------------------------------------------------------- + */ + +html .mceContentBody.rtl { + direction: rtl; + unicode-bidi: embed; +} + +.rtl ol, +.rtl ul { + padding: 0 40px 0 0; +} + +.rtl .wp-caption, +.rtl tr th { + text-align: right; +} + +.rtl td { + padding: 6px 0 6px 10px; + text-align: right; +} + +.rtl blockquote blockquote { + margin-left: 0; + margin-right: 24px; +} + +.rtl.post-format-audio:before, +.rtl.post-format-status:before, +.rtl.post-format-status > p:first-child:before { + background: none; + content: none; +} diff --git a/themes/fruitful/css/fancySelect.css b/themes/fruitful/css/fancySelect.css new file mode 100644 index 0000000..d6fd337 --- /dev/null +++ b/themes/fruitful/css/fancySelect.css @@ -0,0 +1,139 @@ +div.fancy-select { + color: inherit; + display: inline-block; + float: left; + position: relative; + width: 100%; +} + +div.fancy-select.disabled { + opacity: 0.5; +} + +div.fancy-select select:focus + div.trigger { + box-shadow: 0 0 0 2px #4B5468; +} + +div.fancy-select select:focus + div.trigger.open { + box-shadow: none; +} + +div.fancy-select div.trigger { + border-radius: 4px; + cursor: pointer; + padding: 10px 24px 9px 9px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + position: relative; + border: 1px solid #d9d9d9; + color: inherit; + width: 245px; + transition: all 240ms ease-out; + -webkit-transition: all 240ms ease-out; + -moz-transition: all 240ms ease-out; + -ms-transition: all 240ms ease-out; + -o-transition: all 240ms ease-out; +} + +div.fancy-select div.trigger:after { + content: ""; + display: block; + position: absolute; + width: 0; + height: 0; + border: 5px solid transparent; + border-top-color: #4B5468; + top: 20px; + right: 9px; +} + +div.fancy-select div.trigger.open { + border: 1px solid #475062; + color: #7A8498; + box-shadow: none; +} + +div.fancy-select div.trigger.open:after { + border-top-color: #7A8498; +} + +div.fancy-select ul.options { + list-style: none; + margin: 0 !important; + position: absolute; + top: 40px; + left: 0; + visibility: hidden; + opacity: 0; + z-index: 50; + max-height: 200px; + overflow: auto; + background: #d9d9d9; + border-radius: 4px; + width: 280px !important; + transition: opacity 300ms ease-out, top 300ms ease-out, visibility 300ms ease-out; + -webkit-transition: opacity 300ms ease-out, top 300ms ease-out, visibility 300ms ease-out; + -moz-transition: opacity 300ms ease-out, top 300ms ease-out, visibility 300ms ease-out; + -ms-transition: opacity 300ms ease-out, top 300ms ease-out, visibility 300ms ease-out; + -o-transition: opacity 300ms ease-out, top 300ms ease-out, visibility 300ms ease-out; +} + +div.fancy-select ul.options.open { + visibility: visible; + top: 44px; + opacity: 1; + + /* have to use a non-visibility transition to prevent this iOS issue (bug?): */ + /*http://stackoverflow.com/questions/10736478/css-animation-visibility-visible-works-on-chrome-and-safari-but-not-on-ios*/ + transition: opacity 300ms ease-out, top 300ms ease-out; + -webkit-transition: opacity 300ms ease-out, top 300ms ease-out; + -moz-transition: opacity 300ms ease-out, top 300ms ease-out; + -ms-transition: opacity 300ms ease-out, top 300ms ease-out; + -o-transition: opacity 300ms ease-out, top 300ms ease-out; +} + +div.fancy-select ul.options.overflowing { + top: auto; + bottom: 40px; + + transition: opacity 300ms ease-out, bottom 300ms ease-out, visibility 300ms ease-out; + -webkit-transition: opacity 300ms ease-out, bottom 300ms ease-out, visibility 300ms ease-out; + -moz-transition: opacity 300ms ease-out, bottom 300ms ease-out, visibility 300ms ease-out; + -ms-transition: opacity 300ms ease-out, bottom 300ms ease-out, visibility 300ms ease-out; + -o-transition: opacity 300ms ease-out, bottom 300ms ease-out, visibility 300ms ease-out; +} + +div.fancy-select ul.options.overflowing.open { + top: auto; + bottom: 50px; + + transition: opacity 300ms ease-out, bottom 300ms ease-out; + -webkit-transition: opacity 300ms ease-out, bottom 300ms ease-out; + -moz-transition: opacity 300ms ease-out, bottom 300ms ease-out; + -ms-transition: opacity 300ms ease-out, bottom 300ms ease-out; + -o-transition: opacity 300ms ease-out, bottom 300ms ease-out; +} + +div.fancy-select ul.options li { + padding: 8px 12px; + color: inherit; + cursor: pointer; + white-space: nowrap; + margin:0 !important; + + transition: all 150ms ease-out; + -webkit-transition: all 150ms ease-out; + -moz-transition: all 150ms ease-out; + -ms-transition: all 150ms ease-out; + -o-transition: all 150ms ease-out; +} + +div.fancy-select ul.options li.selected { + color: #f15a23; + font-weight: bolder; +} + +div.fancy-select ul.options li.hover { + color: #fff; +} \ No newline at end of file diff --git a/themes/fruitful/css/font-awesome.css b/themes/fruitful/css/font-awesome.css new file mode 100644 index 0000000..ba49171 --- /dev/null +++ b/themes/fruitful/css/font-awesome.css @@ -0,0 +1,2086 @@ +/*! + * Font Awesome 4.5.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('fonts/fontawesome-webfont.eot?v=4.5.0'); + src: url('fonts/fontawesome-webfont.eot?#iefix&v=4.5.0') format('embedded-opentype'), url('fonts/fontawesome-webfont.woff2?v=4.5.0') format('woff2'), url('fonts/fontawesome-webfont.woff?v=4.5.0') format('woff'), url('fonts/fontawesome-webfont.ttf?v=4.5.0') format('truetype'), url('fonts/fontawesome-webfont.svg?v=4.5.0#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} +.fa { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-fw { + width: 1.28571429em; + text-align: center; +} +.fa-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.fa-ul > li { + position: relative; +} +.fa-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.85714286em; +} +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.fa-pull-left { + float: left; +} +.fa-pull-right { + float: right; +} +.fa.fa-pull-left { + margin-right: .3em; +} +.fa.fa-pull-right { + margin-left: .3em; +} +/* Deprecated as of 4.4.0 */ +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.fa.pull-left { + margin-right: .3em; +} +.fa.pull-right { + margin-left: .3em; +} +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.fa-rotate-90 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.fa-flip-vertical { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + filter: none; +} +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-stack-1x, +.fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-stack-1x { + line-height: inherit; +} +.fa-stack-2x { + font-size: 2em; +} +.fa-inverse { + color: #ffffff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-glass:before { + content: "\f000"; +} +.fa-music:before { + content: "\f001"; +} +.fa-search:before { + content: "\f002"; +} +.fa-envelope-o:before { + content: "\f003"; +} +.fa-heart:before { + content: "\f004"; +} +.fa-star:before { + content: "\f005"; +} +.fa-star-o:before { + content: "\f006"; +} +.fa-user:before { + content: "\f007"; +} +.fa-film:before { + content: "\f008"; +} +.fa-th-large:before { + content: "\f009"; +} +.fa-th:before { + content: "\f00a"; +} +.fa-th-list:before { + content: "\f00b"; +} +.fa-check:before { + content: "\f00c"; +} +.fa-remove:before, +.fa-close:before, +.fa-times:before { + content: "\f00d"; +} +.fa-search-plus:before { + content: "\f00e"; +} +.fa-search-minus:before { + content: "\f010"; +} +.fa-power-off:before { + content: "\f011"; +} +.fa-signal:before { + content: "\f012"; +} +.fa-gear:before, +.fa-cog:before { + content: "\f013"; +} +.fa-trash-o:before { + content: "\f014"; +} +.fa-home:before { + content: "\f015"; +} +.fa-file-o:before { + content: "\f016"; +} +.fa-clock-o:before { + content: "\f017"; +} +.fa-road:before { + content: "\f018"; +} +.fa-download:before { + content: "\f019"; +} +.fa-arrow-circle-o-down:before { + content: "\f01a"; +} +.fa-arrow-circle-o-up:before { + content: "\f01b"; +} +.fa-inbox:before { + content: "\f01c"; +} +.fa-play-circle-o:before { + content: "\f01d"; +} +.fa-rotate-right:before, +.fa-repeat:before { + content: "\f01e"; +} +.fa-refresh:before { + content: "\f021"; +} +.fa-list-alt:before { + content: "\f022"; +} +.fa-lock:before { + content: "\f023"; +} +.fa-flag:before { + content: "\f024"; +} +.fa-headphones:before { + content: "\f025"; +} +.fa-volume-off:before { + content: "\f026"; +} +.fa-volume-down:before { + content: "\f027"; +} +.fa-volume-up:before { + content: "\f028"; +} +.fa-qrcode:before { + content: "\f029"; +} +.fa-barcode:before { + content: "\f02a"; +} +.fa-tag:before { + content: "\f02b"; +} +.fa-tags:before { + content: "\f02c"; +} +.fa-book:before { + content: "\f02d"; +} +.fa-bookmark:before { + content: "\f02e"; +} +.fa-print:before { + content: "\f02f"; +} +.fa-camera:before { + content: "\f030"; +} +.fa-font:before { + content: "\f031"; +} +.fa-bold:before { + content: "\f032"; +} +.fa-italic:before { + content: "\f033"; +} +.fa-text-height:before { + content: "\f034"; +} +.fa-text-width:before { + content: "\f035"; +} +.fa-align-left:before { + content: "\f036"; +} +.fa-align-center:before { + content: "\f037"; +} +.fa-align-right:before { + content: "\f038"; +} +.fa-align-justify:before { + content: "\f039"; +} +.fa-list:before { + content: "\f03a"; +} +.fa-dedent:before, +.fa-outdent:before { + content: "\f03b"; +} +.fa-indent:before { + content: "\f03c"; +} +.fa-video-camera:before { + content: "\f03d"; +} +.fa-photo:before, +.fa-image:before, +.fa-picture-o:before { + content: "\f03e"; +} +.fa-pencil:before { + content: "\f040"; +} +.fa-map-marker:before { + content: "\f041"; +} +.fa-adjust:before { + content: "\f042"; +} +.fa-tint:before { + content: "\f043"; +} +.fa-edit:before, +.fa-pencil-square-o:before { + content: "\f044"; +} +.fa-share-square-o:before { + content: "\f045"; +} +.fa-check-square-o:before { + content: "\f046"; +} +.fa-arrows:before { + content: "\f047"; +} +.fa-step-backward:before { + content: "\f048"; +} +.fa-fast-backward:before { + content: "\f049"; +} +.fa-backward:before { + content: "\f04a"; +} +.fa-play:before { + content: "\f04b"; +} +.fa-pause:before { + content: "\f04c"; +} +.fa-stop:before { + content: "\f04d"; +} +.fa-forward:before { + content: "\f04e"; +} +.fa-fast-forward:before { + content: "\f050"; +} +.fa-step-forward:before { + content: "\f051"; +} +.fa-eject:before { + content: "\f052"; +} +.fa-chevron-left:before { + content: "\f053"; +} +.fa-chevron-right:before { + content: "\f054"; +} +.fa-plus-circle:before { + content: "\f055"; +} +.fa-minus-circle:before { + content: "\f056"; +} +.fa-times-circle:before { + content: "\f057"; +} +.fa-check-circle:before { + content: "\f058"; +} +.fa-question-circle:before { + content: "\f059"; +} +.fa-info-circle:before { + content: "\f05a"; +} +.fa-crosshairs:before { + content: "\f05b"; +} +.fa-times-circle-o:before { + content: "\f05c"; +} +.fa-check-circle-o:before { + content: "\f05d"; +} +.fa-ban:before { + content: "\f05e"; +} +.fa-arrow-left:before { + content: "\f060"; +} +.fa-arrow-right:before { + content: "\f061"; +} +.fa-arrow-up:before { + content: "\f062"; +} +.fa-arrow-down:before { + content: "\f063"; +} +.fa-mail-forward:before, +.fa-share:before { + content: "\f064"; +} +.fa-expand:before { + content: "\f065"; +} +.fa-compress:before { + content: "\f066"; +} +.fa-plus:before { + content: "\f067"; +} +.fa-minus:before { + content: "\f068"; +} +.fa-asterisk:before { + content: "\f069"; +} +.fa-exclamation-circle:before { + content: "\f06a"; +} +.fa-gift:before { + content: "\f06b"; +} +.fa-leaf:before { + content: "\f06c"; +} +.fa-fire:before { + content: "\f06d"; +} +.fa-eye:before { + content: "\f06e"; +} +.fa-eye-slash:before { + content: "\f070"; +} +.fa-warning:before, +.fa-exclamation-triangle:before { + content: "\f071"; +} +.fa-plane:before { + content: "\f072"; +} +.fa-calendar:before { + content: "\f073"; +} +.fa-random:before { + content: "\f074"; +} +.fa-comment:before { + content: "\f075"; +} +.fa-magnet:before { + content: "\f076"; +} +.fa-chevron-up:before { + content: "\f077"; +} +.fa-chevron-down:before { + content: "\f078"; +} +.fa-retweet:before { + content: "\f079"; +} +.fa-shopping-cart:before { + content: "\f07a"; +} +.fa-folder:before { + content: "\f07b"; +} +.fa-folder-open:before { + content: "\f07c"; +} +.fa-arrows-v:before { + content: "\f07d"; +} +.fa-arrows-h:before { + content: "\f07e"; +} +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: "\f080"; +} +.fa-twitter-square:before { + content: "\f081"; +} +.fa-facebook-square:before { + content: "\f082"; +} +.fa-camera-retro:before { + content: "\f083"; +} +.fa-key:before { + content: "\f084"; +} +.fa-gears:before, +.fa-cogs:before { + content: "\f085"; +} +.fa-comments:before { + content: "\f086"; +} +.fa-thumbs-o-up:before { + content: "\f087"; +} +.fa-thumbs-o-down:before { + content: "\f088"; +} +.fa-star-half:before { + content: "\f089"; +} +.fa-heart-o:before { + content: "\f08a"; +} +.fa-sign-out:before { + content: "\f08b"; +} +.fa-linkedin-square:before { + content: "\f08c"; +} +.fa-thumb-tack:before { + content: "\f08d"; +} +.fa-external-link:before { + content: "\f08e"; +} +.fa-sign-in:before { + content: "\f090"; +} +.fa-trophy:before { + content: "\f091"; +} +.fa-github-square:before { + content: "\f092"; +} +.fa-upload:before { + content: "\f093"; +} +.fa-lemon-o:before { + content: "\f094"; +} +.fa-phone:before { + content: "\f095"; +} +.fa-square-o:before { + content: "\f096"; +} +.fa-bookmark-o:before { + content: "\f097"; +} +.fa-phone-square:before { + content: "\f098"; +} +.fa-twitter:before { + content: "\f099"; +} +.fa-facebook-f:before, +.fa-facebook:before { + content: "\f09a"; +} +.fa-github:before { + content: "\f09b"; +} +.fa-unlock:before { + content: "\f09c"; +} +.fa-credit-card:before { + content: "\f09d"; +} +.fa-feed:before, +.fa-rss:before { + content: "\f09e"; +} +.fa-hdd-o:before { + content: "\f0a0"; +} +.fa-bullhorn:before { + content: "\f0a1"; +} +.fa-bell:before { + content: "\f0f3"; +} +.fa-certificate:before { + content: "\f0a3"; +} +.fa-hand-o-right:before { + content: "\f0a4"; +} +.fa-hand-o-left:before { + content: "\f0a5"; +} +.fa-hand-o-up:before { + content: "\f0a6"; +} +.fa-hand-o-down:before { + content: "\f0a7"; +} +.fa-arrow-circle-left:before { + content: "\f0a8"; +} +.fa-arrow-circle-right:before { + content: "\f0a9"; +} +.fa-arrow-circle-up:before { + content: "\f0aa"; +} +.fa-arrow-circle-down:before { + content: "\f0ab"; +} +.fa-globe:before { + content: "\f0ac"; +} +.fa-wrench:before { + content: "\f0ad"; +} +.fa-tasks:before { + content: "\f0ae"; +} +.fa-filter:before { + content: "\f0b0"; +} +.fa-briefcase:before { + content: "\f0b1"; +} +.fa-arrows-alt:before { + content: "\f0b2"; +} +.fa-group:before, +.fa-users:before { + content: "\f0c0"; +} +.fa-chain:before, +.fa-link:before { + content: "\f0c1"; +} +.fa-cloud:before { + content: "\f0c2"; +} +.fa-flask:before { + content: "\f0c3"; +} +.fa-cut:before, +.fa-scissors:before { + content: "\f0c4"; +} +.fa-copy:before, +.fa-files-o:before { + content: "\f0c5"; +} +.fa-paperclip:before { + content: "\f0c6"; +} +.fa-save:before, +.fa-floppy-o:before { + content: "\f0c7"; +} +.fa-square:before { + content: "\f0c8"; +} +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { + content: "\f0c9"; +} +.fa-list-ul:before { + content: "\f0ca"; +} +.fa-list-ol:before { + content: "\f0cb"; +} +.fa-strikethrough:before { + content: "\f0cc"; +} +.fa-underline:before { + content: "\f0cd"; +} +.fa-table:before { + content: "\f0ce"; +} +.fa-magic:before { + content: "\f0d0"; +} +.fa-truck:before { + content: "\f0d1"; +} +.fa-pinterest:before { + content: "\f0d2"; +} +.fa-pinterest-square:before { + content: "\f0d3"; +} +.fa-google-plus-square:before { + content: "\f0d4"; +} +.fa-google-plus:before { + content: "\f0d5"; +} +.fa-money:before { + content: "\f0d6"; +} +.fa-caret-down:before { + content: "\f0d7"; +} +.fa-caret-up:before { + content: "\f0d8"; +} +.fa-caret-left:before { + content: "\f0d9"; +} +.fa-caret-right:before { + content: "\f0da"; +} +.fa-columns:before { + content: "\f0db"; +} +.fa-unsorted:before, +.fa-sort:before { + content: "\f0dc"; +} +.fa-sort-down:before, +.fa-sort-desc:before { + content: "\f0dd"; +} +.fa-sort-up:before, +.fa-sort-asc:before { + content: "\f0de"; +} +.fa-envelope:before { + content: "\f0e0"; +} +.fa-linkedin:before { + content: "\f0e1"; +} +.fa-rotate-left:before, +.fa-undo:before { + content: "\f0e2"; +} +.fa-legal:before, +.fa-gavel:before { + content: "\f0e3"; +} +.fa-dashboard:before, +.fa-tachometer:before { + content: "\f0e4"; +} +.fa-comment-o:before { + content: "\f0e5"; +} +.fa-comments-o:before { + content: "\f0e6"; +} +.fa-flash:before, +.fa-bolt:before { + content: "\f0e7"; +} +.fa-sitemap:before { + content: "\f0e8"; +} +.fa-umbrella:before { + content: "\f0e9"; +} +.fa-paste:before, +.fa-clipboard:before { + content: "\f0ea"; +} +.fa-lightbulb-o:before { + content: "\f0eb"; +} +.fa-exchange:before { + content: "\f0ec"; +} +.fa-cloud-download:before { + content: "\f0ed"; +} +.fa-cloud-upload:before { + content: "\f0ee"; +} +.fa-user-md:before { + content: "\f0f0"; +} +.fa-stethoscope:before { + content: "\f0f1"; +} +.fa-suitcase:before { + content: "\f0f2"; +} +.fa-bell-o:before { + content: "\f0a2"; +} +.fa-coffee:before { + content: "\f0f4"; +} +.fa-cutlery:before { + content: "\f0f5"; +} +.fa-file-text-o:before { + content: "\f0f6"; +} +.fa-building-o:before { + content: "\f0f7"; +} +.fa-hospital-o:before { + content: "\f0f8"; +} +.fa-ambulance:before { + content: "\f0f9"; +} +.fa-medkit:before { + content: "\f0fa"; +} +.fa-fighter-jet:before { + content: "\f0fb"; +} +.fa-beer:before { + content: "\f0fc"; +} +.fa-h-square:before { + content: "\f0fd"; +} +.fa-plus-square:before { + content: "\f0fe"; +} +.fa-angle-double-left:before { + content: "\f100"; +} +.fa-angle-double-right:before { + content: "\f101"; +} +.fa-angle-double-up:before { + content: "\f102"; +} +.fa-angle-double-down:before { + content: "\f103"; +} +.fa-angle-left:before { + content: "\f104"; +} +.fa-angle-right:before { + content: "\f105"; +} +.fa-angle-up:before { + content: "\f106"; +} +.fa-angle-down:before { + content: "\f107"; +} +.fa-desktop:before { + content: "\f108"; +} +.fa-laptop:before { + content: "\f109"; +} +.fa-tablet:before { + content: "\f10a"; +} +.fa-mobile-phone:before, +.fa-mobile:before { + content: "\f10b"; +} +.fa-circle-o:before { + content: "\f10c"; +} +.fa-quote-left:before { + content: "\f10d"; +} +.fa-quote-right:before { + content: "\f10e"; +} +.fa-spinner:before { + content: "\f110"; +} +.fa-circle:before { + content: "\f111"; +} +.fa-mail-reply:before, +.fa-reply:before { + content: "\f112"; +} +.fa-github-alt:before { + content: "\f113"; +} +.fa-folder-o:before { + content: "\f114"; +} +.fa-folder-open-o:before { + content: "\f115"; +} +.fa-smile-o:before { + content: "\f118"; +} +.fa-frown-o:before { + content: "\f119"; +} +.fa-meh-o:before { + content: "\f11a"; +} +.fa-gamepad:before { + content: "\f11b"; +} +.fa-keyboard-o:before { + content: "\f11c"; +} +.fa-flag-o:before { + content: "\f11d"; +} +.fa-flag-checkered:before { + content: "\f11e"; +} +.fa-terminal:before { + content: "\f120"; +} +.fa-code:before { + content: "\f121"; +} +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: "\f122"; +} +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: "\f123"; +} +.fa-location-arrow:before { + content: "\f124"; +} +.fa-crop:before { + content: "\f125"; +} +.fa-code-fork:before { + content: "\f126"; +} +.fa-unlink:before, +.fa-chain-broken:before { + content: "\f127"; +} +.fa-question:before { + content: "\f128"; +} +.fa-info:before { + content: "\f129"; +} +.fa-exclamation:before { + content: "\f12a"; +} +.fa-superscript:before { + content: "\f12b"; +} +.fa-subscript:before { + content: "\f12c"; +} +.fa-eraser:before { + content: "\f12d"; +} +.fa-puzzle-piece:before { + content: "\f12e"; +} +.fa-microphone:before { + content: "\f130"; +} +.fa-microphone-slash:before { + content: "\f131"; +} +.fa-shield:before { + content: "\f132"; +} +.fa-calendar-o:before { + content: "\f133"; +} +.fa-fire-extinguisher:before { + content: "\f134"; +} +.fa-rocket:before { + content: "\f135"; +} +.fa-maxcdn:before { + content: "\f136"; +} +.fa-chevron-circle-left:before { + content: "\f137"; +} +.fa-chevron-circle-right:before { + content: "\f138"; +} +.fa-chevron-circle-up:before { + content: "\f139"; +} +.fa-chevron-circle-down:before { + content: "\f13a"; +} +.fa-html5:before { + content: "\f13b"; +} +.fa-css3:before { + content: "\f13c"; +} +.fa-anchor:before { + content: "\f13d"; +} +.fa-unlock-alt:before { + content: "\f13e"; +} +.fa-bullseye:before { + content: "\f140"; +} +.fa-ellipsis-h:before { + content: "\f141"; +} +.fa-ellipsis-v:before { + content: "\f142"; +} +.fa-rss-square:before { + content: "\f143"; +} +.fa-play-circle:before { + content: "\f144"; +} +.fa-ticket:before { + content: "\f145"; +} +.fa-minus-square:before { + content: "\f146"; +} +.fa-minus-square-o:before { + content: "\f147"; +} +.fa-level-up:before { + content: "\f148"; +} +.fa-level-down:before { + content: "\f149"; +} +.fa-check-square:before { + content: "\f14a"; +} +.fa-pencil-square:before { + content: "\f14b"; +} +.fa-external-link-square:before { + content: "\f14c"; +} +.fa-share-square:before { + content: "\f14d"; +} +.fa-compass:before { + content: "\f14e"; +} +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: "\f150"; +} +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: "\f151"; +} +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: "\f152"; +} +.fa-euro:before, +.fa-eur:before { + content: "\f153"; +} +.fa-gbp:before { + content: "\f154"; +} +.fa-dollar:before, +.fa-usd:before { + content: "\f155"; +} +.fa-rupee:before, +.fa-inr:before { + content: "\f156"; +} +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: "\f157"; +} +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: "\f158"; +} +.fa-won:before, +.fa-krw:before { + content: "\f159"; +} +.fa-bitcoin:before, +.fa-btc:before { + content: "\f15a"; +} +.fa-file:before { + content: "\f15b"; +} +.fa-file-text:before { + content: "\f15c"; +} +.fa-sort-alpha-asc:before { + content: "\f15d"; +} +.fa-sort-alpha-desc:before { + content: "\f15e"; +} +.fa-sort-amount-asc:before { + content: "\f160"; +} +.fa-sort-amount-desc:before { + content: "\f161"; +} +.fa-sort-numeric-asc:before { + content: "\f162"; +} +.fa-sort-numeric-desc:before { + content: "\f163"; +} +.fa-thumbs-up:before { + content: "\f164"; +} +.fa-thumbs-down:before { + content: "\f165"; +} +.fa-youtube-square:before { + content: "\f166"; +} +.fa-youtube:before { + content: "\f167"; +} +.fa-xing:before { + content: "\f168"; +} +.fa-xing-square:before { + content: "\f169"; +} +.fa-youtube-play:before { + content: "\f16a"; +} +.fa-dropbox:before { + content: "\f16b"; +} +.fa-stack-overflow:before { + content: "\f16c"; +} +.fa-instagram:before { + content: "\f16d"; +} +.fa-flickr:before { + content: "\f16e"; +} +.fa-adn:before { + content: "\f170"; +} +.fa-bitbucket:before { + content: "\f171"; +} +.fa-bitbucket-square:before { + content: "\f172"; +} +.fa-tumblr:before { + content: "\f173"; +} +.fa-tumblr-square:before { + content: "\f174"; +} +.fa-long-arrow-down:before { + content: "\f175"; +} +.fa-long-arrow-up:before { + content: "\f176"; +} +.fa-long-arrow-left:before { + content: "\f177"; +} +.fa-long-arrow-right:before { + content: "\f178"; +} +.fa-apple:before { + content: "\f179"; +} +.fa-windows:before { + content: "\f17a"; +} +.fa-android:before { + content: "\f17b"; +} +.fa-linux:before { + content: "\f17c"; +} +.fa-dribbble:before { + content: "\f17d"; +} +.fa-skype:before { + content: "\f17e"; +} +.fa-foursquare:before { + content: "\f180"; +} +.fa-trello:before { + content: "\f181"; +} +.fa-female:before { + content: "\f182"; +} +.fa-male:before { + content: "\f183"; +} +.fa-gittip:before, +.fa-gratipay:before { + content: "\f184"; +} +.fa-sun-o:before { + content: "\f185"; +} +.fa-moon-o:before { + content: "\f186"; +} +.fa-archive:before { + content: "\f187"; +} +.fa-bug:before { + content: "\f188"; +} +.fa-vk:before { + content: "\f189"; +} +.fa-weibo:before { + content: "\f18a"; +} +.fa-renren:before { + content: "\f18b"; +} +.fa-pagelines:before { + content: "\f18c"; +} +.fa-stack-exchange:before { + content: "\f18d"; +} +.fa-arrow-circle-o-right:before { + content: "\f18e"; +} +.fa-arrow-circle-o-left:before { + content: "\f190"; +} +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: "\f191"; +} +.fa-dot-circle-o:before { + content: "\f192"; +} +.fa-wheelchair:before { + content: "\f193"; +} +.fa-vimeo-square:before { + content: "\f194"; +} +.fa-turkish-lira:before, +.fa-try:before { + content: "\f195"; +} +.fa-plus-square-o:before { + content: "\f196"; +} +.fa-space-shuttle:before { + content: "\f197"; +} +.fa-slack:before { + content: "\f198"; +} +.fa-envelope-square:before { + content: "\f199"; +} +.fa-wordpress:before { + content: "\f19a"; +} +.fa-openid:before { + content: "\f19b"; +} +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: "\f19c"; +} +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: "\f19d"; +} +.fa-yahoo:before { + content: "\f19e"; +} +.fa-google:before { + content: "\f1a0"; +} +.fa-reddit:before { + content: "\f1a1"; +} +.fa-reddit-square:before { + content: "\f1a2"; +} +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-stumbleupon:before { + content: "\f1a4"; +} +.fa-delicious:before { + content: "\f1a5"; +} +.fa-digg:before { + content: "\f1a6"; +} +.fa-pied-piper:before { + content: "\f1a7"; +} +.fa-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-drupal:before { + content: "\f1a9"; +} +.fa-joomla:before { + content: "\f1aa"; +} +.fa-language:before { + content: "\f1ab"; +} +.fa-fax:before { + content: "\f1ac"; +} +.fa-building:before { + content: "\f1ad"; +} +.fa-child:before { + content: "\f1ae"; +} +.fa-paw:before { + content: "\f1b0"; +} +.fa-spoon:before { + content: "\f1b1"; +} +.fa-cube:before { + content: "\f1b2"; +} +.fa-cubes:before { + content: "\f1b3"; +} +.fa-behance:before { + content: "\f1b4"; +} +.fa-behance-square:before { + content: "\f1b5"; +} +.fa-steam:before { + content: "\f1b6"; +} +.fa-steam-square:before { + content: "\f1b7"; +} +.fa-recycle:before { + content: "\f1b8"; +} +.fa-automobile:before, +.fa-car:before { + content: "\f1b9"; +} +.fa-cab:before, +.fa-taxi:before { + content: "\f1ba"; +} +.fa-tree:before { + content: "\f1bb"; +} +.fa-spotify:before { + content: "\f1bc"; +} +.fa-deviantart:before { + content: "\f1bd"; +} +.fa-soundcloud:before { + content: "\f1be"; +} +.fa-database:before { + content: "\f1c0"; +} +.fa-file-pdf-o:before { + content: "\f1c1"; +} +.fa-file-word-o:before { + content: "\f1c2"; +} +.fa-file-excel-o:before { + content: "\f1c3"; +} +.fa-file-powerpoint-o:before { + content: "\f1c4"; +} +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: "\f1c5"; +} +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: "\f1c6"; +} +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: "\f1c7"; +} +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: "\f1c8"; +} +.fa-file-code-o:before { + content: "\f1c9"; +} +.fa-vine:before { + content: "\f1ca"; +} +.fa-codepen:before { + content: "\f1cb"; +} +.fa-jsfiddle:before { + content: "\f1cc"; +} +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: "\f1cd"; +} +.fa-circle-o-notch:before { + content: "\f1ce"; +} +.fa-ra:before, +.fa-rebel:before { + content: "\f1d0"; +} +.fa-ge:before, +.fa-empire:before { + content: "\f1d1"; +} +.fa-git-square:before { + content: "\f1d2"; +} +.fa-git:before { + content: "\f1d3"; +} +.fa-y-combinator-square:before, +.fa-yc-square:before, +.fa-hacker-news:before { + content: "\f1d4"; +} +.fa-tencent-weibo:before { + content: "\f1d5"; +} +.fa-qq:before { + content: "\f1d6"; +} +.fa-wechat:before, +.fa-weixin:before { + content: "\f1d7"; +} +.fa-send:before, +.fa-paper-plane:before { + content: "\f1d8"; +} +.fa-send-o:before, +.fa-paper-plane-o:before { + content: "\f1d9"; +} +.fa-history:before { + content: "\f1da"; +} +.fa-circle-thin:before { + content: "\f1db"; +} +.fa-header:before { + content: "\f1dc"; +} +.fa-paragraph:before { + content: "\f1dd"; +} +.fa-sliders:before { + content: "\f1de"; +} +.fa-share-alt:before { + content: "\f1e0"; +} +.fa-share-alt-square:before { + content: "\f1e1"; +} +.fa-bomb:before { + content: "\f1e2"; +} +.fa-soccer-ball-o:before, +.fa-futbol-o:before { + content: "\f1e3"; +} +.fa-tty:before { + content: "\f1e4"; +} +.fa-binoculars:before { + content: "\f1e5"; +} +.fa-plug:before { + content: "\f1e6"; +} +.fa-slideshare:before { + content: "\f1e7"; +} +.fa-twitch:before { + content: "\f1e8"; +} +.fa-yelp:before { + content: "\f1e9"; +} +.fa-newspaper-o:before { + content: "\f1ea"; +} +.fa-wifi:before { + content: "\f1eb"; +} +.fa-calculator:before { + content: "\f1ec"; +} +.fa-paypal:before { + content: "\f1ed"; +} +.fa-google-wallet:before { + content: "\f1ee"; +} +.fa-cc-visa:before { + content: "\f1f0"; +} +.fa-cc-mastercard:before { + content: "\f1f1"; +} +.fa-cc-discover:before { + content: "\f1f2"; +} +.fa-cc-amex:before { + content: "\f1f3"; +} +.fa-cc-paypal:before { + content: "\f1f4"; +} +.fa-cc-stripe:before { + content: "\f1f5"; +} +.fa-bell-slash:before { + content: "\f1f6"; +} +.fa-bell-slash-o:before { + content: "\f1f7"; +} +.fa-trash:before { + content: "\f1f8"; +} +.fa-copyright:before { + content: "\f1f9"; +} +.fa-at:before { + content: "\f1fa"; +} +.fa-eyedropper:before { + content: "\f1fb"; +} +.fa-paint-brush:before { + content: "\f1fc"; +} +.fa-birthday-cake:before { + content: "\f1fd"; +} +.fa-area-chart:before { + content: "\f1fe"; +} +.fa-pie-chart:before { + content: "\f200"; +} +.fa-line-chart:before { + content: "\f201"; +} +.fa-lastfm:before { + content: "\f202"; +} +.fa-lastfm-square:before { + content: "\f203"; +} +.fa-toggle-off:before { + content: "\f204"; +} +.fa-toggle-on:before { + content: "\f205"; +} +.fa-bicycle:before { + content: "\f206"; +} +.fa-bus:before { + content: "\f207"; +} +.fa-ioxhost:before { + content: "\f208"; +} +.fa-angellist:before { + content: "\f209"; +} +.fa-cc:before { + content: "\f20a"; +} +.fa-shekel:before, +.fa-sheqel:before, +.fa-ils:before { + content: "\f20b"; +} +.fa-meanpath:before { + content: "\f20c"; +} +.fa-buysellads:before { + content: "\f20d"; +} +.fa-connectdevelop:before { + content: "\f20e"; +} +.fa-dashcube:before { + content: "\f210"; +} +.fa-forumbee:before { + content: "\f211"; +} +.fa-leanpub:before { + content: "\f212"; +} +.fa-sellsy:before { + content: "\f213"; +} +.fa-shirtsinbulk:before { + content: "\f214"; +} +.fa-simplybuilt:before { + content: "\f215"; +} +.fa-skyatlas:before { + content: "\f216"; +} +.fa-cart-plus:before { + content: "\f217"; +} +.fa-cart-arrow-down:before { + content: "\f218"; +} +.fa-diamond:before { + content: "\f219"; +} +.fa-ship:before { + content: "\f21a"; +} +.fa-user-secret:before { + content: "\f21b"; +} +.fa-motorcycle:before { + content: "\f21c"; +} +.fa-street-view:before { + content: "\f21d"; +} +.fa-heartbeat:before { + content: "\f21e"; +} +.fa-venus:before { + content: "\f221"; +} +.fa-mars:before { + content: "\f222"; +} +.fa-mercury:before { + content: "\f223"; +} +.fa-intersex:before, +.fa-transgender:before { + content: "\f224"; +} +.fa-transgender-alt:before { + content: "\f225"; +} +.fa-venus-double:before { + content: "\f226"; +} +.fa-mars-double:before { + content: "\f227"; +} +.fa-venus-mars:before { + content: "\f228"; +} +.fa-mars-stroke:before { + content: "\f229"; +} +.fa-mars-stroke-v:before { + content: "\f22a"; +} +.fa-mars-stroke-h:before { + content: "\f22b"; +} +.fa-neuter:before { + content: "\f22c"; +} +.fa-genderless:before { + content: "\f22d"; +} +.fa-facebook-official:before { + content: "\f230"; +} +.fa-pinterest-p:before { + content: "\f231"; +} +.fa-whatsapp:before { + content: "\f232"; +} +.fa-server:before { + content: "\f233"; +} +.fa-user-plus:before { + content: "\f234"; +} +.fa-user-times:before { + content: "\f235"; +} +.fa-hotel:before, +.fa-bed:before { + content: "\f236"; +} +.fa-viacoin:before { + content: "\f237"; +} +.fa-train:before { + content: "\f238"; +} +.fa-subway:before { + content: "\f239"; +} +.fa-medium:before { + content: "\f23a"; +} +.fa-yc:before, +.fa-y-combinator:before { + content: "\f23b"; +} +.fa-optin-monster:before { + content: "\f23c"; +} +.fa-opencart:before { + content: "\f23d"; +} +.fa-expeditedssl:before { + content: "\f23e"; +} +.fa-battery-4:before, +.fa-battery-full:before { + content: "\f240"; +} +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: "\f241"; +} +.fa-battery-2:before, +.fa-battery-half:before { + content: "\f242"; +} +.fa-battery-1:before, +.fa-battery-quarter:before { + content: "\f243"; +} +.fa-battery-0:before, +.fa-battery-empty:before { + content: "\f244"; +} +.fa-mouse-pointer:before { + content: "\f245"; +} +.fa-i-cursor:before { + content: "\f246"; +} +.fa-object-group:before { + content: "\f247"; +} +.fa-object-ungroup:before { + content: "\f248"; +} +.fa-sticky-note:before { + content: "\f249"; +} +.fa-sticky-note-o:before { + content: "\f24a"; +} +.fa-cc-jcb:before { + content: "\f24b"; +} +.fa-cc-diners-club:before { + content: "\f24c"; +} +.fa-clone:before { + content: "\f24d"; +} +.fa-balance-scale:before { + content: "\f24e"; +} +.fa-hourglass-o:before { + content: "\f250"; +} +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: "\f251"; +} +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: "\f252"; +} +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: "\f253"; +} +.fa-hourglass:before { + content: "\f254"; +} +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: "\f255"; +} +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: "\f256"; +} +.fa-hand-scissors-o:before { + content: "\f257"; +} +.fa-hand-lizard-o:before { + content: "\f258"; +} +.fa-hand-spock-o:before { + content: "\f259"; +} +.fa-hand-pointer-o:before { + content: "\f25a"; +} +.fa-hand-peace-o:before { + content: "\f25b"; +} +.fa-trademark:before { + content: "\f25c"; +} +.fa-registered:before { + content: "\f25d"; +} +.fa-creative-commons:before { + content: "\f25e"; +} +.fa-gg:before { + content: "\f260"; +} +.fa-gg-circle:before { + content: "\f261"; +} +.fa-tripadvisor:before { + content: "\f262"; +} +.fa-odnoklassniki:before { + content: "\f263"; +} +.fa-odnoklassniki-square:before { + content: "\f264"; +} +.fa-get-pocket:before { + content: "\f265"; +} +.fa-wikipedia-w:before { + content: "\f266"; +} +.fa-safari:before { + content: "\f267"; +} +.fa-chrome:before { + content: "\f268"; +} +.fa-firefox:before { + content: "\f269"; +} +.fa-opera:before { + content: "\f26a"; +} +.fa-internet-explorer:before { + content: "\f26b"; +} +.fa-tv:before, +.fa-television:before { + content: "\f26c"; +} +.fa-contao:before { + content: "\f26d"; +} +.fa-500px:before { + content: "\f26e"; +} +.fa-amazon:before { + content: "\f270"; +} +.fa-calendar-plus-o:before { + content: "\f271"; +} +.fa-calendar-minus-o:before { + content: "\f272"; +} +.fa-calendar-times-o:before { + content: "\f273"; +} +.fa-calendar-check-o:before { + content: "\f274"; +} +.fa-industry:before { + content: "\f275"; +} +.fa-map-pin:before { + content: "\f276"; +} +.fa-map-signs:before { + content: "\f277"; +} +.fa-map-o:before { + content: "\f278"; +} +.fa-map:before { + content: "\f279"; +} +.fa-commenting:before { + content: "\f27a"; +} +.fa-commenting-o:before { + content: "\f27b"; +} +.fa-houzz:before { + content: "\f27c"; +} +.fa-vimeo:before { + content: "\f27d"; +} +.fa-black-tie:before { + content: "\f27e"; +} +.fa-fonticons:before { + content: "\f280"; +} +.fa-reddit-alien:before { + content: "\f281"; +} +.fa-edge:before { + content: "\f282"; +} +.fa-credit-card-alt:before { + content: "\f283"; +} +.fa-codiepie:before { + content: "\f284"; +} +.fa-modx:before { + content: "\f285"; +} +.fa-fort-awesome:before { + content: "\f286"; +} +.fa-usb:before { + content: "\f287"; +} +.fa-product-hunt:before { + content: "\f288"; +} +.fa-mixcloud:before { + content: "\f289"; +} +.fa-scribd:before { + content: "\f28a"; +} +.fa-pause-circle:before { + content: "\f28b"; +} +.fa-pause-circle-o:before { + content: "\f28c"; +} +.fa-stop-circle:before { + content: "\f28d"; +} +.fa-stop-circle-o:before { + content: "\f28e"; +} +.fa-shopping-bag:before { + content: "\f290"; +} +.fa-shopping-basket:before { + content: "\f291"; +} +.fa-hashtag:before { + content: "\f292"; +} +.fa-bluetooth:before { + content: "\f293"; +} +.fa-bluetooth-b:before { + content: "\f294"; +} +.fa-percent:before { + content: "\f295"; +} diff --git a/themes/fruitful/css/font-awesome.min.css b/themes/fruitful/css/font-awesome.min.css new file mode 100644 index 0000000..acce2ef --- /dev/null +++ b/themes/fruitful/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.5.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('fonts/fontawesome-webfont.eot?v=4.5.0');src:url('fonts/fontawesome-webfont.eot?#iefix&v=4.5.0') format('embedded-opentype'),url('fonts/fontawesome-webfont.woff2?v=4.5.0') format('woff2'),url('fonts/fontawesome-webfont.woff?v=4.5.0') format('woff'),url('fonts/fontawesome-webfont.ttf?v=4.5.0') format('truetype'),url('fonts/fontawesome-webfont.svg?v=4.5.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"} diff --git a/themes/fruitful/css/fonts/FontAwesome.otf b/themes/fruitful/css/fonts/FontAwesome.otf new file mode 100644 index 0000000..3ed7f8b Binary files /dev/null and b/themes/fruitful/css/fonts/FontAwesome.otf differ diff --git a/themes/fruitful/css/fonts/fontawesome-webfont.eot b/themes/fruitful/css/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000..9b6afae Binary files /dev/null and b/themes/fruitful/css/fonts/fontawesome-webfont.eot differ diff --git a/themes/fruitful/css/fonts/fontawesome-webfont.svg b/themes/fruitful/css/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..d05688e --- /dev/null +++ b/themes/fruitful/css/fonts/fontawesome-webfont.svg @@ -0,0 +1,655 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/themes/fruitful/css/fonts/fontawesome-webfont.ttf b/themes/fruitful/css/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..26dea79 Binary files /dev/null and b/themes/fruitful/css/fonts/fontawesome-webfont.ttf differ diff --git a/themes/fruitful/css/fonts/fontawesome-webfont.woff b/themes/fruitful/css/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..dc35ce3 Binary files /dev/null and b/themes/fruitful/css/fonts/fontawesome-webfont.woff differ diff --git a/themes/fruitful/css/fonts/fontawesome-webfont.woff2 b/themes/fruitful/css/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000..500e517 Binary files /dev/null and b/themes/fruitful/css/fonts/fontawesome-webfont.woff2 differ diff --git a/themes/fruitful/demo-content/dummy_data.xml b/themes/fruitful/demo-content/dummy_data.xml new file mode 100644 index 0000000..67da47a --- /dev/null +++ b/themes/fruitful/demo-content/dummy_data.xml @@ -0,0 +1,5920 @@ + + + + + + + + + + + + + + + + + + + + + Fruitful theme + http://themes.fruitfulcode.com/fruitful + Just another WordPress site + Mon, 11 Jan 2016 10:19:42 +0000 + en-US + 1.2 + http://themes.fruitfulcode.com/fruitful + http://themes.fruitfulcode.com/fruitful + + 1 + + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 30 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 + 40 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 49 + 1 + 50 + 51 + 52 + 53 + 54 + 55 + 56 + 57 + 58 + 59 + 60 + 61 + 62 + 63 + 64 + 65 + 66 + 67 + 68 + 69 + 70 + 71 + 72 + 73 + 74 + 75 + 76 + 77 + 78 + 79 + 80 + 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 + 89 + 90 + 91 + 92 + 93 + 94 + 95 + 96 + 97 + 98 + 99 + 100 + 101 + 102 + 103 + 104 + 105 + 106 + 107 + 108 + 109 + 110 + 111 + 112 + 113 + 114 + 115 + 116 + 117 + 118 + 119 + 120 + 121 + 122 + 123 + 124 + 125 + 126 + 127 + 128 + 129 + 130 + 131 + 132 + 133 + 134 + 135 + 136 + 137 + 138 + 139 + 140 + 141 + 142 + 143 + 144 + 145 + 146 + 147 + 148 + 149 + 150 + 151 + 152 + 153 + 154 + 155 + 156 + 157 + 158 + 159 + 160 + 161 + 162 + 163 + 164 + 165 + 166 + 167 + 168 + 169 + 170 + 171 + 172 + 173 + 174 + 175 + 176 + 177nav_menu + 178nav_menu + 179nav_menu + 180nav_menu + 181nav_menu + + https://wordpress.org/?v=4.4.1 + + + canola2 + http://themes.fruitfulcode.com/fruitful/2010/09/10/post-format-gallery/canola2/#main + Mon, 10 Jan 2011 13:17:54 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2011/01/canola2.jpg + + + + 611 + + + + + + + 555 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + dsc20050315_145007_132 + http://themes.fruitfulcode.com/fruitful/2010/09/10/post-format-gallery/dsc20050315_145007_132/#main + Mon, 10 Jan 2011 13:19:10 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2011/01/dsc20050315_145007_132.jpg + + + + 613 + + + + + + + 555 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + dsc20050727_091048_222 + http://themes.fruitfulcode.com/fruitful/2010/09/10/post-format-gallery/dsc20050727_091048_222/#main + Mon, 10 Jan 2011 13:20:37 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2011/01/dsc20050727_091048_222.jpg + + + + 616 + + + + + + + 555 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + dsc20050813_115856_52 + http://themes.fruitfulcode.com/fruitful/2010/09/10/post-format-gallery/dsc20050813_115856_52/#main + Mon, 10 Jan 2011 13:20:57 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2011/01/dsc20050813_115856_52.jpg + + + + 617 + + + + + + + 555 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + Bell on Wharf + http://themes.fruitfulcode.com/fruitful/2010/09/10/post-format-gallery/100_5478/#main + Fri, 15 Jul 2011 21:34:50 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2011/07/100_5478.jpg + + + + 754 + + + + + + + 555 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + Golden Gate Bridge + http://themes.fruitfulcode.com/fruitful/2010/09/10/post-format-gallery/100_5540/#main + Fri, 15 Jul 2011 21:35:55 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2011/07/100_5540.jpg + + + + 755 + + + + + + + 555 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + Sunburst Over River + http://themes.fruitfulcode.com/fruitful/2010/09/10/post-format-gallery/cep00032/#main + Fri, 15 Jul 2011 21:41:24 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2011/07/cep00032.jpg + + + + 756 + + + + + + + 555 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + Boardwalk + http://themes.fruitfulcode.com/fruitful/2010/09/10/post-format-gallery/dcp_2082/#main + Fri, 15 Jul 2011 21:41:27 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2011/07/dcp_2082.jpg + + + + 757 + + + + + + + 555 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + Yachtsody in Blue + http://themes.fruitfulcode.com/fruitful/2010/09/10/post-format-gallery/dsc03149/#main + Fri, 15 Jul 2011 21:41:33 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2011/07/dsc03149.jpg + + + + 758 + + + + + + + 555 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + Rain Ripples + http://themes.fruitfulcode.com/fruitful/2010/09/10/post-format-gallery/dsc04563/#main + Fri, 15 Jul 2011 21:41:37 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2011/07/dsc04563.jpg + + + + 759 + + + + + + + 555 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + Sydney Harbor Bridge + http://themes.fruitfulcode.com/fruitful/2010/09/10/post-format-gallery/dsc09114/#main + Fri, 15 Jul 2011 21:41:41 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2011/07/dsc09114.jpg + + + + 760 + + + + + + + 555 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + Wind Farm + http://themes.fruitfulcode.com/fruitful/2010/09/10/post-format-gallery/dsc20050102_192118_51/#main + Fri, 15 Jul 2011 21:41:42 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2011/07/dsc20050102_192118_51.jpg + + + + 761 + + + + + + + 555 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + Antique Farm Machinery + http://themes.fruitfulcode.com/fruitful/2010/09/10/post-format-gallery/dsc20051220_160808_102/#main + Fri, 15 Jul 2011 21:41:45 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2011/07/dsc20051220_160808_102.jpg + + + + 762 + + + + + + + 555 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + Orange Iris + http://themes.fruitfulcode.com/fruitful/2010/09/10/post-format-gallery/dsc02085/#main + Fri, 15 Jul 2011 21:46:27 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2011/07/dsc02085.jpg + + + + 763 + + + + + + + 555 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + Rusty Rail + http://themes.fruitfulcode.com/fruitful/2010/09/10/post-format-gallery/dsc20051220_173257_119/#main + Fri, 15 Jul 2011 21:47:17 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2011/07/dsc20051220_173257_119.jpg + + + + 764 + + + + + + + 555 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + Sea and Rocks + http://themes.fruitfulcode.com/fruitful/2010/09/10/post-format-gallery/dscn3316/#main + Fri, 15 Jul 2011 21:47:20 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2011/07/dscn3316.jpg + + + + 765 + + + + + + + 555 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + Big Sur + http://themes.fruitfulcode.com/fruitful/2010/09/10/post-format-gallery/michelle_049/#main + Fri, 15 Jul 2011 21:47:23 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2011/07/michelle_049.jpg + + + + 766 + + + + + + + 555 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + Windmill + http://themes.fruitfulcode.com/fruitful/2010/09/10/post-format-gallery/dcf-1-0/#main + Fri, 15 Jul 2011 21:47:26 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2011/07/windmill.jpg + + + + 767 + + + + + + + 555 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + Huatulco Coastline + http://themes.fruitfulcode.com/fruitful/2010/09/10/post-format-gallery/alas-i-have-found-my-shangri-la/#main + Fri, 15 Jul 2011 21:49:48 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2011/07/img_0513-1.jpg + + + + 768 + + + + + + + 555 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + Brazil Beach + http://themes.fruitfulcode.com/fruitful/2010/09/10/post-format-gallery/img_0747/#main + Fri, 15 Jul 2011 21:50:37 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2011/07/img_0747.jpg + + + + 769 + + + + + + + 555 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + Huatulco Coastline + http://themes.fruitfulcode.com/fruitful/2010/09/10/post-format-gallery/img_0767/#main + Fri, 15 Jul 2011 21:51:19 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2011/07/img_0767.jpg + + + + 770 + + + + + + + 555 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + Boat Barco Texture + http://themes.fruitfulcode.com/fruitful/2010/09/10/post-format-gallery/img_8399/#main + Fri, 15 Jul 2011 21:51:57 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2011/07/img_8399.jpg + + + + 771 + + + + + + + 555 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + dsc20040724_152504_532 + http://themes.fruitfulcode.com/fruitful/2010/09/10/post-format-gallery/dsc20040724_152504_532-2/#main + Mon, 04 Jun 2012 18:36:56 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2012/06/dsc20040724_152504_532.jpg + + + + 807 + + + + + + + 555 + 0 + + + 0 + + + + + + + + + + + + + + + + dsc20050604_133440_3421 + http://themes.fruitfulcode.com/fruitful/2010/09/10/post-format-gallery/dsc20050604_133440_3421/#main + Mon, 04 Jun 2012 18:58:15 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2012/06/dsc20050604_133440_34211.jpg + + + + 811 + + + + + + + 555 + 0 + + + 0 + + + + + + + + + + + + + + + + St. Louis Blues + http://themes.fruitfulcode.com/fruitful/2010/07/02/post-format-audio/originaldixielandjazzbandwithalbernard-stlouisblues/ + Thu, 05 Jul 2012 16:49:29 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2012/07/originaldixielandjazzbandwithalbernard-stlouisblues.mp3 + + + + 821 + + + + + + + 587 + 0 + + + 0 + + + + + + + + + + + + OLYMPUS DIGITAL CAMERA + http://themes.fruitfulcode.com/fruitful/olympus-digital-camera/ + Thu, 05 Jul 2012 18:07:34 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2012/07/manhattansummer.jpg + + + + 827 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + Image Alignment 580x300 + http://themes.fruitfulcode.com/fruitful/2013/01/10/markup-image-alignment/image-alignment-580x300/#main + Fri, 15 Mar 2013 00:44:50 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2013/03/image-alignment-580x300.jpg + + + + 967 + + + + + + + 1177 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + Image Alignment 150x150 + http://themes.fruitfulcode.com/fruitful/2013/01/10/markup-image-alignment/image-alignment-150x150/#main + Fri, 15 Mar 2013 00:44:49 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2013/03/image-alignment-150x150.jpg + + + + 968 + + + + + + + 1177 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + Horizontal Featured Image + http://themes.fruitfulcode.com/fruitful/2012/03/15/template-featured-image-horizontal/featured-image-horizontal-2/#main + Fri, 15 Mar 2013 20:40:38 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2013/03/featured-image-horizontal.jpg + + + + 1022 + + + + + + + 1011 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + I Am Worth Loving Wallpaper + http://themes.fruitfulcode.com/fruitful/2013/01/10/markup-image-alignment/soworthloving-wallpaper/#main + Thu, 14 Mar 2013 14:58:24 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2013/03/soworthloving-wallpaper.jpg + + + + 1023 + + + + + + + 1177 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + Image Alignment 300x200 + http://themes.fruitfulcode.com/fruitful/2013/01/10/markup-image-alignment/image-alignment-300x200/#main + Fri, 15 Mar 2013 00:44:49 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2013/03/image-alignment-300x200.jpg + + + + 1025 + + + + + + + 1177 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + Vertical Featured Image + http://themes.fruitfulcode.com/fruitful/2012/03/15/template-featured-image-vertical/featured-image-vertical-2/#main + Fri, 15 Mar 2013 20:41:09 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2013/03/featured-image-vertical.jpg + + + + 1027 + + + + + + + 1016 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + Image Alignment 1200x4002 + http://themes.fruitfulcode.com/fruitful/2013/01/10/markup-image-alignment/image-alignment-1200x4002/#main + Fri, 15 Mar 2013 00:44:50 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2013/03/image-alignment-1200x4002.jpg + + + + 1029 + + + + + + + 1177 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unicorn Wallpaper + http://themes.fruitfulcode.com/fruitful/2010/08/08/post-format-image/unicorn-wallpaper/#main + Fri, 15 Mar 2013 03:10:39 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2013/03/unicorn-wallpaper.jpg + + + + 1045 + + + + + + + 1158 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + triforce-wallpaper + http://themes.fruitfulcode.com/fruitful/2010/08/07/post-format-image-caption/triforce-wallpaper/#main + Tue, 09 Apr 2013 20:17:31 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2013/04/triforce-wallpaper.jpg + + + + 1628 + + + + + + + 1163 + 0 + + + 0 + + + + + + + + + + + + fruitful-grid + http://themes.fruitfulcode.com/fruitful/fruitful-grid/ + Thu, 19 Sep 2013 15:03:46 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2013/09/fruitful-grid.png + + + + 1847 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + s_5 + http://themes.fruitfulcode.com/fruitful/s_5/ + Mon, 30 Sep 2013 07:31:12 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2013/09/s_5.jpg + + + + 1858 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + s_4 + http://themes.fruitfulcode.com/fruitful/s_4/ + Mon, 30 Sep 2013 07:31:13 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2013/09/s_4.jpg + + + + 1859 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + s_3 + http://themes.fruitfulcode.com/fruitful/s_3/ + Mon, 30 Sep 2013 07:31:14 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2013/09/s_3.jpg + + + + 1860 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + s_2 + http://themes.fruitfulcode.com/fruitful/s_2/ + Mon, 30 Sep 2013 07:31:15 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2013/09/s_2.jpg + + + + 1861 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + s_1 + http://themes.fruitfulcode.com/fruitful/s_1/ + Mon, 30 Sep 2013 07:31:15 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2013/09/s_1.jpg + + + + 1862 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + Pages + http://themes.fruitfulcode.com/fruitful/2016/01/11/pages/ + Mon, 11 Jan 2016 10:16:39 +0000 + + http://themes.fruitfulcode.com/fruitful/2016/01/11/pages/ + + + + 1863 + + + + + + + 0 + 2 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Categories + http://themes.fruitfulcode.com/fruitful/2016/01/11/categories/ + Mon, 11 Jan 2016 10:16:40 +0000 + + http://themes.fruitfulcode.com/fruitful/2016/01/11/categories/ + + + + 1864 + + + + + + + 0 + 10 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <link>http://themes.fruitfulcode.com/fruitful/2016/01/11/1865/</link> + <pubDate>Mon, 11 Jan 2016 10:16:40 +0000</pubDate> + <dc:creator><![CDATA[admin]]></dc:creator> + <guid isPermaLink="false">http://themes.fruitfulcode.com/fruitful/2016/01/11/</guid> + <description/> + <content:encoded><![CDATA[Posts in this category test markup tags and styles.]]></content:encoded> + <excerpt:encoded><![CDATA[]]></excerpt:encoded> + <wp:post_id>1865</wp:post_id> + <wp:post_date><![CDATA[2016-01-11 10:16:40]]></wp:post_date> + <wp:post_date_gmt><![CDATA[2016-01-11 10:16:40]]></wp:post_date_gmt> + <wp:comment_status><![CDATA[closed]]></wp:comment_status> + <wp:ping_status><![CDATA[closed]]></wp:ping_status> + <wp:post_name><![CDATA[1865]]></wp:post_name> + <wp:status><![CDATA[publish]]></wp:status> + <wp:post_parent>0</wp:post_parent> + <wp:menu_order>21</wp:menu_order> + <wp:post_type><![CDATA[nav_menu_item]]></wp:post_type> + <wp:post_password><![CDATA[]]></wp:post_password> + <wp:is_sticky>0</wp:is_sticky> + <category domain="nav_menu" nicename="testing-menu"><![CDATA[Testing Menu]]></category> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_type]]></wp:meta_key> + <wp:meta_value><![CDATA[taxonomy]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_menu_item_parent]]></wp:meta_key> + <wp:meta_value><![CDATA[1864]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_object_id]]></wp:meta_key> + <wp:meta_value><![CDATA[29]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_object]]></wp:meta_key> + <wp:meta_value><![CDATA[category]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_target]]></wp:meta_key> + <wp:meta_value><![CDATA[]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_classes]]></wp:meta_key> + <wp:meta_value><![CDATA[a:1:{i:0;s:0:"";}]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_xfn]]></wp:meta_key> + <wp:meta_value><![CDATA[]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_url]]></wp:meta_key> + <wp:meta_value><![CDATA[]]></wp:meta_value> + </wp:postmeta> + </item> + <item> + <title/> + <link>http://themes.fruitfulcode.com/fruitful/2016/01/11/1866/</link> + <pubDate>Mon, 11 Jan 2016 10:16:40 +0000</pubDate> + <dc:creator><![CDATA[admin]]></dc:creator> + <guid isPermaLink="false">http://themes.fruitfulcode.com/fruitful/2016/01/11/</guid> + <description/> + <content:encoded><![CDATA[Posts in this category test post formats.]]></content:encoded> + <excerpt:encoded><![CDATA[]]></excerpt:encoded> + <wp:post_id>1866</wp:post_id> + <wp:post_date><![CDATA[2016-01-11 10:16:40]]></wp:post_date> + <wp:post_date_gmt><![CDATA[2016-01-11 10:16:40]]></wp:post_date_gmt> + <wp:comment_status><![CDATA[closed]]></wp:comment_status> + <wp:ping_status><![CDATA[closed]]></wp:ping_status> + <wp:post_name><![CDATA[1866]]></wp:post_name> + <wp:status><![CDATA[publish]]></wp:status> + <wp:post_parent>0</wp:post_parent> + <wp:menu_order>24</wp:menu_order> + <wp:post_type><![CDATA[nav_menu_item]]></wp:post_type> + <wp:post_password><![CDATA[]]></wp:post_password> + <wp:is_sticky>0</wp:is_sticky> + <category domain="nav_menu" nicename="testing-menu"><![CDATA[Testing Menu]]></category> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_type]]></wp:meta_key> + <wp:meta_value><![CDATA[taxonomy]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_menu_item_parent]]></wp:meta_key> + <wp:meta_value><![CDATA[1864]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_object_id]]></wp:meta_key> + <wp:meta_value><![CDATA[38]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_object]]></wp:meta_key> + <wp:meta_value><![CDATA[category]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_target]]></wp:meta_key> + <wp:meta_value><![CDATA[]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_classes]]></wp:meta_key> + <wp:meta_value><![CDATA[a:1:{i:0;s:0:"";}]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_xfn]]></wp:meta_key> + <wp:meta_value><![CDATA[]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_url]]></wp:meta_key> + <wp:meta_value><![CDATA[]]></wp:meta_value> + </wp:postmeta> + </item> + <item> + <title/> + <link>http://themes.fruitfulcode.com/fruitful/2016/01/11/1867/</link> + <pubDate>Mon, 11 Jan 2016 10:16:40 +0000</pubDate> + <dc:creator><![CDATA[admin]]></dc:creator> + <guid isPermaLink="false">http://themes.fruitfulcode.com/fruitful/2016/01/11/</guid> + <description/> + <content:encoded><![CDATA[Posts in this category test unpublished posts.]]></content:encoded> + <excerpt:encoded><![CDATA[]]></excerpt:encoded> + <wp:post_id>1867</wp:post_id> + <wp:post_date><![CDATA[2016-01-11 10:16:40]]></wp:post_date> + <wp:post_date_gmt><![CDATA[2016-01-11 10:16:40]]></wp:post_date_gmt> + <wp:comment_status><![CDATA[closed]]></wp:comment_status> + <wp:ping_status><![CDATA[closed]]></wp:ping_status> + <wp:post_name><![CDATA[1867]]></wp:post_name> + <wp:status><![CDATA[publish]]></wp:status> + <wp:post_parent>0</wp:post_parent> + <wp:menu_order>28</wp:menu_order> + <wp:post_type><![CDATA[nav_menu_item]]></wp:post_type> + <wp:post_password><![CDATA[]]></wp:post_password> + <wp:is_sticky>0</wp:is_sticky> + <category domain="nav_menu" nicename="testing-menu"><![CDATA[Testing Menu]]></category> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_type]]></wp:meta_key> + <wp:meta_value><![CDATA[taxonomy]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_menu_item_parent]]></wp:meta_key> + <wp:meta_value><![CDATA[1864]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_object_id]]></wp:meta_key> + <wp:meta_value><![CDATA[50]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_object]]></wp:meta_key> + <wp:meta_value><![CDATA[category]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_target]]></wp:meta_key> + <wp:meta_value><![CDATA[]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_classes]]></wp:meta_key> + <wp:meta_value><![CDATA[a:1:{i:0;s:0:"";}]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_xfn]]></wp:meta_key> + <wp:meta_value><![CDATA[]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_url]]></wp:meta_key> + <wp:meta_value><![CDATA[]]></wp:meta_value> + </wp:postmeta> + </item> + <item> + <title>Depth + http://themes.fruitfulcode.com/fruitful/2016/01/11/depth/ + Mon, 11 Jan 2016 10:16:40 +0000 + + http://themes.fruitfulcode.com/fruitful/2016/01/11/depth/ + + + + 1868 + + + + + + + 0 + 29 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Level 01 + http://themes.fruitfulcode.com/fruitful/2016/01/11/level-01/ + Mon, 11 Jan 2016 10:16:40 +0000 + + http://themes.fruitfulcode.com/fruitful/2016/01/11/level-01/ + + + + 1869 + + + + + + + 0 + 30 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Level 02 + http://themes.fruitfulcode.com/fruitful/2016/01/11/level-02/ + Mon, 11 Jan 2016 10:16:40 +0000 + + http://themes.fruitfulcode.com/fruitful/2016/01/11/level-02/ + + + + 1870 + + + + + + + 0 + 31 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Level 03 + http://themes.fruitfulcode.com/fruitful/2016/01/11/level-03/ + Mon, 11 Jan 2016 10:16:40 +0000 + + http://themes.fruitfulcode.com/fruitful/2016/01/11/level-03/ + + + + 1871 + + + + + + + 0 + 32 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Level 04 + http://themes.fruitfulcode.com/fruitful/2016/01/11/level-04/ + Mon, 11 Jan 2016 10:16:40 +0000 + + http://themes.fruitfulcode.com/fruitful/2016/01/11/level-04/ + + + + 1872 + + + + + + + 0 + 33 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Level 05 + http://themes.fruitfulcode.com/fruitful/2016/01/11/level-05/ + Mon, 11 Jan 2016 10:16:40 +0000 + + http://themes.fruitfulcode.com/fruitful/2016/01/11/level-05/ + + + + 1873 + + + + + + + 0 + 34 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Level 06 + http://themes.fruitfulcode.com/fruitful/2016/01/11/level-06/ + Mon, 11 Jan 2016 10:16:40 +0000 + + http://themes.fruitfulcode.com/fruitful/2016/01/11/level-06/ + + + + 1874 + + + + + + + 0 + 35 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Level 07 + http://themes.fruitfulcode.com/fruitful/2016/01/11/level-07/ + Mon, 11 Jan 2016 10:16:40 +0000 + + http://themes.fruitfulcode.com/fruitful/2016/01/11/level-07/ + + + + 1875 + + + + + + + 0 + 36 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Level 08 + http://themes.fruitfulcode.com/fruitful/2016/01/11/level-08/ + Mon, 11 Jan 2016 10:16:40 +0000 + + http://themes.fruitfulcode.com/fruitful/2016/01/11/level-08/ + + + + 1876 + + + + + + + 0 + 37 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Level 09 + http://themes.fruitfulcode.com/fruitful/2016/01/11/level-09/ + Mon, 11 Jan 2016 10:16:41 +0000 + + http://themes.fruitfulcode.com/fruitful/2016/01/11/level-09/ + + + + 1877 + + + + + + + 0 + 38 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + img_title_1 + http://themes.fruitfulcode.com/fruitful/img_title_1/ + Tue, 05 Jan 2016 15:48:02 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2011/05/img_title_1.png + + + + 2642 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + img_title_2 + http://themes.fruitfulcode.com/fruitful/img_title_2/ + Tue, 05 Jan 2016 15:48:02 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2011/05/img_title_2.png + + + + 2643 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + img_title_3 + http://themes.fruitfulcode.com/fruitful/img_title_3/ + Tue, 05 Jan 2016 15:48:03 +0000 + + http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2011/05/img_title_3.png + + + + 2644 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + Level 10 + http://themes.fruitfulcode.com/fruitful/2016/01/11/level-10/ + Mon, 11 Jan 2016 10:16:41 +0000 + + http://themes.fruitfulcode.com/fruitful/2016/01/11/level-10/ + + + + 2645 + + + + + + + 0 + 39 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Home + http://themes.fruitfulcode.com/fruitful/front-page/ + Sat, 21 May 2011 01:49:43 +0000 + + http://wpthemetestdata.wordpress.com/?page_id=701 + + HELLO, WORLD! THIS IS FRUITFUL FREE WORDPRESS RESPONSIVE THEME [/fruitful_dbox] + +[fruitful_ibox_row] +[fruitful_ibox column="ffs-three-one" title="SIMPLE DESIGN" image="http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2011/05/img_title_1.png"]We designed and developed simple wordpress theme with useful theme options panel. We leave light styles for more easy and comfortable customizations.[/fruitful_ibox] +[fruitful_ibox column="ffs-three-one" title="THEME OPTIONS" image="http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2011/05/img_title_2.png"]In theme options you can choose layout type, upload logo, background, favicon, choose fonts, change color for menu, upload images to slider and much more.[/fruitful_ibox] +[fruitful_ibox column="ffs-three-one" title="2 TYPE OF LAYOUT" image="http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2011/05/img_title_3.png" last="true" ]Theme supported 2 types of html layout. Default responsive setting which adapt for mobile devices and static page with fixed width.[/fruitful_ibox] +[/fruitful_ibox_row]]]> + + 701 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Blog + http://themes.fruitfulcode.com/fruitful/blog/ + Sat, 21 May 2011 01:51:43 +0000 + + http://wpthemetestdata.wordpress.com/?page_id=703 + + + + 703 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + Edge Case: Nested And Mixed Lists + http://themes.fruitfulcode.com/fruitful/2009/05/15/edge-case-nested-and-mixed-lists/ + Fri, 15 May 2009 21:48:32 +0000 + + http://wptest.io/demo/?p=1000 + + +
      • Lists within lists do not break the ordered list numbering order
      • +
      • Your list styles go deep enough.
      • + +

        Ordered - Unordered - Ordered

        +
          +
        1. ordered item
        2. +
        3. ordered item +
            +
          • unordered
          • +
          • unordered +
              +
            1. ordered item
            2. +
            3. ordered item
            4. +
            +
          • +
          +
        4. +
        5. ordered item
        6. +
        7. ordered item
        8. +
        +

        Ordered - Unordered - Unordered

        +
          +
        1. ordered item
        2. +
        3. ordered item +
            +
          • unordered
          • +
          • unordered +
              +
            • unordered item
            • +
            • unordered item
            • +
            +
          • +
          +
        4. +
        5. ordered item
        6. +
        7. ordered item
        8. +
        +

        Unordered - Ordered - Unordered

        +
          +
        • unordered item
        • +
        • unordered item +
            +
          1. ordered
          2. +
          3. ordered +
              +
            • unordered item
            • +
            • unordered item
            • +
            +
          4. +
          +
        • +
        • unordered item
        • +
        • unordered item
        • +
        +

        Unordered - Unordered - Ordered

        +
          +
        • unordered item
        • +
        • unordered item +
            +
          • unordered
          • +
          • unordered +
              +
            1. ordered item
            2. +
            3. ordered item
            4. +
            +
          • +
          +
        • +
        • unordered item
        • +
        • unordered item
        • +
        ]]>
        + + 1000 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + Edge Case: Many Tags + http://themes.fruitfulcode.com/fruitful/2009/06/01/edge-case-many-tags/ + Mon, 01 Jun 2009 08:00:34 +0000 + + http://wpthemetestdata.wordpress.com/2007/11/24/many-tags/ + + + + 1151 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Edge Case: Many Categories + http://themes.fruitfulcode.com/fruitful/2009/07/02/edge-case-many-categories/ + Thu, 02 Jul 2009 09:00:03 +0000 + + http://wpthemetestdata.wordpress.com/2007/11/24/many-categories/ + + + + 1152 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Draft + http://themes.fruitfulcode.com/fruitful/?p=1164 + Tue, 09 Apr 2013 18:20:39 +0000 + + http://wptest.io/demo/?p=922 + + + + 1164 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + Edge Case: No Content + http://themes.fruitfulcode.com/fruitful/2009/08/06/edge-case-no-content/ + Thu, 06 Aug 2009 16:39:56 +0000 + + http://wpthemetestdata.wordpress.com/2007/09/04/this-post-has-no-body/ + + + + 1170 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + Advanced + http://themes.fruitfulcode.com/fruitful/2016/01/11/advanced/ + Mon, 11 Jan 2016 10:16:42 +0000 + + http://themes.fruitfulcode.com/fruitful/2016/01/11/advanced/ + + + + 2646 + + + + + + + 0 + 40 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Menu Description + http://themes.fruitfulcode.com/fruitful/2016/01/11/menu-description/ + Mon, 11 Jan 2016 10:16:42 +0000 + + http://themes.fruitfulcode.com/fruitful/2016/01/11/menu-description/ + + + + 2647 + + + + + + + 0 + 44 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Menu Title Attribute + http://themes.fruitfulcode.com/fruitful/2016/01/11/menu-title-attribute/ + Mon, 11 Jan 2016 10:16:42 +0000 + + http://themes.fruitfulcode.com/fruitful/2016/01/11/menu-title-attribute/ + + + + 2648 + + + + + + + 0 + 41 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Menu CSS Class + http://themes.fruitfulcode.com/fruitful/2016/01/11/menu-css-class/ + Mon, 11 Jan 2016 10:16:42 +0000 + + http://themes.fruitfulcode.com/fruitful/2016/01/11/menu-css-class/ + + + + 2649 + + + + + + + 0 + 42 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + New Window / Tab + http://themes.fruitfulcode.com/fruitful/2016/01/11/new-window-tab/ + Mon, 11 Jan 2016 10:16:42 +0000 + + http://themes.fruitfulcode.com/fruitful/2016/01/11/new-window-tab/ + + + + 2650 + + + + + + + 0 + 43 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Home + http://themes.fruitfulcode.com/fruitful/2016/01/11/home/ + Mon, 11 Jan 2016 10:16:42 +0000 + + http://themes.fruitfulcode.com/fruitful/2016/01/11/home/ + + + + 2651 + + + + + + + 0 + 1 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Documentation + http://themes.fruitfulcode.com/fruitful/2016/01/11/documentation/ + Mon, 11 Jan 2016 10:16:43 +0000 + + http://themes.fruitfulcode.com/fruitful/2016/01/11/documentation/ + + + + 2652 + + + + + + + 0 + 3 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + How to install demo? + http://themes.fruitfulcode.com/fruitful/2016/01/11/how-to-install-demo/ + Mon, 11 Jan 2016 10:16:43 +0000 + + http://themes.fruitfulcode.com/fruitful/2016/01/11/how-to-install-demo/ + + + + 2653 + + + + + + + 0 + 4 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Contact Support + http://themes.fruitfulcode.com/fruitful/2016/01/11/contact-support/ + Mon, 11 Jan 2016 10:16:43 +0000 + + http://themes.fruitfulcode.com/fruitful/2016/01/11/contact-support/ + + + + 2654 + + + + + + + 0 + 6 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Help Center + http://themes.fruitfulcode.com/fruitful/2016/01/11/help-center/ + Mon, 11 Jan 2016 10:16:43 +0000 + + http://themes.fruitfulcode.com/fruitful/2016/01/11/help-center/ + + + + 2655 + + + + + + + 0 + 5 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <link>http://themes.fruitfulcode.com/fruitful/2016/01/11/2656/</link> + <pubDate>Mon, 11 Jan 2016 10:16:43 +0000</pubDate> + <dc:creator><![CDATA[admin]]></dc:creator> + <guid isPermaLink="false">http://themes.fruitfulcode.com/fruitful/2016/01/11/</guid> + <description/> + <content:encoded><![CDATA[ ]]></content:encoded> + <excerpt:encoded><![CDATA[]]></excerpt:encoded> + <wp:post_id>2656</wp:post_id> + <wp:post_date><![CDATA[2016-01-11 10:16:43]]></wp:post_date> + <wp:post_date_gmt><![CDATA[2016-01-11 10:16:43]]></wp:post_date_gmt> + <wp:comment_status><![CDATA[closed]]></wp:comment_status> + <wp:ping_status><![CDATA[closed]]></wp:ping_status> + <wp:post_name><![CDATA[2656]]></wp:post_name> + <wp:status><![CDATA[publish]]></wp:status> + <wp:post_parent>0</wp:post_parent> + <wp:menu_order>2</wp:menu_order> + <wp:post_type><![CDATA[nav_menu_item]]></wp:post_type> + <wp:post_password><![CDATA[]]></wp:post_password> + <wp:is_sticky>0</wp:is_sticky> + <category domain="nav_menu" nicename="short"><![CDATA[Short]]></category> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_type]]></wp:meta_key> + <wp:meta_value><![CDATA[post_type]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_menu_item_parent]]></wp:meta_key> + <wp:meta_value><![CDATA[0]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_object_id]]></wp:meta_key> + <wp:meta_value><![CDATA[703]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_object]]></wp:meta_key> + <wp:meta_value><![CDATA[page]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_target]]></wp:meta_key> + <wp:meta_value><![CDATA[]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_classes]]></wp:meta_key> + <wp:meta_value><![CDATA[a:1:{i:0;s:0:"";}]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_xfn]]></wp:meta_key> + <wp:meta_value><![CDATA[]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_url]]></wp:meta_key> + <wp:meta_value><![CDATA[]]></wp:meta_value> + </wp:postmeta> + </item> + <item> + <title/> + <link>http://themes.fruitfulcode.com/fruitful/2016/01/11/2657/</link> + <pubDate>Mon, 11 Jan 2016 10:16:43 +0000</pubDate> + <dc:creator><![CDATA[admin]]></dc:creator> + <guid isPermaLink="false">http://themes.fruitfulcode.com/fruitful/2016/01/11/</guid> + <description/> + <content:encoded><![CDATA[ ]]></content:encoded> + <excerpt:encoded><![CDATA[]]></excerpt:encoded> + <wp:post_id>2657</wp:post_id> + <wp:post_date><![CDATA[2016-01-11 10:16:43]]></wp:post_date> + <wp:post_date_gmt><![CDATA[2016-01-11 10:16:43]]></wp:post_date_gmt> + <wp:comment_status><![CDATA[closed]]></wp:comment_status> + <wp:ping_status><![CDATA[closed]]></wp:ping_status> + <wp:post_name><![CDATA[2657]]></wp:post_name> + <wp:status><![CDATA[publish]]></wp:status> + <wp:post_parent>0</wp:post_parent> + <wp:menu_order>2</wp:menu_order> + <wp:post_type><![CDATA[nav_menu_item]]></wp:post_type> + <wp:post_password><![CDATA[]]></wp:post_password> + <wp:is_sticky>0</wp:is_sticky> + <category domain="nav_menu" nicename="all-pages"><![CDATA[All Pages]]></category> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_type]]></wp:meta_key> + <wp:meta_value><![CDATA[post_type]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_menu_item_parent]]></wp:meta_key> + <wp:meta_value><![CDATA[0]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_object_id]]></wp:meta_key> + <wp:meta_value><![CDATA[703]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_object]]></wp:meta_key> + <wp:meta_value><![CDATA[page]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_target]]></wp:meta_key> + <wp:meta_value><![CDATA[]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_classes]]></wp:meta_key> + <wp:meta_value><![CDATA[a:1:{i:0;s:0:"";}]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_xfn]]></wp:meta_key> + <wp:meta_value><![CDATA[]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_url]]></wp:meta_key> + <wp:meta_value><![CDATA[]]></wp:meta_value> + </wp:postmeta> + </item> + <item> + <title/> + <link>http://themes.fruitfulcode.com/fruitful/2016/01/11/2658/</link> + <pubDate>Mon, 11 Jan 2016 10:16:43 +0000</pubDate> + <dc:creator><![CDATA[admin]]></dc:creator> + <guid isPermaLink="false">http://themes.fruitfulcode.com/fruitful/2016/01/11/</guid> + <description/> + <content:encoded><![CDATA[ ]]></content:encoded> + <excerpt:encoded><![CDATA[]]></excerpt:encoded> + <wp:post_id>2658</wp:post_id> + <wp:post_date><![CDATA[2016-01-11 10:16:43]]></wp:post_date> + <wp:post_date_gmt><![CDATA[2016-01-11 10:16:43]]></wp:post_date_gmt> + <wp:comment_status><![CDATA[closed]]></wp:comment_status> + <wp:ping_status><![CDATA[closed]]></wp:ping_status> + <wp:post_name><![CDATA[2658]]></wp:post_name> + <wp:status><![CDATA[publish]]></wp:status> + <wp:post_parent>0</wp:post_parent> + <wp:menu_order>1</wp:menu_order> + <wp:post_type><![CDATA[nav_menu_item]]></wp:post_type> + <wp:post_password><![CDATA[]]></wp:post_password> + <wp:is_sticky>0</wp:is_sticky> + <category domain="nav_menu" nicename="all-pages"><![CDATA[All Pages]]></category> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_type]]></wp:meta_key> + <wp:meta_value><![CDATA[post_type]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_menu_item_parent]]></wp:meta_key> + <wp:meta_value><![CDATA[0]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_object_id]]></wp:meta_key> + <wp:meta_value><![CDATA[701]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_object]]></wp:meta_key> + <wp:meta_value><![CDATA[page]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_target]]></wp:meta_key> + <wp:meta_value><![CDATA[]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_classes]]></wp:meta_key> + <wp:meta_value><![CDATA[a:1:{i:0;s:0:"";}]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_xfn]]></wp:meta_key> + <wp:meta_value><![CDATA[]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_menu_item_url]]></wp:meta_key> + <wp:meta_value><![CDATA[]]></wp:meta_value> + </wp:postmeta> + </item> + <item> + <title>Post Format: Gallery + http://themes.fruitfulcode.com/fruitful/2010/09/10/post-format-gallery/ + Fri, 10 Sep 2010 14:24:14 +0000 + + http://wpthemetestdata.wordpress.com/?p=555 + + + +You can use this page to test the Theme's handling of the[gallery] + +shortcode, including the columns parameter, from 1 to 9 columns. Themes are only required to support the default setting (3 columns), so this page is entirely optional. +

        One Column

        +[gallery columns="1"] +

        Two Columns

        +[gallery columns="2"] +

        Three Columns

        +[gallery columns="3"] +

        Four Columns

        +[gallery columns="4"] +

        Five Columns

        +[gallery columns="5"] +

        Six Columns

        +[gallery columns="6"] +

        Seven Columns

        +[gallery columns="7"] +

        Eight Columns

        +[gallery columns="8"] +

        Nine Columns

        +[gallery columns="9"]]]>
        + + 555 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + +
        + + Post Format: Aside + http://themes.fruitfulcode.com/fruitful/2010/05/09/post-format-aside/ + Sun, 09 May 2010 14:51:54 +0000 + + http://wpthemetestdata.wordpress.com/?p=559 + + + + 559 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + Post Format: Chat + http://themes.fruitfulcode.com/fruitful/2010/01/08/post-format-chat/ + Fri, 08 Jan 2010 14:59:31 +0000 + + http://wpthemetestdata.wordpress.com/?p=562 + + + + 562 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + Post Format: Link + http://themes.fruitfulcode.com/fruitful/2010/03/07/post-format-link/ + Sun, 07 Mar 2010 15:06:53 +0000 + + http://wpthemetestdata.wordpress.com/?p=565 + + The WordPress Theme Review Team Website]]> + + 565 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + Post Format: Image (Linked) + http://themes.fruitfulcode.com/fruitful/2010/08/06/post-format-image-linked/ + Fri, 06 Aug 2010 15:09:39 +0000 + + http://wpthemetestdata.wordpress.com/?p=568 + + chunk of resinous blackboy husk[/caption] +]]> + + 568 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + Post Format: Quote + http://themes.fruitfulcode.com/fruitful/2010/02/05/post-format-quote/ + Fri, 05 Feb 2010 15:13:15 +0000 + + http://wpthemetestdata.wordpress.com/?p=575 + + Only one thing is impossible for God: To find any sense in any copyright law on the planet. +Mark Twain]]> + + 575 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + Post Format: Status + http://themes.fruitfulcode.com/fruitful/2010/04/04/post-format-status/ + Sun, 04 Apr 2010 15:21:24 +0000 + + http://wpthemetestdata.wordpress.com/?p=579 + + + + 579 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + Post Format: Video (WordPress.tv) + http://themes.fruitfulcode.com/fruitful/2010/06/03/post-format-video-wordpresstv/ + Thu, 03 Jun 2010 15:25:58 +0000 + + http://wpthemetestdata.wordpress.com/?p=582 + + instructions in the Codex.]]> + + 582 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + +
        ]]> + + + +
        ]]> + + + +
        ]]> + + + +
        ]]> + + + + ]]> + + + + Post Format: Audio + http://themes.fruitfulcode.com/fruitful/2010/07/02/post-format-audio/ + Fri, 02 Jul 2010 15:36:44 +0000 + + http://wpthemetestdata.wordpress.com/?p=587 + + St. Louis Blues + +Audio shortcode: + +[audio http://themes.fruitfulcode.com/fruitful/wp-content/uploads/2012/07/originaldixielandjazzbandwithalbernard-stlouisblues.mp3]]]> + + 587 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + Post Format: Video (VideoPress) + http://themes.fruitfulcode.com/fruitful/2010/06/02/post-format-video-videopress/ + Wed, 02 Jun 2010 10:00:34 +0000 + + http://wptest.io/demo/?p=1005 + + VideoPress, especially as a video post format, usually provides some unique styling issues. + +You will need to install Jetpack or Slim Jetpack plugin to turn the shortcode into a viewable video.]]> + + 1005 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Template: Featured Image (Horizontal) + http://themes.fruitfulcode.com/fruitful/2012/03/15/template-featured-image-horizontal/ + Thu, 15 Mar 2012 22:15:12 +0000 + + http://wptest.io/demo/?p=1011 + + featured image, if the theme supports it. + +Non-square images can provide some unique styling issues. + +This post tests a horizontal featured image.]]> + + 1011 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Post Format: Gallery (Tiled) + http://themes.fruitfulcode.com/fruitful/2010/09/09/post-format-gallery-tiled/ + Fri, 10 Sep 2010 00:23:27 +0000 + + http://wptest.io/demo/?p=1031 + + Jetpack to test. + +[gallery type="rectangular" columns="4" ids="755,757,758,760,766,763" orderby="rand"] + +This is some text after the Tiled Gallery just to make sure that everything spaces nicely.]]> + + 1031 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Template: Comments + http://themes.fruitfulcode.com/fruitful/2012/01/03/template-comments/ + Tue, 03 Jan 2012 17:11:37 +0000 + + http://wpthemetestdata.wordpress.com/2007/09/04/comment-test/ + + +
      • Threaded comments up to 10 levels deep
      • +
      • Paginated comments (set Settings > Discussion > Break comments into pages to 5 top level comments per page)
      • +
      • Comment markup / formatting
      • +
      • Comment images
      • +
      • Comment videos
      • +
      • Author comments
      • +
      • Gravatars and default fallbacks
      • +]]>
        + + 1148 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + + + + + + + + + + 0 + 1 + + + + + + + + + +
        + + Post Format: Image + http://themes.fruitfulcode.com/fruitful/2010/08/08/post-format-image/ + Sun, 08 Aug 2010 12:00:39 +0000 + + http://wpthemetestdata.wordpress.com/?p=568 + +
        Unicorn Wallpaper + +I really love this wallpaper. It makes me think fondly of Jane.]]>
        + + 1158 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + +
        + + Post Format: Video (YouTube) + http://themes.fruitfulcode.com/fruitful/2010/06/02/post-format-video-youtube/ + Wed, 02 Jun 2010 09:00:58 +0000 + + http://wpthemetestdata.wordpress.com/?p=582 + + Eddy's Start An Uproar! EP. + +Learn more about WordPress Embeds.]]> + + 1161 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + ]]> + + + + Post Format: Image (Caption) + http://themes.fruitfulcode.com/fruitful/2010/08/07/post-format-image-caption/ + Sat, 07 Aug 2010 13:00:19 +0000 + + http://wpthemetestdata.wordpress.com/?p=674 + + It’s dangerous to go alone! Take this.[/caption]]]> + + 1163 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Template: Password Protected (the password is "enter") + http://themes.fruitfulcode.com/fruitful/2012/01/04/template-password-protected/ + Wed, 04 Jan 2012 16:38:05 +0000 + + http://wpthemetestdata.wordpress.com/2007/09/04/test-with-secret-password/ + + This content, comments, pingbacks, and trackbacks should not be visible until the password is entered.]]> + + 1168 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + <link>http://themes.fruitfulcode.com/fruitful/2009/09/05/edge-case-no-title/</link> + <pubDate>Sat, 05 Sep 2009 16:00:23 +0000</pubDate> + <dc:creator><![CDATA[admin]]></dc:creator> + <guid isPermaLink="false">http://wpthemetestdata.wordpress.com/2007/09/04/14/</guid> + <description/> + <content:encoded><![CDATA[This post has no title, but it still must link to the single post view somehow. + +This is typically done by placing the permalink on the post date.]]></content:encoded> + <excerpt:encoded><![CDATA[]]></excerpt:encoded> + <wp:post_id>1169</wp:post_id> + <wp:post_date><![CDATA[2009-09-05 09:00:23]]></wp:post_date> + <wp:post_date_gmt><![CDATA[2009-09-05 16:00:23]]></wp:post_date_gmt> + <wp:comment_status><![CDATA[closed]]></wp:comment_status> + <wp:ping_status><![CDATA[closed]]></wp:ping_status> + <wp:post_name><![CDATA[edge-case-no-title]]></wp:post_name> + <wp:status><![CDATA[publish]]></wp:status> + <wp:post_parent>0</wp:post_parent> + <wp:menu_order>0</wp:menu_order> + <wp:post_type><![CDATA[post]]></wp:post_type> + <wp:post_password><![CDATA[]]></wp:post_password> + <wp:is_sticky>0</wp:is_sticky> + <category domain="category" nicename="edge-case-2"><![CDATA[Edge Case]]></category> + <category domain="post_tag" nicename="edge-case"><![CDATA[edge case]]></category> + <category domain="post_tag" nicename="layout"><![CDATA[layout]]></category> + <category domain="post_tag" nicename="title"><![CDATA[title]]></category> + <wp:postmeta> + <wp:meta_key><![CDATA[_publicize_pending]]></wp:meta_key> + <wp:meta_value><![CDATA[1]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_wp_old_slug]]></wp:meta_key> + <wp:meta_value><![CDATA[14]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[original_post_id]]></wp:meta_key> + <wp:meta_value><![CDATA[133]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_wp_old_slug]]></wp:meta_key> + <wp:meta_value><![CDATA[133]]></wp:meta_value> + </wp:postmeta> + <wp:postmeta> + <wp:meta_key><![CDATA[_wp_old_slug]]></wp:meta_key> + <wp:meta_value><![CDATA[no-title-2]]></wp:meta_value> + </wp:postmeta> + </item> + <item> + <title>Pneumonoultramicroscopicsilicovolcanoconiosis + http://themes.fruitfulcode.com/fruitful/2009/10/05/title-should-not-overflow-the-content-area/ + Mon, 05 Oct 2009 19:00:59 +0000 + + http://wptest.io/demo/?p=877 + + Title should not overflow the content area + +The 45-letter word was coined to serve as the longest English word and is the longest word ever to appear in an English language dictionary. + +A few things to check for: +
          +
        • Non-breaking text in the title, content, and comments should have no adverse effects on layout or functionality.
        • +
        • Check the browser window / tab title.
        • +
        • If you are a plugin or widget developer, check that this text does not break anything.
        • +
        + +The following CSS properties will help you support non-breaking text. + +
        -ms-word-wrap: break-word;
        +word-wrap: break-word;
        + ]]>
        + + 1175 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + Media: Twitter Embeds + http://themes.fruitfulcode.com/fruitful/2011/03/15/media-twitter-embeds/ + Tue, 15 Mar 2011 22:47:16 +0000 + + http://wptest.io/demo/?p=1027 + + Twitter Embeds feature.]]> + + 1179 + + + + + + + 0 + 0 + + + 0 + + + + + + + +

        Really cool to read through and find so much awesomeness added to WordPress 3.6 while I was gone. I should take three weeks off more often.

        — Andrew Nacin (@nacin) April 3, 2013]]>
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        Really cool to read through and find so much awesomeness added to WordPress 3.6 while I was gone. I should take three weeks off more often.

        — Andrew Nacin (@nacin) April 3, 2013]]>
        +
        +
        + + Template: Featured Image (Vertical) + http://themes.fruitfulcode.com/fruitful/2012/03/15/template-featured-image-vertical/ + Thu, 15 Mar 2012 22:36:32 +0000 + + http://wptest.io/demo/?p=1016 + + featured image, if the theme supports it. + +Non-square images can provide some unique styling issues. + +This post tests a vertical featured image.]]> + + 1016 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Scheduled + http://themes.fruitfulcode.com/fruitful/1970/01/01/scheduled/ + Thu, 01 Jan 1970 00:00:00 +0000 + + http://wpthemetestdata.wordpress.com/?p=418 + + + + 1153 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + Markup: Title With Special Characters + http://themes.fruitfulcode.com/fruitful/2013/01/05/title-with-special-characters/ + Sat, 05 Jan 2013 07:00:20 +0000 + + http://wptest.io/demo/?p=867 + + +

        Latin Character Tests

        +This is a test to see if the fonts used in this theme support basic Latin characters. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        !"#$%&'()*
        +,-./01234
        56789:;>=<
        ?@ABCDEFGH
        IJKLMNOPQR
        STUVWXYZ[
        ]^_`abcdef
        ghijklmnop
        qrstuvwxyz
        {|}~
        ]]>
        + + 1174 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + Markup: Text Alignment + http://themes.fruitfulcode.com/fruitful/2013/01/09/markup-text-alignment/ + Wed, 09 Jan 2013 16:00:39 +0000 + + http://wptest.io/demo/?p=895 + + Default +This is a paragraph. It should not have any alignment of any kind. It should just flow like you would normally expect. Nothing fancy. Just straight up text, free flowing, with love. Completely neutral and not picking a side or sitting on the fence. It just is. It just freaking is. It likes where it is. It does not feel compelled to pick a side. Leave him be. It will just be better that way. Trust me. + +

        Left Align

        +

        This is a paragraph. It is left aligned. Because of this, it is a bit more liberal in it's views. It's favorite color is green. Left align tends to be more eco-friendly, but it provides no concrete evidence that it really is. Even though it likes share the wealth evenly, it leaves the equal distribution up to justified alignment.

        + +

        Center Align

        +

        This is a paragraph. It is center aligned. Center is, but nature, a fence sitter. A flip flopper. It has a difficult time making up its mind. It wants to pick a side. Really, it does. It has the best intentions, but it tends to complicate matters more than help. The best you can do is try to win it over and hope for the best. I hear center align does take bribes.

        + +

        Right Align

        +

        This is a paragraph. It is right aligned. It is a bit more conservative in it's views. It's prefers to not be told what to do or how to do it. Right align totally owns a slew of guns and loves to head to the range for some practice. Which is cool and all. I mean, it's a pretty good shot from at least four or five football fields away. Dead on. So boss.

        + +

        Justify Align

        +

        This is a paragraph. It is justify aligned. It gets really mad when people associate it with Justin Timberlake. Typically, justified is pretty straight laced. It likes everything to be in it's place and not all cattywampus like the rest of the aligns. I am not saying that makes it better than the rest of the aligns, but it does tend to put off more of an elitist attitude.

        ]]>
        + + 1176 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + Markup: Image Alignment + http://themes.fruitfulcode.com/fruitful/2013/01/10/markup-image-alignment/ + Fri, 11 Jan 2013 03:15:40 +0000 + + http://wptest.io/demo/?p=903 + + Welcome to image alignment! The best way to demonstrate the ebb and flow of the various image positioning options is to nestle them snuggly among an ocean of words. Grab a paddle and let's get started. + +On the topic of alignment, it should be noted that users can choose from the options of NoneLeftRight, and Center. In addition, they also get the options of ThumbnailMediumLarge & Fullsize. +

        Image Alignment 580x300

        +The image above happens to be centered. + +Image Alignment 150x150The rest of this paragraph is filler for the sake of seeing the text wrap around the 150x150 image, which is left aligned + +As you can see the should be some space above, below, and to the right of the image. The text should not be creeping on the image. Creeping is just not right. Images need breathing room too. Let them speak like you words. Let them do their jobs without any hassle from the text. In about one more sentence here, we'll see that the text moves from the right of the image down below the image in seamless transition. Again, letting the do it's thang. Mission accomplished! + +And now for a massively large image. It also has no alignment. + +Image Alignment 1200x400 + +The image above, though 1200px wide, should not overflow the content area. It should remain contained with no visible disruption to the flow of content. + +Image Alignment 300x200 + +And now we're going to shift things to the right align. Again, there should be plenty of room above, below, and to the left of the image. Just look at him there... Hey guy! Way to rock that right side. I don't care what the left aligned image says, you look great. Don't let anyone else tell you differently. + +In just a bit here, you should see the text start to wrap below the right aligned image and settle in nicely. There should still be plenty of room and everything should be sitting pretty. Yeah... Just like that. It never felt so good to be right. + +And just when you thought we were done, we're going to do them all over again with captions! + +[caption id="attachment_906" align="aligncenter" width="580"]Image Alignment 580x300 Look at 580x300 getting some caption love.[/caption] + +The image above happens to be centered. The caption also has a link in it, just to see if it does anything funky. + +[caption id="attachment_904" align="alignleft" width="150"]Image Alignment 150x150 Itty-bitty caption.[/caption] + +The rest of this paragraph is filler for the sake of seeing the text wrap around the 150x150 image, which is left aligned + +As you can see the should be some space above, below, and to the right of the image. The text should not be creeping on the image. Creeping is just not right. Images need breathing room too. Let them speak like you words. Let them do their jobs without any hassle from the text. In about one more sentence here, we'll see that the text moves from the right of the image down below the image in seamless transition. Again, letting the do it's thang. Mission accomplished! + +And now for a massively large image. It also has no alignment. + +[caption id="attachment_907" align="alignnone" width="1200"]Image Alignment 1200x400 Massive image comment for your eyeballs.[/caption] + +The image above, though 1200px wide, should not overflow the content area. It should remain contained with no visible disruption to the flow of content. + +[caption id="attachment_905" align="alignright" width="300"]Image Alignment 300x200 Feels good to be right all the time.[/caption] + +And now we're going to shift things to the right align. Again, there should be plenty of room above, below, and to the left of the image. Just look at him there... Hey guy! Way to rock that right side. I don't care what the left aligned image says, you look great. Don't let anyone else tell you differently. + +In just a bit here, you should see the text start to wrap below the right aligned image and settle in nicely. There should still be plenty of room and everything should be sitting pretty. Yeah... Just like that. It never felt so good to be right. + +And that's a wrap, yo! You survived the tumultuous waters of alignment. Image alignment achievement unlocked!]]>
        + + 1177 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + Markup: HTML Tags and Formatting + http://themes.fruitfulcode.com/fruitful/2013/01/11/markup-html-tags-and-formatting/ + Sat, 12 Jan 2013 03:22:19 +0000 + + http://wptest.io/demo/?p=919 + + Headings +

        Header one

        +

        Header two

        +

        Header three

        +

        Header four

        +
        Header five
        +
        Header six
        + +

        Blockquotes

        +Single line blockquote: +
        Stay hungry. Stay foolish.
        +Multi line blockquote with a cite reference: +
        People think focus means saying yes to the thing you've got to focus on. But that's not what it means at all. It means saying no to the hundred other good ideas that there are. You have to pick carefully. I'm actually as proud of the things we haven't done as the things I have done. Innovation is saying no to 1,000 things. Steve Jobs - Apple Worldwide Developers' Conference, 1997
        +

        Tables

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        EmployeeSalary
        John Doe$1Because that's all Steve Job' needed for a salary.
        Jane Doe$100KFor all the blogging he does.
        Fred Bloggs$100MPictures are worth a thousand words, right? So Tom x 1,000.
        Jane Bloggs$100BWith hair like that?! Enough said...
        +

        Definition Lists

        +
        Definition List Title
        Definition list division.
        Startup
        A startup company or startup is a company or temporary organization designed to search for a repeatable and scalable business model.
        #dowork
        Coined by Rob Dyrdek and his personal body guard Christopher "Big Black" Boykins, "Do Work" works as a self motivator, to motivating your friends.
        Do It Live
        I'll let Bill O'Reilly will explain this one.
        +

        Unordered Lists (Nested)

        +
          +
        • List item one +
            +
          • List item one +
              +
            • List item one
            • +
            • List item two
            • +
            • List item three
            • +
            • List item four
            • +
            +
          • +
          • List item two
          • +
          • List item three
          • +
          • List item four
          • +
          +
        • +
        • List item two
        • +
        • List item three
        • +
        • List item four
        • +
        +

        Ordered List (Nested)

        +
          +
        1. List item one +
            +
          1. List item one +
              +
            1. List item one
            2. +
            3. List item two
            4. +
            5. List item three
            6. +
            7. List item four
            8. +
            +
          2. +
          3. List item two
          4. +
          5. List item three
          6. +
          7. List item four
          8. +
          +
        2. +
        3. List item two
        4. +
        5. List item three
        6. +
        7. List item four
        8. +
        +

        HTML Tags

        +These supported tags come from the WordPress.com code FAQ. + +Address Tag + +
        1 Infinite Loop +Cupertino, CA 95014 +United States
        Anchor Tag (aka. Link) + +This is an example of a link. + +Abbreviation Tag + +The abbreviation srsly stands for "seriously". + +Acronym Tag (deprecated in HTML5) + +The acronym ftw stands for "for the win". + +Big Tag (deprecated in HTML5) + +These tests are a big deal, but this tag is no longer supported in HTML5. + +Cite Tag + +"Code is poetry." --Automattic + +Code Tag + +You will learn later on in these tests that word-wrap: break-word; will be your best friend. + +Delete Tag + +This tag will let you strikeout text, but this tag is no longer supported in HTML5 (use the <strike> instead). + +Emphasize Tag + +The emphasize tag should italicize text. + +Insert Tag + +This tag should denote inserted text. + +Keyboard Tag + +This scarsly known tag emulates keyboard text, which is usually styled like the <code> tag. + +Preformatted Tag + +This tag styles large blocks of code. +
        .post-title {
        +	margin: 0 0 5px;
        +	font-weight: bold;
        +	font-size: 38px;
        +	line-height: 1.2;
        +	and here's a line of some really, really, really, really long text, just to see how the PRE tag handles it and to find out how it overflows;
        +}
        +Quote Tag + +Developers, developers, developers... --Steve Ballmer + +Strike Tag (deprecated in HTML5) + +This tag shows strike-through text + +Strong Tag + +This tag shows bold text. + +Subscript Tag + +Getting our science styling on with H2O, which should push the "2" down. + +Superscript Tag + +Still sticking with science and Isaac Newton's E = MC2, which should lift the 2 up. + +Teletype Tag (deprecated in HTML5) + +This rarely used tag emulates teletype text, which is usually styled like the <code> tag. + +Variable Tag + +This allows you to denote variables.]]>
        + + 1178 + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + \ No newline at end of file diff --git a/themes/fruitful/fixed-style.css b/themes/fruitful/fixed-style.css new file mode 100644 index 0000000..70a2f80 --- /dev/null +++ b/themes/fruitful/fixed-style.css @@ -0,0 +1,2262 @@ +/* +Theme Name: Fruitful +Theme URI: https://github.com/fruitfulcode/fruitful +Author: fruitfulcode +Author URI: https://github.com/fruitfulcode/ +Description: Fruitful - Free WordPress responsive theme with powerful theme options panel and simple clean front end design. Ability to modify styles and options according to your needs. Two different layout types responsive and fixed. Easily upload logo, background, edit colors, header and menu positions, slider, fonts, social icons, footer, custom css and much more. Translated to Russian, German, Spanish, French, Vietnamese, RTL ready. Works perfect with WooCommerce, BuddyPress, WPML, Contact form 7. +Version: 2.7 +License: GNU General Public License v2 or later +License URI: http://www.gnu.org/licenses/gpl-2.0.html +Tags: white, orange, light, theme-options, responsive-layout, fixed-layout, custom-header, custom-background, custom-menu, custom-colors, custom-background, translation-ready, featured-images, full-width-template, one-column, right-sidebar, left-sidebar, editor-style +Text Domain: fruitful + +This theme, like WordPress, is licensed under the GPL. +Use it to make something cool, have fun, and share what you've learned with others. +*/ + +html, body, div, span, applet, object, iframe,h1, h2, h3, h4, h5, h6, p, blockquote, pre,a, abbr, acronym, address, big, cite, code,del, dfn, em, font, ins, kbd, q, s, samp,small, strike, strong, sub, sup, tt, var,dl, dt, dd, ol, ul, li,fieldset, form, label, legend,table, caption, tbody, tfoot, thead, tr, th, td { + border:0; + font-family:inherit; + font-size:100%; + font-style:inherit; + font-weight:inherit; + margin:0; + outline:0; + padding:0; + vertical-align:baseline; +} +html { + font-size:62.5%; + ms-text-size-adjust:100%; + overflow:auto; + webkit-text-size-adjust:100%; +} +body { + background:none no-repeat scroll 0 0 #fff; + font-size:14px; + line-height:14px; + text-rendering:optimizelegibility; + color:#333333; + overflow:hidden; + min-width:1024px; + font-family: Open Sans, Helvetica, Arial, sans-serif; +} +.page-container{ + padding-top:10px; + margin-bottom:10px; +} +/*Fix fancybox 2*/ +body.fancybox-lock { + overflow:visible !important; + margin-right:auto !important; +} +.container { + position:relative; + width:960px; + margin:0 auto; + padding:0; +} +.container .column, .container .columns { + float:left; + display:inline; + margin-left:10px; + margin-right:10px; +} +.row { + margin-bottom:20px; +} +/* Nested Column Classes */ +.column.alpha, .columns.alpha { + margin-left:0; + float:left; +} +.column.omega, .columns.omega { + margin-right:0; + float:right; +} +/* Base Grid */ +.container .one.column,.container .one.columns { + width:40px; +} +.container .two.columns { + width:100px; +} +.container .three.columns { + width:160px; +} +.container .four.columns { + width:220px; +} +.container .five.columns { + width:280px; +} +.container .six.columns { + width:340px; +} +.container .seven.columns { + width:400px; +} +.container .eight.columns { + width:460px; +} +.container .nine.columns { + width:520px; +} +.container .ten.columns { + width:580px; +} +.container .eleven.columns { + width:640px; +} +.container .twelve.columns { + width:700px; +} +.container .thirteen.columns { + width:760px; +} +.container .fourteen.columns { + width:820px; +} +.container .fifteen.columns { + width:880px; +} +.container .sixteen.columns { + width:940px; +} +.container .one-third.column { + width:300px; + margin-bottom:25px } +.container .two-thirds.column { + width:620px; +} +/* Offsets */ +.container .offset-by-one { + padding-left:60px; +} +.container .offset-by-two { + padding-left:120px; +} +.container .offset-by-three { + padding-left:180px; +} +.container .offset-by-four { + padding-left:240px; +} +.container .offset-by-five { + padding-left:300px; +} +.container .offset-by-six { + padding-left:360px; +} +.container .offset-by-seven { + padding-left:420px; +} +.container .offset-by-eight { + padding-left:480px; +} +.container .offset-by-nine { + padding-left:540px; +} +.container .offset-by-ten { + padding-left:600px; +} +.container .offset-by-eleven { + padding-left:660px; +} +.container .offset-by-twelve { + padding-left:720px; +} +.container .offset-by-thirteen { + padding-left:780px; +} +.container .offset-by-fourteen { + padding-left:840px; +} +.container .offset-by-fifteen { + padding-left:900px; +} + +/* #Clearing================================================== */ +/* Self Clearing Goodness */ +.container:after { + content:""; + display:block; + height:0; + clear:both; + visibility:hidden; +} +/* Use clearfix class on parent to clear nested columns, or wrap each row of columns in a
        */ +.clearfix:before,.clearfix:after,.row:before,.row:after { + content:''; + display:block; + overflow:hidden; + visibility:hidden; + width:0; + height:0; +} +.row:after,.clearfix:after { + clear:both; +} +.row,.clearfix { + zoom:1; +} +.container.after-head-container { + overflow:hidden +} +/* You can also use a
        to clear columns */ +.clear { + clear:both; + display:block; + overflow:hidden; + visibility:hidden; + width:0; + height:0; +} +article,aside,details,figcaption,figure,footer,header,nav,section { + display:block; +} +ol, ul { + list-style:none; +} +table { + border-collapse:separate; + border-spacing:0; +} +caption, th, td { + font-weight:normal; + text-align:left; +} +blockquote:before, blockquote:after, q:before, q:after { + content:""; +} +blockquote, q { + quotes:"" ""; +} +a:hover, a:active { + outline:0; +} +.entry-content img, .entry-summary img, .comment-content img, .widget img, .wp-caption { + max-width: 100%; +} +img.size-full{ + width:100%; + height:auto; +} + +a img, img { + border:0; +} +body,button,input,select,textarea { + font-size:14px; + line-height:1.5; + font-weight:normal; +} +textarea{ + max-width:100% +} +h1,h2,h3,h4,h5,h6 { + clear:both; + line-height:1.2em; +} +h1 { font-size: 27px;} +h2 { font-size: 34px;} +h3 { font-size: 18px;} +h4 { font-size: 17px;} +h5 { font-size: 14px;} +h6 { font-size: 12px;} + +.entry-content h1, +.entry-content h2, +.entry-content h3, +.entry-content h4, +.entry-content h5, +.entry-content h6, +.comment-content h1, +.comment-content h2, +.comment-content h3, +.comment-content h4, +.comment-content h5, +.comment-content h6{ + margin:10px 0; + line-height:28px +} +hr { + background-color:#ccc; + border:0; + height:1px; + margin-bottom:1.5em; +} +p { + margin: 1em 0 1em 0; +} +ul, ol { + margin:0 0 1.5em 3em; +} +ul { + list-style:disc; +} +ol { + list-style:decimal; +} +ul ul, ol ol, ul ol, ol ul { + margin-bottom:0; + margin-left:1.5em; +} +dt { + font-weight:bold; +} +dd { + margin:0 1.5em 1.5em; +} +b, strong { + font-weight:bold; +} +dfn, cite, em, i { + font-style:italic; +} +blockquote { + margin:0 1.5em; +} +address { + margin:0 0 1.5em; +} +pre { + background:#eee; + font-family:"Courier 10 Pitch", Courier, monospace; + font-size:1.5em; + font-size:15px; + line-height:1.6; + margin-bottom:1.6em; + max-width:100%; + overflow:auto; + padding:1.6em; +} +code, kbd, tt, var { + font:15px Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace; +} +abbr, acronym { + border-bottom:1px dotted #666; + cursor:help; +} +mark, ins { + background:#fff9c0; + text-decoration:none; +} +sup,sub { + font-size:75%; + height:0; + line-height:0; + position:relative; + vertical-align:baseline; +} +sup { + bottom:1ex; +} +sub { + top:.5ex; +} +small { + font-size:75%; +} +big { + font-size:125%; +} +figure { + margin:0; +} +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +legend { + border: 0; + padding: 0; + white-space: normal; +} +table { + margin:0 0 1.5em; + width:100%; +} +th { + text-transform:uppercase; +} +button,input,select,textarea { + font-size:100%; + margin:0; + vertical-align:baseline; + vertical-align:middle; +} +button, input { + line-height:normal; + overflow:visible; +} +button,html input[type="button"],input[type="reset"],input[type="submit"] { + background:#f15a23; + border:none; + font-family:"Open Sans"; + color: #fff; + text-transform:uppercase; + cursor:pointer; + font-size:1.4rem; + font-size:14px; + /* padding:0.62em .7em .5em; */ + padding: 10px 18px ; + /* webkit-appearance:button; */ + -webkit-appearance: none; + -webkit-transition: background 0.2s ease-in-out; + -moz-transition: background 0.2s ease-in-out; + -khtml-transition: background 0.2s ease-in-out; + -o-transition: background 0.2s ease-in-out; + -ms-transition: background 0.2s ease-in-out; + transition: background 0.2s ease-in-out; + line-height:100%; +} +@-moz-document url-prefix() { + .page #comments #respond input[type="submit"]{ + padding: 7px 18px !important; + } +} +#comments{ + width:100%; + float:left; +} +#page #comments #commentform input[type="submit"] { + max-height:none; +} +.single-post #comments #respond input[type="submit"]{ + line-height:12px; +} +button:hover,html input[type="button"]:hover,input[type="reset"]:hover,input[type="submit"]:hover { + background:#fe4502; +} +button:focus,html input[type="button"]:focus,input[type="reset"]:focus,input[type="submit"]:focus,button:active,html input[type="button"]:active,input[type="reset"]:active,input[type="submit"]:active { + background:#fe4502; +} +input[type="checkbox"],input[type="radio"] { + box-sizing:border-box; + padding:0; +} +input[type="search"] { + box-sizing:content-box; + moz-box-sizing:content-box; + webkit-appearance:textfield; + webkit-box-sizing:content-box; +} +input[type="search"]::-webkit-search-decoration { + webkit-appearance:none; +} +button::-moz-focus-inner,input::-moz-focus-inner { + border:0; + padding:0; +} +input[type=text],input[type=email],input[type=url],textarea { + border:1px solid #e5e5e5; + border-radius:3px; + color:#45494c; +} +input[type=text]:focus,input[type=email]:focus,textarea:focus { + color:#111; +} +input[type=text],input[type=email],input[type=url] { + padding:3px; +} + +#commentform label { + width: 75px; + float: left; +} +#commentform p{ + margin:0 0 1em; +} +#commentform p.form-submit{ + margin:0; +} +textarea { + overflow:auto; + padding-left:3px; + vertical-align:top; + width:98%; +} +a { + color:#333333; +} + +a:hover,a:focus,a:active { + color:#FF5D2A; +} + +.form-allowed-tags{ + display:none +} + +.alignleft { + display:inline; + float:left; + margin-right:1.5em; +} +.alignright { + display:inline; + float:right; + margin-left:1.5em; +} +.aligncenter { + clear:both; + display:block; + margin:0 auto; +} +.assistive-text { + clip:rect(1px 1px 1px 1px); + clip:rect(1px, 1px, 1px, 1px); + position:absolute !important; +} +#header_language_select{ + float:right; + height:100%; + margin: 10px 0 0; + padding:0; + z-index:8002; + clear:both; +} +#header_language_select ul{ + margin:0; + list-style:none; +} +#header_language_select ul li.current{ + position: relative; +} +#lang-select-block a{ + display:block; + color:#333333; + text-decoration:none; + text-transform:uppercase; + padding:7px 20px; + font-size:14px; +} +#lang-select-block .current a{ + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + -khtml-transition: all 0.3s ease-in-out; + -o-transition: all 0.3s ease-in-out; + -ms-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} +#lang-select-block li.current:hover>a{ + background:#F15A23; + color:#ffffff; +} +ul#lang-select-popup{ + box-shadow:0 3px 3px rgba(0,0,0,0.2); + background:#fff; + display:block; + float:left; + left:-26px; + moz-box-shadow:0 3px 3px rgba(0,0,0,0.2); + webkit-box-shadow:0 3px 3px rgba(0,0,0,0.2); + position:absolute; + top:35px; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -khtml-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + opacity:0; + margin:20px 0 0 0; + _margin: 0; /*IE6 only*/ + visibility:hidden; + z-index:8001; +} +#header_language_select ul li:hover > ul { + margin: 0; + opacity: 1; + visibility: visible; +} +#lang-select-popup a { + padding: 12px 15px; + text-transform: none; +} +.main-navigation { + display:block; + float:left; + margin:10px 0 0 0; + position:relative; +} +.main-navigation ul { + list-style:none; + margin:0; + padding-left:0; +} + +.main-navigation li:first-child { + margin:0; +} + +.main-navigation li { + margin:0 0 0 10px; +} + +.main-navigation li { + float:left; + position:relative; +} +.main-navigation a { + display:block; + text-decoration:none; + /*color:#333333;*/ + text-transform:uppercase; + padding:7px 10px; + font-size:14px; +} + +.main-navigation ul ul { + box-shadow:0 3px 3px rgba(0,0,0,0.2); + display:block; + float:left; + left:0; + moz-box-shadow:0 3px 3px rgba(0,0,0,0.2); + webkit-box-shadow:0 3px 3px rgba(0,0,0,0.2); + background:none #fff; + position:absolute; + top:35px; + z-index:8000; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -khtml-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + opacity:1; + margin:20px 0 0 0; + _margin: 0; /*IE6 only*/ + visibility:hidden; +} +.main-navigation ul ul ul { + left:100%; + top:0; + margin:0 0 0 20px; +} +.main-navigation ul ul a { + min-width:155px; + background:none ; + padding:12px 15px !important; + color:#333333 ; + text-transform:none; + font-size:14px; + box-shadow:none !important; + transition:background 0 linear !important; +} +.main-navigation ul ul li:first-child { + background:none; +} +.main-navigation ul ul li { + float:left; + width:100%; + margin:0 !important +} +.main-navigation ul li:hover > a { + background:none repeat scroll 0 0 #F15A23; + color:#fff; + padding:7px 10px; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + -khtml-transition: all 0.3s ease-in-out; + -o-transition: all 0.3s ease-in-out; + -ms-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + font-size:14px; +} +.main-navigation ul ul:hover > a { + color:#333 !important; + text-shadow:none !important; +} +.main-navigation ul ul a:hover, +.main-navigation ul ul li.current_page_item a, +.main-navigation ul ul li.current-menu-item a, +.main-navigation ul ul li.current-menu-parent a, +.main-navigation ul ul li.current-menu-ancestor a { + color:#333; + text-shadow:none !important; +} +.main-navigation ul li:hover > ul { + margin:0; + opacity:1; + visibility:visible; +} +.main-navigation ul li.current_page_item a, +.main-navigation ul li.current-menu-item a, +.main-navigation ul li.current-menu-parent a, +.main-navigation ul li.current_page_parent a, +.main-navigation ul li.current-menu-ancestor a { + background:none repeat scroll 0 0 #F15A23; + color:#fff; + padding:7px 10px; +} +.menu-toggle { + cursor:pointer; +} +.main-small-navigation .menu { + display:none; +} +#masthead, #colophon, #content { + float:left; + width:100%; + margin:10px 0; + min-height:60px; +} +#colophon{ + position:relative; + margin:0; + padding:0; +} +#colophon>.container{ + margin:0 auto; + border-top:1px solid #d6d6d6; + padding:20px 0; + position: relative; +} +#colophon .site-info { + font-size:12px; + float:left; + width:420px; + padding:8px 0; +} +#masthead .social-icon{ + float:right; + width: 100%; + margin-bottom: 10px; +} +#colophon .social-icon { + float:right +} +#masthead .social-icon a, +#colophon .social-icon a{ + width:30px; + height:30px; + opacity:1; + /* background-image:url(images/social.png); */ + background-repeat:no-repeat; +} +#masthead .social-icon a{ + float:right; +} +#colophon .social-icon a { + float:left; +} +#masthead .social-icon a.myspace, +#masthead .social-icon a.yelp, +#colophon .social-icon a.myspace, +#colophon .social-icon a.yelp { + background-image:url(images/social.png); +} +#masthead .social-icon a:hover, #masthead .social-icon a:active, +#colophon .social-icon a:hover, #colophon .social-icon a:active { + opacity:0.9 +} +#masthead .social-icon a.myspace, +#colophon .social-icon a.myspace { + background-position:-31px 0; +} +#masthead .social-icon a.yelp, +#colophon .social-icon a.yelp { + background-position:-435px 0; +} + +.social-icon>a>i{color:#fff;background: #333333; border-radius: 50%; padding: 5.5px; margin:1px; width: 17px; height: 17px; text-align: center; font-size: 17px;} +.social-icon a>.fa:before{font-size:17px;} +.social-icon a.soundcloud >i, .social-icon a.tripadvisor>i {padding:5.5px 0;width:28px;} +.social-icon a.facebook .fa:before {content: "\f09a";} +.social-icon a.twitter .fa:before {content: "\f099";} +.social-icon a.linkedin .fa:before {content: "\f0e1";} +.social-icon a.googleplus .fa:before {content: "\f0d5";} +.social-icon a.dribbble .fa:before {content: "\f17d";} +.social-icon a.skype .fa:before {content: "\f17e";} +.social-icon a.flickr .fa:before {content: "\f16e";} +.social-icon a.youtube .fa:before {content: "\f167";} +.social-icon a.vimeo .fa:before {content: "\f194";} +.social-icon a.rss .fa:before {content: "\f09e";} +.social-icon a.vk .fa:before {content: "\f189";} +.social-icon a.pinterest .fa:before {content: "\f0d2";} +.social-icon a.instagram .fa:before {content: "\f16d";} +.social-icon a.email .fa:before {content: "\f0e0";} +.social-icon a.github .fa:before {content: "\f09b";} +.social-icon a.tumblr .fa:before {content: "\f173";} +.social-icon a.soundcloud .fa:before {content: "\f1be";} +.social-icon a.tripadvisor .fa:before{content: "\f262";} + + +/* #masthead .social-icon a.twitter, +#colophon .social-icon a.twitter { + background-position:-280px 0; +} +#masthead .social-icon a.linkedin, +#colophon .social-icon a.linkedin { + background-position:-93px 0; +} +#masthead .social-icon a.myspace, +#colophon .social-icon a.myspace { + background-position:-31px 0; +} +#masthead .social-icon a.googleplus, +#colophon .social-icon a.googleplus { + background-position:-62px 0; +} +#masthead .social-icon a.dribbble, +#colophon .social-icon a.dribbble { + background-position:0 0; +} +#masthead .social-icon a.skype, +#colophon .social-icon a.skype { + background-position:-125px 0; +} +#masthead .social-icon a.flickr, +#colophon .social-icon a.flickr { + background-position:-187px 0; +} +#masthead .social-icon a.youtube, +#colophon .social-icon a.youtube { + background-position:-218px 0; +} +#masthead .social-icon a.rss, +#colophon .social-icon a.rss { + background-position:-155px 0; +} +#masthead .social-icon a.vk, +#colophon .social-icon a.vk { + background-position:-311px 0; +} +#masthead .social-icon a.pinterest, +#colophon .social-icon a.pinterest { + background-position:-373px 0; +} +#masthead .social-icon a.instagram, +#colophon .social-icon a.instagram { + background-position:-404px 0; +} +#masthead .social-icon a.yelp, +#colophon .social-icon a.yelp { + background-position:-435px 0; +} +#masthead .social-icon a.email, +#colophon .social-icon a.email { + background-position:-342px 0; +} */ + +.sticky {} +.hentry { + margin:0 0 1.5em; +} +.entry-meta { + clear:both; +} +.byline { + display:none; +} +.single .byline,.group-blog .byline { + display:inline; +} +.entry-content,.entry-summary { + margin:1.5em 0 0; +} +.page-links { + clear:both; + margin:0 0 1.5em; +} +.blog .format-aside .entry-title,.archive .format-aside .entry-title { + display:none; +} +.site-header img,.comment-content img,.widget img { + max-width:100%; +} +.site-header img,.entry-content img,img[class*="align"],img[class*="wp-image-"] { + height:auto; +} +.site-header img, img.size-full { + width:auto; + max-width: 100%; +} +.entry-content img.wp-smiley,.comment-content img.wp-smiley { + border:none; + margin-bottom:0; + margin-top:0; + padding:0; +} +.wp-caption { + margin-bottom: 15px; + max-width: 100%; +} + +.entry-thumbnail { + display: block; + float: left; + padding:0 4.4%; + width: 91.2%; + margin:20px 0 0; + height:auto; +} + +.entry-thumbnail .wp-post-image { + box-shadow: 0 3px 4px rgba(0, 0, 0, 0.5); + height: auto; + width: 100%; +} + +.format-audio .wp-audio-shortcode { + height: 30px !important; + margin: 20px 0; + max-width: 450px !important; +} + +.wp-caption.aligncenter,.wp-caption.alignleft,.wp-caption.alignright { + margin-bottom:1.5em; + margin-bottom:15px; +} +.wp-caption img { + box-shadow: 0 3px 4px rgba(0, 0, 0, 0.5); +} +.wp-caption-text { + text-align:center; +} +.wp-caption .wp-caption-text { + margin:0.8075em 0; +} +.site-content .gallery a img { + border:none; + height:auto; + max-width:90%; +} +.site-content .gallery dd { + margin:0; +} +.site-content .gallery-columns-4 .gallery-item { +} +.site-content .gallery-columns-4 .gallery-item img { +} +embed,iframe,object { + max-width:100%; + clear:both; +} +.site-content .site-navigation { + float:left; + margin:0 0 1.5em; + overflow:hidden; + width:100%; +} +.site-content .nav-previous a, +.site-content .nav-next a{ + text-decoration:none +} +.site-content .nav-previous { + float:left; + width:46%; +} +.site-content .nav-next { + float:right; + text-align:right; + width:46%; +} +.bypostauthor {} +.widget { + margin:0 0 1.5em; +} +#searchsubmit { + display:none; +} +.main-slider-container { + margin:10px 0; + overflow:hidden; + float:left; + width:100%; + position: relative; +} +.main-slider-container .flexslider{ + margin:0; +} +.flex-direction-nav a { + z-index:999 +} + +#page { + position:relative; + z-index:1; +} +#page .container .btm_header, #page .container .entry-header { + border:0; + margin: 0 0 10px; +} + +.search #page .container .entry-header { + border:0; +} + +#page-header .head-container{ + z-index:9; +} +#page-header .container header .header-hgroup.left-pos { + float:left; + margin: 0 15px 0 0; +} + +#page-header .container header .header-hgroup.center-pos { + float:right; + margin: 0; + width:100%; + display: inline-block; + text-align: center; +} + +#page-header .container header .header-hgroup.center-pos a { + text-align:center; + float:none; +} + +#page-header .container header .header-hgroup.right-pos { + float:right; + margin: 0 0 0 15px; +} + + +#page-header .container header .menu-wrapper.left-pos { + float:left; + display:inline-block; +} + +#page-header .container header .menu-wrapper.center-pos { + float:none; + display:block; + margin:0 auto; +} + +#page-header .container header .menu-wrapper.right-pos { + float:right; + display:inline-block; +} + +.page-header { + margin: 0 0 20px; +} + +#page .container .content p { + text-align:justify; +} +#page .description { + float:left; + width:100%; + min-height:50px; + margin:10px 0 20px 0 +} +#page .description .top_line, #page .description .btm_line { + float:left; + width:100%; + height:13px +} +#page .description .top_line { + background:url(images/top-descr-hr.png) no-repeat center 0 transparent; +} +#page .description .btm_line { + background:url(images/btm-descr-hr.png) no-repeat center 0 transparent; +} +#page .description .text { + width:90%; + margin:0 auto; +} +#page .info_box_area { + display: block; + float: left; + margin: 30px 0 25px; + width: 100%; +} +#page .container header.entry-header h1.entry-title, +#page .container header.archive-header h1.archive-title { + padding:0 0 20px 0 +} +#page .info_box_area .info_box .infobox_title { + margin:0 0 20px 0; + font-weight:300 +} +#page .info_box_area .info_box .info_box_text { + padding:0 25px; +} +#page .info_box_area .info_box img.icon { + display:block; + min-height:51px; + margin:0 auto 15px; + min-width:51px; +} +span.text_orange { + color:#ff5d2a +} +.select-menu { + display:none; + width:100%; + margin:0 0 25px 0; + cursor:pointer; + padding:6px; + background:#f9f9f9; + border:1px solid #e3e3e3; + color:#777; + float:left +} +header.post-header, .blog_post { + float:left; + width:100% +} +.post-content .entry-summary, +.post-content .entry-content{clear:both} +.blog .blog_post, +.category .blog_post, +.tag .blog_post, +.author .blog_post, +.archive .blog_post, +.search .blog_post{ + margin:0 0 55px +} +.blog .blog_post:last-of-type, +.category .blog_post:last-of-type, +.tag .blog_post:last-of-type, +.author .blog_post:last-of-type, +.search .blog_post:last-of-type{ + margin:0 0 35px +} +.blog_post .date_of_post { + position:relative; + left:1px; + width:54px; + height:54px; + color:#fff; + float:left; + margin:0; + background: #F15A23; +} +.blog_post .date_of_post .day_post { + font-size:20px; + text-align:center; + filter:none; + float:left; + width:100%; + font-weight:bold; + margin:5px 0 0 0 +} +.blog_post .date_of_post .month_post { + font-size:13px; + text-align:center; + float:left; + width:100%; + text-transform:uppercase; + line-height:18px; + position:relative; + top: -6px; +} +.blog .post-title, +.single .post-title{ + line-height:24px; +} +.blog_post .post-content { + float:left; + width:884px; + padding:0 0 18px 0; + border:1px solid #d6d6d6 +} +.eleven.columns .blog_post .post-content { + float:left; + width:584px; + padding:0 0 18px 0; + border:1px solid #d6d6d6 +} +.search .blog_post .post-content { + width:884px; +} +.blog_post .post-content .entry-content, +.blog_post .post-content .entry-summary{ + padding:20px 4.4% 10px; + margin-top:0 +} +.blog_post .post-content footer.entry-meta{ + margin:0; + padding:0 4.4% +} +.blog_post .post-content footer.entry-meta .comments-link, +.blog_post .post-content footer.entry-meta .author-link, +.blog_post .post-content footer.entry-meta .cat-links, +.blog_post .post-content footer.entry-meta .tag-links { + height:22px; + width:auto; + padding:0 0 2px 26px; + margin:0 10px 0 0 +} +.blog_post .post-content footer.entry-meta .edit-link{ + float:right; + width:auto; + padding:0; + margin:0; +} +.blog_post .post-content footer.entry-meta .comments-link { + background:url(images/comment.png) no-repeat 0 0 transparent; +} +.blog_post .post-content footer.entry-meta .author-link { + background:url(images/user.png) no-repeat 0 0 transparent; +} +.blog_post .post-content footer.entry-meta .cat-links { + background:url(images/category.png) no-repeat 0 3px transparent; +} +.blog_post .post-content footer.entry-meta .tag-links { + background:url(images/tag.png) no-repeat 0 3px transparent; +} +.blog_post .post-content footer.entry-meta .comments-link:hover,.blog_post .post-content footer.entry-meta .author-link:hover,.blog_post .post-content footer.entry-meta .cat-links:hover { + opacity:0.9 +} +.blog_post .post-content footer.entry-meta .comments-link a,.blog_post .post-content footer.entry-meta .author-link a,.blog_post .post-content footer.entry-meta .cat-links a,.blog_post .post-content footer.entry-meta .edit-link a { + text-decoration:none; +} +.more-link { + text-decoration:none; + font-size:13px +} + +body div.pp_pic_holder{z-index:100000} +body div.pp_overlay{background-color:#333333} +.screen-reader-text {float:left;padding:8px 15px 8px 0} + +/* =Custom posts= */ +article.post-password-required header.post-header .post-title{ + width:85.61%; + padding: 0 10% 13px 4.4%; + background:url(images/post-password.png) no-repeat 97% 0 transparent; +} +article.format-link header.post-header .post-title{ + width:85.61%; + padding: 0 10% 13px 4.4%; + background:url(images/post-link.png) no-repeat 97% 0 transparent; +} +article[class*=tag-twitter] header.post-header .post-title{ + width:85.61%; + padding: 0 10% 13px 4.4%; + background:url(images/post-twitter.png) no-repeat 97% 0 transparent; +} +article.format-quote header.post-header .post-title{ + width:85.61%; + padding: 0 10% 13px 4.4%; + background:url(images/post-quote.png) no-repeat 97% 0 transparent; +} +cite{font-weight:bold} +cite a{font-weight:bold;text-decoration:none} +article.format-image .wp-caption a{ + position:relative; + display:block; +} +.single-post article.format-image img{ + width: auto; + max-width: 100%; + box-shadow: 0 3px 4px rgba(0, 0, 0, 0.5); +} +article.format-image .wp-caption a:after{ + position:absolute; + display:block; + left:0; + top:0; + width:100%; + height:100%; + content:" "; + background:url(images/image-linked.png) no-repeat center center transparent; +} +article.format-image .wp-caption a:hover:after{ + background:url(images/image-linked-hover.png) no-repeat center center transparent; +} +.mejs-controls .mejs-time-rail .mejs-time-loaded { + background:#fff !important +} +/* .entry-content iframe{max-height:650px} */ + +.header-hgroup a.link-logo-retina { + display:none; +} + +.logo-description { + float:left; + display:block; + word-wrap: break-word; + text-decoration:none; + margin:5px 0 0 0; +} + +.logo-description h1.site-title { + font-size:20px !important; + font-weight:bold; + line-height:20px; +} + +.logo-description h2.site-description { + font-size:14px !important; +} + +header.post-header .post-title { + border-bottom: 2px solid #f15a23; + float: left; + font-size: 27px; + margin: 14px 0 0; + padding: 0 4.4% 13px; + width: 91.21%; + word-wrap: break-word; +} +header.post-header .post-title a { + text-decoration:none; +} +#page .container #secondary { + float:left; + width:100%; + margin:10px 0 0 0; +} +#page .container #secondary .widget { + float:left; + width:100%; +} +#page .container #secondary .widget h3.widget-title, #page .container #secondary .widget h1.widget-title { + border-bottom:2px solid #f15a23; + padding:0 0 10px 0; + margin:0 0 20px 0; +} +#page .container #secondary .widget ul { + float:left; + width:98%; + width:calc(100% - 8px); + list-style:none; + margin:0 0 0 8px +} +#page .container #secondary .widget a { + font-size:13px; + text-decoration:none +} +#page .container #secondary .widget ul li { + margin:0 0 10px 0; +} +#page .container #secondary .widget ul li.cat-item { + float:left; + width:100%; + padding:0; + margin:0; +} +#page .container #secondary .widget ul.children{ + padding-left:20px; +} +#page .container #secondary .widget ul li.cat-item a{ + padding:0; + margin-bottom:10px; + float:left; +} +#page .container #secondary .widget ul li.cat-item ul li a{ + padding:0 0 0 5px; +} +#page .container #secondary .widget ul li.cat-item ul li a:before{ + content: "\f105"; + color: #333333; + font-family: FontAwesome; + margin-right: 6px; + font-size: 1em; + font-weight: bold; +} +#page .container #secondary .widget ul li.current-cat a:before, +#page .container #secondary .widget ul li.cat-item a:hover:before{ + color: #ff5d2a; +} +#page .container #secondary>.widget_nav_menu a{ + float:left; + padding:0; + margin:0 0 10px 0; +} +#page .container #secondary>.widget_nav_menu li, +#page .container #secondary>.widget_nav_menu li ul li{ + float:left; + width:100%; + margin:0; +} +#page .container #secondary>.widget_nav_menu>div ul>li{ + width:100%; + margin:0; +} +#page .container #secondary>.widget_nav_menu>div>ul li>ul{ + margin-left:20px; + width:calc(100% - 15px); +} +#page .container #secondary>.widget_nav_menu>div>ul>li ul>li>a{ + padding-left:5px; +} +#page .container #secondary>.widget_nav_menu>div>ul>li ul>li>a:before{ + content: "\f105"; + color: #333333; + font-family: FontAwesome; + margin-right: 6px; + font-size: 1em; + font-weight: bold; +} +#page .container #secondary>.widget_nav_menu>div>ul>li ul>li>a:hover:before, +#page .container #secondary>.widget_nav_menu>div>ul>li ul>li.current-menu-item>a:hover:before{ + color: #ff5d2a; +} +#page .container #secondary>.widget_nav_menu li.current-menu-item>a{ + color:#ff5d2a; +} +#page .container #secondary>.widget_nav_menu>div>ul>li>ul>li>ul>li>ul{ + display:none; +} + +/*calendar widget*/ +#calendar_wrap{ + width:212px; + border:1px solid #d9d9d9; + padding:30px 33px; + margin: 0 auto; +} +#calendar_wrap #wp-calendar{ + border:0px; + padding:0; + margin:0; + width:212px +} +#calendar_wrap #wp-calendar thead{ + display:block; + float:left; +} +#calendar_wrap #wp-calendar tbody{ + width:210px; + float:left; +} +table#wp-calendar td{ + padding:7px 5px; + border:0px; + text-align:center; +} +table#wp-calendar th{ + width:20px; + display:inline-block; + padding:7px 5px; + border:0px; + text-align:center; + color:#2c9bb3; +} +table#wp-calendar th:last-child,table#wp-calendar th:nth-child(6){ + color:#333333 +} +#wp-calendar caption{ + border-bottom:2px solid #d6d6d6; + padding:0 0 15px 0; + margin:0 0 13px 0; + text-transform:uppercase; + font-size:18px; +} +#wp-calendar td{ + width: 20px; + height:14px; + font-size:12px; + line-height:14px; + float:left; + border:0px; + color:#d6d6d6; +} +table#wp-calendar td.cal_has_posts{ + width:18px; + border:1px solid #d6d6d6; + border-radius:16px; + color:#d6d6d6; +} +#wp-calendar td#today, #wp-calendar td#today~td{ + color:#8a8a8a; +} +table#wp-calendar td[colspan="1"]{ + width:18px; +} +table#wp-calendar td[colspan="2"]{ + width:50px; +} +table#wp-calendar td[colspan="3"]{ + width:80px; +} +table#wp-calendar td[colspan="4"]{ + width:110px; +} +table#wp-calendar td[colspan="5"]{ + width:140px; +} +table#wp-calendar td[colspan="6"]{ + width:170px; +} +table#wp-calendar td#prev{ + width:80px; + text-align:left; +} +table#wp-calendar td#next{ + width:80px; + text-align:right; +} + + +input#s { + background:url("images/search_icon.png") no-repeat scroll 97% 5px transparent; + border-radius:2px 2px 2px 2px; + font-size:13px; + height:22px; + line-height:1.2em; + padding:4px 32px 4px 5px; + width:234px; +} +input[type="password"] { + border: 1px solid #e5e5e5; + border-radius:2px 2px 2px 2px; + font-size:13px; + height:22px; + line-height:1.2em; + padding:4px 5px; + width:220px; +} + +#back-top { + bottom: 24px; + display: none; + position: absolute; + right: 2%; +} + +#back-top a { + text-decoration: none; + font-size: 18px; + color: #000; +} + +.glr-container-image { + float:left; + width:100%; + display:block; + margin:30px 0; + position:relative; +} + + +table { + border-collapse: collapse; + text-align: left; + width: 100%; +} +table { + font: normal 12px/150% Arial, Helvetica, sans-serif; + background: #fff; + border: 1px solid #d6d6d6; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; +} +table td, +table th { + padding: 7px 10px; +} + +table thead th, +table th { + font-size: 14px; + border-bottom: 1px solid #d6d6d6; +} + +table tbody td { + border-bottom: 1px solid #d6d6d6; + font-size: 12px; + font-weight: normal; +} +table tbody tr:last-child td:last-child { + border-right:1px solid #d6d6d6; +} +table tfoot td div { + border-top: 1px solid #8C8C8C; + background: #EBEBEB; +} + +table tfoot td { + padding: 0; + font-size: 12px +} + +table tfoot td div{ + padding: 2px; +} + +table tfoot td ul { + margin: 0; + padding:0; + list-style: none; + text-align: right; +} + +table tfoot li { + display: inline; +} + +.post-content .entry-content table tbody tr th a { + color:#F15A23; + text-decoration:none; +} + +table tfoot li a { + text-decoration: none; + display: inline-block; + padding: 2px 8px; + margin: 1px; + color: #F5F5F5; + border: 1px solid #8C8C8C; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #8C8C8C), color-stop(1, #7D7D7D) ); + background:-moz-linear-gradient( center top, #8C8C8C 5%, #7D7D7D 100% );filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8C8C8C', endColorstr='#7D7D7D'); + background-color:#8C8C8C; +} +table tfoot ul.active, +table tfoot ul a:hover { + text-decoration: none; + border-color: #7D7D7D; + color: #F5F5F5; + background: none; + background-color:#8C8C8C; +} + +pre { + background: #f5f5f5; + color: #666; + border:1px solid #d6d6d6; + font-family: monospace; + font-size: 14px; + margin: 20px 0; + overflow: auto; + padding: 20px; + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; +} + +code, +kbd, +pre, +samp { + font-family: monospace, serif; + font-size: 14px; + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +blockquote, +q { + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; + quotes: none; +} + +blockquote:before, +blockquote:after, +q:before, +q:after { + content: ""; + content: none; +} + +blockquote { + font-size: 18px; + font-style: italic; + font-weight: 300; + margin: 24px 35px; +} + +blockquote blockquote { + margin-right: 0; +} + +blockquote cite, +blockquote small { + font-size: 14px; + font-weight: normal; + text-transform: uppercase; +} + +blockquote em, +blockquote i { + font-style: normal; + font-weight: 300; +} + +blockquote strong, +blockquote b { + font-weight: 400; +} + +small { + font-size: smaller; +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + + +code { + font-size: 12px; + margin-left: 3px; + color: #686758; +} + + +address { + font-style: italic; + margin: 0 0 24px; +} + +.head-container { + position:relative; + left:0; + width:100%; + display:block; + background-repeat:no-repeat; +} + +.head-container.fixed { + position:fixed; + top:0; + left:0; + -webkit-box-shadow: 0px 2px 2px rgba(50, 50, 50, 0.3); + -moz-box-shadow: 0px 2px 2px rgba(50, 50, 50, 0.3); + box-shadow: 0px 2px 2px rgba(50, 50, 50, 0.3); + min-height: 0 !important; + background-attachment:scroll !important; + z-index: 8000; + background-color:#fff; +} + +.head-container.is_indent { + top:32px; + min-width:1024px; +} + +.single-post #comments ol.commentlist li img.avatar, +.page #comments ol.commentlist li img.avatar { + padding: 3px; + width: 32px; + height: auto; + background: #f7f6f7; + border: 1px solid #f0eef0; + line-height: 1; +} + + +#comments.comments-area h2.comments-title, +#comments.comments-area #respond.comment-respond h3.comment-reply-title { + margin:20px 0; + font-weight:normal; +} + +.page #comments #respond input[type="submit"]{ + line-height:100%; +} + +#comments.comments-area ol.commentlist { + margin:0 0 20px 0; + padding: 0; +} + +.commentlist, +.commentlist .children { + list-style-type: none; + padding: 0; +} +.comment-body { + padding: 20px 0; + position: relative; +} + +.comment-form-author:before, .comment-form-author:after, .comment-form-email:before, .comment-form-email:after, .comment-form-url:before, .comment-form-url:after, .comment-body:before, .comment-body:after { + content: ""; + display: table; +} +.comment-form-author:before, .comment-form-author:after, .comment-form-email:before, .comment-form-email:after, .comment-form-url:before, .comment-form-url:after, .comment-body:before, .comment-body:after { + content: ""; + display: table; +} +.comment-body:after { + clear: both; +} + +#comments.comments-area ol.commentlist li { + width: 100%; +} + +#comments.comments-area ol.commentlist li.comment .comment-author { + float:left; + display:block; + max-width:40px; +} + +#comments.comments-area ol.commentlist li.comment .comment-author { + font-size:12px; + font-family:inherit; +} + +#comments.comments-area ol.commentlist li.comment .comment-author cite.fn { + display: block; + float: left; + width: 100%; + word-wrap: break-word; + text-align:center; +} +.comment-meta{ + width:90%; +} +#comments .comment-meta cite.fn, +#comments .comment-meta cite.fn a { + color:#777777; + font-style:normal; +} +.comment-content em{ + position:relative; + top:3px; +} +#comments.comments-area ol.commentlist li.comment .comment-author span.says { + float:left; +} +.comment-content{ + position:relative; + float: right; + width: calc(100% - 78px); + width: -moz-calc(100% - 78px); + width: -o-calc(100% - 78px); + width: -webkit-calc(100% - 78px); + word-wrap: break-word; + border: 1px solid #F0EEF0; + border-radius: 4px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + padding: 14px; +} + +#comments.comments-area ol.commentlist li.comment .comment-meta a.meta-date { + color: #A2A2A2; + font-size: 13px; + text-decoration:none; +} +#comments.comments-area ol.commentlist li.comment .comment-meta a.comment-edit-link { + font-size: 13px; + text-decoration:none; +} +.commentlist .reply { + position:absolute; + top:14px; + right:14px; +} +#comments.comments-area ol.commentlist li.comment .reply a.comment-reply-link { + text-decoration:none; +} + +.comment-respond { + width:100%; + display:block; + margin:20px 0; +} + +.comment-form-comment{ + margin-bottom:25px; +} + +#comments.comments-area #respond.comment-respond form#commentform.comment-form p.comment-form-comment label { + margin:0 0 5px 0; + float:left; + display:block; + width:100%; +} + +.commentsErrorBox { + color: #F15A23; + line-height: 1em; + margin-bottom: 27px; + padding: 14px 26px 14px 46px; + overflow:hidden; + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + border-radius: 10px; + border: 1px solid #FF5C2C; + background:url(images/error.png) no-repeat 12px center transparent; + display:inline-block; + width:88%; +} + +.commentsErrorBox ul { + margin:0; + padding:0; + list-style:none; + list-style:none; + margin:5px 0; + padding:0; +} + +.gallery { + display:block; + float:left; + display:block; + width:100%; +} +.blog_post .gallery { + padding:0 0 20px; +} +.gallery .gallery-item { + float:left; + display:block; + margin: 0 4px 4px 0; + position:relative; + overflow:hidden; +} + +.gallery-caption { + background-color: rgba(0, 0, 0, 0.7); + bottom: 0; + color: #FFFFFF; + font-size: 14px; + left: 0; + line-height: 1.3; + margin: 0; + max-height: 50%; + opacity: 0; + padding: 2px 8px; + position: absolute; + text-align: left; + -webkit-transition: opacity 400ms ease; + transition: opacity 400ms ease; + width: 100%; + font-style: italic; + font-weight: 300; +} + + +.gallery-caption:before { + box-shadow: 0 -10px 15px #000000 inset; + content: ""; + height: 100%; + left: 0; + min-height: 49px; + position: absolute; + top: 0; + width: 100%; +} + +.gallery .gallery-item .gallery-icon a { + float:left; +} + +.gallery .gallery-item .gallery-icon a img.attachment-thumbnail { + display: block; + float: left; + max-width: 100%; + width: 100%; +} + +.gallery-item:hover .gallery-caption { + opacity: 1; +} + +.gallery-columns-1 .gallery-item, .gallery-columns-2 .gallery-item, .gallery-columns-3 .gallery-item { + text-align: center; +} + +.gallery.gallery-columns-1 .gallery-item:nth-of-type(1n), +.gallery.gallery-columns-2 .gallery-item:nth-of-type(2n), +.gallery.gallery-columns-3 .gallery-item:nth-of-type(3n), +.gallery.gallery-columns-4 .gallery-item:nth-of-type(4n), +.gallery.gallery-columns-5 .gallery-item:nth-of-type(5n), +.gallery.gallery-columns-6 .gallery-item:nth-of-type(6n), +.gallery.gallery-columns-7 .gallery-item:nth-of-type(7n), +.gallery.gallery-columns-8 .gallery-item:nth-of-type(8n), +.gallery.gallery-columns-9 .gallery-item:nth-of-type(9n) { + margin: 0 0 4px 0; +} + + +.page-links { + clear: both; + font-size: 16px; + font-style: italic; + font-weight: normal; + line-height: 2.2; + margin: 20px 0; + text-transform: uppercase; +} + +body.page .entry-thumbnail { + display: block; + float: left; + height: auto; + margin: 0 0 20px; + max-width: 91.2%; + padding: 0 4.4%; +} +body.page .entry-thumbnail .wp-post-image { + box-shadow: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + height: auto; + width: 100%; +} + +aside #lang_sel { + z-index: 5; +} + + +/*Custom Tabs*/ +/* +.custom-tabs { + float:left; + display:block; + width:100%; + max-width:100%; + height:100%; + margin:0 0 60px 0; +} + +.custom-tabs ul { + float: left; + margin: 0; + width: 100%; + list-style:none; + max-width: 240px; +} + +.custom-tabs ul li { + float: left; + margin: 0; + width: 228px; + min-height: 25px; + border-bottom: 1px solid #e5e5e5; + border-right: 1px solid #e5e5e5; + padding: 0 0 0 10px; + background-image: url("images/menu_shadow.png"); + background-repeat: no-repeat; + background-position: right 0; + border-left: 1px solid #FFFFFF; + border-left: 1px solid #FFFFFF; +} + +.custom-tabs ul li a { + float: left; + font-weight: bold; + line-height: 25px; + min-width: 10em; + padding: 14px 5px; + width: 150px; + text-decoration:none; color:#818181; +} + +.custom-tabs ul li.current { + background-color: #fefefe; + border-left:1px solid #e5e5e5; + border-right:0; + -webkit-border-top-left-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -moz-border-radius-topleft: 4px; + -moz-border-radius-bottomleft: 4px; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + background-image:none; +} + +.custom-tabs ul li:first-child { + border-top:1px solid #e5e5e5; +} + +.custom-tabs ul li.current a { + border-bottom-color: #6D6D6D; + border-top-color: #808080; + color:#3e3e3e; + outline: 0; +} + +.custom-tabs ul li:hover { + color:#e1704b +} + +.custom-tabs .tab-content { + background: none repeat scroll 0 0 #FFFFFF; + display: none; + float: right; + max-width: 640px; + min-height: 600px; + padding: 0 15px; + width: 100%; +} +*/ + +*:first-child+html #page .container .content .info_box_area { margin-bottom:25px } + +@media screen and ( max-width: 640px ) { + .page-container{margin-bottom:40px;} + .head-container.fixed {top: 0;} +} +@media only screen and (max-width:640px) and (orientation:portrait) { + body{min-height:1500px;} +} +@media only screen and (max-device-width:640px) and (orientation:landscape) { + body{min-height:640px;} +} + +/*RTL Styles*/ +html[dir="rtl"] #colophon .site-info { float:right;} +html[dir="rtl"] #masthead .social-icon{ float:left;} +html[dir="rtl"] #colophon .social-icon{ float:left;} +html[dir="rtl"] .site-content .nav-previous a{float:right;} +html[dir="rtl"] .site-content .nav-previous a .meta-nav{float:left;} +html[dir="rtl"] .site-content .nav-next{text-align:left;margin-left:8%;float:left} +html[dir="rtl"] .site-content .nav-next a{float:left;direction:ltr} +html[dir="rtl"] .site-content .nav-next a .meta-nav{float:none;} +html[dir="rtl"] .blog_post .date_of_post {float:right;right:1px;left:initial} +html[dir="rtl"] .blog_post .post-content footer.entry-meta .edit-link{float:left;} +html[dir="rtl"] .blog_post .post-content footer.entry-meta .comments-link {padding:0 26px 2px 0; margin:0 0 0 10px;background:url(images/comment.png) no-repeat right 0 transparent;} +html[dir="rtl"] .blog_post .post-content footer.entry-meta .author-link {padding:0 26px 2px 0; margin:0 0 0 10px;background:url(images/user.png) no-repeat right 0 transparent;} +html[dir="rtl"] .blog_post .post-content footer.entry-meta .cat-links {padding:0 26px 2px 0; margin:0 0 0 10px;background:url(images/category.png) no-repeat right 3px transparent;} +html[dir="rtl"] .blog_post .post-content footer.entry-meta .tag-links {padding:0 26px 2px 0; margin:0 0 0 10px;background:url(images/tag.png) no-repeat right 3px transparent;} +html[dir="rtl"] .screen-reader-text {padding:8px 0 8px 15px} +html[dir="rtl"] article.post-password-required header.post-header .post-title {padding: 0 4.4% 13px 10%;background:url(images/post-password.png) no-repeat 3% 0 transparent;} +html[dir="rtl"] article.format-link header.post-header .post-title {padding: 0 4.4% 13px 10%;background:url(images/post-link.png) no-repeat 3% 0 transparent;} +html[dir="rtl"] article[class*=tag-twitter] header.post-header .post-title {padding: 0 4.4% 13px 10%;background:url(images/post-twitter.png) no-repeat 3% 0 transparent;} +html[dir="rtl"] article.format-quote header.post-header .post-title {padding: 0 4.4% 13px 10%;background:url(images/post-quote.png) no-repeat 3% 0 transparent;} +html[dir="rtl"] article.format-image .wp-caption a:after{left:initial;right:0;} +html[dir="rtl"] #page .container #secondary .widget ul {float:right;margin:0 8px 0 0;} +html[dir="rtl"] #page .container #secondary>.widget_nav_menu a{float:right;} +html[dir="rtl"] #page .container #secondary .widget ul.children{padding-right:20px;padding-left:0} +html[dir="rtl"] #page .container #secondary>.widget_nav_menu>div>ul>li ul>li>a{padding-left:0;padding-right:5px;} +html[dir="rtl"] #page .container #secondary>.widget_nav_menu>div>ul li>ul{margin-left:0;margin-right:20px;float:right;} +html[dir="rtl"] #page .container #secondary>.widget_nav_menu>div>ul>li ul>li>a:before{display:none;} +html[dir="rtl"] #page .container #secondary>.widget_nav_menu>div>ul>li ul>li>a:after{content: "\f104";color: #333333;font-family: FontAwesome;margin-left: 6px;font-size: 1em;font-weight: bold;} +html[dir="rtl"] #page .container #secondary>.widget_nav_menu>div>ul>li ul>li>a:hover:after{color: #ff5d2a;} +html[dir="rtl"] #page .container #secondary>.widget_nav_menu li, +html[dir="rtl"] #page .container #secondary>.widget_nav_menu li ul li{float:right} +html[dir="rtl"] #page .container #secondary .widget ul li.cat-item a{padding: 0 5px 0 0;float: right;} +html[dir="rtl"] #page .container #secondary .widget ul li.cat-item a:before{display:none;} +html[dir="rtl"] #page .container #secondary .widget ul li.cat-item a:after{content: "\f104";color: #333333;font-family: FontAwesome;margin-left: 6px;font-size: 1em;font-weight: bold;} +html[dir="rtl"] #page .container #secondary .widget ul li.current-cat>a, +html[dir="rtl"] #page .container #secondary .widget ul li.current-cat>a:after, +html[dir="rtl"] #page .container #secondary .widget ul li.cat-item a:hover, +html[dir="rtl"] #page .container #secondary .widget ul li.cat-item a:hover:after {color: #ff5d2a;} +html[dir="rtl"] #page .container #secondary .widget ul li.cat-item{float: right;width: 95%;} +html[dir="rtl"] input#s { background:url("images/search_icon_rtl.png") no-repeat scroll 3% 5px transparent;padding:4px 5px 4px 32px;float:right} +html[dir="rtl"] #comments.comments-area ol.commentlist li.comment .comment-author {float:right} +html[dir="rtl"] #comments.comments-area ol.commentlist li.comment .comment-author cite.fn {float:right} +html[dir="rtl"] #comments.comments-area ol.commentlist li.comment .comment-author span.says {float:right} +html[dir="rtl"] .comment-content{float:left} +html[dir="rtl"] .commentlist .reply {right:initial;left:14px;} +html[dir="rtl"] #comments.comments-area #respond.comment-respond form#commentform.comment-form p.comment-form-comment label {float:right} +html[dir="rtl"] .commentsErrorBox {padding:14px 46px 14px 26px;} +html[dir="rtl"] .gallery .gallery-item {margin:0 0 4px 4px} +html[dir="rtl"] .gallery-caption {left:initial;right:0; text-align: right;} +html[dir="rtl"] .gallery-caption:before {left:initial;right:0;} +html[dir="rtl"] .gallery .gallery-item .gallery-icon a {float:right} +html[dir="rtl"] .gallery .gallery-item .gallery-icon a img.attachment-thumbnail {float:right} +html[dir="rtl"] .entry-thumbnail {float:right} +html[dir="rtl"] body.page .entry-thumbnail {float:right} +/*end of RTL styles*/ + + + +/*STYLES FOR SOME PLUGINS*/ + +/* Styles for plugin "Fruitful Shortcodes" */ +/*buttons*/ +body .btn{padding:10px 18px;margin-bottom:0;font-size:14px;line-height:20px;text-shadow:none;background-image:none;filter:none;border-width:0;-webkit-border-radius:0px;-moz-border-radius:0px;border-radius:0px;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;transition: all 0.3s ease-in-out;}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333333;background-color:#e6e6e6;*background-color:#d9d9d9;} +body .btn.btn-mini{padding:6px 12px} +body .btn.btn-small{padding:8px 15px} +body .btn.btn-large{padding:12px 21px} +.btn{background-color:#ff5d2a !important} +.btn:hover{background-color:#fe4502 !important} +.btn.btn-primary{background-color:#006dcc !important} +.btn.btn-primary:hover{background-color:#0044cc !important} +.btn.btn-info{background-color:#49afcd !important} +.btn.btn-info:hover{background-color:#2f96b4 !important} +.btn.btn-success{background-color:#5bb75b !important} +.btn.btn-success:hover{background-color:#51a351 !important} +.btn.btn-warning{background-color:#faa732 !important} +.btn.btn-warning:hover{background-color:#f89406 !important} +.btn.btn-danger{background-color:#da4f49 !important} +.btn.btn-danger:hover{background-color:#bd362f !important} +.btn.btn-inverse{background-color:#363636 !important} +.btn.btn-inverse:hover{background-color:#222222 !important} +.ffs-info-box a {text-decoration:none} +.fruitful_description a {text-decoration:none} +/*horizontal tabs*/ +body .ffs-tabbed-nav .resp-tabs-list li{ position: relative; z-index: 1; background: none; cursor: pointer; float: none; margin: 0; padding: 15px 20px !important; width: auto; border:0; color: #111111; font-size: 13px; font-weight: normal; line-height: 18px; outline: 0 none; } +body .ffs-tabbed-nav .resp-tabs-list li.resp-tab-active,body .ffs-tabbed-nav .resp-tabs-list li:hover{ background: none repeat scroll 0 0 #EEEEEE; border-bottom: 3px solid #333333; margin-bottom:0 !important; } +body .ffs-tabbed-nav ul.resp-tabs-list{border-bottom: 1px solid rgba(0, 0, 0, 0.15);} +body .resp-tab-content{border:0} +/*vartical tabs*/ +body .ffs-tabbed-nav .resp-vtabs li.resp-tab-item{ position: relative; z-index: 1; background: none; cursor: pointer; float: none; margin: 0; padding: 15px 0 15px 20px !important; width: auto; border:0; color: #111111; display: block; font-size: 13px; font-weight: normal; line-height: 18px; outline: 0 none; } +body .ffs-tabbed-nav.resp-vtabs li.resp-tab-active,body .resp-vtabs li.resp-tab-item:hover{margin:0; background: none repeat scroll 0 0 #EEEEEE; border:0;border-right: 3px solid #333333; margin-right:-3px !important; } +body .ffs-tabbed-nav.resp-vtabs ul.resp-tabs-list{margin:0;border:0;border-right: 1px solid rgba(0, 0, 0, 0.15);} +body .resp-vtabs .resp-tabs-container{border:0} +/* end of styles for plugin "Fruitful Shortcodes" */ + + +/* Styles for plugin "BuddyPress" */ +#buddypress input[type=submit]{ + background:#f15a23; + border:none; + font-family:"Open Sans"; + color: #fff; + text-transform:uppercase; + cursor:pointer; + font-size:1.4rem; + font-size:14px; + padding: 10px 18px ; + -webkit-appearance: none; + -webkit-transition: background 0.2s ease-in-out; + -moz-transition: background 0.2s ease-in-out; + -khtml-transition: background 0.2s ease-in-out; + -o-transition: background 0.2s ease-in-out; + -ms-transition: background 0.2s ease-in-out; + transition: background 0.2s ease-in-out; + line-height:100%; +} +#buddypress input[type=submit]:hover, +#buddypress input[type=submit]:active{ + border:0; + color:white; +} +#buddypress #whats-new-options{ + height:auto !important; +} +#buddypress form#whats-new-form textarea{ + width:calc(100% - 14px); + min-height:40px; +} +/* end of styles for plugin "BuddyPress" */ + + +/* Styles for plugin "SEO Facebook Comments" */ +div#fbSEOComments{ + float:left; + width:100%; +} +/* end styles for plugin "SEO Facebook Comments" */ + +@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { + #page-header .container header .header-hgroup a.link-logo {display: none;} + #page-header .container header .header-hgroup a.link-logo-retina {display:block; width:50%; margin:0 auto} +} + + @media (-webkit-min-device-pixel-ratio: 3), (min-resolution: 288dpi) { + #page-header .container header .header-hgroup a.link-logo {display: none;} + #page-header .container header .header-hgroup a.link-logo-retina {display:block; width:50%; margin:0 auto} +} diff --git a/themes/fruitful/footer.php b/themes/fruitful/footer.php new file mode 100644 index 0000000..13bd3e0 --- /dev/null +++ b/themes/fruitful/footer.php @@ -0,0 +1,34 @@ + +
        +
        +
        +
        +
        +
        +
        + +
        + +
        +
        +
        + +
        +
        + + + + \ No newline at end of file diff --git a/themes/fruitful/front-page.php b/themes/fruitful/front-page.php new file mode 100644 index 0000000..e022d27 --- /dev/null +++ b/themes/fruitful/front-page.php @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/themes/fruitful/functions.php b/themes/fruitful/functions.php new file mode 100644 index 0000000..febe405 --- /dev/null +++ b/themes/fruitful/functions.php @@ -0,0 +1,2009 @@ + 'scroll', + 'footer_widgets' => false, + 'container' => 'content', + 'wrapper' => false, + 'render' => false, + 'posts_per_page' => false, +) ); + +if ( ! function_exists( 'fruitful_setup' ) ): +/** + * Sets up theme defaults and registers support for various WordPress features. + * + * Note that this function is hooked into the after_setup_theme hook, which runs + * before the init hook. The init hook is too late for some features, such as indicating + * support post thumbnails. + * + * @since Fruitful theme 1.0 + */ + + + /** + * Implement the Custom Header feature + */ + + /*require get_template_directory() . '/inc/custom-header.php';*/ + + /** + * Custom template tags for this theme. + */ +require get_template_directory() . '/inc/template-tags.php'; +require get_template_directory() . '/inc/widgets.php'; + + + /** + * Adding recommended plugins for Fruitful Theme. + */ +require_once('inc/func/plugins-included.php'); + + +/** + * Custom functions that act independently of the theme templates + */ +require get_template_directory() . '/inc/tweaks.php'; +require get_template_directory() . '/inc/func/fruitful-function.php'; +require get_template_directory() . '/inc/func/comment-inline-error.php'; +require get_template_directory() . '/inc/metaboxes/init-for-objestcs-mb.php'; + +/** + * Custom Theme Options + */ +require get_template_directory() . '/inc/theme-options/theme-options.php'; +require get_template_directory() . '/inc/theme-options/customizer/customizer.php'; + +function fruitful_fonts_url() { + $fonts_url = ''; + + /* Translators: If there are characters in your language that are not + * supported by Source Sans Pro, translate this to 'off'. Do not translate + * into your own language. + */ + $source_sans_pro = _x( 'on', 'Source Sans Pro font: on or off', 'fruitful' ); + + /* Translators: If there are characters in your language that are not + * supported by Bitter, translate this to 'off'. Do not translate into your + * own language. + */ + $bitter = _x( 'on', 'Bitter font: on or off', 'fruitful' ); + + if ( 'off' !== $source_sans_pro || 'off' !== $bitter ) { + $font_families = array(); + + if ( 'off' !== $source_sans_pro ) + $font_families[] = 'Source Sans Pro:300,400,700,300italic,400italic,700italic'; + + if ( 'off' !== $bitter ) + $font_families[] = 'Bitter:400,700'; + + $query_args = array( + 'family' => urlencode( implode( '|', $font_families ) ), + 'subset' => urlencode( 'latin,latin-ext' ), + ); + $fonts_url = add_query_arg( $query_args, "//fonts.googleapis.com/css" ); + } + + return $fonts_url; +} + +function fruitful_setup() { + /** + * Make theme available for translation + * Translations can be filed in the /languages/ directory + * If you're building a theme based on Fruitful theme, use a find and replace + * to change 'fruitful' to the name of your theme in all the template files + */ + load_theme_textdomain( 'fruitful', get_template_directory() . '/languages' ); + /** + * Add default posts and comments RSS feed links to head + */ + add_theme_support( 'automatic-feed-links' ); + /** + * Enable support for Post Thumbnails + */ + add_theme_support( 'post-thumbnails' ); + add_theme_support( 'html5', array( 'search-form', 'comment-form', 'comment-list' ) ); + + add_theme_support( 'post-formats', array( + 'aside', 'audio', 'chat', 'gallery', 'image', 'link', 'quote', 'status', 'video' + ) ); + + /** + * This theme uses wp_nav_menu() in one location. + */ + register_nav_menus( array( + 'primary' => __( 'Primary Menu', 'fruitful' ), + ) ); + + + add_theme_support( 'post-thumbnails' ); + set_post_thumbnail_size( 604, 270, true ); + add_image_size( 'slider-thumb', 608, 300, true ); + add_image_size( 'main-slider', 1920, 900, true ); + + add_editor_style( array( 'css/editor-style.css', 'fonts/genericons.css', fruitful_fonts_url() ) ); + + $defaults = array( + 'default-color' => 'fff', + 'default-image' => '', + 'wp-head-callback' => '_custom_background_cb', + 'admin-head-callback' => '', + 'admin-preview-callback' => '' + ); + /*add_theme_support( 'custom-background', $defaults );*/ + + add_filter( 'use_default_gallery_style', '__return_false' ); + +} +endif; +add_action( 'after_setup_theme', 'fruitful_setup' ); +// fruitful_setup + +if ( ! function_exists( 'fruitful_wp_title' ) ) { +function fruitful_wp_title( $title, $sep ) { + global $paged, $page; + if ( is_feed() ) return $title; + + $title .= get_bloginfo( 'name' ); + $site_description = get_bloginfo( 'description', 'display' ); + if ( $site_description && ( is_home() || is_front_page() ) ) + $title = "$title $sep $site_description"; + if ( $paged >= 2 || $page >= 2 ) + $title = "$title $sep " . sprintf( __( 'Page %s', 'fruitful' ), max( $paged, $page ) ); + return $title; +} + add_filter( 'wp_title', 'fruitful_wp_title', 10, 2 ); +} + +/** + * Register widgetized area and update sidebar with default widgets + * + * @since Fruitful theme 1.0 + */ + if ( ! function_exists( 'fruitful_widgets_init' ) ) { +function fruitful_widgets_init() { + register_widget( 'Fruitful_Widget_News_Archive' ); + + register_sidebar( array( + 'name' => __( 'Main Sidebar', 'fruitful' ), + 'id' => 'sidebar-1', + 'before_widget' => '', + 'before_title' => '

        ', + 'after_title' => '

        ', + ) ); + + register_sidebar( array( + 'name' => __( 'Blog Sidebar', 'fruitful' ), + 'id' => 'sidebar-2', + 'before_widget' => '', + 'before_title' => '

        ', + 'after_title' => '

        ', + ) ); + + register_sidebar( array( + 'name' => __( 'Single Post Sidebar', 'fruitful' ), + 'id' => 'sidebar-3', + 'before_widget' => '', + 'before_title' => '

        ', + 'after_title' => '

        ', + ) ); + + register_sidebar( array( + 'name' => __( 'Homepage Sidebar', 'fruitful' ), + 'id' => 'sidebar-4', + 'before_widget' => '', + 'before_title' => '

        ', + 'after_title' => '

        ', + ) ); + + if (class_exists('woocommerce')){ + register_sidebar( array( + 'name' => __( 'Shop Page Sidebar', 'fruitful' ), + 'id' => 'sidebar-5', + 'before_widget' => '', + 'before_title' => '

        ', + 'after_title' => '

        ', + ) ); + + register_sidebar( array( + 'name' => __( 'Product Page Sidebar', 'fruitful' ), + 'id' => 'sidebar-6', + 'before_widget' => '', + 'before_title' => '

        ', + 'after_title' => '

        ', + ) ); + } +} + +add_action( 'widgets_init', 'fruitful_widgets_init' ); +} + +/** + * Enqueue scripts and styles + */ +if ( ! function_exists( 'fruitful_scripts' ) ) { +function fruitful_scripts() { + global $post; + $prefix = '_fruitful_'; + $slider_layout = false; + $theme_options = fruitful_get_theme_options(); + $front_page_id = get_option('page_on_front'); + $blog_page_id = get_option('page_for_posts '); + + + if (is_page() && !is_front_page() && !is_home()) { + $slider_layout = get_post_meta( $post->ID, $prefix . 'slider_layout', true); + } elseif(!is_front_page() && is_home() && ($blog_page_id != 0)) { + /*Only for blog posts loop*/ + $slider_layout = get_post_meta( $blog_page_id, $prefix . 'slider_layout', true); + } elseif (is_front_page()) { + $slider_layout = get_post_meta( $front_page_id, $prefix . 'slider_layout', true); + } + + if ($slider_layout) { + if (isset($theme_options['select_slider'])) { + if ($theme_options['select_slider'] == "1") { + wp_enqueue_style( 'flex-slider', get_template_directory_uri() . '/js/flex_slider/slider.css'); + wp_enqueue_script('flex-fitvid-j', get_template_directory_uri() . '/js/flex_slider/jquery.flexslider-min.js', array( 'jquery' ), '20130930', false ); + wp_enqueue_script('flex-froogaloop-j', get_template_directory_uri() . '/js/flex_slider/froogaloop.js', array( 'jquery' ), '20130930', false ); + wp_enqueue_script('flex-easing-j', get_template_directory_uri() . '/js/flex_slider/jquery.easing.js', array( 'jquery' ), '20130930', false ); + wp_enqueue_script('flex-fitvid-j', get_template_directory_uri() . '/js/flex_slider/jquery.fitvid.js', array( 'jquery' ), '20130930', false); + wp_enqueue_script('flex-mousewheel-j', get_template_directory_uri() . '/js/flex_slider/jquery.mousewheel.js', array( 'jquery' ), '20130930', false ); + wp_enqueue_script('flex-modernizr-j', get_template_directory_uri() . '/js/flex_slider/modernizr.js', array( 'jquery' ), '20130930', false ); + } else if ($theme_options['select_slider'] == "2") { + wp_enqueue_style( 'nivo-bar-skin', get_template_directory_uri() . '/js/nivo_slider/skins/bar/bar.css'); + wp_enqueue_style( 'nivo-dark-skin', get_template_directory_uri() . '/js/nivo_slider/skins/dark/dark.css'); + wp_enqueue_style( 'nivo-default-skin', get_template_directory_uri() . '/js/nivo_slider/skins/default/default.css'); + wp_enqueue_style( 'nivo-light-skin', get_template_directory_uri() . '/js/nivo_slider/skins/light/light.css'); + wp_enqueue_style( 'nivo-style', get_template_directory_uri() . '/js/nivo_slider/nivo-slider.css'); + wp_enqueue_script('nivo-slider', get_template_directory_uri() . '/js/nivo_slider/jquery.nivo.slider.pack.js', array( 'jquery' ), '20130930', false ); + } + } + } + + /*add woocommerce styles for ie*/ + wp_enqueue_style( 'ie-style', get_template_directory_uri() . '/woocommerce/ie.css'); + + /*add fancybox*/ + wp_enqueue_script('fn-box', get_template_directory_uri() . '/js/fnBox/jquery.fancybox.pack.js', array( 'jquery' ), '20140525', false ); + wp_enqueue_style( 'fn-box-style', get_template_directory_uri() . '/js/fnBox/jquery.fancybox.css'); + + wp_enqueue_script('fancy-select', get_template_directory_uri() . '/js/fancySelect.js', array( 'jquery' ), '20140525', false ); + wp_enqueue_style( 'fancy-select', get_template_directory_uri() . '/css/fancySelect.css'); + + wp_enqueue_script('resp-dropdown', get_template_directory_uri() . '/js/mobile-dropdown.min.js', array( 'jquery' ), '20130930', false ); + wp_enqueue_script('init', get_template_directory_uri() . '/js/init.min.js', array( 'jquery' ), '20130930', false ); + + $is_fixed_header = -1; + if (isset($theme_options['is_fixed_header']) && ($theme_options['is_fixed_header'] == 'on')) { + $is_fixed_header = 1; + } + + wp_localize_script( 'init', 'ThGlobal', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ), + 'is_fixed_header' => $is_fixed_header, + 'mobile_menu_default_text' => __('Navigate to...', 'fruitful'), + ) + ); + + wp_enqueue_script('small-menu-select', get_template_directory_uri() . '/js/small-menu-select.js', array( 'jquery' ), '20130930', false ); + if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { + wp_enqueue_script( 'comment-reply' ); + } + + if ( is_singular() && wp_attachment_is_image() ) { + wp_enqueue_script( 'keyboard-image-navigation', get_template_directory_uri() . '/js/keyboard-image-navigation.js', array( 'jquery' ), '20120202' ); + } +} +} +add_action( 'wp_enqueue_scripts', 'fruitful_scripts' ); + +if ( ! function_exists( 'fruitful_get_link_url' ) ) { + function fruitful_get_link_url() { + $content = get_the_content(); + $has_url = get_url_in_content( $content ); + + return ( $has_url ) ? $has_url : apply_filters( 'the_permalink', get_permalink() ); + } +} + +/*get cart button html*/ +if ( ! function_exists( 'fruitful_get_cart_button_html' ) ) { + function fruitful_get_cart_button_html() { + $btn_cart = ''; + $theme_options = fruitful_get_theme_options(); + + if (class_exists('Woocommerce')) { + global $woocommerce; + if (!empty($theme_options['showcart']) && (esc_attr($theme_options['showcart']) == 'on')) { + $btn_cart = ''; + } + } + echo $btn_cart; + } +} + +if ( ! function_exists( 'fruitful_check_gg_custom_fonts' ) ) { + function fruitful_check_gg_custom_fonts($inFont = null) { + $font_name = null; + $http_ = 'http://'; + if (is_ssl()) { + $http_ = 'https://'; + } + + $fonts_ = array(); + $fonts_[] = 'fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,800,700,600,300&subset=latin,latin-ext'; + $fonts_[] = 'fonts.googleapis.com/css?family=Lobster&subset=cyrillic-ext,latin-ext,latin,cyrillic'; + $fonts_[] = 'fonts.googleapis.com/css?family=Josefin+Slab:400,100,100italic,300,300italic,400italic,600,600italic,700,700italic'; + $fonts_[] = 'fonts.googleapis.com/css?family=Arvo:400,400italic,700,700italic'; + $fonts_[] = 'fonts.googleapis.com/css?family=Lato:400,100,100italic,300,300italic,400italic,700,700italic,900,900italic'; + $fonts_[] = 'fonts.googleapis.com/css?family=Vollkorn:400,400italic,700,700italic'; + $fonts_[] = 'fonts.googleapis.com/css?family=Abril+Fatface'; + $fonts_[] = 'fonts.googleapis.com/css?family=Ubuntu:400,300italic,400italic,500,500italic,700,700italic,300&subset=latin,greek,latin-ext,cyrillic'; + $fonts_[] = 'fonts.googleapis.com/css?family=PT+Sans:400,400italic,700,700italic&subset=latin,cyrillic'; + $fonts_[] = 'fonts.googleapis.com/css?family=Old+Standard+TT:400,400italic,700'; + $fonts_[] = 'fonts.googleapis.com/css?family=Droid+Sans:400,700'; + + if (!empty($inFont)) { + $font_name = $inFont; + $font_name = urlencode(substr($font_name, 0, strrpos($font_name, ','))); + $in = preg_quote($font_name, '~'); + $res = preg_grep('~' . $in . '~', $fonts_); + if (!empty($res)) { + return $http_ . current($res); + } else { + return null; + } + } + } +} + +/*function for including google fonts*/ +if ( ! function_exists( 'fruitful_add_custom_fonts' ) ) { + function fruitful_add_custom_fonts() { + $font_url = array(); + $theme_options = fruitful_get_theme_options(); + + if (isset($theme_options['h_font_family'])) $font_url[] = fruitful_check_gg_custom_fonts(esc_attr($theme_options['h_font_family'])); + if (isset($theme_options['m_font_family'])) $font_url[] = fruitful_check_gg_custom_fonts(esc_attr($theme_options['m_font_family'])); + if (isset($theme_options['p_font_family'])) $font_url[] = fruitful_check_gg_custom_fonts(esc_attr($theme_options['p_font_family'])); + + $font_url = array_filter($font_url); + $font_url = array_unique($font_url); + + if (!empty($font_url)) { + foreach ($font_url as $font) { + $unq_id = uniqid('custom_fonts_'); + wp_register_style($unq_id, $font); + wp_enqueue_style($unq_id); + } + } + } +} + + +/*Slider*/ +if (!function_exists('fruitful_get_slider_layout_flex')) { + function fruitful_get_slider_layout_flex() { + global $post; + $out = ""; + $prefix = '_fruitful_'; + $slider_layout = false; + $theme_options = fruitful_get_theme_options(); + $front_page_id = get_option('page_on_front'); + $blog_page_id = get_option('page_for_posts '); + + + if (is_page() && !is_front_page() && !is_home()) { + $slider_layout = get_post_meta( $post->ID, $prefix . 'slider_layout', true); + } elseif(!is_front_page() && is_home() && ($blog_page_id != 0)) { + /*Only for blog posts loop*/ + $slider_layout = get_post_meta( $blog_page_id, $prefix . 'slider_layout', true); + } elseif (is_front_page()) { + $slider_layout = get_post_meta( $front_page_id, $prefix . 'slider_layout', true); + } + + if(!empty($slider_layout) && ($slider_layout)) { + $out .= '$(".flexslider").flexslider({'; + $out .= 'animation: "' . esc_attr($theme_options['s_animation']) .'",'; + $out .= 'direction: "' . esc_attr($theme_options['s_direction']) .'",'; + $out .= 'reverse: ' . esc_attr($theme_options['s_reverse']) . ','; + $out .= 'slideshow: ' . esc_attr($theme_options['s_slideshow']) . ','; + $out .= 'slideshowSpeed: ' . esc_attr($theme_options['s_slideshowSpeed']) . ','; + $out .= 'animationSpeed: ' . esc_attr($theme_options['s_animationSpeed']) . ','; + $out .= 'controlNav: ' . esc_attr($theme_options['s_controlnav']) . ','; + $out .= 'touch: ' . esc_attr($theme_options['s_touch']) . ','; + + if (isset($theme_options['s_initDelay'])) { + $out .= 'initDelay: ' . $theme_options['s_initDelay'] .','; + } + $out .= 'randomize: ' . $theme_options['s_randomize']; + $out .= '});'; + } + + return $out; + } +} + +if (!function_exists('fruitful_get_slider_layout_nivo')) { + function fruitful_get_slider_layout_nivo() { + global $post; + $out = ""; + $prefix = '_fruitful_'; + $slider_layout = false; + $theme_options = fruitful_get_theme_options(); + $front_page_id = get_option('page_on_front'); + $blog_page_id = get_option('page_for_posts '); + + + if (is_page() && !is_front_page() && !is_home()) { + $slider_layout = get_post_meta( $post->ID, $prefix . 'slider_layout', true); + } elseif(!is_front_page() && is_home() && ($blog_page_id != 0)) { + /*Only for blog posts loop*/ + $slider_layout = get_post_meta( $blog_page_id, $prefix . 'slider_layout', true); + } elseif (is_front_page()) { + $slider_layout = get_post_meta( $front_page_id, $prefix . 'slider_layout', true); + } + + if(!empty($slider_layout) && ($slider_layout)){ + $out .= '$(".nivoSlider").nivoSlider({' . "\n"; + $out .= 'effect: "' . esc_attr($theme_options['nv_animation']) . '",'; + $out .= 'slices: ' . esc_attr($theme_options['nv_slice']) . ','; + $out .= 'boxCols: ' . esc_attr($theme_options['nv_boxCols']) . ','; + $out .= 'boxRows: ' . esc_attr($theme_options['nv_boxRows']) . ','; + $out .= 'animSpeed: ' . esc_attr($theme_options['nv_animSpeed']) . ','; + $out .= 'pauseTime: ' . esc_attr($theme_options['nv_pauseTime']) . ','; + $out .= 'startSlide:' . (isset($theme_options['nv_startSlide']) ? $theme_options['nv_startSlide'] : 0) . ','; + $out .= 'directionNav: ' . esc_attr($theme_options['nv_directionNav']) . ','; + $out .= 'controlNav: ' . esc_attr($theme_options['nv_controlNav']) . ','; + $out .= 'controlNavThumbs: ' . esc_attr($theme_options['nv_controlNavThumbs']) . ','; + $out .= 'pauseOnHover: ' . esc_attr($theme_options['nv_pauseOnHover']) . ','; + $out .= 'manualAdvance: ' . esc_attr($theme_options['nv_manualAdvance']) . ','; + $out .= 'prevText: "' . esc_attr($theme_options['nv_prevText']) . '",'; + $out .= 'nextText: "' . esc_attr($theme_options['nv_nextText']) . '",'; + $out .= 'randomStart: ' . esc_attr($theme_options['nv_randomStart']); + $out .= '});'; + } + + return $out; + } +} + +if (!function_exists('fruitful_get_slider')) { + function fruitful_get_slider() { + if (is_404()) return; + global $post; + $prefix = '_fruitful_'; + $slider_ = $slider_layout = ''; + $id = 'fruitful-slider-'.rand(1, 250); + + $theme_options = fruitful_get_theme_options(); + $front_page_id = get_option('page_on_front'); + $blog_page_id = get_option('page_for_posts '); + + + if (is_page() && !is_front_page() && !is_home()) { + $slider_layout = get_post_meta( $post->ID, $prefix . 'slider_layout', true); + } elseif(!is_front_page() && is_home() && ($blog_page_id != 0)) { + /*Only for blog posts loop*/ + $slider_layout = get_post_meta( $blog_page_id, $prefix . 'slider_layout', true); + } elseif (is_front_page()) { + $slider_layout = get_post_meta( $front_page_id, $prefix . 'slider_layout', true); + } + + /*Full Backend Options*/ + if(!empty($theme_options['slides']) && (count($theme_options['slides']) > 0)) { + foreach ($theme_options['slides'] as $key=>$slide) { + $path_to_img = $val = ''; + $val = wp_get_attachment_image_src( esc_attr($slide['attach_id']), 'main-slider'); + $path_to_img = esc_url_raw($val[0]); + } + + if ($path_to_img){ + if ($theme_options['select_slider'] == "1") { + + if ($slider_layout == 1) { + $slider_ .= '
        '; + } else { + $slider_ .= '
        '; + } + $slider_ .= '
        '; + $slider_ .= '
        '; + $slider_ .= '
          '; + foreach ($theme_options['slides'] as $key=>$slide) { + $val = wp_get_attachment_image_src( esc_attr($slide['attach_id']), 'main-slider'); + $path_to_img = esc_url_raw($val[0]); + $slider_ .= '
        • '; + if (!empty($slide['link'])) { + if (!empty($slide['is_blank'])) { + $slider_ .= ''; + } else { + $slider_ .= ''; + } + $slider_ .= ''; + $slider_ .= ''; + } else { + $slider_ .= ''; + } + $slider_ .= '
        • '; + } + $slider_ .= '
        '; + + } else if ($theme_options['select_slider'] == "2") { + + if ($slider_layout == 1) { + $slider_ .= '
        '; + } else { + $slider_ .= '
        '; + } + + $slider_ .= '
        '; + foreach ($theme_options['slides'] as $key=>$slide) { + $val = wp_get_attachment_image_src( esc_attr($slide['attach_id']), 'main-slider'); + $path_to_img = esc_url_raw($val[0]); + if (!empty($slide['link'])) { + if (!empty($slide['is_blank'])) { + $slider_ .= ''; + } else { + $slider_ .= ''; + } + $slider_ .= ''; + $slider_ .= ''; + } else { + $slider_ .= ''; + } + } + $slider_ .= '
        '; + $slider_ .= '
        '; + } + } else { + $slider_ = '
        '; + $slider_ .= '

        '. __('Please add images for slider in theme options!', 'fruitful') .'

        '; + $slider_ .= '
        '; + } + } else { + $slider_ = '
        '; + $slider_ .= '

        '. __('Please add images for slider in theme options!', 'fruitful') .'

        '; + $slider_ .= '
        '; + } + + if (!empty($slider_layout)) { + if ($slider_layout != 1) { + $slider_ = '
        ' . $slider_ . '
        '; + } + echo '
        '.$slider_.'
        '; + } + } +} + +/*Get logo img*/ +if (!function_exists('fruitful_get_logo')) { + function fruitful_get_logo () { + $theme_options = fruitful_get_theme_options(); + if (!empty($theme_options['logo_w'])) {$logo_w = intval($theme_options['logo_w']); } + if (!empty($theme_options['logo_h'])) {$logo_h = intval($theme_options['logo_h']); } + $url_logo = $url_retina_logo = ''; + + if (!empty($theme_options['logo_img'])) { $url_logo_id = esc_attr($theme_options['logo_img']); } else { $url_logo_id = ''; } + if (!empty($logo_w)) { $logo_width = $logo_w; } else { $logo_width = ''; } + if (!empty($logo_h)) { $logo_height = $logo_h; } else { $logo_height = ''; } + if (!empty($theme_options['logo_img_retina'])) { $url_retina_logo_id = esc_attr($theme_options['logo_img_retina']); } else { $url_retina_logo_id = ''; } + if (!empty($logo_w)) { $logo_retina_width = $logo_width; } else { $logo_retina_width = ''; } + if (!empty($logo_h)) { $logo_retina_height = $logo_height; } else { $logo_retina_height = ''; } + + /*Full Backend Options*/ + $description = $name = ''; + $description = esc_attr(get_bloginfo('description')); + $name = esc_attr(get_bloginfo('name')); + + if (!empty($url_logo_id) || !empty($url_retina_logo_id)) { + $url_logo = wp_get_attachment_image_src($url_logo_id, 'full'); + if (!empty($url_logo)) { + $image_link = esc_url_raw($url_logo[0]); + } + else { + $image_link = $url_logo_id; + } + + $url_retina_logo = wp_get_attachment_image_src($url_retina_logo_id, 'full'); + if (!empty($url_retina_logo)) { + $image_link_retina = esc_url_raw($url_retina_logo[0]); + } + else { + $image_link_retina = $url_retina_logo_id; + } + + if (!empty($url_logo_id)) echo ''; + if (!empty($url_retina_logo_id)) echo ''; + if (!empty($url_logo_id) && empty($url_retina_logo_id)) echo ''; + if (empty($url_logo_id) && !empty($url_retina_logo_id)) echo ''; + + } else { + echo '

        '. $name .'

        '. $description .'

        '; + } + } +} + +/*Get Favicon*/ +if (!function_exists('fruitful_get_favicon')) { + function fruitful_get_favicon () { + $out_fav_html = null; + $url_favicon = $fav_icon_iphone = $fav_icon_iphone_retina = $fav_icon_ipad = $fav_icon_ipad_retina = null; + $theme_options = fruitful_get_theme_options(); + + if (isset($theme_options['fav_icon'])) { + $fav_icon_url = esc_attr($theme_options['fav_icon']); + $fav_icon_id = wp_get_attachment_image_src($fav_icon_url, 'full'); + if (!empty($fav_icon_id)) { + $image_link = esc_url_raw($fav_icon_id[0]); + } + else { + $image_link = $fav_icon_url; + } + + $out_fav_html .= ''; + $out_fav_html .= ''; + } + + if (isset($theme_options['fav_icon_iphone'])) { + $fav_icon_iphone_url = esc_attr($theme_options['fav_icon_iphone']); + $fav_icon_iphone_id = wp_get_attachment_image_src($fav_icon_iphone_url, 'full'); + if (!empty($fav_icon_iphone_id)) { + $image_link = esc_url_raw($fav_icon_iphone_id[0]); + } + else { + $image_link = $fav_icon_iphone_url; + } + + $out_fav_html .= ''; + } + + if (isset($theme_options['fav_icon_iphone_retina'])) { + $fav_icon_iphone_retina_url = esc_attr($theme_options['fav_icon_iphone_retina']); + $fav_icon_iphone_retina_id = wp_get_attachment_image_src($fav_icon_iphone_retina_url, 'full'); + if (!empty($fav_icon_iphone_retina_id)) { + $image_link = esc_url_raw($fav_icon_iphone_retina_id[0]); + } + else { + $image_link = $fav_icon_iphone_retina_url; + } + + $out_fav_html .= ''; + } + + if (isset($theme_options['fav_icon_ipad'])) { + $fav_icon_ipad_url = esc_attr($theme_options['fav_icon_ipad']); + $fav_icon_ipad_id = wp_get_attachment_image_src($fav_icon_ipad_url, 'full'); + if (!empty($fav_icon_ipad_id)) { + $image_link = esc_url_raw($fav_icon_ipad_id[0]); + } + else { + $image_link = $fav_icon_ipad_url; + } + + $out_fav_html .= ''; + } + + if (isset($theme_options['fav_icon_ipad_retina'])) { + $fav_icon_ipad_retina_url = esc_attr($theme_options['fav_icon_ipad_retina']); + $fav_icon_ipad_retina_id = wp_get_attachment_image_src($fav_icon_ipad_retina_url, 'full'); + if (!empty($fav_icon_ipad_retina_id)) { + $image_link = esc_url_raw($fav_icon_ipad_retina_id[0]); + } + else { + $image_link = $fav_icon_ipad_retina_url; + } + + $out_fav_html .= ''; + } + + echo $out_fav_html; + } +} + +/*Get footer text*/ +if (!function_exists('fruitful_get_footer_text')) { + function fruitful_get_footer_text () { + $out_footer_text = $footer_text = ''; + $theme_options = fruitful_get_theme_options(); + if (!empty($theme_options['footer_text'])) { + $footer_text = fruitful_kses_data(stripslashes($theme_options['footer_text'])); + + if (is_home() || is_front_page()) { + $out_footer_text .= $footer_text; + } else { + $out_footer_text .= ''; + $out_footer_text .= $footer_text; + $out_footer_text .= ''; + + } + echo $out_footer_text; + } + } +} + +/*Get position for social icons*/ +if (!function_exists('fruitful_is_social_header')) { + function fruitful_is_social_header () { + $pos = false; + $theme_options = fruitful_get_theme_options(); + if(!empty($theme_options['sl_position'])) { $pos = esc_attr($theme_options['sl_position']); } + return $pos; + } +} + +/*Get footer social icons*/ +if (!function_exists('fruitful_get_socials_icon')) { + function fruitful_get_socials_icon () { + $out = ''; + $theme_options = fruitful_get_theme_options(); + + if(!empty($theme_options['facebook_url'])) { $out .= ''; } + if(!empty($theme_options['twitter_url'])) { $out .= ''; } + if(!empty($theme_options['linkedin_url'])) { $out .= ''; } + if(!empty($theme_options['myspace_url'])) { $out .= ''; } + if(!empty($theme_options['googleplus_url'])) { $out .= ''; } + if(!empty($theme_options['dribbble_url'])) { $out .= ''; } + if(!empty($theme_options['skype_link'])) { $out .= ''; } + if(!empty($theme_options['flickr_link'])) { $out .= ''; } + if(!empty($theme_options['youtube_url'])) { $out .= ''; } + if(!empty($theme_options['vimeo_url'])) { $out .= ''; } + if(!empty($theme_options['rss_link'])) { $out .= ''; } + if(!empty($theme_options['vk_link'])) { $out .= ''; } + if(!empty($theme_options['instagram_url'])) { $out .= ''; } + if(!empty($theme_options['pinterest_url'])) { $out .= ''; } + if(!empty($theme_options['yelp_url'])) { $out .= ''; } + if(!empty($theme_options['email_link'])) { $out .= ''; } + if(!empty($theme_options['github_link'])) { $out .= ''; } + if(!empty($theme_options['tumblr_link'])) { $out .= ''; } + if(!empty($theme_options['soundcloud_link'])) { $out .= ''; } + if(!empty($theme_options['tripadvisor_link'])) { $out .= ''; } + + echo ''; + } +} + + +/*Enable Comment*/ +if ( ! function_exists( 'fruitful_state_post_comment' ) ) { + function fruitful_state_post_comment () { + $theme_options = fruitful_get_theme_options(); + if (!empty($theme_options['postcomment'])) { + return ($theme_options['postcomment'] == "on"); + } else { + return false; + } + } +} + +if ( ! function_exists( 'fruitful_state_page_comment' ) ) { + function fruitful_state_page_comment () { + $theme_options = fruitful_get_theme_options(); + if (!empty($theme_options['pagecomment'])) { + return ($theme_options['pagecomment'] == "on"); + } else { + return false; + } + } +} + + +/*Compress code*/ +if ( ! function_exists( 'fruitful_compress_code' ) ) { + function fruitful_compress_code($code) { + $code = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $code); + $code = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $code); + + return $code; + } +} + +if ( ! function_exists( 'fruitful_hex2rgb' ) ) { + function fruitful_hex2rgb( $colour ) { + if ( $colour[0] == '#' ) { + $colour = substr( $colour, 1 ); + } + if ( strlen( $colour ) == 6 ) { + list( $r, $g, $b ) = array( $colour[0] . $colour[1], $colour[2] . $colour[3], $colour[4] . $colour[5] ); + } elseif ( strlen( $colour ) == 3 ) { + list( $r, $g, $b ) = array( $colour[0] . $colour[0], $colour[1] . $colour[1], $colour[2] . $colour[2] ); + } else { + return false; + } + $r = hexdec( $r ); + $g = hexdec( $g ); + $b = hexdec( $b ); + return array( 'red' => $r, 'green' => $g, 'blue' => $b ); + } +} + +if ( ! function_exists( 'fruitful_get_responsive_style' ) ) { + function fruitful_get_responsive_style () { + $style_ = $back_style = $woo_style_ = ''; + $theme_options = fruitful_get_theme_options(); + fruitful_add_custom_fonts(); + if (isset($theme_options['responsive']) && ($theme_options['responsive'] == 'on')) { + if (class_exists('woocommerce')){wp_enqueue_style( 'woo-style', get_template_directory_uri() . '/woocommerce/woo.css');} + if (!class_exists('ffs')){ + wp_enqueue_style('fontawesome-style', get_template_directory_uri() . '/css/font-awesome.min.css'); + } + wp_enqueue_style('main-style', get_stylesheet_uri()); + } else { + if (class_exists('woocommerce')){wp_enqueue_style( 'woo-style', get_template_directory_uri() . '/woocommerce/woo-fixed.css');} + if (!class_exists('ffs')){ + wp_enqueue_style('fontawesome-style', get_stylesheet_directory_uri() . '/css/font-awesome.min.css'); + } + wp_enqueue_style('main-style', get_stylesheet_directory_uri() .'/fixed-style.css'); + } + + //if (!empty($theme_options['styletheme'])) { + //if ($theme_options['styletheme'] == 'off') { + + $style_ .= 'h1 {font-size : '.esc_attr($theme_options['h1_size']) .'px; }' . "\n"; + $style_ .= 'h2 {font-size : '.esc_attr($theme_options['h2_size']) .'px; }' . "\n"; + $style_ .= 'h3 {font-size : '.esc_attr($theme_options['h3_size']) .'px; }' . "\n"; + $style_ .= 'h4 {font-size : '.esc_attr($theme_options['h4_size']) .'px; }' . "\n"; + $style_ .= 'h5 {font-size : '.esc_attr($theme_options['h5_size']) .'px; }' . "\n"; + $style_ .= 'h6 {font-size : '.esc_attr($theme_options['h6_size']) .'px; }' . "\n"; + + $style_ .= 'h1, h2, h3, h4, h5, h6 {font-family : '. esc_attr($theme_options['h_font_family']) .'; } ' . "\n"; + $style_ .= '.main-navigation a {font-family : '. esc_attr($theme_options['m_font_family']) .'; color : '.esc_attr($theme_options['menu_font_color']). '; } ' . "\n"; + $style_ .= '.main-navigation ul:not(.sub-menu) > li > a, .main-navigation ul:not(.sub-menu) > li:hover > a { font-size : '.esc_attr($theme_options['m_size']) .'px; } ' . "\n"; + + + if (!empty($theme_options['menu_bg_color'])) { $style_ .= '.main-navigation {background-color : ' .esc_attr($theme_options['menu_bg_color']) . '; }' . "\n"; } + + $style_ .= '#header_language_select a {font-family : '. esc_attr($theme_options['m_font_family']) .';} ' . "\n"; + $style_ .= 'body {font-size : '. esc_attr($theme_options['p_size']) .'px; font-family : ' . esc_attr($theme_options['p_font_family']) . '; }' . "\n"; + + + if(!empty($theme_options['background_color'])) { $back_style .= ' background-color : '. esc_attr($theme_options['background_color']) .'; '; } + if(!empty($theme_options['backgroung_img'])) { + $bg_url = esc_attr($theme_options['backgroung_img']); + $image_attributes = wp_get_attachment_image_src($bg_url, 'full'); + + if (!empty($image_attributes)) { + $image_link = esc_url_raw($image_attributes[0]); + } + else { + $image_link = $bg_url; + } + + if(isset($theme_options['bg_repeating']) && ($theme_options['bg_repeating'] == 'on')) { + $back_style .= 'background-image : url(' .$image_link .'); background-repeat : repeat; '; + } else { + $back_style .= 'background-image : url(' .$image_link .'); background-repeat : no-repeat; background-size:100% 100%; background-size:cover; background-attachment:fixed; '; + } + } + + $style_ .= 'body {'. $back_style .'}' . "\n"; + + if(!empty($theme_options['container_bg_color'])) { + $style_ .= '.page-container .container {background-color : '. esc_attr($theme_options['container_bg_color']) . '; } ' . "\n"; + } + + /*Header styles*/ + if (($theme_options['header_bg_color']) != null) { $style_ .= '.head-container, .head-container.fixed {background-color : ' .esc_attr($theme_options['header_bg_color']) . '; }' . "\n"; } + if (!empty($theme_options['header_img'])) { + $header_url = wp_get_attachment_image_src(intval($theme_options['header_img']), 'full'); + if (!empty($header_url)) { + $image_link = esc_url_raw($header_url[0]); + } + else { + $image_link = $theme_options['header_img']; + } + $style_ .= '.head-container {background-image : url(' .esc_attr($image_link) . '); } ' . "\n"; + + if (!empty($theme_options['header_img_size'])){ + if ($theme_options['header_img_size'] == 'full'){ + $style_ .= '.head-container {background-size :cover; background-position:center center;} ' . "\n"; + } else { + $style_ .= '@media only screen and (max-width:480px){'."\n"; + $style_ .= '.head-container {background-size :300px; background-position:top center;} ' . "\n"; + $style_ .= '}'."\n"; + $style_ .= '@media only screen and (min-width:481px) and (max-width:767px){'."\n"; + $style_ .= '.head-container {background-size :420px; background-position:top center;} ' . "\n"; + $style_ .= '}'."\n"; + $style_ .= '@media only screen and (min-width:768px) and (max-width:959px){'."\n"; + $style_ .= '.head-container {background-size :768px; background-position:top center;} ' . "\n"; + $style_ .= '}'."\n"; + $style_ .= '@media only screen and (min-width:960px){'."\n"; + $style_ .= '.head-container {background-size :960px; background-position:top center;} ' . "\n"; + $style_ .= '}'."\n"; + } + } + } + if (!empty($theme_options['header_height'])) { + $style_ .= '.head-container {min-height : '.esc_attr($theme_options['header_height']).'px; }' . "\n"; + } + if (!empty($theme_options['is_fixed_header'])) { + if (isset($theme_options['is_fixed_header']) && ($theme_options['is_fixed_header'] == 'on')) { + $style_ .= '.head-container {position : fixed; }' . "\n"; + } else { + $style_ .= '.head-container {position : relative; }' . "\n"; + } + } + if (!empty($theme_options['logo_h'])) { + $style_ .= '.site-header img {max-height : '.esc_attr($theme_options['logo_h']).'px; }' . "\n"; + } + if (!empty($theme_options['logo_retina_h'])) { + $style_ .= '.site-header img {max-height : '.esc_attr($theme_options['logo_retina_h']).'px; }' . "\n"; + } + /*end of header styles*/ + + + if (!empty($theme_options['menu_btn_color'])) { $style_ .= '.main-navigation ul li.current_page_item a, .main-navigation ul li.current-menu-ancestor a, .main-navigation ul li.current-menu-item a, .main-navigation ul li.current-menu-parent a, .main-navigation ul li.current_page_parent a {background-color : '.esc_attr($theme_options['menu_btn_color']) . '; }' . "\n"; } + if (!empty($theme_options['menu_hover_color'])) { $style_ .= '.main-navigation ul li.current_page_item a, .main-navigation ul li.current-menu-ancestor a, .main-navigation ul li.current-menu-item a, .main-navigation ul li.current-menu-parent a, .main-navigation ul li.current_page_parent a {color : '.esc_attr($theme_options['menu_hover_color']) . '; } ' . "\n"; } + + $style_ .= '.main-navigation ul > li:hover>a {' . "\n"; + if (!empty($theme_options['menu_btn_color'])) { $style_ .= 'background-color : '. esc_attr($theme_options['menu_btn_color']) . '; ' . "\n"; } + if (!empty($theme_options['menu_hover_color'])) { $style_ .= 'color : '.esc_attr($theme_options['menu_hover_color']) . '; ' . "\n"; } + $style_ .= ' } ' . "\n"; + + /*styles for dropdown menu*/ + $style_ .= '#masthead .main-navigation ul > li > ul > li > a {' . "\n"; + if (!empty($theme_options['dd_menu_bg_color'])) { $style_ .= 'background-color : '. esc_attr($theme_options['dd_menu_bg_color']) . '; ' . "\n"; } + if (!empty($theme_options['dd_menu_font_color'])) { $style_ .= 'color : '.esc_attr($theme_options['dd_menu_font_color']) . '; ' . "\n"; } + $style_ .= ' } ' . "\n"; + + $style_ .= '#masthead .main-navigation ul > li > ul > li:hover > a {' . "\n"; + if (!empty($theme_options['dd_menu_btn_color'])) { $style_ .= 'background-color : '. esc_attr($theme_options['dd_menu_btn_color']) . '; ' . "\n"; } + if (!empty($theme_options['dd_menu_hover_color'])) { $style_ .= 'color : '.esc_attr($theme_options['dd_menu_hover_color']) . '; ' . "\n"; } + $style_ .= ' } ' . "\n"; + + $style_ .= '#masthead .main-navigation ul > li ul > li.current-menu-item > a {' . "\n"; + if (!empty($theme_options['dd_menu_btn_color'])) { $style_ .= 'background-color : '. esc_attr($theme_options['dd_menu_btn_color']) . '; ' . "\n"; } + if (!empty($theme_options['dd_menu_hover_color'])) { $style_ .= 'color : '.esc_attr($theme_options['dd_menu_hover_color']) . '; ' . "\n"; } + $style_ .= ' } ' . "\n"; + + $style_ .= '#masthead div .main-navigation ul > li > ul > li > ul a {' . "\n"; + if (!empty($theme_options['dd_menu_bg_color'])) { $style_ .= 'background-color : '. esc_attr($theme_options['dd_menu_bg_color']) . '; ' . "\n"; } + if (!empty($theme_options['dd_menu_font_color'])) { $style_ .= 'color : '.esc_attr($theme_options['dd_menu_font_color']) . '; ' . "\n"; } + $style_ .= ' } ' . "\n"; + + $style_ .= '#masthead div .main-navigation ul > li > ul > li ul li:hover a {' . "\n"; + if (!empty($theme_options['dd_menu_btn_color'])) { $style_ .= 'background-color : '. esc_attr($theme_options['dd_menu_btn_color']) . '; ' . "\n"; } + if (!empty($theme_options['dd_menu_hover_color'])) { $style_ .= 'color : '.esc_attr($theme_options['dd_menu_hover_color']) . '; ' . "\n"; } + $style_ .= ' } ' . "\n"; + + $style_ .= '#lang-select-block li ul li a{'. "\n"; + if (!empty($theme_options['dd_menu_bg_color'])) { $style_ .= 'background-color : '. esc_attr($theme_options['dd_menu_bg_color']) . '; ' . "\n"; } + if (!empty($theme_options['dd_menu_font_color'])) { $style_ .= 'color : '.esc_attr($theme_options['dd_menu_font_color']) . '; ' . "\n"; } + $style_ .= '}' . "\n"; + + $style_ .= '#lang-select-block li ul li a:hover{'. "\n"; + if (!empty($theme_options['dd_menu_btn_color'])) { $style_ .= 'background-color : '. esc_attr($theme_options['dd_menu_btn_color']) . '; ' . "\n"; } + if (!empty($theme_options['dd_menu_hover_color'])) { $style_ .= 'color : '.esc_attr($theme_options['dd_menu_hover_color']) . '; ' . "\n"; } + $style_ .= '}' . "\n"; + + $style_ .= '#lang-select-block li ul li.active a{'. "\n"; + if (!empty($theme_options['dd_menu_btn_color'])) { $style_ .= 'background-color : '. esc_attr($theme_options['dd_menu_btn_color']) . '; ' . "\n"; } + if (!empty($theme_options['dd_menu_hover_color'])) { $style_ .= 'color : '.esc_attr($theme_options['dd_menu_hover_color']) . '; ' . "\n"; } + $style_ .= '}' . "\n"; + /*end of styles for dropdown menu*/ + + /*styles for responsive full width menu*/ + if (!empty($theme_options['menu_type_responsive']) && ($theme_options['menu_type_responsive'] == 'full_width')) { + $style_ .= '.resp_full_width_menu .site-header .menu_wrapper{'. "\n"; + if (!empty($theme_options['dd_menu_bg_color'])) { $style_ .= 'background-color : '. esc_attr($theme_options['dd_menu_bg_color']) . '; ' . "\n"; } + $style_ .= '}' . "\n"; + $style_ .= '.resp_full_width_menu .site-header .menu_wrapper .menu li a{'. "\n"; + if (!empty($theme_options['dd_menu_font_color'])) { $style_ .= 'color : '.esc_attr($theme_options['dd_menu_font_color']) . '; ' . "\n"; } + $style_ .= '}' . "\n"; + $style_ .= '.resp_full_width_menu .site-header .menu_wrapper .menu li.current-menu-item>a,'. "\n"; + $style_ .= '.resp_full_width_menu .site-header .menu_wrapper .menu li.current_page_item>a,'. "\n"; + $style_ .= '.resp_full_width_menu .site-header .menu_wrapper .menu a:hover{'. "\n"; + if (!empty($theme_options['dd_menu_btn_color'])) { $style_ .= 'background-color : '. esc_attr($theme_options['dd_menu_btn_color']) . '; ' . "\n"; } + if (!empty($theme_options['dd_menu_hover_color'])) { $style_ .= 'color : '.esc_attr($theme_options['dd_menu_hover_color']) . '; ' . "\n"; } + $style_ .= '}' . "\n"; + } + /*end of styles for responsive full width menu*/ + + $style_ .= '#header_language_select ul li.current > a { color : '.esc_attr($theme_options['menu_font_color']). '; } ' . "\n"; + if (!empty($theme_options['menu_bg_color'])) { $style_ .= '#header_language_select { background-color : '.esc_attr($theme_options['menu_bg_color']) . '; } ' . "\n"; } + + $style_ .= '#header_language_select ul li.current:hover > a { ' . "\n"; + if (!empty($theme_options['menu_btn_color'])) { $style_ .= 'background-color : '. esc_attr($theme_options['menu_btn_color']) . ';' . "\n"; } + if (!empty($theme_options['menu_hover_color'])) { $style_ .= 'color : '.esc_attr($theme_options['menu_hover_color']) . ';' . "\n"; } + $style_ .= '} ' . "\n"; + + /*Add Custom Colors to theme*/ + if (!empty($theme_options['p_font_color'])) { $style_ .= 'body {color : '. esc_attr($theme_options['p_font_color']) .'; } ' . "\n"; } + if (!empty($theme_options['widgets_sep_color'])) { + $style_ .= '#page .container #secondary .widget h3.widget-title, #page .container #secondary .widget h1.widget-title, header.post-header .post-title {border-color : '. esc_attr($theme_options['widgets_sep_color']) .'; } ' . "\n"; + $style_ .= 'body.single-product #page .related.products h2 {border-bottom-color : '. esc_attr($theme_options['widgets_sep_color']) .'; } ' . "\n"; + } + if (!empty($theme_options['a_font_color'])) { + + $a_font_color = esc_attr($theme_options['a_font_color']); + + $style_ .= 'a {color : '.$a_font_color.'; }'; + $style_ .= '#page .container #secondary>.widget_nav_menu>div>ul>li ul>li>a:before {color : '.$a_font_color.'; }'; + $style_ .= '#page .container #secondary .widget ul li.cat-item a:before {color : '.$a_font_color.'; }'; + $style_ .= 'html[dir="rtl"] #page .container #secondary>.widget_nav_menu>div>ul>li ul>li>a:after {color : '. $a_font_color .'; }'; + $style_ .= 'html[dir="rtl"] #page .container #secondary .widget ul li.cat-item a:after {color : '. $a_font_color .'; }'; + } + + if (!empty($theme_options['a_hover_font_color'])) { + $style_ .= 'a:hover {color : '. esc_attr($theme_options['a_hover_font_color']) .'; } ' . "\n"; + + $style_ .= '#page .container #secondary>.widget_nav_menu li.current-menu-item>a {color : '. esc_attr($theme_options['a_hover_font_color']) .'; } '; + + $style_ .= '#page .container #secondary>.widget_nav_menu>div>ul>li ul>li>a:hover:before, + #page .container #secondary>.widget_nav_menu>div>ul>li ul>li.current-menu-item>a:before, + #page .container #secondary>.widget_nav_menu>div>ul>li ul>li.current-menu-item>a:hover:before{color : '. esc_attr($theme_options['a_hover_font_color']) .'; }'; + + $style_ .= '#page .container #secondary .widget ul li.current-cat>a, + #page .container #secondary .widget ul li.cat-item ul li.current-cat a:before, + #page .container #secondary .widget ul li.cat-item a:hover:before{color : '. esc_attr($theme_options['a_hover_font_color']) .'; }'; + + $style_ .= 'html[dir="rtl"] #page .container #secondary>.widget_nav_menu>div>ul>li ul>li>a:hover:after,'; + $style_ .= 'html[dir="rtl"] #page .container #secondary>.widget_nav_menu>div>ul>li ul>li.current-menu-item>a:after,'; + $style_ .= 'html[dir="rtl"] #page .container #secondary>.widget_nav_menu>div>ul>li ul>li.current-menu-item>a:hover:after{color : '. esc_attr($theme_options['a_hover_font_color']) .'; } ' . "\n"; + + $style_ .= 'html[dir="rtl"] #page .container #secondary .widget ul li.current-cat>a, + html[dir="rtl"] #page .container #secondary .widget ul li.current-cat>a:after, + html[dir="rtl"] #page .container #secondary .widget ul li.cat-item a:hover:after{color : '. esc_attr($theme_options['a_hover_font_color']) .'; } '; + } + + if (!empty($theme_options['a_focus_font_color'])) { $style_ .= 'a:focus {color : '. esc_attr($theme_options['a_focus_font_color']) .'; } ' . "\n"; } + if (!empty($theme_options['a_active_font_color'])) { $style_ .= 'a:active {color : '. esc_attr($theme_options['a_active_font_color']) .'; } ' . "\n"; } + + if (!empty($theme_options['date_of_post_b_color'])) { + $style_ .= '.blog_post .date_of_post {background : none repeat scroll 0 0 '. esc_attr($theme_options['date_of_post_b_color']) .'; } ' . "\n"; + } + + if (!empty($theme_options['date_of_post_f_color'])) { + $style_ .= '.blog_post .date_of_post {color : '. esc_attr($theme_options['date_of_post_f_color']) .'; } ' . "\n"; + } + + //$woo_style_ .= '.num_of_product_cart {border-color: '. esc_attr($theme_options['menu_btn_color']) . '; } ' . "\n"; + if (!empty($theme_options['cart_color'])) { + $woo_style_ .= '.cart_image {color: '. esc_attr($theme_options['cart_color']) . '; } ' . "\n"; + $woo_style_ .= '.num_of_product_cart {border-color: '. esc_attr($theme_options['cart_color']) . '; } ' . "\n"; + } + + if (!empty($theme_options['btn_color'])) { + $btn_color = esc_attr($theme_options['btn_color']); + + $style_ .= 'button, input[type="button"], input[type="submit"], input[type="reset"]{background-color : '.$btn_color.' !important; } '; + $style_ .= 'body a.btn.btn-primary, body button.btn.btn-primary, body input[type="button"].btn.btn-primary , body input[type="submit"].btn.btn-primary {background-color : '.$btn_color.' !important; }'; + $woo_style_ .= '.woocommerce table.my_account_orders .order-actions .button, .woocommerce-page table.my_account_orders .order-actions .button{background-color : '.$btn_color.' !important; }'; + $style_ .= '.nav-links.shop .pages-links .page-numbers, .nav-links.shop .nav-next a, .nav-links.shop .nav-previous a{background-color : '.$btn_color.' !important; }'; + } + + if (!empty($theme_options['btn_active_color'])) { + $btn_active_color = esc_attr($theme_options['btn_active_color']); + + $style_ .= 'button:hover, button:active, button:focus{background-color : '.$btn_active_color.' !important; }'; + $style_ .= 'input[type="button"]:hover, input[type="button"]:active, input[type="button"]:focus{background-color : '.$btn_active_color.' !important; }'; + $style_ .= 'input[type="submit"]:hover, input[type="submit"]:active, input[type="submit"]:focus{background-color : '.$btn_active_color.' !important; }'; + $style_ .= 'input[type="reset"]:hover, input[type="reset"]:active, input[type="reset"]:focus{background-color : '.$btn_active_color.' !important; }'; + $style_ .= 'body a.btn.btn-primary:hover, body button.btn.btn-primary:hover, body input[type="button"].btn.btn-primary:hover , body input[type="submit"].btn.btn-primary:hover {background-color : '.$btn_active_color.' !important; }'; + $woo_style_ .= '.woocommerce table.my_account_orders .order-actions .button:hover, .woocommerce-page table.my_account_orders .order-actions .button:hover{background-color : '.$btn_active_color.' !important; }'; + $style_ .= '.nav-links.shop .pages-links .page-numbers:hover, .nav-links.shop .nav-next a:hover, .nav-links.shop .nav-previous a:hover, .nav-links.shop .pages-links .page-numbers.current{background-color : '.$btn_active_color.' !important; }'; + } + + /*social icons styles*/ + if (!empty($theme_options['soc_icon_bg_color'])) { + $style_ .= '.social-icon>a>i{background:'.$theme_options['soc_icon_bg_color'].'}' . "\n"; + } + if (!empty($theme_options['soc_icon_color'])) { + $style_ .= '.social-icon>a>i{color:'.$theme_options['soc_icon_color'].'}' . "\n"; + } + + + /*Woocommerce styles*/ + if (class_exists('woocommerce')){ + + if (!empty($theme_options['woo_shop_sidebar']) && !is_tax('product_tag')){ + $shop_sidebar_template = $theme_options['woo_shop_sidebar']; + if ($shop_sidebar_template == 3){ /*right sidebar template*/ + $woo_style_ .= '#page .container .woo-loop-content{float:left}'."\n"; + $woo_style_ .= '#page .container .woo-loop-sidebar{float:right}'."\n"; + $woo_style_ .= '#page .container .woo-loop-sidebar #secondary{float:right}'."\n"; + $woo_style_ .= '.woocommerce .woocommerce-ordering, .woocommerce-page .woocommerce-ordering{float:left}'."\n"; + } else { + $woo_style_ .= '#page .container .woo-loop-content{float:right}'."\n"; + $woo_style_ .= '#page .container .woo-loop-sidebar{float:left}'."\n"; + $woo_style_ .= '#page .container .woo-loop-sidebar #secondary{float:left}'."\n"; + $woo_style_ .= '.woocommerce .woocommerce-ordering, .woocommerce-page .woocommerce-ordering{float:right}'."\n"; + } + } + + if (!empty($theme_options['woo_product_sidebar'])){ + $product_sidebar_template = $theme_options['woo_product_sidebar']; + if ($product_sidebar_template == 3){ /*right sidebar template*/ + $woo_style_ .= '.single-product #page .container .woo-loop-content{float:left}'."\n"; + $woo_style_ .= '.single-product #page .container .woo-loop-sidebar{float:right}'."\n"; + $woo_style_ .= '.single-product #page .container .woo-loop-sidebar #secondary{float:right}'."\n"; + } else { + $woo_style_ .= '.single-product #page .container .woo-loop-content{float:right}'."\n"; + $woo_style_ .= '.single-product #page .container .woo-loop-sidebar{float:left}'."\n"; + $woo_style_ .= '.single-product #page .container .woo-loop-sidebar #secondary{float:left}'."\n"; + } + } + + /*price color*/ + if (!empty($theme_options['a_hover_font_color'])) { + $woo_style_ .= '.woocommerce ul.products li.product .price , + .woocommerce-page ul.products li.product .price, + body.woocommerce div.product span.price, + body.woocommerce-page div.product span.price, + body.woocommerce #content div.product span.price, + body.woocommerce-page #content div.product span.price, + body.woocommerce div.product p.price, + body.woocommerce-page div.product p.price, + body.woocommerce #content div.product p.price, + body.woocommerce-page #content div.product p.price{color : '. esc_attr($theme_options['a_hover_font_color']) .'; }'; + } + + /*buttons color*/ + if (!empty($theme_options['btn_color'])) { + $btn_color = esc_attr($theme_options['btn_color']); + + $woo_style_ .= '.woocommerce .woocommerce-message, .woocommerce-page .woocommerce-message{border-top:3px solid '.$btn_color.';}'; + $woo_style_ .= '.woocommerce .woocommerce-info, .woocommerce-page .woocommerce-info{border-top:3px solid '.$btn_color.';}'; + $woo_style_ .= '.single-product .woocommerce-message .button{background-color:'.$btn_color.';}'; + } + + /*buttons hover color*/ + if (!empty($theme_options['btn_active_color'])) + $woo_style_ .= '.single-product .woocommerce-message .button:hover{background-color:'.esc_attr($theme_options['btn_active_color']).';}'; + + if (!empty($theme_options['woo_sale_price_color'])) { + $color_rgba = fruitful_hex2rgb($theme_options['woo_sale_price_color']); + $color = $color_rgba['red'] . ',' . $color_rgba['green'] . ',' . $color_rgba['blue']; + $woo_style_ .= '.woocommerce ul.products li.product .price del, .woocommerce-page ul.products li.product .price del {color:rgba('.$color.',.5); }'; + } + + if (!empty($theme_options['woo_rating_color_regular'])) { + $woo_style_ .= '.woocommerce .star-rating, .woocommerce-page .star-rating, + .woocommerce p.stars a.star-1, + .woocommerce p.stars a.star-2, + .woocommerce p.stars a.star-3, + .woocommerce p.stars a.star-4, + .woocommerce p.stars a.star-5, + .woocommerce-page p.stars a.star-1, + .woocommerce-page p.stars a.star-2, + .woocommerce-page p.stars a.star-3, + .woocommerce-page p.stars a.star-4, + .woocommerce-page p.stars a.star-5 { + color:' .esc_attr($theme_options['woo_rating_color_regular']). '; }'; + } + + + if (!empty($theme_options['woo_rating_color_active'])) { + $woo_style_ .= '.woocommerce p.stars a.star-1:hover, + .woocommerce p.stars a.star-2:hover, + .woocommerce p.stars a.star-3:hover, + .woocommerce p.stars a.star-4:hover, + .woocommerce p.stars a.star-5:hover, + .woocommerce-page p.stars a.star-1:hover, + .woocommerce-page p.stars a.star-2:hover, + .woocommerce-page p.stars a.star-3:hover, + .woocommerce-page p.stars a.star-4:hover, + .woocommerce-page p.stars a.star-5:hover, + .woocommerce .star-rating:hover, .woocommerce-page .star-rating:hover { color:' .esc_attr($theme_options['woo_rating_color_active']). '; }'; + } + + } + + if (class_exists('BuddyPress')){ + if (!empty($theme_options['btn_color'])) { + $style_ .= '#buddypress input[type=submit]{background-color : '.esc_attr($theme_options['btn_color']).' !important; } ' . "\n"; + } + if (!empty($theme_options['btn_active_color'])) { + $style_ .= '#buddypress input[type=submit]:hover, #buddypress input[type=submit]:active, #buddypress input[type=submit]:focus{background-color : '.esc_attr($theme_options['btn_active_color']).' !important; } ' . "\n"; + } + } + + //} + //else { + //$style_ .= 'body {font-family:Open Sans, sans-serif}' . "\n"; + //} + //} + + if (!empty($theme_options['custom_css'])) { + $style_ .= wp_kses_stripslashes($theme_options['custom_css']) . "\n"; + } + + wp_add_inline_style( 'main-style', fruitful_compress_code($style_)); + if ($woo_style_ != '') { + wp_add_inline_style( 'woo-style', fruitful_compress_code($woo_style_)); + } + } + add_action('wp_enqueue_scripts', 'fruitful_get_responsive_style', 99); +} + +if ( ! function_exists( 'fruitful_get_sliders' ) ) { + function fruitful_get_sliders() { + global $post; + $prefix = '_fruitful_'; + $theme_options = fruitful_get_theme_options(); + $front_page_id = get_option('page_on_front'); + $blog_page_id = get_option('page_for_posts '); + + $slider_layout = 0; + if (is_page() && !is_front_page() && !is_home()) { + $slider_layout = get_post_meta( $post->ID, $prefix . 'slider_layout', true); + } elseif(!is_front_page() && is_home() && ($blog_page_id != 0)) { + /*Only for blog posts loop*/ + $slider_layout = get_post_meta( $blog_page_id, $prefix . 'slider_layout', true); + } elseif (is_front_page()) { + $slider_layout = get_post_meta( $front_page_id, $prefix . 'slider_layout', true); + } + + if ($slider_layout){ + if (!empty($theme_options['select_slider'])) { + if ($theme_options['select_slider'] == "1") { + echo fruitful_get_slider_layout_flex(); + } else if ($theme_options['select_slider'] == "2") { + echo fruitful_get_slider_layout_nivo(); + } + } + } + } +} + +/* Woocommerce functions */ +if (class_exists('Woocommerce')) { + /*change number of products per row shop page*/ + add_filter('loop_shop_columns', 'fruitful_loop_columns'); + if (!function_exists('fruitful_loop_columns')) { + function fruitful_loop_columns() { + $theme_options = fruitful_get_theme_options(); + if (!empty($theme_options['shop_num_row'])){ + return esc_attr($theme_options['shop_num_row']); + } else { + return '4'; + } + } + } + + /*change number of products per page shop page*/ + add_filter( 'loop_shop_per_page', 'fruitful_loop_shop_per_page', 20); + if (!function_exists('fruitful_loop_shop_per_page')) { + function fruitful_loop_shop_per_page(){ + $theme_options = fruitful_get_theme_options(); + $woo_shop_num_prod = get_option('posts_per_page'); + if (!empty($theme_options['woo_shop_num_prod'])) $woo_shop_num_prod = esc_attr($theme_options['woo_shop_num_prod']); + return $woo_shop_num_prod; + } + } + + /*remove sidebar from all woocommerce pages except shop page*/ + add_action( 'wp', 'init' ); + function init() { + if ( !is_shop() && !is_product_category()) { + remove_action( 'woocommerce_sidebar', 'woocommerce_get_sidebar', 10); + } + } + + /*remove woocommerce sidebar on some pages*/ + add_action('template_redirect', 'fruitful_remove_woo_sidebar'); + if (!function_exists('fruitful_remove_woo_sidebar')) { + function fruitful_remove_woo_sidebar() { + if (fruitful_get_woo_sidebar() == 1){ + remove_action('woocommerce_sidebar', 'woocommerce_get_sidebar'); + } + } + } + + /*check is woocommerce sidebar will be hidden*/ + if (!function_exists('fruitful_get_woo_sidebar')) { + function fruitful_get_woo_sidebar() { + $woo_sidebar = 2; + + + if ( is_shop() || is_product_category() || is_tax('product_tag')) { + $theme_options = fruitful_get_theme_options(); + if (!empty($theme_options['woo_shop_sidebar'])){ + $woo_sidebar = esc_attr($theme_options['woo_shop_sidebar']); + } + } + if ( is_product() ) { + $theme_options = fruitful_get_theme_options(); + if (!empty($theme_options['woo_product_sidebar'])){ + $woo_sidebar = esc_attr($theme_options['woo_product_sidebar']); + } + } + return $woo_sidebar; + } + } + + /*rewrite pagenavi for woocommerce*/ + remove_action('woocommerce_pagination', 'woocommerce_pagination', 10); + add_action( 'woocommerce_pagination', 'woocommerce_pagination', 10); + if ( ! function_exists( 'woocommerce_pagination' ) ) { + function woocommerce_pagination() { + fruitful_wp_corenavi(); + } + } + + /*change title in tabs on single product page*/ + add_filter('woocommerce_product_description_heading','fruitful_product_description_heading'); + function fruitful_product_description_heading() { + return ''; + } + + /*4 cross products for cart*/ + remove_action( 'woocommerce_cart_collaterals', 'woocommerce_cross_sell_display' ); + add_action( 'woocommerce_cart_collaterals', 'fruitful_woocommerce_cross_sell_display' ); + if ( ! function_exists( 'fruitful_woocommerce_cross_sell_display' ) ) { + function fruitful_woocommerce_cross_sell_display() { + + if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly + global $woocommerce_loop, $woocommerce, $product; + $crosssells = $woocommerce->cart->get_cross_sells(); + if ( sizeof( $crosssells ) == 0 ) return; + $meta_query = $woocommerce->query->get_meta_query(); + $args = array( + 'post_type' => 'product', + 'ignore_sticky_posts' => 1, + 'posts_per_page' => apply_filters( 'woocommerce_cross_sells_total', 4 ), + 'no_found_rows' => 1, + 'orderby' => 'rand', + 'post__in' => $crosssells, + 'meta_query' => $meta_query + ); + $products = new WP_Query( $args ); + $woocommerce_loop['columns'] = apply_filters( 'woocommerce_cross_sells_columns', 4 ); + if ( $products->have_posts() ) : ?> +
        +

        + + have_posts() ) : $products->the_post(); ?> + + + +
        + $posts_per_page, + 'columns' => $columns, + 'orderby' => $orderby, + ); + $defaults = array( + 'posts_per_page' => 2, + 'columns' => 2, + 'orderby' => 'rand' + ); + $args = wp_parse_args( $args, $defaults ); + wc_get_template( 'single-product/related.php', $args ); + } + } + + /*Update cart contents update when products are added to the cart via AJAX */ + add_filter('add_to_cart_fragments', 'fruitful_woocommerce_header_add_to_cart_fragment'); + if ( ! function_exists( 'fruitful_woocommerce_header_add_to_cart_fragment' ) ) { + function fruitful_woocommerce_header_add_to_cart_fragment( $fragments ) { + global $woocommerce; + $out = ''; + $out .= '
        '; + $out .= ''; + $out .= sprintf(_n('%d ', '%d ', $woocommerce->cart->cart_contents_count, 'fruitful'), $woocommerce->cart->cart_contents_count) .'
        '; + $fragments['a.cart-contents'] = $out; + return $fragments; + } + } +} + +if ( ! function_exists( 'fruitful_custom_css_and_slider_scripts' ) ) { +function fruitful_custom_css_and_slider_scripts() { + echo ''; +} + add_action('wp_head', 'fruitful_custom_css_and_slider_scripts', 25); +} + +if ( ! function_exists( 'fruitful_entry_meta' ) ) { +function fruitful_entry_meta() { +?> + + + + + + + + + + + + + + + +', + esc_url( get_permalink() ), + esc_attr( sprintf( __( 'Permalink to %s', 'fruitful' ), the_title_attribute( 'echo=0' ) ) ), + esc_attr( get_the_date( 'c' ) ), + esc_html( sprintf( $format_prefix, get_post_format_string( get_post_format() ), get_the_date() ) ) + ); + + if ($echo ) echo $date; + return $date; +} +} + + +if ( ! function_exists( 'fruitful_theme_options_validate' ) ) { +function fruitful_theme_options_validate($value) { + return $value; +} +} + +if ( ! function_exists( 'fruitful_customize_preview_js' ) ) { +function fruitful_customize_preview_js() { + wp_enqueue_script( 'fruitful-customizer', get_template_directory_uri() . '/js/theme-customizer.js', array( 'customize-preview' ), '20130226', true ); +} +add_action( 'customize_preview_init', 'fruitful_customize_preview_js' ); +} + +if ( ! function_exists( 'fruitful_metadevice' ) ) { + function fruitful_metadevice() { + $browser = ''; + $browser_ip = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone"); + $browser_an = strpos($_SERVER['HTTP_USER_AGENT'],"Android"); + $browser_ipad = strpos($_SERVER['HTTP_USER_AGENT'],"iPad"); + if ($browser_ip == true) { $browser = 'iphone'; } + if ($browser_an == true) { $browser = 'android'; } + if ($browser_ipad == true) { $browser = 'ipad'; } + + if($browser == 'iphone') { echo ''; } + if($browser == 'android') { echo ''; } + if($browser == 'ipad') { echo ''; } + } +} +add_action( 'wp_head', 'fruitful_metadevice' ); + +if ( ! function_exists( 'fruitful_esc_content_pbr' ) ) { + function fruitful_esc_content_pbr($content = null) { + $content = preg_replace( '%

         \s*

        %', '', $content ); + $Old = array( '
        ', '
        ' ); + $New = array( '','' ); + $content = str_replace( $Old, $New, $content ); + return $content; + } +} + +if ( ! function_exists( 'fruitful_get_class_pos' ) ) { + function fruitful_get_class_pos($index) { + if ($index == 0) { $pos_class = 'left-pos'; } + else if ($index == 1) { $pos_class = 'center-pos'; } + else { $pos_class = 'right-pos'; } + + return esc_attr($pos_class); + } +} + +if ( ! function_exists( 'fruitful_kses_data' ) ) { +function fruitful_kses_data($text = null) { + $allowed_tags = wp_kses_allowed_html( 'post' ); + return wp_kses($text, $allowed_tags); +} +} + +if ( ! function_exists( 'fruitful_get_languages_list' ) ) { + function fruitful_get_languages_list(){ + $theme_options = fruitful_get_theme_options(); + if( function_exists('icl_get_languages') && $theme_options['is_wpml_ready'] == 'on' ){ + $languages = icl_get_languages('skip_missing=0'); + + if(!empty($languages)){ + + echo '
        '; + } + } + } +} + +if ( ! function_exists( 'fruitful_wp_corenavi' ) ) { + function fruitful_wp_corenavi() { + global $wp_query, + $wp_rewrite; + $next_label = $prev_label = ''; + if (wp_is_mobile()) { + $next_label = __(' « ','fruitful'); + $prev_label = __(' » ','fruitful'); + } else { + $next_label = __('« Previous Page','fruitful'); + $prev_label = __('Next Page »','fruitful'); + } + + $pages = ''; + $max = $wp_query->max_num_pages; + if (!$current = get_query_var('paged')) { + $current = 1; + } + + $a['base'] = str_replace(999999999, '%#%', get_pagenum_link(999999999)); + $a['total'] = $max; + $a['current'] = $current; + + $total = 0; //1 - display the text "Page N of N", 0 - not display + $a['mid_size'] = 2; //how many links to show on the left and right of the current + $a['end_size'] = 1; //how many links to show in the beginning and end + $a['prev_text'] = ''; //text of the "Previous page" link + $a['next_text'] = ''; //text of the "Next page" link + + if ($max > 1) { + echo ''; + } + } +} + +/*rewrite get_product_search_form() function*/ +if ( ! function_exists( 'fruitful_get_product_search_form' ) ) { + function fruitful_get_product_search_form(){ + ?> + + ID != $blog_id) ) ? true : false ; + } +} + +if ( ! function_exists( 'fruitful_get_content_with_custom_sidebar' ) ) { + function fruitful_get_content_with_custom_sidebar($curr_sidebar = null) { + global $post; + + function get_content_part() { + global $post; + + ?> +
        +
        + '.__("Front page displays Error.", 'fruitful').' '.__('Select different pages!', 'fruitful').'
        '; + + } else { + if (!is_archive() && !is_search() && !is_404()) { + if (is_home()) { + if ( have_posts() ) : + /* The loop */ + while ( have_posts() ) : the_post(); + do_action('before_post_content_loop'); + get_template_part( 'content', get_post_format() ); + do_action('after_post_content_loop'); + endwhile; + fruitful_content_nav( 'nav-below' ); + else : + get_template_part( 'no-results', 'index' ); + endif; + } else { + + if ( have_posts() ) { + while ( have_posts() ) : the_post(); + if (is_page() && !is_front_page() && !is_home()) { + get_template_part( 'content', 'page' ); + + if (fruitful_state_page_comment()) { + comments_template( '', true ); + } + } else if (is_single()) { + get_template_part( 'content', get_post_format() ); + fruitful_content_nav( 'nav-below' ); + + if (fruitful_state_post_comment()) { + if ( comments_open() || '0' != get_comments_number() ) comments_template(); + } + } else if (is_front_page()) { + get_template_part( 'content', 'page' ); + } + endwhile; + } + } + } else { + ?> +
        +
        + + +
        ' ); + + } elseif ( is_tag() ) { + $tag_description = tag_description(); + if ( ! empty( $tag_description ) ) + echo apply_filters( 'tag_archive_meta', '
        ' . $tag_description . '
        ' ); + } + ?> + + + + +
        + + +
        +
        + + + + +
        + + +
        + +
        + + + + +
        + + +
        + +
        + + + ID , '_fruitful_page_layout', true ))?(get_post_meta( $post->ID , '_fruitful_page_layout', true )-1):esc_attr($options['layout_single_templ']); + $default_page_template = (get_post_meta( $post->ID , '_fruitful_page_layout', true ))?(get_post_meta( $post->ID , '_fruitful_page_layout', true )-1):esc_attr($options['layout_page_templ']); + if (!fruitful_is_blog()) { + if (is_archive()) { + $curr_template = $default_blog_template; + } else { + + if (class_exists('BuddyPress')){ + $bp_pages = get_option('bp-pages'); //possible pages - activity, members, register, activate + foreach ($bp_pages as $bp_page_slug => $bp_page_id){ + if (bp_is_current_component($bp_page_slug)){ + $curr_template = (get_post_meta( $bp_page_id , '_fruitful_page_layout', true ))?(get_post_meta( $bp_page_id , '_fruitful_page_layout', true )-1):0; + } else { + $curr_template = $default_page_template; + } + } + } else { + $curr_template = $default_page_template; + } + + } + } else { + if (is_single()) { + $curr_template = $default_post_template; + } else { + $curr_template = $default_blog_template; + } + } + } + + if ($curr_template == 0) { + get_html_custom_post_template('alpha', 'omega', $curr_sidebar, $curr_template); + } else if ($curr_template == 1) { + get_html_custom_post_template('alpha', 'omega', $curr_sidebar, $curr_template); + } else if ($curr_template == 2) { + get_html_custom_post_template('omega', 'alpha', $curr_sidebar, $curr_template); + } else { + if (is_home()) { + $curr_template = 1; + } + get_html_custom_post_template('alpha', 'omega', $curr_sidebar, $curr_template); + } + } +} + +if (!class_exists('ffs')){ + function fruitful_shortcodes_admin_notice(){ + echo '

        '; + echo __('Attention! Fruitful theme version 2.0 got major updates. You may have a problems with display content in shortcodes, because we created this part as plugin. You need install ','fruitful'); + echo 'Fruitful Shortcodes'; + echo __(' and use them.', 'fruitful'); + echo '

        '; + } + add_action('admin_notices', 'fruitful_shortcodes_admin_notice'); +} + + +if (class_exists('Woocommerce')) { + function fruitful_init_woo_actions() { + function go_hooks() { + remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs', 10); + remove_action( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_images', 20); + remove_action( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_sale_flash', 10); + remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5); + remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_rating', 10); + remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10); + add_action( 'woocommerce_before_single_product_summary', 'woocommerce_template_single_title', 5); + add_action( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_images', 10); + add_action( 'woocommerce_before_single_product_summary', 'woocommerce_template_single_rating', 20); + add_action( 'woocommerce_before_single_product_summary', 'woocommerce_template_single_price', 20); + add_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs', 10); + + } + + $woo_tabs_pos = fruitful_get_woo_sidebar(); + if ($woo_tabs_pos == 4) + go_hooks(); + + } + + add_action( 'wp', 'fruitful_init_woo_actions' , 10); +} + +if (class_exists('Woocommerce')) { + function fruitful_init_woo_styles() { + + function go_woo_tabs_left(){ + $style_ = $back_style = $woo_style_ = ''; + $theme_options = fruitful_get_theme_options(); + //$style_ .= '@media only screen and (min-width: 1024px) {body.woocommerce div.product div.summary, body.woocommerce-page div.product div.summary, body.woocommerce #content div.product div.summary, body.woocommerce-page #content div.product div.summary {max-width : 100%; }}' . "\n"; + $style_ .= '@media only screen and (min-width: 1024px) {body.woocommerce div.product .woocommerce-tabs, body.woocommerce-page div.product .woocommerce-tabs, body.woocommerce #content div.product .woocommerce-tabs, body.woocommerce-page #content div.product .woocommerce-tabs {float: left; }}' . "\n"; + $style_ .= '@media only screen and (max-width: 1024px) {body.woocommerce div.product .woocommerce-tabs, body.woocommerce-page div.product .woocommerce-tabs, body.woocommerce #content div.product .woocommerce-tabs, body.woocommerce-page #content div.product .woocommerce-tabs {margin: 0 0 15px 0;}}' . "\n"; + $style_ .= '@media only screen and (min-width: 1024px) {body.woocommerce div.product div.images, body.woocommerce-page div.product div.images, body.woocommerce #content div.product div.images, body.woocommerce-page #content div.product div.images {margin: 0 0 0 25px; float: right}}' . "\n"; + $style_ .= '.single.woocommerce span.onsale, .single.woocommerce-page span.onsale { top: 6px; right:15px; left: auto; position: absolute; display: block;}' . "\n"; + $style_ .= '@media only screen and (max-width: 1024px) {body.woocommerce div.product div.images, body.woocommerce-page div.product div.images, body.woocommerce #content div.product div.images, body.woocommerce-page #content div.product div.images{ clear: both; position: relative; margin: 20px auto; }}' . "\n"; + $style_ .= '@media only screen and (min-width: 1024px) {.entry-title, .woocommerce-product-rating, div[itemprop="offers"], div[itemprop="offers"].price{ display:inline-block; width: 565px;}}' . "\n"; + wp_add_inline_style( 'main-style', fruitful_compress_code($style_)); + if ($woo_style_ != '') { + wp_add_inline_style( 'woo-style', fruitful_compress_code($woo_style_)); + } + } + + function go_woo_tabs_center(){ + $style_ = $back_style = $woo_style_ = ''; + $theme_options = fruitful_get_theme_options(); + $style_ .= '@media only screen and (min-width: 1024px) {body.woocommerce div.product .woocommerce-tabs, body.woocommerce-page div.product .woocommerce-tabs, body.woocommerce #content div.product .woocommerce-tabs, body.woocommerce-page #content div.product .woocommerce-tabs {max-width : 100%; margin-top: 20px;}}' . "\n"; + wp_add_inline_style( 'main-style', fruitful_compress_code($style_)); + if ($woo_style_ != '') { + wp_add_inline_style( 'woo-style', fruitful_compress_code($woo_style_)); + } + } + + $woo_tabs_pos = fruitful_get_woo_sidebar(); + if ($woo_tabs_pos == 4) + go_woo_tabs_left(); + if ($woo_tabs_pos == 5) + go_woo_tabs_center(); + + } + + add_action( 'wp_enqueue_scripts', 'fruitful_init_woo_styles', 100); +} diff --git a/themes/fruitful/header.php b/themes/fruitful/header.php new file mode 100644 index 0000000..e012df1 --- /dev/null +++ b/themes/fruitful/header.php @@ -0,0 +1,122 @@ + section and everything up till
        +* @package WordPress +* @subpackage Fruitful theme +* @since Fruitful theme 1.0 +**/ +?> + + + +> + + + + +<?php wp_title( '|', true, 'right' ); ?> + + + + + + +> + + + + +
        +
        + +
        \ No newline at end of file diff --git a/themes/fruitful/image.php b/themes/fruitful/image.php new file mode 100644 index 0000000..f5a6d0c --- /dev/null +++ b/themes/fruitful/image.php @@ -0,0 +1,111 @@ + + +
        +
        + + + +
        > +
        +

        + + + + +
        + +
        + +
        +
        + $post->post_parent, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID' ) ) ); + foreach ( $attachments as $k => $attachment ) { + if ( $attachment->ID == $post->ID ) + break; + } + $k++; + // If there is more than 1 attachment in a gallery + if ( count( $attachments ) > 1 ) { + if ( isset( $attachments[ $k ] ) ) + // get the URL of the next image attachment + $next_attachment_url = get_attachment_link( $attachments[ $k ]->ID ); + else + // or get the URL of the first image attachment + $next_attachment_url = get_attachment_link( $attachments[ 0 ]->ID ); + } else { + // or, if there's only 1 image, get the URL of the image + $next_attachment_url = wp_get_attachment_url(); + } + ?> + + ID, $attachment_size ); + ?> +
        + + post_excerpt ) ) : ?> +
        + +
        + +
        + + + '' ) ); ?> + +
        + +
        + + Post a comment or leave a trackback: Trackback URL.', 'fruitful' ), get_trackback_url() ); ?> + + Trackback URL.', 'fruitful' ), get_trackback_url() ); ?> + + post a comment.', 'fruitful' ); ?> + + + + ', '' ); ?> +
        +
        + + + + +
        +
        + + \ No newline at end of file diff --git a/themes/fruitful/images/action.png b/themes/fruitful/images/action.png new file mode 100644 index 0000000..0354312 Binary files /dev/null and b/themes/fruitful/images/action.png differ diff --git a/themes/fruitful/images/bg-submenu.png b/themes/fruitful/images/bg-submenu.png new file mode 100644 index 0000000..583893d Binary files /dev/null and b/themes/fruitful/images/bg-submenu.png differ diff --git a/themes/fruitful/images/blog_date.png b/themes/fruitful/images/blog_date.png new file mode 100644 index 0000000..d3c8d6d Binary files /dev/null and b/themes/fruitful/images/blog_date.png differ diff --git a/themes/fruitful/images/btm-descr-hr.png b/themes/fruitful/images/btm-descr-hr.png new file mode 100644 index 0000000..74efcee Binary files /dev/null and b/themes/fruitful/images/btm-descr-hr.png differ diff --git a/themes/fruitful/images/category.png b/themes/fruitful/images/category.png new file mode 100644 index 0000000..e82e6ea Binary files /dev/null and b/themes/fruitful/images/category.png differ diff --git a/themes/fruitful/images/comment.png b/themes/fruitful/images/comment.png new file mode 100644 index 0000000..09a9580 Binary files /dev/null and b/themes/fruitful/images/comment.png differ diff --git a/themes/fruitful/images/default_favicon.png b/themes/fruitful/images/default_favicon.png new file mode 100644 index 0000000..143639b Binary files /dev/null and b/themes/fruitful/images/default_favicon.png differ diff --git a/themes/fruitful/images/default_icon.png b/themes/fruitful/images/default_icon.png new file mode 100644 index 0000000..e6f402f Binary files /dev/null and b/themes/fruitful/images/default_icon.png differ diff --git a/themes/fruitful/images/default_logo.png b/themes/fruitful/images/default_logo.png new file mode 100644 index 0000000..7823882 Binary files /dev/null and b/themes/fruitful/images/default_logo.png differ diff --git a/themes/fruitful/images/error.png b/themes/fruitful/images/error.png new file mode 100644 index 0000000..0168ec1 Binary files /dev/null and b/themes/fruitful/images/error.png differ diff --git a/themes/fruitful/images/image-linked-hover.png b/themes/fruitful/images/image-linked-hover.png new file mode 100644 index 0000000..ac919bb Binary files /dev/null and b/themes/fruitful/images/image-linked-hover.png differ diff --git a/themes/fruitful/images/image-linked.png b/themes/fruitful/images/image-linked.png new file mode 100644 index 0000000..e24deec Binary files /dev/null and b/themes/fruitful/images/image-linked.png differ diff --git a/themes/fruitful/images/menu_shadow.png b/themes/fruitful/images/menu_shadow.png new file mode 100644 index 0000000..da2159a Binary files /dev/null and b/themes/fruitful/images/menu_shadow.png differ diff --git a/themes/fruitful/images/post-link.png b/themes/fruitful/images/post-link.png new file mode 100644 index 0000000..c720332 Binary files /dev/null and b/themes/fruitful/images/post-link.png differ diff --git a/themes/fruitful/images/post-password.png b/themes/fruitful/images/post-password.png new file mode 100644 index 0000000..cf1931d Binary files /dev/null and b/themes/fruitful/images/post-password.png differ diff --git a/themes/fruitful/images/post-quote.png b/themes/fruitful/images/post-quote.png new file mode 100644 index 0000000..d25adcb Binary files /dev/null and b/themes/fruitful/images/post-quote.png differ diff --git a/themes/fruitful/images/post-twitter.png b/themes/fruitful/images/post-twitter.png new file mode 100644 index 0000000..392c588 Binary files /dev/null and b/themes/fruitful/images/post-twitter.png differ diff --git a/themes/fruitful/images/search_icon.png b/themes/fruitful/images/search_icon.png new file mode 100644 index 0000000..da498d5 Binary files /dev/null and b/themes/fruitful/images/search_icon.png differ diff --git a/themes/fruitful/images/search_icon_rtl.png b/themes/fruitful/images/search_icon_rtl.png new file mode 100644 index 0000000..2780f59 Binary files /dev/null and b/themes/fruitful/images/search_icon_rtl.png differ diff --git a/themes/fruitful/images/social.png b/themes/fruitful/images/social.png new file mode 100644 index 0000000..1a441ae Binary files /dev/null and b/themes/fruitful/images/social.png differ diff --git a/themes/fruitful/images/tag.png b/themes/fruitful/images/tag.png new file mode 100644 index 0000000..cd216a9 Binary files /dev/null and b/themes/fruitful/images/tag.png differ diff --git a/themes/fruitful/images/top-descr-hr.png b/themes/fruitful/images/top-descr-hr.png new file mode 100644 index 0000000..00b59c6 Binary files /dev/null and b/themes/fruitful/images/top-descr-hr.png differ diff --git a/themes/fruitful/images/ulul_li_hr.png b/themes/fruitful/images/ulul_li_hr.png new file mode 100644 index 0000000..15494c6 Binary files /dev/null and b/themes/fruitful/images/ulul_li_hr.png differ diff --git a/themes/fruitful/images/user.png b/themes/fruitful/images/user.png new file mode 100644 index 0000000..35df2bf Binary files /dev/null and b/themes/fruitful/images/user.png differ diff --git a/themes/fruitful/inc/css/admin-rtl.css b/themes/fruitful/inc/css/admin-rtl.css new file mode 100644 index 0000000..c34a8ae --- /dev/null +++ b/themes/fruitful/inc/css/admin-rtl.css @@ -0,0 +1,282 @@ +.form-admin-fruitful {float:right; width:914px; display:block; background: #fff; padding: 0px 20px 20px 0px;font-family: 'Arial', sans-serif;} +.form-admin-fruitful h4 {font-weight: normal; margin: 5px 0;} +#wpbody .form-admin-fruitful select{left:initial !important;} +.form-admin-fruitful .header , +.form-admin-fruitful .footer {float:right;width: 904px;padding: 10px 0 10px 10px;} +.form-admin-fruitful .content{float:right;width:914px;position:relative; min-height:600px;margin-top:8px;} +.form-admin-fruitful .header div.error {float:right;} +.form-admin-fruitful .footer p.submit {line-height:10px; padding:0} +.form-admin-fruitful .footer .button-primary, +.form-admin-fruitful .header .button-primary {width: 120px;text-transform: uppercase;} +.form-admin-fruitful #message.updated.woocommerce-message.wc-connect{float:right; clear:both; max-width:98%} +.form-admin-fruitful #message.updated.woocommerce-message.wc-connect p.submit{width:auto} +.form-admin-fruitful #message.updated.woocommerce-message.wc-connect .button-primary{width:auto} +.form-admin-fruitful .header p.submit {padding:0;} +.form-admin-fruitful p.submit {width:130px;float:left;margin-top:15px;} +.form-admin-fruitful #icon-theme_options { background: url("../images/icons32.png") no-repeat scroll -492px -5px transparent;} +.form-admin-fruitful .title_theme {font-family:Arial; font-size:22px; font-weight:bold; display:block; float:right; line-height: 40px;} +.form-admin-fruitful .content .menu-options { bottom: 0; height: 100%; position: absolute; top: 0; width: 168px; } +.form-admin-fruitful .content .menu-options ul { float: rigth; margin: 0; width: 100%;} +.form-admin-fruitful .content .menu-options ul li { float: right; margin: 0; width: 156px; min-height: 25px; border-bottom: 1px solid #e5e5e5; border-left: 1px solid #e5e5e5; padding: 0 5px 0 0; background-image: url(../images/menu_shadow_rtl.png); background-repeat: no-repeat; background-position: left 0; border-right: 1px solid #FFFFFF;} +.form-admin-fruitful .content .menu-options ul li.current {background-color: #fefefe; border-right:1px solid #e5e5e5; border-left:0; -webkit-border-top-right-radius: 4px; -webkit-border-bottom-right-radius: 4px; -moz-border-radius-topright: 4px; -moz-border-radius-bottomright: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; background-image:none;} +.form-admin-fruitful .content .menu-options ul li:first-child {border-top:1px solid #e5e5e5;} +.form-admin-fruitful .content .menu-options ul li.current a {border-bottom-color: #6D6D6D; border-top-color: #808080; color:#3e3e3e; outline: 0;} +.form-admin-fruitful .content .menu-options ul li a {float: right; font-weight: bold; line-height: 25px; min-width: 10em; padding: 14px 5px; width: 150px; text-decoration:none; color:#818181; } +.form-admin-fruitful .content .menu-options ul li a:hover {color:#e1704b} +a:hover, a:active, a:focus { outline: 0; } +.form-admin-fruitful .content .menu-options ul li a #menu_img_0, +.form-admin-fruitful .content .menu-options ul li a #menu_img_1, +.form-admin-fruitful .content .menu-options ul li a #menu_img_2, +.form-admin-fruitful .content .menu-options ul li a #menu_img_3, +.form-admin-fruitful .content .menu-options ul li a #menu_img_4, +.form-admin-fruitful .content .menu-options ul li a #menu_img_5, +.form-admin-fruitful .content .menu-options ul li a #menu_img_6, +.form-admin-fruitful .content .menu-options ul li a #menu_img_7, +.form-admin-fruitful .content .menu-options ul li a #menu_img_8, +.form-admin-fruitful .content .menu-options ul li a #menu_img_9, +.form-admin-fruitful .content .menu-options ul li a #menu_img_10 {background-image:url(../images/admin_menu_icon.png); background-repeat:no-repeat; display:block; width:30px; height:25px; float:right; margin: 0 0 0 10px;} + +.form-admin-fruitful .content .menu-options ul li a #menu_img_0 {background-position:-648px 0;} +.form-admin-fruitful .content .menu-options ul li a #menu_img_1 {background-position:-891px 0;} +.form-admin-fruitful .content .menu-options ul li a #menu_img_2 {background-position:0 0;} +.form-admin-fruitful .content .menu-options ul li a #menu_img_3 {background-position: -93px 0;} +.form-admin-fruitful .content .menu-options ul li a #menu_img_4 {background-position:-185px 0;} +.form-admin-fruitful .content .menu-options ul li a #menu_img_5 {background-position:-275px 0;} +.form-admin-fruitful .content .menu-options ul li a #menu_img_6 {background-position:-369px 0;} +.form-admin-fruitful .content .menu-options ul li a #menu_img_7 {background-position:-463px 0;} +.form-admin-fruitful .content .menu-options ul li a #menu_img_8 {background-position:-555px 0;} +.form-admin-fruitful .content .menu-options ul li a #menu_img_9 {background-position:-738px 0;} +.form-admin-fruitful .content .menu-options ul li a #menu_img_10{background-position:-925px 0;} + +.form-admin-fruitful .content .menu-options ul li.current a #menu_img_0 {background-position:-677px 0;} +.form-admin-fruitful .content .menu-options ul li.current a #menu_img_1 {background-position:-860px 0;} +.form-admin-fruitful .content .menu-options ul li.current a #menu_img_2 {background-position:-31px 0;} +.form-admin-fruitful .content .menu-options ul li.current a #menu_img_3 {background-position:-124px 0;} +.form-admin-fruitful .content .menu-options ul li.current a #menu_img_4 {background-position:-214px 0;} +.form-admin-fruitful .content .menu-options ul li.current a #menu_img_5 {background-position:-307px 0;} +.form-admin-fruitful .content .menu-options ul li.current a #menu_img_6 {background-position:-400px 0;} +.form-admin-fruitful .content .menu-options ul li.current a #menu_img_7 {background-position:-494px 0;} +.form-admin-fruitful .content .menu-options ul li.current a #menu_img_8 {background-position:-586px 0;} +.form-admin-fruitful .content .menu-options ul li.current a #menu_img_9 {background-position:-768px 0;} +.form-admin-fruitful .content .menu-options ul li.current a #menu_img_10{background-position:-962px 0;} + +.form-admin-fruitful .content .settings-section { background: #FFFFFF; float: left; padding: 15px 0 15px 34px; width: 710px; display:none; min-height:600px} +.form-admin-fruitful .content .settings-section input[type="text"].text-input { float:right; width:100%; margin:0 0 10px 0; padding-right: 5px; height: 30px;} +.form-admin-fruitful .content .settings-section input[type="file"] { display:none} +.form-admin-fruitful .content .settings-section .save-options {float:right; width:100%; min-height:20px; display:none } +.form-admin-fruitful .content .settings-section input.of-input {width: 430px;} +.form-admin-fruitful .content .settings-section .form-table tbody tr td #upload_bg_preview {display:none} +.form-admin-fruitful .content .settings-section .socials { float: right; margin: -12px 0 0; width: 100%;} +.form-admin-fruitful .content .settings-section h1, +.form-admin-fruitful .content .settings-section h2, .form-admin-fruitful .content .settings-section h3, .form-admin-fruitful .content .settings-section h4, +.form-admin-fruitful .content .settings-section h5, .form-admin-fruitful .content .settings-section h6 { text-shadow: 0 1px 0 #FFFFFF;} +.form-admin-fruitful .content .settings-section .none {display:none} +.form-admin-fruitful .content #settings-section-5 input[type="text"].text-input {float: right; width: 50px;} +.form-admin-fruitful .content #settings-section-5 #set_form_row_4 h4 {margin: 5px 0px; float: right; padding-left: 10px; text-align: right;} +.form-admin-fruitful .content #settings-section-5 #set_form_row_4 .box-options {width: 150px;} +.form-admin-fruitful .content #settings-section-4 h4 {font-weight: normal} +.form-admin-fruitful .content .settings-section .upload-image {float:right; margin:10px 0; border: 1px solid #DFDFDF;} +.form-admin-fruitful .content .settings-section hr {margin:20px 0; float:right; width:100%; background-color:#DFDFDF; color:#DFDFDF; border:0; height:1px} +.form-admin-fruitful .content .settings-section .slides, .form-admin-fruitful .content .settings-section .slides .slide {float:right; width:100%; } +.form-admin-fruitful .content .settings-section .slides .slide {background-color: #F5F5F5; background-image: -moz-linear-gradient(center top , #F9F9F9, #F5F5F5); border: 1px solid #DFDFDF; border-radius: 3px 3px 3px 3px; box-shadow: 0 1px 0 #FFFFFF inset; padding: 10px 10px 2px 10px ; width: 95%; margin: 0 0 20px;} +.form-admin-fruitful .content .settings-section .slides .slide h4 {margin:0 0 10px 0; cursor:move} +.form-admin-fruitful .content .settings-section .settings-form-row .box-options .slides .slide h4 span.content-close-slide {cursor: pointer; float: left; height: 30px; width: 27px; background: url("../images/arrows.png") no-repeat scroll 6px 7px transparent; margin: -5px 0 0;} +.form-admin-fruitful .content .settings-section .settings-form-row .box-options .slides .slide h4 span.remove-slide {cursor: pointer; float: left; height: 16px; width: 20px; background: url("../images/cross.png") no-repeat scroll 0 0 transparent; margin: 1px 0 0 1px;} +.form-admin-fruitful .content .settings-section .settings-form-row .box-options .add_new_btn {float: left; margin: 15px 8px 0; width: 160px; text-align: center;} +.form-admin-fruitful .content .settings-section .settings-form-row .box-options .slides-btn {float:right; width: 98.3%; margin:0 0 5px 0} +.form-admin-fruitful .content .settings-section .settings-form-row .box-options .slides-btn .collapse_all,.form-admin-fruitful .content .settings-section .settings-form-row .box-options .slides-btn .expand_all {float:left; width:90px; text-align: left;} +.form-admin-fruitful .content .settings-section .settings-form-row .box-options .slides-btn .collapse_all:hover,.form-admin-fruitful .content .settings-section .settings-form-row .box-options .slides-btn .expand_all:hover {color:#21759B; cursor:pointer;} +.form-admin-fruitful .content .settings-section .logo_img {width:160px; height:60px} +.form-admin-fruitful .content .settings-section .settings-form-row .box-options h4.full-width, .form-admin-fruitful .content .settings-section .settings-form-row .box-options .text_fonts {float:right; width:100%; margin: 0 0 10px 0; } +.form-admin-fruitful .content .settings-section .settings-form-row .box-options h4.full-width { color: #3E3E3E; font-family: Arial; font-size: 13px; font-weight: normal; margin: 0 0 2px;} +.form-admin-fruitful .content .settings-section .settings-form-row .box-options .text_fonts .sample_text { border: 1px solid #DDDDDD; float: right; margin: 0 0 10px 250px; padding: 10px; width: 275px;} +.form-admin-fruitful .content .settings-section .settings-form-row .box-options .box-option {float:right; width:100%; margin:0px 0 10px 0; } +.form-admin-fruitful .content .settings-section .settings-form-row .box-options .upload_button_div {float:right; width:100%; margin:20px 0;} +.form-admin-fruitful .reset-btn {width: 120px; text-align: center;} +/* Save modal window */ +.save-options { background-color: rgba(0, 0, 0, 0.7); display: none; height: 245px; right: 0; position: absolute; top: 0; width: 485px; z-index: 9999999; -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px;} +.save-options .icon-sc, .save-options .icon-al {float: right; height: 60px; margin: 55px 0 0; width: 100%;} +.save-options .icon-sc {background:url(../images/success.png) no-repeat center center transparent; } +.save-options .icon-al {background:url(../images/error.png) no-repeat center center transparent; } +.save-options .message-text {color: #FFFFFF; display: inline-block; float: right; font-family: 'Open sans',sans-serif; font-size: 20px; font-weight: 600; line-height: 22px; margin: 28px 0 0; text-align: center; text-transform: uppercase; width: 100%;} +/* End save modal window */ +.form-admin-fruitful .content .settings-section .settings-form-row { float: right; padding: 0 25px; width: 90%; margin: 0 0 25px 0;} +.form-admin-fruitful .content .settings-section .settings-form-row h3 {color: #3e3e3e; font-family: Arial; font-size:18px; font-weight:bold; padding:0; margin:0 0 5px} +.form-admin-fruitful .content .settings-section .settings-form-row .add_element_info {color:#a0a0a0; font-family: Arial; font-size:13px; float:right; width:100%; display:block; margin: 0 0 10px;} +.form-admin-fruitful .content .settings-section .settings-form-row .box-options {float:right; width:100%} +.box-options label {font-family: Arial;} +.sidebar-promo {float: right; width:298px; max-width: 934px; padding: 0; min-height: 150px; background-color: #f1f1f1; margin:0;} +.sidebar-promo-widget{float:right; width:254px; padding: 15px 22px 5px; margin:0;} +.sidebar-promo .sidebar-promo-content{float: right;padding:15px 20px 25px; background-color: #ffffff; margin:0;} +.sidebar-promo h3 {color: #3e3e3e; font-weight: bold; font-size: 16px; padding: 6px 40px 6px 0; margin: 0 0 20px 0;} +.sidebar-promo .promo-support h3 {background: url('../images/support.png') no-repeat right 0 transparent;} +.sidebar-promo .promo-customization h3 {background: url('../images/customization.png') no-repeat right 0 transparent;} +.sidebar-promo p {color:#3e3e3e; font-size:14px; margin:0 0 1.5em 0; padding:0; font-family:Arial; line-height:24px;} +.form-admin-fruitful .content .settings-section .settings-form-row .box-options #slider_main_options {display:none; float: right; margin: 0 0 20px 0;} +.box-options .upload_button_div .reset_btn,.box-options ul.slides li.slide .slide-content .upload_button_div .reset_slide_btn {margin-right:5px} +#logo-w, #logo-h {width:105px} +#tracking_code {width:150px} +.no-slider-select, .flex-slider, .nivo-slider {display:none} +.box-image {float:right; display:block; width:100%; clear:both;} +.box-image .img-container {border: 2px dashed #d7d7d7; display: inline-block; float: right; height: 100%; margin: 0 0 20px; max-height: 430px; max-width: 100%; overflow: hidden; position: relative; width: auto;} +.box-image .img-container img {height:inherit; width:100%; float:right;} +/* .box-image .img-container.logo { max-width:160px; max-height:60px; height:60px;} +.box-image .img-container.logo_retina { max-width:320px; max-height:120px; height:120px;} +.box-image .img-container.favicon { max-width:16px; max-height:16px; height:16px;} +.box-image .img-container.favicon_iphone { max-width:57px; max-height:57px; height:57px;} +.box-image .img-container.favicon_iphone_retina { max-width:114px; max-height:114px; height:114px;} +.box-image .img-container.favicon_ipad { max-width:72px; max-height:72px; height:72px;} +.box-image .img-container.favicon_ipad_retina { max-width:144px; max-height:144px; height:144px;} */ + +.box-image .img-container.custom-slide {max-width:608px; max-height:300px; height:300px; border: 0; -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px;} +.box-image .of-area {float: right; height: 100px; margin: 0 0 10px; width: 100%; } +#btn_idc { float: right;width: 100%; max-width:150px; text-align: center; cursor:pointer;} +#css-text, #footer-text { background: none repeat scroll 0 0 #F9F9F9; font-family: Consolas,Monaco,monospace; font-size: 12px; outline: 0 none; } +#css-text:focus, #footer-text:focus {border-color:#aaa;} +.small_input {float: right !important; width: 50px !important;} + +div.updated, div.error { margin: 15px 0 15px; } + +#settings-section-4 .settings-form-row { width:42%; } +.newrow {clear:both; content:"";} + +@media only screen and (min-width: 1200px) and (max-width: 1500px) { + .form-admin-fruitful{width:914px;max-width:914px;width:calc(100% - 320px);} + .form-admin-fruitful .content{width:914px;width:calc(100% - 20px);} + .form-admin-fruitful .header, .form-admin-fruitful .footer{width: 904px;width:calc(100% - 10px);} + .form-admin-fruitful .content .settings-section{width:710px;width:calc(100% - 205px);} +} + +@media only screen and (min-width: 1200px) { + .form-admin-fruitful .content{min-width: 520px;} +} + +@media only screen and (max-width: 1199px) { + .sidebar-promo{width:auto;margin-top:25px;} + .sidebar-promo-widget{width:auto;padding:15px 0} + .form-admin-fruitful{width:914px;width:calc(100% - 20px);} + .form-admin-fruitful .content{width:914px;width:calc(100% - 20px);} + .form-admin-fruitful .header, .form-admin-fruitful .footer{width: 904px;width:calc(100% - 10px);} + .form-admin-fruitful .content .settings-section{width:710px;width:calc(100% - 205px);} +} + +@media only screen and (max-width: 641px) { + .form-admin-fruitful { padding:0 1% 20px 0; width:99%; min-width:294px;} + .form-admin-fruitful .header, .form-admin-fruitful .footer { padding: 10px 0 10px 0; width: 100%; } + .form-admin-fruitful .content .settings-section {width: 75%; background: none;} + .form-admin-fruitful .header, .form-admin-fruitful .footer, .form-admin-fruitful .content {width:100%; } + .box-image .img-container.custom-slide {max-height: 220px;} + .menu-options span.menu-text{display:none} + .form-admin-fruitful .content .menu-options{width:56px;} + .form-admin-fruitful .content .menu-options ul li {padding: 0 5px 0 0;width:50px;} + .form-admin-fruitful .content .menu-options ul li a {min-width: initial;padding: 14px 5px;width: 40px;} + .form-admin-fruitful .content .menu-options ul li a span.menu-img{margin:0 !important;} + .form-admin-fruitful .footer p.submit, .form-admin-fruitful .header p.submit {margin-left:10px;} + #wpcontent .form-admin-fruitful .box-image .img-container img{height: auto;} + .form-admin-fruitful .content .settings-section .slides .slide h4 {margin: 0 0 10px 0; line-height: 36px;} + .form-admin-fruitful .content .settings-section .settings-form-row .box-options .slides .slide h4 span.content-close-slide {background: url("../images/arrows.png") no-repeat scroll 15px 17px transparent; margin: -5px 0 0; padding: 10px;} + .form-admin-fruitful .content .settings-section .settings-form-row .box-options .slides .slide h4 span.remove-slide {background: url("../images/cross.png") no-repeat scroll 7px 10px transparent; padding: 10px 5px;} + #settings-section-4 .settings-form-row { width:286px; } + body .jq-selectbox__select{width:160px} + body .jq-selectbox__dropdown{width:215px;} +} + +@media only screen +and (min-device-width : 320px) +and (max-device-width : 568px) { + .form-admin-fruitful .header, .form-admin-fruitful .footer { padding: 10px 0 10px 0; width: 100%; } + .form-admin-fruitful .content .settings-section {width:70%;} + .form-admin-fruitful .header, .form-admin-fruitful .footer, .form-admin-fruitful .content {width:100%; } + .box-image .img-container.custom-slide {max-height: 220px;} + .form-admin-fruitful .content {min-height:600px;min-width: 120px;} + .jq-selectbox__select {width: 150px !important;} + .form-admin-fruitful .content .settings-section .settings-form-row .box-options .text_fonts .sample_text {margin: 0 0 10px 0;width: 184px;} + .settings-form-row select{width:205px;} + .colorpicker { right: 0 !important;} + #settings-section-4 .settings-form-row { width:286px; } +} + +/* Disable hover on iPhone */ +@media only screen and (min-device-width : 641px) { + .form-admin-fruitful .content .menu-options ul li:hover > a #menu_img_0 {background-position:-706px 0} + .form-admin-fruitful .content .menu-options ul li:hover > a #menu_img_1 {background-position:-829px 0} + .form-admin-fruitful .content .menu-options ul li:hover > a #menu_img_2 {background-position:-62px 0} + .form-admin-fruitful .content .menu-options ul li:hover > a #menu_img_3 {background-position:-155px 0} + .form-admin-fruitful .content .menu-options ul li:hover > a #menu_img_4 {background-position:-245px 0} + .form-admin-fruitful .content .menu-options ul li:hover > a #menu_img_5 {background-position:-337px 0} + .form-admin-fruitful .content .menu-options ul li:hover > a #menu_img_6 {background-position:-431px 0} + .form-admin-fruitful .content .menu-options ul li:hover > a #menu_img_7 {background-position:-525px 0} + .form-admin-fruitful .content .menu-options ul li:hover > a #menu_img_8 {background-position:-617px 0} + .form-admin-fruitful .content .menu-options ul li:hover > a #menu_img_9 {background-position:-798px 0} + .form-admin-fruitful .content .menu-options ul li:hover > a #menu_img_10{background-position:-999px 0} +} + +/* Retina displays - all */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), +only screen and (min--moz-device-pixel-ratio: 1.5), +only screen and (min-resolution: 240dpi) { + .form-admin-fruitful .content .menu-options ul li a #menu_img_0, + .form-admin-fruitful .content .menu-options ul li a #menu_img_1, + .form-admin-fruitful .content .menu-options ul li a #menu_img_2, + .form-admin-fruitful .content .menu-options ul li a #menu_img_3, + .form-admin-fruitful .content .menu-options ul li a #menu_img_4, + .form-admin-fruitful .content .menu-options ul li a #menu_img_5, + .form-admin-fruitful .content .menu-options ul li a #menu_img_6, + .form-admin-fruitful .content .menu-options ul li a #menu_img_7, + .form-admin-fruitful .content .menu-options ul li a #menu_img_8, + .form-admin-fruitful .content .menu-options ul li a #menu_img_9, + .form-admin-fruitful .content .menu-options ul li a #menu_img_10 { + background: url('../images/admin_menu_icon@2x.png') 0 0 no-repeat transparent; + background-size: 1030px; + } + .form-admin-fruitful .content .menu-options ul li a #menu_img_0 {background-position:-646px 0;} + .form-admin-fruitful .content .menu-options ul li a #menu_img_1 {background-position:-891px 0;} + .form-admin-fruitful .content .menu-options ul li a #menu_img_2 {background-position:0 0;} + .form-admin-fruitful .content .menu-options ul li a #menu_img_3 {background-position: -94px 0;} + .form-admin-fruitful .content .menu-options ul li a #menu_img_4 {background-position:-185px 0;} + .form-admin-fruitful .content .menu-options ul li a #menu_img_5 {background-position:-275px 0;} + .form-admin-fruitful .content .menu-options ul li a #menu_img_6 {background-position:-368px 0;} + .form-admin-fruitful .content .menu-options ul li a #menu_img_7 {background-position:-463px 0;} + .form-admin-fruitful .content .menu-options ul li a #menu_img_8 {background-position:-555px 0;} + .form-admin-fruitful .content .menu-options ul li a #menu_img_9 {background-position:-739px 0;} + .form-admin-fruitful .content .menu-options ul li a #menu_img_10{background-position:-926px 0;} + + .form-admin-fruitful .content .menu-options ul li.current a #menu_img_0 {background-position:-675px 0;} + .form-admin-fruitful .content .menu-options ul li.current a #menu_img_1 {background-position:-860px 0;} + .form-admin-fruitful .content .menu-options ul li.current a #menu_img_2 {background-position:-31px 0;} + .form-admin-fruitful .content .menu-options ul li.current a #menu_img_3 {background-position:-124px 0;} + .form-admin-fruitful .content .menu-options ul li.current a #menu_img_4 {background-position:-214px 0;} + .form-admin-fruitful .content .menu-options ul li.current a #menu_img_5 {background-position:-307px 0;} + .form-admin-fruitful .content .menu-options ul li.current a #menu_img_6 {background-position:-400px 0;} + .form-admin-fruitful .content .menu-options ul li.current a #menu_img_7 {background-position:-494px 0;} + .form-admin-fruitful .content .menu-options ul li.current a #menu_img_8 {background-position:-586px 0;} + .form-admin-fruitful .content .menu-options ul li.current a #menu_img_9 {background-position:-769px 0;} + .form-admin-fruitful .content .menu-options ul li.current a #menu_img_10{background-position:-962px 0;} +} +/* Retina displays - iMac */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5) and (min-device-width : 641px), +only screen and (min--moz-device-pixel-ratio: 1.5) and (min-device-width : 641px), +only screen and (min-resolution: 240dpi) and (min-device-width : 641px) { + .form-admin-fruitful .content .menu-options ul li:hover > a #menu_img_0 {background-position:-704px 0} + .form-admin-fruitful .content .menu-options ul li:hover > a #menu_img_1 {background-position:-829px 0} + .form-admin-fruitful .content .menu-options ul li:hover > a #menu_img_2 {background-position:-62px 0} + .form-admin-fruitful .content .menu-options ul li:hover > a #menu_img_3 {background-position:-156px 0} + .form-admin-fruitful .content .menu-options ul li:hover > a #menu_img_4 {background-position:-245px 0} + .form-admin-fruitful .content .menu-options ul li:hover > a #menu_img_5 {background-position:-337px 0} + .form-admin-fruitful .content .menu-options ul li:hover > a #menu_img_6 {background-position:-431px 0} + .form-admin-fruitful .content .menu-options ul li:hover > a #menu_img_7 {background-position:-525px 0} + .form-admin-fruitful .content .menu-options ul li:hover > a #menu_img_8 {background-position:-617px 0} + .form-admin-fruitful .content .menu-options ul li:hover > a #menu_img_9 {background-position:-800px 0} + .form-admin-fruitful .content .menu-options ul li:hover > a #menu_img_10{background-position:-999px 0} +} + +@media only screen +and (min-device-width : 768px) +and (max-device-width : 1024px) { + .form-admin-fruitful { padding:0 0 20px 1%; width:99%; } + .form-admin-fruitful .header, .form-admin-fruitful .footer { padding: 10px 0 10px 0; width: 100%; } + .form-admin-fruitful .content .settings-section {width:70%;} + .form-admin-fruitful .header, .form-admin-fruitful .footer, .form-admin-fruitful .content {width:100%; } + .box-image .img-container.custom-slide {max-height: 220px;} + .form-admin-fruitful .footer p.submit, .form-admin-fruitful .header p.submit {margin-left:10px;} +} \ No newline at end of file diff --git a/themes/fruitful/inc/css/admin.css b/themes/fruitful/inc/css/admin.css new file mode 100644 index 0000000..758c993 --- /dev/null +++ b/themes/fruitful/inc/css/admin.css @@ -0,0 +1,266 @@ +.form-admin-fruitful {float:left; width:914px; display:block; background: #fff; padding: 0px 0px 20px 20px;font-family: 'Arial', sans-serif;} +.form-admin-fruitful h4 {font-weight: normal; margin: 5px 0;} +.form-admin-fruitful .header, +.form-admin-fruitful .footer {float:left;width: 904px;padding: 10px 10px 10px 0;} +.form-admin-fruitful .content{float:left;width:914px;position:relative; min-height:600px;margin-top:8px;} +.form-admin-fruitful .header div.error {float:left;} +.form-admin-fruitful .footer p.submit {line-height:10px; padding:0} +.form-admin-fruitful .footer .button-primary, +.form-admin-fruitful .header .button-primary {width: 120px;text-transform: uppercase;} +.form-admin-fruitful #message.updated.woocommerce-message.wc-connect{float:left; clear:both; max-width:98%} +.form-admin-fruitful #message.updated.woocommerce-message.wc-connect p.submit{width:auto} +.form-admin-fruitful #message.updated.woocommerce-message.wc-connect .button-primary{width:auto} +.form-admin-fruitful .header p.submit {padding:0;} +.form-admin-fruitful p.submit {width:130px;float:right;margin-top:15px;} +.form-admin-fruitful #icon-theme_options { background: url("../images/icons32.png") no-repeat scroll -492px -5px transparent;} +.form-admin-fruitful .title_theme {font-family:Arial; font-size:22px; font-weight:bold; display:block; float:left; line-height: 40px;} +.form-admin-fruitful .content .menu-options { bottom: 0; height: 100%; position: absolute; top: 0; width: 168px; } +.form-admin-fruitful .content .menu-options ul { float: left; margin: 0; width: 100%;} +.form-admin-fruitful .content .menu-options ul li { float: left; margin: 0; width: 156px; min-height: 25px; border-bottom: 1px solid #e5e5e5; border-right: 1px solid #e5e5e5; padding: 0 0 0 5px; background-image: url(../images/menu_shadow.png); background-repeat: no-repeat; background-position: right 0; border-left: 1px solid #FFFFFF;} +.form-admin-fruitful .content .menu-options ul li.current {background-color: #fefefe; border-left:1px solid #e5e5e5; border-right:0; -webkit-border-top-left-radius: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-topleft: 4px; -moz-border-radius-bottomleft: 4px; border-top-left-radius: 4px; border-bottom-left-radius: 4px; background-image:none;} +.form-admin-fruitful .content .menu-options ul li:first-child {border-top:1px solid #e5e5e5;} +.form-admin-fruitful .content .menu-options ul li.current a {border-bottom-color: #6D6D6D; border-top-color: #808080; color:#3e3e3e; outline: 0;} +.form-admin-fruitful .content .menu-options ul li a {float: left; font-weight: bold; line-height: 25px; min-width: 10em; padding: 14px 5px; width: 150px; text-decoration:none; color:#818181; } +.form-admin-fruitful .content .menu-options ul li a:hover {color:#e1704b} +a:hover, a:active, a:focus { outline: 0; } +.form-admin-fruitful .content .menu-options ul li a .menu-img {background-image:url(../images/admin_menu_icon.png); background-position:-648px 0; background-repeat:no-repeat; display:block; width:30px; height:25px; float:left; margin: 0 10px 0 0;} +.form-admin-fruitful .content .menu-options ul li.current a .menu-img {background-position:-677px 0;} + +.form-admin-fruitful .content .menu-options ul li#general a .menu-img {background-position:-648px 0;} +.form-admin-fruitful .content .menu-options ul li#header a .menu-img {background-position:-829px 0;} +.form-admin-fruitful .content .menu-options ul li#background a .menu-img {background-position:0 0;} +.form-admin-fruitful .content .menu-options ul li#logo a .menu-img {background-position: -93px 0;} +.form-admin-fruitful .content .menu-options ul li#colors a .menu-img {background-position:-185px 0;} +.form-admin-fruitful .content .menu-options ul li#fonts a .menu-img {background-position:-275px 0;} +.form-admin-fruitful .content .menu-options ul li#slider a .menu-img {background-position:-369px 0;} +.form-admin-fruitful .content .menu-options ul li#social-links a .menu-img {background-position:-463px 0;} +.form-admin-fruitful .content .menu-options ul li#footer a .menu-img {background-position:-555px 0;} +.form-admin-fruitful .content .menu-options ul li#custom-css a .menu-img {background-position:-738px 0;} +.form-admin-fruitful .content .menu-options ul li#woo a .menu-img{background-position:-925px 0;} + +.form-admin-fruitful .content .menu-options ul li#general.current a .menu-img {background-position:-677px 0;} +.form-admin-fruitful .content .menu-options ul li#header.current a .menu-img {background-position:-860px 0;} +.form-admin-fruitful .content .menu-options ul li#background.current a .menu-img {background-position:-31px 0;} +.form-admin-fruitful .content .menu-options ul li#logo.current a .menu-img {background-position:-124px 0;} +.form-admin-fruitful .content .menu-options ul li#colors.current a .menu-img {background-position:-214px 0;} +.form-admin-fruitful .content .menu-options ul li#fonts.current a .menu-img {background-position:-307px 0;} +.form-admin-fruitful .content .menu-options ul li#slider.current a .menu-img {background-position:-400px 0;} +.form-admin-fruitful .content .menu-options ul li#social-links.current a .menu-img {background-position:-494px 0;} +.form-admin-fruitful .content .menu-options ul li#footer.current a .menu-img {background-position:-586px 0;} +.form-admin-fruitful .content .menu-options ul li#custom-css.current a .menu-img {background-position:-768px 0;} +.form-admin-fruitful .content .menu-options ul li#woo.current a .menu-img{background-position:-962px 0;} + +.form-admin-fruitful .content .settings-section { background: #FFFFFF; float: right; padding: 15px 34px 15px 0; width: 710px; display:none; min-height:600px} +.form-admin-fruitful .content .settings-section input[type="text"].text-input { float:left; width:100%; margin:0 0 10px 0; padding-left: 5px; height: 30px;} +.form-admin-fruitful .content .settings-section input[type="file"] { display:none} +.form-admin-fruitful .content .settings-section .save-options {float:left; width:100%; min-height:20px; display:none } +.form-admin-fruitful .content .settings-section input.of-input {width: 430px;} +.form-admin-fruitful .content .settings-section .form-table tbody tr td #upload_bg_preview {display:none} +.form-admin-fruitful .content .settings-section .socials { float: left; margin: -12px 0 0; width: 100%;} +.form-admin-fruitful .content .settings-section h1, +.form-admin-fruitful .content .settings-section h2, .form-admin-fruitful .content .settings-section h3, .form-admin-fruitful .content .settings-section h4, +.form-admin-fruitful .content .settings-section h5, .form-admin-fruitful .content .settings-section h6 { text-shadow: 0 1px 0 #FFFFFF;} +.form-admin-fruitful .content .settings-section .none {display:none} +.form-admin-fruitful .content #settings-section-5 input[type="text"].text-input {float: left; width: 50px;} +.form-admin-fruitful .content #settings-section-5 #set_form_row_4 h4 {margin: 5px 0px; float: left; padding-right: 10px; text-align: right;} +.form-admin-fruitful .content #settings-section-5 #set_form_row_4 .box-options {width: 100px;} +.form-admin-fruitful .content #settings-section-4 h4 {font-weight: normal} +.form-admin-fruitful .content .settings-section .upload-image {float:left; margin:10px 0; border: 1px solid #DFDFDF;} +.form-admin-fruitful .content .settings-section hr {margin:20px 0; float:left; width:100%; background-color:#DFDFDF; color:#DFDFDF; border:0; height:1px} +.form-admin-fruitful .content .settings-section .slides, .form-admin-fruitful .content .settings-section .slides .slide {float:left; width:100%; } +.form-admin-fruitful .content .settings-section .slides .slide {background-color: #F5F5F5; background-image: -moz-linear-gradient(center top , #F9F9F9, #F5F5F5); border: 1px solid #DFDFDF; border-radius: 3px 3px 3px 3px; box-shadow: 0 1px 0 #FFFFFF inset; padding: 10px 10px 2px 10px ; width: 95%; margin: 0 0 20px;} +.form-admin-fruitful .content .settings-section .slides .slide h4 {margin:0 0 10px 0; cursor:move} +.form-admin-fruitful .content .settings-section .settings-form-row .box-options .slides .slide h4 span.content-close-slide {cursor: pointer; float: right; height: 30px; width: 27px; background: url("../images/arrows.png") no-repeat scroll 6px 7px transparent; margin: -5px 0 0;} +.form-admin-fruitful .content .settings-section .settings-form-row .box-options .slides .slide h4 span.remove-slide {cursor: pointer; float: right; height: 16px; width: 20px; background: url("../images/cross.png") no-repeat scroll 0 0 transparent; margin: 1px 1px 0 0;} +.form-admin-fruitful .content .settings-section .settings-form-row .box-options .add_new_btn {float: right; margin: 15px 8px 0; width: 160px; text-align: center;} +.form-admin-fruitful .content .settings-section .settings-form-row .box-options .slides-btn {float:left; width: 98.3%; margin:0 0 5px 0} +.form-admin-fruitful .content .settings-section .settings-form-row .box-options .slides-btn .collapse_all,.form-admin-fruitful .content .settings-section .settings-form-row .box-options .slides-btn .expand_all {float:right; width:90px; text-align: right;} +.form-admin-fruitful .content .settings-section .settings-form-row .box-options .slides-btn .collapse_all:hover,.form-admin-fruitful .content .settings-section .settings-form-row .box-options .slides-btn .expand_all:hover {color:#21759B; cursor:pointer;} +.form-admin-fruitful .content .settings-section .logo_img {width:160px; height:60px} +.form-admin-fruitful .content .settings-section .settings-form-row .box-options h4.full-width, .form-admin-fruitful .content .settings-section .settings-form-row .box-options .text_fonts {float:left; width:100%; margin: 0 0 10px 0; } +.form-admin-fruitful .content .settings-section .settings-form-row .box-options h4.full-width { color: #3E3E3E; font-family: Arial; font-size: 13px; font-weight: normal; margin: 0 0 2px;} +.form-admin-fruitful .content .settings-section .settings-form-row .box-options .text_fonts .sample_text { border: 1px solid #DDDDDD; float: left; margin: 0 250px 10px 0; padding: 10px; width: 275px;} +.form-admin-fruitful .content .settings-section .settings-form-row .box-options .box-option {float:left; width:100%; margin:0px 0 10px 0; } +.form-admin-fruitful .content .settings-section .settings-form-row .box-options .upload_button_div {float:left; width:100%; margin:20px 0;} +.form-admin-fruitful .reset-btn {width: 120px; text-align: center;} +/* Save modal window */ +.save-options { background-color: rgba(0, 0, 0, 0.7); display: none; height: 245px; left: 0; position: absolute; top: 0; width: 485px; z-index: 9999999; -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px;} +.save-options .icon-sc, .save-options .icon-al {float: left; height: 60px; margin: 55px 0 0; width: 100%;} +.save-options .icon-sc {background:url(../images/success.png) no-repeat center center transparent; } +.save-options .icon-al {background:url(../images/error.png) no-repeat center center transparent; } +.save-options .message-text {color: #FFFFFF; display: inline-block; float: left; font-family: 'Open sans',sans-serif; font-size: 20px; font-weight: 600; line-height: 22px; margin: 28px 0 0; text-align: center; text-transform: uppercase; width: 100%;} +/* End save modal window */ +.form-admin-fruitful .content .settings-section .settings-form-row { float: left; padding: 0 25px; width: 90%; margin: 0 0 25px 0;} +.form-admin-fruitful .content .settings-section .settings-form-row h3 {color: #3e3e3e; font-family: Arial; font-size:18px; font-weight:bold; padding:0; margin:0 0 5px} +.form-admin-fruitful .content .settings-section .settings-form-row .add_element_info {color:#a0a0a0; font-family: Arial; font-size:13px; float:left; width:100%; display:block; margin: 0 0 10px;} +.form-admin-fruitful .content .settings-section .settings-form-row .box-options {float:left; width:100%} +.box-options label {font-family: Arial;} +.sidebar-promo {float: left; width:298px; max-width: 934px; padding: 0; min-height: 150px; background-color: #f1f1f1; margin:0;} +.sidebar-promo-widget{float:left; width:254px; padding: 15px 22px 5px; margin:0;} +.sidebar-promo .sidebar-promo-content{float: left;padding:15px 20px 25px; background-color: #ffffff; margin:0;} +.sidebar-promo h3 {color: #3e3e3e; font-weight: bold; font-size: 16px; padding: 6px 0 6px 40px; margin: 0 0 20px 0;} +.sidebar-promo .promo-support h3 {background: url('../images/support.png') no-repeat 0 0 transparent;} +.sidebar-promo .promo-customization h3 {background: url('../images/customization.png') no-repeat 0 0 transparent;} +.sidebar-promo p {color:#3e3e3e; font-size:14px; margin:0 0 1.5em 0; padding:0; font-family:Arial; line-height:24px;} +.form-admin-fruitful .content .settings-section .settings-form-row .box-options #slider_main_options {display:none; float: left; margin: 0 0 20px 0;} +.box-options .upload_button_div .reset_btn,.box-options ul.slides li.slide .slide-content .upload_button_div .reset_slide_btn {margin-left:5px} +#logo-w, #logo-h {width:105px} +#tracking_code {width:150px} +.no-slider-select, .flex-slider, .nivo-slider {display:none} +.box-image {float:left; display:block; width:100%; clear:both;} +.box-image .img-container {border: 2px dashed #d7d7d7; display: inline-block; float: left; height: 100%; margin: 0 0 20px; max-height: 430px; max-width: 100%; overflow: hidden; position: relative; width: auto;} +.box-image .img-container img {height:inherit; width:100%; float:left;} +/* .box-image .img-container.logo { max-width:160px; max-height:60px; height:60px;} +.box-image .img-container.logo_retina { max-width:320px; max-height:120px; height:120px;} +.box-image .img-container.favicon { max-width:16px; max-height:16px; height:16px;} +.box-image .img-container.favicon_iphone { max-width:57px; max-height:57px; height:57px;} +.box-image .img-container.favicon_iphone_retina { max-width:114px; max-height:114px; height:114px;} +.box-image .img-container.favicon_ipad { max-width:72px; max-height:72px; height:72px;} +.box-image .img-container.favicon_ipad_retina { max-width:144px; max-height:144px; height:144px;} */ + +.box-image .img-container.custom-slide {max-width:608px; max-height:300px; height:300px; border: 0; -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px;} +.box-image .of-area {float: left; height: 100px; margin: 0 0 10px; width: 100%; } +#btn_idc { float: left;width: 100%; max-width:150px; text-align: center; cursor:pointer;} +#css-text, #footer-text { background: none repeat scroll 0 0 #F9F9F9; font-family: Consolas,Monaco,monospace; font-size: 12px; outline: 0 none; } +#css-text:focus, #footer-text:focus {border-color:#aaa;} +.small_input {float: left !important; width: 50px !important;} + +div.updated, div.error { margin: 15px 0 15px; } + +#settings-section-4 .settings-form-row { width:42%; } +.newrow {clear:both; content:"";} + + +@media only screen and (min-width: 1200px) and (max-width: 1500px) { + .form-admin-fruitful{width:914px;max-width:914px;width:calc(100% - 320px);} + .form-admin-fruitful .content{width:914px;width:calc(100% - 20px);} + .form-admin-fruitful .header, .form-admin-fruitful .footer{width: 904px;width:calc(100% - 10px);} + .form-admin-fruitful .content .settings-section{width:710px;width:calc(100% - 205px);} +} + +@media only screen and (min-width: 1200px) { + .form-admin-fruitful .content{min-width: 520px;} +} + +@media only screen and (max-width: 1199px) { + .sidebar-promo{width:auto;margin-top:25px;} + .sidebar-promo-widget{width:auto;padding:15px 0} + .form-admin-fruitful{width:914px;width:calc(100% - 20px);} + .form-admin-fruitful .content{width:914px;width:calc(100% - 20px);} + .form-admin-fruitful .header, .form-admin-fruitful .footer{width: 904px;width:calc(100% - 10px);} + .form-admin-fruitful .content .settings-section{width:710px;width:calc(100% - 205px);} +} + +@media only screen and (max-width: 641px) { + .form-admin-fruitful { padding:0 0 20px 1%; width:99%; min-width:294px; } + .form-admin-fruitful .header, .form-admin-fruitful .footer { padding: 10px 0 10px 0; width: 100%; } + .form-admin-fruitful .content .settings-section {width: 75%; background: none;} + .form-admin-fruitful .header, .form-admin-fruitful .footer, .form-admin-fruitful .content {width:100%; } + .box-image .img-container.custom-slide {max-height: 220px;} + .menu-options span.menu-text{display:none} + .form-admin-fruitful .content .menu-options{width:56px;} + .form-admin-fruitful .content .menu-options ul li {padding: 0 0 0 5px;width:50px;} + .form-admin-fruitful .content .menu-options ul li a {min-width: initial;padding: 14px 5px;width: 40px;} + .form-admin-fruitful .content .menu-options ul li a span.menu-img{margin:0 !important;} + .form-admin-fruitful .footer p.submit, .form-admin-fruitful .header p.submit {margin-right:10px;} + #wpcontent .form-admin-fruitful .box-image .img-container img{height: auto;} + .form-admin-fruitful .content .settings-section .slides .slide h4 {margin: 0 0 10px 0; line-height: 36px;} + .form-admin-fruitful .content .settings-section .settings-form-row .box-options .slides .slide h4 span.content-close-slide {background: url("../images/arrows.png") no-repeat scroll 15px 17px transparent; margin: -5px 0 0; padding: 10px;} + .form-admin-fruitful .content .settings-section .settings-form-row .box-options .slides .slide h4 span.remove-slide {background: url("../images/cross.png") no-repeat scroll 7px 10px transparent; padding: 10px 5px;} + #settings-section-4 .settings-form-row { width:286px; } + body .jq-selectbox__select{width:160px} + body .jq-selectbox__dropdown{width:215px;} +} + +@media only screen +and (min-device-width : 320px) +and (max-device-width : 568px) { + .form-admin-fruitful .header, .form-admin-fruitful .footer { padding: 10px 0 10px 0; width: 100%; } + .form-admin-fruitful .content .settings-section {width:70%;} + .form-admin-fruitful .header, .form-admin-fruitful .footer, .form-admin-fruitful .content {width:100%; } + .box-image .img-container.custom-slide {max-height: 220px;} + .form-admin-fruitful .content {min-height:600px;min-width: 120px;} + .jq-selectbox__select {width: 150px !important;} + .form-admin-fruitful .content .settings-section .settings-form-row .box-options .text_fonts .sample_text {margin: 0 0 10px 0;width: 184px;} + .settings-form-row select{width:205px;} + .colorpicker { left: 0 !important;} + #settings-section-4 .settings-form-row { width:286px; } +} + +/* Disable hover on iPhone */ +@media only screen and (min-device-width : 641px) { + .form-admin-fruitful .content .menu-options ul li:hover > a .menu-img, + .form-admin-fruitful .content .menu-options ul li#general:hover > a .menu-img {background-position:-706px 0} + .form-admin-fruitful .content .menu-options ul li#header:hover > a .menu-img {background-position:-891px 0} + .form-admin-fruitful .content .menu-options ul li#background:hover > a .menu-img {background-position:-62px 0} + .form-admin-fruitful .content .menu-options ul li#logo:hover > a .menu-img {background-position:-155px 0} + .form-admin-fruitful .content .menu-options ul li#colors:hover > a .menu-img {background-position:-245px 0} + .form-admin-fruitful .content .menu-options ul li#fonts:hover > a .menu-img {background-position:-337px 0} + .form-admin-fruitful .content .menu-options ul li#slider:hover > a .menu-img {background-position:-431px 0} + .form-admin-fruitful .content .menu-options ul li#social-links:hover > a .menu-img {background-position:-525px 0} + .form-admin-fruitful .content .menu-options ul li#footer:hover > a .menu-img {background-position:-617px 0} + .form-admin-fruitful .content .menu-options ul li#custom-css:hover > a .menu-img {background-position:-798px 0} + .form-admin-fruitful .content .menu-options ul li#woo:hover > a .menu-img {background-position:-999px 0} +} + +/* Retina displays - all */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), +only screen and (min--moz-device-pixel-ratio: 1.5), +only screen and (min-resolution: 240dpi) { + .form-admin-fruitful .content .menu-options ul li a .menu-img { + background: url('../images/admin_menu_icon@2x.png') -646px 0 no-repeat transparent; + background-size: 1030px; + } + .form-admin-fruitful .content .menu-options ul li#general a .menu-img {background-position:-646px 0;} + .form-admin-fruitful .content .menu-options ul li#header a .menu-img {background-position:-829px 0;} + .form-admin-fruitful .content .menu-options ul li#background a .menu-img {background-position:0 0;} + .form-admin-fruitful .content .menu-options ul li#logo a .menu-img {background-position: -94px 0;} + .form-admin-fruitful .content .menu-options ul li#colors a .menu-img {background-position:-185px 0;} + .form-admin-fruitful .content .menu-options ul li#fonts a .menu-img {background-position:-275px 0;} + .form-admin-fruitful .content .menu-options ul li#slider a .menu-img {background-position:-368px 0;} + .form-admin-fruitful .content .menu-options ul li#social-links a .menu-img {background-position:-463px 0;} + .form-admin-fruitful .content .menu-options ul li#footer a .menu-img {background-position:-555px 0;} + .form-admin-fruitful .content .menu-options ul li#custom-css a .menu-img {background-position:-739px 0;} + .form-admin-fruitful .content .menu-options ul li#woo a .menu-img {background-position:-926px 0;} + + .form-admin-fruitful .content .menu-options ul li.current:hover > a .menu-img, + .form-admin-fruitful .content .menu-options ul li#general.current a .menu-img {background-position:-675px 0;} + .form-admin-fruitful .content .menu-options ul li#header.current a .menu-img {background-position:-860px 0;} + .form-admin-fruitful .content .menu-options ul li#background.current a .menu-img {background-position:-31px 0;} + .form-admin-fruitful .content .menu-options ul li#logo.current a .menu-img {background-position:-124px 0;} + .form-admin-fruitful .content .menu-options ul li#colors.current a .menu-img {background-position:-214px 0;} + .form-admin-fruitful .content .menu-options ul li#fonts.current a .menu-img {background-position:-307px 0;} + .form-admin-fruitful .content .menu-options ul li#slider.current a .menu-img {background-position:-400px 0;} + .form-admin-fruitful .content .menu-options ul li#social-links.current a .menu-img {background-position:-494px 0;} + .form-admin-fruitful .content .menu-options ul li#footer.current a .menu-img {background-position:-586px 0;} + .form-admin-fruitful .content .menu-options ul li#custom-css.current a .menu-img {background-position:-769px 0;} + .form-admin-fruitful .content .menu-options ul li#woo.current a .menu-img{background-position:-962px 0;} +} +/* Retina displays - iMac */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5) and (min-device-width : 641px), +only screen and (min--moz-device-pixel-ratio: 1.5) and (min-device-width : 641px), +only screen and (min-resolution: 240dpi) and (min-device-width : 641px) { + .form-admin-fruitful .content .menu-options ul li:hover > a .menu-img, + .form-admin-fruitful .content .menu-options ul li#general:hover > a .menu-img {background-position:-704px 0} + .form-admin-fruitful .content .menu-options ul li#header:hover > a .menu-img {background-position:-891px 0} + .form-admin-fruitful .content .menu-options ul li#background:hover > a .menu-img {background-position:-62px 0} + .form-admin-fruitful .content .menu-options ul li#logo:hover > a .menu-img {background-position:-156px 0} + .form-admin-fruitful .content .menu-options ul li#colors:hover > a .menu-img {background-position:-245px 0} + .form-admin-fruitful .content .menu-options ul li#fonts:hover > a .menu-img {background-position:-337px 0} + .form-admin-fruitful .content .menu-options ul li#slider:hover > a .menu-img {background-position:-431px 0} + .form-admin-fruitful .content .menu-options ul li#social-links:hover > a .menu-img {background-position:-525px 0} + .form-admin-fruitful .content .menu-options ul li#footer:hover > a .menu-img {background-position:-617px 0} + .form-admin-fruitful .content .menu-options ul li#custom-css:hover > a .menu-img {background-position:-800px 0} + .form-admin-fruitful .content .menu-options ul li#woo:hover > a .menu-img {background-position:-999px 0} +} + +@media only screen +and (min-device-width : 768px) +and (max-device-width : 1024px) { + .form-admin-fruitful { padding:0 0 20px 1%; width:99%; } + .form-admin-fruitful .header, .form-admin-fruitful .footer { padding: 10px 0 10px 0; width: 100%; } + .form-admin-fruitful .content .settings-section {width:70%;} + .form-admin-fruitful .header, .form-admin-fruitful .footer, .form-admin-fruitful .content {width:100%; } + .box-image .img-container.custom-slide {max-height: 220px;} + .form-admin-fruitful .footer p.submit, .form-admin-fruitful .header p.submit {margin-right:10px;} +} \ No newline at end of file diff --git a/themes/fruitful/inc/css/customizer-style.css b/themes/fruitful/inc/css/customizer-style.css new file mode 100644 index 0000000..bdcdd8d --- /dev/null +++ b/themes/fruitful/inc/css/customizer-style.css @@ -0,0 +1,113 @@ +.wp-full-overlay.expanded { + margin-left:0; +} + +.wp-full-overlay-sidebar { + width:400px; +} + +.wp-full-overlay.collapsed .wp-full-overlay-sidebar { + margin-left: -400px; +} + +#customize-controls { + opacity: 0.3; + -webkit-transition: opacity 0.5s ease-in-out; + -moz-transition: opacity 0.5s ease-in-out; + -ms-transition: opacity 0.5s ease-in-out; + -o-transition: opacity 0.5s ease-in-out; + transition: opacity 0.5s ease-in-out; +} + +#customize-controls:hover { + opacity: 1; +} +.customize-control-checkbox label, .customize-control-nav_menu_auto_add label, .customize-control-radio label { + margin-left:0; +} + +.accordion-sub-container h3.accordion-section-title:before { + position: relative; + display: block; + content: ''; + float: left; + background-image:url(../images/admin_menu_icon.png); + background-repeat:no-repeat; + display:block; + width:30px; + height:25px; + float:left; + margin: 0 10px 0 0; +} +.accordion-sub-container .control-section-default h3.accordion-section-title:before, +.accordion-sub-container #accordion-section-general h3.accordion-section-title:before {background-position:-648px 0;} +.accordion-sub-container #accordion-section-header h3.accordion-section-title:before {background-position:-829px 0;} +.accordion-sub-container #accordion-section-background h3.accordion-section-title:before {background-position:0 0;} +.accordion-sub-container #accordion-section-logo h3.accordion-section-title:before {background-position: -93px 0;} +.accordion-sub-container #accordion-section-main-colors h3.accordion-section-title:before {background-position:-185px 0;} +.accordion-sub-container #accordion-section-fonts h3.accordion-section-title:before {background-position:-275px 0;} +.accordion-sub-container #accordion-section-slider h3.accordion-section-title:before {background-position:-369px 0;} +.accordion-sub-container #accordion-section-social-links h3.accordion-section-title:before {background-position:-463px 0;} +.accordion-sub-container #accordion-section-footer h3.accordion-section-title:before {background-position:-555px 0;} +.accordion-sub-container #accordion-section-custom-css h3.accordion-section-title:before {background-position:-738px 0;} +.accordion-sub-container #accordion-section-woo h3.accordion-section-title:before {background-position:-925px 0;} + +/* Disable hover on iPhone */ +@media only screen and (min-device-width : 641px) { +.accordion-sub-container .control-section-default h3.accordion-section-title:hover:before, +.accordion-sub-container #accordion-section-general h3.accordion-section-title:hover:before {background-position:-706px 0;} +.accordion-sub-container #accordion-section-header h3.accordion-section-title:hover:before {background-position:-891px 0;} +.accordion-sub-container #accordion-section-background h3.accordion-section-title:hover:before {background-position:-62px 0;} +.accordion-sub-container #accordion-section-logo h3.accordion-section-title:hover:before {background-position:-155px 0;} +.accordion-sub-container #accordion-section-main-colors h3.accordion-section-title:hover:before {background-position:-245px 0;} +.accordion-sub-container #accordion-section-fonts h3.accordion-section-title:hover:before {background-position:-337px 0;} +.accordion-sub-container #accordion-section-slider h3.accordion-section-title:hover:before {background-position:-431px 0;} +.accordion-sub-container #accordion-section-social-links h3.accordion-section-title:hover:before {background-position:-525px 0;} +.accordion-sub-container #accordion-section-footer h3.accordion-section-title:hover:before {background-position:-617px 0;} +.accordion-sub-container #accordion-section-custom-css h3.accordion-section-title:hover:before {background-position:-798px 0;} +.accordion-sub-container #accordion-section-woo h3.accordion-section-title:hover:before {background-position:-999px 0;} +} + +#customize-controls .accordion-sub-container .control-section .accordion-section-title:focus, +#customize-controls .accordion-sub-container .control-section .accordion-section-title:hover, +#customize-controls .accordion-sub-container .control-section.open .accordion-section-title, +#customize-controls .accordion-sub-container .control-section:hover>.accordion-section-title { + color: #e1704b; +} + +#customize-controls .accordion-sub-container .jq-selectbox__select { + width:295px; +} + + #customize-controls .accordion-sub-container .jq-selectbox__dropdown { + width:350px; + } + + #accordion-section-slider .accordion-section-content .customize-control { + float:none; +} + +.customize-control .nivo-slider { + display:none; +} + + +span.customize-control-title { + color: #3e3e3e; + font-family: Arial; + font-size: 16px; + font-weight: bold; + padding: 0; + margin: 0 0 5px; +} + +span.add_element_info { + color: #a0a0a0; + font-family: Arial; + font-size: 12px; + float: left; + width: 100%; + display: block; + margin: 0 0 10px; + line-height: 15px; +} \ No newline at end of file diff --git a/themes/fruitful/inc/css/fonts-style.css b/themes/fruitful/inc/css/fonts-style.css new file mode 100644 index 0000000..44bb3b3 --- /dev/null +++ b/themes/fruitful/inc/css/fonts-style.css @@ -0,0 +1,12 @@ +/*Google web fonts*/ +@import url(http://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,800,700,600,300&subset=latin,latin-ext); +@import url(http://fonts.googleapis.com/css?family=Josefin+Slab:400,100,100italic,300,300italic,400italic,600,600italic,700,700italic); +@import url(http://fonts.googleapis.com/css?family=Lobster&subset=cyrillic-ext,latin-ext,latin,cyrillic); +@import url(http://fonts.googleapis.com/css?family=Arvo:400,400italic,700,700italic); +@import url(http://fonts.googleapis.com/css?family=Lato:400,100,100italic,300,300italic,400italic,700,700italic,900,900italic); +@import url(http://fonts.googleapis.com/css?family=Vollkorn:400,400italic,700,700italic); +@import url(http://fonts.googleapis.com/css?family=Abril+Fatface); +@import url(http://fonts.googleapis.com/css?family=Ubuntu:400,300italic,400italic,500,500italic,700,700italic,300&subset=latin,greek,latin-ext,cyrillic); +@import url(http://fonts.googleapis.com/css?family=PT+Sans:400,400italic,700,700italic&subset=latin,cyrillic); +@import url(http://fonts.googleapis.com/css?family=Old+Standard+TT:400,400italic,700); +@import url(http://fonts.googleapis.com/css?family=Droid+Sans:400,700); \ No newline at end of file diff --git a/themes/fruitful/inc/custom-header.php b/themes/fruitful/inc/custom-header.php new file mode 100644 index 0000000..9dfcef8 --- /dev/null +++ b/themes/fruitful/inc/custom-header.php @@ -0,0 +1,181 @@ + + + + + + + * + * @package Fruitful theme + * @since Fruitful theme 1.0 + */ + +/** + * Setup the WordPress core custom header feature. + * + * Use add_theme_support to register support for WordPress 3.4+ + * as well as provide backward compatibility for previous versions. + * Use feature detection of wp_get_theme() which was introduced + * in WordPress 3.4. + * + * @todo Rework this function to remove WordPress 3.4 support when WordPress 3.6 is released. + * + * @uses fruitful_header_style() + * @uses fruitful_admin_header_style() + * @uses fruitful_admin_header_image() + * + * @package Fruitful theme + */ +function fruitful_custom_header_setup() { + $args = array( + 'default-image' => '', + 'flex-height' => false, + 'flex-width' => false, + 'width' => 1000, + 'height' => 250, + 'default-text-color' => '000', + 'random-default' => false, + 'header-text' => false, + 'uplodas' => true, + 'wp-head-callback' => 'fruitful_header_style', + 'admin-head-callback' => 'fruitful_admin_header_style', + 'admin-preview-callback' => 'fruitful_admin_header_image', + ); + + $args = apply_filters( 'fruitful_custom_header_args', $args ); + + if ( function_exists( 'wp_get_theme' ) ) { + add_theme_support( 'custom-header', $args ); + } +} +add_action( 'after_setup_theme', 'fruitful_custom_header_setup' ); + +/** + * Shiv for get_custom_header(). + * + * get_custom_header() was introduced to WordPress + * in version 3.4. To provide backward compatibility + * with previous versions, we will define our own version + * of this function. + * + * @todo Remove this function when WordPress 3.6 is released. + * @return stdClass All properties represent attributes of the curent header image. + * + * @package Fruitful theme + * @since Fruitful theme 1.1 + */ + +if ( ! function_exists( 'get_custom_header' ) ) { + function get_custom_header() { + return (object) array( + 'url' => get_header_image(), + 'thumbnail_url' => get_header_image(), + 'width' => HEADER_IMAGE_WIDTH, + 'height' => HEADER_IMAGE_HEIGHT, + ); + } +} + +if ( ! function_exists( 'fruitful_header_style' ) ) : +/** + * Styles the header image and text displayed on the blog + * + * @see fruitful_custom_header_setup(). + * + * @since Fruitful theme 1.0 + */ +function fruitful_header_style() { + + // If no custom options for text are set, let's bail + // get_header_textcolor() options: HEADER_TEXTCOLOR is default, hide text (returns 'blank') or any hex value + if ( HEADER_TEXTCOLOR == get_header_textcolor() ) + return; + // If we get this far, we have custom styles. Let's do this. + ?> + + Header admin panel. + * + * @see fruitful_custom_header_setup(). + * + * @since Fruitful theme 1.0 + */ +function fruitful_admin_header_style() { +?> + + Header admin panel. + * + * @see fruitful_custom_header_setup(). + * + * @since Fruitful theme 1.0 + */ +function fruitful_admin_header_image() { ?> + + $value){ + if(!in_array($key, $denied)){ + $_SESSION['formFields'][$key] = stripslashes($value); + } + } + session_write_close(); + wp_safe_redirect(get_permalink($_POST['comment_post_ID']) . '#fruitfulCommentError', 302); + exit; + } else { + _default_wp_die_handler($message, $title, $args); + } + } + + public function fruitfulOutInlineErrors() { + $formError = ''; + if (!empty($_SESSION['formError'])) { + $formError = $_SESSION['formError']; + unset($_SESSION['formError']); + echo '
        '; + echo '
        • '.$formError.'
        '; + echo '
        '; + } + } + + function fruitfulCFormDefVal($fields) { + if (!empty($_SESSION['formFields'])) { + $formFields = $_SESSION['formFields']; + foreach($fields as $key => $field){ + if($this->stringContains('input', $field)){ + if($this->stringContains('type="text"', $field)){ + if (isset($formFields[$key])) + $fields[$key] = str_replace('value=""', 'value="'. stripslashes($formFields[$key]) .'"', $field); + } + } elseif ($this->stringContains('', $field)){ + if (isset($formFields[$key])) + $fields[$key] = str_replace('', stripslashes($formFields[$key]) .'', $field); + } + } + } + return $fields; + } + + function fruitfulformCommentDefault($comment_field) { + if (!empty($_SESSION['formFields'])) { + $formFields = $_SESSION['formFields']; + unset($_SESSION['formFields']); + return str_replace('', $formFields['comment'] . '', $comment_field); + } else { + return $comment_field; + } + } + + public function stringContains($needle, $haystack){ return strpos($haystack, $needle) !== FALSE; } + + } + +} + +new fruitfulcFormInlineErrors(); \ No newline at end of file diff --git a/themes/fruitful/inc/func/fruitful-function.php b/themes/fruitful/inc/func/fruitful-function.php new file mode 100644 index 0000000..9bc8587 --- /dev/null +++ b/themes/fruitful/inc/func/fruitful-function.php @@ -0,0 +1,331 @@ + __( 'Arial, Helvetica, sans-serif', 'fruitful' ), + 'Arial Black, Gadget, sans-serif' => __( 'Arial Black, Gadget, sans-serif', 'fruitful' ), + 'Comic Sans MS, Textile, cursive' => __( 'Comic Sans MS, Textile, cursive', 'fruitful' ), + 'Courier New, Courier, monospace' => __( 'Courier New, Courier, monospace', 'fruitful' ), + 'Georgia, Times New Roman, Times, serif' => __( 'Georgia, Times New Roman, Times, serif', 'fruitful' ), + 'Impact, Charcoal, sans-serif' => __( 'Impact, Charcoal, sans-serif', 'fruitful' ), + 'Lucida Console, Monaco, monospace' => __( 'Lucida Console, Monaco, monospace', 'fruitful' ), + 'Lucida Sans Unicode, Lucida Grande, sans-serif' => __( 'Lucida Sans Unicode, Lucida Grande, sans-serif', 'fruitful' ), + 'Palatino Linotype, Book Antiqua, Palatino, serif' => __( 'Palatino Linotype, Book Antiqua, Palatino, serif', 'fruitful' ), + 'Tahoma, Geneva, sans-serif' => __( 'Tahoma, Geneva, sans-serif', 'fruitful' ), + 'Times New Roman, Times, serif' => __( 'Times New Roman, Times, serif', 'fruitful' ), + 'Trebuchet MS, Helvetica, sans-serif' => __( 'Trebuchet MS, Helvetica, sans-serif', 'fruitful' ), + 'Verdana, Geneva, sans-serif' => __( 'Verdana, Geneva, sans-serif', 'fruitful' ), + 'MS Sans Serif, Geneva, sans-serif' => __( 'MS Sans Serif, Geneva, sans-serif', 'fruitful' ), + 'MS Serif, New York, serif' => __( 'MS Serif, New York, serif', 'fruitful' ), + + /*Google fonts*/ + 'Open Sans, sans-serif' => __( 'Open Sans, sans-serif', 'fruitful' ), + 'Lobster, cursive' => __( 'Lobster, cursive', 'fruitful' ), + 'Josefin Slab, serif' => __( 'Josefin Slab, serif', 'fruitful' ), + 'Arvo, serif' => __( 'Arvo, serif', 'fruitful' ), + 'Lato, sans-serif' => __( 'Lato, sans-serif', 'fruitful' ), + 'Vollkorn, serif' => __( 'Vollkorn, serif', 'fruitful' ), + 'Abril Fatface, cursive' => __( 'Abril Fatface, cursive', 'fruitful' ), + 'Ubuntu, sans-serif' => __( 'Ubuntu, sans-serif', 'fruitful' ), + 'PT Sans, sans-serif' => __( 'PT Sans, sans-serif', 'fruitful' ), + 'Old Standard TT, serif' => __( 'Old Standard TT, serif', 'fruitful' ), + 'Droid Sans, sans-serif' => __( 'Droid Sans, sans-serif', 'fruitful' ), + ); + + return apply_filters( 'fruitful_fonts_list', $font_family_options ); +} + + function fruitful_custom_do_settings_sections($page) { + global $wp_settings_sections, $wp_settings_fields; + $id_=0; + $optins = (array) get_option( 'fruitful_theme_options' ); + if ( !isset($wp_settings_sections) || !isset($wp_settings_sections[$page]) ) + return; + foreach( (array) $wp_settings_sections[$page] as $section ) { + call_user_func($section['callback'], $section); + if ( !isset($wp_settings_fields) || + !isset($wp_settings_fields[$page]) || + !isset($wp_settings_fields[$page][$section['id']]) ) + continue; + + $name_id = "settings-section-" . $id_; + print '
        '; + fruitful_custom_do_settings_fields($page, $section['id']); + print '
        '; + $id_++; + } +} + + +function fruitful_custom_do_settings_fields($page, $section) { + global $wp_settings_fields; + $id_=0; + + if ( !isset($wp_settings_fields) || + !isset($wp_settings_fields[$page]) || + !isset($wp_settings_fields[$page][$section]) ) + return; + + foreach ( (array) $wp_settings_fields[$page][$section] as $field ) { + if (!empty($field['args']['newrow'])) { + print '
        '; + } else { + print '
        '; + } + + if ( !empty($field['args']['label_for']) ) + print '

        ' . esc_attr($field['title']); + else + print '

        ' . esc_attr($field['title']); + print '

        '; + print ''. $field['args']['info'] .''; + if (!empty($field['args']['fields'])) { + $id = (isset($field['args']['id'])) ? $field['args']['id'] : ''; + if($id == 'slider-options' ) { + print '
        '; + print ''; + print '
        '; + print '
        '; + print '
        '; + print '

        '.__('No Slider Select!', 'fruitful' ).'

        '; + print '
        '; + print '
        '; + foreach($field['args']['fields'] as $row => $value){ + print '
        '; + call_user_func($field['callback'], $field['args']['fields'][$row]); + print '
        '; + } + print '
        '; + print '
        '; + } + else { + print '
        '; + foreach($field['args']['fields'] as $row => $value){ + print '
        '; + call_user_func($field['callback'], $field['args']['fields'][$row]); + print '
        '; + } + print '
        '; + } + + } + else { + print '
        '; + print '
        '; + call_user_func($field['callback'], $field['args']); + print '
        '; + } + print '
        '; + $id_++; + } +} + +add_action('wp_ajax_fruitful_add_new_slide_action', 'fruitful_new_slide'); +function fruitful_new_slide() { + $slides = (array) get_option( 'fruitful_theme_slides_options' ); + $data = $_POST['data']; + echo fruitful_get_slide($data, -1, ''); + die(); +} + +function fruitful_get_box_upload_slide($attach_id, $link_url, $is_blank, $ind, $btnclassup = 'upload_btn', $btnclassr = 'reset_btn') { + $out = ''; + $out .= '
        '; + if ($attach_id != -1) { + $out .= '
        '; + $image_attributes = wp_get_attachment_image_src($attach_id, 'full'); + $out .= ''; + $out .= '
        '; + + } + /*Link out for Slider*/ + $out .= ''; + $out .= ''; + $out .= '
        '; + + $out .= ''; + + $out .= ''; + $out .= '
        '; + $out .= ''.__('Upload Image', 'fruitful') .''; + $out .= ''.__('Remove', 'fruitful') .''; + $out .= '
        '; + $out .= '
        '; + return $out; +} + +function fruitful_get_slide($ind, $id, $link_url = null, $is_blank = 'off') { + $out = ''; + $out .= '
      • '; + $out .= '

        ' . sprintf(__('Slide # %1$d', 'fruitful'), $ind); + $out .= ''; + $out .= ''; + $out .= '

        '; + + $out .= '
        '; + $out .= fruitful_get_box_upload_slide($id, $link_url, $is_blank, $ind); + $out .= '
        '; + $out .= '
      • '; + return $out; +} + +function fruitful_slider_images() { + global $fruitful_theme_options; + $slides = get_option($fruitful_theme_options->args['opt_name']); + $vcount_slides = 0; + if(!empty($slides['slides'])) { + $vcount_slides = count($slides['slides']); + } + ?> +
        + + +
        +
          + $slide) { + $slide_inndex = -1; + $attach_id = $slide['attach_id']; + $link_url = null; + $is_blank = 'off'; + + $slide_inndex = trim(substr($key, strrpos($key, '-')+1, 5)); + if (isset($slide['link'])) { $link_url = $slide['link']; } + if (isset($slide['is_blank'])) { $is_blank = $slide['is_blank']; } + echo fruitful_get_slide($slide_inndex, $attach_id, esc_url($link_url), $is_blank); + } + } + ?> +
        + +args['opt_name']]; + foreach ( $fruitful_theme_options->sections as $section => $data_f ) { + foreach ( $data_f['fields'] as $field ) { + $id = (isset($field['id' ])) ? $field['id'] : ''; + $type = (isset($field['type'])) ? $field['type'] : ''; + if ($type == 'checkbox') { + if (!isset($data[$id])) {$data[$id] = 'off'; } + } + if ($type == 'textarea') { + if (isset($data[$id])) {$data[$id] = stripslashes($data[$id]);} + } + if (!empty ($field['fields'])) { + foreach ($field['fields'] as $sub_field) { + $id = (isset($sub_field['id' ])) ? $sub_field['id'] : ''; + $type = (isset($sub_field['type'])) ? $sub_field['type'] : ''; + if ($type == 'checkbox') { + if (!isset($data[$id])) {$data[$id] = 'off'; } + } + if ($type == 'textarea') { + if (isset($data[$id])) {$data[$id] = stripslashes($data[$id]);} + } + } + } + } + } + if (!isset($data['reset'])) {$data['reset'] = 'reset';} + if(!empty($data)) { + if(update_option('fruitful_theme_options', $data)) { + die('1'); + } else { + die('0'); + } + } else { + die('1'); + } + +} + +function fruitful_get_default_array() { +global $fruitful_theme_options; + $output = array(); + foreach ( $fruitful_theme_options->sections as $section => $data_f ) { + foreach ( $data_f['fields'] as $field ) { + $id = (isset($field['id' ])) ? $field['id'] : ''; + $default = (isset($field['default' ])) ? $field['default'] : ''; + $output[$id] = $default; + if (!empty ($field['fields'])) { + foreach ($field['fields'] as $sub_field) { + $id = (isset($sub_field['id' ])) ? $sub_field['id'] : ''; + $default = (isset($sub_field['default' ])) ? $sub_field['default'] : ''; + $output[$id] = $default; + } + } + } + } + return apply_filters( 'themeslug_option_defaults', $output ); +} + +function fruitful_get_theme_options() { + global $fruitful_theme_options; + return wp_parse_args( + get_option($fruitful_theme_options->args['opt_name'], array() ), + fruitful_get_default_array() + ); +} + +add_action('wp_ajax_fruitful_reset_btn', 'fruitful_reset_action'); +function fruitful_reset_action() { +global $fruitful_theme_options; + delete_option($fruitful_theme_options->args['opt_name']); + die(); +} + +function fruitful_theme_sanitize_checkbox( $input ) { + if ( $input == 1 ) {return 'on';} else {return 'off';} +} + +?> \ No newline at end of file diff --git a/themes/fruitful/inc/func/plugin-activation.php b/themes/fruitful/inc/func/plugin-activation.php new file mode 100644 index 0000000..01d4989 --- /dev/null +++ b/themes/fruitful/inc/func/plugin-activation.php @@ -0,0 +1,3610 @@ +wp_version = $GLOBALS['wp_version']; + + // Announce that the class is ready, and pass the object (for advanced use). + do_action_ref_array( 'tgmpa_init', array( $this ) ); + + // When the rest of WP has loaded, kick-start the rest of the class. + add_action( 'init', array( $this, 'init' ) ); + } + + /** + * Magic method to (not) set protected properties from outside of this class. + * + * @internal hackedihack... There is a serious bug in v2.3.2 - 2.3.6 where the `menu` property + * is being assigned rather than tested in a conditional, effectively rendering it useless. + * This 'hack' prevents this from happening. + * + * @see https://github.com/TGMPA/TGM-Plugin-Activation/blob/2.3.6/tgm-plugin-activation/class-tgm-plugin-activation.php#L1593 + * + * @param string $name Name of an inaccessible property. + * @param mixed $value Value to assign to the property. + * @return void Silently fail to set the property when this is tried from outside of this class context. + * (Inside this class context, the __set() method if not used as there is direct access.) + */ + public function __set( $name, $value ) { + return; + } + + /** + * Magic method to get the value of a protected property outside of this class context. + * + * @param string $name Name of an inaccessible property. + * @return mixed The property value. + */ + public function __get( $name ) { + return $this->{$name}; + } + + /** + * Initialise the interactions between this class and WordPress. + * + * Hooks in three new methods for the class: admin_menu, notices and styles. + * + * @since 2.0.0 + * + * @see TGM_Plugin_Activation::admin_menu() + * @see TGM_Plugin_Activation::notices() + * @see TGM_Plugin_Activation::styles() + */ + public function init() { + /** + * By default TGMPA only loads on the WP back-end and not in an Ajax call. Using this filter + * you can overrule that behaviour. + * + * @since 2.5.0 + * + * @param bool $load Whether or not TGMPA should load. + * Defaults to the return of `is_admin() && ! defined( 'DOING_AJAX' )`. + */ + if ( true !== apply_filters( 'tgmpa_load', ( is_admin() && ! defined( 'DOING_AJAX' ) ) ) ) { + return; + } + + // Load class strings. + $this->strings = array( + 'page_title' => __( 'Install Required Plugins', 'fruitful' ), + 'menu_title' => __( 'Install Plugins', 'fruitful' ), + 'installing' => __( 'Installing Plugin: %s', 'fruitful' ), + 'oops' => __( 'Something went wrong with the plugin API.', 'fruitful' ), + 'notice_can_install_required' => _n_noop( + 'This theme requires the following plugin: %1$s.', + 'This theme requires the following plugins: %1$s.', + 'fruitful' + ), + 'notice_can_install_recommended' => _n_noop( + 'This theme recommends the following plugin: %1$s.', + 'This theme recommends the following plugins: %1$s.', + 'fruitful' + ), + 'notice_cannot_install' => _n_noop( + 'Sorry, but you do not have the correct permissions to install the %1$s plugin.', + 'Sorry, but you do not have the correct permissions to install the %1$s plugins.', + 'fruitful' + ), + 'notice_ask_to_update' => _n_noop( + 'The following plugin needs to be updated to its latest version to ensure maximum compatibility with this theme: %1$s.', + 'The following plugins need to be updated to their latest version to ensure maximum compatibility with this theme: %1$s.', + 'fruitful' + ), + 'notice_ask_to_update_maybe' => _n_noop( + 'There is an update available for: %1$s.', + 'There are updates available for the following plugins: %1$s.', + 'fruitful' + ), + 'notice_cannot_update' => _n_noop( + 'Sorry, but you do not have the correct permissions to update the %1$s plugin.', + 'Sorry, but you do not have the correct permissions to update the %1$s plugins.', + 'fruitful' + ), + 'notice_can_activate_required' => _n_noop( + 'The following required plugin is currently inactive: %1$s.', + 'The following required plugins are currently inactive: %1$s.', + 'fruitful' + ), + 'notice_can_activate_recommended' => _n_noop( + 'The following recommended plugin is currently inactive: %1$s.', + 'The following recommended plugins are currently inactive: %1$s.', + 'fruitful' + ), + 'notice_cannot_activate' => _n_noop( + 'Sorry, but you do not have the correct permissions to activate the %1$s plugin.', + 'Sorry, but you do not have the correct permissions to activate the %1$s plugins.', + 'fruitful' + ), + 'install_link' => _n_noop( + 'Begin installing plugin', + 'Begin installing plugins', + 'fruitful' + ), + 'update_link' => _n_noop( + 'Begin updating plugin', + 'Begin updating plugins', + 'fruitful' + ), + 'activate_link' => _n_noop( + 'Begin activating plugin', + 'Begin activating plugins', + 'fruitful' + ), + 'return' => __( 'Return to Required Plugins Installer', 'fruitful' ), + 'dashboard' => __( 'Return to the dashboard', 'fruitful' ), + 'plugin_activated' => __( 'Plugin activated successfully.', 'fruitful' ), + 'activated_successfully' => __( 'The following plugin was activated successfully:', 'fruitful' ), + 'plugin_already_active' => __( 'No action taken. Plugin %1$s was already active.', 'fruitful' ), + 'plugin_needs_higher_version' => __( 'Plugin not activated. A higher version of %s is needed for this theme. Please update the plugin.', 'fruitful' ), + 'complete' => __( 'All plugins installed and activated successfully. %1$s', 'fruitful' ), + 'dismiss' => __( 'Dismiss this notice', 'fruitful' ), + 'contact_admin' => __( 'Please contact the administrator of this site for help.', 'fruitful' ), + ); + + do_action( 'tgmpa_register' ); + + /* After this point, the plugins should be registered and the configuration set. */ + + // Proceed only if we have plugins to handle. + if ( empty( $this->plugins ) || ! is_array( $this->plugins ) ) { + return; + } + + // Set up the menu and notices if we still have outstanding actions. + if ( true !== $this->is_tgmpa_complete() ) { + // Sort the plugins. + array_multisort( $this->sort_order, SORT_ASC, $this->plugins ); + + add_action( 'admin_menu', array( $this, 'admin_menu' ) ); + add_action( 'admin_head', array( $this, 'dismiss' ) ); + + // Prevent the normal links from showing underneath a single install/update page. + add_filter( 'install_plugin_complete_actions', array( $this, 'actions' ) ); + add_filter( 'update_plugin_complete_actions', array( $this, 'actions' ) ); + + if ( $this->has_notices ) { + add_action( 'admin_notices', array( $this, 'notices' ) ); + add_action( 'admin_init', array( $this, 'admin_init' ), 1 ); + add_action( 'admin_enqueue_scripts', array( $this, 'thickbox' ) ); + } + + add_action( 'load-plugins.php', array( $this, 'add_plugin_action_link_filters' ), 1 ); + } + + // Make sure things get reset on switch theme. + add_action( 'switch_theme', array( $this, 'flush_plugins_cache' ) ); + + if ( $this->has_notices ) { + add_action( 'switch_theme', array( $this, 'update_dismiss' ) ); + } + + // Setup the force activation hook. + if ( true === $this->has_forced_activation ) { + add_action( 'admin_init', array( $this, 'force_activation' ) ); + } + + // Setup the force deactivation hook. + if ( true === $this->has_forced_deactivation ) { + add_action( 'switch_theme', array( $this, 'force_deactivation' ) ); + } + } + + /** + * Prevent activation of plugins which don't meet the minimum version requirement from the + * WP native plugins page. + * + * @since 2.5.0 + */ + public function add_plugin_action_link_filters() { + foreach ( $this->plugins as $slug => $plugin ) { + if ( false === $this->can_plugin_activate( $slug ) ) { + add_filter( 'plugin_action_links_' . $plugin['file_path'], array( $this, 'filter_plugin_action_links_activate' ), 20 ); + } + + if ( true === $plugin['force_activation'] ) { + add_filter( 'plugin_action_links_' . $plugin['file_path'], array( $this, 'filter_plugin_action_links_deactivate' ), 20 ); + } + + if ( false !== $this->does_plugin_require_update( $slug ) ) { + add_filter( 'plugin_action_links_' . $plugin['file_path'], array( $this, 'filter_plugin_action_links_update' ), 20 ); + } + } + } + + /** + * Remove the 'Activate' link on the WP native plugins page if the plugin does not meet the + * minimum version requirements. + * + * @since 2.5.0 + * + * @param array $actions Action links. + * @return array + */ + public function filter_plugin_action_links_activate( $actions ) { + unset( $actions['activate'] ); + + return $actions; + } + + /** + * Remove the 'Deactivate' link on the WP native plugins page if the plugin has been set to force activate. + * + * @since 2.5.0 + * + * @param array $actions Action links. + * @return array + */ + public function filter_plugin_action_links_deactivate( $actions ) { + unset( $actions['deactivate'] ); + + return $actions; + } + + /** + * Add a 'Requires update' link on the WP native plugins page if the plugin does not meet the + * minimum version requirements. + * + * @since 2.5.0 + * + * @param array $actions Action links. + * @return array + */ + public function filter_plugin_action_links_update( $actions ) { + $actions['update'] = sprintf( + '%3$s', + esc_url( $this->get_tgmpa_status_url( 'update' ) ), + esc_attr__( 'This plugin needs to be updated to be compatible with your theme.', 'fruitful' ), + esc_html__( 'Update Required', 'fruitful' ) + ); + + return $actions; + } + + /** + * Handles calls to show plugin information via links in the notices. + * + * We get the links in the admin notices to point to the TGMPA page, rather + * than the typical plugin-install.php file, so we can prepare everything + * beforehand. + * + * WP does not make it easy to show the plugin information in the thickbox - + * here we have to require a file that includes a function that does the + * main work of displaying it, enqueue some styles, set up some globals and + * finally call that function before exiting. + * + * Down right easy once you know how... + * + * Returns early if not the TGMPA page. + * + * @since 2.1.0 + * + * @global string $tab Used as iframe div class names, helps with styling + * @global string $body_id Used as the iframe body ID, helps with styling + * + * @return null Returns early if not the TGMPA page. + */ + public function admin_init() { + if ( ! $this->is_tgmpa_page() ) { + return; + } + + if ( isset( $_REQUEST['tab'] ) && 'plugin-information' === $_REQUEST['tab'] ) { + // Needed for install_plugin_information(). + require_once ABSPATH . 'wp-admin/includes/plugin-install.php'; + + wp_enqueue_style( 'plugin-install' ); + + global $tab, $body_id; + $body_id = 'plugin-information'; + // @codingStandardsIgnoreStart + $tab = 'plugin-information'; + // @codingStandardsIgnoreEnd + + install_plugin_information(); + + exit; + } + } + + /** + * Enqueue thickbox scripts/styles for plugin info. + * + * Thickbox is not automatically included on all admin pages, so we must + * manually enqueue it for those pages. + * + * Thickbox is only loaded if the user has not dismissed the admin + * notice or if there are any plugins left to install and activate. + * + * @since 2.1.0 + */ + public function thickbox() { + if ( ! get_user_meta( get_current_user_id(), 'tgmpa_dismissed_notice_' . $this->id, true ) ) { + add_thickbox(); + } + } + + /** + * Adds submenu page if there are plugin actions to take. + * + * This method adds the submenu page letting users know that a required + * plugin needs to be installed. + * + * This page disappears once the plugin has been installed and activated. + * + * @since 1.0.0 + * + * @see TGM_Plugin_Activation::init() + * @see TGM_Plugin_Activation::install_plugins_page() + * + * @return null Return early if user lacks capability to install a plugin. + */ + public function admin_menu() { + // Make sure privileges are correct to see the page. + if ( ! current_user_can( 'install_plugins' ) ) { + return; + } + + $args = apply_filters( + 'tgmpa_admin_menu_args', + array( + 'parent_slug' => $this->parent_slug, // Parent Menu slug. + 'page_title' => $this->strings['page_title'], // Page title. + 'menu_title' => $this->strings['menu_title'], // Menu title. + 'capability' => $this->capability, // Capability. + 'menu_slug' => $this->menu, // Menu slug. + 'function' => array( $this, 'install_plugins_page' ), // Callback. + ) + ); + + $this->add_admin_menu( $args ); + } + + /** + * Add the menu item. + * + * @since 2.5.0 + * + * @param array $args Menu item configuration. + */ + protected function add_admin_menu( array $args ) { + $this->page_hook = add_theme_page( $args['page_title'], $args['menu_title'], $args['capability'], $args['menu_slug'], $args['function'] ); + } + + /** + * Echoes plugin installation form. + * + * This method is the callback for the admin_menu method function. + * This displays the admin page and form area where the user can select to install and activate the plugin. + * Aborts early if we're processing a plugin installation action. + * + * @since 1.0.0 + * + * @return null Aborts early if we're processing a plugin installation action. + */ + public function install_plugins_page() { + // Store new instance of plugin table in object. + $plugin_table = new TGMPA_List_Table; + + // Return early if processing a plugin installation action. + if ( ( ( 'tgmpa-bulk-install' === $plugin_table->current_action() || 'tgmpa-bulk-update' === $plugin_table->current_action() ) && $plugin_table->process_bulk_actions() ) || $this->do_plugin_install() ) { + return; + } + + // Force refresh of available plugin information so we'll know about manual updates/deletes. + wp_clean_plugins_cache( false ); + + ?> +
        +

        + prepare_items(); ?> + + message ) && is_string( $this->message ) ) { + echo wp_kses_post( $this->message ); + } + ?> + views(); ?> + +
        + + + display(); ?> +
        +
        + sanitize_key( urldecode( $_GET['plugin'] ) ); + + if ( ! isset( $this->plugins[ $slug ] ) ) { + return false; + } + + // Was an install or upgrade action link clicked? + if ( ( isset( $_GET['tgmpa-install'] ) && 'install-plugin' === $_GET['tgmpa-install'] ) || ( isset( $_GET['tgmpa-update'] ) && 'update-plugin' === $_GET['tgmpa-update'] ) ) { + + $install_type = 'install'; + if ( isset( $_GET['tgmpa-update'] ) && 'update-plugin' === $_GET['tgmpa-update'] ) { + $install_type = 'update'; + } + + check_admin_referer( 'tgmpa-' . $install_type, 'tgmpa-nonce' ); + + // Pass necessary information via URL if WP_Filesystem is needed. + $url = wp_nonce_url( + add_query_arg( + array( + 'plugin' => urlencode( $slug ), + 'tgmpa-' . $install_type => $install_type . '-plugin', + ), + $this->get_tgmpa_url() + ), + 'tgmpa-' . $install_type, + 'tgmpa-nonce' + ); + + $method = ''; // Leave blank so WP_Filesystem can populate it as necessary. + + if ( false === ( $creds = request_filesystem_credentials( esc_url_raw( $url ), $method, false, false, array() ) ) ) { + return true; + } + + if ( ! WP_Filesystem( $creds ) ) { + request_filesystem_credentials( esc_url_raw( $url ), $method, true, false, array() ); // Setup WP_Filesystem. + return true; + } + + /* If we arrive here, we have the filesystem. */ + + // Prep variables for Plugin_Installer_Skin class. + $extra = array(); + $extra['slug'] = $slug; // Needed for potentially renaming of directory name. + $source = $this->get_download_url( $slug ); + $api = ( 'repo' === $this->plugins[ $slug ]['source_type'] ) ? $this->get_plugins_api( $slug ) : null; + $api = ( false !== $api ) ? $api : null; + + $url = add_query_arg( + array( + 'action' => $install_type . '-plugin', + 'plugin' => urlencode( $slug ), + ), + 'update.php' + ); + + if ( ! class_exists( 'Plugin_Upgrader', false ) ) { + require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; + } + + $skin_args = array( + 'type' => ( 'bundled' !== $this->plugins[ $slug ]['source_type'] ) ? 'web' : 'upload', + 'title' => sprintf( $this->strings['installing'], $this->plugins[ $slug ]['name'] ), + 'url' => esc_url_raw( $url ), + 'nonce' => $install_type . '-plugin_' . $slug, + 'plugin' => '', + 'api' => $api, + 'extra' => $extra, + ); + + if ( 'update' === $install_type ) { + $skin_args['plugin'] = $this->plugins[ $slug ]['file_path']; + $skin = new Plugin_Upgrader_Skin( $skin_args ); + } else { + $skin = new Plugin_Installer_Skin( $skin_args ); + } + + // Create a new instance of Plugin_Upgrader. + $upgrader = new Plugin_Upgrader( $skin ); + + // Perform the action and install the plugin from the $source urldecode(). + add_filter( 'upgrader_source_selection', array( $this, 'maybe_adjust_source_dir' ), 1, 3 ); + + if ( 'update' === $install_type ) { + // Inject our info into the update transient. + $to_inject = array( $slug => $this->plugins[ $slug ] ); + $to_inject[ $slug ]['source'] = $source; + $this->inject_update_info( $to_inject ); + + $upgrader->upgrade( $this->plugins[ $slug ]['file_path'] ); + } else { + $upgrader->install( $source ); + } + + remove_filter( 'upgrader_source_selection', array( $this, 'maybe_adjust_source_dir' ), 1, 3 ); + + // Make sure we have the correct file path now the plugin is installed/updated. + $this->populate_file_path( $slug ); + + // Only activate plugins if the config option is set to true and the plugin isn't + // already active (upgrade). + if ( $this->is_automatic && ! $this->is_plugin_active( $slug ) ) { + $plugin_activate = $upgrader->plugin_info(); // Grab the plugin info from the Plugin_Upgrader method. + if ( false === $this->activate_single_plugin( $plugin_activate, $slug, true ) ) { + return true; // Finish execution of the function early as we encountered an error. + } + } + + $this->show_tgmpa_version(); + + // Display message based on if all plugins are now active or not. + if ( $this->is_tgmpa_complete() ) { + echo '

        ', sprintf( esc_html( $this->strings['complete'] ), '' . esc_html__( 'Return to the Dashboard', 'fruitful' ) . '' ), '

        '; + echo ''; + } else { + echo '

        ', esc_html( $this->strings['return'] ), '

        '; + } + + return true; + } elseif ( isset( $this->plugins[ $slug ]['file_path'], $_GET['tgmpa-activate'] ) && 'activate-plugin' === $_GET['tgmpa-activate'] ) { + // Activate action link was clicked. + check_admin_referer( 'tgmpa-activate', 'tgmpa-nonce' ); + + if ( false === $this->activate_single_plugin( $this->plugins[ $slug ]['file_path'], $slug ) ) { + return true; // Finish execution of the function early as we encountered an error. + } + } + + return false; + } + + /** + * Inject information into the 'update_plugins' site transient as WP checks that before running an update. + * + * @since 2.5.0 + * + * @param array $plugins The plugin information for the plugins which are to be updated. + */ + public function inject_update_info( $plugins ) { + $repo_updates = get_site_transient( 'update_plugins' ); + + if ( ! is_object( $repo_updates ) ) { + $repo_updates = new stdClass; + } + + foreach ( $plugins as $slug => $plugin ) { + $file_path = $plugin['file_path']; + + if ( empty( $repo_updates->response[ $file_path ] ) ) { + $repo_updates->response[ $file_path ] = new stdClass; + } + + // We only really need to set package, but let's do all we can in case WP changes something. + $repo_updates->response[ $file_path ]->slug = $slug; + $repo_updates->response[ $file_path ]->plugin = $file_path; + $repo_updates->response[ $file_path ]->new_version = $plugin['version']; + $repo_updates->response[ $file_path ]->package = $plugin['source']; + if ( empty( $repo_updates->response[ $file_path ]->url ) && ! empty( $plugin['external_url'] ) ) { + $repo_updates->response[ $file_path ]->url = $plugin['external_url']; + } + } + + set_site_transient( 'update_plugins', $repo_updates ); + } + + /** + * Adjust the plugin directory name if necessary. + * + * The final destination directory of a plugin is based on the subdirectory name found in the + * (un)zipped source. In some cases - most notably GitHub repository plugin downloads -, this + * subdirectory name is not the same as the expected slug and the plugin will not be recognized + * as installed. This is fixed by adjusting the temporary unzipped source subdirectory name to + * the expected plugin slug. + * + * @since 2.5.0 + * + * @param string $source Path to upgrade/zip-file-name.tmp/subdirectory/. + * @param string $remote_source Path to upgrade/zip-file-name.tmp. + * @param \WP_Upgrader $upgrader Instance of the upgrader which installs the plugin. + * @return string $source + */ + public function maybe_adjust_source_dir( $source, $remote_source, $upgrader ) { + if ( ! $this->is_tgmpa_page() || ! is_object( $GLOBALS['wp_filesystem'] ) ) { + return $source; + } + + // Check for single file plugins. + $source_files = array_keys( $GLOBALS['wp_filesystem']->dirlist( $remote_source ) ); + if ( 1 === count( $source_files ) && false === $GLOBALS['wp_filesystem']->is_dir( $source ) ) { + return $source; + } + + // Multi-file plugin, let's see if the directory is correctly named. + $desired_slug = ''; + + // Figure out what the slug is supposed to be. + if ( false === $upgrader->bulk && ! empty( $upgrader->skin->options['extra']['slug'] ) ) { + $desired_slug = $upgrader->skin->options['extra']['slug']; + } else { + // Bulk installer contains less info, so fall back on the info registered here. + foreach ( $this->plugins as $slug => $plugin ) { + if ( ! empty( $upgrader->skin->plugin_names[ $upgrader->skin->i ] ) && $plugin['name'] === $upgrader->skin->plugin_names[ $upgrader->skin->i ] ) { + $desired_slug = $slug; + break; + } + } + unset( $slug, $plugin ); + } + + if ( ! empty( $desired_slug ) ) { + $subdir_name = untrailingslashit( str_replace( trailingslashit( $remote_source ), '', $source ) ); + + if ( ! empty( $subdir_name ) && $subdir_name !== $desired_slug ) { + $from = untrailingslashit( $source ); + $to = trailingslashit( $remote_source ) . $desired_slug; + + if ( true === $GLOBALS['wp_filesystem']->move( $from, $to ) ) { + return trailingslashit( $to ); + } else { + return new WP_Error( 'rename_failed', esc_html__( 'The remote plugin package does not contain a folder with the desired slug and renaming did not work.', 'fruitful' ) . ' ' . esc_html__( 'Please contact the plugin provider and ask them to package their plugin according to the WordPress guidelines.', 'fruitful' ), array( 'found' => $subdir_name, 'expected' => $desired_slug ) ); + } + } elseif ( empty( $subdir_name ) ) { + return new WP_Error( 'packaged_wrong', esc_html__( 'The remote plugin package consists of more than one file, but the files are not packaged in a folder.', 'fruitful' ) . ' ' . esc_html__( 'Please contact the plugin provider and ask them to package their plugin according to the WordPress guidelines.', 'fruitful' ), array( 'found' => $subdir_name, 'expected' => $desired_slug ) ); + } + } + + return $source; + } + + /** + * Activate a single plugin and send feedback about the result to the screen. + * + * @since 2.5.0 + * + * @param string $file_path Path within wp-plugins/ to main plugin file. + * @param string $slug Plugin slug. + * @param bool $automatic Whether this is an automatic activation after an install. Defaults to false. + * This determines the styling of the output messages. + * @return bool False if an error was encountered, true otherwise. + */ + protected function activate_single_plugin( $file_path, $slug, $automatic = false ) { + if ( $this->can_plugin_activate( $slug ) ) { + $activate = activate_plugin( $file_path ); + + if ( is_wp_error( $activate ) ) { + echo '

        ', wp_kses_post( $activate->get_error_message() ), '

        ', + '

        ', esc_html( $this->strings['return'] ), '

        '; + + return false; // End it here if there is an error with activation. + } else { + if ( ! $automatic ) { + // Make sure message doesn't display again if bulk activation is performed + // immediately after a single activation. + if ( ! isset( $_POST['action'] ) ) { // WPCS: CSRF OK. + echo '

        ', esc_html( $this->strings['activated_successfully'] ), ' ', esc_html( $this->plugins[ $slug ]['name'] ), '.

        '; + } + } else { + // Simpler message layout for use on the plugin install page. + echo '

        ', esc_html( $this->strings['plugin_activated'] ), '

        '; + } + } + } elseif ( $this->is_plugin_active( $slug ) ) { + // No simpler message format provided as this message should never be encountered + // on the plugin install page. + echo '

        ', + sprintf( + esc_html( $this->strings['plugin_already_active'] ), + '' . esc_html( $this->plugins[ $slug ]['name'] ) . '' + ), + '

        '; + } elseif ( $this->does_plugin_require_update( $slug ) ) { + if ( ! $automatic ) { + // Make sure message doesn't display again if bulk activation is performed + // immediately after a single activation. + if ( ! isset( $_POST['action'] ) ) { // WPCS: CSRF OK. + echo '

        ', + sprintf( + esc_html( $this->strings['plugin_needs_higher_version'] ), + '' . esc_html( $this->plugins[ $slug ]['name'] ) . '' + ), + '

        '; + } + } else { + // Simpler message layout for use on the plugin install page. + echo '

        ', sprintf( esc_html( $this->strings['plugin_needs_higher_version'] ), esc_html( $this->plugins[ $slug ]['name'] ) ), '

        '; + } + } + + return true; + } + + /** + * Echoes required plugin notice. + * + * Outputs a message telling users that a specific plugin is required for + * their theme. If appropriate, it includes a link to the form page where + * users can install and activate the plugin. + * + * Returns early if we're on the Install page. + * + * @since 1.0.0 + * + * @global object $current_screen + * + * @return null Returns early if we're on the Install page. + */ + public function notices() { + // Remove nag on the install page / Return early if the nag message has been dismissed. + if ( $this->is_tgmpa_page() || get_user_meta( get_current_user_id(), 'tgmpa_dismissed_notice_' . $this->id, true ) ) { + return; + } + + // Store for the plugin slugs by message type. + $message = array(); + + // Initialize counters used to determine plurality of action link texts. + $install_link_count = 0; + $update_link_count = 0; + $activate_link_count = 0; + + foreach ( $this->plugins as $slug => $plugin ) { + if ( $this->is_plugin_active( $slug ) && false === $this->does_plugin_have_update( $slug ) ) { + continue; + } + + if ( ! $this->is_plugin_installed( $slug ) ) { + if ( current_user_can( 'install_plugins' ) ) { + $install_link_count++; + + if ( true === $plugin['required'] ) { + $message['notice_can_install_required'][] = $slug; + } else { + $message['notice_can_install_recommended'][] = $slug; + } + } else { + // Need higher privileges to install the plugin. + $message['notice_cannot_install'][] = $slug; + } + } else { + if ( ! $this->is_plugin_active( $slug ) && $this->can_plugin_activate( $slug ) ) { + if ( current_user_can( 'activate_plugins' ) ) { + $activate_link_count++; + + if ( true === $plugin['required'] ) { + $message['notice_can_activate_required'][] = $slug; + } else { + $message['notice_can_activate_recommended'][] = $slug; + } + } else { + // Need higher privileges to activate the plugin. + $message['notice_cannot_activate'][] = $slug; + } + } + + if ( $this->does_plugin_require_update( $slug ) || false !== $this->does_plugin_have_update( $slug ) ) { + + if ( current_user_can( 'install_plugins' ) ) { + $update_link_count++; + + if ( $this->does_plugin_require_update( $slug ) ) { + $message['notice_ask_to_update'][] = $slug; + } elseif ( false !== $this->does_plugin_have_update( $slug ) ) { + $message['notice_ask_to_update_maybe'][] = $slug; + } + } else { + // Need higher privileges to update the plugin. + $message['notice_cannot_update'][] = $slug; + } + } + } + } + unset( $slug, $plugin ); + + // If we have notices to display, we move forward. + if ( ! empty( $message ) ) { + krsort( $message ); // Sort messages. + $rendered = ''; + + // As add_settings_error() wraps the final message in a

        and as the final message can't be + // filtered, using

        's in our html would render invalid html output. + $line_template = '%s' . "\n"; + + // If dismissable is false and a message is set, output it now. + if ( ! $this->dismissable && ! empty( $this->dismiss_msg ) ) { + $rendered .= sprintf( $line_template, wp_kses_post( $this->dismiss_msg ) ); + } + + // Render the individual message lines for the notice. + foreach ( $message as $type => $plugin_group ) { + $linked_plugins = array(); + + // Get the external info link for a plugin if one is available. + foreach ( $plugin_group as $plugin_slug ) { + $linked_plugins[] = $this->get_info_link( $plugin_slug ); + } + unset( $plugin_slug ); + + $count = count( $plugin_group ); + $linked_plugins = array_map( array( 'TGMPA_Utils', 'wrap_in_em' ), $linked_plugins ); + $last_plugin = array_pop( $linked_plugins ); // Pop off last name to prep for readability. + $imploded = empty( $linked_plugins ) ? $last_plugin : ( implode( ', ', $linked_plugins ) . ' ' . esc_html_x( 'and', 'plugin A *and* plugin B', 'fruitful' ) . ' ' . $last_plugin ); + + $rendered .= sprintf( + $line_template, + sprintf( + translate_nooped_plural( $this->strings[ $type ], $count, 'fruitful' ), + $imploded, + $count + ) + ); + + if ( 0 === strpos( $type, 'notice_cannot' ) ) { + $rendered .= $this->strings['contact_admin']; + } + } + unset( $type, $plugin_group, $linked_plugins, $count, $last_plugin, $imploded ); + + // Setup action links. + $action_links = array( + 'install' => '', + 'update' => '', + 'activate' => '', + 'dismiss' => $this->dismissable ? '' . esc_html( $this->strings['dismiss'] ) . '' : '', + ); + + $link_template = '%1$s'; + + if ( current_user_can( 'install_plugins' ) ) { + if ( $install_link_count > 0 ) { + $action_links['install'] = sprintf( + $link_template, + translate_nooped_plural( $this->strings['install_link'], $install_link_count, 'fruitful' ), + esc_url( $this->get_tgmpa_status_url( 'install' ) ) + ); + } + if ( $update_link_count > 0 ) { + $action_links['update'] = sprintf( + $link_template, + translate_nooped_plural( $this->strings['update_link'], $update_link_count, 'fruitful' ), + esc_url( $this->get_tgmpa_status_url( 'update' ) ) + ); + } + } + + if ( current_user_can( 'activate_plugins' ) && $activate_link_count > 0 ) { + $action_links['activate'] = sprintf( + $link_template, + translate_nooped_plural( $this->strings['activate_link'], $activate_link_count, 'fruitful' ), + esc_url( $this->get_tgmpa_status_url( 'activate' ) ) + ); + } + + $action_links = apply_filters( 'tgmpa_notice_action_links', $action_links ); + + $action_links = array_filter( (array) $action_links ); // Remove any empty array items. + + if ( ! empty( $action_links ) && is_array( $action_links ) ) { + $action_links = sprintf( $line_template, implode( ' | ', $action_links ) ); + $rendered .= apply_filters( 'tgmpa_notice_rendered_action_links', $action_links ); + } + + // Register the nag messages and prepare them to be processed. + if ( ! empty( $this->strings['nag_type'] ) ) { + add_settings_error( 'tgmpa', 'tgmpa', $rendered, sanitize_html_class( strtolower( $this->strings['nag_type'] ) ) ); + } else { + $nag_class = version_compare( $this->wp_version, '3.8', '<' ) ? 'updated' : 'update-nag'; + add_settings_error( 'tgmpa', 'tgmpa', $rendered, $nag_class ); + } + } + + // Admin options pages already output settings_errors, so this is to avoid duplication. + if ( 'options-general' !== $GLOBALS['current_screen']->parent_base ) { + $this->display_settings_errors(); + } + } + + /** + * Display settings errors and remove those which have been displayed to avoid duplicate messages showing + * + * @since 2.5.0 + */ + protected function display_settings_errors() { + global $wp_settings_errors; + + settings_errors( 'tgmpa' ); + + foreach ( (array) $wp_settings_errors as $key => $details ) { + if ( 'tgmpa' === $details['setting'] ) { + unset( $wp_settings_errors[ $key ] ); + break; + } + } + } + + /** + * Add dismissable admin notices. + * + * Appends a link to the admin nag messages. If clicked, the admin notice disappears and no longer is visible to users. + * + * @since 2.1.0 + */ + public function dismiss() { + if ( isset( $_GET['tgmpa-dismiss'] ) ) { + update_user_meta( get_current_user_id(), 'tgmpa_dismissed_notice_' . $this->id, 1 ); + } + } + + /** + * Add individual plugin to our collection of plugins. + * + * If the required keys are not set or the plugin has already + * been registered, the plugin is not added. + * + * @since 2.0.0 + * + * @param array|null $plugin Array of plugin arguments or null if invalid argument. + * @return null Return early if incorrect argument. + */ + public function register( $plugin ) { + if ( empty( $plugin['slug'] ) || empty( $plugin['name'] ) ) { + return; + } + + if ( empty( $plugin['slug'] ) || ! is_string( $plugin['slug'] ) || isset( $this->plugins[ $plugin['slug'] ] ) ) { + return; + } + + $defaults = array( + 'name' => '', // String + 'slug' => '', // String + 'source' => 'repo', // String + 'required' => false, // Boolean + 'version' => '', // String + 'force_activation' => false, // Boolean + 'force_deactivation' => false, // Boolean + 'external_url' => '', // String + 'is_callable' => '', // String|Array. + ); + + // Prepare the received data. + $plugin = wp_parse_args( $plugin, $defaults ); + + // Standardize the received slug. + $plugin['slug'] = $this->sanitize_key( $plugin['slug'] ); + + // Forgive users for using string versions of booleans or floats for version number. + $plugin['version'] = (string) $plugin['version']; + $plugin['source'] = empty( $plugin['source'] ) ? 'repo' : $plugin['source']; + $plugin['required'] = TGMPA_Utils::validate_bool( $plugin['required'] ); + $plugin['force_activation'] = TGMPA_Utils::validate_bool( $plugin['force_activation'] ); + $plugin['force_deactivation'] = TGMPA_Utils::validate_bool( $plugin['force_deactivation'] ); + + // Enrich the received data. + $plugin['file_path'] = $this->_get_plugin_basename_from_slug( $plugin['slug'] ); + $plugin['source_type'] = $this->get_plugin_source_type( $plugin['source'] ); + + // Set the class properties. + $this->plugins[ $plugin['slug'] ] = $plugin; + $this->sort_order[ $plugin['slug'] ] = $plugin['name']; + + // Should we add the force activation hook ? + if ( true === $plugin['force_activation'] ) { + $this->has_forced_activation = true; + } + + // Should we add the force deactivation hook ? + if ( true === $plugin['force_deactivation'] ) { + $this->has_forced_deactivation = true; + } + } + + /** + * Determine what type of source the plugin comes from. + * + * @since 2.5.0 + * + * @param string $source The source of the plugin as provided, either empty (= WP repo), a file path + * (= bundled) or an external URL. + * @return string 'repo', 'external', or 'bundled' + */ + protected function get_plugin_source_type( $source ) { + if ( 'repo' === $source || preg_match( self::WP_REPO_REGEX, $source ) ) { + return 'repo'; + } elseif ( preg_match( self::IS_URL_REGEX, $source ) ) { + return 'external'; + } else { + return 'bundled'; + } + } + + /** + * Sanitizes a string key. + * + * Near duplicate of WP Core `sanitize_key()`. The difference is that uppercase characters *are* + * allowed, so as not to break upgrade paths from non-standard bundled plugins using uppercase + * characters in the plugin directory path/slug. Silly them. + * + * @see https://developer.wordpress.org/reference/hooks/sanitize_key/ + * + * @since 2.5.0 + * + * @param string $key String key. + * @return string Sanitized key + */ + public function sanitize_key( $key ) { + $raw_key = $key; + $key = preg_replace( '`[^A-Za-z0-9_-]`', '', $key ); + + /** + * Filter a sanitized key string. + * + * @since 3.0.0 + * + * @param string $key Sanitized key. + * @param string $raw_key The key prior to sanitization. + */ + return apply_filters( 'tgmpa_sanitize_key', $key, $raw_key ); + } + + /** + * Amend default configuration settings. + * + * @since 2.0.0 + * + * @param array $config Array of config options to pass as class properties. + */ + public function config( $config ) { + $keys = array( + 'id', + 'default_path', + 'has_notices', + 'dismissable', + 'dismiss_msg', + 'menu', + 'parent_slug', + 'capability', + 'is_automatic', + 'message', + 'strings', + ); + + foreach ( $keys as $key ) { + if ( isset( $config[ $key ] ) ) { + if ( is_array( $config[ $key ] ) ) { + $this->$key = array_merge( $this->$key, $config[ $key ] ); + } else { + $this->$key = $config[ $key ]; + } + } + } + } + + /** + * Amend action link after plugin installation. + * + * @since 2.0.0 + * + * @param array $install_actions Existing array of actions. + * @return array Amended array of actions. + */ + public function actions( $install_actions ) { + // Remove action links on the TGMPA install page. + if ( $this->is_tgmpa_page() ) { + return false; + } + + return $install_actions; + } + + /** + * Flushes the plugins cache on theme switch to prevent stale entries + * from remaining in the plugin table. + * + * @since 2.4.0 + * + * @param bool $clear_update_cache Optional. Whether to clear the Plugin updates cache. + * Parameter added in v2.5.0. + */ + public function flush_plugins_cache( $clear_update_cache = true ) { + wp_clean_plugins_cache( $clear_update_cache ); + } + + /** + * Set file_path key for each installed plugin. + * + * @since 2.1.0 + * + * @param string $plugin_slug Optional. If set, only (re-)populates the file path for that specific plugin. + * Parameter added in v2.5.0. + */ + public function populate_file_path( $plugin_slug = '' ) { + if ( ! empty( $plugin_slug ) && is_string( $plugin_slug ) && isset( $this->plugins[ $plugin_slug ] ) ) { + $this->plugins[ $plugin_slug ]['file_path'] = $this->_get_plugin_basename_from_slug( $plugin_slug ); + } else { + // Add file_path key for all plugins. + foreach ( $this->plugins as $slug => $values ) { + $this->plugins[ $slug ]['file_path'] = $this->_get_plugin_basename_from_slug( $slug ); + } + } + } + + /** + * Helper function to extract the file path of the plugin file from the + * plugin slug, if the plugin is installed. + * + * @since 2.0.0 + * + * @param string $slug Plugin slug (typically folder name) as provided by the developer. + * @return string Either file path for plugin if installed, or just the plugin slug. + */ + protected function _get_plugin_basename_from_slug( $slug ) { + $keys = array_keys( $this->get_plugins() ); + + foreach ( $keys as $key ) { + if ( preg_match( '|^' . $slug . '/|', $key ) ) { + return $key; + } + } + + return $slug; + } + + /** + * Retrieve plugin data, given the plugin name. + * + * Loops through the registered plugins looking for $name. If it finds it, + * it returns the $data from that plugin. Otherwise, returns false. + * + * @since 2.1.0 + * + * @param string $name Name of the plugin, as it was registered. + * @param string $data Optional. Array key of plugin data to return. Default is slug. + * @return string|boolean Plugin slug if found, false otherwise. + */ + public function _get_plugin_data_from_name( $name, $data = 'slug' ) { + foreach ( $this->plugins as $values ) { + if ( $name === $values['name'] && isset( $values[ $data ] ) ) { + return $values[ $data ]; + } + } + + return false; + } + + /** + * Retrieve the download URL for a package. + * + * @since 2.5.0 + * + * @param string $slug Plugin slug. + * @return string Plugin download URL or path to local file or empty string if undetermined. + */ + public function get_download_url( $slug ) { + $dl_source = ''; + + switch ( $this->plugins[ $slug ]['source_type'] ) { + case 'repo': + return $this->get_wp_repo_download_url( $slug ); + case 'external': + return $this->plugins[ $slug ]['source']; + case 'bundled': + return $this->default_path . $this->plugins[ $slug ]['source']; + } + + return $dl_source; // Should never happen. + } + + /** + * Retrieve the download URL for a WP repo package. + * + * @since 2.5.0 + * + * @param string $slug Plugin slug. + * @return string Plugin download URL. + */ + protected function get_wp_repo_download_url( $slug ) { + $source = ''; + $api = $this->get_plugins_api( $slug ); + + if ( false !== $api && isset( $api->download_link ) ) { + $source = $api->download_link; + } + + return $source; + } + + /** + * Try to grab information from WordPress API. + * + * @since 2.5.0 + * + * @param string $slug Plugin slug. + * @return object Plugins_api response object on success, WP_Error on failure. + */ + protected function get_plugins_api( $slug ) { + static $api = array(); // Cache received responses. + + if ( ! isset( $api[ $slug ] ) ) { + if ( ! function_exists( 'plugins_api' ) ) { + require_once ABSPATH . 'wp-admin/includes/plugin-install.php'; + } + + $response = plugins_api( 'plugin_information', array( 'slug' => $slug, 'fields' => array( 'sections' => false ) ) ); + + $api[ $slug ] = false; + + if ( is_wp_error( $response ) ) { + wp_die( esc_html( $this->strings['oops'] ) ); + } else { + $api[ $slug ] = $response; + } + } + + return $api[ $slug ]; + } + + /** + * Retrieve a link to a plugin information page. + * + * @since 2.5.0 + * + * @param string $slug Plugin slug. + * @return string Fully formed html link to a plugin information page if available + * or the plugin name if not. + */ + public function get_info_link( $slug ) { + if ( ! empty( $this->plugins[ $slug ]['external_url'] ) && preg_match( self::IS_URL_REGEX, $this->plugins[ $slug ]['external_url'] ) ) { + $link = sprintf( + '%2$s', + esc_url( $this->plugins[ $slug ]['external_url'] ), + esc_html( $this->plugins[ $slug ]['name'] ) + ); + } elseif ( 'repo' === $this->plugins[ $slug ]['source_type'] ) { + $url = add_query_arg( + array( + 'tab' => 'plugin-information', + 'plugin' => urlencode( $slug ), + 'TB_iframe' => 'true', + 'width' => '750', + 'height' => '900', + ), + self_admin_url( 'plugin-install.php' ) + ); + + $link = sprintf( + '%2$s', + esc_url( $url ), + esc_html( $this->plugins[ $slug ]['name'] ) + ); + } else { + $link = esc_html( $this->plugins[ $slug ]['name'] ); // No hyperlink. + } + + return $link; + } + + /** + * Determine if we're on the TGMPA Install page. + * + * @since 2.1.0 + * + * @return boolean True when on the TGMPA page, false otherwise. + */ + protected function is_tgmpa_page() { + return isset( $_GET['page'] ) && $this->menu === $_GET['page']; + } + + /** + * Retrieve the URL to the TGMPA Install page. + * + * I.e. depending on the config settings passed something along the lines of: + * http://example.com/wp-admin/themes.php?page=tgmpa-install-plugins + * + * @since 2.5.0 + * + * @return string Properly encoded URL (not escaped). + */ + public function get_tgmpa_url() { + static $url; + + if ( ! isset( $url ) ) { + $parent = $this->parent_slug; + if ( false === strpos( $parent, '.php' ) ) { + $parent = 'admin.php'; + } + $url = add_query_arg( + array( + 'page' => urlencode( $this->menu ), + ), + self_admin_url( $parent ) + ); + } + + return $url; + } + + /** + * Retrieve the URL to the TGMPA Install page for a specific plugin status (view). + * + * I.e. depending on the config settings passed something along the lines of: + * http://example.com/wp-admin/themes.php?page=tgmpa-install-plugins&plugin_status=install + * + * @since 2.5.0 + * + * @param string $status Plugin status - either 'install', 'update' or 'activate'. + * @return string Properly encoded URL (not escaped). + */ + public function get_tgmpa_status_url( $status ) { + return add_query_arg( + array( + 'plugin_status' => urlencode( $status ), + ), + $this->get_tgmpa_url() + ); + } + + /** + * Determine whether there are open actions for plugins registered with TGMPA. + * + * @since 2.5.0 + * + * @return bool True if complete, i.e. no outstanding actions. False otherwise. + */ + public function is_tgmpa_complete() { + $complete = true; + foreach ( $this->plugins as $slug => $plugin ) { + if ( ! $this->is_plugin_active( $slug ) || false !== $this->does_plugin_have_update( $slug ) ) { + $complete = false; + break; + } + } + + return $complete; + } + + /** + * Check if a plugin is installed. Does not take must-use plugins into account. + * + * @since 2.5.0 + * + * @param string $slug Plugin slug. + * @return bool True if installed, false otherwise. + */ + public function is_plugin_installed( $slug ) { + $installed_plugins = $this->get_plugins(); // Retrieve a list of all installed plugins (WP cached). + + return ( ! empty( $installed_plugins[ $this->plugins[ $slug ]['file_path'] ] ) ); + } + + /** + * Check if a plugin is active. + * + * @since 2.5.0 + * + * @param string $slug Plugin slug. + * @return bool True if active, false otherwise. + */ + public function is_plugin_active( $slug ) { + return ( ( ! empty( $this->plugins[ $slug ]['is_callable'] ) && is_callable( $this->plugins[ $slug ]['is_callable'] ) ) || is_plugin_active( $this->plugins[ $slug ]['file_path'] ) ); + } + + /** + * Check if a plugin can be updated, i.e. if we have information on the minimum WP version required + * available, check whether the current install meets them. + * + * @since 2.5.0 + * + * @param string $slug Plugin slug. + * @return bool True if OK to update, false otherwise. + */ + public function can_plugin_update( $slug ) { + // We currently can't get reliable info on non-WP-repo plugins - issue #380. + if ( 'repo' !== $this->plugins[ $slug ]['source_type'] ) { + return true; + } + + $api = $this->get_plugins_api( $slug ); + + if ( false !== $api && isset( $api->requires ) ) { + return version_compare( $GLOBALS['wp_version'], $api->requires, '>=' ); + } + + // No usable info received from the plugins API, presume we can update. + return true; + } + + /** + * Check if a plugin can be activated, i.e. is not currently active and meets the minimum + * plugin version requirements set in TGMPA (if any). + * + * @since 2.5.0 + * + * @param string $slug Plugin slug. + * @return bool True if OK to activate, false otherwise. + */ + public function can_plugin_activate( $slug ) { + return ( ! $this->is_plugin_active( $slug ) && ! $this->does_plugin_require_update( $slug ) ); + } + + /** + * Retrieve the version number of an installed plugin. + * + * @since 2.5.0 + * + * @param string $slug Plugin slug. + * @return string Version number as string or an empty string if the plugin is not installed + * or version unknown (plugins which don't comply with the plugin header standard). + */ + public function get_installed_version( $slug ) { + $installed_plugins = $this->get_plugins(); // Retrieve a list of all installed plugins (WP cached). + + if ( ! empty( $installed_plugins[ $this->plugins[ $slug ]['file_path'] ]['Version'] ) ) { + return $installed_plugins[ $this->plugins[ $slug ]['file_path'] ]['Version']; + } + + return ''; + } + + /** + * Check whether a plugin complies with the minimum version requirements. + * + * @since 2.5.0 + * + * @param string $slug Plugin slug. + * @return bool True when a plugin needs to be updated, otherwise false. + */ + public function does_plugin_require_update( $slug ) { + $installed_version = $this->get_installed_version( $slug ); + $minimum_version = $this->plugins[ $slug ]['version']; + + return version_compare( $minimum_version, $installed_version, '>' ); + } + + /** + * Check whether there is an update available for a plugin. + * + * @since 2.5.0 + * + * @param string $slug Plugin slug. + * @return false|string Version number string of the available update or false if no update available. + */ + public function does_plugin_have_update( $slug ) { + // Presume bundled and external plugins will point to a package which meets the minimum required version. + if ( 'repo' !== $this->plugins[ $slug ]['source_type'] ) { + if ( $this->does_plugin_require_update( $slug ) ) { + return $this->plugins[ $slug ]['version']; + } + + return false; + } + + $repo_updates = get_site_transient( 'update_plugins' ); + + if ( isset( $repo_updates->response[ $this->plugins[ $slug ]['file_path'] ]->new_version ) ) { + return $repo_updates->response[ $this->plugins[ $slug ]['file_path'] ]->new_version; + } + + return false; + } + + /** + * Retrieve potential upgrade notice for a plugin. + * + * @since 2.5.0 + * + * @param string $slug Plugin slug. + * @return string The upgrade notice or an empty string if no message was available or provided. + */ + public function get_upgrade_notice( $slug ) { + // We currently can't get reliable info on non-WP-repo plugins - issue #380. + if ( 'repo' !== $this->plugins[ $slug ]['source_type'] ) { + return ''; + } + + $repo_updates = get_site_transient( 'update_plugins' ); + + if ( ! empty( $repo_updates->response[ $this->plugins[ $slug ]['file_path'] ]->upgrade_notice ) ) { + return $repo_updates->response[ $this->plugins[ $slug ]['file_path'] ]->upgrade_notice; + } + + return ''; + } + + /** + * Wrapper around the core WP get_plugins function, making sure it's actually available. + * + * @since 2.5.0 + * + * @param string $plugin_folder Optional. Relative path to single plugin folder. + * @return array Array of installed plugins with plugin information. + */ + public function get_plugins( $plugin_folder = '' ) { + if ( ! function_exists( 'get_plugins' ) ) { + require_once ABSPATH . 'wp-admin/includes/plugin.php'; + } + + return get_plugins( $plugin_folder ); + } + + /** + * Delete dismissable nag option when theme is switched. + * + * This ensures that the user(s) is/are again reminded via nag of required + * and/or recommended plugins if they re-activate the theme. + * + * @since 2.1.1 + */ + public function update_dismiss() { + delete_metadata( 'user', null, 'tgmpa_dismissed_notice_' . $this->id, null, true ); + } + + /** + * Forces plugin activation if the parameter 'force_activation' is + * set to true. + * + * This allows theme authors to specify certain plugins that must be + * active at all times while using the current theme. + * + * Please take special care when using this parameter as it has the + * potential to be harmful if not used correctly. Setting this parameter + * to true will not allow the specified plugin to be deactivated unless + * the user switches themes. + * + * @since 2.2.0 + */ + public function force_activation() { + foreach ( $this->plugins as $slug => $plugin ) { + if ( true === $plugin['force_activation'] ) { + if ( ! $this->is_plugin_installed( $slug ) ) { + // Oops, plugin isn't there so iterate to next condition. + continue; + } elseif ( $this->can_plugin_activate( $slug ) ) { + // There we go, activate the plugin. + activate_plugin( $plugin['file_path'] ); + } + } + } + } + + /** + * Forces plugin deactivation if the parameter 'force_deactivation' + * is set to true. + * + * This allows theme authors to specify certain plugins that must be + * deactivated upon switching from the current theme to another. + * + * Please take special care when using this parameter as it has the + * potential to be harmful if not used correctly. + * + * @since 2.2.0 + */ + public function force_deactivation() { + foreach ( $this->plugins as $slug => $plugin ) { + // Only proceed forward if the parameter is set to true and plugin is active. + if ( true === $plugin['force_deactivation'] && $this->is_plugin_active( $slug ) ) { + deactivate_plugins( $plugin['file_path'] ); + } + } + } + + /** + * Echo the current TGMPA version number to the page. + */ + public function show_tgmpa_version() { + echo '

        ', + esc_html( sprintf( _x( 'TGMPA v%s', '%s = version number', 'fruitful' ), self::TGMPA_VERSION ) ), + '

        '; + } + + /** + * Returns the singleton instance of the class. + * + * @since 2.4.0 + * + * @return object The TGM_Plugin_Activation object. + */ + public static function get_instance() { + if ( ! isset( self::$instance ) && ! ( self::$instance instanceof self ) ) { + self::$instance = new self(); + } + + return self::$instance; + } + } + + if ( ! function_exists( 'load_tgm_plugin_activation' ) ) { + /** + * Ensure only one instance of the class is ever invoked. + */ + function load_tgm_plugin_activation() { + $GLOBALS['tgmpa'] = TGM_Plugin_Activation::get_instance(); + } + } + + if ( did_action( 'plugins_loaded' ) ) { + load_tgm_plugin_activation(); + } else { + add_action( 'plugins_loaded', 'load_tgm_plugin_activation' ); + } +} + +if ( ! function_exists( 'tgmpa' ) ) { + /** + * Helper function to register a collection of required plugins. + * + * @since 2.0.0 + * @api + * + * @param array $plugins An array of plugin arrays. + * @param array $config Optional. An array of configuration values. + */ + function tgmpa( $plugins, $config = array() ) { + $instance = call_user_func( array( get_class( $GLOBALS['tgmpa'] ), 'get_instance' ) ); + + foreach ( $plugins as $plugin ) { + call_user_func( array( $instance, 'register' ), $plugin ); + } + + if ( ! empty( $config ) && is_array( $config ) ) { + // Send out notices for deprecated arguments passed. + if ( isset( $config['notices'] ) ) { + _deprecated_argument( __FUNCTION__, '2.2.0', 'The `notices` config parameter was renamed to `has_notices` in TGMPA 2.2.0. Please adjust your configuration.' ); + if ( ! isset( $config['has_notices'] ) ) { + $config['has_notices'] = $config['notices']; + } + } + + if ( isset( $config['parent_menu_slug'] ) ) { + _deprecated_argument( __FUNCTION__, '2.4.0', 'The `parent_menu_slug` config parameter was removed in TGMPA 2.4.0. In TGMPA 2.5.0 an alternative was (re-)introduced. Please adjust your configuration. For more information visit the website: http://tgmpluginactivation.com/configuration/#h-configuration-options.' ); + } + if ( isset( $config['parent_url_slug'] ) ) { + _deprecated_argument( __FUNCTION__, '2.4.0', 'The `parent_url_slug` config parameter was removed in TGMPA 2.4.0. In TGMPA 2.5.0 an alternative was (re-)introduced. Please adjust your configuration. For more information visit the website: http://tgmpluginactivation.com/configuration/#h-configuration-options.' ); + } + + call_user_func( array( $instance, 'config' ), $config ); + } + } +} + +/** + * WP_List_Table isn't always available. If it isn't available, + * we load it here. + * + * @since 2.2.0 + */ +if ( ! class_exists( 'WP_List_Table' ) ) { + require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php'; +} + +if ( ! class_exists( 'TGMPA_List_Table' ) ) { + + /** + * List table class for handling plugins. + * + * Extends the WP_List_Table class to provide a future-compatible + * way of listing out all required/recommended plugins. + * + * Gives users an interface similar to the Plugin Administration + * area with similar (albeit stripped down) capabilities. + * + * This class also allows for the bulk install of plugins. + * + * @since 2.2.0 + * + * @package TGM-Plugin-Activation + * @author Thomas Griffin + * @author Gary Jones + */ + class TGMPA_List_Table extends WP_List_Table { + /** + * TGMPA instance. + * + * @since 2.5.0 + * + * @var object + */ + protected $tgmpa; + + /** + * The currently chosen view. + * + * @since 2.5.0 + * + * @var string One of: 'all', 'install', 'update', 'activate' + */ + public $view_context = 'all'; + + /** + * The plugin counts for the various views. + * + * @since 2.5.0 + * + * @var array + */ + protected $view_totals = array( + 'all' => 0, + 'install' => 0, + 'update' => 0, + 'activate' => 0, + ); + + /** + * References parent constructor and sets defaults for class. + * + * @since 2.2.0 + */ + public function __construct() { + $this->tgmpa = call_user_func( array( get_class( $GLOBALS['tgmpa'] ), 'get_instance' ) ); + + parent::__construct( + array( + 'singular' => 'plugin', + 'plural' => 'plugins', + 'ajax' => false, + ) + ); + + if ( isset( $_REQUEST['plugin_status'] ) && in_array( $_REQUEST['plugin_status'], array( 'install', 'update', 'activate' ), true ) ) { + $this->view_context = sanitize_key( $_REQUEST['plugin_status'] ); + } + + add_filter( 'tgmpa_table_data_items', array( $this, 'sort_table_items' ) ); + } + + /** + * Get a list of CSS classes for the tag. + * + * Overruled to prevent the 'plural' argument from being added. + * + * @since 2.5.0 + * + * @return array CSS classnames. + */ + public function get_table_classes() { + return array( 'widefat', 'fixed' ); + } + + /** + * Gathers and renames all of our plugin information to be used by WP_List_Table to create our table. + * + * @since 2.2.0 + * + * @return array $table_data Information for use in table. + */ + protected function _gather_plugin_data() { + // Load thickbox for plugin links. + $this->tgmpa->admin_init(); + $this->tgmpa->thickbox(); + + // Categorize the plugins which have open actions. + $plugins = $this->categorize_plugins_to_views(); + + // Set the counts for the view links. + $this->set_view_totals( $plugins ); + + // Prep variables for use and grab list of all installed plugins. + $table_data = array(); + $i = 0; + + // Redirect to the 'all' view if no plugins were found for the selected view context. + if ( empty( $plugins[ $this->view_context ] ) ) { + $this->view_context = 'all'; + } + + foreach ( $plugins[ $this->view_context ] as $slug => $plugin ) { + $table_data[ $i ]['sanitized_plugin'] = $plugin['name']; + $table_data[ $i ]['slug'] = $slug; + $table_data[ $i ]['plugin'] = '' . $this->tgmpa->get_info_link( $slug ) . ''; + $table_data[ $i ]['source'] = $this->get_plugin_source_type_text( $plugin['source_type'] ); + $table_data[ $i ]['type'] = $this->get_plugin_advise_type_text( $plugin['required'] ); + $table_data[ $i ]['status'] = $this->get_plugin_status_text( $slug ); + $table_data[ $i ]['installed_version'] = $this->tgmpa->get_installed_version( $slug ); + $table_data[ $i ]['minimum_version'] = $plugin['version']; + $table_data[ $i ]['available_version'] = $this->tgmpa->does_plugin_have_update( $slug ); + + // Prep the upgrade notice info. + $upgrade_notice = $this->tgmpa->get_upgrade_notice( $slug ); + if ( ! empty( $upgrade_notice ) ) { + $table_data[ $i ]['upgrade_notice'] = $upgrade_notice; + + add_action( "tgmpa_after_plugin_row_$slug", array( $this, 'wp_plugin_update_row' ), 10, 2 ); + } + + $table_data[ $i ] = apply_filters( 'tgmpa_table_data_item', $table_data[ $i ], $plugin ); + + $i++; + } + + return $table_data; + } + + /** + * Categorize the plugins which have open actions into views for the TGMPA page. + * + * @since 2.5.0 + */ + protected function categorize_plugins_to_views() { + $plugins = array( + 'all' => array(), // Meaning: all plugins which still have open actions. + 'install' => array(), + 'update' => array(), + 'activate' => array(), + ); + + foreach ( $this->tgmpa->plugins as $slug => $plugin ) { + if ( $this->tgmpa->is_plugin_active( $slug ) && false === $this->tgmpa->does_plugin_have_update( $slug ) ) { + // No need to display plugins if they are installed, up-to-date and active. + continue; + } else { + $plugins['all'][ $slug ] = $plugin; + + if ( ! $this->tgmpa->is_plugin_installed( $slug ) ) { + $plugins['install'][ $slug ] = $plugin; + } else { + if ( false !== $this->tgmpa->does_plugin_have_update( $slug ) ) { + $plugins['update'][ $slug ] = $plugin; + } + + if ( $this->tgmpa->can_plugin_activate( $slug ) ) { + $plugins['activate'][ $slug ] = $plugin; + } + } + } + } + + return $plugins; + } + + /** + * Set the counts for the view links. + * + * @since 2.5.0 + * + * @param array $plugins Plugins order by view. + */ + protected function set_view_totals( $plugins ) { + foreach ( $plugins as $type => $list ) { + $this->view_totals[ $type ] = count( $list ); + } + } + + /** + * Get the plugin required/recommended text string. + * + * @since 2.5.0 + * + * @param string $required Plugin required setting. + * @return string + */ + protected function get_plugin_advise_type_text( $required ) { + if ( true === $required ) { + return __( 'Required', 'fruitful' ); + } + + return __( 'Recommended', 'fruitful' ); + } + + /** + * Get the plugin source type text string. + * + * @since 2.5.0 + * + * @param string $type Plugin type. + * @return string + */ + protected function get_plugin_source_type_text( $type ) { + $string = ''; + + switch ( $type ) { + case 'repo': + $string = __( 'WordPress Repository', 'fruitful' ); + break; + case 'external': + $string = __( 'External Source', 'fruitful' ); + break; + case 'bundled': + $string = __( 'Pre-Packaged', 'fruitful' ); + break; + } + + return $string; + } + + /** + * Determine the plugin status message. + * + * @since 2.5.0 + * + * @param string $slug Plugin slug. + * @return string + */ + protected function get_plugin_status_text( $slug ) { + if ( ! $this->tgmpa->is_plugin_installed( $slug ) ) { + return __( 'Not Installed', 'fruitful' ); + } + + if ( ! $this->tgmpa->is_plugin_active( $slug ) ) { + $install_status = __( 'Installed But Not Activated', 'fruitful' ); + } else { + $install_status = __( 'Active', 'fruitful' ); + } + + $update_status = ''; + + if ( $this->tgmpa->does_plugin_require_update( $slug ) && false === $this->tgmpa->does_plugin_have_update( $slug ) ) { + $update_status = __( 'Required Update not Available', 'fruitful' ); + + } elseif ( $this->tgmpa->does_plugin_require_update( $slug ) ) { + $update_status = __( 'Requires Update', 'fruitful' ); + + } elseif ( false !== $this->tgmpa->does_plugin_have_update( $slug ) ) { + $update_status = __( 'Update recommended', 'fruitful' ); + } + + if ( '' === $update_status ) { + return $install_status; + } + + return sprintf( + _x( '%1$s, %2$s', '%1$s = install status, %2$s = update status', 'fruitful' ), + $install_status, + $update_status + ); + } + + /** + * Sort plugins by Required/Recommended type and by alphabetical plugin name within each type. + * + * @since 2.5.0 + * + * @param array $items Prepared table items. + * @return array Sorted table items. + */ + public function sort_table_items( $items ) { + $type = array(); + $name = array(); + + foreach ( $items as $i => $plugin ) { + $type[ $i ] = $plugin['type']; // Required / recommended. + $name[ $i ] = $plugin['sanitized_plugin']; + } + + array_multisort( $type, SORT_DESC, $name, SORT_ASC, $items ); + + return $items; + } + + /** + * Get an associative array ( id => link ) of the views available on this table. + * + * @since 2.5.0 + * + * @return array + */ + public function get_views() { + $status_links = array(); + + foreach ( $this->view_totals as $type => $count ) { + if ( $count < 1 ) { + continue; + } + + switch ( $type ) { + case 'all': + $text = _nx( 'All (%s)', 'All (%s)', $count, 'plugins', 'fruitful' ); + break; + case 'install': + $text = _n( 'To Install (%s)', 'To Install (%s)', $count, 'fruitful' ); + break; + case 'update': + $text = _n( 'Update Available (%s)', 'Update Available (%s)', $count, 'fruitful' ); + break; + case 'activate': + $text = _n( 'To Activate (%s)', 'To Activate (%s)', $count, 'fruitful' ); + break; + default: + $text = ''; + break; + } + + if ( ! empty( $text ) ) { + + $status_links[ $type ] = sprintf( + '%s', + esc_url( $this->tgmpa->get_tgmpa_status_url( $type ) ), + ( $type === $this->view_context ) ? ' class="current"' : '', + sprintf( $text, number_format_i18n( $count ) ) + ); + } + } + + return $status_links; + } + + /** + * Create default columns to display important plugin information + * like type, action and status. + * + * @since 2.2.0 + * + * @param array $item Array of item data. + * @param string $column_name The name of the column. + * @return string + */ + public function column_default( $item, $column_name ) { + return $item[ $column_name ]; + } + + /** + * Required for bulk installing. + * + * Adds a checkbox for each plugin. + * + * @since 2.2.0 + * + * @param array $item Array of item data. + * @return string The input checkbox with all necessary info. + */ + public function column_cb( $item ) { + return sprintf( + '', + esc_attr( $this->_args['singular'] ), + esc_attr( $item['slug'] ), + esc_attr( $item['sanitized_plugin'] ) + ); + } + + /** + * Create default title column along with the action links. + * + * @since 2.2.0 + * + * @param array $item Array of item data. + * @return string The plugin name and action links. + */ + public function column_plugin( $item ) { + return sprintf( + '%1$s %2$s', + $item['plugin'], + $this->row_actions( $this->get_row_actions( $item ), true ) + ); + } + + /** + * Create version information column. + * + * @since 2.5.0 + * + * @param array $item Array of item data. + * @return string HTML-formatted version information. + */ + public function column_version( $item ) { + $output = array(); + + if ( $this->tgmpa->is_plugin_installed( $item['slug'] ) ) { + $installed = ! empty( $item['installed_version'] ) ? $item['installed_version'] : _x( 'unknown', 'as in: "version nr unknown"', 'fruitful' ); + + $color = ''; + if ( ! empty( $item['minimum_version'] ) && $this->tgmpa->does_plugin_require_update( $item['slug'] ) ) { + $color = ' color: #ff0000; font-weight: bold;'; + } + + $output[] = sprintf( + '

        %2$s' . __( 'Installed version:', 'fruitful' ) . '

        ', + $color, + $installed + ); + } + + if ( ! empty( $item['minimum_version'] ) ) { + $output[] = sprintf( + '

        %1$s' . __( 'Minimum required version:', 'fruitful' ) . '

        ', + $item['minimum_version'] + ); + } + + if ( ! empty( $item['available_version'] ) ) { + $color = ''; + if ( ! empty( $item['minimum_version'] ) && version_compare( $item['available_version'], $item['minimum_version'], '>=' ) ) { + $color = ' color: #71C671; font-weight: bold;'; + } + + $output[] = sprintf( + '

        %2$s' . __( 'Available version:', 'fruitful' ) . '

        ', + $color, + $item['available_version'] + ); + } + + if ( empty( $output ) ) { + return ' '; // Let's not break the table layout. + } else { + return implode( "\n", $output ); + } + } + + /** + * Sets default message within the plugins table if no plugins + * are left for interaction. + * + * Hides the menu item to prevent the user from clicking and + * getting a permissions error. + * + * @since 2.2.0 + */ + public function no_items() { + printf( wp_kses_post( __( 'No plugins to install, update or activate. Return to the Dashboard', 'fruitful' ) ), esc_url( self_admin_url() ) ); + echo ''; + } + + /** + * Output all the column information within the table. + * + * @since 2.2.0 + * + * @return array $columns The column names. + */ + public function get_columns() { + $columns = array( + 'cb' => '', + 'plugin' => __( 'Plugin', 'fruitful' ), + 'source' => __( 'Source', 'fruitful' ), + 'type' => __( 'Type', 'fruitful' ), + ); + + if ( 'all' === $this->view_context || 'update' === $this->view_context ) { + $columns['version'] = __( 'Version', 'fruitful' ); + $columns['status'] = __( 'Status', 'fruitful' ); + } + + return apply_filters( 'tgmpa_table_columns', $columns ); + } + + /** + * Get name of default primary column + * + * @since 2.5.0 / WP 4.3+ compatibility + * @access protected + * + * @return string + */ + protected function get_default_primary_column_name() { + return 'plugin'; + } + + /** + * Get the name of the primary column. + * + * @since 2.5.0 / WP 4.3+ compatibility + * @access protected + * + * @return string The name of the primary column. + */ + protected function get_primary_column_name() { + if ( method_exists( 'WP_List_Table', 'get_primary_column_name' ) ) { + return parent::get_primary_column_name(); + } else { + return $this->get_default_primary_column_name(); + } + } + + /** + * Get the actions which are relevant for a specific plugin row. + * + * @since 2.5.0 + * + * @param array $item Array of item data. + * @return array Array with relevant action links. + */ + protected function get_row_actions( $item ) { + $actions = array(); + $action_links = array(); + + // Display the 'Install' action link if the plugin is not yet available. + if ( ! $this->tgmpa->is_plugin_installed( $item['slug'] ) ) { + $actions['install'] = _x( 'Install %2$s', '%2$s = plugin name in screen reader markup', 'fruitful' ); + } else { + // Display the 'Update' action link if an update is available and WP complies with plugin minimum. + if ( false !== $this->tgmpa->does_plugin_have_update( $item['slug'] ) && $this->tgmpa->can_plugin_update( $item['slug'] ) ) { + $actions['update'] = _x( 'Update %2$s', '%2$s = plugin name in screen reader markup', 'fruitful' ); + } + + // Display the 'Activate' action link, but only if the plugin meets the minimum version. + if ( $this->tgmpa->can_plugin_activate( $item['slug'] ) ) { + $actions['activate'] = _x( 'Activate %2$s', '%2$s = plugin name in screen reader markup', 'fruitful' ); + } + } + + // Create the actual links. + foreach ( $actions as $action => $text ) { + $nonce_url = wp_nonce_url( + add_query_arg( + array( + 'plugin' => urlencode( $item['slug'] ), + 'tgmpa-' . $action => $action . '-plugin', + ), + $this->tgmpa->get_tgmpa_url() + ), + 'tgmpa-' . $action, + 'tgmpa-nonce' + ); + + $action_links[ $action ] = sprintf( + '' . esc_html( $text ) . '', + esc_url( $nonce_url ), + '' . esc_html( $item['sanitized_plugin'] ) . '' + ); + } + + $prefix = ( defined( 'WP_NETWORK_ADMIN' ) && WP_NETWORK_ADMIN ) ? 'network_admin_' : ''; + return apply_filters( "tgmpa_{$prefix}plugin_action_links", array_filter( $action_links ), $item['slug'], $item, $this->view_context ); + } + + /** + * Generates content for a single row of the table. + * + * @since 2.5.0 + * + * @param object $item The current item. + */ + public function single_row( $item ) { + parent::single_row( $item ); + + /** + * Fires after each specific row in the TGMPA Plugins list table. + * + * The dynamic portion of the hook name, `$item['slug']`, refers to the slug + * for the plugin. + * + * @since 2.5.0 + */ + do_action( "tgmpa_after_plugin_row_{$item['slug']}", $item['slug'], $item, $this->view_context ); + } + + /** + * Show the upgrade notice below a plugin row if there is one. + * + * @since 2.5.0 + * + * @see /wp-admin/includes/update.php + * + * @param string $slug Plugin slug. + * @param array $item The information available in this table row. + * @return null Return early if upgrade notice is empty. + */ + public function wp_plugin_update_row( $slug, $item ) { + if ( empty( $item['upgrade_notice'] ) ) { + return; + } + + echo ' + + + '; + } + + /** + * Extra controls to be displayed between bulk actions and pagination. + * + * @since 2.5.0 + * + * @param string $which 'top' or 'bottom' table navigation. + */ + public function extra_tablenav( $which ) { + if ( 'bottom' === $which ) { + $this->tgmpa->show_tgmpa_version(); + } + } + + /** + * Defines the bulk actions for handling registered plugins. + * + * @since 2.2.0 + * + * @return array $actions The bulk actions for the plugin install table. + */ + public function get_bulk_actions() { + + $actions = array(); + + if ( 'update' !== $this->view_context && 'activate' !== $this->view_context ) { + if ( current_user_can( 'install_plugins' ) ) { + $actions['tgmpa-bulk-install'] = __( 'Install', 'fruitful' ); + } + } + + if ( 'install' !== $this->view_context ) { + if ( current_user_can( 'update_plugins' ) ) { + $actions['tgmpa-bulk-update'] = __( 'Update', 'fruitful' ); + } + if ( current_user_can( 'activate_plugins' ) ) { + $actions['tgmpa-bulk-activate'] = __( 'Activate', 'fruitful' ); + } + } + + return $actions; + } + + /** + * Processes bulk installation and activation actions. + * + * The bulk installation process looks for the $_POST information and passes that + * through if a user has to use WP_Filesystem to enter their credentials. + * + * @since 2.2.0 + */ + public function process_bulk_actions() { + // Bulk installation process. + if ( 'tgmpa-bulk-install' === $this->current_action() || 'tgmpa-bulk-update' === $this->current_action() ) { + + check_admin_referer( 'bulk-' . $this->_args['plural'] ); + + $install_type = 'install'; + if ( 'tgmpa-bulk-update' === $this->current_action() ) { + $install_type = 'update'; + } + + $plugins_to_install = array(); + + // Did user actually select any plugins to install/update ? + if ( empty( $_POST['plugin'] ) ) { + if ( 'install' === $install_type ) { + $message = __( 'No plugins were selected to be installed. No action taken.', 'fruitful' ); + } else { + $message = __( 'No plugins were selected to be updated. No action taken.', 'fruitful' ); + } + + echo '

        ', esc_html( $message ), '

        '; + + return false; + } + + if ( is_array( $_POST['plugin'] ) ) { + $plugins_to_install = (array) $_POST['plugin']; + } elseif ( is_string( $_POST['plugin'] ) ) { + // Received via Filesystem page - un-flatten array (WP bug #19643). + $plugins_to_install = explode( ',', $_POST['plugin'] ); + } + + // Sanitize the received input. + $plugins_to_install = array_map( 'urldecode', $plugins_to_install ); + $plugins_to_install = array_map( array( $this->tgmpa, 'sanitize_key' ), $plugins_to_install ); + + // Validate the received input. + foreach ( $plugins_to_install as $key => $slug ) { + // Check if the plugin was registered with TGMPA and remove if not. + if ( ! isset( $this->tgmpa->plugins[ $slug ] ) ) { + unset( $plugins_to_install[ $key ] ); + continue; + } + + // For updates: make sure this is a plugin we *can* update (update available and WP version ok). + if ( 'update' === $install_type && ( $this->tgmpa->is_plugin_installed( $slug ) && ( false === $this->tgmpa->does_plugin_have_update( $slug ) || ! $this->tgmpa->can_plugin_update( $slug ) ) ) ) { + unset( $plugins_to_install[ $key ] ); + } + } + + // No need to proceed further if we have no plugins to handle. + if ( empty( $plugins_to_install ) ) { + if ( 'install' === $install_type ) { + $message = __( 'No plugins are available to be installed at this time.', 'fruitful' ); + } else { + $message = __( 'No plugins are available to be updated at this time.', 'fruitful' ); + } + + echo '

        ', esc_html( $message ), '

        '; + + return false; + } + + // Pass all necessary information if WP_Filesystem is needed. + $url = wp_nonce_url( + $this->tgmpa->get_tgmpa_url(), + 'bulk-' . $this->_args['plural'] + ); + + // Give validated data back to $_POST which is the only place the filesystem looks for extra fields. + $_POST['plugin'] = implode( ',', $plugins_to_install ); // Work around for WP bug #19643. + + $method = ''; // Leave blank so WP_Filesystem can populate it as necessary. + $fields = array_keys( $_POST ); // Extra fields to pass to WP_Filesystem. + + if ( false === ( $creds = request_filesystem_credentials( esc_url_raw( $url ), $method, false, false, $fields ) ) ) { + return true; // Stop the normal page form from displaying, credential request form will be shown. + } + + // Now we have some credentials, setup WP_Filesystem. + if ( ! WP_Filesystem( $creds ) ) { + // Our credentials were no good, ask the user for them again. + request_filesystem_credentials( esc_url_raw( $url ), $method, true, false, $fields ); + + return true; + } + + /* If we arrive here, we have the filesystem */ + + // Store all information in arrays since we are processing a bulk installation. + $names = array(); + $sources = array(); // Needed for installs. + $file_paths = array(); // Needed for upgrades. + $to_inject = array(); // Information to inject into the update_plugins transient. + + // Prepare the data for validated plugins for the install/upgrade. + foreach ( $plugins_to_install as $slug ) { + $name = $this->tgmpa->plugins[ $slug ]['name']; + $source = $this->tgmpa->get_download_url( $slug ); + + if ( ! empty( $name ) && ! empty( $source ) ) { + $names[] = $name; + + switch ( $install_type ) { + + case 'install': + $sources[] = $source; + break; + + case 'update': + $file_paths[] = $this->tgmpa->plugins[ $slug ]['file_path']; + $to_inject[ $slug ] = $this->tgmpa->plugins[ $slug ]; + $to_inject[ $slug ]['source'] = $source; + break; + } + } + } + unset( $slug, $name, $source ); + + // Create a new instance of TGMPA_Bulk_Installer. + $installer = new TGMPA_Bulk_Installer( + new TGMPA_Bulk_Installer_Skin( + array( + 'url' => esc_url_raw( $this->tgmpa->get_tgmpa_url() ), + 'nonce' => 'bulk-' . $this->_args['plural'], + 'names' => $names, + 'install_type' => $install_type, + ) + ) + ); + + // Wrap the install process with the appropriate HTML. + echo '
        ', + '

        ', esc_html( get_admin_page_title() ), '

        '; + + // Process the bulk installation submissions. + add_filter( 'upgrader_source_selection', array( $this->tgmpa, 'maybe_adjust_source_dir' ), 1, 3 ); + + if ( 'tgmpa-bulk-update' === $this->current_action() ) { + // Inject our info into the update transient. + $this->tgmpa->inject_update_info( $to_inject ); + + $installer->bulk_upgrade( $file_paths ); + } else { + $installer->bulk_install( $sources ); + } + + remove_filter( 'upgrader_source_selection', array( $this->tgmpa, 'maybe_adjust_source_dir' ), 1, 3 ); + + echo '
        '; + + return true; + } + + // Bulk activation process. + if ( 'tgmpa-bulk-activate' === $this->current_action() ) { + check_admin_referer( 'bulk-' . $this->_args['plural'] ); + + // Did user actually select any plugins to activate ? + if ( empty( $_POST['plugin'] ) ) { + echo '

        ', esc_html__( 'No plugins were selected to be activated. No action taken.', 'fruitful' ), '

        '; + + return false; + } + + // Grab plugin data from $_POST. + $plugins = array(); + if ( isset( $_POST['plugin'] ) ) { + $plugins = array_map( 'urldecode', (array) $_POST['plugin'] ); + $plugins = array_map( array( $this->tgmpa, 'sanitize_key' ), $plugins ); + } + + $plugins_to_activate = array(); + $plugin_names = array(); + + // Grab the file paths for the selected & inactive plugins from the registration array. + foreach ( $plugins as $slug ) { + if ( $this->tgmpa->can_plugin_activate( $slug ) ) { + $plugins_to_activate[] = $this->tgmpa->plugins[ $slug ]['file_path']; + $plugin_names[] = $this->tgmpa->plugins[ $slug ]['name']; + } + } + unset( $slug ); + + // Return early if there are no plugins to activate. + if ( empty( $plugins_to_activate ) ) { + echo '

        ', esc_html__( 'No plugins are available to be activated at this time.', 'fruitful' ), '

        '; + + return false; + } + + // Now we are good to go - let's start activating plugins. + $activate = activate_plugins( $plugins_to_activate ); + + if ( is_wp_error( $activate ) ) { + echo '

        ', wp_kses_post( $activate->get_error_message() ), '

        '; + } else { + $count = count( $plugin_names ); // Count so we can use _n function. + $plugin_names = array_map( array( 'TGMPA_Utils', 'wrap_in_strong' ), $plugin_names ); + $last_plugin = array_pop( $plugin_names ); // Pop off last name to prep for readability. + $imploded = empty( $plugin_names ) ? $last_plugin : ( implode( ', ', $plugin_names ) . ' ' . esc_html_x( 'and', 'plugin A *and* plugin B', 'fruitful' ) . ' ' . $last_plugin ); + + printf( // WPCS: xss ok. + '

        %1$s %2$s.

        ', + esc_html( _n( 'The following plugin was activated successfully:', 'The following plugins were activated successfully:', $count, 'fruitful' ) ), + $imploded + ); + + // Update recently activated plugins option. + $recent = (array) get_option( 'recently_activated' ); + foreach ( $plugins_to_activate as $plugin => $time ) { + if ( isset( $recent[ $plugin ] ) ) { + unset( $recent[ $plugin ] ); + } + } + update_option( 'recently_activated', $recent ); + } + + unset( $_POST ); // Reset the $_POST variable in case user wants to perform one action after another. + + return true; + } + + return false; + } + + /** + * Prepares all of our information to be outputted into a usable table. + * + * @since 2.2.0 + */ + public function prepare_items() { + $columns = $this->get_columns(); // Get all necessary column information. + $hidden = array(); // No columns to hide, but we must set as an array. + $sortable = array(); // No reason to make sortable columns. + $primary = $this->get_primary_column_name(); // Column which has the row actions. + $this->_column_headers = array( $columns, $hidden, $sortable, $primary ); // Get all necessary column headers. + + // Process our bulk activations here. + if ( 'tgmpa-bulk-activate' === $this->current_action() ) { + $this->process_bulk_actions(); + } + + // Store all of our plugin data into $items array so WP_List_Table can use it. + $this->items = apply_filters( 'tgmpa_table_data_items', $this->_gather_plugin_data() ); + } + + /* *********** DEPRECATED METHODS *********** */ + + /** + * Retrieve plugin data, given the plugin name. + * + * @since 2.2.0 + * @deprecated 2.5.0 use {@see TGM_Plugin_Activation::_get_plugin_data_from_name()} instead. + * @see TGM_Plugin_Activation::_get_plugin_data_from_name() + * + * @param string $name Name of the plugin, as it was registered. + * @param string $data Optional. Array key of plugin data to return. Default is slug. + * @return string|boolean Plugin slug if found, false otherwise. + */ + protected function _get_plugin_data_from_name( $name, $data = 'slug' ) { + _deprecated_function( __FUNCTION__, 'TGMPA 2.5.0', 'TGM_Plugin_Activation::_get_plugin_data_from_name()' ); + + return $this->tgmpa->_get_plugin_data_from_name( $name, $data ); + } + } +} + + +if ( ! class_exists( 'TGM_Bulk_Installer' ) ) { + + /** + * Hack: Prevent TGMPA v2.4.1- bulk installer class from being loaded if 2.4.1- is loaded after 2.5+. + */ + class TGM_Bulk_Installer { + } +} +if ( ! class_exists( 'TGM_Bulk_Installer_Skin' ) ) { + + /** + * Hack: Prevent TGMPA v2.4.1- bulk installer skin class from being loaded if 2.4.1- is loaded after 2.5+. + */ + class TGM_Bulk_Installer_Skin { + } +} + +/** + * The WP_Upgrader file isn't always available. If it isn't available, + * we load it here. + * + * We check to make sure no action or activation keys are set so that WordPress + * does not try to re-include the class when processing upgrades or installs outside + * of the class. + * + * @since 2.2.0 + */ +add_action( 'admin_init', 'tgmpa_load_bulk_installer' ); +if ( ! function_exists( 'tgmpa_load_bulk_installer' ) ) { + /** + * Load bulk installer + */ + function tgmpa_load_bulk_installer() { + // Silently fail if 2.5+ is loaded *after* an older version. + if ( ! isset( $GLOBALS['tgmpa'] ) ) { + return; + } + + // Get TGMPA class instance. + $tgmpa_instance = call_user_func( array( get_class( $GLOBALS['tgmpa'] ), 'get_instance' ) ); + + if ( isset( $_GET['page'] ) && $tgmpa_instance->menu === $_GET['page'] ) { + if ( ! class_exists( 'Plugin_Upgrader', false ) ) { + require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; + } + + if ( ! class_exists( 'TGMPA_Bulk_Installer' ) ) { + + /** + * Installer class to handle bulk plugin installations. + * + * Extends WP_Upgrader and customizes to suit the installation of multiple + * plugins. + * + * @since 2.2.0 + * + * @internal Since 2.5.0 the class is an extension of Plugin_Upgrader rather than WP_Upgrader + * @internal Since 2.5.2 the class has been renamed from TGM_Bulk_Installer to TGMPA_Bulk_Installer. + * This was done to prevent backward compatibility issues with v2.3.6. + * + * @package TGM-Plugin-Activation + * @author Thomas Griffin + * @author Gary Jones + */ + class TGMPA_Bulk_Installer extends Plugin_Upgrader { + /** + * Holds result of bulk plugin installation. + * + * @since 2.2.0 + * + * @var string + */ + public $result; + + /** + * Flag to check if bulk installation is occurring or not. + * + * @since 2.2.0 + * + * @var boolean + */ + public $bulk = false; + + /** + * TGMPA instance + * + * @since 2.5.0 + * + * @var object + */ + protected $tgmpa; + + /** + * Whether or not the destination directory needs to be cleared ( = on update). + * + * @since 2.5.0 + * + * @var bool + */ + protected $clear_destination = false; + + /** + * References parent constructor and sets defaults for class. + * + * @since 2.2.0 + * + * @param \Bulk_Upgrader_Skin|null $skin Installer skin. + */ + public function __construct( $skin = null ) { + // Get TGMPA class instance. + $this->tgmpa = call_user_func( array( get_class( $GLOBALS['tgmpa'] ), 'get_instance' ) ); + + parent::__construct( $skin ); + + if ( isset( $this->skin->options['install_type'] ) && 'update' === $this->skin->options['install_type'] ) { + $this->clear_destination = true; + } + + if ( $this->tgmpa->is_automatic ) { + $this->activate_strings(); + } + + add_action( 'upgrader_process_complete', array( $this->tgmpa, 'populate_file_path' ) ); + } + + /** + * Sets the correct activation strings for the installer skin to use. + * + * @since 2.2.0 + */ + public function activate_strings() { + $this->strings['activation_failed'] = __( 'Plugin activation failed.', 'fruitful' ); + $this->strings['activation_success'] = __( 'Plugin activated successfully.', 'fruitful' ); + } + + /** + * Performs the actual installation of each plugin. + * + * @since 2.2.0 + * + * @see WP_Upgrader::run() + * + * @param array $options The installation config options. + * @return null|array Return early if error, array of installation data on success. + */ + public function run( $options ) { + $result = parent::run( $options ); + + // Reset the strings in case we changed one during automatic activation. + if ( $this->tgmpa->is_automatic ) { + if ( 'update' === $this->skin->options['install_type'] ) { + $this->upgrade_strings(); + } else { + $this->install_strings(); + } + } + + return $result; + } + + /** + * Processes the bulk installation of plugins. + * + * @since 2.2.0 + * + * @internal This is basically a near identical copy of the WP Core Plugin_Upgrader::bulk_upgrade() + * method, with minor adjustments to deal with new installs instead of upgrades. + * For ease of future synchronizations, the adjustments are clearly commented, but no other + * comments are added. Code style has been made to comply. + * + * @see Plugin_Upgrader::bulk_upgrade() + * @see https://core.trac.wordpress.org/browser/tags/4.2.1/src/wp-admin/includes/class-wp-upgrader.php#L838 + * + * @param array $plugins The plugin sources needed for installation. + * @param array $args Arbitrary passed extra arguments. + * @return string|bool Install confirmation messages on success, false on failure. + */ + public function bulk_install( $plugins, $args = array() ) { + // [TGMPA + ] Hook auto-activation in. + add_filter( 'upgrader_post_install', array( $this, 'auto_activate' ), 10 ); + + $defaults = array( + 'clear_update_cache' => true, + ); + $parsed_args = wp_parse_args( $args, $defaults ); + + $this->init(); + $this->bulk = true; + + $this->install_strings(); // [TGMPA + ] adjusted. + + /* [TGMPA - ] $current = get_site_transient( 'update_plugins' ); */ + + /* [TGMPA - ] add_filter('upgrader_clear_destination', array($this, 'delete_old_plugin'), 10, 4); */ + + $this->skin->header(); + + // Connect to the Filesystem first. + $res = $this->fs_connect( array( WP_CONTENT_DIR, WP_PLUGIN_DIR ) ); + if ( ! $res ) { + $this->skin->footer(); + + return false; + } + + $this->skin->bulk_header(); + + // Only start maintenance mode if: + // - running Multisite and there are one or more plugins specified, OR + // - a plugin with an update available is currently active. + // @TODO: For multisite, maintenance mode should only kick in for individual sites if at all possible. + $maintenance = ( is_multisite() && ! empty( $plugins ) ); + + /* + [TGMPA - ] + foreach ( $plugins as $plugin ) + $maintenance = $maintenance || ( is_plugin_active( $plugin ) && isset( $current->response[ $plugin] ) ); + */ + if ( $maintenance ) { + $this->maintenance_mode( true ); + } + + $results = array(); + + $this->update_count = count( $plugins ); + $this->update_current = 0; + foreach ( $plugins as $plugin ) { + $this->update_current++; + + /* + [TGMPA - ] + $this->skin->plugin_info = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin, false, true); + + if ( !isset( $current->response[ $plugin ] ) ) { + $this->skin->set_result('up_to_date'); + $this->skin->before(); + $this->skin->feedback('up_to_date'); + $this->skin->after(); + $results[$plugin] = true; + continue; + } + + // Get the URL to the zip file + $r = $current->response[ $plugin ]; + + $this->skin->plugin_active = is_plugin_active($plugin); + */ + + $result = $this->run( array( + 'package' => $plugin, // [TGMPA + ] adjusted. + 'destination' => WP_PLUGIN_DIR, + 'clear_destination' => false, // [TGMPA + ] adjusted. + 'clear_working' => true, + 'is_multi' => true, + 'hook_extra' => array( + 'plugin' => $plugin, + ), + ) ); + + $results[ $plugin ] = $this->result; + + // Prevent credentials auth screen from displaying multiple times. + if ( false === $result ) { + break; + } + } //end foreach $plugins + + $this->maintenance_mode( false ); + + /** + * Fires when the bulk upgrader process is complete. + * + * @since WP 3.6.0 / TGMPA 2.5.0 + * + * @param Plugin_Upgrader $this Plugin_Upgrader instance. In other contexts, $this, might + * be a Theme_Upgrader or Core_Upgrade instance. + * @param array $data { + * Array of bulk item update data. + * + * @type string $action Type of action. Default 'update'. + * @type string $type Type of update process. Accepts 'plugin', 'theme', or 'core'. + * @type bool $bulk Whether the update process is a bulk update. Default true. + * @type array $packages Array of plugin, theme, or core packages to update. + * } + */ + do_action( 'upgrader_process_complete', $this, array( + 'action' => 'install', // [TGMPA + ] adjusted. + 'type' => 'plugin', + 'bulk' => true, + 'plugins' => $plugins, + ) ); + + $this->skin->bulk_footer(); + + $this->skin->footer(); + + // Cleanup our hooks, in case something else does a upgrade on this connection. + /* [TGMPA - ] remove_filter('upgrader_clear_destination', array($this, 'delete_old_plugin')); */ + + // [TGMPA + ] Remove our auto-activation hook. + remove_filter( 'upgrader_post_install', array( $this, 'auto_activate' ), 10 ); + + // Force refresh of plugin update information. + wp_clean_plugins_cache( $parsed_args['clear_update_cache'] ); + + return $results; + } + + /** + * Handle a bulk upgrade request. + * + * @since 2.5.0 + * + * @see Plugin_Upgrader::bulk_upgrade() + * + * @param array $plugins The local WP file_path's of the plugins which should be upgraded. + * @param array $args Arbitrary passed extra arguments. + * @return string|bool Install confirmation messages on success, false on failure. + */ + public function bulk_upgrade( $plugins, $args = array() ) { + + add_filter( 'upgrader_post_install', array( $this, 'auto_activate' ), 10 ); + + $result = parent::bulk_upgrade( $plugins, $args ); + + remove_filter( 'upgrader_post_install', array( $this, 'auto_activate' ), 10 ); + + return $result; + } + + /** + * Abuse a filter to auto-activate plugins after installation. + * + * Hooked into the 'upgrader_post_install' filter hook. + * + * @since 2.5.0 + * + * @param bool $bool The value we need to give back (true). + * @return bool + */ + public function auto_activate( $bool ) { + // Only process the activation of installed plugins if the automatic flag is set to true. + if ( $this->tgmpa->is_automatic ) { + // Flush plugins cache so the headers of the newly installed plugins will be read correctly. + wp_clean_plugins_cache(); + + // Get the installed plugin file. + $plugin_info = $this->plugin_info(); + + // Don't try to activate on upgrade of active plugin as WP will do this already. + if ( ! is_plugin_active( $plugin_info ) ) { + $activate = activate_plugin( $plugin_info ); + + // Adjust the success string based on the activation result. + $this->strings['process_success'] = $this->strings['process_success'] . "
        \n"; + + if ( is_wp_error( $activate ) ) { + $this->skin->error( $activate ); + $this->strings['process_success'] .= $this->strings['activation_failed']; + } else { + $this->strings['process_success'] .= $this->strings['activation_success']; + } + } + } + + return $bool; + } + } + } + + if ( ! class_exists( 'TGMPA_Bulk_Installer_Skin' ) ) { + + /** + * Installer skin to set strings for the bulk plugin installations.. + * + * Extends Bulk_Upgrader_Skin and customizes to suit the installation of multiple + * plugins. + * + * @since 2.2.0 + * + * @internal Since 2.5.2 the class has been renamed from TGM_Bulk_Installer_Skin to + * TGMPA_Bulk_Installer_Skin. + * This was done to prevent backward compatibility issues with v2.3.6. + * + * @see https://core.trac.wordpress.org/browser/trunk/src/wp-admin/includes/class-wp-upgrader-skins.php + * + * @package TGM-Plugin-Activation + * @author Thomas Griffin + * @author Gary Jones + */ + class TGMPA_Bulk_Installer_Skin extends Bulk_Upgrader_Skin { + /** + * Holds plugin info for each individual plugin installation. + * + * @since 2.2.0 + * + * @var array + */ + public $plugin_info = array(); + + /** + * Holds names of plugins that are undergoing bulk installations. + * + * @since 2.2.0 + * + * @var array + */ + public $plugin_names = array(); + + /** + * Integer to use for iteration through each plugin installation. + * + * @since 2.2.0 + * + * @var integer + */ + public $i = 0; + + /** + * TGMPA instance + * + * @since 2.5.0 + * + * @var object + */ + protected $tgmpa; + + /** + * Constructor. Parses default args with new ones and extracts them for use. + * + * @since 2.2.0 + * + * @param array $args Arguments to pass for use within the class. + */ + public function __construct( $args = array() ) { + // Get TGMPA class instance. + $this->tgmpa = call_user_func( array( get_class( $GLOBALS['tgmpa'] ), 'get_instance' ) ); + + // Parse default and new args. + $defaults = array( + 'url' => '', + 'nonce' => '', + 'names' => array(), + 'install_type' => 'install', + ); + $args = wp_parse_args( $args, $defaults ); + + // Set plugin names to $this->plugin_names property. + $this->plugin_names = $args['names']; + + // Extract the new args. + parent::__construct( $args ); + } + + /** + * Sets install skin strings for each individual plugin. + * + * Checks to see if the automatic activation flag is set and uses the + * the proper strings accordingly. + * + * @since 2.2.0 + */ + public function add_strings() { + if ( 'update' === $this->options['install_type'] ) { + parent::add_strings(); + $this->upgrader->strings['skin_before_update_header'] = __( 'Updating Plugin %1$s (%2$d/%3$d)', 'fruitful' ); + } else { + $this->upgrader->strings['skin_update_failed_error'] = __( 'An error occurred while installing %1$s: %2$s.', 'fruitful' ); + $this->upgrader->strings['skin_update_failed'] = __( 'The installation of %1$s failed.', 'fruitful' ); + + if ( $this->tgmpa->is_automatic ) { + // Automatic activation strings. + $this->upgrader->strings['skin_upgrade_start'] = __( 'The installation and activation process is starting. This process may take a while on some hosts, so please be patient.', 'fruitful' ); + $this->upgrader->strings['skin_update_successful'] = __( '%1$s installed and activated successfully.', 'fruitful' ) . ' ' . esc_html__( 'Show Details', 'fruitful' ) . '.'; + $this->upgrader->strings['skin_upgrade_end'] = __( 'All installations and activations have been completed.', 'fruitful' ); + $this->upgrader->strings['skin_before_update_header'] = __( 'Installing and Activating Plugin %1$s (%2$d/%3$d)', 'fruitful' ); + } else { + // Default installation strings. + $this->upgrader->strings['skin_upgrade_start'] = __( 'The installation process is starting. This process may take a while on some hosts, so please be patient.', 'fruitful' ); + $this->upgrader->strings['skin_update_successful'] = esc_html__( '%1$s installed successfully.', 'fruitful' ) . ' ' . esc_html__( 'Show Details', 'fruitful' ) . '.'; + $this->upgrader->strings['skin_upgrade_end'] = __( 'All installations have been completed.', 'fruitful' ); + $this->upgrader->strings['skin_before_update_header'] = __( 'Installing Plugin %1$s (%2$d/%3$d)', 'fruitful' ); + } + } + } + + /** + * Outputs the header strings and necessary JS before each plugin installation. + * + * @since 2.2.0 + * + * @param string $title Unused in this implementation. + */ + public function before( $title = '' ) { + if ( empty( $title ) ) { + $title = esc_html( $this->plugin_names[ $this->i ] ); + } + parent::before( $title ); + } + + /** + * Outputs the footer strings and necessary JS after each plugin installation. + * + * Checks for any errors and outputs them if they exist, else output + * success strings. + * + * @since 2.2.0 + * + * @param string $title Unused in this implementation. + */ + public function after( $title = '' ) { + if ( empty( $title ) ) { + $title = esc_html( $this->plugin_names[ $this->i ] ); + } + parent::after( $title ); + + $this->i++; + } + + /** + * Outputs links after bulk plugin installation is complete. + * + * @since 2.2.0 + */ + public function bulk_footer() { + // Serve up the string to say installations (and possibly activations) are complete. + parent::bulk_footer(); + + // Flush plugins cache so we can make sure that the installed plugins list is always up to date. + wp_clean_plugins_cache(); + + $this->tgmpa->show_tgmpa_version(); + + // Display message based on if all plugins are now active or not. + $update_actions = array(); + + if ( $this->tgmpa->is_tgmpa_complete() ) { + // All plugins are active, so we display the complete string and hide the menu to protect users. + echo ''; + $update_actions['dashboard'] = sprintf( + esc_html( $this->tgmpa->strings['complete'] ), + '' . esc_html__( 'Return to the Dashboard', 'fruitful' ) . '' + ); + } else { + $update_actions['tgmpa_page'] = '' . esc_html( $this->tgmpa->strings['return'] ) . ''; + } + + /** + * Filter the list of action links available following bulk plugin installs/updates. + * + * @since 2.5.0 + * + * @param array $update_actions Array of plugin action links. + * @param array $plugin_info Array of information for the last-handled plugin. + */ + $update_actions = apply_filters( 'tgmpa_update_bulk_plugins_complete_actions', $update_actions, $this->plugin_info ); + + if ( ! empty( $update_actions ) ) { + $this->feedback( implode( ' | ', (array) $update_actions ) ); + } + } + + /* *********** DEPRECATED METHODS *********** */ + + /** + * Flush header output buffer. + * + * @since 2.2.0 + * @deprecated 2.5.0 use {@see Bulk_Upgrader_Skin::flush_output()} instead + * @see Bulk_Upgrader_Skin::flush_output() + */ + public function before_flush_output() { + _deprecated_function( __FUNCTION__, 'TGMPA 2.5.0', 'Bulk_Upgrader_Skin::flush_output()' ); + $this->flush_output(); + } + + /** + * Flush footer output buffer and iterate $this->i to make sure the + * installation strings reference the correct plugin. + * + * @since 2.2.0 + * @deprecated 2.5.0 use {@see Bulk_Upgrader_Skin::flush_output()} instead + * @see Bulk_Upgrader_Skin::flush_output() + */ + public function after_flush_output() { + _deprecated_function( __FUNCTION__, 'TGMPA 2.5.0', 'Bulk_Upgrader_Skin::flush_output()' ); + $this->flush_output(); + $this->i++; + } + } + } + } + } +} + +if ( ! class_exists( 'TGMPA_Utils' ) ) { + + /** + * Generic utilities for TGMPA. + * + * All methods are static, poor-dev name-spacing class wrapper. + * + * Class was called TGM_Utils in 2.5.0 but renamed TGMPA_Utils in 2.5.1 as this was conflicting with Soliloquy. + * + * @since 2.5.0 + * + * @package TGM-Plugin-Activation + * @author Juliette Reinders Folmer + */ + class TGMPA_Utils { + /** + * Whether the PHP filter extension is enabled. + * + * @see http://php.net/book.filter + * + * @since 2.5.0 + * + * @static + * + * @var bool $has_filters True is the extension is enabled. + */ + public static $has_filters; + + /** + * Wrap an arbitrary string in tags. Meant to be used in combination with array_map(). + * + * @since 2.5.0 + * + * @static + * + * @param string $string Text to be wrapped. + * @return string + */ + public static function wrap_in_em( $string ) { + return '' . wp_kses_post( $string ) . ''; + } + + /** + * Wrap an arbitrary string in tags. Meant to be used in combination with array_map(). + * + * @since 2.5.0 + * + * @static + * + * @param string $string Text to be wrapped. + * @return string + */ + public static function wrap_in_strong( $string ) { + return '' . wp_kses_post( $string ) . ''; + } + + /** + * Helper function: Validate a value as boolean + * + * @since 2.5.0 + * + * @static + * + * @param mixed $value Arbitrary value. + * @return bool + */ + public static function validate_bool( $value ) { + if ( ! isset( self::$has_filters ) ) { + self::$has_filters = extension_loaded( 'filter' ); + } + + if ( self::$has_filters ) { + return filter_var( $value, FILTER_VALIDATE_BOOLEAN ); + } else { + return self::emulate_filter_bool( $value ); + } + } + + /** + * Helper function: Cast a value to bool + * + * @since 2.5.0 + * + * @static + * + * @param mixed $value Value to cast. + * @return bool + */ + protected static function emulate_filter_bool( $value ) { + // @codingStandardsIgnoreStart + static $true = array( + '1', + 'true', 'True', 'TRUE', + 'y', 'Y', + 'yes', 'Yes', 'YES', + 'on', 'On', 'ON', + ); + static $false = array( + '0', + 'false', 'False', 'FALSE', + 'n', 'N', + 'no', 'No', 'NO', + 'off', 'Off', 'OFF', + ); + // @codingStandardsIgnoreEnd + + if ( is_bool( $value ) ) { + return $value; + } else if ( is_int( $value ) && ( 0 === $value || 1 === $value ) ) { + return (bool) $value; + } else if ( ( is_float( $value ) && ! is_nan( $value ) ) && ( (float) 0 === $value || (float) 1 === $value ) ) { + return (bool) $value; + } else if ( is_string( $value ) ) { + $value = trim( $value ); + if ( in_array( $value, $true, true ) ) { + return true; + } else if ( in_array( $value, $false, true ) ) { + return false; + } else { + return false; + } + } + + return false; + } + } // End of class TGMPA_Utils +} // End of class_exists wrapper diff --git a/themes/fruitful/inc/func/plugins-included.php b/themes/fruitful/inc/func/plugins-included.php new file mode 100644 index 0000000..d3aba22 --- /dev/null +++ b/themes/fruitful/inc/func/plugins-included.php @@ -0,0 +1,103 @@ + 'Maintenance', + 'slug' => 'maintenance', + 'required' => false, + ), + + array( + 'name' => 'Fruitful Shortcodes', + 'slug' => 'fruitful-shortcodes', + 'required' => true, + ), + + ); + + $config = array( + 'id' => 'fruitful', // Unique ID for hashing notices for multiple instances of TGMPA. + 'default_path' => '', // Default absolute path to bundled plugins. + 'menu' => 'tgmpa-install-plugins', // Menu slug. + 'parent_slug' => 'themes.php', // Parent menu slug. + 'capability' => 'edit_theme_options', // Capability needed to view plugin install page, should be a capability associated with the parent menu used. + 'has_notices' => true, // Show admin notices or not. + 'dismissable' => true, // If false, a user cannot dismiss the nag message. + 'dismiss_msg' => '', // If 'dismissable' is false, this message will be output at top of nag. + 'is_automatic' => false, // Automatically activate plugins after installation or not. + 'message' => '
        1. Select all plugins checkbox to the left of "Plugin"
        2. Click "Bulk Actions" and then Install
        3. Click "Apply" button
        ', + 'strings' => array( + 'page_title' => __( 'Fruitful Plugin Integration', 'fruitful' ), + 'menu_title' => __( 'Plugin Integration', 'fruitful' ), + 'installing' => __( 'Installing Plugin: %s', 'fruitful' ), // %1$s = plugin name + 'oops' => __( 'Something went wrong with the plugin API.', 'fruitful' ), + 'notice_can_install_required' => _n_noop( + 'Fruitful theme requires the following plugin: %1$s.', + 'Fruitful theme requires the following plugins: %1$s.', + 'fruitful' + ), // %1$s = plugin name(s). + 'notice_can_install_recommended' => _n_noop( + 'Fruitful theme recommends the following plugin: %1$s.', + 'Fruitful theme recommends the following plugins: %1$s.', + 'fruitful' + ), // %1$s = plugin name(s). + 'notice_ask_to_update' => _n_noop( + 'The following plugin needs to be updated to its latest version to ensure maximum compatibility with this theme: %1$s.', + 'The following plugins need to be updated to their latest version to ensure maximum compatibility with this theme: %1$s.', + 'fruitful' + ), // %1$s = plugin name(s). + // 'notice_ask_to_update_maybe' => _n_noop( + // 'There is an update available for: %1$s.', + // 'There are updates available for the following plugins: %1$s.', + // 'theme-slug' + // ), // %1$s = plugin name(s). + 'notice_can_activate_required' => _n_noop( + 'The following required plugin is currently inactive: %1$s.', + 'The following required plugins are currently inactive: %1$s.', + 'fruitful' + ), // %1$s = plugin name(s). + 'notice_can_activate_recommended' => _n_noop( + 'The following recommended plugin is currently inactive: %1$s.', + 'The following recommended plugins are currently inactive: %1$s.', + 'fruitful' + ), // %1$s = plugin name(s). + 'install_link' => _n_noop( + 'Begin installing plugin', + 'Begin installing plugins', + 'fruitful' + ), + // 'update_link' => _n_noop( + // 'Begin updating plugin', + // 'Begin updating plugins', + // 'theme-slug' + // ), + 'activate_link' => _n_noop( + 'Activate installed plugin', + 'Activate installed plugins', + 'fruitful' + ), + 'return' => __( 'Return to Required Plugins Installer', 'fruitful' ), + 'plugin_activated' => __( 'Plugin activated successfully.', 'fruitful' ), + //'activated_successfully' => __( 'The following plugin was activated successfully:', 'fruitful' ), + //'plugin_already_active' => __( 'No action taken. Plugin %1$s was already active.', 'fruitful' ), // %1$s = plugin name(s). + //'plugin_needs_higher_version' => __( 'Plugin not activated. A higher version of %s is needed for this theme. Please update the plugin.', 'fruitful' ), // %1$s = plugin name(s). + 'complete' => __( 'All plugins installed and activated successfully. %1$s', 'fruitful' ), // %s = dashboard link. + //'notice_cannot_install_activate' => __( 'There are one or more required or recommended plugins to install, update or activate.', 'fruitful' ), + //'contact_admin' => __( 'Please contact the administrator of this site for help.', 'fruitful' ), + 'nag_type' => 'updated', // Determines admin notice type - can only be one of the typical WP notice classes, such as 'updated', 'update-nag', 'notice-warning', 'notice-info' or 'error'. Some of which may not work as expected in older WP versions. + ), + ); + + + tgmpa( $plugins, $config ); +} + +?> \ No newline at end of file diff --git a/themes/fruitful/inc/images/admin_menu_icon.png b/themes/fruitful/inc/images/admin_menu_icon.png new file mode 100644 index 0000000..e82c4fc Binary files /dev/null and b/themes/fruitful/inc/images/admin_menu_icon.png differ diff --git a/themes/fruitful/inc/images/admin_menu_icon@2x.png b/themes/fruitful/inc/images/admin_menu_icon@2x.png new file mode 100644 index 0000000..1440392 Binary files /dev/null and b/themes/fruitful/inc/images/admin_menu_icon@2x.png differ diff --git a/themes/fruitful/inc/images/arrows.png b/themes/fruitful/inc/images/arrows.png new file mode 100644 index 0000000..775a7a0 Binary files /dev/null and b/themes/fruitful/inc/images/arrows.png differ diff --git a/themes/fruitful/inc/images/change-log.png b/themes/fruitful/inc/images/change-log.png new file mode 100644 index 0000000..af3cc48 Binary files /dev/null and b/themes/fruitful/inc/images/change-log.png differ diff --git a/themes/fruitful/inc/images/cross.png b/themes/fruitful/inc/images/cross.png new file mode 100644 index 0000000..d692156 Binary files /dev/null and b/themes/fruitful/inc/images/cross.png differ diff --git a/themes/fruitful/inc/images/customization.png b/themes/fruitful/inc/images/customization.png new file mode 100644 index 0000000..7e7dbd4 Binary files /dev/null and b/themes/fruitful/inc/images/customization.png differ diff --git a/themes/fruitful/inc/images/error.png b/themes/fruitful/inc/images/error.png new file mode 100644 index 0000000..6c9abb2 Binary files /dev/null and b/themes/fruitful/inc/images/error.png differ diff --git a/themes/fruitful/inc/images/icons32.png b/themes/fruitful/inc/images/icons32.png new file mode 100644 index 0000000..4b26eb0 Binary files /dev/null and b/themes/fruitful/inc/images/icons32.png differ diff --git a/themes/fruitful/inc/images/menu_shadow.png b/themes/fruitful/inc/images/menu_shadow.png new file mode 100644 index 0000000..da2159a Binary files /dev/null and b/themes/fruitful/inc/images/menu_shadow.png differ diff --git a/themes/fruitful/inc/images/menu_shadow_rtl.png b/themes/fruitful/inc/images/menu_shadow_rtl.png new file mode 100644 index 0000000..7ce4295 Binary files /dev/null and b/themes/fruitful/inc/images/menu_shadow_rtl.png differ diff --git a/themes/fruitful/inc/images/shadow.png b/themes/fruitful/inc/images/shadow.png new file mode 100644 index 0000000..b0883a8 Binary files /dev/null and b/themes/fruitful/inc/images/shadow.png differ diff --git a/themes/fruitful/inc/images/success.png b/themes/fruitful/inc/images/success.png new file mode 100644 index 0000000..29b81b6 Binary files /dev/null and b/themes/fruitful/inc/images/success.png differ diff --git a/themes/fruitful/inc/images/support.png b/themes/fruitful/inc/images/support.png new file mode 100644 index 0000000..c4fdb5f Binary files /dev/null and b/themes/fruitful/inc/images/support.png differ diff --git a/themes/fruitful/inc/js/ch/ch.css b/themes/fruitful/inc/js/ch/ch.css new file mode 100644 index 0000000..1626bae --- /dev/null +++ b/themes/fruitful/inc/js/ch/ch.css @@ -0,0 +1,25 @@ +/** + * CSS File for ezMark jQuery Plugin + * + **/ +.ez-hide { opacity: 0; filter:alpha(opacity=0); } +.ez-checkbox { + background: transparent url('images/checkbox-gray.png') -5px -5px no-repeat; + display:inline-block; +} + +.ez-radio { + background: transparent url('images/radio-black.png') 0 1px no-repeat; + display:inline-block; +} + +.ez-checked { background-position: -5px -31px; } +.ez-selected { background-position: 0 -19px; } + +.ez-checkbox-green { + background: transparent url('images/checkbox-green.png') 0 1px no-repeat; + display:inline-block; + *display: inline; +} +.ez-checked-green { background-position: 0 -18px; } +.ez-checkbox, .ez-radio {zoom: 1; float: left; height: 18px; padding: 0 5px 0 0; width: 20px; cursor:pointer;} diff --git a/themes/fruitful/inc/js/ch/ch.js b/themes/fruitful/inc/js/ch/ch.js new file mode 100644 index 0000000..c30e25e --- /dev/null +++ b/themes/fruitful/inc/js/ch/ch.js @@ -0,0 +1,14 @@ +/** + * ezMark (Minified) - A Simple Checkbox and Radio button Styling plugin. This plugin allows you to use a custom Image for + * Checkbox or Radio button. Its very simple, small and easy to use. + * + * Copyright (c) Abdullah Rubiyath . + * Released under MIT License + * + * @author Abdullah Rubiyath + * @version 1.0 + * @date June 27, 2010 + */ +(function($){$.fn.ezMark=function(options){options=options||{};var defaultOpt={checkboxCls:options.checkboxCls||'ez-checkbox',radioCls:options.radioCls||'ez-radio',checkedCls:options.checkedCls||'ez-checked',selectedCls:options.selectedCls||'ez-selected',hideCls:'ez-hide'};return this.each(function(){var $this=$(this);var wrapTag=$this.attr('type')=='checkbox'?'
        ':'
        ';if($this.attr('type')=='checkbox'){$this.addClass(defaultOpt.hideCls).wrap(wrapTag).change(function(){if($(this).is(':checked')){$(this).parent().addClass(defaultOpt.checkedCls);} +else{$(this).parent().removeClass(defaultOpt.checkedCls);}});if($this.is(':checked')){$this.parent().addClass(defaultOpt.checkedCls);}} +else if($this.attr('type')=='radio'){$this.addClass(defaultOpt.hideCls).wrap(wrapTag).change(function(){$('input[name="'+$(this).attr('name')+'"]').each(function(){if($(this).is(':checked')){$(this).parent().addClass(defaultOpt.selectedCls);}else{$(this).parent().removeClass(defaultOpt.selectedCls);}});});if($this.is(':checked')){$this.parent().addClass(defaultOpt.selectedCls);}}});}})(jQuery); \ No newline at end of file diff --git a/themes/fruitful/inc/js/ch/images/checkbox-gray.png b/themes/fruitful/inc/js/ch/images/checkbox-gray.png new file mode 100644 index 0000000..fa017bd Binary files /dev/null and b/themes/fruitful/inc/js/ch/images/checkbox-gray.png differ diff --git a/themes/fruitful/inc/js/ch/images/checkbox-green.png b/themes/fruitful/inc/js/ch/images/checkbox-green.png new file mode 100644 index 0000000..ba7afa8 Binary files /dev/null and b/themes/fruitful/inc/js/ch/images/checkbox-green.png differ diff --git a/themes/fruitful/inc/js/ch/images/radio-black.png b/themes/fruitful/inc/js/ch/images/radio-black.png new file mode 100644 index 0000000..6efb007 Binary files /dev/null and b/themes/fruitful/inc/js/ch/images/radio-black.png differ diff --git a/themes/fruitful/inc/js/cookie_.js b/themes/fruitful/inc/js/cookie_.js new file mode 100644 index 0000000..a38b59e --- /dev/null +++ b/themes/fruitful/inc/js/cookie_.js @@ -0,0 +1,93 @@ +/*! + * jQuery Cookie Plugin v1.4.1 + * https://github.com/carhartl/jquery-cookie + * + * Copyright 2006, 2014 Klaus Hartl + * Released under the MIT license + */ +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['jquery'], factory); + } else if (typeof exports === 'object') { + module.exports = factory(require('jquery')); + } else { + factory(jQuery); + } +}(function ($) { + var pluses = /\+/g; + function encode(s) { + return config.raw ? s : encodeURIComponent(s); + } + function decode(s) { + return config.raw ? s : decodeURIComponent(s); + } + function stringifyCookieValue(value) { + return encode(config.json ? JSON.stringify(value) : String(value)); + } + function parseCookieValue(s) { + if (s.indexOf('"') === 0) { + s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); + } + + try { + s = decodeURIComponent(s.replace(pluses, ' ')); + return config.json ? JSON.parse(s) : s; + } catch(e) {} + } + + function read(s, converter) { + var value = config.raw ? s : parseCookieValue(s); + return $.isFunction(converter) ? converter(value) : value; + } + + var config = $.cookie = function (key, value, options) { + if (arguments.length > 1 && !$.isFunction(value)) { + options = $.extend({}, config.defaults, options); + + if (typeof options.expires === 'number') { + var days = options.expires, t = options.expires = new Date(); + t.setMilliseconds(t.getMilliseconds() + days * 864e+5); + } + + return (document.cookie = [ + encode(key), '=', stringifyCookieValue(value), + options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE + options.path ? '; path=' + options.path : '', + options.domain ? '; domain=' + options.domain : '', + options.secure ? '; secure' : '' + ].join('')); + } + + // Read + + var result = key ? undefined : {}, + cookies = document.cookie ? document.cookie.split('; ') : [], + i = 0, + l = cookies.length; + + for (; i < l; i++) { + var parts = cookies[i].split('='), + name = decode(parts.shift()), + cookie = parts.join('='); + + if (key === name) { + result = read(cookie, value); + break; + } + + if (!key && (cookie = read(cookie)) !== undefined) { + result[name] = cookie; + } + } + + return result; + }; + + config.defaults = {}; + + $.removeCookie = function (key, options) { + $.cookie(key, '', $.extend({}, options, { expires: -1 })); + return !$.cookie(key); + }; + +})); \ No newline at end of file diff --git a/themes/fruitful/inc/js/custom.customize.js b/themes/fruitful/inc/js/custom.customize.js new file mode 100644 index 0000000..c55dc08 --- /dev/null +++ b/themes/fruitful/inc/js/custom.customize.js @@ -0,0 +1,15 @@ +jQuery(document).ready(function() { + jQuery('input[type=checkbox]').ezMark(); + if (document.body.clientWidth > 580){ + jQuery('select').styler(); + } + + jQuery('.customize-control input[type=checkbox]').each(function() { + check_val = jQuery(this).val(); + if (check_val == 'off') { + jQuery(this).parent('.ez-checkbox').removeClass('ez-checked'); + } + }); + +}); + \ No newline at end of file diff --git a/themes/fruitful/inc/js/dialogBox/MIT-LICENSE.txt b/themes/fruitful/inc/js/dialogBox/MIT-LICENSE.txt new file mode 100644 index 0000000..6d6ed5f --- /dev/null +++ b/themes/fruitful/inc/js/dialogBox/MIT-LICENSE.txt @@ -0,0 +1,20 @@ +Copyright (c) 2009 Trent Richardson, http://trentrichardson.com/Impromptu/ + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/themes/fruitful/inc/js/dialogBox/close.png b/themes/fruitful/inc/js/dialogBox/close.png new file mode 100644 index 0000000..f5bd41b Binary files /dev/null and b/themes/fruitful/inc/js/dialogBox/close.png differ diff --git a/themes/fruitful/inc/js/dialogBox/jquery-impromptu.css b/themes/fruitful/inc/js/dialogBox/jquery-impromptu.css new file mode 100644 index 0000000..9897cfd --- /dev/null +++ b/themes/fruitful/inc/js/dialogBox/jquery-impromptu.css @@ -0,0 +1,156 @@ +/* +------------------------------ + Impromptu +------------------------------ +*/ +.jqifade{ + position: absolute; + background-color: #777777; +} +div.jqi{ + background-color: rgba(0, 0, 0, 0.7); + color: #FFFFFF; + font-family: 'Open Sans',sans-serif; + font-size: 18px; + font-weight: normal; + padding: 10px 20px; + position: absolute; + text-align: left; + width: 445px; + border-radius: 2px; + -moz-border-radius: 2px; + -webkit-border-radius: 2px; +} +div.jqi .jqicontainer{ } + +div.jqi .jqiclose{ + background: url("close.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0); + content: ""; + cursor: pointer; + font-size: 0; + font-weight: bold; + height: 19px; + position: absolute; + right: 20px; + text-indent: -999999px; + top: 14px; + width: 19px; + -moz-opacity: 0.90; + -khtml-opacity: 0.90; + opacity: 0.90; + -ms-filter:"progid:DXImageTransform.Microsoft.Alpha"(Opacity=90); + filter: progid:DXImageTransform.Microsoft.Alpha(opacity=90); + filter:alpha(opacity=90); +} + +div.jqi .jqiclose:hover { + -moz-opacity: 1; + -khtml-opacity: 1; + opacity: 1; + -ms-filter:"progid:DXImageTransform.Microsoft.Alpha"(Opacity=100); + filter: progid:DXImageTransform.Microsoft.Alpha(opacity=100); + filter:alpha(opacity=100); +} + +div.jqi .jqistate{ + background:none; +} +div.jqi .jqititle{ + background: url("warning.png") no-repeat scroll 0 5px rgba(0, 0, 0, 0); + font-size: 20px; + font-weight: bold; + line-height: 20px; + padding: 5px 10px 5px 35px; +} +div.jqi .jqimessage{ + padding: 10px; + line-height: 20px; + color: #fff; + text-align:center; + font-size:18px; + font-family:'Open Sans', sans-serif; + margin: 30px 0; +} +div.jqi .jqibuttons{ + text-align: right; + background:none; + margin: 0 0 20px; +} +div.jqi .jqibuttons button{ + margin: 0 0 0 8px; + padding: 8px 25px; + background-color: transparent; + border: none; + color: #fff; + font-family:'Open Sans', sans-serif; + font-weight:lighter; + font-size: 14px; + cursor:pointer; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; + background: #6b6b6b; + background: linear-gradient(to bottom, #7a7a7a, #6b6b6b); +} + +div.jqi .jqibuttons button.jqidefaultbutton{ +} + +div.jqi .jqibuttons button:hover, +div.jqi .jqibuttons button:focus{ + outline: none; + background:#fbfbfb; + color:#333333; + +} +.jqiwarning .jqi .jqibuttons{ + background-color: #b95656; +} + +/* sub states */ +div.jqi .jqiparentstate::after{ + background-color: #777; + opacity: 0.6; + filter: alpha(opacity=60); + content: ''; + position: absolute; + top:0;left:0;bottom:0;right:0; + border-radius: 6px; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; +} +div.jqi .jqisubstate{ + position: absolute; + top:0; + left: 20%; + width: 60%; + padding: 7px; + border: solid 1px #eeeeee; + border-top: none; + border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + -webkit-border-radius: 0 0 6px 6px; +} +div.jqi .jqisubstate .jqibuttons button{ + padding: 10px 18px; +} + +/* arrows for tooltips/tours */ +.jqi .jqiarrow{ position: absolute; height: 0; width:0; line-height: 0; font-size: 0; border: solid 10px transparent;} + +.jqi .jqiarrowtl{ left: 10px; top: -20px; border-bottom-color: #ffffff; } +.jqi .jqiarrowtc{ left: 50%; top: -20px; border-bottom-color: #ffffff; margin-left: -10px; } +.jqi .jqiarrowtr{ right: 10px; top: -20px; border-bottom-color: #ffffff; } + +.jqi .jqiarrowbl{ left: 10px; bottom: -20px; border-top-color: #ffffff; } +.jqi .jqiarrowbc{ left: 50%; bottom: -20px; border-top-color: #ffffff; margin-left: -10px; } +.jqi .jqiarrowbr{ right: 10px; bottom: -20px; border-top-color: #ffffff; } + +.jqi .jqiarrowlt{ left: -20px; top: 10px; border-right-color: #ffffff; } +.jqi .jqiarrowlm{ left: -20px; top: 50%; border-right-color: #ffffff; margin-top: -10px; } +.jqi .jqiarrowlb{ left: -20px; bottom: 10px; border-right-color: #ffffff; } + +.jqi .jqiarrowrt{ right: -20px; top: 10px; border-left-color: #ffffff; } +.jqi .jqiarrowrm{ right: -20px; top: 50%; border-left-color: #ffffff; margin-top: -10px; } +.jqi .jqiarrowrb{ right: -20px; bottom: 10px; border-left-color: #ffffff; } + diff --git a/themes/fruitful/inc/js/dialogBox/jquery-impromptu.min.js b/themes/fruitful/inc/js/dialogBox/jquery-impromptu.min.js new file mode 100644 index 0000000..6332459 --- /dev/null +++ b/themes/fruitful/inc/js/dialogBox/jquery-impromptu.min.js @@ -0,0 +1,4 @@ +/*! jQuery-Impromptu - v5.1.1 - 2013-11-10 +* http://trentrichardson.com/Impromptu +* Copyright (c) 2013 Trent Richardson; Licensed MIT */ +(function(t){"use strict";t.prompt=function(e,o){void 0!==o&&void 0!==o.classes&&"string"==typeof o.classes&&(o={box:o.classes}),t.prompt.options=t.extend({},t.prompt.defaults,o),t.prompt.currentPrefix=t.prompt.options.prefix,t.prompt.timeout&&clearTimeout(t.prompt.timeout),t.prompt.timeout=!1;var p=t.prompt.options,r=t(document.body),i=t(window),n='
        ';n+=p.useiframe&&t("object, applet").length>0?'':'
        ',n+='
        '+'
        '+'
        '+p.closeText+"
        "+'
        '+""+"
        "+"
        ",t.prompt.jqib=t(n).appendTo(r),t.prompt.jqi=t.prompt.jqib.children("."+p.prefix),t.prompt.jqif=t.prompt.jqib.children("."+p.prefix+"fade"),e.constructor===String&&(e={state0:{title:p.title,html:e,buttons:p.buttons,position:p.position,focus:p.focus,submit:p.submit}}),t.prompt.options.states={};var s,a;for(s in e)a=t.extend({},t.prompt.defaults.state,{name:s},e[s]),t.prompt.addState(a.name,a),""===t.prompt.currentStateName&&(t.prompt.currentStateName=a.name);var m=t.prompt.jqi.find("."+p.prefix+"states ."+p.prefix+"state").eq(0);t.prompt.goToState(m.data("jqi-name")),t.prompt.jqi.on("click","."+p.prefix+"buttons button",function(){var e=t(this),o=e.parents("."+p.prefix+"state"),r=t.prompt.options.states[o.data("jqi-name")],i=o.children("."+p.prefix+"message"),n=r.buttons[e.text()]||r.buttons[e.html()],s={};if(void 0===n)for(var a in r.buttons)(r.buttons[a].title===e.text()||r.buttons[a].title===e.html())&&(n=r.buttons[a].value);t.each(t.prompt.jqi.children("form").serializeArray(),function(t,e){void 0===s[e.name]?s[e.name]=e.value:typeof s[e.name]===Array||"object"==typeof s[e.name]?s[e.name].push(e.value):s[e.name]=[s[e.name],e.value]});var m=new t.Event("impromptu:submit");m.stateName=r.name,m.state=o,o.trigger(m,[n,i,s]),m.isDefaultPrevented()||t.prompt.close(!0,n,i,s)});var u=function(){if(p.persistent){var e=(""+p.top).indexOf("%")>=0?i.height()*(parseInt(p.top,10)/100):parseInt(p.top,10),o=parseInt(t.prompt.jqi.css("top").replace("px",""),10)-e;t("html,body").animate({scrollTop:o},"fast",function(){var e=0;t.prompt.jqib.addClass(p.prefix+"warning");var o=setInterval(function(){t.prompt.jqib.toggleClass(p.prefix+"warning"),e++>1&&(clearInterval(o),t.prompt.jqib.removeClass(p.prefix+"warning"))},100)})}else t.prompt.close(!0)},f=function(e){var o=window.event?event.keyCode:e.keyCode;if(27===o&&u(),9===o){var p=t("input,select,textarea,button",t.prompt.getCurrentState()),r=!e.shiftKey&&e.target===p[p.length-1],i=e.shiftKey&&e.target===p[0];if(r||i)return setTimeout(function(){if(p){var t=p[i===!0?p.length-1:0];t&&t.focus()}},10),!1}};return t.prompt.position(),t.prompt.style(),t.prompt.jqif.click(u),i.resize({animate:!1},t.prompt.position),t.prompt.jqi.find("."+p.prefix+"close").click(t.prompt.close),t.prompt.jqib.on("keydown",f).on("impromptu:loaded",p.loaded).on("impromptu:close",p.close).on("impromptu:statechanging",p.statechanging).on("impromptu:statechanged",p.statechanged),t.prompt.jqif[p.show](p.overlayspeed),t.prompt.jqi[p.show](p.promptspeed,function(){t.prompt.jqib.trigger("impromptu:loaded")}),p.timeout>0&&(t.prompt.timeout=setTimeout(function(){t.prompt.close(!0)},p.timeout)),t.prompt.jqib},t.prompt.defaults={prefix:"jqi",classes:{box:"",fade:"",prompt:"",close:"",title:"",message:"",buttons:"",button:"",defaultButton:""},title:"",closeText:"×",buttons:{Ok:!0},loaded:function(){},submit:function(){},close:function(){},statechanging:function(){},statechanged:function(){},opacity:.6,zIndex:999,overlayspeed:"slow",promptspeed:"fast",show:"fadeIn",focus:0,defaultButton:0,useiframe:!1,top:"15%",position:{container:null,x:null,y:null,arrow:null,width:null},persistent:!0,timeout:0,states:{},state:{name:null,title:"",html:"",buttons:{Ok:!0},focus:0,defaultButton:0,position:{container:null,x:null,y:null,arrow:null,width:null},submit:function(){return!0}}},t.prompt.currentPrefix=t.prompt.defaults.prefix,t.prompt.currentStateName="",t.prompt.setDefaults=function(e){t.prompt.defaults=t.extend({},t.prompt.defaults,e)},t.prompt.setStateDefaults=function(e){t.prompt.defaults.state=t.extend({},t.prompt.defaults.state,e)},t.prompt.position=function(e){var o=t.fx.off,p=t.prompt.getCurrentState(),r=t.prompt.options.states[p.data("jqi-name")],i=r?r.position:void 0,n=t(window),s=document.body.scrollHeight,a=t(window).height(),m=(t(document).height(),s>a?s:a),u=parseInt(n.scrollTop(),10)+((""+t.prompt.options.top).indexOf("%")>=0?a*(parseInt(t.prompt.options.top,10)/100):parseInt(t.prompt.options.top,10));if(void 0!==e&&e.data.animate===!1&&(t.fx.off=!0),t.prompt.jqib.css({position:"absolute",height:m,width:"100%",top:0,left:0,right:0,bottom:0}),t.prompt.jqif.css({position:"fixed",height:m,width:"100%",top:0,left:0,right:0,bottom:0}),i&&i.container){var f=t(i.container).offset();t.isPlainObject(f)&&void 0!==f.top&&(t.prompt.jqi.css({position:"absolute"}),t.prompt.jqi.animate({top:f.top+i.y,left:f.left+i.x,marginLeft:0,width:void 0!==i.width?i.width:null}),u=f.top+i.y-((""+t.prompt.options.top).indexOf("%")>=0?a*(parseInt(t.prompt.options.top,10)/100):parseInt(t.prompt.options.top,10)),t("html,body").animate({scrollTop:u},"slow","swing",function(){}))}else i&&i.width?(t.prompt.jqi.css({position:"absolute",left:"50%"}),t.prompt.jqi.animate({top:i.y||u,left:i.x||"50%",marginLeft:-1*(i.width/2),width:i.width})):t.prompt.jqi.css({position:"absolute",top:u,left:"50%",marginLeft:-1*(t.prompt.jqi.outerWidth(!1)/2)});void 0!==e&&e.data.animate===!1&&(t.fx.off=o)},t.prompt.style=function(){t.prompt.jqif.css({zIndex:t.prompt.options.zIndex,display:"none",opacity:t.prompt.options.opacity}),t.prompt.jqi.css({zIndex:t.prompt.options.zIndex+1,display:"none"}),t.prompt.jqib.css({zIndex:t.prompt.options.zIndex})},t.prompt.get=function(){return t("."+t.prompt.currentPrefix)},t.prompt.addState=function(e,o,p){var r,i,n,s="",a=null,m="",u="",f=t.prompt.options,l=t("."+t.prompt.currentPrefix+"states"),c=0;o=t.extend({},t.prompt.defaults.state,{name:e},o),null!==o.position.arrow&&(m='
        '),o.title&&""!==o.title&&(u='
        '+o.title+"
        "),s+='",a=t(s),a.on("impromptu:submit",o.submit),void 0!==p?l.find("#"+t.prompt.currentPrefix+"state_"+p).after(a):l.append(a),t.prompt.options.states[e]=o,a},t.prompt.removeState=function(e){var o=t.prompt.getState(e),p=function(){o.remove()};return 0===o.length?!1:(o.is(":visible")?o.next().length>0?t.prompt.nextState(p):t.prompt.prevState(p):o.slideUp("slow",p),!0)},t.prompt.getState=function(e){return t("#"+t.prompt.currentPrefix+"state_"+e)},t.prompt.getStateContent=function(e){return t.prompt.getState(e)},t.prompt.getCurrentState=function(){return t.prompt.getState(t.prompt.getCurrentStateName())},t.prompt.getCurrentStateName=function(){return t.prompt.currentStateName},t.prompt.goToState=function(e,o,p){var r=(t.prompt.get(),t.prompt.options),i=t.prompt.getState(e),n=r.states[i.data("jqi-name")],s=new t.Event("impromptu:statechanging");return"function"==typeof o&&(p=o,o=!1),t.prompt.jqib.trigger(s,[t.prompt.getCurrentStateName(),e]),!s.isDefaultPrevented()&&i.length>0&&(t.prompt.jqi.find("."+t.prompt.currentPrefix+"parentstate").removeClass(t.prompt.currentPrefix+"parentstate"),o?(t.prompt.jqi.find("."+t.prompt.currentPrefix+"substate").not(i).slideUp(r.promptspeed).removeClass("."+t.prompt.currentPrefix+"substate").find("."+t.prompt.currentPrefix+"arrow").hide(),t.prompt.jqi.find("."+t.prompt.currentPrefix+"state:visible").addClass(t.prompt.currentPrefix+"parentstate"),i.addClass(t.prompt.currentPrefix+"substate")):t.prompt.jqi.find("."+t.prompt.currentPrefix+"state").not(i).slideUp(r.promptspeed).find("."+t.prompt.currentPrefix+"arrow").hide(),t.prompt.currentStateName=n.name,i.slideDown(r.promptspeed,function(){var o=t(this);"string"==typeof n.focus?o.find(n.focus).eq(0).focus():o.find("."+t.prompt.currentPrefix+"defaultbutton").focus(),o.find("."+t.prompt.currentPrefix+"arrow").show(r.promptspeed),"function"==typeof p&&t.prompt.jqib.on("impromptu:statechanged",p),t.prompt.jqib.trigger("impromptu:statechanged",[e]),"function"==typeof p&&t.prompt.jqib.off("impromptu:statechanged",p)}),o||t.prompt.position()),i},t.prompt.nextState=function(e){var o=t("#"+t.prompt.currentPrefix+"state_"+t.prompt.getCurrentStateName()).next();return t.prompt.goToState(o.attr("id").replace(t.prompt.currentPrefix+"state_",""),e)},t.prompt.prevState=function(e){var o=t("#"+t.prompt.currentPrefix+"state_"+t.prompt.getCurrentStateName()).prev();t.prompt.goToState(o.attr("id").replace(t.prompt.currentPrefix+"state_",""),e)},t.prompt.close=function(e,o,p,r){t.prompt.timeout&&(clearTimeout(t.prompt.timeout),t.prompt.timeout=!1),t.prompt.jqib.fadeOut("fast",function(){e&&t.prompt.jqib.trigger("impromptu:close",[o,p,r]),t.prompt.jqib.remove(),t(window).off("resize",t.prompt.position)})},t.fn.prompt=function(e){void 0===e&&(e={}),void 0===e.withDataAndEvents&&(e.withDataAndEvents=!1),t.prompt(t(this).clone(e.withDataAndEvents).html(),e)}})(jQuery); \ No newline at end of file diff --git a/themes/fruitful/inc/js/dialogBox/warning.png b/themes/fruitful/inc/js/dialogBox/warning.png new file mode 100644 index 0000000..9be90dc Binary files /dev/null and b/themes/fruitful/inc/js/dialogBox/warning.png differ diff --git a/themes/fruitful/inc/js/jxBox/btn_manipulation.png b/themes/fruitful/inc/js/jxBox/btn_manipulation.png new file mode 100644 index 0000000..5b47af5 Binary files /dev/null and b/themes/fruitful/inc/js/jxBox/btn_manipulation.png differ diff --git a/themes/fruitful/inc/js/jxBox/bx.css b/themes/fruitful/inc/js/jxBox/bx.css new file mode 100644 index 0000000..47f2086 --- /dev/null +++ b/themes/fruitful/inc/js/jxBox/bx.css @@ -0,0 +1,22 @@ +/* @override http://localhost/bxslider_v3_plugin/css/styles.css */ + +/* + * To change the color scheme of slider change each + * background property for each of the five styles below + */ + +/*next button*/ +.bx-wrapper { float: left; padding: 15px 0 30px 0; } +.bx-next { position: absolute; bottom: -1%; right: 47%; z-index: 999; width: 20px; height: 17px; text-indent: -999999px; background: url(btn_manipulation.png) no-repeat 0 -18px; opacity:0.8} +.bx-prev { position: absolute; top: -3%; left: 45%; z-index: 999; width: 20px; height: 17px; text-indent: -999999px; background: url(btn_manipulation.png) no-repeat 0 0; opacity:0.8 } +/*next/prev button hover state*/ +.bx-next:hover, .bx-prev:hover { opacity:1 } + +.widget_news_archive {float:left; width:100%} +.widget_news_archive .news_archive_wrapper {float: left; display: block; padding:0; position: relative; z-index: 1000; margin: 0; width:100% } +.widget_news_archive .news_archive_message {float:left; color:#999; text-align:left; width:100%; margin: 0 0 30px 0;} +.widget_news_archive .news_archiv_list {list-style:none; float:left; display:block; margin:0; padding:0; width:100%;} +.widget_news_archive .news_archiv_list .news_archiv_item {float:left; width:100%; margin:0 0 14px 0; background:url(hr.png) repeat-x 0 bottom transparent; } + + + diff --git a/themes/fruitful/inc/js/jxBox/hr.png b/themes/fruitful/inc/js/jxBox/hr.png new file mode 100644 index 0000000..2e5a72a Binary files /dev/null and b/themes/fruitful/inc/js/jxBox/hr.png differ diff --git a/themes/fruitful/inc/js/jxBox/jquery.bxSlider.js b/themes/fruitful/inc/js/jxBox/jquery.bxSlider.js new file mode 100644 index 0000000..41afdad --- /dev/null +++ b/themes/fruitful/inc/js/jxBox/jquery.bxSlider.js @@ -0,0 +1,52 @@ +/** + * jQuery bxSlider v3.0 + * http://bxslider.com + * + * Copyright 2010, Steven Wanderski + * http://bxcreative.com + * + * Free to use and abuse under the MIT license. + * http://www.opensource.org/licenses/mit-license.php + * + */ +(function(a){ + a.fn.bxSlider=function(b){ + function H(){I(b.startingSlide); + if(b.mode=="horizontal"){ + e.wrap('
        ').wrap('
        ').css({width:"999999px",position:"relative",left:"-"+(b.infiniteLoop?y:0)+"px"}); + e.children(b.childSelector).css({width:j,"float":"left",listStyle:"none"}); + h=e.parent().parent(); + g.addClass("bx-child")} + else if(b.mode=="vertical"){ + e.wrap('
        ').wrap('
        ').css({height:"999999px",position:"relative",top:"-"+z+"px"}); + e.children(b.childSelector).css({listStyle:"none",height:w}); + h=e.parent().parent();g.addClass("bx-child")} + else if(b.mode=="fade"){ + e.wrap('
        ').wrap('
        '); + e.children(b.childSelector).css({listStyle:"none",position:"absolute",top:0,left:0,zIndex:98}); + h=e.parent().parent(); + g.not(":eq("+x+")").fadeTo(0,0); + g.eq(x).css("zIndex",99)} + + if(b.captions&&b.captionsSelector==null){ + h.append('
        ') + } + } + + function I(){ + if((b.mode=="horizontal"||b.mode=="vertical")&&b.infiniteLoop){ + var c=Z(g,0,b.moveSlideQty,"backward"); + a.each(c,function(b){e.prepend(a(this))}); + var d=g.length+b.moveSlideQty-1; + var f=g.length-b.displaySlideQty; + var h=d-f;var i=Z(g,0,h,"forward"); + + if(b.infiniteLoop){a.each(i,function(b){ + e.append(a(this))})}}}function J(){ + if(b.nextImage!=""){ + nextContent=b.nextImage;nextType="image"} + else{ + nextContent=b.nextText;nextType="text"} + if(b.prevImage!=""){ + prevContent=b.prevImage;prevType="image"} + else{prevContent=b.prevText;prevType="text"}R(nextType,nextContent,prevType,prevContent)}function K(){if(b.auto){clearInterval(o);if(!b.infiniteLoop){if(b.autoDirection=="next"){o=setInterval(function(){x+=b.moveSlideQty;if(x>G){x=x%g.length}d.goToSlide(x,false)},b.pause)}else if(b.autoDirection=="prev"){o=setInterval(function(){x-=b.moveSlideQty;if(x<0){negativeOffset=x%g.length;if(negativeOffset==0){x=0}else{x=g.length+negativeOffset}}d.goToSlide(x,false)},b.pause)}}else{if(b.autoDirection=="next"){o=setInterval(function(){d.goToNextSlide(false)},b.pause)}else if(b.autoDirection=="prev"){o=setInterval(function(){d.goToPreviousSlide(false)},b.pause)}}}else if(b.ticker){b.tickerSpeed*=10;a(".bx-child",h).each(function(b){A+=a(this).width();B+=a(this).height()});if(b.tickerDirection=="prev"&&b.mode=="horizontal"){e.css("left","-"+(A+y)+"px")}else if(b.tickerDirection=="prev"&&b.mode=="vertical"){e.css("top","-"+(B+z)+"px")}if(b.mode=="horizontal"){C=parseInt(e.css("left"));L(C,A,b.tickerSpeed)}else if(b.mode=="vertical"){D=parseInt(e.css("top"));L(D,B,b.tickerSpeed)}if(b.tickerHover){O()}}}function L(a,c,d){if(b.mode=="horizontal"){if(b.tickerDirection=="next"){e.animate({left:"-="+c+"px"},d,"linear",function(){e.css("left",a);L(a,A,b.tickerSpeed)})}else if(b.tickerDirection=="prev"){e.animate({left:"+="+c+"px"},d,"linear",function(){e.css("left",a);L(a,A,b.tickerSpeed)})}}else if(b.mode=="vertical"){if(b.tickerDirection=="next"){e.animate({top:"-="+c+"px"},d,"linear",function(){e.css("top",a);L(a,B,b.tickerSpeed)})}else if(b.tickerDirection=="prev"){e.animate({top:"+="+c+"px"},d,"linear",function(){e.css("top",a);L(a,B,b.tickerSpeed)})}}}function M(){if(b.startImage!=""){startContent=b.startImage;startType="image"}else{startContent=b.startText;startType="text"}if(b.stopImage!=""){stopContent=b.stopImage;stopType="image"}else{stopContent=b.stopText;stopType="text"}U(startType,startContent,stopType,stopContent)}function N(){h.children(".bx-window").hover(function(){if(t){d.suspendShow(false)}},function(){if(t){d.restartShow(false)}})}function O(){e.hover(function(){if(t){d.stopTicker(false)}},function(){if(t){d.startTicker(false)}})}function P(){g.not(":eq("+x+")").fadeTo(b.speed,0).css("zIndex",98);g.eq(x).css("zIndex",99).fadeTo(b.speed,1,function(){E=false;if(jQuery.browser.msie){g.eq(x).get(0).style.removeAttribute("filter")}b.onAfterSlide(x,g.length,g.eq(x))})}function Q(c){if(b.pagerType=="full"&&b.pager){a("a",n).removeClass(b.pagerActiveClass);a("a",n).eq(c).addClass(b.pagerActiveClass)}else if(b.pagerType=="short"&&b.pager){a(".bx-pager-current",n).html(x+1)}}function R(c,e,f,g){var i=a('');var j=a('');if(c=="text"){i.html(e)}else{i.html('')}if(f=="text"){j.html(g)}else{j.html('')}if(b.prevSelector){a(b.prevSelector).append(j)}else{h.append(j)}if(b.nextSelector){a(b.nextSelector).append(i)}else{h.append(i)}i.click(function(){d.goToNextSlide();return false});j.click(function(){d.goToPreviousSlide();return false})}function S(c){var e=g.length;if(b.moveSlideQty>1){if(g.length%b.moveSlideQty!=0){e=Math.ceil(g.length/b.moveSlideQty)}else{e=g.length/b.moveSlideQty}}var f="";if(b.buildPager){for(var i=0;i'+i+""}}else if(c=="short"){f=''+(b.startingSlide+1)+" "+b.pagerShortSeparator+' '+g.length+""}if(b.pagerSelector){a(b.pagerSelector).append(f);n=a(b.pagerSelector)}else{var j=a('
        ');j.append(f);if(b.pagerLocation=="top"){h.prepend(j)}else if(b.pagerLocation=="bottom"){h.append(j)}n=h.children(".bx-pager")}n.children().click(function(){if(b.pagerType=="full"){var a=n.children().index(this);if(b.moveSlideQty>1){a*=b.moveSlideQty}d.goToSlide(a)}return false})}function T(){var c=a("img",g.eq(x)).attr("title");if(c!=""){if(b.captionsSelector){a(b.captionsSelector).html(c)}else{h.children(".bx-captions").html(c)}}else{if(b.captionsSelector){a(b.captionsSelector).html("")}else{h.children(".bx-captions").html("")}}}function U(c,e,f,g){p=a('');if(c=="text"){r=e}else{r=''}if(f=="text"){s=g}else{s=''}if(b.autoControlsSelector){a(b.autoControlsSelector).append(p)}else{h.append('
        ');h.children(".bx-auto").html(p)}p.click(function(){if(b.ticker){if(a(this).hasClass("stop")){d.stopTicker()}else if(a(this).hasClass("start")){d.startTicker()}}else{if(a(this).hasClass("stop")){d.stopShow(true)}else if(a(this).hasClass("start")){d.startShow(true)}}return false})}function V(){if(!b.infiniteLoop&&b.hideControlOnEnd){if(x==F){h.children(".bx-prev").hide()}else{h.children(".bx-prev").show()}var a=Math.floor(G/b.displaySlideQty)*b.displaySlideQty;if(x>=a){h.children(".bx-next").hide()}else{h.children(".bx-next").show()}}}function W(a,b){var c=e.find(" > .bx-child").eq(a).position();return b=="left"?c.left:c.top}function X(){var a=i.outerWidth()*b.displaySlideQty;return a}function Y(){var a=i.outerHeight()*b.displaySlideQty;return a}function Z(b,c,d,e){var f=[];var g=d;var h=false;if(e=="backward"){b=a.makeArray(b);b.reverse()}while(g>0){a.each(b,function(b,d){if(g>0){if(!h){if(b==c){h=true;f.push(a(this).clone());g--}}else{f.push(a(this).clone());g--}}else{return false}})}return f}var c={mode:"horizontal",childSelector:"",infiniteLoop:true,hideControlOnEnd:false,controls:true,speed:500,easing:"swing",pager:false,pagerSelector:null,pagerType:"full",pagerLocation:"bottom",pagerShortSeparator:"/",pagerActiveClass:"pager-active",nextText:"next",nextImage:"",nextSelector:null,prevText:"prev",prevImage:"",prevSelector:null,captions:false,captionsSelector:null,auto:false,autoDirection:"next",autoControls:false,autoControlsSelector:null,autoStart:true,autoHover:false,autoDelay:0,pause:3e3,startText:"start",startImage:"",stopText:"stop",stopImage:"",ticker:false,tickerSpeed:5e3,tickerDirection:"next",tickerHover:false,wrapperClass:"bx-wrapper",startingSlide:0,displaySlideQty:1,moveSlideQty:1,randomStart:false,onBeforeSlide:function(){},onAfterSlide:function(){},onLastSlide:function(){},onFirstSlide:function(){},onNextSlide:function(){},onPrevSlide:function(){},buildPager:null};var b=a.extend(c,b);var d=this;var e="";var f="";var g="";var h="";var i="";var j="";var k="";var l="";var m="";var n="";var o="";var p="";var q="";var r="";var s="";var t=true;var u=false;var v=0;var w=0;var x=0;var y=0;var z=0;var A=0;var B=0;var C=0;var D=0;var E=false;var F=0;var G=g.length-1;this.goToSlide=function(a,c){if(!E){E=true;x=a;b.onBeforeSlide(x,g.length,g.eq(x));if(typeof c=="undefined"){var c=true}if(c){if(b.auto){d.stopShow(true)}}slide=a;if(slide==F){b.onFirstSlide(x,g.length,g.eq(x))}if(slide==G){b.onLastSlide(x,g.length,g.eq(x))}if(b.mode=="horizontal"){e.animate({left:"-"+W(slide,"left")+"px"},b.speed,b.easing,function(){E=false;b.onAfterSlide(x,g.length,g.eq(x))})}else if(b.mode=="vertical"){e.animate({top:"-"+W(slide,"top")+"px"},b.speed,b.easing,function(){E=false;b.onAfterSlide(x,g.length,g.eq(x))})}else if(b.mode=="fade"){P()}V();if(b.moveSlideQty>1){a=Math.floor(a/b.moveSlideQty)}Q(a);T()}};this.goToNextSlide=function(a){if(typeof a=="undefined"){var a=true}if(a){if(b.auto){d.stopShow(true)}}if(!b.infiniteLoop){if(!E){var c=false;x=x+b.moveSlideQty;if(x<=G){V();b.onNextSlide(x,g.length,g.eq(x));d.goToSlide(x)}else{x-=b.moveSlideQty}}}else{if(!E){E=true;var c=false;x=x+b.moveSlideQty;if(x>G){x=x%g.length;c=true}b.onNextSlide(x,g.length,g.eq(x));b.onBeforeSlide(x,g.length,g.eq(x));if(b.mode=="horizontal"){var f=b.moveSlideQty*k;e.animate({left:"-="+f+"px"},b.speed,b.easing,function(){E=false;if(c){e.css("left","-"+W(x,"left")+"px")}b.onAfterSlide(x,g.length,g.eq(x))})}else if(b.mode=="vertical"){var h=b.moveSlideQty*w;e.animate({top:"-="+h+"px"},b.speed,b.easing,function(){E=false;if(c){e.css("top","-"+W(x,"top")+"px")}b.onAfterSlide(x,g.length,g.eq(x))})}else if(b.mode=="fade"){P()}if(b.moveSlideQty>1){Q(Math.ceil(x/b.moveSlideQty))}else{Q(x)}T()}}};this.goToPreviousSlide=function(a){if(typeof a=="undefined"){var a=true}if(a){if(b.auto){d.stopShow(true)}}if(!b.infiniteLoop){if(!E){var c=false;x=x-b.moveSlideQty;if(x<0){x=0;if(b.hideControlOnEnd){h.children(".bx-prev").hide()}}V();b.onPrevSlide(x,g.length,g.eq(x));d.goToSlide(x)}}else{if(!E){E=true;var c=false;x=x-b.moveSlideQty;if(x<0){negativeOffset=x%g.length;if(negativeOffset==0){x=0}else{x=g.length+negativeOffset}c=true}b.onPrevSlide(x,g.length,g.eq(x));b.onBeforeSlide(x,g.length,g.eq(x));if(b.mode=="horizontal"){var f=b.moveSlideQty*k;e.animate({left:"+="+f+"px"},b.speed,b.easing,function(){E=false;if(c){e.css("left","-"+W(x,"left")+"px")}b.onAfterSlide(x,g.length,g.eq(x))})}else if(b.mode=="vertical"){var i=b.moveSlideQty*w;e.animate({top:"+="+i+"px"},b.speed,b.easing,function(){E=false;if(c){e.css("top","-"+W(x,"top")+"px")}b.onAfterSlide(x,g.length,g.eq(x))})}else if(b.mode=="fade"){P()}if(b.moveSlideQty>1){Q(Math.ceil(x/b.moveSlideQty))}else{Q(x)}T()}}};this.goToFirstSlide=function(a){if(typeof a=="undefined"){var a=true}d.goToSlide(F,a)};this.goToLastSlide=function(){if(typeof a=="undefined"){var a=true}d.goToSlide(G,a)};this.getCurrentSlide=function(){return x};this.getSlideCount=function(){return g.length};this.suspendShow=function(a){clearInterval(o);if(typeof a=="undefined"){var a=true}if(a&&b.autoControls){p.html(r).removeClass("stop").addClass("start")}};this.restartShow=function(a){if(typeof a=="undefined"){var a=true}if(t){K()}if(a&&b.autoControls){p.html(s).removeClass("start").addClass("stop")}};this.stopShow=function(a){t=false;this.suspendShow(a)};this.startShow=function(a){t=true;this.restartShow(a)};this.stopTicker=function(a){e.stop();if(typeof a=="undefined"){var a=true}if(a&&b.ticker){p.html(r).removeClass("stop").addClass("start");t=false}};this.startTicker=function(a){if(b.mode=="horizontal"){if(b.tickerDirection=="next"){var c=parseInt(e.css("left"));var d=A+c+g.eq(0).width()}else if(b.tickerDirection=="prev"){var c=-parseInt(e.css("left"));var d=c-g.eq(0).width()}var f=d*b.tickerSpeed/A;L(C,d,f)}else if(b.mode=="vertical"){if(b.tickerDirection=="next"){var h=parseInt(e.css("top"));var d=B+h+g.eq(0).height()}else if(b.tickerDirection=="prev"){var h=-parseInt(e.css("top"));var d=h-g.eq(0).height()}var f=d*b.tickerSpeed/B;L(D,d,f);if(typeof a=="undefined"){var a=true}if(a&&b.ticker){p.html(s).removeClass("start").addClass("stop");t=true}}};this.initShow=function(){e=a(this);f=e.clone();g=e.children(b.childSelector);h="";i=e.children(b.childSelector+":first");j=i.width();v=0;k=i.outerWidth();w=0;l=X();m=Y();E=false;n="";x=0;y=0;z=0;o="";p="";q="";r="";s="";t=true;u=false;A=0;B=0;C=0;D=0;F=0;G=g.length-1;g.each(function(b){if(a(this).outerHeight()>w){w=a(this).outerHeight()}if(a(this).outerWidth()>v){v=a(this).outerWidth()}});if(b.randomStart){var c=Math.floor(Math.random()*g.length);x=c;y=k*(b.moveSlideQty+c);z=w*(b.moveSlideQty+c)}else{x=b.startingSlide;y=k*(b.moveSlideQty+b.startingSlide);z=w*(b.moveSlideQty+b.startingSlide)}H();if(b.pager&&!b.ticker){if(b.pagerType=="full"){S("full")}else if(b.pagerType=="short"){S("short")}}if(b.controls&&!b.ticker&&g.length>1){J()}if(b.auto||b.ticker){if(b.autoControls){M()}if(b.autoStart){t=false;setTimeout(function(){d.startShow(true)},b.autoDelay)}else{d.stopShow(true)}if(b.autoHover&&!b.ticker){N()}}if(b.moveSlideQty>1){Q(Math.ceil(x/b.moveSlideQty))}else{Q(x)}V();if(b.captions){T()}b.onAfterSlide(x,g.length,g.eq(x))};this.destroyShow=function(){clearInterval(o);h.children(".bx-next, .bx-prev, .bx-pager, .bx-auto").remove();e.unwrap().unwrap().removeAttr("style");e.children(b.childSelector).removeAttr("style").not(".bx-child").remove();g.removeClass("bx-child")};this.reloadShow=function(){d.destroyShow();d.initShow()};this.each(function(){if(a(this).children().length>0){d.initShow()}});return this};jQuery.fx.prototype.cur=function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var a=parseFloat(jQuery.css(this.elem,this.prop));return a}})(jQuery) \ No newline at end of file diff --git a/themes/fruitful/inc/js/main.js b/themes/fruitful/inc/js/main.js new file mode 100644 index 0000000..1458856 --- /dev/null +++ b/themes/fruitful/inc/js/main.js @@ -0,0 +1,250 @@ +jQuery(window).load(function() { +}); + +jQuery(document).ready(function() { + jQuery('input[type=checkbox]').ezMark(); + if (document.body.clientWidth > 580){ + jQuery('select').styler(); + } + + /*Font Family Preview*/ + jQuery(".select-fonts").each(function() { + var vTextFontSample = jQuery(this).prev(); + vTextFontSample.css({"font-family" : jQuery(this).val()}); + }); + + jQuery(".select-fonts").change(function(){ + var vTextFontSample = jQuery(this).prev(); + vTextFontSample.css({"font-family" : jQuery("option:selected",this).val()}); + return false; + }); + + var vSelectSlider = jQuery(".select-slider"); + var vSelectSliderVal = vSelectSlider.val(); + if (vSelectSliderVal == 0) { jQuery('.no-slider-select').show(); } + else if (vSelectSliderVal == 1) { jQuery('.flex-slider').show(); } + else if (vSelectSliderVal == 2) { jQuery('.nivo-slider').show(); } + + jQuery(".select-slider").change(function(){ + var vSliderId = jQuery('.select-slider option:selected').val(); + if (vSliderId == 0) { + jQuery('.no-slider-select').show(); + jQuery('.flex-slider').hide(); + jQuery('.nivo-slider').hide(); + } else if (vSliderId == 1) { + jQuery('.flex-slider').show(); + jQuery('.no-slider-select').hide(); + jQuery('.nivo-slider').hide(); + } else if (vSliderId == 2) { + jQuery('.nivo-slider').show(); + jQuery('.no-slider-select').hide(); + jQuery('.flex-slider').hide(); + } + return false; + }); + + /*Displayd current menu tab*/ + var currMenuTab = jQuery.cookie("curr_menu_tab"); + if (currMenuTab) { + var currTab = jQuery('.form-admin-fruitful .content .menu-options ul li').find('#' + currMenuTab); + jQuery('.form-admin-fruitful .content .menu-options ul li').removeClass("current"); + currTab.parent().addClass("current"); + currTab.parent().css({'border-top':'1px solid #E5E5E5'}); + currTab.parent().css({'border-bottom':'1px solid #E5E5E5'}); + currTab.parent().prev().css({'border-bottom':'0'}); + currTab.parent().next().css({'border-top':'0'}); + index_a = currMenuTab; + index_a = index_a.substr(index_a.indexOf('_') + 1); + + jQuery('#settings-section-' + index_a).fadeIn("slow"); + } else { + var currTab = jQuery('.form-admin-fruitful .content .menu-options ul li').first(); + currTab.addClass("current"); + currTab.css({'border-top':'1px solid #E5E5E5'}); + currTab.css({'border-bottom':'1px solid #E5E5E5'}); + currTab.prev().css({'border-bottom':'0'}); + currTab.next().css({'border-top':'0'}); + + jQuery('#settings-section-0').fadeIn("slow"); + } + + + jQuery('.form-admin-fruitful .content .menu-options ul li').click(function() { + jQuery('.form-admin-fruitful .content .menu-options ul li').removeClass("current"); + jQuery(this).addClass("current"); + jQuery(this).css({'border-top':'1px solid #E5E5E5'}); + jQuery(this).css({'border-bottom':'1px solid #E5E5E5'}); + jQuery(this).prev().css({'border-bottom':'0'}); + jQuery(this).next().css({'border-top':'0'}); + jQuery('.form-admin-fruitful .content .settings-section').hide(); + var index_a = jQuery(this).find('a').attr("id"); + index_a = index_a.substr(index_a.indexOf('_') + 1); + jQuery('#settings-section-' + index_a).fadeIn("slow"); + + jQuery.cookie("curr_menu_tab", jQuery(this).find('a').attr('id'), { expires : 31 }); + }); + + jQuery("#upload_bg_button").click(function() { + jQuery("#background_img").click(); + }); + + + /*Color init*/ + var vColorPickerOptions = { + defaultColor: false, + change: function(event, ui){}, + clear: function() {}, + hide: true, + palettes: true + }; + jQuery('.colorPicker').wpColorPicker(vColorPickerOptions); + /*End Color init*/ + + + jQuery('#btn_idc').live('click', function() { + vCurrElem = jQuery('#btn_idc'); + var data = { action: 'run_import_dummy_data', type: 'add', data: '' }; + jQuery.post(ajaxurl, data, function(is_import) { + if (is_import) { + show_message_import(); + t = setTimeout('fade_message()', 1000); + vCurrElem.prop('disabled', true); + } + }); + return false; + }); + + jQuery('#form-admin-fruitful').submit(function() { + var data = jQuery(this).serialize(); + jQuery.post(ajaxurl, data, function(response) { + var vRes = parseInt(jQuery.trim(response)); + if(vRes == 1) { + show_message(1); + t = setTimeout('fade_message()', 2000); + } else { + show_message(2); + t = setTimeout('fade_message()', 2000); + } + }); + return false; + }); + + jQuery('#view_all_options').live("click", function() { + var vElemSlideOpt = jQuery('#slider_main_options'); + vElemSlideOpt.fadeIn('slow'); + jQuery(this).remove(); + }); + + jQuery(".content-close-slide").live("click", function() { + var vElem = jQuery(this).parent().next(); + if (vElem.css('display') == "none" ) { + vElem.fadeIn('slow'); + } else { + vElem.fadeOut('slow'); + } + }); + + jQuery('input[name="reset"]').live("click", function(){ + + jQuery.prompt("All theme options will be reset to default.
        This changes can’t be returned. Be careful.", { + title: "Reset options", + buttons: { "Reset": true, "Cancel": false }, + focus: -1, + opacity: 0.2, + submit: function(e,v,m,f){ + if (v) { + var data = { + action: 'fruitful_reset_btn', + type: 'reset', + data: '' + }; + + jQuery.post(ajaxurl, data, function(response) { }); + jQuery.prompt.close(); + setTimeout(function(){ + location.reload(true); + }, 1000); + } + } + }); + + }); + + + if (jQuery("ul.slides li").size() >2) { + jQuery("ul.slides li .slide-content").hide("slow"); + } + jQuery(".expand_all").live("click", function() { + jQuery("ul.slides li .slide-content").show("slow"); + }); + + jQuery(".collapse_all").live("click", function() { + jQuery("ul.slides li .slide-content").hide("slow"); + }); + + if (jQuery('body').hasClass('rtl')) { + jQuery("#save_options").center_rtl(); + } else { + jQuery("#save_options").center(); + } + + jQuery(window).bind('resize', function() { + if (jQuery('body').hasClass('rtl')) { + jQuery("#save_options").center_rtl(); + } else { + jQuery("#save_options").center(); + } + }); + + if (jQuery('.menu-type-responsive').length > 0){ + var responsiveMenuOptionBox = jQuery('.menu-type-responsive').parents('.settings-form-row'); + if (!jQuery('#responsive_ch').prop('checked')) { + responsiveMenuOptionBox.hide(); + } + jQuery('#responsive_ch').change(function(){ + if (responsiveMenuOptionBox.css('display') == 'none'){ + responsiveMenuOptionBox.show(); + } else { + responsiveMenuOptionBox.hide(); + } + }); + } + +}); + +function show_message(n) { + if(n == 1) { jQuery('.save-options').html('
        Options saved
        ').show(); } + else { jQuery('.save-options').html('
        Nothing new to save
        ').show(); } +} + +function fade_message() { + jQuery('.save-options').fadeOut(1000); + clearTimeout(t); +} + +function show_message_import() { + jQuery('.save-options').html('
        homepage installed
        visit your home page
        ').show(); +} + +jQuery.fn.center = function () { + var heightRatio = ( + jQuery('#form-admin-fruitful').height() != 0) ? this.outerHeight() / jQuery('#form-admin-fruitful').height() : 1; + var widthRatio = (jQuery('#form-admin-fruitful').width() != 0) ? this.outerWidth() / jQuery('#form-admin-fruitful').width() : 1; + this.css({ + position: 'fixed', + margin: 0, + top: (50*(1-heightRatio)) + "%", + left: (50*(1-widthRatio)) + "%" }); + return this; + } +jQuery.fn.center_rtl = function () { + var heightRatio = ( + jQuery('#form-admin-fruitful').height() != 0) ? this.outerHeight() / jQuery('#form-admin-fruitful').height() : 1; + var widthRatio = (jQuery('#form-admin-fruitful').width() != 0) ? this.outerWidth() / jQuery('#form-admin-fruitful').width() : 1; + this.css({ + position: 'fixed', + margin: 0, + top: (50*(1-heightRatio)) + "%", + right: (50*(1-widthRatio)) + "%" }); + return this; + } \ No newline at end of file diff --git a/themes/fruitful/inc/js/sl/images/bg.png b/themes/fruitful/inc/js/sl/images/bg.png new file mode 100644 index 0000000..3dcdd40 Binary files /dev/null and b/themes/fruitful/inc/js/sl/images/bg.png differ diff --git a/themes/fruitful/inc/js/sl/jquery.formstyler.css b/themes/fruitful/inc/js/sl/jquery.formstyler.css new file mode 100644 index 0000000..6c6f911 --- /dev/null +++ b/themes/fruitful/inc/js/sl/jquery.formstyler.css @@ -0,0 +1,155 @@ +.jq-selectbox { + vertical-align: middle; + cursor: pointer; +} +.jq-selectbox__select { width: 240px; + font-family: 'Open Sans', sans-serif; + height: 30px; + padding: 0 45px 0 10px; + color: #333; + text-shadow: 1px 1px #FFF; + background: #f5f5f5 url(images/bg.png) repeat-x; + border: 1px solid #ccc; + border-bottom-color: #b3b3b3; + border-radius: 4px; + box-shadow: inset 1px -1px #F1F1F1, inset -1px 0 #F1F1F1, 0 1px 2px rgba(0,0,0,0.1); +} +.jq-selectbox__select:hover { + background-color: #E6E6E6; + background-position: 0 -10px; +} +.jq-selectbox__select:active { + background: #F5F5F5; + box-shadow: inset 1px 1px 3px #DDD; +} +.jq-selectbox.focused .jq-selectbox__select { + border: 1px solid #5794BF; +} +.jq-selectbox.disabled .jq-selectbox__select { + border-color: #CCC; + background: #F5F5F5; + box-shadow: none; + color: #888; +} +.jq-selectbox__text { + display: block; width: 100%; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; padding: 8px 0 0 0; +} +.jq-selectbox__trigger { + position: absolute; + top: 0; + right: 0; + width: 34px; + height: 100%; + border-left: 1px solid #CCC; +} +.jq-selectbox__trigger-arrow { + position: absolute; + top: 14px; + right: 12px; + width: 0; + height: 0; + overflow: hidden; + border-top: 5px solid #000; + border-right: 5px solid transparent; + border-left: 5px solid transparent; + opacity: 0.3; + filter: alpha(opacity=30); +} +.jq-selectbox:hover .jq-selectbox__trigger-arrow { + opacity: 1; + filter: alpha(opacity=100); +} +.jq-selectbox.disabled .jq-selectbox__trigger-arrow { + opacity: 0.3; + filter: alpha(opacity=30); +} +.jq-selectbox__dropdown { + top: 33px; width: 295px; margin: 0; padding: 4px 0; background: #FFF; border: 1px solid #C6CBD0; border-radius: 4px; box-shadow: 0 2px 10px rgba(0,0,0,0.2); font-family: 'Open Sans', sans-serif; +} +.jq-selectbox ul { + margin: 0; + padding: 0; +} +.jq-selectbox li { + padding: 5px 10px 6px; + color: #231F20; + margin:0; +} +.jq-selectbox li.selected { + background: #A3ABB1; + color: #FFF; +} +.jq-selectbox li:hover { + background: #08C; + color: #FFF; +} +.jq-selectbox li.disabled { + color: #AAA; +} +.jq-selectbox li.disabled:hover { + background: none; +} +.jq-selectbox li.optgroup { + font-weight: bold; +} +.jq-selectbox li.optgroup:hover { + background: none; + color: #231F20; + cursor: default; +} +.jq-selectbox li.option { + padding-left: 25px; +} + + +.jq-select-multiple { + padding: 1px; + border: 1px solid #CCC; + border-bottom-color: #B3B3B3; + border-radius: 4px; + box-shadow: inset 1px 1px #F1F1F1, 0 1px 2px rgba(0,0,0,0.1); + color: #333; + font: 14px/18px Arial, Tahoma, sans-serif; + cursor: default; +} +.jq-select-multiple.focused { + border: 1px solid #5794BF; +} +.jq-select-multiple.disabled { + border-color: #CCC; + background: #F5F5F5; + box-shadow: none; + color: #888; +} +.jq-select-multiple ul { + margin: 0; + padding: 0; +} +.jq-select-multiple li { + padding: 3px 9px 4px; + list-style: none; +} +.jq-select-multiple li:first-child { + border-radius: 3px 3px 0 0; +} +.jq-select-multiple li:last-child { + border-radius: 0 0 3px 3px; +} +.jq-select-multiple li.selected { + background: #08C; + color: #FFF; +} +.jq-select-multiple li.disabled { + color: #AAA; +} +.jq-select-multiple.disabled li.selected, +.jq-select-multiple li.selected.disabled { + background: #CCC; + color: #FFF; +} +.jq-select-multiple li.optgroup { + font-weight: bold; +} +.jq-select-multiple li.option { + padding-left: 25px; +} \ No newline at end of file diff --git a/themes/fruitful/inc/js/sl/jquery.formstyler.js b/themes/fruitful/inc/js/sl/jquery.formstyler.js new file mode 100644 index 0000000..b82d95a --- /dev/null +++ b/themes/fruitful/inc/js/sl/jquery.formstyler.js @@ -0,0 +1,517 @@ +/* + * jQuery Form Styler v1.3.5 + * http://dimox.name/jquery-form-styler/ + * + * Copyright 2012-2013 Dimox (http://dimox.name/) + * Released under the MIT license. + * + * Date: 2013.05.01 + * + */ + +(function($) { + $.fn.styler = function(opt) { + + var opt = $.extend({ + idSuffix: '-styler', + browseText: 'Обзор...', + selectVisibleOptions: 0, + singleSelectzIndex: '100', + selectSmartPositioning: true + }, opt); + + return this.each(function() { + var el = $(this); + var id = '', + cl = '', + dataList = ''; + if (el.attr('id') !== undefined && el.attr('id') != '') id = ' id="' + el.attr('id') + opt.idSuffix + '"'; + if (el.attr('class') !== undefined && el.attr('class') != '') cl = ' ' + el.attr('class'); + var data = el.data(); + for (var i in data) { + if (data[i] != '') dataList += ' data-' + i + '="' + data[i] + '"'; + } + id += dataList; + + // checkbox + if (el.is(':checkbox')) { + el.css({position: 'absolute', left: -9999}).each(function() { + if (el.next('span.jq-checkbox').length < 1) { + var checkbox = $(''); + el.after(checkbox); + if (el.is(':checked')) checkbox.addClass('checked'); + if (el.is(':disabled')) checkbox.addClass('disabled'); + // клик на псевдочекбокс + checkbox.click(function() { + if (!checkbox.is('.disabled')) { + if (el.is(':checked')) { + el.prop('checked', false); + checkbox.removeClass('checked'); + } else { + el.prop('checked', true); + checkbox.addClass('checked'); + } + el.change(); + return false; + } else { + return false; + } + }); + // клик на label + el.parent('label').add('label[for="' + el.attr('id') + '"]').click(function(e) { + checkbox.click(); + e.preventDefault(); + }); + // переключение по Space или Enter + el.change(function() { + if (el.is(':checked')) checkbox.addClass('checked'); + else checkbox.removeClass('checked'); + }) + // чтобы переключался чекбокс, который находится в теге label + .keydown(function(e) { + if (el.parent('label').length && (e.which == 13 || e.which == 32)) checkbox.click(); + }) + .focus(function() { + if (!checkbox.is('.disabled')) checkbox.addClass('focused'); + }) + .blur(function() { + checkbox.removeClass('focused'); + }); + // обновление при динамическом изменении + el.on('refresh', function() { + if (el.is(':checked')) checkbox.addClass('checked'); + else checkbox.removeClass('checked'); + if (el.is(':disabled')) checkbox.addClass('disabled'); + else checkbox.removeClass('disabled'); + }); + } + }); + + // radio + } else if (el.is(':radio')) { + el.css({position: 'absolute', left: -9999}).each(function() { + if (el.next('span.jq-radio').length < 1) { + var radio = $(''); + el.after(radio); + if (el.is(':checked')) radio.addClass('checked'); + if (el.is(':disabled')) radio.addClass('disabled'); + // клик на псевдорадиокнопке + radio.click(function() { + if (!radio.is('.disabled')) { + $('input[name="' + el.attr('name') + '"]').prop('checked', false).next().removeClass('checked'); + el.prop('checked', true).next().addClass('checked'); + el.change(); + return false; + } else { + return false; + } + }); + // клик на label + el.parent('label').add('label[for="' + el.attr('id') + '"]').click(function(e) { + radio.click(); + e.preventDefault(); + }); + // переключение стрелками + el.change(function() { + $('input[name="' + el.attr('name') + '"]').next().removeClass('checked'); + el.next().addClass('checked'); + }) + .focus(function() { + if (!radio.is('.disabled')) radio.addClass('focused'); + }) + .blur(function() { + radio.removeClass('focused'); + }); + // обновление при динамическом изменении + el.on('refresh', function() { + if (el.is(':checked')) { + $('input[name="' + el.attr('name') + '"]').next().removeClass('checked'); + radio.addClass('checked'); + } else { + radio.removeClass('checked'); + } + if (el.is(':disabled')) radio.addClass('disabled'); + else radio.removeClass('disabled'); + }); + } + }); + + // file + } else if (el.is(':file')) { + el.css({position: 'absolute', top: '-50%', right: '-50%', fontSize: '200px', opacity: 0}).each(function() { + if (el.parent('span.jq-file').length < 1) { + var file = $(''); + var name = $('
        ').appendTo(file); + var browse = $('
        ' + opt.browseText + '
        ').appendTo(file); + el.after(file); + file.append(el); + if (el.is(':disabled')) file.addClass('disabled'); + el.change(function() { + name.text(el.val().replace(/.+[\\\/]/, '')); + }) + .focus(function() { + file.addClass('focused'); + }) + .blur(function() { + file.removeClass('focused'); + }) + .click(function() { + file.removeClass('focused'); + }) + // обновление при динамическом изменении + .on('refresh', function() { + if (el.is(':disabled')) file.addClass('disabled'); + else file.removeClass('disabled'); + }) + } + }); + + // select + } else if (el.is('select')) { + el.each(function() { + if (el.next('span.jqselect').length < 1) { + + function selectbox() { + + // запрещаем прокрутку страницы при прокрутке селекта + function preventScrolling(selector) { + selector.unbind('mousewheel DOMMouseScroll').bind('mousewheel DOMMouseScroll', function(e) { + var scrollTo = null; + if (e.type == 'mousewheel') { scrollTo = (e.originalEvent.wheelDelta * -1); } + else if (e.type == 'DOMMouseScroll') { scrollTo = 40 * e.originalEvent.detail; } + if (scrollTo) { e.preventDefault(); $(this).scrollTop(scrollTo + $(this).scrollTop()); } + }); + } + + var option = $('option', el); + var list = ''; + // формируем список селекта + function makeList() { + for (i = 0, len = option.length; i < len; i++) { + var li = '', + liClass = '', + optionClass = '', + optgroupClass = ''; + var disabled = 'disabled'; + var selDis = 'selected sel disabled'; + if (option.eq(i).prop('selected')) liClass = 'selected sel'; + if (option.eq(i).is(':disabled')) liClass = disabled; + if (option.eq(i).is(':selected:disabled')) liClass = selDis; + if (option.eq(i).attr('class') !== undefined) optionClass = ' ' + option.eq(i).attr('class'); + li = '
      • '+ option.eq(i).text() +'
      • '; + // если есть optgroup + if (option.eq(i).parent().is('optgroup')) { + if (option.eq(i).parent().attr('class') !== undefined) optgroupClass = ' ' + option.eq(i).parent().attr('class'); + li = '
      • '+ option.eq(i).text() +'
      • '; + if (option.eq(i).is(':first-child')) { + li = '
      • ' + option.eq(i).parent().attr('label') + '
      • ' + li; + } + } + list += li; + } + } // end makeList() + + // одиночный селект + function doSelect() { + var selectbox = + $(''+ + '
        '+ + '
        '+ + '
        '+ + ''); + el.after(selectbox).css({position: 'absolute', left: -9999}); + var divSelect = $('div.jq-selectbox__select', selectbox); + var divText = $('div.jq-selectbox__text', selectbox); + var optionSelected = option.filter(':selected'); + + // берем опцию по умолчанию + if (optionSelected.length) { + divText.text(optionSelected.text()); + } else { + divText.text(option.first().text()); + } + + // если селект неактивный + if (el.is(':disabled')) { + selectbox.addClass('disabled'); + + // если селект активный + } else { + makeList(); + var dropdown = + $('
        '+ + '
          ' + list + '
        '+ + '
        '); + selectbox.append(dropdown); + var li = $('li', dropdown); + if (li.filter('.selected').length < 1) li.first().addClass('selected sel'); + var selectHeight = selectbox.outerHeight(); + if (dropdown.css('left') == 'auto') dropdown.css({left: 0}); + if (dropdown.css('top') == 'auto') dropdown.css({top: selectHeight}); + var liHeight = li.outerHeight(); + var position = dropdown.css('top'); + dropdown.hide(); + + // при клике на псевдоселекте + divSelect.click(function() { + el.focus(); + + // умное позиционирование + if (opt.selectSmartPositioning) { + var win = $(window); + var topOffset = selectbox.offset().top; + var bottomOffset = win.height() - selectHeight - (topOffset - win.scrollTop()); + var visible = opt.selectVisibleOptions; + var minHeight = liHeight * 6; + var newHeight = liHeight * visible; + if (visible > 0 && visible < 6) minHeight = newHeight; + // раскрытие вверх + if (bottomOffset < 0 || bottomOffset < minHeight) { + dropdown.height('auto').css({top: 'auto', bottom: position}); + if (dropdown.outerHeight() > topOffset - win.scrollTop() - 20 ) { + dropdown.height(Math.floor((topOffset - win.scrollTop() - 20) / liHeight) * liHeight); + if (visible > 0 && visible < 6) { + if (dropdown.height() > minHeight) dropdown.height(minHeight); + } else if (visible > 6) { + if (dropdown.height() > newHeight) dropdown.height(newHeight); + } + } + // раскрытие вниз + } else if (bottomOffset > minHeight) { + dropdown.height('auto').css({bottom: 'auto', top: position}); + if (dropdown.outerHeight() > bottomOffset - 20 ) { + dropdown.height(Math.floor((bottomOffset - 20) / liHeight) * liHeight); + if (visible > 0 && visible < 6) { + if (dropdown.height() > minHeight) dropdown.height(minHeight); + } else if (visible > 6) { + if (dropdown.height() > newHeight) dropdown.height(newHeight); + } + } + } + } + + $('span.jqselect').css({zIndex: (opt.singleSelectzIndex-1)}).removeClass('focused'); + selectbox.css({zIndex: opt.singleSelectzIndex}); + if (dropdown.is(':hidden')) { + $('div.dropdown:visible').hide(); + dropdown.show(); + selectbox.addClass('opened'); + } else { + dropdown.hide(); + selectbox.removeClass('opened'); + } + + // прокручиваем до выбранного пункта при открытии списка + if (li.filter('.selected').length) { + dropdown.scrollTop(dropdown.scrollTop() + li.filter('.selected').position().top - dropdown.innerHeight()/2 + liHeight/2); + } + + preventScrolling(dropdown); + return false; + }); + + // при наведении курсора на пункт списка + li.hover(function() { + $(this).siblings().removeClass('selected'); + }); + var selectedText = li.filter('.selected').text(); + + // при клике на пункт списка + li.filter(':not(.disabled):not(.optgroup)').click(function() { + var t = $(this); + var liText = t.text(); + if (selectedText != liText) { + var index = t.index(); + if (t.is('.option')) index -= t.prevAll('.optgroup').length; + t.addClass('selected sel').siblings().removeClass('selected sel'); + option.prop('selected', false).eq(index).prop('selected', true); + selectedText = liText; + divText.text(liText); + el.change(); + } + dropdown.hide(); + }); + dropdown.mouseout(function() { + $('li.sel', dropdown).addClass('selected'); + }); + + // изменение селекта + el.change(function() { + divText.text(option.filter(':selected').text()); + li.removeClass('selected sel').not('.optgroup').eq(el[0].selectedIndex).addClass('selected sel'); + }) + .focus(function() { + selectbox.addClass('focused'); + }) + .blur(function() { + selectbox.removeClass('focused'); + }) + // прокрутки списка с клавиатуры + .bind('keydown keyup', function(e) { + divText.text(option.filter(':selected').text()); + li.removeClass('selected sel').not('.optgroup').eq(el[0].selectedIndex).addClass('selected sel'); + // вверх, влево, PageUp + if (e.which == 38 || e.which == 37 || e.which == 33) { + dropdown.scrollTop(dropdown.scrollTop() + li.filter('.selected').position().top); + } + // вниз, вправо, PageDown + if (e.which == 40 || e.which == 39 || e.which == 34) { + dropdown.scrollTop(dropdown.scrollTop() + li.filter('.selected').position().top - dropdown.innerHeight() + liHeight); + } + if (e.which == 13) { + dropdown.hide(); + } + }); + + // прячем выпадающий список при клике за пределами селекта + $(document).on('click', function(e) { + // e.target.nodeName != 'OPTION' - добавлено для обхода бага в Опере + // (при изменении селекта с клавиатуры срабатывает событие onclick) + if (!$(e.target).parents().hasClass('selectbox') && e.target.nodeName != 'OPTION') { + dropdown.hide().find('li.sel').addClass('selected'); + selectbox.removeClass('focused opened'); + } + }); + } + } // end doSelect() + + // мультиселект + function doMultipleSelect() { + var selectbox = $(''); + el.after(selectbox).css({position: 'absolute', left: -9999}); + makeList(); + selectbox.append('
          ' + list + '
        '); + var ul = $('ul', selectbox); + var li = $('li', selectbox).attr('unselectable', 'on').css({'-webkit-user-select': 'none', '-moz-user-select': 'none', '-ms-user-select': 'none', '-o-user-select': 'none', 'user-select': 'none'}); + var size = el.attr('size'); + var ulHeight = ul.outerHeight(); + var liHeight = li.outerHeight(); + if (size !== undefined && size > 0) { + ul.css({'height': liHeight * size}); + } else { + ul.css({'height': liHeight * 4}); + } + if (ulHeight > selectbox.height()) { + ul.css('overflowY', 'scroll'); + preventScrolling(ul); + // прокручиваем до выбранного пункта + if (li.filter('.selected').length) { + ul.scrollTop(ul.scrollTop() + li.filter('.selected').position().top); + } + } + if (el.is(':disabled')) { + selectbox.addClass('disabled'); + option.each(function() { + if ($(this).is(':selected')) li.eq($(this).index()).addClass('selected'); + }); + } else { + + // при клике на пункт списка + li.filter(':not(.disabled):not(.optgroup)').click(function(e) { + el.focus(); + selectbox.removeClass('focused'); + var clkd = $(this); + if(!e.ctrlKey) clkd.addClass('selected'); + if(!e.shiftKey) clkd.addClass('first'); + if(!e.ctrlKey && !e.shiftKey) clkd.siblings().removeClass('selected first'); + + // выделение пунктов при зажатом Ctrl + if(e.ctrlKey) { + if (clkd.is('.selected')) clkd.removeClass('selected first'); + else clkd.addClass('selected first'); + clkd.siblings().removeClass('first'); + } + + // выделение пунктов при зажатом Shift + if(e.shiftKey) { + var prev = false, + next = false; + clkd.siblings().removeClass('selected').siblings('.first').addClass('selected'); + clkd.prevAll().each(function() { + if ($(this).is('.first')) prev = true; + }); + clkd.nextAll().each(function() { + if ($(this).is('.first')) next = true; + }); + if (prev) { + clkd.prevAll().each(function() { + if ($(this).is('.selected')) return false; + else $(this).not('.disabled, .optgroup').addClass('selected'); + }); + } + if (next) { + clkd.nextAll().each(function() { + if ($(this).is('.selected')) return false; + else $(this).not('.disabled, .optgroup').addClass('selected'); + }); + } + if (li.filter('.selected').length == 1) clkd.addClass('first'); + } + + // отмечаем выбранные мышью + option.prop('selected', false); + li.filter('.selected').each(function() { + var t = $(this); + var index = t.index(); + if (t.is('.option')) index -= t.prevAll('.optgroup').length; + option.eq(index).prop('selected', true); + }); + el.change(); + + }); + + // отмечаем выбранные с клавиатуры + option.each(function(i) { + $(this).data('optionIndex', i); + }); + el.change(function() { + li.removeClass('selected'); + var arrIndexes = []; + option.filter(':selected').each(function() { + arrIndexes.push($(this).data('optionIndex')); + }); + li.not('.optgroup').filter(function(i) { + return $.inArray(i, arrIndexes) > -1; + }).addClass('selected'); + }) + .focus(function() { + selectbox.addClass('focused'); + }) + .blur(function() { + selectbox.removeClass('focused'); + }); + + // прокручиваем с клавиатуры + if (ulHeight > selectbox.height()) { + el.keydown(function(e) { + // вверх, влево, PageUp + if (e.which == 38 || e.which == 37 || e.which == 33) { + ul.scrollTop(ul.scrollTop() + li.filter('.selected').position().top - liHeight); + } + // вниз, вправо, PageDown + if (e.which == 40 || e.which == 39 || e.which == 34) { + ul.scrollTop(ul.scrollTop() + li.filter('.selected:last').position().top - ul.innerHeight() + liHeight*2); + } + }); + } + + } + } // end doMultipleSelect() + if (el.is('[multiple]')) doMultipleSelect(); else doSelect(); + } // end selectbox() + + selectbox(); + + // обновление при динамическом изменении + el.on('refresh', function() { + el.next().remove(); + selectbox(); + }); + } + }); + }// end select + + }); + + } +})(jQuery); \ No newline at end of file diff --git a/themes/fruitful/inc/js/sl/jquery.formstyler.min.js b/themes/fruitful/inc/js/sl/jquery.formstyler.min.js new file mode 100644 index 0000000..3d21c93 --- /dev/null +++ b/themes/fruitful/inc/js/sl/jquery.formstyler.min.js @@ -0,0 +1,21 @@ +/* jQuery Form Styler v1.3.5 | (c) Dimox | http://dimox.name/jquery-form-styler/ */ +(function(d){d.fn.styler=function(n){n=d.extend({idSuffix:"-styler",browseText:"\u041e\u0431\u0437\u043e\u0440...",selectVisibleOptions:0,singleSelectzIndex:"100",selectSmartPositioning:!0},n);return this.each(function(){var a=d(this),l="",q="",r="";void 0!==a.attr("id")&&""!=a.attr("id")&&(l=' id="'+a.attr("id")+n.idSuffix+'"');void 0!==a.attr("class")&&""!=a.attr("class")&&(q=" "+a.attr("class"));var s=a.data(),e;for(e in s)""!=s[e]&&(r+=" data-"+e+'="'+s[e]+'"');l+=r;a.is(":checkbox")?a.css({position:"absolute", +left:-9999}).each(function(){if(1>a.next("span.jq-checkbox").length){var b=d("');a.after(b);a.is(":checked")&&b.addClass("checked");a.is(":disabled")&&b.addClass("disabled");b.click(function(){b.is(".disabled")||(a.is(":checked")?(a.prop("checked",!1),b.removeClass("checked")):(a.prop("checked",!0),b.addClass("checked")),a.change());return!1});a.parent("label").add('label[for="'+a.attr("id")+'"]').click(function(a){b.click(); +a.preventDefault()});a.change(function(){a.is(":checked")?b.addClass("checked"):b.removeClass("checked")}).keydown(function(d){a.parent("label").length&&(13==d.which||32==d.which)&&b.click()}).focus(function(){b.is(".disabled")||b.addClass("focused")}).blur(function(){b.removeClass("focused")});a.on("refresh",function(){a.is(":checked")?b.addClass("checked"):b.removeClass("checked");a.is(":disabled")?b.addClass("disabled"):b.removeClass("disabled")})}}):a.is(":radio")?a.css({position:"absolute",left:-9999}).each(function(){if(1> +a.next("span.jq-radio").length){var b=d("');a.after(b);a.is(":checked")&&b.addClass("checked");a.is(":disabled")&&b.addClass("disabled");b.click(function(){b.is(".disabled")||(d('input[name="'+a.attr("name")+'"]').prop("checked",!1).next().removeClass("checked"),a.prop("checked",!0).next().addClass("checked"),a.change());return!1});a.parent("label").add('label[for="'+a.attr("id")+'"]').click(function(a){b.click();a.preventDefault()}); +a.change(function(){d('input[name="'+a.attr("name")+'"]').next().removeClass("checked");a.next().addClass("checked")}).focus(function(){b.is(".disabled")||b.addClass("focused")}).blur(function(){b.removeClass("focused")});a.on("refresh",function(){a.is(":checked")?(d('input[name="'+a.attr("name")+'"]').next().removeClass("checked"),b.addClass("checked")):b.removeClass("checked");a.is(":disabled")?b.addClass("disabled"):b.removeClass("disabled")})}}):a.is(":file")?a.css({position:"absolute",top:"-50%", +right:"-50%",fontSize:"200px",opacity:0}).each(function(){if(1>a.parent("span.jq-file").length){var b=d("'),e=d('
        ').appendTo(b);d('
        '+n.browseText+"
        ").appendTo(b);a.after(b);b.append(a);a.is(":disabled")&&b.addClass("disabled");a.change(function(){e.text(a.val().replace(/.+[\\\/]/, +""))}).focus(function(){b.addClass("focused")}).blur(function(){b.removeClass("focused")}).click(function(){b.removeClass("focused")}).on("refresh",function(){a.is(":disabled")?b.addClass("disabled"):b.removeClass("disabled")})}}):a.is("select")&&a.each(function(){if(1>a.next("span.jqselect").length){var b=function(){function b(a){a.unbind("mousewheel DOMMouseScroll").bind("mousewheel DOMMouseScroll",function(a){var b=null;"mousewheel"==a.type?b=-1*a.originalEvent.wheelDelta:"DOMMouseScroll"==a.type&& +(b=40*a.originalEvent.detail);b&&(a.preventDefault(),d(this).scrollTop(b+d(this).scrollTop()))})}function r(){e=0;for(len=f.length;e'+f.eq(e).text()+"";f.eq(e).parent().is("optgroup")&&(void 0!==f.eq(e).parent().attr("class")&&(c= +" "+f.eq(e).parent().attr("class")),a='
      • '+f.eq(e).text()+"
      • ",f.eq(e).is(":first-child")&&(a='
      • '+f.eq(e).parent().attr("label")+"
      • "+a));w+=a}}var f=d("option",a),w="";if(a.is("[multiple]")){var h=d("');a.after(h).css({position:"absolute",left:-9999});r();h.append('
          '+w+"
        ");var j=d("ul",h),g=d("li",h).attr("unselectable", +"on").css({"-webkit-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","-o-user-select":"none","user-select":"none"}),t=a.attr("size"),u=j.outerHeight(),x=g.outerHeight();void 0!==t&&0h.height()&&(j.css("overflowY","scroll"),b(j),g.filter(".selected").length&&j.scrollTop(j.scrollTop()+g.filter(".selected").position().top));a.is(":disabled")?(h.addClass("disabled"),f.each(function(){d(this).is(":selected")&&g.eq(d(this).index()).addClass("selected")})): +(g.filter(":not(.disabled):not(.optgroup)").click(function(b){a.focus();h.removeClass("focused");var c=d(this);b.ctrlKey||c.addClass("selected");b.shiftKey||c.addClass("first");!b.ctrlKey&&!b.shiftKey&&c.siblings().removeClass("selected first");b.ctrlKey&&(c.is(".selected")?c.removeClass("selected first"):c.addClass("selected first"),c.siblings().removeClass("first"));if(b.shiftKey){var e=!1,k=!1;c.siblings().removeClass("selected").siblings(".first").addClass("selected");c.prevAll().each(function(){d(this).is(".first")&& +(e=!0)});c.nextAll().each(function(){d(this).is(".first")&&(k=!0)});e&&c.prevAll().each(function(){if(d(this).is(".selected"))return!1;d(this).not(".disabled, .optgroup").addClass("selected")});k&&c.nextAll().each(function(){if(d(this).is(".selected"))return!1;d(this).not(".disabled, .optgroup").addClass("selected")});1==g.filter(".selected").length&&c.addClass("first")}f.prop("selected",!1);g.filter(".selected").each(function(){var a=d(this),b=a.index();a.is(".option")&&(b-=a.prevAll(".optgroup").length); +f.eq(b).prop("selected",!0)});a.change()}),f.each(function(a){d(this).data("optionIndex",a)}),a.change(function(){g.removeClass("selected");var a=[];f.filter(":selected").each(function(){a.push(d(this).data("optionIndex"))});g.not(".optgroup").filter(function(b){return-1h.height()&&a.keydown(function(a){(38==a.which||37==a.which||33==a.which)&&j.scrollTop(j.scrollTop()+g.filter(".selected").position().top- +x);(40==a.which||39==a.which||34==a.which)&&j.scrollTop(j.scrollTop()+g.filter(".selected:last").position().top-j.innerHeight()+2*x)}))}else{var k=d("
        ');a.after(k).css({position:"absolute", +left:-9999});var t=d("div.jq-selectbox__select",k),v=d("div.jq-selectbox__text",k),u=f.filter(":selected");u.length?v.text(u.text()):v.text(f.first().text());if(a.is(":disabled"))k.addClass("disabled");else{r();var c=d('
          '+w+"
        ");k.append(c);var m=d("li",c);1>m.filter(".selected").length&&m.first().addClass("selected sel");var s=k.outerHeight();"auto"==c.css("left")&& +c.css({left:0});"auto"==c.css("top")&&c.css({top:s});var p=m.outerHeight(),y=c.css("top");c.hide();t.click(function(){a.focus();if(n.selectSmartPositioning){var e=d(window),f=k.offset().top,j=e.height()-s-(f-e.scrollTop()),g=n.selectVisibleOptions,h=6*p,l=p*g;0g&&(h=l);0>j||jf-e.scrollTop()-20&&(c.height(Math.floor((f-e.scrollTop()-20)/p)*p),0g?c.height()>h&&c.height(h):6l&&c.height(l))):j>h&&(c.height("auto").css({bottom:"auto", +top:y}),c.outerHeight()>j-20&&(c.height(Math.floor((j-20)/p)*p),0g?c.height()>h&&c.height(h):6l&&c.height(l)))}d("span.jqselect").css({zIndex:n.singleSelectzIndex-1}).removeClass("focused");k.css({zIndex:n.singleSelectzIndex});c.is(":hidden")?(d("div.dropdown:visible").hide(),c.show(),k.addClass("opened")):(c.hide(),k.removeClass("opened"));m.filter(".selected").length&&c.scrollTop(c.scrollTop()+m.filter(".selected").position().top-c.innerHeight()/2+p/2);b(c);return!1});m.hover(function(){d(this).siblings().removeClass("selected")}); +var z=m.filter(".selected").text();m.filter(":not(.disabled):not(.optgroup)").click(function(){var b=d(this),e=b.text();if(z!=e){var g=b.index();b.is(".option")&&(g-=b.prevAll(".optgroup").length);b.addClass("selected sel").siblings().removeClass("selected sel");f.prop("selected",!1).eq(g).prop("selected",!0);z=e;v.text(e);a.change()}c.hide()});c.mouseout(function(){d("li.sel",c).addClass("selected")});a.change(function(){v.text(f.filter(":selected").text());m.removeClass("selected sel").not(".optgroup").eq(a[0].selectedIndex).addClass("selected sel")}).focus(function(){k.addClass("focused")}).blur(function(){k.removeClass("focused")}).bind("keydown keyup", +function(b){v.text(f.filter(":selected").text());m.removeClass("selected sel").not(".optgroup").eq(a[0].selectedIndex).addClass("selected sel");(38==b.which||37==b.which||33==b.which)&&c.scrollTop(c.scrollTop()+m.filter(".selected").position().top);(40==b.which||39==b.which||34==b.which)&&c.scrollTop(c.scrollTop()+m.filter(".selected").position().top-c.innerHeight()+p);13==b.which&&c.hide()});d(document).on("click",function(a){!d(a.target).parents().hasClass("selectbox")&&"OPTION"!=a.target.nodeName&& +(c.hide().find("li.sel").addClass("selected"),k.removeClass("focused opened"))})}}};b();a.on("refresh",function(){a.next().remove();b()})}})})}})(jQuery); \ No newline at end of file diff --git a/themes/fruitful/inc/js/sl/jquery.selectbox.js b/themes/fruitful/inc/js/sl/jquery.selectbox.js new file mode 100644 index 0000000..5e22029 --- /dev/null +++ b/themes/fruitful/inc/js/sl/jquery.selectbox.js @@ -0,0 +1,123 @@ +/* + * jQuery SelectBox Styler v1.0.1 + * http://dimox.name/styling-select-boxes-using-jquery-css/ + * + * Copyright 2012 Dimox (http://dimox.name/) + * Released under the MIT license. + * + * Date: 2012.10.07 + * + */ + +(function($) { + $.fn.selectbox = function() { + $(this).each(function() { + var select = $(this); + if (select.prev('span.selectbox').length < 1) { + function doSelect() { + var option = select.find('option'); + var optionSelected = option.filter(':selected'); + var optionText = option.filter(':first').text(); + if (optionSelected.length) optionText = optionSelected.text(); + var ddlist = ''; + for (i = 0; i < option.length; i++) { + var selected = ''; + var disabled = ' class="disabled"'; + if (option.eq(i).is(':selected')) selected = ' class="selected sel"'; + if (option.eq(i).is(':disabled')) selected = disabled; + ddlist += ''+ option.eq(i).text() +''; + } + var selectbox = + $(''+ + '
        ' + optionText + '
        '+ + ''+ + '
        '+ + ''+ + '
        '); + select.before(selectbox).css({position: 'absolute', top: -9999}); + var divSelect = selectbox.find('div.select'); + var divText = selectbox.find('div.text'); + var dropdown = selectbox.find('div.dropdown'); + var li = dropdown.find('li'); + var selectHeight = selectbox.outerHeight(); + if (dropdown.css('left') == 'auto') dropdown.css({left: 0}); + if (dropdown.css('top') == 'auto') dropdown.css({top: selectHeight}); + var liHeight = li.outerHeight(); + var position = dropdown.css('top'); + dropdown.hide(); + /* при клике на псевдоселекте */ + divSelect.click(function() { + /* умное позиционирование */ + var topOffset = selectbox.offset().top; + var bottomOffset = $(window).height() - selectHeight - (topOffset - $(window).scrollTop()); + if (bottomOffset < 0 || bottomOffset < liHeight * 6) { + dropdown.height('auto').css({top: 'auto', bottom: position}); + if (dropdown.outerHeight() > topOffset - $(window).scrollTop() - 20 ) { + dropdown.height(Math.floor((topOffset - $(window).scrollTop() - 20) / liHeight) * liHeight); + } + } else if (bottomOffset > liHeight * 6) { + dropdown.height('auto').css({bottom: 'auto', top: position}); + if (dropdown.outerHeight() > bottomOffset - 20 ) { + dropdown.height(Math.floor((bottomOffset - 20) / liHeight) * liHeight); + } + } + $('span.selectbox').css({zIndex: 1}).removeClass('focused'); + selectbox.css({zIndex: 2}); + if (dropdown.is(':hidden')) { + $('div.dropdown:visible').hide(); + dropdown.show(); + } else { + dropdown.hide(); + } + return false; + }); + /* при наведении курсора на пункт списка */ + li.hover(function() { + $(this).siblings().removeClass('selected'); + }); + var selectedText = li.filter('.selected').text(); + /* при клике на пункт списка */ + li.filter(':not(.disabled)').click(function() { + var liText = $(this).text(); + if ( selectedText != liText ) { + $(this).addClass('selected sel').siblings().removeClass('selected sel'); + option.removeAttr('selected').eq($(this).index()).attr('selected', true); + selectedText = liText; + divText.text(liText); + select.change(); + } + dropdown.hide(); + }); + dropdown.mouseout(function() { + dropdown.find('li.sel').addClass('selected'); + }); + /* фокус на селекте */ + select.focus(function() { + $('span.selectbox').removeClass('focused'); + selectbox.addClass('focused'); + }) + /* меняем селект с клавиатуры */ + .keyup(function() { + divText.text(option.filter(':selected').text()); + li.removeClass('selected sel').eq(option.filter(':selected').index()).addClass('selected sel'); + }); + /* прячем выпадающий список при клике за пределами селекта */ + $(document).on('click', function(e) { + if (!$(e.target).parents().hasClass('selectbox')) { + dropdown.hide().find('li.sel').addClass('selected'); + selectbox.removeClass('focused'); + } + }); + } + doSelect(); + // обновление при динамическом изменении + select.on('refresh', function() { + select.prev().remove(); + doSelect(); + }) + } + }); + } +})(jQuery) \ No newline at end of file diff --git a/themes/fruitful/inc/js/sl/jquery.selectbox.min.js b/themes/fruitful/inc/js/sl/jquery.selectbox.min.js new file mode 100644 index 0000000..85eb684 --- /dev/null +++ b/themes/fruitful/inc/js/sl/jquery.selectbox.min.js @@ -0,0 +1,2 @@ +/* jQuery SelectBox Styler v1.0.1 | (c) Dimox | http://dimox.name/styling-select-boxes-using-jquery-css/ */ +(function($){$.fn.selectbox=function(){$(this).each(function(){var select=$(this);if(select.prev('span.selectbox').length<1){function doSelect(){var option=select.find('option');var optionSelected=option.filter(':selected');var optionText=option.filter(':first').text();if(optionSelected.length)optionText=optionSelected.text();var ddlist='';for(i=0;i'+option.eq(i).text()+'';}var selectbox=$(''+'
        '+optionText+'
        '+''+'
        '+''+'
        ');select.before(selectbox).css({position:'absolute',top:-9999});var divSelect=selectbox.find('div.select');var divText=selectbox.find('div.text');var dropdown=selectbox.find('div.dropdown');var li=dropdown.find('li');var selectHeight=selectbox.outerHeight();if(dropdown.css('left')=='auto')dropdown.css({left:0});if(dropdown.css('top')=='auto')dropdown.css({top:selectHeight});var liHeight=li.outerHeight();var position=dropdown.css('top');dropdown.hide();divSelect.click(function(){var topOffset=selectbox.offset().top;var bottomOffset=$(window).height()-selectHeight-(topOffset-$(window).scrollTop());if(bottomOffset<0||bottomOffsettopOffset-$(window).scrollTop()-20){dropdown.height(Math.floor((topOffset-$(window).scrollTop()-20)/liHeight)*liHeight);}}else if(bottomOffset>liHeight*6){dropdown.height('auto').css({bottom:'auto',top:position});if(dropdown.outerHeight()>bottomOffset-20){dropdown.height(Math.floor((bottomOffset-20)/liHeight)*liHeight);}}$('span.selectbox').css({zIndex:1}).removeClass('focused');selectbox.css({zIndex:2});if(dropdown.is(':hidden')){$('div.dropdown:visible').hide();dropdown.show();}else{dropdown.hide();}return false;});li.hover(function(){$(this).siblings().removeClass('selected');});var selectedText=li.filter('.selected').text();li.filter(':not(.disabled)').click(function(){var liText=$(this).text();if(selectedText!=liText){$(this).addClass('selected sel').siblings().removeClass('selected sel');option.removeAttr('selected').eq($(this).index()).attr('selected',true);selectedText=liText;divText.text(liText);select.change();}dropdown.hide();});dropdown.mouseout(function(){dropdown.find('li.sel').addClass('selected');});select.focus(function(){$('span.selectbox').removeClass('focused');selectbox.addClass('focused');}).keyup(function(){divText.text(option.filter(':selected').text());li.removeClass('selected sel').eq(option.filter(':selected').index()).addClass('selected sel');});$(document).on('click',function(e){if(!$(e.target).parents().hasClass('selectbox')){dropdown.hide().find('li.sel').addClass('selected');selectbox.removeClass('focused');}});}doSelect();select.on('refresh',function(){select.prev().remove();doSelect();})}});}})(jQuery) \ No newline at end of file diff --git a/themes/fruitful/inc/js/sl/sl.css b/themes/fruitful/inc/js/sl/sl.css new file mode 100644 index 0000000..52ec0f5 --- /dev/null +++ b/themes/fruitful/inc/js/sl/sl.css @@ -0,0 +1,31 @@ +.selectbox { vertical-align: middle; cursor: pointer;} +.selectbox .select { width: 240px; + font-family: 'Open Sans', sans-serif; + height: 30px; + padding: 0 45px 0 10px; + color: #333; + text-shadow: 1px 1px #FFF; + background: #f5f5f5 url(images/bg.png) repeat-x; + border: 1px solid #ccc; + border-bottom-color: #b3b3b3; + border-radius: 4px; + box-shadow: inset 1px -1px #F1F1F1, inset -1px 0 #F1F1F1, 0 1px 2px rgba(0,0,0,0.1); + } +.selectbox .select:hover { background-color: #E6E6E6; background-position: 0 -10px; } +.selectbox .select:active { background: #f5f5f5; box-shadow: inset 0 1px 3px rgba(0,0,0,0.15); } +.selectbox.focused .select { border: 1px solid #5794BF; } +.selectbox .select .text { display: block; width: 100%; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; padding: 8px 0 0 0;} +.selectbox .trigger { position: absolute; top: 0; right: 0; width: 34px; height: 100%; border-left: 1px solid #CCC; } +.selectbox .trigger .arrow { position: absolute; top: 14px; right: 12px; border-left: 5px solid transparent; border-right: 5px solid transparent; border-top: 5px solid #000; width: 0; height: 0; overflow: hidden; opacity: 0.3; filter: alpha(opacity=30); } +.selectbox:hover .arrow { opacity: 1; filter: alpha(opacity=100); } +.selectbox .dropdown { top: 33px; width: 295px; margin: 0; padding: 4px 0; background: #FFF; border: 1px solid #C6CBD0; border-radius: 4px; box-shadow: 0 2px 10px rgba(0,0,0,0.2); font-family: 'Open Sans', sans-serif;} +.selectbox li { padding: 5px 10px 6px; color: #231F20; } +.selectbox li.selected { background: #A3ABB1; color: #FFF; } +.selectbox li:hover { background: #08C; color: #FFF; } +.selectbox li.disabled { color: #AAA; } +.selectbox li.disabled:hover { background: none; } +.text_fonts .selectbox .dropdown { max-height: 204px; } + + +#form-admin-fruitful .content .settings-section .box-options #slider_main_options .option_block .selectbox .select {width:106px} +#form-admin-fruitful .content .settings-section .box-options #slider_main_options .option_block .selectbox .dropdown {width:161px} \ No newline at end of file diff --git a/themes/fruitful/inc/js/sl/sl.js b/themes/fruitful/inc/js/sl/sl.js new file mode 100644 index 0000000..2ac18cc --- /dev/null +++ b/themes/fruitful/inc/js/sl/sl.js @@ -0,0 +1,106 @@ +(function($) { + $.fn.selectbox = function() { + $(this).each(function() { + var select = $(this); + if (select.prev('span.selectbox').length < 1) { + function doSelect() { + var option = select.find('option'); + var optionSelected = option.filter(':selected'); + var optionText = option.filter(':first').text(); + if (optionSelected.length) optionText = optionSelected.text(); + var ddlist = ''; + for (i = 0; i < option.length; i++) { + var selected = ''; + var disabled = ' class="disabled"'; + if (option.eq(i).is(':selected')) selected = ' class="selected sel"'; + if (option.eq(i).is(':disabled')) selected = disabled; + ddlist += ''+ option.eq(i).text() +''; + } + var selectbox = + $(''+ + '
        ' + optionText + '
        '+ + ''+ + '
        '+ + ''+ + '
        '); + select.before(selectbox).css({position: 'absolute', top: -9999}); + var divSelect = selectbox.find('div.select'); + var divText = selectbox.find('div.text'); + var dropdown = selectbox.find('div.dropdown'); + var li = dropdown.find('li'); + var selectHeight = selectbox.outerHeight(); + if (dropdown.css('left') == 'auto') dropdown.css({left: 0}); + if (dropdown.css('top') == 'auto') dropdown.css({top: selectHeight}); + var liHeight = li.outerHeight(); + var position = dropdown.css('top'); + dropdown.hide(); + /* */ + divSelect.click(function() { + var topOffset = selectbox.offset().top; + var bottomOffset = $(window).height() - selectHeight - (topOffset - $(window).scrollTop()); + if (bottomOffset < 0 || bottomOffset < liHeight * 6) { + dropdown.height('auto').css({top: 'auto', bottom: position}); + if (dropdown.outerHeight() > topOffset - $(window).scrollTop() - 20 ) { + dropdown.height(Math.floor((topOffset - $(window).scrollTop() - 20) / liHeight) * liHeight); + } + } else if (bottomOffset > liHeight * 6) { + dropdown.height('auto').css({bottom: 'auto', top: position}); + if (dropdown.outerHeight() > bottomOffset - 20 ) { + dropdown.height(Math.floor((bottomOffset - 20) / liHeight) * liHeight); + } + } + $('span.selectbox').css({zIndex: 1}).removeClass('focused'); + selectbox.css({zIndex: 2}); + if (dropdown.is(':hidden')) { + $('div.dropdown:visible').hide(); + dropdown.show(); + } else { + dropdown.hide(); + } + return false; + }); + li.hover(function() { + $(this).siblings().removeClass('selected'); + }); + var selectedText = li.filter('.selected').text(); + li.filter(':not(.disabled)').click(function() { + var liText = $(this).text(); + if ( selectedText != liText ) { + $(this).addClass('selected sel').siblings().removeClass('selected sel'); + option.removeAttr('selected').eq($(this).index()).attr('selected', true); + selectedText = liText; + divText.text(liText); + select.change(); + } + dropdown.hide(); + }); + dropdown.mouseout(function() { + dropdown.find('li.sel').addClass('selected'); + }); + /* */ + select.focus(function() { + $('span.selectbox').removeClass('focused'); + selectbox.addClass('focused'); + }) + .keyup(function() { + divText.text(option.filter(':selected').text()); + li.removeClass('selected sel').eq(option.filter(':selected').index()).addClass('selected sel'); + }); + $(document).on('click', function(e) { + if (!$(e.target).parents().hasClass('selectbox')) { + dropdown.hide().find('li.sel').addClass('selected'); + selectbox.removeClass('focused'); + } + }); + } + doSelect(); + select.on('refresh', function() { + select.prev().remove(); + doSelect(); + }) + } + }); + } +})(jQuery) \ No newline at end of file diff --git a/themes/fruitful/inc/js/uploads_.js b/themes/fruitful/inc/js/uploads_.js new file mode 100644 index 0000000..dfa6aa8 --- /dev/null +++ b/themes/fruitful/inc/js/uploads_.js @@ -0,0 +1,109 @@ +function uploads_multimedia_init (title, btnName, editing, multiple) { + var outArray = []; + var file_frame; + if (file_frame) { + file_frame.open(); + return; + } + file_frame = wp.media.editor.send.attachment = wp.media({ + title: title, + button: { + text: btnName + }, + editing: editing, + multiple: multiple, + }); + return file_frame; +} + +jQuery(document).ready(function() { + jQuery.fn.exists = function(){return this.length>0;} + jQuery('.upload_btn').live('click', function( event ) { + event.preventDefault(); + var vLinkElem = jQuery(this); + var customData = vLinkElem.data('imagetype'); + var customClass = '', + customId = ''; + + var file_frame = uploads_multimedia_init('Upload Image', 'Select Image', true, false); + file_frame.on( 'select', function() { + var selection = file_frame.state().get('selection'); + selection.map( function( attachment ) { + attachment = attachment.toJSON(); + var image_url = attachment.url, + image_id = attachment.id; + + vLinkElem.parent().parent().find('.img-container').remove(); + vLinkElem.parent().parent().prepend('
        '); + vLinkElem.parent().parent().find('input[type="hidden"]').val(image_id); + vLinkElem.parent().parent().find('.upload_button_div').each(function(){ + if(!jQuery(this).find('.reset_btn').exists() || jQuery(this).find('.reset_btn.none').exists() ) { + jQuery(this).find('.reset_btn,.reset_btn.none').remove(); + jQuery(this).append('Remove'); + } + }); + + }); + + }); + + file_frame.open(); + return false; + }); + + jQuery('.reset_btn').live('click', function( event ) { + event.preventDefault(); + var vLinkElem = jQuery(this); + vLinkElem.parent().parent().find('.img-container').remove(); + vLinkElem.parent().parent().find('input').val(''); + vLinkElem.remove(); + return false; + }); + + jQuery(".remove-slide").live("click", function() { + var vElemRemove = jQuery(this).parent().parent(); + if (jQuery(this).parent().next().find('.reset_slide_btn').length > 0) { + jQuery(this).parent().next().find('.reset_slide_btn').click(); + } + vElemRemove.remove(); + + }); + + jQuery(".add_new_btn").bind("click", function() { + var vIndex, + vMaxIndex = 0; + + jQuery('.slides').children().each(function() { + var vStr = jQuery(this).attr('id'); + vIndex = parseInt(vStr.substr(vStr.indexOf("-")+7,2)); + if ( vMaxIndex < vIndex) { + vMaxIndex = vIndex; + } + }); + + var data = { + action: 'fruitful_add_new_slide_action', + type: 'add_new_slide', + data: vMaxIndex + 1 + }; + + jQuery.post(ajaxurl, data, function(response) { + if (jQuery("ul.slides li.slide").length > 0) { + jQuery("ul.slides li.slide").last().after(response); + } else { + jQuery("ul.slides").append(response); + } + jQuery('input[type=checkbox]').ezMark(); + }); + return false; + }); + + /*Sortable slide*/ + jQuery("ul.slides").sortable({ + opacity: 0.9, + cursor: 'move', + revert: true, + beforeStop: function(event, ui) {}, + change :function(event, ui) {} + }); +}); \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/custom-fields-for-metaboxes.php b/themes/fruitful/inc/metaboxes/custom-fields-for-metaboxes.php new file mode 100644 index 0000000..e18eb2b --- /dev/null +++ b/themes/fruitful/inc/metaboxes/custom-fields-for-metaboxes.php @@ -0,0 +1,62 @@ + +
          +
        • + /> + +
        • +
        • + /> + +
        • +
        • + /> + +
        • +
        • + /> + +
        • +
        +

        + field = $field; + $this->value = $value; + $this->object_id = cmb_Meta_Box::get_object_id(); + $this->object_type = cmb_Meta_Box::get_object_type(); + } + + /** + * Catchall method if field's 'sanitization_cb' is NOT defined, or field type does not have a corresponding validation method + * @since 1.0.0 + * @param string $name Non-existent method name + * @param array $arguments All arguments passed to the method + */ + public function __call( $name, $arguments ) { + list( $value ) = $arguments; + return $this->default_sanitization( $value ); + } + + /** + * Default fallback sanitization method. Applies filters. + * @since 1.0.2 + * @param mixed $value Meta value + */ + public function default_sanitization( $value ) { + + // Allow field type validation via filter + $updated = apply_filters( 'cmb_validate_'. $this->field->type(), null, $value, $this->object_id, $this->field->args(), $this ); + + if ( null !== $updated ) + return $updated; + + switch ( $this->field->type() ) { + case 'wysiwyg': + // $value = wp_kses( $value ); + // break; + case 'textarea_small': + return $this->textarea( $value ); + case 'taxonomy_select': + case 'taxonomy_radio': + case 'taxonomy_multicheck': + if ( $this->field->args( 'taxonomy' ) ) { + return wp_set_object_terms( $this->object_id, $value, $this->field->args( 'taxonomy' ) ); + } + case 'multicheck': + case 'file_list': + case 'oembed': + // no filtering + return $value; + default: + // Handle repeatable fields array + // We'll fallback to 'sanitize_text_field' + return is_array( $value ) ? array_map( 'sanitize_text_field', $value ) : call_user_func( 'sanitize_text_field', $value ); + } + } + + /** + * Simple checkbox validation + * @since 1.0.1 + * @param mixed $val 'on' or false + * @return mixed 'on' or false + */ + public function checkbox( $value ) { + return $value === 'on' ? 'on' : false; + } + + /** + * Validate url in a meta value + * @since 1.0.1 + * @param string $value Meta value + * @return string Empty string or escaped url + */ + public function text_url( $value ) { + $protocols = $this->field->args( 'protocols' ); + // for repeatable + if ( is_array( $value ) ) { + foreach ( $value as $key => $val ) { + $value[ $key ] = $val ? esc_url_raw( $val, $protocols ) : $this->field->args( 'default' ); + } + } else { + $value = $value ? esc_url_raw( $value, $protocols ) : $this->field->args( 'default' ); + } + + return $value; + } + + public function colorpicker( $value ) { + // for repeatable + if ( is_array( $value ) ) { + $check = $value; + $value = array(); + foreach ( $check as $key => $val ) { + if ( $val && '#' != $val ) { + $value[ $key ] = esc_attr( $val ); + } + } + } else { + $value = ! $value || '#' == $value ? '' : esc_attr( $value ); + } + return $value; + } + + /** + * Validate email in a meta value + * @since 1.0.1 + * @param string $value Meta value + * @return string Empty string or validated email + */ + public function text_email( $value ) { + // for repeatable + if ( is_array( $value ) ) { + foreach ( $value as $key => $val ) { + $val = trim( $val ); + $value[ $key ] = is_email( $val ) ? $val : ''; + } + } else { + $value = trim( $value ); + $value = is_email( $value ) ? $value : ''; + } + + return $value; + } + + /** + * Validate money in a meta value + * @since 1.0.1 + * @param string $value Meta value + * @return string Empty string or validated money value + */ + public function text_money( $value ) { + + global $wp_locale; + + $search = array( $wp_locale->number_format['thousands_sep'], $wp_locale->number_format['decimal_point'] ); + $replace = array( '', '.' ); + + // for repeatable + if ( is_array( $value ) ) { + foreach ( $value as $key => $val ) { + $value[ $key ] = number_format_i18n( (float) str_ireplace( $search, $replace, $val ), 2 ); + } + } else { + $value = number_format_i18n( (float) str_ireplace( $search, $replace, $value ), 2 ); + } + + return $value; + } + + /** + * Converts text date to timestamp + * @since 1.0.2 + * @param string $value Meta value + * @return string Timestring + */ + public function text_date_timestamp( $value ) { + return is_array( $value ) ? array_map( 'strtotime', $value ) : strtotime( $value ); + } + + /** + * Datetime to timestamp + * @since 1.0.1 + * @param string $value Meta value + * @return string Timestring + */ + public function text_datetime_timestamp( $value, $repeat = false ) { + + $test = is_array( $value ) ? array_filter( $value ) : ''; + if ( empty( $test ) ) + return ''; + + if ( $repeat_value = $this->_check_repeat( $value, __FUNCTION__, $repeat ) ) + return $repeat_value; + + $value = strtotime( $value['date'] .' '. $value['time'] ); + + if ( $tz_offset = $this->field->field_timezone_offset() ) + $value += $tz_offset; + + return $value; + } + + /** + * Datetime to imestamp with timezone + * @since 1.0.1 + * @param string $value Meta value + * @return string Timestring + */ + public function text_datetime_timestamp_timezone( $value, $repeat = false ) { + + $test = is_array( $value ) ? array_filter( $value ) : ''; + if ( empty( $test ) ) + return ''; + + if ( $repeat_value = $this->_check_repeat( $value, __FUNCTION__, $repeat ) ) + return $repeat_value; + + $tzstring = null; + + if ( is_array( $value ) && array_key_exists( 'timezone', $value ) ) + $tzstring = $value['timezone']; + + if ( empty( $tzstring ) ) + $tzstring = cmb_Meta_Box::timezone_string(); + + $offset = cmb_Meta_Box::timezone_offset( $tzstring, true ); + + if ( substr( $tzstring, 0, 3 ) === 'UTC' ) + $tzstring = timezone_name_from_abbr( '', $offset, 0 ); + + $value = new DateTime( $value['date'] .' '. $value['time'], new DateTimeZone( $tzstring ) ); + $value = serialize( $value ); + + return $value; + } + + /** + * Sanitize textareas and wysiwyg fields + * @since 1.0.1 + * @param string $value Meta value + * @return string Sanitized data + */ + public function textarea( $value ) { + return is_array( $value ) ? array_map( 'wp_kses_post', $value ) : wp_kses_post( $value ); + } + + /** + * Sanitize code textareas + * @since 1.0.2 + * @param string $value Meta value + * @return string Sanitized data + */ + public function textarea_code( $value, $repeat = false ) { + if ( $repeat_value = $this->_check_repeat( $value, __FUNCTION__, $repeat ) ) + return $repeat_value; + + return htmlspecialchars_decode( stripslashes( $value ) ); + } + + /** + * Peforms saving of `file` attachement's ID + * @since 1.1.0 + * @param string $value File url + */ + public function _save_file_id( $value ) { + $group = $this->field->group; + $args = $this->field->args(); + $args['id'] = $args['_id'] . '_id'; + + unset( $args['_id'], $args['_name'] ); + // And get new field object + $field = new cmb_Meta_Box_field( $args, $group ); + $id_key = $field->_id(); + $id_val_old = $field->escaped_value( 'absint' ); + + if ( $group ) { + // Check group $_POST data + $i = $group->index; + $base_id = $group->_id(); + $id_val = isset( $_POST[ $base_id ][ $i ][ $id_key ] ) ? absint( $_POST[ $base_id ][ $i ][ $id_key ] ) : 0; + + } else { + // Check standard $_POST data + $id_val = isset( $_POST[ $field->id() ] ) ? $_POST[ $field->id() ] : null; + + } + + // If there is no ID saved yet, try to get it from the url + if ( $value && ! $id_val ) { + $id_val = cmb_Meta_Box::image_id_from_url( $value ); + } + + if ( $group ) { + return array( + 'attach_id' => $id_val, + 'field_id' => $id_key + ); + } + + if ( $id_val && $id_val != $id_val_old ) { + return $field->update_data( $id_val ); + } elseif ( empty( $id_val ) && $id_val_old ) { + return $field->remove_data( $old ); + } + } + + /** + * Handles saving of attachment post ID and sanitizing file url + * @since 1.1.0 + * @param string $value File url + * @return string Sanitized url + */ + public function file( $value ) { + // If NOT specified to NOT save the file ID + if ( $this->field->args( 'save_id' ) ) { + $id_value = $this->_save_file_id( $value ); + } + $clean = $this->text_url( $value ); + + // Return an array with url/id if saving a group field + return $this->field->group ? array_merge( array( 'url' => $clean), $id_value ) : $clean; + } + + /** + * If repeating, loop through and re-apply sanitization method + * @since 1.1.0 + * @param mixed $value Meta value + * @param string $method Class method + * @param bool $repeat Whether repeating or not + * @return mixed Sanitized value + */ + public function _check_repeat( $value, $method, $repeat ) { + if ( $repeat || ! $this->field->args( 'repeatable' ) ) + return; + $new_value = array(); + foreach ( $value as $iterator => $val ) { + $new_value[] = $this->$method( $val, true ); + } + return $new_value; + } + +} diff --git a/themes/fruitful/inc/metaboxes/helpers/cmb_Meta_Box_Show_Filters.php b/themes/fruitful/inc/metaboxes/helpers/cmb_Meta_Box_Show_Filters.php new file mode 100644 index 0000000..d79453d --- /dev/null +++ b/themes/fruitful/inc/metaboxes/helpers/cmb_Meta_Box_Show_Filters.php @@ -0,0 +1,105 @@ +'. __( 'Please Try Again', 'fruitful' ) .'

        ', false ); + + // Set width of embed + $embed_width = isset( $_REQUEST['oembed_width'] ) && intval( $_REQUEST['oembed_width'] ) < 640 ? intval( $_REQUEST['oembed_width'] ) : '640'; + + // set url + $oembed_url = esc_url( $oembed_string ); + // set args + $embed_args = array( 'width' => $embed_width ); + + // Get embed code (or fallback link) + $html = self::get_oembed( $oembed_url, $_REQUEST['object_id'], array( + 'object_type' => isset( $_REQUEST['object_type'] ) ? $_REQUEST['object_type'] : 'post', + 'oembed_args' => $embed_args, + 'field_id' => $_REQUEST['field_id'], + ) ); + + self::send_result( $html ); + + } + + /** + * Retrieves oEmbed from url/object ID + * @since 0.9.5 + * @param string $url URL to retrieve oEmbed + * @param int $object_id Object ID + * @param array $args Arguments for method + * @return string html markup with embed or fallback + */ + public static function get_oembed( $url, $object_id, $args = array() ) { + global $wp_embed; + + $oembed_url = esc_url( $url ); + + // Sanitize object_id + self::$object_id = is_numeric( $object_id ) ? absint( $object_id ) : sanitize_text_field( $object_id ); + + $args = wp_parse_args( $args, array( + 'object_type' => 'post', + 'oembed_args' => self::$embed_args, + 'field_id' => false, + 'cache_key' => false, + ) ); + + self::$embed_args =& $args; + + // set the post_ID so oEmbed won't fail + // wp-includes/class-wp-embed.php, WP_Embed::shortcode(), line 162 + $wp_embed->post_ID = self::$object_id; + + // Special scenario if NOT a post object + if ( isset( $args['object_type'] ) && $args['object_type'] != 'post' ) { + + if ( 'options-page' == $args['object_type'] ) { + // bogus id to pass some numeric checks + // Issue with a VERY large WP install? + $wp_embed->post_ID = 1987645321; + // Use our own cache key to correspond to this field (vs one cache key per url) + $args['cache_key'] = $args['field_id'] .'_cache'; + } + // Ok, we need to hijack the oembed cache system + self::$hijack = true; + self::$object_type = $args['object_type']; + + // Gets ombed cache from our object's meta (vs postmeta) + add_filter( 'get_post_metadata', array( 'cmb_Meta_Box_ajax', 'hijack_oembed_cache_get' ), 10, 3 ); + // Sets ombed cache in our object's meta (vs postmeta) + add_filter( 'update_post_metadata', array( 'cmb_Meta_Box_ajax', 'hijack_oembed_cache_set' ), 10, 4 ); + + } + + $embed_args = ''; + foreach ( $args['oembed_args'] as $key => $val ) { + $embed_args .= " $key=\"$val\""; + } + + // ping WordPress for an embed + $check_embed = $wp_embed->run_shortcode( '[embed'. $embed_args .']'. $oembed_url .'[/embed]' ); + + // fallback that WordPress creates when no oEmbed was found + $fallback = $wp_embed->maybe_make_link( $oembed_url ); + + // Send back our embed + if ( $check_embed && $check_embed != $fallback ) + return ''; + + // Otherwise, send back error info that no oEmbeds were found + return '

        '. sprintf( __( 'No oEmbed Results Found for %s. View more info at', 'fruitful' ), $fallback ) .' codex.wordpress.org/Embeds.

        '; + + } + + /** + * Hijacks retrieving of cached oEmbed. + * Returns cached data from relevant object metadata (vs postmeta) + * + * @since 0.9.5 + * @param boolean $check Whether to retrieve postmeta or override + * @param int $object_id Object ID + * @param string $meta_key Object metakey + * @return mixed Object's oEmbed cached data + */ + public static function hijack_oembed_cache_get( $check, $object_id, $meta_key ) { + + if ( ! self::$hijack || ( self::$object_id != $object_id && 1987645321 !== $object_id ) ) + return $check; + + // get cached data + $data = 'options-page' === self::$object_type + ? cmb_Meta_Box::get_option( self::$object_id, self::$embed_args['cache_key'] ) + : get_metadata( self::$object_type, self::$object_id, $meta_key, true ); + + return $data; + } + + /** + * Hijacks saving of cached oEmbed. + * Saves cached data to relevant object metadata (vs postmeta) + * + * @since 0.9.5 + * @param boolean $check Whether to continue setting postmeta + * @param int $object_id Object ID to get postmeta from + * @param string $meta_key Postmeta's key + * @param mixed $meta_value Value of the postmeta to be saved + * @return boolean Whether to continue setting + */ + public static function hijack_oembed_cache_set( $check, $object_id, $meta_key, $meta_value ) { + if ( ! self::$hijack || ( self::$object_id != $object_id && 1987645321 !== $object_id ) ) + return $check; + + // Cache the result to our metadata + if ( 'options-page' === self::$object_type ) { + // Set the option + cmb_Meta_Box::update_option( self::$object_id, self::$embed_args['cache_key'], $meta_value, array( 'type' => 'oembed' ) ); + // Save the option + cmb_Meta_Box::save_option( self::$object_id ); + } else { + update_metadata( self::$object_type, self::$object_id, $meta_key, $meta_value ); + } + + // Anything other than `null` to cancel saving to postmeta + return true; + } + + /** + * Helper to send json encoded response to ajax + * @since 0.9.5 + * @param string $data Data to be shown via ajax + * @param boolean $success Success or fail + */ + public static function send_result( $data, $success = true ) { + $found = $success ? 'found' : 'not found'; + // send back our encoded data + echo json_encode( array( 'result' => $data, 'id' => $found ) ); + die(); + } + +} diff --git a/themes/fruitful/inc/metaboxes/helpers/cmb_Meta_Box_field.php b/themes/fruitful/inc/metaboxes/helpers/cmb_Meta_Box_field.php new file mode 100644 index 0000000..81f0d51 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/helpers/cmb_Meta_Box_field.php @@ -0,0 +1,498 @@ +object_id = cmb_Meta_Box::get_object_id(); + $this->object_type = cmb_Meta_Box::get_object_type(); + $this->group = ! empty( $group_field ) ? $group_field : false; + $this->args = $this->_set_field_defaults( $field_args ); + + // Allow an override for the field's value + // (assuming no one would want to save 'cmb_no_override_val' as a value) + $this->value = apply_filters( 'cmb_override_meta_value', 'cmb_no_override_val', $this->object_id, $this->args(), $this->object_type, $this ); + + // If no override, get our meta + $this->value = 'cmb_no_override_val' === $this->value + ? $this->get_data() + : $this->value; + } + + /** + * Non-existent methods fallback to checking for field arguments of the same name + * @since 1.1.0 + * @param string $name Method name + * @param array $arguments Array of passed-in arguments + * @return mixed Value of field argument + */ + public function __call( $name, $arguments ) { + $key = isset( $arguments[0] ) ? $arguments[0] : false; + return $this->args( $name, $key ); + } + + /** + * Retrieves the field id + * @since 1.1.0 + * @param boolean $raw Whether to retrieve pre-modidifed id + * @return string Field id + */ + public function id( $raw = false ) { + $id = $raw ? '_id' : 'id'; + return $this->args( $id ); + } + + /** + * Get a field argument + * @since 1.1.0 + * @param string $key Argument to check + * @param string $key Sub argument to check + * @return mixed Argument value or false if non-existent + */ + public function args( $key = '', $_key = '' ) { + $vars = $this->_data( 'args', $key ); + if ( $_key ) { + return isset( $vars[ $_key ] ) ? $vars[ $_key ] : false; + } + return $vars; + } + + /** + * Get Field's value + * @since 1.1.0 + * @param string $key If value is an array, is used to get array key->value + * @return mixed Field value or false if non-existent + */ + public function value( $key = '' ) { + return $this->_data( 'value', $key ); + } + + /** + * Retrieve a portion of a field property + * @since 1.1.0 + * @param string $var Field property to check + * @param string $key Field property array key to check + * @return mixed Queried property value or false + */ + public function _data( $var, $key = '' ) { + $vars = $this->$var; + if ( $key ) { + return isset( $vars[ $key ] ) ? $vars[ $key ] : false; + } + return $vars; + } + + /** + * Retrieves metadata/option data + * @since 1.0.1 + * @param string $field_id Meta key/Option array key + * @return mixed Meta/Option value + */ + public function get_data( $field_id = '', $args = array() ) { + if ( $field_id ) { + $args['field_id'] = $field_id; + } else if ( $this->group ) { + $args['field_id'] = $this->group->id(); + } + extract( $this->data_args( $args ) ); + + $data = 'options-page' === $type + ? cmb_Meta_Box::get_option( $id, $field_id ) + : get_metadata( $type, $id, $field_id, ( $single || $repeat ) /* If multicheck this can be multiple values */ ); + + if ( $this->group && $data ) { + $data = isset( $data[ $this->group->args( 'count' ) ][ $this->args( '_id' ) ] ) + ? $data[ $this->group->args( 'count' ) ][ $this->args( '_id' ) ] + : false; + } + return $data; + } + + /** + * Updates metadata/option data + * @since 1.0.1 + * @param mixed $value Value to update data with + * @param bool $single Whether data is an array (add_metadata) + */ + public function update_data( $new_value, $single = true ) { + extract( $this->data_args( array( 'new_value' => $new_value, 'single' => $single ) ) ); + + $new_value = $repeat ? array_values( $new_value ) : $new_value; + + if ( 'options-page' === $type ) + return cmb_Meta_Box::update_option( $id, $field_id, $new_value, $single ); + + if ( ! $single ) + return add_metadata( $type, $id, $field_id, $new_value, false ); + + return update_metadata( $type, $id, $field_id, $new_value ); + } + + /** + * Removes/updates metadata/option data + * @since 1.0.1 + * @param string $old Old value + */ + public function remove_data( $old = '' ) { + extract( $this->data_args() ); + + return 'options-page' === $type + ? cmb_Meta_Box::remove_option( $id, $field_id ) + : delete_metadata( $type, $id, $field_id, $old ); + } + + /** + * data variables for get/set data methods + * @since 1.1.0 + * @param array $args Override arguments + * @return array Updated arguments + */ + public function data_args( $args = array() ) { + $args = wp_parse_args( $args, array( + 'type' => $this->object_type, + 'id' => $this->object_id, + 'field_id' => $this->id( true ), + 'repeat' => $this->args( 'repeatable' ), + 'single' => ! $this->args( 'multiple' ), + ) ); + return $args; + } + + /** + * Checks if field has a registered validation callback + * @since 1.0.1 + * @param mixed $meta_value Meta value + * @return mixed Possibly validated meta value + */ + public function sanitization_cb( $meta_value ) { + if ( empty( $meta_value ) ) + return $meta_value; + + // Check if the field has a registered validation callback + $cb = $this->maybe_callback( 'sanitization_cb' ); + if ( false === $cb ) { + // If requestion NO validation, return meta value + return $meta_value; + } elseif ( $cb ) { + // Ok, callback is good, let's run it. + return call_user_func( $cb, $meta_value, $this->args(), $this ); + } + + $clean = new cmb_Meta_Box_Sanitize( $this, $meta_value ); + // Validation via 'cmb_Meta_Box_Sanitize' (with fallback filter) + return $clean->{$this->type()}( $meta_value ); + } + + /** + * Checks if field has a callback value + * @since 1.0.1 + * @param string $cb Callback string + * @return mixed NULL, false for NO validation, or $cb string if it exists. + */ + public function maybe_callback( $cb ) { + $field_args = $this->args(); + if ( ! isset( $field_args[ $cb ] ) ) + return; + + // Check if metabox is requesting NO validation + $cb = false !== $field_args[ $cb ] && 'false' !== $field_args[ $cb ] ? $field_args[ $cb ] : false; + + // If requestion NO validation, return false + if ( ! $cb ) + return false; + + if ( is_callable( $cb ) ) + return $cb; + } + + /** + * Determine if current type is excempt from escaping + * @since 1.1.0 + * @return bool True if exempt + */ + public function escaping_exception() { + // These types cannot be escaped + return in_array( $this->type(), array( + 'file_list', + 'multicheck', + 'text_datetime_timestamp_timezone', + ) ); + } + + /** + * Determine if current type cannot be repeatable + * @since 1.1.0 + * @param string $type Field type to check + * @return bool True if type cannot be repeatable + */ + public function repeatable_exception( $type ) { + // These types cannot be escaped + return in_array( $type, array( + 'file', // Use file_list + 'radio', + 'title', + 'group', + // @todo Ajax load wp_editor: http://wordpress.stackexchange.com/questions/51776/how-to-load-wp-editor-through-ajax-jquery + 'wysiwyg', + 'checkbox', + 'radio_inline', + 'taxonomy_radio', + 'taxonomy_select', + 'taxonomy_multicheck', + ) ); + } + + /** + * Escape the value before output. Defaults to 'esc_attr()' + * @since 1.0.1 + * @param mixed $meta_value Meta value + * @param mixed $func Escaping function (if not esc_attr()) + * @return mixed Final value + */ + public function escaped_value( $func = 'esc_attr', $meta_value = '' ) { + + if ( isset( $this->escaped_value ) ) + return $this->escaped_value; + + $meta_value = $meta_value ? $meta_value : $this->value(); + // Check if the field has a registered escaping callback + $cb = $this->maybe_callback( 'escape_cb' ); + if ( false === $cb || $this->escaping_exception() ) { + // If requesting NO escaping, return meta value + return ! empty( $meta_value ) ? $meta_value : $this->args( 'default' ); + } elseif ( $cb ) { + // Ok, callback is good, let's run it. + return call_user_func( $cb, $meta_value, $this->args(), $this ); + } + + // Or custom escaping filter can be used + $esc = apply_filters( 'cmb_types_esc_'. $this->type(), null, $meta_value, $this->args(), $this ); + if ( null !== $esc ) { + return $esc; + } + + // escaping function passed in? + $func = $func ? $func : 'esc_attr'; + $meta_value = ! empty( $meta_value ) ? $meta_value : $this->args( 'default' ); + + if ( is_array( $meta_value ) ) { + foreach ( $meta_value as $key => $value ) { + $meta_value[ $key ] = call_user_func( $func, $value ); + } + } else { + $meta_value = call_user_func( $func, $meta_value ); + } + + $this->escaped_value = $meta_value; + return $this->escaped_value; + } + + /** + * Offset a time value based on timezone + * @since 1.0.0 + * @return string Offset time string + */ + public function field_timezone_offset() { + return cmb_Meta_Box::timezone_offset( $this->field_timezone() ); + } + + /** + * Return timezone string + * @since 1.0.0 + * @return string Timezone string + */ + public function field_timezone() { + + // Is timezone arg set? + if ( $this->args( 'timezone' ) ) { + return $this->args( 'timezone' ) ; + } + // Is there another meta key with a timezone stored as its value we should use? + else if ( $this->args( 'timezone_meta_key' ) ) { + return $this->get_data( $this->args( 'timezone_meta_key' ) ); + } + + return false; + } + + /** + * Render a field row + * @since 1.0.0 + */ + public function render_field() { + + // If field is requesting to not be shown on the front-end + if ( ! is_admin() && ! $this->args( 'on_front' ) ) + return; + + // If field is requesting to be conditionally shown + if ( is_callable( $this->args( 'show_on_cb' ) ) && ! call_user_func( $this->args( 'show_on_cb' ), $this ) ) + return; + + $classes = 'cmb-type-'. sanitize_html_class( $this->type() ); + $classes .= ' cmb_id_'. sanitize_html_class( $this->id() ); + $classes .= $this->args( 'repeatable' ) ? ' cmb-repeat' : ''; + // 'inline' flag, or _inline in the field type, set to true + $classes .= $this->args( 'inline' ) ? ' cmb-inline' : ''; + $is_side = 'side' === $this->args( 'context' ); + + printf( "
        \n", $classes ); + + if ( 'title' == $this->type() || ! $this->args( 'show_names' ) || $is_side ) { + echo "\t\n"; + } + + /** + * Replaces a hash key - {#} - with the repeatable count + * @since 1.2.0 + * @param string $value Value to update + * @return string Updated value + */ + public function replace_hash( $value ) { + // Replace hash with 1 based count + return str_ireplace( '{#}', ( $this->count() + 1 ), $value ); + } + + /** + * Fills in empty field parameters with defaults + * @since 1.1.0 + * @param array $args Metabox field config array + */ + public function _set_field_defaults( $args ) { + + // Set up blank or default values for empty ones + if ( ! isset( $args['name'] ) ) $args['name'] = ''; + if ( ! isset( $args['subname'] ) ) $args['subname'] = ''; + if ( ! isset( $args['desc'] ) ) $args['desc'] = ''; + if ( ! isset( $args['before'] ) ) $args['before'] = ''; + if ( ! isset( $args['after'] ) ) $args['after'] = ''; + if ( ! isset( $args['protocols'] ) ) $args['protocols'] = null; + if ( ! isset( $args['description'] ) ) { + $args['description'] = isset( $args['desc'] ) ? $args['desc'] : ''; + } + if ( ! isset( $args['default'] ) ) { + // Phase out 'std', and use 'default' instead + $args['default'] = isset( $args['std'] ) ? $args['std'] : ''; + } + if ( ! isset( $args['preview_size'] ) ) $args['preview_size'] = array( 50, 50 ); + if ( ! isset( $args['date_format'] ) ) $args['date_format'] = 'm\/d\/Y'; + if ( ! isset( $args['time_format'] ) ) $args['time_format'] = 'h:i A'; + // Allow a filter override of the default value + $args['default'] = apply_filters( 'cmb_default_filter', $args['default'], $args, $this->object_type, $this->object_type ); + $args['allow'] = 'file' == $args['type'] && ! isset( $args['allow'] ) ? array( 'url', 'attachment' ) : array(); + $args['save_id'] = 'file' == $args['type'] && ! ( isset( $args['save_id'] ) && ! $args['save_id'] ); + // $args['multiple'] = isset( $args['multiple'] ) ? $args['multiple'] : ( 'multicheck' == $args['type'] ? true : false ); + $args['multiple'] = isset( $args['multiple'] ) ? $args['multiple'] : false; + $args['repeatable'] = isset( $args['repeatable'] ) && $args['repeatable'] && ! $this->repeatable_exception( $args['type'] ); + $args['inline'] = isset( $args['inline'] ) && $args['inline'] || false !== stripos( $args['type'], '_inline' ); + $args['on_front'] = ! ( isset( $args['on_front'] ) && ! $args['on_front'] ); + $args['attributes'] = isset( $args['attributes'] ) && is_array( $args['attributes'] ) ? $args['attributes'] : array(); + $args['options'] = isset( $args['options'] ) && is_array( $args['options'] ) ? $args['options'] : array(); + + $args['options'] = 'group' == $args['type'] ? wp_parse_args( $args['options'], array( + 'add_button' => __( 'Add Group', 'fruitful' ), + 'remove_button' => __( 'Remove Group', 'fruitful' ), + ) ) : $args['options']; + + $args['_id'] = $args['id']; + $args['_name'] = $args['id']; + + if ( $this->group ) { + $args['id'] = $this->group->args( 'id' ) .'_'. $this->group->args( 'count' ) .'_'. $args['id']; + $args['_name'] = $this->group->args( 'id' ) .'['. $this->group->args( 'count' ) .']['. $args['_name'] .']'; + } + + if ( 'wysiwyg' == $args['type'] ) { + $args['id'] = strtolower( str_ireplace( '-', '_', $args['id'] ) ); + $args['options']['textarea_name'] = $args['_name']; + } + + $option_types = array( 'taxonomy_select', 'taxonomy_radio', 'taxonomy_radio_inline' ); + if ( in_array( $args['type'], $option_types, true ) ) { + + // @todo implemention + $args['show_option_all'] = isset( $args['show_option_all'] ) && ! $args['show_option_all'] ? false : true; + $args['show_option_none'] = isset( $args['show_option_none'] ) && ! $args['show_option_none'] ? false : true; + + } + + return $args; + } + + /** + * Updates attributes array values unless they exist from the field config array + * @since 1.1.0 + * @param array $attrs Array of attributes to update + */ + public function maybe_set_attributes( $attrs = array() ) { + return wp_parse_args( $this->args['attributes'], $attrs ); + } + +} diff --git a/themes/fruitful/inc/metaboxes/helpers/cmb_Meta_Box_types.php b/themes/fruitful/inc/metaboxes/helpers/cmb_Meta_Box_types.php new file mode 100644 index 0000000..bfdbc1b --- /dev/null +++ b/themes/fruitful/inc/metaboxes/helpers/cmb_Meta_Box_types.php @@ -0,0 +1,812 @@ +field = $field; + } + + /** + * Default fallback. Allows rendering fields via "cmb_render_$name" hook + * @since 1.0.0 + * @param string $name Non-existent method name + * @param array $arguments All arguments passed to the method + */ + public function __call( $name, $arguments ) { + // When a non-registered field is called, send it through an action. + do_action( "cmb_render_$name", $this->field->args(), $this->field->escaped_value(), $this->field->object_id, $this->field->object_type, $this ); + } + + /** + * Render a field (and handle repeatable) + * @since 1.1.0 + */ + public function render() { + if ( $this->field->args( 'repeatable' ) ) { + $this->render_repeatable_field(); + } else { + $this->_render(); + } + } + + /** + * Render a field type + * @since 1.1.0 + */ + protected function _render() { + echo $this->{$this->field->type()}(); + } + + /** + * Checks if we can get a post object, and if so, uses `get_the_terms` which utilizes caching + * @since 1.0.2 + * @return mixed Array of terms on success + */ + public function get_object_terms() { + $object_id = $this->field->object_id; + $taxonomy = $this->field->args( 'taxonomy' ); + + if ( ! $post = get_post( $object_id ) ) { + + $cache_key = 'cmb-cache-'. $taxonomy .'-'. $object_id; + + // Check cache + $cached = $test = get_transient( $cache_key ); + if ( $cached ) + return $cached; + + $cached = wp_get_object_terms( $object_id, $taxonomy ); + // Do our own (minimal) caching. Long enough for a page-load. + $set = set_transient( $cache_key, $cached, 60 ); + return $cached; + } + + // WP caches internally so it's better to use + return get_the_terms( $post, $taxonomy ); + + } + + /** + * Determine a file's extension + * @since 1.0.0 + * @param string $file File url + * @return string|false File extension or false + */ + public function get_file_ext( $file ) { + $parsed = @parse_url( $file, PHP_URL_PATH ); + return $parsed ? strtolower( pathinfo( $parsed, PATHINFO_EXTENSION ) ) : false; + } + + /** + * Determines if a file has a valid image extension + * @since 1.0.0 + * @param string $file File url + * @return bool Whether file has a valid image extension + */ + public function is_valid_img_ext( $file ) { + $file_ext = $this->get_file_ext( $file ); + + $this->valid = empty( $this->valid ) + ? (array) apply_filters( 'cmb_valid_img_types', array( 'jpg', 'jpeg', 'png', 'gif', 'ico', 'icon' ) ) + : $this->valid; + + return ( $file_ext && in_array( $file_ext, $this->valid ) ); + } + + /** + * Handles parsing and filtering attributes while preserving any passed in via field config. + * @since 1.1.0 + * @param array $args Override arguments + * @param string $element Element for filter + * @param array $defaults Default arguments + * @return array Parsed and filtered arguments + */ + public function parse_args( $args, $element, $defaults ) { + return wp_parse_args( apply_filters( "cmb_{$element}_attributes", $this->field->maybe_set_attributes( $args ), $this->field, $this ), $defaults ); + } + + /** + * Combines attributes into a string for a form element + * @since 1.1.0 + * @param array $attrs Attributes to concatenate + * @param array $attr_exclude Attributes that should NOT be concatenated + * @return string String of attributes for form element + */ + public function concat_attrs( $attrs, $attr_exclude = array() ) { + $attributes = ''; + foreach ( $attrs as $attr => $val ) { + if ( ! in_array( $attr, (array) $attr_exclude, true ) ) + $attributes .= sprintf( ' %s="%s"', $attr, $val ); + } + return $attributes; + } + + /** + * Generates html for an option element + * @since 1.1.0 + * @param string $opt_label Option label + * @param string $opt_value Option value + * @param mixed $selected Selected attribute if option is selected + * @return string Generated option element html + */ + public function option( $opt_label, $opt_value, $selected ) { + return sprintf( "\t".'', $opt_value, selected( $selected, true, false ), $opt_label )."\n"; + } + + /** + * Generates options html + * @since 1.1.0 + * @param array $args Optional arguments + * @param string $method Method to generate individual option item + * @return string Concatenated html options + */ + public function concat_options( $args = array(), $method = 'list_input' ) { + + $options = (array) $this->field->args( 'options' ); + $saved_value = $this->field->escaped_value(); + $value = $saved_value ? $saved_value : $this->field->args( 'default' ); + + $_options = ''; $i = 1; + foreach ( $options as $option_key => $option ) { + + // Check for the "old" way + $opt_label = is_array( $option ) && array_key_exists( 'name', $option ) ? $option['name'] : $option; + $opt_subname = is_array( $option ) && array_key_exists( 'subname', $option ) ? $option['subname'] : $option; + $opt_value = is_array( $option ) && array_key_exists( 'value', $option ) ? $option['value'] : $option_key; + // Check if this option is the value of the input + $is_current = $value == $opt_value; + + if ( ! empty( $args ) ) { + // Clone args & modify for just this item + $this_args = $args; + $this_args['value'] = $opt_value; + $this_args['label'] = $opt_label; + $this_args['subname'] = $opt_subname; + if ( $is_current ) + $this_args['checked'] = 'checked'; + + $_options .= $this->$method( $this_args, $i ); + } else { + $_options .= $this->option( $opt_label, $opt_value, $is_current ); + } + $i++; + } + return $_options; + } + + /** + * Generates html for list item with input + * @since 1.1.0 + * @param array $args Override arguments + * @param int $i Iterator value + * @return string Gnerated list item html + */ + public function list_input( $args = array(), $i ) { + $args = $this->parse_args( $args, 'list_input', array( + 'type' => 'radio', + 'class' => 'cmb_option', + 'name' => $this->_name(), + 'subname' => $this->_subname(), + 'id' => $this->_id( $i ), + 'value' => $this->field->escaped_value(), + 'label' => '', + ) ); + + return sprintf( "\t".'
      • '."\n", $this->concat_attrs( $args, 'label' ), $args['id'], $args['label'] ); + } + + /** + * Generates html for list item with checkbox input + * @since 1.1.0 + * @param array $args Override arguments + * @param int $i Iterator value + * @return string Gnerated list item html + */ + public function list_input_checkbox( $args, $i ) { + unset( $args['selected'] ); + $saved_value = $this->field->escaped_value(); + if ( is_array( $saved_value ) && in_array( $args['value'], $saved_value ) ) { + $args['checked'] = 'checked'; + } + return $this->list_input( $args, $i ); + } + + /** + * Generates repeatable field table markup + * @since 1.0.0 + */ + public function render_repeatable_field() { + $table_id = $this->field->id() .'_repeat'; + + $this->_desc( true, true ); + ?> + +
        +
        ', + esc_html__( 'Upgrade message from the plugin author:', 'fruitful' ), + ' ', wp_kses_data( $item['upgrade_notice'] ), ' +
        +
        \n"; + + if ( ! $this->args( 'show_names' ) || $is_side ) { + $style = ! $is_side || 'title' == $this->type() ? ' style="display:none;"' : ''; + printf( "\n%s\n", $style, $this->id(), $this->args( 'name' )); + } + } else { + + $style = 'post' == $this->object_type ? ' style="width:18%"' : ''; + // $tag = 'side' !== $this->args( 'context' ) ? 'th' : 'p'; + $tag = 'th'; + printf( '<%1$s%2$s>%5$s', $tag, $style, $this->id(), $this->args( 'name' ), $this->args( 'subname' )); + + echo "\n\t\n"; + } + + echo $this->args( 'before' ); + + $this_type = new cmb_Meta_Box_types( $this ); + $this_type->render(); + + echo $this->args( 'after' ); + + echo "\n\t
        + + repeatable_rows(); ?> + +
        +

        + +

        + + iterator = 0; + } + + /** + * Generates repeatable field rows + * @since 1.1.0 + */ + public function repeatable_rows() { + $meta_value = $this->field->escaped_value(); + // check for default content + $default = $this->field->args( 'default' ); + + // check for saved data + if ( ! empty( $meta_value ) ) { + $meta_value = is_array( $meta_value ) ? array_filter( $meta_value ) : $meta_value; + $meta_value = ! empty( $meta_value ) ? $meta_value : $default; + } else { + $meta_value = $default; + } + + // Loop value array and add a row + if ( ! empty( $meta_value ) ) { + foreach ( (array) $meta_value as $val ) { + $this->field->escaped_value = $val; + $this->repeat_row(); + $this->iterator++; + } + } else { + // Otherwise add one row + $this->repeat_row(); + } + + // Then add an empty row + $this->field->escaped_value = ''; + $this->iterator = $this->iterator ? $this->iterator : 1; + $this->repeat_row( 'empty-row' ); + } + + /** + * Generates a repeatable row's markup + * @since 1.1.0 + * @param string $class Repeatable table row's class + */ + protected function repeat_row( $class = 'repeat-row' ) { + ?> + + + + _render(); ?> + + + + + + + field->args( 'repeatable' ) || $this->iterator > 0 ) { + return ''; + } + $tag = $paragraph ? 'p' : 'span'; + $desc = "\n<$tag class=\"cmb_metabox_description\">{$this->field->args( 'description' )}\n"; + if ( $echo ) + echo $desc; + return $desc; + } + + /** + * Generate field name attribute + * @since 1.1.0 + * @param string $suffix For multi-part fields + * @return string Name attribute + */ + public function _name( $suffix = '' ) { + return $this->field->args( '_name' ) . ( $this->field->args( 'repeatable' ) ? '['. $this->iterator .']' : '' ) . $suffix; + } + + /** + * Generate field sub. name attribute + * @since 1.1.0 + * @param string $suffix For multi-part fields + * @return string Name attribute + */ + + public function _subname( $suffix = '' ) { + return $this->field->args( '_subname' ) . ( $this->field->args( 'repeatable' ) ? '['. $this->iterator .']' : '' ) . $suffix; + } + + /** + * Generate field id attribute + * @since 1.1.0 + * @param string $suffix For multi-part fields + * @return string Id attribute + */ + public function _id( $suffix = '' ) { + return $this->field->id() . $suffix . ( $this->field->args( 'repeatable' ) ? '_'. $this->iterator .'" data-iterator="'. $this->iterator : '' ); + } + + /** + * Handles outputting an 'input' element + * @since 1.1.0 + * @param array $args Override arguments + * @return string Form input element + */ + public function input( $args = array() ) { + $args = $this->parse_args( $args, 'input', array( + 'type' => 'text', + 'class' => 'regular-text', + 'name' => $this->_name(), + 'subname' => $this->_subname(), + 'id' => $this->_id(), + 'value' => $this->field->escaped_value(), + 'desc' => $this->_desc( true ), + ) ); + + return sprintf( '%s', $this->concat_attrs( $args, 'desc' ), $args['desc'] ); + } + + /** + * Handles outputting an 'textarea' element + * @since 1.1.0 + * @param array $args Override arguments + * @return string Form textarea element + */ + public function textarea( $args = array() ) { + $args = $this->parse_args( $args, 'textarea', array( + 'class' => 'cmb_textarea', + 'name' => $this->_name(), + 'subname' => $this->_subname(), + 'id' => $this->_id(), + 'cols' => 60, + 'rows' => 10, + 'value' => $this->field->escaped_value( 'esc_textarea' ), + 'desc' => $this->_desc( true ), + ) ); + return sprintf( '%s%s', $this->concat_attrs( $args, array( 'desc', 'value' ) ), $args['value'], $args['desc'] ); + } + + /** + * Begin Field Types + */ + + public function text() { + return $this->input(); + } + + public function text_small() { + return $this->input( array( 'class' => 'cmb_text_small', 'desc' => $this->_desc() ) ); + } + + public function text_medium() { + return $this->input( array( 'class' => 'cmb_text_medium', 'desc' => $this->_desc() ) ); + } + + public function text_email() { + return $this->input( array( 'class' => 'cmb_text_email cmb_text_medium', 'type' => 'email' ) ); + } + + public function text_url() { + return $this->input( array( 'class' => 'cmb_text_url cmb_text_medium regular-text', 'value' => $this->field->escaped_value( 'esc_url' ) ) ); + } + + public function text_date() { + return $this->input( array( 'class' => 'cmb_text_small cmb_datepicker', 'desc' => $this->_desc() ) ); + } + + public function text_time() { + return $this->input( array( 'class' => 'cmb_timepicker text_time', 'desc' => $this->_desc() ) ); + } + + public function text_money() { + return ( ! $this->field->args( 'before' ) ? '$ ' : ' ' ) . $this->input( array( 'class' => 'cmb_text_money', 'desc' => $this->_desc() ) ); + } + + public function textarea_small() { + return $this->textarea( array( 'class' => 'cmb_textarea_small', 'rows' => 4 ) ); + } + + public function textarea_code() { + return sprintf( '
        %s
        ', $this->textarea( array( 'class' => 'cmb_textarea_code' ) ) ); + } + + public function wysiwyg( $args = array() ) { + extract( $this->parse_args( $args, 'input', array( + 'id' => $this->_id(), + 'value' => $this->field->escaped_value( 'stripslashes' ), + 'desc' => $this->_desc( true ), + 'options' => $this->field->args( 'options' ), + ) ) ); + + wp_editor( $value, $id, $options ); + echo $desc; + } + + public function text_date_timestamp() { + $meta_value = $this->field->escaped_value(); + $value = ! empty( $meta_value ) ? date( $this->field->args( 'date_format' ), $meta_value ) : ''; + return $this->input( array( 'class' => 'cmb_text_small cmb_datepicker', 'value' => $value ) ); + } + + public function text_datetime_timestamp( $meta_value = '' ) { + $desc = ''; + if ( ! $meta_value ) { + $meta_value = $this->field->escaped_value(); + // This will be used if there is a select_timezone set for this field + $tz_offset = $this->field->field_timezone_offset(); + if ( ! empty( $tz_offset ) ) { + $meta_value -= $tz_offset; + } + $desc = $this->_desc(); + } + + $inputs = array( + $this->input( array( + 'class' => 'cmb_text_small cmb_datepicker', + 'name' => $this->_name( '[date]' ), + 'id' => $this->_id( '_date' ), + 'value' => ! empty( $meta_value ) ? date( $this->field->args( 'date_format' ), $meta_value ) : '', + 'desc' => '', + ) ), + $this->input( array( + 'class' => 'cmb_timepicker text_time', + 'name' => $this->_name( '[time]' ), + 'id' => $this->_id( '_time' ), + 'value' => ! empty( $meta_value ) ? date( $this->field->args( 'time_format' ), $meta_value ) : '', + 'desc' => $desc, + ) ) + ); + + return implode( "\n", $inputs ); + } + + public function text_datetime_timestamp_timezone() { + $meta_value = $this->field->escaped_value(); + $datetime = unserialize( $meta_value ); + $meta_value = $tzstring = false; + + if ( $datetime && $datetime instanceof DateTime ) { + $tz = $datetime->getTimezone(); + $tzstring = $tz->getName(); + $meta_value = $datetime->getTimestamp() + $tz->getOffset( new DateTime( 'NOW' ) ); + } + + $inputs = $this->text_datetime_timestamp( $meta_value ); + $inputs .= ''. $this->_desc(); + + return $inputs; + } + + public function select_timezone() { + $this->field->args['default'] = $this->field->args( 'default' ) + ? $this->field->args( 'default' ) + : cmb_Meta_Box::timezone_string(); + + $meta_value = $this->field->escaped_value(); + + return ''; + } + + public function colorpicker() { + $meta_value = $this->field->escaped_value(); + $hex_color = '(([a-fA-F0-9]){3}){1,2}$'; + if ( preg_match( '/^' . $hex_color . '/i', $meta_value ) ) // Value is just 123abc, so prepend #. + $meta_value = '#' . $meta_value; + elseif ( ! preg_match( '/^#' . $hex_color . '/i', $meta_value ) ) // Value doesn't match #123abc, so sanitize to just #. + $meta_value = "#"; + + return $this->input( array( 'class' => 'cmb_colorpicker cmb_text_small', 'value' => $meta_value ) ); + } + + public function title() { + extract( $this->parse_args( array(), 'title', array( + 'tag' => $this->field->object_type == 'post' ? 'h5' : 'h3', + 'class' => 'cmb_metabox_title', + 'name' => $this->field->args( 'name' ), + 'subname' => $this->field->args( 'subname' ), + 'desc' => $this->_desc( true ), + ) ) ); + + return sprintf( '<%1$s class="%2$s">%3$s%4$s', $tag, $class, $name, $desc ); + } + + public function select( $args = array() ) { + $args = $this->parse_args( $args, 'select', array( + 'class' => 'cmb_select', + 'name' => $this->_name(), + 'subname' => $this->_subname(), + 'id' => $this->_id(), + 'desc' => $this->_desc( true ), + 'options' => $this->concat_options(), + ) ); + + $attrs = $this->concat_attrs( $args, array( 'desc', 'options' ) ); + return sprintf( '%s%s', $attrs, $args['options'], $args['desc'] ); + } + + public function taxonomy_select() { + + $names = $this->get_object_terms(); + $saved_term = is_wp_error( $names ) || empty( $names ) ? $this->field->args( 'default' ) : $names[0]->slug; + $terms = get_terms( $this->field->args( 'taxonomy' ), 'hide_empty=0' ); + $options = ''; + + foreach ( $terms as $term ) { + $selected = $saved_term == $term->slug; + $options .= $this->option( $term->name, $term->slug, $selected ); + } + + return $this->select( array( 'options' => $options ) ); + } + + public function radio( $args = array(), $type = 'radio' ) { + extract( $this->parse_args( $args, $type, array( + 'class' => 'cmb_radio_list cmb_list', + 'options' => $this->concat_options( array( 'label' => 'test' ) ), + 'desc' => $this->_desc( true ), + ) ) ); + + return sprintf( '
          %s
        %s', $class, $options, $desc ); + } + + public function radio_inline() { + return $this->radio( array(), 'radio_inline' ); + } + + public function multicheck( $type = 'checkbox' ) { + return $this->radio( array( 'class' => 'cmb_checkbox_list cmb_list', 'options' => $this->concat_options( array( 'type' => 'checkbox', 'name' => $this->_name() .'[]' ), 'list_input_checkbox' ) ), $type ); + } + + public function multicheck_inline() { + $this->multicheck( 'multicheck_inline' ); + } + + public function checkbox() { + $meta_value = $this->field->escaped_value(); + $args = array( 'type' => 'checkbox', 'class' => 'cmb_option cmb_list', 'value' => 'on', 'desc' => '' ); + if ( ! empty( $meta_value ) ) { + $args['checked'] = 'checked'; + } + return sprintf( '%s ', $this->input( $args ), $this->_id(), $this->_desc() ); + } + + public function taxonomy_radio() { + $names = $this->get_object_terms(); + $saved_term = is_wp_error( $names ) || empty( $names ) ? $this->field->args( 'default' ) : $names[0]->slug; + $terms = get_terms( $this->field->args( 'taxonomy' ), 'hide_empty=0' ); + $options = ''; $i = 1; + + if ( ! $terms ) { + $options .= '
      • '; + } else { + foreach ( $terms as $term ) { + $args = array( + 'value' => $term->slug, + 'label' => $term->name, + ); + + if ( $saved_term == $term->slug ) { + $args['checked'] = 'checked'; + } + $options .= $this->list_input( $args, $i ); + $i++; + } + } + + return $this->radio( array( 'options' => $options ), 'taxonomy_radio' ); + } + + public function taxonomy_radio_inline() { + $this->taxonomy_radio(); + } + + public function taxonomy_multicheck() { + + $names = $this->get_object_terms(); + $saved_terms = is_wp_error( $names ) || empty( $names ) + ? $this->field->args( 'default' ) + : wp_list_pluck( $names, 'slug' ); + $terms = get_terms( $this->field->args( 'taxonomy' ), 'hide_empty=0' ); + $name = $this->_name() .'[]'; + $options = ''; $i = 1; + + if ( ! $terms ) { + $options .= '
      • '; + } else { + + foreach ( $terms as $term ) { + $args = array( + 'value' => $term->slug, + 'label' => $term->name, + 'type' => 'checkbox', + 'name' => $name, + ); + + if ( is_array( $saved_terms ) && in_array( $term->slug, $saved_terms ) ) { + $args['checked'] = 'checked'; + } + $options .= $this->list_input( $args, $i ); + $i++; + } + } + + return $this->radio( array( 'class' => 'cmb_checkbox_list cmb_list', 'options' => $options ), 'taxonomy_multicheck' ); + } + + public function taxonomy_multicheck_inline() { + $this->taxonomy_multicheck(); + } + + public function file_list() { + $meta_value = $this->field->escaped_value(); + + $name = $this->_name(); + + echo $this->input( array( + 'type' => 'hidden', + 'class' => 'cmb_upload_file cmb_upload_list', + 'size' => 45, 'desc' => '', 'value' => '', + ) ), + $this->input( array( + 'type' => 'button', + 'class' => 'cmb_upload_button button cmb_upload_list', + 'value' => __( 'Add or Upload File', 'fruitful' ), + 'name' => '', 'id' => '', + ) ); + + echo '
          '; + + if ( $meta_value && is_array( $meta_value ) ) { + + foreach ( $meta_value as $id => $fullurl ) { + $id_input = $this->input( array( + 'type' => 'hidden', + 'value' => $fullurl, + 'name' => $name .'['. $id .']', + 'id' => 'filelist-'. $id, + 'desc' => '', 'class' => '', + ) ); + + if ( $this->is_valid_img_ext( $fullurl ) ) { + echo + '
        • ', + wp_get_attachment_image( $id, $this->field->args( 'preview_size' ) ), + '

          '. __( 'Remove Image', 'fruitful' ) .'

          + '. $id_input .' +
        • '; + + } else { + $parts = explode( '/', $fullurl ); + for ( $i = 0; $i < count( $parts ); ++$i ) { + $title = $parts[$i]; + } + echo + '
        • ', + __( 'File:', 'fruitful' ), ' ', $title, '    ('. __( 'Download', 'fruitful' ) .' / '. __( 'Remove', 'fruitful' ) .') + '. $id_input .' +
        • '; + } + } + } + + echo '
        '; + } + + public function file() { + $meta_value = $this->field->escaped_value(); + $allow = $this->field->args( 'allow' ); + $input_type = ( 'url' == $allow || ( is_array( $allow ) && in_array( 'url', $allow ) ) ) + ? 'text' : 'hidden'; + + echo $this->input( array( + 'type' => $input_type, + 'class' => 'cmb_upload_file', + 'size' => 45, + 'desc' => '', + ) ), + '', + $this->_desc( true ); + + $cached_id = $this->_id(); + // Reset field args for attachment ID + $args = $this->field->args(); + $args['id'] = $args['_id'] . '_id'; + unset( $args['_id'], $args['_name'] ); + + // And get new field object + $this->field = new cmb_Meta_Box_field( $args, $this->field->group ); + + // Get ID value + $_id_value = $this->field->escaped_value( 'absint' ); + + // If there is no ID saved yet, try to get it from the url + if ( $meta_value && ! $_id_value ) { + $_id_value = cmb_Meta_Box::image_id_from_url( esc_url_raw( $meta_value ) ); + } + + echo $this->input( array( + 'type' => 'hidden', + 'class' => 'cmb_upload_file_id', + 'value' => $_id_value, + 'desc' => '', + ) ), + '
        '; + if ( ! empty( $meta_value ) ) { + + if ( $this->is_valid_img_ext( $meta_value ) ) { + echo '
        '; + echo ''; + echo '

        '. __( 'Remove Image', 'fruitful' ) .'

        '; + echo '
        '; + } else { + // $file_ext = $this->get_file_ext( $meta_value ); + $parts = explode( '/', $meta_value ); + for ( $i = 0; $i < count( $parts ); ++$i ) { + $title = $parts[$i]; + } + echo __( 'File:', 'fruitful' ), ' ', $title, '    ('. __( 'Download', 'fruitful' ) .' / '. __( 'Remove', 'fruitful' ) .')'; + } + } + echo '
        '; + } + + public function oembed() { + echo $this->input( array( + 'class' => 'cmb_oembed regular-text', + 'data-objectid' => $this->field->object_id, + 'data-objecttype' => $this->field->object_type + ) ), + '', + '
        '; + + if ( $meta_value = $this->field->escaped_value() ) { + echo cmb_Meta_Box_ajax::get_oembed( $meta_value, $this->field->object_id, array( + 'object_type' => $this->field->object_type, + 'oembed_args' => array( 'width' => '640' ), + 'field_id' => $this->_id(), + ) ); + } + + echo '
        '; + } + +} diff --git a/themes/fruitful/inc/metaboxes/images/arrow-down.png b/themes/fruitful/inc/metaboxes/images/arrow-down.png new file mode 100644 index 0000000..500ceb8 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/images/arrow-down.png differ diff --git a/themes/fruitful/inc/metaboxes/images/arrow-up.png b/themes/fruitful/inc/metaboxes/images/arrow-up.png new file mode 100644 index 0000000..a3e5d67 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/images/arrow-up.png differ diff --git a/themes/fruitful/inc/metaboxes/images/full.png b/themes/fruitful/inc/metaboxes/images/full.png new file mode 100644 index 0000000..807f0e6 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/images/full.png differ diff --git a/themes/fruitful/inc/metaboxes/images/ico-delete.png b/themes/fruitful/inc/metaboxes/images/ico-delete.png new file mode 100644 index 0000000..08f2493 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/images/ico-delete.png differ diff --git a/themes/fruitful/inc/metaboxes/images/left.png b/themes/fruitful/inc/metaboxes/images/left.png new file mode 100644 index 0000000..825a9a2 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/images/left.png differ diff --git a/themes/fruitful/inc/metaboxes/images/right.png b/themes/fruitful/inc/metaboxes/images/right.png new file mode 100644 index 0000000..4935838 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/images/right.png differ diff --git a/themes/fruitful/inc/metaboxes/images/ui-bg_flat_0_aaaaaa_40x100.png b/themes/fruitful/inc/metaboxes/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100644 index 0000000..5b5dab2 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/images/ui-bg_flat_0_aaaaaa_40x100.png differ diff --git a/themes/fruitful/inc/metaboxes/images/ui-bg_flat_75_ffffff_40x100.png b/themes/fruitful/inc/metaboxes/images/ui-bg_flat_75_ffffff_40x100.png new file mode 100644 index 0000000..ac8b229 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/images/ui-bg_flat_75_ffffff_40x100.png differ diff --git a/themes/fruitful/inc/metaboxes/images/ui-bg_glass_55_fbf9ee_1x400.png b/themes/fruitful/inc/metaboxes/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100644 index 0000000..ad3d634 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/images/ui-bg_glass_55_fbf9ee_1x400.png differ diff --git a/themes/fruitful/inc/metaboxes/images/ui-bg_glass_65_ffffff_1x400.png b/themes/fruitful/inc/metaboxes/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100644 index 0000000..42ccba2 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/images/ui-bg_glass_65_ffffff_1x400.png differ diff --git a/themes/fruitful/inc/metaboxes/images/ui-bg_glass_75_dadada_1x400.png b/themes/fruitful/inc/metaboxes/images/ui-bg_glass_75_dadada_1x400.png new file mode 100644 index 0000000..5a46b47 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/images/ui-bg_glass_75_dadada_1x400.png differ diff --git a/themes/fruitful/inc/metaboxes/images/ui-bg_glass_75_e6e6e6_1x400.png b/themes/fruitful/inc/metaboxes/images/ui-bg_glass_75_e6e6e6_1x400.png new file mode 100644 index 0000000..86c2baa Binary files /dev/null and b/themes/fruitful/inc/metaboxes/images/ui-bg_glass_75_e6e6e6_1x400.png differ diff --git a/themes/fruitful/inc/metaboxes/images/ui-bg_glass_95_fef1ec_1x400.png b/themes/fruitful/inc/metaboxes/images/ui-bg_glass_95_fef1ec_1x400.png new file mode 100644 index 0000000..4443fdc Binary files /dev/null and b/themes/fruitful/inc/metaboxes/images/ui-bg_glass_95_fef1ec_1x400.png differ diff --git a/themes/fruitful/inc/metaboxes/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/themes/fruitful/inc/metaboxes/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100644 index 0000000..7c9fa6c Binary files /dev/null and b/themes/fruitful/inc/metaboxes/images/ui-bg_highlight-soft_75_cccccc_1x100.png differ diff --git a/themes/fruitful/inc/metaboxes/images/ui-icons_222222_256x240.png b/themes/fruitful/inc/metaboxes/images/ui-icons_222222_256x240.png new file mode 100644 index 0000000..b273ff1 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/images/ui-icons_222222_256x240.png differ diff --git a/themes/fruitful/inc/metaboxes/images/ui-icons_2e83ff_256x240.png b/themes/fruitful/inc/metaboxes/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 0000000..09d1cdc Binary files /dev/null and b/themes/fruitful/inc/metaboxes/images/ui-icons_2e83ff_256x240.png differ diff --git a/themes/fruitful/inc/metaboxes/images/ui-icons_454545_256x240.png b/themes/fruitful/inc/metaboxes/images/ui-icons_454545_256x240.png new file mode 100644 index 0000000..59bd45b Binary files /dev/null and b/themes/fruitful/inc/metaboxes/images/ui-icons_454545_256x240.png differ diff --git a/themes/fruitful/inc/metaboxes/images/ui-icons_888888_256x240.png b/themes/fruitful/inc/metaboxes/images/ui-icons_888888_256x240.png new file mode 100644 index 0000000..b680b5c Binary files /dev/null and b/themes/fruitful/inc/metaboxes/images/ui-icons_888888_256x240.png differ diff --git a/themes/fruitful/inc/metaboxes/images/ui-icons_cd0a0a_256x240.png b/themes/fruitful/inc/metaboxes/images/ui-icons_cd0a0a_256x240.png new file mode 100644 index 0000000..2ab019b Binary files /dev/null and b/themes/fruitful/inc/metaboxes/images/ui-icons_cd0a0a_256x240.png differ diff --git a/themes/fruitful/inc/metaboxes/images/without-container.png b/themes/fruitful/inc/metaboxes/images/without-container.png new file mode 100644 index 0000000..ed82ca6 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/images/without-container.png differ diff --git a/themes/fruitful/inc/metaboxes/init-for-objestcs-mb.php b/themes/fruitful/inc/metaboxes/init-for-objestcs-mb.php new file mode 100644 index 0000000..437feac --- /dev/null +++ b/themes/fruitful/inc/metaboxes/init-for-objestcs-mb.php @@ -0,0 +1,96 @@ + 'fruitful_slider_settings', + 'title' => __( 'Slider settings', 'fruitful' ), + 'context' => 'normal', + 'priority' => 'low', + 'show_names' => true, + 'pages' => array( 'page'), + //'show_on' => array( 'key'=>'front-page', 'value' => '' ), + 'fields' => array( + array( + 'name' => __('Slider display', 'fruitful'), + 'id' => $prefix . 'slider_layout', + 'subname' => __('Select the option to display the corresponding slider', 'fruitful'), + 'std' => '0', + 'options' => array( + '0' => __('Disable slider', 'fruitful'), + '1' => __('Full width slider', 'fruitful'), + '2' => __('Boxed slider', 'fruitful'), + ), + 'type' => 'select' + ), + ), + ); + + // Only with sidebar enabled + $meta_boxes['fruitful_page_general_settings'] = array( + 'id' => 'fruitful_page_general_settings', + 'title' => __( 'Page settings', 'fruitful' ), + 'pages' => array( 'page'), + 'context' => 'normal', + 'priority' => 'low', + 'show_names' => true, + 'fields' => array( + array( + 'name' => __( 'Layout', 'fruitful' ), + 'subname' => __( 'Select a specific layout for this page.', 'fruitful' ), + 'id' => $prefix . 'page_layout', + 'type' => 'custom_layout_sidebars', + 'default' => '0' + ), + ), + ); + + + $meta_boxes['fruitful_post_general_settings'] = array( + 'id' => 'fruitful_post_general_settings', + 'title' => __( 'Post settings', 'fruitful' ), + 'pages' => array( 'post'), + 'context' => 'normal', + 'priority' => 'low', + 'show_names' => true, + 'fields' => array( + array( + 'name' => __( 'Layout', 'fruitful' ), + 'subname' => __( 'Select a specific layout for this post.', 'fruitful' ), + 'id' => $prefix . 'page_layout', + 'type' => 'custom_layout_sidebars', + 'default' => '0' + ), + ), + ); + + + return $meta_boxes; +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/init.php b/themes/fruitful/inc/metaboxes/init.php new file mode 100644 index 0000000..96ed5e7 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/init.php @@ -0,0 +1,1195 @@ + '', + 'title' => '', + 'type' => '', + 'pages' => array(), // Post type + 'context' => 'normal', + 'priority' => 'high', + 'show_names' => true, // Show field names on the left + 'show_on' => array( 'key' => false, 'value' => false ), // Specific post IDs or page templates to display this metabox + 'cmb_styles' => true, // Include cmb bundled stylesheet + 'fields' => array(), + ); + + /** + * Metabox Form ID + * @var string + * @since 0.9.4 + */ + protected $form_id = 'post'; + + /** + * Current field config array + * @var array + * @since 1.0.0 + */ + public static $field = array(); + + /** + * Object ID for metabox meta retrieving/saving + * @var int + * @since 1.0.0 + */ + protected static $object_id = 0; + + /** + * Type of object being saved. (e.g., post, user, or comment) + * @var string + * @since 1.0.0 + */ + protected static $object_type = ''; + + /** + * Whether scripts/styles have been enqueued yet + * @var bool + * @since 1.0.0 + */ + protected static $is_enqueued = false; + + /** + * Whether CMB nonce has been added to the page. (oly add once) + * @var bool + * @since 1.2.0 + */ + protected static $nonce_added = false; + + /** + * Type of object specified by the metabox Config + * @var string + * @since 1.0.0 + */ + protected static $mb_object_type = 'post'; + + /** + * Array of all options from manage-options metaboxes + * @var array + * @since 1.0.0 + */ + protected static $options = array(); + + /** + * List of fields that are changed/updated on save + * @var array + * @since 1.1.0 + */ + protected static $updated = array(); + + /** + * Get started + */ + function __construct( $meta_box ) { + + $meta_box = self::set_mb_defaults( $meta_box ); + + $allow_frontend = apply_filters( 'cmb_allow_frontend', true, $meta_box ); + + if ( ! is_admin() && ! $allow_frontend ) + return; + + $this->_meta_box = $meta_box; + + self::set_mb_type( $meta_box ); + + $types = wp_list_pluck( $meta_box['fields'], 'type' ); + $upload = in_array( 'file', $types ) || in_array( 'file_list', $types ); + + global $pagenow; + + $show_filters = 'cmb_Meta_Box_Show_Filters'; + foreach ( get_class_methods( $show_filters ) as $filter ) { + add_filter( 'cmb_show_on', array( $show_filters, $filter ), 10, 2 ); + } + + // register our scripts and styles for cmb + add_action( 'admin_enqueue_scripts', array( $this, 'register_scripts' ), 8 ); + + if ( self::get_object_type() == 'post' ) { + add_action( 'admin_menu', array( $this, 'add_metaboxes' ) ); + add_action( 'add_attachment', array( $this, 'save_post' ) ); + add_action( 'edit_attachment', array( $this, 'save_post' ) ); + add_action( 'save_post', array( $this, 'save_post' ), 10, 2 ); + add_action( 'admin_enqueue_scripts', array( $this, 'do_scripts' ) ); + + if ( $upload && in_array( $pagenow, array( 'page.php', 'page-new.php', 'post.php', 'post-new.php' ) ) ) { + add_action( 'admin_head', array( $this, 'add_post_enctype' ) ); + } + + } + if ( self::get_object_type() == 'user' ) { + + $priority = 10; + if ( isset( $meta_box['priority'] ) ) { + if ( is_numeric( $meta_box['priority'] ) ) + $priority = $meta_box['priority']; + elseif ( $meta_box['priority'] == 'high' ) + $priority = 5; + elseif ( $meta_box['priority'] == 'low' ) + $priority = 20; + } + add_action( 'show_user_profile', array( $this, 'user_metabox' ), $priority ); + add_action( 'edit_user_profile', array( $this, 'user_metabox' ), $priority ); + + add_action( 'personal_options_update', array( $this, 'save_user' ) ); + add_action( 'edit_user_profile_update', array( $this, 'save_user' ) ); + if ( $upload && in_array( $pagenow, array( 'profile.php', 'user-edit.php' ) ) ) { + $this->form_id = 'your-profile'; + add_action( 'admin_head', array( $this, 'add_post_enctype' ) ); + } + } + + } + + /** + * Autoloads files with classes when needed + * @since 1.0.0 + * @param string $class_name Name of the class being requested + */ + public static function autoload_helpers( $class_name ) { + if ( class_exists( $class_name, false ) ) + return; + + // for PHP versions < 5.3 + $dir = dirname( __FILE__ ); + + $file = "$dir/helpers/$class_name.php"; + if ( file_exists( $file ) ) + @include( $file ); + } + + /** + * Registers scripts and styles for CMB + * @since 1.0.0 + */ + public function register_scripts() { + + // Should only be run once + if ( self::$is_enqueued ) + return; + + global $wp_version; + // Only use minified files if SCRIPT_DEBUG is off + $min = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min'; + + // scripts required for cmb + $scripts = array( 'jquery', 'jquery-ui-core', 'cmb-datepicker', /*'media-upload', */'cmb-timepicker', 'cmb-check', 'cmb-select2', 'cmb-custom' ); + // styles required for cmb + $styles = array(); + + // if we're 3.5 or later, user wp-color-picker + if ( 3.5 <= $wp_version ) { + $scripts[] = 'wp-color-picker'; + $styles[] = 'wp-color-picker'; + if ( ! is_admin() ) { + // we need to register colorpicker on the front-end + wp_register_script( 'iris', admin_url( 'js/iris.min.js' ), array( 'jquery-ui-draggable', 'jquery-ui-slider', 'jquery-touch-punch' ), self::CMB_VERSION ); + wp_register_script( 'wp-color-picker', admin_url( 'js/color-picker.min.js' ), array( 'iris' ), self::CMB_VERSION ); + wp_localize_script( 'wp-color-picker', 'wpColorPickerL10n', array( + 'clear' => __( 'Clear', 'fruitful'), + 'defaultString' => __( 'Default', 'fruitful'), + 'pick' => __( 'Select Color', 'fruitful'), + 'current' => __( 'Current Color', 'fruitful'), + ) ); + } + } else { + // otherwise use the older 'farbtastic' + $scripts[] = 'farbtastic'; + $styles[] = 'farbtastic'; + } + wp_register_script( 'cmb-datepicker', CMB_META_BOX_URL . 'js/jquery.datePicker.min.js' ); + wp_register_script( 'cmb-timepicker', CMB_META_BOX_URL . 'js/jquery.timePicker.min.js' ); + wp_register_script( 'cmb-scripts', CMB_META_BOX_URL .'js/cmb'. $min .'.js', $scripts, self::CMB_VERSION ); + wp_register_script( 'cmb-check', CMB_META_BOX_URL . 'js/check/icheck.min.js' ); + wp_register_script( 'cmb-select2', CMB_META_BOX_URL . 'js/select2/select2.min.js' ); + wp_register_script( 'cmb-scripts', CMB_META_BOX_URL . 'js/cmb'. $min .'.js', $scripts, self::CMB_VERSION ); + wp_register_script( 'cmb-custom', CMB_META_BOX_URL . 'js/custom.js' ); + + + wp_enqueue_media(); + + wp_localize_script( 'cmb-scripts', 'cmb_l10', apply_filters( 'cmb_localized_data', array( + 'ajax_nonce' => wp_create_nonce( 'ajax_nonce' ), + 'script_debug' => defined('SCRIPT_DEBUG') && SCRIPT_DEBUG, + 'new_admin_style' => version_compare( $wp_version, '3.7', '>' ), + 'object_type' => self::get_object_type(), + 'upload_file' => 'Use this file', + 'remove_image' => 'Remove Image', + 'remove_file' => 'Remove', + 'file' => 'File:', + 'download' => 'Download', + 'ajaxurl' => admin_url( '/admin-ajax.php' ), + 'up_arrow' => '', + 'down_arrow' => '', + 'check_toggle' => __( 'Select / Deselect All', 'fruitful' ), + ) ) ); + + wp_register_style( 'cmb-check', CMB_META_BOX_URL . 'js/check/skins/minimal/_all.css'); + wp_register_style( 'cmb-select2', CMB_META_BOX_URL . 'js/select2/select2.css'); + wp_register_style( 'cmb-styles', CMB_META_BOX_URL . 'style'. $min .'.css', $styles ); + + // Ok, we've enqueued our scripts/styles + self::$is_enqueued = true; + } + + /** + * Enqueues scripts and styles for CMB + * @since 1.0.0 + */ + public function do_scripts( $hook ) { + // only enqueue our scripts/styles on the proper pages + if ( $hook == 'post.php' || $hook == 'post-new.php' || $hook == 'page-new.php' || $hook == 'page.php' ) { + wp_enqueue_script( 'cmb-scripts' ); + + // default is to show cmb styles on post pages + if ( $this->_meta_box['cmb_styles'] ) { + wp_enqueue_style( 'cmb-select2'); + wp_enqueue_style( 'cmb-check' ); + wp_enqueue_style( 'cmb-styles' ); + } + } + } + + /** + * Add encoding attribute + */ + public function add_post_enctype() { + echo ' + '; + } + + /** + * Add metaboxes (to 'post' object type) + */ + public function add_metaboxes() { + + foreach ( $this->_meta_box['pages'] as $page ) { + if ( apply_filters( 'cmb_show_on', true, $this->_meta_box ) ) + add_meta_box( $this->_meta_box['id'], $this->_meta_box['title'], array( $this, 'post_metabox' ), $page, $this->_meta_box['context'], $this->_meta_box['priority']) ; + } + } + + /** + * Display metaboxes for a post object + * @since 1.0.0 + */ + public function post_metabox() { + if ( ! $this->_meta_box ) + return; + + self::show_form( $this->_meta_box, get_the_ID(), 'post' ); + + } + + /** + * Display metaboxes for a user object + * @since 1.0.0 + */ + public function user_metabox() { + if ( ! $this->_meta_box ) + return; + + if ( 'user' != self::set_mb_type( $this->_meta_box ) ) + return; + + if ( ! apply_filters( 'cmb_show_on', true, $this->_meta_box ) ) + return; + + wp_enqueue_script( 'cmb-scripts' ); + + // default is to NOT show cmb styles on user profile page + if ( $this->_meta_box['cmb_styles'] != false ) + wp_enqueue_style( 'cmb-styles' ); + + self::show_form( $this->_meta_box ); + + } + + /** + * Loops through and displays fields + * @since 1.0.0 + * @param array $meta_box Metabox config array + * @param int $object_id Object ID + * @param string $object_type Type of object being saved. (e.g., post, user, or comment) + */ + public static function show_form( $meta_box, $object_id = 0, $object_type = '' ) { + $meta_box = self::set_mb_defaults( $meta_box ); + // Set/get type + $object_type = self::set_object_type( $object_type ? $object_type : self::set_mb_type( $meta_box ) ); + // Set/get ID + $object_id = self::set_object_id( $object_id ? $object_id : self::get_object_id() ); + + // Add nonce only once per page. + if ( ! self::$nonce_added ) { + wp_nonce_field( self::nonce(), 'wp_meta_box_nonce', false, true ); + self::$nonce_added = true; + } + + // Use nonce for verification + echo "\n\n"; + do_action( 'cmb_before_table', $meta_box, $object_id, $object_type ); + echo ''; + + foreach ( $meta_box['fields'] as $field_args ) { + + $field_args['context'] = $meta_box['context']; + + if ( 'group' == $field_args['type'] ) { + + if ( ! isset( $field_args['show_names'] ) ) { + $field_args['show_names'] = $meta_box['show_names']; + } + self::render_group( $field_args ); + } else { + + $field_args['show_names'] = $meta_box['show_names']; + // Render default fields + $field = new cmb_Meta_Box_field( $field_args ); + $field->render_field(); + } + } + echo '
        '; + do_action( 'cmb_after_table', $meta_box, $object_id, $object_type ); + echo "\n\n"; + + } + + /** + * Render a repeatable group + */ + public static function render_group( $args ) { + if ( ! isset( $args['id'], $args['fields'] ) || ! is_array( $args['fields'] ) ) + return; + + $args['count'] = 0; + $field_group = new cmb_Meta_Box_field( $args ); + $desc = $field_group->args( 'description' ); + $label = $field_group->args( 'name' ); + $sortable = $field_group->options( 'sortable' ) ? ' sortable' : ''; + $group_val = (array) $field_group->value(); + $nrows = count( $group_val ); + $remove_disabled = $nrows <= 1 ? 'disabled="disabled" ' : ''; + + echo ''; + if ( $desc || $label ) { + echo ''; + } + + if ( ! empty( $group_val ) ) { + + foreach ( $group_val as $iterator => $field_id ) { + self::render_group_row( $field_group, $remove_disabled ); + } + } else { + self::render_group_row( $field_group, $remove_disabled ); + } + + echo ''; + + echo '
        '; + if ( $label ) + echo '

        '. $label .'

        '; + if ( $desc ) + echo '

        '. $desc .'

        '; + echo '

        '; + + } + + public static function render_group_row( $field_group, $remove_disabled ) { + + echo ' + + + '; + if ( $field_group->options( 'group_title' ) ) { + echo ' + + + '; + } + // Render repeatable group fields + foreach ( array_values( $field_group->args( 'fields' ) ) as $field_args ) { + $field_args['show_names'] = $field_group->args( 'show_names' ); + $field_args['context'] = $field_group->args( 'context' ); + $field = new cmb_Meta_Box_field( $field_args, $field_group ); + $field->render_field(); + } + echo ' + + + +
        + ', sprintf( '

        %1$s

        ', $field_group->replace_hash( $field_group->options( 'group_title' ) ) ), ' +
        +
        + +
        + + + '; + + $field_group->args['count']++; + } + + /** + * Save data from metabox + */ + public function save_post( $post_id, $post = false ) { + + $post_type = $post ? $post->post_type : get_post_type( $post_id ); + + // check permissions + if ( + // check nonce + ! isset( $_POST['wp_meta_box_nonce'] ) + || ! wp_verify_nonce( $_POST['wp_meta_box_nonce'], self::nonce() ) + // check if autosave + || defined('DOING_AUTOSAVE' ) && DOING_AUTOSAVE + // check user editing permissions + || ( 'page' == $_POST['post_type'] && ! current_user_can( 'edit_page', $post_id ) ) + || ! current_user_can( 'edit_post', $post_id ) + // get the metabox post_types & compare it to this post_type + || ! in_array( $post_type, $this->_meta_box['pages'] ) + ) + return $post_id; + + self::save_fields( $this->_meta_box, $post_id, 'post' ); + } + + /** + * Save data from metabox + */ + public function save_user( $user_id ) { + + // check permissions + // @todo more hardening? + if ( + // check nonce + ! isset( $_POST['wp_meta_box_nonce'] ) + || ! wp_verify_nonce( $_POST['wp_meta_box_nonce'], self::nonce() ) + ) + return $user_id; + + self::save_fields( $this->_meta_box, $user_id, 'user' ); + } + + /** + * Loops through and saves field data + * @since 1.0.0 + * @param array $meta_box Metabox config array + * @param int $object_id Object ID + * @param string $object_type Type of object being saved. (e.g., post, user, or comment) + */ + public static function save_fields( $meta_box, $object_id, $object_type = '' ) { + $meta_box = self::set_mb_defaults( $meta_box ); + + $meta_box['show_on'] = empty( $meta_box['show_on'] ) ? array( 'key' => false, 'value' => false ) : $meta_box['show_on']; + + self::set_object_id( $object_id ); + // Set/get type + $object_type = self::set_object_type( $object_type ? $object_type : self::set_mb_type( $meta_box ) ); + + if ( ! apply_filters( 'cmb_show_on', true, $meta_box ) ) + return; + + // save field ids of those that are updated + self::$updated = array(); + + foreach ( $meta_box['fields'] as $field_args ) { + + if ( 'group' == $field_args['type'] ) { + self::save_group( $field_args ); + } else { + // Save default fields + $field = new cmb_Meta_Box_field( $field_args ); + self::save_field( self::sanitize_field( $field ), $field ); + } + + } + + // If options page, save the updated options + if ( $object_type == 'options-page' ) + self::save_option( $object_id ); + + do_action( "cmb_save_{$object_type}_fields", $object_id, $meta_box['id'], self::$updated, $meta_box ); + + } + + /** + * Save a repeatable group + */ + public static function save_group( $args ) { + if ( ! isset( $args['id'], $args['fields'], $_POST[ $args['id'] ] ) || ! is_array( $args['fields'] ) ) + return; + + $field_group = new cmb_Meta_Box_field( $args ); + $base_id = $field_group->id(); + $old = $field_group->get_data(); + $group_vals = $_POST[ $base_id ]; + $saved = array(); + $is_updated = false; + $field_group->index = 0; + + // $group_vals[0]['color'] = '333'; + foreach ( array_values( $field_group->fields() ) as $field_args ) { + $field = new cmb_Meta_Box_field( $field_args, $field_group ); + $sub_id = $field->id( true ); + + foreach ( (array) $group_vals as $field_group->index => $post_vals ) { + + // Get value + $new_val = isset( $group_vals[ $field_group->index ][ $sub_id ] ) + ? $group_vals[ $field_group->index ][ $sub_id ] + : false; + + // Sanitize + $new_val = self::sanitize_field( $field, $new_val, $field_group->index ); + + if ( 'file' == $field->type() && is_array( $new_val ) ) { + // Add image ID to the array stack + $saved[ $field_group->index ][ $new_val['field_id'] ] = $new_val['attach_id']; + // Reset var to url string + $new_val = $new_val['url']; + } + + // Get old value + $old_val = is_array( $old ) && isset( $old[ $field_group->index ][ $sub_id ] ) + ? $old[ $field_group->index ][ $sub_id ] + : false; + + $is_updated = ( ! empty( $new_val ) && $new_val != $old_val ); + $is_removed = ( empty( $new_val ) && ! empty( $old_val ) ); + // Compare values and add to `$updated` array + if ( $is_updated || $is_removed ) + self::$updated[] = $base_id .'::'. $field_group->index .'::'. $sub_id; + + // Add to `$saved` array + $saved[ $field_group->index ][ $sub_id ] = $new_val; + + } + $saved[ $field_group->index ] = array_filter( $saved[ $field_group->index ] ); + } + $saved = array_filter( $saved ); + + $field_group->update_data( $saved, true ); + } + + public static function sanitize_field( $field, $new_value = null ) { + + $new_value = null !== $new_value + ? $new_value + : ( isset( $_POST[ $field->id( true ) ] ) ? $_POST[ $field->id( true ) ] : null ); + + if ( $field->args( 'repeatable' ) && is_array( $new_value ) ) { + // Remove empties + $new_value = array_filter( $new_value ); + } + + // Check if this metabox field has a registered validation callback, or perform default sanitization + return $field->sanitization_cb( $new_value ); + } + + public static function save_field( $new_value, $field ) { + $name = $field->id(); + $old = $field->get_data(); + + // if ( $field->args( 'multiple' ) && ! $field->args( 'repeatable' ) && ! $field->group ) { + // $field->remove_data(); + // if ( ! empty( $new_value ) ) { + // foreach ( $new_value as $add_new ) { + // self::$updated[] = $name; + // $field->update_data( $add_new, $name, false ); + // } + // } + // } else + if ( ! empty( $new_value ) && $new_value != $old ) { + self::$updated[] = $name; + return $field->update_data( $new_value ); + } elseif ( empty( $new_value ) ) { + if ( ! empty( $old ) ) + self::$updated[] = $name; + return $field->remove_data(); + } + } + + /** + * Get object id from global space if no id is provided + * @since 1.0.0 + * @param integer $object_id Object ID + * @return integer $object_id Object ID + */ + public static function get_object_id( $object_id = 0 ) { + + if ( $object_id ) + return $object_id; + + if ( self::$object_id ) + return self::$object_id; + + // Try to get our object ID from the global space + switch ( self::get_object_type() ) { + case 'user': + $object_id = isset( $GLOBALS['user_ID'] ) ? $GLOBALS['user_ID'] : $object_id; + $object_id = isset( $_REQUEST['user_id'] ) ? $_REQUEST['user_id'] : $object_id; + break; + + default: + $object_id = isset( $GLOBALS['post']->ID ) ? $GLOBALS['post']->ID : $object_id; + $object_id = isset( $_REQUEST['post'] ) ? $_REQUEST['post'] : $object_id; + break; + } + + // reset to id or 0 + self::set_object_id( $object_id ? $object_id : 0 ); + + return self::$object_id; + } + + /** + * Explicitly Set object id + * @since 1.0.0 + * @param integer $object_id Object ID + * @return integer $object_id Object ID + */ + public static function set_object_id( $object_id ) { + return self::$object_id = $object_id; + } + + /** + * Sets the $object_type based on metabox settings + * @since 1.0.0 + * @param array|string $meta_box Metabox config array or explicit setting + * @return string Object type + */ + public static function set_mb_type( $meta_box ) { + + if ( is_string( $meta_box ) ) { + self::$mb_object_type = $meta_box; + return self::get_mb_type(); + } + + if ( ! isset( $meta_box['pages'] ) ) + return self::get_mb_type(); + + $type = false; + // check if 'pages' is a string + if ( self::is_options_page_mb( $meta_box ) ) + $type = 'options-page'; + // check if 'pages' is a string + elseif ( is_string( $meta_box['pages'] ) ) + $type = $meta_box['pages']; + // if it's an array of one, extract it + elseif ( is_array( $meta_box['pages'] ) && count( $meta_box['pages'] === 1 ) ) + $type = is_string( end( $meta_box['pages'] ) ) ? end( $meta_box['pages'] ) : false; + + if ( !$type ) + return self::get_mb_type(); + + // Get our object type + if ( 'user' == $type ) + self::$mb_object_type = 'user'; + elseif ( 'comment' == $type ) + self::$mb_object_type = 'comment'; + elseif ( 'options-page' == $type ) + self::$mb_object_type = 'options-page'; + else + self::$mb_object_type = 'post'; + + return self::get_mb_type(); + } + + /** + * Determines if metabox is for an options page + * @since 1.0.1 + * @param array $meta_box Metabox config array + * @return boolean True/False + */ + public static function is_options_page_mb( $meta_box ) { + return ( isset( $meta_box['show_on']['key'] ) && 'options-page' === $meta_box['show_on']['key'] ); + } + + /** + * Returns the object type + * @since 1.0.0 + * @return string Object type + */ + public static function get_object_type() { + if ( self::$object_type ) + return self::$object_type; + + global $pagenow; + + if ( + $pagenow == 'user-edit.php' + || $pagenow == 'profile.php' + ) + self::set_object_type( 'user' ); + + elseif ( + $pagenow == 'edit-comments.php' + || $pagenow == 'comment.php' + ) + self::set_object_type( 'comment' ); + else + self::set_object_type( 'post' ); + + return self::$object_type; + } + + /** + * Sets the object type + * @since 1.0.0 + * @return string Object type + */ + public static function set_object_type( $object_type ) { + return self::$object_type = $object_type; + } + + /** + * Returns the object type + * @since 1.0.0 + * @return string Object type + */ + public static function get_mb_type() { + return self::$mb_object_type; + } + + /** + * Returns the nonce value for wp_meta_box_nonce + * @since 1.0.0 + * @return string Nonce value + */ + public static function nonce() { + return basename( __FILE__ ); + } + + /** + * Defines the url which is used to load local resources. + * This may need to be filtered for local Window installations. + * If resources do not load, please check the wiki for details. + * @since 1.0.1 + * @return string URL to CMB resources + */ + public static function get_meta_box_url() { + + if ( strtoupper( substr( PHP_OS, 0, 3 ) ) === 'WIN' ) { + // Windows + $content_dir = str_replace( '/', DIRECTORY_SEPARATOR, WP_CONTENT_DIR ); + $content_url = str_replace( $content_dir, WP_CONTENT_URL, dirname(__FILE__) ); + $cmb_url = str_replace( DIRECTORY_SEPARATOR, '/', $content_url ); + + } else { + $cmb_url = str_replace( + array(WP_CONTENT_DIR, WP_PLUGIN_DIR), + array(WP_CONTENT_URL, WP_PLUGIN_URL), + dirname( __FILE__ ) + ); + } + + return trailingslashit( apply_filters('cmb_meta_box_url', $cmb_url ) ); + } + + /** + * Fills in empty metabox parameters with defaults + * @since 1.0.1 + * @param array $meta_box Metabox config array + * @return array Modified Metabox config array + */ + public static function set_mb_defaults( $meta_box ) { + return wp_parse_args( $meta_box, self::$mb_defaults ); + } + + /** + * Removes an option from an option array + * @since 1.0.1 + * @param string $option_key Option key + * @param string $field_id Option array field key + * @return array Modified options + */ + public static function remove_option( $option_key, $field_id ) { + + self::$options[ $option_key ] = ! isset( self::$options[ $option_key ] ) || empty( self::$options[ $option_key ] ) ? self::_get_option( $option_key ) : self::$options[ $option_key ]; + + if ( isset( self::$options[ $option_key ][ $field_id ] ) ) + unset( self::$options[ $option_key ][ $field_id ] ); + + return self::$options[ $option_key ]; + } + + /** + * Retrieves an option from an option array + * @since 1.0.1 + * @param string $option_key Option key + * @param string $field_id Option array field key + * @return array Options array or specific field + */ + public static function get_option( $option_key, $field_id = '' ) { + + self::$options[ $option_key ] = ! isset( self::$options[ $option_key ] ) || empty( self::$options[ $option_key ] ) ? self::_get_option( $option_key ) : self::$options[ $option_key ]; + + if ( $field_id ) { + return isset( self::$options[ $option_key ][ $field_id ] ) ? self::$options[ $option_key ][ $field_id ] : false; + } + + return self::$options[ $option_key ]; + } + + /** + * Updates Option data + * @since 1.0.1 + * @param string $option_key Option key + * @param string $field_id Option array field key + * @param mixed $value Value to update data with + * @param bool $single Whether data should be an array + * @return array Modified options + */ + public static function update_option( $option_key, $field_id, $value, $single = true ) { + + if ( ! $single ) { + // If multiple, add to array + self::$options[ $option_key ][ $field_id ][] = $value; + } else { + self::$options[ $option_key ][ $field_id ] = $value; + } + + return self::$options[ $option_key ]; + } + + /** + * Retrieve option value based on name of option. + * @uses apply_filters() Calls 'cmb_override_option_get_$option_key' hook to allow + * overwriting the option value to be retrieved. + * + * @since 1.0.1 + * @param string $option Name of option to retrieve. Expected to not be SQL-escaped. + * @param mixed $default Optional. Default value to return if the option does not exist. + * @return mixed Value set for the option. + */ + public static function _get_option( $option_key, $default = false ) { + + $test_get = apply_filters( "cmb_override_option_get_$option_key", 'cmb_no_override_option_get', $default ); + + if ( $test_get !== 'cmb_no_override_option_get' ) + return $test_get; + + // If no override, get the option + return get_option( $option_key, $default ); + } + + /** + * Saves the option array + * Needs to be run after finished using remove/update_option + * @uses apply_filters() Calls 'cmb_override_option_save_$option_key' hook to allow + * overwriting the option value to be stored. + * + * @since 1.0.1 + * @param string $option_key Option key + * @return boolean Success/Failure + */ + public static function save_option( $option_key ) { + + $to_save = self::get_option( $option_key ); + + $test_save = apply_filters( "cmb_override_option_save_$option_key", 'cmb_no_override_option_save', $to_save ); + + if ( $test_save !== 'cmb_no_override_option_save' ) + return $test_save; + + // If no override, update the option + return update_option( $option_key, $to_save ); + } + + /** + * Utility method that returns a timezone string representing the default timezone for the site. + * + * Roughly copied from WordPress, as get_option('timezone_string') will return + * and empty string if no value has beens set on the options page. + * A timezone string is required by the wp_timezone_choice() used by the + * select_timezone field. + * + * @since 1.0.0 + * @return string Timezone string + */ + public static function timezone_string() { + $current_offset = get_option( 'gmt_offset' ); + $tzstring = get_option( 'timezone_string' ); + + if ( empty( $tzstring ) ) { // Create a UTC+- zone if no timezone string exists + if ( 0 == $current_offset ) + $tzstring = 'UTC+0'; + elseif ( $current_offset < 0 ) + $tzstring = 'UTC' . $current_offset; + else + $tzstring = 'UTC+' . $current_offset; + } + + return $tzstring; + } + + /** + * Utility method that returns time string offset by timezone + * @since 1.0.0 + * @param string $tzstring Time string + * @return string Offset time string + */ + public static function timezone_offset( $tzstring ) { + if ( ! empty( $tzstring ) && is_string( $tzstring ) ) { + if ( substr( $tzstring, 0, 3 ) === 'UTC' ) { + $tzstring = str_replace( array( ':15',':30',':45' ), array( '.25','.5','.75' ), $tzstring ); + return intval( floatval( substr( $tzstring, 3 ) ) * HOUR_IN_SECONDS ); + } + + $date_time_zone_selected = new DateTimeZone( $tzstring ); + $tz_offset = timezone_offset_get( $date_time_zone_selected, date_create() ); + + return $tz_offset; + } + + return 0; + } + + /** + * Utility method that attempts to get an attachment's ID by it's url + * @since 1.0.0 + * @param string $img_url Attachment url + * @return mixed Attachment ID or false + */ + public static function image_id_from_url( $img_url ) { + global $wpdb; + + $img_url = esc_url_raw( $img_url ); + // Get just the file name + if ( false !== strpos( $img_url, '/' ) ) { + $explode = explode( '/', $img_url ); + $img_url = end( $explode ); + } + + // And search for a fuzzy match of the file name + $attachment = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE guid LIKE '%%%s%%' LIMIT 1;", $img_url ) ); + + // If we found an attachement ID, return it + if ( !empty( $attachment ) && is_array( $attachment ) ) + return $attachment[0]; + + // No luck + return false; + } + +} + +// Handle oembed Ajax +add_action( 'wp_ajax_cmb_oembed_handler', array( 'cmb_Meta_Box_ajax', 'oembed_handler' ) ); +add_action( 'wp_ajax_nopriv_cmb_oembed_handler', array( 'cmb_Meta_Box_ajax', 'oembed_handler' ) ); + +/** + * A helper function to get an option from a CMB options array + * @since 1.0.1 + * @param string $option_key Option key + * @param string $field_id Option array field key + * @return array Options array or specific field + */ +function cmb_get_option( $option_key, $field_id = '' ) { + return cmb_Meta_Box::get_option( $option_key, $field_id ); +} + +/** + * Get a CMB field object. + * @since 1.1.0 + * @param array $field_args Field arguments + * @param int $object_id Object ID + * @param string $object_type Type of object being saved. (e.g., post, user, or comment) + * @return object cmb_Meta_Box_field object + */ +function cmb_get_field( $field_args, $object_id = 0, $object_type = 'post' ) { + // Default to the loop post ID + $object_id = $object_id ? $object_id : get_the_ID(); + cmb_Meta_Box::set_object_id( $object_id ); + cmb_Meta_Box::set_object_type( $object_type ); + // Send back field object + return new cmb_Meta_Box_field( $field_args ); +} + +/** + * Get a field's value. + * @since 1.1.0 + * @param array $field_args Field arguments + * @param int $object_id Object ID + * @param string $object_type Type of object being saved. (e.g., post, user, comment, or options-page) + * @return mixed Maybe escaped value + */ +function cmb_get_field_value( $field_args, $object_id = 0, $object_type = 'post' ) { + $field = cmb_get_field( $field_args, $object_id, $object_type ); + return $field->escaped_value(); +} + +/** + * Loop and output multiple metaboxes + * @since 1.0.0 + * @param array $meta_boxes Metaboxes config array + * @param int $object_id Object ID + */ +function cmb_print_metaboxes( $meta_boxes, $object_id ) { + foreach ( (array) $meta_boxes as $meta_box ) { + cmb_print_metabox( $meta_box, $object_id ); + } +} + +/** + * Output a metabox + * @since 1.0.0 + * @param array $meta_box Metabox config array + * @param int $object_id Object ID + */ +function cmb_print_metabox( $meta_box, $object_id ) { + $cmb = new cmb_Meta_Box( $meta_box ); + if ( $cmb ) { + + cmb_Meta_Box::set_object_id( $object_id ); + + if ( ! wp_script_is( 'cmb-scripts', 'registered' ) ) + $cmb->register_scripts(); + + wp_enqueue_script( 'cmb-scripts' ); + + // default is to show cmb styles + if ( $meta_box['cmb_styles'] != false ) + wp_enqueue_style( 'cmb-styles' ); + + cmb_Meta_Box::show_form( $meta_box ); + } + +} + +/** + * Saves a particular metabox's fields + * @since 1.0.0 + * @param array $meta_box Metabox config array + * @param int $object_id Object ID + */ +function cmb_save_metabox_fields( $meta_box, $object_id ) { + cmb_Meta_Box::save_fields( $meta_box, $object_id ); +} + +/** + * Display a metabox form & save it on submission + * @since 1.0.0 + * @param array $meta_box Metabox config array + * @param int $object_id Object ID + * @param boolean $return Whether to return or echo form + * @return string CMB html form markup + */ +function cmb_metabox_form( $meta_box, $object_id, $echo = true ) { + + $meta_box = cmb_Meta_Box::set_mb_defaults( $meta_box ); + + // Make sure form should be shown + if ( ! apply_filters( 'cmb_show_on', true, $meta_box ) ) + return ''; + + // Make sure that our object type is explicitly set by the metabox config + cmb_Meta_Box::set_object_type( cmb_Meta_Box::set_mb_type( $meta_box ) ); + + // Save the metabox if it's been submitted + // check permissions + // @todo more hardening? + if ( + // check nonce + isset( $_POST['submit-cmb'], $_POST['object_id'], $_POST['wp_meta_box_nonce'] ) + && wp_verify_nonce( $_POST['wp_meta_box_nonce'], cmb_Meta_Box::nonce() ) + && $_POST['object_id'] == $object_id + ) + cmb_save_metabox_fields( $meta_box, $object_id ); + + // Show specific metabox form + + // Get cmb form + ob_start(); + cmb_print_metabox( $meta_box, $object_id ); + $form = ob_get_contents(); + ob_end_clean(); + + $form_format = apply_filters( 'cmb_frontend_form_format', '
        %s
        ', $object_id, $meta_box, $form ); + + $form = sprintf( $form_format, $meta_box['id'], $object_id, $form, __( 'Save', 'fruitful') ); + + if ( $echo ) + echo $form; + + return $form; +} + +// End. That's it, folks! // diff --git a/themes/fruitful/inc/metaboxes/js/check/icheck.js b/themes/fruitful/inc/metaboxes/js/check/icheck.js new file mode 100644 index 0000000..51c3e80 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/icheck.js @@ -0,0 +1,509 @@ +/*! + * iCheck v1.0.2, http://git.io/arlzeA + * =================================== + * Powerful jQuery and Zepto plugin for checkboxes and radio buttons customization + * + * (c) 2013 Damir Sultanov, http://fronteed.com + * MIT Licensed + */ + +(function($) { + + // Cached vars + var _iCheck = 'iCheck', + _iCheckHelper = _iCheck + '-helper', + _checkbox = 'checkbox', + _radio = 'radio', + _checked = 'checked', + _unchecked = 'un' + _checked, + _disabled = 'disabled',a + _determinate = 'determinate', + _indeterminate = 'in' + _determinate, + _update = 'update', + _type = 'type', + _click = 'click', + _touch = 'touchbegin.i touchend.i', + _add = 'addClass', + _remove = 'removeClass', + _callback = 'trigger', + _label = 'label', + _cursor = 'cursor', + _mobile = /ipad|iphone|ipod|android|blackberry|windows phone|opera mini|silk/i.test(navigator.userAgent); + + // Plugin init + $.fn[_iCheck] = function(options, fire) { + + // Walker + var handle = 'input[type="' + _checkbox + '"], input[type="' + _radio + '"]', + stack = $(), + walker = function(object) { + object.each(function() { + var self = $(this); + + if (self.is(handle)) { + stack = stack.add(self); + } else { + stack = stack.add(self.find(handle)); + } + }); + }; + + // Check if we should operate with some method + if (/^(check|uncheck|toggle|indeterminate|determinate|disable|enable|update|destroy)$/i.test(options)) { + + // Normalize method's name + options = options.toLowerCase(); + + // Find checkboxes and radio buttons + walker(this); + + return stack.each(function() { + var self = $(this); + + if (options == 'destroy') { + tidy(self, 'ifDestroyed'); + } else { + operate(self, true, options); + } + + // Fire method's callback + if ($.isFunction(fire)) { + fire(); + } + }); + + // Customization + } else if (typeof options == 'object' || !options) { + + // Check if any options were passed + var settings = $.extend({ + checkedClass: _checked, + disabledClass: _disabled, + indeterminateClass: _indeterminate, + labelHover: true + }, options), + + selector = settings.handle, + hoverClass = settings.hoverClass || 'hover', + focusClass = settings.focusClass || 'focus', + activeClass = settings.activeClass || 'active', + labelHover = !!settings.labelHover, + labelHoverClass = settings.labelHoverClass || 'hover', + + // Setup clickable area + area = ('' + settings.increaseArea).replace('%', '') | 0; + + // Selector limit + if (selector == _checkbox || selector == _radio) { + handle = 'input[type="' + selector + '"]'; + } + + // Clickable area limit + if (area < -50) { + area = -50; + } + + // Walk around the selector + walker(this); + + return stack.each(function() { + var self = $(this); + + // If already customized + tidy(self); + + var node = this, + id = node.id, + + // Layer styles + offset = -area + '%', + size = 100 + (area * 2) + '%', + layer = { + position: 'absolute', + top: offset, + left: offset, + display: 'block', + width: size, + height: size, + margin: 0, + padding: 0, + background: '#fff', + border: 0, + opacity: 0 + }, + + // Choose how to hide input + hide = _mobile ? { + position: 'absolute', + visibility: 'hidden' + } : area ? layer : { + position: 'absolute', + opacity: 0 + }, + + // Get proper class + className = node[_type] == _checkbox ? settings.checkboxClass || 'i' + _checkbox : settings.radioClass || 'i' + _radio, + + // Find assigned labels + label = $(_label + '[for="' + id + '"]').add(self.closest(_label)), + + // Check ARIA option + aria = !!settings.aria, + + // Set ARIA placeholder + ariaID = _iCheck + '-' + Math.random().toString(36).substr(2,6), + + // Parent & helper + parent = '
        ')[_callback]('ifCreated').parent().append(settings.insert); + + // Layer addition + helper = $('').css(layer).appendTo(parent); + + // Finalize customization + self.data(_iCheck, {o: settings, s: self.attr('style')}).css(hide); + !!settings.inheritClass && parent[_add](node.className || ''); + !!settings.inheritID && id && parent.attr('id', _iCheck + '-' + id); + parent.css('position') == 'static' && parent.css('position', 'relative'); + operate(self, true, _update); + + // Label events + if (label.length) { + label.on(_click + '.i mouseover.i mouseout.i ' + _touch, function(event) { + var type = event[_type], + item = $(this); + + // Do nothing if input is disabled + if (!node[_disabled]) { + + // Click + if (type == _click) { + if ($(event.target).is('a')) { + return; + } + operate(self, false, true); + + // Hover state + } else if (labelHover) { + + // mouseout|touchend + if (/ut|nd/.test(type)) { + parent[_remove](hoverClass); + item[_remove](labelHoverClass); + } else { + parent[_add](hoverClass); + item[_add](labelHoverClass); + } + } + + if (_mobile) { + event.stopPropagation(); + } else { + return false; + } + } + }); + } + + // Input events + self.on(_click + '.i focus.i blur.i keyup.i keydown.i keypress.i', function(event) { + var type = event[_type], + key = event.keyCode; + + // Click + if (type == _click) { + return false; + + // Keydown + } else if (type == 'keydown' && key == 32) { + if (!(node[_type] == _radio && node[_checked])) { + if (node[_checked]) { + off(self, _checked); + } else { + on(self, _checked); + } + } + + return false; + + // Keyup + } else if (type == 'keyup' && node[_type] == _radio) { + !node[_checked] && on(self, _checked); + + // Focus/blur + } else if (/us|ur/.test(type)) { + parent[type == 'blur' ? _remove : _add](focusClass); + } + }); + + // Helper events + helper.on(_click + ' mousedown mouseup mouseover mouseout ' + _touch, function(event) { + var type = event[_type], + + // mousedown|mouseup + toggle = /wn|up/.test(type) ? activeClass : hoverClass; + + // Do nothing if input is disabled + if (!node[_disabled]) { + + // Click + if (type == _click) { + operate(self, false, true); + + // Active and hover states + } else { + + // State is on + if (/wn|er|in/.test(type)) { + + // mousedown|mouseover|touchbegin + parent[_add](toggle); + + // State is off + } else { + parent[_remove](toggle + ' ' + activeClass); + } + + // Label hover + if (label.length && labelHover && toggle == hoverClass) { + + // mouseout|touchend + label[/ut|nd/.test(type) ? _remove : _add](labelHoverClass); + } + } + + if (_mobile) { + event.stopPropagation(); + } else { + return false; + } + } + }); + }); + } else { + return this; + } + }; + + // Do something with inputs + function operate(input, direct, method) { + var node = input[0], + state = /er/.test(method) ? _indeterminate : /bl/.test(method) ? _disabled : _checked, + active = method == _update ? { + checked: node[_checked], + disabled: node[_disabled], + indeterminate: input.attr(_indeterminate) == 'true' || input.attr(_determinate) == 'false' + } : node[state]; + + // Check, disable or indeterminate + if (/^(ch|di|in)/.test(method) && !active) { + on(input, state); + + // Uncheck, enable or determinate + } else if (/^(un|en|de)/.test(method) && active) { + off(input, state); + + // Update + } else if (method == _update) { + + // Handle states + for (var each in active) { + if (active[each]) { + on(input, each, true); + } else { + off(input, each, true); + } + } + + } else if (!direct || method == 'toggle') { + + // Helper or label was clicked + if (!direct) { + input[_callback]('ifClicked'); + } + + // Toggle checked state + if (active) { + if (node[_type] !== _radio) { + off(input, state); + } + } else { + on(input, state); + } + } + } + + // Add checked, disabled or indeterminate state + function on(input, state, keep) { + var node = input[0], + parent = input.parent(), + checked = state == _checked, + indeterminate = state == _indeterminate, + disabled = state == _disabled, + callback = indeterminate ? _determinate : checked ? _unchecked : 'enabled', + regular = option(input, callback + capitalize(node[_type])), + specific = option(input, state + capitalize(node[_type])); + + // Prevent unnecessary actions + if (node[state] !== true) { + + // Toggle assigned radio buttons + if (!keep && state == _checked && node[_type] == _radio && node.name) { + var form = input.closest('form'), + inputs = 'input[name="' + node.name + '"]'; + + inputs = form.length ? form.find(inputs) : $(inputs); + + inputs.each(function() { + if (this !== node && $(this).data(_iCheck)) { + off($(this), state); + } + }); + } + + // Indeterminate state + if (indeterminate) { + + // Add indeterminate state + node[state] = true; + + // Remove checked state + if (node[_checked]) { + off(input, _checked, 'force'); + } + + // Checked or disabled state + } else { + + // Add checked or disabled state + if (!keep) { + node[state] = true; + } + + // Remove indeterminate state + if (checked && node[_indeterminate]) { + off(input, _indeterminate, false); + } + } + + // Trigger callbacks + callbacks(input, checked, state, keep); + } + + // Add proper cursor + if (node[_disabled] && !!option(input, _cursor, true)) { + parent.find('.' + _iCheckHelper).css(_cursor, 'default'); + } + + // Add state class + parent[_add](specific || option(input, state) || ''); + + // Set ARIA attribute + if (!!parent.attr('role') && !indeterminate) { + parent.attr('aria-' + (disabled ? _disabled : _checked), 'true'); + } + + // Remove regular state class + parent[_remove](regular || option(input, callback) || ''); + } + + // Remove checked, disabled or indeterminate state + function off(input, state, keep) { + var node = input[0], + parent = input.parent(), + checked = state == _checked, + indeterminate = state == _indeterminate, + disabled = state == _disabled, + callback = indeterminate ? _determinate : checked ? _unchecked : 'enabled', + regular = option(input, callback + capitalize(node[_type])), + specific = option(input, state + capitalize(node[_type])); + + // Prevent unnecessary actions + if (node[state] !== false) { + + // Toggle state + if (indeterminate || !keep || keep == 'force') { + node[state] = false; + } + + // Trigger callbacks + callbacks(input, checked, callback, keep); + } + + // Add proper cursor + if (!node[_disabled] && !!option(input, _cursor, true)) { + parent.find('.' + _iCheckHelper).css(_cursor, 'pointer'); + } + + // Remove state class + parent[_remove](specific || option(input, state) || ''); + + // Set ARIA attribute + if (!!parent.attr('role') && !indeterminate) { + parent.attr('aria-' + (disabled ? _disabled : _checked), 'false'); + } + + // Add regular state class + parent[_add](regular || option(input, callback) || ''); + } + + // Remove all traces + function tidy(input, callback) { + if (input.data(_iCheck)) { + + // Remove everything except input + input.parent().html(input.attr('style', input.data(_iCheck).s || '')); + + // Callback + if (callback) { + input[_callback](callback); + } + + // Unbind events + input.off('.i').unwrap(); + $(_label + '[for="' + input[0].id + '"]').add(input.closest(_label)).off('.i'); + } + } + + // Get some option + function option(input, state, regular) { + if (input.data(_iCheck)) { + return input.data(_iCheck).o[state + (regular ? '' : 'Class')]; + } + } + + // Capitalize some string + function capitalize(string) { + return string.charAt(0).toUpperCase() + string.slice(1); + } + + // Executable handlers + function callbacks(input, checked, callback, keep) { + if (!keep) { + if (checked) { + input[_callback]('ifToggled'); + } + + input[_callback]('ifChanged')[_callback]('if' + capitalize(callback)); + } + } +})(window.jQuery || window.Zepto); diff --git a/themes/fruitful/inc/metaboxes/js/check/icheck.min.js b/themes/fruitful/inc/metaboxes/js/check/icheck.min.js new file mode 100644 index 0000000..7cdb17e --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/icheck.min.js @@ -0,0 +1,11 @@ +/*! iCheck v1.0.2 by Damir Sultanov, http://git.io/arlzeA, MIT Licensed */ +(function(f){function A(a,b,d){var c=a[0],g=/er/.test(d)?_indeterminate:/bl/.test(d)?n:k,e=d==_update?{checked:c[k],disabled:c[n],indeterminate:"true"==a.attr(_indeterminate)||"false"==a.attr(_determinate)}:c[g];if(/^(ch|di|in)/.test(d)&&!e)x(a,g);else if(/^(un|en|de)/.test(d)&&e)q(a,g);else if(d==_update)for(var f in e)e[f]?x(a,f,!0):q(a,f,!0);else if(!b||"toggle"==d){if(!b)a[_callback]("ifClicked");e?c[_type]!==r&&q(a,g):x(a,g)}}function x(a,b,d){var c=a[0],g=a.parent(),e=b==k,u=b==_indeterminate, +v=b==n,s=u?_determinate:e?y:"enabled",F=l(a,s+t(c[_type])),B=l(a,b+t(c[_type]));if(!0!==c[b]){if(!d&&b==k&&c[_type]==r&&c.name){var w=a.closest("form"),p='input[name="'+c.name+'"]',p=w.length?w.find(p):f(p);p.each(function(){this!==c&&f(this).data(m)&&q(f(this),b)})}u?(c[b]=!0,c[k]&&q(a,k,"force")):(d||(c[b]=!0),e&&c[_indeterminate]&&q(a,_indeterminate,!1));D(a,e,b,d)}c[n]&&l(a,_cursor,!0)&&g.find("."+C).css(_cursor,"default");g[_add](B||l(a,b)||"");g.attr("role")&&!u&&g.attr("aria-"+(v?n:k),"true"); +g[_remove](F||l(a,s)||"")}function q(a,b,d){var c=a[0],g=a.parent(),e=b==k,f=b==_indeterminate,m=b==n,s=f?_determinate:e?y:"enabled",q=l(a,s+t(c[_type])),r=l(a,b+t(c[_type]));if(!1!==c[b]){if(f||!d||"force"==d)c[b]=!1;D(a,e,s,d)}!c[n]&&l(a,_cursor,!0)&&g.find("."+C).css(_cursor,"pointer");g[_remove](r||l(a,b)||"");g.attr("role")&&!f&&g.attr("aria-"+(m?n:k),"false");g[_add](q||l(a,s)||"")}function E(a,b){if(a.data(m)){a.parent().html(a.attr("style",a.data(m).s||""));if(b)a[_callback](b);a.off(".i").unwrap(); +f(_label+'[for="'+a[0].id+'"]').add(a.closest(_label)).off(".i")}}function l(a,b,f){if(a.data(m))return a.data(m).o[b+(f?"":"Class")]}function t(a){return a.charAt(0).toUpperCase()+a.slice(1)}function D(a,b,f,c){if(!c){if(b)a[_callback]("ifToggled");a[_callback]("ifChanged")[_callback]("if"+t(f))}}var m="iCheck",C=m+"-helper",r="radio",k="checked",y="un"+k,n="disabled";_determinate="determinate";_indeterminate="in"+_determinate;_update="update";_type="type";_click="click";_touch="touchbegin.i touchend.i"; +_add="addClass";_remove="removeClass";_callback="trigger";_label="label";_cursor="cursor";_mobile=/ipad|iphone|ipod|android|blackberry|windows phone|opera mini|silk/i.test(navigator.userAgent);f.fn[m]=function(a,b){var d='input[type="checkbox"], input[type="'+r+'"]',c=f(),g=function(a){a.each(function(){var a=f(this);c=a.is(d)?c.add(a):c.add(a.find(d))})};if(/^(check|uncheck|toggle|indeterminate|determinate|disable|enable|update|destroy)$/i.test(a))return a=a.toLowerCase(),g(this),c.each(function(){var c= +f(this);"destroy"==a?E(c,"ifDestroyed"):A(c,!0,a);f.isFunction(b)&&b()});if("object"!=typeof a&&a)return this;var e=f.extend({checkedClass:k,disabledClass:n,indeterminateClass:_indeterminate,labelHover:!0},a),l=e.handle,v=e.hoverClass||"hover",s=e.focusClass||"focus",t=e.activeClass||"active",B=!!e.labelHover,w=e.labelHoverClass||"hover",p=(""+e.increaseArea).replace("%","")|0;if("checkbox"==l||l==r)d='input[type="'+l+'"]';-50>p&&(p=-50);g(this);return c.each(function(){var a=f(this);E(a);var c=this, +b=c.id,g=-p+"%",d=100+2*p+"%",d={position:"absolute",top:g,left:g,display:"block",width:d,height:d,margin:0,padding:0,background:"#fff",border:0,opacity:0},g=_mobile?{position:"absolute",visibility:"hidden"}:p?d:{position:"absolute",opacity:0},l="checkbox"==c[_type]?e.checkboxClass||"icheckbox":e.radioClass||"i"+r,z=f(_label+'[for="'+b+'"]').add(a.closest(_label)),u=!!e.aria,y=m+"-"+Math.random().toString(36).substr(2,6),h='
        ")[_callback]("ifCreated").parent().append(e.insert);d=f('').css(d).appendTo(h);a.data(m,{o:e,s:a.attr("style")}).css(g);e.inheritClass&&h[_add](c.className||"");e.inheritID&&b&&h.attr("id",m+"-"+b);"static"==h.css("position")&&h.css("position","relative");A(a,!0,_update);if(z.length)z.on(_click+".i mouseover.i mouseout.i "+_touch,function(b){var d=b[_type],e=f(this);if(!c[n]){if(d==_click){if(f(b.target).is("a"))return; +A(a,!1,!0)}else B&&(/ut|nd/.test(d)?(h[_remove](v),e[_remove](w)):(h[_add](v),e[_add](w)));if(_mobile)b.stopPropagation();else return!1}});a.on(_click+".i focus.i blur.i keyup.i keydown.i keypress.i",function(b){var d=b[_type];b=b.keyCode;if(d==_click)return!1;if("keydown"==d&&32==b)return c[_type]==r&&c[k]||(c[k]?q(a,k):x(a,k)),!1;if("keyup"==d&&c[_type]==r)!c[k]&&x(a,k);else if(/us|ur/.test(d))h["blur"==d?_remove:_add](s)});d.on(_click+" mousedown mouseup mouseover mouseout "+_touch,function(b){var d= +b[_type],e=/wn|up/.test(d)?t:v;if(!c[n]){if(d==_click)A(a,!1,!0);else{if(/wn|er|in/.test(d))h[_add](e);else h[_remove](e+" "+t);if(z.length&&B&&e==v)z[/ut|nd/.test(d)?_remove:_add](w)}if(_mobile)b.stopPropagation();else return!1}})})}})(window.jQuery||window.Zepto); diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/all.css b/themes/fruitful/inc/metaboxes/js/check/skins/all.css new file mode 100644 index 0000000..6439b74 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/all.css @@ -0,0 +1,61 @@ +/* iCheck plugin skins +----------------------------------- */ +@import url("minimal/_all.css"); +/* +@import url("minimal/minimal.css"); +@import url("minimal/red.css"); +@import url("minimal/green.css"); +@import url("minimal/blue.css"); +@import url("minimal/aero.css"); +@import url("minimal/grey.css"); +@import url("minimal/orange.css"); +@import url("minimal/yellow.css"); +@import url("minimal/pink.css"); +@import url("minimal/purple.css"); +*/ + +@import url("square/_all.css"); +/* +@import url("square/square.css"); +@import url("square/red.css"); +@import url("square/green.css"); +@import url("square/blue.css"); +@import url("square/aero.css"); +@import url("square/grey.css"); +@import url("square/orange.css"); +@import url("square/yellow.css"); +@import url("square/pink.css"); +@import url("square/purple.css"); +*/ + +@import url("flat/_all.css"); +/* +@import url("flat/flat.css"); +@import url("flat/red.css"); +@import url("flat/green.css"); +@import url("flat/blue.css"); +@import url("flat/aero.css"); +@import url("flat/grey.css"); +@import url("flat/orange.css"); +@import url("flat/yellow.css"); +@import url("flat/pink.css"); +@import url("flat/purple.css"); +*/ + +@import url("line/_all.css"); +/* +@import url("line/line.css"); +@import url("line/red.css"); +@import url("line/green.css"); +@import url("line/blue.css"); +@import url("line/aero.css"); +@import url("line/grey.css"); +@import url("line/orange.css"); +@import url("line/yellow.css"); +@import url("line/pink.css"); +@import url("line/purple.css"); +*/ + +@import url("polaris/polaris.css"); + +@import url("futurico/futurico.css"); \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/_all.css b/themes/fruitful/inc/metaboxes/js/check/skins/flat/_all.css new file mode 100644 index 0000000..104660c --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/flat/_all.css @@ -0,0 +1,533 @@ +/* iCheck plugin Flat skin +----------------------------------- */ +.icheckbox_flat, +.iradio_flat { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(flat.png) no-repeat; + border: none; + cursor: pointer; + +} + +.icheckbox_flat { + background-position: 0 0; +} + .icheckbox_flat.checked { + background-position: -22px 0; + } + .icheckbox_flat.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat { + background-position: -88px 0; +} + .iradio_flat.checked { + background-position: -110px 0; + } + .iradio_flat.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat, + .iradio_flat { + background-image: url(flat@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} + +/* red */ +.icheckbox_flat-red, +.iradio_flat-red { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(red.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-red { + background-position: 0 0; +} + .icheckbox_flat-red.checked { + background-position: -22px 0; + } + .icheckbox_flat-red.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-red.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-red { + background-position: -88px 0; +} + .iradio_flat-red.checked { + background-position: -110px 0; + } + .iradio_flat-red.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-red.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-red, + .iradio_flat-red { + background-image: url(red@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} + +/* green */ +.icheckbox_flat-green, +.iradio_flat-green { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(green.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-green { + background-position: 0 0; +} + .icheckbox_flat-green.checked { + background-position: -22px 0; + } + .icheckbox_flat-green.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-green.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-green { + background-position: -88px 0; +} + .iradio_flat-green.checked { + background-position: -110px 0; + } + .iradio_flat-green.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-green.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-green, + .iradio_flat-green { + background-image: url(green@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} + +/* blue */ +.icheckbox_flat-blue, +.iradio_flat-blue { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(blue.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-blue { + background-position: 0 0; +} + .icheckbox_flat-blue.checked { + background-position: -22px 0; + } + .icheckbox_flat-blue.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-blue.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-blue { + background-position: -88px 0; +} + .iradio_flat-blue.checked { + background-position: -110px 0; + } + .iradio_flat-blue.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-blue.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-blue, + .iradio_flat-blue { + background-image: url(blue@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} + +/* aero */ +.icheckbox_flat-aero, +.iradio_flat-aero { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(aero.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-aero { + background-position: 0 0; +} + .icheckbox_flat-aero.checked { + background-position: -22px 0; + } + .icheckbox_flat-aero.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-aero.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-aero { + background-position: -88px 0; +} + .iradio_flat-aero.checked { + background-position: -110px 0; + } + .iradio_flat-aero.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-aero.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-aero, + .iradio_flat-aero { + background-image: url(aero@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} + +/* grey */ +.icheckbox_flat-grey, +.iradio_flat-grey { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(grey.png) no-repeat; + border: none; + cursor: pointer; + float:left; + margin:0 10px 0 0; +} + +.icheckbox_flat-grey { + background-position: 0 0; +} + .icheckbox_flat-grey.checked { + background-position: -22px 0; + } + .icheckbox_flat-grey.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-grey.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-grey { + background-position: -88px 0; +} + .iradio_flat-grey.checked { + background-position: -110px 0; + } + .iradio_flat-grey.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-grey.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-grey, + .iradio_flat-grey { + background-image: url(grey@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} + +/* orange */ +.icheckbox_flat-orange, +.iradio_flat-orange { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(orange.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-orange { + background-position: 0 0; +} + .icheckbox_flat-orange.checked { + background-position: -22px 0; + } + .icheckbox_flat-orange.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-orange.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-orange { + background-position: -88px 0; +} + .iradio_flat-orange.checked { + background-position: -110px 0; + } + .iradio_flat-orange.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-orange.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-orange, + .iradio_flat-orange { + background-image: url(orange@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} + +/* yellow */ +.icheckbox_flat-yellow, +.iradio_flat-yellow { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(yellow.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-yellow { + background-position: 0 0; +} + .icheckbox_flat-yellow.checked { + background-position: -22px 0; + } + .icheckbox_flat-yellow.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-yellow.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-yellow { + background-position: -88px 0; +} + .iradio_flat-yellow.checked { + background-position: -110px 0; + } + .iradio_flat-yellow.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-yellow.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-yellow, + .iradio_flat-yellow { + background-image: url(yellow@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} + +/* pink */ +.icheckbox_flat-pink, +.iradio_flat-pink { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(pink.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-pink { + background-position: 0 0; +} + .icheckbox_flat-pink.checked { + background-position: -22px 0; + } + .icheckbox_flat-pink.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-pink.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-pink { + background-position: -88px 0; +} + .iradio_flat-pink.checked { + background-position: -110px 0; + } + .iradio_flat-pink.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-pink.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-pink, + .iradio_flat-pink { + background-image: url(pink@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} + +/* purple */ +.icheckbox_flat-purple, +.iradio_flat-purple { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(purple.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-purple { + background-position: 0 0; +} + .icheckbox_flat-purple.checked { + background-position: -22px 0; + } + .icheckbox_flat-purple.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-purple.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-purple { + background-position: -88px 0; +} + .iradio_flat-purple.checked { + background-position: -110px 0; + } + .iradio_flat-purple.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-purple.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-purple, + .iradio_flat-purple { + background-image: url(purple@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/aero.css b/themes/fruitful/inc/metaboxes/js/check/skins/flat/aero.css new file mode 100644 index 0000000..71cbca9 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/flat/aero.css @@ -0,0 +1,53 @@ +/* iCheck plugin Flat skin, aero +----------------------------------- */ +.icheckbox_flat-aero, +.iradio_flat-aero { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(aero.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-aero { + background-position: 0 0; +} + .icheckbox_flat-aero.checked { + background-position: -22px 0; + } + .icheckbox_flat-aero.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-aero.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-aero { + background-position: -88px 0; +} + .iradio_flat-aero.checked { + background-position: -110px 0; + } + .iradio_flat-aero.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-aero.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-aero, + .iradio_flat-aero { + background-image: url(aero@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/aero.png b/themes/fruitful/inc/metaboxes/js/check/skins/flat/aero.png new file mode 100644 index 0000000..f4277aa Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/flat/aero.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/aero@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/flat/aero@2x.png new file mode 100644 index 0000000..a9a7494 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/flat/aero@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/blue.css b/themes/fruitful/inc/metaboxes/js/check/skins/flat/blue.css new file mode 100644 index 0000000..56a7830 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/flat/blue.css @@ -0,0 +1,53 @@ +/* iCheck plugin Flat skin, blue +----------------------------------- */ +.icheckbox_flat-blue, +.iradio_flat-blue { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(blue.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-blue { + background-position: 0 0; +} + .icheckbox_flat-blue.checked { + background-position: -22px 0; + } + .icheckbox_flat-blue.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-blue.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-blue { + background-position: -88px 0; +} + .iradio_flat-blue.checked { + background-position: -110px 0; + } + .iradio_flat-blue.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-blue.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-blue, + .iradio_flat-blue { + background-image: url(blue@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/blue.png b/themes/fruitful/inc/metaboxes/js/check/skins/flat/blue.png new file mode 100644 index 0000000..4b6ef98 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/flat/blue.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/blue@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/flat/blue@2x.png new file mode 100644 index 0000000..d52da05 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/flat/blue@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/flat.css b/themes/fruitful/inc/metaboxes/js/check/skins/flat/flat.css new file mode 100644 index 0000000..0f39690 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/flat/flat.css @@ -0,0 +1,53 @@ +/* iCheck plugin flat skin, black +----------------------------------- */ +.icheckbox_flat, +.iradio_flat { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(flat.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat { + background-position: 0 0; +} + .icheckbox_flat.checked { + background-position: -22px 0; + } + .icheckbox_flat.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat { + background-position: -88px 0; +} + .iradio_flat.checked { + background-position: -110px 0; + } + .iradio_flat.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat, + .iradio_flat { + background-image: url(flat@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/flat.png b/themes/fruitful/inc/metaboxes/js/check/skins/flat/flat.png new file mode 100644 index 0000000..15af826 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/flat/flat.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/flat@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/flat/flat@2x.png new file mode 100644 index 0000000..e70e438 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/flat/flat@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/green.css b/themes/fruitful/inc/metaboxes/js/check/skins/flat/green.css new file mode 100644 index 0000000..b80e04d --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/flat/green.css @@ -0,0 +1,53 @@ +/* iCheck plugin Flat skin, green +----------------------------------- */ +.icheckbox_flat-green, +.iradio_flat-green { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(green.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-green { + background-position: 0 0; +} + .icheckbox_flat-green.checked { + background-position: -22px 0; + } + .icheckbox_flat-green.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-green.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-green { + background-position: -88px 0; +} + .iradio_flat-green.checked { + background-position: -110px 0; + } + .iradio_flat-green.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-green.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-green, + .iradio_flat-green { + background-image: url(green@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/green.png b/themes/fruitful/inc/metaboxes/js/check/skins/flat/green.png new file mode 100644 index 0000000..6b303fb Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/flat/green.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/green@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/flat/green@2x.png new file mode 100644 index 0000000..92b4411 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/flat/green@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/grey.css b/themes/fruitful/inc/metaboxes/js/check/skins/flat/grey.css new file mode 100644 index 0000000..96e62e8 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/flat/grey.css @@ -0,0 +1,53 @@ +/* iCheck plugin Flat skin, grey +----------------------------------- */ +.icheckbox_flat-grey, +.iradio_flat-grey { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(grey.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-grey { + background-position: 0 0; +} + .icheckbox_flat-grey.checked { + background-position: -22px 0; + } + .icheckbox_flat-grey.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-grey.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-grey { + background-position: -88px 0; +} + .iradio_flat-grey.checked { + background-position: -110px 0; + } + .iradio_flat-grey.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-grey.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-grey, + .iradio_flat-grey { + background-image: url(grey@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/grey.png b/themes/fruitful/inc/metaboxes/js/check/skins/flat/grey.png new file mode 100644 index 0000000..c6e2873 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/flat/grey.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/grey@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/flat/grey@2x.png new file mode 100644 index 0000000..0b47b1c Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/flat/grey@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/orange.css b/themes/fruitful/inc/metaboxes/js/check/skins/flat/orange.css new file mode 100644 index 0000000..f9c873f --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/flat/orange.css @@ -0,0 +1,53 @@ +/* iCheck plugin Flat skin, orange +----------------------------------- */ +.icheckbox_flat-orange, +.iradio_flat-orange { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(orange.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-orange { + background-position: 0 0; +} + .icheckbox_flat-orange.checked { + background-position: -22px 0; + } + .icheckbox_flat-orange.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-orange.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-orange { + background-position: -88px 0; +} + .iradio_flat-orange.checked { + background-position: -110px 0; + } + .iradio_flat-orange.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-orange.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-orange, + .iradio_flat-orange { + background-image: url(orange@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/orange.png b/themes/fruitful/inc/metaboxes/js/check/skins/flat/orange.png new file mode 100644 index 0000000..ec2532e Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/flat/orange.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/orange@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/flat/orange@2x.png new file mode 100644 index 0000000..9350b50 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/flat/orange@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/pink.css b/themes/fruitful/inc/metaboxes/js/check/skins/flat/pink.css new file mode 100644 index 0000000..179f980 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/flat/pink.css @@ -0,0 +1,53 @@ +/* iCheck plugin Flat skin, pink +----------------------------------- */ +.icheckbox_flat-pink, +.iradio_flat-pink { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(pink.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-pink { + background-position: 0 0; +} + .icheckbox_flat-pink.checked { + background-position: -22px 0; + } + .icheckbox_flat-pink.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-pink.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-pink { + background-position: -88px 0; +} + .iradio_flat-pink.checked { + background-position: -110px 0; + } + .iradio_flat-pink.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-pink.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-pink, + .iradio_flat-pink { + background-image: url(pink@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/pink.png b/themes/fruitful/inc/metaboxes/js/check/skins/flat/pink.png new file mode 100644 index 0000000..3e65d9d Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/flat/pink.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/pink@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/flat/pink@2x.png new file mode 100644 index 0000000..281ba06 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/flat/pink@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/purple.css b/themes/fruitful/inc/metaboxes/js/check/skins/flat/purple.css new file mode 100644 index 0000000..dfedafc --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/flat/purple.css @@ -0,0 +1,53 @@ +/* iCheck plugin Flat skin, purple +----------------------------------- */ +.icheckbox_flat-purple, +.iradio_flat-purple { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(purple.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-purple { + background-position: 0 0; +} + .icheckbox_flat-purple.checked { + background-position: -22px 0; + } + .icheckbox_flat-purple.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-purple.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-purple { + background-position: -88px 0; +} + .iradio_flat-purple.checked { + background-position: -110px 0; + } + .iradio_flat-purple.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-purple.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-purple, + .iradio_flat-purple { + background-image: url(purple@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/purple.png b/themes/fruitful/inc/metaboxes/js/check/skins/flat/purple.png new file mode 100644 index 0000000..3699fd5 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/flat/purple.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/purple@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/flat/purple@2x.png new file mode 100644 index 0000000..7f4be74 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/flat/purple@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/red.css b/themes/fruitful/inc/metaboxes/js/check/skins/flat/red.css new file mode 100644 index 0000000..83ec91e --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/flat/red.css @@ -0,0 +1,53 @@ +/* iCheck plugin Flat skin, red +----------------------------------- */ +.icheckbox_flat-red, +.iradio_flat-red { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(red.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-red { + background-position: 0 0; +} + .icheckbox_flat-red.checked { + background-position: -22px 0; + } + .icheckbox_flat-red.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-red.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-red { + background-position: -88px 0; +} + .iradio_flat-red.checked { + background-position: -110px 0; + } + .iradio_flat-red.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-red.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-red, + .iradio_flat-red { + background-image: url(red@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/red.png b/themes/fruitful/inc/metaboxes/js/check/skins/flat/red.png new file mode 100644 index 0000000..0d5ac38 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/flat/red.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/red@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/flat/red@2x.png new file mode 100644 index 0000000..38590d9 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/flat/red@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/yellow.css b/themes/fruitful/inc/metaboxes/js/check/skins/flat/yellow.css new file mode 100644 index 0000000..7bb6039 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/flat/yellow.css @@ -0,0 +1,53 @@ +/* iCheck plugin Flat skin, yellow +----------------------------------- */ +.icheckbox_flat-yellow, +.iradio_flat-yellow { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 20px; + height: 20px; + background: url(yellow.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_flat-yellow { + background-position: 0 0; +} + .icheckbox_flat-yellow.checked { + background-position: -22px 0; + } + .icheckbox_flat-yellow.disabled { + background-position: -44px 0; + cursor: default; + } + .icheckbox_flat-yellow.checked.disabled { + background-position: -66px 0; + } + +.iradio_flat-yellow { + background-position: -88px 0; +} + .iradio_flat-yellow.checked { + background-position: -110px 0; + } + .iradio_flat-yellow.disabled { + background-position: -132px 0; + cursor: default; + } + .iradio_flat-yellow.checked.disabled { + background-position: -154px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_flat-yellow, + .iradio_flat-yellow { + background-image: url(yellow@2x.png); + -webkit-background-size: 176px 22px; + background-size: 176px 22px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/yellow.png b/themes/fruitful/inc/metaboxes/js/check/skins/flat/yellow.png new file mode 100644 index 0000000..909dadc Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/flat/yellow.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/flat/yellow@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/flat/yellow@2x.png new file mode 100644 index 0000000..9fd5d73 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/flat/yellow@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/futurico/futurico.css b/themes/fruitful/inc/metaboxes/js/check/skins/futurico/futurico.css new file mode 100644 index 0000000..a34a754 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/futurico/futurico.css @@ -0,0 +1,53 @@ +/* iCheck plugin Futurico skin +----------------------------------- */ +.icheckbox_futurico, +.iradio_futurico { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 16px; + height: 17px; + background: url(futurico.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_futurico { + background-position: 0 0; +} + .icheckbox_futurico.checked { + background-position: -18px 0; + } + .icheckbox_futurico.disabled { + background-position: -36px 0; + cursor: default; + } + .icheckbox_futurico.checked.disabled { + background-position: -54px 0; + } + +.iradio_futurico { + background-position: -72px 0; +} + .iradio_futurico.checked { + background-position: -90px 0; + } + .iradio_futurico.disabled { + background-position: -108px 0; + cursor: default; + } + .iradio_futurico.checked.disabled { + background-position: -126px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_futurico, + .iradio_futurico { + background-image: url(futurico@2x.png); + -webkit-background-size: 144px 19px; + background-size: 144px 19px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/futurico/futurico.png b/themes/fruitful/inc/metaboxes/js/check/skins/futurico/futurico.png new file mode 100644 index 0000000..50d62b5 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/futurico/futurico.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/futurico/futurico@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/futurico/futurico@2x.png new file mode 100644 index 0000000..f7eb45a Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/futurico/futurico@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/line/_all.css b/themes/fruitful/inc/metaboxes/js/check/skins/line/_all.css new file mode 100644 index 0000000..8a20ed2 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/line/_all.css @@ -0,0 +1,710 @@ +/* iCheck plugin Line skin +----------------------------------- */ +.icheckbox_line, +.iradio_line { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #000; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line .icheck_line-icon, + .iradio_line .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line.hover, + .icheckbox_line.checked.hover, + .iradio_line.hover { + background: #444; + } + .icheckbox_line.checked, + .iradio_line.checked { + background: #000; + } + .icheckbox_line.checked .icheck_line-icon, + .iradio_line.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line.disabled, + .iradio_line.disabled { + background: #ccc; + cursor: default; + } + .icheckbox_line.disabled .icheck_line-icon, + .iradio_line.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line.checked.disabled, + .iradio_line.checked.disabled { + background: #ccc; + } + .icheckbox_line.checked.disabled .icheck_line-icon, + .iradio_line.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line .icheck_line-icon, + .iradio_line .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} + +/* red */ +.icheckbox_line-red, +.iradio_line-red { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #e56c69; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-red .icheck_line-icon, + .iradio_line-red .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-red.hover, + .icheckbox_line-red.checked.hover, + .iradio_line-red.hover { + background: #E98582; + } + .icheckbox_line-red.checked, + .iradio_line-red.checked { + background: #e56c69; + } + .icheckbox_line-red.checked .icheck_line-icon, + .iradio_line-red.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-red.disabled, + .iradio_line-red.disabled { + background: #F7D3D2; + cursor: default; + } + .icheckbox_line-red.disabled .icheck_line-icon, + .iradio_line-red.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-red.checked.disabled, + .iradio_line-red.checked.disabled { + background: #F7D3D2; + } + .icheckbox_line-red.checked.disabled .icheck_line-icon, + .iradio_line-red.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-red .icheck_line-icon, + .iradio_line-red .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} + +/* green */ +.icheckbox_line-green, +.iradio_line-green { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #1b7e5a; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-green .icheck_line-icon, + .iradio_line-green .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-green.hover, + .icheckbox_line-green.checked.hover, + .iradio_line-green.hover { + background: #24AA7A; + } + .icheckbox_line-green.checked, + .iradio_line-green.checked { + background: #1b7e5a; + } + .icheckbox_line-green.checked .icheck_line-icon, + .iradio_line-green.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-green.disabled, + .iradio_line-green.disabled { + background: #89E6C4; + cursor: default; + } + .icheckbox_line-green.disabled .icheck_line-icon, + .iradio_line-green.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-green.checked.disabled, + .iradio_line-green.checked.disabled { + background: #89E6C4; + } + .icheckbox_line-green.checked.disabled .icheck_line-icon, + .iradio_line-green.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-green .icheck_line-icon, + .iradio_line-green .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} + +/* blue */ +.icheckbox_line-blue, +.iradio_line-blue { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #2489c5; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-blue .icheck_line-icon, + .iradio_line-blue .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-blue.hover, + .icheckbox_line-blue.checked.hover, + .iradio_line-blue.hover { + background: #3DA0DB; + } + .icheckbox_line-blue.checked, + .iradio_line-blue.checked { + background: #2489c5; + } + .icheckbox_line-blue.checked .icheck_line-icon, + .iradio_line-blue.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-blue.disabled, + .iradio_line-blue.disabled { + background: #ADD7F0; + cursor: default; + } + .icheckbox_line-blue.disabled .icheck_line-icon, + .iradio_line-blue.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-blue.checked.disabled, + .iradio_line-blue.checked.disabled { + background: #ADD7F0; + } + .icheckbox_line-blue.checked.disabled .icheck_line-icon, + .iradio_line-blue.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-blue .icheck_line-icon, + .iradio_line-blue .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} + +/* aero */ +.icheckbox_line-aero, +.iradio_line-aero { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #9cc2cb; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-aero .icheck_line-icon, + .iradio_line-aero .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-aero.hover, + .icheckbox_line-aero.checked.hover, + .iradio_line-aero.hover { + background: #B5D1D8; + } + .icheckbox_line-aero.checked, + .iradio_line-aero.checked { + background: #9cc2cb; + } + .icheckbox_line-aero.checked .icheck_line-icon, + .iradio_line-aero.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-aero.disabled, + .iradio_line-aero.disabled { + background: #D2E4E8; + cursor: default; + } + .icheckbox_line-aero.disabled .icheck_line-icon, + .iradio_line-aero.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-aero.checked.disabled, + .iradio_line-aero.checked.disabled { + background: #D2E4E8; + } + .icheckbox_line-aero.checked.disabled .icheck_line-icon, + .iradio_line-aero.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-aero .icheck_line-icon, + .iradio_line-aero .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} + +/* grey */ +.icheckbox_line-grey, +.iradio_line-grey { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #73716e; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-grey .icheck_line-icon, + .iradio_line-grey .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-grey.hover, + .icheckbox_line-grey.checked.hover, + .iradio_line-grey.hover { + background: #8B8986; + } + .icheckbox_line-grey.checked, + .iradio_line-grey.checked { + background: #73716e; + } + .icheckbox_line-grey.checked .icheck_line-icon, + .iradio_line-grey.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-grey.disabled, + .iradio_line-grey.disabled { + background: #D5D4D3; + cursor: default; + } + .icheckbox_line-grey.disabled .icheck_line-icon, + .iradio_line-grey.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-grey.checked.disabled, + .iradio_line-grey.checked.disabled { + background: #D5D4D3; + } + .icheckbox_line-grey.checked.disabled .icheck_line-icon, + .iradio_line-grey.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-grey .icheck_line-icon, + .iradio_line-grey .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} + +/* orange */ +.icheckbox_line-orange, +.iradio_line-orange { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #f70; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-orange .icheck_line-icon, + .iradio_line-orange .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-orange.hover, + .icheckbox_line-orange.checked.hover, + .iradio_line-orange.hover { + background: #FF9233; + } + .icheckbox_line-orange.checked, + .iradio_line-orange.checked { + background: #f70; + } + .icheckbox_line-orange.checked .icheck_line-icon, + .iradio_line-orange.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-orange.disabled, + .iradio_line-orange.disabled { + background: #FFD6B3; + cursor: default; + } + .icheckbox_line-orange.disabled .icheck_line-icon, + .iradio_line-orange.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-orange.checked.disabled, + .iradio_line-orange.checked.disabled { + background: #FFD6B3; + } + .icheckbox_line-orange.checked.disabled .icheck_line-icon, + .iradio_line-orange.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-orange .icheck_line-icon, + .iradio_line-orange .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} + +/* yellow */ +.icheckbox_line-yellow, +.iradio_line-yellow { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #FFC414; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-yellow .icheck_line-icon, + .iradio_line-yellow .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-yellow.hover, + .icheckbox_line-yellow.checked.hover, + .iradio_line-yellow.hover { + background: #FFD34F; + } + .icheckbox_line-yellow.checked, + .iradio_line-yellow.checked { + background: #FFC414; + } + .icheckbox_line-yellow.checked .icheck_line-icon, + .iradio_line-yellow.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-yellow.disabled, + .iradio_line-yellow.disabled { + background: #FFE495; + cursor: default; + } + .icheckbox_line-yellow.disabled .icheck_line-icon, + .iradio_line-yellow.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-yellow.checked.disabled, + .iradio_line-yellow.checked.disabled { + background: #FFE495; + } + .icheckbox_line-yellow.checked.disabled .icheck_line-icon, + .iradio_line-yellow.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-yellow .icheck_line-icon, + .iradio_line-yellow .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} + +/* pink */ +.icheckbox_line-pink, +.iradio_line-pink { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #a77a94; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-pink .icheck_line-icon, + .iradio_line-pink .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-pink.hover, + .icheckbox_line-pink.checked.hover, + .iradio_line-pink.hover { + background: #B995A9; + } + .icheckbox_line-pink.checked, + .iradio_line-pink.checked { + background: #a77a94; + } + .icheckbox_line-pink.checked .icheck_line-icon, + .iradio_line-pink.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-pink.disabled, + .iradio_line-pink.disabled { + background: #E0D0DA; + cursor: default; + } + .icheckbox_line-pink.disabled .icheck_line-icon, + .iradio_line-pink.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-pink.checked.disabled, + .iradio_line-pink.checked.disabled { + background: #E0D0DA; + } + .icheckbox_line-pink.checked.disabled .icheck_line-icon, + .iradio_line-pink.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-pink .icheck_line-icon, + .iradio_line-pink .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} + +/* purple */ +.icheckbox_line-purple, +.iradio_line-purple { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #6a5a8c; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-purple .icheck_line-icon, + .iradio_line-purple .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-purple.hover, + .icheckbox_line-purple.checked.hover, + .iradio_line-purple.hover { + background: #8677A7; + } + .icheckbox_line-purple.checked, + .iradio_line-purple.checked { + background: #6a5a8c; + } + .icheckbox_line-purple.checked .icheck_line-icon, + .iradio_line-purple.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-purple.disabled, + .iradio_line-purple.disabled { + background: #D2CCDE; + cursor: default; + } + .icheckbox_line-purple.disabled .icheck_line-icon, + .iradio_line-purple.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-purple.checked.disabled, + .iradio_line-purple.checked.disabled { + background: #D2CCDE; + } + .icheckbox_line-purple.checked.disabled .icheck_line-icon, + .iradio_line-purple.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-purple .icheck_line-icon, + .iradio_line-purple .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/line/aero.css b/themes/fruitful/inc/metaboxes/js/check/skins/line/aero.css new file mode 100644 index 0000000..8227223 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/line/aero.css @@ -0,0 +1,71 @@ +/* iCheck plugin Line skin, aero +----------------------------------- */ +.icheckbox_line-aero, +.iradio_line-aero { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #9cc2cb; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-aero .icheck_line-icon, + .iradio_line-aero .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-aero.hover, + .icheckbox_line-aero.checked.hover, + .iradio_line-aero.hover { + background: #B5D1D8; + } + .icheckbox_line-aero.checked, + .iradio_line-aero.checked { + background: #9cc2cb; + } + .icheckbox_line-aero.checked .icheck_line-icon, + .iradio_line-aero.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-aero.disabled, + .iradio_line-aero.disabled { + background: #D2E4E8; + cursor: default; + } + .icheckbox_line-aero.disabled .icheck_line-icon, + .iradio_line-aero.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-aero.checked.disabled, + .iradio_line-aero.checked.disabled { + background: #D2E4E8; + } + .icheckbox_line-aero.checked.disabled .icheck_line-icon, + .iradio_line-aero.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-aero .icheck_line-icon, + .iradio_line-aero .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/line/blue.css b/themes/fruitful/inc/metaboxes/js/check/skins/line/blue.css new file mode 100644 index 0000000..b3f9819 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/line/blue.css @@ -0,0 +1,71 @@ +/* iCheck plugin Line skin, blue +----------------------------------- */ +.icheckbox_line-blue, +.iradio_line-blue { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #2489c5; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-blue .icheck_line-icon, + .iradio_line-blue .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-blue.hover, + .icheckbox_line-blue.checked.hover, + .iradio_line-blue.hover { + background: #3DA0DB; + } + .icheckbox_line-blue.checked, + .iradio_line-blue.checked { + background: #2489c5; + } + .icheckbox_line-blue.checked .icheck_line-icon, + .iradio_line-blue.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-blue.disabled, + .iradio_line-blue.disabled { + background: #ADD7F0; + cursor: default; + } + .icheckbox_line-blue.disabled .icheck_line-icon, + .iradio_line-blue.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-blue.checked.disabled, + .iradio_line-blue.checked.disabled { + background: #ADD7F0; + } + .icheckbox_line-blue.checked.disabled .icheck_line-icon, + .iradio_line-blue.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-blue .icheck_line-icon, + .iradio_line-blue .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/line/green.css b/themes/fruitful/inc/metaboxes/js/check/skins/line/green.css new file mode 100644 index 0000000..82b4263 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/line/green.css @@ -0,0 +1,71 @@ +/* iCheck plugin Line skin, green +----------------------------------- */ +.icheckbox_line-green, +.iradio_line-green { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #1b7e5a; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-green .icheck_line-icon, + .iradio_line-green .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-green.hover, + .icheckbox_line-green.checked.hover, + .iradio_line-green.hover { + background: #24AA7A; + } + .icheckbox_line-green.checked, + .iradio_line-green.checked { + background: #1b7e5a; + } + .icheckbox_line-green.checked .icheck_line-icon, + .iradio_line-green.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-green.disabled, + .iradio_line-green.disabled { + background: #89E6C4; + cursor: default; + } + .icheckbox_line-green.disabled .icheck_line-icon, + .iradio_line-green.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-green.checked.disabled, + .iradio_line-green.checked.disabled { + background: #89E6C4; + } + .icheckbox_line-green.checked.disabled .icheck_line-icon, + .iradio_line-green.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-green .icheck_line-icon, + .iradio_line-green .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/line/grey.css b/themes/fruitful/inc/metaboxes/js/check/skins/line/grey.css new file mode 100644 index 0000000..96a5d26 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/line/grey.css @@ -0,0 +1,71 @@ +/* iCheck plugin Line skin, grey +----------------------------------- */ +.icheckbox_line-grey, +.iradio_line-grey { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #73716e; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-grey .icheck_line-icon, + .iradio_line-grey .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-grey.hover, + .icheckbox_line-grey.checked.hover, + .iradio_line-grey.hover { + background: #8B8986; + } + .icheckbox_line-grey.checked, + .iradio_line-grey.checked { + background: #73716e; + } + .icheckbox_line-grey.checked .icheck_line-icon, + .iradio_line-grey.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-grey.disabled, + .iradio_line-grey.disabled { + background: #D5D4D3; + cursor: default; + } + .icheckbox_line-grey.disabled .icheck_line-icon, + .iradio_line-grey.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-grey.checked.disabled, + .iradio_line-grey.checked.disabled { + background: #D5D4D3; + } + .icheckbox_line-grey.checked.disabled .icheck_line-icon, + .iradio_line-grey.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-grey .icheck_line-icon, + .iradio_line-grey .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/line/line.css b/themes/fruitful/inc/metaboxes/js/check/skins/line/line.css new file mode 100644 index 0000000..a24398a --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/line/line.css @@ -0,0 +1,71 @@ +/* iCheck plugin Line skin, black +----------------------------------- */ +.icheckbox_line, +.iradio_line { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #000; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line .icheck_line-icon, + .iradio_line .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line.hover, + .icheckbox_line.checked.hover, + .iradio_line.hover { + background: #444; + } + .icheckbox_line.checked, + .iradio_line.checked { + background: #000; + } + .icheckbox_line.checked .icheck_line-icon, + .iradio_line.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line.disabled, + .iradio_line.disabled { + background: #ccc; + cursor: default; + } + .icheckbox_line.disabled .icheck_line-icon, + .iradio_line.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line.checked.disabled, + .iradio_line.checked.disabled { + background: #ccc; + } + .icheckbox_line.checked.disabled .icheck_line-icon, + .iradio_line.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line .icheck_line-icon, + .iradio_line .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/line/line.png b/themes/fruitful/inc/metaboxes/js/check/skins/line/line.png new file mode 100644 index 0000000..d21d7a7 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/line/line.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/line/line@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/line/line@2x.png new file mode 100644 index 0000000..62900a2 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/line/line@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/line/orange.css b/themes/fruitful/inc/metaboxes/js/check/skins/line/orange.css new file mode 100644 index 0000000..5f051b4 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/line/orange.css @@ -0,0 +1,71 @@ +/* iCheck plugin Line skin, orange +----------------------------------- */ +.icheckbox_line-orange, +.iradio_line-orange { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #f70; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-orange .icheck_line-icon, + .iradio_line-orange .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-orange.hover, + .icheckbox_line-orange.checked.hover, + .iradio_line-orange.hover { + background: #FF9233; + } + .icheckbox_line-orange.checked, + .iradio_line-orange.checked { + background: #f70; + } + .icheckbox_line-orange.checked .icheck_line-icon, + .iradio_line-orange.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-orange.disabled, + .iradio_line-orange.disabled { + background: #FFD6B3; + cursor: default; + } + .icheckbox_line-orange.disabled .icheck_line-icon, + .iradio_line-orange.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-orange.checked.disabled, + .iradio_line-orange.checked.disabled { + background: #FFD6B3; + } + .icheckbox_line-orange.checked.disabled .icheck_line-icon, + .iradio_line-orange.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-orange .icheck_line-icon, + .iradio_line-orange .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/line/pink.css b/themes/fruitful/inc/metaboxes/js/check/skins/line/pink.css new file mode 100644 index 0000000..b98bbc3 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/line/pink.css @@ -0,0 +1,71 @@ +/* iCheck plugin Line skin, pink +----------------------------------- */ +.icheckbox_line-pink, +.iradio_line-pink { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #a77a94; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-pink .icheck_line-icon, + .iradio_line-pink .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-pink.hover, + .icheckbox_line-pink.checked.hover, + .iradio_line-pink.hover { + background: #B995A9; + } + .icheckbox_line-pink.checked, + .iradio_line-pink.checked { + background: #a77a94; + } + .icheckbox_line-pink.checked .icheck_line-icon, + .iradio_line-pink.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-pink.disabled, + .iradio_line-pink.disabled { + background: #E0D0DA; + cursor: default; + } + .icheckbox_line-pink.disabled .icheck_line-icon, + .iradio_line-pink.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-pink.checked.disabled, + .iradio_line-pink.checked.disabled { + background: #E0D0DA; + } + .icheckbox_line-pink.checked.disabled .icheck_line-icon, + .iradio_line-pink.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-pink .icheck_line-icon, + .iradio_line-pink .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/line/purple.css b/themes/fruitful/inc/metaboxes/js/check/skins/line/purple.css new file mode 100644 index 0000000..61f4a2f --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/line/purple.css @@ -0,0 +1,71 @@ +/* iCheck plugin Line skin, purple +----------------------------------- */ +.icheckbox_line-purple, +.iradio_line-purple { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #6a5a8c; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-purple .icheck_line-icon, + .iradio_line-purple .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-purple.hover, + .icheckbox_line-purple.checked.hover, + .iradio_line-purple.hover { + background: #8677A7; + } + .icheckbox_line-purple.checked, + .iradio_line-purple.checked { + background: #6a5a8c; + } + .icheckbox_line-purple.checked .icheck_line-icon, + .iradio_line-purple.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-purple.disabled, + .iradio_line-purple.disabled { + background: #D2CCDE; + cursor: default; + } + .icheckbox_line-purple.disabled .icheck_line-icon, + .iradio_line-purple.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-purple.checked.disabled, + .iradio_line-purple.checked.disabled { + background: #D2CCDE; + } + .icheckbox_line-purple.checked.disabled .icheck_line-icon, + .iradio_line-purple.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-purple .icheck_line-icon, + .iradio_line-purple .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/line/red.css b/themes/fruitful/inc/metaboxes/js/check/skins/line/red.css new file mode 100644 index 0000000..d86c946 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/line/red.css @@ -0,0 +1,71 @@ +/* iCheck plugin Line skin, red +----------------------------------- */ +.icheckbox_line-red, +.iradio_line-red { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #e56c69; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-red .icheck_line-icon, + .iradio_line-red .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-red.hover, + .icheckbox_line-red.checked.hover, + .iradio_line-red.hover { + background: #E98582; + } + .icheckbox_line-red.checked, + .iradio_line-red.checked { + background: #e56c69; + } + .icheckbox_line-red.checked .icheck_line-icon, + .iradio_line-red.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-red.disabled, + .iradio_line-red.disabled { + background: #F7D3D2; + cursor: default; + } + .icheckbox_line-red.disabled .icheck_line-icon, + .iradio_line-red.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-red.checked.disabled, + .iradio_line-red.checked.disabled { + background: #F7D3D2; + } + .icheckbox_line-red.checked.disabled .icheck_line-icon, + .iradio_line-red.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-red .icheck_line-icon, + .iradio_line-red .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/line/yellow.css b/themes/fruitful/inc/metaboxes/js/check/skins/line/yellow.css new file mode 100644 index 0000000..b34148a --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/line/yellow.css @@ -0,0 +1,71 @@ +/* iCheck plugin Line skin, yellow +----------------------------------- */ +.icheckbox_line-yellow, +.iradio_line-yellow { + position: relative; + display: block; + margin: 0; + padding: 5px 15px 5px 38px; + font-size: 13px; + line-height: 17px; + color: #fff; + background: #FFC414; + border: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; +} + .icheckbox_line-yellow .icheck_line-icon, + .iradio_line-yellow .icheck_line-icon { + position: absolute; + top: 50%; + left: 13px; + width: 13px; + height: 11px; + margin: -5px 0 0 0; + padding: 0; + overflow: hidden; + background: url(line.png) no-repeat; + border: none; + } + .icheckbox_line-yellow.hover, + .icheckbox_line-yellow.checked.hover, + .iradio_line-yellow.hover { + background: #FFD34F; + } + .icheckbox_line-yellow.checked, + .iradio_line-yellow.checked { + background: #FFC414; + } + .icheckbox_line-yellow.checked .icheck_line-icon, + .iradio_line-yellow.checked .icheck_line-icon { + background-position: -15px 0; + } + .icheckbox_line-yellow.disabled, + .iradio_line-yellow.disabled { + background: #FFE495; + cursor: default; + } + .icheckbox_line-yellow.disabled .icheck_line-icon, + .iradio_line-yellow.disabled .icheck_line-icon { + background-position: -30px 0; + } + .icheckbox_line-yellow.checked.disabled, + .iradio_line-yellow.checked.disabled { + background: #FFE495; + } + .icheckbox_line-yellow.checked.disabled .icheck_line-icon, + .iradio_line-yellow.checked.disabled .icheck_line-icon { + background-position: -45px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_line-yellow .icheck_line-icon, + .iradio_line-yellow .icheck_line-icon { + background-image: url(line@2x.png); + -webkit-background-size: 60px 13px; + background-size: 60px 13px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/_all.css b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/_all.css new file mode 100644 index 0000000..8cf8aca --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/_all.css @@ -0,0 +1,590 @@ +/* iCheck plugin Minimal skin +----------------------------------- */ +.icheckbox_minimal, +.iradio_minimal { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(minimal.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal { + background-position: 0 0; +} + .icheckbox_minimal.hover { + background-position: -20px 0; + } + .icheckbox_minimal.checked { + background-position: -40px 0; + } + .icheckbox_minimal.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal { + background-position: -100px 0; +} + .iradio_minimal.hover { + background-position: -120px 0; + } + .iradio_minimal.checked { + background-position: -140px 0; + } + .iradio_minimal.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal, + .iradio_minimal { + background-image: url(minimal@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} + +/* red */ +.icheckbox_minimal-red, +.iradio_minimal-red { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(red.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-red { + background-position: 0 0; +} + .icheckbox_minimal-red.hover { + background-position: -20px 0; + } + .icheckbox_minimal-red.checked { + background-position: -40px 0; + } + .icheckbox_minimal-red.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-red.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-red { + background-position: -100px 0; +} + .iradio_minimal-red.hover { + background-position: -120px 0; + } + .iradio_minimal-red.checked { + background-position: -140px 0; + } + .iradio_minimal-red.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-red.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-red, + .iradio_minimal-red { + background-image: url(red@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} + +/* green */ +.icheckbox_minimal-green, +.iradio_minimal-green { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(green.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-green { + background-position: 0 0; +} + .icheckbox_minimal-green.hover { + background-position: -20px 0; + } + .icheckbox_minimal-green.checked { + background-position: -40px 0; + } + .icheckbox_minimal-green.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-green.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-green { + background-position: -100px 0; +} + .iradio_minimal-green.hover { + background-position: -120px 0; + } + .iradio_minimal-green.checked { + background-position: -140px 0; + } + .iradio_minimal-green.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-green.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-green, + .iradio_minimal-green { + background-image: url(green@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} + +/* blue */ +.icheckbox_minimal-blue, +.iradio_minimal-blue { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(blue.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-blue { + background-position: 0 0; +} + .icheckbox_minimal-blue.hover { + background-position: -20px 0; + } + .icheckbox_minimal-blue.checked { + background-position: -40px 0; + } + .icheckbox_minimal-blue.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-blue.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-blue { + background-position: -100px 0; +} + .iradio_minimal-blue.hover { + background-position: -120px 0; + } + .iradio_minimal-blue.checked { + background-position: -140px 0; + } + .iradio_minimal-blue.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-blue.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-blue, + .iradio_minimal-blue { + background-image: url(blue@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} + +/* aero */ +.icheckbox_minimal-aero, +.iradio_minimal-aero { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(aero.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-aero { + background-position: 0 0; +} + .icheckbox_minimal-aero.hover { + background-position: -20px 0; + } + .icheckbox_minimal-aero.checked { + background-position: -40px 0; + } + .icheckbox_minimal-aero.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-aero.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-aero { + background-position: -100px 0; +} + .iradio_minimal-aero.hover { + background-position: -120px 0; + } + .iradio_minimal-aero.checked { + background-position: -140px 0; + } + .iradio_minimal-aero.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-aero.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-aero, + .iradio_minimal-aero { + background-image: url(aero@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} + +/* grey */ +.icheckbox_minimal-grey, +.iradio_minimal-grey { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(grey.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-grey { + background-position: 0 0; +} + .icheckbox_minimal-grey.hover { + background-position: -20px 0; + } + .icheckbox_minimal-grey.checked { + background-position: -40px 0; + } + .icheckbox_minimal-grey.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-grey.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-grey { + background-position: -100px 0; +} + .iradio_minimal-grey.hover { + background-position: -120px 0; + } + .iradio_minimal-grey.checked { + background-position: -140px 0; + } + .iradio_minimal-grey.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-grey.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-grey, + .iradio_minimal-grey { + background-image: url(grey@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} + +/* orange */ +.icheckbox_minimal-orange, +.iradio_minimal-orange { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(orange.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-orange { + background-position: 0 0; +} + .icheckbox_minimal-orange.hover { + background-position: -20px 0; + } + .icheckbox_minimal-orange.checked { + background-position: -40px 0; + } + .icheckbox_minimal-orange.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-orange.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-orange { + background-position: -100px 0; +} + .iradio_minimal-orange.hover { + background-position: -120px 0; + } + .iradio_minimal-orange.checked { + background-position: -140px 0; + } + .iradio_minimal-orange.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-orange.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-orange, + .iradio_minimal-orange { + background-image: url(orange@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} + +/* yellow */ +.icheckbox_minimal-yellow, +.iradio_minimal-yellow { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(yellow.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-yellow { + background-position: 0 0; +} + .icheckbox_minimal-yellow.hover { + background-position: -20px 0; + } + .icheckbox_minimal-yellow.checked { + background-position: -40px 0; + } + .icheckbox_minimal-yellow.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-yellow.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-yellow { + background-position: -100px 0; +} + .iradio_minimal-yellow.hover { + background-position: -120px 0; + } + .iradio_minimal-yellow.checked { + background-position: -140px 0; + } + .iradio_minimal-yellow.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-yellow.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-yellow, + .iradio_minimal-yellow { + background-image: url(yellow@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} + +/* pink */ +.icheckbox_minimal-pink, +.iradio_minimal-pink { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(pink.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-pink { + background-position: 0 0; +} + .icheckbox_minimal-pink.hover { + background-position: -20px 0; + } + .icheckbox_minimal-pink.checked { + background-position: -40px 0; + } + .icheckbox_minimal-pink.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-pink.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-pink { + background-position: -100px 0; +} + .iradio_minimal-pink.hover { + background-position: -120px 0; + } + .iradio_minimal-pink.checked { + background-position: -140px 0; + } + .iradio_minimal-pink.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-pink.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-pink, + .iradio_minimal-pink { + background-image: url(pink@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} + +/* purple */ +.icheckbox_minimal-purple, +.iradio_minimal-purple { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(purple.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-purple { + background-position: 0 0; +} + .icheckbox_minimal-purple.hover { + background-position: -20px 0; + } + .icheckbox_minimal-purple.checked { + background-position: -40px 0; + } + .icheckbox_minimal-purple.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-purple.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-purple { + background-position: -100px 0; +} + .iradio_minimal-purple.hover { + background-position: -120px 0; + } + .iradio_minimal-purple.checked { + background-position: -140px 0; + } + .iradio_minimal-purple.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-purple.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-purple, + .iradio_minimal-purple { + background-image: url(purple@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/aero.css b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/aero.css new file mode 100644 index 0000000..0a7a945 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/aero.css @@ -0,0 +1,59 @@ +/* iCheck plugin Minimal skin, aero +----------------------------------- */ +.icheckbox_minimal-aero, +.iradio_minimal-aero { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(aero.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-aero { + background-position: 0 0; +} + .icheckbox_minimal-aero.hover { + background-position: -20px 0; + } + .icheckbox_minimal-aero.checked { + background-position: -40px 0; + } + .icheckbox_minimal-aero.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-aero.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-aero { + background-position: -100px 0; +} + .iradio_minimal-aero.hover { + background-position: -120px 0; + } + .iradio_minimal-aero.checked { + background-position: -140px 0; + } + .iradio_minimal-aero.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-aero.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-aero, + .iradio_minimal-aero { + background-image: url(aero@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/aero.png b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/aero.png new file mode 100644 index 0000000..dccf774 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/aero.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/aero@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/aero@2x.png new file mode 100644 index 0000000..5537ee3 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/aero@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/blue.css b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/blue.css new file mode 100644 index 0000000..c290097 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/blue.css @@ -0,0 +1,59 @@ +/* iCheck plugin Minimal skin, blue +----------------------------------- */ +.icheckbox_minimal-blue, +.iradio_minimal-blue { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(blue.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-blue { + background-position: 0 0; +} + .icheckbox_minimal-blue.hover { + background-position: -20px 0; + } + .icheckbox_minimal-blue.checked { + background-position: -40px 0; + } + .icheckbox_minimal-blue.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-blue.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-blue { + background-position: -100px 0; +} + .iradio_minimal-blue.hover { + background-position: -120px 0; + } + .iradio_minimal-blue.checked { + background-position: -140px 0; + } + .iradio_minimal-blue.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-blue.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-blue, + .iradio_minimal-blue { + background-image: url(blue@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/blue.png b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/blue.png new file mode 100644 index 0000000..af04cee Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/blue.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/blue@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/blue@2x.png new file mode 100644 index 0000000..f19210a Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/blue@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/green.css b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/green.css new file mode 100644 index 0000000..aa685f3 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/green.css @@ -0,0 +1,59 @@ +/* iCheck plugin Minimal skin, green +----------------------------------- */ +.icheckbox_minimal-green, +.iradio_minimal-green { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(green.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-green { + background-position: 0 0; +} + .icheckbox_minimal-green.hover { + background-position: -20px 0; + } + .icheckbox_minimal-green.checked { + background-position: -40px 0; + } + .icheckbox_minimal-green.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-green.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-green { + background-position: -100px 0; +} + .iradio_minimal-green.hover { + background-position: -120px 0; + } + .iradio_minimal-green.checked { + background-position: -140px 0; + } + .iradio_minimal-green.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-green.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-green, + .iradio_minimal-green { + background-image: url(green@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/green.png b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/green.png new file mode 100644 index 0000000..9171ebc Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/green.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/green@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/green@2x.png new file mode 100644 index 0000000..7f18f96 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/green@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/grey.css b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/grey.css new file mode 100644 index 0000000..f242697 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/grey.css @@ -0,0 +1,59 @@ +/* iCheck plugin Minimal skin, grey +----------------------------------- */ +.icheckbox_minimal-grey, +.iradio_minimal-grey { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(grey.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-grey { + background-position: 0 0; +} + .icheckbox_minimal-grey.hover { + background-position: -20px 0; + } + .icheckbox_minimal-grey.checked { + background-position: -40px 0; + } + .icheckbox_minimal-grey.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-grey.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-grey { + background-position: -100px 0; +} + .iradio_minimal-grey.hover { + background-position: -120px 0; + } + .iradio_minimal-grey.checked { + background-position: -140px 0; + } + .iradio_minimal-grey.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-grey.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-grey, + .iradio_minimal-grey { + background-image: url(grey@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/grey.png b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/grey.png new file mode 100644 index 0000000..22dcdbc Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/grey.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/grey@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/grey@2x.png new file mode 100644 index 0000000..85e82dd Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/grey@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/minimal.css b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/minimal.css new file mode 100644 index 0000000..c2c6620 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/minimal.css @@ -0,0 +1,59 @@ +/* iCheck plugin Minimal skin, black +----------------------------------- */ +.icheckbox_minimal, +.iradio_minimal { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(minimal.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal { + background-position: 0 0; +} + .icheckbox_minimal.hover { + background-position: -20px 0; + } + .icheckbox_minimal.checked { + background-position: -40px 0; + } + .icheckbox_minimal.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal { + background-position: -100px 0; +} + .iradio_minimal.hover { + background-position: -120px 0; + } + .iradio_minimal.checked { + background-position: -140px 0; + } + .iradio_minimal.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal, + .iradio_minimal { + background-image: url(minimal@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/minimal.png b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/minimal.png new file mode 100644 index 0000000..943be16 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/minimal.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/minimal@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/minimal@2x.png new file mode 100644 index 0000000..d62291d Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/minimal@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/orange.css b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/orange.css new file mode 100644 index 0000000..ba1b9c3 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/orange.css @@ -0,0 +1,59 @@ +/* iCheck plugin Minimal skin, orange +----------------------------------- */ +.icheckbox_minimal-orange, +.iradio_minimal-orange { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(orange.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-orange { + background-position: 0 0; +} + .icheckbox_minimal-orange.hover { + background-position: -20px 0; + } + .icheckbox_minimal-orange.checked { + background-position: -40px 0; + } + .icheckbox_minimal-orange.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-orange.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-orange { + background-position: -100px 0; +} + .iradio_minimal-orange.hover { + background-position: -120px 0; + } + .iradio_minimal-orange.checked { + background-position: -140px 0; + } + .iradio_minimal-orange.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-orange.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-orange, + .iradio_minimal-orange { + background-image: url(orange@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/orange.png b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/orange.png new file mode 100644 index 0000000..f2a3149 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/orange.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/orange@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/orange@2x.png new file mode 100644 index 0000000..68c8359 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/orange@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/pink.css b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/pink.css new file mode 100644 index 0000000..77c5741 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/pink.css @@ -0,0 +1,59 @@ +/* iCheck plugin Minimal skin, pink +----------------------------------- */ +.icheckbox_minimal-pink, +.iradio_minimal-pink { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(pink.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-pink { + background-position: 0 0; +} + .icheckbox_minimal-pink.hover { + background-position: -20px 0; + } + .icheckbox_minimal-pink.checked { + background-position: -40px 0; + } + .icheckbox_minimal-pink.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-pink.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-pink { + background-position: -100px 0; +} + .iradio_minimal-pink.hover { + background-position: -120px 0; + } + .iradio_minimal-pink.checked { + background-position: -140px 0; + } + .iradio_minimal-pink.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-pink.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-pink, + .iradio_minimal-pink { + background-image: url(pink@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/pink.png b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/pink.png new file mode 100644 index 0000000..660553c Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/pink.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/pink@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/pink@2x.png new file mode 100644 index 0000000..7d7b385 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/pink@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/purple.css b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/purple.css new file mode 100644 index 0000000..d509f04 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/purple.css @@ -0,0 +1,59 @@ +/* iCheck plugin Minimal skin, purple +----------------------------------- */ +.icheckbox_minimal-purple, +.iradio_minimal-purple { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(purple.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-purple { + background-position: 0 0; +} + .icheckbox_minimal-purple.hover { + background-position: -20px 0; + } + .icheckbox_minimal-purple.checked { + background-position: -40px 0; + } + .icheckbox_minimal-purple.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-purple.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-purple { + background-position: -100px 0; +} + .iradio_minimal-purple.hover { + background-position: -120px 0; + } + .iradio_minimal-purple.checked { + background-position: -140px 0; + } + .iradio_minimal-purple.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-purple.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-purple, + .iradio_minimal-purple { + background-image: url(purple@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/purple.png b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/purple.png new file mode 100644 index 0000000..48dec79 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/purple.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/purple@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/purple@2x.png new file mode 100644 index 0000000..3bb7041 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/purple@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/red.css b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/red.css new file mode 100644 index 0000000..2280e5b --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/red.css @@ -0,0 +1,59 @@ +/* iCheck plugin Minimal skin, red +----------------------------------- */ +.icheckbox_minimal-red, +.iradio_minimal-red { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(red.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-red { + background-position: 0 0; +} + .icheckbox_minimal-red.hover { + background-position: -20px 0; + } + .icheckbox_minimal-red.checked { + background-position: -40px 0; + } + .icheckbox_minimal-red.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-red.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-red { + background-position: -100px 0; +} + .iradio_minimal-red.hover { + background-position: -120px 0; + } + .iradio_minimal-red.checked { + background-position: -140px 0; + } + .iradio_minimal-red.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-red.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-red, + .iradio_minimal-red { + background-image: url(red@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/red.png b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/red.png new file mode 100644 index 0000000..4443f80 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/red.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/red@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/red@2x.png new file mode 100644 index 0000000..2eb55a6 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/red@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/yellow.css b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/yellow.css new file mode 100644 index 0000000..730bb4c --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/yellow.css @@ -0,0 +1,59 @@ +/* iCheck plugin Minimal skin, yellow +----------------------------------- */ +.icheckbox_minimal-yellow, +.iradio_minimal-yellow { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(yellow.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_minimal-yellow { + background-position: 0 0; +} + .icheckbox_minimal-yellow.hover { + background-position: -20px 0; + } + .icheckbox_minimal-yellow.checked { + background-position: -40px 0; + } + .icheckbox_minimal-yellow.disabled { + background-position: -60px 0; + cursor: default; + } + .icheckbox_minimal-yellow.checked.disabled { + background-position: -80px 0; + } + +.iradio_minimal-yellow { + background-position: -100px 0; +} + .iradio_minimal-yellow.hover { + background-position: -120px 0; + } + .iradio_minimal-yellow.checked { + background-position: -140px 0; + } + .iradio_minimal-yellow.disabled { + background-position: -160px 0; + cursor: default; + } + .iradio_minimal-yellow.checked.disabled { + background-position: -180px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_minimal-yellow, + .iradio_minimal-yellow { + background-image: url(yellow@2x.png); + -webkit-background-size: 200px 20px; + background-size: 200px 20px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/yellow.png b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/yellow.png new file mode 100644 index 0000000..0999b7e Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/yellow.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/minimal/yellow@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/yellow@2x.png new file mode 100644 index 0000000..c16f2b7 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/minimal/yellow@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/polaris/polaris.css b/themes/fruitful/inc/metaboxes/js/check/skins/polaris/polaris.css new file mode 100644 index 0000000..2a4d519 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/polaris/polaris.css @@ -0,0 +1,59 @@ +/* iCheck plugin Polaris skin +----------------------------------- */ +.icheckbox_polaris, +.iradio_polaris { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 29px; + height: 29px; + background: url(polaris.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_polaris { + background-position: 0 0; +} + .icheckbox_polaris.hover { + background-position: -31px 0; + } + .icheckbox_polaris.checked { + background-position: -62px 0; + } + .icheckbox_polaris.disabled { + background-position: -93px 0; + cursor: default; + } + .icheckbox_polaris.checked.disabled { + background-position: -124px 0; + } + +.iradio_polaris { + background-position: -155px 0; +} + .iradio_polaris.hover { + background-position: -186px 0; + } + .iradio_polaris.checked { + background-position: -217px 0; + } + .iradio_polaris.disabled { + background-position: -248px 0; + cursor: default; + } + .iradio_polaris.checked.disabled { + background-position: -279px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_polaris, + .iradio_polaris { + background-image: url(polaris@2x.png); + -webkit-background-size: 310px 31px; + background-size: 310px 31px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/polaris/polaris.png b/themes/fruitful/inc/metaboxes/js/check/skins/polaris/polaris.png new file mode 100644 index 0000000..60c14e6 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/polaris/polaris.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/polaris/polaris@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/polaris/polaris@2x.png new file mode 100644 index 0000000..c75b826 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/polaris/polaris@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/_all.css b/themes/fruitful/inc/metaboxes/js/check/skins/square/_all.css new file mode 100644 index 0000000..90c3a69 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/square/_all.css @@ -0,0 +1,590 @@ +/* iCheck plugin Square skin +----------------------------------- */ +.icheckbox_square, +.iradio_square { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(square.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square { + background-position: 0 0; +} + .icheckbox_square.hover { + background-position: -24px 0; + } + .icheckbox_square.checked { + background-position: -48px 0; + } + .icheckbox_square.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square.checked.disabled { + background-position: -96px 0; + } + +.iradio_square { + background-position: -120px 0; +} + .iradio_square.hover { + background-position: -144px 0; + } + .iradio_square.checked { + background-position: -168px 0; + } + .iradio_square.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square, + .iradio_square { + background-image: url(square@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} + +/* red */ +.icheckbox_square-red, +.iradio_square-red { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(red.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-red { + background-position: 0 0; +} + .icheckbox_square-red.hover { + background-position: -24px 0; + } + .icheckbox_square-red.checked { + background-position: -48px 0; + } + .icheckbox_square-red.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-red.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-red { + background-position: -120px 0; +} + .iradio_square-red.hover { + background-position: -144px 0; + } + .iradio_square-red.checked { + background-position: -168px 0; + } + .iradio_square-red.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-red.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-red, + .iradio_square-red { + background-image: url(red@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} + +/* green */ +.icheckbox_square-green, +.iradio_square-green { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(green.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-green { + background-position: 0 0; +} + .icheckbox_square-green.hover { + background-position: -24px 0; + } + .icheckbox_square-green.checked { + background-position: -48px 0; + } + .icheckbox_square-green.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-green.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-green { + background-position: -120px 0; +} + .iradio_square-green.hover { + background-position: -144px 0; + } + .iradio_square-green.checked { + background-position: -168px 0; + } + .iradio_square-green.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-green.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-green, + .iradio_square-green { + background-image: url(green@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} + +/* blue */ +.icheckbox_square-blue, +.iradio_square-blue { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(blue.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-blue { + background-position: 0 0; +} + .icheckbox_square-blue.hover { + background-position: -24px 0; + } + .icheckbox_square-blue.checked { + background-position: -48px 0; + } + .icheckbox_square-blue.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-blue.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-blue { + background-position: -120px 0; +} + .iradio_square-blue.hover { + background-position: -144px 0; + } + .iradio_square-blue.checked { + background-position: -168px 0; + } + .iradio_square-blue.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-blue.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-blue, + .iradio_square-blue { + background-image: url(blue@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} + +/* aero */ +.icheckbox_square-aero, +.iradio_square-aero { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(aero.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-aero { + background-position: 0 0; +} + .icheckbox_square-aero.hover { + background-position: -24px 0; + } + .icheckbox_square-aero.checked { + background-position: -48px 0; + } + .icheckbox_square-aero.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-aero.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-aero { + background-position: -120px 0; +} + .iradio_square-aero.hover { + background-position: -144px 0; + } + .iradio_square-aero.checked { + background-position: -168px 0; + } + .iradio_square-aero.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-aero.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-aero, + .iradio_square-aero { + background-image: url(aero@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} + +/* grey */ +.icheckbox_square-grey, +.iradio_square-grey { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(grey.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-grey { + background-position: 0 0; +} + .icheckbox_square-grey.hover { + background-position: -24px 0; + } + .icheckbox_square-grey.checked { + background-position: -48px 0; + } + .icheckbox_square-grey.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-grey.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-grey { + background-position: -120px 0; +} + .iradio_square-grey.hover { + background-position: -144px 0; + } + .iradio_square-grey.checked { + background-position: -168px 0; + } + .iradio_square-grey.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-grey.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-grey, + .iradio_square-grey { + background-image: url(grey@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} + +/* orange */ +.icheckbox_square-orange, +.iradio_square-orange { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(orange.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-orange { + background-position: 0 0; +} + .icheckbox_square-orange.hover { + background-position: -24px 0; + } + .icheckbox_square-orange.checked { + background-position: -48px 0; + } + .icheckbox_square-orange.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-orange.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-orange { + background-position: -120px 0; +} + .iradio_square-orange.hover { + background-position: -144px 0; + } + .iradio_square-orange.checked { + background-position: -168px 0; + } + .iradio_square-orange.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-orange.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-orange, + .iradio_square-orange { + background-image: url(orange@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} + +/* yellow */ +.icheckbox_square-yellow, +.iradio_square-yellow { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(yellow.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-yellow { + background-position: 0 0; +} + .icheckbox_square-yellow.hover { + background-position: -24px 0; + } + .icheckbox_square-yellow.checked { + background-position: -48px 0; + } + .icheckbox_square-yellow.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-yellow.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-yellow { + background-position: -120px 0; +} + .iradio_square-yellow.hover { + background-position: -144px 0; + } + .iradio_square-yellow.checked { + background-position: -168px 0; + } + .iradio_square-yellow.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-yellow.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-yellow, + .iradio_square-yellow { + background-image: url(yellow@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} + +/* pink */ +.icheckbox_square-pink, +.iradio_square-pink { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(pink.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-pink { + background-position: 0 0; +} + .icheckbox_square-pink.hover { + background-position: -24px 0; + } + .icheckbox_square-pink.checked { + background-position: -48px 0; + } + .icheckbox_square-pink.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-pink.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-pink { + background-position: -120px 0; +} + .iradio_square-pink.hover { + background-position: -144px 0; + } + .iradio_square-pink.checked { + background-position: -168px 0; + } + .iradio_square-pink.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-pink.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-pink, + .iradio_square-pink { + background-image: url(pink@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} + +/* purple */ +.icheckbox_square-purple, +.iradio_square-purple { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(purple.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-purple { + background-position: 0 0; +} + .icheckbox_square-purple.hover { + background-position: -24px 0; + } + .icheckbox_square-purple.checked { + background-position: -48px 0; + } + .icheckbox_square-purple.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-purple.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-purple { + background-position: -120px 0; +} + .iradio_square-purple.hover { + background-position: -144px 0; + } + .iradio_square-purple.checked { + background-position: -168px 0; + } + .iradio_square-purple.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-purple.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-purple, + .iradio_square-purple { + background-image: url(purple@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/aero.css b/themes/fruitful/inc/metaboxes/js/check/skins/square/aero.css new file mode 100644 index 0000000..e31b3ab --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/square/aero.css @@ -0,0 +1,59 @@ +/* iCheck plugin Square skin, aero +----------------------------------- */ +.icheckbox_square-aero, +.iradio_square-aero { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(aero.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-aero { + background-position: 0 0; +} + .icheckbox_square-aero.hover { + background-position: -24px 0; + } + .icheckbox_square-aero.checked { + background-position: -48px 0; + } + .icheckbox_square-aero.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-aero.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-aero { + background-position: -120px 0; +} + .iradio_square-aero.hover { + background-position: -144px 0; + } + .iradio_square-aero.checked { + background-position: -168px 0; + } + .iradio_square-aero.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-aero.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-aero, + .iradio_square-aero { + background-image: url(aero@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/aero.png b/themes/fruitful/inc/metaboxes/js/check/skins/square/aero.png new file mode 100644 index 0000000..1a332e6 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/square/aero.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/aero@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/square/aero@2x.png new file mode 100644 index 0000000..07c5a02 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/square/aero@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/blue.css b/themes/fruitful/inc/metaboxes/js/check/skins/square/blue.css new file mode 100644 index 0000000..f8db2ab --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/square/blue.css @@ -0,0 +1,59 @@ +/* iCheck plugin Square skin, blue +----------------------------------- */ +.icheckbox_square-blue, +.iradio_square-blue { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(blue.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-blue { + background-position: 0 0; +} + .icheckbox_square-blue.hover { + background-position: -24px 0; + } + .icheckbox_square-blue.checked { + background-position: -48px 0; + } + .icheckbox_square-blue.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-blue.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-blue { + background-position: -120px 0; +} + .iradio_square-blue.hover { + background-position: -144px 0; + } + .iradio_square-blue.checked { + background-position: -168px 0; + } + .iradio_square-blue.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-blue.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-blue, + .iradio_square-blue { + background-image: url(blue@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/blue.png b/themes/fruitful/inc/metaboxes/js/check/skins/square/blue.png new file mode 100644 index 0000000..a3e040f Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/square/blue.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/blue@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/square/blue@2x.png new file mode 100644 index 0000000..8fdea12 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/square/blue@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/green.css b/themes/fruitful/inc/metaboxes/js/check/skins/square/green.css new file mode 100644 index 0000000..23f149b --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/square/green.css @@ -0,0 +1,59 @@ +/* iCheck plugin Square skin, green +----------------------------------- */ +.icheckbox_square-green, +.iradio_square-green { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(green.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-green { + background-position: 0 0; +} + .icheckbox_square-green.hover { + background-position: -24px 0; + } + .icheckbox_square-green.checked { + background-position: -48px 0; + } + .icheckbox_square-green.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-green.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-green { + background-position: -120px 0; +} + .iradio_square-green.hover { + background-position: -144px 0; + } + .iradio_square-green.checked { + background-position: -168px 0; + } + .iradio_square-green.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-green.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-green, + .iradio_square-green { + background-image: url(green@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/green.png b/themes/fruitful/inc/metaboxes/js/check/skins/square/green.png new file mode 100644 index 0000000..465824e Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/square/green.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/green@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/square/green@2x.png new file mode 100644 index 0000000..784e874 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/square/green@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/grey.css b/themes/fruitful/inc/metaboxes/js/check/skins/square/grey.css new file mode 100644 index 0000000..909db1a --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/square/grey.css @@ -0,0 +1,59 @@ +/* iCheck plugin Square skin, grey +----------------------------------- */ +.icheckbox_square-grey, +.iradio_square-grey { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(grey.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-grey { + background-position: 0 0; +} + .icheckbox_square-grey.hover { + background-position: -24px 0; + } + .icheckbox_square-grey.checked { + background-position: -48px 0; + } + .icheckbox_square-grey.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-grey.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-grey { + background-position: -120px 0; +} + .iradio_square-grey.hover { + background-position: -144px 0; + } + .iradio_square-grey.checked { + background-position: -168px 0; + } + .iradio_square-grey.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-grey.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-grey, + .iradio_square-grey { + background-image: url(grey@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/grey.png b/themes/fruitful/inc/metaboxes/js/check/skins/square/grey.png new file mode 100644 index 0000000..f693758 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/square/grey.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/grey@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/square/grey@2x.png new file mode 100644 index 0000000..5d6341c Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/square/grey@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/orange.css b/themes/fruitful/inc/metaboxes/js/check/skins/square/orange.css new file mode 100644 index 0000000..c6e5892 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/square/orange.css @@ -0,0 +1,59 @@ +/* iCheck plugin Square skin, orange +----------------------------------- */ +.icheckbox_square-orange, +.iradio_square-orange { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(orange.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-orange { + background-position: 0 0; +} + .icheckbox_square-orange.hover { + background-position: -24px 0; + } + .icheckbox_square-orange.checked { + background-position: -48px 0; + } + .icheckbox_square-orange.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-orange.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-orange { + background-position: -120px 0; +} + .iradio_square-orange.hover { + background-position: -144px 0; + } + .iradio_square-orange.checked { + background-position: -168px 0; + } + .iradio_square-orange.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-orange.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-orange, + .iradio_square-orange { + background-image: url(orange@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/orange.png b/themes/fruitful/inc/metaboxes/js/check/skins/square/orange.png new file mode 100644 index 0000000..8460850 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/square/orange.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/orange@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/square/orange@2x.png new file mode 100644 index 0000000..b1f2319 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/square/orange@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/pink.css b/themes/fruitful/inc/metaboxes/js/check/skins/square/pink.css new file mode 100644 index 0000000..bdab9c7 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/square/pink.css @@ -0,0 +1,59 @@ +/* iCheck plugin Square skin, pink +----------------------------------- */ +.icheckbox_square-pink, +.iradio_square-pink { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(pink.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-pink { + background-position: 0 0; +} + .icheckbox_square-pink.hover { + background-position: -24px 0; + } + .icheckbox_square-pink.checked { + background-position: -48px 0; + } + .icheckbox_square-pink.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-pink.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-pink { + background-position: -120px 0; +} + .iradio_square-pink.hover { + background-position: -144px 0; + } + .iradio_square-pink.checked { + background-position: -168px 0; + } + .iradio_square-pink.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-pink.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-pink, + .iradio_square-pink { + background-image: url(pink@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/pink.png b/themes/fruitful/inc/metaboxes/js/check/skins/square/pink.png new file mode 100644 index 0000000..9c8b4e2 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/square/pink.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/pink@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/square/pink@2x.png new file mode 100644 index 0000000..b1f3a6e Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/square/pink@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/purple.css b/themes/fruitful/inc/metaboxes/js/check/skins/square/purple.css new file mode 100644 index 0000000..4c291b4 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/square/purple.css @@ -0,0 +1,59 @@ +/* iCheck plugin Square skin, purple +----------------------------------- */ +.icheckbox_square-purple, +.iradio_square-purple { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(purple.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-purple { + background-position: 0 0; +} + .icheckbox_square-purple.hover { + background-position: -24px 0; + } + .icheckbox_square-purple.checked { + background-position: -48px 0; + } + .icheckbox_square-purple.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-purple.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-purple { + background-position: -120px 0; +} + .iradio_square-purple.hover { + background-position: -144px 0; + } + .iradio_square-purple.checked { + background-position: -168px 0; + } + .iradio_square-purple.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-purple.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-purple, + .iradio_square-purple { + background-image: url(purple@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/purple.png b/themes/fruitful/inc/metaboxes/js/check/skins/square/purple.png new file mode 100644 index 0000000..6bfc16a Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/square/purple.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/purple@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/square/purple@2x.png new file mode 100644 index 0000000..6d3c8b1 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/square/purple@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/red.css b/themes/fruitful/inc/metaboxes/js/check/skins/square/red.css new file mode 100644 index 0000000..7341bc6 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/square/red.css @@ -0,0 +1,59 @@ +/* iCheck plugin Square skin, red +----------------------------------- */ +.icheckbox_square-red, +.iradio_square-red { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(red.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-red { + background-position: 0 0; +} + .icheckbox_square-red.hover { + background-position: -24px 0; + } + .icheckbox_square-red.checked { + background-position: -48px 0; + } + .icheckbox_square-red.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-red.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-red { + background-position: -120px 0; +} + .iradio_square-red.hover { + background-position: -144px 0; + } + .iradio_square-red.checked { + background-position: -168px 0; + } + .iradio_square-red.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-red.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-red, + .iradio_square-red { + background-image: url(red@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/red.png b/themes/fruitful/inc/metaboxes/js/check/skins/square/red.png new file mode 100644 index 0000000..749675a Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/square/red.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/red@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/square/red@2x.png new file mode 100644 index 0000000..c05700a Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/square/red@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/square.css b/themes/fruitful/inc/metaboxes/js/check/skins/square/square.css new file mode 100644 index 0000000..fb628f9 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/square/square.css @@ -0,0 +1,59 @@ +/* iCheck plugin Square skin, black +----------------------------------- */ +.icheckbox_square, +.iradio_square { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(square.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square { + background-position: 0 0; +} + .icheckbox_square.hover { + background-position: -24px 0; + } + .icheckbox_square.checked { + background-position: -48px 0; + } + .icheckbox_square.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square.checked.disabled { + background-position: -96px 0; + } + +.iradio_square { + background-position: -120px 0; +} + .iradio_square.hover { + background-position: -144px 0; + } + .iradio_square.checked { + background-position: -168px 0; + } + .iradio_square.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square, + .iradio_square { + background-image: url(square@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/square.png b/themes/fruitful/inc/metaboxes/js/check/skins/square/square.png new file mode 100644 index 0000000..2a3c881 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/square/square.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/square@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/square/square@2x.png new file mode 100644 index 0000000..9b56c44 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/square/square@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/yellow.css b/themes/fruitful/inc/metaboxes/js/check/skins/square/yellow.css new file mode 100644 index 0000000..23b1123 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/check/skins/square/yellow.css @@ -0,0 +1,59 @@ +/* iCheck plugin Square skin, yellow +----------------------------------- */ +.icheckbox_square-yellow, +.iradio_square-yellow { + display: inline-block; + *display: inline; + vertical-align: middle; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(yellow.png) no-repeat; + border: none; + cursor: pointer; +} + +.icheckbox_square-yellow { + background-position: 0 0; +} + .icheckbox_square-yellow.hover { + background-position: -24px 0; + } + .icheckbox_square-yellow.checked { + background-position: -48px 0; + } + .icheckbox_square-yellow.disabled { + background-position: -72px 0; + cursor: default; + } + .icheckbox_square-yellow.checked.disabled { + background-position: -96px 0; + } + +.iradio_square-yellow { + background-position: -120px 0; +} + .iradio_square-yellow.hover { + background-position: -144px 0; + } + .iradio_square-yellow.checked { + background-position: -168px 0; + } + .iradio_square-yellow.disabled { + background-position: -192px 0; + cursor: default; + } + .iradio_square-yellow.checked.disabled { + background-position: -216px 0; + } + +/* HiDPI support */ +@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { + .icheckbox_square-yellow, + .iradio_square-yellow { + background-image: url(yellow@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/yellow.png b/themes/fruitful/inc/metaboxes/js/check/skins/square/yellow.png new file mode 100644 index 0000000..b6c0330 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/square/yellow.png differ diff --git a/themes/fruitful/inc/metaboxes/js/check/skins/square/yellow@2x.png b/themes/fruitful/inc/metaboxes/js/check/skins/square/yellow@2x.png new file mode 100644 index 0000000..6b8e328 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/check/skins/square/yellow@2x.png differ diff --git a/themes/fruitful/inc/metaboxes/js/cmb.js b/themes/fruitful/inc/metaboxes/js/cmb.js new file mode 100644 index 0000000..2bf108b --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/cmb.js @@ -0,0 +1,797 @@ +/** + * Controls the behaviours of custom metabox fields. + * + * @author Andrew Norcross + * @author Jared Atchison + * @author Bill Erickson + * @author Justin Sternberg + * @see https://github.com/webdevstudios/Custom-Metaboxes-and-Fields-for-WordPress + */ + +/** + * Custom jQuery for Custom Metaboxes and Fields + */ +window.CMB = (function(window, document, $, undefined){ + 'use strict'; + + // localization strings + var l10n = window.cmb_l10; + var setTimeout = window.setTimeout; + + // CMB functionality object + var cmb = { + formfield : '', + idNumber : false, + file_frames : {}, + repeatEls : 'input:not([type="button"]),select,textarea,.cmb_media_status' + }; + + cmb.metabox = function() { + if ( cmb.$metabox ) { + return cmb.$metabox; + } + cmb.$metabox = $('table.cmb_metabox'); + return cmb.$metabox; + }; + + cmb.init = function() { + + var $metabox = cmb.metabox(); + var $repeatGroup = $metabox.find('.repeatable-group'); + + // hide our spinner gif if we're on a MP6 dashboard + if ( l10n.new_admin_style ) { + $metabox.find('.cmb-spinner img').hide(); + } + + /** + * Initialize time/date/color pickers + */ + cmb.initPickers( $metabox.find('input:text.cmb_timepicker'), $metabox.find('input:text.cmb_datepicker'), $metabox.find('input:text.cmb_colorpicker') ); + + // Wrap date picker in class to narrow the scope of jQuery UI CSS and prevent conflicts + $("#ui-datepicker-div").wrap('
        '); + + // Insert toggle button into DOM wherever there is multicheck. credit: Genesis Framework + $( '

        ' + l10n.check_toggle + '

        ' ).insertBefore( 'ul.cmb_checkbox_list' ); + + $metabox + .on( 'change', '.cmb_upload_file', function() { + cmb.formfield = $(this).attr('id'); + $('#' + cmb.formfield + '_id').val(''); + }) + // Media/file management + .on( 'click', '.cmb-multicheck-toggle', cmb.toggleCheckBoxes ) + .on( 'click', '.cmb_upload_button', cmb.handleMedia ) + .on( 'click', '.cmb_remove_file_button', cmb.handleRemoveMedia ) + // Repeatable content + .on( 'click', '.add-group-row', cmb.addGroupRow ) + .on( 'click', '.add-row-button', cmb.addAjaxRow ) + .on( 'click', '.remove-group-row', cmb.removeGroupRow ) + .on( 'click', '.remove-row-button', cmb.removeAjaxRow ) + // Ajax oEmbed display + .on( 'keyup paste focusout', '.cmb_oembed', cmb.maybeOembed ) + // Reset titles when removing a row + .on( 'cmb_remove_row', '.repeatable-group', cmb.resetTitlesAndIterator ); + + if ( $repeatGroup.length ) { + $repeatGroup + .filter('.sortable').each( function() { + // Add sorting arrows + $(this).find( '.remove-group-row' ).before( ''+ l10n.up_arrow +' '+ l10n.down_arrow +'' ); + }) + .on( 'click', '.shift-rows', cmb.shiftRows ) + .on( 'cmb_add_row', cmb.emptyValue ); + } + + // on pageload + setTimeout( cmb.resizeoEmbeds, 500); + // and on window resize + $(window).on( 'resize', cmb.resizeoEmbeds ); + + }; + + cmb.resetTitlesAndIterator = function() { + // Loop repeatable group tables + $( '.repeatable-group' ).each( function() { + var $table = $(this); + // Loop repeatable group table rows + $table.find( '.repeatable-grouping' ).each( function( rowindex ) { + var $row = $(this); + // Reset rows iterator + $row.data( 'iterator', rowindex ); + // Reset rows title + $row.find( '.cmb-group-title h4' ).text( $table.find( '.add-group-row' ).data( 'grouptitle' ).replace( '{#}', ( rowindex + 1 ) ) ); + }); + }); + }; + + cmb.toggleCheckBoxes = function( event ) { + event.preventDefault(); + var $self = $(this); + var $multicheck = $self.parents( 'td' ).find( 'input[type=checkbox]' ); + + // If the button has already been clicked once... + if ( $self.data( 'checked' ) ) { + // clear the checkboxes and remove the flag + $multicheck.prop( 'checked', false ); + $self.data( 'checked', false ); + } + // Otherwise mark the checkboxes and add a flag + else { + $multicheck.prop( 'checked', true ); + $self.data( 'checked', true ); + } + }; + + cmb.handleMedia = function(event) { + + if ( ! wp ) { + return; + } + + event.preventDefault(); + + var $metabox = cmb.metabox(); + var $self = $(this); + cmb.formfield = $self.prev('input').attr('id'); + var $formfield = $('#'+cmb.formfield); + var formName = $formfield.attr('name'); + var uploadStatus = true; + var attachment = true; + var isList = $self.hasClass( 'cmb_upload_list' ); + + // If this field's media frame already exists, reopen it. + if ( cmb.formfield in cmb.file_frames ) { + cmb.file_frames[cmb.formfield].open(); + return; + } + + // Create the media frame. + cmb.file_frames[cmb.formfield] = wp.media.frames.file_frame = wp.media({ + title: $metabox.find('label[for=' + cmb.formfield + ']').text(), + button: { + text: l10n.upload_file + }, + multiple: isList ? true : false + }); + + var handlers = { + list : function( selection ) { + // Get all of our selected files + attachment = selection.toJSON(); + + $formfield.val(attachment.url); + $('#'+ cmb.formfield +'_id').val(attachment.id); + + // Setup our fileGroup array + var fileGroup = []; + + // Loop through each attachment + $( attachment ).each( function() { + if ( this.type && this.type === 'image' ) { + // image preview + uploadStatus = '
      • '+ + ''+ this.filename +''+ + '

        '+ l10n.remove_image +'

        '+ + ''+ + '
      • '; + + } else { + // Standard generic output if it's not an image. + uploadStatus = '
      • '+ l10n.file +' '+ this.filename +'    ('+ l10n.download +' / '+ l10n.remove_file +')'+ + ''+ + '
      • '; + + } + + // Add our file to our fileGroup array + fileGroup.push( uploadStatus ); + }); + + // Append each item from our fileGroup array to .cmb_media_status + $( fileGroup ).each( function() { + $formfield.siblings('.cmb_media_status').slideDown().append(this); + }); + }, + single : function( selection ) { + // Only get one file from the uploader + attachment = selection.first().toJSON(); + + $formfield.val(attachment.url); + $('#'+ cmb.formfield +'_id').val(attachment.id); + + if ( attachment.type && attachment.type === 'image' ) { + // image preview + uploadStatus = ''; + } else { + // Standard generic output if it's not an image. + uploadStatus = l10n.file +' '+ attachment.filename +'    ('+ l10n.download +' / '+ l10n.remove_file +')'; + } + + // add/display our output + $formfield.siblings('.cmb_media_status').slideDown().html(uploadStatus); + } + }; + + // When an file is selected, run a callback. + cmb.file_frames[cmb.formfield].on( 'select', function() { + var selection = cmb.file_frames[cmb.formfield].state().get('selection'); + var type = isList ? 'list' : 'single'; + handlers[type]( selection ); + }); + + // Finally, open the modal + cmb.file_frames[cmb.formfield].open(); + }; + + cmb.handleRemoveMedia = function( event ) { + event.preventDefault(); + var $self = $(this); + if ( $self.is( '.attach_list .cmb_remove_file_button' ) ){ + $self.parents('li').remove(); + return false; + } + cmb.formfield = $self.attr('rel'); + var $container = $self.parents('.img_status'); + + cmb.metabox().find('input#' + cmb.formfield).val(''); + cmb.metabox().find('input#' + cmb.formfield + '_id').val(''); + if ( ! $container.length ) { + $self.parents('.cmb_media_status').html(''); + } else { + $container.html(''); + } + return false; + }; + + // src: http://www.benalman.com/projects/jquery-replacetext-plugin/ + $.fn.replaceText = function(b, a, c) { + return this.each(function() { + var f = this.firstChild, g, e, d = []; + if (f) { + do { + if (f.nodeType === 3) { + g = f.nodeValue; + e = g.replace(b, a); + if (e !== g) { + if (!c && /= 0; i-- ) { + var id = cmb.neweditor_id[i].id; + var old = cmb.neweditor_id[i].old; + + if ( typeof( tinyMCEPreInit.mceInit[ id ] ) === 'undefined' ) { + var newSettings = jQuery.extend( {}, tinyMCEPreInit.mceInit[ old ] ); + + for ( _prop in newSettings ) { + if ( 'string' === typeof( newSettings[_prop] ) ) { + newSettings[_prop] = newSettings[_prop].replace( new RegExp( old, 'g' ), id ); + } + } + tinyMCEPreInit.mceInit[ id ] = newSettings; + } + if ( typeof( tinyMCEPreInit.qtInit[ id ] ) === 'undefined' ) { + var newQTS = jQuery.extend( {}, tinyMCEPreInit.qtInit[ old ] ); + for ( _prop in newQTS ) { + if ( 'string' === typeof( newQTS[_prop] ) ) { + newQTS[_prop] = newQTS[_prop].replace( new RegExp( old, 'g' ), id ); + } + } + tinyMCEPreInit.qtInit[ id ] = newQTS; + } + tinyMCE.init({ + id : tinyMCEPreInit.mceInit[ id ], + }); + + } + } + + // Init pickers from new row + cmb.initPickers( $row.find('input:text.cmb_timepicker'), $row.find('input:text.cmb_datepicker'), $row.find('input:text.cmb_colorpicker') ); + }; + + cmb.updateNameAttr = function () { + + var $this = $(this); + var name = $this.attr( 'name' ); // get current name + + // No name? bail + if ( typeof name === 'undefined' ) { + return false; + } + + var prevNum = parseInt( $this.parents( '.repeatable-grouping' ).data( 'iterator' ) ); + var newNum = prevNum - 1; // Subtract 1 to get new iterator number + + // Update field name attributes so data is not orphaned when a row is removed and post is saved + var $newName = name.replace( '[' + prevNum + ']', '[' + newNum + ']' ); + + // New name with replaced iterator + $this.attr( 'name', $newName ); + + }; + + cmb.emptyValue = function( event, row ) { + $('input:not([type="button"]), textarea', row).val(''); + }; + + cmb.addGroupRow = function( event ) { + + event.preventDefault(); + + var $self = $(this); + var $table = $('#'+ $self.data('selector')); + var $oldRow = $table.find('.repeatable-grouping').last(); + var prevNum = parseInt( $oldRow.data('iterator') ); + cmb.idNumber = prevNum + 1; + var $row = $oldRow.clone(); + + $row.data( 'title', $self.data( 'grouptitle' ) ).newRowHousekeeping().cleanRow( prevNum, true ); + + // console.log( '$row.html()', $row.html() ); + var $newRow = $( ''+ $row.html() +'' ); + $oldRow.after( $newRow ); + // console.log( '$newRow.html()', $row.html() ); + + cmb.afterRowInsert( $newRow ); + + if ( $table.find('.repeatable-grouping').length <= 1 ) { + $table.find('.remove-group-row').prop('disabled', true); + } else { + $table.find('.remove-group-row').removeAttr( 'disabled' ); + } + + $table.trigger( 'cmb_add_row', $newRow ); + }; + + cmb.addAjaxRow = function( event ) { + + event.preventDefault(); + + var $self = $(this); + var tableselector = '#'+ $self.data('selector'); + var $table = $(tableselector); + var $emptyrow = $table.find('.empty-row'); + var prevNum = parseInt( $emptyrow.find('[data-iterator]').data('iterator') ); + cmb.idNumber = prevNum + 1; + var $row = $emptyrow.clone(); + + $row.newRowHousekeeping().cleanRow( prevNum ); + + $emptyrow.removeClass('empty-row').addClass('repeat-row'); + $emptyrow.after( $row ); + + cmb.afterRowInsert( $row ); + $table.trigger( 'cmb_add_row', $row ); + }; + + cmb.removeGroupRow = function( event ) { + event.preventDefault(); + var $self = $(this); + var $table = $('#'+ $self.data('selector')); + var $parent = $self.parents('.repeatable-grouping'); + var noRows = $table.find('.repeatable-grouping').length; + + // when a group is removed loop through all next groups and update fields names + $parent.nextAll( '.repeatable-grouping' ).find( cmb.repeatEls ).each( cmb.updateNameAttr ); + + if ( noRows > 1 ) { + $parent.remove(); + if ( noRows < 3 ) { + $table.find('.remove-group-row').prop('disabled', true); + } else { + $table.find('.remove-group-row').prop('disabled', false); + } + $table.trigger( 'cmb_remove_row' ); + } + }; + + cmb.removeAjaxRow = function( event ) { + event.preventDefault(); + var $self = $(this); + var $parent = $self.parents('tr'); + var $table = $self.parents('.cmb-repeat-table'); + + // cmb.log( 'number of tbodys', $table.length ); + // cmb.log( 'number of trs', $('tr', $table).length ); + if ( $table.find('tr').length > 1 ) { + if ( $parent.hasClass('empty-row') ) { + $parent.prev().addClass( 'empty-row' ).removeClass('repeat-row'); + } + $self.parents('.cmb-repeat-table tr').remove(); + $table.trigger( 'cmb_remove_row' ); + } + }; + + cmb.shiftRows = function( event ) { + + event.preventDefault(); + + var $self = $(this); + var $parent = $self.parents( '.repeatable-grouping' ); + var $goto = $self.hasClass( 'move-up' ) ? $parent.prev( '.repeatable-grouping' ) : $parent.next( '.repeatable-grouping' ); + + if ( ! $goto.length ) { + return; + } + + var inputVals = []; + // Loop this items fields + $parent.find( cmb.repeatEls ).each( function() { + var $element = $(this); + var val; + if ( $element.hasClass('cmb_media_status') ) { + // special case for image previews + val = $element.html(); + } else if ( 'checkbox' === $element.attr('type') ) { + val = $element.is(':checked'); + cmb.log( 'checked', val ); + } else if ( 'select' === $element.prop('tagName') ) { + val = $element.is(':selected'); + cmb.log( 'checked', val ); + } else { + val = $element.val(); + } + // Get all the current values per element + inputVals.push( { val: val, $: $element } ); + }); + // And swap them all + $goto.find( cmb.repeatEls ).each( function( index ) { + var $element = $(this); + var val; + + if ( $element.hasClass('cmb_media_status') ) { + // special case for image previews + val = $element.html(); + $element.html( inputVals[ index ]['val'] ); + inputVals[ index ]['$'].html( val ); + + } + // handle checkbox swapping + else if ( 'checkbox' === $element.attr('type') ) { + inputVals[ index ]['$'].prop( 'checked', $element.is(':checked') ); + $element.prop( 'checked', inputVals[ index ]['val'] ); + } + // handle select swapping + else if ( 'select' === $element.prop('tagName') ) { + inputVals[ index ]['$'].prop( 'selected', $element.is(':selected') ); + $element.prop( 'selected', inputVals[ index ]['val'] ); + } + // handle normal input swapping + else { + inputVals[ index ]['$'].val( $element.val() ); + $element.val( inputVals[ index ]['val'] ); + } + }); + }; + + /** + * @todo make work, always + */ + cmb.initPickers = function( $timePickers, $datePickers, $colorPickers ) { + // Initialize timepicker + cmb.initTimePickers( $timePickers ); + + // Initialize jQuery UI datepicker + cmb.initDatePickers( $datePickers ); + + // Initialize color picker + cmb.initColorPickers( $colorPickers ); + }; + + cmb.initTimePickers = function( $selector ) { + if ( ! $selector.length ) { + return; + } + + $selector.timePicker({ + startTime: "00:00", + endTime: "23:59", + show24Hours: false, + separator: ':', + step: 30 + }); + }; + + cmb.initDatePickers = function( $selector ) { + if ( ! $selector.length ) { + return; + } + + $selector.datepicker( "destroy" ); + $selector.datepicker(); + }; + + cmb.initColorPickers = function( $selector ) { + if ( ! $selector.length ) { + return; + } + if (typeof jQuery.wp === 'object' && typeof jQuery.wp.wpColorPicker === 'function') { + + $selector.wpColorPicker(); + + } else { + $selector.each( function(i) { + $(this).after('
        '); + $('#picker-' + i).hide().farbtastic($(this)); + }) + .focus( function() { + $(this).next().show(); + }) + .blur( function() { + $(this).next().hide(); + }); + } + }; + + cmb.maybeOembed = function( evt ) { + var $self = $(this); + var type = evt.type; + + var m = { + focusout : function() { + setTimeout( function() { + // if it's been 2 seconds, hide our spinner + cmb.spinner( '.postbox table.cmb_metabox', true ); + }, 2000); + }, + keyup : function() { + var betw = function( min, max ) { + return ( evt.which <= max && evt.which >= min ); + }; + // Only Ajax on normal keystrokes + if ( betw( 48, 90 ) || betw( 96, 111 ) || betw( 8, 9 ) || evt.which === 187 || evt.which === 190 ) { + // fire our ajax function + cmb.doAjax( $self, evt); + } + }, + paste : function() { + // paste event is fired before the value is filled, so wait a bit + setTimeout( function() { cmb.doAjax( $self ); }, 100); + } + }; + m[type](); + + }; + + /** + * Resize oEmbed videos to fit in their respective metaboxes + */ + cmb.resizeoEmbeds = function() { + cmb.metabox().each( function() { + var $self = $(this); + var $tableWrap = $self.parents('.inside'); + if ( ! $tableWrap.length ) { + return true; // continue + } + + // Calculate new width + var newWidth = Math.round(($tableWrap.width() * 0.82)*0.97) - 30; + if ( newWidth > 639 ) { + return true; // continue + } + + var $embeds = $self.find('.cmb-type-oembed .embed_status'); + var $children = $embeds.children().not('.cmb_remove_wrapper'); + if ( ! $children.length ) { + return true; // continue + } + + $children.each( function() { + var $self = $(this); + var iwidth = $self.width(); + var iheight = $self.height(); + var _newWidth = newWidth; + if ( $self.parents( '.repeat-row' ).length ) { + // Make room for our repeatable "remove" button column + _newWidth = newWidth - 91; + } + // Calc new height + var newHeight = Math.round((_newWidth * iheight)/iwidth); + $self.width(_newWidth).height(newHeight); + }); + + }); + }; + + /** + * Safely log things if query var is set + * @since 1.0.0 + */ + cmb.log = function() { + if ( l10n.script_debug && console && typeof console.log === 'function' ) { + console.log.apply(console, arguments); + } + }; + + cmb.spinner = function( $context, hide ) { + if ( hide ) { + $('.cmb-spinner', $context ).hide(); + } + else { + $('.cmb-spinner', $context ).show(); + } + }; + + // function for running our ajax + cmb.doAjax = function($obj) { + // get typed value + var oembed_url = $obj.val(); + // only proceed if the field contains more than 6 characters + if ( oembed_url.length < 6 ) { + return; + } + + // only proceed if the user has pasted, pressed a number, letter, or whitelisted characters + + // get field id + var field_id = $obj.attr('id'); + // get our inputs $context for pinpointing + var $context = $obj.parents('.cmb-repeat-table tr td'); + $context = $context.length ? $context : $obj.parents('.cmb_metabox tr td'); + + var embed_container = $('.embed_status', $context); + var oembed_width = $obj.width(); + var child_el = $(':first-child', embed_container); + + // http://www.youtube.com/watch?v=dGG7aru2S6U + cmb.log( 'oembed_url', oembed_url, field_id ); + oembed_width = ( embed_container.length && child_el.length ) ? child_el.width() : $obj.width(); + + // show our spinner + cmb.spinner( $context ); + // clear out previous results + $('.embed_wrap', $context).html(''); + // and run our ajax function + setTimeout( function() { + // if they haven't typed in 500 ms + if ( $('.cmb_oembed:focus').val() !== oembed_url ) { + return; + } + $.ajax({ + type : 'post', + dataType : 'json', + url : l10n.ajaxurl, + data : { + 'action': 'cmb_oembed_handler', + 'oembed_url': oembed_url, + 'oembed_width': oembed_width > 300 ? oembed_width : 300, + 'field_id': field_id, + 'object_id': $obj.data('objectid'), + 'object_type': $obj.data('objecttype'), + 'cmb_ajax_nonce': l10n.ajax_nonce + }, + success: function(response) { + cmb.log( response ); + // Make sure we have a response id + if ( typeof response.id === 'undefined' ) { + return; + } + + // hide our spinner + cmb.spinner( $context, true ); + // and populate our results from ajax response + $('.embed_wrap', $context).html(response.result); + } + }); + + }, 500); + }; + + $(document).ready(cmb.init); + + return cmb; + +})(window, document, jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/cmb.min.js b/themes/fruitful/inc/metaboxes/js/cmb.min.js new file mode 100644 index 0000000..b707b46 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/cmb.min.js @@ -0,0 +1 @@ +window.CMB=function(window,document,$){"use strict";var l10n=window.cmb_l10,setTimeout=window.setTimeout,cmb={formfield:"",idNumber:!1,file_frames:{},repeatEls:'input:not([type="button"]),select,textarea,.cmb_media_status'};return cmb.metabox=function(){return cmb.$metabox?cmb.$metabox:(cmb.$metabox=$("table.cmb_metabox"),cmb.$metabox)},cmb.init=function(){var $metabox=cmb.metabox(),$repeatGroup=$metabox.find(".repeatable-group");l10n.new_admin_style&&$metabox.find(".cmb-spinner img").hide(),cmb.initPickers($metabox.find("input:text.cmb_timepicker"),$metabox.find("input:text.cmb_datepicker"),$metabox.find("input:text.cmb_colorpicker")),$("#ui-datepicker-div").wrap('
        '),$('

        '+l10n.check_toggle+"

        ").insertBefore("ul.cmb_checkbox_list"),$metabox.on("change",".cmb_upload_file",function(){cmb.formfield=$(this).attr("id"),$("#"+cmb.formfield+"_id").val("")}).on("click",".cmb-multicheck-toggle",cmb.toggleCheckBoxes).on("click",".cmb_upload_button",cmb.handleMedia).on("click",".cmb_remove_file_button",cmb.handleRemoveMedia).on("click",".add-group-row",cmb.addGroupRow).on("click",".add-row-button",cmb.addAjaxRow).on("click",".remove-group-row",cmb.removeGroupRow).on("click",".remove-row-button",cmb.removeAjaxRow).on("keyup paste focusout",".cmb_oembed",cmb.maybeOembed).on("cmb_remove_row",".repeatable-group",cmb.resetTitlesAndIterator),$repeatGroup.length&&$repeatGroup.filter(".sortable").each(function(){$(this).find(".remove-group-row").before(''+l10n.up_arrow+' '+l10n.down_arrow+"")}).on("click",".shift-rows",cmb.shiftRows).on("cmb_add_row",cmb.emptyValue),setTimeout(cmb.resizeoEmbeds,500),$(window).on("resize",cmb.resizeoEmbeds)},cmb.resetTitlesAndIterator=function(){$(".repeatable-group").each(function(){var $table=$(this);$table.find(".repeatable-grouping").each(function(rowindex){var $row=$(this);$row.data("iterator",rowindex),$row.find(".cmb-group-title h4").text($table.find(".add-group-row").data("grouptitle").replace("{#}",rowindex+1))})})},cmb.toggleCheckBoxes=function(event){event.preventDefault();var $self=$(this),$multicheck=$self.parents("td").find("input[type=checkbox]");$self.data("checked")?($multicheck.prop("checked",!1),$self.data("checked",!1)):($multicheck.prop("checked",!0),$self.data("checked",!0))},cmb.handleMedia=function(event){if(wp){event.preventDefault();var $metabox=cmb.metabox(),$self=$(this);cmb.formfield=$self.prev("input").attr("id");var $formfield=$("#"+cmb.formfield),formName=$formfield.attr("name"),uploadStatus=!0,attachment=!0,isList=$self.hasClass("cmb_upload_list");if(cmb.formfield in cmb.file_frames)return void cmb.file_frames[cmb.formfield].open();cmb.file_frames[cmb.formfield]=wp.media.frames.file_frame=wp.media({title:$metabox.find("label[for="+cmb.formfield+"]").text(),button:{text:l10n.upload_file},multiple:isList?!0:!1});var handlers={list:function(selection){attachment=selection.toJSON(),$formfield.val(attachment.url),$("#"+cmb.formfield+"_id").val(attachment.id);var fileGroup=[];$(attachment).each(function(){uploadStatus=this.type&&"image"===this.type?'
      • '+this.filename+'

        '+l10n.remove_image+'

      • ':"
      • "+l10n.file+" "+this.filename+'    ('+l10n.download+' / '+l10n.remove_file+')
      • ',fileGroup.push(uploadStatus)}),$(fileGroup).each(function(){$formfield.siblings(".cmb_media_status").slideDown().append(this)})},single:function(selection){attachment=selection.first().toJSON(),$formfield.val(attachment.url),$("#"+cmb.formfield+"_id").val(attachment.id),uploadStatus=attachment.type&&"image"===attachment.type?'":l10n.file+" "+attachment.filename+'    ('+l10n.download+' / '+l10n.remove_file+")",$formfield.siblings(".cmb_media_status").slideDown().html(uploadStatus)}};cmb.file_frames[cmb.formfield].on("select",function(){var selection=cmb.file_frames[cmb.formfield].state().get("selection"),type=isList?"list":"single";handlers[type](selection)}),cmb.file_frames[cmb.formfield].open()}},cmb.handleRemoveMedia=function(event){event.preventDefault();var $self=$(this);if($self.is(".attach_list .cmb_remove_file_button"))return $self.parents("li").remove(),!1;cmb.formfield=$self.attr("rel");var $container=$self.parents(".img_status");return cmb.metabox().find("input#"+cmb.formfield).val(""),cmb.metabox().find("input#"+cmb.formfield+"_id").val(""),$container.length?$container.html(""):$self.parents(".cmb_media_status").html(""),!1},$.fn.replaceText=function(b,a,c){return this.each(function(){var g,e,f=this.firstChild,d=[];if(f)do 3===f.nodeType&&(g=f.nodeValue,e=g.replace(b,a),e!==g&&(!c&&/=0;i--){var id=cmb.neweditor_id[i].id,old=cmb.neweditor_id[i].old;if("undefined"==typeof tinyMCEPreInit.mceInit[id]){var newSettings=jQuery.extend({},tinyMCEPreInit.mceInit[old]);for(_prop in newSettings)"string"==typeof newSettings[_prop]&&(newSettings[_prop]=newSettings[_prop].replace(new RegExp(old,"g"),id));tinyMCEPreInit.mceInit[id]=newSettings}if("undefined"==typeof tinyMCEPreInit.qtInit[id]){var newQTS=jQuery.extend({},tinyMCEPreInit.qtInit[old]);for(_prop in newQTS)"string"==typeof newQTS[_prop]&&(newQTS[_prop]=newQTS[_prop].replace(new RegExp(old,"g"),id));tinyMCEPreInit.qtInit[id]=newQTS}tinyMCE.init({id:tinyMCEPreInit.mceInit[id]})}}cmb.initPickers($row.find("input:text.cmb_timepicker"),$row.find("input:text.cmb_datepicker"),$row.find("input:text.cmb_colorpicker"))},cmb.updateNameAttr=function(){var $this=$(this),name=$this.attr("name");if("undefined"==typeof name)return!1;var prevNum=parseInt($this.parents(".repeatable-grouping").data("iterator")),newNum=prevNum-1,$newName=name.replace("["+prevNum+"]","["+newNum+"]");$this.attr("name",$newName)},cmb.emptyValue=function(event,row){$('input:not([type="button"]), textarea',row).val("")},cmb.addGroupRow=function(event){event.preventDefault();var $self=$(this),$table=$("#"+$self.data("selector")),$oldRow=$table.find(".repeatable-grouping").last(),prevNum=parseInt($oldRow.data("iterator"));cmb.idNumber=prevNum+1;var $row=$oldRow.clone();$row.data("title",$self.data("grouptitle")).newRowHousekeeping().cleanRow(prevNum,!0);var $newRow=$(''+$row.html()+"");$oldRow.after($newRow),cmb.afterRowInsert($newRow),$table.find(".repeatable-grouping").length<=1?$table.find(".remove-group-row").prop("disabled",!0):$table.find(".remove-group-row").removeAttr("disabled"),$table.trigger("cmb_add_row",$newRow)},cmb.addAjaxRow=function(event){event.preventDefault();var $self=$(this),tableselector="#"+$self.data("selector"),$table=$(tableselector),$emptyrow=$table.find(".empty-row"),prevNum=parseInt($emptyrow.find("[data-iterator]").data("iterator"));cmb.idNumber=prevNum+1;var $row=$emptyrow.clone();$row.newRowHousekeeping().cleanRow(prevNum),$emptyrow.removeClass("empty-row").addClass("repeat-row"),$emptyrow.after($row),cmb.afterRowInsert($row),$table.trigger("cmb_add_row",$row)},cmb.removeGroupRow=function(event){event.preventDefault();var $self=$(this),$table=$("#"+$self.data("selector")),$parent=$self.parents(".repeatable-grouping"),noRows=$table.find(".repeatable-grouping").length;$parent.nextAll(".repeatable-grouping").find(cmb.repeatEls).each(cmb.updateNameAttr),noRows>1&&($parent.remove(),3>noRows?$table.find(".remove-group-row").prop("disabled",!0):$table.find(".remove-group-row").prop("disabled",!1),$table.trigger("cmb_remove_row"))},cmb.removeAjaxRow=function(event){event.preventDefault();var $self=$(this),$parent=$self.parents("tr"),$table=$self.parents(".cmb-repeat-table");$table.find("tr").length>1&&($parent.hasClass("empty-row")&&$parent.prev().addClass("empty-row").removeClass("repeat-row"),$self.parents(".cmb-repeat-table tr").remove(),$table.trigger("cmb_remove_row"))},cmb.shiftRows=function(event){event.preventDefault();var $self=$(this),$parent=$self.parents(".repeatable-grouping"),$goto=$self.hasClass("move-up")?$parent.prev(".repeatable-grouping"):$parent.next(".repeatable-grouping");if($goto.length){var inputVals=[];$parent.find(cmb.repeatEls).each(function(){var val,$element=$(this);$element.hasClass("cmb_media_status")?val=$element.html():"checkbox"===$element.attr("type")?(val=$element.is(":checked"),cmb.log("checked",val)):"select"===$element.prop("tagName")?(val=$element.is(":selected"),cmb.log("checked",val)):val=$element.val(),inputVals.push({val:val,$:$element})}),$goto.find(cmb.repeatEls).each(function(index){var val,$element=$(this);$element.hasClass("cmb_media_status")?(val=$element.html(),$element.html(inputVals[index].val),inputVals[index].$.html(val)):"checkbox"===$element.attr("type")?(inputVals[index].$.prop("checked",$element.is(":checked")),$element.prop("checked",inputVals[index].val)):"select"===$element.prop("tagName")?(inputVals[index].$.prop("selected",$element.is(":selected")),$element.prop("selected",inputVals[index].val)):(inputVals[index].$.val($element.val()),$element.val(inputVals[index].val))})}},cmb.initPickers=function($timePickers,$datePickers,$colorPickers){cmb.initTimePickers($timePickers),cmb.initDatePickers($datePickers),cmb.initColorPickers($colorPickers)},cmb.initTimePickers=function($selector){$selector.length&&$selector.timePicker({startTime:"00:00",endTime:"23:59",show24Hours:!1,separator:":",step:30})},cmb.initDatePickers=function($selector){$selector.length&&($selector.datepicker("destroy"),$selector.datepicker())},cmb.initColorPickers=function($selector){$selector.length&&("object"==typeof jQuery.wp&&"function"==typeof jQuery.wp.wpColorPicker?$selector.wpColorPicker():$selector.each(function(i){$(this).after('
        '),$("#picker-"+i).hide().farbtastic($(this))}).focus(function(){$(this).next().show()}).blur(function(){$(this).next().hide()}))},cmb.maybeOembed=function(evt){var $self=$(this),type=evt.type,m={focusout:function(){setTimeout(function(){cmb.spinner(".postbox table.cmb_metabox",!0)},2e3)},keyup:function(){var betw=function(min,max){return evt.which<=max&&evt.which>=min};(betw(48,90)||betw(96,111)||betw(8,9)||187===evt.which||190===evt.which)&&cmb.doAjax($self,evt)},paste:function(){setTimeout(function(){cmb.doAjax($self)},100)}};m[type]()},cmb.resizeoEmbeds=function(){cmb.metabox().each(function(){var $self=$(this),$tableWrap=$self.parents(".inside");if(!$tableWrap.length)return!0;var newWidth=Math.round(.82*$tableWrap.width()*.97)-30;if(newWidth>639)return!0;var $embeds=$self.find(".cmb-type-oembed .embed_status"),$children=$embeds.children().not(".cmb_remove_wrapper");return $children.length?void $children.each(function(){var $self=$(this),iwidth=$self.width(),iheight=$self.height(),_newWidth=newWidth;$self.parents(".repeat-row").length&&(_newWidth=newWidth-91);var newHeight=Math.round(_newWidth*iheight/iwidth);$self.width(_newWidth).height(newHeight)}):!0})},cmb.log=function(){l10n.script_debug&&console&&"function"==typeof console.log&&console.log.apply(console,arguments)},cmb.spinner=function($context,hide){hide?$(".cmb-spinner",$context).hide():$(".cmb-spinner",$context).show()},cmb.doAjax=function($obj){var oembed_url=$obj.val();if(!(oembed_url.length<6)){var field_id=$obj.attr("id"),$context=$obj.parents(".cmb-repeat-table tr td");$context=$context.length?$context:$obj.parents(".cmb_metabox tr td");var embed_container=$(".embed_status",$context),oembed_width=$obj.width(),child_el=$(":first-child",embed_container);cmb.log("oembed_url",oembed_url,field_id),oembed_width=embed_container.length&&child_el.length?child_el.width():$obj.width(),cmb.spinner($context),$(".embed_wrap",$context).html(""),setTimeout(function(){$(".cmb_oembed:focus").val()===oembed_url&&$.ajax({type:"post",dataType:"json",url:l10n.ajaxurl,data:{action:"cmb_oembed_handler",oembed_url:oembed_url,oembed_width:oembed_width>300?oembed_width:300,field_id:field_id,object_id:$obj.data("objectid"),object_type:$obj.data("objecttype"),cmb_ajax_nonce:l10n.ajax_nonce},success:function(response){cmb.log(response),"undefined"!=typeof response.id&&(cmb.spinner($context,!0),$(".embed_wrap",$context).html(response.result))}})},500)}},$(document).ready(cmb.init),cmb}(window,document,jQuery); \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/custom.js b/themes/fruitful/inc/metaboxes/js/custom.js new file mode 100644 index 0000000..e2cd7e1 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/custom.js @@ -0,0 +1,11 @@ +jQuery(document).ready(function() { + jQuery('.cmb_option').iCheck({ + checkboxClass: 'icheckbox_minimal-grey', + radioClass: 'iradio_minimal-grey' + }); + + jQuery('.cmb_select, .cmb-type-select_timezone td select').each (function() { + jQuery(this).select2({}); + }); + +}); \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/gallery/gallery-admin.css b/themes/fruitful/inc/metaboxes/js/gallery/gallery-admin.css new file mode 100644 index 0000000..694cdce --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/gallery/gallery-admin.css @@ -0,0 +1,4 @@ +#sortable { float:left; margin-bottom: 20px; width: 100%; } +#sortable li { float:left; position:relative; width:150px; height:150px; margin:0 27px 25px 0; padding:2px; cursor:pointer; clear:none !important;} +#sortable .ui-SortPlaceHolder {border:2px dashed #c7c3c1; padding:0;} +.soratble-inner { display: block; float: left; width: 100%; } \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/gallery/gallery-init.js b/themes/fruitful/inc/metaboxes/js/gallery/gallery-init.js new file mode 100644 index 0000000..f1122d4 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/gallery/gallery-init.js @@ -0,0 +1,42 @@ +var file_frame = ''; +jQuery(document).ready(function($) { + jQuery('.add_gallery_items_button').live('click', function( event ) { + event.preventDefault(); + if (file_frame) { + file_frame.open(); + return; + } + file_frame = wp.media.editor.send.attachment = wp.media({ + editing: true, + multiple: true + }); + file_frame.on( 'select', function() { + var selection = file_frame.state().get('selection'); + selection.map( function( attachment ) { + attachment = attachment.toJSON(); + var image_url = attachment.url, + image_id = attachment.id; + var data = { + action: 'anaglyph_add_new_element_action', + type: 'add_new_images', + image_url: image_url, + image_id : image_id, + image_cnt: $("ul.sortable-admin-gallery li.img_status").length, + anaglyph_ajax_nonce : anaglyph_vars_ajax.ajax_nonce, + }; + $.post(anaglyph_vars_ajax.ajaxurl, data, function(response) { + if ($("ul.sortable-admin-gallery li.img_status").length > 0) { + $("ul.sortable-admin-gallery li.img_status").last().after(response); + } else { + $("ul.sortable-admin-gallery").append(response); + } + }); + }); + }); + file_frame.open(); + return false; +}); + + $( "#sortable" ).disableSelection(); + $( "#sortable" ).sortable({placeholder:'ui-SortPlaceHolder'}); +}); \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/jquery.datePicker.min.js b/themes/fruitful/inc/metaboxes/js/jquery.datePicker.min.js new file mode 100644 index 0000000..2e721f3 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/jquery.datePicker.min.js @@ -0,0 +1,2038 @@ +/*! + * jQuery UI Datepicker 1.10.4 + * http://jqueryui.com + * + * Copyright 2014 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://api.jqueryui.com/datepicker/ + * + * Depends: + * jquery.ui.core.js + */ +(function( $, undefined ) { + +$.extend($.ui, { datepicker: { version: "1.10.4" } }); + +var PROP_NAME = "datepicker", + instActive; + +/* Date picker manager. + Use the singleton instance of this class, $.datepicker, to interact with the date picker. + Settings for (groups of) date pickers are maintained in an instance object, + allowing multiple different settings on the same page. */ + +function Datepicker() { + this._curInst = null; // The current instance in use + this._keyEvent = false; // If the last event was a key event + this._disabledInputs = []; // List of date picker inputs that have been disabled + this._datepickerShowing = false; // True if the popup picker is showing , false if not + this._inDialog = false; // True if showing within a "dialog", false if not + this._mainDivId = "ui-datepicker-div"; // The ID of the main datepicker division + this._inlineClass = "ui-datepicker-inline"; // The name of the inline marker class + this._appendClass = "ui-datepicker-append"; // The name of the append marker class + this._triggerClass = "ui-datepicker-trigger"; // The name of the trigger marker class + this._dialogClass = "ui-datepicker-dialog"; // The name of the dialog marker class + this._disableClass = "ui-datepicker-disabled"; // The name of the disabled covering marker class + this._unselectableClass = "ui-datepicker-unselectable"; // The name of the unselectable cell marker class + this._currentClass = "ui-datepicker-current-day"; // The name of the current day marker class + this._dayOverClass = "ui-datepicker-days-cell-over"; // The name of the day hover marker class + this.regional = []; // Available regional settings, indexed by language code + this.regional[""] = { // Default regional settings + closeText: "Done", // Display text for close link + prevText: "Prev", // Display text for previous month link + nextText: "Next", // Display text for next month link + currentText: "Today", // Display text for current month link + monthNames: ["January","February","March","April","May","June", + "July","August","September","October","November","December"], // Names of months for drop-down and formatting + monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], // For formatting + dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], // For formatting + dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], // For formatting + dayNamesMin: ["Su","Mo","Tu","We","Th","Fr","Sa"], // Column headings for days starting at Sunday + weekHeader: "Wk", // Column header for week of the year + dateFormat: "mm/dd/yy", // See format options on parseDate + firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ... + isRTL: false, // True if right-to-left language, false if left-to-right + showMonthAfterYear: false, // True if the year select precedes month, false for month then year + yearSuffix: "" // Additional text to append to the year in the month headers + }; + this._defaults = { // Global defaults for all the date picker instances + showOn: "focus", // "focus" for popup on focus, + // "button" for trigger button, or "both" for either + showAnim: "fadeIn", // Name of jQuery animation for popup + showOptions: {}, // Options for enhanced animations + defaultDate: null, // Used when field is blank: actual date, + // +/-number for offset from today, null for today + appendText: "", // Display text following the input box, e.g. showing the format + buttonText: "...", // Text for trigger button + buttonImage: "", // URL for trigger button image + buttonImageOnly: false, // True if the image appears alone, false if it appears on a button + hideIfNoPrevNext: false, // True to hide next/previous month links + // if not applicable, false to just disable them + navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links + gotoCurrent: false, // True if today link goes back to current selection instead + changeMonth: false, // True if month can be selected directly, false if only prev/next + changeYear: false, // True if year can be selected directly, false if only prev/next + yearRange: "c-10:c+10", // Range of years to display in drop-down, + // either relative to today's year (-nn:+nn), relative to currently displayed year + // (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n) + showOtherMonths: false, // True to show dates in other months, false to leave blank + selectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable + showWeek: false, // True to show week of the year, false to not show it + calculateWeek: this.iso8601Week, // How to calculate the week of the year, + // takes a Date and returns the number of the week for it + shortYearCutoff: "+10", // Short year values < this are in the current century, + // > this are in the previous century, + // string value starting with "+" for current year + value + minDate: null, // The earliest selectable date, or null for no limit + maxDate: null, // The latest selectable date, or null for no limit + duration: "fast", // Duration of display/closure + beforeShowDay: null, // Function that takes a date and returns an array with + // [0] = true if selectable, false if not, [1] = custom CSS class name(s) or "", + // [2] = cell title (optional), e.g. $.datepicker.noWeekends + beforeShow: null, // Function that takes an input field and + // returns a set of custom settings for the date picker + onSelect: null, // Define a callback function when a date is selected + onChangeMonthYear: null, // Define a callback function when the month or year is changed + onClose: null, // Define a callback function when the datepicker is closed + numberOfMonths: 1, // Number of months to show at a time + showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0) + stepMonths: 1, // Number of months to step back/forward + stepBigMonths: 12, // Number of months to step back/forward for the big links + altField: "", // Selector for an alternate field to store selected dates into + altFormat: "", // The date format to use for the alternate field + constrainInput: true, // The input is constrained by the current date format + showButtonPanel: false, // True to show button panel, false to not show it + autoSize: false, // True to size the input for the date format, false to leave as is + disabled: false // The initial disabled state + }; + $.extend(this._defaults, this.regional[""]); + this.dpDiv = bindHover($("
        ")); +} + +$.extend(Datepicker.prototype, { + /* Class name added to elements to indicate already configured with a date picker. */ + markerClassName: "hasDatepicker", + + //Keep track of the maximum number of rows displayed (see #7043) + maxRows: 4, + + // TODO rename to "widget" when switching to widget factory + _widgetDatepicker: function() { + return this.dpDiv; + }, + + /* Override the default settings for all instances of the date picker. + * @param settings object - the new settings to use as defaults (anonymous object) + * @return the manager object + */ + setDefaults: function(settings) { + extendRemove(this._defaults, settings || {}); + return this; + }, + + /* Attach the date picker to a jQuery selection. + * @param target element - the target input field or division or span + * @param settings object - the new settings to use for this date picker instance (anonymous) + */ + _attachDatepicker: function(target, settings) { + var nodeName, inline, inst; + nodeName = target.nodeName.toLowerCase(); + inline = (nodeName === "div" || nodeName === "span"); + if (!target.id) { + this.uuid += 1; + target.id = "dp" + this.uuid; + } + inst = this._newInst($(target), inline); + inst.settings = $.extend({}, settings || {}); + if (nodeName === "input") { + this._connectDatepicker(target, inst); + } else if (inline) { + this._inlineDatepicker(target, inst); + } + }, + + /* Create a new instance object. */ + _newInst: function(target, inline) { + var id = target[0].id.replace(/([^A-Za-z0-9_\-])/g, "\\\\$1"); // escape jQuery meta chars + return {id: id, input: target, // associated target + selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection + drawMonth: 0, drawYear: 0, // month being drawn + inline: inline, // is datepicker inline or not + dpDiv: (!inline ? this.dpDiv : // presentation div + bindHover($("
        ")))}; + }, + + /* Attach the date picker to an input field. */ + _connectDatepicker: function(target, inst) { + var input = $(target); + inst.append = $([]); + inst.trigger = $([]); + if (input.hasClass(this.markerClassName)) { + return; + } + this._attachments(input, inst); + input.addClass(this.markerClassName).keydown(this._doKeyDown). + keypress(this._doKeyPress).keyup(this._doKeyUp); + this._autoSize(inst); + $.data(target, PROP_NAME, inst); + //If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665) + if( inst.settings.disabled ) { + this._disableDatepicker( target ); + } + }, + + /* Make attachments based on settings. */ + _attachments: function(input, inst) { + var showOn, buttonText, buttonImage, + appendText = this._get(inst, "appendText"), + isRTL = this._get(inst, "isRTL"); + + if (inst.append) { + inst.append.remove(); + } + if (appendText) { + inst.append = $("" + appendText + ""); + input[isRTL ? "before" : "after"](inst.append); + } + + input.unbind("focus", this._showDatepicker); + + if (inst.trigger) { + inst.trigger.remove(); + } + + showOn = this._get(inst, "showOn"); + if (showOn === "focus" || showOn === "both") { // pop-up date picker when in the marked field + input.focus(this._showDatepicker); + } + if (showOn === "button" || showOn === "both") { // pop-up date picker when button clicked + buttonText = this._get(inst, "buttonText"); + buttonImage = this._get(inst, "buttonImage"); + inst.trigger = $(this._get(inst, "buttonImageOnly") ? + $("").addClass(this._triggerClass). + attr({ src: buttonImage, alt: buttonText, title: buttonText }) : + $("").addClass(this._triggerClass). + html(!buttonImage ? buttonText : $("").attr( + { src:buttonImage, alt:buttonText, title:buttonText }))); + input[isRTL ? "before" : "after"](inst.trigger); + inst.trigger.click(function() { + if ($.datepicker._datepickerShowing && $.datepicker._lastInput === input[0]) { + $.datepicker._hideDatepicker(); + } else if ($.datepicker._datepickerShowing && $.datepicker._lastInput !== input[0]) { + $.datepicker._hideDatepicker(); + $.datepicker._showDatepicker(input[0]); + } else { + $.datepicker._showDatepicker(input[0]); + } + return false; + }); + } + }, + + /* Apply the maximum length for the date format. */ + _autoSize: function(inst) { + if (this._get(inst, "autoSize") && !inst.inline) { + var findMax, max, maxI, i, + date = new Date(2009, 12 - 1, 20), // Ensure double digits + dateFormat = this._get(inst, "dateFormat"); + + if (dateFormat.match(/[DM]/)) { + findMax = function(names) { + max = 0; + maxI = 0; + for (i = 0; i < names.length; i++) { + if (names[i].length > max) { + max = names[i].length; + maxI = i; + } + } + return maxI; + }; + date.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ? + "monthNames" : "monthNamesShort")))); + date.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ? + "dayNames" : "dayNamesShort"))) + 20 - date.getDay()); + } + inst.input.attr("size", this._formatDate(inst, date).length); + } + }, + + /* Attach an inline date picker to a div. */ + _inlineDatepicker: function(target, inst) { + var divSpan = $(target); + if (divSpan.hasClass(this.markerClassName)) { + return; + } + divSpan.addClass(this.markerClassName).append(inst.dpDiv); + $.data(target, PROP_NAME, inst); + this._setDate(inst, this._getDefaultDate(inst), true); + this._updateDatepicker(inst); + this._updateAlternate(inst); + //If disabled option is true, disable the datepicker before showing it (see ticket #5665) + if( inst.settings.disabled ) { + this._disableDatepicker( target ); + } + // Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements + // http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height + inst.dpDiv.css( "display", "block" ); + }, + + /* Pop-up the date picker in a "dialog" box. + * @param input element - ignored + * @param date string or Date - the initial date to display + * @param onSelect function - the function to call when a date is selected + * @param settings object - update the dialog date picker instance's settings (anonymous object) + * @param pos int[2] - coordinates for the dialog's position within the screen or + * event - with x/y coordinates or + * leave empty for default (screen centre) + * @return the manager object + */ + _dialogDatepicker: function(input, date, onSelect, settings, pos) { + var id, browserWidth, browserHeight, scrollX, scrollY, + inst = this._dialogInst; // internal instance + + if (!inst) { + this.uuid += 1; + id = "dp" + this.uuid; + this._dialogInput = $(""); + this._dialogInput.keydown(this._doKeyDown); + $("body").append(this._dialogInput); + inst = this._dialogInst = this._newInst(this._dialogInput, false); + inst.settings = {}; + $.data(this._dialogInput[0], PROP_NAME, inst); + } + extendRemove(inst.settings, settings || {}); + date = (date && date.constructor === Date ? this._formatDate(inst, date) : date); + this._dialogInput.val(date); + + this._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null); + if (!this._pos) { + browserWidth = document.documentElement.clientWidth; + browserHeight = document.documentElement.clientHeight; + scrollX = document.documentElement.scrollLeft || document.body.scrollLeft; + scrollY = document.documentElement.scrollTop || document.body.scrollTop; + this._pos = // should use actual width/height below + [(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY]; + } + + // move input on screen for focus, but hidden behind dialog + this._dialogInput.css("left", (this._pos[0] + 20) + "px").css("top", this._pos[1] + "px"); + inst.settings.onSelect = onSelect; + this._inDialog = true; + this.dpDiv.addClass(this._dialogClass); + this._showDatepicker(this._dialogInput[0]); + if ($.blockUI) { + $.blockUI(this.dpDiv); + } + $.data(this._dialogInput[0], PROP_NAME, inst); + return this; + }, + + /* Detach a datepicker from its control. + * @param target element - the target input field or division or span + */ + _destroyDatepicker: function(target) { + var nodeName, + $target = $(target), + inst = $.data(target, PROP_NAME); + + if (!$target.hasClass(this.markerClassName)) { + return; + } + + nodeName = target.nodeName.toLowerCase(); + $.removeData(target, PROP_NAME); + if (nodeName === "input") { + inst.append.remove(); + inst.trigger.remove(); + $target.removeClass(this.markerClassName). + unbind("focus", this._showDatepicker). + unbind("keydown", this._doKeyDown). + unbind("keypress", this._doKeyPress). + unbind("keyup", this._doKeyUp); + } else if (nodeName === "div" || nodeName === "span") { + $target.removeClass(this.markerClassName).empty(); + } + }, + + /* Enable the date picker to a jQuery selection. + * @param target element - the target input field or division or span + */ + _enableDatepicker: function(target) { + var nodeName, inline, + $target = $(target), + inst = $.data(target, PROP_NAME); + + if (!$target.hasClass(this.markerClassName)) { + return; + } + + nodeName = target.nodeName.toLowerCase(); + if (nodeName === "input") { + target.disabled = false; + inst.trigger.filter("button"). + each(function() { this.disabled = false; }).end(). + filter("img").css({opacity: "1.0", cursor: ""}); + } else if (nodeName === "div" || nodeName === "span") { + inline = $target.children("." + this._inlineClass); + inline.children().removeClass("ui-state-disabled"); + inline.find("select.ui-datepicker-month, select.ui-datepicker-year"). + prop("disabled", false); + } + this._disabledInputs = $.map(this._disabledInputs, + function(value) { return (value === target ? null : value); }); // delete entry + }, + + /* Disable the date picker to a jQuery selection. + * @param target element - the target input field or division or span + */ + _disableDatepicker: function(target) { + var nodeName, inline, + $target = $(target), + inst = $.data(target, PROP_NAME); + + if (!$target.hasClass(this.markerClassName)) { + return; + } + + nodeName = target.nodeName.toLowerCase(); + if (nodeName === "input") { + target.disabled = true; + inst.trigger.filter("button"). + each(function() { this.disabled = true; }).end(). + filter("img").css({opacity: "0.5", cursor: "default"}); + } else if (nodeName === "div" || nodeName === "span") { + inline = $target.children("." + this._inlineClass); + inline.children().addClass("ui-state-disabled"); + inline.find("select.ui-datepicker-month, select.ui-datepicker-year"). + prop("disabled", true); + } + this._disabledInputs = $.map(this._disabledInputs, + function(value) { return (value === target ? null : value); }); // delete entry + this._disabledInputs[this._disabledInputs.length] = target; + }, + + /* Is the first field in a jQuery collection disabled as a datepicker? + * @param target element - the target input field or division or span + * @return boolean - true if disabled, false if enabled + */ + _isDisabledDatepicker: function(target) { + if (!target) { + return false; + } + for (var i = 0; i < this._disabledInputs.length; i++) { + if (this._disabledInputs[i] === target) { + return true; + } + } + return false; + }, + + /* Retrieve the instance data for the target control. + * @param target element - the target input field or division or span + * @return object - the associated instance data + * @throws error if a jQuery problem getting data + */ + _getInst: function(target) { + try { + return $.data(target, PROP_NAME); + } + catch (err) { + throw "Missing instance data for this datepicker"; + } + }, + + /* Update or retrieve the settings for a date picker attached to an input field or division. + * @param target element - the target input field or division or span + * @param name object - the new settings to update or + * string - the name of the setting to change or retrieve, + * when retrieving also "all" for all instance settings or + * "defaults" for all global defaults + * @param value any - the new value for the setting + * (omit if above is an object or to retrieve a value) + */ + _optionDatepicker: function(target, name, value) { + var settings, date, minDate, maxDate, + inst = this._getInst(target); + + if (arguments.length === 2 && typeof name === "string") { + return (name === "defaults" ? $.extend({}, $.datepicker._defaults) : + (inst ? (name === "all" ? $.extend({}, inst.settings) : + this._get(inst, name)) : null)); + } + + settings = name || {}; + if (typeof name === "string") { + settings = {}; + settings[name] = value; + } + + if (inst) { + if (this._curInst === inst) { + this._hideDatepicker(); + } + + date = this._getDateDatepicker(target, true); + minDate = this._getMinMaxDate(inst, "min"); + maxDate = this._getMinMaxDate(inst, "max"); + extendRemove(inst.settings, settings); + // reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided + if (minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined) { + inst.settings.minDate = this._formatDate(inst, minDate); + } + if (maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined) { + inst.settings.maxDate = this._formatDate(inst, maxDate); + } + if ( "disabled" in settings ) { + if ( settings.disabled ) { + this._disableDatepicker(target); + } else { + this._enableDatepicker(target); + } + } + this._attachments($(target), inst); + this._autoSize(inst); + this._setDate(inst, date); + this._updateAlternate(inst); + this._updateDatepicker(inst); + } + }, + + // change method deprecated + _changeDatepicker: function(target, name, value) { + this._optionDatepicker(target, name, value); + }, + + /* Redraw the date picker attached to an input field or division. + * @param target element - the target input field or division or span + */ + _refreshDatepicker: function(target) { + var inst = this._getInst(target); + if (inst) { + this._updateDatepicker(inst); + } + }, + + /* Set the dates for a jQuery selection. + * @param target element - the target input field or division or span + * @param date Date - the new date + */ + _setDateDatepicker: function(target, date) { + var inst = this._getInst(target); + if (inst) { + this._setDate(inst, date); + this._updateDatepicker(inst); + this._updateAlternate(inst); + } + }, + + /* Get the date(s) for the first entry in a jQuery selection. + * @param target element - the target input field or division or span + * @param noDefault boolean - true if no default date is to be used + * @return Date - the current date + */ + _getDateDatepicker: function(target, noDefault) { + var inst = this._getInst(target); + if (inst && !inst.inline) { + this._setDateFromField(inst, noDefault); + } + return (inst ? this._getDate(inst) : null); + }, + + /* Handle keystrokes. */ + _doKeyDown: function(event) { + var onSelect, dateStr, sel, + inst = $.datepicker._getInst(event.target), + handled = true, + isRTL = inst.dpDiv.is(".ui-datepicker-rtl"); + + inst._keyEvent = true; + if ($.datepicker._datepickerShowing) { + switch (event.keyCode) { + case 9: $.datepicker._hideDatepicker(); + handled = false; + break; // hide on tab out + case 13: sel = $("td." + $.datepicker._dayOverClass + ":not(." + + $.datepicker._currentClass + ")", inst.dpDiv); + if (sel[0]) { + $.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]); + } + + onSelect = $.datepicker._get(inst, "onSelect"); + if (onSelect) { + dateStr = $.datepicker._formatDate(inst); + + // trigger custom callback + onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); + } else { + $.datepicker._hideDatepicker(); + } + + return false; // don't submit the form + case 27: $.datepicker._hideDatepicker(); + break; // hide on escape + case 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ? + -$.datepicker._get(inst, "stepBigMonths") : + -$.datepicker._get(inst, "stepMonths")), "M"); + break; // previous month/year on page up/+ ctrl + case 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ? + +$.datepicker._get(inst, "stepBigMonths") : + +$.datepicker._get(inst, "stepMonths")), "M"); + break; // next month/year on page down/+ ctrl + case 35: if (event.ctrlKey || event.metaKey) { + $.datepicker._clearDate(event.target); + } + handled = event.ctrlKey || event.metaKey; + break; // clear on ctrl or command +end + case 36: if (event.ctrlKey || event.metaKey) { + $.datepicker._gotoToday(event.target); + } + handled = event.ctrlKey || event.metaKey; + break; // current on ctrl or command +home + case 37: if (event.ctrlKey || event.metaKey) { + $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), "D"); + } + handled = event.ctrlKey || event.metaKey; + // -1 day on ctrl or command +left + if (event.originalEvent.altKey) { + $.datepicker._adjustDate(event.target, (event.ctrlKey ? + -$.datepicker._get(inst, "stepBigMonths") : + -$.datepicker._get(inst, "stepMonths")), "M"); + } + // next month/year on alt +left on Mac + break; + case 38: if (event.ctrlKey || event.metaKey) { + $.datepicker._adjustDate(event.target, -7, "D"); + } + handled = event.ctrlKey || event.metaKey; + break; // -1 week on ctrl or command +up + case 39: if (event.ctrlKey || event.metaKey) { + $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), "D"); + } + handled = event.ctrlKey || event.metaKey; + // +1 day on ctrl or command +right + if (event.originalEvent.altKey) { + $.datepicker._adjustDate(event.target, (event.ctrlKey ? + +$.datepicker._get(inst, "stepBigMonths") : + +$.datepicker._get(inst, "stepMonths")), "M"); + } + // next month/year on alt +right + break; + case 40: if (event.ctrlKey || event.metaKey) { + $.datepicker._adjustDate(event.target, +7, "D"); + } + handled = event.ctrlKey || event.metaKey; + break; // +1 week on ctrl or command +down + default: handled = false; + } + } else if (event.keyCode === 36 && event.ctrlKey) { // display the date picker on ctrl+home + $.datepicker._showDatepicker(this); + } else { + handled = false; + } + + if (handled) { + event.preventDefault(); + event.stopPropagation(); + } + }, + + /* Filter entered characters - based on date format. */ + _doKeyPress: function(event) { + var chars, chr, + inst = $.datepicker._getInst(event.target); + + if ($.datepicker._get(inst, "constrainInput")) { + chars = $.datepicker._possibleChars($.datepicker._get(inst, "dateFormat")); + chr = String.fromCharCode(event.charCode == null ? event.keyCode : event.charCode); + return event.ctrlKey || event.metaKey || (chr < " " || !chars || chars.indexOf(chr) > -1); + } + }, + + /* Synchronise manual entry and field/alternate field. */ + _doKeyUp: function(event) { + var date, + inst = $.datepicker._getInst(event.target); + + if (inst.input.val() !== inst.lastVal) { + try { + date = $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"), + (inst.input ? inst.input.val() : null), + $.datepicker._getFormatConfig(inst)); + + if (date) { // only if valid + $.datepicker._setDateFromField(inst); + $.datepicker._updateAlternate(inst); + $.datepicker._updateDatepicker(inst); + } + } + catch (err) { + } + } + return true; + }, + + /* Pop-up the date picker for a given input field. + * If false returned from beforeShow event handler do not show. + * @param input element - the input field attached to the date picker or + * event - if triggered by focus + */ + _showDatepicker: function(input) { + input = input.target || input; + if (input.nodeName.toLowerCase() !== "input") { // find from button/image trigger + input = $("input", input.parentNode)[0]; + } + + if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput === input) { // already here + return; + } + + var inst, beforeShow, beforeShowSettings, isFixed, + offset, showAnim, duration; + + inst = $.datepicker._getInst(input); + if ($.datepicker._curInst && $.datepicker._curInst !== inst) { + $.datepicker._curInst.dpDiv.stop(true, true); + if ( inst && $.datepicker._datepickerShowing ) { + $.datepicker._hideDatepicker( $.datepicker._curInst.input[0] ); + } + } + + beforeShow = $.datepicker._get(inst, "beforeShow"); + beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {}; + if(beforeShowSettings === false){ + return; + } + extendRemove(inst.settings, beforeShowSettings); + + inst.lastVal = null; + $.datepicker._lastInput = input; + $.datepicker._setDateFromField(inst); + + if ($.datepicker._inDialog) { // hide cursor + input.value = ""; + } + if (!$.datepicker._pos) { // position below input + $.datepicker._pos = $.datepicker._findPos(input); + $.datepicker._pos[1] += input.offsetHeight; // add the height + } + + isFixed = false; + $(input).parents().each(function() { + isFixed |= $(this).css("position") === "fixed"; + return !isFixed; + }); + + offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]}; + $.datepicker._pos = null; + //to avoid flashes on Firefox + inst.dpDiv.empty(); + // determine sizing offscreen + inst.dpDiv.css({position: "absolute", display: "block", top: "-1000px"}); + $.datepicker._updateDatepicker(inst); + // fix width for dynamic number of date pickers + // and adjust position before showing + offset = $.datepicker._checkOffset(inst, offset, isFixed); + inst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ? + "static" : (isFixed ? "fixed" : "absolute")), display: "none", + left: offset.left + "px", top: offset.top + "px"}); + + if (!inst.inline) { + showAnim = $.datepicker._get(inst, "showAnim"); + duration = $.datepicker._get(inst, "duration"); + inst.dpDiv.zIndex($(input).zIndex()+1); + $.datepicker._datepickerShowing = true; + + if ( $.effects && $.effects.effect[ showAnim ] ) { + inst.dpDiv.show(showAnim, $.datepicker._get(inst, "showOptions"), duration); + } else { + inst.dpDiv[showAnim || "show"](showAnim ? duration : null); + } + + if ( $.datepicker._shouldFocusInput( inst ) ) { + inst.input.focus(); + } + + $.datepicker._curInst = inst; + } + }, + + /* Generate the date picker content. */ + _updateDatepicker: function(inst) { + this.maxRows = 4; //Reset the max number of rows being displayed (see #7043) + instActive = inst; // for delegate hover events + inst.dpDiv.empty().append(this._generateHTML(inst)); + this._attachHandlers(inst); + inst.dpDiv.find("." + this._dayOverClass + " a").mouseover(); + + var origyearshtml, + numMonths = this._getNumberOfMonths(inst), + cols = numMonths[1], + width = 17; + + inst.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""); + if (cols > 1) { + inst.dpDiv.addClass("ui-datepicker-multi-" + cols).css("width", (width * cols) + "em"); + } + inst.dpDiv[(numMonths[0] !== 1 || numMonths[1] !== 1 ? "add" : "remove") + + "Class"]("ui-datepicker-multi"); + inst.dpDiv[(this._get(inst, "isRTL") ? "add" : "remove") + + "Class"]("ui-datepicker-rtl"); + + if (inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput( inst ) ) { + inst.input.focus(); + } + + // deffered render of the years select (to avoid flashes on Firefox) + if( inst.yearshtml ){ + origyearshtml = inst.yearshtml; + setTimeout(function(){ + //assure that inst.yearshtml didn't change. + if( origyearshtml === inst.yearshtml && inst.yearshtml ){ + inst.dpDiv.find("select.ui-datepicker-year:first").replaceWith(inst.yearshtml); + } + origyearshtml = inst.yearshtml = null; + }, 0); + } + }, + + // #6694 - don't focus the input if it's already focused + // this breaks the change event in IE + // Support: IE and jQuery <1.9 + _shouldFocusInput: function( inst ) { + return inst.input && inst.input.is( ":visible" ) && !inst.input.is( ":disabled" ) && !inst.input.is( ":focus" ); + }, + + /* Check positioning to remain on screen. */ + _checkOffset: function(inst, offset, isFixed) { + var dpWidth = inst.dpDiv.outerWidth(), + dpHeight = inst.dpDiv.outerHeight(), + inputWidth = inst.input ? inst.input.outerWidth() : 0, + inputHeight = inst.input ? inst.input.outerHeight() : 0, + viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft()), + viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop()); + + offset.left -= (this._get(inst, "isRTL") ? (dpWidth - inputWidth) : 0); + offset.left -= (isFixed && offset.left === inst.input.offset().left) ? $(document).scrollLeft() : 0; + offset.top -= (isFixed && offset.top === (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0; + + // now check if datepicker is showing outside window viewport - move to a better place if so. + offset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ? + Math.abs(offset.left + dpWidth - viewWidth) : 0); + offset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ? + Math.abs(dpHeight + inputHeight) : 0); + + return offset; + }, + + /* Find an object's position on the screen. */ + _findPos: function(obj) { + var position, + inst = this._getInst(obj), + isRTL = this._get(inst, "isRTL"); + + while (obj && (obj.type === "hidden" || obj.nodeType !== 1 || $.expr.filters.hidden(obj))) { + obj = obj[isRTL ? "previousSibling" : "nextSibling"]; + } + + position = $(obj).offset(); + return [position.left, position.top]; + }, + + /* Hide the date picker from view. + * @param input element - the input field attached to the date picker + */ + _hideDatepicker: function(input) { + var showAnim, duration, postProcess, onClose, + inst = this._curInst; + + if (!inst || (input && inst !== $.data(input, PROP_NAME))) { + return; + } + + if (this._datepickerShowing) { + showAnim = this._get(inst, "showAnim"); + duration = this._get(inst, "duration"); + postProcess = function() { + $.datepicker._tidyDialog(inst); + }; + + // DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed + if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) { + inst.dpDiv.hide(showAnim, $.datepicker._get(inst, "showOptions"), duration, postProcess); + } else { + inst.dpDiv[(showAnim === "slideDown" ? "slideUp" : + (showAnim === "fadeIn" ? "fadeOut" : "hide"))]((showAnim ? duration : null), postProcess); + } + + if (!showAnim) { + postProcess(); + } + this._datepickerShowing = false; + + onClose = this._get(inst, "onClose"); + if (onClose) { + onClose.apply((inst.input ? inst.input[0] : null), [(inst.input ? inst.input.val() : ""), inst]); + } + + this._lastInput = null; + if (this._inDialog) { + this._dialogInput.css({ position: "absolute", left: "0", top: "-100px" }); + if ($.blockUI) { + $.unblockUI(); + $("body").append(this.dpDiv); + } + } + this._inDialog = false; + } + }, + + /* Tidy up after a dialog display. */ + _tidyDialog: function(inst) { + inst.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar"); + }, + + /* Close date picker if clicked elsewhere. */ + _checkExternalClick: function(event) { + if (!$.datepicker._curInst) { + return; + } + + var $target = $(event.target), + inst = $.datepicker._getInst($target[0]); + + if ( ( ( $target[0].id !== $.datepicker._mainDivId && + $target.parents("#" + $.datepicker._mainDivId).length === 0 && + !$target.hasClass($.datepicker.markerClassName) && + !$target.closest("." + $.datepicker._triggerClass).length && + $.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) ) ) || + ( $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst !== inst ) ) { + $.datepicker._hideDatepicker(); + } + }, + + /* Adjust one of the date sub-fields. */ + _adjustDate: function(id, offset, period) { + var target = $(id), + inst = this._getInst(target[0]); + + if (this._isDisabledDatepicker(target[0])) { + return; + } + this._adjustInstDate(inst, offset + + (period === "M" ? this._get(inst, "showCurrentAtPos") : 0), // undo positioning + period); + this._updateDatepicker(inst); + }, + + /* Action for current link. */ + _gotoToday: function(id) { + var date, + target = $(id), + inst = this._getInst(target[0]); + + if (this._get(inst, "gotoCurrent") && inst.currentDay) { + inst.selectedDay = inst.currentDay; + inst.drawMonth = inst.selectedMonth = inst.currentMonth; + inst.drawYear = inst.selectedYear = inst.currentYear; + } else { + date = new Date(); + inst.selectedDay = date.getDate(); + inst.drawMonth = inst.selectedMonth = date.getMonth(); + inst.drawYear = inst.selectedYear = date.getFullYear(); + } + this._notifyChange(inst); + this._adjustDate(target); + }, + + /* Action for selecting a new month/year. */ + _selectMonthYear: function(id, select, period) { + var target = $(id), + inst = this._getInst(target[0]); + + inst["selected" + (period === "M" ? "Month" : "Year")] = + inst["draw" + (period === "M" ? "Month" : "Year")] = + parseInt(select.options[select.selectedIndex].value,10); + + this._notifyChange(inst); + this._adjustDate(target); + }, + + /* Action for selecting a day. */ + _selectDay: function(id, month, year, td) { + var inst, + target = $(id); + + if ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) { + return; + } + + inst = this._getInst(target[0]); + inst.selectedDay = inst.currentDay = $("a", td).html(); + inst.selectedMonth = inst.currentMonth = month; + inst.selectedYear = inst.currentYear = year; + this._selectDate(id, this._formatDate(inst, + inst.currentDay, inst.currentMonth, inst.currentYear)); + }, + + /* Erase the input field and hide the date picker. */ + _clearDate: function(id) { + var target = $(id); + this._selectDate(target, ""); + }, + + /* Update the input field with the selected date. */ + _selectDate: function(id, dateStr) { + var onSelect, + target = $(id), + inst = this._getInst(target[0]); + + dateStr = (dateStr != null ? dateStr : this._formatDate(inst)); + if (inst.input) { + inst.input.val(dateStr); + } + this._updateAlternate(inst); + + onSelect = this._get(inst, "onSelect"); + if (onSelect) { + onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); // trigger custom callback + } else if (inst.input) { + inst.input.trigger("change"); // fire the change event + } + + if (inst.inline){ + this._updateDatepicker(inst); + } else { + this._hideDatepicker(); + this._lastInput = inst.input[0]; + if (typeof(inst.input[0]) !== "object") { + inst.input.focus(); // restore focus + } + this._lastInput = null; + } + }, + + /* Update any alternate field to synchronise with the main field. */ + _updateAlternate: function(inst) { + var altFormat, date, dateStr, + altField = this._get(inst, "altField"); + + if (altField) { // update alternate field too + altFormat = this._get(inst, "altFormat") || this._get(inst, "dateFormat"); + date = this._getDate(inst); + dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst)); + $(altField).each(function() { $(this).val(dateStr); }); + } + }, + + /* Set as beforeShowDay function to prevent selection of weekends. + * @param date Date - the date to customise + * @return [boolean, string] - is this date selectable?, what is its CSS class? + */ + noWeekends: function(date) { + var day = date.getDay(); + return [(day > 0 && day < 6), ""]; + }, + + /* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition. + * @param date Date - the date to get the week for + * @return number - the number of the week within the year that contains this date + */ + iso8601Week: function(date) { + var time, + checkDate = new Date(date.getTime()); + + // Find Thursday of this week starting on Monday + checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7)); + + time = checkDate.getTime(); + checkDate.setMonth(0); // Compare with Jan 1 + checkDate.setDate(1); + return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1; + }, + + /* Parse a string value into a date object. + * See formatDate below for the possible formats. + * + * @param format string - the expected format of the date + * @param value string - the date in the above format + * @param settings Object - attributes include: + * shortYearCutoff number - the cutoff year for determining the century (optional) + * dayNamesShort string[7] - abbreviated names of the days from Sunday (optional) + * dayNames string[7] - names of the days from Sunday (optional) + * monthNamesShort string[12] - abbreviated names of the months (optional) + * monthNames string[12] - names of the months (optional) + * @return Date - the extracted date value or null if value is blank + */ + parseDate: function (format, value, settings) { + if (format == null || value == null) { + throw "Invalid arguments"; + } + + value = (typeof value === "object" ? value.toString() : value + ""); + if (value === "") { + return null; + } + + var iFormat, dim, extra, + iValue = 0, + shortYearCutoffTemp = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff, + shortYearCutoff = (typeof shortYearCutoffTemp !== "string" ? shortYearCutoffTemp : + new Date().getFullYear() % 100 + parseInt(shortYearCutoffTemp, 10)), + dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort, + dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames, + monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort, + monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames, + year = -1, + month = -1, + day = -1, + doy = -1, + literal = false, + date, + // Check whether a format character is doubled + lookAhead = function(match) { + var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match); + if (matches) { + iFormat++; + } + return matches; + }, + // Extract a number from the string value + getNumber = function(match) { + var isDoubled = lookAhead(match), + size = (match === "@" ? 14 : (match === "!" ? 20 : + (match === "y" && isDoubled ? 4 : (match === "o" ? 3 : 2)))), + digits = new RegExp("^\\d{1," + size + "}"), + num = value.substring(iValue).match(digits); + if (!num) { + throw "Missing number at position " + iValue; + } + iValue += num[0].length; + return parseInt(num[0], 10); + }, + // Extract a name from the string value and convert to an index + getName = function(match, shortNames, longNames) { + var index = -1, + names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) { + return [ [k, v] ]; + }).sort(function (a, b) { + return -(a[1].length - b[1].length); + }); + + $.each(names, function (i, pair) { + var name = pair[1]; + if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) { + index = pair[0]; + iValue += name.length; + return false; + } + }); + if (index !== -1) { + return index + 1; + } else { + throw "Unknown name at position " + iValue; + } + }, + // Confirm that a literal character matches the string value + checkLiteral = function() { + if (value.charAt(iValue) !== format.charAt(iFormat)) { + throw "Unexpected literal at position " + iValue; + } + iValue++; + }; + + for (iFormat = 0; iFormat < format.length; iFormat++) { + if (literal) { + if (format.charAt(iFormat) === "'" && !lookAhead("'")) { + literal = false; + } else { + checkLiteral(); + } + } else { + switch (format.charAt(iFormat)) { + case "d": + day = getNumber("d"); + break; + case "D": + getName("D", dayNamesShort, dayNames); + break; + case "o": + doy = getNumber("o"); + break; + case "m": + month = getNumber("m"); + break; + case "M": + month = getName("M", monthNamesShort, monthNames); + break; + case "y": + year = getNumber("y"); + break; + case "@": + date = new Date(getNumber("@")); + year = date.getFullYear(); + month = date.getMonth() + 1; + day = date.getDate(); + break; + case "!": + date = new Date((getNumber("!") - this._ticksTo1970) / 10000); + year = date.getFullYear(); + month = date.getMonth() + 1; + day = date.getDate(); + break; + case "'": + if (lookAhead("'")){ + checkLiteral(); + } else { + literal = true; + } + break; + default: + checkLiteral(); + } + } + } + + if (iValue < value.length){ + extra = value.substr(iValue); + if (!/^\s+/.test(extra)) { + throw "Extra/unparsed characters found in date: " + extra; + } + } + + if (year === -1) { + year = new Date().getFullYear(); + } else if (year < 100) { + year += new Date().getFullYear() - new Date().getFullYear() % 100 + + (year <= shortYearCutoff ? 0 : -100); + } + + if (doy > -1) { + month = 1; + day = doy; + do { + dim = this._getDaysInMonth(year, month - 1); + if (day <= dim) { + break; + } + month++; + day -= dim; + } while (true); + } + + date = this._daylightSavingAdjust(new Date(year, month - 1, day)); + if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) { + throw "Invalid date"; // E.g. 31/02/00 + } + return date; + }, + + /* Standard date formats. */ + ATOM: "yy-mm-dd", // RFC 3339 (ISO 8601) + COOKIE: "D, dd M yy", + ISO_8601: "yy-mm-dd", + RFC_822: "D, d M y", + RFC_850: "DD, dd-M-y", + RFC_1036: "D, d M y", + RFC_1123: "D, d M yy", + RFC_2822: "D, d M yy", + RSS: "D, d M y", // RFC 822 + TICKS: "!", + TIMESTAMP: "@", + W3C: "yy-mm-dd", // ISO 8601 + + _ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) + + Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000), + + /* Format a date object into a string value. + * The format can be combinations of the following: + * d - day of month (no leading zero) + * dd - day of month (two digit) + * o - day of year (no leading zeros) + * oo - day of year (three digit) + * D - day name short + * DD - day name long + * m - month of year (no leading zero) + * mm - month of year (two digit) + * M - month name short + * MM - month name long + * y - year (two digit) + * yy - year (four digit) + * @ - Unix timestamp (ms since 01/01/1970) + * ! - Windows ticks (100ns since 01/01/0001) + * "..." - literal text + * '' - single quote + * + * @param format string - the desired format of the date + * @param date Date - the date value to format + * @param settings Object - attributes include: + * dayNamesShort string[7] - abbreviated names of the days from Sunday (optional) + * dayNames string[7] - names of the days from Sunday (optional) + * monthNamesShort string[12] - abbreviated names of the months (optional) + * monthNames string[12] - names of the months (optional) + * @return string - the date in the above format + */ + formatDate: function (format, date, settings) { + if (!date) { + return ""; + } + + var iFormat, + dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort, + dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames, + monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort, + monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames, + // Check whether a format character is doubled + lookAhead = function(match) { + var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match); + if (matches) { + iFormat++; + } + return matches; + }, + // Format a number, with leading zero if necessary + formatNumber = function(match, value, len) { + var num = "" + value; + if (lookAhead(match)) { + while (num.length < len) { + num = "0" + num; + } + } + return num; + }, + // Format a name, short or long as requested + formatName = function(match, value, shortNames, longNames) { + return (lookAhead(match) ? longNames[value] : shortNames[value]); + }, + output = "", + literal = false; + + if (date) { + for (iFormat = 0; iFormat < format.length; iFormat++) { + if (literal) { + if (format.charAt(iFormat) === "'" && !lookAhead("'")) { + literal = false; + } else { + output += format.charAt(iFormat); + } + } else { + switch (format.charAt(iFormat)) { + case "d": + output += formatNumber("d", date.getDate(), 2); + break; + case "D": + output += formatName("D", date.getDay(), dayNamesShort, dayNames); + break; + case "o": + output += formatNumber("o", + Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3); + break; + case "m": + output += formatNumber("m", date.getMonth() + 1, 2); + break; + case "M": + output += formatName("M", date.getMonth(), monthNamesShort, monthNames); + break; + case "y": + output += (lookAhead("y") ? date.getFullYear() : + (date.getYear() % 100 < 10 ? "0" : "") + date.getYear() % 100); + break; + case "@": + output += date.getTime(); + break; + case "!": + output += date.getTime() * 10000 + this._ticksTo1970; + break; + case "'": + if (lookAhead("'")) { + output += "'"; + } else { + literal = true; + } + break; + default: + output += format.charAt(iFormat); + } + } + } + } + return output; + }, + + /* Extract all possible characters from the date format. */ + _possibleChars: function (format) { + var iFormat, + chars = "", + literal = false, + // Check whether a format character is doubled + lookAhead = function(match) { + var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match); + if (matches) { + iFormat++; + } + return matches; + }; + + for (iFormat = 0; iFormat < format.length; iFormat++) { + if (literal) { + if (format.charAt(iFormat) === "'" && !lookAhead("'")) { + literal = false; + } else { + chars += format.charAt(iFormat); + } + } else { + switch (format.charAt(iFormat)) { + case "d": case "m": case "y": case "@": + chars += "0123456789"; + break; + case "D": case "M": + return null; // Accept anything + case "'": + if (lookAhead("'")) { + chars += "'"; + } else { + literal = true; + } + break; + default: + chars += format.charAt(iFormat); + } + } + } + return chars; + }, + + /* Get a setting value, defaulting if necessary. */ + _get: function(inst, name) { + return inst.settings[name] !== undefined ? + inst.settings[name] : this._defaults[name]; + }, + + /* Parse existing date and initialise date picker. */ + _setDateFromField: function(inst, noDefault) { + if (inst.input.val() === inst.lastVal) { + return; + } + + var dateFormat = this._get(inst, "dateFormat"), + dates = inst.lastVal = inst.input ? inst.input.val() : null, + defaultDate = this._getDefaultDate(inst), + date = defaultDate, + settings = this._getFormatConfig(inst); + + try { + date = this.parseDate(dateFormat, dates, settings) || defaultDate; + } catch (event) { + dates = (noDefault ? "" : dates); + } + inst.selectedDay = date.getDate(); + inst.drawMonth = inst.selectedMonth = date.getMonth(); + inst.drawYear = inst.selectedYear = date.getFullYear(); + inst.currentDay = (dates ? date.getDate() : 0); + inst.currentMonth = (dates ? date.getMonth() : 0); + inst.currentYear = (dates ? date.getFullYear() : 0); + this._adjustInstDate(inst); + }, + + /* Retrieve the default date shown on opening. */ + _getDefaultDate: function(inst) { + return this._restrictMinMax(inst, + this._determineDate(inst, this._get(inst, "defaultDate"), new Date())); + }, + + /* A date may be specified as an exact value or a relative one. */ + _determineDate: function(inst, date, defaultDate) { + var offsetNumeric = function(offset) { + var date = new Date(); + date.setDate(date.getDate() + offset); + return date; + }, + offsetString = function(offset) { + try { + return $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"), + offset, $.datepicker._getFormatConfig(inst)); + } + catch (e) { + // Ignore + } + + var date = (offset.toLowerCase().match(/^c/) ? + $.datepicker._getDate(inst) : null) || new Date(), + year = date.getFullYear(), + month = date.getMonth(), + day = date.getDate(), + pattern = /([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g, + matches = pattern.exec(offset); + + while (matches) { + switch (matches[2] || "d") { + case "d" : case "D" : + day += parseInt(matches[1],10); break; + case "w" : case "W" : + day += parseInt(matches[1],10) * 7; break; + case "m" : case "M" : + month += parseInt(matches[1],10); + day = Math.min(day, $.datepicker._getDaysInMonth(year, month)); + break; + case "y": case "Y" : + year += parseInt(matches[1],10); + day = Math.min(day, $.datepicker._getDaysInMonth(year, month)); + break; + } + matches = pattern.exec(offset); + } + return new Date(year, month, day); + }, + newDate = (date == null || date === "" ? defaultDate : (typeof date === "string" ? offsetString(date) : + (typeof date === "number" ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime())))); + + newDate = (newDate && newDate.toString() === "Invalid Date" ? defaultDate : newDate); + if (newDate) { + newDate.setHours(0); + newDate.setMinutes(0); + newDate.setSeconds(0); + newDate.setMilliseconds(0); + } + return this._daylightSavingAdjust(newDate); + }, + + /* Handle switch to/from daylight saving. + * Hours may be non-zero on daylight saving cut-over: + * > 12 when midnight changeover, but then cannot generate + * midnight datetime, so jump to 1AM, otherwise reset. + * @param date (Date) the date to check + * @return (Date) the corrected date + */ + _daylightSavingAdjust: function(date) { + if (!date) { + return null; + } + date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0); + return date; + }, + + /* Set the date(s) directly. */ + _setDate: function(inst, date, noChange) { + var clear = !date, + origMonth = inst.selectedMonth, + origYear = inst.selectedYear, + newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date())); + + inst.selectedDay = inst.currentDay = newDate.getDate(); + inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth(); + inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear(); + if ((origMonth !== inst.selectedMonth || origYear !== inst.selectedYear) && !noChange) { + this._notifyChange(inst); + } + this._adjustInstDate(inst); + if (inst.input) { + inst.input.val(clear ? "" : this._formatDate(inst)); + } + }, + + /* Retrieve the date(s) directly. */ + _getDate: function(inst) { + var startDate = (!inst.currentYear || (inst.input && inst.input.val() === "") ? null : + this._daylightSavingAdjust(new Date( + inst.currentYear, inst.currentMonth, inst.currentDay))); + return startDate; + }, + + /* Attach the onxxx handlers. These are declared statically so + * they work with static code transformers like Caja. + */ + _attachHandlers: function(inst) { + var stepMonths = this._get(inst, "stepMonths"), + id = "#" + inst.id.replace( /\\\\/g, "\\" ); + inst.dpDiv.find("[data-handler]").map(function () { + var handler = { + prev: function () { + $.datepicker._adjustDate(id, -stepMonths, "M"); + }, + next: function () { + $.datepicker._adjustDate(id, +stepMonths, "M"); + }, + hide: function () { + $.datepicker._hideDatepicker(); + }, + today: function () { + $.datepicker._gotoToday(id); + }, + selectDay: function () { + $.datepicker._selectDay(id, +this.getAttribute("data-month"), +this.getAttribute("data-year"), this); + return false; + }, + selectMonth: function () { + $.datepicker._selectMonthYear(id, this, "M"); + return false; + }, + selectYear: function () { + $.datepicker._selectMonthYear(id, this, "Y"); + return false; + } + }; + $(this).bind(this.getAttribute("data-event"), handler[this.getAttribute("data-handler")]); + }); + }, + + /* Generate the HTML for the current state of the date picker. */ + _generateHTML: function(inst) { + var maxDraw, prevText, prev, nextText, next, currentText, gotoDate, + controls, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin, + monthNames, monthNamesShort, beforeShowDay, showOtherMonths, + selectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate, + cornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows, + printDate, dRow, tbody, daySettings, otherMonth, unselectable, + tempDate = new Date(), + today = this._daylightSavingAdjust( + new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate())), // clear time + isRTL = this._get(inst, "isRTL"), + showButtonPanel = this._get(inst, "showButtonPanel"), + hideIfNoPrevNext = this._get(inst, "hideIfNoPrevNext"), + navigationAsDateFormat = this._get(inst, "navigationAsDateFormat"), + numMonths = this._getNumberOfMonths(inst), + showCurrentAtPos = this._get(inst, "showCurrentAtPos"), + stepMonths = this._get(inst, "stepMonths"), + isMultiMonth = (numMonths[0] !== 1 || numMonths[1] !== 1), + currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) : + new Date(inst.currentYear, inst.currentMonth, inst.currentDay))), + minDate = this._getMinMaxDate(inst, "min"), + maxDate = this._getMinMaxDate(inst, "max"), + drawMonth = inst.drawMonth - showCurrentAtPos, + drawYear = inst.drawYear; + + if (drawMonth < 0) { + drawMonth += 12; + drawYear--; + } + if (maxDate) { + maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(), + maxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate())); + maxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw); + while (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) { + drawMonth--; + if (drawMonth < 0) { + drawMonth = 11; + drawYear--; + } + } + } + inst.drawMonth = drawMonth; + inst.drawYear = drawYear; + + prevText = this._get(inst, "prevText"); + prevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText, + this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)), + this._getFormatConfig(inst))); + + prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ? + "" + prevText + "" : + (hideIfNoPrevNext ? "" : "" + prevText + "")); + + nextText = this._get(inst, "nextText"); + nextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText, + this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)), + this._getFormatConfig(inst))); + + next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ? + "" + nextText + "" : + (hideIfNoPrevNext ? "" : "" + nextText + "")); + + currentText = this._get(inst, "currentText"); + gotoDate = (this._get(inst, "gotoCurrent") && inst.currentDay ? currentDate : today); + currentText = (!navigationAsDateFormat ? currentText : + this.formatDate(currentText, gotoDate, this._getFormatConfig(inst))); + + controls = (!inst.inline ? "" : ""); + + buttonPanel = (showButtonPanel) ? "
        " + (isRTL ? controls : "") + + (this._isInRange(inst, gotoDate) ? "" : "") + (isRTL ? "" : controls) + "
        " : ""; + + firstDay = parseInt(this._get(inst, "firstDay"),10); + firstDay = (isNaN(firstDay) ? 0 : firstDay); + + showWeek = this._get(inst, "showWeek"); + dayNames = this._get(inst, "dayNames"); + dayNamesMin = this._get(inst, "dayNamesMin"); + monthNames = this._get(inst, "monthNames"); + monthNamesShort = this._get(inst, "monthNamesShort"); + beforeShowDay = this._get(inst, "beforeShowDay"); + showOtherMonths = this._get(inst, "showOtherMonths"); + selectOtherMonths = this._get(inst, "selectOtherMonths"); + defaultDate = this._getDefaultDate(inst); + html = ""; + dow; + for (row = 0; row < numMonths[0]; row++) { + group = ""; + this.maxRows = 4; + for (col = 0; col < numMonths[1]; col++) { + selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay)); + cornerClass = " ui-corner-all"; + calender = ""; + if (isMultiMonth) { + calender += "
        "; + } + calender += "
        " + + (/all|left/.test(cornerClass) && row === 0 ? (isRTL ? next : prev) : "") + + (/all|right/.test(cornerClass) && row === 0 ? (isRTL ? prev : next) : "") + + this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate, + row > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers + "
        " + + ""; + thead = (showWeek ? "" : ""); + for (dow = 0; dow < 7; dow++) { // days of the week + day = (dow + firstDay) % 7; + thead += "= 5 ? " class='ui-datepicker-week-end'" : "") + ">" + + "" + dayNamesMin[day] + ""; + } + calender += thead + ""; + daysInMonth = this._getDaysInMonth(drawYear, drawMonth); + if (drawYear === inst.selectedYear && drawMonth === inst.selectedMonth) { + inst.selectedDay = Math.min(inst.selectedDay, daysInMonth); + } + leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7; + curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate + numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043) + this.maxRows = numRows; + printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays)); + for (dRow = 0; dRow < numRows; dRow++) { // create date picker rows + calender += ""; + tbody = (!showWeek ? "" : ""); + for (dow = 0; dow < 7; dow++) { // create date picker days + daySettings = (beforeShowDay ? + beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, ""]); + otherMonth = (printDate.getMonth() !== drawMonth); + unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] || + (minDate && printDate < minDate) || (maxDate && printDate > maxDate); + tbody += ""; // display selectable date + printDate.setDate(printDate.getDate() + 1); + printDate = this._daylightSavingAdjust(printDate); + } + calender += tbody + ""; + } + drawMonth++; + if (drawMonth > 11) { + drawMonth = 0; + drawYear++; + } + calender += "
        " + this._get(inst, "weekHeader") + "
        " + + this._get(inst, "calculateWeek")(printDate) + "" + // actions + (otherMonth && !showOtherMonths ? " " : // display for other months + (unselectable ? "" + printDate.getDate() + "" : "" + printDate.getDate() + "")) + "
        " + (isMultiMonth ? "
        " + + ((numMonths[0] > 0 && col === numMonths[1]-1) ? "
        " : "") : ""); + group += calender; + } + html += group; + } + html += buttonPanel; + inst._keyEvent = false; + return html; + }, + + /* Generate the month and year header. */ + _generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate, + secondary, monthNames, monthNamesShort) { + + var inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear, + changeMonth = this._get(inst, "changeMonth"), + changeYear = this._get(inst, "changeYear"), + showMonthAfterYear = this._get(inst, "showMonthAfterYear"), + html = "
        ", + monthHtml = ""; + + // month selection + if (secondary || !changeMonth) { + monthHtml += "" + monthNames[drawMonth] + ""; + } else { + inMinYear = (minDate && minDate.getFullYear() === drawYear); + inMaxYear = (maxDate && maxDate.getFullYear() === drawYear); + monthHtml += ""; + } + + if (!showMonthAfterYear) { + html += monthHtml + (secondary || !(changeMonth && changeYear) ? " " : ""); + } + + // year selection + if ( !inst.yearshtml ) { + inst.yearshtml = ""; + if (secondary || !changeYear) { + html += "" + drawYear + ""; + } else { + // determine range of years to display + years = this._get(inst, "yearRange").split(":"); + thisYear = new Date().getFullYear(); + determineYear = function(value) { + var year = (value.match(/c[+\-].*/) ? drawYear + parseInt(value.substring(1), 10) : + (value.match(/[+\-].*/) ? thisYear + parseInt(value, 10) : + parseInt(value, 10))); + return (isNaN(year) ? thisYear : year); + }; + year = determineYear(years[0]); + endYear = Math.max(year, determineYear(years[1] || "")); + year = (minDate ? Math.max(year, minDate.getFullYear()) : year); + endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear); + inst.yearshtml += ""; + + html += inst.yearshtml; + inst.yearshtml = null; + } + } + + html += this._get(inst, "yearSuffix"); + if (showMonthAfterYear) { + html += (secondary || !(changeMonth && changeYear) ? " " : "") + monthHtml; + } + html += "
        "; // Close datepicker_header + return html; + }, + + /* Adjust one of the date sub-fields. */ + _adjustInstDate: function(inst, offset, period) { + var year = inst.drawYear + (period === "Y" ? offset : 0), + month = inst.drawMonth + (period === "M" ? offset : 0), + day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + (period === "D" ? offset : 0), + date = this._restrictMinMax(inst, this._daylightSavingAdjust(new Date(year, month, day))); + + inst.selectedDay = date.getDate(); + inst.drawMonth = inst.selectedMonth = date.getMonth(); + inst.drawYear = inst.selectedYear = date.getFullYear(); + if (period === "M" || period === "Y") { + this._notifyChange(inst); + } + }, + + /* Ensure a date is within any min/max bounds. */ + _restrictMinMax: function(inst, date) { + var minDate = this._getMinMaxDate(inst, "min"), + maxDate = this._getMinMaxDate(inst, "max"), + newDate = (minDate && date < minDate ? minDate : date); + return (maxDate && newDate > maxDate ? maxDate : newDate); + }, + + /* Notify change of month/year. */ + _notifyChange: function(inst) { + var onChange = this._get(inst, "onChangeMonthYear"); + if (onChange) { + onChange.apply((inst.input ? inst.input[0] : null), + [inst.selectedYear, inst.selectedMonth + 1, inst]); + } + }, + + /* Determine the number of months to show. */ + _getNumberOfMonths: function(inst) { + var numMonths = this._get(inst, "numberOfMonths"); + return (numMonths == null ? [1, 1] : (typeof numMonths === "number" ? [1, numMonths] : numMonths)); + }, + + /* Determine the current maximum date - ensure no time components are set. */ + _getMinMaxDate: function(inst, minMax) { + return this._determineDate(inst, this._get(inst, minMax + "Date"), null); + }, + + /* Find the number of days in a given month. */ + _getDaysInMonth: function(year, month) { + return 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate(); + }, + + /* Find the day of the week of the first of a month. */ + _getFirstDayOfMonth: function(year, month) { + return new Date(year, month, 1).getDay(); + }, + + /* Determines if we should allow a "next/prev" month display change. */ + _canAdjustMonth: function(inst, offset, curYear, curMonth) { + var numMonths = this._getNumberOfMonths(inst), + date = this._daylightSavingAdjust(new Date(curYear, + curMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1)); + + if (offset < 0) { + date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth())); + } + return this._isInRange(inst, date); + }, + + /* Is the given date in the accepted range? */ + _isInRange: function(inst, date) { + var yearSplit, currentYear, + minDate = this._getMinMaxDate(inst, "min"), + maxDate = this._getMinMaxDate(inst, "max"), + minYear = null, + maxYear = null, + years = this._get(inst, "yearRange"); + if (years){ + yearSplit = years.split(":"); + currentYear = new Date().getFullYear(); + minYear = parseInt(yearSplit[0], 10); + maxYear = parseInt(yearSplit[1], 10); + if ( yearSplit[0].match(/[+\-].*/) ) { + minYear += currentYear; + } + if ( yearSplit[1].match(/[+\-].*/) ) { + maxYear += currentYear; + } + } + + return ((!minDate || date.getTime() >= minDate.getTime()) && + (!maxDate || date.getTime() <= maxDate.getTime()) && + (!minYear || date.getFullYear() >= minYear) && + (!maxYear || date.getFullYear() <= maxYear)); + }, + + /* Provide the configuration settings for formatting/parsing. */ + _getFormatConfig: function(inst) { + var shortYearCutoff = this._get(inst, "shortYearCutoff"); + shortYearCutoff = (typeof shortYearCutoff !== "string" ? shortYearCutoff : + new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10)); + return {shortYearCutoff: shortYearCutoff, + dayNamesShort: this._get(inst, "dayNamesShort"), dayNames: this._get(inst, "dayNames"), + monthNamesShort: this._get(inst, "monthNamesShort"), monthNames: this._get(inst, "monthNames")}; + }, + + /* Format the given date for display. */ + _formatDate: function(inst, day, month, year) { + if (!day) { + inst.currentDay = inst.selectedDay; + inst.currentMonth = inst.selectedMonth; + inst.currentYear = inst.selectedYear; + } + var date = (day ? (typeof day === "object" ? day : + this._daylightSavingAdjust(new Date(year, month, day))) : + this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay))); + return this.formatDate(this._get(inst, "dateFormat"), date, this._getFormatConfig(inst)); + } +}); + +/* + * Bind hover events for datepicker elements. + * Done via delegate so the binding only occurs once in the lifetime of the parent div. + * Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker. + */ +function bindHover(dpDiv) { + var selector = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a"; + return dpDiv.delegate(selector, "mouseout", function() { + $(this).removeClass("ui-state-hover"); + if (this.className.indexOf("ui-datepicker-prev") !== -1) { + $(this).removeClass("ui-datepicker-prev-hover"); + } + if (this.className.indexOf("ui-datepicker-next") !== -1) { + $(this).removeClass("ui-datepicker-next-hover"); + } + }) + .delegate(selector, "mouseover", function(){ + if (!$.datepicker._isDisabledDatepicker( instActive.inline ? dpDiv.parent()[0] : instActive.input[0])) { + $(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"); + $(this).addClass("ui-state-hover"); + if (this.className.indexOf("ui-datepicker-prev") !== -1) { + $(this).addClass("ui-datepicker-prev-hover"); + } + if (this.className.indexOf("ui-datepicker-next") !== -1) { + $(this).addClass("ui-datepicker-next-hover"); + } + } + }); +} + +/* jQuery extend now ignores nulls! */ +function extendRemove(target, props) { + $.extend(target, props); + for (var name in props) { + if (props[name] == null) { + target[name] = props[name]; + } + } + return target; +} + +/* Invoke the datepicker functionality. + @param options string - a command, optionally followed by additional parameters or + Object - settings for attaching new datepicker functionality + @return jQuery object */ +$.fn.datepicker = function(options){ + + /* Verify an empty collection wasn't passed - Fixes #6976 */ + if ( !this.length ) { + return this; + } + + /* Initialise the date picker. */ + if (!$.datepicker.initialized) { + $(document).mousedown($.datepicker._checkExternalClick); + $.datepicker.initialized = true; + } + + /* Append datepicker main container to body if not exist. */ + if ($("#"+$.datepicker._mainDivId).length === 0) { + $("body").append($.datepicker.dpDiv); + } + + var otherArgs = Array.prototype.slice.call(arguments, 1); + if (typeof options === "string" && (options === "isDisabled" || options === "getDate" || options === "widget")) { + return $.datepicker["_" + options + "Datepicker"]. + apply($.datepicker, [this[0]].concat(otherArgs)); + } + if (options === "option" && arguments.length === 2 && typeof arguments[1] === "string") { + return $.datepicker["_" + options + "Datepicker"]. + apply($.datepicker, [this[0]].concat(otherArgs)); + } + return this.each(function() { + typeof options === "string" ? + $.datepicker["_" + options + "Datepicker"]. + apply($.datepicker, [this].concat(otherArgs)) : + $.datepicker._attachDatepicker(this, options); + }); +}; + +$.datepicker = new Datepicker(); // singleton instance +$.datepicker.initialized = false; +$.datepicker.uuid = new Date().getTime(); +$.datepicker.version = "1.10.4"; + +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/jquery.timePicker.min.js b/themes/fruitful/inc/metaboxes/js/jquery.timePicker.min.js new file mode 100644 index 0000000..e78a48d --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/jquery.timePicker.min.js @@ -0,0 +1,13 @@ +/** + * A time picker for jQuery. + * + * Dual licensed under the MIT and GPL licenses. + * Copyright (c) 2009 Anders Fajerson + * + * @name timePicker + * @author Anders Fajerson (http://perifer.se) + * @see http://github.com/perifer/timePicker + * @example $("#mytime").timePicker(); + * @example $("#mytime").timePicker({step:30, startTime:"15:00", endTime:"18:00"}); + */ +(function(a){function g(a){a.setFullYear(2001),a.setMonth(0),a.setDate(0);return a}function f(a,b){if(a){var c=a.split(b.separator),d=parseFloat(c[0]),e=parseFloat(c[1]);b.show24Hours||(d===12&&a.indexOf("AM")!==-1?d=0:d!==12&&a.indexOf("PM")!==-1&&(d+=12));var f=new Date(0,0,0,d,e,0);return g(f)}return null}function e(a,b){return typeof a=="object"?g(a):f(a,b)}function d(a){return(a<10?"0":"")+a}function c(a,b){var c=a.getHours(),e=b.show24Hours?c:(c+11)%12+1,f=a.getMinutes();return d(e)+b.separator+d(f)+(b.show24Hours?"":c<12?" AM":" PM")}function b(b,c,d,e){b.value=a(c).text(),a(b).change(),a.browser.msie||b.focus(),d.hide()}a.fn.timePicker=function(b){var c=a.extend({},a.fn.timePicker.defaults,b);return this.each(function(){a.timePicker(this,c)})},a.timePicker=function(b,c){var d=a(b)[0];return d.timePicker||(d.timePicker=new jQuery._timePicker(d,c))},a.timePicker.version="0.3",a._timePicker=function(d,h){var i=!1,j=!1,k=e(h.startTime,h),l=e(h.endTime,h),m="selected",n="li."+m;a(d).attr("autocomplete","OFF");var o=[],p=new Date(k);while(p<=l)o[o.length]=c(p,h),p=new Date(p.setMinutes(p.getMinutes()+h.step));var q=a('
        '),r=a("
          ");for(var s=0;s"+o[s]+"");q.append(r),q.appendTo("body").hide(),q.mouseover(function(){i=!0}).mouseout(function(){i=!1}),a("li",r).mouseover(function(){j||(a(n,q).removeClass(m),a(this).addClass(m))}).mousedown(function(){i=!0}).click(function(){b(d,this,q,h),i=!1});var t=function(){if(q.is(":visible"))return!1;a("li",q).removeClass(m);var b=a(d).offset();q.css({top:b.top+d.offsetHeight,left:b.left}),q.show();var e=d.value?f(d.value,h):k,i=k.getHours()*60+k.getMinutes(),j=e.getHours()*60+e.getMinutes()-i,n=Math.round(j/h.step),o=g(new Date(0,0,0,0,n*h.step+i,0));o=kf+q[0].offsetHeight&&(q[0].scrollTop=f+i.offsetHeight)):(e.removeClass(m),i=a("li:first",r).addClass(m)[0],q[0].scrollTop=0);return!1;case 13:if(q.is(":visible")){var k=a(n,r)[0];b(d,k,q,h)}return!1;case 27:q.hide();return!1}return!0}),a(d).keyup(function(a){j=!1}),this.getTime=function(){return f(d.value,h)},this.setTime=function(b){d.value=c(e(b,h),h),a(d).change()}},a.fn.timePicker.defaults={step:30,startTime:new Date(0,0,0,0,0,0),endTime:new Date(0,0,0,23,30,0),separator:":",show24Hours:!0}})(jQuery) \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/layout/layout.css b/themes/fruitful/inc/metaboxes/js/layout/layout.css new file mode 100644 index 0000000..472f8ad --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/layout/layout.css @@ -0,0 +1,23 @@ +.list-layouts li { + display:inline-block; +} +.list-layouts li input[type="radio"] { + display:none; +} + +.list-layouts li img { + border: 3px solid #DEDEDE; + margin: 0 5px 10px 0; + cursor: pointer; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} + +.list-layouts li img:hover, +.list-layouts li img.selected { + border: 3px solid #AAA; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/layout/layout.js b/themes/fruitful/inc/metaboxes/js/layout/layout.js new file mode 100644 index 0000000..b7d5655 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/layout/layout.js @@ -0,0 +1,23 @@ +jQuery(document).ready(function() { + if (jQuery('.list-layouts').length > 0) { + jQuery('.list-layouts li img').each(function() { + jQuery(this).removeClass('selected'); + }) + + var vCheck = jQuery('.list-layouts').find('input:checked'); + vCheck.parent().find('img').addClass('selected'); + + jQuery('.list-layouts li img').live('click', function() { + jQuery('.list-layouts li img').each(function() { + jQuery(this).removeClass('selected'); + jQuery(this).parent().find('input').prop('checked', true); + }) + + jQuery(this).addClass('selected'); + jQuery(this).parent().find('input').prop('checked', true); + + return false; + }); + + } +}); \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2-bootstrap.css b/themes/fruitful/inc/metaboxes/js/select2/select2-bootstrap.css new file mode 100644 index 0000000..3b83f0a --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2-bootstrap.css @@ -0,0 +1,87 @@ +.form-control .select2-choice { + border: 0; + border-radius: 2px; +} + +.form-control .select2-choice .select2-arrow { + border-radius: 0 2px 2px 0; +} + +.form-control.select2-container { + height: auto !important; + padding: 0; +} + +.form-control.select2-container.select2-dropdown-open { + border-color: #5897FB; + border-radius: 3px 3px 0 0; +} + +.form-control .select2-container.select2-dropdown-open .select2-choices { + border-radius: 3px 3px 0 0; +} + +.form-control.select2-container .select2-choices { + border: 0 !important; + border-radius: 3px; +} + +.control-group.warning .select2-container .select2-choice, +.control-group.warning .select2-container .select2-choices, +.control-group.warning .select2-container-active .select2-choice, +.control-group.warning .select2-container-active .select2-choices, +.control-group.warning .select2-dropdown-open.select2-drop-above .select2-choice, +.control-group.warning .select2-dropdown-open.select2-drop-above .select2-choices, +.control-group.warning .select2-container-multi.select2-container-active .select2-choices { + border: 1px solid #C09853 !important; +} + +.control-group.warning .select2-container .select2-choice div { + border-left: 1px solid #C09853 !important; + background: #FCF8E3 !important; +} + +.control-group.error .select2-container .select2-choice, +.control-group.error .select2-container .select2-choices, +.control-group.error .select2-container-active .select2-choice, +.control-group.error .select2-container-active .select2-choices, +.control-group.error .select2-dropdown-open.select2-drop-above .select2-choice, +.control-group.error .select2-dropdown-open.select2-drop-above .select2-choices, +.control-group.error .select2-container-multi.select2-container-active .select2-choices { + border: 1px solid #B94A48 !important; +} + +.control-group.error .select2-container .select2-choice div { + border-left: 1px solid #B94A48 !important; + background: #F2DEDE !important; +} + +.control-group.info .select2-container .select2-choice, +.control-group.info .select2-container .select2-choices, +.control-group.info .select2-container-active .select2-choice, +.control-group.info .select2-container-active .select2-choices, +.control-group.info .select2-dropdown-open.select2-drop-above .select2-choice, +.control-group.info .select2-dropdown-open.select2-drop-above .select2-choices, +.control-group.info .select2-container-multi.select2-container-active .select2-choices { + border: 1px solid #3A87AD !important; +} + +.control-group.info .select2-container .select2-choice div { + border-left: 1px solid #3A87AD !important; + background: #D9EDF7 !important; +} + +.control-group.success .select2-container .select2-choice, +.control-group.success .select2-container .select2-choices, +.control-group.success .select2-container-active .select2-choice, +.control-group.success .select2-container-active .select2-choices, +.control-group.success .select2-dropdown-open.select2-drop-above .select2-choice, +.control-group.success .select2-dropdown-open.select2-drop-above .select2-choices, +.control-group.success .select2-container-multi.select2-container-active .select2-choices { + border: 1px solid #468847 !important; +} + +.control-group.success .select2-container .select2-choice div { + border-left: 1px solid #468847 !important; + background: #DFF0D8 !important; +} diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2-spinner.gif b/themes/fruitful/inc/metaboxes/js/select2/select2-spinner.gif new file mode 100644 index 0000000..5b33f7e Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/select2/select2-spinner.gif differ diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2.css b/themes/fruitful/inc/metaboxes/js/select2/select2.css new file mode 100644 index 0000000..0889730 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2.css @@ -0,0 +1,647 @@ +/* +Version: 3.4.6 Timestamp: Sat Mar 22 22:30:15 EDT 2014 +*/ +.select2-container { + margin: 0; + position: relative; + display: inline-block; + /* inline-block for ie7 */ + zoom: 1; + *display: inline; + vertical-align: middle; + min-width:25%; +} + +.select2-container, +.select2-drop, +.select2-search, +.select2-search input { + /* + Force border-box so that % widths fit the parent + container without overlap because of margin/padding. + More Info : http://www.quirksmode.org/css/box.html + */ + -webkit-box-sizing: border-box; /* webkit */ + -moz-box-sizing: border-box; /* firefox */ + box-sizing: border-box; /* css3 */ +} + +.select2-container .select2-choice { + display: block; + height: 26px; + padding: 0 0 0 8px; + overflow: hidden; + position: relative; + + border: 1px solid #aaa; + white-space: nowrap; + line-height: 26px; + color: #444; + text-decoration: none; + + border-radius: 4px; + + background-clip: padding-box; + + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + + background-color: #fff; + background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.5, #fff)); + background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 50%); + background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 50%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0); + background-image: linear-gradient(to top, #eee 0%, #fff 50%); +} + +.select2-container.select2-drop-above .select2-choice { + border-bottom-color: #aaa; + + border-radius: 0 0 4px 4px; + + background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.9, #fff)); + background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 90%); + background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 90%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0); + background-image: linear-gradient(to bottom, #eee 0%, #fff 90%); +} + +.select2-container.select2-allowclear .select2-choice .select2-chosen { + margin-right: 42px; +} + +.select2-container .select2-choice > .select2-chosen { + margin-right: 26px; + display: block; + overflow: hidden; + + white-space: nowrap; + + text-overflow: ellipsis; + float: none; + width: auto; +} + +.select2-container .select2-choice abbr { + display: none; + width: 12px; + height: 12px; + position: absolute; + right: 24px; + top: 8px; + + font-size: 1px; + text-decoration: none; + + border: 0; + background: url('select2.png') right top no-repeat; + cursor: pointer; + outline: 0; +} + +.select2-container.select2-allowclear .select2-choice abbr { + display: inline-block; +} + +.select2-container .select2-choice abbr:hover { + background-position: right -11px; + cursor: pointer; +} + +.select2-drop-mask { + border: 0; + margin: 0; + padding: 0; + position: fixed; + left: 0; + top: 0; + min-height: 100%; + min-width: 100%; + height: auto; + width: auto; + opacity: 0; + z-index: 9998; + /* styles required for IE to work */ + background-color: #fff; + filter: alpha(opacity=0); +} + +.select2-drop { + width: 100%; + margin-top: -1px; + position: absolute; + z-index: 9999; + top: 100%; + + background: #fff; + color: #000; + border: 1px solid #aaa; + border-top: 0; + + border-radius: 0 0 4px 4px; + + -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15); + box-shadow: 0 4px 5px rgba(0, 0, 0, .15); +} + +.select2-drop.select2-drop-above { + margin-top: 1px; + border-top: 1px solid #aaa; + border-bottom: 0; + + border-radius: 4px 4px 0 0; + + -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15); + box-shadow: 0 -4px 5px rgba(0, 0, 0, .15); +} + +.select2-drop-active { + border: 1px solid #5897fb; + border-top: none; +} + +.select2-drop.select2-drop-above.select2-drop-active { + border-top: 1px solid #5897fb; +} + +.select2-drop-auto-width { + border-top: 1px solid #aaa; + width: auto; +} + +.select2-drop-auto-width .select2-search { + padding-top: 4px; +} + +.select2-container .select2-choice .select2-arrow { + display: inline-block; + width: 18px; + height: 100%; + position: absolute; + right: 0; + top: 0; + + border-left: 1px solid #aaa; + border-radius: 0 4px 4px 0; + + background-clip: padding-box; + + background: #ccc; + background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee)); + background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%); + background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0); + background-image: linear-gradient(to top, #ccc 0%, #eee 60%); +} + +.select2-container .select2-choice .select2-arrow b { + display: block; + width: 100%; + height: 100%; + background: url('select2.png') no-repeat 0 1px; +} + +.select2-search { + display: inline-block; + width: 100%; + min-height: 26px; + margin: 0; + padding-left: 4px; + padding-right: 4px; + + position: relative; + z-index: 10000; + + white-space: nowrap; +} + +.select2-search input { + width: 100%; + height: auto !important; + min-height: 26px; + padding: 4px 20px 4px 5px; + margin: 0; + + outline: 0; + font-family: sans-serif; + font-size: 1em; + + border: 1px solid #aaa; + border-radius: 0; + + -webkit-box-shadow: none; + box-shadow: none; + + background: #fff url('select2.png') no-repeat 100% -22px; + background: url('select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee)); + background: url('select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%); + background: url('select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%); + background: url('select2.png') no-repeat 100% -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0; +} + +.select2-drop.select2-drop-above .select2-search input { + margin-top: 4px; +} + +.select2-search input.select2-active { + background: #fff url('select2-spinner.gif') no-repeat 100%; + background: url('select2-spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee)); + background: url('select2-spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%); + background: url('select2-spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%); + background: url('select2-spinner.gif') no-repeat 100%, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0; +} + +.select2-container-active .select2-choice, +.select2-container-active .select2-choices { + border: 1px solid #5897fb; + outline: none; + + -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3); + box-shadow: 0 0 5px rgba(0, 0, 0, .3); +} + +.select2-dropdown-open .select2-choice { + border-bottom-color: transparent; + -webkit-box-shadow: 0 1px 0 #fff inset; + box-shadow: 0 1px 0 #fff inset; + + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + + background-color: #eee; + background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.5, #eee)); + background-image: -webkit-linear-gradient(center bottom, #fff 0%, #eee 50%); + background-image: -moz-linear-gradient(center bottom, #fff 0%, #eee 50%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0); + background-image: linear-gradient(to top, #fff 0%, #eee 50%); +} + +.select2-dropdown-open.select2-drop-above .select2-choice, +.select2-dropdown-open.select2-drop-above .select2-choices { + border: 1px solid #5897fb; + border-top-color: transparent; + + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(0.5, #eee)); + background-image: -webkit-linear-gradient(center top, #fff 0%, #eee 50%); + background-image: -moz-linear-gradient(center top, #fff 0%, #eee 50%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0); + background-image: linear-gradient(to bottom, #fff 0%, #eee 50%); +} + +.select2-dropdown-open .select2-choice .select2-arrow { + background: transparent; + border-left: none; + filter: none; +} +.select2-dropdown-open .select2-choice .select2-arrow b { + background-position: -18px 1px; +} + +.select2-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} + +/* results */ +.select2-results { + max-height: 200px; + padding: 0 0 0 4px; + margin: 4px 4px 4px 0; + position: relative; + overflow-x: hidden; + overflow-y: auto; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +.select2-results ul.select2-result-sub { + margin: 0; + padding-left: 0; +} + +.select2-results ul.select2-result-sub > li .select2-result-label { padding-left: 20px } +.select2-results ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 40px } +.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 60px } +.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 80px } +.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 100px } +.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 110px } +.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 120px } + +.select2-results li { + list-style: none; + display: list-item; + background-image: none; +} + +.select2-results li.select2-result-with-children > .select2-result-label { + font-weight: bold; +} + +.select2-results .select2-result-label { + padding: 3px 7px 4px; + margin: 0; + cursor: pointer; + + min-height: 1em; + + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.select2-results .select2-highlighted { + background: #3875d7; + color: #fff; +} + +.select2-results li em { + background: #feffde; + font-style: normal; +} + +.select2-results .select2-highlighted em { + background: transparent; +} + +.select2-results .select2-highlighted ul { + background: #fff; + color: #000; +} + + +.select2-results .select2-no-results, +.select2-results .select2-searching, +.select2-results .select2-selection-limit { + background: #f4f4f4; + display: list-item; + padding-left: 5px; +} + +/* +disabled look for disabled choices in the results dropdown +*/ +.select2-results .select2-disabled.select2-highlighted { + color: #666; + background: #f4f4f4; + display: list-item; + cursor: default; +} +.select2-results .select2-disabled { + background: #f4f4f4; + display: list-item; + cursor: default; +} + +.select2-results .select2-selected { + display: none; +} + +.select2-more-results.select2-active { + background: #f4f4f4 url('select2-spinner.gif') no-repeat 100%; +} + +.select2-more-results { + background: #f4f4f4; + display: list-item; +} + +/* disabled styles */ + +.select2-container.select2-container-disabled .select2-choice { + background-color: #f4f4f4; + background-image: none; + border: 1px solid #ddd; + cursor: default; +} + +.select2-container.select2-container-disabled .select2-choice .select2-arrow { + background-color: #f4f4f4; + background-image: none; + border-left: 0; +} + +.select2-container.select2-container-disabled .select2-choice abbr { + display: none; +} + + +/* multiselect */ + +.select2-container-multi .select2-choices { + height: auto !important; + height: 1%; + margin: 0; + padding: 0; + position: relative; + + border: 1px solid #aaa; + cursor: text; + overflow: hidden; + + background-color: #fff; + background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eee), color-stop(15%, #fff)); + background-image: -webkit-linear-gradient(top, #eee 1%, #fff 15%); + background-image: -moz-linear-gradient(top, #eee 1%, #fff 15%); + background-image: linear-gradient(to bottom, #eee 1%, #fff 15%); +} + +.select2-locked { + padding: 3px 5px 3px 5px !important; +} + +.select2-container-multi .select2-choices { + min-height: 26px; +} + +.select2-container-multi.select2-container-active .select2-choices { + border: 1px solid #5897fb; + outline: none; + + -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3); + box-shadow: 0 0 5px rgba(0, 0, 0, .3); +} +.select2-container-multi .select2-choices li { + float: left; + list-style: none; +} +html[dir="rtl"] .select2-container-multi .select2-choices li +{ + float: right; +} +.select2-container-multi .select2-choices .select2-search-field { + margin: 0; + padding: 0; + white-space: nowrap; +} + +.select2-container-multi .select2-choices .select2-search-field input { + padding: 5px; + margin: 1px 0; + + font-family: sans-serif; + font-size: 100%; + color: #666; + outline: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + background: transparent !important; +} + +.select2-container-multi .select2-choices .select2-search-field input.select2-active { + background: #fff url('select2-spinner.gif') no-repeat 100% !important; +} + +.select2-default { + color: #999 !important; +} + +.select2-container-multi .select2-choices .select2-search-choice { + padding: 3px 5px 3px 18px; + margin: 3px 0 3px 5px; + position: relative; + + line-height: 13px; + color: #333; + cursor: default; + border: 1px solid #aaaaaa; + + border-radius: 3px; + + -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05); + box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05); + + background-clip: padding-box; + + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + + background-color: #e4e4e4; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0); + background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eee)); + background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%); + background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%); + background-image: linear-gradient(to top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%); +} +html[dir="rtl"] .select2-container-multi .select2-choices .select2-search-choice +{ + margin-left: 0; + margin-right: 5px; +} +.select2-container-multi .select2-choices .select2-search-choice .select2-chosen { + cursor: default; +} +.select2-container-multi .select2-choices .select2-search-choice-focus { + background: #d4d4d4; +} + +.select2-search-choice-close { + display: block; + width: 12px; + height: 13px; + position: absolute; + right: 3px; + top: 4px; + + font-size: 1px; + outline: none; + background: url('select2.png') right top no-repeat; +} +html[dir="rtl"] .select2-search-choice-close { + right: auto; + left: 3px; +} + +.select2-container-multi .select2-search-choice-close { + left: 3px; +} + +.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover { + background-position: right -11px; +} +.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close { + background-position: right -11px; +} + +/* disabled styles */ +.select2-container-multi.select2-container-disabled .select2-choices { + background-color: #f4f4f4; + background-image: none; + border: 1px solid #ddd; + cursor: default; +} + +.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice { + padding: 3px 5px 3px 5px; + border: 1px solid #ddd; + background-image: none; + background-color: #f4f4f4; +} + +.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close { display: none; + background: none; +} +/* end multiselect */ + + +.select2-result-selectable .select2-match, +.select2-result-unselectable .select2-match { + text-decoration: underline; +} + +.select2-offscreen, .select2-offscreen:focus { + clip: rect(0 0 0 0) !important; + width: 1px !important; + height: 1px !important; + border: 0 !important; + margin: 0 !important; + padding: 0 !important; + overflow: hidden !important; + position: absolute !important; + outline: 0 !important; + left: 0px !important; + top: 0px !important; +} + +.select2-display-none { + display: none; +} + +.select2-measure-scrollbar { + position: absolute; + top: -10000px; + left: -10000px; + width: 100px; + height: 100px; + overflow: scroll; +} + +/* Retina-ize icons */ + +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 2dppx) { + .select2-search input, + .select2-search-choice-close, + .select2-container .select2-choice abbr, + .select2-container .select2-choice .select2-arrow b { + background-image: url('select2x2.png') !important; + background-repeat: no-repeat !important; + background-size: 60px 40px !important; + } + + .select2-search input { + background-position: 100% -21px !important; + } +} diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2.js b/themes/fruitful/inc/metaboxes/js/select2/select2.js new file mode 100644 index 0000000..f2a75f3 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2.js @@ -0,0 +1,3397 @@ +/* +Copyright 2012 Igor Vaynberg + +Version: 3.4.6 Timestamp: Sat Mar 22 22:30:15 EDT 2014 + +This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU +General Public License version 2 (the "GPL License"). You may choose either license to govern your +use of this software only upon the condition that you accept all of the terms of either the Apache +License or the GPL License. + +You may obtain a copy of the Apache License and the GPL License at: + + http://www.apache.org/licenses/LICENSE-2.0 + http://www.gnu.org/licenses/gpl-2.0.html + +Unless required by applicable law or agreed to in writing, software distributed under the +Apache License or the GPL License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +CONDITIONS OF ANY KIND, either express or implied. See the Apache License and the GPL License for +the specific language governing permissions and limitations under the Apache License and the GPL License. +*/ +(function ($) { + if(typeof $.fn.each2 == "undefined") { + $.extend($.fn, { + /* + * 4-10 times faster .each replacement + * use it carefully, as it overrides jQuery context of element on each iteration + */ + each2 : function (c) { + var j = $([0]), i = -1, l = this.length; + while ( + ++i < l + && (j.context = j[0] = this[i]) + && c.call(j[0], i, j) !== false //"this"=DOM, i=index, j=jQuery object + ); + return this; + } + }); + } +})(jQuery); + +(function ($, undefined) { + "use strict"; + /*global document, window, jQuery, console */ + + if (window.Select2 !== undefined) { + return; + } + + var KEY, AbstractSelect2, SingleSelect2, MultiSelect2, nextUid, sizer, + lastMousePosition={x:0,y:0}, $document, scrollBarDimensions, + + KEY = { + TAB: 9, + ENTER: 13, + ESC: 27, + SPACE: 32, + LEFT: 37, + UP: 38, + RIGHT: 39, + DOWN: 40, + SHIFT: 16, + CTRL: 17, + ALT: 18, + PAGE_UP: 33, + PAGE_DOWN: 34, + HOME: 36, + END: 35, + BACKSPACE: 8, + DELETE: 46, + isArrow: function (k) { + k = k.which ? k.which : k; + switch (k) { + case KEY.LEFT: + case KEY.RIGHT: + case KEY.UP: + case KEY.DOWN: + return true; + } + return false; + }, + isControl: function (e) { + var k = e.which; + switch (k) { + case KEY.SHIFT: + case KEY.CTRL: + case KEY.ALT: + return true; + } + + if (e.metaKey) return true; + + return false; + }, + isFunctionKey: function (k) { + k = k.which ? k.which : k; + return k >= 112 && k <= 123; + } + }, + MEASURE_SCROLLBAR_TEMPLATE = "
          ", + + DIACRITICS = {"\u24B6":"A","\uFF21":"A","\u00C0":"A","\u00C1":"A","\u00C2":"A","\u1EA6":"A","\u1EA4":"A","\u1EAA":"A","\u1EA8":"A","\u00C3":"A","\u0100":"A","\u0102":"A","\u1EB0":"A","\u1EAE":"A","\u1EB4":"A","\u1EB2":"A","\u0226":"A","\u01E0":"A","\u00C4":"A","\u01DE":"A","\u1EA2":"A","\u00C5":"A","\u01FA":"A","\u01CD":"A","\u0200":"A","\u0202":"A","\u1EA0":"A","\u1EAC":"A","\u1EB6":"A","\u1E00":"A","\u0104":"A","\u023A":"A","\u2C6F":"A","\uA732":"AA","\u00C6":"AE","\u01FC":"AE","\u01E2":"AE","\uA734":"AO","\uA736":"AU","\uA738":"AV","\uA73A":"AV","\uA73C":"AY","\u24B7":"B","\uFF22":"B","\u1E02":"B","\u1E04":"B","\u1E06":"B","\u0243":"B","\u0182":"B","\u0181":"B","\u24B8":"C","\uFF23":"C","\u0106":"C","\u0108":"C","\u010A":"C","\u010C":"C","\u00C7":"C","\u1E08":"C","\u0187":"C","\u023B":"C","\uA73E":"C","\u24B9":"D","\uFF24":"D","\u1E0A":"D","\u010E":"D","\u1E0C":"D","\u1E10":"D","\u1E12":"D","\u1E0E":"D","\u0110":"D","\u018B":"D","\u018A":"D","\u0189":"D","\uA779":"D","\u01F1":"DZ","\u01C4":"DZ","\u01F2":"Dz","\u01C5":"Dz","\u24BA":"E","\uFF25":"E","\u00C8":"E","\u00C9":"E","\u00CA":"E","\u1EC0":"E","\u1EBE":"E","\u1EC4":"E","\u1EC2":"E","\u1EBC":"E","\u0112":"E","\u1E14":"E","\u1E16":"E","\u0114":"E","\u0116":"E","\u00CB":"E","\u1EBA":"E","\u011A":"E","\u0204":"E","\u0206":"E","\u1EB8":"E","\u1EC6":"E","\u0228":"E","\u1E1C":"E","\u0118":"E","\u1E18":"E","\u1E1A":"E","\u0190":"E","\u018E":"E","\u24BB":"F","\uFF26":"F","\u1E1E":"F","\u0191":"F","\uA77B":"F","\u24BC":"G","\uFF27":"G","\u01F4":"G","\u011C":"G","\u1E20":"G","\u011E":"G","\u0120":"G","\u01E6":"G","\u0122":"G","\u01E4":"G","\u0193":"G","\uA7A0":"G","\uA77D":"G","\uA77E":"G","\u24BD":"H","\uFF28":"H","\u0124":"H","\u1E22":"H","\u1E26":"H","\u021E":"H","\u1E24":"H","\u1E28":"H","\u1E2A":"H","\u0126":"H","\u2C67":"H","\u2C75":"H","\uA78D":"H","\u24BE":"I","\uFF29":"I","\u00CC":"I","\u00CD":"I","\u00CE":"I","\u0128":"I","\u012A":"I","\u012C":"I","\u0130":"I","\u00CF":"I","\u1E2E":"I","\u1EC8":"I","\u01CF":"I","\u0208":"I","\u020A":"I","\u1ECA":"I","\u012E":"I","\u1E2C":"I","\u0197":"I","\u24BF":"J","\uFF2A":"J","\u0134":"J","\u0248":"J","\u24C0":"K","\uFF2B":"K","\u1E30":"K","\u01E8":"K","\u1E32":"K","\u0136":"K","\u1E34":"K","\u0198":"K","\u2C69":"K","\uA740":"K","\uA742":"K","\uA744":"K","\uA7A2":"K","\u24C1":"L","\uFF2C":"L","\u013F":"L","\u0139":"L","\u013D":"L","\u1E36":"L","\u1E38":"L","\u013B":"L","\u1E3C":"L","\u1E3A":"L","\u0141":"L","\u023D":"L","\u2C62":"L","\u2C60":"L","\uA748":"L","\uA746":"L","\uA780":"L","\u01C7":"LJ","\u01C8":"Lj","\u24C2":"M","\uFF2D":"M","\u1E3E":"M","\u1E40":"M","\u1E42":"M","\u2C6E":"M","\u019C":"M","\u24C3":"N","\uFF2E":"N","\u01F8":"N","\u0143":"N","\u00D1":"N","\u1E44":"N","\u0147":"N","\u1E46":"N","\u0145":"N","\u1E4A":"N","\u1E48":"N","\u0220":"N","\u019D":"N","\uA790":"N","\uA7A4":"N","\u01CA":"NJ","\u01CB":"Nj","\u24C4":"O","\uFF2F":"O","\u00D2":"O","\u00D3":"O","\u00D4":"O","\u1ED2":"O","\u1ED0":"O","\u1ED6":"O","\u1ED4":"O","\u00D5":"O","\u1E4C":"O","\u022C":"O","\u1E4E":"O","\u014C":"O","\u1E50":"O","\u1E52":"O","\u014E":"O","\u022E":"O","\u0230":"O","\u00D6":"O","\u022A":"O","\u1ECE":"O","\u0150":"O","\u01D1":"O","\u020C":"O","\u020E":"O","\u01A0":"O","\u1EDC":"O","\u1EDA":"O","\u1EE0":"O","\u1EDE":"O","\u1EE2":"O","\u1ECC":"O","\u1ED8":"O","\u01EA":"O","\u01EC":"O","\u00D8":"O","\u01FE":"O","\u0186":"O","\u019F":"O","\uA74A":"O","\uA74C":"O","\u01A2":"OI","\uA74E":"OO","\u0222":"OU","\u24C5":"P","\uFF30":"P","\u1E54":"P","\u1E56":"P","\u01A4":"P","\u2C63":"P","\uA750":"P","\uA752":"P","\uA754":"P","\u24C6":"Q","\uFF31":"Q","\uA756":"Q","\uA758":"Q","\u024A":"Q","\u24C7":"R","\uFF32":"R","\u0154":"R","\u1E58":"R","\u0158":"R","\u0210":"R","\u0212":"R","\u1E5A":"R","\u1E5C":"R","\u0156":"R","\u1E5E":"R","\u024C":"R","\u2C64":"R","\uA75A":"R","\uA7A6":"R","\uA782":"R","\u24C8":"S","\uFF33":"S","\u1E9E":"S","\u015A":"S","\u1E64":"S","\u015C":"S","\u1E60":"S","\u0160":"S","\u1E66":"S","\u1E62":"S","\u1E68":"S","\u0218":"S","\u015E":"S","\u2C7E":"S","\uA7A8":"S","\uA784":"S","\u24C9":"T","\uFF34":"T","\u1E6A":"T","\u0164":"T","\u1E6C":"T","\u021A":"T","\u0162":"T","\u1E70":"T","\u1E6E":"T","\u0166":"T","\u01AC":"T","\u01AE":"T","\u023E":"T","\uA786":"T","\uA728":"TZ","\u24CA":"U","\uFF35":"U","\u00D9":"U","\u00DA":"U","\u00DB":"U","\u0168":"U","\u1E78":"U","\u016A":"U","\u1E7A":"U","\u016C":"U","\u00DC":"U","\u01DB":"U","\u01D7":"U","\u01D5":"U","\u01D9":"U","\u1EE6":"U","\u016E":"U","\u0170":"U","\u01D3":"U","\u0214":"U","\u0216":"U","\u01AF":"U","\u1EEA":"U","\u1EE8":"U","\u1EEE":"U","\u1EEC":"U","\u1EF0":"U","\u1EE4":"U","\u1E72":"U","\u0172":"U","\u1E76":"U","\u1E74":"U","\u0244":"U","\u24CB":"V","\uFF36":"V","\u1E7C":"V","\u1E7E":"V","\u01B2":"V","\uA75E":"V","\u0245":"V","\uA760":"VY","\u24CC":"W","\uFF37":"W","\u1E80":"W","\u1E82":"W","\u0174":"W","\u1E86":"W","\u1E84":"W","\u1E88":"W","\u2C72":"W","\u24CD":"X","\uFF38":"X","\u1E8A":"X","\u1E8C":"X","\u24CE":"Y","\uFF39":"Y","\u1EF2":"Y","\u00DD":"Y","\u0176":"Y","\u1EF8":"Y","\u0232":"Y","\u1E8E":"Y","\u0178":"Y","\u1EF6":"Y","\u1EF4":"Y","\u01B3":"Y","\u024E":"Y","\u1EFE":"Y","\u24CF":"Z","\uFF3A":"Z","\u0179":"Z","\u1E90":"Z","\u017B":"Z","\u017D":"Z","\u1E92":"Z","\u1E94":"Z","\u01B5":"Z","\u0224":"Z","\u2C7F":"Z","\u2C6B":"Z","\uA762":"Z","\u24D0":"a","\uFF41":"a","\u1E9A":"a","\u00E0":"a","\u00E1":"a","\u00E2":"a","\u1EA7":"a","\u1EA5":"a","\u1EAB":"a","\u1EA9":"a","\u00E3":"a","\u0101":"a","\u0103":"a","\u1EB1":"a","\u1EAF":"a","\u1EB5":"a","\u1EB3":"a","\u0227":"a","\u01E1":"a","\u00E4":"a","\u01DF":"a","\u1EA3":"a","\u00E5":"a","\u01FB":"a","\u01CE":"a","\u0201":"a","\u0203":"a","\u1EA1":"a","\u1EAD":"a","\u1EB7":"a","\u1E01":"a","\u0105":"a","\u2C65":"a","\u0250":"a","\uA733":"aa","\u00E6":"ae","\u01FD":"ae","\u01E3":"ae","\uA735":"ao","\uA737":"au","\uA739":"av","\uA73B":"av","\uA73D":"ay","\u24D1":"b","\uFF42":"b","\u1E03":"b","\u1E05":"b","\u1E07":"b","\u0180":"b","\u0183":"b","\u0253":"b","\u24D2":"c","\uFF43":"c","\u0107":"c","\u0109":"c","\u010B":"c","\u010D":"c","\u00E7":"c","\u1E09":"c","\u0188":"c","\u023C":"c","\uA73F":"c","\u2184":"c","\u24D3":"d","\uFF44":"d","\u1E0B":"d","\u010F":"d","\u1E0D":"d","\u1E11":"d","\u1E13":"d","\u1E0F":"d","\u0111":"d","\u018C":"d","\u0256":"d","\u0257":"d","\uA77A":"d","\u01F3":"dz","\u01C6":"dz","\u24D4":"e","\uFF45":"e","\u00E8":"e","\u00E9":"e","\u00EA":"e","\u1EC1":"e","\u1EBF":"e","\u1EC5":"e","\u1EC3":"e","\u1EBD":"e","\u0113":"e","\u1E15":"e","\u1E17":"e","\u0115":"e","\u0117":"e","\u00EB":"e","\u1EBB":"e","\u011B":"e","\u0205":"e","\u0207":"e","\u1EB9":"e","\u1EC7":"e","\u0229":"e","\u1E1D":"e","\u0119":"e","\u1E19":"e","\u1E1B":"e","\u0247":"e","\u025B":"e","\u01DD":"e","\u24D5":"f","\uFF46":"f","\u1E1F":"f","\u0192":"f","\uA77C":"f","\u24D6":"g","\uFF47":"g","\u01F5":"g","\u011D":"g","\u1E21":"g","\u011F":"g","\u0121":"g","\u01E7":"g","\u0123":"g","\u01E5":"g","\u0260":"g","\uA7A1":"g","\u1D79":"g","\uA77F":"g","\u24D7":"h","\uFF48":"h","\u0125":"h","\u1E23":"h","\u1E27":"h","\u021F":"h","\u1E25":"h","\u1E29":"h","\u1E2B":"h","\u1E96":"h","\u0127":"h","\u2C68":"h","\u2C76":"h","\u0265":"h","\u0195":"hv","\u24D8":"i","\uFF49":"i","\u00EC":"i","\u00ED":"i","\u00EE":"i","\u0129":"i","\u012B":"i","\u012D":"i","\u00EF":"i","\u1E2F":"i","\u1EC9":"i","\u01D0":"i","\u0209":"i","\u020B":"i","\u1ECB":"i","\u012F":"i","\u1E2D":"i","\u0268":"i","\u0131":"i","\u24D9":"j","\uFF4A":"j","\u0135":"j","\u01F0":"j","\u0249":"j","\u24DA":"k","\uFF4B":"k","\u1E31":"k","\u01E9":"k","\u1E33":"k","\u0137":"k","\u1E35":"k","\u0199":"k","\u2C6A":"k","\uA741":"k","\uA743":"k","\uA745":"k","\uA7A3":"k","\u24DB":"l","\uFF4C":"l","\u0140":"l","\u013A":"l","\u013E":"l","\u1E37":"l","\u1E39":"l","\u013C":"l","\u1E3D":"l","\u1E3B":"l","\u017F":"l","\u0142":"l","\u019A":"l","\u026B":"l","\u2C61":"l","\uA749":"l","\uA781":"l","\uA747":"l","\u01C9":"lj","\u24DC":"m","\uFF4D":"m","\u1E3F":"m","\u1E41":"m","\u1E43":"m","\u0271":"m","\u026F":"m","\u24DD":"n","\uFF4E":"n","\u01F9":"n","\u0144":"n","\u00F1":"n","\u1E45":"n","\u0148":"n","\u1E47":"n","\u0146":"n","\u1E4B":"n","\u1E49":"n","\u019E":"n","\u0272":"n","\u0149":"n","\uA791":"n","\uA7A5":"n","\u01CC":"nj","\u24DE":"o","\uFF4F":"o","\u00F2":"o","\u00F3":"o","\u00F4":"o","\u1ED3":"o","\u1ED1":"o","\u1ED7":"o","\u1ED5":"o","\u00F5":"o","\u1E4D":"o","\u022D":"o","\u1E4F":"o","\u014D":"o","\u1E51":"o","\u1E53":"o","\u014F":"o","\u022F":"o","\u0231":"o","\u00F6":"o","\u022B":"o","\u1ECF":"o","\u0151":"o","\u01D2":"o","\u020D":"o","\u020F":"o","\u01A1":"o","\u1EDD":"o","\u1EDB":"o","\u1EE1":"o","\u1EDF":"o","\u1EE3":"o","\u1ECD":"o","\u1ED9":"o","\u01EB":"o","\u01ED":"o","\u00F8":"o","\u01FF":"o","\u0254":"o","\uA74B":"o","\uA74D":"o","\u0275":"o","\u01A3":"oi","\u0223":"ou","\uA74F":"oo","\u24DF":"p","\uFF50":"p","\u1E55":"p","\u1E57":"p","\u01A5":"p","\u1D7D":"p","\uA751":"p","\uA753":"p","\uA755":"p","\u24E0":"q","\uFF51":"q","\u024B":"q","\uA757":"q","\uA759":"q","\u24E1":"r","\uFF52":"r","\u0155":"r","\u1E59":"r","\u0159":"r","\u0211":"r","\u0213":"r","\u1E5B":"r","\u1E5D":"r","\u0157":"r","\u1E5F":"r","\u024D":"r","\u027D":"r","\uA75B":"r","\uA7A7":"r","\uA783":"r","\u24E2":"s","\uFF53":"s","\u00DF":"s","\u015B":"s","\u1E65":"s","\u015D":"s","\u1E61":"s","\u0161":"s","\u1E67":"s","\u1E63":"s","\u1E69":"s","\u0219":"s","\u015F":"s","\u023F":"s","\uA7A9":"s","\uA785":"s","\u1E9B":"s","\u24E3":"t","\uFF54":"t","\u1E6B":"t","\u1E97":"t","\u0165":"t","\u1E6D":"t","\u021B":"t","\u0163":"t","\u1E71":"t","\u1E6F":"t","\u0167":"t","\u01AD":"t","\u0288":"t","\u2C66":"t","\uA787":"t","\uA729":"tz","\u24E4":"u","\uFF55":"u","\u00F9":"u","\u00FA":"u","\u00FB":"u","\u0169":"u","\u1E79":"u","\u016B":"u","\u1E7B":"u","\u016D":"u","\u00FC":"u","\u01DC":"u","\u01D8":"u","\u01D6":"u","\u01DA":"u","\u1EE7":"u","\u016F":"u","\u0171":"u","\u01D4":"u","\u0215":"u","\u0217":"u","\u01B0":"u","\u1EEB":"u","\u1EE9":"u","\u1EEF":"u","\u1EED":"u","\u1EF1":"u","\u1EE5":"u","\u1E73":"u","\u0173":"u","\u1E77":"u","\u1E75":"u","\u0289":"u","\u24E5":"v","\uFF56":"v","\u1E7D":"v","\u1E7F":"v","\u028B":"v","\uA75F":"v","\u028C":"v","\uA761":"vy","\u24E6":"w","\uFF57":"w","\u1E81":"w","\u1E83":"w","\u0175":"w","\u1E87":"w","\u1E85":"w","\u1E98":"w","\u1E89":"w","\u2C73":"w","\u24E7":"x","\uFF58":"x","\u1E8B":"x","\u1E8D":"x","\u24E8":"y","\uFF59":"y","\u1EF3":"y","\u00FD":"y","\u0177":"y","\u1EF9":"y","\u0233":"y","\u1E8F":"y","\u00FF":"y","\u1EF7":"y","\u1E99":"y","\u1EF5":"y","\u01B4":"y","\u024F":"y","\u1EFF":"y","\u24E9":"z","\uFF5A":"z","\u017A":"z","\u1E91":"z","\u017C":"z","\u017E":"z","\u1E93":"z","\u1E95":"z","\u01B6":"z","\u0225":"z","\u0240":"z","\u2C6C":"z","\uA763":"z"}; + + $document = $(document); + + nextUid=(function() { var counter=1; return function() { return counter++; }; }()); + + + function reinsertElement(element) { + var placeholder = $(document.createTextNode('')); + + element.before(placeholder); + placeholder.before(element); + placeholder.remove(); + } + + function stripDiacritics(str) { + var ret, i, l, c; + + if (!str || str.length < 1) return str; + + ret = ""; + for (i = 0, l = str.length; i < l; i++) { + c = str.charAt(i); + ret += DIACRITICS[c] || c; + } + return ret; + } + + function indexOf(value, array) { + var i = 0, l = array.length; + for (; i < l; i = i + 1) { + if (equal(value, array[i])) return i; + } + return -1; + } + + function measureScrollbar () { + var $template = $( MEASURE_SCROLLBAR_TEMPLATE ); + $template.appendTo('body'); + + var dim = { + width: $template.width() - $template[0].clientWidth, + height: $template.height() - $template[0].clientHeight + }; + $template.remove(); + + return dim; + } + + /** + * Compares equality of a and b + * @param a + * @param b + */ + function equal(a, b) { + if (a === b) return true; + if (a === undefined || b === undefined) return false; + if (a === null || b === null) return false; + // Check whether 'a' or 'b' is a string (primitive or object). + // The concatenation of an empty string (+'') converts its argument to a string's primitive. + if (a.constructor === String) return a+'' === b+''; // a+'' - in case 'a' is a String object + if (b.constructor === String) return b+'' === a+''; // b+'' - in case 'b' is a String object + return false; + } + + /** + * Splits the string into an array of values, trimming each value. An empty array is returned for nulls or empty + * strings + * @param string + * @param separator + */ + function splitVal(string, separator) { + var val, i, l; + if (string === null || string.length < 1) return []; + val = string.split(separator); + for (i = 0, l = val.length; i < l; i = i + 1) val[i] = $.trim(val[i]); + return val; + } + + function getSideBorderPadding(element) { + return element.outerWidth(false) - element.width(); + } + + function installKeyUpChangeEvent(element) { + var key="keyup-change-value"; + element.on("keydown", function () { + if ($.data(element, key) === undefined) { + $.data(element, key, element.val()); + } + }); + element.on("keyup", function () { + var val= $.data(element, key); + if (val !== undefined && element.val() !== val) { + $.removeData(element, key); + element.trigger("keyup-change"); + } + }); + } + + $document.on("mousemove", function (e) { + lastMousePosition.x = e.pageX; + lastMousePosition.y = e.pageY; + }); + + /** + * filters mouse events so an event is fired only if the mouse moved. + * + * filters out mouse events that occur when mouse is stationary but + * the elements under the pointer are scrolled. + */ + function installFilteredMouseMove(element) { + element.on("mousemove", function (e) { + var lastpos = lastMousePosition; + if (lastpos === undefined || lastpos.x !== e.pageX || lastpos.y !== e.pageY) { + $(e.target).trigger("mousemove-filtered", e); + } + }); + } + + /** + * Debounces a function. Returns a function that calls the original fn function only if no invocations have been made + * within the last quietMillis milliseconds. + * + * @param quietMillis number of milliseconds to wait before invoking fn + * @param fn function to be debounced + * @param ctx object to be used as this reference within fn + * @return debounced version of fn + */ + function debounce(quietMillis, fn, ctx) { + ctx = ctx || undefined; + var timeout; + return function () { + var args = arguments; + window.clearTimeout(timeout); + timeout = window.setTimeout(function() { + fn.apply(ctx, args); + }, quietMillis); + }; + } + + /** + * A simple implementation of a thunk + * @param formula function used to lazily initialize the thunk + * @return {Function} + */ + function thunk(formula) { + var evaluated = false, + value; + return function() { + if (evaluated === false) { value = formula(); evaluated = true; } + return value; + }; + }; + + function installDebouncedScroll(threshold, element) { + var notify = debounce(threshold, function (e) { element.trigger("scroll-debounced", e);}); + element.on("scroll", function (e) { + if (indexOf(e.target, element.get()) >= 0) notify(e); + }); + } + + function focus($el) { + if ($el[0] === document.activeElement) return; + + /* set the focus in a 0 timeout - that way the focus is set after the processing + of the current event has finished - which seems like the only reliable way + to set focus */ + window.setTimeout(function() { + var el=$el[0], pos=$el.val().length, range; + + $el.focus(); + + /* make sure el received focus so we do not error out when trying to manipulate the caret. + sometimes modals or others listeners may steal it after its set */ + var isVisible = (el.offsetWidth > 0 || el.offsetHeight > 0); + if (isVisible && el === document.activeElement) { + + /* after the focus is set move the caret to the end, necessary when we val() + just before setting focus */ + if(el.setSelectionRange) + { + el.setSelectionRange(pos, pos); + } + else if (el.createTextRange) { + range = el.createTextRange(); + range.collapse(false); + range.select(); + } + } + }, 0); + } + + function getCursorInfo(el) { + el = $(el)[0]; + var offset = 0; + var length = 0; + if ('selectionStart' in el) { + offset = el.selectionStart; + length = el.selectionEnd - offset; + } else if ('selection' in document) { + el.focus(); + var sel = document.selection.createRange(); + length = document.selection.createRange().text.length; + sel.moveStart('character', -el.value.length); + offset = sel.text.length - length; + } + return { offset: offset, length: length }; + } + + function killEvent(event) { + event.preventDefault(); + event.stopPropagation(); + } + function killEventImmediately(event) { + event.preventDefault(); + event.stopImmediatePropagation(); + } + + function measureTextWidth(e) { + if (!sizer){ + var style = e[0].currentStyle || window.getComputedStyle(e[0], null); + sizer = $(document.createElement("div")).css({ + position: "absolute", + left: "-10000px", + top: "-10000px", + display: "none", + fontSize: style.fontSize, + fontFamily: style.fontFamily, + fontStyle: style.fontStyle, + fontWeight: style.fontWeight, + letterSpacing: style.letterSpacing, + textTransform: style.textTransform, + whiteSpace: "nowrap" + }); + sizer.attr("class","select2-sizer"); + $("body").append(sizer); + } + sizer.text(e.val()); + return sizer.width(); + } + + function syncCssClasses(dest, src, adapter) { + var classes, replacements = [], adapted; + + classes = dest.attr("class"); + if (classes) { + classes = '' + classes; // for IE which returns object + $(classes.split(" ")).each2(function() { + if (this.indexOf("select2-") === 0) { + replacements.push(this); + } + }); + } + classes = src.attr("class"); + if (classes) { + classes = '' + classes; // for IE which returns object + $(classes.split(" ")).each2(function() { + if (this.indexOf("select2-") !== 0) { + adapted = adapter(this); + if (adapted) { + replacements.push(adapted); + } + } + }); + } + dest.attr("class", replacements.join(" ")); + } + + + function markMatch(text, term, markup, escapeMarkup) { + var match=stripDiacritics(text.toUpperCase()).indexOf(stripDiacritics(term.toUpperCase())), + tl=term.length; + + if (match<0) { + markup.push(escapeMarkup(text)); + return; + } + + markup.push(escapeMarkup(text.substring(0, match))); + markup.push(""); + markup.push(escapeMarkup(text.substring(match, match + tl))); + markup.push(""); + markup.push(escapeMarkup(text.substring(match + tl, text.length))); + } + + function defaultEscapeMarkup(markup) { + var replace_map = { + '\\': '\', + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + "/": '/' + }; + + return String(markup).replace(/[&<>"'\/\\]/g, function (match) { + return replace_map[match]; + }); + } + + /** + * Produces an ajax-based query function + * + * @param options object containing configuration parameters + * @param options.params parameter map for the transport ajax call, can contain such options as cache, jsonpCallback, etc. see $.ajax + * @param options.transport function that will be used to execute the ajax request. must be compatible with parameters supported by $.ajax + * @param options.url url for the data + * @param options.data a function(searchTerm, pageNumber, context) that should return an object containing query string parameters for the above url. + * @param options.dataType request data type: ajax, jsonp, other datatypes supported by jQuery's $.ajax function or the transport function if specified + * @param options.quietMillis (optional) milliseconds to wait before making the ajaxRequest, helps debounce the ajax function if invoked too often + * @param options.results a function(remoteData, pageNumber) that converts data returned form the remote request to the format expected by Select2. + * The expected format is an object containing the following keys: + * results array of objects that will be used as choices + * more (optional) boolean indicating whether there are more results available + * Example: {results:[{id:1, text:'Red'},{id:2, text:'Blue'}], more:true} + */ + function ajax(options) { + var timeout, // current scheduled but not yet executed request + handler = null, + quietMillis = options.quietMillis || 100, + ajaxUrl = options.url, + self = this; + + return function (query) { + window.clearTimeout(timeout); + timeout = window.setTimeout(function () { + var data = options.data, // ajax data function + url = ajaxUrl, // ajax url string or function + transport = options.transport || $.fn.select2.ajaxDefaults.transport, + // deprecated - to be removed in 4.0 - use params instead + deprecated = { + type: options.type || 'GET', // set type of request (GET or POST) + cache: options.cache || false, + jsonpCallback: options.jsonpCallback||undefined, + dataType: options.dataType||"json" + }, + params = $.extend({}, $.fn.select2.ajaxDefaults.params, deprecated); + + data = data ? data.call(self, query.term, query.page, query.context) : null; + url = (typeof url === 'function') ? url.call(self, query.term, query.page, query.context) : url; + + if (handler && typeof handler.abort === "function") { handler.abort(); } + + if (options.params) { + if ($.isFunction(options.params)) { + $.extend(params, options.params.call(self)); + } else { + $.extend(params, options.params); + } + } + + $.extend(params, { + url: url, + dataType: options.dataType, + data: data, + success: function (data) { + // TODO - replace query.page with query so users have access to term, page, etc. + var results = options.results(data, query.page); + query.callback(results); + } + }); + handler = transport.call(self, params); + }, quietMillis); + }; + } + + /** + * Produces a query function that works with a local array + * + * @param options object containing configuration parameters. The options parameter can either be an array or an + * object. + * + * If the array form is used it is assumed that it contains objects with 'id' and 'text' keys. + * + * If the object form is used ti is assumed that it contains 'data' and 'text' keys. The 'data' key should contain + * an array of objects that will be used as choices. These objects must contain at least an 'id' key. The 'text' + * key can either be a String in which case it is expected that each element in the 'data' array has a key with the + * value of 'text' which will be used to match choices. Alternatively, text can be a function(item) that can extract + * the text. + */ + function local(options) { + var data = options, // data elements + dataText, + tmp, + text = function (item) { return ""+item.text; }; // function used to retrieve the text portion of a data item that is matched against the search + + if ($.isArray(data)) { + tmp = data; + data = { results: tmp }; + } + + if ($.isFunction(data) === false) { + tmp = data; + data = function() { return tmp; }; + } + + var dataItem = data(); + if (dataItem.text) { + text = dataItem.text; + // if text is not a function we assume it to be a key name + if (!$.isFunction(text)) { + dataText = dataItem.text; // we need to store this in a separate variable because in the next step data gets reset and data.text is no longer available + text = function (item) { return item[dataText]; }; + } + } + + return function (query) { + var t = query.term, filtered = { results: [] }, process; + if (t === "") { + query.callback(data()); + return; + } + + process = function(datum, collection) { + var group, attr; + datum = datum[0]; + if (datum.children) { + group = {}; + for (attr in datum) { + if (datum.hasOwnProperty(attr)) group[attr]=datum[attr]; + } + group.children=[]; + $(datum.children).each2(function(i, childDatum) { process(childDatum, group.children); }); + if (group.children.length || query.matcher(t, text(group), datum)) { + collection.push(group); + } + } else { + if (query.matcher(t, text(datum), datum)) { + collection.push(datum); + } + } + }; + + $(data().results).each2(function(i, datum) { process(datum, filtered.results); }); + query.callback(filtered); + }; + } + + // TODO javadoc + function tags(data) { + var isFunc = $.isFunction(data); + return function (query) { + var t = query.term, filtered = {results: []}; + $(isFunc ? data() : data).each(function () { + var isObject = this.text !== undefined, + text = isObject ? this.text : this; + if (t === "" || query.matcher(t, text)) { + filtered.results.push(isObject ? this : {id: this, text: this}); + } + }); + query.callback(filtered); + }; + } + + /** + * Checks if the formatter function should be used. + * + * Throws an error if it is not a function. Returns true if it should be used, + * false if no formatting should be performed. + * + * @param formatter + */ + function checkFormatter(formatter, formatterName) { + if ($.isFunction(formatter)) return true; + if (!formatter) return false; + if (typeof(formatter) === 'string') return true; + throw new Error(formatterName +" must be a string, function, or falsy value"); + } + + function evaluate(val) { + if ($.isFunction(val)) { + var args = Array.prototype.slice.call(arguments, 1); + return val.apply(null, args); + } + return val; + } + + function countResults(results) { + var count = 0; + $.each(results, function(i, item) { + if (item.children) { + count += countResults(item.children); + } else { + count++; + } + }); + return count; + } + + /** + * Default tokenizer. This function uses breaks the input on substring match of any string from the + * opts.tokenSeparators array and uses opts.createSearchChoice to create the choice object. Both of those + * two options have to be defined in order for the tokenizer to work. + * + * @param input text user has typed so far or pasted into the search field + * @param selection currently selected choices + * @param selectCallback function(choice) callback tho add the choice to selection + * @param opts select2's opts + * @return undefined/null to leave the current input unchanged, or a string to change the input to the returned value + */ + function defaultTokenizer(input, selection, selectCallback, opts) { + var original = input, // store the original so we can compare and know if we need to tell the search to update its text + dupe = false, // check for whether a token we extracted represents a duplicate selected choice + token, // token + index, // position at which the separator was found + i, l, // looping variables + separator; // the matched separator + + if (!opts.createSearchChoice || !opts.tokenSeparators || opts.tokenSeparators.length < 1) return undefined; + + while (true) { + index = -1; + + for (i = 0, l = opts.tokenSeparators.length; i < l; i++) { + separator = opts.tokenSeparators[i]; + index = input.indexOf(separator); + if (index >= 0) break; + } + + if (index < 0) break; // did not find any token separator in the input string, bail + + token = input.substring(0, index); + input = input.substring(index + separator.length); + + if (token.length > 0) { + token = opts.createSearchChoice.call(this, token, selection); + if (token !== undefined && token !== null && opts.id(token) !== undefined && opts.id(token) !== null) { + dupe = false; + for (i = 0, l = selection.length; i < l; i++) { + if (equal(opts.id(token), opts.id(selection[i]))) { + dupe = true; break; + } + } + + if (!dupe) selectCallback(token); + } + } + } + + if (original!==input) return input; + } + + /** + * Creates a new class + * + * @param superClass + * @param methods + */ + function clazz(SuperClass, methods) { + var constructor = function () {}; + constructor.prototype = new SuperClass; + constructor.prototype.constructor = constructor; + constructor.prototype.parent = SuperClass.prototype; + constructor.prototype = $.extend(constructor.prototype, methods); + return constructor; + } + + AbstractSelect2 = clazz(Object, { + + // abstract + bind: function (func) { + var self = this; + return function () { + func.apply(self, arguments); + }; + }, + + // abstract + init: function (opts) { + var results, search, resultsSelector = ".select2-results"; + + // prepare options + this.opts = opts = this.prepareOpts(opts); + + this.id=opts.id; + + // destroy if called on an existing component + if (opts.element.data("select2") !== undefined && + opts.element.data("select2") !== null) { + opts.element.data("select2").destroy(); + } + + this.container = this.createContainer(); + + this.liveRegion = $("", { + role: "status", + "aria-live": "polite" + }) + .addClass("select2-hidden-accessible") + .appendTo(document.body); + + this.containerId="s2id_"+(opts.element.attr("id") || "autogen"+nextUid()).replace(/([;&,\-\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g, '\\$1'); + this.containerSelector="#"+this.containerId; + this.container.attr("id", this.containerId); + + // cache the body so future lookups are cheap + this.body = thunk(function() { return opts.element.closest("body"); }); + + syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass); + + this.container.attr("style", opts.element.attr("style")); + this.container.css(evaluate(opts.containerCss)); + this.container.addClass(evaluate(opts.containerCssClass)); + + this.elementTabIndex = this.opts.element.attr("tabindex"); + + // swap container for the element + this.opts.element + .data("select2", this) + .attr("tabindex", "-1") + .before(this.container) + .on("click.select2", killEvent); // do not leak click events + + this.container.data("select2", this); + + this.dropdown = this.container.find(".select2-drop"); + + syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass); + + this.dropdown.addClass(evaluate(opts.dropdownCssClass)); + this.dropdown.data("select2", this); + this.dropdown.on("click", killEvent); + + this.results = results = this.container.find(resultsSelector); + this.search = search = this.container.find("input.select2-input"); + + this.queryCount = 0; + this.resultsPage = 0; + this.context = null; + + // initialize the container + this.initContainer(); + + this.container.on("click", killEvent); + + installFilteredMouseMove(this.results); + this.dropdown.on("mousemove-filtered touchstart touchmove touchend", resultsSelector, this.bind(this.highlightUnderEvent)); + this.dropdown.on("touchend", resultsSelector, this.bind(this.selectHighlighted)); + this.dropdown.on("touchmove", resultsSelector, this.bind(this.touchMoved)); + this.dropdown.on("touchstart touchend", resultsSelector, this.bind(this.clearTouchMoved)); + + installDebouncedScroll(80, this.results); + this.dropdown.on("scroll-debounced", resultsSelector, this.bind(this.loadMoreIfNeeded)); + + // do not propagate change event from the search field out of the component + $(this.container).on("change", ".select2-input", function(e) {e.stopPropagation();}); + $(this.dropdown).on("change", ".select2-input", function(e) {e.stopPropagation();}); + + // if jquery.mousewheel plugin is installed we can prevent out-of-bounds scrolling of results via mousewheel + if ($.fn.mousewheel) { + results.mousewheel(function (e, delta, deltaX, deltaY) { + var top = results.scrollTop(); + if (deltaY > 0 && top - deltaY <= 0) { + results.scrollTop(0); + killEvent(e); + } else if (deltaY < 0 && results.get(0).scrollHeight - results.scrollTop() + deltaY <= results.height()) { + results.scrollTop(results.get(0).scrollHeight - results.height()); + killEvent(e); + } + }); + } + + installKeyUpChangeEvent(search); + search.on("keyup-change input paste", this.bind(this.updateResults)); + search.on("focus", function () { search.addClass("select2-focused"); }); + search.on("blur", function () { search.removeClass("select2-focused");}); + + this.dropdown.on("mouseup", resultsSelector, this.bind(function (e) { + if ($(e.target).closest(".select2-result-selectable").length > 0) { + this.highlightUnderEvent(e); + this.selectHighlighted(e); + } + })); + + // trap all mouse events from leaving the dropdown. sometimes there may be a modal that is listening + // for mouse events outside of itself so it can close itself. since the dropdown is now outside the select2's + // dom it will trigger the popup close, which is not what we want + // focusin can cause focus wars between modals and select2 since the dropdown is outside the modal. + this.dropdown.on("click mouseup mousedown focusin", function (e) { e.stopPropagation(); }); + + this.nextSearchTerm = undefined; + + if ($.isFunction(this.opts.initSelection)) { + // initialize selection based on the current value of the source element + this.initSelection(); + + // if the user has provided a function that can set selection based on the value of the source element + // we monitor the change event on the element and trigger it, allowing for two way synchronization + this.monitorSource(); + } + + if (opts.maximumInputLength !== null) { + this.search.attr("maxlength", opts.maximumInputLength); + } + + var disabled = opts.element.prop("disabled"); + if (disabled === undefined) disabled = false; + this.enable(!disabled); + + var readonly = opts.element.prop("readonly"); + if (readonly === undefined) readonly = false; + this.readonly(readonly); + + // Calculate size of scrollbar + scrollBarDimensions = scrollBarDimensions || measureScrollbar(); + + this.autofocus = opts.element.prop("autofocus"); + opts.element.prop("autofocus", false); + if (this.autofocus) this.focus(); + + this.search.attr("placeholder", opts.searchInputPlaceholder); + }, + + // abstract + destroy: function () { + var element=this.opts.element, select2 = element.data("select2"); + + this.close(); + + if (this.propertyObserver) { delete this.propertyObserver; this.propertyObserver = null; } + + if (select2 !== undefined) { + select2.container.remove(); + select2.liveRegion.remove(); + select2.dropdown.remove(); + element + .removeClass("select2-offscreen") + .removeData("select2") + .off(".select2") + .prop("autofocus", this.autofocus || false); + if (this.elementTabIndex) { + element.attr({tabindex: this.elementTabIndex}); + } else { + element.removeAttr("tabindex"); + } + element.show(); + } + }, + + // abstract + optionToData: function(element) { + if (element.is("option")) { + return { + id:element.prop("value"), + text:element.text(), + element: element.get(), + css: element.attr("class"), + disabled: element.prop("disabled"), + locked: equal(element.attr("locked"), "locked") || equal(element.data("locked"), true) + }; + } else if (element.is("optgroup")) { + return { + text:element.attr("label"), + children:[], + element: element.get(), + css: element.attr("class") + }; + } + }, + + // abstract + prepareOpts: function (opts) { + var element, select, idKey, ajaxUrl, self = this; + + element = opts.element; + + if (element.get(0).tagName.toLowerCase() === "select") { + this.select = select = opts.element; + } + + if (select) { + // these options are not allowed when attached to a select because they are picked up off the element itself + $.each(["id", "multiple", "ajax", "query", "createSearchChoice", "initSelection", "data", "tags"], function () { + if (this in opts) { + throw new Error("Option '" + this + "' is not allowed for Select2 when attached to a ", + "
          ", + " ", + "
            ", + "
          ", + "
          "].join("")); + return container; + }, + + // single + enableInterface: function() { + if (this.parent.enableInterface.apply(this, arguments)) { + this.focusser.prop("disabled", !this.isInterfaceEnabled()); + } + }, + + // single + opening: function () { + var el, range, len; + + if (this.opts.minimumResultsForSearch >= 0) { + this.showSearch(true); + } + + this.parent.opening.apply(this, arguments); + + if (this.showSearchInput !== false) { + // IE appends focusser.val() at the end of field :/ so we manually insert it at the beginning using a range + // all other browsers handle this just fine + + this.search.val(this.focusser.val()); + } + this.search.focus(); + // move the cursor to the end after focussing, otherwise it will be at the beginning and + // new text will appear *before* focusser.val() + el = this.search.get(0); + if (el.createTextRange) { + range = el.createTextRange(); + range.collapse(false); + range.select(); + } else if (el.setSelectionRange) { + len = this.search.val().length; + el.setSelectionRange(len, len); + } + + // initializes search's value with nextSearchTerm (if defined by user) + // ignore nextSearchTerm if the dropdown is opened by the user pressing a letter + if(this.search.val() === "") { + if(this.nextSearchTerm != undefined){ + this.search.val(this.nextSearchTerm); + this.search.select(); + } + } + + this.focusser.prop("disabled", true).val(""); + this.updateResults(true); + this.opts.element.trigger($.Event("select2-open")); + }, + + // single + close: function () { + if (!this.opened()) return; + this.parent.close.apply(this, arguments); + + this.focusser.prop("disabled", false); + + if (this.opts.shouldFocusInput(this)) { + this.focusser.focus(); + } + }, + + // single + focus: function () { + if (this.opened()) { + this.close(); + } else { + this.focusser.prop("disabled", false); + if (this.opts.shouldFocusInput(this)) { + this.focusser.focus(); + } + } + }, + + // single + isFocused: function () { + return this.container.hasClass("select2-container-active"); + }, + + // single + cancel: function () { + this.parent.cancel.apply(this, arguments); + this.focusser.prop("disabled", false); + + if (this.opts.shouldFocusInput(this)) { + this.focusser.focus(); + } + }, + + // single + destroy: function() { + $("label[for='" + this.focusser.attr('id') + "']") + .attr('for', this.opts.element.attr("id")); + this.parent.destroy.apply(this, arguments); + }, + + // single + initContainer: function () { + + var selection, + container = this.container, + dropdown = this.dropdown, + idSuffix = nextUid(), + elementLabel; + + if (this.opts.minimumResultsForSearch < 0) { + this.showSearch(false); + } else { + this.showSearch(true); + } + + this.selection = selection = container.find(".select2-choice"); + + this.focusser = container.find(".select2-focusser"); + + // add aria associations + selection.find(".select2-chosen").attr("id", "select2-chosen-"+idSuffix); + this.focusser.attr("aria-labelledby", "select2-chosen-"+idSuffix); + this.results.attr("id", "select2-results-"+idSuffix); + this.search.attr("aria-owns", "select2-results-"+idSuffix); + + // rewrite labels from original element to focusser + this.focusser.attr("id", "s2id_autogen"+idSuffix); + + elementLabel = $("label[for='" + this.opts.element.attr("id") + "']"); + + this.focusser.prev() + .text(elementLabel.text()) + .attr('for', this.focusser.attr('id')); + + // Ensure the original element retains an accessible name + var originalTitle = this.opts.element.attr("title"); + this.opts.element.attr("title", (originalTitle || elementLabel.text())); + + this.focusser.attr("tabindex", this.elementTabIndex); + + // write label for search field using the label from the focusser element + this.search.attr("id", this.focusser.attr('id') + '_search'); + + this.search.prev() + .text($("label[for='" + this.focusser.attr('id') + "']").text()) + .attr('for', this.search.attr('id')); + + this.search.on("keydown", this.bind(function (e) { + if (!this.isInterfaceEnabled()) return; + + if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) { + // prevent the page from scrolling + killEvent(e); + return; + } + + switch (e.which) { + case KEY.UP: + case KEY.DOWN: + this.moveHighlight((e.which === KEY.UP) ? -1 : 1); + killEvent(e); + return; + case KEY.ENTER: + this.selectHighlighted(); + killEvent(e); + return; + case KEY.TAB: + this.selectHighlighted({noFocus: true}); + return; + case KEY.ESC: + this.cancel(e); + killEvent(e); + return; + } + })); + + this.search.on("blur", this.bind(function(e) { + // a workaround for chrome to keep the search field focussed when the scroll bar is used to scroll the dropdown. + // without this the search field loses focus which is annoying + if (document.activeElement === this.body().get(0)) { + window.setTimeout(this.bind(function() { + if (this.opened()) { + this.search.focus(); + } + }), 0); + } + })); + + this.focusser.on("keydown", this.bind(function (e) { + if (!this.isInterfaceEnabled()) return; + + if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC) { + return; + } + + if (this.opts.openOnEnter === false && e.which === KEY.ENTER) { + killEvent(e); + return; + } + + if (e.which == KEY.DOWN || e.which == KEY.UP + || (e.which == KEY.ENTER && this.opts.openOnEnter)) { + + if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) return; + + this.open(); + killEvent(e); + return; + } + + if (e.which == KEY.DELETE || e.which == KEY.BACKSPACE) { + if (this.opts.allowClear) { + this.clear(); + } + killEvent(e); + return; + } + })); + + + installKeyUpChangeEvent(this.focusser); + this.focusser.on("keyup-change input", this.bind(function(e) { + if (this.opts.minimumResultsForSearch >= 0) { + e.stopPropagation(); + if (this.opened()) return; + this.open(); + } + })); + + selection.on("mousedown touchstart", "abbr", this.bind(function (e) { + if (!this.isInterfaceEnabled()) return; + this.clear(); + killEventImmediately(e); + this.close(); + this.selection.focus(); + })); + + selection.on("mousedown touchstart", this.bind(function (e) { + // Prevent IE from generating a click event on the body + reinsertElement(selection); + + if (!this.container.hasClass("select2-container-active")) { + this.opts.element.trigger($.Event("select2-focus")); + } + + if (this.opened()) { + this.close(); + } else if (this.isInterfaceEnabled()) { + this.open(); + } + + killEvent(e); + })); + + dropdown.on("mousedown touchstart", this.bind(function() { this.search.focus(); })); + + selection.on("focus", this.bind(function(e) { + killEvent(e); + })); + + this.focusser.on("focus", this.bind(function(){ + if (!this.container.hasClass("select2-container-active")) { + this.opts.element.trigger($.Event("select2-focus")); + } + this.container.addClass("select2-container-active"); + })).on("blur", this.bind(function() { + if (!this.opened()) { + this.container.removeClass("select2-container-active"); + this.opts.element.trigger($.Event("select2-blur")); + } + })); + this.search.on("focus", this.bind(function(){ + if (!this.container.hasClass("select2-container-active")) { + this.opts.element.trigger($.Event("select2-focus")); + } + this.container.addClass("select2-container-active"); + })); + + this.initContainerWidth(); + this.opts.element.addClass("select2-offscreen"); + this.setPlaceholder(); + + }, + + // single + clear: function(triggerChange) { + var data=this.selection.data("select2-data"); + if (data) { // guard against queued quick consecutive clicks + var evt = $.Event("select2-clearing"); + this.opts.element.trigger(evt); + if (evt.isDefaultPrevented()) { + return; + } + var placeholderOption = this.getPlaceholderOption(); + this.opts.element.val(placeholderOption ? placeholderOption.val() : ""); + this.selection.find(".select2-chosen").empty(); + this.selection.removeData("select2-data"); + this.setPlaceholder(); + + if (triggerChange !== false){ + this.opts.element.trigger({ type: "select2-removed", val: this.id(data), choice: data }); + this.triggerChange({removed:data}); + } + } + }, + + /** + * Sets selection based on source element's value + */ + // single + initSelection: function () { + var selected; + if (this.isPlaceholderOptionSelected()) { + this.updateSelection(null); + this.close(); + this.setPlaceholder(); + } else { + var self = this; + this.opts.initSelection.call(null, this.opts.element, function(selected){ + if (selected !== undefined && selected !== null) { + self.updateSelection(selected); + self.close(); + self.setPlaceholder(); + self.nextSearchTerm = self.opts.nextSearchTerm(selected, self.search.val()); + } + }); + } + }, + + isPlaceholderOptionSelected: function() { + var placeholderOption; + if (!this.getPlaceholder()) return false; // no placeholder specified so no option should be considered + return ((placeholderOption = this.getPlaceholderOption()) !== undefined && placeholderOption.prop("selected")) + || (this.opts.element.val() === "") + || (this.opts.element.val() === undefined) + || (this.opts.element.val() === null); + }, + + // single + prepareOpts: function () { + var opts = this.parent.prepareOpts.apply(this, arguments), + self=this; + + if (opts.element.get(0).tagName.toLowerCase() === "select") { + // install the selection initializer + opts.initSelection = function (element, callback) { + var selected = element.find("option").filter(function() { return this.selected && !this.disabled }); + // a single select box always has a value, no need to null check 'selected' + callback(self.optionToData(selected)); + }; + } else if ("data" in opts) { + // install default initSelection when applied to hidden input and data is local + opts.initSelection = opts.initSelection || function (element, callback) { + var id = element.val(); + //search in data by id, storing the actual matching item + var match = null; + opts.query({ + matcher: function(term, text, el){ + var is_match = equal(id, opts.id(el)); + if (is_match) { + match = el; + } + return is_match; + }, + callback: !$.isFunction(callback) ? $.noop : function() { + callback(match); + } + }); + }; + } + + return opts; + }, + + // single + getPlaceholder: function() { + // if a placeholder is specified on a single select without a valid placeholder option ignore it + if (this.select) { + if (this.getPlaceholderOption() === undefined) { + return undefined; + } + } + + return this.parent.getPlaceholder.apply(this, arguments); + }, + + // single + setPlaceholder: function () { + var placeholder = this.getPlaceholder(); + + if (this.isPlaceholderOptionSelected() && placeholder !== undefined) { + + // check for a placeholder option if attached to a select + if (this.select && this.getPlaceholderOption() === undefined) return; + + this.selection.find(".select2-chosen").html(this.opts.escapeMarkup(placeholder)); + + this.selection.addClass("select2-default"); + + this.container.removeClass("select2-allowclear"); + } + }, + + // single + postprocessResults: function (data, initial, noHighlightUpdate) { + var selected = 0, self = this, showSearchInput = true; + + // find the selected element in the result list + + this.findHighlightableChoices().each2(function (i, elm) { + if (equal(self.id(elm.data("select2-data")), self.opts.element.val())) { + selected = i; + return false; + } + }); + + // and highlight it + if (noHighlightUpdate !== false) { + if (initial === true && selected >= 0) { + this.highlight(selected); + } else { + this.highlight(0); + } + } + + // hide the search box if this is the first we got the results and there are enough of them for search + + if (initial === true) { + var min = this.opts.minimumResultsForSearch; + if (min >= 0) { + this.showSearch(countResults(data.results) >= min); + } + } + }, + + // single + showSearch: function(showSearchInput) { + if (this.showSearchInput === showSearchInput) return; + + this.showSearchInput = showSearchInput; + + this.dropdown.find(".select2-search").toggleClass("select2-search-hidden", !showSearchInput); + this.dropdown.find(".select2-search").toggleClass("select2-offscreen", !showSearchInput); + //add "select2-with-searchbox" to the container if search box is shown + $(this.dropdown, this.container).toggleClass("select2-with-searchbox", showSearchInput); + }, + + // single + onSelect: function (data, options) { + + if (!this.triggerSelect(data)) { return; } + + var old = this.opts.element.val(), + oldData = this.data(); + + this.opts.element.val(this.id(data)); + this.updateSelection(data); + + this.opts.element.trigger({ type: "select2-selected", val: this.id(data), choice: data }); + + this.nextSearchTerm = this.opts.nextSearchTerm(data, this.search.val()); + this.close(); + + if ((!options || !options.noFocus) && this.opts.shouldFocusInput(this)) { + this.focusser.focus(); + } + + if (!equal(old, this.id(data))) { + this.triggerChange({ added: data, removed: oldData }); + } + }, + + // single + updateSelection: function (data) { + + var container=this.selection.find(".select2-chosen"), formatted, cssClass; + + this.selection.data("select2-data", data); + + container.empty(); + if (data !== null) { + formatted=this.opts.formatSelection(data, container, this.opts.escapeMarkup); + } + if (formatted !== undefined) { + container.append(formatted); + } + cssClass=this.opts.formatSelectionCssClass(data, container); + if (cssClass !== undefined) { + container.addClass(cssClass); + } + + this.selection.removeClass("select2-default"); + + if (this.opts.allowClear && this.getPlaceholder() !== undefined) { + this.container.addClass("select2-allowclear"); + } + }, + + // single + val: function () { + var val, + triggerChange = false, + data = null, + self = this, + oldData = this.data(); + + if (arguments.length === 0) { + return this.opts.element.val(); + } + + val = arguments[0]; + + if (arguments.length > 1) { + triggerChange = arguments[1]; + } + + if (this.select) { + this.select + .val(val) + .find("option").filter(function() { return this.selected }).each2(function (i, elm) { + data = self.optionToData(elm); + return false; + }); + this.updateSelection(data); + this.setPlaceholder(); + if (triggerChange) { + this.triggerChange({added: data, removed:oldData}); + } + } else { + // val is an id. !val is true for [undefined,null,'',0] - 0 is legal + if (!val && val !== 0) { + this.clear(triggerChange); + return; + } + if (this.opts.initSelection === undefined) { + throw new Error("cannot call val() if initSelection() is not defined"); + } + this.opts.element.val(val); + this.opts.initSelection(this.opts.element, function(data){ + self.opts.element.val(!data ? "" : self.id(data)); + self.updateSelection(data); + self.setPlaceholder(); + if (triggerChange) { + self.triggerChange({added: data, removed:oldData}); + } + }); + } + }, + + // single + clearSearch: function () { + this.search.val(""); + this.focusser.val(""); + }, + + // single + data: function(value) { + var data, + triggerChange = false; + + if (arguments.length === 0) { + data = this.selection.data("select2-data"); + if (data == undefined) data = null; + return data; + } else { + if (arguments.length > 1) { + triggerChange = arguments[1]; + } + if (!value) { + this.clear(triggerChange); + } else { + data = this.data(); + this.opts.element.val(!value ? "" : this.id(value)); + this.updateSelection(value); + if (triggerChange) { + this.triggerChange({added: value, removed:data}); + } + } + } + } + }); + + MultiSelect2 = clazz(AbstractSelect2, { + + // multi + createContainer: function () { + var container = $(document.createElement("div")).attr({ + "class": "select2-container select2-container-multi" + }).html([ + "
            ", + "
          • ", + " ", + " ", + "
          • ", + "
          ", + "
          ", + "
            ", + "
          ", + "
          "].join("")); + return container; + }, + + // multi + prepareOpts: function () { + var opts = this.parent.prepareOpts.apply(this, arguments), + self=this; + + // TODO validate placeholder is a string if specified + + if (opts.element.get(0).tagName.toLowerCase() === "select") { + // install the selection initializer + opts.initSelection = function (element, callback) { + + var data = []; + + element.find("option").filter(function() { return this.selected && !this.disabled }).each2(function (i, elm) { + data.push(self.optionToData(elm)); + }); + callback(data); + }; + } else if ("data" in opts) { + // install default initSelection when applied to hidden input and data is local + opts.initSelection = opts.initSelection || function (element, callback) { + var ids = splitVal(element.val(), opts.separator); + //search in data by array of ids, storing matching items in a list + var matches = []; + opts.query({ + matcher: function(term, text, el){ + var is_match = $.grep(ids, function(id) { + return equal(id, opts.id(el)); + }).length; + if (is_match) { + matches.push(el); + } + return is_match; + }, + callback: !$.isFunction(callback) ? $.noop : function() { + // reorder matches based on the order they appear in the ids array because right now + // they are in the order in which they appear in data array + var ordered = []; + for (var i = 0; i < ids.length; i++) { + var id = ids[i]; + for (var j = 0; j < matches.length; j++) { + var match = matches[j]; + if (equal(id, opts.id(match))) { + ordered.push(match); + matches.splice(j, 1); + break; + } + } + } + callback(ordered); + } + }); + }; + } + + return opts; + }, + + // multi + selectChoice: function (choice) { + + var selected = this.container.find(".select2-search-choice-focus"); + if (selected.length && choice && choice[0] == selected[0]) { + + } else { + if (selected.length) { + this.opts.element.trigger("choice-deselected", selected); + } + selected.removeClass("select2-search-choice-focus"); + if (choice && choice.length) { + this.close(); + choice.addClass("select2-search-choice-focus"); + this.opts.element.trigger("choice-selected", choice); + } + } + }, + + // multi + destroy: function() { + $("label[for='" + this.search.attr('id') + "']") + .attr('for', this.opts.element.attr("id")); + this.parent.destroy.apply(this, arguments); + }, + + // multi + initContainer: function () { + + var selector = ".select2-choices", selection; + + this.searchContainer = this.container.find(".select2-search-field"); + this.selection = selection = this.container.find(selector); + + var _this = this; + this.selection.on("click", ".select2-search-choice:not(.select2-locked)", function (e) { + //killEvent(e); + _this.search[0].focus(); + _this.selectChoice($(this)); + }); + + // rewrite labels from original element to focusser + this.search.attr("id", "s2id_autogen"+nextUid()); + + this.search.prev() + .text($("label[for='" + this.opts.element.attr("id") + "']").text()) + .attr('for', this.search.attr('id')); + + this.search.on("input paste", this.bind(function() { + if (!this.isInterfaceEnabled()) return; + if (!this.opened()) { + this.open(); + } + })); + + this.search.attr("tabindex", this.elementTabIndex); + + this.keydowns = 0; + this.search.on("keydown", this.bind(function (e) { + if (!this.isInterfaceEnabled()) return; + + ++this.keydowns; + var selected = selection.find(".select2-search-choice-focus"); + var prev = selected.prev(".select2-search-choice:not(.select2-locked)"); + var next = selected.next(".select2-search-choice:not(.select2-locked)"); + var pos = getCursorInfo(this.search); + + if (selected.length && + (e.which == KEY.LEFT || e.which == KEY.RIGHT || e.which == KEY.BACKSPACE || e.which == KEY.DELETE || e.which == KEY.ENTER)) { + var selectedChoice = selected; + if (e.which == KEY.LEFT && prev.length) { + selectedChoice = prev; + } + else if (e.which == KEY.RIGHT) { + selectedChoice = next.length ? next : null; + } + else if (e.which === KEY.BACKSPACE) { + if (this.unselect(selected.first())) { + this.search.width(10); + selectedChoice = prev.length ? prev : next; + } + } else if (e.which == KEY.DELETE) { + if (this.unselect(selected.first())) { + this.search.width(10); + selectedChoice = next.length ? next : null; + } + } else if (e.which == KEY.ENTER) { + selectedChoice = null; + } + + this.selectChoice(selectedChoice); + killEvent(e); + if (!selectedChoice || !selectedChoice.length) { + this.open(); + } + return; + } else if (((e.which === KEY.BACKSPACE && this.keydowns == 1) + || e.which == KEY.LEFT) && (pos.offset == 0 && !pos.length)) { + + this.selectChoice(selection.find(".select2-search-choice:not(.select2-locked)").last()); + killEvent(e); + return; + } else { + this.selectChoice(null); + } + + if (this.opened()) { + switch (e.which) { + case KEY.UP: + case KEY.DOWN: + this.moveHighlight((e.which === KEY.UP) ? -1 : 1); + killEvent(e); + return; + case KEY.ENTER: + this.selectHighlighted(); + killEvent(e); + return; + case KEY.TAB: + this.selectHighlighted({noFocus:true}); + this.close(); + return; + case KEY.ESC: + this.cancel(e); + killEvent(e); + return; + } + } + + if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) + || e.which === KEY.BACKSPACE || e.which === KEY.ESC) { + return; + } + + if (e.which === KEY.ENTER) { + if (this.opts.openOnEnter === false) { + return; + } else if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) { + return; + } + } + + this.open(); + + if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) { + // prevent the page from scrolling + killEvent(e); + } + + if (e.which === KEY.ENTER) { + // prevent form from being submitted + killEvent(e); + } + + })); + + this.search.on("keyup", this.bind(function (e) { + this.keydowns = 0; + this.resizeSearch(); + }) + ); + + this.search.on("blur", this.bind(function(e) { + this.container.removeClass("select2-container-active"); + this.search.removeClass("select2-focused"); + this.selectChoice(null); + if (!this.opened()) this.clearSearch(); + e.stopImmediatePropagation(); + this.opts.element.trigger($.Event("select2-blur")); + })); + + this.container.on("click", selector, this.bind(function (e) { + if (!this.isInterfaceEnabled()) return; + if ($(e.target).closest(".select2-search-choice").length > 0) { + // clicked inside a select2 search choice, do not open + return; + } + this.selectChoice(null); + this.clearPlaceholder(); + if (!this.container.hasClass("select2-container-active")) { + this.opts.element.trigger($.Event("select2-focus")); + } + this.open(); + this.focusSearch(); + e.preventDefault(); + })); + + this.container.on("focus", selector, this.bind(function () { + if (!this.isInterfaceEnabled()) return; + if (!this.container.hasClass("select2-container-active")) { + this.opts.element.trigger($.Event("select2-focus")); + } + this.container.addClass("select2-container-active"); + this.dropdown.addClass("select2-drop-active"); + this.clearPlaceholder(); + })); + + this.initContainerWidth(); + this.opts.element.addClass("select2-offscreen"); + + // set the placeholder if necessary + this.clearSearch(); + }, + + // multi + enableInterface: function() { + if (this.parent.enableInterface.apply(this, arguments)) { + this.search.prop("disabled", !this.isInterfaceEnabled()); + } + }, + + // multi + initSelection: function () { + var data; + if (this.opts.element.val() === "" && this.opts.element.text() === "") { + this.updateSelection([]); + this.close(); + // set the placeholder if necessary + this.clearSearch(); + } + if (this.select || this.opts.element.val() !== "") { + var self = this; + this.opts.initSelection.call(null, this.opts.element, function(data){ + if (data !== undefined && data !== null) { + self.updateSelection(data); + self.close(); + // set the placeholder if necessary + self.clearSearch(); + } + }); + } + }, + + // multi + clearSearch: function () { + var placeholder = this.getPlaceholder(), + maxWidth = this.getMaxSearchWidth(); + + if (placeholder !== undefined && this.getVal().length === 0 && this.search.hasClass("select2-focused") === false) { + this.search.val(placeholder).addClass("select2-default"); + // stretch the search box to full width of the container so as much of the placeholder is visible as possible + // we could call this.resizeSearch(), but we do not because that requires a sizer and we do not want to create one so early because of a firefox bug, see #944 + this.search.width(maxWidth > 0 ? maxWidth : this.container.css("width")); + } else { + this.search.val("").width(10); + } + }, + + // multi + clearPlaceholder: function () { + if (this.search.hasClass("select2-default")) { + this.search.val("").removeClass("select2-default"); + } + }, + + // multi + opening: function () { + this.clearPlaceholder(); // should be done before super so placeholder is not used to search + this.resizeSearch(); + + this.parent.opening.apply(this, arguments); + + this.focusSearch(); + + // initializes search's value with nextSearchTerm (if defined by user) + // ignore nextSearchTerm if the dropdown is opened by the user pressing a letter + if(this.search.val() === "") { + if(this.nextSearchTerm != undefined){ + this.search.val(this.nextSearchTerm); + this.search.select(); + } + } + + this.updateResults(true); + this.search.focus(); + this.opts.element.trigger($.Event("select2-open")); + }, + + // multi + close: function () { + if (!this.opened()) return; + this.parent.close.apply(this, arguments); + }, + + // multi + focus: function () { + this.close(); + this.search.focus(); + }, + + // multi + isFocused: function () { + return this.search.hasClass("select2-focused"); + }, + + // multi + updateSelection: function (data) { + var ids = [], filtered = [], self = this; + + // filter out duplicates + $(data).each(function () { + if (indexOf(self.id(this), ids) < 0) { + ids.push(self.id(this)); + filtered.push(this); + } + }); + data = filtered; + + this.selection.find(".select2-search-choice").remove(); + $(data).each(function () { + self.addSelectedChoice(this); + }); + self.postprocessResults(); + }, + + // multi + tokenize: function() { + var input = this.search.val(); + input = this.opts.tokenizer.call(this, input, this.data(), this.bind(this.onSelect), this.opts); + if (input != null && input != undefined) { + this.search.val(input); + if (input.length > 0) { + this.open(); + } + } + + }, + + // multi + onSelect: function (data, options) { + + if (!this.triggerSelect(data)) { return; } + + this.addSelectedChoice(data); + + this.opts.element.trigger({ type: "selected", val: this.id(data), choice: data }); + + // keep track of the search's value before it gets cleared + this.nextSearchTerm = this.opts.nextSearchTerm(data, this.search.val()); + + this.clearSearch(); + this.updateResults(); + + if (this.select || !this.opts.closeOnSelect) this.postprocessResults(data, false, this.opts.closeOnSelect===true); + + if (this.opts.closeOnSelect) { + this.close(); + this.search.width(10); + } else { + if (this.countSelectableResults()>0) { + this.search.width(10); + this.resizeSearch(); + if (this.getMaximumSelectionSize() > 0 && this.val().length >= this.getMaximumSelectionSize()) { + // if we reached max selection size repaint the results so choices + // are replaced with the max selection reached message + this.updateResults(true); + } else { + // initializes search's value with nextSearchTerm and update search result + if(this.nextSearchTerm != undefined){ + this.search.val(this.nextSearchTerm); + this.updateResults(); + this.search.select(); + } + } + this.positionDropdown(); + } else { + // if nothing left to select close + this.close(); + this.search.width(10); + } + } + + // since its not possible to select an element that has already been + // added we do not need to check if this is a new element before firing change + this.triggerChange({ added: data }); + + if (!options || !options.noFocus) + this.focusSearch(); + }, + + // multi + cancel: function () { + this.close(); + this.focusSearch(); + }, + + addSelectedChoice: function (data) { + var enableChoice = !data.locked, + enabledItem = $( + "
        • " + + "
          " + + " " + + "
        • "), + disabledItem = $( + "
        • " + + "
          " + + "
        • "); + var choice = enableChoice ? enabledItem : disabledItem, + id = this.id(data), + val = this.getVal(), + formatted, + cssClass; + + formatted=this.opts.formatSelection(data, choice.find("div"), this.opts.escapeMarkup); + if (formatted != undefined) { + choice.find("div").replaceWith("
          "+formatted+"
          "); + } + cssClass=this.opts.formatSelectionCssClass(data, choice.find("div")); + if (cssClass != undefined) { + choice.addClass(cssClass); + } + + if(enableChoice){ + choice.find(".select2-search-choice-close") + .on("mousedown", killEvent) + .on("click dblclick", this.bind(function (e) { + if (!this.isInterfaceEnabled()) return; + + this.unselect($(e.target)); + this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus"); + killEvent(e); + this.close(); + this.focusSearch(); + })).on("focus", this.bind(function () { + if (!this.isInterfaceEnabled()) return; + this.container.addClass("select2-container-active"); + this.dropdown.addClass("select2-drop-active"); + })); + } + + choice.data("select2-data", data); + choice.insertBefore(this.searchContainer); + + val.push(id); + this.setVal(val); + }, + + // multi + unselect: function (selected) { + var val = this.getVal(), + data, + index; + selected = selected.closest(".select2-search-choice"); + + if (selected.length === 0) { + throw "Invalid argument: " + selected + ". Must be .select2-search-choice"; + } + + data = selected.data("select2-data"); + + if (!data) { + // prevent a race condition when the 'x' is clicked really fast repeatedly the event can be queued + // and invoked on an element already removed + return; + } + + var evt = $.Event("select2-removing"); + evt.val = this.id(data); + evt.choice = data; + this.opts.element.trigger(evt); + + if (evt.isDefaultPrevented()) { + return false; + } + + while((index = indexOf(this.id(data), val)) >= 0) { + val.splice(index, 1); + this.setVal(val); + if (this.select) this.postprocessResults(); + } + + selected.remove(); + + this.opts.element.trigger({ type: "select2-removed", val: this.id(data), choice: data }); + this.triggerChange({ removed: data }); + + return true; + }, + + // multi + postprocessResults: function (data, initial, noHighlightUpdate) { + var val = this.getVal(), + choices = this.results.find(".select2-result"), + compound = this.results.find(".select2-result-with-children"), + self = this; + + choices.each2(function (i, choice) { + var id = self.id(choice.data("select2-data")); + if (indexOf(id, val) >= 0) { + choice.addClass("select2-selected"); + // mark all children of the selected parent as selected + choice.find(".select2-result-selectable").addClass("select2-selected"); + } + }); + + compound.each2(function(i, choice) { + // hide an optgroup if it doesn't have any selectable children + if (!choice.is('.select2-result-selectable') + && choice.find(".select2-result-selectable:not(.select2-selected)").length === 0) { + choice.addClass("select2-selected"); + } + }); + + if (this.highlight() == -1 && noHighlightUpdate !== false){ + self.highlight(0); + } + + //If all results are chosen render formatNoMatches + if(!this.opts.createSearchChoice && !choices.filter('.select2-result:not(.select2-selected)').length > 0){ + if(!data || data && !data.more && this.results.find(".select2-no-results").length === 0) { + if (checkFormatter(self.opts.formatNoMatches, "formatNoMatches")) { + this.results.append("
        • " + evaluate(self.opts.formatNoMatches, self.search.val()) + "
        • "); + } + } + } + + }, + + // multi + getMaxSearchWidth: function() { + return this.selection.width() - getSideBorderPadding(this.search); + }, + + // multi + resizeSearch: function () { + var minimumWidth, left, maxWidth, containerLeft, searchWidth, + sideBorderPadding = getSideBorderPadding(this.search); + + minimumWidth = measureTextWidth(this.search) + 10; + + left = this.search.offset().left; + + maxWidth = this.selection.width(); + containerLeft = this.selection.offset().left; + + searchWidth = maxWidth - (left - containerLeft) - sideBorderPadding; + + if (searchWidth < minimumWidth) { + searchWidth = maxWidth - sideBorderPadding; + } + + if (searchWidth < 40) { + searchWidth = maxWidth - sideBorderPadding; + } + + if (searchWidth <= 0) { + searchWidth = minimumWidth; + } + + this.search.width(Math.floor(searchWidth)); + }, + + // multi + getVal: function () { + var val; + if (this.select) { + val = this.select.val(); + return val === null ? [] : val; + } else { + val = this.opts.element.val(); + return splitVal(val, this.opts.separator); + } + }, + + // multi + setVal: function (val) { + var unique; + if (this.select) { + this.select.val(val); + } else { + unique = []; + // filter out duplicates + $(val).each(function () { + if (indexOf(this, unique) < 0) unique.push(this); + }); + this.opts.element.val(unique.length === 0 ? "" : unique.join(this.opts.separator)); + } + }, + + // multi + buildChangeDetails: function (old, current) { + var current = current.slice(0), + old = old.slice(0); + + // remove intersection from each array + for (var i = 0; i < current.length; i++) { + for (var j = 0; j < old.length; j++) { + if (equal(this.opts.id(current[i]), this.opts.id(old[j]))) { + current.splice(i, 1); + if(i>0){ + i--; + } + old.splice(j, 1); + j--; + } + } + } + + return {added: current, removed: old}; + }, + + + // multi + val: function (val, triggerChange) { + var oldData, self=this; + + if (arguments.length === 0) { + return this.getVal(); + } + + oldData=this.data(); + if (!oldData.length) oldData=[]; + + // val is an id. !val is true for [undefined,null,'',0] - 0 is legal + if (!val && val !== 0) { + this.opts.element.val(""); + this.updateSelection([]); + this.clearSearch(); + if (triggerChange) { + this.triggerChange({added: this.data(), removed: oldData}); + } + return; + } + + // val is a list of ids + this.setVal(val); + + if (this.select) { + this.opts.initSelection(this.select, this.bind(this.updateSelection)); + if (triggerChange) { + this.triggerChange(this.buildChangeDetails(oldData, this.data())); + } + } else { + if (this.opts.initSelection === undefined) { + throw new Error("val() cannot be called if initSelection() is not defined"); + } + + this.opts.initSelection(this.opts.element, function(data){ + var ids=$.map(data, self.id); + self.setVal(ids); + self.updateSelection(data); + self.clearSearch(); + if (triggerChange) { + self.triggerChange(self.buildChangeDetails(oldData, self.data())); + } + }); + } + this.clearSearch(); + }, + + // multi + onSortStart: function() { + if (this.select) { + throw new Error("Sorting of elements is not supported when attached to instead."); + } + + // collapse search field into 0 width so its container can be collapsed as well + this.search.width(0); + // hide the container + this.searchContainer.hide(); + }, + + // multi + onSortEnd:function() { + + var val=[], self=this; + + // show search and move it to the end of the list + this.searchContainer.show(); + // make sure the search container is the last item in the list + this.searchContainer.appendTo(this.searchContainer.parent()); + // since we collapsed the width in dragStarted, we resize it here + this.resizeSearch(); + + // update selection + this.selection.find(".select2-search-choice").each(function() { + val.push(self.opts.id($(this).data("select2-data"))); + }); + this.setVal(val); + this.triggerChange(); + }, + + // multi + data: function(values, triggerChange) { + var self=this, ids, old; + if (arguments.length === 0) { + return this.selection + .children(".select2-search-choice") + .map(function() { return $(this).data("select2-data"); }) + .get(); + } else { + old = this.data(); + if (!values) { values = []; } + ids = $.map(values, function(e) { return self.opts.id(e); }); + this.setVal(ids); + this.updateSelection(values); + this.clearSearch(); + if (triggerChange) { + this.triggerChange(this.buildChangeDetails(old, this.data())); + } + } + } + }); + + $.fn.select2 = function () { + + var args = Array.prototype.slice.call(arguments, 0), + opts, + select2, + method, value, multiple, + allowedMethods = ["val", "destroy", "opened", "open", "close", "focus", "isFocused", "container", "dropdown", "onSortStart", "onSortEnd", "enable", "disable", "readonly", "positionDropdown", "data", "search"], + valueMethods = ["opened", "isFocused", "container", "dropdown"], + propertyMethods = ["val", "data"], + methodsMap = { search: "externalSearch" }; + + this.each(function () { + if (args.length === 0 || typeof(args[0]) === "object") { + opts = args.length === 0 ? {} : $.extend({}, args[0]); + opts.element = $(this); + + if (opts.element.get(0).tagName.toLowerCase() === "select") { + multiple = opts.element.prop("multiple"); + } else { + multiple = opts.multiple || false; + if ("tags" in opts) {opts.multiple = multiple = true;} + } + + select2 = multiple ? new window.Select2["class"].multi() : new window.Select2["class"].single(); + select2.init(opts); + } else if (typeof(args[0]) === "string") { + + if (indexOf(args[0], allowedMethods) < 0) { + throw "Unknown method: " + args[0]; + } + + value = undefined; + select2 = $(this).data("select2"); + if (select2 === undefined) return; + + method=args[0]; + + if (method === "container") { + value = select2.container; + } else if (method === "dropdown") { + value = select2.dropdown; + } else { + if (methodsMap[method]) method = methodsMap[method]; + + value = select2[method].apply(select2, args.slice(1)); + } + if (indexOf(args[0], valueMethods) >= 0 + || (indexOf(args[0], propertyMethods) && args.length == 1)) { + return false; // abort the iteration, ready to return first matched value + } + } else { + throw "Invalid arguments to select2 plugin: " + args; + } + }); + return (value === undefined) ? this : value; + }; + + // plugin defaults, accessible to users + $.fn.select2.defaults = { + width: "copy", + loadMorePadding: 0, + closeOnSelect: true, + openOnEnter: true, + containerCss: {}, + dropdownCss: {}, + containerCssClass: "", + dropdownCssClass: "", + formatResult: function(result, container, query, escapeMarkup) { + var markup=[]; + markMatch(result.text, query.term, markup, escapeMarkup); + return markup.join(""); + }, + formatSelection: function (data, container, escapeMarkup) { + return data ? escapeMarkup(data.text) : undefined; + }, + sortResults: function (results, container, query) { + return results; + }, + formatResultCssClass: function(data) {return data.css;}, + formatSelectionCssClass: function(data, container) {return undefined;}, + formatMatches: function (matches) { return matches + " results are available, use up and down arrow keys to navigate."; }, + formatNoMatches: function () { return "No matches found"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Please enter " + n + " or more character" + (n == 1? "" : "s"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Please delete " + n + " character" + (n == 1? "" : "s"); }, + formatSelectionTooBig: function (limit) { return "You can only select " + limit + " item" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "Loading more results…"; }, + formatSearching: function () { return "Searching…"; }, + minimumResultsForSearch: 0, + minimumInputLength: 0, + maximumInputLength: null, + maximumSelectionSize: 0, + id: function (e) { return e == undefined ? null : e.id; }, + matcher: function(term, text) { + return stripDiacritics(''+text).toUpperCase().indexOf(stripDiacritics(''+term).toUpperCase()) >= 0; + }, + separator: ",", + tokenSeparators: [], + tokenizer: defaultTokenizer, + escapeMarkup: defaultEscapeMarkup, + blurOnChange: false, + selectOnBlur: false, + adaptContainerCssClass: function(c) { return c; }, + adaptDropdownCssClass: function(c) { return null; }, + nextSearchTerm: function(selectedObject, currentSearchTerm) { return undefined; }, + searchInputPlaceholder: '', + createSearchChoicePosition: 'top', + shouldFocusInput: function (instance) { + // Never focus the input if search is disabled + if (instance.opts.minimumResultsForSearch < 0) { + return false; + } + + return true; + } + }; + + $.fn.select2.ajaxDefaults = { + transport: $.ajax, + params: { + type: "GET", + cache: false, + dataType: "json" + } + }; + + // exports + window.Select2 = { + query: { + ajax: ajax, + local: local, + tags: tags + }, util: { + debounce: debounce, + markMatch: markMatch, + escapeMarkup: defaultEscapeMarkup, + stripDiacritics: stripDiacritics + }, "class": { + "abstract": AbstractSelect2, + "single": SingleSelect2, + "multi": MultiSelect2 + } + }; + +}(jQuery)); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2.min.js b/themes/fruitful/inc/metaboxes/js/select2/select2.min.js new file mode 100644 index 0000000..335c85e --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2.min.js @@ -0,0 +1,22 @@ +/* +Copyright 2014 Igor Vaynberg + +Version: 3.4.6 Timestamp: Sat Mar 22 22:30:15 EDT 2014 + +This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU +General Public License version 2 (the "GPL License"). You may choose either license to govern your +use of this software only upon the condition that you accept all of the terms of either the Apache +License or the GPL License. + +You may obtain a copy of the Apache License and the GPL License at: + +http://www.apache.org/licenses/LICENSE-2.0 +http://www.gnu.org/licenses/gpl-2.0.html + +Unless required by applicable law or agreed to in writing, software distributed under the Apache License +or the GPL Licesnse is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +either express or implied. See the Apache License and the GPL License for the specific language governing +permissions and limitations under the Apache License and the GPL License. +*/ +!function(a){"undefined"==typeof a.fn.each2&&a.extend(a.fn,{each2:function(b){for(var c=a([0]),d=-1,e=this.length;++dc;c++)e=a.charAt(c),b+=m[e]||e;return b}function p(a,b){for(var c=0,d=b.length;d>c;c+=1)if(r(a,b[c]))return c;return-1}function q(){var b=a(l);b.appendTo("body");var c={width:b.width()-b[0].clientWidth,height:b.height()-b[0].clientHeight};return b.remove(),c}function r(a,c){return a===c?!0:a===b||c===b?!1:null===a||null===c?!1:a.constructor===String?a+""==c+"":c.constructor===String?c+""==a+"":!1}function s(b,c){var d,e,f;if(null===b||b.length<1)return[];for(d=b.split(c),e=0,f=d.length;f>e;e+=1)d[e]=a.trim(d[e]);return d}function t(a){return a.outerWidth(!1)-a.width()}function u(c){var d="keyup-change-value";c.on("keydown",function(){a.data(c,d)===b&&a.data(c,d,c.val())}),c.on("keyup",function(){var e=a.data(c,d);e!==b&&c.val()!==e&&(a.removeData(c,d),c.trigger("keyup-change"))})}function v(c){c.on("mousemove",function(c){var d=i;(d===b||d.x!==c.pageX||d.y!==c.pageY)&&a(c.target).trigger("mousemove-filtered",c)})}function w(a,c,d){d=d||b;var e;return function(){var b=arguments;window.clearTimeout(e),e=window.setTimeout(function(){c.apply(d,b)},a)}}function x(a){var c,b=!1;return function(){return b===!1&&(c=a(),b=!0),c}}function y(a,b){var c=w(a,function(a){b.trigger("scroll-debounced",a)});b.on("scroll",function(a){p(a.target,b.get())>=0&&c(a)})}function z(a){a[0]!==document.activeElement&&window.setTimeout(function(){var d,b=a[0],c=a.val().length;a.focus();var e=b.offsetWidth>0||b.offsetHeight>0;e&&b===document.activeElement&&(b.setSelectionRange?b.setSelectionRange(c,c):b.createTextRange&&(d=b.createTextRange(),d.collapse(!1),d.select()))},0)}function A(b){b=a(b)[0];var c=0,d=0;if("selectionStart"in b)c=b.selectionStart,d=b.selectionEnd-c;else if("selection"in document){b.focus();var e=document.selection.createRange();d=document.selection.createRange().text.length,e.moveStart("character",-b.value.length),c=e.text.length-d}return{offset:c,length:d}}function B(a){a.preventDefault(),a.stopPropagation()}function C(a){a.preventDefault(),a.stopImmediatePropagation()}function D(b){if(!h){var c=b[0].currentStyle||window.getComputedStyle(b[0],null);h=a(document.createElement("div")).css({position:"absolute",left:"-10000px",top:"-10000px",display:"none",fontSize:c.fontSize,fontFamily:c.fontFamily,fontStyle:c.fontStyle,fontWeight:c.fontWeight,letterSpacing:c.letterSpacing,textTransform:c.textTransform,whiteSpace:"nowrap"}),h.attr("class","select2-sizer"),a("body").append(h)}return h.text(b.val()),h.width()}function E(b,c,d){var e,g,f=[];e=b.attr("class"),e&&(e=""+e,a(e.split(" ")).each2(function(){0===this.indexOf("select2-")&&f.push(this)})),e=c.attr("class"),e&&(e=""+e,a(e.split(" ")).each2(function(){0!==this.indexOf("select2-")&&(g=d(this),g&&f.push(g))})),b.attr("class",f.join(" "))}function F(a,b,c,d){var e=o(a.toUpperCase()).indexOf(o(b.toUpperCase())),f=b.length;return 0>e?(c.push(d(a)),void 0):(c.push(d(a.substring(0,e))),c.push(""),c.push(d(a.substring(e,e+f))),c.push(""),c.push(d(a.substring(e+f,a.length))),void 0)}function G(a){var b={"\\":"\","&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};return String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})}function H(c){var d,e=null,f=c.quietMillis||100,g=c.url,h=this;return function(i){window.clearTimeout(d),d=window.setTimeout(function(){var d=c.data,f=g,j=c.transport||a.fn.select2.ajaxDefaults.transport,k={type:c.type||"GET",cache:c.cache||!1,jsonpCallback:c.jsonpCallback||b,dataType:c.dataType||"json"},l=a.extend({},a.fn.select2.ajaxDefaults.params,k);d=d?d.call(h,i.term,i.page,i.context):null,f="function"==typeof f?f.call(h,i.term,i.page,i.context):f,e&&"function"==typeof e.abort&&e.abort(),c.params&&(a.isFunction(c.params)?a.extend(l,c.params.call(h)):a.extend(l,c.params)),a.extend(l,{url:f,dataType:c.dataType,data:d,success:function(a){var b=c.results(a,i.page);i.callback(b)}}),e=j.call(h,l)},f)}}function I(b){var d,e,c=b,f=function(a){return""+a.text};a.isArray(c)&&(e=c,c={results:e}),a.isFunction(c)===!1&&(e=c,c=function(){return e});var g=c();return g.text&&(f=g.text,a.isFunction(f)||(d=g.text,f=function(a){return a[d]})),function(b){var g,d=b.term,e={results:[]};return""===d?(b.callback(c()),void 0):(g=function(c,e){var h,i;if(c=c[0],c.children){h={};for(i in c)c.hasOwnProperty(i)&&(h[i]=c[i]);h.children=[],a(c.children).each2(function(a,b){g(b,h.children)}),(h.children.length||b.matcher(d,f(h),c))&&e.push(h)}else b.matcher(d,f(c),c)&&e.push(c)},a(c().results).each2(function(a,b){g(b,e.results)}),b.callback(e),void 0)}}function J(c){var d=a.isFunction(c);return function(e){var f=e.term,g={results:[]};a(d?c():c).each(function(){var a=this.text!==b,c=a?this.text:this;(""===f||e.matcher(f,c))&&g.results.push(a?this:{id:this,text:this})}),e.callback(g)}}function K(b,c){if(a.isFunction(b))return!0;if(!b)return!1;if("string"==typeof b)return!0;throw new Error(c+" must be a string, function, or falsy value")}function L(b){if(a.isFunction(b)){var c=Array.prototype.slice.call(arguments,1);return b.apply(null,c)}return b}function M(b){var c=0;return a.each(b,function(a,b){b.children?c+=M(b.children):c++}),c}function N(a,c,d,e){var h,i,j,k,l,f=a,g=!1;if(!e.createSearchChoice||!e.tokenSeparators||e.tokenSeparators.length<1)return b;for(;;){for(i=-1,j=0,k=e.tokenSeparators.length;k>j&&(l=e.tokenSeparators[j],i=a.indexOf(l),!(i>=0));j++);if(0>i)break;if(h=a.substring(0,i),a=a.substring(i+l.length),h.length>0&&(h=e.createSearchChoice.call(this,h,c),h!==b&&null!==h&&e.id(h)!==b&&null!==e.id(h))){for(g=!1,j=0,k=c.length;k>j;j++)if(r(e.id(h),e.id(c[j]))){g=!0;break}g||d(h)}}return f!==a?a:void 0}function O(b,c){var d=function(){};return d.prototype=new b,d.prototype.constructor=d,d.prototype.parent=b.prototype,d.prototype=a.extend(d.prototype,c),d}if(window.Select2===b){var c,d,e,f,g,h,j,k,i={x:0,y:0},c={TAB:9,ENTER:13,ESC:27,SPACE:32,LEFT:37,UP:38,RIGHT:39,DOWN:40,SHIFT:16,CTRL:17,ALT:18,PAGE_UP:33,PAGE_DOWN:34,HOME:36,END:35,BACKSPACE:8,DELETE:46,isArrow:function(a){switch(a=a.which?a.which:a){case c.LEFT:case c.RIGHT:case c.UP:case c.DOWN:return!0}return!1},isControl:function(a){var b=a.which;switch(b){case c.SHIFT:case c.CTRL:case c.ALT:return!0}return a.metaKey?!0:!1},isFunctionKey:function(a){return a=a.which?a.which:a,a>=112&&123>=a}},l="
          ",m={"\u24b6":"A","\uff21":"A","\xc0":"A","\xc1":"A","\xc2":"A","\u1ea6":"A","\u1ea4":"A","\u1eaa":"A","\u1ea8":"A","\xc3":"A","\u0100":"A","\u0102":"A","\u1eb0":"A","\u1eae":"A","\u1eb4":"A","\u1eb2":"A","\u0226":"A","\u01e0":"A","\xc4":"A","\u01de":"A","\u1ea2":"A","\xc5":"A","\u01fa":"A","\u01cd":"A","\u0200":"A","\u0202":"A","\u1ea0":"A","\u1eac":"A","\u1eb6":"A","\u1e00":"A","\u0104":"A","\u023a":"A","\u2c6f":"A","\ua732":"AA","\xc6":"AE","\u01fc":"AE","\u01e2":"AE","\ua734":"AO","\ua736":"AU","\ua738":"AV","\ua73a":"AV","\ua73c":"AY","\u24b7":"B","\uff22":"B","\u1e02":"B","\u1e04":"B","\u1e06":"B","\u0243":"B","\u0182":"B","\u0181":"B","\u24b8":"C","\uff23":"C","\u0106":"C","\u0108":"C","\u010a":"C","\u010c":"C","\xc7":"C","\u1e08":"C","\u0187":"C","\u023b":"C","\ua73e":"C","\u24b9":"D","\uff24":"D","\u1e0a":"D","\u010e":"D","\u1e0c":"D","\u1e10":"D","\u1e12":"D","\u1e0e":"D","\u0110":"D","\u018b":"D","\u018a":"D","\u0189":"D","\ua779":"D","\u01f1":"DZ","\u01c4":"DZ","\u01f2":"Dz","\u01c5":"Dz","\u24ba":"E","\uff25":"E","\xc8":"E","\xc9":"E","\xca":"E","\u1ec0":"E","\u1ebe":"E","\u1ec4":"E","\u1ec2":"E","\u1ebc":"E","\u0112":"E","\u1e14":"E","\u1e16":"E","\u0114":"E","\u0116":"E","\xcb":"E","\u1eba":"E","\u011a":"E","\u0204":"E","\u0206":"E","\u1eb8":"E","\u1ec6":"E","\u0228":"E","\u1e1c":"E","\u0118":"E","\u1e18":"E","\u1e1a":"E","\u0190":"E","\u018e":"E","\u24bb":"F","\uff26":"F","\u1e1e":"F","\u0191":"F","\ua77b":"F","\u24bc":"G","\uff27":"G","\u01f4":"G","\u011c":"G","\u1e20":"G","\u011e":"G","\u0120":"G","\u01e6":"G","\u0122":"G","\u01e4":"G","\u0193":"G","\ua7a0":"G","\ua77d":"G","\ua77e":"G","\u24bd":"H","\uff28":"H","\u0124":"H","\u1e22":"H","\u1e26":"H","\u021e":"H","\u1e24":"H","\u1e28":"H","\u1e2a":"H","\u0126":"H","\u2c67":"H","\u2c75":"H","\ua78d":"H","\u24be":"I","\uff29":"I","\xcc":"I","\xcd":"I","\xce":"I","\u0128":"I","\u012a":"I","\u012c":"I","\u0130":"I","\xcf":"I","\u1e2e":"I","\u1ec8":"I","\u01cf":"I","\u0208":"I","\u020a":"I","\u1eca":"I","\u012e":"I","\u1e2c":"I","\u0197":"I","\u24bf":"J","\uff2a":"J","\u0134":"J","\u0248":"J","\u24c0":"K","\uff2b":"K","\u1e30":"K","\u01e8":"K","\u1e32":"K","\u0136":"K","\u1e34":"K","\u0198":"K","\u2c69":"K","\ua740":"K","\ua742":"K","\ua744":"K","\ua7a2":"K","\u24c1":"L","\uff2c":"L","\u013f":"L","\u0139":"L","\u013d":"L","\u1e36":"L","\u1e38":"L","\u013b":"L","\u1e3c":"L","\u1e3a":"L","\u0141":"L","\u023d":"L","\u2c62":"L","\u2c60":"L","\ua748":"L","\ua746":"L","\ua780":"L","\u01c7":"LJ","\u01c8":"Lj","\u24c2":"M","\uff2d":"M","\u1e3e":"M","\u1e40":"M","\u1e42":"M","\u2c6e":"M","\u019c":"M","\u24c3":"N","\uff2e":"N","\u01f8":"N","\u0143":"N","\xd1":"N","\u1e44":"N","\u0147":"N","\u1e46":"N","\u0145":"N","\u1e4a":"N","\u1e48":"N","\u0220":"N","\u019d":"N","\ua790":"N","\ua7a4":"N","\u01ca":"NJ","\u01cb":"Nj","\u24c4":"O","\uff2f":"O","\xd2":"O","\xd3":"O","\xd4":"O","\u1ed2":"O","\u1ed0":"O","\u1ed6":"O","\u1ed4":"O","\xd5":"O","\u1e4c":"O","\u022c":"O","\u1e4e":"O","\u014c":"O","\u1e50":"O","\u1e52":"O","\u014e":"O","\u022e":"O","\u0230":"O","\xd6":"O","\u022a":"O","\u1ece":"O","\u0150":"O","\u01d1":"O","\u020c":"O","\u020e":"O","\u01a0":"O","\u1edc":"O","\u1eda":"O","\u1ee0":"O","\u1ede":"O","\u1ee2":"O","\u1ecc":"O","\u1ed8":"O","\u01ea":"O","\u01ec":"O","\xd8":"O","\u01fe":"O","\u0186":"O","\u019f":"O","\ua74a":"O","\ua74c":"O","\u01a2":"OI","\ua74e":"OO","\u0222":"OU","\u24c5":"P","\uff30":"P","\u1e54":"P","\u1e56":"P","\u01a4":"P","\u2c63":"P","\ua750":"P","\ua752":"P","\ua754":"P","\u24c6":"Q","\uff31":"Q","\ua756":"Q","\ua758":"Q","\u024a":"Q","\u24c7":"R","\uff32":"R","\u0154":"R","\u1e58":"R","\u0158":"R","\u0210":"R","\u0212":"R","\u1e5a":"R","\u1e5c":"R","\u0156":"R","\u1e5e":"R","\u024c":"R","\u2c64":"R","\ua75a":"R","\ua7a6":"R","\ua782":"R","\u24c8":"S","\uff33":"S","\u1e9e":"S","\u015a":"S","\u1e64":"S","\u015c":"S","\u1e60":"S","\u0160":"S","\u1e66":"S","\u1e62":"S","\u1e68":"S","\u0218":"S","\u015e":"S","\u2c7e":"S","\ua7a8":"S","\ua784":"S","\u24c9":"T","\uff34":"T","\u1e6a":"T","\u0164":"T","\u1e6c":"T","\u021a":"T","\u0162":"T","\u1e70":"T","\u1e6e":"T","\u0166":"T","\u01ac":"T","\u01ae":"T","\u023e":"T","\ua786":"T","\ua728":"TZ","\u24ca":"U","\uff35":"U","\xd9":"U","\xda":"U","\xdb":"U","\u0168":"U","\u1e78":"U","\u016a":"U","\u1e7a":"U","\u016c":"U","\xdc":"U","\u01db":"U","\u01d7":"U","\u01d5":"U","\u01d9":"U","\u1ee6":"U","\u016e":"U","\u0170":"U","\u01d3":"U","\u0214":"U","\u0216":"U","\u01af":"U","\u1eea":"U","\u1ee8":"U","\u1eee":"U","\u1eec":"U","\u1ef0":"U","\u1ee4":"U","\u1e72":"U","\u0172":"U","\u1e76":"U","\u1e74":"U","\u0244":"U","\u24cb":"V","\uff36":"V","\u1e7c":"V","\u1e7e":"V","\u01b2":"V","\ua75e":"V","\u0245":"V","\ua760":"VY","\u24cc":"W","\uff37":"W","\u1e80":"W","\u1e82":"W","\u0174":"W","\u1e86":"W","\u1e84":"W","\u1e88":"W","\u2c72":"W","\u24cd":"X","\uff38":"X","\u1e8a":"X","\u1e8c":"X","\u24ce":"Y","\uff39":"Y","\u1ef2":"Y","\xdd":"Y","\u0176":"Y","\u1ef8":"Y","\u0232":"Y","\u1e8e":"Y","\u0178":"Y","\u1ef6":"Y","\u1ef4":"Y","\u01b3":"Y","\u024e":"Y","\u1efe":"Y","\u24cf":"Z","\uff3a":"Z","\u0179":"Z","\u1e90":"Z","\u017b":"Z","\u017d":"Z","\u1e92":"Z","\u1e94":"Z","\u01b5":"Z","\u0224":"Z","\u2c7f":"Z","\u2c6b":"Z","\ua762":"Z","\u24d0":"a","\uff41":"a","\u1e9a":"a","\xe0":"a","\xe1":"a","\xe2":"a","\u1ea7":"a","\u1ea5":"a","\u1eab":"a","\u1ea9":"a","\xe3":"a","\u0101":"a","\u0103":"a","\u1eb1":"a","\u1eaf":"a","\u1eb5":"a","\u1eb3":"a","\u0227":"a","\u01e1":"a","\xe4":"a","\u01df":"a","\u1ea3":"a","\xe5":"a","\u01fb":"a","\u01ce":"a","\u0201":"a","\u0203":"a","\u1ea1":"a","\u1ead":"a","\u1eb7":"a","\u1e01":"a","\u0105":"a","\u2c65":"a","\u0250":"a","\ua733":"aa","\xe6":"ae","\u01fd":"ae","\u01e3":"ae","\ua735":"ao","\ua737":"au","\ua739":"av","\ua73b":"av","\ua73d":"ay","\u24d1":"b","\uff42":"b","\u1e03":"b","\u1e05":"b","\u1e07":"b","\u0180":"b","\u0183":"b","\u0253":"b","\u24d2":"c","\uff43":"c","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\xe7":"c","\u1e09":"c","\u0188":"c","\u023c":"c","\ua73f":"c","\u2184":"c","\u24d3":"d","\uff44":"d","\u1e0b":"d","\u010f":"d","\u1e0d":"d","\u1e11":"d","\u1e13":"d","\u1e0f":"d","\u0111":"d","\u018c":"d","\u0256":"d","\u0257":"d","\ua77a":"d","\u01f3":"dz","\u01c6":"dz","\u24d4":"e","\uff45":"e","\xe8":"e","\xe9":"e","\xea":"e","\u1ec1":"e","\u1ebf":"e","\u1ec5":"e","\u1ec3":"e","\u1ebd":"e","\u0113":"e","\u1e15":"e","\u1e17":"e","\u0115":"e","\u0117":"e","\xeb":"e","\u1ebb":"e","\u011b":"e","\u0205":"e","\u0207":"e","\u1eb9":"e","\u1ec7":"e","\u0229":"e","\u1e1d":"e","\u0119":"e","\u1e19":"e","\u1e1b":"e","\u0247":"e","\u025b":"e","\u01dd":"e","\u24d5":"f","\uff46":"f","\u1e1f":"f","\u0192":"f","\ua77c":"f","\u24d6":"g","\uff47":"g","\u01f5":"g","\u011d":"g","\u1e21":"g","\u011f":"g","\u0121":"g","\u01e7":"g","\u0123":"g","\u01e5":"g","\u0260":"g","\ua7a1":"g","\u1d79":"g","\ua77f":"g","\u24d7":"h","\uff48":"h","\u0125":"h","\u1e23":"h","\u1e27":"h","\u021f":"h","\u1e25":"h","\u1e29":"h","\u1e2b":"h","\u1e96":"h","\u0127":"h","\u2c68":"h","\u2c76":"h","\u0265":"h","\u0195":"hv","\u24d8":"i","\uff49":"i","\xec":"i","\xed":"i","\xee":"i","\u0129":"i","\u012b":"i","\u012d":"i","\xef":"i","\u1e2f":"i","\u1ec9":"i","\u01d0":"i","\u0209":"i","\u020b":"i","\u1ecb":"i","\u012f":"i","\u1e2d":"i","\u0268":"i","\u0131":"i","\u24d9":"j","\uff4a":"j","\u0135":"j","\u01f0":"j","\u0249":"j","\u24da":"k","\uff4b":"k","\u1e31":"k","\u01e9":"k","\u1e33":"k","\u0137":"k","\u1e35":"k","\u0199":"k","\u2c6a":"k","\ua741":"k","\ua743":"k","\ua745":"k","\ua7a3":"k","\u24db":"l","\uff4c":"l","\u0140":"l","\u013a":"l","\u013e":"l","\u1e37":"l","\u1e39":"l","\u013c":"l","\u1e3d":"l","\u1e3b":"l","\u017f":"l","\u0142":"l","\u019a":"l","\u026b":"l","\u2c61":"l","\ua749":"l","\ua781":"l","\ua747":"l","\u01c9":"lj","\u24dc":"m","\uff4d":"m","\u1e3f":"m","\u1e41":"m","\u1e43":"m","\u0271":"m","\u026f":"m","\u24dd":"n","\uff4e":"n","\u01f9":"n","\u0144":"n","\xf1":"n","\u1e45":"n","\u0148":"n","\u1e47":"n","\u0146":"n","\u1e4b":"n","\u1e49":"n","\u019e":"n","\u0272":"n","\u0149":"n","\ua791":"n","\ua7a5":"n","\u01cc":"nj","\u24de":"o","\uff4f":"o","\xf2":"o","\xf3":"o","\xf4":"o","\u1ed3":"o","\u1ed1":"o","\u1ed7":"o","\u1ed5":"o","\xf5":"o","\u1e4d":"o","\u022d":"o","\u1e4f":"o","\u014d":"o","\u1e51":"o","\u1e53":"o","\u014f":"o","\u022f":"o","\u0231":"o","\xf6":"o","\u022b":"o","\u1ecf":"o","\u0151":"o","\u01d2":"o","\u020d":"o","\u020f":"o","\u01a1":"o","\u1edd":"o","\u1edb":"o","\u1ee1":"o","\u1edf":"o","\u1ee3":"o","\u1ecd":"o","\u1ed9":"o","\u01eb":"o","\u01ed":"o","\xf8":"o","\u01ff":"o","\u0254":"o","\ua74b":"o","\ua74d":"o","\u0275":"o","\u01a3":"oi","\u0223":"ou","\ua74f":"oo","\u24df":"p","\uff50":"p","\u1e55":"p","\u1e57":"p","\u01a5":"p","\u1d7d":"p","\ua751":"p","\ua753":"p","\ua755":"p","\u24e0":"q","\uff51":"q","\u024b":"q","\ua757":"q","\ua759":"q","\u24e1":"r","\uff52":"r","\u0155":"r","\u1e59":"r","\u0159":"r","\u0211":"r","\u0213":"r","\u1e5b":"r","\u1e5d":"r","\u0157":"r","\u1e5f":"r","\u024d":"r","\u027d":"r","\ua75b":"r","\ua7a7":"r","\ua783":"r","\u24e2":"s","\uff53":"s","\xdf":"s","\u015b":"s","\u1e65":"s","\u015d":"s","\u1e61":"s","\u0161":"s","\u1e67":"s","\u1e63":"s","\u1e69":"s","\u0219":"s","\u015f":"s","\u023f":"s","\ua7a9":"s","\ua785":"s","\u1e9b":"s","\u24e3":"t","\uff54":"t","\u1e6b":"t","\u1e97":"t","\u0165":"t","\u1e6d":"t","\u021b":"t","\u0163":"t","\u1e71":"t","\u1e6f":"t","\u0167":"t","\u01ad":"t","\u0288":"t","\u2c66":"t","\ua787":"t","\ua729":"tz","\u24e4":"u","\uff55":"u","\xf9":"u","\xfa":"u","\xfb":"u","\u0169":"u","\u1e79":"u","\u016b":"u","\u1e7b":"u","\u016d":"u","\xfc":"u","\u01dc":"u","\u01d8":"u","\u01d6":"u","\u01da":"u","\u1ee7":"u","\u016f":"u","\u0171":"u","\u01d4":"u","\u0215":"u","\u0217":"u","\u01b0":"u","\u1eeb":"u","\u1ee9":"u","\u1eef":"u","\u1eed":"u","\u1ef1":"u","\u1ee5":"u","\u1e73":"u","\u0173":"u","\u1e77":"u","\u1e75":"u","\u0289":"u","\u24e5":"v","\uff56":"v","\u1e7d":"v","\u1e7f":"v","\u028b":"v","\ua75f":"v","\u028c":"v","\ua761":"vy","\u24e6":"w","\uff57":"w","\u1e81":"w","\u1e83":"w","\u0175":"w","\u1e87":"w","\u1e85":"w","\u1e98":"w","\u1e89":"w","\u2c73":"w","\u24e7":"x","\uff58":"x","\u1e8b":"x","\u1e8d":"x","\u24e8":"y","\uff59":"y","\u1ef3":"y","\xfd":"y","\u0177":"y","\u1ef9":"y","\u0233":"y","\u1e8f":"y","\xff":"y","\u1ef7":"y","\u1e99":"y","\u1ef5":"y","\u01b4":"y","\u024f":"y","\u1eff":"y","\u24e9":"z","\uff5a":"z","\u017a":"z","\u1e91":"z","\u017c":"z","\u017e":"z","\u1e93":"z","\u1e95":"z","\u01b6":"z","\u0225":"z","\u0240":"z","\u2c6c":"z","\ua763":"z"};j=a(document),g=function(){var a=1;return function(){return a++}}(),j.on("mousemove",function(a){i.x=a.pageX,i.y=a.pageY}),d=O(Object,{bind:function(a){var b=this;return function(){a.apply(b,arguments)}},init:function(c){var d,e,f=".select2-results";this.opts=c=this.prepareOpts(c),this.id=c.id,c.element.data("select2")!==b&&null!==c.element.data("select2")&&c.element.data("select2").destroy(),this.container=this.createContainer(),this.liveRegion=a("",{role:"status","aria-live":"polite"}).addClass("select2-hidden-accessible").appendTo(document.body),this.containerId="s2id_"+(c.element.attr("id")||"autogen"+g()).replace(/([;&,\-\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g,"\\$1"),this.containerSelector="#"+this.containerId,this.container.attr("id",this.containerId),this.body=x(function(){return c.element.closest("body")}),E(this.container,this.opts.element,this.opts.adaptContainerCssClass),this.container.attr("style",c.element.attr("style")),this.container.css(L(c.containerCss)),this.container.addClass(L(c.containerCssClass)),this.elementTabIndex=this.opts.element.attr("tabindex"),this.opts.element.data("select2",this).attr("tabindex","-1").before(this.container).on("click.select2",B),this.container.data("select2",this),this.dropdown=this.container.find(".select2-drop"),E(this.dropdown,this.opts.element,this.opts.adaptDropdownCssClass),this.dropdown.addClass(L(c.dropdownCssClass)),this.dropdown.data("select2",this),this.dropdown.on("click",B),this.results=d=this.container.find(f),this.search=e=this.container.find("input.select2-input"),this.queryCount=0,this.resultsPage=0,this.context=null,this.initContainer(),this.container.on("click",B),v(this.results),this.dropdown.on("mousemove-filtered touchstart touchmove touchend",f,this.bind(this.highlightUnderEvent)),this.dropdown.on("touchend",f,this.bind(this.selectHighlighted)),this.dropdown.on("touchmove",f,this.bind(this.touchMoved)),this.dropdown.on("touchstart touchend",f,this.bind(this.clearTouchMoved)),y(80,this.results),this.dropdown.on("scroll-debounced",f,this.bind(this.loadMoreIfNeeded)),a(this.container).on("change",".select2-input",function(a){a.stopPropagation()}),a(this.dropdown).on("change",".select2-input",function(a){a.stopPropagation()}),a.fn.mousewheel&&d.mousewheel(function(a,b,c,e){var f=d.scrollTop();e>0&&0>=f-e?(d.scrollTop(0),B(a)):0>e&&d.get(0).scrollHeight-d.scrollTop()+e<=d.height()&&(d.scrollTop(d.get(0).scrollHeight-d.height()),B(a))}),u(e),e.on("keyup-change input paste",this.bind(this.updateResults)),e.on("focus",function(){e.addClass("select2-focused")}),e.on("blur",function(){e.removeClass("select2-focused")}),this.dropdown.on("mouseup",f,this.bind(function(b){a(b.target).closest(".select2-result-selectable").length>0&&(this.highlightUnderEvent(b),this.selectHighlighted(b))})),this.dropdown.on("click mouseup mousedown focusin",function(a){a.stopPropagation()}),this.nextSearchTerm=b,a.isFunction(this.opts.initSelection)&&(this.initSelection(),this.monitorSource()),null!==c.maximumInputLength&&this.search.attr("maxlength",c.maximumInputLength);var h=c.element.prop("disabled");h===b&&(h=!1),this.enable(!h);var i=c.element.prop("readonly");i===b&&(i=!1),this.readonly(i),k=k||q(),this.autofocus=c.element.prop("autofocus"),c.element.prop("autofocus",!1),this.autofocus&&this.focus(),this.search.attr("placeholder",c.searchInputPlaceholder)},destroy:function(){var a=this.opts.element,c=a.data("select2");this.close(),this.propertyObserver&&(delete this.propertyObserver,this.propertyObserver=null),c!==b&&(c.container.remove(),c.liveRegion.remove(),c.dropdown.remove(),a.removeClass("select2-offscreen").removeData("select2").off(".select2").prop("autofocus",this.autofocus||!1),this.elementTabIndex?a.attr({tabindex:this.elementTabIndex}):a.removeAttr("tabindex"),a.show())},optionToData:function(a){return a.is("option")?{id:a.prop("value"),text:a.text(),element:a.get(),css:a.attr("class"),disabled:a.prop("disabled"),locked:r(a.attr("locked"),"locked")||r(a.data("locked"),!0)}:a.is("optgroup")?{text:a.attr("label"),children:[],element:a.get(),css:a.attr("class")}:void 0},prepareOpts:function(c){var d,e,f,h,i=this;if(d=c.element,"select"===d.get(0).tagName.toLowerCase()&&(this.select=e=c.element),e&&a.each(["id","multiple","ajax","query","createSearchChoice","initSelection","data","tags"],function(){if(this in c)throw new Error("Option '"+this+"' is not allowed for Select2 when attached to a ","
          "," ","
            ","
          ","
          "].join(""));return b},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.focusser.prop("disabled",!this.isInterfaceEnabled())},opening:function(){var c,d,e;this.opts.minimumResultsForSearch>=0&&this.showSearch(!0),this.parent.opening.apply(this,arguments),this.showSearchInput!==!1&&this.search.val(this.focusser.val()),this.search.focus(),c=this.search.get(0),c.createTextRange?(d=c.createTextRange(),d.collapse(!1),d.select()):c.setSelectionRange&&(e=this.search.val().length,c.setSelectionRange(e,e)),""===this.search.val()&&this.nextSearchTerm!=b&&(this.search.val(this.nextSearchTerm),this.search.select()),this.focusser.prop("disabled",!0).val(""),this.updateResults(!0),this.opts.element.trigger(a.Event("select2-open"))},close:function(){this.opened()&&(this.parent.close.apply(this,arguments),this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus())},focus:function(){this.opened()?this.close():(this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus())},isFocused:function(){return this.container.hasClass("select2-container-active")},cancel:function(){this.parent.cancel.apply(this,arguments),this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus()},destroy:function(){a("label[for='"+this.focusser.attr("id")+"']").attr("for",this.opts.element.attr("id")),this.parent.destroy.apply(this,arguments)},initContainer:function(){var b,h,d=this.container,e=this.dropdown,f=g();this.opts.minimumResultsForSearch<0?this.showSearch(!1):this.showSearch(!0),this.selection=b=d.find(".select2-choice"),this.focusser=d.find(".select2-focusser"),b.find(".select2-chosen").attr("id","select2-chosen-"+f),this.focusser.attr("aria-labelledby","select2-chosen-"+f),this.results.attr("id","select2-results-"+f),this.search.attr("aria-owns","select2-results-"+f),this.focusser.attr("id","s2id_autogen"+f),h=a("label[for='"+this.opts.element.attr("id")+"']"),this.focusser.prev().text(h.text()).attr("for",this.focusser.attr("id"));var i=this.opts.element.attr("title");this.opts.element.attr("title",i||h.text()),this.focusser.attr("tabindex",this.elementTabIndex),this.search.attr("id",this.focusser.attr("id")+"_search"),this.search.prev().text(a("label[for='"+this.focusser.attr("id")+"']").text()).attr("for",this.search.attr("id")),this.search.on("keydown",this.bind(function(a){if(this.isInterfaceEnabled()){if(a.which===c.PAGE_UP||a.which===c.PAGE_DOWN)return B(a),void 0;switch(a.which){case c.UP:case c.DOWN:return this.moveHighlight(a.which===c.UP?-1:1),B(a),void 0;case c.ENTER:return this.selectHighlighted(),B(a),void 0;case c.TAB:return this.selectHighlighted({noFocus:!0}),void 0;case c.ESC:return this.cancel(a),B(a),void 0}}})),this.search.on("blur",this.bind(function(){document.activeElement===this.body().get(0)&&window.setTimeout(this.bind(function(){this.opened()&&this.search.focus()}),0)})),this.focusser.on("keydown",this.bind(function(a){if(this.isInterfaceEnabled()&&a.which!==c.TAB&&!c.isControl(a)&&!c.isFunctionKey(a)&&a.which!==c.ESC){if(this.opts.openOnEnter===!1&&a.which===c.ENTER)return B(a),void 0;if(a.which==c.DOWN||a.which==c.UP||a.which==c.ENTER&&this.opts.openOnEnter){if(a.altKey||a.ctrlKey||a.shiftKey||a.metaKey)return;return this.open(),B(a),void 0}return a.which==c.DELETE||a.which==c.BACKSPACE?(this.opts.allowClear&&this.clear(),B(a),void 0):void 0}})),u(this.focusser),this.focusser.on("keyup-change input",this.bind(function(a){if(this.opts.minimumResultsForSearch>=0){if(a.stopPropagation(),this.opened())return;this.open()}})),b.on("mousedown touchstart","abbr",this.bind(function(a){this.isInterfaceEnabled()&&(this.clear(),C(a),this.close(),this.selection.focus())})),b.on("mousedown touchstart",this.bind(function(c){n(b),this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.opened()?this.close():this.isInterfaceEnabled()&&this.open(),B(c)})),e.on("mousedown touchstart",this.bind(function(){this.search.focus()})),b.on("focus",this.bind(function(a){B(a)})),this.focusser.on("focus",this.bind(function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active")})).on("blur",this.bind(function(){this.opened()||(this.container.removeClass("select2-container-active"),this.opts.element.trigger(a.Event("select2-blur")))})),this.search.on("focus",this.bind(function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active")})),this.initContainerWidth(),this.opts.element.addClass("select2-offscreen"),this.setPlaceholder()},clear:function(b){var c=this.selection.data("select2-data");if(c){var d=a.Event("select2-clearing");if(this.opts.element.trigger(d),d.isDefaultPrevented())return;var e=this.getPlaceholderOption();this.opts.element.val(e?e.val():""),this.selection.find(".select2-chosen").empty(),this.selection.removeData("select2-data"),this.setPlaceholder(),b!==!1&&(this.opts.element.trigger({type:"select2-removed",val:this.id(c),choice:c}),this.triggerChange({removed:c}))}},initSelection:function(){if(this.isPlaceholderOptionSelected())this.updateSelection(null),this.close(),this.setPlaceholder();else{var c=this;this.opts.initSelection.call(null,this.opts.element,function(a){a!==b&&null!==a&&(c.updateSelection(a),c.close(),c.setPlaceholder(),c.nextSearchTerm=c.opts.nextSearchTerm(a,c.search.val()))})}},isPlaceholderOptionSelected:function(){var a;return this.getPlaceholder()?(a=this.getPlaceholderOption())!==b&&a.prop("selected")||""===this.opts.element.val()||this.opts.element.val()===b||null===this.opts.element.val():!1},prepareOpts:function(){var b=this.parent.prepareOpts.apply(this,arguments),c=this;return"select"===b.element.get(0).tagName.toLowerCase()?b.initSelection=function(a,b){var d=a.find("option").filter(function(){return this.selected&&!this.disabled});b(c.optionToData(d))}:"data"in b&&(b.initSelection=b.initSelection||function(c,d){var e=c.val(),f=null;b.query({matcher:function(a,c,d){var g=r(e,b.id(d));return g&&(f=d),g},callback:a.isFunction(d)?function(){d(f)}:a.noop})}),b},getPlaceholder:function(){return this.select&&this.getPlaceholderOption()===b?b:this.parent.getPlaceholder.apply(this,arguments)},setPlaceholder:function(){var a=this.getPlaceholder();if(this.isPlaceholderOptionSelected()&&a!==b){if(this.select&&this.getPlaceholderOption()===b)return;this.selection.find(".select2-chosen").html(this.opts.escapeMarkup(a)),this.selection.addClass("select2-default"),this.container.removeClass("select2-allowclear")}},postprocessResults:function(a,b,c){var d=0,e=this;if(this.findHighlightableChoices().each2(function(a,b){return r(e.id(b.data("select2-data")),e.opts.element.val())?(d=a,!1):void 0}),c!==!1&&(b===!0&&d>=0?this.highlight(d):this.highlight(0)),b===!0){var g=this.opts.minimumResultsForSearch;g>=0&&this.showSearch(M(a.results)>=g)}},showSearch:function(b){this.showSearchInput!==b&&(this.showSearchInput=b,this.dropdown.find(".select2-search").toggleClass("select2-search-hidden",!b),this.dropdown.find(".select2-search").toggleClass("select2-offscreen",!b),a(this.dropdown,this.container).toggleClass("select2-with-searchbox",b))},onSelect:function(a,b){if(this.triggerSelect(a)){var c=this.opts.element.val(),d=this.data();this.opts.element.val(this.id(a)),this.updateSelection(a),this.opts.element.trigger({type:"select2-selected",val:this.id(a),choice:a}),this.nextSearchTerm=this.opts.nextSearchTerm(a,this.search.val()),this.close(),b&&b.noFocus||!this.opts.shouldFocusInput(this)||this.focusser.focus(),r(c,this.id(a))||this.triggerChange({added:a,removed:d})}},updateSelection:function(a){var d,e,c=this.selection.find(".select2-chosen");this.selection.data("select2-data",a),c.empty(),null!==a&&(d=this.opts.formatSelection(a,c,this.opts.escapeMarkup)),d!==b&&c.append(d),e=this.opts.formatSelectionCssClass(a,c),e!==b&&c.addClass(e),this.selection.removeClass("select2-default"),this.opts.allowClear&&this.getPlaceholder()!==b&&this.container.addClass("select2-allowclear")},val:function(){var a,c=!1,d=null,e=this,f=this.data();if(0===arguments.length)return this.opts.element.val();if(a=arguments[0],arguments.length>1&&(c=arguments[1]),this.select)this.select.val(a).find("option").filter(function(){return this.selected}).each2(function(a,b){return d=e.optionToData(b),!1}),this.updateSelection(d),this.setPlaceholder(),c&&this.triggerChange({added:d,removed:f});else{if(!a&&0!==a)return this.clear(c),void 0;if(this.opts.initSelection===b)throw new Error("cannot call val() if initSelection() is not defined");this.opts.element.val(a),this.opts.initSelection(this.opts.element,function(a){e.opts.element.val(a?e.id(a):""),e.updateSelection(a),e.setPlaceholder(),c&&e.triggerChange({added:a,removed:f})})}},clearSearch:function(){this.search.val(""),this.focusser.val("")},data:function(a){var c,d=!1;return 0===arguments.length?(c=this.selection.data("select2-data"),c==b&&(c=null),c):(arguments.length>1&&(d=arguments[1]),a?(c=this.data(),this.opts.element.val(a?this.id(a):""),this.updateSelection(a),d&&this.triggerChange({added:a,removed:c})):this.clear(d),void 0)}}),f=O(d,{createContainer:function(){var b=a(document.createElement("div")).attr({"class":"select2-container select2-container-multi"}).html(["
            ","
          • "," "," ","
          • ","
          ","
          ","
            ","
          ","
          "].join(""));return b},prepareOpts:function(){var b=this.parent.prepareOpts.apply(this,arguments),c=this;return"select"===b.element.get(0).tagName.toLowerCase()?b.initSelection=function(a,b){var d=[];a.find("option").filter(function(){return this.selected&&!this.disabled}).each2(function(a,b){d.push(c.optionToData(b))}),b(d)}:"data"in b&&(b.initSelection=b.initSelection||function(c,d){var e=s(c.val(),b.separator),f=[];b.query({matcher:function(c,d,g){var h=a.grep(e,function(a){return r(a,b.id(g))}).length;return h&&f.push(g),h},callback:a.isFunction(d)?function(){for(var a=[],c=0;c0||(this.selectChoice(null),this.clearPlaceholder(),this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.open(),this.focusSearch(),b.preventDefault()))})),this.container.on("focus",b,this.bind(function(){this.isInterfaceEnabled()&&(this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active"),this.dropdown.addClass("select2-drop-active"),this.clearPlaceholder())})),this.initContainerWidth(),this.opts.element.addClass("select2-offscreen"),this.clearSearch()},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.search.prop("disabled",!this.isInterfaceEnabled())},initSelection:function(){if(""===this.opts.element.val()&&""===this.opts.element.text()&&(this.updateSelection([]),this.close(),this.clearSearch()),this.select||""!==this.opts.element.val()){var c=this;this.opts.initSelection.call(null,this.opts.element,function(a){a!==b&&null!==a&&(c.updateSelection(a),c.close(),c.clearSearch())})}},clearSearch:function(){var a=this.getPlaceholder(),c=this.getMaxSearchWidth();a!==b&&0===this.getVal().length&&this.search.hasClass("select2-focused")===!1?(this.search.val(a).addClass("select2-default"),this.search.width(c>0?c:this.container.css("width"))):this.search.val("").width(10)},clearPlaceholder:function(){this.search.hasClass("select2-default")&&this.search.val("").removeClass("select2-default")},opening:function(){this.clearPlaceholder(),this.resizeSearch(),this.parent.opening.apply(this,arguments),this.focusSearch(),""===this.search.val()&&this.nextSearchTerm!=b&&(this.search.val(this.nextSearchTerm),this.search.select()),this.updateResults(!0),this.search.focus(),this.opts.element.trigger(a.Event("select2-open"))},close:function(){this.opened()&&this.parent.close.apply(this,arguments)},focus:function(){this.close(),this.search.focus()},isFocused:function(){return this.search.hasClass("select2-focused")},updateSelection:function(b){var c=[],d=[],e=this;a(b).each(function(){p(e.id(this),c)<0&&(c.push(e.id(this)),d.push(this))}),b=d,this.selection.find(".select2-search-choice").remove(),a(b).each(function(){e.addSelectedChoice(this)}),e.postprocessResults()},tokenize:function(){var a=this.search.val();a=this.opts.tokenizer.call(this,a,this.data(),this.bind(this.onSelect),this.opts),null!=a&&a!=b&&(this.search.val(a),a.length>0&&this.open())},onSelect:function(a,c){this.triggerSelect(a)&&(this.addSelectedChoice(a),this.opts.element.trigger({type:"selected",val:this.id(a),choice:a}),this.nextSearchTerm=this.opts.nextSearchTerm(a,this.search.val()),this.clearSearch(),this.updateResults(),(this.select||!this.opts.closeOnSelect)&&this.postprocessResults(a,!1,this.opts.closeOnSelect===!0),this.opts.closeOnSelect?(this.close(),this.search.width(10)):this.countSelectableResults()>0?(this.search.width(10),this.resizeSearch(),this.getMaximumSelectionSize()>0&&this.val().length>=this.getMaximumSelectionSize()?this.updateResults(!0):this.nextSearchTerm!=b&&(this.search.val(this.nextSearchTerm),this.updateResults(),this.search.select()),this.positionDropdown()):(this.close(),this.search.width(10)),this.triggerChange({added:a}),c&&c.noFocus||this.focusSearch())},cancel:function(){this.close(),this.focusSearch()},addSelectedChoice:function(c){var j,k,d=!c.locked,e=a("
        • "),f=a("
        • "),g=d?e:f,h=this.id(c),i=this.getVal();j=this.opts.formatSelection(c,g.find("div"),this.opts.escapeMarkup),j!=b&&g.find("div").replaceWith("
          "+j+"
          "),k=this.opts.formatSelectionCssClass(c,g.find("div")),k!=b&&g.addClass(k),d&&g.find(".select2-search-choice-close").on("mousedown",B).on("click dblclick",this.bind(function(b){this.isInterfaceEnabled()&&(this.unselect(a(b.target)),this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus"),B(b),this.close(),this.focusSearch())})).on("focus",this.bind(function(){this.isInterfaceEnabled()&&(this.container.addClass("select2-container-active"),this.dropdown.addClass("select2-drop-active"))})),g.data("select2-data",c),g.insertBefore(this.searchContainer),i.push(h),this.setVal(i)},unselect:function(b){var d,e,c=this.getVal();if(b=b.closest(".select2-search-choice"),0===b.length)throw"Invalid argument: "+b+". Must be .select2-search-choice";if(d=b.data("select2-data")){var f=a.Event("select2-removing");if(f.val=this.id(d),f.choice=d,this.opts.element.trigger(f),f.isDefaultPrevented())return!1;for(;(e=p(this.id(d),c))>=0;)c.splice(e,1),this.setVal(c),this.select&&this.postprocessResults();return b.remove(),this.opts.element.trigger({type:"select2-removed",val:this.id(d),choice:d}),this.triggerChange({removed:d}),!0}},postprocessResults:function(a,b,c){var d=this.getVal(),e=this.results.find(".select2-result"),f=this.results.find(".select2-result-with-children"),g=this;e.each2(function(a,b){var c=g.id(b.data("select2-data"));p(c,d)>=0&&(b.addClass("select2-selected"),b.find(".select2-result-selectable").addClass("select2-selected"))}),f.each2(function(a,b){b.is(".select2-result-selectable")||0!==b.find(".select2-result-selectable:not(.select2-selected)").length||b.addClass("select2-selected")}),-1==this.highlight()&&c!==!1&&g.highlight(0),!this.opts.createSearchChoice&&!e.filter(".select2-result:not(.select2-selected)").length>0&&(!a||a&&!a.more&&0===this.results.find(".select2-no-results").length)&&K(g.opts.formatNoMatches,"formatNoMatches")&&this.results.append("
        • "+L(g.opts.formatNoMatches,g.search.val())+"
        • ")},getMaxSearchWidth:function(){return this.selection.width()-t(this.search)},resizeSearch:function(){var a,b,c,d,e,f=t(this.search);a=D(this.search)+10,b=this.search.offset().left,c=this.selection.width(),d=this.selection.offset().left,e=c-(b-d)-f,a>e&&(e=c-f),40>e&&(e=c-f),0>=e&&(e=a),this.search.width(Math.floor(e))},getVal:function(){var a;return this.select?(a=this.select.val(),null===a?[]:a):(a=this.opts.element.val(),s(a,this.opts.separator))},setVal:function(b){var c;this.select?this.select.val(b):(c=[],a(b).each(function(){p(this,c)<0&&c.push(this)}),this.opts.element.val(0===c.length?"":c.join(this.opts.separator)))},buildChangeDetails:function(a,b){for(var b=b.slice(0),a=a.slice(0),c=0;c0&&c--,a.splice(d,1),d--);return{added:b,removed:a}},val:function(c,d){var e,f=this;if(0===arguments.length)return this.getVal();if(e=this.data(),e.length||(e=[]),!c&&0!==c)return this.opts.element.val(""),this.updateSelection([]),this.clearSearch(),d&&this.triggerChange({added:this.data(),removed:e}),void 0;if(this.setVal(c),this.select)this.opts.initSelection(this.select,this.bind(this.updateSelection)),d&&this.triggerChange(this.buildChangeDetails(e,this.data()));else{if(this.opts.initSelection===b)throw new Error("val() cannot be called if initSelection() is not defined");this.opts.initSelection(this.opts.element,function(b){var c=a.map(b,f.id);f.setVal(c),f.updateSelection(b),f.clearSearch(),d&&f.triggerChange(f.buildChangeDetails(e,f.data()))})}this.clearSearch()},onSortStart:function(){if(this.select)throw new Error("Sorting of elements is not supported when attached to instead.");this.search.width(0),this.searchContainer.hide()},onSortEnd:function(){var b=[],c=this;this.searchContainer.show(),this.searchContainer.appendTo(this.searchContainer.parent()),this.resizeSearch(),this.selection.find(".select2-search-choice").each(function(){b.push(c.opts.id(a(this).data("select2-data")))}),this.setVal(b),this.triggerChange()},data:function(b,c){var e,f,d=this;return 0===arguments.length?this.selection.children(".select2-search-choice").map(function(){return a(this).data("select2-data")}).get():(f=this.data(),b||(b=[]),e=a.map(b,function(a){return d.opts.id(a)}),this.setVal(e),this.updateSelection(b),this.clearSearch(),c&&this.triggerChange(this.buildChangeDetails(f,this.data())),void 0)}}),a.fn.select2=function(){var d,e,f,g,h,c=Array.prototype.slice.call(arguments,0),i=["val","destroy","opened","open","close","focus","isFocused","container","dropdown","onSortStart","onSortEnd","enable","disable","readonly","positionDropdown","data","search"],j=["opened","isFocused","container","dropdown"],k=["val","data"],l={search:"externalSearch"};return this.each(function(){if(0===c.length||"object"==typeof c[0])d=0===c.length?{}:a.extend({},c[0]),d.element=a(this),"select"===d.element.get(0).tagName.toLowerCase()?h=d.element.prop("multiple"):(h=d.multiple||!1,"tags"in d&&(d.multiple=h=!0)),e=h?new window.Select2["class"].multi:new window.Select2["class"].single,e.init(d);else{if("string"!=typeof c[0])throw"Invalid arguments to select2 plugin: "+c;if(p(c[0],i)<0)throw"Unknown method: "+c[0];if(g=b,e=a(this).data("select2"),e===b)return;if(f=c[0],"container"===f?g=e.container:"dropdown"===f?g=e.dropdown:(l[f]&&(f=l[f]),g=e[f].apply(e,c.slice(1))),p(c[0],j)>=0||p(c[0],k)&&1==c.length)return!1}}),g===b?this:g},a.fn.select2.defaults={width:"copy",loadMorePadding:0,closeOnSelect:!0,openOnEnter:!0,containerCss:{},dropdownCss:{},containerCssClass:"",dropdownCssClass:"",formatResult:function(a,b,c,d){var e=[];return F(a.text,c.term,e,d),e.join("")},formatSelection:function(a,c,d){return a?d(a.text):b},sortResults:function(a){return a},formatResultCssClass:function(a){return a.css},formatSelectionCssClass:function(){return b},formatMatches:function(a){return a+" results are available, use up and down arrow keys to navigate."},formatNoMatches:function(){return"No matches found"},formatInputTooShort:function(a,b){var c=b-a.length;return"Please enter "+c+" or more character"+(1==c?"":"s")},formatInputTooLong:function(a,b){var c=a.length-b;return"Please delete "+c+" character"+(1==c?"":"s")},formatSelectionTooBig:function(a){return"You can only select "+a+" item"+(1==a?"":"s")},formatLoadMore:function(){return"Loading more results\u2026"},formatSearching:function(){return"Searching\u2026"},minimumResultsForSearch:0,minimumInputLength:0,maximumInputLength:null,maximumSelectionSize:0,id:function(a){return a==b?null:a.id},matcher:function(a,b){return o(""+b).toUpperCase().indexOf(o(""+a).toUpperCase())>=0},separator:",",tokenSeparators:[],tokenizer:N,escapeMarkup:G,blurOnChange:!1,selectOnBlur:!1,adaptContainerCssClass:function(a){return a},adaptDropdownCssClass:function(){return null},nextSearchTerm:function(){return b},searchInputPlaceholder:"",createSearchChoicePosition:"top",shouldFocusInput:function(a){return a.opts.minimumResultsForSearch<0?!1:!0}},a.fn.select2.ajaxDefaults={transport:a.ajax,params:{type:"GET",cache:!1,dataType:"json"}},window.Select2={query:{ajax:H,local:I,tags:J},util:{debounce:w,markMatch:F,escapeMarkup:G,stripDiacritics:o},"class":{"abstract":d,single:e,multi:f}}}}(jQuery); \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2.png b/themes/fruitful/inc/metaboxes/js/select2/select2.png new file mode 100644 index 0000000..1d804ff Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/select2/select2.png differ diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_ar.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_ar.js new file mode 100644 index 0000000..92d7e39 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_ar.js @@ -0,0 +1,17 @@ +/** + * Select2 Arabic translation. + * + * Author: Adel KEDJOUR + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "لم يتم العثور على مطابقات"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; if (n == 1){ return "الرجاء إدخال حرف واحد على الأكثر"; } return n == 2 ? "الرجاء إدخال حرفين على الأكثر" : "الجاء إدخال " + n + " على الأكثر"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; if (n == 1){ return "الرجاء إدخال حرف واحد على الأقل"; } return n == 2 ? "الرجاء إدخال حرفين على الأقل" : "الجاء إدخال " + n + " على الأقل "; }, + formatSelectionTooBig: function (limit) { if (n == 1){ return "يمكنك أن تختار إختيار واحد فقط"; } return n == 2 ? "يمكنك أن تختار إختيارين فقط" : "يمكنك أن تختار " + n + " إختيارات فقط"; }, + formatLoadMore: function (pageNumber) { return "تحميل المزيد من النتائج…"; }, + formatSearching: function () { return "البحث…"; } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_bg.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_bg.js new file mode 100644 index 0000000..585d28a --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_bg.js @@ -0,0 +1,18 @@ +/** + * Select2 Bulgarian translation. + * + * @author Lubomir Vikev + * @author Uriy Efremochkin + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Няма намерени съвпадения"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Моля въведете още " + n + " символ" + (n > 1 ? "а" : ""); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Моля въведете с " + n + " по-малко символ" + (n > 1 ? "а" : ""); }, + formatSelectionTooBig: function (limit) { return "Можете да направите до " + limit + (limit > 1 ? " избора" : " избор"); }, + formatLoadMore: function (pageNumber) { return "Зареждат се още…"; }, + formatSearching: function () { return "Търсене…"; } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_ca.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_ca.js new file mode 100644 index 0000000..7e19d3c --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_ca.js @@ -0,0 +1,17 @@ +/** + * Select2 Catalan translation. + * + * Author: David Planella + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "No s'ha trobat cap coincidència"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Introduïu " + n + " caràcter" + (n == 1 ? "" : "s") + " més"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Introduïu " + n + " caràcter" + (n == 1? "" : "s") + "menys"; }, + formatSelectionTooBig: function (limit) { return "Només podeu seleccionar " + limit + " element" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "S'estan carregant més resultats…"; }, + formatSearching: function () { return "S'està cercant…"; } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_cs.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_cs.js new file mode 100644 index 0000000..376b54a --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_cs.js @@ -0,0 +1,49 @@ +/** + * Select2 Czech translation. + * + * Author: Michal Marek + * Author - sklonovani: David Vallner + */ +(function ($) { + "use strict"; + // use text for the numbers 2 through 4 + var smallNumbers = { + 2: function(masc) { return (masc ? "dva" : "dvě"); }, + 3: function() { return "tři"; }, + 4: function() { return "čtyři"; } + } + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Nenalezeny žádné položky"; }, + formatInputTooShort: function (input, min) { + var n = min - input.length; + if (n == 1) { + return "Prosím zadejte ještě jeden znak"; + } else if (n <= 4) { + return "Prosím zadejte ještě další "+smallNumbers[n](true)+" znaky"; + } else { + return "Prosím zadejte ještě dalších "+n+" znaků"; + } + }, + formatInputTooLong: function (input, max) { + var n = input.length - max; + if (n == 1) { + return "Prosím zadejte o jeden znak méně"; + } else if (n <= 4) { + return "Prosím zadejte o "+smallNumbers[n](true)+" znaky méně"; + } else { + return "Prosím zadejte o "+n+" znaků méně"; + } + }, + formatSelectionTooBig: function (limit) { + if (limit == 1) { + return "Můžete zvolit jen jednu položku"; + } else if (limit <= 4) { + return "Můžete zvolit maximálně "+smallNumbers[limit](false)+" položky"; + } else { + return "Můžete zvolit maximálně "+limit+" položek"; + } + }, + formatLoadMore: function (pageNumber) { return "Načítají se další výsledky…"; }, + formatSearching: function () { return "Vyhledávání…"; } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_da.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_da.js new file mode 100644 index 0000000..dbce3e1 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_da.js @@ -0,0 +1,17 @@ +/** + * Select2 Danish translation. + * + * Author: Anders Jenbo + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Ingen resultater fundet"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Angiv venligst " + n + " tegn mere"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Angiv venligst " + n + " tegn mindre"; }, + formatSelectionTooBig: function (limit) { return "Du kan kun vælge " + limit + " emne" + (limit === 1 ? "" : "r"); }, + formatLoadMore: function (pageNumber) { return "Indlæser flere resultater…"; }, + formatSearching: function () { return "Søger…"; } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_de.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_de.js new file mode 100644 index 0000000..93b18e8 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_de.js @@ -0,0 +1,15 @@ +/** + * Select2 German translation + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Keine Übereinstimmungen gefunden"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Bitte " + n + " Zeichen mehr eingeben"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Bitte " + n + " Zeichen weniger eingeben"; }, + formatSelectionTooBig: function (limit) { return "Sie können nur " + limit + " Eintr" + (limit === 1 ? "ag" : "äge") + " auswählen"; }, + formatLoadMore: function (pageNumber) { return "Lade mehr Ergebnisse…"; }, + formatSearching: function () { return "Suche…"; } + }); +})(jQuery); \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_el.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_el.js new file mode 100644 index 0000000..e94b02c --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_el.js @@ -0,0 +1,17 @@ +/** + * Select2 Greek translation. + * + * @author Uriy Efremochkin + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Δεν βρέθηκαν αποτελέσματα"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Παρακαλούμε εισάγετε " + n + " περισσότερο" + (n > 1 ? "υς" : "") + " χαρακτήρ" + (n > 1 ? "ες" : "α"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Παρακαλούμε διαγράψτε " + n + " χαρακτήρ" + (n > 1 ? "ες" : "α"); }, + formatSelectionTooBig: function (limit) { return "Μπορείτε να επιλέξετε μόνο " + limit + " αντικείμεν" + (limit > 1 ? "α" : "ο"); }, + formatLoadMore: function (pageNumber) { return "Φόρτωση περισσότερων…"; }, + formatSearching: function () { return "Αναζήτηση…"; } + }); +})(jQuery); \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_es.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_es.js new file mode 100644 index 0000000..f2b5817 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_es.js @@ -0,0 +1,15 @@ +/** + * Select2 Spanish translation + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "No se encontraron resultados"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Por favor, introduzca " + n + " car" + (n == 1? "ácter" : "acteres"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Por favor, elimine " + n + " car" + (n == 1? "ácter" : "acteres"); }, + formatSelectionTooBig: function (limit) { return "Sólo puede seleccionar " + limit + " elemento" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "Cargando más resultados…"; }, + formatSearching: function () { return "Buscando…"; } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_et.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_et.js new file mode 100644 index 0000000..a4045d2 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_et.js @@ -0,0 +1,17 @@ +/** + * Select2 Estonian translation. + * + * Author: Kuldar Kalvik + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Tulemused puuduvad"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Sisesta " + n + " täht" + (n == 1 ? "" : "e") + " rohkem"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Sisesta " + n + " täht" + (n == 1? "" : "e") + " vähem"; }, + formatSelectionTooBig: function (limit) { return "Saad vaid " + limit + " tulemus" + (limit == 1 ? "e" : "t") + " valida"; }, + formatLoadMore: function (pageNumber) { return "Laen tulemusi.."; }, + formatSearching: function () { return "Otsin.."; } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_eu.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_eu.js new file mode 100644 index 0000000..1da1a70 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_eu.js @@ -0,0 +1,43 @@ +/** + * Select2 Basque translation. + * + * Author: Julen Ruiz Aizpuru + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { + return "Ez da bat datorrenik aurkitu"; + }, + formatInputTooShort: function (input, min) { + var n = min - input.length; + if (n === 1) { + return "Idatzi karaktere bat gehiago"; + } else { + return "Idatzi " + n + " karaktere gehiago"; + } + }, + formatInputTooLong: function (input, max) { + var n = input.length - max; + if (n === 1) { + return "Idatzi karaktere bat gutxiago"; + } else { + return "Idatzi " + n + " karaktere gutxiago"; + } + }, + formatSelectionTooBig: function (limit) { + if (limit === 1 ) { + return "Elementu bakarra hauta dezakezu"; + } else { + return limit + " elementu hauta ditzakezu soilik"; + } + }, + formatLoadMore: function (pageNumber) { + return "Emaitza gehiago kargatzen…"; + }, + formatSearching: function () { + return "Bilatzen…"; + } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_fa.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_fa.js new file mode 100644 index 0000000..a9e95af --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_fa.js @@ -0,0 +1,19 @@ +/** + * Select2 Persian translation. + * + * Author: Ali Choopan + * Author: Ebrahim Byagowi + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatMatches: function (matches) { return matches + " نتیجه موجود است، کلیدهای جهت بالا و پایین را برای گشتن استفاده کنید."; }, + formatNoMatches: function () { return "نتیجه‌ای یافت نشد."; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "لطفاً " + n + " نویسه بیشتر وارد نمایید"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "لطفاً " + n + " نویسه را حذف کنید."; }, + formatSelectionTooBig: function (limit) { return "شما فقط می‌توانید " + limit + " مورد را انتخاب کنید"; }, + formatLoadMore: function (pageNumber) { return "در حال بارگیری موارد بیشتر…"; }, + formatSearching: function () { return "در حال جستجو…"; } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_fi.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_fi.js new file mode 100644 index 0000000..9bed310 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_fi.js @@ -0,0 +1,28 @@ +/** + * Select2 Finnish translation + */ +(function ($) { + "use strict"; + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { + return "Ei tuloksia"; + }, + formatInputTooShort: function (input, min) { + var n = min - input.length; + return "Ole hyvä ja anna " + n + " merkkiä lisää"; + }, + formatInputTooLong: function (input, max) { + var n = input.length - max; + return "Ole hyvä ja anna " + n + " merkkiä vähemmän"; + }, + formatSelectionTooBig: function (limit) { + return "Voit valita ainoastaan " + limit + " kpl"; + }, + formatLoadMore: function (pageNumber) { + return "Ladataan lisää tuloksia…"; + }, + formatSearching: function () { + return "Etsitään…"; + } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_fr.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_fr.js new file mode 100644 index 0000000..d8c87d4 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_fr.js @@ -0,0 +1,15 @@ +/** + * Select2 French translation + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Aucun résultat trouvé"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Merci de saisir " + n + " caractère" + (n == 1? "" : "s") + " de plus"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Merci de supprimer " + n + " caractère" + (n == 1? "" : "s"); }, + formatSelectionTooBig: function (limit) { return "Vous pouvez seulement sélectionner " + limit + " élément" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "Chargement de résultats supplémentaires…"; }, + formatSearching: function () { return "Recherche en cours…"; } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_gl.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_gl.js new file mode 100644 index 0000000..8032632 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_gl.js @@ -0,0 +1,43 @@ +/** + * Select2 Galician translation + * + * Author: Leandro Regueiro + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { + return "Non se atoparon resultados"; + }, + formatInputTooShort: function (input, min) { + var n = min - input.length; + if (n === 1) { + return "Engada un carácter"; + } else { + return "Engada " + n + " caracteres"; + } + }, + formatInputTooLong: function (input, max) { + var n = input.length - max; + if (n === 1) { + return "Elimine un carácter"; + } else { + return "Elimine " + n + " caracteres"; + } + }, + formatSelectionTooBig: function (limit) { + if (limit === 1 ) { + return "Só pode seleccionar un elemento"; + } else { + return "Só pode seleccionar " + limit + " elementos"; + } + }, + formatLoadMore: function (pageNumber) { + return "Cargando máis resultados…"; + }, + formatSearching: function () { + return "Buscando…"; + } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_he.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_he.js new file mode 100644 index 0000000..0038541 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_he.js @@ -0,0 +1,17 @@ +/** +* Select2 Hebrew translation. +* +* Author: Yakir Sitbon +*/ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "לא נמצאו התאמות"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "נא להזין עוד " + n + " תווים נוספים"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "נא להזין פחות " + n + " תווים"; }, + formatSelectionTooBig: function (limit) { return "ניתן לבחור " + limit + " פריטים"; }, + formatLoadMore: function (pageNumber) { return "טוען תוצאות נוספות…"; }, + formatSearching: function () { return "מחפש…"; } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_hr.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_hr.js new file mode 100644 index 0000000..c293725 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_hr.js @@ -0,0 +1,22 @@ +/** + * Select2 Croatian translation. + * + * @author Edi Modrić + * @author Uriy Efremochkin + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Nema rezultata"; }, + formatInputTooShort: function (input, min) { return "Unesite još" + character(min - input.length); }, + formatInputTooLong: function (input, max) { return "Unesite" + character(input.length - max) + " manje"; }, + formatSelectionTooBig: function (limit) { return "Maksimalan broj odabranih stavki je " + limit; }, + formatLoadMore: function (pageNumber) { return "Učitavanje rezultata…"; }, + formatSearching: function () { return "Pretraga…"; } + }); + + function character (n) { + return " " + n + " znak" + (n%10 < 5 && n%10 > 0 && (n%100 < 5 || n%100 > 19) ? n%10 > 1 ? "a" : "" : "ova"); + } +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_hu.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_hu.js new file mode 100644 index 0000000..a8c3088 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_hu.js @@ -0,0 +1,15 @@ +/** + * Select2 Hungarian translation + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Nincs találat."; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Túl rövid. Még " + n + " karakter hiányzik."; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Túl hosszú. " + n + " karakterrel több, mint kellene."; }, + formatSelectionTooBig: function (limit) { return "Csak " + limit + " elemet lehet kiválasztani."; }, + formatLoadMore: function (pageNumber) { return "Töltés…"; }, + formatSearching: function () { return "Keresés…"; } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_id.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_id.js new file mode 100644 index 0000000..5474540 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_id.js @@ -0,0 +1,17 @@ +/** + * Select2 Indonesian translation. + * + * Author: Ibrahim Yusuf + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Tidak ada data yang sesuai"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Masukkan " + n + " huruf lagi" + (n == 1 ? "" : "s"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Hapus " + n + " huruf" + (n == 1 ? "" : "s"); }, + formatSelectionTooBig: function (limit) { return "Anda hanya dapat memilih " + limit + " pilihan" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "Mengambil data…"; }, + formatSearching: function () { return "Mencari…"; } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_is.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_is.js new file mode 100644 index 0000000..aecc6cd --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_is.js @@ -0,0 +1,15 @@ +/** + * Select2 Icelandic translation. + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Ekkert fannst"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Vinsamlegast skrifið " + n + " staf" + (n > 1 ? "i" : "") + " í viðbót"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Vinsamlegast styttið texta um " + n + " staf" + (n > 1 ? "i" : ""); }, + formatSelectionTooBig: function (limit) { return "Þú getur aðeins valið " + limit + " atriði"; }, + formatLoadMore: function (pageNumber) { return "Sæki fleiri niðurstöður…"; }, + formatSearching: function () { return "Leita…"; } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_it.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_it.js new file mode 100644 index 0000000..d4e24de --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_it.js @@ -0,0 +1,15 @@ +/** + * Select2 Italian translation + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Nessuna corrispondenza trovata"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Inserisci ancora " + n + " caratter" + (n == 1? "e" : "i"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Inserisci " + n + " caratter" + (n == 1? "e" : "i") + " in meno"; }, + formatSelectionTooBig: function (limit) { return "Puoi selezionare solo " + limit + " element" + (limit == 1 ? "o" : "i"); }, + formatLoadMore: function (pageNumber) { return "Caricamento in corso…"; }, + formatSearching: function () { return "Ricerca…"; } + }); +})(jQuery); \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_ja.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_ja.js new file mode 100644 index 0000000..81106e7 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_ja.js @@ -0,0 +1,15 @@ +/** + * Select2 Japanese translation. + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "該当なし"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "後" + n + "文字入れてください"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "検索文字列が" + n + "文字長すぎます"; }, + formatSelectionTooBig: function (limit) { return "最多で" + limit + "項目までしか選択できません"; }, + formatLoadMore: function (pageNumber) { return "読込中・・・"; }, + formatSearching: function () { return "検索中・・・"; } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_ka.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_ka.js new file mode 100644 index 0000000..366cc2d --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_ka.js @@ -0,0 +1,17 @@ +/** + * Select2 Georgian (Kartuli) translation. + * + * Author: Dimitri Kurashvili dimakura@gmail.com + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "ვერ მოიძებნა"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "გთხოვთ შეიყვანოთ კიდევ " + n + " სიმბოლო"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "გთხოვთ წაშალოთ " + n + " სიმბოლო"; }, + formatSelectionTooBig: function (limit) { return "თქვენ შეგიძლიათ მხოლოდ " + limit + " ჩანაწერის მონიშვნა"; }, + formatLoadMore: function (pageNumber) { return "შედეგის ჩატვირთვა…"; }, + formatSearching: function () { return "ძებნა…"; } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_ko.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_ko.js new file mode 100644 index 0000000..1a84d21 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_ko.js @@ -0,0 +1,17 @@ +/** + * Select2 Korean translation. + * + * @author Swen Mun + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "결과 없음"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "너무 짧습니다. "+n+"글자 더 입력해주세요."; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "너무 깁니다. "+n+"글자 지워주세요."; }, + formatSelectionTooBig: function (limit) { return "최대 "+limit+"개까지만 선택하실 수 있습니다."; }, + formatLoadMore: function (pageNumber) { return "불러오는 중…"; }, + formatSearching: function () { return "검색 중…"; } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_lt.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_lt.js new file mode 100644 index 0000000..2e2f950 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_lt.js @@ -0,0 +1,24 @@ +/** + * Select2 Lithuanian translation. + * + * @author CRONUS Karmalakas + * @author Uriy Efremochkin + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Atitikmenų nerasta"; }, + formatInputTooShort: function (input, min) { return "Įrašykite dar" + character(min - input.length); }, + formatInputTooLong: function (input, max) { return "Pašalinkite" + character(input.length - max); }, + formatSelectionTooBig: function (limit) { + return "Jūs galite pasirinkti tik " + limit + " element" + ((limit%100 > 9 && limit%100 < 21) || limit%10 == 0 ? "ų" : limit%10 > 1 ? "us" : "ą"); + }, + formatLoadMore: function (pageNumber) { return "Kraunama daugiau rezultatų…"; }, + formatSearching: function () { return "Ieškoma…"; } + }); + + function character (n) { + return " " + n + " simbol" + ((n%100 > 9 && n%100 < 21) || n%10 == 0 ? "ių" : n%10 > 1 ? "ius" : "į"); + } +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_lv.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_lv.js new file mode 100644 index 0000000..b300ec7 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_lv.js @@ -0,0 +1,17 @@ +/** + * Select2 Latvian translation. + * + * @author Uriy Efremochkin + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Sakritību nav"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Lūdzu ievadiet vēl " + n + " simbol" + (n == 11 ? "us" : n%10 == 1 ? "u" : "us"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Lūdzu ievadiet par " + n + " simbol" + (n == 11 ? "iem" : n%10 == 1 ? "u" : "iem") + " mazāk"; }, + formatSelectionTooBig: function (limit) { return "Jūs varat izvēlēties ne vairāk kā " + limit + " element" + (limit == 11 ? "us" : limit%10 == 1 ? "u" : "us"); }, + formatLoadMore: function (pageNumber) { return "Datu ielāde…"; }, + formatSearching: function () { return "Meklēšana…"; } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_mk.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_mk.js new file mode 100644 index 0000000..513562c --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_mk.js @@ -0,0 +1,17 @@ +/** + * Select2 Macedonian translation. + * + * Author: Marko Aleksic + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Нема пронајдено совпаѓања"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Ве молиме внесете уште " + n + " карактер" + (n == 1 ? "" : "и"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Ве молиме внесете " + n + " помалку карактер" + (n == 1? "" : "и"); }, + formatSelectionTooBig: function (limit) { return "Можете да изберете само " + limit + " ставк" + (limit == 1 ? "а" : "и"); }, + formatLoadMore: function (pageNumber) { return "Вчитување резултати…"; }, + formatSearching: function () { return "Пребарување…"; } + }); +})(jQuery); \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_ms.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_ms.js new file mode 100644 index 0000000..262042a --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_ms.js @@ -0,0 +1,17 @@ +/** + * Select2 Malay translation. + * + * Author: Kepoweran + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Tiada padanan yang ditemui"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Sila masukkan " + n + " aksara lagi"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Sila hapuskan " + n + " aksara"; }, + formatSelectionTooBig: function (limit) { return "Anda hanya boleh memilih " + limit + " pilihan"; }, + formatLoadMore: function (pageNumber) { return "Sedang memuatkan keputusan…"; }, + formatSearching: function () { return "Mencari…"; } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_nl.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_nl.js new file mode 100644 index 0000000..5b5c415 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_nl.js @@ -0,0 +1,15 @@ +/** + * Select2 Dutch translation + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Geen resultaten gevonden"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Vul " + n + " karakter" + (n == 1? "" : "s") + " meer in"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Vul " + n + " karakter" + (n == 1? "" : "s") + " minder in"; }, + formatSelectionTooBig: function (limit) { return "Maximaal " + limit + " item" + (limit == 1 ? "" : "s") + " toegestaan"; }, + formatLoadMore: function (pageNumber) { return "Meer resultaten laden…"; }, + formatSearching: function () { return "Zoeken…"; } + }); +})(jQuery); \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_no.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_no.js new file mode 100644 index 0000000..ab61c08 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_no.js @@ -0,0 +1,18 @@ +/** + * Select2 Norwegian translation. + * + * Author: Torgeir Veimo + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Ingen treff"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Vennligst skriv inn " + n + (n>1 ? " flere tegn" : " tegn til"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Vennligst fjern " + n + " tegn"; }, + formatSelectionTooBig: function (limit) { return "Du kan velge maks " + limit + " elementer"; }, + formatLoadMore: function (pageNumber) { return "Laster flere resultater…"; }, + formatSearching: function () { return "Søker…"; } + }); +})(jQuery); + diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_pl.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_pl.js new file mode 100644 index 0000000..75054e7 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_pl.js @@ -0,0 +1,22 @@ +/** + * Select2 Polish translation. + * + * @author Jan Kondratowicz + * @author Uriy Efremochkin + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Brak wyników"; }, + formatInputTooShort: function (input, min) { return "Wpisz jeszcze" + character(min - input.length, "znak", "i"); }, + formatInputTooLong: function (input, max) { return "Wpisana fraza jest za długa o" + character(input.length - max, "znak", "i"); }, + formatSelectionTooBig: function (limit) { return "Możesz zaznaczyć najwyżej" + character(limit, "element", "y"); }, + formatLoadMore: function (pageNumber) { return "Ładowanie wyników…"; }, + formatSearching: function () { return "Szukanie…"; } + }); + + function character (n, word, pluralSuffix) { + return " " + n + " " + word + (n == 1 ? "" : n%10 < 5 && n%10 > 1 && (n%100 < 5 || n%100 > 20) ? pluralSuffix : "ów"); + } +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_pt-BR.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_pt-BR.js new file mode 100644 index 0000000..d60b182 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_pt-BR.js @@ -0,0 +1,15 @@ +/** + * Select2 Brazilian Portuguese translation + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Nenhum resultado encontrado"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Informe " + n + " caractere" + (n == 1? "" : "s"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Apague " + n + " caractere" + (n == 1? "" : "s"); }, + formatSelectionTooBig: function (limit) { return "Só é possível selecionar " + limit + " elemento" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "Carregando mais resultados…"; }, + formatSearching: function () { return "Buscando…"; } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_pt-PT.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_pt-PT.js new file mode 100644 index 0000000..cced7cf --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_pt-PT.js @@ -0,0 +1,15 @@ +/** + * Select2 Portuguese (Portugal) translation + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Nenhum resultado encontrado"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Introduza " + n + " car" + (n == 1 ? "ácter" : "acteres"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Apague " + n + " car" + (n == 1 ? "ácter" : "acteres"); }, + formatSelectionTooBig: function (limit) { return "Só é possível selecionar " + limit + " elemento" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "A carregar mais resultados…"; }, + formatSearching: function () { return "A pesquisar…"; } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_ro.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_ro.js new file mode 100644 index 0000000..87eca4c --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_ro.js @@ -0,0 +1,15 @@ +/** + * Select2 Romanian translation. + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Nu a fost găsit nimic"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Vă rugăm să introduceți incă " + n + " caracter" + (n == 1 ? "" : "e"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Vă rugăm să introduceți mai puțin de " + n + " caracter" + (n == 1? "" : "e"); }, + formatSelectionTooBig: function (limit) { return "Aveți voie să selectați cel mult " + limit + " element" + (limit == 1 ? "" : "e"); }, + formatLoadMore: function (pageNumber) { return "Se încarcă…"; }, + formatSearching: function () { return "Căutare…"; } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_rs.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_rs.js new file mode 100644 index 0000000..300c01b --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_rs.js @@ -0,0 +1,17 @@ +/** + * Select2 Serbian translation. + * + * @author Limon Monte + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Ništa nije pronađeno"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Ukucajte bar još " + n + " simbol" + (n % 10 == 1 && n % 100 != 11 ? "" : "a"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Obrišite " + n + " simbol" + (n % 10 == 1 && n % 100 != 11 ? "" : "a"); }, + formatSelectionTooBig: function (limit) { return "Možete izabrati samo " + limit + " stavk" + (limit % 10 == 1 && limit % 100 != 11 ? "u" : (limit % 10 >= 2 && limit % 10 <= 4 && (limit % 100 < 12 || limit % 100 > 14)? "e" : "i")); }, + formatLoadMore: function (pageNumber) { return "Preuzimanje još rezultata…"; }, + formatSearching: function () { return "Pretraga…"; } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_ru.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_ru.js new file mode 100644 index 0000000..0f45ce0 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_ru.js @@ -0,0 +1,21 @@ +/** + * Select2 Russian translation. + * + * @author Uriy Efremochkin + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Совпадений не найдено"; }, + formatInputTooShort: function (input, min) { return "Пожалуйста, введите еще" + character(min - input.length); }, + formatInputTooLong: function (input, max) { return "Пожалуйста, введите на" + character(input.length - max) + " меньше"; }, + formatSelectionTooBig: function (limit) { return "Вы можете выбрать не более " + limit + " элемент" + (limit%10 == 1 && limit%100 != 11 ? "а" : "ов"); }, + formatLoadMore: function (pageNumber) { return "Загрузка данных…"; }, + formatSearching: function () { return "Поиск…"; } + }); + + function character (n) { + return " " + n + " символ" + (n%10 < 5 && n%10 > 0 && (n%100 < 5 || n%100 > 20) ? n%10 > 1 ? "a" : "" : "ов"); + } +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_sk.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_sk.js new file mode 100644 index 0000000..772f304 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_sk.js @@ -0,0 +1,48 @@ +/** + * Select2 Slovak translation. + * + * Author: David Vallner + */ +(function ($) { + "use strict"; + // use text for the numbers 2 through 4 + var smallNumbers = { + 2: function(masc) { return (masc ? "dva" : "dve"); }, + 3: function() { return "tri"; }, + 4: function() { return "štyri"; } + } + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Nenašli sa žiadne položky"; }, + formatInputTooShort: function (input, min) { + var n = min - input.length; + if (n == 1) { + return "Prosím zadajte ešte jeden znak"; + } else if (n <= 4) { + return "Prosím zadajte ešte ďalšie "+smallNumbers[n](true)+" znaky"; + } else { + return "Prosím zadajte ešte ďalších "+n+" znakov"; + } + }, + formatInputTooLong: function (input, max) { + var n = input.length - max; + if (n == 1) { + return "Prosím zadajte o jeden znak menej"; + } else if (n <= 4) { + return "Prosím zadajte o "+smallNumbers[n](true)+" znaky menej"; + } else { + return "Prosím zadajte o "+n+" znakov menej"; + } + }, + formatSelectionTooBig: function (limit) { + if (limit == 1) { + return "Môžete zvoliť len jednu položku"; + } else if (limit <= 4) { + return "Môžete zvoliť najviac "+smallNumbers[limit](false)+" položky"; + } else { + return "Môžete zvoliť najviac "+limit+" položiek"; + } + }, + formatLoadMore: function (pageNumber) { return "Načítavajú sa ďalšie výsledky…"; }, + formatSearching: function () { return "Vyhľadávanie…"; } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_sv.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_sv.js new file mode 100644 index 0000000..d611189 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_sv.js @@ -0,0 +1,17 @@ +/** + * Select2 Swedish translation. + * + * Author: Jens Rantil + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Inga träffar"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Var god skriv in " + n + (n>1 ? " till tecken" : " tecken till"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Var god sudda ut " + n + " tecken"; }, + formatSelectionTooBig: function (limit) { return "Du kan max välja " + limit + " element"; }, + formatLoadMore: function (pageNumber) { return "Laddar fler resultat…"; }, + formatSearching: function () { return "Söker…"; } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_th.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_th.js new file mode 100644 index 0000000..df59bda --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_th.js @@ -0,0 +1,17 @@ +/** + * Select2 Thai translation. + * + * Author: Atsawin Chaowanakritsanakul + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "ไม่พบข้อมูล"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "โปรดพิมพ์เพิ่มอีก " + n + " ตัวอักษร"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "โปรดลบออก " + n + " ตัวอักษร"; }, + formatSelectionTooBig: function (limit) { return "คุณสามารถเลือกได้ไม่เกิน " + limit + " รายการ"; }, + formatLoadMore: function (pageNumber) { return "กำลังค้นข้อมูลเพิ่ม…"; }, + formatSearching: function () { return "กำลังค้นข้อมูล…"; } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_tr.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_tr.js new file mode 100644 index 0000000..f834dad --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_tr.js @@ -0,0 +1,17 @@ +/** + * Select2 Turkish translation. + * + * Author: Salim KAYABAŞI + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Sonuç bulunamadı"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "En az " + n + " karakter daha girmelisiniz"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return n + " karakter azaltmalısınız"; }, + formatSelectionTooBig: function (limit) { return "Sadece " + limit + " seçim yapabilirsiniz"; }, + formatLoadMore: function (pageNumber) { return "Daha fazla…"; }, + formatSearching: function () { return "Aranıyor…"; } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_uk.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_uk.js new file mode 100644 index 0000000..6b22e8f --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_uk.js @@ -0,0 +1,22 @@ +/** + * Select2 Ukrainian translation. + * + * @author bigmihail + * @author Uriy Efremochkin + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Нічого не знайдено"; }, + formatInputTooShort: function (input, min) { return "Введіть буль ласка ще" + character(min - input.length, "символ"); }, + formatInputTooLong: function (input, max) { return "Введіть буль ласка на" + character(input.length - max, "символ") + " менше"; }, + formatSelectionTooBig: function (limit) { return "Ви можете вибрати лише" + character(limit, "елемент"); }, + formatLoadMore: function (pageNumber) { return "Завантаження даних…"; }, + formatSearching: function () { return "Пошук…"; } + }); + + function character (n, word) { + return " " + n + " " + word + (n%10 < 5 && n%10 > 0 && (n%100 < 5 || n%100 > 19) ? n%10 > 1 ? "и" : "" : "ів"); + } +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_vi.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_vi.js new file mode 100644 index 0000000..5dbc275 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_vi.js @@ -0,0 +1,18 @@ +/** + * Select2 Vietnamese translation. + * + * Author: Long Nguyen + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Không tìm thấy kết quả"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Vui lòng nhập nhiều hơn " + n + " ký tự" + (n == 1 ? "" : "s"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Vui lòng nhập ít hơn " + n + " ký tự" + (n == 1? "" : "s"); }, + formatSelectionTooBig: function (limit) { return "Chỉ có thể chọn được " + limit + " tùy chọn" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "Đang lấy thêm kết quả…"; }, + formatSearching: function () { return "Đang tìm…"; } + }); +})(jQuery); + diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_zh-CN.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_zh-CN.js new file mode 100644 index 0000000..6add3c5 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_zh-CN.js @@ -0,0 +1,14 @@ +/** + * Select2 Chinese translation + */ +(function ($) { + "use strict"; + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "没有找到匹配项"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "请再输入" + n + "个字符";}, + formatInputTooLong: function (input, max) { var n = input.length - max; return "请删掉" + n + "个字符";}, + formatSelectionTooBig: function (limit) { return "你只能选择最多" + limit + "项"; }, + formatLoadMore: function (pageNumber) { return "加载结果中…"; }, + formatSearching: function () { return "搜索中…"; } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2_locale_zh-TW.js b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_zh-TW.js new file mode 100644 index 0000000..f072381 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/js/select2/select2_locale_zh-TW.js @@ -0,0 +1,14 @@ +/** + * Select2 Traditional Chinese translation + */ +(function ($) { + "use strict"; + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "沒有找到相符的項目"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "請再輸入" + n + "個字元";}, + formatInputTooLong: function (input, max) { var n = input.length - max; return "請刪掉" + n + "個字元";}, + formatSelectionTooBig: function (limit) { return "你只能選擇最多" + limit + "項"; }, + formatLoadMore: function (pageNumber) { return "載入中…"; }, + formatSearching: function () { return "搜尋中…"; } + }); +})(jQuery); diff --git a/themes/fruitful/inc/metaboxes/js/select2/select2x2.png b/themes/fruitful/inc/metaboxes/js/select2/select2x2.png new file mode 100644 index 0000000..4bdd5c9 Binary files /dev/null and b/themes/fruitful/inc/metaboxes/js/select2/select2x2.png differ diff --git a/themes/fruitful/inc/metaboxes/style.css b/themes/fruitful/inc/metaboxes/style.css new file mode 100644 index 0000000..48ac5e8 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/style.css @@ -0,0 +1,682 @@ +/** + * CMB Styling + */ +table.cmb_metabox { + clear: both; +} + +table.cmb_metabox > tr:first-of-type > td, +table.cmb_metabox > tr:first-of-type > th, +table.cmb_metabox tbody > tr:first-of-type > td, +table.cmb_metabox tbody > tr:first-of-type > th, +.post-php table.cmb_metabox .cmb-nested-table td, +.post-new-php table.cmb_metabox .cmb-nested-table td, +.post-php table.cmb_metabox .repeatable-group th, +.post-new-php table.cmb_metabox .repeatable-group th, +.post-php table.cmb_metabox .repeatable-group:first-of-type, +.post-new-php table.cmb_metabox .repeatable-group:first-of-type { + border: 0; +} + +.post-php table.cmb_metabox td, +.post-new-php table.cmb_metabox td, +.post-php table.cmb_metabox th, +.post-new-php table.cmb_metabox th, +.post-php table.cmb_metabox .repeatable-group, +.post-new-php table.cmb_metabox .repeatable-group, +.post-php table.cmb_metabox .repeatable-group, +.post-new-php table.cmb_metabox .repeatable-group { + border-top: 1px solid #E9E9E9; + padding: 10px 10px 10px 0; +} + +.repeatable-group th { + padding: 5px; +} + +.repeatable-group .shift-rows { + text-decoration: none; + margin-right: 5px; + font-size: 1.2em; +} + +.remove-row .shift-rows .order-up, +.remove-row .shift-rows .order-down { + width:20px; + height:20px; + display:block; +} + +.remove-row .shift-rows .order-up { + background:url("images/arrow-up.png") no-repeat 0 0 transparent; +} + +.remove-row .shift-rows .order-down { + background:url("images/arrow-down.png") no-repeat 0 0 transparent; +} + +.form-table.cmb_metabox th span.description { + display: block; + font-weight: 400; + display: block; + color: #666; + padding:2px 0 0 0; +} + +.repeatable-group .cmb_upload_button { + float: right; + margin: 0 32px 0 0; +} + +table.cmb_metabox .cmb-type-file td .cmb_upload_button { + margin-bottom:10px; +} + +#poststuff .repeatable-group h2 { + margin: 0; +} + +.post-php table.cmb_metabox th, .post-new-php table.cmb_metabox th { + text-align: left; + font-weight:bold; +} + +.post-php table.cmb_metabox table th, .post-new-php table.cmb_metabox table th { + text-align: left; +} + +table.cmb_metabox th label { + margin-top:5px; + display:block +} + +p.cmb_metabox_description { + color: #AAA; + font-style: italic; + margin: 2px 0 !important +} + +span.cmb_metabox_description { + color: #AAA; + font-style: italic +} + +table.cmb_metabox input[type="email"], +table.cmb_metabox input[type="number"], +table.cmb_metabox input[type="password"], +table.cmb_metabox input[type="search"], +table.cmb_metabox input[type="tel"], +table.cmb_metabox input[type="text"], +table.cmb_metabox input[type="url"], +table.cmb_metabox select, +table.cmb_metabox textarea { + background-color: #F1F1F1; + border: 1px solid; + border-color: #CCC #E6E6E6 #E6E6E6 #CCC; + padding: 4px; + font-family: "Lucida Grande","Lucida Sans Unicode",Arial,Verdana,sans-serif; + font-size: 12px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + border-style: solid; + border-width: 1px; + color: #808080; + line-height: 18px; +} + + +table.cmb_metabox .cmb-type-file td .cmb_upload_button { + float:right; +} + +table.cmb_metabox input, table.cmb_metabox textarea { + font-size:14px; + padding: 5px; +} + +table.cmb_metabox input[type=text], table.cmb_metabox textarea { + width: 97%; +} + +table.cmb_metabox textarea.cmb_textarea_code { + font-family: Consolas,Monaco,monospace; + line-height: 16px; +} + +table.cmb_metabox input.cmb_text_small { + width: 100px; + margin-right: 15px +} + +table.cmb_metabox input.cmb_timepicker { + width: 100px; + margin-right: 15px +} + +table.cmb_metabox input.cmb_text_money { + width: 90px; + margin-right: 15px +} + +table.cmb_metabox input.cmb_text_medium { + width: 230px; + margin-right: 15px +} + +table.cmb_metabox input.cmb_upload_file { + width: 65%; +} + +table.cmb_metabox input.ed_button{ + padding:2px 4px +} + +table.cmb_metabox li { + font-size:14px; + margin: 1px 0 5px 0; + line-height: 16px; +} + +table.cmb_metabox ul { + padding-top:5px; + margin: 0; +} + +table.cmb_metabox select { + font-size:14px; + margin-top: 3px +} + +table.cmb_metabox input:hover, +table.cmb_metabox textarea:hover { + background-color: #F9F9F9; +} + +table.cmb_metabox input:focus, +table.cmb_metabox textarea:focus { + background-color: #FFFFFF; + border-color: #CCCCCC #E6E6E6 #E6E6E6 #CCCCCC; + outline: 0 none; +} + + + +.cmb_metabox_title { + margin: 0 0 5px 0; + padding: 5px 0 0 0; +} + +.edit-tags-php .cmb_metabox_title, .profile-php .cmb_metabox_title, .user-edit-php .cmb_metabox_title { + margin-left: -10px; +} + +.cmb-inline ul { + padding: 4px 0 0 0 +} + +.cmb-inline li {display: inline-block; + padding-right: 18px +} + +table.cmb_metabox input[type="radio"] { + margin: 0 5px 0 0; + padding: 0 +} + +table.cmb_metabox input[type="checkbox"] { + margin: 0 5px 0 0; + padding: 0 +} + +table.cmb_metabox .mceLayout { + border:1px solid #DFDFDF !important +} + +table.cmb_metabox .mceIframeContainer { + background:#FFF +} + +table.cmb_metabox .meta_mce { + width:97% +} + +table.cmb_metabox .meta_mce textarea { + width:100% +} + +table.cmb_metabox .cmb_media_status { + margin: 10px 0 0 0 +} + +table.cmb_metabox .cmb_media_status .img_status { + clear: none; + float: left; + display: inline-block; + margin-right: 10px; + width: auto; +} + +table.cmb_metabox .cmb-type-file_list .cmb_media_status .img_status { + clear: none; + float: left; + margin-right: 10px; + width: auto; +} + +table.cmb_metabox .cmb_media_status .img_status, table.cmb_metabox .cmb_media_status .embed_status { + position: relative; +} + +table.cmb_metabox .cmb_media_status .img_status img, table.cmb_metabox .cmb_media_status .embed_status { + border:1px solid #DFDFDF; + background: #FAFAFA; + max-width:350px; + padding: 5px; + -moz-border-radius: 2px; + border-radius: 2px +} + +table.cmb_metabox .cmb_media_status .embed_status { + float: left; + max-width:800px +} + +table.cmb_metabox .cmb_media_status .img_status .cmb_remove_file_button, table.cmb_metabox .cmb_media_status .embed_status .cmb_remove_file_button { + text-indent: -9999px; + background: url(images/ico-delete.png); + width: 16px; + height: 16px; + position: absolute; + top: -5px; + left: -5px +} + +table.cmb_metabox .attach_list li { + clear: both; + display: inline-block; + margin-bottom: 25px; + width: 100%; +} + +table.cmb_metabox .attach_list li img { + float: left; + margin-right: 10px; +} + +/** + * Sidebar placement adjustments + */ +.inner-sidebar table.cmb_metabox input[type=text], +#side-sortables table.cmb_metabox input[type=text], +table.cmb_metabox textarea { + width: 97%; +} + +.inner-sidebar table.cmb_metabox .cmb_media_status .img_status img, +#side-sortables table.cmb_metabox .cmb_media_status .img_status img, +.inner-sidebar table.cmb_metabox .cmb_media_status .embed_status img, +#side-sortables table.cmb_metabox .cmb_media_status .embed_status img { + width: 90%; +} + +.inner-sidebar table.cmb_metabox label, +#side-sortables table.cmb_metabox label { + display: block; + font-weight: bold; + padding: 0 0 5px; +} + +.inner-sidebar table.cmb_metabox .cmb_list label, +#side-sortables table.cmb_metabox .cmb_list label { + display: inline; + font-weight: normal; +} + +.inner-sidebar table.cmb_metabox .cmb_metabox_description, +#side-sortables table.cmb_metabox .cmb_metabox_description { + display: block; + padding: 7px 0 0; +} + +.inner-sidebar table.cmb_metabox .cmb_metabox_title, +#side-sortables table.cmb_metabox .cmb_metabox_title { + font-size: 1.2em; + font-style: italic; +} + +.postbox table.cmb_metabox .cmb-spinner { + float: left; +} + +/** + * Color picker + */ +table.cmb_metabox .wp-color-result, table.cmb_metabox .wp-picker-input-wrap { + vertical-align: middle; +} + +table.cmb_metabox .wp-color-result, table.cmb_metabox .wp-picker-container { + margin: 0 10px 0 0; +} + + +/** + * Timepicker + */ +div.time-picker { + position: absolute; + height: 191px; + width:6em; + /* needed for IE */overflow: auto; + background: #fff; + border: 1px solid #aaa; + z-index: 99; + margin: 0 +} + +div.time-picker-12hours { + width:8em; /* needed for IE */ +} + +div.time-picker ul { + list-style-type: none; + margin: 0; + padding: 0; +} + +div.time-picker li { + cursor: pointer; + height: 10px; + font: 14px/1 Helvetica, Arial, sans-serif; + padding: 4px 3px; +} + +div.time-picker li.selected { + background: #0063CE; + color: #fff; +} + +/** + * jQuery UI CSS Framework 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + */ + .cmb_element .ui-helper-hidden { display: none; } + .cmb_element .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } + .cmb_element .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } + .cmb_element .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } + .cmb_element .ui-helper-clearfix { display: inline-block; } + * html .ui-helper-clearfix { height:1%; } + .cmb_element .ui-helper-clearfix { display:block; } + .cmb_element .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + .cmb_element .ui-state-disabled { cursor: default !important; } + .cmb_element .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + .cmb_element .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + .cmb_element .ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; } + .cmb_element .ui-widget .ui-widget { font-size: 1em; } + .cmb_element .ui-widget input, .cmb_element .ui-widget select, .cmb_element .ui-widget textarea, .cmb_element .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; } + .cmb_element .ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; } + .cmb_element .ui-widget-content a { color: #222222; } + .cmb_element .ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; } + .cmb_element .ui-widget-header a { color: #222222; } + .cmb_element .ui-state-default, .cmb_element .ui-widget-content .ui-state-default, .cmb_element .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; } + .cmb_element .ui-state-default a, .cmb_element .ui-state-default a:link, .cmb_element .ui-state-default a:visited { color: #555555; text-decoration: none; } + .cmb_element .ui-state-hover, .cmb_element .ui-widget-content .ui-state-hover, .cmb_element .ui-widget-header .ui-state-hover, .cmb_element .ui-state-focus, .cmb_element .ui-widget-content .ui-state-focus, .cmb_element .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; } + .cmb_element .ui-state-hover a, .cmb_element .ui-state-hover a:hover { color: #212121; text-decoration: none; } + .cmb_element .ui-state-active, .cmb_element .ui-widget-content .ui-state-active, .cmb_element .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; } + .cmb_element .ui-state-active a, .cmb_element .ui-state-active a:link, .cmb_element .ui-state-active a:visited { color: #212121; text-decoration: none; } + .cmb_element .ui-widget :active { outline: none; } + .cmb_element .ui-state-highlight, .cmb_element .ui-widget-content .ui-state-highlight, .cmb_element .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; } + .cmb_element .ui-state-highlight a, .cmb_element .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } + .cmb_element .ui-state-error, .cmb_element .ui-widget-content .ui-state-error, .cmb_element .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; } + .cmb_element .ui-state-error a, .cmb_element .ui-widget-content .ui-state-error a, .cmb_element .ui-widget-header .ui-state-error a { color: #cd0a0a; } + .cmb_element .ui-state-error-text, .cmb_element .ui-widget-content .ui-state-error-text, .cmb_element .ui-widget-header .ui-state-error-text { color: #cd0a0a; } + .cmb_element .ui-priority-primary, .cmb_element .ui-widget-content .ui-priority-primary, .cmb_element .ui-widget-header .ui-priority-primary { font-weight: bold; } + .cmb_element .ui-priority-secondary, .cmb_element .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } + .cmb_element .ui-state-disabled, .cmb_element .ui-widget-content .ui-state-disabled, .cmb_element .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } + .cmb_element .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } + .cmb_element .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } + .cmb_element .ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } + .cmb_element .ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); } + .cmb_element .ui-state-hover .ui-icon, .cmb_element .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } + .cmb_element .ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } + .cmb_element .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); } + .cmb_element .ui-state-error .ui-icon, .cmb_element .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); } + .cmb_element .ui-icon-carat-1-n { background-position: 0 0; } + .cmb_element .ui-icon-carat-1-ne { background-position: -16px 0; } + .cmb_element .ui-icon-carat-1-e { background-position: -32px 0; } + .cmb_element .ui-icon-carat-1-se { background-position: -48px 0; } + .cmb_element .ui-icon-carat-1-s { background-position: -64px 0; } + .cmb_element .ui-icon-carat-1-sw { background-position: -80px 0; } + .cmb_element .ui-icon-carat-1-w { background-position: -96px 0; } + .cmb_element .ui-icon-carat-1-nw { background-position: -112px 0; } + .cmb_element .ui-icon-carat-2-n-s { background-position: -128px 0; } + .cmb_element .ui-icon-carat-2-e-w { background-position: -144px 0; } + .cmb_element .ui-icon-triangle-1-n { background-position: 0 -16px; } + .cmb_element .ui-icon-triangle-1-ne { background-position: -16px -16px; } + .cmb_element .ui-icon-triangle-1-e { background-position: -32px -16px; } + .cmb_element .ui-icon-triangle-1-se { background-position: -48px -16px; } + .cmb_element .ui-icon-triangle-1-s { background-position: -64px -16px; } + .cmb_element .ui-icon-triangle-1-sw { background-position: -80px -16px; } + .cmb_element .ui-icon-triangle-1-w { background-position: -96px -16px; } + .cmb_element .ui-icon-triangle-1-nw { background-position: -112px -16px; } + .cmb_element .ui-icon-triangle-2-n-s { background-position: -128px -16px; } + .cmb_element .ui-icon-triangle-2-e-w { background-position: -144px -16px; } + .cmb_element .ui-icon-arrow-1-n { background-position: 0 -32px; } + .cmb_element .ui-icon-arrow-1-ne { background-position: -16px -32px; } + .cmb_element .ui-icon-arrow-1-e { background-position: -32px -32px; } + .cmb_element .ui-icon-arrow-1-se { background-position: -48px -32px; } + .cmb_element .ui-icon-arrow-1-s { background-position: -64px -32px; } + .cmb_element .ui-icon-arrow-1-sw { background-position: -80px -32px; } + .cmb_element .ui-icon-arrow-1-w { background-position: -96px -32px; } + .cmb_element .ui-icon-arrow-1-nw { background-position: -112px -32px; } + .cmb_element .ui-icon-arrow-2-n-s { background-position: -128px -32px; } + .cmb_element .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } + .cmb_element .ui-icon-arrow-2-e-w { background-position: -160px -32px; } + .cmb_element .ui-icon-arrow-2-se-nw { background-position: -176px -32px; } + .cmb_element .ui-icon-arrowstop-1-n { background-position: -192px -32px; } + .cmb_element .ui-icon-arrowstop-1-e { background-position: -208px -32px; } + .cmb_element .ui-icon-arrowstop-1-s { background-position: -224px -32px; } + .cmb_element .ui-icon-arrowstop-1-w { background-position: -240px -32px; } + .cmb_element .ui-icon-arrowthick-1-n { background-position: 0 -48px; } + .cmb_element .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } + .cmb_element .ui-icon-arrowthick-1-e { background-position: -32px -48px; } + .cmb_element .ui-icon-arrowthick-1-se { background-position: -48px -48px; } + .cmb_element .ui-icon-arrowthick-1-s { background-position: -64px -48px; } + .cmb_element .ui-icon-arrowthick-1-sw { background-position: -80px -48px; } + .cmb_element .ui-icon-arrowthick-1-w { background-position: -96px -48px; } + .cmb_element .ui-icon-arrowthick-1-nw { background-position: -112px -48px; } + .cmb_element .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } + .cmb_element .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } + .cmb_element .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } + .cmb_element .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } + .cmb_element .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } + .cmb_element .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } + .cmb_element .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } + .cmb_element .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } + .cmb_element .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } + .cmb_element .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } + .cmb_element .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } + .cmb_element .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } + .cmb_element .ui-icon-arrowreturn-1-w { background-position: -64px -64px; } + .cmb_element .ui-icon-arrowreturn-1-n { background-position: -80px -64px; } + .cmb_element .ui-icon-arrowreturn-1-e { background-position: -96px -64px; } + .cmb_element .ui-icon-arrowreturn-1-s { background-position: -112px -64px; } + .cmb_element .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } + .cmb_element .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } + .cmb_element .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } + .cmb_element .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } + .cmb_element .ui-icon-arrow-4 { background-position: 0 -80px; } + .cmb_element .ui-icon-arrow-4-diag { background-position: -16px -80px; } + .cmb_element .ui-icon-extlink { background-position: -32px -80px; } + .cmb_element .ui-icon-newwin { background-position: -48px -80px; } + .cmb_element .ui-icon-refresh { background-position: -64px -80px; } + .cmb_element .ui-icon-shuffle { background-position: -80px -80px; } + .cmb_element .ui-icon-transfer-e-w { background-position: -96px -80px; } + .cmb_element .ui-icon-transferthick-e-w { background-position: -112px -80px; } + .cmb_element .ui-icon-folder-collapsed { background-position: 0 -96px; } + .cmb_element .ui-icon-folder-open { background-position: -16px -96px; } + .cmb_element .ui-icon-document { background-position: -32px -96px; } + .cmb_element .ui-icon-document-b { background-position: -48px -96px; } + .cmb_element .ui-icon-note { background-position: -64px -96px; } + .cmb_element .ui-icon-mail-closed { background-position: -80px -96px; } + .cmb_element .ui-icon-mail-open { background-position: -96px -96px; } + .cmb_element .ui-icon-suitcase { background-position: -112px -96px; } + .cmb_element .ui-icon-comment { background-position: -128px -96px; } + .cmb_element .ui-icon-person { background-position: -144px -96px; } + .cmb_element .ui-icon-print { background-position: -160px -96px; } + .cmb_element .ui-icon-trash { background-position: -176px -96px; } + .cmb_element .ui-icon-locked { background-position: -192px -96px; } + .cmb_element .ui-icon-unlocked { background-position: -208px -96px; } + .cmb_element .ui-icon-bookmark { background-position: -224px -96px; } + .cmb_element .ui-icon-tag { background-position: -240px -96px; } + .cmb_element .ui-icon-home { background-position: 0 -112px; } + .cmb_element .ui-icon-flag { background-position: -16px -112px; } + .cmb_element .ui-icon-calendar { background-position: -32px -112px; } + .cmb_element .ui-icon-cart { background-position: -48px -112px; } + .cmb_element .ui-icon-pencil { background-position: -64px -112px; } + .cmb_element .ui-icon-clock { background-position: -80px -112px; } + .cmb_element .ui-icon-disk { background-position: -96px -112px; } + .cmb_element .ui-icon-calculator { background-position: -112px -112px; } + .cmb_element .ui-icon-zoomin { background-position: -128px -112px; } + .cmb_element .ui-icon-zoomout { background-position: -144px -112px; } + .cmb_element .ui-icon-search { background-position: -160px -112px; } + .cmb_element .ui-icon-wrench { background-position: -176px -112px; } + .cmb_element .ui-icon-gear { background-position: -192px -112px; } + .cmb_element .ui-icon-heart { background-position: -208px -112px; } + .cmb_element .ui-icon-star { background-position: -224px -112px; } + .cmb_element .ui-icon-link { background-position: -240px -112px; } + .cmb_element .ui-icon-cancel { background-position: 0 -128px; } + .cmb_element .ui-icon-plus { background-position: -16px -128px; } + .cmb_element .ui-icon-plusthick { background-position: -32px -128px; } + .cmb_element .ui-icon-minus { background-position: -48px -128px; } + .cmb_element .ui-icon-minusthick { background-position: -64px -128px; } + .cmb_element .ui-icon-close { background-position: -80px -128px; } + .cmb_element .ui-icon-closethick { background-position: -96px -128px; } + .cmb_element .ui-icon-key { background-position: -112px -128px; } + .cmb_element .ui-icon-lightbulb { background-position: -128px -128px; } + .cmb_element .ui-icon-scissors { background-position: -144px -128px; } + .cmb_element .ui-icon-clipboard { background-position: -160px -128px; } + .cmb_element .ui-icon-copy { background-position: -176px -128px; } + .cmb_element .ui-icon-contact { background-position: -192px -128px; } + .cmb_element .ui-icon-image { background-position: -208px -128px; } + .cmb_element .ui-icon-video { background-position: -224px -128px; } + .cmb_element .ui-icon-script { background-position: -240px -128px; } + .cmb_element .ui-icon-alert { background-position: 0 -144px; } + .cmb_element .ui-icon-info { background-position: -16px -144px; } + .cmb_element .ui-icon-notice { background-position: -32px -144px; } + .cmb_element .ui-icon-help { background-position: -48px -144px; } + .cmb_element .ui-icon-check { background-position: -64px -144px; } + .cmb_element .ui-icon-bullet { background-position: -80px -144px; } + .cmb_element .ui-icon-radio-off { background-position: -96px -144px; } + .cmb_element .ui-icon-radio-on { background-position: -112px -144px; } + .cmb_element .ui-icon-pin-w { background-position: -128px -144px; } + .cmb_element .ui-icon-pin-s { background-position: -144px -144px; } + .cmb_element .ui-icon-play { background-position: 0 -160px; } + .cmb_element .ui-icon-pause { background-position: -16px -160px; } + .cmb_element .ui-icon-seek-next { background-position: -32px -160px; } + .cmb_element .ui-icon-seek-prev { background-position: -48px -160px; } + .cmb_element .ui-icon-seek-end { background-position: -64px -160px; } + .cmb_element .ui-icon-seek-start { background-position: -80px -160px; } + .cmb_element .ui-icon-seek-first { background-position: -80px -160px; } + .cmb_element .ui-icon-stop { background-position: -96px -160px; } + .cmb_element .ui-icon-eject { background-position: -112px -160px; } + .cmb_element .ui-icon-volume-off { background-position: -128px -160px; } + .cmb_element .ui-icon-volume-on { background-position: -144px -160px; } + .cmb_element .ui-icon-power { background-position: 0 -176px; } + .cmb_element .ui-icon-signal-diag { background-position: -16px -176px; } + .cmb_element .ui-icon-signal { background-position: -32px -176px; } + .cmb_element .ui-icon-battery-0 { background-position: -48px -176px; } + .cmb_element .ui-icon-battery-1 { background-position: -64px -176px; } + .cmb_element .ui-icon-battery-2 { background-position: -80px -176px; } + .cmb_element .ui-icon-battery-3 { background-position: -96px -176px; } + .cmb_element .ui-icon-circle-plus { background-position: 0 -192px; } + .cmb_element .ui-icon-circle-minus { background-position: -16px -192px; } + .cmb_element .ui-icon-circle-close { background-position: -32px -192px; } + .cmb_element .ui-icon-circle-triangle-e { background-position: -48px -192px; } + .cmb_element .ui-icon-circle-triangle-s { background-position: -64px -192px; } + .cmb_element .ui-icon-circle-triangle-w { background-position: -80px -192px; } + .cmb_element .ui-icon-circle-triangle-n { background-position: -96px -192px; } + .cmb_element .ui-icon-circle-arrow-e { background-position: -112px -192px; } + .cmb_element .ui-icon-circle-arrow-s { background-position: -128px -192px; } + .cmb_element .ui-icon-circle-arrow-w { background-position: -144px -192px; } + .cmb_element .ui-icon-circle-arrow-n { background-position: -160px -192px; } + .cmb_element .ui-icon-circle-zoomin { background-position: -176px -192px; } + .cmb_element .ui-icon-circle-zoomout { background-position: -192px -192px; } + .cmb_element .ui-icon-circle-check { background-position: -208px -192px; } + .cmb_element .ui-icon-circlesmall-plus { background-position: 0 -208px; } + .cmb_element .ui-icon-circlesmall-minus { background-position: -16px -208px; } + .cmb_element .ui-icon-circlesmall-close { background-position: -32px -208px; } + .cmb_element .ui-icon-squaresmall-plus { background-position: -48px -208px; } + .cmb_element .ui-icon-squaresmall-minus { background-position: -64px -208px; } + .cmb_element .ui-icon-squaresmall-close { background-position: -80px -208px; } + .cmb_element .ui-icon-grip-dotted-vertical { background-position: 0 -224px; } + .cmb_element .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } + .cmb_element .ui-icon-grip-solid-vertical { background-position: -32px -224px; } + .cmb_element .ui-icon-grip-solid-horizontal { background-position: -48px -224px; } + .cmb_element .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } + .cmb_element .ui-icon-grip-diagonal-se { background-position: -80px -224px; } + .cmb_element .ui-corner-all, .cmb_element .ui-corner-top, .cmb_element .ui-corner-left, .cmb_element .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; } + .cmb_element .ui-corner-all, .cmb_element .ui-corner-top, .cmb_element .ui-corner-right, .cmb_element .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; } + .cmb_element .ui-corner-all, .cmb_element .ui-corner-bottom, .cmb_element .ui-corner-left, .cmb_element .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } + .cmb_element .ui-corner-all, .cmb_element .ui-corner-bottom, .cmb_element .ui-corner-right, .cmb_element .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } + .cmb_element .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); } + .cmb_element .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; } + .cmb_element .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } + .cmb_element .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } + .cmb_element .ui-datepicker .ui-datepicker-prev, .cmb_element .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } + .cmb_element .ui-datepicker .ui-datepicker-prev-hover, .cmb_element .ui-datepicker .ui-datepicker-next-hover { top: 1px; } + .cmb_element .ui-datepicker .ui-datepicker-prev { left:2px; } + .cmb_element .ui-datepicker .ui-datepicker-next { right:2px; } + .cmb_element .ui-datepicker .ui-datepicker-prev-hover { left:1px; } + .cmb_element .ui-datepicker .ui-datepicker-next-hover { right:1px; } + .cmb_element .ui-datepicker .ui-datepicker-prev span, .cmb_element .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } + .cmb_element .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } + .cmb_element .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } + .cmb_element .ui-datepicker select.ui-datepicker-month-year {width: 100%;} + .cmb_element .ui-datepicker select.ui-datepicker-month, + .cmb_element .ui-datepicker select.ui-datepicker-year { width: 49%;} + .cmb_element .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } + .cmb_element .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } + .cmb_element .ui-datepicker td { border: 0; padding: 1px; } + .cmb_element .ui-datepicker td span, .cmb_element .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } + .cmb_element .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } + .cmb_element .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } + .cmb_element .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } + .cmb_element .ui-datepicker.ui-datepicker-multi { width:auto; } + .cmb_element .ui-datepicker-multi .ui-datepicker-group { float:left; } + .cmb_element .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } + .cmb_element .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } + .cmb_element .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } + .cmb_element .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } + .cmb_element .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } + .cmb_element .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } + .cmb_element .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } + .cmb_element .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; } + .cmb_element .ui-datepicker-rtl { direction: rtl; } + .cmb_element .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } + .cmb_element .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } + .cmb_element .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } + .cmb_element .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } + .cmb_element .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } + .cmb_element .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } + .cmb_element .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } + .cmb_element .ui-datepicker-rtl .ui-datepicker-group { float:right; } + .cmb_element .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } + .cmb_element .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } + .cmb_element .ui-datepicker-cover { + display: none; /*sorry for IE5*/ + display/**/: block; /*sorry for IE5*/ + position: absolute; /*must have*/ + z-index: -1; /*must have*/ + filter: mask(); /*must have*/ + top: -4px; /*must have*/ + left: -4px; /*must have*/ + width: 200px; /*must have*/ + height: 200px; /*must have*/ + } \ No newline at end of file diff --git a/themes/fruitful/inc/metaboxes/style.min.css b/themes/fruitful/inc/metaboxes/style.min.css new file mode 100644 index 0000000..9cd8fa6 --- /dev/null +++ b/themes/fruitful/inc/metaboxes/style.min.css @@ -0,0 +1,5 @@ +/** + * CMB Styling + */ +table.cmb_metabox {clear: both; } table.cmb_metabox > tr:first-of-type > td, table.cmb_metabox > tr:first-of-type > th, table.cmb_metabox tbody > tr:first-of-type > td, table.cmb_metabox tbody > tr:first-of-type > th, .post-php table.cmb_metabox .cmb-nested-table td, .post-new-php table.cmb_metabox .cmb-nested-table td, .post-php table.cmb_metabox .repeatable-group th, .post-new-php table.cmb_metabox .repeatable-group th, .post-php table.cmb_metabox .repeatable-group:first-of-type, .post-new-php table.cmb_metabox .repeatable-group:first-of-type {border: 0; } .post-php table.cmb_metabox td, .post-new-php table.cmb_metabox td, .post-php table.cmb_metabox th, .post-new-php table.cmb_metabox th, .post-php table.cmb_metabox .repeatable-group, .post-new-php table.cmb_metabox .repeatable-group, .post-php table.cmb_metabox .repeatable-group, .post-new-php table.cmb_metabox .repeatable-group {border-top: 1px solid #E9E9E9;padding: 10px 10px 10px 0; } .repeatable-group th {padding: 5px; } .repeatable-group .shift-rows {text-decoration: none;margin-right: 5px;font-size: 1.2em; } .remove-row .shift-rows .order-up, .remove-row .shift-rows .order-down {width:20px;height:20px;display:block; } .remove-row .shift-rows .order-up {background:url("images/arrow-up.png") no-repeat 0 0 transparent; } .remove-row .shift-rows .order-down {background:url("images/arrow-down.png") no-repeat 0 0 transparent; } .form-table.cmb_metabox th span.description {display: block;font-weight: 400;display: block;color: #666;padding:2px 0 0 0; } .repeatable-group .cmb_upload_button {float: right;margin: 0 32px 0 0; } table.cmb_metabox .cmb-type-file td .cmb_upload_button {margin-bottom:10px; } #poststuff .repeatable-group h2 {margin: 0; } .post-php table.cmb_metabox th, .post-new-php table.cmb_metabox th {text-align: left;font-weight:bold; } .post-php table.cmb_metabox table th, .post-new-php table.cmb_metabox table th {text-align: left; } table.cmb_metabox th label {margin-top:5px;display:block } p.cmb_metabox_description {color: #AAA;font-style: italic;margin: 2px 0 !important } span.cmb_metabox_description {color: #AAA;font-style: italic } table.cmb_metabox input[type="email"], table.cmb_metabox input[type="number"], table.cmb_metabox input[type="password"], table.cmb_metabox input[type="search"], table.cmb_metabox input[type="tel"], table.cmb_metabox input[type="text"], table.cmb_metabox input[type="url"], table.cmb_metabox select, table.cmb_metabox textarea {background-color: #F1F1F1;border: 1px solid;border-color: #CCC #E6E6E6 #E6E6E6 #CCC;padding: 4px;font-family: "Lucida Grande","Lucida Sans Unicode",Arial,Verdana,sans-serif;font-size: 12px;-webkit-border-radius: 3px;-moz-border-radius: 3px;border-radius: 3px;border-style: solid;border-width: 1px;color: #808080;line-height: 18px; } table.cmb_metabox .cmb-type-file td .cmb_upload_button {float:right; } table.cmb_metabox input, table.cmb_metabox textarea {font-size:14px;padding: 5px; } table.cmb_metabox input[type=text], table.cmb_metabox textarea {width: 97%; } table.cmb_metabox textarea.cmb_textarea_code {font-family: Consolas,Monaco,monospace;line-height: 16px; } table.cmb_metabox input.cmb_text_small {width: 100px;margin-right: 15px } table.cmb_metabox input.cmb_timepicker {width: 100px;margin-right: 15px } table.cmb_metabox input.cmb_text_money {width: 90px;margin-right: 15px } table.cmb_metabox input.cmb_text_medium {width: 230px;margin-right: 15px } table.cmb_metabox input.cmb_upload_file {width: 65%; } table.cmb_metabox input.ed_button{padding:2px 4px } table.cmb_metabox li {font-size:14px;margin: 1px 0 5px 0;line-height: 16px; } table.cmb_metabox ul {padding-top:5px;margin: 0; } table.cmb_metabox select {font-size:14px;margin-top: 3px } table.cmb_metabox input:hover, table.cmb_metabox textarea:hover {background-color: #F9F9F9; } table.cmb_metabox input:focus, table.cmb_metabox textarea:focus {background-color: #FFFFFF;border-color: #CCCCCC #E6E6E6 #E6E6E6 #CCCCCC;outline: 0 none; } .cmb_metabox_title {margin: 0 0 5px 0;padding: 5px 0 0 0; } .edit-tags-php .cmb_metabox_title, .profile-php .cmb_metabox_title, .user-edit-php .cmb_metabox_title {margin-left: -10px; } .cmb-inline ul {padding: 4px 0 0 0 } .cmb-inline li {display: inline-block;padding-right: 18px } table.cmb_metabox input[type="radio"] {margin: 0 5px 0 0;padding: 0 } table.cmb_metabox input[type="checkbox"] {margin: 0 5px 0 0;padding: 0 } table.cmb_metabox .mceLayout {border:1px solid #DFDFDF !important } table.cmb_metabox .mceIframeContainer {background:#FFF } table.cmb_metabox .meta_mce {width:97% } table.cmb_metabox .meta_mce textarea {width:100% } table.cmb_metabox .cmb_media_status { margin: 10px 0 0 0 } table.cmb_metabox .cmb_media_status .img_status {clear: none;float: left;display: inline-block;margin-right: 10px;width: auto; } table.cmb_metabox .cmb-type-file_list .cmb_media_status .img_status {clear: none;float: left;margin-right: 10px;width: auto; } table.cmb_metabox .cmb_media_status .img_status, table.cmb_metabox .cmb_media_status .embed_status {position: relative; } table.cmb_metabox .cmb_media_status .img_status img, table.cmb_metabox .cmb_media_status .embed_status {border:1px solid #DFDFDF;background: #FAFAFA;max-width:350px;padding: 5px;-moz-border-radius: 2px;border-radius: 2px } table.cmb_metabox .cmb_media_status .embed_status {float: left;max-width:800px } table.cmb_metabox .cmb_media_status .img_status .cmb_remove_file_button, table.cmb_metabox .cmb_media_status .embed_status .cmb_remove_file_button {text-indent: -9999px;background: url(images/ico-delete.png);width: 16px;height: 16px;position: absolute;top: -5px;left: -5px } table.cmb_metabox .attach_list li {clear: both;display: inline-block;margin-bottom: 25px;width: 100%; } table.cmb_metabox .attach_list li img {float: left;margin-right: 10px; } /** * Sidebar placement adjustments */ .inner-sidebar table.cmb_metabox input[type=text], #side-sortables table.cmb_metabox input[type=text], table.cmb_metabox textarea { width: 97%; } .inner-sidebar table.cmb_metabox .cmb_media_status .img_status img, #side-sortables table.cmb_metabox .cmb_media_status .img_status img, .inner-sidebar table.cmb_metabox .cmb_media_status .embed_status img, #side-sortables table.cmb_metabox .cmb_media_status .embed_status img { width: 90%; } .inner-sidebar table.cmb_metabox label, #side-sortables table.cmb_metabox label { display: block; font-weight: bold; padding: 0 0 5px; } .inner-sidebar table.cmb_metabox .cmb_list label, #side-sortables table.cmb_metabox .cmb_list label { display: inline; font-weight: normal; } .inner-sidebar table.cmb_metabox .cmb_metabox_description, #side-sortables table.cmb_metabox .cmb_metabox_description { display: block; padding: 7px 0 0; } .inner-sidebar table.cmb_metabox .cmb_metabox_title, #side-sortables table.cmb_metabox .cmb_metabox_title { font-size: 1.2em; font-style: italic; } .postbox table.cmb_metabox .cmb-spinner { float: left; } /** * Color picker */ table.cmb_metabox .wp-color-result, table.cmb_metabox .wp-picker-input-wrap { vertical-align: middle; } table.cmb_metabox .wp-color-result, table.cmb_metabox .wp-picker-container { margin: 0 10px 0 0; } /** * Timepicker */ div.time-picker { position: absolute; height: 191px; width:6em; /* needed for IE */overflow: auto; background: #fff; border: 1px solid #aaa; z-index: 99; margin: 0 } div.time-picker-12hours { width:8em; /* needed for IE */ } div.time-picker ul { list-style-type: none; margin: 0; padding: 0; } div.time-picker li { cursor: pointer; height: 10px; font: 14px/1 Helvetica, Arial, sans-serif; padding: 4px 3px; } div.time-picker li.selected { background: #0063CE; color: #fff; } +.cmb_element .ui-helper-hidden { display: none; } .cmb_element .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } .cmb_element .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } .cmb_element .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } .cmb_element .ui-helper-clearfix { display: inline-block; } * html .ui-helper-clearfix { height:1%; } .cmb_element .ui-helper-clearfix { display:block; } .cmb_element .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } .cmb_element .ui-state-disabled { cursor: default !important; } .cmb_element .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } .cmb_element .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .cmb_element .ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; } .cmb_element .ui-widget .ui-widget { font-size: 1em; } .cmb_element .ui-widget input, .cmb_element .ui-widget select, .cmb_element .ui-widget textarea, .cmb_element .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; } .cmb_element .ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; } .cmb_element .ui-widget-content a { color: #222222; } .cmb_element .ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; } .cmb_element .ui-widget-header a { color: #222222; } .cmb_element .ui-state-default, .cmb_element .ui-widget-content .ui-state-default, .cmb_element .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; } .cmb_element .ui-state-default a, .cmb_element .ui-state-default a:link, .cmb_element .ui-state-default a:visited { color: #555555; text-decoration: none; } .cmb_element .ui-state-hover, .cmb_element .ui-widget-content .ui-state-hover, .cmb_element .ui-widget-header .ui-state-hover, .cmb_element .ui-state-focus, .cmb_element .ui-widget-content .ui-state-focus, .cmb_element .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; } .cmb_element .ui-state-hover a, .cmb_element .ui-state-hover a:hover { color: #212121; text-decoration: none; } .cmb_element .ui-state-active, .cmb_element .ui-widget-content .ui-state-active, .cmb_element .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; } .cmb_element .ui-state-active a, .cmb_element .ui-state-active a:link, .cmb_element .ui-state-active a:visited { color: #212121; text-decoration: none; } .cmb_element .ui-widget :active { outline: none; } .cmb_element .ui-state-highlight, .cmb_element .ui-widget-content .ui-state-highlight, .cmb_element .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; } .cmb_element .ui-state-highlight a, .cmb_element .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } .cmb_element .ui-state-error, .cmb_element .ui-widget-content .ui-state-error, .cmb_element .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; } .cmb_element .ui-state-error a, .cmb_element .ui-widget-content .ui-state-error a, .cmb_element .ui-widget-header .ui-state-error a { color: #cd0a0a; } .cmb_element .ui-state-error-text, .cmb_element .ui-widget-content .ui-state-error-text, .cmb_element .ui-widget-header .ui-state-error-text { color: #cd0a0a; } .cmb_element .ui-priority-primary, .cmb_element .ui-widget-content .ui-priority-primary, .cmb_element .ui-widget-header .ui-priority-primary { font-weight: bold; } .cmb_element .ui-priority-secondary, .cmb_element .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } .cmb_element .ui-state-disabled, .cmb_element .ui-widget-content .ui-state-disabled, .cmb_element .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } .cmb_element .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } .cmb_element .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } .cmb_element .ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } .cmb_element .ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); } .cmb_element .ui-state-hover .ui-icon, .cmb_element .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } .cmb_element .ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } .cmb_element .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); } .cmb_element .ui-state-error .ui-icon, .cmb_element .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); } .cmb_element .ui-icon-carat-1-n { background-position: 0 0; } .cmb_element .ui-icon-carat-1-ne { background-position: -16px 0; } .cmb_element .ui-icon-carat-1-e { background-position: -32px 0; } .cmb_element .ui-icon-carat-1-se { background-position: -48px 0; } .cmb_element .ui-icon-carat-1-s { background-position: -64px 0; } .cmb_element .ui-icon-carat-1-sw { background-position: -80px 0; } .cmb_element .ui-icon-carat-1-w { background-position: -96px 0; } .cmb_element .ui-icon-carat-1-nw { background-position: -112px 0; } .cmb_element .ui-icon-carat-2-n-s { background-position: -128px 0; } .cmb_element .ui-icon-carat-2-e-w { background-position: -144px 0; } .cmb_element .ui-icon-triangle-1-n { background-position: 0 -16px; } .cmb_element .ui-icon-triangle-1-ne { background-position: -16px -16px; } .cmb_element .ui-icon-triangle-1-e { background-position: -32px -16px; } .cmb_element .ui-icon-triangle-1-se { background-position: -48px -16px; } .cmb_element .ui-icon-triangle-1-s { background-position: -64px -16px; } .cmb_element .ui-icon-triangle-1-sw { background-position: -80px -16px; } .cmb_element .ui-icon-triangle-1-w { background-position: -96px -16px; } .cmb_element .ui-icon-triangle-1-nw { background-position: -112px -16px; } .cmb_element .ui-icon-triangle-2-n-s { background-position: -128px -16px; } .cmb_element .ui-icon-triangle-2-e-w { background-position: -144px -16px; } .cmb_element .ui-icon-arrow-1-n { background-position: 0 -32px; } .cmb_element .ui-icon-arrow-1-ne { background-position: -16px -32px; } .cmb_element .ui-icon-arrow-1-e { background-position: -32px -32px; } .cmb_element .ui-icon-arrow-1-se { background-position: -48px -32px; } .cmb_element .ui-icon-arrow-1-s { background-position: -64px -32px; } .cmb_element .ui-icon-arrow-1-sw { background-position: -80px -32px; } .cmb_element .ui-icon-arrow-1-w { background-position: -96px -32px; } .cmb_element .ui-icon-arrow-1-nw { background-position: -112px -32px; } .cmb_element .ui-icon-arrow-2-n-s { background-position: -128px -32px; } .cmb_element .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } .cmb_element .ui-icon-arrow-2-e-w { background-position: -160px -32px; } .cmb_element .ui-icon-arrow-2-se-nw { background-position: -176px -32px; } .cmb_element .ui-icon-arrowstop-1-n { background-position: -192px -32px; } .cmb_element .ui-icon-arrowstop-1-e { background-position: -208px -32px; } .cmb_element .ui-icon-arrowstop-1-s { background-position: -224px -32px; } .cmb_element .ui-icon-arrowstop-1-w { background-position: -240px -32px; } .cmb_element .ui-icon-arrowthick-1-n { background-position: 0 -48px; } .cmb_element .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } .cmb_element .ui-icon-arrowthick-1-e { background-position: -32px -48px; } .cmb_element .ui-icon-arrowthick-1-se { background-position: -48px -48px; } .cmb_element .ui-icon-arrowthick-1-s { background-position: -64px -48px; } .cmb_element .ui-icon-arrowthick-1-sw { background-position: -80px -48px; } .cmb_element .ui-icon-arrowthick-1-w { background-position: -96px -48px; } .cmb_element .ui-icon-arrowthick-1-nw { background-position: -112px -48px; } .cmb_element .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } .cmb_element .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } .cmb_element .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } .cmb_element .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } .cmb_element .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } .cmb_element .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } .cmb_element .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } .cmb_element .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } .cmb_element .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } .cmb_element .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } .cmb_element .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } .cmb_element .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } .cmb_element .ui-icon-arrowreturn-1-w { background-position: -64px -64px; } .cmb_element .ui-icon-arrowreturn-1-n { background-position: -80px -64px; } .cmb_element .ui-icon-arrowreturn-1-e { background-position: -96px -64px; } .cmb_element .ui-icon-arrowreturn-1-s { background-position: -112px -64px; } .cmb_element .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } .cmb_element .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } .cmb_element .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } .cmb_element .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } .cmb_element .ui-icon-arrow-4 { background-position: 0 -80px; } .cmb_element .ui-icon-arrow-4-diag { background-position: -16px -80px; } .cmb_element .ui-icon-extlink { background-position: -32px -80px; } .cmb_element .ui-icon-newwin { background-position: -48px -80px; } .cmb_element .ui-icon-refresh { background-position: -64px -80px; } .cmb_element .ui-icon-shuffle { background-position: -80px -80px; } .cmb_element .ui-icon-transfer-e-w { background-position: -96px -80px; } .cmb_element .ui-icon-transferthick-e-w { background-position: -112px -80px; } .cmb_element .ui-icon-folder-collapsed { background-position: 0 -96px; } .cmb_element .ui-icon-folder-open { background-position: -16px -96px; } .cmb_element .ui-icon-document { background-position: -32px -96px; } .cmb_element .ui-icon-document-b { background-position: -48px -96px; } .cmb_element .ui-icon-note { background-position: -64px -96px; } .cmb_element .ui-icon-mail-closed { background-position: -80px -96px; } .cmb_element .ui-icon-mail-open { background-position: -96px -96px; } .cmb_element .ui-icon-suitcase { background-position: -112px -96px; } .cmb_element .ui-icon-comment { background-position: -128px -96px; } .cmb_element .ui-icon-person { background-position: -144px -96px; } .cmb_element .ui-icon-print { background-position: -160px -96px; } .cmb_element .ui-icon-trash { background-position: -176px -96px; } .cmb_element .ui-icon-locked { background-position: -192px -96px; } .cmb_element .ui-icon-unlocked { background-position: -208px -96px; } .cmb_element .ui-icon-bookmark { background-position: -224px -96px; } .cmb_element .ui-icon-tag { background-position: -240px -96px; } .cmb_element .ui-icon-home { background-position: 0 -112px; } .cmb_element .ui-icon-flag { background-position: -16px -112px; } .cmb_element .ui-icon-calendar { background-position: -32px -112px; } .cmb_element .ui-icon-cart { background-position: -48px -112px; } .cmb_element .ui-icon-pencil { background-position: -64px -112px; } .cmb_element .ui-icon-clock { background-position: -80px -112px; } .cmb_element .ui-icon-disk { background-position: -96px -112px; } .cmb_element .ui-icon-calculator { background-position: -112px -112px; } .cmb_element .ui-icon-zoomin { background-position: -128px -112px; } .cmb_element .ui-icon-zoomout { background-position: -144px -112px; } .cmb_element .ui-icon-search { background-position: -160px -112px; } .cmb_element .ui-icon-wrench { background-position: -176px -112px; } .cmb_element .ui-icon-gear { background-position: -192px -112px; } .cmb_element .ui-icon-heart { background-position: -208px -112px; } .cmb_element .ui-icon-star { background-position: -224px -112px; } .cmb_element .ui-icon-link { background-position: -240px -112px; } .cmb_element .ui-icon-cancel { background-position: 0 -128px; } .cmb_element .ui-icon-plus { background-position: -16px -128px; } .cmb_element .ui-icon-plusthick { background-position: -32px -128px; } .cmb_element .ui-icon-minus { background-position: -48px -128px; } .cmb_element .ui-icon-minusthick { background-position: -64px -128px; } .cmb_element .ui-icon-close { background-position: -80px -128px; } .cmb_element .ui-icon-closethick { background-position: -96px -128px; } .cmb_element .ui-icon-key { background-position: -112px -128px; } .cmb_element .ui-icon-lightbulb { background-position: -128px -128px; } .cmb_element .ui-icon-scissors { background-position: -144px -128px; } .cmb_element .ui-icon-clipboard { background-position: -160px -128px; } .cmb_element .ui-icon-copy { background-position: -176px -128px; } .cmb_element .ui-icon-contact { background-position: -192px -128px; } .cmb_element .ui-icon-image { background-position: -208px -128px; } .cmb_element .ui-icon-video { background-position: -224px -128px; } .cmb_element .ui-icon-script { background-position: -240px -128px; } .cmb_element .ui-icon-alert { background-position: 0 -144px; } .cmb_element .ui-icon-info { background-position: -16px -144px; } .cmb_element .ui-icon-notice { background-position: -32px -144px; } .cmb_element .ui-icon-help { background-position: -48px -144px; } .cmb_element .ui-icon-check { background-position: -64px -144px; } .cmb_element .ui-icon-bullet { background-position: -80px -144px; } .cmb_element .ui-icon-radio-off { background-position: -96px -144px; } .cmb_element .ui-icon-radio-on { background-position: -112px -144px; } .cmb_element .ui-icon-pin-w { background-position: -128px -144px; } .cmb_element .ui-icon-pin-s { background-position: -144px -144px; } .cmb_element .ui-icon-play { background-position: 0 -160px; } .cmb_element .ui-icon-pause { background-position: -16px -160px; } .cmb_element .ui-icon-seek-next { background-position: -32px -160px; } .cmb_element .ui-icon-seek-prev { background-position: -48px -160px; } .cmb_element .ui-icon-seek-end { background-position: -64px -160px; } .cmb_element .ui-icon-seek-start { background-position: -80px -160px; } .cmb_element .ui-icon-seek-first { background-position: -80px -160px; } .cmb_element .ui-icon-stop { background-position: -96px -160px; } .cmb_element .ui-icon-eject { background-position: -112px -160px; } .cmb_element .ui-icon-volume-off { background-position: -128px -160px; } .cmb_element .ui-icon-volume-on { background-position: -144px -160px; } .cmb_element .ui-icon-power { background-position: 0 -176px; } .cmb_element .ui-icon-signal-diag { background-position: -16px -176px; } .cmb_element .ui-icon-signal { background-position: -32px -176px; } .cmb_element .ui-icon-battery-0 { background-position: -48px -176px; } .cmb_element .ui-icon-battery-1 { background-position: -64px -176px; } .cmb_element .ui-icon-battery-2 { background-position: -80px -176px; } .cmb_element .ui-icon-battery-3 { background-position: -96px -176px; } .cmb_element .ui-icon-circle-plus { background-position: 0 -192px; } .cmb_element .ui-icon-circle-minus { background-position: -16px -192px; } .cmb_element .ui-icon-circle-close { background-position: -32px -192px; } .cmb_element .ui-icon-circle-triangle-e { background-position: -48px -192px; } .cmb_element .ui-icon-circle-triangle-s { background-position: -64px -192px; } .cmb_element .ui-icon-circle-triangle-w { background-position: -80px -192px; } .cmb_element .ui-icon-circle-triangle-n { background-position: -96px -192px; } .cmb_element .ui-icon-circle-arrow-e { background-position: -112px -192px; } .cmb_element .ui-icon-circle-arrow-s { background-position: -128px -192px; } .cmb_element .ui-icon-circle-arrow-w { background-position: -144px -192px; } .cmb_element .ui-icon-circle-arrow-n { background-position: -160px -192px; } .cmb_element .ui-icon-circle-zoomin { background-position: -176px -192px; } .cmb_element .ui-icon-circle-zoomout { background-position: -192px -192px; } .cmb_element .ui-icon-circle-check { background-position: -208px -192px; } .cmb_element .ui-icon-circlesmall-plus { background-position: 0 -208px; } .cmb_element .ui-icon-circlesmall-minus { background-position: -16px -208px; } .cmb_element .ui-icon-circlesmall-close { background-position: -32px -208px; } .cmb_element .ui-icon-squaresmall-plus { background-position: -48px -208px; } .cmb_element .ui-icon-squaresmall-minus { background-position: -64px -208px; } .cmb_element .ui-icon-squaresmall-close { background-position: -80px -208px; } .cmb_element .ui-icon-grip-dotted-vertical { background-position: 0 -224px; } .cmb_element .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } .cmb_element .ui-icon-grip-solid-vertical { background-position: -32px -224px; } .cmb_element .ui-icon-grip-solid-horizontal { background-position: -48px -224px; } .cmb_element .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } .cmb_element .ui-icon-grip-diagonal-se { background-position: -80px -224px; } .cmb_element .ui-corner-all, .cmb_element .ui-corner-top, .cmb_element .ui-corner-left, .cmb_element .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; } .cmb_element .ui-corner-all, .cmb_element .ui-corner-top, .cmb_element .ui-corner-right, .cmb_element .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; } .cmb_element .ui-corner-all, .cmb_element .ui-corner-bottom, .cmb_element .ui-corner-left, .cmb_element .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } .cmb_element .ui-corner-all, .cmb_element .ui-corner-bottom, .cmb_element .ui-corner-right, .cmb_element .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } .cmb_element .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); } .cmb_element .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; } .cmb_element .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } .cmb_element .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } .cmb_element .ui-datepicker .ui-datepicker-prev, .cmb_element .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } .cmb_element .ui-datepicker .ui-datepicker-prev-hover, .cmb_element .ui-datepicker .ui-datepicker-next-hover { top: 1px; } .cmb_element .ui-datepicker .ui-datepicker-prev { left:2px; } .cmb_element .ui-datepicker .ui-datepicker-next { right:2px; } .cmb_element .ui-datepicker .ui-datepicker-prev-hover { left:1px; } .cmb_element .ui-datepicker .ui-datepicker-next-hover { right:1px; } .cmb_element .ui-datepicker .ui-datepicker-prev span, .cmb_element .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } .cmb_element .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } .cmb_element .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } .cmb_element .ui-datepicker select.ui-datepicker-month-year {width: 100%;} .cmb_element .ui-datepicker select.ui-datepicker-month, .cmb_element .ui-datepicker select.ui-datepicker-year { width: 49%;} .cmb_element .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } .cmb_element .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } .cmb_element .ui-datepicker td { border: 0; padding: 1px; } .cmb_element .ui-datepicker td span, .cmb_element .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } .cmb_element .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } .cmb_element .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } .cmb_element .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } .cmb_element .ui-datepicker.ui-datepicker-multi { width:auto; } .cmb_element .ui-datepicker-multi .ui-datepicker-group { float:left; } .cmb_element .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } .cmb_element .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } .cmb_element .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } .cmb_element .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } .cmb_element .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } .cmb_element .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } .cmb_element .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } .cmb_element .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; } .cmb_element .ui-datepicker-rtl { direction: rtl; } .cmb_element .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } .cmb_element .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } .cmb_element .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } .cmb_element .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } .cmb_element .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } .cmb_element .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } .cmb_element .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } .cmb_element .ui-datepicker-rtl .ui-datepicker-group { float:right; } .cmb_element .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } .cmb_element .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } .cmb_element .ui-datepicker-cover { display: none; /*sorry for IE5*/ display/**/: block; /*sorry for IE5*/ position: absolute; /*must have*/ z-index: -1; /*must have*/ filter: mask(); /*must have*/ top: -4px; /*must have*/ left: -4px; /*must have*/ width: 200px; /*must have*/ height: 200px; /*must have*/ } \ No newline at end of file diff --git a/themes/fruitful/inc/template-tags.php b/themes/fruitful/inc/template-tags.php new file mode 100644 index 0000000..e6fedf7 --- /dev/null +++ b/themes/fruitful/inc/template-tags.php @@ -0,0 +1,169 @@ + +
          ', '' . _x( '←', 'Previous post link', 'fruitful' ) . ' %title' ); ?> + %link
          ', '%title ' . _x( '→', 'Next post link', 'fruitful' ) . '' ); ?> + + max_num_pages > 1 && ( is_home() || is_archive() || is_search() ) ) : // navigation links for home, archive, and search pages ?> + + + + + + + + + + + + + comment_type ) : + case 'pingback' : + case 'trackback' : + ?> +
        • +

          + +
        • id="li-comment-"> +
          +
          +
          + + +
          + + + +
          + +
          + + comment_approved == '0' ) : ?> + +
          + + + +
          + $depth, 'max_depth' => $args['max_depth'] ) ) ); ?> +
          +
          + +
          + + ', 'fruitful' ), + esc_url( get_permalink() ), + esc_attr( get_the_time() ), + esc_attr( get_the_date( 'c' ) ), + esc_html( get_the_date() ), + esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ), + esc_attr( sprintf( __( 'View all posts by %s', 'fruitful' ), get_the_author() ) ), + esc_html( get_the_author() ) + ); +} +endif; + +/** + * Returns true if a blog has more than 1 category + * + * @since Fruitful theme 1.0 + */ +function fruitful_categorized_blog() { + if ( false === ( $all_the_cool_cats = get_transient( 'all_the_cool_cats' ) ) ) { + // Create an array of all the categories that are attached to posts + $all_the_cool_cats = get_categories( array( + 'hide_empty' => 1, + ) ); + + // Count the number of categories that are attached to the posts + $all_the_cool_cats = count( $all_the_cool_cats ); + + set_transient( 'all_the_cool_cats', $all_the_cool_cats ); + } + + if ( '1' != $all_the_cool_cats ) { + // This blog has more than 1 category so fruitful_categorized_blog should return true + return true; + } else { + // This blog has only 1 category so fruitful_categorized_blog should return false + return false; + } +} + +/** + * Flush out the transients used in fruitful_categorized_blog + * + * @since Fruitful theme 1.0 + */ +function fruitful_category_transient_flusher() { + delete_transient( 'all_the_cool_cats' ); +} +add_action( 'edit_category', 'fruitful_category_transient_flusher' ); +add_action( 'save_post', 'fruitful_category_transient_flusher' ); \ No newline at end of file diff --git a/themes/fruitful/inc/theme-options/customizer/class-customize-control.php b/themes/fruitful/inc/theme-options/customizer/class-customize-control.php new file mode 100644 index 0000000..7d739b2 --- /dev/null +++ b/themes/fruitful/inc/theme-options/customizer/class-customize-control.php @@ -0,0 +1,121 @@ + + + + + + + + + + + + settings_fields(); + require_once get_template_directory() . '/inc/theme-options/customizer/class-customize-control.php'; + require_once get_template_directory() . '/inc/theme-options/theme-options.php'; + } + + public function tc_customize_controls_js_css() { + wp_enqueue_style('c-style', get_template_directory_uri() . '/inc/css/customizer-style.css'); + wp_enqueue_style('ch-style', get_template_directory_uri() . '/inc/js/ch/ch.css'); + wp_enqueue_style('sl-style', get_template_directory_uri() . '/inc/js/sl/jquery.formstyler.css'); + wp_enqueue_script('chJq', get_template_directory_uri() . "/inc/js/ch/ch.js", array('jquery')); + wp_enqueue_script('slJq', get_template_directory_uri() . "/inc/js/sl/jquery.formstyler.min.js", array('jquery')); + wp_enqueue_script( 'custom-customize', get_template_directory_uri() . '/inc/js/custom.customize.js', array( 'jquery', 'customize-controls' ), false, true ); + } + + public function settings_fields () { + global $fruitful_theme_options; + $this->sections = $fruitful_theme_options->settings_fields(); + } + + public function register_settings ($wp_customize) { + global $fruitful_theme_options; + $opt_name = $fruitful_theme_options->args['opt_name']; + $theme_options = fruitful_get_theme_options(); + $height = (isset($theme_options['header_height'])) ? $theme_options['header_height'] : 80; + + $wp_customize->add_panel($opt_name, array( + 'priority' => 10, + 'capability' => 'edit_theme_options', + 'theme_supports' => '', + 'title' => 'Fruitful Theme Options', + 'description' => '', + )); + $type = 'option'; + if ( is_array($this->sections)) { + foreach ($this->sections as $option ) { + $priority = (isset($option['priority'])) ? $option['priority'] : 10; + $id = (isset($option['id'])) ? $option['id'] : ''; + $title = (isset($option['title'])) ? esc_attr($option['title']) : '' ; + $description = (isset($option['description'])) ? esc_attr($option['description']) : ''; + + $wp_customize->add_section(esc_attr($id), array( + 'priority' => $priority, + 'title' => $title, + 'description' => $description, + 'panel' => $opt_name, + ) ); + foreach ( $option['fields'] as $field) { + $f_id = (isset($field['id'])) ? esc_attr($field['id']) : ''; + $f_default = (isset($field['default'])) ? esc_attr($field['default']) : ''; + $f_label = (isset($field['label'])) ? esc_attr($field['label']) : ''; + $f_description = (isset($field['description'])) ? esc_attr($field['description']) : ''; + $f_info = (isset($field['info'])) ? esc_attr($field['info']) : ''; + $f_type = (isset($field['type'])) ? esc_attr($field['type']) : ''; + $f_choices = (isset($field['options'])) ? $field['options'] : array(); + $section = (isset($option['id'])) ? esc_attr($option['id']) : ''; + + if ($f_type == 'checkbox') { + $sanitize = 'fruitful_theme_sanitize_checkbox'; + } + else { + $sanitize = ''; + } + if (!empty($field['fields'])) { + foreach ($field['fields'] as $key=>$group) { + $g_default = (isset($group['default'])) ? esc_attr($group['default']) : ''; + $g_label = (isset($group['label'])) ? esc_attr($group['label']) : ''; + $g_description = (isset($group['description'])) ? esc_attr( $group['description']) : ''; + $g_info = (isset($group['info'])) ? esc_attr($group['info']) : ''; + $g_boxtitle = (isset($group['box-title'])) ? esc_attr($group['box-title']) : ''; + $g_type = (isset($group['type'])) ? esc_attr($group['type']) : ''; + $g_choices = (isset($group['options'] )) ? $group['options'] : array(); + $g_id = (isset($group['id'])) ? esc_attr($group['id']) : ''; + + if ($g_type == 'checkbox') { + $sanitize = 'fruitful_theme_sanitize_checkbox'; + } + else { + $sanitize = ''; + } + $id = $opt_name . '['.$g_id.']'; + $wp_customize->add_setting(esc_attr($id), array( + 'default' => $g_default, + 'type' => $type, + 'capability' => '', + 'sanitize_callback' => $sanitize + )); + if ($key == 0) { + $top_label = $field['label']; + $top_info = $field['info']; + } + else { + $top_label = ''; + $top_info = ''; + } + + switch ( $g_type ) { + case 'checkbox': + $wp_customize->add_control(new Fruitful_Customize_Checkbox_Control($wp_customize, esc_attr($id), array( + 'type' => 'checkbox', + 'priority' => $priority, + 'section' => $section, + 'label' => $g_label, + 'description' => $g_description, + 'info' => $g_info, + 'top_label' => $top_label, + 'top_info' => $top_info, + + ))); + break; + case 'text': + $wp_customize->add_control(new Fruitful_Customize_Text_Control($wp_customize, esc_attr($id), array( + 'type' => 'text', + 'priority' => $priority, + 'section' => $section, + 'label' => $g_label, + 'description' => $g_description, + 'info' => $g_info, + 'top_label' => $top_label, + 'top_info' => $top_info, + 'box_title' => $g_boxtitle + ))); + break; + case 'select': + $wp_customize->add_control(new Fruitful_Customize_Select_Control($wp_customize, esc_attr($id), array( + 'type' => 'select', + 'priority' => $priority, + 'section' => $section, + 'label' => $g_label, + 'description' => $f_description, + 'choices' => $g_choices, + 'info' => $g_info, + 'top_label' => $top_label, + 'top_info' => $top_info, + 'box_title' => $g_boxtitle + ))); + break; + case 'image': + if (class_exists( 'WP_Customize_Cropped_Image_Control' ) && $id == $opt_name . '[header_img]') { + $wp_customize->add_control(new WP_Customize_Cropped_Image_Control( $wp_customize, esc_attr($id), array( + 'priority' => $priority, + 'section' => $section, + 'label' => $f_label, + 'description' => $f_info, + 'flex_width' => true, + 'flex_height' => false, + 'width' => 1600, + 'height' => $height + ))); + } + else { + $wp_customize->add_control(new WP_Customize_Image_Control( $wp_customize, esc_attr($id), array( + 'priority' => $priority, + 'section' => $section, + 'label' => $f_label, + 'description' => $f_info, + ))); + } + break; + case 'color': + $wp_customize->add_control(new WP_Customize_Color_Control($wp_customize, esc_attr($id), array( + 'priority' => $priority, + 'section' => $section, + 'label' => $top_label, + 'description' => $g_boxtitle, + 'info' => $g_info, + ))); + break; + case 'textarea': + $wp_customize->add_control(new Fruitful_Customize_Textarea_Control($wp_customize, esc_attr($id), array( + 'priority' => $priority, + 'section' => $section, + 'label' => $g_label, + 'description' => $g_description, + 'info' => $g_info, + ))); + break; + } + } + } + + $id = $opt_name . '['.$f_id.']'; + $wp_customize->add_setting(esc_attr($id), array( + 'default' => $f_default, + 'type' => $type, + 'capability' => '', + 'sanitize_callback' => $sanitize + ) ); + + switch ($f_type) { + case 'checkbox': + $wp_customize->add_control(new Fruitful_Customize_Checkbox_Control($wp_customize, esc_attr($id), array( + 'type' => 'checkbox', + 'priority' => $priority, + 'section' => $section, + 'label' => $f_label, + 'description' => $f_description, + 'info' => $f_info, + ))); + break; + case 'text': + $wp_customize->add_control(new Fruitful_Customize_Text_Control($wp_customize, esc_attr($id), array( + 'type' => 'text', + 'priority' => $priority, + 'section' => $section, + 'label' => $f_label, + 'description' => $f_description, + 'info' => $f_info, + ))); + break; + case 'select': + $wp_customize->add_control(new Fruitful_Customize_Select_Control($wp_customize, esc_attr($id), array( + 'type' => 'select', + 'priority' => $priority, + 'section' => $section, + 'label' => $f_label, + 'description' => $f_description, + 'choices' => $f_choices, + 'info' => $f_info, + ))); + break; + case 'font': + $wp_customize->add_control(new Fruitful_Customize_Font_Control($wp_customize, esc_attr($id), array( + 'type' => 'select', + 'priority' => $priority, + 'section' => $section, + 'label' => $f_label, + 'description' => $f_description, + 'choices' => $f_choices, + 'info' => $f_info, + ))); + break; + case 'image': + $wp_customize->add_control(new WP_Customize_Image_Control($wp_customize, esc_attr($id), array( + 'priority' => $priority, + 'section' => $section, + 'label' => $f_label, + 'description' => $f_info, + ))); + break; + case 'color': + $wp_customize->add_control(new WP_Customize_Color_Control($wp_customize, esc_attr($id), array( + 'priority' => $priority, + 'section' => $section, + 'label' => $f_label, + 'description' => $f_info, + ))); + break; + case 'textarea': + $wp_customize->add_control(new Fruitful_Customize_Textarea_Control($wp_customize, esc_attr($id), array( + 'priority' => $priority, + 'section' => $section, + 'label' => $f_label, + 'description' => $f_description, + 'info' => $f_info, + ))); + break; + } + } + } + } + $wp_customize->remove_section('slider'); + } +} +global $fruitful_theme_options_customizer; +$fruitful_theme_options_customizer = new fruitful_theme_options_customizer(); + diff --git a/themes/fruitful/inc/theme-options/theme-options.php b/themes/fruitful/inc/theme-options/theme-options.php new file mode 100644 index 0000000..bbc5b49 --- /dev/null +++ b/themes/fruitful/inc/theme-options/theme-options.php @@ -0,0 +1,1494 @@ +settings_fields(); + $this->setArguments(); + if (!isset($this->args['opt_name'])) { + return; + } + } + + public function setArguments() { + $this->args = array( + 'opt_name' => 'fruitful_theme_options', // Database option + 'opt_group' => 'fruitful_options', // Options group + 'opt_slug' => 'theme_options', // Menu slug + ); + } + + public function add_menu_item () { + /* + * Add our theme options page to the admin menu. + * This function is attached to the admin_menu action hook. + * @since Fruitful theme 1.0 + */ + $admin_page = add_theme_page( + __( 'Theme Options', 'fruitful' ), // Name of page + __( 'Theme Options', 'fruitful' ), // Label in menu + 'edit_theme_options', // Capability required + $this->args['opt_slug'], // Menu slug, used to uniquely identify the page + array( &$this, 'fruitful_theme_options_render_page' ) // Function that renders the options page + ); + add_action( 'admin_print_scripts-' . $admin_page, array( &$this, 'settings_assets' ) ); + } + + public function fruitful_add_custom_link_options() { + global $wp_admin_bar, $wpdb; + if ( !is_super_admin() || !is_admin_bar_showing() ) + return; + + /* Add the main siteadmin menu item */ + $wp_admin_bar->add_menu( array( 'id' => 'fruitfultheme_options', 'title' => __( 'Theme Options', 'fruitful' ), 'href' => admin_url('admin.php?page=theme_options'))); + } + + public function settings_assets () { + wp_print_scripts( 'jquery-ui-tabs' ); + fruitful_add_jquery_script(); + fruitful_add_admin_style(); + } + + public function settings_fields () { + + /*General*/ + + $this->sections['general'] = array( + 'title' => __( 'General', 'fruitful' ), + 'id' => 'general', + 'fields' => array( + array( + 'id' => 'responsive', + 'label' => __( 'Layout' , 'fruitful' ), + 'info' => __( 'Theme supported 2 types of html layout. Default responsive setting which adapt for mobile devices and static page with fixed width. Uncheck arrow below if you need static website display', 'fruitful' ), + 'description' => __( 'Responsive' , 'fruitful'), + 'type' => 'checkbox', + 'default' => 'on', + ), + array( + 'id' => 'pagecomment_ch', + 'label' => __( 'Comments' , 'fruitful' ), + 'info' => __( 'If you want to display comments on your post page or page, select options below.','fruitful' ), + 'fields' => array ( + array( + 'id' => 'postcomment', + 'description' => __( 'Display comment on posts page', 'fruitful' ), + 'type' => 'checkbox', + 'default' => 'on', + ), + array( + 'id' => 'pagecomment', + 'description' => __( 'Display comment on page', 'fruitful' ), + 'type' => 'checkbox', + 'default' => 'on', + ), + ) + ), + // array( + // 'id' => 'styletheme', + // 'label' => __( 'Default theme styles' , 'fruitful' ), + // 'info' => __( 'Default CSS. Theme option for styling is not working, if this option enable.', 'fruitful' ), + // 'description' => __( 'Enable', 'fruitful' ), + // 'type' => 'checkbox', + // 'default' => 'off', + // ), + array( + 'id' => 'latest_posts_templ', + 'label' => __( 'Front page template with latest posts', 'fruitful' ), + 'info' => __( 'Settings > Reading > Front page displays > Your latest posts', 'fruitful' ), + 'type' => 'select', + 'options' => array( + '0' => __('Full width', 'fruitful'), + '1' => __('Right sidebar', 'fruitful') , + '2' => __('Left sidebar', 'fruitful') + ), + 'default' => '0' + ), + array( + 'label' => __( 'Page templates by default' , 'fruitful' ), + 'info' => __( 'Choose default display for templates.','fruitful' ), + 'fields' => array ( + array( + 'id' => 'layout_page_templ', + 'type' => 'select', + 'box-title' => __('Page:','fruitful'), + 'options' => array( + '1' => __('Right sidebar', 'fruitful'), + '0' => __('Full width', 'fruitful') , + '2' => __('Left sidebar', 'fruitful') + ), + 'default' => '1' + ), + array( + 'id' => 'layout_single_templ', + 'type' => 'select', + 'box-title' => __('Single Post:','fruitful'), + 'options' => array( + '1' => __('Right sidebar', 'fruitful'), + '0' => __('Full width', 'fruitful') , + '2' => __('Left sidebar', 'fruitful') + ), + 'default' => '1' + ), + array( + 'id' => 'layout_archive_templ', + 'type' => 'select', + 'box-title' => __('Archive:','fruitful'), + 'options' => array( + '1' => __('Right sidebar', 'fruitful'), + '0' => __('Full width', 'fruitful') , + '2' => __('Left sidebar', 'fruitful') + ), + 'default' => '1' + ), + array( + 'id' => 'layout_author_templ', + 'type' => 'select', + 'box-title' => __('Author:','fruitful'), + 'options' => array( + '1' => __('Right sidebar', 'fruitful'), + '0' => __('Full width', 'fruitful') , + '2' => __('Left sidebar', 'fruitful') + ), + 'default' => '1' + ), + array( + 'id' => 'layout_cat_templ', + 'type' => 'select', + 'box-title' => __('Category:','fruitful'), + 'options' => array( + '1' => __('Right sidebar', 'fruitful'), + '0' => __('Full width', 'fruitful') , + '2' => __('Left sidebar', 'fruitful') + ), + 'default' => '1' + ), + array( + 'id' => 'layout_tag_templ', + 'type' => 'select', + 'box-title' => __('Tags:','fruitful'), + 'options' => array( + '1' => __('Right sidebar', 'fruitful'), + '0' => __('Full width', 'fruitful') , + '2' => __('Left sidebar', 'fruitful') + ), + 'default' => '1' + ), + array( + 'id' => 'layout_404_templ', + 'type' => 'select', + 'box-title' => __('404:','fruitful'), + 'options' => array( + '1' => __('Right sidebar', 'fruitful'), + '0' => __('Full width', 'fruitful') , + '2' => __('Left sidebar', 'fruitful') + ), + 'default' => '1' + ), + array( + 'id' => 'layout_search_templ', + 'type' => 'select', + 'box-title' => __('Search:','fruitful'), + 'options' => array( + '1' => __('Right sidebar', 'fruitful'), + '0' => __('Full width', 'fruitful') , + '2' => __('Left sidebar', 'fruitful') + ), + 'default' => '1' + ), + ) + ), + array( + 'id' => 'show_featured_single', + 'label' => __( 'Show Featured image on single post' , 'fruitful' ), + 'info' => __( 'Select option below for show featured image on single post page.', 'fruitful' ), + 'description' => __( 'Show featured image', 'fruitful' ), + 'type' => 'checkbox', + 'default' => 'on', + ), + ((function_exists('icl_get_languages')) ? + array ( + 'id' => 'is_wpml_ready', + 'type' => 'checkbox', + 'label' => __( 'Multilingual Switch in Header (WPML)', 'fruitful' ), + 'info' => __( 'If you wish to show Language Switch in header, select option below.', 'fruitful' ), + 'description' => __( 'Enable', 'fruitful' ), + 'default' => 'off' + ): + array( + 'id' => 'reset', + 'label' => __( 'Reset options' , 'fruitful' ), + 'info' => __( 'All theme options will be reset to default.', 'fruitful' ), + 'type' => 'button', + 'default' => 'Reset Defaults', + 'class' => 'button-primary reset-btn', + ) + ), + array( + 'id' => 'reset', + 'label' => __( 'Reset options' , 'fruitful' ), + 'info' => __( 'All theme options will be reset to default.', 'fruitful' ), + 'type' => 'button', + 'default' => 'Reset Defaults', + 'class' => 'button-primary reset-btn', + ), + ) + ); + + + + /*Header*/ + + $this->sections['header'] = array( + 'title' => __( 'Header', 'fruitful' ), + 'id' => 'header', + 'fields' => array( + array( + 'id' => 'is_fixed_header', + 'label' => __( 'Sticky header' , 'fruitful' ), + 'info' => __( 'Options relating to the website header', 'fruitful' ), + 'description' => __( 'Enabled', 'fruitful' ), + 'type' => 'checkbox', + 'default' => 'on', + ), + array( + 'id' => 'menu_position', + 'label' => __( 'Menu Position' , 'fruitful' ), + 'info' => __( 'Set menu position.', 'fruitful' ), + 'type' => 'select', + 'options' => array( + '2' => __('Right', 'fruitful'), + '0' => __('Left', 'fruitful') , + '1' => __('Center', 'fruitful') + ), + 'default' => '2' + ), + array( + 'id' => 'menu_type_responsive', + 'label' => __( 'Type of Responsive menu' , 'fruitful' ), + 'info' => __( 'Set type of responsive menu.', 'fruitful' ), + 'type' => 'select', + 'options' => array( + 'inside_content' => __('Select menu', 'fruitful'), + 'full_width' => __('Button menu', 'fruitful') + ), + 'default' => 'inside_content' + ), + array( + 'id' => 'menu_icon_color', + 'label' => __( 'Menu icon color' , 'fruitful' ), + 'info' => __( 'Chose color for collapsing menu icon', 'fruitful' ), + 'type' => 'color', + 'default' => '#333333', + ), + array( + 'label' => __( 'Background for header' , 'fruitful' ), + 'info' => __( 'Upload image with full width for background in header area. (Supported files .png, .jpg, .gif)', 'fruitful' ), + 'fields' => array ( + array( + 'id' => 'header_img', + 'type' => 'image', + 'imagetype' => 'headerbackground', + ), + array( + 'id' => 'header_bg_color', + 'type' => 'color', + 'default' => '#ffffff', + 'box-title' => __('Header background-color', 'fruitful') + ) + ) + ), + array( + 'id' => 'header_img_size', + 'label' => __( 'Background image size' , 'fruitful' ), + 'info' => __( 'Choose size for background image - full width or only for content area.', 'fruitful' ), + 'type' => 'select', + 'options' => array( + 'full' => __('Full width position', 'fruitful'), + 'centered' => __('Centered position', 'fruitful') + ), + 'default' => 'full' + ), + array( + 'id' => 'header_height', + 'label' => __( 'Height for header area' , 'fruitful' ), + 'info' => __( 'Minimum height in pixels', 'fruitful' ), + 'type' => 'text', + 'default' => '80', + ), + ) + ); + + /*Background*/ + + $this->sections['background'] = array( + 'title' => __( 'Background', 'fruitful' ), + 'id' => 'background', + 'fields' => array( + array( + 'label' => __( 'Background Image' , 'fruitful' ), + 'info' => __( 'Upload your background image for site background. (Supported files .png, .jpg, .gif)', 'fruitful' ), + 'fields' => array ( + array( + 'id' => 'backgroung_img', + 'type' => 'image', + 'imagetype' => 'headerbackground', + ), + array( + 'id' => 'bg_repeating', + 'description' => __( 'Background repeat', 'fruitful' ), + 'type' => 'checkbox', + 'default' => 'off', + ), + ) + ), + array( + 'id' => 'background_color', + 'label' => __( 'Background Color' , 'fruitful' ), + 'info' => __( 'Choose color for body background', 'fruitful' ), + 'type' => 'color', + 'default' => '#ffffff' + ), + array( + 'id' => 'container_bg_color', + 'label' => __( 'Background color for content' , 'fruitful' ), + 'info' => __( 'Choose color for main content area', 'fruitful' ), + 'type' => 'color', + 'default' => '#ffffff' + ), + ) + ); + + /*Logo*/ + $this->sections['logo'] = array( + 'title' => __( 'Logo', 'fruitful' ), + 'id' => 'logo', + 'fields' => array( + array( + 'id' => 'logo_position', + 'label' => __( 'Logo Position' , 'fruitful' ), + 'info' => __( 'Set Logo Position', 'fruitful' ), + 'type' => 'select', + 'options' => array( + '0' => __('Left', 'fruitful'), + '1' => __('Center', 'fruitful'), + '2' => __('Right', 'fruitful') + ), + 'default' => '0' + ), + array( + 'label' => __( 'Logo size' , 'fruitful' ), + 'info' => __( 'Specify resolution for your logo image', 'fruitful' ), + 'fields' => array ( + array( + 'id' => 'logo_w', + 'type' => 'text', + 'default' => '0', + 'box-title' => __('Width', 'fruitful') + ), + array( + 'id' => 'logo_h', + 'type' => 'text', + 'default' => '0', + 'box-title' => __('Height', 'fruitful') + ), + ) + ), + array( + 'id' => 'logo_img', + 'label' => __( 'Logo image' , 'fruitful' ), + 'info' => __( 'Upload logo image for your website. Size is original (Supported files .png, .jpg, .gif)', 'fruitful' ), + 'type' => 'image', + 'imagetype' => 'logo', + ), + array( + 'id' => 'logo_img_retina', + 'label' => __( 'Logo image retina' , 'fruitful' ), + 'info' => __( 'Upload logo in double size (If your logo is 100 x 20px, it should be 200 x 40px)', 'fruitful' ), + 'type' => 'image', + 'imagetype' => 'logo_retina', + ), + array( + 'id' => 'fav_icon', + 'label' => __( 'Favicon' , 'fruitful' ), + 'info' => __( 'A favicon is a 16x16 pixel icon that represents your site; upload your custom Favicon here.', 'fruitful' ), + 'type' => 'image', + 'imagetype' => 'favicon', + ), + array( + 'id' => 'fav_icon_iphone', + 'label' => __( 'Favicon iPhone' , 'fruitful' ), + 'info' => __( 'Upload a custom favicon for iPhone (57x57 pixel png).', 'fruitful' ), + 'type' => 'image', + 'imagetype' => 'favicon_iphone', + ), + array( + 'id' => 'fav_icon_iphone_retina', + 'label' => __( 'Favicon iPhone Retina' , 'fruitful' ), + 'info' => __( 'Upload a custom favicon for iPhone retina (114x114 pixel png).', 'fruitful' ), + 'type' => 'image', + 'imagetype' => 'favicon_iphone_retina', + ), + array( + 'id' => 'fav_icon_ipad', + 'label' => __( 'Favicon iPad' , 'fruitful' ), + 'info' => __( 'Upload a custom favicon for iPad (72x72 pixel png).', 'fruitful' ), + 'type' => 'image', + 'imagetype' => 'favicon_ipad', + ), + array( + 'id' => 'fav_icon_ipad_retina', + 'label' => __( 'Favicon iPad Retina' , 'fruitful' ), + 'info' => __( 'Upload a custom favicon for iPhone retina (144x144 pixel png).', 'fruitful' ), + 'type' => 'image', + 'imagetype' => 'favicon_ipad_retina', + ), + + ) + ); + + /*Colors*/ + $this->sections['colors'] = array( + 'title' => __( 'Colors', 'fruitful' ), + 'id' => 'main-colors', + 'fields' => array( + array( + 'id' => 'menu-color', + 'label' => __( 'Main menu color' , 'fruitful' ), + 'info' => __( 'Choose your colors for main menu in header', 'fruitful' ), + 'newrow' => true, + 'fields' => array ( + array( + 'id' => 'menu_bg_color', + 'type' => 'color', + 'default' => '#ffffff', + 'box-title' => __('Background color', 'fruitful') + ), + array( + 'id' => 'menu_btn_color', + 'type' => 'color', + 'default' => '#F15A23', + 'box-title' => __('Menu button color', 'fruitful') + ), + array( + 'id' => 'menu_font_color', + 'type' => 'color', + 'default' => '#333333', + 'box-title' => __('Font color', 'fruitful') + ), + array( + 'id' => 'menu_hover_color', + 'type' => 'color', + 'default' => '#ffffff', + 'box-title' => __('Font color (active and hover)', 'fruitful') + ), + ) + ), + array( + 'id' => 'dd-menu-color', + 'label' => __( 'Dropdown menu color' , 'fruitful' ), + 'info' => __( 'Choose your colors for dropdown menu in header', 'fruitful' ), + 'fields' => array ( + array( + 'id' => 'dd_menu_bg_color', + 'type' => 'color', + 'default' => '#ffffff', + 'box-title' => __('Background color', 'fruitful') + ), + array( + 'id' => 'dd_menu_btn_color', + 'type' => 'color', + 'default' => '#F15A23', + 'box-title' => __('Menu button color', 'fruitful') + ), + array( + 'id' => 'dd_menu_font_color', + 'type' => 'color', + 'default' => '#333333', + 'box-title' => __('Font color', 'fruitful') + ), + array( + 'id' => 'dd_menu_hover_color', + 'type' => 'color', + 'default' => '#ffffff', + 'box-title' => __('Font color (active and hover)', 'fruitful') + ), + ) + ), + array( + 'id' => 'g-menu-color', + 'label' => __( 'General font color' , 'fruitful' ), + 'info' => __( 'Choose your colors for text and links', 'fruitful' ), + 'newrow' => true, + 'fields' => array ( + array( + 'id' => 'p_font_color', + 'type' => 'color', + 'default' => '#333333', + 'box-title' => __('Font color', 'fruitful') + ), + array( + 'id' => 'a_font_color', + 'type' => 'color', + 'default' => '#333333', + 'box-title' => __('Link color', 'fruitful') + ), + array( + 'id' => 'a_hover_font_color', + 'type' => 'color', + 'default' => '#FF5D2A', + 'box-title' => __('Link color (hover)', 'fruitful') + ), + array( + 'id' => 'a_focus_font_color', + 'type' => 'color', + 'default' => '#FF5D2A', + 'box-title' => __('Link color (focus)', 'fruitful') + ), + array( + 'id' => 'a_active_font_color', + 'type' => 'color', + 'default' => '#FF5D2A', + 'box-title' => __('Link color (active)', 'fruitful') + ), + ) + ), + array( + 'id' => 'lines-color', + 'label' => __( 'Color for lines' , 'fruitful' ), + 'info' => __( 'Choose your colors for lines and separators', 'fruitful' ), + 'fields' => array ( + array( + 'id' => 'widgets_sep_color', + 'type' => 'color', + 'default' => '#F15A23', + 'box-title' => __('Widget separator color', 'fruitful') + ), + array( + 'id' => 'date_of_post_b_color', + 'type' => 'color', + 'default' => '#F15A23', + 'box-title' => __('Blog post date color', 'fruitful') + ), + array( + 'id' => 'date_of_post_f_color', + 'type' => 'color', + 'default' => '#ffffff', + 'box-title' => __('Date font color', 'fruitful') + ), + ) + ), + array( + 'id' => 'buttons-color', + 'label' => __( 'Color for buttons' , 'fruitful' ), + 'info' => __( 'Choose your colors for buttons', 'fruitful' ), + 'newrow' => true, + 'fields' => array ( + array( + 'id' => 'btn_color', + 'type' => 'color', + 'default' => '#333333', + 'box-title' => __('Button background color', 'fruitful') + ), + array( + 'id' => 'btn_active_color', + 'type' => 'color', + 'default' => '#F15A23', + 'box-title' => __('Button background color (hover, active, focus, current page - pagenavi)', 'fruitful') + ), + ) + ), + array( + 'id' => 'social-color', + 'label' => __( 'Color for social icons' , 'fruitful' ), + 'info' => __( 'Choose your colors for social icons', 'fruitful' ), + 'fields' => array ( + array( + 'id' => 'soc_icon_bg_color', + 'type' => 'color', + 'default' => '#333333', + 'box-title' => __('Social icons background color', 'fruitful') + ), + array( + 'id' => 'soc_icon_color', + 'type' => 'color', + 'default' => '#ffffff', + 'box-title' => __('Button background color (hover, active, focus, current page - pagenavi)', 'fruitful') + ), + ) + ), + array( + 'id' => 'woocommerce-color', + 'label' => __( 'WooCommerce colors' , 'fruitful' ), + 'info' => __( 'Choose your colors for WooCommerce', 'fruitful' ), + 'fields' => array ( + array( + 'id' => 'woo_sale_price_color', + 'type' => 'color', + 'default' => '#919191', + 'box-title' => __('Sale price color', 'fruitful') + ), + array( + 'id' => 'woo_rating_color_regular', + 'type' => 'color', + 'default' => '#333333', + 'box-title' => __('Rating color (regular)', 'fruitful') + ), + array( + 'id' => 'woo_rating_color_active', + 'type' => 'color', + 'default' => '#FF5D2A', + 'box-title' => __('Rating color (hover, active)', 'fruitful') + ), + ) + ), + ) + ); + + /*Fonts*/ + $this->sections['fonts'] = array( + 'title' => __( 'Fonts', 'fruitful' ), + 'id' => 'fonts', + 'fields' => array( + // array( + // 'label' => __( 'Fonts' , 'fruitful' ), + // 'info' => __( 'Popular web safe font collection, select and use for your needs.', 'fruitful' ), + // ), + array( + 'id' => 'h_font_family', + 'label' => __( 'Headers' , 'fruitful' ), + 'info' => __( 'Choose font-family for all headlines.', 'fruitful' ), + 'type' => 'font', + 'options' => fruitful_fonts_list(), + 'default' => 'Open Sans, sans-serif', + ), + array( + 'id' => 'm_font_family', + 'label' => __( 'Menu' , 'fruitful' ), + 'info' => __( 'Choose font-family for primary menu.', 'fruitful' ), + 'type' => 'font', + 'options' => fruitful_fonts_list(), + 'default' => 'Open Sans, sans-serif', + ), + array( + 'id' => 'p_font_family', + 'label' => __( 'Body' , 'fruitful' ), + 'info' => __( 'Choose font-family for content.', 'fruitful' ), + 'type' => 'font', + 'options' => fruitful_fonts_list(), + 'default' => 'Open Sans, sans-serif', + ), + array( + 'id' => 'font-size', + 'label' => __( 'Font size' , 'fruitful' ), + 'info' => __( 'Choose font size for specific html elements. Set size as number, without px..', 'fruitful' ), + 'fields' => array ( + array( + 'id' => 'h1_size', + 'type' => 'text', + 'default' => '27', + 'box-title' => __( 'H1', 'fruitful' ), + ), + array( + 'id' => 'h2_size', + 'type' => 'text', + 'default' => '34', + 'box-title' => __( 'H2', 'fruitful' ), + ), + array( + 'id' => 'h3_size', + 'type' => 'text', + 'default' => '18', + 'box-title' => __( 'H3', 'fruitful' ), + ), + array( + 'id' => 'h4_size', + 'type' => 'text', + 'default' => '17', + 'box-title' => __( 'H4', 'fruitful' ), + ), + array( + 'id' => 'h5_size', + 'type' => 'text', + 'default' => '14', + 'box-title' => __( 'H5', 'fruitful' ), + ), + array( + 'id' => 'h6_size', + 'type' => 'text', + 'default' => '12', + 'box-title' => __( 'H6', 'fruitful' ), + ), + array( + 'id' => 'm_size', + 'type' => 'text', + 'default' => '14', + 'box-title' => __( 'Menu', 'fruitful' ), + ), + array( + 'id' => 'p_size', + 'type' => 'text', + 'default' => '14', + 'box-title' => __( 'P', 'fruitful' ), + ), + ) + ) + + ), + ); + + /*Slider*/ + $this->sections['slider'] = array( + 'title' => __( 'Slider', 'fruitful' ), + 'id' => 'slider', + 'fields' => array( + array( + 'id' => 'select_slider', + 'class' => 'select-slider', + 'label' => __('Slider','fruitful'), + 'info' => __('Select a slider type that will be used by default.','fruitful'), + 'type' => 'select', + 'options' => array( + '1' => __('FlexSlider', 'fruitful'), + '2' => __('Nivo Slider', 'fruitful') + ), + 'default' => '1' + ), + array( + 'id' => 'slider-options', + 'label' => __( 'Slider Options' , 'fruitful' ), + 'info' => __( 'Choose needed options for slider: animation type, sliding direction, speed of animations, etc', 'fruitful' ), + 'type' => 'slider-options', + 'fields' => array ( + array( + 'id' => 's_animation', + 'type' => 'select', + 'option-block' => 'flex-slider', + 'box-title' => __('Animation type','fruitful'), + 'options' => array( + 'fade' => __('fade', 'fruitful'), + 'slide' => __('slide', 'fruitful') + ), + 'default' => 'fade' + ), + array( + 'id' => 's_direction', + 'type' => 'select', + 'option-block' => 'flex-slider', + 'box-title' => __('Sliding direction, "horizontal" or "vertical"','fruitful'), + 'options' => array( + 'horizontal' => __('horizontal', 'fruitful'), + 'vertical' => __('vertical', 'fruitful') + ), + 'default' => 'horizontal' + ), + array( + 'id' => 's_reverse', + 'type' => 'select', + 'option-block' => 'flex-slider', + 'box-title' => __('Reverse the animation direction','fruitful'), + 'options' => array( + 'false' => __('false', 'fruitful'), + 'true' => __('true', 'fruitful') + ), + 'default' => 'false' + ), + array( + 'id' => 's_slideshow', + 'type' => 'select', + 'option-block' => 'flex-slider', + 'box-title' => __('Animate slider automatically','fruitful'), + 'options' => array( + 'true' => __('true', 'fruitful'), + 'false' => __('false', 'fruitful') + ), + 'default' => 'true' + ), + array( + 'id' => 's_slideshowSpeed', + 'type' => 'text', + 'option-block' => 'flex-slider', + 'box-title' => __('Set the speed of the slideshow cycling, in milliseconds','fruitful'), + 'default' => '7000' + ), + array( + 'id' => 's_animationSpeed', + 'type' => 'text', + 'option-block' => 'flex-slider', + 'box-title' => __('Set the speed of animations, in milliseconds','fruitful'), + 'default' => '600' + ), + array( + 'id' => 's_initDelay', + 'type' => 'text', + 'option-block' => 'flex-slider', + 'box-title' => __('Set an initialization delay, in milliseconds','fruitful'), + 'default' => '0' + ), + array( + 'id' => 's_randomize', + 'type' => 'select', + 'option-block' => 'flex-slider', + 'box-title' => __('Randomize slide order','fruitful'), + 'options' => array( + 'false' => __('false', 'fruitful'), + 'true' => __('true', 'fruitful') + ), + 'default' => 'false' + ), + array( + 'id' => 's_controlnav', + 'type' => 'select', + 'option-block' => 'flex-slider', + 'box-title' => __('Manual control usage','fruitful'), + 'options' => array( + 'true' => __('true', 'fruitful'), + 'false' => __('false', 'fruitful') + ), + 'default' => 'true' + ), + array( + 'id' => 's_touch', + 'type' => 'select', + 'option-block' => 'flex-slider', + 'box-title' => __('Touch swipe','fruitful'), + 'options' => array( + 'true' => __('true', 'fruitful'), + 'false' => __('false', 'fruitful') + ), + 'default' => 'true' + ), + array( + 'id' => 'nv_skins', + 'type' => 'select', + 'option-block' => 'nivo-slider', + 'box-title' => __('Slider Skins','fruitful'), + 'options' => array( + 'theme-bar' => __('bar', 'fruitful'), + 'theme-default' => __('default', 'fruitful'), + 'theme-dark' => __('dark', 'fruitful'), + 'theme-light' => __('light', 'fruitful') + ), + 'default' => 'theme-bar' + ), + array( + 'id' => 'nv_animation', + 'type' => 'select', + 'option-block' => 'nivo-slider', + 'box-title' => __('Effect','fruitful'), + 'options' => array( + 'random' => __('random', 'fruitful'), + 'sliceDownRight' => __('sliceDownRight', 'fruitful'), + 'sliceDownLeft' => __('sliceDownLeft', 'fruitful'), + 'sliceUpRight' => __('sliceUpRight', 'fruitful'), + 'sliceUpDown' => __('sliceUpDown', 'fruitful'), + 'sliceUpDownLeft' => __('sliceUpDownLeft', 'fruitful'), + 'fold' => __('fold', 'fruitful'), + 'fade' => __('fade', 'fruitful'), + 'boxRandom' => __('boxRandom', 'fruitful'), + 'boxRain' => __('boxRain', 'fruitful'), + 'boxRainReverse' => __('boxRainReverse', 'fruitful'), + 'boxRainGrow' => __('boxRainGrow', 'fruitful'), + 'boxRainGrowReverse ' => __('boxRainGrowReverse', 'fruitful') + ), + 'default' => 'random' + ), + array( + 'id' => 'nv_slice', + 'type' => 'text', + 'option-block' => 'nivo-slider', + 'box-title' => __('For slice animations','fruitful'), + 'default' => '15' + ), + array( + 'id' => 'nv_boxCols', + 'type' => 'text', + 'option-block' => 'nivo-slider', + 'box-title' => __('For box animations (Cols)','fruitful'), + 'default' => '8' + ), + array( + 'id' => 'nv_boxRows', + 'type' => 'text', + 'option-block' => 'nivo-slider', + 'box-title' => __('For box animations (Rows)','fruitful'), + 'default' => '4' + ), + array( + 'id' => 'nv_animSpeed', + 'type' => 'text', + 'option-block' => 'nivo-slider', + 'box-title' => __('Slide transition speed','fruitful'), + 'default' => '500' + ), + array( + 'id' => 'nv_pauseTime', + 'type' => 'text', + 'option-block' => 'nivo-slider', + 'box-title' => __('How long each slide will show','fruitful'), + 'default' => '3000' + ), + array( + 'id' => 'nv_startSlide', + 'type' => 'text', + 'option-block' => 'nivo-slider', + 'box-title' => __('Set starting Slide (0 index)','fruitful'), + 'default' => '0' + ), + array( + 'id' => 'nv_directionNav', + 'type' => 'select', + 'option-block' => 'nivo-slider', + 'box-title' => __('Next & Prev navigation','fruitful'), + 'options' => array( + 'true' => __('true', 'fruitful'), + 'false' => __('false', 'fruitful'), + ), + 'default' => 'true' + ), + array( + 'id' => 'nv_controlNav', + 'type' => 'select', + 'option-block' => 'nivo-slider', + 'box-title' => __('1,2,3... navigation','fruitful'), + 'options' => array( + 'true' => __('true', 'fruitful'), + 'false' => __('false', 'fruitful'), + ), + 'default' => 'true' + ), + array( + 'id' => 'nv_controlNavThumbs', + 'type' => 'select', + 'option-block' => 'nivo-slider', + 'box-title' => __('Use thumbnails for Control Nav','fruitful'), + 'options' => array( + 'true' => __('true', 'fruitful'), + 'false' => __('false', 'fruitful'), + ), + 'default' => 'false' + ), + array( + 'id' => 'nv_pauseOnHover', + 'type' => 'select', + 'option-block' => 'nivo-slider', + 'box-title' => __('Stop animation while hovering','fruitful'), + 'options' => array( + 'true' => __('true', 'fruitful'), + 'false' => __('false', 'fruitful'), + ), + 'default' => 'true' + ), + array( + 'id' => 'nv_manualAdvance', + 'type' => 'select', + 'option-block' => 'nivo-slider', + 'box-title' => __('Force manual transitions','fruitful'), + 'options' => array( + 'true' => __('true', 'fruitful'), + 'false' => __('false', 'fruitful'), + ), + 'default' => 'false' + ), + array( + 'id' => 'nv_prevText', + 'type' => 'text', + 'option-block' => 'nivo-slider', + 'box-title' => __('Prev directionNav text','fruitful'), + 'default' => 'Prev' + ), + array( + 'id' => 'nv_nextText', + 'type' => 'text', + 'option-block' => 'nivo-slider', + 'box-title' => __('Next directionNav text','fruitful'), + 'default' => 'Next' + ), + array( + 'id' => 'nv_randomStart', + 'type' => 'select', + 'option-block' => 'nivo-slider', + 'box-title' => __('Start on a random slide','fruitful'), + 'options' => array( + 'true' => __('true', 'fruitful'), + 'false' => __('false', 'fruitful'), + ), + 'default' => 'false' + ), + ) + + ), + array( + 'id' => 'slides', + 'type' => 'slides', + 'label' => __('Slides','fruitful'), + 'info' => __('Add images to slider (Supported files .png, .jpg, .gif). If you want to change order, just drag and drop it. Image size for slides is original from media gallery, please upload images in same size, to get best display on page. To display slider in needed place use shortcode [fruitful_slider]. Current theme version support only one slider per website.','fruitful'), + ) + ) + ); + + /*Social Links*/ + $this->sections['social-links'] = array( + 'title' => __( 'Social Links', 'fruitful' ), + 'id' => 'social-links', + 'fields' => array( + array ( + 'id' => 'sl_position', + 'label' => __( 'Socials Links Position', 'fruitful' ), + 'info' => __( 'Choose place where social links will be displayed.', 'fruitful' ), + 'type' => 'select', + 'options' => array( '0' => __('Footer', 'fruitful'), '1' => __('Header', 'fruitful')), + 'default' => '0' + ), + array( + 'id' => 'social-links', + 'label' => __( 'Socials Links' , 'fruitful' ), + 'info' => __( 'Add link to your social media profiles. Icons with link will be display in header or footer.', 'fruitful' ), + 'fields' => array ( + array( + 'id' => 'facebook_url', + 'type' => 'text', + 'default' => '', + 'box-title' => __('Facebook', 'fruitful') + ), + array( + 'id' => 'twitter_url', + 'type' => 'text', + 'default' => '', + 'box-title' => __('Twitter', 'fruitful') + ), + array( + 'id' => 'linkedin_url', + 'type' => 'text', + 'default' => '', + 'box-title' => __('LinkedIn', 'fruitful') + ), + array( + 'id' => 'myspace_url', + 'type' => 'text', + 'default' => '', + 'box-title' => __('MySpace', 'fruitful') + ), + array( + 'id' => 'googleplus_url', + 'type' => 'text', + 'default' => '', + 'box-title' => __('Google Plus+', 'fruitful') + ), + array( + 'id' => 'dribbble_url', + 'type' => 'text', + 'default' => '', + 'box-title' => __('Dribbble', 'fruitful') + ), + array( + 'id' => 'skype_link', + 'type' => 'text', + 'default' => '', + 'box-title' => __('Skype', 'fruitful') + ), + array( + 'id' => 'flickr_link', + 'type' => 'text', + 'default' => '', + 'box-title' => __('Flickr', 'fruitful') + ), + array( + 'id' => 'youtube_url', + 'type' => 'text', + 'default' => '', + 'box-title' => __('You Tube', 'fruitful') + ), + array( + 'id' => 'vimeo_url', + 'type' => 'text', + 'default' => '', + 'box-title' => __('Vimeo', 'fruitful') + ), + array( + 'id' => 'rss_link', + 'type' => 'text', + 'default' => '', + 'box-title' => __('RSS', 'fruitful') + ), + array( + 'id' => 'vk_link', + 'type' => 'text', + 'default' => '', + 'box-title' => __('Vk.com', 'fruitful') + ), + array( + 'id' => 'instagram_url', + 'type' => 'text', + 'default' => '', + 'box-title' => __('Instagram', 'fruitful') + ), + array( + 'id' => 'pinterest_url', + 'type' => 'text', + 'default' => '', + 'box-title' => __('Pinterest', 'fruitful') + ), + array( + 'id' => 'yelp_url', + 'type' => 'text', + 'default' => '', + 'box-title' => __('Yelp', 'fruitful') + ), + array( + 'id' => 'email_link', + 'type' => 'text', + 'default' => '', + 'box-title' => __('E-mail', 'fruitful') + ), + array( + 'id' => 'github_link', + 'type' => 'text', + 'default' => '', + 'box-title' => __('Github', 'fruitful') + ), + array( + 'id' => 'tumblr_link', + 'type' => 'text', + 'default' => '', + 'box-title' => __('Tumblr', 'fruitful') + ), + array( + 'id' => 'soundcloud_link', + 'type' => 'text', + 'default' => '', + 'box-title' => __('Soundcloud', 'fruitful') + ), + array( + 'id' => 'tripadvisor_link', + 'type' => 'text', + 'default' => '', + 'box-title' => __('Tripadvisor', 'fruitful') + ), + ) + ), + ) + ); + + /*Footer*/ + $this->sections['footer'] = array( + 'title' => __( 'Footer', 'fruitful' ), + 'id' => 'footer', + 'fields' => array( + array( + 'id' => 'footer_text', + 'label' => __('Footer options','fruitful'), + 'info' => __('Replace default theme copyright information and links','fruitful'), + 'box-title' => __('Copyright section','fruitful'), + 'type' => 'textarea', + 'default' => __('Fruitful theme by fruitfulcode Powered by: WordPress','fruitful'), + ) + ) + ); + + /*Custom CSS*/ + $this->sections['custom-css'] = array( + 'title' => __( 'Custom CSS', 'fruitful' ), + 'id' => 'custom-css', + 'fields' => array( + array( + 'id' => 'custom_css', + 'label' => __('Custom CSS','fruitful'), + 'info' => __('Theme has two css files style.css and fixed-style.css which use default styles for front-end responsive and static layout. Do not edit theme default css files, use textarea editor below for overwriting all css styles.','fruitful'), + 'box-title' => __('Styles editor','fruitful'), + 'type' => 'textarea', + 'default' => '', + ) + ) + ); + + /*Woocommerce*/ + if (class_exists('Woocommerce')) { + $this->sections['woo'] = array( + 'title' => __( 'Woocommerce', 'fruitful' ), + 'id' => 'woo', + 'fields' => array( + array( + 'id' => 'showcart', + 'label' => __('Show cart in header','fruitful'), + 'info' => __('If you want to display cart link in header select options below.','fruitful'), + 'type' => 'checkbox', + 'description' => __('Enable','fruitful'), + 'default' => 'on', + ), + array( + 'label' => __('Cart color','fruitful'), + 'info' => __('Choose color for cart icon','fruitful'), + 'id' => 'cart_color', + 'type' => 'color', + 'default' => '#020202', + ), + array( + 'id' => 'woo_shop_sidebar', + 'label' => __('Woocommerce Shop Sidebar','fruitful'), + 'info' => __('Show or hide sidebar','fruitful'), + 'type' => 'select', + 'options' => array( + '2' => __('Left sidebar', 'fruitful'), + '1' => __('Full width', 'fruitful'), + '3' => __('Right sidebar', 'fruitful') + ), + 'default' => '2', + ), + array( + 'id' => 'woo_product_sidebar', + 'label' => __('Woocommerce Product Sidebar','fruitful'), + 'info' => __('Show or hide sidebar','fruitful'), + 'type' => 'select', + 'options' => array( + '1' => __('Full width with tabs on right side', 'fruitful'), + '2' => __('Left sidebar', 'fruitful'), + '3' => __('Right sidebar', 'fruitful'), + '4' => __('Full width with tabs on left side', 'fruitful'), + '5' => __('Full width with tabs in center', 'fruitful') + ), + 'default' => '1', + ), + array( + 'id' => 'shop_num_row', + 'label' => __('Woocommerce pages products per row','fruitful'), + 'info' => __('Choose number of products','fruitful'), + 'type' => 'select', + 'options' => array( + '2' => __('2 products', 'fruitful'), + '3' => __('3 products', 'fruitful'), + '4' => __('4 products', 'fruitful'), + '5' => __('5 products', 'fruitful') + ), + 'default' => '4', + ), + array( + 'id' => 'woo_shop_num_prod', + 'label' => __('Number of products on Shop pages','fruitful'), + 'info' => __('Choose number of products. Write -1 for show all products on one page','fruitful'), + 'type' => 'text', + 'default' => '10', + ), + ) + ); + } + + $this->sections = apply_filters('settings_fields', $this->sections); + return $this->sections; + } + + public function display_field ( $data = array(),$echo = true ) { + $field = $data; + $option_name = $data = ''; + + $id = (isset( $field['id'])) ? $field['id'] : ''; + $type = (isset($field['type'])) ? $field['type'] : ''; + + $option_name = $id; + $option = fruitful_get_theme_options(); + + if ( isset($option) ) { + $data = $option[$option_name]; + } + + if ($data == null && isset( $field['default']) ) { + $data = $field['default']; + } + elseif ( $data === null ) { + $data = ''; + } + $html = ''; + switch($type) { + case 'text': + if (!empty($field['box-title'])) $html .= '

          '.esc_attr($field['box-title']).'

          '; + $html .= '' . "\n"; + break; + case 'textarea': + if (!empty($field['box-title'])) $html .= '

          '.esc_attr($field['box-title']).'

          '; + $html .= ''. "\n"; + break; + case 'checkbox': + if (!empty($field['box-title'])) $html .= '

          '.esc_attr($field['box-title']).'

          '; + $html .= ''; + break; + case 'select': + $class = ''; + if (!empty($field['box-title'])) $html .= '

          '.esc_attr($field['box-title']).'

          '; + if (!empty($field['class'])) {$class = esc_attr($field['class']);} + $html .= ' '; + break; + case 'button': + $html .= ''; + break; + case 'image': + $html .= '
          '; + if ($data != '') { + $html .= '
          '; + $image_attributes = wp_get_attachment_image_src( $data, 'full'); + if (!empty($image_attributes)) { + $image_link = esc_url_raw($image_attributes[0]); + } + else { + $image_link = $data; + } + $html .= ''; + $html .= '
          '; + } + + $html .= ''; + $html .= '
          '; + $image_type = (isset($field['imagetype' ])) ? 'data-imagetype="'.$field['imagetype'].'"' : ''; + $html .= ''. __('Upload Image', 'fruitful') .''; + if(!empty($data)) { + $none = ''; + } else { + $none = 'none'; + } + $html .= ''.__('Remove', 'fruitful') .''; + $html .= '
          '; + $html .= '
          '; + break; + case 'color': + if (!empty($field['box-title'])) $html .= '

          '.esc_attr($field['box-title']).'

          '; + $html .= ''; + break; + case 'font': + $html .= '
          '; + $html .= ''; + $html .= ' '; + $html .= '
          '; + break; + case 'slides': + fruitful_slider_images(); + break; + } + if ( ! $echo ) { + return $html; + } + echo $html; + } + + + public function register_settings () { + if ( is_array( $this->sections ) ) { + foreach ( $this->sections as $section => $data ) { + add_settings_section( $section, $data['title'], '__return_false', $this->args['opt_slug']); + foreach ( $data['fields'] as $field ) { + $id = (isset($field['id' ])) ? $field['id'] : ''; + $label = (isset($field['label'])) ? $field['label'] : ''; + register_setting( $this->args['opt_group'], $this->args['opt_name'], '' ); + add_settings_field( $id, $label, array( $this, 'display_field' ), $this->args['opt_slug'], $section, $field); + } + } + } + } + + /** + * Renders the Theme Options administration screen. + * + * @since Fruitful theme 1.0 + */ + public function fruitful_theme_options_render_page() { + ?> +
          +

          +
          +
          +
          +

          + + +
          +
          + + args['opt_group']); + fruitful_custom_do_settings_sections($this->args['opt_slug']); + ?> + +
          + + + +
          + + +
          + post_parent ) && $image->post_parent != $id ) + $url .= '#main'; + + return $url; +} +add_filter( 'attachment_link', 'fruitful_enhanced_image_navigation', 10, 2 ); \ No newline at end of file diff --git a/themes/fruitful/inc/widgets.php b/themes/fruitful/inc/widgets.php new file mode 100644 index 0000000..1f8a1a9 --- /dev/null +++ b/themes/fruitful/inc/widgets.php @@ -0,0 +1,133 @@ + 'widget_news_archive', + 'description' => __( 'Use this widget to list your Link posts.', 'fruitful' ), + ) ); + } + /** + * Outputs the HTML for this widget. + * + * @param array An array of standard parameters for widgets in this theme + * @param array An array of settings for this widget instance + * @return void Echoes it's output + **/ + public function widget( $args, $instance ) { + $id_item = 0; + if (!isset( $args['widget_id'] ) ) + $args['widget_id'] = null; + + if (isset( $cache[$args['widget_id']] ) ) { + echo $cache[$args['widget_id']]; + return; + } + + $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? __( 'News-Archive', 'fruitful' ) : $instance['title'], $instance, $this->id_base); + $number = empty( $instance['number'] ) ? 10 : absint( $instance['number'] ); + $custom_content = empty ($instance['textarea_newsarchiv']) ? null : stripslashes($instance['textarea_newsarchiv']); + + $r = new WP_Query( + apply_filters( 'widget_posts_args', + array( 'posts_per_page' => -1, + 'no_found_rows' => true, + 'post_status' => 'publish', + 'ignore_sticky_posts' => true + ) + ) + ); + + if ($r->have_posts()) : + ?> + + + +
          + +

          + +
            + have_posts()) : $r->the_post(); ?> +
          • +
            +
          • + +
          +
          + + + + + + + + +

          +

          + +

          +

          + + +

          +

          + + + + + \ No newline at end of file diff --git a/themes/fruitful/js/fancySelect.js b/themes/fruitful/js/fancySelect.js new file mode 100644 index 0000000..8146cd0 --- /dev/null +++ b/themes/fruitful/js/fancySelect.js @@ -0,0 +1,206 @@ +// Generated by CoffeeScript 1.4.0 +(function() { + var $; + + $ = window.jQuery || window.Zepto || window.$; + + $.fn.fancySelect = function(opts) { + var isiOS, settings; + if (opts == null) { + opts = {}; + } + settings = $.extend({ + forceiOS: false, + includeBlank: false, + optionTemplate: function(optionEl) { + return optionEl.text(); + }, + triggerTemplate: function(optionEl) { + return optionEl.text(); + } + }, opts); + isiOS = !!navigator.userAgent.match(/iP(hone|od|ad)/i); + return this.each(function() { + var copyOptionsToList, disabled, options, sel, trigger, updateTriggerText, wrapper; + sel = $(this); + if (sel.hasClass('fancified') || sel[0].tagName !== 'SELECT') { + return; + } + sel.addClass('fancified'); + sel.css({ + width: 1, + height: 1, + display: 'block', + position: 'absolute', + top: 0, + left: 0, + opacity: 0 + }); + sel.wrap('
          '); + wrapper = sel.parent(); + if (sel.data('class')) { + wrapper.addClass(sel.data('class')); + } + wrapper.append('
          '); + if (!(isiOS && !settings.forceiOS)) { + wrapper.append('
            '); + } + trigger = wrapper.find('.trigger'); + options = wrapper.find('.options'); + disabled = sel.prop('disabled'); + if (disabled) { + wrapper.addClass('disabled'); + } + updateTriggerText = function() { + var triggerHtml; + triggerHtml = settings.triggerTemplate(sel.find(':selected')); + return trigger.html(triggerHtml); + }; + sel.on('blur.fs', function() { + if (trigger.hasClass('open')) { + return setTimeout(function() { + return trigger.trigger('close.fs'); + }, 120); + } + }); + trigger.on('close.fs', function() { + trigger.removeClass('open'); + return options.removeClass('open'); + }); + trigger.on('click.fs', function() { + var offParent, parent; + if (!disabled) { + trigger.toggleClass('open'); + if (isiOS && !settings.forceiOS) { + if (trigger.hasClass('open')) { + return sel.focus(); + } + } else { + if (trigger.hasClass('open')) { + parent = trigger.parent(); + offParent = parent.offsetParent(); + if ((parent.offset().top + parent.outerHeight() + options.outerHeight() + 20) > $(window).height() + $(window).scrollTop()) { + options.addClass('overflowing'); + } else { + options.removeClass('overflowing'); + } + } + options.toggleClass('open'); + if (!isiOS) { + return sel.focus(); + } + } + } + }); + sel.on('enable', function() { + sel.prop('disabled', false); + wrapper.removeClass('disabled'); + disabled = false; + return copyOptionsToList(); + }); + sel.on('disable', function() { + sel.prop('disabled', true); + wrapper.addClass('disabled'); + return disabled = true; + }); + sel.on('change.fs', function(e) { + if (e.originalEvent && e.originalEvent.isTrusted) { + return e.stopPropagation(); + } else { + return updateTriggerText(); + } + }); + sel.on('keydown', function(e) { + var hovered, newHovered, w; + w = e.which; + hovered = options.find('.hover'); + hovered.removeClass('hover'); + if (!options.hasClass('open')) { + if (w === 13 || w === 32 || w === 38 || w === 40) { + e.preventDefault(); + return trigger.trigger('click.fs'); + } + } else { + if (w === 38) { + e.preventDefault(); + if (hovered.length && hovered.index() > 0) { + hovered.prev().addClass('hover'); + } else { + options.find('li:last-child').addClass('hover'); + } + } else if (w === 40) { + e.preventDefault(); + if (hovered.length && hovered.index() < options.find('li').length - 1) { + hovered.next().addClass('hover'); + } else { + options.find('li:first-child').addClass('hover'); + } + } else if (w === 27) { + e.preventDefault(); + trigger.trigger('click.fs'); + } else if (w === 13 || w === 32) { + e.preventDefault(); + hovered.trigger('click.fs'); + } else if (w === 9) { + if (trigger.hasClass('open')) { + trigger.trigger('close.fs'); + } + } + newHovered = options.find('.hover'); + if (newHovered.length) { + options.scrollTop(0); + return options.scrollTop(newHovered.position().top - 12); + } + } + }); + options.on('click.fs', 'li', function(e) { + var clicked; + clicked = $(this); + sel.val(clicked.data('raw-value')); + if (!isiOS) { + sel.trigger('blur.fs').trigger('focus.fs'); + } + options.find('.selected').removeClass('selected'); + clicked.addClass('selected'); + trigger.addClass('selected'); + return sel.val(clicked.data('raw-value')).trigger('change.fs').trigger('blur.fs').trigger('focus.fs'); + }); + options.on('mouseenter.fs', 'li', function() { + var hovered, nowHovered; + nowHovered = $(this); + hovered = options.find('.hover'); + hovered.removeClass('hover'); + return nowHovered.addClass('hover'); + }); + options.on('mouseleave.fs', 'li', function() { + return options.find('.hover').removeClass('hover'); + }); + copyOptionsToList = function() { + var selOpts; + updateTriggerText(); + if (isiOS && !settings.forceiOS) { + return; + } + selOpts = sel.find('option'); + return sel.find('option').each(function(i, opt) { + var optHtml; + opt = $(opt); + if (!opt.prop('disabled') && (opt.val() || settings.includeBlank)) { + optHtml = settings.optionTemplate(opt); + if (opt.prop('selected')) { + return options.append("
          • " + optHtml + "
          • "); + } else { + return options.append("
          • " + optHtml + "
          • "); + } + } + }); + }; + sel.on('update.fs', function() { + wrapper.find('.options').empty(); + return copyOptionsToList(); + }); + return copyOptionsToList(); + }); + }; + +}).call(this); diff --git a/themes/fruitful/js/flex_slider/froogaloop.js b/themes/fruitful/js/flex_slider/froogaloop.js new file mode 100644 index 0000000..a9c7d2d --- /dev/null +++ b/themes/fruitful/js/flex_slider/froogaloop.js @@ -0,0 +1,4 @@ +var Froogaloop=function(){function e(c){return new e.fn.init(c)}function g(c,b,a){if(!a.contentWindow.postMessage)return!1;var d=a.getAttribute("src").split("?")[0],c=JSON.stringify({method:c,value:b});a.contentWindow.postMessage(c,d)}function i(c){var b,a;try{b=JSON.parse(c.data),a=b.event||b.method}catch(l){}"ready"==a&&!h&&(h=!0);if(c.origin!=j)return!1;var c=b.value,e=b.data,f=""===f?null:b.player_id;b=f?d[f][a]:d[a];a=[];if(!b)return!1;void 0!==c&&a.push(c);e&&a.push(e);f&&a.push(f);return 0< +a.length?b.apply(null,a):b.call()}function k(c,b,a){a?(d[a]||(d[a]={}),d[a][c]=b):d[c]=b}var d={},h=!1,j="";e.fn=e.prototype={element:null,init:function(c){"string"===typeof c&&(c=document.getElementById(c));this.element=c;for(var c=this.element.getAttribute("src").split("/"),b="",a=0,d=c.length;aa)b+=c[a];else break;2>a&&(b+="/")}j=b;return this},api:function(c,b){if(!this.element||!c)return!1;var a=this.element,d=""!==a.id?a.id:null,e=!b||!b.constructor||!b.call||!b.apply?b:null,f= +b&&b.constructor&&b.call&&b.apply?b:null;f&&k(c,f,d);g(c,e,a);return this},addEvent:function(c,b){if(!this.element)return!1;var a=this.element,d=""!==a.id?a.id:null;k(c,b,d);"ready"!=c?g("addEventListener",c,a):"ready"==c&&h&&b.call(null,d);return this},removeEvent:function(c){if(!this.element)return!1;var b=this.element,a;a:{if((a=""!==b.id?b.id:null)&&d[a]){if(!d[a][c]){a=!1;break a}d[a][c]=null}else{if(!d[c]){a=!1;break a}d[c]=null}a=!0}"ready"!=c&&a&&g("removeEventListener",c,b)}};e.fn.init.prototype= +e.fn;window.addEventListener?window.addEventListener("message",i,!1):window.attachEvent("onmessage",i,!1);return window.Froogaloop=window.$f=e}(); \ No newline at end of file diff --git a/themes/fruitful/js/flex_slider/images/bg_direction_nav.png b/themes/fruitful/js/flex_slider/images/bg_direction_nav.png new file mode 100644 index 0000000..80b0850 Binary files /dev/null and b/themes/fruitful/js/flex_slider/images/bg_direction_nav.png differ diff --git a/themes/fruitful/js/flex_slider/images/paging.png b/themes/fruitful/js/flex_slider/images/paging.png new file mode 100644 index 0000000..239bdb6 Binary files /dev/null and b/themes/fruitful/js/flex_slider/images/paging.png differ diff --git a/themes/fruitful/js/flex_slider/jquery.easing.js b/themes/fruitful/js/flex_slider/jquery.easing.js new file mode 100644 index 0000000..eea539e --- /dev/null +++ b/themes/fruitful/js/flex_slider/jquery.easing.js @@ -0,0 +1,205 @@ +/* + * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ + * + * Uses the built in easing capabilities added In jQuery 1.1 + * to offer multiple easing options + * + * TERMS OF USE - jQuery Easing + * + * Open source under the BSD License. + * + * Copyright © 2008 George McGinley Smith + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * Neither the name of the author nor the names of contributors may be used to endorse + * or promote products derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +// t: current time, b: begInnIng value, c: change In value, d: duration +jQuery.easing['jswing'] = jQuery.easing['swing']; + +jQuery.extend( jQuery.easing, +{ + def: 'easeOutQuad', + swing: function (x, t, b, c, d) { + //alert(jQuery.easing.default); + return jQuery.easing[jQuery.easing.def](x, t, b, c, d); + }, + easeInQuad: function (x, t, b, c, d) { + return c*(t/=d)*t + b; + }, + easeOutQuad: function (x, t, b, c, d) { + return -c *(t/=d)*(t-2) + b; + }, + easeInOutQuad: function (x, t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t + b; + return -c/2 * ((--t)*(t-2) - 1) + b; + }, + easeInCubic: function (x, t, b, c, d) { + return c*(t/=d)*t*t + b; + }, + easeOutCubic: function (x, t, b, c, d) { + return c*((t=t/d-1)*t*t + 1) + b; + }, + easeInOutCubic: function (x, t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t*t + b; + return c/2*((t-=2)*t*t + 2) + b; + }, + easeInQuart: function (x, t, b, c, d) { + return c*(t/=d)*t*t*t + b; + }, + easeOutQuart: function (x, t, b, c, d) { + return -c * ((t=t/d-1)*t*t*t - 1) + b; + }, + easeInOutQuart: function (x, t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t*t*t + b; + return -c/2 * ((t-=2)*t*t*t - 2) + b; + }, + easeInQuint: function (x, t, b, c, d) { + return c*(t/=d)*t*t*t*t + b; + }, + easeOutQuint: function (x, t, b, c, d) { + return c*((t=t/d-1)*t*t*t*t + 1) + b; + }, + easeInOutQuint: function (x, t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b; + return c/2*((t-=2)*t*t*t*t + 2) + b; + }, + easeInSine: function (x, t, b, c, d) { + return -c * Math.cos(t/d * (Math.PI/2)) + c + b; + }, + easeOutSine: function (x, t, b, c, d) { + return c * Math.sin(t/d * (Math.PI/2)) + b; + }, + easeInOutSine: function (x, t, b, c, d) { + return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; + }, + easeInExpo: function (x, t, b, c, d) { + return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b; + }, + easeOutExpo: function (x, t, b, c, d) { + return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; + }, + easeInOutExpo: function (x, t, b, c, d) { + if (t==0) return b; + if (t==d) return b+c; + if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b; + return c/2 * (-Math.pow(2, -10 * --t) + 2) + b; + }, + easeInCirc: function (x, t, b, c, d) { + return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b; + }, + easeOutCirc: function (x, t, b, c, d) { + return c * Math.sqrt(1 - (t=t/d-1)*t) + b; + }, + easeInOutCirc: function (x, t, b, c, d) { + if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b; + return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b; + }, + easeInElastic: function (x, t, b, c, d) { + var s=1.70158;var p=0;var a=c; + if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; + if (a < Math.abs(c)) { a=c; var s=p/4; } + else var s = p/(2*Math.PI) * Math.asin (c/a); + return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; + }, + easeOutElastic: function (x, t, b, c, d) { + var s=1.70158;var p=0;var a=c; + if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; + if (a < Math.abs(c)) { a=c; var s=p/4; } + else var s = p/(2*Math.PI) * Math.asin (c/a); + return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; + }, + easeInOutElastic: function (x, t, b, c, d) { + var s=1.70158;var p=0;var a=c; + if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5); + if (a < Math.abs(c)) { a=c; var s=p/4; } + else var s = p/(2*Math.PI) * Math.asin (c/a); + if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; + return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b; + }, + easeInBack: function (x, t, b, c, d, s) { + if (s == undefined) s = 1.70158; + return c*(t/=d)*t*((s+1)*t - s) + b; + }, + easeOutBack: function (x, t, b, c, d, s) { + if (s == undefined) s = 1.70158; + return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; + }, + easeInOutBack: function (x, t, b, c, d, s) { + if (s == undefined) s = 1.70158; + if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; + return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; + }, + easeInBounce: function (x, t, b, c, d) { + return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b; + }, + easeOutBounce: function (x, t, b, c, d) { + if ((t/=d) < (1/2.75)) { + return c*(7.5625*t*t) + b; + } else if (t < (2/2.75)) { + return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; + } else if (t < (2.5/2.75)) { + return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; + } else { + return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; + } + }, + easeInOutBounce: function (x, t, b, c, d) { + if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b; + return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b; + } +}); + +/* + * + * TERMS OF USE - EASING EQUATIONS + * + * Open source under the BSD License. + * + * Copyright © 2001 Robert Penner + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * Neither the name of the author nor the names of contributors may be used to endorse + * or promote products derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ \ No newline at end of file diff --git a/themes/fruitful/js/flex_slider/jquery.fitvid.js b/themes/fruitful/js/flex_slider/jquery.fitvid.js new file mode 100644 index 0000000..49e6b85 --- /dev/null +++ b/themes/fruitful/js/flex_slider/jquery.fitvid.js @@ -0,0 +1,11 @@ +/*global jQuery */ +/*! +* FitVids 1.0 +* +* Copyright 2011, Chris Coyier - http://css-tricks.com + Dave Rupert - http://daverupert.com +* Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/ +* Released under the WTFPL license - http://sam.zoy.org/wtfpl/ +* +* Date: Thu Sept 01 18:00:00 2011 -0500 +*/ +(function(a){a.fn.fitVids=function(b){var c={customSelector:null},d=document.createElement("div"),e=document.getElementsByTagName("base")[0]||document.getElementsByTagName("script")[0];return d.className="fit-vids-style",d.innerHTML="­",e.parentNode.insertBefore(d,e),b&&a.extend(c,b),this.each(function(){var b=["iframe[src^='http://player.vimeo.com']","iframe[src^='http://www.youtube.com']","iframe[src^='https://www.youtube.com']","iframe[src^='http://www.kickstarter.com']","iframe[src^='http://fast.wistia.com']","object","embed"];c.customSelector&&b.push(c.customSelector);var d=a(this).find(b.join(","));d.each(function(){var b=a(this);if(this.tagName.toLowerCase()=="embed"&&b.parent("object").length||b.parent(".fluid-width-video-wrapper").length)return;var c=this.tagName.toLowerCase()=="object"?b.attr("height"):b.height(),d=c/b.width();if(!b.attr("id")){var e="fitvid"+Math.floor(Math.random()*999999);b.attr("id",e)}b.wrap('
            ').parent(".fluid-width-video-wrapper").css("padding-top",d*100+"%"),b.removeAttr("height").removeAttr("width")})})}})(jQuery) \ No newline at end of file diff --git a/themes/fruitful/js/flex_slider/jquery.flexslider-min.js b/themes/fruitful/js/flex_slider/jquery.flexslider-min.js new file mode 100644 index 0000000..54f2ca9 --- /dev/null +++ b/themes/fruitful/js/flex_slider/jquery.flexslider-min.js @@ -0,0 +1,5 @@ +/* + * jQuery FlexSlider v2.5.0 + * Copyright 2012 WooThemes + * Contributing Author: Tyler Smith + */!function($){$.flexslider=function(e,t){var a=$(e);a.vars=$.extend({},$.flexslider.defaults,t);var n=a.vars.namespace,i=window.navigator&&window.navigator.msPointerEnabled&&window.MSGesture,s=("ontouchstart"in window||i||window.DocumentTouch&&document instanceof DocumentTouch)&&a.vars.touch,r="click touchend MSPointerUp keyup",o="",l,c="vertical"===a.vars.direction,d=a.vars.reverse,u=a.vars.itemWidth>0,v="fade"===a.vars.animation,p=""!==a.vars.asNavFor,m={},f=!0;$.data(e,"flexslider",a),m={init:function(){a.animating=!1,a.currentSlide=parseInt(a.vars.startAt?a.vars.startAt:0,10),isNaN(a.currentSlide)&&(a.currentSlide=0),a.animatingTo=a.currentSlide,a.atEnd=0===a.currentSlide||a.currentSlide===a.last,a.containerSelector=a.vars.selector.substr(0,a.vars.selector.search(" ")),a.slides=$(a.vars.selector,a),a.container=$(a.containerSelector,a),a.count=a.slides.length,a.syncExists=$(a.vars.sync).length>0,"slide"===a.vars.animation&&(a.vars.animation="swing"),a.prop=c?"top":"marginLeft",a.args={},a.manualPause=!1,a.stopped=!1,a.started=!1,a.startTimeout=null,a.transitions=!a.vars.video&&!v&&a.vars.useCSS&&function(){var e=document.createElement("div"),t=["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"];for(var n in t)if(void 0!==e.style[t[n]])return a.pfx=t[n].replace("Perspective","").toLowerCase(),a.prop="-"+a.pfx+"-transform",!0;return!1}(),a.ensureAnimationEnd="",""!==a.vars.controlsContainer&&(a.controlsContainer=$(a.vars.controlsContainer).length>0&&$(a.vars.controlsContainer)),""!==a.vars.manualControls&&(a.manualControls=$(a.vars.manualControls).length>0&&$(a.vars.manualControls)),""!==a.vars.customDirectionNav&&(a.customDirectionNav=2===$(a.vars.customDirectionNav).length&&$(a.vars.customDirectionNav)),a.vars.randomize&&(a.slides.sort(function(){return Math.round(Math.random())-.5}),a.container.empty().append(a.slides)),a.doMath(),a.setup("init"),a.vars.controlNav&&m.controlNav.setup(),a.vars.directionNav&&m.directionNav.setup(),a.vars.keyboard&&(1===$(a.containerSelector).length||a.vars.multipleKeyboard)&&$(document).bind("keyup",function(e){var t=e.keyCode;if(!a.animating&&(39===t||37===t)){var n=39===t?a.getTarget("next"):37===t?a.getTarget("prev"):!1;a.flexAnimate(n,a.vars.pauseOnAction)}}),a.vars.mousewheel&&a.bind("mousewheel",function(e,t,n,i){e.preventDefault();var s=a.getTarget(0>t?"next":"prev");a.flexAnimate(s,a.vars.pauseOnAction)}),a.vars.pausePlay&&m.pausePlay.setup(),a.vars.slideshow&&a.vars.pauseInvisible&&m.pauseInvisible.init(),a.vars.slideshow&&(a.vars.pauseOnHover&&a.hover(function(){a.manualPlay||a.manualPause||a.pause()},function(){a.manualPause||a.manualPlay||a.stopped||a.play()}),a.vars.pauseInvisible&&m.pauseInvisible.isHidden()||(a.vars.initDelay>0?a.startTimeout=setTimeout(a.play,a.vars.initDelay):a.play())),p&&m.asNav.setup(),s&&a.vars.touch&&m.touch(),(!v||v&&a.vars.smoothHeight)&&$(window).bind("resize orientationchange focus",m.resize),a.find("img").attr("draggable","false"),setTimeout(function(){a.vars.start(a)},200)},asNav:{setup:function(){a.asNav=!0,a.animatingTo=Math.floor(a.currentSlide/a.move),a.currentItem=a.currentSlide,a.slides.removeClass(n+"active-slide").eq(a.currentItem).addClass(n+"active-slide"),i?(e._slider=a,a.slides.each(function(){var e=this;e._gesture=new MSGesture,e._gesture.target=e,e.addEventListener("MSPointerDown",function(e){e.preventDefault(),e.currentTarget._gesture&&e.currentTarget._gesture.addPointer(e.pointerId)},!1),e.addEventListener("MSGestureTap",function(e){e.preventDefault();var t=$(this),n=t.index();$(a.vars.asNavFor).data("flexslider").animating||t.hasClass("active")||(a.direction=a.currentItem=s&&t.hasClass(n+"active-slide")?a.flexAnimate(a.getTarget("prev"),!0):$(a.vars.asNavFor).data("flexslider").animating||t.hasClass(n+"active-slide")||(a.direction=a.currentItem'),a.pagingCount>1)for(var l=0;l':""+t+"","thumbnails"===a.vars.controlNav&&!0===a.vars.thumbCaptions){var c=s.attr("data-thumbcaption");""!==c&&void 0!==c&&(i+=''+c+"")}a.controlNavScaffold.append("
          • "+i+"
          • "),t++}a.controlsContainer?$(a.controlsContainer).append(a.controlNavScaffold):a.append(a.controlNavScaffold),m.controlNav.set(),m.controlNav.active(),a.controlNavScaffold.delegate("a, img",r,function(e){if(e.preventDefault(),""===o||o===e.type){var t=$(this),i=a.controlNav.index(t);t.hasClass(n+"active")||(a.direction=i>a.currentSlide?"next":"prev",a.flexAnimate(i,a.vars.pauseOnAction))}""===o&&(o=e.type),m.setToClearWatchedEvent()})},setupManual:function(){a.controlNav=a.manualControls,m.controlNav.active(),a.controlNav.bind(r,function(e){if(e.preventDefault(),""===o||o===e.type){var t=$(this),i=a.controlNav.index(t);t.hasClass(n+"active")||(a.direction=i>a.currentSlide?"next":"prev",a.flexAnimate(i,a.vars.pauseOnAction))}""===o&&(o=e.type),m.setToClearWatchedEvent()})},set:function(){var e="thumbnails"===a.vars.controlNav?"img":"a";a.controlNav=$("."+n+"control-nav li "+e,a.controlsContainer?a.controlsContainer:a)},active:function(){a.controlNav.removeClass(n+"active").eq(a.animatingTo).addClass(n+"active")},update:function(e,t){a.pagingCount>1&&"add"===e?a.controlNavScaffold.append($("
          • "+a.count+"
          • ")):1===a.pagingCount?a.controlNavScaffold.find("li").remove():a.controlNav.eq(t).closest("li").remove(),m.controlNav.set(),a.pagingCount>1&&a.pagingCount!==a.controlNav.length?a.update(t,e):m.controlNav.active()}},directionNav:{setup:function(){var e=$('");a.customDirectionNav?a.directionNav=a.customDirectionNav:a.controlsContainer?($(a.controlsContainer).append(e),a.directionNav=$("."+n+"direction-nav li a",a.controlsContainer)):(a.append(e),a.directionNav=$("."+n+"direction-nav li a",a)),m.directionNav.update(),a.directionNav.bind(r,function(e){e.preventDefault();var t;(""===o||o===e.type)&&(t=a.getTarget($(this).hasClass(n+"next")?"next":"prev"),a.flexAnimate(t,a.vars.pauseOnAction)),""===o&&(o=e.type),m.setToClearWatchedEvent()})},update:function(){var e=n+"disabled";1===a.pagingCount?a.directionNav.addClass(e).attr("tabindex","-1"):a.vars.animationLoop?a.directionNav.removeClass(e).removeAttr("tabindex"):0===a.animatingTo?a.directionNav.removeClass(e).filter("."+n+"prev").addClass(e).attr("tabindex","-1"):a.animatingTo===a.last?a.directionNav.removeClass(e).filter("."+n+"next").addClass(e).attr("tabindex","-1"):a.directionNav.removeClass(e).removeAttr("tabindex")}},pausePlay:{setup:function(){var e=$('
            ');a.controlsContainer?(a.controlsContainer.append(e),a.pausePlay=$("."+n+"pauseplay a",a.controlsContainer)):(a.append(e),a.pausePlay=$("."+n+"pauseplay a",a)),m.pausePlay.update(a.vars.slideshow?n+"pause":n+"play"),a.pausePlay.bind(r,function(e){e.preventDefault(),(""===o||o===e.type)&&($(this).hasClass(n+"pause")?(a.manualPause=!0,a.manualPlay=!1,a.pause()):(a.manualPause=!1,a.manualPlay=!0,a.play())),""===o&&(o=e.type),m.setToClearWatchedEvent()})},update:function(e){"play"===e?a.pausePlay.removeClass(n+"pause").addClass(n+"play").html(a.vars.playText):a.pausePlay.removeClass(n+"play").addClass(n+"pause").html(a.vars.pauseText)}},touch:function(){function t(t){t.stopPropagation(),a.animating?t.preventDefault():(a.pause(),e._gesture.addPointer(t.pointerId),w=0,p=c?a.h:a.w,f=Number(new Date),l=u&&d&&a.animatingTo===a.last?0:u&&d?a.limit-(a.itemW+a.vars.itemMargin)*a.move*a.animatingTo:u&&a.currentSlide===a.last?a.limit:u?(a.itemW+a.vars.itemMargin)*a.move*a.currentSlide:d?(a.last-a.currentSlide+a.cloneOffset)*p:(a.currentSlide+a.cloneOffset)*p)}function n(t){t.stopPropagation();var a=t.target._slider;if(a){var n=-t.translationX,i=-t.translationY;return w+=c?i:n,m=w,y=c?Math.abs(w)500)&&(t.preventDefault(),!v&&a.transitions&&(a.vars.animationLoop||(m=w/(0===a.currentSlide&&0>w||a.currentSlide===a.last&&w>0?Math.abs(w)/p+2:1)),a.setProps(l+m,"setTouch"))))}}function s(e){e.stopPropagation();var t=e.target._slider;if(t){if(t.animatingTo===t.currentSlide&&!y&&null!==m){var a=d?-m:m,n=t.getTarget(a>0?"next":"prev");t.canAdvance(n)&&(Number(new Date)-f<550&&Math.abs(a)>50||Math.abs(a)>p/2)?t.flexAnimate(n,t.vars.pauseOnAction):v||t.flexAnimate(t.currentSlide,t.vars.pauseOnAction,!0)}r=null,o=null,m=null,l=null,w=0}}var r,o,l,p,m,f,g,h,S,y=!1,x=0,b=0,w=0;i?(e.style.msTouchAction="none",e._gesture=new MSGesture,e._gesture.target=e,e.addEventListener("MSPointerDown",t,!1),e._slider=a,e.addEventListener("MSGestureChange",n,!1),e.addEventListener("MSGestureEnd",s,!1)):(g=function(t){a.animating?t.preventDefault():(window.navigator.msPointerEnabled||1===t.touches.length)&&(a.pause(),p=c?a.h:a.w,f=Number(new Date),x=t.touches[0].pageX,b=t.touches[0].pageY,l=u&&d&&a.animatingTo===a.last?0:u&&d?a.limit-(a.itemW+a.vars.itemMargin)*a.move*a.animatingTo:u&&a.currentSlide===a.last?a.limit:u?(a.itemW+a.vars.itemMargin)*a.move*a.currentSlide:d?(a.last-a.currentSlide+a.cloneOffset)*p:(a.currentSlide+a.cloneOffset)*p,r=c?b:x,o=c?x:b,e.addEventListener("touchmove",h,!1),e.addEventListener("touchend",S,!1))},h=function(e){x=e.touches[0].pageX,b=e.touches[0].pageY,m=c?r-b:r-x,y=c?Math.abs(m)t)&&(e.preventDefault(),!v&&a.transitions&&(a.vars.animationLoop||(m/=0===a.currentSlide&&0>m||a.currentSlide===a.last&&m>0?Math.abs(m)/p+2:1),a.setProps(l+m,"setTouch")))},S=function(t){if(e.removeEventListener("touchmove",h,!1),a.animatingTo===a.currentSlide&&!y&&null!==m){var n=d?-m:m,i=a.getTarget(n>0?"next":"prev");a.canAdvance(i)&&(Number(new Date)-f<550&&Math.abs(n)>50||Math.abs(n)>p/2)?a.flexAnimate(i,a.vars.pauseOnAction):v||a.flexAnimate(a.currentSlide,a.vars.pauseOnAction,!0)}e.removeEventListener("touchend",S,!1),r=null,o=null,m=null,l=null},e.addEventListener("touchstart",g,!1))},resize:function(){!a.animating&&a.is(":visible")&&(u||a.doMath(),v?m.smoothHeight():u?(a.slides.width(a.computedW),a.update(a.pagingCount),a.setProps()):c?(a.viewport.height(a.h),a.setProps(a.h,"setTotal")):(a.vars.smoothHeight&&m.smoothHeight(),a.newSlides.width(a.computedW),a.setProps(a.computedW,"setTotal")))},smoothHeight:function(e){if(!c||v){var t=v?a:a.viewport;e?t.animate({height:a.slides.eq(a.animatingTo).height()},e):t.height(a.slides.eq(a.animatingTo).height())}},sync:function(e){var t=$(a.vars.sync).data("flexslider"),n=a.animatingTo;switch(e){case"animate":t.flexAnimate(n,a.vars.pauseOnAction,!1,!0);break;case"play":t.playing||t.asNav||t.play();break;case"pause":t.pause()}},uniqueID:function(e){return e.filter("[id]").add(e.find("[id]")).each(function(){var e=$(this);e.attr("id",e.attr("id")+"_clone")}),e},pauseInvisible:{visProp:null,init:function(){var e=m.pauseInvisible.getHiddenProp();if(e){var t=e.replace(/[H|h]idden/,"")+"visibilitychange";document.addEventListener(t,function(){m.pauseInvisible.isHidden()?a.startTimeout?clearTimeout(a.startTimeout):a.pause():a.started?a.play():a.vars.initDelay>0?setTimeout(a.play,a.vars.initDelay):a.play()})}},isHidden:function(){var e=m.pauseInvisible.getHiddenProp();return e?document[e]:!1},getHiddenProp:function(){var e=["webkit","moz","ms","o"];if("hidden"in document)return"hidden";for(var t=0;ta.currentSlide?"next":"prev"),p&&1===a.pagingCount&&(a.direction=a.currentItema.limit&&1!==a.visible?a.limit:S):h=0===a.currentSlide&&e===a.count-1&&a.vars.animationLoop&&"next"!==a.direction?d?(a.count+a.cloneOffset)*f:0:a.currentSlide===a.last&&0===e&&a.vars.animationLoop&&"prev"!==a.direction?d?0:(a.count+1)*f:d?(a.count-1-e+a.cloneOffset)*f:(e+a.cloneOffset)*f,a.setProps(h,"",a.vars.animationSpeed),a.transitions?(a.vars.animationLoop&&a.atEnd||(a.animating=!1,a.currentSlide=a.animatingTo),a.container.unbind("webkitTransitionEnd transitionend"),a.container.bind("webkitTransitionEnd transitionend",function(){clearTimeout(a.ensureAnimationEnd),a.wrapup(f)}),clearTimeout(a.ensureAnimationEnd),a.ensureAnimationEnd=setTimeout(function(){a.wrapup(f)},a.vars.animationSpeed+100)):a.container.animate(a.args,a.vars.animationSpeed,a.vars.easing,function(){a.wrapup(f)})}a.vars.smoothHeight&&m.smoothHeight(a.vars.animationSpeed)}},a.wrapup=function(e){v||u||(0===a.currentSlide&&a.animatingTo===a.last&&a.vars.animationLoop?a.setProps(e,"jumpEnd"):a.currentSlide===a.last&&0===a.animatingTo&&a.vars.animationLoop&&a.setProps(e,"jumpStart")),a.animating=!1,a.currentSlide=a.animatingTo,a.vars.after(a)},a.animateSlides=function(){!a.animating&&f&&a.flexAnimate(a.getTarget("next"))},a.pause=function(){clearInterval(a.animatedSlides),a.animatedSlides=null,a.playing=!1,a.vars.pausePlay&&m.pausePlay.update("play"),a.syncExists&&m.sync("pause")},a.play=function(){a.playing&&clearInterval(a.animatedSlides),a.animatedSlides=a.animatedSlides||setInterval(a.animateSlides,a.vars.slideshowSpeed),a.started=a.playing=!0,a.vars.pausePlay&&m.pausePlay.update("pause"),a.syncExists&&m.sync("play")},a.stop=function(){a.pause(),a.stopped=!0},a.canAdvance=function(e,t){var n=p?a.pagingCount-1:a.last;return t?!0:p&&a.currentItem===a.count-1&&0===e&&"prev"===a.direction?!0:p&&0===a.currentItem&&e===a.pagingCount-1&&"next"!==a.direction?!1:e!==a.currentSlide||p?a.vars.animationLoop?!0:a.atEnd&&0===a.currentSlide&&e===n&&"next"!==a.direction?!1:a.atEnd&&a.currentSlide===n&&0===e&&"next"===a.direction?!1:!0:!1},a.getTarget=function(e){return a.direction=e,"next"===e?a.currentSlide===a.last?0:a.currentSlide+1:0===a.currentSlide?a.last:a.currentSlide-1},a.setProps=function(e,t,n){var i=function(){var n=e?e:(a.itemW+a.vars.itemMargin)*a.move*a.animatingTo,i=function(){if(u)return"setTouch"===t?e:d&&a.animatingTo===a.last?0:d?a.limit-(a.itemW+a.vars.itemMargin)*a.move*a.animatingTo:a.animatingTo===a.last?a.limit:n;switch(t){case"setTotal":return d?(a.count-1-a.currentSlide+a.cloneOffset)*e:(a.currentSlide+a.cloneOffset)*e;case"setTouch":return d?e:e;case"jumpEnd":return d?e:a.count*e;case"jumpStart":return d?a.count*e:e;default:return e}}();return-1*i+"px"}();a.transitions&&(i=c?"translate3d(0,"+i+",0)":"translate3d("+i+",0,0)",n=void 0!==n?n/1e3+"s":"0s",a.container.css("-"+a.pfx+"-transition-duration",n),a.container.css("transition-duration",n)),a.args[a.prop]=i,(a.transitions||void 0===n)&&a.container.css(a.args),a.container.css("transform",i)},a.setup=function(e){if(v)a.slides.css({width:"100%","float":"left",marginRight:"-100%",position:"relative"}),"init"===e&&(s?a.slides.css({opacity:0,display:"block",webkitTransition:"opacity "+a.vars.animationSpeed/1e3+"s ease",zIndex:1}).eq(a.currentSlide).css({opacity:1,zIndex:2}):0==a.vars.fadeFirstSlide?a.slides.css({opacity:0,display:"block",zIndex:1}).eq(a.currentSlide).css({zIndex:2}).css({opacity:1}):a.slides.css({opacity:0,display:"block",zIndex:1}).eq(a.currentSlide).css({zIndex:2}).animate({opacity:1},a.vars.animationSpeed,a.vars.easing)),a.vars.smoothHeight&&m.smoothHeight();else{var t,i;"init"===e&&(a.viewport=$('
            ').css({overflow:"hidden",position:"relative"}).appendTo(a).append(a.container),a.cloneCount=0,a.cloneOffset=0,d&&(i=$.makeArray(a.slides).reverse(),a.slides=$(i),a.container.empty().append(a.slides))),a.vars.animationLoop&&!u&&(a.cloneCount=2,a.cloneOffset=1,"init"!==e&&a.container.find(".clone").remove(),a.container.append(m.uniqueID(a.slides.first().clone().addClass("clone")).attr("aria-hidden","true")).prepend(m.uniqueID(a.slides.last().clone().addClass("clone")).attr("aria-hidden","true"))),a.newSlides=$(a.vars.selector,a),t=d?a.count-1-a.currentSlide+a.cloneOffset:a.currentSlide+a.cloneOffset,c&&!u?(a.container.height(200*(a.count+a.cloneCount)+"%").css("position","absolute").width("100%"),setTimeout(function(){a.newSlides.css({display:"block"}),a.doMath(),a.viewport.height(a.h),a.setProps(t*a.h,"init")},"init"===e?100:0)):(a.container.width(200*(a.count+a.cloneCount)+"%"),a.setProps(t*a.computedW,"init"),setTimeout(function(){a.doMath(),a.newSlides.css({width:a.computedW,"float":"left",display:"block"}),a.vars.smoothHeight&&m.smoothHeight()},"init"===e?100:0))}u||a.slides.removeClass(n+"active-slide").eq(a.currentSlide).addClass(n+"active-slide"),a.vars.init(a)},a.doMath=function(){var e=a.slides.first(),t=a.vars.itemMargin,n=a.vars.minItems,i=a.vars.maxItems;a.w=void 0===a.viewport?a.width():a.viewport.width(),a.h=e.height(),a.boxPadding=e.outerWidth()-e.width(),u?(a.itemT=a.vars.itemWidth+t,a.minW=n?n*a.itemT:a.w,a.maxW=i?i*a.itemT-t:a.w,a.itemW=a.minW>a.w?(a.w-t*(n-1))/n:a.maxWa.w?a.w:a.vars.itemWidth,a.visible=Math.floor(a.w/a.itemW),a.move=a.vars.move>0&&a.vars.movea.w?a.itemW*(a.count-1)+t*(a.count-1):(a.itemW+t)*a.count-a.w-t):(a.itemW=a.w,a.pagingCount=a.count,a.last=a.count-1),a.computedW=a.itemW-a.boxPadding},a.update=function(e,t){a.doMath(),u||(ea.controlNav.length?m.controlNav.update("add"):("remove"===t&&!u||a.pagingCounta.last&&(a.currentSlide-=1,a.animatingTo-=1),m.controlNav.update("remove",a.last))),a.vars.directionNav&&m.directionNav.update()},a.addSlide=function(e,t){var n=$(e);a.count+=1,a.last=a.count-1,c&&d?void 0!==t?a.slides.eq(a.count-t).after(n):a.container.prepend(n):void 0!==t?a.slides.eq(t).before(n):a.container.append(n),a.update(t,"add"),a.slides=$(a.vars.selector+":not(.clone)",a),a.setup(),a.vars.added(a)},a.removeSlide=function(e){var t=isNaN(e)?a.slides.index($(e)):e;a.count-=1,a.last=a.count-1,isNaN(e)?$(e,a.slides).remove():c&&d?a.slides.eq(a.last).remove():a.slides.eq(e).remove(),a.doMath(),a.update(t,"remove"),a.slides=$(a.vars.selector+":not(.clone)",a),a.setup(),a.vars.removed(a)},m.init()},$(window).blur(function(e){focused=!1}).focus(function(e){focused=!0}),$.flexslider.defaults={namespace:"flex-",selector:".slides > li",animation:"fade",easing:"swing",direction:"horizontal",reverse:!1,animationLoop:!0,smoothHeight:!1,startAt:0,slideshow:!0,slideshowSpeed:7e3,animationSpeed:600,initDelay:0,randomize:!1,fadeFirstSlide:!0,thumbCaptions:!1,pauseOnAction:!0,pauseOnHover:!1,pauseInvisible:!0,useCSS:!0,touch:!0,video:!1,controlNav:!0,directionNav:!0,prevText:"Previous",nextText:"Next",keyboard:!0,multipleKeyboard:!1,mousewheel:!1,pausePlay:!1,pauseText:"Pause",playText:"Play",controlsContainer:"",manualControls:"",customDirectionNav:"",sync:"",asNavFor:"",itemWidth:0,itemMargin:0,minItems:1,maxItems:0,move:0,allowOneSlide:!0,start:function(){},before:function(){},after:function(){},end:function(){},added:function(){},removed:function(){},init:function(){}},$.fn.flexslider=function(e){if(void 0===e&&(e={}),"object"==typeof e)return this.each(function(){var t=$(this),a=e.selector?e.selector:".slides > li",n=t.find(a);1===n.length&&e.allowOneSlide===!0||0===n.length?(n.fadeIn(400),e.start&&e.start(t)):void 0===t.data("flexslider")&&new $.flexslider(this,e)});var t=$(this).data("flexslider");switch(e){case"play":t.play();break;case"pause":t.pause();break;case"stop":t.stop();break;case"next":t.flexAnimate(t.getTarget("next"),!0);break;case"prev":case"previous":t.flexAnimate(t.getTarget("prev"),!0);break;default:"number"==typeof e&&t.flexAnimate(e,!0)}}}(jQuery); \ No newline at end of file diff --git a/themes/fruitful/js/flex_slider/jquery.mousewheel.js b/themes/fruitful/js/flex_slider/jquery.mousewheel.js new file mode 100644 index 0000000..f1d5f72 --- /dev/null +++ b/themes/fruitful/js/flex_slider/jquery.mousewheel.js @@ -0,0 +1,84 @@ +/*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net) + * Licensed under the MIT License (LICENSE.txt). + * + * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers. + * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix. + * Thanks to: Seamus Leahy for adding deltaX and deltaY + * + * Version: 3.0.6 + * + * Requires: 1.2.2+ + */ + +(function($) { + +var types = ['DOMMouseScroll', 'mousewheel']; + +if ($.event.fixHooks) { + for ( var i=types.length; i; ) { + $.event.fixHooks[ types[--i] ] = $.event.mouseHooks; + } +} + +$.event.special.mousewheel = { + setup: function() { + if ( this.addEventListener ) { + for ( var i=types.length; i; ) { + this.addEventListener( types[--i], handler, false ); + } + } else { + this.onmousewheel = handler; + } + }, + + teardown: function() { + if ( this.removeEventListener ) { + for ( var i=types.length; i; ) { + this.removeEventListener( types[--i], handler, false ); + } + } else { + this.onmousewheel = null; + } + } +}; + +$.fn.extend({ + mousewheel: function(fn) { + return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel"); + }, + + unmousewheel: function(fn) { + return this.unbind("mousewheel", fn); + } +}); + + +function handler(event) { + var orgEvent = event || window.event, args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0; + event = $.event.fix(orgEvent); + event.type = "mousewheel"; + + // Old school scrollwheel delta + if ( orgEvent.wheelDelta ) { delta = orgEvent.wheelDelta/120; } + if ( orgEvent.detail ) { delta = -orgEvent.detail/3; } + + // New school multidimensional scroll (touchpads) deltas + deltaY = delta; + + // Gecko + if ( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) { + deltaY = 0; + deltaX = -1*delta; + } + + // Webkit + if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY/120; } + if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = -1*orgEvent.wheelDeltaX/120; } + + // Add event and delta to the front of the arguments + args.unshift(event, delta, deltaX, deltaY); + + return ($.event.dispatch || $.event.handle).apply(this, args); +} + +})(jQuery); \ No newline at end of file diff --git a/themes/fruitful/js/flex_slider/modernizr.js b/themes/fruitful/js/flex_slider/modernizr.js new file mode 100644 index 0000000..471dead --- /dev/null +++ b/themes/fruitful/js/flex_slider/modernizr.js @@ -0,0 +1,2 @@ +/* Modernizr 2.0.6 (Custom Build) | MIT & BSD */ +;window.Modernizr=function(a,b,c){function D(a,b){var c=a.charAt(0).toUpperCase()+a.substr(1),d=(a+" "+o.join(c+" ")+c).split(" ");return C(d,b)}function C(a,b){for(var d in a)if(k[a[d]]!==c)return b=="pfx"?a[d]:!0;return!1}function B(a,b){return!!~(""+a).indexOf(b)}function A(a,b){return typeof a===b}function z(a,b){return y(n.join(a+";")+(b||""))}function y(a){k.cssText=a}var d="2.0.6",e={},f=!0,g=b.documentElement,h=b.head||b.getElementsByTagName("head")[0],i="modernizr",j=b.createElement(i),k=j.style,l,m=Object.prototype.toString,n=" -webkit- -moz- -o- -ms- -khtml- ".split(" "),o="Webkit Moz O ms Khtml".split(" "),p={},q={},r={},s=[],t=function(a,c,d,e){var f,h,j,k=b.createElement("div");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:i+(d+1),k.appendChild(j);f=["­",""].join(""),k.id=i,k.innerHTML+=f,g.appendChild(k),h=c(k,a),k.parentNode.removeChild(k);return!!h},u=function(b){if(a.matchMedia)return matchMedia(b).matches;var c;t("@media "+b+" { #"+i+" { position: absolute; } }",function(b){c=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).position=="absolute"});return c},v,w={}.hasOwnProperty,x;!A(w,c)&&!A(w.call,c)?x=function(a,b){return w.call(a,b)}:x=function(a,b){return b in a&&A(a.constructor.prototype[b],c)},p.rgba=function(){y("background-color:rgba(150,255,150,.5)");return B(k.backgroundColor,"rgba")},p.boxshadow=function(){return D("boxShadow")},p.csstransitions=function(){return D("transitionProperty")};for(var E in p)x(p,E)&&(v=E.toLowerCase(),e[v]=p[E](),s.push((e[v]?"":"no-")+v));e.addTest=function(a,b){if(typeof a=="object")for(var d in a)x(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return;b=typeof b=="boolean"?b:!!b(),g.className+=" "+(b?"":"no-")+a,e[a]=b}return e},y(""),j=l=null,a.attachEvent&&function(){var a=b.createElement("div");a.innerHTML="";return a.childNodes.length!==1}()&&function(a,b){function s(a){var b=-1;while(++b=u.minw)&&(!u.maxw||u.maxw&&l<=u.maxw))m[u.media]||(m[u.media]=[]),m[u.media].push(f[u.rules])}for(var t in g)g[t]&&g[t].parentNode===j&&j.removeChild(g[t]);for(var t in m){var v=c.createElement("style"),w=m[t].join("\n");v.type="text/css",v.media=t,v.styleSheet?v.styleSheet.cssText=w:v.appendChild(c.createTextNode(w)),n.appendChild(v),g.push(v)}j.insertBefore(n,o.nextSibling)}},s=function(a,b){var c=t();if(!!c){c.open("GET",a,!0),c.onreadystatechange=function(){c.readyState==4&&(c.status==200||c.status==304)&&b(c.responseText)};if(c.readyState==4)return;c.send()}},t=function(){var a=!1,b=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new XMLHttpRequest}],c=b.length;while(c--){try{a=b[c]()}catch(d){continue}break}return function(){return a}}();m(),respond.update=m,a.addEventListener?a.addEventListener("resize",u,!1):a.attachEvent&&a.attachEvent("onresize",u)}}(this,Modernizr.mq("only all")),function(a,b,c){function k(a){return!a||a=="loaded"||a=="complete"}function j(){var a=1,b=-1;while(p.length- ++b)if(p[b].s&&!(a=p[b].r))break;a&&g()}function i(a){var c=b.createElement("script"),d;c.src=a.s,c.onreadystatechange=c.onload=function(){!d&&k(c.readyState)&&(d=1,j(),c.onload=c.onreadystatechange=null)},m(function(){d||(d=1,j())},H.errorTimeout),a.e?c.onload():n.parentNode.insertBefore(c,n)}function h(a){var c=b.createElement("link"),d;c.href=a.s,c.rel="stylesheet",c.type="text/css";if(!a.e&&(w||r)){var e=function(a){m(function(){if(!d)try{a.sheet.cssRules.length?(d=1,j()):e(a)}catch(b){b.code==1e3||b.message=="security"||b.message=="denied"?(d=1,m(function(){j()},0)):e(a)}},0)};e(c)}else c.onload=function(){d||(d=1,m(function(){j()},0))},a.e&&c.onload();m(function(){d||(d=1,j())},H.errorTimeout),!a.e&&n.parentNode.insertBefore(c,n)}function g(){var a=p.shift();q=1,a?a.t?m(function(){a.t=="c"?h(a):i(a)},0):(a(),j()):q=0}function f(a,c,d,e,f,h){function i(){!o&&k(l.readyState)&&(r.r=o=1,!q&&j(),l.onload=l.onreadystatechange=null,m(function(){u.removeChild(l)},0))}var l=b.createElement(a),o=0,r={t:d,s:c,e:h};l.src=l.data=c,!s&&(l.style.display="none"),l.width=l.height="0",a!="object"&&(l.type=d),l.onload=l.onreadystatechange=i,a=="img"?l.onerror=i:a=="script"&&(l.onerror=function(){r.e=r.r=1,g()}),p.splice(e,0,r),u.insertBefore(l,s?null:n),m(function(){o||(u.removeChild(l),r.r=r.e=o=1,j())},H.errorTimeout)}function e(a,b,c){var d=b=="c"?z:y;q=0,b=b||"j",C(a)?f(d,a,b,this.i++,l,c):(p.splice(this.i++,0,a),p.length==1&&g());return this}function d(){var a=H;a.loader={load:e,i:0};return a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=r&&!s,u=s?l:n.parentNode,v=a.opera&&o.call(a.opera)=="[object Opera]",w="webkitAppearance"in l.style,x=w&&"async"in b.createElement("script"),y=r?"object":v||x?"img":"script",z=w?"img":y,A=Array.isArray||function(a){return o.call(a)=="[object Array]"},B=function(a){return Object(a)===a},C=function(a){return typeof a=="string"},D=function(a){return o.call(a)=="[object Function]"},E=[],F={},G,H;H=function(a){function f(a){var b=a.split("!"),c=E.length,d=b.pop(),e=b.length,f={url:d,origUrl:d,prefixes:b},g,h;for(h=0;h
          '; + break; + case 'twentythirteen' : + echo '
        • '; + break; + case 'twentyfourteen' : + echo '
          '; + get_sidebar( 'content' ); + break; + case 'fruitful' : + if ($woo_sidebar == 1 || $woo_sidebar == 4 || $woo_sidebar == 5) { + echo '
          '; + } elseif($woo_sidebar == 2) { + echo '
          '; + echo '
          '; + if (is_shop() || is_product_category()) { + get_sidebar( 'shop' ); + } else { + get_sidebar( 'product' ); + } + echo '
          '; + } else { + echo ''; + echo '
          '; + if (is_shop() || is_product_category()){ + get_sidebar( 'shop' ); + } else { + get_sidebar( 'product' ); + } + echo '
          '; + } + break; + default : + echo ''; + break; +} \ No newline at end of file diff --git a/themes/fruitful/woocommerce/global/wrapper-start.php b/themes/fruitful/woocommerce/global/wrapper-start.php new file mode 100644 index 0000000..677e510 --- /dev/null +++ b/themes/fruitful/woocommerce/global/wrapper-start.php @@ -0,0 +1,50 @@ +
          '; + break; + case 'twentytwelve' : + echo '
          '; + break; + case 'twentythirteen' : + echo '
          '; + break; + case 'twentyfourteen' : + echo '
          '; + break; + case 'fruitful' : + $theme_options = fruitful_get_theme_options(); + $prod_num_row_class = ''; + if (is_shop() || is_product_category() || is_tax('product_tag')) { + if (!empty($theme_options['shop_num_row'])){ + $prod_num_row = $theme_options['shop_num_row']; + $prod_num_row_class = 'prod_num_row-'.$prod_num_row; + } + } + + if ($woo_sidebar == 1 || $woo_sidebar == 4 || $woo_sidebar == 5){ + echo '
          '; + } elseif($woo_sidebar == 2) { + echo '
          '; + } else { + echo '
          '; + } + + break; + default : + echo '
          '; + break; +} \ No newline at end of file diff --git a/themes/fruitful/woocommerce/ie.css b/themes/fruitful/woocommerce/ie.css new file mode 100644 index 0000000..eb9a04c --- /dev/null +++ b/themes/fruitful/woocommerce/ie.css @@ -0,0 +1 @@ +/* Styles for ie. */ .ie .blog_post .date_of_post .day_post, .ie table thead th, .ie table th{filter:none} .ie table.my_account_orders tbody tr:nth-child(2n) td{color:#333333} .ie select, .ie .single .woocommerce-message, .ie .single .woocommerce-error, .ie .single .woocommerce-info, .ie .woocommerce .woocommerce-info, .ie .woocommerce-page .woocommerce-info, .ie .woocommerce .woocommerce-message, .ie ul.woocommerce-error{background:none !important} .ie .single .woocommerce-message, .ie .single .woocommerce-error, .ie .single .woocommerce-info, .ie .woocommerce .woocommerce-info, .ie .woocommerce-page .woocommerce-info, .ie .woocommerce .woocommerce-message, .ie ul.woocommerce-error{min-width:574px} .ie8 .woocommerce-checkout .form-row .chzn-container-single .chzn-single div b{background-position:3px -3px !important; } .ie8 .woocommerce-checkout .form-row .chzn-container-single .chzn-search input{background:none !important; } .ie8 .woocommerce-checkout .checkout>div>div>p.form-row, .ie8 .woocommerce-checkout .checkout>div>div>p.form-row input, .ie7 .woocommerce-checkout .checkout>div>div>p.form-row, .ie7 .woocommerce-checkout .checkout>div>div>p.form-row input{width:640px;float:left } .ie8 .woocommerce-checkout .checkout>div>div>p.form-row .chzn-results{width:99% } .ie7 .site-navigation .children.sub-menu, .ie8 .site-navigation .children.sub-menu{border:1px solid #dedede} .ie7 .home .woocommerce ul.products li.product, .ie7 .home .woocommerce-page ul.products li.product {height:400px} .ie7 #wp-admin-bar-wpseo-menu{max-width:300px} .ie7 #wpadminbar .ab-item{padding-right:30px} .ie7 #wpadminbar .ab-item .wpseo_score_img{position:absolute; top:0; } .ie7 .menu-glavnoe-container #menu-glavnoe{width:100%;float:left; background-color:black} .ie7 .main-navigation ul ul { border:1px solid #aaaaaa;} .ie7 .woocommerce ul.products li.product a.button.add_to_cart_button.added, .ie7 .woocommerce ul.products li.product a.button.product_type_simple.added{width:32px} /*HEADER*/ .ie7 .head-container.fixed, .ie7 .head-container.is_indent, .ie8 .head-container.fixed, .ie8 .head-container.is_indent{border-bottom:1px solid #f1f1f1;background:white} .ie7 .site-header{padding-bottom:10px;} .ie7 .head-container,.ie8 .head-container{background-image:none} /*HOME PAGE*/ .ie7 .home a.added_to_cart, .ie7 .home a.added_to_cart{position:absolute;bottom:0} /*SHOP PAGE*/ .ie7 .shop-page .nav-links{width:100%; margin: 0 0 25px 0 !important; position:relative} .ie7 .shop-page .nav-links .nav-previous,.ie7 .shop-page .nav-links .nav-next,.ie7 .shop-page .nav-links .nav-previous a,.ie7 .shop-page .nav-links .nav-next a{width:120px !important} .ie7 .shop-page .pages-links{width:444px !important; padding-left:0 !important; margin-right:0 !important; position:absolute; left:120px} .ie7 .nav-links.shop .pages-links .page-numbers, .ie7 .nav-links.shop .nav-next a, .ie7 .nav-links.shop .nav-previous a{padding:6px 10px} .ie8 .archive .woocommerce-ordering{width:100%;text-align:right;margin-bottom:20px} .ie8 .woocommerce .container ul.products li.product, .ie8 body.woocommerce-page .container ul.products li.product{float:left} .ie body.woocommerce-page .woocommerce-ordering select, .ie body.woocommerce-page .woocommerce-ordering select{background-image:none;} .ie7 body.woocommerce .widget_price_filter .price_slider_amount , .ie7 body.woocommerce-page .widget_price_filter .price_slider_amount {line-height:0 !important;color:white !important;} .ie7 .woocommerce .widget_price_filter .price_slider_amount, .ie7 .woocommerce-page .widget_price_filter .price_slider_amount{line-height:0 !important;color:white !important;padding-top:15px;} .ie7 .woocommerce .widget_price_filter .price_slider_amount .from{line-height:14px;position:absolute;left:0;color:#333333 !important} .ie7 .woocommerce .widget_price_filter .price_slider_amount .to{line-height:14px;position:absolute;right:0;color:#333333 !important} .ie7 .woocommerce .widget_price_filter .price_slider_amount .button, .ie7 .woocommerce-page .widget_price_filter .price_slider_amount .button {top:50px} .ie7 .woocommerce .widget_price_filter .price_slider_wrapper .ui-widget-content, .ie7 .woocommerce-page .widget_price_filter .price_slider_wrapper .ui-widget-content{margin:15px 0;width:90%} .ie8 .woocommerce-ordering .orderby{line-height:22px;height:22px; padding-left:0px;} .ie8 .woocommerce ul.products li.product, .ie8 .woocommerce-page ul.products li.product{border:1px solid #ffffff; border-width:1px 0;} .ie7 .woocommerce ul.products li.product, .ie7 .woocommerce-page ul.products li.product{border:1px solid #ffffff; border-width:1px 0; float:left !important; display:block;} .ie7 .woocommerce.shop-page ul.products li.product, .ie7 .woocommerce-page.shop-page ul.products li.product, .ie7 .woocommerce.tax-product_cat ul.products li.product, .ie7 .woocommerce-page.tax-product_cat ul.products li.product{width:48%} .ie7 .woocommerce.shop-page ul.products li.product.first, .ie7 .woocommerce-page.shop-page ul.products li.product.first{margin-left:0;margin-right:2%;} .ie7 .woocommerce.shop-page ul.products li.product.last, .ie7 .woocommerce-page.shop-page ul.products li.product.last{margin-right:0;margin-left:2%;} .ie8 .woocommerce ul.products li.product:hover, .ie8 .woocommerce-page ul.products li.product:hover, .ie7 .woocommerce ul.products li.product:hover, .ie7 .woocommerce-page ul.products li.product:hover{border:1px solid #aaaaaa;border-width:1px 0} .ie7 .nav-links{width:70%;margin:0 15%} .ie7 .nav-links .nav-previous {float:left} .ie7 .nav-links .nav-next {float:right} .ie7 .nav-links .pages-links {float:left;padding:0 15%} /*SINGLE PRODUCT*/ .ie7 .woocommerce.single-product ul.products li.product, .ie7 .woocommerce-page.single-product ul.products li.product{width:23%;margin:0 1%} .ie7 .pp_gallery, .ie8 .pp_gallery{display:none !important} .ie7 .single-product .woocommerce-tabs .tabs{border-bottom:1px solid #dddddd !important} .ie7 .single-product .woocommerce-tabs .tabs .active{border-bottom:0 !important} .ie .single-product a{text-decoration:none} .ie .woocommerce div.product form.cart .button, .ie .woocommerce-page div.product form.cart .button, .ie .woocommerce #content div.product form.cart .button, .ie .woocommerce-page #content div.product form.cart .button{color:white;text-shadow:none !important;box-shadow:none} .ie .woocommerce a.button, .ie .woocommerce-page a.button, .ie .woocommerce button.button, .ie .woocommerce-page button.button, .ie .woocommerce input.button, .ie .woocommerce-page input.button, .ie .woocommerce #respond input#submit, .ie .woocommerce-page #respond input#submit, .ie .woocommerce #content input.button, .ie .woocommerce-page #content input.button{filter:none !important;} .ie body #submit:hover, .ie body input#submit:hover, .ie button.button.alt:hover{background-color:#E1704B !important; } .ie8 body.woocommerce div.product form.cart .variations select, .ie8 body.woocommerce-page div.product form.cart .variations select, .ie8 body.woocommerce #content div.product form.cart .variations select, .ie8 body.woocommerce-page #content div.product form.cart .variations select, .ie8 .woocommerce form .form-row select#calc_shipping_country, .ie8 .woocommerce-page form .form-row select#calc_shipping_country{height:20px} .ie7 .woocommerce .quantity{float:left;margin-right:20px !important;} .ie .woocommerce div.product form.cart .button, .ie .woocommerce-page div.product form.cart .button, .ie .woocommerce #content div.product form.cart .button, .ie .woocommerce-page #content div.product form.cart .button , .ie button.button.alt.single_add_to_cart_button{ display:block; padding: 10px 18px !important; margin: 0 0 0 30px; background: #333333; border: 0; border-radius: 0; color: white; box-shadow: none; filter:none; vertical-align:baseline } .ie .woocommerce .quantity .minus, .ie .woocommerce-page .quantity .minus, .ie .woocommerce #content .quantity .minus, .ie .woocommerce-page #content .quantity .minus, .ie .woocommerce .quantity .plus, .ie .woocommerce-page .quantity .plus, .ie .woocommerce #content .quantity .plus, .ie .woocommerce-page #content .quantity .plus { display:block; width: 35px; height: 30px; border: 0; background: none; color: #999999; border-radius: 0; box-shadow: none; filter:none } .ie7 .woocommerce .quantity input, .ie7 .woocommerce-page .quantity input, .ie7 .woocommerce #content .quantity input, .ie7 .woocommerce-page #content .quantity input, .ie8 .woocommerce-page #content .quantity input{line-height:28px} .ie7 .woocommerce div.product .woocommerce-tabs, .ie7 .woocommerce-page div.product .woocommerce-tabs, .ie7 .woocommerce #content div.product .woocommerce-tabs, .ie7 .woocommerce-page #content div.product .woocommerce-tabs{border:1px solid #aaaaaa; clear:right} .ie8 .woocommerce div.product .woocommerce-tabs, .ie8 .woocommerce-page div.product .woocommerce-tabs, .ie8 .woocommerce #content div.product .woocommerce-tabs, .ie8 .woocommerce-page #content div.product .woocommerce-tabs{border:1px solid #aaaaaa;} .ie8 .woocommerce div.product div.images, .ie8 .woocommerce-page div.product div.images, .ie8 .woocommerce #content div.product div.images, .ie8 .woocommerce-page #content div.product div.images{margin-right:20px;} .ie7 .woocommerce div.product .woocommerce-tabs ul.tabs li, .ie7 .woocommerce-page div.product .woocommerce-tabs ul.tabs li, .ie7 .woocommerce #content div.product .woocommerce-tabs ul.tabs li, .ie7 .woocommerce-page #content div.product .woocommerce-tabs ul.tabs li{float:left; width:19%;margin-left:0;margin-right:0;border:1px solid #999999; border-width:1px} .ie7 .woocommerce div.product .woocommerce-tabs ul.tabs li.active, .ie7 .woocommerce-page div.product .woocommerce-tabs ul.tabs li.active, .ie7 .woocommerce #content div.product .woocommerce-tabs ul.tabs li.active, .ie7 .woocommerce-page #content div.product .woocommerce-tabs ul.tabs li.active{border-bottom-width:0px} .ie .woocommerce .woocommerce-ordering select, .ie .woocommerce-page .woocommerce-ordering select, .ie body.woocommerce div.product form.cart .variations select, .ie body.woocommerce-page div.product form.cart .variations select, .ie body.woocommerce #content div.product form.cart .variations select, .ie body.woocommerce-page #content div.product form.cart .variations select, .ie .woocommerce form .form-row select#calc_shipping_country, .ie .woocommerce-page form .form-row select#calc_shipping_country{background-image:none} .ie7 body.woocommerce div.product .woocommerce-tabs .tabs li.active a, .ie7 body.woocommerce-page div.product .woocommerce-tabs .tabs li.active a, .ie7 body.woocommerce #content div.product .woocommerce-tabs .tabs li.active a, .ie7 body.woocommerce-page #content div.product .woocommerce-tabs .tabs li.active a{text-decoration:underline} .ie body.woocommerce div.product .woocommerce-tabs .tabs li, .ie body.woocommerce-page div.product .woocommerce-tabs .tabs li, .ie body.woocommerce #content div.product .woocommerce-tabs .tabs li, .ie body.woocommerce-page #content div.product .woocommerce-tabs .tabs li{border-bottom:1px #cccccc !important} .ie body.woocommerce div.product .woocommerce-tabs .tabs li.active, .ie body.woocommerce-page div.product .woocommerce-tabs .tabs li.active, .ie body.woocommerce #content div.product .woocommerce-tabs .tabs li.active, .ie body.woocommerce-page #content div.product .woocommerce-tabs .tabs li.active{border-bottom:0px !important} .ie7 .pp_content_container,.ie8 .pp_content_container{border:1px solid #cccccc} /*CART PAGE*/ .ie7 .woocommerce-message, .ie8 .woocommerce-message, .ie7 .single-product .woocommerce-message, .ie7 .woocommerce .woocommerce-info, .ie7 .woocommerce-page .woocommerce-info, .ie7 .woocommerce-cart .woocommerce-message, .ie8 .single-product .woocommerce-message, .ie8 .woocommerce .woocommerce-info, .ie8 .woocommerce-page .woocommerce-info, .ie8 .woocommerce-cart .woocommerce-message{border-left:1px solid #cccccc;border-right:1px solid #cccccc;border-bottom:1px solid #cccccc;background-color:initial !important} .ie7 ul.woocommerce-error, .ie8 ul.woocommerce-error{border:1px solid #cccccc; border-top: 3px solid #b81c23 !important;} .ie .woocommerce-message{ background-color:initial !important} .ie7 body.woocommerce-page .woocommerce .cart-collaterals button.button{padding: 7px 18px 10px !important;line-height:initial !important} .ie7 .woocommerce table.cart input, .ie7 .woocommerce-page table.cart input{display:block;} .ie7 .woocommerce-cart.woocommerce-page #content table td.actions [name='update_cart']{bottom:220px} .ie7 .woocommerce-cart.woocommerce-page #content table td.actions [name='proceed']{bottom:263px} .ie .woocommerce-cart .woocommerce .cart-collaterals .cart_totals table select, .ie .woocommerce-cart.woocommerce-page .cart-collaterals .cart_totals table select, .ie body.woocommerce div.product form.cart .variations select, .ie body.woocommerce-page div.product form.cart .variations select, .ie body.woocommerce #content div.product form.cart .variations select, .ie body.woocommerce-page #content div.product form.cart .variations select, .ie .woocommerce form .form-row select#calc_shipping_country, .ie .woocommerce-page form .form-row select#calc_shipping_country{padding-right:0;} .ie .woocommerce-cart .woocommerce table.shop_table thead tr th, .ie .woocommerce .cart-collaterals .cart_totals table tr th:first-child,.ie .woocommerce-page .cart-collaterals .cart_totals table tr th:first-child{filter:none} .ie table tbody tr:nth-child(2n ) td{background-color:inherit} .ie7 .woocommerce-cart .woocommerce .cart-collaterals .shipping_calculator, .ie8 .woocommerce-cart .woocommerce .cart-collaterals .shipping_calculator, .ie7 body.woocommerce-cart.woocommerce-page .cart-collaterals .shipping_calculator, .ie8 body.woocommerce-cart.woocommerce-page .cart-collaterals .shipping_calculator{clear:none} .ie7 .woocommerce-cart.woocommerce-page #content table.shop_table.cart tbody tr td.actions, .ie8 .woocommerce-cart.woocommerce-page #content table.shop_table.cart tbody tr td.actions{padding:10px} .ie7 .woocommerce-cart.woocommerce-page #content table.shop_table.cart tbody tr td.actions .coupon{float:left;width:40%;} .ie7 .woocommerce-cart.woocommerce-page #content table.shop_table.cart tbody tr td.actions .coupon .input-text{height:20px !important;} /*SELECTs*/ .ie .woocommerce-cart .woocommerce .cart-collaterals .cart_totals table select, .ie .woocommerce-cart.woocommerce-page .cart-collaterals .cart_totals table select, .ie .woocommerce-checkout #shipping_method{background-image:none;padding-top:0;padding-bottom:0;padding-right:0;} .ie .woocommerce-cart.woocommerce-page #content table .product-remove{width:52px} .ie .woocommerce-cart.woocommerce-page #content table .product-thumbnail{width:99px !important} .ie .woocommerce-cart.woocommerce-page #content table .product-name{width:235px} .ie .woocommerce-cart.woocommerce-page #content table .product-price{width:160px} .ie .woocommerce-cart.woocommerce-page #content table .product-quantity{width:212px; } .ie .woocommerce-cart.woocommerce-page #content table .product-subtotal{width:175px;} .ie7 .woocommerce-cart.woocommerce-page #content table thead th, .ie8 .woocommerce-cart.woocommerce-page #content table thead th{border:1px solid #cccccc;border-width:1px 1px 1px 0} .ie7 .woocommerce-cart.woocommerce-page #content table thead th:first-child, .ie8 .woocommerce-cart.woocommerce-page #content table thead th:first-child{border:1px solid #cccccc;border-width:1px 1px 1px 1px} .ie7 .woocommerce-cart.woocommerce-page #content table tbody td, .ie8 .woocommerce-cart.woocommerce-page #content table tbody td{border:1px solid #cccccc;border-width:0 1px 1px 0} .ie7 .woocommerce-cart.woocommerce-page #content table tbody td:first-child, .ie8 .woocommerce-cart.woocommerce-page #content table tbody td:first-child{border:1px solid #cccccc;border-width:0 1px 1px 1px} .ie7 .woocommerce-cart.woocommerce-page #content table tbody tr:last-child, .ie8 .woocommerce-cart.woocommerce-page #content table tbody tr:last-child{border:1px solid #cccccc;} .ie7 .woocommerce-cart.woocommerce-page #content table .product-remove{border-width:0 1px 1px 1px !important} .ie7 .woocommerce-cart.woocommerce-page #content table .product-remove:first-child{border-width:1px 1px 1px 1px !important} .ie7 .woocommerce-cart.woocommerce-page #content table thead th.product-remove{border-width:1px 1px 1px 1px !important} .ie7 .woocommerce-cart.woocommerce-page #content .cart_totals table th, .ie8 .woocommerce-cart.woocommerce-page #content .cart_totals table th{border:1px solid #cccccc;border-width:0px 1px 1px 1px} .ie7 .woocommerce-cart.woocommerce-page #content .cart_totals table .cart-subtotal th, .ie8 .woocommerce-cart.woocommerce-page #content .cart_totals table .cart-subtotal th{border:1px solid #cccccc;border-width:1px 1px 1px 1px} .ie7 .woocommerce-cart.woocommerce-page #content .cart_totals table td, .ie8 .woocommerce-cart.woocommerce-page #content .cart_totals table td{border:1px solid #cccccc;border-width:0px 1px 1px 0} .ie7 .woocommerce-cart.woocommerce-page #content .cart_totals table .cart-subtotal td, .ie8 .woocommerce-cart.woocommerce-page #content .cart_totals table .cart-subtotal td{border-width:1px 1px 1px 0px} .ie7 .woocommerce-cart.woocommerce-page #content table td.product-quantity .quantity{float:none; margin:0 auto !important} .ie8 .woocommerce-cart .woocommerce .cart-collaterals .cart_totals table select, .ie8 .woocommerce-cart.woocommerce-page .cart-collaterals .cart_totals table select{height:20px} /*CHECKOUT PAGE*/ .ie7 .checkout_coupon{float:left; width: 900px} .ie7 .checkout_coupon p{float:left} .ie7 .checkout_coupon #coupon_code{float:left; width:90%} .ie .woocommerce-checkout #page .container header.entry-header h1.entry-title{padding:0;margin:20px 0 30px} .ie8 .woocommerce-checkout #shipping_method{height:20px} .ie7 .woocommerce-checkout.woocommerce-page table.shop_table thead tr th, .ie8 .woocommerce-checkout.woocommerce-page table.shop_table thead tr th{border:1px solid #cccccc} .ie7 .woocommerce-checkout.woocommerce-page table.shop_table thead tr th:first-child, .ie8 .woocommerce-checkout.woocommerce-page table.shop_table thead tr th:first-child{border-right:0} .ie7 .woocommerce-checkout.woocommerce-page table.shop_table tbody tr td, .ie8 .woocommerce-checkout.woocommerce-page table.shop_table tbody tr td{border:1px solid #cccccc;border-top:0;} .ie7 .woocommerce-checkout.woocommerce-page table.shop_table tbody tr td:first-child, .ie8 .woocommerce-checkout.woocommerce-page table.shop_table tbody tr td:first-child{border-right:0;} .ie7 .woocommerce-checkout.woocommerce-page table.shop_table tfoot tr th, .ie8 .woocommerce-checkout.woocommerce-page table.shop_table tfoot tr th{border:1px solid #cccccc;border-top:0;} .ie7 .woocommerce-checkout.woocommerce-page table.shop_table tfoot tr th:first-child, .ie8 .woocommerce-checkout.woocommerce-page table.shop_table tfoot tr th:first-child{border-right:0;} .ie7 .woocommerce-checkout.woocommerce-page table.shop_table tfoot tr td, .ie8 .woocommerce-checkout.woocommerce-page table.shop_table tfoot tr td{border:1px solid #cccccc;border-top:0;} .ie7 .woocommerce-checkout.woocommerce-page table.shop_table tfoot tr td:first-child, .ie8 .woocommerce-checkout.woocommerce-page table.shop_table tfoot tr td:first-child{border-right:0;} .ie7 .woocommerce-checkout.woocommerce-page .payment_box, .ie8 .woocommerce-checkout.woocommerce-page .payment_box{border:1px solid #cccccc !important; margin-top:0} .ie7 .woocommerce-checkout .woocommerce form .form-row textarea, .ie7 .woocommerce-checkout.woocommerce-page form .form-row textarea{color:#333333 !important;width:620px} /*ACCOUNT PAGE*/ .ie7 .woocommerce-account h1.entry-title{padding:0;margin:20px 0 30px} .ie7 .woocommerce-account.woocommerce-page table.shop_table, .ie8 .woocommerce-account.woocommerce-page table.shop_table {border-width:0 !important;} .ie7 .woocommerce-account.woocommerce-page table.shop_table thead tr th, .ie8 .woocommerce-account.woocommerce-page table.shop_table thead tr th{border:1px solid #cccccc;border-left:0} .ie7 .woocommerce-account.woocommerce-page table.shop_table thead tr th:first-child, .ie8 .woocommerce-account.woocommerce-page table.shop_table thead tr th:first-child{border:1px solid #cccccc} .ie7 .woocommerce-account.woocommerce-page table.shop_table tbody tr td, .ie8 .woocommerce-account.woocommerce-page table.shop_table tbody tr td{border:1px solid #cccccc;border-top:0;border-left:0;} .ie7 .woocommerce-account.woocommerce-page table.shop_table.my_account_orders tbody tr td:first-child, .ie8 .woocommerce-account.woocommerce-page table.shop_table.my_account_orders tbody tr td:first-child{border:1px solid #cccccc;border-top:0;} .ie7 .woocommerce-account.woocommerce-page table.shop_table.order_details tbody tr td, .ie8 .woocommerce-account.woocommerce-page table.shop_table.order_details tbody tr td{border:1px solid #cccccc;border-top:0} .ie7 .woocommerce-account.woocommerce-page table.shop_table.order_details tbody tr td:last-child, .ie8 .woocommerce-account.woocommerce-page table.shop_table.order_details tbody tr td:last-child{border:1px solid #cccccc;border-top:0;} .ie7 .woocommerce-account.woocommerce-page table.shop_table tbody tr td:first-child, .ie8 .woocommerce-account.woocommerce-page table.shop_table tbody tr td:first-child{border-right:0;} .ie7 .woocommerce-account.woocommerce-page table.shop_table tfoot tr th, .ie8 .woocommerce-account.woocommerce-page table.shop_table tfoot tr th{border:1px solid #cccccc;border-top:0;} .ie7 .woocommerce-account.woocommerce-page table.shop_table tfoot tr th:first-child, .ie8 .woocommerce-account.woocommerce-page table.shop_table tfoot tr th:first-child{border-right:0;} .ie7 .woocommerce-account.woocommerce-page table.shop_table tfoot tr td, .ie8 .woocommerce-account.woocommerce-page table.shop_table tfoot tr td{border:1px solid #cccccc;border-top:0;} .ie7 .woocommerce-account.woocommerce-page table.shop_table tfoot tr td:first-child, .ie8 .woocommerce-account.woocommerce-page table.shop_table tfoot tr td:first-child{border-right:0;} \ No newline at end of file diff --git a/themes/fruitful/woocommerce/images/accept_arrow_20x20.png b/themes/fruitful/woocommerce/images/accept_arrow_20x20.png new file mode 100644 index 0000000..cebb705 Binary files /dev/null and b/themes/fruitful/woocommerce/images/accept_arrow_20x20.png differ diff --git a/themes/fruitful/woocommerce/images/action_bg.png b/themes/fruitful/woocommerce/images/action_bg.png new file mode 100644 index 0000000..06953a8 Binary files /dev/null and b/themes/fruitful/woocommerce/images/action_bg.png differ diff --git a/themes/fruitful/woocommerce/images/cansel_sale.png b/themes/fruitful/woocommerce/images/cansel_sale.png new file mode 100644 index 0000000..b8812a2 Binary files /dev/null and b/themes/fruitful/woocommerce/images/cansel_sale.png differ diff --git a/themes/fruitful/woocommerce/images/cart_image.png b/themes/fruitful/woocommerce/images/cart_image.png new file mode 100644 index 0000000..c73f28c Binary files /dev/null and b/themes/fruitful/woocommerce/images/cart_image.png differ diff --git a/themes/fruitful/woocommerce/images/checkout_mes_bg.png b/themes/fruitful/woocommerce/images/checkout_mes_bg.png new file mode 100644 index 0000000..f68f671 Binary files /dev/null and b/themes/fruitful/woocommerce/images/checkout_mes_bg.png differ diff --git a/themes/fruitful/woocommerce/images/cross_white.png b/themes/fruitful/woocommerce/images/cross_white.png new file mode 100644 index 0000000..87f8e8b Binary files /dev/null and b/themes/fruitful/woocommerce/images/cross_white.png differ diff --git a/themes/fruitful/woocommerce/images/handle_button.png b/themes/fruitful/woocommerce/images/handle_button.png new file mode 100644 index 0000000..504321a Binary files /dev/null and b/themes/fruitful/woocommerce/images/handle_button.png differ diff --git a/themes/fruitful/woocommerce/images/input_bg.png b/themes/fruitful/woocommerce/images/input_bg.png new file mode 100644 index 0000000..2b17fb0 Binary files /dev/null and b/themes/fruitful/woocommerce/images/input_bg.png differ diff --git a/themes/fruitful/woocommerce/images/loading.gif b/themes/fruitful/woocommerce/images/loading.gif new file mode 100644 index 0000000..c826c12 Binary files /dev/null and b/themes/fruitful/woocommerce/images/loading.gif differ diff --git a/themes/fruitful/woocommerce/images/num_items_cart_bg.png b/themes/fruitful/woocommerce/images/num_items_cart_bg.png new file mode 100644 index 0000000..609300b Binary files /dev/null and b/themes/fruitful/woocommerce/images/num_items_cart_bg.png differ diff --git a/themes/fruitful/woocommerce/images/product_button_buy.png b/themes/fruitful/woocommerce/images/product_button_buy.png new file mode 100644 index 0000000..cfc842d Binary files /dev/null and b/themes/fruitful/woocommerce/images/product_button_buy.png differ diff --git a/themes/fruitful/woocommerce/images/product_button_set.png b/themes/fruitful/woocommerce/images/product_button_set.png new file mode 100644 index 0000000..2bb7457 Binary files /dev/null and b/themes/fruitful/woocommerce/images/product_button_set.png differ diff --git a/themes/fruitful/woocommerce/images/shop_select_bg.png b/themes/fruitful/woocommerce/images/shop_select_bg.png new file mode 100644 index 0000000..7482e10 Binary files /dev/null and b/themes/fruitful/woocommerce/images/shop_select_bg.png differ diff --git a/themes/fruitful/woocommerce/images/shop_select_bg_parent.png b/themes/fruitful/woocommerce/images/shop_select_bg_parent.png new file mode 100644 index 0000000..f07d675 Binary files /dev/null and b/themes/fruitful/woocommerce/images/shop_select_bg_parent.png differ diff --git a/themes/fruitful/woocommerce/images/shop_select_bg_parent1.png b/themes/fruitful/woocommerce/images/shop_select_bg_parent1.png new file mode 100644 index 0000000..8a07957 Binary files /dev/null and b/themes/fruitful/woocommerce/images/shop_select_bg_parent1.png differ diff --git a/themes/fruitful/woocommerce/single-product/product-image.php b/themes/fruitful/woocommerce/single-product/product-image.php new file mode 100644 index 0000000..1a3b3b5 --- /dev/null +++ b/themes/fruitful/woocommerce/single-product/product-image.php @@ -0,0 +1,51 @@ + +
          + + post_excerpt; + $image_link = wp_get_attachment_url( get_post_thumbnail_id() ); + $image = get_the_post_thumbnail( $post->ID, apply_filters( 'single_product_large_thumbnail_size', 'shop_single' ), array( + 'title' => $image_title, + 'alt' => $image_title + ) ); + + $attachment_count = count( $product->get_gallery_attachment_ids() ); + + if ( $attachment_count > 0 ) { + $gallery = '[product-gallery]'; + } else { + $gallery = ''; + } + + woocommerce_show_product_sale_flash(); + + echo apply_filters( 'woocommerce_single_product_image_html', sprintf( '%s', $image_link, $image_caption, $image ), $post->ID ); + + } else { + + echo apply_filters( 'woocommerce_single_product_image_html', sprintf( '%s', wc_placeholder_img_src(), __( 'Placeholder', 'woocommerce' ) ), $post->ID ); + + } + ?> + + + +
          diff --git a/themes/fruitful/woocommerce/woo-fixed.css b/themes/fruitful/woocommerce/woo-fixed.css new file mode 100644 index 0000000..4346150 --- /dev/null +++ b/themes/fruitful/woocommerce/woo-fixed.css @@ -0,0 +1,1204 @@ +/* +Fixed Styles for Woocommerce. +*/ + +.woocommerce div form .form-row input.input-text, +.woocommerce-page form .form-row input.input-text, +.woocommerce div form .form-row textarea, +.woocommerce-page form .form-row textarea {padding: 7px 0 7px 12px;height:35px;} +.woocommerce-page form .form-row textarea {height: 288px;} +.woocommerce form .form-row-first, +.woocommerce-page form .form-row-first, +.woocommerce form .form-row-last, +.woocommerce-page form .form-row-last {width: 100%;} +.woocommerce h2{margin:20px 0} +.woocommerce .head-container h2{margin:0} + +.woocommerce-product-search > input[type="submit"] { + display:none; +} + +.woocommerce-product-search > .screen-reader-text { + clip: rect(1px, 1px, 1px, 1px); + position: absolute !important; +} + +.woocommerce-product-search > input.search-field { + background:url("../images/search_icon.png") no-repeat scroll 97% 5px transparent; + border-radius:2px 2px 2px 2px; + font-size:13px; + height:22px; + line-height:1.2em; + padding:4px 32px 4px 12px; + width:234px; + border: 1px solid #e5e5e5; + color: #45494c; +} + +/*header*/ +.cart-button{display:block;float: right;padding:0;position:relative;margin:14px 10px 10px;clear:left} +.cart-button a, +.cart-button a .cart_image{display:block;float: left;margin: 0;padding:0;width:24px; height:21px;border:0;text-decoration:none;background:url(images/cart_image.png) no-repeat transparent;} +.num_of_product_cart{ + display:block; + float:left; + position:absolute; + top:-11px; + right:-4px; + text-align:center; + padding:0; + margin:0; + width:20px; + height:20px; + text-decoration:none; + color:#333333; + font-size:10px; + font-weight:bold; + background: #FFF; + border: 1px solid #F15A23; + -webkit-border-radius: 20px; + -moz-border-radius: 20px; + border-radius: 20px; + padding: 0; + line-height: 20px; +} +.ie7 .num_of_product_cart, .ie8 .num_of_product_cart{ + padding:0; + background:url(images/num_items_cart_bg.png) no-repeat transparent 0 0 ; + background-size:20px 20px; + border:0px +} +body input#s{padding-left: 12px} +body.post-type-archive input#s{padding-left: 12px;max-width:234px} + + +/*---SHOP PAGE---*/ +.page-description{float:left; width:100%;} +.woocommerce .products div.star-rating, +.woocommerce-page .products div.star-rating{margin-left:15px; height:1.05em;} +.woocommerce .star-rating, .woocommerce-page .star-rating {height:1.05em;} + +/*shop, product category*/ +.woocommerce ul.products li.product.first, .woocommerce-page ul.products li.product.first{margin-left:0 !important} +.woocommerce ul.products li.product.last, .woocommerce-page ul.products li.product.last{margin-right:0 !important} +.woocommerce .prod_num_row-2 ul.products li.product, .woocommerce-page .prod_num_row-2 ul.products li.product{width: 47.5%; margin-left:2%; margin-right:2%;} +.woocommerce .prod_num_row-3 ul.products li.product, .woocommerce-page .prod_num_row-3 ul.products li.product{width: 31.5%; margin-left:1%; margin-right:1%;} +.woocommerce .prod_num_row-4 ul.products li.product, .woocommerce-page .prod_num_row-4 ul.products li.product{width: 23%; margin-left:1%; margin-right:1%;} +.woocommerce .prod_num_row-5 ul.products li.product, .woocommerce-page .prod_num_row-5 ul.products li.product{width: 18.25%; margin-left: 0.625%;margin-right: 0.625%;} + +.woocommerce-page ul.products li.product, .woocommerce ul.products li.product{width: 23%; margin-left:1%; margin-right:1%;} +.woocommerce-page.columns-2 ul.products li.product, .woocommerce.columns-2 ul.products li.product{width: 47.5%; margin-left: 2%; margin-right:2%;} +.woocommerce-page.columns-3 ul.products li.product, .woocommerce.columns-3 ul.products li.product{width: 31.5%; margin-left: 1%; margin-right:1%;} +.woocommerce-page.columns-5 ul.products li.product, .woocommerce.columns-5 ul.products li.product{width: 18.25%;margin-left: 0.625%;margin-right: 0.625%;} +/* .woocommerce-page.columns-6 ul.products li.product, .woocommerce.columns-6 ul.products li.product{width:13.5%} */ + +/*pagenavi*/ +.nav-links.shop .pages-links .page-numbers, +.nav-links.shop .nav-next a, +.nav-links.shop .nav-previous a{ + display:inline-block; + background: #333; + border: 0 !important; + -webkit-border-radius: 0 !important; + -moz-border-radius: 0 !important; + border-radius: 0 !important; + color: #FFF !important; + box-shadow: none !important; + text-shadow: none !important; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + -khtml-transition: all 0.3s ease-in-out; + -o-transition: all 0.3s ease-in-out; + -ms-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + filter: none; + width: auto; + text-decoration:none; +} +.nav-links.shop .pages-links .page-numbers:hover, +.nav-links.shop .nav-next a:hover, +.nav-links.shop .nav-previous a:hover, +.nav-links.shop .pages-links .page-numbers.current{background:#F15A23;text-decoration:none !important;} +.nav-links.shop .pages-links .page-numbers.next, +.nav-links.shop .pages-links .page-numbers.prev{display:none} +#page .container .woo-loop-content.alpha.omega{width:100%;} + + /*secondary*/ +body.woocommerce #page div.container .sixteen .five #secondary.widget-area{margin-top:10px;} +body.woocommerce #page .container #secondary.widget-area{width:100%;padding:0;} +.woocommerce #secondary .widget_shopping_cart .total, .woocommerce-page #secondary .widget_shopping_cart .total {border-top: none;} + +.woocommerce #page .container #secondary .widget{margin-bottom:30px} +.woocommerce #page .container #secondary .widget ul{margin:0} +.woocommerce #page aside.widget_price_filter .ui-slider .ui-slider-range, +.woocommerce #page aside.widget_price_filter .ui-slider .ui-slider-range {background:#333333; } + +.woocommerce #page .woocommerce .widget_layered_nav_filters ul li a, +.woocommerce-page #page .widget_layered_nav_filters ul li a{ +margin:5px;border:1px solid #cccccc;background:#cccccc url(images/cross_white.png) no-repeat 6px center; +box-shadow: 0 0px 3px 0 rgba(0,0,0,0.3); +-webkit-box-shadow: 0 0px 3px 0 rgba(0,0,0,0.3); +-moz-box-shadow: 0 0px 3px 0 rgba(0,0,0,0.3);} +.woocommerce #page .woocommerce .widget_layered_nav_filters ul li a:hover, +.woocommerce-page #page .widget_layered_nav_filters ul li a:hover{ +margin:5px;border:1px solid #cccccc;background:#cccccc url(images/cross_white.png) no-repeat 6px center; +box-shadow: none; +-webkit-box-shadow: none; +-moz-box-shadow:none;} + +.woocommerce #page aside.widget_price_filter .ui-slider .ui-slider-handle, +.woocommerce-page #page aside.widget_price_filter .ui-slider .ui-slider-handle{ + display: block; + position: absolute; + top: -7px; + width: 21px; + height: 21px; + border: 0; + -webkit-border-radius: 10.5px; + -moz-border-radius: 10.5px; + border-radius: 10.5px; + box-shadow:none; + -moz-box-shadow:none; + -webkit-box-shadow:none; + cursor: pointer; + background: url(images/handle_button.png) no-repeat; + outline: 0; + z-index: 2; +} + +.woocommerce #page aside.widget_price_filter .price_slider_wrapper .ui-widget-content, +.woocommerce-page #page aside.widget_price_filter .price_slider_wrapper .ui-widget-content{ + background: #cccccc; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.woocommerce ul.products li.first, +.woocommerce-page ul.products li.first {clear:none; float: left;} + +.woocommerce ul.products li.product, +.woocommerce-page ul.products li.product {display: inline-table;float: none;position: relative;padding:0;margin-top:0;margin-bottom:2em} +.woocommerce #page.site .container #secondary .widget ul li.cat-item, +.woocommerce-page #page.site .container #secondary .widget ul li.cat-item:hover{ background:none;width: 100%;padding: 0; border-bottom:1px solid #cccccc; padding:0;margin:0} +.woocommerce #page.site .container #secondary .widget ul li.cat-item .children, +.woocommerce-page #page.site .container #secondary .widget ul li.cat-item .children {margin:0;padding: 0 0 0 10px;width:calc(100% - 10px)} +.woocommerce #page.site .container #secondary .widget ul li.cat-item .children li.cat-item, +.woocommerce-page #page.site .container #secondary .widget ul li.cat-item .children li.cat-item:hover{width:100%; border-top:1px solid #cccccc;border-bottom:none; padding:0;margin:0} +.woocommerce #page.site .container #secondary .widget ul li.cat-item a, +.woocommerce-page #page.site .container #secondary .widget ul li.cat-item:hover a{padding-right: 0px;line-height:30px; font-size:14px;background:none} +.woocommerce #page.site .container #secondary .widget ul li.cat-item *, +.woocommerce-page #page.site .container #secondary .widget ul li.cat-item:hover *{line-height:30px} + +body.woocommerce #page aside.widget_price_filter .price_slider_wrapper .ui-widget-content, +body.woocommerce-page #page aside.widget_price_filter .price_slider_wrapper .ui-widget-content{margin:15px 10px;} + +.woocomerce #page .price_slider_amount, +.woocomerce-page #page .price_slider_amount{position:relative;} + +body.woocommerce #page aside.widget_price_filter .price_slider_amount .button, +body.woocommerce-page #page aside.widget_price_filter .price_slider_amount .button{ + width:32px; + height:30px; + position:absolute; + right:0; + top:35px; + background: url(images/product_button_set.png) no-repeat transparent; + box-shadow:none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + font-size:0; + border:0; + filter:none +} +.woocommerce #page .price_label, +.woocommerce-page #page .price_label{font-size:0} +.woocommerce #page .price_label .from, +.woocommerce-page #page .price_label .from{font-size:12px; float:left} +.woocommerce #page .price_label .to, +.woocommerce-page #page .price_label .to{font-size:12px; float:right} +body.woocommerce #page aside.widget_price_filter .price_slider_amount, +body.woocommerce-page #page aside.widget_price_filter .price_slider_amount{min-height:65px;position:relative;} + + /*content*/ +body.woocommerce .woocommerce-ordering select, +body.woocommerce-page .woocommerce-ordering select, +.woocommerce form .form-row select#calc_shipping_country, .woocommerce-page form .form-row select#calc_shipping_country, +.woocommerce select#billing_country, .woocommerce-page select#billing_country, +.woocommerce select#shipping_country, .woocommerce-page select#shipping_country +{ height:35px; + width:260px; + padding:0 0 0 12px; + -webkit-appearance: none; + -moz-appearance:none; + appearance:none; + text-indent:0,01px; + text-overflow: ''; + border:1px solid #e5e5e5; + color:#999999; + background: url(images/shop_select_bg.png) center right no-repeat transparent; + background-image:none\0;/*Only works in IE9*/ + outline:none +} + +.woocommerce form .form-row select#calc_shipping_country, .woocommerce-page form .form-row select#calc_shipping_country{width:100%;} +.woocommerce select#billing_country, .woocommerce-page select#billing_country{width:100%} +.woocommerce select#shipping_country, .woocommerce-page select#shipping_country{width:100%} + +body.woocommerce .woocommerce-ordering select option, +body.woocommerce-page .woocommerce-ordering select option{padding-right:12px} + +@-moz-document url-prefix() { + body.woocommerce .woocommerce-ordering select, + body.woocommerce-page .woocommerce-ordering select, + .woocommerce form .form-row select#calc_shipping_country, .woocommerce-page form .form-row select#calc_shipping_country, + .woocommerce select#billing_country, .woocommerce-page select#billing_country, + .woocommerce select#shipping_country, .woocommerce-page select#shipping_country, + .woocommerce-checkout #shipping_method, + body.woocommerce div.product form.cart .variations select, + body.woocommerce-page div.product form.cart .variations select, + body.woocommerce #content div.product form.cart .variations select, + body.woocommerce-page #content div.product form.cart .variations select, + .woocommerce-cart .woocommerce .cart-collaterals .cart_totals table select, + .woocommerce-cart.woocommerce-page .cart-collaterals .cart_totals table select, + .woocommerce-checkout #shipping_method + { text-indent:1px; + text-overflow: ''; + padding: 6px 0 6px 12px; + } + .variations{border:0;} +} + + +body.woocommerce .woocommerce-breadcrumb, +body.woocommerce-page .woocommerce-breadcrumb, +body.woocommerce .woocommerce-breadcrumb, +body.woocommerce-page .woocommerce-breadcrumb a {text-decoration:none} + +body.archive.woocommerce-page h1.page-title, +body.woocommerce .woocommerce-result-count, +body.woocommerce-page .woocommerce-result-count{display:none !important} + +.woocommerce .woocommerce-breadcrumb, +.woocommerce-page .woocommerce-breadcrumb{float:none; width:100%; margin-bottom:40px;} + +body.single.woocommerce .woocommerce-breadcrumb, +body.single.woocommerce-page .woocommerce-breadcrumb{margin-bottom:40px;} +.archive.woocommerce .woocommerce-breadcrumb, +.archive.woocommerce-page .woocommerce-breadcrumb{float:left; width:auto;max-width:423px; margin-bottom:0px;line-height:35px;} +.archive.woocommerce.post-type-archive-product .woocommerce-breadcrumb, +.archive.woocommerce-page.post-type-archive-product .woocommerce-breadcrumb{float:left; width:100%;max-width:423px; margin-bottom:0px;line-height:35px;} +.archive.woocommerce.tax-product_cat .woocommerce-breadcrumb, +.archive.woocommerce-page.tax-product_cat .woocommerce-breadcrumb{float:left; width:100%;max-width:423px; margin-bottom:0px;line-height:35px;} +.archive.woocommerce .woocommerce-breadcrumb a, +.archive.woocommerce-page .woocommerce-breadcrumb a{line-height:35px;} + +.woocommerce ul.products li.product:hover, +.woocommerce-page ul.products li.product:hover { +box-shadow: 0 0px 5px 0 rgba(0,0,0,0.3); +-webkit-box-shadow: 0 0px 5px 0 rgba(0,0,0,0.3); +-moz-box-shadow: 0 0px 5px 0 rgba(0,0,0,0.3);} + +.woocommerce ul.products li.product a img, +body.woocommerce-page ul.products li.product a img, +.woocommerce ul.products li.product a:hover img, +body.woocommerce-page ul.products li.product a:hover img {box-shadow: none ; -webkit-box-shadow: none; -moz-box-shadow: none; border-bottom: 1px solid #cccccc;} + +body.woocommerce .upsells.products li span.price, +body.woocommerce-page .upsells.products li span.price, +body.woocommerce #content .upsells.products li span.price, +body.woocommerce-page #content .upsells.products li span.price, +.woocommerce ul.products li.product .price, +body.woocommerce-page ul.products li.product .price{float:left;margin: 5px 0 10px 15px} + +.woocommerce ul.products li.product a.button.add_to_cart_button, +.woocommerce ul.products li.product a.button.product_type_simple, +.woocommerce ul.products li.product a.button.product_type_variable { + position:absolute; + float:right; + bottom:0; + right:0; + display:block; + visibility:hidden; + margin: 0 5px 5px 0; + width:32px; + height:30px; + border:0; + padding:0 !important; + font-size:0; + -webkit-transition: width 0.3s ease-in-out !important; + -moz-transition: width 0.3s ease-in-out !important; + -khtml-transition: width 0.3s ease-in-out !important; + -o-transition: width 0.3s ease-in-out !important; + -ms-transition: width 0.3s ease-in-out !important; + transition: width 0.3s ease-in-out !important; +} + +.woocommerce ul.products li.product a.button.add_to_cart_button.added, +.woocommerce ul.products li.product a.button.product_type_simple.added{width:55px;} + +.woocommerce ul.products li.product:hover a.button.add_to_cart_button, +.woocommerce ul.products li.product:hover a.button.add_to_cart_button:active, +.woocommerce ul.products li.product:hover a.button.product_type_variable, +.woocommerce ul.products li.product:hover a.button.product_type_variable:active {display:block;visibility:visible; bottom:0; top: auto} + +.woocommerce ul.products li.product a.product_type_simple {background:none ;} +.woocommerce ul.products li.product a.product_type_variable {background: url(images/product_button_set.png) no-repeat transparent;} + +.woocommerce ul.products li.product a.add_to_cart_button.product_type_simple { + background: url(images/product_button_buy.png) no-repeat #333333 !important; + -webkit-transition: none; + -moz-transition: none; + -khtml-transition: none; + -o-transition: none; + -ms-transition: none; + transition: none; + +} +.woocommerce ul.products li.product a.add_to_cart_button.product_type_simple.added:before{content:initial !important} +.woocommerce ul.products li.product a.add_to_cart_button.product_type_simple.added:after{ + content:''; + width:20px !important; + height:20px; + background: url(images/accept_arrow_20x20.png) no-repeat transparent; + display: inline-block; + font-size:14px; + margin:0; + position: relative; + float: left; + top: 5px; + left: 30px; +} + +.woocommerce a.added_to_cart, +body.woocommerce-page a.added_to_cart{ + position:relative; + padding-top:0 !important; + color:#333333; + bottom: 0; + left: 0; + margin: 0; + padding: 0; + border: 0; + display: block; + height: 20px; + line-height: 20px; + font-size: 12px; + content: ""; + float: left; + width: 60%; + text-align: left; + top: auto; + padding: 0 0 10px 15px; +} +.woocommerce a.added_to_cart:hover, .woocommerce-page a.added_to_cart:hover{color:#ea3c00} + +.woocommerce ul.products li.product h3, +body.woocommerce-page ul.products li.product h3{padding:8px 15px} + +/*pagenavi*/ +.nav-links{width:100%; text-align:center} +.nav-links.shop .pages-links{margin:0;display:inline-block;} +.nav-links.shop .pages-links a, +.nav-links.shop .pages-links span{padding: 0 4px;display:inline-block} +.woocommerce .nav-next, +.woocommerce .nav-previous{display:inline-block; margin: 0 10px} +.nav-links.shop .nav-next a, +.nav-links.shop .nav-previous a, +.nav-links.shop .pages-links a, +.nav-links.shop .current{color:#999999; text-decoration:none; font-size:14px} + +.nav-links.shop .nav-next a:hover, +.nav-links.shop .nav-previous a:hover, +.nav-links.shop .pages-links a:hover, +.nav-links.shop .current{color:#333333; text-decoration:underline} + +body.woocommerce nav.woocommerce-pagination ul, +body.woocommerce-page nav.woocommerce-pagination ul, +body.woocommerce #content nav.woocommerce-pagination ul, +body.woocommerce-page #content nav.woocommerce-pagination ul, +body.woocommerce nav.woocommerce-pagination ul li, +body.woocommerce-page nav.woocommerce-pagination ul li, +body.woocommerce #content nav.woocommerce-pagination ul li, +body.woocommerce-page #content nav.woocommerce-pagination ul li{border:0} + +body.woocommerce nav.woocommerce-pagination ul li a, +body.woocommerce-page nav.woocommerce-pagination ul li a, +body.woocommerce #content nav.woocommerce-pagination ul li a, +body.woocommerce-page #content nav.woocommerce-pagination ul li a, +body.woocommerce nav.woocommerce-pagination ul li span, +body.woocommerce-page nav.woocommerce-pagination ul li span, +body.woocommerce #content nav.woocommerce-pagination ul li span, +body.woocommerce-page #content nav.woocommerce-pagination ul li span{color:#999999} + +body.woocommerce nav.woocommerce-pagination ul li span.current, +body.woocommerce-page nav.woocommerce-pagination ul li span.current, +body.woocommerce #content nav.woocommerce-pagination ul li span.current, +body.woocommerce-page #content nav.woocommerce-pagination ul li span.current, +body.woocommerce nav.woocommerce-pagination ul li a:hover, +body.woocommerce-page nav.woocommerce-pagination ul li a:hover, +body.woocommerce #content nav.woocommerce-pagination ul li a:hover, +body.woocommerce-page #content nav.woocommerce-pagination ul li a:hover, +body.woocommerce nav.woocommerce-pagination ul li a:focus, +body.woocommerce-page nav.woocommerce-pagination ul li a:focus, +body.woocommerce #content nav.woocommerce-pagination ul li a:focus, +body.woocommerce-page #content nav.woocommerce-pagination ul li a:focus{background:none;color:#333333; text-decoration:underline} + +body.woocommerce nav.woocommerce-pagination ul li a.prev:hover, +body.woocommerce nav.woocommerce-pagination ul li a.next:hover, +body.woocommerce-page nav.woocommerce-pagination ul li a.prev:hover, +body.woocommerce-page nav.woocommerce-pagination ul li a.next:hover, +body.woocommerce #content nav.woocommerce-pagination ul li a.prev:hover, +body.woocommerce #content nav.woocommerce-pagination ul li a.next:hover, +body.woocommerce-page #content nav.woocommerce-pagination ul li a.prev:hover, +body.woocommerce-page #content nav.woocommerce-pagination ul li a.next:hover{text-decoration:none} + +.woocommerce a.button.added:before, +.woocommerce-page a.button.added:before, +.woocommerce button.button.added:before, +.woocommerce-page button.button.added:before, +.woocommerce input.button.added:before, +.woocommerce-page input.button.added:before, +.woocommerce #respond input#submit.added:before, +.woocommerce-page #respond input#submit.added:before, +.woocommerce #content input.button.added:before, +.woocommerce-page #content input.button.added:before{top: 9px !important; right: 7px !important;} + + +/*---SINGLE PRODUCT PAGE---*/ +.pp_pic_holder.pp_woocommerce>div.ppt{display:none !important} + +.single-product [itemprop='aggregateRating']{display:none} +.single-product [itemprop='description']{margin-bottom:2em} +.single-product.woocommerce div.product, +.single-product.woocommerce-page div.product, +.single-product.woocommerce #content div.product, +.single-product.woocommerce-page #content div.product{float:left;width:100%;} + +.single .woocommerce-message, +.single .woocommerce-error, +.single .woocommerce-info, +.woocommerce .woocommerce-info, +.woocommerce-page .woocommerce-info, +.woocommerce .woocommerce-message{display:block;padding:16px 16px 16px 50px;} + +@-moz-document url-prefix() { +.single .woocommerce-message+form, +.single .woocommerce-error+form, +.single .woocommerce-info+form, +.woocommerce .woocommerce-info+form, +.woocommerce-page .woocommerce-info+form, +.woocommerce .woocommerce-message+form{clear:both} +} + +.single-product #commentform label{width:120px;float:left} +.single-product #commentform .stars{float:left} +.single-product.woocommerce #review_form #respond .comment-form-comment, +.single-product.woocommerce-page #review_form #respond .comment-form-comment{width: 100%;float: left;margin: 20px 0;} +.single-product.woocommerce #review_form #respond .comment-form-comment label[for="comment"], +.single-product.woocommerce-page #review_form #respond .comment-form-comment label[for="comment"]{display:none} +.woocommerce p.stars a.star-1, +.woocommerce p.stars a.star-2, +.woocommerce p.stars a.star-3, +.woocommerce p.stars a.star-4, +.woocommerce p.stars a.star-5, +.woocommerce-page p.stars a.star-1, +.woocommerce-page p.stars a.star-2, +.woocommerce-page p.stars a.star-3, +.woocommerce-page p.stars a.star-4, +.woocommerce-page p.stars a.star-5{border:0 !important} + +.single-product .woocommerce-message, +.woocommerce .woocommerce-info,.woocommerce-page .woocommerce-info, +.woocommerce-cart .woocommerce-message, +.woocommerce .woocommerce-info, body.woocommerce-page .woocommerce-info, +.woocommerce .woocommerce-message, +.woocommerce ul.woocommerce-error, .woocommerce-page ul.woocommerce-error, +.woocommerce form.checkout_coupon, .woocommerce-page form.checkout_coupon{ + background: -webkit-linear-gradient(transparent,transparent); + background: -moz-linear-gradient(transparent,transparent); + background-color: initial; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + box-shadow: none !important; + box-shadow: 0 0px 2px 0 rgba(0,0,0,0.3) !important; + -webkit-box-shadow: 0 0px 2px 0 rgba(0,0,0,0.3) !important; + -moz-box-shadow: 0 0px 2px 0 rgba(0,0,0,0.3) !important; +} + +.post-type-archive-product .woocommerce-info, +.post-type-archive-product .woocommerce-error, +.post-type-archive-product .woocommerce-message{float: left;width:auto;width:calc(100% - 63px); max-width: 877px;} +.tax-product_cat .woocommerce-info, +.tax-product_cat .woocommerce-error, +.tax-product_cat .woocommerce-message{float: left;width:auto;width:877px; max-width: 877px;} +.tax-product_cat .eleven.columns .woocommerce-info, +.tax-product_cat .eleven.columns .woocommerce-error, +.tax-product_cat .eleven.columns .woocommerce-message{float: left;width:auto;width:577px; max-width: 577px;} + +body.woocommerce div.product form.cart .variations td.label, +body.woocommerce-page div.product form.cart .variations td.label, +body.woocommerce #content div.product form.cart .variations td.label, +body.woocommerce-page #content div.product form.cart .variations td.label{padding-top:15px;width:100%;padding-left:0;padding-right:0;float:left;color: #333333;} + +body.woocommerce div.product form.cart, +body.woocommerce #content div.product form.cart, +body.woocommerce-page div.product form.cart, +body.woocommerce-page #content div.product form.cart{margin:0 0 2em 0;} +body.woocommerce div.product form.cart .variations td.value, +body.woocommerce-page div.product form.cart .variations td.value, +body.woocommerce #content div.product form.cart .variations td.value, +body.woocommerce-page #content div.product form.cart .variations td.value{width:100%;padding-left:0;padding-right:0;float:left} +body.woocommerce div.product form.cart .single_variation, +body.woocommerce-page div.product form.cart .single_variation{float:left;width:100%;margin:0 0 15px 0} +body.woocommerce div.product form.cart .variations_button, +body.woocommerce-page div.product form.cart .variations_button{float:left;width:100%;margin:0 0 15px 0} +body.woocommerce div.product .product_meta, +body.woocommerce-page div.product .product_meta{padding:0 0 2em 0} + +body.woocommerce-page #content input.button.alt, +body.woocommerce-page #content input.button, +.single-product .woocommerce-message .button, +.single-product .woocommerce-error .button, +.single-product .woocommerce-info .button, +.single-product form.cart .button, +.single-product.woocommerce button.button.alt, +.single-product.woocommerce-page button.button.alt, +.woocommerce .add_review a.button, .woocommerce-page .add_review a.button, +.woocommerce-cart .woocommerce a.button, .woocommerce-cart .woocommerce-page a.button, +body.woocommerce #respond input#submit, body.woocommerce-page #respond input#submit, +.woocommerce-cart .woocommerce input.button, .woocommerce-cart .woocommerce-page input.button, +.woocommerce-checkout .woocommerce #payment #place_order, .woocommerce-checkout.woocommerce-page #payment #place_order, +.woocommerce-account .woocommerce .form-row input.button, .woocommerce-account.woocommerce-page .form-row input.button, +.woocommerce-account .button[type='submit'], .woocommerce-account.woocommerce-page .button[type='submit'], +body.woocommerce-page .woocommerce .cart-collaterals button.button, +.woocommerce table.my_account_orders .order-actions .button, body.woocommerce-page table.my_account_orders .order-actions .button, +.widget_shopping_cart_content .buttons a.button{ + padding: 10px 18px !important; + background: #333333; + border: 0 !important; + -webkit-border-radius: 0 !important; + -moz-border-radius: 0 !important; + border-radius: 0 !important; + color: white !important; + box-shadow: none !important; + text-shadow:none !important; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + -khtml-transition: all 0.3s ease-in-out; + -o-transition: all 0.3s ease-in-out; + -ms-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + filter:none; + width:auto ; +} + +@-moz-document url-prefix() { + body.woocommerce #respond input#submit[type="submit"], + body.woocommerce-account #content input.button[type="submit"], + body.woocommerce-checkout .woocommerce #payment #place_order{ + padding: 7px 18px !important; + } +} + + +.woocommerce-cart.woocommerce-page #content table td.actions .button:hover, +.woocommerce-account.woocommerce-page #content .woocommerce form input[type='submit']:hover, +body.woocommerce-checkout #content input.button:hover, +.single .woocommerce-message .button:hover, +.single .woocommerce-error .button:hover, +.single .woocommerce-info .button:hover, +.single-product form.cart .button:hover, +.single-product div form.cart button.button.alt:hover, +.single-product.woocommerce button.button.alt:hover, +.single-product.woocommerce-page button.button.alt:hover, +.woocommerce .add_review a.button:hover, .woocommerce-page .add_review a.button:hover, +body.woocommerce-cart .woocommerce a.button:hover, .woocommerce-cart .woocommerce-page a.button:hover, +body.woocommerce #respond input#submit:hover, body.woocommerce-page #respond input#submit:hover, +body.woocommerce-cart .woocommerce input.button:hover, .woocommerce-cart .woocommerce-page input.button:hover, +body.woocommerce-checkout .woocommerce #payment #place_order:hover, .woocommerce-checkout.woocommerce-page #payment #place_order:hover, +body.woocommerce-account .woocommerce .form-row input.button:hover, .woocommerce-account.woocommerce-page .form-row input.button:hover, +body.woocommerce-account .button[type='submit']:hover, .woocommerce-account.woocommerce-page .button[type='submit']:hover, +body.woocommerce-page .woocommerce .cart-collaterals button.button:hover, +.woocommerce table.my_account_orders .order-actions .button:hover, body.woocommerce-page table.my_account_orders .order-actions .button:hover, +.widget_shopping_cart_content .buttons a.button:hover{ + color:white; + background: none repeat scroll 0 0 #F15A23; +} + +.single-product form.cart .button, +.single-product.woocommerce button.button.alt, +.single-product.woocommerce-page button.button.alt{margin:0} + +.widget_shopping_cart_content .buttons a.button{margin:5px 5px 5px 0;float:left} + +.woocommerce-cart .woocommerce a.button, .woocommerce-cart .woocommerce-page a.button, +.woocommerce .add_review a.button, .woocommerce-page .add_review a.button{margin:0;} + +.woocommerce table.my_account_orders .order-actions .button, body.woocommerce-page table.my_account_orders .order-actions .button{ + margin: 0 auto; + display: block; + text-align: center; + width: 50%; +} + +.woocommerce div.product form.cart .variations td, +.woocommerce-page div.product form.cart .variations td, +.woocommerce #content div.product form.cart .variations td, +.woocommerce-page #content div.product form.cart .variations td{border:0;} +.woocommerce div.product form.cart .variations select, +.woocommerce-page div.product form.cart .variations select, +.woocommerce #content div.product form.cart .variations select, +.woocommerce-page #content div.product form.cart .variations select{width:auto !important;max-width:490px} + +.woocommerce table.shop_table, .woocommerce-page table.shop_table{position:initial !important} + +body.woocommerce div.product form.cart .variations select, +body.woocommerce-page div.product form.cart .variations select, +body.woocommerce #content div.product form.cart .variations select, +body.woocommerce-page #content div.product form.cart .variations select{ + float:left; + height:35px; + min-width:200px !important; + max-width:400px; + padding:0 35px 0 15px; + -webkit-appearance: none; + -moz-appearance:none; + appearance:none; + text-indent:0,01px; + text-overflow: ''; + border:1px solid #e5e5e5; + color:#999999; + background: url(images/shop_select_bg.png) center right no-repeat transparent; + outline:none; + overflow:hidden; +} + +@-moz-document url-prefix() { +body.woocommerce div.product form.cart .variations select, body.woocommerce-page div.product form.cart .variations select, body.woocommerce #content div.product form.cart .variations select, body.woocommerce-page #content div.product form.cart .variations select{ + background:none !important; +} +} + +.single-product .reset_variations{padding-top: 6px;margin-left: 16px;display: block;float: left;} +.woocommerce #review_form #respond p.form-submit, .woocommerce-page #review_form #respond p.form-submit{float:left} + +body.woocommerce-page .woocommerce-breadcrumb{position:relative;/* z-index:99 */} +body.woocommerce-page .woocommerce-breadcrumb a:hover{color:#ea3c00} +body.woocommerce div.product span.price, +body.woocommerce-page div.product span.price, +body.woocommerce #content div.product span.price, +body.woocommerce-page #content div.product span.price, +body.woocommerce div.product p.price, +body.woocommerce-page div.product p.price, +body.woocommerce #content div.product p.price, +body.woocommerce-page #content div.product p.price{color:#ea3c00 ; margin: 18px 0 } + +body.woocommerce div.product div.images img, +body.woocommerce-page div.product div.images img, +body.woocommerce #content div.product div.images img, +body.woocommerce-page #content div.product div.images img{ + box-shadow: 0 0px 3px 0 rgba(0,0,0,0.3); + -webkit-box-shadow: 0 0px 3px 0 rgba(0,0,0,0.3); + -moz-box-shadow: 0 0px 3px 0 rgba(0,0,0,0.3); +} + +body.woocommerce div.product div.images .thumbnails img, +body.woocommerce-page div.product div.images .thumbnails img, +body.woocommerce #content div.product div.images .thumbnails img, +body.woocommerce-page #content div.product div.images .thumbnails img{margin-bottom:12px} + +body.woocommerce div.product form.cart .quantity .qty, +body.woocommerce-page div.product form.cart .quantity .qty, +body.woocommerce #content div.product form.cart .quantity .qty, +body.woocommerce-page #content div.product form.cart .quantity .qty, +.woocommerce-page.woocommerce-cart #content .product-quantity .quantity .qty{border:1px solid #e5e5e5; text-align:center; padding:8px 0;} + +.single-product.woocommerce #reviews #comments h2, +.single-product.woocommerce-page #reviews #comments h2{display:none} + +/*related products*/ +.single-product .related.products, +.single-product .upsells.products{float:left;width:100%} + +body.single-product .upsells.products h2{float:left;width:100%;margin: 25px 0;} +body.single-product .related.products h2{float:left;width:100%;margin:25px 0;border-bottom: 2px solid #F15A23;padding: 0 0 10px 0;font-size:17px} +.woocommerce .related ul.products li.product, +.woocommerce-page .related ul.products li.product, +.woocommerce .upsells.products ul.products li.product, +.woocommerce-page .upsells.products ul.products li.product, +.woocommerce .related ul li.product, +.woocommerce-page .related ul li.product, +.woocommerce .upsells.products ul li.product, +.woocommerce-page .upsells.products ul li.product{width: 21.75%;margin-left: 3.8%;margin-right: 0;} + +body.woocommerce div.product .related.products span.price, +body.woocommerce-page div.product .related.products span.price, +body.woocommerce #content div.product .related.products span.price, +body.woocommerce-page #content div.product .related.products span.price{margin-left:15px !important} + +body.woocommerce div.product form.cart .button:hover, +body.woocommerce-page div.product form.cart .button:hover, +body.woocommerce #content div.product form.cart .button:hover, +body.woocommerce-page #content div.product form.cart .button:hover{color:#ea3c00} + + +body.woocommerce div.product div.summary, +body.woocommerce-page div.product div.summary, +body.woocommerce #content div.product div.summary, +body.woocommerce-page #content div.product div.summary{float:right; width:100%; margin:0 } + +body.woocommerce div.product .woocommerce-tabs, +body.woocommerce-page div.product .woocommerce-tabs, +body.woocommerce #content div.product .woocommerce-tabs, +body.woocommerce-page #content div.product .woocommerce-tabs{ + float:right; + width:100%; + clear:none; + margin:0; + padding:0; + box-shadow: 0 0px 3px 0 rgba(0,0,0,0.3); + -webkit-box-shadow: 0 0px 3px 0 rgba(0,0,0,0.3); + -moz-box-shadow: 0 0px 3px 0 rgba(0,0,0,0.3); +} + +body.woocommerce div.product .woocommerce-tabs ul.tabs, +body.woocommerce-page div.product .woocommerce-tabs ul.tabs, +body.woocommerce #content div.product .woocommerce-tabs ul.tabs, +body.woocommerce-page #content div.product .woocommerce-tabs ul.tabs{padding:0} + +body.woocommerce div.product .woocommerce-tabs .panel, +body.woocommerce-page div.product .woocommerce-tabs .panel, +body.woocommerce #content div.product .woocommerce-tabs .panel, +body.woocommerce-page #content div.product .woocommerce-tabs .panel{margin:15px;padding:0} + +.woocommerce div.product .woocommerce-tabs .panel, +.woocommerce-page div.product .woocommerce-tabs .panel, +.woocommerce #content div.product .woocommerce-tabs .panel, +.woocommerce-page #content div.product .woocommerce-tabs .panel{min-height:95px} + +body.woocommerce div.product .woocommerce-tabs ul.tabs li, +body.woocommerce-page div.product .woocommerce-tabs ul.tabs li, +body.woocommerce #content div.product .woocommerce-tabs ul.tabs li, +body.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li{ + background:none; + content:initial !important; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + border-top:0; + margin:-2px; + padding:15px 30px; +} + +.woocommerce div.product .woocommerce-tabs ul.tabs li a, +body.woocommerce-page div.product .woocommerce-tabs ul.tabs li a, + .woocommerce #content div.product .woocommerce-tabs ul.tabs li a, +body.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li a{padding:0 ; color:#333333;font-size:12px;} + +body.woocommerce div.product .woocommerce-tabs ul.tabs li:after, +body.woocommerce-page div.product .woocommerce-tabs ul.tabs li:after, +body.woocommerce #content div.product .woocommerce-tabs ul.tabs li:after, +body.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li:after, +body.woocommerce div.product .woocommerce-tabs ul.tabs li:before, +body.woocommerce-page div.product .woocommerce-tabs ul.tabs li:before, +body.woocommerce #content div.product .woocommerce-tabs ul.tabs li:before, +body.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li:before{display:none;content:initial !important} + +.woocommerce #content div.product .woocommerce-tabs ul.tabs li, .woocommerce div.product .woocommerce-tabs ul.tabs li, .woocommerce-page #content div.product .woocommerce-tabs ul.tabs li, .woocommerce-page div.product .woocommerce-tabs ul.tabs li { + box-shadow: 0 3px 3px rgba(0, 0, 0, 0.2),inset 0 1px 0 rgba(255, 255, 255, 0.6); +} + +.woocommerce #content div.product .woocommerce-tabs ul.tabs li.active, .woocommerce div.product .woocommerce-tabs ul.tabs li.active, .woocommerce-page #content div.product .woocommerce-tabs ul.tabs li.active, .woocommerce-page div.product .woocommerce-tabs ul.tabs li.active { + background: #FFF; + z-index: 2; + border-bottom-color: #FFF; +} + +.woocommerce div.product form.cart .variations, +.woocommerce-page div.product form.cart .variations, +.woocommerce #content div.product form.cart .variations, +.woocommerce-page #content div.product form.cart .variations{border:0 !important} + +/*onsale*/ +.single.woocommerce span.onsale, .single.woocommerce-page span.onsale, +.archive.woocommerce span.onsale,.archive.woocommerce-page span.onsale, +.woocommerce ul.products li.product .onsale, body.woocommerce-page ul.products li.product .onsale{ + width:63px; + height:63px; + line-height:63px; + background:url(../images/action.png) no-repeat transparent !important; + text-indent:-1000px !important; + font-size:0px; + text-shadow:none; + box-shadow:none; + border-radius:0; + padding:0px; + margin:6px; +} + +.single.woocommerce .related span.onsale, .single.woocommerce-page .related span.onsale {top:50px; left:278px;} +.archive.woocommerce span.onsale, .archive.woocommerce-page span.onsale {top:64px; left:278px;} + +/*---CART PAGE---*/ +.woocommerce-cart .entry-header{display:none} +.woocommerce-cart .entry-content{margin:7px 0 0 0} +.woocommerce-cart.woocommerce table.cart a.remove, +body.woocommerce-cart.woocommerce-page table.cart a.remove, +body.woocommerce-cart.woocommerce-page .woocommerce table.cart a.remove, +.woocommerce-cart.woocommerce #content table.cart a.remove, +body.woocommerce-cart.woocommerce-page #content table.cart a.remove, +body.woocommerce-cart.woocommerce-page .woocommerce #content table.cart a.remove, +.woocommerce-cart.woocommerce table.cart a.remove:hover, +body.woocommerce-cart.woocommerce-page table.cart a.remove:hover, +body.woocommerce-cart.woocommerce-page .woocommerce table.cart a.remove:hover, +.woocommerce-cart.woocommerce #content table.cart a.remove:hover, +body.woocommerce-cart.woocommerce-page #content table.cart a.remove:hover, +body.woocommerce-cart.woocommerce-page .woocommerce#content table.cart a.remove:hover{ + font-size: 0 ; + color:white ; + height: 21px ; + width: 21px; + padding: 0; + margin: 0 auto; + background-size: 21px; + text-shadow:none; + background: url(images/cansel_sale.png) no-repeat 0 0 transparent; +} +/*table*/ +.woocommerce-cart .woocommerce table.shop_table, .woocommerce-cart .woocommerce-page table.shop_table, + .woocommerce-cart .woocommerce .cart-collaterals .cart_totals table, + .woocommerce-cart.woocommerce-page .cart-collaterals .cart_totals table{ + border:0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + box-shadow: 0 0px 2px 0 rgba(0,0,0,0.3); + -webkit-box-shadow: 0 0px 2px 0 rgba(0,0,0,0.3); + -moz-box-shadow: 0 0px 2px 0 rgba(0,0,0,0.3); +} +.woocommerce-cart table tbody tr:nth-child(even) td, +body.woocommerce-page table tbody tr:nth-child(even) td{background:initial;filter:none} +body.woocommerce-account table tbody tr:nth-child(even) td{color:initial} +.woocommerce-cart table thead th, .woocommerce-cart table th, +.woocommerce-account table thead th, .woocommerce-account table th{background:none;border-left:1px solid rgba(0,0,0,0.1);color:#333333;font-size:14px; text-align:center} +.woocommerce-account table thead th:first-child, .woocommerce-account table th:first-child{border-left:0} +.woocommerce-account table tfoot th{text-align:left} +.woocommerce-account table thead th, .woocommerce-account table th{padding:17px 0 } +.woocommerce-account table tbody tr *, .woocommerce-account table tbody tr *{color:#333333} +.woocommerce td.product-name dl.variation dd, .woocommerce-page td.product-name dl.variation dd,.woocommerce td.product-name dl.variation dd p, .woocommerce-page td.product-name dl.variation dd p{padding:0; margin:0} +.woocommerce-account table tbody tr td.product-total, .woocommerce-account table tbody tr td.product-total{text-align:center} +.woocommerce-account table tbody tr a:hover, .woocommerce-account table tbody tr a:hover{color:#ff5d2a} +.woocommerce-account table.my_account_orders tbody tr td:first-child , .woocommerce-account table.my_account_order tbody tr td:first-child {text-align:center} +.woocommerce-cart table thead th:first-child, .woocommerce-cart table th:first-child{border-left:0;} +.woocommerce-cart.woocommerce-page #content table thead th{padding:17px 10px;line-height:14px;} +.woocommerce-cart.woocommerce-page #content table thead th.product-remove{width:52px} +.woocommerce-cart.woocommerce-page #content table thead th.product-thumbnail{width:99px} +.woocommerce-cart.woocommerce-page #content table thead th.product-name{width:235px} +.woocommerce-cart.woocommerce-page #content table thead th.product-price{width:160px} +.woocommerce-cart.woocommerce-page #content table thead th.product-quantity{width:212px; } +.woocommerce-cart.woocommerce-page #content table thead th.product-subtotal{width:175px;} + +.woocommerce-cart.woocommerce-page #content table td.actions{padding:0} +.woocommerce-cart.woocommerce-page #content table td.actions [name='update_cart'], +.woocommerce-cart.woocommerce-page #content table td.actions [name='update_cart']:hover, +.woocommerce-cart.woocommerce-page #content table td.actions [name='update_cart']:active, +.woocommerce-cart.woocommerce-page #content table td.actions [name='proceed'], +.woocommerce-cart.woocommerce-page #content table td.actions [name='proceed']:hover, +.woocommerce-cart.woocommerce-page #content table td.actions [name='proceed']:active{top:auto ;position:relative; padding:0;margin:0;} + +.woocommerce-cart.woocommerce-page #content table.shop_table.cart tbody tr:last-child td{padding:5px;} +.woocommerce-cart.woocommerce-page #content table td.actions input.button, +.woocommerce-cart.woocommerce-page #content table td.actions input.button:hover{float:right;margin:5px 10px 5px 5px} + +.woocommerce-cart.woocommerce-page #content table td{text-align:center;border-top:0px} +.woocommerce-cart.woocommerce-page #content table td.product-name{text-align:left;} +.woocommerce-cart.woocommerce-page #content table td a, +.woocommerce-cart.woocommerce-page #content table td span{text-decoration:none;color:#333333 } +.woocommerce-cart.woocommerce-page #content table td.product-name a:hover{text-decoration:none;color:#ff5d2a } +.woocommerce-cart.woocommerce-page #content table td.product-quantity .quantity {margin:0 auto} +.woocommerce-cart .woocommerce table.cart img, +.woocommerce-cart.woocommerce-page table.cart img, +.woocommerce-cart.woocommerce #content table.cart img, +.woocommerce-cart.woocommerce-page #content table.cart img{max-width:74px;width:auto} + +body.woocommerce-page #content table.cart td.actions .coupon label {float:left;display:block;padding:5px;margin:5px 0 5px 5px } +body.woocommerce-page #content table.cart td.actions .coupon #coupon_code {height:32px;margin:5px 4px 5px 0; width:100px; text-align:center; } + +.woocommerce-cart.woocommerce-page #content .cart_totals table td{vertical-align:middle} + +.woocommerce .cart-collaterals .cross-sells ul.products, +body.woocommerce-page .cart-collaterals .cross-sells ul.products{margin:0} + +.woocommerce-cart .woocommerce .cart-collaterals .cart_totals, +body.woocommerce-cart.woocommerce-page .cart-collaterals .cart_totals{float:left;width:100%;} + +.woocommerce-cart .woocommerce .cart-collaterals .shipping_calculator, +body.woocommerce-cart.woocommerce-page .cart-collaterals .shipping_calculator{float:left;width: 100%;display: block;text-align:left} + +.woocommerce-cart .woocommerce .cart-collaterals .shipping_calculator section, +body.woocommerce-cart.woocommerce-page .cart-collaterals .shipping_calculator section{width:100%} + +body.woocommerce-cart .woocommerce .cart-collaterals .shipping_calculator h2 , +body.woocommerce-cart.woocommerce-page .cart-collaterals .shipping_calculator h2 {width:100%;margin:20px 0} + +.woocommerce-cart .woocommerce .cart-collaterals .cart_totals h2, +.woocommerce-cart.woocommerce-page .cart-collaterals .cart_totals h2, +.woocommerce-cart .woocommerce .cart-collaterals .cross-sells h2, +.woocommerce-cart.woocommerce-page .cart-collaterals .cross-sells h2 {text-align:left; margin: 0 0 30px 0} +.woocommerce-cart .woocommerce .cart-collaterals .cart_totals table, +.woocommerce-cart.woocommerce-page .cart-collaterals .cart_totals table{width:100%;-webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0;border:0;margin:30px 0 20px} +.woocommerce-cart .woocommerce .cart-collaterals .cart_totals table th, +.woocommerce-cart.woocommerce-page .cart-collaterals .cart_totals table th{width:190px; border-bottom:1px solid rgba(0,0,0,0.1);padding:17px 0 16px} +.woocommerce-cart .woocommerce .cart-collaterals .cart_totals table td, +.woocommerce-cart.woocommerce-page .cart-collaterals .cart_totals table td{width:190px; border-bottom:1px solid rgba(0,0,0,0.1);} + +.woocommerce-cart .woocommerce .cart-collaterals .cart_totals table select, +.woocommerce-cart.woocommerce-page .cart-collaterals .cart_totals table select, +.woocommerce-checkout select#shipping_method{ + height: 35px; + width: 250px !important; + max-width: 250px; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + text-indent: 0,01px; + text-overflow: ''; + border: 1px solid #e5e5e5; + color: #999999; + background: url(images/shop_select_bg.png) center right no-repeat transparent; + outline: none; + padding: 5px 35px 5px 12px; +} + +.woocommerce-cart .woocommerce .cart-collaterals .cross-sells, +.woocommerce-cart.woocommerce-page .cart-collaterals .cross-sells{width:100%;} +.woocommerce.woocommerce-cart ul.products li.product, +.woocommerce-page.woocommerce-cart ul.products li.product{width: 21.75%;margin: 0 0 2.992em 3.8%;} + +/*---CHEKOUT---*/ +.woocommerce-checkout #customer_details{display:block;float:left;width:100%;margin:0 ;} +.woocommerce-checkout #order_review_heading{float:none;width:100%;display:block;} +.woocommerce-checkout #order_review{display:block;float:right;width:100%;margin:0;} +.woocommerce-checkout #page .container .entry-header{border:0;} + +.woocommerce-checkout .woocommerce .col2-set .col-1, +.woocommerce-checkout .woocommerce-page .col2-set .col-1, +.woocommerce-checkout .woocommerce .col2-set .col-2, +.woocommerce-checkout .woocommerce-page .col2-set .col-2{width:100%;margin:0 0% 0 0;padding:0;} + +.woocommerce-checkout .woocommerce .col2-set.addresses .col-1, +.woocommerce-checkout .woocommerce-page .col2-set.addresses .col-1, +.woocommerce-checkout .woocommerce .col2-set.addresses .col-2, +.woocommerce-checkout .woocommerce-page .col2-set.addresses .col-2{width:48%;margin:0 0% 0 0;padding:0;} + +.woocommerce-checkout .woocommerce form .form-row textarea, +.woocommerce-checkout.woocommerce-page form .form-row textarea{ + height:200px; + box-shadow: 0 0px 1px 0 rgba(0,0,0,0.1); + -webkit-box-shadow: 0 0px 1px 0 rgba(0,0,0,0.1); + -moz-box-shadow: 0 0px 1px 0 rgba(0,0,0,0.1); +} +.woocommerce-checkout .woocommerce form .form-row-first, +.woocommerce-checkout.woocommerce-page form .form-row-first, +.woocommerce-checkout .woocommerce form .form-row-last, +.woocommerce-checkout.woocommerce-page form .form-row-last{padding:0;margin:0 0 18px 0} +.woocommerce-checkout .woocommerce form .form-row-wide, +.woocommerce-checkout.woocommerce-page form .form-row-wide{padding:0;margin:0 0 18px 0} + +.woocommerce-checkout.woocommerce-page table.shop_table{ + border: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + box-shadow: 0 0px 2px 0 rgba(0,0,0,0.3); + -webkit-box-shadow: 0 0px 2px 0 rgba(0,0,0,0.3); + -moz-box-shadow: 0 0px 2px 0 rgba(0,0,0,0.3); +} +.woocommerce-checkout.woocommerce-page table.shop_table .product-name{width:75%;} +.woocommerce-checkout.woocommerce-page table.shop_table .product-total{width:25%;text-align:center;font-size:14px;} +.woocommerce-checkout.woocommerce-page table.shop_table .amount{font-size:14px;} +.woocommerce table.shop_table td, .woocommerce-page table.shop_table td{border-top:0;} +.woocommerce-checkout.woocommerce-page table.shop_table thead th{color:#333333;background:none;filter:none; font-size:14px; line-height:14px;padding:17px 12px;text-align:center;border-color:#cccccc;font-weight:bold} +.woocommerce-checkout.woocommerce-page table.shop_table thead th:last-child{border-left:1px solid rgba(0,0,0,0.1)} +.woocommerce-checkout.woocommerce-page table.shop_table tbody tr td *{color:#333333} +.woocommerce-checkout.woocommerce-page table.shop_table tbody tr td a:hover{color:#ff5d2a} +.woocommerce-checkout.woocommerce-page table.shop_table tbody tr:nth-child(even) td{background:none;filter:none} +.woocommerce-checkout.woocommerce-page table.shop_table tfoot *, +.woocommerce-acoount.woocommerce-page table.shop_table tfoot * {filter:none;background:none;color:#333333;border-color:#cccccc;} +.woocommerce-checkout.woocommerce-page table.shop_table tfoot tr th, +.woocommerce-account.woocommerce-page table.shop_table tfoot tr th {border-width:1px 0px 0px 0px;padding:17px;padding-bottom:16px} +.woocommerce-checkout.woocommerce-page table.shop_table tfoot tr:first-child th, +.woocommerce-account.woocommerce-page table.shop_table tfoot tr:first-child th, +.woocommerce-checkout.woocommerce-page table.shop_table tfoot tr:first-child td, +.woocommerce-account.woocommerce-page table.shop_table tfoot tr:first-child td{border-width:0px 0px 0px 0px;} +.woocommerce-checkout.woocommerce-page table.shop_table tfoot tr td, +.woocommerce-account.woocommerce-page table.shop_table tfoot tr td {border-top-width:1px; text-align:center} +.woocommerce-checkout table tbody tr:last-child td:last-child, +.woocommerce-account table tbody tr:last-child td:last-child, +.woocommerce-cart table tbody tr:last-child td:last-child{border-right:0} + +.woocommerce-checkout .woocommerce #payment, .woocommerce-checkout.woocommerce-page #payment{background:none} +.woocommerce-checkout .woocommerce #payment ul.payment_methods, .woocommerce-checkout.woocommerce-page #payment ul.payment_methods{width:96%;float:left;display:block;border:0;} +.woocommerce-checkout .woocommerce #payment div.payment_box, .woocommerce-checkout.woocommerce-page #payment div.payment_box{ + background:none; + filter:none; + border:0px solid #cccccc; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + box-shadow: 0 0px 2px 0 rgba(0,0,0,0.3); + -webkit-box-shadow: 0 0px 2px 0 rgba(0,0,0,0.3); + -moz-box-shadow: 0 0px 2px 0 rgba(0,0,0,0.3); +} +.woocommerce-checkout .woocommerce #payment div.payment_box:after, .woocommerce-checkout .woocommerce-page #payment div.payment_box:after{ + display:block; + float:left; + width:13px; + height:8px; + background: url(images/checkout_mes_bg.png) no-repeat transparent; + background-size:13px 8px; + top:3px; + border:0; +} +.woocommerce .checkout .col-2 .notes, .woocommerce-page .checkout .col-2 .notes{padding:0;} +body .woocommerce ul#shipping_method li, body.woocommerce-page ul#shipping_method li{width: 100%; float: left; text-indent: 0; margin-left: 0; text-align: left;} + + +/*---ACCOUNT PAGE---*/ +.woocommerce-account input:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px white inset !important;} +.woocommerce-account #page .container .entry-header {border: 0;} +.woocommerce-account .woocommerce .col2-set .col-1, +.woocommerce-account .woocommerce-page .col2-set .col-1{width:272px;padding:0; margin:0 80px 0 0} +.woocommerce-account .woocommerce .col2-set .col-2, +.woocommerce-account .woocommerce-page .col2-set .col-2{float:left;width:272px;padding:0; margin:0} +.woocommerce-account .woocommerce form.login, +.woocommerce-account .woocommerce-page form.login{width:272px;border:0;padding:0;} +.woocommerce-account .woocommerce form.register, +.woocommerce-account.woocommerce-page form.register{width:270px;border:0;padding:0;} +.woocommerce-account .woocommerce form .form-row, +.woocommerce-account.woocommerce-page form .form-row{float:left;width:100%;border: 0;padding: 0;margin: 0 0 18px 0;} +.woocommerce-account .woocommerce form .form-row input, +.woocommerce-account.woocommerce-page form .form-row input{float:left ;width:100%;box-shadow:none;-webkit-border-radius: 0;-moz-border-radius: 0; border-radius: 0;border:1px solid #cccccc;background-color:initial;} +.woocommerce-account .woocommerce form .form-row .inline, +.woocommerce-account.woocommerce-page form .form-row .inline{width:100%;float:left;margin-top:10px;} +.woocommerce-account .woocommerce form .form-row .inline #rememberme, +.woocommerce-account.woocommerce-page form .form-row .inline #rememberme{width:auto;margin:6px;} + +.woocommerce-account .woocommerce .form-row .lost_password, +.woocommerce-account.woocommerce-page .form-row .lost_password {float: left;padding: 5px 0 5px 20px;text-decoration: none;} + +.woocommerce-account .woocommerce form .form-row input.input-text, +.woocommerce-account.woocommerce-page form .form-row input.input-text, +#billing_country, #shipping_country{max-width:500px} + +.woocommerce table.my_account_orders th, body.woocommerce-page table.my_account_orders th{padding: 17px 12px;line-height:14px;} +.woocommerce table.shop_table th, body.woocommerce-page table.shop_table th{padding: 17px 12px;line-height:14px;} +.woocommerce-account .chosen-container-single .chosen-single{width:490px;} +body .chosen-container .chosen-results{float: left; width: 100%;} + +/*FONTS*/ +body.woocommerce .woocommerce-breadcrumb, +body.woocommerce-page .woocommerce-breadcrumb, +body.woocommerce .woocommerce-breadcrumb, +body.woocommerce-page .woocommerce-breadcrumb a {font-size:14px; color:#333333; } + +.woocommerce ul.products li.product .price , +.woocommerce-page ul.products li.product .price {color: #ea3c00; font-size:14px !important;word-wrap: break-word;} + +.woocommerce .prod_num_row-5 ul.products li.product .price , +.woocommerce-page .prod_num_row-5 ul.products li.product .price {width:114px;} +.woocommerce .prod_num_row-4 ul.products li.product .price , +.woocommerce-page .prod_num_row-4 ul.products li.product .price {width:159px;} +.woocommerce .prod_num_row-3 ul.products li.product .price , +.woocommerce-page .prod_num_row-3 ul.products li.product .price {width:239px;} +.woocommerce .prod_num_row-2 ul.products li.product .price , +.woocommerce-page .prod_num_row-2 ul.products li.product .price {width:389px;} + +.woocommerce .eleven.columns.prod_num_row-5 ul.products li.product .price , +.woocommerce-page .eleven.columns.prod_num_row-5 ul.products li.product .price {width:59px;} +.woocommerce .eleven.columns.prod_num_row-4 ul.products li.product .price , +.woocommerce-page .eleven.columns.prod_num_row-4 ul.products li.product .price {width:90px;} +.woocommerce .eleven.columns.prod_num_row-3 ul.products li.product .price , +.woocommerce-page .eleven.columns.prod_num_row-3 ul.products li.product .price {width:144px;} +.woocommerce .eleven.columns.prod_num_row-2 ul.products li.product .price , +.woocommerce-page .eleven.columns.prod_num_row-2 ul.products li.product .price {width:247px;} + +.woocommerce-cart .cart_totals table td{color:#333333; font-weight:bold;} +.woocommerce-cart .cart_totals table td select{font-weight:initial} + +.woocommerce-cart .woocommerce .cart-collaterals .cart_totals h2, +.woocommerce-cart.woocommerce-page .cart-collaterals .cart_totals h2, +.woocommerce-cart .woocommerce .cart-collaterals .cross-sells h2, +.woocommerce-cart.woocommerce-page .cart-collaterals .cross-sells h2, +.woocommerce ul.products li.product h3, +body.woocommerce-page ul.products li.product h3 , +.woocommerce-cart .woocommerce .cart-collaterals .cart_totals table th, +.woocommerce-cart .woocommerce .cart-collaterals .cart_totals table th strong, +.woocommerce-cart.woocommerce-page .cart-collaterals .cart_totals table th, +.woocommerce-cart.woocommerce-page .cart-collaterals .cart_totals table th strong, +.woocommerce-checkout #page .container header.entry-header h1.entry-title, +.woocommerce-account #page .container header.entry-header h1.entry-title, +.woocommerce-page #page .container header.entry-header h1.entry-title, +.woocommerce-checkout .woocommerce form .form-row input.input-text, +body.woocommerce-checkout.woocommerce-page form .form-row input.input-text, +.woocommerce-checkout .woocommerce form .form-row textarea, +body.woocommerce-checkout.woocommerce-page form .form-row textarea{color:#333333} + +body.woocommerce-cart .woocommerce .cart-collaterals .shipping_calculator h2 a, +body.woocommerce-cart.woocommerce-page .cart-collaterals .shipping_calculator h2 a{text-decoration:none;color:#333333;} + +/*PRELOADER*/ +.woocommerce #respond input#submit.loading:after, +.woocommerce a.button.loading:after, +.woocommerce button.button.loading:after, +.woocommerce input.button.loading:after { + font-size:20px; + top:5px; + right:5px; +} + +@media (-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){ + +} + +/* styles from "@media only screen and (min-width:1024px)" */ +/*secondary*/ +.woocommerce-page #secondary input#s{ width: 234px;} +/*shop*/ +.nav-links.shop .pages-links .page-numbers,.nav-links.shop .nav-next a,.nav-links.shop .nav-previous a{padding: 10px 18px;} +.woocommerce a.added_to_cart, body.woocommerce-page a.added_to_cart{clear:both} +/*cart*/ +.woocommerce-cart .woocommerce .cart-collaterals .cart_totals, body.woocommerce-cart.woocommerce-page .cart-collaterals .cart_totals{max-width:450px} +.woocommerce-cart .woocommerce .cart-collaterals .shipping_calculator section, body.woocommerce-cart.woocommerce-page .cart-collaterals .shipping_calculator section{max-width:450px} +.woocommerce form .form-row select#calc_shipping_country, .woocommerce-page form .form-row select#calc_shipping_country{width:444px} +.woocommerce div form .form-row input.input-text, .woocommerce-page form .form-row input.input-text, .woocommerce div form .form-row textarea, .woocommerce-page form .form-row textarea{max-width:100%} +/*checkout*/ +.woocommerce-checkout .checkout{float:left; width:100%} +.woocommerce-checkout .woocommerce #payment ul.payment_methods, .woocommerce-checkout.woocommerce-page #payment ul.payment_methods{max-width:410px} +/*product*/ +body.woocommerce div.product div.summary, +body.woocommerce-page div.product div.summary, +body.woocommerce #content div.product div.summary, +body.woocommerce-page #content div.product div.summary{max-width:565px} +body.woocommerce .eleven.columns div.product div.summary, +body.woocommerce-page .eleven.columns div.product div.summary, +body.woocommerce .eleven.columns #content div.product div.summary, +body.woocommerce-page .eleven.columns #content div.product div.summary{max-width:100%} +body.woocommerce div.product .woocommerce-tabs, +body.woocommerce-page div.product .woocommerce-tabs, +body.woocommerce #content div.product .woocommerce-tabs, +body.woocommerce-page #content div.product .woocommerce-tabs{ max-width:565px; } +body.woocommerce .eleven.columns div.product .woocommerce-tabs, +body.woocommerce-page .eleven.columns div.product .woocommerce-tabs, +body.woocommerce .eleven.columns #content div.product .woocommerce-tabs, +body.woocommerce-page .eleven.columns #content div.product .woocommerce-tabs{ max-width:100%; } +body.woocommerce div.product div.images, +body.woocommerce-page div.product div.images, +body.woocommerce #content div.product div.images, +body.woocommerce-page #content div.product div.images{float:left; width:350px; margin:0 25px 0 0} +.single.woocommerce span.onsale, .single.woocommerce-page span.onsale{top: 10px;left: 278px;} +/*product category*/ +body.woocommerce.archive.tax-product_cat #page .woo-loop-content{padding: 0;} + diff --git a/themes/fruitful/woocommerce/woo.css b/themes/fruitful/woocommerce/woo.css new file mode 100644 index 0000000..6c10629 --- /dev/null +++ b/themes/fruitful/woocommerce/woo.css @@ -0,0 +1,1518 @@ +/* +Responsive Styles for Woocommerce. +*/ + +.woocommerce div form .form-row input.input-text, +.woocommerce-page form .form-row input.input-text, +.woocommerce div form .form-row textarea, +.woocommerce-page form .form-row textarea {padding: 7px 0 7px 12px;height:35px;} +.woocommerce-page form .form-row textarea {height: 288px;} +.woocommerce form .form-row-first, +.woocommerce-page form .form-row-first, +.woocommerce form .form-row-last, +.woocommerce-page form .form-row-last {width: 100%;} +.woocommerce h2{margin:20px 0} +.woocommerce .head-container h2{margin:0} + +.woocommerce-product-search > input[type="submit"] { + display: block; + top: 0; + right: 0; + position: absolute; + width: 25px; + height: 32px; + text-indent: -999px; + opacity: 0; +} + +.woocommerce-product-search > .screen-reader-text { + clip: rect(1px, 1px, 1px, 1px); + position: absolute !important; +} + +.woocommerce-product-search { + position:relative; +} + +.woocommerce-product-search:after { + content: "\f002"; + position: absolute; + font-family: FontAwesome; + right: 10px; + color: #45494c; + top: 6px; + font-size: 15px; + border-left: 1px solid #d7d7d7; + padding: 0px 0 0 11px; + line-height: 20px; + pointer-events: none; +} + +.woocommerce-product-search > input.search-field { + border-radius:2px 2px 2px 2px; + font-size:13px; + height:22px; + line-height:1.2em; + padding:4px 32px 4px 12px; + width:234px; + border: 1px solid #e5e5e5; + color: #45494c; + -webkit-appearance: none; +} + +/*header*/ +.cart-button{display:block;float: right;padding:0;position:relative;margin:14px 10px 10px;clear:left} +.cart-button a, +.cart-button a .cart_image{display:block;float: left;margin: 0;padding:0;width:24px; height:21px;border:0;text-decoration:none;} +.cart-button a .cart_image:before{font-family:FontAwesome; content:"\f07a";font-size:26px; position:absolute;top:-5px;} +.num_of_product_cart{ + display:block; + float:left; + position:absolute; + top:-11px; + right:-4px; + text-align:center; + padding:0; + margin:0; + width:20px; + height:20px; + text-decoration:none; + color:#333333; + font-size:10px; + font-weight:bold; + background: #FFF; + border: 1px solid #F15A23; + -webkit-border-radius: 20px; + -moz-border-radius: 20px; + border-radius: 20px; + padding: 0; + line-height: 20px; +} +.ie7 .num_of_product_cart, .ie8 .num_of_product_cart{ + padding:0; + background:url(images/num_items_cart_bg.png) no-repeat transparent 0 0 ; + background-size:20px 20px; + border:0px +} +body input#s{padding-left: 12px} +body.post-type-archive input#s{padding-left: 12px;max-width:234px} + + +/*---SHOP PAGE---*/ +.page-description{float:left; width:100%;} +.woocommerce .products div.star-rating, +.woocommerce-page .products div.star-rating{margin-left:15px; height:1.05em;} +.woocommerce .star-rating, .woocommerce-page .star-rating {height:1.05em;} + +/*pagenavi*/ +.nav-links.shop .pages-links .page-numbers, +.nav-links.shop .nav-next a, +.nav-links.shop .nav-previous a{ + display:inline-block; + background: #333; + border: 0 !important; + -webkit-border-radius: 0 !important; + -moz-border-radius: 0 !important; + border-radius: 0 !important; + color: #FFF !important; + box-shadow: none !important; + text-shadow: none !important; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + -khtml-transition: all 0.3s ease-in-out; + -o-transition: all 0.3s ease-in-out; + -ms-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + filter: none; + width: auto; + text-decoration:none; +} +.nav-links.shop .pages-links .page-numbers:hover, +.nav-links.shop .nav-next a:hover, +.nav-links.shop .nav-previous a:hover, +.nav-links.shop .pages-links .page-numbers.current{background:#F15A23;text-decoration:none !important;} +.nav-links.shop .pages-links .page-numbers.next, +.nav-links.shop .pages-links .page-numbers.prev{display:none} +#page .container .woo-loop-content.alpha.omega{width:100%;} + + /*secondary*/ +body.woocommerce #page div.container .sixteen .five #secondary.widget-area{margin-top:10px;} +body.woocommerce #page .container #secondary.widget-area{width:100%;padding:0;} +.woocommerce #secondary .widget_shopping_cart .total, .woocommerce-page #secondary .widget_shopping_cart .total {border-top: none;} + +.woocommerce #page .container #secondary .widget{margin-bottom:30px} +.woocommerce #page .container #secondary .widget ul{margin:0} +.woocommerce #page aside.widget_price_filter .ui-slider .ui-slider-range, +.woocommerce #page aside.widget_price_filter .ui-slider .ui-slider-range {background:#333333; } + +.woocommerce #page .woocommerce .widget_layered_nav_filters ul li a, +.woocommerce-page #page .widget_layered_nav_filters ul li a{ +margin:5px;border:1px solid #cccccc;background:#cccccc url(images/cross_white.png) no-repeat 6px center; +box-shadow: 0 0px 3px 0 rgba(0,0,0,0.3); +-webkit-box-shadow: 0 0px 3px 0 rgba(0,0,0,0.3); +-moz-box-shadow: 0 0px 3px 0 rgba(0,0,0,0.3);} +.woocommerce #page .woocommerce .widget_layered_nav_filters ul li a:hover, +.woocommerce-page #page .widget_layered_nav_filters ul li a:hover{ +margin:5px;border:1px solid #cccccc;background:#cccccc url(images/cross_white.png) no-repeat 6px center; +box-shadow: none; +-webkit-box-shadow: none; +-moz-box-shadow:none;} + +.woocommerce #page aside.widget_price_filter .ui-slider .ui-slider-handle, +.woocommerce-page #page aside.widget_price_filter .ui-slider .ui-slider-handle{ + display: block; + position: absolute; + top: -7px; + width: 21px; + height: 21px; + border: 0; + -webkit-border-radius: 10.5px; + -moz-border-radius: 10.5px; + border-radius: 10.5px; + box-shadow:none; + -moz-box-shadow:none; + -webkit-box-shadow:none; + cursor: pointer; + background: url(images/handle_button.png) no-repeat; + outline: 0; + z-index: 2; +} + +.woocommerce #page aside.widget_price_filter .price_slider_wrapper .ui-widget-content, +.woocommerce-page #page aside.widget_price_filter .price_slider_wrapper .ui-widget-content{ + background: #cccccc; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.woocommerce ul.products li.first, +.woocommerce-page ul.products li.first {clear:none; float: left;} + +.woocommerce ul.products li.product, +.woocommerce-page ul.products li.product {display: inline-table;float: none;position: relative;padding:0;margin-top:0;margin-bottom:2em} +.woocommerce #page.site .container #secondary .widget ul li.cat-item, +.woocommerce-page #page.site .container #secondary .widget ul li.cat-item:hover{ background:none;width: 100%;padding: 0; border-bottom:1px solid #cccccc; padding:0;margin:0} +.woocommerce #page.site .container #secondary .widget ul li.cat-item .children, +.woocommerce-page #page.site .container #secondary .widget ul li.cat-item .children {margin:0;padding: 0 0 0 10px;width:calc(100% - 10px)} +.woocommerce #page.site .container #secondary .widget ul li.cat-item .children li.cat-item, +.woocommerce-page #page.site .container #secondary .widget ul li.cat-item .children li.cat-item:hover{width:100%; border-top:1px solid #cccccc;border-bottom:none; padding:0;margin:0} +.woocommerce #page.site .container #secondary .widget ul li.cat-item a, +.woocommerce-page #page.site .container #secondary .widget ul li.cat-item:hover a{padding-right: 0px;line-height:30px; font-size:14px;background:none} +.woocommerce #page.site .container #secondary .widget ul li.cat-item *, +.woocommerce-page #page.site .container #secondary .widget ul li.cat-item:hover *{line-height:30px} + +body.woocommerce #page aside.widget_price_filter .price_slider_wrapper .ui-widget-content, +body.woocommerce-page #page aside.widget_price_filter .price_slider_wrapper .ui-widget-content{margin:15px 10px;} + +.woocomerce #page .price_slider_amount, +.woocomerce-page #page .price_slider_amount{position:relative;} + +body.woocommerce #page aside.widget_price_filter .price_slider_amount .button, +body.woocommerce-page #page aside.widget_price_filter .price_slider_amount .button{ + width:32px; + height:30px; + position:absolute; + right:0; + top:35px; + background: url(images/product_button_set.png) no-repeat transparent; + box-shadow:none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + font-size:0; + border:0; + filter:none +} +.woocommerce #page .price_label, +.woocommerce-page #page .price_label{font-size:0} +.woocommerce #page .price_label .from, +.woocommerce-page #page .price_label .from{font-size:12px; float:left} +.woocommerce #page .price_label .to, +.woocommerce-page #page .price_label .to{font-size:12px; float:right} +body.woocommerce #page aside.widget_price_filter .price_slider_amount, +body.woocommerce-page #page aside.widget_price_filter .price_slider_amount{min-height:65px;position:relative;} + + /*content*/ +body.woocommerce .woocommerce-ordering select, +body.woocommerce-page .woocommerce-ordering select, +.woocommerce form .form-row select#calc_shipping_country, .woocommerce-page form .form-row select#calc_shipping_country, +.woocommerce select#billing_country, .woocommerce-page select#billing_country, +.woocommerce select#shipping_country, .woocommerce-page select#shipping_country +{ height:35px; + width:260px; + padding:0 0 0 12px; + -webkit-appearance: none; + -moz-appearance:none; + appearance:none; + text-indent:0,01px; + text-overflow: ''; + border:1px solid #e5e5e5; + color:#999999; + background: url(images/shop_select_bg.png) center right no-repeat transparent; + background-image:none\0;/*Only works in IE9*/ + outline:none; +} + +.woocommerce form .form-row select#calc_shipping_country, .woocommerce-page form .form-row select#calc_shipping_country{width:100%;} +.woocommerce select#billing_country, .woocommerce-page select#billing_country{width:100%} +.woocommerce select#shipping_country, .woocommerce-page select#shipping_country{width:100%} + +body.woocommerce .woocommerce-ordering select option, +body.woocommerce-page .woocommerce-ordering select option{padding-right:12px} + +@-moz-document url-prefix() { + body.woocommerce .woocommerce-ordering select, + body.woocommerce-page .woocommerce-ordering select, + .woocommerce form .form-row select#calc_shipping_country, .woocommerce-page form .form-row select#calc_shipping_country, + .woocommerce select#billing_country, .woocommerce-page select#billing_country, + .woocommerce select#shipping_country, .woocommerce-page select#shipping_country, + .woocommerce-checkout #shipping_method, + body.woocommerce div.product form.cart .variations select, + body.woocommerce-page div.product form.cart .variations select, + body.woocommerce #content div.product form.cart .variations select, + body.woocommerce-page #content div.product form.cart .variations select, + .woocommerce-cart .woocommerce .cart-collaterals .cart_totals table select, + .woocommerce-cart.woocommerce-page .cart-collaterals .cart_totals table select, + .woocommerce-checkout #shipping_method + { text-indent:1px; + text-overflow: ''; + padding: 6px 0 6px 12px; + } + .variations{border:0;} +} + + +body.woocommerce .woocommerce-breadcrumb, +body.woocommerce-page .woocommerce-breadcrumb, +body.woocommerce .woocommerce-breadcrumb, +body.woocommerce-page .woocommerce-breadcrumb a {text-decoration:none} + +body.archive.woocommerce-page h1.page-title, +body.woocommerce .woocommerce-result-count, +body.woocommerce-page .woocommerce-result-count{display:none !important} + +.woocommerce .woocommerce-breadcrumb, +.woocommerce-page .woocommerce-breadcrumb{float:none; width:100%; margin-bottom:40px;} + +body.single.woocommerce .woocommerce-breadcrumb, +body.single.woocommerce-page .woocommerce-breadcrumb{margin-bottom:40px;} +.archive.woocommerce .woocommerce-breadcrumb, +.archive.woocommerce-page .woocommerce-breadcrumb{float:left; width:auto;max-width:423px; margin-bottom:0px;line-height:35px;} +.archive.woocommerce.post-type-archive-product .woocommerce-breadcrumb, +.archive.woocommerce-page.post-type-archive-product .woocommerce-breadcrumb{float:left; width:100%;max-width:423px; margin-bottom:0px;line-height:35px;} +.archive.woocommerce.tax-product_cat .woocommerce-breadcrumb, +.archive.woocommerce-page.tax-product_cat .woocommerce-breadcrumb{float:left; width:100%;max-width:423px; margin-bottom:0px;line-height:35px;} +.archive.woocommerce .woocommerce-breadcrumb a, +.archive.woocommerce-page .woocommerce-breadcrumb a{line-height:35px;} + +.woocommerce ul.products li.product:hover, +.woocommerce-page ul.products li.product:hover { +box-shadow: 0 0px 5px 0 rgba(0,0,0,0.3); +-webkit-box-shadow: 0 0px 5px 0 rgba(0,0,0,0.3); +-moz-box-shadow: 0 0px 5px 0 rgba(0,0,0,0.3);} + +.woocommerce ul.products li.product a img, +body.woocommerce-page ul.products li.product a img, +.woocommerce ul.products li.product a:hover img, +body.woocommerce-page ul.products li.product a:hover img {box-shadow: none ; -webkit-box-shadow: none; -moz-box-shadow: none; border-bottom: 1px solid #cccccc;} + +body.woocommerce .upsells.products li span.price, +body.woocommerce-page .upsells.products li span.price, +body.woocommerce #content .upsells.products li span.price, +body.woocommerce-page #content .upsells.products li span.price, +.woocommerce ul.products li.product .price, +body.woocommerce-page ul.products li.product .price{float:left;margin: 5px 0 10px 15px} + +.woocommerce ul.products li.product a.button.add_to_cart_button, +.woocommerce ul.products li.product a.button.product_type_simple, +.woocommerce ul.products li.product a.button.product_type_variable { + position:absolute; + float:right; + bottom:0; + right:0; + display:block; + visibility:hidden; + margin: 0 5px 5px 0; + width:32px; + height:30px; + border:0; + padding:0; + font-size:0; + -webkit-transition: width 0.3s ease-in-out !important; + -moz-transition: width 0.3s ease-in-out !important; + -khtml-transition: width 0.3s ease-in-out !important; + -o-transition: width 0.3s ease-in-out !important; + -ms-transition: width 0.3s ease-in-out !important; + transition: width 0.3s ease-in-out !important; +} + + +.woocommerce ul.products li.product a.button.add_to_cart_button.loading, +.woocommerce ul.products li.product a.button.product_type_simple.loading, +.woocommerce ul.products li.product a.button.product_type_variable.loading { + padding: 0 25px 0 0; +} + +.woocommerce ul.products li.product a.button.add_to_cart_button.added, +.woocommerce ul.products li.product a.button.product_type_simple.added{width:55px;} + +.woocommerce ul.products li.product:hover a.button.add_to_cart_button, +.woocommerce ul.products li.product:hover a.button.add_to_cart_button:active, +.woocommerce ul.products li.product:hover a.button.product_type_variable, +.woocommerce ul.products li.product:hover a.button.product_type_variable:active {display:block;visibility:visible; bottom:0; top: auto} + +.woocommerce ul.products li.product a.product_type_simple {background:none ;} +.woocommerce ul.products li.product a.product_type_variable {background: url(images/product_button_set.png) no-repeat transparent;} + +.woocommerce ul.products li.product a.add_to_cart_button.product_type_simple { + background: url(images/product_button_buy.png) no-repeat #333333 !important; + -webkit-transition: none; + -moz-transition: none; + -khtml-transition: none; + -o-transition: none; + -ms-transition: none; + transition: none; + +} +.woocommerce ul.products li.product a.add_to_cart_button.product_type_simple.added:before{content:initial !important} +.woocommerce ul.products li.product a.add_to_cart_button.product_type_simple.added:after{ + content:''; + width:20px !important; + height:20px; + background: url(images/accept_arrow_20x20.png) no-repeat transparent; + display: inline-block; + font-size:14px; + margin:0; + position: relative; + float: left; + top: 5px; + left: 30px; +} + +.woocommerce a.added_to_cart, +body.woocommerce-page a.added_to_cart{ + position:relative; + padding-top:0 !important; + color:#333333; + bottom: 0; + left: 0; + margin: 0; + padding: 0; + border: 0; + display: block; + height: 20px; + line-height: 20px; + font-size: 12px; + content: ""; + float: left; + width: 60%; + text-align: left; + top: auto; + padding: 0 0 10px 15px; +} +.woocommerce a.added_to_cart:hover, .woocommerce-page a.added_to_cart:hover{color:#ea3c00} + +.woocommerce ul.products li.product h3, +body.woocommerce-page ul.products li.product h3{padding:8px 15px} + +/*pagenavi*/ +.nav-links{width:100%; text-align:center} +.nav-links.shop .pages-links{margin:0;display:inline-block;} +.nav-links.shop .pages-links a, +.nav-links.shop .pages-links span{padding: 0 4px;display:inline-block} +.woocommerce .nav-next, +.woocommerce .nav-previous{display:inline-block; margin: 0 10px} +.nav-links.shop .nav-next a, +.nav-links.shop .nav-previous a, +.nav-links.shop .pages-links a, +.nav-links.shop .current{color:#999999; text-decoration:none; font-size:14px} + +.nav-links.shop .nav-next a:hover, +.nav-links.shop .nav-previous a:hover, +.nav-links.shop .pages-links a:hover, +.nav-links.shop .current{color:#333333; text-decoration:underline} + +body.woocommerce nav.woocommerce-pagination ul, +body.woocommerce-page nav.woocommerce-pagination ul, +body.woocommerce #content nav.woocommerce-pagination ul, +body.woocommerce-page #content nav.woocommerce-pagination ul, +body.woocommerce nav.woocommerce-pagination ul li, +body.woocommerce-page nav.woocommerce-pagination ul li, +body.woocommerce #content nav.woocommerce-pagination ul li, +body.woocommerce-page #content nav.woocommerce-pagination ul li{border:0} + +body.woocommerce nav.woocommerce-pagination ul li a, +body.woocommerce-page nav.woocommerce-pagination ul li a, +body.woocommerce #content nav.woocommerce-pagination ul li a, +body.woocommerce-page #content nav.woocommerce-pagination ul li a, +body.woocommerce nav.woocommerce-pagination ul li span, +body.woocommerce-page nav.woocommerce-pagination ul li span, +body.woocommerce #content nav.woocommerce-pagination ul li span, +body.woocommerce-page #content nav.woocommerce-pagination ul li span{color:#999999} + +body.woocommerce nav.woocommerce-pagination ul li span.current, +body.woocommerce-page nav.woocommerce-pagination ul li span.current, +body.woocommerce #content nav.woocommerce-pagination ul li span.current, +body.woocommerce-page #content nav.woocommerce-pagination ul li span.current, +body.woocommerce nav.woocommerce-pagination ul li a:hover, +body.woocommerce-page nav.woocommerce-pagination ul li a:hover, +body.woocommerce #content nav.woocommerce-pagination ul li a:hover, +body.woocommerce-page #content nav.woocommerce-pagination ul li a:hover, +body.woocommerce nav.woocommerce-pagination ul li a:focus, +body.woocommerce-page nav.woocommerce-pagination ul li a:focus, +body.woocommerce #content nav.woocommerce-pagination ul li a:focus, +body.woocommerce-page #content nav.woocommerce-pagination ul li a:focus{background:none;color:#333333; text-decoration:underline} + +body.woocommerce nav.woocommerce-pagination ul li a.prev:hover, +body.woocommerce nav.woocommerce-pagination ul li a.next:hover, +body.woocommerce-page nav.woocommerce-pagination ul li a.prev:hover, +body.woocommerce-page nav.woocommerce-pagination ul li a.next:hover, +body.woocommerce #content nav.woocommerce-pagination ul li a.prev:hover, +body.woocommerce #content nav.woocommerce-pagination ul li a.next:hover, +body.woocommerce-page #content nav.woocommerce-pagination ul li a.prev:hover, +body.woocommerce-page #content nav.woocommerce-pagination ul li a.next:hover{text-decoration:none} + +.woocommerce a.button.added:before, +.woocommerce-page a.button.added:before, +.woocommerce button.button.added:before, +.woocommerce-page button.button.added:before, +.woocommerce input.button.added:before, +.woocommerce-page input.button.added:before, +.woocommerce #respond input#submit.added:before, +.woocommerce-page #respond input#submit.added:before, +.woocommerce #content input.button.added:before, +.woocommerce-page #content input.button.added:before{top: 9px !important; right: 7px !important;} + + +/*---SINGLE PRODUCT PAGE---*/ +.pp_pic_holder.pp_woocommerce>div.ppt{display:none !important} + +.single-product [itemprop='aggregateRating']{display:none} +.single-product [itemprop='description']{margin-bottom:2em} +.single-product.woocommerce div.product, +.single-product.woocommerce-page div.product, +.single-product.woocommerce #content div.product, +.single-product.woocommerce-page #content div.product{float:left;width:100%;} + +.single .woocommerce-message, +.single .woocommerce-error, +.single .woocommerce-info, +.woocommerce .woocommerce-info, +.woocommerce-page .woocommerce-info, +.woocommerce .woocommerce-message{display:block;padding:16px 16px 16px 50px;} + +@-moz-document url-prefix() { +.single .woocommerce-message+form, +.single .woocommerce-error+form, +.single .woocommerce-info+form, +.woocommerce .woocommerce-info+form, +.woocommerce-page .woocommerce-info+form, +.woocommerce .woocommerce-message+form{clear:both} +} + +.single-product #commentform label{width:120px;float:left} +.single-product #commentform .stars{float:left} +.single-product.woocommerce #review_form #respond .comment-form-comment, +.single-product.woocommerce-page #review_form #respond .comment-form-comment{width: 100%;float: left;margin: 20px 0;} +.single-product.woocommerce #review_form #respond .comment-form-comment label[for="comment"], +.single-product.woocommerce-page #review_form #respond .comment-form-comment label[for="comment"]{display:none} +.woocommerce p.stars a.star-1, +.woocommerce p.stars a.star-2, +.woocommerce p.stars a.star-3, +.woocommerce p.stars a.star-4, +.woocommerce p.stars a.star-5, +.woocommerce-page p.stars a.star-1, +.woocommerce-page p.stars a.star-2, +.woocommerce-page p.stars a.star-3, +.woocommerce-page p.stars a.star-4, +.woocommerce-page p.stars a.star-5{border:0 !important} + +.single-product .woocommerce-message, +.woocommerce .woocommerce-info,.woocommerce-page .woocommerce-info, +.woocommerce-cart .woocommerce-message, +.woocommerce .woocommerce-info, body.woocommerce-page .woocommerce-info, +.woocommerce .woocommerce-message, +.woocommerce ul.woocommerce-error, .woocommerce-page ul.woocommerce-error, +.woocommerce form.checkout_coupon, .woocommerce-page form.checkout_coupon{ + background: -webkit-linear-gradient(transparent,transparent); + background: -moz-linear-gradient(transparent,transparent); + background-color: initial; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + box-shadow: none !important; + box-shadow: 0 0px 2px 0 rgba(0,0,0,0.3) !important; + -webkit-box-shadow: 0 0px 2px 0 rgba(0,0,0,0.3) !important; + -moz-box-shadow: 0 0px 2px 0 rgba(0,0,0,0.3) !important; +} + +.post-type-archive-product .woocommerce-info, +.post-type-archive-product .woocommerce-error, +.post-type-archive-product .woocommerce-message{float: left;width:auto;width:calc(100% - 63px); max-width: 877px;} +.tax-product_cat .woocommerce-info, +.tax-product_cat .woocommerce-error, +.tax-product_cat .woocommerce-message{float: left;width:auto;width:calc(100% - 63px); max-width: 877px;} +.tax-product_cat .eleven.columns .woocommerce-info, +.tax-product_cat .eleven.columns .woocommerce-error, +.tax-product_cat .eleven.columns .woocommerce-message{float: left;width:auto;width:calc(100% - 63px); max-width: 577px;} + + +body.woocommerce div.product form.cart .variations td.label, +body.woocommerce-page div.product form.cart .variations td.label, +body.woocommerce #content div.product form.cart .variations td.label, +body.woocommerce-page #content div.product form.cart .variations td.label{padding-top:15px;width:100%;padding-left:0;padding-right:0;float:left;color: #333333;} + +body.woocommerce div.product form.cart, +body.woocommerce #content div.product form.cart, +body.woocommerce-page div.product form.cart, +body.woocommerce-page #content div.product form.cart{margin:0 0 2em 0;} +body.woocommerce div.product form.cart .variations td.value, +body.woocommerce-page div.product form.cart .variations td.value, +body.woocommerce #content div.product form.cart .variations td.value, +body.woocommerce-page #content div.product form.cart .variations td.value{width:100%;padding-left:0;padding-right:0;float:left} +body.woocommerce div.product form.cart .single_variation, +body.woocommerce-page div.product form.cart .single_variation{float:left;width:100%;margin:0 0 15px 0} +body.woocommerce div.product form.cart .variations_button, +body.woocommerce-page div.product form.cart .variations_button{float:left;width:100%;margin:0 0 15px 0} +body.woocommerce div.product .product_meta, +body.woocommerce-page div.product .product_meta{padding:0 0 2em 0} + +body.woocommerce-page #content input.button.alt, +body.woocommerce-page #content input.button, +.single-product .woocommerce-message .button, +.single-product .woocommerce-error .button, +.single-product .woocommerce-info .button, +.single-product form.cart .button, +.single-product.woocommerce button.button.alt, +.single-product.woocommerce-page button.button.alt, +.woocommerce .add_review a.button, .woocommerce-page .add_review a.button, +.woocommerce-cart .woocommerce a.button, .woocommerce-cart .woocommerce-page a.button, +body.woocommerce #respond input#submit, body.woocommerce-page #respond input#submit, +.woocommerce-cart .woocommerce input.button, .woocommerce-cart .woocommerce-page input.button, +.woocommerce-checkout .woocommerce #payment #place_order, .woocommerce-checkout.woocommerce-page #payment #place_order, +.woocommerce-account .woocommerce .form-row input.button, .woocommerce-account.woocommerce-page .form-row input.button, +.woocommerce-account .button[type='submit'], .woocommerce-account.woocommerce-page .button[type='submit'], +body.woocommerce-page .woocommerce .cart-collaterals button.button, +.woocommerce table.my_account_orders .order-actions .button, body.woocommerce-page table.my_account_orders .order-actions .button, +.widget_shopping_cart_content .buttons a.button{ + padding: 10px 18px !important; + background: #333333; + border: 0 !important; + -webkit-border-radius: 0 !important; + -moz-border-radius: 0 !important; + border-radius: 0 !important; + color: white !important; + box-shadow: none !important; + text-shadow:none !important; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + -khtml-transition: all 0.3s ease-in-out; + -o-transition: all 0.3s ease-in-out; + -ms-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + filter:none; + width:auto ; +} + +@-moz-document url-prefix() { + body.woocommerce #respond input#submit[type="submit"], + body.woocommerce-account #content input.button[type="submit"], + body.woocommerce-checkout .woocommerce #payment #place_order{ + padding: 7px 18px !important; + } +} + + +.woocommerce-cart.woocommerce-page #content table td.actions .button:hover, +.woocommerce-account.woocommerce-page #content .woocommerce form input[type='submit']:hover, +body.woocommerce-checkout #content input.button:hover, +.single .woocommerce-message .button:hover, +.single .woocommerce-error .button:hover, +.single .woocommerce-info .button:hover, +.single-product form.cart .button:hover, +.single-product div form.cart button.button.alt:hover, +.single-product.woocommerce button.button.alt:hover, +.single-product.woocommerce-page button.button.alt:hover, +.woocommerce .add_review a.button:hover, .woocommerce-page .add_review a.button:hover, +body.woocommerce-cart .woocommerce a.button:hover, .woocommerce-cart .woocommerce-page a.button:hover, +body.woocommerce #respond input#submit:hover, body.woocommerce-page #respond input#submit:hover, +body.woocommerce-cart .woocommerce input.button:hover, .woocommerce-cart .woocommerce-page input.button:hover, +body.woocommerce-checkout .woocommerce #payment #place_order:hover, .woocommerce-checkout.woocommerce-page #payment #place_order:hover, +body.woocommerce-account .woocommerce .form-row input.button:hover, .woocommerce-account.woocommerce-page .form-row input.button:hover, +body.woocommerce-account .button[type='submit']:hover, .woocommerce-account.woocommerce-page .button[type='submit']:hover, +body.woocommerce-page .woocommerce .cart-collaterals button.button:hover, +.woocommerce table.my_account_orders .order-actions .button:hover, body.woocommerce-page table.my_account_orders .order-actions .button:hover, +.widget_shopping_cart_content .buttons a.button:hover{ + color:white; + background: none repeat scroll 0 0 #F15A23; +} + +.single-product form.cart .button, +.single-product.woocommerce button.button.alt, +.single-product.woocommerce-page button.button.alt{margin:0} + +.widget_shopping_cart_content .buttons a.button{margin:5px 5px 5px 0;float:left} + +.woocommerce-cart .woocommerce a.button, .woocommerce-cart .woocommerce-page a.button, +.woocommerce .add_review a.button, .woocommerce-page .add_review a.button{margin:0;} + +.woocommerce table.my_account_orders .order-actions .button, body.woocommerce-page table.my_account_orders .order-actions .button{ + margin: 0 auto; + display: block; + text-align: center; + width: 50%; +} + +.woocommerce div.product form.cart .variations td, +.woocommerce-page div.product form.cart .variations td, +.woocommerce #content div.product form.cart .variations td, +.woocommerce-page #content div.product form.cart .variations td{border:0;} +.woocommerce div.product form.cart .variations select, +.woocommerce-page div.product form.cart .variations select, +.woocommerce #content div.product form.cart .variations select, +.woocommerce-page #content div.product form.cart .variations select{width:auto !important;max-width:490px} + +.woocommerce table.shop_table, .woocommerce-page table.shop_table{position:initial !important} + +body.woocommerce div.product form.cart .variations select, +body.woocommerce-page div.product form.cart .variations select, +body.woocommerce #content div.product form.cart .variations select, +body.woocommerce-page #content div.product form.cart .variations select{ + float:left; + height:35px; + min-width:200px !important; + max-width:400px; + padding:0 35px 0 15px; + -webkit-appearance: none; + -moz-appearance:none; + appearance:none; + text-indent:0,01px; + text-overflow: ''; + border:1px solid #e5e5e5; + color:#999999; + background: url(images/shop_select_bg.png) center right no-repeat transparent; + outline:none; + overflow:hidden; +} + +@-moz-document url-prefix() { +body.woocommerce div.product form.cart .variations select, body.woocommerce-page div.product form.cart .variations select, body.woocommerce #content div.product form.cart .variations select, body.woocommerce-page #content div.product form.cart .variations select{ + background:none !important; +} +} + +.single-product .reset_variations{padding-top: 6px;margin-left: 16px;display: block;float: left;} +.woocommerce #review_form #respond p.form-submit, .woocommerce-page #review_form #respond p.form-submit{float:left} + +body.woocommerce-page .woocommerce-breadcrumb{position:relative;/* z-index:99 */} +body.woocommerce-page .woocommerce-breadcrumb a:hover{color:#ea3c00} +body.woocommerce div.product span.price, +body.woocommerce-page div.product span.price, +body.woocommerce #content div.product span.price, +body.woocommerce-page #content div.product span.price, +body.woocommerce div.product p.price, +body.woocommerce-page div.product p.price, +body.woocommerce #content div.product p.price, +body.woocommerce-page #content div.product p.price{color:#ea3c00 ; margin: 18px 0 } + +body.woocommerce div.product div.images img, +body.woocommerce-page div.product div.images img, +body.woocommerce #content div.product div.images img, +body.woocommerce-page #content div.product div.images img{ + box-shadow: 0 0px 3px 0 rgba(0,0,0,0.3); + -webkit-box-shadow: 0 0px 3px 0 rgba(0,0,0,0.3); + -moz-box-shadow: 0 0px 3px 0 rgba(0,0,0,0.3); +} + +body.woocommerce div.product div.images .thumbnails img, +body.woocommerce-page div.product div.images .thumbnails img, +body.woocommerce #content div.product div.images .thumbnails img, +body.woocommerce-page #content div.product div.images .thumbnails img{margin-bottom:12px} + +body.woocommerce div.product form.cart .quantity .qty, +body.woocommerce-page div.product form.cart .quantity .qty, +body.woocommerce #content div.product form.cart .quantity .qty, +body.woocommerce-page #content div.product form.cart .quantity .qty, +.woocommerce-page.woocommerce-cart #content .product-quantity .quantity .qty{border:1px solid #e5e5e5; text-align:center; padding:8px 0;} + + +.single-product.woocommerce #reviews #comments h2, +.single-product.woocommerce-page #reviews #comments h2{display:none} + +/*related products*/ +.single-product .related.products, +.single-product .upsells.products{float:left;width:100%} + +body.single-product .upsells.products h2{float:left;width:100%;margin: 25px 0;} +body.single-product .related.products h2{float:left;width:100%;margin:25px 0;border-bottom: 2px solid #F15A23;padding: 0 0 10px 0;font-size:17px} +.woocommerce .related ul.products li.product, +.woocommerce-page .related ul.products li.product, +.woocommerce .upsells.products ul.products li.product, +.woocommerce-page .upsells.products ul.products li.product, +.woocommerce .related ul li.product, +.woocommerce-page .related ul li.product, +.woocommerce .upsells.products ul li.product, +.woocommerce-page .upsells.products ul li.product{width: 21.75%;margin-left: 3.8%;margin-right: 0;} + +body.woocommerce div.product .related.products span.price, +body.woocommerce-page div.product .related.products span.price, +body.woocommerce #content div.product .related.products span.price, +body.woocommerce-page #content div.product .related.products span.price{margin-left:15px !important} + +body.woocommerce div.product form.cart .button:hover, +body.woocommerce-page div.product form.cart .button:hover, +body.woocommerce #content div.product form.cart .button:hover, +body.woocommerce-page #content div.product form.cart .button:hover{color:#ea3c00} + + +body.woocommerce div.product div.summary, +body.woocommerce-page div.product div.summary, +body.woocommerce #content div.product div.summary, +body.woocommerce-page #content div.product div.summary{float:right; width:100%; margin:0 } + +body.woocommerce div.product .woocommerce-tabs, +body.woocommerce-page div.product .woocommerce-tabs, +body.woocommerce #content div.product .woocommerce-tabs, +body.woocommerce-page #content div.product .woocommerce-tabs{ + float:right; + width:100%; + clear:none; + margin:0; + padding:0; + box-shadow: 0 0px 3px 0 rgba(0,0,0,0.3); + -webkit-box-shadow: 0 0px 3px 0 rgba(0,0,0,0.3); + -moz-box-shadow: 0 0px 3px 0 rgba(0,0,0,0.3); +} + +body.woocommerce div.product .woocommerce-tabs ul.tabs, +body.woocommerce-page div.product .woocommerce-tabs ul.tabs, +body.woocommerce #content div.product .woocommerce-tabs ul.tabs, +body.woocommerce-page #content div.product .woocommerce-tabs ul.tabs{padding:0} + +body.woocommerce div.product .woocommerce-tabs .panel, +body.woocommerce-page div.product .woocommerce-tabs .panel, +body.woocommerce #content div.product .woocommerce-tabs .panel, +body.woocommerce-page #content div.product .woocommerce-tabs .panel{margin:15px;padding:0} + +.woocommerce div.product .woocommerce-tabs .panel, +.woocommerce-page div.product .woocommerce-tabs .panel, +.woocommerce #content div.product .woocommerce-tabs .panel, +.woocommerce-page #content div.product .woocommerce-tabs .panel{min-height:95px} + +body.woocommerce div.product .woocommerce-tabs ul.tabs li, +body.woocommerce-page div.product .woocommerce-tabs ul.tabs li, +body.woocommerce #content div.product .woocommerce-tabs ul.tabs li, +body.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li{ + background:none; + content:initial !important; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + border-top:0; + margin:-2px; + padding:15px 30px; +} + +.woocommerce div.product .woocommerce-tabs ul.tabs li a, +body.woocommerce-page div.product .woocommerce-tabs ul.tabs li a, + .woocommerce #content div.product .woocommerce-tabs ul.tabs li a, +body.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li a{padding:0;color:#333333;font-size:12px;} + +body.woocommerce div.product .woocommerce-tabs ul.tabs li:after, +body.woocommerce-page div.product .woocommerce-tabs ul.tabs li:after, +body.woocommerce #content div.product .woocommerce-tabs ul.tabs li:after, +body.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li:after, +body.woocommerce div.product .woocommerce-tabs ul.tabs li:before, +body.woocommerce-page div.product .woocommerce-tabs ul.tabs li:before, +body.woocommerce #content div.product .woocommerce-tabs ul.tabs li:before, +body.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li:before{display:none;content:initial !important} + + +.woocommerce #content div.product .woocommerce-tabs ul.tabs li, .woocommerce div.product .woocommerce-tabs ul.tabs li, .woocommerce-page #content div.product .woocommerce-tabs ul.tabs li, .woocommerce-page div.product .woocommerce-tabs ul.tabs li { + box-shadow: 0 3px 3px rgba(0, 0, 0, 0.2),inset 0 1px 0 rgba(255, 255, 255, 0.6); +} + +.woocommerce #content div.product .woocommerce-tabs ul.tabs li.active, .woocommerce div.product .woocommerce-tabs ul.tabs li.active, .woocommerce-page #content div.product .woocommerce-tabs ul.tabs li.active, .woocommerce-page div.product .woocommerce-tabs ul.tabs li.active { + background: #FFF; + z-index: 2; + border-bottom-color: #FFF; +} + +.woocommerce div.product form.cart .variations, +.woocommerce-page div.product form.cart .variations, +.woocommerce #content div.product form.cart .variations, +.woocommerce-page #content div.product form.cart .variations{border:0 !important} + +/*onsale*/ +.single.woocommerce span.onsale, .single.woocommerce-page span.onsale, +.archive.woocommerce span.onsale,.archive.woocommerce-page span.onsale, +.woocommerce ul.products li.product .onsale, body.woocommerce-page ul.products li.product .onsale{ + width:63px; + height:63px; + line-height:63px; + background:url(../images/action.png) no-repeat transparent !important; + text-indent:-1000px !important; + font-size:0px; + text-shadow:none; + box-shadow:none; + border-radius:0; + padding:0px; + margin:6px; +} + +.single.woocommerce .related span.onsale, .single.woocommerce-page .related span.onsale {top:50px; left:278px;} +.archive.woocommerce span.onsale, .archive.woocommerce-page span.onsale {top:64px; left:278px;} + +/*---CART PAGE---*/ +.woocommerce-cart .entry-header{display:none} +.woocommerce-cart .entry-content{margin:7px 0 0 0} +.woocommerce-cart.woocommerce table.cart a.remove, +body.woocommerce-cart.woocommerce-page table.cart a.remove, +body.woocommerce-cart.woocommerce-page .woocommerce table.cart a.remove, +.woocommerce-cart.woocommerce #content table.cart a.remove, +body.woocommerce-cart.woocommerce-page #content table.cart a.remove, +body.woocommerce-cart.woocommerce-page .woocommerce #content table.cart a.remove, +.woocommerce-cart.woocommerce table.cart a.remove:hover, +body.woocommerce-cart.woocommerce-page table.cart a.remove:hover, +body.woocommerce-cart.woocommerce-page .woocommerce table.cart a.remove:hover, +.woocommerce-cart.woocommerce #content table.cart a.remove:hover, +body.woocommerce-cart.woocommerce-page #content table.cart a.remove:hover, +body.woocommerce-cart.woocommerce-page .woocommerce#content table.cart a.remove:hover{ + font-size: 0 ; + color:white ; + height: 21px ; + width: 21px; + padding: 0; + margin: 0 auto; + background-size: 21px; + text-shadow:none; + background: url(images/cansel_sale.png) no-repeat 0 0 transparent; +} +/*table*/ +.woocommerce-cart .woocommerce table.shop_table, .woocommerce-cart .woocommerce-page table.shop_table, + .woocommerce-cart .woocommerce .cart-collaterals .cart_totals table, + .woocommerce-cart.woocommerce-page .cart-collaterals .cart_totals table{ + border:0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + box-shadow: 0 0px 2px 0 rgba(0,0,0,0.3); + -webkit-box-shadow: 0 0px 2px 0 rgba(0,0,0,0.3); + -moz-box-shadow: 0 0px 2px 0 rgba(0,0,0,0.3); +} +.woocommerce-cart table tbody tr:nth-child(even) td, +body.woocommerce-page table tbody tr:nth-child(even) td{background:initial;filter:none} +body.woocommerce-account table tbody tr:nth-child(even) td{color:initial} +.woocommerce-cart table thead th, .woocommerce-cart table th, +.woocommerce-account table thead th, .woocommerce-account table th{background:none;border-left:1px solid rgba(0,0,0,0.1);color:#333333;font-size:14px; text-align:center} +.woocommerce-account table thead th:first-child, .woocommerce-account table th:first-child{border-left:0} +.woocommerce-account table tfoot th{text-align:left} +.woocommerce-account table thead th, .woocommerce-account table th{padding:17px 0 } +.woocommerce-account table tbody tr *, .woocommerce-account table tbody tr *{color:#333333} +.woocommerce td.product-name dl.variation dd, .woocommerce-page td.product-name dl.variation dd,.woocommerce td.product-name dl.variation dd p, .woocommerce-page td.product-name dl.variation dd p{padding:0; margin:0} +.woocommerce-account table tbody tr td.product-total, .woocommerce-account table tbody tr td.product-total{text-align:center} +.woocommerce-account table tbody tr a:hover, .woocommerce-account table tbody tr a:hover{color:#ff5d2a} +.woocommerce-account table.my_account_orders tbody tr td:first-child , .woocommerce-account table.my_account_order tbody tr td:first-child {text-align:center} +.woocommerce-cart table thead th:first-child, .woocommerce-cart table th:first-child{border-left:0;} +.woocommerce-cart.woocommerce-page #content table thead th{padding:17px 10px;line-height:14px;} +.woocommerce-cart.woocommerce-page #content table thead th.product-remove{width:52px} +.woocommerce-cart.woocommerce-page #content table thead th.product-thumbnail{width:99px} +.woocommerce-cart.woocommerce-page #content table thead th.product-name{width:235px} +.woocommerce-cart.woocommerce-page #content table thead th.product-price{width:160px} +.woocommerce-cart.woocommerce-page #content table thead th.product-quantity{width:212px; } +.woocommerce-cart.woocommerce-page #content table thead th.product-subtotal{width:175px;} + +.woocommerce-cart.woocommerce-page #content table td.actions{padding:0} +.woocommerce-cart.woocommerce-page #content table td.actions [name='update_cart'], +.woocommerce-cart.woocommerce-page #content table td.actions [name='update_cart']:hover, +.woocommerce-cart.woocommerce-page #content table td.actions [name='update_cart']:active, +.woocommerce-cart.woocommerce-page #content table td.actions [name='proceed'], +.woocommerce-cart.woocommerce-page #content table td.actions [name='proceed']:hover, +.woocommerce-cart.woocommerce-page #content table td.actions [name='proceed']:active{top:auto ;position:relative; padding:0;margin:0;} + +.woocommerce-cart.woocommerce-page #content table.shop_table.cart tbody tr:last-child td{padding:5px;} +.woocommerce-cart.woocommerce-page #content table td.actions input.button, +.woocommerce-cart.woocommerce-page #content table td.actions input.button:hover{float:right;margin:5px 10px 5px 5px;} + +.woocommerce-cart.woocommerce-page #content table td{text-align:center;border-top:0px} +.woocommerce-cart.woocommerce-page #content table td.product-name{text-align:left;} +.woocommerce-cart.woocommerce-page #content table td a, +.woocommerce-cart.woocommerce-page #content table td span{text-decoration:none;color:#333333 } +.woocommerce-cart.woocommerce-page #content table td.product-name a:hover{text-decoration:none;color:#ff5d2a } +.woocommerce-cart.woocommerce-page #content table td.product-quantity .quantity {margin:0 auto} +.woocommerce-cart .woocommerce table.cart img, +.woocommerce-cart.woocommerce-page table.cart img, +.woocommerce-cart.woocommerce #content table.cart img, +.woocommerce-cart.woocommerce-page #content table.cart img{max-width:74px;width:auto} + +body.woocommerce-page #content table.cart td.actions .coupon label {float:left;display:block;padding:5px;margin:5px 0 5px 5px } +body.woocommerce-page #content table.cart td.actions .coupon #coupon_code {height:32px;margin:5px 4px 5px 0; width:100px; text-align:center; } + +.woocommerce-cart.woocommerce-page #content .cart_totals table td{vertical-align:middle} + +.woocommerce .cart-collaterals .cross-sells ul.products, +body.woocommerce-page .cart-collaterals .cross-sells ul.products{margin:0} + +.woocommerce-cart .woocommerce .cart-collaterals .cart_totals, +body.woocommerce-cart.woocommerce-page .cart-collaterals .cart_totals{float:left;width:100%;} + +.woocommerce-cart .woocommerce .cart-collaterals .shipping_calculator, +body.woocommerce-cart.woocommerce-page .cart-collaterals .shipping_calculator{float:left;width: 100%;display: block;text-align:left} + +.woocommerce-cart .woocommerce .cart-collaterals .shipping_calculator section, +body.woocommerce-cart.woocommerce-page .cart-collaterals .shipping_calculator section{width:100%} + +body.woocommerce-cart .woocommerce .cart-collaterals .shipping_calculator h2 , +body.woocommerce-cart.woocommerce-page .cart-collaterals .shipping_calculator h2 {width:100%;margin:20px 0} + +.woocommerce-cart .woocommerce .cart-collaterals .cart_totals h2, +.woocommerce-cart.woocommerce-page .cart-collaterals .cart_totals h2, +.woocommerce-cart .woocommerce .cart-collaterals .cross-sells h2, +.woocommerce-cart.woocommerce-page .cart-collaterals .cross-sells h2 {text-align:left; margin: 0 0 30px 0} +.woocommerce-cart .woocommerce .cart-collaterals .cart_totals table, +.woocommerce-cart.woocommerce-page .cart-collaterals .cart_totals table{width:100%;-webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0;border:0;margin:30px 0 20px} +.woocommerce-cart .woocommerce .cart-collaterals .cart_totals table th, +.woocommerce-cart.woocommerce-page .cart-collaterals .cart_totals table th{width:190px; border-bottom:1px solid rgba(0,0,0,0.1);padding:17px 0 16px} +.woocommerce-cart .woocommerce .cart-collaterals .cart_totals table td, +.woocommerce-cart.woocommerce-page .cart-collaterals .cart_totals table td{width:190px; border-bottom:1px solid rgba(0,0,0,0.1);} + +.woocommerce-cart .woocommerce .cart-collaterals .cart_totals table select, +.woocommerce-cart.woocommerce-page .cart-collaterals .cart_totals table select, +.woocommerce-checkout select#shipping_method{ + height: 35px; + width: 250px !important; + max-width: 250px; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + text-indent: 0,01px; + text-overflow: ''; + border: 1px solid #e5e5e5; + color: #999999; + background: url(images/shop_select_bg.png) center right no-repeat transparent; + outline: none; + padding: 5px 35px 5px 12px; +} + +.woocommerce-cart .woocommerce .cart-collaterals .cross-sells, +.woocommerce-cart.woocommerce-page .cart-collaterals .cross-sells{width:100%;} +.woocommerce-cart .woocommerce .cart-collaterals .cross-sells ul.products li.product a.button.add_to_cart_button, +.woocommerce-cart .woocommerce .cart-collaterals .cross-sells ul.products li.product a.button.product_type_simple, +.woocommerce-cart .woocommerce .cart-collaterals .cross-sells ul.products li.product a.button.product_type_variable { + padding:0 !important; +} + +.woocommerce .blockUI.blockOverlay { + position: relative!important; + display: none!important; +} + + +/*---CHEKOUT---*/ +.woocommerce-checkout #customer_details{display:block;float:left;width:100%;margin:0 ;} +.woocommerce-checkout #order_review_heading{float:none;width:100%;display:block;} +.woocommerce-checkout #order_review{display:block;float:right;width:100%;margin:0;} +.woocommerce-checkout #page .container .entry-header{border:0;} + +.woocommerce-checkout .woocommerce .col2-set .col-1, +.woocommerce-checkout .woocommerce-page .col2-set .col-1, +.woocommerce-checkout .woocommerce .col2-set .col-2, +.woocommerce-checkout .woocommerce-page .col2-set .col-2{width:100%;margin:0 0% 0 0;padding:0;} + +.woocommerce-checkout .woocommerce .col2-set.addresses .col-1, +.woocommerce-checkout .woocommerce-page .col2-set.addresses .col-1, +.woocommerce-checkout .woocommerce .col2-set.addresses .col-2, +.woocommerce-checkout .woocommerce-page .col2-set.addresses .col-2{width:48%;margin:0 0% 0 0;padding:0;} + +.woocommerce-checkout .woocommerce form .form-row textarea, +.woocommerce-checkout.woocommerce-page form .form-row textarea{ + height:200px; + box-shadow: 0 0px 1px 0 rgba(0,0,0,0.1); + -webkit-box-shadow: 0 0px 1px 0 rgba(0,0,0,0.1); + -moz-box-shadow: 0 0px 1px 0 rgba(0,0,0,0.1); +} +.woocommerce-checkout .woocommerce form .form-row-first, +.woocommerce-checkout.woocommerce-page form .form-row-first, +.woocommerce-checkout .woocommerce form .form-row-last, +.woocommerce-checkout.woocommerce-page form .form-row-last{padding:0;margin:0 0 18px 0} +.woocommerce-checkout .woocommerce form .form-row-wide, +.woocommerce-checkout.woocommerce-page form .form-row-wide{padding:0;margin:0 0 18px 0} + +.woocommerce-checkout.woocommerce-page table.shop_table{ + border: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + box-shadow: 0 0px 2px 0 rgba(0,0,0,0.3); + -webkit-box-shadow: 0 0px 2px 0 rgba(0,0,0,0.3); + -moz-box-shadow: 0 0px 2px 0 rgba(0,0,0,0.3); +} +.woocommerce-checkout.woocommerce-page table.shop_table .product-name{width:75%;} +.woocommerce-checkout.woocommerce-page table.shop_table .product-total{width:25%;text-align:center;font-size:14px;} +.woocommerce-checkout.woocommerce-page table.shop_table .amount{font-size:14px;} +.woocommerce table.shop_table td, .woocommerce-page table.shop_table td{border-top:0;} +.woocommerce-checkout.woocommerce-page table.shop_table thead th{color:#333333;background:none;filter:none; font-size:14px; line-height:14px;padding:17px 12px;text-align:center;border-color:#cccccc;font-weight:bold} +.woocommerce-checkout.woocommerce-page table.shop_table thead th:last-child{border-left:1px solid rgba(0,0,0,0.1)} +.woocommerce-checkout.woocommerce-page table.shop_table tbody tr td *{color:#333333} +.woocommerce-checkout.woocommerce-page table.shop_table tbody tr td a:hover{color:#ff5d2a} +.woocommerce-checkout.woocommerce-page table.shop_table tbody tr:nth-child(even) td{background:none;filter:none} +.woocommerce-checkout.woocommerce-page table.shop_table tfoot *, +.woocommerce-acoount.woocommerce-page table.shop_table tfoot * {filter:none;background:none;color:#333333;border-color:#cccccc;} +.woocommerce-checkout.woocommerce-page table.shop_table tfoot tr th, +.woocommerce-account.woocommerce-page table.shop_table tfoot tr th {border-width:1px 0px 0px 0px;padding:17px;padding-bottom:16px} +.woocommerce-checkout.woocommerce-page table.shop_table tfoot tr:first-child th, +.woocommerce-account.woocommerce-page table.shop_table tfoot tr:first-child th, +.woocommerce-checkout.woocommerce-page table.shop_table tfoot tr:first-child td, +.woocommerce-account.woocommerce-page table.shop_table tfoot tr:first-child td{border-width:0px 0px 0px 0px;} +.woocommerce-checkout.woocommerce-page table.shop_table tfoot tr td, +.woocommerce-account.woocommerce-page table.shop_table tfoot tr td {border-top-width:1px; text-align:center} +.woocommerce-checkout table tbody tr:last-child td:last-child, +.woocommerce-account table tbody tr:last-child td:last-child, +.woocommerce-cart table tbody tr:last-child td:last-child{border-right:0} + +.woocommerce-checkout .woocommerce #payment, .woocommerce-checkout.woocommerce-page #payment{background:none} +.woocommerce-checkout .woocommerce #payment ul.payment_methods, .woocommerce-checkout.woocommerce-page #payment ul.payment_methods{width:96%;float:left;display:block;border:0;} +.woocommerce-checkout .woocommerce #payment div.payment_box, .woocommerce-checkout.woocommerce-page #payment div.payment_box{ + background:none; + filter:none; + border:0px solid #cccccc; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + box-shadow: 0 0px 2px 0 rgba(0,0,0,0.3); + -webkit-box-shadow: 0 0px 2px 0 rgba(0,0,0,0.3); + -moz-box-shadow: 0 0px 2px 0 rgba(0,0,0,0.3); +} +.woocommerce-checkout .woocommerce #payment div.payment_box:after, .woocommerce-checkout .woocommerce-page #payment div.payment_box:after{ + display:block; + float:left; + width:13px; + height:8px; + background: url(images/checkout_mes_bg.png) no-repeat transparent; + background-size:13px 8px; + top:3px; + border:0; +} +.woocommerce .checkout .col-2 .notes, .woocommerce-page .checkout .col-2 .notes{padding:0;} +body .woocommerce ul#shipping_method li, body.woocommerce-page ul#shipping_method li{width: 100%; float: left; text-indent: 0; margin-left: 0; text-align: left;} + + +/*---ACCOUNT PAGE---*/ +.woocommerce-account input:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px white inset !important;} +.woocommerce-account #page .container .entry-header {border: 0;} +.woocommerce-account .woocommerce .col2-set .col-1, +.woocommerce-account .woocommerce-page .col2-set .col-1{width:272px;padding:0; margin:0 80px 0 0} +.woocommerce-account .woocommerce .col2-set .col-2, +.woocommerce-account .woocommerce-page .col2-set .col-2{float:left;width:272px;padding:0; margin:0} +.woocommerce-account .woocommerce form.login, +.woocommerce-account .woocommerce-page form.login{width:272px;border:0;padding:0;} +.woocommerce-account .woocommerce form.register, +.woocommerce-account.woocommerce-page form.register{width:270px;border:0;padding:0;} +.woocommerce-account .woocommerce form .form-row, +.woocommerce-account.woocommerce-page form .form-row{float:left;width:100%;border: 0;padding: 0;margin: 0 0 18px 0;} +.woocommerce-account .woocommerce form .form-row input, +.woocommerce-account.woocommerce-page form .form-row input{float:left ;width:100%;box-shadow:none;-webkit-border-radius: 0;-moz-border-radius: 0; border-radius: 0;border:1px solid #cccccc;background-color:initial;} +.woocommerce-account .woocommerce form .form-row .inline, +.woocommerce-account.woocommerce-page form .form-row .inline{width:100%;float:left;margin-top:10px;} +.woocommerce-account .woocommerce form .form-row .inline #rememberme, +.woocommerce-account.woocommerce-page form .form-row .inline #rememberme{width:auto;margin:6px;} + +.woocommerce-account .woocommerce .form-row .lost_password, +.woocommerce-account.woocommerce-page .form-row .lost_password {float: left;padding: 5px 0 5px 20px;text-decoration: none;} + +.woocommerce-account .woocommerce form .form-row input.input-text, +.woocommerce-account.woocommerce-page form .form-row input.input-text, +#billing_country, #shipping_country{max-width:500px} +body .chosen-container .chosen-results{float: left; width: 100%;} + +.woocommerce table.my_account_orders th, body.woocommerce-page table.my_account_orders th{padding: 17px 12px;line-height:14px;} +.woocommerce table.shop_table th, body.woocommerce-page table.shop_table th{padding: 17px 12px;line-height:14px;} + +/*FONTS*/ +body.woocommerce .woocommerce-breadcrumb, +body.woocommerce-page .woocommerce-breadcrumb, +body.woocommerce .woocommerce-breadcrumb, +body.woocommerce-page .woocommerce-breadcrumb a {font-size:14px; color:#333333; } + +.woocommerce ul.products li.product .price , +.woocommerce-page ul.products li.product .price {color: #ea3c00; font-size:14px !important;word-wrap: break-word;} + +.woocommerce .prod_num_row-5 ul.products li.product .price , +.woocommerce-page .prod_num_row-5 ul.products li.product .price {width:114px;} +.woocommerce .prod_num_row-4 ul.products li.product .price , +.woocommerce-page .prod_num_row-4 ul.products li.product .price {width:159px;} +.woocommerce .prod_num_row-3 ul.products li.product .price , +.woocommerce-page .prod_num_row-3 ul.products li.product .price {width:239px;} +.woocommerce .prod_num_row-2 ul.products li.product .price , +.woocommerce-page .prod_num_row-2 ul.products li.product .price {width:389px;} + +.woocommerce .eleven.columns.prod_num_row-5 ul.products li.product .price , +.woocommerce-page .eleven.columns.prod_num_row-5 ul.products li.product .price {width:59px;} +.woocommerce .eleven.columns.prod_num_row-4 ul.products li.product .price , +.woocommerce-page .eleven.columns.prod_num_row-4 ul.products li.product .price {width:90px;} +.woocommerce .eleven.columns.prod_num_row-3 ul.products li.product .price , +.woocommerce-page .eleven.columns.prod_num_row-3 ul.products li.product .price {width:144px;} +.woocommerce .eleven.columns.prod_num_row-2 ul.products li.product .price , +.woocommerce-page .eleven.columns.prod_num_row-2 ul.products li.product .price {width:247px;} + +.woocommerce-cart .cart_totals table td{color:#333333; font-weight:bold; } +.woocommerce-cart .cart_totals table td select{font-weight:initial} + +.woocommerce-cart .woocommerce .cart-collaterals .cart_totals h2, +.woocommerce-cart.woocommerce-page .cart-collaterals .cart_totals h2, +.woocommerce-cart .woocommerce .cart-collaterals .cross-sells h2, +.woocommerce-cart.woocommerce-page .cart-collaterals .cross-sells h2, +.woocommerce ul.products li.product h3, +body.woocommerce-page ul.products li.product h3 , +.woocommerce-cart .woocommerce .cart-collaterals .cart_totals table th, +.woocommerce-cart .woocommerce .cart-collaterals .cart_totals table th strong, +.woocommerce-cart.woocommerce-page .cart-collaterals .cart_totals table th, +.woocommerce-cart.woocommerce-page .cart-collaterals .cart_totals table th strong, +.woocommerce-checkout #page .container header.entry-header h1.entry-title, +.woocommerce-account #page .container header.entry-header h1.entry-title, +.woocommerce-page #page .container header.entry-header h1.entry-title, +.woocommerce-checkout .woocommerce form .form-row input.input-text, +body.woocommerce-checkout.woocommerce-page form .form-row input.input-text, +.woocommerce-checkout .woocommerce form .form-row textarea, +body.woocommerce-checkout.woocommerce-page form .form-row textarea{color:#333333} + +body.woocommerce-cart .woocommerce .cart-collaterals .shipping_calculator h2 a, +body.woocommerce-cart.woocommerce-page .cart-collaterals .shipping_calculator h2 a{text-decoration:none;color:#333333;} +.woocommerce .term-description {float: left;} + +/*PRELOADER*/ +.woocommerce #respond input#submit.loading:after, +.woocommerce a.button.loading:after, +.woocommerce button.button.loading:after, +.woocommerce input.button.loading:after { + font-size:20px; + top:5px; + right:5px; +} + +@media (-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){ + +} + + +@media only screen and (min-width: 1024px){ + /*secondary*/ + .woocommerce-page #secondary input#s{ width: 234px;} + /*shop*/ + .nav-links.shop .pages-links .page-numbers,.nav-links.shop .nav-next a,.nav-links.shop .nav-previous a{padding: 10px 18px;} + .woocommerce a.added_to_cart, body.woocommerce-page a.added_to_cart{clear:both} + .post-type-archive-product .woocommerce-info,.post-type-archive-product .woocommerce-error,.post-type-archive-product .woocommerce-message{float: left;width:auto;width:calc(100% - 63px); max-width: 877px;} + /*cart*/ + .woocommerce-cart .woocommerce .cart-collaterals .cart_totals, body.woocommerce-cart.woocommerce-page .cart-collaterals .cart_totals{max-width:450px} + .woocommerce-cart .woocommerce .cart-collaterals .shipping_calculator section, body.woocommerce-cart.woocommerce-page .cart-collaterals .shipping_calculator section{max-width:450px} + .woocommerce form .form-row select#calc_shipping_country, .woocommerce-page form .form-row select#calc_shipping_country{width:444px} + .woocommerce div form .form-row input.input-text, .woocommerce-page form .form-row input.input-text, .woocommerce div form .form-row textarea, .woocommerce-page form .form-row textarea{max-width:100%} + /*checkout*/ + .woocommerce-checkout .checkout{float:left; width:100%} + .woocommerce-checkout .woocommerce #payment ul.payment_methods, .woocommerce-checkout.woocommerce-page #payment ul.payment_methods{max-width:410px} + /*product*/ + body.woocommerce div.product div.summary, + body.woocommerce-page div.product div.summary, + body.woocommerce #content div.product div.summary, + body.woocommerce-page #content div.product div.summary{max-width:565px} + body.woocommerce .eleven.columns div.product div.summary, + body.woocommerce-page .eleven.columns div.product div.summary, + body.woocommerce .eleven.columns #content div.product div.summary, + body.woocommerce-page .eleven.columns #content div.product div.summary{max-width:100%} + body.woocommerce div.product .woocommerce-tabs, + body.woocommerce-page div.product .woocommerce-tabs, + body.woocommerce #content div.product .woocommerce-tabs, + body.woocommerce-page #content div.product .woocommerce-tabs{ max-width:565px; } + body.woocommerce .eleven.columns div.product .woocommerce-tabs, + body.woocommerce-page .eleven.columns div.product .woocommerce-tabs, + body.woocommerce .eleven.columns #content div.product .woocommerce-tabs, + body.woocommerce-page .eleven.columns #content div.product .woocommerce-tabs{ max-width:100%; } + body.woocommerce div.product div.images, + body.woocommerce-page div.product div.images, + body.woocommerce #content div.product div.images, + body.woocommerce-page #content div.product div.images{float:left; width:350px; margin:0 25px 0 0} + .single.woocommerce span.onsale, .single.woocommerce-page span.onsale{top: 10px;left: 278px;} + /*product category*/ + body.woocommerce.archive.tax-product_cat #page .woo-loop-content{padding: 0;} + +} + +@media only screen and (min-width: 980px){ + /*shop, product category*/ + .woocommerce .prod_num_row-2 ul.products li.product, .woocommerce-page .prod_num_row-2 ul.products li.product{width: 47.5%; margin-left:2%; margin-right:2%;} + .woocommerce .prod_num_row-3 ul.products li.product, .woocommerce-page .prod_num_row-3 ul.products li.product{width: 31.5%; margin-left:1%; margin-right:1%;} + .woocommerce .prod_num_row-4 ul.products li.product, .woocommerce-page .prod_num_row-4 ul.products li.product{width: 23%; margin-left:1%; margin-right:1%;} + .woocommerce .prod_num_row-5 ul.products li.product, .woocommerce-page .prod_num_row-5 ul.products li.product{width: 18.25%; margin-left: 0.625%;margin-right: 0.625%;} + + .woocommerce-page ul.products li.product, .woocommerce ul.products li.product{width: 23%; margin-left:1%; margin-right:1%;} + .woocommerce-page.columns-2 ul.products li.product, .woocommerce.columns-2 ul.products li.product{width: 47.5%; margin-left:2%; margin-right:2%;} + .woocommerce-page.columns-3 ul.products li.product, .woocommerce.columns-3 ul.products li.product{width: 31.5%; margin-left:1%; margin-right:1%;} + .woocommerce-page.columns-5 ul.products li.product, .woocommerce.columns-5 ul.products li.product{width: 18.25%;margin-left: 0.625%;margin-right: 0.625%;} + /* .woocommerce-page.columns-6 ul.products li.product, .woocommerce.columns-6 ul.products li.product{width:13.5%} */ + + .woocommerce ul.products li.product.first, .woocommerce-page ul.products li.product.first{margin-left:0 !important} + .woocommerce ul.products li.product.last, .woocommerce-page ul.products li.product.last{margin-right:0 !important} + /*cart page*/ + .woocommerce.woocommerce-cart ul.products li.product, .woocommerce-page.woocommerce-cart ul.products li.product{width: 21.75%;margin: 0 0 2.992em 3.8%;} + .woocommerce-account .chosen-container-single .chosen-single{width:490px;} +} + +@media only screen and (min-width: 768px) and (max-width: 1023px){ + /*shop*/ + .nav-links.shop .pages-links .page-numbers,.nav-links.shop .nav-next a,.nav-links.shop .nav-previous a{padding: 10px 18px;} + .woocommerce .woocommerce-ordering, .woocommerce-page .woocommerce-ordering{margin-right:1%;} + /*single product*/ + .woocommerce #review_form #respond textarea, .woocommerce-page #review_form #respond textarea{width:100% !important} + /*cart*/ + .woocommerce-cart .woocommerce .cart-collaterals .cart_totals, body.woocommerce-cart.woocommerce-page .cart-collaterals .cart_totals{max-width:450px} + .woocommerce-cart .woocommerce .cart-collaterals .shipping_calculator section, body.woocommerce-cart.woocommerce-page .cart-collaterals .shipping_calculator section{max-width:450px} + .woocommerce form .form-row select#calc_shipping_country, .woocommerce-page form .form-row select#calc_shipping_country{width:444px} + .woocommerce div form .form-row input.input-text, .woocommerce-page form .form-row input.input-text, .woocommerce div form .form-row textarea, .woocommerce-page form .form-row textarea{max-width:100%} + /*checkout*/ + .woocommerce-checkout .woocommerce #payment ul.payment_methods, .woocommerce-checkout.woocommerce-page #payment ul.payment_methods{max-width:410px} + .woocommerce-page #page .five.columns.omega #secondary input#s {max-width:calc(100% - 44px)} + /*product*/ + body.woocommerce div.product div.images, + body.woocommerce-page div.product div.images, + body.woocommerce #content div.product div.images, + body.woocommerce-page #content div.product div.images{float:none;width:350px; margin:0 auto} + .single.woocommerce span.onsale, .single.woocommerce-page span.onsale{top: 6px;right: 31%;left: auto;} + /*product category*/ + body.woocommerce.archive.tax-product_cat #page #secondary{float:left;width:100%;} + body.woocommerce.archive.tax-product_cat #page .woo-loop-content{float: right; padding: 0;} + body.woocommerce.archive.tax-product_cat #page .woo-loop-content.alpha{float:left !important;} + body.woocommerce.archive.tax-product_cat #page .woo-loop-content.omega{float:right !important;} +} + +@media only screen and (min-width: 768px) and (max-width: 979px){ + .woocommerce .woo-loop-content ul.products li.product, .woocommerce-page .woo-loop-content ul.products li.product, + .woocommerce .woo-loop-content ul.products li.product.first, .woocommerce-page .woo-loop-content ul.products li.product.first, + .woocommerce .woo-loop-content ul.products li.product.last, .woocommerce-page .woo-loop-content ul.products li.product.last, + .entry-content .woocommerce ul.products li.product{float:none; width:30.75%; margin:0 1% 25px !important} + .woocommerce .woo-loop-content .related ul.products li.product, + .woocommerce-page .woo-loop-content .related ul.products li.product, + .woocommerce .woo-loop-content .upsells.products ul.products li.product, + .woocommerce-page .woo-loop-content .upsells.products ul.products li.product{width: 21.75%; margin-left: 3.8% !important; margin-right: 0 !important;} + .woocommerce .woo-loop-content .upsells.products li.product.first, .woocommerce-page .woo-loop-content .upsells.products li.product.first{margin-left:0 !important} + .woocommerce .woo-loop-content .related ul.products li.product.first, + .woocommerce-page .woo-loop-content .related ul.products li.product.first, + .woocommerce .woo-loop-content .upsells.products ul.products li.product.first, + .woocommerce-page .woo-loop-content .upsells.products ul.products li.product.first{margin-left:0 !important} + .woocommerce-account .chosen-container-single .chosen-single{width:490px;} +} + + +@media only screen and (min-width: 480px) and (max-width: 767px){ + /*shop*/ + .archive.post-type-archive-product #container {float:right; width:100%; padding:0;} + .archive.tax-product_cat #page #container{width:100%} + .woocommerce .products ul, .woocommerce-page .products ul, .woocommerce ul.products, .woocommerce-page ul.products{text-align:center} + .woocommerce .woo-loop-content ul.products li.product, .woocommerce-page .woo-loop-content ul.products li.product, + .woocommerce .woo-loop-content ul.products li.product.first, .woocommerce-page .woo-loop-content ul.products li.product.first, + .woocommerce .woo-loop-content ul.products li.product.last, .woocommerce-page .woo-loop-content ul.products li.product.last, + .entry-content .woocommerce ul.products li.product{width:47.5% !important;float:none; margin:0 3px 30px;min-height: 315px;} + .woocommerce.single-product .container .related.products ul.products li.product, body.woocommerce-page.single-product .container .related.products ul.products li.product{min-height: 330px;margin-right:3px} + .woocommerce .woocommerce-ordering, .woocommerce-page .woocommerce-ordering{width:100%;} + body.woocommerce form.woocommerce-ordering, body.woocommerce-page form.woocommerce-ordering{margin-bottom:40px} + body.woocommerce .woocommerce-ordering select, body.woocommerce-page .woocommerce-ordering select{width:100%} + body.woocommerce ul.products li.product h3, body.woocommerce-page ul.products li.product h3 {text-align:left;} + .nav-links.shop .pages-links .page-numbers,.nav-links.shop .nav-next a,.nav-links.shop .nav-previous a{padding: 5px 12px;} + .woocommerce ul.products li.product a.add_to_cart_button.product_type_simple, + .woocommerce ul.products li.product a.button.product_type_variable{display:block; visibility:visible} + .woocommerce a.added_to_cart, body.woocommerce-page a.added_to_cart{width:60%; clear:both} + body.woocomemrce #page .container #secondary.widget-area, body.woocommerce #page .container #secondary.widget-area{width: 94%; padding: 0 3%;} + body.woocommerce #page .container #content, body.woocommerce-page #page .container #content{width: 98%; padding: 0 1%;} + /*cart*/ + .woocommerce-cart.woocommerce-page #content table thead th{font-size:12px} + #body .woocommerce table.shop_table td.product-quantity,body.woocommerce-page table.shop_table td.product-quantity {padding: 0} + .woocommerce table.cart td.actions .coupon, .woocommerce-page table.cart td.actions .coupon, + .woocommerce #content table.cart td.actions .coupon, .woocommerce-page #content table.cart td.actions .coupon{width:100%} + .woocommerce-cart.woocommerce-page #content table td.actions input.button[name="apply_coupon"], + .woocommerce-cart.woocommerce-page #content table td.actions input.button[name="apply_coupon"]:hover{float:right} + .woocommerce-cart.woocommerce-page #content table td.actions input.button[name="proceed"], + .woocommerce-cart.woocommerce-page #content table td.actions input.button[name="proceed"]:hover{float:left;margin:5px 10px 5px 5px} + .woocommerce form .form-row select#calc_shipping_country, .woocommerce-page form .form-row select#calc_shipping_country{width:390px} + body.woocommerce table.shop_table td, + body.woocommerce-page table.shop_table td{padding:6px 2px} + body.woocommerce div.product form.cart div.quantity, + body.woocommerce-page div.product form.cart div.quantity, + body.woocommerce #content div.product form.cart div.quantity, + body.woocommerce-page #content div.product form.cart div.quantity, + .woocommerce-page.woocommerce-cart #content .product-quantity div.quantity{width:80px;} + body.woocommerce .quantity .minus, body.woocommerce-page .quantity .minus, + body.woocommerce #content .quantity .minus, + body.woocommerce-page #content .quantity .minus, + .woocommerce-cart .woocommerce .quantity .minus, + .woocommerce-cart .woocommerce-page .quantity .minus, + .woocommerce-cart .woocommerce #content .quantity .minus, + .woocommerce-cart .woocommerce-page #content .quantity .minus, + body.woocommerce .quantity .plus, + body.woocommerce-page .quantity .plus, + body.woocommerce #content .quantity .plus, + body.woocommerce-page #content .quantity .plus, + .woocommerce-cart .woocommerce .quantity .plus, + .woocommerce-cart .woocommerce-page .quantity .plus, + .woocommerce-cart .woocommerce #content .quantity .plus, + .woocommerce-cart .woocommerce-page #content .quantity .plus{width:15px} + body.woocommerce.single-product div.product form.cart div.quantity, + body.woocommerce-page.single-product div.product form.cart div.quantity, + body.woocommerce.single-product #content div.product form.cart div.quantity, + body.woocommerce-page.single-product #content div.product form.cart div.quantity{width:120px;} + body.woocommerce .quantity input.qty, + body.woocommerce-page .quantity input.qty, + body.woocommerce #content .quantity input.qty, + body.woocommerce-page #content .quantity input.qty, + .woocommerce-cart .woocommerce .quantity input.qty, + .woocommerce-cart .woocommerce-page .quantity input.qty, + .woocommerce-cart .woocommerce #content .quantity input.qty, + .woocommerce-cart .woocommerce-page #content .quantity input.qty{left:15px;} + body.woocommerce.single-product .quantity input.qty, + body.woocommerce-page.single-product .quantity input.qty, + body.woocommerce.single-product #content .quantity input.qty, + body.woocommerce-page.single-product #content .quantity input.qty{left:35px} + .woocommerce #content table.cart td.actions .button, + .woocommerce #content table.cart td.actions .input-text, + .woocommerce #content table.cart td.actions input, + .woocommerce table.cart td.actions .button, + .woocommerce table.cart td.actions .input-text, + .woocommerce table.cart td.actions input, + .woocommerce-page #content table.cart td.actions .button, + .woocommerce-page #content table.cart td.actions .input-text, + .woocommerce-page #content table.cart td.actions input, + .woocommerce-page table.cart td.actions .button, + .woocommerce-page table.cart td.actions .input-text, + .woocommerce-page table.cart td.actions input{width:45% !important} + body.woocommerce-page #content table.cart td.actions .coupon label{display:none} + body.woocommerce-page #content table.cart td.actions .coupon #coupon_code{margin-left:5px;} + /*checkout*/ + body.woocommerce .order_details>li,body.woocommerce-page .order_details>li {border: 1px solid #d6d6d6 !important;border-width:1px 1px 0 1px !important;margin: 0 !important;width: 400px;padding:5px 10px} + body.woocommerce .order_details>li:last-child,body.woocommerce-page .order_details>li:last-child {border-width:1px 1px 1px 1px !important;} + /*product*/ + body.woocommerce div.product div.images, + body.woocommerce-page div.product div.images, + body.woocommerce #content div.product div.images, + body.woocommerce-page #content div.product div.images{float:none;width:80%; margin:10px auto} + .single.woocommerce span.onsale, .single.woocommerce-page span.onsale{top: 6px;right: 40px;left: auto;} + .woocommerce #review_form #respond textarea, .woocommerce-page #review_form #respond textarea{width:100% !important} + .single-product.woocommerce div.product, + .single-product.woocommerce-page div.product, + .single-product.woocommerce #content div.product, + .single-product.woocommerce-page #content div.product{width:100%} + body.single-product #page .container #content, body.single-product #page .container #content{width: 94%; padding: 0 3%;} + .single-product.woocommerce .container ul.products li.product, body.single-product.woocommerce-page .container ul.products li.product {width: 189px !important;} + /*account*/ + .woocommerce-account .chosen-container-single .chosen-single{width:377px;} +} + +@media only screen and (max-width: 479px){ + /*shop*/ + .woocommerce .products ul, .woocommerce-page .products ul, .woocommerce ul.products, .woocommerce-page ul.products{text-align:center} + .woocommerce .woocommerce-ordering, .woocommerce-page .woocommerce-ordering{width:100%;} + body.woocommerce .woocommerce-ordering select, body.woocommerce-page .woocommerce-ordering select{width:100%} + body.woocommerce form.woocommerce-ordering, body.woocommerce-page form.woocommerce-ordering {margin-bottom: 40px;} + body.woocommerce .container ul.products li.product, body.woocommerce-page .container ul.products li.product, + .entry-content .woocommerce ul.products li.product {width: 100%;margin-right: 0;} + body.woocommerce ul.products li.product h3, body.woocommerce-page ul.products li.product h3 {text-align:left;} + .nav-links.shop .pages-links .page-numbers,.nav-links.shop .nav-next a,.nav-links.shop .nav-previous a{padding: 5px 12px;} + .woocommerce ul.products li.product a.add_to_cart_button.product_type_simple, + .woocommerce ul.products li.product a.button.product_type_variable{display:block; visibility:visible} + .woocommerce a.added_to_cart, body.woocommerce-page a.added_to_cart{width:40%; clear:both} + body.woocommerce #page .container #secondary.widget-area, body.woocommerce-page #page .container #secondary.widget-area{width: 94%; padding: 0 3%;} + body.woocommerce #page .container #content, body.woocommerce-page #page .container #content{width: 94%; padding: 0 3%;} + /*cart*/ + .woocommerce table.cart td.actions .coupon, .woocommerce-page table.cart td.actions .coupon, + .woocommerce #content table.cart td.actions .coupon, .woocommerce-page #content table.cart td.actions .coupon{width:100%} + .woocommerce-cart.woocommerce-page #content table thead th{font-size:12px} + body .woocommerce table.shop_table td.product-quantity,body.woocommerce-page table.shop_table td.product-quantity {padding: 0} + .product-thumbnail{display:none} + .woocommerce-cart.woocommerce-page #content table thead th.product-remove{width:31px} + .woocommerce table.shop_table td, body.woocommerce-page table.shop_table td{padding:6px 7px} + .woocommerce-cart.woocommerce-page #content table thead th {padding:17px 2px;} + body.woocommerce table.shop_table td, + body.woocommerce-page table.shop_table td{padding:6px 2px} + body.woocommerce div.product form.cart div.quantity, + body.woocommerce-page div.product form.cart div.quantity, + body.woocommerce #content div.product form.cart div.quantity, + body.woocommerce-page #content div.product form.cart div.quantity, + .woocommerce-page.woocommerce-cart #content .product-quantity div.quantity{width:80px;} + body.woocommerce.single-product div.product form.cart div.quantity, + body.woocommerce-page.single-product div.product form.cart div.quantity, + body.woocommerce.single-product #content div.product form.cart div.quantity, + body.woocommerce-page.single-product #content div.product form.cart div.quantity, + .woocommerce-page.single-product #content .product-quantity div.quantity{width:120px;} + body.woocommerce .quantity .minus, body.woocommerce-page .quantity .minus, + body.woocommerce #content .quantity .minus, + body.woocommerce-page #content .quantity .minus, + .woocommerce-cart .woocommerce .quantity .minus, + .woocommerce-cart .woocommerce-page .quantity .minus, + .woocommerce-cart .woocommerce #content .quantity .minus, + .woocommerce-cart .woocommerce-page #content .quantity .minus, + body.woocommerce .quantity .plus, + body.woocommerce-page .quantity .plus, + body.woocommerce #content .quantity .plus, + body.woocommerce-page #content .quantity .plus, + .woocommerce-cart .woocommerce .quantity .plus, + .woocommerce-cart .woocommerce-page .quantity .plus, + .woocommerce-cart .woocommerce #content .quantity .plus, + .woocommerce-cart .woocommerce-page #content .quantity .plus{width:15px} + body.woocommerce .quantity input.qty, + body.woocommerce-page .quantity input.qty, + body.woocommerce #content .quantity input.qty, + body.woocommerce-page #content .quantity input.qty, + .woocommerce-cart .woocommerce .quantity input.qty, + .woocommerce-cart .woocommerce-page .quantity input.qty, + .woocommerce-cart .woocommerce #content .quantity input.qty, + .woocommerce-cart .woocommerce-page #content .quantity input.qty{left:15px;} + body.woocommerce.single-product .quantity input.qty, + body.woocommerce-page.single-product .quantity input.qty, + body.woocommerce.single-product #content .quantity input.qty, + body.woocommerce-page.single-product #content .quantity input.qty{left:35px} + body.woocommerce-page .woocommerce .cart-collaterals button.button{width:100%} + .woocommerce #content table.cart td.actions .button, + .woocommerce #content table.cart td.actions .input-text, + .woocommerce #content table.cart td.actions input, + .woocommerce table.cart td.actions .button, + .woocommerce table.cart td.actions .input-text, + .woocommerce table.cart td.actions input, + .woocommerce-page #content table.cart td.actions .button, + .woocommerce-page #content table.cart td.actions .input-text, + .woocommerce-page #content table.cart td.actions input, + .woocommerce-page table.cart td.actions .button, + .woocommerce-page table.cart td.actions .input-text, + .woocommerce-page table.cart td.actions input{width:60% !important;right:20%} + body.woocommerce-page #content table.cart td.actions .coupon label{display:none !important} + .woocommerce table.cart td.actions .coupon, .woocommerce-page table.cart td.actions .coupon, .woocommerce #content table.cart td.actions .coupon, .woocommerce-page #content table.cart td.actions .coupon{text-align:center} + .woocommerce-cart.woocommerce-page #content table td.actions{text-align:center} + .woocommerce-cart.woocommerce-page #content table td.actions input{margin:5px 0 !important;padding:10px 0 !important; float:none !important; right:auto !important; left:auto !important; min-width:75%} + .woocommerce #content table.cart td.actions .coupon, .woocommerce table.cart td.actions .coupon, .woocommerce-page #content table.cart td.actions .coupon, .woocommerce-page table.cart td.actions .coupon{padding-bottom:0 !important} + /*product*/ + body.woocommerce div.product div.images, + body.woocommerce-page div.product div.images, + body.woocommerce #content div.product div.images, + body.woocommerce-page #content div.product div.images{float:none;width:100%; margin:15px 0} + .single.woocommerce span.onsale, .single.woocommerce-page span.onsale{top: 15px;right: 0;left: auto;} + .woocommerce .related ul.products li.product, + .woocommerce-page .related ul.products li.product, + .woocommerce .upsells.products ul.products li.product, + .woocommerce-page .upsells.products ul.products li.product, + .woocommerce .related ul li.product, + .woocommerce-page .related ul li.product, + .woocommerce .upsells.products ul li.product, + .woocommerce-page .upsells.products ul li.product {width: 100% !important;margin-left:0;} + .single-product.woocommerce div.product, .single-product.woocommerce-page div.product, .single-product.woocommerce #content div.product, .single-product.woocommerce-page #content div.product{width:100%} + body.single-product #page .container #content, body.single-product #page .container #content{width: 94%; padding: 0 3%;} + /*checkoout*/ + body.woocommerce-page #content input.button[name="apply_coupon"]{padding: 10px 8px !important;} + body.woocommerce .order_details>li,body.woocommerce-page .order_details>li {border: 1px solid #d6d6d6 !important;border-width:1px 1px 0 1px !important;margin: 0 !important;width: 90%;padding:5px 5%} + body.woocommerce .order_details>li:last-child,body.woocommerce-page .order_details>li:last-child {border-width:1px 1px 1px 1px !important;} + /*account*/ + .woocommerce-account table.shop_table th, body.woocommerce-page.woocommerce-account table.shop_table th {padding: 17px 2px;} + .woocommerce table.my_account_orders td, .woocommerce-page table.my_account_orders td{text-align:center} + body.woocommerce table.my_account_orders .order-actions .button, body.woocommerce-page table.my_account_orders .order-actions .button{padding: 10px 10px !important;} + .woocommerce-account .chosen-container-single .chosen-single{width:255px;} +} + + /*IPhone 4*/ + @media only screen and (min-width:480px) and (max-width:640px) and (max-device-width:640px){ + +}